diff --git a/.github/workflows/ase_plugin_test.yml b/.github/workflows/ase_plugin_test.yml new file mode 100644 index 0000000000..f5d19a1dd3 --- /dev/null +++ b/.github/workflows/ase_plugin_test.yml @@ -0,0 +1,66 @@ +name: Atomic Simulation Environment (ASE) Plugin Test + +on: + pull_request: + +jobs: + test: + name: abacuslite + runs-on: ubuntu-latest + container: + image: ghcr.io/deepmodeling/abacus-gnu + + steps: + - name: Checkout code + uses: actions/checkout@v6 + + - name: Set up Miniconda + uses: conda-incubator/setup-miniconda@v3 + with: + miniconda-version: 'latest' + activate-environment: abacuslite + python-version: '3.10' + + - name: Install dependencies + shell: bash -l {0} + run: | + conda install -y pip + pip install numpy scipy matplotlib + + - name: Install abacuslite + shell: bash -l {0} + run: | + cd interfaces/ASE_interface + pip install . + + - name: Configure & Build ABACUS (GNU) + run: | + git config --global --add safe.directory `pwd` + export LD_LIBRARY_PATH=${GKLIB_ROOT}/lib:${METIS32_ROOT}/lib:${PARMETIS32_ROOT}/lib:${SUPERLU32_DIST_ROOT}/lib:${PEXSI32_ROOT}/lib:${LD_LIBRARY_PATH} + export PKG_CONFIG_PATH=${GKLIB_ROOT}/lib/pkgconfig:${METIS32_ROOT}/lib/pkgconfig:${PARMETIS32_ROOT}/lib/pkgconfig:${SUPERLU32_DIST_ROOT}/lib/pkgconfig:${PEXSI32_ROOT}/lib/pkgconfig:${PKG_CONFIG_PATH} + export CPATH=${GKLIB_ROOT}/include:${METIS32_ROOT}/include:${PARMETIS32_ROOT}/include:${SUPERLU32_DIST_ROOT}/include:${PEXSI32_ROOT}/include:${CPATH} + export CMAKE_PREFIX_PATH=${PEXSI32_ROOT}:${SUPERLU_DIST32_ROOT}:${PARMETIS32_ROOT}:${METIS32_ROOT}:${GKLIB_ROOT}:${CMAKE_PREFIX_PATH} + rm -rf build + cmake -B build + cmake --build build -j2 + + - name: Install and Soft Link ABACUS + run: | + cmake --install build + if [ -f /usr/local/bin/abacus_2p ]; then + ln -sf /usr/local/bin/abacus_2p /usr/local/bin/abacus + fi + + - name: Run unit tests + shell: bash -l {0} + run: | + cd interfaces/ASE_interface/abacuslite + chmod +x xtest.sh + ./xtest.sh + + - name: Run integration tests + shell: bash -l {0} + run: | + cd interfaces/ASE_interface/tests + chmod +x xtest.sh + ./xtest.sh diff --git a/.github/workflows/build_test_cmake.yml b/.github/workflows/build_test_cmake.yml index 2f59b5f6b3..8296f7bc9f 100644 --- a/.github/workflows/build_test_cmake.yml +++ b/.github/workflows/build_test_cmake.yml @@ -17,17 +17,17 @@ jobs: name: "Build with Intel toolchain" - tag: gnu - build_args: "-DENABLE_LIBXC=1 -DDENABLE_MLALGO=1 -DENABLE_LIBRI=1" + build_args: "-DENABLE_LIBXC=1 -DENABLE_MLALGO=1 -DENABLE_LIBRI=1" name: "Build extra components with GNU toolchain" - tag: intel - build_args: "-DENABLE_LIBXC=1 -DENABLE_MLALGO=1 -DENABLE_LIBRI=1" + build_args: "-DENABLE_LIBXC=1 -DENABLE_PEXSI=1 -DENABLE_MLALGO=1 -DENABLE_LIBRI=1" name: "Build extra components with Intel toolchain" - tag: cuda build_args: "-DUSE_CUDA=1" name: "Build with CUDA support" - tag: gnu - build_args: "-DENABLE_LCAO=OFF" + build_args: "-DENABLE_LCAO=0" name: "Build without LCAO" - tag: gnu build_args: "-DUSE_ELPA=0 " @@ -43,12 +43,17 @@ jobs: container: ghcr.io/deepmodeling/abacus-${{ matrix.tag }} steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: submodules: recursive - name: Build run: | git config --global --add safe.directory `pwd` + export LD_LIBRARY_PATH=${GKLIB_ROOT}/lib:${METIS32_ROOT}/lib:${PARMETIS32_ROOT}/lib:${SUPERLU32_DIST_ROOT}/lib:${PEXSI32_ROOT}/lib:${LD_LIBRARY_PATH} + export PKG_CONFIG_PATH=${GKLIB_ROOT}/lib/pkgconfig:${METIS32_ROOT}/lib/pkgconfig:${PARMETIS32_ROOT}/lib/pkgconfig:${SUPERLU32_DIST_ROOT}/lib/pkgconfig:${PEXSI32_ROOT}/lib/pkgconfig:${PKG_CONFIG_PATH} + export CPATH=${GKLIB_ROOT}/include:${METIS32_ROOT}/include:${PARMETIS32_ROOT}/include:${SUPERLU32_DIST_ROOT}/include:${PEXSI32_ROOT}/include:${CPATH} + export CMAKE_PREFIX_PATH=${PEXSI32_ROOT}:${SUPERLU_DIST32_ROOT}:${PARMETIS32_ROOT}:${METIS32_ROOT}:${GKLIB_ROOT}:${CMAKE_PREFIX_PATH} + rm -rf build cmake -B build ${{ matrix.build_args }} cmake --build build -j2 diff --git a/.github/workflows/build_test_makefile.yml b/.github/workflows/build_test_makefile.yml index e2129a707f..b0cabbce97 100644 --- a/.github/workflows/build_test_makefile.yml +++ b/.github/workflows/build_test_makefile.yml @@ -16,10 +16,12 @@ jobs: container: ghcr.io/deepmodeling/abacus-${{ matrix.tag }} steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Build run: | export I_MPI_CXX=icpx + chmod a+x generate_build_info.sh cd source - make -j2 ${{ matrix.build_args }} + mkdir build && cd build + make -f ../Makefile -j2 ${{ matrix.build_args }} diff --git a/.github/workflows/coverage.yml b/.github/workflows/coverage.yml index 438d6bfd8f..10a4b93e40 100644 --- a/.github/workflows/coverage.yml +++ b/.github/workflows/coverage.yml @@ -4,33 +4,87 @@ on: workflow_dispatch: push: tags: - - 'v*' + - 'v*' jobs: test-coverage: name: Generate Coverage Report runs-on: X64 container: ghcr.io/deepmodeling/abacus-gnu steps: - - name: Checkout - uses: actions/checkout@v4 - - name: Install Requirements for Coverage Testing - run: | - apt update && apt install -y lcov gpg curl jq ca-certificates - - name: Building - run: | - cmake -B build -DENABLE_COVERAGE=ON -DBUILD_TESTING=ON -DENABLE_MLALGO=ON -DENABLE_LIBXC=ON -DENABLE_LIBRI=ON -DENABLE_GOOGLEBENCH=ON -DENABLE_RAPIDJSON=ON - cmake --build build -j`nproc` - cmake --install build - - name: Testing - env: - OMP_NUM_THREADS: 1 - run: | - cmake --build build --target test ARGS="-V --timeout 21600" || exit 0 - - name: Upload Coverage to Codecov - uses: codecov/codecov-action@v5 - if: ${{ ! cancelled() }} - with: - fail_ci_if_error: true - token: ${{ secrets.CODECOV_TOKEN }} - skip_validation: true - verbose: true + - name: Checkout + uses: actions/checkout@v6 + with: + submodules: recursive + + - name: Install Perl Dependencies and Coverage Tools + run: | + apt update && apt install -y curl jq ca-certificates python3-pip + apt install -y lcov perl-modules + apt install -y libcapture-tiny-perl libdatetime-perl libjson-perl libperlio-gzip-perl + lcov --version + + - name: Building with Coverage + run: | + rm -rf build/ + rm -f CMakeCache.txt + + mkdir -p build + chmod -R 755 build/ + + cmake -B build \ + -DENABLE_COVERAGE=ON \ + -DBUILD_TESTING=ON \ + -DENABLE_MLALGO=ON \ + -DENABLE_LIBXC=ON \ + -DENABLE_LIBRI=ON \ + -DENABLE_GOOGLEBENCH=ON \ + -DENABLE_RAPIDJSON=ON \ + -DCMAKE_BUILD_TYPE=Debug \ + -DCMAKE_CXX_FLAGS="--coverage -fprofile-arcs -ftest-coverage" \ + -DCMAKE_EXE_LINKER_FLAGS="--coverage" + cmake --build build -j`nproc` + cmake --install build + + - name: Testing + env: + OMP_NUM_THREADS: 1 + run: | + chmod -R 755 build/ + cmake --build build --target test ARGS="-V --timeout 21600" || echo "Some tests failed but continuing for coverage" + + - name: Generate Coverage Data + run: | + cd build + + lcov --directory . --capture --output-file coverage.info + + lcov --remove coverage.info '/usr/*' '*/test/*' '*/external/*' '*/build/*' --output-file coverage.filtered.info + + genhtml coverage.filtered.info --output-directory coverage-report + + cd .. + + - name: Upload Coverage to Codecov + uses: codecov/codecov-action@v5 + if: ${{ ! cancelled() }} + with: + fail_ci_if_error: true + files: ./build/coverage.xml,./build/coverage.info + directory: ./build/ + flags: unittests + name: codecov-umbrella + verbose: true + + use_oidc: true + - name: Upload Coverage Report Artifact + uses: actions/upload-artifact@v7 + if: always() + with: + name: coverage-report + path: | + build/coverage-report/ + build/coverage.info + build/coverage.xml + retention-days: 30 +permissions: + id-token: write diff --git a/.github/workflows/cuda.yml b/.github/workflows/cuda.yml index dea9bc0052..7c30bcf646 100644 --- a/.github/workflows/cuda.yml +++ b/.github/workflows/cuda.yml @@ -21,7 +21,7 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: submodules: recursive @@ -30,9 +30,10 @@ jobs: sudo apt-get update sudo apt-get install -y ccache - - name: Build + - name: Configure & Build run: | nvidia-smi + rm -rf build cmake -B build -DUSE_CUDA=ON -DBUILD_TESTING=ON cmake --build build -j4 cmake --install build diff --git a/.github/workflows/devcontainer.yml b/.github/workflows/devcontainer.yml index 91baea57b9..6df6d72305 100644 --- a/.github/workflows/devcontainer.yml +++ b/.github/workflows/devcontainer.yml @@ -1,6 +1,7 @@ name: Container on: + create: push: branches: - develop @@ -16,12 +17,18 @@ jobs: matrix: dockerfile: ["gnu","intel","cuda"] steps: + - name: Force Clean Workspace + run: | + sudo chattr -i -R ${{ github.workspace }} 2>/dev/null || true + sudo chown -R $USER:$USER ${{ github.workspace }} + sudo find ${{ github.workspace }} -mindepth 1 -delete + - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Docker meta id: meta - uses: docker/metadata-action@v5 + uses: docker/metadata-action@v6 with: images: | ghcr.io/deepmodeling/abacus-${{ matrix.dockerfile }} @@ -30,18 +37,23 @@ jobs: type=semver,pattern={{version}},enable=${{ github.ref_type == 'tag' }} type=raw,value=latest + - name: Fix Docker Directory Permissions + run: | + sudo mkdir -p /home/runner/.docker + sudo chown -R $USER:$USER /home/runner/.docker + - name: Setup Docker Buildx - uses: docker/setup-buildx-action@v3 + uses: docker/setup-buildx-action@v4 - name: Login to GitHub Container Registry - uses: docker/login-action@v3 + uses: docker/login-action@v4 with: registry: ghcr.io username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - name: Login to Aliyun Registry - uses: docker/login-action@v3 + uses: docker/login-action@v4 with: registry: dp-harbor-registry.us-east-1.cr.aliyuncs.com # AliCloud automatically mirrors to registry.dp.tech @@ -49,7 +61,7 @@ jobs: password: ${{ secrets.DP_HARBOR_PASSWORD }} - name: Build and Push Container - uses: docker/build-push-action@v6 + uses: docker/build-push-action@v7 with: tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} diff --git a/.github/workflows/doxygen.yml b/.github/workflows/doxygen.yml index 430a8680ff..bbf6bdd8e7 100644 --- a/.github/workflows/doxygen.yml +++ b/.github/workflows/doxygen.yml @@ -30,7 +30,7 @@ jobs: if: github.repository_owner == 'deepmodeling' steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Install Doxygen run: sudo apt-get install doxygen graphviz -y @@ -48,7 +48,7 @@ jobs: uses: actions/configure-pages@v5 - name: Upload artifact - uses: actions/upload-pages-artifact@v3 + uses: actions/upload-pages-artifact@v4 with: path: './doxygen/html' diff --git a/.github/workflows/dynamic.yml b/.github/workflows/dynamic.yml index c0d2cb0f55..e25b358a67 100644 --- a/.github/workflows/dynamic.yml +++ b/.github/workflows/dynamic.yml @@ -13,7 +13,7 @@ jobs: container: ghcr.io/deepmodeling/abacus-gnu steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Building run: | cmake -B build -DENABLE_ASAN=1 -DENABLE_MLALGO=1 -DENABLE_LIBXC=1 @@ -24,7 +24,7 @@ jobs: cd tests/integrate bash Autotest.sh -n 2 -s true - name: Publish Report to Dashboard - uses: crazy-max/ghaction-github-pages@v4 + uses: crazy-max/ghaction-github-pages@v5 if: ${{ ! cancelled() }} with: target_branch: dashboard diff --git a/.github/workflows/performance.yml b/.github/workflows/performance.yml index 589a85e584..9312caefe8 100644 --- a/.github/workflows/performance.yml +++ b/.github/workflows/performance.yml @@ -14,7 +14,7 @@ jobs: timeout-minutes: 2880 steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Install Requirements run: | apt install -y time diff --git a/.github/workflows/pytest.yml b/.github/workflows/pytest.yml index 0470d5f050..23c1074b75 100644 --- a/.github/workflows/pytest.yml +++ b/.github/workflows/pytest.yml @@ -11,9 +11,9 @@ jobs: image: ghcr.io/deepmodeling/abacus-gnu steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Set up Python - uses: actions/setup-python@v5 + uses: actions/setup-python@v6 with: python-version: 3.8 - name: Build Pyabacus diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index e04f7fce25..a21d54b2a8 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -17,11 +17,17 @@ jobs: volumes: - /tmp/ccache:/github/home/.ccache steps: - - name: Checkout - uses: actions/checkout@v4 + - name: Checkout repository + uses: actions/checkout@v6 with: - submodules: recursive fetch-depth: 0 + # We will handle submodules manually after fixing ownership + submodules: 'false' + + - name: Take ownership of the workspace and update submodules + run: | + sudo chown -R $(whoami) . + git submodule update --init --recursive - name: Install CI tools run: | @@ -54,130 +60,186 @@ jobs: GTEST_COLOR: 'yes' OMP_NUM_THREADS: '2' run: | - cmake --build build --target test ARGS="-V --timeout 1700 -R integrated_test" - + ctest --test-dir build -V --timeout 1700 -R integrated_test + - name: Module_Base Unittests env: GTEST_COLOR: 'yes' OMP_NUM_THREADS: '2' run: | - cmake --build build --target test ARGS="-V --timeout 1700 -R MODULE_BASE" - + ctest --test-dir build -V --timeout 1700 -R MODULE_BASE + - name: Module_IO Unittests env: GTEST_COLOR: 'yes' OMP_NUM_THREADS: '2' run: | - cmake --build build --target test ARGS="-V --timeout 1700 -R MODULE_IO" - + ctest --test-dir build -V --timeout 1700 -R MODULE_IO + - name: Module_HSolver Unittests env: GTEST_COLOR: 'yes' OMP_NUM_THREADS: '2' run: | - cmake --build build --target test ARGS="-V --timeout 1700 -R MODULE_HSOLVER" - + ctest --test-dir build -V --timeout 1700 -R MODULE_HSOLVER -E PERF_MODULE_HSOLVER_KERNELS + - name: Module_Cell Unittests env: GTEST_COLOR: 'yes' OMP_NUM_THREADS: '2' run: | - cmake --build build --target test ARGS="-V --timeout 1700 -R MODULE_CELL" - + ctest --test-dir build -V --timeout 1700 -R MODULE_CELL + - name: Module_MD Unittests env: GTEST_COLOR: 'yes' OMP_NUM_THREADS: '2' run: | - cmake --build build --target test ARGS="-V --timeout 1700 -R MODULE_MD" + ctest --test-dir build -V --timeout 1700 -R MODULE_MD + + - name: Module_Psi Unittests + env: + GTEST_COLOR: 'yes' + OMP_NUM_THREADS: '2' + run: | + ctest --test-dir build -V --timeout 1700 -R MODULE_PSI + + - name: Module_RI Unittests + env: + GTEST_COLOR: 'yes' + OMP_NUM_THREADS: '2' + run: | + ctest --test-dir build -V --timeout 1700 -R MODULE_RI - - name: source_psi Unittests + - name: Module_Estate Unittests env: GTEST_COLOR: 'yes' OMP_NUM_THREADS: '2' run: | - cmake --build build --target test ARGS="-V --timeout 1700 -R source_psi" + ctest --test-dir build -V --timeout 1700 -R MODULE_ESTATE - - name: Module_RI Unittests + - name: Module_Hamilt Unittests env: GTEST_COLOR: 'yes' OMP_NUM_THREADS: '2' run: | - cmake --build build --target test ARGS="-V --timeout 1700 -R MODULE_RI" - + ctest --test-dir build -V --timeout 1700 -R MODULE_HAMILT + + - name: Module_PW Unittests + env: + GTEST_COLOR: 'yes' + OMP_NUM_THREADS: '2' + run: | + ctest --test-dir build -V --timeout 1700 -R MODULE_PW + + - name: Module_LCAO Unittests + env: + GTEST_COLOR: 'yes' + OMP_NUM_THREADS: '2' + run: | + ctest --test-dir build -V --timeout 1700 -R MODULE_LCAO + + - name: Module_AO Unittests + env: + GTEST_COLOR: 'yes' + OMP_NUM_THREADS: '2' + run: | + ctest --test-dir build -V --timeout 1700 -R MODULE_AO + + - name: Module_NAO Unittests + env: + GTEST_COLOR: 'yes' + OMP_NUM_THREADS: '2' + run: | + ctest --test-dir build -V --timeout 1700 -R MODULE_NAO + + - name: Module_RELAX Unittests + env: + GTEST_COLOR: 'yes' + OMP_NUM_THREADS: '2' + run: | + ctest --test-dir build -V --timeout 1700 -R MODULE_RELAX + + - name: Module_LR Unittests + env: + GTEST_COLOR: 'yes' + OMP_NUM_THREADS: '2' + run: | + ctest --test-dir build -V --timeout 1700 -R MODULE_LR + - name: 01_PW Test env: GTEST_COLOR: 'yes' OMP_NUM_THREADS: '2' run: | - cmake --build build --target test ARGS="-V --timeout 1700 -R 01_PW" - + ctest --test-dir build -V --timeout 1700 -R 01_PW + - name: 02_NAO_Gamma Test env: GTEST_COLOR: 'yes' OMP_NUM_THREADS: '2' run: | - cmake --build build --target test ARGS="-V --timeout 1700 -R 02_NAO_Gamma" - + ctest --test-dir build -V --timeout 1700 -R 02_NAO_Gamma + - name: 03_NAO_multik Test env: GTEST_COLOR: 'yes' OMP_NUM_THREADS: '2' run: | - cmake --build build --target test ARGS="-V --timeout 1700 -R 03_NAO_multik" - - - name: 04_LJ_DP Test + ctest --test-dir build -V --timeout 1700 -R 03_NAO_multik + + - name: 04_FF Test env: GTEST_COLOR: 'yes' OMP_NUM_THREADS: '2' run: | - cmake --build build --target test ARGS="-V --timeout 1700 -R 04_LJ_DP" - + ctest --test-dir build -V --timeout 1700 -R 04_FF + - name: 05_rtTDDFT Test env: GTEST_COLOR: 'yes' OMP_NUM_THREADS: '2' run: | - cmake --build build --target test ARGS="-V --timeout 1700 -R 05_rtTDDFT" - + ctest --test-dir build -V --timeout 1700 -R 05_rtTDDFT + - name: 06_SDFT Test env: GTEST_COLOR: 'yes' OMP_NUM_THREADS: '2' run: | - cmake --build build --target test ARGS="-V --timeout 1700 -R 06_SDFT" - + ctest --test-dir build -V --timeout 1700 -R 06_SDFT + - name: 07_OFDFT Test env: GTEST_COLOR: 'yes' OMP_NUM_THREADS: '2' run: | - cmake --build build --target test ARGS="-V --timeout 1700 -R 07_OFDFT" - + ctest --test-dir build -V --timeout 1700 -R 07_OFDFT + - name: 08_EXX Test env: GTEST_COLOR: 'yes' OMP_NUM_THREADS: '2' run: | - cmake --build build --target test ARGS="-V --timeout 1700 -R 08_EXX" - + ctest --test-dir build -V --timeout 1700 -R 08_EXX + - name: 09_DeePKS Test env: GTEST_COLOR: 'yes' OMP_NUM_THREADS: '2' run: | - cmake --build build --target test ARGS="-V --timeout 1700 -R 09_DeePKS" - + ctest --test-dir build -V --timeout 1700 -R 09_DeePKS + - name: 10_others Test env: GTEST_COLOR: 'yes' OMP_NUM_THREADS: '2' run: | - cmake --build build --target test ARGS="-V --timeout 1700 -R 10_others" - + ctest --test-dir build -V --timeout 1700 -R 10_others + - name: Other Unittests env: GTEST_COLOR: 'yes' OMP_NUM_THREADS: '2' run: | - cmake --build build --target test ARGS="-V --timeout 1700 -E 'integrate_test|01_PW|02_NAO_Gamma|03_NAO_multik|04_LJ_DP|05_rtTDDFT|06_SDFT|07_OFDFT|08_EXX|09_DeePKS|10_others|11_PW_GPU|12_NAO_Gamma_GPU|13_NAO_multik_GPU|15_rtTDDFT_GPU|16_SDFT_GPU|MODULE_BASE|MODULE_IO|MODULE_HSOLVER|MODULE_CELL|MODULE_MD|source_psi|MODULE_RI'" + ctest --test-dir build -V --timeout 1700 -E 'integrate_test|01_PW|02_NAO_Gamma|03_NAO_multik|04_FF|05_rtTDDFT|06_SDFT|07_OFDFT|08_EXX|09_DeePKS|10_others|11_PW_GPU|12_NAO_Gamma_GPU|13_NAO_multik_GPU|15_rtTDDFT_GPU|16_SDFT_GPU|MODULE_BASE|MODULE_IO|MODULE_HSOLVER|MODULE_CELL|MODULE_MD|MODULE_PSI|MODULE_ESTATE|MODULE_RI|MODULE_HAMILT|MODULE_PW|MODULE_LCAO|MODULE_AO|MODULE_NAO|MODULE_RELAX|MODULE_LR' diff --git a/.github/workflows/version_check.yml b/.github/workflows/version_check.yml index c42228e153..8e4a8cd4bd 100644 --- a/.github/workflows/version_check.yml +++ b/.github/workflows/version_check.yml @@ -7,7 +7,7 @@ jobs: validate_version: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 with: fetch-depth: 0 # Fetch complete git history for version comparison @@ -25,7 +25,7 @@ jobs: # Validate version.h matches the release tag - name: Assert version increment run: | - CODE_VERSION=$(grep -oP '#define\s+VERSION\s+"\K\d+(\.\d+){2,3}' source/source_main/version.h) + CODE_VERSION=$(grep -oP '#define\s+VERSION\s+"\Kv?\d+(\.\d+){2,3}' source/source_main/version.h) if [[ -z "$CODE_VERSION" ]]; then echo "::error::Failed to extract version from source/source_main/version.h" @@ -33,7 +33,7 @@ jobs: fi # Verify that the version in version.h matches the tag - if [[ "${{ steps.versions.outputs.current_tag }}" != "v${CODE_VERSION}" ]]; then + if [[ "${{ steps.versions.outputs.current_tag }}" != "${CODE_VERSION}" ]]; then echo "::error::Version mismatch: tag=${{ steps.versions.outputs.current_tag }} ≠ code=${CODE_VERSION}" exit 1 fi diff --git a/.gitignore b/.gitignore index ebad4b553d..850ef94bf0 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ /build* +build_info.h bin obj *.o @@ -23,4 +24,5 @@ __pycache__ abacus.json *.npy toolchain/install/ -toolchain/abacus_env.sh \ No newline at end of file +toolchain/abacus_env.sh +.trae diff --git a/CMakeLists.txt b/CMakeLists.txt index 277f1924ec..0ccee1f673 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -52,6 +52,12 @@ option(ENABLE_RAPIDJSON "Enable rapid-json usage" OFF) option(ENABLE_CNPY "Enable cnpy usage" OFF) option(ENABLE_CUSOLVERMP "Enable cusolvermp" OFF) +if(NOT DEFINED NVHPC_ROOT_DIR AND DEFINED ENV{NVHPC_ROOT}) + set(NVHPC_ROOT_DIR + "$ENV{NVHPC_ROOT}" + CACHE PATH "Path to NVIDIA HPC SDK root directory.") +endif() + # enable json support if(ENABLE_RAPIDJSON) find_package(RapidJSON) @@ -74,8 +80,8 @@ if(ENABLE_RAPIDJSON) OFF CACHE INTERNAL "") FetchContent_MakeAvailable(rapidjson) - set(RapidJSON_INCLUDE_PATH "${rapidjson_SOURCE_DIR}/include") endif() + set(RapidJSON_INCLUDE_PATH "${rapidjson_SOURCE_DIR}/include") add_compile_definitions(__RAPIDJSON) add_definitions(-DRAPIDJSON_HAS_CXX11_NOEXCEPT=0) include_directories(${RapidJSON_INCLUDE_PATH}) @@ -123,20 +129,66 @@ if(NOT ENABLE_MPI) endif() # Different exe files of ABACUS -if(ENABLE_LCAO AND ENABLE_MPI) - set(ABACUS_BIN_NAME abacus) -elseif(NOT ENABLE_LCAO AND ENABLE_MPI) - set(ABACUS_BIN_NAME abacus_pw) -elseif(NOT ENABLE_LCAO AND NOT ENABLE_MPI) - set(ABACUS_BIN_NAME abacus_pw_serial) -elseif(ENABLE_LCAO AND NOT ENABLE_MPI) - set(ABACUS_BIN_NAME abacus_serial) +unset(ABACUS_BIN_NAME CACHE) + +# Case : LCAO or PW +if(ENABLE_LCAO) + # Case: CUDA is enabled (suffix with 'g' for GPU) + if(USE_CUDA) + if(ENABLE_MPI) + if(NOT ENABLE_LIBRI AND NOT ENABLE_MLALGO) + set(ABACUS_BIN_NAME abacus_2g) + elseif(ENABLE_LIBRI AND NOT ENABLE_MLALGO) + set(ABACUS_BIN_NAME abacus_3g) + elseif(NOT ENABLE_LIBRI AND ENABLE_MLALGO) + set(ABACUS_BIN_NAME abacus_4g) + elseif(ENABLE_LIBRI AND ENABLE_MLALGO) + set(ABACUS_BIN_NAME abacus_5g) + endif() + endif() + # Case: CPU is enabled (suffix with 'p' for parallel) + else() + if(ENABLE_MPI) + if(NOT ENABLE_LIBRI AND NOT ENABLE_MLALGO) + set(ABACUS_BIN_NAME abacus_2p) + elseif(ENABLE_LIBRI AND NOT ENABLE_MLALGO) + set(ABACUS_BIN_NAME abacus_3p) + elseif(NOT ENABLE_LIBRI AND ENABLE_MLALGO) + set(ABACUS_BIN_NAME abacus_4p) + elseif(ENABLE_LIBRI AND ENABLE_MLALGO) + set(ABACUS_BIN_NAME abacus_5p) + endif() + else() + if(NOT ENABLE_LIBRI AND NOT ENABLE_MLALGO) + set(ABACUS_BIN_NAME abacus_2s) + elseif(ENABLE_LIBRI AND NOT ENABLE_MLALGO) + set(ABACUS_BIN_NAME abacus_3s) + elseif(NOT ENABLE_LIBRI AND ENABLE_MLALGO) + set(ABACUS_BIN_NAME abacus_4s) + elseif(ENABLE_LIBRI AND ENABLE_MLALGO) + set(ABACUS_BIN_NAME abacus_5s) + endif() + endif() + endif() +# Case : PW only +else() + if(USE_CUDA) + if(ENABLE_MPI) + set(ABACUS_BIN_NAME abacus_1g) + endif() + else() + if(ENABLE_MPI) + set(ABACUS_BIN_NAME abacus_1p) + else() + set(ABACUS_BIN_NAME abacus_1s) + endif() + endif() endif() + # Use DSP hardware if (USE_DSP) set(USE_ELPA OFF) - set(ENABLE_LCAO OFF) set(ABACUS_BIN_NAME abacus_dsp) endif() @@ -156,10 +208,14 @@ if(ENABLE_COVERAGE) include(FetchContent) FetchContent_Declare( cmakecodecov - URL https://github.com/baixiaokuang/CMake-codecov/archive/refs/heads/master.zip + GIT_REPOSITORY https://github.com/RWTH-HPC/CMake-codecov.git + GIT_TAG master + GIT_SHALLOW TRUE + GIT_PROGRESS TRUE ) FetchContent_Populate(cmakecodecov) list(APPEND CMAKE_MODULE_PATH ${cmakecodecov_SOURCE_DIR}/cmake) + set(CMAKE_MODULE_PATH "${cmakecodecov_SOURCE_DIR}/cmake" ${CMAKE_MODULE_PATH}) find_package(codecov REQUIRED) endif() endif() @@ -170,7 +226,9 @@ set(ABACUS_BIN_PATH ${CMAKE_CURRENT_BINARY_DIR}/${ABACUS_BIN_NAME}) include_directories(${ABACUS_SOURCE_DIR}) include_directories(${ABACUS_SOURCE_DIR}/source_base/module_container) -set(CMAKE_CXX_STANDARD 11) +if(NOT DEFINED CMAKE_CXX_STANDARD) + set(CMAKE_CXX_STANDARD 11) +endif() set(CMAKE_CXX_STANDARD_REQUIRED ON) add_executable(${ABACUS_BIN_NAME} source/source_main/main.cpp) @@ -178,6 +236,7 @@ if(ENABLE_COVERAGE) add_coverage(${ABACUS_BIN_NAME}) endif() + macro(set_if_higher VARIABLE VALUE) if(${VARIABLE} LESS ${VALUE}) set(${VARIABLE} ${VALUE}) @@ -253,9 +312,6 @@ if(ENABLE_LCAO) add_compile_definitions(__PEXSI) set(CMAKE_CXX_STANDARD 14) endif() - if(OLD_GINT) - add_compile_definitions(__OLD_GINT) - endif() else() set(ENABLE_MLALGO OFF) set(ENABLE_LIBRI OFF) @@ -287,12 +343,8 @@ if (USE_SW) set(SW ON) include_directories(${SW_MATH}/include) include_directories(${SW_FFT}/include) - + target_link_libraries(${ABACUS_BIN_NAME} ${SW_FFT}/lib/libfftw3.a) - target_link_libraries(${ABACUS_BIN_NAME} ${SW_MATH}/libswfft.a) - target_link_libraries(${ABACUS_BIN_NAME} ${SW_MATH}/libswscalapack.a) - target_link_libraries(${ABACUS_BIN_NAME} ${SW_MATH}/libswlapack.a) - target_link_libraries(${ABACUS_BIN_NAME} ${SW_MATH}/libswblas.a) endif() find_package(Threads REQUIRED) @@ -331,22 +383,38 @@ endif() if(USE_CUDA) cmake_minimum_required(VERSION 3.18) # required by `CUDA_ARCHITECTURES` below + + # Always find CUDAToolkit to get CUDAToolkit_VERSION + find_package(CUDAToolkit REQUIRED) + set_if_higher(CMAKE_CXX_STANDARD 14) + if(CUDAToolkit_VERSION VERSION_GREATER_EQUAL "13.0") + message(STATUS "CUDA ${CUDAToolkit_VERSION} detected. Setting CMAKE_CUDA_STANDARD to 17.") + set_if_higher(CMAKE_CXX_STANDARD 17) + endif() set(CMAKE_CXX_EXTENSIONS ON) set(CMAKE_CUDA_STANDARD ${CMAKE_CXX_STANDARD}) set(CMAKE_CUDA_STANDARD_REQUIRED ON) set(CMAKE_CUDA_HOST_COMPILER ${CMAKE_CXX_COMPILER}) if(NOT DEFINED CMAKE_CUDA_ARCHITECTURES) - find_package(CUDAToolkit REQUIRED) # check # https://gitlab.kitware.com/cmake/cmake/-/blob/master/Modules/Internal/CMakeCUDAArchitecturesAll.cmake - # for available architechures in different CUDA versions - set(CMAKE_CUDA_ARCHITECTURES - 60 # P100 - 70 # V100 - # Add your CUDA arch here Check the Compute Capability version of your - # GPU at: https://en.wikipedia.org/wiki/CUDA#GPUs_supported - ) + # for available architectures in different CUDA versions + + # CUDA 13.0+ dropped support for architectures below 75 + if(CUDAToolkit_VERSION VERSION_LESS "13.0") + set(CMAKE_CUDA_ARCHITECTURES + 60 # P100 + 70 # V100 + ) + else() + # Start with empty list; architectures 75+ will be added below + set(CMAKE_CUDA_ARCHITECTURES) + endif() + + # Add your CUDA arch here Check the Compute Capability version of your + # GPU at: https://en.wikipedia.org/wiki/CUDA#GPUs_supported + if(CUDAToolkit_VERSION VERSION_GREATER_EQUAL 10.0) list(APPEND CMAKE_CUDA_ARCHITECTURES 75) # T4 endif() @@ -373,6 +441,7 @@ if(USE_CUDA) if(USE_CUDA) add_compile_definitions(__CUDA) add_compile_definitions(__UT_USE_CUDA) + target_compile_definitions(${ABACUS_BIN_NAME} PRIVATE __USE_NVTX) if (CMAKE_BUILD_TYPE STREQUAL "Debug") set(CMAKE_CUDA_FLAGS_DEBUG "${CMAKE_CUDA_FLAGS_DEBUG} -g -G" CACHE STRING "CUDA flags for debug build" FORCE) endif() @@ -380,21 +449,27 @@ if(USE_CUDA) set(CMAKE_CUDA_FLAGS "${CMAKE_CUDA_FLAGS} -Xcompiler=${OpenMP_CXX_FLAGS}" CACHE STRING "CUDA flags" FORCE) endif() if (ENABLE_CUSOLVERMP) - add_compile_definitions(__CUSOLVERMP) - find_library(CAL_LIBRARY - NAMES cal - PATHS ${CAL_CUSOLVERMP_PATH} - NO_DEFAULT_PATH - ) - find_library(CUSOLVERMP_LIBRARY - NAMES cusolverMp - PATHS ${CAL_CUSOLVERMP_PATH} - NO_DEFAULT_PATH - ) - target_link_libraries(${ABACUS_BIN_NAME} - ${CAL_LIBRARY} - ${CUSOLVERMP_LIBRARY} - ) + # Keep cuSOLVERMp discovery/linking logic in a dedicated module. + include(cmake/SetupCuSolverMp.cmake) + abacus_setup_cusolvermp(${ABACUS_BIN_NAME}) + endif() + if (ENABLE_CUBLASMP) + # Enforcement 1: cuBLASMp requires cuSOLVERMp to be enabled + if (NOT ENABLE_CUSOLVERMP) + message(FATAL_ERROR + "ENABLE_CUBLASMP is set to ON, but ENABLE_CUSOLVERMP is OFF." + "In ABACUS, cuBLASMp support requires cuSOLVERMp to be enabled simultaneously." + "Please set -DENABLE_CUSOLVERMP=ON.") + endif() + # Enforcement 2: cuBLASMp 0.8.0+ is incompatible with CAL backend + # Note: _use_cal is defined inside abacus_setup_cusolvermp + if (_use_cal) + message(FATAL_ERROR + "cuBLASMp 0.8.0+ requires NCCL Symmetric Memory, but cuSOLVERMp is using CAL backend." + "Please upgrade cuSOLVERMp to >= 0.7.0 to use NCCL for both.") + endif() + include(cmake/SetupCuBlasMp.cmake) + abacus_setup_cublasmp(${ABACUS_BIN_NAME}) endif() endif() endif() @@ -468,20 +543,21 @@ if(MKLROOT) find_package(MKL REQUIRED) add_definitions(-D__MKL) include_directories(${MKL_INCLUDE} ${MKL_INCLUDE}/fftw) - list(APPEND math_libs MKL::MKL MKL::MKL_SCALAPACK) + list(APPEND math_libs MKL::MKL) if(CMAKE_CXX_COMPILER_ID MATCHES Intel) list(APPEND math_libs ifcore) endif() -elseif(USE_SW) - list(APPEND math_libs gfortran) - # SW architecture can only use its own math library -else() +elseif(NOT USE_SW) find_package(FFTW3 REQUIRED) find_package(Lapack REQUIRED) include_directories(${FFTW3_INCLUDE_DIRS}) list(APPEND math_libs FFTW3::FFTW3 LAPACK::LAPACK BLAS::BLAS) - find_package(ScaLAPACK REQUIRED) - list(APPEND math_libs ScaLAPACK::ScaLAPACK) + if(USE_DSP) + target_link_libraries(${ABACUS_BIN_NAME} ${SCALAPACK_LIBRARY_DIR}) + else() + find_package(ScaLAPACK REQUIRED) + list(APPEND math_libs ScaLAPACK::ScaLAPACK) + endif() if(USE_OPENMP) list(APPEND math_libs FFTW3::FFTW3_OMP) endif() @@ -520,7 +596,7 @@ if(ENABLE_MLALGO) include_directories(${libnpy_INCLUDE_DIR}) endif() include_directories(${libnpy_SOURCE_DIR}/include) - + add_compile_definitions(__MLALGO) endif() @@ -560,7 +636,7 @@ if (ENABLE_CNPY) include_directories(${cnpy_INCLUDE_DIR}) endif() include_directories(${cnpy_SOURCE_DIR}) - + # find ZLIB and link find_package(ZLIB REQUIRED) target_link_libraries(${ABACUS_BIN_NAME} cnpy ZLIB::ZLIB) @@ -617,10 +693,6 @@ if(ENABLE_LIBCOMM) endif() - -list(APPEND math_libs m) -target_link_libraries(${ABACUS_BIN_NAME} ${math_libs}) - if(DEFINED Libxc_DIR) set(ENABLE_LIBXC ON) endif() @@ -649,6 +721,15 @@ if(DEFINED DeePMD_DIR) endif() endif() +if(DEFINED NEP_DIR) + find_package(NEP REQUIRED) + + if(NEP_FOUND) + add_compile_definitions(__NEP) + target_link_libraries(${ABACUS_BIN_NAME} NEP::nep) + endif() +endif() + if(DEFINED TensorFlow_DIR) find_package(TensorFlow REQUIRED) include_directories(${TensorFlow_DIR}/include) @@ -665,73 +746,13 @@ if(INFO) # modifications on blas_connector and lapack_connector endif() -# Add performance test in abacus -if(ENABLE_GOOGLEBENCH) - set(BUILD_TESTING ON) - find_package(benchmark HINTS ${BENCHMARK_DIR}) - if(NOT ${benchmark_FOUND}) - set(BENCHMARK_USE_BUNDLED_GTEST OFF) - include(FetchContent) - FetchContent_Declare( - benchmark - GIT_REPOSITORY https://github.com/google/benchmark.git - GIT_TAG "origin/main" - GIT_SHALLOW TRUE - GIT_PROGRESS TRUE) - set(BENCHMARK_ENABLE_TESTING OFF) - FetchContent_MakeAvailable(benchmark) - endif() -endif() - -if(BUILD_TESTING) - set_if_higher(CMAKE_CXX_STANDARD 14) # Required in orbital - include(CTest) - enable_testing() - find_package(GTest HINTS /usr/local/lib/ ${GTEST_DIR}) - if(NOT ${GTest_FOUND}) - include(FetchContent) - FetchContent_Declare( - googletest - GIT_REPOSITORY https://github.com/google/googletest.git - GIT_TAG "origin/main" - GIT_SHALLOW TRUE - GIT_PROGRESS TRUE) - FetchContent_MakeAvailable(googletest) - endif() - # TODO: Try the GoogleTest module. - # https://cmake.org/cmake/help/latest/module/GoogleTest.html - add_subdirectory(tests) # Contains integration tests - - function(AddTest) # function for UT - cmake_parse_arguments(UT "DYN" "TARGET" - "LIBS;DYN_LIBS;STATIC_LIBS;SOURCES;DEPENDS" ${ARGN}) - add_executable(${UT_TARGET} ${UT_SOURCES}) - - if(ENABLE_COVERAGE) - add_coverage(${UT_TARGET}) - endif() - - # dependencies & link library - target_link_libraries(${UT_TARGET} ${UT_LIBS} Threads::Threads - GTest::gtest_main GTest::gmock_main) - if(ENABLE_GOOGLEBENCH) - target_link_libraries( - ${UT_TARGET} benchmark::benchmark) - endif() - - if(USE_OPENMP) - target_link_libraries(${UT_TARGET} OpenMP::OpenMP_CXX) - endif() - install(TARGETS ${UT_TARGET} DESTINATION ${CMAKE_BINARY_DIR}/tests) - add_test( - NAME ${UT_TARGET} - COMMAND ${UT_TARGET} - WORKING_DIRECTORY $) - endfunction(AddTest) -endif() +include(cmake/Testing.cmake) add_subdirectory(source) +include(cmake/BuildInfo.cmake) +setup_build_info() + target_link_libraries( ${ABACUS_BIN_NAME} base @@ -778,18 +799,32 @@ if(ENABLE_LCAO) target_link_libraries(${ABACUS_BIN_NAME} genelpa) endif() if(USE_CUDA) - target_link_libraries(diag_cusolver) + target_link_libraries(${ABACUS_BIN_NAME} diag_cusolver) endif() endif() if(ENABLE_RAPIDJSON) target_link_libraries(${ABACUS_BIN_NAME} json_output) endif() +if (USE_SW) + target_link_libraries(${ABACUS_BIN_NAME} ${SW_MATH}/libswfft.a) + target_link_libraries(${ABACUS_BIN_NAME} ${SW_MATH}/libswscalapack.a) + target_link_libraries(${ABACUS_BIN_NAME} ${SW_MATH}/libswlapack.a) + target_link_libraries(${ABACUS_BIN_NAME} ${SW_MATH}/libswblas.a) + list(APPEND math_libs gfortran) +endif() + +list(APPEND math_libs m) +target_link_libraries(${ABACUS_BIN_NAME} ${math_libs}) + install(PROGRAMS ${ABACUS_BIN_PATH} TYPE BIN # DESTINATION ${CMAKE_INSTALL_BINDIR} ) +# Create a symbolic link 'abacus' pointing to the actual executable +install(CODE "execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink ${ABACUS_BIN_NAME} ${CMAKE_INSTALL_PREFIX}/bin/abacus WORKING_DIRECTORY ${CMAKE_INSTALL_PREFIX}/bin)") + if(ENABLE_COVERAGE) coverage_evaluate() -endif() \ No newline at end of file +endif() diff --git a/Dockerfile.cuda b/Dockerfile.cuda index 6b9b812e1f..7b42580664 100644 --- a/Dockerfile.cuda +++ b/Dockerfile.cuda @@ -3,7 +3,7 @@ FROM nvidia/cuda:12.2.0-devel-ubuntu22.04 RUN apt update && apt install -y --no-install-recommends \ libopenblas-openmp-dev liblapack-dev libscalapack-mpi-dev libfftw3-dev libcereal-dev \ libxc-dev libgtest-dev libgmock-dev libbenchmark-dev python3-numpy \ - bc cmake git g++ make bc time sudo unzip vim wget libopenmpi-dev gfortran libtool-bin + bc cmake git g++ make time sudo unzip vim wget libopenmpi-dev gfortran libtool-bin ENV GIT_SSL_NO_VERIFY=true TERM=xterm-256color \ OMPI_ALLOW_RUN_AS_ROOT=1 OMPI_ALLOW_RUN_AS_ROOT_CONFIRM=1 \ diff --git a/Dockerfile.gnu b/Dockerfile.gnu index 23c6b71c5e..693814a545 100644 --- a/Dockerfile.gnu +++ b/Dockerfile.gnu @@ -11,7 +11,7 @@ FROM ubuntu:22.04 RUN apt update && apt install -y --no-install-recommends \ libopenblas-openmp-dev liblapack-dev libscalapack-mpi-dev libelpa-dev libfftw3-dev libcereal-dev \ libxc-dev libgtest-dev libgmock-dev libbenchmark-dev python3-numpy \ - bc cmake git g++ make bc time sudo unzip vim wget gfortran + bc cmake git g++ make time sudo unzip vim wget gfortran # If you wish to use the LLVM compiler, replace 'g++' above with 'clang libomp-dev'. ENV GIT_SSL_NO_VERIFY=true TERM=xterm-256color \ diff --git a/Dockerfile.intel b/Dockerfile.intel index 5bf6308e79..a83033065c 100644 --- a/Dockerfile.intel +++ b/Dockerfile.intel @@ -2,7 +2,8 @@ FROM ubuntu:22.04 RUN apt-get update && apt-get install -y \ bc cmake git gnupg gcc g++ python3-numpy sudo wget vim unzip \ - libcereal-dev libxc-dev libgtest-dev libgmock-dev libbenchmark-dev + libcereal-dev libxc-dev libgtest-dev libgmock-dev libbenchmark-dev \ + pkg-config build-essential autoconf automake libtool # Following steps by https://software.intel.com/content/www/us/en/develop/documentation/installation-guide-for-intel-oneapi-toolkits-linux/top/installation/install-using-package-managers/apt.html . RUN wget -O- https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB \ @@ -16,21 +17,44 @@ RUN apt-get update && \ intel-oneapi-compiler-dpcpp-cpp \ intel-oneapi-compiler-fortran \ intel-oneapi-mkl-devel \ - intel-oneapi-mpi-devel="2021.11.*" \ + intel-oneapi-mkl-sycl-devel \ + intel-oneapi-mkl-sycl-distributed-dft-devel \ + intel-oneapi-mpi-devel \ intel-oneapi-vtune && \ - rm /opt/intel/oneapi/mpi/latest && ln -s /opt/intel/oneapi/mpi/2021.11 /opt/intel/oneapi/mpi/latest -ENV I_MPI_ROOT=/opt/intel/oneapi/mpi/latest \ - LIBRARY_PATH=/opt/intel/oneapi/tbb/latest/env/../lib/intel64/gcc4.8:/opt/intel/oneapi/mpi/latest/lib:/opt/intel/oneapi/mkl/latest/lib/:/opt/intel/oneapi/ippcp/latest/lib/:/opt/intel/oneapi/ipp/latest/lib:/opt/intel/oneapi/dpl/latest/lib:/opt/intel/oneapi/dnnl/latest/lib:/opt/intel/oneapi/dal/latest/lib:/opt/intel/oneapi/compiler/latest/lib:/opt/intel/oneapi/ccl/latest/lib/ \ - LD_LIBRARY_PATH=/opt/intel/oneapi/tbb/latest/env/../lib/intel64/gcc4.8:/opt/intel/oneapi/mpi/latest/opt/mpi/libfabric/lib:/opt/intel/oneapi/mpi/latest/lib:/opt/intel/oneapi/mkl/latest/lib:/opt/intel/oneapi/itac/latest/slib:/opt/intel/oneapi/ippcp/latest/lib/:/opt/intel/oneapi/ipp/latest/lib:/opt/intel/oneapi/dpl/latest/lib:/opt/intel/oneapi/dnnl/latest/lib:/opt/intel/oneapi/debugger/latest/opt/debugger/lib:/opt/intel/oneapi/dal/latest/lib:/opt/intel/oneapi/compiler/latest/opt/oclfpga/host/linux64/lib:/opt/intel/oneapi/compiler/latest/opt/compiler/lib:/opt/intel/oneapi/compiler/latest/lib:/opt/intel/oneapi/ccl/latest/lib/ \ - PATH=/opt/intel/oneapi/vtune/latest/bin64:/opt/intel/oneapi/mpi/latest/opt/mpi/libfabric/bin:/opt/intel/oneapi/mpi/latest/bin:/opt/intel/oneapi/mkl/latest/bin/:/opt/intel/oneapi/itac/latest/bin:/opt/intel/oneapi/inspector/latest/bin64:/opt/intel/oneapi/dpcpp-ct/latest/bin:/opt/intel/oneapi/dev-utilities/latest/bin:/opt/intel/oneapi/debugger/latest/opt/debugger/bin:/opt/intel/oneapi/compiler/latest/opt/oclfpga/bin:/opt/intel/oneapi/compiler/latest/bin:/opt/intel/oneapi/advisor/latest/bin64:/opt/mamba/bin:/opt/mamba/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin \ - MKLROOT=/opt/intel/oneapi/mkl/latest \ - FI_PROVIDER_PATH=/opt/intel/oneapi/mpi/latest/opt/mpi/libfabric/lib/prov:/usr/lib/x86_64-linux-gnu/libfabric \ - CMAKE_PREFIX_PATH=/opt/intel/oneapi/tbb/latest/env/..:/opt/intel/oneapi/mkl/latest/lib/cmake:/opt/intel/oneapi/ipp/latest/lib/cmake/ipp:/opt/intel/oneapi/dpl/latest/lib/cmake/oneDPL:/opt/intel/oneapi/dnnl/latest/lib/cmake:/opt/intel/oneapi/dal/latest:/opt/intel/oneapi/compiler/latest \ - CMPLR_ROOT=/opt/intel/oneapi/compiler/latest + apt-get clean && \ + rm -rf /var/lib/apt/lists/* + +RUN ls -la /opt/intel/oneapi/mkl/latest/lib/intel64/*sycl*dft* +RUN ls -la /opt/intel/oneapi/mkl/latest/lib/intel64/*dis* + +# Set oneAPI environment variables +ENV ONEAPI_ROOT=/opt/intel/oneapi +ENV I_MPI_ROOT=${ONEAPI_ROOT}/mpi/latest +ENV MKLROOT=${ONEAPI_ROOT}/mkl/latest +ENV CMPLR_ROOT=${ONEAPI_ROOT}/compiler/latest + +# Set library paths and include paths +ENV LIBRARY_PATH=${ONEAPI_ROOT}/tbb/latest/lib/intel64/gcc4.8:${ONEAPI_ROOT}/mpi/latest/lib:${MKLROOT}/lib/intel64:${ONEAPI_ROOT}/compiler/latest/lib/:${LIBRARY_PATH} +ENV LD_LIBRARY_PATH=${ONEAPI_ROOT}/tbb/latest/lib/intel64/gcc4.8:${ONEAPI_ROOT}/mpi/latest/lib:${MKLROOT}/lib/intel64:${ONEAPI_ROOT}/compiler/latest/lib/:${LD_LIBRARY_PATH} +ENV PATH=${ONEAPI_ROOT}/vtune/latest/bin64:${ONEAPI_ROOT}/mpi/latest/bin:${MKLROOT}/bin/intel64:${ONEAPI_ROOT}/compiler/latest/bin:${PATH} +ENV CPATH=${MKLROOT}/include:${ONEAPI_ROOT}/mpi/latest/include:${CPATH} +ENV PKG_CONFIG_PATH=${MKLROOT}/lib/pkgconfig:${ONEAPI_ROOT}/mpi/latest/lib/pkgconfig:${PKG_CONFIG_PATH} + +# Set CMAKE related paths +ENV CMAKE_PREFIX_PATH=${ONEAPI_ROOT}/tbb/latest:${MKLROOT}/lib/cmake:${ONEAPI_ROOT}/dpl/latest/lib/cmake:${ONEAPI_ROOT}/dnnl/latest/lib/cmake:${ONEAPI_ROOT}/dal/latest:${ONEAPI_ROOT}/compiler/latest:${CMAKE_PREFIX_PATH} SHELL ["/bin/bash", "-c"] ENV CC=mpiicx CXX=mpiicpx FC=mpiifx +# Verify oneAPI installation +RUN source ${ONEAPI_ROOT}/setvars.sh && \ + echo "=== Verify compiler ===" && \ + which mpiicx && mpiicx --version && \ + echo "=== Verify MKL ===" && \ + ls ${MKLROOT}/lib/intel64/ && \ + echo "=== Verify MPI ===" && \ + which mpirun && mpirun --version + # https://elpa.mpcdf.mpg.de/software/tarball-archive/ELPA_TARBALL_ARCHIVE.html RUN source /opt/intel/oneapi/setvars.sh && \ cd /tmp && \ @@ -39,28 +63,141 @@ RUN source /opt/intel/oneapi/setvars.sh && \ tar xzf elpa-$ELPA_VER.tar.gz && rm elpa-$ELPA_VER.tar.gz && \ cd elpa-$ELPA_VER && mkdir build && cd build && \ ../configure CFLAGS="-O3 -march=native" FCFLAGS="-O3 -qmkl=cluster" --enable-openmp && \ - make -j`nproc` && \ + make -j$(nproc) && \ make PREFIX=/usr/local install && \ ln -s /usr/local/include/elpa_openmp-$ELPA_VER/elpa /usr/local/include/ && \ cd /tmp && rm -rf elpa-$ELPA_VER -RUN cd /tmp && git clone https://github.com/Tencent/rapidjson.git && cp -r rapidjson/include/rapidjson /usr/include/ \ - && rm -rf rapidjson +# rapidjson and libtorch +RUN cd /tmp && git clone --depth 1 https://github.com/Tencent/rapidjson.git && cp -r rapidjson/include/rapidjson /usr/include/ && rm -rf rapidjson +RUN wget -q https://download.pytorch.org/libtorch/cpu/libtorch-cxx11-abi-shared-with-deps-2.0.0%2Bcpu.zip -O /tmp/libtorch.zip && \ + unzip -q /tmp/libtorch.zip -d /opt && rm -f /tmp/libtorch.zip +ENV CMAKE_PREFIX_PATH=/opt/libtorch/share/cmake:${CMAKE_PREFIX_PATH} -RUN wget https://download.pytorch.org/libtorch/cpu/libtorch-cxx11-abi-shared-with-deps-2.0.0%2Bcpu.zip \ - --no-check-certificate --quiet -O libtorch.zip && \ - unzip -q libtorch.zip -d /opt && rm libtorch.zip -ENV CMAKE_PREFIX_PATH=/opt/libtorch/share/cmake +###### PEXSI PART: pexsi and gklib and metis and parmetis and superlu_dist +ENV GKLIB_VERSION="master" +ENV METIS_VERSION="master" +ENV PARMETIS_VERSION="main" +ENV SUPERLU_DIST_VERSION=7.2.0 +ENV PEXSI_VERSION="master" +ENV GKLIB_ROOT=/usr/local/gklib-${GKLIB_VERSION} +ENV METIS32_ROOT=/usr/local/metis32-${METIS_VERSION} +ENV PARMETIS32_ROOT=/usr/local/parmetis32-${PARMETIS_VERSION} +ENV PEXSI32_ROOT=/usr/local/pexsi32-${PEXSI_VERSION} +ENV SUPERLU_DIST32_ROOT=/usr/local/superlu_dist32-${SUPERLU_DIST_VERSION} -ADD https://api.github.com/repos/deepmodeling/abacus-develop/git/refs/heads/develop /dev/null +# 2. install GKlib +RUN wget https://codeload.github.com/KarypisLab/GKlib/zip/refs/heads/${GKLIB_VERSION} -O GKlib-${GKLIB_VERSION}.zip && \ + unzip GKlib-${GKLIB_VERSION}.zip && \ + cd GKlib-${GKLIB_VERSION} && \ + make config shared=1 prefix=${GKLIB_ROOT} openmp=set && \ + make -j$(nproc) && \ + make install && \ + ls ${GKLIB_ROOT}/lib && \ + cp ${GKLIB_ROOT}/lib/libGKlib.so.0 ${GKLIB_ROOT}/lib/libGKlib.so && \ + cd / && rm -rf GKlib-${GKLIB_VERSION} GKlib-${GKLIB_VERSION}.zip +#.so file CANNOT be found otherwise. +# 2. install METIS +RUN export LD_LIBRARY_PATH=${GKLIB_ROOT}/lib:${LD_LIBRARY_PATH} && \ + wget https://codeload.github.com/KarypisLab/METIS/zip/refs/heads/${METIS_VERSION} -O METIS-${METIS_VERSION}.zip && \ + unzip METIS-${METIS_VERSION}.zip && \ + cd METIS-${METIS_VERSION} && \ + make config shared=1 prefix=${METIS32_ROOT} gklib_path=${GKLIB_ROOT} && \ + make -j$(nproc) && \ + make install && \ + cd / && rm -rf METIS-${METIS_VERSION} METIS-${METIS_VERSION}.zip -RUN source /opt/intel/oneapi/setvars.sh && \ - git clone https://github.com/deepmodeling/abacus-develop.git --depth 1 && \ +# 3. install ParMETIS +RUN export LD_LIBRARY_PATH=${METIS32_ROOT}/lib:${GKLIB_ROOT}/lib:${LD_LIBRARY_PATH} && \ + wget https://codeload.github.com/KarypisLab/ParMETIS/zip/refs/heads/${PARMETIS_VERSION} -O ParMETIS-${PARMETIS_VERSION}.zip && \ + unzip ParMETIS-${PARMETIS_VERSION}.zip && \ + cd ParMETIS-${PARMETIS_VERSION} && \ + make config shared=1 prefix=${PARMETIS32_ROOT} gklib_path=${GKLIB_ROOT} metis_path=${METIS32_ROOT} && \ + make -j$(nproc) && \ + make install && \ + cd / && rm -rf ParMETIS-${PARMETIS_VERSION} ParMETIS-${PARMETIS_VERSION}.zip + +# 4. install SuperLU_DIST +RUN wget https://codeload.github.com/xiaoyeli/superlu_dist/tar.gz/refs/tags/v${SUPERLU_DIST_VERSION} -O v${SUPERLU_DIST_VERSION}.tar.gz && \ + tar -xzf v${SUPERLU_DIST_VERSION}.tar.gz && \ + cd superlu_dist-${SUPERLU_DIST_VERSION} && \ + mkdir build && cd build && \ + cmake .. \ + -DTPL_ENABLE_PARMETISLIB=ON \ + -DTPL_PARMETIS_LIBRARIES="${PARMETIS32_ROOT}/lib/libparmetis.so;${METIS32_ROOT}/lib/libmetis.so;${GKLIB_ROOT}/lib/libGKlib.so" \ + -DTPL_PARMETIS_INCLUDE_DIRS="${PARMETIS32_ROOT}/include;${METIS32_ROOT}/include;${GKLIB_ROOT}/include" \ + -DTPL_ENABLE_INTERNAL_BLASLIB=OFF \ + -DTPL_ENABLE_LAPACKLIB=ON \ + -DTPL_ENABLE_COMBBLASLIB=OFF \ + -DTPL_ENABLE_CUDALIB=OFF \ + -Denable_complex16=ON \ + -DXSDK_INDEX_SIZE=32 \ + -DBUILD_SHARED_LIBS=ON \ + -DCMAKE_INSTALL_PREFIX=${SUPERLU_DIST32_ROOT} \ + -DCMAKE_C_FLAGS="-O3 -fopenmp" \ + -DCMAKE_CXX_FLAGS="-O3 -fopenmp" \ + -DXSDK_ENABLE_Fortran=ON \ + -DCMAKE_Fortran_COMPILER=mpiifx && \ + make -j$(nproc) && \ + make install && \ + cd / && rm -rf superlu_dist-${SUPERLU_DIST_VERSION} v${SUPERLU_DIST_VERSION}.tar.gz + +### -DCMAKE_C_COMPILER=mpiicc \ +### -DCMAKE_CXX_COMPILER=mpiicpc \ +### -DCMAKE_CUDA_COMPILER=nvcc \ + +# 5. install PEXSI +RUN export LD_LIBRARY_PATH=${SUPERLU_DIST32_ROOT}/lib:${METIS32_ROOT}/lib:${PARMETIS32_ROOT}/lib:${GKLIB_ROOT}/lib:${LD_LIBRARY_PATH} && \ + export LIBRARY_PATH=${SUPERLU_DIST32_ROOT}/lib:${METIS32_ROOT}/lib:${PARMETIS32_ROOT}/lib:${GKLIB_ROOT}/lib:${LIBRARY_PATH} && \ + export PKG_CONFIG_PATH=${SUPERLU_DIST32_ROOT}/lib/pkgconfig:${METIS32_ROOT}/lib/pkgconfig:${PARMETIS32_ROOT}/lib/pkgconfig:${GKLIB_ROOT}/lib/pkgconfig:${PKG_CONFIG_PATH} && \ + export CPATH=${SUPERLU_DIST32_ROOT}/include:${PARMETIS32_ROOT}/include:${METIS32_ROOT}/include:${GKLIB_ROOT}/include:${CMAKE_PREFIX_PATH} && \ + export CMAKE_PREFIX_PATH=${SUPERLU_DIST32_ROOT}:${PARMETIS32_ROOT}:${METIS32_ROOT}:${GKLIB_ROOT}:${CMAKE_PREFIX_PATH} && \ + wget https://codeload.github.com/MCresearch/pexsi/tar.gz/refs/heads/${PEXSI_VERSION} -O pexsi-${PEXSI_VERSION}.tar.gz && \ + tar -xzf pexsi-${PEXSI_VERSION}.tar.gz && \ + cd pexsi-${PEXSI_VERSION} && \ + sed -i 's/^add_pexsi_f_example_exe/# add_pexsi_f_example_exe/g' fortran/CMakeLists.txt && \ + sed -i 's/^add_pexsi_example_exe/# add_pexsi_example_exe/g' examples/CMakeLists.txt && \ + sed -i 's/add_executable/# add_executable/g' fortran/CMakeLists.txt && \ + sed -i 's/add_executable/# add_executable/g' examples/CMakeLists.txt && \ + mkdir build && cd build && \ + cmake .. \ + -DCMAKE_INSTALL_PREFIX=${PEXSI32_ROOT} \ + -DPEXSI_ENABLE_OPENMP=ON \ + -DPEXSI_ENABLE_FORTRAN=OFF && \ + make pexsi -j$(nproc) && \ + make install && \ + cd / && rm -rf pexsi-${PEXSI_VERSION} pexsi-${PEXSI_VERSION}.tar.gz + +ENV LD_LIBRARY_PATH=${GKLIB_ROOT}/lib:${METIS32_ROOT}/lib:${PARMETIS32_ROOT}/lib:${SUPERLU32_DIST_ROOT}/lib:${PEXSI32_ROOT}/lib:${LD_LIBRARY_PATH} +ENV PKG_CONFIG_PATH=${GKLIB_ROOT}/lib/pkgconfig:${METIS32_ROOT}/lib/pkgconfig:${PARMETIS32_ROOT}/lib/pkgconfig:${SUPERLU32_DIST_ROOT}/lib/pkgconfig:${PEXSI32_ROOT}/lib/pkgconfig:${PKG_CONFIG_PATH} +ENV CPATH=${GKLIB_ROOT}/include:${METIS32_ROOT}/include:${PARMETIS32_ROOT}/include:${SUPERLU32_DIST_ROOT}/include:${PEXSI32_ROOT}/include:${CPATH} +ENV CMAKE_PREFIX_PATH=${PEXSI32_ROOT}:${SUPERLU_DIST32_ROOT}:${PARMETIS32_ROOT}:${METIS32_ROOT}:${GKLIB_ROOT}:${CMAKE_PREFIX_PATH} + +### -DCMAKE_C_COMPILER=mpiicc \ +### -DCMAKE_CXX_COMPILER=mpiicpc \ +###### END of PEXSI PART + +# Clone and build abacus (optional during image build; keep for CI image) +ADD https://api.github.com/repos/deepmodeling/abacus-develop/git/refs/heads/develop /dev/null +RUN cd /tmp && git clone https://github.com/deepmodeling/abacus-develop.git --depth 1 && \ cd abacus-develop && \ - cmake -B build -DENABLE_MLALGO=ON -DENABLE_LIBXC=ON -DENABLE_LIBRI=ON -DENABLE_RAPIDJSON=ON && \ - cmake --build build -j`nproc` && \ + cmake -B build \ + -DENABLE_MLALGO=ON \ + -DENABLE_PEXSI=ON \ + -DENABLE_LIBXC=ON \ + -DENABLE_LIBRI=ON \ + -DENABLE_RAPIDJSON=ON \ + -DCMAKE_BUILD_TYPE=Release && \ + cmake --build build -j"$(nproc)" && \ cmake --install build && \ - rm -rf build && \ - abacus --version - #&& rm -rf abacus-develop + (/usr/local/bin/abacus --version || echo "ABACUS installed but version check failed") && \ + rm -rf /tmp/abacus-develop + # -DMKL_SYCL=OFF \ + # -DMKL_SYCL_DISTRIBUTED_DFT:BOOL=OFF \ + # cd /tmp && wget https://github.com/deepmodeling/abacus-develop/archive/refs/tags/v3.9.0.17.zip -O abacus-develop-3.9.0.17.zip && \ + # unzip abacus-develop-3.9.0.17.zip && \ + # cd abacus-develop-3.9.0.17 && \ + # sed -i '3i\#include "source_estate/elecstate_lcao.h"' source/source_lcao/edm.cpp && \ +# Default entry +CMD ["/bin/bash"] diff --git a/cmake/BuildInfo.cmake b/cmake/BuildInfo.cmake new file mode 100644 index 0000000000..94a267e9c6 --- /dev/null +++ b/cmake/BuildInfo.cmake @@ -0,0 +1,28 @@ +# ============================================================================= +# Generate Build Information Header (Including Information Collection) +# ============================================================================== + +# include_guard(GLOBAL) + +function(setup_build_info) + message(STATUS "Setting up build information...") + + include(cmake/CollectBuildInfoVars.cmake) + +set(BUILD_INFO_TEMPLATE "${CMAKE_SOURCE_DIR}/source/source_io/build_info.h.in") +set(BUILD_INFO_OUTPUT "${CMAKE_BINARY_DIR}/source/source_io/build_info.h") + +configure_file( + ${BUILD_INFO_TEMPLATE} + ${BUILD_INFO_OUTPUT} + @ONLY +) + + # add_library(BuildInfo::Headers INTERFACE IMPORTED GLOBAL) + # target_include_directories(BuildInfo::Headers + # INTERFACE + # ${CMAKE_BINARY_DIR}/source/source_io + # ) + + message(STATUS "Build info header configured: ${BUILD_INFO_OUTPUT}") +endfunction() diff --git a/cmake/CollectBuildInfoVars.cmake b/cmake/CollectBuildInfoVars.cmake new file mode 100644 index 0000000000..79e925af1d --- /dev/null +++ b/cmake/CollectBuildInfoVars.cmake @@ -0,0 +1,416 @@ +# ============================================================================= +# This script is included to set all build information variables in the +# calling scope. It does not use a function to avoid variable scope issues. +# ============================================================================== + +# --- 1. Collect Basic Build Information --- +if(NOT CMAKE_BUILD_TYPE) + set(ABACUS_BUILD_TYPE "Custom (no CMAKE_BUILD_TYPE)") +else() + set(ABACUS_BUILD_TYPE ${CMAKE_BUILD_TYPE}) +endif() +if(DEFINED ENV{USER}) + set(ABACUS_BUILD_USER "$ENV{USER}") +else() + set(ABACUS_BUILD_USER "Unknown") +endif() +site_name(ABACUS_BUILD_HOST) +set(ABACUS_CXX_COMPILER_ID ${CMAKE_CXX_COMPILER_ID}) +set(ABACUS_CXX_COMPILER_PATH ${CMAKE_CXX_COMPILER}) +set(ABACUS_CXX_COMPILER_VERSION ${CMAKE_CXX_COMPILER_VERSION}) +set(TEMP_CXX_FLAGS_LIST "${CMAKE_CXX_FLAGS}") +#if(DEFINED CMAKE_BUILD_TYPE) +# string(TOUPPER ${CMAKE_BUILD_TYPE} CMAKE_BUILD_TYPE_UPPER) +# list(APPEND TEMP_CXX_FLAGS_LIST "${CMAKE_CXX_FLAGS_${CMAKE_BUILD_TYPE_UPPER}}") +#endif() +string(REPLACE ";" " " ABACUS_CXX_FLAGS "${TEMP_CXX_FLAGS_LIST}") +set(TEMP_LINKER_FLAGS_LIST "${CMAKE_EXE_LINKER_FLAGS}") +#if(DEFINED CMAKE_BUILD_TYPE) +# string(TOUPPER ${CMAKE_BUILD_TYPE} CMAKE_BUILD_TYPE_UPPER) +# list(APPEND TEMP_LINKER_FLAGS_LIST "${CMAKE_EXE_LINKER_FLAGS_${CMAKE_BUILD_TYPE_UPPER}}") +#endif() +string(REPLACE ";" " " ABACUS_LINKER_FLAGS "${TEMP_LINKER_FLAGS_LIST}") +set(TEMP_CUDA_FLAGS_LIST "${CMAKE_EXE_CUDA_FLAGS}") +string(REPLACE ";" " " ABACUS_CUDA_FLAGS "${TEMP_CUDA_FLAGS_LIST}") + +# --- 2. Determine Target Platform --- +if(USE_DSP) + set(ABACUS_PLATFORM_NAME "DSP") +elseif(USE_SW) + set(ABACUS_PLATFORM_NAME "CPU + SW-MATH") +elseif(USE_CUDA_ON_DCU) + set(ABACUS_PLATFORM_NAME "CPU + DCU (Hygon CUDA)") +elseif(USE_CUDA) + set(ABACUS_PLATFORM_NAME "CPU + NVIDIA CUDA") +elseif(USE_ROCM) + set(ABACUS_PLATFORM_NAME "CPU + AMD ROCm") +else() + set(ABACUS_PLATFORM_NAME "CPU") +endif() + +# --- 3. Sanitizers & Debugging --- +if(ENABLE_ASAN) + set(ABACUS_ASAN_STATUS "yes") +else() + set(ABACUS_ASAN_STATUS "no") +endif() +if(CMAKE_BUILD_TYPE STREQUAL "Debug") + set(ABACUS_DEBUG_SYMBOLS "yes") +else() + set(ABACUS_DEBUG_SYMBOLS "no") +endif() + +# --- 4. Get Dependency Versions (Enhanced with path fallback) --- +# MPI Implementation and Version +set(ABACUS_MPI_IMPLEMENTATION "no") +set(ABACUS_MPI_VERSION "no") +set(ABACUS_CUDA_AWARE_MPI "no") +if(ENABLE_MPI) + execute_process(COMMAND ${MPI_CXX_COMPILER} --version OUTPUT_VARIABLE MPI_VERSION_OUTPUT OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET) + if(MPI_VERSION_OUTPUT MATCHES "Intel") + set(ABACUS_MPI_IMPLEMENTATION "Intel MPI") + string(REGEX MATCH "Intel\\(R\\) oneAPI DPC\\+\\+/C\\+\\+ Compiler ([0-9]+\\.[0-9]+\\.[0-9]+)" _ "${MPI_VERSION_OUTPUT}") + if(CMAKE_MATCH_1) + set(MPI_DETECTED_VERSION "${CMAKE_MATCH_1}") + else() + string(REGEX MATCH "icpc \\(ICC\\) ([0-9]+\\.[0-9]+\\.[0-9]+)" _ "${MPI_VERSION_OUTPUT}") + if(CMAKE_MATCH_1) + set(MPI_DETECTED_VERSION "${CMAKE_MATCH_1}") + endif() + endif() + elseif(MPI_VERSION_OUTPUT MATCHES "Open MPI") + set(ABACUS_MPI_IMPLEMENTATION "OpenMPI") + elseif(MPI_VERSION_OUTPUT MATCHES "MPICH") + set(ABACUS_MPI_IMPLEMENTATION "MPICH") + else() + set(ABACUS_MPI_IMPLEMENTATION "Unknown") + endif() + # Fallback: try mpirun/mpiexec + if(NOT MPI_DETECTED_VERSION) + find_program(MPIRUN_EXECUTABLE mpirun) + if(MPIRUN_EXECUTABLE) + execute_process(COMMAND ${MPIRUN_EXECUTABLE} --version OUTPUT_VARIABLE MPIRUN_VERSION_OUTPUT OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET) + if(MPIRUN_VERSION_OUTPUT MATCHES "Open MPI") + set(ABACUS_MPI_IMPLEMENTATION "OpenMPI") + string(REGEX MATCH "Open MPI ([0-9]+\\.[0-9]+\\.[0-9]+)" _ "${MPIRUN_VERSION_OUTPUT}") + if(CMAKE_MATCH_1) + set(MPI_DETECTED_VERSION "${CMAKE_MATCH_1}") + endif() + elseif(MPIRUN_VERSION_OUTPUT MATCHES "MPICH") + set(ABACUS_MPI_IMPLEMENTATION "MPICH") + string(REGEX MATCH "MPICH Version: ([0-9]+\\.[0-9]+\\.[0-9]+)" _ "${MPIRUN_VERSION_OUTPUT}") + if(CMAKE_MATCH_1) + set(MPI_DETECTED_VERSION "${CMAKE_MATCH_1}") + endif() + endif() + endif() + endif() + if(MPI_DETECTED_VERSION) + set(ABACUS_MPI_VERSION "yes (v${MPI_DETECTED_VERSION})") + elseif(MPI_VERSION) + set(ABACUS_MPI_VERSION "yes (v${MPI_VERSION})") + else() + set(ABACUS_MPI_VERSION "yes (version unknown)") + endif() + if(USE_CUDA) + # OpenMPI hint + find_program(OMPI_INFO_EXECUTABLE ompi_info) + if(OMPI_INFO_EXECUTABLE) + execute_process(COMMAND ${OMPI_INFO_EXECUTABLE} --parsable --all OUTPUT_VARIABLE OMPI_INFO_OUT OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET) + if(OMPI_INFO_OUT MATCHES "mpi_built_with_cuda_support:value:true") + set(ABACUS_CUDA_AWARE_MPI "yes") + else() + set(ABACUS_CUDA_AWARE_MPI "no (or undetectable)") + endif() + else() + execute_process(COMMAND ${MPI_CXX_COMPILER} -showme:compile OUTPUT_VARIABLE MPI_COMPILE_FLAGS OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET) + if(MPI_COMPILE_FLAGS MATCHES "cuda" OR MPI_COMPILE_FLAGS MATCHES "CUDA") + set(ABACUS_CUDA_AWARE_MPI "yes (likely)") + else() + set(ABACUS_CUDA_AWARE_MPI "no (or undetectable)") + endif() + endif() + else() + set(ABACUS_CUDA_AWARE_MPI "no (CUDA not enabled)") + endif() +endif() + +# OpenMP Version +if(USE_OPENMP AND OpenMP_CXX_VERSION) + set(ABACUS_OPENMP_VERSION "yes (v${OpenMP_CXX_VERSION})") +elseif(USE_OPENMP) + set(ABACUS_OPENMP_VERSION "yes (version unknown)") +else() + set(ABACUS_OPENMP_VERSION "no") +endif() + +# Core Math Libraries +if(ENABLE_LCAO AND USE_ELPA) + set(ABACUS_ELPA_VERSION "yes (version unknown)") + if(ELPA_VERSION) + set(ABACUS_ELPA_VERSION "yes (v${ELPA_VERSION})") + else() + find_program(ELPA_VERSION_EXE elpa2_print_version PATHS ${ELPA_DIR}/bin NO_DEFAULT_PATH) + if(ELPA_VERSION_EXE) + execute_process(COMMAND ${ELPA_VERSION_EXE} OUTPUT_VARIABLE ELPA_VER_RAW OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET) + if(ELPA_VER_RAW) + set(ABACUS_ELPA_VERSION "yes (${ELPA_VER_RAW})") +endif() + endif() + endif() + if(ABACUS_ELPA_VERSION STREQUAL "yes (version unknown)" AND ELPA_DIR) + set(ABACUS_ELPA_VERSION "yes (path: ${ELPA_DIR})") + endif() +else() + set(ABACUS_ELPA_VERSION "no") +endif() + +if(MKLROOT) + set(ABACUS_MKL_SUPPORT "yes (version unknown)") + find_path(MKL_VERSION_HEADER mkl_version.h PATHS ${MKL_INCLUDE} NO_DEFAULT_PATH) + if(MKL_VERSION_HEADER) + file(STRINGS "${MKL_VERSION_HEADER}" MKL_VERSION_LINE REGEX "^#define INTEL_MKL_VERSION [0-9]+") + string(REGEX REPLACE "^#define INTEL_MKL_VERSION ([0-9]+)" "\\1" MKL_VER_NUM "${MKL_VERSION_LINE}") + if(MKL_VER_NUM) + math(EXPR MKL_MAJOR "${MKL_VER_NUM} / 10000") + math(EXPR MKL_MINOR "(${MKL_VER_NUM} % 10000) / 100") + math(EXPR MKL_PATCH "${MKL_VER_NUM} % 100") + set(ABACUS_MKL_SUPPORT "yes (v${MKL_MAJOR}.${MKL_MINOR}.${MKL_PATCH})") + endif() + endif() +else() + set(ABACUS_MKL_SUPPORT "no") +endif() + +if(ENABLE_LIBXC AND Libxc_VERSION) + set(ABACUS_LIBXC_VERSION "yes (v${Libxc_VERSION})") +elseif(ENABLE_LIBXC) + set(ABACUS_LIBXC_VERSION "yes (path: ${Libxc_DIR})") +else() + set(ABACUS_LIBXC_VERSION "no") +endif() + +if(NOT USE_SW AND NOT MKLROOT AND FFTW3_VERSION) + set(ABACUS_FFTW_VERSION "yes (v${FFTW3_VERSION})") +elseif(NOT USE_SW AND NOT MKLROOT) + if(FFTW3_INCLUDE_DIR AND EXISTS "${FFTW3_INCLUDE_DIR}/fftw3.h") + file(STRINGS "${FFTW3_INCLUDE_DIR}/fftw3.h" _fftw_ver_line REGEX "^#define[\t ]+FFTW_VERSION[\t ]+\"[^\"]+\"") + if(_fftw_ver_line) + string(REGEX REPLACE "^#define[\t ]+FFTW_VERSION[\t ]+\"([^\"]+)\"" "\\1" FFTW3_VERSION "${_fftw_ver_line}") + set(ABACUS_FFTW_VERSION "yes (v${FFTW3_VERSION})") + else() + set(ABACUS_FFTW_VERSION "yes (version unknown)") + endif() + else() + set(ABACUS_FFTW_VERSION "yes (version unknown)") + endif() +else() + set(ABACUS_FFTW_VERSION "no (using MKL or SW)") +endif() + +# Cereal Version (Enhanced) +if(ENABLE_LCAO) + set(ABACUS_CEREAL_VERSION "yes (version unknown)") + if(NOT CEREAL_INCLUDE_DIR) + find_path(CEREAL_INCLUDE_DIR cereal/version.hpp) + endif() + if(CEREAL_INCLUDE_DIR AND EXISTS "${CEREAL_INCLUDE_DIR}/cereal/version.hpp") + file(STRINGS "${CEREAL_INCLUDE_DIR}/cereal/version.hpp" CEREAL_MAJOR_LINE REGEX "^#define CEREAL_VERSION_MAJOR") + file(STRINGS "${CEREAL_INCLUDE_DIR}/cereal/version.hpp" CEREAL_MINOR_LINE REGEX "^#define CEREAL_VERSION_MINOR") + file(STRINGS "${CEREAL_INCLUDE_DIR}/cereal/version.hpp" CEREAL_PATCH_LINE REGEX "^#define CEREAL_VERSION_PATCH") + string(REGEX REPLACE "^#define CEREAL_VERSION_MAJOR +([0-9]+).*" "\\1" CEREAL_MAJOR "${CEREAL_MAJOR_LINE}") + string(REGEX REPLACE "^#define CEREAL_VERSION_MINOR +([0-9]+).*" "\\1" CEREAL_MINOR "${CEREAL_MINOR_LINE}") + string(REGEX REPLACE "^#define CEREAL_VERSION_PATCH +([0-9]+).*" "\\1" CEREAL_PATCH "${CEREAL_PATCH_LINE}") + if(CEREAL_MAJOR AND CEREAL_MINOR AND CEREAL_PATCH) + set(ABACUS_CEREAL_VERSION "yes (v${CEREAL_MAJOR}.${CEREAL_MINOR}.${CEREAL_PATCH})") + endif() + endif() + if(ABACUS_CEREAL_VERSION STREQUAL "yes (version unknown)" AND CEREAL_INCLUDE_DIR) + set(ABACUS_CEREAL_VERSION "yes (path: ${CEREAL_INCLUDE_DIR})") + endif() +else() + set(ABACUS_CEREAL_VERSION "no") +endif() + +# Accelerators +if(USE_CUDA AND CUDAToolkit_VERSION) + set(ABACUS_CUDA_VERSION "yes (v${CUDAToolkit_VERSION})") +elseif(USE_CUDA) + set(ABACUS_CUDA_VERSION "yes (version unknown)") +else() + set(ABACUS_CUDA_VERSION "no") +endif() + +if(USE_ROCM) + set(ABACUS_ROCM_VERSION "yes (version unknown)") + if(HIP_VERSION) + set(ABACUS_ROCM_VERSION "yes (v${HIP_VERSION})") + else() + find_program(HIPCC_EXECUTABLE hipcc) + if(HIPCC_EXECUTABLE) + execute_process(COMMAND ${HIPCC_EXECUTABLE} --version OUTPUT_VARIABLE HIPCC_VERSION_OUTPUT OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET) + string(REGEX MATCH "HIP version: ([0-9]+\\.[0-9]+\\.[0-9]+)" _ "${HIPCC_VERSION_OUTPUT}") + if(CMAKE_MATCH_1) + set(ABACUS_ROCM_VERSION "yes (v${CMAKE_MATCH_1})") +endif() + endif() + endif() + if(ABACUS_ROCM_VERSION STREQUAL "yes (version unknown)" AND ROCM_PATH) + set(ABACUS_ROCM_VERSION "yes (path: ${ROCM_PATH})") + endif() +else() + set(ABACUS_ROCM_VERSION "no") +endif() + +if(DEFINED CAL_CUSOLVERMP_PATH AND ENABLE_CUSOLVERMP) + set(ABACUS_CUSOLVERMP_VERSION "yes (path: ${CAL_CUSOLVERMP_PATH})") +elseif(ENABLE_CUSOLVERMP) + set(ABACUS_CUSOLVERMP_VERSION "yes (version unknown)") +else() + set(ABACUS_CUSOLVERMP_VERSION "no") +endif() + +# EXX Libraries +if(ENABLE_LIBRI) + set(ABACUS_LIBRI_VERSION "yes (version unknown)") + set(LIBRI_VERSION_HEADER "${LIBRI_DIR}/include/RI/version.h") + if(EXISTS ${LIBRI_VERSION_HEADER}) + file(STRINGS "${LIBRI_VERSION_HEADER}" LIBRI_MAJOR_LINE REGEX "__LIBRI_VERSION_MAJOR") + file(STRINGS "${LIBRI_VERSION_HEADER}" LIBRI_MINOR_LINE REGEX "__LIBRI_VERSION_MINOR") + file(STRINGS "${LIBRI_VERSION_HEADER}" LIBRI_PATCH_LINE REGEX "__LIBRI_VERSION_PATCH") + string(REGEX MATCH "([0-9]+)" LIBRI_MAJOR "${LIBRI_MAJOR_LINE}") + string(REGEX MATCH "([0-9]+)" LIBRI_MINOR "${LIBRI_MINOR_LINE}") + string(REGEX MATCH "([0-9]+)" LIBRI_PATCH "${LIBRI_PATCH_LINE}") + if(LIBRI_MAJOR AND LIBRI_MINOR AND LIBRI_PATCH) + set(ABACUS_LIBRI_VERSION "yes (v${LIBRI_MAJOR}.${LIBRI_MINOR}.${LIBRI_PATCH})") + endif() + endif() + if(ABACUS_LIBRI_VERSION STREQUAL "yes (version unknown)" AND LIBRI_DIR) + set(ABACUS_LIBRI_VERSION "yes (path: ${LIBRI_DIR})") + endif() +else() + set(ABACUS_LIBRI_VERSION "no") +endif() + +if(ENABLE_LIBCOMM AND LIBCOMM_DIR) + set(ABACUS_LIBCOMM_VERSION "yes (path: ${LIBCOMM_DIR})") +elseif(ENABLE_LIBCOMM) + set(ABACUS_LIBCOMM_VERSION "yes (version unknown)") +else() + set(ABACUS_LIBCOMM_VERSION "no") +endif() + +# ML & AI Libraries +if((DEFINED Torch_DIR OR ENABLE_MLALGO) AND Torch_VERSION) + set(ABACUS_LIBTORCH_VERSION "yes (v${Torch_VERSION})") +elseif(DEFINED Torch_DIR OR ENABLE_MLALGO) + set(ABACUS_LIBTORCH_VERSION "yes (path: ${Torch_DIR})") +else() + set(ABACUS_LIBTORCH_VERSION "no") +endif() + +if(DEFINED DeePMD_DIR) + set(ABACUS_DEEPMD_VERSION "yes (version unknown)") + set(DEEPMD_VERSION_HEADER "${DeePMD_DIR}/include/deepmd/version.h") + if(EXISTS ${DEEPMD_VERSION_HEADER}) + file(STRINGS "${DEEPMD_VERSION_HEADER}" DEEPMD_VERSION_LINE REGEX "global_install_prefix") + if(DEEPMD_VERSION_LINE) + string(REGEX MATCH "global_install_prefix=\".*deepmd-kit-([0-9]+\\.[0-9]+\\.[0-9]+)\"" _ "${DEEPMD_VERSION_LINE}") + if(CMAKE_MATCH_1) + set(ABACUS_DEEPMD_VERSION "yes (v${CMAKE_MATCH_1})") +endif() + endif() + endif() + if(ABACUS_DEEPMD_VERSION STREQUAL "yes (version unknown)") + set(ABACUS_DEEPMD_VERSION "yes (path: ${DeePMD_DIR})") + endif() +else() + set(ABACUS_DEEPMD_VERSION "no") +endif() + +if(DEFINED NEP_DIR AND NEP_VERSION) + set(ABACUS_NEP_VERSION "yes (v${NEP_VERSION})") +elseif(DEFINED NEP_DIR) + set(ABACUS_NEP_VERSION "yes (path: ${NEP_DIR})") +else() + set(ABACUS_NEP_VERSION "no") +endif() + +if(DEFINED TensorFlow_DIR) + set(ABACUS_TENSORFLOW_VERSION "yes (path: ${TensorFlow_DIR})") +else() + set(ABACUS_TENSORFLOW_VERSION "no") +endif() + +# Testing & Other Libraries +if(BUILD_TESTING) + set(ABACUS_GTEST_VERSION "yes (from git origin/main)") +else() + set(ABACUS_GTEST_VERSION "no") +endif() + +if(ENABLE_GOOGLEBENCH) + set(ABACUS_GOOGLEBENCH_VERSION "yes (from git origin/main)") +else() + set(ABACUS_GOOGLEBENCH_VERSION "no") +endif() + +if(DEFINED RapidJSON_DIR AND ENABLE_RAPIDJSON) + set(ABACUS_RAPIDJSON_VERSION "yes (path: ${RapidJSON_DIR})") +elseif(ENABLE_RAPIDJSON) + set(ABACUS_RAPIDJSON_VERSION "yes (from git origin/master)") +else() + set(ABACUS_RAPIDJSON_VERSION "no") +endif() + +if(ENABLE_MLALGO) + set(ABACUS_LIBNPY_VERSION "yes (path: ${libnpy_SOURCE_DIR})") +else() + set(ABACUS_LIBNPY_VERSION "no") +endif() + +if(ENABLE_PEXSI) + set(ABACUS_PEXSI_VERSION "yes (version unknown)") + if(PEXSI_VERSION) + set(ABACUS_PEXSI_VERSION "yes (v${PEXSI_VERSION})") + elseif(PEXSI_DIR) + set(ABACUS_PEXSI_VERSION "yes (path: ${PEXSI_DIR})") + endif() +else() + set(ABACUS_PEXSI_VERSION "no") +endif() + +if(ENABLE_CNPY) + set(ABACUS_CNPY_VERSION "yes (path: ${cnpy_SOURCE_DIR})") +else() + set(ABACUS_CNPY_VERSION "no") +endif() + +# --- 5. Collect CMake Configuration Summary --- +set(ABACUS_CMAKE_OPTIONS "Build Options:") +list(APPEND CMAKE_OPTIONS_LIST " ENABLE_MPI=${ENABLE_MPI}") +list(APPEND CMAKE_OPTIONS_LIST " USE_OPENMP=${USE_OPENMP}") +list(APPEND CMAKE_OPTIONS_LIST " USE_CUDA=${USE_CUDA}") +list(APPEND CMAKE_OPTIONS_LIST " USE_ROCM=${USE_ROCM}") +list(APPEND CMAKE_OPTIONS_LIST " ENABLE_LCAO=${ENABLE_LCAO}") +list(APPEND CMAKE_OPTIONS_LIST " USE_ELPA=${USE_ELPA}") +list(APPEND CMAKE_OPTIONS_LIST " ENABLE_LIBXC=${ENABLE_LIBXC}") +list(APPEND CMAKE_OPTIONS_LIST " ENABLE_MLALGO=${ENABLE_MLALGO}") +list(APPEND CMAKE_OPTIONS_LIST " ENABLE_ASAN=${ENABLE_ASAN}") +list(APPEND CMAKE_OPTIONS_LIST " BUILD_TESTING=${BUILD_TESTING}") +foreach(option_line ${CMAKE_OPTIONS_LIST}) + set(ABACUS_CMAKE_OPTIONS "${ABACUS_CMAKE_OPTIONS}${option_line}") +endforeach() + +set(ABACUS_CMAKE_FIND_PACKAGES "FindPackage Results:") +list(APPEND CMAKE_FIND_PACKAGES_LIST " MPI Found=${MPI_FOUND}") +list(APPEND CMAKE_FIND_PACKAGES_LIST " OpenMP Found=${OpenMP_CXX_FOUND}") +list(APPEND CMAKE_FIND_PACKAGES_LIST " CUDA Found=${CUDA_FOUND}") +list(APPEND CMAKE_FIND_PACKAGES_LIST " ROCm Found=${ROCM_FOUND}") +list(APPEND CMAKE_FIND_PACKAGES_LIST " ELPA Found=${ELPA_FOUND}") +list(APPEND CMAKE_FIND_PACKAGES_LIST " Libxc Found=${Libxc_FOUND}") +list(APPEND CMAKE_FIND_PACKAGES_LIST " PEXSI Found=${PEXSI_FOUND}") +list(APPEND CMAKE_FIND_PACKAGES_LIST " LibRI Found=${LIBRI_FOUND}") +foreach(package_line ${CMAKE_FIND_PACKAGES_LIST}) + set(ABACUS_CMAKE_FIND_PACKAGES "${ABACUS_CMAKE_FIND_PACKAGES}${package_line}") +endforeach() diff --git a/cmake/FindCereal.cmake b/cmake/FindCereal.cmake index 3486cffdec..801420a491 100644 --- a/cmake/FindCereal.cmake +++ b/cmake/FindCereal.cmake @@ -15,7 +15,7 @@ if(NOT CEREAL_INCLUDE_DIR) include(FetchContent) FetchContent_Declare( cereal - URL https://codeload.github.com/USCiLab/cereal/tar.gz/master + URL https://codeload.github.com/MCresearch/cereal/tar.gz/master ) FetchContent_Populate(cereal) set(CEREAL_INCLUDE_DIR ${cereal_SOURCE_DIR}/include) diff --git a/cmake/FindFFTW3.cmake b/cmake/FindFFTW3.cmake index 7ae0b7a2ab..b79f97013c 100644 --- a/cmake/FindFFTW3.cmake +++ b/cmake/FindFFTW3.cmake @@ -49,6 +49,14 @@ if(FFTW3_FOUND) set(FFTW3_INCLUDE_DIRS ${FFTW3_INCLUDE_DIR}) + # Try to extract FFTW version from header + if(FFTW3_INCLUDE_DIR AND EXISTS "${FFTW3_INCLUDE_DIR}/fftw3.h") + file(STRINGS "${FFTW3_INCLUDE_DIR}/fftw3.h" _fftw_ver_line REGEX "^#define[\t ]+FFTW_VERSION[\t ]+\"[^\"]+\"") + if(_fftw_ver_line) + string(REGEX REPLACE "^#define[\t ]+FFTW_VERSION[\t ]+\"([^\"]+)\"" "\\1" FFTW3_VERSION "${_fftw_ver_line}") + endif() + endif() + if(NOT TARGET FFTW3::FFTW3) add_library(FFTW3::FFTW3 UNKNOWN IMPORTED) set_target_properties(FFTW3::FFTW3 PROPERTIES diff --git a/cmake/FindLibRI.cmake b/cmake/FindLibRI.cmake index b8f060a483..7fd62718c7 100644 --- a/cmake/FindLibRI.cmake +++ b/cmake/FindLibRI.cmake @@ -16,7 +16,7 @@ if(NOT LIBRI_DIR) include(FetchContent) FetchContent_Declare( LibRI - URL https://github.com/abacusmodeling/LibRI/archive/refs/tags/v0.2.1.1.tar.gz + URL https://codeload.github.com/abacusmodeling/LibRI//tar.gz/v0.2.1.1 ) FetchContent_Populate(LibRI) set(LIBRI_DIR ${libri_SOURCE_DIR}) diff --git a/cmake/FindMKL.cmake b/cmake/FindMKL.cmake index a0c389b5ae..1036a90b87 100644 --- a/cmake/FindMKL.cmake +++ b/cmake/FindMKL.cmake @@ -4,7 +4,7 @@ # MKL_INCLUDE - where to find mkl.h, etc. # MKL_FOUND - True if mkl found. -find_package(MKL NO_MODULE) # try using official module first +# find_package(MKL NO_MODULE) # try using official module first if(NOT TARGET MKL::MKL) find_path(MKL_INCLUDE mkl_service.h HINTS ${MKLROOT}/include) @@ -12,6 +12,10 @@ find_path(MKL_INCLUDE mkl_service.h HINTS ${MKLROOT}/include) find_library(MKL_INTEL NAMES mkl_intel_lp64 HINTS ${MKLROOT}/lib ${MKLROOT}/lib/intel64) find_library(MKL_INTEL_THREAD NAMES mkl_intel_thread HINTS ${MKLROOT}/lib ${MKLROOT}/lib/intel64) find_library(MKL_CORE NAMES mkl_core HINTS ${MKLROOT}/lib ${MKLROOT}/lib/intel64) +find_library(MKL_IOMP5 NAMES iomp5 + HINTS ENV CMPLR_ROOT + PATH_SUFFIXES lib lib/intel64 linux/compiler/lib/intel64_lin +) if(ENABLE_MPI) find_library(MKL_SCALAPACK NAMES mkl_scalapack_lp64 HINTS ${MKLROOT}/lib ${MKLROOT}/lib/intel64) find_library(MKL_BLACS_INTELMPI NAMES mkl_blacs_intelmpi_lp64 HINTS ${MKLROOT}/lib ${MKLROOT}/lib/intel64) @@ -58,6 +62,11 @@ if(MKL_FOUND) IMPORTED_LOCATION "${MKL_BLACS_INTELMPI}" INTERFACE_INCLUDE_DIRECTORIES "${MKL_INCLUDE}") endif() + if(MKL_IOMP5 AND NOT TARGET MKL::IOMP5) + add_library(MKL::IOMP5 UNKNOWN IMPORTED) + set_target_properties(MKL::IOMP5 PROPERTIES + IMPORTED_LOCATION "${MKL_IOMP5}") + endif() add_library(MKL::MKL INTERFACE IMPORTED) if (ENABLE_MPI) set_property(TARGET MKL::MKL PROPERTY @@ -70,7 +79,13 @@ if(MKL_FOUND) set_property(TARGET MKL::MKL PROPERTY INTERFACE_LINK_LIBRARIES "-Wl,--start-group" - MKL::INTEL MKL::INTEL_THREAD MKL::CORE) + MKL::INTEL MKL::INTEL_THREAD MKL::CORE + "-Wl,--end-group" + ) + endif() + if(TARGET MKL::IOMP5) + set_property(TARGET MKL::MKL APPEND PROPERTY + INTERFACE_LINK_LIBRARIES MKL::IOMP5) endif() endif() @@ -91,5 +106,12 @@ endif() if(NOT TARGET MKL::MKL_SCALAPACK) find_library(MKL_SCALAPACK NAMES mkl_scalapack_lp64 HINTS ${MKLROOT}/lib ${MKLROOT}/lib/intel64) message(STATUS "Found MKL_SCALAPACK: ${MKL_SCALAPACK}") - add_library(MKL::MKL_SCALAPACK OBJECT IMPORTED MKL_SCALAPACK) + if(MKL_SCALAPACK) + # create an IMPORTED target that points to the discovered library file + add_library(MKL::MKL_SCALAPACK UNKNOWN IMPORTED) + set_target_properties(MKL::MKL_SCALAPACK PROPERTIES + IMPORTED_LOCATION "${MKL_SCALAPACK}" + INTERFACE_INCLUDE_DIRECTORIES "${MKL_INCLUDE}" + ) + endif() endif() diff --git a/cmake/FindNEP.cmake b/cmake/FindNEP.cmake new file mode 100644 index 0000000000..e20734f5c0 --- /dev/null +++ b/cmake/FindNEP.cmake @@ -0,0 +1,49 @@ +############################################################################### +# - Find NEP +# Finds the NEP header and library. +# +# This module will search for the NEP library, looking for a hint +# from the NEP_DIR environment variable or CMake variable. +# +# This module defines the following variables: +# +# NEP_FOUND - True if the NEP library and headers were found. +# NEP_INCLUDE_DIR - The directory where nep.h is located. +# NEP_LIBRARY - The full path to the NEP library. +# +# It also defines the following imported target: +# +# NEP::nep - The NEP library target. +# +############################################################################### +# Note: Currently only CPU version is supported, Since the NEP interface with GPU support is not available yet. +# In feature, if available, we can use USE_CUDA to switch between CPU and GPU version. + +find_path(NEP_INCLUDE_DIR nep.h + HINTS ${NEP_DIR} + PATH_SUFFIXES "include" + ) + +find_library(NEP_LIBRARY + NAMES nep + HINTS ${NEP_DIR} + PATH_SUFFIXES "lib" + ) + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(NEP + DEFAULT_MSG + NEP_LIBRARY NEP_INCLUDE_DIR) + +if(NEP_FOUND) + if(NOT TARGET NEP::nep) + add_library(NEP::nep UNKNOWN IMPORTED) + set_target_properties(NEP::nep PROPERTIES + IMPORTED_LINK_INTERFACE_LANGUAGES "C" + IMPORTED_LOCATION "${NEP_LIBRARY}" + INTERFACE_INCLUDE_DIRECTORIES "${NEP_INCLUDE_DIR}" + ) + endif() +endif() + +mark_as_advanced(NEP_INCLUDE_DIR NEP_LIBRARY) \ No newline at end of file diff --git a/cmake/SetupCuBlasMp.cmake b/cmake/SetupCuBlasMp.cmake new file mode 100644 index 0000000000..7937a02936 --- /dev/null +++ b/cmake/SetupCuBlasMp.cmake @@ -0,0 +1,78 @@ +# ============================================================================= +# Configure cuBLASMp dependencies and linking for ABACUS +# ============================================================================= + +include_guard(GLOBAL) + +function(abacus_setup_cublasmp target_name) + add_compile_definitions(__CUBLASMP) + + # 1. Search for cuBLASMp library and header files + # libcublasmp.so + find_library(CUBLASMP_LIBRARY NAMES cublasmp + HINTS ${CUBLASMP_PATH} ${NVHPC_ROOT_DIR} + PATH_SUFFIXES lib lib64 math_libs/lib math_libs/lib64) + + # cublasmp.h + find_path(CUBLASMP_INCLUDE_DIR NAMES cublasmp.h + HINTS ${CUBLASMP_PATH} ${NVHPC_ROOT_DIR} + PATH_SUFFIXES include math_libs/include) + + if(NOT CUBLASMP_LIBRARY OR NOT CUBLASMP_INCLUDE_DIR) + message(FATAL_ERROR + "cuBLASMp not found. Please ensure CUBLASMP_PATH is set correctly." + ) + endif() + + message(STATUS "Found cuBLASMp: ${CUBLASMP_LIBRARY}") + + # 2. Version validation by parsing header macros + set(CUBLASMP_VERSION_STR "") + set(CUBLASMP_VERSION_HEADER "${CUBLASMP_INCLUDE_DIR}/cublasmp.h") + + if(EXISTS "${CUBLASMP_VERSION_HEADER}") + # Extract version lines using regular expressions from cublasmp.h + file(STRINGS "${CUBLASMP_VERSION_HEADER}" CUBLASMP_MAJOR_LINE + REGEX "^#define[ \t]+CUBLASMP_VER_MAJOR[ \t]+[0-9]+") + file(STRINGS "${CUBLASMP_VERSION_HEADER}" CUBLASMP_MINOR_LINE + REGEX "^#define[ \t]+CUBLASMP_VER_MINOR[ \t]+[0-9]+") + file(STRINGS "${CUBLASMP_VERSION_HEADER}" CUBLASMP_PATCH_LINE + REGEX "^#define[ \t]+CUBLASMP_VER_PATCH[ \t]+[0-9]+") + + # Extract numeric values from the matched strings + string(REGEX MATCH "([0-9]+)" CUBLASMP_VER_MAJOR "${CUBLASMP_MAJOR_LINE}") + string(REGEX MATCH "([0-9]+)" CUBLASMP_VER_MINOR "${CUBLASMP_MINOR_LINE}") + string(REGEX MATCH "([0-9]+)" CUBLASMP_VER_PATCH "${CUBLASMP_PATCH_LINE}") + + if(NOT CUBLASMP_VER_MAJOR STREQUAL "" + AND NOT CUBLASMP_VER_MINOR STREQUAL "" + AND NOT CUBLASMP_VER_PATCH STREQUAL "") + set(CUBLASMP_VERSION_STR + "${CUBLASMP_VER_MAJOR}.${CUBLASMP_VER_MINOR}.${CUBLASMP_VER_PATCH}") + endif() + endif() + + message(STATUS "Detected cuBLASMp version: ${CUBLASMP_VERSION_STR}") + + # 3. Version constraint: ABACUS requires cuBLASMp >= 0.8.0 + if(CUBLASMP_VERSION_STR AND CUBLASMP_VERSION_STR VERSION_LESS "0.8.0") + message(FATAL_ERROR + "cuBLASMp version ${CUBLASMP_VERSION_STR} is too old. " + "ABACUS requires cuBLASMp >= 0.8.0 for NCCL Symmetric Memory support." + ) + elseif(NOT CUBLASMP_VERSION_STR) + message(WARNING "Could not detect cuBLASMp version. Proceeding cautiously.") + endif() + + # 4. Create cublasMp::cublasMp imported target + if(NOT TARGET cublasMp::cublasMp) + add_library(cublasMp::cublasMp IMPORTED INTERFACE) + set_target_properties(cublasMp::cublasMp PROPERTIES + INTERFACE_LINK_LIBRARIES "${CUBLASMP_LIBRARY};NCCL::NCCL" + INTERFACE_INCLUDE_DIRECTORIES "${CUBLASMP_INCLUDE_DIR}") + endif() + + # 5. Link the library to the target + target_link_libraries(${target_name} cublasMp::cublasMp) + +endfunction() diff --git a/cmake/SetupCuSolverMp.cmake b/cmake/SetupCuSolverMp.cmake new file mode 100644 index 0000000000..004665686b --- /dev/null +++ b/cmake/SetupCuSolverMp.cmake @@ -0,0 +1,139 @@ +# ============================================================================= +# Configure cuSOLVERMp dependencies and linking for ABACUS +# ============================================================================= + +include_guard(GLOBAL) + +function(abacus_setup_cusolvermp target_name) + add_compile_definitions(__CUSOLVERMP) + + # Find cuSOLVERMp first, then decide communicator backend. + find_library(CUSOLVERMP_LIBRARY NAMES cusolverMp + HINTS ${CAL_CUSOLVERMP_PATH} ${NVHPC_ROOT_DIR} + PATH_SUFFIXES lib lib64 math_libs/lib math_libs/lib64) + + find_path(CUSOLVERMP_INCLUDE_DIR NAMES cusolverMp.h + HINTS ${CAL_CUSOLVERMP_PATH} ${NVHPC_ROOT_DIR} + PATH_SUFFIXES include math_libs/include) + + if(NOT CUSOLVERMP_LIBRARY OR NOT CUSOLVERMP_INCLUDE_DIR) + message(FATAL_ERROR + "cuSOLVERMp not found. Set CUSOLVERMP_PATH or NVHPC_ROOT_DIR." + ) + endif() + + message(STATUS "Found cuSOLVERMp: ${CUSOLVERMP_LIBRARY}") + + set(CUSOLVERMP_VERSION_STR "") + set(CUSOLVERMP_VERSION_HEADER "${CUSOLVERMP_INCLUDE_DIR}/cusolverMp.h") + if(EXISTS "${CUSOLVERMP_VERSION_HEADER}") + file(STRINGS "${CUSOLVERMP_VERSION_HEADER}" CUSOLVERMP_MAJOR_LINE + REGEX "^#define[ \t]+CUSOLVERMP_VER_MAJOR[ \t]+[0-9]+") + file(STRINGS "${CUSOLVERMP_VERSION_HEADER}" CUSOLVERMP_MINOR_LINE + REGEX "^#define[ \t]+CUSOLVERMP_VER_MINOR[ \t]+[0-9]+") + file(STRINGS "${CUSOLVERMP_VERSION_HEADER}" CUSOLVERMP_PATCH_LINE + REGEX "^#define[ \t]+CUSOLVERMP_VER_PATCH[ \t]+[0-9]+") + string(REGEX MATCH "([0-9]+)" CUSOLVERMP_VER_MAJOR "${CUSOLVERMP_MAJOR_LINE}") + string(REGEX MATCH "([0-9]+)" CUSOLVERMP_VER_MINOR "${CUSOLVERMP_MINOR_LINE}") + string(REGEX MATCH "([0-9]+)" CUSOLVERMP_VER_PATCH "${CUSOLVERMP_PATCH_LINE}") + if(NOT CUSOLVERMP_VER_MAJOR STREQUAL "" + AND NOT CUSOLVERMP_VER_MINOR STREQUAL "" + AND NOT CUSOLVERMP_VER_PATCH STREQUAL "") + set(CUSOLVERMP_VERSION_STR + "${CUSOLVERMP_VER_MAJOR}.${CUSOLVERMP_VER_MINOR}.${CUSOLVERMP_VER_PATCH}") + endif() + endif() + + # Check minimum version requirement (>= 0.4.0) + if(CUSOLVERMP_VERSION_STR AND CUSOLVERMP_VERSION_STR VERSION_LESS "0.4.0") + message(FATAL_ERROR + "cuSOLVERMp version ${CUSOLVERMP_VERSION_STR} is too old. " + "ABACUS requires cuSOLVERMp >= 0.4.0 (NVIDIA HPC SDK >= 23.5). " + "Please upgrade your NVIDIA HPC SDK installation." + ) + endif() + + # Auto-select communicator backend by cuSOLVERMp version. + # cuSOLVERMp < 0.7.0 -> CAL, otherwise -> NCCL. + set(_use_cal OFF) + if(CUSOLVERMP_VERSION_STR AND CUSOLVERMP_VERSION_STR VERSION_LESS "0.7.0") + set(_use_cal ON) + message(STATUS + "Detected cuSOLVERMp ${CUSOLVERMP_VERSION_STR} (< 0.7.0). Using CAL backend.") + elseif(CUSOLVERMP_VERSION_STR) + message(STATUS + "Detected cuSOLVERMp ${CUSOLVERMP_VERSION_STR} (>= 0.7.0). Using NCCL backend.") + elseif(NOT CUSOLVERMP_VERSION_STR) + message(WARNING + "Unable to detect cuSOLVERMp version from header. Using NCCL backend by default.") + endif() + + # Raise the variable to the caller's scope + set(_use_cal ${_use_cal} PARENT_SCOPE) + + # Backend selection: + # - _use_cal=ON -> cal communicator backend + # - _use_cal=OFF -> NCCL communicator backend + if(_use_cal) + add_compile_definitions(__USE_CAL) + + find_library(CAL_LIBRARY NAMES cal + HINTS ${CAL_CUSOLVERMP_PATH} ${NVHPC_ROOT_DIR} + PATH_SUFFIXES lib lib64 math_libs/lib64) + find_path(CAL_INCLUDE_DIR NAMES cal.h + HINTS ${CAL_CUSOLVERMP_PATH} ${NVHPC_ROOT_DIR} + PATH_SUFFIXES include math_libs/include) + + if(NOT CAL_LIBRARY OR NOT CAL_INCLUDE_DIR) + message(FATAL_ERROR "CAL not found. Set CAL_PATH or NVHPC_ROOT_DIR.") + endif() + + message(STATUS "Found CAL: ${CAL_LIBRARY}") + if(NOT TARGET CAL::CAL) + add_library(CAL::CAL IMPORTED INTERFACE) + set_target_properties(CAL::CAL PROPERTIES + INTERFACE_LINK_LIBRARIES "${CAL_LIBRARY}" + INTERFACE_INCLUDE_DIRECTORIES "${CAL_INCLUDE_DIR}") + endif() + else() + + find_library(NCCL_LIBRARY NAMES nccl + HINTS ${NCCL_PATH} ${NVHPC_ROOT_DIR} + PATH_SUFFIXES lib lib64 comm_libs/nccl/lib) + find_path(NCCL_INCLUDE_DIR NAMES nccl.h + HINTS ${NCCL_PATH} ${NVHPC_ROOT_DIR} + PATHS ${CUDA_TOOLKIT_ROOT_DIR} + PATH_SUFFIXES include comm_libs/nccl/include) + + if(NOT NCCL_LIBRARY OR NOT NCCL_INCLUDE_DIR) + message(FATAL_ERROR "NCCL not found. Set NCCL_PATH or NVHPC_ROOT_DIR.") + endif() + + message(STATUS "Found NCCL: ${NCCL_LIBRARY}") + if(NOT TARGET NCCL::NCCL) + add_library(NCCL::NCCL IMPORTED INTERFACE) + set_target_properties(NCCL::NCCL PROPERTIES + INTERFACE_LINK_LIBRARIES "${NCCL_LIBRARY}" + INTERFACE_INCLUDE_DIRECTORIES "${NCCL_INCLUDE_DIR}") + endif() + endif() + + # Create cusolverMp::cusolverMp imported target + if(NOT TARGET cusolverMp::cusolverMp) + add_library(cusolverMp::cusolverMp IMPORTED INTERFACE) + set_target_properties(cusolverMp::cusolverMp PROPERTIES + INTERFACE_LINK_LIBRARIES "${CUSOLVERMP_LIBRARY}" + INTERFACE_INCLUDE_DIRECTORIES "${CUSOLVERMP_INCLUDE_DIR}") + endif() + + # === Link libraries === + if(_use_cal) + target_link_libraries(${target_name} + CAL::CAL + cusolverMp::cusolverMp) + else() + target_link_libraries(${target_name} + NCCL::NCCL + cusolverMp::cusolverMp) + endif() +endfunction() diff --git a/cmake/Testing.cmake b/cmake/Testing.cmake new file mode 100644 index 0000000000..551b1d7182 --- /dev/null +++ b/cmake/Testing.cmake @@ -0,0 +1,83 @@ +# ============================================================================= +# Setup Testing Environment (GTest, CTest, AddTest function) +# ============================================================================== + +# include_guard(GLOBAL) + +# --- Helper Macro: Ensure a minimum C++ standard version --- +macro(set_if_higher VARIABLE VALUE) + if(${VARIABLE} LESS ${VALUE}) + set(${VARIABLE} ${VALUE}) + endif() +endmacro() + +# Add performance test in abacus +if(ENABLE_GOOGLEBENCH) + set(BUILD_TESTING ON) + find_package(benchmark HINTS ${BENCHMARK_DIR}) + if(NOT ${benchmark_FOUND}) + set(BENCHMARK_USE_BUNDLED_GTEST OFF) + include(FetchContent) + FetchContent_Declare( + benchmark + GIT_REPOSITORY https://github.com/google/benchmark.git + GIT_TAG "origin/main" + GIT_SHALLOW TRUE + GIT_PROGRESS TRUE) + set(BENCHMARK_ENABLE_TESTING OFF) + FetchContent_MakeAvailable(benchmark) + endif() +endif() + + function(AddTest) # function for UT + cmake_parse_arguments(UT "DYN" "TARGET" + "LIBS;DYN_LIBS;STATIC_LIBS;SOURCES;DEPENDS" ${ARGN}) + add_executable(${UT_TARGET} ${UT_SOURCES}) + + if(ENABLE_COVERAGE) + add_coverage(${UT_TARGET}) + endif() + + # dependencies & link library + target_link_libraries(${UT_TARGET} ${UT_LIBS} Threads::Threads + GTest::gtest_main GTest::gmock_main) + if(ENABLE_GOOGLEBENCH) + target_link_libraries( + ${UT_TARGET} benchmark::benchmark) + endif() + + if(USE_OPENMP) + target_link_libraries(${UT_TARGET} OpenMP::OpenMP_CXX) + endif() + + # Link to build info if needed + if("${UT_SOURCES}" MATCHES "parse_args.cpp") + target_include_directories(${UT_TARGET} PUBLIC ${CMAKE_BINARY_DIR}/source/source_io) + endif() + + install(TARGETS ${UT_TARGET} DESTINATION ${CMAKE_BINARY_DIR}/tests) + add_test( + NAME ${UT_TARGET} + COMMAND ${UT_TARGET} + WORKING_DIRECTORY $) + endfunction(AddTest) + +if(BUILD_TESTING) + set_if_higher(CMAKE_CXX_STANDARD 14) # Required in orbital + include(CTest) + enable_testing() + find_package(GTest HINTS /usr/local/lib/ ${GTEST_DIR}) + if(NOT ${GTest_FOUND}) + include(FetchContent) + FetchContent_Declare( + googletest + GIT_REPOSITORY https://github.com/google/googletest.git + GIT_TAG "origin/main" + GIT_SHALLOW TRUE + GIT_PROGRESS TRUE) + FetchContent_MakeAvailable(googletest) + endif() + # TODO: Try the GoogleTest module. + # https://cmake.org/cmake/help/latest/module/GoogleTest.html + add_subdirectory(tests) # Contains integration tests +endif() diff --git a/docs/CITATIONS.md b/docs/CITATIONS.md index 5f2508f82a..a25cb3e596 100644 --- a/docs/CITATIONS.md +++ b/docs/CITATIONS.md @@ -14,7 +14,7 @@ The following references are required to be cited when using ABACUS. Specificall *For LCAO and PW basis:* - Weiqing Zhou, Deye Zheng, Qianrui Liu, et al. ABACUS: An Electronic Structure Analysis Package for the AI Era. arXiv preprint arXiv:2501.08697, 2025. + Weiqing Zhou, Daye Zheng, Qianrui Liu, et al. ABACUS: An Electronic Structure Analysis Package for the AI Era. arXiv preprint arXiv:2501.08697, 2025. - **If Stochastic DFT is used:** diff --git a/docs/CONTRIBUTING.md b/docs/CONTRIBUTING.md index 5ca40188b7..071e47df17 100644 --- a/docs/CONTRIBUTING.md +++ b/docs/CONTRIBUTING.md @@ -10,6 +10,7 @@ For more non-technical aspects, please refer to the [ABACUS Contribution Guide]( - [Structure of the package](#structure-of-the-package) - [Submitting an Issue](#submitting-an-issue) - [Comment style for documentation](#comment-style-for-documentation) +- [Documenting INPUT parameters](#documenting-input-parameters) - [Code formatting style](#code-formatting-style) - [Generating code coverage report](#generating-code-coverage-report) - [Adding a unit test](#adding-a-unit-test) @@ -156,6 +157,72 @@ An practical example is class [LCAO_Deepks](https://github.com/deepmodeling/abac \f} ``` +## Documenting INPUT Parameters + +ABACUS includes a built-in help system that allows users to query INPUT parameters directly from the command line (e.g., `abacus -h ecutwfc`). Parameter metadata is defined inline in the C++ source files (`source/source_io/module_parameter/read_input_item_*.cpp`) using `Input_Item` registrations. + +A checked-in file `docs/parameters.yaml` contains a YAML dump of all parameter metadata, generated from the binary itself. This file is used by Sphinx to produce the online documentation page `input-main.md`. + +### When to Update `docs/parameters.yaml` + +You **must** regenerate `docs/parameters.yaml` whenever you: + +- Add a new INPUT parameter +- Remove an existing INPUT parameter +- Change a parameter's description, type, default value, unit, category, or availability + +### How to Regenerate + +After building and installing ABACUS, run: + +```bash +abacus --generate-parameters-yaml > docs/parameters.yaml +``` + +Then verify the YAML is valid: + +```bash +python3 -c "import yaml; d=yaml.safe_load(open('docs/parameters.yaml')); print(len(d['parameters']), 'parameters')" +``` + +You can also regenerate the markdown documentation locally: + +```bash +python3 docs/generate_input_main.py docs/parameters.yaml --output docs/advanced/input_files/input-main.md +``` + +**Important:** Include the updated `docs/parameters.yaml` and `input-main.md` in your commit when submitting a PR that modifies INPUT parameters. Reviewers should verify the YAML changes match the C++ source changes and the `input-main.md` is updated. + +### Parameter Documentation Format + +When adding or modifying INPUT parameters in C++ source, set the following fields on the `Input_Item`: + +```cpp +{ + Input_Item item("my_parameter"); + item.category = "System variables"; + item.type = "Integer"; + item.description = "Description of what this parameter does."; + item.default_value = "0"; + item.unit = "Ry"; // Optional, empty string if no unit + item.availability = ""; // Optional, empty string if always available + // ... read_value, reset_value, check_value functions ... + this->add_item(item); +} +``` + +Supported types: `Integer`, `Real`, `String`, `Boolean` + +### Format Validation + +After regenerating the YAML, you can spot-check a specific parameter: + +```bash +./build/abacus -h my_parameter +``` + +This uses the same runtime registry that generates the YAML, so if the help output looks correct, the YAML will be correct too. + ## Code formatting style We use `clang-format` as our code formatter. The `.clang-format` file in root directory describes the rules to conform with. diff --git a/docs/advanced/acceleration/cuda.md b/docs/advanced/acceleration/cuda.md index 5a468e7fb4..64d4753275 100644 --- a/docs/advanced/acceleration/cuda.md +++ b/docs/advanced/acceleration/cuda.md @@ -37,7 +37,8 @@ The ABACUS program will automatically determine whether the current ELPA support In `INPUT` file we need to set the input parameter [device](../input_files/input-main.md#device) to `gpu`. If this parameter is not set, ABACUS will try to determine if there are available GPUs. - Set `ks_solver`: For the PW basis, CG, BPCG and Davidson methods are supported on GPU; set the input parameter [ks_solver](../input_files/input-main.md#ks_solver) to `cg`, `bpcg` or `dav`. For the LCAO basis, `cusolver`, `cusolvermp` and `elpa` is supported on GPU. -- **multi-card**: ABACUS allows for multi-GPU acceleration. If you have multiple GPU cards, you can run ABACUS with several MPI processes, and each process will utilize one GPU card. For example, the command `mpirun -n 2 abacus` will by default launch two GPUs for computation. If you only have one card, this command will only start one GPU. +- **single-card**: ABACUS allows for single-GPU acceleration. You can run ABACUS without any MPI process by command `abacus`, and `ks_solver cusolver` is recommended for the LCAO basis. *note: avoid using `mpirun -n 1 abacus`*. +- **multi-cards**: ABACUS allows for multi-GPU acceleration. If you have multiple GPU cards, you can run ABACUS with several MPI processes, and each process will utilize one GPU card. For example, the command `mpirun -n 2 abacus` will by default launch two GPUs for computation. If you only have one card, this command will only start one GPU. *note: the number of MPI processes SHOULD be equal to the number of GPU cards, unless you are using MPS in your computer.* ## Examples We provides [examples](https://github.com/deepmodeling/abacus-develop/tree/develop/examples/gpu) of gpu calculations. @@ -45,7 +46,7 @@ We provides [examples](https://github.com/deepmodeling/abacus-develop/tree/devel ## Known limitations PW basis: - Only k point parallelization is supported, so the input keyword `kpar` will be set to match the number of MPI tasks automatically. -- By default, CUDA architectures 60, 70, 75, 80, 86, and 89 are compiled (if supported). It can be overriden using the CMake variable [`CMAKE_CUDA_ARCHITECTURES`](https://cmake.org/cmake/help/latest/variable/CMAKE_CUDA_ARCHITECTURES.html) or the environmental variable [`CUDAARCHS`](https://cmake.org/cmake/help/latest/envvar/CUDAARCHS.html). +- By default, CUDA architectures are automatically selected based on the CUDA Toolkit version. For CUDA versions before 13.0, architectures 60, 70, 75, 80, 86, 89, and 90 are compiled (if supported by the CUDA version). For CUDA 13.0 and later, only architectures 75 and above are compiled, as CUDA 13 dropped support for older architectures. This can be overridden using the CMake variable [`CMAKE_CUDA_ARCHITECTURES`](https://cmake.org/cmake/help/latest/variable/CMAKE_CUDA_ARCHITECTURES.html) or the environmental variable [`CUDAARCHS`](https://cmake.org/cmake/help/latest/envvar/CUDAARCHS.html). LCAO basis: - Unless there is a specific reason, avoid using multiple GPUs, as it can be slower than using a single GPU. This is because the generalized eigenvalue solution of the LCAO basis set will incur additional communication overhead when calculated on multiple cards. When the memory limit of a GPU card makes it insufficient to complete the task, it is recommended to use multiple cards for calculation. diff --git a/docs/advanced/elec_properties/Mulliken.md b/docs/advanced/elec_properties/Mulliken.md index 4dcf69e08f..a34bca5d07 100644 --- a/docs/advanced/elec_properties/Mulliken.md +++ b/docs/advanced/elec_properties/Mulliken.md @@ -1,7 +1,7 @@ # Mulliken Charge Analysis From version 2.1.0, ABACUS has the function of Mulliken population analysis. The example can be found in [examples/mulliken](https://github.com/deepmodeling/abacus-develop/tree/develop/examples/mulliken). \ -To use this function, set [out_mul](./input-main.md#out_mul) to `1` in the INPUT file. After calculation, there will be an output file named `mulliken.txt` in the output directory. In MD calculations, the output interval is controlled by the keyword [out_interval](./input-main.md#out_interval). In the file, there are contents like (`nspin 1`): +To use this function, set [out_mul](./input-main.md#out_mul) to `1` in the INPUT file. After calculation, there will be an output file named `mulliken.txt` in the output directory. In MD calculations, the output interval is controlled by the keyword [out_freq_ion](./input-main.md#out_freq_ion). In the file, there are contents like (`nspin 1`): ``` STEP: 0 diff --git a/docs/advanced/elec_properties/density_matrix.md b/docs/advanced/elec_properties/density_matrix.md index bc293a617f..15b7ce9f44 100644 --- a/docs/advanced/elec_properties/density_matrix.md +++ b/docs/advanced/elec_properties/density_matrix.md @@ -38,3 +38,15 @@ The following line is dimension of the density matrix, and the rest lines are th The examples can be found in [examples/density_matrix](https://github.com/deepmodeling/abacus-develop/tree/develop/examples/density_matrix) - Note: now this function is valid only for LCAO gamma only calcualtion. + +## Real-space Density Matrix (CSR format) + +ABACUS can also output the real-space density matrix DM(R) in CSR (Compressed Sparse Row) format by setting: +``` +out_dmr 1 +``` +After the calculation, the density matrix files are written to `OUT.${suffix}/`: +- `nspin=1`: `dmrs1_nao.csr` +- `nspin=2` (spin-polarized): `dmrs1_nao.csr` (spin-up) and `dmrs2_nao.csr` (spin-down) + +These files can be used to restart calculations by setting `init_chg dm` in the INPUT file together with `read_file_dir` pointing to the directory containing the CSR files. This is supported for both `nspin=1` and `nspin=2`. diff --git a/docs/advanced/elec_properties/hs_matrix.md b/docs/advanced/elec_properties/hs_matrix.md index 2bfd807ad9..9e19121f00 100644 --- a/docs/advanced/elec_properties/hs_matrix.md +++ b/docs/advanced/elec_properties/hs_matrix.md @@ -45,7 +45,7 @@ The CSR format stores a sparse m × n matrix M in row form using three (one-dime - The arrays V and COL_INDEX are of length NNZ, and contain the non-zero values and the column indices of those values respectively. - The array ROW_INDEX is of length m + 1 and encodes the index in V and COL_INDEX where the given row starts. This is equivalent to ROW_INDEX[j] encoding the total number of nonzeros above row j. The last element is NNZ , i.e., the fictitious index in V immediately after the last valid index NNZ - 1. -For calculations involving ionic movements, the output frequency of the matrix is controlled by [out_interval](../input_files/input-main.md#out_interval) and [out_app_flag](../input_files/input-main.md#out_app_flag). +For calculations involving ionic movements, the output frequency of the matrix is controlled by [out_freq_ion](../input_files/input-main.md#out_freq_ion) and [out_app_flag](../input_files/input-main.md#out_app_flag). ## get_s We also offer the option of only calculating the overlap matrix without running SCF. For that purpose, in `INPUT` file we need to set the value keyword [calculation](../input_files/input-main.md#calculation) to be `get_s`. diff --git a/docs/advanced/elec_properties/position_matrix.md b/docs/advanced/elec_properties/position_matrix.md index 6920dc3f7d..c504a866b6 100644 --- a/docs/advanced/elec_properties/position_matrix.md +++ b/docs/advanced/elec_properties/position_matrix.md @@ -18,7 +18,7 @@ Each file or each section of the appended file starts with "STEP: " followed by Each block here contains the matrix for the corresponding cell. There are three columns in each block, giving the matrix elements in x, y, z directions, respectively. There are altogether nbasis * nbasis lines in each block, which emulates the matrix elements. -In molecular dynamics (MD) calculations, if [out_app_flag](../input_files/input-main.md#out_app_flag) is set to true, then `data-rR-tr` is written in an append manner. Otherwise, output files will be put in a separate directory, `matrix`, and named as `$x`_data-rR-tr, where `$x` is the number of MD step. In addition, the output frequency is controlled by [out_interval](../input_files/input-main.md#out_interval). For example, if we are running a 10-step MD with out_interval = 3, then `$x` will be 0, 3, 6, and 9. +In molecular dynamics (MD) calculations, if [out_app_flag](../input_files/input-main.md#out_app_flag) is set to true, then `data-rR-tr` is written in an append manner. Otherwise, output files will be put in a separate directory, `matrix`, and named as `$x`_data-rR-tr, where `$x` is the number of MD step. In addition, the output frequency is controlled by [out_freq_ion](../input_files/input-main.md#out_freq_ion). For example, if we are running a 10-step MD with out_freq_ion = 3, then `$x` will be 0, 3, 6, and 9. ## get_s We also offer the option of only calculating the position matrix without running SCF. For that purpose, in `INPUT` file we need to set the keyword [calculation](../input_files/input-main.md#calculation) to `get_s`, and [out_mat_r](../input_files/input-main.md#out_mat_r) to `true`. diff --git a/docs/advanced/input_files/input-main.md b/docs/advanced/input_files/input-main.md index 6cf455ccac..ca5041be81 100644 --- a/docs/advanced/input_files/input-main.md +++ b/docs/advanced/input_files/input-main.md @@ -1,14 +1,19 @@ # Full List of INPUT Keywords + + + + - [Full List of INPUT Keywords](#full-list-of-input-keywords) - - [System Variables](#system-variables) + - [System variables](#system-variables) - [suffix](#suffix) + - [ntype](#ntype) - [calculation](#calculation) - [esolver\_type](#esolver_type) - [symmetry](#symmetry) - [symmetry\_prec](#symmetry_prec) - [symmetry\_autoclose](#symmetry_autoclose) - - [cal_symm_repr](#cal_symm_repr) + - [cal\_force](#cal_force) - [kpar](#kpar) - [bndpar](#bndpar) - [latname](#latname) @@ -16,48 +21,61 @@ - [init\_chg](#init_chg) - [init\_vel](#init_vel) - [mem\_saver](#mem_saver) + - [cal\_stress](#cal_stress) - [diago\_proc](#diago_proc) - [nbspline](#nbspline) - [kspacing](#kspacing) - [min\_dist\_coef](#min_dist_coef) - [device](#device) - [precision](#precision) + - [timer\_enable\_nvtx](#timer_enable_nvtx) + - [cell\_factor](#cell_factor) + - [dm\_to\_rho](#dm_to_rho) + - [chg\_extrap](#chg_extrap) - [nb2d](#nb2d) - - [Input Files](#variables-related-to-input-files) + - [cal\_symm\_repr](#cal_symm_repr) + - [Input files](#input-files) - [stru\_file](#stru_file) - [kpoint\_file](#kpoint_file) - [pseudo\_dir](#pseudo_dir) - [orbital\_dir](#orbital_dir) - [read\_file\_dir](#read_file_dir) - [restart\_load](#restart_load) - - [wannier\_card](#wannier_card) - - [Plane Wave](#plane-wave-related-variables) + - [spillage\_outdir](#spillage_outdir) + - [Plane wave related variables](#plane-wave-related-variables) - [ecutwfc](#ecutwfc) - [ecutrho](#ecutrho) - - [nx, ny, nz](#nx-ny-nz) - - [ndx, ndy, ndz](#ndx-ndy-ndz) + - [nx](#nx) + - [ny](#ny) + - [nz](#nz) + - [ndx](#ndx) + - [ndy](#ndy) + - [ndz](#ndz) - [pw\_seed](#pw_seed) - - [pw\_diag\_thr](#pw_diag_thr) - - [diago\_smooth\_ethr](#diago_smooth_ethr) - - [use\_k\_continuity](#use_k_continuity) - - [pw\_diag\_nmax](#pw_diag_nmax) - - [pw\_diag\_ndim](#pw_diag_ndim) - [diag\_subspace](#diag_subspace) - [erf\_ecut](#erf_ecut) - [fft\_mode](#fft_mode) - [erf\_height](#erf_height) - [erf\_sigma](#erf_sigma) - - [NAO-related Variables](#numerical-atomic-orbitals-related-variables) + - [pw\_diag\_thr](#pw_diag_thr) + - [diago\_smooth\_ethr](#diago_smooth_ethr) + - [use\_k\_continuity](#use_k_continuity) + - [pw\_diag\_nmax](#pw_diag_nmax) + - [pw\_diag\_ndim](#pw_diag_ndim) + - [diago\_cg\_prec](#diago_cg_prec) + - [Numerical atomic orbitals related variables](#numerical-atomic-orbitals-related-variables) - [lmaxmax](#lmaxmax) - [lcao\_ecut](#lcao_ecut) - [lcao\_dk](#lcao_dk) - [lcao\_dr](#lcao_dr) - [lcao\_rmax](#lcao_rmax) - [search\_radius](#search_radius) - - [bx, by, bz](#bx-by-bz) + - [bx](#bx) + - [by](#by) + - [bz](#bz) - [elpa\_num\_thread](#elpa_num_thread) - [num\_stream](#num_stream) - - [Electronic Structure](#electronic-structure) + - [Electronic structure](#electronic-structure) - [basis\_type](#basis_type) - [ks\_solver](#ks_solver) - [nbands](#nbands) @@ -95,11 +113,11 @@ - [scf\_os\_thr](#scf_os_thr) - [scf\_os\_ndim](#scf_os_ndim) - [sc\_os\_ndim](#sc_os_ndim) - - [chg\_extrap](#chg_extrap) - [lspinorb](#lspinorb) - [noncolin](#noncolin) - [soc\_lambda](#soc_lambda) - - [Stochastic DFT](#electronic-structure-sdft) + - [dfthalf\_type](#dfthalf_type) + - [Electronic structure (SDFT)](#electronic-structure-sdft) - [method\_sto](#method_sto) - [nbands\_sto](#nbands_sto) - [nche\_sto](#nche_sto) @@ -109,13 +127,12 @@ - [initsto\_ecut](#initsto_ecut) - [initsto\_freq](#initsto_freq) - [npart\_sto](#npart_sto) - - [Geometry Relaxation](#geometry-relaxation) + - [Geometry relaxation](#geometry-relaxation) - [relax\_method](#relax_method) - [relax\_new](#relax_new) - [relax\_scale\_force](#relax_scale_force) - [relax\_nmax](#relax_nmax) - [relax\_cg\_thr](#relax_cg_thr) - - [cal\_force](#cal_force) - [force\_thr](#force_thr) - [force\_thr\_ev](#force_thr_ev) - [force\_zero\_out](#force_zero_out) @@ -124,20 +141,21 @@ - [relax\_bfgs\_rmax](#relax_bfgs_rmax) - [relax\_bfgs\_rmin](#relax_bfgs_rmin) - [relax\_bfgs\_init](#relax_bfgs_init) - - [cal\_stress](#cal_stress) - [stress\_thr](#stress_thr) - - [press1, press2, press3](#press1-press2-press3) + - [press1](#press1) + - [press2](#press2) + - [press3](#press3) - [fixed\_axes](#fixed_axes) - [fixed\_ibrav](#fixed_ibrav) - [fixed\_atoms](#fixed_atoms) - - [cell\_factor](#cell_factor) - - [Output Variables](#variables-related-to-output-information) + - [Output information](#output-information) + - [out\_freq\_ion](#out_freq_ion) + - [out\_freq\_td](#out_freq_td) - [out\_freq\_elec](#out_freq_elec) - [out\_chg](#out_chg) - - [out\_xc\_r](#out_xc_r) - [out\_pot](#out_pot) - - [out\_dm](#out_dmk) - - [out\_dm1](#out_dmr) + - [out\_dmk](#out_dmk) + - [out\_dmr](#out_dmr) - [out\_wfc\_pw](#out_wfc_pw) - [out\_wfc\_lcao](#out_wfc_lcao) - [out\_dos](#out_dos) @@ -145,34 +163,33 @@ - [out\_band](#out_band) - [out\_proj\_band](#out_proj_band) - [out\_stru](#out_stru) - - [out\_bandgap](#out_bandgap) - [out\_level](#out_level) - - [out\_alllog](#out_alllog) - [out\_mat\_hs](#out_mat_hs) + - [out\_mat\_hs2](#out_mat_hs2) - [out\_mat\_tk](#out_mat_tk) - [out\_mat\_r](#out_mat_r) - - [out\_mat\_hs2](#out_mat_hs2) - [out\_mat\_t](#out_mat_t) - [out\_mat\_dh](#out_mat_dh) - [out\_mat\_ds](#out_mat_ds) - [out\_mat\_xc](#out_mat_xc) - [out\_mat\_xc2](#out_mat_xc2) - [out\_mat\_l](#out_mat_l) + - [out\_xc\_r](#out_xc_r) - [out\_eband\_terms](#out_eband_terms) - - [dm\_to\_rho](#dm_to_rho) - [out\_mul](#out_mul) - [out\_app\_flag](#out_app_flag) - [out\_ndigits](#out_ndigits) - - [out\_interval](#out_interval) - [out\_element\_info](#out_element_info) - [restart\_save](#restart_save) - [rpa](#rpa) - [out\_pchg](#out_pchg) - - [out\_wfc_norm](#out_wfc_norm) - - [out\_wfc_re_im](#out_wfc_re_im) + - [out\_wfc\_norm](#out_wfc_norm) + - [out\_wfc\_re\_im](#out_wfc_re_im) - [if\_separate\_k](#if_separate_k) - [out\_elf](#out_elf) - - [Density of States](#density-of-states) + - [out\_spillage](#out_spillage) + - [out\_alllog](#out_alllog) + - [Density of states](#density-of-states) - [dos\_edelta\_ev](#dos_edelta_ev) - [dos\_sigma](#dos_sigma) - [dos\_scale](#dos_scale) @@ -190,6 +207,7 @@ - [DeePKS](#deepks) - [deepks\_out\_labels](#deepks_out_labels) - [deepks\_out\_freq\_elec](#deepks_out_freq_elec) + - [deepks\_out\_base](#deepks_out_base) - [deepks\_scf](#deepks_scf) - [deepks\_equiv](#deepks_equiv) - [deepks\_model](#deepks_model) @@ -222,7 +240,7 @@ - [of\_kernel\_file](#of_kernel_file) - [of\_full\_pw](#of_full_pw) - [of\_full\_pw\_dim](#of_full_pw_dim) - - [ML-baed Orbital-Free DFT](#ml-kedf-machine-learning-based-kinetic-energy-density-functional-for-ofdft) + - [ML-KEDF: machine learning based kinetic energy density functional for OFDFT](#ml-kedf-machine-learning-based-kinetic-energy-density-functional-for-ofdft) - [of\_ml\_gene\_data](#of_ml_gene_data) - [of\_ml\_device](#of_ml_device) - [of\_ml\_feg](#of_ml_feg) @@ -252,14 +270,18 @@ - [of\_ml\_chi\_pnl](#of_ml_chi_pnl) - [of\_ml\_chi\_qnl](#of_ml_chi_qnl) - [of\_ml\_local\_test](#of_ml_local_test) - - [Electric Field and Dipole Correction](#electric-field-and-dipole-correction) + - [ml\_exx](#ml_exx) + - [TDOFDFT: time dependent orbital free density functional theory](#tdofdft-time-dependent-orbital-free-density-functional-theory) + - [of\_cd](#of_cd) + - [of\_mcd\_alpha](#of_mcd_alpha) + - [Electric field and dipole correction](#electric-field-and-dipole-correction) - [efield\_flag](#efield_flag) - [dip\_cor\_flag](#dip_cor_flag) - [efield\_dir](#efield_dir) - [efield\_pos\_max](#efield_pos_max) - [efield\_pos\_dec](#efield_pos_dec) - [efield\_amp](#efield_amp) - - [Compensating Charge)](#gate-field-compensating-charge) + - [Gate field (compensating charge)](#gate-field-compensating-charge) - [gate\_flag](#gate_flag) - [zgate](#zgate) - [block](#block) @@ -274,34 +296,40 @@ - [exx\_hybrid\_step](#exx_hybrid_step) - [exx\_mixing\_beta](#exx_mixing_beta) - [Exact Exchange (LCAO in PW)](#exact-exchange-lcao-in-pw) - - [exx\_erfc\_lambda](#exx_erfc_lambda) + - [exx\_fock\_lambda](#exx_fock_lambda) - [Exact Exchange (LCAO)](#exact-exchange-lcao) - [exx\_pca\_threshold](#exx_pca_threshold) - [exx\_c\_threshold](#exx_c_threshold) + - [exx\_cs\_inv\_thr](#exx_cs_inv_thr) - [exx\_v\_threshold](#exx_v_threshold) - [exx\_dm\_threshold](#exx_dm_threshold) - [exx\_c\_grad\_threshold](#exx_c_grad_threshold) - [exx\_v\_grad\_threshold](#exx_v_grad_threshold) - [exx\_c\_grad\_r\_threshold](#exx_c_grad_r_threshold) - [exx\_v\_grad\_r\_threshold](#exx_v_grad_r_threshold) - - [exx\_ccp\_threshold](#exx_ccp_threshold) - [exx\_ccp\_rmesh\_times](#exx_ccp_rmesh_times) - [exx\_opt\_orb\_lmax](#exx_opt_orb_lmax) - [exx\_opt\_orb\_ecut](#exx_opt_orb_ecut) - [exx\_opt\_orb\_tolerence](#exx_opt_orb_tolerence) - [exx\_real\_number](#exx_real_number) + - [exx\_singularity\_correction](#exx_singularity_correction) - [rpa\_ccp\_rmesh\_times](#rpa_ccp_rmesh_times) - [exx\_symmetry\_realspace](#exx_symmetry_realspace) - [out\_ri\_cv](#out_ri_cv) - [Exact Exchange (PW)](#exact-exchange-pw) - [exxace](#exxace) - [exx\_gamma\_extrapolation](#exx_gamma_extrapolation) - - [Molecular Dynamics](#molecular-dynamics) + - [ecutexx](#ecutexx) + - [exx\_thr\_type](#exx_thr_type) + - [exx\_ene\_thr](#exx_ene_thr) + - [Molecular dynamics](#molecular-dynamics) - [md\_type](#md_type) - [md\_nstep](#md_nstep) - [md\_dt](#md_dt) - [md\_thermostat](#md_thermostat) - - [md\_tfirst, md\_tlast](#md_tfirst-md_tlast) + - [md\_tfirst](#md_tfirst) + - [md\_tlast](#md_tlast) + - [md\_prec\_level](#md_prec_level) - [md\_restart](#md_restart) - [md\_restartfreq](#md_restartfreq) - [md\_dumpfreq](#md_dumpfreq) @@ -314,7 +342,8 @@ - [md\_pmode](#md_pmode) - [ref\_cell\_factor](#ref_cell_factor) - [md\_pcouple](#md_pcouple) - - [md\_pfirst, md\_plast](#md_pfirst-md_plast) + - [md\_pfirst](#md_pfirst) + - [md\_plast](#md_plast) - [md\_pfreq](#md_pfreq) - [md\_pchain](#md_pchain) - [lj\_rule](#lj_rule) @@ -336,8 +365,9 @@ - [md\_nraise](#md_nraise) - [cal\_syns](#cal_syns) - [dmax](#dmax) - - [DFT+*U*](#dftu-correction) + - [DFT+U correction](#dftu-correction) - [dft\_plus\_u](#dft_plus_u) + - [dft\_plus\_dmft](#dft_plus_dmft) - [orbital\_corr](#orbital_corr) - [hubbard\_u](#hubbard_u) - [yukawa\_potential](#yukawa_potential) @@ -345,7 +375,18 @@ - [uramping](#uramping) - [omc](#omc) - [onsite\_radius](#onsite_radius) - - [vdW Correction](#vdw-correction) + - [Spin-Constrained DFT](#spin-constrained-dft) + - [sc\_mag\_switch](#sc_mag_switch) + - [decay\_grad\_switch](#decay_grad_switch) + - [sc\_thr](#sc_thr) + - [nsc](#nsc) + - [nsc\_min](#nsc_min) + - [sc\_scf\_nmin](#sc_scf_nmin) + - [alpha\_trial](#alpha_trial) + - [sccut](#sccut) + - [sc\_drop\_thr](#sc_drop_thr) + - [sc\_scf\_thr](#sc_scf_thr) + - [vdW correction](#vdw-correction) - [vdw\_method](#vdw_method) - [vdw\_s6](#vdw_s6) - [vdw\_s8](#vdw_s8) @@ -353,17 +394,17 @@ - [vdw\_a2](#vdw_a2) - [vdw\_d](#vdw_d) - [vdw\_abc](#vdw_abc) - - [vdw\_C6\_file](#vdw_c6_file) - - [vdw\_C6\_unit](#vdw_c6_unit) - - [vdw\_R0\_file](#vdw_r0_file) - - [vdw\_R0\_unit](#vdw_r0_unit) + - [vdw\_c6\_file](#vdw_c6_file) + - [vdw\_c6\_unit](#vdw_c6_unit) + - [vdw\_r0\_file](#vdw_r0_file) + - [vdw\_r0\_unit](#vdw_r0_unit) - [vdw\_cutoff\_type](#vdw_cutoff_type) - [vdw\_cutoff\_radius](#vdw_cutoff_radius) - [vdw\_radius\_unit](#vdw_radius_unit) - [vdw\_cutoff\_period](#vdw_cutoff_period) - [vdw\_cn\_thr](#vdw_cn_thr) - [vdw\_cn\_thr\_unit](#vdw_cn_thr_unit) - - [Berry Phase and Wannier90 Interface](#berry-phase-and-wannier90-interface) + - [Berry phase and wannier90 interface](#berry-phase-and-wannier90-interface) - [berry\_phase](#berry_phase) - [gdir](#gdir) - [towannier90](#towannier90) @@ -375,7 +416,7 @@ - [out\_wannier\_eig](#out_wannier_eig) - [out\_wannier\_unk](#out_wannier_unk) - [out\_wannier\_wvfn\_formatted](#out_wannier_wvfn_formatted) - - [rt-TDDFT: Real-time time dependent density functional theory](#tddft-time-dependent-density-functional-theory) + - [RT-TDDFT: Real-Time Time-Dependent Density Functional Theory](#rt-tddft-real-time-time-dependent-density-functional-theory) - [estep\_per\_md](#estep_per_md) - [td\_dt](#td_dt) - [td\_edm](#td_edm) @@ -407,15 +448,16 @@ - [td\_trigo\_amp](#td_trigo_amp) - [td\_heavi\_t0](#td_heavi_t0) - [td\_heavi\_amp](#td_heavi_amp) + - [init\_vecpot\_file](#init_vecpot_file) + - [ocp](#ocp) + - [ocp\_set](#ocp_set) - [out\_dipole](#out_dipole) - [out\_current](#out_current) - [out\_current\_k](#out_current_k) - [out\_efield](#out_efield) - [out\_vecpot](#out_vecpot) - - [init\_vecpot\_file](#init_vecpot_file) - - [ocp](#ocp) - - [ocp\_set](#ocp_set) - - [Debug](#variables-useful-for-debugging) + - [Variables useful for debugging](#variables-useful-for-debugging) + - [nurse](#nurse) - [t\_in\_h](#t_in_h) - [vl\_in\_h](#vl_in_h) - [vnl\_in\_h](#vnl_in_h) @@ -424,7 +466,7 @@ - [test\_force](#test_force) - [test\_stress](#test_stress) - [test\_skip\_ewald](#test_skip_ewald) - - [Electronic Conductivities](#electronic-conductivities) + - [Electronic conductivities](#electronic-conductivities) - [cal\_cond](#cal_cond) - [cond\_che\_thr](#cond_che_thr) - [cond\_dw](#cond_dw) @@ -434,13 +476,13 @@ - [cond\_smear](#cond_smear) - [cond\_fwhm](#cond_fwhm) - [cond\_nonlocal](#cond_nonlocal) - - [Implicit Solvation Model](#implicit-solvation-model) + - [Implicit solvation model](#implicit-solvation-model) - [imp\_sol](#imp_sol) - [eb\_k](#eb_k) - [tau](#tau) - [sigma\_k](#sigma_k) - [nc\_k](#nc_k) - - [Quasiatomic Orbital Analysis](#quasiatomic-orbital-qo-analysis) + - [Quasiatomic Orbital (QO) analysis](#quasiatomic-orbital-qo-analysis) - [qo\_switch](#qo_switch) - [qo\_basis](#qo_basis) - [qo\_strategy](#qo_strategy) @@ -470,7 +512,10 @@ - [pexsi\_mu\_guard](#pexsi_mu_guard) - [pexsi\_elec\_thr](#pexsi_elec_thr) - [pexsi\_zero\_thr](#pexsi_zero_thr) - - [Linear-Response TDDFT](#linear-response-tddft) + - [Linear Response TDDFT](#linear-response-tddft) + - [ri\_hartree\_benchmark](#ri_hartree_benchmark) + - [aims\_nbasis](#aims_nbasis) + - [Linear Response TDDFT (Under Development Feature)](#linear-response-tddft-under-development-feature) - [xc\_kernel](#xc_kernel) - [lr\_init\_xc\_kernel](#lr_init_xc_kernel) - [lr\_solver](#lr_solver) @@ -481,24 +526,26 @@ - [lr\_unrestricted](#lr_unrestricted) - [abs\_wavelen\_range](#abs_wavelen_range) - [out\_wfc\_lr](#out_wfc_lr) + - [abs\_gauge](#abs_gauge) - [abs\_broadening](#abs_broadening) - - [ri\_hartree\_benchmark](#ri_hartree_benchmark) - - [aims\_nbasis](#aims_nbasis) - [Reduced Density Matrix Functional Theory](#reduced-density-matrix-functional-theory) - [rdmft](#rdmft) - [rdmft\_power\_alpha](#rdmft_power_alpha) -[back to top](#full-list-of-input-keywords) ## System variables -These variables are used to control general system parameters. - ### suffix - **Type**: String -- **Description**: In each run, ABACUS will generate a subdirectory in the working directory. This subdirectory contains all the information of the run. The subdirectory name has the format: OUT.suffix, where the `suffix` is the name you can pick up for your convenience. +- **Description**: In each run, ABACUS will generate a subdirectory in the working directory. This subdirectory contains all the information of the run. The subdirectory name has the format: OUT.suffix, where the suffix is the name you can pick up for your convenience. - **Default**: ABACUS +### ntype + +- **Type**: Integer +- **Description**: Number of different atom species in the calculation. +- **Default**: 0 + ### calculation - **Type**: String @@ -506,67 +553,67 @@ These variables are used to control general system parameters. - scf: perform self-consistent electronic structure calculations - nscf: perform non-self-consistent electronic structure calculations. A charge density file is required - - relax: perform structure relaxation calculations, the `relax_nmax` parameter depicts the maximal number of ionic iterations + - relax: perform structure relaxation calculations, the relax_nmax parameter depicts the maximal number of ionic iterations - cell-relax: perform cell relaxation calculations - md: perform molecular dynamics simulations - - get_pchg: obtain partial (band-decomposed) charge densities (for LCAO basis only). See `out_pchg` for more information - - get_wf: obtain real space wave functions (for LCAO basis only). See `out_wfc_norm` and `out_wfc_re_im` for more information - - get_s: obtain the overlap matrix formed by localized orbitals (for LCAO basis with multiple k points). the file name is `SR.csr` with file format being the same as that generated by [out_mat_hs2](#out_mat_hs2). Note: in the 3.10-LTS version, the command was named `get_S` - - gen_bessel: generates projectors, i.e., a series of Bessel functions, for the DeePKS method (for LCAO basis only); see also keywords `bessel_descriptor_lmax`, `bessel_descriptor_rcut` and `bessel_descriptor_tolerence`. A file named `jle.orb` will be generated which contains the projectors. An example is provided in examples/H2O-deepks-pw - - gen_opt_abfs: generate opt-ABFs as discussed in this [article](https://pubs.acs.org/doi/abs/10.1021/acs.jpclett.0c00481). - - test_memory: obtain a rough estimation of memory consuption for the calculation - - test_neighbour: obtain information of neighboring atoms (for LCAO basis only), please specify a positive [search_radius](#search_radius) manually + - get_pchg: obtain partial (band-decomposed) charge densities (for LCAO basis only). See out_pchg for more information + - get_wf: obtain real space wave functions (for LCAO basis only). See out_wfc_norm and out_wfc_re_im for more information + - get_s: obtain the overlap matrix formed by localized orbitals (for LCAO basis with multiple k points). the file name is SR.csr with file format being the same as that generated by out_mat_hs2 + - gen_bessel: generates projectors, i.e., a series of Bessel functions, for the DeePKS method (for LCAO basis only) + - gen_opt_abfs: generate opt-ABFs as discussed in this article + - test_memory: obtain a rough estimation of memory consumption for the calculation + - test_neighbour: obtain information of neighboring atoms (for LCAO basis only), please specify a positive search_radius manually - **Default**: scf ### esolver_type - **Type**: String -- **Description**: choose the energy solver. +- **Description**: Choose the energy solver. - ksdft: Kohn-Sham density functional theory - ofdft: orbital-free density functional theory - - sdft: [stochastic density functional theory](#electronic-structure-sdft) - - tddft: real-time time-dependent density functional theory (TDDFT) + - tdofdft: time-dependent orbital-free density functional theory + - sdft: stochastic density functional theory + - tddft: real-time time-dependent density functional theory (RT-TDDFT) - lj: Leonard Jones potential - - dp: DeeP potential, see details in [md.md](../md.md#dpmd) + - dp: DeeP potential + - nep: Neuroevolution Potential - ks-lr: Kohn-Sham density functional theory + LR-TDDFT (Under Development Feature) - lr: LR-TDDFT with given KS orbitals (Under Development Feature) - **Default**: ksdft ### symmetry -- **Type**: Integer -- **Description**: takes value 1, 0 or -1. +- **Type**: String +- **Description**: Takes value 1, 0 or -1. - -1: No symmetry will be considered. It is recommended to set -1 for non-colinear + soc calculations, where time reversal symmetry is broken sometimes. - 0: Only time reversal symmetry would be considered in symmetry operations, which implied k point and -k point would be treated as a single k point with twice the weight. - 1: Symmetry analysis will be performed to determine the type of Bravais lattice and associated symmetry operations. (point groups, space groups, primitive cells, and irreducible k-points) -- **Default**: - - 0: - - if [calculation](#calculation)==md/nscf/get_pchg/get_wf/get_s or [gamma_only](#gamma_only)==True; - - If ([dft_fuctional](#dft_functional)==hse/hf/pbe0/scan0 or [rpa](#rpa)==True). - - If [efield_flag](#efield_flag)==1 - - 1: else + + > Note: When symmetry is enabled (value 1), k-points are reduced to the irreducible Brillouin zone (IBZ). For explicit k-point lists with custom weights (see KPT file), the custom weights are preserved during symmetry reduction. For Monkhorst-Pack grids, uniform weights are used. +- **Default**: default ### symmetry_prec - **Type**: Real - **Description**: The accuracy for symmetry analysis. Typically, the default value is good enough, but if the lattice parameters or atom positions in STRU file are not accurate enough, this value should be enlarged. - > Note: if *[calculation](#calculation)==cell_relax*, this value can be dynamically changed corresponding to the variation of accuracy of the lattice parameters and atom positions during the relaxation. The new value will be printed in `OUT.${suffix}/running_cell-relax.log` in that case. + > Note: if calculation==cell_relax, this value can be dynamically changed corresponding to the variation of accuracy of the lattice parameters and atom positions during the relaxation. - **Default**: 1.0e-6 - **Unit**: Bohr ### symmetry_autoclose - **Type**: Boolean -- **Availability**: *[symmetry](#symmetry)==1* -- **Description**: Control how to deal with error in symmetry analysis due to inaccurate lattice parameters or atom positions in STRU file, especially useful when *[calculation](#calculation)==cell-relax* +- **Availability**: *symmetry==1* +- **Description**: Control how to deal with error in symmetry analysis due to inaccurate lattice parameters or atom positions in STRU file, especially useful when calculation==cell-relax - False: quit with an error message - True: automatically set symmetry to 0 and continue running without symmetry analysis - **Default**: True -### cal_symm_repr -- **Type**: Integer [Integer]\(optional\) -- **Description**: Whether to print the matrix representation of symmetry operation to running log file. If the first value is given as 1, then all matrix representations will be printed. The second optional parameter controls the precision (number of digits) to print, default is 3, which is enough for a quick check. -- **Default**: 1 3 +### cal_force + +- **Type**: Boolean +- **Description**: If set to True, calculate the force at the end of the electronic iteration. +- **Default**: False ### kpar @@ -583,9 +630,10 @@ These variables are used to control general system parameters. ### latname - **Type**: String -- **Description**: Specifies the type of Bravias lattice. When set to `none`, the three lattice vectors are supplied explicitly in STRU file. When set to a certain Bravais lattice type, there is no need to provide lattice vector, but a few lattice parameters might be required. For more information regarding this parameter, consult the [page on STRU file](stru.md). +- **Description**: Specifies the type of Bravias lattice. When set to none, the three lattice vectors are supplied explicitly in STRU file. Available options are: + - none: free structure - sc: simple cubic - fcc: face-centered cubic @@ -612,12 +660,12 @@ These variables are used to control general system parameters. - atomic: from atomic pseudo wave functions. If they are not enough, other wave functions are initialized with random numbers. - atomic+random: add small random numbers on atomic pseudo-wavefunctions - - file: from binary files `wf*.dat`, which are output by setting [out_wfc_pw](#out_wfc_pw) to `2`. + - file: from binary files wf*.dat, which are output by setting out_wfc_pw to 2. - random: random numbers - nao: from numerical atomic orbitals. If they are not enough, other wave functions are initialized with random numbers. - nao+random: add small random numbers on numerical atomic orbitals - - > Only the `file` option is useful for the lcao basis set, which is mostly used when [calculation](#calculation) is set to `get_wf` and `get_pchg`. See more details in [out_wfc_lcao](#out_wfc_lcao). + + > Note: Only the file option is useful for the lcao basis set, which is mostly used when calculation is set to get_wf and get_pchg. - **Default**: atomic ### init_chg @@ -626,59 +674,61 @@ These variables are used to control general system parameters. - **Description**: This variable is used for both plane wave set and localized orbitals set. It indicates the type of starting density. - atomic: the density is starting from the summation of the atomic density of single atoms. - - file: the density will be read in from a binary file `charge-density.dat` first. If it does not exist, the charge density will be read in from cube files. Besides, when you do `nspin=1` calculation, you only need the density file chgs1.cube. However, if you do `nspin=2` calculation, you also need the density file chgs2.cube. The density file should be output with these names if you set out_chg = 1 in INPUT file. - - wfc: the density will be calculated by wavefunctions and occupations. Wavefunctions are read in from binary files `wf*.dat` (see [out_wfc_pw](#out_wfc_pw)) while occupations are read in from file `eig.txt`. + - file: the density will be read in from a binary file charge-density.dat first. If it does not exist, the charge density will be read in from cube files. + - wfc: the density will be calculated by wavefunctions and occupations. + - dm: the density will be calculated by real space density matrix(DMR) of LCAO base. + - hr: the real space Hamiltonian matrix(HR) will be read in from file hrs1_nao.csr in directory read_file_dir. - auto: Abacus first attempts to read the density from a file; if not found, it defaults to using atomic density. - **Default**: atomic ### init_vel - **Type**: Boolean -- **Description**: - - - True: read the atom velocity (atomic unit : 1 a.u. = 21.877 Angstrom/fs) from the atom file (`STRU`) and determine the initial temperature [md_tfirst](#md_tfirst-md_tlast). If [md_tfirst](#md_tfirst-md_tlast) is unset or less than zero, `init_vel` is autoset to be `true`. +- **Description**: - True: read the atom velocity (atomic unit : 1 a.u. = 21.877 Angstrom/fs) from the atom file (STRU) and determine the initial temperature md_tfirst. If md_tfirst is unset or less than zero, init_vel is autoset to be true. - False: assign value to atom velocity using Gaussian distributed random numbers. - **Default**: False ### mem_saver -- **Type**: Boolean -- **Availability**: Used only for nscf calculations with plane wave basis set. +- **Type**: Integer +- **Availability**: *Used only for nscf calculations with plane wave basis set.* - **Description**: Save memory when performing nscf calculations. - 0: no memory saving techniques are used. - 1: a memory saving technique will be used for many k point calculations. - - **Default**: 0 +### cal_stress + +- **Type**: Boolean +- **Description**: If set to True, calculate the stress at the end of the electronic iteration. +- **Default**: False + ### diago_proc - **Type**: Integer -- **Availability**: Used only for plane wave basis set. -- **Description**: - - 0: it will be set to the number of MPI processes. Normally, it is fine just leave it to the default value. - - `>0`: it specifies the number of processes used for carrying out diagonalization. Must be less than or equal to total number of MPI processes. Also, when cg diagonalization is used, diago_proc must be the same as the total number of MPI processes. +- **Availability**: *Used only for plane wave basis set.* +- **Description**: - 0: it will be set to the number of MPI processes. + - >0: it specifies the number of processes used for carrying out diagonalization. Must be less than or equal to total number of MPI processes. - **Default**: 0 ### nbspline - **Type**: Integer -- **Description**: If set to a natural number, a Cardinal B-spline interpolation will be used to calculate Structure Factor. `nbspline` represents the order of B-spline basis and a larger one can get more accurate results but cost more. - It is turned off by default. +- **Description**: If set to a natural number, a Cardinal B-spline interpolation will be used to calculate Structure Factor. nbspline represents the order of B-spline basis and a larger one can get more accurate results but cost more. It is turned off by default. - **Default**: -1 ### kspacing -- **Type**: Real -- **Description**: Set the smallest allowed spacing between k points, unit in 1/bohr. It should be larger than 0.0, and suggest smaller than 0.25. When you have set this value > 0.0, then the KPT file is unnecessary, and the number of K points nk_i = max(1, int(|b_i|/KSPACING_i)+1), where b_i is the reciprocal lattice vector. The default value 0.0 means that ABACUS will read the applied KPT file. -If only one value is set (such as `kspacing 0.5`), then kspacing values of a/b/c direction are all set to it; and one can also set 3 values to set the kspacing value for a/b/c direction separately (such as: `kspacing 0.5 0.6 0.7`). +- **Type**: Vector of Real (1 or 3 values) +- **Description**: Set the smallest allowed spacing between k points, unit in 1/bohr. It should be larger than 0.0, and suggest smaller than 0.25. When you have set this value > 0.0, then the KPT file is unnecessary. The default value 0.0 means that ABACUS will read the applied KPT file. + > Note: If gamma_only is set to be true, kspacing is invalid. - **Default**: 0.0 -- **Note**: If gamma_only is set to be true, kspacing is invalid. ### min_dist_coef - **Type**: Real -- **Description**: A factor related to the allowed minimum distance between two atoms. At the beginning, ABACUS will check the structure, and if the distance of two atoms is shorter than min_dist_coef*(standard covalent bond length), we think this structure is unreasonable. If you want to calculate some structures in extreme conditions like high pressure, you should set this parameter as a smaller value or even 0. +- **Description**: A factor related to the allowed minimum distance between two atoms. At the beginning, ABACUS will check the structure, and if the distance of two atoms is shorter than min_dist_coef*(standard covalent bond length), we think this structure is unreasonable. - **Default**: 0.2 ### device @@ -691,190 +741,192 @@ If only one value is set (such as `kspacing 0.5`), then kspacing values of a/b/c - cpu: for CPUs via Intel, AMD, or Other supported CPU devices - gpu: for GPUs via CUDA or ROCm. - Known limitations: `ks_solver` must also be set to the algorithms supported. lcao_in_pw currently does not support `gpu`. - + > Note: ks_solver must also be set to the algorithms supported. lcao_in_pw currently does not support gpu. - **Default**: cpu ### precision - **Type**: String -- **Availability**: Used only for plane wave basis set. +- **Availability**: *Used only for plane wave basis set.* - **Description**: Specifies the precision when performing scf calculation. - single: single precision - double: double precision - **Default**: double +### timer_enable_nvtx + +- **Type**: Boolean +- **Description**: Controls whether NVTX profiling labels are emitted by the timer. This feature is only effective on CUDA platforms. + + - True: Enable NVTX profiling labels in the timer. + - False: Disable NVTX profiling labels in the timer. +- **Default**: False + +### cell_factor + +- **Type**: Real +- **Description**: Used in the construction of the pseudopotential tables. For cell-relax calculations, this is automatically set to 2.0. +- **Default**: 1.2 + +### dm_to_rho + +- **Type**: Boolean +- **Description**: Reads density matrix in npz format and calculates electron density. +- **Default**: False + +### chg_extrap + +- **Type**: String +- **Description**: Charge extrapolation method for MD and relaxation calculations. +- **Default**: default + ### nb2d - **Type**: Integer -- **Description**: When using elpa or scalapack to solver the eigenvalue problem, the data should be distributed by the two-dimensional block-cyclic distribution. This paramter specifies the size of the block. It is valid for: - - [ks_solver](#ks_solver) is genelpa or scalapack_gvx. If nb2d is set to 0, then it will be automatically set in the program according to the size of atomic orbital basis: - - if size <= 500: nb2d = 1 - - if 500 < size <= 1000: nb2d = 32 - - if size > 1000: nb2d = 64; - - [ks_solver](#ks_solver) is dav_subspace, and [diag_subspace](#diag_subspace) is 1 or 2. It is the block size for the diagonization of subspace. If it is set to 0, then it will be automatically set in the program according to the number of band: - - if number of band > 500: nb2d = 32 - - if number of band < 500: nb2d = 16 +- **Description**: In LCAO calculations, the Hamiltonian and overlap matrices are distributed across 2D processor grid. This parameter controls the 2D block size for distribution. - **Default**: 0 -[back to top](#full-list-of-input-keywords) +### cal_symm_repr -## Variables related to input files +- **Type**: Integer \[Integer\](optional) +- **Description**: Whether to print the matrix representation of symmetry operation to running log file. If the first value is given as 1, then all matrix representations will be printed. The second optional parameter controls the precision (number of digits) to print, default is 3, which is enough for a quick check. +- **Default**: 1 3 + +[back to top](#full-list-of-input-keywords) -These variables are used to control parameters related to input files. +## Input files ### stru_file - **Type**: String -- **Description**: The name of the structure file. - - Containing various information about atom species, including pseudopotential files, local orbitals files, cell information, atom positions, and whether atoms should be allowed to move. - - When [calculation](#calculation) is set to `md` and [md_restart](#md_restart) is set to `true`, this keyword will NOT work. - - Refer to [Doc](https://github.com/deepmodeling/abacus-develop/blob/develop/docs/advanced/input_files/stru.md) +- **Description**: The name of the structure file containing various information about atom species, including pseudopotential files, local orbitals files, cell information, atom positions, and whether atoms should be allowed to move. - **Default**: STRU ### kpoint_file - **Type**: String - **Description**: The name of the k-point file that includes the k-point information of Brillouin zone. - - In atomic orbitals basis with `gamma_only` set to true, the `KPT` file is unnecessary, because a `KPT` file will be generated automatically. - - When more than one k-points are required, an explicit `KPT` file is mandatory. - - Refer to [Doc](https://github.com/deepmodeling/abacus-develop/blob/develop/docs/advanced/input_files/kpt.md) - **Default**: KPT ### pseudo_dir - **Type**: String -- **Description**: The direcotyr of pseudopotential files. - - This parameter is combined with the pseudopotential filenames in the STRU file to form the complete pseudopotential file paths. - - Example: set pseudo_dir to "../" with "Si.upf" which specified under "ATOMIC_SPECIES" in STRU file, ABACUS will open the pseudopotential file in path "../Si.upf". +- **Description**: The directory of pseudopotential files. This parameter is combined with the pseudopotential filenames in the STRU file to form the complete pseudopotential file paths. - **Default**: "" ### orbital_dir - **Type**: String -- **Description**: The directory to save numerical atomic orbitals. - - This parameter is combined with orbital filenames in the STRU file to form the complete orbital file paths. - - Example: set orbital_dir to "../" with "Si.orb" which specified under "NUMERICAL_ORBITAL" in STRU file, ABACUS will open the orbital file in path "../Si.orb". +- **Description**: The directory to save numerical atomic orbitals. This parameter is combined with orbital filenames in the STRU file to form the complete orbital file paths. - **Default**: "" ### read_file_dir - **Type**: String -- **Description**: Location of files, such as the electron density (`chgs1.cube`), required as a starting point. - - Example: './' implies the files to be read are located in the working directory. +- **Description**: Location of files, such as the electron density (chgs1.cube), required as a starting point. - **Default**: OUT.$suffix ### restart_load - **Type**: Boolean -- **Availability**: Used only when numerical atomic orbitals are employed as basis set. -- **Description**: If [restart_save](#restart_save) is set to true and an electronic iteration is finished, calculations can be restarted from the charge density file, which are saved in the former calculation. Please ensure [read_file_dir](#read_file_dir) is correct, and the charge density file exist. - - If EXX(exact exchange) is calculated (i.e. *[dft_fuctional](#dft_functional)==hse/hf/pbe0/scan0* or *[rpa](#rpa)==True*), the Hexx(R) files in the same folder for each processor will also be read. +- **Availability**: *Used only when numerical atomic orbitals are employed as basis set.* +- **Description**: If restart_save is set to true and an electronic iteration is finished, calculations can be restarted from the charge density file, which are saved in the former calculation. - **Default**: False -### wannier_card +### spillage_outdir - **Type**: String -- **Availability**: Using ABACUS with Wannier90. -- **Description**: The name of the input file related to Wannier90. -- **Default**: "none" +- **Availability**: *Used only for plane wave basis set.* +- **Description**: The directory to save the spillage files. +- **Default**: "./" [back to top](#full-list-of-input-keywords) ## Plane wave related variables -These variables are used to control the plane wave related parameters. - ### ecutwfc - **Type**: Real -- **Description**: Energy cutoff for plane wave functions. Note that even for localized orbitals basis, you still need to setup an energy cutoff for this system. Because our local pseudopotential parts and the related force are calculated from plane wave basis set, etc. Also, because our orbitals are generated by matching localized orbitals to a chosen set of wave functions from a certain energy cutoff, this set of localize orbitals is most accurate under this same plane wave energy cutoff. -> `ecutwfc` and `ecutrho` can be set simultaneously. Besides, if only one parameter is set, abacus will automatically set another parameter based on the 4-time relationship. If both parameters are not set, the default values will be employed. +- **Description**: Energy cutoff for plane wave functions. Note that even for localized orbitals basis, you still need to setup an energy cutoff for this system. Because our local pseudopotential parts and the related force are calculated from plane wave basis set. + > Note: ecutwfc and ecutrho can be set simultaneously. If only one parameter is set, abacus will automatically set another parameter based on the 4-time relationship. - **Default**: 50 for PW basis, 100 for LCAO basis - **Unit**: Ry ### ecutrho - **Type**: Real -- **Description**: Energy cutoff for charge density and potential. For norm-conserving pseudopotential you should stick to the default value, you can reduce it by a little but it will introduce noise especially on forces and stress. For ultrasoft pseudopotential a larger value than the default is often desirable (`ecutrho` = 8 to 12 times `ecutwfc`, typically). The use of gradient-corrected functional, especially in cells with vacuum, or for pseudopotential without non-linear core correction, usually requires an higher values of `ecutrho` to be accurately converged. +- **Description**: Energy cutoff for charge density and potential. For norm-conserving pseudopotential you should stick to the default value, you can reduce it by a little but it will introduce noise especially on forces and stress. - **Default**: 4*ecutwfc - **Unit**: Ry -### nx, ny, nz +### nx - **Type**: Integer -- **Description**: If set to a positive number, then the three variables specify the numbers of FFT grid points in x, y, z directions, respectively. If set to 0, the number will be calculated from ecutrho. +- **Description**: If set to a positive number, specifies the number of FFT grid points in x direction. If set to 0, the number will be calculated from ecutrho. + + > Note: You must specify all three dimensions (nx, ny, nz) for this setting to be used. - **Default**: 0 -- **Note**: You must specify all three dimensions for this setting to be used. -### ndx, ndy, ndz +### ny - **Type**: Integer -- **Description**: If set to a positive number, then the three variables specify the numbers of FFT grid (for the dense part of charge density in ultrasoft pseudopotential) points in x, y, z directions, respectively. If set to 0, the number will be calculated from ecutwfc. +- **Description**: If set to a positive number, specifies the number of FFT grid points in y direction. If set to 0, the number will be calculated from ecutrho. - Note: You must specify all three dimensions for this setting to be used. - Note: These parameters must be used combined with [nx,ny,nz](#nx-ny-nz). If [nx,ny,nz](#nx-ny-nz) are unset, ndx,ndy,ndz are used as [nx,ny,nz](#nx-ny-nz). + > Note: You must specify all three dimensions (nx, ny, nz) for this setting to be used. - **Default**: 0 -### pw_seed +### nz - **Type**: Integer -- **Availability**: Only used for plane wave basis. -- **Description**: Specify the random seed to initialize wave functions. Only positive integers are available. -- **Default**:0 - -### pw_diag_thr +- **Description**: If set to a positive number, specifies the number of FFT grid points in z direction. If set to 0, the number will be calculated from ecutrho. -- **Type**: Real -- **Description**: Only used when you use `ks_solver = cg/dav/dav_subspace/bpcg`. It indicates the threshold for the first electronic iteration, from the second iteration the pw_diag_thr will be updated automatically. **For nscf calculations with planewave basis set, pw_diag_thr should be <= 1e-3.** -- **Default**: 0.01 + > Note: You must specify all three dimensions (nx, ny, nz) for this setting to be used. +- **Default**: 0 -### diago_smooth_ethr +### ndx -- **Type**: bool -- **Description**: If `TRUE`, the smooth threshold strategy, which applies a larger threshold (10e-5) for the empty states, will be implemented in the diagonalization methods. (This strategy should not affect total energy, forces, and other ground-state properties, but computational efficiency will be improved.) If `FALSE`, the smooth threshold strategy will not be applied. -- **Default**: false +- **Type**: Integer +- **Description**: If set to a positive number, specifies the number of FFT grid points for the dense part of charge density in x direction. If set to 0, the number will be calculated from ecutwfc. -### use_k_continuity + > Note: You must specify all three dimensions (ndx, ndy, ndz) for this setting to be used. These parameters must be used combined with nx, ny, nz. If nx, ny, nz are unset, ndx, ndy, ndz are used as nx, ny, nz. +- **Default**: 0 -- **Type**: Boolean -- **Availability**: Used only for plane wave basis set. -- **Description**: Whether to use k-point continuity for initializing wave functions. When enabled, this strategy exploits the similarity between wavefunctions at neighboring k-points by propagating the wavefunction from a previously initialized k-point to a new k-point, significantly reducing the computational cost of the initial guess. +### ndy - **Important constraints:** - - Must be used together with `diago_smooth_ethr = 1` for optimal performance +- **Type**: Integer +- **Description**: If set to a positive number, specifies the number of FFT grid points for the dense part of charge density in y direction. If set to 0, the number will be calculated from ecutwfc. - This feature is particularly useful for calculations with dense k-point sampling where the computational cost of wavefunction initialization becomes significant. -- **Default**: false + > Note: You must specify all three dimensions (ndx, ndy, ndz) for this setting to be used. These parameters must be used combined with nx, ny, nz. If nx, ny, nz are unset, ndx, ndy, ndz are used as nx, ny, nz. +- **Default**: 0 -### pw_diag_nmax +### ndz - **Type**: Integer -- **Description**: Only useful when you use `ks_solver = cg/dav/dav_subspace/bpcg`. It indicates the maximal iteration number for cg/david/dav_subspace/bpcg method. -- **Default**: 40 +- **Description**: If set to a positive number, specifies the number of FFT grid points for the dense part of charge density in z direction. If set to 0, the number will be calculated from ecutwfc. -### pw_diag_ndim + > Note: You must specify all three dimensions (ndx, ndy, ndz) for this setting to be used. These parameters must be used combined with nx, ny, nz. If nx, ny, nz are unset, ndx, ndy, ndz are used as nx, ny, nz. +- **Default**: 0 + +### pw_seed - **Type**: Integer -- **Description**: Only useful when you use `ks_solver = dav` or `ks_solver = dav_subspace`. It indicates dimension of workspace(number of wavefunction packets, at least 2 needed) for the Davidson method. A larger value may yield a smaller number of iterations in the algorithm but uses more memory and more CPU time in subspace diagonalization. -- **Default**: 4 +- **Availability**: *Only used for plane wave basis.* +- **Description**: Specify the random seed to initialize wave functions. Only positive integers are available. +- **Default**: 0 ### diag_subspace - **Type**: Integer -- **Description**: The method to diagonalize subspace in dav_subspace method. The available options are: +- **Description**: The method to diagonalize subspace in dav_subspace method. - 0: by LAPACK - 1: by GenELPA - 2: by ScaLAPACK - LAPACK only solve in one core, GenELPA and ScaLAPACK can solve in parallel. If the system is small (such as the band number is less than 100), LAPACK is recommended. If the system is large and MPI parallel is used, then GenELPA or ScaLAPACK is recommended, and GenELPA usually has better performance. For GenELPA and ScaLAPACK, the block size can be set by [nb2d](#nb2d). - - **Default**: 0 ### erf_ecut - **Type**: Real -- **Description**: Used in variable-cell molecular dynamics (or in stress calculation). See [erf_sigma](#erf_sigma) in detail. +- **Description**: Used in variable-cell molecular dynamics (or in stress calculation). See erf_sigma for details. - **Default**: 0.0 - **Unit**: Ry @@ -891,7 +943,7 @@ These variables are used to control the plane wave related parameters. ### erf_height - **Type**: Real -- **Description**: Used in variable-cell molecular dynamics (or in stress calculation). See [erf_sigma](#erf_sigma) in detail. +- **Description**: Used in variable-cell molecular dynamics (or in stress calculation). See erf_sigma for details. - **Default**: 0.0 - **Unit**: Ry @@ -899,19 +951,50 @@ These variables are used to control the plane wave related parameters. - **Type**: Real - **Description**: In order to recover the accuracy of a constant energy cutoff calculation, the kinetic functional is modified, which is used in variable-cell molecular dynamics (or in stress calculation). - - [erf_ecut](#erf_ecut) is the value of the constant energy cutoff; [erf_height](#erf_height) and [erf_sigma](#erf_sigma) are the height and the width of the energy step for reciprocal vectors whose square modulus is greater than [erf_ecut](#erf_ecut). In the kinetic energy, G^2 is replaced by G^2 + erf_height * (1 + erf ( (G^2 - erf_ecut)/erf_sigma) ) - - See: M. Bernasconi et al., J. Phys. Chem. Solids **56**, 501 (1995), [doi:10.1016/0022-3697(94)00228-2](#https://doi.org/10.1016/0022-3697(94)00228-2) - **Default**: 0.1 - **Unit**: Ry +### pw_diag_thr + +- **Type**: Real +- **Description**: Only used when you use ks_solver = cg/dav/dav_subspace/bpcg. It indicates the threshold for the first electronic iteration, from the second iteration the pw_diag_thr will be updated automatically. For nscf calculations with planewave basis set, pw_diag_thr should be <= 1e-3. +- **Default**: 0.01 + +### diago_smooth_ethr + +- **Type**: Boolean +- **Description**: If TRUE, the smooth threshold strategy, which applies a larger threshold (10e-5) for the empty states, will be implemented in the diagonalization methods. (This strategy should not affect total energy, forces, and other ground-state properties, but computational efficiency will be improved.) If FALSE, the smooth threshold strategy will not be applied. +- **Default**: false + +### use_k_continuity + +- **Type**: Boolean +- **Availability**: *Used only for plane wave basis set.* +- **Description**: If TRUE, the wavefunctions at k-point will be initialized from the converged wavefunctions at the nearest k-point, which can speed up the SCF convergence. Only works for PW basis. +- **Default**: false + +### pw_diag_nmax + +- **Type**: Integer +- **Description**: Only useful when you use ks_solver = cg/dav/dav_subspace/bpcg. It indicates the maximal iteration number for cg/david/dav_subspace/bpcg method. +- **Default**: 40 + +### pw_diag_ndim + +- **Type**: Integer +- **Description**: Only useful when you use ks_solver = dav or ks_solver = dav_subspace. It indicates dimension of workspace(number of wavefunction packets, at least 2 needed) for the Davidson method. A larger value may yield a smaller number of iterations in the algorithm but uses more memory and more CPU time in subspace diagonalization. +- **Default**: 4 + +### diago_cg_prec + +- **Type**: Integer +- **Description**: Preconditioner type for conjugate gradient diagonalization method. +- **Default**: 1 + [back to top](#full-list-of-input-keywords) ## Numerical atomic orbitals related variables -These variables are used to control the numerical atomic orbitals related parameters. - ### lmaxmax - **Type**: Integer @@ -921,15 +1004,15 @@ These variables are used to control the numerical atomic orbitals related parame ### lcao_ecut - **Type**: Real -- **Description**: Energy cutoff (in Ry) for two-center integrals in LCAO. The two-center integration table are obtained via a k space integral whose upper limit is about sqrt(`lcao_ecut`). -- **Default**: `ecutwfc` +- **Description**: Energy cutoff (in Ry) for two-center integrals in LCAO. The two-center integration table are obtained via a k space integral whose upper limit is about sqrt(lcao_ecut). +- **Default**: ecutwfc ### lcao_dk - **Type**: Real -- **Description**: the interval of k points for two-center integrals. The two-center integration table are obtained via a k space integral on a uniform grid with spacing `lcao_dk`. +- **Description**: the interval of k points for two-center integrals. The two-center integration table are obtained via a k space integral on a uniform grid with spacing lcao_dk. - **Default**: 0.01 -- **Unit**: Bohr${}^{-1}$ +- **Unit**: Bohr ### lcao_dr @@ -952,7 +1035,19 @@ These variables are used to control the numerical atomic orbitals related parame - **Default**: -1 - **Unit**: Bohr -### bx, by, bz +### bx + +- **Type**: Integer +- **Description**: In the matrix operation of grid integral, bx/by/bz grids (in x, y, z directions) are treated as a whole as a matrix element. A different value will affect the calculation speed. The default is 0, which means abacus will automatically calculate these values. +- **Default**: 0 + +### by + +- **Type**: Integer +- **Description**: In the matrix operation of grid integral, bx/by/bz grids (in x, y, z directions) are treated as a whole as a matrix element. A different value will affect the calculation speed. The default is 0, which means abacus will automatically calculate these values. +- **Default**: 0 + +### bz - **Type**: Integer - **Description**: In the matrix operation of grid integral, bx/by/bz grids (in x, y, z directions) are treated as a whole as a matrix element. A different value will affect the calculation speed. The default is 0, which means abacus will automatically calculate these values. @@ -960,25 +1055,22 @@ These variables are used to control the numerical atomic orbitals related parame ### elpa_num_thread -- **Type**: int -- **Description**: Number of threads used in one elpa calculation. +- **Type**: Integer +- **Description**: Number of threads used in one elpa calculation. If the number is below 0 or 0 or beyond the max number of threads, all elpa calculation will be using all mpi threads - **Default**: -1 ### num_stream -- **Type** :int -- **Description**: The number of streams used in GPU calculations (only for LCAO). For most devices, the performance is satisfactory when the number is larger than 2. -- **Default** : "4" +- **Type**: Integer +- **Description**: The number of CUDA streams used in LCAO calculations with GPU acceleration. +- **Default**: 4 [back to top](#full-list-of-input-keywords) ## Electronic structure -These variables are used to control the electronic structure and geometry relaxation -calculations. - ### basis_type - **Type**: String @@ -998,72 +1090,65 @@ calculations. - cg: The conjugate-gradient (CG) method. - bpcg: The BPCG method, which is a block-parallel Conjugate Gradient (CG) method, typically exhibits higher acceleration in a GPU environment. - dav: The Davidson algorithm. - - dav_subspace: The Davidson algorithm without orthogonalization operation, this method is the most recommended for efficiency. `pw_diag_ndim` can be set to 2 for this method. + - dav_subspace: The Davidson algorithm without orthogonalization operation, this method is the most recommended for efficiency. pw_diag_ndim can be set to 2 for this method. For numerical atomic orbitals basis, - lapack: Use LAPACK to diagonalize the Hamiltonian, only used for serial version - - genelpa: Use GEN-ELPA to diagonalize the Hamiltonian. + - genelpa: Use GEN-ELPA to diagonalize the Hamiltonian. - scalapack_gvx: Use Scalapack to diagonalize the Hamiltonian. - - cusolver: Use CUSOLVER to diagonalize the Hamiltonian, at least one GPU is needed. + - cusolver: Use CUSOLVER to diagonalize the Hamiltonian, at least one GPU is needed. - cusolvermp: Use CUSOLVER to diagonalize the Hamiltonian, supporting multi-GPU devices. Note that you should set the number of MPI processes equal to the number of GPUs. - - elpa: The ELPA solver supports both CPU and GPU. By setting the `device` to GPU, you can launch the ELPA solver with GPU acceleration (provided that you have installed a GPU-supported version of ELPA, which requires you to manually compile and install ELPA, and the ABACUS should be compiled with -DUSE_ELPA=ON and -DUSE_CUDA=ON). The ELPA solver also supports multi-GPU acceleration. + - elpa: The ELPA solver supports both CPU and GPU. By setting the device to GPU, you can launch the ELPA solver with GPU acceleration (provided that you have installed a GPU-supported version of ELPA, which requires you to manually compile and install ELPA, and the ABACUS should be compiled with -DUSE_ELPA=ON and -DUSE_CUDA=ON). The ELPA solver also supports multi-GPU acceleration. - If you set ks_solver=`genelpa` for basis_type=`pw`, the program will stop with an error message: + If you set ks_solver=genelpa for basis_type=pw, the program will stop with an error message: - ```text - genelpa can not be used with plane wave basis. - ``` + ``text genelpa can not be used with plane wave basis. `` Then the user has to correct the input file and restart the calculation. -- **Default**: - - PW basis: cg. - - LCAO basis: - - genelpa (if compiling option `USE_ELPA` has been set) - - lapack (if compiling option `ENABLE_MPI` has not been set) - - scalapack_gvx (if compiling option `USE_ELPA` has not been set and compiling option `ENABLE_MPI` has been set) - - cusolver (if compiling option `USE_CUDA` has been set) ### nbands - **Type**: Integer - **Description**: The number of Kohn-Sham orbitals to calculate. It is recommended to setup this value, especially when smearing techniques are utilized, more bands should be included. -- **Default**: - - nspin=1: max(1.2\*occupied_bands, occupied_bands + 10) - - nspin=2: max(1.2\*nelec_spin, nelec_spin + 10), in which nelec_spin = max(nelec_spin_up, nelec_spin_down) - - nspin=4: max(1.2\*nelec, nelec + 20) ### nelec - **Type**: Real -- **Description**: - - - 0.0: The total number of electrons will be calculated by the sum of valence electrons (i.e. assuming neutral system). - - `>0.0`: this denotes the total number of electrons in the system. Must be less than 2*nbands. +- **Description**: - 0.0: The total number of electrons will be calculated by the sum of valence electrons (i.e. assuming neutral system). + - >0.0: this denotes the total number of electrons in the system. Must be less than 2*nbands. - **Default**: 0.0 ### nelec_delta - **Type**: Real -- **Description**: The total number of electrons will be calculated by `nelec`+`nelec_delta`. +- **Description**: The total number of electrons will be calculated by nelec+nelec_delta. - **Default**: 0.0 ### nupdown - **Type**: Real -- **Description**: - - 0.0: no constrain apply to system. - - `>0.0`: The different number of electrons between spin-up and spin-down channels. The range of value must be in [-nelec ~ nelec]. It is one type of constrainted DFT method, two Fermi energies will be calculated. +- **Description**: - 0.0: no constrain apply to system. + - >0.0: The different number of electrons between spin-up and spin-down channels. The range of value must be in [-nelec ~ nelec]. It is one type of constrainted DFT method, two Fermi energies will be calculated. - **Default**: 0.0 ### dft_functional - **Type**: String -- **Description**: In our package, the XC functional can either be set explicitly using the `dft_functional` keyword in `INPUT` file. If `dft_functional` is not specified, ABACUS will use the xc functional indicated in the pseudopotential file. - On the other hand, if dft_functional is specified, it will overwrite the functional from pseudopotentials and performs calculation with whichever functional the user prefers. We further offer two ways of supplying exchange-correlation functional. The first is using 'short-hand' names such as 'LDA', 'PBE', 'SCAN'. A complete list of 'short-hand' expressions can be found in [the source code](../../../source/source_hamilt/module_xc/xc_functional.cpp). The other way is only available when ***compiling with LIBXC***, and it allows for supplying exchange-correlation functionals as combinations of LIBXC keywords for functional components, joined by a plus sign, for example, dft_functional='LDA_X_1D_EXPONENTIAL+LDA_C_1D_CSC'. The list of LIBXC keywords can be found on its [website](https://libxc.gitlab.io/functionals/). In this way, **we support all the LDA,GGA and mGGA functionals provided by LIBXC**. - - Furthermore, the old INPUT parameter exx_hybrid_type for hybrid functionals has been absorbed into dft_functional. Options are `hf` (pure Hartree-Fock), `pbe0`(PBE0), `hse` (Note: in order to use HSE functional, LIBXC is required). Note also that HSE has been tested while PBE0 has NOT been fully tested yet, and the maximum CPU cores for running exx in parallel is $N(N+1)/2$, with N being the number of atoms. - +- **Description**: In our package, the XC functional can either be set explicitly using the dft_functional keyword in INPUT file. If dft_functional is not specified, ABACUS will use the xc functional indicated in the pseudopotential file. On the other hand, if dft_functional is specified, it will overwrite the functional from pseudopotentials and performs calculation with whichever functional the user prefers. We further offer two ways of supplying exchange-correlation functional. The first is using 'short-hand' names. A complete list of 'short-hand' expressions can be found in the source code. Supported density functionals are: + - LDA functionals + - LDA (equivalent with PZ and SLAPZNOGXNOGC), PWLDA + - GGA functionals + - PBE (equivalent with SLAPWPBXPBC), PBESOL, REVPBE, WC, BLYP, BP(referred to BP86), PW91, HCTH, OLYP, BLYP_LR + - meta-GGA functionals + - SCAN (require LIBXC) + - Hybrid functionals + - PBE0, HF + - If LIBXC is available, additional short-hand names of hybrid functionals are supported: HSE(referred to HSE06), B3LYP, LC_PBE, LC_WPBE, LRC_WPBE, LRC_WPBEH, CAM_PBEH, WP22, CWP22, MULLER (equivalent with POWER) + - Hybrid meta-GGA functionals + - SCAN0 (require LIBXC) + + The other way is only available when compiling with LIBXC, and it allows for supplying exchange-correlation functionals as combinations of LIBXC keywords for functional components, joined by a plus sign, for example, dft_functional='LDA_X_1D_EXPONENTIAL+LDA_C_1D_CSC'. - **Default**: Used the same as DFT functional as specified in the pseudopotential files. ### xc_temperature @@ -1075,23 +1160,19 @@ calculations. ### xc_exch_ext -- **Type**: Integer Real ... -- **Description**: Customized parameterization on the exchange part of XC functional. The first value should be the LibXC ID of the original functional, and latter values are external parameters. Default values are those of Perdew-Burke-Ernzerhof (PBE) functional. For more information on LibXC ID of functionals, please refer to [LibXC](https://libxc.gitlab.io/functionals/). For parameters of functionals of interest, please refer to the source code of LibXC, such as PBE functional interface in LibXC: [gga_x_pbe.c](https://gitlab.com/libxc/libxc/-/blob/7.0.0/src/gga_x_pbe.c). +- **Type**: Integer followed by Real values +- **Description**: Customized parameterization on the exchange part of XC functional. The first value should be the LibXC ID of the original functional, and latter values are external parameters. Default values are those of Perdew-Burke-Ernzerhof (PBE) functional. For more information on LibXC ID of functionals, please refer to LibXC. For parameters of functionals of interest, please refer to the source code of LibXC, such as PBE functional interface in LibXC: gga_x_pbe.c. + + > Note: Solely setting this keyword will take no effect on XC functionals. One should also set dft_functional to the corresponding functional to apply the customized parameterization. Presently this feature can only support parameterization on one exchange functional. - **Default**: 101 0.8040 0.2195149727645171 -- **Note**: - 1. Solely setting this keyword will take no effect on XC functionals. One should also set `dft_functional` to corresponding functional to apply the customized parameterization. For example, if you want to use the PBE functional with customized parameters, you should set `dft_functional` to `GGA_X_PBE+GGA_C_PBE` and `xc_exch_ext` to `101 0.8040 0.2195149727645171`. - 2. For functionals that do not have separate exchange and correlation parts, such as HSE06 whose corresponding LibXC notation is `HYB_GGA_XC_HSE06` and LibXC id is 428, you can set either `xc_exch_ext` or `xc_corr_ext` to `428 0.25 0.11 0.11` (which means 25% Hartree-Fock fraction, 0.11 as range-seperation) and leave the other one unset. - 3. Presently this feature can only support parameterization on **one** exchange functional. ### xc_corr_ext -- **Type**: Integer Real ... -- **Description**: Customized parameterization on the correlation part of XC functional. The first value should be the LibXC ID of the original functional, and latter values are external parameters. Default values are those of Perdew-Burke-Ernzerhof (PBE) functional. For more information on LibXC ID of functionals, please refer to [LibXC](https://libxc.gitlab.io/functionals/). For parameters of functionals of interest, please refer to the source code of LibXC, such as PBE functional interface in LibXC: [gga_c_pbe.c](https://gitlab.com/libxc/libxc/-/blob/7.0.0/src/gga_c_pbe.c). +- **Type**: Integer followed by Real values +- **Description**: Customized parameterization on the correlation part of XC functional. The first value should be the LibXC ID of the original functional, and latter values are external parameters. Default values are those of Perdew-Burke-Ernzerhof (PBE) functional. For more information on LibXC ID of functionals, please refer to LibXC. For parameters of functionals of interest, please refer to the source code of LibXC, such as PBE functional interface in LibXC: gga_c_pbe.c. + + > Note: Solely setting this keyword will take no effect on XC functionals. One should also set dft_functional to the corresponding functional to apply the customized parameterization. Presently this feature can only support parameterization on one correlation functional. - **Default**: 130 0.06672455060314922 0.031090690869654895034 1.0 -- **Note**: - 1. Solely setting this keyword will take no effect on XC functionals. One should also set `dft_functional` to corresponding functional to apply the customized parameterization. For example, if you want to use the PBE functional with customized parameters, you should set `dft_functional` to `GGA_X_PBE+GGA_C_PBE` and `xc_corr_ext` to `130 0.06672455060314922 0.031090690869654895034 1.0`. - 2. For functionals that do not have separate exchange and correlation parts, such as HSE06 whose corresponding LibXC notation is `HYB_GGA_XC_HSE06` and LibXC id is 428, you can set either `xc_exch_ext` or `xc_corr_ext` to `428 0.25 0.11 0.11` (which means 25% Hartree-Fock fraction, 0.11 as range-seperation) and leave the other one unset. - 3. Presently this feature can only support parameterization on **one** correlation functional. ### pseudo_rcut @@ -1102,9 +1183,8 @@ calculations. ### pseudo_mesh -- **Type**: Integer -- **Description**: - - 0: Use a mesh for radial integration of pseudopotentials. +- **Type**: Boolean +- **Description**: - 0: Use a mesh for radial integration of pseudopotentials. - 1: Use the mesh that is consistent with quantum espresso - **Default**: 0 @@ -1114,7 +1194,7 @@ calculations. - **Description**: The number of spin components of wave functions. - 1: Spin degeneracy - 2: Collinear spin polarized. - - 4: For the case of [noncollinear polarized](../scf/spin.md#noncollinear-spin-polarized-calculations), nspin will be automatically set to 4 without being specified by the user. + - 4: For the case of noncollinear polarized, nspin will be automatically set to 4 without being specified by the user. - **Default**: 1 ### smearing_method @@ -1126,7 +1206,7 @@ calculations. - mp: methfessel-paxton smearing method; recommended for metals. - mp2: 2-nd methfessel-paxton smearing method; recommended for metals. - mv or cold: marzari-vanderbilt smearing method. - - fd: Fermi-Dirac smearing method: $f=1/\{1+\exp[(E-\mu)/kT]\}$ and smearing_sigma below is the temperature $T$ (in Ry). + - fd: Fermi-Dirac smearing method: and smearing_sigma below is the temperature (in Ry). - **Default**: gauss ### smearing_sigma @@ -1139,8 +1219,8 @@ calculations. ### smearing_sigma_temp - **Type**: Real -- **Description**: Energy range for smearing, `smearing_sigma` = 1/2 *kB* `smearing_sigma_temp`. -- **Default**: 2 * `smearing_sigma` / kB. +- **Description**: Energy range for smearing, smearing_sigma = 1/2 kB smearing_sigma_temp. +- **Default**: 2 * smearing_sigma / kB. - **Unit**: K ### mixing_type @@ -1148,8 +1228,8 @@ calculations. - **Type**: String - **Description**: Charge mixing methods. - plain: Just simple mixing. - - pulay: Standard Pulay method. [P. Pulay Chemical Physics Letters, (1980)](https://www.sciencedirect.com/science/article/abs/pii/0009261480803964) - - broyden: Simplified modified Broyden method. [D.D. Johnson Physical Review B (1988)](https://journals.aps.org/prb/abstract/10.1103/PhysRevB.38.12807) + - pulay: Standard Pulay method. P. Pulay Chemical Physics Letters, (1980) + - broyden: Simplified modified Broyden method. D.D. Johnson Physical Review B (1988) In general, the convergence of the Broyden method is slightly faster than that of the Pulay method. - **Default**: broyden @@ -1157,24 +1237,20 @@ calculations. ### mixing_beta - **Type**: Real -- **Description**: In general, the formula of charge mixing can be written as $\rho_{new} = \rho_{old} + \beta * \rho_{update}$, where $\rho_{new}$ represents the new charge density after charge mixing, $\rho_{old}$ represents the charge density in previous step, $\rho_{update}$ is obtained through various mixing methods, and $\beta$ is set by the parameter `mixing_beta`. A lower value of 'mixing_beta' results in less influence of $\rho_{update}$ on $\rho_{new}$, making the self-consistent field (SCF) calculation more stable. However, it may require more steps to achieve convergence. -We recommend the following options: - - 0.8: `nspin=1` - - 0.4: `nspin=2` and `nspin=4` - - 0: keep charge density unchanged, usually used for restarting with `init_chg=file` or testing. - - 0.1 or less: if convergence of SCF calculation is difficult to reach, please try `0 < mixing_beta < 0.1`. - - Note: For low-dimensional large systems, the setup of `mixing_beta=0.1`, `mixing_ndim=20`, and `mixing_gg0=1.0` usually works well. +- **Description**: In general, the formula of charge mixing can be written as rho_new = rho_old + mixing_beta * drho, where rho_new represents the new charge density after charge mixing, rho_old represents the charge density in previous step, drho is obtained through various mixing methods, and mixing_beta is set by this parameter. A lower value of 'mixing_beta' results in less influence of drho on rho_new, making the self-consistent field (SCF) calculation more stable. However, it may require more steps to achieve convergence. We recommend the following options: + - 0.8: nspin=1 + - 0.4: nspin=2 and nspin=4 + - 0: keep charge density unchanged, usually used for restarting with init_chg=file or testing. + - 0.1 or less: if convergence of SCF calculation is difficult to reach, please try 0 < mixing_beta < 0.1. -- **Default**: 0.8 for `nspin=1`, 0.4 for `nspin=2` and `nspin=4`. + Note: For low-dimensional large systems, the setup of mixing_beta=0.1, mixing_ndim=20, and mixing_gg0=1.0 usually works well. +- **Default**: 0.8 for nspin=1, 0.4 for nspin=2 and nspin=4. ### mixing_beta_mag - **Type**: Real - **Description**: Mixing parameter of magnetic density. -- **Default**: `4*mixing_beta`, but the maximum value is 1.6. - -Note that `mixing_beta_mag` is not euqal to `mixing_beta` means that $\rho_{up}$ and $\rho_{down}$ mix independently from each other. This setting will fail for one case where the $\rho_{up}$ and $\rho_{down}$ of the ground state refers to different Kohn-Sham orbitals. For an atomic system, the $\rho_{up}$ and $\rho_{down}$ of the ground state refers to different Kohn-Sham orbitals. We all know Kohn-Sham orbitals are orthogonal to each other. So the mixture of $\rho_{up}$ and $\rho_{down}$ should be exactly independent, otherwise SCF cannot find the ground state forever. To sum up, please make sure `mixing_beta_mag` and `mixing_gg0_mag` exactly euqal to `mixing_beta` and `mixing_gg0` if you calculate an atomic system. +- **Default**: 4*mixing_beta, but the maximum value is 1.6. ### mixing_ndim @@ -1186,24 +1262,22 @@ Note that `mixing_beta_mag` is not euqal to `mixing_beta` means that $\rho_{up}$ ### mixing_restart -- **Type**: double -- **Description**: If the density difference between input and output `drho` is smaller than `mixing_restart`, SCF will restart at next step which means SCF will restart by using output charge density from perivos iteration as input charge density directly, and start a new mixing. Notice that `mixing_restart` will only take effect once in one SCF. - +- **Type**: Real +- **Description**: If the density difference between input and output drho is smaller than mixing_restart, SCF will restart at next step which means SCF will restart by using output charge density from perivos iteration as input charge density directly, and start a new mixing. Notice that mixing_restart will only take effect once in one SCF. - **Default**: 0 ### mixing_dmr -- **Type**: bool -- **Availability**: Only for `mixing_restart>=0.0` -- **Description**: At n-th iteration which is calculated by `drho0: The high frequency wave vectors will be suppressed by multiplying a scaling factor $\frac{k^2}{k^2+gg0^2}$. Setting `mixing_gg0 = 1.0` is normally a good starting point. Kerker preconditioner will be automatically turned off if `mixing_beta <= 0.1`. + - >0: The high frequency wave vectors will be suppressed by multiplying a scaling factor. Setting mixing_gg0 = 1.0 is normally a good starting point. Kerker preconditioner will be automatically turned off if mixing_beta <= 0.1. - 0: No Kerker scaling is performed. For systems that are difficult to converge, particularly metallic systems, enabling Kerker scaling may aid in achieving convergence. @@ -1212,8 +1286,7 @@ Note that `mixing_beta_mag` is not euqal to `mixing_beta` means that $\rho_{up}$ ### mixing_gg0_mag - **Type**: Real -- **Description**: Whether to perfom Kerker preconditioner of magnetic density. - Note: we do not recommand to open Kerker preconditioner of magnetic density unless the system is too hard to converge. +- **Description**: Whether to perfom Kerker preconditioner of magnetic density. Note: we do not recommand to open Kerker preconditioner of magnetic density unless the system is too hard to converge. - **Default**: 0.0 ### mixing_gg0_min @@ -1225,18 +1298,16 @@ Note that `mixing_beta_mag` is not euqal to `mixing_beta` means that $\rho_{up}$ ### mixing_angle - **Type**: Real -- **Availability**: Only relevant for non-colinear calculations `nspin=4`. -- **Description**: Normal broyden mixing can give the converged result for a given magnetic configuration. If one is not interested in the energies of a given magnetic configuration but wants to determine the ground state by relaxing the magnetic moments’ directions, one cannot rely on the standard Broyden mixing algorithm. To enhance the ability to find correct magnetic configuration for non-colinear calculations, ABACUS implements a promising mixing method proposed by J. Phys. Soc. Jpn. 82 (2013) 114706. Here, `mixing_angle` is the angle mixing parameter. In fact, only `mixing_angle=1.0` is implemented currently. - - **<=0**: Normal broyden mixing for $m_{x}, m_{y}, m_{z}$ - - **>0**: Angle mixing for the modulus $|m|$ with `mixing_angle=1.0` +- **Availability**: *Only relevant for non-colinear calculations nspin=4.* +- **Description**: Normal broyden mixing can give the converged result for a given magnetic configuration. If one is not interested in the energies of a given magnetic configuration but wants to determine the ground state by relaxing the magnetic moments' directions, one cannot rely on the standard Broyden mixing algorithm. To enhance the ability to find correct magnetic configuration for non-colinear calculations, ABACUS implements a promising mixing method proposed by J. Phys. Soc. Jpn. 82 (2013) 114706. Here, mixing_angle is the angle mixing parameter. In fact, only mixing_angle=1.0 is implemented currently. + - <=0: Normal broyden mixing + - >0: Angle mixing for the modulus with mixing_angle=1.0 - **Default**: -10.0 -Note: In new angle mixing, you should set `mixing_beta_mag >> mixing_beta`. The setup of `mixing_beta=0.2`, `mixing_beta_mag=1.0` usually works well. - ### mixing_tau - **Type**: Boolean -- **Availability**: Only relevant for meta-GGA calculations. +- **Availability**: *Only relevant for meta-GGA calculations.* - **Description**: Whether to mix the kinetic energy density. - True: The kinetic energy density will also be mixed. It seems for general cases, SCF converges fine even without this mixing. However, if there is difficulty in converging SCF for meta-GGA, it might be helpful to turn this on. - False: The kinetic energy density will not be mixed. @@ -1245,7 +1316,7 @@ Note: In new angle mixing, you should set `mixing_beta_mag >> mixing_beta`. The ### mixing_dftu - **Type**: Boolean -- **Availability**: Only relevant for DFT+U calculations. +- **Availability**: *Only relevant for DFT+U calculations.* - **Description**: Whether to mix the occupation matrices. - True: The occupation matrices will also be mixed by plain mixing. From experience this is not very helpful if the +U calculation does not converge. - False: The occupation matrices will not be mixed. @@ -1253,14 +1324,13 @@ Note: In new angle mixing, you should set `mixing_beta_mag >> mixing_beta`. The ### gamma_only -- **Type**: Integer -- **Availability**: Only used in localized orbitals set +- **Type**: Boolean +- **Availability**: *Only used in localized orbitals set* - **Description**: Whether to use gamma_only algorithm. - 0: more than one k-point is used and the ABACUS is slower compared to the gamma only algorithm. - 1: ABACUS uses gamma only, the algorithm is faster and you don't need to specify the k-points file. Note: If gamma_only is set to 1, the KPT file will be overwritten. So make sure to turn off gamma_only for multi-k calculations. - - **Default**: 0 ### scf_nmax @@ -1274,7 +1344,7 @@ Note: In new angle mixing, you should set `mixing_beta_mag >> mixing_beta`. The - **Type**: Real - **Description**: It's the density threshold for electronic iteration. It represents the charge density error between two sequential densities from electronic iterations. Usually for local orbitals, usually 1e-6 may be accurate enough. - **Default**: 1.0e-9 (plane-wave basis), or 1.0e-7 (localized atomic orbital basis). -- **Unit**: Ry if `scf_thr_type=1`, **dimensionless** if `scf_thr_type=2` +- **Unit**: Ry if scf_thr_type=1, dimensionless if scf_thr_type=2 ### scf_ene_thr @@ -1287,100 +1357,109 @@ Note: In new angle mixing, you should set `mixing_beta_mag >> mixing_beta`. The - **Type**: Integer - **Description**: Choose the calculation method of convergence criterion. - - 1: the criterion is defined as $\Delta\rho_G = \frac{1}{2}\iint{\frac{\Delta\rho(r)\Delta\rho(r')}{|r-r'|}d^3r d^3r'}$, which is used in SCF of PW basis with unit Ry. - - 2: the criterion is defined as $\Delta\rho_R = \frac{1}{N_e}\int{|\Delta\rho(r)|d^3r}$, where $N_e$ is the number of electron, which is used in SCF of LCAO with unit **dimensionless**. - + - 1: the criterion is defined in reciprocal space, which is used in SCF of PW basis with unit Ry. + - 2: the criterion is defined in real space, where is the number of electron, which is used in SCF of LCAO with unit dimensionless. - **Default**: 1 (plane-wave basis), or 2 (localized atomic orbital basis). ### scf_os_stop -- **Type**: bool -- **Description**: For systems that are difficult to converge, the SCF process may exhibit oscillations in charge density, preventing further progress toward the specified convergence criteria and resulting in continuous oscillation until the maximum number of steps is reached; this greatly wastes computational resources. To address this issue, this function allows ABACUS to terminate the SCF process early upon detecting oscillations, thus reducing subsequent meaningless calculations. The detection of oscillations is based on the slope of the logarithm of historical drho values.. To this end, Least Squares Method is used to calculate the slope of the logarithmically taken drho for the previous `scf_os_ndim` iterations. If the calculated slope is larger than `scf_os_thr`, stop the SCF. - - - 0: The SCF will continue to run regardless of whether there is oscillation or not. - - 1: If the calculated slope is larger than `scf_os_thr`, stop the SCF. +- **Type**: Boolean +- **Description**: For systems that are difficult to converge, the SCF process may exhibit oscillations in charge density, preventing further progress toward the specified convergence criteria and resulting in continuous oscillation until the maximum number of steps is reached; this greatly wastes computational resources. To address this issue, this function allows ABACUS to terminate the SCF process early upon detecting oscillations, thus reducing subsequent meaningless calculations. The detection of oscillations is based on the slope of the logarithm of historical drho values. To this end, Least Squares Method is used to calculate the slope of the logarithmically taken drho for the previous scf_os_ndim iterations. If the calculated slope is larger than scf_os_thr, stop the SCF. + - 0: The SCF will continue to run regardless of whether there is oscillation or not. + - 1: If the calculated slope is larger than scf_os_thr, stop the SCF. - **Default**: false ### scf_os_thr -- **Type**: double -- **Description**: The slope threshold to determine if the SCF is stuck in a charge density oscillation. If the calculated slope is larger than `scf_os_thr`, stop the SCF. - +- **Type**: Real +- **Description**: The slope threshold to determine if the SCF is stuck in a charge density oscillation. If the calculated slope is larger than scf_os_thr, stop the SCF. - **Default**: -0.01 ### scf_os_ndim -- **Type**: int -- **Description**: To determine the number of old iterations' `drho` used in slope calculations. -- **Default**: `mixing_ndim` +- **Type**: Integer +- **Description**: To determine the number of old iterations' drho used in slope calculations. +- **Default**: mixing_ndim ### sc_os_ndim -- **Type**: int -- **Description**: To determine the number of old iterations to judge oscillation, it occured, more accurate lambda with DeltaSpin method would be calculated, only for PW base. +- **Type**: Integer +- **Description**: To determine the number of old iterations to judge oscillation, it occured, more accurate lambda with DeltaSpin method would be calculated, only for PW base. - **Default**: 5 -### chg_extrap - -- **Type**: String -- **Description**: Methods to do extrapolation of density when ABACUS is doing geometry relaxations or molecular dynamics. - - atomic: atomic extrapolation. - - first-order: first-order extrapolation. - - second-order: second-order extrapolation. -- **Default**: first-order (geometry relaxations), second-order (molecular dynamics), else atomic - ### lspinorb - **Type**: Boolean -- **Description**: Whether to consider spin-orbital coupling effect in the calculation. - - True: Consider spin-orbital coupling effect, and `nspin` is also automatically set to 4. - - False: Do not consider spin-orbital coupling effect. +- **Description**: Whether to consider spin-orbit coupling (SOC) effect in the calculation. + - True: Consider spin-orbit coupling effect. When enabled: + - nspin is automatically set to 4 (noncollinear spin representation) + - Symmetry is automatically disabled (SOC breaks inversion symmetry) + - Requires full-relativistic pseudopotentials with has_so=true in the UPF header + - False: Do not consider spin-orbit coupling effect. + - Common Error: "no soc upf used for lspinorb calculation" - ensure you are using full-relativistic pseudopotentials - **Default**: False ### noncolin - **Type**: Boolean -- **Description**: Whether to allow non-collinear polarization, in which case the coupling between spin up and spin down will be taken into account. - - True: Allow non-collinear polarization, and `nspin` is also automatically set to 4. - - False: Do not allow non-collinear polarization. +- **Description**: Whether to allow non-collinear magnetic moments, where magnetization can point in arbitrary directions (x, y, z components) rather than being constrained to the z-axis. + - True: Allow non-collinear polarization. When enabled: + - nspin is automatically set to 4 + - Wave function dimension is doubled (npol=2), and the number of occupied states is doubled + - Charge density has 4 components (Pauli spin matrices) + - Cannot be used with gamma_only=true + - Can be combined with lspinorb=true for SOC effects with non-collinear magnetism + - False: Do not allow non-collinear polarization (magnetization constrained to z-axis). + - Relationship with lspinorb: + - noncolin=0, lspinorb=1: SOC with z-axis magnetism only (for non-magnetic materials with SOC) + - noncolin=1, lspinorb=0: Non-collinear magnetism without SOC + - noncolin=1, lspinorb=1: Both non-collinear magnetism and SOC - **Default**: False ### soc_lambda - **Type**: Real -- **Availability**: Relevant for soc calculations. -- **Description**: Sometimes, for some real materials, both scalar-relativistic and full-relativistic can not describe the exact spin-orbit coupling. Artificial modulation may help in such cases. +- **Availability**: *Only works when lspinorb=true* +- **Description**: Modulates the strength of spin-orbit coupling effect. Sometimes, for some real materials, both scalar-relativistic and full-relativistic pseudopotentials cannot describe the exact spin-orbit coupling. Artificial modulation may help in such cases. - `soc_lambda`, which has value range [0.0, 1.0] , is used for modulate SOC effect. + soc_lambda, which has value range [0.0, 1.0], is used to modulate SOC effect: - In particular, `soc_lambda 0.0` refers to scalar-relativistic case and `soc_lambda 1.0` refers to full-relativistic case. + - soc_lambda 0.0: Scalar-relativistic case (no SOC) + - soc_lambda 1.0: Full-relativistic case (full SOC) + - Intermediate values: Partial-relativistic SOC (interpolation between scalar and full) + + Use case: When experimental or high-level theoretical results suggest that the SOC effect is weaker or stronger than what full-relativistic pseudopotentials predict, you can adjust this parameter to match the target behavior. - **Default**: 1.0 +### dfthalf_type + +- **Type**: Integer +- **Description**: DFT-1/2 type: + - 0: DFT-1/2 is off. + - 1: Shell DFT-1/2 method is used. +- **Default**: 0 + [back to top](#full-list-of-input-keywords) ## Electronic structure (SDFT) -These variables are used to control the parameters of stochastic DFT (SDFT), mixed stochastic-deterministic DFT (MDFT), or complete-basis Chebyshev method (CT). In the following text, stochastic DFT is used to refer to these three methods. We suggest using SDFT to calculate high-temperature systems and we only support [smearing_method](#smearing_method) "fd". Both "scf" and "nscf" [calculation](#calculation) are supported. - ### method_sto - **Type**: Integer -- **Availability**: [esolver_type](#esolver_type) = `sdft` +- **Availability**: *esolver_type = sdft* - **Description**: Different methods to do stochastic DFT - - 1: Calculate $T_n(\hat{h})\ket{\chi}$ twice, where $T_n(x)$ is the n-th order Chebyshev polynomial and $\hat{h}=\frac{\hat{H}-\bar{E}}{\Delta E}$ owning eigenvalues $\in(-1,1)$. This method cost less memory but is slower. - - 2: Calculate $T_n(\hat{h})\ket{\chi}$ once but needs much more memory. This method is much faster. Besides, it calculates $N_e$ with $\bra{\chi}\sqrt{\hat f}\sqrt{\hat f}\ket{\chi}$, which needs a smaller [nche_sto](#nche_sto). However, when the memory is not enough, only method 1 can be used. + - 1: Calculate twice, this method cost less memory but is slower. + - 2: Calculate once but needs much more memory. This method is much faster. Besides, it calculates with a smaller nche_sto. However, when the memory is not enough, only method 1 can be used. - other: use 2 - **Default**: 2 ### nbands_sto - **Type**: Integer or string -- **Availability**: [esolver_type](#esolver_type) = `sdft` +- **Availability**: *esolver_type = sdft* - **Description**: The number of stochastic orbitals - - \> 0: Perform stochastic DFT. - Increasing the number of bands improves accuracy and reduces stochastic errors, which scale as $1/\sqrt{N_{\chi}}$; - To perform mixed stochastic-deterministic DFT, you should set [nbands](#nbands), which represents the number of KS orbitals. + - > 0: Perform stochastic DFT. Increasing the number of bands improves accuracy and reduces stochastic errors; To perform mixed stochastic-deterministic DFT, you should set nbands, which represents the number of KS orbitals. - 0: Perform Kohn-Sham DFT. - all: All complete basis sets are used to replace stochastic orbitals with the Chebyshev method (CT), resulting in the same results as KSDFT without stochastic errors. - **Default**: 256 @@ -1388,58 +1467,58 @@ These variables are used to control the parameters of stochastic DFT (SDFT), mi ### nche_sto - **Type**: Integer -- **Availability**: [esolver_type](#esolver_type) = `sdft` +- **Availability**: *esolver_type = sdft* - **Description**: Chebyshev expansion orders for stochastic DFT. - **Default**: 100 ### emin_sto - **Type**: Real -- **Availability**: [esolver_type](#esolver_type) = `sdft` -- **Description**: Trial energy to guess the lower bound of eigen energies of the Hamiltonian Operator $\hat{H}$. +- **Availability**: *esolver_type = sdft* +- **Description**: Trial energy to guess the lower bound of eigen energies of the Hamiltonian Operator. - **Default**: 0.0 - **Unit**: Ry ### emax_sto - **Type**: Real -- **Availability**: [esolver_type](#esolver_type) = `sdft` -- **Description**: Trial energy to guess the upper bound of eigen energies of the Hamiltonian Operator $\hat{H}$. +- **Availability**: *esolver_type = sdft* +- **Description**: Trial energy to guess the upper bound of eigen energies of the Hamiltonian Operator. - **Default**: 0.0 - **Unit**: Ry ### seed_sto - **Type**: Integer -- **Availability**: [esolver_type](#esolver_type) = `sdft` +- **Availability**: *esolver_type = sdft* - **Description**: The random seed to generate stochastic orbitals. - - \>= 0: Stochastic orbitals have the form of $\exp(i2\pi\theta(G))$, where $\theta$ is a uniform distribution in $(0,1)$. + - >= 0: Stochastic orbitals have the form of exp(i*theta), where theta is a uniform distribution in [0, 2*pi). - 0: the seed is decided by time(NULL). - - \<= -1: Stochastic orbitals have the form of $\pm1$ with equal probability. + - <= -1: Stochastic orbitals have the form of +1 or -1 with equal probability. - -1: the seed is decided by time(NULL). - **Default**: 0 ### initsto_ecut - **Type**: Real -- **Availability**: [esolver_type](#esolver_type) = `sdft` -- **Description**: Stochastic wave functions are initialized in a large box generated by "4*`initsto_ecut`". `initsto_ecut` should be larger than [ecutwfc](#ecutwfc). In this method, SDFT results are the same when using different cores. Besides, coefficients of the same G are the same when ecutwfc is rising to initsto_ecut. If it is smaller than [ecutwfc](#ecutwfc), it will be turned off. +- **Availability**: *esolver_type = sdft* +- **Description**: Stochastic wave functions are initialized in a large box generated by "4*initsto_ecut". initsto_ecut should be larger than ecutwfc. In this method, SDFT results are the same when using different cores. Besides, coefficients of the same G are the same when ecutwfc is rising to initsto_ecut. If it is smaller than ecutwfc, it will be turned off. - **Default**: 0.0 - **Unit**: Ry ### initsto_freq - **Type**: Integer -- **Availability**: [esolver_type](#esolver_type) = `sdft` +- **Availability**: *esolver_type = sdft* - **Description**: Frequency (once each initsto_freq steps) to generate new stochastic orbitals when running md. - positive integer: Update stochastic orbitals - - 0: Never change stochastic orbitals. + - 0: Never change stochastic orbitals. - **Default**: 0 ### npart_sto - **Type**: Integer -- **Availability**: [method_sto](#method_sto) = `2` and [out_dos](#out_dos) = 1 or [cal_cond](#cal_cond) = `True` +- **Availability**: *method_sto = 2 and out_dos = 1 or cal_cond = True* - **Description**: Make memory cost to 1/npart_sto times of the previous one when running the post process of SDFT like DOS or conductivities. - **Default**: 1 @@ -1447,32 +1526,54 @@ These variables are used to control the parameters of stochastic DFT (SDFT), mi ## Geometry relaxation -These variables are used to control the geometry relaxation. - ### relax_method -- **Type**: String -- **Description**: The methods to do geometry optimization. - - cg: using the conjugate gradient (CG) algorithm. Note that there are two implementations of the conjugate gradient (CG) method, see [relax_new](#relax_new). - - bfgs: using the Broyden–Fletcher–Goldfarb–Shanno (BFGS) algorithm. - - bfgs_trad: using the traditional Broyden–Fletcher–Goldfarb–Shanno (BFGS) algorithm. - - cg_bfgs: using the CG method for the initial steps, and switching to BFGS method when the force convergence is smaller than [relax_cg_thr](#relax_cg_thr). - - sd: using the steepest descent (SD) algorithm. - - fire: the Fast Inertial Relaxation Engine method (FIRE), a kind of molecular-dynamics-based relaxation algorithm, is implemented in the molecular dynamics (MD) module. The algorithm can be used by setting [calculation](#calculation) to `md` and [md_type](#md_type) to `fire`. Also ionic velocities should be set in this case. See [fire](../md.md#fire) for more details. -- **Default**: cg +- **Type**: Vector of string +- **Description**: The methods to do geometry optimization. The available algorithms depend on the relax_new setting. + + First element (algorithm selection): + + - cg: Conjugate gradient (CG) algorithm. Available for both relax_new = True (default, simultaneous optimization) and relax_new = False (nested optimization). See relax_new for implementation details. + - bfgs: Broyden–Fletcher–Goldfarb–Shanno (BFGS) quasi-Newton algorithm. Only available when relax_new = False. + - lbfgs: Limited-memory BFGS algorithm, suitable for large systems. Only available when relax_new = False. + - cg_bfgs: Mixed method starting with CG and switching to BFGS when force convergence reaches relax_cg_thr. Only available when relax_new = False. + - sd: Steepest descent algorithm. Only available when relax_new = False. Not recommended for production use. + - fire: Fast Inertial Relaxation Engine method, a molecular-dynamics-based relaxation algorithm. Use by setting calculation to md and md_type to fire. Ionic velocities must be set in STRU file. See fire for details. + + Second element (BFGS variant, only when first element is bfgs): + + - 1: Traditional BFGS that updates the Hessian matrix B and then inverts it. + - 2 or omitted: Default BFGS that directly updates the inverse Hessian (recommended). + + > Note: In the 3.10-LTS version, the type of this parameter is std::string. It can be set to "cg", "bfgs", "cg_bfgs", "bfgs_trad", "lbfgs", "sd", "fire". +- **Default**: cg 1 ### relax_new - **Type**: Boolean -- **Description**: At around the end of 2022 we made a new implementation of the Conjugate Gradient (CG) method for `relax` and `cell-relax` calculations. But the old implementation was also kept. - - True: use the new implementation of CG method for `relax` and `cell-relax` calculations. - - False: use the old implementation of CG method for `relax` and `cell-relax` calculations. +- **Description**: Controls which implementation of geometry relaxation to use. At the end of 2022, a new implementation of the Conjugate Gradient (CG) method was introduced for relax and cell-relax calculations, while the old implementation was kept for backward compatibility. + + + - True (default): Use the new CG implementation with the following features: + - Simultaneous optimization of ionic positions and cell parameters (for cell-relax) + - Line search algorithm for step size determination + - Only CG algorithm is available (relax_method must be cg) + - Supports advanced cell constraints: fixed_axes = "shape", "volume", "a", "b", "c", etc. + - Supports fixed_ibrav to maintain lattice type + - More efficient for variable-cell relaxation + - Step size controlled by relax_scale_force + + - False: Use the old implementation with the following features: + - Nested optimization procedure: ionic positions optimized first, then cell parameters (for cell-relax) + - Multiple algorithms available: cg, bfgs, lbfgs, sd, cg_bfgs + - Limited cell constraints: only fixed_axes = "volume" is supported + - Traditional approach with separate ionic and cell optimization steps - **Default**: True ### relax_scale_force - **Type**: Real -- **Availability**: Only used when `relax_new` set to `True` +- **Availability**: *Only used when relax_new set to True* - **Description**: The paramether controls the size of the first conjugate gradient step. A smaller value means the first step along a new CG direction is smaller. This might be helpful for large systems, where it is safer to take a smaller initial step to prevent the collapse of the whole configuration. - **Default**: 0.5 @@ -1485,80 +1586,70 @@ These variables are used to control the geometry relaxation. ### relax_cg_thr - **Type**: Real -- **Description**: When move-method is set to `cg_bfgs`, a mixed algorithm of conjugate gradient (CG) method and Broyden–Fletcher–Goldfarb–Shanno (BFGS) method is used. The ions first move according to CG method, then switched to BFGS method when the maximum of force on atoms is reduced below the CG force threshold, which is set by this parameter. +- **Availability**: *Only used when relax_new = False and relax_method = cg_bfgs* +- **Description**: When relax_method is set to cg_bfgs, a mixed algorithm of conjugate gradient (CG) and Broyden–Fletcher–Goldfarb–Shanno (BFGS) is used. The ions first move according to the CG method, then switch to the BFGS method when the maximum force on atoms is reduced below this threshold. - **Default**: 0.5 - **Unit**: eV/Angstrom -### cal_force - -- **Type**: Boolean -- **Description**: - - **True**: Calculate the force at the end of the electronic iteration - - **False**: No force calculation at the end of the electronic iteration -- **Default**: False if `calculation` is set to `scf`, True if `calculation` is set to `cell-relax`, `relax`, or `md`. - ### force_thr - **Type**: Real -- **Description**: Threshold of the force convergence. The threshold is compared with the largest force among all of the atoms. The recommended value for using atomic orbitals is 0.04 eV/Angstrom (0.0016 Ry/Bohr). The parameter is equivalent to [force_thr_ev](#force_thr_ev) except for the unit, you can choose either you like. +- **Description**: Threshold of the force convergence. The threshold is compared with the largest force among all of the atoms. The recommended value for using atomic orbitals is 0.04 eV/Angstrom (0.0016 Ry/Bohr). The parameter is equivalent to force_thr_ev except for the unit, you can choose either you like. - **Default**: 0.001 - **Unit**: Ry/Bohr (25.7112 eV/Angstrom) ### force_thr_ev - **Type**: Real -- **Description**: Threshold of the force convergence. The threshold is compared with the largest force among all of the atoms. The recommended value for using atomic orbitals is 0.04 eV/Angstrom (0.0016 Ry/Bohr). The parameter is equivalent to [force_thr](#force_thr) except for the unit. You may choose either you like. +- **Description**: Threshold of the force convergence. The threshold is compared with the largest force among all of the atoms. The recommended value for using atomic orbitals is 0.04 eV/Angstrom (0.0016 Ry/Bohr). The parameter is equivalent to force_thr except for the unit. You may choose either you like. - **Default**: 0.0257112 - **Unit**: eV/Angstrom (0.03889 Ry/Bohr) ### force_zero_out - **Type**: Real -- **Description**: The atomic forces that are smaller than `force_zero_out` will be treated as zero. +- **Description**: The atomic forces that are smaller than force_zero_out will be treated as zero. - **Default**: 0.0 - **Unit**: eV/Angstrom ### relax_bfgs_w1 - **Type**: Real -- **Description**: Controls the Wolfe condition for Broyden–Fletcher–Goldfarb–Shanno (BFGS) algorithm used in geometry relaxation. You can look into the paper Phys.Chem.Chem.Phys.,2000,2,2177 for more information. +- **Availability**: *Only used when relax_new = False and relax_method is bfgs or cg_bfgs* +- **Description**: Controls the Wolfe condition for the Broyden–Fletcher–Goldfarb–Shanno (BFGS) algorithm used in geometry relaxation. This parameter sets the sufficient decrease condition (c1 in Wolfe conditions). For more information, see Phys. Chem. Chem. Phys., 2000, 2, 2177. - **Default**: 0.01 ### relax_bfgs_w2 - **Type**: Real -- **Description**: Controls the Wolfe condition for Broyden–Fletcher–Goldfarb–Shanno (BFGS) algorithm used in geometry relaxation. You can look into the paper Phys.Chem.Chem.Phys.,2000,2,2177 for more information. +- **Availability**: *Only used when relax_new = False and relax_method is bfgs or cg_bfgs* +- **Description**: Controls the Wolfe condition for the Broyden–Fletcher–Goldfarb–Shanno (BFGS) algorithm used in geometry relaxation. This parameter sets the curvature condition (c2 in Wolfe conditions). For more information, see Phys. Chem. Chem. Phys., 2000, 2, 2177. - **Default**: 0.5 ### relax_bfgs_rmax - **Type**: Real -- **Description**: For geometry optimization. It stands for the maximal movement of all the atoms. The sum of the movements from all atoms can be increased during the optimization steps. However, it can not be larger than `relax_bfgs_rmax` -- **Unit**: Bohr +- **Availability**: *Only used when relax_new = False and relax_method is bfgs or cg_bfgs* +- **Description**: Maximum allowed total displacement of all atoms during geometry optimization. The sum of atomic displacements can increase during optimization steps but cannot exceed this value. - **Default**: 0.8 +- **Unit**: Bohr ### relax_bfgs_rmin - **Type**: Real -- **Description**: For geometry optimization. It indicates the minimal movement of all the atoms. When the movement of all the atoms is smaller than relax_bfgs_rmin Bohr, and the force convergence is still not achieved, the calculation will break down. +- **Availability**: *Only used when relax_new = False and relax_method = bfgs 1 (traditional BFGS)* +- **Description**: Minimum allowed total displacement of all atoms. When the total atomic displacement falls below this value and force convergence is not achieved, the calculation will terminate. Note: This parameter is not used in the default BFGS algorithm (relax_method = bfgs 2 or bfgs). - **Default**: 1e-5 - **Unit**: Bohr ### relax_bfgs_init - **Type**: Real -- **Description**: For geometry optimization. It stands for the sum of initial movements of all of the atoms. +- **Availability**: *Only used when relax_new = False and relax_method is bfgs or cg_bfgs* +- **Description**: Initial total displacement of all atoms in the first BFGS step. This sets the scale for the initial movement. - **Default**: 0.5 - **Unit**: Bohr -### cal_stress - -- **Type**: Boolean -- **Description**: - - **True**: Calculate the stress at the end of the electronic iteration - - **False**: No calculation of the stress at the end of the electronic iteration -- **Default**: True if `calculation` is `cell-relax`, False otherwise. - ### stress_thr - **Type**: Real @@ -1566,7 +1657,21 @@ These variables are used to control the geometry relaxation. - **Default**: 0.5 - **Unit**: kbar -### press1, press2, press3 +### press1 + +- **Type**: Real +- **Description**: The external pressures along three axes. Positive input value is taken as compressive stress. +- **Default**: 0 +- **Unit**: kbar + +### press2 + +- **Type**: Real +- **Description**: The external pressures along three axes. Positive input value is taken as compressive stress. +- **Default**: 0 +- **Unit**: kbar + +### press3 - **Type**: Real - **Description**: The external pressures along three axes. Positive input value is taken as compressive stress. @@ -1576,200 +1681,188 @@ These variables are used to control the geometry relaxation. ### fixed_axes - **Type**: String -- **Availability**: Only used when `calculation` set to `cell-relax` -- **Description**: Axes that are fixed during cell relaxation. Possible choices are: - - None**: default; all of the axes can relax - - volume**: relaxation with fixed volume - - shape**: fix shape but change volume (i.e. only lattice constant changes) - - a: fix a axis during relaxation - - b: fix b axis during relaxation - - c: fix c axis during relaxation - - ab: fix both a and b axes during relaxation - - ac: fix both a and c axes during relaxation - - bc: fix both b and c axes during relaxation - -> Note : fixed_axes = "shape" and "volume" are only available for [relax_new](#relax_new) = True +- **Availability**: *Only used when calculation is set to cell-relax* +- **Description**: Specifies which cell degrees of freedom are fixed during variable-cell relaxation. The available options depend on the relax_new setting: + + When relax_new = True (default), all options are available: + + - None: Default; all cell parameters can relax freely + - volume: Relaxation with fixed volume (allows shape changes) + - shape: Fix shape but allow volume changes (hydrostatic pressure only) + - a: Fix the a-axis lattice vector during relaxation + - b: Fix the b-axis lattice vector during relaxation + - c: Fix the c-axis lattice vector during relaxation + - ab: Fix both a and b axes during relaxation + - ac: Fix both a and c axes during relaxation + - bc: Fix both b and c axes during relaxation + + When relax_new = False, all options are now available: + - None: Default; all cell parameters can relax freely + - volume: Relaxation with fixed volume (allows shape changes). Volume is preserved by rescaling the lattice after each update. + - shape: Fix shape but allow volume changes (hydrostatic pressure only). Stress tensor is replaced with isotropic pressure. + - a, b, c, ab, ac, bc: Fix specific lattice vectors. Gradients for fixed vectors are set to zero. + + > Note: For VASP users, see the ISIF correspondence table in the geometry optimization documentation. Both implementations now support all constraint types. - **Default**: None ### fixed_ibrav - **Type**: Boolean -- **Availability**: Must be used along with [relax_new](#relax_new) set to True, and a specific [latname](#latname) must be provided -- **Description**: - - True: the lattice type will be preserved during relaxation +- **Availability**: *Can be used with both relax_new = True and relax_new = False. A specific latname must be provided.* +- **Description**: - True: the lattice type will be preserved during relaxation. The lattice vectors are reconstructed to match the specified Bravais lattice type after each update. - False: No restrictions are exerted during relaxation in terms of lattice type -> Note: it is possible to use `fixed_ibrav` with `fixed_axes`, but please make sure you know what you are doing. For example, if we are doing relaxation of a simple cubic lattice (`latname` = "sc"), and we use `fixed_ibrav` along with `fixed_axes` = "volume", then the cell is never allowed to move and as a result, the relaxation never converges. - + > Note: it is possible to use fixed_ibrav with fixed_axes, but please make sure you know what you are doing. For example, if we are doing relaxation of a simple cubic lattice (latname = "sc"), and we use fixed_ibrav along with fixed_axes = "volume", then the cell is never allowed to move and as a result, the relaxation never converges. When both are used, fixed_ibrav is applied first, then fixed_axes = "volume" rescaling is applied. - **Default**: False ### fixed_atoms - **Type**: Boolean -- **Description**: - - True: The direct coordinates of atoms will be preserved during variable-cell relaxation. - - False: No restrictions are exerted on positions of all atoms. However, users can still fix certain components of certain atoms by using the `m` keyword in `STRU` file. For the latter option, check the end of this [instruction](stru.md). +- **Description**: - True: The direct coordinates of atoms will be preserved during variable-cell relaxation. + - False: No restrictions are exerted on positions of all atoms. However, users can still fix certain components of certain atoms by using the m keyword in STRU file. For the latter option, check the end of this instruction. - **Default**: False -### cell_factor +[back to top](#full-list-of-input-keywords) -- **Type**: Real -- **Description**: Used in the construction of the pseudopotential tables. It should exceed the maximum linear contraction of the cell during a simulation. -- **Default**: 1.2 +## Output information -[back to top](#full-list-of-input-keywords) +### out_freq_ion + +- **Type**: Integer +- **Description**: Controls the output interval in ionic steps. When set to a positive integer, information such as charge density, local potential, electrostatic potential, Hamiltonian matrix, overlap matrix, density matrix, and Mulliken population analysis is printed every n ionic steps. + + > Note: In RT-TDDFT calculations, this parameter is inactive; output frequency is instead controlled by out_freq_td. +- **Default**: 0 + +### out_freq_td -## Variables related to output information +- **Type**: Integer +- **Description**: Controls the output interval in completed electronic evolution steps during RT-TDDFT calculations. When set to a positive integer n, detailed information (see out_freq_ion) is printed every n electron time-evolution steps (i.e., every STEP OF ELECTRON EVOLVE). For example, if you wish to output information once per ionic step, you should set out_freq_td equal to estep_per_md, since one ionic step corresponds to estep_per_md electronic evolution steps. -These variables are used to control the output of properties. + > Note: This parameter is only active in RT-TDDFT mode (esolver_type = tddft). It has no effect in ground-state calculations. +- **Default**: 0 ### out_freq_elec - **Type**: Integer -- **Description**: Output the charge density (only binary format, controlled by [out_chg](#out_chg)), wavefunction (controlled by [out_wfc_pw](#out_wfc_pw)) per `out_freq_elec` electronic iterations. Note that they are always output when converged or reach the maximum iterations [scf_nmax](#scf_nmax). -- **Default**: [scf_nmax](#scf_nmax) +- **Description**: Output the charge density (only binary format, controlled by out_chg), wavefunction (controlled by out_wfc_pw) per out_freq_elec electronic iterations. Note that they are always output when converged or reach the maximum iterations scf_nmax. +- **Default**: scf_nmax ### out_chg - **Type**: Integer \[Integer\](optional) -- **Description**: - The first integer controls whether to output the charge density on real space grids: - - 1: Output the charge density (in Bohr^-3) on real space grids into the density files in the folder `OUT.${suffix}`. The files are named as: - - nspin = 1: `chgs1.cube`; - - nspin = 2: `chgs1.cube`, and `chgs2.cube`; - - nspin = 4: `chgs1.cube`, `chgs2.cube`, `chgs3.cube`, and `chgs4.cube`; - Note that by using the Meta-GGA functional, additional files containing the kinetic energy density will be output with the following names: - - nspin = 1: `taus1.cube`; - - nspin = 2: `taus1.cube`, and `taus2.cube`; - - nspin = 4: `taus1.cube`, `taus2.cube`, `taus3.cube`, and `taus4.cube`; - - 2: On top of 1, also output the initial charge density files with a suffix name as '_ini', such as `taus1_ini.cube`, etc. - - -1: disable the charge density auto-back-up file `{suffix}-CHARGE-DENSITY.restart`, useful for large systems. - - The second integer controls the precision of the charge density output, if not given, will use `3` as default. For purpose restarting from this file and other high-precision involved calculation, recommend to use `10`. - - --- - The circle order of the charge density on real space grids is: x is the outer loop, then y and finally z (z is moving fastest). +- **Description**: The first integer controls whether to output the charge density on real space grids: + - 1: Output the charge density (in Bohr^-3) on real space grids into the density files in the folder OUT.{suffix} too, which can be read in NSCF calculation. - In EXX(exact exchange) calculations, (i.e. *[dft_fuctional](#dft_functional)==hse/hf/pbe0/scan0* or *[rpa](#rpa)==True*), the Hexx(R) files will be output in the folder `OUT.${suffix}` too, which can be read in NSCF calculation. + In molecular dynamics simulations, the output frequency is controlled by out_freq_ion. - In molecular dynamics simulations, the output frequency is controlled by [out_interval](#out_interval). + > Note: In the 3.10-LTS version, the file names are SPIN1_CHG.cube and SPIN1_CHG_INI.cube, etc. - **Default**: 0 3 -- **Note**: In the 3.10-LTS version, the file names are SPIN1_CHG.cube and SPIN1_CHG_INI.cube, etc. -### out_xc_r +### out_pot - **Type**: Integer \[Integer\](optional) -- **Description**: - The first integer controls whether to output the exchange-correlation (in Bohr^-3) on real space grids using Libxc to folder `OUT.${suffix}`: - - 0: rho, amag, sigma, exc - - 1: vrho, vsigma - - 2: v2rho2, v2rhosigma, v2sigma2 - - 3: v3rho3, v3rho2sigma, v3rhosigma2, v3sigma3 - - 4: v4rho4, v4rho3sigma, v4rho2sigma2, v4rhosigma3, v4sigma4 - The meaning of the files is presented in [Libxc](https://libxc.gitlab.io/manual/libxc-5.1.x/) +- **Description**: - 1: Output the total local potential (i.e., local pseudopotential + Hartree potential + XC potential + external electric field (if exists) + dipole correction potential (if exists) + ...) on real space grids (in Ry) into files in the folder OUT.{suffix}. The files are named as: + - nspin = 1: pots1.cube; + - nspin = 2: pots1.cube and pots2.cube; + - nspin = 4: pots1.cube, pots2.cube, pots3.cube, and pots4.cube + - 2: Output the electrostatic potential on real space grids into OUT.{suffix}/pot_es.cube. The Python script named tools/average_pot/aveElecStatPot.py can be used to calculate the average electrostatic potential along the z-axis and outputs it into ElecStaticPot_AVE. Please note that the total local potential refers to the local component of the self-consistent potential, excluding the non-local pseudopotential. The distinction between the local potential and the electrostatic potential is as follows: local potential = electrostatic potential + XC potential. + - 3: Apart from 1, also output the total local potential of the initial charge density. The files are named as: + - nspin = 1: pots1_ini.cube; + - nspin = 2: pots1_ini.cube and pots2_ini.cube; + - nspin = 4: pots1_ini.cube, pots2_ini.cube, pots3_ini.cube, and pots4_ini.cube - The second integer controls the precision of the charge density output, if not given, will use `3` as default. + The optional second integer controls the output precision. If not provided, the default precision is 8. - --- - The circle order of the charge density on real space grids is: x is the outer loop, then y and finally z (z is moving fastest). + In molecular dynamics calculations, the output frequency is controlled by out_freq_ion. -- **Default**: -1 3 - -### out_pot - -- **Type**: Integer -- **Description**: - - 1: Output the **total local potential** (i.e., local pseudopotential + Hartree potential + XC potential + external electric field (if exists) + dipole correction potential (if exists) + ...) on real space grids (in Ry) into files in the folder `OUT.${suffix}`. The files are named as: - - nspin = 1: `pots1.cube`; - - nspin = 2: `pots1.cube` and `pots2.cube`; - - nspin = 4: `pots1.cube`, `pots2.cube`, `pots3.cube`, and `pots4.cube` - - 2: Output the **electrostatic potential** on real space grids into `OUT.${suffix}/pot_es.cube`. The Python script named `tools/average_pot/aveElecStatPot.py` can be used to calculate the average electrostatic potential along the z-axis and outputs it into ElecStaticPot_AVE. - Please note that the total local potential refers to the local component of the self-consistent potential, excluding the non-local pseudopotential. The distinction between the local potential and the electrostatic potential is as follows: local potential = electrostatic potential + XC potential. - - 3: Apart from 1, also output the **total local potential** of the initial charge density. The files are named as: - - nspin = 1: `pots1_ini.cube`; - - nspin = 2: `pots1_ini.cube` and `pots2_ini.cube`; - - nspin = 4: `pots1_ini.cube`, `pots2_ini.cube`, `pots3_ini.cube`, and `pots4_ini.cube` - - In molecular dynamics calculations, the output frequency is controlled by [out_interval](#out_interval). -- **Default**: 0 -- **Note**: In the 3.10-LTS version, the file names are SPIN1_POT.cube and SPIN1_POT_INI.cube, etc. + > Note: In the 3.10-LTS version, the file names are SPIN1_POT.cube and SPIN1_POT_INI.cube, etc. +- **Default**: 0 ### out_dmk -- **Type**: Boolean -- **Availability**: Numerical atomic orbital basis -- **Description**: Whether to output the density matrix for each k-point into files in the folder `OUT.${suffix}`. The files are named as: +- **Type**: Boolean \[Integer\](optional) +- **Availability**: *Numerical atomic orbital basis* +- **Description**: Whether to output the density matrix for each k-point into files in the folder OUT.${suffix}. The files are named as: - For gamma only case: - - nspin = 1: `dms1_nao.csr`; - - nspin = 2: `dms1_nao.csr` and `dms2_nao.csr` for the two spin channels. + - nspin = 1 and 4: dm_nao.csr; + - nspin = 2: dms1_nao.csr and dms2_nao.csr for the two spin channels. - For multi-k points case: - - nspin = 1: `dms1k1_nao.csr`, `dms1k2_nao.csr`, ...; - - nspin = 2: `dms1k1_nao.csr`... and `dms2k1_nao.csr`... for the two spin channels. + - nspin = 1 and 4: dmk1_nao.csr, dmk2_nao.csr, ...; + - nspin = 2: dmk1s1_nao.csr... and dmk1s2_nao.csr... for the two spin channels. + + > Note: In the 3.10-LTS version, the parameter is named out_dm and the file names are SPIN1_DM and SPIN2_DM, etc. - **Default**: False -- **Note**: In the 3.10-LTS version, the parameter is named `out_dm` and the file names are SPIN1_DM and SPIN2_DM, etc. ### out_dmr -- **Type**: Boolean -- **Availability**: Numerical atomic orbital basis (multi-k points) -- **Description**: Whether to output the density matrix with Bravias lattice vector R index into files in the folder `OUT.${suffix}`. The files are named as `dmr{s}{spin index}{g}{geometry index}{_nao} + {".csr"}`. Here, 's' refers to spin, where s1 means spin up channel while s2 means spin down channel, and the sparse matrix format 'csr' is mentioned in [out_mat_hs2](#out_mat_hs2). Finally, if [out_app_flag](#out_app_flag) is set to false, the file name contains the optional 'g' index for each ionic step that may have different geometries, and if [out_app_flag](#out_app_flag) is set to true, the density matrix with respect to Bravias lattice vector R accumulates during ionic steps: - - nspin = 1: `dmrs1_nao.csr`; - - nspin = 2: `dmrs1_nao.csr` and `dmrs2_nao.csr` for the two spin channels. +- **Type**: Boolean \[Integer\](optional) +- **Availability**: *Numerical atomic orbital basis (multi-k points)* +- **Description**: Whether to output the density matrix with Bravias lattice vector R index into files in the folder OUT.${suffix}. The files are named as dmr{s}{spin index}{g}{geometry index}{_nao} + {".csr"}. Here, 's' refers to spin, where s1 means spin up channel while s2 means spin down channel, and the sparse matrix format 'csr' is mentioned in out_mat_hs2. Finally, if out_app_flag is set to false, the file name contains the optional 'g' index for each ionic step that may have different geometries, and if out_app_flag is set to true, the density matrix with respect to Bravias lattice vector R accumulates during ionic steps: + - nspin = 1: dmrs1_nao.csr; + - nspin = 2: dmrs1_nao.csr and dmrs2_nao.csr for the two spin channels. + + > Note: In the 3.10-LTS version, the parameter is named out_dm1, and the file names are data-DMR-sparse_SPIN0.csr and data-DMR-sparse_SPIN1.csr, etc. - **Default**: False -- **Note**: In the 3.10-LTS version, the parameter is named `out_dm1`, and the file names are data-DMR-sparse_SPIN0.csr and data-DMR-sparse_SPIN1.csr, etc. ### out_wfc_pw - **Type**: Integer -- **Availability**: Output electronic wave functions in plane wave basis, or transform the real-space electronic wave function into plane wave basis (see get_wf option in [calculation](#calculation) with NAO basis) -- **Description**: Whether to output the electronic wavefunction coefficients into files and store them in the folder `OUT.${suffix}`. The files are named as `wf{s}{spin index}{k}{k-point index}{_pw} + {".txt"/".dat"}`. Here, 's' refers to spin, where s1 means spin up channel while s2 means spin down channel, and 's12' refer to spinor wave functions that contains both spin channels with spin-orbital coupling or noncollinear calculations enabled. +- **Availability**: *Output electronic wave functions in plane wave basis, or transform the real-space electronic wave function into plane wave basis (see get_wf option in calculation with NAO basis)* +- **Description**: Whether to output the electronic wavefunction coefficients into files and store them in the folder OUT.${suffix}. The files are named as wf{k}{k-point index}{s}{spin index}{g}{geometry index}{e}{electronic iteration index}{_pw} + {".txt"/".dat"}. Here, the s index refers to spin but the label will not show up for non-spin-polarized calculations, where s1 means spin up channel while s2 means spin down channel, and s4 refers to spinor wave functions that contains both spin channels with spin-orbital coupling or noncollinear calculations enabled. For scf or nscf calculations, g index will not appear, but the g index appears for geometry relaxation and molecular dynamics, where one can use the out_freq_ion command to control. To print out the electroinc wave functions every few SCF iterations, use the out_freq_elec command and the e index will appear in the file name. - 0: no output - 1: (txt format) - - non-gamma-only: `wfs1k1_pw.txt` or `wfs1k2_pw.txt`, ...; + - non-gamma-only with nspin=1: wfk1_pw.txt, wfk2_pw.txt, ...; + - non-gamma-only with nspin=2: wfk1s1_pw.txt, wfk1s2_pw.txt, wfk2s1_pw.txt, wfk2s2_pw.txt, ...; + - non-gamma-only with nspin=4: wfk1s4_pw.txt, wfk2s4_pw.txt, ...; - 2: (binary format) - - non-gamma-only: `wfs1k1_pw.dat` or `wfs1k2_pw.dat`, .... + - non-gamma-only with nspin=1: wfk1_pw.dat, wfk2_pw.dat, ...; + - non-gamma-only with nspin=2: wfk1s1_pw.dat, wfk1s2_pw.dat, wfk2s1_pw.dat, wfk2s2_pw.dat, ...; + - non-gamma-only with nspin=4: wfk1s4_pw.dat, wfk2s4_pw.dat, ...; + + > Note: In the 3.10-LTS version, the file names are WAVEFUNC1.dat, WAVEFUNC2.dat, etc. - **Default**: 0 -- **Note**: In the 3.10-LTS version, the file names are WAVEFUNC1.dat, WAVEFUNC2.dat, etc. ### out_wfc_lcao - **Type**: Integer -- **Availability**: Numerical atomic orbital basis -- **Description**: Whether to output the electronic wavefunction coefficients into files and store them in the folder `OUT.${suffix}`. The files are named as `wf{s}{spin index}{k(optional)}{k-point index}{g(optional)}{geometry index1}{_nao} + {".txt"/".dat"}`. Here, 's' refers to spin, where s1 means spin up channel while s2 means spin down channel, and 's12' refer to spinor wave functions that contains both spin channels with spin-orbital coupling or noncollinear calculations enabled. In addition, if 'gamma_only' is set to 0, then the optinoal k-point sampling index appears with the k-point index attached to the electronic wave function file names. Finally, if [out_app_flag](#out_app_flag) is set to false, the file name contains the optional 'g' index for each ionic step that may have different geometries, and if [out_app_flag](#out_app_flag) is set to true, the wave functions accumulate during ionic steps. If the out_app_flag is set to false, a new folder named WFC will be created, and the wave function files will be saved into it. +- **Availability**: *Numerical atomic orbital basis* +- **Description**: Whether to output the electronic wavefunction coefficients into files and store them in the folder OUT.${suffix}. The files are named as wf{s}{spin index}{k(optional)}{k-point index}{g(optional)}{geometry index1}{_nao} + {".txt"/".dat"}. Here, 's' refers to spin, where s1 means spin up channel while s2 means spin down channel, and 's12' refer to spinor wave functions that contains both spin channels with spin-orbital coupling or noncollinear calculations enabled. In addition, if 'gamma_only' is set to 0, then the optinoal k-point sampling index appears with the k-point index attached to the electronic wave function file names. Finally, if out_app_flag is set to false, the file name contains the optional 'g' index for each ionic step that may have different geometries, and if out_app_flag is set to true, the wave functions accumulate during ionic steps. If the out_app_flag is set to false, a new folder named WFC will be created, and the wave function files will be saved into it. - 0: no output - - 1: (txt format) - - gamma-only: `wfs1_nao.txt` or `wfs2_nao.txt`, ...; - - non-gamma-only: `wfs1k1_nao.txt` or `wfs1k2_nao.txt`, ...; + - 1: (txt format) + - gamma-only: wfs1_nao.txt or wfs2_nao.txt, ...; + - non-gamma-only: wfs1k1_nao.txt or wfs1k2_nao.txt, ...; - 2: (binary format) - - gamma-only: `wfs1_nao.dat` or `wfs2_nao.dat`, ...; - - non-gamma-only: `wfs1k1_nao.dat` or `wfs1k2_nao.dat`, .... + - gamma-only: wfs1_nao.dat or wfs2_nao.dat, ...; + - non-gamma-only: wfs1k1_nao.dat or wfs1k2_nao.dat, .... - The corresponding sequence of the orbitals can be seen in [Basis Set](../pp_orb.md#basis-set). + The corresponding sequence of the orbitals can be seen in Basis Set. - Also controled by [out_interval](#out_interval) and [out_app_flag](#out_app_flag). -- **Default**: False -- **Note**: In the 3.10-LTS version, the file names are WFC_NAO_GAMMA1_ION1.txt and WFC_NAO_K1_ION1.txt, etc. + Also controled by out_freq_ion and out_app_flag. + + > Note: In the 3.10-LTS version, the file names are WFC_NAO_GAMMA1_ION1.txt and WFC_NAO_K1_ION1.txt, etc. +- **Default**: 0 ### out_dos - **Type**: Integer -- **Description**: Whether to output the density of states (DOS). For more information, refer to the [dos.md](../elec_properties/dos.md). +- **Description**: Whether to output the density of states (DOS). For more information, refer to the dos.md. - 0: no output - - 1: output the density of states (DOS) - - nspin=1 or 4: `doss1g{geom}_{basis}.txt`, where geom is the geometry index when cell changes or ions move while basis is either `pw` or `nao`. - - nspin=2: `doss1g{geom}_{basis}.txt` and `doss2g{geom}_{basis}.txt` for two spin channles. + - 1: output the density of states (DOS) + - nspin=1 or 4: doss1g{geom}_{basis}.txt, where geom is the geometry index when cell changes or ions move while basis is either pw or nao. + - nspin=2: doss1g{geom}_{basis}.txt and doss2g{geom}_{basis}.txt for two spin channles. - 2: (LCAO) output the density of states (DOS) and the projected density of states (PDOS) - - 3: output the Fermi surface file (fermi.bxsf) in BXSF format that can be visualized by XCrySDen + - 3: output the Fermi surface file (fermi.bxsf) in BXSF format that can be visualized by XCrySDen - **Default**: 0 ### out_ldos -- **Type**: Integer +- **Type**: Integer \[Integer\](optional) - **Description**: Whether to output the local density of states (LDOS), optionally output precision can be set by a second parameter, default is 3. - 0: no output - - 1: output the partial charge density for given bias (controlled by [stm_bias](#stm_bias)) in cube file format, which can be used to plot scanning tunneling spectroscopys to mimick STM images using the Python script [plot.py](../../../tools/stm/plot.py). - - 2: output LDOS along a line in real space (controlled by [ldos_line](#ldos_line)). Parameters used to control DOS output are also valid for LDOS. + - 1: output the partial charge density for given bias (controlled by stm_bias) in cube file format, which can be used to plot scanning tunneling spectroscopys to mimick STM images using the Python script plot.py. + - 2: output LDOS along a line in real space (controlled by ldos_line). Parameters used to control DOS output are also valid for LDOS. - 3: output both two LDOS modes above. - **Default**: 0 @@ -1777,260 +1870,268 @@ These variables are used to control the output of properties. - **Type**: Boolean \[Integer\](optional) - **Description**: Whether to output the eigenvalues of the Hamiltonian matrix (in eV) into the running log during electronic iterations and into a file at the end of calculations. The former can be used with the 'out_freq_elec' parameter while the latter option allows the output precision to be set via a second parameter, with a default value of 8. The output file names are: - - nspin = 1 or 4: `eigs1.txt`; - - nspin = 2: `eigs1.txt` and `eigs2.txt`; - - For more information, refer to the [band.md](../elec_properties/band.md) + - nspin = 1 or 4: eig.txt; + - nspin = 2: eigs1.txt and eigs2.txt; + - For more information, refer to the band.md - **Default**: False ### out_proj_band - **Type**: Boolean -- **Description**: Whether to output the projected band structure. For more information, refer to the [band.md](../elec_properties/band.md) +- **Description**: Whether to output the projected band structure. For more information, refer to the band.md - **Default**: False ### out_stru - **Type**: Boolean -- **Description**: Whether to output structure files per ionic step in geometry relaxation calculations into `OUT.${suffix}/STRU_ION${istep}_D`, where `${istep}` is the ionic step. -- **Default**: False - -### out_bandgap - -- **Type**: Boolean -- **Description**: Whether to print the bandgap per electronic iteration into `OUT.${suffix}/running_${calculation}.log`. The value of bandgaps can be obtained by searching for the keyword: - - [nupdown](#nupdown) > 0: `E_bandgap_up` and `E_bandgap_dw` - - [nupdown](#nupdown) = 0: `E_bandgap` +- **Description**: Whether to output structure files per ionic step in geometry relaxation calculations into OUT.{istep}_D, where ${istep} is the ionic step. - **Default**: False ### out_level - **Type**: String -- **Description**: Control the output level of information in `OUT.${suffix}/running_${calculation}.log`. +- **Description**: Control the output level of information in OUT.{calculation}.log. - ie: electronic iteration level, which prints useful information for electronic iterations; - i: geometry relaxation level, which prints some information for geometry relaxations additionally; - m: molecular dynamics level, which does not print some information for simplicity. - - **Default**: ie -### out_alllog - -- **Type**: Boolean -- **Description**: Whether to print information into individual logs from all ranks in an MPI run. - - True: Information from each rank will be written into individual files named `OUT.${suffix}/running_${calculation}_${rank+1}.log`. - - False: Information will only be written from rank 0 into a file named `OUT.${suffix}/running_${calculation}.log`. -- **Default**: False - ### out_mat_hs - **Type**: Boolean \[Integer\](optional) -- **Availability**: Numerical atomic orbital basis -- **Description**: Whether to print the upper triangular part of the Hamiltonian matrices and overlap matrices for each k-point into files in the directory `OUT.${suffix}`. The second number controls precision. For more information, please refer to [hs_matrix.md](../elec_properties/hs_matrix.md#out_mat_hs). Also controled by [out_interval](#out_interval) and [out_app_flag](#out_app_flag). +- **Availability**: *Numerical atomic orbital basis* +- **Description**: Whether to print the upper triangular part of the Hamiltonian matrices and overlap matrices for each k-point into files in the directory OUT.${suffix}. The second number controls precision. For more information, please refer to hs_matrix.md. Also controled by out_freq_ion and out_app_flag. - For gamma only case: - - nspin = 1: `hks1_nao.txt` for the Hamiltonian matrix and `sks1_nao.txt` for the overlap matrix; - - nspin = 2: `hks1_nao.txt` and `hks2_nao.txt` for the Hamiltonian matrix and `sks1_nao.txt` for the overlap matrix. Note that the code will not output `sks2_nao.txt` because it is the same as `sks1_nao.txt`; - - nspin = 4: `hks12_nao.txt` for the Hamiltonian matrix and `sks12_nao.txt` for the overlap matrix. + - nspin = 1: hks1_nao.txt for the Hamiltonian matrix and sks1_nao.txt for the overlap matrix; + - nspin = 2: hks1_nao.txt and hks2_nao.txt for the Hamiltonian matrix and sks1_nao.txt for the overlap matrix. Note that the code will not output sks2_nao.txt because it is the same as sks1_nao.txt; + - nspin = 4: hks12_nao.txt for the Hamiltonian matrix and sks12_nao.txt for the overlap matrix. - For multi-k points case: - - nspin = 1: `hks1k1_nao.txt` for the Hamiltonian matrix at the 1st k-point, and `sks1k1_nao.txt` for the overlap matrix for the 1st k-point, ...; - - nspin = 2: `hks1k1_nao.txt` and `hks2k1_nao.txt` for the two spin channels of the Hamiltonian matrix at the 1st k-point, and `sks1k1_nao.txt` for the overlap matrix for the 1st k-point. Note that the code will not output `sks2k1_nao.txt` because it is the same as `sks1k1_nao.txt`, ...; - - nspin = 4: `hks12k1_nao.txt` for the Hamiltonian matrix at the 1st k-point, and `sks12k1_nao.txt` for the overlap matrix for the 1st k-point, ...; + - nspin = 1: hks1k1_nao.txt for the Hamiltonian matrix at the 1st k-point, and sks1k1_nao.txt for the overlap matrix for the 1st k-point, ...; + - nspin = 2: hks1k1_nao.txt and hks2k1_nao.txt for the two spin channels of the Hamiltonian matrix at the 1st k-point, and sks1k1_nao.txt for the overlap matrix for the 1st k-point. Note that the code will not output sks2k1_nao.txt because it is the same as sks1k1_nao.txt, ...; + - nspin = 4: hks12k1_nao.txt for the Hamiltonian matrix at the 1st k-point, and sks12k1_nao.txt for the overlap matrix for the 1st k-point, ...; + + > Note: In the 3.10-LTS version, the file names are data-0-H and data-0-S, etc. - **Default**: False 8 - **Unit**: Ry -- **Note**: In the 3.10-LTS version, the file names are data-0-H and data-0-S, etc. ### out_mat_hs2 - **Type**: Boolean -- **Availability**: Numerical atomic orbital basis (not gamma-only algorithm) -- **Description**: Whether to print files containing the Hamiltonian matrix $H(R)$ and overlap matrix $S(R)$ into files in the directory `OUT.${suffix}`. For more information, please refer to [hs_matrix.md](../elec_properties/hs_matrix.md#out_mat_hs2). +- **Availability**: *Numerical atomic orbital basis (not gamma-only algorithm)* +- **Description**: Whether to print files containing the Hamiltonian matrix and overlap matrix into files in the directory OUT.${suffix}. For more information, please refer to hs_matrix.md. + + > Note: In the 3.10-LTS version, the file names are data-HR-sparse_SPIN0.csr and data-SR-sparse_SPIN0.csr, etc. - **Default**: False - **Unit**: Ry -- **Note**: In the 3.10-LTS version, the file names are data-HR-sparse_SPIN0.csr and data-SR-sparse_SPIN0.csr, etc. ### out_mat_tk - **Type**: Boolean \[Integer\](optional) -- **Availability**: Numerical atomic orbital basis -- **Description**: Whether to print the upper triangular part of the kinetic matrices for each k-point into `OUT.${suffix}/tks1ki_nao.txt`, where i is the index of k points. One may optionally provide a second parameter to specify the precision. -- **Default**: False \[8\] +- **Availability**: *Numerical atomic orbital basis* +- **Description**: Whether to print the upper triangular part of the kinetic matrices for each k-point into OUT.${suffix}/tks1ki_nao.txt, where i is the index of k points. One may optionally provide a second parameter to specify the precision. + + > Note: In the 3.10-LTS version, the file names are data-TR-sparse_SPIN0.csr, etc. +- **Default**: False [8] - **Unit**: Ry -- **Note**: In the 3.10-LTS version, the file names are data-TR-sparse_SPIN0.csr and data-TR-sparse_SPIN0.csr, etc. ### out_mat_r - **Type**: Boolean -- **Availability**: Numerical atomic orbital basis (not gamma-only algorithm) -- **Description**: Whether to print the matrix representation of the position matrix into a file named `rr.csr` in the directory `OUT.${suffix}`. If [calculation](#calculation) is set to `get_s`, the position matrix can be obtained without scf iterations. For more information, please refer to [position_matrix.md](../elec_properties/position_matrix.md#extracting-position-matrices). +- **Availability**: *Numerical atomic orbital basis (not gamma-only algorithm)* +- **Description**: Whether to print the matrix representation of the position matrix into a file named rr.csr in the directory OUT.${suffix}. If calculation is set to get_s, the position matrix can be obtained without scf iterations. For more information, please refer to position_matrix.md. + + > Note: In the 3.10-LTS version, the file name is data-rR-sparse.csr. - **Default**: False - **Unit**: Bohr -- **Note**: In the 3.10-LTS version, the file name is data-rR-sparse.csr. ### out_mat_t - **Type**: Boolean -- **Availability**: Numerical atomic orbital basis (not gamma-only algorithm) -- **Description**: Generate files containing the kinetic energy matrix $T(R)$. The format will be the same as the Hamiltonian matrix $H(R)$ and overlap matrix $S(R)$ as mentioned in [out_mat_hs2](#out_mat_hs2). The name of the files will be `trs1_nao.csr` and so on. Also controled by [out_interval](#out_interval) and [out_app_flag](#out_app_flag). +- **Availability**: *Numerical atomic orbital basis (not gamma-only algorithm)* +- **Description**: Generate files containing the kinetic energy matrix. The format will be the same as the Hamiltonian matrix and overlap matrix as mentioned in out_mat_hs2. The name of the files will be trs1_nao.csr and so on. Also controled by out_freq_ion and out_app_flag. + + > Note: In the 3.10-LTS version, the file name is data-TR-sparse_SPIN0.csr. - **Default**: False - **Unit**: Ry -- **Note**: In the 3.10-LTS version, the file name is data-TR-sparse_SPIN0.csr. ### out_mat_dh - **Type**: Boolean -- **Availability**: Numerical atomic orbital basis (not gamma-only algorithm) -- **Description**: Whether to print files containing the derivatives of the Hamiltonian matrix. The format will be the same as the Hamiltonian matrix $H(R)$ and overlap matrix $S(R)$ as mentioned in [out_mat_hs2](#out_mat_hs2). The name of the files will be `dhrxs1_nao.csr`, `dhrys1_nao.csr`, `dhrzs1_nao.csr` and so on. Also controled by [out_interval](#out_interval) and [out_app_flag](#out_app_flag). +- **Availability**: *Numerical atomic orbital basis (not gamma-only algorithm)* +- **Description**: Whether to print files containing the derivatives of the Hamiltonian matrix. The format will be the same as the Hamiltonian matrix and overlap matrix as mentioned in out_mat_hs2. The name of the files will be dhrxs1_nao.csr, dhrys1_nao.csr, dhrzs1_nao.csr and so on. Also controled by out_freq_ion and out_app_flag. + + > Note: In the 3.10-LTS version, the file name is data-dHRx-sparse_SPIN0.csr and so on. - **Default**: False - **Unit**: Ry/Bohr -- **Note**: In the 3.10-LTS version, the file name is data-dHRx-sparse_SPIN0.csr and so on. ### out_mat_ds - **Type**: Boolean -- **Availability**: Numerical atomic orbital basis (not gamma-only algorithm) -- **Description**: Whether to print files containing the derivatives of the overlap matrix. The format will be the same as the overlap matrix $dH(R)$ as mentioned in [out_mat_dh](#out_mat_dh). The name of the files will be `dsrxs1.csr` and so on. Also controled by [out_interval](#out_interval) and [out_app_flag](#out_app_flag). This feature can be used with `calculation get_s`. +- **Availability**: *Numerical atomic orbital basis (not gamma-only algorithm)* +- **Description**: Whether to print files containing the derivatives of the overlap matrix. The format will be the same as the overlap matrix as mentioned in out_mat_dh. The name of the files will be dsrxs1.csr and so on. Also controled by out_freq_ion and out_app_flag. This feature can be used with calculation get_s. + + > Note: In the 3.10-LTS version, the file name is data-dSRx-sparse_SPIN0.csr and so on. - **Default**: False - **Unit**: Ry/Bohr -- **Note**: In the 3.10-LTS version, the file name is data-dSRx-sparse_SPIN0.csr and so on. ### out_mat_xc - **Type**: Boolean -- **Availability**: Numerical atomic orbital (NAO) and NAO-in-PW basis -- **Description**: Whether to print the upper triangular part of the exchange-correlation matrices in Kohn-Sham orbital representation: $\braket{\psi_i|V_\text{xc}^\text{(semi-)local}+V_\text{exx}+V_\text{DFTU}|\psi_j}$ for each k point into files in the directory `OUT.${suffix}`, which is useful for the subsequent GW calculation (the code is still under development). (Note that currently DeePKS term is not included.) The files are named `vxcs1k$i_nao.txt`, where `$i` corresponds to the k point index. The band (KS orbital) energy for each (k-point, spin, band) will be printed in the file `OUT.${suffix}/vxc_out.dat`. If EXX is calculated, the local and EXX part of band energy will also be printed in `OUT.${suffix}/vxc_local_out.dat`and `OUT.${suffix}/vxc_exx_out.dat`, respectively. All the `vxc*_out.dat` files contains 3 integers (nk, nspin, nband) followed by nk\*nspin\*nband lines of energy Hartree and eV. +- **Availability**: *Numerical atomic orbital (NAO) and NAO-in-PW basis* +- **Description**: Whether to print the upper triangular part of the exchange-correlation matrices in Kohn-Sham orbital representation: for each k point into files in the directory OUT.i_nao.txt, where {suffix}/vxc_out.dat. If EXX is calculated, the local and EXX part of band energy will also be printed in OUT.{suffix}/vxc_exx_out.dat, respectively. All the vxc_out.dat files contains 3 integers (nk, nspin, nband) followed by nk*nspin*nband lines of energy Hartree and eV. + + > Note: In the 3.10-LTS version, the file name is k-$k-Vxc and so on. - **Default**: False - **Unit**: Ry -- **Note**: In the 3.10-LTS version, the file name is k-$k-Vxc and so on. ### out_mat_xc2 - **Type**: Boolean -- **Availability**: Numerical atomic orbital (NAO) basis -- **Description**: Whether to print the exchange-correlation matrices in numerical orbital representation: $\braket{\phi_i|V_\text{xc}^\text{(semi-)local}+V_\text{exx}+V_\text{DFTU}|\phi_j}(\mathbf{R})$ in CSR format in the directory `OUT.${suffix}`. (Note that currently DeePKS term is not included. ) The files are named `Vxc_R_spin$s`. +- **Availability**: *Numerical atomic orbital (NAO) basis* +- **Description**: Whether to print the exchange-correlation matrices in numerical orbital representation: in CSR format in the directory OUT.s. + + > Note: In the 3.10-LTS version, the file name is Vxc_R_spin$s and so on. - **Default**: False - **Unit**: Ry -- **Note**: In the 3.10-LTS version, the file name is Vxc_R_spin$s and so on. ### out_mat_l -- **Type**: Boolean [Integer\](optional) -- **Availability**: Numerical atomic orbital (NAO) basis -- **Description**: Whether to print the expectation value of the angular momentum operator $\hat{L}_x$, $\hat{L}_y$, and $\hat{L}_z$ in the basis of the localized atomic orbitals. The files are named `OUT.${suffix}/${suffix}_Lx.dat`, `OUT.${suffix}/${suffix}_Ly.dat`, and `OUT.${suffix}/${suffix}_Lz.dat`. The second integer controls the precision of the output. +- **Type**: Boolean \[Integer\](optional) +- **Availability**: *Numerical atomic orbital (NAO) basis* +- **Description**: Whether to print the expectation value of the angular momentum operator , , and in the basis of the localized atomic orbitals. The files are named OUT.{suffix}_Lx.dat, OUT.{suffix}_Ly.dat, and OUT.{suffix}_Lz.dat. The second integer controls the precision of the output. - **Default**: False 8 -### out_eband_terms +### out_xc_r -- **Type**: Boolean -- **Availability**: Numerical atomic orbital basis -- **Description**: Whether to print the band energy terms separately in the file `OUT.${suffix}/${term}_out.dat`. The terms include the kinetic, pseudopotential (local + nonlocal), Hartree and exchange-correlation (including exact exchange if calculated). -- **Default**: False +- **Type**: Integer \[Integer\](optional) +- **Description**: The first integer controls whether to output the exchange-correlation (in Bohr^-3) on real space grids using Libxc to folder OUT.${suffix}: + - 0: rho, amag, sigma, exc + - 1: vrho, vsigma + - 2: v2rho2, v2rhosigma, v2sigma2 + - 3: v3rho3, v3rho2sigma, v3rhosigma2, v3sigma3 + - 4: v4rho4, v4rho3sigma, v4rho2sigma2, v4rhosigma3, v4sigma4 The meaning of the files is presented in Libxc + + The second integer controls the precision of the charge density output, if not given, will use 3 as default. -### dm_to_rho (Under Development Feature) + The circle order of the charge density on real space grids is: x is the outer loop, then y and finally z (z is moving fastest). +- **Default**: -1 3 + +### out_eband_terms - **Type**: Boolean -- **Availability**: Numerical atomic orbital basis -- **Description**: Reads density matrix $DM(R)$ in npz format and creates electron density on grids. This feature does not work for gamma-only calculations. Only supports serial calculations. +- **Availability**: *Numerical atomic orbital basis* +- **Description**: Whether to print the band energy terms separately in the file OUT.{term}_out.dat. The terms include the kinetic, pseudopotential (local + nonlocal), Hartree and exchange-correlation (including exact exchange if calculated). - **Default**: False ### out_mul - **Type**: Boolean -- **Availability**: Numerical atomic orbital basis -- **Description**: Whether to print the Mulliken population analysis result into `OUT.${suffix}/mulliken.txt`. In molecular dynamics calculations, the output frequency is controlled by [out_interval](#out_interval). +- **Availability**: *Numerical atomic orbital basis* +- **Description**: Whether to print the Mulliken population analysis result into OUT.${suffix}/mulliken.txt. In molecular dynamics calculations, the output frequency is controlled by out_freq_ion. - **Default**: False ### out_app_flag - **Type**: Boolean -- **Availability**: Numerical atomic orbital basis (not gamma-only algorithm) -- **Description**: Whether to output $r(R)$, $H(R)$, $S(R)$, $T(R)$, $dH(R)$, $H(k)$, $S(k)$ and $wfc(k)$ matrices in an append manner during molecular dynamics calculations. Check input parameters [out_mat_r](#out_mat_r), [out_mat_hs2](#out_mat_hs2), [out_mat_t](#out_mat_t), [out_mat_dh](#out_mat_dh), [out_mat_hs](#out_mat_hs) and [out_wfc_lcao](#out_wfc_lcao) for more information. +- **Availability**: *Numerical atomic orbital basis (not gamma-only algorithm)* +- **Description**: Whether to output r(R), H(R), S(R), T(R), dH(R), dS(R), and wfc matrices in an append manner during molecular dynamics calculations. Check input parameters out_mat_r, out_mat_hs2, out_mat_t, out_mat_dh, out_mat_hs and out_wfc_lcao for more information. - **Default**: true ### out_ndigits -- **Type**: Integar -- **Availability**: `out_mat_hs 1` case presently. +- **Type**: Integer +- **Availability**: *out_mat_hs 1 case presently.* - **Description**: Controls the length of decimal part of output data, such as charge density, Hamiltonian matrix, Overlap matrix and so on. - **Default**: 8 -### out_interval - -- **Type**: Integer -- **Description**: After self-consistent-field calculations, control the interval of ionic movements for printing properties. These properties cover charge density, local potential, electrostatic potential, Hamiltonian matrix, overlap matrix, density matrix, Mulliken population analysis and so on. -- **Default**: 1 - ### out_element_info - **Type**: Boolean -- **Description**: Whether to print element information into files in the directory `OUT.${suffix}/${element_label}`, including pseudopotential and orbital information of the element (in atomic Ryberg units). +- **Description**: Whether to print element information into files in the directory OUT.{element_label}, including pseudopotential and orbital information of the element (in atomic Ryberg units). - **Default**: False ### restart_save - **Type**: Boolean -- **Availability**: Numerical atomic orbital basis -- **Description**: Whether to save charge density files per ionic step, which are used to restart calculations. According to the value of [read_file_dir](#read_file_dir): - - auto: These files are saved in folder `OUT.${suffix}/restart/`; - - other: These files are saved in folder `${read_file_dir}/restart/`. +- **Availability**: *Numerical atomic orbital basis* +- **Description**: Whether to save charge density files per ionic step, which are used to restart calculations. According to the value of read_file_dir: + - auto: These files are saved in folder OUT.{read_file_dir}/restart/. - If EXX(exact exchange) is calculated (i.e. *[dft_fuctional](#dft_functional)==hse/hf/pbe0/scan0* or *[rpa](#rpa)==True*), the Hexx(R) files for each processor will also be saved in the above folder, which can be read in EXX calculation with *[restart_load](#restart_load)==True*. + If EXX(exact exchange) is calculated (i.e. dft_fuctional==hse/hf/pbe0/scan0 or rpa==True), the Hexx(R) files for each processor will also be saved in the above folder, which can be read in EXX calculation with restart_load==True. - **Default**: False -### rpa (Under Development Feature) +### rpa - **Type**: Boolean - **Description**: Generate output files used in rpa calculations. + + > Note: If symmetry is set to 1, additional files containing the necessary information for exploiting symmetry in the subsequent rpa calculation will be output: irreducible_sector.txt, symrot_k.txt and symrot_R.txt. - **Default**: False ### out_pchg - **Type**: String -- **Availability**: For both PW and LCAO. When `basis_type = lcao`, used when `calculation = get_pchg`. -- **Description**: Specifies the electronic states to calculate the charge densities $|\psi_{i}(\boldsymbol{r})|^{2}$ with state index $i$ for, using a space-separated string of 0s and 1s. Each digit in the string corresponds to a state, starting from the first state. A `1` indicates that the charge density should be calculated for that state, while a `0` means the state will be ignored. The parameter allows a compact and flexible notation (similar to [`ocp_set`](#ocp_set)), for example the syntax `1 4*0 5*1 0` is used to denote the selection of states: `1` means calculate for the first state, `4*0` skips the next four states, `5*1` means calculate for the following five states, and the final `0` skips the next state. It's essential that the total count of states does not exceed the total number of states (`nbands`); otherwise, it results in an error, and the process exits. The input string must contain only numbers and the asterisk (`*`) for repetition, ensuring correct format and intention of state selection. The outputs comprise multiple `.cube` files following the naming convention `pchgi[state]s[spin]k[kpoint].cube`. +- **Availability**: *For both PW and LCAO. When basis_type = lcao, used when calculation = get_pchg.* +- **Description**: Specifies the electronic states to calculate the charge densities with state index for, using a space-separated string of 0s and 1s. Each digit in the string corresponds to a state, starting from the first state. A 1 indicates that the charge density should be calculated for that state, while a 0 means the state will be ignored. The parameter allows a compact and flexible notation (similar to ocp_set), for example the syntax 1 4*0 5*1 0 is used to denote the selection of states: 1 means calculate for the first state, 4*0 skips the next four states, 5*1 means calculate for the following five states, and the final 0 skips the next state. It's essential that the total count of states does not exceed the total number of states (nbands); otherwise, it results in an error, and the process exits. The input string must contain only numbers and the asterisk (*) for repetition, ensuring correct format and intention of state selection. The outputs comprise multiple .cube files following the naming convention pchgi[state]s[spin]k[kpoint].cube. - **Default**: none ### out_wfc_norm - **Type**: String -- **Availability**: For both PW and LCAO. When `basis_type = lcao`, used when `calculation = get_wf`. -- **Description**: Specifies the electronic states to calculate the real-space wave function modulus (norm, or known as the envelope function) $|\psi_i(\boldsymbol{r})|$ with state index $i$. The syntax and state selection rules are identical to [`out_pchg`](#out_pchg), but the output is the norm of the wave function. The outputs comprise multiple `.cube` files following the naming convention `wfi[state]s[spin]k[kpoint].cube`. +- **Availability**: *For both PW and LCAO. When basis_type = lcao, used when calculation = get_wf.* +- **Description**: Specifies the electronic states to calculate the real-space wave function modulus (norm, or known as the envelope function) with state index. The syntax and state selection rules are identical to out_pchg, but the output is the norm of the wave function. The outputs comprise multiple .cube files following the naming convention wfi[state]s[spin]k[kpoint].cube. - **Default**: none ### out_wfc_re_im - **Type**: String -- **Availability**: For both PW and LCAO. When `basis_type = lcao`, used when `calculation = get_wf`. -- **Description**: Specifies the electronic states to calculate the real and imaginary parts of the wave function $\text{Re}(\psi_i(\boldsymbol{r}))$ and $\text{Im}(\psi_i(\boldsymbol{r}))$ with state index $i$. The syntax and state selection rules are identical to [`out_pchg`](#out_pchg), but the output contains both the real and imaginary components of the wave function. The outputs comprise multiple `.cube` files following the naming convention `wfi[state]s[spin]k[kpoint][re/im].cube`. +- **Availability**: *For both PW and LCAO. When basis_type = lcao, used when calculation = get_wf.* +- **Description**: Specifies the electronic states to calculate the real and imaginary parts of the wave function with state index. The syntax and state selection rules are identical to out_pchg, but the output contains both the real and imaginary components of the wave function. The outputs comprise multiple .cube files following the naming convention wfi[state]s[spin]k[kpoint][re/im].cube. - **Default**: none ### if_separate_k - **Type**: Boolean -- **Availability**: For both PW and LCAO. When `basis_type = pw`, used if `out_pchg` is set. When `basis_type = lcao`, used only when `calculation = get_pchg` and `gamma_only = 0`. -- **Description**: Specifies whether to write the partial charge densities for all k-points to individual files or merge them. **Warning**: Enabling symmetry may produce unwanted results due to reduced k-point weights and symmetry operations in real space. Therefore when calculating partial charge densities, if you are not sure what you want exactly, it is strongly recommended to set `symmetry = -1`. It is noteworthy that your `symmetry` setting should remain the same as that in the SCF procedure. +- **Availability**: *For both PW and LCAO. When basis_type = pw, used if out_pchg is set. When basis_type = lcao, used only when calculation = get_pchg and gamma_only = 0.* +- **Description**: Specifies whether to write the partial charge densities for all k-points to individual files or merge them. Warning: Enabling symmetry may produce unwanted results due to reduced k-point weights and symmetry operations in real space. Therefore when calculating partial charge densities, if you are not sure what you want exactly, it is strongly recommended to set symmetry = -1. It is noteworthy that your symmetry setting should remain the same as that in the SCF procedure. - **Default**: false ### out_elf - **Type**: Integer \[Integer\](optional) -- **Availability**: Only for Kohn-Sham DFT and Orbital Free DFT. -- **Description**: Whether to output the electron localization function (ELF) in the folder `OUT.${suffix}`. The files are named as - - nspin = 1: - - ELF.cube: ${\rm{ELF}} = \frac{1}{1+\chi^2}$, $\chi = \frac{\frac{1}{2}\sum_{i}{f_i |\nabla\psi_{i}|^2} - \frac{|\nabla\rho|^2}{8\rho}}{\frac{3}{10}(3\pi^2)^{2/3}\rho^{5/3}}$; - - nspin = 2: - - ELF_SPIN1.cube, ELF_SPIN2.cube: ${\rm{ELF}}_\sigma = \frac{1}{1+\chi_\sigma^2}$, $\chi_\sigma = \frac{\frac{1}{2}\sum_{i}{f_i |\nabla\psi_{i,\sigma}|^2} - \frac{|\nabla\rho_\sigma|^2}{8\rho_\sigma}}{\frac{3}{10}(6\pi^2)^{2/3}\rho_\sigma^{5/3}}$; - - ELF.cube: ${\rm{ELF}} = \frac{1}{1+\chi^2}$, $\chi = \frac{\frac{1}{2}\sum_{i,\sigma}{f_i |\nabla\psi_{i,\sigma}|^2} - \sum_{\sigma}{\frac{|\nabla\rho_\sigma|^2}{8\rho_\sigma}}}{\sum_{\sigma}{\frac{3}{10}(6\pi^2)^{2/3}\rho_\sigma^{5/3}}}$; - - The second integer controls the precision of the kinetic energy density output, if not given, will use `3` as default. For purpose restarting from this file and other high-precision involved calculation, recommend to use `10`. - - --- - In molecular dynamics calculations, the output frequency is controlled by [out_interval](#out_interval). +- **Availability**: *Only for Kohn-Sham DFT and Orbital Free DFT.* +- **Description**: Whether to output the electron localization function (ELF) in the folder `OUT.${suffix}`. The files are named as + - nspin = 1: + - elf.cube: ${\rm{ELF}} = \frac{1}{1+\chi^2}$, $\chi = \frac{\frac{1}{2}\sum_{i}{f_i |\nabla\psi_{i}|^2} - \frac{|\nabla\rho|^2}{8\rho}}{\frac{3}{10}(3\pi^2)^{2/3}\rho^{5/3}}$; + - nspin = 2: + - elf1.cube, elf2.cube: ${\rm{ELF}}_\sigma = \frac{1}{1+\chi_\sigma^2}$, $\chi_\sigma = \frac{\frac{1}{2}\sum_{i}{f_i |\nabla\psi_{i,\sigma}|^2} - \frac{|\nabla\rho_\sigma|^2}{8\rho_\sigma}}{\frac{3}{10}(6\pi^2)^{2/3}\rho_\sigma^{5/3}}$; + - elf.cube: ${\rm{ELF}} = \frac{1}{1+\chi^2}$, $\chi = \frac{\frac{1}{2}\sum_{i,\sigma}{f_i |\nabla\psi_{i,\sigma}|^2} - \sum_{\sigma}{\frac{|\nabla\rho_\sigma|^2}{8\rho_\sigma}}}{\sum_{\sigma}{\frac{3}{10}(6\pi^2)^{2/3}\rho_\sigma^{5/3}}}$; + - nspin = 4 (noncollinear): + - elf.cube: ELF for total charge density, ${\rm{ELF}} = \frac{1}{1+\chi^2}$, $\chi = \frac{\frac{1}{2}\sum_{i}{f_i |\nabla\psi_{i}|^2} - \frac{|\nabla\rho|^2}{8\rho}}{\frac{3}{10}(3\pi^2)^{2/3}\rho^{5/3}}$ + + The second integer controls the precision of the kinetic energy density output, if not given, will use 3 as default. For purpose restarting from this file and other high-precision involved calculation, recommend to use 10. + + In molecular dynamics calculations, the output frequency is controlled by out_freq_ion. - **Default**: 0 3 +### out_spillage + +- **Type**: Integer +- **Availability**: *Only for Kohn-Sham DFT with plane-wave basis.* +- **Description**: This output is only intentively needed by the ABACUS numerical atomic orbital generation workflow. This parameter is used to control whether to output the overlap integrals between truncated spherical Bessel functions (TSBFs) and plane-wave basis expanded wavefunctions (named as OVERLAP_Q), and between TSBFs (named as OVERLAP_Sq), also their first order derivatives. The output files are named starting with orb_matrix. A value of 2 would enable the output. +- **Default**: 0 + +### out_alllog + +- **Type**: Boolean +- **Description**: Whether to print information into individual logs from all ranks in an MPI run. + - True: Information from each rank will be written into individual files named OUT.{calculation}_{suffix}/running_${calculation}.log. +- **Default**: False + [back to top](#full-list-of-input-keywords) ## Density of states -These variables are used to control the calculation of DOS. [Detailed introduction](https://github.com/deepmodeling/abacus-develop/blob/develop/docs/advanced/elec_properties/dos.md) - ### dos_edelta_ev - **Type**: Real @@ -2057,7 +2158,7 @@ These variables are used to control the calculation of DOS. [Detailed introducti - **Type**: Real - **Description**: The minimal range for Density of States (DOS) - If set, "dos_scale" will be ignored. -- **Default**: Minimal eigenenergy of $\hat{H}$ +- **Default**: Minimal eigenenergy of - **Unit**: eV ### dos_emax_ev @@ -2065,7 +2166,7 @@ These variables are used to control the calculation of DOS. [Detailed introducti - **Type**: Real - **Description**: The maximal range for Density of States (DOS) - If set, "dos_scale" will be ignored. -- **Default**: Maximal eigenenergy of $\hat{H}$ +- **Default**: Maximal eigenenergy of - **Unit**: eV ### dos_nche @@ -2077,10 +2178,10 @@ These variables are used to control the calculation of DOS. [Detailed introducti ### stm_bias - **Type**: Real Real(optional) Integer(optional) -- **Description**: The bias voltage used to calculate local density of states to simulate scanning tunneling microscope, see details in [out_ldos](#out_ldos). When using three parameters: +- **Description**: The bias voltage used to calculate local density of states to simulate scanning tunneling microscope, see details in out_ldos. When using three parameters: - - The first parameter specifies the initial bias voltage value. - - The second parameter defines the voltage increment (step size between consecutive bias values). + - The first parameter specifies the initial bias voltage value. + - The second parameter defines the voltage increment (step size between consecutive bias values). - The third parameter determines the total number of voltage points - **Default**: 1.0 - **Unit**: V @@ -2088,22 +2189,18 @@ These variables are used to control the calculation of DOS. [Detailed introducti ### ldos_line - **Type**: Real*6 Integer(optional) -- **Description**: Specify the path of the three-dimensional space and display LDOS in the form of a two-dimensional color chart, see details in [out_ldos](#out_ldos). The first three paramenters are the direct coordinates of the start point, the next three paramenters are the direct coordinates of the end point, and the final one is the number of points along the path, whose default is 100. +- **Description**: Specify the path of the three-dimensional space and display LDOS in the form of a two-dimensional color chart, see details in out_ldos. The first three paramenters are the direct coordinates of the start point, the next three paramenters are the direct coordinates of the end point, and the final one is the number of points along the path, whose default is 100. - **Default**: 0.0 0.0 0.0 0.0 0.0 1.0 100 - [back to top](#full-list-of-input-keywords) ## NAOs -These variables are used to control the generation of numerical atomic orbitals (NAOs), whose radial parts are linear combinations of spherical Bessel functions with a node (i.e., evaluate to zero) at the cutoff radius. -In plane-wave-based calculations, necessary information will be printed into `OUT.${suffix}/orb_matrix.${i}.dat`, which serves as an input file for the generation of NAOs. Please check [SIAB package](../../../tools/SIAB/README.md#siab-package-description) for more information. - ### bessel_nao_ecut -- **Type**: Real -- **Description**: "Energy cutoff" (in Ry) of spherical Bessel functions. The number of spherical Bessel functions that constitute the radial parts of NAOs is determined by sqrt(`bessel_nao_ecut`)$\times$`bessel_nao_rcut`/$\pi$. -- **Default**: `ecutwfc` +- **Type**: String +- **Description**: "Energy cutoff" (in Ry) of spherical Bessel functions. The number of spherical Bessel functions that constitute the radial parts of NAOs is determined by sqrt(bessel_nao_ecut)*bessel_nao_rcut/. +- **Default**: ecutwfc ### bessel_nao_tolerence @@ -2113,92 +2210,88 @@ In plane-wave-based calculations, necessary information will be printed into `OU ### bessel_nao_rcut -- **Type**: Real +- **Type**: Vector of Real (N values) - **Description**: Cutoff radius (in Bohr) and the common node of spherical Bessel functions used to construct the NAOs. - **Default**: 6.0 ### bessel_nao_smooth - **Type**: Boolean -- **Description**: If True, NAOs will be smoothed near the cutoff radius by $1-\exp\left(-\frac{(r-r_{cut})^2}{2\sigma^2}\right)$. See `bessel_nao_rcut` for $r_{cut}$ and `bessel_nao_sigma` for $\sigma$. +- **Description**: If True, NAOs will be smoothed near the cutoff radius. See bessel_nao_rcut and bessel_nao_sigma for parameters. - **Default**: True ### bessel_nao_sigma - **Type**: Real -- **Description**: Smoothing range (in Bohr). See also `bessel_nao_smooth`. +- **Description**: Smoothing range (in Bohr). See also bessel_nao_smooth. - **Default**: 0.1 [back to top](#full-list-of-input-keywords) ## DeePKS -These variables are used to control the usage of DeePKS method (a comprehensive data-driven approach to improve the accuracy of DFT). -Warning: this function is not robust enough for the current version. Please try the following variables at your own risk: - ### deepks_out_labels - **Type**: Integer -- **Availability**: Numerical atomic orbital basis +- **Availability**: *Numerical atomic orbital basis* - **Description**: Print labels and descriptors for DeePKS in OUT.${suffix}. The names of these files start with "deepks". - 0 : No output. - 1 : Output intermediate files needed during DeePKS training. - - 2 : Output target labels for label preperation. The label files are named as `deepks_.npy` or `deepks_.csr`, where the units and formats are the same as label files `.npy` or `.csr` required for training, except that the first dimension (`nframes`) is excluded. System structrue files are also given in `deepks_atom.npy` and `deepks_box.npy` in the unit of *Bohr*, which means `lattice_constant` should be set to 1 when training. -- **Note**: When `deepks_out_labels` equals **1**, the path of a numerical descriptor (an `orb` file) is needed to be specified under the `NUMERICAL_DESCRIPTOR` tag in the `STRU` file. For example: - - ```text - NUMERICAL_ORBITAL - H_gga_8au_60Ry_2s1p.orb - O_gga_7au_60Ry_2s2p1d.orb - - NUMERICAL_DESCRIPTOR - jle.orb - ``` - This is not needed when `deepks_out_labels` equals 2. + - 2 : Output target labels for label preperation. The label files are named as deepks_<property>.npy or deepks_<property>.csr, where the units and formats are the same as label files <property>.npy or <property>.csr required for training, except that the first dimension (nframes) is excluded. System structrue files are also given in deepks_atom.npy and deepks_box.npy in the unit of Bohr, which means lattice_constant should be set to 1 when training. + + > Note: When deepks_out_labels equals 1, the path of a numerical descriptor (an orb file) is needed to be specified under the NUMERICAL_DESCRIPTOR tag in the STRU file. This is not needed when deepks_out_labels equals 2. - **Default**: 0 ### deepks_out_freq_elec - **Type**: Integer -- **Availability**: Numerical atomic orbital basis -- **Description**: When `deepks_out_freq_elec` is greater than 0, print labels and descriptors for DeePKS in OUT.${suffix}/DeePKS_Labels_Elec per `deepks_out_freq_elec` electronic iterations, with suffix `_e*` to distinguish different steps. Often used with `deepks_out_labels` equals 1. +- **Availability**: *Numerical atomic orbital basis* +- **Description**: When deepks_out_freq_elec is greater than 0, print labels and descriptors for DeePKS in OUT.${suffix}/DeePKS_Labels_Elec per deepks_out_freq_elec electronic iterations, with suffix _e* to distinguish different steps. Often used with deepks_out_labels equals 1. - **Default**: 0 +### deepks_out_base + +- **Type**: String +- **Availability**: *Numerical atomic orbital basis and deepks_out_freq_elec is greater than 0* +- **Description**: Print labels and descriptors calculated by base functional ( determined by deepks_out_base ) and target functional ( determined by dft_functional ) for DeePKS in per deepks_out_freq_elec electronic iterations. The SCF process, labels and descriptors output of the target functional are all consistent with those when the target functional is used alone. The only additional output under this configuration is the labels of the base functional. Often used with deepks_out_labels equals 1. +- **Default**: None + ### deepks_scf - **Type**: Boolean -- **Availability**: Numerical atomic orbital basis +- **Availability**: *Numerical atomic orbital basis* - **Description**: perform self-consistent field iteration in DeePKS method -- **Note**: A trained, traced model file is needed. + + > Note: A trained, traced model file is needed. - **Default**: False ### deepks_equiv - **Type**: Boolean -- **Availability**: Numerical atomic orbital basis +- **Availability**: *Numerical atomic orbital basis* - **Description**: whether to use equivariant version of DeePKS -- **Note**: the equivariant version of DeePKS-kit is still under development, so this feature is currently only intended for internal usage. + + > Note: The equivariant version of DeePKS-kit is still under development, so this feature is currently only intended for internal usage. - **Default**: False ### deepks_model - **Type**: String -- **Availability**: Numerical atomic orbital basis and `deepks_scf` is true -- **Description**: the path of the trained, traced neural network model file generated by [deepks-kit](https://github.com/deepmodeling/deepks-kit) +- **Availability**: *Numerical atomic orbital basis and deepks_scf is true* +- **Description**: the path of the trained, traced neural network model file generated by deepks-kit - **Default**: None ### bessel_descriptor_lmax - **Type**: Integer -- **Availability**: `gen_bessel` calculation -- **Description**: the maximum angular momentum of the Bessel functions generated as the projectors in DeePKS -- **NOte**: To generate such projectors, set calculation type to `gen_bessel` in ABACUS. See also [calculation](#calculation). +- **Availability**: *gen_bessel calculation* +- **Description**: the maximum angular momentum of the Bessel functions generated as the projectors in DeePKS - NOte: To generate such projectors, set calculation type to gen_bessel in ABACUS. See also calculation. - **Default**: 2 ### bessel_descriptor_ecut -- **Type**: Real -- **Availability**: `gen_bessel` calculation +- **Type**: String +- **Availability**: *gen_bessel calculation* - **Description**: energy cutoff of Bessel functions - **Default**: same as ecutwfc - **Unit**: Ry @@ -2206,14 +2299,14 @@ Warning: this function is not robust enough for the current version. Please try ### bessel_descriptor_tolerence - **Type**: Real -- **Availability**: `gen_bessel` calculation +- **Availability**: *gen_bessel calculation* - **Description**: tolerance for searching the zeros of Bessel functions - **Default**: 1.0e-12 ### bessel_descriptor_rcut - **Type**: Real -- **Availability**: `gen_bessel` calculation +- **Availability**: *gen_bessel calculation* - **Description**: cutoff radius of Bessel functions - **Default**: 6.0 - **Unit**: Bohr @@ -2221,54 +2314,55 @@ Warning: this function is not robust enough for the current version. Please try ### bessel_descriptor_smooth - **Type**: Boolean -- **Availability**: `gen_bessel` calculation +- **Availability**: *gen_bessel calculation* - **Description**: smooth the Bessel functions at radius cutoff - **Default**: False ### bessel_descriptor_sigma - **Type**: Real -- **Availability**: `gen_bessel` calculation +- **Availability**: *gen_bessel calculation* - **Description**: smooth parameter at the cutoff radius of projectors - **Default**: 0.1 - **Unit**: Bohr ### deepks_bandgap -- **Type**: Int -- **Availability**: Numerical atomic orbital basis and `deepks_scf` is true +- **Type**: Integer +- **Availability**: *Numerical atomic orbital basis and deepks_scf is true* - **Description**: include bandgap label for DeePKS training - 0: Don't include bandgap label - - 1: Include target bandgap label (see [deepks\_band\_range](#deepks_band_range) for more details) - - 2: Include multiple bandgap label (see [deepks\_band\_range](#deepks_band_range) for more details) - - 3: For systems containing H atoms only, HOMO is defined as the max occupation expect H atoms and the bandgap label is the energy between HOMO and (HOMO + 1) + - 1: Include target bandgap label (see deepks_band_range for more details) + - 2: Include multiple bandgap label (see deepks_band_range for more details) + - 3: Used for systems containing H atoms. Here HOMO is defined as the max occupation except H atoms and the bandgap label is the energy between HOMO and (HOMO + 1) - **Default**: 0 ### deepks_band_range -- **Type**: Int*2 -- **Availability**: Numerical atomic orbital basis, `deepks_scf` is true, and `deepks_bandgap` is 1 or 2 +- **Type**: Integer*2 +- **Availability**: *Numerical atomic orbital basis, deepks_scf is true, and deepks_bandgap is 1 or 2* - **Description**: The first value should not be larger than the second one and the meaning differs in different cases below - - `deepks_bandgap` is 1: Bandgap label is the energy between `LUMO + deepks_band_range[0]` and `LUMO + deepks_band_range[1]`. If not set, it will calculate energy between HOMO and LUMO states. - - `deepks_bandgap` is 2: Bandgap labels are energies between HOMO and all states in range [`LUMO + deepks_band_range[0]`, `LUMO + deepks_band_range[1]`] (Thus there are `deepks_band_range[1] - deepks_band_range[0] + 1` bandgaps in total). If HOMO is included in the setting range, it will be ignored since it will always be zero and has no valuable messages (`deepks_band_range[1] - deepks_band_range[0]` bandgaps in this case). *NOTICE: The set range can be greater than, less than, or include the value of HOMO. In the bandgap label, we always calculate the energy of the state in the set range minus the energy of HOMO state, so the bandgap can be negative if the state is lower than HOMO.* + - deepks_bandgap is 1: Bandgap label is the energy between LUMO + deepks_band_range[0] and LUMO + deepks_band_range[1]. If not set, it will calculate energy between HOMO and LUMO states. + - deepks_bandgap is 2: Bandgap labels are energies between HOMO and all states in range [LUMO + deepks_band_range[0], LUMO + deepks_band_range[1]] (Thus there are deepks_band_range[1] - deepks_band_range[0] + 1 bandgaps in total). If HOMO is included in the setting range, it will be ignored since it will always be zero and has no valuable messages (deepks_band_range[1] - deepks_band_range[0] bandgaps in this case). NOTICE: The set range can be greater than, less than, or include the value of HOMO. In the bandgap label, we always calculate the energy of the state in the set range minus the energy of HOMO state, so the bandgap can be negative if the state is lower than HOMO. - **Default**: -1 0 ### deepks_v_delta -- **Type**: int -- **Availability**: Numerical atomic orbital basis -- **Description**: Include V_delta/V_delta_R (Hamiltonian in k/real space) label for DeePKS training. When `deepks_out_labels` is true and `deepks_v_delta` > 0 (k space), ABACUS will output `deepks_hbase.npy`, `deepks_vdelta.npy` and `deepks_htot.npy`(htot=hbase+vdelta). When `deepks_out_labels` is true and `deepks_v_delta` < 0 (real space), ABACUS will output `deepks_hrtot.csr`, `deepks_hrdelta.csr`. Some more files output for different settings. - - `deepks_v_delta` = 1: `deepks_vdpre.npy`, which is used to calculate V_delta during DeePKS training. - - `deepks_v_delta` = 2: `deepks_phialpha.npy` and `deepks_gevdm.npy`, which can be used to calculate `deepks_vdpre.npy`. A recommanded method for memory saving. - - `deepks_v_delta` = -1: `deepks_vdrpre.npy`, which is used to calculate V_delta_R during DeePKS training. - - `deepks_v_delta` = -2: `deepks_phialpha_r.npy` and `deepks_gevdm.npy`, which can be used to calculate `deepks_vdrpre.npy`. A recommanded method for memory saving. +- **Type**: Integer +- **Availability**: *Numerical atomic orbital basis* +- **Description**: Include V_delta/V_delta_R (Hamiltonian in k/real space) label for DeePKS training. When deepks_out_labels is true and deepks_v_delta > 0 (k space), ABACUS will output deepks_hbase.npy, deepks_vdelta.npy and deepks_htot.npy(htot=hbase+vdelta). When deepks_out_labels is true and deepks_v_delta < 0 (real space), ABACUS will output deepks_hrtot.csr, deepks_hrdelta.csr. Some more files output for different settings. NOTICE: To match the unit Normally used in DeePKS, the unit of Hamiltonian in k space is Hartree. However, currently in R space the unit is still Ry. + - deepks_v_delta = 1: deepks_vdpre.npy, which is used to calculate V_delta during DeePKS training. + - deepks_v_delta = 2: deepks_phialpha.npy and deepks_gevdm.npy, which can be used to calculate deepks_vdpre.npy. A recommanded method for memory saving. + - deepks_v_delta = -1: deepks_vdrpre.npy, which is used to calculate V_delta_R during DeePKS training. + - deepks_v_delta = -2: deepks_phialpha_r.npy and deepks_gevdm.npy, which can be used to calculate deepks_vdrpre.npy. A recommanded method for memory saving. - **Default**: 0 ### deepks_out_unittest - **Type**: Boolean - **Description**: generate files for constructing DeePKS unit test -- **Note**: Not relevant when running actual calculations. When set to 1, ABACUS needs to be run with only 1 process. + + > Note: Not relevant when running actual calculations. When set to 1, ABACUS needs to be run with only 1 process. - **Default**: False [back to top](#full-list-of-input-keywords) @@ -2278,47 +2372,43 @@ Warning: this function is not robust enough for the current version. Please try ### of_kinetic - **Type**: String -- **Availability**: OFDFT -- **Description**: The type of KEDF (kinetic energy density functional). - - Analytical functionals: - - **wt**: Wang-Teter. - - **tf**: Thomas-Fermi. - - **vw**: von Weizsäcker. - - **tf+**: TF $\rm{\lambda}$ vW, the parameter $\rm{\lambda}$ can be set by `of_vw_weight`. - - **lkt**: Luo-Karasiev-Trickey. - - **xwm**: Xu-Wang-Ma - - Machine learning (ML) based functionals: - - **ml**: ML-based KEDF allows for greater flexibility, enabling users to set related ML model parameters themselves. see [ML-KEDF: machine learning based kinetic energy density functional for OFDFT](#ml-kedf-machine-learning-based-kinetic-energy-density-functional-for-ofdft). - - **mpn**: ML-based Physically-constrained Non-local (MPN) KEDF. ABACUS automatically configures the necessary parameters, requiring no manual intervention from the user. - - **cpn5**: Multi-Channel MPN (CPN) KEDF with 5 channels. Similar to mpn, ABACUS handles all parameter settings automatically. +- **Availability**: *OFDFT* +- **Description**: Kinetic energy functional type: + - tf: Thomas-Fermi (TF) functional + - vw: von Weizsacker (vW) functional + - tf+: TF + vW functional + - wt: Wang-Teter (WT) functional + - xwm: XWM functional + - lkt: Luo-Karasiev-Trickey (LKT) functional + - ml: Machine learning KEDF + - mpn: MPN KEDF (automatically sets ml parameters) + - cpn5: CPN5 KEDF (automatically sets ml parameters) - **Default**: wt ### of_method - **Type**: String -- **Availability**: OFDFT +- **Availability**: *OFDFT* - **Description**: The optimization method used in OFDFT. - - **cg1**: Polak-Ribiere. Standard CG algorithm. - - **cg2**: Hager-Zhang (generally faster than cg1). - - **tn**: Truncated Newton algorithm. + - cg1: Polak-Ribiere. Standard CG algorithm. + - cg2: Hager-Zhang (generally faster than cg1). + - tn: Truncated Newton algorithm. - **Default**: tn ### of_conv - **Type**: String -- **Availability**: OFDFT +- **Availability**: *OFDFT* - **Description**: Criterion used to check the convergence of OFDFT. - - **energy**: Ttotal energy changes less than `of_tole`. - - **potential**: The norm of potential is less than `of_tolp`. - - **both**: Both energy and potential must satisfy the convergence criterion. + - energy: Total energy changes less than of_tole. + - potential: The norm of potential is less than of_tolp. + - both: Both energy and potential must satisfy the convergence criterion. - **Default**: energy ### of_tole - **Type**: Real -- **Availability**: OFDFT +- **Availability**: *OFDFT* - **Description**: Tolerance of the energy change for determining the convergence. - **Default**: 2e-6 - **Unit**: Ry @@ -2326,7 +2416,7 @@ Warning: this function is not robust enough for the current version. Please try ### of_tolp - **Type**: Real -- **Availability**: OFDFT +- **Availability**: *OFDFT* - **Description**: Tolerance of potential for determining the convergence. - **Default**: 1e-5 - **Unit**: Ry @@ -2334,35 +2424,33 @@ Warning: this function is not robust enough for the current version. Please try ### of_tf_weight - **Type**: Real -- **Availability**: OFDFT with `of_kinetic=tf, tf+, wt, xwm` +- **Availability**: *OFDFT with of_kinetic=tf, tf+, wt, xwm* - **Description**: Weight of TF KEDF (kinetic energy density functional). - **Default**: 1.0 ### of_vw_weight - **Type**: Real -- **Availability**: OFDFT with `of_kinetic=vw, tf+, wt, lkt, xwm` +- **Availability**: *OFDFT with of_kinetic=vw, tf+, wt, lkt, xwm* - **Description**: Weight of vW KEDF (kinetic energy density functional). - **Default**: 1.0 ### of_wt_alpha - **Type**: Real -- **Availability**: OFDFT with `of_kinetic=wt` +- **Availability**: *OFDFT with of_kinetic=wt* - **Description**: Parameter alpha of WT KEDF (kinetic energy density functional). -- **Default**: $5/6$ ### of_wt_beta - **Type**: Real -- **Availability**: OFDFT with `of_kinetic=wt` +- **Availability**: *OFDFT with of_kinetic=wt* - **Description**: Parameter beta of WT KEDF (kinetic energy density functional). -- **Default**: $5/6$ ### of_wt_rho0 - **Type**: Real -- **Availability**: OFDFT with `of_kinetic=wt` +- **Availability**: *OFDFT with of_kinetic=wt* - **Description**: The average density of system. - **Default**: 0.0 - **Unit**: Bohr^-3 @@ -2370,69 +2458,68 @@ Warning: this function is not robust enough for the current version. Please try ### of_hold_rho0 - **Type**: Boolean -- **Availability**: OFDFT with `of_kinetic=wt` +- **Availability**: *OFDFT with of_kinetic=wt* - **Description**: Whether to fix the average density rho0. - - **True**: rho0 will be fixed even if the volume of system has changed, it will be set to True automatically if `of_wt_rho0` is not zero. - - **False**: rho0 will change if volume of system has changed. + - True: rho0 will be fixed even if the volume of system has changed, it will be set to True automatically if of_wt_rho0 is not zero. + - False: rho0 will change if volume of system has changed. - **Default**: False ### of_lkt_a - **Type**: Real -- **Availability**: OFDFT with `of_kinetic=lkt` +- **Availability**: *OFDFT with of_kinetic=lkt* - **Description**: Parameter a of LKT KEDF (kinetic energy density functional). - **Default**: 1.3 ### of_xwm_rho_ref - **Type**: Real -- **Availability**: OFDFT with `of_kinetic=xwm` +- **Availability**: *OFDFT with of_kinetic=xwm* - **Description**: Reference charge density for XWM kinetic energy functional. If set to 0, the program will use average charge density. - **Default**: 0.0 ### of_xwm_kappa - **Type**: Real -- **Availability**: OFDFT with `of_kinetic=xwm` -- **Description**: Parameter $\kappa$ for XWM kinetic energy functional. See PHYSICAL REVIEW B 100, 205132 (2019) for optimal values. +- **Availability**: *OFDFT with of_kinetic=xwm* +- **Description**: Parameter for XWM kinetic energy functional. See PHYSICAL REVIEW B 100, 205132 (2019) for optimal values. - **Default**: 0.0 ### of_read_kernel - **Type**: Boolean -- **Availability**: OFDFT with `of_kinetic=wt` +- **Availability**: *OFDFT with of_kinetic=wt* - **Description**: Whether to read in the kernel file. - - **True**: The kernel of WT KEDF (kinetic energy density functional) will be filled from the file specified by `of_kernel_file`. - - **False**: The kernel of WT KEDF (kinetic energy density functional) will be filled from formula. + - True: The kernel of WT KEDF (kinetic energy density functional) will be filled from the file specified by of_kernel_file. + - False: The kernel of WT KEDF (kinetic energy density functional) will be filled from formula. - **Default**: False ### of_kernel_file - **Type**: String -- **Availability**: OFDFT with `of_read_kernel=True` +- **Availability**: *OFDFT with of_read_kernel=True* - **Description**: The name of WT kernel file. - **Default**: WTkernel.txt ### of_full_pw - **Type**: Boolean -- **Availability**: OFDFT +- **Availability**: *OFDFT* - **Description**: Whether to use full planewaves. - - **True**: Ecut will be ignored while collecting planewaves, so that all planewaves will be used in FFT. - - **False**: Only use the planewaves inside ecut, the same as KSDFT. + - True: Ecut will be ignored while collecting planewaves, so that all planewaves will be used in FFT. + - False: Only use the planewaves inside ecut, the same as KSDFT. - **Default**: True ### of_full_pw_dim - **Type**: Integer -- **Availability**: OFDFT with `of_full_pw = True` +- **Availability**: *OFDFT with of_full_pw = True* - **Description**: Specify the parity of FFT dimensions. - - **0**: either odd or even. - - **1**: odd only. - - **2**: even only. - - Note: Even dimensions may cause slight errors in FFT. It should be ignorable in ofdft calculation, but it may make Cardinal B-spline interpolation unstable, so please set `of_full_pw_dim = 1` if `nbspline != -1`. + - 0: either odd or even. + - 1: odd only. + - 2: even only. + Note: Even dimensions may cause slight errors in FFT. It should be ignorable in ofdft calculation, but it may make Cardinal B-spline interpolation unstable, so please set of_full_pw_dim = 1 if nbspline != -1. - **Default**: 0 [back to top](#full-list-of-input-keywords) @@ -2442,240 +2529,243 @@ Warning: this function is not robust enough for the current version. Please try ### of_ml_gene_data - **Type**: Boolean -- **Availability**: Used only for KSDFT with plane wave basis -- **Description**: Controls the generation of machine learning training data. When enabled, training data in `.npy` format will be saved in the directory `OUT.${suffix}/MLKEDF_Descriptors/`. The generated descriptors are categorized as follows: - - Local/Semilocal Descriptors. Files are named as `{var}.npy`, where `{var}` corresponds to the descriptor type: - - `gamma`: Enabled by [of_ml_gamma](#of_ml_gamma) - - `p`: Enabled by [of_ml_p](#of_ml_p) - - `q`: Enabled by [of_ml_q](#of_ml_q) - - `tanhp`: Enabled by [of_ml_tanhp](#of_ml_tanhp) - - `tanhq`: Enabled by [of_ml_tanhq](#of_ml_tanhq) - - Nonlocal Descriptors generated using kernels configured via [of_ml_nkernel](#of_ml_nkernel), [of_ml_kernel](#of_ml_kernel), and [of_ml_kernel_scaling](#of_ml_kernel_scaling). Files follow the naming convention `{var}_{kernel_type}_{kernel_scaling}.npy`, where `{kernel_type}` and `{kernel_scaling}` are specified by [of_ml_kernel](#of_ml_kernel), and [of_ml_kernel_scaling](#of_ml_kernel_scaling), respectively, and `{val}` denotes the kind of the descriptor, including - - `gammanl`: Enabled by [of_ml_gammanl](#of_ml_gammanl) - - `pnl`: Enabled by [of_ml_pnl](#of_ml_pnl) - - `qnl`: Enabled by [of_ml_qnl](#of_ml_qnl) - - `xi`: Enabled by [of_ml_xi](#of_ml_xi) - - `tanhxi`: Enabled by [of_ml_tanhxi](#of_ml_tanhxi) - - `tanhxi_nl`: Enabled by [of_ml_tanhxi_nl](#of_ml_tanhxi_nl) - - `tanh_pnl`: Enabled by [of_ml_tanh_pnl](#of_ml_tanh_pnl) - - `tanh_qnl`: Enabled by [of_ml_tanh_qnl](#of_ml_tanh_qnl) - - `tanhp_nl`: Enabled by [of_ml_tanhp_nl](#of_ml_tanhp_nl) - - `tanhq_nl`: Enabled by [of_ml_tanhq_nl](#of_ml_tanhq_nl) - - Training Targets, including key quantum mechanical quantities: - - `enhancement.npy`: Pauli energy enhancement factor $T_\theta/T_{\rm{TF}}$, where $T_{\rm{TF}}$ is the Thomas-Fermi functional - - `pauli.npy`: Pauli potential $V_\theta$ - - `veff.npy`: Effective potential +- **Availability**: *Used only for KSDFT with plane wave basis* +- **Description**: Controls the generation of machine learning training data. When enabled, training data in .npy format will be saved in the directory OUT.${suffix}/. - **Default**: False ### of_ml_device - **Type**: String -- **Availability**: OFDFT +- **Availability**: *OFDFT* - **Description**: Run Neural Network on GPU or CPU. - - **cpu**: CPU - - **gpu**: GPU + - cpu: CPU + - gpu: GPU - **Default**: cpu ### of_ml_feg - **Type**: Integer -- **Availability**: OFDFT -- **Description**: The method to incorporate the Free Electron Gas (FEG) limit: $F_\theta |_{\rm{FEG}} = 1$, where $F_\theta$ is enhancement factor of Pauli energy. - - **0**: Do not incorporate the FEG limit. - - **1**: Incorporate the FEG limit by translation: $F_\theta = F^{\rm{NN}}_\theta - F^{\rm{NN}}_\theta|_{\rm{FEG}} + 1$. - - **3**: Incorporate the FEG limit by nonlinear transformation: $F_\theta = f(F^{\rm{NN}}_\theta - F^{\rm{NN}}_\theta|_{\rm{FEG}} + \ln(e - 1))$, where $f = \ln(1 + e^x)$ is softplus function, satisfying $f(x)|_{x=\ln(e-1)} = 1$. +- **Availability**: *OFDFT* +- **Description**: The method to incorporate the Free Electron Gas (FEG) limit. + - 0: Do not incorporate the FEG limit. + - 1: Incorporate the FEG limit by translation. + - 3: Incorporate the FEG limit by nonlinear transformation using softplus function. - **Default**: 0 ### of_ml_nkernel - **Type**: Integer -- **Availability**: OFDFT +- **Availability**: *OFDFT* - **Description**: Number of kernel functions. - **Default**: 1 ### of_ml_kernel -- **Type**: Vector of Integer -- **Availability**: OFDFT -- **Description**: Containing nkernel (see [of_ml_nkernel](#of_ml_nkernel)) elements. The $i$-th element specifies the type of the $i$-th kernel function. - - **1**: Wang-Teter kernel function. - - **2**: Modified Yukawa function: $k_{\rm{F}}^2\frac{\exp{({-\alpha k_{\rm{F}}|\mathbf{r}-\mathbf{r}'|})}}{|\mathbf{r}-\mathbf{r}'|}$, and $\alpha$ is specified by [of_ml_yukawa_alpha](#of_ml_yukawa_alpha). - - **3**: Truncated kinetic kernel (TKK), the file containing TKK is specified by [of_ml_kernel_file](#of_kernel_file). +- **Type**: Vector of Integer +- **Availability**: *OFDFT* +- **Description**: Containing nkernel (see of_ml_nkernel) elements. The i-th element specifies the type of the i-th kernel function. + - 1: Wang-Teter kernel function. + - 2: Modified Yukawa function, and alpha is specified by of_ml_yukawa_alpha. + - 3: Truncated kinetic kernel (TKK), the file containing TKK is specified by of_ml_kernel_file. - **Default**: 1 ### of_ml_kernel_scaling - **Type**: Vector of Real -- **Availability**: OFDFT -- **Description**: Containing nkernel (see [of_ml_nkernel](#of_ml_nkernel)) elements. The $i$-th element specifies the RECIPROCAL of scaling parameter $\lambda$ of the $i$-th kernel function. $w_i(\mathbf{r}-\mathbf{r}') = \lambda^3 w_i'(\lambda(\mathbf{r}-\mathbf{r}'))$. +- **Availability**: *OFDFT* +- **Description**: Containing nkernel (see of_ml_nkernel) elements. The i-th element specifies the RECIPROCAL of scaling parameter of the i-th kernel function. - **Default**: 1.0 ### of_ml_yukawa_alpha - **Type**: Vector of Real -- **Availability**: OFDFT -- **Description**: Containing nkernel (see [of_ml_nkernel](#of_ml_nkernel)) elements. The $i$-th element specifies the parameter $\alpha$ of $i$-th kernel function. ONLY used for Yukawa kernel function. +- **Availability**: *OFDFT* +- **Description**: Containing nkernel (see of_ml_nkernel) elements. The i-th element specifies the parameter alpha of i-th kernel function. ONLY used for Yukawa kernel function. - **Default**: 1.0 ### of_ml_kernel_file - **Type**: Vector of String -- **Availability**: OFDFT -- **Description**: Containing nkernel (see [of_ml_nkernel](#of_ml_nkernel)) elements. The $i$-th element specifies the file containint the $i$-th kernel function. ONLY used for TKK. +- **Availability**: *OFDFT* +- **Description**: Containing nkernel (see of_ml_nkernel) elements. The i-th element specifies the file containing the i-th kernel function. ONLY used for TKK. - **Default**: none ### of_ml_gamma - **Type**: Boolean -- **Availability**: OFDFT -- **Description**: Local descriptor: $\gamma(\mathbf{r}) = (\rho(\mathbf{r}) / \rho_0)^{1/3}$. +- **Availability**: *OFDFT* +- **Description**: Local descriptor: gamma = (rho / rho0)^(1/3). - **Default**: False ### of_ml_p - **Type**: Boolean -- **Availability**: OFDFT -- **Description**: Semi-local descriptor: $p(\mathbf{r}) = \frac{|\nabla \rho(\mathbf{r})|^2} {[2 (3 \pi^2)^{1/3} \rho^{4/3}(\mathbf{r})]^2}$. +- **Availability**: *OFDFT* +- **Description**: Semi-local descriptor: p = |nabla rho|^2 / [2 (3 pi^2)^(1/3) rho^(4/3)]^2. - **Default**: False ### of_ml_q - **Type**: Boolean -- **Availability**: OFDFT -- **Description**: Semi-local descriptor: $q(\mathbf{r}) = \frac{\nabla^2 \rho(\mathbf{r})} {[4 (3 \pi^2)^{2/3} \rho^{5/3}(\mathbf{r})]}$. +- **Availability**: *OFDFT* +- **Description**: Semi-local descriptor: q = nabla^2 rho / [4 (3 pi^2)^(2/3) rho^(5/3)]. - **Default**: False ### of_ml_tanhp - **Type**: Boolean -- **Availability**: OFDFT -- **Description**: Semi-local descriptor: $\tilde{p}(\mathbf{r}) = \tanh(\chi_p p(\mathbf{r}))$. +- **Availability**: *OFDFT* +- **Description**: Semi-local descriptor: tanhp = tanh(chi_p * p). - **Default**: False ### of_ml_tanhq - **Type**: Boolean -- **Availability**: OFDFT -- **Description**: Semi-local descriptor: $\tilde{q}(\mathbf{r}) = \tanh(\chi_q q(\mathbf{r}))$. +- **Availability**: *OFDFT* +- **Description**: Semi-local descriptor: tanhq = tanh(chi_q * q). - **Default**: False ### of_ml_chi_p - **Type**: Real -- **Availability**: OFDFT -- **Description**: Hyperparameter $\chi_p$: $\tilde{p}(\mathbf{r}) = \tanh(\chi_p p(\mathbf{r}))$. +- **Availability**: *OFDFT* +- **Description**: Hyperparameter chi_p: tanhp = tanh(chi_p * p). - **Default**: 1.0 ### of_ml_chi_q - **Type**: Real -- **Availability**: OFDFT -- **Description**: Hyperparameter $\chi_q$: $\tilde{q}(\mathbf{r}) = \tanh(\chi_q q(\mathbf{r}))$. -- **Default**: False +- **Availability**: *OFDFT* +- **Description**: Hyperparameter chi_q: tanhq = tanh(chi_q * q). +- **Default**: 1.0 ### of_ml_gammanl -- **Type**: Vector of Integer -- **Availability**: OFDFT -- **Description**: Containing nkernel (see [of_ml_nkernel](#of_ml_nkernel)) elements. The $i$-th element controls the non-local descriptor defined by the $i$-th kernel function $w_i(\mathbf{r}-\mathbf{r}')$: $\gamma_{\rm{nl}}(\mathbf{r}) = \int{w_i(\mathbf{r}-\mathbf{r}') \gamma(\mathbf{r}') dr'}$. +- **Type**: Vector of Integer +- **Availability**: *OFDFT* +- **Description**: Containing nkernel (see of_ml_nkernel) elements. The i-th element controls the non-local descriptor gammanl defined by the i-th kernel function. - **Default**: 0 ### of_ml_pnl -- **Type**: Vector of Integer -- **Availability**: OFDFT -- **Description**: Containing nkernel (see [of_ml_nkernel](#of_ml_nkernel)) elements. The $i$-th element controls the non-local descriptor defined by the $i$-th kernel function $w_i(\mathbf{r}-\mathbf{r}')$: $p_{\rm{nl}}(\mathbf{r}) = \int{w_i(\mathbf{r}-\mathbf{r}') p(\mathbf{r}') dr'}$. +- **Type**: Vector of Integer +- **Availability**: *OFDFT* +- **Description**: Containing nkernel (see of_ml_nkernel) elements. The i-th element controls the non-local descriptor pnl defined by the i-th kernel function. - **Default**: 0 ### of_ml_qnl -- **Type**: Vector of Integer -- **Availability**: OFDFT -- **Description**: Containing nkernel (see [of_ml_nkernel](#of_ml_nkernel)) elements. The $i$-th element controls the non-local descriptor defined by the $i$-th kernel function $w_i(\mathbf{r}-\mathbf{r}')$: $q_{\rm{nl}}(\mathbf{r}) = \int{w_i(\mathbf{r}-\mathbf{r}') q(\mathbf{r}') dr'}$. +- **Type**: Vector of Integer +- **Availability**: *OFDFT* +- **Description**: Containing nkernel (see of_ml_nkernel) elements. The i-th element controls the non-local descriptor qnl defined by the i-th kernel function. - **Default**: 0 ### of_ml_xi -- **Type**: Vector of Integer -- **Availability**: OFDFT -- **Description**: Containing nkernel (see [of_ml_nkernel](#of_ml_nkernel)) elements. The $i$-th element controls the non-local descriptor defined by the $i$-th kernel function $w_i(\mathbf{r}-\mathbf{r}')$: $\xi(\mathbf{r}) = \frac{\int{w_i(\mathbf{r}-\mathbf{r}') \rho^{1/3}(\mathbf{r}') dr'}}{\rho^{1/3}(\mathbf{r})}$. +- **Type**: Vector of Integer +- **Availability**: *OFDFT* +- **Description**: Containing nkernel (see of_ml_nkernel) elements. The i-th element controls the non-local descriptor xi defined by the i-th kernel function. - **Default**: 0 ### of_ml_tanhxi -- **Type**: Vector of Integer -- **Availability**: OFDFT -- **Description**: Containing nkernel (see [of_ml_nkernel](#of_ml_nkernel)) elements. The $i$-th element controls the non-local descriptor defined by the $i$-th kernel function $w_i(\mathbf{r}-\mathbf{r}')$: $\tilde{\xi}(\mathbf{r}) = \tanh(\chi_{\xi} \xi(\mathbf{r}))$. +- **Type**: Vector of Integer +- **Availability**: *OFDFT* +- **Description**: Containing nkernel (see of_ml_nkernel) elements. The i-th element controls the non-local descriptor tanhxi defined by the i-th kernel function. - **Default**: 0 ### of_ml_tanhxi_nl -- **Type**: Vector of Integer -- **Availability**: OFDFT -- **Description**: Containing nkernel (see [of_ml_nkernel](#of_ml_nkernel)) elements. The $i$-th element controls the non-local descriptor defined by the $i$-th kernel function $w_i(\mathbf{r}-\mathbf{r}')$: $\tilde{\xi}_{\rm{nl}}(\mathbf{r}) = \int{w_i(\mathbf{r}-\mathbf{r}') \tilde{\xi}(\mathbf{r}') dr'}$. +- **Type**: Vector of Integer +- **Availability**: *OFDFT* +- **Description**: Containing nkernel (see of_ml_nkernel) elements. The i-th element controls the non-local descriptor tanhxi_nl defined by the i-th kernel function. - **Default**: 0 ### of_ml_tanh_pnl -- **Type**: Vector of Integer -- **Availability**: OFDFT -- **Description**: Containing nkernel (see [of_ml_nkernel](#of_ml_nkernel)) elements. The $i$-th element controls the non-local descriptor defined by the $i$-th kernel function $w_i(\mathbf{r}-\mathbf{r}')$: $\tilde{p_{\rm{nl}}}(\mathbf{r}) = \tanh{(\chi_{p_{\rm{nl}}} p_{\rm{nl}}(\mathbf{r}))}$. +- **Type**: Vector of Integer +- **Availability**: *OFDFT* +- **Description**: Containing nkernel (see of_ml_nkernel) elements. The i-th element controls the non-local descriptor tanh_pnl defined by the i-th kernel function. - **Default**: 0 ### of_ml_tanh_qnl -- **Type**: Vector of Integer -- **Availability**: OFDFT -- **Description**: Containing nkernel (see [of_ml_nkernel](#of_ml_nkernel)) elements. The $i$-th element controls the non-local descriptor defined by the $i$-th kernel function $w_i(\mathbf{r}-\mathbf{r}')$: $\tilde{q_{\rm{nl}}}(\mathbf{r}) = \tanh{(\chi_{q_{\rm{nl}}} q_{\rm{nl}}(\mathbf{r}))}$. +- **Type**: Vector of Integer +- **Availability**: *OFDFT* +- **Description**: Containing nkernel (see of_ml_nkernel) elements. The i-th element controls the non-local descriptor tanh_qnl defined by the i-th kernel function. - **Default**: 0 ### of_ml_tanhp_nl -- **Type**: Vector of Integer -- **Availability**: OFDFT -- **Description**: Containing nkernel (see [of_ml_nkernel](#of_ml_nkernel)) elements. The $i$-th element controls the non-local descriptor defined by the $i$-th kernel function $w_i(\mathbf{r}-\mathbf{r}')$: $\tilde{p}_{\rm{nl}}(\mathbf{r}) = \int{w_i(\mathbf{r}-\mathbf{r}') \tilde{p}(\mathbf{r}') dr'}$. +- **Type**: Vector of Integer +- **Availability**: *OFDFT* +- **Description**: Containing nkernel (see of_ml_nkernel) elements. The i-th element controls the non-local descriptor tanhp_nl defined by the i-th kernel function. - **Default**: 0 ### of_ml_tanhq_nl -- **Type**: Vector of Integer -- **Availability**: OFDFT -- **Description**: Containing nkernel (see [of_ml_nkernel](#of_ml_nkernel)) elements. The $i$-th element controls the non-local descriptor defined by the $i$-th kernel function $w_i(\mathbf{r}-\mathbf{r}')$: $\tilde{q}_{\rm{nl}}(\mathbf{r}) = \int{w_i(\mathbf{r}-\mathbf{r}') \tilde{q}(\mathbf{r}') dr'}$. +- **Type**: Vector of Integer +- **Availability**: *OFDFT* +- **Description**: Containing nkernel (see of_ml_nkernel) elements. The i-th element controls the non-local descriptor tanhq_nl defined by the i-th kernel function. - **Default**: 0 ### of_ml_chi_xi - **Type**: Vector of Real -- **Availability**: OFDFT -- **Description**: Containing nkernel (see [of_ml_nkernel](#of_ml_nkernel)) elements. The $i$-th element specifies the hyperparameter $\chi_\xi$ of non-local descriptor defined by the $i$-th kernel function $w_i(\mathbf{r}-\mathbf{r}')$: $\tilde{\xi}(\mathbf{r}) = \tanh(\chi_{\xi} \xi(\mathbf{r}))$. +- **Availability**: *OFDFT* +- **Description**: Containing nkernel (see of_ml_nkernel) elements. The i-th element specifies the hyperparameter chi_xi of non-local descriptor tanhxi defined by the i-th kernel function. - **Default**: 1.0 ### of_ml_chi_pnl - **Type**: Vector of Real -- **Availability**: OFDFT -- **Description**: Containing nkernel (see [of_ml_nkernel](#of_ml_nkernel)) elements. The $i$-th element specifies the hyperparameter $\chi_{p_{\rm{nl}}}$ of non-local descriptor defined by the $i$-th kernel function $w_i(\mathbf{r}-\mathbf{r}')$: $\tilde{p_{\rm{nl}}}(\mathbf{r}) = \tanh{(\chi_{p_{\rm{nl}}} p_{\rm{nl}}(\mathbf{r}))}$. +- **Availability**: *OFDFT* +- **Description**: Containing nkernel (see of_ml_nkernel) elements. The i-th element specifies the hyperparameter chi_pnl of non-local descriptor tanh_pnl defined by the i-th kernel function. - **Default**: 1.0 ### of_ml_chi_qnl - **Type**: Vector of Real -- **Availability**: OFDFT -- **Description**: Containing nkernel (see [of_ml_nkernel](#of_ml_nkernel)) elements. The $i$-th element specifies the hyperparameter $\chi_{q_{\rm{nl}}}$ of non-local descriptor defined by the $i$-th kernel function $w_i(\mathbf{r}-\mathbf{r}')$: $\tilde{q_{\rm{nl}}}(\mathbf{r}) = \tanh{(\chi_{q_{\rm{nl}}} q_{\rm{nl}}(\mathbf{r}))}$. +- **Availability**: *OFDFT* +- **Description**: Containing nkernel (see of_ml_nkernel) elements. The i-th element specifies the hyperparameter chi_qnl of non-local descriptor tanh_qnl defined by the i-th kernel function. - **Default**: 1.0 ### of_ml_local_test - **Type**: Boolean -- **Availability**: OFDFT +- **Availability**: *OFDFT* - **Description**: FOR TEST. Read in the density, and output the F and Pauli potential. - **Default**: False +### ml_exx + +- **Type**: Boolean +- **Description**: Whether to use machine learning based exact exchange (ML-EXX). +- **Default**: False + [back to top](#full-list-of-input-keywords) -## Electric field and dipole correction +## TDOFDFT: time dependent orbital free density functional theory + +### of_cd + +- **Type**: Boolean +- **Availability**: *TDOFDFT* +- **Description**: Added the current dependent(CD) potential. (https://doi.org/10.1103/PhysRevB.98.144302) + - True: Added the CD potential. + - False: Not added the CD potential. +- **Default**: False -These variables are relevant to electric field and dipole correction +### of_mcd_alpha + +- **Type**: Real +- **Availability**: *TDOFDFT* +- **Description**: The value of the parameter alpha in modified CD potential method. mCDPotential=alpha*CDPotential (proposed in paper PhysRevB.98.144302) +- **Default**: 1.0 + +[back to top](#full-list-of-input-keywords) + +## Electric field and dipole correction ### efield_flag @@ -2688,47 +2778,45 @@ These variables are relevant to electric field and dipole correction ### dip_cor_flag - **Type**: Boolean -- **Availability**: With dip_cor_flag = True and efield_flag = True. +- **Availability**: *With dip_cor_flag = True and efield_flag = True.* - **Description**: Added a dipole correction to the bare ionic potential. - - True:A dipole correction is also added to the bare ionic potential. + - True: A dipole correction is also added to the bare ionic potential. - False: A dipole correction is not added to the bare ionic potential. -> Note: If you do not want any electric field, the parameter `efield_amp` should be set to zero. This should ONLY be used in a slab geometry for surface calculations, with the discontinuity FALLING IN THE EMPTY SPACE. - + > Note: If you do not want any electric field, the parameter efield_amp should be set to zero. This should ONLY be used in a slab geometry for surface calculations, with the discontinuity FALLING IN THE EMPTY SPACE. - **Default**: False ### efield_dir - **Type**: Integer -- **Availability**: with efield_flag = True. +- **Availability**: *with efield_flag = True.* - **Description**: The direction of the electric field or dipole correction is parallel to the reciprocal lattice vector, so the potential is constant in planes defined by FFT grid points, efield_dir can set to 0, 1 or 2. - - 0: parallel to $b_1=\frac{2\pi(a_2\times a_3)}{a_1\cdot(a_2\times a_3)}$ - - 1: parallel to $b_2=\frac{2\pi(a_3\times a_1)}{a_1\cdot(a_2\times a_3)}$ - - 2: parallel to $b_3=\frac{2\pi(a_1\times a_2)}{a_1\cdot(a_2\times a_3)}$ + - 0: parallel to the first reciprocal lattice vector + - 1: parallel to the second reciprocal lattice vector + - 2: parallel to the third reciprocal lattice vector - **Default**: 2 ### efield_pos_max - **Type**: Real -- **Availability**: with efield_flag = True. -- **Description**: Position of the maximum of the saw-like potential along crystal axis efield_dir, within the unit cell, 0 <= efield_pos_max < 1. -- **Default**: Autoset to `center of vacuum - width of vacuum / 20` +- **Availability**: *with efield_flag = True.* +- **Description**: Position of the maximum of the saw-like potential along crystal axis efield_dir, within the unit cell, 0 <= efield_pos_max < 1. +- **Default**: Autoset to center of vacuum - width of vacuum / 20 ### efield_pos_dec - **Type**: Real -- **Availability**: with efield_flag = True. -- **Description**: Zone in the unit cell where the saw-like potential decreases, 0 < efield_pos_dec < 1. -- **Default**: Autoset to `width of vacuum / 10` +- **Availability**: *with efield_flag = True.* +- **Description**: Zone in the unit cell where the saw-like potential decreases, 0 < efield_pos_dec < 1. +- **Default**: Autoset to width of vacuum / 10 ### efield_amp - **Type**: Real -- **Availability**: with efield_flag = True. -- **Description**: Amplitude of the electric field. The saw-like potential increases with slope efield_amp in the region from efield_pos_max+efield_pos_dec-1) to (efield_pos_max), then decreases until (efield_pos_max+efield_pos_dec), in units of the crystal vector efield_dir. - -> Note: The change of slope of this potential must be located in the empty region, or else unphysical forces will result. +- **Availability**: *with efield_flag = True.* +- **Description**: Amplitude of the electric field. The saw-like potential increases with slope efield_amp in the region from efield_pos_max+efield_pos_dec-1) to (efield_pos_max), then decreases until (efield_pos_max+efield_pos_dec), in units of the crystal vector efield_dir. + > Note: The change of slope of this potential must be located in the empty region, or else unphysical forces will result. - **Default**: 0.0 - **Unit**: a.u., 1 a.u. = 51.4220632*10^10 V/m. @@ -2736,13 +2824,11 @@ These variables are relevant to electric field and dipole correction ## Gate field (compensating charge) -These variables are relevant to gate field (compensating charge) [Detailed introduction](https://github.com/deepmodeling/abacus-develop/blob/develop/docs/advanced/scf/advanced.md#compensating-charge) - ### gate_flag - **Type**: Boolean - **Description**: Controls the addition of compensating charge by a charged plate for charged cells. - - true: A charged plate is placed at the **zgate** position to add compensating charge. The direction is determined by **efield_dir**. + - true: A charged plate is placed at the zgate position to add compensating charge. The direction is determined by efield_dir. - false: No compensating charge is added. - **Default**: false @@ -2750,15 +2836,14 @@ These variables are relevant to gate field (compensating charge) [Detailed intro - **Type**: Real - **Description**: Position of the charged plate in the unit cell -- **Unit**: Unit cell size - **Default**: 0.5 -- **Constraints**: 0 <= **zgate** < 1 +- **Unit**: Unit cell size ### block - **Type**: Boolean - **Description**: Controls the addition of a potential barrier to prevent electron spillover. - - true: A potential barrier is added from **block_down** to **block_up** with a height of **block_height**. If **dip_cor_flag** is set to true, **efield_pos_dec** is used to smoothly increase and decrease the potential barrier. + - true: A potential barrier is added from block_down to block_up with a height of block_height. If dip_cor_flag is set to true, efield_pos_dec is used to smoothly increase and decrease the potential barrier. - false: No potential barrier is added. - **Default**: false @@ -2766,181 +2851,152 @@ These variables are relevant to gate field (compensating charge) [Detailed intro - **Type**: Real - **Description**: Lower beginning of the potential barrier -- **Unit**: Unit cell size - **Default**: 0.45 -- **Constraints**: 0 <= **block_down** < **block_up** < 1 +- **Unit**: Unit cell size ### block_up - **Type**: Real - **Description**: Upper beginning of the potential barrier -- **Unit**: Unit cell size - **Default**: 0.55 -- **Constraints**: 0 <= **block_down** < **block_up** < 1 +- **Unit**: Unit cell size ### block_height - **Type**: Real - **Description**: Height of the potential barrier -- **Unit**: Rydberg - **Default**: 0.1 +- **Unit**: Rydberg [back to top](#full-list-of-input-keywords) ## Exact Exchange (Common) -These variables are relevant when using hybrid functionals. Currently ABACUS supports hybrid functionals when *[basis_type](#basis_type)==lcao/lcao_in_pw*. -Support for hybrid functionals in the *pw [basis_type](#basis_type)* is under active development. - -The following parameters apply to *[basis_type](#basis_type)==lcao/lcao_in_pw/pw*. For basis specific parameters, see the sections *[Exact Exchange (LCAO/LCAO in PW)](#exact-exchange-lcaolcao-in-pw)* and *[Exact Exchange (PW)](#exact-exchange-pw)*. - -#### Hybrid Functional Parameters {#hybrid_func_params} -|[dft_functional](#dft_functional)|[exx_fock_alpha](#exx_fock_alpha)|[exx_erfc_alpha](#exx_erfc_alpha)|[exx_erfc_omega](#exx_erfc_omega)| -|:-:|:-:|:-:|:-:| -|hf|1|0|0| -|lc_pbe|1|-1|0.33| -|lc_wpbe|1|-1|0.4| -|lrc_wpbe|1|-1|0.3| -|lrc_wpbeh|1|-0.8|0.2| -|pbe0|0.25|0|0| -|hse|0.0|0.25|0.11| -|scan0|0.25|0|0| -|cam_pbeh|0.2|0.8|0.7| -|b3lyp|0.2|0|0| -|muller|1|0|0| -|power|1|0|0| -|wp22|1|-1|0.11| -|cwp22|0|1|0.11| - ### exx_fock_alpha -- **Type**: Real \[Real...\](optional) -- **Description**: Fraction of full-ranged Fock exchange 1/r ($\alpha$) in range-separated hybrid funtionals, so that $E_{X} = \alpha E_{X}^\text{HF-LR}+(\alpha+\beta) E_{X}^\text{HF-SR}+(1-\alpha)E_{X}^\text{KS-LR}+[1-(\alpha+\beta)]E_{X}^\text{KS-SR}$. -- **Default**: see [hybrid_func_params](#hybrid_func_params) +- **Type**: Real +- **Description**: Fraction of full-ranged Fock exchange $1/r$ in range-separated hybrid functionals. +- **Default**: see hybrid_func_params ### exx_erfc_alpha -- **Type**: Real \[Real...\](optional) -- **Description**: Fraction of short-ranged Fock exchange erfc(wr)/r ($\beta$) in range-separated hybrid funtionals, so that $E_{X} = \alpha E_{X}^\text{HF-LR}+(\alpha+\beta) E_{X}^\text{HF-SR}+(1-\alpha)E_{X}^\text{KS-LR}+[1-(\alpha+\beta)]E_{X}^\text{KS-SR}$. -- **Default**: see [hybrid_func_params](#hybrid_func_params) +- **Type**: Real +- **Description**: Fraction of short-ranged Fock exchange $\mathrm{erfc}(\omega r)/r$ in range-separated hybrid functionals. +- **Default**: see hybrid_func_params ### exx_erfc_omega -- **Type**: Real \[Real...\](optional) -- **Description**: Range-separation parameter in exchange, such that $1/r=\text{erfc}(\omega r)/r+\text{erf}(\omega r)/r$ -- **Default**: see [hybrid_func_params](#hybrid_func_params) +- **Type**: Real +- **Description**: Range-separation parameter $\omega$ in the short-ranged Fock term $\mathrm{erfc}(\omega r)/r$. +- **Default**: see hybrid_func_params ### exx_separate_loop - **Type**: Boolean - **Description**: There are two types of iterative approaches provided by ABACUS to evaluate Fock exchange. - - False: Start with a GGA-Loop, and then Hybrid-Loop, in which EXX Hamiltonian $H_{exx}$ is updated with electronic iterations. - - True: A two-step method is employed, i.e. in the inner iterations, density matrix is updated, while in the outer iterations, $H_{exx}$ is calculated based on density matrix that converges in the inner iteration. + - False: Start with a GGA-Loop, and then Hybrid-Loop, in which EXX Hamiltonian is updated with electronic iterations. + - True: A two-step method is employed, i.e. in the inner iterations, density matrix is updated, while in the outer iterations, is calculated based on density matrix that converges in the inner iteration. - **Default**: True ### exx_hybrid_step - **Type**: Integer -- **Availability**: *[exx_separate_loop](#exx_separate_loop)==1* +- **Availability**: *exx_separate_loop==1* - **Description**: The maximal iteration number of the outer-loop, where the Fock exchange is calculated - **Default**: 100 ### exx_mixing_beta - **Type**: Real -- **Availability**: *[exx_separate_loop](#exx_separate_loop)==1* +- **Availability**: *exx_separate_loop==1* - **Description**: Mixing parameter for densty matrix in each iteration of the outer-loop - **Default**: 1.0 -## Exact Exchange (LCAO in PW) +[back to top](#full-list-of-input-keywords) -These variables are relevant when using hybrid functionals with *[basis_type](#basis_type)==lcao/lcao_in_pw*. +## Exact Exchange (LCAO in PW) ### exx_fock_lambda -- **Type**: Real \[Real...\](optional) -- **Availability**: *[basis_type](#basis_type)==lcao_in_pw* -- **Description**: It is used to compensate for divergence points at G=0 in the evaluation of Fock exchange using *lcao_in_pw* method. +- **Type**: Real +- **Availability**: *basis_type==lcao_in_pw* +- **Description**: It is used to compensate for divergence points at G=0 in the evaluation of Fock exchange using lcao_in_pw method. - **Default**: 0.3 -## Exact Exchange (LCAO) +[back to top](#full-list-of-input-keywords) -These variables are relevant when using hybrid functionals with *[basis_type](#basis_type)==lcao/lcao_in_pw*. +## Exact Exchange (LCAO) ### exx_pca_threshold - **Type**: Real -- **Description**: To accelerate the evaluation of four-center integrals ($ik|jl$), the product of atomic orbitals are expanded in the basis of auxiliary basis functions (ABF): $\Phi_{i}\Phi_{k}\sim \sum_{a} C^{a}_{ik}P_{a}$. The size of the ABF (i.e. number of $P_{a}$) is reduced using principal component analysis. When a large PCA threshold is used, the number of ABF will be reduced, hence the calculation becomes faster. However, this comes at the cost of computational accuracy. A relatively safe choice of the value is 1e-4. +- **Description**: To accelerate the evaluation of four-center integrals (), the product of atomic orbitals are expanded in the basis of auxiliary basis functions (ABF): . The size of the ABF (i.e. number of ) is reduced using principal component analysis. When a large PCA threshold is used, the number of ABF will be reduced, hence the calculation becomes faster. However, this comes at the cost of computational accuracy. A relatively safe choice of the value is 1e-4. - **Default**: 1E-4 ### exx_c_threshold - **Type**: Real -- **Description**: See also the entry [exx_pca_threshold](#exx_pca_threshold). Smaller components (less than exx_c_threshold) of the $C^{a}_{ik}$ matrix are neglected to accelerate calculation. The larger the threshold is, the faster the calculation and the lower the accuracy. A relatively safe choice of the value is 1e-4. +- **Description**: See also the entry exx_pca_threshold. Smaller components (less than exx_c_threshold) of the matrix are neglected to accelerate calculation. The larger the threshold is, the faster the calculation and the lower the accuracy. A relatively safe choice of the value is 1e-4. - **Default**: 1E-4 +### exx_cs_inv_thr + +- **Type**: Real +- **Description**: By default, the Coulomb matrix inversion required for obtaining LRI coefficients is performed using LU decomposition. However, this approach may suffer from numerical instabilities when a large set of auxiliary basis functions (ABFs) is employed. When exx_cs_inv_thr > 0, the inversion is instead carried out via matrix diagonalization. Eigenvalues smaller than exx_cs_inv_thr are discarded to improve numerical stability. A relatively safe and commonly recommended value is 1e-5. +- **Default**: -1 + ### exx_v_threshold - **Type**: Real -- **Description**: See also the entry [exx_pca_threshold](#exx_pca_threshold). With the approximation $\Phi_{i}\Phi_{k}\sim \sum_{a} C^{a}_{ik}P_{a}$, the four-center integral in Fock exchange is expressed as $(ik|jl)=\sum_{a,b}C^{a}_{ik}V_{ab}C^{b}_{jl}$, where $V_{ab}=(P_{a}|P_{b})$ is a double-center integral. Smaller values of the V matrix can be truncated to accelerate calculation. The larger the threshold is, the faster the calculation and the lower the accuracy. A relatively safe choice of the value is 0, i.e. no truncation. +- **Description**: See also the entry exx_pca_threshold. With the approximation , the four-center integral in Fock exchange is expressed as , where is a double-center integral. Smaller values of the V matrix can be truncated to accelerate calculation. The larger the threshold is, the faster the calculation and the lower the accuracy. A relatively safe choice of the value is 0, i.e. no truncation. - **Default**: 1E-1 ### exx_dm_threshold - **Type**: Real -- **Description**: The Fock exchange can be expressed as $\sum_{k,l}(ik|jl)D_{kl}$ where D is the density matrix. Smaller values of the density matrix can be truncated to accelerate calculation. The larger the threshold is, the faster the calculation and the lower the accuracy. A relatively safe choice of the value is 1e-4. +- **Description**: The Fock exchange can be expressed as where D is the density matrix. Smaller values of the density matrix can be truncated to accelerate calculation. The larger the threshold is, the faster the calculation and the lower the accuracy. A relatively safe choice of the value is 1e-4. - **Default**: 1E-4 ### exx_c_grad_threshold - **Type**: Real -- **Description**: See also the entry [exx_pca_threshold](#exx_pca_threshold). $\nabla C^{a}_{ik}$ is used in force. Smaller components (less than exx_c_grad_threshold) of the $\nabla C^{a}_{ik}$ matrix are neglected to accelerate calculation. The larger the threshold is, the faster the calculation and the lower the accuracy. A relatively safe choice of the value is 1e-4. +- **Description**: See also the entry exx_pca_threshold. is used in force. Smaller components (less than exx_c_grad_threshold) of the matrix are neglected to accelerate calculation. The larger the threshold is, the faster the calculation and the lower the accuracy. A relatively safe choice of the value is 1e-4. - **Default**: 1E-4 ### exx_v_grad_threshold - **Type**: Real -- **Description**: See also the entry [exx_pca_threshold](#exx_pca_threshold). With the approximation $\Phi_{i}\Phi_{k}\sim C^{a}_{ik}P_{a}$, the four-center integral in Fock exchange is expressed as $(ik|jl)=\sum_{a,b}C^{a}_{ik}V_{ab}C^{b}_{jl}$, where $V_{ab}=(P_{a}|P_{b})$ is a double-center integral. $\nabla V_{ab}$ is used in force. Smaller values of the V matrix can be truncated to accelerate calculation. The larger the threshold is, the faster the calculation and the lower the accuracy. A relatively safe choice of the value is 0, i.e. no truncation. +- **Description**: See also the entry exx_pca_threshold. With the approximation , the four-center integral in Fock exchange is expressed as , where is a double-center integral. is used in force. Smaller values of the V matrix can be truncated to accelerate calculation. The larger the threshold is, the faster the calculation and the lower the accuracy. A relatively safe choice of the value is 0, i.e. no truncation. - **Default**: 1E-1 ### exx_c_grad_r_threshold - **Type**: Real -- **Description**: See also the entry [exx_pca_threshold](#exx_pca_threshold). $\nabla C^{a}_{ik} * R_{ik}$ is used in stress. Smaller components (less than exx_c_grad_r_threshold) of the $\nabla C^{a}_{ik} * R_{ik}$ matrix are neglected to accelerate calculation. The larger the threshold is, the faster the calculation and the lower the accuracy. A relatively safe choice of the value is 1e-4. +- **Description**: See also the entry exx_pca_threshold. is used in stress. Smaller components (less than exx_c_grad_r_threshold) of the matrix are neglected to accelerate calculation. The larger the threshold is, the faster the calculation and the lower the accuracy. A relatively safe choice of the value is 1e-4. - **Default**: 1E-4 ### exx_v_grad_r_threshold - **Type**: Real -- **Description**: See also the entry [exx_pca_threshold](#exx_pca_threshold). With the approximation $\Phi_{i}\Phi_{k}\sim C^{a}_{ik}P_{a}$, the four-center integral in Fock exchange is expressed as $(ik|jl)=\sum_{a,b}C^{a}_{ik}V_{ab}C^{b}_{jl}$, where $V_{ab}=(P_{a}|P_{b})$ is a double-center integral. $\nabla V_{ab} *R_{ab}$ is used in force and stress. Smaller values of the V matrix can be truncated to accelerate calculation. The larger the threshold is, the faster the calculation and the lower the accuracy. A relatively safe choice of the value is 0, i.e. no truncation. +- **Description**: See also the entry exx_pca_threshold. With the approximation , the four-center integral in Fock exchange is expressed as , where is a double-center integral. is used in force and stress. Smaller values of the V matrix can be truncated to accelerate calculation. The larger the threshold is, the faster the calculation and the lower the accuracy. A relatively safe choice of the value is 0, i.e. no truncation. - **Default**: 1E-1 -### exx_ccp_threshold - -- **Type**: Real -- **Description**: It is related to the cutoff of on-site Coulomb potentials. (Currently not used) -- **Default**: 1e-8 - ### exx_ccp_rmesh_times -- **Type**: Real -- **Description**: This parameter determines how many times larger the radial mesh required for calculating Columb potential is to that of atomic orbitals. The value should be at least 1. Reducing this value can effectively increase the speed of self-consistent calculations using hybrid functionals. -- **Default**: - - 5: if *[dft_functional](#dft_functional)==hf/pbe0/scan0/muller/power/wp22* - - 1.5: if *[dft_functional](#dft_functional)==hse/cwp22* - - 1: else +- **Type**: String +- **Description**: This parameter determines how many times larger the radial mesh required for calculating Columb potential is to that of atomic orbitals. The value should be larger than 0. Reducing this value can effectively increase the speed of self-consistent calculations using hybrid functionals. ### exx_opt_orb_lmax - **Type**: Integer -- **Availability**: *[calculation](#calculation)==gen_opt_abfs* +- **Availability**: *calculation==gen_opt_abfs* - **Description**: The maximum l of the spherical Bessel functions, when the radial part of opt-ABFs are generated as linear combinations of spherical Bessel functions. A reasonable choice is 2. - **Default**: 0 ### exx_opt_orb_ecut - **Type**: Real -- **Availability**: *[calculation](#calculation)==gen_opt_abfs* +- **Availability**: *calculation==gen_opt_abfs* - **Description**: The cut-off of plane wave expansion, when the plane wave basis is used to optimize the radial ABFs. A reasonable choice is 60. - **Default**: 0 - **Unit**: Ry @@ -2948,42 +3004,35 @@ These variables are relevant when using hybrid functionals with *[basis_type](#b ### exx_opt_orb_tolerence - **Type**: Real -- **Availability**: *[calculation](#calculation)==gen_opt_abfs* +- **Availability**: *calculation==gen_opt_abfs* - **Description**: The threshold when solving for the zeros of spherical Bessel functions. A reasonable choice is 1e-12. -- **Default**: 0 +- **Default**: 1E-12 ### exx_real_number -- **Type**: Boolean -- **Description**: - - True: Enforce LibRI to use `double` data type. - - False: Enforce LibRI to use `complex` data type. - Setting it to True can effectively improve the speed of self-consistent calculations with hybrid functionals. -- **Default**: depends on the [gamma_only](#gamma_only) option - - True: if gamma_only - - False: else +- **Type**: String +- **Description**: - True: Enforce LibRI to use double data type. + - False: Enforce LibRI to use complex data type. Setting it to True can effectively improve the speed of self-consistent calculations with hybrid functionals. +- **Default**: depends on the gamma_only option ### exx_singularity_correction - **Type**: String -- **Description**: - - spencer: see Phys. Rev. B 77, 193110 (2008). - - revised_spencer: see Phys. Rev. Mater. 5, 013807 (2021). - Set the scheme of Coulomb singularity correction. +- **Description**: - spencer: see Phys. Rev. B 77, 193110 (2008). + - revised_spencer: see Phys. Rev. Mater. 5, 013807 (2021). Set the scheme of Coulomb singularity correction. - **Default**: default ### rpa_ccp_rmesh_times - **Type**: Real -- **Description**: How many times larger the radial mesh required is to that of atomic orbitals in the postprocess calculation of the **bare** Coulomb matrix for RPA, GW, etc. +- **Description**: How many times larger the radial mesh required is to that of atomic orbitals in the postprocess calculation of the bare Coulomb matrix for RPA, GW, etc. - **Default**: 10 ### exx_symmetry_realspace - **Type**: Boolean -- **Availability**: *[symmetry](#symmetry)==1* and exx calculation (*[dft_fuctional](#dft_functional)==hse/hf/pbe0/scan0* or *[rpa](#rpa)==True*) -- **Description**: - - False: only rotate k-space density matrix D(k) from irreducible k-points to accelerate diagonalization +- **Availability**: *symmetry==1 and exx calculation (dft_fuctional==hse/hf/pbe0/scan0 or rpa==True)* +- **Description**: - False: only rotate k-space density matrix D(k) from irreducible k-points to accelerate diagonalization - True: rotate both D(k) and Hexx(R) to accelerate both diagonalization and EXX calculation - **Default**: True @@ -2997,37 +3046,59 @@ These variables are relevant when using hybrid functionals with *[basis_type](#b ## Exact Exchange (PW) -These variables are relevant when using hybrid functionals with *[basis_type](#basis_type)==pw*. Note that hybrid functionals in *[basis_type](#basis_type)==pw* is under active development, and currently limited to *[nspin](#nspin) == 1 or 2* and *[symmetry](#symmetry)==-1 - ### exxace + - **Type**: Boolean -- **Availability**: *[exx_separate_loop](#exx_separate_loop)==True*. +- **Availability**: *exx_separate_loop==True.* - **Description**: Whether to use the ACE method (https://doi.org/10.1021/acs.jctc.6b00092) to accelerate the calculation the Fock exchange matrix. Should be set to true most of the time. - True: Use the ACE method to calculate the Fock exchange operator. - False: Use the traditional method to calculate the Fock exchange operator. - **Default**: True ### exx_gamma_extrapolation + - **Type**: Boolean -- **Description**: Whether to use the gamma point extrapolation method to calculate the Fock exchange operator. See [https://doi.org/10.1103/PhysRevB.79.205114](https://doi.org/10.1103/PhysRevB.79.205114) for details. Should be set to true most of the time. +- **Description**: Whether to use the gamma point extrapolation method to calculate the Fock exchange operator. See https://doi.org/10.1103/PhysRevB.79.205114 for details. Should be set to true most of the time. - **Default**: True -## Molecular dynamics +### ecutexx + +- **Type**: Real +- **Description**: The energy cutoff for EXX (Fock) exchange operator in plane wave basis calculations. Reducing ecutexx below ecutrho may significantly accelerate EXX computations. This speed improvement comes with a reduced numerical accuracy in the exchange energy calculation. +- **Default**: same as ecutrho +- **Unit**: Ry -These variables are used to control molecular dynamics calculations. For more information, please refer to [md.md](../md.md#molecular-dynamics) in detail. +### exx_thr_type + +- **Type**: String +- **Description**: The type of threshold used to judge whether the outer loop has converged in the separate loop EXX calculation. + - energy: use the change of exact exchange energy to judge convergence. + - density: if the change of charge density difference between two successive outer loop iterations is seen as converged according to scf_thr, then the outer loop is seen as converged. +- **Default**: density + +### exx_ene_thr + +- **Type**: Real +- **Availability**: *exx_thr_type==energy* +- **Description**: The threshold for the change of exact exchange energy to judge convergence of the outer loop in the separate loop EXX calculation. +- **Default**: 1e-5 +- **Unit**: Ry + +[back to top](#full-list-of-input-keywords) + +## Molecular dynamics ### md_type - **Type**: String -- **Description**: Control the algorithm to integrate the equation of motion for molecular dynamics (MD), see [md.md](../md.md#molecular-dynamics) in detail. +- **Description**: Control the algorithm to integrate the equation of motion for molecular dynamics (MD), see md.md in detail. - fire: a MD-based relaxation algorithm, named fast inertial relaxation engine. - nve: NVE ensemble with velocity Verlet algorithm. - - nvt: NVT ensemble, see [md_thermostat](#md_thermostat) in detail. - - npt: Nose-Hoover style NPT ensemble, see [md_pmode](#md_pmode) in detail. - - langevin: NVT ensemble with Langevin thermostat, see [md_damp](#md_damp) in detail. - - msst: MSST method, see [msst_direction](#msst_direction), [msst_vel](#msst_vel), [msst_qmass](#msst_qmass), [msst_vis](#msst_vis), [msst_tscale](#msst_tscale) in detail. - + - nvt: NVT ensemble, see md_thermostat in detail. + - npt: Nose-Hoover style NPT ensemble, see md_pmode in detail. + - langevin: NVT ensemble with Langevin thermostat, see md_damp in detail. + - msst: MSST method, see msst_direction, msst_vel, msst_qmass, msst_vis, msst_tscale in detail. - **Default**: nvt ### md_nstep @@ -3048,71 +3119,91 @@ These variables are used to control molecular dynamics calculations. For more in - **Type**: String - **Description**: Specify the temperature control method used in NVT ensemble. - - nhc: Nose-Hoover chain, see [md_tfreq](#md_tfreq) and [md_tchain](#md_tchain) in detail. - - anderson: Anderson thermostat, see [md_nraise](#md_nraise) in detail. - - berendsen: Berendsen thermostat, see [md_nraise](#md_nraise) in detail. - - rescaling: velocity Rescaling method 1, see [md_tolerance](#md_tolerance) in detail. - - rescale_v: velocity Rescaling method 2, see [md_nraise](#md_nraise) in detail. - + - nhc: Nose-Hoover chain, see md_tfreq and md_tchain in detail. + - anderson: Anderson thermostat, see md_nraise in detail. + - berendsen: Berendsen thermostat, see md_nraise in detail. + - rescaling: velocity Rescaling method 1, see md_tolerance in detail. + - rescale_v: velocity Rescaling method 2, see md_nraise in detail. - **Default**: nhc -### md_tfirst, md_tlast +### md_tfirst + +- **Type**: Real +- **Description**: The temperature used in molecular dynamics calculations. + + If md_tfirst is unset or less than zero, init_vel is autoset to be true. If init_vel is true, the initial temperature will be determined by the velocities read from STRU. In this case, if velocities are unspecified in STRU, the initial temperature is set to zero. + + If md_tfirst is set to a positive value and init_vel is true simultaneously, please make sure they are consistent, otherwise abacus will exit immediately. + + Note that md_tlast is only used in NVT/NPT simulations. If md_tlast is unset or less than zero, md_tlast is set to md_tfirst. If md_tlast is set to be different from md_tfirst, ABACUS will automatically change the temperature from md_tfirst to md_tlast. +- **Default**: No default +- **Unit**: K + +### md_tlast - **Type**: Real - **Description**: The temperature used in molecular dynamics calculations. - If `md_tfirst` is unset or less than zero, [init_vel](#init_vel) is autoset to be `true`. If [init_vel](#init_vel) is `true`, the initial temperature will be determined by the velocities read from `STRU`. In this case, if velocities are unspecified in `STRU`, the initial temperature is set to zero. + If md_tfirst is unset or less than zero, init_vel is autoset to be true. If init_vel is true, the initial temperature will be determined by the velocities read from STRU. In this case, if velocities are unspecified in STRU, the initial temperature is set to zero. - If `md_tfirst` is set to a positive value and [init_vel](#init_vel) is `true` simultaneously, please make sure they are consistent, otherwise abacus will exit immediately. + If md_tfirst is set to a positive value and init_vel is true simultaneously, please make sure they are consistent, otherwise abacus will exit immediately. - Note that `md_tlast` is only used in NVT/NPT simulations. If `md_tlast` is unset or less than zero, `md_tlast` is set to `md_tfirst`. If `md_tlast` is set to be different from `md_tfirst`, ABACUS will automatically change the temperature from `md_tfirst` to `md_tlast`. + Note that md_tlast is only used in NVT/NPT simulations. If md_tlast is unset or less than zero, md_tlast is set to md_tfirst. If md_tlast is set to be different from md_tfirst, ABACUS will automatically change the temperature from md_tfirst to md_tlast. - **Default**: No default - **Unit**: K +### md_prec_level + +- **Type**: Integer +- **Description**: Determine the precision level of variable-cell molecular dynamics calculations. + - 0: FFT grids do not change, only G vectors and K vectors are changed due to the change of lattice vector. This level is suitable for cases where the variation of the volume and shape is not large, and the efficiency is relatively higher. + - 2: FFT grids change per step. This level is suitable for cases where the variation of the volume and shape is large, such as the MSST method. However, accuracy comes at the cost of efficiency. +- **Default**: 0 + ### md_restart - **Type**: Boolean - **Description**: Control whether to restart molecular dynamics calculations and time-dependent density functional theory calculations. - - True: ABACUS will read in `${read_file_dir}/Restart_md.dat` to determine the current step `${md_step}`, then read in the corresponding `STRU_MD_${md_step}` in the folder `OUT.$suffix/STRU/` automatically. For tddft, ABACUS will also read in `WFC_NAO_K${kpoint}` of the last step (You need to set out_wfc_lcao=1 and out_app_flag=0 to obtain this file). + - True: ABACUS will read in {md_step}, then read in the corresponding STRU_MD_suffix/STRU/ automatically. For tddft, ABACUS will also read in WFC_NAO_K${kpoint} of the last step (You need to set out_wfc_lcao=1 and out_app_flag=0 to obtain this file). - False: ABACUS will start molecular dynamics calculations normally from the first step. - **Default**: False ### md_restartfreq - **Type**: Integer -- **Description**: The output frequency of `OUT.${suffix}/Restart_md.dat` and structural files in the directory `OUT.${suffix}/STRIU/`, which are used to restart molecular dynamics calculations, see [md_restart](#md_restart) in detail. +- **Description**: The output frequency of OUT.{suffix}/STRIU/, which are used to restart molecular dynamics calculations, see md_restart in detail. - **Default**: 5 ### md_dumpfreq - **Type**: Integer -- **Description**: The output frequency of `OUT.${suffix}/MD_dump` in molecular dynamics calculations, which including the information of lattices and atoms. +- **Description**: The output frequency of OUT.${suffix}/MD_dump in molecular dynamics calculations, which including the information of lattices and atoms. - **Default**: 1 ### dump_force - **Type**: Boolean -- **Description**: Whether to output atomic forces into the file `OUT.${suffix}/MD_dump`. +- **Description**: Whether to output atomic forces into the file OUT.${suffix}/MD_dump. - **Default**: True ### dump_vel - **Type**: Boolean -- **Description**: Whether to output atomic velocities into the file `OUT.${suffix}/MD_dump`. +- **Description**: Whether to output atomic velocities into the file OUT.${suffix}/MD_dump. - **Default**: True ### dump_virial - **Type**: Boolean -- **Description**: Whether to output lattice virials into the file `OUT.${suffix}/MD_dump`. +- **Description**: Whether to output lattice virials into the file OUT.${suffix}/MD_dump. - **Default**: True ### md_seed - **Type**: Integer - **Description**: The random seed to initialize random numbers used in molecular dynamics calculations. - - \< 0: No srand() function is called. - - \>= 0: The function srand(md_seed) is called. + - < 0: No srand() function is called. + - >= 0: The function srand(md_seed) is called. - **Default**: -1 ### md_tfreq @@ -3120,10 +3211,8 @@ These variables are used to control molecular dynamics calculations. For more in - **Type**: Real - **Description**: Control the frequency of temperature oscillations during the simulation. If it is too large, the temperature will fluctuate violently; if it is too small, the temperature will take a very long time to equilibrate with the atomic system. - Note: It is a system-dependent empirical parameter, ranging from 1/(40\*md_dt) to 1/(100\*md_dt). An improper choice might lead to the failure of jobs. - + Note: It is a system-dependent empirical parameter, ranging from 1/(40*md_dt) to 1/(100*md_dt). An improper choice might lead to the failure of jobs. - **Default**: 1/40/md_dt -- **Unit**: $\mathrm{fs^{-1}}$ ### md_tchain @@ -3134,26 +3223,15 @@ These variables are used to control molecular dynamics calculations. For more in ### md_pmode - **Type**: String -- **Description**: Specify the cell fluctuation mode in NPT ensemble based on the Nose-Hoover style non-Hamiltonian equations of motion. - - iso: The three diagonal elements of the lattice are fluctuated isotropically. - - aniso: The three diagonal elements of the lattice are fluctuated anisotropically. - - tri: The lattice must be a lower-triangular matrix, and all six freedoms are fluctuated. -- **Default**: iso -- **Relavent**: [md_tfreq](#md_tfreq), [md_tchain](#md_tchain), [md_pcouple](#md_pcouple), [md_pfreq](#md_pfreq), and [md_pchain](#md_pchain). - - +- **Default**: iso ### ref_cell_factor - **Type**: Real -- **Description**: Construct a reference cell bigger than the initial cell. The reference cell has to be large enough so that the lattice vectors of the fluctuating cell do not exceed the reference lattice vectors during MD. Typically, 1.02 ~ 1.10 is sufficient. However, the cell fluctuations depend on the specific system and thermodynamic conditions. So users must test for a proper choice. This parameters should be used in conjunction with [erf_ecut](#erf_ecut), [erf_height](#erf_height), and [erf_sigma](#erf_sigma). +- **Description**: Construct a reference cell bigger than the initial cell. The reference cell has to be large enough so that the lattice vectors of the fluctuating cell do not exceed the reference lattice vectors during MD. Typically, 1.02 ~ 1.10 is sufficient. However, the cell fluctuations depend on the specific system and thermodynamic conditions. So users must test for a proper choice. This parameters should be used in conjunction with erf_ecut, erf_height, and erf_sigma. - **Default**: 1.0 ### md_pcouple @@ -3167,10 +3245,17 @@ These variables are used to control molecular dynamics calculations. For more in - yz: Lattice vectors y and z scale proportionally. - **Default**: none -### md_pfirst, md_plast +### md_pfirst + +- **Type**: Real +- **Description**: The target pressure used in NPT ensemble simulations, the default value of md_plast is md_pfirst. If md_plast is set to be different from md_pfirst, ABACUS will automatically change the target pressure from md_pfirst to md_plast. +- **Default**: -1.0 +- **Unit**: kbar + +### md_plast - **Type**: Real -- **Description**: The target pressure used in NPT ensemble simulations, the default value of `md_plast` is `md_pfirst`. If `md_plast` is set to be different from `md_pfirst`, ABACUS will automatically change the target pressure from `md_pfirst` to `md_plast`. +- **Description**: The target pressure used in NPT ensemble simulations, the default value of md_plast is md_pfirst. If md_plast is set to be different from md_pfirst, ABACUS will automatically change the target pressure from md_pfirst to md_plast. - **Default**: -1.0 - **Unit**: kbar @@ -3181,7 +3266,6 @@ These variables are used to control molecular dynamics calculations. For more in Note: It is a system-dependent empirical parameter. An improper choice might lead to the failure of jobs. - **Default**: 1/400/md_dt -- **Unit**: $\mathrm{kbar^{-1}}$ ### md_pchain @@ -3192,21 +3276,7 @@ These variables are used to control molecular dynamics calculations. For more in ### lj_rule - **Type**: Integer -- **Description**: The Lennard-Jones potential between two atoms equals: - $$V_{LJ}(r_{ij})=4\epsilon_{ij}\left(\left(\frac{\sigma_{ij}}{r_{ij}}\right)^{12}-\left(\frac{\sigma_{ij}}{r_{ij}}\right)^{6}\right)=\frac{C_{ij}^{(12)}}{{r_{ij}}^{12}}-\frac{C_{ij}^{(6)}}{{r_{ij}}^{6}}.$$ - - The parameters [lj_epsilon](#lj_epsilon) and [lj_sigma](#lj_sigma) should be multiple-component vectors. For example, there are two choices in the calculations of 3 atom species: - - Supply six-component vectors that describe the interactions between all possible atom pairs. The six-component vectors represent lower triangular symmetric matrixs, and the correspondence between the vector component $\sigma _k$ and the matrix element $\sigma (i,j)$ is - $$k= i(i+1)/2 +j$$ - - Supply three-component vectors that describe the interactions between atoms of the same species. In this case, two types of combination rules can be used to construct non-diagonal elements in the parameter matrix. - - - 1: geometric average: - $$\begin{array}{rcl}C_{ij}^{(6)}&=&\left(C_{ii}^{(6)}C_{jj}^{(6)}\right)^{1/2}\\C_{ij}^{(12)}&=&\left(C_{ii}^{(12)}C_{jj}^{(12)}\right)^{1/2}\end{array}$$ - - - 2: arithmetic average: - $$\begin{array}{rcl}\sigma_{ij}&=&\frac{1}{2}\left(\sigma_{ii}+\sigma_{jj}\right)\\ \epsilon_{ij}&=&\left(\epsilon_{ii}\epsilon_{jj}\right)^{1/2}\end{array}$$ +- **Description**: The Lennard-Jones potential between two atoms equals: $\sigma_k\sigma(i,j)$ - **Default**: 2 ### lj_eshift @@ -3218,48 +3288,48 @@ These variables are used to control molecular dynamics calculations. For more in ### lj_rcut - **Type**: Real -- **Description**: Cut-off radius for Leonard Jones potential, beyond which the interaction will be neglected. It can be a single value, which means that all pairs of atoms types share the same cut-off radius. Otherwise, it should be a multiple-component vector, containing $N(N+1)/2$ values, see details in [lj_rule](#lj_rule). +- **Description**: Cut-off radius for Leonard Jones potential, beyond which the interaction will be neglected. It can be a single value, which means that all pairs of atoms types share the same cut-off radius. Otherwise, it should be a multiple-component vector, containing values, see details in lj_rule. - **Default**: No default - **Unit**: Angstrom ### lj_epsilon - **Type**: Real -- **Description**: The vector representing the $\epsilon$ matrix for Leonard Jones potential. See details in [lj_rule](#lj_rule). +- **Description**: The vector representing the matrix for Leonard Jones potential. See details in lj_rule. - **Default**: No default - **Unit**: eV ### lj_sigma - **Type**: Real -- **Description**: The vector representing the $\sigma$ matrix for Leonard Jones potential. See details in [lj_rule](#lj_rule). +- **Description**: The vector representing the matrix for Leonard Jones potential. See details in lj_rule. - **Default**: No default - **Unit**: Angstrom ### pot_file - **Type**: String -- **Description**: The filename of DP potential files, see [md.md](../md.md#dpmd) in detail. +- **Description**: The filename of DP/NEP potential files, see md.md in detail. - **Default**: graph.pb ### dp_rescaling - **Type**: Real -- **Availability**: [esolver_type](#esolver_type) = `dp`. +- **Availability**: *esolver_type = dp.* - **Description**: Rescaling factor to use a temperature-dependent DP. Energy, stress and force calculated by DP will be multiplied by this factor. - **Default**: 1.0 ### dp_fparam - **Type**: Real -- **Availability**: [esolver_type](#esolver_type) = `dp`. +- **Availability**: *esolver_type = dp.* - **Description**: The frame parameter for dp potential. The array size is dim_fparam, then all frames are assumed to be provided with the same fparam. - **Default**: {} ### dp_aparam - **Type**: Real -- **Availability**: [esolver_type](#esolver_type) = `dp`. +- **Availability**: *esolver_type = dp.* - **Description**: The atomic parameter for dp potential. The array size can be (1) natoms x dim_aparam, then all frames are assumed to be provided with the same aparam; (2) dim_aparam, then all frames and atoms are assumed to be provided with the same aparam. - **Default**: {} @@ -3284,7 +3354,7 @@ These variables are used to control molecular dynamics calculations. For more in - **Type**: Real - **Description**: Artificial viscosity in the MSST method. - **Default**: 0.0 -- **Unit**: g/(mol\*Angstrom\*fs) +- **Unit**: g/(mol*Angstrom*fs) ### msst_tscale @@ -3297,7 +3367,6 @@ These variables are used to control molecular dynamics calculations. For more in - **Type**: Real - **Description**: Inertia of the extended system variable. You should set a number larger than 0. - **Default**: No default -- **Unit**: $\mathrm{g^{2}/(mol^{2}*Angstrom^{4})}$ ### md_damp @@ -3309,51 +3378,57 @@ These variables are used to control molecular dynamics calculations. For more in ### md_tolerance - **Type**: Real -- **Description**: The temperature tolerance for velocity rescaling. Velocities are rescaled if the current and target temperature differ more than `md_tolerance`. +- **Description**: The temperature tolerance for velocity rescaling. Velocities are rescaled if the current and target temperature differ more than md_tolerance. - **Default**: 100.0 - **Unit**: K ### md_nraise - **Type**: Integer -- **Description**: - - Anderson: The "collision frequency" parameter is given as 1/`md_nraise`. - - Berendsen: The "rise time" parameter is given in units of the time step: tau = `md_nraise`*`md_dt`, so `md_dt`/tau = 1/`md_nraise`. - - Rescale_v: Every `md_nraise` steps the current temperature is rescaled to the target temperature. +- **Description**: - Anderson: The "collision frequency" parameter is given as 1/md_nraise. + - Berendsen: The "rise time" parameter is given in units of the time step: tau = md_nraise*md_dt, so md_dt/tau = 1/md_nraise. + - Rescale_v: Every md_nraise steps the current temperature is rescaled to the target temperature. - **Default**: 1 ### cal_syns - **Type**: Boolean -- **Description**: Whether the asynchronous overlap matrix is calculated for Hefei-NAMD. +- **Description**: Whether to calculate and output asynchronous overlap matrix for Hefei-NAMD interface. When enabled, calculates <phi(t-1)|phi(t)> by computing overlap between basis functions at atomic positions from previous time step and current time step. The overlap is calculated by shifting atom positions backward by velocity x md_dt. Output file: OUT.*/syns_nao.csr in CSR format. + + > Note: Only works with LCAO basis and molecular dynamics calculations. Requires atomic velocities. Output starts from the second MD step (istep > 0). - **Default**: False ### dmax - **Type**: Real -- **Description**: The maximum displacement of all atoms in one step. This parameter is useful when [cal_syns](#cal_syns) = True. +- **Description**: The maximum displacement of all atoms in one step. This parameter is useful when cal_syns = True. - **Default**: 0.01 - **Unit**: bohr [back to top](#full-list-of-input-keywords) -## DFT+*U* correction - -These variables are used to control DFT+U correlated parameters +## DFT+U correction ### dft_plus_u - **Type**: Integer - **Description**: Determines whether to calculate the plus U correction, which is especially important for correlated electrons. - - 1: Calculate plus U correction with radius-adjustable localized projections (with parameter `onsite_radius`). + - 1: Calculate plus U correction with radius-adjustable localized projections (with parameter onsite_radius). - 2: Calculate plus U correction using first zeta of NAOs as projections (this is old method for testing). - 0: Do not calculate plus U correction. - **Default**: 0 +### dft_plus_dmft + +- **Type**: Boolean +- **Availability**: *basis_type==lcao* +- **Description**: Whether to enable DFT+DMFT calculation. True: DFT+DMFT; False: standard DFT calculation. +- **Default**: False + ### orbital_corr -- **Type**: Integer -- **Description**: Specifies which orbits need plus U correction for each atom type ($l_1,l_2,l_3,\ldots$ for atom type 1, 2, 3, respectively). +- **Type**: Vector of Integer (n values where n is the number of atomic types) +- **Description**: Specifies which orbits need plus U correction for each atom type ( for atom type 1, 2, 3, respectively). - -1: The plus U correction will not be calculated for this atom. - 1: For p-electron orbits, the plus U correction is needed. - 2: For d-electron orbits, the plus U correction is needed. @@ -3362,248 +3437,277 @@ These variables are used to control DFT+U correlated parameters ### hubbard_u -- **Type**: Real +- **Type**: Vector of Real (n values where n is the number of atomic types) - **Description**: Specifies the Hubbard Coulomb interaction parameter U (eV) in plus U correction, which should be specified for each atom unless the Yukawa potential is used. -> Note: Since only the simplified scheme by Duradev is implemented, the 'U' here is actually U-effective, which is given by Hubbard U minus Hund J. - + > Note: Since only the simplified scheme by Duradev is implemented, the 'U' here is actually U-effective, which is given by Hubbard U minus Hund J. - **Default**: 0.0 ### yukawa_potential - **Type**: Boolean - **Description**: Determines whether to use the local screen Coulomb potential method to calculate the values of U and J. - - True: `hubbard_u` does not need to be specified. - - False: `hubbard_u` does need to be specified. + - True: hubbard_u does not need to be specified. + - False: hubbard_u does need to be specified. - **Default**: False ### yukawa_lambda - **Type**: Real -- **Availability**: DFT+U with `yukawa_potential` = True. +- **Availability**: *DFT+U with yukawa_potential = True.* - **Description**: The screen length of Yukawa potential. If left to default, the screen length will be calculated as an average of the entire system. It's better to stick to the default setting unless there is a very good reason. - **Default**: Calculated on the fly. ### uramping - **Type**: Real -- **Unit**: eV -- **Availability**: DFT+U calculations with `mixing_restart > 0`. -- **Description**: Once `uramping` > 0.15 eV. DFT+U calculations will start SCF with U = 0 eV, namely normal LDA/PBE calculations. Once SCF restarts when `drho Note : The easiest way to create `initial_onsite.dm` is to run a DFT+U calculation, look for a file named `onsite.dm` in the OUT.prefix directory, and make replacements there. The format of the file is rather straight-forward. + - 1: The first SCF step will use an initial density matrix read from a file named initial_onsite.dm, but for later steps, the onsite density matrix will be updated. + - 2: The same onsite density matrix from initial_onsite.dm will be used throughout the entire calculation. + > Note: The easiest way to create initial_onsite.dm is to run a DFT+U calculation, look for a file named onsite.dm in the OUT.prefix directory, and make replacements there. The format of the file is rather straight-forward. - **Default**: 0 ### onsite_radius - **Type**: Real -- **Availability**: `dft_plus_u` is set to 1 -- **Description**: +- **Availability**: *dft_plus_u is set to 1* +- **Description**: - The onsite_radius parameter facilitates modulation of the single-zeta portion of numerical atomic orbitals used for DFT+U projections. + - The modulation algorithm applies a smooth truncation to the orbital tail followed by normalization. A representative profile is $f(r)=\frac{1}{2}\left[1+\operatorname{erf}\!\left(\frac{r_c-r}{\sigma}\right)\right]$, where $r_c$ is the cutoff radius and $\sigma=\gamma r_c$ controls smoothness. +- **Default**: 3.0 +- **Unit**: Bohr - - The `Onsite-radius` parameter facilitates modulation of the single-zeta portion of numerical atomic orbitals for projections for DFT+U. - - The modulation algorithm includes a smooth truncation applied directly to the tail of the original orbital, followed by normalization. Consider the function: - $$ - g(r;\sigma)=\begin{cases} - 1-\exp\left(-\frac{(r-r_c)^2}{2\sigma^2}\right), & r < r_c\\ - 0, & r \geq r_c - \end{cases} - $$ - - where $\sigma$ is a parameter that controls the smoothing interval. A normalized function truncated smoothly at $r_c$ can be represented as: +[back to top](#full-list-of-input-keywords) - $$ - \alpha(r) = \frac{\chi(r)g(r;\sigma)}{\langle\chi(r)g(r;\sigma), \chi(r)g(r;\sigma)\rangle} - $$ +## Spin-Constrained DFT - - To find an appropriate $\sigma$, the optimization process is as follows: +### sc_mag_switch - - Maximizing the overlap integral under a normalization constraint is equivalent to minimizing an error function: +- **Type**: Boolean +- **Description**: Switch to control spin-constrained DFT calculation +- **Default**: False - $$ - \min \langle \chi(r)-\alpha(r), \chi(r)-\alpha(r)\rangle \quad \text{subject to} \quad \langle \alpha(r),\alpha(r)\rangle=1 - $$ +### decay_grad_switch - - Similar to the process of generating numerical atomic orbitals, this optimization choice often induces additional oscillations in the outcome. To suppress these oscillations, we may include a derivative term in the objective function ($f'(r)\equiv \mathrm{d}f(r)/\mathrm{d}r$): +- **Type**: Boolean +- **Description**: Switch to control gradient break condition in spin-constrained DFT +- **Default**: False - $$ - \min \left[\gamma\langle \chi(r)-\alpha(r), \chi(r)-\alpha(r)\rangle + \langle \chi'(r)-\alpha'(r), \chi'(r)-\alpha'(r)\rangle\right] \quad \text{subject to} \quad \langle \alpha(r),\alpha(r)\rangle=1 - $$ +### sc_thr - - where $\gamma$ is a parameter that adjusts the relative weight of the error function to the derivative error function. -- **Unit**: Bohr +- **Type**: Real +- **Availability**: *sc_mag_switch is true* +- **Description**: Convergence criterion of spin-constrained iteration (RMS) in uB +- **Default**: 1.0e-6 +- **Unit**: uB + +### nsc + +- **Type**: Integer +- **Availability**: *sc_mag_switch is true* +- **Description**: Maximal number of spin-constrained iteration +- **Default**: 100 + +### nsc_min + +- **Type**: Integer +- **Availability**: *sc_mag_switch is true* +- **Description**: Minimum number of spin-constrained iteration +- **Default**: 2 + +### sc_scf_nmin + +- **Type**: Integer +- **Availability**: *sc_mag_switch is true* +- **Description**: Minimum number of outer scf loop before initializing lambda loop +- **Default**: 2 + +### alpha_trial + +- **Type**: Real +- **Availability**: *sc_mag_switch is true* +- **Description**: Initial trial step size for lambda in eV/uB^2 +- **Default**: 0.01 +- **Unit**: eV/uB^2 + +### sccut + +- **Type**: Real +- **Availability**: *sc_mag_switch is true* +- **Description**: Maximal step size for lambda in eV/uB - **Default**: 3.0 +- **Unit**: eV/uB + +### sc_drop_thr + +- **Type**: Real +- **Availability**: *sc_mag_switch is true* +- **Description**: Convergence criterion ratio of lambda iteration in Spin-constrained DFT +- **Default**: 1.0e-2 + +### sc_scf_thr + +- **Type**: Real +- **Availability**: *sc_mag_switch is true* +- **Description**: Density error threshold for inner loop of spin-constrained SCF +- **Default**: 1.0e-4 [back to top](#full-list-of-input-keywords) ## vdW correction -These variables are used to control vdW-corrected related parameters. - ### vdw_method - **Type**: String - **Description**: Specifies the method used for Van der Waals (VdW) correction. Available options are: - - `d2`: [Grimme's D2](https://onlinelibrary.wiley.com/doi/abs/10.1002/jcc.20495) dispersion correction method - - `d3_0`: [Grimme's DFT-D3(0)](https://aip.scitation.org/doi/10.1063/1.3382344) dispersion correction method (zero-damping) - - `d3_bj`: [Grimme's DFTD3(BJ)](https://onlinelibrary.wiley.com/doi/abs/10.1002/jcc.21759) dispersion correction method (BJ-damping) - - `none`: no vdW correction + - d2: Grimme's D2 dispersion correction method + - d3_0: Grimme's DFT-D3(0) dispersion correction method (zero-damping) + - d3_bj: Grimme's DFTD3(BJ) dispersion correction method (BJ-damping) + - none: no vdW correction + + > Note: ABACUS supports automatic setting of DFT-D3 parameters for common functionals. To benefit from this feature, please specify the parameter dft_functional explicitly, otherwise the autoset procedure will crash. If not satisfied with the built-in parameters, any manual setting on vdw_s6, vdw_s8, vdw_a1 and vdw_a2 will overwrite the automatic values. - **Default**: none -- **Note**: ABACUS supports automatic setting on DFT-D3 parameters for common functionals after version 3.8.3 (and several develop versions earlier). To benefit from this feature, please specify the parameter `dft_functional` explicitly (for more details on this parameter, please see [dft_functional](#dft_functional)), otherwise the autoset procedure will crash with error message like `cannot find DFT-D3 parameter for XC(***)`. If not satisfied with those in-built parameters, any manually setting on `vdw_s6`, `vdw_s8`, `vdw_a1` and `vdw_a2` will overwrite. -- **Special**: There are special cases for functional family wB97 (Omega-B97): if want to use the functional wB97X-D3BJ, one needs to specify the `dft_functional` as `HYB_GGA_WB97X_V` and `vdw_method` as `d3_bj`. If want to use the functional wB97X-D3, specify `dft_functional` as `HYB_GGA_WB97X_D3` and `vdw_method` as `d3_0`. ### vdw_s6 -- **Type**: Real -- **Availability**: `vdw_method` is set to `d2`, `d3_0`, or `d3_bj` -- **Description**: This scale factor is used to optimize the interaction energy deviations in van der Waals (vdW) corrected calculations. The recommended values of this parameter are dependent on the chosen vdW correction method and the DFT functional being used. For DFT-D2, the recommended values are 0.75 (PBE), 1.2 (BLYP), 1.05 (B-P86), 1.0 (TPSS), and 1.05 (B3LYP). If not set, will use values of PBE functional. For DFT-D3, recommended values with different DFT functionals can be found on the [here](https://github.com/dftd3/simple-dftd3/blob/main/assets/parameters.toml). If not set, will search in ABACUS built-in dataset based on the `dft_functional` keywords. User set value will overwrite the searched value. -- **Default**: - - 0.75: if `vdw_method` is set to `d2` +- **Type**: String +- **Availability**: *vdw_method is set to d2, d3_0, or d3_bj* +- **Description**: This scale factor is used to optimize the interaction energy deviations in van der Waals (vdW) corrected calculations. The recommended values of this parameter are dependent on the chosen vdW correction method and the DFT functional being used. For DFT-D2, the recommended values are 0.75 (PBE), 1.2 (BLYP), 1.05 (B-P86), 1.0 (TPSS), and 1.05 (B3LYP). If not set, will use values of PBE functional. For DFT-D3, recommended values with different DFT functionals can be found on the here. If not set, will search in ABACUS built-in dataset based on the dft_functional keywords. User set value will overwrite the searched value. ### vdw_s8 -- **Type**: Real -- **Availability**: `vdw_method` is set to `d3_0` or `d3_bj` -- **Description**: This scale factor is relevant for D3(0) and D3(BJ) van der Waals (vdW) correction methods. The recommended values of this parameter with different DFT functionals can be found on the [webpage](https://github.com/dftd3/simple-dftd3/blob/main/assets/parameters.toml). If not set, will search in ABACUS built-in dataset based on the `dft_functional` keywords. User set value will overwrite the searched value. +- **Type**: String +- **Availability**: *vdw_method is set to d3_0 or d3_bj* +- **Description**: This scale factor is relevant for D3(0) and D3(BJ) van der Waals (vdW) correction methods. The recommended values of this parameter with different DFT functionals can be found on the webpage. If not set, will search in ABACUS built-in dataset based on the dft_functional keywords. User set value will overwrite the searched value. ### vdw_a1 -- **Type**: Real -- **Availability**: `vdw_method` is set to `d3_0` or `d3_bj` -- **Description**: This damping function parameter is relevant for D3(0) and D3(BJ) van der Waals (vdW) correction methods. The recommended values of this parameter with different DFT functionals can be found on the [webpage](https://github.com/dftd3/simple-dftd3/blob/main/assets/parameters.toml). If not set, will search in ABACUS built-in dataset based on the `dft_functional` keywords. User set value will overwrite the searched value. +- **Type**: String +- **Availability**: *vdw_method is set to d3_0 or d3_bj* +- **Description**: This damping function parameter is relevant for D3(0) and D3(BJ) van der Waals (vdW) correction methods. The recommended values of this parameter with different DFT functionals can be found on the webpage. If not set, will search in ABACUS built-in dataset based on the dft_functional keywords. User set value will overwrite the searched value. ### vdw_a2 -- **Type**: Real -- **Availability**: `vdw_method` is set to `d3_0` or `d3_bj` -- **Description**: This damping function parameter is only relevant for D3(0) and D3(BJ) van der Waals (vdW) correction methods. The recommended values of this parameter with different DFT functionals can be found on the [webpage](https://github.com/dftd3/simple-dftd3/blob/main/assets/parameters.toml). If not set, will search in ABACUS built-in dataset based on the `dft_functional` keywords. User set value will overwrite the searched value. +- **Type**: String +- **Availability**: *vdw_method is set to d3_0 or d3_bj* +- **Description**: This damping function parameter is only relevant for D3(0) and D3(BJ) van der Waals (vdW) correction methods. The recommended values of this parameter with different DFT functionals can be found on the webpage. If not set, will search in ABACUS built-in dataset based on the dft_functional keywords. User set value will overwrite the searched value. ### vdw_d - **Type**: Real -- **Availability**: `vdw_method` is set to `d2` +- **Availability**: *vdw_method is set to d2* - **Description**: Controls the damping rate of the damping function in the DFT-D2 method. - **Default**: 20 ### vdw_abc -- **Type**: Integer -- **Availability**: `vdw_method` is set to `d3_0` or `d3_bj` +- **Type**: Boolean +- **Availability**: *vdw_method is set to d3_0 or d3_bj* - **Description**: Determines whether three-body terms are calculated for DFT-D3 methods. - True: ABACUS will calculate the three-body term. - False: The three-body term is not included. - **Default**: False -### vdw_C6_file +### vdw_c6_file - **Type**: String -- **Availability**: `vdw_method` is set to `d2` -- **Description**: Specifies the name of the file containing $C_6$ parameters for each element when using the D2 method. If not set, ABACUS uses the default $C_6$ parameters (Jnm6/mol) stored in the [program](https://github.com/deepmodeling/abacus-develop/blob/develop/source/source_hamilt/module_vdw/vdwd2_parameters.cpp). To manually set the $C_6$ parameters, provide a file containing the parameters. An example is given by: +- **Availability**: *vdw_method is set to d2* +- **Description**: Specifies the name of the file containing parameters for each element when using the D2 method. If not set, ABACUS uses the default parameters (Jnm6/mol) stored in the program. To manually set the parameters, provide a file containing the parameters. An example is given by: - ```text - H 0.1 - Si 9.0 - ``` + H 0.1 Si 9.0 - Namely, each line contains the element name and the corresponding $C_6$ parameter. + Namely, each line contains the element name and the corresponding parameter. - **Default**: default -### vdw_C6_unit +### vdw_c6_unit - **Type**: String -- **Availability**: `vdw_C6_file` is not default -- **Description**: Specifies the unit of the provided $C_6$ parameters in the D2 method. Available options are: - - `Jnm6/mol` (J·nm^6/mol) - - `eVA` (eV·Angstrom) +- **Availability**: *vdw_C6_file is not default* +- **Description**: Specifies the unit of the provided parameters in the D2 method. Available options are: + - Jnm6/mol (J nm^6/mol) + - eVA (eV Angstrom) - **Default**: Jnm6/mol -### vdw_R0_file +### vdw_r0_file - **Type**: String -- **Availability**: `vdw_method` is set to `d2` -- **Description**: Specifies the name of the file containing $R_0$ parameters for each element when using the D2 method. If not set, ABACUS uses the default $R_0$ parameters (Angstrom) stored in the [program](https://github.com/deepmodeling/abacus-develop/blob/develop/source/source_hamilt/module_vdw/vdwd2_parameters.cpp). To manually set the $R_0$ parameters, provide a file containing the parameters. An example is given by: +- **Availability**: *vdw_method is set to d2* +- **Description**: Specifies the name of the file containing parameters for each element when using the D2 method. If not set, ABACUS uses the default parameters (Angstrom) stored in the program. To manually set the parameters, provide a file containing the parameters. An example is given by: - ```text - Li 1.0 - Cl 2.0 - ``` + Li 1.0 Cl 2.0 - Namely, each line contains the element name and the corresponding $R_0$ parameter. + Namely, each line contains the element name and the corresponding parameter. - **Default**: default -### vdw_R0_unit +### vdw_r0_unit - **Type**: String -- **Availability**: `vdw_R0_file` is not default -- **Description**: Specifies the unit for the $R_0$ parameters in the D2 method when manually set by the user. Available options are: - - `A` (Angstrom) - - `Bohr` +- **Availability**: *vdw_R0_file is not default* +- **Description**: Specifies the unit for the parameters in the D2 method when manually set by the user. Available options are: + - A (Angstrom) + - Bohr - **Default**: A ### vdw_cutoff_type - **Type**: String - **Description**: Determines the method used for specifying the cutoff radius in periodic systems when applying Van der Waals correction. Available options are: - - `radius`: The supercell is selected within a sphere centered at the origin with a radius defined by `vdw_cutoff_radius`. - - `period`: The extent of the supercell is explicitly specified using the `vdw_cutoff_period` keyword. + - radius: The supercell is selected within a sphere centered at the origin with a radius defined by vdw_cutoff_radius. + - period: The extent of the supercell is explicitly specified using the vdw_cutoff_period keyword. - **Default**: radius ### vdw_cutoff_radius -- **Type**: Real -- **Availability**: `vdw_cutoff_type` is set to `radius` -- **Description**: Defines the radius of the cutoff sphere when `vdw_cutoff_type` is set to `radius`. The default values depend on the chosen `vdw_method`. -- **Default**: - - 56.6918 if `vdw_method` is set to `d2` - - 95 if `vdw_method` is set to `d3_0` or `d3_bj` -- **Unit**: defined by `vdw_radius_unit` (default `Bohr`) +- **Type**: String +- **Availability**: *vdw_cutoff_type is set to radius* +- **Description**: Defines the radius of the cutoff sphere when vdw_cutoff_type is set to radius. The default values depend on the chosen vdw_method. +- **Unit**: defined by vdw_radius_unit (default Bohr) ### vdw_radius_unit - **Type**: String -- **Availability**: `vdw_cutoff_type` is set to `radius` -- **Description**: Specify the unit of `vdw_cutoff_radius`. Available options are: - - `A`(Angstrom) - - `Bohr` +- **Availability**: *vdw_cutoff_type is set to radius* +- **Description**: Specify the unit of vdw_cutoff_radius. Available options are: + - A(Angstrom) + - Bohr - **Default**: Bohr ### vdw_cutoff_period - **Type**: Integer Integer Integer -- **Availability**: `vdw_cutoff_type` is set to `period` +- **Availability**: *vdw_cutoff_type is set to period* - **Description**: The three integers supplied here explicitly specify the extent of the supercell in the directions of the three basis lattice vectors. - **Default**: 3 3 3 ### vdw_cn_thr - **Type**: Real -- **Availability**: `vdw_method` is set to `d3_0` or `d3_bj` +- **Availability**: *vdw_method is set to d3_0 or d3_bj* - **Description**: The cutoff radius when calculating coordination numbers. - **Default**: 40 -- **Unit**: defined by `vdw_cn_thr_unit` (default: `Bohr`) +- **Unit**: defined by vdw_cn_thr_unit (default: Bohr) ### vdw_cn_thr_unit - **Type**: String -- **Description**: Unit of the coordination number cutoff (`vdw_cn_thr`). Available options are: - - `A`(Angstrom) - - `Bohr` +- **Description**: Unit of the coordination number cutoff (vdw_cn_thr). Available options are: + - A(Angstrom) + - Bohr - **Default**: Bohr [back to top](#full-list-of-input-keywords) ## Berry phase and wannier90 interface -These variables are used to control berry phase and wannier90 interface parameters. [Detail introduce](https://github.com/deepmodeling/abacus-develop/blob/develop/docs/advanced/interface/Wannier90.md#wannier90) - ### berry_phase - **Type**: Boolean @@ -3623,7 +3727,7 @@ These variables are used to control berry phase and wannier90 interface paramete ### towannier90 -- **Type**: Integer +- **Type**: Boolean - **Description**: Controls the generation of files for the Wannier90 code. - 1: Generate files for the Wannier90 code. - 0: Do not generate files for the Wannier90 code. @@ -3638,8 +3742,8 @@ These variables are used to control berry phase and wannier90 interface paramete ### wannier_method - **Type**: Integer -- **Description**: Only available on LCAO basis, using different methods to generate "\*.mmn" file and "\*.amn" file. - - 1: Calculated using the `lcao_in_pw` method, the calculation accuracy can be improved by increasing `ecutwfc` to maintain consistency with the pw basis set results. +- **Description**: Only available on LCAO basis, using different methods to generate "\.mmn" file and "\.amn" file. + - 1: Calculated using the lcao_in_pw method, the calculation accuracy can be improved by increasing ecutwfc to maintain consistency with the pw basis set results. - 2: The overlap between atomic orbitals is calculated using grid integration. The radial grid points are generated using the Gauss-Legendre method, while the spherical grid points are generated using the Lebedev-Laikov method. - **Default**: 1 @@ -3647,13 +3751,13 @@ These variables are used to control berry phase and wannier90 interface paramete - **Type**: String - **Description**: The spin direction for the Wannier function calculation when nspin is set to 2 - - `up`: Calculate spin up for the Wannier function. - - `down`: Calculate spin down for the Wannier function. -- **Default**: `up` + - up: Calculate spin up for the Wannier function. + - down: Calculate spin down for the Wannier function. +- **Default**: up ### out_wannier_mmn -- **Type**: Bool +- **Type**: Boolean - **Description**: Write the "*.mmn" file or not. - 0: don't write the "*.mmn" file. - 1: write the "*.mmn" file. @@ -3661,7 +3765,7 @@ These variables are used to control berry phase and wannier90 interface paramete ### out_wannier_amn -- **Type**: Bool +- **Type**: Boolean - **Description**: Write the "*.amn" file or not. - 0: don't write the "*.amn" file. - 1: write the "*.amn" file. @@ -3669,7 +3773,7 @@ These variables are used to control berry phase and wannier90 interface paramete ### out_wannier_eig -- **Type**: Bool +- **Type**: Boolean - **Description**: Write the "*.eig" file or not. - 0: don't write the "*.eig" file. - 1: write the "*.eig" file. @@ -3677,7 +3781,7 @@ These variables are used to control berry phase and wannier90 interface paramete ### out_wannier_unk -- **Type**: Bool +- **Type**: Boolean - **Description**: Write the "UNK.*" file or not. - 0: don't write the "UNK.*" file. - 1: write the "UNK.*" file. @@ -3685,7 +3789,7 @@ These variables are used to control berry phase and wannier90 interface paramete ### out_wannier_wvfn_formatted -- **Type**: Bool +- **Type**: Boolean - **Description**: Write the "UNK.*" file in ASCII format or binary format. - 0: write the "UNK.*" file in binary format. - 1: write the "UNK.*" file in ASCII format (text file format). @@ -3693,362 +3797,297 @@ These variables are used to control berry phase and wannier90 interface paramete [back to top](#full-list-of-input-keywords) -## TDDFT: time dependent density functional theory +## RT-TDDFT: Real-Time Time-Dependent Density Functional Theory ### estep_per_md - **Type**: Integer -- **Description**: The number of electron propagation steps between two ionic steps. +- **Description**: The number of electronic propagation steps between two ionic steps. - **Default**: 1 ### td_dt - **Type**: Real -- **Description**: The time step used in electron propagation. Setting td_dt will reset the md_dt value to td_dt * estep_per_md. -- **Default**: md_dt/estep_per_md +- **Description**: The time step used in electronic propagation. Setting td_dt will reset the value of md_dt to td_dt * estep_per_md. +- **Default**: md_dt / estep_per_md +- **Unit**: fs ### td_edm - **Type**: Integer -- **Description**: Method to calculate the energy density matrix - - 0: new method (use the original formula). - - 1: old method (use the formula for ground state). +- **Description**: Method to calculate the energy-density matrix, mainly affects the calculation of force and stress. + - 0: Using the original formula. + - 1: Using the formula for ground state (deprecated). Note that this usually does not hold if wave function is not the eigenstate of the Hamiltonian. - **Default**: 0 ### td_print_eij - **Type**: Real -- **Description**: - - <0: don't print $E_{ij}$. - - \>=0: print the $E_{ij}\ (<\psi_i|H|\psi_j>$) elements which are larger than td_print_eij. +- **Description**: Controls the printing of Hamiltonian matrix elements. + - < 0: Suppress all output. + - >= 0: Print only elements with either i or j exceeding td_print_eij. - **Default**: -1 +- **Unit**: Ry ### td_propagator - **Type**: Integer -- **Description**: - Methods of propagator +- **Description**: Methods of electronic propagation. - 0: Crank-Nicolson, based on matrix inversion. - - 1: 4th Taylor expansions of exponential. - - 2: enforced time-reversal symmetry (ETRS). + - 1: 4th-order Taylor expansion of exponential. + - 2: Enforced time-reversal symmetry (ETRS). - 3: Crank-Nicolson, based on solving linear equation. - **Default**: 0 ### td_vext - **Type**: Boolean -- **Description**: - - True: add a laser material interaction (extern laser field). - - False: no extern laser field. +- **Description**: - True: Add a laser-material interaction (external electric field). + - False: No external electric field. - **Default**: False ### td_vext_dire - **Type**: String -- **Description**: - If `td_vext` is True, the td_vext_dire is a string to set the number of electric fields, like `td_vext_dire 1 2` representing external electric field is added to the x and y axis at the same time. Parameters of electric field can also be written as a string, like `td_gauss_phase 0 1.5707963267948966` representing the Gauss field in the x and y directions has a phase delay of Pi/2. See below for more parameters of electric field. - - 1: the direction of external light field is along x axis. - - 2: the direction of external light field is along y axis. - - 3: the direction of external light field is along z axis. +- **Description**: Specifies the direction(s) of the external electric field when td_vext is enabled. For example, td_vext_dire 1 2 indicates that external electric fields are applied to both the x and y directions simultaneously. Electric field parameters can also be written as strings. For example, td_gauss_phase 0 1.5707963 indicates that the Gaussian type electric fields in the x and y directions have a phase delay of pi/2. + - 1: The external field direction is along the x-axis. + - 2: The external field direction is along the y-axis. + - 3: The external field direction is along the z-axis. - **Default**: 1 ### td_stype - **Type**: Integer -- **Description**: - Type of electric field in space domain - - 0: length gauge. - - 1: velocity gauge. - - 2: hybrid gauge. +- **Description**: Type of electric field in the space domain, i.e. the gauge of the electric field. + - 0: Length gauge. + - 1: Velocity gauge. + - 2: Hybrid gauge. See J. Chem. Theory Comput. 2025, 21, 3335-3341 for more information. - **Default**: 0 ### td_ttype -- **Type**: Integer -- **Description**: - Type of electric field in time domain +- **Type**: String +- **Description**: Type of electric field in the time domain. - 0: Gaussian type function. - - 1: Trapezoid function. - - 2: Trigonometric function. - - 3: Heaviside function. - - 4: HHG function. + - 1: Trapezoid type function. + - 2: Trigonometric type function. + - 3: Heaviside type function. - **Default**: 0 ### td_tstart - **Type**: Integer -- **Description**: Number of steps where electric field starts +- **Description**: The initial time step when the time-dependent electric field is activated. - **Default**: 1 ### td_tend - **Type**: Integer -- **Description**: Number of steps where electric field ends -- **Default**: 100 +- **Description**: The final time step when the time-dependent electric field is deactivated. The field remains active between td_tstart and td_tend. +- **Default**: 1000 ### td_lcut1 - **Type**: Real -- **Description**: - The lower bound of the interval in the length gauge RT-TDDFT, where $x$ is the fractional coordinate: - - $$ - E(x)=\begin{cases}E_0, & \mathtt{cut1}\leqslant x \leqslant \mathtt{cut2} \\-E_0\left(\dfrac{1}{\mathtt{cut1}+1-\mathtt{cut2}}-1\right), & 0 < x < \mathtt{cut1~~or~~cut2} < x < 1 \end{cases} - $$ - +- **Description**: The lower bound of the interval in the length gauge RT-TDDFT, where the coordinate is the fractional coordinate. - **Default**: 0.05 ### td_lcut2 - **Type**: Real -- **Description**: - The upper bound of the interval in the length gauge RT-TDDFT, where $x$ is the fractional coordinate: - - $$ - E(x)=\begin{cases}E_0, & \mathtt{cut1}\leqslant x \leqslant \mathtt{cut2} \\-E_0\left(\dfrac{1}{\mathtt{cut1}+1-\mathtt{cut2}}-1\right), & 0 < x < \mathtt{cut1~~or~~cut2} < x < 1 \end{cases} - $$ - +- **Description**: The upper bound of the interval in the length gauge RT-TDDFT, where the coordinate is the fractional coordinate. - **Default**: 0.95 ### td_gauss_freq -- **Type**: Real -- **Description**: - Frequency (freq) of Gauss type electric field (fs^-1)\ - amp\*cos(2pi\*freq(t-t0)+phase)exp(-(t-t0)^2/2sigma^2) +- **Type**: String +- **Description**: Frequency of the Gaussian type electric field. - **Default**: 22.13 +- **Unit**: 1/fs ### td_gauss_phase -- **Type**: Real -- **Description**: - Phase of Gauss type electric field\ - amp\*(2pi\*freq(t-t0)+phase)exp(-(t-t0)^2/2sigma^2) +- **Type**: String +- **Description**: Phase of the Gaussian type electric field. - **Default**: 0.0 ### td_gauss_sigma -- **Type**: Real -- **Description**: - Sigma of Gauss type electric field (fs)\ - amp\*cos(2pi\*freq(t-t0)+phase)exp(-(t-t0)^2/2sigma^2) +- **Type**: String +- **Description**: Pulse width (standard deviation) of the Gaussian type electric field. - **Default**: 30.0 +- **Unit**: fs ### td_gauss_t0 -- **Type**: Real -- **Description**: - Step number of time center (t0) of Gauss type electric field\ - amp\*cos(2pi\*freq(t-t0)+phase)exp(-(t-t0)^2/2sigma^2) +- **Type**: String +- **Description**: Step number of the time center of the Gaussian type electric field. - **Default**: 100 ### td_gauss_amp -- **Type**: Real -- **Description**: - Amplitude (amp) of Gauss type electric field (V/Angstrom)\ - amp\*cos(2pi\*freq(t-t0)+phase)exp(-(t-t0)^2/2sigma^2) +- **Type**: String +- **Description**: Amplitude of the Gaussian type electric field. - **Default**: 0.25 +- **Unit**: V/Angstrom ### td_trape_freq -- **Type**: Real -- **Description**: - Frequency (freq) of Trapezoid type electric field (fs^-1)\ - E = amp\*cos(2pi\*freq\*t+phase) t/t1 , tt3 +- **Type**: String +- **Description**: Frequency of the trapezoid type electric field. - **Default**: 1.60 +- **Unit**: 1/fs ### td_trape_phase -- **Type**: Real -- **Description**: - Phase of Trapezoid type electric field\ - E = amp\*cos(2pi\*freq\*t+phase) t/t1 , tt3 +- **Type**: String +- **Description**: Phase of the trapezoid type electric field. - **Default**: 0.0 ### td_trape_t1 -- **Type**: Real -- **Description**: - Step number of time interval 1 (t1) of Trapezoid type electric field\ - E = amp\*cos(2pi\*freq\*t+phase) t/t1 , tt3 +- **Type**: String +- **Description**: Step number of the time interval t1 of the trapezoid type electric field. - **Default**: 1875 ### td_trape_t2 -- **Type**: Real -- **Description**: - Step number of time interval 2 (t2) of Trapezoid type electric field\ - E = amp\*cos(2pi\*freq\*t+phase) t/t1 , tt3 +- **Type**: String +- **Description**: Step number of the time interval t2 of the trapezoid type electric field. - **Default**: 5625 ### td_trape_t3 -- **Type**: Real -- **Description**: - Step number of time interval 3 (t3) of Trapezoid type electric field\ - E = amp\*cos(2pi\*freq\*t+phase) t/t1 , tt3 +- **Type**: String +- **Description**: Step number of the time interval t3 of the trapezoid type electric field. - **Default**: 7500 ### td_trape_amp -- **Type**: Real -- **Description**: - Amplitude (amp) of Trapezoid type electric field (V/Angstrom)\ - E = amp\*cos(2pi\*freq\*t+phase) t/t1 , tt3 +- **Type**: String +- **Description**: Amplitude of the trapezoid type electric field. - **Default**: 2.74 +- **Unit**: V/Angstrom ### td_trigo_freq1 -- **Type**: Real -- **Description**: - Frequency 1 (freq1) of Trigonometric type electric field (fs^-1)\ - amp\*cos(2\*pi\*freq1\*t+phase1)\*sin(2\*pi\*freq2\*t+phase2)^2 +- **Type**: String +- **Description**: Frequency 1 of the trigonometric type electric field. - **Default**: 1.164656 +- **Unit**: 1/fs ### td_trigo_freq2 -- **Type**: Real -- **Description**: - Frequency 2 (freq2) of Trigonometric type electric field (fs^-1)\ - amp\*cos(2\*pi\*freq1\*t+phase1)\*sin(2\*pi\*freq2\*t+phase2)^2 +- **Type**: String +- **Description**: Frequency 2 of the trigonometric type electric field. - **Default**: 0.029116 +- **Unit**: 1/fs ### td_trigo_phase1 -- **Type**:Real -- **Description**: - Phase 1 (phase1) of Trigonometric type electric field\ - amp\*cos(2\*pi\*freq1\*t+phase1)\*sin(2\*pi\*freq2\*t+phase2)^2 +- **Type**: String +- **Description**: Phase 1 of the trigonometric type electric field. - **Default**: 0.0 ### td_trigo_phase2 -- **Type**: Real -- **Description**: - Phase 2 (phase2) of Trigonometric type electric field\ - amp\*cos(2\*pi\*freq1\*t+phase1)\*sin(2\*pi\*freq2\*t+phase2)^2 +- **Type**: String +- **Description**: Phase 2 of the trigonometric type electric field. - **Default**: 0.0 ### td_trigo_amp -- **Type**: Real -- **Description**: - Amplitude (amp) of Trigonometric type electric field (V/Angstrom)\ - amp\*cos(2\*pi\*freq1\*t+phase1)\*sin(2\*pi\*freq2\*t+phase2)^2 +- **Type**: String +- **Description**: Amplitude of the trigonometric type electric field. - **Default**: 2.74 +- **Unit**: V/Angstrom ### td_heavi_t0 -- **Type**: Real -- **Description**: - Step number of switch time (t0) of Heaviside type electric field\ - E = amp , tt0 +- **Type**: String +- **Description**: Step number of the switch time of the Heaviside type electric field. - **Default**: 100 ### td_heavi_amp -- **Type**: Real -- **Description**: - Amplitude (amp) of Heaviside type electric field (V/Angstrom)\ - E = amp , tt0 -- **Default**: 2.74 +- **Type**: String +- **Description**: Amplitude of the Heaviside type electric field. +- **Default**: 1.0 +- **Unit**: V/Angstrom -### out_dipole +### init_vecpot_file - **Type**: Boolean -- **Description**: - - True: output dipole. - - False: do not output dipole. +- **Description**: Initialize vector potential through file or not. + - True: Initialize vector potential from file At.dat (unit: a.u.). It consists of four columns, representing the step number and vector potential on each direction. + - False: Calculate vector potential by integrating the electric field. - **Default**: False -### out_current +### ocp - **Type**: Boolean -- **Description**: Output current in real time TDDFT simulations with the velocity gauge - - True: output current. - - False: do not output current. +- **Description**: - True: Fixes the band occupations based on the values specified in ocp_set. + - False: Does not fix the band occupations. - **Default**: False -### out_current_k +### ocp_set -- **Type**: Boolean -- **Description**: Output rt-TDDFT current for all k points - - True: output tddft current for all k points - - False: output current in total -- **Default**: False +- **Type**: String +- **Description**: If ocp is set to 1, ocp_set must be provided as a string specifying the occupation numbers for each band across all k-points. The format follows a space-separated pattern, where occupations are assigned sequentially to bands for each k-point. A shorthand notation Nx can be used to repeat a value x for N bands. + - Example: + 1 10*1 0 1 represents occupations for 13 bands, where the 12th band is fully unoccupied (0), and all others are occupied (1). + - For a system with multiple k-points, the occupations must be specified for all k-points, following their order in the output file kpoints (may lead to fractional occupations). + - Incorrect specification of ocp_set could lead to inconsistencies in electron counting, causing the calculation to terminate with an error. +- **Default**: None -### out_efield +### out_dipole - **Type**: Boolean -- **Description**: Output TDDFT Efield or not (V/Angstrom) - - True: output efield - - False: do not output efield +- **Description**: - True: Output electric dipole moment. + - False: Do not output electric dipole moment. - **Default**: False -### out_vecpot +### out_current -- **Type**: Boolean -- **Description**: Output TDDFT Vector potential or not (a.u.) - - True: output Vector potential in file "OUT.suffix/At.dat" - - False: do not output Vector potential -- **Default**: False +- **Type**: Integer +- **Description**: - 0: Do not output current. + - 1: Output current using the two-center integral, faster. + - 2: Output current using the matrix commutation, more precise. +- **Default**: 0 -### init_vecpot_file +### out_current_k - **Type**: Boolean -- **Description**: Init vector potential through file or not - - True: init vector potential from file "At.dat".(a.u.) It consists of four columns, representing istep and vector potential on each direction. - - False: calculate vector potential by integral of Efield +- **Description**: - True: Output current for each k-points separately. + - False: Output current in total. - **Default**: False -### ocp +### out_efield - **Type**: Boolean -- **Availability**: - - For PW and LCAO codes: If set to 1, the band occupations will be determined by `ocp_set`. - - For RT-TDDFT in LCAO codes: If set to 1, same as above, but the occupations will be constrained starting from the second ionic step. - - For OFDFT: This feature is not available. -- **Description**: -- True: Fixes the band occupations based on the values specified in `ocp_set`. -- False: Does not fix the band occupations. +- **Description**: Whether to output the electric field data to files. When enabled, writes real-time electric field values (unit: V/A) into files named efield_[num].txt, where [num] is the sequential index of the electric field ranges from 0 to N-1 for N configured fields. It is noteworthy that the field type sequence follows td_ttype, while the direction sequence follows td_vext_dire. + - True: Output electric field. + - False: Do not output electric field. - **Default**: False -### ocp_set +### out_vecpot -- **Type**: String -- **Description**: - - If `ocp` is set to 1, `ocp_set` must be provided as a string specifying the occupation numbers for each band across all k-points. The format follows a space-separated pattern, where occupations are assigned sequentially to bands for each k-point. A shorthand notation `N*x` can be used to repeat a value `x` for `N` bands. - - Example: - - `1 10*1 0 1` represents occupations for 13 bands, where the 12th band is fully unoccupied (`0`), and all others are occupied (`1`). - - For a system with multiple k-points, the occupations must be specified for all k-points, following their order in the output file kpoints (may lead to fractional occupations). - - Incorrect specification of `ocp_set` could lead to inconsistencies in electron counting, causing the calculation to terminate with an error. -- **Default**: None +- **Type**: Boolean +- **Description**: Output vector potential or not (unit: a.u.). + - True: Output vector potential into file At.dat. + - False: Do not output vector potential. +- **Default**: False [back to top](#full-list-of-input-keywords) ## Variables useful for debugging +### nurse + +- **Type**: Integer +- **Description**: Debugging flag for developers +- **Default**: 0 + ### t_in_h - **Type**: Boolean @@ -4117,62 +4156,32 @@ These variables are used to control berry phase and wannier90 interface paramete ## Electronic conductivities -Frequency-dependent electronic conductivities can be calculated with Kubo-Greenwood formula [Phys. Rev. B 83, 235120 (2011)]. - -Onsager coefficients: - -$L_{mn}(\omega)=(-1)^{m+n}\frac{2\pi e^2\hbar^2}{3m_e^2\omega\Omega}$ - -$\times\sum_{ij\alpha\mathbf{k}}W(\mathbf{k})\left(\frac{\epsilon_{i\mathbf{k}}+\epsilon_{j\mathbf{k}}}{2}-\mu\right)^{m+n-2} \times |\langle\Psi_{i\mathbf{k}}|\nabla_\alpha|\Psi_{j\mathbf{k}}\rangle|^2$ - -$\times[f(\epsilon_{i\mathbf{k}})-f(\epsilon_{j\mathbf{k}})]\delta(\epsilon_{j\mathbf{k}}-\epsilon_{i\mathbf{k}}-\hbar\omega).$ - -They can also be computed by $j$-$j$ correlation function. - -$L_{mn}=\frac{2e^{m+n-2}}{3\Omega\hbar\omega}\Im[\tilde{C}_{mn}(\omega)]$ -Guassian smearing: -$\tilde{C}_{mn}=\int_0^\infty C_{mn}(t)e^{-i\omega t}e^{-\frac{1}{2}s^2t^2}dt$ -Lorentzian smearing: -$\tilde{C}_{mn}=\int_0^\infty C_{mn}(t)e^{-i\omega t}e^{-\gamma t}dt$ - -$C_{mn}(t)=-2\theta(t)\Im\left\{Tr\left[\sqrt{\hat f}\hat{j}_m(1-\hat{f})e^{i\frac{\hat{H}}{\hbar}t}\hat{j}_ne^{-i\frac{\hat{H}}{\hbar}t}\sqrt{\hat f}\right]\right\}$, - -where $j_1$ is electric flux and $j_2$ is thermal flux. - -Frequency-dependent electric conductivities: $\sigma(\omega)=L_{11}(\omega)$. - -Frequency-dependent thermal conductivities: $\kappa(\omega)=\frac{1}{e^2T}\left(L_{22}-\frac{L_{12}^2}{L_{11}}\right)$. - -DC electric conductivities: $\sigma = \lim_{\omega\to 0}\sigma(\omega)$. - -Thermal conductivities: $\kappa = \lim_{\omega\to 0}\kappa(\omega)$. - ### cal_cond - **Type**: Boolean -- **Availability**: [basis_type](#basis_type) = `pw` +- **Availability**: *basis_type = pw* - **Description**: Whether to calculate electronic conductivities. - **Default**: False ### cond_che_thr - **Type**: Real -- **Availability**: [esolver_type](#esolver_type) = `sdft` +- **Availability**: *esolver_type = sdft* - **Description**: Control the error of Chebyshev expansions for conductivities. - **Default**: 1e-8 ### cond_dw - **Type**: Real -- **Availability**: [basis_type](#basis_type) = `pw` -- **Description**: Frequency interval ($\mathrm{d}\omega$) for frequency-dependent conductivities. +- **Availability**: *basis_type = pw* +- **Description**: Frequency interval () for frequency-dependent conductivities. - **Default**: 0.1 - **Unit**: eV ### cond_wcut - **Type**: Real -- **Availability**: [basis_type](#basis_type) = `pw` +- **Availability**: *basis_type = pw* - **Description**: Cutoff frequency for frequency-dependent conductivities. - **Default**: 10.0 - **Unit**: eV @@ -4180,17 +4189,17 @@ Thermal conductivities: $\kappa = \lim_{\omega\to 0}\kappa(\omega)$. ### cond_dt - **Type**: Real -- **Availability**: [basis_type](#basis_type) = `pw` -- **Description**: Time interval ($\mathrm{d}t$) to integrate Onsager coefficients. +- **Availability**: *basis_type = pw* +- **Description**: Time interval () to integrate Onsager coefficients. - **Default**: 0.02 - **Unit**: a.u. ### cond_dtbatch - **Type**: Integer -- **Availability**: [esolver_type](#esolver_type) = `sdft` -- **Description**: exp(iH\*dt\*cond_dtbatch) is expanded with Chebyshev expansion to calculate conductivities. It is faster but costs more memory. - - If `cond_dtbatch = 0`: Autoset this parameter to make expansion orders larger than 100. +- **Availability**: *esolver_type = sdft* +- **Description**: exp(iH\dt\cond_dtbatch) is expanded with Chebyshev expansion to calculate conductivities. It is faster but costs more memory. + - If cond_dtbatch = 0: Autoset this parameter to make expansion orders larger than 100. - **Default**: 0 ### cond_smear @@ -4204,26 +4213,24 @@ Thermal conductivities: $\kappa = \lim_{\omega\to 0}\kappa(\omega)$. ### cond_fwhm - **Type**: Real -- **Availability**: [basis_type](#basis_type) = `pw` -- **Description**: FWHM for conductivities. For Gaussian smearing, $\mathrm{FWHM}=2\sqrt{2\ln2}s$; for Lorentzian smearing, $\mathrm{FWHM}=2\gamma$. +- **Availability**: *basis_type = pw* +- **Description**: FWHM for conductivities. For Gaussian smearing, ; for Lorentzian smearing, . - **Default**: 0.4 - **Unit**: eV ### cond_nonlocal - **Type**: Boolean -- **Availability**: [basis_type](#basis_type) = `pw` -- **Description**: Whether to consider nonlocal potential correction when calculating velocity matrix $\bra{\psi_i}\hat{v}\ket{\psi_j}$. - - True: $m\hat{v}=\hat{p}+\frac{im}{\hbar}[\hat{V}_{NL},\hat{r}]$. - - False: $m\hat{v}\approx\hat{p}$. +- **Availability**: *basis_type = pw* +- **Description**: Whether to consider nonlocal potential correction when calculating velocity matrix . + - True: . + - False: . - **Default**: True [back to top](#full-list-of-input-keywords) ## Implicit solvation model -These variables are used to control the usage of implicit solvation model. This approach treats the solvent as a continuous medium instead of individual "explicit" solvent molecules, which means that the solute is embedded in an implicit solvent and the average over the solvent degrees of freedom becomes implicit in the properties of the solvent bath. - ### imp_sol - **Type**: Boolean @@ -4233,7 +4240,7 @@ These variables are used to control the usage of implicit solvation model. This ### eb_k - **Type**: Real -- **Availability**: `imp_sol` is true. +- **Availability**: *imp_sol is true.* - **Description**: The relative permittivity of the bulk solvent, 80 for water - **Default**: 80 @@ -4242,7 +4249,6 @@ These variables are used to control the usage of implicit solvation model. This - **Type**: Real - **Description**: The effective surface tension parameter that describes the cavitation, the dispersion, and the repulsion interaction between the solute and the solvent which are not captured by the electrostatic terms - **Default**: 1.0798e-05 -- **Unit**: $Ry/Bohr^{2}$ ### sigma_k @@ -4255,74 +4261,48 @@ These variables are used to control the usage of implicit solvation model. This - **Type**: Real - **Description**: The value of the electron density at which the dielectric cavity forms - **Default**: 0.00037 -- **Unit**: $Bohr^{-3}$ [back to top](#full-list-of-input-keywords) -## Quasiatomic Orbital (QO) analysis (Under Development Feature) - -These variables are used to control the usage of QO analysis. QO further compress information from LCAO: usually PW basis has dimension in million, LCAO basis has dimension below thousand, and QO basis has dimension below hundred. +## Quasiatomic Orbital (QO) analysis -### qo_switch (Under Development Feature) +### qo_switch - **Type**: Boolean - **Description**: Whether to let ABACUS output QO analysis required files -- **Default**: 0 +- **Default**: False -### qo_basis (Under Development Feature) +### qo_basis - **Type**: String -- **Description**: Specify the type of atomic basis - - `pswfc`: use the pseudowavefunction in pseudopotential files as atomic basis. To use this option, please make sure in pseudopotential file there is pswfc in it. - - `hydrogen`: generate hydrogen-like atomic basis (or with Slater screening). - - `szv`: use the first set of zeta for each angular momentum from numerical atomic orbitals as atomic basis. - - *warning: to use* `pswfc` *, please use norm-conserving pseudopotentials with pseudowavefunctions, SG15 pseudopotentials cannot support this option.* - *Developer notes: for ABACUS-lcao calculation, it is the most recommend to use `szv` instead of `pswfc` which is originally put forward in work of QO implementation on PW basis. The information loss always happens if `pswfc` or `hydrogen` orbitals are not well tuned, although making kpoints sampling more dense will mitigate this problem, but orbital-adjust parameters are needed to test system-by-system in this case.* -- **Default**: `szv` - -### qo_strategy (Under Development Feature) +- **Description**: Type of QO basis function: + - hydrogen: hydrogen-like basis + - pswfc: read basis from pseudopotential + - szv: single-zeta valence basis +- **Default**: szv -- **Type**: String \[String...\](optional) -- **Description**: Specify the strategy to generate radial orbitals for each atom type. If one parameter is given, will apply to all atom types. If more than one parameters are given but fewer than number of atom type, those unspecified atom type will use default value. +### qo_strategy - For `qo_basis hydrogen` - - `minimal-nodeless`: according to principle quantum number of the highest occupied state, generate only nodeless orbitals, for example Cu, only generate 1s, 2p, 3d and 4f orbitals (for Cu, 4s is occupied, thus $n_{max} = 4$) - - `minimal-valence`: according to principle quantum number of the highest occupied state, generate only orbitals with highest principle quantum number, for example Cu, only generate 4s, 4p, 4d and 4f orbitals. - - `full`: similarly according to the maximal principle quantum number, generate all possible orbitals, therefore for Cu, for example, will generate 1s, 2s, 2p, 3s, 3p, 3d, 4s, 4p, 4d, 4f. - - `energy-full`: will generate hydrogen-like orbitals according to Aufbau principle. For example the Cu (1s2 2s2 2p6 3s2 3p6 3d10 4s1), will generate these orbitals. - - `energy-valence`: from the highest n (principal quantum number) layer and n-1 layer, generate all occupied and possible ls (angular momentum quantum number) for only once, for example Cu, will generate 4s, 3d and 3p orbitals. +- **Type**: Vector of String (1 or n values where n is the number of atomic types) +- **Description**: Strategy to generate radial orbitals for QO analysis. For hydrogen: energy-valence, for pswfc and szv: all +- **Default**: for hydrogen: energy-valence, for pswfc and szv: all - For `qo_basis pswfc` and `qo_basis szv` - - `all`: use all possible pseudowavefunctions/numerical atomic orbital (of first zeta) in pseudopotential/numerical atomic orbital file. - - `s`/`p`/`d`/...: only use s/p/d/f/...-orbital(s). - - `spd`: use s, p and d orbital(s). Any unordered combination is acceptable. +### qo_screening_coeff - *warning: for* `qo_basis hydrogen` *to use* `full`, *generation strategy may cause the space spanned larger than the one spanned by numerical atomic orbitals, in this case, must filter out orbitals in some way* -- **Default**: for `hydrogen`: `energy-valence`, for `pswfc` and `szv`: `all` - -### qo_screening_coeff (Under Development Feature) - -- **Type**: Real \[Real...\](optional) -- **Description**: rescale the shape of radial orbitals, available for both `qo_basis hydrogen` and `qo_basis pswfc`. cases but has different meaning. - - For `qo_basis pswfc` - For each atom type, screening factor $e^{-\eta|\mathbf{r}|}$ is multiplied to the pswfc to mimic the behavior of some kind of electron. $\eta$ is the screening coefficient. If only one value is given, then will apply to each atom type. If not enough values are given, will apply default value to rest of atom types. This parameter plays important role in controlling the spread of QO orbitals together with `qo_thr`. - - For `qo_basis hydrogen` - If any float number is given, will apply Slater screening to all atom types. Slater screening is a classic and empirical method roughly taking many-electron effect into account for obtaining more accurate results when evaluating electron affinity and ionization energy. The Coulomb potential then becomes $V(r) = -\frac{Z-\sigma}{r}$. For example the effective nuclear charge for Cu 3d electrons now reduces from 29 to 7.85, 4s from 29 to 3.70, which means Slater screening will bring about longer tailing effect. If no value is given, will not apply Slater screening. +- **Type**: Vector of Real (n values where n is the number of atomic types; 1 value allowed for qo_basis=pswfc) +- **Description**: The screening coefficient for each atom type to rescale the shape of radial orbitals - **Default**: 0.1 - **Unit**: Bohr^-1 -### qo_thr (Under Development Feature) +### qo_thr - **Type**: Real - **Description**: The convergence threshold determining the cutoff of generated orbital. Lower threshold will yield orbital with larger cutoff radius. - **Default**: 1.0e-6 -## PEXSI +[back to top](#full-list-of-input-keywords) -These variables are used to control the usage of PEXSI (Pole Expansion and Selected Inversion) method in calculations. +## PEXSI ### pexsi_npole @@ -4411,7 +4391,7 @@ These variables are used to control the usage of PEXSI (Pole Expansion and Selec ### pexsi_delta_e - **Type**: Real -- **Description**: Upper bound for the spectral radius of $S^{-1} H$. +- **Description**: Upper bound for the spectral radius of S^{-1}H. - **Default**: 20 ### pexsi_mu_lower @@ -4464,116 +4444,118 @@ These variables are used to control the usage of PEXSI (Pole Expansion and Selec [back to top](#full-list-of-input-keywords) -## Linear Response TDDFT (Under Development Feature) +## Linear Response TDDFT + +### ri_hartree_benchmark + +- **Type**: String +- **Description**: Whether to use the RI approximation for the Hartree term in LR-TDDFT for benchmark (with FHI-aims/ABACUS read-in style) +- **Default**: none + +### aims_nbasis + +- **Type**: A number(ntype) of Integers +- **Availability**: *ri_hartree_benchmark = aims* +- **Description**: Atomic basis set size for each atom type (with the same order as in STRU) in FHI-aims. +- **Default**: {} (empty list, where ABACUS use its own basis set size) + +[back to top](#full-list-of-input-keywords) -These parameters are used to solve the excited states using. e.g. LR-TDDFT. +## Linear Response TDDFT (Under Development Feature) -### xc_kernel (Under Development Feature) +### xc_kernel - **Type**: String -- **Description**: The exchange-correlation kernel used in the calculation. -Currently supported: `RPA`, `LDA`, `PBE`, `HSE`, `HF`. +- **Description**: The exchange-correlation kernel used in the calculation. Currently supported: RPA, LDA, PBE, HSE, HF. - **Default**: LDA -### lr_init_xc_kernel (Under Development Feature) +### lr_init_xc_kernel -- **Type**: String -- **Description**: The method to initalize the xc kernel. - - "default": Calculate xc kerenel ($f_\text{xc}$) from the ground-state charge density. - - "file": Read the xc kernel $f_\text{xc}$ on grid from the provided files. The following words should be the paths of ".cube" files, where the first 1 (*[nspin](#nspin)==1*) or 3 (*[nspin](#nspin)==2*, namely spin-aa, spin-ab and spin-bb) will be read in. The parameter [xc_kernel](#xc_kernel) will be invalid. Now only LDA-type kernel is supproted as the potential will be calculated by directly multiplying the transition density. - - "from_charge_file": Calculate fxc from the charge density read from the provided files. The following words should be the paths of ".cube" files, where the first [nspin]($nspin) files will be read in. +- **Type**: Vector of String (>=1 values) +- **Description**: The method to initalize the xc kernel. + - "default": Calculate xc kernel from the ground-state charge density. + - "file": Read the xc kernel on grid from the provided files. The following words should be the paths of ".cube" files, where the first 1 (nspin==1) or 3 (nspin==2, namely spin-aa, spin-ab and spin-bb) will be read in. The parameter xc_kernel will be invalid. Now only LDA-type kernel is supported as the potential will be calculated by directly multiplying the transition density. + - "from_charge_file": Calculate fxc from the charge density read from the provided files. The following words should be the paths of ".cube" files, where the first nspin files will be read in. - **Default**: "default" -### lr_solver (Under Development Feature) +### lr_solver - **Type**: String -- **Description**: The method to solve the Casida equation $AX=\Omega X$ in LR-TDDFT under Tamm-Dancoff approximation (TDA), where $A_{ai,bj}=(\epsilon_a-\epsilon_i)\delta_{ij}\delta_{ab}+(ai|f_{Hxc}|bj)+\alpha_{EX}(ab|ij)$ is the particle-hole excitation matrix and $X$ is the transition amplitude. - - `dav`/`dav_subspace`/ `cg`: Construct $AX$ and diagonalize the Hamiltonian matrix iteratively with Davidson/Non-ortho-Davidson/CG algorithm. - - `lapack`: Construct the full $A$ matrix and directly diagonalize with LAPACK. - - `spectrum`: Calculate absorption spectrum only without solving Casida equation. The `OUT.${suffix}/` directory should contain the - files for LR-TDDFT eigenstates and eigenvalues, i.e. `Excitation_Energy.dat` and `Excitation_Amplitude_${processor_rank}.dat` - output by setting `out_wfc_lr` to true. +- **Description**: The method to solve the Casida equation in LR-TDDFT under Tamm-Dancoff approximation (TDA). + - dav/dav_subspace/cg: Construct and diagonalize the Hamiltonian matrix iteratively with Davidson/Non-ortho-Davidson/CG algorithm. + - lapack: Construct the full matrix and directly diagonalize with LAPACK. + - spectrum: Calculate absorption spectrum only without solving Casida equation. - **Default**: dav -### lr_thr (Under Development Feature) +### lr_thr - **Type**: Real -- **Description**: The convergence threshold of iterative diagonalization solver fo LR-TDDFT. It is a pure-math number with the same as [pw_diag_thr](#pw_diag_thr), but since the Casida equation is a one-shot eigenvalue problem, it is also the convergence threshold of LR-TDDFT. +- **Description**: The convergence threshold of iterative diagonalization solver for LR-TDDFT. It is a pure-math number with the same meaning as pw_diag_thr, but since the Casida equation is a one-shot eigenvalue problem, it is also the convergence threshold of LR-TDDFT. - **Default**: 1e-2 -### nocc (Under Development Feature) +### nocc - **Type**: Integer -- **Description**: The number of occupied orbitals (up to HOMO) used in the LR-TDDFT calculation. - - Note: If the value is illegal ( > [nelec](#nelec)\/2 or <= 0), it will be autoset to [nelec](#nelec)\/2. -- **Default**: [nband](#nband) +- **Description**: The number of occupied orbitals (up to HOMO) used in the LR-TDDFT calculation. + - Note: If the value is illegal ( > nelec/2 or <= 0), it will be autoset to nelec/2. +- **Default**: nband -### nvirt (Under Development Feature) +### nvirt - **Type**: Integer -- **Description**: The number of virtual orbitals (staring from LUMO) used in the LR-TDDFT calculation. +- **Description**: The number of virtual orbitals (starting from LUMO) used in the LR-TDDFT calculation. - **Default**: 1 -### lr_nstates (Under Development Feature) +### lr_nstates - **Type**: Integer -- **Description**: The number of 2-particle states to be solved +- **Description**: The number of 2-particle states to be solved. - **Default**: 0 -### lr_unrestricted (Under Development Feature) +### lr_unrestricted + - **Type**: Boolean - **Description**: Whether to use unrestricted construction for LR-TDDFT (the matrix size will be doubled). - - True: Always use unrestricted LR-TDDFT. + - True: Always use unrestricted LR-TDDFT. - False: Use unrestricted LR-TDDFT only when the system is open-shell. - **Default**: False -### abs_wavelen_range (Under Development Feature) +### abs_wavelen_range - **Type**: Real Real - **Description**: The range of the wavelength for the absorption spectrum calculation. - **Default**: 0.0 0.0 +- **Unit**: nm -### out_wfc_lr (Under Development Feature) +### out_wfc_lr - **Type**: Boolean -- **Description**: Whether to output the eigenstates (excitation energy) and eigenvectors (excitation amplitude) of the LR-TDDFT calculation. -The output files are `OUT.${suffix}/Excitation_Energy.dat` and `OUT.${suffix}/Excitation_Amplitude_${processor_rank}.dat`. +- **Description**: Whether to output the eigenstates (excitation energy) and eigenvectors (excitation amplitude) of the LR-TDDFT calculation. The output files are OUT.{suffix}/Excitation_Amplitude_${processor_rank}.dat. - **Default**: False -### abs_broadening (Under Development Feature) -- **Type**: Real -- **Description**: The broadening factor $\eta$ for the absorption spectrum calculation. -- **Default**: 0.01 +### abs_gauge -### ri_hartree_benchmark (Under Development Feature) - **Type**: String -- **Description**: Whether to use the localized resolution-of-identity (LRI) approximation for the **Hartree** term of kernel in the $A$ matrix of LR-TDDFT for benchmark (with FHI-aims or another ABACUS calculation). Now it only supports molecular systems running with a single processor, and a large enough supercell should be used to make LRI C, V tensors contain only the R=(0 0 0) cell. - - `aims`: The `OUT.${suffix}`directory should contain the FHI-aims output files: RI-LVL tensors`Cs_data_0.txt` and `coulomb_mat_0.txt`, and KS eigenstates from FHI-aims: `band_out`and `KS_eigenvectors.out`. The Casida equation will be constructed under FHI-aims' KS eigenpairs. - - LRI tensor files (`Cs_data_0.txt` and `coulomb_mat_0.txt`)and Kohn-Sham eigenvalues (`bands_out`): run FHI-aims with periodic boundary conditions and with `total_energy_method rpa` and `output librpa`. - - Kohn-Sham eigenstates under aims NAOs (`KS_eigenvectors.out`): run FHI-aims with `output eigenvectors`. - - If the number of atomic orbitals of any atom type in FHI-aims is different from that in ABACUS, the `aims_nbasis` should be set. - - `abacus`: The `OUT.${suffix}`directory should contain the RI-LVL tensors `Cs` and `Vs` (written by setting `out_ri_cv` to 1). The Casida equation will be constructed under ABACUS' KS eigenpairs, with the only difference that the Hartree term is constructed with RI approximation. - - `none`: Construct the Hartree term by Poisson equation and grid integration as usual. -- **Default**: none +- **Description**: Whether to use length or velocity gauge to calculate the absorption spectrum in LR-TDDFT. +- **Default**: length -### aims_nbasis (Under Development Feature) -- **Type**: A number(ntype) of Integers -- **Availability**: `ri_hartree_benchmark` = `aims` -- **Description**: Atomic basis set size for each atom type (with the same order as in `STRU`) in FHI-aims. -- **Default**: {} (empty list, where ABACUS use its own basis set size) +### abs_broadening + +- **Type**: Real +- **Description**: The broadening factor for the absorption spectrum calculation. +- **Default**: 0.01 -## Reduced Density Matrix Functional Theory (Under Development Feature) +[back to top](#full-list-of-input-keywords) -Ab-initio methods and the xc-functional parameters used in RDMFT. -The physical quantities that RDMFT temporarily expects to output are the kinetic energy, total energy, and 1-RDM of the system in the ground state, etc. +## Reduced Density Matrix Functional Theory -### rdmft (Under Development Feature) +### rdmft - **Type**: Boolean - **Description**: Whether to perform rdmft calculation (reduced density matrix funcional theory) - **Default**: false -### rdmft_power_alpha (Under Development Feature) +### rdmft_power_alpha - **Type**: Real - **Description**: The alpha parameter of power-functional(or other exx-type/hybrid functionals) which used in RDMFT, g(occ_number) = occ_number^alpha diff --git a/docs/advanced/input_files/kpt.md b/docs/advanced/input_files/kpt.md index 853a3dc340..1aac138fd0 100644 --- a/docs/advanced/input_files/kpt.md +++ b/docs/advanced/input_files/kpt.md @@ -58,6 +58,40 @@ Direct //`Direct' or `Cartesian' coordinate 0.5 0.5 0.5 0.125 ``` +### K-point Weights and Symmetry + +When explicitly setting k-points, you can specify custom weights for each k-point. These weights determine the contribution of each k-point to the total energy and density calculations. + +**Important notes about k-point weights:** + +1. **Custom weights are preserved**: When using explicit k-point lists (non-Monkhorst-Pack), ABACUS preserves the custom weights you specify, even when symmetry operations are applied to reduce the k-points to the irreducible Brillouin zone (IBZ). + +2. **Symmetry reduction**: When [`symmetry`](./input-main.md#symmetry) is set to 1, ABACUS will analyze the crystal symmetry and reduce the k-point set to the irreducible Brillouin zone. During this reduction: + - For **Monkhorst-Pack grids** (automatically generated): All k-points have uniform weights (1/N where N is the total number of k-points) + - For **explicit k-point lists**: Custom weights are preserved and properly combined when symmetry-equivalent k-points are merged + +3. **Weight normalization**: After symmetry reduction, k-point weights are normalized so that their sum equals `degspin` (2 for non-spin-polarized calculations, 1 for spin-polarized calculations). + +**Example with custom weights:** + +``` +K_POINTS +5 +Direct +0.0 0.0 0.0 0.1 // Gamma point with weight 0.1 +0.5 0.0 0.0 0.2 // X point with weight 0.2 +0.0 0.5 0.0 0.3 // Y point with weight 0.3 +0.5 0.5 0.0 0.2 // M point with weight 0.2 +0.0 0.0 0.5 0.2 // Z point with weight 0.2 +``` + +In this example, different k-points have different weights, which might be useful for: +- Special sampling schemes +- Convergence testing with specific k-point importance +- Custom integration methods + +> **Note**: When using custom weights with symmetry, ensure that your weight distribution is consistent with the crystal symmetry. ABACUS will preserve your weights during IBZ reduction, but inconsistent weights may lead to unexpected results. + [back to top](#the-kpt-file) ## Band structure calculations diff --git a/docs/advanced/input_files/stru.md b/docs/advanced/input_files/stru.md index dff5ae3020..a30064351a 100644 --- a/docs/advanced/input_files/stru.md +++ b/docs/advanced/input_files/stru.md @@ -99,6 +99,7 @@ information that comes below. 2. [SG15-ONCV](http://quantum-simulation.org/potentials/sg15_oncv/upf/). 3. [DOJO](http://www.pseudo-dojo.org/). 4. [BLPS](https://github.com/PrincetonUniversity/BLPSLibrary). + 5. For additional pseudopotential options and to view the basic benchmark test results of these pseudopotentials in ABACUS, please refer to the [Benchmarks website](https://kirk0830.github.io/ABACUS-Pseudopot-Nao-Square/pseudopotential/pseudopotential.html) ### NUMERICAL_ORBITAL @@ -110,6 +111,9 @@ information that comes below. ‘Si_gga_8au_60Ry_2s2p1d.orb’ is name of the numerical orbital file. Again here the path is not specified, which means that this file is located in the work directory. Numerical atomic orbitals may be downloaded from the [official website](http://abacus.ustc.edu.cn/pseudo/list.htm). + Recommendation for Pseudopotential and Orbital Sets +For general usage requirements, the APNSv1.0 pseudopotential and orbital set is recommended. You can access it via [AIS square website](https://www.aissquare.com/datasets/detail?pageType=datasets&name=ABACUS-APNS-PPORBs-v1%253Apre-release&id=326) + ### LATTICE_CONSTANT The lattice constant of the system in unit of Bohr. @@ -248,7 +252,7 @@ information that comes below. Several other parameters could be defined after the atom position using key words : - `m` or NO key word: three numbers, which take value in 0 or 1, control how the atom move in geometry relaxation calculations. In example below, the numbers `0 0 0` following the coordinates of the first atom means this atom are *not allowed* to move in all three directions, and the numbers `1 1 1` following the coordinates of the second atom means this atom *can* move in all three directions. - - `v` or `vel` or `velocity`: set the three components of initial velocity of atoms in geometry relaxation calculations(e. g. `v 1.0 1.0 1.0`). + - `v` or `vel` or `velocity`: set the three components of initial velocity of atoms, used only for restarting MD calculations (e.g., `v 1.0 1.0 1.0`). - `mag` or `magmom` : set the start magnetization for each atom. In colinear case only one number should be given. In non-colinear case one have two choice:either set one number for the norm of magnetization here and specify two polar angle later(e. g. see below), or set three number for the xyz commponent of magnetization here (e. g. `mag 0.0 0.0 1.0`). Note that if this parameter is set, the initial magnetic moment setting in the second line will be overrided. - `angle1`: in non-colinear case, specify the angle between z-axis and real spin, in angle measure instead of radian measure - `angle2`: in non-colinear case, specify angle between x-axis and real spin in projection in xy-plane , in angle measure instead of radian measure @@ -305,4 +309,35 @@ information that comes below. 0.0 0.0 0.0 m 0 0 0 mag 1 1 1 0.5 0.5 0.5 m 1 1 1 mag 1 1 1 ``` - However, this autoset will not be vaild once `STRU` specalize a finite magnetic for any single atom. \ No newline at end of file + However, this autoset will not be vaild once `STRU` specalize a finite magnetic for any single atom. + + - `lambda`: Lagrange multiplier vector for spin constraint method. Can specify one value (z-component) or three values for x, y, z components (e.g., `lambda 0.5` or `lambda 0.1 0.2 0.3`). Values are in eV and will be converted to Rydberg internally. Used with spin-constrained DFT (enable with `sc_mag_switch` in INPUT file). + + - `sc`: set the spin constraint target magnetization for each atom. Can specify one value (z-component) or three values for x, y, z components (e.g., `sc 1.0` or `sc 0.5 0.5 1.0`). Used with spin-constrained DFT (enable with `sc_mag_switch` in INPUT file). + +### Important Notes for ATOMIC_POSITIONS + +1. **Coordinate System Selection**: Choose the appropriate coordinate system based on your needs: + - Use `Direct` for fractional coordinates (most common for periodic systems) + - Use `Cartesian_angstrom` when working with molecular structures or experimental data + - Use centered coordinate systems (`Cartesian_angstrom_center_xy/xz/yz/xyz`) for surface or slab calculations where you want to center the structure + +2. **Magnetization Settings**: + - For collinear calculations (`nspin=2`), only specify one magnetization value per atom + - For non-collinear calculations (`nspin=4`), you can specify: + - Three components directly: `mag 1.0 0.0 0.0` (mx, my, mz) + - Magnitude with angles: `mag 1.0 angle1 90 angle2 0` (magnitude, polar angle, azimuthal angle) + - If no magnetization is specified for any atom, ABACUS will automatically set default values (1.0 for nspin=2, or (1,1,1) for nspin=4) + +3. **Movement Constraints**: + - Use `m 1 1 1` to allow the atom to move freely in all directions during relaxation + - Use `m 0 0 0` to fix the atom completely + - Use `m 1 0 1` to allow movement only in x and z directions (useful for constraining surface atoms) + +4. **Keyword Order**: The optional keywords (m, v, mag, angle1, angle2, lambda, sc) can appear in any order after the atomic coordinates, but each keyword should only appear once per atom. + +5. **Common Mistakes to Avoid**: + - Don't mix Direct and Cartesian coordinates in the same STRU file + - Ensure the number of atoms specified matches the actual number of coordinate lines provided + - When using vector magnetization (`mag x y z`), don't also specify angles for the same atom + - Remember that angles are in degrees, not radians \ No newline at end of file diff --git a/docs/advanced/install.md b/docs/advanced/install.md index efd624db8b..fb237625a2 100644 --- a/docs/advanced/install.md +++ b/docs/advanced/install.md @@ -55,6 +55,17 @@ Similarly, DeePMD-kit supports PyTorch backend but its libraries are placed at a cmake -B build -DDeePMD_DIR=/dir_to_deepmd-kit -DTorch_DIR=/dir_to_pytorch ``` +## Build with NEP +This interface enables running MD simulations with the NEP model. It requires the [NEP_CPU](https://github.com/brucefan1983/NEP_CPU) library, which can be easily installed using toolchain as shown below: +```bash +./install_abacus_toolchain.sh --with-nep=install +``` + +To build ABACUS: +```bash +cmake -B build -DNEP_DIR=/path/to/nep_cpu +``` + ## Build with LibRI and LibComm The new EXX implementation depends on two external libraries: diff --git a/docs/advanced/interface/TB2J.md b/docs/advanced/interface/TB2J.md index 8a2d731557..2848d4b573 100644 --- a/docs/advanced/interface/TB2J.md +++ b/docs/advanced/interface/TB2J.md @@ -66,7 +66,6 @@ out_mul 1 #Parameters (4.Relaxation) ks_solver genelpa scf_nmax 200 -out_bandgap 0 #Parameters (5.LCAO) basis_type lcao diff --git a/docs/advanced/interface/ase.md b/docs/advanced/interface/ase.md index 1ec0b67475..e9b7b06280 100644 --- a/docs/advanced/interface/ase.md +++ b/docs/advanced/interface/ase.md @@ -2,95 +2,106 @@ ## Introduction -[ASE](https://wiki.fysik.dtu.dk/ase/) (Atomic Simulation Environment) provides a set of Python tools for setting, running, and analysing atomic simulations. We have developed an ABACUS calculator ([ase-abacus](https://gitlab.com/1041176461/ase-abacus )) to be used together with the ASE tools, which exists as an external project with respect to ASE and is maintained by ABACUS developers. +[ASE](https://wiki.fysik.dtu.dk/ase/) (Atomic Simulation Environment) performs as a powerful Pythonic platform for atomistic simulations, in which there are plenty of functionalties supported, such as various geometry optimization algorithms for finding both the minimum energy point and the transition states, including BFGS, BFGSLineSearch, FIRE, NEB, AUTO-NEB, etc, and various molecular dynamics techniques, including thermostats (Langevin, CSVR, Nose-Hoover Chain, etc) and metadynamics (via the interface with Plumed). + +Due to the growing number of softwares and machine-learning forcefields, we turn to maintain the interface with ASE by our own, while a legacy version of ASE interface can still be found at [our GitLab repository of ase-abacus](https://gitlab.com/1041176461/ase-abacus ). ## Installation -```bash -git clone https://gitlab.com/1041176461/ase-abacus.git -cd ase-abacus -pip install . -``` +We strongly recommend you create a virtual environment for the installation of Python packages of abacus, such as `conda` or `venv`, to avoid conflicts with other packages, for example, with the `conda`: -Another direct way: ```bash -pip install git+https://gitlab.com/1041176461/ase-abacus.git +conda create -n abacus python=3.10 +conda activate abacus ``` -## Environment variables - -[ABACUS](http://abacus.ustc.edu.cn) supports two types of basis sets: PW, LCAO. The path of pseudopotential and numerical orbital files can be set throught the environment variables `ABACUS_PP_PATH` and `ABACUS_ORBITAL_PATH`, respectively, e.g.: +Then, install the ASE interface by: ```bash - PP=${HOME}/pseudopotentials - ORB=${HOME}/orbitals - export ABACUS_PP_PATH=${PP} - export ABACUS_ORBITAL_PATH=${ORB} +cd interfaces/ASE_interface +pip install . ``` - -For PW calculations, only `ABACUS_PP_PATH` is needed. For LCAO calculations, both `ABACUS_PP_PATH` and `ABACUS_ORBITAL_PATH` should be set. - -Also, one can manally set the paths of PP and ORB when using ABACUS calculator in ASE. ## ABACUS Calculator -The default initialization command for the ABACUS calculator is +Present calculator implementation requires a "profile" to act as an interface between the Python runtime and the file system. +Instantiate an `AbacusProfile` object with proper settings: ```python -from ase.calculators.abacus import Abacus +from abacuslite import AbacusProfile +aprof = AbacusProfile( + command='mpirun -np 4 abacus', + omp_num_threads=1, + pseudo_dir='/path/to/folder/of/pseudopotentials', + orbital_dir='/path/to/folder/of/orbitals', # OPTIONAL! +) ``` +, by such lines, you build the interface between the computational environment and the Python runtime. +This interface can be reused in multiple calculations. -In order to run a calculation, you have to ensure that at least the following parameters are specified, either in the initialization or as environment variables: - -|keyword |description -|:---------------|:---------------------------------------------------------- -|`pp` |dict of pseudopotentials for involved elememts,
such as `pp={'Al':'Al_ONCV_PBE-1.0.upf',...}`. -|`pseudo_dir` |directory where the pseudopotential are located,
Can also be specified with the `ABACUS_PP_PATH`
environment variable. Default: `pseudo_dir=./`. -|`basis` |dict of orbital files for involved elememts, such as
`basis={'Al':'Al_gga_10au_100Ry_4s4p1d.orb'}`.
It must be set if you want to do LCAO
calculations. But for pw calculations, it can be omitted. -|`basis_dir` |directory where the orbital files are located,
Can also be specified with the `ABACUS_ORBITAL_PATH`
environment variable. Default: `basis_dir=./`. -|`xc` |which exchange-correlation functional is used.
An alternative way to set this parameter is via
seting `dft_functional` which is an ABACUS
parameter used to specify exchange-correlation
functional -|`kpts` |a tuple (or list) of 3 integers `kpts=(int, int, int)`,
it is interpreted as the dimensions of a Monkhorst-Pack
grid, when `kmode` is `Gamma` or `MP`. It is
interpreted as k-points, when `kmode` is `Direct`,
`Cartesian` or `Line`, and `knumber` should also
be set in these modes to denote the number of k-points.
Some other parameters for k-grid settings:
including `koffset` and `kspacing`. - -For more information on pseudopotentials and numerical orbitals, please visit [ABACUS]. The elaboration of input parameters can be found [here](../input_files/input-main.md). +Then, you can instantiate the `Abacus` calculator with the profile by: +```python +from abacuslite import Abacus +abacus = Abacus( + profile=aprof, + directory='/path/to/work/directory', + pseudopotentials={ + 'Si': 'Si_ONCV_PBE-1.0.upf', + }, + basissets={ + 'Si': 'Si_gga_8au_100Ry_2s2p1d.orb', + }, + inp={ + 'calculation': 'scf', + 'nspin': 1, + 'basis_type': 'lcao', + 'ks_solver': 'genelpa', + 'ecutwfc': 100, + 'symmetry': 1, + 'kspacing': 0.1 + } +) +``` +, where except the `directory`, you can focus on the setting of ABACUS itself. In `inp`, you can set everything as you do in INPUT file of ABACUS. The kpoint sampling can also be set by the `kpts` parameter, like: -The input parameters can be set like:: ```python - # for ABACUS calculator - calc = Abacus(profile=profile, - ecutwfc=100, - scf_nmax=100, - smearing_method='gaussian', - smearing_sigma=0.01, - basis_type='pw', - ks_solver='dav', - calculation='scf', - pp=pp, - basis=basis, - kpts=kpts) +abacus = Abacus( + # all other parameters + kpts={ + 'mode': 'mp-sampling', + 'gamma-centered': True, + 'nk': (4, 4, 4), + 'kshift': (0, 0, 0), + } +) ``` -The command to run jobs can be set by specifying `AbacusProfile`:: +If with the `tempfile` module, you can create an abacus instance whose directory will be automatically removed when leaves from the context: ```python - from ase.calculators.abacus import AbacusProfile - # for OpenMP setting inside python env - import os - os.environ("OMP_NUM_THREADS") = 1 - # for MPI setting used in abacus - mpi_num = 4 - # for ABACUS Profile - abacus = '/usr/local/bin/abacus' # specify abacus exec - profile = AbacusProfile(command=f'mpirun -n {mpi_num} {abacus}') # directly the command for running ABACUS +import tempfile +with tempfile.TemporaryDirectory() as tmpdir: + abacus = Abacus( + profile=aprof, + directory=tmpdir, + pseudopotentials={ + 'Si': 'Si_ONCV_PBE-1.0.upf', + }, + basissets={ + 'Si': 'Si_gga_8au_100Ry_2s2p1d.orb', + }, + inp={ + # the rest of input parameters + } + ) ``` -in which `abacus` sets the absolute path of the `abacus` executable. - -## MD Analysis -After molecular dynamics calculations, the log file `running_md.log` can be read. If the 'STRU_MD_*' files are not continuous (e.g. 'STRU_MD_0', 'STRU_MD_5', 'STRU_MD_10'...), the index parameter of read should be as a slice object. For example, when using the command `read('running_md.log', index=slice(0, 15, 5), format='abacus-out')` to parse 'running_md.log', 'STRU_MD_0', 'STRU_MD_5' and 'STRU_MD_10' will be read. +## Perform Calculations -The `MD_dump` file is also supported to be read-in by `read('MD_dump', format='abacus-md')` +In the new implementation, we limit the range of functionalties supported to mainly include the necessary ones, such as the SCF calculation, the energy and force/stress evaluation. The other features, such as starting the molecule dynamics directly in ABACUS from Python, is not supported anymore. Instead, it is encouraged to use the ASE tools to perform the molecule dynamics. +Please read the examples in `interfaces/ASE_interface/examples/` for more details. ## SPAP Analysis diff --git a/docs/advanced/interface/index.rst b/docs/advanced/interface/index.rst index 99d656885f..6622e821b7 100644 --- a/docs/advanced/interface/index.rst +++ b/docs/advanced/interface/index.rst @@ -6,6 +6,7 @@ Interfaces to Other Softwares :maxdepth: 1 :caption: Examples + pyabacus deepks dpgen deeph diff --git a/docs/advanced/interface/pyabacus.md b/docs/advanced/interface/pyabacus.md new file mode 100644 index 0000000000..ffe32d4350 --- /dev/null +++ b/docs/advanced/interface/pyabacus.md @@ -0,0 +1,313 @@ +# PyABACUS + +PyABACUS is the official Python interface for ABACUS, providing a convenient way to run DFT calculations directly from Python scripts. + +## Installation + +### From Source (Recommended) + +```bash +cd /path/to/abacus-develop/python/pyabacus +pip install -e . +``` + +### With C++ Driver Support + +For full functionality including direct library calls (faster than subprocess), build ABACUS with Python bindings: + +```bash +cmake -B build -DENABLE_PYABACUS=ON -DENABLE_LCAO=ON +cmake --build build -j8 +pip install -e python/pyabacus +``` + +**Note:** The `pyabacus` package on PyPI is a different project and is NOT related to ABACUS. Please install from source as shown above. + +## Quick Start + +### Basic SCF Calculation + +```python +import pyabacus + +# Run calculation from a directory containing INPUT, STRU, KPT files +result = pyabacus.abacus("./Si_scf/") + +# Check results +print(f"Converged: {result.converged}") +print(f"Total energy: {result.etot_ev:.6f} eV") +print(result.summary()) +``` + +### Calculate Forces and Stress + +```python +result = pyabacus.abacus( + "./Si_relax/", + calculate_force=True, + calculate_stress=True, +) + +# Access forces (in eV/Angstrom) +if result.has_forces: + forces = result.forces_ev_ang + print(f"Max force: {forces.max():.6f} eV/Ang") + +# Access stress tensor (in kbar) +if result.has_stress: + print(f"Stress tensor:\n{result.stress}") +``` + +### Parallel Calculation + +```python +# Run with MPI and OpenMP parallelization +result = pyabacus.abacus( + "./Si_scf/", + nprocs=4, # 4 MPI processes (mpirun -np 4) + nthreads=2, # 2 OpenMP threads (OMP_NUM_THREADS=2) +) +``` + +This is equivalent to running: +```bash +OMP_NUM_THREADS=2 mpirun -np 4 abacus +``` + +### Silent Mode + +```python +# Run without output +result = pyabacus.abacus("./Si_scf/", verbosity=0) +``` + +## API Reference + +### `pyabacus.abacus()` + +Main function for running ABACUS calculations. + +```python +def abacus( + input_dir: str = None, + *, + input_file: str = None, + stru_file: str = None, + kpt_file: str = None, + pseudo_dir: str = None, + orbital_dir: str = None, + output_dir: str = None, + calculate_force: bool = True, + calculate_stress: bool = False, + verbosity: int = 1, + nprocs: int = 1, + nthreads: int = 1, +) -> CalculationResult +``` + +**Parameters:** + +| Parameter | Type | Default | Description | +|-----------|------|---------|-------------| +| `input_dir` | str | `"."` | Directory containing INPUT, STRU, KPT files | +| `input_file` | str | None | Explicit path to INPUT file | +| `stru_file` | str | None | Explicit path to STRU file | +| `kpt_file` | str | None | Explicit path to KPT file | +| `pseudo_dir` | str | None | Directory containing pseudopotentials | +| `orbital_dir` | str | None | Directory containing orbital files (LCAO) | +| `output_dir` | str | `"OUT.PYABACUS"` | Directory for output files | +| `calculate_force` | bool | True | Whether to calculate forces | +| `calculate_stress` | bool | False | Whether to calculate stress tensor | +| `verbosity` | int | 1 | Output level (0=silent, 1=normal, 2=verbose) | +| `nprocs` | int | 1 | Number of MPI processes | +| `nthreads` | int | 1 | Number of OpenMP threads | + +**Returns:** `CalculationResult` object + +### `CalculationResult` + +Container for calculation results. + +**Attributes:** + +| Attribute | Type | Description | +|-----------|------|-------------| +| `converged` | bool | Whether SCF converged | +| `niter` | int | Number of SCF iterations | +| `drho` | float | Final charge density difference | +| `etot` | float | Total energy (Ry) | +| `etot_ev` | float | Total energy (eV) | +| `forces` | ndarray | Forces on atoms (nat, 3) in Ry/Bohr | +| `forces_ev_ang` | ndarray | Forces in eV/Angstrom | +| `stress` | ndarray | Stress tensor (3, 3) in kbar | +| `fermi_energy` | float | Fermi energy (eV) | +| `bandgap` | float | Band gap (eV) | +| `nat` | int | Number of atoms | +| `ntype` | int | Number of atom types | +| `nbands` | int | Number of bands | +| `nks` | int | Number of k-points | +| `output_dir` | str | Path to output directory (OUT.$suffix) | +| `log_file` | str | Path to the main log file | +| `output_files` | dict | Dictionary of output files (filename -> path) | + +**Methods:** + +| Method | Description | +|--------|-------------| +| `summary()` | Return a formatted summary string | +| `energies` | Dictionary of all energy components | +| `has_forces` | Whether forces are available | +| `has_stress` | Whether stress is available | +| `has_output_dir` | Whether output directory exists | +| `get_output_file(name)` | Get full path to specific output file | +| `list_output_files()` | List all output file names | + +## Output File Tracking + +PyABACUS automatically tracks output files generated during calculations: + +```python +result = pyabacus.abacus("./Si_scf/") + +# Check output directory +print(f"Output directory: {result.output_dir}") +print(f"Log file: {result.log_file}") + +# List all output files +print("Output files:") +for filename in result.list_output_files(): + print(f" {filename}") + +# Get path to specific file +bands_file = result.get_output_file("BANDS_1.dat") +if bands_file: + # Read and process band structure data + import numpy as np + bands = np.loadtxt(bands_file) +``` + +### Common Output Files + +| File | Description | +|------|-------------| +| `running_scf.log` | Main calculation log | +| `BANDS_1.dat` | Band structure data | +| `PDOS` | Projected density of states | +| `CHARGE.cube` | Charge density in cube format | +| `SPIN1_CHG.cube` | Spin-up charge density | +| `SPIN2_CHG.cube` | Spin-down charge density | +| `istate.info` | Band eigenvalues and occupations | +| `kpoints` | K-point information | + +## Convenience Functions + +### `run_scf()` + +Alias for `abacus()` with default SCF parameters: + +```python +result = pyabacus.run_scf("./Si_scf/") +``` + +### `run_relax()` + +Alias for `abacus()` with force calculation enabled: + +```python +result = pyabacus.run_relax("./Si_relax/") +``` + +## Examples + +### Energy vs. Lattice Constant + +```python +import pyabacus +import numpy as np + +lattice_constants = np.linspace(5.0, 5.5, 11) +energies = [] + +for a in lattice_constants: + # Modify STRU file with new lattice constant + # ... (file modification code) + + result = pyabacus.abacus("./Si_eos/", verbosity=0) + energies.append(result.etot_ev) + +# Plot equation of state +import matplotlib.pyplot as plt +plt.plot(lattice_constants, energies, 'o-') +plt.xlabel("Lattice constant (Ang)") +plt.ylabel("Energy (eV)") +plt.savefig("eos.png") +``` + +### Parallel Batch Calculations + +```python +import pyabacus +from pathlib import Path + +# Run calculations for multiple systems with parallelization +systems = ["Si", "Ge", "C"] +results = {} + +for system in systems: + input_dir = Path(f"./{system}_scf/") + if input_dir.exists(): + result = pyabacus.abacus( + str(input_dir), + nprocs=4, + nthreads=2, + ) + results[system] = { + "energy": result.etot_ev, + "converged": result.converged, + "bandgap": result.bandgap, + } + +# Print summary +for system, data in results.items(): + print(f"{system}: E={data['energy']:.4f} eV, gap={data['bandgap']:.2f} eV") +``` + +## Troubleshooting + +### ABACUS executable not found + +If you see "ABACUS executable not found", ensure: +1. ABACUS is installed and in your PATH +2. Or build with C++ driver support (see Installation) + +### MPI not found + +If you see "mpirun/mpiexec not found" when using `nprocs > 1`: +1. Install MPI (OpenMPI or MPICH) +2. Ensure `mpirun` or `mpiexec` is in your PATH +3. Or set `nprocs=1` to run without MPI + +### Import errors + +If `import pyabacus` fails: +1. Ensure pyabacus is installed: `pip install pyabacus` +2. Check Python version compatibility (Python 3.8+) + +### Calculation not converging + +Check the log file for details: +```python +result = pyabacus.abacus("./problem_case/") +if not result.converged: + log_path = result.get_output_file("running_scf.log") + if log_path: + with open(log_path) as f: + print(f.read()[-2000:]) # Print last 2000 chars +``` + +### Forces or stress not available + +Forces and stress are parsed from the ABACUS output log. Ensure: +1. `cal_force` is set in your INPUT file for forces +2. `cal_stress` is set in your INPUT file for stress +3. The calculation completed successfully diff --git a/docs/advanced/md.md b/docs/advanced/md.md index 374eaa3d6b..56b7072cc6 100644 --- a/docs/advanced/md.md +++ b/docs/advanced/md.md @@ -87,4 +87,8 @@ ABACUS performs the [Multi-Scale Shock Technique (MSST) integration](https://jou Compiling ABACUS with [DeePMD-kit](https://github.com/deepmodeling/deepmd-kit), MD calculations based on machine learning DP model is enabled. To employ DPMD calculations, [esolver_type](./input_files/input-main.md#esolver_type) should be set to `dp`. -And the filename of DP model is specified by keyword [pot_file](./input_files/input-main.md#pot_file). \ No newline at end of file +And the filename of DP model is specified by keyword [pot_file](./input_files/input-main.md#pot_file). + +## NEP + +If ABACUS is compiled with the Neuroevolution Potential ([NEP](https://gpumd.org/potentials/nep.html)), MD simulations using NEP models are enabled. To use this feature, set [esolver_type](./input_files/input-main.md#esolver_type) to `nep` and specify the potential file path with the [pot_file](./input_files/input-main.md#pot_file) keyword in your INPUT file. \ No newline at end of file diff --git a/docs/advanced/opt.md b/docs/advanced/opt.md index 9c2023b655..4f0bdf32a0 100644 --- a/docs/advanced/opt.md +++ b/docs/advanced/opt.md @@ -2,41 +2,76 @@ By setting `calculation` to be `relax` or `cell-relax`, ABACUS supports structural relaxation and variable-cell relaxation. -Current implementation of variable-cell relaxation in ABACUS now follows a nested procedure: fixed cell structural relaxation will be performed, followed by an update of the cell parameters, and the process is repeated until convergence is achieved. +ABACUS provides two implementations for variable-cell relaxation, controlled by the [relax_new](./input_files/input-main.md#relax_new) parameter: -An example of the variable cell relaxation can be found in our [repository](https://github.com/deepmodeling/abacus-develop/tree/develop/examples/relax/pw_al), which is provided with the reference output file log.ref. Note that in log.ref, each ionic step is labelled in the following manner: +- **New implementation** (`relax_new = True`, default since v3.8): Uses a simultaneous conjugate gradient (CG) optimization for both ionic positions and cell parameters. Both degrees of freedom are optimized together in each step. + +- **Old implementation** (`relax_new = False`): Follows a nested procedure where fixed-cell structural relaxation is performed first, followed by an update of the cell parameters, and the process is repeated until convergence is achieved. + +An example of the variable cell relaxation can be found in our [repository](https://github.com/deepmodeling/abacus-develop/tree/develop/examples/relax/pw_al), which is provided with the reference output file log.ref. When using the old implementation (`relax_new = False`), each ionic step is labelled in the following manner: ``` ------------------------------------------- RELAX CELL : 3 RELAX IONS : 1 (in total: 15) ------------------------------------------- -``` +``` indicating that this is the first ionic step of the 3rd cell configuration, and it is the 15-th ionic step in total. ## Optimization Algorithms -In the nested procedure mentioned above, we used CG method to perform cell relaxation, while offering four different algorithms for doing fixed-cell structural relaxation: BFGS, SD(steepest descent), CG(conjugate gradient), as well as a mixed CG-BFGS method. The optimziation algorithm can be selected using keyword [relax_method](./input_files/input-main.md#relax_method). We also provide a [list of keywords](./input_files/input-main.md#geometry-relaxation) for controlling the relaxation process. + +ABACUS offers multiple optimization algorithms for structural relaxation, which can be selected using the [relax_method](./input_files/input-main.md#relax_method) keyword. The available algorithms and their behavior depend on the [relax_new](./input_files/input-main.md#relax_new) setting: + +### Algorithm Availability + +**New implementation** (`relax_new = True`, default): +- **CG (Conjugate Gradient)**: Simultaneous optimization of both ionic positions and cell parameters using CG with line search. This is the only algorithm available for the new implementation. + +**Old implementation** (`relax_new = False`): +- **CG (Conjugate Gradient)**: For ionic relaxation; CG is also used for cell parameter optimization in the nested procedure +- **BFGS**: Quasi-Newton method for ionic relaxation +- **LBFGS**: Limited-memory BFGS for ionic relaxation +- **SD (Steepest Descent)**: Simple gradient descent for ionic relaxation +- **CG-BFGS**: Mixed method that starts with CG and switches to BFGS when force convergence reaches the threshold set by [relax_cg_thr](./input_files/input-main.md#relax_cg_thr) + +We also provide a [list of keywords](./input_files/input-main.md#geometry-relaxation) for controlling the relaxation process. ### BFGS method -The [BFGS method](https://en.wikipedia.org/wiki/Broyden%E2%80%93Fletcher%E2%80%93Goldfarb%E2%80%93Shanno_algorithm) is a quasi-Newton method for solving nonlinear optimization problem. It belongs to the class of quasi-Newton method where the Hessian matrix is approximated during the optimization process. If the initial point is not far from the extrema, BFGS tends to work better than gradient-based methods. +The [BFGS method](https://en.wikipedia.org/wiki/Broyden%E2%80%93Fletcher%E2%80%93Goldfarb%E2%80%93Shanno_algorithm) is a quasi-Newton method for solving nonlinear optimization problems. It belongs to the class of quasi-Newton methods where the Hessian matrix is approximated during the optimization process. If the initial point is not far from the extrema, BFGS tends to work better than gradient-based methods. + +**Note**: BFGS is only available with the old implementation (`relax_new = False`). + +ABACUS provides two BFGS implementations, controlled by the second element of [relax_method](./input_files/input-main.md#relax_method): + +- **Default BFGS** (`relax_method = bfgs 2` or `relax_method = bfgs`): Updates the inverse of the approximate Hessian matrix B directly. This is the recommended implementation. -There is an alternative traditional BFGS method, which can be called by using the keyword 'bfgs_trad'. The bfgs_trad method is a quasi-Newton method that substitute an approximate matrix B for the Hessian matrix. The main difference between 'bfgs' and 'bfgs_trad' is that 'bfgs' updates the inverse of matrix B while 'bfgs_trad' updates matrix B and obtains the inverse of B by solving the matrix eigenvalues and taking the reciprocal of the eigenvalues. Both methods are mathematically equivalent, but in some cases, 'bfgs_trad' performs better. +- **Traditional BFGS** (`relax_method = bfgs 1`): Updates the approximate Hessian matrix B itself, then obtains the inverse by solving matrix eigenvalues and taking their reciprocals. Both methods are mathematically equivalent, but in some cases the traditional variant may perform better. -In ABACUS, we implemented the BFGS method for doing fixed-cell structural relaxation. Users can choose which implementation of BFGS to call by adding the 'bfgs_trad' or 'bfgs' parameter. +### LBFGS method + +The [L-BFGS (Limited-memory BFGS)](https://en.wikipedia.org/wiki/Limited-memory_BFGS) method is a memory-efficient variant of BFGS that stores only a few vectors representing the Hessian approximation instead of the full matrix. This makes it particularly suitable for large systems with many atoms. + +**Note**: LBFGS is only available with the old implementation (`relax_new = False`). Set `relax_method = lbfgs` to use this method. ### SD method -The [SD (steepest descent) method](https://en.wikipedia.org/wiki/Gradient_descent) is one of the simplest first-order optimization methods, where in each step the motion is along the direction of the gradient, where the function descents the fastest. +The [SD (steepest descent) method](https://en.wikipedia.org/wiki/Gradient_descent) is one of the simplest first-order optimization methods, where in each step the motion is along the direction of the gradient, where the function descends the fastest. + +**Note**: SD is only available with the old implementation (`relax_new = False`). -In practice, SD method may take many iterations to converge, and is generally not used. +In practice, the SD method may take many iterations to converge, and is generally not recommended for production calculations. ### CG method The [CG (conjugate gradient) method](https://en.wikipedia.org/wiki/Conjugate_gradient_method) is one of the most widely used methods for solving optimization problems. -In ABACUS, we implemented the CG method for doing fixed-cell structural relaxation as well as the optimization of cell parameters. +ABACUS provides two implementations of the CG method: + +- **New CG implementation** (`relax_new = True`, default): Performs simultaneous optimization of both ionic positions and cell parameters using a line search algorithm. This implementation is more efficient for `cell-relax` calculations as it optimizes all degrees of freedom together. The step size can be controlled by [relax_scale_force](./input_files/input-main.md#relax_scale_force). + +- **Old CG implementation** (`relax_new = False`): Uses a nested procedure where ionic positions are optimized first using CG, followed by cell parameter optimization (also using CG) in `cell-relax` calculations. This is the traditional approach where the two optimization steps are separated. ## Constrained Optimization @@ -71,7 +106,26 @@ then the first Al atom will not be allowed to move in z direction. Fixing atomic position is sometimes helpful during relaxation of isolated molecule/cluster, to prevent the system from drifting in space. ### Fixing Cell Parameters -Sometimes we want to do variable-cell relaxation with some of the cell degrees of freedom fixed. This is achieved by keywords such as [fixed_axes](./input_files/input-main.md#fixed_axes), [fixed_ibrav](./input_files/input-main.md#fixed_ibrav) and [fixed_atoms](./input_files/input-main.md#fixed_atoms). Specifically, if users are familiar with the `ISIF` option from VASP, then we offer the following correspondence: + +Sometimes we want to do variable-cell relaxation with some of the cell degrees of freedom fixed. This is achieved by keywords such as [fixed_axes](./input_files/input-main.md#fixed_axes), [fixed_ibrav](./input_files/input-main.md#fixed_ibrav) and [fixed_atoms](./input_files/input-main.md#fixed_atoms). + +**Available constraints by implementation:** + +- **New implementation** (`relax_new = True`): + - `fixed_axes = "shape"`: Only allows volume changes (hydrostatic pressure), cell shape is fixed + - `fixed_axes = "volume"`: Allows shape changes but keeps volume constant + - `fixed_axes = "a"`, `"b"`, `"c"`, etc.: Fix specific lattice vectors or combinations + - `fixed_ibrav = True`: Maintain the Bravais lattice type during relaxation + +- **Old implementation** (`relax_new = False`): + - **All `fixed_axes` options now supported**: "shape", "volume", "a", "b", "c", "ab", "ac", "bc", "abc" + - **`fixed_ibrav` now supported**: Maintains Bravais lattice type during relaxation + - Can combine `fixed_axes` with `fixed_ibrav` for constrained relaxation + - **Implementation approach**: Uses post-update constraint enforcement (volume rescaling and lattice reconstruction after each CG step) + +**VASP ISIF correspondence:** + +If you are familiar with the `ISIF` option from VASP, here is the correspondence: - ISIF = 0 : calculation = "relax" - ISIF = 1, 2 : calculation = "relax", cal_stress = 1 @@ -79,7 +133,7 @@ Sometimes we want to do variable-cell relaxation with some of the cell degrees o - ISIF = 4 : calculation = "cell-relax", fixed_axes = "volume" - ISIF = 5 : calculation = "cell-relax", fixed_axes = "volume", fixed_atoms = True - ISIF = 6 : calculation = "cell-relax", fixed_atoms = True -- ISIF = 7 : calculation = "cell-realx", fixed_axes = "shape", fixed_atoms = True +- ISIF = 7 : calculation = "cell-relax", fixed_axes = "shape", fixed_atoms = True ### Stop Geometry Optimization Manually diff --git a/docs/advanced/output_files/running_scf.log.md b/docs/advanced/output_files/running_scf.log.md index 64c2ed401f..07d16a4f54 100644 --- a/docs/advanced/output_files/running_scf.log.md +++ b/docs/advanced/output_files/running_scf.log.md @@ -1249,9 +1249,9 @@ TIME STATISTICS Grid_Driver Find_atom 0.03 792 0.00 0.01 LCAO_domain grid_prepare 0.00 1 0.00 0.00 Veff initialize_HR 0.00 1 0.00 0.00 - OverlapNew initialize_SR 0.00 1 0.00 0.00 - EkineticNew initialize_HR 0.00 1 0.00 0.00 - NonlocalNew initialize_HR 0.00 1 0.00 0.00 + Overlap initialize_SR 0.00 1 0.00 0.00 + Ekinetic initialize_HR 0.00 1 0.00 0.00 + Nonlocal initialize_HR 0.00 1 0.00 0.00 Charge set_rho_core 0.14 1 0.14 0.03 PW_Basis_Sup recip2real 3.44 122 0.03 0.69 PW_Basis_Sup gathers_scatterp 1.72 122 0.01 0.34 @@ -1279,12 +1279,12 @@ TIME STATISTICS Gint_interface cal_gint_vlocal 114.33 17 6.73 22.83 Gint_Tools cal_psir_ylm 82.79 272000 0.00 16.53 Gint_k transfer_pvpR 3.98 17 0.23 0.79 - OverlapNew calculate_SR 0.67 1 0.67 0.13 - OverlapNew contributeHk 0.06 17 0.00 0.01 - EkineticNew contributeHR 0.67 17 0.04 0.13 - EkineticNew calculate_HR 0.67 1 0.67 0.13 - NonlocalNew contributeHR 0.49 17 0.03 0.10 - NonlocalNew calculate_HR 0.45 1 0.45 0.09 + Overlap calculate_SR 0.67 1 0.67 0.13 + Overlap contributeHk 0.06 17 0.00 0.01 + Ekinetic contributeHR 0.67 17 0.04 0.13 + Ekinetic calculate_HR 0.67 1 0.67 0.13 + Nonlocal contributeHR 0.49 17 0.03 0.10 + Nonlocal calculate_HR 0.45 1 0.45 0.09 OperatorLCAO contributeHk 0.09 17 0.01 0.02 HSolverLCAO hamiltSolvePsiK 90.50 17 5.32 18.07 ElecStateLCAO psiToRho 132.45 17 7.79 26.45 diff --git a/docs/advanced/pp_orb.md b/docs/advanced/pp_orb.md index 953ddc85aa..06a5f1292b 100644 --- a/docs/advanced/pp_orb.md +++ b/docs/advanced/pp_orb.md @@ -65,7 +65,57 @@ $$ ## Pseudopotentials ### Supported formats -ABACUS supports both norm-conserving and ultrasoft pseudopotentials. For norm-conserving pseudopotentials, UPF, UPF2, VWR, and BLPS formats are supported. For ultrasoft pseudopotentials, UPF and UPF2 formats are supported. +ABACUS supports both norm-conserving and ultrasoft pseudopotentials. For norm-conserving pseudopotentials, UPF, UPF2, VWR, and BLPS formats are supported. For ultrasoft pseudopotentials, UPF and UPF2 formats are supported. + +### Pseudopotentials for SOC Calculations + +When performing spin-orbit coupling (SOC) calculations with `lspinorb=1`, specific pseudopotential requirements must be met: + +#### Identifying SOC Pseudopotentials + +Full-relativistic pseudopotentials suitable for SOC calculations can be identified by checking the UPF file header (`PP_HEADER` section): + +```xml + +``` + +- **`relativistic="full"`**: Indicates a full-relativistic pseudopotential +- **`has_so="T"` or `has_so="1"`**: Indicates SOC information is included in the pseudopotential + +#### Usage Rules + +1. **SOC calculations** (`lspinorb=1`): + - **Required**: Full-relativistic pseudopotentials with `has_so=true` + - **Error if not met**: "no soc upf used for lspinorb calculation" + +2. **Non-SOC calculations** (`lspinorb=0`): + - **Flexible**: Can use either scalar-relativistic (`relativistic="scalar"`) or full-relativistic pseudopotentials + - **Automatic conversion**: If full-relativistic PP is used, ABACUS automatically transforms it to scalar-relativistic version + +3. **Ultrasoft pseudopotentials (USPP)**: + - **Constraint**: Full-relativistic USPP must be used with `lspinorb=true` + - **Warning if violated**: "FR-USPP please use lspinorb=.true." + +#### Validation by ABACUS + +ABACUS performs automatic validation when reading pseudopotentials: +- Checks if `lspinorb=1` but pseudopotential has `has_so=false` → terminates with error +- Checks if full-relativistic USPP is used without `lspinorb=1` → shows warning +- Automatically averages SOC-related beta functions when `lspinorb=0` + +#### Where to Find SOC Pseudopotentials + +For SOC calculations, download full-relativistic pseudopotentials from: +- **SG15_ONCV**: [quantum-simulation.org](http://quantum-simulation.org/potentials/sg15_oncv/upf/) - widely used in ABACUS +- **PseudoDOJO**: [pseudo-dojo.org](http://www.pseudo-dojo.org/) - provides both scalar and full-relativistic versions +- **ABACUS official**: [abacus.ustc.edu.cn](http://abacus.ustc.edu.cn/pseudo/list.htm) - includes both pseudopotentials and numerical atomic orbitals + +For more details on SOC calculations, see [Spin-polarization and SOC](./scf/spin.md#soc-effects). ### Usage For more information about pseudopotential usage, check the `ATOMIC_SPECIES` section in the specification of the [STRU file](./input_files/stru.md). diff --git a/docs/advanced/scf/initialization.md b/docs/advanced/scf/initialization.md index d3ad5e48ed..8332c85b7f 100644 --- a/docs/advanced/scf/initialization.md +++ b/docs/advanced/scf/initialization.md @@ -1,15 +1,17 @@ # Initializing SCF Good initializing would abate the number of iteration steps in SCF. -Charge density should be initialed for constructing the initial hamiltonian operator. +Charge density should be initialed for constructing the initial hamiltonian operator. In PW basis, wavefunction should be initialized for iterate diagonalization method. In LCAO basis, wavefunction can be read to calculate initial charge density. The wavefunction itself does not have to be initialized. ## Charge Density `init_chg` is used for choosing the method of charge density initialization. - - `atomic` : initial charge density by atomic charge density from pseudopotential file under keyword `PP_RHOATOM` + - `atomic` : initial charge density by atomic charge density from pseudopotential file under keyword `PP_RHOATOM` - `file` : initial charge density from files produced by previous calculations with [`out_chg 1`](../elec_properties/charge.md). - `auto`: Abacus first attempts to read the density from a file; if not found, it defaults to using atomic density. + - `dm` (LCAO only): initial charge density from density matrix files in CSR format. For `nspin=1`, reads `dmrs1_nao.csr`. For `nspin=2` (spin-polarized), reads both `dmrs1_nao.csr` (spin-up) and `dmrs2_nao.csr` (spin-down). These files are generated by previous calculations with [`out_dmr 1`](../elec_properties/density_matrix.md). This method is particularly useful for restarting spin-polarized calculations. + - `hr` (LCAO only): initial charge density from Hamiltonian matrix files in CSR format. The Hamiltonian is read from file, then diagonalized to obtain wavefunctions and charge density. For `nspin=1`, reads `hrs1_nao.csr`. For `nspin=2` (spin-polarized), reads both `hrs1_nao.csr` (spin-up) and `hrs2_nao.csr` (spin-down). These files are generated by previous calculations with [`out_mat_hs2 1`](../input_files/input-main.md). ## Wave function `init_wfc` is used for choosing the method of wavefunction coefficient initialization. diff --git a/docs/advanced/scf/spin.md b/docs/advanced/scf/spin.md index e9f8d03a49..1749db156d 100644 --- a/docs/advanced/scf/spin.md +++ b/docs/advanced/scf/spin.md @@ -29,23 +29,24 @@ If **"ocp=1"** and **"ocp_set"** is set in INPUT file, the occupations of states If **"nupdown"** is set to non-zero, number of spin-up and spin-down electrons will be fixed, and Fermi energy level will split to E_Fermi_up and E_Fermi_down. By the way, total magnetization will also be fixed, and will be the value of **"nupdown"**. ## Noncollinear Spin Polarized Calculations -The spin non-collinear polarization calculation corresponds to setting **"noncolin 1"**, in which case the coupling between spin up and spin down will be taken into account. +The spin non-collinear polarization calculation corresponds to setting **"noncolin 1"**, in which case the coupling between spin up and spin down will be taken into account. In this case, nspin is automatically set to 4, which is usually not required to be specified manually. -The weight of each band will not change, but the number of occupied states will be double. +The weight of each band will not change, but the number of occupied states will be double. If the nbands parameter is set manually, it is generally set to twice what it would be when nspin<4. -In general, non-collinear magnetic moment settings are often used in calculations considering [SOC effects](#soc-effects). When **"lspinorb 1"** in INPUT file, "nspin" is also automatically set to 4. +In general, non-collinear magnetic moment settings are often used in calculations considering [SOC effects](#soc-effects). When **"lspinorb 1"** in INPUT file, "nspin" is also automatically set to 4. + Note: different settings for "noncolin" and "lspinorb" correspond to different calculations: - - noncolin=0 lspinorb=0 nspin<4 : -Non-collinear magnetic moments and SOC effects are not considered. - - noncolin=0 lspinorb=0 nspin=4 : -Actualy same as the above setting, but the calculation will be larger. So the setting is not recommended. - - noncolin=1 lspinorb=0 : -Non-collinear magnetic moments are considered but SOC effects are not considered - - noncolin=0 lspinorb=1 : -The SOC effect is considered but the magnetic moment is limited to the Z direction - - noncolin=1 lspinorb=1 : -The SOC effect and non-collinear magnetic moment are both calculated. + +| noncolin | lspinorb | nspin | Effect | When to Use | +|----------|----------|-------|--------|-------------| +| 0 | 0 | <4 | No non-collinear magnetism, no SOC | Standard collinear spin-polarized or non-spin-polarized calculations | +| 0 | 0 | 4 | Same as above, but larger calculation | **Not recommended** - wastes computational resources | +| 1 | 0 | 4 | Non-collinear magnetism WITHOUT SOC | Systems with complex magnetic structures (e.g., spin spirals, frustrated magnets) where SOC is negligible | +| 0 | 1 | 4 | SOC WITH z-axis magnetism only | Non-magnetic materials with SOC (e.g., semiconductors with band splitting), or magnetic materials where magnetism is along z-axis | +| 1 | 1 | 4 | Both SOC AND non-collinear magnetism | Heavy-element magnetic materials where both SOC and non-collinear magnetism are important (e.g., magnetic anisotropy, Dzyaloshinskii-Moriya interaction) | + +**Special case**: `noncolin=0, lspinorb=1` is commonly used for non-magnetic materials with SOC effects (e.g., topological insulators, semiconductors with spin-orbit splitting). In this case, the magnetization is NOT automatically set, implying no magnetic moments in the system. ## For the continuation job - Continuation job for "nspin 1" need file "SPIN1_CHG.cube" which is generated by setting "out_chg=1" in task before. By setting "init_chg file" in new job's INPUT file, charge density will start from file but not atomic. @@ -53,12 +54,12 @@ The SOC effect and non-collinear magnetic moment are both calculated. - Continuation job for "nspin 4" need files "SPIN%s_CHG.cube", where %s in {1,2,3,4}, which are generated by "out_chg 1" with any variable setting leading to 'nspin'=4, and refer to charge densities in Pauli spin matrixes. It should be note that reading charge density files printing by 'nspin'=2 case is supported, which means only $\sigma_{tot}$ and $\sigma_{z}$ are read. # SOC Effects -## SOC +## SOC `lspinorb` is used for control whether or not SOC(spin-orbit coupling) effects should be considered. Both `basis_type=pw` and `basis_type=lcao` support `scf` and `nscf` calculation with SOC effects. -Atomic forces and cell stresses can not be calculated with SOC effects yet. +Atomic forces and cell stresses can be calculated with SOC effects (supported since ABACUS v3.9.0). ## Pseudopotentials and Numerical Atomic Orbitals For Norm-Conserving pseudopotentials, there are differences between SOC version and non-SOC version. @@ -72,9 +73,146 @@ When full-relativistic pseudopotential is used for non-SOC calculation, ABACUS w Numerical atomic orbitals in ABACUS are unrelated with spin, and same orbital file can be used for SOC and non-SOC calculation. ## Partial-relativistic SOC Effect -Sometimes, for some real materials, both scalar-relativistic and full-relativistic can not describe the exact spin-orbit coupling. +Sometimes, for some real materials, both scalar-relativistic and full-relativistic can not describe the exact spin-orbit coupling. Artificial modulation can help for these cases. `soc_lambda`, which has value range [0.0, 1.0] , is used for modulate SOC effect. In particular, `soc_lambda 0.0` refers to scalar-relativistic case and `soc_lambda 1.0` refers to full-relativistic case. +## Pseudopotential Requirements for SOC + +When performing SOC calculations (`lspinorb=1`), specific pseudopotential requirements must be met: + +### Checking Pseudopotential Files + +In the UPF (Unified Pseudopotential Format) file header (`PP_HEADER` section), look for: +- `has_so="T"` or `has_so="1"`: Indicates SOC information is included +- `relativistic="full"`: Indicates full-relativistic pseudopotential + +Example from a full-relativistic UPF file: +``` + +``` + +### Pseudopotential Usage Rules + +1. **For SOC calculations** (`lspinorb=1`): + - **MUST** use full-relativistic pseudopotentials with `has_so=true` + - Code will terminate with error: "no soc upf used for lspinorb calculation" if scalar-relativistic PP is used + +2. **For non-SOC calculations** (`lspinorb=0`): + - Can use either scalar-relativistic or full-relativistic pseudopotentials + - If full-relativistic PP is used, ABACUS automatically transforms it to scalar-relativistic version + +3. **For ultrasoft pseudopotentials (USPP)**: + - Full-relativistic USPP **requires** `lspinorb=true` + - Code will show warning: "FR-USPP please use lspinorb=.true." if this requirement is not met + +### Where to Find SOC Pseudopotentials + +- **SG15_ONCV**: Full-relativistic versions available at [quantum-simulation.org](http://quantum-simulation.org/potentials/sg15_oncv/upf/) +- **PseudoDOJO**: Provides both scalar and full-relativistic versions +- **ABACUS official**: [abacus.ustc.edu.cn](http://abacus.ustc.edu.cn/pseudo/list.htm) + +## Automatic Parameter Settings + +When using SOC or non-collinear calculations, ABACUS automatically adjusts several parameters: + +### When `lspinorb=true`: +1. **nspin**: Automatically set to 4 (noncollinear spin representation) +2. **Symmetry**: Automatically disabled (`symm_flag=-1`) because SOC breaks inversion symmetry +3. **Magnetization**: NOT automatically set when `noncolin=0` (implies non-magnetic material with SOC) + +### When `noncolin=true`: +1. **nspin**: Automatically set to 4 +2. **npol**: Set to 2 (wave function has two spinor components) +3. **Magnetization**: Automatically set if user provides zero values (unless `lspinorb=1` and `noncolin=0`) + +### Important Notes: +- You do NOT need to manually set `nspin=4` when using `lspinorb=1` or `noncolin=1` +- Symmetry operations are incompatible with SOC, so they are automatically turned off +- For `lspinorb=1, noncolin=0`: This is a special case for non-magnetic materials with SOC, where magnetization is not initialized + +## Common Errors and Solutions + +### Error: "no soc upf used for lspinorb calculation" +**Cause**: Using scalar-relativistic pseudopotentials with `lspinorb=1` + +**Solution**: Download and use full-relativistic pseudopotentials with `has_so=true`. Check the UPF file header to verify `relativistic="full"` and `has_so="T"`. + +### Error: "nspin=4(soc or noncollinear-spin) does not support gamma only calculation" +**Cause**: Trying to use `gamma_only=true` with `lspinorb=1` or `noncolin=1` + +**Solution**: Set `gamma_only=false` or `gamma_only=0` in your INPUT file. SOC and non-collinear calculations require k-point sampling beyond the gamma point. + +### Warning: "FR-USPP please use lspinorb=.true." +**Cause**: Using full-relativistic ultrasoft pseudopotentials without enabling SOC + +**Solution**: Set `lspinorb=true` in your INPUT file, or switch to scalar-relativistic USPP if SOC is not needed. + +### Issue: Forces or stresses not calculated +**Note**: This issue has been resolved. Atomic forces and cell stresses can now be calculated with SOC effects (supported since ABACUS v3.9.0). + +If you are using an older version of ABACUS (before v3.9.0), force and stress calculations with SOC were not supported. Please upgrade to the latest version to use this feature. + +## INPUT File Examples + +### Example 1: SOC without Non-collinear Magnetism +For non-magnetic materials with SOC (e.g., GaAs, topological insulators): + +``` +INPUT_PARAMETERS +calculation scf +basis_type pw +ecutwfc 50 +lspinorb 1 # Enable SOC +noncolin 0 # No non-collinear magnetism +# nspin will be automatically set to 4 +# symmetry will be automatically disabled +``` + +### Example 2: Non-collinear Magnetism without SOC +For systems with complex magnetic structures but negligible SOC: + +``` +INPUT_PARAMETERS +calculation scf +basis_type lcao +lspinorb 0 # No SOC +noncolin 1 # Enable non-collinear magnetism +# nspin will be automatically set to 4 +# Magnetization directions should be specified in STRU file +``` + +### Example 3: Both SOC and Non-collinear Magnetism +For heavy-element magnetic materials (e.g., Fe with SOC, materials with DMI): + +``` +INPUT_PARAMETERS +calculation scf +basis_type pw +ecutwfc 60 +lspinorb 1 # Enable SOC +noncolin 1 # Enable non-collinear magnetism +# nspin will be automatically set to 4 +# symmetry will be automatically disabled +# Magnetization directions should be specified in STRU file +``` + +### Example 4: Partial-relativistic SOC +For fine-tuning SOC strength: + +``` +INPUT_PARAMETERS +calculation scf +basis_type pw +ecutwfc 50 +lspinorb 1 # Enable SOC +soc_lambda 0.5 # 50% SOC strength +# Useful when full SOC overestimates or underestimates experimental results +``` diff --git a/docs/community/faq.md b/docs/community/faq.md index df5db1ec5b..1e372a180d 100644 --- a/docs/community/faq.md +++ b/docs/community/faq.md @@ -12,6 +12,12 @@ Users are referred to the introduction of features of ABACUS in the [feature list](http://abacus.ustc.edu.cn/features/list.htm). +**2. How to contact the ABACUS community?** + +Users can contact the ABACUS community by join ABACUS WeChat or QQ group. One can quickly join the QQ group via group ID: 759914681 + +If users have any questions or suggestions, please feel free to contact us in group or by raising issue in GitHub repo. + ## Installation ## Setting up jobs @@ -38,7 +44,23 @@ Non-periodic systems such as liquid systems can be calculated by using supercell **6. How to perform spin-orbital coupling (SOC) calculations in ABACUS?** -Apart from setting relavant keys (`lspinorb` to 1) in the `INPUT` file, SOC calculations can only be performed with fully-relativistic pseudopotentials. Users are suggested to download fully-relativistic versions of SG15_ONCV pseudopotential files from a [website](http://quantum-simulation.org/potentials/sg15_oncv/upf/). The numerical orbital files generated from the corresponding scalar-relativistic pseudoptential files by ABACUS ([here](http://abacus.ustc.edu.cn/pseudo/list.htm)) can be used in collaboration with the fully-relativistic pseudopotentials. +To perform SOC calculations in ABACUS, follow these steps: + +1. **Set `lspinorb=1` in the INPUT file**: This enables spin-orbit coupling effects +2. **Use full-relativistic pseudopotentials**: SOC calculations require pseudopotentials with `has_so=true` in the UPF header + - Download full-relativistic versions of SG15_ONCV pseudopotentials from [quantum-simulation.org](http://quantum-simulation.org/potentials/sg15_oncv/upf/) + - Check the UPF file header for `relativistic="full"` and `has_so="T"` +3. **Verify automatic settings**: When `lspinorb=1` is set, `nspin` is automatically set to 4 and symmetry is automatically disabled + +**Basis set support**: Both `basis_type=pw` (plane wave) and `basis_type=lcao` (numerical atomic orbitals) support SOC calculations for both SCF and NSCF. + +**Force and stress calculations**: Atomic forces and cell stresses can be calculated with SOC (supported since ABACUS v3.9.0). + +**Numerical atomic orbitals**: The numerical orbital files generated from scalar-relativistic pseudopotentials (available at [abacus.ustc.edu.cn](http://abacus.ustc.edu.cn/pseudo/list.htm)) can be used with full-relativistic pseudopotentials, as orbitals are spin-independent. + +**Common error**: If you see "no soc upf used for lspinorb calculation", ensure you are using full-relativistic pseudopotentials with `has_so=true`. + +For detailed information, examples, and troubleshooting, see [Spin-polarization and SOC](../advanced/scf/spin.md#soc-effects). **7. How to restart jobs in abacus?** diff --git a/docs/conf.py b/docs/conf.py index 6276db3031..bf96df8cb7 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -68,6 +68,12 @@ html_theme = 'sphinx_book_theme' html_logo = 'abacus-logo.svg' +# Theme options for sphinx-book-theme +html_theme_options = { + "show_toc_level": 2, # Only show h2 (categories) in right sidebar, not h3 (parameters) + "toc_title": "On this page", +} + # Changes for compatibility with Read the Docs import os @@ -93,3 +99,32 @@ latex_elements = { 'extraclassoptions':'openany,oneside' } + + +# -- Auto-generate INPUT keyword documentation from YAML parameter dump ------ + +from pathlib import Path + +def generate_input_docs(app): + """Auto-generate input-main.md from parameters.yaml before building. + + Workflow: + abacus --generate-parameters-yaml > docs/parameters.yaml + # Then Sphinx calls this hook, which runs generate_input_main.py + """ + docs_dir = Path(__file__).resolve().parent + yaml_path = docs_dir / 'parameters.yaml' + if not yaml_path.exists(): + print(f"Warning: {yaml_path} not found. " + "Run: abacus --generate-parameters-yaml > docs/parameters.yaml") + return + import sys + sys.path.insert(0, str(docs_dir)) + from generate_input_main import generate + generate( + yaml_path=yaml_path, + output=docs_dir / 'advanced' / 'input_files' / 'input-main.md', + ) + +def setup(app): + app.connect('builder-inited', generate_input_docs) diff --git a/docs/generate_input_main.py b/docs/generate_input_main.py new file mode 100644 index 0000000000..16a9e398bb --- /dev/null +++ b/docs/generate_input_main.py @@ -0,0 +1,322 @@ +#!/usr/bin/env python3 +""" +Generate input-main.md from a YAML parameter dump. + +Usage: + # Generate YAML first: + abacus --generate-parameters-yaml > docs/parameters.yaml + + # Then generate markdown: + python docs/generate_input_main.py docs/parameters.yaml [--output FILE] + +Can also be imported from conf.py: + from generate_input_main import generate + generate(yaml_path, output) +""" + +import argparse +import html +import re +import sys +from pathlib import Path +from collections import OrderedDict +from typing import Dict, List + +try: + import yaml +except ImportError: + sys.exit("Error: PyYAML is required. Install with: pip install pyyaml") + + +DOC_FOLDER = Path(__file__).parent +# Desired category display order +CATEGORY_ORDER = [ + "System variables", + "Input files", + "Plane wave related variables", + "Numerical atomic orbitals related variables", + "Electronic structure", + "Electronic structure (SDFT)", + "Geometry relaxation", + "Output information", + "Density of states", + "NAOs", + "DeePKS", + "OFDFT: orbital free density functional theory", + "ML-KEDF: machine learning based kinetic energy density functional for OFDFT", + "TDOFDFT: time dependent orbital free density functional theory", + "Electric field and dipole correction", + "Gate field (compensating charge)", + "Exact Exchange (Common)", + "Exact Exchange (LCAO in PW)", + "Exact Exchange (LCAO)", + "Exact Exchange (PW)", + "Molecular dynamics", + "DFT+U correction", + "Spin-Constrained DFT", + "vdW correction", + "Berry phase and wannier90 interface", + "RT-TDDFT: Real-Time Time-Dependent Density Functional Theory", + "Variables useful for debugging", + "Electronic conductivities", + "Implicit solvation model", + "Quasiatomic Orbital (QO) analysis", + "PEXSI", + "Linear Response TDDFT", + "Linear Response TDDFT (Under Development Feature)", + "Reduced Density Matrix Functional Theory", + "Model", + "Other", +] + + +def normalize_type(type_text: str) -> str: + """ + Normalize legacy type labels for cleaner generated docs. + """ + if not type_text: + return '' + + normalized = type_text.strip() + aliases = { + "Bool": "Boolean", + "Int*2": "Integer*2", + } + return aliases.get(normalized, normalized) + + +def escape_md_text(text: str) -> str: + """ + Escape markdown-sensitive angle brackets while avoiding double escaping. + """ + if text is None: + return '' + normalized = html.unescape(str(text)) + return normalized.replace('<', '<').replace('>', '>') + + +def format_description(desc: str) -> str: + """ + Format description text for markdown output. + - Convert * list markers to - list markers + - Convert [NOTE] markers to blockquotes + - Convert [WARNING] markers to blockquotes + """ + if not desc: + return '' + + # Prevent placeholder tokens like from being parsed as raw HTML + # and breaking list/heading structure in rendered docs. + desc = escape_md_text(desc) + + lines = desc.split('\n') + result_lines = [] + + for line in lines: + # Convert * list items to - list items + line = re.sub(r'^(\s*)\*\s+', r'\1- ', line) + + # Convert [NOTE] markers to blockquotes + if '[NOTE]' in line: + line = line.replace('[NOTE]', '> Note:') + + # Convert [WARNING] markers to blockquotes + if '[WARNING]' in line: + line = line.replace('[WARNING]', '> Warning:') + + # Normalize doubled note/warning prefixes from legacy content + line = re.sub(r'>\s*Note:\s*Note\s*:?\s*', '> Note: ', line) + line = re.sub(r'>\s*Warning:\s*Warning\s*:?\s*', '> Warning: ', line) + + result_lines.append(line) + + # Join and clean up + result = '\n'.join(result_lines) + + # Ensure list items have proper indentation (2 spaces for sub-items in markdown) + result = re.sub(r'\n- ', '\n - ', result) + # But not for the first item after a non-list line + result = re.sub(r'(\n[^-\s][^\n]*)\n - ', r'\1\n\n - ', result) + + return result.strip() + + +def generate_parameter_markdown(param: Dict[str, str]) -> str: + """ + Generate markdown for a single parameter. + """ + lines = [f"### {param['name']}", ""] + + # Type + if param.get('type', '') != '': + type_text = escape_md_text(normalize_type(str(param['type']))) + lines.append(f"- **Type**: {type_text}") + + # Availability (before description, as in original format) + if param.get('availability', '') != '': + availability_text = escape_md_text(str(param['availability'])) + lines.append(f"- **Availability**: *{availability_text}*") + + # Description + if param.get('description', '') != '': + desc = format_description(str(param['description'])) + # If description has multiple lines/lists, format properly + if '\n' in desc: + lines.append(f"- **Description**: {desc.split(chr(10))[0]}") + for line in desc.split('\n')[1:]: + if line.strip(): + lines.append(f" {line}" if not line.startswith(' ') else line) + else: + lines.append("") + else: + lines.append(f"- **Description**: {desc}") + + # Default + if param.get('default_value', '') != '': + default_text = escape_md_text(str(param['default_value'])) + lines.append(f"- **Default**: {default_text}") + + # Unit + if param.get('unit', '') != '': + unit_text = escape_md_text(str(param['unit'])) + lines.append(f"- **Unit**: {unit_text}") + + lines.append("") + return '\n'.join(lines) + + +def generate_category_markdown(category: str, params: List[Dict[str, str]]) -> str: + """ + Generate markdown for a category section. + """ + lines = [f"## {category}", ""] + + for param in params: + lines.append(generate_parameter_markdown(param)) + + # Keep legacy navigation aid used by downstream tooling/rendering. + lines.append("[back to top](#full-list-of-input-keywords)") + lines.append("") + + return '\n'.join(lines) + + +def generate_anchor(text: str) -> str: + """ + Generate a markdown anchor from text. + Converts to lowercase, replaces spaces with hyphens, removes special chars. + """ + anchor = text.lower() + anchor = re.sub(r'[^a-z0-9\s_-]', '', anchor) + anchor = re.sub(r'\s+', '-', anchor) + anchor = re.sub(r'-+', '-', anchor) + return anchor.strip('-') + + +def generate_toc(sorted_categories: OrderedDict) -> str: + """ + Generate a markdown table of contents matching the original format. + """ + lines = ["- [Full List of INPUT Keywords](#full-list-of-input-keywords)"] + + for category, params in sorted_categories.items(): + cat_anchor = generate_anchor(category) + lines.append(f" - [{category}](#{cat_anchor})") + + for param in params: + # Escape underscores in parameter names for TOC display + display_name = param['name'].replace('_', r'\_') + param_anchor = generate_anchor(param['name']) + lines.append(f" - [{display_name}](#{param_anchor})") + + return '\n'.join(lines) + + +def generate(yaml_path: Path, output: Path, verbose: bool = False): + """ + Core generation logic. Can be called from conf.py or CLI. + """ + yaml_path = Path(yaml_path) + output = Path(output) + + if not yaml_path.exists(): + raise FileNotFoundError(f"YAML file not found: {yaml_path}") + + with open(yaml_path, 'r') as f: + data = yaml.safe_load(f) + + all_params = data.get('parameters', []) + print(f"Total: {len(all_params)} documented parameters") + + # Group by category + by_category: Dict[str, List[Dict[str, str]]] = OrderedDict() + for param in all_params: + cat = param.get('category', 'Other') + if cat not in by_category: + by_category[cat] = [] + by_category[cat].append(param) + + # Sort categories according to defined order + sorted_categories = OrderedDict() + for cat in CATEGORY_ORDER: + if cat in by_category: + sorted_categories[cat] = by_category[cat] + + # Add any remaining categories not in the predefined order + for cat in by_category: + if cat not in sorted_categories: + sorted_categories[cat] = by_category[cat] + + # Generate markdown + md_parts = [ + "# Full List of INPUT Keywords", + "", + "", + "", + "", + "", + generate_toc(sorted_categories), + "" + ] + + for category, params in sorted_categories.items(): + if verbose: + print(f"Category '{category}': {len(params)} parameters") + md_parts.append(generate_category_markdown(category, params)) + + # Write output + output_content = '\n'.join(md_parts) + output.parent.mkdir(parents=True, exist_ok=True) + output.write_text(output_content) + + print(f"Generated {output}") + print(f"Categories: {len(sorted_categories)}") + + +def main(): + parser = argparse.ArgumentParser( + description='Generate input-main.md from YAML parameter dump' + ) + parser.add_argument( + 'yaml_file', + type=Path, + help='Path to parameters.yaml (generated by abacus --generate-parameters-yaml)' + ) + parser.add_argument( + '--output', + type=Path, + default=Path(f'{DOC_FOLDER}/advanced/input_files/input-main.md'), + help='Output markdown file' + ) + parser.add_argument( + '--verbose', '-v', + action='store_true', + help='Print verbose output' + ) + + args = parser.parse_args() + generate(args.yaml_file, args.output, args.verbose) + + +if __name__ == '__main__': + main() diff --git a/docs/parameters.yaml b/docs/parameters.yaml new file mode 100644 index 0000000000..3cc2e3038e --- /dev/null +++ b/docs/parameters.yaml @@ -0,0 +1,4614 @@ +# Auto-generated by: abacus --generate-parameters-yaml +# Do not edit manually. +parameters: + - name: suffix + category: System variables + type: String + description: | + In each run, ABACUS will generate a subdirectory in the working directory. This subdirectory contains all the information of the run. The subdirectory name has the format: OUT.suffix, where the suffix is the name you can pick up for your convenience. + default_value: ABACUS + unit: "" + availability: "" + - name: ntype + category: System variables + type: Integer + description: | + Number of different atom species in the calculation. + default_value: "0" + unit: "" + availability: "" + - name: calculation + category: System variables + type: String + description: | + Specify the type of calculation. + + * scf: perform self-consistent electronic structure calculations + * nscf: perform non-self-consistent electronic structure calculations. A charge density file is required + * relax: perform structure relaxation calculations, the relax_nmax parameter depicts the maximal number of ionic iterations + * cell-relax: perform cell relaxation calculations + * md: perform molecular dynamics simulations + * get_pchg: obtain partial (band-decomposed) charge densities (for LCAO basis only). See out_pchg for more information + * get_wf: obtain real space wave functions (for LCAO basis only). See out_wfc_norm and out_wfc_re_im for more information + * get_s: obtain the overlap matrix formed by localized orbitals (for LCAO basis with multiple k points). the file name is SR.csr with file format being the same as that generated by out_mat_hs2 + * gen_bessel: generates projectors, i.e., a series of Bessel functions, for the DeePKS method (for LCAO basis only) + * gen_opt_abfs: generate opt-ABFs as discussed in this article + * test_memory: obtain a rough estimation of memory consumption for the calculation + * test_neighbour: obtain information of neighboring atoms (for LCAO basis only), please specify a positive search_radius manually + default_value: scf + unit: "" + availability: "" + - name: esolver_type + category: System variables + type: String + description: | + Choose the energy solver. + * ksdft: Kohn-Sham density functional theory + * ofdft: orbital-free density functional theory + * tdofdft: time-dependent orbital-free density functional theory + * sdft: stochastic density functional theory + * tddft: real-time time-dependent density functional theory (RT-TDDFT) + * lj: Leonard Jones potential + * dp: DeeP potential + * nep: Neuroevolution Potential + * ks-lr: Kohn-Sham density functional theory + LR-TDDFT (Under Development Feature) + * lr: LR-TDDFT with given KS orbitals (Under Development Feature) + default_value: ksdft + unit: "" + availability: "" + - name: symmetry + category: System variables + type: String + description: | + Takes value 1, 0 or -1. + * -1: No symmetry will be considered. It is recommended to set -1 for non-colinear + soc calculations, where time reversal symmetry is broken sometimes. + * 0: Only time reversal symmetry would be considered in symmetry operations, which implied k point and -k point would be treated as a single k point with twice the weight. + * 1: Symmetry analysis will be performed to determine the type of Bravais lattice and associated symmetry operations. (point groups, space groups, primitive cells, and irreducible k-points) + + [NOTE] When symmetry is enabled (value 1), k-points are reduced to the irreducible Brillouin zone (IBZ). For explicit k-point lists with custom weights (see KPT file), the custom weights are preserved during symmetry reduction. For Monkhorst-Pack grids, uniform weights are used. + default_value: default + unit: "" + availability: "" + - name: symmetry_prec + category: System variables + type: Real + description: | + The accuracy for symmetry analysis. Typically, the default value is good enough, but if the lattice parameters or atom positions in STRU file are not accurate enough, this value should be enlarged. + [NOTE] Note: if calculation==cell_relax, this value can be dynamically changed corresponding to the variation of accuracy of the lattice parameters and atom positions during the relaxation. + default_value: "1.0e-6" + unit: Bohr + availability: "" + - name: symmetry_autoclose + category: System variables + type: Boolean + description: | + Control how to deal with error in symmetry analysis due to inaccurate lattice parameters or atom positions in STRU file, especially useful when calculation==cell-relax + * False: quit with an error message + * True: automatically set symmetry to 0 and continue running without symmetry analysis + default_value: "True" + unit: "" + availability: symmetry==1 + - name: cal_force + category: System variables + type: Boolean + description: | + If set to True, calculate the force at the end of the electronic iteration. + default_value: "False" + unit: "" + availability: "" + - name: kpar + category: System variables + type: Integer + description: | + Divide all processors into kpar groups, and k points will be distributed among each group. The value taken should be less than or equal to the number of k points as well as the number of MPI processes. + default_value: "1" + unit: "" + availability: "" + - name: bndpar + category: System variables + type: Integer + description: | + Divide all processors into bndpar groups, and bands (only stochastic orbitals now) will be distributed among each group. It should be larger than 0. + default_value: "1" + unit: "" + availability: "" + - name: latname + category: System variables + type: String + description: | + Specifies the type of Bravias lattice. When set to none, the three lattice vectors are supplied explicitly in STRU file. + + Available options are: + * none: free structure + * sc: simple cubic + * fcc: face-centered cubic + * bcc: body-centered cubic + * hexagonal: hexagonal + * trigonal: trigonal + * st: simple tetragonal + * bct: body-centered tetragonal + * so: orthorhombic + * baco: base-centered orthorhombic + * fco: face-centered orthorhombic + * bco: body-centered orthorhombic + * sm: simple monoclinic + * bacm: base-centered monoclinic + * triclinic: triclinic + default_value: none + unit: "" + availability: "" + - name: init_wfc + category: System variables + type: String + description: | + The type of the starting wave functions. + + Available options are: + * atomic: from atomic pseudo wave functions. If they are not enough, other wave functions are initialized with random numbers. + * atomic+random: add small random numbers on atomic pseudo-wavefunctions + * file: from binary files wf*.dat, which are output by setting out_wfc_pw to 2. + * random: random numbers + * nao: from numerical atomic orbitals. If they are not enough, other wave functions are initialized with random numbers. + * nao+random: add small random numbers on numerical atomic orbitals + + [NOTE] Only the file option is useful for the lcao basis set, which is mostly used when calculation is set to get_wf and get_pchg. + default_value: atomic + unit: "" + availability: "" + - name: init_chg + category: System variables + type: String + description: | + This variable is used for both plane wave set and localized orbitals set. It indicates the type of starting density. + + * atomic: the density is starting from the summation of the atomic density of single atoms. + * file: the density will be read in from a binary file charge-density.dat first. If it does not exist, the charge density will be read in from cube files. + * wfc: the density will be calculated by wavefunctions and occupations. + * dm: the density will be calculated by real space density matrix(DMR) of LCAO base. + * hr: the real space Hamiltonian matrix(HR) will be read in from file hrs1_nao.csr in directory read_file_dir. + * auto: Abacus first attempts to read the density from a file; if not found, it defaults to using atomic density. + default_value: atomic + unit: "" + availability: "" + - name: init_vel + category: System variables + type: Boolean + description: | + * True: read the atom velocity (atomic unit : 1 a.u. = 21.877 Angstrom/fs) from the atom file (STRU) and determine the initial temperature md_tfirst. If md_tfirst is unset or less than zero, init_vel is autoset to be true. + * False: assign value to atom velocity using Gaussian distributed random numbers. + default_value: "False" + unit: "" + availability: "" + - name: mem_saver + category: System variables + type: Integer + description: | + Save memory when performing nscf calculations. + * 0: no memory saving techniques are used. + * 1: a memory saving technique will be used for many k point calculations. + default_value: "0" + unit: "" + availability: Used only for nscf calculations with plane wave basis set. + - name: cal_stress + category: System variables + type: Boolean + description: | + If set to True, calculate the stress at the end of the electronic iteration. + default_value: "False" + unit: "" + availability: "" + - name: diago_proc + category: System variables + type: Integer + description: | + * 0: it will be set to the number of MPI processes. + * >0: it specifies the number of processes used for carrying out diagonalization. Must be less than or equal to total number of MPI processes. + default_value: "0" + unit: "" + availability: Used only for plane wave basis set. + - name: nbspline + category: System variables + type: Integer + description: | + If set to a natural number, a Cardinal B-spline interpolation will be used to calculate Structure Factor. nbspline represents the order of B-spline basis and a larger one can get more accurate results but cost more. It is turned off by default. + default_value: "-1" + unit: "" + availability: "" + - name: kspacing + category: System variables + type: Vector of Real (1 or 3 values) + description: | + Set the smallest allowed spacing between k points, unit in 1/bohr. It should be larger than 0.0, and suggest smaller than 0.25. When you have set this value > 0.0, then the KPT file is unnecessary. The default value 0.0 means that ABACUS will read the applied KPT file. + + [NOTE] If gamma_only is set to be true, kspacing is invalid. + default_value: "0.0" + unit: "" + availability: "" + - name: min_dist_coef + category: System variables + type: Real + description: | + A factor related to the allowed minimum distance between two atoms. At the beginning, ABACUS will check the structure, and if the distance of two atoms is shorter than min_dist_coef*(standard covalent bond length), we think this structure is unreasonable. + default_value: "0.2" + unit: "" + availability: "" + - name: device + category: System variables + type: String + description: | + Specifies the computing device for ABACUS. + + Available options are: + * cpu: for CPUs via Intel, AMD, or Other supported CPU devices + * gpu: for GPUs via CUDA or ROCm. + + [NOTE] ks_solver must also be set to the algorithms supported. lcao_in_pw currently does not support gpu. + default_value: cpu + unit: "" + availability: "" + - name: precision + category: System variables + type: String + description: | + Specifies the precision when performing scf calculation. + * single: single precision + * double: double precision + default_value: double + unit: "" + availability: Used only for plane wave basis set. + - name: timer_enable_nvtx + category: System variables + type: Boolean + description: | + Controls whether NVTX profiling labels are emitted by the timer. This feature is only effective on CUDA platforms. + + * True: Enable NVTX profiling labels in the timer. + * False: Disable NVTX profiling labels in the timer. + default_value: "False" + unit: "" + availability: "" + - name: cell_factor + category: System variables + type: Real + description: | + Used in the construction of the pseudopotential tables. For cell-relax calculations, this is automatically set to 2.0. + default_value: "1.2" + unit: "" + availability: "" + - name: dm_to_rho + category: System variables + type: Boolean + description: | + Reads density matrix in npz format and calculates electron density. + default_value: "False" + unit: "" + availability: "" + - name: chg_extrap + category: System variables + type: String + description: | + Charge extrapolation method for MD and relaxation calculations. + default_value: default + unit: "" + availability: "" + - name: ecutwfc + category: Plane wave related variables + type: Real + description: | + Energy cutoff for plane wave functions. Note that even for localized orbitals basis, you still need to setup an energy cutoff for this system. Because our local pseudopotential parts and the related force are calculated from plane wave basis set. + [NOTE] ecutwfc and ecutrho can be set simultaneously. If only one parameter is set, abacus will automatically set another parameter based on the 4-time relationship. + default_value: "50 for PW basis, 100 for LCAO basis" + unit: Ry + availability: "" + - name: ecutrho + category: Plane wave related variables + type: Real + description: | + Energy cutoff for charge density and potential. For norm-conserving pseudopotential you should stick to the default value, you can reduce it by a little but it will introduce noise especially on forces and stress. + default_value: "4*ecutwfc" + unit: Ry + availability: "" + - name: nx + category: Plane wave related variables + type: Integer + description: | + If set to a positive number, specifies the number of FFT grid points in x direction. If set to 0, the number will be calculated from ecutrho. + + [NOTE] You must specify all three dimensions (nx, ny, nz) for this setting to be used. + default_value: "0" + unit: "" + availability: "" + - name: ny + category: Plane wave related variables + type: Integer + description: | + If set to a positive number, specifies the number of FFT grid points in y direction. If set to 0, the number will be calculated from ecutrho. + + [NOTE] You must specify all three dimensions (nx, ny, nz) for this setting to be used. + default_value: "0" + unit: "" + availability: "" + - name: nz + category: Plane wave related variables + type: Integer + description: | + If set to a positive number, specifies the number of FFT grid points in z direction. If set to 0, the number will be calculated from ecutrho. + + [NOTE] You must specify all three dimensions (nx, ny, nz) for this setting to be used. + default_value: "0" + unit: "" + availability: "" + - name: ndx + category: Plane wave related variables + type: Integer + description: | + If set to a positive number, specifies the number of FFT grid points for the dense part of charge density in x direction. If set to 0, the number will be calculated from ecutwfc. + + [NOTE] You must specify all three dimensions (ndx, ndy, ndz) for this setting to be used. These parameters must be used combined with nx, ny, nz. If nx, ny, nz are unset, ndx, ndy, ndz are used as nx, ny, nz. + default_value: "0" + unit: "" + availability: "" + - name: ndy + category: Plane wave related variables + type: Integer + description: | + If set to a positive number, specifies the number of FFT grid points for the dense part of charge density in y direction. If set to 0, the number will be calculated from ecutwfc. + + [NOTE] You must specify all three dimensions (ndx, ndy, ndz) for this setting to be used. These parameters must be used combined with nx, ny, nz. If nx, ny, nz are unset, ndx, ndy, ndz are used as nx, ny, nz. + default_value: "0" + unit: "" + availability: "" + - name: ndz + category: Plane wave related variables + type: Integer + description: | + If set to a positive number, specifies the number of FFT grid points for the dense part of charge density in z direction. If set to 0, the number will be calculated from ecutwfc. + + [NOTE] You must specify all three dimensions (ndx, ndy, ndz) for this setting to be used. These parameters must be used combined with nx, ny, nz. If nx, ny, nz are unset, ndx, ndy, ndz are used as nx, ny, nz. + default_value: "0" + unit: "" + availability: "" + - name: pw_seed + category: Plane wave related variables + type: Integer + description: | + Specify the random seed to initialize wave functions. Only positive integers are available. + default_value: "0" + unit: "" + availability: Only used for plane wave basis. + - name: diag_subspace + category: Plane wave related variables + type: Integer + description: | + The method to diagonalize subspace in dav_subspace method. + * 0: by LAPACK + * 1: by GenELPA + * 2: by ScaLAPACK + default_value: "0" + unit: "" + availability: "" + - name: erf_ecut + category: Plane wave related variables + type: Real + description: | + Used in variable-cell molecular dynamics (or in stress calculation). See erf_sigma for details. + default_value: "0.0" + unit: Ry + availability: "" + - name: fft_mode + category: Plane wave related variables + type: Integer + description: | + Set the mode of FFTW. + * 0: FFTW_ESTIMATE + * 1: FFTW_MEASURE + * 2: FFTW_PATIENT + * 3: FFTW_EXHAUSTIVE + default_value: "0" + unit: "" + availability: "" + - name: erf_height + category: Plane wave related variables + type: Real + description: | + Used in variable-cell molecular dynamics (or in stress calculation). See erf_sigma for details. + default_value: "0.0" + unit: Ry + availability: "" + - name: erf_sigma + category: Plane wave related variables + type: Real + description: | + In order to recover the accuracy of a constant energy cutoff calculation, the kinetic functional is modified, which is used in variable-cell molecular dynamics (or in stress calculation). + default_value: "0.1" + unit: Ry + availability: "" + - name: stru_file + category: Input files + type: String + description: | + The name of the structure file containing various information about atom species, including pseudopotential files, local orbitals files, cell information, atom positions, and whether atoms should be allowed to move. + default_value: STRU + unit: "" + availability: "" + - name: kpoint_file + category: Input files + type: String + description: | + The name of the k-point file that includes the k-point information of Brillouin zone. + default_value: KPT + unit: "" + availability: "" + - name: pseudo_dir + category: Input files + type: String + description: | + The directory of pseudopotential files. This parameter is combined with the pseudopotential filenames in the STRU file to form the complete pseudopotential file paths. + default_value: "\"\"" + unit: "" + availability: "" + - name: orbital_dir + category: Input files + type: String + description: | + The directory to save numerical atomic orbitals. This parameter is combined with orbital filenames in the STRU file to form the complete orbital file paths. + default_value: "\"\"" + unit: "" + availability: "" + - name: read_file_dir + category: Input files + type: String + description: | + Location of files, such as the electron density (chgs1.cube), required as a starting point. + default_value: OUT.$suffix + unit: "" + availability: "" + - name: restart_load + category: Input files + type: Boolean + description: | + If restart_save is set to true and an electronic iteration is finished, calculations can be restarted from the charge density file, which are saved in the former calculation. + default_value: "False" + unit: "" + availability: Used only when numerical atomic orbitals are employed as basis set. + - name: basis_type + category: Electronic structure + type: String + description: | + Choose the basis set. + * pw: Using plane-wave basis set only. + * lcao: Using localized atomic orbital sets. + * lcao_in_pw: Expand the localized atomic set in plane-wave basis, non-self-consistent field calculation not tested. + default_value: pw + unit: "" + availability: "" + - name: ks_solver + category: Electronic structure + type: String + description: | + Choose the diagonalization methods for the Hamiltonian matrix expanded in a certain basis set. + + For plane-wave basis, + + * cg: The conjugate-gradient (CG) method. + * bpcg: The BPCG method, which is a block-parallel Conjugate Gradient (CG) method, typically exhibits higher acceleration in a GPU environment. + * dav: The Davidson algorithm. + * dav_subspace: The Davidson algorithm without orthogonalization operation, this method is the most recommended for efficiency. `pw_diag_ndim` can be set to 2 for this method. + + For numerical atomic orbitals basis, + + * lapack: Use LAPACK to diagonalize the Hamiltonian, only used for serial version + * genelpa: Use GEN-ELPA to diagonalize the Hamiltonian. + * scalapack_gvx: Use Scalapack to diagonalize the Hamiltonian. + * cusolver: Use CUSOLVER to diagonalize the Hamiltonian, at least one GPU is needed. + * cusolvermp: Use CUSOLVER to diagonalize the Hamiltonian, supporting multi-GPU devices. Note that you should set the number of MPI processes equal to the number of GPUs. + * elpa: The ELPA solver supports both CPU and GPU. By setting the `device` to GPU, you can launch the ELPA solver with GPU acceleration (provided that you have installed a GPU-supported version of ELPA, which requires you to manually compile and install ELPA, and the ABACUS should be compiled with -DUSE_ELPA=ON and -DUSE_CUDA=ON). The ELPA solver also supports multi-GPU acceleration. + + If you set ks_solver=`genelpa` for basis_type=`pw`, the program will stop with an error message: + + ``text genelpa can not be used with plane wave basis. `` + + Then the user has to correct the input file and restart the calculation. + default_value: "\n - PW basis: cg.\n - LCAO basis:\n - genelpa (if compiling option `USE_ELPA` has been set)\n - lapack (if compiling option `ENABLE_MPI` has not been set)\n - scalapack_gvx (if compiling option `USE_ELPA` has not been set and compiling option `ENABLE_MPI` has been set)\n - cusolver (if compiling option `USE_CUDA` has been set)" + unit: "" + availability: "" + - name: nbands + category: Electronic structure + type: Integer + description: | + The number of Kohn-Sham orbitals to calculate. It is recommended to setup this value, especially when smearing techniques are utilized, more bands should be included. + default_value: "" + unit: "" + availability: "" + - name: nelec + category: Electronic structure + type: Real + description: | + * 0.0: The total number of electrons will be calculated by the sum of valence electrons (i.e. assuming neutral system). + * >0.0: this denotes the total number of electrons in the system. Must be less than 2*nbands. + default_value: "0.0" + unit: "" + availability: "" + - name: nelec_delta + category: Electronic structure + type: Real + description: | + The total number of electrons will be calculated by nelec+nelec_delta. + default_value: "0.0" + unit: "" + availability: "" + - name: nupdown + category: Electronic structure + type: Real + description: | + * 0.0: no constrain apply to system. + * >0.0: The different number of electrons between spin-up and spin-down channels. The range of value must be in [-nelec ~ nelec]. It is one type of constrainted DFT method, two Fermi energies will be calculated. + default_value: "0.0" + unit: "" + availability: "" + - name: dft_functional + category: Electronic structure + type: String + description: | + In our package, the XC functional can either be set explicitly using the dft_functional keyword in INPUT file. If dft_functional is not specified, ABACUS will use the xc functional indicated in the pseudopotential file. On the other hand, if dft_functional is specified, it will overwrite the functional from pseudopotentials and performs calculation with whichever functional the user prefers. We further offer two ways of supplying exchange-correlation functional. The first is using 'short-hand' names. A complete list of 'short-hand' expressions can be found in the source code. Supported density functionals are: + * LDA functionals + * LDA (equivalent with PZ and SLAPZNOGXNOGC), PWLDA + * GGA functionals + * PBE (equivalent with SLAPWPBXPBC), PBESOL, REVPBE, WC, BLYP, BP(referred to BP86), PW91, HCTH, OLYP, BLYP_LR + * meta-GGA functionals + * SCAN (require LIBXC) + * Hybrid functionals + * PBE0, HF + * If LIBXC is available, additional short-hand names of hybrid functionals are supported: HSE(referred to HSE06), B3LYP, LC_PBE, LC_WPBE, LRC_WPBE, LRC_WPBEH, CAM_PBEH, WP22, CWP22, MULLER (equivalent with POWER) + * Hybrid meta-GGA functionals + * SCAN0 (require LIBXC) + + The other way is only available when compiling with LIBXC, and it allows for supplying exchange-correlation functionals as combinations of LIBXC keywords for functional components, joined by a plus sign, for example, dft_functional='LDA_X_1D_EXPONENTIAL+LDA_C_1D_CSC'. + default_value: Used the same as DFT functional as specified in the pseudopotential files. + unit: "" + availability: "" + - name: xc_temperature + category: Electronic structure + type: Real + description: | + Specifies temperature when using temperature-dependent XC functionals (KSDT and so on). + default_value: "0.0" + unit: Ry + availability: "" + - name: xc_exch_ext + category: Electronic structure + type: Integer followed by Real values + description: | + Customized parameterization on the exchange part of XC functional. The first value should be the LibXC ID of the original functional, and latter values are external parameters. Default values are those of Perdew-Burke-Ernzerhof (PBE) functional. For more information on LibXC ID of functionals, please refer to LibXC. For parameters of functionals of interest, please refer to the source code of LibXC, such as PBE functional interface in LibXC: gga_x_pbe.c. + + [NOTE] Solely setting this keyword will take no effect on XC functionals. One should also set dft_functional to the corresponding functional to apply the customized parameterization. Presently this feature can only support parameterization on one exchange functional. + default_value: 101 0.8040 0.2195149727645171 + unit: "" + availability: "" + - name: xc_corr_ext + category: Electronic structure + type: Integer followed by Real values + description: | + Customized parameterization on the correlation part of XC functional. The first value should be the LibXC ID of the original functional, and latter values are external parameters. Default values are those of Perdew-Burke-Ernzerhof (PBE) functional. For more information on LibXC ID of functionals, please refer to LibXC. For parameters of functionals of interest, please refer to the source code of LibXC, such as PBE functional interface in LibXC: gga_c_pbe.c. + + [NOTE] Solely setting this keyword will take no effect on XC functionals. One should also set dft_functional to the corresponding functional to apply the customized parameterization. Presently this feature can only support parameterization on one correlation functional. + default_value: 130 0.06672455060314922 0.031090690869654895034 1.0 + unit: "" + availability: "" + - name: pseudo_rcut + category: Electronic structure + type: Real + description: | + Cut-off of radial integration for pseudopotentials. + default_value: "15" + unit: Bohr + availability: "" + - name: pseudo_mesh + category: Electronic structure + type: Boolean + description: | + * 0: Use a mesh for radial integration of pseudopotentials. + * 1: Use the mesh that is consistent with quantum espresso + default_value: "0" + unit: "" + availability: "" + - name: nspin + category: Electronic structure + type: Integer + description: | + The number of spin components of wave functions. + * 1: Spin degeneracy + * 2: Collinear spin polarized. + * 4: For the case of noncollinear polarized, nspin will be automatically set to 4 without being specified by the user. + default_value: "1" + unit: "" + availability: "" + - name: smearing_method + category: Electronic structure + type: String + description: | + It indicates which occupation and smearing method is used in the calculation. + * fixed: fixed occupations (available for non-coductors only) + * gauss or gaussian: Gaussian smearing method. + * mp: methfessel-paxton smearing method; recommended for metals. + * mp2: 2-nd methfessel-paxton smearing method; recommended for metals. + * mv or cold: marzari-vanderbilt smearing method. + * fd: Fermi-Dirac smearing method: and smearing_sigma below is the temperature (in Ry). + default_value: gauss + unit: "" + availability: "" + - name: smearing_sigma + category: Electronic structure + type: Real + description: | + Energy range for smearing. + default_value: "0.015" + unit: Ry + availability: "" + - name: smearing_sigma_temp + category: Electronic structure + type: Real + description: | + Energy range for smearing, smearing_sigma = 1/2 kB smearing_sigma_temp. + default_value: "2 * smearing_sigma / kB." + unit: K + availability: "" + - name: mixing_type + category: Electronic structure + type: String + description: | + Charge mixing methods. + * plain: Just simple mixing. + * pulay: Standard Pulay method. P. Pulay Chemical Physics Letters, (1980) + * broyden: Simplified modified Broyden method. D.D. Johnson Physical Review B (1988) + + In general, the convergence of the Broyden method is slightly faster than that of the Pulay method. + default_value: broyden + unit: "" + availability: "" + - name: mixing_beta + category: Electronic structure + type: Real + description: | + In general, the formula of charge mixing can be written as rho_new = rho_old + mixing_beta * drho, where rho_new represents the new charge density after charge mixing, rho_old represents the charge density in previous step, drho is obtained through various mixing methods, and mixing_beta is set by this parameter. A lower value of 'mixing_beta' results in less influence of drho on rho_new, making the self-consistent field (SCF) calculation more stable. However, it may require more steps to achieve convergence. We recommend the following options: + * 0.8: nspin=1 + * 0.4: nspin=2 and nspin=4 + * 0: keep charge density unchanged, usually used for restarting with init_chg=file or testing. + * 0.1 or less: if convergence of SCF calculation is difficult to reach, please try 0 < mixing_beta < 0.1. + + Note: For low-dimensional large systems, the setup of mixing_beta=0.1, mixing_ndim=20, and mixing_gg0=1.0 usually works well. + default_value: "0.8 for nspin=1, 0.4 for nspin=2 and nspin=4." + unit: "" + availability: "" + - name: mixing_beta_mag + category: Electronic structure + type: Real + description: | + Mixing parameter of magnetic density. + default_value: "4*mixing_beta, but the maximum value is 1.6." + unit: "" + availability: "" + - name: mixing_ndim + category: Electronic structure + type: Integer + description: | + It indicates the mixing dimensions in Pulay or Broyden. Pulay and Broyden method use the density from previous mixing_ndim steps and do a charge mixing based on this density. + + For systems that are difficult to converge, one could try increasing the value of 'mixing_ndim' to enhance the stability of the self-consistent field (SCF) calculation. + default_value: "8" + unit: "" + availability: "" + - name: mixing_restart + category: Electronic structure + type: Real + description: | + If the density difference between input and output drho is smaller than mixing_restart, SCF will restart at next step which means SCF will restart by using output charge density from perivos iteration as input charge density directly, and start a new mixing. Notice that mixing_restart will only take effect once in one SCF. + default_value: "0" + unit: "" + availability: "" + - name: mixing_dmr + category: Electronic structure + type: Boolean + description: | + At n-th iteration which is calculated by drho= 0.0" + - name: mixing_gg0 + category: Electronic structure + type: Real + description: | + Whether to perfom Kerker scaling for charge density. + * >0: The high frequency wave vectors will be suppressed by multiplying a scaling factor. Setting mixing_gg0 = 1.0 is normally a good starting point. Kerker preconditioner will be automatically turned off if mixing_beta <= 0.1. + * 0: No Kerker scaling is performed. + + For systems that are difficult to converge, particularly metallic systems, enabling Kerker scaling may aid in achieving convergence. + default_value: "1.0" + unit: "" + availability: "" + - name: mixing_gg0_mag + category: Electronic structure + type: Real + description: | + Whether to perfom Kerker preconditioner of magnetic density. Note: we do not recommand to open Kerker preconditioner of magnetic density unless the system is too hard to converge. + default_value: "0.0" + unit: "" + availability: "" + - name: mixing_gg0_min + category: Electronic structure + type: Real + description: | + The minimum kerker coefficient. + default_value: "0.1" + unit: "" + availability: "" + - name: mixing_angle + category: Electronic structure + type: Real + description: | + Normal broyden mixing can give the converged result for a given magnetic configuration. If one is not interested in the energies of a given magnetic configuration but wants to determine the ground state by relaxing the magnetic moments' directions, one cannot rely on the standard Broyden mixing algorithm. To enhance the ability to find correct magnetic configuration for non-colinear calculations, ABACUS implements a promising mixing method proposed by J. Phys. Soc. Jpn. 82 (2013) 114706. Here, mixing_angle is the angle mixing parameter. In fact, only mixing_angle=1.0 is implemented currently. + * <=0: Normal broyden mixing + * >0: Angle mixing for the modulus with mixing_angle=1.0 + default_value: "-10.0" + unit: "" + availability: Only relevant for non-colinear calculations nspin=4. + - name: mixing_tau + category: Electronic structure + type: Boolean + description: | + Whether to mix the kinetic energy density. + * True: The kinetic energy density will also be mixed. It seems for general cases, SCF converges fine even without this mixing. However, if there is difficulty in converging SCF for meta-GGA, it might be helpful to turn this on. + * False: The kinetic energy density will not be mixed. + default_value: "False" + unit: "" + availability: Only relevant for meta-GGA calculations. + - name: mixing_dftu + category: Electronic structure + type: Boolean + description: | + Whether to mix the occupation matrices. + * True: The occupation matrices will also be mixed by plain mixing. From experience this is not very helpful if the +U calculation does not converge. + * False: The occupation matrices will not be mixed. + default_value: "False" + unit: "" + availability: Only relevant for DFT+U calculations. + - name: gamma_only + category: Electronic structure + type: Boolean + description: | + Whether to use gamma_only algorithm. + * 0: more than one k-point is used and the ABACUS is slower compared to the gamma only algorithm. + * 1: ABACUS uses gamma only, the algorithm is faster and you don't need to specify the k-points file. + + Note: If gamma_only is set to 1, the KPT file will be overwritten. So make sure to turn off gamma_only for multi-k calculations. + default_value: "0" + unit: "" + availability: Only used in localized orbitals set + - name: scf_nmax + category: Electronic structure + type: Integer + description: | + This variable indicates the maximal iteration number for electronic iterations. + default_value: "100" + unit: "" + availability: "" + - name: scf_thr + category: Electronic structure + type: Real + description: | + It's the density threshold for electronic iteration. It represents the charge density error between two sequential densities from electronic iterations. Usually for local orbitals, usually 1e-6 may be accurate enough. + default_value: "1.0e-9 (plane-wave basis), or 1.0e-7 (localized atomic orbital basis)." + unit: "Ry if scf_thr_type=1, dimensionless if scf_thr_type=2" + availability: "" + - name: scf_ene_thr + category: Electronic structure + type: Real + description: | + It's the energy threshold for electronic iteration. It represents the total energy error between two sequential densities from electronic iterations. + default_value: "-1.0. If the user does not set this parameter, it will not take effect." + unit: eV + availability: "" + - name: scf_thr_type + category: Electronic structure + type: Integer + description: | + Choose the calculation method of convergence criterion. + * 1: the criterion is defined in reciprocal space, which is used in SCF of PW basis with unit Ry. + * 2: the criterion is defined in real space, where is the number of electron, which is used in SCF of LCAO with unit dimensionless. + default_value: "1 (plane-wave basis), or 2 (localized atomic orbital basis)." + unit: "" + availability: "" + - name: scf_os_stop + category: Electronic structure + type: Boolean + description: | + For systems that are difficult to converge, the SCF process may exhibit oscillations in charge density, preventing further progress toward the specified convergence criteria and resulting in continuous oscillation until the maximum number of steps is reached; this greatly wastes computational resources. To address this issue, this function allows ABACUS to terminate the SCF process early upon detecting oscillations, thus reducing subsequent meaningless calculations. The detection of oscillations is based on the slope of the logarithm of historical drho values. To this end, Least Squares Method is used to calculate the slope of the logarithmically taken drho for the previous scf_os_ndim iterations. If the calculated slope is larger than scf_os_thr, stop the SCF. + + * 0: The SCF will continue to run regardless of whether there is oscillation or not. + * 1: If the calculated slope is larger than scf_os_thr, stop the SCF. + default_value: "false" + unit: "" + availability: "" + - name: scf_os_thr + category: Electronic structure + type: Real + description: | + The slope threshold to determine if the SCF is stuck in a charge density oscillation. If the calculated slope is larger than scf_os_thr, stop the SCF. + default_value: "-0.01" + unit: "" + availability: "" + - name: scf_os_ndim + category: Electronic structure + type: Integer + description: | + To determine the number of old iterations' drho used in slope calculations. + default_value: mixing_ndim + unit: "" + availability: "" + - name: sc_os_ndim + category: Electronic structure + type: Integer + description: | + To determine the number of old iterations to judge oscillation, it occured, more accurate lambda with DeltaSpin method would be calculated, only for PW base. + default_value: "5" + unit: "" + availability: "" + - name: lspinorb + category: Electronic structure + type: Boolean + description: | + Whether to consider spin-orbit coupling (SOC) effect in the calculation. + * True: Consider spin-orbit coupling effect. When enabled: + * nspin is automatically set to 4 (noncollinear spin representation) + * Symmetry is automatically disabled (SOC breaks inversion symmetry) + * Requires full-relativistic pseudopotentials with has_so=true in the UPF header + * False: Do not consider spin-orbit coupling effect. + * Common Error: "no soc upf used for lspinorb calculation" - ensure you are using full-relativistic pseudopotentials + default_value: "False" + unit: "" + availability: "" + - name: noncolin + category: Electronic structure + type: Boolean + description: | + Whether to allow non-collinear magnetic moments, where magnetization can point in arbitrary directions (x, y, z components) rather than being constrained to the z-axis. + * True: Allow non-collinear polarization. When enabled: + * nspin is automatically set to 4 + * Wave function dimension is doubled (npol=2), and the number of occupied states is doubled + * Charge density has 4 components (Pauli spin matrices) + * Cannot be used with gamma_only=true + * Can be combined with lspinorb=true for SOC effects with non-collinear magnetism + * False: Do not allow non-collinear polarization (magnetization constrained to z-axis). + * Relationship with lspinorb: + * noncolin=0, lspinorb=1: SOC with z-axis magnetism only (for non-magnetic materials with SOC) + * noncolin=1, lspinorb=0: Non-collinear magnetism without SOC + * noncolin=1, lspinorb=1: Both non-collinear magnetism and SOC + default_value: "False" + unit: "" + availability: "" + - name: soc_lambda + category: Electronic structure + type: Real + description: | + Modulates the strength of spin-orbit coupling effect. Sometimes, for some real materials, both scalar-relativistic and full-relativistic pseudopotentials cannot describe the exact spin-orbit coupling. Artificial modulation may help in such cases. + + soc_lambda, which has value range [0.0, 1.0], is used to modulate SOC effect: + * soc_lambda 0.0: Scalar-relativistic case (no SOC) + * soc_lambda 1.0: Full-relativistic case (full SOC) + * Intermediate values: Partial-relativistic SOC (interpolation between scalar and full) + + Use case: When experimental or high-level theoretical results suggest that the SOC effect is weaker or stronger than what full-relativistic pseudopotentials predict, you can adjust this parameter to match the target behavior. + default_value: "1.0" + unit: "" + availability: Only works when lspinorb=true + - name: dfthalf_type + category: Electronic structure + type: Integer + description: | + DFT-1/2 type: + * 0: DFT-1/2 is off. + * 1: Shell DFT-1/2 method is used. + default_value: "0" + unit: "" + availability: "" + - name: pw_diag_thr + category: Plane wave related variables + type: Real + description: | + Only used when you use ks_solver = cg/dav/dav_subspace/bpcg. It indicates the threshold for the first electronic iteration, from the second iteration the pw_diag_thr will be updated automatically. For nscf calculations with planewave basis set, pw_diag_thr should be <= 1e-3. + default_value: "0.01" + unit: "" + availability: "" + - name: diago_smooth_ethr + category: Plane wave related variables + type: Boolean + description: | + If TRUE, the smooth threshold strategy, which applies a larger threshold (10e-5) for the empty states, will be implemented in the diagonalization methods. (This strategy should not affect total energy, forces, and other ground-state properties, but computational efficiency will be improved.) If FALSE, the smooth threshold strategy will not be applied. + default_value: "false" + unit: "" + availability: "" + - name: use_k_continuity + category: Plane wave related variables + type: Boolean + description: | + If TRUE, the wavefunctions at k-point will be initialized from the converged wavefunctions at the nearest k-point, which can speed up the SCF convergence. Only works for PW basis. + default_value: "false" + unit: "" + availability: Used only for plane wave basis set. + - name: pw_diag_nmax + category: Plane wave related variables + type: Integer + description: | + Only useful when you use ks_solver = cg/dav/dav_subspace/bpcg. It indicates the maximal iteration number for cg/david/dav_subspace/bpcg method. + default_value: "50" + unit: "" + availability: "basis_type==pw, ks_solver==cg/dav/dav_subspace/bpcg" + - name: pw_diag_ndim + category: Plane wave related variables + type: Integer + description: | + Only useful when you use ks_solver = dav or ks_solver = dav_subspace. It indicates dimension of workspace(number of wavefunction packets, at least 2 needed) for the Davidson method. A larger value may yield a smaller number of iterations in the algorithm but uses more memory and more CPU time in subspace diagonalization. + default_value: "4" + unit: "" + availability: "" + - name: diago_cg_prec + category: Plane wave related variables + type: Integer + description: | + Preconditioner type for conjugate gradient diagonalization method. + default_value: "1" + unit: "" + availability: "" + - name: nb2d + category: System variables + type: Integer + description: | + In LCAO calculations, the Hamiltonian and overlap matrices are distributed across 2D processor grid. This parameter controls the 2D block size for distribution. + default_value: "0" + unit: "" + availability: "" + - name: lmaxmax + category: Numerical atomic orbitals related variables + type: Integer + description: | + If not equals to 2, then the maximum l channels on LCAO is set to lmaxmax. If 2, then the number of l channels will be read from the LCAO data sets. Normally no input should be supplied for this variable so that it is kept as its default. + default_value: "2." + unit: "" + availability: "" + - name: lcao_ecut + category: Numerical atomic orbitals related variables + type: Real + description: | + Energy cutoff (in Ry) for two-center integrals in LCAO. The two-center integration table are obtained via a k space integral whose upper limit is about sqrt(lcao_ecut). + default_value: ecutwfc + unit: "" + availability: "" + - name: lcao_dk + category: Numerical atomic orbitals related variables + type: Real + description: | + the interval of k points for two-center integrals. The two-center integration table are obtained via a k space integral on a uniform grid with spacing lcao_dk. + default_value: "0.01" + unit: Bohr + availability: "" + - name: lcao_dr + category: Numerical atomic orbitals related variables + type: Real + description: | + r spacing of the integration table of two-center integrals. + default_value: "0.01" + unit: Bohr + availability: "" + - name: lcao_rmax + category: Numerical atomic orbitals related variables + type: Real + description: | + Maximum distance for the two-center integration table. + default_value: "30" + unit: Bohr + availability: "" + - name: search_radius + category: Numerical atomic orbitals related variables + type: Real + description: | + Searching radius in finding the neighbouring atoms. By default the radius will be automatically determined by the cutoffs of orbitals and nonlocal beta projectors. + default_value: "-1" + unit: Bohr + availability: "" + - name: "bx" + category: Numerical atomic orbitals related variables + type: Integer + description: | + In the matrix operation of grid integral, bx/by/bz grids (in x, y, z directions) are treated as a whole as a matrix element. A different value will affect the calculation speed. The default is 0, which means abacus will automatically calculate these values. + default_value: "0" + unit: "" + availability: "" + - name: by + category: Numerical atomic orbitals related variables + type: Integer + description: | + In the matrix operation of grid integral, bx/by/bz grids (in x, y, z directions) are treated as a whole as a matrix element. A different value will affect the calculation speed. The default is 0, which means abacus will automatically calculate these values. + default_value: "0" + unit: "" + availability: "" + - name: bz + category: Numerical atomic orbitals related variables + type: Integer + description: | + In the matrix operation of grid integral, bx/by/bz grids (in x, y, z directions) are treated as a whole as a matrix element. A different value will affect the calculation speed. The default is 0, which means abacus will automatically calculate these values. + default_value: "0" + unit: "" + availability: "" + - name: elpa_num_thread + category: Numerical atomic orbitals related variables + type: Integer + description: | + Number of threads used in one elpa calculation. + + If the number is below 0 or 0 or beyond the max number of threads, all elpa calculation will be using all mpi threads + default_value: "-1" + unit: "" + availability: "" + - name: num_stream + category: Numerical atomic orbitals related variables + type: Integer + description: | + The number of CUDA streams used in LCAO calculations with GPU acceleration. + default_value: "4" + unit: "" + availability: "" + - name: bessel_nao_ecut + category: NAOs + type: String + description: | + "Energy cutoff" (in Ry) of spherical Bessel functions. The number of spherical Bessel functions that constitute the radial parts of NAOs is determined by sqrt(bessel_nao_ecut)*bessel_nao_rcut/. + default_value: ecutwfc + unit: "" + availability: "" + - name: bessel_nao_tolerence + category: NAOs + type: Real + description: | + Tolerance when searching for the zeros of spherical Bessel functions. + default_value: "1.0e-12" + unit: "" + availability: "" + - name: bessel_nao_rcut + category: NAOs + type: Vector of Real (N values) + description: | + Cutoff radius (in Bohr) and the common node of spherical Bessel functions used to construct the NAOs. + default_value: "6.0" + unit: "" + availability: "" + - name: bessel_nao_smooth + category: NAOs + type: Boolean + description: | + If True, NAOs will be smoothed near the cutoff radius. See bessel_nao_rcut and bessel_nao_sigma for parameters. + default_value: "True" + unit: "" + availability: "" + - name: bessel_nao_sigma + category: NAOs + type: Real + description: | + Smoothing range (in Bohr). See also bessel_nao_smooth. + default_value: "0.1" + unit: "" + availability: "" + - name: relax_method + category: Geometry relaxation + type: Vector of string + description: | + The methods to do geometry optimization. The available algorithms depend on the relax_new setting. + + First element (algorithm selection): + * cg: Conjugate gradient (CG) algorithm. Available for both relax_new = True (default, simultaneous optimization) and relax_new = False (nested optimization). See relax_new for implementation details. + * bfgs: Broyden–Fletcher–Goldfarb–Shanno (BFGS) quasi-Newton algorithm. Only available when relax_new = False. + * lbfgs: Limited-memory BFGS algorithm, suitable for large systems. Only available when relax_new = False. + * cg_bfgs: Mixed method starting with CG and switching to BFGS when force convergence reaches relax_cg_thr. Only available when relax_new = False. + * sd: Steepest descent algorithm. Only available when relax_new = False. Not recommended for production use. + * fire: Fast Inertial Relaxation Engine method, a molecular-dynamics-based relaxation algorithm. Use by setting calculation to md and md_type to fire. Ionic velocities must be set in STRU file. See fire for details. + + Second element (BFGS variant, only when first element is bfgs): + * 1: Traditional BFGS that updates the Hessian matrix B and then inverts it. + * 2 or omitted: Default BFGS that directly updates the inverse Hessian (recommended). + + [NOTE] In the 3.10-LTS version, the type of this parameter is std::string. It can be set to "cg", "bfgs", "cg_bfgs", "bfgs_trad", "lbfgs", "sd", "fire". + default_value: cg 1 + unit: "" + availability: "" + - name: relax_new + category: Geometry relaxation + type: Boolean + description: | + Controls which implementation of geometry relaxation to use. At the end of 2022, a new implementation of the Conjugate Gradient (CG) method was introduced for relax and cell-relax calculations, while the old implementation was kept for backward compatibility. + + + * True (default): Use the new CG implementation with the following features: + * Simultaneous optimization of ionic positions and cell parameters (for cell-relax) + * Line search algorithm for step size determination + * Only CG algorithm is available (relax_method must be cg) + * Supports advanced cell constraints: fixed_axes = "shape", "volume", "a", "b", "c", etc. + * Supports fixed_ibrav to maintain lattice type + * More efficient for variable-cell relaxation + * Step size controlled by relax_scale_force + + - False: Use the old implementation with the following features: + * Nested optimization procedure: ionic positions optimized first, then cell parameters (for cell-relax) + * Multiple algorithms available: cg, bfgs, lbfgs, sd, cg_bfgs + * Limited cell constraints: only fixed_axes = "volume" is supported + * Traditional approach with separate ionic and cell optimization steps + default_value: "True" + unit: "" + availability: "" + - name: relax_scale_force + category: Geometry relaxation + type: Real + description: | + The paramether controls the size of the first conjugate gradient step. A smaller value means the first step along a new CG direction is smaller. This might be helpful for large systems, where it is safer to take a smaller initial step to prevent the collapse of the whole configuration. + default_value: "0.5" + unit: "" + availability: Only used when relax_new set to True + - name: relax_nmax + category: Geometry relaxation + type: Integer + description: | + The maximal number of ionic iteration steps. If set to 0, the code performs a quick "dry run", stopping just after initialization. This is useful to check for input correctness and to have the summary printed. + default_value: "1 for SCF, 50 for relax and cell-relax calcualtions" + unit: "" + availability: "" + - name: relax_cg_thr + category: Geometry relaxation + type: Real + description: | + When relax_method is set to cg_bfgs, a mixed algorithm of conjugate gradient (CG) and Broyden–Fletcher–Goldfarb–Shanno (BFGS) is used. The ions first move according to the CG method, then switch to the BFGS method when the maximum force on atoms is reduced below this threshold. + default_value: "0.5" + unit: eV/Angstrom + availability: Only used when relax_new = False and relax_method = cg_bfgs + - name: force_thr + category: Geometry relaxation + type: Real + description: | + Threshold of the force convergence. The threshold is compared with the largest force among all of the atoms. The recommended value for using atomic orbitals is 0.04 eV/Angstrom (0.0016 Ry/Bohr). The parameter is equivalent to force_thr_ev except for the unit, you can choose either you like. + default_value: "0.001" + unit: Ry/Bohr (25.7112 eV/Angstrom) + availability: "" + - name: force_thr_ev + category: Geometry relaxation + type: Real + description: | + Threshold of the force convergence. The threshold is compared with the largest force among all of the atoms. The recommended value for using atomic orbitals is 0.04 eV/Angstrom (0.0016 Ry/Bohr). The parameter is equivalent to force_thr except for the unit. You may choose either you like. + default_value: "0.0257112" + unit: eV/Angstrom (0.03889 Ry/Bohr) + availability: "" + - name: force_zero_out + category: Geometry relaxation + type: Real + description: | + The atomic forces that are smaller than force_zero_out will be treated as zero. + default_value: "0.0" + unit: eV/Angstrom + availability: "" + - name: relax_bfgs_w1 + category: Geometry relaxation + type: Real + description: | + Controls the Wolfe condition for the Broyden–Fletcher–Goldfarb–Shanno (BFGS) algorithm used in geometry relaxation. This parameter sets the sufficient decrease condition (c1 in Wolfe conditions). For more information, see Phys. Chem. Chem. Phys., 2000, 2, 2177. + default_value: "0.01" + unit: "" + availability: Only used when relax_new = False and relax_method is bfgs or cg_bfgs + - name: relax_bfgs_w2 + category: Geometry relaxation + type: Real + description: | + Controls the Wolfe condition for the Broyden–Fletcher–Goldfarb–Shanno (BFGS) algorithm used in geometry relaxation. This parameter sets the curvature condition (c2 in Wolfe conditions). For more information, see Phys. Chem. Chem. Phys., 2000, 2, 2177. + default_value: "0.5" + unit: "" + availability: Only used when relax_new = False and relax_method is bfgs or cg_bfgs + - name: relax_bfgs_rmax + category: Geometry relaxation + type: Real + description: | + Maximum allowed total displacement of all atoms during geometry optimization. The sum of atomic displacements can increase during optimization steps but cannot exceed this value. + default_value: "0.8" + unit: Bohr + availability: Only used when relax_new = False and relax_method is bfgs or cg_bfgs + - name: relax_bfgs_rmin + category: Geometry relaxation + type: Real + description: | + Minimum allowed total displacement of all atoms. When the total atomic displacement falls below this value and force convergence is not achieved, the calculation will terminate. Note: This parameter is not used in the default BFGS algorithm (relax_method = bfgs 2 or bfgs). + default_value: "1e-5" + unit: Bohr + availability: Only used when relax_new = False and relax_method = bfgs 1 (traditional BFGS) + - name: relax_bfgs_init + category: Geometry relaxation + type: Real + description: | + Initial total displacement of all atoms in the first BFGS step. This sets the scale for the initial movement. + default_value: "0.5" + unit: Bohr + availability: Only used when relax_new = False and relax_method is bfgs or cg_bfgs + - name: stress_thr + category: Geometry relaxation + type: Real + description: | + The threshold of the stress convergence. The threshold is compared with the largest component of the stress tensor. + default_value: "0.5" + unit: kbar + availability: "" + - name: press1 + category: Geometry relaxation + type: Real + description: | + The external pressures along three axes. Positive input value is taken as compressive stress. + default_value: "0" + unit: kbar + availability: "" + - name: press2 + category: Geometry relaxation + type: Real + description: | + The external pressures along three axes. Positive input value is taken as compressive stress. + default_value: "0" + unit: kbar + availability: "" + - name: press3 + category: Geometry relaxation + type: Real + description: | + The external pressures along three axes. Positive input value is taken as compressive stress. + default_value: "0" + unit: kbar + availability: "" + - name: fixed_axes + category: Geometry relaxation + type: String + description: | + Specifies which cell degrees of freedom are fixed during variable-cell relaxation. The available options depend on the relax_new setting: + + When relax_new = True (default), all options are available: + * None: Default; all cell parameters can relax freely + * volume: Relaxation with fixed volume (allows shape changes) + * shape: Fix shape but allow volume changes (hydrostatic pressure only) + * a: Fix the a-axis lattice vector during relaxation + * b: Fix the b-axis lattice vector during relaxation + * c: Fix the c-axis lattice vector during relaxation + * ab: Fix both a and b axes during relaxation + * ac: Fix both a and c axes during relaxation + * bc: Fix both b and c axes during relaxation + + When relax_new = False, all options are now available: + * None: Default; all cell parameters can relax freely + * volume: Relaxation with fixed volume (allows shape changes). Volume is preserved by rescaling the lattice after each update. + * shape: Fix shape but allow volume changes (hydrostatic pressure only). Stress tensor is replaced with isotropic pressure. + * a, b, c, ab, ac, bc: Fix specific lattice vectors. Gradients for fixed vectors are set to zero. + + [NOTE] For VASP users, see the ISIF correspondence table in the geometry optimization documentation. Both implementations now support all constraint types. + default_value: None + unit: "" + availability: Only used when calculation is set to cell-relax + - name: fixed_ibrav + category: Geometry relaxation + type: Boolean + description: | + * True: the lattice type will be preserved during relaxation. The lattice vectors are reconstructed to match the specified Bravais lattice type after each update. + * False: No restrictions are exerted during relaxation in terms of lattice type + + [NOTE] Note: it is possible to use fixed_ibrav with fixed_axes, but please make sure you know what you are doing. For example, if we are doing relaxation of a simple cubic lattice (latname = "sc"), and we use fixed_ibrav along with fixed_axes = "volume", then the cell is never allowed to move and as a result, the relaxation never converges. When both are used, fixed_ibrav is applied first, then fixed_axes = "volume" rescaling is applied. + default_value: "False" + unit: "" + availability: Can be used with both relax_new = True and relax_new = False. A specific latname must be provided. + - name: fixed_atoms + category: Geometry relaxation + type: Boolean + description: | + * True: The direct coordinates of atoms will be preserved during variable-cell relaxation. + * False: No restrictions are exerted on positions of all atoms. However, users can still fix certain components of certain atoms by using the m keyword in STRU file. For the latter option, check the end of this instruction. + default_value: "False" + unit: "" + availability: "" + - name: md_type + category: Molecular dynamics + type: String + description: | + Control the algorithm to integrate the equation of motion for molecular dynamics (MD), see md.md in detail. + + * fire: a MD-based relaxation algorithm, named fast inertial relaxation engine. + * nve: NVE ensemble with velocity Verlet algorithm. + * nvt: NVT ensemble, see md_thermostat in detail. + * npt: Nose-Hoover style NPT ensemble, see md_pmode in detail. + * langevin: NVT ensemble with Langevin thermostat, see md_damp in detail. + * msst: MSST method, see msst_direction, msst_vel, msst_qmass, msst_vis, msst_tscale in detail. + default_value: nvt + unit: "" + availability: "" + - name: md_nstep + category: Molecular dynamics + type: Integer + description: | + The total number of molecular dynamics steps. + default_value: "10" + unit: "" + availability: "" + - name: md_dt + category: Molecular dynamics + type: Real + description: | + The time step used in molecular dynamics calculations. + default_value: "1.0" + unit: fs + availability: "" + - name: md_thermostat + category: Molecular dynamics + type: String + description: | + Specify the temperature control method used in NVT ensemble. + + * nhc: Nose-Hoover chain, see md_tfreq and md_tchain in detail. + * anderson: Anderson thermostat, see md_nraise in detail. + * berendsen: Berendsen thermostat, see md_nraise in detail. + * rescaling: velocity Rescaling method 1, see md_tolerance in detail. + * rescale_v: velocity Rescaling method 2, see md_nraise in detail. + default_value: nhc + unit: "" + availability: "" + - name: md_tfirst + category: Molecular dynamics + type: Real + description: | + The temperature used in molecular dynamics calculations. + + If md_tfirst is unset or less than zero, init_vel is autoset to be true. If init_vel is true, the initial temperature will be determined by the velocities read from STRU. In this case, if velocities are unspecified in STRU, the initial temperature is set to zero. + + If md_tfirst is set to a positive value and init_vel is true simultaneously, please make sure they are consistent, otherwise abacus will exit immediately. + + Note that md_tlast is only used in NVT/NPT simulations. If md_tlast is unset or less than zero, md_tlast is set to md_tfirst. If md_tlast is set to be different from md_tfirst, ABACUS will automatically change the temperature from md_tfirst to md_tlast. + default_value: No default + unit: K + availability: "" + - name: md_tlast + category: Molecular dynamics + type: Real + description: | + The temperature used in molecular dynamics calculations. + + If md_tfirst is unset or less than zero, init_vel is autoset to be true. If init_vel is true, the initial temperature will be determined by the velocities read from STRU. In this case, if velocities are unspecified in STRU, the initial temperature is set to zero. + + If md_tfirst is set to a positive value and init_vel is true simultaneously, please make sure they are consistent, otherwise abacus will exit immediately. + + Note that md_tlast is only used in NVT/NPT simulations. If md_tlast is unset or less than zero, md_tlast is set to md_tfirst. If md_tlast is set to be different from md_tfirst, ABACUS will automatically change the temperature from md_tfirst to md_tlast. + default_value: No default + unit: K + availability: "" + - name: md_prec_level + category: Molecular dynamics + type: Integer + description: | + Determine the precision level of variable-cell molecular dynamics calculations. + * 0: FFT grids do not change, only G vectors and K vectors are changed due to the change of lattice vector. This level is suitable for cases where the variation of the volume and shape is not large, and the efficiency is relatively higher. + * 2: FFT grids change per step. This level is suitable for cases where the variation of the volume and shape is large, such as the MSST method. However, accuracy comes at the cost of efficiency. + default_value: "0" + unit: "" + availability: "" + - name: md_restart + category: Molecular dynamics + type: Boolean + description: | + Control whether to restart molecular dynamics calculations and time-dependent density functional theory calculations. + * True: ABACUS will read in {md_step}, then read in the corresponding STRU_MD_suffix/STRU/ automatically. For tddft, ABACUS will also read in WFC_NAO_K${kpoint} of the last step (You need to set out_wfc_lcao=1 and out_app_flag=0 to obtain this file). + * False: ABACUS will start molecular dynamics calculations normally from the first step. + default_value: "False" + unit: "" + availability: "" + - name: md_restartfreq + category: Molecular dynamics + type: Integer + description: | + The output frequency of OUT.{suffix}/STRIU/, which are used to restart molecular dynamics calculations, see md_restart in detail. + default_value: "5" + unit: "" + availability: "" + - name: md_dumpfreq + category: Molecular dynamics + type: Integer + description: | + The output frequency of OUT.${suffix}/MD_dump in molecular dynamics calculations, which including the information of lattices and atoms. + default_value: "1" + unit: "" + availability: "" + - name: dump_force + category: Molecular dynamics + type: Boolean + description: | + Whether to output atomic forces into the file OUT.${suffix}/MD_dump. + default_value: "True" + unit: "" + availability: "" + - name: dump_vel + category: Molecular dynamics + type: Boolean + description: | + Whether to output atomic velocities into the file OUT.${suffix}/MD_dump. + default_value: "True" + unit: "" + availability: "" + - name: dump_virial + category: Molecular dynamics + type: Boolean + description: | + Whether to output lattice virials into the file OUT.${suffix}/MD_dump. + default_value: "True" + unit: "" + availability: "" + - name: md_seed + category: Molecular dynamics + type: Integer + description: | + The random seed to initialize random numbers used in molecular dynamics calculations. + * < 0: No srand() function is called. + * >= 0: The function srand(md_seed) is called. + default_value: "-1" + unit: "" + availability: "" + - name: md_tfreq + category: Molecular dynamics + type: Real + description: | + Control the frequency of temperature oscillations during the simulation. If it is too large, the temperature will fluctuate violently; if it is too small, the temperature will take a very long time to equilibrate with the atomic system. + + Note: It is a system-dependent empirical parameter, ranging from 1/(40*md_dt) to 1/(100*md_dt). An improper choice might lead to the failure of jobs. + default_value: 1/40/md_dt + unit: "" + availability: "" + - name: md_tchain + category: Molecular dynamics + type: Integer + description: | + Number of thermostats coupled with the particles in the NVT/NPT ensemble based on the Nose-Hoover style non-Hamiltonian equations of motion. + default_value: "1" + unit: "" + availability: "" + - name: md_pmode + category: Molecular dynamics + type: String + description: | + Determine the precision level of variable-cell molecular dynamics calculations. + * 0: FFT grids do not change, only G vectors and K vectors are changed due to the change of lattice vector. This level is suitable for cases where the variation of the volume and shape is not large, and the efficiency is relatively higher. + * 2: FFT grids change per step. This level is suitable for cases where the variation of the volume and shape is large, such as the MSST method. However, accuracy comes at the cost of efficiency. + default_value: iso + unit: "" + availability: "" + - name: ref_cell_factor + category: Molecular dynamics + type: Real + description: | + Construct a reference cell bigger than the initial cell. The reference cell has to be large enough so that the lattice vectors of the fluctuating cell do not exceed the reference lattice vectors during MD. Typically, 1.02 ~ 1.10 is sufficient. However, the cell fluctuations depend on the specific system and thermodynamic conditions. So users must test for a proper choice. This parameters should be used in conjunction with erf_ecut, erf_height, and erf_sigma. + default_value: "1.0" + unit: "" + availability: "" + - name: md_pcouple + category: Molecular dynamics + type: String + description: | + The coupled lattice vectors will scale proportionally in NPT ensemble based on the Nose-Hoover style non-Hamiltonian equations of motion. + * none: Three lattice vectors scale independently. + * xyz: Lattice vectors x, y, and z scale proportionally. + * xy: Lattice vectors x and y scale proportionally. + * xz: Lattice vectors x and z scale proportionally. + * yz: Lattice vectors y and z scale proportionally. + default_value: none + unit: "" + availability: "" + - name: md_pfirst + category: Molecular dynamics + type: Real + description: | + The target pressure used in NPT ensemble simulations, the default value of md_plast is md_pfirst. If md_plast is set to be different from md_pfirst, ABACUS will automatically change the target pressure from md_pfirst to md_plast. + default_value: "-1.0" + unit: kbar + availability: "" + - name: md_plast + category: Molecular dynamics + type: Real + description: | + The target pressure used in NPT ensemble simulations, the default value of md_plast is md_pfirst. If md_plast is set to be different from md_pfirst, ABACUS will automatically change the target pressure from md_pfirst to md_plast. + default_value: "-1.0" + unit: kbar + availability: "" + - name: md_pfreq + category: Molecular dynamics + type: Real + description: | + The frequency of pressure oscillations during the NPT ensemble simulation. If it is too large, the pressure will fluctuate violently; if it is too small, the pressure will take a very long time to equilibrate with the atomic system. + + Note: It is a system-dependent empirical parameter. An improper choice might lead to the failure of jobs. + default_value: 1/400/md_dt + unit: "" + availability: "" + - name: md_pchain + category: Molecular dynamics + type: Integer + description: | + The number of thermostats coupled with the barostat in the NPT ensemble based on the Nose-Hoover style non-Hamiltonian equations of motion. + default_value: "1" + unit: "" + availability: "" + - name: lj_rule + category: Molecular dynamics + type: Integer + description: | + The Lennard-Jones potential between two atoms equals: $\sigma_k\sigma(i,j)$ + default_value: "2" + unit: "" + availability: "" + - name: lj_eshift + category: Molecular dynamics + type: Boolean + description: | + It True, the LJ potential is shifted by a constant such that it is zero at the cut-off distance. + default_value: "False" + unit: "" + availability: "" + - name: lj_rcut + category: Molecular dynamics + type: Real + description: | + Cut-off radius for Leonard Jones potential, beyond which the interaction will be neglected. It can be a single value, which means that all pairs of atoms types share the same cut-off radius. Otherwise, it should be a multiple-component vector, containing values, see details in lj_rule. + default_value: No default + unit: Angstrom + availability: "" + - name: lj_epsilon + category: Molecular dynamics + type: Real + description: | + The vector representing the matrix for Leonard Jones potential. See details in lj_rule. + default_value: No default + unit: eV + availability: "" + - name: lj_sigma + category: Molecular dynamics + type: Real + description: | + The vector representing the matrix for Leonard Jones potential. See details in lj_rule. + default_value: No default + unit: Angstrom + availability: "" + - name: pot_file + category: Molecular dynamics + type: String + description: | + The filename of DP/NEP potential files, see md.md in detail. + default_value: graph.pb + unit: "" + availability: "" + - name: dp_rescaling + category: Molecular dynamics + type: Real + description: | + Rescaling factor to use a temperature-dependent DP. Energy, stress and force calculated by DP will be multiplied by this factor. + default_value: "1.0" + unit: "" + availability: esolver_type = dp. + - name: dp_fparam + category: Molecular dynamics + type: Real + description: | + The frame parameter for dp potential. The array size is dim_fparam, then all frames are assumed to be provided with the same fparam. + default_value: "{}" + unit: "" + availability: esolver_type = dp. + - name: dp_aparam + category: Molecular dynamics + type: Real + description: | + The atomic parameter for dp potential. The array size can be (1) natoms x dim_aparam, then all frames are assumed to be provided with the same aparam; (2) dim_aparam, then all frames and atoms are assumed to be provided with the same aparam. + default_value: "{}" + unit: "" + availability: esolver_type = dp. + - name: msst_direction + category: Molecular dynamics + type: Integer + description: | + The direction of the shock wave in the MSST method. + * 0: x direction + * 1: y direction + * 2: z direction + default_value: "2" + unit: "" + availability: "" + - name: msst_vel + category: Molecular dynamics + type: Real + description: | + The velocity of the shock wave in the MSST method. + default_value: "0.0" + unit: Angstrom/fs + availability: "" + - name: msst_vis + category: Molecular dynamics + type: Real + description: | + Artificial viscosity in the MSST method. + default_value: "0.0" + unit: "g/(mol*Angstrom*fs)" + availability: "" + - name: msst_tscale + category: Molecular dynamics + type: Real + description: | + The reduction percentage of the initial temperature used to compress volume in the MSST method. + default_value: "0.01" + unit: "" + availability: "" + - name: msst_qmass + category: Molecular dynamics + type: Real + description: | + Inertia of the extended system variable. You should set a number larger than 0. + default_value: No default + unit: "" + availability: "" + - name: md_damp + category: Molecular dynamics + type: Real + description: | + The damping parameter used to add fictitious force in the Langevin method. + default_value: "1.0" + unit: fs + availability: "" + - name: md_tolerance + category: Molecular dynamics + type: Real + description: | + The temperature tolerance for velocity rescaling. Velocities are rescaled if the current and target temperature differ more than md_tolerance. + default_value: "100.0" + unit: K + availability: "" + - name: md_nraise + category: Molecular dynamics + type: Integer + description: | + * Anderson: The "collision frequency" parameter is given as 1/md_nraise. + * Berendsen: The "rise time" parameter is given in units of the time step: tau = md_nraise*md_dt, so md_dt/tau = 1/md_nraise. + * Rescale_v: Every md_nraise steps the current temperature is rescaled to the target temperature. + default_value: "1" + unit: "" + availability: "" + - name: cal_syns + category: Molecular dynamics + type: Boolean + description: | + Whether to calculate and output asynchronous overlap matrix for Hefei-NAMD interface. When enabled, calculates by computing overlap between basis functions at atomic positions from previous time step and current time step. The overlap is calculated by shifting atom positions backward by velocity x md_dt. Output file: OUT.*/syns_nao.csr in CSR format. + + [NOTE] Only works with LCAO basis and molecular dynamics calculations. Requires atomic velocities. Output starts from the second MD step (istep > 0). + default_value: "False" + unit: "" + availability: "" + - name: dmax + category: Molecular dynamics + type: Real + description: | + The maximum displacement of all atoms in one step. This parameter is useful when cal_syns = True. + default_value: "0.01" + unit: bohr + availability: "" + - name: of_kinetic + category: "OFDFT: orbital free density functional theory" + type: String + description: | + Kinetic energy functional type: + * tf: Thomas-Fermi (TF) functional + * vw: von Weizsacker (vW) functional + * tf+: TF + vW functional + * wt: Wang-Teter (WT) functional + * xwm: XWM functional + * lkt: Luo-Karasiev-Trickey (LKT) functional + * ml: Machine learning KEDF + * mpn: MPN KEDF (automatically sets ml parameters) + * cpn5: CPN5 KEDF (automatically sets ml parameters) + default_value: wt + unit: "" + availability: OFDFT + - name: of_method + category: "OFDFT: orbital free density functional theory" + type: String + description: | + The optimization method used in OFDFT. + * cg1: Polak-Ribiere. Standard CG algorithm. + * cg2: Hager-Zhang (generally faster than cg1). + * tn: Truncated Newton algorithm. + default_value: tn + unit: "" + availability: OFDFT + - name: of_conv + category: "OFDFT: orbital free density functional theory" + type: String + description: | + Criterion used to check the convergence of OFDFT. + * energy: Total energy changes less than of_tole. + * potential: The norm of potential is less than of_tolp. + * both: Both energy and potential must satisfy the convergence criterion. + default_value: energy + unit: "" + availability: OFDFT + - name: of_tole + category: "OFDFT: orbital free density functional theory" + type: Real + description: | + Tolerance of the energy change for determining the convergence. + default_value: "2e-6" + unit: Ry + availability: OFDFT + - name: of_tolp + category: "OFDFT: orbital free density functional theory" + type: Real + description: | + Tolerance of potential for determining the convergence. + default_value: "1e-5" + unit: Ry + availability: OFDFT + - name: of_tf_weight + category: "OFDFT: orbital free density functional theory" + type: Real + description: | + Weight of TF KEDF (kinetic energy density functional). + default_value: "1.0" + unit: "" + availability: "OFDFT with of_kinetic=tf, tf+, wt, xwm" + - name: of_vw_weight + category: "OFDFT: orbital free density functional theory" + type: Real + description: | + Weight of vW KEDF (kinetic energy density functional). + default_value: "1.0" + unit: "" + availability: "OFDFT with of_kinetic=vw, tf+, wt, lkt, xwm" + - name: of_wt_alpha + category: "OFDFT: orbital free density functional theory" + type: Real + description: | + Parameter alpha of WT KEDF (kinetic energy density functional). + default_value: "" + unit: "" + availability: OFDFT with of_kinetic=wt + - name: of_wt_beta + category: "OFDFT: orbital free density functional theory" + type: Real + description: | + Parameter beta of WT KEDF (kinetic energy density functional). + default_value: "" + unit: "" + availability: OFDFT with of_kinetic=wt + - name: of_wt_rho0 + category: "OFDFT: orbital free density functional theory" + type: Real + description: | + The average density of system. + default_value: "0.0" + unit: Bohr^-3 + availability: OFDFT with of_kinetic=wt + - name: of_hold_rho0 + category: "OFDFT: orbital free density functional theory" + type: Boolean + description: | + Whether to fix the average density rho0. + * True: rho0 will be fixed even if the volume of system has changed, it will be set to True automatically if of_wt_rho0 is not zero. + * False: rho0 will change if volume of system has changed. + default_value: "False" + unit: "" + availability: OFDFT with of_kinetic=wt + - name: of_lkt_a + category: "OFDFT: orbital free density functional theory" + type: Real + description: | + Parameter a of LKT KEDF (kinetic energy density functional). + default_value: "1.3" + unit: "" + availability: OFDFT with of_kinetic=lkt + - name: of_xwm_rho_ref + category: "OFDFT: orbital free density functional theory" + type: Real + description: | + Reference charge density for XWM kinetic energy functional. If set to 0, the program will use average charge density. + default_value: "0.0" + unit: "" + availability: OFDFT with of_kinetic=xwm + - name: of_xwm_kappa + category: "OFDFT: orbital free density functional theory" + type: Real + description: | + Parameter for XWM kinetic energy functional. See PHYSICAL REVIEW B 100, 205132 (2019) for optimal values. + default_value: "0.0" + unit: "" + availability: OFDFT with of_kinetic=xwm + - name: of_read_kernel + category: "OFDFT: orbital free density functional theory" + type: Boolean + description: | + Whether to read in the kernel file. + * True: The kernel of WT KEDF (kinetic energy density functional) will be filled from the file specified by of_kernel_file. + * False: The kernel of WT KEDF (kinetic energy density functional) will be filled from formula. + default_value: "False" + unit: "" + availability: OFDFT with of_kinetic=wt + - name: of_kernel_file + category: "OFDFT: orbital free density functional theory" + type: String + description: | + The name of WT kernel file. + default_value: WTkernel.txt + unit: "" + availability: OFDFT with of_read_kernel=True + - name: of_full_pw + category: "OFDFT: orbital free density functional theory" + type: Boolean + description: | + Whether to use full planewaves. + * True: Ecut will be ignored while collecting planewaves, so that all planewaves will be used in FFT. + * False: Only use the planewaves inside ecut, the same as KSDFT. + default_value: "True" + unit: "" + availability: OFDFT + - name: of_full_pw_dim + category: "OFDFT: orbital free density functional theory" + type: Integer + description: | + Specify the parity of FFT dimensions. + * 0: either odd or even. + * 1: odd only. + * 2: even only. + + Note: Even dimensions may cause slight errors in FFT. It should be ignorable in ofdft calculation, but it may make Cardinal B-spline interpolation unstable, so please set of_full_pw_dim = 1 if nbspline != -1. + default_value: "0" + unit: "" + availability: OFDFT with of_full_pw = True + - name: of_ml_gene_data + category: "ML-KEDF: machine learning based kinetic energy density functional for OFDFT" + type: Boolean + description: | + Controls the generation of machine learning training data. When enabled, training data in .npy format will be saved in the directory OUT.${suffix}/. + default_value: "False" + unit: "" + availability: Used only for KSDFT with plane wave basis + - name: of_ml_device + category: "ML-KEDF: machine learning based kinetic energy density functional for OFDFT" + type: String + description: | + Run Neural Network on GPU or CPU. + * cpu: CPU + * gpu: GPU + default_value: cpu + unit: "" + availability: OFDFT + - name: of_ml_feg + category: "ML-KEDF: machine learning based kinetic energy density functional for OFDFT" + type: Integer + description: | + The method to incorporate the Free Electron Gas (FEG) limit. + * 0: Do not incorporate the FEG limit. + * 1: Incorporate the FEG limit by translation. + * 3: Incorporate the FEG limit by nonlinear transformation using softplus function. + default_value: "0" + unit: "" + availability: OFDFT + - name: of_ml_nkernel + category: "ML-KEDF: machine learning based kinetic energy density functional for OFDFT" + type: Integer + description: | + Number of kernel functions. + default_value: "1" + unit: "" + availability: OFDFT + - name: of_ml_kernel + category: "ML-KEDF: machine learning based kinetic energy density functional for OFDFT" + type: Vector of Integer + description: | + Containing nkernel (see of_ml_nkernel) elements. The i-th element specifies the type of the i-th kernel function. + * 1: Wang-Teter kernel function. + * 2: Modified Yukawa function, and alpha is specified by of_ml_yukawa_alpha. + * 3: Truncated kinetic kernel (TKK), the file containing TKK is specified by of_ml_kernel_file. + default_value: "1" + unit: "" + availability: OFDFT + - name: of_ml_kernel_scaling + category: "ML-KEDF: machine learning based kinetic energy density functional for OFDFT" + type: Vector of Real + description: | + Containing nkernel (see of_ml_nkernel) elements. The i-th element specifies the RECIPROCAL of scaling parameter of the i-th kernel function. + default_value: "1.0" + unit: "" + availability: OFDFT + - name: of_ml_yukawa_alpha + category: "ML-KEDF: machine learning based kinetic energy density functional for OFDFT" + type: Vector of Real + description: | + Containing nkernel (see of_ml_nkernel) elements. The i-th element specifies the parameter alpha of i-th kernel function. ONLY used for Yukawa kernel function. + default_value: "1.0" + unit: "" + availability: OFDFT + - name: of_ml_kernel_file + category: "ML-KEDF: machine learning based kinetic energy density functional for OFDFT" + type: Vector of String + description: | + Containing nkernel (see of_ml_nkernel) elements. The i-th element specifies the file containing the i-th kernel function. ONLY used for TKK. + default_value: none + unit: "" + availability: OFDFT + - name: of_ml_gamma + category: "ML-KEDF: machine learning based kinetic energy density functional for OFDFT" + type: Boolean + description: | + Local descriptor: gamma = (rho / rho0)^(1/3). + default_value: "False" + unit: "" + availability: OFDFT + - name: of_ml_p + category: "ML-KEDF: machine learning based kinetic energy density functional for OFDFT" + type: Boolean + description: | + Semi-local descriptor: p = |nabla rho|^2 / [2 (3 pi^2)^(1/3) rho^(4/3)]^2. + default_value: "False" + unit: "" + availability: OFDFT + - name: of_ml_q + category: "ML-KEDF: machine learning based kinetic energy density functional for OFDFT" + type: Boolean + description: | + Semi-local descriptor: q = nabla^2 rho / [4 (3 pi^2)^(2/3) rho^(5/3)]. + default_value: "False" + unit: "" + availability: OFDFT + - name: of_ml_tanhp + category: "ML-KEDF: machine learning based kinetic energy density functional for OFDFT" + type: Boolean + description: | + Semi-local descriptor: tanhp = tanh(chi_p * p). + default_value: "False" + unit: "" + availability: OFDFT + - name: of_ml_tanhq + category: "ML-KEDF: machine learning based kinetic energy density functional for OFDFT" + type: Boolean + description: | + Semi-local descriptor: tanhq = tanh(chi_q * q). + default_value: "False" + unit: "" + availability: OFDFT + - name: of_ml_chi_p + category: "ML-KEDF: machine learning based kinetic energy density functional for OFDFT" + type: Real + description: | + Hyperparameter chi_p: tanhp = tanh(chi_p * p). + default_value: "1.0" + unit: "" + availability: OFDFT + - name: of_ml_chi_q + category: "ML-KEDF: machine learning based kinetic energy density functional for OFDFT" + type: Real + description: | + Hyperparameter chi_q: tanhq = tanh(chi_q * q). + default_value: "1.0" + unit: "" + availability: OFDFT + - name: of_ml_gammanl + category: "ML-KEDF: machine learning based kinetic energy density functional for OFDFT" + type: Vector of Integer + description: | + Containing nkernel (see of_ml_nkernel) elements. The i-th element controls the non-local descriptor gammanl defined by the i-th kernel function. + default_value: "0" + unit: "" + availability: OFDFT + - name: of_ml_pnl + category: "ML-KEDF: machine learning based kinetic energy density functional for OFDFT" + type: Vector of Integer + description: | + Containing nkernel (see of_ml_nkernel) elements. The i-th element controls the non-local descriptor pnl defined by the i-th kernel function. + default_value: "0" + unit: "" + availability: OFDFT + - name: of_ml_qnl + category: "ML-KEDF: machine learning based kinetic energy density functional for OFDFT" + type: Vector of Integer + description: | + Containing nkernel (see of_ml_nkernel) elements. The i-th element controls the non-local descriptor qnl defined by the i-th kernel function. + default_value: "0" + unit: "" + availability: OFDFT + - name: of_ml_xi + category: "ML-KEDF: machine learning based kinetic energy density functional for OFDFT" + type: Vector of Integer + description: | + Containing nkernel (see of_ml_nkernel) elements. The i-th element controls the non-local descriptor xi defined by the i-th kernel function. + default_value: "0" + unit: "" + availability: OFDFT + - name: of_ml_tanhxi + category: "ML-KEDF: machine learning based kinetic energy density functional for OFDFT" + type: Vector of Integer + description: | + Containing nkernel (see of_ml_nkernel) elements. The i-th element controls the non-local descriptor tanhxi defined by the i-th kernel function. + default_value: "0" + unit: "" + availability: OFDFT + - name: of_ml_tanhxi_nl + category: "ML-KEDF: machine learning based kinetic energy density functional for OFDFT" + type: Vector of Integer + description: | + Containing nkernel (see of_ml_nkernel) elements. The i-th element controls the non-local descriptor tanhxi_nl defined by the i-th kernel function. + default_value: "0" + unit: "" + availability: OFDFT + - name: of_ml_tanh_pnl + category: "ML-KEDF: machine learning based kinetic energy density functional for OFDFT" + type: Vector of Integer + description: | + Containing nkernel (see of_ml_nkernel) elements. The i-th element controls the non-local descriptor tanh_pnl defined by the i-th kernel function. + default_value: "0" + unit: "" + availability: OFDFT + - name: of_ml_tanh_qnl + category: "ML-KEDF: machine learning based kinetic energy density functional for OFDFT" + type: Vector of Integer + description: | + Containing nkernel (see of_ml_nkernel) elements. The i-th element controls the non-local descriptor tanh_qnl defined by the i-th kernel function. + default_value: "0" + unit: "" + availability: OFDFT + - name: of_ml_tanhp_nl + category: "ML-KEDF: machine learning based kinetic energy density functional for OFDFT" + type: Vector of Integer + description: | + Containing nkernel (see of_ml_nkernel) elements. The i-th element controls the non-local descriptor tanhp_nl defined by the i-th kernel function. + default_value: "0" + unit: "" + availability: OFDFT + - name: of_ml_tanhq_nl + category: "ML-KEDF: machine learning based kinetic energy density functional for OFDFT" + type: Vector of Integer + description: | + Containing nkernel (see of_ml_nkernel) elements. The i-th element controls the non-local descriptor tanhq_nl defined by the i-th kernel function. + default_value: "0" + unit: "" + availability: OFDFT + - name: of_ml_chi_xi + category: "ML-KEDF: machine learning based kinetic energy density functional for OFDFT" + type: Vector of Real + description: | + Containing nkernel (see of_ml_nkernel) elements. The i-th element specifies the hyperparameter chi_xi of non-local descriptor tanhxi defined by the i-th kernel function. + default_value: "1.0" + unit: "" + availability: OFDFT + - name: of_ml_chi_pnl + category: "ML-KEDF: machine learning based kinetic energy density functional for OFDFT" + type: Vector of Real + description: | + Containing nkernel (see of_ml_nkernel) elements. The i-th element specifies the hyperparameter chi_pnl of non-local descriptor tanh_pnl defined by the i-th kernel function. + default_value: "1.0" + unit: "" + availability: OFDFT + - name: of_ml_chi_qnl + category: "ML-KEDF: machine learning based kinetic energy density functional for OFDFT" + type: Vector of Real + description: | + Containing nkernel (see of_ml_nkernel) elements. The i-th element specifies the hyperparameter chi_qnl of non-local descriptor tanh_qnl defined by the i-th kernel function. + default_value: "1.0" + unit: "" + availability: OFDFT + - name: of_ml_local_test + category: "ML-KEDF: machine learning based kinetic energy density functional for OFDFT" + type: Boolean + description: | + FOR TEST. Read in the density, and output the F and Pauli potential. + default_value: "False" + unit: "" + availability: OFDFT + - name: ml_exx + category: "ML-KEDF: machine learning based kinetic energy density functional for OFDFT" + type: Boolean + description: | + Whether to use machine learning based exact exchange (ML-EXX). + default_value: "False" + unit: "" + availability: "" + - name: method_sto + category: Electronic structure (SDFT) + type: Integer + description: | + Different methods to do stochastic DFT + * 1: Calculate twice, this method cost less memory but is slower. + * 2: Calculate once but needs much more memory. This method is much faster. Besides, it calculates with a smaller nche_sto. However, when the memory is not enough, only method 1 can be used. + * other: use 2 + default_value: "2" + unit: "" + availability: esolver_type = sdft + - name: nbands_sto + category: Electronic structure (SDFT) + type: Integer or string + description: | + The number of stochastic orbitals + * > 0: Perform stochastic DFT. Increasing the number of bands improves accuracy and reduces stochastic errors; To perform mixed stochastic-deterministic DFT, you should set nbands, which represents the number of KS orbitals. + * 0: Perform Kohn-Sham DFT. + * all: All complete basis sets are used to replace stochastic orbitals with the Chebyshev method (CT), resulting in the same results as KSDFT without stochastic errors. + default_value: "256" + unit: "" + availability: esolver_type = sdft + - name: nche_sto + category: Electronic structure (SDFT) + type: Integer + description: | + Chebyshev expansion orders for stochastic DFT. + default_value: "100" + unit: "" + availability: esolver_type = sdft + - name: emin_sto + category: Electronic structure (SDFT) + type: Real + description: | + Trial energy to guess the lower bound of eigen energies of the Hamiltonian Operator. + default_value: "0.0" + unit: Ry + availability: esolver_type = sdft + - name: emax_sto + category: Electronic structure (SDFT) + type: Real + description: | + Trial energy to guess the upper bound of eigen energies of the Hamiltonian Operator. + default_value: "0.0" + unit: Ry + availability: esolver_type = sdft + - name: seed_sto + category: Electronic structure (SDFT) + type: Integer + description: | + The random seed to generate stochastic orbitals. + * >= 0: Stochastic orbitals have the form of exp(i*theta), where theta is a uniform distribution in [0, 2*pi). + * 0: the seed is decided by time(NULL). + * <= -1: Stochastic orbitals have the form of +1 or -1 with equal probability. + * -1: the seed is decided by time(NULL). + default_value: "0" + unit: "" + availability: esolver_type = sdft + - name: initsto_ecut + category: Electronic structure (SDFT) + type: Real + description: | + Stochastic wave functions are initialized in a large box generated by "4*initsto_ecut". initsto_ecut should be larger than ecutwfc. In this method, SDFT results are the same when using different cores. Besides, coefficients of the same G are the same when ecutwfc is rising to initsto_ecut. If it is smaller than ecutwfc, it will be turned off. + default_value: "0.0" + unit: Ry + availability: esolver_type = sdft + - name: initsto_freq + category: Electronic structure (SDFT) + type: Integer + description: | + Frequency (once each initsto_freq steps) to generate new stochastic orbitals when running md. + * positive integer: Update stochastic orbitals + * 0: Never change stochastic orbitals. + default_value: "0" + unit: "" + availability: esolver_type = sdft + - name: npart_sto + category: Electronic structure (SDFT) + type: Integer + description: | + Make memory cost to 1/npart_sto times of the previous one when running the post process of SDFT like DOS or conductivities. + default_value: "1" + unit: "" + availability: method_sto = 2 and out_dos = 1 or cal_cond = True + - name: deepks_out_labels + category: DeePKS + type: Integer + description: | + Print labels and descriptors for DeePKS in OUT.${suffix}. The names of these files start with "deepks". + * 0 : No output. + * 1 : Output intermediate files needed during DeePKS training. + * 2 : Output target labels for label preperation. The label files are named as deepks_.npy or deepks_.csr, where the units and formats are the same as label files .npy or .csr required for training, except that the first dimension (nframes) is excluded. System structrue files are also given in deepks_atom.npy and deepks_box.npy in the unit of Bohr, which means lattice_constant should be set to 1 when training. + + [NOTE] When deepks_out_labels equals 1, the path of a numerical descriptor (an orb file) is needed to be specified under the NUMERICAL_DESCRIPTOR tag in the STRU file. This is not needed when deepks_out_labels equals 2. + default_value: "0" + unit: "" + availability: Numerical atomic orbital basis + - name: deepks_out_freq_elec + category: DeePKS + type: Integer + description: | + When deepks_out_freq_elec is greater than 0, print labels and descriptors for DeePKS in OUT.${suffix}/DeePKS_Labels_Elec per deepks_out_freq_elec electronic iterations, with suffix _e* to distinguish different steps. Often used with deepks_out_labels equals 1. + default_value: "0" + unit: "" + availability: Numerical atomic orbital basis + - name: deepks_out_base + category: DeePKS + type: String + description: | + Print labels and descriptors calculated by base functional ( determined by deepks_out_base ) and target functional ( determined by dft_functional ) for DeePKS in per deepks_out_freq_elec electronic iterations. The SCF process, labels and descriptors output of the target functional are all consistent with those when the target functional is used alone. The only additional output under this configuration is the labels of the base functional. Often used with deepks_out_labels equals 1. + default_value: None + unit: "" + availability: Numerical atomic orbital basis and deepks_out_freq_elec is greater than 0 + - name: deepks_scf + category: DeePKS + type: Boolean + description: | + perform self-consistent field iteration in DeePKS method + + [NOTE] A trained, traced model file is needed. + default_value: "False" + unit: "" + availability: Numerical atomic orbital basis + - name: deepks_equiv + category: DeePKS + type: Boolean + description: | + whether to use equivariant version of DeePKS + + [NOTE] The equivariant version of DeePKS-kit is still under development, so this feature is currently only intended for internal usage. + default_value: "False" + unit: "" + availability: Numerical atomic orbital basis + - name: deepks_model + category: DeePKS + type: String + description: | + the path of the trained, traced neural network model file generated by deepks-kit + default_value: None + unit: "" + availability: Numerical atomic orbital basis and deepks_scf is true + - name: bessel_descriptor_lmax + category: DeePKS + type: Integer + description: | + the maximum angular momentum of the Bessel functions generated as the projectors in DeePKS - NOte: To generate such projectors, set calculation type to gen_bessel in ABACUS. See also calculation. + default_value: "2" + unit: "" + availability: gen_bessel calculation + - name: bessel_descriptor_ecut + category: DeePKS + type: String + description: | + energy cutoff of Bessel functions + default_value: same as ecutwfc + unit: Ry + availability: gen_bessel calculation + - name: bessel_descriptor_tolerence + category: DeePKS + type: Real + description: | + tolerance for searching the zeros of Bessel functions + default_value: "1.0e-12" + unit: "" + availability: gen_bessel calculation + - name: bessel_descriptor_rcut + category: DeePKS + type: Real + description: | + cutoff radius of Bessel functions + default_value: "6.0" + unit: Bohr + availability: gen_bessel calculation + - name: bessel_descriptor_smooth + category: DeePKS + type: Boolean + description: | + smooth the Bessel functions at radius cutoff + default_value: "False" + unit: "" + availability: gen_bessel calculation + - name: bessel_descriptor_sigma + category: DeePKS + type: Real + description: | + smooth parameter at the cutoff radius of projectors + default_value: "0.1" + unit: Bohr + availability: gen_bessel calculation + - name: deepks_bandgap + category: DeePKS + type: Integer + description: | + include bandgap label for DeePKS training + * 0: Don't include bandgap label + * 1: Include target bandgap label (see deepks_band_range for more details) + * 2: Include multiple bandgap label (see deepks_band_range for more details) + * 3: Used for systems containing H atoms. Here HOMO is defined as the max occupation except H atoms and the bandgap label is the energy between HOMO and (HOMO + 1) + default_value: "0" + unit: "" + availability: Numerical atomic orbital basis and deepks_scf is true + - name: deepks_band_range + category: DeePKS + type: "Integer*2" + description: | + The first value should not be larger than the second one and the meaning differs in different cases below + * deepks_bandgap is 1: Bandgap label is the energy between LUMO + deepks_band_range[0] and LUMO + deepks_band_range[1]. If not set, it will calculate energy between HOMO and LUMO states. + * deepks_bandgap is 2: Bandgap labels are energies between HOMO and all states in range [LUMO + deepks_band_range[0], LUMO + deepks_band_range[1]] (Thus there are deepks_band_range[1] - deepks_band_range[0] + 1 bandgaps in total). If HOMO is included in the setting range, it will be ignored since it will always be zero and has no valuable messages (deepks_band_range[1] - deepks_band_range[0] bandgaps in this case). NOTICE: The set range can be greater than, less than, or include the value of HOMO. In the bandgap label, we always calculate the energy of the state in the set range minus the energy of HOMO state, so the bandgap can be negative if the state is lower than HOMO. + default_value: "-1 0" + unit: "" + availability: "Numerical atomic orbital basis, deepks_scf is true, and deepks_bandgap is 1 or 2" + - name: deepks_v_delta + category: DeePKS + type: Integer + description: | + Include V_delta/V_delta_R (Hamiltonian in k/real space) label for DeePKS training. When deepks_out_labels is true and deepks_v_delta > 0 (k space), ABACUS will output deepks_hbase.npy, deepks_vdelta.npy and deepks_htot.npy(htot=hbase+vdelta). When deepks_out_labels is true and deepks_v_delta < 0 (real space), ABACUS will output deepks_hrtot.csr, deepks_hrdelta.csr. Some more files output for different settings. NOTICE: To match the unit Normally used in DeePKS, the unit of Hamiltonian in k space is Hartree. However, currently in R space the unit is still Ry. + * deepks_v_delta = 1: deepks_vdpre.npy, which is used to calculate V_delta during DeePKS training. + * deepks_v_delta = 2: deepks_phialpha.npy and deepks_gevdm.npy, which can be used to calculate deepks_vdpre.npy. A recommanded method for memory saving. + * deepks_v_delta = -1: deepks_vdrpre.npy, which is used to calculate V_delta_R during DeePKS training. + * deepks_v_delta = -2: deepks_phialpha_r.npy and deepks_gevdm.npy, which can be used to calculate deepks_vdrpre.npy. A recommanded method for memory saving. + default_value: "0" + unit: "" + availability: Numerical atomic orbital basis + - name: deepks_out_unittest + category: DeePKS + type: Boolean + description: | + generate files for constructing DeePKS unit test + + [NOTE] Not relevant when running actual calculations. When set to 1, ABACUS needs to be run with only 1 process. + default_value: "False" + unit: "" + availability: "" + - name: estep_per_md + category: "RT-TDDFT: Real-Time Time-Dependent Density Functional Theory" + type: Integer + description: | + The number of electronic propagation steps between two ionic steps. + default_value: "1" + unit: "" + availability: "" + - name: td_dt + category: "RT-TDDFT: Real-Time Time-Dependent Density Functional Theory" + type: Real + description: | + The time step used in electronic propagation. Setting td_dt will reset the value of md_dt to td_dt * estep_per_md. + default_value: md_dt / estep_per_md + unit: fs + availability: "" + - name: td_edm + category: "RT-TDDFT: Real-Time Time-Dependent Density Functional Theory" + type: Integer + description: | + Method to calculate the energy-density matrix, mainly affects the calculation of force and stress. + * 0: Using the original formula. + * 1: Using the formula for ground state (deprecated). Note that this usually does not hold if wave function is not the eigenstate of the Hamiltonian. + default_value: "0" + unit: "" + availability: "" + - name: td_print_eij + category: "RT-TDDFT: Real-Time Time-Dependent Density Functional Theory" + type: Real + description: | + Controls the printing of Hamiltonian matrix elements. + * < 0: Suppress all output. + * >= 0: Print only elements with either i or j exceeding td_print_eij. + default_value: "-1" + unit: Ry + availability: "" + - name: td_propagator + category: "RT-TDDFT: Real-Time Time-Dependent Density Functional Theory" + type: Integer + description: | + Methods of electronic propagation. + * 0: Crank-Nicolson, based on matrix inversion. + * 1: 4th-order Taylor expansion of exponential. + * 2: Enforced time-reversal symmetry (ETRS). + * 3: Crank-Nicolson, based on solving linear equation. + default_value: "0" + unit: "" + availability: "" + - name: td_vext + category: "RT-TDDFT: Real-Time Time-Dependent Density Functional Theory" + type: Boolean + description: | + * True: Add a laser-material interaction (external electric field). + * False: No external electric field. + default_value: "False" + unit: "" + availability: "" + - name: td_vext_dire + category: "RT-TDDFT: Real-Time Time-Dependent Density Functional Theory" + type: String + description: | + Specifies the direction(s) of the external electric field when td_vext is enabled. For example, td_vext_dire 1 2 indicates that external electric fields are applied to both the x and y directions simultaneously. Electric field parameters can also be written as strings. For example, td_gauss_phase 0 1.5707963 indicates that the Gaussian type electric fields in the x and y directions have a phase delay of pi/2. + * 1: The external field direction is along the x-axis. + * 2: The external field direction is along the y-axis. + * 3: The external field direction is along the z-axis. + default_value: "1" + unit: "" + availability: "" + - name: td_stype + category: "RT-TDDFT: Real-Time Time-Dependent Density Functional Theory" + type: Integer + description: | + Type of electric field in the space domain, i.e. the gauge of the electric field. + * 0: Length gauge. + * 1: Velocity gauge. + * 2: Hybrid gauge. See J. Chem. Theory Comput. 2025, 21, 3335-3341 for more information. + default_value: "0" + unit: "" + availability: "" + - name: td_ttype + category: "RT-TDDFT: Real-Time Time-Dependent Density Functional Theory" + type: String + description: | + Type of electric field in the time domain. + * 0: Gaussian type function. + * 1: Trapezoid type function. + * 2: Trigonometric type function. + * 3: Heaviside type function. + default_value: "0" + unit: "" + availability: "" + - name: td_tstart + category: "RT-TDDFT: Real-Time Time-Dependent Density Functional Theory" + type: Integer + description: | + The initial time step when the time-dependent electric field is activated. + default_value: "1" + unit: "" + availability: "" + - name: td_tend + category: "RT-TDDFT: Real-Time Time-Dependent Density Functional Theory" + type: Integer + description: | + The final time step when the time-dependent electric field is deactivated. The field remains active between td_tstart and td_tend. + default_value: "1000" + unit: "" + availability: "" + - name: td_lcut1 + category: "RT-TDDFT: Real-Time Time-Dependent Density Functional Theory" + type: Real + description: | + The lower bound of the interval in the length gauge RT-TDDFT, where the coordinate is the fractional coordinate. + default_value: "0.05" + unit: "" + availability: "" + - name: td_lcut2 + category: "RT-TDDFT: Real-Time Time-Dependent Density Functional Theory" + type: Real + description: | + The upper bound of the interval in the length gauge RT-TDDFT, where the coordinate is the fractional coordinate. + default_value: "0.95" + unit: "" + availability: "" + - name: td_gauss_freq + category: "RT-TDDFT: Real-Time Time-Dependent Density Functional Theory" + type: String + description: | + Frequency of the Gaussian type electric field. + default_value: "22.13" + unit: 1/fs + availability: "" + - name: td_gauss_phase + category: "RT-TDDFT: Real-Time Time-Dependent Density Functional Theory" + type: String + description: | + Phase of the Gaussian type electric field. + default_value: "0.0" + unit: "" + availability: "" + - name: td_gauss_sigma + category: "RT-TDDFT: Real-Time Time-Dependent Density Functional Theory" + type: String + description: | + Pulse width (standard deviation) of the Gaussian type electric field. + default_value: "30.0" + unit: fs + availability: "" + - name: td_gauss_t0 + category: "RT-TDDFT: Real-Time Time-Dependent Density Functional Theory" + type: String + description: | + Step number of the time center of the Gaussian type electric field. + default_value: "100" + unit: "" + availability: "" + - name: td_gauss_amp + category: "RT-TDDFT: Real-Time Time-Dependent Density Functional Theory" + type: String + description: | + Amplitude of the Gaussian type electric field. + default_value: "0.25" + unit: V/Angstrom + availability: "" + - name: td_trape_freq + category: "RT-TDDFT: Real-Time Time-Dependent Density Functional Theory" + type: String + description: | + Frequency of the trapezoid type electric field. + default_value: "1.60" + unit: 1/fs + availability: "" + - name: td_trape_phase + category: "RT-TDDFT: Real-Time Time-Dependent Density Functional Theory" + type: String + description: | + Phase of the trapezoid type electric field. + default_value: "0.0" + unit: "" + availability: "" + - name: td_trape_t1 + category: "RT-TDDFT: Real-Time Time-Dependent Density Functional Theory" + type: String + description: | + Step number of the time interval t1 of the trapezoid type electric field. + default_value: "1875" + unit: "" + availability: "" + - name: td_trape_t2 + category: "RT-TDDFT: Real-Time Time-Dependent Density Functional Theory" + type: String + description: | + Step number of the time interval t2 of the trapezoid type electric field. + default_value: "5625" + unit: "" + availability: "" + - name: td_trape_t3 + category: "RT-TDDFT: Real-Time Time-Dependent Density Functional Theory" + type: String + description: | + Step number of the time interval t3 of the trapezoid type electric field. + default_value: "7500" + unit: "" + availability: "" + - name: td_trape_amp + category: "RT-TDDFT: Real-Time Time-Dependent Density Functional Theory" + type: String + description: | + Amplitude of the trapezoid type electric field. + default_value: "2.74" + unit: V/Angstrom + availability: "" + - name: td_trigo_freq1 + category: "RT-TDDFT: Real-Time Time-Dependent Density Functional Theory" + type: String + description: | + Frequency 1 of the trigonometric type electric field. + default_value: "1.164656" + unit: 1/fs + availability: "" + - name: td_trigo_freq2 + category: "RT-TDDFT: Real-Time Time-Dependent Density Functional Theory" + type: String + description: | + Frequency 2 of the trigonometric type electric field. + default_value: "0.029116" + unit: 1/fs + availability: "" + - name: td_trigo_phase1 + category: "RT-TDDFT: Real-Time Time-Dependent Density Functional Theory" + type: String + description: | + Phase 1 of the trigonometric type electric field. + default_value: "0.0" + unit: "" + availability: "" + - name: td_trigo_phase2 + category: "RT-TDDFT: Real-Time Time-Dependent Density Functional Theory" + type: String + description: | + Phase 2 of the trigonometric type electric field. + default_value: "0.0" + unit: "" + availability: "" + - name: td_trigo_amp + category: "RT-TDDFT: Real-Time Time-Dependent Density Functional Theory" + type: String + description: | + Amplitude of the trigonometric type electric field. + default_value: "2.74" + unit: V/Angstrom + availability: "" + - name: td_heavi_t0 + category: "RT-TDDFT: Real-Time Time-Dependent Density Functional Theory" + type: String + description: | + Step number of the switch time of the Heaviside type electric field. + default_value: "100" + unit: "" + availability: "" + - name: td_heavi_amp + category: "RT-TDDFT: Real-Time Time-Dependent Density Functional Theory" + type: String + description: | + Amplitude of the Heaviside type electric field. + default_value: "1.0" + unit: V/Angstrom + availability: "" + - name: init_vecpot_file + category: "RT-TDDFT: Real-Time Time-Dependent Density Functional Theory" + type: Boolean + description: | + Initialize vector potential through file or not. + * True: Initialize vector potential from file At.dat (unit: a.u.). It consists of four columns, representing the step number and vector potential on each direction. + * False: Calculate vector potential by integrating the electric field. + default_value: "False" + unit: "" + availability: "" + - name: ocp + category: "RT-TDDFT: Real-Time Time-Dependent Density Functional Theory" + type: Boolean + description: | + * True: Fixes the band occupations based on the values specified in ocp_set. + * False: Does not fix the band occupations. + default_value: "False" + unit: "" + availability: "" + - name: ocp_set + category: "RT-TDDFT: Real-Time Time-Dependent Density Functional Theory" + type: String + description: | + If ocp is set to 1, ocp_set must be provided as a string specifying the occupation numbers for each band across all k-points. The format follows a space-separated pattern, where occupations are assigned sequentially to bands for each k-point. A shorthand notation Nx can be used to repeat a value x for N bands. + * Example: + 1 10*1 0 1 represents occupations for 13 bands, where the 12th band is fully unoccupied (0), and all others are occupied (1). + * For a system with multiple k-points, the occupations must be specified for all k-points, following their order in the output file kpoints (may lead to fractional occupations). + * Incorrect specification of ocp_set could lead to inconsistencies in electron counting, causing the calculation to terminate with an error. + default_value: None + unit: "" + availability: "" + - name: of_cd + category: "TDOFDFT: time dependent orbital free density functional theory" + type: Boolean + description: | + Added the current dependent(CD) potential. (https://doi.org/10.1103/PhysRevB.98.144302) + * True: Added the CD potential. + * False: Not added the CD potential. + default_value: "False" + unit: "" + availability: TDOFDFT + - name: of_mcd_alpha + category: "TDOFDFT: time dependent orbital free density functional theory" + type: Real + description: | + The value of the parameter alpha in modified CD potential method. mCDPotential=alpha*CDPotential (proposed in paper PhysRevB.98.144302) + default_value: "1.0" + unit: "" + availability: TDOFDFT + - name: xc_kernel + category: Linear Response TDDFT (Under Development Feature) + type: String + description: | + The exchange-correlation kernel used in the calculation. Currently supported: RPA, LDA, PBE, HSE, HF. + default_value: LDA + unit: "" + availability: "" + - name: lr_init_xc_kernel + category: Linear Response TDDFT (Under Development Feature) + type: "Vector of String (>=1 values)" + description: | + The method to initalize the xc kernel. + * "default": Calculate xc kernel from the ground-state charge density. + * "file": Read the xc kernel on grid from the provided files. The following words should be the paths of ".cube" files, where the first 1 (nspin==1) or 3 (nspin==2, namely spin-aa, spin-ab and spin-bb) will be read in. The parameter xc_kernel will be invalid. Now only LDA-type kernel is supported as the potential will be calculated by directly multiplying the transition density. + * "from_charge_file": Calculate fxc from the charge density read from the provided files. The following words should be the paths of ".cube" files, where the first nspin files will be read in. + default_value: "\"default\"" + unit: "" + availability: "" + - name: lr_solver + category: Linear Response TDDFT (Under Development Feature) + type: String + description: | + The method to solve the Casida equation in LR-TDDFT under Tamm-Dancoff approximation (TDA). + * dav/dav_subspace/cg: Construct and diagonalize the Hamiltonian matrix iteratively with Davidson/Non-ortho-Davidson/CG algorithm. + * lapack: Construct the full matrix and directly diagonalize with LAPACK. + * spectrum: Calculate absorption spectrum only without solving Casida equation. + default_value: dav + unit: "" + availability: "" + - name: lr_thr + category: Linear Response TDDFT (Under Development Feature) + type: Real + description: | + The convergence threshold of iterative diagonalization solver for LR-TDDFT. It is a pure-math number with the same meaning as pw_diag_thr, but since the Casida equation is a one-shot eigenvalue problem, it is also the convergence threshold of LR-TDDFT. + default_value: "1e-2" + unit: "" + availability: "" + - name: nocc + category: Linear Response TDDFT (Under Development Feature) + type: Integer + description: | + The number of occupied orbitals (up to HOMO) used in the LR-TDDFT calculation. + * Note: If the value is illegal ( > nelec/2 or <= 0), it will be autoset to nelec/2. + default_value: nband + unit: "" + availability: "" + - name: nvirt + category: Linear Response TDDFT (Under Development Feature) + type: Integer + description: | + The number of virtual orbitals (starting from LUMO) used in the LR-TDDFT calculation. + default_value: "1" + unit: "" + availability: "" + - name: lr_nstates + category: Linear Response TDDFT (Under Development Feature) + type: Integer + description: | + The number of 2-particle states to be solved. + default_value: "0" + unit: "" + availability: "" + - name: lr_unrestricted + category: Linear Response TDDFT (Under Development Feature) + type: Boolean + description: | + Whether to use unrestricted construction for LR-TDDFT (the matrix size will be doubled). + * True: Always use unrestricted LR-TDDFT. + * False: Use unrestricted LR-TDDFT only when the system is open-shell. + default_value: "False" + unit: "" + availability: "" + - name: abs_wavelen_range + category: Linear Response TDDFT (Under Development Feature) + type: Real Real + description: | + The range of the wavelength for the absorption spectrum calculation. + default_value: 0.0 0.0 + unit: nm + availability: "" + - name: out_wfc_lr + category: Linear Response TDDFT (Under Development Feature) + type: Boolean + description: | + Whether to output the eigenstates (excitation energy) and eigenvectors (excitation amplitude) of the LR-TDDFT calculation. The output files are OUT.{suffix}/Excitation_Amplitude_${processor_rank}.dat. + default_value: "False" + unit: "" + availability: "" + - name: abs_gauge + category: Linear Response TDDFT (Under Development Feature) + type: String + description: | + Whether to use length or velocity gauge to calculate the absorption spectrum in LR-TDDFT. + default_value: length + unit: "" + availability: "" + - name: abs_broadening + category: Linear Response TDDFT (Under Development Feature) + type: Real + description: | + The broadening factor for the absorption spectrum calculation. + default_value: "0.01" + unit: "" + availability: "" + - name: out_freq_ion + category: Output information + type: Integer + description: | + Controls the output interval in ionic steps. When set to a positive integer, information such as charge density, local potential, electrostatic potential, Hamiltonian matrix, overlap matrix, density matrix, and Mulliken population analysis is printed every n ionic steps. + + [NOTE] In RT-TDDFT calculations, this parameter is inactive; output frequency is instead controlled by out_freq_td. + default_value: "0" + unit: "" + availability: "" + - name: out_freq_td + category: Output information + type: Integer + description: | + Controls the output interval in completed electronic evolution steps during RT-TDDFT calculations. When set to a positive integer n, detailed information (see out_freq_ion) is printed every n electron time-evolution steps (i.e., every STEP OF ELECTRON EVOLVE). For example, if you wish to output information once per ionic step, you should set out_freq_td equal to estep_per_md, since one ionic step corresponds to estep_per_md electronic evolution steps. + + [NOTE] This parameter is only active in RT-TDDFT mode (esolver_type = tddft). It has no effect in ground-state calculations. + default_value: "0" + unit: "" + availability: "" + - name: out_freq_elec + category: Output information + type: Integer + description: | + Output the charge density (only binary format, controlled by out_chg), wavefunction (controlled by out_wfc_pw) per out_freq_elec electronic iterations. Note that they are always output when converged or reach the maximum iterations scf_nmax. + default_value: scf_nmax + unit: "" + availability: "" + - name: out_chg + category: Output information + type: "Integer \\[Integer\\](optional)" + description: | + The first integer controls whether to output the charge density on real space grids: + * 1: Output the charge density (in Bohr^-3) on real space grids into the density files in the folder OUT.{suffix} too, which can be read in NSCF calculation. + + In molecular dynamics simulations, the output frequency is controlled by out_freq_ion. + + [NOTE] In the 3.10-LTS version, the file names are SPIN1_CHG.cube and SPIN1_CHG_INI.cube, etc. + default_value: 0 3 + unit: "" + availability: "" + - name: out_pot + category: Output information + type: "Integer \\[Integer\\](optional)" + description: | + * 1: Output the total local potential (i.e., local pseudopotential + Hartree potential + XC potential + external electric field (if exists) + dipole correction potential (if exists) + ...) on real space grids (in Ry) into files in the folder OUT.{suffix}. The files are named as: + * nspin = 1: pots1.cube; + * nspin = 2: pots1.cube and pots2.cube; + * nspin = 4: pots1.cube, pots2.cube, pots3.cube, and pots4.cube + * 2: Output the electrostatic potential on real space grids into OUT.{suffix}/pot_es.cube. The Python script named tools/average_pot/aveElecStatPot.py can be used to calculate the average electrostatic potential along the z-axis and outputs it into ElecStaticPot_AVE. Please note that the total local potential refers to the local component of the self-consistent potential, excluding the non-local pseudopotential. The distinction between the local potential and the electrostatic potential is as follows: local potential = electrostatic potential + XC potential. + * 3: Apart from 1, also output the total local potential of the initial charge density. The files are named as: + * nspin = 1: pots1_ini.cube; + * nspin = 2: pots1_ini.cube and pots2_ini.cube; + * nspin = 4: pots1_ini.cube, pots2_ini.cube, pots3_ini.cube, and pots4_ini.cube + + The optional second integer controls the output precision. If not provided, the default precision is 8. + + In molecular dynamics calculations, the output frequency is controlled by out_freq_ion. + + [NOTE] In the 3.10-LTS version, the file names are SPIN1_POT.cube and SPIN1_POT_INI.cube, etc. + default_value: "0" + unit: "" + availability: "" + - name: out_dmk + category: Output information + type: "Boolean \\[Integer\\](optional)" + description: | + Whether to output the density matrix for each k-point into files in the folder OUT.${suffix}. The files are named as: + * For gamma only case: + * nspin = 1 and 4: dm_nao.csr; + * nspin = 2: dms1_nao.csr and dms2_nao.csr for the two spin channels. + * For multi-k points case: + * nspin = 1 and 4: dmk1_nao.csr, dmk2_nao.csr, ...; + * nspin = 2: dmk1s1_nao.csr... and dmk1s2_nao.csr... for the two spin channels. + + [NOTE] In the 3.10-LTS version, the parameter is named out_dm and the file names are SPIN1_DM and SPIN2_DM, etc. + default_value: "False" + unit: "" + availability: Numerical atomic orbital basis + - name: out_dmr + category: Output information + type: "Boolean \\[Integer\\](optional)" + description: | + Whether to output the density matrix with Bravias lattice vector R index into files in the folder OUT.${suffix}. The files are named as dmr{s}{spin index}{g}{geometry index}{_nao} + {".csr"}. Here, 's' refers to spin, where s1 means spin up channel while s2 means spin down channel, and the sparse matrix format 'csr' is mentioned in out_mat_hs2. Finally, if out_app_flag is set to false, the file name contains the optional 'g' index for each ionic step that may have different geometries, and if out_app_flag is set to true, the density matrix with respect to Bravias lattice vector R accumulates during ionic steps: + * nspin = 1: dmrs1_nao.csr; + * nspin = 2: dmrs1_nao.csr and dmrs2_nao.csr for the two spin channels. + + [NOTE] In the 3.10-LTS version, the parameter is named out_dm1, and the file names are data-DMR-sparse_SPIN0.csr and data-DMR-sparse_SPIN1.csr, etc. + default_value: "False" + unit: "" + availability: Numerical atomic orbital basis (multi-k points) + - name: out_wfc_pw + category: Output information + type: Integer + description: | + Whether to output the electronic wavefunction coefficients into files and store them in the folder OUT.${suffix}. The files are named as wf{k}{k-point index}{s}{spin index}{g}{geometry index}{e}{electronic iteration index}{_pw} + {".txt"/".dat"}. Here, the s index refers to spin but the label will not show up for non-spin-polarized calculations, where s1 means spin up channel while s2 means spin down channel, and s4 refers to spinor wave functions that contains both spin channels with spin-orbital coupling or noncollinear calculations enabled. For scf or nscf calculations, g index will not appear, but the g index appears for geometry relaxation and molecular dynamics, where one can use the out_freq_ion command to control. To print out the electroinc wave functions every few SCF iterations, use the out_freq_elec command and the e index will appear in the file name. + * 0: no output + * 1: (txt format) + * non-gamma-only with nspin=1: wfk1_pw.txt, wfk2_pw.txt, ...; + * non-gamma-only with nspin=2: wfk1s1_pw.txt, wfk1s2_pw.txt, wfk2s1_pw.txt, wfk2s2_pw.txt, ...; + * non-gamma-only with nspin=4: wfk1s4_pw.txt, wfk2s4_pw.txt, ...; + * 2: (binary format) + * non-gamma-only with nspin=1: wfk1_pw.dat, wfk2_pw.dat, ...; + * non-gamma-only with nspin=2: wfk1s1_pw.dat, wfk1s2_pw.dat, wfk2s1_pw.dat, wfk2s2_pw.dat, ...; + * non-gamma-only with nspin=4: wfk1s4_pw.dat, wfk2s4_pw.dat, ...; + + [NOTE] In the 3.10-LTS version, the file names are WAVEFUNC1.dat, WAVEFUNC2.dat, etc. + default_value: "0" + unit: "" + availability: "Output electronic wave functions in plane wave basis, or transform the real-space electronic wave function into plane wave basis (see get_wf option in calculation with NAO basis)" + - name: out_wfc_lcao + category: Output information + type: Integer + description: | + Whether to output the electronic wavefunction coefficients into files and store them in the folder OUT.${suffix}. The files are named as wf{s}{spin index}{k(optional)}{k-point index}{g(optional)}{geometry index1}{_nao} + {".txt"/".dat"}. Here, 's' refers to spin, where s1 means spin up channel while s2 means spin down channel, and 's12' refer to spinor wave functions that contains both spin channels with spin-orbital coupling or noncollinear calculations enabled. In addition, if 'gamma_only' is set to 0, then the optinoal k-point sampling index appears with the k-point index attached to the electronic wave function file names. Finally, if out_app_flag is set to false, the file name contains the optional 'g' index for each ionic step that may have different geometries, and if out_app_flag is set to true, the wave functions accumulate during ionic steps. If the out_app_flag is set to false, a new folder named WFC will be created, and the wave function files will be saved into it. + * 0: no output + * 1: (txt format) + * gamma-only: wfs1_nao.txt or wfs2_nao.txt, ...; + * non-gamma-only: wfs1k1_nao.txt or wfs1k2_nao.txt, ...; + * 2: (binary format) + * gamma-only: wfs1_nao.dat or wfs2_nao.dat, ...; + * non-gamma-only: wfs1k1_nao.dat or wfs1k2_nao.dat, .... + + The corresponding sequence of the orbitals can be seen in Basis Set. + + Also controled by out_freq_ion and out_app_flag. + + [NOTE] In the 3.10-LTS version, the file names are WFC_NAO_GAMMA1_ION1.txt and WFC_NAO_K1_ION1.txt, etc. + default_value: "0" + unit: "" + availability: Numerical atomic orbital basis + - name: out_dos + category: Output information + type: Integer + description: | + Whether to output the density of states (DOS). For more information, refer to the dos.md. + * 0: no output + * 1: output the density of states (DOS) + * nspin=1 or 4: doss1g{geom}_{basis}.txt, where geom is the geometry index when cell changes or ions move while basis is either pw or nao. + * nspin=2: doss1g{geom}_{basis}.txt and doss2g{geom}_{basis}.txt for two spin channles. + * 2: (LCAO) output the density of states (DOS) and the projected density of states (PDOS) + * 3: output the Fermi surface file (fermi.bxsf) in BXSF format that can be visualized by XCrySDen + default_value: "0" + unit: "" + availability: "" + - name: out_ldos + category: Output information + type: "Integer \\[Integer\\](optional)" + description: | + Whether to output the local density of states (LDOS), optionally output precision can be set by a second parameter, default is 3. + * 0: no output + * 1: output the partial charge density for given bias (controlled by stm_bias) in cube file format, which can be used to plot scanning tunneling spectroscopys to mimick STM images using the Python script plot.py. + * 2: output LDOS along a line in real space (controlled by ldos_line). Parameters used to control DOS output are also valid for LDOS. + * 3: output both two LDOS modes above. + default_value: "0" + unit: "" + availability: "" + - name: out_band + category: Output information + type: "Boolean \\[Integer\\](optional)" + description: | + Whether to output the eigenvalues of the Hamiltonian matrix (in eV) into the running log during electronic iterations and into a file at the end of calculations. The former can be used with the 'out_freq_elec' parameter while the latter option allows the output precision to be set via a second parameter, with a default value of 8. The output file names are: + * nspin = 1 or 4: eig.txt; + * nspin = 2: eigs1.txt and eigs2.txt; + * For more information, refer to the band.md + default_value: "False" + unit: "" + availability: "" + - name: out_proj_band + category: Output information + type: Boolean + description: | + Whether to output the projected band structure. For more information, refer to the band.md + default_value: "False" + unit: "" + availability: "" + - name: out_stru + category: Output information + type: Boolean + description: | + Whether to output structure files per ionic step in geometry relaxation calculations into OUT.{istep}_D, where ${istep} is the ionic step. + default_value: "False" + unit: "" + availability: "" + - name: out_level + category: Output information + type: String + description: | + Control the output level of information in OUT.{calculation}.log. + * ie: electronic iteration level, which prints useful information for electronic iterations; + * i: geometry relaxation level, which prints some information for geometry relaxations additionally; + * m: molecular dynamics level, which does not print some information for simplicity. + default_value: ie + unit: "" + availability: "" + - name: out_mat_hs + category: Output information + type: "Boolean \\[Integer\\](optional)" + description: | + Whether to print the upper triangular part of the Hamiltonian matrices and overlap matrices for each k-point into files in the directory OUT.${suffix}. The second number controls precision. For more information, please refer to hs_matrix.md. Also controled by out_freq_ion and out_app_flag. + * For gamma only case: + * nspin = 1: hks1_nao.txt for the Hamiltonian matrix and sks1_nao.txt for the overlap matrix; + * nspin = 2: hks1_nao.txt and hks2_nao.txt for the Hamiltonian matrix and sks1_nao.txt for the overlap matrix. Note that the code will not output sks2_nao.txt because it is the same as sks1_nao.txt; + * nspin = 4: hks12_nao.txt for the Hamiltonian matrix and sks12_nao.txt for the overlap matrix. + * For multi-k points case: + * nspin = 1: hks1k1_nao.txt for the Hamiltonian matrix at the 1st k-point, and sks1k1_nao.txt for the overlap matrix for the 1st k-point, ...; + * nspin = 2: hks1k1_nao.txt and hks2k1_nao.txt for the two spin channels of the Hamiltonian matrix at the 1st k-point, and sks1k1_nao.txt for the overlap matrix for the 1st k-point. Note that the code will not output sks2k1_nao.txt because it is the same as sks1k1_nao.txt, ...; + * nspin = 4: hks12k1_nao.txt for the Hamiltonian matrix at the 1st k-point, and sks12k1_nao.txt for the overlap matrix for the 1st k-point, ...; + + [NOTE] In the 3.10-LTS version, the file names are data-0-H and data-0-S, etc. + default_value: False 8 + unit: Ry + availability: Numerical atomic orbital basis + - name: out_mat_hs2 + category: Output information + type: Boolean + description: | + Whether to print files containing the Hamiltonian matrix and overlap matrix into files in the directory OUT.${suffix}. For more information, please refer to hs_matrix.md. + + [NOTE] In the 3.10-LTS version, the file names are data-HR-sparse_SPIN0.csr and data-SR-sparse_SPIN0.csr, etc. + default_value: "False" + unit: Ry + availability: Numerical atomic orbital basis (not gamma-only algorithm) + - name: out_mat_tk + category: Output information + type: "Boolean \\[Integer\\](optional)" + description: | + Whether to print the upper triangular part of the kinetic matrices for each k-point into OUT.${suffix}/tks1ki_nao.txt, where i is the index of k points. One may optionally provide a second parameter to specify the precision. + + [NOTE] In the 3.10-LTS version, the file names are data-TR-sparse_SPIN0.csr, etc. + default_value: "False [8]" + unit: Ry + availability: Numerical atomic orbital basis + - name: out_mat_r + category: Output information + type: Boolean + description: | + Whether to print the matrix representation of the position matrix into a file named rr.csr in the directory OUT.${suffix}. If calculation is set to get_s, the position matrix can be obtained without scf iterations. For more information, please refer to position_matrix.md. + + [NOTE] In the 3.10-LTS version, the file name is data-rR-sparse.csr. + default_value: "False" + unit: Bohr + availability: Numerical atomic orbital basis (not gamma-only algorithm) + - name: out_mat_t + category: Output information + type: Boolean + description: | + Generate files containing the kinetic energy matrix. The format will be the same as the Hamiltonian matrix and overlap matrix as mentioned in out_mat_hs2. The name of the files will be trs1_nao.csr and so on. Also controled by out_freq_ion and out_app_flag. + + [NOTE] In the 3.10-LTS version, the file name is data-TR-sparse_SPIN0.csr. + default_value: "False" + unit: Ry + availability: Numerical atomic orbital basis (not gamma-only algorithm) + - name: out_mat_dh + category: Output information + type: Boolean + description: | + Whether to print files containing the derivatives of the Hamiltonian matrix. The format will be the same as the Hamiltonian matrix and overlap matrix as mentioned in out_mat_hs2. The name of the files will be dhrxs1_nao.csr, dhrys1_nao.csr, dhrzs1_nao.csr and so on. Also controled by out_freq_ion and out_app_flag. + + [NOTE] In the 3.10-LTS version, the file name is data-dHRx-sparse_SPIN0.csr and so on. + default_value: "False" + unit: Ry/Bohr + availability: Numerical atomic orbital basis (not gamma-only algorithm) + - name: out_mat_ds + category: Output information + type: Boolean + description: | + Whether to print files containing the derivatives of the overlap matrix. The format will be the same as the overlap matrix as mentioned in out_mat_dh. The name of the files will be dsrxs1.csr and so on. Also controled by out_freq_ion and out_app_flag. This feature can be used with calculation get_s. + + [NOTE] In the 3.10-LTS version, the file name is data-dSRx-sparse_SPIN0.csr and so on. + default_value: "False" + unit: Ry/Bohr + availability: Numerical atomic orbital basis (not gamma-only algorithm) + - name: out_mat_xc + category: Output information + type: Boolean + description: | + Whether to print the upper triangular part of the exchange-correlation matrices in Kohn-Sham orbital representation: for each k point into files in the directory OUT.i_nao.txt, where {suffix}/vxc_out.dat. If EXX is calculated, the local and EXX part of band energy will also be printed in OUT.{suffix}/vxc_exx_out.dat, respectively. All the vxc_out.dat files contains 3 integers (nk, nspin, nband) followed by nk*nspin*nband lines of energy Hartree and eV. + + [NOTE] In the 3.10-LTS version, the file name is k-$k-Vxc and so on. + default_value: "False" + unit: Ry + availability: Numerical atomic orbital (NAO) and NAO-in-PW basis + - name: out_mat_xc2 + category: Output information + type: Boolean + description: | + Whether to print the exchange-correlation matrices in numerical orbital representation: in CSR format in the directory OUT.s. + + [NOTE] In the 3.10-LTS version, the file name is Vxc_R_spin$s and so on. + default_value: "False" + unit: Ry + availability: Numerical atomic orbital (NAO) basis + - name: out_mat_l + category: Output information + type: "Boolean \\[Integer\\](optional)" + description: | + Whether to print the expectation value of the angular momentum operator , , and in the basis of the localized atomic orbitals. The files are named OUT.{suffix}_Lx.dat, OUT.{suffix}_Ly.dat, and OUT.{suffix}_Lz.dat. The second integer controls the precision of the output. + default_value: False 8 + unit: "" + availability: Numerical atomic orbital (NAO) basis + - name: out_xc_r + category: Output information + type: "Integer \\[Integer\\](optional)" + description: | + The first integer controls whether to output the exchange-correlation (in Bohr^-3) on real space grids using Libxc to folder OUT.${suffix}: + * 0: rho, amag, sigma, exc + * 1: vrho, vsigma + * 2: v2rho2, v2rhosigma, v2sigma2 + * 3: v3rho3, v3rho2sigma, v3rhosigma2, v3sigma3 + * 4: v4rho4, v4rho3sigma, v4rho2sigma2, v4rhosigma3, v4sigma4 The meaning of the files is presented in Libxc + + The second integer controls the precision of the charge density output, if not given, will use 3 as default. + + The circle order of the charge density on real space grids is: x is the outer loop, then y and finally z (z is moving fastest). + default_value: "-1 3" + unit: "" + availability: "" + - name: out_eband_terms + category: Output information + type: Boolean + description: | + Whether to print the band energy terms separately in the file OUT.{term}_out.dat. The terms include the kinetic, pseudopotential (local + nonlocal), Hartree and exchange-correlation (including exact exchange if calculated). + default_value: "False" + unit: "" + availability: Numerical atomic orbital basis + - name: out_mul + category: Output information + type: Boolean + description: | + Whether to print the Mulliken population analysis result into OUT.${suffix}/mulliken.txt. In molecular dynamics calculations, the output frequency is controlled by out_freq_ion. + default_value: "False" + unit: "" + availability: Numerical atomic orbital basis + - name: out_app_flag + category: Output information + type: Boolean + description: | + Whether to output r(R), H(R), S(R), T(R), dH(R), dS(R), and wfc matrices in an append manner during molecular dynamics calculations. Check input parameters out_mat_r, out_mat_hs2, out_mat_t, out_mat_dh, out_mat_hs and out_wfc_lcao for more information. + default_value: "true" + unit: "" + availability: Numerical atomic orbital basis (not gamma-only algorithm) + - name: out_ndigits + category: Output information + type: Integer + description: | + Controls the length of decimal part of output data, such as charge density, Hamiltonian matrix, Overlap matrix and so on. + default_value: "8" + unit: "" + availability: out_mat_hs 1 case presently. + - name: out_element_info + category: Output information + type: Boolean + description: | + Whether to print element information into files in the directory OUT.{element_label}, including pseudopotential and orbital information of the element (in atomic Ryberg units). + default_value: "False" + unit: "" + availability: "" + - name: restart_save + category: Output information + type: Boolean + description: | + Whether to save charge density files per ionic step, which are used to restart calculations. According to the value of read_file_dir: + * auto: These files are saved in folder OUT.{read_file_dir}/restart/. + + If EXX(exact exchange) is calculated (i.e. dft_fuctional==hse/hf/pbe0/scan0 or rpa==True), the Hexx(R) files for each processor will also be saved in the above folder, which can be read in EXX calculation with restart_load==True. + default_value: "False" + unit: "" + availability: Numerical atomic orbital basis + - name: rpa + category: Output information + type: Boolean + description: | + Generate output files used in rpa calculations. + + [NOTE] If symmetry is set to 1, additional files containing the necessary information for exploiting symmetry in the subsequent rpa calculation will be output: irreducible_sector.txt, symrot_k.txt and symrot_R.txt. + default_value: "False" + unit: "" + availability: "" + - name: out_pchg + category: Output information + type: String + description: | + Specifies the electronic states to calculate the charge densities with state index for, using a space-separated string of 0s and 1s. Each digit in the string corresponds to a state, starting from the first state. A 1 indicates that the charge density should be calculated for that state, while a 0 means the state will be ignored. The parameter allows a compact and flexible notation (similar to ocp_set), for example the syntax 1 4*0 5*1 0 is used to denote the selection of states: 1 means calculate for the first state, 4*0 skips the next four states, 5*1 means calculate for the following five states, and the final 0 skips the next state. It's essential that the total count of states does not exceed the total number of states (nbands); otherwise, it results in an error, and the process exits. The input string must contain only numbers and the asterisk (*) for repetition, ensuring correct format and intention of state selection. The outputs comprise multiple .cube files following the naming convention pchgi[state]s[spin]k[kpoint].cube. + default_value: none + unit: "" + availability: "For both PW and LCAO. When basis_type = lcao, used when calculation = get_pchg." + - name: out_wfc_norm + category: Output information + type: String + description: | + Specifies the electronic states to calculate the real-space wave function modulus (norm, or known as the envelope function) with state index. The syntax and state selection rules are identical to out_pchg, but the output is the norm of the wave function. The outputs comprise multiple .cube files following the naming convention wfi[state]s[spin]k[kpoint].cube. + default_value: none + unit: "" + availability: "For both PW and LCAO. When basis_type = lcao, used when calculation = get_wf." + - name: out_wfc_re_im + category: Output information + type: String + description: | + Specifies the electronic states to calculate the real and imaginary parts of the wave function with state index. The syntax and state selection rules are identical to out_pchg, but the output contains both the real and imaginary components of the wave function. The outputs comprise multiple .cube files following the naming convention wfi[state]s[spin]k[kpoint][re/im].cube. + default_value: none + unit: "" + availability: "For both PW and LCAO. When basis_type = lcao, used when calculation = get_wf." + - name: if_separate_k + category: Output information + type: Boolean + description: | + Specifies whether to write the partial charge densities for all k-points to individual files or merge them. Warning: Enabling symmetry may produce unwanted results due to reduced k-point weights and symmetry operations in real space. Therefore when calculating partial charge densities, if you are not sure what you want exactly, it is strongly recommended to set symmetry = -1. It is noteworthy that your symmetry setting should remain the same as that in the SCF procedure. + default_value: "false" + unit: "" + availability: "For both PW and LCAO. When basis_type = pw, used if out_pchg is set. When basis_type = lcao, used only when calculation = get_pchg and gamma_only = 0." + - name: out_elf + category: Output information + type: "Integer \\[Integer\\](optional)" + description: | + Whether to output the electron localization function (ELF) in the folder `OUT.${suffix}`. The files are named as + * nspin = 1: + * elf.cube: ${\rm{ELF}} = \frac{1}{1+\chi^2}$, $\chi = \frac{\frac{1}{2}\sum_{i}{f_i |\nabla\psi_{i}|^2} - \frac{|\nabla\rho|^2}{8\rho}}{\frac{3}{10}(3\pi^2)^{2/3}\rho^{5/3}}$; + * nspin = 2: + * elf1.cube, elf2.cube: ${\rm{ELF}}_\sigma = \frac{1}{1+\chi_\sigma^2}$, $\chi_\sigma = \frac{\frac{1}{2}\sum_{i}{f_i |\nabla\psi_{i,\sigma}|^2} - \frac{|\nabla\rho_\sigma|^2}{8\rho_\sigma}}{\frac{3}{10}(6\pi^2)^{2/3}\rho_\sigma^{5/3}}$; + * elf.cube: ${\rm{ELF}} = \frac{1}{1+\chi^2}$, $\chi = \frac{\frac{1}{2}\sum_{i,\sigma}{f_i |\nabla\psi_{i,\sigma}|^2} - \sum_{\sigma}{\frac{|\nabla\rho_\sigma|^2}{8\rho_\sigma}}}{\sum_{\sigma}{\frac{3}{10}(6\pi^2)^{2/3}\rho_\sigma^{5/3}}}$; + * nspin = 4 (noncollinear): + * elf.cube: ELF for total charge density, ${\rm{ELF}} = \frac{1}{1+\chi^2}$, $\chi = \frac{\frac{1}{2}\sum_{i}{f_i |\nabla\psi_{i}|^2} - \frac{|\nabla\rho|^2}{8\rho}}{\frac{3}{10}(3\pi^2)^{2/3}\rho^{5/3}}$ + + The second integer controls the precision of the kinetic energy density output, if not given, will use 3 as default. For purpose restarting from this file and other high-precision involved calculation, recommend to use 10. + + In molecular dynamics calculations, the output frequency is controlled by out_freq_ion. + default_value: 0 3 + unit: "" + availability: Only for Kohn-Sham DFT and Orbital Free DFT. + - name: out_spillage + category: Output information + type: Integer + description: | + This output is only intentively needed by the ABACUS numerical atomic orbital generation workflow. This parameter is used to control whether to output the overlap integrals between truncated spherical Bessel functions (TSBFs) and plane-wave basis expanded wavefunctions (named as OVERLAP_Q), and between TSBFs (named as OVERLAP_Sq), also their first order derivatives. The output files are named starting with orb_matrix. A value of 2 would enable the output. + default_value: "0" + unit: "" + availability: Only for Kohn-Sham DFT with plane-wave basis. + - name: out_dipole + category: "RT-TDDFT: Real-Time Time-Dependent Density Functional Theory" + type: Boolean + description: | + * True: Output electric dipole moment. + * False: Do not output electric dipole moment. + default_value: "False" + unit: "" + availability: "" + - name: out_current + category: "RT-TDDFT: Real-Time Time-Dependent Density Functional Theory" + type: Integer + description: | + * 0: Do not output current. + * 1: Output current using the two-center integral, faster. + * 2: Output current using the matrix commutation, more precise. + default_value: "0" + unit: "" + availability: "" + - name: out_current_k + category: "RT-TDDFT: Real-Time Time-Dependent Density Functional Theory" + type: Boolean + description: | + * True: Output current for each k-points separately. + * False: Output current in total. + default_value: "False" + unit: "" + availability: "" + - name: out_efield + category: "RT-TDDFT: Real-Time Time-Dependent Density Functional Theory" + type: Boolean + description: | + Whether to output the electric field data to files. When enabled, writes real-time electric field values (unit: V/A) into files named efield_[num].txt, where [num] is the sequential index of the electric field ranges from 0 to N-1 for N configured fields. It is noteworthy that the field type sequence follows td_ttype, while the direction sequence follows td_vext_dire. + * True: Output electric field. + * False: Do not output electric field. + default_value: "False" + unit: "" + availability: "" + - name: out_vecpot + category: "RT-TDDFT: Real-Time Time-Dependent Density Functional Theory" + type: Boolean + description: | + Output vector potential or not (unit: a.u.). + * True: Output vector potential into file At.dat. + * False: Do not output vector potential. + default_value: "False" + unit: "" + availability: "" + - name: cal_symm_repr + category: System variables + type: "Integer \\[Integer\\](optional)" + description: | + Whether to print the matrix representation of symmetry operation to running log file. If the first value is given as 1, then all matrix representations will be printed. The second optional parameter controls the precision (number of digits) to print, default is 3, which is enough for a quick check. + default_value: 1 3 + unit: "" + availability: "" + - name: spillage_outdir + category: Input files + type: String + description: | + The directory to save the spillage files. + default_value: "\"./\"" + unit: "" + availability: Used only for plane wave basis set. + - name: dos_edelta_ev + category: Density of states + type: Real + description: | + The step size in writing Density of States (DOS) + default_value: "0.01" + unit: eV + availability: "" + - name: dos_sigma + category: Density of states + type: Real + description: | + The width of the Gaussian factor when obtaining smeared Density of States (DOS) + default_value: "0.07" + unit: eV + availability: "" + - name: dos_scale + category: Density of states + type: Real + description: | + Defines the energy range of DOS output as (emax-emin)*(1+dos_scale), centered at (emax+emin)/2. This parameter will be used when dos_emin and dos_emax are not set. + default_value: "0.01" + unit: eV + availability: "" + - name: dos_emin_ev + category: Density of states + type: Real + description: | + The minimal range for Density of States (DOS) + * If set, "dos_scale" will be ignored. + default_value: Minimal eigenenergy of + unit: eV + availability: "" + - name: dos_emax_ev + category: Density of states + type: Real + description: | + The maximal range for Density of States (DOS) + * If set, "dos_scale" will be ignored. + default_value: Maximal eigenenergy of + unit: eV + availability: "" + - name: dos_nche + category: Density of states + type: Integer + description: | + The order of Chebyshev expansions when using Stochastic Density Functional Theory (SDFT) to calculate DOS. + default_value: "100" + unit: "" + availability: "" + - name: stm_bias + category: Density of states + type: Real Real(optional) Integer(optional) + description: | + The bias voltage used to calculate local density of states to simulate scanning tunneling microscope, see details in out_ldos. When using three parameters: + + * The first parameter specifies the initial bias voltage value. + * The second parameter defines the voltage increment (step size between consecutive bias values). + * The third parameter determines the total number of voltage points + default_value: "1.0" + unit: V + availability: "" + - name: ldos_line + category: Density of states + type: "Real*6 Integer(optional)" + description: | + Specify the path of the three-dimensional space and display LDOS in the form of a two-dimensional color chart, see details in out_ldos. The first three paramenters are the direct coordinates of the start point, the next three paramenters are the direct coordinates of the end point, and the final one is the number of points along the path, whose default is 100. + default_value: 0.0 0.0 0.0 0.0 0.0 1.0 100 + unit: "" + availability: "" + - name: cal_cond + category: Electronic conductivities + type: Boolean + description: | + Whether to calculate electronic conductivities. + default_value: "False" + unit: "" + availability: basis_type = pw + - name: cond_che_thr + category: Electronic conductivities + type: Real + description: | + Control the error of Chebyshev expansions for conductivities. + default_value: "1e-8" + unit: "" + availability: esolver_type = sdft + - name: cond_dw + category: Electronic conductivities + type: Real + description: | + Frequency interval () for frequency-dependent conductivities. + default_value: "0.1" + unit: eV + availability: basis_type = pw + - name: cond_wcut + category: Electronic conductivities + type: Real + description: | + Cutoff frequency for frequency-dependent conductivities. + default_value: "10.0" + unit: eV + availability: basis_type = pw + - name: cond_dt + category: Electronic conductivities + type: Real + description: | + Time interval () to integrate Onsager coefficients. + default_value: "0.02" + unit: a.u. + availability: basis_type = pw + - name: cond_dtbatch + category: Electronic conductivities + type: Integer + description: | + exp(iH\dt\cond_dtbatch) is expanded with Chebyshev expansion to calculate conductivities. It is faster but costs more memory. + * If cond_dtbatch = 0: Autoset this parameter to make expansion orders larger than 100. + default_value: "0" + unit: "" + availability: esolver_type = sdft + - name: cond_smear + category: Electronic conductivities + type: Integer + description: | + Smearing method for conductivities + * 1: Gaussian smearing + * 2: Lorentzian smearing + default_value: "1" + unit: "" + availability: "" + - name: cond_fwhm + category: Electronic conductivities + type: Real + description: | + FWHM for conductivities. For Gaussian smearing, ; for Lorentzian smearing, . + default_value: "0.4" + unit: eV + availability: basis_type = pw + - name: cond_nonlocal + category: Electronic conductivities + type: Boolean + description: | + Whether to consider nonlocal potential correction when calculating velocity matrix . + * True: . + * False: . + default_value: "True" + unit: "" + availability: basis_type = pw + - name: berry_phase + category: Berry phase and wannier90 interface + type: Boolean + description: | + Controls the calculation of Berry phase + * true: Calculate Berry phase. + * false: Do not calculate Berry phase. + default_value: "false" + unit: "" + availability: "" + - name: gdir + category: Berry phase and wannier90 interface + type: Integer + description: | + The direction of the polarization in the lattice vector for Berry phase calculation + * 1: Calculate the polarization in the direction of the lattice vector a_1 defined in the STRU file. + * 2: Calculate the polarization in the direction of the lattice vector a_2 defined in the STRU file. + * 3: Calculate the polarization in the direction of the lattice vector a_3 defined in the STRU file. + default_value: "3" + unit: "" + availability: "" + - name: towannier90 + category: Berry phase and wannier90 interface + type: Boolean + description: | + Controls the generation of files for the Wannier90 code. + * 1: Generate files for the Wannier90 code. + * 0: Do not generate files for the Wannier90 code. + default_value: "0" + unit: "" + availability: "" + - name: nnkpfile + category: Berry phase and wannier90 interface + type: String + description: | + The file name generated when running "wannier90 -pp ..." command + default_value: seedname.nnkp + unit: "" + availability: "" + - name: wannier_method + category: Berry phase and wannier90 interface + type: Integer + description: | + Only available on LCAO basis, using different methods to generate "\.mmn" file and "\.amn" file. + * 1: Calculated using the lcao_in_pw method, the calculation accuracy can be improved by increasing ecutwfc to maintain consistency with the pw basis set results. + * 2: The overlap between atomic orbitals is calculated using grid integration. The radial grid points are generated using the Gauss-Legendre method, while the spherical grid points are generated using the Lebedev-Laikov method. + default_value: "1" + unit: "" + availability: "" + - name: wannier_spin + category: Berry phase and wannier90 interface + type: String + description: | + The spin direction for the Wannier function calculation when nspin is set to 2 + * up: Calculate spin up for the Wannier function. + * down: Calculate spin down for the Wannier function. + default_value: up + unit: "" + availability: "" + - name: out_wannier_mmn + category: Berry phase and wannier90 interface + type: Boolean + description: | + Write the "*.mmn" file or not. + * 0: don't write the "*.mmn" file. + * 1: write the "*.mmn" file. + default_value: "1" + unit: "" + availability: "" + - name: out_wannier_amn + category: Berry phase and wannier90 interface + type: Boolean + description: | + Write the "*.amn" file or not. + * 0: don't write the "*.amn" file. + * 1: write the "*.amn" file. + default_value: "1" + unit: "" + availability: "" + - name: out_wannier_eig + category: Berry phase and wannier90 interface + type: Boolean + description: | + Write the "*.eig" file or not. + * 0: don't write the "*.eig" file. + * 1: write the "*.eig" file. + default_value: "1" + unit: "" + availability: "" + - name: out_wannier_unk + category: Berry phase and wannier90 interface + type: Boolean + description: | + Write the "UNK.*" file or not. + * 0: don't write the "UNK.*" file. + * 1: write the "UNK.*" file. + default_value: "0" + unit: "" + availability: "" + - name: out_wannier_wvfn_formatted + category: Berry phase and wannier90 interface + type: Boolean + description: | + Write the "UNK.*" file in ASCII format or binary format. + * 0: write the "UNK.*" file in binary format. + * 1: write the "UNK.*" file in ASCII format (text file format). + default_value: "1" + unit: "" + availability: "" + - name: efield_flag + category: Electric field and dipole correction + type: Boolean + description: | + Added the electric field. + * True: A saw-like potential simulating an electric field is added to the bare ionic potential. + * False: Not added the electric field. + default_value: "False" + unit: "" + availability: "" + - name: dip_cor_flag + category: Electric field and dipole correction + type: Boolean + description: | + Added a dipole correction to the bare ionic potential. + * True: A dipole correction is also added to the bare ionic potential. + * False: A dipole correction is not added to the bare ionic potential. + + [NOTE] Note: If you do not want any electric field, the parameter efield_amp should be set to zero. This should ONLY be used in a slab geometry for surface calculations, with the discontinuity FALLING IN THE EMPTY SPACE. + default_value: "False" + unit: "" + availability: With dip_cor_flag = True and efield_flag = True. + - name: efield_dir + category: Electric field and dipole correction + type: Integer + description: | + The direction of the electric field or dipole correction is parallel to the reciprocal lattice vector, so the potential is constant in planes defined by FFT grid points, efield_dir can set to 0, 1 or 2. + * 0: parallel to the first reciprocal lattice vector + * 1: parallel to the second reciprocal lattice vector + * 2: parallel to the third reciprocal lattice vector + default_value: "2" + unit: "" + availability: with efield_flag = True. + - name: efield_pos_max + category: Electric field and dipole correction + type: Real + description: | + Position of the maximum of the saw-like potential along crystal axis efield_dir, within the unit cell, 0 <= efield_pos_max < 1. + default_value: Autoset to center of vacuum - width of vacuum / 20 + unit: "" + availability: with efield_flag = True. + - name: efield_pos_dec + category: Electric field and dipole correction + type: Real + description: | + Zone in the unit cell where the saw-like potential decreases, 0 < efield_pos_dec < 1. + default_value: Autoset to width of vacuum / 10 + unit: "" + availability: with efield_flag = True. + - name: efield_amp + category: Electric field and dipole correction + type: Real + description: | + Amplitude of the electric field. The saw-like potential increases with slope efield_amp in the region from efield_pos_max+efield_pos_dec-1) to (efield_pos_max), then decreases until (efield_pos_max+efield_pos_dec), in units of the crystal vector efield_dir. + + [NOTE] Note: The change of slope of this potential must be located in the empty region, or else unphysical forces will result. + default_value: "0.0" + unit: "a.u., 1 a.u. = 51.4220632*10^10 V/m." + availability: with efield_flag = True. + - name: gate_flag + category: Gate field (compensating charge) + type: Boolean + description: | + Controls the addition of compensating charge by a charged plate for charged cells. + * true: A charged plate is placed at the zgate position to add compensating charge. The direction is determined by efield_dir. + * false: No compensating charge is added. + default_value: "false" + unit: "" + availability: "" + - name: zgate + category: Gate field (compensating charge) + type: Real + description: | + Position of the charged plate in the unit cell + default_value: "0.5" + unit: Unit cell size + availability: "" + - name: block + category: Gate field (compensating charge) + type: Boolean + description: | + Controls the addition of a potential barrier to prevent electron spillover. + * true: A potential barrier is added from block_down to block_up with a height of block_height. If dip_cor_flag is set to true, efield_pos_dec is used to smoothly increase and decrease the potential barrier. + * false: No potential barrier is added. + default_value: "false" + unit: "" + availability: "" + - name: block_down + category: Gate field (compensating charge) + type: Real + description: | + Lower beginning of the potential barrier + default_value: "0.45" + unit: Unit cell size + availability: "" + - name: block_up + category: Gate field (compensating charge) + type: Real + description: | + Upper beginning of the potential barrier + default_value: "0.55" + unit: Unit cell size + availability: "" + - name: block_height + category: Gate field (compensating charge) + type: Real + description: | + Height of the potential barrier + default_value: "0.1" + unit: Rydberg + availability: "" + - name: imp_sol + category: Implicit solvation model + type: Boolean + description: | + Calculate implicit solvation correction + default_value: "False" + unit: "" + availability: "" + - name: eb_k + category: Implicit solvation model + type: Real + description: | + The relative permittivity of the bulk solvent, 80 for water + default_value: "80" + unit: "" + availability: imp_sol is true. + - name: tau + category: Implicit solvation model + type: Real + description: | + The effective surface tension parameter that describes the cavitation, the dispersion, and the repulsion interaction between the solute and the solvent which are not captured by the electrostatic terms + default_value: "1.0798e-05" + unit: "" + availability: "" + - name: sigma_k + category: Implicit solvation model + type: Real + description: | + The width of the diffuse cavity that is implicitly determined by the electronic structure of the solute + default_value: "0.6" + unit: "" + availability: "" + - name: nc_k + category: Implicit solvation model + type: Real + description: | + The value of the electron density at which the dielectric cavity forms + default_value: "0.00037" + unit: "" + availability: "" + - name: vdw_method + category: vdW correction + type: String + description: | + Specifies the method used for Van der Waals (VdW) correction. Available options are: + * d2: Grimme's D2 dispersion correction method + * d3_0: Grimme's DFT-D3(0) dispersion correction method (zero-damping) + * d3_bj: Grimme's DFTD3(BJ) dispersion correction method (BJ-damping) + * none: no vdW correction + + [NOTE] ABACUS supports automatic setting of DFT-D3 parameters for common functionals. To benefit from this feature, please specify the parameter dft_functional explicitly, otherwise the autoset procedure will crash. If not satisfied with the built-in parameters, any manual setting on vdw_s6, vdw_s8, vdw_a1 and vdw_a2 will overwrite the automatic values. + default_value: none + unit: "" + availability: "" + - name: vdw_s6 + category: vdW correction + type: String + description: | + This scale factor is used to optimize the interaction energy deviations in van der Waals (vdW) corrected calculations. The recommended values of this parameter are dependent on the chosen vdW correction method and the DFT functional being used. For DFT-D2, the recommended values are 0.75 (PBE), 1.2 (BLYP), 1.05 (B-P86), 1.0 (TPSS), and 1.05 (B3LYP). If not set, will use values of PBE functional. For DFT-D3, recommended values with different DFT functionals can be found on the here. If not set, will search in ABACUS built-in dataset based on the dft_functional keywords. User set value will overwrite the searched value. + default_value: "" + unit: "" + availability: "vdw_method is set to d2, d3_0, or d3_bj" + - name: vdw_s8 + category: vdW correction + type: String + description: | + This scale factor is relevant for D3(0) and D3(BJ) van der Waals (vdW) correction methods. The recommended values of this parameter with different DFT functionals can be found on the webpage. If not set, will search in ABACUS built-in dataset based on the dft_functional keywords. User set value will overwrite the searched value. + default_value: "" + unit: "" + availability: vdw_method is set to d3_0 or d3_bj + - name: vdw_a1 + category: vdW correction + type: String + description: | + This damping function parameter is relevant for D3(0) and D3(BJ) van der Waals (vdW) correction methods. The recommended values of this parameter with different DFT functionals can be found on the webpage. If not set, will search in ABACUS built-in dataset based on the dft_functional keywords. User set value will overwrite the searched value. + default_value: "" + unit: "" + availability: vdw_method is set to d3_0 or d3_bj + - name: vdw_a2 + category: vdW correction + type: String + description: | + This damping function parameter is only relevant for D3(0) and D3(BJ) van der Waals (vdW) correction methods. The recommended values of this parameter with different DFT functionals can be found on the webpage. If not set, will search in ABACUS built-in dataset based on the dft_functional keywords. User set value will overwrite the searched value. + default_value: "" + unit: "" + availability: vdw_method is set to d3_0 or d3_bj + - name: vdw_d + category: vdW correction + type: Real + description: | + Controls the damping rate of the damping function in the DFT-D2 method. + default_value: "20" + unit: "" + availability: vdw_method is set to d2 + - name: vdw_abc + category: vdW correction + type: Boolean + description: | + Determines whether three-body terms are calculated for DFT-D3 methods. + * True: ABACUS will calculate the three-body term. + * False: The three-body term is not included. + default_value: "False" + unit: "" + availability: vdw_method is set to d3_0 or d3_bj + - name: vdw_c6_file + category: vdW correction + type: String + description: | + Specifies the name of the file containing parameters for each element when using the D2 method. If not set, ABACUS uses the default parameters (Jnm6/mol) stored in the program. To manually set the parameters, provide a file containing the parameters. An example is given by: + + H 0.1 Si 9.0 + + Namely, each line contains the element name and the corresponding parameter. + default_value: default + unit: "" + availability: vdw_method is set to d2 + - name: vdw_c6_unit + category: vdW correction + type: String + description: | + Specifies the unit of the provided parameters in the D2 method. Available options are: + * Jnm6/mol (J nm^6/mol) + * eVA (eV Angstrom) + default_value: Jnm6/mol + unit: "" + availability: vdw_C6_file is not default + - name: vdw_r0_file + category: vdW correction + type: String + description: | + Specifies the name of the file containing parameters for each element when using the D2 method. If not set, ABACUS uses the default parameters (Angstrom) stored in the program. To manually set the parameters, provide a file containing the parameters. An example is given by: + + Li 1.0 Cl 2.0 + + Namely, each line contains the element name and the corresponding parameter. + default_value: default + unit: "" + availability: vdw_method is set to d2 + - name: vdw_r0_unit + category: vdW correction + type: String + description: | + Specifies the unit for the parameters in the D2 method when manually set by the user. Available options are: + * A (Angstrom) + * Bohr + default_value: "A" + unit: "" + availability: vdw_R0_file is not default + - name: vdw_cutoff_type + category: vdW correction + type: String + description: | + Determines the method used for specifying the cutoff radius in periodic systems when applying Van der Waals correction. Available options are: + * radius: The supercell is selected within a sphere centered at the origin with a radius defined by vdw_cutoff_radius. + * period: The extent of the supercell is explicitly specified using the vdw_cutoff_period keyword. + default_value: radius + unit: "" + availability: "" + - name: vdw_cutoff_radius + category: vdW correction + type: String + description: | + Defines the radius of the cutoff sphere when vdw_cutoff_type is set to radius. The default values depend on the chosen vdw_method. + default_value: "" + unit: defined by vdw_radius_unit (default Bohr) + availability: vdw_cutoff_type is set to radius + - name: vdw_radius_unit + category: vdW correction + type: String + description: | + Specify the unit of vdw_cutoff_radius. Available options are: + * A(Angstrom) + * Bohr + default_value: Bohr + unit: "" + availability: vdw_cutoff_type is set to radius + - name: vdw_cutoff_period + category: vdW correction + type: Integer Integer Integer + description: | + The three integers supplied here explicitly specify the extent of the supercell in the directions of the three basis lattice vectors. + default_value: 3 3 3 + unit: "" + availability: vdw_cutoff_type is set to period + - name: vdw_cn_thr + category: vdW correction + type: Real + description: | + The cutoff radius when calculating coordination numbers. + default_value: "40" + unit: "defined by vdw_cn_thr_unit (default: Bohr)" + availability: vdw_method is set to d3_0 or d3_bj + - name: vdw_cn_thr_unit + category: vdW correction + type: String + description: | + Unit of the coordination number cutoff (vdw_cn_thr). Available options are: + * A(Angstrom) + * Bohr + default_value: Bohr + unit: "" + availability: "" + - name: exx_fock_alpha + category: Exact Exchange (Common) + type: Real + description: | + Fraction of full-ranged Fock exchange $1/r$ in range-separated hybrid functionals. + default_value: see hybrid_func_params + unit: "" + availability: "" + - name: exx_erfc_alpha + category: Exact Exchange (Common) + type: Real + description: | + Fraction of short-ranged Fock exchange $\mathrm{erfc}(\omega r)/r$ in range-separated hybrid functionals. + default_value: see hybrid_func_params + unit: "" + availability: "" + - name: exx_erfc_omega + category: Exact Exchange (Common) + type: Real + description: | + Range-separation parameter $\omega$ in the short-ranged Fock term $\mathrm{erfc}(\omega r)/r$. + default_value: see hybrid_func_params + unit: "" + availability: "" + - name: exx_separate_loop + category: Exact Exchange (Common) + type: Boolean + description: | + There are two types of iterative approaches provided by ABACUS to evaluate Fock exchange. + * False: Start with a GGA-Loop, and then Hybrid-Loop, in which EXX Hamiltonian is updated with electronic iterations. + * True: A two-step method is employed, i.e. in the inner iterations, density matrix is updated, while in the outer iterations, is calculated based on density matrix that converges in the inner iteration. + default_value: "True" + unit: "" + availability: "" + - name: exx_hybrid_step + category: Exact Exchange (Common) + type: Integer + description: | + The maximal iteration number of the outer-loop, where the Fock exchange is calculated + default_value: "100" + unit: "" + availability: exx_separate_loop==1 + - name: exx_mixing_beta + category: Exact Exchange (Common) + type: Real + description: | + Mixing parameter for densty matrix in each iteration of the outer-loop + default_value: "1.0" + unit: "" + availability: exx_separate_loop==1 + - name: exx_fock_lambda + category: Exact Exchange (LCAO in PW) + type: Real + description: | + It is used to compensate for divergence points at G=0 in the evaluation of Fock exchange using lcao_in_pw method. + default_value: "0.3" + unit: "" + availability: basis_type==lcao_in_pw + - name: exx_pca_threshold + category: Exact Exchange (LCAO) + type: Real + description: | + To accelerate the evaluation of four-center integrals (), the product of atomic orbitals are expanded in the basis of auxiliary basis functions (ABF): . The size of the ABF (i.e. number of ) is reduced using principal component analysis. When a large PCA threshold is used, the number of ABF will be reduced, hence the calculation becomes faster. However, this comes at the cost of computational accuracy. A relatively safe choice of the value is 1e-4. + default_value: "1E-4" + unit: "" + availability: "" + - name: exx_c_threshold + category: Exact Exchange (LCAO) + type: Real + description: | + See also the entry exx_pca_threshold. Smaller components (less than exx_c_threshold) of the matrix are neglected to accelerate calculation. The larger the threshold is, the faster the calculation and the lower the accuracy. A relatively safe choice of the value is 1e-4. + default_value: "1E-4" + unit: "" + availability: "" + - name: exx_cs_inv_thr + category: Exact Exchange (LCAO) + type: Real + description: | + By default, the Coulomb matrix inversion required for obtaining LRI coefficients is performed using LU decomposition. However, this approach may suffer from numerical instabilities when a large set of auxiliary basis functions (ABFs) is employed. When exx_cs_inv_thr > 0, the inversion is instead carried out via matrix diagonalization. Eigenvalues smaller than exx_cs_inv_thr are discarded to improve numerical stability. A relatively safe and commonly recommended value is 1e-5. + default_value: "-1" + unit: "" + availability: "" + - name: exx_v_threshold + category: Exact Exchange (LCAO) + type: Real + description: | + See also the entry exx_pca_threshold. With the approximation , the four-center integral in Fock exchange is expressed as , where is a double-center integral. Smaller values of the V matrix can be truncated to accelerate calculation. The larger the threshold is, the faster the calculation and the lower the accuracy. A relatively safe choice of the value is 0, i.e. no truncation. + default_value: "1E-1" + unit: "" + availability: "" + - name: exx_dm_threshold + category: Exact Exchange (LCAO) + type: Real + description: | + The Fock exchange can be expressed as where D is the density matrix. Smaller values of the density matrix can be truncated to accelerate calculation. The larger the threshold is, the faster the calculation and the lower the accuracy. A relatively safe choice of the value is 1e-4. + default_value: "1E-4" + unit: "" + availability: "" + - name: exx_c_grad_threshold + category: Exact Exchange (LCAO) + type: Real + description: | + See also the entry exx_pca_threshold. is used in force. Smaller components (less than exx_c_grad_threshold) of the matrix are neglected to accelerate calculation. The larger the threshold is, the faster the calculation and the lower the accuracy. A relatively safe choice of the value is 1e-4. + default_value: "1E-4" + unit: "" + availability: "" + - name: exx_v_grad_threshold + category: Exact Exchange (LCAO) + type: Real + description: | + See also the entry exx_pca_threshold. With the approximation , the four-center integral in Fock exchange is expressed as , where is a double-center integral. is used in force. Smaller values of the V matrix can be truncated to accelerate calculation. The larger the threshold is, the faster the calculation and the lower the accuracy. A relatively safe choice of the value is 0, i.e. no truncation. + default_value: "1E-1" + unit: "" + availability: "" + - name: exx_c_grad_r_threshold + category: Exact Exchange (LCAO) + type: Real + description: | + See also the entry exx_pca_threshold. is used in stress. Smaller components (less than exx_c_grad_r_threshold) of the matrix are neglected to accelerate calculation. The larger the threshold is, the faster the calculation and the lower the accuracy. A relatively safe choice of the value is 1e-4. + default_value: "1E-4" + unit: "" + availability: "" + - name: exx_v_grad_r_threshold + category: Exact Exchange (LCAO) + type: Real + description: | + See also the entry exx_pca_threshold. With the approximation , the four-center integral in Fock exchange is expressed as , where is a double-center integral. is used in force and stress. Smaller values of the V matrix can be truncated to accelerate calculation. The larger the threshold is, the faster the calculation and the lower the accuracy. A relatively safe choice of the value is 0, i.e. no truncation. + default_value: "1E-1" + unit: "" + availability: "" + - name: exx_ccp_rmesh_times + category: Exact Exchange (LCAO) + type: String + description: | + This parameter determines how many times larger the radial mesh required for calculating Columb potential is to that of atomic orbitals. The value should be larger than 0. Reducing this value can effectively increase the speed of self-consistent calculations using hybrid functionals. + default_value: "" + unit: "" + availability: "" + - name: exx_opt_orb_lmax + category: Exact Exchange (LCAO) + type: Integer + description: | + The maximum l of the spherical Bessel functions, when the radial part of opt-ABFs are generated as linear combinations of spherical Bessel functions. A reasonable choice is 2. + default_value: "0" + unit: "" + availability: calculation==gen_opt_abfs + - name: exx_opt_orb_ecut + category: Exact Exchange (LCAO) + type: Real + description: | + The cut-off of plane wave expansion, when the plane wave basis is used to optimize the radial ABFs. A reasonable choice is 60. + default_value: "0" + unit: Ry + availability: calculation==gen_opt_abfs + - name: exx_opt_orb_tolerence + category: Exact Exchange (LCAO) + type: Real + description: | + The threshold when solving for the zeros of spherical Bessel functions. A reasonable choice is 1e-12. + default_value: "1E-12" + unit: "" + availability: calculation==gen_opt_abfs + - name: exx_real_number + category: Exact Exchange (LCAO) + type: String + description: | + * True: Enforce LibRI to use double data type. + * False: Enforce LibRI to use complex data type. Setting it to True can effectively improve the speed of self-consistent calculations with hybrid functionals. + default_value: depends on the gamma_only option + unit: "" + availability: "" + - name: exx_singularity_correction + category: Exact Exchange (LCAO) + type: String + description: | + * spencer: see Phys. Rev. B 77, 193110 (2008). + * revised_spencer: see Phys. Rev. Mater. 5, 013807 (2021). Set the scheme of Coulomb singularity correction. + default_value: default + unit: "" + availability: "" + - name: rpa_ccp_rmesh_times + category: Exact Exchange (LCAO) + type: Real + description: | + How many times larger the radial mesh required is to that of atomic orbitals in the postprocess calculation of the bare Coulomb matrix for RPA, GW, etc. + default_value: "10" + unit: "" + availability: "" + - name: exx_symmetry_realspace + category: Exact Exchange (LCAO) + type: Boolean + description: | + * False: only rotate k-space density matrix D(k) from irreducible k-points to accelerate diagonalization + * True: rotate both D(k) and Hexx(R) to accelerate both diagonalization and EXX calculation + default_value: "True" + unit: "" + availability: symmetry==1 and exx calculation (dft_fuctional==hse/hf/pbe0/scan0 or rpa==True) + - name: out_ri_cv + category: Exact Exchange (LCAO) + type: Boolean + description: | + Whether to output the coefficient tensor C(R) and ABFs-representation Coulomb matrix V(R) for each atom pair and cell in real space. + default_value: "false" + unit: "" + availability: "" + - name: dft_plus_u + category: DFT+U correction + type: Integer + description: | + Determines whether to calculate the plus U correction, which is especially important for correlated electrons. + * 1: Calculate plus U correction with radius-adjustable localized projections (with parameter onsite_radius). + * 2: Calculate plus U correction using first zeta of NAOs as projections (this is old method for testing). + * 0: Do not calculate plus U correction. + default_value: "0" + unit: "" + availability: "" + - name: dft_plus_dmft + category: DFT+U correction + type: Boolean + description: | + Whether to enable DFT+DMFT calculation. True: DFT+DMFT; False: standard DFT calculation. + default_value: "False" + unit: "" + availability: basis_type==lcao + - name: orbital_corr + category: DFT+U correction + type: Vector of Integer (n values where n is the number of atomic types) + description: | + Specifies which orbits need plus U correction for each atom type ( for atom type 1, 2, 3, respectively). + * -1: The plus U correction will not be calculated for this atom. + * 1: For p-electron orbits, the plus U correction is needed. + * 2: For d-electron orbits, the plus U correction is needed. + * 3: For f-electron orbits, the plus U correction is needed. + default_value: "-1" + unit: "" + availability: "" + - name: hubbard_u + category: DFT+U correction + type: Vector of Real (n values where n is the number of atomic types) + description: | + Specifies the Hubbard Coulomb interaction parameter U (eV) in plus U correction, which should be specified for each atom unless the Yukawa potential is used. + + [NOTE] Note: Since only the simplified scheme by Duradev is implemented, the 'U' here is actually U-effective, which is given by Hubbard U minus Hund J. + default_value: "0.0" + unit: "" + availability: "" + - name: yukawa_potential + category: DFT+U correction + type: Boolean + description: | + Determines whether to use the local screen Coulomb potential method to calculate the values of U and J. + * True: hubbard_u does not need to be specified. + * False: hubbard_u does need to be specified. + default_value: "False" + unit: "" + availability: "" + - name: yukawa_lambda + category: DFT+U correction + type: Real + description: | + The screen length of Yukawa potential. If left to default, the screen length will be calculated as an average of the entire system. It's better to stick to the default setting unless there is a very good reason. + default_value: Calculated on the fly. + unit: "" + availability: DFT+U with yukawa_potential = True. + - name: uramping + category: DFT+U correction + type: Real + description: | + Once uramping > 0.15 eV. DFT+U calculations will start SCF with U = 0 eV, namely normal LDA/PBE calculations. Once SCF restarts when drho 0." + - name: omc + category: DFT+U correction + type: Integer + description: | + The parameter controls the form of occupation matrix control used. + * 0: No occupation matrix control is performed, and the onsite density matrix will be calculated from wavefunctions in each SCF step. + * 1: The first SCF step will use an initial density matrix read from a file named initial_onsite.dm, but for later steps, the onsite density matrix will be updated. + * 2: The same onsite density matrix from initial_onsite.dm will be used throughout the entire calculation. + + [NOTE] The easiest way to create initial_onsite.dm is to run a DFT+U calculation, look for a file named onsite.dm in the OUT.prefix directory, and make replacements there. The format of the file is rather straight-forward. + default_value: "0" + unit: "" + availability: "" + - name: onsite_radius + category: DFT+U correction + type: Real + description: | + * The onsite_radius parameter facilitates modulation of the single-zeta portion of numerical atomic orbitals used for DFT+U projections. + * The modulation algorithm applies a smooth truncation to the orbital tail followed by normalization. A representative profile is $f(r)=\frac{1}{2}\left[1+\operatorname{erf}\!\left(\frac{r_c-r}{\sigma}\right)\right]$, where $r_c$ is the cutoff radius and $\sigma=\gamma r_c$ controls smoothness. + default_value: "3.0" + unit: Bohr + availability: dft_plus_u is set to 1 + - name: sc_mag_switch + category: Spin-Constrained DFT + type: Boolean + description: | + Switch to control spin-constrained DFT calculation + default_value: "False" + unit: "" + availability: "" + - name: decay_grad_switch + category: Spin-Constrained DFT + type: Boolean + description: | + Switch to control gradient break condition in spin-constrained DFT + default_value: "False" + unit: "" + availability: "" + - name: sc_thr + category: Spin-Constrained DFT + type: Real + description: | + Convergence criterion of spin-constrained iteration (RMS) in uB + default_value: "1.0e-6" + unit: uB + availability: sc_mag_switch is true + - name: nsc + category: Spin-Constrained DFT + type: Integer + description: | + Maximal number of spin-constrained iteration + default_value: "100" + unit: "" + availability: sc_mag_switch is true + - name: nsc_min + category: Spin-Constrained DFT + type: Integer + description: | + Minimum number of spin-constrained iteration + default_value: "2" + unit: "" + availability: sc_mag_switch is true + - name: sc_scf_nmin + category: Spin-Constrained DFT + type: Integer + description: | + Minimum number of outer scf loop before initializing lambda loop + default_value: "2" + unit: "" + availability: sc_mag_switch is true + - name: alpha_trial + category: Spin-Constrained DFT + type: Real + description: | + Initial trial step size for lambda in eV/uB^2 + default_value: "0.01" + unit: eV/uB^2 + availability: sc_mag_switch is true + - name: sccut + category: Spin-Constrained DFT + type: Real + description: | + Maximal step size for lambda in eV/uB + default_value: "3.0" + unit: eV/uB + availability: sc_mag_switch is true + - name: sc_drop_thr + category: Spin-Constrained DFT + type: Real + description: | + Convergence criterion ratio of lambda iteration in Spin-constrained DFT + default_value: "1.0e-2" + unit: "" + availability: sc_mag_switch is true + - name: sc_scf_thr + category: Spin-Constrained DFT + type: Real + description: | + Density error threshold for inner loop of spin-constrained SCF + default_value: "1.0e-4" + unit: "" + availability: sc_mag_switch is true + - name: qo_switch + category: Quasiatomic Orbital (QO) analysis + type: Boolean + description: | + Whether to let ABACUS output QO analysis required files + default_value: "False" + unit: "" + availability: "" + - name: qo_basis + category: Quasiatomic Orbital (QO) analysis + type: String + description: | + Type of QO basis function: + * hydrogen: hydrogen-like basis + * pswfc: read basis from pseudopotential + * szv: single-zeta valence basis + default_value: szv + unit: "" + availability: "" + - name: qo_strategy + category: Quasiatomic Orbital (QO) analysis + type: Vector of String (1 or n values where n is the number of atomic types) + description: | + Strategy to generate radial orbitals for QO analysis. For hydrogen: energy-valence, for pswfc and szv: all + default_value: "for hydrogen: energy-valence, for pswfc and szv: all" + unit: "" + availability: "" + - name: qo_screening_coeff + category: Quasiatomic Orbital (QO) analysis + type: Vector of Real (n values where n is the number of atomic types; 1 value allowed for qo_basis=pswfc) + description: | + The screening coefficient for each atom type to rescale the shape of radial orbitals + default_value: "0.1" + unit: Bohr^-1 + availability: "" + - name: qo_thr + category: Quasiatomic Orbital (QO) analysis + type: Real + description: | + The convergence threshold determining the cutoff of generated orbital. Lower threshold will yield orbital with larger cutoff radius. + default_value: "1.0e-6" + unit: "" + availability: "" + - name: pexsi_npole + category: PEXSI + type: Integer + description: | + The number of poles used in the pole expansion method, should be a even number. + default_value: "40" + unit: "" + availability: "" + - name: pexsi_inertia + category: PEXSI + type: Boolean + description: | + Whether inertia counting is used at the very beginning. + default_value: "True" + unit: "" + availability: "" + - name: pexsi_nmax + category: PEXSI + type: Integer + description: | + Maximum number of PEXSI iterations after each inertia counting procedure. + default_value: "80" + unit: "" + availability: "" + - name: pexsi_comm + category: PEXSI + type: Boolean + description: | + Whether to construct PSelInv communication pattern. + default_value: "True" + unit: "" + availability: "" + - name: pexsi_storage + category: PEXSI + type: Boolean + description: | + Whether to use symmetric storage space used by the Selected Inversion algorithm for symmetric matrices. + default_value: "True" + unit: "" + availability: "" + - name: pexsi_ordering + category: PEXSI + type: Integer + description: | + Ordering strategy for factorization and selected inversion. 0: Parallel ordering using ParMETIS, 1: Sequential ordering using METIS, 2: Multiple minimum degree ordering + default_value: "0" + unit: "" + availability: "" + - name: pexsi_row_ordering + category: PEXSI + type: Integer + description: | + Row permutation strategy for factorization and selected inversion, 0: No row permutation, 1: Make the diagonal entry of the matrix larger than the off-diagonal entries. + default_value: "1" + unit: "" + availability: "" + - name: pexsi_nproc + category: PEXSI + type: Integer + description: | + Number of processors for PARMETIS. Only used if pexsi_ordering == 0. + default_value: "1" + unit: "" + availability: "" + - name: pexsi_symm + category: PEXSI + type: Boolean + description: | + Whether the matrix is symmetric. + default_value: "True" + unit: "" + availability: "" + - name: pexsi_trans + category: PEXSI + type: Boolean + description: | + Whether to factorize the transpose of the matrix. + default_value: "False" + unit: "" + availability: "" + - name: pexsi_method + category: PEXSI + type: Integer + description: | + The pole expansion method to be used. 1 for Cauchy Contour Integral method, 2 for Moussa optimized method. + default_value: "1" + unit: "" + availability: "" + - name: pexsi_nproc_pole + category: PEXSI + type: Integer + description: | + The point parallelizaion of PEXSI. Recommend two points parallelization. + default_value: "1" + unit: "" + availability: "" + - name: pexsi_temp + category: PEXSI + type: Real + description: | + Temperature in Fermi-Dirac distribution, in Ry, should have the same effect as the smearing sigma when smearing method is set to Fermi-Dirac. + default_value: "0.015" + unit: "" + availability: "" + - name: pexsi_gap + category: PEXSI + type: Real + description: | + Spectral gap, this can be set to be 0 in most cases. + default_value: "0" + unit: "" + availability: "" + - name: pexsi_delta_e + category: PEXSI + type: Real + description: | + Upper bound for the spectral radius of S^{-1}H. + default_value: "20" + unit: "" + availability: "" + - name: pexsi_mu_lower + category: PEXSI + type: Real + description: | + Initial guess of lower bound for mu. + default_value: "-10" + unit: "" + availability: "" + - name: pexsi_mu_upper + category: PEXSI + type: Real + description: | + Initial guess of upper bound for mu. + default_value: "10" + unit: "" + availability: "" + - name: pexsi_mu + category: PEXSI + type: Real + description: | + Initial guess for mu (for the solver). + default_value: "0" + unit: "" + availability: "" + - name: pexsi_mu_thr + category: PEXSI + type: Real + description: | + Stopping criterion in terms of the chemical potential for the inertia counting procedure. + default_value: "0.05" + unit: "" + availability: "" + - name: pexsi_mu_expand + category: PEXSI + type: Real + description: | + If the chemical potential is not in the initial interval, the interval is expanded by this value. + default_value: "0.3" + unit: "" + availability: "" + - name: pexsi_mu_guard + category: PEXSI + type: Real + description: | + Safe guard criterion in terms of the chemical potential to reinvoke the inertia counting procedure. + default_value: "0.2" + unit: "" + availability: "" + - name: pexsi_elec_thr + category: PEXSI + type: Real + description: | + Stopping criterion of the PEXSI iteration in terms of the number of electrons compared to numElectronExact. + default_value: "0.001" + unit: "" + availability: "" + - name: pexsi_zero_thr + category: PEXSI + type: Real + description: | + if the absolute value of CCS matrix element is less than this value, it will be considered as zero. + default_value: "1e-10" + unit: "" + availability: "" + - name: out_alllog + category: Output information + type: Boolean + description: | + Whether to print information into individual logs from all ranks in an MPI run. + * True: Information from each rank will be written into individual files named OUT.{calculation}_{suffix}/running_${calculation}.log. + default_value: "False" + unit: "" + availability: "" + - name: nurse + category: Variables useful for debugging + type: Integer + description: | + Debugging flag for developers + default_value: "0" + unit: "" + availability: "" + - name: t_in_h + category: Variables useful for debugging + type: Boolean + description: | + Specify whether to include kinetic term in obtaining the Hamiltonian matrix. + * 0: No. + * 1: Yes. + default_value: "1" + unit: "" + availability: "" + - name: vl_in_h + category: Variables useful for debugging + type: Boolean + description: | + Specify whether to include local pseudopotential term in obtaining the Hamiltonian matrix. + * 0: No. + * 1: Yes. + default_value: "1" + unit: "" + availability: "" + - name: vnl_in_h + category: Variables useful for debugging + type: Boolean + description: | + Specify whether to include non-local pseudopotential term in obtaining the Hamiltonian matrix. + * 0: No. + * 1: Yes. + default_value: "1" + unit: "" + availability: "" + - name: vh_in_h + category: Variables useful for debugging + type: Boolean + description: | + Specify whether to include Hartree potential term in obtaining the Hamiltonian matrix. + * 0: No. + * 1: Yes. + default_value: "1" + unit: "" + availability: "" + - name: vion_in_h + category: Variables useful for debugging + type: Boolean + description: | + Specify whether to include local ionic potential term in obtaining the Hamiltonian matrix. + * 0: No. + * 1: Yes. + default_value: "1" + unit: "" + availability: "" + - name: test_force + category: Variables useful for debugging + type: Boolean + description: | + Specify whether to output the detailed components in forces. + * 0: No. + * 1: Yes. + default_value: "0" + unit: "" + availability: "" + - name: test_stress + category: Variables useful for debugging + type: Boolean + description: | + Specify whether to output the detailed components in stress. + * 0: No. + * 1: Yes. + default_value: "0" + unit: "" + availability: "" + - name: test_skip_ewald + category: Variables useful for debugging + type: Boolean + description: | + Specify whether to skip the calculation of the ewald energy. + * 0: No. + * 1: Yes. + default_value: "0" + unit: "" + availability: "" + - name: ri_hartree_benchmark + category: Linear Response TDDFT + type: String + description: | + Whether to use the RI approximation for the Hartree term in LR-TDDFT for benchmark (with FHI-aims/ABACUS read-in style) + default_value: none + unit: "" + availability: "" + - name: aims_nbasis + category: Linear Response TDDFT + type: A number(ntype) of Integers + description: | + Atomic basis set size for each atom type (with the same order as in STRU) in FHI-aims. + default_value: "{} (empty list, where ABACUS use its own basis set size)" + unit: "" + availability: ri_hartree_benchmark = aims + - name: rdmft + category: Reduced Density Matrix Functional Theory + type: Boolean + description: | + Whether to perform rdmft calculation (reduced density matrix funcional theory) + default_value: "false" + unit: "" + availability: "" + - name: rdmft_power_alpha + category: Reduced Density Matrix Functional Theory + type: Real + description: | + The alpha parameter of power-functional(or other exx-type/hybrid functionals) which used in RDMFT, g(occ_number) = occ_number^alpha + default_value: "0.656" + unit: "" + availability: "" + - name: "exxace" + category: Exact Exchange (PW) + type: Boolean + description: | + Whether to use the ACE method (https://doi.org/10.1021/acs.jctc.6b00092) to accelerate the calculation the Fock exchange matrix. Should be set to true most of the time. + * True: Use the ACE method to calculate the Fock exchange operator. + * False: Use the traditional method to calculate the Fock exchange operator. + default_value: "True" + unit: "" + availability: exx_separate_loop==True. + - name: exx_gamma_extrapolation + category: Exact Exchange (PW) + type: Boolean + description: | + Whether to use the gamma point extrapolation method to calculate the Fock exchange operator. See https://doi.org/10.1103/PhysRevB.79.205114 for details. Should be set to true most of the time. + default_value: "True" + unit: "" + availability: "" + - name: ecutexx + category: Exact Exchange (PW) + type: Real + description: | + The energy cutoff for EXX (Fock) exchange operator in plane wave basis calculations. Reducing ecutexx below ecutrho may significantly accelerate EXX computations. This speed improvement comes with a reduced numerical accuracy in the exchange energy calculation. + default_value: same as ecutrho + unit: Ry + availability: "" + - name: exx_thr_type + category: Exact Exchange (PW) + type: String + description: | + The type of threshold used to judge whether the outer loop has converged in the separate loop EXX calculation. + * energy: use the change of exact exchange energy to judge convergence. + * density: if the change of charge density difference between two successive outer loop iterations is seen as converged according to scf_thr, then the outer loop is seen as converged. + default_value: density + unit: "" + availability: "" + - name: exx_ene_thr + category: Exact Exchange (PW) + type: Real + description: | + The threshold for the change of exact exchange energy to judge convergence of the outer loop in the separate loop EXX calculation. + default_value: "1e-5" + unit: Ry + availability: exx_thr_type==energy diff --git a/docs/quick_start/easy_install.md b/docs/quick_start/easy_install.md index 8ca65f19b5..aae9bca308 100644 --- a/docs/quick_start/easy_install.md +++ b/docs/quick_start/easy_install.md @@ -1,6 +1,6 @@ # Easy Installation -This guide helps you install ABACUS with basic features. **For DeePKS, DeePMD and Libxc support, or building with `make`, please refer to [the advanced installation guide](../advanced/install.md)** after going through this page. We recommend building ABACUS with `cmake` to avoid dependency issues. We recommend compiling ABACUS (and possibly its requirements) from the source code using the latest compiler for the best performace. You can try [toolchain](#install-requirements-by-toolchain) to install ABACUS and dependencies in a source-code compilation way with convience. You can also deploy ABACUS **without building** by [Docker](#container-deployment) or [conda](#install-by-conda). Please note that ABACUS only supports Linux; for Windows users, please consider using [WSL](https://learn.microsoft.com/en-us/windows/wsl/) or docker. +This guide helps you install ABACUS with basic features. **For DeePKS, DeePMD and Libxc support, or building with `make`, please refer to [the advanced installation guide](../advanced/install.md)** after going through this page. We recommend building ABACUS with `cmake` to avoid dependency issues. We recommend compiling ABACUS (and possibly its requirements) from the source code using the latest compiler for the best performace. You can use [toolchain](#install-by-toolchain) to install ABACUS and dependencies in a source-code compilation way with convience. You can also deploy ABACUS **without building** by [Docker](#container-deployment) or [conda](#install-by-conda). Please note that ABACUS only supports Linux; for Windows users, please consider using [WSL](https://learn.microsoft.com/en-us/windows/wsl/) or docker. ## Get ABACUS source code @@ -12,6 +12,34 @@ ABACUS source code can be obtained via one of the following choices: - Get the source code of a stable version [here](https://github.com/deepmodeling/abacus-develop/releases) - If you have connection issues accessing GitHub, please try out our official [Gitee repo](https://gitee.com/deepmodeling/abacus-develop/): e.g. `git clone https://gitee.com/deepmodeling/abacus-develop.git`. This Gitee repo is updated synchronously with GitHub. +## Update to latest release by git + +Please check the [release page](https://github.com/deepmodeling/abacus-develop/releases) for the release note of a new version. + +It is OK to download the new source code from beginning following the previous step. + +You can update your cloned git repo (from Github or Gitee) in-place with the following commands: + +```bash +git remote -v +# Check if the output contains the line below +# origin https://github.com/deepmodeling/abacus-develop.git (fetch) +# The remote name is marked as "upstream" if you clone the repo from your own fork. + +# Replace "origin" with "upstream" or the remote name corresponding to deepmodeling/abacus-develop if necessary +git fetch origin +git checkout v3.x.x # Replace the tag with the latest version, like v3.10.0 +git describe --tags # Verify if the tag has been successfully checked out +``` + +Then proceed to the [Build and Install](#build-and-install) part. If you encountered errors, try remove the `build` directory first and reconfigure. + +To use the codes under active development: + +```bash +git checkout develop +git pull +``` ## Prerequisites @@ -34,65 +62,83 @@ These requirements support the calculation of plane-wave basis in ABACUS. For LC - [CEREAL](https://uscilab.github.io/cereal/). - [ELPA](https://elpa.mpcdf.mpg.de/) >= 2017 (optional). -## Install requirements +## Install by toolchain -Some of these packages can be installed with popular package management system, such as `apt` and `yum`: +We offer a set of [toolchain](https://github.com/deepmodeling/abacus-develop/tree/develop/toolchain) +scripts to compile and install all the requirements and ABACUS itself +automatically and suitable for machine characteristic in an online or offline way. +The toolchain can be downloaded with ABACUS repo, and users can easily compile the requirements by running *toolchain_[gnu,intel,gcc-aocl,aocc-aocl].sh* and ABACUS itself by running *build_abacus_[gnu,intel,gcc-aocl,aocc-aocl].sh* script in the toolchain directory in `GNU`, `Intel-oneAPI` , `GCC-AMD AOCL` and `AMD AOCC-AOCL` toolchain. +Sometimes, ABACUS by toolchain installation may have better efficient performance due to the suitable compiled dependencies. One should read the [README in toolchain](https://github.com/deepmodeling/abacus-develop/tree/develop/toolchain/README.md) for most of the information before use, and related tutorials can be accessed via ABACUS WeChat platform. + +## Install by conda + +Conda is a package management system with a separated environment, not requiring system privileges. +You can refer to [DeepModeling conda FAQ](https://docs.deepmodeling.com/faq/conda.html) for how to setup a conda environment. +A pre-built ABACUS binary with all requirements is available at [conda-forge](https://anaconda.org/conda-forge/abacus). It supports advanced features including Libxc, LibRI, and DeePKS. Conda will install the GPU-supported version of ABACUS if a valid GPU driver is present. Please refer to [the advanced installation guide](../advanced/install.md) for more details. ```bash -sudo apt update && sudo apt install -y libopenblas-openmp-dev liblapack-dev libscalapack-mpi-dev libelpa-dev libfftw3-dev libcereal-dev libxc-dev g++ make cmake bc git pkgconf -``` +# Install +# We recommend installing ABACUS in a new environment to avoid potential conflicts: +conda create -n abacus_env abacus "libblas=*=*mkl" mpich -c conda-forge -> Installing ELPA by apt only matches requirements on Ubuntu 22.04. For earlier linux distributions, you should build ELPA from source. +# Run +conda activate abacus_env +OMP_NUM_THREADS=1 mpirun -n 4 abacus -We recommend [Intel® oneAPI toolkit](https://software.intel.com/content/www/us/en/develop/tools/oneapi/commercial-base-hpc.html) (former Intel® Parallel Studio) as toolchain. The [Intel® oneAPI Base Toolkit](https://software.intel.com/content/www/us/en/develop/tools/oneapi/all-toolkits.html#base-kit) contains Intel® oneAPI Math Kernel Library (aka `MKL`), including `BLAS`, `LAPACK`, `ScaLAPACK` and `FFTW3`. The [Intel® oneAPI HPC Toolkit](https://software.intel.com/content/www/us/en/develop/tools/oneapi/all-toolkits.html#hpc-kit) contains Intel® MPI Library, and C++ compiler(including MPI compiler). -> Please note that building `elpa` with a different MPI library may cause conflict. -> Don't forget to [set environment variables](https://software.intel.com/content/www/us/en/develop/documentation/get-started-with-intel-oneapi-render-linux/top/configure-your-system.html) before you start! `cmake` will use Intel MKL if the environment variable `MKLROOT` is set. +# Update +conda update -n abacus_env abacus -c conda-forge +``` -Please refer to our [guide](https://github.com/deepmodeling/abacus-develop/wiki/Building-and-Running-ABACUS) on installing requirements. +> If OpenBLAS gives warning about OpenMP threads, please install conda package `"openblas=*=openmp*"` or `"libblas=*=*mkl"`. See [switching BLAS implementation in conda](https://conda-forge.org/docs/maintainer/knowledge_base.html#switching-blas-implementation). -## Install requirements by toolchain +> ABACUS supports `OpenMPI` and `MPICH` variant. Install `mpich` or `openmpi` package to switch MPI library if required. -We offer a set of [toolchain](https://github.com/deepmodeling/abacus-develop/tree/develop/toolchain) -scripts to compile and install all the requirements -automatically and suitable for machine characteristic in an online or offline way. -The toolchain can be downloaded with ABACUS repo, and users can easily compile the requirements by running *toolchain_[gnu,intel].sh* and ABACUS itself by running *build_abacus_[gnu,intel].sh* script in the toolchain directory in both `GNU` and `Intel-oneAPI` toolchain. -Sometimes, ABACUS by toolchain installation may have better efficient performance due to the suitable compiled dependencies. +For more details on building a conda package of ABACUS locally, please refer to the [conda recipe file](https://github.com/deepmodeling/abacus-develop/blob/develop/conda/meta.yaml). -Users should read the README in toolchain directory for most of the information before use, and a tutorial for using this toolchain can be accessed in [bohrium-notebook](https://nb.bohrium.dp.tech/detail/5215742477) as reference. +> Note: The [deepmodeling conda channel](https://anaconda.org/deepmodeling/abacus) offers historical versions of ABACUS. -> Notice: the toolchain is under development, please let we know if you encounter any problem in using this toolchain by raising issue or contacting us. +### Developing with conda +It is possible to build ABACUS from source based on the conda environment. -## Update to latest release by git +```bash +conda create -n abacus_env abacus -c conda-forge +conda activate abacus_env +export CMAKE_PREFIX_PATH=$CONDA_PREFIX:$CMAKE_PREFIX_PATH -Please check the [release page](https://github.com/deepmodeling/abacus-develop/releases) for the release note of a new version. +# By default OpenBLAS is used; run `conda install "blas=*=mkl" mkl_fft mkl-devel -c conda-forge` to switch implementation. +export MKLROOT=$CONDA_PREFIX # If Intel MKL is required. -It is OK to download the new source code from beginning following the previous step. +export CMAKE_PREFIX_PATH=`python -c 'import torch;print(torch.utils.cmake_prefix_path)'`:$CMAKE_PREFIX_PATH # If DEEPKS support is required; +# usually expands to `$CONDA_PREFIX/lib/python3.1/site-packages/torch/share/cmake` +``` -You can update your cloned git repo (from Github or Gitee) in-place with the following commands: +And, follow the instructions in [Build and Install](#build-and-install) part above withou manually setting paths to dependencies. +See [the advanced installation guide](../advanced/install.md) for more features. +Make sure the environment variables are set before running `cmake`. +Possible command: `cmake -B build -DENABLE_MLALGO=ON -DENABLE_LIBXC=ON -DENABLE_LIBRI=ON`. -```bash -git remote -v -# Check if the output contains the line below -# origin https://github.com/deepmodeling/abacus-develop.git (fetch) -# The remote name is marked as "upstream" if you clone the repo from your own fork. -# Replace "origin" with "upstream" or the remote name corresponding to deepmodeling/abacus-develop if necessary -git fetch origin -git checkout v3.x.x # Replace the tag with the latest version, like v3.10.0 -git describe --tags # Verify if the tag has been successfully checked out -``` +## Install ABACUS manually -Then proceed to the [Build and Install](#build-and-install) part. If you encountered errors, try remove the `build` directory first and reconfigure. +### Install requirements -To use the codes under active development: +Some of these packages can be installed with popular package management system via root permission if you have, such as `apt` and `yum`: ```bash -git checkout develop -git pull +sudo apt update && sudo apt install -y libopenblas-openmp-dev liblapack-dev libscalapack-mpi-dev libelpa-dev libfftw3-dev libcereal-dev libxc-dev g++ make cmake bc git pkgconf ``` -## Configure +> Installing ELPA by apt only matches requirements on Ubuntu 22.04. For earlier linux distributions, you should build ELPA from source. + +We recommend [Intel® oneAPI toolkit](https://software.intel.com/content/www/us/en/develop/tools/oneapi/commercial-base-hpc.html) (former Intel® Parallel Studio) as toolchain. The [Intel® oneAPI Base Toolkit](https://software.intel.com/content/www/us/en/develop/tools/oneapi/all-toolkits.html#base-kit) contains Intel® oneAPI Math Kernel Library (aka `MKL`), including `BLAS`, `LAPACK`, `ScaLAPACK` and `FFTW3`. The [Intel® oneAPI HPC Toolkit](https://software.intel.com/content/www/us/en/develop/tools/oneapi/all-toolkits.html#hpc-kit) contains Intel® MPI Library, and C++ compiler(including MPI compiler). +> Please note that building `elpa` with a different MPI library may cause conflict. +> Don't forget to [set environment variables](https://software.intel.com/content/www/us/en/develop/documentation/get-started-with-intel-oneapi-render-linux/top/configure-your-system.html) before you start! `cmake` will use Intel MKL if the environment variable `MKLROOT` is set. + +Please refer to our [guide](https://github.com/deepmodeling/abacus-develop/wiki/Building-and-Running-ABACUS) on installing requirements. + + +### Configure The basic command synopsis is: @@ -139,7 +185,7 @@ Here is an example: CXX=mpiicpx cmake -B build -DCMAKE_INSTALL_PREFIX=~/abacus -DELPA_DIR=~/elpa-2025.01.001/build -DCEREAL_INCLUDE_DIR=~/cereal/include ``` -## Build and Install +### Build and Install After configuring, build and install by: @@ -150,7 +196,9 @@ cmake --install build You can change the number after `-j` on your need: set to the number of CPU cores(`nproc`) to reduce compilation time. -## Run +## Run ABACUS + +### Load ABACUS If ABACUS is installed into a custom directory using `CMAKE_INSTALL_PREFIX`, please add it to your environment variable `PATH` to locate the correct executable. *(Note: `my-install-dir` should be changed to the location of your installed abacus:`/home/your-path/abacus/bin/`.)* @@ -165,6 +213,14 @@ If ABACUS is installed by toolchain, there will be an environment script in the source /path/to/abacus/toolchain/abacus_env.sh ``` +If ABACUS is installed by conda, please make sure the conda environment is activated before running ABACUS. + +```bash +conda activate abacus_env +``` + +### Run with Parallelism Setting + Please set OpenMP threads by setting environment variable: ```bash @@ -215,64 +271,16 @@ For online development environment, we support [GitHub Codespaces](https://githu We also support [Gitpod](https://www.gitpod.io/): [Open in Gitpod](https://gitpod.io/#https://github.com/deepmodeling/abacus-develop) -## Install by conda - -Conda is a package management system with a separated environment, not requiring system privileges. -You can refer to [DeepModeling conda FAQ](https://docs.deepmodeling.com/faq/conda.html) for how to setup a conda environment. -A pre-built ABACUS binary with all requirements is available at [conda-forge](https://anaconda.org/conda-forge/abacus). It supports advanced features including Libxc, LibRI, and DeePKS. Conda will install the GPU-supported version of ABACUS if a valid GPU driver is present. Please refer to [the advanced installation guide](../advanced/install.md) for more details. - -```bash -# Install -# We recommend installing ABACUS in a new environment to avoid potential conflicts: -conda create -n abacus_env abacus "libblas=*=*mkl" mpich -c conda-forge - -# Run -conda activate abacus_env -OMP_NUM_THREADS=1 mpirun -n 4 abacus - -# Update -conda update -n abacus_env abacus -c conda-forge -``` - -> If OpenBLAS gives warning about OpenMP threads, please install conda package `"openblas=*=openmp*"` or `"libblas=*=*mkl"`. See [switching BLAS implementation in conda](https://conda-forge.org/docs/maintainer/knowledge_base.html#switching-blas-implementation). - -> ABACUS supports `OpenMPI` and `MPICH` variant. Install `mpich` or `openmpi` package to switch MPI library if required. - -For more details on building a conda package of ABACUS locally, please refer to the [conda recipe file](https://github.com/deepmodeling/abacus-develop/blob/develop/conda/meta.yaml). - -> Note: The [deepmodeling conda channel](https://anaconda.org/deepmodeling/abacus) offers historical versions of ABACUS. - -### Developing with conda - -It is possible to build ABACUS from source based on the conda environment. - -```bash -conda create -n abacus_env abacus -c conda-forge -conda activate abacus_env -export CMAKE_PREFIX_PATH=$CONDA_PREFIX:$CMAKE_PREFIX_PATH - -# By default OpenBLAS is used; run `conda install "blas=*=mkl" mkl_fft mkl-devel -c conda-forge` to switch implementation. -export MKLROOT=$CONDA_PREFIX # If Intel MKL is required. - -export CMAKE_PREFIX_PATH=`python -c 'import torch;print(torch.utils.cmake_prefix_path)'`:$CMAKE_PREFIX_PATH # If DEEPKS support is required; -# usually expands to `$CONDA_PREFIX/lib/python3.1/site-packages/torch/share/cmake` -``` - -And, follow the instructions in [Build and Install](#build-and-install) part above withou manually setting paths to dependencies. -See [the advanced installation guide](../advanced/install.md) for more features. -Make sure the environment variables are set before running `cmake`. -Possible command: `cmake -B build -DENABLE_DEEPKS=ON -DENABLE_LIBXC=ON -DENABLE_LIBRI=ON`. - ## Command line options Users can check the version of ABACUS by running the command `abacus --version`, the result will be like: ``` -ABACUS version v3.6.5 +ABACUS version v3.9.0.2 ``` Users may check the correctness of the setting of parameters in the `INPUT` file by running the command `abacus --check-input`, the result will be like: ``` - ABACUS v3.6.5 + ABACUS v3.9.0.2 Atomic-orbital Based Ab-initio Computation at UStc diff --git a/docs/quick_start/input.md b/docs/quick_start/input.md index c13d04e342..f4dfe068af 100644 --- a/docs/quick_start/input.md +++ b/docs/quick_start/input.md @@ -46,7 +46,56 @@ In the above example, the meanings of the parameters are: For a complete list of input parameters, please consult this [instruction](../advanced/input_files/input-main.md). -> **Note:** Users cannot change the filename “INPUT” to other names. Boolean paramerters such as `out_chg` can be set by using `True` and `False`, `1` and `0`, or `T` and `F`. It is case insensitive so that other preferences such as `true` and `false`, `TRUE` and `FALSE`, and `t` and `f` for setting boolean values are also supported. Specifically for the `out_chg`, `-1` option is also available, which means turn off the checkpoint of charge density in binary (always dumped in `OUT.{suffix}`, whose name ends with `CHARGE-DENSITY.restart`). Some parameters controlling the output also support a second option to control the output precision, e.g., `out_chg 1 8` will output the charge density on realspace grid with 8 digits after the decimal point. +> **Note:** Users cannot change the filename "INPUT" to other names. Boolean paramerters such as `out_chg` can be set by using `True` and `False`, `1` and `0`, or `T` and `F`. It is case insensitive so that other preferences such as `true` and `false`, `TRUE` and `FALSE`, and `t` and `f` for setting boolean values are also supported. Specifically for the `out_chg`, `-1` option is also available, which means turn off the checkpoint of charge density in binary (always dumped in `OUT.{suffix}`, whose name ends with `CHARGE-DENSITY.restart`). Some parameters controlling the output also support a second option to control the output precision, e.g., `out_chg 1 8` will output the charge density on realspace grid with 8 digits after the decimal point. + +## Getting Help with Parameters + +ABACUS includes a built-in help system to look up INPUT parameters directly from the command line. + +### Basic Commands + +```bash +# Show general help and common parameters +abacus -h + +# Search for parameters by keyword +abacus -s ecut +# Finds: ecutwfc, ecutrho, lcao_ecut, etc. + +# Get detailed help for a specific parameter +abacus -h ecutwfc +``` + +### Example Output + +``` +$ abacus -h ecutwfc + +Parameter: ecutwfc +Type: Real +Default: 50 for PW basis, 100 for LCAO basis +Category: Plane wave related variables +Unit: Ry + +Description: + Energy cutoff for plane wave functions... +``` + +### Fuzzy Matching + +If you mistype a parameter name, ABACUS suggests similar parameters: + +```bash +$ abacus -h exx_hybrid_steps +Error: Unknown parameter 'exx_hybrid_steps' + +Did you mean one of these? + - exx_hybrid_step + +Use 'abacus -s ' to search for parameters. +``` + +Parameter lookups are case-insensitive, so `ECUTWFC`, `Ecutwfc`, and `ecutwfc` all work. ## *STRU* @@ -95,7 +144,7 @@ O #Name of element > **Note:** users may choose a different name for their structure file using the keyword `stru_file`. The order of the pseudopotential file list and the numerical orbital list (if LCAO is applied) MUST be consistent with that of the atomic type given in `ATOMIC_POSITIONS`. -For a more detailed description of STRU file, please consult [here](../advanced/input_files/stru.md). +> **Important:** When specifying atomic positions, you can use various coordinate systems (Direct, Cartesian, Cartesian_angstrom, etc.) and add optional properties like magnetization, velocity, and movement constraints. See the [detailed STRU documentation](../advanced/input_files/stru.md) for all available options and best practices. ## *KPT* diff --git a/docs/requirements.txt b/docs/requirements.txt index d7fef4eb49..5665feaa12 100644 --- a/docs/requirements.txt +++ b/docs/requirements.txt @@ -2,3 +2,4 @@ urllib3 myst_parser[linkify] sphinx-book-theme deepmodeling-sphinx>=0.3.0 +pyyaml diff --git a/doxygen/Doxyfile b/doxygen/Doxyfile index e109197b7b..39a3a477f0 100644 --- a/doxygen/Doxyfile +++ b/doxygen/Doxyfile @@ -2312,7 +2312,7 @@ HAVE_DOT = YES # Minimum value: 0, maximum value: 32, default value: 0. # This tag requires that the tag HAVE_DOT is set to YES. -DOT_NUM_THREADS = 0 +DOT_NUM_THREADS = 2 # When you want a differently looking font in the dot files that doxygen # generates you can specify the font name using DOT_FONTNAME. You need to make diff --git a/examples/03_spin_polarized/AFM/reference/running_scf.log.ref b/examples/03_spin_polarized/AFM/reference/running_scf.log.ref index 03045b0f05..0125faebfc 100644 --- a/examples/03_spin_polarized/AFM/reference/running_scf.log.ref +++ b/examples/03_spin_polarized/AFM/reference/running_scf.log.ref @@ -4811,9 +4811,9 @@ Record_adj for_2d 0.00 1 0.00 0. Grid_Driver Find_atom 0.00 112 0.00 0.01 LCAO_Hamilt grid_prepare 0.00 1 0.00 0.00 Veff initialize_HR 0.00 1 0.00 0.00 -OverlapNew initialize_SR 0.00 1 0.00 0.00 -EkineticNew initialize_HR 0.00 1 0.00 0.00 -NonlocalNew initialize_HR 0.00 1 0.00 0.00 +Overlap initialize_SR 0.00 1 0.00 0.00 +Ekinetic initialize_HR 0.00 1 0.00 0.00 +Nonlocal initialize_HR 0.00 1 0.00 0.00 Charge set_rho_core 0.00 1 0.00 0.00 Charge atomic_rho 0.00 1 0.00 0.01 PW_Basis_Sup recip2real 0.03 219 0.00 0.07 @@ -4838,12 +4838,12 @@ Gint_interface cal_gint 27.76 69 0.40 70. Gint_interface cal_gint_vlocal 15.79 46 0.34 40.29 Gint_Tools cal_psir_ylm 2.18 9936 0.00 5.56 Gint_k transfer_pvpR 0.75 46 0.02 1.92 -OverlapNew calculate_SR 0.09 1 0.09 0.24 -OverlapNew contributeHk 0.86 2898 0.00 2.21 -EkineticNew contributeHR 0.09 46 0.00 0.24 -EkineticNew calculate_HR 0.09 1 0.09 0.24 -NonlocalNew contributeHR 0.08 46 0.00 0.20 -NonlocalNew calculate_HR 0.07 1 0.07 0.18 +Overlap calculate_SR 0.09 1 0.09 0.24 +Overlap contributeHk 0.86 2898 0.00 2.21 +Ekinetic contributeHR 0.09 46 0.00 0.24 +Ekinetic calculate_HR 0.09 1 0.09 0.24 +Nonlocal contributeHR 0.08 46 0.00 0.20 +Nonlocal calculate_HR 0.07 1 0.07 0.18 OperatorLCAO contributeHk 0.98 2898 0.00 2.49 HSolverLCAO hamiltSolvePsiK 6.35 2898 0.00 16.19 DiagoElpa elpa_solve 5.46 2898 0.00 13.93 diff --git a/examples/03_spin_polarized/AFM/reference/scf.output.ref b/examples/03_spin_polarized/AFM/reference/scf.output.ref index 5a76fc513f..d34ff54d90 100644 --- a/examples/03_spin_polarized/AFM/reference/scf.output.ref +++ b/examples/03_spin_polarized/AFM/reference/scf.output.ref @@ -101,9 +101,9 @@ Record_adj for_2d 0.00 1 0.00 0. Grid_Driver Find_atom 0.00 112 0.00 0.01 LCAO_Hamilt grid_prepare 0.00 1 0.00 0.00 Veff initialize_HR 0.00 1 0.00 0.00 -OverlapNew initialize_SR 0.00 1 0.00 0.00 -EkineticNew initialize_HR 0.00 1 0.00 0.00 -NonlocalNew initialize_HR 0.00 1 0.00 0.00 +Overlap initialize_SR 0.00 1 0.00 0.00 +Ekinetic initialize_HR 0.00 1 0.00 0.00 +Nonlocal initialize_HR 0.00 1 0.00 0.00 Charge set_rho_core 0.00 1 0.00 0.00 Charge atomic_rho 0.00 1 0.00 0.01 PW_Basis_Sup recip2real 0.03 219 0.00 0.07 @@ -128,12 +128,12 @@ Gint_interface cal_gint 27.76 69 0.40 70. Gint_interface cal_gint_vlocal 15.79 46 0.34 40.29 Gint_Tools cal_psir_ylm 2.18 9936 0.00 5.56 Gint_k transfer_pvpR 0.75 46 0.02 1.92 -OverlapNew calculate_SR 0.09 1 0.09 0.24 -OverlapNew contributeHk 0.86 2898 0.00 2.21 -EkineticNew contributeHR 0.09 46 0.00 0.24 -EkineticNew calculate_HR 0.09 1 0.09 0.24 -NonlocalNew contributeHR 0.08 46 0.00 0.20 -NonlocalNew calculate_HR 0.07 1 0.07 0.18 +Overlap calculate_SR 0.09 1 0.09 0.24 +Overlap contributeHk 0.86 2898 0.00 2.21 +Ekinetic contributeHR 0.09 46 0.00 0.24 +Ekinetic calculate_HR 0.09 1 0.09 0.24 +Nonlocal contributeHR 0.08 46 0.00 0.20 +Nonlocal calculate_HR 0.07 1 0.07 0.18 OperatorLCAO contributeHk 0.98 2898 0.00 2.49 HSolverLCAO hamiltSolvePsiK 6.35 2898 0.00 16.19 DiagoElpa elpa_solve 5.46 2898 0.00 13.93 diff --git a/examples/03_spin_polarized/ATOM/INPUT b/examples/03_spin_polarized/ATOM/INPUT index 11b933d8a4..108f21d13e 100644 --- a/examples/03_spin_polarized/ATOM/INPUT +++ b/examples/03_spin_polarized/ATOM/INPUT @@ -46,7 +46,6 @@ cal_force 1 cal_stress 1 out_stru 1 # print STRU in OUT out_chg 0 # print CHG or not -out_bandgap 1 # if bandgap and mul out, chg will out out_mul 1 # print Mulliken charge and mag of atom in mulliken.txt # out_wfc_lcao 1 # out_interval 1 diff --git a/examples/03_spin_polarized/ATOM/reference/running_scf.log.ref b/examples/03_spin_polarized/ATOM/reference/running_scf.log.ref index 74008dd00f..68f568f337 100644 --- a/examples/03_spin_polarized/ATOM/reference/running_scf.log.ref +++ b/examples/03_spin_polarized/ATOM/reference/running_scf.log.ref @@ -597,9 +597,9 @@ Grid_BigCell grid_expansion_index 0.01 2 0.01 0. Record_adj for_2d 0.00 1 0.00 0.00 Grid_Driver Find_atom 0.00 7 0.00 0.00 LCAO_Hamilt grid_prepare 0.00 1 0.00 0.00 -OverlapNew initialize_SR 0.00 1 0.00 0.00 -EkineticNew initialize_HR 0.00 1 0.00 0.00 -NonlocalNew initialize_HR 0.00 1 0.00 0.00 +Overlap initialize_SR 0.00 1 0.00 0.00 +Ekinetic initialize_HR 0.00 1 0.00 0.00 +Nonlocal initialize_HR 0.00 1 0.00 0.00 Veff initialize_HR 0.00 1 0.00 0.00 LOC Alltoall 0.00 1 0.00 0.00 Charge set_rho_core 0.01 1 0.01 0.03 @@ -621,12 +621,12 @@ H_Ewald_pw compute_ewald 0.05 1 0.05 0. HSolverLCAO solve 0.46 7 0.07 2.81 HamiltLCAO updateHk 0.11 14 0.01 0.68 OperatorLCAO init 0.11 42 0.00 0.68 -OverlapNew calculate_SR 0.00 1 0.00 0.00 -OverlapNew contributeHk 0.00 1 0.00 0.00 -EkineticNew contributeHR 0.00 14 0.00 0.00 -EkineticNew calculate_HR 0.00 1 0.00 0.00 -NonlocalNew contributeHR 0.00 14 0.00 0.00 -NonlocalNew calculate_HR 0.00 1 0.00 0.00 +Overlap calculate_SR 0.00 1 0.00 0.00 +Overlap contributeHk 0.00 1 0.00 0.00 +Ekinetic contributeHR 0.00 14 0.00 0.00 +Ekinetic calculate_HR 0.00 1 0.00 0.00 +Nonlocal contributeHR 0.00 14 0.00 0.00 +Nonlocal calculate_HR 0.00 1 0.00 0.00 Veff contributeHR 0.06 7 0.01 0.39 Gint_interface cal_gint 0.27 23 0.01 1.62 Gint_interface cal_gint_vlocal 0.11 14 0.01 0.66 diff --git a/examples/03_spin_polarized/ATOM/reference/scf.output.ref b/examples/03_spin_polarized/ATOM/reference/scf.output.ref index ba20a7423f..41fe4824a0 100644 --- a/examples/03_spin_polarized/ATOM/reference/scf.output.ref +++ b/examples/03_spin_polarized/ATOM/reference/scf.output.ref @@ -84,9 +84,9 @@ Grid_BigCell grid_expansion_index 0.01 2 0.01 0. Record_adj for_2d 0.00 1 0.00 0.00 Grid_Driver Find_atom 0.00 7 0.00 0.00 LCAO_Hamilt grid_prepare 0.00 1 0.00 0.00 -OverlapNew initialize_SR 0.00 1 0.00 0.00 -EkineticNew initialize_HR 0.00 1 0.00 0.00 -NonlocalNew initialize_HR 0.00 1 0.00 0.00 +Overlap initialize_SR 0.00 1 0.00 0.00 +Ekinetic initialize_HR 0.00 1 0.00 0.00 +Nonlocal initialize_HR 0.00 1 0.00 0.00 Veff initialize_HR 0.00 1 0.00 0.00 LOC Alltoall 0.00 1 0.00 0.00 Charge set_rho_core 0.01 1 0.01 0.03 @@ -108,12 +108,12 @@ H_Ewald_pw compute_ewald 0.05 1 0.05 0. HSolverLCAO solve 0.46 7 0.07 2.81 HamiltLCAO updateHk 0.11 14 0.01 0.68 OperatorLCAO init 0.11 42 0.00 0.68 -OverlapNew calculate_SR 0.00 1 0.00 0.00 -OverlapNew contributeHk 0.00 1 0.00 0.00 -EkineticNew contributeHR 0.00 14 0.00 0.00 -EkineticNew calculate_HR 0.00 1 0.00 0.00 -NonlocalNew contributeHR 0.00 14 0.00 0.00 -NonlocalNew calculate_HR 0.00 1 0.00 0.00 +Overlap calculate_SR 0.00 1 0.00 0.00 +Overlap contributeHk 0.00 1 0.00 0.00 +Ekinetic contributeHR 0.00 14 0.00 0.00 +Ekinetic calculate_HR 0.00 1 0.00 0.00 +Nonlocal contributeHR 0.00 14 0.00 0.00 +Nonlocal calculate_HR 0.00 1 0.00 0.00 Veff contributeHR 0.06 7 0.01 0.39 Gint_interface cal_gint 0.27 23 0.01 1.62 Gint_interface cal_gint_vlocal 0.11 14 0.01 0.66 diff --git a/examples/03_spin_polarized/FM/reference/running_scf.log.ref b/examples/03_spin_polarized/FM/reference/running_scf.log.ref index e72057936e..a2b17a38ac 100644 --- a/examples/03_spin_polarized/FM/reference/running_scf.log.ref +++ b/examples/03_spin_polarized/FM/reference/running_scf.log.ref @@ -5305,9 +5305,9 @@ Record_adj for_2d 0.00 1 0.00 0. Grid_Driver Find_atom 0.00 76 0.00 0.01 LCAO_Hamilt grid_prepare 0.00 1 0.00 0.00 Veff initialize_HR 0.00 1 0.00 0.00 -OverlapNew initialize_SR 0.00 1 0.00 0.00 -EkineticNew initialize_HR 0.00 1 0.00 0.00 -NonlocalNew initialize_HR 0.00 1 0.00 0.01 +Overlap initialize_SR 0.00 1 0.00 0.00 +Ekinetic initialize_HR 0.00 1 0.00 0.00 +Nonlocal initialize_HR 0.00 1 0.00 0.01 Charge set_rho_core 0.00 1 0.00 0.00 Charge atomic_rho 0.00 1 0.00 0.01 PW_Basis_Sup recip2real 0.02 138 0.00 0.07 @@ -5332,12 +5332,12 @@ Gint_interface cal_gint 16.57 42 0.39 68. Gint_interface cal_gint_vlocal 9.47 28 0.34 39.40 Gint_Tools cal_psir_ylm 1.26 6048 0.00 5.23 Gint_k transfer_pvpR 0.56 28 0.02 2.32 -OverlapNew calculate_SR 0.09 1 0.09 0.39 -OverlapNew contributeHk 0.52 1764 0.00 2.18 -EkineticNew contributeHR 0.09 28 0.00 0.40 -EkineticNew calculate_HR 0.09 1 0.09 0.39 -NonlocalNew contributeHR 0.08 28 0.00 0.31 -NonlocalNew calculate_HR 0.07 1 0.07 0.29 +Overlap calculate_SR 0.09 1 0.09 0.39 +Overlap contributeHk 0.52 1764 0.00 2.18 +Ekinetic contributeHR 0.09 28 0.00 0.40 +Ekinetic calculate_HR 0.09 1 0.09 0.39 +Nonlocal contributeHR 0.08 28 0.00 0.31 +Nonlocal calculate_HR 0.07 1 0.07 0.29 OperatorLCAO contributeHk 0.59 1764 0.00 2.46 HSolverLCAO hamiltSolvePsiK 3.90 1764 0.00 16.25 DiagoElpa elpa_solve 3.33 1764 0.00 13.86 diff --git a/examples/03_spin_polarized/FM/reference/scf.output.ref b/examples/03_spin_polarized/FM/reference/scf.output.ref index f2b2d9578e..77aa7a6488 100644 --- a/examples/03_spin_polarized/FM/reference/scf.output.ref +++ b/examples/03_spin_polarized/FM/reference/scf.output.ref @@ -92,9 +92,9 @@ Record_adj for_2d 0.00 1 0.00 0. Grid_Driver Find_atom 0.00 76 0.00 0.01 LCAO_Hamilt grid_prepare 0.00 1 0.00 0.00 Veff initialize_HR 0.00 1 0.00 0.00 -OverlapNew initialize_SR 0.00 1 0.00 0.00 -EkineticNew initialize_HR 0.00 1 0.00 0.00 -NonlocalNew initialize_HR 0.00 1 0.00 0.01 +Overlap initialize_SR 0.00 1 0.00 0.00 +Ekinetic initialize_HR 0.00 1 0.00 0.00 +Nonlocal initialize_HR 0.00 1 0.00 0.01 Charge set_rho_core 0.00 1 0.00 0.00 Charge atomic_rho 0.00 1 0.00 0.01 PW_Basis_Sup recip2real 0.02 138 0.00 0.07 @@ -119,12 +119,12 @@ Gint_interface cal_gint 16.57 42 0.39 68. Gint_interface cal_gint_vlocal 9.47 28 0.34 39.40 Gint_Tools cal_psir_ylm 1.26 6048 0.00 5.23 Gint_k transfer_pvpR 0.56 28 0.02 2.32 -OverlapNew calculate_SR 0.09 1 0.09 0.39 -OverlapNew contributeHk 0.52 1764 0.00 2.18 -EkineticNew contributeHR 0.09 28 0.00 0.40 -EkineticNew calculate_HR 0.09 1 0.09 0.39 -NonlocalNew contributeHR 0.08 28 0.00 0.31 -NonlocalNew calculate_HR 0.07 1 0.07 0.29 +Overlap calculate_SR 0.09 1 0.09 0.39 +Overlap contributeHk 0.52 1764 0.00 2.18 +Ekinetic contributeHR 0.09 28 0.00 0.40 +Ekinetic calculate_HR 0.09 1 0.09 0.39 +Nonlocal contributeHR 0.08 28 0.00 0.31 +Nonlocal calculate_HR 0.07 1 0.07 0.29 OperatorLCAO contributeHk 0.59 1764 0.00 2.46 HSolverLCAO hamiltSolvePsiK 3.90 1764 0.00 16.25 DiagoElpa elpa_solve 3.33 1764 0.00 13.86 diff --git a/examples/04_noncollinear/BCC_Fe_NC_ground_state/reference/scf.output.ref b/examples/04_noncollinear/BCC_Fe_NC_ground_state/reference/scf.output.ref index f9f0970f67..7882dc68ff 100644 --- a/examples/04_noncollinear/BCC_Fe_NC_ground_state/reference/scf.output.ref +++ b/examples/04_noncollinear/BCC_Fe_NC_ground_state/reference/scf.output.ref @@ -102,9 +102,9 @@ Record_adj for_2d 0.00 1 0.00 0. Grid_Driver Find_atom 0.00 68 0.00 0.00 LCAO_Hamilt grid_prepare 0.00 1 0.00 0.00 Veff initialize_HR 0.00 1 0.00 0.00 -OverlapNew initialize_SR 0.00 1 0.00 0.00 -EkineticNew initialize_HR 0.00 1 0.00 0.00 -NonlocalNew initialize_HR 0.00 1 0.00 0.00 +Overlap initialize_SR 0.00 1 0.00 0.00 +Ekinetic initialize_HR 0.00 1 0.00 0.00 +Nonlocal initialize_HR 0.00 1 0.00 0.00 Charge set_rho_core 0.01 1 0.01 0.00 PW_Basis recip2real 0.04 306 0.00 0.03 PW_Basis gathers_scatterp 0.01 306 0.00 0.01 @@ -129,12 +129,12 @@ Gint_interface cal_gint 103.55 120 0.86 90. Gint_interface cal_gint_vlocal 58.66 96 0.61 51.50 Gint_Tools cal_psir_ylm 5.41 17280 0.00 4.75 Gint_k transfer_pvpR 4.83 24 0.20 4.24 -OverlapNew calculate_SR 0.13 1 0.13 0.11 -OverlapNew contributeHk 0.12 192 0.00 0.11 -EkineticNew contributeHR 0.13 24 0.01 0.11 -EkineticNew calculate_HR 0.13 1 0.13 0.11 -NonlocalNew contributeHR 0.79 24 0.03 0.70 -NonlocalNew calculate_HR 0.77 1 0.77 0.68 +Overlap calculate_SR 0.13 1 0.13 0.11 +Overlap contributeHk 0.12 192 0.00 0.11 +Ekinetic contributeHR 0.13 24 0.01 0.11 +Ekinetic calculate_HR 0.13 1 0.13 0.11 +Nonlocal contributeHR 0.79 24 0.03 0.70 +Nonlocal calculate_HR 0.77 1 0.77 0.68 OperatorLCAO contributeHk 0.10 192 0.00 0.09 HSolverLCAO hamiltSolvePsiK 1.08 192 0.01 0.95 DiagoElpa elpa_solve 0.90 192 0.00 0.79 diff --git a/examples/19_dftu/NiO/INPUT b/examples/19_dftu/NiO/INPUT index cccad64e87..1094ff534f 100644 --- a/examples/19_dftu/NiO/INPUT +++ b/examples/19_dftu/NiO/INPUT @@ -28,7 +28,6 @@ dft_plus_u 1 orbital_corr 2 2 -1 hubbard_u 5.0 5.0 0.0 -out_bandgap 1 out_chg 1 out_mul 1 diff --git a/examples/36_gpu/si16_lcao/INPUT b/examples/36_gpu/si16_lcao/INPUT index 1ecbd7e13a..2aea35eb9c 100644 --- a/examples/36_gpu/si16_lcao/INPUT +++ b/examples/36_gpu/si16_lcao/INPUT @@ -3,9 +3,8 @@ INPUT_PARAMETERS suffix autotest calculation scf device gpu -gamma_only 1 # GPU acceleration currently only support gamma_only set to 1. ### Abacus will generate/overwrite a KPT file when gamma_only is set to 1. ks_solver cusolver # if not set, the default ks_solver is cusolver, - # you can also choose genelpa or scalapack_gvx. + # you can also choose cusolvermp or elpa if compiled. #nbands 8 symmetry 1 @@ -26,7 +25,7 @@ smearing_sigma 0.002 #Parameters (5.Mixing) mixing_type broyden -mixing_beta 0.3 +mixing_beta 0.4 ### [1] Energy cutoff determines the quality of numerical quadratures in your calculations. diff --git a/examples/36_gpu/si16_lcao/KPT b/examples/36_gpu/si16_lcao/KPT index da8500ebdb..5acdc7a0f7 100644 --- a/examples/36_gpu/si16_lcao/KPT +++ b/examples/36_gpu/si16_lcao/KPT @@ -1,5 +1,7 @@ K_POINTS 0 Gamma -1 1 1 0 0 0 -###This file will be overwritten by Abacus because either kspacing is used or gamma_only is set to 1 +5 5 5 0 0 0 +### If you are running an energy calculation, please make sure your final energy is +### converged with respect to the k-point settings, unless you set a loose k-point +### mesh on purpose. diff --git a/examples/36_gpu/si16_pw/INPUT b/examples/36_gpu/si16_pw/INPUT index 67e75edbca..c14489af3b 100644 --- a/examples/36_gpu/si16_pw/INPUT +++ b/examples/36_gpu/si16_pw/INPUT @@ -21,7 +21,7 @@ smearing_sigma 0.002 #Parameters (5.Mixing) mixing_type broyden -mixing_beta 0.3 +mixing_beta 0.4 ### [1] Energy cutoff determines the quality of numerical quadratures in your calculations. diff --git a/examples/relax/lcao_output/INPUT b/examples/relax/lcao_output/INPUT index 5230bd6365..54175c33fd 100644 --- a/examples/relax/lcao_output/INPUT +++ b/examples/relax/lcao_output/INPUT @@ -5,10 +5,10 @@ suffix autotest nbands 8 calculation relax #cell-relax ecutwfc 10 -scf_nmax 2 +scf_nmax 20 basis_type lcao -relax_nmax 5 +relax_nmax 1 cal_stress 1 stress_thr 1e-6 @@ -25,16 +25,18 @@ relax_method bfgs pseudo_dir ../../../tests/PP_ORB orbital_dir ../../../tests/PP_ORB -nspin 4 +nspin 1 -out_chg 1 -out_pot 1 -out_dmk 1 -out_dmr 1 +out_mat_hs 0 // note +out_mat_tk 1 // note +out_mat_l 1 // note +out_chg 0 8 // note +out_pot 0 +out_dmk 0 // note +out_dmr 0 // note #out_wfc_lcao 1 // OK -out_dos 1 -out_band 1 -out_stru 1 +out_dos 0 +out_band 0 +out_stru 0 out_app_flag 0 -out_interval 1 diff --git a/examples/relax/pw_output/INPUT b/examples/relax/pw_output/INPUT index cae2080431..152e3d66ed 100644 --- a/examples/relax/pw_output/INPUT +++ b/examples/relax/pw_output/INPUT @@ -8,7 +8,7 @@ ecutwfc 10 scf_nmax 20 basis_type pw -relax_nmax 5 +relax_nmax 4 cal_stress 1 stress_thr 1e-6 @@ -25,18 +25,22 @@ relax_method lbfgs pseudo_dir ../../../tests/PP_ORB orbital_dir ../../../tests/PP_ORB -nspin 2 +nspin 4 + +out_freq_ion 1 +#out_freq_elec 0 + +out_chg 1 # chg.txt g +out_pot 1 # pot.txt g +out_wfc_pw 1 # wfkx_pw.txt g +out_dos 1 # dos.txt g +out_elf 1 # elf.txt +out_band 1 # eig.txt +out_stru 1 # g -out_chg 1 -out_pot 1 -out_wfc_pw 1 -out_dos 1 -out_stru 1 out_app_flag 0 -out_interval 1 -kpar 2 +kpar 1 symmetry -1 -#out_freq_elec 2 -#out_band 1 + diff --git a/examples/relax/pw_output/KPT b/examples/relax/pw_output/KPT index f5f7f4ec34..adf1f61380 100644 --- a/examples/relax/pw_output/KPT +++ b/examples/relax/pw_output/KPT @@ -2,3 +2,4 @@ K_POINTS 0 Gamma 2 2 2 0 0 0 + diff --git a/generate_build_info.sh b/generate_build_info.sh new file mode 100644 index 0000000000..d7a2075cfd --- /dev/null +++ b/generate_build_info.sh @@ -0,0 +1,294 @@ +#!/bin/bash + +# ============================================================================== +# generate_build_info.sh +# +# A script to generate build_info.h for Makefile-based builds. +# It attempts to detect system information, compiler flags, and library versions +# to provide a feature-rich build report similar to the CMake system. +# ============================================================================== + +# set -e # Exit immediately if a command exits with a non-zero status. + +if [ -z "$1" ]; then + echo "Usage: $0 " + exit 1 +fi +OUTPUT_FILE=$1 + +# --- Helper Functions --- + +# Function to get version from a command's output +# Usage: get_version_from_command "" "" +get_version_from_command() { + local cmd="$1" + local regex="$2" + if command -v "$cmd" > /dev/null; then + local output=$($cmd 2>&1) + if [[ $output =~ $regex ]]; then + echo "${BASH_REMATCH[1]}" + return 0 + fi + fi + return 1 +} + +# Function to get version from a header file +# Usage: get_version_from_header "" "" +get_version_from_header() { + local header_path="$1" + local regex="$2" + if [ -f "$header_path" ]; then + local line=$(grep -E "$regex" "$header_path" | head -n 1) + if [[ $line =~ $regex ]]; then + echo "${BASH_REMATCH[1]}" + return 0 + fi + fi + return 1 +} + +# --- Main Detection Logic --- + +# 1. Basic Info +PLATFORM_NAME="CPU" +BUILD_USER=$(whoami) +BUILD_HOST=$(hostname) +CXX_COMPILER_PATH="${CXX:-g++}" +CXX_COMPILER_VERSION=$($CXX_COMPILER_PATH --version 2>&1 | head -n 1) +CXX_FLAGS="${CXXFLAGS:-}" +LINKER_FLAGS="${LDFLAGS:-}" +CUDA_FLAGS="${CUDAFLAGS:-}" + +# Detect Platform based on environment variables +if [ "${USE_ROCM}" == "ON" ]; then PLATFORM_NAME="CPU + AMD ROCm"; fi +if [ "${USE_CUDA}" == "ON" ]; then PLATFORM_NAME="CPU + NVIDIA CUDA"; fi +if [ "${USE_ELPA}" == "ON" ] && [ "${ENABLE_LCAO}" == "ON" ]; then PLATFORM_NAME="${PLATFORM_NAME} + ELPA"; fi + +# 2. MPI +MPI_IMPLEMENTATION="no" +MPI_VERSION="no" +if [ "${ENABLE_MPI}" == "ON" ]; then + MPI_IMPLEMENTATION="Unknown" + MPI_COMPILER="${MPI_CXX_COMPILER:-mpicxx}" + if command -v "$MPI_COMPILER" > /dev/null; then + # Intel MPI (oneAPI) + version=$(get_version_from_command "$MPI_COMPILER --version" "Intel\(R\) oneAPI DPC\+\+/C\+\+ Compiler ([0-9]+\.[0-9]+\.[0-9]+)") + if [ -n "$version" ]; then MPI_IMPLEMENTATION="Intel MPI"; MPI_VERSION="$version"; fi + # Intel MPI (classic) + if [ -z "$version" ]; then + version=$(get_version_from_command "$MPI_COMPILER --version" "icpc \(ICC\) ([0-9]+\.[0-9]+\.[0-9]+)") + if [ -n "$version" ]; then MPI_IMPLEMENTATION="Intel MPI"; MPI_VERSION="$version"; fi + fi + # OpenMPI + if [ -z "$version" ]; then + version=$(get_version_from_command "$MPI_COMPILER --version" "Open MPI ([0-9]+\.[0-9]+\.[0-9]+)") + if [ -n "$version" ]; then MPI_IMPLEMENTATION="OpenMPI"; MPI_VERSION="$version"; fi + fi + # MPICH + if [ -z "$version" ]; then + version=$(get_version_from_command "$MPI_COMPILER --version" "MPICH Version: ([0-9]+\.[0-9]+\.[0-9]+)") + if [ -n "$version" ]; then MPI_IMPLEMENTATION="MPICH"; MPI_VERSION="$version"; fi + fi + # Fallback via mpirun + if [ -z "$version" ] && command -v mpirun > /dev/null; then + mr_out=$(mpirun --version 2>&1) + if [[ $mr_out =~ Open\ MPI\ ([0-9]+\.[0-9]+\.[0-9]+) ]]; then + MPI_IMPLEMENTATION="OpenMPI"; MPI_VERSION="${BASH_REMATCH[1]}" + elif [[ $mr_out =~ MPICH\ Version:\ ([0-9]+\.[0-9]+\.[0-9]+) ]]; then + MPI_IMPLEMENTATION="MPICH"; MPI_VERSION="${BASH_REMATCH[1]}" + fi + fi + fi + if [ "$MPI_VERSION" == "no" ]; then MPI_VERSION="yes (version unknown)"; else MPI_VERSION="yes (v$MPI_VERSION)"; fi +else + MPI_IMPLEMENTATION="no" + MPI_VERSION="no" +fi + +# 3. OpenMP +OPENMP_VERSION="no" +if [[ "$CXX_FLAGS" == *"-fopenmp"* ]]; then + OPENMP_VERSION="yes (version unknown)" + # Try to get version from compiler + if command -v "$CXX_COMPILER_PATH" > /dev/null; then + version=$($CXX_COMPILER_PATH -dM -E - < /dev/null 2>&1 | grep '#define _OPENMP ' | awk '{print $3}') + if [ -n "$version" ]; then + # Convert YYYYMM to a more readable format if possible + year=$((version / 10000)) + month=$((version % 10000)) + OPENMP_VERSION="yes (v${year}.${month})" + fi + fi +fi + +# 4. MKL +MKL_SUPPORT="no" +if [ -n "$MKLROOT" ]; then + MKL_SUPPORT="yes (version unknown)" + version=$(get_version_from_header "$MKLROOT/include/mkl_version.h" "INTEL_MKL_VERSION ([0-9]+)") + if [ -n "$version" ]; then + major=$((version / 10000)) + minor=$(( (version % 10000) / 100 )) + patch=$((version % 100)) + MKL_SUPPORT="yes (v${major}.${minor}.${patch})" + fi +fi + +# 5. Libxc +LIBXC_VERSION="no" +if [ "${ENABLE_LIBXC}" == "ON" ]; then + LIBXC_VERSION="yes (version unknown)" + # Try pkg-config first + if command -v pkg-config > /dev/null; then + version=$(pkg-config --modversion libxc 2>/dev/null) + if [ -n "$version" ]; then LIBXC_VERSION="yes (v$version)"; fi + fi + # Fallback to header + if [[ "$LIBXC_VERSION" == *"unknown"* ]]; then + # Assuming standard include paths + version=$(get_version_from_header "/usr/include/libxc/libxc.h" "LIBXC_VERSION_ \"([0-9]+\.[0-9]+\.[0-9]+)\"") + if [ -n "$version" ]; then LIBXC_VERSION="yes (v$version)"; fi + fi +fi + +# 6. CUDA +CUDA_VERSION="no" +if [ "${USE_CUDA}" == "ON" ]; then + CUDA_VERSION="yes (version unknown)" + if [ -n "$CUDA_HOME" ]; then + version=$(get_version_from_command "$CUDA_HOME/bin/nvcc --version" "release ([0-9]+\.[0-9]+)") + if [ -n "$version" ]; then CUDA_VERSION="yes (v$version)"; fi + elif command -v nvcc > /dev/null; then + version=$(get_version_from_command "nvcc --version" "release ([0-9]+\.[0-9]+)") + if [ -n "$version" ]; then CUDA_VERSION="yes (v$version)"; fi + fi +fi + +# 7. ROCm/HIP +ROCM_VERSION="no" +if [ "${USE_ROCM}" == "ON" ]; then + ROCM_VERSION="yes (version unknown)" + if [ -n "$ROCM_PATH" ]; then + version=$(get_version_from_command "$ROCM_PATH/bin/hipcc --version" "HIP version: ([0-9]+\.[0-9]+\.[0-9]+)") + if [ -n "$version" ]; then ROCM_VERSION="yes (v$version)"; fi + elif command -v hipcc > /dev/null; then + version=$(get_version_from_command "hipcc --version" "HIP version: ([0-9]+\.[0-9]+\.[0-9]+)") + if [ -n "$version" ]; then ROCM_VERSION="yes (v$version)"; fi + fi +fi + +# 8. DeePMD-kit +DEEPMD_VERSION="no" +if [ -n "$DeePMD_DIR" ]; then + DEEPMD_VERSION="yes (version unknown)" + version=$(get_version_from_header "$DeePMD_DIR/include/deepmd/version.h" "global_install_prefix=\".*deepmd-kit-([0-9]+\.[0-9]+\.[0-9]+)\"") + if [ -n "$version" ]; then DEEPMD_VERSION="yes (v$version)"; else DEEPMD_VERSION="yes (path: $DeePMD_DIR)"; fi +fi + +# 9. ELPA +ELPA_VERSION="no" +if [ "${USE_ELPA}" == "ON" ] && [ -n "$ELPA_DIR" ]; then + ELPA_VERSION="yes (version unknown)" + if [ -f "$ELPA_DIR/bin/elpa2_print_version" ]; then + version=$("$ELPA_DIR/bin/elpa2_print_version" 2>/dev/null) + if [ -n "$version" ]; then ELPA_VERSION="yes ($version)"; fi + else + ELPA_VERSION="yes (path: $ELPA_DIR)" + fi +fi + +# 10. Cereal +CEREAL_VERSION="no" +if [ -n "$CEREAL_DIR" ]; then + CEREAL_VERSION="yes (version unknown)" + major=$(get_version_from_header "$CEREAL_DIR/include/cereal/version.hpp" "__CEREAL_VERSION_MAJOR[[:space:]]+([0-9]+)") + minor=$(get_version_from_header "$CEREAL_DIR/include/cereal/version.hpp" "__CEREAL_VERSION_MINOR[[:space:]]+([0-9]+)") + patch=$(get_version_from_header "$CEREAL_DIR/include/cereal/version.hpp" "__CEREAL_VERSION_PATCH[[:space:]]+([0-9]+)") + if [ -n "$major" ] && [ -n "$minor" ] && [ -n "$patch" ]; then + CEREAL_VERSION="yes (v${major}.${minor}.${patch})" + else + CEREAL_VERSION="yes (path: $CEREAL_DIR)" + fi +fi + +# 11. LibRI +LIBRI_VERSION="no" +if [ -n "$LIBRI_DIR" ]; then + LIBRI_VERSION="yes (version unknown)" + major=$(get_version_from_header "$LIBRI_DIR/include/RI/version.h" "__LIBRI_VERSION_MAJOR[[:space:]]+([0-9]+)") + minor=$(get_version_from_header "$LIBRI_DIR/include/RI/version.h" "__LIBRI_VERSION_MINOR[[:space:]]+([0-9]+)") + patch=$(get_version_from_header "$LIBRI_DIR/include/RI/version.h" "__LIBRI_VERSION_PATCH[[:space:]]+([0-9]+)") + if [ -n "$major" ] && [ -n "$minor" ] && [ -n "$patch" ]; then + LIBRI_VERSION="yes (v${major}.${minor}.${patch})" + else + LIBRI_VERSION="yes (path: $LIBRI_DIR)" + fi +fi + +# 12. LibComm +LIBCOMM_VERSION="no" +if [ -n "$LIBCOMM_DIR" ]; then + LIBCOMM_VERSION="yes (path: $LIBCOMM_DIR)" +fi + +# 13. FFTW (non-MKL) +FFTW3_VERSION="no" +if [ -z "$MKLROOT" ] && [ -n "$FFTW3_INCLUDE_DIR" ]; then + FFTW3_VERSION="yes (version unknown)" + hdr="$FFTW3_INCLUDE_DIR/fftw3.h" + version=$(get_version_from_header "$hdr" "FFTW_VERSION\s+\"([^\"]+)\"") + if [ -n "$version" ]; then FFTW3_VERSION="yes (v$version)"; fi +fi + +# CUDA-aware MPI +CUDA_AWARE_MPI="no" +if [ "${USE_CUDA}" == "ON" ]; then + if command -v ompi_info > /dev/null; then + out=$(ompi_info --parsable --all 2>/dev/null) + if echo "$out" | grep -q "mpi_built_with_cuda_support:value:true"; then + CUDA_AWARE_MPI="yes" + else + CUDA_AWARE_MPI="no (or undetectable)" + fi + else + CUDA_AWARE_MPI="no (or undetectable)" + fi +fi +# --- Final File Generation --- + +INPUT_FILE="source_io/build_info.h.in" + +# Use sed to replace all placeholders with detected values +# Note the use of different delimiters (#) for paths to avoid conflicts with / +sed \ + -e "s#@ABACUS_PLATFORM_NAME@#$PLATFORM_NAME#g" \ + -e "s#@ABACUS_BUILD_TYPE@#${BUILD_TYPE:-Release}#g" \ + -e "s#@ABACUS_BUILD_USER@#$BUILD_USER#g" \ + -e "s#@ABACUS_BUILD_HOST@#$BUILD_HOST#g" \ + -e "s#@ABACUS_CXX_COMPILER_ID@#${CXX_COMPILER_ID:-Unknown}#g" \ + -e "s#@ABACUS_CXX_COMPILER_PATH@#$CXX_COMPILER_PATH#g" \ + -e "s#@ABACUS_CXX_COMPILER_VERSION@#$CXX_COMPILER_VERSION#g" \ + -e "s#@ABACUS_CXX_FLAGS@#$CXX_FLAGS#g" \ + -e "s#@ABACUS_LINKER_FLAGS@#$LINKER_FLAGS#g" \ + -e "s#@ABACUS_CUDA_FLAGS@#$CUDA_FLAGS#g" \ + -e "s#@ABACUS_MPI_IMPLEMENTATION@#$MPI_IMPLEMENTATION#g" \ + -e "s#@ABACUS_MPI_VERSION@#$MPI_VERSION#g" \ + -e "s#@ABACUS_CUDA_AWARE_MPI@#$CUDA_AWARE_MPI#g" \ + -e "s#@ABACUS_OPENMP_VERSION@#$OPENMP_VERSION#g" \ + -e "s#@ABACUS_MKL_SUPPORT@#$MKL_SUPPORT#g" \ + -e "s#@ABACUS_LIBXC_VERSION@#$LIBXC_VERSION#g" \ + -e "s#@ABACUS_FFTW_VERSION@#$FFTW3_VERSION#g" \ + -e "s#@ABACUS_CUDA_VERSION@#$CUDA_VERSION#g" \ + -e "s#@ABACUS_ROCM_VERSION@#$ROCM_VERSION#g" \ + -e "s#@ABACUS_DEEPMD_VERSION@#$DEEPMD_VERSION#g" \ + -e "s#@ABACUS_ELPA_VERSION@#$ELPA_VERSION#g" \ + -e "s#@ABACUS_CEREAL_VERSION@#$CEREAL_VERSION#g" \ + -e "s#@ABACUS_LIBRI_VERSION@#$LIBRI_VERSION#g" \ + -e "s#@ABACUS_LIBCOMM_VERSION@#$LIBCOMM_VERSION#g" \ + -e "s#@ABACUS_ASAN_STATUS@#${ENABLE_ASAN:-no}#g" \ + -e "s#@ABACUS_CMAKE_OPTIONS@#Not available with Makefile#g" \ + -e "s#@ABACUS_CMAKE_FIND_PACKAGES@#Not available with Makefile#g" \ + "$INPUT_FILE" > "$OUTPUT_FILE" + +echo "Generated $OUTPUT_FILE successfully." diff --git a/interfaces/ASE_interface/DEVELOP.md b/interfaces/ASE_interface/DEVELOP.md new file mode 100644 index 0000000000..acb1f1384b --- /dev/null +++ b/interfaces/ASE_interface/DEVELOP.md @@ -0,0 +1,90 @@ +# Developer Guide + +Abacuslite has the following file structure: +``` +. +├── __init__.py +├── core.py +├── io +│ ├── __init__.py +│ ├── generalio.py +│ ├── latestio.py +│ ├── legacyio.py +│ └── testfiles +├── utils +│ ├── __init__.py +│ └── ksampling.py +└── xtest.sh +``` + +## core.py + +This file contains the implementation of the Atomic Simulation Environment (ASE) calculator. + +## io + +This directory contains the input/output (I/O) functions for extracting information from ABACUS dumped files. A summary is here: + +### Long-term-support (LTS) version + +|Item|Regular expression|Example| +|----|----|----| +|esolver_type|'The esolver type has been set to : (\S+)'|`The esolver type has been set to : ksdft_pw`| +|nspin|'nspin\s+=\s+(\d+)'|`nspin = 4`| +|number of bands|'NBANDS\s+=\s+(\d+)'|`NBANDS = 40`| +|number of atoms|'TOTAL ATOM NUMBER\s*=\s*(\d+)'|`TOTAL ATOM NUMBER = 2`| +|lattice constant|'lattice constant \(Angstrom\)\s*=\s*(-?\d+(\.\d+)?)'|`lattice constant (Angstrom) = 0.529177`| +|lattice vectors|'^Lattice vectors: \(Cartesian coordinate: in unit of a_0\)$'|` Lattice vectors: (Cartesian coordinate: in unit of a_0)`| +|coordinate system|'^(DIRECT\|CARTESIAN) COORDINATES'|`DIRECT COORDINATES`| +|atomic positions|'^tau[c\|d]_([A-Z][a-z]?)\d+\s+(-?\d+(\.\d+)?)\s+(-?\d+(\.\d+)?)\s+(-?\d+(\.\d+)?)*'|`taud_As1 0.2500000000 0.2500000000 0.2500000000 1.7321 0.0000000000 0.0000000000 0.0000000000`| +|eigenvalues|'\d+/\d+\s+kpoint\s+\(Cartesian\)\s+=\s+(-?\d(\.\d+)?(e-\d+)?)\s+(-?\d(\.\d+)?(e-\d+)?)\s+(-?\d(\.\d+)?(e-\d\|+)?)\s+\(\d+\s+pws\)'|` 1/1 kpoint (Cartesian) = 0.0000 0.0000 0.0000 (230 pws)`| +|atomic forces|'\s\*TOTAL\-FORCE\s\*\(eV\s*/Angstrom\)'|` TOTAL-FORCE (eV/Angstrom) `| +|total stress|'\s\*TOTAL\-STRESS\s\*\(KBAR\)'|` TOTAL-STRESS (KBAR) `| +|kpoints and weights|'\s\*(IBZ\|KPOINTS)\s+(DIRECT\|CARTESIAN)_X\s+(DIRECT\|CARTESIAN)_Y\s+(DIRECT\|CARTESIAN)_Z\s+WEIGHT(\s+ibz2bz)?'|` KPOINTS DIRECT_X DIRECT_Y DIRECT_Z WEIGHT`| +|energy|'\s*ENERGY\s+Rydberg\s+eV'|` Energy Rydberg eV `| +|total magnetism|'\s\*Total\sMagnetism\s\(uB\)(\s+x\s+y\s+z)?\s\*'|` Total Magnetism (uB) `| + +### Latest version + +|Item|Regular expression|Example|Notes| +|----|----|----|----| +|esolver_type|'#ENERGY SOLVER#\s+(\S+)'|` #ENERGY SOLVER# ksdft_pw`|| +|nspin|'nspin\s+=\s+(\d+)'|`nspin = 4`|| +|number of bands|||has been removed| +|number of atoms|'TOTAL ATOM NUMBER\s*=\s*(\d+)'|`TOTAL ATOM NUMBER = 2`|| +|lattice constant|'lattice constant \(Angstrom\)\s*=\s*(-?\d+(\.\d+)?)'|`lattice constant (Angstrom) = 0.529177`|| +|lattice vectors|'^Lattice vectors: \(Cartesian coordinate: in unit of a_0\)$'|` Lattice vectors: (Cartesian coordinate: in unit of a_0)`|| +|coordinate system|'^(DIRECT\|CARTESIAN) COORDINATES'|`DIRECT COORDINATES`|| +|atomic positions|'atom\s+x\s+y\s+z\s+mag‘|` atom x y z mag`|"tauc/taud" suffix has been removed, therefore the way to read the coordinates changes to find the head of the table, then read the following `number of atoms` lines. On the other hand, if the `calculation` is set to `md`, ABACUS will not dump the atomic positions to running log anymore, instead, will read from the MD_dump file| +|eigenvalues|'spin=(\d)\s+k-point=(\d+)/(\d+)\s+Cartesian=\s*(-?\d(\.\d+)?(e-\d+)?)\s+(-?\d(\.\d+)?(e-\d+)?)\s+(-?\d(\.\d\|+)?(e-\d+)?)\s+\(\d+\s+plane wave\)'| spin=1 k-point=1/1 Cartesian=0.0000000 0.0000000 0.0000000 (1837 plane wave)|eigenvalues information has been removed from the running log, the file istate.info is renamed as eig_occ.txt, where the eigenvalues are read| +|atomic forces|'#\s\*TOTAL\-FORCE\s*\(eV\s*/Angstrom\)\s\*#'|` #TOTAL-FORCE (eV/Angstrom)#`|| +|total stress|'#\s\*TOTAL\-STRESS\s*\(kbar\)\s\*#'|` #TOTAL-STRESS (kbar)# `|| +|kpoints and weights|'\s*(IBZ\|KPOINTS)\s+(DIRECT\|CARTESIAN)_X\s+(DIRECT\|CARTESIAN)_Y\s+(DIRECT\|CARTESIAN)_Z\s+WEIGHT(\s+ibz2bz)?'|` KPOINTS DIRECT_X DIRECT_Y DIRECT_Z WEIGHT`|| +|energy|'\s*ENERGY\s+Rydberg\s+eV'|` Energy Rydberg eV `|| +|total magnetism|'\s\*Total\sMagnetism\s\(uB\)(\s+x\s+y\s+z)?\s\*'|` Total Magnetism (uB) `|| + +Please look at detailed implementations in the following files. + +### generalio.py + +This module contains the general I/O functions for ABACUS. + +### latestio.py + +This module contains the I/O functions for the latest version of ABACUS. + +### legacyio.py + +This module contains the I/O functions for the Long-Term-Support (LTS) version of ABACUS. + +## utils + +This directory contains the utility modules for Abacuslite. + +### ksampling.py + +This module contains the wrapper of k-point sampling functions and helper functions. + +## xtest.sh + +This script can run all the unittests that programmed in all Python source files. \ No newline at end of file diff --git a/interfaces/ASE_interface/README.md b/interfaces/ASE_interface/README.md new file mode 100644 index 0000000000..824e69900d --- /dev/null +++ b/interfaces/ASE_interface/README.md @@ -0,0 +1,57 @@ +# abacuslite + +## Introduction + +abacuslite is a lightweight plugin for ABACUS (Atomic-orbital Based Ab-initio Computation at UStc), implementing the ASE (Atomic Simulation Environment) calculator interface. + +### Key Features + +- **Lightweight Design**: Implemented as a plugin, no need to modify ASE core code +- **Version Compatibility**: No longer restricted to specific ASE versions, works with most ASE versions +- **ASE Integration**: Uses ASE as the running platform, making ABACUS a callable calculator within it +- **Function Support**: Currently only supports SCF (Self-Consistent Field) functionality, returning energy, forces, stress, etc. + +## Installation + +Installation is very simple, just execute the following command in the project root directory: + +```bash +pip install . +``` + +## Usage Examples + +Please refer to the example scripts in the `examples` folder. Recommended learning path: + +1. **scf.py** - Basic SCF calculation example +2. **relax.py** - Atomic position relaxation calculation +3. **cellrelax.py** - Cell parameter relaxation calculation +4. **bandstructure.py** - Band structure calculation +5. **dos.py** - Density of states calculation +6. **md.py** - Molecular dynamics simulation +7. **constraintmd.py** - Constrained molecular dynamics simulation +8. **metadynamics.py** - Metadynamics simulation +9. **neb.py** - Nudged Elastic Band (NEB) calculation + +More usage examples will be provided in future versions. + +## Authors + +- Yuyang Ji +- Zhenxiong Shen +- Yike Huang +- Zhaoqing Liu + +## Acknowledgments + +Thanks to the ABACUS development team for their support and contributions. + +## License + +[Fill in according to the actual project license] + +## Contact + +If you have any questions or suggestions, please contact us through: + +- GitHub: [deepmodeling/abacus-develop](https://github.com/deepmodeling/abacus-develop) \ No newline at end of file diff --git a/interfaces/ASE_interface/abacuslite/__init__.py b/interfaces/ASE_interface/abacuslite/__init__.py new file mode 100644 index 0000000000..fe361f81ba --- /dev/null +++ b/interfaces/ASE_interface/abacuslite/__init__.py @@ -0,0 +1,13 @@ +''' +interfaces to Atomic-orbital Based Ab-initio Computation at UStc (ABACUS), +for more information about this DFT calculator, +please refer to the Github official repository: +https://github.com/deepmodeling/abacus-develop +and online-manual: +https://abacus.deepmodeling.com/en/latest/index.html + +For a more complete ABACUS pre-/post-processing workflow package, +please refer to the ABACUSTest package: +https://github.com/pxlxingliang/abacus-test +''' +from .core import * \ No newline at end of file diff --git a/interfaces/ASE_interface/abacuslite/core.py b/interfaces/ASE_interface/abacuslite/core.py new file mode 100644 index 0000000000..1b5305f364 --- /dev/null +++ b/interfaces/ASE_interface/abacuslite/core.py @@ -0,0 +1,636 @@ +# fmt: off + +''' +here the ase-abacus implementation is pasted and modified. +Source: +https://gitlab.com/1041176461/ase-abacus/-/blob/master/ase/calculators/abacus.py + +This module defines an ASE interface to ABACUS. +Created on Fri Jun 8 16:33:38 2018 + +ABACUS (Atomic-orbital Based Ab-initio Computation at UStc) is an open-source +package based on density functional theory (DFT). The package utilizes both plane +wave and numerical atomic basis sets with the usage of pseudopotentials to describe +the interactions between nuclear ions and valence electrons. ABACUS supports LDA, +GGA, meta-GGA, and hybrid functionals. Apart from single-point calculations, +the package allows geometry optimizations and ab-initio molecular dynamics with +various ensembles. The package also provides a variety of advanced functionalities +for simulating materials, including the DFT+U, VdW corrections, and implicit solvation +model, etc. In addition, ABACUS strives to provide a general infrastructure to +facilitate the developments and applications of novel machine-learning-assisted +DFT methods (DeePKS, DP-GEN, DeepH, DeePTB etc.) in molecular and material simulations. + +Modified on Wed Jun 20 15:00:00 2018 +@author: Shen Zhen-Xiong + +Modified on Wed Jun 03 23:00:00 2022 +@author: Ji Yu-yang + +Refactored from Sun Dec 07 21:41 2025 +@author: Huang Yi-ke +''' + +import os +import re +import shutil +import tempfile +import unittest +from pathlib import Path +from typing import Dict, Optional, List, Tuple, Set + +import numpy as np +from ase.calculators.genericfileio import ( + BaseProfile, + CalculatorTemplate, + GenericFileIOCalculator, + read_stdout +) +from ase.atoms import Atoms +from ase.dft.kpoints import BandPath +from ase.io import read + +from abacuslite.io.generalio import ( + file_safe_backup, + read_input, + read_stru, + read_kpt, + write_input, + write_stru, + write_kpt +) + +__LEGACYIO__ = True + +class AbacusProfile(BaseProfile): + '''AbacusProfile for interacting the ASE with ABACUS that installed in + the practical system''' + configvars = {'pseudo_dir', 'orbital_dir'} + + def __init__(self, + command: str, + pseudo_dir: Optional[str | Path] = None, + orbital_dir: Optional[str | Path] = None, + omp_num_threads: Optional[int] = None, + **kwargs): + '''Initialize ABACUS profile. + + Parameters + ---------- + command : str + The command to run ABACUS. NOTE: there may be the case for some + sophisticated ABACUS user they call ABACUS with command like + `OMP_NUM_THREADS=1 mpirun -np X abacus`. Here please do not set + the number of omp threads in `command`, instead, use `nomp=1`. + pseudo_dir : str or Path, optional + The directory containing pseudopotential files. + orbital_dir : str or Path, optional + The directory containing orbital basis files. This is only necessary + for an ABACUS-LCAO calculation + omp_num_threads : int, optional + The number of omp threads to use. + ''' + assert isinstance(command, str) + # further validation on the command will be in the __init__ of + # the base class + super().__init__(command, **kwargs) + self.pseudo_dir = pseudo_dir + self.orbital_dir = orbital_dir + + if omp_num_threads is not None: + # set the number of omp threads for the present process + assert isinstance(omp_num_threads, int) + os.environ['OMP_NUM_THREADS'] = str(omp_num_threads) + + @staticmethod + def parse_version(stdout) -> str: + # up to the ABACUS version v3.9.0.17, the run of command + # `abacus --version` would returns the information organized + # in the following way: + # ABACUS version v3.9.0.17 + return re.match(r'ABACUS version (\S+)', stdout).group(1) + + def get_calculator_command(self, inputfile) -> List[str]: + # because ABACUS run in the folder where there are INPUT files, so the + # additional inputfile argument is not used. + return [] + + def version(self) -> str: + '''get the abacus version information''' + cmd_ = [*self._split_command, '--version'] + return AbacusProfile.parse_version(read_stdout(cmd_)) + +class AbacusTemplate(CalculatorTemplate): + + implemented_properties = [ + 'energy', 'forces', 'stress', 'free_energy', 'magmom', 'dipole' + ] + _label = 'abacus' + + def __init__(self): + super().__init__( + 'abacus', + self.implemented_properties + ) + self.non_convergence_ok = False + # the redirect stdout and stderr + self.inputname = 'INPUT' # hard-coded + self.outputname = f'{self._label}.out' + self.errorname = f'{self._label}.err' + + # fix: inconsistent atoms order may induce bugs, here a list + # is kept to swap the order of atoms + self.atomorder = None + + '''because it may be not one-to-one mapping between the property + desired to calculate and the keywords used in the calculation, + in the following a series of functions for mapping the property + calculation to the keywords settings are implemented''' + @staticmethod + def get_energy_keywords(self) -> Dict[str, str]: + return {} + + @staticmethod + def get_forces_keywords(self) -> Dict[str, str]: + return {'cal_force': '1'} + + @staticmethod + def get_stress_keywords(self) -> Dict[str, str]: + return {'cal_stress': '1'} + + @staticmethod + def get_free_energy_keywords(self) -> Dict[str, str]: + return {} + + @staticmethod + def get_magmom_keywords(self) -> Dict[str, str]: + return {'nspin': '2'} + + @staticmethod + def get_dipole_keywords(self) -> Dict[str, str]: + return {'esolver_type': 'tddft', 'out_dipole': '1'} + + def get_property_keywords(self, + parameters: Dict[str, str], + properties: List[str]) -> Dict[str, str]: + '''Connect the relationship between the properties calculation and + the ABACUS keywords. May be more complicated in the future, therefore + it is better to have a seperate mapping function instead of + implementing in some other functions. + + Parameters + ---------- + parameters : dict + The parameters used to perform the calculation. + properties : list of str + The list of properties to calculate + ''' + # update the parameters with the keywords for the properties + # however, one should also consider that there may be the case that + # contradictory keywords are needed. In this kind of cases, + # we should raise a ValueError + param_cache_ = {} + def counter(param_new: Dict[str, str]) -> Dict[str, str]: + info = 'desired properties required contradictory keywords' + for k, v in param_new.items(): + if k in param_cache_ and param_cache_[k] != v: + raise ValueError(f'{info}: {k}={v} (now), {param_cache_[k]} (before)') + # if it is alright, pass through + return param_new + + # update the parameters with the keywords for the properties + for p in properties: + assert p in self.implemented_properties + parameters.update(counter(getattr(self, f'get_{p}_keywords')(parameters))) + + # from the parameters, get the file path + self.suffix = parameters.get('suffix', 'ABACUS') + self.calculation = parameters.get('calculation', 'scf') + # with the above two, the running log file can be positioned. + return parameters + + def write_input(self, + profile: AbacusProfile, + directory: Path | str, + atoms: Atoms, + parameters: Dict[str, str], + properties: List[str]) -> None: + '''Write the input files for the calculation. This function connects + the calculation in ASE language (atoms, properties, assisted by the + parameters) to the input files of ABACUS. + + Parameters + ---------- + profile : AbacusProfile + The profile used to perform the calculation. + directory : Path + The working directory to store the input files. + atoms : Atoms + The atoms object to perform the calculation on. Because + parameters: dict + The parameters used to perform the calculation. + properties: list of str + The list of properties to calculate + ''' + # directory + directory = Path(directory) + directory.mkdir(exist_ok=True, parents=True) + + # copy the `parameters` because later we will modify it + parameters = parameters.copy() + + # STRU + _ = file_safe_backup(directory / parameters.get('stru_file', 'STRU')) + # reorder the atoms according to the alphabet. Keep the reverse map + # so that we will recover the order in function read_results() + ind = sorted(range(len(atoms)), key=lambda i: atoms[i].symbol) + self.atomorder = sorted(range(len(atoms)), key=lambda i: ind[i]) # revmap + # then we write + _ = write_stru(atoms[ind], + outdir=directory, + pp_file=parameters.get('pseudopotentials'), + orb_file=parameters.get('basissets'), + fname=parameters.get('stru_file', 'STRU')) + + # KPT, if needed + if 'kpts' in parameters: + _ = file_safe_backup(directory / parameters.get('kpoint_file', 'KPT')) + _ = write_kpt(parameters['kpts'], + directory / parameters.get('kpoint_file', 'KPT')) + # should this function be responsible for checking the integrity + # of information provided by the user? There may be the case that + # user provides incomplete information, such that the ABACUS cannot + # run with parameters. + + # INPUT + # after writing the KPT and STRU, delete them from the parameters + _ = parameters.pop('kpts', None) + + _ = parameters.pop('pseudopotentials', None) + parameters.update({'pseudo_dir': profile.pseudo_dir}) + + _ = parameters.pop('basissets', None) + parameters.update({'orbital_dir': profile.orbital_dir}) + # update the parameters respect to the properties desired + parameters = self.get_property_keywords(parameters, properties) + # postprocess on the parameters: convert the key and values + # from any to string. For the case where the value is a + # array, convert to the string spaced by whitespace + for k, v in parameters.items(): + # if the v is iterable, convert to the string spaced by whitespace + if isinstance(v, (List, Tuple, Set)): + parameters[k] = ' '.join(str(i) for i in v) + dst = directory / self.inputname + _ = file_safe_backup(dst) + # remove possible key-value pairs whose value is None + parameters = {k: v for k, v in parameters.items() if v is not None} + + # FIXME: only support the ksdft esolver_type presently + if parameters.get('esolver_type', 'ksdft') != 'ksdft': + raise NotImplementedError( + 'ABACUS Lite only supports the ksdft esolver_type presently, ' + 'which means the ABACUS should always be used as a DFT ' + 'calculator. For other forcefields that ABACUS supports ' + 'such as the LJ, DP, etc., please either use the ABACUS ' + 'directly, or the implementation of interfaces to ASE ' + 'directly.' + ) + + # write the INPUT file to the target directory + _ = write_input(parameters, dst) + + def execute(self, + directory: Path | str, + profile: AbacusProfile): + '''Execute the ABACUS Lite calculation. + + Parameters + ---------- + directory : Path or str + The working directory to store the input files. + profile : AbacusProfile + The profile used to perform the calculation. + + Raises + ------ + SubprocessError + If the ABACUS Lite calculation fails. + ''' + from subprocess import SubprocessError + try: + profile.run(directory=directory, + inputfile=None, + outputfile=self.outputname, + errorfile=self.errorname) + except SubprocessError: + message = ['ABACUS Lite calculation failed'] + with open(directory / self.outputname, 'r') as f: + message.append(f.read()) + with open(directory / self.errorname, 'r') as f: + message.append(f.read()) + raise SubprocessError('\n'.join(message)) + + def read_results(self, directory) -> Dict: + '''the function that returns the desired properties in dict''' + read_abacus_out = lambda fn: None + global __LEGACYIO__ + if __LEGACYIO__: + from abacuslite.io.legacyio import read_abacus_out + else: + from abacuslite.io.latestio import read_abacus_out + + outdir = directory / f'OUT.{self.suffix}' + # only the last frame + atoms: Optional[Atoms] = read_abacus_out( + outdir / f'running_{self.calculation}.log', + sort_atoms_with=self.atomorder)[-1] + assert atoms is not None + + return dict(atoms.calc.properties()) + + def load_profile(self, cfg, **kwargs): + return AbacusProfile.from_config(cfg, self.name, **kwargs) + +class Abacus(GenericFileIOCalculator): + def __init__(self, + profile=None, + directory='.', + **kwargs): + '''Construct the ABACUS calculator. + + The keyword arguments (kwargs) can be one of the ASE standard + keywords: 'xc', 'kpts' or any of ABACUS' + native keywords. + + Parameters + ---------- + profile: AbacusProfile + the interface that interacts with the ABACUS executable. + directory: str or Path + the working directory to store the input files. + pseudopotentials: dict + A mapping from the element to the pseudopotential file name, + e.g. ``{'O': 'O_ONCV_PBE-1.0.upf', 'H': 'H.upf'}``. + baisssets: dict, optional + A mapping from the element to the ABACUS numerical atomic + orbital file name. This is necessary only when it is an + ABACUS-LCAO (Linear-Combination-of-Atomic-Orbitals) calculation + e.g. ``{'O': 'O_gga_10au_100Ry_2s2p1d.orb', + 'H': 'H_gga_10au_100Ry_2s1p.orb'}``. + kpts: dict + The k-points sampling should be given as a dict. For there + are many modes of k-sampling supported, the content may differ + in cases. A `mode` key should be used to specify the ksampling, + allowed modes are: `mp-sampling`, `line` and `point`. For + `mp-sampling` mode, `gamma-centered`, `nk` and `kshift` should + present. `gamma-centered` is a boolean, `nk` and `kshift` should + be lists of three integers. ... TBD + inp: dict + parameters setting in INPUT of ABACUS. NOTE: if there are settings + on the `pseudo_dir` and `orbital_dir`, these will overwrite the + value in the profile. If you do not expect this, please only use + the profile, because the profile stands for interfacing with the + ASE calculator instance with the computational environment. + + **kwargs: + Other parameters to be passed to the ABACUS calculator. + ''' + # not recommended :( + profile = AbacusProfile('abacus') if profile is None else profile + + # does not support ABACUS version series v3.9.0.x + version = profile.version() + if re.match(r'v3\.9\.0\.\d+', version): + global __LEGACYIO__ + __LEGACYIO__ = False + + # because ABACUS run job in folders, based on the assumption that + # there is only one job in the folder. Therefore once there are already + # files in the folder, will try to create a new one...(seriously?) + inp = kwargs.pop('inp', {}) + + super().__init__( + template=AbacusTemplate(), + profile=profile, + parameters=kwargs | inp, + directory=directory, + ) + + @classmethod + def restart(cls, profile=None, directory='.', **kwargs): + '''instantiate one ABACUS calculator from an existing job directory, + optionally overwrite some keywords''' + directory = Path(directory) + inp_read = read_input(directory / 'INPUT') + + pporb_read = read_stru(directory / 'STRU')['species'] + pseudopotentials = kwargs.get( + 'pseudopotentials', + {pporb['symbol']: pporb['pp_file'] for pporb in pporb_read} + ) + if 'pseudopotentials' in kwargs: + del kwargs['pseudopotentials'] + + basissets = kwargs.get( + 'basissets', + {pporb['symbol']: pporb.get('orb_file') for pporb in pporb_read} + ) + if 'basissets' in kwargs: + del kwargs['basissets'] + if all([forb is None for forb in basissets.values()]): + basissets = {} + assert all([forb is not None for forb in basissets.values()]) + + kpts = kwargs.get('kpts', read_kpt(directory / inp_read.get('kpoint_file', 'KPT'))) + if 'kpts' in kwargs: + del kwargs['kpts'] + + inp = inp_read | kwargs.get('inp', {}) + if 'inp' in kwargs: + del kwargs['inp'] + + return cls(profile=profile, + directory=directory, + pseudopotentials=pseudopotentials, + basissets=basissets, + kpts=kpts, + inp=inp, + **kwargs) + + def fixed_density(self, + kpts: BandPath | Dict[str, str | int | List[float]], + symmetry: str = 'off', + profile=None, + **kwargs) -> 'Abacus': + '''spawn a new ABACUS calculator with fixed density, based on the present + instance. This funcionality is mostly only useful when perform the + non-self-consistent calculations like band structure. + This interface is referred from the ASE document at: + https://ase-lib.org/gettingstarted/tut04_bulk/bulk.html#band-structure + , however, we also note that it is from the implementation of the + GPAW python, not the ASE official. + To make less development burden as possible, we use the same interface + as the GPAW python. + + Parameters + ---------- + kpts : BandPath | Dict[str, str | int | List[float]] + The k-point path to be calculated. Can be either a BandPath object + or a dictionary that contains the k-point information. For the latter + case, see tbgen/calculators/abacus/generalio.py::write_kpt for more + details. + symmetry : str, optional + The symmetry mode to be used. Default is 'off'. Now only the `off` + mode is supported. + profile : AbacusProfile, optional + The profile to be used. Default is None. If None, the profile of + the present instance will be used. + **kwargs : dict + Other parameters to be passed to the ABACUS calculator. + + Returns + ------- + Abacus + The new ABACUS calculator instance that can perform the nscf calculation + tasks + ''' + # we should overwrite the 'calculation' to 'nscf', and 'init_chg' to 'file' + assert symmetry == 'off' + + kwargs.setdefault('inp', {}).update({'calculation': 'nscf', + 'init_chg': 'file', + 'symmetry': 0, + 'out_band': 1, + 'kspacing': 0.0, # overwrite + 'gamma_only': False}) # overwrite + + profile = self.profile if profile is None else profile + + # get the kpoint coordinates + if isinstance(kpts, BandPath): + kwargs['kpts'] = { + 'mode': 'point', + 'nk': len(kpts.kpts), + 'nkinterpl': np.ones(len(kpts.kpts), dtype=int).tolist(), + 'coordinate': 'direct', + 'kpoints': kpts.kpts.tolist(), + } + else: + assert isinstance(kpts, dict) + kwargs['kpts'] = kpts + + # return + return Abacus.restart(profile=profile, + directory=self.directory, + **kwargs) + + def band_structure(self, efermi=None): + '''get the band structure from ABACUS. + (now not only GPAW can calculate the band structure ;) )''' + from ase.spectrum.band_structure import get_band_structure + return get_band_structure(calc=self, reference=efermi) + +class TestAbacusCalculator(unittest.TestCase): + + here = Path(__file__).parent + pporb = here.parent.parent.parent / 'tests' / 'PP_ORB' + + def test_calculator_results(self): + from ase.build.bulk import bulk + silicon = bulk('Si', crystalstructure='diamond', a=5.43) + aprof = AbacusProfile( + command='mpirun -np 2 abacus', + pseudo_dir=self.pporb, + orbital_dir=self.pporb, + omp_num_threads=1 + ) + with tempfile.TemporaryDirectory() as tmpdir: + calculator = Abacus(aprof, + directory=tmpdir, + pseudopotentials={'Si': 'Si_ONCV_PBE-1.0.upf'}, + basissets={'Si': 'Si_gga_6au_100Ry_2s2p1d.orb'}, + inp={'calculation': 'scf', + 'basis_type': 'lcao', + 'ks_solver': 'genelpa', + 'ecutwfc': 40, + 'symmetry': 1, + 'nspin': 1, + 'gamma_only': True, + 'cal_force': 1, + 'cal_stress': 1}) + silicon.calc = calculator + e = silicon.get_potential_energy() + + # check! + self.assertAlmostEqual(e, -194.953053309) + self.assertIsNotNone(calculator.results) + self.assertIsInstance(calculator.results, dict) + for k in ['nspins', 'nkpts', 'nbands', 'eigenvalues', 'occupations', + 'fermi_level', 'kpoint_weights', 'ibz_kpoints', 'energy', + 'free_energy', 'natoms', 'forces', 'stress', 'magmoms']: + self.assertIn(k, calculator.results) + self.assertEqual(calculator.results['nspins'], 1) + self.assertEqual(calculator.results['nkpts'], 1) + self.assertEqual(calculator.results['nbands'], 14) + self.assertEqual(calculator.results['energy'], e) + self.assertEqual(calculator.results['free_energy'], e) + self.assertEqual(calculator.results['natoms'], 2) + + for k in ['eigenvalues', 'occupations', 'ibz_kpoints', 'forces', 'stress', 'magmoms']: + self.assertIsInstance(calculator.results[k], np.ndarray) + + self.assertEqual(calculator.results['eigenvalues'].shape, (1, 1, 14)) + ekb = [-4.82194, 7.62727, 7.62727, 7.62737, 10.2436 , 10.2436 , + 10.2436 , 10.9884 , 16.057 , 16.057 , 23.8353 , 25.421 , + 25.421 , 25.4212 ] + self.assertTrue(np.allclose(calculator.results['eigenvalues'][0, 0, :], np.array(ekb))) + + self.assertEqual(calculator.results['occupations'].shape, (1, 1, 14)) + occ = [2., 2., 2., 2., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.] + self.assertTrue(np.allclose(calculator.results['occupations'][0, 0, :], np.array(occ))) + + self.assertEqual(calculator.results['ibz_kpoints'].shape, (1, 3)) + self.assertTrue(np.allclose(calculator.results['ibz_kpoints'][0, :], np.array([0,0,0]))) + + self.assertEqual(calculator.results['forces'].shape, (2, 3)) + self.assertTrue(np.allclose(calculator.results['forces'], np.zeros((2, 3)))) + + self.assertEqual(calculator.results['stress'].shape, (6,)) + stress = [-0.19327923, -0.19327923, -0.19327923, -0. , 0. , 0. ] + self.assertTrue(np.allclose(calculator.results['stress'], np.array(stress))) + + self.assertEqual(calculator.results['magmoms'].shape, (2,)) + self.assertTrue(np.allclose(calculator.results['magmoms'], np.zeros(2))) + + def test_restart(self): + from ase.build.bulk import bulk + silicon = bulk('Si', crystalstructure='diamond', a=5.43) + aprof = AbacusProfile( + command='mpirun -np 2 abacus', + pseudo_dir=self.pporb, + orbital_dir=self.pporb, + omp_num_threads=1 + ) + with tempfile.TemporaryDirectory() as tmpdir: + calculator = Abacus(aprof, + directory=tmpdir, + pseudopotentials={'Si': 'Si_ONCV_PBE-1.0.upf'}, + basissets={'Si': 'Si_gga_6au_100Ry_2s2p1d.orb'}, + inp={'calculation': 'scf', + 'basis_type': 'lcao', + 'ks_solver': 'genelpa', + 'ecutwfc': 40, + 'symmetry': 1, + 'nspin': 1, + 'gamma_only': True, + 'cal_force': 1, + 'cal_stress': 1}) + silicon.calc = calculator + e = silicon.get_potential_energy() + + # restart + silicon.calc = Abacus.restart(aprof, directory=tmpdir) + e2 = silicon.get_potential_energy() + self.assertAlmostEqual(e2, e) + +if __name__ == '__main__': + unittest.main() \ No newline at end of file diff --git a/tests/09_DeePKS/100_NO_GO_deepks_UT/S_I_mu_alpha_ref.dat b/interfaces/ASE_interface/abacuslite/io/__init__.py similarity index 100% rename from tests/09_DeePKS/100_NO_GO_deepks_UT/S_I_mu_alpha_ref.dat rename to interfaces/ASE_interface/abacuslite/io/__init__.py diff --git a/interfaces/ASE_interface/abacuslite/io/generalio.py b/interfaces/ASE_interface/abacuslite/io/generalio.py new file mode 100644 index 0000000000..2bf997e6cf --- /dev/null +++ b/interfaces/ASE_interface/abacuslite/io/generalio.py @@ -0,0 +1,749 @@ +'''public functions that can be used by both the LTS and the latest +version of ABACUS''' +import re +import os +import tempfile +import unittest +from pathlib import Path +from io import TextIOWrapper +from typing import Optional, Dict, List, Any + +import numpy as np +from ase.atoms import Atoms +from ase.build import bulk +from ase.data import chemical_symbols, atomic_masses +ATOM_MASS = dict(zip(chemical_symbols, atomic_masses.tolist())) + +def load_pseudo(pseudo_dir: str) -> Dict[str, str]: + '''load the pseudopotential mapping from the pseudo_dir''' + pseudo_dir = Path(pseudo_dir) + UPFPAT_ = r'^([A-Z][a-z]?)([^a-zA-Z]+\S+)?\.(upf|UPF)$' + # the file name is assumed to have the pattern: + # [element symbol][delimeter][other things...][.upf|UPF] + return {re.match(UPFPAT_, f.name).group(1): f.name + for f in pseudo_dir.glob('*') + if re.match(UPFPAT_, f.name)} + +def load_orbital(orbital_dir: str, efficiency: bool=True) -> Dict[str, str]: + '''load the ABACUS numerical atomic orbital mapping from the + orbital dir. There may be the case that there is not only one + orbitals find for one element, in this case, the second parameter + `efficiency` will take its effect: if true, use the "smaller" + one, otherwise, use the "larger" one + + Parameters + ---------- + orbital_dir : str + The directory containing the orbital basis files. + efficiency : bool, optional + Whether to use the "smaller" one, default is True. + + Returns + ------- + Dict[str, str] + The mapping from element symbol to orbital basis file name. + ''' + # a small helper function + def _basis_size(basis: List[str]) -> int: + SPECTRUM = 'spdfghi' + num, symb = zip(*[re.match(r'(\d+)([spdfghi])', b).groups() for b in basis]) + return sum((2*SPECTRUM.index(s) + 1) * int(n) for n, s in zip(num, symb)) + + orbital_dir = Path(orbital_dir) + ORBPAT_ = r'^([A-Z][a-z]?)_gga_(\d+)au_(\d+(\.\d+)?)Ry_(\w+)\.orb$' + # a correct parse would yield: + # elem, rcut, ecut, components = re.match(ORBPAT_, f.name) + tosort = {} + for f in orbital_dir.glob('*'): + m = re.match(ORBPAT_, f.name) + if m: + elem, rcut, ecut, _, components = m.groups() + components = re.findall(r'\d+[spdfghi]', components) + tosort.setdefault(elem, []).append( + (f.name, int(rcut), float(ecut), _basis_size(components)) + ) + # sort the basis files by their size: first by components, then by rcut, then by ecut + ib = 0 if efficiency else -1 + return {elem: sorted(basis, key=lambda b: (b[3], b[1], b[2]))[ib][0] + for elem, basis in tosort.items()} + +def file_safe_backup(fn: Path, suffix: str = 'bak'): + '''for the case where there are already files with the same name, + add a suffix to the file name, like `STRU.bak.0`. If there are + already `STRU.bak.0`, rename the elder to `STRU.bak.1` and let + the latest one be `STRU.bak.0`. + + Parameters + ---------- + fn : Path + The path to the file to backup. Note: it must be provided + as the Path object so that its folder is accessible by this + function. + suffix : str, optional + The suffix to add to the file name. Default is 'bak' + ''' + assert isinstance(fn, Path) + where = fn.parent + + # get the backup files + fbak = sorted(list(where.glob(f'{fn.name}.{suffix}.*')), + key=lambda p: int(p.name.split('.')[-1])) + if fbak: + # rename the elder by adding 1 to the suffix + for i, f in enumerate(fbak[::-1]): # reverse order, to avoid overwrite + j = len(fbak) - i + 1 #: STRU.bak.i -> STRU.bak.i+1 + fname = f.name.replace(f'.{j}', f'.{j+1}') + f.rename(f.parent / fname) + + # backup the latest file, if there is one + if fn.exists(): + fn.rename(fn.parent / f'{fn.name}.{suffix}.0') + +def _write_stru(job_dir, stru, fname='STRU'): + ''' + Generates a ABACUS STRU file from a STRU dict. + + Parameters + ---------- + job_dir: str + Directory in which the STRU file is generated. + stru : dict + Parameters to generate the STRU file. + See the docstring at the beginning of this script for details. + fname : str + Name of the STRU file. + + ''' + with open(Path(job_dir) / fname, 'w') as f: + + #============ ATOMIC_SPECIES ============ + f.write('ATOMIC_SPECIES\n') + width = {key + '_w' : max([len(str(s[key])) for s in stru['species']]) + for key in ['symbol', 'mass', 'pp_file']} + for s in stru['species']: + f.write('{symbol:<{symbol_w}} {mass:>{mass_w}} {pp_file:>{pp_file_w}}'.format(**s, **width)) + if 'pp_type' in s: + f.write(f" {s['pp_type']}") + f.write('\n') + + #============ NUMERICAL_ORBITAL ============ + if 'orb_file' in stru['species'][0]: + f.write('\nNUMERICAL_ORBITAL\n') + for s in stru['species']: + f.write(f"{s['orb_file']}\n") + + #============ LATTICE_CONSTANT/PARAMETER/VECTORS ============ + f.write('\nLATTICE_CONSTANT\n') + f.write(f"{stru['lat']['const']}\n") + + if 'vec' in stru['lat']: + f.write('\nLATTICE_VECTORS\n') + for v in stru['lat']['vec']: + f.write(f'{v[0]} {v[1]} {v[2]}\n') + + if 'param' in stru['lat']: + f.write('\nLATTICE_PARAMETER\n') + for param in stru['lat']['param']: + f.write(f'{param} ') + f.write('\n') + + #============ ATOMIC_POSITIONS ============ + f.write('\nATOMIC_POSITIONS\n') + f.write(f"{stru['coord_type']}\n") + + for s in stru['species']: + f.write(f"\n{s['symbol']}\n") + f.write(f"{s['mag_each']}\n") + f.write(f"{s['natom']}\n") + + for atom in s['atom']: + f.write(' '.join(f'{x}' for x in atom['coord'])) + + for key in ['m', 'v']: # frozen atom / initial velocity + if key in atom: + f.write(f' {key}' + + ''.join(f' {x}' for x in atom[key])) + + if 'mag' in atom: + if not isinstance(atom['mag'], tuple): # collinear + f.write(f" mag {atom['mag']}") + else: # non-collinear + mag_coord_type, mag = atom['mag'] + assert mag_coord_type in ['Cartesian', 'Spherical'] + if mag_coord_type == 'Cartesian': + f.write(f' mag {mag[0]} {mag[1]} {mag[2]}') + else: + f.write(f' mag {mag[0]} angle1 {mag[1]} angle2 {mag[2]}') + + f.write('\n') + +def write_stru(stru: Atoms, + outdir: str, + pp_file: Optional[Dict[str, str]], + orb_file: Optional[Dict[str, str]] = None, + fname: Optional[str] = 'STRU') -> str: + ''' + write the ABACUS STRU file from an Atoms object into outdir. + + Parameters + ---------- + stru : Atoms + The Atoms object to write. + outdir : str + The directory to write the STRU file. + pp_file : dict + A dictionary mapping element symbols to pseudopotential file names. + The keys are the element symbols, and the values are the paths to + the pseudopotential files. + orb_file : dict, optional + A dictionary mapping element symbols to orbital file names. + The keys are the element symbols, and the values are the paths to + the orbital files. If None, no orbital files will be written. + fname : str, optional + The name of the STRU file to write. Default is 'STRU'. + + Returns + ------- + str + The path to the written STRU file. + ''' + from ase.units import ( + Bohr as __BOHR__, + Angstrom as __ANGSTROM__ + ) + assert isinstance(stru, Atoms) + pp_file = pp_file or {} # can be None, for those non-ESolver_KS cases + + elem = stru.get_chemical_symbols() + # ABACUS requires the atoms ranged species-by-species, therefore + # we need to sort the atoms by species + ind = np.argsort(elem) + coords = stru.get_positions()[ind] + elem = [elem[i] for i in ind] + elem_uniq, nat = np.unique(elem, return_counts=True) + stru_dict = { + 'coord_type': 'Cartesian', + 'lat': { + 'const': __ANGSTROM__ / __BOHR__, + 'vec': np.array(stru.get_cell()).tolist() + }, + 'species': [ + { + 'symbol': e, + 'mass': ATOM_MASS[e], + 'pp_file': pp_file.get(e, ''), + 'pp_type': '', + 'natom': n, + 'mag_each': 0.0, + 'atom': [ + { + 'coord': coords[j].tolist(), + 'm': [1, 1, 1], + 'v': [0.0, 0.0, 0.0] + } for j in range(np.sum(nat[:i]), np.sum(nat[:i+1])) + ] + } + for i, (n, e) in enumerate(zip(nat, elem_uniq)) + ] + } + if orb_file is not None: + for s in stru_dict['species']: + s['orb_file'] = orb_file[s['symbol']] + + _write_stru(outdir, stru_dict, fname) + + return (Path(outdir) / fname).resolve().as_posix() + +def write_input(data: Dict[str, Any], fn: str) -> str: + ''' + write the ABACUS INPUT file from a Dict[str, Any] object + + Parameters + ---------- + data : dict + The data to write to the INPUT file. + The keys are the parameters and the values are the values of the parameters. + fn : str + The path to the ABACUS INPUT file. + + Returns + ------- + str + the absolute path of the written INPUT file + ''' + with open(fn, 'w') as f: + f.write('INPUT_PARAMETERS\n') + for key, value in data.items(): + f.write(f'{key} {value}\n') + f.write('\n') # add a newline at the end + + return str(Path(fn).resolve()) + +def _write_kline(data: Dict[str, Any], f: TextIOWrapper): + ''' + write the k-point file whose mode is "Line" + ''' + f.write('K_POINTS\n') + f.write(f"{data['nk']}\n") + f.write('Line_Cartesian\n' if data['coordinate'].lower() == 'cartesian' + else 'Line\n') + for k, nk in zip(data['kpoints'], data['nkinterpl']): + f.write(f"{k[0]} {k[1]} {k[2]} {nk}\n") + +def _write_ksampl_mp(data: Dict[str, Any], f: TextIOWrapper): + ''' + write the k-point file whose mode is automatically sampling with Monkhorst-Pack + ''' + f.write('K_POINTS\n') + f.write('0\n') + f.write("Gamma\n" if data['gamma-centered'] else "MP\n") + f.write(f"{data['nk'][0]} {data['nk'][1]} {data['nk'][2]} " + f"{data['kshift'][0]} {data['kshift'][1]} {data['kshift'][2]}\n") + +def _write_kpoint(data: Dict[str, Any], f: TextIOWrapper): + ''' + write the k-point file whose mode is specifying kpoints one-by-one + ''' + f.write('K_POINTS\n') + f.write(f"{data['nk']}\n") + f.write(f"{data['coordinate'].capitalize()}\n") + nkinterpl = data.get('nkinterpl', [1 for _ in data['kpoints']]) + for k, nk in zip(data['kpoints'], data.get('nkinterpl', nkinterpl)): + f.write(f"{k[0]} {k[1]} {k[2]} {nk}\n") + +def read_kpoint_from_running_log(fn: str) -> Dict[str, Any]: + '''Read the k-point information from the ABACUS running log file.''' + raise NotImplementedError('read_kpoint_from_running_log is not implemented yet.') + +def write_kpt(data: Dict[str, Any], fn: str) -> str: + ''' + write the ABACUS KPT file from a Dict[str, Any] object + + Parameters + ---------- + data : dict + The data to write to the KPT file. + The keys are the parameters and the values are the values of the parameters. + fn : str + The path to the ABACUS KPT file. + + Returns + ------- + str + the absolute path of the written KPT file + ''' + assert 'mode' in data, 'KPT data must contain "mode" key' + mywriter = { + # 'line': _write_kline, + 'mp-sampling': _write_ksampl_mp, + 'point': _write_kpoint + } + assert data['mode'] in mywriter, \ + f'Invalid KPT mode {data["mode"]}, must be one of ' \ + f'{list(mywriter.keys())}' + with open(fn, 'w') as f: + mywriter[data['mode']](data, f) + + return str(Path(fn).resolve()) + +def _parse_coord_line(line): + ''' + Parses a coordinate line (which may include extra parameters) + in the ATOMIC_POSITIONS block. + + A coordinate line always contains the x, y, z coordinates of an atom, + and may also include + - whether an atom is frozen in MD or relaxation + - initial velocity of an atom in MD or relaxation + - magnetic moment of an atom + + Reference + --------- + https://abacus.deepmodeling.com/en/latest/advanced/input_files/stru.html + + (see section "More Key Words" for details) + + ''' + fields = line.split() + result = { 'coord' : [float(x) for x in fields[0:3]] } + + idx = 3 + while idx < len(fields): + if fields[idx].isdigit(): # no keyword, 0/1 -> frozen atom + result['m'] = [int(x) for x in fields[idx:idx+3]] + idx += 3 + elif fields[idx] == 'm': # frozen atom + result['m'] = [int(x) for x in fields[idx+1:idx+4]] + idx += 4 + elif fields[idx] in ['v', 'vel', 'velocity']: # initial velocity + result['v'] = [float(x) for x in fields[idx+1:idx+4]] + idx += 4 + elif fields[idx] in ['mag', 'magmom']: + ''' + here we assume that frozen atom info cannot be placed after + a collinear mag info without a keyword + i.e., the following coordinate line + 0.0 0.0 0.0 mag 1.0 0 0 0 + is not allowed; one must explicitly specify 'm' in this case: + 0.0 0.0 0.0 mag 1.0 m 0 0 0 + + ''' + if idx + 2 < len(fields) and fields[idx+2] == 'angle1': + result['mag'] = ('Spherical', + list(map(float, fields[idx+1:idx+6:2]))) + idx += 6 + elif idx + 2 < len(fields) and fields[idx+2][0].isdigit(): + result['mag'] = ('Cartesian', + list(map(float, fields[idx+1:idx+4]))) + idx += 4 + else: # collinear + result['mag'] = float(fields[idx+1]) + idx += 2 + else: + raise ValueError('Error: unknown keyword %s'%fields[idx]) + + return result + +def _atomic_positions_gen(lines): + ''' + Iteratively generates info per species from the ATOMIC_POSITIONS block. + + ''' + natom = int(lines[2]) + yield {'symbol': lines[0], 'mag_each': float(lines[1]), 'natom': natom, + 'atom': [_parse_coord_line(line) for line in lines[3:3+natom]]} + if len(lines) > 3 + natom: + yield from _atomic_positions_gen(lines[3+natom:]) + +def read_stru(fn: str) -> Dict[str, Any]: + ''' + read the ABACUS STRU file and return a comprehensive Dict[str, Any] + object. This function is implemented by @jinzx10 in ABACUS-CSW-NAO + project. + + Parameters + ---------- + fn : str + The path to the ABACUS STRU file. + + Returns + ------- + A dict containing the following keys-value pairs: + 'species' : list of dict + List of atomic species. Each dict contains 'symbol', 'mass', + 'pp_file', and optionally 'pp_type'. + ''' + block_title = ['ATOMIC_SPECIES', + 'NUMERICAL_ORBITAL', + 'LATTICE_CONSTANT', + 'LATTICE_PARAMETER', + 'LATTICE_VECTORS', + 'ATOMIC_POSITIONS'] + + def _trim(line): + return line.split('#')[0].split('//')[0].strip(' \t\n') + + with open(fn, 'r') as f: + lines = [_trim(line).replace('\t', ' ') + for line in f.readlines() if len(_trim(line)) > 0] + + # break the content into blocks + delim = [i for i, line in enumerate(lines) if line in block_title] \ + + [len(lines)] + blocks = {lines[delim[i]] : lines[delim[i]+1:delim[i+1]] + for i in range(len(delim) - 1)} + + stru = {} + #============ LATTICE_CONSTANT/PARAMETER/VECTORS ============ + stru['lat'] = {'const': float(blocks['LATTICE_CONSTANT'][0])} + if 'LATTICE_VECTORS' in blocks: + stru['lat']['vec'] = [[float(x) for x in line.split()] + for line in blocks['LATTICE_VECTORS']] + elif 'LATTICE_PARAMETER' in blocks: + stru['lat']['param'] = [float(x) + for x in blocks['LATTICE_PARAMETERS'].split()] + + #============ ATOMIC_SPECIES ============ + stru['species'] = [dict(zip(['symbol', 'mass', 'pp_file', 'pp_type'], + line.split())) + for line in blocks['ATOMIC_SPECIES']] + for s in stru['species']: + s['mass'] = float(s['mass']) + + #============ NUMERICAL_ORBITAL ============ + if 'NUMERICAL_ORBITAL' in blocks: + for i, s in enumerate(stru['species']): + s['orb_file'] = blocks['NUMERICAL_ORBITAL'][i] + + #============ ATOMIC_POSITIONS ============ + stru['coord_type'] = blocks['ATOMIC_POSITIONS'][0] + index = { s['symbol'] : i for i, s in enumerate(stru['species']) } + for ap in _atomic_positions_gen(blocks['ATOMIC_POSITIONS'][1:]): + stru['species'][index[ap['symbol']]].update(ap) + + return stru + +def read_input(fn: str) -> Dict[str, Any]: + ''' + read the ABACUS INPUT file and return a comprehensive Dict[str, Any] + + Parameters + ---------- + fn : str + The path to the ABACUS INPUT file. + + Returns + ------- + dict + ''' + with open(fn) as f: + raw = [l.strip() for l in f.readlines()] + raw = [l for l in raw + if l and not re.match(r'^(INPUT_PARAMETERS|#|//|!)', l)] + raw = [re.split(r'#|//|!', l)[0].strip() for l in raw] + raw = [re.split(r'\s+', l) for l in raw] + + return dict([(l[0], ' '.join(l[1:])) for l in raw if len(l) > 0]) + +def _read_kline(raw: List[str]) -> Dict[str, Any]: + ''' + read the k-point file whose mode is "Line", and return the parsed result + ''' + assert len(raw) >= 4, \ + f'Invalid KPT file, expected at least 4 lines, got {len(raw)}' + assert re.match(r'^\d+$', raw[1]), \ + f'Invalid KPT file, expected the second line to be an integer, ' \ + f'got {raw[1]}' + assert int(raw[1]) == len(raw) - 3, \ + f'Invalid KPT file, expected the second line to be the number of ' \ + f'k-points, got {raw[1]}, but found {len(raw)} k-points' + assert raw[2].lower().startswith('line'), \ + f'Invalid KPT file, expected "Line" in the third line, got {raw[2]}' + mymatch = [re.match(r'^(-?\d+(\.\d+)?)\s+(-?\d+(\.\d+)?)\s+(-?\d+(\.\d+)?)\s+' + r'(\d+).*', l) + for l in raw[3:]] + assert all(m for m in mymatch), \ + 'Invalid KPT file, expected the k-points to be in the format ' \ + '"x y z n # comment"' + print(raw) + return { + 'mode': 'line', + 'coordinate': 'Cartesian' if raw[2].lower().endswith('cartesian') else 'Direct', + 'nk': int(raw[1]), + 'kpoints': [tuple([float(x) for x in m.groups()[:3]]) for m in mymatch], + 'nkinterpl': [int(m.groups()[6]) for m in mymatch] + } + +def _read_ksampl_mp(raw: List[str]) -> Dict[str, Any]: + ''' + read the k-point file whose mode is automatically sampling with Monkhorst-Pack + scheme, and return the parsed result + ''' + assert len(raw) == 4, \ + f'Invalid KPT file, expected 4 lines, got {len(raw)}' + assert raw[2].lower() in ['gamma', 'mp'], \ + f'Invalid KPT file, expected "Gamma" or "MP" in the third line, ' \ + f'got {raw[2]}' + # the following may raise the ValueError if unpacking is not correct + nk1, nk2, nk3, kshift1, kshift2, kshift3 = map(int, raw[3].split()) + return { + 'mode': 'mp-sampling', + 'gamma-centered': bool(raw[2].lower() == 'gamma'), + 'nk': (nk1, nk2, nk3), + 'kshift': (kshift1, kshift2, kshift3) + } + +def _read_kpoint(raw: List[str]) -> Dict[str, Any]: + ''' + read the k-point file whose mode is specifying kpoints one-by-one, return + the parsed result. + ''' + assert len(raw) >= 4, \ + f'Invalid KPT file, expected at least 4 lines, got {len(raw)}' + assert re.match(r'^\d+$', raw[1]), \ + f'Invalid KPT file, expected the second line to be an integer, ' \ + f'got {raw[1]}' + assert int(raw[1]) == len(raw) - 3, \ + f'Invalid KPT file, expected the second line to be the number of ' \ + f'k-points, got {raw[1]}, but found {len(raw)} k-points' + assert raw[2].lower() in ['direct', 'cartesian'], \ + f'Invalid KPT file, expected "Direct" or "Cartesian" in the third line, ' \ + f'got {raw[2]}' + mymatch = [re.match(r'^(-?\d+(\.\d+)?)\s+(-?\d+(\.\d+)?)\s+(-?\d+(\.\d+)?)\s*' + r'(\d+).*', l) + for l in raw[3:]] + assert all(m for m in mymatch), \ + 'Invalid KPT file, expected the k-points to be in the format ' \ + '"x y z n # comment"' + + return { + 'mode': 'point', + 'coordinate': 'Cartesian' if raw[2].lower() == 'cartesian' else 'Direct', + 'nk': int(raw[1]), + 'kpoints': [tuple(map(float, m.groups()[:3])) for m in mymatch], + 'weights': [int(m.groups()[6]) for m in mymatch] + } + +def read_kpt(fn: str) -> Dict[str, Any]: + ''' + read the ABACUS KPT file and return a comprehensive Dict[str, Any] + + Parameters + ---------- + fn : str + The path to the ABACUS KPT file. + + Returns + ------- + dict + A dictionary containing the k-point information. + ''' + with open(fn) as f: + raw = [l.strip() for l in f.readlines()] + raw = [l for l in raw if l] + parser_switch = {'line': _read_kline, + 'gamma': _read_ksampl_mp, 'mp': _read_ksampl_mp, + 'direct': _read_kpoint, 'cartesian': _read_kpoint} + assert raw[0] == 'K_POINTS', \ + f'Invalid KPT file {fn}, first line must be "K_POINTS"' + # because there are modes like "Line_Cartesian", we need to + # split the second line by '_' + return parser_switch[raw[2].lower().split('_')[0]](raw) + +class TestAbacusCalculatorIOUtil(unittest.TestCase): + + def setUp(self): + here = Path(__file__).parent + self.testfiles = here / 'testfiles' + + def test_input_io(self): + fn = self.testfiles / 'input-script' + data = read_input(fn) + with tempfile.NamedTemporaryFile(mode='w') as f: + fn_ = Path(f.name) + write_input(data, fn_.as_posix()) + data_ = read_input(fn_.as_posix()) + self.assertDictEqual(data, data_) + # will automatically delete the file after the context manager + + def test_stru_io(self): + from ase.units import Bohr, Angstrom + nacl = bulk('NaCl', 'rocksalt', a=5.64) + write_stru( + nacl, + outdir=self.testfiles, + pp_file={ + 'Na': 'Na.pz-bhs.UPF', + 'Cl': 'Cl.pz-bhs.UPF' + }, + orb_file={ + 'Na': 'Na_gga_6au_100Ry_2s2p1d.orb', + 'Cl': 'Cl_gga_6au_100Ry_2s2p1d.orb', + }, + ) + stru_ = read_stru(self.testfiles / 'STRU') + (self.testfiles / 'STRU').unlink() + + self.assertIsInstance(stru_, dict) + for k in ['lat', 'species', 'coord_type']: + self.assertIn(k, stru_) + for k in ['const', 'vec']: + self.assertIn(k, stru_['lat']) + for k in ['symbol', 'mass', 'pp_file', 'orb_file', 'mag_each', 'natom', 'atom']: + for s in stru_['species']: + self.assertIn(k, s) + self.assertEqual(stru_['coord_type'], 'Cartesian') + + self.assertEqual(stru_['lat']['const'], Angstrom / Bohr) + self.assertTrue(np.allclose(stru_['lat']['vec'], np.array(nacl.get_cell()))) + self.assertIsInstance(stru_['species'], list) + + for s in stru_['species']: + self.assertIsInstance(s, dict) + self.assertEqual(s['natom'], 1) + self.assertIsInstance(s['atom'], list) + self.assertEqual(s['natom'], len(s['atom'])) + for a in s['atom']: + self.assertIsInstance(a, dict) + for k in ['coord', 'm', 'v']: + self.assertIn(k, a) + self.assertEqual(a['m'], [1, 1, 1]) + self.assertEqual(a['v'], [0.0, 0.0, 0.0]) + + self.assertEqual(stru_['species'][0]['symbol'], 'Cl') + self.assertEqual(stru_['species'][1]['symbol'], 'Na') + self.assertEqual(stru_['species'][0]['mass'], ATOM_MASS['Cl']) + self.assertEqual(stru_['species'][1]['mass'], ATOM_MASS['Na']) + self.assertEqual(stru_['species'][0]['pp_file'], 'Cl.pz-bhs.UPF') + self.assertEqual(stru_['species'][1]['pp_file'], 'Na.pz-bhs.UPF') + self.assertEqual(stru_['species'][0]['orb_file'], 'Cl_gga_6au_100Ry_2s2p1d.orb') + self.assertEqual(stru_['species'][1]['orb_file'], 'Na_gga_6au_100Ry_2s2p1d.orb') + + def test_kpt_io(self): + kpt = { + 'mode': 'point', + 'coordinate': 'Cartesian', + 'nk': 1, + 'kpoints': [(0.0, 0.0, 0.0)], + 'weights': [1] + } + with tempfile.NamedTemporaryFile(mode='w') as f: + fn_ = Path(f.name) + write_kpt(kpt, fn_.as_posix()) + self.assertDictEqual(kpt, read_kpt(fn_.as_posix())) + + kpt = { + 'mode': 'mp-sampling', + 'nk': (5, 5, 5), + 'kshift': (0, 0, 0), + 'gamma-centered': True, + } + with tempfile.NamedTemporaryFile(mode='w') as f: + fn_ = Path(f.name) + write_kpt(kpt, fn_.as_posix()) + self.assertDictEqual(kpt, read_kpt(fn_.as_posix())) + + # kpt = { + # 'mode': 'line', + # 'nk': 6, + # 'kpoints': [ + # (0.0, 0.0, 0.0), + # (0.5, 0.5, 0.5), + # (0.0, 0.5, 0.5), + # (0.5, 0.5, 0.0), + # (0.5, 0.0, 0.5), + # (0.0, 0.0, 0.5), + # ], + # 'nkinterpl': [10, 10, 10, 10, 10, 1], + # 'coordinate': 'Cartesian', + # } + # with tempfile.NamedTemporaryFile(mode='w') as f: + # fn_ = Path(f.name) + # write_kpt(kpt, fn_.as_posix()) + # self.assertDictEqual(kpt, read_kpt(fn_.as_posix())) + + @unittest.skip('') + def test_load_pseudo(self): + pseudo_dir = self.testfiles / 'pporb' + pseudo_map = load_pseudo(pseudo_dir) + self.assertEqual(pseudo_map['O'], 'O.upf') + self.assertEqual(pseudo_map['Si'], 'Si.upf') + self.assertEqual(pseudo_map['In'], 'In.upf') + self.assertEqual(pseudo_map['As'], 'As.pbe-n-rrkjus_psl.0.2.UPF') + self.assertEqual(pseudo_map['Ga'], 'Ga.pbe-dn-kjpaw_psl.1.0.0.UPF') + + @unittest.skip('') + def test_load_orbital(self): + orbital_dir = self.testfiles / 'pporb' + orbital_map = load_orbital(orbital_dir) + self.assertEqual(orbital_map['O'], 'O_gga_6au_100Ry_2s2p1d.orb') + self.assertEqual(orbital_map['Si'], 'Si_gga_7au_100Ry_2s2p1d.orb') + self.assertEqual(orbital_map['In'], 'In_gga_8au_100Ry_1s1p1d.orb') + + orbital_map = load_orbital(orbital_dir, efficiency=False) + self.assertEqual(orbital_map['O'], 'O_gga_6au_100Ry_2s2p1d.orb') + self.assertEqual(orbital_map['Si'], 'Si_gga_7au_100Ry_2s2p1d.orb') + self.assertEqual(orbital_map['In'], 'In_gga_8au_100Ry_2s2p2d1f.orb') + +if __name__ == '__main__': + unittest.main() \ No newline at end of file diff --git a/interfaces/ASE_interface/abacuslite/io/latestio.py b/interfaces/ASE_interface/abacuslite/io/latestio.py new file mode 100644 index 0000000000..4ba0443765 --- /dev/null +++ b/interfaces/ASE_interface/abacuslite/io/latestio.py @@ -0,0 +1,642 @@ +'''implements the parser for the latest version of ABACUS''' +import re +import shutil +import unittest +from pathlib import Path +from typing import Dict, List, Optional + +import numpy as np +from ase.atoms import Atoms +from ase.calculators.singlepoint import ( + SinglePointKPoint, + SinglePointDFTCalculator +) +from ase.units import GPa +from ase.constraints import full_3x3_to_voigt_6_stress + +# some output formats are not updated, +# for these cases, we import from the legacyio module +from abacuslite.io.legacyio import ( + read_kpoints_from_running_log, + read_energies_from_running_log, + read_traj_from_md_dump, + read_magmom_from_running_log, + is_invalid_arr, +) + +def read_esolver_type_from_running_log(src: str | Path | List[str]) \ + -> str: + ''' + read the esolver type from the ABACUS running log file. + + Parameters + ---------- + fn : str + The path to the ABACUS running log file. + + Returns + ------- + str + The esolver type used in the ABACUS calculation. + ''' + if isinstance(src, (str, Path)): + with open(src) as f: + raw = f.readlines() + else: # assume the src is the return of the readlines() + raw = src + # with open(fn) as f: + # raw = f.readlines() + raw = [l.strip() for l in raw] + raw = [l for l in raw if l] # remove empty lines + + # search for the line with information like: + # "#ENERGY SOLVER# ksdft_lcao" + lines = [ + re.match(r'#ENERGY SOLVER#\s+(\S+)', l) + for l in raw + ] + eslvtyp = [m.group(1) for m in lines if m is not None] + assert len(set(eslvtyp)) == 1, \ + f'Inconsistent esolver type: {set(eslvtyp)}' + return eslvtyp[0] + +def read_band_from_running_log(src: str | Path | List[str]): + '''in the latest branch, the band information is removed from running log. + This function is only for backward compatibility. To get the band information, + please call the "read_band_from_eig_occ" function.''' + return None + +def read_band_from_eig_occ(src: str | Path | List[str]) \ + -> List[Dict[str, np.ndarray]]: + '''read the OUT.${suffix}/eig_occ.txt + + Parameters + ---------- + src : str or Path or list of str + The path to the ABACUS running log file or the return of the readlines() method. + + Returns + ------- + list of dict + A list of dictionaries containing the k-points and band energies. + Each dictionary has keys 'k' and 'e', where 'k' is a list of k-point + coordinates and 'e' is a numpy array of band energies. + ''' + if isinstance(src, (str, Path)): + with open(src) as f: + raw = f.readlines() + else: # assume the src is the return of the readlines() + raw = src + # with open(fn) as f: + # raw = f.readlines() + raw = [l.strip() for l in raw] + raw = [l for l in raw if l] # remove empty lines + + nframe = len([l for l in raw if l.endswith('# ionic step')]) + ekb_leading_pat = r'spin=(\d)\s+k-point=(\d+)/(\d+)\s+Cartesian=\s*' \ + + r'(-?\d(\.\d+)?(e-\d+)?)\s+' \ + + r'(-?\d(\.\d+)?(e-\d+)?)\s+' \ + + r'(-?\d(\.\d+)?(e-\d+)?)\s+' \ + + r'\(\d+\s+plane wave\)' + # from the ekb leading line, there are nspin, nk information, also the + # coordinate of kpoints + iekb = [i for i, l in enumerate(raw) if re.match(ekb_leading_pat, l)] + assert len(iekb) > 0, f'No k-point found' + + k_raw = [re.match(ekb_leading_pat, raw[i]).groups() for i in iekb] + + # spin + ispin = [int(g[0]) for g in k_raw] + assert all(i in [1, 2] for i in ispin) # what about nspin 4? + nspin = len(set(ispin)) + assert nspin in [1, 2] + + # k-points + nk = [int(g[2]) for g in k_raw] + nk = set(nk) + assert len(nk) == 1, f'Sampling on k-points changed during the calculation: {nk}' + nk = nk.pop() + ik = [int(g[1]) for g in k_raw] + assert all(i-1 in range(nk) for i in ik), f'k-point index out of range: {ik}' + assert len(ik) == nframe * nspin * nk + k = np.array([[float(g[i]) for i in [3, 6, 9]] for g in k_raw]) + assert k.shape == (nframe * nspin * nk, 3) + k = k.reshape((nframe, nspin, nk, 3)) + + ekbpat = r'\d+\s+' + ekbpat += r'(-?\d+(\.\d+)?(e[+-]\d+)?)\s+' + ekbpat += r'(\d+(\.\d+)?(e[+-]\d+)?)' + iekb = [i for i, l in enumerate(raw) if re.match(ekbpat, l)] + assert len(iekb) > 0, f'No band energy found' + assert len(iekb) % (nspin*nk) == 0 + nb = len(iekb) // (nframe * nspin * nk) + ekb_raw = np.array([list(map(float, raw[i].split()[1:])) for i in iekb]) + assert ekb_raw.shape == (nframe * nspin * nk * nb, 2) + ekb_raw = ekb_raw.reshape(nframe, nspin, nk, nb, 2) + ekb, occ = ekb_raw[:, :, :, :, 0], ekb_raw[:, :, :, :, 1] + + return [{'k': ki, 'e': eki, 'occ': occi} + for ki, eki, occi in zip(k, ekb, occ)] + +def read_traj_from_running_log(src: str | Path | List[str]) \ + -> List[Dict[str, np.ndarray|str]]: + ''' + read the trajectory from the ABACUS running log file. + NOTE: in MD runs, the trajectory is not recorded in the running log file. + + Parameters + ---------- + fn : str + The path to the ABACUS running log file. + + Returns + ------- + list of dict + A list of dictionaries containing the coordinate system, cell, elements + and the coordinates of the atoms. Each dictionary has keys 'coordinate', + 'cell', 'cell_unit', 'alat_in_angstrom', 'elem', and 'coords'. + The values are numpy arrays or strings. + - 'coordinate': string, the coordinate system, e.g., 'Cartesian' or 'Direct' + - 'cell': numpy array of shape (3, 3) + - 'cell_unit': string, the unit of the cell, e.g., 'Angstrom' + - 'alat_in_angstrom': float, the lattice constant in Angstrom + - 'elem': list of strings, the chemical symbols of the elements + - 'coords': numpy array of shape (natoms, 3), the coordinates of the atoms + ''' + if isinstance(src, (str, Path)): + with open(src) as f: + raw = f.readlines() + else: # assume the src is the return of the readlines() + raw = src + # with open(fn) as f: + # raw = f.readlines() + raw = [l.strip() for l in raw] + raw = [l for l in raw if l] # remove empty lines + + # search for the total number of atoms + # r'TOTAL ATOM NUMBER = (\d+)' + natoms = [re.search(r'TOTAL ATOM NUMBER\s*=\s*(\d+)', l) for l in raw] + natoms = [int(n.group(1)) for n in natoms if n] + assert len(set(natoms)) == 1, \ + f'Inconsistent number of atoms: {set(natoms)}' + natoms = natoms[0] + + # search for the coordinate system + # r'^([DIRECT|CARTESIAN]) COORDINATES$' + coordinate = [re.match(r'^(DIRECT|CARTESIAN) COORDINATES', l) for l in raw] + coordinate = [l.group(1).lower().capitalize() for l in coordinate if l] + assert len(set(coordinate)) == 1, \ + f'Inconsistent coordinate system: {set(coordinate)}' + coordinate = coordinate[0] + + # search for the cell, but first get the "a0": lattice constant + # r'lattice constant (Angstrom) = (-?\d+(\.\d+)?)' + a0 = [re.search(r'lattice constant \(Angstrom\)\s*=\s*(-?\d+(\.\d+)?)', l, + re.IGNORECASE) for l in raw] + a0 = [float(n.group(1)) for n in a0 if n] + assert len(set(a0)) == 1, f'Inconsistent lattice constant: {set(a0)}' + a0 = a0[0] + # then the cell + # r'^Lattice vectors: \(Cartesian coordinate: in unit of a\_0\)$' + icell = [i for i, l in enumerate(raw) + if re.match(r'^Lattice vectors: \(Cartesian coordinate: in unit of a_0\)$', l)] + assert len(icell) > 0, f'No cell found' + # nframe = len(icell) # will be 1 for cell-invariant MD + # assert nframe > 0, f'Invalid trajectory with length {nframe}') + cell_raw = [raw[i+1:i+1+3] for i in icell] + cell = [np.array([list(map(float, l.split())) for l in c]) * a0 + for c in cell_raw] # convert to Angstrom + assert all(c.shape == (3, 3) for c in cell), \ + f'Unexpected shape of cell: {[c.shape for c in cell]}' + + # search for the elements and coordinates + coord_leading_pat = r'atom\s+x\s+y\s+z\s+mag' # what about nspin 4? + icoord = [i for i, l in enumerate(raw) if re.match(coord_leading_pat, l)] + nframe = len(icoord) + coord_raw = np.array([l.split() for i in icoord for l in raw[i+1:i+1+natoms]]) + elem = coord_raw[:, 0].astype(str).reshape((nframe, natoms)) + coords = coord_raw[:, 1:4].astype(float).reshape((nframe, natoms, 3)) + mag = coord_raw[:, 4].astype(float).reshape((nframe, natoms, )) + + cell = np.array(cell).reshape(-1, 3, 3) + if cell.shape[0] == 1: + cell = [cell[0] for _ in range(nframe)] + assert len(cell) == nframe, \ + f'Unexpected number of cells: {len(cell)}, ' \ + f'expected {nframe}' + return [{ + 'coordinate': coordinate, + 'cell': c, + 'cell_unit': 'Angstrom', + 'alat_in_angstrom': a0, + 'elem': e, + 'coords': co + } for c, e, co in zip(cell, elem, coords)] + +def read_forces_from_running_log(src: str | Path | List[str]) \ + -> List[np.ndarray]: + ''' + read the forces from the ABACUS running log file. + + Parameters + ---------- + src : str or Path or list of str + The path to the ABACUS running log file or the return of the readlines() method. + + Returns + ------- + list of numpy array + A list of numpy arrays containing the forces on each atom. + Each array has shape (natoms, 3). + ''' + if isinstance(src, (str, Path)): + with open(src) as f: + raw = f.readlines() + else: # assume the src is the return of the readlines() + raw = src + # with open(fn) as f: + # raw = f.readlines() + raw = [l.strip() for l in raw] + raw = [l for l in raw if l] # remove empty lines + + # iteratively search for the forces, which led by the title `#TOTAL-FORCE (eV/Angstrom)#` + forces, istart = [], 0 + while istart < len(raw): + ith = None # index of the table header + for i, l in enumerate(raw[istart:]): + if re.match(r'#\s*TOTAL\-FORCE\s*\(eV\s*/Angstrom\)\s*#', l, re.IGNORECASE): + ith = i + break + if ith is None: # no forces found + break + # otherwise + # search for the first line that matches the pattern + FORCEPAT_ = r'\s*([A-Z][a-z]?\d+)\s+(-?\d+(\.\d+)?)\s+(-?\d+(\.\d+)?)\s+(-?\d+(\.\d+)?)' + itb = None # index of the first line of the table body + for i, l in enumerate(raw[istart+ith+1:]): + if re.match(FORCEPAT_, l): + itb = i + break + if itb is None: # no content found + break + # otherwise + jtb = None # index of the last line of the table body + for j, l in enumerate(raw[istart+ith+1+itb:]): + if not re.match(FORCEPAT_, l): + jtb = j + break + if jtb is None: # no content found + break + + # truncate the force table and append + force_raw = raw[istart+ith+1+itb:istart+ith+1+itb+jtb] + force = np.array([list(map(float, l.split()[1:])) for l in force_raw]) + forces.append(force) + + # update the istart + istart += ith + itb + jtb + 1 + + return forces + +def read_stress_from_running_log(src: str | Path | List[str]) \ + -> List[np.ndarray]: + ''' + read the stress from the ABACUS running log file. + + Parameters + ---------- + src : str or Path or list of str + The path to the ABACUS running log file or the return of the readlines() method. + + Returns + ------- + list of numpy array + A list of numpy arrays containing the stress on each atom. + Each array has shape (3, 3). + ''' + if isinstance(src, (str, Path)): + with open(src) as f: + raw = f.readlines() + else: # assume the src is the return of the readlines() + raw = src + # with open(fn) as f: + # raw = f.readlines() + raw = [l.strip() for l in raw] + raw = [l for l in raw if l] # remove empty lines + + # iteratively search for the stress, which led by the title `#TOTAL-STRESS (kbar)#` + stresses, istart = [], 0 + + while istart < len(raw): + ith = None # index of the table header + for i, l in enumerate(raw[istart:]): + if re.match(r'#\s*TOTAL\-STRESS\s*\(kbar\)\s*#', l, re.IGNORECASE): + ith = i + break + if ith is None: # no stress found + break + # otherwise + # search for the first line that matches the pattern + STRESSPAT_ = r'\s*(-?\d+(\.\d+)?)\s+(-?\d+(\.\d+)?)\s+(-?\d+(\.\d+)?)' + itb = None # index of the first line of the table body + for i, l in enumerate(raw[istart+ith+1:]): + if re.match(STRESSPAT_, l): + itb = i + break + if itb is None: # no content found + break + # otherwise + jtb = 3 # because the stress tensor would be a (3, 3)-matrix + + # truncate the stress table and append + stress_raw = raw[istart+ith+1+itb:istart+ith+1+itb+jtb] + stress = np.array([list(map(float, l.split())) for l in stress_raw]).reshape(3, 3) + # unit: kbar -> GPa + stresses.append(-0.1 * stress * GPa) + + # update the istart + istart += ith + itb + jtb + 1 + + return stresses + +def read_abacus_out(fileobj, + index=slice(None), + results_required=True, + sort_atoms_with: Optional[List[int]] = None) -> Atoms | List[Atoms]: + '''Reads the ABACUS output files. This function would be called by + the AbacusTemplate.read_results() function. The detailed call stack + is as follows: + get_potential_energy() + -> get_property() + -> calculate() + -> read_results() + -> read_abacus_out() *here* + + To use this function as a standalone one, the fileobj should be + the return of the open() function, which is a TextIOWrapper object: + >>> with open(fn) as fileobj: + ... read_abacus_out(fileobj) + + Parameters + ---------- + fileobj : str | Path | TextIOWrapper + The file object to read. + index : slice + The index of the frames to read. + results_required : bool + Whether the results are required. If True, the results will be + returned. If False, the results will not be returned. This parameter + is not used. + sort_atoms_with: Optional[List[int]] + The sort order of the atoms. If not None, the atoms will be sorted + according to the order in the list. + + Returns + ------- + atoms : Atoms | List[Atoms] + The atoms object, whose calculator is the `SinglePointDFTCalculator`. + ''' + assert isinstance(fileobj, Path) + # it is required that the running log file is passed as the Path object + # so that the band structure file ``eig_occ.txt`` can be located as the + # one in the same folder, otherwise the reading of elecstate will be + # invalid and cause the failure + with open(fileobj) as f: + abacus_lines = f.readlines() + + # read the esolver type + eslvtyp = read_esolver_type_from_running_log(abacus_lines) + # FIXME: implement read_ksdft_esolver_out instead of read_abacus_out to + # make flexible esolver support + + # read the structure, with the cell, elem, etc. (nframe) + # if it is MD run, the trajectories will be in the file MD_dump, instead + # of the running log + trajectory = read_traj_from_running_log(abacus_lines) \ + if fileobj.name != 'running_md.log' else \ + read_traj_from_md_dump(fileobj.parent / 'MD_dump') + + # read the eigenvalues (nframe, nk, nbnd) + elecstate = read_band_from_eig_occ(fileobj.parent / 'eig_occ.txt') + # FIXME: remove thw following line till the eig_occ.txt is not written + # in the append mode + (fileobj.parent / 'eig_occ.txt').unlink() + + # read the atomic forces (nframe, nat, 3) + forces = read_forces_from_running_log(abacus_lines) + + # read the stress (nframe, 3, 3), but may be None + stress = read_stress_from_running_log(abacus_lines) + + # read all kpoints tables (but only want the first, spinless, with ibz2bz) + k, _, _, _, _ = read_kpoints_from_running_log(abacus_lines) + # unpack the kpoints information + kvecd, wk, _ = k + + # FIXME: in principle, the two spin channels share the same set of + # the kpoints, so it is not needed to have two sets of kpoints + # and it is assumed that the sampling of kpoints won't change during + # the simulation, which is, not exactly to be true for the NPT-MD + # runs. + + _, energies = read_energies_from_running_log(abacus_lines) + # only keep the SCF converged energies + energies = [edct for edct in energies if 'E_KS(sigma->0)' in edct] + + # read the magmom + magmom = read_magmom_from_running_log(abacus_lines) + + # roughly check the integrity of data from their length consistency + assert len(trajectory) == len(energies), \ + f'Inconsistent length: {len(trajectory)} != {len(energies)}' + assert len(trajectory) == len(elecstate), \ + f'Inconsistent length: {len(trajectory)} != {len(elecstate)}' + if len(forces) == 0: + forces = [None] * len(trajectory) + assert len(trajectory) == len(forces), \ + f'Inconsistent length: {len(trajectory)} != {len(forces)}' + if len(stress) == 0: + stress = [None] * len(trajectory) + assert len(trajectory) == len(stress), \ + f'Inconsistent length: {len(trajectory)} != {len(stress)}' + if len(magmom) == 0: + magmom = [np.zeros(shape=(len(trajectory[0]['elem'])))] * len(trajectory) + + # loop over the frame... + images, ind = [], sort_atoms_with + for frame, estat, mag, frs, strs, ener in zip( + trajectory, elecstate, magmom, forces, stress, energies): + # for each frame, a structure can be defined + ind = ind or list(range(len(frame['elem']))) + atoms = Atoms(symbols=np.array(frame['elem'])[ind].tolist(), + positions=frame['coords'][ind], + cell=frame['cell']) + # from result, a calculator can be assembled + # however, sometimes the force and stress is not calculated + # in this case, we set them to None + frs = None if is_invalid_arr(frs) else frs[ind] + strs = None if is_invalid_arr(strs) else full_3x3_to_voigt_6_stress(strs) + calc = SinglePointDFTCalculator(atoms=atoms, energy=ener['E_KohnSham'], + free_energy=ener['E_KohnSham'], + forces=frs, stress=strs, + magmoms=mag, efermi=ener['E_Fermi'], + ibzkpts=kvecd, dipole=None) + # import the eigenvalues and occupations kpoint-by-kpoint + calc.kpts = [] + for ispn, (ekb, occ) in enumerate(zip(estat['e'], estat['occ'])): # loop over the spin + calc.kpts += [SinglePointKPoint(weight=wk[ik], + s=ispn, + k=kvecd[ik], + eps_n=ekb[ik,:], + f_n=occ[ik,:]) + for ik in range(len(kvecd))] + # attach the calculator to the atoms + atoms.calc = calc + images.append(atoms) + + return images[index] + +class TestLatestIO(unittest.TestCase): + ''' + test the validities of functions for the I/O of the latest version of ABACUS + ''' + here = Path(__file__).parent + testfiles = here / 'testfiles' + + def test_read_esolver_type_from_running_log(self): + self.assertEqual( + read_esolver_type_from_running_log( + self.testfiles / 'lcao-symm0-nspin2-multik-cellrelax'), + 'ksdft_lcao' + ) + self.assertEqual( + read_esolver_type_from_running_log( + self.testfiles / 'lcao-symm0-nspin2-multik-relax'), + 'ksdft_lcao' + ) + self.assertEqual( + read_esolver_type_from_running_log( + self.testfiles / 'lcao-symm1-nspin1-multik-scf'), + 'ksdft_lcao' + ) + self.assertEqual( + read_esolver_type_from_running_log( + self.testfiles / 'pw-symm0-nspin4-gamma-md'), + 'ksdft_pw' + ) + + def test_read_band_from_running_log(self): + self.assertIsNone( + read_band_from_running_log(self.testfiles / 'lcao-symm0-nspin2-multik-cellrelax') + ) + + def test_read_band_from_eig_occ(self): + fn = self.testfiles / 'nspin4-gamma-eigocc' + elecstate = read_band_from_eig_occ(fn) + # 2 frames, 1 spin channel (nspin 4), 1 kpoint, 35 bands + self.assertEqual(len(elecstate), 2) + for es in elecstate: # loop over frames + self.assertIn('k', es) + self.assertEqual(es['k'].shape, (1, 1, 3)) # ispin, ik, 3 + self.assertIn('e', es) + self.assertEqual(es['e'].shape, (1, 1, 35)) # ispin, ik, nbnd + self.assertIn('occ', es) + self.assertEqual(es['occ'].shape, (1, 1, 35)) # ispin, ik, nbnd + + def test_read_traj_from_running_log(self): + traj = read_traj_from_running_log(self.testfiles / 'lcao-symm0-nspin2-multik-cellrelax') + self.assertEqual(len(traj), 3) + + reference = [ + np.array([[4.17203 , 2.086015, 2.086015], + [2.086015, 4.17203 , 2.086015], + [2.086015, 2.086015, 4.17203 ]]), + np.array([[4.17550947, 2.05376104, 2.05376104], + [2.05811246, 4.12078078, 2.09979522], + [2.05811246, 2.09979522, 4.12078078]]), + np.array([[4.17667347, 2.04296382, 2.04296382], + [2.04876712, 4.10361705, 2.10440948], + [2.04876712, 2.10440948, 4.10361705]]) + ] + + taud = np.array([[0. , 1. , 1. ], + [0.5 , 0.5 , 0.5 ], + [0.25, 0.25, 0.25], + [0.75, 0.75, 0.75]]) + for t, c in zip(traj, reference): + self.assertEqual(t['coordinate'], 'Direct') + self.assertEqual(t['cell_unit'], 'Angstrom'), + self.assertEqual(t['alat_in_angstrom'], 4.17203) + self.assertTrue(all(e1 == e2 for e1, e2 in zip(t['elem'], np.array(['Ni1', 'Ni2', 'O', 'O'])))) + self.assertTrue(np.allclose(t['cell'], c)) + self.assertTrue(np.allclose(t['coords'] % 1, taud % 1)) + + def test_read_forces_from_running_log(self): + forces = read_forces_from_running_log(self.testfiles / 'lcao-symm0-nspin2-multik-relax') + self.assertEqual(len(forces), 2) # two frames + reference = [ + np.array([ + [-1.2994798821, -0.7502719805, 0.0000000000], + [ 1.2994798821, 0.7502719805, 0.0000000000], + ]), + np.array([ + [-1.6814741322, -0.9708025265, 0.0000000000], + [ 1.6814741322, 0.9708025265, 0.0000000000], + ]), + ] + for f, ref in zip(forces, reference): + self.assertTrue(np.allclose(f, ref)) + + def test_read_stress_from_running_log(self): + stresses = read_stress_from_running_log( + self.testfiles / 'lcao-symm0-nspin2-multik-cellrelax') + self.assertEqual(len(stresses), 2) # two frames + reference = [ + np.array([ + [ 28.0257165781, -25.0814687477, -25.0814687477], + [-25.0814687477, -57.2309475134, 52.8147857580], + [-25.0814687477, 52.8147857580, -57.2309475134], + ]), + np.array([ + [ 10.5133147463,-28.8166870580, -28.8166870559], + [-28.8166870580, 0.1640200010, 7.6016822662], + [-28.8166870559, 7.6016822662, 0.1640199977], + ]), + ] + for s, ref in zip(stresses, reference): + self.assertTrue(np.allclose(s, -0.1 * GPa * ref)) + + def test_read_abacus_out_string(self): + fn = self.testfiles / 'pw-symm0-nspin4-gamma-md' + # the case that does not give the instance of Path + with self.assertRaises(AssertionError): + read_abacus_out(str(fn)) + + def test_read_pw_symm0_nspin4_gamma_md(self): + # make files ready + shutil.copy(self.testfiles / 'pw-symm0-nspin4-gamma-md', + self.testfiles / 'running_md.log') + shutil.copy(self.testfiles / 'nspin4-gamma-eigocc', + self.testfiles / 'eig_occ.txt') + shutil.copy(self.testfiles / 'nspin4-gamma-mddump', + self.testfiles / 'MD_dump') + + res = read_abacus_out(self.testfiles / 'running_md.log') + self.assertIsNotNone(res) + self.assertEqual(len(res), 2) # two frames + + for atoms in res: + self.assertIsInstance(atoms, Atoms) + self.assertIsInstance(atoms.calc, SinglePointDFTCalculator) + self.assertGreater(len(atoms.calc.kpts), 0) + # Gamma point calculation + for k in atoms.calc.kpts: + self.assertIsInstance(k, SinglePointKPoint) + + # remove the files + (self.testfiles / 'running_md.log').unlink() + # (self.testfiles / 'eig_occ.txt').unlink() + (self.testfiles / 'MD_dump').unlink() + +if __name__ == '__main__': + unittest.main() \ No newline at end of file diff --git a/interfaces/ASE_interface/abacuslite/io/legacyio.py b/interfaces/ASE_interface/abacuslite/io/legacyio.py new file mode 100644 index 0000000000..ce4a0aa49d --- /dev/null +++ b/interfaces/ASE_interface/abacuslite/io/legacyio.py @@ -0,0 +1,1098 @@ +import re +import shutil +import unittest +from io import TextIOWrapper +from pathlib import Path +from typing import Dict, List, Tuple, Optional + +import numpy as np +from ase.atoms import Atoms +from ase.calculators.singlepoint import ( + SinglePointKPoint, + SinglePointDFTCalculator +) +from ase.units import Ry, eV, GPa, bar +from ase.constraints import full_3x3_to_voigt_6_stress +# from ase.utils import reader + +__all__ = ['read_kpoints_from_running_log', + 'read_band_from_running_log', 'read_traj_from_running_log', + 'read_traj_from_md_dump', 'read_forces_from_running_log', + 'read_stress_from_running_log', 'read_energies_from_running_log', + 'read_abacus_out'] + +def parse_kpoints_table(raw: List[str]) \ + -> Tuple[np.ndarray, np.ndarray, List[int] | None]: + '''parse the lines that are the kpoints table + + Parameters + ---------- + raw : list of str + The lines of the kpoints table. + + Returns + ------- + tuple + A tuple containing the kpoints coordinates, weights and ibz2bz indexing, + or without the indexing. + ''' + # the pattern with the ibz2bz indexing + W_PAT_ = r'\s*(\d+)' + W_PAT_ += r'\s+(-?\d\.\d+)\s+(-?\d\.\d+)\s+(-?\d\.\d+)' + W_PAT_ += r'\s+(\d\.\d+)\s+(\d+)' + # the pattern without the ibz2bz indexing + WOPAT_ = r'\s*(\d+)' + WOPAT_ += r'\s+(-?\d\.\d+)\s+(-?\d\.\d+)\s+(-?\d\.\d+)' + WOPAT_ += r'\s+(\d\.\d+)' + # for each line, must match either the first or the second + + with_ibz = all(re.match(W_PAT_, l) for l in raw) + assert with_ibz or all(re.match(WOPAT_, l) for l in raw), \ + f'Unexpected format of kpoints table: {raw}' + if with_ibz: + data = [re.match(W_PAT_, l).groups() for l in raw] + k = np.array([list(map(float, ki[1:4])) for ki in data]) + w = np.array([float(ki[4]) for ki in data]) + ibz2bz = [int(ki[5]) for ki in data] + return k, w, ibz2bz + # otherwise, it must be the case without the ibz2bz + data = [re.match(WOPAT_, l).groups() for l in raw] + k = np.array([list(map(float, ki[1:4])) for ki in data]) + w = np.array([float(ki[4]) for ki in data]) + return k, w, None + +def read_kpoints_from_running_log(src: str | Path | List[str]) \ + -> Tuple[Tuple[np.ndarray, np.ndarray, List[int]], + Tuple[np.ndarray, np.ndarray], + List[Tuple[np.ndarray, np.ndarray]], + List[Tuple[np.ndarray, np.ndarray]], + List[Tuple[np.ndarray, np.ndarray]]]: + ''' + read the kpoint coordinates and weights from the running log file. Up to now, + the ABACUS version 3.10.1 LTS, the ABACUS will print 4 tables of kpoints at + first, including the one with the ibz2bz indexing, one of spinless direct + coordinates, then two spin cartesian and direct coordinates of kpoints. If + the cell would change during the calculation, then after each cell-relax step, + there will be 3 tables, including direct, cartesian and then direct (again, + but i don't know why!) kpoint coordinates. + + Parameters + ---------- + fn : str + The path to the ABACUS running log file. + + Returns + ------- + tuple + A tuple contains the first table (with ibz2bz indexing), the second table + (spinless direct coordinates), the trajectories of the third (spin-direct), + fourth (spin-cartesian) and fifth (spin-direct) tables. + ''' + if isinstance(src, (str, Path)): + with open(src) as f: + raw = f.readlines() + else: # assume the src is the return of the readlines() + raw = src + # with open(fn) as f: + # raw = f.readlines() + raw = [l.strip() for l in raw if l.strip()] + raw = [l for l in raw if l] # remove empty lines + + # the pattern of table header + THPAT_ = r'\s*(IBZ|KPOINTS)' + THPAT_ += r'\s+(DIRECT|CARTESIAN)_X\s+(DIRECT|CARTESIAN)_Y\s+(DIRECT|CARTESIAN)_Z' + THPAT_ += r'\s+WEIGHT(\s+ibz2bz)?' + # the pattern of table content, optionally with the ibz2bz data + TBPAT_ = r'\s*\d+' + TBPAT_ += r'\s+(-?\d(\.\d+)?)\s+(-?\d(\.\d+)?)\s+(-?\d(\.\d+)?)' + TBPAT_ += r'\s+(\d(\.\d+)?)(\s+\d+)?' + + # search for the kpoints table + tables, istart = [], 0 + while istart < len(raw): + # search for the table header... + ith = None + for i, l in enumerate(raw[istart:]): + if re.match(THPAT_, l): # find a table header + ith = i + break + if ith is None: # no more table + break + itb = ith + 1 # we assume there is no more header before the data + assert re.match(TBPAT_, raw[istart+itb]) # really? + + # search for the end of the table... + jtb = None + for i, l in enumerate(raw[istart+itb:]): + if not re.match(TBPAT_, l): # the next line is not a table content + jtb = i + break + if jtb is None: # no more table + break + # parse the table + ktab_raw = raw[istart+itb:istart+itb+jtb] + tables.append(parse_kpoints_table(ktab_raw)) + + # update the starting point to search for the next table + istart += itb + jtb + 1 + + # sort tables... + kibz = tables.pop(0) + # get the number of kpoints, then will use in reshaping the kpoints trajectories + nk, _ = kibz[0].shape + kspnls = (tables[0][0], tables[0][1]) # spinless direct, drop the None in [2] + kd1traj = [(t[0].reshape(-1, nk, 3), t[1].reshape(-1, nk)) # drop the [2] because it is None + for i, t in enumerate(tables) if i % 3 == 0] + kctraj = [(t[0].reshape(-1, nk, 3), t[1].reshape(-1, nk)) # drop the [2] because it is None + for i, t in enumerate(tables) if i % 3 == 1] + kd2traj = [(t[0].reshape(-1, nk, 3), t[1].reshape(-1, nk)) # drop the [2] because it is None + for i, t in enumerate(tables) if i % 3 == 2] + return kibz, kspnls, kd1traj, kctraj, kd2traj + +def read_esolver_type_from_running_log(src: str | Path | List[str]) \ + -> str: + ''' + read the esolver type from the ABACUS running log file. + + Parameters + ---------- + fn : str + The path to the ABACUS running log file. + + Returns + ------- + str + The esolver type used in the ABACUS calculation. + ''' + if isinstance(src, (str, Path)): + with open(src) as f: + raw = f.readlines() + else: # assume the src is the return of the readlines() + raw = src + # with open(fn) as f: + # raw = f.readlines() + raw = [l.strip() for l in raw] + raw = [l for l in raw if l] # remove empty lines + + # search for the line with information like: + # "The esolver type has been set to : lj_pot" + lines = [ + re.match(r'The esolver type has been set to : (\S+)', + l) for l in raw + ] + eslvtyp = [m.group(1) for m in lines if m is not None] + assert len(set(eslvtyp)) == 1, \ + f'Inconsistent esolver type: {set(eslvtyp)}' + return eslvtyp[0] + +def read_band_from_running_log(src: str | Path | List[str]) \ + -> List[Dict[str, np.ndarray]]: + ''' + read the band structure from the ABACUS running log file. This would be + helpful for MD case. + + Parameters + ---------- + src : str or Path or list of str + The path to the ABACUS running log file or the return of the readlines() method. + + Returns + ------- + list of dict + A list of dictionaries containing the k-points and band energies. + Each dictionary has keys 'k' and 'e', where 'k' is a list of k-point + coordinates and 'e' is a numpy array of band energies. + ''' + masknspin = lambda n: 1 if n in [1, 4] else n + + if isinstance(src, (str, Path)): + with open(src) as f: + raw = f.readlines() + else: # assume the src is the return of the readlines() + raw = src + # with open(fn) as f: + # raw = f.readlines() + raw = [l.strip() for l in raw] + raw = [l for l in raw if l] # remove empty lines + + # search for the number of spin channels, bands and kpoints first + # r'nspin\s+=\s+(\d+)' + nspin = [re.search(r'nspin\s+=\s+(\d+)', l) for l in raw] + nspin = [int(n.group(1)) for n in nspin if n] + assert len(set(nspin)) == 1, \ + f'Inconsistent number of spins: {set(nspin)}' + nspin = nspin[0] + # r'NBANDS\s+=\s+(\d+)' + nbnd = [re.search(r'NBANDS\s+=\s+(\d+)', l) for l in raw] + nbnd = [int(n.group(1)) for n in nbnd if n] + assert len(set(nbnd)) == 1, \ + f'Inconsistent number of bands: {set(nbnd)}' + nbnd = nbnd[0] + # r'nkstot\snow\s=\s(\d+)' + # (there may be not the nkstot_ibz for symmetry 0 case) + # symmetry 1 + nkibz = [re.search(r'nkstot_ibz\s+=\s+(\d+)', l) for l in raw] + nkibz = [int(n.group(1)) for n in nkibz if n] + # symmetry 0, -1 + nktot = [re.search(r'nkstot\s+=\s+(\d+)', l) for l in raw] + nktot = [int(n.group(1)) for n in nktot if n] + nk = nktot if len(nkibz) == 0 else nkibz + assert len(set(nk)) == 1, \ + f'Inconsistent number of k-points: {set(nk)}' + nk = nk[0] + + # extract the band, first find the leading line + # 333/511 kpoint (Cartesian) = 0.13022 0.052050 -6.5974e-10 (190 pws) + ekb_leading_pat = r'\d+/\d+\s+kpoint\s+\(Cartesian\)\s+=\s+' \ + + r'(-?\d(\.\d+)?(e-\d+)?)\s+' \ + + r'(-?\d(\.\d+)?(e-\d+)?)\s+' \ + + r'(-?\d(\.\d+)?(e-\d+)?)\s+' \ + + r'\(\d+\s+pws\)' + iekb = [i for i, l in enumerate(raw) if re.match(ekb_leading_pat, l)] + assert len(iekb) > 0, f'No k-point found' + assert len(iekb) % (masknspin(nspin)*nk) == 0, \ + f'Inconsistent number of k-points: {len(iekb)} vs {nk}' + k_raw = [re.match(ekb_leading_pat, raw[i]).groups() for i in iekb] + k = np.array([list(map(float, ki[::3])) for ki in k_raw]) + assert k.shape == (len(iekb), 3), \ + f'Unexpected shape of k-points: {k.shape}, expected ({len(iekb)}, 3)' + + nframe = len(iekb) // (masknspin(nspin)*nk) # number of frames, for MD or relax tasks + ekb_raw = [l for i in iekb for l in raw[i+1:i+1+nbnd]] + # each line should in the format of + # r'\d+\s+(-?\d(\.\d+)?)\s+(\d(\.\d+)?) + # Changelog: there are cases that the band energies and occupations are in scientific + # notation, e.g., 1.0e-01, 1.0e+00, so the regular expression should be + # r'\d+\s+(-?\d+(\.\d+)?(e[+-]\d+)?)\s+(\d+(\.\d+)?(e[+-]\d+)?)' instead + ekbpat = r'\d+\s+' + ekbpat += r'(-?\d+(\.\d+)?(e[+-]\d+)?)\s+' + ekbpat += r'(\d+(\.\d+)?(e[+-]\d+)?)' + assert all(re.match(ekbpat, l) for l in ekb_raw), \ + 'Unexpected format of band energies: \n' + '\n'.join(ekb_raw) + # ekb in the second column, occ in the third column + ekb_raw = np.array([list(map(float, l.split())) for l in ekb_raw]) + assert ekb_raw.shape == (nframe * masknspin(nspin) * nk * nbnd, 3), \ + f'Unexpected shape of band energies: {ekb_raw.shape}. ' \ + f'Expected ({nframe * masknspin(nspin) * nk * nbnd}, 3), in which ' \ + f'nframe={nframe}, nspin={nspin}, nk={nk}, nbnd={nbnd}' + ekb = ekb_raw[:, 1].reshape(nframe, masknspin(nspin), nk, nbnd) + occ = ekb_raw[:, 2].reshape(nframe, masknspin(nspin), nk, nbnd) + # reshape the k-points to (nframe, nspin, nk, 3) + k = k.reshape(nframe, masknspin(nspin), nk, 3) + + return [{'k': ki, 'e': eki, 'occ': occi} + for ki, eki, occi in zip(k, ekb, occ)] + +def read_traj_from_running_log(src: str | Path | List[str]) \ + -> List[Dict[str, np.ndarray|str]]: + ''' + read the trajectory from the ABACUS running log file. This would be + helpful for MD case. + + Parameters + ---------- + fn : str + The path to the ABACUS running log file. + + Returns + ------- + list of dict + A list of dictionaries containing the coordinate system, cell, elements + and the coordinates of the atoms. Each dictionary has keys 'coordinate', + 'cell', 'cell_unit', 'alat_in_angstrom', 'elem', and 'coords'. + The values are numpy arrays or strings. + - 'coordinate': string, the coordinate system, e.g., 'Cartesian' or 'Direct' + - 'cell': numpy array of shape (3, 3) + - 'cell_unit': string, the unit of the cell, e.g., 'Angstrom' + - 'alat_in_angstrom': float, the lattice constant in Angstrom + - 'elem': list of strings, the chemical symbols of the elements + - 'coords': numpy array of shape (natoms, 3), the coordinates of the atoms + ''' + if isinstance(src, (str, Path)): + with open(src) as f: + raw = f.readlines() + else: # assume the src is the return of the readlines() + raw = src + # with open(fn) as f: + # raw = f.readlines() + raw = [l.strip() for l in raw] + raw = [l for l in raw if l] # remove empty lines + + # search for the total number of atoms + # r'TOTAL ATOM NUMBER = (\d+)' + natoms = [re.search(r'TOTAL ATOM NUMBER\s*=\s*(\d+)', l) for l in raw] + natoms = [int(n.group(1)) for n in natoms if n] + assert len(set(natoms)) == 1, \ + f'Inconsistent number of atoms: {set(natoms)}' + natoms = natoms[0] + + # search for the coordinate system + # r'^([DIRECT|CARTESIAN]) COORDINATES$' + coordinate = [re.match(r'^(DIRECT|CARTESIAN) COORDINATES', l) for l in raw] + coordinate = [l.group(1).lower().capitalize() for l in coordinate if l] + assert len(set(coordinate)) == 1, \ + f'Inconsistent coordinate system: {set(coordinate)}' + coordinate = coordinate[0] + + # search for the cell, but first get the "a0": lattice constant + # r'lattice constant (Angstrom) = (-?\d+(\.\d+)?)' + a0 = [re.search(r'lattice constant \(Angstrom\)\s*=\s*(-?\d+(\.\d+)?)', l, + re.IGNORECASE) for l in raw] + a0 = [float(n.group(1)) for n in a0 if n] + assert len(set(a0)) == 1, f'Inconsistent lattice constant: {set(a0)}' + a0 = a0[0] + # then the cell + # r'^Lattice vectors: \(Cartesian coordinate: in unit of a\_0\)$' + icell = [i for i, l in enumerate(raw) + if re.match(r'^Lattice vectors: \(Cartesian coordinate: in unit of a_0\)$', l)] + assert len(icell) > 0, f'No cell found' + # nframe = len(icell) # will be 1 for NVT MD + # assert nframe > 0, f'Invalid trajectory with length {nframe}') + cell_raw = [raw[i+1:i+1+3] for i in icell] + cell = [np.array([list(map(float, l.split())) for l in c]) * a0 + for c in cell_raw] # convert to Angstrom + assert all(c.shape == (3, 3) for c in cell), \ + f'Unexpected shape of cell: {[c.shape for c in cell]}' + + # search for the elements and coordinates + # r'^tau[c|d]_([A-Z][a-z]?)\d+\s+(-?\d+(\.\d+)?)\s+(-?\d+(\.\d+)?)\s+(-?\d+(\.\d+)?)*' + m_tau = [re.match(r'^tau[c|d]_([A-Z][a-z]?)\d+' + r'\s+(-?\d+(\.\d+)?)\s+(-?\d+(\.\d+)?)\s+(-?\d+(\.\d+)?)', l) + for l in raw] + m_tau = [m for m in m_tau if m] + assert len(m_tau) > 0, f'No atoms found' + nframe = len(m_tau) // natoms + assert nframe > 0, f'Invalid trajectory with length {nframe}' + elem = [m.group(1) for m in m_tau] + coords = np.array([[float(m.group(2)), float(m.group(4)), float(m.group(6))] + for m in m_tau]).reshape(-1, natoms, 3) + assert coords.shape == (nframe, natoms, 3), \ + f'Unexpected shape of coordinates: {coords.shape}, ' \ + f'expected ({nframe}, {natoms}, 3)' + assert len(elem) == natoms * nframe, \ + f'Unexpected number of elements: {len(elem)}, ' \ + f'expected {natoms * nframe}' + elem = [elem[i:i+natoms] for i in range(0, len(elem), natoms)] + + # final: for volume-constant run, the cell information will only be printed for once + cell = np.array(cell).reshape(-1, 3, 3) + if cell.shape[0] == 1: + cell = [cell[0] for _ in range(nframe)] + assert len(cell) == nframe, \ + f'Unexpected number of cells: {len(cell)}, ' \ + f'expected {nframe}' + return [{ + 'coordinate': coordinate, + 'cell': c, + 'cell_unit': 'Angstrom', + 'alat_in_angstrom': a0, + 'elem': e, + 'coords': co + } for c, e, co in zip(cell, elem, coords)] + +def read_traj_from_md_dump(src: str | Path | List[str]) \ + -> List[Dict[str, np.ndarray]]: + ''' + read the trajectory from the ABACUS MD dump file + + Parameters + ---------- + fn : str + The path to the ABACUS MD dump file. + + Returns + ------- + list of dict + A list of dictionaries containing the coordinate system, cell, elements + and the coordinates of the atoms. Each dictionary has keys 'coordinate', + 'cell', 'alat_in_angstrom', 'elem', and 'coords'. + The values are numpy arrays or strings. + ''' + if isinstance(src, (str, Path)): + with open(src) as f: + raw = f.readlines() + else: # assume the src is the return of the readlines() + raw = src + # with open(fn) as f: + # raw = f.readlines() + raw = [l.strip() for l in raw] + raw = [l for l in raw if l] # remove empty lines + + # search for the lattice constant + # r'LATTICE_CONSTANT:\s+(-?\d+(\.\d+)?) Angstrom' + a0 = [re.search(r'LATTICE_CONSTANT:\s+(-?\d+(\.\d+)?) Angstrom', l) for l in raw] + a0 = [float(n.group(1)) for n in a0 if n] + assert len(set(a0)) == 1, \ + f'Inconsistent lattice constant: {set(a0)}' + a0 = a0[0] + # search for the cell + # r'^LATTICE_VECTORS$' + icell = [i for i, l in enumerate(raw) if re.match(r'^LATTICE_VECTORS$', l)] + assert len(icell) > 0, f'No cell found in file' + cell_raw = [raw[i+1:i+1+3] for i in icell] + cell = [np.array([list(map(float, l.split())) for l in c]) + for c in cell_raw] + assert all(c.shape == (3, 3) for c in cell), \ + f'Unexpected shape of cell: {[c.shape for c in cell]}' + nframe = len(cell) + + # search for the elements and coordinates + # r'^\d+\s+([A-Z][a-z]?)\s+(-?\d+(\.\d+)?)\s+(-?\d+(\.\d+)?)\s+(-?\d+(\.\d+)?)*' + m_tau = [re.match(r'^\d+\s+([A-Z][a-z]?)\s+' + r'(-?\d+(\.\d+)?)\s+(-?\d+(\.\d+)?)\s+(-?\d+(\.\d+)?)', l) + for l in raw] + m_tau = [m for m in m_tau if m] + assert len(m_tau) > 0, f'No atoms found' + natoms = len(m_tau) // nframe + assert natoms > 0, f'Invalid trajectory with length {nframe}.' + elem = [m.group(1) for m in m_tau] + coords = np.array([[float(m.group(2)), float(m.group(4)), float(m.group(6))] + for m in m_tau]).reshape(nframe, natoms, 3) + assert coords.shape == (nframe, natoms, 3), \ + f'Unexpected shape of coordinates: {coords.shape}, ' \ + f'expected ({nframe}, {natoms}, 3)' + assert len(elem) == natoms * nframe, \ + f'Unexpected number of elements: {len(elem)}, ' \ + f'expected {natoms * nframe}' + elem = [elem[i:i+natoms] for i in range(0, len(elem), natoms)] + assert len(elem) == nframe, \ + f'Unexpected number of elements: {len(elem)}, ' \ + f'expected {nframe}' + + return [{ + 'coordinate': 'Cartesian', + 'cell': c, + 'alat_in_angstrom': a0, + 'elem': e, + 'coords': co + } for c, e, co in zip(cell, elem, coords)] + +def read_forces_from_running_log(src: str | Path | List[str]) \ + -> List[np.ndarray]: + '''''' + if isinstance(src, (str, Path)): + with open(src) as f: + raw = f.readlines() + else: # assume the src is the return of the readlines() + raw = src + # with open(fn) as f: + # raw = f.readlines() + raw = [l.strip() for l in raw] + raw = [l for l in raw if l] # remove empty lines + + # iteratively search for the forces, which led by the title `TOTAL-FORCE` + forces, istart = [], 0 + + while istart < len(raw): + ith = None # index of the table header + for i, l in enumerate(raw[istart:]): + if re.match(r'\s*TOTAL\-FORCE\s*\(eV\s*/Angstrom\)', l, re.IGNORECASE): + ith = i + break + if ith is None: # no forces found + break + # otherwise + # search for the first line that matches the pattern + FORCEPAT_ = r'\s*([A-Z][a-z]?\d+)\s+(-?\d+(\.\d+)?)\s+(-?\d+(\.\d+)?)\s+(-?\d+(\.\d+)?)' + itb = None # index of the first line of the table body + for i, l in enumerate(raw[istart+ith+1:]): + if re.match(FORCEPAT_, l): + itb = i + break + if itb is None: # no content found + break + # otherwise + jtb = None # index of the last line of the table body + for j, l in enumerate(raw[istart+ith+1+itb:]): + if not re.match(FORCEPAT_, l): + jtb = j + break + if jtb is None: # no content found + break + + # truncate the force table and append + force_raw = raw[istart+ith+1+itb:istart+ith+1+itb+jtb] + force = np.array([list(map(float, l.split()[1:])) for l in force_raw]) + forces.append(force) + + # update the istart + istart += ith + itb + jtb + 1 + + return forces + +def read_stress_from_running_log(src: str | Path | List[str]) \ + -> List[np.ndarray]: + '''''' + if isinstance(src, (str, Path)): + with open(src) as f: + raw = f.readlines() + else: # assume the src is the return of the readlines() + raw = src + # with open(fn) as f: + # raw = f.readlines() + raw = [l.strip() for l in raw] + raw = [l for l in raw if l] # remove empty lines + + # iteratively search for the stress, which led by the title `TOTAL-STRESS` + stresses, istart = [], 0 + + while istart < len(raw): + ith = None # index of the table header + for i, l in enumerate(raw[istart:]): + if re.match(r'\s*TOTAL\-STRESS\s*\(KBAR\)', l, re.IGNORECASE): + ith = i + break + if ith is None: # no stress found + break + # otherwise + # search for the first line that matches the pattern + STRESSPAT_ = r'\s*(-?\d+(\.\d+)?)\s+(-?\d+(\.\d+)?)\s+(-?\d+(\.\d+)?)' + itb = None # index of the first line of the table body + for i, l in enumerate(raw[istart+ith+1:]): + if re.match(STRESSPAT_, l): + itb = i + break + if itb is None: # no content found + break + # otherwise + jtb = 3 # because the stress tensor would be a (3, 3)-matrix + + # truncate the stress table and append + stress_raw = raw[istart+ith+1+itb:istart+ith+1+itb+jtb] + stress = np.array([list(map(float, l.split())) for l in stress_raw]).reshape(3, 3) + # unit: kbar -> GPa + stresses.append(-0.1 * stress * GPa) + + # update the istart + istart += ith + itb + jtb + 1 + + return stresses + +def read_energies_from_running_log(src: str | Path | List[str]) \ + -> List[Dict[str, float]]: + '''''' + if isinstance(src, (str, Path)): + with open(src) as f: + raw = f.readlines() + else: # assume the src is the return of the readlines() + raw = src + # with open(fn) as f: + # raw = f.readlines() + raw = [l.strip() for l in raw] + raw = [l for l in raw if l] # remove empty lines + + energies_ry, energies_ev, istart = [], [], 0 + + while istart < len(raw): + ith = None # index of the table header + for i, l in enumerate(raw[istart:]): + if re.match(r'\s*ENERGY\s+Rydberg\s+eV', l, re.IGNORECASE): + ith = i + break + if ith is None: # no energies found + break + # otherwise + # search for the first line that matches the pattern + ENERGYPAT_ = r'\s*E_(\S+)\s+(-?\d+(\.\d+)?)\s+(-?\d+(\.\d+)?)' + itb = None # index of the first line of the table body + for i, l in enumerate(raw[istart+ith+1:]): + if re.match(ENERGYPAT_, l): + itb = i + break + if itb is None: # no content found + break + # otherwise + jtb = None + for j, l in enumerate(raw[istart+ith+1+itb:]): + if not re.match(ENERGYPAT_, l): + jtb = j + break + if jtb is None: # no content found + break + + # truncate the energy table and append + tb_raw = raw[istart+ith+1+itb:istart+ith+1+itb+jtb] + # first item is the name of the energy component + # the second and third items are the ry and ev values + name, e_ry, e_ev = zip(*[l.split() for l in tb_raw]) + energies_ry.append(dict(zip(name, list(map(float, e_ry))))) + energies_ev.append(dict(zip(name, list(map(float, e_ev))))) + + # update the istart + istart += ith + itb + jtb + 1 + + return energies_ry, energies_ev + +def read_magmom_from_running_log(src: str | Path | List[str]) \ + -> List[np.ndarray]: + ''' + Read the magnetic momentum from ABACUS running log. Note: + this function returns the list of np.ndarray which has dimension of + (nat, 3), where nat is the number of atoms, and 3 stands for + the x, y and z components. + There will be problem if the output directly imported to the + ASE SinglePointDFTCalculator, because the magmom required by + ASE-side is the (N,) array, so another operation `np.linalg.norm + (magmom, axis=1)` should be called to postprocess the magmom. + + Parameters + ---------- + src : str | Path | List[str] + The source of the running log. If it is a string, it will be + treated as the path to the running log. If it is a list of + strings, it will be treated as the return of the readlines() + function. + + Returns + ------- + magmom : List[np.ndarray] + The trajectories of the magnetic moment of each atom. + ''' + if isinstance(src, (str, Path)): + with open(src) as f: + raw = f.readlines() + else: # assume the src is the return of the readlines() + raw = src + # with open(fn) as f: + # raw = f.readlines() + raw = [l.strip() for l in raw] + raw = [l for l in raw if l] # remove empty lines + + magmom, istart = [], 0 + while istart < len(raw): + ith = None # index of the table header + for i, l in enumerate(raw[istart:]): + if re.match(r'\s*Total\sMagnetism\s\(uB\)(\s+x\s+y\s+z)?\s*', l, + re.IGNORECASE): + ith = i + break + if ith is None: # no magmom found + break + # otherwise + # search for the first line that matches the pattern + MAGMOMPAT_ = r'\s*([A-Z][a-z]?\d+)' + MAGMOMPAT_ += r'\s+([-+]?\d+\.\d+)' + MAGMOMPAT_ += r'(\s+([-+]?\d+\.\d+)\s+([-+]?\d+\.\d+))?\s*' + itb = None # index of the first line of the table body + for i, l in enumerate(raw[istart+ith+1:]): + if re.match(MAGMOMPAT_, l): + itb = i + break + if itb is None: # no content found + break + # otherwise + jtb = None + for j, l in enumerate(raw[istart+ith+1+itb:]): + if not re.match(MAGMOMPAT_, l): + jtb = j + break + if jtb is None: # no content found + break + + # truncate the magmom table and append + tb_raw = raw[istart+ith+1+itb:istart+ith+1+itb+jtb] + # first item is the name of the magmom component + # the second to fourth items are the x, y, z components + res = list(zip(*[l.split() for l in tb_raw]))[1:] + assert len(res) in [1, 3] # colinear or non-colinear case + mx, my, mz = (0,) * len(res[-1]), (0,) * len(res[-1]), res[-1] + if len(res) == 3: + mx, my = res[0], res[1] + magmom.append(np.array([list(map(float, (mx, my, mz))) + for mx, my, mz in zip(mx, my, mz)])) + + # update the istart + istart += ith + itb + jtb + 1 + + return magmom + +def is_invalid_arr(arr) -> bool: + '''Check if the array is invalid, including the cases of None, + empty array, and array with NaN values. + + Parameters + ---------- + arr : np.ndarray + The array to check. + + Returns + ------- + is_invalid : bool + Whether the array is invalid. + ''' + if arr is None: + return True + if isinstance(arr, list): + if len(arr) == 0: + return True + if isinstance(arr, np.ndarray): + if len(arr) == 0: + return True + if np.isnan(arr).any(): + return True + return False + +# @reader +def read_abacus_out(fileobj, + index=slice(None), + results_required=True, + sort_atoms_with: Optional[List[int]] = None) -> Atoms | List[Atoms]: + '''Reads the ABACUS output files. This function would be called by + the AbacusTemplate.read_results() function. The detailed call stack + is as follows: + get_potential_energy() + -> get_property() + -> calculate() + -> read_results() + -> read_abacus_out() *here* + + To use this function as a standalone one, the fileobj should be + the return of the open() function, which is a TextIOWrapper object: + >>> with open(fn) as fileobj: + ... read_abacus_out(fileobj) + + Parameters + ---------- + fileobj : str | Path | TextIOWrapper + The file object to read. + index : slice + The index of the frames to read. + results_required : bool + Whether the results are required. If True, the results will be + returned. If False, the results will not be returned. This parameter + is not used. + sort_atoms_with : Optional[List[int]] + The index of the atoms to sort. If None, the atoms will not be sorted. + + Returns + ------- + atoms : Atoms | List[Atoms] + The atoms object, whose calculator is the `SinglePointDFTCalculator`. + ''' + if isinstance(fileobj, (str, Path)): + with open(fileobj) as f: + abacus_lines = f.readlines() + else: # from the `with open(fn) as fileobj:` context + assert isinstance(fileobj, TextIOWrapper) + abacus_lines = fileobj.readlines() + + # read the esolver type + eslvtyp = read_esolver_type_from_running_log(abacus_lines) + + # read the structure, with the cell, elem, etc. (nframe) + trajectory = read_traj_from_running_log(abacus_lines) + # read the eigenvalues (nframe, nk, nbnd) + elecstate = read_band_from_running_log(abacus_lines) + # read the atomic forces (nframe, nat, 3) + forces = read_forces_from_running_log(abacus_lines) + # read the stress (nframe, 3, 3), but may be None + stress = read_stress_from_running_log(abacus_lines) + # read all kpoints tables (but only want the first, spinless, with ibz2bz) + k, _, _, _, _ = read_kpoints_from_running_log(abacus_lines) + # unpack the kpoints information + kvecd, wk, _ = k + # FIXME: in principle, the two spin channels share the same set of + # the kpoints, so it is not needed to have two sets of kpoints + # and it is assumed that the sampling of kpoints won't change during + # the simulation, which is, not exactly to be true for the NPT-MD + # runs. + + _, energies = read_energies_from_running_log(abacus_lines) + # only keep the SCF converged energies + energies = [edct for edct in energies if 'E_KS(sigma->0)' in edct] + + # read the magmom + magmom = read_magmom_from_running_log(abacus_lines) + + # roughly check the integrity of data from their length consistency + assert len(trajectory) == len(energies), \ + f'Inconsistent length: {len(trajectory)} != {len(energies)}' + assert len(trajectory) == len(elecstate), \ + f'Inconsistent length: {len(trajectory)} != {len(elecstate)}' + if len(forces) == 0: + forces = [None] * len(trajectory) + assert len(trajectory) == len(forces), \ + f'Inconsistent length: {len(trajectory)} != {len(forces)}' + if len(stress) == 0: + stress = [None] * len(trajectory) + assert len(trajectory) == len(stress), \ + f'Inconsistent length: {len(trajectory)} != {len(stress)}' + if len(magmom) == 0: + magmom = [np.zeros(shape=(len(trajectory[0]['elem'])))] * len(trajectory) + + # loop over the frame... + images, ind = [], sort_atoms_with + for frame, estat, mag, frs, strs, ener in zip( + trajectory, elecstate, magmom, forces, stress, energies): + # for each frame, a structure can be defined + ind = ind or list(range(len(frame['elem']))) + atoms = Atoms(symbols=np.array(frame['elem'])[ind].tolist(), + positions=frame['coords'][ind], + cell=frame['cell']) + # from result, a calculator can be assembled + # however, sometimes the force and stress is not calculated + # in this case, we set them to None + frs = None if is_invalid_arr(frs) else frs[ind] + strs = None if is_invalid_arr(strs) else full_3x3_to_voigt_6_stress(strs) + calc = SinglePointDFTCalculator(atoms=atoms, energy=ener['E_KohnSham'], + free_energy=ener['E_KohnSham'], + forces=frs, stress=strs, + magmoms=mag, efermi=ener['E_Fermi'], + ibzkpts=kvecd, dipole=None) + # import the eigenvalues and occupations kpoint-by-kpoint + calc.kpts = [] + for ispn, (ekb, occ) in enumerate(zip(estat['e'], estat['occ'])): # loop over the spin + calc.kpts += [SinglePointKPoint(weight=wk[ik], + s=ispn, + k=kvecd[ik], + eps_n=ekb[ik,:], + f_n=occ[ik,:]) + for ik in range(len(kvecd))] + # attach the calculator to the atoms + atoms.calc = calc + images.append(atoms) + + return images[index] + +class TestLegacyIO(unittest.TestCase): + + here = Path(__file__).parent + testfiles = here / 'testfiles' + + def test_read_band_from_running_log(self): + # nspin1 + fn = self.testfiles / 'lcao-symm1-nspin1-multik-scf_' + data = read_band_from_running_log(fn) + self.assertIsInstance(data, list) + self.assertGreater(len(data), 0) + self.assertTrue(all('k' in d and 'e' in d and 'occ' in d for d in data)) + nspin, nk, nband = data[0]['e'].shape + self.assertEqual(nspin, 1) + self.assertEqual(nband, 24) + self.assertEqual(nk, 2) + for d in data: # for each frame + self.assertTrue(d['k'].shape == (nspin, nk, 3)) + self.assertTrue(d['e'].shape == (nspin, nk, nband)) + self.assertTrue(d['occ'].shape == (nspin, nk, nband)) + + # nspin2 + fn = self.testfiles / 'lcao-symm0-nspin2-multik-relax_' + data = read_band_from_running_log(fn) + self.assertIsInstance(data, list) + self.assertGreater(len(data), 0) + self.assertTrue(all('k' in d and 'e' in d and 'occ' in d for d in data)) + nspin, nk, nband = data[0]['e'].shape + self.assertEqual(nspin, 2) + self.assertEqual(nband, 24) + self.assertEqual(nk, 2) + for d in data: # for each frame + self.assertTrue(d['k'].shape == (nspin, nk, 3)) + self.assertTrue(d['e'].shape == (nspin, nk, nband)) + self.assertTrue(d['occ'].shape == (nspin, nk, nband)) + + # nspin 2, cell-relax (multi-frames) + fn = self.testfiles / 'lcao-symm0-nspin2-multik-cellrelax_' + data = read_band_from_running_log(fn) + self.assertIsInstance(data, list) + self.assertEqual(len(data), 2) # two frames + self.assertTrue(all('k' in d and 'e' in d and 'occ' in d for d in data)) + nspin, nk, nband = data[0]['e'].shape + self.assertEqual(nspin, 2) + self.assertEqual(nband, 40) + self.assertEqual(nk, 2) + for d in data: # for each frame + self.assertTrue(d['k'].shape == (nspin, nk, 3)) + self.assertTrue(d['e'].shape == (nspin, nk, nband)) + self.assertTrue(d['occ'].shape == (nspin, nk, nband)) + + # nspin 2, MD (multi-frames) + fn = self.testfiles / 'pw-symm0-nspin4-gamma-md_' + data = read_band_from_running_log(fn) + self.assertIsInstance(data, list) + self.assertEqual(len(data), 3) + self.assertTrue(all('k' in d and 'e' in d and 'occ' in d for d in data)) + nspin, nk, nband = data[0]['e'].shape + self.assertEqual(nspin, 1) + self.assertEqual(nband, 35) + self.assertEqual(nk, 1) + for d in data: # for each frame + self.assertTrue(d['k'].shape == (nspin, nk, 3)) + self.assertTrue(d['e'].shape == (nspin, nk, nband)) + self.assertTrue(d['occ'].shape == (nspin, nk, nband)) + + def test_read_traj_from_running_log(self): + fn = self.testfiles / 'lcao-symm1-nspin1-multik-scf_' + data = read_traj_from_running_log(fn) + self.assertIsInstance(data, list) + self.assertEqual(len(data), 1) # it is scf run, only one frame + self.assertTrue(all('coordinate' in d and 'cell' in d and + 'elem' in d and 'coords' in d for d in data)) + for d in data: + self.assertIn(d['coordinate'], ['Cartesian', 'Direct']) + self.assertEqual(d['cell'].shape, (3, 3)) + self.assertIsInstance(d['elem'], list) + self.assertEqual(len(d['elem']), 2) + + # relax + fn = self.testfiles / 'lcao-symm0-nspin2-multik-relax_' + data = read_traj_from_running_log(fn) + self.assertIsInstance(data, list) + self.assertEqual(len(data), 1) + # relax task will only print the coordinate at the first run + # but band structure will be printed for multiple times... + self.assertTrue(all('coordinate' in d and 'cell' in d and + 'elem' in d and 'coords' in d for d in data)) + for d in data: + self.assertIn(d['coordinate'], ['Cartesian', 'Direct']) + self.assertEqual(d['cell'].shape, (3, 3)) + self.assertIsInstance(d['elem'], list) + self.assertEqual(len(d['elem']), 2) + self.assertEqual(d['coords'].shape, (2, 3)) + + # cell-relax + fn = self.testfiles / 'lcao-symm0-nspin2-multik-cellrelax_' + data = read_traj_from_running_log(fn) + self.assertIsInstance(data, list) + self.assertEqual(len(data), 3) # print each time + self.assertTrue(all('coordinate' in d and 'cell' in d and + 'elem' in d and 'coords' in d for d in data)) + for d in data: + self.assertIn(d['coordinate'], ['Cartesian', 'Direct']) + self.assertEqual(d['cell'].shape, (3, 3)) + self.assertIsInstance(d['elem'], list) + self.assertEqual(len(d['elem']), 4) + self.assertEqual(d['coords'].shape, (4, 3)) + + def test_read_traj_from_md_dump(self): + fn = self.testfiles / 'nspin4-gamma-mddump' + data = read_traj_from_md_dump(fn) + self.assertIsInstance(data, list) + self.assertEqual(len(data), 2) + self.assertTrue(all('coordinate' in d and 'cell' in d and + 'alat_in_angstrom' in d and 'elem' in d and + 'coords' in d for d in data)) + for d in data: + self.assertEqual(d['coordinate'], 'Cartesian') + self.assertEqual(d['cell'].shape, (3, 3)) + self.assertEqual(d['alat_in_angstrom'], 0.529177000000) + self.assertIsInstance(d['elem'], list) + self.assertEqual(len(d['elem']), 2) + self.assertEqual(d['coords'].shape, (2, 3)) + + def test_read_forces_from_running_log(self): + fn = self.testfiles / 'pw-symm0-nspin4-gamma-md_' + forces = read_forces_from_running_log(fn) + self.assertEqual(len(forces), 3) # 3 frames + self.assertTrue(all(f.shape == (2, 3) for f in forces)) # 2 atoms, 3 components + + def test_read_stress_from_running_log(self): + fn = self.testfiles / 'lcao-symm0-nspin2-multik-cellrelax_' + stress = read_stress_from_running_log(fn) + self.assertEqual(len(stress), 2) + self.assertTrue(all(s.shape == (3, 3) for s in stress)) # 3x3 matrix + + reference = np.array([ + [ 28.0257165780, -25.0814687477, -25.0814687478], + [-25.0814687477, -57.2309475134, 52.8147857580], + [-25.0814687478, 52.8147857580, -57.2309475133], + [ 7.3061116295, -27.6053387696, -27.6053387674], + [-27.6053387696, 0.8540980637, 7.6367729837], + [-27.6053387674, 7.6367729837, 0.8540980603], + ]).reshape(-1, 3, 3) + for s, sref in zip(stress, reference): + self.assertTrue(np.allclose(s, -0.1 * GPa * sref)) + + def test_read_energies_from_running_log(self): + fn = self.testfiles / 'lcao-symm0-nspin2-multik-cellrelax_' + energies_ry, energies_ev = read_energies_from_running_log(fn) + self.assertIsInstance(energies_ry, list) + self.assertIsInstance(energies_ev, list) + self.assertEqual(len(energies_ry), 3) + self.assertEqual(len(energies_ev), 3) + self.assertTrue(all(isinstance(e, dict) for e in energies_ry)) # dict of energies + self.assertTrue(all(isinstance(e, dict) for e in energies_ev)) + for e_ev, e_ry in zip(energies_ev, energies_ry): + # take energies of one SCF step, there are still many energy terms + self.assertEqual(len(e_ev), len(e_ry)) + for k, ei_ev in e_ev.items(): + self.assertIn(k, e_ry) + self.assertAlmostEqual(ei_ev, e_ry[k] * Ry / eV, delta=1e-2) + + def test_read_kpoints_from_running_log(self): + fn = self.testfiles / 'lcao-symm0-nspin2-multik-cellrelax_' + kpoints = read_kpoints_from_running_log(fn) + self.assertIsInstance(kpoints, tuple) + self.assertEqual(len(kpoints), 5) + # thus we unpack + kibz, kdspnls, kd1traj, kctraj, kd2traj = kpoints + + # kibz + self.assertIsInstance(kibz, tuple) + self.assertEqual(len(kibz), 3) + # thus we unpack + kibz, wk, ibz2bz = kibz + self.assertIsInstance(kibz, np.ndarray) + self.assertEqual(kibz.shape, (2, 3)) + self.assertIsInstance(wk, np.ndarray) + self.assertEqual(wk.shape, (2,)) + self.assertAlmostEqual(wk.sum(), 1.0, delta=1e-3) + self.assertIsInstance(ibz2bz, list) + self.assertEqual(len(ibz2bz), 2) + + # kdspnls + self.assertIsInstance(kdspnls, tuple) + self.assertEqual(len(kdspnls), 2) + # thus we unpack + kdspnls, wk = kdspnls + self.assertIsInstance(kdspnls, np.ndarray) + self.assertEqual(kdspnls.shape, (2, 3)) + self.assertIsInstance(wk, np.ndarray) + self.assertEqual(wk.shape, (2,)) + self.assertAlmostEqual(wk.sum(), 1.0, delta=1e-3) + + # kd1traj + self.assertIsInstance(kd1traj, list) + self.assertEqual(len(kd1traj), 2) # 2 cell-relax steps + for i, kd1 in enumerate(kd1traj): + # because the i=0 corresponds to the spinless case, + # it has 29 instead of 58 kpoints like the others + nk = 2 + nspin = 1 if i == 0 else 2 + wktot = 1 if i == 0 else 2 + self.assertIsInstance(kd1, tuple) + self.assertEqual(len(kd1), 2) + # thus we unpack + kd1, wk = kd1 + self.assertIsInstance(kd1, np.ndarray) + self.assertEqual(kd1.shape, (nspin, nk, 3)) + self.assertIsInstance(wk, np.ndarray) + self.assertEqual(wk.shape, (nspin, nk)) + self.assertAlmostEqual(wk.sum(), wktot, delta=1e-3) + + # kctraj and kd2traj + for ktraj in [kctraj, kd2traj]: + self.assertIsInstance(ktraj, list) + self.assertEqual(len(ktraj), 2) # 2 cell-relax steps + for i, k in enumerate(ktraj): + self.assertIsInstance(k, tuple) + self.assertEqual(len(k), 2) + # thus we unpack + k, wk = k + self.assertIsInstance(k, np.ndarray) + self.assertEqual(k.shape, (2, 2, 3)) + self.assertIsInstance(wk, np.ndarray) + self.assertEqual(wk.shape, (2, 2)) + self.assertAlmostEqual(wk.sum(), 2.0, delta=1e-3) + + def test_read_magmom_from_running_log(self): + fn = self.testfiles / 'lcao-symm0-nspin2-multik-cellrelax_' + magmoms = read_magmom_from_running_log(fn) + self.assertIsInstance(magmoms, list) + self.assertEqual(len(magmoms), 2) # 2 cell-relax steps + for i, magmom in enumerate(magmoms): + self.assertIsInstance(magmom, np.ndarray) + self.assertEqual(magmom.shape, (4, 3)) + self.assertAlmostEqual(magmom.sum(), 0.0, delta=1e-3) # AFM + +if __name__ == '__main__': + unittest.main() diff --git a/interfaces/ASE_interface/abacuslite/io/testfiles/input-script b/interfaces/ASE_interface/abacuslite/io/testfiles/input-script new file mode 100644 index 0000000000..1ecbd7e13a --- /dev/null +++ b/interfaces/ASE_interface/abacuslite/io/testfiles/input-script @@ -0,0 +1,34 @@ +INPUT_PARAMETERS +#Parameters (1.General) +suffix autotest +calculation scf +device gpu +gamma_only 1 # GPU acceleration currently only support gamma_only set to 1. ### Abacus will generate/overwrite a KPT file when gamma_only is set to 1. +ks_solver cusolver # if not set, the default ks_solver is cusolver, + # you can also choose genelpa or scalapack_gvx. + +#nbands 8 +symmetry 1 + +#Parameters (2.Iteration) +ecutwfc 100 ###Energy cutoff needs to be tested to ensure your calculation is reliable.[1] +scf_thr 1e-6 +scf_nmax 100 +cal_force 1 +cal_stress 1 + +#Parameters (3.Basis) +basis_type lcao + +#Parameters (4.Smearing) +smearing_method gauss +smearing_sigma 0.002 + +#Parameters (5.Mixing) +mixing_type broyden +mixing_beta 0.3 + + +### [1] Energy cutoff determines the quality of numerical quadratures in your calculations. +### So it is strongly recommended to test whether your result (such as converged SCF energies) is +### converged with respect to the energy cutoff. diff --git a/interfaces/ASE_interface/abacuslite/io/testfiles/lcao-symm0-nspin2-multik-cellrelax b/interfaces/ASE_interface/abacuslite/io/testfiles/lcao-symm0-nspin2-multik-cellrelax new file mode 100644 index 0000000000..dca11488a4 --- /dev/null +++ b/interfaces/ASE_interface/abacuslite/io/testfiles/lcao-symm0-nspin2-multik-cellrelax @@ -0,0 +1,315 @@ + READING UNITCELL INFORMATION + Number of elements = 3 + Lattice constant (Bohr) = 7.884 + Lattice constant (Angstrom) = 4.17203 + + TOTAL ATOM NUMBER = 4 + + DIRECT COORDINATES + atom x y z mag + Ni1 0.000000000000 0.000000000000 0.000000000000 2.0000 + Ni2 0.500000000000 0.500000000000 0.500000000000 -2.0000 + O 0.250000000000 0.250000000000 0.250000000000 0.0000 + O 0.750000000000 0.750000000000 0.750000000000 0.0000 + + ATOMIC VELOCITIES + atom vx vy vz + Ni1 0 0 0 + Ni2 0 0 0 + O 0 0 0 + O 0 0 0 + + Cell volume (Bohr^3) = 245.025 + Cell volume (A^3) = 36.3089 + + Lattice vectors: (Cartesian coordinate: in unit of a_0) + +1 +0.5 +0.5 + +0.5 +1 +0.5 + +0.5 +0.5 +1 + Reciprocal vectors: (Cartesian coordinate: in unit of 2 pi/a_0) + +1.5 -0.5 -0.5 + -0.5 +1.5 -0.5 + -0.5 -0.5 +1.5 + + #ENERGY SOLVER# ksdft_lcao + + SETUP K-POINTS + nspin = 2 + Input type of k points = Monkhorst-Pack(Gamma) + nkstot = 2 + Number of irreducible k-points = 2 + + K-POINTS REDUCTION ACCORDING TO SYMMETRY + IBZ DIRECT_X DIRECT_Y DIRECT_Z WEIGHT ibz2bz + 1 0.00000000 0.00000000 0.00000000 0.5000 0 + 2 0.50000000 0.00000000 0.00000000 0.5000 1 + + nkstot now = 2 + K-POINTS DIRECT COORDINATES + KPOINTS DIRECT_X DIRECT_Y DIRECT_Z WEIGHT + 1 0.00000000 0.00000000 0.00000000 0.5000 + 2 0.50000000 0.00000000 0.00000000 0.5000 + + + Number of k-points in this process = 2 + Minimum distributed k-point number = 2 + nks(nspin=2) = 4 + nkstot(nspin=2) = 4 + + K-POINTS CARTESIAN COORDINATES + KPOINTS CARTESIAN_X CARTESIAN_Y CARTESIAN_Z WEIGHT + 1 0.00000000 0.00000000 0.00000000 0.5000 + 2 0.75000000 -0.25000000 -0.25000000 0.5000 + 3 0.00000000 0.00000000 0.00000000 0.5000 + 4 0.75000000 -0.25000000 -0.25000000 0.5000 + + + K-POINTS DIRECT COORDINATES + KPOINTS DIRECT_X DIRECT_Y DIRECT_Z WEIGHT + 1 0.00000000 0.00000000 0.00000000 0.5000 + 2 0.50000000 0.00000000 0.00000000 0.5000 + 3 0.00000000 0.00000000 0.00000000 0.5000 + 4 0.50000000 0.00000000 0.00000000 0.5000 + + ================================================================ + RELAX STEP: 1 (CELL_CHANGE# 1 IONS_CHANGE# 1) + ================================================================ + + ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + --> #ION MOVE# 1 #ELEC ITER# 1 + ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + Electron density deviation 0.095868 + ---------------------------------------------------------- + Energy Rydberg eV + ---------------------------------------------------------- + E_KohnSham -680.0824614910 -9252.9965861430 + E_Harris -681.2945326460 -9269.4876602324 + E_Fermi 1.1216473600 15.2607952433 + E_gap(k) 0.0497750855 0.6772247815 + ---------------------------------------------------------- + + + ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + --> #ION MOVE# 1 #ELEC ITER# 2 + ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + + Total magnetism (Bohr mag/cell) = 0.00000000 + Absolute magnetism (Bohr mag/cell) = 2.80151196 + Electron number for spin up = 24.00000000 + Electron number for spin down = 24.00000000 + Electron density deviation 0.044770 + ---------------------------------------------------------- + Energy Rydberg eV + ---------------------------------------------------------- + E_KohnSham -679.9255100509 -9250.8611522481 + E_KS(sigma->0) -679.9255100509 -9250.8611522481 + E_Harris -676.7523312621 -9207.6878399479 + E_band -48.6414989983 -661.8015456379 + E_one_elec -311.2597632447 -4234.9063382588 + E_Hartree 181.7820867842 2473.2721745958 + E_xc -74.7512281470 -1017.0426352976 + E_Ewald -478.4202561664 -6509.2415224829 + E_entropy(-TS) -0.0000000000 -0.0000000000 + E_descf 0.0000000000 0.0000000000 + E_localpp -401.8063652052 -5466.8560594599 + E_plusU 2.7236507231 37.0571691954 + E_exx 0.0000000000 0.0000000000 + E_Fermi 1.1111466448 15.1179256829 + E_gap(k) 0.1931559722 2.6280218248 + ---------------------------------------------------------- + + #SCF IS CONVERGED# + #TOTAL ENERGY# -9250.86115224814 eV + Write eigenvalues and occupations to file: OUT.NiO/eig_occ.txt +------------------------------------------------- + Total Magnetism (uB) +------------------------------------------------- + Ni11 1.2715948597 + Ni21 -1.2715948597 + O1 0.0000000000 + O2 0.0000000000 +------------------------------------------------- + + + #TOTAL-FORCE (eV/Angstrom)# + ------------------------------------------------------------------------- + Atoms Force_x Force_y Force_z + ------------------------------------------------------------------------- + Ni11 0.0000000000 0.0000000000 0.0000000000 + Ni21 0.0000000000 0.0000000000 0.0000000000 + O1 0.0000000000 0.0000000000 0.0000000000 + O2 0.0000000000 0.0000000000 0.0000000000 + ------------------------------------------------------------------------- + + #TOTAL-STRESS (kbar)# + ---------------------------------------------------------------- + Stress_x Stress_y Stress_z + ---------------------------------------------------------------- + 28.0257165781 -25.0814687477 -25.0814687477 + -25.0814687477 -57.2309475134 52.8147857580 + -25.0814687477 52.8147857580 -57.2309475134 + ---------------------------------------------------------------- + #TOTAL-PRESSURE# (EXCLUDE KINETIC PART OF IONS): -28.812059 kbar + + Largest force is 0.000000 eV/Angstrom while threshold is 0.025711 eV/Angstrom + Largest stress is 57.230948 kbar while threshold is 0.500000 kbar + + Relaxation is not converged yet! + DIRECT COORDINATES + atom x y z mag + Ni1 0.000000000000 1.000000000000 1.000000000000 2.0000 + Ni2 0.500000000000 0.500000000000 0.500000000000 -2.0000 + O 0.250000000000 0.250000000000 0.250000000000 0.0000 + O 0.750000000000 0.750000000000 0.750000000000 0.0000 + + ATOMIC VELOCITIES + atom vx vy vz + Ni1 0.000000000000 0.000000000000 0.000000000000 + Ni2 0.000000000000 0.000000000000 0.000000000000 + O 0.000000000000 0.000000000000 0.000000000000 + O 0.000000000000 0.000000000000 0.000000000000 + + Cell volume (Bohr^3) = 238.947741 + Cell volume (A^3) = 35.408360 + + Lattice vectors: (Cartesian coordinate: in unit of a_0) + +1.000834 +0.492269 +0.492269 + +0.493312 +0.987716 +0.503303 + +0.493312 +0.503303 +0.987716 + Reciprocal vectors: (Cartesian coordinate: in unit of 2 pi/a_0) + +1.481276 -0.490089 -0.490089 + -0.489053 +1.529324 -0.535029 + -0.489053 -0.535029 +1.529324 + DONE : SETUP UNITCELL Time : 34.044430 (SEC) + + ================================================================ + RELAX STEP: 2 (CELL_CHANGE# 2 IONS_CHANGE# 1) + ================================================================ + DONE : LOCAL POTENTIAL Time : 34.155598 (SEC) + + + SETUP K-POINTS + nspin = 2 +K-POINTS DIRECT COORDINATES + KPOINTS DIRECT_X DIRECT_Y DIRECT_Z WEIGHT + 1 0.00000000 0.00000000 0.00000000 0.5000 + 2 0.50000000 0.00000000 0.00000000 0.5000 + 3 0.00000000 0.00000000 0.00000000 0.5000 + 4 0.50000000 0.00000000 0.00000000 0.5000 + + + K-POINTS CARTESIAN COORDINATES + KPOINTS CARTESIAN_X CARTESIAN_Y CARTESIAN_Z WEIGHT + 1 0.00000000 0.00000000 0.00000000 0.5000 + 2 0.74063794 -0.24504430 -0.24504430 0.5000 + 3 0.00000000 0.00000000 0.00000000 0.5000 + 4 0.74063794 -0.24504430 -0.24504430 0.5000 + + + K-POINTS DIRECT COORDINATES + KPOINTS DIRECT_X DIRECT_Y DIRECT_Z WEIGHT + 1 0.00000000 0.00000000 0.00000000 0.5000 + 2 0.50000000 0.00000000 0.00000000 0.5000 + 3 0.00000000 0.00000000 0.00000000 0.5000 + 4 0.50000000 0.00000000 0.00000000 0.5000 + + DONE : INIT K-POINTS Time : 34.155733 (SEC) + + NEW-OLD atomic charge density approx. for the potential ! + + ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + --> #ION MOVE# 2 #ELEC ITER# 1 + ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + Total magnetism (Bohr mag/cell) = -0.00000000 + Absolute magnetism (Bohr mag/cell) = 3.21518097 + Electron number for spin up = 24.00000000 + Electron number for spin down = 24.00000000 + Electron density deviation 0.025755 + ---------------------------------------------------------- + Energy Rydberg eV + ---------------------------------------------------------- + E_KohnSham -679.8533719985 -9249.8796636937 + E_KS(sigma->0) -679.8533719985 -9249.8796636937 + E_Harris -684.2300352486 -9309.4272221222 + E_band -43.6339455623 -593.6702858688 + E_one_elec -300.8081834810 -4092.7053003714 + E_Hartree 175.1973991234 2383.6829028589 + E_xc -74.7285731514 -1016.7343982682 + E_Ewald -482.3768468830 -6563.0737008819 + E_entropy(-TS) -0.0000000000 -0.0000000000 + E_descf 0.0000000000 0.0000000000 + E_localpp -392.5829798906 -5341.3654643309 + E_plusU 2.8628323934 38.9508329690 + E_exx 0.0000000000 0.0000000000 + E_Fermi 1.1742844955 15.9769602119 + E_gap(k) 0.2577258748 3.5065404191 + ---------------------------------------------------------- + + #SCF IS CONVERGED# + #TOTAL ENERGY# -9249.87966369367 eV + Write eigenvalues and occupations to file: OUT.NiO/eig_occ.txt +------------------------------------------------- + Total Magnetism (uB) +------------------------------------------------- + Ni11 1.5398722566 + Ni21 -1.5398722566 + O1 0.0000000000 + O2 -0.0000000000 +------------------------------------------------- + + + #TOTAL-FORCE (eV/Angstrom)# + ------------------------------------------------------------------------- + Atoms Force_x Force_y Force_z + ------------------------------------------------------------------------- + Ni11 0.0000000000 0.0000000000 0.0000000000 + Ni21 0.0000000000 0.0000000000 0.0000000000 + O1 0.0000000000 0.0000000000 0.0000000000 + O2 0.0000000000 0.0000000000 0.0000000000 + ------------------------------------------------------------------------- + + #TOTAL-STRESS (kbar)# + ---------------------------------------------------------------- + Stress_x Stress_y Stress_z + ---------------------------------------------------------------- + 10.5133147463 -28.8166870580 -28.8166870559 + -28.8166870580 0.1640200010 7.6016822662 + -28.8166870559 7.6016822662 0.1640199977 + ---------------------------------------------------------------- + #TOTAL-PRESSURE# (EXCLUDE KINETIC PART OF IONS): 3.613785 kbar + + Largest force is 0.000000 eV/Angstrom while threshold is 0.025711 eV/Angstrom + Largest stress is 28.816687 kbar while threshold is 0.500000 kbar + + Relaxation is not converged yet! + DIRECT COORDINATES + atom x y z mag + Ni1 0.000000000000 1.000000000000 1.000000000000 2.0000 + Ni2 0.500000000000 0.500000000000 0.500000000000 -2.0000 + O 0.250000000000 0.250000000000 0.250000000000 0.0000 + O 0.750000000000 0.750000000000 0.750000000000 0.0000 + + ATOMIC VELOCITIES + atom vx vy vz + Ni1 0.000000000000 0.000000000000 0.000000000000 + Ni2 0.000000000000 0.000000000000 0.000000000000 + O 0.000000000000 0.000000000000 0.000000000000 + O 0.000000000000 0.000000000000 0.000000000000 + + Cell volume (Bohr^3) = 236.878456 + Cell volume (A^3) = 35.101724 + + Lattice vectors: (Cartesian coordinate: in unit of a_0) + +1.001113 +0.489681 +0.489681 + +0.491072 +0.983602 +0.504409 + +0.491072 +0.504409 +0.983602 + Reciprocal vectors: (Cartesian coordinate: in unit of 2 pi/a_0) + +1.475132 -0.486822 -0.486822 + -0.485442 +1.539645 -0.547196 + -0.485442 -0.547196 +1.539645 + DONE : SETUP UNITCELL Time : 63.323510 (SEC) + + + -------------------------------------------- + !FINAL_ETOT_IS -9249.8796636936658615 eV + -------------------------------------------- diff --git a/interfaces/ASE_interface/abacuslite/io/testfiles/lcao-symm0-nspin2-multik-cellrelax_ b/interfaces/ASE_interface/abacuslite/io/testfiles/lcao-symm0-nspin2-multik-cellrelax_ new file mode 100644 index 0000000000..93870d8562 --- /dev/null +++ b/interfaces/ASE_interface/abacuslite/io/testfiles/lcao-symm0-nspin2-multik-cellrelax_ @@ -0,0 +1,648 @@ +NBANDS = 40 + + READING UNITCELL INFORMATION + ntype = 3 + lattice constant (Bohr) = 7.884 + lattice constant (Angstrom) = 4.17203 + + TOTAL ATOM NUMBER = 4 +DIRECT COORDINATES + atom x y z mag vx vy vz +taud_Ni11 0.0000000000 0.0000000000 0.0000000000 2.0000 0.0000000000 0.0000000000 0.0000000000 +taud_Ni21 0.5000000000 0.5000000000 0.5000000000 -2.0000 0.0000000000 0.0000000000 0.0000000000 +taud_O1 0.2500000000 0.2500000000 0.2500000000 0.0000 0.0000000000 0.0000000000 0.0000000000 +taud_O2 0.7500000000 0.7500000000 0.7500000000 0.0000 0.0000000000 0.0000000000 0.0000000000 + + + + Volume (Bohr^3) = 245.025 + Volume (A^3) = 36.3089 + + Lattice vectors: (Cartesian coordinate: in unit of a_0) + +1 +0.5 +0.5 + +0.5 +1 +0.5 + +0.5 +0.5 +1 + Reciprocal vectors: (Cartesian coordinate: in unit of 2 pi/a_0) + +1.5 -0.5 -0.5 + -0.5 +1.5 -0.5 + -0.5 -0.5 +1.5 + The esolver type has been set to : ksdft_lcao + + SETUP K-POINTS + nspin = 2 + Input type of k points = Monkhorst-Pack(Gamma) + nkstot = 2 + nkstot_ibz = 2 +K-POINTS REDUCTION ACCORDING TO SYMMETRY + IBZ DIRECT_X DIRECT_Y DIRECT_Z WEIGHT ibz2bz + 1 0.00000000 0.00000000 0.00000000 0.5000 0 + 2 0.50000000 0.00000000 0.00000000 0.5000 1 + + nkstot now = 2 +K-POINTS DIRECT COORDINATES + KPOINTS DIRECT_X DIRECT_Y DIRECT_Z WEIGHT + 1 0.00000000 0.00000000 0.00000000 0.5000 + 2 0.50000000 0.00000000 0.00000000 0.5000 + + + k-point number in this process = 2 + minimum distributed K point number = 2 + nks(nspin=2) = 4 + nkstot(nspin=2) = 4 + +K-POINTS CARTESIAN COORDINATES + KPOINTS CARTESIAN_X CARTESIAN_Y CARTESIAN_Z WEIGHT + 1 0.00000000 0.00000000 0.00000000 0.5000 + 2 0.75000000 -0.25000000 -0.25000000 0.5000 + 3 0.00000000 0.00000000 0.00000000 0.5000 + 4 0.75000000 -0.25000000 -0.25000000 0.5000 + + +K-POINTS DIRECT COORDINATES + KPOINTS DIRECT_X DIRECT_Y DIRECT_Z WEIGHT + 1 0.00000000 0.00000000 0.00000000 0.5000 + 2 0.50000000 0.00000000 0.00000000 0.5000 + 3 0.00000000 0.00000000 0.00000000 0.5000 + 4 0.50000000 0.00000000 0.00000000 0.5000 + + DONE : INIT K-POINTS Time : 0.0449331 (SEC) + + LCAO ALGORITHM --------------- ION= 1 ELEC= 1-------------------------------- + total magnetism (Bohr mag/cell) = 0.00000000 + absolute magnetism (Bohr mag/cell) = 2.61029538 + nelec for spin up = 24.00000000 + nelec for spin down = 24.00000000 + + Density error is 0.095867875873 +---------------------------------------------------------- + Energy Rydberg eV +---------------------------------------------------------- + E_KohnSham -680.0824614910 -9252.9965861430 + E_Harris -681.2945326460 -9269.4876602324 + E_Fermi 1.1216473600 15.2607952433 +---------------------------------------------------------- + + + LCAO ALGORITHM --------------- ION= 1 ELEC= 2-------------------------------- + total magnetism (Bohr mag/cell) = 0.00000000 + absolute magnetism (Bohr mag/cell) = 2.80151196 + nelec for spin up = 24.00000000 + nelec for spin down = 24.00000000 + + Density error is 0.044770387430 +---------------------------------------------------------- + Energy Rydberg eV +---------------------------------------------------------- + E_KohnSham -679.9255100509 -9250.8611522481 + E_KS(sigma->0) -679.9255100509 -9250.8611522481 + E_Harris -676.7523312621 -9207.6878399479 + E_band -48.6414989983 -661.8015456379 + E_one_elec -311.2597632447 -4234.9063382588 + E_Hartree 181.7820867842 2473.2721745958 + E_xc -74.7512281470 -1017.0426352976 + E_Ewald -478.4202561664 -6509.2415224829 + E_entropy(-TS) -0.0000000000 -0.0000000000 + E_descf 0.0000000000 0.0000000000 + E_exx 0.0000000000 0.0000000000 + E_Fermi 1.1111466448 15.1179256829 +---------------------------------------------------------- + + + charge density convergence is achieved + final etot is -9250.86115224814 eV + EFERMI = 15.11792568287 eV + + STATE ENERGY(eV) AND OCCUPATIONS NSPIN == 2 +SPIN UP : + 1/2 kpoint (Cartesian) = 0.00000 0.00000 0.00000 (522 pws) + 1 -89.404874 0.500000 + 2 -89.125942 0.500000 + 3 -50.116722 0.500000 + 4 -50.012641 0.500000 + 5 -49.770942 0.500000 + 6 -49.167045 0.500000 + 7 -49.133084 0.500000 + 8 -49.072023 0.500000 + 9 -4.305764 0.500000 + 10 -2.828539 0.500000 + 11 7.064136 0.500000 + 12 8.571683 0.500000 + 13 8.610007 0.500000 + 14 10.099916 0.500000 + 15 10.229316 0.500000 + 16 10.273838 0.500000 + 17 10.620054 0.500000 + 18 10.883396 0.500000 + 19 12.026525 0.500000 + 20 12.870909 0.500000 + 21 12.951267 0.500000 + 22 13.103917 0.500000 + 23 13.160275 0.500000 + 24 13.160406 0.500000 + 25 16.848597 0.000000 + 26 16.983083 0.000000 + 27 17.314452 0.000000 + 28 21.985231 0.000000 + 29 25.988979 0.000000 + 30 31.586032 0.000000 + 31 31.633203 0.000000 + 32 40.413880 0.000000 + 33 40.422562 0.000000 + 34 40.463585 0.000000 + 35 40.901535 0.000000 + 36 41.381761 0.000000 + 37 46.434114 0.000000 + 38 46.444013 0.000000 + 39 46.469222 0.000000 + 40 49.052274 0.000000 + + 2/2 kpoint (Cartesian) = 0.75000 -0.25000 -0.25000 (525 pws) + 1 -89.403068 0.500000 + 2 -89.124281 0.500000 + 3 -50.122332 0.500000 + 4 -50.014725 0.500000 + 5 -49.789066 0.500000 + 6 -49.185597 0.500000 + 7 -49.139283 0.500000 + 8 -49.076151 0.500000 + 9 -2.873734 0.500000 + 10 -2.767857 0.500000 + 11 7.978080 0.500000 + 12 8.219411 0.500000 + 13 8.548029 0.500000 + 14 8.669009 0.500000 + 15 9.836748 0.500000 + 16 10.504337 0.500000 + 17 10.667347 0.500000 + 18 10.804437 0.500000 + 19 11.314523 0.500000 + 20 11.738650 0.500000 + 21 11.747180 0.500000 + 22 12.040081 0.500000 + 23 13.198973 0.500000 + 24 13.739675 0.500000 + 25 16.367697 0.000000 + 26 16.550384 0.000000 + 27 23.386516 0.000000 + 28 23.511720 0.000000 + 29 26.159604 0.000000 + 30 26.291125 0.000000 + 31 28.634180 0.000000 + 32 28.670785 0.000000 + 33 32.915320 0.000000 + 34 32.996909 0.000000 + 35 40.504483 0.000000 + 36 40.630715 0.000000 + 37 50.312984 0.000000 + 38 50.426416 0.000000 + 39 51.859669 0.000000 + 40 51.907506 0.000000 + +SPIN DOWN : + 1/2 kpoint (Cartesian) = 0.00000 0.00000 0.00000 (522 pws) + 1 -89.404874 0.500000 + 2 -89.125942 0.500000 + 3 -50.116722 0.500000 + 4 -50.012641 0.500000 + 5 -49.770942 0.500000 + 6 -49.167045 0.500000 + 7 -49.133084 0.500000 + 8 -49.072023 0.500000 + 9 -4.305764 0.500000 + 10 -2.828539 0.500000 + 11 7.064136 0.500000 + 12 8.571683 0.500000 + 13 8.610007 0.500000 + 14 10.099916 0.500000 + 15 10.229316 0.500000 + 16 10.273838 0.500000 + 17 10.620054 0.500000 + 18 10.883396 0.500000 + 19 12.026525 0.500000 + 20 12.870909 0.500000 + 21 12.951267 0.500000 + 22 13.103917 0.500000 + 23 13.160275 0.500000 + 24 13.160406 0.500000 + 25 16.848597 0.000000 + 26 16.983083 0.000000 + 27 17.314452 0.000000 + 28 21.985231 0.000000 + 29 25.988979 0.000000 + 30 31.586032 0.000000 + 31 31.633203 0.000000 + 32 40.413880 0.000000 + 33 40.422562 0.000000 + 34 40.463585 0.000000 + 35 40.901535 0.000000 + 36 41.381761 0.000000 + 37 46.434114 0.000000 + 38 46.444013 0.000000 + 39 46.469222 0.000000 + 40 49.052274 0.000000 + + 2/2 kpoint (Cartesian) = 0.75000 -0.25000 -0.25000 (525 pws) + 1 -89.403068 0.500000 + 2 -89.124281 0.500000 + 3 -50.122332 0.500000 + 4 -50.014725 0.500000 + 5 -49.789066 0.500000 + 6 -49.185597 0.500000 + 7 -49.139283 0.500000 + 8 -49.076151 0.500000 + 9 -2.873734 0.500000 + 10 -2.767857 0.500000 + 11 7.978080 0.500000 + 12 8.219411 0.500000 + 13 8.548029 0.500000 + 14 8.669009 0.500000 + 15 9.836748 0.500000 + 16 10.504337 0.500000 + 17 10.667347 0.500000 + 18 10.804437 0.500000 + 19 11.314523 0.500000 + 20 11.738650 0.500000 + 21 11.747180 0.500000 + 22 12.040081 0.500000 + 23 13.198973 0.500000 + 24 13.739675 0.500000 + 25 16.367697 0.000000 + 26 16.550384 0.000000 + 27 23.386516 0.000000 + 28 23.511720 0.000000 + 29 26.159604 0.000000 + 30 26.291125 0.000000 + 31 28.634180 0.000000 + 32 28.670785 0.000000 + 33 32.915320 0.000000 + 34 32.996909 0.000000 + 35 40.504483 0.000000 + 36 40.630715 0.000000 + 37 50.312984 0.000000 + 38 50.426416 0.000000 + 39 51.859669 0.000000 + 40 51.907506 0.000000 + +------------------------------------------------- + Total Magnetism (uB) +------------------------------------------------- + Ni11 1.2715948597 + Ni21 -1.2715948597 + O1 0.0000000000 + O2 0.0000000000 +------------------------------------------------- + + + Warning_Memory_Consuming allocated: Stress::dSR 5.079346 MB + correction force for each atom along direction 1 is 0.000000 + correction force for each atom along direction 2 is 0.000000 + correction force for each atom along direction 3 is 0.000000 +------------------------------------------------------------------------------------------ + TOTAL-FORCE (eV/Angstrom) +------------------------------------------------------------------------------------------ + Ni11 0.0000000000 0.0000000000 0.0000000000 + Ni21 0.0000000000 0.0000000000 0.0000000000 + O1 0.0000000000 0.0000000000 0.0000000000 + O2 0.0000000000 0.0000000000 0.0000000000 +------------------------------------------------------------------------------------------ + +---------------------------------------------------------------- + TOTAL-STRESS (KBAR) +---------------------------------------------------------------- + 28.0257165780 -25.0814687477 -25.0814687478 + -25.0814687477 -57.2309475134 52.8147857580 + -25.0814687478 52.8147857580 -57.2309475133 +---------------------------------------------------------------- + TOTAL-PRESSURE: -28.812059 KBAR + + + Largest gradient in force is 0.000000 eV/A. + Threshold is 0.025711 eV/A. + + Largest gradient in stress is 57.230948 kbar. + Threshold is 0.500000 kbar. + + Relaxation is not converged yet! +DIRECT COORDINATES + atom x y z mag vx vy vz +taud_Ni11 0.0000000000 0.0000000000 0.0000000000 2.0000 0.0000000000 0.0000000000 0.0000000000 +taud_Ni21 0.5000000000 0.5000000000 0.5000000000 -2.0000 0.0000000000 0.0000000000 0.0000000000 +taud_O1 0.2500000000 0.2500000000 0.2500000000 0.0000 0.0000000000 0.0000000000 0.0000000000 +taud_O2 0.7500000000 0.7500000000 0.7500000000 0.0000 0.0000000000 0.0000000000 0.0000000000 + + + + Volume (Bohr^3) = 238.947741 + Volume (A^3) = 35.408360 + + Lattice vectors: (Cartesian coordinate: in unit of a_0) + +1.000834 +0.492269 +0.492269 + +0.493312 +0.987716 +0.503303 + +0.493312 +0.503303 +0.987716 + Reciprocal vectors: (Cartesian coordinate: in unit of 2 pi/a_0) + +1.481276 -0.490089 -0.490089 + -0.489053 +1.529324 -0.535029 + -0.489053 -0.535029 +1.529324 + DONE : SETUP UNITCELL Time : 35.144061 (SEC) + + + ------------------------------------------- + STEP OF RELAXATION : 2 + ------------------------------------------- + DONE : LOCAL POTENTIAL Time : 35.274813 (SEC) + + + SETUP K-POINTS + nspin = 2 +K-POINTS DIRECT COORDINATES + KPOINTS DIRECT_X DIRECT_Y DIRECT_Z WEIGHT + 1 0.00000000 0.00000000 0.00000000 0.5000 + 2 0.50000000 0.00000000 0.00000000 0.5000 + 3 0.00000000 0.00000000 0.00000000 0.5000 + 4 0.50000000 0.00000000 0.00000000 0.5000 + + +K-POINTS CARTESIAN COORDINATES + KPOINTS CARTESIAN_X CARTESIAN_Y CARTESIAN_Z WEIGHT + 1 0.00000000 0.00000000 0.00000000 0.5000 + 2 0.74063794 -0.24504430 -0.24504430 0.5000 + 3 0.00000000 0.00000000 0.00000000 0.5000 + 4 0.74063794 -0.24504430 -0.24504430 0.5000 + + +K-POINTS DIRECT COORDINATES + KPOINTS DIRECT_X DIRECT_Y DIRECT_Z WEIGHT + 1 0.00000000 0.00000000 0.00000000 0.5000 + 2 0.50000000 0.00000000 0.00000000 0.5000 + 3 0.00000000 0.00000000 0.00000000 0.5000 + 4 0.50000000 0.00000000 0.00000000 0.5000 + + DONE : INIT K-POINTS Time : 35.274964 (SEC) + + NEW-OLD atomic charge density approx. for the potential ! + + LCAO ALGORITHM --------------- ION= 2 ELEC= 1-------------------------------- + total magnetism (Bohr mag/cell) = 0.00000000 + absolute magnetism (Bohr mag/cell) = 3.21425392 + nelec for spin up = 24.00000000 + nelec for spin down = 24.00000000 + + Density error is 0.026004815939 +---------------------------------------------------------- + Energy Rydberg eV +---------------------------------------------------------- + E_KohnSham -679.8473275556 -9249.7974248288 + E_KS(sigma->0) -679.8473275556 -9249.7974248288 + E_Harris -684.3263638890 -9310.7378405121 + E_band -43.4930687779 -591.7535588848 + E_one_elec -300.5649336133 -4089.3957161326 + E_Hartree 175.0901338700 2382.2234842145 + E_xc -74.7193316524 -1016.6086612241 + E_Ewald -482.3768468830 -6563.0737008819 + E_entropy(-TS) -0.0000000000 -0.0000000000 + E_descf 0.0000000000 0.0000000000 + E_exx 0.0000000000 0.0000000000 + E_Fermi 1.1742850813 15.9769681825 +---------------------------------------------------------- + + + charge density convergence is achieved + final etot is -9249.79742482878 eV + EFERMI = 15.97696818250 eV + + STATE ENERGY(eV) AND OCCUPATIONS NSPIN == 2 +SPIN UP : + 1/2 kpoint (Cartesian) = 0.00000 0.00000 0.00000 (522 pws) + 1 -87.313319 0.500000 + 2 -86.299919 0.500000 + 3 -48.144915 0.500000 + 4 -47.852774 0.500000 + 5 -47.594179 0.500000 + 6 -46.643110 0.500000 + 7 -46.469430 0.500000 + 8 -46.356732 0.500000 + 9 -4.441729 0.500000 + 10 -3.006060 0.500000 + 11 7.554887 0.500000 + 12 9.603175 0.500000 + 13 9.791693 0.500000 + 14 11.910486 0.500000 + 15 12.024017 0.500000 + 16 12.122462 0.500000 + 17 12.800279 0.500000 + 18 12.812330 0.500000 + 19 12.962308 0.500000 + 20 13.085032 0.500000 + 21 13.093740 0.500000 + 22 13.606898 0.500000 + 23 14.163995 0.500000 + 24 14.210286 0.500000 + 25 18.126647 0.000000 + 26 18.317661 0.000000 + 27 18.411251 0.000000 + 28 22.810951 0.000000 + 29 26.717376 0.000000 + 30 32.381051 0.000000 + 31 33.327582 0.000000 + 32 40.974339 0.000000 + 33 42.076111 0.000000 + 34 42.512684 0.000000 + 35 42.741748 0.000000 + 36 42.813320 0.000000 + 37 46.702895 0.000000 + 38 48.044296 0.000000 + 39 48.397388 0.000000 + 40 49.449904 0.000000 + + 2/2 kpoint (Cartesian) = 0.74064 -0.24504 -0.24504 (525 pws) + 1 -87.311541 0.500000 + 2 -86.298007 0.500000 + 3 -48.150190 0.500000 + 4 -47.853056 0.500000 + 5 -47.615448 0.500000 + 6 -46.649045 0.500000 + 7 -46.467146 0.500000 + 8 -46.383080 0.500000 + 9 -3.088880 0.500000 + 10 -3.004681 0.500000 + 11 8.440016 0.500000 + 12 8.606555 0.500000 + 13 9.402022 0.500000 + 14 9.896985 0.500000 + 15 10.486907 0.500000 + 16 11.502839 0.500000 + 17 12.152707 0.500000 + 18 12.604010 0.500000 + 19 12.956976 0.500000 + 20 13.237777 0.500000 + 21 13.559188 0.500000 + 22 14.001685 0.500000 + 23 14.085813 0.500000 + 24 14.514613 0.500000 + 25 18.021728 0.000000 + 26 18.254714 0.000000 + 27 24.223340 0.000000 + 28 24.392854 0.000000 + 29 27.003980 0.000000 + 30 27.096256 0.000000 + 31 29.660858 0.000000 + 32 29.728710 0.000000 + 33 34.805284 0.000000 + 34 35.022252 0.000000 + 35 42.072506 0.000000 + 36 42.132637 0.000000 + 37 51.290113 0.000000 + 38 51.325899 0.000000 + 39 52.955352 0.000000 + 40 53.076750 0.000000 + +SPIN DOWN : + 1/2 kpoint (Cartesian) = 0.00000 0.00000 0.00000 (522 pws) + 1 -87.313319 0.500000 + 2 -86.299919 0.500000 + 3 -48.144915 0.500000 + 4 -47.852774 0.500000 + 5 -47.594179 0.500000 + 6 -46.643110 0.500000 + 7 -46.469430 0.500000 + 8 -46.356732 0.500000 + 9 -4.441729 0.500000 + 10 -3.006060 0.500000 + 11 7.554887 0.500000 + 12 9.603175 0.500000 + 13 9.791693 0.500000 + 14 11.910486 0.500000 + 15 12.024017 0.500000 + 16 12.122462 0.500000 + 17 12.800279 0.500000 + 18 12.812330 0.500000 + 19 12.962308 0.500000 + 20 13.085032 0.500000 + 21 13.093740 0.500000 + 22 13.606898 0.500000 + 23 14.163995 0.500000 + 24 14.210286 0.500000 + 25 18.126647 0.000000 + 26 18.317661 0.000000 + 27 18.411251 0.000000 + 28 22.810951 0.000000 + 29 26.717376 0.000000 + 30 32.381051 0.000000 + 31 33.327582 0.000000 + 32 40.974339 0.000000 + 33 42.076111 0.000000 + 34 42.512684 0.000000 + 35 42.741748 0.000000 + 36 42.813320 0.000000 + 37 46.702895 0.000000 + 38 48.044296 0.000000 + 39 48.397388 0.000000 + 40 49.449904 0.000000 + + 2/2 kpoint (Cartesian) = 0.74064 -0.24504 -0.24504 (525 pws) + 1 -87.311541 0.500000 + 2 -86.298007 0.500000 + 3 -48.150190 0.500000 + 4 -47.853056 0.500000 + 5 -47.615448 0.500000 + 6 -46.649045 0.500000 + 7 -46.467146 0.500000 + 8 -46.383080 0.500000 + 9 -3.088880 0.500000 + 10 -3.004681 0.500000 + 11 8.440016 0.500000 + 12 8.606555 0.500000 + 13 9.402022 0.500000 + 14 9.896985 0.500000 + 15 10.486907 0.500000 + 16 11.502839 0.500000 + 17 12.152707 0.500000 + 18 12.604010 0.500000 + 19 12.956976 0.500000 + 20 13.237777 0.500000 + 21 13.559188 0.500000 + 22 14.001685 0.500000 + 23 14.085813 0.500000 + 24 14.514613 0.500000 + 25 18.021728 0.000000 + 26 18.254714 0.000000 + 27 24.223340 0.000000 + 28 24.392854 0.000000 + 29 27.003980 0.000000 + 30 27.096256 0.000000 + 31 29.660858 0.000000 + 32 29.728710 0.000000 + 33 34.805284 0.000000 + 34 35.022252 0.000000 + 35 42.072506 0.000000 + 36 42.132637 0.000000 + 37 51.290113 0.000000 + 38 51.325899 0.000000 + 39 52.955352 0.000000 + 40 53.076750 0.000000 + +------------------------------------------------- + Total Magnetism (uB) +------------------------------------------------- + Ni11 1.5398231110 + Ni21 -1.5398231110 + O1 -0.0000000000 + O2 -0.0000000000 +------------------------------------------------- + + correction force for each atom along direction 1 is 0.000000 + correction force for each atom along direction 2 is -0.000000 + correction force for each atom along direction 3 is -0.000000 +------------------------------------------------------------------------------------------ + TOTAL-FORCE (eV/Angstrom) +------------------------------------------------------------------------------------------ + Ni11 0.0000000000 0.0000000000 0.0000000000 + Ni21 0.0000000000 0.0000000000 0.0000000000 + O1 0.0000000000 0.0000000000 0.0000000000 + O2 0.0000000000 0.0000000000 0.0000000000 +------------------------------------------------------------------------------------------ + +---------------------------------------------------------------- + TOTAL-STRESS (KBAR) +---------------------------------------------------------------- + 7.3061116295 -27.6053387696 -27.6053387674 + -27.6053387696 0.8540980637 7.6367729837 + -27.6053387674 7.6367729837 0.8540980603 +---------------------------------------------------------------- + TOTAL-PRESSURE: 3.004769 KBAR + + + Largest gradient in force is 0.000000 eV/A. + Threshold is 0.025711 eV/A. + + Largest gradient in stress is 27.605339 kbar. + Threshold is 0.500000 kbar. + + Relaxation is not converged yet! +DIRECT COORDINATES + atom x y z mag vx vy vz +taud_Ni11 0.0000000000 0.0000000000 0.0000000000 2.0000 0.0000000000 0.0000000000 0.0000000000 +taud_Ni21 0.5000000000 0.5000000000 0.5000000000 -2.0000 0.0000000000 0.0000000000 0.0000000000 +taud_O1 0.2500000000 0.2500000000 0.2500000000 0.0000 0.0000000000 0.0000000000 0.0000000000 +taud_O2 0.7500000000 0.7500000000 0.7500000000 0.0000 0.0000000000 0.0000000000 0.0000000000 + + + + Volume (Bohr^3) = 237.073950 + Volume (A^3) = 35.130693 + + Lattice vectors: (Cartesian coordinate: in unit of a_0) + +1.001087 +0.489924 +0.489924 + +0.491283 +0.983989 +0.504305 + +0.491283 +0.504305 +0.983989 + Reciprocal vectors: (Cartesian coordinate: in unit of 2 pi/a_0) + +1.475708 -0.487128 -0.487128 + -0.485781 +1.538662 -0.546041 + -0.485781 -0.546041 +1.538662 + DONE : SETUP UNITCELL Time : 58.301245 (SEC) + + + + -------------------------------------------- + !FINAL_ETOT_IS -9249.7974248287773662 eV + -------------------------------------------- diff --git a/interfaces/ASE_interface/abacuslite/io/testfiles/lcao-symm0-nspin2-multik-relax b/interfaces/ASE_interface/abacuslite/io/testfiles/lcao-symm0-nspin2-multik-relax new file mode 100644 index 0000000000..32c1b22a05 --- /dev/null +++ b/interfaces/ASE_interface/abacuslite/io/testfiles/lcao-symm0-nspin2-multik-relax @@ -0,0 +1,254 @@ + READING UNITCELL INFORMATION + Number of elements = 2 + Lattice constant (Bohr) = 6.1416 + Lattice constant (Angstrom) = 3.24999 + + TOTAL ATOM NUMBER = 2 + + DIRECT COORDINATES + atom x y z mag + Zn 0.000000000000 0.000000000000 0.000000000000 1.0000 + O 0.333329999999 0.666670000001 0.500000000000 1.0000 + + ATOMIC VELOCITIES + atom vx vy vz + Zn 0 0 0 + O 0 0 0 + + Cell volume (Bohr^3) = 320.983 + Cell volume (A^3) = 47.5648 + + Lattice vectors: (Cartesian coordinate: in unit of a_0) + +1 +0 +0 + -0.5 +0.866 +0 + +0 +0 +1.6 + Reciprocal vectors: (Cartesian coordinate: in unit of 2 pi/a_0) + +1 +0.577367 -0 + -0 +1.15473 -0 + +0 -0 +0.625 + + #ENERGY SOLVER# ksdft_lcao + + SETUP K-POINTS + nspin = 2 + Input type of k points = Monkhorst-Pack(Gamma) + nkstot = 2 + Number of irreducible k-points = 2 + + K-POINTS REDUCTION ACCORDING TO SYMMETRY + IBZ DIRECT_X DIRECT_Y DIRECT_Z WEIGHT ibz2bz + 1 0.00000000 0.00000000 0.00000000 0.5000 0 + 2 0.50000000 0.00000000 0.00000000 0.5000 1 + + nkstot now = 2 + K-POINTS DIRECT COORDINATES + KPOINTS DIRECT_X DIRECT_Y DIRECT_Z WEIGHT + 1 0.00000000 0.00000000 0.00000000 0.5000 + 2 0.50000000 0.00000000 0.00000000 0.5000 + + + Number of k-points in this process = 2 + Minimum distributed k-point number = 2 + nks(nspin=2) = 4 + nkstot(nspin=2) = 4 + + K-POINTS CARTESIAN COORDINATES + KPOINTS CARTESIAN_X CARTESIAN_Y CARTESIAN_Z WEIGHT + 1 0.00000000 0.00000000 0.00000000 0.5000 + 2 0.50000000 0.28868360 0.00000000 0.5000 + 3 0.00000000 0.00000000 0.00000000 0.5000 + 4 0.50000000 0.28868360 0.00000000 0.5000 + + + K-POINTS DIRECT COORDINATES + KPOINTS DIRECT_X DIRECT_Y DIRECT_Z WEIGHT + 1 0.00000000 0.00000000 0.00000000 0.5000 + 2 0.50000000 0.00000000 0.00000000 0.5000 + 3 0.00000000 0.00000000 0.00000000 0.5000 + 4 0.50000000 0.00000000 0.00000000 0.5000 + + ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + --> #ION MOVE# 1 #ELEC ITER# 1 + ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + Total magnetism (Bohr mag/cell) = 1 + Absolute magnetism (Bohr mag/cell) = 1.12149 + Electron number for spin up = 9.5 + Electron number for spin down = 8.5 + Electron density deviation 0.125277 + ---------------------------------------------------------- + Energy Rydberg eV + ---------------------------------------------------------- + E_KohnSham -142.2770827085 -1935.7790196528 + E_Harris -143.4665603429 -1951.9626931241 + E_Fermi -0.0403816764 -0.5494208938 + E_gap(k) 0.0210767116 0.2867633735 + ---------------------------------------------------------- + + + ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + --> #ION MOVE# 1 #ELEC ITER# 2 + ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + Total magnetism (Bohr mag/cell) = 1.47102 + Absolute magnetism (Bohr mag/cell) = 1.73431 + Electron number for spin up = 9.73551 + Electron number for spin down = 8.26449 + Electron density deviation 0.0831681 + ---------------------------------------------------------- + Energy Rydberg eV + ---------------------------------------------------------- + E_KohnSham -142.3304483127 -1936.5050959474 + E_Harris -143.3480046582 -1950.3496602818 + E_Fermi 0.1727758798 2.3507364425 + E_gap(k) 0.0829435366 1.1285047105 + ---------------------------------------------------------- + + + ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + --> #ION MOVE# 1 #ELEC ITER# 3 + ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + Total magnetism (Bohr mag/cell) = 1.12003 + Absolute magnetism (Bohr mag/cell) = 1.31163 + Electron number for spin up = 9.56002 + Electron number for spin down = 8.43998 + Electron density deviation 0.0509266 + ---------------------------------------------------------- + Energy Rydberg eV + ---------------------------------------------------------- + E_KohnSham -142.3384608538 -1936.6141121617 + E_Harris -142.9615903984 -1945.0922245608 + E_Fermi 0.1548551093 2.1069118503 + E_gap(k) 0.0983427230 1.3380213902 + ---------------------------------------------------------- + + + ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + --> #ION MOVE# 1 #ELEC ITER# 4 + ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + Total magnetism (Bohr mag/cell) = 1.53777 + Absolute magnetism (Bohr mag/cell) = 1.6108 + Electron number for spin up = 9.76889 + Electron number for spin down = 8.23111 + Electron density deviation 0.0330854 + ---------------------------------------------------------- + Energy Rydberg eV + ---------------------------------------------------------- + E_KohnSham -142.3352576013 -1936.5705296758 + E_KS(sigma->0) -142.3323774224 -1936.5313428317 + E_Harris -142.7863078681 -1942.7073833888 + E_band -6.1860559614 -84.1656092218 + E_one_elec -82.8067447602 -1126.6435615698 + E_Hartree 52.7505694558 717.7083173431 + E_xc -22.3915899098 -304.6532100528 + E_Ewald -89.8817320294 -1222.9037017083 + E_entropy(-TS) -0.0057603578 -0.0783736881 + E_descf 0.0000000000 0.0000000000 + E_localpp -63.0117129308 -857.3183365997 + E_exx 0.0000000000 0.0000000000 + E_Fermi 0.1563671777 2.1274845966 + E_gap(k) 0.0088059230 0.1198107291 + ---------------------------------------------------------- + + #SCF IS CONVERGED# + #TOTAL ENERGY# -1936.5705297 eV + Write eigenvalues and occupations to file: OUT.ABACUS/eig_occ.txt + + #TOTAL-FORCE (eV/Angstrom)# + ------------------------------------------------------------------------- + Atoms Force_x Force_y Force_z + ------------------------------------------------------------------------- + Zn1 -1.2994798821 -0.7502719805 0.0000000000 + O1 1.2994798821 0.7502719805 0.0000000000 + ------------------------------------------------------------------------- + DIRECT COORDINATES + atom x y z mag + Zn 0.992383886577 0.996191795094 1.000000000000 1.0000 + O 0.340946113423 0.670478204907 0.500000000000 1.0000 + + ATOMIC VELOCITIES + atom vx vy vz + Zn 0 0 0 + O 0 0 0 + + ================================================================ + RELAX STEP: 2 + ================================================================ + NEW-OLD atomic charge density approx. for the potential ! + + ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + --> #ION MOVE# 2 #ELEC ITER# 1 + ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + Total magnetism (Bohr mag/cell) = 1 + Absolute magnetism (Bohr mag/cell) = 1.22086 + Electron number for spin up = 9.5 + Electron number for spin down = 8.5 + Electron density deviation 0.059569 + ---------------------------------------------------------- + Energy Rydberg eV + ---------------------------------------------------------- + E_KohnSham -142.2850208668 -1935.8870238374 + E_Harris -142.0296340730 -1932.4123082471 + E_Fermi 0.0811057930 1.1035009262 + E_gap(k) 0.0049642264 0.0675417656 + ---------------------------------------------------------- + + + ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + --> #ION MOVE# 2 #ELEC ITER# 2 + ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + Total magnetism (Bohr mag/cell) = 1.58366 + Absolute magnetism (Bohr mag/cell) = 1.79488 + Electron number for spin up = 9.79183 + Electron number for spin down = 8.20817 + Electron density deviation 0.0753194 + ---------------------------------------------------------- + Energy Rydberg eV + ---------------------------------------------------------- + E_KohnSham -142.3289737580 -1936.4850336018 + E_Harris -142.6117578899 -1940.3325090994 + E_Fermi 0.1443002225 1.9633052486 + E_gap(k) 0.0030396611 0.0413567116 + ---------------------------------------------------------- + + + ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + --> #ION MOVE# 2 #ELEC ITER# 3 + ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + Total magnetism (Bohr mag/cell) = 1.72786 + Absolute magnetism (Bohr mag/cell) = 1.80974 + Electron number for spin up = 9.86393 + Electron number for spin down = 8.13607 + Electron density deviation 0.0255995 + ---------------------------------------------------------- + Energy Rydberg eV + ---------------------------------------------------------- + E_KohnSham -142.3181389505 -1936.3376184830 + E_KS(sigma->0) -142.3160566944 -1936.3092879352 + E_Harris -142.1804183322 -1934.4638333420 + E_band -6.5047886054 -88.5021893191 + E_one_elec -83.0970862127 -1130.5938596904 + E_Hartree 53.0543074453 721.8408847003 + E_xc -22.3904168680 -304.6372499998 + E_Ewald -89.8807788029 -1222.8907323974 + E_entropy(-TS) -0.0041645122 -0.0566610957 + E_descf 0.0000000000 0.0000000000 + E_localpp -63.1799315004 -859.6070676546 + E_exx 0.0000000000 0.0000000000 + E_Fermi 0.1490975189 2.0285758150 + E_gap(k) 0.0166283571 0.2262404048 + ---------------------------------------------------------- + + #SCF IS CONVERGED# + #TOTAL ENERGY# -1936.3376185 eV + Write eigenvalues and occupations to file: OUT.ABACUS/eig_occ.txt + + #TOTAL-FORCE (eV/Angstrom)# + ------------------------------------------------------------------------- + Atoms Force_x Force_y Force_z + ------------------------------------------------------------------------- + Zn1 -1.6814741322 -0.9708025265 0.0000000000 + O1 1.6814741322 0.9708025265 0.0000000000 + ------------------------------------------------------------------------- + + -------------------------------------------- + !FINAL_ETOT_IS -1936.337618483019 eV + -------------------------------------------- diff --git a/interfaces/ASE_interface/abacuslite/io/testfiles/lcao-symm0-nspin2-multik-relax_ b/interfaces/ASE_interface/abacuslite/io/testfiles/lcao-symm0-nspin2-multik-relax_ new file mode 100644 index 0000000000..b276783918 --- /dev/null +++ b/interfaces/ASE_interface/abacuslite/io/testfiles/lcao-symm0-nspin2-multik-relax_ @@ -0,0 +1,542 @@ +NBANDS = 24 + READING UNITCELL INFORMATION + ntype = 2 + lattice constant (Bohr) = 6.1416 + lattice constant (Angstrom) = 3.24999 + + TOTAL ATOM NUMBER = 2 +DIRECT COORDINATES + atom x y z mag vx vy vz +taud_Zn1 0.0000000000 0.0000000000 0.0000000000 1.0000 0.0000000000 0.0000000000 0.0000000000 +taud_O1 0.3333300000 0.6666700000 0.5000000000 1.0000 0.0000000000 0.0000000000 0.0000000000 + + + + Volume (Bohr^3) = 320.983 + Volume (A^3) = 47.5648 + + Lattice vectors: (Cartesian coordinate: in unit of a_0) + +1 +0 +0 + -0.5 +0.866 +0 + +0 +0 +1.6 + Reciprocal vectors: (Cartesian coordinate: in unit of 2 pi/a_0) + +1 +0.577367 -0 + -0 +1.15473 -0 + +0 -0 +0.625 + The esolver type has been set to : ksdft_lcao + + SETUP K-POINTS + nspin = 2 + Input type of k points = Monkhorst-Pack(Gamma) + nkstot = 3 + nkstot_ibz = 2 +K-POINTS REDUCTION ACCORDING TO SYMMETRY + IBZ DIRECT_X DIRECT_Y DIRECT_Z WEIGHT ibz2bz + 1 0.00000000 0.00000000 0.00000000 0.3333 0 + 2 0.33333333 0.00000000 0.00000000 0.6667 1 + + nkstot now = 2 +K-POINTS DIRECT COORDINATES + KPOINTS DIRECT_X DIRECT_Y DIRECT_Z WEIGHT + 1 0.00000000 0.00000000 0.00000000 0.3333 + 2 0.33333333 0.00000000 0.00000000 0.6667 + + + k-point number in this process = 2 + minimum distributed K point number = 2 + nks(nspin=2) = 4 + nkstot(nspin=2) = 4 + +K-POINTS CARTESIAN COORDINATES + KPOINTS CARTESIAN_X CARTESIAN_Y CARTESIAN_Z WEIGHT + 1 0.00000000 0.00000000 0.00000000 0.3333 + 2 0.33333333 0.19245574 0.00000000 0.6667 + 3 0.00000000 0.00000000 0.00000000 0.3333 + 4 0.33333333 0.19245574 0.00000000 0.6667 + + +K-POINTS DIRECT COORDINATES + KPOINTS DIRECT_X DIRECT_Y DIRECT_Z WEIGHT + 1 0.00000000 0.00000000 0.00000000 0.3333 + 2 0.33333333 0.00000000 0.00000000 0.6667 + 3 0.00000000 0.00000000 0.00000000 0.3333 + 4 0.33333333 0.00000000 0.00000000 0.6667 + + DONE : INIT K-POINTS Time : 0.158631 (SEC) + + LCAO ALGORITHM --------------- ION= 1 ELEC= 1-------------------------------- + total magnetism (Bohr mag/cell) = 0.666667 + absolute magnetism (Bohr mag/cell) = 0.859038 + nelec for spin up = 9.33333 + nelec for spin down = 8.66667 + + Density error is 0.148375838039 +---------------------------------------------------------- + Energy Rydberg eV +---------------------------------------------------------- + E_KohnSham -142.1187686707 -1933.6250466660 + E_Harris -143.4705730938 -1952.0172894008 + E_Fermi -0.0353855376 -0.4814449377 +---------------------------------------------------------- + + + LCAO ALGORITHM --------------- ION= 1 ELEC= 2-------------------------------- + total magnetism (Bohr mag/cell) = 1.07915 + absolute magnetism (Bohr mag/cell) = 1.12107 + nelec for spin up = 9.53958 + nelec for spin down = 8.46042 + + Density error is 0.124524909173 +---------------------------------------------------------- + Energy Rydberg eV +---------------------------------------------------------- + E_KohnSham -142.3211355503 -1936.3783893140 + E_Harris -143.6941669355 -1955.0594396866 + E_Fermi 0.1465181279 1.9934813994 +---------------------------------------------------------- + + + LCAO ALGORITHM --------------- ION= 1 ELEC= 3-------------------------------- + total magnetism (Bohr mag/cell) = 1.99248 + absolute magnetism (Bohr mag/cell) = 1.99742 + nelec for spin up = 9.99624 + nelec for spin down = 8.00376 + + Density error is 0.0706868918851 +---------------------------------------------------------- + Energy Rydberg eV +---------------------------------------------------------- + E_KohnSham -142.3807869186 -1937.1899878166 + E_Harris -142.7640217764 -1942.4041655545 + E_Fermi 0.0369440819 0.5026500219 +---------------------------------------------------------- + + + LCAO ALGORITHM --------------- ION= 1 ELEC= 4-------------------------------- + Energy (eV) & Occupations for spin=1 K-point=1 + 1 -15.5220 0.333333 + 2 -5.15869 0.333333 + 3 -5.09633 0.333333 + 4 -5.09579 0.333333 + 5 -4.91098 0.333333 + 6 -4.88255 0.333333 + 7 -2.41462 0.333333 + 8 -1.17166 0.333333 + 9 -0.444834 0.333333 + 10 -0.0995765 0.333331 + 11 6.45991 0.00000 + 12 11.4422 0.00000 + 13 15.0234 0.00000 + 14 15.0596 0.00000 + 15 23.2513 0.00000 + 16 23.2764 0.00000 + 17 25.4767 0.00000 + 18 26.9713 0.00000 + 19 31.1215 0.00000 + 20 31.1309 0.00000 + 21 35.3447 0.00000 + 22 35.5400 0.00000 + 23 44.3560 0.00000 + 24 44.3653 0.00000 + Energy (eV) & Occupations for spin=1 K-point=2 + 1 -15.3130 0.666667 + 2 -5.19707 0.666667 + 3 -5.04322 0.666667 + 4 -4.95407 0.666667 + 5 -4.92694 0.666667 + 6 -4.90614 0.666667 + 7 -1.60476 0.666667 + 8 -0.647511 0.666667 + 9 -0.597491 0.666667 + 10 0.0977501 0.665705 + 11 6.63089 0.00000 + 12 7.81903 0.00000 + 13 12.0662 0.00000 + 14 13.7495 0.00000 + 15 17.0352 0.00000 + 16 18.4561 0.00000 + 17 23.0144 0.00000 + 18 27.6550 0.00000 + 19 29.0735 0.00000 + 20 32.7571 0.00000 + 21 34.0272 0.00000 + 22 34.4864 0.00000 + 23 45.8436 0.00000 + 24 47.8824 0.00000 + Energy (eV) & Occupations for spin=2 K-point=3 + 1 -13.9098 0.333333 + 2 -5.28447 0.333333 + 3 -5.23229 0.333333 + 4 -5.23152 0.333333 + 5 -5.04766 0.333333 + 6 -5.02138 0.333333 + 7 -2.41296 0.333333 + 8 -0.465692 0.333333 + 9 1.52893 6.64394e-13 + 10 1.91854 0.00000 + 11 6.73202 0.00000 + 12 11.8411 0.00000 + 13 14.9947 0.00000 + 14 15.0247 0.00000 + 15 23.2999 0.00000 + 16 23.3150 0.00000 + 17 25.6846 0.00000 + 18 27.1076 0.00000 + 19 31.1088 0.00000 + 20 31.1333 0.00000 + 21 36.4707 0.00000 + 22 36.7183 0.00000 + 23 45.7329 0.00000 + 24 45.7353 0.00000 + Energy (eV) & Occupations for spin=2 K-point=4 + 1 -13.6624 0.666667 + 2 -5.32995 0.666667 + 3 -5.17483 0.666667 + 4 -5.08486 0.666667 + 5 -5.06576 0.666667 + 6 -5.04464 0.666667 + 7 -0.935533 0.666667 + 8 0.232424 0.653097 + 9 0.818953 0.0145341 + 10 1.65447 1.92439e-15 + 11 6.66257 0.00000 + 12 7.91394 0.00000 + 13 12.0744 0.00000 + 14 14.3168 0.00000 + 15 17.1145 0.00000 + 16 18.4599 0.00000 + 17 23.6133 0.00000 + 18 27.6693 0.00000 + 19 30.2686 0.00000 + 20 33.0577 0.00000 + 21 34.2411 0.00000 + 22 34.5673 0.00000 + 23 46.5926 0.00000 + 24 48.6064 0.00000 + total magnetism (Bohr mag/cell) = 1.99807 + absolute magnetism (Bohr mag/cell) = 2.00454 + nelec for spin up = 9.99904 + nelec for spin down = 8.00096 + + Density error is 0.0656436757814 +---------------------------------------------------------- + Energy Rydberg eV +---------------------------------------------------------- + E_KohnSham -142.3712279182 -1937.0599309441 + E_KS(sigma->0) -142.3708533084 -1937.0548341158 + E_Harris -142.7308078006 -1941.9522662316 + E_band -6.2153589294 -84.5642965550 + E_one_elec -82.9844461107 -1129.0613124793 + E_Hartree 53.1237310038 722.7854406707 + E_xc -22.4953290567 -306.0646535560 + E_Ewald -89.8817320293 -1222.9037017083 + E_entropy(-TS) -0.0007492197 -0.0101936567 + E_descf -0.1327025056 -1.8055102146 + E_exx 0.0000000000 0.0000000000 + E_Fermi 0.0387889151 0.5277502650 +---------------------------------------------------------- + + + LCAO ALGORITHM --------------- ION= 1 ELEC= 5-------------------------------- + total magnetism (Bohr mag/cell) = 1.99993 + absolute magnetism (Bohr mag/cell) = 2.03979 + nelec for spin up = 9.99997 + nelec for spin down = 8.00003 + + Density error is 0.0248102508790 +---------------------------------------------------------- + Energy Rydberg eV +---------------------------------------------------------- + E_KohnSham -142.3828162660 -1937.2175985049 + E_KS(sigma->0) -142.3828138132 -1937.2175651321 + E_Harris -142.3278409962 -1936.4696215860 + E_band -6.4176731232 -87.3169223772 + E_one_elec -83.1842752559 -1131.7801274806 + E_Hartree 53.1444543678 723.0673965037 + E_xc -22.4612584429 -305.6010990741 + E_Ewald -89.8817320293 -1222.9037017083 + E_entropy(-TS) -0.0000049057 -0.0000667456 + E_descf 0.0000000000 0.0000000000 + E_exx 0.0000000000 0.0000000000 + E_Fermi 0.0397561785 0.5409105583 +---------------------------------------------------------- + + + charge density convergence is achieved + final etot is -1937.2175985 eV + EFERMI = 0.54091055829 eV + + STATE ENERGY(eV) AND OCCUPATIONS NSPIN == 2 +SPIN UP : + 1/2 kpoint (Cartesian) = 0.0000 0.0000 0.0000 (893 pws) + 1 -17.3578 0.333333 + 2 -4.81961 0.333333 + 3 -4.73286 0.333333 + 4 -4.72898 0.333333 + 5 -4.55927 0.333333 + 6 -4.54757 0.333333 + 7 -2.39449 0.333333 + 8 -2.32744 0.333333 + 9 -2.25455 0.333333 + 10 -2.23106 0.333333 + 11 6.19588 0.00000 + 12 10.9105 0.00000 + 13 15.2835 0.00000 + 14 15.3348 0.00000 + 15 23.4019 0.00000 + 16 23.4194 0.00000 + 17 25.2091 0.00000 + 18 26.8842 0.00000 + 19 31.1933 0.00000 + 20 31.2197 0.00000 + 21 34.2734 0.00000 + 22 34.3051 0.00000 + 23 42.9212 0.00000 + 24 42.9350 0.00000 + + 2/2 kpoint (Cartesian) = 0.33333 0.19246 0.0000 (885 pws) + 1 -17.1796 0.666667 + 2 -4.84064 0.666667 + 3 -4.70446 0.666667 + 4 -4.62781 0.666667 + 5 -4.57157 0.666667 + 6 -4.55825 0.666667 + 7 -3.28584 0.666667 + 8 -2.56381 0.666667 + 9 -1.80637 0.666667 + 10 -0.0190494 0.666632 + 11 6.80206 0.00000 + 12 7.76382 0.00000 + 13 12.3030 0.00000 + 14 12.9847 0.00000 + 15 16.9929 0.00000 + 16 18.6240 0.00000 + 17 22.2820 0.00000 + 18 27.7369 0.00000 + 19 28.0657 0.00000 + 20 32.3697 0.00000 + 21 33.8334 0.00000 + 22 34.6594 0.00000 + 23 44.8974 0.00000 + 24 46.3639 0.00000 + +SPIN DOWN : + 1/2 kpoint (Cartesian) = 0.0000 0.0000 0.0000 (893 pws) + 1 -14.0445 0.333333 + 2 -4.79338 0.333333 + 3 -4.73524 0.333333 + 4 -4.72894 0.333333 + 5 -4.55673 0.333333 + 6 -4.55287 0.333333 + 7 -2.01856 0.333333 + 8 -0.690145 0.333333 + 9 1.71782 5.55112e-17 + 10 1.71906 5.55112e-17 + 11 6.79442 0.00000 + 12 11.7239 0.00000 + 13 15.4745 0.00000 + 14 15.4804 0.00000 + 15 23.7304 0.00000 + 16 23.7520 0.00000 + 17 25.6891 0.00000 + 18 27.2645 0.00000 + 19 31.3363 0.00000 + 20 31.3391 0.00000 + 21 36.5216 0.00000 + 22 36.5324 0.00000 + 23 45.5784 0.00000 + 24 45.5799 0.00000 + + 2/2 kpoint (Cartesian) = 0.33333 0.19246 0.0000 (885 pws) + 1 -13.7943 0.666667 + 2 -4.83973 0.666667 + 3 -4.69011 0.666667 + 4 -4.60271 0.666667 + 5 -4.57650 0.666667 + 6 -4.56292 0.666667 + 7 -0.679818 0.666667 + 8 -0.0349660 0.666645 + 9 1.08344 5.67566e-05 + 10 1.45183 9.16874e-11 + 11 7.10261 0.00000 + 12 8.05898 0.00000 + 13 12.5265 0.00000 + 14 14.2714 0.00000 + 15 17.2717 0.00000 + 16 18.8507 0.00000 + 17 23.5800 0.00000 + 18 27.8847 0.00000 + 19 30.1119 0.00000 + 20 33.0443 0.00000 + 21 34.4305 0.00000 + 22 34.9634 0.00000 + 23 46.4765 0.00000 + 24 48.4894 0.00000 + + correction force for each atom along direction 1 is 0.00411709 + correction force for each atom along direction 2 is 0.00237660 + correction force for each atom along direction 3 is -1.26516e-14 +------------------------------------------------------------------------------------------ + TOTAL-FORCE (eV/Angstrom) +------------------------------------------------------------------------------------------ + Zn1 0.1954664241 0.1128694317 0.0000000000 + O1 -0.1954664241 -0.1128694317 0.0000000000 +------------------------------------------------------------------------------------------ + + + ------------------------------------------- + STEP OF ION RELAXATION : 2 + ------------------------------------------- + NEW-OLD atomic charge density approx. for the potential ! + + LCAO ALGORITHM --------------- ION= 2 ELEC= 1-------------------------------- + total magnetism (Bohr mag/cell) = 1.98397 + absolute magnetism (Bohr mag/cell) = 2.01565 + nelec for spin up = 9.99199 + nelec for spin down = 8.00801 + + Density error is 0.0228305178505 +---------------------------------------------------------- + Energy Rydberg eV +---------------------------------------------------------- + E_KohnSham -142.3657663672 -1936.9856227301 + E_KS(sigma->0) -142.3655346066 -1936.9824694665 + E_Harris -142.4529533528 -1938.1718625268 + E_band -6.3921548433 -86.9697283672 + E_one_elec -83.1041185049 -1130.6895389336 + E_Hartree 53.1961932590 723.7713402320 + E_xc -22.5756668328 -307.1577050760 + E_Ewald -89.8817107675 -1222.9034124254 + E_entropy(-TS) -0.0004635210 -0.0063065271 + E_descf 0.0000000000 0.0000000000 + E_exx 0.0000000000 0.0000000000 + E_Fermi 0.0342773968 0.4663679095 +---------------------------------------------------------- + + + charge density convergence is achieved + final etot is -1936.9856227 eV + EFERMI = 0.46636790945 eV + + STATE ENERGY(eV) AND OCCUPATIONS NSPIN == 2 +SPIN UP : + 1/2 kpoint (Cartesian) = 0.0000 0.0000 0.0000 (893 pws) + 1 -17.7025 0.333333 + 2 -4.59882 0.333333 + 3 -4.48702 0.333333 + 4 -4.48147 0.333333 + 5 -4.33746 0.333333 + 6 -4.33126 0.333333 + 7 -2.96724 0.333333 + 8 -2.55522 0.333333 + 9 -2.43500 0.333333 + 10 -2.06949 0.333333 + 11 6.19551 0.00000 + 12 10.7575 0.00000 + 13 15.5015 0.00000 + 14 15.5549 0.00000 + 15 23.5757 0.00000 + 16 23.5948 0.00000 + 17 25.1721 0.00000 + 18 26.8978 0.00000 + 19 31.2662 0.00000 + 20 31.2667 0.00000 + 21 33.9239 0.00000 + 22 34.1543 0.00000 + 23 42.5429 0.00000 + 24 42.5431 0.00000 + + 2/2 kpoint (Cartesian) = 0.33333 0.19246 0.0000 (885 pws) + 1 -17.5271 0.666667 + 2 -4.60169 0.666667 + 3 -4.48965 0.666667 + 4 -4.42403 0.666667 + 5 -4.35548 0.666667 + 6 -4.31050 0.666667 + 7 -3.48370 0.666667 + 8 -3.13075 0.666667 + 9 -1.99545 0.666667 + 10 0.140729 0.658654 + 11 6.98624 0.00000 + 12 7.79735 0.00000 + 13 12.5109 0.00000 + 14 12.8264 0.00000 + 15 17.0254 0.00000 + 16 18.7928 0.00000 + 17 22.1240 0.00000 + 18 27.7362 0.00000 + 19 27.7983 0.00000 + 20 32.2838 0.00000 + 21 33.8717 0.00000 + 22 34.8442 0.00000 + 23 44.6873 0.00000 + 24 45.9661 0.00000 + +SPIN DOWN : + 1/2 kpoint (Cartesian) = 0.0000 0.0000 0.0000 (893 pws) + 1 -14.6585 0.333333 + 2 -4.52650 0.333333 + 3 -4.44075 0.333333 + 4 -4.43523 0.333333 + 5 -4.29202 0.333333 + 6 -4.28421 0.333333 + 7 -1.78718 0.333333 + 8 -0.947410 0.333333 + 9 0.870330 0.000853653 + 10 1.06811 5.08182e-06 + 11 6.79068 0.00000 + 12 11.5147 0.00000 + 13 15.7693 0.00000 + 14 15.7810 0.00000 + 15 23.9664 0.00000 + 16 24.0061 0.00000 + 17 25.6603 0.00000 + 18 27.3078 0.00000 + 19 31.4681 0.00000 + 20 31.4747 0.00000 + 21 35.9897 0.00000 + 22 36.1264 0.00000 + 23 44.9479 0.00000 + 24 44.9594 0.00000 + + 2/2 kpoint (Cartesian) = 0.33333 0.19246 0.0000 (885 pws) + 1 -14.4180 0.666667 + 2 -4.55358 0.666667 + 3 -4.42144 0.666667 + 4 -4.34051 0.666667 + 5 -4.31573 0.666667 + 6 -4.26983 0.666667 + 7 -0.959860 0.666667 + 8 -0.337689 0.666667 + 9 0.813142 0.00542077 + 10 0.869628 0.00173321 + 11 7.33824 0.00000 + 12 8.13795 0.00000 + 13 12.8109 0.00000 + 14 13.9302 0.00000 + 15 17.3526 0.00000 + 16 19.0843 0.00000 + 17 23.2854 0.00000 + 18 28.0244 0.00000 + 19 29.7367 0.00000 + 20 32.9427 0.00000 + 21 34.4375 0.00000 + 22 35.1991 0.00000 + 23 46.1806 0.00000 + 24 48.1360 0.00000 + + correction force for each atom along direction 1 is -0.00291807 + correction force for each atom along direction 2 is -0.00168508 + correction force for each atom along direction 3 is -1.81361e-12 +------------------------------------------------------------------------------------------ + TOTAL-FORCE (eV/Angstrom) +------------------------------------------------------------------------------------------ + Zn1 -0.2709519327 -0.1564259419 0.0000000000 + O1 0.2709519327 0.1564259419 0.0000000000 +------------------------------------------------------------------------------------------ + + + + -------------------------------------------- + !FINAL_ETOT_IS -1936.985622730090 eV + -------------------------------------------- diff --git a/interfaces/ASE_interface/abacuslite/io/testfiles/lcao-symm1-nspin1-multik-scf b/interfaces/ASE_interface/abacuslite/io/testfiles/lcao-symm1-nspin1-multik-scf new file mode 100644 index 0000000000..c3ae15baf5 --- /dev/null +++ b/interfaces/ASE_interface/abacuslite/io/testfiles/lcao-symm1-nspin1-multik-scf @@ -0,0 +1,135 @@ + READING UNITCELL INFORMATION + Number of elements = 2 + Lattice constant (Bohr) = 6.1416 + Lattice constant (Angstrom) = 3.24999 + + TOTAL ATOM NUMBER = 2 + + DIRECT COORDINATES + atom x y z mag + Zn 0.000000000000 0.000000000000 0.000000000000 0.0000 + O 0.333329999999 0.666670000001 0.500000000000 0.0000 + + ATOMIC VELOCITIES + atom vx vy vz + Zn 0 0 0 + O 0 0 0 + + Cell volume (Bohr^3) = 320.983 + Cell volume (A^3) = 47.5648 + + Lattice vectors: (Cartesian coordinate: in unit of a_0) + +1 +0 +0 + -0.5 +0.866 +0 + +0 +0 +1.6 + Reciprocal vectors: (Cartesian coordinate: in unit of 2 pi/a_0) + +1 +0.577367 -0 + -0 +1.15473 -0 + +0 -0 +0.625 + + #ENERGY SOLVER# ksdft_lcao + + SETUP K-POINTS + nspin = 1 + Input type of k points = Monkhorst-Pack(Gamma) + nkstot = 2 + Right-handed lattice = 1 + + For reciprocal-space lattice + Bravais lattice type = 11 + Bravais lattice name = 11. Orthorhombic C (base-centered) + Right-handed lattice = 1 + + For k-vectors + Bravais lattice type = 12 + Bravais lattice name = 12. Monoclinic P (simple) + Right-handed lattice = 1 + Number of rotation matrices = 8 + Number of irreducible k-points = 2 + + K-POINTS REDUCTION ACCORDING TO SYMMETRY + IBZ DIRECT_X DIRECT_Y DIRECT_Z WEIGHT ibz2bz + 1 0.00000000 0.00000000 0.00000000 0.5000 0 + 2 0.50000000 0.00000000 0.00000000 0.5000 1 + + nkstot now = 2 + K-POINTS DIRECT COORDINATES + KPOINTS DIRECT_X DIRECT_Y DIRECT_Z WEIGHT + 1 0.00000000 0.00000000 0.00000000 0.5000 + 2 0.50000000 0.00000000 0.00000000 0.5000 + + + Number of k-points in this process = 2 + Minimum distributed k-point number = 2 + + K-POINTS CARTESIAN COORDINATES + KPOINTS CARTESIAN_X CARTESIAN_Y CARTESIAN_Z WEIGHT + 1 0.00000000 0.00000000 0.00000000 1.0000 + 2 0.50000000 0.28868360 0.00000000 1.0000 + + + K-POINTS DIRECT COORDINATES + KPOINTS DIRECT_X DIRECT_Y DIRECT_Z WEIGHT + 1 0.00000000 0.00000000 0.00000000 1.0000 + 2 0.50000000 0.00000000 0.00000000 1.0000 + + DONE : INIT K-POINTS Time : 0.172973 (SEC) + + ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + --> #ION MOVE# 1 #ELEC ITER# 1 + ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + Electron density deviation 0.0893377 + ---------------------------------------------------------- + Energy Rydberg eV + ---------------------------------------------------------- + E_KohnSham -142.2578934767 -1935.5179367603 + E_Harris -143.4816580020 -1952.1681073148 + E_Fermi -0.0852280930 -1.1595876945 + E_gap(k) 0.3010005903 4.0953231295 + ---------------------------------------------------------- + + + ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + --> #ION MOVE# 1 #ELEC ITER# 2 + ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + Electron density deviation 0.0527619 + ---------------------------------------------------------- + Energy Rydberg eV + ---------------------------------------------------------- + E_KohnSham -142.3016957759 -1936.1138976154 + E_Harris -143.6433224427 -1954.3676648718 + E_Fermi 0.1242110447 1.6899779627 + E_gap(k) 0.0037426876 0.0509218768 + ---------------------------------------------------------- + + + ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + --> #ION MOVE# 1 #ELEC ITER# 3 + ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + Electron density deviation 0.0364934 + ---------------------------------------------------------- + Energy Rydberg eV + ---------------------------------------------------------- + E_KohnSham -142.2855446344 -1935.8941500616 + E_KS(sigma->0) -142.2812283423 -1935.8354238938 + E_Harris -143.1222058877 -1947.2775104019 + E_band -6.0716994722 -82.6097093654 + E_one_elec -82.4655761013 -1122.0017238299 + E_Hartree 52.4529512574 713.6590140163 + E_xc -22.3825551768 -304.5302862042 + E_Ewald -89.8817320294 -1222.9037017083 + E_entropy(-TS) -0.0086325843 -0.1174523356 + E_descf 0.0000000000 0.0000000000 + E_localpp -62.8392385880 -854.9717027777 + E_exx 0.0000000000 0.0000000000 + E_Fermi 0.1211730503 1.6486439277 + E_gap(k) 0.0066246245 0.0901326401 + ---------------------------------------------------------- + + #SCF IS CONVERGED# + #TOTAL ENERGY# -1935.8941501 eV + Write eigenvalues and occupations to file: OUT.ABACUS/eig_occ.txt + + -------------------------------------------- + !FINAL_ETOT_IS -1935.894150061628 eV + -------------------------------------------- diff --git a/interfaces/ASE_interface/abacuslite/io/testfiles/lcao-symm1-nspin1-multik-scf_ b/interfaces/ASE_interface/abacuslite/io/testfiles/lcao-symm1-nspin1-multik-scf_ new file mode 100644 index 0000000000..264f7a2790 --- /dev/null +++ b/interfaces/ASE_interface/abacuslite/io/testfiles/lcao-symm1-nspin1-multik-scf_ @@ -0,0 +1,259 @@ +NBANDS = 24 + READING UNITCELL INFORMATION + ntype = 2 + lattice constant (Bohr) = 6.1416 + lattice constant (Angstrom) = 3.24999 + + TOTAL ATOM NUMBER = 2 +DIRECT COORDINATES + atom x y z mag vx vy vz +taud_Zn1 0.0000000000 0.0000000000 0.0000000000 0.0000 0.0000000000 0.0000000000 0.0000000000 +taud_O1 0.3333300000 0.6666700000 0.5000000000 0.0000 0.0000000000 0.0000000000 0.0000000000 + + + + Volume (Bohr^3) = 320.983 + Volume (A^3) = 47.5648 + + Lattice vectors: (Cartesian coordinate: in unit of a_0) + +1 +0 +0 + -0.5 +0.866 +0 + +0 +0 +1.6 + Reciprocal vectors: (Cartesian coordinate: in unit of 2 pi/a_0) + +1 +0.577367 -0 + -0 +1.15473 -0 + +0 -0 +0.625 + The esolver type has been set to : ksdft_lcao + + SETUP K-POINTS + nspin = 1 + Input type of k points = Monkhorst-Pack(Gamma) + nkstot = 3 + right hand lattice = 1 +(for reciprocal lattice: ) + BRAVAIS TYPE = 11 + BRAVAIS LATTICE NAME = 11. Orthorhombic C (base-centered) + ibrav = 11 + right hand lattice = 1 +(for k-lattice: ) + BRAVAIS TYPE = 12 + BRAVAIS LATTICE NAME = 12. Monoclinic P (simple) + ibrav = 12 + right hand lattice = 1 + ROTATION MATRICES = 8 + nkstot_ibz = 2 +K-POINTS REDUCTION ACCORDING TO SYMMETRY + IBZ DIRECT_X DIRECT_Y DIRECT_Z WEIGHT ibz2bz + 1 0.00000000 0.00000000 0.00000000 0.3333 0 + 2 0.33333333 0.00000000 0.00000000 0.6667 1 + + nkstot now = 2 +K-POINTS DIRECT COORDINATES + KPOINTS DIRECT_X DIRECT_Y DIRECT_Z WEIGHT + 1 0.00000000 0.00000000 0.00000000 0.3333 + 2 0.33333333 0.00000000 0.00000000 0.6667 + + + k-point number in this process = 2 + minimum distributed K point number = 2 + +K-POINTS CARTESIAN COORDINATES + KPOINTS CARTESIAN_X CARTESIAN_Y CARTESIAN_Z WEIGHT + 1 0.00000000 0.00000000 0.00000000 0.6667 + 2 0.33333333 0.19245574 0.00000000 1.3333 + + +K-POINTS DIRECT COORDINATES + KPOINTS DIRECT_X DIRECT_Y DIRECT_Z WEIGHT + 1 0.00000000 0.00000000 0.00000000 0.6667 + 2 0.33333333 0.00000000 0.00000000 1.3333 + + DONE : INIT K-POINTS Time : 0.175334 (SEC) + + LCAO ALGORITHM --------------- ION= 1 ELEC= 1-------------------------------- + + Density error is 0.116736119788 +---------------------------------------------------------- + Energy Rydberg eV +---------------------------------------------------------- + E_KohnSham -142.1079725377 -1933.4781577397 + E_Harris -143.5030834324 -1952.4596152498 + E_Fermi -0.0839876907 -1.1427111550 +---------------------------------------------------------- + + + LCAO ALGORITHM --------------- ION= 1 ELEC= 2-------------------------------- + + Density error is 0.109138222131 +---------------------------------------------------------- + Energy Rydberg eV +---------------------------------------------------------- + E_KohnSham -142.3154389289 -1936.3008828043 + E_Harris -143.8122525428 -1956.6660767972 + E_Fermi 0.1798485039 2.4469644292 +---------------------------------------------------------- + + + LCAO ALGORITHM --------------- ION= 1 ELEC= 3-------------------------------- + + Density error is 0.0699576059847 +---------------------------------------------------------- + Energy Rydberg eV +---------------------------------------------------------- + E_KohnSham -142.3463092814 -1936.7208954978 + E_Harris -142.9090540038 -1944.3774302413 + E_Fermi 0.0604391077 0.8223162464 +---------------------------------------------------------- + + + LCAO ALGORITHM --------------- ION= 1 ELEC= 4-------------------------------- + Energy (eV) & Occupations for spin=1 K-point=1 + 1 -14.1855 0.666667 + 2 -5.40800 0.666667 + 3 -5.35442 0.666667 + 4 -5.35098 0.666667 + 5 -5.16667 0.666667 + 6 -5.13296 0.666667 + 7 -2.53068 0.666667 + 8 -0.450756 0.666667 + 9 1.25776 0.0262682 + 10 1.27497 0.0201777 + 11 6.70135 0.00000 + 12 11.8000 0.00000 + 13 14.8582 0.00000 + 14 14.8935 0.00000 + 15 23.1672 0.00000 + 16 23.1756 0.00000 + 17 25.6709 0.00000 + 18 27.0330 0.00000 + 19 31.0530 0.00000 + 20 31.0704 0.00000 + 21 36.3368 0.00000 + 22 36.3404 0.00000 + 23 45.4171 0.00000 + 24 45.4249 0.00000 + Energy (eV) & Occupations for spin=1 K-point=2 + 1 -13.9469 1.33333 + 2 -5.45027 1.33333 + 3 -5.29277 1.33333 + 4 -5.20247 1.33333 + 5 -5.18723 1.33333 + 6 -5.15617 1.33333 + 7 -1.06442 1.33333 + 8 0.249999 1.33333 + 9 0.623862 1.32772 + 10 1.01520 0.625831 + 11 6.53028 0.00000 + 12 7.87336 0.00000 + 13 11.9322 0.00000 + 14 14.2512 0.00000 + 15 17.0724 0.00000 + 16 18.3473 0.00000 + 17 23.5221 0.00000 + 18 27.6028 0.00000 + 19 29.9496 0.00000 + 20 33.0442 0.00000 + 21 34.1542 0.00000 + 22 34.4176 0.00000 + 23 46.5051 0.00000 + 24 48.5929 0.00000 + + Density error is 0.0750606787978 +---------------------------------------------------------- + Energy Rydberg eV +---------------------------------------------------------- + E_KohnSham -142.2614224469 -1935.5659508624 + E_KS(sigma->0) -142.2579788666 -1935.5190985488 + E_Harris -142.8938709499 -1944.1708541959 + E_band -6.0463316667 -82.2645626649 + E_one_elec -82.7951856427 -1126.4862917089 + E_Hartree 53.2371174712 724.3281427039 + E_xc -22.3749457121 -304.4267541254 + E_Ewald -89.8817320293 -1222.9037017083 + E_entropy(-TS) -0.0068871606 -0.0937046273 + E_descf -0.4397893733 -5.9836413965 + E_exx 0.0000000000 0.0000000000 + E_Fermi 0.0738009554 1.0041135109 +---------------------------------------------------------- + + + LCAO ALGORITHM --------------- ION= 1 ELEC= 5-------------------------------- + + Density error is 0.0745845715339 +---------------------------------------------------------- + Energy Rydberg eV +---------------------------------------------------------- + E_KohnSham -142.2386028344 -1935.2554741064 + E_KS(sigma->0) -142.2353299761 -1935.2109445858 + E_Harris -142.9041261418 -1944.3103832391 + E_band -6.1936955078 -84.2695505825 + E_one_elec -82.6362478781 -1124.3238324822 + E_Hartree 52.8462564148 719.0102052107 + E_xc -22.3898719929 -304.6298365935 + E_Ewald -89.8817320293 -1222.9037017083 + E_entropy(-TS) -0.0065457165 -0.0890590413 + E_descf -0.1704616325 -2.3192494919 + E_exx 0.0000000000 0.0000000000 + E_Fermi -0.0124380091 -0.1692277961 +---------------------------------------------------------- + + !! convergence has not been achieved @_@ + + STATE ENERGY(eV) AND OCCUPATIONS NSPIN == 1 + 1/2 kpoint (Cartesian) = 0.0000 0.0000 0.0000 (893 pws) + 1 -15.5135 0.666667 + 2 -4.89219 0.666667 + 3 -4.81916 0.666667 + 4 -4.81485 0.666667 + 5 -4.64692 0.666667 + 6 -4.63262 0.666667 + 7 -2.19547 0.666667 + 8 -1.24988 0.666667 + 9 -0.220439 0.425770 + 10 -0.142710 0.284736 + 11 6.51116 0.00000 + 12 11.3767 0.00000 + 13 15.2976 0.00000 + 14 15.3258 0.00000 + 15 23.5074 0.00000 + 16 23.5115 0.00000 + 17 25.4888 0.00000 + 18 27.0509 0.00000 + 19 31.2293 0.00000 + 20 31.2429 0.00000 + 21 35.4387 0.00000 + 22 35.4738 0.00000 + 23 44.3435 0.00000 + 24 44.3518 0.00000 + + 2/2 kpoint (Cartesian) = 0.33333 0.19246 0.0000 (885 pws) + 1 -15.3000 1.33333 + 2 -4.92301 1.33333 + 3 -4.78276 1.33333 + 4 -4.69716 1.33333 + 5 -4.65638 1.33333 + 6 -4.64658 1.33333 + 7 -1.61044 1.33333 + 8 -0.684688 1.33310 + 9 -0.432982 1.28827 + 10 0.272787 0.00146112 + 11 6.87354 0.00000 + 12 7.89763 0.00000 + 13 12.3328 0.00000 + 14 13.6686 0.00000 + 15 17.1208 0.00000 + 16 18.6712 0.00000 + 17 22.9805 0.00000 + 18 27.7747 0.00000 + 19 29.1320 0.00000 + 20 32.7679 0.00000 + 21 34.1113 0.00000 + 22 34.7323 0.00000 + 23 45.8107 0.00000 + 24 47.8444 0.00000 + + + + -------------------------------------------- + !FINAL_ETOT_IS -1935.255474106441 eV + -------------------------------------------- diff --git a/interfaces/ASE_interface/abacuslite/io/testfiles/nspin4-gamma-eigocc b/interfaces/ASE_interface/abacuslite/io/testfiles/nspin4-gamma-eigocc new file mode 100644 index 0000000000..61c4523987 --- /dev/null +++ b/interfaces/ASE_interface/abacuslite/io/testfiles/nspin4-gamma-eigocc @@ -0,0 +1,80 @@ +1 # ionic step + Electronic state energy (eV) and occupations + Spin number 4 + spin=1 k-point=1/1 Cartesian=0.0000000 0.0000000 0.0000000 (1837 plane wave) + 1 -8.734940678442698 1.000000000000000 + 2 -8.728777002878010 1.000000000000000 + 3 -8.583140144506753 1.000000000000000 + 4 -8.583077746824502 1.000000000000000 + 5 -8.301787459072498 1.000000000000000 + 6 -8.176539969169429 1.000000000000000 + 7 -8.077898701959860 1.000000000000000 + 8 -7.986685540799232 1.000000000000000 + 9 -7.969246287912650 1.000000000000000 + 10 -7.907408063939304 1.000000000000000 + 11 -5.541869059615939 1.000000000000000 + 12 -4.357379859797868 1.000000000000000 + 13 7.011672764486192 0.9999999999999913 + 14 7.129689365983718 0.9999999999991458 + 15 7.400082052806789 0.9999999920308935 + 16 7.517377326658410 0.9999997691069151 + 17 8.296062675346352 0.8400373309688349 + 18 8.378865752086258 0.7137156121674773 + 19 8.525822636111188 0.4209425884588087 + 20 8.863565149727185 0.02530470726517270 + 21 10.48649250009576 0.000000000000000 + 22 10.56484955504304 0.000000000000000 + 23 10.62991472480851 0.000000000000000 + 24 11.39712328151007 0.000000000000000 + 25 11.46192510341145 0.000000000000000 + 26 11.51574344960248 0.000000000000000 + 27 14.25580569083522 0.000000000000000 + 28 14.87389558552076 0.000000000000000 + 29 17.32917310634743 0.000000000000000 + 30 17.31225104327670 0.000000000000000 + 31 18.04539004951853 0.000000000000000 + 32 18.06273156696538 0.000000000000000 + 33 18.42710492468469 0.000000000000000 + 34 18.41424567719280 0.000000000000000 + 35 18.43990861265023 0.000000000000000 + +2 # ionic step + Electronic state energy (eV) and occupations + Spin number 4 + spin=1 k-point=1/1 Cartesian=0.0000000 0.0000000 0.0000000 (1837 plane wave) + 1 -8.466362211457593 1.000000000000000 + 2 -8.463258712106830 1.000000000000000 + 3 -8.340719290310812 1.000000000000000 + 4 -8.325858905870946 1.000000000000000 + 5 -8.035496858623096 1.000000000000000 + 6 -8.014001443588910 1.000000000000000 + 7 -7.921957467904629 1.000000000000000 + 8 -7.866261138019777 1.000000000000000 + 9 -7.861151468863132 1.000000000000000 + 10 -7.799837322305936 1.000000000000000 + 11 -4.865583090346724 1.000000000000000 + 12 -3.799464877079010 1.000000000000000 + 13 7.665156473208746 0.9999999999999400 + 14 7.758111682103797 0.9999999999979499 + 15 8.164837790696147 0.9999992817493955 + 16 8.303906437082865 0.9999790833094717 + 17 8.880717996739317 0.8641911371504127 + 18 9.004549868821069 0.6757235754682915 + 19 9.139368593882267 0.4032677506747625 + 20 9.396621011999770 0.05683917172193370 + 21 10.81735546786727 0.000000000000000 + 22 10.92920118022401 0.000000000000000 + 23 11.02557116024171 0.000000000000000 + 24 11.67191711515016 0.000000000000000 + 25 11.77052619986442 0.000000000000000 + 26 11.86002669905380 0.000000000000000 + 27 14.55394142830726 0.000000000000000 + 28 15.16881924351294 0.000000000000000 + 29 17.71162310878152 0.000000000000000 + 30 17.71356168553689 0.000000000000000 + 31 18.34928080656365 0.000000000000000 + 32 18.37011408489840 0.000000000000000 + 33 18.58251280421910 0.000000000000000 + 34 18.68093058993140 0.000000000000000 + 35 18.73166245708077 0.000000000000000 + diff --git a/interfaces/ASE_interface/abacuslite/io/testfiles/nspin4-gamma-mddump b/interfaces/ASE_interface/abacuslite/io/testfiles/nspin4-gamma-mddump new file mode 100644 index 0000000000..20b0d89394 --- /dev/null +++ b/interfaces/ASE_interface/abacuslite/io/testfiles/nspin4-gamma-mddump @@ -0,0 +1,22 @@ +MDSTEP: 0 +LATTICE_CONSTANT: 0.529177000000 Angstrom +LATTICE_VECTORS + 5.341970000000 5.341970000000 0.000000000000 + 0.000000000000 5.341970000000 5.341970000000 + 5.341970000000 0.000000000000 5.341970000000 +INDEX LABEL POSITION (Angstrom) FORCE (eV/Angstrom) VELOCITY (Angstrom/fs) + 0 As 1.413423737926 1.413423737926 1.413423737926 -0.510276079473 -0.577439006657 1.080335628147 0.000000000000 0.000000000000 0.000000000000 + 1 Ga 0.000000000000 0.000000000000 0.000000000000 0.510276079473 0.577439006657 -1.080335628147 0.023158616673 -0.007189987141 0.012660347088 + + +MDSTEP: 1 +LATTICE_CONSTANT: 0.529177000000 Angstrom +LATTICE_VECTORS + 5.341970000000 5.341970000000 0.000000000000 + 0.000000000000 5.341970000000 5.341970000000 + 5.341970000000 0.000000000000 5.341970000000 +INDEX LABEL POSITION (Angstrom) FORCE (eV/Angstrom) VELOCITY (Angstrom/fs) + 0 As 1.413423737926 1.413423737926 1.413423737926 0.119129956473 0.267898856044 1.503341701318 0.000000000000 0.000000000000 0.000000000000 + 1 Ga 0.025620321279 2.822443204757 2.834296002714 -0.119129956473 -0.267898856044 -1.503341701318 0.025405288844 -0.005778495333 0.000198830238 + + diff --git a/interfaces/ASE_interface/abacuslite/io/testfiles/pw-symm0-nspin4-gamma-md b/interfaces/ASE_interface/abacuslite/io/testfiles/pw-symm0-nspin4-gamma-md new file mode 100644 index 0000000000..fc0508ec7c --- /dev/null +++ b/interfaces/ASE_interface/abacuslite/io/testfiles/pw-symm0-nspin4-gamma-md @@ -0,0 +1,205 @@ + READING UNITCELL INFORMATION + Number of elements = 2 + Lattice constant (Bohr) = 1 + Lattice constant (Angstrom) = 0.529177 + + TOTAL ATOM NUMBER = 2 + + DIRECT COORDINATES + atom x y z mag + As 0.250000000000 0.250000000000 0.250000000000 1.7321 + Ga 0.000000000000 0.000000000000 0.000000000000 1.7321 + + ATOMIC VELOCITIES + atom vx vy vz + As 0 0 0 + Ga 0 0 0 + + Cell volume (Bohr^3) = 304.884 + Cell volume (A^3) = 45.1791 + + Lattice vectors: (Cartesian coordinate: in unit of a_0) + +5.34197 +5.34197 +0 + +0 +5.34197 +5.34197 + +5.34197 +0 +5.34197 + Reciprocal vectors: (Cartesian coordinate: in unit of 2 pi/a_0) + +0.0935984 +0.0935984 -0.0935984 + -0.0935984 +0.0935984 +0.0935984 + +0.0935984 -0.0935984 +0.0935984 + + #ENERGY SOLVER# ksdft_pw + + SETUP K-POINTS + nspin = 4 + Input type of k points = Monkhorst-Pack(Gamma) + nkstot = 1 + K-POINTS DIRECT COORDINATES + KPOINTS DIRECT_X DIRECT_Y DIRECT_Z WEIGHT + 1 0.00000000 0.00000000 0.00000000 1.0000 + + + Number of k-points in this process = 1 + Minimum distributed k-point number = 1 + + K-POINTS CARTESIAN COORDINATES + KPOINTS CARTESIAN_X CARTESIAN_Y CARTESIAN_Z WEIGHT + 1 0.00000000 0.00000000 0.00000000 1.0000 + + + K-POINTS DIRECT COORDINATES + KPOINTS DIRECT_X DIRECT_Y DIRECT_Z WEIGHT + 1 0.00000000 0.00000000 0.00000000 1.0000 + + ================================================================ + STEP OF MOLECULAR DYNAMICS: 1 + ================================================================ + DONE : INIT SCF Time : 0.290857 (SEC) + + + ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + --> #ION MOVE# 1 #ELEC ITER# 1 + ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + Average iterative diagonalization steps for k-points is 11 + current threshold of diagonalizaiton is 0.01 + Total magnetism (Bohr mag/cell) = [ 0, 0, 1.38648 ] + Absolute magnetism (Bohr mag/cell) = 1.40875 + Electron density deviation 0.429273 + Diago Threshold = 0.01 + ---------------------------------------------------------- + Energy Rydberg eV + ---------------------------------------------------------- + E_KohnSham -142.5782130987 -1939.8761088010 + E_Harris -145.6223677865 -1981.2939581485 + E_Fermi 0.5588592724 7.6036704845 + E_gap(k) 0.0058317055 0.0793444239 + ---------------------------------------------------------- + + + ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + --> #ION MOVE# 1 #ELEC ITER# 2 + ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + Average iterative diagonalization steps for k-points is 2 + current threshold of diagonalizaiton is 0.00238485 + Total magnetism (Bohr mag/cell) = [ 0, 0, 1.84938 ] + Absolute magnetism (Bohr mag/cell) = 1.86368 + Electron density deviation 0.140043 + Diago Threshold = 0.00238485 + ---------------------------------------------------------- + Energy Rydberg eV + ---------------------------------------------------------- + E_KohnSham -142.6160890474 -1940.3914375207 + E_Harris -143.8327593413 -1956.9450861047 + E_Fermi 0.5749625181 7.8227663831 + E_gap(k) 0.0083010040 0.1129409531 + ---------------------------------------------------------- + + + ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + --> #ION MOVE# 1 #ELEC ITER# 3 + ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + Average iterative diagonalization steps for k-points is 2 + current threshold of diagonalizaiton is 0.000778015 + Total magnetism (Bohr mag/cell) = [ 0, 0, 1.98288 ] + Absolute magnetism (Bohr mag/cell) = 1.9839 + Electron density deviation 0.0302081 + Diago Threshold = 0.000778015 + ---------------------------------------------------------- + Energy Rydberg eV + ---------------------------------------------------------- + E_KohnSham -142.6334316878 -1940.6273962477 + E_KS(sigma->0) -142.6261228330 -1940.5279541766 + E_Harris -142.2406248908 -1935.2829855950 + E_band -3.4638156295 -47.1276293822 + E_one_elec -81.1661188150 -1104.3217004290 + E_Hartree 53.0934884635 722.3739698008 + E_xc -21.5360282956 -293.0126971088 + E_Ewald -93.0101553311 -1265.4680843686 + E_entropy(-TS) -0.0146177096 -0.1988841421 + E_descf 0.0000000000 0.0000000000 + E_localpp -129.5971604899 -1763.2598272824 + E_exx 0.0000000000 0.0000000000 + E_Fermi 0.6238150698 8.4874394469 + E_gap(k) 0.0108011279 0.1469568840 + ---------------------------------------------------------- + + #SCF IS CONVERGED# + #TOTAL ENERGY# -1940.6273962 eV + Write eigenvalues and occupations to file: OUT.ABACUS/eig_occ.txt + + + + #TOTAL-FORCE (eV/Angstrom)# + ------------------------------------------------------------------------- + Atoms Force_x Force_y Force_z + ------------------------------------------------------------------------- + As1 -0.5102760465 -0.5774389693 1.0803355583 + Ga1 0.5102760465 0.5774389693 -1.0803355583 + ------------------------------------------------------------------------- + ------------------------------------------------------------------------------------------------ + Energy (Ry) Potential (Ry) Kinetic (Ry) Temperature (K) + -142.63058 -142.63343 0.0028501339 300 + ------------------------------------------------------------------------------------------------ + + ================================================================ + STEP OF MOLECULAR DYNAMICS: 2 + ================================================================ + NEW-OLD atomic charge density approx. for the potential ! + DONE : INIT SCF Time : 1.06374 (SEC) + + + ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + --> #ION MOVE# 2 #ELEC ITER# 1 + ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + Average iterative diagonalization steps for k-points is 2 + current threshold of diagonalizaiton is 0.01 + Notice: Threshold on eigenvalues was too large. + hsover_error=0.18 > DRHO=0.00485537 + Origin diag ethr = 0.01 + New diag ethr = 2.69743e-05 + Average iterative diagonalization steps for k-points is 8 + current threshold of diagonalizaiton is 2.69743e-05 + Total magnetism (Bohr mag/cell) = [ 0, 0, 1.97579 ] + Absolute magnetism (Bohr mag/cell) = 1.97697 + Electron density deviation 0.0258483 + Diago Threshold = 2.69743e-05 + ---------------------------------------------------------- + Energy Rydberg eV + ---------------------------------------------------------- + E_KohnSham -142.6337043769 -1940.6311063727 + E_KS(sigma->0) -142.6260746147 -1940.5272981334 + E_Harris -141.9732021042 -1931.6445119220 + E_band -2.9318001010 -39.8891867701 + E_one_elec -81.8435686073 -1113.5388777125 + E_Hartree 53.8117002024 732.1457418199 + E_xc -21.5787355027 -293.5937584713 + E_Ewald -93.0078409450 -1265.4365955301 + E_entropy(-TS) -0.0152595243 -0.2076164786 + E_descf 0.0000000000 0.0000000000 + E_localpp -130.0075565406 -1768.8435520088 + E_exx 0.0000000000 0.0000000000 + E_Fermi 0.6682675820 9.0922469042 + E_gap(k) 0.0099089900 0.1348187251 + ---------------------------------------------------------- + + #SCF IS CONVERGED# + #TOTAL ENERGY# -1940.6311064 eV + Write eigenvalues and occupations to file: OUT.ABACUS/eig_occ.txt + + + + #TOTAL-FORCE (eV/Angstrom)# + ------------------------------------------------------------------------- + Atoms Force_x Force_y Force_z + ------------------------------------------------------------------------- + As1 0.1191299488 0.2678988387 1.5033416041 + Ga1 -0.1191299488 -0.2678988387 -1.5033416041 + ------------------------------------------------------------------------- + ------------------------------------------------------------------------------------------------ + Energy (Ry) Potential (Ry) Kinetic (Ry) Temperature (K) + -142.63112 -142.6337 0.0025856408 272.15993 + ------------------------------------------------------------------------------------------------ + + + -------------------------------------------- + !FINAL_ETOT_IS -1940.631106372724 eV + -------------------------------------------- diff --git a/interfaces/ASE_interface/abacuslite/io/testfiles/pw-symm0-nspin4-gamma-md_ b/interfaces/ASE_interface/abacuslite/io/testfiles/pw-symm0-nspin4-gamma-md_ new file mode 100644 index 0000000000..23c2d9a4ae --- /dev/null +++ b/interfaces/ASE_interface/abacuslite/io/testfiles/pw-symm0-nspin4-gamma-md_ @@ -0,0 +1,388 @@ +NBANDS = 35 + READING UNITCELL INFORMATION + ntype = 2 + lattice constant (Bohr) = 1 + lattice constant (Angstrom) = 0.529177 + + TOTAL ATOM NUMBER = 2 +DIRECT COORDINATES + atom x y z mag vx vy vz +taud_As1 0.2500000000 0.2500000000 0.2500000000 1.7321 0.0000000000 0.0000000000 0.0000000000 +taud_Ga1 0.0000000000 0.0000000000 0.0000000000 1.7321 0.0000000000 0.0000000000 0.0000000000 + + + + Volume (Bohr^3) = 304.884 + Volume (A^3) = 45.1791 + + Lattice vectors: (Cartesian coordinate: in unit of a_0) + +5.34197 +5.34197 +0 + +0 +5.34197 +5.34197 + +5.34197 +0 +5.34197 + Reciprocal vectors: (Cartesian coordinate: in unit of 2 pi/a_0) + +0.0935984 +0.0935984 -0.0935984 + -0.0935984 +0.0935984 +0.0935984 + +0.0935984 -0.0935984 +0.0935984 + The esolver type has been set to : ksdft_pw + + SETUP K-POINTS + nspin = 4 + Input type of k points = Monkhorst-Pack(Gamma) + nkstot = 1 +K-POINTS DIRECT COORDINATES + KPOINTS DIRECT_X DIRECT_Y DIRECT_Z WEIGHT + 1 0.00000000 0.00000000 0.00000000 1.0000 + + + k-point number in this process = 1 + minimum distributed K point number = 1 + +K-POINTS CARTESIAN COORDINATES + KPOINTS CARTESIAN_X CARTESIAN_Y CARTESIAN_Z WEIGHT + 1 0.00000000 0.00000000 0.00000000 1.0000 + + +K-POINTS DIRECT COORDINATES + KPOINTS DIRECT_X DIRECT_Y DIRECT_Z WEIGHT + 1 0.00000000 0.00000000 0.00000000 1.0000 + + DONE : INIT K-POINTS Time : 0.062681 (SEC) + + ------------------------------------------- + STEP OF MOLECULAR DYNAMICS : 0 + ------------------------------------------- + init_chg = atomic + DONE : INIT SCF Time : 0.344263 (SEC) + + + PW ALGORITHM --------------- ION= 1 ELEC= 1-------------------------------- +total magnetism (Bohr mag/cell) 0 0 1.43092 + absolute magnetism (Bohr mag/cell) = 1.46002 + + Density error is 0.425536171685 + Error Threshold = 0.01 +---------------------------------------------------------- + Energy Rydberg eV +---------------------------------------------------------- + E_KohnSham -142.5414819203 -1939.3763554796 + E_Harris -145.5088261529 -1979.7491449706 + E_Fermi 0.5470939917 7.4435956292 +---------------------------------------------------------- + + + PW ALGORITHM --------------- ION= 1 ELEC= 2-------------------------------- +total magnetism (Bohr mag/cell) 0 0 1.29536921409 + absolute magnetism (Bohr mag/cell) = 1.47327692817 + + Density error is 0.147809332734 + Error Threshold = 0.00236408984269 +---------------------------------------------------------- + Energy Rydberg eV +---------------------------------------------------------- + E_KohnSham -142.6162210470 -1940.3932334666 + E_Harris -143.6867081318 -1954.9579574558 + E_Fermi 0.5738478660 7.8076007634 +---------------------------------------------------------- + + + PW ALGORITHM --------------- ION= 1 ELEC= 3-------------------------------- +total magnetism (Bohr mag/cell) 0 0 1.90445147148 + absolute magnetism (Bohr mag/cell) = 1.92389538407 + + Density error is 0.044016528552 + Error Threshold = 0.000821162959636 +---------------------------------------------------------- + Energy Rydberg eV +---------------------------------------------------------- + E_KohnSham -142.6278099556 -1940.5509086572 + E_KS(sigma->0) -142.6217168267 -1940.4680073850 + E_Harris -142.2884165619 -1935.9332246392 + E_band -3.4602160123 -47.0786540781 + E_one_elec -81.1361343512 -1103.9137408700 + E_Hartree 53.0833187552 722.2356038215 + E_xc -21.5526527706 -293.2388846958 + E_Ewald -93.0101553311 -1265.4680843686 + E_entropy(-TS) -0.0121862579 -0.1658025443 + E_descf 0.0000000000 0.0000000000 + E_exx 0.0000000000 0.0000000000 + E_Fermi 0.6044100604 8.2234207503 +---------------------------------------------------------- + + + charge density convergence is achieved + final etot is -1940.5509087 eV + + STATE ENERGY(eV) AND OCCUPATIONS NSPIN == 4 + 1/1 kpoint (Cartesian) = 0.0000 0.0000 0.0000 (230 pws) + 1 -8.75727 1.00000 + 2 -8.71932 1.00000 + 3 -8.58843 1.00000 + 4 -8.56405 1.00000 + 5 -8.31527 1.00000 + 6 -8.08147 1.00000 + 7 -7.99239 1.00000 + 8 -7.87334 1.00000 + 9 -7.83653 1.00000 + 10 -7.77801 1.00000 + 11 -5.45404 1.00000 + 12 -4.60934 1.00000 + 13 6.99458 1.00000 + 14 7.16826 1.00000 + 15 7.42743 0.999982 + 16 7.81508 0.983090 + 17 7.88204 0.961984 + 18 8.12687 0.692099 + 19 8.29292 0.358984 + 20 8.73601 0.00386068 + 21 10.5767 0.00000 + 22 10.6695 0.00000 + 23 10.7736 0.00000 + 24 11.2484 0.00000 + 25 11.3392 0.00000 + 26 11.4112 0.00000 + 27 14.2930 0.00000 + 28 14.7540 0.00000 + 29 17.3699 0.00000 + 30 17.4624 0.00000 + 31 17.8797 0.00000 + 32 17.9894 0.00000 + 33 18.4671 0.00000 + 34 18.4688 0.00000 + 35 18.5138 0.00000 + + + +------------------------------------------------------------------------------------------ + TOTAL-FORCE (eV/Angstrom) +------------------------------------------------------------------------------------------ + As1 1.0712942948 2.1781413019 1.2152201133 + Ga1 -1.0712942948 -2.1781413019 -1.2152201133 +------------------------------------------------------------------------------------------ + + + + ------------------------------------------------------------------------------------------------ + Energy (Ry) Potential (Ry) Kinetic (Ry) Temperature (K) + -142.62496 -142.62781 0.0028501339 300.00000 + ------------------------------------------------------------------------------------------------ + + + + ------------------------------------------- + STEP OF MOLECULAR DYNAMICS : 1 + ------------------------------------------- + NEW-OLD atomic charge density approx. for the potential ! + DONE : INIT SCF Time : 1.27344 (SEC) + + + PW ALGORITHM --------------- ION=2 ELEC=1 -------------------------------- + Notice: Threshold on eigenvalues was too large. + hsover_error=0.180000 > DRHO=0.0154165 + Origin diag ethr = 0.0100000 + New diag ethr = 8.56474e-05 +total magnetism (Bohr mag/cell) 0.00000 0.00000 1.92056 + absolute magnetism (Bohr mag/cell) = 1.92336 + + Density error is 0.0450726236251 + Error Threshold = 8.56473592548e-05 +---------------------------------------------------------- + Energy Rydberg eV +---------------------------------------------------------- + E_KohnSham -142.6244218927 -1940.5048116970 + E_KS(sigma->0) -142.6165258278 -1940.3973802229 + E_Harris -141.7382337402 -1928.4476033223 + E_band -2.9490141284 -40.1233956284 + E_one_elec -82.0470893599 -1116.3079196092 + E_Hartree 54.0249296563 735.0468773755 + E_xc -21.5799670555 -293.6105146070 + E_Ewald -93.0065030040 -1265.4183919081 + E_entropy(-TS) -0.0157921297 -0.2148629482 + E_descf 0.0000000000 0.0000000000 + E_exx 0.0000000000 0.0000000000 + E_Fermi 0.6723961422 9.1484188472 +---------------------------------------------------------- + + + charge density convergence is achieved + final etot is -1940.5048117 eV + + STATE ENERGY(eV) AND OCCUPATIONS NSPIN == 4 + 1/1 kpoint (Cartesian) = 0.0000 0.0000 0.0000 (230 pws) + 1 -8.54134 1.00000 + 2 -8.49986 1.00000 + 3 -8.39548 1.00000 + 4 -8.38225 1.00000 + 5 -8.10904 1.00000 + 6 -8.09947 1.00000 + 7 -8.01762 1.00000 + 8 -7.94956 1.00000 + 9 -7.93862 1.00000 + 10 -7.87801 1.00000 + 11 -4.80928 1.00000 + 12 -3.75351 1.00000 + 13 7.57656 1.00000 + 14 7.75964 1.00000 + 15 8.11289 1.00000 + 16 8.69241 0.991104 + 17 8.97032 0.822677 + 18 9.04463 0.705205 + 19 9.17915 0.436556 + 20 9.47574 0.0444576 + 21 10.8453 0.00000 + 22 10.9566 0.00000 + 23 10.9829 0.00000 + 24 11.6632 0.00000 + 25 11.7908 0.00000 + 26 11.8574 0.00000 + 27 14.5416 0.00000 + 28 15.1202 0.00000 + 29 17.6699 0.00000 + 30 17.7719 0.00000 + 31 18.3448 0.00000 + 32 18.4351 0.00000 + 33 18.5704 0.00000 + 34 18.6714 0.00000 + 35 18.7804 0.00000 + + + +------------------------------------------------------------------------------------------ + TOTAL-FORCE (eV/Angstrom) +------------------------------------------------------------------------------------------ + As1 -5.8703800606 -4.7946411869 -6.0982122022 + Ga1 5.8703800606 4.7946411869 6.0982122022 +------------------------------------------------------------------------------------------ + + + + ------------------------------------------------------------------------------------------------ + Energy (Ry) Potential (Ry) Kinetic (Ry) Temperature (K) + -142.62247 -142.62442 0.0019474418 204.98424 + ------------------------------------------------------------------------------------------------ + + + + ------------------------------------------- + STEP OF MOLECULAR DYNAMICS : 2 + ------------------------------------------- + first order charge density extrapolation ! + DONE : INIT SCF Time : 1.71701 (SEC) + + + PW ALGORITHM --------------- ION=3 ELEC=1 -------------------------------- +total magnetism (Bohr mag/cell) 0.00000 0.00000 1.95640 + absolute magnetism (Bohr mag/cell) = 1.95962 + + Density error is 0.477550291489 + Error Threshold = 0.0100000000000 +---------------------------------------------------------- + Energy Rydberg eV +---------------------------------------------------------- + E_KohnSham -142.6498507178 -1940.8507886117 + E_Harris -146.4491358068 -1992.5427141488 + E_Fermi 0.6192799018 8.4257353211 +---------------------------------------------------------- + + + PW ALGORITHM --------------- ION= 3 ELEC= 2-------------------------------- +total magnetism (Bohr mag/cell) 0.00000000000 0.00000000000 1.98933318075 + absolute magnetism (Bohr mag/cell) = 2.03111991516 + + Density error is 0.175985640789 + Error Threshold = 0.00265305717494 +---------------------------------------------------------- + Energy Rydberg eV +---------------------------------------------------------- + E_KohnSham -142.5965805196 -1940.1260103830 + E_Harris -144.3777550999 -1964.3601338067 + E_Fermi 0.6461984287 8.7919806691 +---------------------------------------------------------- + + + PW ALGORITHM --------------- ION= 3 ELEC= 3-------------------------------- +total magnetism (Bohr mag/cell) 0.00000000000 0.00000000000 1.97493083463 + absolute magnetism (Bohr mag/cell) = 2.02445029910 + + Density error is 0.0131512819145 + Error Threshold = 0.000977698004383 +---------------------------------------------------------- + Energy Rydberg eV +---------------------------------------------------------- + E_KohnSham -142.6376231476 -1940.6844239839 + E_KS(sigma->0) -142.6342116592 -1940.6380083031 + E_Harris -142.3168424376 -1936.3199785192 + E_band -2.9205568119 -39.7362139749 + E_one_elec -81.5182312080 -1109.1124353098 + E_Hartree 53.4665656534 727.4499453771 + E_xc -21.5755011497 -293.5497528418 + E_Ewald -93.0036334665 -1265.3793498479 + E_entropy(-TS) -0.0068229768 -0.0928313616 + E_descf 0.0000000000 0.0000000000 + E_exx 0.0000000000 0.0000000000 + E_Fermi 0.6632047358 9.0233633480 +---------------------------------------------------------- + + + charge density convergence is achieved + final etot is -1940.6844240 eV + + STATE ENERGY(eV) AND OCCUPATIONS NSPIN == 4 + 1/1 kpoint (Cartesian) = 0.0000 0.0000 0.0000 (230 pws) + 1 -8.31421 1.00000 + 2 -8.20430 1.00000 + 3 -8.17182 1.00000 + 4 -8.14404 1.00000 + 5 -7.85336 1.00000 + 6 -7.76073 1.00000 + 7 -7.71833 1.00000 + 8 -7.68256 1.00000 + 9 -7.64568 1.00000 + 10 -7.60154 1.00000 + 11 -5.11512 1.00000 + 12 -3.87763 1.00000 + 13 7.03852 1.00000 + 14 7.57655 1.00000 + 15 7.83884 1.00000 + 16 8.41377 0.999233 + 17 8.62549 0.980671 + 18 8.79132 0.886086 + 19 9.25378 0.115555 + 20 9.42488 0.0184549 + 21 10.6927 0.00000 + 22 10.9099 0.00000 + 23 11.0110 0.00000 + 24 11.5312 0.00000 + 25 11.7823 0.00000 + 26 11.8581 0.00000 + 27 14.4850 0.00000 + 28 15.1448 0.00000 + 29 17.4644 0.00000 + 30 17.6904 0.00000 + 31 18.2557 0.00000 + 32 18.5078 0.00000 + 33 18.5427 0.00000 + 34 18.6574 0.00000 + 35 18.7331 0.00000 + + + +------------------------------------------------------------------------------------------ + TOTAL-FORCE (eV/Angstrom) +------------------------------------------------------------------------------------------ + As1 -10.1802174084 -5.5311564523 -6.8477853698 + Ga1 10.1802174084 5.5311564523 6.8477853698 +------------------------------------------------------------------------------------------ + + + + ------------------------------------------------------------------------------------------------ + Energy (Ry) Potential (Ry) Kinetic (Ry) Temperature (K) + -142.57602 -142.63762 0.061605080 6484.4407 + ------------------------------------------------------------------------------------------------ + + + + + -------------------------------------------- + !FINAL_ETOT_IS -1940.684423983896 eV + -------------------------------------------- diff --git a/tests/09_DeePKS/100_NO_KP_deepks_UT/S_I_mu_alpha_ref.dat b/interfaces/ASE_interface/abacuslite/utils/__init__.py similarity index 100% rename from tests/09_DeePKS/100_NO_KP_deepks_UT/S_I_mu_alpha_ref.dat rename to interfaces/ASE_interface/abacuslite/utils/__init__.py diff --git a/interfaces/ASE_interface/abacuslite/utils/ksampling.py b/interfaces/ASE_interface/abacuslite/utils/ksampling.py new file mode 100644 index 0000000000..328973e955 --- /dev/null +++ b/interfaces/ASE_interface/abacuslite/utils/ksampling.py @@ -0,0 +1,260 @@ +'''this module provides some useful tools for k-sampling''' +import seekpath +import unittest +from typing import Optional, Tuple, List, Dict + +import numpy as np +from ase.atoms import Atoms + +def convert_kspacing_to_kpts(cell: np.ndarray, + kspacing: float | Tuple[float, float, float])\ + -> Tuple[int, int, int]: + ''' + convert the kspacing to kpts, according to the given cell in Angstrom. + This function would be helpful for those calculators that only support + kpts, but not kspacing. A negative value in kspacing would yield nk=1 + for that direction. + + Parameters + ---------- + cell : np.ndarray + The cell in Angstrom, in shape (3, 3). + kspacing : float or tuple of float + The kspacing in Angstrom. If a tuple of float is given, it would be + interpreted as the kspacing in each direction. + + Returns + ------- + tuple of int + The kpts in each direction. + ''' + # get reciprocal cell vectors... + bvec = 2*np.pi * np.linalg.solve(cell.T, np.eye(3)) + bnorm = np.linalg.norm(bvec, axis=1).tolist() + + kspacing = (kspacing, kspacing, kspacing) if isinstance(kspacing, float) else kspacing + assert len(kspacing) == 3 + nk = [int(norm / kspac) if kspac > 0 else 1 for kspac, norm in zip(kspacing, bnorm)] + return tuple(map(lambda x: max(1, x+1), nk)) + +def get_kpath(atoms: Atoms, n_interpl: int = 10) -> Tuple[np.ndarray, np.ndarray, List[str]]: + '''''' + from seekpath import get_path as _corefunc_seekpath + seeked = _corefunc_seekpath( + structure=(atoms.get_cell().tolist(), + atoms.get_scaled_positions(), + atoms.get_atomic_numbers())) + + # get the most useful informaiton + k = np.array(list(seeked['point_coords'].values())) + assert k.ndim == 2 + nk, dim = k.shape + assert dim == 3 + + # interpolate... + kvec = np.vstack([np.linspace(k[i, :], k[i + 1, :], + num=n_interpl+int(i == nk - 2), + endpoint=bool(i == nk - 2)) + for i in range(nk - 1)]) + + # for easy-drawing + kdist = np.linalg.norm(kvec[1:] - kvec[:-1], axis=1) + kdist = np.cumsum(kdist) + kdist = np.hstack([[0], kdist]) + + kname = list(seeked['point_coords'].keys()) + kname = [[kn] + [''] * (n_interpl-1) for kn in kname[:-1]] + [[kname[-1]]] + kname = [n for kn in kname for n in kn] + + # finally, we assert the consistency of the data + assert len(kvec) == len(kdist) == len(kname), f'{len(kvec)}, {len(kdist)}, {len(kname)}' + return kvec, kdist, kname + +def interpolate_kpath(knodes: np.ndarray, + knames: List[str], + n_interpl: int | List[int] = 10) -> Tuple[np.ndarray, np.ndarray, List[str]]: + ''' + interpolate between the given k-points (nodes, as they are nodes along the path). + The number of interpolated points is given by `n_interpl`, in which the last + number will be ignored. + ''' + if isinstance(n_interpl, int): + n_interpl = [n_interpl] * (len(knodes) - 1) + [1] + assert isinstance(knodes, np.ndarray) + assert knodes.ndim == 2 + nk, dim = knodes.shape + + assert dim == 3 + assert len(n_interpl) == len(knames) == nk + + kvec = np.vstack([np.linspace(knodes[i, :], knodes[i + 1, :], + num=n_interpl[i]+int(i == nk - 2), + endpoint=bool(i == nk - 2)) + for i in range(nk - 1)]) + + # for easy-drawing + kdist = np.linalg.norm(kvec[1:] - kvec[:-1], axis=1) + kdist = np.cumsum(kdist) + kdist = np.hstack([[0], kdist]) + + # padding the knames to have the same length as kvec + kname = [[kn] + [''] * (n_interpl[i]-1) for i, kn in enumerate(knames[:-1])] + [[knames[-1]]] + kname = [n for kn in kname for n in kn] + + # finally, we assert the consistency of the data + assert len(kvec) == len(kdist) == len(kname), f'{len(kvec)}, {len(kdist)}, {len(kname)}' + return kvec, kdist, kname + +def merge_ksgm(segments) -> Tuple[List[str], List[bool]]: + ''' + SeeKpath generates the path of kpoints in the format of list of 2-element tuples. + This is good but not quite compatible with some DFT softwares like ABACUS. This + function will return a list of special kpoint labels accompanied with a boolean + list that helps distinguish the breakpoint of path. + + Parameters + ---------- + segments : List[Tuple[str, str]] + The list of kpath segments. Each segment is a tuple of two strings, + where the first string is the starting point of the segment and the + second string is the ending point of the segment, like [(Gamma, M), + (M, K), (K, Gamma)] + + Returns + ------- + Tuple[List[str], List[bool]] + The first element is the list of special kpoint labels. The second element + is the boolean list that helps distinguish the breakpoint of path. + ''' + klabels, is_brkpt = [segments[0][0]], [False] + for i, (start, end) in enumerate(segments): + if start != klabels[-1]: + is_brkpt[-1] = True + klabels.append(start) + is_brkpt.append(False) + + klabels.append(end) + is_brkpt.append(i == len(segments) - 1) + + return klabels, is_brkpt + +def make_kstring(klabels: List[str], + is_brkpt: List[bool]) -> str: + ''' + Make the kpoint path in the str. For path in which there are break point, + will use the comma to distinguish + + Parameters + ---------- + klabels : List[str] + The list of special kpoint labels. + is_brkpt : List[bool] + The boolean list that helps distinguish the breakpoint of path. + + Returns + ------- + str + The kstring that ABACUS uses to represent the kpath. + ''' + out = '' + for lbl, brkpt in zip(klabels, is_brkpt): + out += lbl + if brkpt: + out += ',' + return out[:-1] # remove the last comma + +def make_klines(kpts, + is_brkpt, + n_interpl, + klabels) -> List[Dict[str, np.ndarray | str | int]]: + ''' + gather the information and output the list of dicts that organizes the + information easy for exporting the ABAUCS KLINES file. Each dictionary + contains the keys `coord`, `label`, `n`, where `coord` is the coordinate + of kpoint, `label` is the label of kpoint, and `n` is the number of + interpolation points between the next kpoint and itself (the next kpoint + included). + + Parameters + ---------- + kpts : np.ndarray + The array of kpoints. + is_brkpt : List[bool] + The boolean list that helps distinguish the breakpoint of path. + n_interpl : int + The number of interpolation points between the kpoints. + klabels : List[str] + The list of special kpoint labels. + + Returns + ------- + List[Dict[str, np.ndarray | str | int]] + The list of dictionaries that organizes the information easy for + exporting the ABAUCS KLINES file. + ''' + def fspawnk(c: np.ndarray, n: int, label: str) -> Dict[str, np.ndarray | str | int]: + return {'coord': c, 'label': label, 'n': n} + + return [fspawnk(c, 1 if is_brkpt[i] else n_interpl, klbl) + for i, (c, klbl) in enumerate(zip(kpts, klabels))] + +def kpathgen(atoms: Atoms) -> Tuple[str, Dict[str, List[float]]]: + ''' + Generate the k-path by default SeeK-Path flavor in the format + compatible with ase bandpath module + ''' + kpathseen = seekpath.get_path( + structure=(np.array(atoms.get_cell()), + atoms.get_scaled_positions(), + atoms.get_atomic_numbers()), + with_time_reversal=True + ) + + # convert the kpoint path to the format that is acceptable by ASE + kpathstr, is_brkpt = merge_ksgm(kpathseen['path']) + fklblfilter = lambda lbl: lbl if lbl != 'GAMMA' else 'G' + kpathstr = make_kstring([fklblfilter(lbl) for lbl in kpathstr], is_brkpt) + kpathstr = ''.join([k if k != 'GAMMA' else 'G' for k in kpathstr]) + # seekpath use 'GAMMA' as the gamma point symbol, while the ASE use 'G' + kspecial = {k: v for k, v in kpathseen['point_coords'].items() if k != 'GAMMA'} + kspecial['G'] = [0.0, 0.0, 0.0] + return kpathstr, kspecial + +# the following are for quick test on the silicon case +SILICON_KNODES = np.array([[0.0000000000, 0.0000000000, 0.0000000000], + [0.5000000000, 0.0000000000, 0.5000000000], + [0.6250000000, 0.2500000000, 0.6250000000], + [0.3750000000, 0.3750000000, 0.7500000000], + [0.0000000000, 0.0000000000, 0.0000000000], + [0.5000000000, 0.5000000000, 0.5000000000], + [0.5000000000, 0.2500000000, 0.7500000000], + [0.5000000000, 0.0000000000, 0.5000000000]]) +SILICON_KNAMES = ["G", "X", "X/U", "K", "G", "L", "W", "X"] +SILICON_NINTPL = [50, 50, 1, 50, 50, 50, 50, 1] # from the DeePTB example :) + +class TestKsampling(unittest.TestCase): + + def test_convert_kspacing(self): + # test-reference: ABACUS 3.8.4 implementation + from ase.geometry import cellpar_to_cell + + cell = cellpar_to_cell([4.22798145, 4.22798145, 4.22798145, 60, 60, 60]) + kpts = convert_kspacing_to_kpts(cell, 0.03*1.889725989) + # kspacing 0.03 Bohr-1, multiply 1.889725989 to convert to Angstrom-1 + self.assertEqual(kpts, (33, 33, 33)) + + def test_merge_ksgm(self): + klables, is_brkpt = merge_ksgm([('GAMMA', 'X'), ('X', 'U'), ('K', 'GAMMA'), + ('GAMMA', 'L'), ('L', 'W'), ('W', 'X')]) + self.assertEqual(klables, ['GAMMA', 'X', 'U', 'K','GAMMA', 'L', 'W', 'X']) + self.assertEqual(is_brkpt, [False, False, True, False, False, False, False, True]) + + def test_make_kstring(self): + fklblfilter = lambda lbl: lbl if lbl != 'GAMMA' else 'G' + klabels = ['GAMMA', 'X', 'U', 'K','GAMMA', 'L', 'W', 'X'] + klabels = [fklblfilter(lbl) for lbl in klabels] + is_brkpt = [False, False, True, False, False, False, False, True] + self.assertEqual(make_kstring(klabels, is_brkpt), 'GXU,KGLWX') + +if __name__ == '__main__': + unittest.main() \ No newline at end of file diff --git a/interfaces/ASE_interface/abacuslite/xtest.sh b/interfaces/ASE_interface/abacuslite/xtest.sh new file mode 100644 index 0000000000..47640cfc28 --- /dev/null +++ b/interfaces/ASE_interface/abacuslite/xtest.sh @@ -0,0 +1,10 @@ +#!/bin/bash + +set -e # Exit on error + +python3 core.py +python3 ./io/generalio.py -v +python3 ./io/legacyio.py -v +python3 ./io/latestio.py -v +python3 ./utils/ksampling.py -v + diff --git a/interfaces/ASE_interface/examples/bandstructure.py b/interfaces/ASE_interface/examples/bandstructure.py new file mode 100644 index 0000000000..626638e21e --- /dev/null +++ b/interfaces/ASE_interface/examples/bandstructure.py @@ -0,0 +1,82 @@ +''' +This example shows how to run a SCF calculation with ABACUS +of Si diamond structure. + +To run this example, please install the SeeK-path package: +``` +pip install seekpath +``` +. The SeeK-path package recommands you cite by the way posted here: +https://seekpath.materialscloud.io/ +''' +import shutil +from pathlib import Path # a more Pythonic alternative to the os.path +here = Path(__file__).parent +# to the directory where the pseudopotential and orbital files are stored +# In your case you change to the appropriate one +pporb = here.parent.parent.parent / 'tests' / 'PP_ORB' + +from ase.build import bulk +from abacuslite import Abacus, AbacusProfile +from abacuslite.utils.ksampling import kpathgen + +# AbacusProfile: the interface connecting the Abacus calculator instance +# with the file system and the enviroment +aprof = AbacusProfile( + command='mpirun -np 4 abacus', + pseudo_dir=pporb, + orbital_dir=pporb, + omp_num_threads=1, +) + +# Abacus: the calculator instance +jobdir = here / 'bandstructure' +abacus = Abacus( + profile=aprof, + directory=str(jobdir), + pseudopotentials={'Si': 'Si_ONCV_PBE-1.0.upf'}, + basissets={'Si': 'Si_gga_8au_100Ry_2s2p1d.orb'}, + inp={ + 'calculation': 'scf', + 'nspin': 1, + 'basis_type': 'lcao', + 'ks_solver': 'genelpa', + 'ecutwfc': 100, + 'symmetry': 1, + 'kspacing': 0.1 + } +) + +# get the structure, can also from the +# ``` +# from ase.io import read +# atoms = read(...) +# ``` +atoms = bulk('Si', 'diamond', a=5.43) + +# bind the atoms with the abacus +atoms.calc = abacus + +# perform the SCF calculation to get the converged wavefunction +print('SCF calculation get energy:', atoms.get_potential_energy()) + +kpathstr, kspecial = kpathgen(atoms) +# instantiate the bandpath +bandpath = atoms.cell.bandpath(path=kpathstr, + npoints=50, + special_points=kspecial) + +# derive the band structure calculator from SCF calculator +bscalc = atoms.calc.fixed_density(bandpath) +atoms.calc = bscalc +_ = atoms.get_potential_energy() # NSCF calculation will be performed + +bs = bscalc.band_structure() +bs.write('bandstructure.json') +# you can use the ase-cli to plot the JSON file later by: +# ``` +# ase band-structure bandstructure.json -r -10 15 +# ``` +bs.plot(emin=-10, emax=15, filename='bandstructure.png') + +shutil.rmtree(jobdir) \ No newline at end of file diff --git a/interfaces/ASE_interface/examples/cellrelax.py b/interfaces/ASE_interface/examples/cellrelax.py new file mode 100644 index 0000000000..a6b5cc06c5 --- /dev/null +++ b/interfaces/ASE_interface/examples/cellrelax.py @@ -0,0 +1,76 @@ +''' +This example shows how to perform a cell-ion joint relaxation with ABACUS +of Si diamond structure. +''' +import shutil +from pathlib import Path # a more Pythonic alternative to the os.path +here = Path(__file__).parent +# to the directory where the pseudopotential and orbital files are stored +# In your case you change to the appropriate one +pporb = here.parent.parent.parent / 'tests' / 'PP_ORB' + +from ase.build import bulk +from ase.filters import FrechetCellFilter +from ase.optimize import BFGS +from abacuslite import Abacus, AbacusProfile + +# AbacusProfile: the interface connecting the Abacus calculator instance +# with the file system and the enviroment +aprof = AbacusProfile( + command='mpirun -np 4 abacus', + pseudo_dir=pporb, + orbital_dir=pporb, + omp_num_threads=1, +) + +# Abacus: the calculator instance +jobdir = here / 'scf' +abacus = Abacus( + profile=aprof, + directory=str(jobdir), + pseudopotentials={'Si': 'Si_ONCV_PBE-1.0.upf'}, + basissets={'Si': 'Si_gga_8au_100Ry_2s2p1d.orb'}, + inp={ + 'calculation': 'scf', + 'nspin': 1, + 'basis_type': 'lcao', + 'ks_solver': 'genelpa', + 'ecutwfc': 100, + 'symmetry': 1, + 'kspacing': 0.1, + 'cal_force': 1, # let ABACUS calculate the forces + 'cal_stress': 1 # let ABACUS calculate the stress + } +) + +# get the structure, can also from the +# ``` +# from ase.io import read +# atoms = read(...) +# ``` +atoms = bulk('Si', 'diamond', a=5.43) + +# bind the atoms with the abacus +atoms.calc = abacus + +# print the energy before relaxation +print(f'Before: {atoms.get_potential_energy()}') +print(f'Cell: {atoms.get_cell()}') + +# perform the relaxation calculation +dyn = BFGS(FrechetCellFilter(atoms), logfile='-') +# or a fixed alpha, beta, gamma relaxation, if you needed +# dyn = BFGS(FrechetCellFilter( +# atoms, +# mask=[True, True, True, False, False, False] +# ), logfile='-') +# the first three mask elements are for the strain, +# the last three are for the shear +dyn.run(fmax=0.05) + +# print the energy after relaxation +print(f'After: {atoms.get_potential_energy()}') +print(f'Cell: {atoms.get_cell()}') + +# remove the temporary job directory (including all files inside) +shutil.rmtree(jobdir) diff --git a/interfaces/ASE_interface/examples/constraintmd.py b/interfaces/ASE_interface/examples/constraintmd.py new file mode 100644 index 0000000000..b28a781490 --- /dev/null +++ b/interfaces/ASE_interface/examples/constraintmd.py @@ -0,0 +1,101 @@ +import shutil +import tempfile +from pathlib import Path # a more Pythonic alternative to the os.path +here = Path(__file__).parent +# to the directory where the pseudopotential and orbital files are stored +# In your case you change to the appropriate one +pporb = here.parent.parent.parent / 'tests' / 'PP_ORB' + +import numpy as np +import matplotlib.pyplot as plt +from ase.io import read, Trajectory +from ase.md import Langevin +from ase.md.velocitydistribution import MaxwellBoltzmannDistribution +from ase.units import fs +from ase.constraints import FixCartesian +from abacuslite import AbacusProfile, Abacus + +aprof = AbacusProfile( + command='mpirun -np 16 abacus', + pseudo_dir=pporb, + orbital_dir=pporb, + omp_num_threads=1, +) +jobdir = here / 'constraintmd' +abacus = Abacus( + profile=aprof, + directory=str(jobdir), + pseudopotentials={ + 'C': 'C_ONCV_PBE-1.0.upf', + 'H': 'H_ONCV_PBE-1.0.upf', + 'F': 'F_ONCV_PBE-1.0.upf', + }, + basissets={ + 'C': 'C_gga_8au_100Ry_2s2p1d.orb', + 'H': 'H_gga_8au_100Ry_2s1p.orb', + 'F': 'F_gga_7au_100Ry_2s2p1d.orb', + }, + inp={ + 'calculation': 'scf', + 'nspin': 2, + 'basis_type': 'lcao', + 'ks_solver': 'genelpa', + 'ecutwfc': 40, + 'scf_thr': 1e-6, + 'symmetry': 1, + 'gamma_only': True, + 'init_chg': 'auto' # small trick, use the previous charge density + } +) + +mol = ''' 6 +CH4-F + C -0.00000000 -0.00000000 -1.50074532 + H 0.00000000 -1.01539888 -1.16330635 + H -0.87936122 0.50769944 -1.16330635 + H 0.87936122 0.50769944 -1.16330635 + H -0.00000000 -0.00000000 -2.57055225 + F 0.00000000 -0.00000000 0.88279136 +''' +with tempfile.NamedTemporaryFile(mode='w', suffix='.xyz') as f: + f.write(mol) + f.flush() + atoms = read(f.name) + +atoms.center(vacuum=5.0) # to reduce the computational cost +# view(atoms) + +# constraint the No.1, 5, 6 atoms' X and Y coordiantes so that +# they can only move along the z-axis +constraint = FixCartesian(a=[0, 4, 5], mask=(True, True, False)) +# apply +atoms.set_constraint(constraint) +MaxwellBoltzmannDistribution(atoms, temperature_K=300) + +atoms.calc = abacus +dyn = Langevin(atoms, + timestep=1.0 * fs, + temperature_K=300, + friction=0.004, + logfile='-', + trajectory='constraintmd.traj') +dyn.run(5) + +# let's see if the X, Y coordinates of No.1, 5, and 6 atoms are really +# fixed +with Trajectory('constraintmd.traj') as traj: + traj = np.array([atoms.get_positions() for atoms in traj]) + +# transpose from (nframe, natom, 3) to (natom, nframe, 3) +traj = traj.transpose(1, 0, 2) + +# plot the trajectory of No.1, 5, and 6 atoms +plt.plot(traj[0, :, 2], label='C') +plt.plot(traj[4, :, 2], label='H') +plt.plot(traj[5, :, 2], label='F') +plt.xlabel('Step') +plt.ylabel('Z (Å)') +plt.legend() +plt.show() + +shutil.rmtree(jobdir) \ No newline at end of file diff --git a/interfaces/ASE_interface/examples/dos.py b/interfaces/ASE_interface/examples/dos.py new file mode 100644 index 0000000000..39a5f12fa8 --- /dev/null +++ b/interfaces/ASE_interface/examples/dos.py @@ -0,0 +1,65 @@ +''' +This example shows how to run a SCF calculation with ABACUS +of Si diamond structure. +''' +import shutil +from pathlib import Path # a more Pythonic alternative to the os.path +here = Path(__file__).parent +# to the directory where the pseudopotential and orbital files are stored +# In your case you change to the appropriate one +pporb = here.parent.parent.parent / 'tests' / 'PP_ORB' + +import matplotlib.pyplot as plt +from ase.build import bulk +from ase.dft import DOS +from abacuslite import Abacus, AbacusProfile + +aprof = AbacusProfile( + command='mpirun -np 4 abacus', + pseudo_dir=pporb, + orbital_dir=pporb, + omp_num_threads=1, +) + +jobdir = here / 'scf' +abacus = Abacus( + profile=aprof, + directory=str(jobdir), + pseudopotentials={'Si': 'Si_ONCV_PBE-1.0.upf'}, + basissets={'Si': 'Si_gga_8au_100Ry_2s2p1d.orb'}, + inp={ + 'calculation': 'scf', + 'nspin': 1, + 'basis_type': 'lcao', + 'ks_solver': 'genelpa', + 'ecutwfc': 100, + 'symmetry': 1, + 'kspacing': 0.1 + } +) + +# get the structure, can also from the +# ``` +# from ase.io import read +# atoms = read(...) +# ``` +atoms = bulk('Si', 'diamond', a=5.43) + +# bind the atoms with the abacus +atoms.calc = abacus + +# calculate! +print(atoms.get_potential_energy()) + +doscalc = DOS(atoms.calc, width=0.1) +e, dos = doscalc.get_energies(), doscalc.get_dos() + +plt.plot(e, dos) +plt.xlim(-5, 5) +plt.xlabel('E - E_f (eV)') +plt.ylabel('DOS') +plt.title('DOS of Si Diamond') +plt.show() + +# remove the temporary job directory (including all files inside) +shutil.rmtree(jobdir) diff --git a/interfaces/ASE_interface/examples/md.py b/interfaces/ASE_interface/examples/md.py new file mode 100644 index 0000000000..2fc2bbefbb --- /dev/null +++ b/interfaces/ASE_interface/examples/md.py @@ -0,0 +1,72 @@ +'''this example recap the example of MD in abacus example +directory, but there the CSVR thermostat is used instead +of those implemented in ABACUS. + +In ASE, the CSVR thermostat is named as the Bussi +''' +import shutil +from pathlib import Path # a more Pythonic alternative to the os.path +here = Path(__file__).parent +# to the directory where the pseudopotential and orbital files are stored +# In your case you change to the appropriate one +pporb = here.parent.parent.parent / 'tests' / 'PP_ORB' + +import numpy as np +from ase.atoms import Atoms +from ase.md import Bussi +from ase.md.velocitydistribution import MaxwellBoltzmannDistribution +from ase.units import fs +from abacuslite import Abacus, AbacusProfile + +cell = np.eye(3) * 5.43090251 +taud = [ + [0.00000000, 0.00000000, 0.00000000], + [0.00000000, 0.50000000, 0.50000000], + [0.50000000, 0.00000000, 0.50000000], + [0.50000000, 0.50000000, 0.00000000], + [0.25000000, 0.25000000, 0.25000000], + [0.25000000, 0.75000000, 0.75000000], + [0.75000000, 0.25000000, 0.75000000], + [0.75000000, 0.75000000, 0.25000000], +] +atoms = Atoms(symbols=['Si' for _ in range(8)], + scaled_positions=taud, + cell=cell, + pbc=True) + +aprof = AbacusProfile( + command='mpirun -np 4 abacus', + pseudo_dir=pporb, + orbital_dir=pporb, + omp_num_threads=1, +) + +jobdir = here / 'md' +abacus = Abacus( + profile=aprof, + directory=str(jobdir), + pseudopotentials={'Si': 'Si_ONCV_PBE-1.0.upf'}, + basissets={'Si': 'Si_gga_8au_100Ry_2s2p1d.orb'}, + inp={ + 'calculation': 'scf', # still use SCF here because the MD is driven by ASE + 'nspin': 1, + 'basis_type': 'lcao', + 'ks_solver': 'genelpa', + 'ecutwfc': 100, + 'symmetry': 1, + 'kspacing': 0.25 # highly unconverged, just for demo + } +) + +atoms.calc = abacus +# initialize the velocities, necessary for CSVR +MaxwellBoltzmannDistribution(atoms, temperature_K=300) + +dyn = Bussi(atoms, + timestep=1*fs, + temperature_K=300, + taut=10*fs, + logfile='-') # let's see the trajectory +dyn.run(2) + +shutil.rmtree(jobdir) diff --git a/interfaces/ASE_interface/examples/metadynamics.py b/interfaces/ASE_interface/examples/metadynamics.py new file mode 100644 index 0000000000..5595d13143 --- /dev/null +++ b/interfaces/ASE_interface/examples/metadynamics.py @@ -0,0 +1,146 @@ +''' +To run the metadynamics, you need to configure the plumed correctly: + +conda install -c conda-forge plumed=2.8.2=mpi_openmpi_hb0545ae_0 +conda install -c conda-forge py-plumed + +You may be also interested in a newer version of plumed, a possible solution is +to search `plumed` at conda website: +https://anaconda.org/channels/conda-forge/packages/plumed/files +in which, up to 2026/02/25, the latest version is +``` +linux-64/plumed-2.9.2-mpi_openmpi_h02da92d_0.conda, +``` +you can install it with: +conda install -c conda-forge plumed=2.9.2=mpi_openmpi_h02da92d_0 + +we do not recommend the default version of plumed installed by conda, which +is nompi-labelled, may cause segmentation fault error during the MTD run. + +In this example, we will run a metadynamics simulation to explore the +substitution reaction, during which the famous Walden inversion +(https://en.wikipedia.org/wiki/Walden_inversion) happens: +``` +CH4 + F -> CH3F + H +``` +. Because the F is a radical, we set nspin 2 throughout the simulation. +The structure is like + H H + \ / + H - C F· + | + H +, thus the best Collective Variable (CV) is the difference between the +H-C bond length and the C-F bond length. + +CSVR thermostat is used to maintain the temperature during the simulation. +''' + +import shutil +import tempfile +from pathlib import Path # a more Pythonic alternative to the os.path +here = Path(__file__).parent +# to the directory where the pseudopotential and orbital files are stored +# In your case you change to the appropriate one +pporb = here.parent.parent.parent / 'tests' / 'PP_ORB' + +from ase.io import read +from ase.md import Bussi +from ase.md.velocitydistribution import MaxwellBoltzmannDistribution +from ase.units import ( + fs, + kJ as _kJ, + mol as _mol, +) +_ps = 1000 * fs +from ase.constraints import FixCartesian +from ase.calculators.plumed import Plumed +from abacuslite import AbacusProfile, Abacus + +aprof = AbacusProfile( + command='mpirun -np 16 abacus', + pseudo_dir=pporb, + orbital_dir=pporb, + omp_num_threads=1, +) +jobdir = here / 'constraintmd' +abacus = Abacus( + profile=aprof, + directory=str(jobdir), + pseudopotentials={ + 'C': 'C_ONCV_PBE-1.0.upf', + 'H': 'H_ONCV_PBE-1.0.upf', + 'F': 'F_ONCV_PBE-1.0.upf', + }, + basissets={ + 'C': 'C_gga_8au_100Ry_2s2p1d.orb', + 'H': 'H_gga_8au_100Ry_2s1p.orb', + 'F': 'F_gga_7au_100Ry_2s2p1d.orb', + }, + inp={ + 'calculation': 'scf', + 'nspin': 2, + 'basis_type': 'lcao', + 'ks_solver': 'genelpa', + 'ecutwfc': 40, + 'scf_thr': 1e-6, + 'symmetry': 1, + 'gamma_only': True, + 'init_chg': 'auto' # small trick, use the previous charge density + } +) + +ch4f = ''' 6 +ABACUS ASE Plugin Metadynamics example structure + C -0.00000000 -0.00000000 -1.50074532 + F 0.00000000 -0.00000000 0.88279136 + H 0.00000000 -1.01539888 -1.16330635 + H -0.87936122 0.50769944 -1.16330635 + H 0.87936122 0.50769944 -1.16330635 + H -0.00000000 -0.00000000 -2.57055225 +''' +with tempfile.NamedTemporaryFile(mode='w', suffix='.xyz') as f: + f.write(ch4f) + f.flush() + atoms = read(f.name) + +atoms.center(vacuum=5.0) # to reduce the computational cost + +# constraint the No.5, 6 atoms' X and Y coordiantes so that +# they can only move along the z-axis, also fix the atom C's +# all components +atoms.set_constraint([FixCartesian(a=[4, 5], mask=(True, True, False)), + FixCartesian(a=[0])]) +MaxwellBoltzmannDistribution(atoms, temperature_K=300) + +setup = [# define the unit within the PLUMED runtime + f'UNITS LENGTH=A TIME={1/_ps} ENERGY={_mol/_kJ}', + # define the two bond lengths + 'd1: DISTANCE ATOMS=1,5', + 'd2: DISTANCE ATOMS=1,6', + # define the CV as the difference between the two bond lengths + 'c1: MATHEVAL ARG=d1,d2 VAR=a,b FUNC=a-b PERIODIC=NO', + # add walls to confine the position of H and F atoms + # such that the C-H bond will have length between 0.5 and 2.0, + # and the C-F bond will have length between 1.0 and 3.0 + 'lwall: LOWER_WALLS ARG=d1,d2 AT=0.5,1.0 KAPPA=150.0,150.0 EXP=2,2', + 'uwall: UPPER_WALLS ARG=d1,d2 AT=2.0,3.0 KAPPA=150.0,150.0 EXP=2,2', + # setup the metadynamics simulation + 'metad: METAD ARG=c1 PACE=5 HEIGHT=0.2 SIGMA=0.05 FILE=HILLS TEMP=300', + 'PRINT STRIDE=1 ARG=d1,d2,c1 FILE=COLVAR'] + +atoms.calc = Plumed(calc=abacus, + input=setup, + timestep=1.0 * fs, + atoms=atoms, + kT=0.1) + +dyn = Bussi(atoms, + timestep=1.0 * fs, + temperature_K=300, + taut=10.0 * fs, + trajectory='metadynamics.traj', + logfile='-') + +dyn.run(20) +shutil.rmtree(jobdir) diff --git a/interfaces/ASE_interface/examples/neb.py b/interfaces/ASE_interface/examples/neb.py new file mode 100644 index 0000000000..1118fcadc1 --- /dev/null +++ b/interfaces/ASE_interface/examples/neb.py @@ -0,0 +1,111 @@ +''' +PbTiO3 ferroelectric inversion energy barrier + +Learn how to use the NEB module in ASE, please refer to the online manual at: +https://ase-lib.org/examples_generated/tutorials/neb_idpp.html +''' +from pathlib import Path +here = Path(__file__).parent + +import numpy as np +from ase.io import Trajectory +from ase.atoms import Atoms +from ase.optimize import FIRE +from ase.mep import NEB +import matplotlib.pyplot as plt +from abacuslite import Abacus, AbacusProfile + +pporb = here.parent.parent.parent / 'tests' / 'PP_ORB' + +elem = ['Ti', 'Pb', 'O', 'O', 'O'] +taud = np.array([ + [0.5, 0.5, 0.5948316037314115], + [0.0, 0.0, 0.1235879499999999], + [0.0, 0.5, 0.5094847864489368], + [0.5, 0.0, 0.5094847864489368], + [0.5, 0.5, 0.0088672395150394], +]) +cell = np.array([ + [3.8795519, 0.0000000, 0.00000000], + [0.0000000, 3.8795519, 0.00000000], + [0.0000000, 0.0000000, 4.28588762], +]) + +# we have relaxed with the parameters above :) +up = Atoms(elem, cell=cell, scaled_positions=taud) + +# get the polarisation inversed by inversing the Ti atoms +taud = np.array([ + [0.5, 0.5, 0.6508136593687969], + [0.0, 0.0, 0.1235879499999999], + [0.0, 0.5, 0.7348401327639794], + [0.5, 0.0, 0.7348401327639794], + [0.5, 0.5, 0.2364165087650052], +]) +dw = Atoms(elem, cell=cell, scaled_positions=taud) + +aprof = AbacusProfile( + command='mpirun -np 8 abacus_2p', + pseudo_dir=pporb, + orbital_dir=pporb, + omp_num_threads=1 +) +pseudopotentials = { + 'Ti': 'Ti_ONCV_PBE-1.0.upf', + 'Pb': 'Pb_ONCV_PBE-1.0.upf', + 'O' : 'O_ONCV_PBE-1.0.upf', +} +basissets = { + 'Ti': 'Ti_gga_8au_100Ry_4s2p2d1f.orb', + 'Pb': 'Pb_gga_7au_100Ry_2s2p2d1f.orb', + 'O' : 'O_gga_7au_100Ry_2s2p1d.orb', +} +inp = { + 'profile': aprof, + 'pseudopotentials': pseudopotentials, + 'basissets': basissets, + 'inp': { + 'basis_type': 'lcao', + 'symmetry': 1, + 'kspacing': 0.25, # Oops! + 'init_chg': 'auto', + 'cal_force': 1, + } +} + +n_replica = 7 # the ini and fin images included. 7 is acceptable for production +replica = [] +for irep in range(n_replica): + image = up.copy() if irep <= (n_replica // 2) else dw.copy() + # attach the calculator to each image, so that we can run the optimization + image.calc = Abacus(**inp, directory=here / f'neb-{irep}') + replica.append(image) + +neb = NEB(replica, + k=0.05, # too high value is hard to converge + climb=False, # use True in production run, though CI-NEB is harder to converge + parallel=True) +neb.interpolate('idpp') + +qn = FIRE(neb, trajectory=here / 'neb.traj') +qn.run(fmax=0.05) + +energies = [] +# get the energy profile along the reaction path +with Trajectory(here / 'neb.traj') as traj: + replica = traj[-7:] # the last NEB frames + for i, rep in enumerate(replica): + rep: Atoms # type hint + # the energies of the initial and the final state + # are not calculated, here we calculate them + rep.calc = Abacus(**inp, directory=here / f'neb-{i}') + energies.append(rep.get_potential_energy()) + +energies = np.array(energies) +# plot the energy profile +plt.plot(energies - energies[0], 'o-') +plt.xlabel('NEB image index') +plt.ylabel('Total energies (eV)') +plt.title('Energy profile along the reaction path') +plt.savefig(here / 'energy_profile.png', dpi=300) +plt.close() diff --git a/interfaces/ASE_interface/examples/relax.py b/interfaces/ASE_interface/examples/relax.py new file mode 100644 index 0000000000..ac769055a4 --- /dev/null +++ b/interfaces/ASE_interface/examples/relax.py @@ -0,0 +1,67 @@ +''' +This example shows how to perform a ion relaxation with ABACUS +of Si diamond structure. +''' +import shutil +from pathlib import Path # a more Pythonic alternative to the os.path +here = Path(__file__).parent +# to the directory where the pseudopotential and orbital files are stored +# In your case you change to the appropriate one +pporb = here.parent.parent.parent / 'tests' / 'PP_ORB' + +from ase.build import bulk +from ase.optimize import BFGS +from abacuslite import Abacus, AbacusProfile + +# AbacusProfile: the interface connecting the Abacus calculator instance +# with the file system and the enviroment +aprof = AbacusProfile( + command='mpirun -np 8 abacus', + pseudo_dir=pporb, + orbital_dir=pporb, + omp_num_threads=1, +) + +# Abacus: the calculator instance +jobdir = here / 'relax' +abacus = Abacus( + profile=aprof, + directory=str(jobdir), + pseudopotentials={'Si': 'Si_ONCV_PBE-1.0.upf'}, + basissets={'Si': 'Si_gga_8au_100Ry_2s2p1d.orb'}, + inp={ + 'calculation': 'scf', + 'nspin': 1, + 'basis_type': 'lcao', + 'ks_solver': 'genelpa', + 'ecutwfc': 100, + 'symmetry': 1, + 'kspacing': 0.1, + 'cal_force': 1 # let ABACUS calculate the forces + } +) + +# get the structure, can also from the +# ``` +# from ase.io import read +# atoms = read(...) +# ``` +atoms = bulk('Si', 'diamond', a=5.43) +# displacement the atoms a little bit +atoms.rattle(stdev=0.1) + +# bind the atoms with the abacus +atoms.calc = abacus + +# print the energy before relaxation +print(f'Before: {atoms.get_potential_energy()}') + +# perform the relaxation calculation +dyn = BFGS(atoms, logfile='-') # let's print to screen, observe the trajectory +dyn.run(fmax=0.05) + +# print the energy after relaxation +print(f'After: {atoms.get_potential_energy()}') + +# remove the temporary job directory (including all files inside) +shutil.rmtree(jobdir) diff --git a/interfaces/ASE_interface/examples/scf.py b/interfaces/ASE_interface/examples/scf.py new file mode 100644 index 0000000000..9e3fdc4f22 --- /dev/null +++ b/interfaces/ASE_interface/examples/scf.py @@ -0,0 +1,56 @@ +''' +This example shows how to run a SCF calculation with ABACUS +of Si diamond structure. +''' +import shutil +from pathlib import Path # a more Pythonic alternative to the os.path +here = Path(__file__).parent +# to the directory where the pseudopotential and orbital files are stored +# In your case you change to the appropriate one +pporb = here.parent.parent.parent / 'tests' / 'PP_ORB' + +from ase.build import bulk +from abacuslite import Abacus, AbacusProfile + +# AbacusProfile: the interface connecting the Abacus calculator instance +# with the file system and the enviroment +aprof = AbacusProfile( + command='mpirun -np 4 abacus', + pseudo_dir=pporb, + orbital_dir=pporb, + omp_num_threads=1, +) + +# Abacus: the calculator instance +jobdir = here / 'scf' +abacus = Abacus( + profile=aprof, + directory=str(jobdir), + pseudopotentials={'Si': 'Si_ONCV_PBE-1.0.upf'}, + basissets={'Si': 'Si_gga_8au_100Ry_2s2p1d.orb'}, + inp={ + 'calculation': 'scf', + 'nspin': 1, + 'basis_type': 'lcao', + 'ks_solver': 'genelpa', + 'ecutwfc': 100, + 'symmetry': 1, + 'kspacing': 0.1 + } +) + +# get the structure, can also from the +# ``` +# from ase.io import read +# atoms = read(...) +# ``` +atoms = bulk('Si', 'diamond', a=5.43) + +# bind the atoms with the abacus +atoms.calc = abacus + +# calculate! +print(atoms.get_potential_energy()) + +# remove the temporary job directory (including all files inside) +shutil.rmtree(jobdir) diff --git a/interfaces/ASE_interface/pyproject.toml b/interfaces/ASE_interface/pyproject.toml new file mode 100644 index 0000000000..8f84373e0a --- /dev/null +++ b/interfaces/ASE_interface/pyproject.toml @@ -0,0 +1,24 @@ +[build-system] +requires = ["setuptools", "wheel"] +build-backend = "setuptools.build_meta" + +[project] +name = "abacuslite" +version = "1.0.0" +description = "An ABACUS light-weighted plugin implementation of ase calculator" +readme = "README.md" +authors = [ + { name = "Yuyang Ji" }, + { name = "Zhenxiong Shen" }, + { name = "Yike Huang" }, + { name = "Zhaoqing Liu" } +] +requires-python = ">=3.10" +dependencies = [ + "ase>=3.22.0", + "seekpath" +] + +[tool.setuptools.packages.find] +where = ["."] +include = ["abacuslite*"] \ No newline at end of file diff --git a/interfaces/ASE_interface/tests/band.py b/interfaces/ASE_interface/tests/band.py new file mode 100644 index 0000000000..78b8092211 --- /dev/null +++ b/interfaces/ASE_interface/tests/band.py @@ -0,0 +1,61 @@ +import unittest +import tempfile +from pathlib import Path +here = Path(__file__).parent +from ase.build import bulk +from abacuslite.io.generalio import load_pseudo, load_orbital +from abacuslite import AbacusProfile, Abacus +from abacuslite.utils.ksampling import kpathgen + +class TestSCFFollowedNSCF(unittest.TestCase): + + def setUp(self): + '''if SeeK-path is not installed, skip the test''' + try: + import seekpath + except ImportError: + self.skipTest('seekpath is not installed') + return super().setUp() + + def test(self): + pporb = here.parent.parent.parent / 'tests' / 'PP_ORB' + + silicon = bulk('Si', 'diamond', a=5.43) + aprof = AbacusProfile( + command='mpirun -np 2 abacus', + pseudo_dir=pporb, + orbital_dir=pporb, + omp_num_threads=1, + ) + + with tempfile.TemporaryDirectory() as tmpdir: + abacus = Abacus( + profile=aprof, + directory=tmpdir, + pseudopotentials=load_pseudo(pporb), + basissets=load_orbital(pporb, efficiency=True), + inp={ + 'basis_type': 'lcao', + 'scf_thr': 1e-3, # fast for test, wrong for production, + 'kspacing': 0.25 + } + ) + + silicon.calc = abacus + _ = silicon.get_potential_energy() + + # ============================================================= # + + kpath, kspecial = kpathgen(silicon) + bandpath = silicon.cell.bandpath(path=kpath, + npoints=5, + special_points=kspecial) + bscalc = silicon.calc.fixed_density(bandpath) + silicon.calc = bscalc + _ = silicon.get_potential_energy() + + bscalc.band_structure().write(Path(tmpdir) / 'bandstructure.json') + self.assertTrue((Path(tmpdir) / 'bandstructure.json').exists()) + +if __name__ == '__main__': + unittest.main() \ No newline at end of file diff --git a/interfaces/ASE_interface/tests/md.py b/interfaces/ASE_interface/tests/md.py new file mode 100644 index 0000000000..2b771eb3df --- /dev/null +++ b/interfaces/ASE_interface/tests/md.py @@ -0,0 +1,50 @@ +import unittest +import tempfile +from pathlib import Path +here = Path(__file__).parent +from ase.build import bulk +from ase.units import fs +from ase.md import Langevin +from ase.md.velocitydistribution import MaxwellBoltzmannDistribution +from abacuslite.io.generalio import load_pseudo, load_orbital +from abacuslite import AbacusProfile, Abacus + +class TestLangevinMolecularDynamics(unittest.TestCase): + + def test(self): + pporb = here.parent.parent.parent / 'tests' / 'PP_ORB' + + silicon = bulk('Si', 'diamond', a=5.43) + aprof = AbacusProfile( + command='mpirun -np 2 abacus', + pseudo_dir=pporb, + orbital_dir=pporb, + omp_num_threads=1, + ) + + with tempfile.TemporaryDirectory() as tmpdir: + abacus = Abacus( + profile=aprof, + directory=tmpdir, + pseudopotentials=load_pseudo(pporb), + basissets=load_orbital(pporb, efficiency=True), + inp={ + 'basis_type': 'lcao', + 'gamma_only': True, + 'scf_thr': 1e-3, # fast for test, wrong for production, + 'cal_force': True, + 'cal_stress': True, + 'init_chg': 'auto' + } + ) + + silicon.calc = abacus + MaxwellBoltzmannDistribution(silicon, temperature_K=300) + dyn = Langevin(silicon, + timestep=1.0 * fs, + temperature_K=300, + friction=0.01) + dyn.run(2) + +if __name__ == '__main__': + unittest.main() \ No newline at end of file diff --git a/interfaces/ASE_interface/tests/relax.py b/interfaces/ASE_interface/tests/relax.py new file mode 100644 index 0000000000..dc8e9e9fd7 --- /dev/null +++ b/interfaces/ASE_interface/tests/relax.py @@ -0,0 +1,47 @@ +import unittest +import tempfile +from pathlib import Path +here = Path(__file__).parent +from ase.build import bulk +from ase.optimize import BFGS +from abacuslite.io.generalio import load_pseudo, load_orbital +from abacuslite import AbacusProfile, Abacus + +class TestIonicRelaxationWithStress(unittest.TestCase): + + def test(self): + pporb = here.parent.parent.parent / 'tests' / 'PP_ORB' + + silicon = bulk('Si', 'diamond', a=5.43) + aprof = AbacusProfile( + command='mpirun -np 2 abacus', + pseudo_dir=pporb, + orbital_dir=pporb, + omp_num_threads=1, + ) + + with tempfile.TemporaryDirectory() as tmpdir: + abacus = Abacus( + profile=aprof, + directory=tmpdir, + pseudopotentials=load_pseudo(pporb), + basissets=load_orbital(pporb, efficiency=True), + inp={ + 'basis_type': 'lcao', + 'gamma_only': True, + 'scf_thr': 1e-3, # fast for test, wrong for production, + 'cal_force': True, + 'cal_stress': True + } + ) + + silicon.calc = abacus + e = silicon.get_potential_energy() + opt = BFGS(silicon) + opt.run(fmax=0.05, steps=1) + self.assertLessEqual(silicon.get_potential_energy(), e) + self.assertIsNotNone(silicon.calc.results['forces']) + self.assertIsNotNone(silicon.calc.results['stress']) + +if __name__ == '__main__': + unittest.main() \ No newline at end of file diff --git a/interfaces/ASE_interface/tests/scf.py b/interfaces/ASE_interface/tests/scf.py new file mode 100644 index 0000000000..4d792e8eab --- /dev/null +++ b/interfaces/ASE_interface/tests/scf.py @@ -0,0 +1,39 @@ +import unittest +import tempfile +from pathlib import Path +here = Path(__file__).parent +from ase.build import bulk +from abacuslite.io.generalio import load_pseudo, load_orbital +from abacuslite import AbacusProfile, Abacus + +class TestSCF(unittest.TestCase): + + def test(self): + pporb = here.parent.parent.parent / 'tests' / 'PP_ORB' + + silicon = bulk('Si', 'diamond', a=5.43) + aprof = AbacusProfile( + command='mpirun -np 2 abacus', + pseudo_dir=pporb, + orbital_dir=pporb, + omp_num_threads=1, + ) + + with tempfile.TemporaryDirectory() as tmpdir: + abacus = Abacus( + profile=aprof, + directory=tmpdir, + pseudopotentials=load_pseudo(pporb), + basissets=load_orbital(pporb, efficiency=True), + inp={ + 'basis_type': 'lcao', + 'gamma_only': True, + 'scf_thr': 1e-3, # fast for test, wrong for production + } + ) + + silicon.calc = abacus + print('Silicon :', silicon.get_potential_energy()) + +if __name__ == '__main__': + unittest.main() \ No newline at end of file diff --git a/interfaces/ASE_interface/tests/xtest.sh b/interfaces/ASE_interface/tests/xtest.sh new file mode 100644 index 0000000000..5fbe7fb381 --- /dev/null +++ b/interfaces/ASE_interface/tests/xtest.sh @@ -0,0 +1,8 @@ +#!/bin/bash + +set -e # Exit on error + +python3 ./scf.py -v +python3 ./relax.py -v +python3 ./md.py -v +python3 ./band.py -v diff --git a/interfaces/Candela_interface/README b/interfaces/Candela_interface/README new file mode 100644 index 0000000000..e379acbaf9 --- /dev/null +++ b/interfaces/Candela_interface/README @@ -0,0 +1 @@ +This is Candela interface with ABACUS diff --git a/interfaces/HefeiNAMD_interface/README b/interfaces/HefeiNAMD_interface/README new file mode 100644 index 0000000000..8d24a2db39 --- /dev/null +++ b/interfaces/HefeiNAMD_interface/README @@ -0,0 +1 @@ +This is Hefei-NAMD interface with ABACUS diff --git a/interfaces/PYATB_interface/README b/interfaces/PYATB_interface/README new file mode 100644 index 0000000000..d84e92a087 --- /dev/null +++ b/interfaces/PYATB_interface/README @@ -0,0 +1 @@ +This is PYATB interface with ABACUS diff --git a/interfaces/README b/interfaces/README new file mode 100644 index 0000000000..4776efad34 --- /dev/null +++ b/interfaces/README @@ -0,0 +1,38 @@ +# Interfaces for ABACUS + +This directory contains interface modules and utilities that enable seamless +integration between ABACUS (Atomic-orbital Based Ab-initio Computation at UStc) +and other scientific software packages. + +## Overview + +ABACUS is a powerful electronic structure calculation package for ab-initio +simulations. The interfaces here are designed to: +- Facilitate data exchange (input/output files, calculation results) between + ABACUS and external software +- Enable interoperability for multi-step workflows (e.g., structure + preprocessing -> ABACUS calculation -> post-analysis) +- Standardize integration methods to ensure reproducibility and ease of use + +## Usage Guidelines + +- For each software interface, refer to the dedicated README file in the + corresponding subdirectory (e.g., ASE_interface/README) for detailed usage + instructions. +- All interfaces follow consistent input/output standards to minimize workflow + disruption. +- Before using an interface, ensure you have the required dependencies installed + (listed in each subdirectory's requirements.txt). + +## Contributing + +Contributions to expand or improve ABACUS interfaces are welcome: +- Follow the ABACUS coding style and documentation standards +- Add unit tests for new interface modules +- Update this README and the supported software table when adding new interfaces +- Submit pull requests with clear descriptions of the integration functionality + +## Contact + +For questions or issues related to these interfaces, please contact the ABACUS +development team at: https://github.com/deepmodeling/abacus-develop/issues diff --git a/python/pyabacus/CMakeLists.txt b/python/pyabacus/CMakeLists.txt index 30896c01dd..621087125f 100644 --- a/python/pyabacus/CMakeLists.txt +++ b/python/pyabacus/CMakeLists.txt @@ -96,8 +96,18 @@ execute_process( set(TARGET_PACK pyabacus) set(CMAKE_INSTALL_RPATH "${PYTHON_SITE_PACKAGES}/${TARGET_PACK}") +# Option to build the driver module (requires full ABACUS library) +option(BUILD_PYABACUS_DRIVER "Build PyABACUS driver module" OFF) + # add subdirectories for submodules add_subdirectory(${PROJECT_SOURCE_DIR}/src/hsolver) add_subdirectory(${PROJECT_SOURCE_DIR}/src/ModuleBase) add_subdirectory(${PROJECT_SOURCE_DIR}/src/ModuleNAO) +add_subdirectory(${PROJECT_SOURCE_DIR}/src/ModuleESolver) + +# Conditionally add driver module +if(BUILD_PYABACUS_DRIVER) + message(STATUS "Building PyABACUS driver module") + add_subdirectory(${PROJECT_SOURCE_DIR}/src/ModuleDriver) +endif() diff --git a/python/pyabacus/CONTRIBUTING.md b/python/pyabacus/CONTRIBUTING.md index c55150bfc8..acac6d9827 100644 --- a/python/pyabacus/CONTRIBUTING.md +++ b/python/pyabacus/CONTRIBUTING.md @@ -189,7 +189,7 @@ list(APPEND _diago ${HSOLVER_PATH}/diago_david.cpp ${HSOLVER_PATH}/diag_const_nums.cpp ${HSOLVER_PATH}/diago_iter_assist.cpp - ${HSOLVER_PATH}/kernels/dngvd_op.cpp + ${HSOLVER_PATH}/kernels/hegvd_op.cpp ${HSOLVER_PATH}/kernels/bpcg_kernel_op.cpp ${BASE_PATH}/kernels/math_kernel_op.cpp ${BASE_PATH}/kernels/math_kernel_op_vec.cpp diff --git a/python/pyabacus/examples/lcao_workflow_example.py b/python/pyabacus/examples/lcao_workflow_example.py new file mode 100644 index 0000000000..20f2a1db1e --- /dev/null +++ b/python/pyabacus/examples/lcao_workflow_example.py @@ -0,0 +1,283 @@ +#!/usr/bin/env python3 +""" +Example: LCAO workflow with breakpoint support + +This example demonstrates how to use the LCAOWorkflow class to run +LCAO calculations with Python-controlled SCF and breakpoint support. + +Usage: + python lcao_workflow_example.py + +Requirements: + - pyabacus with ESolver support + - Input files (INPUT, STRU, KPT, etc.) in current directory +""" + +import numpy as np +from pathlib import Path + + +def example_basic_scf(): + """ + Basic SCF calculation example. + + Shows how to run a simple SCF calculation and get results. + """ + from pyabacus.esolver import LCAOWorkflow + + print("=" * 60) + print("Example 1: Basic SCF Calculation") + print("=" * 60) + + # Initialize workflow + workflow = LCAOWorkflow("./", gamma_only=True) + workflow.initialize() + + # Run SCF + result = workflow.run_scf(max_iter=100) + + # Print results + print(result.summary()) + print(f"\nEnergy breakdown:") + for key, value in result.energy.to_dict().items(): + print(f" {key}: {value:.8f} Ry") + + +def example_with_callbacks(): + """ + SCF calculation with callbacks example. + + Shows how to register callbacks to monitor SCF progress + and inspect state at breakpoints. + """ + from pyabacus.esolver import LCAOWorkflow + + print("\n" + "=" * 60) + print("Example 2: SCF with Callbacks") + print("=" * 60) + + # Initialize workflow + workflow = LCAOWorkflow("./", gamma_only=True) + workflow.initialize() + + # Define callback for each iteration + def print_iteration_info(wf, iter_num): + energy = wf.energy + drho = wf.drho + print(f" Iter {iter_num:3d}: E = {energy.etot:16.8f} Ry, drho = {drho:.2e}") + + # Define callback for breakpoint before after_scf + def save_final_state(wf): + print("\n[Breakpoint] Before after_scf - saving state...") + + # Get charge density + charge = wf.charge + if charge.rho.size > 0: + print(f" Charge density shape: {charge.rho.shape}") + print(f" Total charge: {charge.total_charge():.6f}") + # Save to file + np.save("charge_density.npy", charge.rho) + print(" Saved charge density to charge_density.npy") + + # Get energy + energy = wf.energy + print(f" Total energy: {energy.etot:.8f} Ry") + + # Get Hamiltonian (if available) + hamiltonian = wf.hamiltonian + if hamiltonian.nbasis > 0: + print(f" Number of basis functions: {hamiltonian.nbasis}") + print(f" Number of k-points: {hamiltonian.nks}") + + print("[Breakpoint] State inspection complete\n") + + # Register callbacks + workflow.register_callback('after_iter', print_iteration_info) + workflow.register_callback('before_after_scf', save_final_state) + + # Run SCF + print("\nStarting SCF iterations:") + result = workflow.run_scf(max_iter=100) + + print(f"\nFinal result: {'Converged' if result.converged else 'Not converged'}") + + +def example_manual_control(): + """ + Manual SCF control example. + + Shows how to manually control the SCF loop for maximum flexibility. + """ + from pyabacus.esolver import LCAOWorkflow + + print("\n" + "=" * 60) + print("Example 3: Manual SCF Control") + print("=" * 60) + + # Initialize workflow + workflow = LCAOWorkflow("./", gamma_only=True) + workflow.initialize() + + # Manual SCF control + workflow.before_scf(istep=0) + + print("\nManual SCF loop:") + max_iter = 100 + for iter_num in range(1, max_iter + 1): + # Run single iteration + workflow.run_scf_step(iter_num) + + # Get current state + energy = workflow.energy + drho = workflow.drho + + print(f" Iter {iter_num}: E = {energy.etot:.8f} Ry") + + # Custom convergence check or early termination + if workflow.is_converged: + print(f"\n Converged at iteration {iter_num}") + break + + # Example: Custom breakpoint at iteration 5 + if iter_num == 5: + print("\n [Custom breakpoint at iter 5]") + print(f" Current energy: {energy.etot:.8f} Ry") + print(f" Current drho: {drho:.2e}") + # Could save intermediate state here + + # Inspect state before finalization + print("\n[Before after_scf]") + charge = workflow.charge + hamiltonian = workflow.hamiltonian + print(f" Charge nspin: {charge.nspin}") + print(f" Hamiltonian nbasis: {hamiltonian.nbasis}") + + # Finalize + workflow.after_scf(istep=0) + print("\nSCF completed.") + + +def example_multi_k(): + """ + Multi-k calculation example. + + Shows how to run calculations with multiple k-points. + """ + from pyabacus.esolver import LCAOWorkflow + + print("\n" + "=" * 60) + print("Example 4: Multi-k Calculation") + print("=" * 60) + + # Initialize workflow with multi-k + workflow = LCAOWorkflow("./", gamma_only=False) + workflow.initialize() + + # Run SCF + result = workflow.run_scf(max_iter=100) + + print(f"\nNumber of k-points: {workflow.nks}") + print(f"Number of bands: {workflow.nbands}") + + # Access k-point specific data + for ik in range(min(workflow.nks, 3)): # Show first 3 k-points + kvec = workflow.get_kvec(ik) + eigenvalues = workflow.get_eigenvalues(ik) + print(f"\nK-point {ik}: ({kvec[0]:.4f}, {kvec[1]:.4f}, {kvec[2]:.4f})") + if eigenvalues.size > 0: + print(f" Eigenvalues (first 5): {eigenvalues[:5]}") + + +def example_data_extraction(): + """ + Data extraction example. + + Shows how to extract various data for post-processing. + """ + from pyabacus.esolver import LCAOWorkflow + + print("\n" + "=" * 60) + print("Example 5: Data Extraction") + print("=" * 60) + + workflow = LCAOWorkflow("./", gamma_only=True) + workflow.initialize() + + # Run SCF + result = workflow.run_scf(max_iter=100) + + # Extract data + print("\n1. Energy Data:") + energy = result.energy + print(f" Total energy: {energy.etot:.8f} Ry ({energy.etot * 13.6057:.8f} eV)") + energy_ev = energy.to_eV() + print(f" Band energy: {energy_ev.eband:.8f} eV") + + print("\n2. Charge Density:") + if result.charge is not None and result.charge.rho.size > 0: + charge = result.charge + print(f" Shape: {charge.rho.shape}") + print(f" Min/Max: {charge.rho.min():.6f} / {charge.rho.max():.6f}") + + print("\n3. Hamiltonian Matrices:") + hamiltonian = workflow.hamiltonian + if hamiltonian.nbasis > 0: + print(f" Number of basis: {hamiltonian.nbasis}") + print(f" Number of k-points: {hamiltonian.nks}") + if len(hamiltonian.Hk) > 0: + print(f" H(k=0) shape: {hamiltonian.Hk[0].shape}") + + print("\n4. Density Matrix:") + dm = workflow.density_matrix + if dm.nks > 0: + print(f" DM dimensions: {dm.nrow} x {dm.ncol}") + print(f" Number of k-points: {dm.nks}") + + +def main(): + """Run all examples.""" + print("PyABACUS LCAO Workflow Examples") + print("================================\n") + + # Check if input files exist + input_file = Path("INPUT") + if not input_file.exists(): + print("Note: INPUT file not found in current directory.") + print("These examples require ABACUS input files (INPUT, STRU, etc.)") + print("Please run from a directory with valid input files.\n") + print("Showing example code structure only...\n") + + # Show code structure without running + import inspect + for func in [example_basic_scf, example_with_callbacks, + example_manual_control, example_data_extraction]: + print(f"\n{'=' * 60}") + print(f"Function: {func.__name__}") + print("=" * 60) + print(func.__doc__) + return + + # Run examples + try: + example_basic_scf() + except Exception as e: + print(f"Example 1 failed: {e}") + + try: + example_with_callbacks() + except Exception as e: + print(f"Example 2 failed: {e}") + + try: + example_manual_control() + except Exception as e: + print(f"Example 3 failed: {e}") + + try: + example_data_extraction() + except Exception as e: + print(f"Example 5 failed: {e}") + + +if __name__ == "__main__": + main() diff --git a/python/pyabacus/pyproject.toml b/python/pyabacus/pyproject.toml index 7b1c4891a8..6b28b35d71 100644 --- a/python/pyabacus/pyproject.toml +++ b/python/pyabacus/pyproject.toml @@ -1,5 +1,5 @@ [build-system] -requires = ["scikit-build-core>=0.3.3", "pybind11"] +requires = ["scikit-build-core>=0.3.3", "pybind11>=2.10.0"] build-backend = "scikit_build_core.build" @@ -12,16 +12,16 @@ authors = [ { name = "Jie Li", email = "lij@aisi.ac.cn" }, { name = "Chenxu Bai", email = "chenxu.bai@stu.pku.edu.cn" }, ] -requires-python = ">=3.7" +requires-python = ">=3.8" classifiers = [ "Development Status :: 4 - Beta", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 3 :: Only", - "Programming Language :: Python :: 3.7", "Programming Language :: Python :: 3.8", "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", ] [project.optional-dependencies] diff --git a/python/pyabacus/src/ModuleBase/CMakeLists.txt b/python/pyabacus/src/ModuleBase/CMakeLists.txt index e89a065147..8d1ea32942 100644 --- a/python/pyabacus/src/ModuleBase/CMakeLists.txt +++ b/python/pyabacus/src/ModuleBase/CMakeLists.txt @@ -5,6 +5,7 @@ list(APPEND pymodule_base ${BASE_PATH}/kernels/math_kernel_op_vec.cpp ${BASE_PATH}/module_device/memory_op.cpp ${BASE_PATH}/module_device/device.cpp + ${BASE_PATH}/module_device/device_helpers.cpp ) pybind11_add_module(_base_pack MODULE ${pymodule_base}) diff --git a/python/pyabacus/src/ModuleBase/py_base_math.cpp b/python/pyabacus/src/ModuleBase/py_base_math.cpp index 3b2c54ef63..fd58284e78 100644 --- a/python/pyabacus/src/ModuleBase/py_base_math.cpp +++ b/python/pyabacus/src/ModuleBase/py_base_math.cpp @@ -5,8 +5,12 @@ #include "source_base/math_integral.h" #include "source_base/spherical_bessel_transformer.h" +#include "../utils/pybind_utils.h" + namespace py = pybind11; using namespace pybind11::literals; +using namespace pyabacus::utils; + template using overload_cast_ = pybind11::detail::overload_cast_impl; @@ -19,204 +23,99 @@ void bind_base_math(py::module& m) .def_static("dsphbesj", overload_cast_()(&ModuleBase::Sphbes::dsphbesj), "l"_a, "x"_a) .def_static("sphbesj", [](const int n, py::array_t r, const double q, const int l, py::array_t jl) { - py::buffer_info r_info = r.request(); - if (r_info.ndim != 1) - { - throw std::runtime_error("r array must be 1-dimensional"); - } - py::buffer_info jl_info = jl.request(); - if (jl_info.ndim != 1) - { - throw std::runtime_error("jl array must be 1-dimensional"); - } + check_1d_array(r, "r"); + check_1d_array(jl, "jl"); ModuleBase::Sphbes::sphbesj(n, - static_cast(r_info.ptr), + get_array_ptr(r), q, l, - static_cast(jl_info.ptr)); + get_array_ptr(jl)); }) .def_static("dsphbesj", [](const int n, py::array_t r, const double q, const int l, py::array_t djl) { - py::buffer_info r_info = r.request(); - if (r_info.ndim != 1) - { - throw std::runtime_error("r array must be 1-dimensional"); - } - py::buffer_info djl_info = djl.request(); - if (djl_info.ndim != 1) - { - throw std::runtime_error("djl array must be 1-dimensional"); - } + check_1d_array(r, "r"); + check_1d_array(djl, "djl"); ModuleBase::Sphbes::dsphbesj(n, - static_cast(r_info.ptr), + get_array_ptr(r), q, l, - static_cast(djl_info.ptr)); + get_array_ptr(djl)); }) .def_static("sphbes_zeros", [](const int l, const int n, py::array_t zeros) { - py::buffer_info zeros_info = zeros.request(); - if (zeros_info.ndim != 1) - { - throw std::runtime_error("zeros array must be 1-dimensional"); - } - ModuleBase::Sphbes::sphbes_zeros(l, n, static_cast(zeros_info.ptr)); + check_1d_array(zeros, "zeros"); + ModuleBase::Sphbes::sphbes_zeros(l, n, get_array_ptr(zeros)); }); // python binding for class Integral py::class_(m, "Integral") .def(py::init<>()) .def_static("Simpson_Integral", [](const int mesh, py::array_t func, py::array_t rab, double asum) { - py::buffer_info func_info = func.request(); - if (func_info.ndim != 1) - { - throw std::runtime_error("func array must be 1-dimensional"); - } - py::buffer_info rab_info = rab.request(); - if (rab.ndim() != 1) - { - throw std::runtime_error("rab array must be 1-dimensional"); - } + check_1d_array(func, "func"); + check_1d_array(rab, "rab"); double isum = asum; ModuleBase::Integral::Simpson_Integral(mesh, - static_cast(func_info.ptr), - static_cast(rab_info.ptr), + get_array_ptr(func), + get_array_ptr(rab), isum); return isum; }) .def_static("Simpson_Integral", [](const int mesh, py::array_t func, const double dr, double asum){ - py::buffer_info func_info = func.request(); - if (func_info.ndim != 1) - { - throw std::runtime_error("func array must be 1-dimensional"); - } - - double isum = asum; - ModuleBase::Integral::Simpson_Integral(mesh, - static_cast(func_info.ptr), - dr, - isum); - return isum; + check_1d_array(func, "func"); + + double isum = asum; + ModuleBase::Integral::Simpson_Integral(mesh, + get_array_ptr(func), + dr, + isum); + return isum; }) .def_static("Simpson_Integral_0toall", [](const int mesh, py::array_t func, py::array_t rab, py::array_t asum){ - py::buffer_info func_info = func.request(); - if (func_info.ndim != 1) - { - throw std::runtime_error("func array must be 1-dimensional"); - } - py::buffer_info rab_info = rab.request(); - if (rab.ndim() != 1) - { - throw std::runtime_error("rab array must be 1-dimensional"); - } - py::buffer_info asum_info = asum.request(); - if (asum.ndim() != 1) - { - throw std::runtime_error("asum array must be 1-dimensional"); - } + check_1d_array(func, "func"); + check_1d_array(rab, "rab"); + check_1d_array(asum, "asum"); ModuleBase::Integral::Simpson_Integral_0toall(mesh, - static_cast(func_info.ptr), - static_cast(rab_info.ptr), - static_cast(asum_info.ptr)); + get_array_ptr(func), + get_array_ptr(rab), + get_array_ptr(asum)); }) .def_static("Simpson_Integral_alltoinf", [](const int mesh, py::array_t func, py::array_t rab, py::array_t asum){ - py::buffer_info func_info = func.request(); - if (func_info.ndim != 1) - { - throw std::runtime_error("func array must be 1-dimensional"); - } - py::buffer_info rab_info = rab.request(); - if (rab.ndim() != 1) - { - throw std::runtime_error("rab array must be 1-dimensional"); - } - py::buffer_info asum_info = asum.request(); - if (asum.ndim() != 1) - { - throw std::runtime_error("asum array must be 1-dimensional"); - } + check_1d_array(func, "func"); + check_1d_array(rab, "rab"); + check_1d_array(asum, "asum"); ModuleBase::Integral::Simpson_Integral_alltoinf(mesh, - static_cast(func_info.ptr), - static_cast(rab_info.ptr), - static_cast(asum_info.ptr)); - }) - .def_static("Simpson_Integral_alltoinf", [](const int mesh, py::array_t func, py::array_t rab, py::array_t asum){ - py::buffer_info func_info = func.request(); - if (func_info.ndim != 1) - { - throw std::runtime_error("func array must be 1-dimensional"); - } - py::buffer_info rab_info = rab.request(); - if (rab.ndim() != 1) - { - throw std::runtime_error("rab array must be 1-dimensional"); - } - py::buffer_info asum_info = asum.request(); - if (asum.ndim() != 1) - { - throw std::runtime_error("asum array must be 1-dimensional"); - } - ModuleBase::Integral::Simpson_Integral_alltoinf(mesh, - static_cast(func_info.ptr), - static_cast(rab_info.ptr), - static_cast(asum_info.ptr)); + get_array_ptr(func), + get_array_ptr(rab), + get_array_ptr(asum)); }) .def_static("simpson", [](const int n, py::array_t f, const double dx){ - py::buffer_info f_info = f.request(); - if (f_info.ndim != 1) - { - throw std::runtime_error("f array must be 1-dimensional"); - } + check_1d_array(f, "f"); return ModuleBase::Integral::simpson(n, - static_cast(f_info.ptr), + get_array_ptr(f), dx); }) .def_static("simpson", [](const int n, py::array_t f, py::array_t h){ - py::buffer_info f_info = f.request(); - if (f_info.ndim != 1) - { - throw std::runtime_error("f array must be 1-dimensional"); - } - py::buffer_info h_info = h.request(); - if (h.ndim() != 1) - { - throw std::runtime_error("h array must be 1-dimensional"); - } + check_1d_array(f, "f"); + check_1d_array(h, "h"); return ModuleBase::Integral::simpson(n, - static_cast(f_info.ptr), - static_cast(h_info.ptr)); + get_array_ptr(f), + get_array_ptr(h)); }) .def_static("Gauss_Legendre_grid_and_weight", [](const int n, py::array_t x, py::array_t w){ - py::buffer_info x_info = x.request(); - if (x_info.ndim != 1) - { - throw std::runtime_error("x array must be 1-dimensional"); - } - py::buffer_info w_info = w.request(); - if (w.ndim() != 1) - { - throw std::runtime_error("w array must be 1-dimensional"); - } + check_1d_array(x, "x"); + check_1d_array(w, "w"); ModuleBase::Integral::Gauss_Legendre_grid_and_weight(n, - static_cast(x_info.ptr), - static_cast(w_info.ptr)); + get_array_ptr(x), + get_array_ptr(w)); }) .def_static("Gauss_Legendre_grid_and_weight", [](const double xmin, const double xmax, const int n, py::array_t x, py::array_t w){ - py::buffer_info x_info = x.request(); - if (x_info.ndim != 1) - { - throw std::runtime_error("x array must be 1-dimensional"); - } - py::buffer_info w_info = w.request(); - if (w.ndim() != 1) - { - throw std::runtime_error("w array must be 1-dimensional"); - } + check_1d_array(x, "x"); + check_1d_array(w, "w"); ModuleBase::Integral::Gauss_Legendre_grid_and_weight(xmin, xmax, n, - static_cast(x_info.ptr), - static_cast(w_info.ptr)); + get_array_ptr(x), + get_array_ptr(w)); }); py::class_(m, "SphericalBesselTransformer") .def(py::init<>()); @@ -227,4 +126,4 @@ PYBIND11_MODULE(_base_pack, m) m.doc() = "Submodule for pyabacus: ModuleBase"; bind_base_math(m); -} \ No newline at end of file +} diff --git a/python/pyabacus/src/ModuleDriver/CMakeLists.txt b/python/pyabacus/src/ModuleDriver/CMakeLists.txt new file mode 100644 index 0000000000..9eb8f764e0 --- /dev/null +++ b/python/pyabacus/src/ModuleDriver/CMakeLists.txt @@ -0,0 +1,21 @@ +# CMakeLists.txt for ModuleDriver Python bindings +# This module provides Python bindings for the ABACUS Driver +# +# IMPORTANT: This module requires the full ABACUS library to be built with -fPIC. +# Currently, the standard ABACUS build does not support this. +# +# To use pyabacus.abacus(), you need to: +# 1. Build ABACUS as a shared library (not yet supported upstream) +# 2. Or use the subprocess-based fallback implementation +# +# For now, this module is disabled and the Python-side implementation +# uses subprocess to call the abacus executable. + +message(STATUS "PyABACUS driver module: C++ bindings require ABACUS to be built as a shared library") +message(STATUS "PyABACUS driver module: Using subprocess-based fallback implementation instead") +message(STATUS "PyABACUS driver module: Skipping C++ driver build") + +# The driver module is not built - Python fallback is used instead +return() + + diff --git a/python/pyabacus/src/ModuleDriver/py_driver.cpp b/python/pyabacus/src/ModuleDriver/py_driver.cpp new file mode 100644 index 0000000000..7f5279e8e7 --- /dev/null +++ b/python/pyabacus/src/ModuleDriver/py_driver.cpp @@ -0,0 +1,660 @@ +/** + * @file py_driver.cpp + * @brief Implementation of PyDriver and pybind11 bindings + * + * This file implements the PyDriver class that wraps the complete ABACUS + * calculation workflow for Python access. + */ + +#include "py_driver.hpp" + +#include +#include +#include + +// ABACUS headers +#include "source_main/driver.h" +#include "source_cell/unitcell.h" +#include "source_cell/check_atomic_stru.h" +#include "source_esolver/esolver.h" +#include "source_io/read_input.h" +#include "source_io/input_conv.h" +#include "source_io/module_parameter/parameter.h" +#include "source_base/global_variable.h" +#include "source_base/global_file.h" +#include "source_base/timer.h" +#include "source_base/memory.h" +#include "source_base/matrix.h" +#include "source_relax/relax_driver.h" + +#include +#include +#include +#include +#include +#include + +namespace py = pybind11; +namespace fs = std::filesystem; + +namespace py_driver +{ + +/** + * @brief RAII class for managing global state + * + * Saves and restores global state to allow multiple calculations + * in the same Python session. + */ +class GlobalStateGuard +{ +public: + GlobalStateGuard() + { + // Save current state + saved_my_rank_ = GlobalV::MY_RANK; + saved_nproc_ = GlobalV::NPROC; + } + + ~GlobalStateGuard() + { + // Restore state + GlobalV::MY_RANK = saved_my_rank_; + GlobalV::NPROC = saved_nproc_; + } + +private: + int saved_my_rank_ = 0; + int saved_nproc_ = 1; +}; + +/** + * @brief Implementation class for PyDriver (PIMPL pattern) + */ +class PyDriver::Impl +{ +public: + Impl() = default; + ~Impl() { cleanup(); } + + void cleanup() + { + if (p_esolver_) + { + delete p_esolver_; + p_esolver_ = nullptr; + } + ucell_.reset(); + } + + // ESolver instance + ModuleESolver::ESolver* p_esolver_ = nullptr; + + // UnitCell instance + std::unique_ptr ucell_; + + // Output stream for running log + std::ofstream ofs_running_; + std::ofstream ofs_warning_; + + // Original working directory + std::string original_cwd_; + + // Null stream for silent mode + std::ofstream null_stream_; + + // Store original stream buffers + std::streambuf* orig_running_buf_ = nullptr; + std::streambuf* orig_warning_buf_ = nullptr; +}; + +PyDriver::PyDriver() : impl_(std::make_unique()) +{ +} + +PyDriver::~PyDriver() +{ + cleanup_context(); +} + +void PyDriver::initialize_context() +{ + // Set up for serial mode (no MPI in Python context) + PARAM.set_pal_param(0, 1, 1); // rank=0, nproc=1, nthread=1 + GlobalV::MY_RANK = 0; + GlobalV::NPROC = 1; + + initialized_ = true; +} + +void PyDriver::cleanup_context() +{ + if (impl_) + { + impl_->cleanup(); + + // Restore original stream buffers + // Note: We use static_cast to std::ostream& because std::ofstream::rdbuf() + // doesn't accept arguments, but std::ostream::rdbuf(streambuf*) does + if (impl_->orig_running_buf_) + { + static_cast(GlobalV::ofs_running).rdbuf(impl_->orig_running_buf_); + impl_->orig_running_buf_ = nullptr; + } + if (impl_->orig_warning_buf_) + { + static_cast(GlobalV::ofs_warning).rdbuf(impl_->orig_warning_buf_); + impl_->orig_warning_buf_ = nullptr; + } + + // Close output streams + if (impl_->ofs_running_.is_open()) + { + impl_->ofs_running_.close(); + } + if (impl_->ofs_warning_.is_open()) + { + impl_->ofs_warning_.close(); + } + if (impl_->null_stream_.is_open()) + { + impl_->null_stream_.close(); + } + + // Restore working directory if changed + if (!impl_->original_cwd_.empty()) + { + try + { + fs::current_path(impl_->original_cwd_); + } + catch (...) + { + // Ignore errors + } + impl_->original_cwd_.clear(); + } + } + + initialized_ = false; +} + +void PyDriver::setup_output(const std::string& output_dir, int verbosity) +{ + std::string out_dir = output_dir.empty() ? "OUT.PYABACUS" : output_dir; + + // Create output directory + fs::create_directories(out_dir); + + // Save original stream buffers + impl_->orig_running_buf_ = GlobalV::ofs_running.rdbuf(); + impl_->orig_warning_buf_ = GlobalV::ofs_warning.rdbuf(); + + // Open log files based on verbosity + if (verbosity >= 1) + { + std::string running_log = out_dir + "/running.log"; + impl_->ofs_running_.open(running_log); + if (impl_->ofs_running_.is_open()) + { + static_cast(GlobalV::ofs_running).rdbuf(impl_->ofs_running_.rdbuf()); + } + } + else + { + // Silent mode - redirect to null + impl_->null_stream_.open("/dev/null"); + if (impl_->null_stream_.is_open()) + { + static_cast(GlobalV::ofs_running).rdbuf(impl_->null_stream_.rdbuf()); + } + } + + std::string warning_log = out_dir + "/warning.log"; + impl_->ofs_warning_.open(warning_log); + if (impl_->ofs_warning_.is_open()) + { + static_cast(GlobalV::ofs_warning).rdbuf(impl_->ofs_warning_.rdbuf()); + } +} + +void PyDriver::read_input( + const std::string& input_dir, + const std::string& input_file, + const std::string& stru_file, + const std::string& kpt_file, + const std::string& pseudo_dir, + const std::string& orbital_dir, + const std::string& output_dir) +{ + // Save original working directory + impl_->original_cwd_ = fs::current_path().string(); + + // Determine input file path + std::string input_path; + if (!input_file.empty()) + { + input_path = fs::absolute(input_file).string(); + } + else + { + input_path = (fs::absolute(input_dir) / "INPUT").string(); + } + + // Check if input file exists + if (!fs::exists(input_path)) + { + throw std::runtime_error("INPUT file not found: " + input_path); + } + + // Change to input directory for relative paths + std::string work_dir = input_dir; + if (work_dir.empty()) + { + work_dir = fs::path(input_path).parent_path().string(); + } + if (!work_dir.empty() && work_dir != ".") + { + fs::current_path(work_dir); + } + + // Read INPUT file + // Note: ReadInput will set PARAM.globalv.global_in_card internally + ModuleIO::ReadInput reader(0); // rank 0 + std::string input_filename = fs::path(input_path).filename().string(); + reader.read_parameters(PARAM, input_filename); + + // Create output directory + reader.create_directory(PARAM); + + // Convert input parameters to internal format + Input_Conv::Convert(); +} + +CalculationResult PyDriver::collect_results(bool calculate_force, bool calculate_stress) +{ + CalculationResult result; + + if (!impl_->p_esolver_ || !impl_->ucell_) + { + return result; + } + + // Get convergence info + result.converged = impl_->p_esolver_->conv_esolver; + + // Get energy + result.etot = impl_->p_esolver_->cal_energy(); + + // Get system info from UnitCell + result.nat = impl_->ucell_->nat; + result.ntype = impl_->ucell_->ntype; + + // Calculate forces if requested + if (calculate_force) + { + ModuleBase::matrix force(result.nat, 3); + impl_->p_esolver_->cal_force(*impl_->ucell_, force); + + // Convert to numpy array + std::vector shape = {static_cast(result.nat), 3}; + result.forces = py::array_t(shape); + auto buf = result.forces.request(); + double* ptr = static_cast(buf.ptr); + + for (int i = 0; i < result.nat; ++i) + { + for (int j = 0; j < 3; ++j) + { + ptr[i * 3 + j] = force(i, j); + } + } + result.has_forces = true; + } + + // Calculate stress if requested + if (calculate_stress) + { + ModuleBase::matrix stress(3, 3); + impl_->p_esolver_->cal_stress(*impl_->ucell_, stress); + + // Convert to numpy array + std::vector shape = {3, 3}; + result.stress = py::array_t(shape); + auto buf = result.stress.request(); + double* ptr = static_cast(buf.ptr); + + for (int i = 0; i < 3; ++i) + { + for (int j = 0; j < 3; ++j) + { + ptr[i * 3 + j] = stress(i, j); + } + } + result.has_stress = true; + } + + // Collect output file tracking information + result.output_dir = PARAM.sys.global_out_dir; + + // Find the log file + if (!result.output_dir.empty() && fs::exists(result.output_dir)) + { + // Look for running_*.log files + std::vector log_patterns = { + "running_scf.log", + "running_relax.log", + "running_cell-relax.log", + "running_nscf.log", + "running_md.log" + }; + + for (const auto& log_name : log_patterns) + { + std::string log_path = result.output_dir + "/" + log_name; + if (fs::exists(log_path)) + { + result.log_file = log_path; + break; + } + } + + // Iterate directory to populate output_files map + try + { + for (const auto& entry : fs::directory_iterator(result.output_dir)) + { + if (entry.is_regular_file()) + { + std::string filename = entry.path().filename().string(); + std::string full_path = entry.path().string(); + result.output_files[filename] = full_path; + } + } + } + catch (const std::exception& e) + { + // Ignore errors during directory iteration + } + } + + return result; +} + +CalculationResult PyDriver::run( + const std::string& input_dir, + const std::string& input_file, + const std::string& stru_file, + const std::string& kpt_file, + const std::string& pseudo_dir, + const std::string& orbital_dir, + const std::string& output_dir, + bool calculate_force, + bool calculate_stress, + int verbosity) +{ + // Use RAII guard for global state + GlobalStateGuard state_guard; + + // Clean up any previous calculation + cleanup_context(); + + // Initialize context + initialize_context(); + + // Setup output + setup_output(output_dir, verbosity); + + // Start timer + ModuleBase::timer::start(); + + try + { + // Read input files + read_input(input_dir, input_file, stru_file, kpt_file, + pseudo_dir, orbital_dir, output_dir); + + // Create UnitCell + impl_->ucell_ = std::make_unique(); + impl_->ucell_->setup( + PARAM.inp.latname, + PARAM.inp.ntype, + PARAM.inp.lmaxmax, + PARAM.inp.init_vel, + PARAM.inp.fixed_axes + ); + + // Read structure + impl_->ucell_->setup_cell(PARAM.globalv.global_in_stru, GlobalV::ofs_running); + + // Check atomic structure + unitcell::check_atomic_stru(*impl_->ucell_, PARAM.inp.min_dist_coef); + + // Initialize ESolver + impl_->p_esolver_ = ModuleESolver::init_esolver(PARAM.inp, *impl_->ucell_); + + // Run before_all_runners + impl_->p_esolver_->before_all_runners(*impl_->ucell_, PARAM.inp); + + // Run calculation based on calculation type + const std::string& cal = PARAM.inp.calculation; + + if (cal == "scf" || cal == "relax" || cal == "cell-relax" || cal == "nscf") + { + Relax_Driver rl_driver; + rl_driver.relax_driver(impl_->p_esolver_, *impl_->ucell_, PARAM.inp); + } + else if (cal == "get_s") + { + impl_->p_esolver_->runner(*impl_->ucell_, 0); + } + else + { + throw std::runtime_error("Unsupported calculation type: " + cal); + } + + // Collect results + last_result_ = collect_results(calculate_force, calculate_stress); + + // Run after_all_runners + impl_->p_esolver_->after_all_runners(*impl_->ucell_); + } + catch (const std::exception& e) + { + // Stop timer on error + ModuleBase::timer::finish(GlobalV::ofs_running); + // Clean up on error + cleanup_context(); + throw; + } + + // Stop timer + ModuleBase::timer::finish(GlobalV::ofs_running); + + // Print memory usage + ModuleBase::Memory::print_all(GlobalV::ofs_running); + + return last_result_; +} + +} // namespace py_driver + +// ============================================================================ +// Pybind11 Module Definition +// ============================================================================ + +PYBIND11_MODULE(_driver_pack, m) +{ + m.doc() = R"pbdoc( + PyABACUS Driver Module + ---------------------- + + This module provides Python bindings for running complete ABACUS + DFT calculations. + + Main Classes + ------------ + PyDriver : Main driver class for running calculations + CalculationResult : Container for calculation results + + Example + ------- + >>> from pyabacus.driver import PyDriver + >>> driver = PyDriver() + >>> result = driver.run("./Si_scf/") + >>> print(f"Energy: {result.etot_eV()} eV") + >>> print(result.summary()) + )pbdoc"; + + // Bind CalculationResult + py::class_(m, "CalculationResult", + R"pbdoc( + Container for DFT calculation results. + + Attributes + ---------- + converged : bool + Whether SCF converged + niter : int + Number of SCF iterations + drho : float + Final charge density difference + etot : float + Total energy in Rydberg + forces : numpy.ndarray + Forces on atoms (nat, 3) in Ry/Bohr + stress : numpy.ndarray + Stress tensor (3, 3) in kbar + )pbdoc") + .def(py::init<>()) + .def_readonly("converged", &py_driver::CalculationResult::converged, + "Whether SCF converged") + .def_readonly("niter", &py_driver::CalculationResult::niter, + "Number of SCF iterations") + .def_readonly("drho", &py_driver::CalculationResult::drho, + "Final charge density difference") + .def_readonly("etot", &py_driver::CalculationResult::etot, + "Total energy (Ry)") + .def_readonly("eband", &py_driver::CalculationResult::eband, + "Band energy (Ry)") + .def_readonly("hartree_energy", &py_driver::CalculationResult::hartree_energy, + "Hartree energy (Ry)") + .def_readonly("etxc", &py_driver::CalculationResult::etxc, + "Exchange-correlation energy (Ry)") + .def_readonly("ewald_energy", &py_driver::CalculationResult::ewald_energy, + "Ewald energy (Ry)") + .def_readonly("demet", &py_driver::CalculationResult::demet, + "-TS term for metals (Ry)") + .def_readonly("exx", &py_driver::CalculationResult::exx, + "Exact exchange energy (Ry)") + .def_readonly("evdw", &py_driver::CalculationResult::evdw, + "van der Waals energy (Ry)") + .def_readonly("forces", &py_driver::CalculationResult::forces, + "Forces on atoms (nat, 3) in Ry/Bohr") + .def_readonly("has_forces", &py_driver::CalculationResult::has_forces, + "Whether forces are available") + .def_readonly("stress", &py_driver::CalculationResult::stress, + "Stress tensor (3, 3) in kbar") + .def_readonly("has_stress", &py_driver::CalculationResult::has_stress, + "Whether stress is available") + .def_readonly("fermi_energy", &py_driver::CalculationResult::fermi_energy, + "Fermi energy (eV)") + .def_readonly("bandgap", &py_driver::CalculationResult::bandgap, + "Band gap (eV)") + .def_readonly("nat", &py_driver::CalculationResult::nat, + "Number of atoms") + .def_readonly("ntype", &py_driver::CalculationResult::ntype, + "Number of atom types") + .def_readonly("nbands", &py_driver::CalculationResult::nbands, + "Number of bands") + .def_readonly("nks", &py_driver::CalculationResult::nks, + "Number of k-points") + .def_readonly("output_dir", &py_driver::CalculationResult::output_dir, + "Path to output directory (OUT.$suffix)") + .def_readonly("log_file", &py_driver::CalculationResult::log_file, + "Path to the main log file") + .def_readonly("output_files", &py_driver::CalculationResult::output_files, + "Dictionary of output files (filename -> full path)") + .def("etot_eV", &py_driver::CalculationResult::etot_eV, + "Get total energy in eV") + .def("get_energies", &py_driver::CalculationResult::get_energies, + "Get all energies as a dictionary") + .def("get_forces_eV_Ang", &py_driver::CalculationResult::get_forces_eV_Ang, + "Get forces in eV/Angstrom") + .def("summary", &py_driver::CalculationResult::summary, + "Get a summary string of the calculation result") + .def("__repr__", [](const py_driver::CalculationResult& r) { + std::ostringstream ss; + ss << ""; + return ss.str(); + }); + + // Bind PyDriver + py::class_(m, "PyDriver", + R"pbdoc( + Python wrapper for ABACUS Driver. + + This class provides a Python interface for running complete ABACUS + DFT calculations. + + Example + ------- + >>> driver = PyDriver() + >>> result = driver.run( + ... input_dir="./Si_scf/", + ... calculate_force=True, + ... calculate_stress=True + ... ) + >>> print(f"Energy: {result.etot_eV()} eV") + >>> print(f"Converged: {result.converged}") + )pbdoc") + .def(py::init<>()) + .def("run", &py_driver::PyDriver::run, + R"pbdoc( + Run a complete DFT calculation. + + Parameters + ---------- + input_dir : str, optional + Directory containing INPUT, STRU, KPT files (default: ".") + input_file : str, optional + Explicit path to INPUT file + stru_file : str, optional + Explicit path to STRU file + kpt_file : str, optional + Explicit path to KPT file + pseudo_dir : str, optional + Directory containing pseudopotentials + orbital_dir : str, optional + Directory containing orbital files + output_dir : str, optional + Directory for output files + calculate_force : bool, optional + Whether to calculate forces (default: True) + calculate_stress : bool, optional + Whether to calculate stress (default: False) + verbosity : int, optional + Output verbosity level (0=silent, 1=normal, 2=verbose) + + Returns + ------- + CalculationResult + Container with all calculation results + )pbdoc", + py::arg("input_dir") = ".", + py::arg("input_file") = "", + py::arg("stru_file") = "", + py::arg("kpt_file") = "", + py::arg("pseudo_dir") = "", + py::arg("orbital_dir") = "", + py::arg("output_dir") = "", + py::arg("calculate_force") = true, + py::arg("calculate_stress") = false, + py::arg("verbosity") = 1) + .def("is_ready", &py_driver::PyDriver::is_ready, + "Check if the driver is ready for calculation") + .def("get_last_result", &py_driver::PyDriver::get_last_result, + py::return_value_policy::reference_internal, + "Get the last calculation result"); +} diff --git a/python/pyabacus/src/ModuleDriver/py_driver.hpp b/python/pyabacus/src/ModuleDriver/py_driver.hpp new file mode 100644 index 0000000000..db426cee0b --- /dev/null +++ b/python/pyabacus/src/ModuleDriver/py_driver.hpp @@ -0,0 +1,249 @@ +/** + * @file py_driver.hpp + * @brief Python bindings for ABACUS Driver - complete DFT calculation workflow + * + * This file provides the PyDriver class that wraps the complete ABACUS + * calculation workflow, enabling Python to run full DFT calculations. + */ + +#ifndef PY_DRIVER_HPP +#define PY_DRIVER_HPP + +#include +#include +#include + +#include +#include +#include +#include +#include +#include + +namespace py = pybind11; + +namespace py_driver +{ + +/** + * @brief Result container for calculation results + * + * Stores all results from a DFT calculation including energies, + * forces, stress, and convergence information. + */ +struct CalculationResult +{ + // Convergence info + bool converged = false; + int niter = 0; + double drho = 0.0; + + // Energies (in Rydberg) + double etot = 0.0; + double eband = 0.0; + double hartree_energy = 0.0; + double etxc = 0.0; + double ewald_energy = 0.0; + double demet = 0.0; + double exx = 0.0; + double evdw = 0.0; + + // Forces (nat x 3, in Ry/Bohr) + py::array_t forces; + bool has_forces = false; + + // Stress (3 x 3, in kbar) + py::array_t stress; + bool has_stress = false; + + // Electronic structure info + double fermi_energy = 0.0; // in eV + double bandgap = 0.0; // in eV + int nat = 0; + int ntype = 0; + int nbands = 0; + int nks = 0; + + // Output file tracking + std::string output_dir = ""; // Path to OUT.$suffix folder + std::string log_file = ""; // Path to the main log file + std::map output_files; // filename -> full path + + // Unit conversion constants + static constexpr double Ry_to_eV = 13.605693122994; + static constexpr double Bohr_to_Ang = 0.529177249; + + // Convenience methods + double etot_eV() const { return etot * Ry_to_eV; } + + py::dict get_energies() const + { + py::dict result; + result["etot"] = etot; + result["etot_eV"] = etot * Ry_to_eV; + result["eband"] = eband; + result["hartree_energy"] = hartree_energy; + result["etxc"] = etxc; + result["ewald_energy"] = ewald_energy; + result["demet"] = demet; + result["exx"] = exx; + result["evdw"] = evdw; + return result; + } + + py::array_t get_forces_eV_Ang() const + { + if (!has_forces) + { + throw std::runtime_error("Forces not available. Set calculate_force=True."); + } + // Convert from Ry/Bohr to eV/Ang + auto buf = forces.request(); + auto result = py::array_t(buf.shape); + auto result_buf = result.request(); + double* src = static_cast(buf.ptr); + double* dst = static_cast(result_buf.ptr); + double factor = Ry_to_eV / Bohr_to_Ang; + for (ssize_t i = 0; i < buf.size; ++i) + { + dst[i] = src[i] * factor; + } + return result; + } + + std::string summary() const + { + std::ostringstream ss; + ss << "=== ABACUS Calculation Result ===\n"; + ss << "Converged: " << (converged ? "Yes" : "No") << "\n"; + ss << "SCF iterations: " << niter << "\n"; + ss << "Final drho: " << std::scientific << drho << "\n"; + ss << "\nEnergies:\n"; + ss << std::fixed << std::setprecision(8); + ss << " Total energy: " << etot << " Ry (" << etot * Ry_to_eV << " eV)\n"; + ss << " Band energy: " << eband << " Ry\n"; + ss << " Hartree: " << hartree_energy << " Ry\n"; + ss << " XC energy: " << etxc << " Ry\n"; + ss << " Ewald: " << ewald_energy << " Ry\n"; + if (has_forces) + { + ss << "\nForces: calculated (" << nat << " atoms)\n"; + } + if (has_stress) + { + ss << "Stress: calculated\n"; + } + ss << "\nSystem info:\n"; + ss << " Atoms: " << nat << ", Types: " << ntype << "\n"; + ss << " Bands: " << nbands << ", K-points: " << nks << "\n"; + if (fermi_energy != 0.0) + { + ss << " Fermi energy: " << fermi_energy << " eV\n"; + } + if (bandgap > 0.0) + { + ss << " Band gap: " << bandgap << " eV\n"; + } + // Output file tracking + if (!output_dir.empty()) + { + ss << "\nOutput:\n"; + ss << " Directory: " << output_dir << "\n"; + if (!log_file.empty()) + { + // Extract just the filename from the path + size_t pos = log_file.find_last_of("/\\"); + std::string log_filename = (pos != std::string::npos) ? log_file.substr(pos + 1) : log_file; + ss << " Log file: " << log_filename << "\n"; + } + if (!output_files.empty()) + { + ss << " Files: " << output_files.size() << " output files\n"; + } + } + return ss.str(); + } +}; + +/** + * @brief Python wrapper for ABACUS Driver + * + * This class provides a Python interface for running complete ABACUS + * DFT calculations. It handles: + * - Input file reading (INPUT, STRU, KPT) + * - ESolver initialization and execution + * - Result collection (energy, forces, stress) + * - Global state management + */ +class PyDriver +{ +public: + PyDriver(); + ~PyDriver(); + + // Disable copy + PyDriver(const PyDriver&) = delete; + PyDriver& operator=(const PyDriver&) = delete; + + /** + * @brief Run a complete DFT calculation + * + * @param input_dir Directory containing INPUT, STRU, KPT files + * @param input_file Optional: explicit path to INPUT file + * @param stru_file Optional: explicit path to STRU file + * @param kpt_file Optional: explicit path to KPT file + * @param pseudo_dir Optional: directory containing pseudopotentials + * @param orbital_dir Optional: directory containing orbital files + * @param output_dir Optional: directory for output files + * @param calculate_force Whether to calculate forces + * @param calculate_stress Whether to calculate stress + * @param verbosity Output verbosity level (0=silent, 1=normal, 2=verbose) + * @return CalculationResult containing all results + */ + CalculationResult run( + const std::string& input_dir = ".", + const std::string& input_file = "", + const std::string& stru_file = "", + const std::string& kpt_file = "", + const std::string& pseudo_dir = "", + const std::string& orbital_dir = "", + const std::string& output_dir = "", + bool calculate_force = true, + bool calculate_stress = false, + int verbosity = 1 + ); + + /** + * @brief Check if the driver is ready for calculation + */ + bool is_ready() const { return initialized_; } + + /** + * @brief Get the last calculation result + */ + const CalculationResult& get_last_result() const { return last_result_; } + +private: + class Impl; + std::unique_ptr impl_; + + bool initialized_ = false; + CalculationResult last_result_; + + // Internal methods + void initialize_context(); + void cleanup_context(); + void read_input(const std::string& input_dir, + const std::string& input_file, + const std::string& stru_file, + const std::string& kpt_file, + const std::string& pseudo_dir, + const std::string& orbital_dir, + const std::string& output_dir); + void setup_output(const std::string& output_dir, int verbosity); + CalculationResult collect_results(bool calculate_force, bool calculate_stress); +}; + +} // namespace py_driver + +#endif // PY_DRIVER_HPP diff --git a/python/pyabacus/src/ModuleESolver/CMakeLists.txt b/python/pyabacus/src/ModuleESolver/CMakeLists.txt new file mode 100644 index 0000000000..e45f032dcf --- /dev/null +++ b/python/pyabacus/src/ModuleESolver/CMakeLists.txt @@ -0,0 +1,53 @@ +# CMakeLists.txt for ModuleESolver Python bindings +# This module provides Python bindings for ESolver_KS_LCAO + +# Set paths for ESolver related sources +set(ESOLVER_PATH "${ABACUS_SOURCE_DIR}/source_esolver") +set(ESTATE_PATH "${ABACUS_SOURCE_DIR}/source_estate") +set(LCAO_PATH "${ABACUS_SOURCE_DIR}/source_lcao") +set(HAMILT_PATH "${ABACUS_SOURCE_DIR}/source_hamilt") +set(CELL_PATH "${ABACUS_SOURCE_DIR}/source_cell") +set(PSI_PATH "${ABACUS_SOURCE_DIR}/source_psi") +set(BASIS_PATH "${ABACUS_SOURCE_DIR}/source_basis") +set(IO_PATH "${ABACUS_SOURCE_DIR}/source_io") + +# Python module source files - only the binding code +list(APPEND pymodule_esolver + ${PROJECT_SOURCE_DIR}/src/ModuleESolver/py_esolver_lcao.cpp +) + +# Create pybind11 module +pybind11_add_module(_esolver_pack MODULE ${pymodule_esolver}) + +target_include_directories(_esolver_pack PRIVATE + ${ABACUS_SOURCE_DIR} + ${ESOLVER_PATH} + ${ESTATE_PATH} + ${ESTATE_PATH}/module_charge + ${ESTATE_PATH}/module_dm + ${ESTATE_PATH}/potentials + ${LCAO_PATH} + ${LCAO_PATH}/module_hcontainer + ${HAMILT_PATH} + ${CELL_PATH} + ${PSI_PATH} + ${BASIS_PATH} + ${BASIS_PATH}/module_ao + ${BASIS_PATH}/module_nao + ${IO_PATH} + ${IO_PATH}/module_parameter +) + +# Only link pybind11 headers - the module uses placeholder implementations +# that don't require actual ABACUS libraries +target_link_libraries(_esolver_pack PRIVATE + pybind11::headers +) + +target_compile_definitions(_esolver_pack PRIVATE VERSION_INFO=${PROJECT_VERSION}) + +# Set RPATH for shared libraries +set_target_properties(_esolver_pack PROPERTIES INSTALL_RPATH "$ORIGIN") + +# Install targets +install(TARGETS _esolver_pack DESTINATION ${TARGET_PACK}/esolver) diff --git a/python/pyabacus/src/ModuleESolver/components/charge_mixer_wrapper.hpp b/python/pyabacus/src/ModuleESolver/components/charge_mixer_wrapper.hpp new file mode 100644 index 0000000000..0fc299ddf6 --- /dev/null +++ b/python/pyabacus/src/ModuleESolver/components/charge_mixer_wrapper.hpp @@ -0,0 +1,314 @@ +/** + * @file charge_mixer_wrapper.hpp + * @brief Wrapper implementation for ABACUS Charge_Mixing + * + * Wraps the ABACUS Charge_Mixing class to implement IChargeMixer interface. + */ + +#ifndef PYABACUS_ESOLVER_CHARGE_MIXER_WRAPPER_HPP +#define PYABACUS_ESOLVER_CHARGE_MIXER_WRAPPER_HPP + +#include "../interfaces/i_charge_mixer.hpp" +#include "../../utils/pybind_utils.h" + +#include +#include + +namespace pyabacus { +namespace esolver { + +/** + * @brief Wrapper for ABACUS Charge_Mixing class + * + * This class wraps the ABACUS charge mixing functionality + * to provide a clean Python interface. + */ +class ChargeMixerWrapper : public IChargeMixer +{ +public: + ChargeMixerWrapper() = default; + + ChargeMixerWrapper(int nspin, int nrxx) + : nspin_(nspin), nrxx_(nrxx) + { + // Initialize history buffers for Pulay mixing + rho_history_.reserve(config_.ndim); + residual_history_.reserve(config_.ndim); + } + + ~ChargeMixerWrapper() override = default; + + // ==================== Core Mixing Operations ==================== + + py::array_t mix(const py::array_t& rho_in, + const py::array_t& rho_out) override + { + using namespace pyabacus::utils; + + // Validate input arrays + check_array_size(rho_in, static_cast(nspin_ * nrxx_), "rho_in"); + check_array_size(rho_out, static_cast(nspin_ * nrxx_), "rho_out"); + + const double* in_ptr = get_array_ptr(rho_in); + const double* out_ptr = get_array_ptr(rho_out); + + // Create output array + py::array_t rho_mixed({static_cast(nspin_), + static_cast(nrxx_)}); + double* mixed_ptr = get_array_ptr(rho_mixed); + + // Calculate drho + drho_ = 0.0; + for (size_t i = 0; i < static_cast(nspin_ * nrxx_); ++i) + { + double diff = out_ptr[i] - in_ptr[i]; + drho_ += diff * diff; + } + drho_ = std::sqrt(drho_ / (nspin_ * nrxx_)); + + // Perform mixing based on method + switch (config_.method) + { + case MixingMethod::Plain: + mix_plain(in_ptr, out_ptr, mixed_ptr); + break; + case MixingMethod::Pulay: + mix_pulay(in_ptr, out_ptr, mixed_ptr); + break; + case MixingMethod::Broyden: + mix_broyden(in_ptr, out_ptr, mixed_ptr); + break; + case MixingMethod::Anderson: + mix_anderson(in_ptr, out_ptr, mixed_ptr); + break; + default: + mix_plain(in_ptr, out_ptr, mixed_ptr); + } + + iteration_++; + return rho_mixed; + } + + void reset() override + { + iteration_ = 0; + drho_ = 0.0; + rho_history_.clear(); + residual_history_.clear(); + } + + // ==================== State Queries ==================== + + double get_drho() const override { return drho_; } + + int get_iteration() const override { return iteration_; } + + // ==================== Configuration ==================== + + void set_config(const MixingConfig& config) override + { + config_ = config; + reset(); // Reset history when config changes + } + + MixingConfig get_config() const override { return config_; } + + void set_mixing_beta(double beta) override + { + if (beta <= 0.0 || beta > 1.0) + { + throw std::invalid_argument("beta must be in (0, 1]"); + } + config_.beta = beta; + } + + double get_mixing_beta() const override { return config_.beta; } + + void set_mixing_method(MixingMethod method) override + { + config_.method = method; + reset(); + } + + MixingMethod get_mixing_method() const override { return config_.method; } + + // ==================== Dimension Setters ==================== + + void set_dimensions(int nspin, int nrxx) + { + nspin_ = nspin; + nrxx_ = nrxx; + reset(); + } + +private: + // Plain linear mixing: rho_new = (1-beta)*rho_in + beta*rho_out + void mix_plain(const double* rho_in, const double* rho_out, double* rho_mixed) + { + const double beta = config_.beta; + const double one_minus_beta = 1.0 - beta; + + for (size_t i = 0; i < static_cast(nspin_ * nrxx_); ++i) + { + rho_mixed[i] = one_minus_beta * rho_in[i] + beta * rho_out[i]; + } + } + + // Pulay mixing (DIIS) + void mix_pulay(const double* rho_in, const double* rho_out, double* rho_mixed) + { + const size_t size = static_cast(nspin_ * nrxx_); + + // Store current rho and residual in history + std::vector current_rho(rho_in, rho_in + size); + std::vector current_residual(size); + for (size_t i = 0; i < size; ++i) + { + current_residual[i] = rho_out[i] - rho_in[i]; + } + + // Add to history (circular buffer) + if (static_cast(rho_history_.size()) >= config_.ndim) + { + rho_history_.erase(rho_history_.begin()); + residual_history_.erase(residual_history_.begin()); + } + rho_history_.push_back(current_rho); + residual_history_.push_back(current_residual); + + const int nhist = static_cast(rho_history_.size()); + + if (nhist < 2) + { + // Not enough history, use plain mixing + mix_plain(rho_in, rho_out, rho_mixed); + return; + } + + // Build overlap matrix of residuals + std::vector A((nhist + 1) * (nhist + 1), 0.0); + std::vector b(nhist + 1, 0.0); + + for (int i = 0; i < nhist; ++i) + { + for (int j = 0; j <= i; ++j) + { + double dot = 0.0; + for (size_t k = 0; k < size; ++k) + { + dot += residual_history_[i][k] * residual_history_[j][k]; + } + A[i * (nhist + 1) + j] = dot; + A[j * (nhist + 1) + i] = dot; + } + A[i * (nhist + 1) + nhist] = 1.0; + A[nhist * (nhist + 1) + i] = 1.0; + } + b[nhist] = 1.0; + + // Solve linear system for coefficients (simple Gaussian elimination) + std::vector coeff = solve_linear_system(A, b, nhist + 1); + + // Compute mixed density + std::fill(rho_mixed, rho_mixed + size, 0.0); + for (int i = 0; i < nhist; ++i) + { + for (size_t k = 0; k < size; ++k) + { + rho_mixed[k] += coeff[i] * (rho_history_[i][k] + + config_.beta * residual_history_[i][k]); + } + } + } + + // Broyden mixing (simplified) + void mix_broyden(const double* rho_in, const double* rho_out, double* rho_mixed) + { + // For simplicity, use Pulay mixing as approximation + mix_pulay(rho_in, rho_out, rho_mixed); + } + + // Anderson mixing + void mix_anderson(const double* rho_in, const double* rho_out, double* rho_mixed) + { + // Anderson mixing is similar to Pulay + mix_pulay(rho_in, rho_out, rho_mixed); + } + + // Simple linear system solver (Gaussian elimination with partial pivoting) + std::vector solve_linear_system(std::vector& A, + std::vector& b, + int n) + { + std::vector x(n, 0.0); + + // Forward elimination + for (int k = 0; k < n - 1; ++k) + { + // Find pivot + int max_row = k; + double max_val = std::abs(A[k * n + k]); + for (int i = k + 1; i < n; ++i) + { + if (std::abs(A[i * n + k]) > max_val) + { + max_val = std::abs(A[i * n + k]); + max_row = i; + } + } + + // Swap rows + if (max_row != k) + { + for (int j = 0; j < n; ++j) + { + std::swap(A[k * n + j], A[max_row * n + j]); + } + std::swap(b[k], b[max_row]); + } + + // Eliminate + for (int i = k + 1; i < n; ++i) + { + if (std::abs(A[k * n + k]) < 1e-12) continue; + double factor = A[i * n + k] / A[k * n + k]; + for (int j = k; j < n; ++j) + { + A[i * n + j] -= factor * A[k * n + j]; + } + b[i] -= factor * b[k]; + } + } + + // Back substitution + for (int i = n - 1; i >= 0; --i) + { + x[i] = b[i]; + for (int j = i + 1; j < n; ++j) + { + x[i] -= A[i * n + j] * x[j]; + } + if (std::abs(A[i * n + i]) > 1e-12) + { + x[i] /= A[i * n + i]; + } + } + + return x; + } + + int nspin_ = 1; + int nrxx_ = 0; + int iteration_ = 0; + double drho_ = 0.0; + MixingConfig config_; + + // History for Pulay/Broyden mixing + std::vector> rho_history_; + std::vector> residual_history_; +}; + +} // namespace esolver +} // namespace pyabacus + +#endif // PYABACUS_ESOLVER_CHARGE_MIXER_WRAPPER_HPP diff --git a/python/pyabacus/src/ModuleESolver/components/diagonalizer_wrapper.hpp b/python/pyabacus/src/ModuleESolver/components/diagonalizer_wrapper.hpp new file mode 100644 index 0000000000..7ed88294d3 --- /dev/null +++ b/python/pyabacus/src/ModuleESolver/components/diagonalizer_wrapper.hpp @@ -0,0 +1,337 @@ +/** + * @file diagonalizer_wrapper.hpp + * @brief Wrapper implementation for diagonalizers + * + * Wraps the ABACUS diagonalization solvers to implement IDiagonalizer interface. + */ + +#ifndef PYABACUS_ESOLVER_DIAGONALIZER_WRAPPER_HPP +#define PYABACUS_ESOLVER_DIAGONALIZER_WRAPPER_HPP + +#include "../interfaces/i_diagonalizer.hpp" +#include "../../utils/pybind_utils.h" +#include "../../hsolver/diago_adapter.hpp" + +#include + +namespace pyabacus { +namespace esolver { + +/** + * @brief Wrapper for diagonalization solvers + * + * This class wraps the various ABACUS diagonalization methods + * to provide a unified Python interface. + * + * @tparam TK Type for k-space quantities + */ +template +class DiagonalizerWrapper : public IDiagonalizer +{ +public: + DiagonalizerWrapper() = default; + + DiagonalizerWrapper(int nbasis, int nbands) + : nbasis_(nbasis), nbands_(nbands) + { + } + + ~DiagonalizerWrapper() override = default; + + // ==================== Direct Diagonalization ==================== + + DiagResult diagonalize(int ik, + const py::array_t& Hk, + const py::array_t& Sk, + const py::array_t& psi_init) override + { + DiagResult result; + + // For direct diagonalization, we would use LAPACK/ScaLAPACK + // This is a placeholder - actual implementation would call + // the appropriate ABACUS solver + + // Create hpsi and spsi functions from matrices + auto hpsi_func = [&Hk, this](const py::array_t& psi) -> py::array_t { + return matrix_vector_multiply(Hk, psi); + }; + + auto spsi_func = [&Sk, this](const py::array_t& psi) -> py::array_t { + return matrix_vector_multiply(Sk, psi); + }; + + // Use iterative method as fallback + py::array_t precond = compute_preconditioner(Hk); + return diagonalize_iterative(ik, hpsi_func, spsi_func, psi_init, precond); + } + + // ==================== Iterative Diagonalization ==================== + + DiagResult diagonalize_iterative( + int ik, + std::function(const py::array_t&)> hpsi_func, + std::function(const py::array_t&)> spsi_func, + const py::array_t& psi_init, + const py::array_t& precond) override + { + DiagResult result; + + switch (config_.method) + { + case DiagMethod::Davidson: + result = diagonalize_davidson(hpsi_func, psi_init, precond); + break; + case DiagMethod::DavSubspace: + result = diagonalize_dav_subspace(hpsi_func, psi_init, precond); + break; + case DiagMethod::CG: + result = diagonalize_cg(hpsi_func, psi_init, precond); + break; + default: + result = diagonalize_davidson(hpsi_func, psi_init, precond); + } + + return result; + } + + // ==================== Configuration ==================== + + void set_config(const DiagConfig& config) override + { + config_ = config; + } + + DiagConfig get_config() const override { return config_; } + + void set_tolerance(double tol) override + { + config_.tolerance = tol; + } + + void set_max_iterations(int max_iter) override + { + config_.max_iterations = max_iter; + } + + // ==================== Dimension Queries ==================== + + int get_nbasis() const override { return nbasis_; } + + int get_nbands() const override { return nbands_; } + + void set_nbands(int nbands) override { nbands_ = nbands; } + + void set_nbasis(int nbasis) { nbasis_ = nbasis; } + +private: + // Davidson diagonalization + DiagResult diagonalize_davidson( + std::function(const py::array_t&)> hpsi_func, + const py::array_t& psi_init, + const py::array_t& precond) + { + DiagResult result; + + // Create Davidson adapter + hsolver::PyDiagoDavidAdapter david(nbasis_, nbands_); + + // Set initial psi + david.set_psi(psi_init); + david.init_eigenvalue(); + + // Convert preconditioner to vector + std::vector precond_vec(precond.data(), precond.data() + precond.size()); + + // Create diag_ethr vector + std::vector diag_ethr(nbands_, config_.tolerance); + + // Create comm_info (single process for now) + ::hsolver::diag_comm_info comm_info(0, 1); + + // Run diagonalization + int niter = david.diag( + hpsi_func, + precond_vec, + config_.dav_ndim, + config_.tolerance, + diag_ethr, + config_.max_iterations, + config_.use_paw, + comm_info + ); + + // Get results + result.psi = david.get_psi(); + result.eigenvalues = david.get_eigenvalue(); + result.iterations = niter; + result.converged = (niter < config_.max_iterations); + + return result; + } + + // Davidson-Subspace diagonalization + DiagResult diagonalize_dav_subspace( + std::function(const py::array_t&)> hpsi_func, + const py::array_t& psi_init, + const py::array_t& precond) + { + DiagResult result; + + // Create DavSubspace adapter + hsolver::PyDiagoDavSubspaceAdapter dav_sub(nbasis_, nbands_); + + // Set initial psi + dav_sub.set_psi(psi_init); + dav_sub.init_eigenvalue(); + + // Convert preconditioner to vector + std::vector precond_vec(precond.data(), precond.data() + precond.size()); + + // Create diag_ethr vector + std::vector diag_ethr(nbands_, config_.tolerance); + + // Create comm_info + ::hsolver::diag_comm_info comm_info(0, 1); + + // Run diagonalization + int niter = dav_sub.diag( + hpsi_func, + precond_vec, + config_.dav_ndim, + config_.tolerance, + config_.max_iterations, + false, // need_subspace + diag_ethr, + true, // scf_type + comm_info, + 0, // diag_subspace (LAPACK) + 1 // nb2d + ); + + // Get results + result.psi = dav_sub.get_psi(); + result.eigenvalues = dav_sub.get_eigenvalue(); + result.iterations = niter; + result.converged = (niter < config_.max_iterations); + + return result; + } + + // CG diagonalization + DiagResult diagonalize_cg( + std::function(const py::array_t&)> hpsi_func, + const py::array_t& psi_init, + const py::array_t& precond) + { + DiagResult result; + +#ifdef __ENABLE_ATEN + // Create CG adapter + hsolver::PyDiagoCGAdapter cg(nbasis_, nbands_); + + // Set initial psi and preconditioner + cg.set_psi(psi_init); + cg.init_eig(); + cg.set_prec(precond); + + // Create diag_ethr vector + std::vector diag_ethr(nbands_, config_.tolerance); + + // Run diagonalization + cg.diag( + hpsi_func, + config_.dav_ndim, + config_.tolerance, + diag_ethr, + false, // need_subspace + true, // scf_type + config_.nproc_in_pool + ); + + // Get results + result.psi = cg.get_psi(); + result.eigenvalues = cg.get_eig(); + result.converged = true; +#else + // Fall back to Davidson if ATen not available + result = diagonalize_davidson(hpsi_func, psi_init, precond); +#endif + + return result; + } + + // Helper: Matrix-vector multiplication + py::array_t matrix_vector_multiply(const py::array_t& matrix, + const py::array_t& vec) + { + using namespace pyabacus::utils; + + auto mat_buf = matrix.request(); + auto vec_buf = vec.request(); + + if (mat_buf.ndim != 2) + { + throw std::runtime_error("Matrix must be 2D"); + } + + const ssize_t nrow = mat_buf.shape[0]; + const ssize_t ncol = mat_buf.shape[1]; + const ssize_t nvec = (vec_buf.ndim == 1) ? 1 : vec_buf.shape[1]; + + py::array_t result({nrow, nvec}); + auto res_buf = result.request(); + + const TK* mat_ptr = static_cast(mat_buf.ptr); + const TK* vec_ptr = static_cast(vec_buf.ptr); + TK* res_ptr = static_cast(res_buf.ptr); + + // Simple matrix-vector multiplication + for (ssize_t i = 0; i < nrow; ++i) + { + for (ssize_t v = 0; v < nvec; ++v) + { + TK sum = TK(0); + for (ssize_t j = 0; j < ncol; ++j) + { + sum += mat_ptr[i * ncol + j] * vec_ptr[j * nvec + v]; + } + res_ptr[i * nvec + v] = sum; + } + } + + return result; + } + + // Helper: Compute diagonal preconditioner from Hamiltonian + py::array_t compute_preconditioner(const py::array_t& Hk) + { + auto buf = Hk.request(); + const ssize_t n = buf.shape[0]; + const TK* ptr = static_cast(buf.ptr); + + py::array_t precond(n); + double* prec_ptr = precond.mutable_data(); + + for (ssize_t i = 0; i < n; ++i) + { + // Use diagonal elements as preconditioner + TK diag = ptr[i * n + i]; + prec_ptr[i] = std::max(std::abs(diag), 1.0); + } + + return precond; + } + + int nbasis_ = 0; + int nbands_ = 0; + DiagConfig config_; +}; + +// Type aliases +using DiagonalizerWrapperGamma = DiagonalizerWrapper; +using DiagonalizerWrapperMultiK = DiagonalizerWrapper>; + +} // namespace esolver +} // namespace pyabacus + +#endif // PYABACUS_ESOLVER_DIAGONALIZER_WRAPPER_HPP diff --git a/python/pyabacus/src/ModuleESolver/components/hamiltonian_builder_lcao.hpp b/python/pyabacus/src/ModuleESolver/components/hamiltonian_builder_lcao.hpp new file mode 100644 index 0000000000..9796567460 --- /dev/null +++ b/python/pyabacus/src/ModuleESolver/components/hamiltonian_builder_lcao.hpp @@ -0,0 +1,300 @@ +/** + * @file hamiltonian_builder_lcao.hpp + * @brief LCAO Hamiltonian builder implementation + * + * Wraps the ABACUS LCAO Hamiltonian construction to implement IHamiltonianBuilder. + */ + +#ifndef PYABACUS_ESOLVER_HAMILTONIAN_BUILDER_LCAO_HPP +#define PYABACUS_ESOLVER_HAMILTONIAN_BUILDER_LCAO_HPP + +#include "../interfaces/i_hamiltonian_builder.hpp" +#include "../../utils/pybind_utils.h" + +#include +#include +#include +#include + +namespace pyabacus { +namespace esolver { + +/** + * @brief LCAO Hamiltonian builder implementation + * + * This class provides Hamiltonian construction for LCAO calculations, + * wrapping the ABACUS HamiltLCAO functionality. + * + * @tparam TK Type for k-space quantities + * @tparam TR Type for real-space quantities + */ +template +class HamiltonianBuilderLCAO : public IHamiltonianBuilder +{ +public: + HamiltonianBuilderLCAO() = default; + + HamiltonianBuilderLCAO(int nbasis, int nks, int nrow, int ncol) + : nbasis_(nbasis), nks_(nks), nrow_(nrow), ncol_(ncol) + { + // Allocate storage for H(k) and S(k) matrices + Hk_matrices_.resize(nks); + Sk_matrices_.resize(nks); + for (int ik = 0; ik < nks; ++ik) + { + Hk_matrices_[ik].resize(nrow * ncol, TK(0)); + Sk_matrices_[ik].resize(nrow * ncol, TK(0)); + } + } + + ~HamiltonianBuilderLCAO() override = default; + + // ==================== Build/Update ==================== + + void build_from_rho(const py::array_t& rho) override + { + // Store rho for potential reconstruction + // In full implementation, this would: + // 1. Compute Hartree potential from rho + // 2. Compute XC potential from rho + // 3. Update H(R) matrices + // 4. Invalidate H(k) cache + + using namespace pyabacus::utils; + auto buf = rho.request(); + + if (buf.ndim != 2) + { + throw std::runtime_error("rho must be 2D array with shape (nspin, nrxx)"); + } + + nspin_ = static_cast(buf.shape[0]); + nrxx_ = static_cast(buf.shape[1]); + + // Store rho + rho_data_.assign(static_cast(buf.ptr), + static_cast(buf.ptr) + nspin_ * nrxx_); + + // Mark H(k) as needing update + hk_valid_.assign(nks_, false); + valid_ = true; + } + + void update_Hk(int ik) override + { + if (ik < 0 || ik >= nks_) + { + throw std::out_of_range("k-point index out of range"); + } + + // In full implementation, this would: + // 1. Fourier transform H(R) to H(k) for k-point ik + // 2. Store result in Hk_matrices_[ik] + + hk_valid_[ik] = true; + } + + void invalidate() override + { + hk_valid_.assign(nks_, false); + valid_ = false; + } + + // ==================== K-space Matrix Access ==================== + + py::array_t get_Hk(int ik) const override + { + validate_kpoint(ik); + + return utils::numpy_from_ptr_copy_2d( + Hk_matrices_[ik].data(), + static_cast(nrow_), + static_cast(ncol_) + ); + } + + py::array_t get_Sk(int ik) const override + { + validate_kpoint(ik); + + return utils::numpy_from_ptr_copy_2d( + Sk_matrices_[ik].data(), + static_cast(nrow_), + static_cast(ncol_) + ); + } + + // ==================== Real-space Matrix Access ==================== + + py::dict get_HR() const override + { + py::dict result; + // In full implementation, would return H(R) data + // Format: {(iat1, iat2, (R0, R1, R2)): matrix} + return result; + } + + py::dict get_SR() const override + { + py::dict result; + // In full implementation, would return S(R) data + return result; + } + + // ==================== Matrix-Vector Products ==================== + + py::array_t apply_H(int ik, const py::array_t& psi_in) const override + { + validate_kpoint(ik); + + // H * psi + return matrix_multiply(Hk_matrices_[ik], psi_in); + } + + py::array_t apply_S(int ik, const py::array_t& psi_in) const override + { + validate_kpoint(ik); + + // S * psi + return matrix_multiply(Sk_matrices_[ik], psi_in); + } + + // ==================== Dimension Queries ==================== + + int get_nbasis() const override { return nbasis_; } + + int get_nks() const override { return nks_; } + + std::pair get_local_dims() const override + { + return {nrow_, ncol_}; + } + + bool is_valid() const override { return valid_; } + + // ==================== Data Setters (for testing/compatibility) ==================== + + void set_Hk_data(int ik, const TK* data, int nrow, int ncol) + { + if (ik < 0 || ik >= nks_) + { + throw std::out_of_range("k-point index out of range"); + } + + nrow_ = nrow; + ncol_ = ncol; + + if (static_cast(Hk_matrices_[ik].size()) != nrow * ncol) + { + Hk_matrices_[ik].resize(nrow * ncol); + } + + std::copy(data, data + nrow * ncol, Hk_matrices_[ik].begin()); + hk_valid_[ik] = true; + valid_ = true; + } + + void set_Sk_data(int ik, const TK* data, int nrow, int ncol) + { + if (ik < 0 || ik >= nks_) + { + throw std::out_of_range("k-point index out of range"); + } + + if (static_cast(Sk_matrices_[ik].size()) != nrow * ncol) + { + Sk_matrices_[ik].resize(nrow * ncol); + } + + std::copy(data, data + nrow * ncol, Sk_matrices_[ik].begin()); + } + + void set_dimensions(int nbasis, int nks, int nrow, int ncol) + { + nbasis_ = nbasis; + nks_ = nks; + nrow_ = nrow; + ncol_ = ncol; + + Hk_matrices_.resize(nks); + Sk_matrices_.resize(nks); + hk_valid_.resize(nks, false); + + for (int ik = 0; ik < nks; ++ik) + { + Hk_matrices_[ik].resize(nrow * ncol, TK(0)); + Sk_matrices_[ik].resize(nrow * ncol, TK(0)); + } + } + +private: + void validate_kpoint(int ik) const + { + if (!valid_) + { + throw std::runtime_error("Hamiltonian not built. Call build_from_rho first."); + } + if (ik < 0 || ik >= nks_) + { + throw std::out_of_range("k-point index out of range"); + } + } + + py::array_t matrix_multiply(const std::vector& matrix, + const py::array_t& vec) const + { + auto vec_buf = vec.request(); + const TK* vec_ptr = static_cast(vec_buf.ptr); + + const ssize_t nvec = (vec_buf.ndim == 1) ? 1 : + (vec_buf.ndim == 2) ? vec_buf.shape[1] : 1; + const ssize_t vec_rows = (vec_buf.ndim == 1) ? vec_buf.shape[0] : vec_buf.shape[0]; + + if (vec_rows != ncol_) + { + throw std::runtime_error("Vector dimension mismatch"); + } + + py::array_t result({static_cast(nrow_), nvec}); + auto res_buf = result.request(); + TK* res_ptr = static_cast(res_buf.ptr); + + // Matrix-vector multiplication + for (int i = 0; i < nrow_; ++i) + { + for (ssize_t v = 0; v < nvec; ++v) + { + TK sum = TK(0); + for (int j = 0; j < ncol_; ++j) + { + sum += matrix[i * ncol_ + j] * vec_ptr[j * nvec + v]; + } + res_ptr[i * nvec + v] = sum; + } + } + + return result; + } + + int nbasis_ = 0; + int nks_ = 0; + int nrow_ = 0; + int ncol_ = 0; + int nspin_ = 1; + int nrxx_ = 0; + bool valid_ = false; + + std::vector> Hk_matrices_; + std::vector> Sk_matrices_; + std::vector hk_valid_; + std::vector rho_data_; +}; + +// Type aliases +using HamiltonianBuilderLCAOGamma = HamiltonianBuilderLCAO; +using HamiltonianBuilderLCAOMultiK = HamiltonianBuilderLCAO, double>; + +} // namespace esolver +} // namespace pyabacus + +#endif // PYABACUS_ESOLVER_HAMILTONIAN_BUILDER_LCAO_HPP diff --git a/python/pyabacus/src/ModuleESolver/components/scf_controller_lcao.hpp b/python/pyabacus/src/ModuleESolver/components/scf_controller_lcao.hpp new file mode 100644 index 0000000000..c5dac087fb --- /dev/null +++ b/python/pyabacus/src/ModuleESolver/components/scf_controller_lcao.hpp @@ -0,0 +1,255 @@ +/** + * @file scf_controller_lcao.hpp + * @brief LCAO SCF controller implementation + * + * Implements the ISCFController interface for LCAO calculations. + */ + +#ifndef PYABACUS_ESOLVER_SCF_CONTROLLER_LCAO_HPP +#define PYABACUS_ESOLVER_SCF_CONTROLLER_LCAO_HPP + +#include "../interfaces/i_scf_controller.hpp" +#include "../interfaces/i_hamiltonian_builder.hpp" +#include "../interfaces/i_charge_mixer.hpp" +#include "../interfaces/i_diagonalizer.hpp" +#include "hamiltonian_builder_lcao.hpp" +#include "charge_mixer_wrapper.hpp" +#include "diagonalizer_wrapper.hpp" + +#include +#include + +namespace pyabacus { +namespace esolver { + +/** + * @brief LCAO SCF controller implementation + * + * This class implements the SCF loop for LCAO calculations, + * coordinating the Hamiltonian builder, charge mixer, and diagonalizer. + * + * @tparam TK Type for k-space quantities + * @tparam TR Type for real-space quantities + */ +template +class SCFControllerLCAO : public ISCFController +{ +public: + SCFControllerLCAO() = default; + + SCFControllerLCAO(int nbasis, int nks, int nbands, int nspin, int nrxx) + : nbasis_(nbasis) + , nks_(nks) + , nbands_(nbands) + , nspin_(nspin) + , nrxx_(nrxx) + { + // Initialize components + hamilt_builder_ = std::make_unique>( + nbasis, nks, nbasis, nbasis); + charge_mixer_ = std::make_unique(nspin, nrxx); + diagonalizer_ = std::make_unique>(nbasis, nbands); + } + + ~SCFControllerLCAO() override = default; + + // ==================== Lifecycle ==================== + + void initialize(int istep) override + { + istep_ = istep; + iteration_ = 0; + drho_ = 0.0; + energy_ = 0.0; + status_ = SCFStatus::NotStarted; + + // Reset charge mixer + if (charge_mixer_) + { + charge_mixer_->reset(); + } + + initialized_ = true; + } + + void finalize(int istep) override + { + // Cleanup after SCF + initialized_ = false; + } + + // ==================== Iteration Control ==================== + + SCFStatus run_iteration(int iter) override + { + if (!initialized_) + { + throw std::runtime_error("SCF not initialized. Call initialize() first."); + } + + iteration_ = iter; + status_ = SCFStatus::Running; + + // SCF iteration steps: + // 1. Build Hamiltonian from current charge density + // 2. Diagonalize to get new wave functions + // 3. Calculate new charge density from wave functions + // 4. Mix old and new charge densities + // 5. Check convergence + + // For now, this is a placeholder that simulates convergence + // In full implementation, would call actual ABACUS routines + + // Simulate drho decreasing + drho_ = 1.0 / (iter * iter + 1); + + // Simulate energy + energy_ = -10.0 - 0.1 / iter; + + return status_; + } + + SCFStatus run_scf(const SCFConvergenceCriteria& criteria, + SCFIterationCallback callback) override + { + initialize(istep_); + status_ = SCFStatus::Running; + + for (int iter = 1; iter <= criteria.max_iterations; ++iter) + { + run_iteration(iter); + + // Check convergence + bool converged = true; + if (criteria.check_drho && drho_ > criteria.drho_threshold) + { + converged = false; + } + + // Call callback if provided + if (callback) + { + bool continue_scf = callback(iter, drho_, energy_); + if (!continue_scf) + { + status_ = SCFStatus::Failed; + return status_; + } + } + + if (converged) + { + status_ = SCFStatus::Converged; + return status_; + } + } + + status_ = SCFStatus::MaxIterReached; + return status_; + } + + bool is_converged() const override + { + return status_ == SCFStatus::Converged; + } + + SCFStatus get_status() const override { return status_; } + + // ==================== State Queries ==================== + + int get_iteration() const override { return iteration_; } + + double get_drho() const override { return drho_; } + + double get_energy() const override { return energy_; } + + // ==================== Component Access ==================== + + void* get_hamiltonian_builder() override + { + return hamilt_builder_.get(); + } + + IChargeMixer* get_charge_mixer() override + { + return charge_mixer_.get(); + } + + void* get_diagonalizer() override + { + return diagonalizer_.get(); + } + + // ==================== Typed Component Access ==================== + + HamiltonianBuilderLCAO* get_hamiltonian_builder_typed() + { + return hamilt_builder_.get(); + } + + DiagonalizerWrapper* get_diagonalizer_typed() + { + return diagonalizer_.get(); + } + + // ==================== Configuration ==================== + + void set_convergence_criteria(const SCFConvergenceCriteria& criteria) + { + criteria_ = criteria; + } + + SCFConvergenceCriteria get_convergence_criteria() const + { + return criteria_; + } + + void set_mixing_config(const MixingConfig& config) + { + if (charge_mixer_) + { + charge_mixer_->set_config(config); + } + } + + void set_diag_config(const DiagConfig& config) + { + if (diagonalizer_) + { + diagonalizer_->set_config(config); + } + } + +private: + // Dimensions + int nbasis_ = 0; + int nks_ = 0; + int nbands_ = 0; + int nspin_ = 1; + int nrxx_ = 0; + + // State + int istep_ = 0; + int iteration_ = 0; + double drho_ = 0.0; + double energy_ = 0.0; + bool initialized_ = false; + SCFStatus status_ = SCFStatus::NotStarted; + + // Configuration + SCFConvergenceCriteria criteria_; + + // Components + std::unique_ptr> hamilt_builder_; + std::unique_ptr charge_mixer_; + std::unique_ptr> diagonalizer_; +}; + +// Type aliases +using SCFControllerLCAOGamma = SCFControllerLCAO; +using SCFControllerLCAOMultiK = SCFControllerLCAO, double>; + +} // namespace esolver +} // namespace pyabacus + +#endif // PYABACUS_ESOLVER_SCF_CONTROLLER_LCAO_HPP diff --git a/python/pyabacus/src/ModuleESolver/interfaces/i_charge_mixer.hpp b/python/pyabacus/src/ModuleESolver/interfaces/i_charge_mixer.hpp new file mode 100644 index 0000000000..43ac40fc58 --- /dev/null +++ b/python/pyabacus/src/ModuleESolver/interfaces/i_charge_mixer.hpp @@ -0,0 +1,155 @@ +/** + * @file i_charge_mixer.hpp + * @brief Abstract interface for charge density mixer + * + * Defines the interface for mixing charge densities during SCF iterations. + */ + +#ifndef PYABACUS_ESOLVER_I_CHARGE_MIXER_HPP +#define PYABACUS_ESOLVER_I_CHARGE_MIXER_HPP + +#include +#include + +#include + +namespace py = pybind11; + +namespace pyabacus { +namespace esolver { + +/** + * @brief Mixing method types + */ +enum class MixingMethod +{ + Plain, ///< Simple linear mixing + Pulay, ///< Pulay mixing (DIIS) + Broyden, ///< Broyden mixing + Anderson ///< Anderson mixing +}; + +/** + * @brief Configuration for charge mixing + */ +struct MixingConfig +{ + MixingMethod method = MixingMethod::Pulay; + double beta = 0.7; ///< Mixing parameter + int ndim = 8; ///< Number of history steps for Pulay/Broyden + double gg0 = 1.0; ///< Kerker mixing parameter + bool mix_gg0 = false; ///< Whether to use Kerker mixing + bool mix_rho = true; ///< Mix charge density (vs potential) +}; + +/** + * @brief Abstract interface for charge density mixer + * + * This interface defines the contract for mixing charge densities + * during SCF iterations to achieve convergence. + */ +class IChargeMixer +{ +public: + virtual ~IChargeMixer() = default; + + // ==================== Core Mixing Operations ==================== + + /** + * @brief Mix input and output charge densities + * @param rho_in Input charge density (from previous iteration) + * @param rho_out Output charge density (from current iteration) + * @return Mixed charge density for next iteration + */ + virtual py::array_t mix(const py::array_t& rho_in, + const py::array_t& rho_out) = 0; + + /** + * @brief Reset mixer state (clear history) + */ + virtual void reset() = 0; + + // ==================== State Queries ==================== + + /** + * @brief Get charge density difference from last mixing + * @return drho value + */ + virtual double get_drho() const = 0; + + /** + * @brief Get current iteration count + * @return Number of mixing iterations performed + */ + virtual int get_iteration() const = 0; + + // ==================== Configuration ==================== + + /** + * @brief Set mixing configuration + * @param config Mixing configuration + */ + virtual void set_config(const MixingConfig& config) = 0; + + /** + * @brief Get current mixing configuration + * @return Current configuration + */ + virtual MixingConfig get_config() const = 0; + + /** + * @brief Set mixing parameter (beta) + * @param beta Mixing parameter (0 < beta <= 1) + */ + virtual void set_mixing_beta(double beta) = 0; + + /** + * @brief Get mixing parameter + * @return Current beta value + */ + virtual double get_mixing_beta() const = 0; + + /** + * @brief Set mixing method + * @param method Mixing method to use + */ + virtual void set_mixing_method(MixingMethod method) = 0; + + /** + * @brief Get current mixing method + * @return Current method + */ + virtual MixingMethod get_mixing_method() const = 0; +}; + +/** + * @brief Convert MixingMethod enum to string + */ +inline std::string mixing_method_to_string(MixingMethod method) +{ + switch (method) + { + case MixingMethod::Plain: return "plain"; + case MixingMethod::Pulay: return "pulay"; + case MixingMethod::Broyden: return "broyden"; + case MixingMethod::Anderson: return "anderson"; + default: return "unknown"; + } +} + +/** + * @brief Convert string to MixingMethod enum + */ +inline MixingMethod string_to_mixing_method(const std::string& str) +{ + if (str == "plain") return MixingMethod::Plain; + if (str == "pulay") return MixingMethod::Pulay; + if (str == "broyden") return MixingMethod::Broyden; + if (str == "anderson") return MixingMethod::Anderson; + return MixingMethod::Pulay; // default +} + +} // namespace esolver +} // namespace pyabacus + +#endif // PYABACUS_ESOLVER_I_CHARGE_MIXER_HPP diff --git a/python/pyabacus/src/ModuleESolver/interfaces/i_diagonalizer.hpp b/python/pyabacus/src/ModuleESolver/interfaces/i_diagonalizer.hpp new file mode 100644 index 0000000000..6c5f968b39 --- /dev/null +++ b/python/pyabacus/src/ModuleESolver/interfaces/i_diagonalizer.hpp @@ -0,0 +1,200 @@ +/** + * @file i_diagonalizer.hpp + * @brief Abstract interface for eigenvalue solver (diagonalizer) + * + * Defines the interface for diagonalizing Hamiltonian matrices + * to obtain eigenvalues and eigenvectors. + */ + +#ifndef PYABACUS_ESOLVER_I_DIAGONALIZER_HPP +#define PYABACUS_ESOLVER_I_DIAGONALIZER_HPP + +#include +#include +#include + +#include +#include +#include +#include + +namespace py = pybind11; + +namespace pyabacus { +namespace esolver { + +/** + * @brief Diagonalization method types + */ +enum class DiagMethod +{ + Davidson, ///< Davidson iterative method + DavSubspace, ///< Davidson with subspace rotation + CG, ///< Conjugate gradient + LAPACK, ///< Direct LAPACK diagonalization + ScaLAPACK, ///< Parallel ScaLAPACK + ELPA ///< ELPA eigensolver +}; + +/** + * @brief Result of diagonalization + */ +template +struct DiagResult +{ + py::array_t psi; ///< Eigenvectors + py::array_t eigenvalues; ///< Eigenvalues + int iterations = 0; ///< Number of iterations (for iterative methods) + bool converged = false; ///< Whether converged + double residual = 0.0; ///< Final residual +}; + +/** + * @brief Configuration for diagonalization + */ +struct DiagConfig +{ + DiagMethod method = DiagMethod::Davidson; + double tolerance = 1e-6; ///< Convergence tolerance + int max_iterations = 100; ///< Maximum iterations + int dav_ndim = 4; ///< Davidson subspace dimension multiplier + bool use_paw = false; ///< Use PAW method + int nproc_in_pool = 1; ///< Number of processes in pool +}; + +/** + * @brief Abstract interface for diagonalizer + * + * This interface defines the contract for eigenvalue solvers, + * supporting both direct and iterative methods. + * + * @tparam TK Type for k-space quantities (double or complex) + */ +template +class IDiagonalizer +{ +public: + virtual ~IDiagonalizer() = default; + + // ==================== Direct Diagonalization ==================== + + /** + * @brief Diagonalize H(k) and S(k) matrices directly + * @param ik K-point index + * @param Hk Hamiltonian matrix + * @param Sk Overlap matrix + * @param psi_init Initial guess for eigenvectors (optional) + * @return Diagonalization result + */ + virtual DiagResult diagonalize(int ik, + const py::array_t& Hk, + const py::array_t& Sk, + const py::array_t& psi_init) = 0; + + // ==================== Iterative Diagonalization ==================== + + /** + * @brief Diagonalize using matrix-vector product functions + * + * For iterative methods that don't need explicit matrices. + * + * @param ik K-point index + * @param hpsi_func Function computing H|psi> + * @param spsi_func Function computing S|psi> + * @param psi_init Initial guess for eigenvectors + * @param precond Preconditioner (diagonal approximation to H) + * @return Diagonalization result + */ + virtual DiagResult diagonalize_iterative( + int ik, + std::function(const py::array_t&)> hpsi_func, + std::function(const py::array_t&)> spsi_func, + const py::array_t& psi_init, + const py::array_t& precond) = 0; + + // ==================== Configuration ==================== + + /** + * @brief Set diagonalization configuration + * @param config Configuration + */ + virtual void set_config(const DiagConfig& config) = 0; + + /** + * @brief Get current configuration + * @return Current configuration + */ + virtual DiagConfig get_config() const = 0; + + /** + * @brief Set convergence tolerance + * @param tol Tolerance + */ + virtual void set_tolerance(double tol) = 0; + + /** + * @brief Set maximum iterations + * @param max_iter Maximum iterations + */ + virtual void set_max_iterations(int max_iter) = 0; + + // ==================== Dimension Queries ==================== + + /** + * @brief Get number of basis functions + * @return Number of basis functions + */ + virtual int get_nbasis() const = 0; + + /** + * @brief Get number of bands to compute + * @return Number of bands + */ + virtual int get_nbands() const = 0; + + /** + * @brief Set number of bands to compute + * @param nbands Number of bands + */ + virtual void set_nbands(int nbands) = 0; +}; + +// Type aliases for common use cases +using IDiagonalizerGamma = IDiagonalizer; +using IDiagonalizerMultiK = IDiagonalizer>; + +/** + * @brief Convert DiagMethod enum to string + */ +inline std::string diag_method_to_string(DiagMethod method) +{ + switch (method) + { + case DiagMethod::Davidson: return "davidson"; + case DiagMethod::DavSubspace: return "dav_subspace"; + case DiagMethod::CG: return "cg"; + case DiagMethod::LAPACK: return "lapack"; + case DiagMethod::ScaLAPACK: return "scalapack"; + case DiagMethod::ELPA: return "elpa"; + default: return "unknown"; + } +} + +/** + * @brief Convert string to DiagMethod enum + */ +inline DiagMethod string_to_diag_method(const std::string& str) +{ + if (str == "davidson") return DiagMethod::Davidson; + if (str == "dav_subspace") return DiagMethod::DavSubspace; + if (str == "cg") return DiagMethod::CG; + if (str == "lapack") return DiagMethod::LAPACK; + if (str == "scalapack") return DiagMethod::ScaLAPACK; + if (str == "elpa") return DiagMethod::ELPA; + return DiagMethod::Davidson; // default +} + +} // namespace esolver +} // namespace pyabacus + +#endif // PYABACUS_ESOLVER_I_DIAGONALIZER_HPP diff --git a/python/pyabacus/src/ModuleESolver/interfaces/i_hamiltonian_builder.hpp b/python/pyabacus/src/ModuleESolver/interfaces/i_hamiltonian_builder.hpp new file mode 100644 index 0000000000..794b8c119e --- /dev/null +++ b/python/pyabacus/src/ModuleESolver/interfaces/i_hamiltonian_builder.hpp @@ -0,0 +1,139 @@ +/** + * @file i_hamiltonian_builder.hpp + * @brief Abstract interface for Hamiltonian builder + * + * Defines the interface for building and accessing Hamiltonian matrices, + * supporting both k-space and real-space representations. + */ + +#ifndef PYABACUS_ESOLVER_I_HAMILTONIAN_BUILDER_HPP +#define PYABACUS_ESOLVER_I_HAMILTONIAN_BUILDER_HPP + +#include +#include + +#include +#include + +namespace py = pybind11; + +namespace pyabacus { +namespace esolver { + +/** + * @brief Abstract interface for Hamiltonian builder + * + * This interface defines the contract for building Hamiltonian matrices + * from charge density and providing access to H(k), S(k), H(R), S(R). + * + * @tparam TK Type for k-space quantities (double or complex) + * @tparam TR Type for real-space quantities (typically double) + */ +template +class IHamiltonianBuilder +{ +public: + virtual ~IHamiltonianBuilder() = default; + + // ==================== Build/Update ==================== + + /** + * @brief Build Hamiltonian from charge density + * @param rho Charge density array with shape (nspin, nrxx) + */ + virtual void build_from_rho(const py::array_t& rho) = 0; + + /** + * @brief Update H(k) for a specific k-point + * @param ik K-point index + */ + virtual void update_Hk(int ik) = 0; + + /** + * @brief Invalidate cached matrices (force rebuild) + */ + virtual void invalidate() = 0; + + // ==================== K-space Matrix Access ==================== + + /** + * @brief Get H(k) matrix for specific k-point + * @param ik K-point index + * @return Hamiltonian matrix as numpy array + */ + virtual py::array_t get_Hk(int ik) const = 0; + + /** + * @brief Get S(k) overlap matrix for specific k-point + * @param ik K-point index + * @return Overlap matrix as numpy array + */ + virtual py::array_t get_Sk(int ik) const = 0; + + // ==================== Real-space Matrix Access ==================== + + /** + * @brief Get H(R) in sparse format + * @return Dictionary mapping (iat1, iat2, R) -> matrix + */ + virtual py::dict get_HR() const = 0; + + /** + * @brief Get S(R) in sparse format + * @return Dictionary mapping (iat1, iat2, R) -> matrix + */ + virtual py::dict get_SR() const = 0; + + // ==================== Matrix-Vector Products ==================== + + /** + * @brief Apply Hamiltonian to wave function: H|psi> + * @param ik K-point index + * @param psi_in Input wave function + * @return H * psi_in + */ + virtual py::array_t apply_H(int ik, const py::array_t& psi_in) const = 0; + + /** + * @brief Apply overlap matrix to wave function: S|psi> + * @param ik K-point index + * @param psi_in Input wave function + * @return S * psi_in + */ + virtual py::array_t apply_S(int ik, const py::array_t& psi_in) const = 0; + + // ==================== Dimension Queries ==================== + + /** + * @brief Get number of basis functions + * @return Number of basis functions + */ + virtual int get_nbasis() const = 0; + + /** + * @brief Get number of k-points + * @return Number of k-points + */ + virtual int get_nks() const = 0; + + /** + * @brief Get local matrix dimensions (for 2D distribution) + * @return Pair of (nrow, ncol) + */ + virtual std::pair get_local_dims() const = 0; + + /** + * @brief Check if Hamiltonian data is valid + * @return true if valid + */ + virtual bool is_valid() const = 0; +}; + +// Type aliases for common use cases +using IHamiltonianBuilderGamma = IHamiltonianBuilder; +using IHamiltonianBuilderMultiK = IHamiltonianBuilder, double>; + +} // namespace esolver +} // namespace pyabacus + +#endif // PYABACUS_ESOLVER_I_HAMILTONIAN_BUILDER_HPP diff --git a/python/pyabacus/src/ModuleESolver/interfaces/i_scf_controller.hpp b/python/pyabacus/src/ModuleESolver/interfaces/i_scf_controller.hpp new file mode 100644 index 0000000000..401a7e6dac --- /dev/null +++ b/python/pyabacus/src/ModuleESolver/interfaces/i_scf_controller.hpp @@ -0,0 +1,159 @@ +/** + * @file i_scf_controller.hpp + * @brief Abstract interface for SCF controller + * + * Defines the interface for controlling SCF iterations, + * allowing different implementations and Python-controlled workflows. + */ + +#ifndef PYABACUS_ESOLVER_I_SCF_CONTROLLER_HPP +#define PYABACUS_ESOLVER_I_SCF_CONTROLLER_HPP + +#include +#include + +namespace pyabacus { +namespace esolver { + +/** + * @brief SCF convergence status + */ +enum class SCFStatus +{ + NotStarted, ///< SCF has not been started + Running, ///< SCF is in progress + Converged, ///< SCF converged successfully + MaxIterReached, ///< Maximum iterations reached without convergence + Failed ///< SCF failed due to error +}; + +/** + * @brief SCF convergence criteria + */ +struct SCFConvergenceCriteria +{ + double drho_threshold = 1e-6; ///< Charge density difference threshold + double energy_threshold = 1e-6; ///< Energy difference threshold (Ry) + int max_iterations = 100; ///< Maximum number of iterations + bool check_energy = true; ///< Whether to check energy convergence + bool check_drho = true; ///< Whether to check charge density convergence +}; + +/** + * @brief Callback type for SCF iteration events + * + * Called after each SCF iteration with: + * - iter: current iteration number + * - drho: charge density difference + * - energy: current total energy + * + * Return true to continue, false to stop SCF. + */ +using SCFIterationCallback = std::function; + +// Forward declarations for component interfaces +template class IHamiltonianBuilder; +class IChargeMixer; +template class IDiagonalizer; + +/** + * @brief Abstract interface for SCF controller + * + * This interface defines the contract for SCF loop control, + * allowing different implementations (LCAO, PW, etc.) and + * enabling Python-controlled SCF workflows with breakpoints. + */ +class ISCFController +{ +public: + virtual ~ISCFController() = default; + + // ==================== Lifecycle ==================== + + /** + * @brief Initialize SCF calculation + * @param istep Ion step index (for MD/relaxation) + */ + virtual void initialize(int istep = 0) = 0; + + /** + * @brief Finalize SCF calculation + * @param istep Ion step index + */ + virtual void finalize(int istep = 0) = 0; + + // ==================== Iteration Control ==================== + + /** + * @brief Run a single SCF iteration + * @param iter Iteration number (1-based) + * @return Current SCF status + */ + virtual SCFStatus run_iteration(int iter) = 0; + + /** + * @brief Run complete SCF loop + * @param criteria Convergence criteria + * @param callback Optional callback for each iteration + * @return Final SCF status + */ + virtual SCFStatus run_scf(const SCFConvergenceCriteria& criteria, + SCFIterationCallback callback = nullptr) = 0; + + /** + * @brief Check if SCF is converged + * @return true if converged + */ + virtual bool is_converged() const = 0; + + /** + * @brief Get current SCF status + * @return Current status + */ + virtual SCFStatus get_status() const = 0; + + // ==================== State Queries ==================== + + /** + * @brief Get current iteration number + * @return Iteration number (0 if not started) + */ + virtual int get_iteration() const = 0; + + /** + * @brief Get current charge density difference + * @return drho value + */ + virtual double get_drho() const = 0; + + /** + * @brief Get current total energy + * @return Total energy in Ry + */ + virtual double get_energy() const = 0; + + // ==================== Component Access ==================== + + /** + * @brief Get Hamiltonian builder component + * @return Pointer to Hamiltonian builder (may be nullptr) + */ + virtual void* get_hamiltonian_builder() = 0; + + /** + * @brief Get charge mixer component + * @return Pointer to charge mixer (may be nullptr) + */ + virtual IChargeMixer* get_charge_mixer() = 0; + + /** + * @brief Get diagonalizer component + * @return Pointer to diagonalizer (may be nullptr) + */ + virtual void* get_diagonalizer() = 0; +}; + +} // namespace esolver +} // namespace pyabacus + +#endif // PYABACUS_ESOLVER_I_SCF_CONTROLLER_HPP diff --git a/python/pyabacus/src/ModuleESolver/py_esolver_lcao.cpp b/python/pyabacus/src/ModuleESolver/py_esolver_lcao.cpp new file mode 100644 index 0000000000..9261a9225c --- /dev/null +++ b/python/pyabacus/src/ModuleESolver/py_esolver_lcao.cpp @@ -0,0 +1,1003 @@ +/** + * @file py_esolver_lcao.cpp + * @brief Python bindings for ESolver_KS_LCAO + * + * This file provides pybind11 bindings for the LCAO ESolver, + * enabling Python-controlled SCF workflows with breakpoint support. + */ + +#include +#include +#include +#include +#include + +#include "py_esolver_lcao.hpp" + +// ABACUS headers for actual implementation +#include "source_estate/module_charge/charge.h" +#include "source_estate/fp_energy.h" +#include "source_estate/elecstate.h" +#include "source_estate/module_dm/density_matrix.h" +#include "source_lcao/hamilt_lcao.h" +#include "source_lcao/module_hcontainer/hcontainer.h" +#include "source_basis/module_ao/parallel_orbitals.h" + +#include +#include +#include + +namespace py = pybind11; +using namespace pybind11::literals; + +namespace py_esolver +{ + +// ============================================================================ +// PyChargeAccessor Implementation +// ============================================================================ + +void PyChargeAccessor::set_from_charge(const Charge* chr) +{ + if (chr == nullptr) + { + chr_ptr_ = nullptr; + rho_ptr_ = nullptr; + nspin_ = 0; + nrxx_ = 0; + ngmc_ = 0; + return; + } + + chr_ptr_ = chr; + rho_ptr_ = nullptr; // Use chr_ptr_ instead + nspin_ = chr->nspin; + nrxx_ = chr->nrxx; + ngmc_ = chr->ngmc; +} + +void PyChargeAccessor::set_data(const double* rho_ptr, int nspin, int nrxx) +{ + chr_ptr_ = nullptr; // Not using Charge object + rho_ptr_ = rho_ptr; + nspin_ = nspin; + nrxx_ = nrxx; + ngmc_ = 0; +} + +py::array_t PyChargeAccessor::get_rho() const +{ + if (!is_valid()) + { + throw std::runtime_error("Charge data not available. Run SCF first."); + } + + // Create numpy array with shape (nspin, nrxx) + std::vector shape = {static_cast(nspin_), static_cast(nrxx_)}; + + auto result = py::array_t(shape); + auto buf = result.request(); + double* ptr = static_cast(buf.ptr); + + // Copy data from either chr_ptr_ or rho_ptr_ + if (chr_ptr_ != nullptr && chr_ptr_->rho != nullptr) + { + // Copy from Charge object (rho is double** with shape [nspin][nrxx]) + for (int is = 0; is < nspin_; ++is) + { + if (chr_ptr_->rho[is] != nullptr) + { + std::copy(chr_ptr_->rho[is], chr_ptr_->rho[is] + nrxx_, ptr + is * nrxx_); + } + } + } + else if (rho_ptr_ != nullptr) + { + // Copy from flat array (legacy mode) + std::copy(rho_ptr_, rho_ptr_ + nspin_ * nrxx_, ptr); + } + else + { + throw std::runtime_error("No valid charge data source."); + } + + return result; +} + +py::array_t> PyChargeAccessor::get_rhog() const +{ + if (chr_ptr_ == nullptr || chr_ptr_->rhog == nullptr) + { + throw std::runtime_error("Reciprocal-space charge density not available."); + } + + // Create numpy array with shape (nspin, ngmc) + std::vector shape = {static_cast(nspin_), static_cast(ngmc_)}; + + auto result = py::array_t>(shape); + auto buf = result.request(); + std::complex* ptr = static_cast*>(buf.ptr); + + // Copy from Charge object (rhog is complex** with shape [nspin][ngmc]) + for (int is = 0; is < nspin_; ++is) + { + if (chr_ptr_->rhog[is] != nullptr) + { + std::copy(chr_ptr_->rhog[is], chr_ptr_->rhog[is] + ngmc_, ptr + is * ngmc_); + } + } + + return result; +} + +py::array_t PyChargeAccessor::get_rho_core() const +{ + if (chr_ptr_ == nullptr || chr_ptr_->rho_core == nullptr) + { + throw std::runtime_error("Core charge density not available."); + } + + // Create numpy array with shape (nrxx,) + std::vector shape = {static_cast(nrxx_)}; + + auto result = py::array_t(shape); + auto buf = result.request(); + double* ptr = static_cast(buf.ptr); + + std::copy(chr_ptr_->rho_core, chr_ptr_->rho_core + nrxx_, ptr); + + return result; +} + +// ============================================================================ +// PyEnergyAccessor Implementation +// ============================================================================ + +void PyEnergyAccessor::set_from_fenergy(const elecstate::fenergy* f_en) +{ + if (f_en == nullptr) + { + etot_ = 0.0; + eband_ = 0.0; + hartree_energy_ = 0.0; + etxc_ = 0.0; + ewald_energy_ = 0.0; + demet_ = 0.0; + exx_ = 0.0; + evdw_ = 0.0; + return; + } + + etot_ = f_en->etot; + eband_ = f_en->eband; + hartree_energy_ = f_en->hartree_energy; + etxc_ = f_en->etxc; + ewald_energy_ = f_en->ewald_energy; + demet_ = f_en->demet; + exx_ = f_en->exx; + evdw_ = f_en->evdw; +} + +void PyEnergyAccessor::set_energies(double etot, double eband, double hartree, + double etxc, double ewald, double demet, + double exx, double evdw) +{ + etot_ = etot; + eband_ = eband; + hartree_energy_ = hartree; + etxc_ = etxc; + ewald_energy_ = ewald; + demet_ = demet; + exx_ = exx; + evdw_ = evdw; +} + +py::dict PyEnergyAccessor::get_all_energies() const +{ + py::dict result; + result["etot"] = etot_; + result["eband"] = eband_; + result["hartree_energy"] = hartree_energy_; + result["etxc"] = etxc_; + result["ewald_energy"] = ewald_energy_; + result["demet"] = demet_; + result["exx"] = exx_; + result["evdw"] = evdw_; + return result; +} + +// ============================================================================ +// PyHamiltonianAccessor Implementation (template) +// ============================================================================ + +template +void PyHamiltonianAccessor::set_from_hamilt(hamilt::HamiltLCAO* hamilt_lcao, int nks, const Parallel_Orbitals* pv) +{ + hamilt_ptr_ = hamilt_lcao; + pv_ = pv; + nks_ = nks; + + if (hamilt_lcao == nullptr) + { + nbasis_ = 0; + nloc_ = 0; + nrow_ = 0; + ncol_ = 0; + return; + } + + // Get dimensions from Parallel_Orbitals if available + if (pv != nullptr) + { + nrow_ = pv->get_row_size(); + ncol_ = pv->get_col_size(); + nloc_ = nrow_ * ncol_; + nbasis_ = pv->get_global_row_size(); + } + + // Initialize pointer arrays for compatibility mode + hk_ptrs_.resize(nks, nullptr); + sk_ptrs_.resize(nks, nullptr); + matrix_dims_.resize(nks, {nrow_, ncol_}); +} + +template +void PyHamiltonianAccessor::set_dimensions(int nbasis, int nks) +{ + nbasis_ = nbasis; + nks_ = nks; + hk_ptrs_.resize(nks, nullptr); + sk_ptrs_.resize(nks, nullptr); + matrix_dims_.resize(nks, {0, 0}); +} + +template +void PyHamiltonianAccessor::set_Hk_data(int ik, const TK* data, int nrow, int ncol) +{ + if (ik >= 0 && ik < nks_) + { + hk_ptrs_[ik] = data; + matrix_dims_[ik] = {nrow, ncol}; + } +} + +template +void PyHamiltonianAccessor::set_Sk_data(int ik, const TK* data, int nrow, int ncol) +{ + if (ik >= 0 && ik < nks_) + { + sk_ptrs_[ik] = data; + matrix_dims_[ik] = {nrow, ncol}; + } +} + +template +py::array_t PyHamiltonianAccessor::get_Hk(int ik) const +{ + if (!is_valid() || ik < 0 || ik >= nks_) + { + throw std::runtime_error("Invalid k-point index or Hamiltonian not available."); + } + + if (hk_ptrs_[ik] == nullptr) + { + throw std::runtime_error("H(k) data not set for this k-point."); + } + + auto [nrow, ncol] = matrix_dims_[ik]; + std::vector shape = {nrow, ncol}; + + auto result = py::array_t(shape); + auto buf = result.request(); + TK* ptr = static_cast(buf.ptr); + + std::copy(hk_ptrs_[ik], hk_ptrs_[ik] + nrow * ncol, ptr); + + return result; +} + +template +py::array_t PyHamiltonianAccessor::get_Sk(int ik) const +{ + if (!is_valid() || ik < 0 || ik >= nks_) + { + throw std::runtime_error("Invalid k-point index or overlap matrix not available."); + } + + if (sk_ptrs_[ik] == nullptr) + { + throw std::runtime_error("S(k) data not set for this k-point."); + } + + auto [nrow, ncol] = matrix_dims_[ik]; + std::vector shape = {nrow, ncol}; + + auto result = py::array_t(shape); + auto buf = result.request(); + TK* ptr = static_cast(buf.ptr); + + std::copy(sk_ptrs_[ik], sk_ptrs_[ik] + nrow * ncol, ptr); + + return result; +} + +template +py::dict PyHamiltonianAccessor::get_HR() const +{ + // Placeholder: will be implemented when full ABACUS integration is available + py::dict result; + return result; +} + +template +py::dict PyHamiltonianAccessor::get_SR() const +{ + // Placeholder: will be implemented when full ABACUS integration is available + py::dict result; + return result; +} + +// Explicit template instantiations +template class PyHamiltonianAccessor; +template class PyHamiltonianAccessor, double>; + +// ============================================================================ +// PyDensityMatrixAccessor Implementation (template) +// ============================================================================ + +template +void PyDensityMatrixAccessor::set_from_dm(elecstate::DensityMatrix* dm) +{ + dm_ptr_ = dm; + + if (dm == nullptr) + { + nks_ = 0; + nrow_ = 0; + ncol_ = 0; + return; + } + + nks_ = dm->get_DMK_nks(); + nrow_ = dm->get_DMK_nrow(); + ncol_ = dm->get_DMK_ncol(); + + // Initialize pointer arrays for compatibility mode + dmk_ptrs_.resize(nks_, nullptr); +} + +template +void PyDensityMatrixAccessor::set_dimensions(int nks, int nrow, int ncol) +{ + nks_ = nks; + nrow_ = nrow; + ncol_ = ncol; + dmk_ptrs_.resize(nks, nullptr); +} + +template +void PyDensityMatrixAccessor::set_DMK_data(int ik, const TK* data) +{ + if (ik >= 0 && ik < nks_) + { + dmk_ptrs_[ik] = data; + } +} + +template +py::array_t PyDensityMatrixAccessor::get_DMK(int ik) const +{ + if (!is_valid() || ik < 0 || ik >= nks_) + { + throw std::runtime_error("Invalid k-point index or density matrix not available."); + } + + if (dmk_ptrs_[ik] == nullptr) + { + throw std::runtime_error("DM(k) data not set for this k-point."); + } + + std::vector shape = {static_cast(nrow_), static_cast(ncol_)}; + + auto result = py::array_t(shape); + auto buf = result.request(); + TK* ptr = static_cast(buf.ptr); + + std::copy(dmk_ptrs_[ik], dmk_ptrs_[ik] + nrow_ * ncol_, ptr); + + return result; +} + +template +std::vector> PyDensityMatrixAccessor::get_DMK_all() const +{ + std::vector> result; + for (int ik = 0; ik < nks_; ++ik) + { + result.push_back(get_DMK(ik)); + } + return result; +} + +template +py::dict PyDensityMatrixAccessor::get_DMR() const +{ + // Placeholder: will be implemented when full ABACUS integration is available + py::dict result; + return result; +} + +// Explicit template instantiations +template class PyDensityMatrixAccessor; +template class PyDensityMatrixAccessor, double>; + +// ============================================================================ +// PyESolverLCAO Implementation (template) +// ============================================================================ + +template +PyESolverLCAO::PyESolverLCAO() +{ + // Constructor - initialization deferred to initialize() +} + +template +PyESolverLCAO::~PyESolverLCAO() +{ + // Destructor - cleanup will be implemented in Phase 3 +} + +template +void PyESolverLCAO::initialize(const std::string& input_dir) +{ + // Placeholder: will be implemented in Phase 3 + // This will: + // 1. Read INPUT file from input_dir + // 2. Initialize UnitCell + // 3. Create ESolver_KS_LCAO instance + initialized_ = true; + std::cout << "[PyESolverLCAO] Initialized with input directory: " << input_dir << std::endl; +} + +template +void PyESolverLCAO::before_all_runners() +{ + if (!initialized_) + { + throw std::runtime_error("ESolver not initialized. Call initialize() first."); + } + // Placeholder: will call esolver_->before_all_runners() in Phase 3 + std::cout << "[PyESolverLCAO] before_all_runners called" << std::endl; +} + +template +void PyESolverLCAO::before_scf(int istep) +{ + if (!initialized_) + { + throw std::runtime_error("ESolver not initialized. Call initialize() first."); + } + istep_ = istep; + scf_started_ = true; + conv_esolver_ = false; + niter_ = 0; + // Placeholder: will call esolver_->before_scf() in Phase 3 + std::cout << "[PyESolverLCAO] before_scf called for step " << istep << std::endl; +} + +template +void PyESolverLCAO::run_scf_iteration(int iter) +{ + if (!scf_started_) + { + throw std::runtime_error("SCF not started. Call before_scf() first."); + } + niter_ = iter; + // Placeholder: will implement actual SCF iteration in Phase 3 + // 1. iter_init() + // 2. hamilt2rho() + // 3. iter_finish() + std::cout << "[PyESolverLCAO] SCF iteration " << iter << std::endl; +} + +template +void PyESolverLCAO::run_scf(int max_iter) +{ + before_scf(istep_); + + for (int iter = 1; iter <= max_iter; ++iter) + { + run_scf_iteration(iter); + if (conv_esolver_) + { + break; + } + } +} + +template +void PyESolverLCAO::after_scf(int istep) +{ + if (!scf_started_) + { + throw std::runtime_error("SCF not started. Call before_scf() first."); + } + // Placeholder: will call esolver_->after_scf() in Phase 3 + std::cout << "[PyESolverLCAO] after_scf called for step " << istep << std::endl; + scf_started_ = false; +} + +template +PyChargeAccessor PyESolverLCAO::get_charge() const +{ + PyChargeAccessor accessor; + // Note: esolver_ connection will be implemented when full ABACUS integration is available + // For now, return empty accessor + return accessor; +} + +template +PyEnergyAccessor PyESolverLCAO::get_energy() const +{ + PyEnergyAccessor accessor; + // Note: esolver_ connection will be implemented when full ABACUS integration is available + // For now, return empty accessor + return accessor; +} + +template +PyHamiltonianAccessor PyESolverLCAO::get_hamiltonian() const +{ + PyHamiltonianAccessor accessor; + // Note: esolver_ connection will be implemented when full ABACUS integration is available + // For now, return empty accessor + return accessor; +} + +template +PyDensityMatrixAccessor PyESolverLCAO::get_density_matrix() const +{ + PyDensityMatrixAccessor accessor; + // Note: esolver_ connection will be implemented when full ABACUS integration is available + // For now, return empty accessor + return accessor; +} + +template +py::array_t PyESolverLCAO::get_psi(int ik) const +{ + // Note: Will return wave function coefficients when full ABACUS integration is available + return py::array_t(); +} + +template +py::array_t PyESolverLCAO::get_eigenvalues(int ik) const +{ + // Note: Will return eigenvalues when full ABACUS integration is available + return py::array_t(); +} + +template +py::array_t PyESolverLCAO::get_occupations(int ik) const +{ + // Note: Will return occupation numbers when full ABACUS integration is available + return py::array_t(); +} + +template +int PyESolverLCAO::get_nks() const +{ + // Note: Will return actual nks when full ABACUS integration is available + return 0; +} + +template +py::array_t PyESolverLCAO::get_kvec_d(int ik) const +{ + std::vector shape = {3}; + auto result = py::array_t(shape); + auto buf = result.request(); + double* ptr = static_cast(buf.ptr); + ptr[0] = ptr[1] = ptr[2] = 0.0; + return result; +} + +template +py::array_t PyESolverLCAO::get_wk() const +{ + // Note: Will return k-point weights when full ABACUS integration is available + return py::array_t(); +} + +template +int PyESolverLCAO::get_nbasis() const +{ + // Note: Will return actual nbasis when full ABACUS integration is available + return 0; +} + +template +int PyESolverLCAO::get_nbands() const +{ + // Note: Will return actual nbands when full ABACUS integration is available + return 0; +} + +template +int PyESolverLCAO::get_nspin() const +{ + // Note: Will return actual nspin when full ABACUS integration is available + return 1; +} + +template +int PyESolverLCAO::get_nat() const +{ + // Note: Will return actual nat when full ABACUS integration is available + return 0; +} + +// Explicit template instantiations +template class PyESolverLCAO; +template class PyESolverLCAO, double>; + +} // namespace py_esolver + +// ============================================================================ +// Pybind11 Module Definition +// ============================================================================ + +void bind_charge_accessor(py::module& m) +{ + py::class_(m, "ChargeAccessor", + R"pbdoc( + Accessor for charge density data. + + Provides access to real-space charge density (rho) and related quantities. + )pbdoc") + .def(py::init<>()) + .def("get_rho", &py_esolver::PyChargeAccessor::get_rho, + R"pbdoc( + Get real-space charge density as numpy array. + + Returns + ------- + numpy.ndarray + Charge density with shape (nspin, nrxx) + )pbdoc") + .def("get_rhog", &py_esolver::PyChargeAccessor::get_rhog, + R"pbdoc( + Get reciprocal-space charge density as numpy array. + + Returns + ------- + numpy.ndarray + Charge density in G-space with shape (nspin, ngmc) + )pbdoc") + .def("get_rho_core", &py_esolver::PyChargeAccessor::get_rho_core, + R"pbdoc( + Get core charge density as numpy array. + + Returns + ------- + numpy.ndarray + Core charge density with shape (nrxx,) + )pbdoc") + .def_property_readonly("nspin", &py_esolver::PyChargeAccessor::get_nspin, + "Number of spin channels") + .def_property_readonly("nrxx", &py_esolver::PyChargeAccessor::get_nrxx, + "Number of real-space grid points") + .def_property_readonly("ngmc", &py_esolver::PyChargeAccessor::get_ngmc, + "Number of G-vectors for charge density") + .def("is_valid", &py_esolver::PyChargeAccessor::is_valid, + "Check if charge data is available"); +} + +void bind_energy_accessor(py::module& m) +{ + py::class_(m, "EnergyAccessor", + R"pbdoc( + Accessor for energy data. + + Provides access to various energy components from the calculation. + All energies are in Rydberg units. + )pbdoc") + .def(py::init<>()) + .def_property_readonly("etot", &py_esolver::PyEnergyAccessor::get_etot, + "Total energy (Ry)") + .def_property_readonly("eband", &py_esolver::PyEnergyAccessor::get_eband, + "Band energy (Ry)") + .def_property_readonly("hartree_energy", &py_esolver::PyEnergyAccessor::get_hartree_energy, + "Hartree energy (Ry)") + .def_property_readonly("etxc", &py_esolver::PyEnergyAccessor::get_etxc, + "Exchange-correlation energy (Ry)") + .def_property_readonly("ewald_energy", &py_esolver::PyEnergyAccessor::get_ewald_energy, + "Ewald energy (Ry)") + .def_property_readonly("demet", &py_esolver::PyEnergyAccessor::get_demet, + "-TS term for metals (Ry)") + .def_property_readonly("exx", &py_esolver::PyEnergyAccessor::get_exx, + "Exact exchange energy (Ry)") + .def_property_readonly("evdw", &py_esolver::PyEnergyAccessor::get_evdw, + "van der Waals energy (Ry)") + .def("get_all_energies", &py_esolver::PyEnergyAccessor::get_all_energies, + "Get all energies as a dictionary"); +} + +template +void bind_hamiltonian_accessor(py::module& m, const std::string& suffix) +{ + using HamiltAccessor = py_esolver::PyHamiltonianAccessor; + + std::string class_name = "HamiltonianAccessor" + suffix; + + py::class_(m, class_name.c_str(), + R"pbdoc( + Accessor for Hamiltonian matrix data. + + Provides access to H(k), S(k), H(R), and S(R) matrices. + )pbdoc") + .def(py::init<>()) + .def_property_readonly("nbasis", &HamiltAccessor::get_nbasis, + "Number of basis functions") + .def_property_readonly("nks", &HamiltAccessor::get_nks, + "Number of k-points") + .def("get_Hk", &HamiltAccessor::get_Hk, + R"pbdoc( + Get H(k) matrix for specific k-point. + + Parameters + ---------- + ik : int + K-point index + + Returns + ------- + numpy.ndarray + Hamiltonian matrix at k-point ik + )pbdoc", "ik"_a) + .def("get_Sk", &HamiltAccessor::get_Sk, + R"pbdoc( + Get S(k) overlap matrix for specific k-point. + + Parameters + ---------- + ik : int + K-point index + + Returns + ------- + numpy.ndarray + Overlap matrix at k-point ik + )pbdoc", "ik"_a) + .def("get_HR", &HamiltAccessor::get_HR, + "Get H(R) in sparse format") + .def("get_SR", &HamiltAccessor::get_SR, + "Get S(R) in sparse format") + .def("is_valid", &HamiltAccessor::is_valid, + "Check if Hamiltonian data is available"); +} + +template +void bind_density_matrix_accessor(py::module& m, const std::string& suffix) +{ + using DMAccessor = py_esolver::PyDensityMatrixAccessor; + + std::string class_name = "DensityMatrixAccessor" + suffix; + + py::class_(m, class_name.c_str(), + R"pbdoc( + Accessor for density matrix data. + + Provides access to DM(k) and DM(R) matrices. + )pbdoc") + .def(py::init<>()) + .def_property_readonly("nks", &DMAccessor::get_nks, + "Number of k-points") + .def_property_readonly("nrow", &DMAccessor::get_nrow, + "Number of rows in density matrix") + .def_property_readonly("ncol", &DMAccessor::get_ncol, + "Number of columns in density matrix") + .def("get_DMK", &DMAccessor::get_DMK, + R"pbdoc( + Get DM(k) for specific k-point. + + Parameters + ---------- + ik : int + K-point index + + Returns + ------- + numpy.ndarray + Density matrix at k-point ik + )pbdoc", "ik"_a) + .def("get_DMK_all", &DMAccessor::get_DMK_all, + "Get all DM(k) matrices as a list") + .def("get_DMR", &DMAccessor::get_DMR, + "Get DM(R) in sparse format") + .def("is_valid", &DMAccessor::is_valid, + "Check if density matrix data is available"); +} + +template +void bind_esolver_lcao(py::module& m, const std::string& suffix) +{ + using ESolver = py_esolver::PyESolverLCAO; + + std::string class_name = "ESolverLCAO" + suffix; + + py::class_(m, class_name.c_str(), + R"pbdoc( + Python wrapper for ESolver_KS_LCAO. + + This class provides a Python interface for LCAO calculations + with support for breakpoints and state inspection during SCF. + + Example + ------- + >>> esolver = ESolverLCAO_gamma() + >>> esolver.initialize("./") + >>> esolver.before_all_runners() + >>> esolver.before_scf(0) + >>> for iter in range(1, 101): + ... esolver.run_scf_iteration(iter) + ... energy = esolver.get_energy() + ... print(f"Iter {iter}: E = {energy.etot}") + ... if esolver.is_converged(): + ... break + >>> # Breakpoint before after_scf - inspect state here + >>> charge = esolver.get_charge() + >>> hamiltonian = esolver.get_hamiltonian() + >>> esolver.after_scf(0) + )pbdoc") + .def(py::init<>()) + + // Initialization + .def("initialize", &ESolver::initialize, + R"pbdoc( + Initialize ESolver from INPUT file. + + Parameters + ---------- + input_dir : str + Directory containing INPUT, STRU, and other input files + )pbdoc", "input_dir"_a) + .def("before_all_runners", &ESolver::before_all_runners, + "Initialize calculation environment") + + // SCF Control + .def("before_scf", &ESolver::before_scf, + R"pbdoc( + Prepare for SCF calculation. + + Parameters + ---------- + istep : int, optional + Ion step index (default: 0) + )pbdoc", "istep"_a = 0) + .def("run_scf_iteration", &ESolver::run_scf_iteration, + R"pbdoc( + Run a single SCF iteration. + + Parameters + ---------- + iter : int + Iteration number (1-based) + )pbdoc", "iter"_a) + .def("run_scf", &ESolver::run_scf, + R"pbdoc( + Run complete SCF loop. + + Parameters + ---------- + max_iter : int, optional + Maximum number of iterations (default: 100) + )pbdoc", "max_iter"_a = 100) + .def("after_scf", &ESolver::after_scf, + R"pbdoc( + Finalize SCF calculation. + + Parameters + ---------- + istep : int, optional + Ion step index (default: 0) + )pbdoc", "istep"_a = 0) + + // Status + .def("is_converged", &ESolver::is_converged, + "Check if SCF is converged") + .def_property_readonly("niter", &ESolver::get_niter, + "Current iteration number") + .def_property_readonly("drho", &ESolver::get_drho, + "Charge density difference") + .def_property_readonly("istep", &ESolver::get_istep, + "Current ion step") + + // Data Accessors + .def("get_charge", &ESolver::get_charge, + "Get charge density accessor") + .def("get_energy", &ESolver::get_energy, + "Get energy accessor") + .def("get_hamiltonian", &ESolver::get_hamiltonian, + "Get Hamiltonian accessor") + .def("get_density_matrix", &ESolver::get_density_matrix, + "Get density matrix accessor") + + // Wave functions + .def("get_psi", &ESolver::get_psi, + "Get wave function coefficients for k-point ik", "ik"_a) + .def("get_eigenvalues", &ESolver::get_eigenvalues, + "Get eigenvalues for k-point ik", "ik"_a) + .def("get_occupations", &ESolver::get_occupations, + "Get occupation numbers for k-point ik", "ik"_a) + + // K-points + .def_property_readonly("nks", &ESolver::get_nks, + "Number of k-points") + .def("get_kvec_d", &ESolver::get_kvec_d, + "Get k-vector in direct coordinates", "ik"_a) + .def("get_wk", &ESolver::get_wk, + "Get k-point weights") + + // System info + .def_property_readonly("nbasis", &ESolver::get_nbasis, + "Number of basis functions") + .def_property_readonly("nbands", &ESolver::get_nbands, + "Number of bands") + .def_property_readonly("nspin", &ESolver::get_nspin, + "Number of spin channels") + .def_property_readonly("nat", &ESolver::get_nat, + "Number of atoms"); +} + +PYBIND11_MODULE(_esolver_pack, m) +{ + m.doc() = R"pbdoc( + PyABACUS ESolver Module + ----------------------- + + This module provides Python bindings for ABACUS ESolver_KS_LCAO, + enabling Python-controlled SCF workflows with breakpoint support. + + Main Classes + ------------ + ESolverLCAO_gamma : ESolver for gamma-only calculations + ESolverLCAO_multi_k : ESolver for multi-k calculations + + Accessor Classes + ---------------- + ChargeAccessor : Access charge density data + EnergyAccessor : Access energy components + HamiltonianAccessor_gamma/multi_k : Access Hamiltonian matrices + DensityMatrixAccessor_gamma/multi_k : Access density matrices + + Example + ------- + >>> from pyabacus.esolver import ESolverLCAO_gamma + >>> esolver = ESolverLCAO_gamma() + >>> esolver.initialize("./") + >>> esolver.before_all_runners() + >>> esolver.before_scf(0) + >>> # Run SCF with breakpoint support + >>> for iter in range(1, 101): + ... esolver.run_scf_iteration(iter) + ... if esolver.is_converged(): + ... break + >>> # Inspect state before after_scf + >>> charge = esolver.get_charge() + >>> energy = esolver.get_energy() + >>> esolver.after_scf(0) + )pbdoc"; + + // Bind accessor classes + bind_charge_accessor(m); + bind_energy_accessor(m); + bind_hamiltonian_accessor(m, "_gamma"); + bind_hamiltonian_accessor>(m, "_multi_k"); + bind_density_matrix_accessor(m, "_gamma"); + bind_density_matrix_accessor>(m, "_multi_k"); + + // Bind ESolver classes + bind_esolver_lcao(m, "_gamma"); + bind_esolver_lcao, double>(m, "_multi_k"); +} diff --git a/python/pyabacus/src/ModuleESolver/py_esolver_lcao.hpp b/python/pyabacus/src/ModuleESolver/py_esolver_lcao.hpp new file mode 100644 index 0000000000..61e6b24cbe --- /dev/null +++ b/python/pyabacus/src/ModuleESolver/py_esolver_lcao.hpp @@ -0,0 +1,472 @@ +#ifndef PY_ESOLVER_LCAO_HPP +#define PY_ESOLVER_LCAO_HPP + +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include + +#include "../utils/pybind_utils.h" +#include "interfaces/i_scf_controller.hpp" +#include "interfaces/i_hamiltonian_builder.hpp" +#include "interfaces/i_charge_mixer.hpp" +#include "interfaces/i_diagonalizer.hpp" +#include "components/scf_controller_lcao.hpp" + +// Forward declarations for ABACUS types +class UnitCell; +class Charge; +class Parallel_Orbitals; +namespace elecstate { + struct fenergy; + class ElecState; + template class DensityMatrix; +} +namespace hamilt { + template class HContainer; + template class AtomPair; + template class BaseMatrix; + template class HamiltLCAO; +} +namespace ModuleESolver { + template class ESolver_KS_LCAO; +} + +namespace py = pybind11; + +namespace py_esolver +{ + +/** + * @brief Accessor class for charge density data + * + * Provides Python access to charge density (rho) in real and reciprocal space + */ +class PyChargeAccessor +{ +public: + PyChargeAccessor() = default; + + /// Set internal pointers from Charge object + void set_from_charge(const Charge* chr); + + /// Set data directly (for compatibility with existing code) + void set_data(const double* rho_ptr, int nspin, int nrxx); + + /// Get real-space charge density as numpy array (nspin, nrxx) + py::array_t get_rho() const; + + /// Get reciprocal-space charge density as numpy array (nspin, ngmc) + py::array_t> get_rhog() const; + + /// Get core charge density + py::array_t get_rho_core() const; + + /// Get number of spin channels + int get_nspin() const { return nspin_; } + + /// Get number of real-space grid points + int get_nrxx() const { return nrxx_; } + + /// Get number of G-vectors + int get_ngmc() const { return ngmc_; } + + /// Check if data is valid + bool is_valid() const { return (chr_ptr_ != nullptr || rho_ptr_ != nullptr) && nspin_ > 0; } + +private: + const Charge* chr_ptr_ = nullptr; + const double* rho_ptr_ = nullptr; // Direct pointer for compatibility + int nspin_ = 0; + int nrxx_ = 0; + int ngmc_ = 0; +}; + +/** + * @brief Accessor class for energy data + * + * Provides Python access to various energy components + */ +class PyEnergyAccessor +{ +public: + PyEnergyAccessor() = default; + + /// Set from fenergy structure + void set_from_fenergy(const elecstate::fenergy* f_en); + + /// Set energies directly (for compatibility) + void set_energies(double etot, double eband, double hartree, + double etxc, double ewald, double demet, + double exx, double evdw); + + /// Get total energy (Ry) + double get_etot() const { return etot_; } + + /// Get band energy (Ry) + double get_eband() const { return eband_; } + + /// Get Hartree energy (Ry) + double get_hartree_energy() const { return hartree_energy_; } + + /// Get exchange-correlation energy (Ry) + double get_etxc() const { return etxc_; } + + /// Get Ewald energy (Ry) + double get_ewald_energy() const { return ewald_energy_; } + + /// Get -TS term for metals (Ry) + double get_demet() const { return demet_; } + + /// Get exact exchange energy (Ry) + double get_exx() const { return exx_; } + + /// Get van der Waals energy (Ry) + double get_evdw() const { return evdw_; } + + /// Get all energies as a dictionary + py::dict get_all_energies() const; + +private: + double etot_ = 0.0; + double eband_ = 0.0; + double hartree_energy_ = 0.0; + double etxc_ = 0.0; + double ewald_energy_ = 0.0; + double demet_ = 0.0; + double exx_ = 0.0; + double evdw_ = 0.0; +}; + +/** + * @brief Accessor class for Hamiltonian matrix data + * + * Provides Python access to H(R), S(R), H(k), S(k) matrices + */ +template +class PyHamiltonianAccessor +{ +public: + PyHamiltonianAccessor() = default; + + /// Set from HamiltLCAO object + void set_from_hamilt(hamilt::HamiltLCAO* hamilt_lcao, int nks, const Parallel_Orbitals* pv); + + /// Set dimensions directly (for compatibility) + void set_dimensions(int nbasis, int nks); + + /// Set H(k) data for a specific k-point + void set_Hk_data(int ik, const TK* data, int nrow, int ncol); + + /// Set S(k) data for a specific k-point + void set_Sk_data(int ik, const TK* data, int nrow, int ncol); + + /// Get number of basis functions + int get_nbasis() const { return nbasis_; } + + /// Get number of k-points + int get_nks() const { return nks_; } + + /// Get local matrix size (for 2D distribution) + int get_nloc() const { return nloc_; } + + /// Get H(k) matrix for specific k-point (local part in 2D distribution) + py::array_t get_Hk(int ik) const; + + /// Get S(k) matrix for specific k-point (local part in 2D distribution) + py::array_t get_Sk(int ik) const; + + /// Get H(R) in sparse COO format: returns (row_indices, col_indices, R_vectors, values) + py::tuple get_HR_sparse() const; + + /// Get S(R) in sparse COO format: returns (row_indices, col_indices, R_vectors, values) + py::tuple get_SR_sparse() const; + + /// Get H(R) as dictionary: {(iat1, iat2, R): matrix} + py::dict get_HR() const; + + /// Get S(R) as dictionary: {(iat1, iat2, R): matrix} + py::dict get_SR() const; + + /// Check if data is valid + bool is_valid() const { return (hamilt_ptr_ != nullptr || nbasis_ > 0) && nks_ > 0; } + +private: + hamilt::HamiltLCAO* hamilt_ptr_ = nullptr; + const Parallel_Orbitals* pv_ = nullptr; + int nbasis_ = 0; + int nks_ = 0; + int nloc_ = 0; + int nrow_ = 0; + int ncol_ = 0; + + // For direct data access (compatibility mode) + std::vector hk_ptrs_; + std::vector sk_ptrs_; + std::vector> matrix_dims_; +}; + +/** + * @brief Accessor class for density matrix data + * + * Provides Python access to DM(k) and DM(R) + */ +template +class PyDensityMatrixAccessor +{ +public: + PyDensityMatrixAccessor() = default; + + /// Set from DensityMatrix object + void set_from_dm(elecstate::DensityMatrix* dm); + + /// Set dimensions directly (for compatibility) + void set_dimensions(int nks, int nrow, int ncol); + + /// Set DM(k) data for a specific k-point + void set_DMK_data(int ik, const TK* data); + + /// Get DM(k) for specific k-point + py::array_t get_DMK(int ik) const; + + /// Get all DM(k) matrices + std::vector> get_DMK_all() const; + + /// Get DM(R) in sparse format as dictionary + py::dict get_DMR() const; + + /// Get number of k-points + int get_nks() const { return nks_; } + + /// Get matrix row dimension + int get_nrow() const { return nrow_; } + + /// Get matrix column dimension + int get_ncol() const { return ncol_; } + + /// Check if data is valid + bool is_valid() const { return (dm_ptr_ != nullptr || nks_ > 0); } + +private: + elecstate::DensityMatrix* dm_ptr_ = nullptr; + int nks_ = 0; + int nrow_ = 0; + int ncol_ = 0; + + // For direct data access (compatibility mode) + std::vector dmk_ptrs_; +}; + +/** + * @brief Main wrapper class for ESolver_KS_LCAO + * + * Provides Python interface for LCAO calculations with breakpoint support. + * Now uses the component-based architecture with ISCFController. + * + * Template parameters: + * TK: Type for k-space quantities (double for gamma-only, complex for multi-k) + * TR: Type for real-space quantities (typically double) + */ +template +class PyESolverLCAO +{ +public: + PyESolverLCAO(); + ~PyESolverLCAO(); + + // ==================== Initialization ==================== + + /// Initialize from INPUT file directory + void initialize(const std::string& input_dir); + + /// Call before_all_runners + void before_all_runners(); + + // ==================== SCF Control ==================== + + /// Prepare for SCF calculation + void before_scf(int istep = 0); + + /// Run a single SCF iteration + void run_scf_iteration(int iter); + + /// Run complete SCF loop + void run_scf(int max_iter = 100); + + /// Finalize SCF calculation + void after_scf(int istep = 0); + + // ==================== Status Queries ==================== + + /// Check if SCF is converged + bool is_converged() const { return conv_esolver_; } + + /// Get current iteration number + int get_niter() const { return niter_; } + + /// Get charge density difference (drho) + double get_drho() const { return drho_; } + + /// Get current SCF step + int get_istep() const { return istep_; } + + // ==================== Data Accessors ==================== + + /// Get charge density accessor + PyChargeAccessor get_charge() const; + + /// Get energy accessor + PyEnergyAccessor get_energy() const; + + /// Get Hamiltonian accessor + PyHamiltonianAccessor get_hamiltonian() const; + + /// Get density matrix accessor + PyDensityMatrixAccessor get_density_matrix() const; + + // ==================== Wave Function Access ==================== + + /// Get wave function coefficients for k-point ik + py::array_t get_psi(int ik) const; + + /// Get eigenvalues for k-point ik + py::array_t get_eigenvalues(int ik) const; + + /// Get occupation numbers for k-point ik + py::array_t get_occupations(int ik) const; + + // ==================== K-point Information ==================== + + /// Get number of k-points + int get_nks() const; + + /// Get k-vector in direct coordinates for k-point ik + py::array_t get_kvec_d(int ik) const; + + /// Get k-point weights + py::array_t get_wk() const; + + // ==================== System Information ==================== + + /// Get number of basis functions + int get_nbasis() const; + + /// Get number of bands + int get_nbands() const; + + /// Get number of spin channels + int get_nspin() const; + + /// Get number of atoms + int get_nat() const; + + // ==================== Component Access (New API) ==================== + + /// Get SCF controller component + pyabacus::esolver::ISCFController* get_scf_controller() + { + return scf_controller_.get(); + } + + /// Get Hamiltonian builder component + pyabacus::esolver::IHamiltonianBuilder* get_hamiltonian_builder() + { + if (scf_controller_) + { + return static_cast*>( + scf_controller_->get_hamiltonian_builder()); + } + return nullptr; + } + + /// Get charge mixer component + pyabacus::esolver::IChargeMixer* get_charge_mixer() + { + if (scf_controller_) + { + return scf_controller_->get_charge_mixer(); + } + return nullptr; + } + + /// Get diagonalizer component + pyabacus::esolver::IDiagonalizer* get_diagonalizer() + { + if (scf_controller_) + { + return static_cast*>( + scf_controller_->get_diagonalizer()); + } + return nullptr; + } + + // ==================== Configuration (New API) ==================== + + /// Set SCF convergence criteria + void set_convergence_criteria(double drho_threshold, double energy_threshold, int max_iter) + { + pyabacus::esolver::SCFConvergenceCriteria criteria; + criteria.drho_threshold = drho_threshold; + criteria.energy_threshold = energy_threshold; + criteria.max_iterations = max_iter; + + if (auto* ctrl = dynamic_cast*>(scf_controller_.get())) + { + ctrl->set_convergence_criteria(criteria); + } + } + + /// Set mixing parameters + void set_mixing_beta(double beta) + { + if (auto* mixer = get_charge_mixer()) + { + mixer->set_mixing_beta(beta); + } + } + + /// Set mixing method + void set_mixing_method(const std::string& method) + { + if (auto* mixer = get_charge_mixer()) + { + mixer->set_mixing_method(pyabacus::esolver::string_to_mixing_method(method)); + } + } + +private: + // Internal state + bool initialized_ = false; + bool scf_started_ = false; + bool conv_esolver_ = false; + int istep_ = 0; + int niter_ = 0; + double drho_ = 0.0; + double diag_ethr_ = 1e-2; + + // ABACUS objects - will be properly initialized in Phase 3 + // For now, these are placeholders that will be connected to actual ABACUS instances + ModuleESolver::ESolver_KS_LCAO* esolver_ = nullptr; + UnitCell* ucell_ = nullptr; + + // Flag to indicate if we own the esolver (for cleanup) + bool owns_esolver_ = false; + + // Component-based SCF controller (new architecture) + std::unique_ptr> scf_controller_; +}; + +// Type aliases for common use cases +using PyESolverLCAO_Gamma = PyESolverLCAO; +using PyESolverLCAO_MultiK = PyESolverLCAO, double>; + +} // namespace py_esolver + +#endif // PY_ESOLVER_LCAO_HPP diff --git a/python/pyabacus/src/ModuleNAO/CMakeLists.txt b/python/pyabacus/src/ModuleNAO/CMakeLists.txt index 686695566a..2822ef9df6 100644 --- a/python/pyabacus/src/ModuleNAO/CMakeLists.txt +++ b/python/pyabacus/src/ModuleNAO/CMakeLists.txt @@ -1,4 +1,4 @@ -# add nao shared library +# add nao shared library list(APPEND _naos ${NAO_PATH}/atomic_radials.cpp ${NAO_PATH}/beta_radials.cpp @@ -19,6 +19,7 @@ list(APPEND _naos # ${ABACUS_SOURCE_DIR}/source_psi/kernels/psi_memory_op.cpp ${ABACUS_SOURCE_DIR}/source_base/module_device/memory_op.cpp ${ABACUS_SOURCE_DIR}/source_base/module_device/device.cpp + ${ABACUS_SOURCE_DIR}/source_base/module_device/device_helpers.cpp ) add_library(naopack SHARED ${_naos} diff --git a/python/pyabacus/src/ModuleNAO/py_m_nao.cpp b/python/pyabacus/src/ModuleNAO/py_m_nao.cpp index 45e6df2710..c6c21e5fdf 100644 --- a/python/pyabacus/src/ModuleNAO/py_m_nao.cpp +++ b/python/pyabacus/src/ModuleNAO/py_m_nao.cpp @@ -6,8 +6,12 @@ #include "source_basis/module_nao/radial_collection.h" #include "source_basis/module_nao/two_center_integrator.h" +#include "../utils/pybind_utils.h" + namespace py = pybind11; using namespace pybind11::literals; +using namespace pyabacus::utils; + template using overload_cast_ = pybind11::detail::overload_cast_impl; @@ -16,10 +20,10 @@ void bind_m_nao(py::module& m) // Bind the RadialCollection class py::class_(m, "RadialCollection") .def(py::init<>(), R"pbdoc( - A class that holds all numerical radial functions of the same kind. - - An instance of this class could be the collection of all radial functions - of numerical atomic orbitals, or all Kleinman-Bylander beta functions from + A class that holds all numerical radial functions of the same kind. + + An instance of this class could be the collection of all radial functions + of numerical atomic orbitals, or all Kleinman-Bylander beta functions from all elements involved in a calculation. )pbdoc") .def( @@ -57,12 +61,8 @@ void bind_m_nao(py::module& m) const int ngrid, py::array_t grid, const char mode = 'i') { - py::buffer_info grid_info = grid.request(); - if (grid_info.size != ngrid) - { - throw std::runtime_error("grid array must be of size ngrid"); - } - self.set_grid(for_r_space, ngrid, static_cast(grid_info.ptr), mode); + check_array_size(grid, static_cast(ngrid), "grid"); + self.set_grid(for_r_space, ngrid, get_array_ptr(grid), mode); }, "Sets a common grid for all RadialSet objects.", "for_r_space"_a, @@ -82,9 +82,9 @@ void bind_m_nao(py::module& m) .def("symbol", &RadialCollection::symbol, "itype"_a) .def_property_readonly("ntype", &RadialCollection::ntype) .def("lmax", overload_cast_()(&RadialCollection::lmax, py::const_), "itype"_a) - .def_property_readonly("lmax", overload_cast_<>()(&RadialCollection::lmax, py::const_)) + .def("lmax", overload_cast_<>()(&RadialCollection::lmax, py::const_)) .def("rcut_max", overload_cast_()(&RadialCollection::rcut_max, py::const_), "itype"_a) - .def_property_readonly("rcut_max", overload_cast_<>()(&RadialCollection::rcut_max, py::const_)) + .def("rcut_max", overload_cast_<>()(&RadialCollection::rcut_max, py::const_)) .def("nzeta", &RadialCollection::nzeta, "itype"_a, "l"_a) .def("nzeta_max", overload_cast_()(&RadialCollection::nzeta_max, py::const_), "itype"_a) .def("nzeta_max", overload_cast_<>()(&RadialCollection::nzeta_max, py::const_)) @@ -97,11 +97,11 @@ void bind_m_nao(py::module& m) This class computes two-center integrals of the form: - / + / I(R) = | dr phi1(r) (op) phi2(r - R) - / + / - as well as their gradients, where op is 1 (overlap) or minus Laplacian (kinetic), and phi1, + as well as their gradients, where op is 1 (overlap) or minus Laplacian (kinetic), and phi1, phi2 are "atomic-orbital-like" functions of the form: phi(r) = chi(|r|) * Ylm(r/|r|) @@ -144,12 +144,8 @@ void bind_m_nao(py::module& m) const int m2, py::array_t pvR, bool cal_grad = false) { - py::buffer_info pvR_info = pvR.request(); - if (pvR_info.size != 3) - { - throw std::runtime_error("Radial part must have 3 elements"); - } - double* cvR = static_cast(pvR_info.ptr); + check_array_size(pvR, 3, "pvR"); + double* cvR = get_array_ptr(pvR); ModuleBase::Vector3 vR(cvR[0], cvR[1], cvR[2]); double out[1] = {0.0}; double grad_out[3] = {0.0, 0.0, 0.0}; @@ -172,9 +168,9 @@ void bind_m_nao(py::module& m) This function calculates the two-center integral - / + / I(R) = | dr phi1(r) (op_) phi2(r - R) - / + / or its gradient by using the tabulated radial part and real Gaunt coefficients. @@ -200,7 +196,7 @@ void bind_m_nao(py::module& m) R2 - R1, the displacement vector between the two centers. cal_grad : bool, optional The gradient will not be computed if cal_grad is false. - + Returns ------- out_array : array_like @@ -228,12 +224,8 @@ void bind_m_nao(py::module& m) const int itype2, py::array_t pvR, const bool deriv) { - py::buffer_info pvR_info = pvR.request(); - if (pvR_info.size != 3) - { - throw std::runtime_error("Radial part must have 3 elements"); - } - double* cvR = static_cast(pvR_info.ptr); + check_array_size(pvR, 3, "pvR"); + double* cvR = get_array_ptr(pvR); ModuleBase::Vector3 vR(cvR[0], cvR[1], cvR[2]); // TODO: check deriv & out memory allocation std::vector> out; @@ -276,17 +268,12 @@ void bind_m_nao(py::module& m) const std::string symbol = "", const int itype = 0, const bool init_sbt = true) { - py::buffer_info grid_info = grid.request(); - py::buffer_info value_info = value.request(); - if (grid_info.size != ngrid) - { - throw std::runtime_error("grid array must be of size ngrid"); - } + check_array_size(grid, static_cast(ngrid), "grid"); self.build(l, for_r_space, ngrid, - static_cast(grid_info.ptr), - static_cast(value_info.ptr), + get_array_ptr(grid), + get_array_ptr(value), p, izeta, symbol, @@ -360,12 +347,8 @@ void bind_m_nao(py::module& m) const int ngrid, py::array_t grid, const char mode = 'i') { - py::buffer_info grid_info = grid.request(); - if (grid_info.size != ngrid) - { - throw std::runtime_error("grid array must be of size ngrid"); - } - self.set_grid(for_r_space, ngrid, static_cast(grid_info.ptr), mode); + check_array_size(grid, static_cast(ngrid), "grid"); + self.set_grid(for_r_space, ngrid, get_array_ptr(grid), mode); }, R"pbdoc( Sets up a grid. @@ -423,8 +406,7 @@ void bind_m_nao(py::module& m) .def( "set_value", [](NumericalRadial& self, const bool for_r_space, py::array_t value, const int p) { - py::buffer_info value_info = value.request(); - self.set_value(for_r_space, static_cast(value_info.ptr), p); + self.set_value(for_r_space, get_array_ptr(value), p); }, R"pbdoc( Updates values on an existing grid. @@ -467,23 +449,19 @@ void bind_m_nao(py::module& m) .def_property_readonly("sbt", &NumericalRadial::sbt) .def_property_readonly("rgrid", [](NumericalRadial& self) { - const double* rgrid = self.rgrid(); - return py::array_t(self.nr(), rgrid); + return numpy_from_ptr_copy(self.rgrid(), static_cast(self.nr())); }) .def_property_readonly("kgrid", [](NumericalRadial& self) { - const double* kgrid = self.kgrid(); - return py::array_t(self.nk(), kgrid); + return numpy_from_ptr_copy(self.kgrid(), static_cast(self.nk())); }) .def_property_readonly("rvalue", [](NumericalRadial& self) { - const double* rvalue = self.rvalue(); - return py::array_t(self.nr(), rvalue); + return numpy_from_ptr_copy(self.rvalue(), static_cast(self.nr())); }) .def_property_readonly("kvalue", [](NumericalRadial& self) { - const double* kvalue = self.kvalue(); - return py::array_t(self.nk(), kvalue); + return numpy_from_ptr_copy(self.kvalue(), static_cast(self.nk())); }) .def_property_readonly("is_fft_compliant", overload_cast_<>()(&NumericalRadial::is_fft_compliant, py::const_)); } @@ -493,4 +471,4 @@ PYBIND11_MODULE(_nao_pack, m) m.doc() = "Module for Numerical Atomic Orbitals (NAO) in ABACUS"; bind_m_nao(m); -} \ No newline at end of file +} diff --git a/python/pyabacus/src/hsolver/CMakeLists.txt b/python/pyabacus/src/hsolver/CMakeLists.txt index 7c9f216870..764305098b 100644 --- a/python/pyabacus/src/hsolver/CMakeLists.txt +++ b/python/pyabacus/src/hsolver/CMakeLists.txt @@ -9,15 +9,16 @@ list(APPEND _diago ${HSOLVER_PATH}/diago_pxxxgvx.cpp - ${HSOLVER_PATH}/kernels/dngvd_op.cpp + ${HSOLVER_PATH}/kernels/hegvd_op.cpp ${HSOLVER_PATH}/kernels/bpcg_kernel_op.cpp # dependency ${BASE_PATH}/kernels/math_kernel_op.cpp ${BASE_PATH}/kernels/math_kernel_op_vec.cpp ${BASE_PATH}/kernels/math_ylm_op.cpp ${BASE_PATH}/module_device/device.cpp + ${BASE_PATH}/module_device/device_helpers.cpp ${BASE_PATH}/module_device/memory_op.cpp - + ${PSI_PATH}/psi.cpp ) add_library(diagopack SHARED diff --git a/python/pyabacus/src/hsolver/diago_adapter.hpp b/python/pyabacus/src/hsolver/diago_adapter.hpp new file mode 100644 index 0000000000..2a019d0143 --- /dev/null +++ b/python/pyabacus/src/hsolver/diago_adapter.hpp @@ -0,0 +1,336 @@ +/** + * @file diago_adapter.hpp + * @brief Template adapter for diagonalizer wrappers + * + * This header provides a unified template adapter that wraps different + * diagonalization solvers (David, DavSubspace, CG) with a common interface. + */ + +#ifndef PYABACUS_HSOLVER_DIAGO_ADAPTER_HPP +#define PYABACUS_HSOLVER_DIAGO_ADAPTER_HPP + +#include +#include +#include + +#include +#include +#include +#include +#include + +#include "diago_traits.hpp" +#include "../utils/pybind_utils.h" + +namespace py = pybind11; + +namespace pyabacus { +namespace hsolver { + +// ============================================================================ +// PyDiagoDavid Adapter +// ============================================================================ + +/** + * @brief Adapter for DiagoDavid solver + */ +class PyDiagoDavidAdapter +{ +public: + using Traits = DiagoDavidTraits; + using T = typename Traits::T; + using SolverType = typename Traits::SolverType; + + PyDiagoDavidAdapter(int nbasis, int nband) + : nbasis_(nbasis), nband_(nband) + { + storage_.allocate(nbasis, nband); + } + + PyDiagoDavidAdapter(const PyDiagoDavidAdapter&) = delete; + PyDiagoDavidAdapter& operator=(const PyDiagoDavidAdapter&) = delete; + + PyDiagoDavidAdapter(PyDiagoDavidAdapter&& other) noexcept + : storage_(std::move(other.storage_)) + , nbasis_(other.nbasis_) + , nband_(other.nband_) + { + } + + void set_psi(py::array_t psi_in) + { + storage_.set_psi(psi_in); + } + + py::array_t get_psi() const + { + return storage_.get_psi(); + } + + void init_eigenvalue() + { + storage_.init_eigenvalue(); + } + + py::array_t get_eigenvalue() const + { + return storage_.get_eigenvalue(); + } + + int diag( + std::function(py::array_t)> mm_op, + std::vector& precond_vec, + int dav_ndim, + double tol, + std::vector& diag_ethr, + int max_iter, + bool use_paw, + ::hsolver::diag_comm_info comm_info) + { + auto hpsi_func = make_hpsi_func_fstyle(mm_op); + auto spsi_func = make_spsi_func_identity(); + + solver_ = std::make_unique( + precond_vec.data(), + nband_, + nbasis_, + dav_ndim, + use_paw, + comm_info + ); + + return solver_->diag( + hpsi_func, + spsi_func, + nbasis_, + storage_.psi_ptr(), + storage_.eigenvalue_ptr(), + diag_ethr, + max_iter + ); + } + +private: + RawPointerStorage storage_; + std::unique_ptr solver_; + int nbasis_; + int nband_; +}; + +// ============================================================================ +// PyDiagoDavSubspace Adapter +// ============================================================================ + +/** + * @brief Adapter for DiagoDavSubspace solver + */ +class PyDiagoDavSubspaceAdapter +{ +public: + using Traits = DiagoDavSubspaceTraits; + using T = typename Traits::T; + using SolverType = typename Traits::SolverType; + + PyDiagoDavSubspaceAdapter(int nbasis, int nband) + : nbasis_(nbasis), nband_(nband) + { + storage_.allocate(nbasis, nband); + } + + PyDiagoDavSubspaceAdapter(const PyDiagoDavSubspaceAdapter&) = delete; + PyDiagoDavSubspaceAdapter& operator=(const PyDiagoDavSubspaceAdapter&) = delete; + + PyDiagoDavSubspaceAdapter(PyDiagoDavSubspaceAdapter&& other) noexcept + : storage_(std::move(other.storage_)) + , nbasis_(other.nbasis_) + , nband_(other.nband_) + { + } + + void set_psi(py::array_t psi_in) + { + storage_.set_psi(psi_in); + } + + py::array_t get_psi() const + { + return storage_.get_psi(); + } + + void init_eigenvalue() + { + storage_.init_eigenvalue(); + } + + py::array_t get_eigenvalue() const + { + return storage_.get_eigenvalue(); + } + + int diag( + std::function(py::array_t)> mm_op, + std::vector& precond_vec, + int dav_ndim, + double tol, + int max_iter, + bool need_subspace, + std::vector& diag_ethr, + bool scf_type, + ::hsolver::diag_comm_info comm_info, + int diag_subspace, + int nb2d) + { + auto hpsi_func = make_hpsi_func_fstyle(mm_op); + auto spsi_func = make_spsi_func_identity(); + + solver_ = std::make_unique( + precond_vec, + nband_, + nbasis_, + dav_ndim, + tol, + max_iter, + comm_info, + diag_subspace, + nb2d + ); + + return solver_->diag( + hpsi_func, + spsi_func, + storage_.psi_ptr(), + nbasis_, + storage_.eigenvalue_ptr(), + diag_ethr, + scf_type + ); + } + +private: + RawPointerStorage storage_; + std::unique_ptr solver_; + int nbasis_; + int nband_; +}; + +#ifdef __ENABLE_ATEN +// ============================================================================ +// PyDiagoCG Adapter +// ============================================================================ + +/** + * @brief Adapter for DiagoCG solver + */ +class PyDiagoCGAdapter +{ +public: + using Traits = DiagoCGTraits; + using T = typename Traits::T; + using SolverType = typename Traits::SolverType; + + PyDiagoCGAdapter(int dim, int num_eigs) + : dim_(dim), num_eigs_(num_eigs) + { + storage_.allocate(dim, num_eigs); + } + + PyDiagoCGAdapter(const PyDiagoCGAdapter&) = delete; + PyDiagoCGAdapter& operator=(const PyDiagoCGAdapter&) = delete; + + PyDiagoCGAdapter(PyDiagoCGAdapter&& other) noexcept + : storage_(std::move(other.storage_)) + , dim_(other.dim_) + , num_eigs_(other.num_eigs_) + { + } + + void set_psi(py::array_t psi_in) + { + storage_.set_psi(psi_in); + } + + py::array_t get_psi() const + { + return storage_.get_psi(); + } + + void init_eig() + { + storage_.init_eigenvalue(); + } + + py::array_t get_eig() const + { + return storage_.get_eigenvalue(); + } + + void set_prec(py::array_t prec_in) + { + storage_.set_preconditioner(prec_in); + } + + void diag( + std::function(py::array_t)> mm_op, + int diag_ndim, + double tol, + const std::vector& diag_ethr, + bool need_subspace, + bool scf_type, + int nproc_in_pool = 1) + { + const std::string basis_type = "pw"; + const std::string calculation = scf_type ? "scf" : "nscf"; + + auto hpsi_func = make_hpsi_func_tensor(mm_op); + auto spsi_func = make_spsi_func_tensor_identity(); + auto subspace_func = [](const ct::Tensor& psi_in, ct::Tensor& psi_out, const bool S_orth) { + // Do nothing - placeholder + }; + + solver_ = std::make_unique( + basis_type, + calculation, + need_subspace, + subspace_func, + tol, + diag_ndim, + nproc_in_pool + ); + + solver_->diag( + hpsi_func, + spsi_func, + *storage_.psi_tensor(), + *storage_.eig_tensor(), + diag_ethr, + *storage_.prec_tensor() + ); + } + +private: + TensorStorage storage_; + std::unique_ptr solver_; + int dim_; + int num_eigs_; +}; +#endif // __ENABLE_ATEN + +// ============================================================================ +// Backward Compatibility Aliases +// ============================================================================ + +namespace py_hsolver_compat { + +using PyDiagoDavid = PyDiagoDavidAdapter; +using PyDiagoDavSubspace = PyDiagoDavSubspaceAdapter; + +#ifdef __ENABLE_ATEN +using PyDiagoCG = PyDiagoCGAdapter; +#endif + +} // namespace py_hsolver_compat + +} // namespace hsolver +} // namespace pyabacus + +#endif // PYABACUS_HSOLVER_DIAGO_ADAPTER_HPP diff --git a/python/pyabacus/src/hsolver/diago_traits.hpp b/python/pyabacus/src/hsolver/diago_traits.hpp new file mode 100644 index 0000000000..c23d9f3a9f --- /dev/null +++ b/python/pyabacus/src/hsolver/diago_traits.hpp @@ -0,0 +1,490 @@ +/** + * @file diago_traits.hpp + * @brief Type traits and storage policies for diagonalizer adapters + * + * This header defines: + * - Storage policies for different memory management strategies + * - Solver traits for different diagonalization algorithms + */ + +#ifndef PYABACUS_HSOLVER_DIAGO_TRAITS_HPP +#define PYABACUS_HSOLVER_DIAGO_TRAITS_HPP + +#include +#include +#include +#include + +#include +#include +#include +#include +#include + +#include "source_hsolver/diago_david.h" +#include "source_hsolver/diago_dav_subspace.h" +#include "source_hsolver/diago_cg.h" +#include "source_base/module_device/memory_op.h" + +#ifdef __ENABLE_ATEN +#include +#include +#include +#endif + +namespace py = pybind11; + +namespace pyabacus { +namespace hsolver { + +// ============================================================================ +// Storage Policies +// ============================================================================ + +/** + * @brief Storage policy using raw pointers + * + * Used by DiagoDavid and DiagoDavSubspace which work with raw arrays. + */ +template +class RawPointerStorage +{ +public: + using value_type = T; + + RawPointerStorage() = default; + + void allocate(int nbasis, int nband) + { + nbasis_ = nbasis; + nband_ = nband; + psi_ = new T[nbasis * nband]; + eigenvalue_ = new double[nband]; + } + + ~RawPointerStorage() + { + cleanup(); + } + + // Move semantics + RawPointerStorage(RawPointerStorage&& other) noexcept + : psi_(other.psi_) + , eigenvalue_(other.eigenvalue_) + , nbasis_(other.nbasis_) + , nband_(other.nband_) + { + other.psi_ = nullptr; + other.eigenvalue_ = nullptr; + } + + RawPointerStorage& operator=(RawPointerStorage&& other) noexcept + { + if (this != &other) + { + cleanup(); + psi_ = other.psi_; + eigenvalue_ = other.eigenvalue_; + nbasis_ = other.nbasis_; + nband_ = other.nband_; + other.psi_ = nullptr; + other.eigenvalue_ = nullptr; + } + return *this; + } + + // Disable copy + RawPointerStorage(const RawPointerStorage&) = delete; + RawPointerStorage& operator=(const RawPointerStorage&) = delete; + + void set_psi(py::array_t psi_in) + { + if (static_cast(psi_in.size()) != static_cast(nbasis_ * nband_)) + { + throw std::runtime_error("psi_in size mismatch"); + } + for (size_t i = 0; i < static_cast(nbasis_ * nband_); ++i) + { + psi_[i] = psi_in.at(i); + } + } + + py::array_t get_psi() const + { + py::array_t psi_out(nband_ * nbasis_); + py::buffer_info buf = psi_out.request(); + T* ptr = static_cast(buf.ptr); + for (size_t i = 0; i < static_cast(nband_ * nbasis_); ++i) + { + ptr[i] = psi_[i]; + } + return psi_out; + } + + void init_eigenvalue() + { + for (int i = 0; i < nband_; ++i) + { + eigenvalue_[i] = 0.0; + } + } + + py::array_t get_eigenvalue() const + { + py::array_t eig_out(nband_); + py::buffer_info buf = eig_out.request(); + double* ptr = static_cast(buf.ptr); + for (int i = 0; i < nband_; ++i) + { + ptr[i] = eigenvalue_[i]; + } + return eig_out; + } + + // Accessors for solver + T* psi_ptr() { return psi_; } + double* eigenvalue_ptr() { return eigenvalue_; } + int nbasis() const { return nbasis_; } + int nband() const { return nband_; } + +private: + void cleanup() + { + if (psi_ != nullptr) + { + delete[] psi_; + psi_ = nullptr; + } + if (eigenvalue_ != nullptr) + { + delete[] eigenvalue_; + eigenvalue_ = nullptr; + } + } + + T* psi_ = nullptr; + double* eigenvalue_ = nullptr; + int nbasis_ = 0; + int nband_ = 0; +}; + +#ifdef __ENABLE_ATEN +/** + * @brief Storage policy using ATen tensors + * + * Used by DiagoCG which works with ATen tensor interface. + */ +template +class TensorStorage +{ +public: + using value_type = T; + + TensorStorage() = default; + + void allocate(int dim, int num_eigs) + { + dim_ = dim; + num_eigs_ = num_eigs; + // Tensors are allocated lazily + } + + ~TensorStorage() + { + cleanup(); + } + + // Move semantics + TensorStorage(TensorStorage&& other) noexcept + : psi_(other.psi_) + , eig_(other.eig_) + , prec_(other.prec_) + , dim_(other.dim_) + , num_eigs_(other.num_eigs_) + { + other.psi_ = nullptr; + other.eig_ = nullptr; + other.prec_ = nullptr; + } + + TensorStorage& operator=(TensorStorage&& other) noexcept + { + if (this != &other) + { + cleanup(); + psi_ = other.psi_; + eig_ = other.eig_; + prec_ = other.prec_; + dim_ = other.dim_; + num_eigs_ = other.num_eigs_; + other.psi_ = nullptr; + other.eig_ = nullptr; + other.prec_ = nullptr; + } + return *this; + } + + // Disable copy + TensorStorage(const TensorStorage&) = delete; + TensorStorage& operator=(const TensorStorage&) = delete; + + void set_psi(py::array_t psi_in) + { + py::buffer_info buf = psi_in.request(); + T* ptr = static_cast(buf.ptr); + + psi_ = new ct::TensorMap( + ptr, + ct::DataType::DT_COMPLEX_DOUBLE, + ct::DeviceType::CpuDevice, + ct::TensorShape({num_eigs_, dim_}) + ); + } + + py::array_t get_psi() const + { + if (psi_ == nullptr) + { + throw std::runtime_error("psi is not initialized"); + } + py::array_t psi_out({num_eigs_, dim_}); + py::buffer_info buf = psi_out.request(); + T* ptr = static_cast(buf.ptr); + T* psi_ptr = psi_->data(); + std::copy(psi_ptr, psi_ptr + psi_->NumElements(), ptr); + return psi_out; + } + + void init_eigenvalue() + { + eig_ = new ct::Tensor(ct::DataType::DT_DOUBLE, {num_eigs_}); + eig_->zero(); + } + + py::array_t get_eigenvalue() const + { + if (eig_ == nullptr) + { + throw std::runtime_error("eigenvalue is not initialized"); + } + py::array_t eig_out(eig_->NumElements()); + py::buffer_info buf = eig_out.request(); + double* ptr = static_cast(buf.ptr); + double* eig_ptr = eig_->data(); + std::copy(eig_ptr, eig_ptr + eig_->NumElements(), ptr); + return eig_out; + } + + void set_preconditioner(py::array_t prec_in) + { + py::buffer_info buf = prec_in.request(); + double* ptr = static_cast(buf.ptr); + + prec_ = new ct::TensorMap( + ptr, + ct::DataType::DT_DOUBLE, + ct::DeviceType::CpuDevice, + ct::TensorShape({dim_}) + ); + } + + // Accessors for solver + ct::Tensor* psi_tensor() { return psi_; } + ct::Tensor* eig_tensor() { return eig_; } + ct::Tensor* prec_tensor() { return prec_; } + int dim() const { return dim_; } + int num_eigs() const { return num_eigs_; } + +private: + void cleanup() + { + if (psi_ != nullptr) + { + delete psi_; + psi_ = nullptr; + } + if (eig_ != nullptr) + { + delete eig_; + eig_ = nullptr; + } + if (prec_ != nullptr) + { + delete prec_; + prec_ = nullptr; + } + } + + ct::Tensor* psi_ = nullptr; + ct::Tensor* eig_ = nullptr; + ct::Tensor* prec_ = nullptr; + int dim_ = 0; + int num_eigs_ = 0; +}; +#endif // __ENABLE_ATEN + +// ============================================================================ +// Solver Traits +// ============================================================================ + +/** + * @brief Traits for DiagoDavid solver + */ +struct DiagoDavidTraits +{ + using T = std::complex; + using SolverType = ::hsolver::DiagoDavid; + using StoragePolicy = RawPointerStorage; + + static constexpr const char* name = "diago_david"; + static constexpr bool uses_f_style = true; // Column-major arrays + static constexpr bool has_preconditioner = true; + + // Memory synchronization operation + using syncmem_op = base_device::memory::synchronize_memory_op< + T, base_device::DEVICE_CPU, base_device::DEVICE_CPU>; +}; + +/** + * @brief Traits for DiagoDavSubspace solver + */ +struct DiagoDavSubspaceTraits +{ + using T = std::complex; + using SolverType = ::hsolver::Diago_DavSubspace; + using StoragePolicy = RawPointerStorage; + + static constexpr const char* name = "diago_dav_subspace"; + static constexpr bool uses_f_style = true; // Column-major arrays + static constexpr bool has_preconditioner = true; + + // Memory synchronization operation + using syncmem_op = base_device::memory::synchronize_memory_op< + T, base_device::DEVICE_CPU, base_device::DEVICE_CPU>; +}; + +#ifdef __ENABLE_ATEN +/** + * @brief Traits for DiagoCG solver + */ +struct DiagoCGTraits +{ + using T = std::complex; + using SolverType = ::hsolver::DiagoCG; + using StoragePolicy = TensorStorage; + + static constexpr const char* name = "diago_cg"; + static constexpr bool uses_f_style = false; // Row-major arrays + static constexpr bool has_preconditioner = true; + + // Memory synchronization operation for tensor interface + using syncmem_op = base_device::memory::synchronize_memory_op< + T, base_device::DEVICE_CPU, base_device::DEVICE_CPU>; +}; +#endif // __ENABLE_ATEN + +// ============================================================================ +// Helper Functions for Creating HPsi/SPsi Lambdas +// ============================================================================ + +/** + * @brief Create hpsi_func lambda for raw pointer interface (F-style) + * + * Wraps a Python callable to work with ABACUS raw pointer interface. + * Handles array layout conversion between Python (row-major) and + * ABACUS (column-major for Davidson methods). + */ +template +auto make_hpsi_func_fstyle( + std::function(py::array_t)> mm_op) +{ + return [mm_op](T* psi_in, T* hpsi_out, const int ld_psi, const int nvec) { + // Create F-style numpy array (column-major) + py::array_t psi({ld_psi, nvec}); + py::buffer_info buf = psi.request(); + T* ptr = static_cast(buf.ptr); + std::copy(psi_in, psi_in + nvec * ld_psi, ptr); + + // Call Python function + py::array_t hpsi = mm_op(psi); + + // Copy result back + py::buffer_info hpsi_buf = hpsi.request(); + T* hpsi_ptr = static_cast(hpsi_buf.ptr); + std::copy(hpsi_ptr, hpsi_ptr + nvec * ld_psi, hpsi_out); + }; +} + +/** + * @brief Create spsi_func lambda for raw pointer interface (identity) + * + * For non-orthogonal basis, S*psi = psi (identity operation). + */ +template +auto make_spsi_func_identity() +{ + using T = typename Traits::T; + using syncmem_op = typename Traits::syncmem_op; + + return [](const T* psi_in, T* spsi_out, const int nrow, const int nbands) { + syncmem_op()(spsi_out, psi_in, static_cast(nbands * nrow)); + }; +} + +#ifdef __ENABLE_ATEN +/** + * @brief Create hpsi_func lambda for tensor interface + */ +template +auto make_hpsi_func_tensor( + std::function(py::array_t)> mm_op) +{ + return [mm_op](const ct::Tensor& psi_in, ct::Tensor& hpsi_out) { + const auto ndim = psi_in.shape().ndim(); + REQUIRES_OK(ndim <= 2, "dims of psi_in should be less than or equal to 2"); + const int nvec = ndim == 1 ? 1 : psi_in.shape().dim_size(0); + const int ld_psi = ndim == 1 ? psi_in.NumElements() : psi_in.shape().dim_size(1); + + // Create numpy array (row-major for CG) + py::array_t psi({ld_psi, nvec}); + py::buffer_info buf = psi.request(); + T* ptr = static_cast(buf.ptr); + std::copy(psi_in.data(), psi_in.data() + nvec * ld_psi, ptr); + + // Call Python function + py::array_t hpsi = mm_op(psi); + + // Copy result back + py::buffer_info hpsi_buf = hpsi.request(); + T* hpsi_ptr = static_cast(hpsi_buf.ptr); + std::copy(hpsi_ptr, hpsi_ptr + nvec * ld_psi, hpsi_out.data()); + }; +} + +/** + * @brief Create spsi_func lambda for tensor interface (identity) + */ +template +auto make_spsi_func_tensor_identity() +{ + using T = typename Traits::T; + using syncmem_op = typename Traits::syncmem_op; + + return [](const ct::Tensor& psi_in, ct::Tensor& spsi_out) { + const auto ndim = psi_in.shape().ndim(); + REQUIRES_OK(ndim <= 2, "dims of psi_in should be less than or equal to 2"); + const int nrow = ndim == 1 ? psi_in.NumElements() : psi_in.shape().dim_size(1); + const int nbands = ndim == 1 ? 1 : psi_in.shape().dim_size(0); + syncmem_op()( + spsi_out.data(), + psi_in.data(), + static_cast(nrow * nbands) + ); + }; +} +#endif // __ENABLE_ATEN + +} // namespace hsolver +} // namespace pyabacus + +#endif // PYABACUS_HSOLVER_DIAGO_TRAITS_HPP diff --git a/python/pyabacus/src/hsolver/py_diago_cg.hpp b/python/pyabacus/src/hsolver/py_diago_cg.hpp index 63a6cccc82..0ab2cb25da 100644 --- a/python/pyabacus/src/hsolver/py_diago_cg.hpp +++ b/python/pyabacus/src/hsolver/py_diago_cg.hpp @@ -145,7 +145,7 @@ class PyDiagoCG std::copy(hpsi_ptr, hpsi_ptr + nvec * ld_psi, hpsi_out.data>()); }; - auto subspace_func = [] (const ct::Tensor& psi_in, ct::Tensor& psi_out) { /*do nothing*/ }; + auto subspace_func = [](const ct::Tensor& psi_in, ct::Tensor& psi_out, const bool S_orth) { /*do nothing*/ }; auto spsi_func = [this] (const ct::Tensor& psi_in, ct::Tensor& spsi_out) { const auto ndim = psi_in.shape().ndim(); diff --git a/python/pyabacus/src/hsolver/py_diago_dav_subspace.hpp b/python/pyabacus/src/hsolver/py_diago_dav_subspace.hpp index e2314b961c..c258de4406 100644 --- a/python/pyabacus/src/hsolver/py_diago_dav_subspace.hpp +++ b/python/pyabacus/src/hsolver/py_diago_dav_subspace.hpp @@ -144,7 +144,6 @@ class PyDiagoDavSubspace dav_ndim, tol, max_iter, - need_subspace, comm_info, diag_subspace, nb2d diff --git a/python/pyabacus/src/hsolver/py_hsolver.cpp b/python/pyabacus/src/hsolver/py_hsolver.cpp index c37ea43b4b..fa7a22d9bc 100644 --- a/python/pyabacus/src/hsolver/py_hsolver.cpp +++ b/python/pyabacus/src/hsolver/py_hsolver.cpp @@ -1,3 +1,11 @@ +/** + * @file py_hsolver.cpp + * @brief Python bindings for HSolver diagonalization methods + * + * This file provides pybind11 bindings for the diagonalization solvers + * using the unified adapter template approach. + */ + #include #include #include @@ -9,37 +17,39 @@ #include "source_base/kernels/math_kernel_op.h" #include "source_base/module_device/types.h" -#include "./py_diago_dav_subspace.hpp" -#include "./py_diago_david.hpp" -#include "./py_diago_cg.hpp" +#include "diago_adapter.hpp" namespace py = pybind11; using namespace pybind11::literals; +using namespace pyabacus::hsolver; + void bind_hsolver(py::module& m) { + // Bind diag_comm_info struct py::class_(m, "diag_comm_info") .def(py::init(), "rank"_a, "nproc"_a) .def_readonly("rank", &hsolver::diag_comm_info::rank) .def_readonly("nproc", &hsolver::diag_comm_info::nproc); - py::class_(m, "diago_dav_subspace") + // Bind PyDiagoDavSubspace using adapter + py::class_(m, "diago_dav_subspace") .def(py::init(), R"pbdoc( - Constructor of diago_dav_subspace, a class for diagonalizing + Constructor of diago_dav_subspace, a class for diagonalizing a linear operator using the Davidson-Subspace Method. - This class serves as a backend computation class. The interface - for invoking this class is a function defined in _hsolver.py, + This class serves as a backend computation class. The interface + for invoking this class is a function defined in _hsolver.py, which uses this class to perform the calculations. Parameters ---------- - nbasis : int + nbasis : int The number of basis functions. - nband : int + nband : int The number of bands to be calculated. )pbdoc", "nbasis"_a, "nband"_a) - .def("diag", &py_hsolver::PyDiagoDavSubspace::diag, R"pbdoc( + .def("diag", &PyDiagoDavSubspaceAdapter::diag, R"pbdoc( Diagonalize the linear operator using the Davidson-Subspace Method. Parameters @@ -50,7 +60,7 @@ void bind_hsolver(py::module& m) precond_vec : np.ndarray The preconditioner vector. dav_ndim : int - The number of vectors, which is a multiple of the number of + The number of vectors, which is a multiple of the number of eigenvectors to be calculated. tol : double The tolerance for the convergence. @@ -74,48 +84,49 @@ void bind_hsolver(py::module& m) 0: LAPACK, 1: Gen-ELPA, 2: ScaLAPACK nb2d : int The block size in 2d block cyclic distribution if use elpa or scalapack. - )pbdoc", - "mm_op"_a, - "precond_vec"_a, - "dav_ndim"_a, - "tol"_a, - "max_iter"_a, - "need_subspace"_a, - "diag_ethr"_a, - "scf_type"_a, + )pbdoc", + "mm_op"_a, + "precond_vec"_a, + "dav_ndim"_a, + "tol"_a, + "max_iter"_a, + "need_subspace"_a, + "diag_ethr"_a, + "scf_type"_a, "comm_info"_a, "diago_subspace"_a, "nb2d"_a) - .def("set_psi", &py_hsolver::PyDiagoDavSubspace::set_psi, R"pbdoc( + .def("set_psi", &PyDiagoDavSubspaceAdapter::set_psi, R"pbdoc( Set the initial guess of the eigenvectors, i.e. the wave functions. )pbdoc", "psi_in"_a) - .def("get_psi", &py_hsolver::PyDiagoDavSubspace::get_psi, R"pbdoc( + .def("get_psi", &PyDiagoDavSubspaceAdapter::get_psi, R"pbdoc( Get the eigenvectors. )pbdoc") - .def("init_eigenvalue", &py_hsolver::PyDiagoDavSubspace::init_eigenvalue, R"pbdoc( + .def("init_eigenvalue", &PyDiagoDavSubspaceAdapter::init_eigenvalue, R"pbdoc( Initialize the eigenvalues as zero. )pbdoc") - .def("get_eigenvalue", &py_hsolver::PyDiagoDavSubspace::get_eigenvalue, R"pbdoc( - Get the eigenvalues. + .def("get_eigenvalue", &PyDiagoDavSubspaceAdapter::get_eigenvalue, R"pbdoc( + Get the eigenvalues. )pbdoc"); - py::class_(m, "diago_david") + // Bind PyDiagoDavid using adapter + py::class_(m, "diago_david") .def(py::init(), R"pbdoc( - Constructor of diago_david, a class for diagonalizing + Constructor of diago_david, a class for diagonalizing a linear operator using the Davidson Method. - This class serves as a backend computation class. The interface - for invoking this class is a function defined in _hsolver.py, + This class serves as a backend computation class. The interface + for invoking this class is a function defined in _hsolver.py, which uses this class to perform the calculations. Parameters ---------- - nbasis : int + nbasis : int The number of basis functions. - nband : int + nband : int The number of bands to be calculated. )pbdoc", "nbasis"_a, "nband"_a) - .def("diag", &py_hsolver::PyDiagoDavid::diag, R"pbdoc( + .def("diag", &PyDiagoDavidAdapter::diag, R"pbdoc( Diagonalize the linear operator using the Davidson Method. Parameters @@ -126,7 +137,7 @@ void bind_hsolver(py::module& m) precond_vec : np.ndarray The preconditioner vector. dav_ndim : int - The number of vectors, which is a multiple of the number of + The number of vectors, which is a multiple of the number of eigenvectors to be calculated. tol : double The tolerance for the convergence. @@ -136,39 +147,41 @@ void bind_hsolver(py::module& m) The maximum number of iterations. use_paw : bool Whether to use the projector augmented wave method. - )pbdoc", - "mm_op"_a, - "precond_vec"_a, - "dav_ndim"_a, - "tol"_a, + )pbdoc", + "mm_op"_a, + "precond_vec"_a, + "dav_ndim"_a, + "tol"_a, "diag_ethr"_a, - "max_iter"_a, - "use_paw"_a, + "max_iter"_a, + "use_paw"_a, "comm_info"_a) - .def("set_psi", &py_hsolver::PyDiagoDavid::set_psi, R"pbdoc( + .def("set_psi", &PyDiagoDavidAdapter::set_psi, R"pbdoc( Set the initial guess of the eigenvectors, i.e. the wave functions. )pbdoc", "psi_in"_a) - .def("get_psi", &py_hsolver::PyDiagoDavid::get_psi, R"pbdoc( + .def("get_psi", &PyDiagoDavidAdapter::get_psi, R"pbdoc( Get the eigenvectors. )pbdoc") - .def("init_eigenvalue", &py_hsolver::PyDiagoDavid::init_eigenvalue, R"pbdoc( + .def("init_eigenvalue", &PyDiagoDavidAdapter::init_eigenvalue, R"pbdoc( Initialize the eigenvalues as zero. )pbdoc") - .def("get_eigenvalue", &py_hsolver::PyDiagoDavid::get_eigenvalue, R"pbdoc( - Get the eigenvalues. + .def("get_eigenvalue", &PyDiagoDavidAdapter::get_eigenvalue, R"pbdoc( + Get the eigenvalues. )pbdoc"); - py::class_(m, "diago_cg") +#ifdef __ENABLE_ATEN + // Bind PyDiagoCG using adapter (only when ATen is available) + py::class_(m, "diago_cg") .def(py::init(), R"pbdoc( - Constructor of diago_cg, a class for diagonalizing + Constructor of diago_cg, a class for diagonalizing a linear operator using the Conjugate Gradient Method. - This class serves as a backend computation class. The interface - for invoking this class is a function defined in _hsolver.py, + This class serves as a backend computation class. The interface + for invoking this class is a function defined in _hsolver.py, which uses this class to perform the calculations. )pbdoc") .def("diag", - &py_hsolver::PyDiagoCG::diag, + &PyDiagoCGAdapter::diag, R"pbdoc( Diagonalize the linear operator using the Conjugate Gradient Method. @@ -190,25 +203,31 @@ void bind_hsolver(py::module& m) "mm_op"_a, "max_iter"_a, "tol"_a, - "diag_ethr"_a, + "diag_ethr"_a, "need_subspace"_a, "scf_type"_a, "nproc_in_pool"_a) - .def("init_eig", &py_hsolver::PyDiagoCG::init_eig, R"pbdoc( + .def("init_eig", &PyDiagoCGAdapter::init_eig, R"pbdoc( Initialize the eigenvalues. )pbdoc") - .def("get_eig", &py_hsolver::PyDiagoCG::get_eig, R"pbdoc( + .def("get_eig", &PyDiagoCGAdapter::get_eig, R"pbdoc( Get the eigenvalues. )pbdoc") - .def("set_psi", &py_hsolver::PyDiagoCG::set_psi, R"pbdoc( + .def("set_psi", &PyDiagoCGAdapter::set_psi, R"pbdoc( Set the eigenvectors. )pbdoc", "psi_in"_a) - .def("get_psi", &py_hsolver::PyDiagoCG::get_psi, R"pbdoc( + .def("get_psi", &PyDiagoCGAdapter::get_psi, R"pbdoc( Get the eigenvectors. )pbdoc") - .def("set_prec", &py_hsolver::PyDiagoCG::set_prec, R"pbdoc( + .def("set_prec", &PyDiagoCGAdapter::set_prec, R"pbdoc( Set the preconditioner. )pbdoc", "prec_in"_a); +#else + // Provide stub binding when ATen is not available + // This allows the module to load but will raise an error if used + m.def("diago_cg_available", []() { return false; }, + "Check if diago_cg is available (requires ATen)"); +#endif } PYBIND11_MODULE(_hsolver_pack, m) @@ -216,4 +235,4 @@ PYBIND11_MODULE(_hsolver_pack, m) m.doc() = "Submodule for pyabacus: hsolver"; bind_hsolver(m); -} \ No newline at end of file +} diff --git a/python/pyabacus/src/py_numerical_radial.cpp b/python/pyabacus/src/py_numerical_radial.cpp index ead8e7acca..18500641cf 100644 --- a/python/pyabacus/src/py_numerical_radial.cpp +++ b/python/pyabacus/src/py_numerical_radial.cpp @@ -3,8 +3,12 @@ #include "source_basis/module_nao/numerical_radial.h" +#include "utils/pybind_utils.h" + namespace py = pybind11; using namespace pybind11::literals; +using namespace pyabacus::utils; + template using overload_cast_ = pybind11::detail::overload_cast_impl; @@ -28,22 +32,15 @@ void bind_numerical_radial(py::module& m) const std::string symbol = "", const int itype, const bool init_sbt = true) { - py::buffer_info grid_info = grid.request(); - py::buffer_info value_info = value.request(); - if (grid_info.ndim != 1 || value_info.ndim != 1) - { - throw std::runtime_error("Input arrays must be 1-dimensional"); - } - if (grid_info.shape[0] != value_info.shape[0]) - { - throw std::runtime_error("Grid and value arrays must have the same size"); - } + check_1d_array(grid, "grid"); + check_1d_array(value, "value"); + check_same_size(grid, value, "grid", "value"); self.build(l, for_r_space, - grid_info.shape[0], - static_cast(grid_info.ptr), - static_cast(value_info.ptr), + static_cast(grid.size()), + get_array_ptr(grid), + get_array_ptr(value), p, izeta, symbol, @@ -68,13 +65,9 @@ void bind_numerical_radial(py::module& m) const int ngrid, py::array_t grid, const char mode) { - py::buffer_info grid_info = grid.request(); - if (grid_info.ndim != 1) - { - throw std::runtime_error("Input array must be 1-dimensional"); - } + check_1d_array(grid, "grid"); - self.set_grid(for_r_space, ngrid, static_cast(grid_info.ptr), mode); + self.set_grid(for_r_space, ngrid, get_array_ptr(grid), mode); }, "for_r_space"_a, "ngrid"_a, @@ -86,17 +79,13 @@ void bind_numerical_radial(py::module& m) "ngrid"_a, "cutoff"_a, "mode"_a = 'i', - "enable+fft"_a = false) + "enable_fft"_a = false) .def( "set_value", [](NumericalRadial& self, const bool for_r_space, py::array_t value, const int p) { - py::buffer_info value_info = value.request(); - if (value_info.ndim != 1) - { - throw std::runtime_error("Input array must be 1-dimensional"); - } + check_1d_array(value, "value"); - self.set_value(for_r_space, static_cast(value_info.ptr), p); + self.set_value(for_r_space, get_array_ptr(value), p); }, "for_r_space"_a, "value"_a, @@ -112,13 +101,9 @@ void bind_numerical_radial(py::module& m) const int nr_tab, const double rmax_tab, const bool deriv) { - py::buffer_info table_info = table.request(); - if (table_info.ndim != 1) - { - throw std::runtime_error("Table array must be 1-dimensional"); - } + check_1d_array(table, "table"); - self.radtab(op, ket, l, static_cast(table_info.ptr), nr_tab, rmax_tab, deriv); + self.radtab(op, ket, l, get_array_ptr(table), nr_tab, rmax_tab, deriv); }, "op"_a, "ket"_a, @@ -139,30 +124,21 @@ void bind_numerical_radial(py::module& m) .def_property_readonly("kcut", &NumericalRadial::kcut) .def_property_readonly("rgrid", [](NumericalRadial& self) { - const double* rgrid = self.rgrid(); - return py::array_t({self.nr()}, rgrid); + return numpy_from_ptr_copy(self.rgrid(), static_cast(self.nr())); }) .def_property_readonly("kgrid", [](NumericalRadial& self) { - const double* kgrid = self.kgrid(); - return py::array_t({self.nk()}, kgrid); + return numpy_from_ptr_copy(self.kgrid(), static_cast(self.nk())); }) .def_property_readonly("rvalue", [](NumericalRadial& self) { - const double* rvalue = self.rvalue(); - return py::array_t({self.nr()}, rvalue); + return numpy_from_ptr_copy(self.rvalue(), static_cast(self.nr())); }) .def_property_readonly("kvalue", [](NumericalRadial& self) { - const double* kvalue = self.kvalue(); - return py::array_t({self.nk()}, kvalue); + return numpy_from_ptr_copy(self.kvalue(), static_cast(self.nk())); }) .def_property_readonly("pr", &NumericalRadial::pr) .def_property_readonly("pk", &NumericalRadial::pk) - .def_property_readonly("is_fft_compliant", overload_cast_<>()(&NumericalRadial::is_fft_compliant, py::const_)) - // leave transformer for future - .def_property_readonly("rgrid", overload_cast_()(&NumericalRadial::rgrid, py::const_)) - .def_property_readonly("kgrid", overload_cast_()(&NumericalRadial::kgrid, py::const_)) - .def_property_readonly("rvalue", overload_cast_()(&NumericalRadial::rvalue, py::const_)) - .def_property_readonly("kvalue", overload_cast_()(&NumericalRadial::kvalue, py::const_)); -} \ No newline at end of file + .def_property_readonly("is_fft_compliant", overload_cast_<>()(&NumericalRadial::is_fft_compliant, py::const_)); +} diff --git a/python/pyabacus/src/pyabacus/ModuleNAO/_module_nao.py b/python/pyabacus/src/pyabacus/ModuleNAO/_module_nao.py index b8ed03a1a4..132a955cbc 100644 --- a/python/pyabacus/src/pyabacus/ModuleNAO/_module_nao.py +++ b/python/pyabacus/src/pyabacus/ModuleNAO/_module_nao.py @@ -83,19 +83,21 @@ def symbol(self, itype: int) -> str: def ntype(self) -> int: return super().ntype - def lmax(self, itype: int) -> int: - return super().lmax(itype) - - @property - def lmax(self) -> int: - return super().lmax - - def rcut_max(self, itype: int) -> float: - return super().rcut_max(itype) + @overload + def lmax(self) -> int: ... + @overload + def lmax(self, itype: int) -> int: ... - @property - def rcut_max(self) -> float: - return super().rcut_max + def lmax(self, *args, **kwargs): + return super().lmax(*args, **kwargs) + + @overload + def rcut_max(self) -> float: ... + @overload + def rcut_max(self, itype: int) -> float: ... + + def rcut_max(self, *args, **kwargs): + return super().rcut_max(*args, **kwargs) def nzeta(self, itype: int, l: int) -> int: return super().nzeta(itype, l) diff --git a/python/pyabacus/src/pyabacus/__init__.py b/python/pyabacus/src/pyabacus/__init__.py index d8a6e22b72..4d138ef007 100644 --- a/python/pyabacus/src/pyabacus/__init__.py +++ b/python/pyabacus/src/pyabacus/__init__.py @@ -1,8 +1,9 @@ from __future__ import annotations -__submodules__ = ["ModuleBase", "ModuleNAO", "hsolver", "Cell", "IntegralCalculator", "io"] -__all__ = list(__submodules__) +__submodules__ = ["ModuleBase", "ModuleNAO", "hsolver", "Cell", "IntegralCalculator", "io", "esolver", "driver"] +__all__ = list(__submodules__) + ["abacus", "CalculationResult"] +# Import the main abacus() function for convenience def __getattr__(attr): if attr == "ModuleBase": import pyabacus.ModuleBase as ModuleBase @@ -19,5 +20,17 @@ def __getattr__(attr): elif attr == "io": import pyabacus.io as io return io + elif attr == "esolver": + import pyabacus.esolver as esolver + return esolver + elif attr == "driver": + import pyabacus.driver as driver + return driver + elif attr == "abacus": + from pyabacus.driver import abacus + return abacus + elif attr == "CalculationResult": + from pyabacus.driver import CalculationResult + return CalculationResult else: raise AttributeError(f"module {__name__} has no attribute {attr}") \ No newline at end of file diff --git a/python/pyabacus/src/pyabacus/driver/__init__.py b/python/pyabacus/src/pyabacus/driver/__init__.py new file mode 100644 index 0000000000..879414a930 --- /dev/null +++ b/python/pyabacus/src/pyabacus/driver/__init__.py @@ -0,0 +1,31 @@ +""" +PyABACUS Driver Module +====================== + +This module provides the high-level `abacus()` function for running +complete ABACUS DFT calculations from Python. + +Example +------- +>>> import pyabacus +>>> result = pyabacus.abacus("./Si_scf/") +>>> print(f"Energy: {result.etot_ev:.6f} eV") +>>> print(f"Converged: {result.converged}") +""" + +from .runner import abacus, CalculationResult + +# Try to import C++ bindings +try: + from ._driver_pack import PyDriver, CalculationResult as _CppResult + _HAS_CPP_DRIVER = True +except ImportError: + _HAS_CPP_DRIVER = False + PyDriver = None + _CppResult = None + +__all__ = [ + 'abacus', + 'CalculationResult', + 'PyDriver', +] diff --git a/python/pyabacus/src/pyabacus/driver/runner.py b/python/pyabacus/src/pyabacus/driver/runner.py new file mode 100644 index 0000000000..eb122f873a --- /dev/null +++ b/python/pyabacus/src/pyabacus/driver/runner.py @@ -0,0 +1,931 @@ +""" +High-level runner interface for ABACUS calculations. + +This module provides the `abacus()` function - the main entry point +for running ABACUS DFT calculations from Python. + +Two implementations are available: +1. C++ bindings (if available) - direct library calls +2. Subprocess fallback - calls the abacus executable +""" + +from dataclasses import dataclass, field +from typing import Optional, Dict, Any, Union, List +from pathlib import Path +import numpy as np +import os +import subprocess +import re + + +# Unit conversion constants +RY_TO_EV = 13.605693122994 # 1 Ry = 13.6057 eV +BOHR_TO_ANG = 0.529177249 # 1 Bohr = 0.529 Angstrom + + +@dataclass +class CalculationResult: + """ + Container for ABACUS calculation results. + + All energies are stored in eV units. + + Attributes + ---------- + converged : bool + Whether SCF converged + niter : int + Number of SCF iterations + etot : float + Total energy in eV + forces : np.ndarray, optional + Forces on atoms (nat, 3) in eV/Angstrom + stress : np.ndarray, optional + Stress tensor (3, 3) in kbar + energies : dict + Dictionary of energy components (all in eV) + fermi_energy : float + Fermi energy in eV + bandgap : float + Band gap in eV + nat : int + Number of atoms + ntype : int + Number of atom types + nbands : int + Number of bands + nks : int + Number of k-points + """ + # Convergence info + converged: bool = False + niter: int = 0 + drho: float = 0.0 + + # Energies (all in eV) + etot: float = 0.0 + eband: float = 0.0 + hartree_energy: float = 0.0 + etxc: float = 0.0 + ewald_energy: float = 0.0 + demet: float = 0.0 + exx: float = 0.0 + evdw: float = 0.0 + + # Forces (in eV/Angstrom) and stress (in kbar) + forces: Optional[np.ndarray] = None + stress: Optional[np.ndarray] = None + + # Electronic structure info + fermi_energy: float = 0.0 # in eV + bandgap: float = 0.0 # in eV + + # System info + nat: int = 0 + ntype: int = 0 + nbands: int = 0 + nks: int = 0 + + # Output file tracking + output_dir: str = "" # Path to OUT.$suffix folder + log_file: str = "" # Path to the main log file (running_*.log) + output_files: Dict[str, str] = field(default_factory=dict) # filename -> full path + + @property + def etot_ev(self) -> float: + """Total energy in eV (same as etot, for compatibility).""" + return self.etot + + @property + def energies(self) -> Dict[str, float]: + """Dictionary of all energy components (all in eV).""" + return { + 'etot': self.etot, + 'eband': self.eband, + 'hartree_energy': self.hartree_energy, + 'etxc': self.etxc, + 'ewald_energy': self.ewald_energy, + 'demet': self.demet, + 'exx': self.exx, + 'evdw': self.evdw, + } + + @property + def forces_ev_ang(self) -> Optional[np.ndarray]: + """Forces in eV/Angstrom (same as forces, for compatibility).""" + return self.forces + + @property + def has_forces(self) -> bool: + """Whether forces are available.""" + return self.forces is not None + + @property + def has_stress(self) -> bool: + """Whether stress is available.""" + return self.stress is not None + + @property + def has_output_dir(self) -> bool: + """Whether output directory exists and is set.""" + return bool(self.output_dir) and os.path.isdir(self.output_dir) + + def get_output_file(self, filename: str) -> Optional[str]: + """ + Get full path to a specific output file. + + Parameters + ---------- + filename : str + Name of the output file (e.g., 'running_scf.log', 'BANDS_1.dat') + + Returns + ------- + str or None + Full path to the file if it exists, None otherwise + """ + return self.output_files.get(filename) + + def list_output_files(self) -> List[str]: + """ + List all output file names. + + Returns + ------- + list of str + List of output file names + """ + return list(self.output_files.keys()) + + def summary(self) -> str: + """Return a summary string of the calculation result.""" + lines = [ + "=== ABACUS Calculation Result ===", + f"Converged: {'Yes' if self.converged else 'No'}", + f"SCF iterations: {self.niter}", + f"Final drho: {self.drho:.2e}", + "", + "Energies (eV):", + f" Total energy: {self.etot:.8f}", + f" Band energy: {self.eband:.8f}", + f" Hartree: {self.hartree_energy:.8f}", + f" XC energy: {self.etxc:.8f}", + f" Ewald: {self.ewald_energy:.8f}", + f" Entropy(-TS): {self.demet:.8f}", + f" EXX: {self.exx:.8f}", + f" VdW: {self.evdw:.8f}", + ] + + lines.extend([ + "", + "System info:", + f" Atoms: {self.nat}, Types: {self.ntype}", + f" Bands: {self.nbands}, K-points: {self.nks}", + f" Fermi energy: {self.fermi_energy:.6f} eV", + f" Band gap: {self.bandgap:.6f} eV", + ]) + + lines.append("") + lines.append("Forces (eV/Angstrom):") + if self.has_forces and self.forces is not None: + max_force = np.max(np.abs(self.forces)) + lines.append(f" Calculated ({self.nat} atoms), Max force: {max_force:.6f}") + for i, f in enumerate(self.forces): + lines.append(f" Atom {i+1}: [{f[0]:12.8f}, {f[1]:12.8f}, {f[2]:12.8f}]") + else: + lines.append(" Not calculated") + + lines.append("") + lines.append("Stress (kbar):") + if self.has_stress and self.stress is not None: + lines.append(" Calculated:") + for i, row in enumerate(self.stress): + lines.append(f" [{row[0]:12.6f}, {row[1]:12.6f}, {row[2]:12.6f}]") + else: + lines.append(" Not calculated") + + # Output file tracking + lines.extend([ + "", + "Output:", + f" Directory: {self.output_dir if self.output_dir else 'N/A'}", + f" Log file: {os.path.basename(self.log_file) if self.log_file else 'N/A'}", + f" Files: {len(self.output_files)} output files", + ]) + + return "\n".join(lines) + + def __repr__(self) -> str: + return ( + f"" + ) + + +def _find_abacus_executable() -> Optional[str]: + """Find the abacus executable in PATH or common locations.""" + import shutil + + # Check PATH first + abacus_path = shutil.which("abacus") + if abacus_path: + return abacus_path + + # Check common locations + common_paths = [ + "/usr/local/bin/abacus", + "/usr/bin/abacus", + os.path.expanduser("~/abacus/build/abacus"), + os.path.expanduser("~/.local/bin/abacus"), + ] + + for path in common_paths: + if os.path.isfile(path) and os.access(path, os.X_OK): + return path + + return None + + +def _parse_running_log(log_path: str) -> CalculationResult: + """Parse the running log file to extract calculation results (all energies in eV).""" + result = CalculationResult() + + if not os.path.exists(log_path): + return result + + with open(log_path, 'r') as f: + content = f.read() + + # Parse convergence - check multiple patterns + convergence_patterns = [ + r"#SCF IS CONVERGED#", + r"charge density convergence is achieved", + r"convergence is achieved", + r"SCF CONVERGED", + ] + for pattern in convergence_patterns: + if re.search(pattern, content, re.IGNORECASE): + result.converged = True + break + + # Parse total energy (look for final energy first) + # Pattern 1: !FINAL_ETOT_IS -57.02190809937956 eV + final_match = re.search(r"!FINAL_ETOT_IS\s+([-\d.]+)\s+eV", content) + if final_match: + result.etot = float(final_match.group(1)) # Already in eV + else: + # Pattern 2: E_KohnSham lines - get the last one (Ry, eV) + ks_matches = re.findall(r"E_KohnSham\s+([-\d.]+)\s+([-\d.]+)", content) + if ks_matches: + result.etot = float(ks_matches[-1][1]) # Second value is in eV + + # Parse number of SCF iterations - count ELEC ITER lines + iter_matches = re.findall(r"#ELEC ITER#\s+(\d+)", content) + if iter_matches: + result.niter = int(iter_matches[-1]) + + # Parse drho - get the last value (Electron density deviation) + drho_matches = re.findall(r"Electron density deviation\s+([\d.eE+-]+)", content) + if drho_matches: + result.drho = float(drho_matches[-1]) + + # Parse number of atoms + nat_match = re.search(r"TOTAL ATOM NUMBER\s*=\s*(\d+)", content) + if nat_match: + result.nat = int(nat_match.group(1)) + + # Parse number of types - count "READING ATOM TYPE" lines + ntype_matches = re.findall(r"READING ATOM TYPE\s+(\d+)", content) + if ntype_matches: + result.ntype = int(ntype_matches[-1]) + + # Parse number of bands + nbands_match = re.search(r"Number of electronic states \(NBANDS\)\s*=\s*(\d+)", content) + if nbands_match: + result.nbands = int(nbands_match.group(1)) + + # Parse number of k-points (nkstot now = X after reduction) + nkstot_match = re.search(r"nkstot now\s*=\s*(\d+)", content) + if nkstot_match: + result.nks = int(nkstot_match.group(1)) + else: + # Fallback to original nkstot + nkstot_match = re.search(r"nkstot\s*=\s*(\d+)", content) + if nkstot_match: + result.nks = int(nkstot_match.group(1)) + + # Parse Fermi energy - format: E_Fermi 0.4657978215 6.3375044881 (Ry, eV) + fermi_match = re.search(r"E_Fermi\s+([-\d.]+)\s+([-\d.]+)", content) + if fermi_match: + result.fermi_energy = float(fermi_match.group(2)) # Second value is in eV + + # Parse band gap - format: E_gap(k) 0.1070873708 1.4569984261 (Ry, eV) + gap_match = re.search(r"E_gap\(k\)\s+([-\d.]+)\s+([-\d.]+)", content) + if gap_match: + result.bandgap = float(gap_match.group(2)) # Second value is in eV + + # Parse energy components from the final SCF iteration + # Format: E_xxx value_Ry value_eV - we take the eV value (second column) + + # E_band (band energy) + eband_match = re.search(r"E_band\s+([-\d.]+)\s+([-\d.]+)", content) + if eband_match: + result.eband = float(eband_match.group(2)) # eV + + # E_Hartree + hartree_match = re.search(r"E_Hartree\s+([-\d.]+)\s+([-\d.]+)", content) + if hartree_match: + result.hartree_energy = float(hartree_match.group(2)) # eV + + # E_xc (exchange-correlation) + etxc_match = re.search(r"E_xc\s+([-\d.]+)\s+([-\d.]+)", content) + if etxc_match: + result.etxc = float(etxc_match.group(2)) # eV + + # E_Ewald + ewald_match = re.search(r"E_Ewald\s+([-\d.]+)\s+([-\d.]+)", content) + if ewald_match: + result.ewald_energy = float(ewald_match.group(2)) # eV + + # E_entropy(-TS) for metals + demet_match = re.search(r"E_entropy\(-TS\)\s+([-\d.]+)\s+([-\d.]+)", content) + if demet_match: + result.demet = float(demet_match.group(2)) # eV + + # E_exx (exact exchange) + exx_match = re.search(r"E_exx\s+([-\d.]+)\s+([-\d.]+)", content) + if exx_match: + result.exx = float(exx_match.group(2)) # eV + + return result + + +def _get_suffix_from_input(input_dir: str) -> str: + """Parse the suffix from INPUT file.""" + input_file = os.path.join(input_dir, "INPUT") + suffix = "ABACUS" # default suffix + + if os.path.exists(input_file): + with open(input_file, 'r') as f: + for line in f: + line = line.strip() + if line.startswith('#') or not line: + continue + # Parse suffix parameter + if 'suffix' in line.lower(): + parts = line.split() + if len(parts) >= 2: + suffix = parts[1] + break + return suffix + + +def _collect_output_files(output_dir: str) -> Dict[str, str]: + """ + Collect all output files from the output directory. + + Parameters + ---------- + output_dir : str + Path to the output directory (OUT.$suffix) + + Returns + ------- + dict + Dictionary mapping filename to full path + """ + output_files = {} + if output_dir and os.path.isdir(output_dir): + try: + for entry in os.listdir(output_dir): + full_path = os.path.join(output_dir, entry) + if os.path.isfile(full_path): + output_files[entry] = full_path + except OSError: + pass # Ignore errors during directory iteration + return output_files + + +def _parse_forces_from_log(log_path: str, nat: int) -> Optional[np.ndarray]: + """Parse forces from the running log file (returns forces in eV/Angstrom).""" + if not os.path.exists(log_path) or nat <= 0: + return None + + with open(log_path, 'r') as f: + content = f.read() + + # Try multiple force block formats + # Format 1: #TOTAL-FORCE (eV/Angstrom)# + # ------------------------------------------------------------------------- + # Atoms Force_x Force_y Force_z + # ------------------------------------------------------------------------- + # Al1 0.0000000000 0.0000000000 0.0000000000 + force_pattern1 = r"#TOTAL-FORCE \(eV/Angstrom\)#.*?-{10,}\s*\n\s*Atoms\s+Force_x\s+Force_y\s+Force_z\s*\n\s*-{10,}\s*\n((?:\s*\S+\s+[-\d.eE+]+\s+[-\d.eE+]+\s+[-\d.eE+]+\s*\n)+)" + match = re.search(force_pattern1, content, re.DOTALL) + + if not match: + # Format 2: TOTAL-FORCE (eV/Angstrom) + # ---------------------------- + # atom x y z + # Si1 0.001 0.002 0.003 + force_pattern2 = r"TOTAL-FORCE \(eV/Angstrom\).*?-{10,}\s*\n\s*atom.*?\n((?:\s*\S+\s+[-\d.eE+]+\s+[-\d.eE+]+\s+[-\d.eE+]+\s*\n)+)" + match = re.search(force_pattern2, content, re.DOTALL) + + if match: + force_lines = match.group(1).strip().split('\n') + forces = [] + for line in force_lines: + parts = line.split() + if len(parts) >= 4: + # parts[0] is atom label, parts[1:4] are fx, fy, fz in eV/Angstrom + try: + fx, fy, fz = float(parts[1]), float(parts[2]), float(parts[3]) + forces.append([fx, fy, fz]) # Already in eV/Angstrom + except (ValueError, IndexError): + continue + + if len(forces) == nat: + return np.array(forces) + + return None + + +def _parse_stress_from_log(log_path: str) -> Optional[np.ndarray]: + """Parse stress tensor from the running log file (returns stress in kbar).""" + if not os.path.exists(log_path): + return None + + with open(log_path, 'r') as f: + content = f.read() + + # Try multiple stress block formats + # Format 1: #TOTAL-STRESS (kbar)# + # ---------------------------------------------------------------- + # Stress_x Stress_y Stress_z + # ---------------------------------------------------------------- + # 15.7976835472 0.0000000000 0.0000000000 + stress_pattern1 = r"#TOTAL-STRESS \(kbar\)#.*?-{10,}\s*\n\s*Stress_x\s+Stress_y\s+Stress_z\s*\n\s*-{10,}\s*\n((?:\s*[-\d.eE+]+\s+[-\d.eE+]+\s+[-\d.eE+]+\s*\n){3})" + match = re.search(stress_pattern1, content, re.DOTALL | re.IGNORECASE) + + if not match: + # Format 2: TOTAL-STRESS (KBAR) + # ---------------------------- + # 1.234 0.000 0.000 + stress_pattern2 = r"TOTAL-STRESS \(KBAR\).*?-{10,}\s*\n((?:\s*[-\d.eE+]+\s+[-\d.eE+]+\s+[-\d.eE+]+\s*\n){3})" + match = re.search(stress_pattern2, content, re.DOTALL | re.IGNORECASE) + + if match: + stress_lines = match.group(1).strip().split('\n') + stress = [] + for line in stress_lines: + parts = line.split() + if len(parts) >= 3: + try: + stress.append([float(parts[0]), float(parts[1]), float(parts[2])]) + except (ValueError, IndexError): + continue + + if len(stress) == 3: + return np.array(stress) + + return None + + +def _modify_input_file(input_dir: str, calculate_force: bool, calculate_stress: bool) -> Optional[str]: + """ + Modify INPUT file to add cal_force and cal_stress parameters. + + Returns the path to the backup file if modifications were made, None otherwise. + """ + input_file = os.path.join(input_dir, "INPUT") + if not os.path.exists(input_file): + return None + + # Read original content + with open(input_file, 'r') as f: + lines = f.readlines() + + # Check if cal_force/cal_stress already exist + has_cal_force = False + has_cal_stress = False + for line in lines: + line_lower = line.lower().strip() + if line_lower.startswith('cal_force'): + has_cal_force = True + if line_lower.startswith('cal_stress'): + has_cal_stress = True + + # If both already exist, no need to modify + if has_cal_force and has_cal_stress: + return None + + # Create backup + backup_file = input_file + ".pyabacus_backup" + with open(backup_file, 'w') as f: + f.writelines(lines) + + # Add missing parameters + new_lines = lines.copy() + if not has_cal_force: + new_lines.append(f"cal_force {1 if calculate_force else 0}\n") + if not has_cal_stress: + new_lines.append(f"cal_stress {1 if calculate_stress else 0}\n") + + # Write modified file + with open(input_file, 'w') as f: + f.writelines(new_lines) + + return backup_file + + +def _restore_input_file(input_dir: str, backup_file: Optional[str]): + """Restore INPUT file from backup.""" + if backup_file is None: + return + + input_file = os.path.join(input_dir, "INPUT") + if os.path.exists(backup_file): + # Restore original + with open(backup_file, 'r') as f: + content = f.read() + with open(input_file, 'w') as f: + f.write(content) + # Remove backup + os.remove(backup_file) + + +def _run_abacus_subprocess( + input_dir: str, + output_dir: str, + verbosity: int, + calculate_force: bool = True, + calculate_stress: bool = False, + nprocs: int = 1, + nthreads: int = 1, +) -> CalculationResult: + """Run ABACUS using subprocess and parse results.""" + import shutil + + # Find abacus executable + abacus_exe = _find_abacus_executable() + if abacus_exe is None: + raise RuntimeError( + "ABACUS executable not found. Please ensure 'abacus' is in your PATH " + "or install ABACUS from https://github.com/deepmodeling/abacus-develop" + ) + + # Convert to absolute path + input_dir = os.path.abspath(input_dir) + + # Modify INPUT file to add cal_force and cal_stress + backup_file = _modify_input_file(input_dir, calculate_force, calculate_stress) + + try: + # Get the suffix from INPUT file to know where output will be + suffix = _get_suffix_from_input(input_dir) + expected_out_dir = os.path.join(input_dir, f"OUT.{suffix}") + + # Set up environment + env = os.environ.copy() + env["OMP_NUM_THREADS"] = str(nthreads) + + # Build command + if nprocs > 1: + # Find mpirun or mpiexec + mpirun = shutil.which("mpirun") or shutil.which("mpiexec") + if mpirun is None: + raise RuntimeError( + f"MPI requested (nprocs={nprocs}) but mpirun/mpiexec not found. " + "Please install MPI or set nprocs=1." + ) + cmd = [mpirun, "-np", str(nprocs), abacus_exe] + else: + cmd = [abacus_exe] + + # Set up stdout/stderr based on verbosity + if verbosity >= 2: + stdout = None + stderr = None + elif verbosity == 1: + stdout = subprocess.PIPE + stderr = subprocess.PIPE + else: + stdout = subprocess.DEVNULL + stderr = subprocess.DEVNULL + + try: + proc = subprocess.run( + cmd, + cwd=input_dir, + env=env, + stdout=stdout, + stderr=stderr, + timeout=None, # No timeout + ) + except subprocess.TimeoutExpired: + raise RuntimeError("ABACUS calculation timed out") + except Exception as e: + raise RuntimeError(f"Failed to run ABACUS: {e}") + + # Find and parse the output + # First try the expected output directory based on suffix + log_path = None + if os.path.exists(expected_out_dir): + for log_name in ["running_scf.log", "running_relax.log", "running_cell-relax.log", "running_nscf.log"]: + candidate = os.path.join(expected_out_dir, log_name) + if os.path.exists(candidate): + log_path = candidate + break + + # Fallback: find the most recently modified OUT.* directory + if log_path is None: + out_dirs = [d for d in os.listdir(input_dir) if d.startswith("OUT.") and os.path.isdir(os.path.join(input_dir, d))] + if out_dirs: + latest_out = max(out_dirs, key=lambda d: os.path.getmtime(os.path.join(input_dir, d))) + out_dir_path = os.path.join(input_dir, latest_out) + for log_name in ["running_scf.log", "running_relax.log", "running_cell-relax.log", "running_nscf.log"]: + candidate = os.path.join(out_dir_path, log_name) + if os.path.exists(candidate): + log_path = candidate + break + + if log_path and os.path.exists(log_path): + result = _parse_running_log(log_path) + # Set output tracking fields + result.log_file = os.path.abspath(log_path) + result.output_dir = os.path.abspath(os.path.dirname(log_path)) + result.output_files = _collect_output_files(result.output_dir) + + # Parse forces if requested + if calculate_force and result.nat > 0: + forces = _parse_forces_from_log(log_path, result.nat) + if forces is not None: + result.forces = forces + + # Parse stress if requested + if calculate_stress: + stress = _parse_stress_from_log(log_path) + if stress is not None: + result.stress = stress + else: + result = CalculationResult() + # Try to find output directory even if log file wasn't found + if os.path.exists(expected_out_dir): + result.output_dir = os.path.abspath(expected_out_dir) + result.output_files = _collect_output_files(result.output_dir) + + finally: + # Restore original INPUT file + _restore_input_file(input_dir, backup_file) + + return result + + +def abacus( + input_dir: Optional[str] = None, + *, + input_file: Optional[str] = None, + stru_file: Optional[str] = None, + kpt_file: Optional[str] = None, + pseudo_dir: Optional[str] = None, + orbital_dir: Optional[str] = None, + output_dir: Optional[str] = None, + calculate_force: bool = True, + calculate_stress: bool = False, + verbosity: int = 1, + nprocs: int = 1, + nthreads: int = 1, +) -> CalculationResult: + """ + Run an ABACUS DFT calculation. + + This is the main entry point for running ABACUS calculations from Python. + It provides the same functionality as the ABACUS command-line program. + + Parameters + ---------- + input_dir : str, optional + Directory containing INPUT, STRU, KPT files. + If not specified, uses current directory. + input_file : str, optional + Explicit path to INPUT file. Overrides input_dir/INPUT. + stru_file : str, optional + Explicit path to STRU file. Overrides value in INPUT. + kpt_file : str, optional + Explicit path to KPT file. Overrides value in INPUT. + pseudo_dir : str, optional + Directory containing pseudopotential files. + Overrides pseudo_dir in INPUT. + orbital_dir : str, optional + Directory containing orbital files (for LCAO). + Overrides orbital_dir in INPUT. + output_dir : str, optional + Directory for output files. Default: "OUT.PYABACUS" + calculate_force : bool, optional + Whether to calculate forces. Default: True + calculate_stress : bool, optional + Whether to calculate stress tensor. Default: False + verbosity : int, optional + Output verbosity level: + - 0: Silent (no output) + - 1: Normal (default) + - 2: Verbose (detailed output) + nprocs : int, optional + Number of MPI processes. Default: 1 + Equivalent to: mpirun -np nprocs abacus + nthreads : int, optional + Number of OpenMP threads. Default: 1 + Equivalent to: OMP_NUM_THREADS=nthreads + + Returns + ------- + CalculationResult + Object containing all calculation results including: + - converged: Whether SCF converged + - etot: Total energy (Ry) + - etot_ev: Total energy (eV) + - forces: Forces on atoms (if calculate_force=True) + - stress: Stress tensor (if calculate_stress=True) + - energies: Dictionary of energy components + + Raises + ------ + FileNotFoundError + If INPUT file is not found + RuntimeError + If calculation fails or ABACUS is not installed + + Examples + -------- + Basic SCF calculation: + + >>> result = pyabacus.abacus("./Si_scf/") + >>> print(f"Energy: {result.etot_ev:.6f} eV") + >>> print(f"Converged: {result.converged}") + + Calculate forces and stress: + + >>> result = pyabacus.abacus( + ... "./Si_relax/", + ... calculate_force=True, + ... calculate_stress=True, + ... ) + >>> print(f"Max force: {np.max(np.abs(result.forces_ev_ang)):.4f} eV/Ang") + + Parallel calculation with MPI and OpenMP: + + >>> result = pyabacus.abacus( + ... "./Si_scf/", + ... nprocs=4, # 4 MPI processes + ... nthreads=2, # 2 OpenMP threads per process + ... ) + + Silent mode: + + >>> result = pyabacus.abacus("./Si_scf/", verbosity=0) + """ + # Try to use C++ driver first + try: + from ._driver_pack import PyDriver + _HAS_CPP_DRIVER = True + except ImportError: + _HAS_CPP_DRIVER = False + + # Determine input directory + if input_dir is None: + if input_file is not None: + input_dir = str(Path(input_file).parent) + else: + input_dir = "." + + # Validate input directory exists + input_path = Path(input_dir) + if not input_path.exists(): + raise FileNotFoundError(f"Input directory not found: {input_dir}") + + # Check for INPUT file + if input_file is None: + input_file_path = input_path / "INPUT" + if not input_file_path.exists(): + raise FileNotFoundError( + f"INPUT file not found in {input_dir}. " + "Please provide input_file parameter or ensure INPUT exists." + ) + + # Set default output directory + if output_dir is None: + output_dir = "OUT.PYABACUS" + + if _HAS_CPP_DRIVER: + # Use C++ driver + driver = PyDriver() + + cpp_result = driver.run( + input_dir=str(input_dir), + input_file=input_file or "", + stru_file=stru_file or "", + kpt_file=kpt_file or "", + pseudo_dir=pseudo_dir or "", + orbital_dir=orbital_dir or "", + output_dir=output_dir or "", + calculate_force=calculate_force, + calculate_stress=calculate_stress, + verbosity=verbosity, + ) + + # Convert C++ result to Python dataclass + result = CalculationResult( + converged=cpp_result.converged, + niter=cpp_result.niter, + drho=cpp_result.drho, + etot=cpp_result.etot, + eband=cpp_result.eband, + hartree_energy=cpp_result.hartree_energy, + etxc=cpp_result.etxc, + ewald_energy=cpp_result.ewald_energy, + demet=cpp_result.demet, + exx=cpp_result.exx, + evdw=cpp_result.evdw, + fermi_energy=cpp_result.fermi_energy, + bandgap=cpp_result.bandgap, + nat=cpp_result.nat, + ntype=cpp_result.ntype, + nbands=cpp_result.nbands, + nks=cpp_result.nks, + ) + + # Copy forces if available + if cpp_result.has_forces: + result.forces = np.array(cpp_result.forces) + + # Copy stress if available + if cpp_result.has_stress: + result.stress = np.array(cpp_result.stress) + + # Copy output tracking fields + result.output_dir = cpp_result.output_dir + result.log_file = cpp_result.log_file + result.output_files = dict(cpp_result.output_files) + else: + # Use subprocess fallback + result = _run_abacus_subprocess( + input_dir=str(input_dir), + output_dir=output_dir, + verbosity=verbosity, + calculate_force=calculate_force, + calculate_stress=calculate_stress, + nprocs=nprocs, + nthreads=nthreads, + ) + + return result + + +def run_scf( + input_dir: str, + **kwargs +) -> CalculationResult: + """ + Convenience function for running SCF calculation. + + This is an alias for `abacus()` with default parameters + suitable for single-point SCF calculations. + + Parameters + ---------- + input_dir : str + Directory containing input files + **kwargs + Additional arguments passed to `abacus()` + + Returns + ------- + CalculationResult + Calculation results + """ + return abacus(input_dir, **kwargs) + + +def run_relax( + input_dir: str, + **kwargs +) -> CalculationResult: + """ + Convenience function for running geometry optimization. + + This is an alias for `abacus()` with force calculation enabled. + + Parameters + ---------- + input_dir : str + Directory containing input files + **kwargs + Additional arguments passed to `abacus()` + + Returns + ------- + CalculationResult + Calculation results + """ + kwargs.setdefault('calculate_force', True) + return abacus(input_dir, **kwargs) diff --git a/python/pyabacus/src/pyabacus/esolver/__init__.py b/python/pyabacus/src/pyabacus/esolver/__init__.py new file mode 100644 index 0000000000..57d50ec204 --- /dev/null +++ b/python/pyabacus/src/pyabacus/esolver/__init__.py @@ -0,0 +1,81 @@ +""" +PyABACUS ESolver Module +======================= + +This module provides Python bindings for ABACUS ESolver_KS_LCAO, +enabling Python-controlled SCF workflows with breakpoint support. + +Main Classes +------------ +ESolverLCAO_gamma : ESolver for gamma-only calculations +ESolverLCAO_multi_k : ESolver for multi-k calculations +LCAOWorkflow : High-level workflow wrapper with callback support + +Example +------- +>>> from pyabacus.esolver import LCAOWorkflow +>>> +>>> workflow = LCAOWorkflow("./") +>>> workflow.initialize() +>>> +>>> # Register callback for breakpoint before after_scf +>>> def save_state(wf): +... charge = wf.charge +... energy = wf.energy +... print(f"Total energy: {energy.etot}") +>>> +>>> workflow.register_callback('before_after_scf', save_state) +>>> result = workflow.run_scf(max_iter=100) +""" + +from .workflow import LCAOWorkflow +from .data_types import ChargeData, EnergyData, HamiltonianData, DensityMatrixData, SCFResult + +# Import C++ bindings +try: + from ._esolver_pack import ( + ESolverLCAO_gamma, + ESolverLCAO_multi_k, + ChargeAccessor, + EnergyAccessor, + HamiltonianAccessor_gamma, + HamiltonianAccessor_multi_k, + DensityMatrixAccessor_gamma, + DensityMatrixAccessor_multi_k, + ) +except ImportError as e: + import warnings + warnings.warn(f"Could not import _esolver_pack: {e}. " + "ESolver bindings may not be available.") + + # Define placeholder classes for documentation + ESolverLCAO_gamma = None + ESolverLCAO_multi_k = None + ChargeAccessor = None + EnergyAccessor = None + HamiltonianAccessor_gamma = None + HamiltonianAccessor_multi_k = None + DensityMatrixAccessor_gamma = None + DensityMatrixAccessor_multi_k = None + +__all__ = [ + # High-level interface + 'LCAOWorkflow', + + # Data types + 'ChargeData', + 'EnergyData', + 'HamiltonianData', + 'DensityMatrixData', + 'SCFResult', + + # Low-level C++ bindings + 'ESolverLCAO_gamma', + 'ESolverLCAO_multi_k', + 'ChargeAccessor', + 'EnergyAccessor', + 'HamiltonianAccessor_gamma', + 'HamiltonianAccessor_multi_k', + 'DensityMatrixAccessor_gamma', + 'DensityMatrixAccessor_multi_k', +] diff --git a/python/pyabacus/src/pyabacus/esolver/data_types.py b/python/pyabacus/src/pyabacus/esolver/data_types.py new file mode 100644 index 0000000000..b8ca5dc5ac --- /dev/null +++ b/python/pyabacus/src/pyabacus/esolver/data_types.py @@ -0,0 +1,233 @@ +""" +Data types for PyABACUS ESolver module. + +This module defines dataclasses for storing calculation results +in a structured and type-safe manner. +""" + +from dataclasses import dataclass, field +from typing import Dict, List, Tuple, Optional, Any +import numpy as np + + +@dataclass +class ChargeData: + """ + Container for charge density data. + + Attributes + ---------- + rho : np.ndarray + Real-space charge density with shape (nspin, nrxx) + rhog : np.ndarray, optional + Reciprocal-space charge density with shape (nspin, ngmc) + nspin : int + Number of spin channels (1, 2, or 4) + nrxx : int + Number of real-space grid points + ngmc : int, optional + Number of G-vectors for charge density + """ + rho: np.ndarray + nspin: int + nrxx: int + rhog: Optional[np.ndarray] = None + ngmc: Optional[int] = None + + def total_charge(self) -> float: + """Calculate total charge by integrating rho.""" + return np.sum(self.rho) + + def spin_density(self) -> Optional[np.ndarray]: + """ + Calculate spin density (rho_up - rho_down) for spin-polarized calculations. + + Returns None for non-spin-polarized calculations. + """ + if self.nspin == 2: + return self.rho[0] - self.rho[1] + return None + + +@dataclass +class EnergyData: + """ + Container for energy data. + + All energies are in Rydberg units. + + Attributes + ---------- + etot : float + Total energy + eband : float + Band (kinetic + local potential) energy + hartree_energy : float + Hartree (electron-electron Coulomb) energy + etxc : float + Exchange-correlation energy + ewald_energy : float + Ewald (ion-ion Coulomb) energy + demet : float + -TS term for metallic systems (smearing correction) + exx : float + Exact exchange energy (for hybrid functionals) + evdw : float + van der Waals correction energy + """ + etot: float = 0.0 + eband: float = 0.0 + hartree_energy: float = 0.0 + etxc: float = 0.0 + ewald_energy: float = 0.0 + demet: float = 0.0 + exx: float = 0.0 + evdw: float = 0.0 + + def to_dict(self) -> Dict[str, float]: + """Convert to dictionary.""" + return { + 'etot': self.etot, + 'eband': self.eband, + 'hartree_energy': self.hartree_energy, + 'etxc': self.etxc, + 'ewald_energy': self.ewald_energy, + 'demet': self.demet, + 'exx': self.exx, + 'evdw': self.evdw, + } + + def to_eV(self) -> 'EnergyData': + """ + Convert all energies from Rydberg to eV. + + Returns a new EnergyData instance with energies in eV. + """ + Ry_to_eV = 13.605693122994 # 1 Ry = 13.6057 eV + return EnergyData( + etot=self.etot * Ry_to_eV, + eband=self.eband * Ry_to_eV, + hartree_energy=self.hartree_energy * Ry_to_eV, + etxc=self.etxc * Ry_to_eV, + ewald_energy=self.ewald_energy * Ry_to_eV, + demet=self.demet * Ry_to_eV, + exx=self.exx * Ry_to_eV, + evdw=self.evdw * Ry_to_eV, + ) + + +@dataclass +class HamiltonianData: + """ + Container for Hamiltonian matrix data. + + Attributes + ---------- + Hk : List[np.ndarray] + List of H(k) matrices for each k-point + Sk : List[np.ndarray] + List of S(k) overlap matrices for each k-point + HR : Dict[Tuple[int, int, Tuple[int, int, int]], np.ndarray], optional + H(R) in sparse format: {(iat1, iat2, (R1, R2, R3)): matrix} + SR : Dict[Tuple[int, int, Tuple[int, int, int]], np.ndarray], optional + S(R) in sparse format: {(iat1, iat2, (R1, R2, R3)): matrix} + nbasis : int + Number of basis functions + nks : int + Number of k-points + """ + Hk: List[np.ndarray] = field(default_factory=list) + Sk: List[np.ndarray] = field(default_factory=list) + HR: Optional[Dict[Tuple[int, int, Tuple[int, int, int]], np.ndarray]] = None + SR: Optional[Dict[Tuple[int, int, Tuple[int, int, int]], np.ndarray]] = None + nbasis: int = 0 + nks: int = 0 + + def get_Hk(self, ik: int) -> np.ndarray: + """Get H(k) matrix for k-point ik.""" + if ik < 0 or ik >= len(self.Hk): + raise IndexError(f"K-point index {ik} out of range [0, {len(self.Hk)})") + return self.Hk[ik] + + def get_Sk(self, ik: int) -> np.ndarray: + """Get S(k) matrix for k-point ik.""" + if ik < 0 or ik >= len(self.Sk): + raise IndexError(f"K-point index {ik} out of range [0, {len(self.Sk)})") + return self.Sk[ik] + + +@dataclass +class DensityMatrixData: + """ + Container for density matrix data. + + Attributes + ---------- + DMK : List[np.ndarray] + List of DM(k) matrices for each k-point + DMR : Dict[Tuple[int, int, Tuple[int, int, int]], np.ndarray], optional + DM(R) in sparse format: {(iat1, iat2, (R1, R2, R3)): matrix} + nks : int + Number of k-points + nrow : int + Number of rows in density matrix + ncol : int + Number of columns in density matrix + """ + DMK: List[np.ndarray] = field(default_factory=list) + DMR: Optional[Dict[Tuple[int, int, Tuple[int, int, int]], np.ndarray]] = None + nks: int = 0 + nrow: int = 0 + ncol: int = 0 + + def get_DMK(self, ik: int) -> np.ndarray: + """Get DM(k) matrix for k-point ik.""" + if ik < 0 or ik >= len(self.DMK): + raise IndexError(f"K-point index {ik} out of range [0, {len(self.DMK)})") + return self.DMK[ik] + + def trace(self, ik: int) -> complex: + """Calculate trace of DM(k) for k-point ik.""" + return np.trace(self.get_DMK(ik)) + + +@dataclass +class SCFResult: + """ + Container for SCF calculation results. + + Attributes + ---------- + converged : bool + Whether SCF converged + niter : int + Number of iterations performed + drho : float + Final charge density difference + energy : EnergyData + Final energy data + charge : ChargeData, optional + Final charge density + hamiltonian : HamiltonianData, optional + Final Hamiltonian matrices + density_matrix : DensityMatrixData, optional + Final density matrix + """ + converged: bool + niter: int + drho: float + energy: EnergyData + charge: Optional[ChargeData] = None + hamiltonian: Optional[HamiltonianData] = None + density_matrix: Optional[DensityMatrixData] = None + + def summary(self) -> str: + """Return a summary string of the SCF result.""" + status = "converged" if self.converged else "not converged" + return ( + f"SCF Result: {status}\n" + f" Iterations: {self.niter}\n" + f" Final drho: {self.drho:.2e}\n" + f" Total energy: {self.energy.etot:.8f} Ry " + f"({self.energy.etot * 13.6057:.8f} eV)" + ) diff --git a/python/pyabacus/src/pyabacus/esolver/workflow.py b/python/pyabacus/src/pyabacus/esolver/workflow.py new file mode 100644 index 0000000000..4e4748f6ca --- /dev/null +++ b/python/pyabacus/src/pyabacus/esolver/workflow.py @@ -0,0 +1,498 @@ +""" +High-level workflow interface for LCAO calculations. + +This module provides a Pythonic interface for controlling LCAO calculations +with support for callbacks and breakpoints. +""" + +from typing import Callable, Dict, List, Optional, Any +import numpy as np + +from .data_types import ( + ChargeData, + EnergyData, + HamiltonianData, + DensityMatrixData, + SCFResult, +) + + +class LCAOWorkflow: + """ + High-level workflow wrapper for LCAO calculations. + + This class provides a Pythonic interface for controlling LCAO calculations + with support for callbacks at various stages of the SCF loop. + + Parameters + ---------- + input_dir : str + Directory containing INPUT, STRU, and other input files + gamma_only : bool, optional + Whether to use gamma-only calculation (default: True) + + Example + ------- + >>> workflow = LCAOWorkflow("./") + >>> workflow.initialize() + >>> + >>> # Register callback for breakpoint before after_scf + >>> def inspect_state(wf): + ... print(f"Energy: {wf.energy.etot}") + ... np.save("charge.npy", wf.charge.rho) + >>> + >>> workflow.register_callback('before_after_scf', inspect_state) + >>> result = workflow.run_scf(max_iter=100) + >>> print(result.summary()) + """ + + # Event names for callbacks + EVENTS = [ + 'before_scf', # Called after before_scf() + 'after_iter', # Called after each SCF iteration + 'before_after_scf', # Called before after_scf() - main breakpoint + 'after_scf', # Called after after_scf() + ] + + def __init__(self, input_dir: str, gamma_only: bool = True): + """ + Initialize LCAOWorkflow. + + Parameters + ---------- + input_dir : str + Directory containing input files + gamma_only : bool + Use gamma-only calculation if True, multi-k if False + """ + self._input_dir = input_dir + self._gamma_only = gamma_only + self._esolver = None + self._initialized = False + self._scf_running = False + + # Callback registry + self._callbacks: Dict[str, List[Callable]] = { + event: [] for event in self.EVENTS + } + + def initialize(self) -> None: + """ + Initialize the calculation. + + This must be called before running any SCF calculations. + """ + # Import the appropriate ESolver class + try: + if self._gamma_only: + from ._esolver_pack import ESolverLCAO_gamma + self._esolver = ESolverLCAO_gamma() + else: + from ._esolver_pack import ESolverLCAO_multi_k + self._esolver = ESolverLCAO_multi_k() + except ImportError as e: + raise ImportError( + f"Could not import ESolver bindings: {e}. " + "Make sure pyabacus is properly installed with ESolver support." + ) from e + + self._esolver.initialize(self._input_dir) + self._esolver.before_all_runners() + self._initialized = True + + def register_callback(self, event: str, callback: Callable[['LCAOWorkflow'], None]) -> None: + """ + Register a callback function for a specific event. + + Parameters + ---------- + event : str + Event name. One of: 'before_scf', 'after_iter', 'before_after_scf', 'after_scf' + callback : Callable[[LCAOWorkflow], None] + Callback function that takes the workflow instance as argument. + For 'after_iter', the callback receives (workflow, iter_num). + + Raises + ------ + ValueError + If event name is not recognized + """ + if event not in self.EVENTS: + raise ValueError( + f"Unknown event '{event}'. Valid events: {self.EVENTS}" + ) + self._callbacks[event].append(callback) + + def unregister_callback(self, event: str, callback: Callable) -> bool: + """ + Unregister a callback function. + + Parameters + ---------- + event : str + Event name + callback : Callable + Callback function to remove + + Returns + ------- + bool + True if callback was found and removed, False otherwise + """ + if event in self._callbacks and callback in self._callbacks[event]: + self._callbacks[event].remove(callback) + return True + return False + + def clear_callbacks(self, event: Optional[str] = None) -> None: + """ + Clear all callbacks for an event, or all events if event is None. + + Parameters + ---------- + event : str, optional + Event name. If None, clears all callbacks. + """ + if event is None: + for e in self.EVENTS: + self._callbacks[e].clear() + elif event in self._callbacks: + self._callbacks[event].clear() + + def _fire_callbacks(self, event: str, *args, **kwargs) -> None: + """Fire all callbacks for an event.""" + for callback in self._callbacks[event]: + callback(self, *args, **kwargs) + + def run_scf( + self, + max_iter: int = 100, + istep: int = 0, + callback: Optional[Callable[['LCAOWorkflow', int], None]] = None + ) -> SCFResult: + """ + Run SCF calculation with callback support. + + Parameters + ---------- + max_iter : int + Maximum number of SCF iterations + istep : int + Ion step index (for MD/relaxation) + callback : Callable, optional + Additional callback called after each iteration. + Receives (workflow, iter_num) as arguments. + + Returns + ------- + SCFResult + Result of the SCF calculation + + Raises + ------ + RuntimeError + If workflow is not initialized + """ + if not self._initialized: + raise RuntimeError("Workflow not initialized. Call initialize() first.") + + self._scf_running = True + + # before_scf + self._esolver.before_scf(istep) + self._fire_callbacks('before_scf') + + # SCF loop + for iter_num in range(1, max_iter + 1): + self._esolver.run_scf_iteration(iter_num) + + # Fire after_iter callbacks + self._fire_callbacks('after_iter', iter_num) + + # Call user-provided callback + if callback is not None: + callback(self, iter_num) + + # Check convergence + if self._esolver.is_converged(): + break + + # Breakpoint before after_scf - this is the main inspection point + self._fire_callbacks('before_after_scf') + + # Collect result before after_scf + result = self._collect_result() + + # after_scf + self._esolver.after_scf(istep) + self._fire_callbacks('after_scf') + + self._scf_running = False + + return result + + def run_scf_step(self, iter_num: int) -> None: + """ + Run a single SCF iteration. + + This is useful for manual control of the SCF loop. + + Parameters + ---------- + iter_num : int + Iteration number (1-based) + """ + if not self._scf_running: + raise RuntimeError( + "SCF not started. Call before_scf() first or use run_scf()." + ) + self._esolver.run_scf_iteration(iter_num) + + def before_scf(self, istep: int = 0) -> None: + """ + Prepare for SCF calculation. + + Call this before manually running SCF iterations. + + Parameters + ---------- + istep : int + Ion step index + """ + if not self._initialized: + raise RuntimeError("Workflow not initialized. Call initialize() first.") + self._esolver.before_scf(istep) + self._scf_running = True + self._fire_callbacks('before_scf') + + def after_scf(self, istep: int = 0) -> None: + """ + Finalize SCF calculation. + + Call this after manually running SCF iterations. + + Parameters + ---------- + istep : int + Ion step index + """ + self._fire_callbacks('before_after_scf') + self._esolver.after_scf(istep) + self._fire_callbacks('after_scf') + self._scf_running = False + + def _collect_result(self) -> SCFResult: + """Collect SCF result from current state.""" + return SCFResult( + converged=self._esolver.is_converged(), + niter=self._esolver.niter, + drho=self._esolver.drho, + energy=self.energy, + charge=self.charge, + ) + + # ==================== Properties for data access ==================== + + @property + def charge(self) -> ChargeData: + """ + Get current charge density. + + Returns + ------- + ChargeData + Charge density data container + """ + accessor = self._esolver.get_charge() + if not accessor.is_valid(): + return ChargeData(rho=np.array([]), nspin=0, nrxx=0) + + return ChargeData( + rho=accessor.get_rho(), + nspin=accessor.nspin, + nrxx=accessor.nrxx, + ) + + @property + def energy(self) -> EnergyData: + """ + Get current energy data. + + Returns + ------- + EnergyData + Energy data container with all energy components + """ + accessor = self._esolver.get_energy() + return EnergyData( + etot=accessor.etot, + eband=accessor.eband, + hartree_energy=accessor.hartree_energy, + etxc=accessor.etxc, + ewald_energy=accessor.ewald_energy, + demet=accessor.demet, + exx=accessor.exx, + evdw=accessor.evdw, + ) + + @property + def hamiltonian(self) -> HamiltonianData: + """ + Get current Hamiltonian matrices. + + Returns + ------- + HamiltonianData + Hamiltonian data container with H(k), S(k), H(R), S(R) + """ + accessor = self._esolver.get_hamiltonian() + if not accessor.is_valid(): + return HamiltonianData() + + nks = accessor.nks + Hk = [accessor.get_Hk(ik) for ik in range(nks)] + Sk = [accessor.get_Sk(ik) for ik in range(nks)] + + return HamiltonianData( + Hk=Hk, + Sk=Sk, + HR=accessor.get_HR(), + SR=accessor.get_SR(), + nbasis=accessor.nbasis, + nks=nks, + ) + + @property + def density_matrix(self) -> DensityMatrixData: + """ + Get current density matrix. + + Returns + ------- + DensityMatrixData + Density matrix data container with DM(k) and DM(R) + """ + accessor = self._esolver.get_density_matrix() + if not accessor.is_valid(): + return DensityMatrixData() + + nks = accessor.nks + DMK = [accessor.get_DMK(ik) for ik in range(nks)] + + return DensityMatrixData( + DMK=DMK, + DMR=accessor.get_DMR(), + nks=nks, + nrow=accessor.nrow, + ncol=accessor.ncol, + ) + + @property + def is_converged(self) -> bool: + """Check if SCF is converged.""" + return self._esolver.is_converged() + + @property + def niter(self) -> int: + """Get current iteration number.""" + return self._esolver.niter + + @property + def drho(self) -> float: + """Get current charge density difference.""" + return self._esolver.drho + + @property + def nks(self) -> int: + """Get number of k-points.""" + return self._esolver.nks + + @property + def nbasis(self) -> int: + """Get number of basis functions.""" + return self._esolver.nbasis + + @property + def nbands(self) -> int: + """Get number of bands.""" + return self._esolver.nbands + + @property + def nspin(self) -> int: + """Get number of spin channels.""" + return self._esolver.nspin + + def get_psi(self, ik: int) -> np.ndarray: + """ + Get wave function coefficients for k-point ik. + + Parameters + ---------- + ik : int + K-point index + + Returns + ------- + np.ndarray + Wave function coefficients with shape (nbands, nbasis) + """ + return self._esolver.get_psi(ik) + + def get_eigenvalues(self, ik: int) -> np.ndarray: + """ + Get eigenvalues for k-point ik. + + Parameters + ---------- + ik : int + K-point index + + Returns + ------- + np.ndarray + Eigenvalues with shape (nbands,) + """ + return self._esolver.get_eigenvalues(ik) + + def get_occupations(self, ik: int) -> np.ndarray: + """ + Get occupation numbers for k-point ik. + + Parameters + ---------- + ik : int + K-point index + + Returns + ------- + np.ndarray + Occupation numbers with shape (nbands,) + """ + return self._esolver.get_occupations(ik) + + def get_kvec(self, ik: int) -> np.ndarray: + """ + Get k-vector in direct coordinates. + + Parameters + ---------- + ik : int + K-point index + + Returns + ------- + np.ndarray + K-vector with shape (3,) + """ + return self._esolver.get_kvec_d(ik) + + def get_kweights(self) -> np.ndarray: + """ + Get k-point weights. + + Returns + ------- + np.ndarray + K-point weights with shape (nks,) + """ + return self._esolver.get_wk() diff --git a/python/pyabacus/src/pyabacus/hsolver/_hsolver.py b/python/pyabacus/src/pyabacus/hsolver/_hsolver.py index 7c60ce538c..76001720b4 100644 --- a/python/pyabacus/src/pyabacus/hsolver/_hsolver.py +++ b/python/pyabacus/src/pyabacus/hsolver/_hsolver.py @@ -9,7 +9,15 @@ from typing import Tuple, List, Union, Callable from ._hsolver_pack import diag_comm_info as _diag_comm_info -from ._hsolver_pack import diago_dav_subspace, diago_david, diago_cg +from ._hsolver_pack import diago_dav_subspace, diago_david + +# diago_cg requires ATen support, which may not be available +try: + from ._hsolver_pack import diago_cg + _HAS_DIAGO_CG = True +except ImportError: + _HAS_DIAGO_CG = False + diago_cg = None class diag_comm_info(_diag_comm_info): def __init__(self, rank: int, nproc: int): @@ -196,6 +204,10 @@ def davidson( return e, v +def cg_available() -> bool: + """Check if the CG diagonalizer is available (requires ATen support).""" + return _HAS_DIAGO_CG + def cg( mvv_op: Callable[[NDArray[np.complex128]], NDArray[np.complex128]], init_v: NDArray[np.complex128], @@ -248,7 +260,10 @@ def cg( """ if not callable(mvv_op): raise TypeError("mvv_op must be a callable object.") - + + if not _HAS_DIAGO_CG: + raise RuntimeError("CG diagonalizer is not available. It requires ATen support.") + if init_v.ndim != 1 or init_v.dtype != np.complex128: # the shape of init_v is (num_eigs, dim) = (dim, num_eigs).T if init_v.ndim == 2: diff --git a/python/pyabacus/src/pyabacus/io/stru.py b/python/pyabacus/src/pyabacus/io/stru.py index 1b337e74a7..0327898fc4 100644 --- a/python/pyabacus/src/pyabacus/io/stru.py +++ b/python/pyabacus/src/pyabacus/io/stru.py @@ -107,6 +107,7 @@ def read_stru(fpath: str) -> Dict[str, Any]: """Read an ABACUS STRU file and return its content as a dictionary.""" block_title = ['ATOMIC_SPECIES', 'NUMERICAL_ORBITAL', + 'NUMERICAL_DESCRIPTOR', 'LATTICE_CONSTANT', 'LATTICE_PARAMETER', 'LATTICE_VECTORS', @@ -144,6 +145,10 @@ def _trim(line): for i, s in enumerate(stru['species']): s['orb_file'] = blocks['NUMERICAL_ORBITAL'][i].strip() + #============ NUMERICAL_DESCRIPTOR ============ + if 'NUMERICAL_DESCRIPTOR' in blocks: + stru['desc'] = blocks['NUMERICAL_DESCRIPTOR'][0].strip() + #============ ATOMIC_POSITIONS ============ stru['coord_type'] = blocks['ATOMIC_POSITIONS'][0] index = {s['symbol']: i for i, s in enumerate(stru['species'])} diff --git a/python/pyabacus/src/utils/pybind_utils.h b/python/pyabacus/src/utils/pybind_utils.h new file mode 100644 index 0000000000..1fc24fbf2b --- /dev/null +++ b/python/pyabacus/src/utils/pybind_utils.h @@ -0,0 +1,522 @@ +/** + * @file pybind_utils.h + * @brief Utility functions for pybind11 array operations in PyABACUS + * + * This header provides common utilities for: + * - Array validation (dimension, size checks) + * - Array pointer access + * - Array conversion (copy and zero-copy views) + * - Safe Python function calls + * - Buffer helper class + */ + +#ifndef PYABACUS_UTILS_PYBIND_UTILS_H +#define PYABACUS_UTILS_PYBIND_UTILS_H + +#include +#include +#include + +#include +#include +#include +#include +#include +#include + +namespace py = pybind11; + +namespace pyabacus { +namespace utils { + +// ============================================================================ +// Array Validation Functions +// ============================================================================ + +/** + * @brief Check that a numpy array is 1-dimensional + * @param arr The numpy array to check + * @param name Name of the array for error messages + * @throws std::runtime_error if array is not 1D + */ +template +void check_1d_array(const py::array_t& arr, const std::string& name = "array") +{ + py::buffer_info info = arr.request(); + if (info.ndim != 1) + { + throw std::runtime_error(name + " must be 1-dimensional, got " + + std::to_string(info.ndim) + " dimensions"); + } +} + +/** + * @brief Check that a numpy array is 2-dimensional + * @param arr The numpy array to check + * @param name Name of the array for error messages + * @throws std::runtime_error if array is not 2D + */ +template +void check_2d_array(const py::array_t& arr, const std::string& name = "array") +{ + py::buffer_info info = arr.request(); + if (info.ndim != 2) + { + throw std::runtime_error(name + " must be 2-dimensional, got " + + std::to_string(info.ndim) + " dimensions"); + } +} + +/** + * @brief Check that a numpy array has the expected size + * @param arr The numpy array to check + * @param expected_size Expected total number of elements + * @param name Name of the array for error messages + * @throws std::runtime_error if size doesn't match + */ +template +void check_array_size(const py::array_t& arr, size_t expected_size, + const std::string& name = "array") +{ + if (static_cast(arr.size()) != expected_size) + { + throw std::runtime_error(name + " must have size " + + std::to_string(expected_size) + ", got " + + std::to_string(arr.size())); + } +} + +/** + * @brief Check that a numpy array has the expected shape + * @param arr The numpy array to check + * @param expected_shape Expected shape as vector + * @param name Name of the array for error messages + * @throws std::runtime_error if shape doesn't match + */ +template +void check_array_shape(const py::array_t& arr, + const std::vector& expected_shape, + const std::string& name = "array") +{ + py::buffer_info info = arr.request(); + if (info.ndim != static_cast(expected_shape.size())) + { + throw std::runtime_error(name + " has wrong number of dimensions"); + } + for (size_t i = 0; i < expected_shape.size(); ++i) + { + if (info.shape[i] != expected_shape[i]) + { + throw std::runtime_error(name + " has wrong shape at dimension " + + std::to_string(i)); + } + } +} + +/** + * @brief Check that two arrays have the same size + * @param arr1 First array + * @param arr2 Second array + * @param name1 Name of first array + * @param name2 Name of second array + * @throws std::runtime_error if sizes don't match + */ +template +void check_same_size(const py::array_t& arr1, const py::array_t& arr2, + const std::string& name1 = "array1", + const std::string& name2 = "array2") +{ + if (arr1.size() != arr2.size()) + { + throw std::runtime_error(name1 + " and " + name2 + + " must have the same size"); + } +} + +// ============================================================================ +// Array Pointer Access +// ============================================================================ + +/** + * @brief Get mutable pointer to array data + * @param arr The numpy array + * @return Pointer to the array data + */ +template +T* get_array_ptr(py::array_t& arr) +{ + py::buffer_info info = arr.request(); + return static_cast(info.ptr); +} + +/** + * @brief Get const pointer to array data + * @param arr The numpy array + * @return Const pointer to the array data + */ +template +const T* get_array_ptr(const py::array_t& arr) +{ + py::buffer_info info = arr.request(); + return static_cast(info.ptr); +} + +/** + * @brief Get pointer to array data with 1D validation + * @param arr The numpy array + * @param name Name for error messages + * @return Pointer to the array data + */ +template +T* get_1d_array_ptr(py::array_t& arr, const std::string& name = "array") +{ + check_1d_array(arr, name); + return get_array_ptr(arr); +} + +/** + * @brief Get const pointer to array data with 1D validation + * @param arr The numpy array + * @param name Name for error messages + * @return Const pointer to the array data + */ +template +const T* get_1d_array_ptr(const py::array_t& arr, const std::string& name = "array") +{ + check_1d_array(arr, name); + return get_array_ptr(arr); +} + +// ============================================================================ +// Array Conversion (Copy) +// ============================================================================ + +/** + * @brief Create numpy array from std::vector (copy) + * @param vec Source vector + * @return New numpy array with copied data + */ +template +py::array_t numpy_from_vector_copy(const std::vector& vec) +{ + py::array_t result(vec.size()); + std::memcpy(result.mutable_data(), vec.data(), vec.size() * sizeof(T)); + return result; +} + +/** + * @brief Create 1D numpy array from raw pointer (copy) + * @param ptr Source pointer + * @param size Number of elements + * @return New numpy array with copied data + */ +template +py::array_t numpy_from_ptr_copy(const T* ptr, size_t size) +{ + py::array_t result(size); + std::memcpy(result.mutable_data(), ptr, size * sizeof(T)); + return result; +} + +/** + * @brief Create 2D numpy array from raw pointer (copy, row-major) + * @param ptr Source pointer + * @param nrow Number of rows + * @param ncol Number of columns + * @return New numpy array with copied data + */ +template +py::array_t numpy_from_ptr_copy_2d(const T* ptr, size_t nrow, size_t ncol) +{ + std::vector shape = {static_cast(nrow), + static_cast(ncol)}; + py::array_t result(shape); + std::memcpy(result.mutable_data(), ptr, nrow * ncol * sizeof(T)); + return result; +} + +/** + * @brief Create numpy array with specified shape from raw pointer (copy) + * @param ptr Source pointer + * @param shape Shape of the output array + * @return New numpy array with copied data + */ +template +py::array_t numpy_from_ptr_copy_nd(const T* ptr, const std::vector& shape) +{ + py::array_t result(shape); + size_t total_size = 1; + for (auto dim : shape) + { + total_size *= static_cast(dim); + } + std::memcpy(result.mutable_data(), ptr, total_size * sizeof(T)); + return result; +} + +// ============================================================================ +// Zero-Copy Views with Lifetime Management +// ============================================================================ + +/** + * @brief Create numpy array view with keepalive (zero-copy) + * + * Creates a numpy array that references existing memory without copying. + * The owner_ptr shared_ptr ensures the underlying data stays alive. + * + * @param ptr Pointer to the data + * @param shape Shape of the array + * @param owner_ptr Shared pointer to the owner object (keeps data alive) + * @return Numpy array view + */ +template +py::array_t numpy_view_with_keepalive(T* ptr, + const std::vector& shape, + std::shared_ptr owner_ptr) +{ + // Calculate strides for C-contiguous array + std::vector strides(shape.size()); + ssize_t stride = sizeof(T); + for (int i = static_cast(shape.size()) - 1; i >= 0; --i) + { + strides[i] = stride; + stride *= shape[i]; + } + + // Create capsule to prevent deallocation + py::capsule free_when_done(owner_ptr.get(), [](void*) { + // The shared_ptr prevents deallocation, capsule just holds reference + }); + + return py::array_t(shape, strides, ptr, free_when_done); +} + +/** + * @brief Create 1D numpy array view (zero-copy, no ownership management) + * + * WARNING: Caller must ensure the data outlives the returned array! + * + * @param ptr Pointer to the data + * @param size Number of elements + * @return Numpy array view + */ +template +py::array_t numpy_view_1d(T* ptr, size_t size) +{ + return py::array_t({static_cast(size)}, + {sizeof(T)}, + ptr, + py::none()); +} + +/** + * @brief Create 2D numpy array view (zero-copy, no ownership management) + * + * WARNING: Caller must ensure the data outlives the returned array! + * + * @param ptr Pointer to the data + * @param nrow Number of rows + * @param ncol Number of columns + * @return Numpy array view (row-major) + */ +template +py::array_t numpy_view_2d(T* ptr, size_t nrow, size_t ncol) +{ + return py::array_t( + {static_cast(nrow), static_cast(ncol)}, + {static_cast(ncol * sizeof(T)), sizeof(T)}, + ptr, + py::none() + ); +} + +// ============================================================================ +// Safe Python Function Calls +// ============================================================================ + +/** + * @brief Call a Python function safely with exception handling + * + * Wraps Python function calls to provide better error messages + * and handle GIL properly. + * + * @param func Python function to call + * @param args Arguments to pass to the function + * @return Return value from the function + */ +template +Ret call_python_safe(const py::function& func, Args&&... args) +{ + try + { + return func(std::forward(args)...).template cast(); + } + catch (const py::error_already_set& e) + { + throw std::runtime_error(std::string("Python callback error: ") + e.what()); + } + catch (const py::cast_error& e) + { + throw std::runtime_error(std::string("Python return type error: ") + e.what()); + } +} + +/** + * @brief Call a Python function that returns void + * @param func Python function to call + * @param args Arguments to pass to the function + */ +template +void call_python_safe_void(const py::function& func, Args&&... args) +{ + try + { + func(std::forward(args)...); + } + catch (const py::error_already_set& e) + { + throw std::runtime_error(std::string("Python callback error: ") + e.what()); + } +} + +// ============================================================================ +// Buffer Helper Class +// ============================================================================ + +/** + * @brief Helper class for working with numpy buffer info + * + * Provides convenient access to buffer properties and validation methods. + */ +template +struct BufferHelper +{ + py::buffer_info info; + T* ptr; + size_t size; + + /** + * @brief Construct from numpy array + * @param arr The numpy array + */ + explicit BufferHelper(py::array_t& arr) + : info(arr.request()) + , ptr(static_cast(info.ptr)) + , size(static_cast(arr.size())) + { + } + + /** + * @brief Construct from const numpy array + * @param arr The numpy array + */ + explicit BufferHelper(const py::array_t& arr) + : info(arr.request()) + , ptr(static_cast(info.ptr)) + , size(static_cast(arr.size())) + { + } + + /** + * @brief Require array to be 1-dimensional + * @param name Name for error messages + * @throws std::runtime_error if not 1D + */ + void require_1d(const std::string& name = "array") const + { + if (info.ndim != 1) + { + throw std::runtime_error(name + " must be 1-dimensional"); + } + } + + /** + * @brief Require array to be 2-dimensional + * @param name Name for error messages + * @throws std::runtime_error if not 2D + */ + void require_2d(const std::string& name = "array") const + { + if (info.ndim != 2) + { + throw std::runtime_error(name + " must be 2-dimensional"); + } + } + + /** + * @brief Require array to have specific size + * @param expected Expected size + * @param name Name for error messages + * @throws std::runtime_error if size doesn't match + */ + void require_size(size_t expected, const std::string& name = "array") const + { + if (size != expected) + { + throw std::runtime_error(name + " must have size " + + std::to_string(expected) + ", got " + + std::to_string(size)); + } + } + + /** + * @brief Require array to have specific shape + * @param expected_shape Expected shape + * @param name Name for error messages + * @throws std::runtime_error if shape doesn't match + */ + void require_shape(const std::vector& expected_shape, + const std::string& name = "array") const + { + if (info.ndim != static_cast(expected_shape.size())) + { + throw std::runtime_error(name + " has wrong number of dimensions"); + } + for (size_t i = 0; i < expected_shape.size(); ++i) + { + if (info.shape[i] != expected_shape[i]) + { + throw std::runtime_error(name + " has wrong shape at dimension " + + std::to_string(i)); + } + } + } + + /** + * @brief Get number of dimensions + * @return Number of dimensions + */ + ssize_t ndim() const { return info.ndim; } + + /** + * @brief Get shape at dimension i + * @param i Dimension index + * @return Size at dimension i + */ + ssize_t shape(size_t i) const { return info.shape[i]; } + + /** + * @brief Get number of rows (for 2D arrays) + * @return Number of rows + */ + ssize_t nrow() const { return info.shape[0]; } + + /** + * @brief Get number of columns (for 2D arrays) + * @return Number of columns + */ + ssize_t ncol() const { return info.shape[1]; } +}; + +// ============================================================================ +// Convenience Type Aliases +// ============================================================================ + +using DoubleBuffer = BufferHelper; +using ComplexBuffer = BufferHelper>; +using IntBuffer = BufferHelper; + +} // namespace utils +} // namespace pyabacus + +#endif // PYABACUS_UTILS_PYBIND_UTILS_H diff --git a/python/pyabacus/tests/test_driver.py b/python/pyabacus/tests/test_driver.py new file mode 100644 index 0000000000..b263933833 --- /dev/null +++ b/python/pyabacus/tests/test_driver.py @@ -0,0 +1,586 @@ +""" +Unit tests for PyABACUS driver module. + +This module contains tests for the abacus() function and related classes. +""" + +import pytest +import numpy as np +from pathlib import Path +from unittest.mock import Mock, patch, MagicMock +import tempfile +import os + + +class TestCalculationResult: + """Tests for CalculationResult dataclass.""" + + def test_default_values(self): + """Test default initialization.""" + from pyabacus.driver.runner import CalculationResult + + result = CalculationResult() + assert result.converged is False + assert result.niter == 0 + assert result.etot == 0.0 + assert result.forces is None + assert result.stress is None + + def test_energy_conversion(self): + """Test energy unit conversion.""" + from pyabacus.driver.runner import CalculationResult + + result = CalculationResult(etot=-10.0) + # etot is now in eV, etot_ev is the same value for compatibility + assert result.etot_ev == pytest.approx(-10.0) + + def test_energies_dict(self): + """Test energies dictionary property.""" + from pyabacus.driver.runner import CalculationResult + + result = CalculationResult( + etot=-10.0, + eband=-5.0, + hartree_energy=2.0, + etxc=-3.0, + ewald_energy=-4.0, + ) + + energies = result.energies + assert 'etot' in energies + assert energies['etot'] == -10.0 # All in eV now + assert energies['eband'] == -5.0 + + def test_forces_conversion(self): + """Test force unit conversion.""" + from pyabacus.driver.runner import CalculationResult + + # Forces are now stored in eV/Angstrom directly + forces = np.array([[1.0, 0.0, 0.0], [0.0, 1.0, 0.0]]) + result = CalculationResult(forces=forces) + + # forces_ev_ang is now the same as forces (for compatibility) + forces_ev_ang = result.forces_ev_ang + assert forces_ev_ang is not None + assert forces_ev_ang[0, 0] == pytest.approx(1.0) + + def test_forces_none(self): + """Test forces_ev_ang when forces is None.""" + from pyabacus.driver.runner import CalculationResult + + result = CalculationResult() + assert result.forces_ev_ang is None + assert result.has_forces is False + + def test_has_forces(self): + """Test has_forces property.""" + from pyabacus.driver.runner import CalculationResult + + result = CalculationResult() + assert result.has_forces is False + + result.forces = np.array([[1.0, 0.0, 0.0]]) + assert result.has_forces is True + + def test_has_stress(self): + """Test has_stress property.""" + from pyabacus.driver.runner import CalculationResult + + result = CalculationResult() + assert result.has_stress is False + + result.stress = np.eye(3) + assert result.has_stress is True + + def test_summary(self): + """Test summary string generation.""" + from pyabacus.driver.runner import CalculationResult + + result = CalculationResult( + converged=True, + niter=10, + drho=1e-8, + etot=-10.0, + nat=2, + ntype=1, + nbands=8, + nks=4, + ) + + summary = result.summary() + assert "Converged: Yes" in summary + assert "SCF iterations: 10" in summary + assert "Total energy:" in summary + assert "Atoms: 2" in summary + + def test_repr(self): + """Test string representation.""" + from pyabacus.driver.runner import CalculationResult + + result = CalculationResult(converged=True, etot=-10.0) + repr_str = repr(result) + assert "converged=True" in repr_str + assert "etot=" in repr_str + + +class TestAbacusFunction: + """Tests for the abacus() function.""" + + def test_file_not_found_error_nonexistent_dir(self): + """Test FileNotFoundError for missing input directory.""" + from pyabacus.driver.runner import abacus + + with pytest.raises(FileNotFoundError, match="Input directory not found"): + abacus("./nonexistent/") + + def test_file_not_found_error(self): + """Test FileNotFoundError for missing input directory.""" + from pyabacus.driver.runner import abacus + + with pytest.raises(FileNotFoundError, match="Input directory not found"): + abacus("/nonexistent/path/that/does/not/exist/") + + def test_input_file_not_found(self): + """Test FileNotFoundError for missing INPUT file.""" + from pyabacus.driver.runner import abacus + + with tempfile.TemporaryDirectory() as tmpdir: + mock_driver_module = MagicMock() + with patch.dict('sys.modules', {'pyabacus.driver._driver_pack': mock_driver_module}): + with pytest.raises(FileNotFoundError, match="INPUT file not found"): + abacus(tmpdir) + + def test_default_input_dir(self): + """Test that default input_dir is current directory.""" + from pyabacus.driver.runner import abacus + + # Create a mock driver + mock_driver = MagicMock() + mock_result = MagicMock() + mock_result.converged = True + mock_result.niter = 10 + mock_result.drho = 1e-8 + mock_result.etot = -10.0 + mock_result.eband = -5.0 + mock_result.hartree_energy = 2.0 + mock_result.etxc = -3.0 + mock_result.ewald_energy = -4.0 + mock_result.demet = 0.0 + mock_result.exx = 0.0 + mock_result.evdw = 0.0 + mock_result.fermi_energy = 5.0 + mock_result.bandgap = 1.0 + mock_result.nat = 2 + mock_result.ntype = 1 + mock_result.nbands = 8 + mock_result.nks = 4 + mock_result.has_forces = False + mock_result.has_stress = False + mock_driver.run.return_value = mock_result + + mock_driver_class = MagicMock(return_value=mock_driver) + mock_module = MagicMock() + mock_module.PyDriver = mock_driver_class + + with tempfile.TemporaryDirectory() as tmpdir: + # Create INPUT file + input_file = Path(tmpdir) / "INPUT" + input_file.write_text("INPUT_PARAMETERS\ncalculation scf\n") + + with patch.dict('sys.modules', {'pyabacus.driver._driver_pack': mock_module}): + # Change to temp directory and run + old_cwd = os.getcwd() + try: + os.chdir(tmpdir) + result = abacus() + assert result.converged is True + finally: + os.chdir(old_cwd) + + +class TestRunScf: + """Tests for run_scf convenience function.""" + + def test_run_scf_calls_abacus(self): + """Test that run_scf calls abacus with correct arguments.""" + from pyabacus.driver.runner import run_scf, abacus + + with patch('pyabacus.driver.runner.abacus') as mock_abacus: + mock_result = MagicMock() + mock_abacus.return_value = mock_result + + result = run_scf("./test_dir/", verbosity=0) + + mock_abacus.assert_called_once_with("./test_dir/", verbosity=0) + + +class TestRunRelax: + """Tests for run_relax convenience function.""" + + def test_run_relax_enables_forces(self): + """Test that run_relax enables force calculation by default.""" + from pyabacus.driver.runner import run_relax + + with patch('pyabacus.driver.runner.abacus') as mock_abacus: + mock_result = MagicMock() + mock_abacus.return_value = mock_result + + result = run_relax("./test_dir/") + + # Check that calculate_force=True was passed + call_kwargs = mock_abacus.call_args[1] + assert call_kwargs.get('calculate_force', False) is True + + +class TestDriverModule: + """Tests for the driver module initialization.""" + + def test_module_exports(self): + """Test that module exports expected symbols.""" + from pyabacus import driver + + assert hasattr(driver, 'abacus') + assert hasattr(driver, 'CalculationResult') + + def test_pyabacus_exports_abacus(self): + """Test that pyabacus exports abacus function.""" + import pyabacus + + # The abacus function should be accessible + assert 'abacus' in pyabacus.__all__ + assert 'CalculationResult' in pyabacus.__all__ + + +class TestIntegration: + """Integration tests (require actual ABACUS installation).""" + + @pytest.mark.skip(reason="Requires ABACUS installation and test data") + def test_si_scf(self): + """Test SCF calculation on Si.""" + from pyabacus import abacus + + result = abacus("./tests/integrate/101_PW_15_f_pseudopots/") + + assert result.converged + assert result.etot < 0 # Energy should be negative + assert result.nat > 0 + + @pytest.mark.skip(reason="Requires ABACUS installation and test data") + def test_si_forces(self): + """Test force calculation on Si.""" + from pyabacus import abacus + + result = abacus( + "./tests/integrate/101_PW_15_f_pseudopots/", + calculate_force=True, + ) + + assert result.converged + assert result.has_forces + assert result.forces.shape == (result.nat, 3) + + +class TestCalculationResultOutputTracking: + """Tests for CalculationResult output file tracking.""" + + def test_default_output_values(self): + """Test default output tracking values.""" + from pyabacus.driver.runner import CalculationResult + + result = CalculationResult() + assert result.output_dir == "" + assert result.log_file == "" + assert result.output_files == {} + assert result.has_output_dir is False + + def test_output_dir_set(self): + """Test output directory tracking.""" + from pyabacus.driver.runner import CalculationResult + + with tempfile.TemporaryDirectory() as tmpdir: + result = CalculationResult(output_dir=tmpdir) + assert result.output_dir == tmpdir + assert result.has_output_dir is True + + def test_output_dir_nonexistent(self): + """Test has_output_dir with non-existent directory.""" + from pyabacus.driver.runner import CalculationResult + + result = CalculationResult(output_dir="/nonexistent/path") + assert result.output_dir == "/nonexistent/path" + assert result.has_output_dir is False + + def test_output_files_dict(self): + """Test output files dictionary.""" + from pyabacus.driver.runner import CalculationResult + + output_files = { + "running_scf.log": "/path/to/OUT.ABACUS/running_scf.log", + "BANDS_1.dat": "/path/to/OUT.ABACUS/BANDS_1.dat", + } + result = CalculationResult(output_files=output_files) + + assert len(result.output_files) == 2 + assert "running_scf.log" in result.output_files + assert result.output_files["running_scf.log"] == "/path/to/OUT.ABACUS/running_scf.log" + + def test_get_output_file(self): + """Test get_output_file method.""" + from pyabacus.driver.runner import CalculationResult + + output_files = { + "running_scf.log": "/path/to/OUT.ABACUS/running_scf.log", + } + result = CalculationResult(output_files=output_files) + + assert result.get_output_file("running_scf.log") == "/path/to/OUT.ABACUS/running_scf.log" + assert result.get_output_file("nonexistent.dat") is None + + def test_list_output_files(self): + """Test list_output_files method.""" + from pyabacus.driver.runner import CalculationResult + + output_files = { + "running_scf.log": "/path/to/OUT.ABACUS/running_scf.log", + "BANDS_1.dat": "/path/to/OUT.ABACUS/BANDS_1.dat", + "CHARGE.cube": "/path/to/OUT.ABACUS/CHARGE.cube", + } + result = CalculationResult(output_files=output_files) + + file_list = result.list_output_files() + assert len(file_list) == 3 + assert "running_scf.log" in file_list + assert "BANDS_1.dat" in file_list + assert "CHARGE.cube" in file_list + + def test_summary_includes_output_info(self): + """Test that summary includes output tracking info.""" + from pyabacus.driver.runner import CalculationResult + + with tempfile.TemporaryDirectory() as tmpdir: + # Create a mock log file + log_file = os.path.join(tmpdir, "running_scf.log") + with open(log_file, 'w') as f: + f.write("test log") + + output_files = { + "running_scf.log": log_file, + "BANDS_1.dat": os.path.join(tmpdir, "BANDS_1.dat"), + } + + result = CalculationResult( + converged=True, + etot=-10.0, + output_dir=tmpdir, + log_file=log_file, + output_files=output_files, + ) + + summary = result.summary() + assert "Output:" in summary + assert "Directory:" in summary + assert tmpdir in summary + assert "Log file: running_scf.log" in summary + assert "2 output files" in summary + + def test_summary_without_output_info(self): + """Test that summary works without output tracking info.""" + from pyabacus.driver.runner import CalculationResult + + result = CalculationResult(converged=True, etot=-10.0) + summary = result.summary() + + # Output section is always present, but shows N/A when not set + assert "Output:" in summary + assert "Directory: N/A" in summary + assert "Log file: N/A" in summary + assert "0 output files" in summary + + +class TestCollectOutputFiles: + """Tests for _collect_output_files helper function.""" + + def test_collect_output_files(self): + """Test collecting output files from directory.""" + from pyabacus.driver.runner import _collect_output_files + + with tempfile.TemporaryDirectory() as tmpdir: + # Create some test files + files = ["running_scf.log", "BANDS_1.dat", "CHARGE.cube"] + for f in files: + Path(tmpdir, f).touch() + + # Create a subdirectory (should be ignored) + os.makedirs(os.path.join(tmpdir, "subdir")) + + output_files = _collect_output_files(tmpdir) + + assert len(output_files) == 3 + for f in files: + assert f in output_files + assert output_files[f] == os.path.join(tmpdir, f) + + def test_collect_output_files_empty_dir(self): + """Test collecting from empty directory.""" + from pyabacus.driver.runner import _collect_output_files + + with tempfile.TemporaryDirectory() as tmpdir: + output_files = _collect_output_files(tmpdir) + assert output_files == {} + + def test_collect_output_files_nonexistent(self): + """Test collecting from non-existent directory.""" + from pyabacus.driver.runner import _collect_output_files + + output_files = _collect_output_files("/nonexistent/path") + assert output_files == {} + + +class TestParseForces: + """Tests for _parse_forces_from_log helper function.""" + + def test_parse_forces_from_log(self): + """Test parsing forces from log file.""" + from pyabacus.driver.runner import _parse_forces_from_log + + with tempfile.TemporaryDirectory() as tmpdir: + log_file = os.path.join(tmpdir, "running_scf.log") + log_content = """ + TOTAL-FORCE (eV/Angstrom) + ------------------------------------------------------------------------------------ + atom x y z + Si1 0.00100000 0.00200000 0.00300000 + Si2 -0.00100000 -0.00200000 -0.00300000 + ------------------------------------------------------------------------------------ +""" + with open(log_file, 'w') as f: + f.write(log_content) + + forces = _parse_forces_from_log(log_file, 2) + assert forces is not None + assert forces.shape == (2, 3) + # Forces are now in eV/Angstrom directly (no conversion) + assert abs(forces[0, 0] - 0.001) < 1e-10 + assert abs(forces[0, 1] - 0.002) < 1e-10 + assert abs(forces[1, 0] - (-0.001)) < 1e-10 + + def test_parse_forces_no_forces(self): + """Test parsing when no forces in log.""" + from pyabacus.driver.runner import _parse_forces_from_log + + with tempfile.TemporaryDirectory() as tmpdir: + log_file = os.path.join(tmpdir, "running_scf.log") + with open(log_file, 'w') as f: + f.write("No forces here\n") + + forces = _parse_forces_from_log(log_file, 2) + assert forces is None + + def test_parse_forces_nonexistent_file(self): + """Test parsing from non-existent file.""" + from pyabacus.driver.runner import _parse_forces_from_log + + forces = _parse_forces_from_log("/nonexistent/file.log", 2) + assert forces is None + + +class TestParseStress: + """Tests for _parse_stress_from_log helper function.""" + + def test_parse_stress_from_log(self): + """Test parsing stress from log file.""" + from pyabacus.driver.runner import _parse_stress_from_log + + with tempfile.TemporaryDirectory() as tmpdir: + log_file = os.path.join(tmpdir, "running_scf.log") + log_content = """ + TOTAL-STRESS (KBAR) + ------------------------------------------------------------------------------------ + 1.23456789 0.00000000 0.00000000 + 0.00000000 1.23456789 0.00000000 + 0.00000000 0.00000000 1.23456789 + ------------------------------------------------------------------------------------ +""" + with open(log_file, 'w') as f: + f.write(log_content) + + stress = _parse_stress_from_log(log_file) + assert stress is not None + assert stress.shape == (3, 3) + assert abs(stress[0, 0] - 1.23456789) < 1e-6 + assert abs(stress[1, 1] - 1.23456789) < 1e-6 + + def test_parse_stress_no_stress(self): + """Test parsing when no stress in log.""" + from pyabacus.driver.runner import _parse_stress_from_log + + with tempfile.TemporaryDirectory() as tmpdir: + log_file = os.path.join(tmpdir, "running_scf.log") + with open(log_file, 'w') as f: + f.write("No stress here\n") + + stress = _parse_stress_from_log(log_file) + assert stress is None + + +class TestParallelParameters: + """Tests for nprocs and nthreads parameters.""" + + def test_abacus_accepts_parallel_params(self): + """Test that abacus() accepts nprocs and nthreads parameters.""" + from pyabacus.driver.runner import abacus + import inspect + + sig = inspect.signature(abacus) + params = sig.parameters + + assert 'nprocs' in params + assert 'nthreads' in params + assert params['nprocs'].default == 1 + assert params['nthreads'].default == 1 + + +# Fixtures for test data +@pytest.fixture +def mock_cpp_result(): + """Create a mock C++ CalculationResult.""" + result = MagicMock() + result.converged = True + result.niter = 15 + result.drho = 1e-9 + result.etot = -15.5 + result.eband = -8.0 + result.hartree_energy = 3.5 + result.etxc = -4.2 + result.ewald_energy = -6.8 + result.demet = 0.0 + result.exx = 0.0 + result.evdw = 0.0 + result.fermi_energy = 6.5 + result.bandgap = 1.2 + result.nat = 2 + result.ntype = 1 + result.nbands = 10 + result.nks = 8 + result.has_forces = True + result.has_stress = False + result.forces = np.array([[0.01, 0.02, 0.03], [-0.01, -0.02, -0.03]]) + return result + + +@pytest.fixture +def temp_input_dir(): + """Create a temporary directory with INPUT file.""" + with tempfile.TemporaryDirectory() as tmpdir: + input_file = Path(tmpdir) / "INPUT" + input_file.write_text("""INPUT_PARAMETERS +calculation scf +basis_type pw +ecutwfc 50 +scf_thr 1e-8 +""") + yield tmpdir + + +if __name__ == "__main__": + pytest.main([__file__, "-v"]) diff --git a/python/pyabacus/tests/test_hsolver.py b/python/pyabacus/tests/test_hsolver.py index 82b54c5a3a..07872076f3 100644 --- a/python/pyabacus/tests/test_hsolver.py +++ b/python/pyabacus/tests/test_hsolver.py @@ -32,26 +32,29 @@ def mm_op(x): args = (mm_op, v0, nbasis, nband, precond, 1e-12, 5000) else: raise ValueError(f"Method {method} not available") - + e, _ = algo(*args) - + return e def diag_eigsh(h_sparse, nband): e, _ = scipy.sparse.linalg.eigsh(h_sparse, k=nband, which='SA', maxiter=5000, tol=1e-12) return e +# Check if CG is available +_cg_available = hsolver.cg_available() + @pytest.mark.parametrize("method", [ ('dav_subspace'), ('davidson'), - ('cg') + pytest.param('cg', marks=pytest.mark.skipif(not _cg_available, reason="CG requires ATen support")) ]) def test_random_matrix_diag(method): np.random.seed(12) n = 500 h_sparse = np.random.rand(n,n) h_sparse = h_sparse + h_sparse.conj().T + np.diag(np.random.random(n))*10 - + e_pyabacus = diag_pyabacus(h_sparse, 8, method) e_scipy = diag_eigsh(h_sparse, 8) np.testing.assert_allclose(e_pyabacus, e_scipy, atol=1e-8) @@ -59,10 +62,10 @@ def test_random_matrix_diag(method): @pytest.mark.parametrize("file_name, nband, atol, method", [ ('./test_diag/Si2.mat', 16, 1e-8, 'dav_subspace'), ('./test_diag/Si2.mat', 16, 1e-8, 'davidson'), - ('./test_diag/Si2.mat', 16, 1e-8, 'cg'), + pytest.param('./test_diag/Si2.mat', 16, 1e-8, 'cg', marks=pytest.mark.skipif(not _cg_available, reason="CG requires ATen support")), ('./test_diag/Na5.mat', 16, 1e-8, 'dav_subspace'), ('./test_diag/Na5.mat', 16, 1e-8, 'davidson'), - ('./test_diag/Na5.mat', 16, 1e-8, 'cg'), + pytest.param('./test_diag/Na5.mat', 16, 1e-8, 'cg', marks=pytest.mark.skipif(not _cg_available, reason="CG requires ATen support")), ]) def test_diag(file_name, nband, atol, method): h_sparse = scipy.io.loadmat(file_name)['Problem']['A'][0, 0] diff --git a/python/pyabacus/tests/test_lifetime.py b/python/pyabacus/tests/test_lifetime.py new file mode 100644 index 0000000000..fcec2844ad --- /dev/null +++ b/python/pyabacus/tests/test_lifetime.py @@ -0,0 +1,169 @@ +from __future__ import annotations + +""" +Tests for memory lifetime safety of pyabacus bindings. + +These tests verify that numpy arrays returned from C++ objects +are safe to use even after the C++ object is destroyed (because +they are copies, not views). +""" + +import pytest +import numpy as np +from pyabacus import ModuleNAO as nao + + +def test_array_lifetime_after_object_deletion(): + """Test that arrays remain valid after C++ object deletion.""" + chi = nao.NumericalRadial() + + # Build the object + sz = 100 + dr = 0.1 + grid = np.array([i * dr for i in range(sz)], dtype=np.float64) + values = np.exp(-grid) + + chi.build( + l=0, + for_r_space=True, + ngrid=sz, + grid=grid, + value=values, + p=-1, + izeta=0, + symbol="Test", + itype=0, + init_sbt=True + ) + + # Get arrays + rgrid = chi.rgrid + rvalue = chi.rvalue + + # Save copies for comparison + rgrid_copy = rgrid.copy() + rvalue_copy = rvalue.copy() + + # Delete the C++ object + del chi + + # Arrays should still be valid and contain correct data + # (because they are copies, not views) + np.testing.assert_array_equal(rgrid, rgrid_copy) + np.testing.assert_array_equal(rvalue, rvalue_copy) + + +def test_array_modification_isolation(): + """Test that modifying returned arrays doesn't affect original data.""" + chi = nao.NumericalRadial() + + sz = 100 + dr = 0.1 + grid = np.array([i * dr for i in range(sz)], dtype=np.float64) + values = np.exp(-grid) + + chi.build( + l=0, + for_r_space=True, + ngrid=sz, + grid=grid, + value=values + ) + + # Get first array and modify it + rgrid1 = chi.rgrid + original_value = rgrid1[0] + rgrid1[0] = 999.0 + + # Get second array - should have original value + rgrid2 = chi.rgrid + assert rgrid2[0] == original_value, "Modification should not affect original data" + assert rgrid1[0] == 999.0, "Modified array should retain modification" + + +def test_multiple_array_accesses(): + """Test that multiple accesses return independent copies.""" + chi = nao.NumericalRadial() + + sz = 50 + dr = 0.2 + grid = np.array([i * dr for i in range(sz)], dtype=np.float64) + values = np.exp(-grid) + + chi.build( + l=1, + for_r_space=True, + ngrid=sz, + grid=grid, + value=values + ) + + # Get multiple arrays + arrays = [chi.rgrid for _ in range(5)] + + # Modify each differently + for i, arr in enumerate(arrays): + arr[0] = float(i) + + # Verify each has its own modification + for i, arr in enumerate(arrays): + assert arr[0] == float(i), f"Array {i} should have value {i}" + + +def test_radial_collection_array_lifetime(): + """Test array lifetime for RadialCollection objects.""" + orb_dir = '../../../tests/PP_ORB/' + file_list = [orb_dir + "C_gga_8au_100Ry_2s2p1d.orb"] + + try: + orb = nao.RadialCollection() + orb.build(1, file_list, 'o') + + # Get a NumericalRadial from the collection + nr = orb(0, 0, 0) + + # Get arrays from it + rgrid = nr.rgrid + rvalue = nr.rvalue + + # Save copies + rgrid_copy = rgrid.copy() + rvalue_copy = rvalue.copy() + + # Delete the collection (which owns the NumericalRadial) + del orb + + # Arrays should still be valid + np.testing.assert_array_equal(rgrid, rgrid_copy) + np.testing.assert_array_equal(rvalue, rvalue_copy) + except (FileNotFoundError, RuntimeError): + pytest.skip("Orbital files not available for testing") + + +def test_empty_array_handling(): + """Test handling of arrays when k-space is not initialized.""" + chi = nao.NumericalRadial() + + sz = 50 + dr = 0.2 + grid = np.array([i * dr for i in range(sz)], dtype=np.float64) + values = np.exp(-grid) + + chi.build( + l=0, + for_r_space=True, + ngrid=sz, + grid=grid, + value=values, + init_sbt=False # Don't initialize SBT, so k-space won't be set + ) + + # r-space should be valid + assert chi.nr == sz + rgrid = chi.rgrid + assert len(rgrid) == sz + + # k-space should be empty (nk == 0) + assert chi.nk == 0 + kgrid = chi.kgrid + assert len(kgrid) == 0 diff --git a/python/pyabacus/tests/test_m_nao.py b/python/pyabacus/tests/test_m_nao.py index d103c7fe2c..9a13d1b3fd 100644 --- a/python/pyabacus/tests/test_m_nao.py +++ b/python/pyabacus/tests/test_m_nao.py @@ -50,8 +50,8 @@ def test_rc(): assert orb.symbol(3) == 'Fe' assert orb.ntype == 4 - assert orb.lmax == 3 - assert orb.rcut_max == 10.0 + assert orb.lmax() == 3 + assert orb.rcut_max() == 10.0 assert orb.nzeta(0,0) == 2 assert orb.nzeta(1,0) == 2 @@ -85,7 +85,7 @@ def test_twocenterintegrator(): alpha.build(1, [file_list[0]]) dr = 0.01 # R spacing - rmax = max(orb.rcut_max, alpha.rcut_max) + rmax = max(orb.rcut_max(), alpha.rcut_max()) cutoff = 2.0 * rmax nr = int(rmax / dr) + 1 diff --git a/source/CMakeLists.txt b/source/CMakeLists.txt index 9d1ca2415a..6f127a1722 100644 --- a/source/CMakeLists.txt +++ b/source/CMakeLists.txt @@ -35,7 +35,7 @@ list(APPEND device_srcs source_pw/module_pwdft/kernels/meta_op.cpp source_pw/module_stodft/kernels/hpsi_norm_op.cpp source_basis/module_pw/kernels/pw_op.cpp - source_hsolver/kernels/dngvd_op.cpp + source_hsolver/kernels/hegvd_op.cpp source_hsolver/kernels/bpcg_kernel_op.cpp source_estate/kernels/elecstate_op.cpp @@ -43,6 +43,8 @@ list(APPEND device_srcs # source_psi/kernels/device.cpp source_base/module_device/device.cpp + source_base/module_device/device_helpers.cpp + source_base/module_device/output_device.cpp source_base/module_device/memory_op.cpp source_base/kernels/math_kernel_op.cpp source_base/kernels/math_kernel_op_vec.cpp @@ -69,7 +71,7 @@ if(USE_CUDA) source_pw/module_stodft/kernels/cuda/hpsi_norm_op.cu source_pw/module_pwdft/kernels/cuda/onsite_op.cu source_basis/module_pw/kernels/cuda/pw_op.cu - source_hsolver/kernels/cuda/dngvd_op.cu + source_hsolver/kernels/cuda/hegvd_op.cu source_hsolver/kernels/cuda/bpcg_kernel_op.cu source_estate/kernels/cuda/elecstate_op.cu @@ -80,6 +82,7 @@ if(USE_CUDA) source_pw/module_pwdft/kernels/cuda/stress_op.cu source_pw/module_pwdft/kernels/cuda/wf_op.cu source_pw/module_pwdft/kernels/cuda/vnl_op.cu + source_base/module_device/cuda_compat.cpp source_base/kernels/cuda/math_ylm_op.cu source_base/kernels/cuda/math_kernel_op.cu source_base/kernels/cuda/math_kernel_op_vec.cu @@ -100,7 +103,7 @@ if(USE_ROCM) source_pw/module_pwdft/kernels/rocm/onsite_op.hip.cu source_pw/module_stodft/kernels/rocm/hpsi_norm_op.hip.cu source_basis/module_pw/kernels/rocm/pw_op.hip.cu - source_hsolver/kernels/rocm/dngvd_op.hip.cu + source_hsolver/kernels/rocm/hegvd_op.hip.cu source_hsolver/kernels/rocm/bpcg_kernel_op.hip.cu source_estate/kernels/rocm/elecstate_op.hip.cu diff --git a/source/Makefile b/source/Makefile index 6d072ef714..5cc3ce9907 100644 --- a/source/Makefile +++ b/source/Makefile @@ -1,10 +1,17 @@ # This is the Makefile of ABACUS -include Makefile.vars +ABACUS_ROOT := $(dir $(firstword $(MAKEFILE_LIST))) + +BUILD_DIR ?= build +OBJ_DIR = $(BUILD_DIR)/obj +BIN_DIR = $(BUILD_DIR)/bin +BUILD_INFO_DIR = $(BUILD_DIR)/source_io + +include $(ABACUS_ROOT)Makefile.vars + #========================== # Compiler information #========================== - -INCLUDES = -I. -Isource_main -Isource_main/commands -Icommands -I../ -Isource_base/module_container +INCLUDES = -I$(ABACUS_ROOT) -I$(ABACUS_ROOT)source_main -I$(ABACUS_ROOT)source_main/commands -I$(ABACUS_ROOT)commands -I$(BUILD_INFO_DIR) -I$(ABACUS_ROOT)../ -I$(ABACUS_ROOT)source_base/module_container LIBS = -lm -lpthread OPTS = -std=c++14 -pedantic -m64 ${INCLUDES} @@ -21,9 +28,8 @@ ifeq ($(OPENMP), ON) else ELPA_NAME = elpa endif -OBJ_DIR = obj -BIN_DIR = ../bin -SOURCE_DIR = . + +SOURCE_DIR = $(ABACUS_ROOT) ifeq ($(findstring mpi, $(CXX)), mpi) # We do not support EXX in sequential version temporarily. HONG += -D__MPI -DUSE_CEREAL_SERIALIZATION @@ -186,7 +192,9 @@ ifdef PEXSI_DIR HONG += -D__PEXSI endif -include Makefile.Objects +include $(ABACUS_ROOT)Makefile.Objects +VPATH := $(patsubst ./%,$(ABACUS_ROOT)%,$(VPATH)) +HEADERS := $(patsubst %,$(ABACUS_ROOT)%,$(HEADERS)) #========================== # Optional HONG @@ -208,6 +216,44 @@ endif FP_OBJS=$(patsubst %.o, ${OBJ_DIR}/%.o, ${OBJS_ABACUS}) +###### START of ABACUS INFO PART ###### + +# Rule to generate the build_info.h file using the shell script. +# This rule is executed whenever build_info.h.in, the script, or any of the +# relevant Makefile variables change. +$(BUILD_INFO_DIR)/build_info.h:$(ABACUS_ROOT)source_io/build_info.h.in $(ABACUS_ROOT)../generate_build_info.sh + @echo "Generating build information header..." + @# Make sure directory is available + @mkdir -p $(dir $@) + @# Export all necessary Makefile variables as environment for the script + @export BUILD_TYPE="Release"; \ + if [ "$(DEBUG)" = "ON" ]; then export BUILD_TYPE="Debug"; export ENABLE_ASAN="yes"; else export ENABLE_ASAN="no"; fi; \ + export CXX="${CXX}"; \ + export CXXFLAGS="${OPTS} ${HONG}"; \ + export MKLROOT="${MKLROOT}"; \ + export ELPA_DIR="${ELPA_DIR}"; \ + export FFTW_DIR="${FFTW_DIR}"; \ + export CEREAL_DIR="${CEREAL_DIR}"; \ + export LIBXC_DIR="${LIBXC_DIR}"; \ + export LIBRI_DIR="${LIBRI_DIR}"; \ + export DeePMD_DIR="${DeePMD_DIR}"; \ + export TensorFlow_DIR="${TensorFlow_DIR}"; \ + export PEXSI_DIR="${PEXSI_DIR}"; \ + export ENABLE_MPI="no"; \ + if [ "$(MPI)" = "ON" ]; then export ENABLE_MPI="ON"; fi; \ + export USE_CUDA="no"; \ + if [ "$(GPU)" = "CUDA" ]; then export USE_CUDA="ON"; fi; \ + $(ABACUS_ROOT)../generate_build_info.sh $@ + @echo "Build information header generated." + + # Specific rule for parse_args.o to enforce dependency on build_info.h. + # This overrides the generic %.o:%.cpp rule for this specific file. +${OBJ_DIR}/parse_args.o: $(ABACUS_ROOT)source_io/parse_args.cpp $(BUILD_INFO_DIR)/build_info.h + @mkdir -p $(dir $@) + ${CXX} ${OPTS} ${OPTS_MPI} -c ${HONG} $< -o $@ + +###### END of ABACUS INFO PART ###### + #========================== # MAKING OPTIONS #========================== @@ -218,25 +264,26 @@ abacus: test: @ $(MAKE) abacus - @ cd ../tests/integrate/;sh Autotest.sh -a ../../../bin/ABACUS.mpi -n $(TESTNP) + @ cd $(ABACUS_ROOT)../tests/integrate/;sh Autotest.sh -a $(realpath $(BIN_DIR))/ABACUS.mpi -n $(TESTNP) pw $(BIN_DIR)/${VERSION}-PW.x: @ if [ ! -d $(BIN_DIR) ]; then mkdir $(BIN_DIR); fi - @ cd source_pw/module_pwdft; $(MAKE) CXX=${CXX} GPU=${GPU} DEBUG=$(DEBUG) FFTW_DIR=$(FFTW_DIR) OPENBLAS_LIB_DIR=$(OPENBLAS_LIB_DIR) ${PWTAG} - @ cp source_pw/module_pwdft/${VERSION}-PW.x $(BIN_DIR)/${VERSION}-PW.x + @ cd $(ABACUS_ROOT)source_pw/module_pwdft; $(MAKE) CXX=${CXX} GPU=${GPU} DEBUG=$(DEBUG) FFTW_DIR=$(FFTW_DIR) OPENBLAS_LIB_DIR=$(OPENBLAS_LIB_DIR) ${PWTAG} + @ cp $(ABACUS_ROOT)source_pw/module_pwdft/${VERSION}-PW.x $(realpath $(BIN_DIR))/${VERSION}-PW.x $(BIN_DIR)/${VERSION}.$(suffix) : ${FP_OBJS} ${PDIAG_OBJS} ${HEADERS} + @mkdir -p $(dir $@) ${CXX} ${OPTS} ${OPTS_MPI} $(FP_OBJS) ${PDIAG_OBJS} ${LIBS} -o $(BIN_DIR)/${VERSION}.$(suffix) - #========================== # rules #========================== -${OBJ_DIR}/%.o:%.cpp +# Note: The specific rule for parse_args.o above is more precise. +# This generic rule will apply to all other .cpp files. +${OBJ_DIR}/%.o:$(realpath $(BIN_DIR))%.cpp ${CXX} ${OPTS} ${OPTS_MPI} -c ${HONG} $< -o $@ .PHONY:clean test clean: - @ if [ -d $(OBJ_DIR) ]; then rm -rf $(OBJ_DIR); fi - @ if [ -d $(BIN_DIR) ]; then rm -rf $(BIN_DIR); fi - @ cd source_pw/module_pwdft; make clean + @ echo "Cleaning build directory: $(BUILD_DIR)" + @ rm -rf $(BUILD_DIR) diff --git a/source/Makefile.Objects b/source/Makefile.Objects index 00abcf82be..bbfe0c1235 100644 --- a/source/Makefile.Objects +++ b/source/Makefile.Objects @@ -29,7 +29,7 @@ VPATH=./src_global:\ ./source_base/module_mixing:\ ./source_md:\ ./source_basis/module_pw:\ -./source_basis/module_pw/module_fft:\ +./source_base/module_fft:\ ./source_esolver:\ ./source_hsolver:\ ./source_hsolver/kernels:\ @@ -50,7 +50,6 @@ VPATH=./src_global:\ ./source_pw/module_pwdft:\ ./source_pw/module_ofdft:\ ./source_pw/module_stodft:\ -./source_pw/module_pwdft/operator_pw:\ ./source_pw/module_pwdft/kernels:\ ./source_pw/module_pwdft/module_exx_helper:\ ./source_pw/module_stodft/kernels:\ @@ -62,7 +61,6 @@ VPATH=./src_global:\ ./source_lcao/module_deltaspin:\ ./source_lcao/module_operator_lcao:\ ./source_lcao/module_gint:\ -./source_lcao/module_gint/temp_gint:\ ./source_relax:\ ./source_hamilt/module_vdw:\ ./source_io:\ @@ -169,8 +167,8 @@ OBJS_BASE=abfs-vector3_order.o\ ylm.o\ opt_CG.o\ opt_DCsrch.o\ - cubic_spline.o\ - spherical_bessel_transformer.o\ + cubic_spline.o\ + spherical_bessel_transformer.o\ mixing_data.o\ mixing.o\ plain_mixing.o\ @@ -178,6 +176,8 @@ OBJS_BASE=abfs-vector3_order.o\ broyden_mixing.o\ memory_op.o\ device.o\ + device_helpers.o\ + output_device.o\ parallel_2d.o\ OBJS_CELL=atom_pseudo.o\ @@ -191,6 +191,7 @@ OBJS_CELL=atom_pseudo.o\ read_pp_vwr.o\ unitcell.o\ read_atoms.o\ + read_atoms_helper.o\ print_cell.o\ setup_nonlocal.o\ klist.o\ @@ -201,6 +202,8 @@ OBJS_CELL=atom_pseudo.o\ bcast_cell.o\ read_stru.o\ read_atom_species.o\ + sep.o\ + sep_cell.o\ OBJS_DEEPKS=LCAO_deepks.o\ deepks_basic.o\ @@ -219,24 +222,24 @@ OBJS_DEEPKS=LCAO_deepks.o\ deepks_phialpha.o\ LCAO_deepks_io.o\ LCAO_deepks_interface.o\ - + OBJS_ELECSTAT=elecstate.o\ elecstate_energy_terms.o\ elecstate_energy.o\ elecstate_exx.o\ elecstate_print.o\ + elecstate_tools.o\ elecstate_pw.o\ elecstate_pw_sdft.o\ elecstate_pw_cal_tau.o\ elecstate_op.o\ - elecstate_tools.o\ efield.o\ gatefield.o\ potential_new.o\ potential_types.o\ + pot_sep.o\ pot_local.o\ - pot_local_paw.o\ H_Hartree_pw.o\ H_TDDFT_pw.o\ pot_xc.o\ @@ -245,9 +248,11 @@ OBJS_ELECSTAT=elecstate.o\ cal_nelec_nband.o\ read_pseudo.o\ cal_wfc.o\ + setup_estate_pw.o\ + update_pot.o\ OBJS_ELECSTAT_LCAO=elecstate_lcao.o\ - elecstate_lcao_cal_tau.o\ + init_dm.o\ density_matrix.o\ density_matrix_io.o\ cal_dm_psi.o\ @@ -261,46 +266,21 @@ OBJS_ESOLVER=esolver.o\ esolver_sdft_pw.o\ esolver_lj.o\ esolver_dp.o\ + esolver_nep.o\ esolver_of.o\ + esolver_of_tddft.o\ esolver_of_tool.o\ esolver_of_interface.o\ pw_others.o\ - pw_setup.o\ OBJS_ESOLVER_LCAO=esolver_ks_lcao.o\ esolver_ks_lcao_tddft.o\ - lcao_before_scf.o\ - lcao_after_scf.o\ esolver_gets.o\ lcao_others.o\ esolver_dm2rho.o\ + esolver_double_xc.o\ -OBJS_GINT=gint_old.o\ - gint_gamma_env.o\ - gint_gamma_vl.o\ - gint_fvl_old.o\ - gint_rho_old.o\ - gint_tau_old.o\ - gint_vl_old.o\ - gint_k_env.o\ - gint_k_sparse1.o\ - gint_k_pvpr.o\ - gint_k_pvdpr.o\ - gint_tools.o\ - grid_bigcell.o\ - grid_meshball.o\ - grid_meshcell.o\ - grid_meshk.o\ - grid_technique.o\ - gint_force_cpu_interface.o\ - gint_rho_cpu_interface.o\ - gint_vl_cpu_interface.o\ - cal_psir_ylm.o\ - cal_dpsir_ylm.o\ - cal_ddpsir_ylm.o\ - mult_psi_dmr.o\ - init_orb.o\ - batch_biggrid.o\ +OBJS_GINT=batch_biggrid.o\ big_grid.o\ biggrid_info.o\ divide_info.o\ @@ -328,18 +308,21 @@ OBJS_GINT=gint_old.o\ OBJS_HAMILT=hamilt_pw.o\ hamilt_sdft_pw.o\ operator.o\ - operator_pw.o\ - op_exx_pw.o\ - ekinetic_pw.o\ + op_pw.o\ + op_pw_exx.o\ + op_pw_ekin.o\ ekinetic_op.o\ + op_pw_exx_ace.o\ + op_pw_exx_pot.o\ hpsi_norm_op.o\ - veff_pw.o\ + op_pw_veff.o\ veff_op.o\ - nonlocal_pw.o\ + op_pw_nl.o\ nonlocal_op.o\ - meta_pw.o\ + op_pw_meta.o\ meta_op.o\ - velocity_pw.o\ + op_pw_vel.o\ + op_pw_proj.o\ radial_proj.o\ exx_helper.o\ vec_mul_vec_complex_op.o\ @@ -353,12 +336,13 @@ OBJS_HAMILT_OF=kedf_tf.o\ kedf_xwm.o\ kedf_lkt.o\ kedf_manager.o\ + evolve_ofdft.o\ OBJS_HAMILT_LCAO=hamilt_lcao.o\ operator_lcao.o\ - ekinetic_new.o\ - nonlocal_new.o\ - overlap_new.o\ + ekinetic.o\ + nonlocal.o\ + overlap.o\ td_ekinetic_lcao.o\ td_nonlocal_lcao.o\ td_pot_hybrid.o\ @@ -374,6 +358,7 @@ OBJS_HCONTAINER=base_matrix.o\ atom_pair.o\ hcontainer.o\ output_hcontainer.o\ + read_hcontainer.o\ func_folding.o\ func_transfer.o\ transfer.o\ @@ -388,12 +373,12 @@ OBJS_HSOLVER=diago_cg.o\ hsolver_lcaopw.o\ hsolver_pw_sdft.o\ diago_iter_assist.o\ - dngvd_op.o\ + hegvd_op.o\ bpcg_kernel_op.o\ diag_const_nums.o\ diag_hs_para.o\ diago_pxxxgvx.o\ - + OBJS_HSOLVER_LCAO=hsolver_lcao.o\ diago_scalapack.o\ diago_lapack.o\ @@ -411,7 +396,7 @@ OBJS_HSOLVER_PEXSI=diago_pexsi.o\ dist_bcd_matrix.o\ dist_ccs_matrix.o\ dist_matrix_transformer.o\ - + OBJS_MD=fire.o\ langevin.o\ md_base.o\ @@ -433,29 +418,29 @@ OBJS_ORBITAL=ORB_atomic.o\ ORB_nonlocal_lm.o\ ORB_read.o\ parallel_orbitals.o\ - atomic_radials.o\ + atomic_radials.o\ hydrogen_radials.o\ pswfc_radials.o\ - beta_radials.o\ - sphbes_radials.o\ - numerical_radial.o\ - radial_collection.o\ - radial_set.o\ - real_gaunt_table.o\ - two_center_bundle.o\ - two_center_integrator.o\ - two_center_table.o\ + beta_radials.o\ + sphbes_radials.o\ + numerical_radial.o\ + radial_collection.o\ + radial_set.o\ + real_gaunt_table.o\ + two_center_bundle.o\ + two_center_integrator.o\ + two_center_table.o\ projgen.o\ OBJS_PSI=psi.o\ OBJS_PSI_INITIALIZER=psi_initializer.o\ - psi_initializer_random.o\ - psi_initializer_file.o\ - psi_initializer_atomic.o\ - psi_initializer_atomic_random.o\ - psi_initializer_nao.o\ - psi_initializer_nao_random.o\ + psi_init_random.o\ + psi_init_file.o\ + psi_init_atomic.o\ + psi_init_atomic_random.o\ + psi_init_nao.o\ + psi_init_nao_random.o\ OBJS_PW=fft_bundle.o\ fft_cpu.o\ @@ -486,7 +471,7 @@ OBJS_RELAXATION=bfgs_basic.o\ lbfgs.o\ matrix_methods.o\ line_search.o\ - + OBJS_SURCHEM=surchem.o\ H_correction_pw.o\ @@ -527,22 +512,23 @@ OBJS_XC=xc_functional.o\ xc_funct_exch_gga.o\ xc_funct_corr_gga.o\ xc_funct_hcth.o\ + exx_info.o\ -OBJS_IO=input_conv.o\ - berryphase.o\ - bessel_basis.o\ +OBJS_IO=module_parameter/input_conv.o\ + module_unk/berryphase.o\ + module_bessel/bessel_basis.o\ cal_test.o\ - write_dos_pw.o\ + module_dos/write_dos_pw.o\ nscf_fermi_surf.o\ - nscf_band.o\ - cal_dos.o\ - cal_pdos_gamma.o\ - cal_pdos_multik.o\ - cal_ldos.o\ + write_bands.o\ + module_dos/cal_dos.o\ + module_dos/cal_pdos_gamma.o\ + module_dos/cal_pdos_multik.o\ + module_dos/cal_ldos.o\ cif_io.o\ - numerical_descriptor.o\ - numerical_basis.o\ - numerical_basis_jyjy.o\ + module_bessel/numerical_descriptor.o\ + module_bessel/numerical_basis.o\ + module_bessel/numerical_basis_jyjy.o\ output.o\ print_info.o\ read_cube.o\ @@ -552,27 +538,33 @@ OBJS_IO=input_conv.o\ read_wf2rho_pw.o\ restart.o\ binstream.o\ - to_wannier90.o\ - to_qo_kernel.o\ - to_qo_mpi.o\ - to_qo_structures.o\ - to_wannier90_pw.o\ - to_wannier90_lcao_in_pw.o\ - to_wannier90_lcao.o\ + module_wannier/to_wannier90.o\ + module_qo/to_qo_kernel.o\ + module_qo/to_qo_mpi.o\ + module_qo/to_qo_structures.o\ + module_wannier/to_wannier90_pw.o\ + module_wannier/to_wannier90_lcao_in_pw.o\ + module_wannier/to_wannier90_lcao.o\ fR_overlap.o\ - unk_overlap_pw.o\ + module_unk/unk_overlap_pw.o\ write_pao.o\ write_wfc_pw.o\ - winput.o\ write_cube.o\ write_elecstat_pot.o\ write_elf.o\ write_dipole.o\ + write_init.o\ td_current_io.o\ + td_current_io_comm.o\ write_libxc_r.o\ output_log.o\ output_mat_sparse.o\ - ctrl_output_lcao.o\ + module_ctrl/ctrl_scf_lcao.o\ + module_ctrl/ctrl_runner_lcao.o\ + module_ctrl/ctrl_iter_lcao.o\ + module_ctrl/ctrl_output_fp.o\ + module_ctrl/ctrl_output_pw.o\ + module_ctrl/ctrl_output_td.o\ para_json.o\ abacusjson.o\ general_info.o\ @@ -580,24 +572,25 @@ OBJS_IO=input_conv.o\ readin_info.o\ output_info.o\ parse_args.o\ - read_input.o\ - read_input_item_system.o\ - read_input_item_elec_stru.o\ - read_input_item_relax.o\ - read_input_item_md.o\ - read_input_item_ofdft.o\ - read_input_item_sdft.o\ - read_input_item_tddft.o\ - read_input_item_deepks.o\ - read_input_item_model.o\ - read_input_item_postprocess.o\ - read_input_item_exx_dftu.o\ - read_input_item_other.o\ - read_input_item_output.o\ - read_set_globalv.o\ + module_parameter/read_input.o\ + module_parameter/read_input_item_system.o\ + module_parameter/read_input_item_elec_stru.o\ + module_parameter/read_input_item_relax.o\ + module_parameter/read_input_item_md.o\ + module_parameter/read_input_item_ofdft.o\ + module_parameter/read_input_item_sdft.o\ + module_parameter/read_input_item_tddft.o\ + module_parameter/read_input_item_deepks.o\ + module_parameter/read_input_item_model.o\ + module_parameter/read_input_item_postprocess.o\ + module_parameter/read_input_item_exx_dftu.o\ + module_parameter/read_input_item_other.o\ + module_parameter/read_input_item_output.o\ + module_parameter/read_set_globalv.o\ orb_io.o\ cal_pLpR.o\ filename.o\ + ucell_io.o\ OBJS_IO_LCAO=cal_r_overlap_R.o\ write_orb_info.o\ @@ -606,20 +599,19 @@ OBJS_IO_LCAO=cal_r_overlap_R.o\ write_eig_occ.o\ get_pchg_lcao.o\ get_wf_lcao.o\ - io_dmk.o\ - unk_overlap_lcao.o\ + module_dm/write_dmk.o\ + module_unk/unk_overlap_lcao.o\ read_wfc_nao.o\ - read_wfc_lcao.o\ write_wfc_nao.o\ - write_HS_sparse.o\ + module_hs/write_HS_sparse.o\ single_R_io.o\ - write_HS_R.o\ - write_dmr.o\ + module_hs/write_HS_R.o\ + module_dm/write_dmr.o\ sparse_matrix.o\ - output_mulliken.o\ - output_sk.o\ - output_dmk.o\ - io_npz.o\ + module_mulliken/output_mulliken.o\ + module_mulliken/output_sk.o\ + module_mulliken/output_dmk.o\ + module_ml/io_npz.o\ OBJS_LCAO=evolve_elec.o\ evolve_psi.o\ @@ -635,19 +627,20 @@ OBJS_LCAO=evolve_elec.o\ velocity_op.o\ snap_psibeta_half_tddft.o\ solve_propagation.o\ + boundary_fix.o\ upsi.o\ FORCE_STRESS.o\ - FORCE_gamma.o\ - FORCE_k.o\ + FORCE_gamma.o\ + FORCE_k.o\ stress_tools.o\ edm.o\ - pulay_force_stress_center2.o\ - grid_init.o\ + pulay_fs_center2.o\ spar_dh.o\ spar_exx.o\ spar_hsr.o\ spar_st.o\ spar_u.o\ + LCAO_set.o\ LCAO_set_fs.o\ LCAO_set_st.o\ LCAO_nl_mu.o\ @@ -655,6 +648,10 @@ OBJS_LCAO=evolve_elec.o\ LCAO_allocate.o\ LCAO_set_mat2d.o\ LCAO_init_basis.o\ + setup_exx.o\ + setup_deepks.o\ + setup_dm.o\ + rho_tau_lcao.o\ center2_orb.o\ center2_orb-orb11.o\ center2_orb-orb21.o\ @@ -663,13 +660,13 @@ OBJS_LCAO=evolve_elec.o\ wavefunc_in_pw.o\ OBJS_MODULE_RI=conv_coulomb_pot_k.o\ - exx_abfs-abfs_index.o \ - exx_abfs-jle.o \ - exx_abfs-io.o \ - exx_abfs-construct_orbs.o \ - ABFs_Construct-PCA.o \ - exx_opt_orb.o \ - exx_opt_orb-print.o \ + exx_abfs-abfs_index.o\ + exx_abfs-jle.o\ + exx_abfs-io.o\ + exx_abfs-construct_orbs.o\ + ABFs_Construct-PCA.o\ + exx_opt_orb-print.o\ + exx_opt_orb.o\ Matrix_Orbs11.o\ Matrix_Orbs21.o\ Matrix_Orbs22.o\ @@ -677,6 +674,7 @@ OBJS_MODULE_RI=conv_coulomb_pot_k.o\ Mix_DMk_2D.o\ Mix_Matrix.o\ symmetry_rotation.o\ + symmetry_rotation_output.o\ symmetry_irreducible_sector.o\ OBJS_PARALLEL=parallel_common.o\ @@ -686,12 +684,13 @@ OBJS_PARALLEL=parallel_common.o\ parallel_kpoints.o\ parallel_reduce.o\ parallel_device.o - + OBJS_SRCPW=H_Ewald_pw.o\ dnrm2.o\ - VL_in_pw.o\ - VNL_in_pw.o\ - VNL_grad_pw.o\ + vl_pw.o\ + vnl_pw.o\ + vnl_pw_grad.o\ + chgmixing.o\ charge.o\ charge_init.o\ charge_mpi.o\ @@ -703,6 +702,12 @@ OBJS_SRCPW=H_Ewald_pw.o\ charge_mixing_rho.o\ charge_mixing_uspp.o\ fp_energy.o\ + setup_pot.o\ + setup_pwrho.o\ + setup_pwwfc.o\ + update_cell_pw.o\ + dftu_pw.o\ + deltaspin_pw.o\ forces.o\ forces_us.o\ forces_nl.o\ @@ -717,7 +722,6 @@ OBJS_SRCPW=H_Ewald_pw.o\ onsite_op.o\ wf_op.o\ vnl_op.o\ - global.o\ magnetism.o\ occupy.o\ structure_factor.o\ @@ -729,28 +733,32 @@ OBJS_SRCPW=H_Ewald_pw.o\ sto_func.o\ sto_forces.o\ sto_stress_pw.o\ - stress_func_cc.o\ - stress_func_ewa.o\ - stress_func_exx.o\ - stress_func_gga.o\ - stress_func_mgga.o\ - stress_func_har.o\ - stress_func_kin.o\ - stress_func_loc.o\ - stress_func_nl.o\ - stress_func_us.o\ - stress_func_onsite.o\ + stress_cc.o\ + stress_ewa.o\ + stress_exx.o\ + stress_gga.o\ + stress_mgga.o\ + stress_har.o\ + stress_kin.o\ + stress_loc.o\ + stress_nl.o\ + stress_us.o\ + stress_onsite.o\ stress_pw.o\ of_stress_pw.o\ + of_print_info.o\ symmetry_rho.o\ symmetry_rhog.o\ - psi_init.o\ + setup_psi_pw.o\ + setup_psi.o\ + psi_prepare.o\ elecond.o\ sto_tool.o\ sto_elecond.o\ sto_dos.o\ onsite_projector.o\ - onsite_proj_tools.o + onsite_proj_tools.o\ + vsep_pw.o OBJS_VDW=vdw.o\ vdwd2_parameters.o\ diff --git a/source/source_base/element_basis_index.cpp b/source/source_base/element_basis_index.cpp index 1130de59e3..32eafd01e1 100644 --- a/source/source_base/element_basis_index.cpp +++ b/source/source_base/element_basis_index.cpp @@ -4,24 +4,26 @@ //========================================================== #include "element_basis_index.h" + namespace ModuleBase { -Element_Basis_Index::IndexLNM Element_Basis_Index::construct_index( const Range &range ) +Element_Basis_Index::IndexLNM +Element_Basis_Index::construct_index( const Range &range ) { IndexLNM index; index.resize( range.size() ); - for( size_t T=0; T!=range.size(); ++T ) + for( std::size_t T=0; T!=range.size(); ++T ) { - size_t count=0; + std::size_t count=0; index[T].resize( range[T].size() ); - for( size_t L=0; L!=range[T].size(); ++L ) + for( std::size_t L=0; L!=range[T].size(); ++L ) { index[T][L].resize( range[T][L].N ); - for( size_t N=0; N!=range[T][L].N; ++N ) + for( std::size_t N=0; N!=range[T][L].N; ++N ) { index[T][L][N].resize( range[T][L].M ); - for( size_t M=0; M!=range[T][L].M; ++M ) + for( std::size_t M=0; M!=range[T][L].M; ++M ) { index[T][L][N][M] = count; ++count; diff --git a/source/source_base/element_basis_index.h b/source/source_base/element_basis_index.h index 96918b8e03..bb81ebf40e 100644 --- a/source/source_base/element_basis_index.h +++ b/source/source_base/element_basis_index.h @@ -8,40 +8,41 @@ #include #include + namespace ModuleBase { -class Element_Basis_Index +namespace Element_Basis_Index { -private: - + //private: + struct NM { public: - size_t N; - size_t M; + std::size_t N; + std::size_t M; }; - - class Index_TL: public std::vector> + + class Index_TL: public std::vector> { public: - size_t N; - size_t M; + std::size_t N; + std::size_t M; }; - + class Index_T: public std::vector { public: - size_t count_size; - }; - -public: - - typedef std::vector> Range; // range[T][L] + std::size_t count_size; + }; + + //public: + + typedef std::vector> Range; // range[T][L] typedef std::vector IndexLNM; // index[T][L][N][M] - - static IndexLNM construct_index( const Range &range ); -}; + + extern IndexLNM construct_index( const Range &range ); +} } diff --git a/source/source_base/gather_math_lib_info.cpp b/source/source_base/gather_math_lib_info.cpp index 825aaa3163..3cd89a94eb 100644 --- a/source/source_base/gather_math_lib_info.cpp +++ b/source/source_base/gather_math_lib_info.cpp @@ -60,7 +60,7 @@ void zhegvx_i(const int *itype, const int *il, const int *iu, const double *abstol, - const int *m, + int *m, double *w, std::complex *z, const int *ldz, diff --git a/source/source_base/global_file.cpp b/source/source_base/global_file.cpp index cd6c424fc7..ce3ce613c2 100644 --- a/source/source_base/global_file.cpp +++ b/source/source_base/global_file.cpp @@ -9,6 +9,9 @@ #include #endif #include +#include +#include +#include #include #include "global_function.h" #include "source_io/module_parameter/parameter.h" @@ -40,14 +43,15 @@ void ModuleBase::Global_File::make_dir_out( #endif int make_dir = 0; // mohan update 2011-05-03 - std::string command0 = "test -d " + PARAM.globalv.global_out_dir + " || mkdir " + PARAM.globalv.global_out_dir; + //std::string command0 = "test -d " + PARAM.globalv.global_out_dir + " || mkdir " + PARAM.globalv.global_out_dir; int times = 0; while(times 0) { int make_dir_deepks_elec = 0; - std::string command1 = "test -d " + PARAM.globalv.global_deepks_label_elec_dir + " || mkdir " + PARAM.globalv.global_deepks_label_elec_dir; + //std::string command1 = "test -d " + PARAM.globalv.global_deepks_label_elec_dir + " || mkdir " + PARAM.globalv.global_deepks_label_elec_dir; times = 0; while(times #include #include +#include +#include +#include +#include + namespace ModuleBase { namespace GlobalFunc @@ -61,20 +66,14 @@ void OUT(std::ofstream &ofs, const std::string &name) void MAKE_DIR(const std::string &fn) { // ModuleBase::TITLE("global_function","MAKE_DIR"); - #ifndef __SW if (GlobalV::MY_RANK == 0) { - std::stringstream ss; - ss << " test -d " << fn << " || mkdir " << fn; - //---------------------------------------------------------- - // EXPLAIN : 'system' function return '0' if success - //---------------------------------------------------------- - if (system(ss.str().c_str())) + int ret = mkdir(fn.c_str(), 0755); + if (ret != 0 && errno != EEXIST) { ModuleBase::WARNING_QUIT("MAKE_DIR", fn); } } - #endif return; } diff --git a/source/source_base/global_function.h b/source/source_base/global_function.h index 7981fb79bd..3d6f1e35be 100644 --- a/source/source_base/global_function.h +++ b/source/source_base/global_function.h @@ -182,17 +182,17 @@ inline void DCOPY(const T* a, T* b, const int& dim) { } template -inline void COPYARRAY(const T* a, T* b, const long dim); +inline void COPYARRAY(const T* a, T* b, const int dim); template <> -inline void COPYARRAY(const std::complex* a, std::complex* b, const long dim) +inline void COPYARRAY(const std::complex* a, std::complex* b, const int dim) { const int one = 1; zcopy_(&dim, a, &one, b, &one); } template <> -inline void COPYARRAY(const double* a, double* b, const long dim) +inline void COPYARRAY(const double* a, double* b, const int dim) { const int one = 1; dcopy_(&dim, a, &one, b, &one); diff --git a/source/source_base/intarray.h b/source/source_base/intarray.h index 9147dc184e..a35f8aa887 100644 --- a/source/source_base/intarray.h +++ b/source/source_base/intarray.h @@ -19,7 +19,7 @@ namespace ModuleBase class IntArray { public: - int *ptr; + int * ptr = nullptr; /** * @brief Construct a new Int Array object diff --git a/source/source_base/kernels/cuda/math_kernel_op.cu b/source/source_base/kernels/cuda/math_kernel_op.cu index 415ec9f12a..c5b0648c49 100644 --- a/source/source_base/kernels/cuda/math_kernel_op.cu +++ b/source/source_base/kernels/cuda/math_kernel_op.cu @@ -2,6 +2,7 @@ #include "source_base/kernels/math_kernel_op.h" #include "source_psi/psi.h" #include "source_base/tool_quit.h" +#include "source_base/module_container/base/third_party/cublas.h" #include #include @@ -27,22 +28,22 @@ struct GetTypeThrust> { static cublasHandle_t cublas_handle = nullptr; void xdot_wrapper(const int &n, const float * x, const int &incx, const float * y, const int &incy, float &result) { - cublasErrcheck(cublasSdot(cublas_handle, n, x, incx, y, incy, &result)); + CHECK_CUBLAS(cublasSdot(cublas_handle, n, x, incx, y, incy, &result)); } void xdot_wrapper(const int &n, const double * x, const int &incx, const double * y, const int &incy, double &result) { - cublasErrcheck(cublasDdot(cublas_handle, n, x, incx, y, incy, &result)); + CHECK_CUBLAS(cublasDdot(cublas_handle, n, x, incx, y, incy, &result)); } void createGpuBlasHandle(){ if (cublas_handle == nullptr) { - cublasErrcheck(cublasCreate(&cublas_handle)); + CHECK_CUBLAS(cublasCreate(&cublas_handle)); } } void destoryBLAShandle(){ if (cublas_handle != nullptr) { - cublasErrcheck(cublasDestroy(cublas_handle)); + CHECK_CUBLAS(cublasDestroy(cublas_handle)); cublas_handle = nullptr; } } @@ -58,7 +59,7 @@ void scal_op::operator()(const int& N, std::complex* X, const int& incx) { - cublasErrcheck(cublasCscal(cublas_handle, N, (float2*)alpha, (float2*)X, incx)); + CHECK_CUBLAS(cublasCscal(cublas_handle, N, (float2*)alpha, (float2*)X, incx)); } template <> @@ -67,7 +68,7 @@ void scal_op::operator()(const int& N, std::complex* X, const int& incx) { - cublasErrcheck(cublasZscal(cublas_handle, N, (double2*)alpha, (double2*)X, incx)); + CHECK_CUBLAS(cublasZscal(cublas_handle, N, (double2*)alpha, (double2*)X, incx)); } template <> @@ -78,7 +79,7 @@ void axpy_op::operator()(const int& N, double* Y, const int& incY) { - cublasErrcheck(cublasDaxpy(cublas_handle, N, alpha, X, incX, Y, incY)); + CHECK_CUBLAS(cublasDaxpy(cublas_handle, N, alpha, X, incX, Y, incY)); } template <> @@ -89,7 +90,7 @@ void axpy_op, base_device::DEVICE_GPU>::operator()(const int std::complex* Y, const int& incY) { - cublasErrcheck(cublasCaxpy(cublas_handle, N, (float2*)alpha, (float2*)X, incX, (float2*)Y, incY)); + CHECK_CUBLAS(cublasCaxpy(cublas_handle, N, (float2*)alpha, (float2*)X, incX, (float2*)Y, incY)); } template <> @@ -100,7 +101,7 @@ void axpy_op, base_device::DEVICE_GPU>::operator()(const in std::complex* Y, const int& incY) { - cublasErrcheck(cublasZaxpy(cublas_handle, N, (double2*)alpha, (double2*)X, incX, (double2*)Y, incY)); + CHECK_CUBLAS(cublasZaxpy(cublas_handle, N, (double2*)alpha, (double2*)X, incX, (double2*)Y, incY)); } @@ -133,6 +134,14 @@ __global__ void matrix_copy_kernel(const int n1, const int n2, const T* A, const } } +template +__global__ void matrix_multiply_vector_kernel(const int m, const int n, T *a, const int lda, const Real *b, const Real alpha, T *c, const int ldc){ + int row = blockIdx.x * blockDim.x + threadIdx.x; + int col = blockIdx.y * blockDim.y + threadIdx.y; + if (col >= n || row >= m) return; + c[col * ldc + row] = a[col * lda + row] * b[col] * alpha; +} + cublasOperation_t judge_trans_op(bool is_complex, const char& trans, const char* name) { if (trans == 'N') @@ -147,7 +156,7 @@ cublasOperation_t judge_trans_op(bool is_complex, const char& trans, const char* { return CUBLAS_OP_C; } - else + else { ModuleBase::WARNING_QUIT(name, std::string("Unknown trans type ") + trans + std::string(" !")); } @@ -167,9 +176,28 @@ void gemv_op::operator()(const char& trans, const int& incy) { cublasOperation_t cutrans = judge_trans_op(false, trans, "gemv_op"); - cublasErrcheck(cublasDgemv(cublas_handle, cutrans, m, n, alpha, A, lda, X, incx, beta, Y, incx)); + CHECK_CUBLAS(cublasDgemv(cublas_handle, cutrans, m, n, alpha, A, lda, X, incx, beta, Y, incy)); } +template <> +void gemv_op::operator()(const char& trans, + const int& m, + const int& n, + const float* alpha, + const float* A, + const int& lda, + const float* X, + const int& incx, + const float* beta, + float* Y, + const int& incy) +{ + cublasOperation_t cutrans = judge_trans_op(false, trans, "gemv_op"); + CHECK_CUBLAS(cublasSgemv(cublas_handle, cutrans, m, n, alpha, A, lda, X, incx, beta, Y, incy)); +} + + + template <> void gemv_op, base_device::DEVICE_GPU>::operator()(const char& trans, const int& m, @@ -186,7 +214,7 @@ void gemv_op, base_device::DEVICE_GPU>::operator()(const cha cublasOperation_t cutrans = judge_trans_op(true, trans, "gemv_op"); cuFloatComplex alpha = make_cuFloatComplex(alpha_in->real(), alpha_in->imag()); cuFloatComplex beta = make_cuFloatComplex(beta_in->real(), beta_in->imag()); - cublasErrcheck(cublasCgemv(cublas_handle, cutrans, m, n, &alpha, (cuFloatComplex*)A, lda, (cuFloatComplex*)X, incx, &beta, (cuFloatComplex*)Y, incx)); + CHECK_CUBLAS(cublasCgemv(cublas_handle, cutrans, m, n, &alpha, (cuFloatComplex*)A, lda, (cuFloatComplex*)X, incx, &beta, (cuFloatComplex*)Y, incy)); } template <> @@ -207,7 +235,7 @@ void gemv_op, base_device::DEVICE_GPU>::operator()(const ch cuDoubleComplex beta = make_cuDoubleComplex(beta_in->real(), beta_in->imag()); // icpc and nvcc have some compatible problems // We must use cuDoubleComplex instead of converting std::complex* to cuDoubleComplex* - cublasErrcheck(cublasZgemv(cublas_handle, cutrans, m, n, &alpha, (cuDoubleComplex*)A, lda, (cuDoubleComplex*)X, incx, &beta, (cuDoubleComplex*)Y, incx)); + CHECK_CUBLAS(cublasZgemv(cublas_handle, cutrans, m, n, &alpha, (cuDoubleComplex*)A, lda, (cuDoubleComplex*)X, incx, &beta, (cuDoubleComplex*)Y, incy)); } template <> @@ -227,7 +255,7 @@ void gemm_op::operator()(const char& transa, { cublasOperation_t cutransA = judge_trans_op(false, transa, "gemm_op"); cublasOperation_t cutransB = judge_trans_op(false, transb, "gemm_op"); - cublasErrcheck(cublasSgemm(cublas_handle, cutransA, cutransB, m, n, k, alpha, a, lda, b, ldb, beta, c, ldc)); + CHECK_CUBLAS(cublasSgemm(cublas_handle, cutransA, cutransB, m, n, k, alpha, a, lda, b, ldb, beta, c, ldc)); } template <> @@ -247,7 +275,7 @@ void gemm_op::operator()(const char& transa, { cublasOperation_t cutransA = judge_trans_op(false, transa, "gemm_op"); cublasOperation_t cutransB = judge_trans_op(false, transb, "gemm_op"); - cublasErrcheck(cublasDgemm(cublas_handle, cutransA, cutransB, m, n, k, alpha, a, lda, b, ldb, beta, c, ldc)); + CHECK_CUBLAS(cublasDgemm(cublas_handle, cutransA, cutransB, m, n, k, alpha, a, lda, b, ldb, beta, c, ldc)); } template <> void gemm_op, base_device::DEVICE_GPU>::operator()(const char& transa, @@ -266,7 +294,7 @@ void gemm_op, base_device::DEVICE_GPU>::operator()(const cha { cublasOperation_t cutransA = judge_trans_op(true, transa, "gemm_op"); cublasOperation_t cutransB = judge_trans_op(true, transb, "gemm_op"); - cublasErrcheck(cublasCgemm(cublas_handle, cutransA, cutransB, m, n ,k, (float2*)alpha, (float2*)a , lda, (float2*)b, ldb, (float2*)beta, (float2*)c, ldc)); + CHECK_CUBLAS(cublasCgemm(cublas_handle, cutransA, cutransB, m, n ,k, (float2*)alpha, (float2*)a , lda, (float2*)b, ldb, (float2*)beta, (float2*)c, ldc)); } template <> @@ -286,7 +314,7 @@ void gemm_op, base_device::DEVICE_GPU>::operator()(const ch { cublasOperation_t cutransA = judge_trans_op(true, transa, "gemm_op"); cublasOperation_t cutransB = judge_trans_op(true, transb, "gemm_op"); - cublasErrcheck(cublasZgemm(cublas_handle, cutransA, cutransB, m, n ,k, (double2*)alpha, (double2*)a , lda, (double2*)b, ldb, (double2*)beta, (double2*)c, ldc)); + CHECK_CUBLAS(cublasZgemm(cublas_handle, cutransA, cutransB, m, n ,k, (double2*)alpha, (double2*)a , lda, (double2*)b, ldb, (double2*)beta, (double2*)c, ldc)); } template <> @@ -303,7 +331,7 @@ void matrixTranspose_op::operator()(const int& double ONE = 1.0, ZERO = 0.0; // use 'geam' API todo transpose. - cublasErrcheck(cublasDgeam(cublas_handle, CUBLAS_OP_T, CUBLAS_OP_N, col, row, &ONE, input_matrix, col, &ZERO, input_matrix, col, device_temp, col)); + CHECK_CUBLAS(cublasDgeam(cublas_handle, CUBLAS_OP_T, CUBLAS_OP_N, col, row, &ONE, input_matrix, col, &ZERO, input_matrix, col, device_temp, col)); } else { @@ -311,7 +339,7 @@ void matrixTranspose_op::operator()(const int& int block = (row + col + thread - 1) / thread; matrix_transpose_kernel <<>> (row, col, input_matrix, device_temp); - cudaCheckOnDebug(); + CHECK_CUDA_SYNC(); } base_device::memory::synchronize_memory_op()( @@ -340,7 +368,7 @@ void matrixTranspose_op, base_device::DEVICE_GPU>::operator( ZERO.x = ZERO.y = 0.0; // use 'geam' API todo transpose. - cublasErrcheck(cublasCgeam(cublas_handle, CUBLAS_OP_T, CUBLAS_OP_N, col, row, + CHECK_CUBLAS(cublasCgeam(cublas_handle, CUBLAS_OP_T, CUBLAS_OP_N, col, row, reinterpret_cast(&ONE), (float2*)input_matrix, col, reinterpret_cast(&ZERO), (float2*)input_matrix, col, (float2*)device_temp, col)); } else @@ -349,7 +377,7 @@ void matrixTranspose_op, base_device::DEVICE_GPU>::operator( int block = (row + col + thread - 1) / thread; matrix_transpose_kernel> <<>> (row, col, (thrust::complex*)input_matrix, (thrust::complex*)device_temp); - cudaCheckOnDebug(); + CHECK_CUDA_SYNC(); } base_device::memory::synchronize_memory_op, base_device::DEVICE_GPU, base_device::DEVICE_GPU>()( @@ -359,7 +387,7 @@ void matrixTranspose_op, base_device::DEVICE_GPU>::operator( base_device::memory::delete_memory_op, base_device::DEVICE_GPU>()(device_temp); - cudaCheckOnDebug(); + CHECK_CUDA_SYNC(); } @@ -381,13 +409,13 @@ void matrixTranspose_op, base_device::DEVICE_GPU>::operator ZERO.x = ZERO.y = 0.0; // use 'geam' API todo transpose. - cublasErrcheck(cublasZgeam(cublas_handle, CUBLAS_OP_T, CUBLAS_OP_N, col, row, &ONE, (double2*)input_matrix, col, &ZERO, (double2*)input_matrix, col, (double2*)device_temp, col)); + CHECK_CUBLAS(cublasZgeam(cublas_handle, CUBLAS_OP_T, CUBLAS_OP_N, col, row, &ONE, (double2*)input_matrix, col, &ZERO, (double2*)input_matrix, col, (double2*)device_temp, col)); } else { int thread = 1024; int block = (row + col + thread - 1) / thread; matrix_transpose_kernel> <<>> (row, col, (thrust::complex*)input_matrix, (thrust::complex*)device_temp); - cudaCheckOnDebug(); + CHECK_CUDA_SYNC(); } base_device::memory::synchronize_memory_op, @@ -408,7 +436,7 @@ void matrixCopy::operator()(const int& n1, const dim3 blockSize(16, 16); const dim3 gridSize((n1 + blockSize.x - 1) / blockSize.x, (n2 + blockSize.y - 1) / blockSize.y); matrix_copy_kernel <<>> (n1, n2, A, LDA, B, LDB); - cudaCheckOnDebug(); + CHECK_CUDA_SYNC(); } template <> void matrixCopy, base_device::DEVICE_GPU>::operator()(const int& n1, @@ -421,7 +449,7 @@ void matrixCopy, base_device::DEVICE_GPU>::operator()(const const dim3 blockSize(16, 16); const dim3 gridSize((n1 + blockSize.x - 1) / blockSize.x, (n2 + blockSize.y - 1) / blockSize.y); matrix_copy_kernel> <<>> (n1, n2, reinterpret_cast*>(A), LDA, reinterpret_cast*>(B), LDB); - cudaCheckOnDebug(); + CHECK_CUDA_SYNC(); } template <> @@ -435,13 +463,47 @@ void matrixCopy, base_device::DEVICE_GPU>::operator()(const const dim3 blockSize(16, 16); const dim3 gridSize((n1 + blockSize.x - 1) / blockSize.x, (n2 + blockSize.y - 1) / blockSize.y); matrix_copy_kernel> <<>> (n1, n2, reinterpret_cast*>(A), LDA, reinterpret_cast*>(B), LDB); - cudaCheckOnDebug(); + CHECK_CUDA_SYNC(); +} + +template <> +void matrix_mul_vector_op::operator()(const int &m, const int &n, + double *a, const int &lda, const double *b, const double alpha, double *c, const int &ldc){ + dim3 thread(16, 16, 1); + dim3 block((m + thread.x - 1) / thread.x, (n + thread.y - 1) / thread.y, 1); + matrix_multiply_vector_kernel <<>>(m, n, a, lda, + b, alpha, c, ldc); + CHECK_CUDA_SYNC(); +} + +template <> +void matrix_mul_vector_op, base_device::DEVICE_GPU>::operator()(const int &m, const int &n, + std::complex *a, const int &lda, const float *b, const float alpha, std::complex *c, const int &ldc){ + dim3 thread(16, 16, 1); + dim3 block((m + thread.x - 1) / thread.x, (n + thread.y - 1) / thread.y, 1); + matrix_multiply_vector_kernel, float> <<>>(m, n, reinterpret_cast*>(a), lda, + b, alpha, reinterpret_cast*>(c), ldc); + CHECK_CUDA_SYNC(); } +template <> +void matrix_mul_vector_op, base_device::DEVICE_GPU>::operator()(const int &m, const int &n, + std::complex *a, const int &lda, const double *b, const double alpha, std::complex *c, const int &ldc) +{ + dim3 thread(16, 16, 1); + dim3 block((m + thread.x - 1) / thread.x, (n + thread.y - 1) / thread.y, 1); + matrix_multiply_vector_kernel, double> <<>>(m, n, reinterpret_cast*>(a), lda, + b, alpha, reinterpret_cast*>(c), ldc); + CHECK_CUDA_SYNC(); +} // Explicitly instantiate functors for the types of functor registered. template struct matrixCopy, base_device::DEVICE_GPU>; template struct matrixCopy; template struct matrixCopy, base_device::DEVICE_GPU>; + +template struct matrix_mul_vector_op, base_device::DEVICE_GPU>; +template struct matrix_mul_vector_op; +template struct matrix_mul_vector_op, base_device::DEVICE_GPU>; } // namespace ModuleBase diff --git a/source/source_base/kernels/cuda/math_kernel_op_vec.cu b/source/source_base/kernels/cuda/math_kernel_op_vec.cu index 577f503d8e..4cf756c579 100644 --- a/source/source_base/kernels/cuda/math_kernel_op_vec.cu +++ b/source/source_base/kernels/cuda/math_kernel_op_vec.cu @@ -105,7 +105,7 @@ void vector_mul_real_op::operator()(const int d int block = (dim + thread - 1) / thread; vector_mul_real_kernel<<>>(dim, result, vector, constant); - cudaCheckOnDebug(); + CHECK_CUDA_SYNC(); } template @@ -121,7 +121,7 @@ inline void vector_mul_real_wrapper(const int dim, int block = (dim + thread - 1) / thread; vector_mul_real_kernel><<>>(dim, result_tmp, vector_tmp, constant); - cudaCheckOnDebug(); + CHECK_CUDA_SYNC(); } template <> void vector_mul_real_op, base_device::DEVICE_GPU>::operator()(const int dim, @@ -152,7 +152,7 @@ void vector_div_constant_op::operator()(const i int block = (dim + thread - 1) / thread; vector_div_constant_kernel<<>>(dim, result, vector, constant); - cudaCheckOnDebug(); + CHECK_CUDA_SYNC(); } template @@ -168,7 +168,7 @@ inline void vector_div_constant_wrapper(const int& dim, int block = (dim + thread - 1) / thread; vector_div_constant_kernel><<>>(dim, result_tmp, vector_tmp, constant); - cudaCheckOnDebug(); + CHECK_CUDA_SYNC(); } template <> @@ -201,7 +201,7 @@ void vector_mul_vector_op::operator()(const int int block = (dim + thread - 1) / thread; vector_mul_vector_kernel<<>>(dim, result, vector1, vector2, add); - cudaCheckOnDebug(); + CHECK_CUDA_SYNC(); } // vector operator: result[i] = vector1[i](complex) * vector2[i](not complex) template @@ -217,7 +217,7 @@ inline void vector_mul_vector_complex_wrapper(const int& dim, int block = (dim + thread - 1) / thread; vector_mul_vector_kernel><<>>(dim, result_tmp, vector1_tmp, vector2, add); - cudaCheckOnDebug(); + CHECK_CUDA_SYNC(); } template <> void vector_mul_vector_op, base_device::DEVICE_GPU>::operator()(const int& dim, @@ -250,7 +250,7 @@ void vector_div_vector_op::operator()(const int int block = (dim + thread - 1) / thread; vector_div_vector_kernel<<>>(dim, result, vector1, vector2); - cudaCheckOnDebug(); + CHECK_CUDA_SYNC(); } // vector operator: result[i] = vector1[i](complex) / vector2[i](not complex) template @@ -265,7 +265,7 @@ inline void vector_div_vector_complex_wrapper(const int& dim, int block = (dim + thread - 1) / thread; vector_div_vector_kernel><<>>(dim, result_tmp, vector1_tmp, vector2); - cudaCheckOnDebug(); + CHECK_CUDA_SYNC(); } template <> void vector_div_vector_op, base_device::DEVICE_GPU>::operator()(const int& dim, @@ -306,7 +306,7 @@ void vector_add_vector_op::operator()(const int& dim constantvector_addORsub_constantVector_kernel <<>>(dim, result_tmp, vector1_tmp, constant1, vector2_tmp, constant2); - cudaCheckOnDebug(); + CHECK_CUDA_SYNC(); } template <> diff --git a/source/source_base/kernels/cuda/math_ylm_op.cu b/source/source_base/kernels/cuda/math_ylm_op.cu index 559d8bfc2d..01b3676ff7 100644 --- a/source/source_base/kernels/cuda/math_ylm_op.cu +++ b/source/source_base/kernels/cuda/math_ylm_op.cu @@ -148,7 +148,7 @@ void cal_ylm_real_op::operator()(const base_dev p, ylm); - cudaCheckOnDebug(); + CHECK_CUDA_SYNC(); } template struct cal_ylm_real_op; diff --git a/source/source_base/kernels/cuda/sph_harm_gpu.cuh b/source/source_base/kernels/cuda/sph_harm_gpu.cuh new file mode 100644 index 0000000000..d4fa5f5666 --- /dev/null +++ b/source/source_base/kernels/cuda/sph_harm_gpu.cuh @@ -0,0 +1,385 @@ +#pragma once + +#include "source_base/ylmcoef.h" + +namespace ModuleBase { + +/// Spherical harmonics computation (table lookup method) +/// Directly uses constexpr ylmcoef, compiler auto-inlines +/// @param nwl Maximum angular momentum L (0 <= nwl <= 5) +/// @param x,y,z Direction vector (need not be normalized, normalization is done internally) +/// @param ylma Output array, size (nwl+1)^2 +__device__ static void sph_harm( + const int nwl, + const double x_in, + const double y_in, + const double z_in, + double* __restrict__ ylma) +{ + // Normalize the input direction vector + double r = sqrt(x_in * x_in + y_in * y_in + z_in * z_in); + double x, y, z; + if (r < 1e-10) + { + // At origin, default to z-axis direction + x = 0.0; + y = 0.0; + z = 1.0; + } + else + { + const double inv_r = 1.0 / r; + x = x_in * inv_r; + y = y_in * inv_r; + z = z_in * inv_r; + } + + /*************************** + L = 0 + ***************************/ + ylma[0] = ylmcoef[0]; // l=0, m=0 + double tmp0; + if (nwl == 0) + return; + + /*************************** + L = 1 + ***************************/ + ylma[1] = ylmcoef[1] * z; // l=1, m=0 + ylma[2] = -ylmcoef[1] * x; // l=1, m=1 + ylma[3] = -ylmcoef[1] * y; // l=1, m=-1 + if (nwl == 1) + return; + + /*************************** + L = 2 + ***************************/ + tmp0=ylmcoef[3] * ylma[0]; + ylma[4] = ylmcoef[2] * z * ylma[1] - tmp0 ; // l=2, m=0 + tmp0 = ylmcoef[4] * z; + ylma[5] = tmp0 * ylma[2]; // l=2,m=1 + ylma[6] = tmp0 * ylma[3]; // l=2,m=-1 + + tmp0 = ylmcoef[4] * x; + ylma[7] = ylmcoef[5] * ylma[4] - ylmcoef[6] * ylma[0] + - tmp0 * ylma[2]; // l=2,m=2 + ylma[8] = -tmp0 * ylma[3]; + if (nwl == 2) + return; + + /*************************** + L = 3 + ***************************/ + tmp0=ylmcoef[8] * ylma[1]; + ylma[9] = ylmcoef[7] * z * ylma[4] - tmp0; // l=3, m=0 + + tmp0 = ylmcoef[9] * z; + ylma[10] = tmp0 * ylma[5] - ylmcoef[10] * ylma[2]; // l=3,m=1 + ylma[11] = tmp0 * ylma[6] - ylmcoef[10] * ylma[3]; // l=3,m=-1 + + tmp0 = ylmcoef[11] * z; + ylma[12] = tmp0 * ylma[7]; // l=3,m=2 + ylma[13] = tmp0 * ylma[8]; // l=3,m=-2 + + tmp0 = ylmcoef[14] * x; + ylma[14] = ylmcoef[12] * ylma[10] - ylmcoef[13] * ylma[2] + - tmp0 * ylma[7]; // l=3,m=3 + ylma[15] = ylmcoef[12] * ylma[11] - ylmcoef[13] * ylma[3] + - tmp0 * ylma[8]; // l=3,m=-3 + if (nwl == 3) + return; + + /*************************** + L = 4 + ***************************/ + tmp0=ylmcoef[16] * ylma[4]; + ylma[16] = ylmcoef[15] * z * ylma[9] - tmp0; // l=4,m=0 + + tmp0 = ylmcoef[17] * z; + ylma[17] = tmp0 * ylma[10] - ylmcoef[18] * ylma[5]; // l=4,m=1 + ylma[18] = tmp0 * ylma[11] - ylmcoef[18] * ylma[6]; // l=4,m=-1 + + tmp0 = ylmcoef[19] * z; + ylma[19] = tmp0 * ylma[12] - ylmcoef[20] * ylma[7]; // l=4,m=2 + ylma[20] = tmp0 * ylma[13] - ylmcoef[20] * ylma[8]; // l=4,m=-2 + + tmp0 = 3.0 * z; + ylma[21] = tmp0 * ylma[14]; // l=4,m=3 + ylma[22] = tmp0 * ylma[15]; // l=4,m=-3 + + tmp0 = ylmcoef[23] * x; + ylma[23] = ylmcoef[21] * ylma[19] - ylmcoef[22] * ylma[7] + - tmp0 * ylma[14]; // l=4,m=4 + ylma[24] = ylmcoef[21] * ylma[20] - ylmcoef[22] * ylma[8] + - tmp0 * ylma[15]; // l=4,m=-4 + if (nwl == 4) + return; + + /*************************** + L = 5 + ***************************/ + tmp0=ylmcoef[25] * ylma[9]; + ylma[25] + = ylmcoef[24] * z * ylma[16] - tmp0; // l=5,m=0 + + tmp0 = ylmcoef[26] * z; + ylma[26] = tmp0 * ylma[17] - ylmcoef[27] * ylma[10]; // l=5,m=1 + ylma[27] = tmp0 * ylma[18] - ylmcoef[27] * ylma[11]; // l=5,m=-1 + + tmp0 = ylmcoef[28] * z; + ylma[28] = tmp0 * ylma[19] - ylmcoef[29] * ylma[12]; // l=5,m=2 + ylma[29] = tmp0 * ylma[20] - ylmcoef[29] * ylma[13]; // l=5,m=-2 + + tmp0 = ylmcoef[30] * z; + ylma[30] = tmp0 * ylma[21] - ylmcoef[31] * ylma[14]; // l=5,m=3 + ylma[31] = tmp0 * ylma[22] - ylmcoef[31] * ylma[15]; // l=5,m=-3 + + tmp0 = ylmcoef[32] * z; + ylma[32] = tmp0 * ylma[23]; // l=5,m=4 + ylma[33] = tmp0 * ylma[24]; // l=5,m=-4 + + tmp0 = ylmcoef[35] * x; + ylma[34] = ylmcoef[33] * ylma[30] - ylmcoef[34] * ylma[14] + - tmp0 * ylma[23]; // l=5,m=5 + ylma[35] = ylmcoef[33] * ylma[31] - ylmcoef[34] * ylma[15] + - tmp0 * ylma[24]; // l=5,m=-5 + if (nwl == 5) + return; +} + +/// Spherical harmonics and gradient computation +__device__ static void grad_rl_sph_harm( + const int nwl, + const double x, + const double y, + const double z, + double* __restrict__ rly, + double* __restrict__ grly) +{ + double r2 = x * x + y * y + z * z; + double tx = x * 2; + double ty = y * 2; + double tz = z * 2; + + //begin calculation + /*************************** + L = 0 + ***************************/ + rly[0] = ylmcoef[0]; //l=0, m=0 + grly[0] = grly[1] = grly[2] = 0.0; + if (nwl == 0) return; + + /*************************** + L = 1 + ***************************/ + rly[1] = ylmcoef[1]*z; //l=1, m=0 + grly[3] = grly[4] = 0.0; + grly[5] = ylmcoef[1]; + + rly[2] = -ylmcoef[1]*x; //l=1, m=1 + grly[7] = grly[8] = 0.0; + grly[6] = -ylmcoef[1]; + + rly[3] = -ylmcoef[1]*y; //l=1, m=-1 + grly[9] = grly[11] = 0.0; + grly[10] = -ylmcoef[1]; + + if (nwl == 1) return; + + /*************************** + L = 2 + ***************************/ + rly[4] = ylmcoef[2]*z*rly[1]-ylmcoef[3]*rly[0]*r2;//l=2, m=0 + grly[12] = ylmcoef[2]*z*grly[3]-ylmcoef[3]*(grly[0]*r2+rly[0]*tx);//l=2, m=0 + grly[13] = ylmcoef[2]*z*grly[4]-ylmcoef[3]*(grly[1]*r2+rly[0]*ty);//l=2, m=0 + grly[14] = ylmcoef[2]*(z*grly[5]+rly[1])-ylmcoef[3]*(grly[2]*r2+rly[0]*tz);//l=2, m=0 + + + double tmp0 = ylmcoef[4]*z; + rly[5] = tmp0*rly[2];//l=2,m=1 + grly[15] = tmp0*grly[6]; + grly[16] = tmp0*grly[7]; + grly[17] = ylmcoef[4]*(rly[2]+z*grly[8]); + + rly[6] = tmp0*rly[3];//l=2,m=-1 + grly[18] = tmp0*grly[9]; + grly[19] = tmp0*grly[10]; + grly[20] = ylmcoef[4]*(rly[3]+z*grly[11]); + + double tmp2 = ylmcoef[4]*x; + rly[7]= ylmcoef[5]*rly[4]-ylmcoef[6]*rly[0]*r2 - tmp2*rly[2];//l=2,m=2 + grly[21] = ylmcoef[5]*grly[12]-ylmcoef[6]*(rly[0]*tx+grly[0]*r2)-ylmcoef[4]*(x*grly[6]+rly[2]); + + grly[22] = ylmcoef[5]*grly[13]-ylmcoef[6]*(rly[0]*ty+grly[1]*r2)-tmp2*grly[7]; + grly[23] = ylmcoef[5]*grly[14]-ylmcoef[6]*(rly[0]*tz+grly[2]*r2)-tmp2*grly[8]; + + rly[8] = -tmp2*rly[3]; + grly[24] = -ylmcoef[4]*(rly[3]+x*grly[9]); + grly[25] = -tmp2*grly[10]; + grly[26] = -tmp2*grly[11]; + if (nwl == 2) return; + + /*************************** + L = 3 + ***************************/ + rly[9] = ylmcoef[7]*z*rly[4]-ylmcoef[8]*rly[1]*r2; //l=3, m=0 + grly[27] = ylmcoef[7]*z*grly[12]-ylmcoef[8]*(rly[1]*tx+grly[3]*r2); + grly[28] = ylmcoef[7]*z*grly[13]-ylmcoef[8]*(rly[1]*ty+grly[4]*r2); + grly[29] = ylmcoef[7]*(rly[4]+z*grly[14])-ylmcoef[8]*(rly[1]*tz+grly[5]*r2); + + double tmp3 = ylmcoef[9]*z; + rly[10] = tmp3*rly[5]-ylmcoef[10]*rly[2]*r2;//l=3,m=1 + grly[30] = tmp3*grly[15]-ylmcoef[10]*(grly[6]*r2+rly[2]*tx); + grly[31] = tmp3*grly[16]-ylmcoef[10]*(grly[7]*r2+rly[2]*ty); + grly[32] = ylmcoef[9]*(z*grly[17]+rly[5])-ylmcoef[10]*(grly[8]*r2+rly[2]*tz); + + rly[11] = tmp3*rly[6]-ylmcoef[10]*rly[3]*r2;//l=3,m=-1 + grly[33] = tmp3*grly[18]-ylmcoef[10]*(grly[9]*r2+rly[3]*tx); + grly[34] = tmp3*grly[19]-ylmcoef[10]*(grly[10]*r2+rly[3]*ty); + grly[35] = ylmcoef[9]*(z*grly[20]+rly[6])-ylmcoef[10]*(grly[11]*r2+rly[3]*tz); + + double tmp4 = ylmcoef[11]*z; + rly[12] = tmp4*rly[7];//l=3,m=2 + grly[36] = tmp4*grly[21]; + grly[37] = tmp4*grly[22]; + grly[38] = ylmcoef[11]*(z*grly[23]+rly[7]); + + rly[13] = tmp4*rly[8];//l=3,m=-2 + grly[39] = tmp4*grly[24]; + grly[40] = tmp4*grly[25]; + grly[41] = ylmcoef[11]*(z*grly[26]+rly[8]); + + double tmp5 = ylmcoef[14]*x; + rly[14] = ylmcoef[12]*rly[10]-ylmcoef[13]*rly[2]*r2-tmp5*rly[7];//l=3,m=3 + grly[42] = ylmcoef[12]*grly[30]-ylmcoef[13]*(rly[2]*tx+grly[6]*r2)-ylmcoef[14]*(rly[7]+x*grly[21]); + grly[43] = ylmcoef[12]*grly[31]-ylmcoef[13]*(rly[2]*ty+grly[7]*r2)-tmp5*grly[22]; + grly[44] = ylmcoef[12]*grly[32]-ylmcoef[13]*(rly[2]*tz+grly[8]*r2)-tmp5*grly[23]; + + rly[15] = ylmcoef[12]*rly[11]-ylmcoef[13]*rly[3]*r2-tmp5*rly[8];//l=3,m=-3 + grly[45] = ylmcoef[12]*grly[33]-ylmcoef[13]*(rly[3]*tx+grly[9]*r2)-ylmcoef[14]*(rly[8]+x*grly[24]); + grly[46] = ylmcoef[12]*grly[34]-ylmcoef[13]*(rly[3]*ty+grly[10]*r2)-tmp5*grly[25]; + grly[47] = ylmcoef[12]*grly[35]-ylmcoef[13]*(rly[3]*tz+grly[11]*r2)-tmp5*grly[26]; + if (nwl == 3) return; + + /*************************** + L = 4 + ***************************/ + rly[16] = ylmcoef[15]*z*rly[9]-ylmcoef[16]*rly[4]*r2;//l=4,m=0 + grly[48] = ylmcoef[15]*z*grly[27]-ylmcoef[16]*(rly[4]*tx+grly[12]*r2); + grly[49] = ylmcoef[15]*z*grly[28]-ylmcoef[16]*(rly[4]*ty+grly[13]*r2); + grly[50] = ylmcoef[15]*(z*grly[29]+rly[9])-ylmcoef[16]*(rly[4]*tz+grly[14]*r2); + + double tmp6 = ylmcoef[17]*z; + rly[17] = tmp6*rly[10]-ylmcoef[18]*rly[5]*r2;//l=4,m=1 + grly[51] = tmp6*grly[30]-ylmcoef[18]*(rly[5]*tx+grly[15]*r2); + grly[52] = tmp6*grly[31]-ylmcoef[18]*(rly[5]*ty+grly[16]*r2); + grly[53] = ylmcoef[17]*(z*grly[32]+rly[10])-ylmcoef[18]*(rly[5]*tz+grly[17]*r2); + + rly[18] = tmp6*rly[11]-ylmcoef[18]*rly[6]*r2;//l=4,m=-1 + grly[54] = tmp6*grly[33]-ylmcoef[18]*(rly[6]*tx+grly[18]*r2); + grly[55] = tmp6*grly[34]-ylmcoef[18]*(rly[6]*ty+grly[19]*r2); + grly[56] = ylmcoef[17]*(z*grly[35]+rly[11])-ylmcoef[18]*(rly[6]*tz+grly[20]*r2); + + double tmp7 = ylmcoef[19]*z; + rly[19] = tmp7*rly[12]-ylmcoef[20]*rly[7]*r2;//l=4,m=2 + grly[57] = tmp7*grly[36]-ylmcoef[20]*(rly[7]*tx+grly[21]*r2); + grly[58] = tmp7*grly[37]-ylmcoef[20]*(rly[7]*ty+grly[22]*r2); + grly[59] = ylmcoef[19]*(z*grly[38]+rly[12])-ylmcoef[20]*(rly[7]*tz+grly[23]*r2); + + rly[20] = tmp7*rly[13]-ylmcoef[20]*rly[8]*r2;//l=4,m=-2 + grly[60] = tmp7*grly[39]-ylmcoef[20]*(rly[8]*tx+grly[24]*r2); + grly[61] = tmp7*grly[40]-ylmcoef[20]*(rly[8]*ty+grly[25]*r2); + grly[62] = ylmcoef[19]*(z*grly[41]+rly[13])-ylmcoef[20]*(rly[8]*tz+grly[26]*r2); + + double tmp8 = 3.0*z; + rly[21] = tmp8*rly[14];//l=4,m=3 + grly[63] = tmp8*grly[42]; + grly[64] = tmp8*grly[43]; + grly[65] = 3.0*(z*grly[44]+rly[14]); + + + rly[22] = tmp8*rly[15];//l=4,m=-3 + grly[66] = tmp8*grly[45]; + grly[67] = tmp8*grly[46]; + grly[68] = 3.0*(z*grly[47]+rly[15]); + + double tmp9 = ylmcoef[23]*x; + rly[23] = ylmcoef[21]*rly[19]-ylmcoef[22]*rly[7]*r2-tmp9*rly[14];//l=4,m=4 + grly[69] = ylmcoef[21]*grly[57]-ylmcoef[22]*(rly[7]*tx+grly[21]*r2)-ylmcoef[23]*(x*grly[42]+rly[14]); + grly[70] = ylmcoef[21]*grly[58]-ylmcoef[22]*(rly[7]*ty+grly[22]*r2)-tmp9*grly[43]; + grly[71] = ylmcoef[21]*grly[59]-ylmcoef[22]*(rly[7]*tz+grly[23]*r2)-tmp9*grly[44]; + + rly[24] = ylmcoef[21]*rly[20]-ylmcoef[22]*rly[8]*r2-tmp9*rly[15];//l=4,m=-4 + grly[72] = ylmcoef[21]*grly[60]-ylmcoef[22]*(rly[8]*tx+grly[24]*r2)-ylmcoef[23]*(x*grly[45]+rly[15]); + grly[73] = ylmcoef[21]*grly[61]-ylmcoef[22]*(rly[8]*ty+grly[25]*r2)-tmp9*grly[46]; + grly[74] = ylmcoef[21]*grly[62]-ylmcoef[22]*(rly[8]*tz+grly[26]*r2)-tmp9*grly[47]; + + if (nwl == 4) return; + + /*************************** + L = 5 + ***************************/ + rly[25] = ylmcoef[24]*z*rly[16]-ylmcoef[25]*rly[9]*r2;//l=5,m=0 + grly[75] = ylmcoef[24]*z*grly[48]-ylmcoef[25]*(rly[9]*tx+grly[27]*r2); + grly[76] = ylmcoef[24]*z*grly[49]-ylmcoef[25]*(rly[9]*ty+grly[28]*r2); + grly[77] = ylmcoef[24]*(z*grly[50]+rly[16])-ylmcoef[25]*(rly[9]*tz+grly[29]*r2); + + double tmp10 = ylmcoef[26]*z; + rly[26] = tmp10*rly[17]-ylmcoef[27]*rly[10]*r2;//l=5,m=1 + grly[78] = tmp10*grly[51]-ylmcoef[27]*(rly[10]*tx+grly[30]*r2); + grly[79] = tmp10*grly[52]-ylmcoef[27]*(rly[10]*ty+grly[31]*r2); + grly[80] = ylmcoef[26]*(z*grly[53]+rly[17])-ylmcoef[27]*(rly[10]*tz+grly[32]*r2); + + rly[27] = tmp10*rly[18]-ylmcoef[27]*rly[11]*r2;//l=5,m=-1 + grly[81] = tmp10*grly[54]-ylmcoef[27]*(rly[11]*tx+grly[33]*r2); + grly[82] = tmp10*grly[55]-ylmcoef[27]*(rly[11]*ty+grly[34]*r2); + grly[83] = ylmcoef[26]*(z*grly[56]+rly[18])-ylmcoef[27]*(rly[11]*tz+grly[35]*r2); + + double tmp11 = ylmcoef[28]*z; + rly[28] = tmp11*rly[19]-ylmcoef[29]*rly[12]*r2;//l=5,m=2 + grly[84] = tmp11*grly[57]-ylmcoef[29]*(rly[12]*tx+grly[36]*r2); + grly[85] = tmp11*grly[58]-ylmcoef[29]*(rly[12]*ty+grly[37]*r2); + grly[86] = ylmcoef[28]*(z*grly[59]+rly[19])-ylmcoef[29]*(rly[12]*tz+grly[38]*r2); + + rly[29] = tmp11*rly[20]-ylmcoef[29]*rly[13]*r2;//l=5,m=-2 + grly[87] = tmp11*grly[60]-ylmcoef[29]*(rly[13]*tx+grly[39]*r2); + grly[88] = tmp11*grly[61]-ylmcoef[29]*(rly[13]*ty+grly[40]*r2); + grly[89] = ylmcoef[28]*(z*grly[62]+rly[20])-ylmcoef[29]*(rly[13]*tz+grly[41]*r2); + + double tmp12 = ylmcoef[30]*z; + rly[30] = tmp12*rly[21]-ylmcoef[31]*rly[14]*r2;//l=5,m=3 + grly[90] = tmp12*grly[63]-ylmcoef[31]*(grly[42]*r2+rly[14]*tx); + grly[91] = tmp12*grly[64]-ylmcoef[31]*(grly[43]*r2+rly[14]*ty); + grly[92] = ylmcoef[30]*(z*grly[65]+rly[21])-ylmcoef[31]*(grly[44]*r2+rly[14]*tz); + + rly[31] = tmp12*rly[22]-ylmcoef[31]*rly[15]*r2;//l=5,m=-3 + grly[93] = tmp12*grly[66]-ylmcoef[31]*(grly[45]*r2+rly[15]*tx); + grly[94] = tmp12*grly[67]-ylmcoef[31]*(grly[46]*r2+rly[15]*ty); + grly[95] = ylmcoef[30]*(z*grly[68]+rly[22])-ylmcoef[31]*(grly[47]*r2+rly[15]*tz); + + double tmp13 = ylmcoef[32]*z; + rly[32] = tmp13*rly[23];//l=5,m=4 + grly[96] = tmp13*grly[69]; + grly[97] = tmp13*grly[70]; + grly[98] = ylmcoef[32]*(rly[23]+z*grly[71]); + + rly[33] = tmp13*rly[24];//l=5,m=-4 + grly[99] = tmp13*grly[72]; + grly[100] = tmp13*grly[73]; + grly[101] = ylmcoef[32]*(rly[24]+z*grly[74]); + + double tmp14 = ylmcoef[35]*x; + rly[34] = ylmcoef[33]*rly[30]-ylmcoef[34]*rly[14]*r2-tmp14*rly[23];//l=5,m=5 + grly[102] = ylmcoef[33]*grly[90]-ylmcoef[34]*(rly[14]*tx+grly[42]*r2)-ylmcoef[35]*(x*grly[69]+rly[23]); + grly[103] = ylmcoef[33]*grly[91]-ylmcoef[34]*(rly[14]*ty+grly[43]*r2)-tmp14*grly[70]; + grly[104] = ylmcoef[33]*grly[92]-ylmcoef[34]*(rly[14]*tz+grly[44]*r2)-tmp14*grly[71]; + + rly[35] = ylmcoef[33]*rly[31]-ylmcoef[34]*rly[15]*r2-tmp14*rly[24];//l=5,m=-5 + grly[105] = ylmcoef[33]*grly[93]-ylmcoef[34]*(rly[15]*tx+grly[45]*r2)-ylmcoef[35]*(x*grly[72]+rly[24]); + grly[106] = ylmcoef[33]*grly[94]-ylmcoef[34]*(rly[15]*ty+grly[46]*r2)-tmp14*grly[73]; + grly[107] = ylmcoef[33]*grly[95]-ylmcoef[34]*(rly[15]*tz+grly[47]*r2)-tmp14*grly[74]; + + if (nwl == 5) return; +} + +} // namespace ModuleBase diff --git a/source/source_base/kernels/dsp/dsp_connector.cpp b/source/source_base/kernels/dsp/dsp_connector.cpp index a3c5f6d897..2baf73a4ec 100644 --- a/source/source_base/kernels/dsp/dsp_connector.cpp +++ b/source/source_base/kernels/dsp/dsp_connector.cpp @@ -6,9 +6,9 @@ extern "C" { #define complex_double ignore_complex_double -#include // MTBLAS_TRANSPOSE etc +#include // include faster mtblas kernels #undef complex_double -#include // gemm +#include // include normal mtblas kernels that automatically operate memory, but slower. } namespace mtfunc { @@ -22,45 +22,42 @@ void dspDestoryHandle(int id) { hthread_dev_close(id); std::cout << " ** DSP closed on cluster " << id << " **" << std::endl; -} // Close dsp cluster at the end +} // Close dsp cluster at the end of the program -MTBLAS_TRANSPOSE convertBLASTranspose(const char* blasTrans) +// MTBlas secretly removed its MTBLAS_TRANSPOSE data type and used the original CBLAS_TRANSPOSE. So this function is modified. + +CBLAS_TRANSPOSE convertBLASTranspose(const char* blasTrans) { switch (blasTrans[0]) { case 'N': case 'n': - return MtblasNoTrans; + return CblasNoTrans; case 'T': case 't': - return MtblasTrans; + return CblasTrans; case 'C': case 'c': - return MtblasConjTrans; + return CblasConjTrans; default: std::cout << "Invalid BLAS transpose parameter!! Use default instead." << std::endl; - return MtblasNoTrans; + return CblasNoTrans; } -} // Used to convert normal transpost char to mtblas transpose flag +} // Used to convert normal transpost char to cblas transpose flag void* malloc_ht(size_t bytes, int cluster_id) { - // std::cout << "MALLOC " << cluster_id; void* ptr = hthread_malloc((int)cluster_id, bytes, HT_MEM_RW); - // std::cout << ptr << " SUCCEED" << std::endl;; return ptr; -} +} // Malloc on dsp. Used to replace original malloc + -// Used to replace original malloc void free_ht(void* ptr) { - // std::cout << "FREE " << ptr; hthread_free(ptr); - // std::cout << " FREE SUCCEED" << std::endl; -} +} // Free on dsp. Used to replace original free -// Used to replace original free void sgemm_mt_(const char* transa, const char* transb, @@ -77,7 +74,7 @@ void sgemm_mt_(const char* transa, const int* ldc, int cluster_id) { - mtblas_sgemm(MTBLAS_ORDER::MtblasColMajor, + mtblas_sgemm(CBLAS_ORDER::CblasColMajor, convertBLASTranspose(transa), convertBLASTranspose(transb), *m, @@ -109,7 +106,7 @@ void dgemm_mt_(const char* transa, const int* ldc, int cluster_id) { - mtblas_dgemm(MTBLAS_ORDER::MtblasColMajor, + mtblas_dgemm(CBLAS_ORDER::CblasColMajor, convertBLASTranspose(transa), convertBLASTranspose(transb), *m, @@ -141,7 +138,7 @@ void zgemm_mt_(const char* transa, const int* ldc, int cluster_id) { - mtblas_zgemm(MTBLAS_ORDER::MtblasColMajor, + mtblas_zgemm(CBLAS_ORDER::CblasColMajor, convertBLASTranspose(transa), convertBLASTranspose(transb), *m, @@ -173,7 +170,7 @@ void cgemm_mt_(const char* transa, const int* ldc, int cluster_id) { - mtblas_cgemm(MTBLAS_ORDER::MtblasColMajor, + mtblas_cgemm(CBLAS_ORDER::CblasColMajor, convertBLASTranspose(transa), convertBLASTranspose(transb), *m, @@ -190,6 +187,118 @@ void cgemm_mt_(const char* transa, cluster_id); } // cgemm that needn't malloc_ht or free_ht +void sgemv_mt_(const char* transa, + const int* m, + const int* n, + const float* alpha, + const float* a, + const int* lda, + const float* x, + const int* incx, + const float* beta, + float* y, + const int* incy, + int cluster_id) +{ + mtblas_sgemv(CBLAS_ORDER::CblasColMajor, + convertBLASTranspose(transa), + *m, + *n, + *alpha, + a, + *lda, + x, + *incx, + *beta, + y, + *incy, + cluster_id); +} + +void dgemv_mt_(const char* transa, + const int* m, + const int* n, + const double* alpha, + const double* a, + const int* lda, + const double* x, + const int* incx, + const double* beta, + double* y, + const int* incy, + int cluster_id) +{ + mtblas_dgemv(CBLAS_ORDER::CblasColMajor, + convertBLASTranspose(transa), + *m, + *n, + *alpha, + a, + *lda, + x, + *incx, + *beta, + y, + *incy, + cluster_id); +} + +void zgemv_mt_(const char* transa, + const int* m, + const int* n, + const std::complex* alpha, + const std::complex* a, + const int* lda, + const std::complex* x, + const int* incx, + const std::complex* beta, + std::complex* y, + const int* incy, + int cluster_id) +{ + mtblas_zgemv(CBLAS_ORDER::CblasColMajor, + convertBLASTranspose(transa), + *m, + *n, + (const void*)alpha, + (const void*)a, + *lda, + (const void*)x, + *incx, + (const void*)beta, + (void*)y, + *incy, + cluster_id); +} + +void cgemv_mt_(const char* transa, + const int* m, + const int* n, + const std::complex* alpha, + const std::complex* a, + const int* lda, + const std::complex* x, + const int* incx, + const std::complex* beta, + std::complex* y, + const int* incy, + int cluster_id) +{ + mtblas_cgemv(CBLAS_ORDER::CblasColMajor, + convertBLASTranspose(transa), + *m, + *n, + (const void*)alpha, + (const void*)a, + *lda, + (const void*)x, + *incx, + (const void*)beta, + (void*)y, + *incy, + cluster_id); +} + // Used to replace original free void sgemm_mth_(const char* transa, @@ -207,7 +316,7 @@ void sgemm_mth_(const char* transa, const int* ldc, int cluster_id) { - mt_hthread_sgemm(MTBLAS_ORDER::MtblasColMajor, + mt_hthread_sgemm(CBLAS_ORDER::CblasColMajor, convertBLASTranspose(transa), convertBLASTranspose(transb), *m, @@ -239,7 +348,7 @@ void dgemm_mth_(const char* transa, const int* ldc, int cluster_id) { - mt_hthread_dgemm(MTBLAS_ORDER::MtblasColMajor, + mt_hthread_dgemm(CBLAS_ORDER::CblasColMajor, convertBLASTranspose(transa), convertBLASTranspose(transb), *m, @@ -275,7 +384,7 @@ void zgemm_mth_(const char* transa, *alp = *alpha; std::complex* bet = (std::complex*)malloc_ht(sizeof(std::complex), cluster_id); *bet = *beta; - mt_hthread_zgemm(MTBLAS_ORDER::MtblasColMajor, + mt_hthread_zgemm(CBLAS_ORDER::CblasColMajor, convertBLASTranspose(transa), convertBLASTranspose(transb), *m, @@ -290,7 +399,8 @@ void zgemm_mth_(const char* transa, c, *ldc, cluster_id); - + free_ht(alp); + free_ht(bet); } // zgemm that needn't malloc_ht or free_ht void cgemm_mth_(const char* transa, @@ -313,7 +423,7 @@ void cgemm_mth_(const char* transa, std::complex* bet = (std::complex*)malloc_ht(sizeof(std::complex), cluster_id); *bet = *beta; - mt_hthread_cgemm(MTBLAS_ORDER::MtblasColMajor, + mt_hthread_cgemm(CBLAS_ORDER::CblasColMajor, convertBLASTranspose(transa), convertBLASTranspose(transb), *m, @@ -332,4 +442,132 @@ void cgemm_mth_(const char* transa, free_ht(alp); free_ht(bet); } // cgemm that needn't malloc_ht or free_ht + +void sgemv_mth_(const char* transa, + const int* m, + const int* n, + const float* alpha, + const float* a, + const int* lda, + const float* x, + const int* incx, + const float* beta, + float* y, + const int* incy, + int cluster_id) +{ + mt_hthread_sgemv(CBLAS_ORDER::CblasColMajor, + convertBLASTranspose(transa), + *m, + *n, + *alpha, + a, + *lda, + x, + *incx, + *beta, + y, + *incy, + cluster_id); +} + +void dgemv_mth_(const char* transa, + const int* m, + const int* n, + const double* alpha, + const double* a, + const int* lda, + const double* x, + const int* incx, + const double* beta, + double* y, + const int* incy, + int cluster_id) +{ + mt_hthread_dgemv(CBLAS_ORDER::CblasColMajor, + convertBLASTranspose(transa), + *m, + *n, + *alpha, + a, + *lda, + x, + *incx, + *beta, + y, + *incy, + cluster_id); +} + +void zgemv_mth_(const char* transa, + const int* m, + const int* n, + const std::complex* alpha, + const std::complex* a, + const int* lda, + const std::complex* x, + const int* incx, + const std::complex* beta, + std::complex* y, + const int* incy, + int cluster_id) +{ + std::complex* alp = (std::complex*)malloc_ht(sizeof(std::complex), cluster_id); + *alp = *alpha; + std::complex* bet = (std::complex*)malloc_ht(sizeof(std::complex), cluster_id); + *bet = *beta; + + mt_hthread_zgemv(CBLAS_ORDER::CblasColMajor, + convertBLASTranspose(transa), + *m, + *n, + (const void*)alp, + (const void*)a, + *lda, + (const void*)x, + *incx, + (const void*)bet, + (void*)y, + *incy, + cluster_id); + + free_ht(alp); + free_ht(bet); +} + +void cgemv_mth_(const char* transa, + const int* m, + const int* n, + const std::complex* alpha, + const std::complex* a, + const int* lda, + const std::complex* x, + const int* incx, + const std::complex* beta, + std::complex* y, + const int* incy, + int cluster_id) +{ + std::complex* alp = (std::complex*)malloc_ht(sizeof(std::complex), cluster_id); + *alp = *alpha; + std::complex* bet = (std::complex*)malloc_ht(sizeof(std::complex), cluster_id); + *bet = *beta; + + mt_hthread_cgemv(CBLAS_ORDER::CblasColMajor, + convertBLASTranspose(transa), + *m, + *n, + (const void*)alp, + (const void*)a, + *lda, + (const void*)x, + *incx, + (const void*)bet, + (void*)y, + *incy, + cluster_id); + + free_ht(alp); + free_ht(bet); +} } // namespace mtfunc \ No newline at end of file diff --git a/source/source_base/kernels/dsp/dsp_connector.h b/source/source_base/kernels/dsp/dsp_connector.h index 34ccbaec4b..997a21de59 100644 --- a/source/source_base/kernels/dsp/dsp_connector.h +++ b/source/source_base/kernels/dsp/dsp_connector.h @@ -76,6 +76,58 @@ void cgemm_mt_(const char* transa, const int* ldc, int cluster_id); +void sgemv_mt_(const char* transa, + const int* m, + const int* n, + const float* alpha, + const float* a, + const int* lda, + const float* x, + const int* incx, + const float* beta, + float* y, + const int* incy, + int cluster_id); + +void dgemv_mt_(const char* transa, + const int* m, + const int* n, + const double* alpha, + const double* a, + const int* lda, + const double* x, + const int* incx, + const double* beta, + double* y, + const int* incy, + int cluster_id); + +void zgemv_mt_(const char* transa, + const int* m, + const int* n, + const std::complex* alpha, + const std::complex* a, + const int* lda, + const std::complex* x, + const int* incx, + const std::complex* beta, + std::complex* y, + const int* incy, + int cluster_id); + +void cgemv_mt_(const char* transa, + const int* m, + const int* n, + const std::complex* alpha, + const std::complex* a, + const int* lda, + const std::complex* x, + const int* incx, + const std::complex* beta, + std::complex* y, + const int* incy, + int cluster_id); + void sgemm_mth_(const char* transa, const char* transb, const int* m, @@ -136,6 +188,58 @@ void cgemm_mth_(const char* transa, const int* ldc, int cluster_id); +void sgemv_mth_(const char* transa, + const int* m, + const int* n, + const float* alpha, + const float* a, + const int* lda, + const float* x, + const int* incx, + const float* beta, + float* y, + const int* incy, + int cluster_id); + +void dgemv_mth_(const char* transa, + const int* m, + const int* n, + const double* alpha, + const double* a, + const int* lda, + const double* x, + const int* incx, + const double* beta, + double* y, + const int* incy, + int cluster_id); + +void zgemv_mth_(const char* transa, + const int* m, + const int* n, + const std::complex* alpha, + const std::complex* a, + const int* lda, + const std::complex* x, + const int* incx, + const std::complex* beta, + std::complex* y, + const int* incy, + int cluster_id); + +void cgemv_mth_(const char* transa, + const int* m, + const int* n, + const std::complex* alpha, + const std::complex* a, + const int* lda, + const std::complex* x, + const int* incx, + const std::complex* beta, + std::complex* y, + const int* incy, + int cluster_id); + // #define zgemm_ zgemm_mt // The next is dsp utils. It may be moved to other files if this file get too huge diff --git a/source/source_base/kernels/math_kernel_op.cpp b/source/source_base/kernels/math_kernel_op.cpp index dad790e463..1000637554 100644 --- a/source/source_base/kernels/math_kernel_op.cpp +++ b/source/source_base/kernels/math_kernel_op.cpp @@ -48,6 +48,25 @@ struct gemm_op }; #ifdef __DSP +template +struct gemv_op_mt +{ + void operator()(const char& trans, + const int& m, + const int& n, + const T* alpha, + const T* A, + const int& lda, + const T* X, + const int& incx, + const T* beta, + T* Y, + const int& incy) + { + BlasConnector::gemv(trans, m, n, *alpha, A, lda, X, incx, *beta, Y, incy, base_device::AbacusDevice_t::DspDevice); + } +}; + template struct gemm_op_mt { @@ -81,7 +100,7 @@ struct matrixTranspose_op T* temp = nullptr; base_device::memory::resize_memory_op()(temp, row * col, "MTransOp"); #ifdef _OPENMP -#pragma omp parallel for collapse(2) schedule(static, 8192 / sizeof(T)) +#pragma omp parallel for collapse(2) schedule(static) #endif for (int j = 0; j < col; j++) { @@ -91,7 +110,7 @@ struct matrixTranspose_op } } #ifdef _OPENMP -#pragma omp parallel for schedule(static, 8192 / sizeof(T)) +#pragma omp parallel for schedule(static) #endif for (int i = 0; i < row * col; i++) { @@ -107,7 +126,7 @@ struct matrixCopy void operator()(const int& n1, const int& n2, const T* A, const int& LDA, T* B, const int& LDB) { #ifdef _OPENMP -#pragma omp parallel for collapse(2) schedule(static, 8192 / sizeof(T)) +#pragma omp parallel for collapse(2) schedule(static) #endif for (int i = 0; i < n1; i++) { @@ -119,12 +138,35 @@ struct matrixCopy } }; +template +struct matrix_mul_vector_op { + using Real = typename GetTypeReal::type; + void operator()(const int& m, const int &n, + T *a, + const int &lda, + const Real *b, + const Real alpha, + T *c, + const int &ldc){ +#ifdef _OPENMP +#pragma omp parallel for collapse(2) schedule(static) +#endif + for (int j = 0; j < n; j++){ + for (int i = 0; i < m; i++){ + c[j * ldc + i] = a[j * lda + i] * b[j] * alpha; + } + } + + } +}; + template struct gemv_op, base_device::DEVICE_CPU>; template struct gemv_op; template struct gemm_op, base_device::DEVICE_CPU>; template struct gemm_op; template struct matrixTranspose_op, base_device::DEVICE_CPU>; template struct matrixCopy, base_device::DEVICE_CPU>; +template struct matrix_mul_vector_op, base_device::DEVICE_CPU>; template struct gemv_op, base_device::DEVICE_CPU>; template struct gemv_op; @@ -133,11 +175,17 @@ template struct gemm_op; template struct matrixTranspose_op, base_device::DEVICE_CPU>; template struct matrixCopy; template struct matrixCopy, base_device::DEVICE_CPU>; +template struct matrix_mul_vector_op; +template struct matrix_mul_vector_op, base_device::DEVICE_CPU>; #ifdef __LCAO template struct matrixTranspose_op; #endif #ifdef __DSP +template struct gemm_op_mt; +template struct gemm_op_mt; +template struct gemv_op_mt, base_device::DEVICE_CPU>; +template struct gemv_op_mt, base_device::DEVICE_CPU>; template struct gemm_op_mt, base_device::DEVICE_CPU>; template struct gemm_op_mt, base_device::DEVICE_CPU>; #endif diff --git a/source/source_base/kernels/math_kernel_op.h b/source/source_base/kernels/math_kernel_op.h index 9476d32fdc..120844f3f9 100644 --- a/source/source_base/kernels/math_kernel_op.h +++ b/source/source_base/kernels/math_kernel_op.h @@ -104,7 +104,7 @@ template struct vector_div_constant_op { /// /// Input Parameters /// \param dim : array size - /// \param vector : input array + /// \param vector : input array /// \param constant : input constant /// /// Output Parameters @@ -241,6 +241,31 @@ template struct gemm_op { }; #ifdef __DSP +// compute Y = alpha * op(A) * X + beta * Y on DSP Hardware +template struct gemv_op_mt { + /// @brief Y = alpha * op(A) * X + beta * Y + /// + /// Input Parameters + /// \param trans : whether to transpose matrix A + /// \param m : row number of A + /// \param n : column number of A + /// \param alpha : input constant alpha + /// \param A : input matrix A + /// \param lda : leading dimension of A + /// \param X : input vector X + /// \param incx : increment of X + /// \param beta : input constant beta + /// \param Y : input vector Y + /// \param incy : increment of Y + /// + /// Output Parameters + /// \param Y : output vector Y + void operator()(const char &trans, const int &m, + const int &n, const T *alpha, const T *A, const int &lda, + const T *X, const int &incx, const T *beta, T *Y, + const int &incy); +}; + // compute C = alpha * op(A) * op(B) + beta * C on DSP Hardware template struct gemm_op_mt { /// @brief C = alpha * op(A) * op(B) + beta * C @@ -298,6 +323,31 @@ template struct matrixCopy { void operator()(const int& n1, const int& n2, const T* A, const int& LDA, T* B, const int& LDB); }; +template +struct matrix_mul_vector_op { + using Real = typename GetTypeReal::type; + /// @brief a * b * beta by each column + /// + /// Input Parameters + /// \param m : row number + /// \param n : column number + /// \param a : input matrix + /// \param lda : leading dimension of matrix a + /// \param b : input vector + /// \param alpha : factor + /// \param ldc : leading dimension of matrix c + /// + /// Output Parameters + /// \param c : output matrix + void operator()(const int &m, const int &n, + T *a, + const int &lda, + const Real *b, + const Real alpha, + T *c, + const int &ldc); +}; + template struct apply_eigenvalues_op { using Real = typename GetTypeReal::type; @@ -314,7 +364,7 @@ struct precondition_op { T* psi_iter, const int& nbase, const int& notconv, - const Real* precondition, + const Real* precondition, const Real* eigenvalues); }; @@ -393,6 +443,17 @@ template struct matrixCopy { const int& LDB); }; +template struct matrix_mul_vector_op { + using Real = typename GetTypeReal::type; + void operator()(const int &m, const int &n, + T *a, + const int &lda, + const Real *b, + const Real alpha, + T *c, + const int &ldc); +}; + void createGpuBlasHandle(); void destoryBLAShandle(); diff --git a/source/source_base/kernels/math_kernel_op_vec.cpp b/source/source_base/kernels/math_kernel_op_vec.cpp index 8353b82660..da3fdb8f06 100644 --- a/source/source_base/kernels/math_kernel_op_vec.cpp +++ b/source/source_base/kernels/math_kernel_op_vec.cpp @@ -24,7 +24,7 @@ struct vector_mul_real_op void operator()(const int dim, T* result, const T* vector, const Real constant) { #ifdef _OPENMP -#pragma omp parallel for schedule(static, 4096 / sizeof(Real)) +#pragma omp parallel for schedule(static) #endif for (int i = 0; i < dim; i++) { @@ -42,7 +42,7 @@ struct vector_mul_vector_op if (add) { #ifdef _OPENMP -#pragma omp parallel for schedule(static, 4096 / sizeof(Real)) +#pragma omp parallel for schedule(static) #endif for (int i = 0; i < dim; i++) { @@ -52,7 +52,7 @@ struct vector_mul_vector_op else { #ifdef _OPENMP -#pragma omp parallel for schedule(static, 4096 / sizeof(Real)) +#pragma omp parallel for schedule(static) #endif for (int i = 0; i < dim; i++) { @@ -69,7 +69,7 @@ struct vector_div_constant_op void operator()(const int& dim, T* result, const T* vector, const Real constant) { #ifdef _OPENMP -#pragma omp parallel for schedule(static, 4096 / sizeof(Real)) +#pragma omp parallel for schedule(static) #endif for (int i = 0; i < dim; i++) { @@ -85,7 +85,7 @@ struct vector_div_vector_op void operator()(const int& dim, T* result, const T* vector1, const Real* vector2) { #ifdef _OPENMP -#pragma omp parallel for schedule(static, 4096 / sizeof(Real)) +#pragma omp parallel for schedule(static) #endif for (int i = 0; i < dim; i++) { @@ -121,7 +121,7 @@ struct vector_add_vector_op const Real constant2) { #ifdef _OPENMP -#pragma omp parallel for schedule(static, 8192 / sizeof(T)) +#pragma omp parallel for schedule(static) #endif for (int i = 0; i < dim; i++) { diff --git a/source/source_base/kernels/rocm/math_kernel_op.hip.cu b/source/source_base/kernels/rocm/math_kernel_op.hip.cu index 8eb87988c8..1b4f30d6b2 100644 --- a/source/source_base/kernels/rocm/math_kernel_op.hip.cu +++ b/source/source_base/kernels/rocm/math_kernel_op.hip.cu @@ -145,6 +145,15 @@ __launch_bounds__(1024) __global__ } } +template +__launch_bounds__(1024) __global__ +void matrix_multiply_vector_kernel(const int m, const int n, T *a, const int lda, const Real *b, const Real alpha, T *c, const int ldc){ + int row = blockIdx.x * blockDim.x + threadIdx.x; + int col = blockIdx.y * blockDim.y + threadIdx.y; + if (col >= n || row >= m) return; + c[col * ldc + row] = a[col * lda + row] * b[col] * alpha; +} + hipblasOperation_t judge_trans_op(bool is_complex, const char& trans, const char* name) { if (trans == 'N') @@ -159,7 +168,7 @@ hipblasOperation_t judge_trans_op(bool is_complex, const char& trans, const char { return HIPBLAS_OP_C; } - else + else { ModuleBase::WARNING_QUIT(name, std::string("Unknown trans type ") + trans + std::string(" !")); } @@ -179,7 +188,7 @@ void gemv_op::operator()(const char& trans, const int& incy) { hipblasOperation_t cutrans = judge_trans_op(false, trans, "gemv_op"); - hipblasErrcheck(hipblasDgemv(cublas_handle, cutrans, m, n, alpha, A, lda, X, incx, beta, Y, incx)); + hipblasErrcheck(hipblasDgemv(cublas_handle, cutrans, m, n, alpha, A, lda, X, incx, beta, Y, incy)); } template <> @@ -196,7 +205,7 @@ void gemv_op, base_device::DEVICE_GPU>::operator()(const cha const int& incy) { hipblasOperation_t cutrans = judge_trans_op(true, trans, "gemv_op"); - hipblasErrcheck(hipblasCgemv(cublas_handle, cutrans, m, n, (hipblasComplex*)alpha, (hipblasComplex*)A, lda, (hipblasComplex*)X, incx, (hipblasComplex*)beta, (hipblasComplex*)Y, incx)); + hipblasErrcheck(hipblasCgemv(cublas_handle, cutrans, m, n, (hipblasComplex*)alpha, (hipblasComplex*)A, lda, (hipblasComplex*)X, incx, (hipblasComplex*)beta, (hipblasComplex*)Y, incy)); } template <> @@ -213,7 +222,7 @@ void gemv_op, base_device::DEVICE_GPU>::operator()(const ch const int& incy) { hipblasOperation_t cutrans = judge_trans_op(true, trans, "gemv_op"); - hipblasErrcheck(hipblasZgemv(cublas_handle, cutrans, m, n, (hipblasDoubleComplex*)alpha, (hipblasDoubleComplex*)A, lda, (hipblasDoubleComplex*)X, incx, (hipblasDoubleComplex*)beta, (hipblasDoubleComplex*)Y, incx)); + hipblasErrcheck(hipblasZgemv(cublas_handle, cutrans, m, n, (hipblasDoubleComplex*)alpha, (hipblasDoubleComplex*)A, lda, (hipblasDoubleComplex*)X, incx, (hipblasDoubleComplex*)beta, (hipblasDoubleComplex*)Y, incy)); } template <> @@ -437,7 +446,38 @@ void matrixCopy, base_device::DEVICE_GPU>::operator()(const hipCheckOnDebug(); } +template <> +void matrix_mul_vector_op::operator()(const int &m, const int &n, + double *a, const int &lda, const double *b, const double alpha, double *c, const int &ldc){ + dim3 thread(16, 16, 1); + dim3 block((m + thread.x - 1) / thread.x, (n + thread.y - 1) / thread.y, 1); + hipLaunchKernelGGL(HIP_KERNEL_NAME(matrix_multiply_vector_kernel), dim3(block, thread), + m, n, a, lda, b, alpha, c, ldc); + hipCheckOnDebug(); +} +template <> +void matrix_mul_vector_op, base_device::DEVICE_GPU>::operator()(const int &m, const int &n, + std::complex *a, const int &lda, const float *b, const float alpha, std::complex *c, const int &ldc){ + dim3 thread(16, 16, 1); + dim3 block((m + thread.x - 1) / thread.x, (n + thread.y - 1) / thread.y, 1); + hipLaunchKernelGGL(HIP_KERNEL_NAME(matrix_multiply_vector_kernel, float>), dim3(block, thread), + m, n, reinterpret_cast*>(a), lda, + b, alpha, reinterpret_cast*>(c), ldc); + hipCheckOnDebug(); +} + +template <> +void matrix_mul_vector_op, base_device::DEVICE_GPU>::operator()(const int &m, const int &n, + std::complex *a, const int &lda, const double *b, const double alpha, std::complex *c, const int &ldc) +{ + dim3 thread(16, 16, 1); + dim3 block((m + thread.x - 1) / thread.x, (n + thread.y - 1) / thread.y, 1); + hipLaunchKernelGGL(HIP_KERNEL_NAME(matrix_multiply_vector_kernel, double>), dim3(block, thread), + m, n, reinterpret_cast*>(a), lda, + b, alpha, reinterpret_cast*>(c), ldc); + hipCheckOnDebug(); +} // Explicitly instantiate functors for the types of functor registered. template struct matrixCopy; diff --git a/source/source_base/math_chebyshev.cpp b/source/source_base/math_chebyshev.cpp index aaa0e82b74..b7e59a89f9 100644 --- a/source/source_base/math_chebyshev.cpp +++ b/source/source_base/math_chebyshev.cpp @@ -61,7 +61,7 @@ Chebyshev::Chebyshev(const int norder_in) : fftw(2 * EXTEND * nord } coefr_cpu = new REAL[norder]; coefc_cpu = new std::complex[norder]; - if (base_device::get_device_type(this->ctx) == base_device::GpuDevice) + if (base_device::get_device_type(this->ctx) == base_device::GpuDevice) { resmem_var_op()(this->coef_real, norder); resmem_complex_op()(this->coef_complex, norder); @@ -82,7 +82,7 @@ template Chebyshev::~Chebyshev() { delete[] polytrace; - if (base_device::get_device_type(this->ctx) == base_device::GpuDevice) + if (base_device::get_device_type(this->ctx) == base_device::GpuDevice) { delmem_var_op()(this->coef_real); delmem_complex_op()(this->coef_complex); @@ -209,7 +209,7 @@ void Chebyshev::calcoef_real(std::function fun) } } - if (base_device::get_device_type(this->ctx) == base_device::GpuDevice) + if (base_device::get_device_type(this->ctx) == base_device::GpuDevice) { syncmem_var_h2d_op()(coef_real, coefr_cpu, norder); } @@ -299,7 +299,7 @@ void Chebyshev::calcoef_complex(std::function(s coefc_cpu[i].imag(imag(coefc_cpu[i]) + real(pcoef[i]) / norder2 * 2 / 3); } } - if (base_device::get_device_type(this->ctx) == base_device::GpuDevice) + if (base_device::get_device_type(this->ctx) == base_device::GpuDevice) { syncmem_complex_h2d_op()(coef_complex, coefc_cpu, norder); } @@ -390,7 +390,7 @@ void Chebyshev::calcoef_pair(std::function fun1, std:: } } - if (base_device::get_device_type(this->ctx) == base_device::GpuDevice) + if (base_device::get_device_type(this->ctx) == base_device::GpuDevice) { syncmem_complex_h2d_op()(coef_complex, coefc_cpu, norder); } @@ -417,7 +417,7 @@ void Chebyshev::calfinalvec_real( std::complex* arrayn = nullptr; std::complex* arrayn_1 = nullptr; assert(N >= 0 && LDA >= N); - int ndmxt; + int ndmxt = 0; if (m == 1) { ndmxt = N * m; @@ -486,7 +486,7 @@ void Chebyshev::calfinalvec_complex( std::complex* arrayn = nullptr; std::complex* arrayn_1 = nullptr; assert(N >= 0 && LDA >= N); - int ndmxt; + int ndmxt = 0; if (m == 1) { ndmxt = N * m; @@ -585,7 +585,7 @@ void Chebyshev::tracepolyA( std::complex* arrayn = nullptr; std::complex* arrayn_1 = nullptr; assert(N >= 0 && LDA >= N); - int ndmxt; + int ndmxt = 0; if (m == 1) { ndmxt = N * m; @@ -684,7 +684,7 @@ bool Chebyshev::checkconverge( funA(arrayn_1, arrayn, 1); REAL sum1, sum2; REAL t; - if (base_device::get_device_type(this->ctx) == base_device::GpuDevice) + if (base_device::get_device_type(this->ctx) == base_device::GpuDevice) { sum1 = this->ddot_real(arrayn_1, arrayn_1, N); sum2 = this->ddot_real(arrayn_1, arrayn, N); @@ -714,7 +714,7 @@ bool Chebyshev::checkconverge( for (int ior = 2; ior < norder; ++ior) { funA(arrayn, arraynp1, 1); - if (base_device::get_device_type(this->ctx) == base_device::GpuDevice) + if (base_device::get_device_type(this->ctx) == base_device::GpuDevice) { sum1 = this->ddot_real(arrayn, arrayn, N); sum2 = this->ddot_real(arrayn, arraynp1, N); diff --git a/source/source_base/math_chebyshev.h b/source/source_base/math_chebyshev.h index 581e35eed8..0b9acf50f0 100644 --- a/source/source_base/math_chebyshev.h +++ b/source/source_base/math_chebyshev.h @@ -249,7 +249,7 @@ class FFTW ~FFTW(); void execute_fftw(); double* dcoef; //[norder2] - fftw_complex* ccoef; + fftw_complex* ccoef = nullptr; fftw_plan coef_plan; }; @@ -262,7 +262,7 @@ class FFTW ~FFTW(); void execute_fftw(); float* dcoef; //[norder2] - fftwf_complex* ccoef; + fftwf_complex* ccoef = nullptr; fftwf_plan coef_plan; }; #endif diff --git a/source/source_base/math_erf_complex.cpp b/source/source_base/math_erf_complex.cpp index 18709c4866..4c7385245a 100644 --- a/source/source_base/math_erf_complex.cpp +++ b/source/source_base/math_erf_complex.cpp @@ -106,7 +106,7 @@ std::complex ErrorFunc::scaled_w(std::complex z, double relerr) else if (x < 10) { double prod2ax = 1, prodm2ax = 1; - double expx2; + double expx2 = 0.0; if (std::isnan(y)) return std::complex(y, y); @@ -235,7 +235,7 @@ std::complex ErrorFunc::scaled_w(std::complex z, double relerr) sum3 = std::exp(-dx * dx) / (a2 * (n0 * n0) + y * y); sum5 = a * n0 * sum3; double exp1 = std::exp(4 * a * dx), exp1dn = 1; - int dn; + int dn = 0; for (dn = 1; n0 - dn > 0; ++dn) { // loop over n0-dn and n0+dn terms double np = n0 + dn, nm = n0 - dn; diff --git a/source/source_base/math_ylmreal.cpp b/source/source_base/math_ylmreal.cpp index 3a11f95438..e94b027bb3 100644 --- a/source/source_base/math_ylmreal.cpp +++ b/source/source_base/math_ylmreal.cpp @@ -179,7 +179,7 @@ void YlmReal::rlylm { int twok = 2 * ik; - double gamma; + double gamma = 0.0; double aux0, aux1, aux2, aux3; aux0 = pow(-1.0, ik) * pow(2.0, -il); diff --git a/source/source_base/mathzone_add1.cpp b/source/source_base/mathzone_add1.cpp index de9f9508b3..19e4ee59df 100644 --- a/source/source_base/mathzone_add1.cpp +++ b/source/source_base/mathzone_add1.cpp @@ -64,7 +64,7 @@ void Mathzone_Add1::SplineD2 // modified by pengfei 13-8-8 add second derivative ModuleBase::timer::tick("Mathzone_Add1","SplineD2"); double dx1, dx2, dy1, dy2, p, qn, sig, un; - double *u; + double * u = nullptr; u = new double[mesh-1]; const double ypmax = 99999.00; diff --git a/source/source_base/matrix.cpp b/source/source_base/matrix.cpp index 7d58a7c867..f047f48462 100644 --- a/source/source_base/matrix.cpp +++ b/source/source_base/matrix.cpp @@ -323,35 +323,6 @@ double matrix::trace_on(void) const return tr; } -//this function is wrong, and there is no file use this function. -// void matrix::get_extreme_eigen_values(double &ev_lower, double &ev_upper)const -// { -// double *a = new double[nr]; -// double *b = new double[nr]; -// for (int i = 0; i < nr; ++i) -// { -// double sum = 0.0; -// for(int j = 0; j < nc; ++j) -// { -// sum += fabs(c[i * nc + j]); -// } -// sum -= fabs(c[i * nc + i]); -// a[i] = c[i * nc + i] - sum; -// b[i] = c[i * nc + i] + sum; -// } - -// ev_lower = a[0]; -// ev_upper = b[0]; - -// for (int i = 1; i < nr; ++i) -// { -// if (a[i] < ev_lower) ev_lower = a[i]; -// if (b[i] > ev_upper) ev_upper = b[i]; -// } -// delete[] a; -// delete[] b; -// } - // Peize Lin add 2017-05-27 void matrix::reshape( const int nr_new, const int nc_new, const bool flag_zero ) { diff --git a/source/source_base/matrix.h b/source/source_base/matrix.h index d4c9cb51b6..0a117b4ca1 100644 --- a/source/source_base/matrix.h +++ b/source/source_base/matrix.h @@ -10,7 +10,7 @@ #include #include -#include// test +#include // test namespace ModuleBase { @@ -80,7 +80,7 @@ class matrix std::ostream & print( std::ostream & os, const double threshold=0.0 ) const; // Peize Lin add 2021.09.08 - using type=double; // Peiae Lin add 2022.08.08 for template + using type=double; // Peize Lin add 2022.08.08 for template }; diff --git a/source/source_base/matrix3.cpp b/source/source_base/matrix3.cpp index 7fa4398e58..a811d113bb 100644 --- a/source/source_base/matrix3.cpp +++ b/source/source_base/matrix3.cpp @@ -7,179 +7,182 @@ Matrix3::Matrix3(const double &r11, const double &r12, const double &r13, const double &r21, const double &r22, const double &r23, const double &r31, const double &r32, const double &r33) { - e11 = r11;e12 = r12;e13 = r13; - e21 = r21;e22 = r22;e23 = r23; - e31 = r31;e32 = r32;e33 = r33; + e11 = r11; e12 = r12; e13 = r13; + e21 = r21; e22 = r22; e23 = r23; + e31 = r31; e32 = r32; e33 = r33; } void Matrix3::Identity(void) { - e11 = 1;e12 = 0;e13 = 0; - e21 = 0;e22 = 1;e23 = 0; - e31 = 0;e32 = 0;e33 = 1; + e11 = 1; e12 = 0; e13 = 0; + e21 = 0; e22 = 1; e23 = 0; + e31 = 0; e32 = 0; e33 = 1; } void Matrix3::Zero(void) { - e11 = 0;e12 = 0;e13 = 0; - e21 = 0;e22 = 0;e23 = 0; - e31 = 0;e32 = 0;e33 = 0; + e11 = 0; e12 = 0; e13 = 0; + e21 = 0; e22 = 0; e23 = 0; + e31 = 0; e32 = 0; e33 = 0; } -double Matrix3::Det(void) const +double Matrix3::Det(void) const { - return e11*e22*e33 - - e11*e32*e23 + - e21*e32*e13 - - e21*e12*e33 + - e31*e12*e23 - - e31*e22*e13; + return e11*e22*e33 - + e11*e32*e23 + + e21*e32*e13 - + e21*e12*e33 + + e31*e12*e23 - + e31*e22*e13; } Matrix3 Matrix3::Transpose(void) const { - return Matrix3(e11, e21, e31, e12, e22, e32, e13, e23, e33); + return Matrix3(e11, e21, e31, e12, e22, e32, e13, e23, e33); } Matrix3 Matrix3::Inverse(void) const { - double d = this->Det(); + double d = this->Det(); - if(d == 0)d = 1; + if(d == 0) + { + d = 1; + } - return Matrix3((e22*e33 - e23*e32) / d, - -(e12*e33 - e13*e32) / d, - (e12*e23 - e13*e22) / d, - -(e21*e33 - e23*e31) / d, - (e11*e33 - e13*e31) / d, - -(e11*e23 - e13*e21) / d, - (e21*e32 - e22*e31) / d, - -(e11*e32 - e12*e31) / d, - (e11*e22 - e12*e21) / d); + return Matrix3((e22*e33 - e23*e32) / d, + -(e12*e33 - e13*e32) / d, + (e12*e23 - e13*e22) / d, + -(e21*e33 - e23*e31) / d, + (e11*e33 - e13*e31) / d, + -(e11*e23 - e13*e21) / d, + (e21*e32 - e22*e31) / d, + -(e11*e32 - e12*e31) / d, + (e11*e22 - e12*e21) / d); } Matrix3& Matrix3::operator = (const Matrix3 &m) { - e11 = m.e11;e12 = m.e12;e13 = m.e13; - e21 = m.e21;e22 = m.e22;e23 = m.e23; - e31 = m.e31;e32 = m.e32;e33 = m.e33; - return *this; + e11 = m.e11; e12 = m.e12; e13 = m.e13; + e21 = m.e21; e22 = m.e22; e23 = m.e23; + e31 = m.e31; e32 = m.e32; e33 = m.e33; + return *this; } Matrix3& Matrix3::operator +=(const Matrix3 &m) { - e11 += m.e11;e12 += m.e12;e13 += m.e13; - e21 += m.e21;e22 += m.e22;e23 += m.e23; - e31 += m.e31;e32 += m.e32;e33 += m.e33; - return *this; + e11 += m.e11; e12 += m.e12; e13 += m.e13; + e21 += m.e21; e22 += m.e22; e23 += m.e23; + e31 += m.e31; e32 += m.e32; e33 += m.e33; + return *this; } Matrix3& Matrix3::operator -=(const Matrix3 &m) { - e11 -= m.e11;e12 -= m.e12;e13 -= m.e13; - e21 -= m.e21;e22 -= m.e22;e23 -= m.e23; - e31 -= m.e31;e32 -= m.e32;e33 -= m.e33; - return *this; + e11 -= m.e11; e12 -= m.e12; e13 -= m.e13; + e21 -= m.e21; e22 -= m.e22; e23 -= m.e23; + e31 -= m.e31; e32 -= m.e32; e33 -= m.e33; + return *this; } Matrix3& Matrix3::operator *=(const double &s) { - e11 *= s;e12 *= s;e13 *= s; - e21 *= s;e22 *= s;e23 *= s; - e31 *= s;e32 *= s;e33 *= s; - return *this; + e11 *= s; e12 *= s; e13 *= s; + e21 *= s; e22 *= s; e23 *= s; + e31 *= s; e32 *= s; e33 *= s; + return *this; } Matrix3& Matrix3::operator /=(const double &s) { - e11 /= s;e12 /= s;e13 /= s; - e21 /= s;e22 /= s;e23 /= s; - e31 /= s;e32 /= s;e33 /= s; - return *this; + e11 /= s; e12 /= s; e13 /= s; + e21 /= s; e22 /= s; e23 /= s; + e31 /= s; e32 /= s; e33 /= s; + return *this; } //m1+m2 Matrix3 operator +(const Matrix3 &m1, const Matrix3 &m2) { - return Matrix3(m1.e11 + m2.e11, - m1.e12 + m2.e12, - m1.e13 + m2.e13, - m1.e21 + m2.e21, - m1.e22 + m2.e22, - m1.e23 + m2.e23, - m1.e31 + m2.e31, - m1.e32 + m2.e32, - m1.e33 + m2.e33); + return Matrix3(m1.e11 + m2.e11, + m1.e12 + m2.e12, + m1.e13 + m2.e13, + m1.e21 + m2.e21, + m1.e22 + m2.e22, + m1.e23 + m2.e23, + m1.e31 + m2.e31, + m1.e32 + m2.e32, + m1.e33 + m2.e33); } //m1-m2 Matrix3 operator -(const Matrix3 &m1, const Matrix3 &m2) { - return Matrix3(m1.e11 - m2.e11, // Zujian Dai fix bug 2019-01-21 - m1.e12 - m2.e12, - m1.e13 - m2.e13, - m1.e21 - m2.e21, - m1.e22 - m2.e22, - m1.e23 - m2.e23, - m1.e31 - m2.e31, - m1.e32 - m2.e32, - m1.e33 - m2.e33); + return Matrix3(m1.e11 - m2.e11, // Zujian Dai fix bug 2019-01-21 + m1.e12 - m2.e12, + m1.e13 - m2.e13, + m1.e21 - m2.e21, + m1.e22 - m2.e22, + m1.e23 - m2.e23, + m1.e31 - m2.e31, + m1.e32 - m2.e32, + m1.e33 - m2.e33); } //m/s Matrix3 operator /(const Matrix3 &m, const double &s) { - return Matrix3(m.e11 / s, m.e12 / s, m.e13 / s, - m.e21 / s, m.e22 / s, m.e23 / s, - m.e31 / s, m.e32 / s, m.e33 / s); + return Matrix3(m.e11 / s, m.e12 / s, m.e13 / s, + m.e21 / s, m.e22 / s, m.e23 / s, + m.e31 / s, m.e32 / s, m.e33 / s); } //m1*m2 Matrix3 operator *(const Matrix3 &m1, const Matrix3 &m2) { - return Matrix3(m1.e11*m2.e11 + m1.e12*m2.e21 + m1.e13*m2.e31, - m1.e11*m2.e12 + m1.e12*m2.e22 + m1.e13*m2.e32, - m1.e11*m2.e13 + m1.e12*m2.e23 + m1.e13*m2.e33, - m1.e21*m2.e11 + m1.e22*m2.e21 + m1.e23*m2.e31, - m1.e21*m2.e12 + m1.e22*m2.e22 + m1.e23*m2.e32, - m1.e21*m2.e13 + m1.e22*m2.e23 + m1.e23*m2.e33, - m1.e31*m2.e11 + m1.e32*m2.e21 + m1.e33*m2.e31, - m1.e31*m2.e12 + m1.e32*m2.e22 + m1.e33*m2.e32, - m1.e31*m2.e13 + m1.e32*m2.e23 + m1.e33*m2.e33); + return Matrix3(m1.e11*m2.e11 + m1.e12*m2.e21 + m1.e13*m2.e31, + m1.e11*m2.e12 + m1.e12*m2.e22 + m1.e13*m2.e32, + m1.e11*m2.e13 + m1.e12*m2.e23 + m1.e13*m2.e33, + m1.e21*m2.e11 + m1.e22*m2.e21 + m1.e23*m2.e31, + m1.e21*m2.e12 + m1.e22*m2.e22 + m1.e23*m2.e32, + m1.e21*m2.e13 + m1.e22*m2.e23 + m1.e23*m2.e33, + m1.e31*m2.e11 + m1.e32*m2.e21 + m1.e33*m2.e31, + m1.e31*m2.e12 + m1.e32*m2.e22 + m1.e33*m2.e32, + m1.e31*m2.e13 + m1.e32*m2.e23 + m1.e33*m2.e33); } //m*s Matrix3 operator *(const Matrix3 &m,const double &s) { - return Matrix3(m.e11*s, m.e12*s, m.e13*s, - m.e21*s, m.e22*s, m.e23*s, - m.e31*s, m.e32*s, m.e33*s); + return Matrix3(m.e11*s, m.e12*s, m.e13*s, + m.e21*s, m.e22*s, m.e23*s, + m.e31*s, m.e32*s, m.e33*s); } //s*m Matrix3 operator *(const double &s, const Matrix3 &m) { - return Matrix3(m.e11*s, m.e12*s, m.e13*s, - m.e21*s, m.e22*s, m.e23*s, - m.e31*s, m.e32*s, m.e33*s); + return Matrix3(m.e11*s, m.e12*s, m.e13*s, + m.e21*s, m.e22*s, m.e23*s, + m.e31*s, m.e32*s, m.e33*s); } // whether m1==m2 bool operator==(const Matrix3 &m1, const Matrix3 &m2) { - if(m1.e11 == m2.e11 && - m1.e12 == m2.e12 && - m1.e13 == m2.e13 && - m1.e21 == m2.e21 && - m1.e22 == m2.e22 && - m1.e23 == m2.e23 && - m1.e31 == m2.e31 && - m1.e32 == m2.e32 && - m1.e33 == m2.e33) - { - return true; - } - return false; + if(m1.e11 == m2.e11 && + m1.e12 == m2.e12 && + m1.e13 == m2.e13 && + m1.e21 == m2.e21 && + m1.e22 == m2.e22 && + m1.e23 == m2.e23 && + m1.e31 == m2.e31 && + m1.e32 == m2.e32 && + m1.e33 == m2.e33) + { + return true; + } + return false; } //whether m1 != m2 @@ -189,21 +192,21 @@ bool operator!=(const Matrix3 &m1, const Matrix3 &m2) } -void Matrix3::print(void)const +void Matrix3::print(void) const { - std::cout << e11 << std::setw(15) << e12 << std::setw(15) << e13 << std::endl ; - std::cout << e21 << std::setw(15) << e22 << std::setw(15) << e23 << std::endl ; - std::cout << e31 << std::setw(15) << e32 << std::setw(15) << e33 << std::endl ; - return; + std::cout << std::setw(15) << e11 << std::setw(15) << e12 << std::setw(15) << e13 << std::endl; + std::cout << std::setw(15) << e21 << std::setw(15) << e22 << std::setw(15) << e23 << std::endl; + std::cout << std::setw(15) << e31 << std::setw(15) << e32 << std::setw(15) << e33 << std::endl; + return; } -ModuleBase::matrix Matrix3::to_matrix(void)const // Peize Lin add 2021.03.09 +ModuleBase::matrix Matrix3::to_matrix(void)const // Peize Lin add 2021.03.09 { - ModuleBase::matrix m(3,3); - m(0,0)=e11; m(0,1)=e12; m(0,2)=e13; - m(1,0)=e21; m(1,1)=e22; m(1,2)=e23; - m(2,0)=e31; m(2,1)=e32; m(2,2)=e33; - return m; + ModuleBase::matrix m(3,3); + m(0,0)=e11; m(0,1)=e12; m(0,2)=e13; + m(1,0)=e21; m(1,1)=e22; m(1,2)=e23; + m(2,0)=e31; m(2,1)=e32; m(2,2)=e33; + return m; } } \ No newline at end of file diff --git a/source/source_base/matrix_wrapper.h b/source/source_base/matrix_wrapper.h index 30951bca1f..018bc22ab7 100644 --- a/source/source_base/matrix_wrapper.h +++ b/source/source_base/matrix_wrapper.h @@ -21,7 +21,7 @@ class Matrix_Wrapper public: int nr; int nc; - double *c; + double * c = nullptr; bool flag_delete_c; Matrix_Wrapper(): nr(0), nc(0), c(nullptr), flag_delete_c(false){} diff --git a/source/source_base/matrix_wrapper_tianhe2.h b/source/source_base/matrix_wrapper_tianhe2.h index 455b60e773..b3b94e2a05 100644 --- a/source/source_base/matrix_wrapper_tianhe2.h +++ b/source/source_base/matrix_wrapper_tianhe2.h @@ -16,7 +16,7 @@ namespace ModuleBase class Matrix_Wrapper { public: - double *c; + double * c = nullptr; int nr; int nc; diff --git a/source/source_base/mcd.c b/source/source_base/mcd.c index 2af353b717..ca5009f468 100644 --- a/source/source_base/mcd.c +++ b/source/source_base/mcd.c @@ -514,7 +514,7 @@ char *MCD_strdup(const char*s,char*fun,char*file,int line) char *MCD_strdup(char*s,char*fun,char*file,int line) #endif { - char *n; + char * n = nullptr; #ifdef MCD_FASTFREE n=(char*)malloc(sizeof(char)*strlen(s)+1+sizeof(Chunk)); @@ -542,7 +542,7 @@ char *MCD_strndup(const char*s, int z,char*fun,char*file,int line) char *MCD_strndup(char*s, int z,char*fun,char*file,int line) #endif { - char *n; + char * n = nullptr; int size; if((signed)strlen(s)>z) size=z; @@ -575,7 +575,7 @@ int MCD_asprintf(char **ptr,const char *fmt,char *fun, char*file, int line,...) int retval; va_list argptr; #ifdef MCD_FASTFREE - void *fc; + void * fc = nullptr; #endif va_start(argptr,line); @@ -610,7 +610,7 @@ int MCD_vasprintf(char **ptr,const char *fmt,va_list argptr,char *fun, char*file { int retval; #ifdef MCD_FASTFREE - void *fc; + void * fc = nullptr; #endif if((retval=vasprintf(ptr, fmt, argptr))<0) @@ -781,7 +781,7 @@ void showMemStats() Chunk*c=MemoryChunks; int total=0; - FILE *o; + FILE * o = nullptr; if(MemStatLog) o=MemStatLog; diff --git a/source/source_base/memory.cpp b/source/source_base/memory.cpp index 4505bcdb71..7d7bd6bcc5 100644 --- a/source/source_base/memory.cpp +++ b/source/source_base/memory.cpp @@ -159,7 +159,7 @@ double Memory::record void Memory::record ( const std::string &name_in, - const size_t &n_in, + const long &n_in, const bool accumulate ) { diff --git a/source/source_base/memory.h b/source/source_base/memory.h index 551e7de780..38b2957c4e 100644 --- a/source/source_base/memory.h +++ b/source/source_base/memory.h @@ -45,7 +45,7 @@ class Memory */ static void record( const std::string &name_in, - const size_t &n_in, + const long &n_in, const bool accumulate = false ); diff --git a/source/source_base/module_container/ATen/core/tensor_accessor.h b/source/source_base/module_container/ATen/core/tensor_accessor.h index 40edf98c31..9fbea6f0b8 100644 --- a/source/source_base/module_container/ATen/core/tensor_accessor.h +++ b/source/source_base/module_container/ATen/core/tensor_accessor.h @@ -58,9 +58,9 @@ class TensorAccessorBase { } protected: - T* data_; - const index_t* sizes_; - const index_t* strides_; + T* data_ = nullptr; + const index_t* sizes_ = nullptr; + const index_t* strides_ = nullptr; }; template +struct blas_copy { + void operator()( + const int n, + const T *x, + const int incx, + T *y, + const int incy) + { + BlasConnector::copy(n, x, incx, y, incy); + } +}; + +template +struct blas_nrm2 { + using Real = typename GetTypeReal::type; + Real operator()( + const int n, + const T *x, + const int incx) + { + return BlasConnector::nrm2(n, x, incx); + } +}; + template struct blas_dot { void operator()( @@ -175,6 +201,17 @@ struct blas_gemm_batched_strided { }; // Explicitly instantiate functors for the types of functor registered. + +template struct blas_copy; +template struct blas_copy; +template struct blas_copy, DEVICE_CPU>; +template struct blas_copy, DEVICE_CPU>; + +template struct blas_nrm2; +template struct blas_nrm2; +template struct blas_nrm2, DEVICE_CPU>; +template struct blas_nrm2, DEVICE_CPU>; + template struct blas_dot; template struct blas_dot; template struct blas_dot, DEVICE_CPU>; @@ -221,4 +258,4 @@ template struct blas_gemm_batched_strided, DEVICE_CPU>; template struct blas_gemm_batched_strided, DEVICE_CPU>; } // namespace kernels -} // namespace container \ No newline at end of file +} // namespace container diff --git a/source/source_base/module_container/ATen/kernels/blas.h b/source/source_base/module_container/ATen/kernels/blas.h index 201021199c..550caa2f79 100644 --- a/source/source_base/module_container/ATen/kernels/blas.h +++ b/source/source_base/module_container/ATen/kernels/blas.h @@ -9,6 +9,26 @@ namespace container { namespace kernels { +template +struct blas_copy { + // DCOPY copies a vector, x, to a vector, y. + void operator()( + const int n, + const T *x, + const int incx, + T *y, + const int incy); +}; + +template +struct blas_nrm2 { + using Real = typename GetTypeReal::type; + Real operator()( + const int n, + const T *x, + const int incx); +}; + template struct blas_dot { void operator()( @@ -168,4 +188,4 @@ void destroyGpuBlasHandle(); // destory blas handle } // namespace kernels } // namespace container -#endif // ATEN_KERNELS_BLAS_H_ \ No newline at end of file +#endif // ATEN_KERNELS_BLAS_H_ diff --git a/source/source_base/module_container/ATen/kernels/cuda/blas.cu b/source/source_base/module_container/ATen/kernels/cuda/blas.cu index 8d4b5ea227..7f794768ad 100644 --- a/source/source_base/module_container/ATen/kernels/cuda/blas.cu +++ b/source/source_base/module_container/ATen/kernels/cuda/blas.cu @@ -11,17 +11,43 @@ static cublasHandle_t cublas_handle = nullptr; void createGpuBlasHandle() { if (cublas_handle == nullptr) { - cublasErrcheck(cublasCreate(&cublas_handle)); + CHECK_CUBLAS(cublasCreate(&cublas_handle)); } } void destroyGpuBlasHandle() { if (cublas_handle != nullptr) { - cublasErrcheck(cublasDestroy(cublas_handle)); + CHECK_CUBLAS(cublasDestroy(cublas_handle)); cublas_handle = nullptr; } } +template +struct blas_nrm2 { + using Real = typename GetTypeReal::type; + Real operator()( + const int n, + const T *x, + const int incx) + { + Real result; + cuBlasConnector::nrm2(cublas_handle, n, x, incx, &result); + return result; + } +}; + +template +struct blas_copy { + void operator()( + const int n, + const T * x, + const int incx, + T *y, + const int incy) + { + cuBlasConnector::copy(cublas_handle, n, x, incx, y, incy); + } +}; template struct blas_dot { @@ -76,7 +102,7 @@ struct blas_gemv { const int& incx, const T* beta, T* y, - const int& incy) + const int& incy) { cuBlasConnector::gemv(cublas_handle, trans, m, n, *alpha, A, lda, x, incx, *beta, y, incy); } @@ -196,6 +222,19 @@ struct blas_gemm_batched_strided { }; // Explicitly instantiate functors for the types of functor registered. + + + +template struct blas_copy; +template struct blas_copy; +template struct blas_copy , DEVICE_GPU>; +template struct blas_copy, DEVICE_GPU>; + +template struct blas_nrm2; +template struct blas_nrm2; +template struct blas_nrm2 , DEVICE_GPU>; +template struct blas_nrm2, DEVICE_GPU>; + template struct blas_dot; template struct blas_dot; template struct blas_dot , DEVICE_GPU>; @@ -242,4 +281,4 @@ template struct blas_gemm_batched_strided, DEVICE_GPU>; template struct blas_gemm_batched_strided, DEVICE_GPU>; } // namespace kernels -} // namespace container \ No newline at end of file +} // namespace container diff --git a/source/source_base/module_container/ATen/kernels/cuda/lapack.cu b/source/source_base/module_container/ATen/kernels/cuda/lapack.cu index 54176dae51..4c69973b6b 100644 --- a/source/source_base/module_container/ATen/kernels/cuda/lapack.cu +++ b/source/source_base/module_container/ATen/kernels/cuda/lapack.cu @@ -6,6 +6,11 @@ #include #include +#include + +#include "source_base/module_device/device_check.h" + + namespace container { namespace kernels { @@ -14,13 +19,13 @@ static cusolverDnHandle_t cusolver_handle = nullptr; void createGpuSolverHandle() { if (cusolver_handle == nullptr) { - cusolverErrcheck(cusolverDnCreate(&cusolver_handle)); + CHECK_CUSOLVER(cusolverDnCreate(&cusolver_handle)); } } void destroyGpuSolverHandle() { if (cusolver_handle != nullptr) { - cusolverErrcheck(cusolverDnDestroy(cusolver_handle)); + CHECK_CUSOLVER(cusolverDnDestroy(cusolver_handle)); cusolver_handle = nullptr; } } @@ -55,10 +60,13 @@ struct set_matrix { set_matrix_kernel<<>>( uplo, reinterpret_cast(A), dim); - cudaCheckOnDebug(); + CHECK_CUDA_SYNC(); } }; + + +// --- 1. Matrix Decomposition --- template struct lapack_trtri { void operator()( @@ -87,36 +95,6 @@ struct lapack_potrf { } }; -template -struct lapack_dnevd { - using Real = typename GetTypeReal::type; - void operator()( - const char& jobz, - const char& uplo, - T* Mat, - const int& dim, - Real* eigen_val) - { - cuSolverConnector::dnevd(cusolver_handle, jobz, uplo, dim, Mat, dim, eigen_val); - } -}; - -template -struct lapack_dngvd { - using Real = typename GetTypeReal::type; - void operator()( - const int& itype, - const char& jobz, - const char& uplo, - T* Mat_A, - T* Mat_B, - const int& dim, - Real* eigen_val) - { - cuSolverConnector::dngvd(cusolver_handle, itype, jobz, uplo, dim, Mat_A, dim, Mat_B, dim, eigen_val); - } -}; - template struct lapack_getrf { void operator()( @@ -144,6 +122,95 @@ struct lapack_getri { } }; + +template +struct lapack_geqrf_inplace { + void operator()( + const int m, + const int n, + T *d_A, + const int lda) + { + const int k = std::min(m, n); + + // Allocate tau on device + T *d_tau; + CHECK_CUDA(cudaMalloc(&d_tau, sizeof(T) * k)); + + cuSolverConnector::geqrf(cusolver_handle, m, n, d_A, lda, d_tau); + + cuSolverConnector::orgqr(cusolver_handle, m, n, k, d_A, lda, d_tau); + + CHECK_CUDA(cudaFree(d_tau)); + + // // geqrf: workspace query + + // // In practice, we use helper function to get lwork + // // Or use magma for better interface + // // Let's assume we have a way to get lwork + // // For now, do a dummy call to get it + // size_t workspaceInBytes = 0; + // CHECK_CUSOLVER(cusolverDnXgeqrf_bufferSize( + // cusolverH, m, n, + // getCudaDataType::type, d_A, lda, + // getCudaDataType::type, // for tau + // CUDA_R_32F, // numerical precision + // CUSOLVER_WORKSPACE_QUERY_USE_MAX, &workspaceInBytes)); + + // lwork = static_cast(workspaceInBytes / sizeof(T)); + + // // Allocate workspace + // T *d_work; + // CHECK_CUDA(cudaMalloc(&d_work, sizeof(T) * lwork)); + + // // 3. Perform geqrf + // CHECK_CUSOLVER(cusolverDnXgeqrf( + // cusolverH, m, n, + // getCudaDataType::type, d_A, lda, + // d_tau, + // getCudaDataType::type, + // d_work, lwork * sizeof(T), + // d_info)); + + // int info; + // CHECK_CUDA(cudaMemcpy(&info, d_info, sizeof(int), cudaMemcpyDeviceToHost)); + // if (info != 0) { + // throw std::runtime_error("cuSOLVER geqrf failed with info = " + std::to_string(info)); + // } + + // // 4. Generate Q using orgqr + // // Query workspace for orgqr + // CHECK_CUSOLVER(cusolverDnXorgqr_bufferSize( + // cusolverH, m, n, k, + // getCudaDataType::type, d_A, lda, + // getCudaDataType::type, d_tau, + // CUDA_R_32F, + // CUSOLVER_WORKSPACE_QUERY_USE_MAX, &workspaceInBytes)); + + // lwork = static_cast(workspaceInBytes / sizeof(T)); + // CHECK_CUDA(cudaRealloc(&d_work, sizeof(T) * lwork)); // or realloc + + // // orgqr: generate Q + // CHECK_CUSOLVER(cusolverDnXorgqr( + // cusolverH, m, n, k, + // getCudaDataType::type, d_A, lda, + // getCudaDataType::type, d_tau, + // d_work, lwork * sizeof(T), + // d_info)); + + // CHECK_CUDA(cudaMemcpy(&info, d_info, sizeof(int), cudaMemcpyDeviceToHost)); + // if (info != 0) { + // throw std::runtime_error("cuSOLVER orgqr failed with info = " + std::to_string(info)); + // } + + // // Clean up + // CHECK_CUDA(cudaFree(d_tau)); + // CHECK_CUDA(cudaFree(d_work)); + // CHECK_CUDA(cudaFree(d_info)); + } +}; + +// --- 2. Linear System Solvers --- template struct lapack_getrs { void operator()( @@ -160,6 +227,117 @@ struct lapack_getrs { } }; + +// --- 3. Standard & Generalized Eigenvalue --- +template +struct lapack_heevd { + using Real = typename GetTypeReal::type; + void operator()( + const int dim, + T* Mat, + const int lda, + Real* eigen_val) + { + char jobz = 'V'; // Compute eigenvalues and eigenvectors + char uplo = 'U'; + cuSolverConnector::heevd(cusolver_handle, jobz, uplo, dim, Mat, lda, eigen_val); + } +}; + +template +struct lapack_heevx { + using Real = typename GetTypeReal::type; + void operator()( + const int n, + const int lda, + const T *d_Mat, + const int neig, + Real *d_eigen_val, + T *d_eigen_vec) + { + assert(n <= lda); + // copy d_Mat to d_eigen_vec, and results will be overwritten into d_eigen_vec + // by cuSolver + CHECK_CUDA(cudaMemcpy(d_eigen_vec, d_Mat, sizeof(T) * n * lda, cudaMemcpyDeviceToDevice)); + + int meig = 0; + + cuSolverConnector::heevdx( + cusolver_handle, + n, + lda, + d_eigen_vec, + 'V', // jobz: compute vectors + 'L', // uplo: lower triangle + 'I', // range: by index + 1, neig, // il, iu + Real(0), Real(0), // vl, vu (unused) + d_eigen_val, + &meig + ); + + } +}; +template +struct lapack_hegvd { + using Real = typename GetTypeReal::type; + void operator()( + const int dim, + const int lda, + T* Mat_A, + T* Mat_B, + Real* eigen_val, + T *eigen_vec) + { + const int itype = 1; + const char jobz = 'V'; + const char uplo = 'U'; + CHECK_CUDA(cudaMemcpy(eigen_vec, Mat_A, sizeof(T) * dim * lda, cudaMemcpyDeviceToDevice)); + + // prevent B from being overwritten by Cholesky + T *d_B_backup = nullptr; + CHECK_CUDA(cudaMalloc(&d_B_backup, sizeof(T) * dim * lda)); + CHECK_CUDA(cudaMemcpy(d_B_backup, Mat_B, sizeof(T) * dim * lda, cudaMemcpyDeviceToDevice)); + + cuSolverConnector::hegvd(cusolver_handle, itype, jobz, uplo, dim, + eigen_vec, lda, + d_B_backup, lda, + eigen_val); + CHECK_CUDA(cudaFree(d_B_backup)); + } +}; + +template +struct lapack_hegvx { + using Real = typename GetTypeReal::type; + void operator()( + const int n, + const int lda, + T *A, + T *B, + const int m, + Real *eigen_val, + T *eigen_vec) + { + const int itype = 1; + const char jobz = 'V'; + const char range = 'I'; + const char uplo = 'U'; + int meig = 0; + + // this hegvdx will protect the input A, B from being overwritten + // and write the eigenvectors into eigen_vec. + cuSolverConnector::hegvdx(cusolver_handle, + itype, jobz, range, uplo, + n, lda, A, B, + Real(0), Real(0), + 1, m, &meig, + eigen_val, eigen_vec); + } +}; + + + template struct set_matrix; template struct set_matrix; template struct set_matrix, DEVICE_GPU>; @@ -175,15 +353,32 @@ template struct lapack_potrf; template struct lapack_potrf, DEVICE_GPU>; template struct lapack_potrf, DEVICE_GPU>; -template struct lapack_dnevd; -template struct lapack_dnevd; -template struct lapack_dnevd, DEVICE_GPU>; -template struct lapack_dnevd, DEVICE_GPU>; -template struct lapack_dngvd; -template struct lapack_dngvd; -template struct lapack_dngvd, DEVICE_GPU>; -template struct lapack_dngvd, DEVICE_GPU>; +template struct lapack_getrs; +template struct lapack_getrs; +template struct lapack_getrs, DEVICE_GPU>; +template struct lapack_getrs, DEVICE_GPU>; + + +template struct lapack_heevd; +template struct lapack_heevd; +template struct lapack_heevd, DEVICE_GPU>; +template struct lapack_heevd, DEVICE_GPU>; + +template struct lapack_heevx; +template struct lapack_heevx; +template struct lapack_heevx, DEVICE_GPU>; +template struct lapack_heevx, DEVICE_GPU>; + +template struct lapack_hegvd; +template struct lapack_hegvd; +template struct lapack_hegvd, DEVICE_GPU>; +template struct lapack_hegvd, DEVICE_GPU>; + +template struct lapack_hegvx; +template struct lapack_hegvx; +template struct lapack_hegvx, DEVICE_GPU>; +template struct lapack_hegvx, DEVICE_GPU>; template struct lapack_getrf; template struct lapack_getrf; @@ -195,10 +390,10 @@ template struct lapack_getri; template struct lapack_getri, DEVICE_GPU>; template struct lapack_getri, DEVICE_GPU>; -template struct lapack_getrs; -template struct lapack_getrs; -template struct lapack_getrs, DEVICE_GPU>; -template struct lapack_getrs, DEVICE_GPU>; +template struct lapack_geqrf_inplace; +template struct lapack_geqrf_inplace; +template struct lapack_geqrf_inplace, DEVICE_GPU>; +template struct lapack_geqrf_inplace, DEVICE_GPU>; } // namespace kernels } // namespace container diff --git a/source/source_base/module_container/ATen/kernels/cuda/linalg.cu b/source/source_base/module_container/ATen/kernels/cuda/linalg.cu index 04c465cfdc..9fc1f15c51 100644 --- a/source/source_base/module_container/ATen/kernels/cuda/linalg.cu +++ b/source/source_base/module_container/ATen/kernels/cuda/linalg.cu @@ -233,7 +233,7 @@ void add::operator()(const int& num_element, const T& alpha, const T* num_element, alpha_, reinterpret_cast(x), beta_, reinterpret_cast(y), reinterpret_cast(z)); - cudaCheckOnDebug(); + CHECK_CUDA_SYNC(); } template @@ -245,7 +245,7 @@ void mul::operator()(const int& num_element, const T& alpha, const T* num_element, alpha_, reinterpret_cast(x), reinterpret_cast(y)); - cudaCheckOnDebug(); + CHECK_CUDA_SYNC(); } template @@ -257,7 +257,7 @@ void mul::operator()(const int& num_element, const T& alpha, const T* num_element, alpha_, reinterpret_cast(x), reinterpret_cast(y), reinterpret_cast(z)); - cudaCheckOnDebug(); + CHECK_CUDA_SYNC(); } template @@ -268,7 +268,7 @@ void div::operator()(const int& num_element, const T& alpha, const T* do_div_kernel<<>> ( num_element, alpha_, reinterpret_cast(x), reinterpret_cast(y), reinterpret_cast(z)); - cudaCheckOnDebug(); + CHECK_CUDA_SYNC(); } template @@ -281,7 +281,7 @@ void fma::operator()(const int& num_element, const T& alpha, const T* num_element, alpha_, reinterpret_cast(x), reinterpret_cast(y), beta_, reinterpret_cast(z), reinterpret_cast(out)); - cudaCheckOnDebug(); + CHECK_CUDA_SYNC(); } template @@ -325,7 +325,7 @@ void transpose::operator()( ndim, num_elements, p_, t_perm.data(), t_in_strides.data(), t_out_strides.data(), q_); - cudaCheckOnDebug(); + CHECK_CUDA_SYNC(); } template @@ -368,7 +368,7 @@ void stride::operator()( do_stride_kernel<<>> ( ndim, num_elements, p_, t_stride.data(), t_in_strides.data(), t_out_strides.data(), q_); - cudaCheckOnDebug(); + CHECK_CUDA_SYNC(); } @@ -412,7 +412,7 @@ void inflate::operator()( do_inflate_kernel<<>> ( ndim, num_elements, p_, t_stride.data(), t_in_strides.data(), t_out_strides.data(), q_); - cudaCheckOnDebug(); + CHECK_CUDA_SYNC(); } @@ -432,7 +432,7 @@ void reduce::operator()( do_reduce_kernel<<>> ( num_element, inner_most_dim, p_, q_); - cudaCheckOnDebug(); + CHECK_CUDA_SYNC(); } template struct add; diff --git a/source/source_base/module_container/ATen/kernels/cuda/memory.cu b/source/source_base/module_container/ATen/kernels/cuda/memory.cu index c858984be4..1012b351ea 100644 --- a/source/source_base/module_container/ATen/kernels/cuda/memory.cu +++ b/source/source_base/module_container/ATen/kernels/cuda/memory.cu @@ -51,7 +51,7 @@ void resize_memory::operator()( if (arr != nullptr) { delete_memory()(arr); } - cudaErrcheck(cudaMalloc((void **)&arr, sizeof(T) * size)); + CHECK_CUDA(cudaMalloc((void **)&arr, sizeof(T) * size)); } template @@ -62,7 +62,7 @@ void set_memory::operator()( { const int block = static_cast((size + THREADS_PER_BLOCK - 1) / THREADS_PER_BLOCK); do_set_memory<<>>(arr, var, size); - cudaCheckOnDebug(); + CHECK_CUDA_SYNC(); } template @@ -72,7 +72,7 @@ struct synchronize_memory { const T *arr_in, const size_t& size) { - cudaErrcheck(cudaMemcpy(arr_out, arr_in, sizeof(T) * size, cudaMemcpyDeviceToHost)); + CHECK_CUDA(cudaMemcpy(arr_out, arr_in, sizeof(T) * size, cudaMemcpyDeviceToHost)); } }; @@ -83,7 +83,7 @@ struct synchronize_memory { const T *arr_in, const size_t& size) { - cudaErrcheck(cudaMemcpy(arr_out, arr_in, sizeof(T) * size, cudaMemcpyHostToDevice)); + CHECK_CUDA(cudaMemcpy(arr_out, arr_in, sizeof(T) * size, cudaMemcpyHostToDevice)); } }; @@ -94,7 +94,7 @@ struct synchronize_memory { const T *arr_in, const size_t& size) { - cudaErrcheck(cudaMemcpy(arr_out, arr_in, sizeof(T) * size, cudaMemcpyHostToDevice)); + CHECK_CUDA(cudaMemcpy(arr_out, arr_in, sizeof(T) * size, cudaMemcpyHostToDevice)); } }; @@ -108,7 +108,7 @@ struct cast_memory { { const int block = static_cast((size + THREADS_PER_BLOCK - 1) / THREADS_PER_BLOCK); do_cast_memory<<>>(arr_out, arr_in, size); - cudaCheckOnDebug(); + CHECK_CUDA_SYNC(); } }; @@ -121,12 +121,12 @@ struct cast_memory { const size_t& size) { T_in * arr = nullptr; - cudaErrcheck(cudaMalloc((void **)&arr, sizeof(T_in) * size)); - cudaErrcheck(cudaMemcpy(arr, arr_in, sizeof(T_in) * size, cudaMemcpyHostToDevice)); + CHECK_CUDA(cudaMalloc((void **)&arr, sizeof(T_in) * size)); + CHECK_CUDA(cudaMemcpy(arr, arr_in, sizeof(T_in) * size, cudaMemcpyHostToDevice)); const int block = static_cast((size + THREADS_PER_BLOCK - 1) / THREADS_PER_BLOCK); do_cast_memory<<>>(arr_out, arr, size); - cudaCheckOnDebug(); - cudaErrcheck(cudaFree(arr)); + CHECK_CUDA_SYNC(); + CHECK_CUDA(cudaFree(arr)); } }; @@ -139,7 +139,7 @@ struct cast_memory { const size_t& size) { auto * arr = (T_in*) malloc(sizeof(T_in) * size); - cudaErrcheck(cudaMemcpy(arr, arr_in, sizeof(T_in) * size, cudaMemcpyDeviceToHost)); + CHECK_CUDA(cudaMemcpy(arr, arr_in, sizeof(T_in) * size, cudaMemcpyDeviceToHost)); for (int ii = 0; ii < size; ii++) { arr_out[ii] = static_cast(arr[ii]); } @@ -151,7 +151,7 @@ template void delete_memory::operator() ( T* arr) { - cudaErrcheck(cudaFree(arr)); + CHECK_CUDA(cudaFree(arr)); } template struct resize_memory; diff --git a/source/source_base/module_container/ATen/kernels/lapack.cpp b/source/source_base/module_container/ATen/kernels/lapack.cpp index 2369306309..2ab02f35c8 100644 --- a/source/source_base/module_container/ATen/kernels/lapack.cpp +++ b/source/source_base/module_container/ATen/kernels/lapack.cpp @@ -1,10 +1,21 @@ +#include "source_base/module_device/types.h" #include #include +#include // std::copy +#include +#include +#include + namespace container { namespace kernels { +inline double get_real(const std::complex &x) { return x.real(); } +inline float get_real(const std::complex &x) { return x.real(); } +inline double get_real(const double &x) { return x; } +inline float get_real(const float &x) { return x; } + template struct set_matrix { void operator() ( @@ -29,6 +40,7 @@ struct set_matrix { } }; +// --- 1. Matrix Decomposition --- template struct lapack_trtri { void operator()( @@ -36,7 +48,7 @@ struct lapack_trtri { const char& diag, const int& dim, T* Mat, - const int& lda) + const int& lda) { int info = 0; lapackConnector::trtri(uplo, diag, dim, Mat, lda, info); @@ -51,8 +63,8 @@ struct lapack_potrf { void operator()( const char& uplo, const int& dim, - T* Mat, - const int& lda) + T* Mat, + const int& lda) { int info = 0; lapackConnector::potrf(uplo, dim, Mat, dim, info); @@ -62,48 +74,135 @@ struct lapack_potrf { } }; + template -struct lapack_dnevd { - using Real = typename GetTypeReal::type; +struct lapack_getrf { void operator()( - const char& jobz, - const char& uplo, + const int& m, + const int& n, T* Mat, - const int& dim, - Real* eigen_val) + const int& lda, + int* ipiv) { int info = 0; - int lwork = std::max(2 * dim + dim * dim, 1 + 6 * dim + 2 * dim * dim); + lapackConnector::getrf(m, n, Mat, lda, ipiv, info); + if (info != 0) { + throw std::runtime_error("getrf failed with info = " + std::to_string(info)); + } + } +}; + +template +struct lapack_getri { + void operator()( + const int& n, + T* Mat, + const int& lda, + const int* ipiv, + T* work, + const int& lwork) + { + int info = 0; + lapackConnector::getri(n, Mat, lda, ipiv, work, lwork, info); + if (info != 0) { + throw std::runtime_error("getri failed with info = " + std::to_string(info)); + } + } +}; + +template +struct lapack_geqrf_inplace { + void operator()( + const int m, + const int n, + T *A, + const int lda) + { + // Tensor or vector? + // 1. tau for storing the Householder reflectors + // tau should be dimension min(m, n) + int k = std::min(m, n); + Tensor tau(DataTypeToEnum::value, DeviceType::CpuDevice, {k}); + tau.zero(); + + int info = 0; + + // 2. query for workspace size + int lwork = -1; + T work_query; + lapackConnector::geqrf(m, n, A, lda, tau.data(), &work_query, lwork, info); + if (info != 0) { + throw std::runtime_error("geqrf workspace query failed with info = " + std::to_string(info)); + } + // allocate workspace + lwork = static_cast(get_real(work_query)); Tensor work(DataTypeToEnum::value, DeviceType::CpuDevice, {lwork}); work.zero(); - int lrwork = 1 + 5 * dim + 2 * dim * dim; - Tensor rwork(DataTypeToEnum::value, DeviceType::CpuDevice, {lrwork}); - rwork.zero(); + // 3. perform QR decomposition + // and A is overwritten with upper R. + // Lower A + tau => Q + lapackConnector::geqrf(m, n, A, lda, tau.data(), work.data(), lwork, info); + if (info != 0) { + throw std::runtime_error("geqrf failed with info = " + std::to_string(info)); + } - int liwork = 3 + 5 * dim; - Tensor iwork(DataTypeToEnum::value, DeviceType::CpuDevice, {liwork}); - iwork.zero(); + // 4. use orgqr to compute Q + // workspace query + lwork = -1; + lapackConnector::orgqr(m, n, k, A, lda, tau.data(), &work_query, lwork, info); + if (info != 0) { + throw std::runtime_error("orgqr workspace query failed with info = " + std::to_string(info)); + } + // allocate workspace + lwork = static_cast(get_real(work_query)); + work.resize({lwork}); - lapackConnector::dnevd(jobz, uplo, dim, Mat, dim, eigen_val, work.data(), lwork, rwork.data(), lrwork, iwork.data(), liwork, info); + // compute Q + lapackConnector::orgqr(m, n, k, A, lda, tau.data(), work.data(), lwork, info); if (info != 0) { - throw std::runtime_error("dnevd failed with info = " + std::to_string(info)); + throw std::runtime_error("orgqr failed with info = " + std::to_string(info)); } + + // now, A should be overwritten with Q, columns orthogonal + } }; +// --- 2. Linear System Solvers --- template -struct lapack_dngvd { +struct lapack_getrs { + void operator()( + const char& trans, + const int& n, + const int& nrhs, + T* A, + const int& lda, + const int* ipiv, + T* B, + const int& ldb) + { + int info = 0; + lapackConnector::getrs(trans, n, nrhs, A, lda, ipiv, B, ldb, info); + if (info != 0) { + throw std::runtime_error("getrs failed with info = " + std::to_string(info)); + } + } +}; + + +// --- 3. Standard & Generalized Eigenvalue --- +template +struct lapack_heevd { using Real = typename GetTypeReal::type; void operator()( - const int& itype, - const char& jobz, - const char& uplo, - T* Mat_A, - T* Mat_B, - const int& dim, + const int dim, + T* Mat, + const int lda, Real* eigen_val) { + char jobz = 'V'; // Compute eigenvalues and eigenvectors + char uplo = 'U'; int info = 0; int lwork = std::max(2 * dim + dim * dim, 1 + 6 * dim + 2 * dim * dim); Tensor work(DataTypeToEnum::value, DeviceType::CpuDevice, {lwork}); @@ -114,71 +213,257 @@ struct lapack_dngvd { rwork.zero(); int liwork = 3 + 5 * dim; - Tensor iwork(DataType::DT_INT, DeviceType::CpuDevice, {liwork}); + Tensor iwork(DataTypeToEnum::value, DeviceType::CpuDevice, {liwork}); iwork.zero(); - lapackConnector::dngvd(itype, jobz, uplo, dim, Mat_A, dim, Mat_B, dim, eigen_val, work.data(), lwork, rwork.data(), lrwork, iwork.data(), liwork, info); + lapackConnector::heevd(jobz, uplo, dim, Mat, lda, eigen_val, work.data(), lwork, rwork.data(), lrwork, iwork.data(), liwork, info); if (info != 0) { - throw std::runtime_error("dngvd failed with info = " + std::to_string(info)); + throw std::runtime_error("heevd failed with info = " + std::to_string(info)); } } }; template -struct lapack_getrf { +struct lapack_heevx { + using Real = typename GetTypeReal::type; void operator()( - const int& m, - const int& n, - T* Mat, - const int& lda, - int* ipiv) + const int n, + const int lda, + const T *Mat, + const int neig, + Real *eigen_val, + T *eigen_vec) { + // copy Mat to aux, solve heevx(aux, eigen_val, eigen_vec) + // input Mat is not referenced in actual heevx LAPACK routines, and aux is destroyed. + Tensor aux(DataTypeToEnum::value, DeviceType::CpuDevice, {n * lda}); + // Copy Mat to aux since heevx will destroy it + // aux = Mat + std::copy(Mat, Mat + n * lda, aux.data()); + + char jobz = 'V'; // Compute eigenvalues and eigenvectors + char range = 'I'; // Find eigenvalues in index range [il, iu] + char uplo = 'L'; // Use Lower triangle int info = 0; - lapackConnector::getrf(m, n, Mat, lda, ipiv, info); + int found = 0; // Number of eigenvalues found + // found should be iu - il + 1, i.e. found = neig + const int il = 1; + const int iu = neig; + Real abstol = 0.0; + + // Workspace query first + int lwork = -1; + T work_query; + Real rwork_query; + int iwork_query; + int ifail_query; + + // Dummy call to get optimal workspace size + // when lwork = -1 + lapackConnector::heevx( + jobz, range, uplo, n, + aux.data(), lda, + 0.0, 0.0, il, iu, // vl, vu not used when range='I' + abstol, + found, + eigen_val, + eigen_vec, lda, + &work_query, lwork, + &rwork_query, + &iwork_query, + &ifail_query, + info); + if (info != 0) { - throw std::runtime_error("getrf failed with info = " + std::to_string(info)); + throw std::runtime_error("heevx workspace query failed with info = " + std::to_string(info)); } + + lwork = static_cast(get_real(work_query)); + + // Allocate buffers using Tensor (RAII) + Tensor work(DataTypeToEnum::value, DeviceType::CpuDevice, {lwork}); + work.zero(); + + Tensor rwork(DataTypeToEnum::value, DeviceType::CpuDevice, {7 * n}); + rwork.zero(); + + Tensor iwork(DataType::DT_INT, DeviceType::CpuDevice, {5 * n}); + iwork.zero(); + + Tensor ifail(DataType::DT_INT, DeviceType::CpuDevice, {n}); + ifail.zero(); + + // Actual call to heevx + lapackConnector::heevx( + jobz, range, uplo, n, + aux.data(), lda, + 0.0, 0.0, il, iu, + abstol, + found, + eigen_val, + eigen_vec, lda, + work.data(), lwork, + rwork.data(), + iwork.data(), + ifail.data(), + info); + + if (info != 0) { + throw std::runtime_error("heevx failed with info = " + std::to_string(info)); + } + } }; template -struct lapack_getri { +struct lapack_hegvd { + using Real = typename GetTypeReal::type; void operator()( - const int& n, - T* Mat, - const int& lda, - const int* ipiv, - T* work, - const int& lwork) + const int dim, + const int lda, + T *Mat_A, + T *Mat_B, + Real *eigen_val, + T *eigen_vec) { + // first copy Mat_A to eigen_vec + // then pass as argument "A" in lapack hegvd + // and this block of memory will be overwritten by eigenvectors + // eigen_vec = Mat_A + std::copy(Mat_A, Mat_A + dim*lda, eigen_vec); + + Tensor aux_B(DataTypeToEnum::value, DeviceType::CpuDevice, {dim * lda}); + std::copy(Mat_B, Mat_B + dim * lda, aux_B.data()); + + const int itype = 1; + const char jobz = 'V'; + const char uplo = 'L'; int info = 0; - lapackConnector::getri(n, Mat, lda, ipiv, work, lwork, info); + int lwork = std::max(2 * dim + dim * dim, 1 + 6 * dim + 2 * dim * dim); + Tensor work(DataTypeToEnum::value, DeviceType::CpuDevice, {lwork}); + work.zero(); + + int lrwork = 1 + 5 * dim + 2 * dim * dim; + Tensor rwork(DataTypeToEnum::value, DeviceType::CpuDevice, {lrwork}); + rwork.zero(); + + int liwork = 3 + 5 * dim; + Tensor iwork(DataType::DT_INT, DeviceType::CpuDevice, {liwork}); + iwork.zero(); + + // After this, eigen_vec will contain the matrix Z of eigenvectors + lapackConnector::hegvd(itype, jobz, uplo, dim, eigen_vec, lda, aux_B.data(), lda, eigen_val, work.data(), lwork, rwork.data(), lrwork, iwork.data(), liwork, info); if (info != 0) { - throw std::runtime_error("getri failed with info = " + std::to_string(info)); + throw std::runtime_error("hegvd failed with info = " + std::to_string(info)); } } }; + template -struct lapack_getrs { +struct lapack_hegvx { + using Real = typename GetTypeReal::type; void operator()( - const char& trans, - const int& n, - const int& nrhs, - T* A, - const int& lda, - const int* ipiv, - T* B, - const int& ldb) + const int n, + const int lda, + T *Mat_A, + T *Mat_B, + const int m, + Real *eigen_val, + T *eigen_vec) { + // first copy Mat_A and Mat_B to auxiliary memory + // to avoid the origin block being overwritten by hegvx + Tensor aux_A(DataTypeToEnum::value, DeviceType::CpuDevice, {n * lda}); + std::copy(Mat_A, Mat_A + n * lda, aux_A.data()); + Tensor aux_B(DataTypeToEnum::value, DeviceType::CpuDevice, {n * lda}); + std::copy(Mat_B, Mat_B + n * lda, aux_B.data()); + + const int itype = 1; // ITYPE = 1: A*x = (lambda)*B*x + const char jobz = 'V';// JOBZ = 'V': Compute eigenvalues and eigenvectors. + const char range = 'I'; // RANGE = 'I': the IL-th through IU-th eigenvalues will be found. + const char uplo = 'L'; // UPLO = 'L': Lower triangles of A and B are stored. + + const int il = 1; + const int iu = m; + int found = m; // Found, should be iu - il + 1 int info = 0; - lapackConnector::getrs(trans, n, nrhs, A, lda, ipiv, B, ldb, info); - if (info != 0) { - throw std::runtime_error("getrs failed with info = " + std::to_string(info)); + + int lwork = -1; + + T work_query; + Real rwork_query; + + // set lwork = -1 to query optimal work size + lapackConnector::hegvx( + itype, jobz, range, uplo, + n, + aux_A.data(), lda, // A (in/out) + aux_B.data(), lda, // B (in/out) + 0.0, 0.0, // VL, VU (not used) + il, iu, // IL, IU + Real(0.0), // ABSTOL + found, // M (output) + eigen_val, // W (output) + eigen_vec, lda, // Z (output) + &work_query, // WORK (query) + lwork, + &rwork_query, // RWORK (query) + static_cast(nullptr), // IWORK (query) + static_cast(nullptr), // IFAIL (query) + info); + + // !> If LWORK = -1, then a workspace query is assumed; the routine + // !> only calculates the optimal size of the WORK array, returns + // !> this value as the first entry of the WORK array. + lwork = static_cast(get_real(work_query)); + lwork = std::max(lwork, 1); + + // work space + Tensor work(DataTypeToEnum::value, DeviceType::CpuDevice, {lwork}); + work.zero(); + + const int lrwork = 7 * n; + Tensor rwork(DataTypeToEnum::value, DeviceType::CpuDevice, {lrwork}); + rwork.zero(); + + const int liwork = 5 * n; + Tensor iwork(DataType::DT_INT, DeviceType::CpuDevice, {liwork}); + iwork.zero(); + + std::vector ifail(n); + + lapackConnector::hegvx( + itype, jobz, range, uplo, + n, + aux_A.data(), lda, // A + aux_B.data(), lda, // B + 0.0, 0.0, // VL, VU + il, iu, // IL, IU + Real(0.0), // ABSTOL + found, // M (output) + eigen_val, // W + eigen_vec, lda, // Z (output) + work.data(), // WORK + lwork, + rwork.data(), // RWORK + iwork.data(), // IWORK + ifail.data(), // IFAIL + info); + + if (info < 0) { + throw std::runtime_error("hegvx failed: illegal argument #" + std::to_string(-info)); + } + if (info > 0) { + throw std::runtime_error("hegvx failed to converge. Number of converged eigenvalues: " + std::to_string(info)); } } }; + + + + template struct set_matrix; template struct set_matrix; template struct set_matrix, DEVICE_CPU>; @@ -194,15 +479,6 @@ template struct lapack_trtri; template struct lapack_trtri, DEVICE_CPU>; template struct lapack_trtri, DEVICE_CPU>; -template struct lapack_dnevd; -template struct lapack_dnevd; -template struct lapack_dnevd, DEVICE_CPU>; -template struct lapack_dnevd, DEVICE_CPU>; - -template struct lapack_dngvd; -template struct lapack_dngvd; -template struct lapack_dngvd, DEVICE_CPU>; -template struct lapack_dngvd, DEVICE_CPU>; template struct lapack_getrf; template struct lapack_getrf; @@ -214,10 +490,36 @@ template struct lapack_getri; template struct lapack_getri, DEVICE_CPU>; template struct lapack_getri, DEVICE_CPU>; + template struct lapack_getrs; template struct lapack_getrs; template struct lapack_getrs, DEVICE_CPU>; template struct lapack_getrs, DEVICE_CPU>; +template struct lapack_geqrf_inplace; +template struct lapack_geqrf_inplace; +template struct lapack_geqrf_inplace, DEVICE_CPU>; +template struct lapack_geqrf_inplace, DEVICE_CPU>; + +template struct lapack_heevd; +template struct lapack_heevd; +template struct lapack_heevd, DEVICE_CPU>; +template struct lapack_heevd, DEVICE_CPU>; + +template struct lapack_heevx; +template struct lapack_heevx; +template struct lapack_heevx, DEVICE_CPU>; +template struct lapack_heevx, DEVICE_CPU>; + +template struct lapack_hegvd; +template struct lapack_hegvd; +template struct lapack_hegvd, DEVICE_CPU>; +template struct lapack_hegvd, DEVICE_CPU>; + +template struct lapack_hegvx; +template struct lapack_hegvx; +template struct lapack_hegvx, DEVICE_CPU>; +template struct lapack_hegvx, DEVICE_CPU>; + } // namespace kernels -} // namespace container \ No newline at end of file +} // namespace container diff --git a/source/source_base/module_container/ATen/kernels/lapack.h b/source/source_base/module_container/ATen/kernels/lapack.h index cf164dec10..117f8ef24b 100644 --- a/source/source_base/module_container/ATen/kernels/lapack.h +++ b/source/source_base/module_container/ATen/kernels/lapack.h @@ -1,6 +1,7 @@ #ifndef ATEN_KERNELS_LAPACK_H_ #define ATEN_KERNELS_LAPACK_H_ +#include "source_base/macros.h" #include #include @@ -19,6 +20,7 @@ struct set_matrix { }; +// --- 1. Matrix Decomposition --- template struct lapack_trtri { void operator()( @@ -35,37 +37,10 @@ struct lapack_potrf { void operator()( const char& uplo, const int& dim, - T* Mat, - const int& lda); -}; - - -template -struct lapack_dnevd { - using Real = typename GetTypeReal::type; - void operator()( - const char& jobz, - const char& uplo, T* Mat, - const int& dim, - Real* eigen_val); -}; - - -template -struct lapack_dngvd { - using Real = typename GetTypeReal::type; - void operator()( - const int& itype, - const char& jobz, - const char& uplo, - T* Mat_A, - T* Mat_B, - const int& dim, - Real* eigen_val); + const int& lda); }; - template struct lapack_getrf { void operator()( @@ -88,6 +63,57 @@ struct lapack_getri { const int& lwork); }; +// This is QR factorization in-place +// that will change input Mat A to orthogonal/unitary matrix Q +template +struct lapack_geqrf_inplace { + /** + * @brief Perform in-place QR factorization of a matrix using LAPACK's geqrf function. + * + * This function computes the QR factorization of an m-by-n matrix A as A = Q * R, + * where Q is an orthogonal/unitary matrix and R is an upper triangular matrix. + * The factorization is performed in-place, meaning the input matrix A will be modified. + * + * On exit: A is overwritten with the QR factorization Q orthogonal/unitary matrix + * + * @param m The number of rows in the matrix A. m >= 0 + * @param n The number of columns in the matrix A. n >= 0 + * @param A Pointer to the matrix A to be factorized. On exit, contains the QR factorization + * @param lda The leading dimension of the matrix A. lda >= max(1, m) + */ + void operator()( + const int m, + const int n, + T *A, + const int lda); +}; + +// This is QR factorization +// where [in]Mat will be kept and the results are stored in separate matrix Q +// template +// struct lapack_geqrf{ +// /** +// * Perform QR factorization of a matrix using LAPACK's geqrf function. +// * +// * @param m The number of rows in the matrix. +// * @param n The number of columns in the matrix. +// * @param Mat The matrix to be factorized. +// * On exit, the upper triangle contains the upper triangular matrix R, +// * and the elements below the diagonal, with the array TAU, represent +// * the unitary matrix Q as a product of min(m,n) elementary reflectors. +// * @param lda The leading dimension of the matrix. +// * @param tau Array of size min(m,n) containing the Householder reflectors. +// */ +// void operator()( +// const int m, +// const int n, +// T *Mat, +// const int lda, +// T *tau); +// }; + + +// --- 2. Linear System Solvers --- template struct lapack_getrs { void operator()( @@ -101,6 +127,170 @@ struct lapack_getrs { const int& ldb); }; + + +// --- 3. Standard & Generalized Eigenvalue --- + +// ============================================================================ +// Standard Hermitian Eigenvalue Problem Solvers +// ============================================================================ +// The following structures (lapack_heevd and lapack_heevx) implement solvers +// for standard Hermitian eigenvalue problems of the form: +// A * x = lambda * x +// where: +// - A is a Hermitian matrix +// - lambda are the eigenvalues to be computed +// - x are the corresponding eigenvectors +// +// ============================================================================ +template +struct lapack_heevd { + // !> ZHEEVD computes all eigenvalues and, optionally, eigenvectors of a + // !> complex Hermitian matrix A. If eigenvectors are desired, it uses a + // !> divide and conquer algorithm. + // !> On exit, if JOBZ = 'V', then if INFO = 0, A contains the + // !> orthonormal eigenvectors of the matrix A. + /** + * @brief Computes all eigenvalues and, optionally, eigenvectors of a complex Hermitian matrix. + * + * This function solves the standard Hermitian eigenvalue problem A*x = lambda*x, + * where A is a Hermitian matrix. It computes all eigenvalues and optionally + * the corresponding eigenvectors using a divide and conquer algorithm. + * + * @param[in] dim The order of the matrix A. dim >= 0. + * @param[in,out] Mat On entry, the Hermitian matrix A. + * On exit, if eigenvectors are computed, A contains the + * orthonormal eigenvectors of the matrix A. + * @param[in] lda The leading dimension of the array Mat. lda >= max(1, dim). + * @param[out] eigen_val Array of size at least dim. On normal exit, contains the + * eigenvalues in ascending order. + * + * @note + * See LAPACK ZHEEVD or CHEEVD documentation for more details. + * The matrix is assumed to be stored in upper or lower triangular form + * according to the uplo parameter (not shown here but typically passed + * to the actual implementation). + */ + using Real = typename GetTypeReal::type; + void operator()( + const int dim, + T* Mat, + const int lda, + Real* eigen_val); +}; + +template +struct lapack_heevx { + using Real = typename GetTypeReal::type; + /** + * @brief Computes selected eigenvalues and, optionally, eigenvectors of a complex Hermitian matrix. + * + * This function solves the problem A*x = lambda*x, where A is a Hermitian matrix. + * It computes a subset of eigenvalues and, optionally, the corresponding eigenvectors. + * + * @param dim The order of the matrix A. dim >= 0. + * @param lda The leading dimension of the array Mat. lda >= max(1, dim). + * @param[in] Mat On entry, the Hermitian matrix A. On exit, A is kept. + * Only used to provide values of matrix. + * @param neig The number of eigenvalues to be found. 0 <= neig <= dim. + * @param eigen_val On normal exit, the first \p neig elements contain the selected + * eigenvalues in ascending order. + * @param eigen_vec If eigen_vec is not nullptr, then on exit it contains the + * orthonormal eigenvectors of the matrix A. The eigenvectors are stored in + * the columns of eigen_vec, in the same order as the eigenvalues. + * + * @note + * See LAPACK ZHEEVX or CHEEVX documentation for more details. + * This routine allocates auxiliary memory inside to prevent input matrix from being destroyed. + */ + void operator()( + const int dim, + const int lda, + const T *Mat, + const int neig, + Real *eigen_val, + T *eigen_vec); +}; + + +// ============================================================================ +// Generalized Hermitian-definite Eigenvalue Problem Solvers +// ============================================================================ +// The following structures (lapack_hegvd and lapack_hegvx) implement solvers +// for generalized Hermitian-definite eigenvalue problems of the form: +// A * x = lambda * B * x +// where: +// - A is a Hermitian matrix +// - B is a Hermitian positive definite matrix +// - lambda are the eigenvalues to be computed +// - x are the corresponding eigenvectors +// +// ============================================================================ + +template +struct lapack_hegvd { + using Real = typename GetTypeReal::type; + /** + * @brief Computes all the eigenvalues and, optionally, the eigenvectors of a complex generalized Hermitian-definite eigenproblem. + * + * This function solves the problem A*x = lambda*B*x, where A and B are Hermitian matrices, and B is also positive definite. + * + * @param n The order of the matrices Mat_A and Mat_B. n >= 0. + * @param lda The leading dimension of the arrays Mat_A and Mat_B. lda >= max(1, n). + * @param Mat_A On entry, the Hermitian matrix A. On exit, it may be overwritten. + * @param Mat_B On entry, the Hermitian positive definite matrix B. On exit, it may be overwritten. + * @param eigen_val Array to store the computed eigenvalues in ascending order. + * @param eigen_vec If not nullptr, array to store the computed eigenvectors. + * + * @note + * See LAPACK ZHEGVD or CHEGVD documentation for more details. + * This function assumes that A and B have the same leading dimensions, lda. + * This function copies B to auxiliary memory to avoid being overwritten. + */ + void operator()( + const int n, + const int lda, + T *Mat_A, + T *Mat_B, + Real *eigen_val, + T *eigen_vec); +}; + +template +struct lapack_hegvx { + using Real = typename GetTypeReal::type; + /** + * @ brief hegvx computes the first m eigenvalues and their corresponding eigenvectors of + * a complex generalized Hermitian-definite eigenproblem. + * + * In this op, the CPU version is implemented through the `hegvx` interface, and the CUDA version + * is implemented through the `evd` interface and acquires the first m eigenpairs + * + * hegvx 'V' 'I' 'U' is used to compute the first m eigenpairs of the problem + * + * @param n The order of the matrices A and B. n >= 0. + * @param lda The leading dimension of the array A and B. lda >= max(1, n). + * @param A On entry, the Hermitian matrix A. On exit, if info = 0, A contains the matrix Z of eigenvectors. + * @param B On entry, the Hermitian positive definite matrix B. On exit, the triangular factor from the Cholesky factorization of B. + * @param m The number of eigenvalues and eigenvectors to be found. 0 < m <= n. + * @param eigen_val The first m eigenvalues in ascending order. + * @param eigen_vec The first m columns contain the orthonormal eigenvectors of the matrix A corresponding to the selected eigenvalues. + * + * @note + * See LAPACK ZHEGVX doc for more details. + * This routine allocates auxiliary memory inside to prevent input matrix from being destroyed. + */ + void operator()( + const int n, + const int lda, + T *Mat_A, + T *Mat_B, + const int m, + Real *eigen_val, + T *eigen_vec); +}; + + #if defined(__CUDA) || defined(__ROCM) // TODO: Use C++ singleton to manage the GPU handles void createGpuSolverHandle(); // create cusolver handle @@ -110,4 +300,4 @@ void destroyGpuSolverHandle(); // destroy cusolver handle } // namespace container } // namespace kernels -#endif // ATEN_KERNELS_LAPACK_H_ \ No newline at end of file +#endif // ATEN_KERNELS_LAPACK_H_ diff --git a/source/source_base/module_container/ATen/kernels/rocm/blas.hip.cu b/source/source_base/module_container/ATen/kernels/rocm/blas.hip.cu index 5ad275460c..9fa7f63f08 100644 --- a/source/source_base/module_container/ATen/kernels/rocm/blas.hip.cu +++ b/source/source_base/module_container/ATen/kernels/rocm/blas.hip.cu @@ -23,6 +23,19 @@ void destroyGpuBlasHandle() { } +template +struct blas_nrm2 { + T operator()( + const int n, + const T *x, + const int incx) + { + T result; + hipBlasConnector::nrm2(hipblas_handle, n, x, incx, &result); + return result; + } +}; + template struct blas_dot { void operator()( @@ -196,6 +209,11 @@ struct blas_gemm_batched_strided { }; // Explicitly instantiate functors for the types of functor registered. +template struct blas_nrm2; +template struct blas_nrm2; +template struct blas_nrm2 , DEVICE_GPU>; +template struct blas_nrm2, DEVICE_GPU>; + template struct blas_dot; template struct blas_dot; template struct blas_dot , DEVICE_GPU>; diff --git a/source/source_base/module_container/ATen/kernels/rocm/lapack.hip.cu b/source/source_base/module_container/ATen/kernels/rocm/lapack.hip.cu index cc0a77cb4c..07572a657a 100644 --- a/source/source_base/module_container/ATen/kernels/rocm/lapack.hip.cu +++ b/source/source_base/module_container/ATen/kernels/rocm/lapack.hip.cu @@ -28,8 +28,8 @@ void destroyGpuSolverHandle() { template __global__ void set_matrix_kernel( const char uplo, - T* A, - const int dim) + T* A, + const int dim) { int bid = blockIdx.x; int tid = threadIdx.x; @@ -64,7 +64,7 @@ struct lapack_trtri { const char& diag, const int& dim, T* Mat, - const int& lda) + const int& lda) { // TODO: trtri is not implemented in this method yet // Cause the trtri in cuSolver is not stable for ABACUS! @@ -82,8 +82,8 @@ struct lapack_potrf { void operator()( const char& uplo, const int& dim, - T* Mat, - const int& lda) + T* Mat, + const int& lda) { // hipSolverConnector::potrf(hipsolver_handle, uplo, dim, Mat, dim); std::vector H_Mat(dim * dim, static_cast(0.0)); @@ -94,7 +94,7 @@ struct lapack_potrf { }; template -struct lapack_dnevd { +struct lapack_heevd { using Real = typename GetTypeReal::type; void operator()( const char& jobz, @@ -103,30 +103,33 @@ struct lapack_dnevd { const int& dim, Real* eigen_val) { - // hipSolverConnector::dnevd(hipsolver_handle, jobz, uplo, dim, Mat, dim, eigen_val); + // hipSolverConnector::heevd(hipsolver_handle, jobz, uplo, dim, Mat, dim, eigen_val); std::vector H_Mat(dim * dim, static_cast(0.0)); std::vector H_eigen_val(dim, static_cast(0.0)); hipMemcpy(H_Mat.data(), Mat, sizeof(T) * H_Mat.size(), hipMemcpyDeviceToHost); hipMemcpy(H_eigen_val.data(), eigen_val, sizeof(Real) * H_eigen_val.size(), hipMemcpyDeviceToHost); - lapack_dnevd()(jobz, uplo, H_Mat.data(), dim, H_eigen_val.data()); + lapack_heevd()(jobz, uplo, H_Mat.data(), dim, H_eigen_val.data()); hipMemcpy(Mat, H_Mat.data(), sizeof(T) * H_Mat.size(), hipMemcpyHostToDevice); hipMemcpy(eigen_val, H_eigen_val.data(), sizeof(Real) * H_eigen_val.size(), hipMemcpyHostToDevice); } }; template -struct lapack_dngvd { +struct lapack_hegvd { using Real = typename GetTypeReal::type; void operator()( - const int& itype, - const char& jobz, - const char& uplo, + const int dim, + const int lda, T* Mat_A, T* Mat_B, - const int& dim, - Real* eigen_val) + Real* eigen_val, + T *eigen_vec) { - hipSolverConnector::dngvd(hipsolver_handle, itype, jobz, uplo, dim, Mat_A, dim, Mat_B, dim, eigen_val); + const int itype = 1; + const char jobz = 'V'; + const char uplo = 'U'; + hipErrcheck(hipMemcpy(eigen_vec, Mat_A, sizeof(T) * dim * lda, hipMemcpyDeviceToDevice)); + hipSolverConnector::hegvd(hipsolver_handle, itype, jobz, uplo, dim, Mat_A, lda, Mat_B, lda, eigen_val); } }; @@ -145,15 +148,15 @@ template struct lapack_potrf; template struct lapack_potrf, DEVICE_GPU>; template struct lapack_potrf, DEVICE_GPU>; -template struct lapack_dnevd; -template struct lapack_dnevd; -template struct lapack_dnevd, DEVICE_GPU>; -template struct lapack_dnevd, DEVICE_GPU>; +template struct lapack_heevd; +template struct lapack_heevd; +template struct lapack_heevd, DEVICE_GPU>; +template struct lapack_heevd, DEVICE_GPU>; -template struct lapack_dngvd; -template struct lapack_dngvd; -template struct lapack_dngvd, DEVICE_GPU>; -template struct lapack_dngvd, DEVICE_GPU>; +template struct lapack_hegvd; +template struct lapack_hegvd; +template struct lapack_hegvd, DEVICE_GPU>; +template struct lapack_hegvd, DEVICE_GPU>; } // namespace kernels -} // namespace container \ No newline at end of file +} // namespace container diff --git a/source/source_base/module_container/ATen/kernels/test/CMakeLists.txt b/source/source_base/module_container/ATen/kernels/test/CMakeLists.txt index 2e07d84e6a..0ca3d97c26 100644 --- a/source/source_base/module_container/ATen/kernels/test/CMakeLists.txt +++ b/source/source_base/module_container/ATen/kernels/test/CMakeLists.txt @@ -1,8 +1,8 @@ AddTest( - TARGET container_kernels_uts + TARGET MODULE_BASE_container_kernels_uts LIBS parameter ${math_libs} SOURCES blas_test.cpp lapack_test.cpp memory_test.cpp linalg_test.cpp ) -target_link_libraries(container_kernels_uts container base device) \ No newline at end of file +target_link_libraries(MODULE_BASE_container_kernels_uts container base device) diff --git a/source/source_base/module_container/ATen/kernels/test/blas_test.cpp b/source/source_base/module_container/ATen/kernels/test/blas_test.cpp index a01ef8beb9..d0c53422d4 100644 --- a/source/source_base/module_container/ATen/kernels/test/blas_test.cpp +++ b/source/source_base/module_container/ATen/kernels/test/blas_test.cpp @@ -20,6 +20,39 @@ class BlasTest : public testing::Test { TYPED_TEST_SUITE(BlasTest, base::utils::Types); +TYPED_TEST(BlasTest, Copy) { + using Type = typename std::tuple_element<0, decltype(TypeParam())>::type; + using Device = typename std::tuple_element<1, decltype(TypeParam())>::type; + + blas_copy copyCalculator; + + const int n = 3; + const Tensor x = std::move(Tensor({static_cast(1.0), static_cast(2.0), static_cast(3.0)}).to_device()); + Tensor y = std::move(Tensor({static_cast(0.0), static_cast(0.0), static_cast(0.0)}).to_device()); + + copyCalculator(n, x.data(), 1, y.data(), 1); + const Tensor expected = std::move(Tensor({static_cast(1.0), static_cast(2.0), static_cast(3.0)}).to_device()); + + EXPECT_EQ(y, expected); +} + +TYPED_TEST(BlasTest, Nrm2) { + using Type = typename std::tuple_element<0, decltype(TypeParam())>::type; + using Device = typename std::tuple_element<1, decltype(TypeParam())>::type; + + blas_nrm2 nrm2Calculator; + + const int n = 3; + const Tensor x = std::move(Tensor({static_cast(3.0), static_cast(4.0), static_cast(0.0)}).to_device()); + + using Real = typename GetTypeReal::type; + Real result = {}; + result = nrm2Calculator(n, x.data(), 1); + const Real expected = static_cast(5.0); + + EXPECT_NEAR(result, expected, static_cast(1e-6)); +} + TYPED_TEST(BlasTest, Dot) { using Type = typename std::tuple_element<0, decltype(TypeParam())>::type; using Device = typename std::tuple_element<1, decltype(TypeParam())>::type; @@ -29,7 +62,7 @@ TYPED_TEST(BlasTest, Dot) { const int n = 3; const Tensor x = std::move(Tensor({static_cast(1.0), static_cast(2.0), static_cast(3.0)}).to_device()); const Tensor y = std::move(Tensor({static_cast(4.0), static_cast(5.0), static_cast(6.0)}).to_device()); - + Type result = {}; dotCalculator(n, x.data(), 1, y.data(), 1, &result); const Type expected = static_cast(32.0); @@ -46,7 +79,7 @@ TYPED_TEST(BlasTest, Scal) { const int n = 3; const Type alpha = static_cast(2.0); Tensor x = std::move(Tensor({static_cast(1.0), static_cast(2.0), static_cast(3.0)}).to_device()); - + scalCalculator(n, &alpha, x.data(), 1); const Tensor expected = std::move(Tensor({static_cast(2.0), static_cast(4.0), static_cast(6.0)}).to_device()); @@ -64,7 +97,7 @@ TYPED_TEST(BlasTest, Axpy) { const Type alpha = static_cast(2.0); const Tensor x = std::move(Tensor({static_cast(1.0), static_cast(2.0), static_cast(3.0)}).to_device()); Tensor y = std::move(Tensor({static_cast(4.0), static_cast(5.0), static_cast(6.0)}).to_device()); - + axpyCalculator(n, &alpha, x.data(), 1, y.data(), 1); const Tensor expected = std::move(Tensor({static_cast(6.0), static_cast(9.0), static_cast(12.0)}).to_device()); @@ -83,11 +116,11 @@ TYPED_TEST(BlasTest, Gemv) { const int n = 2; const Type alpha = static_cast(2.0); const Type beta = static_cast(3.0); - const Tensor A = std::move(Tensor({static_cast(1.0), static_cast(2.0), static_cast(3.0), + const Tensor A = std::move(Tensor({static_cast(1.0), static_cast(2.0), static_cast(3.0), static_cast(4.0), static_cast(5.0), static_cast(6.0)}).to_device()); const Tensor x = std::move(Tensor({static_cast(1.0), static_cast(2.0)}).to_device()); Tensor y = std::move(Tensor({static_cast(1.0), static_cast(2.0), static_cast(3.0)}).to_device()); - + gemvCalculator(trans, m, n, &alpha, A.data(), m, x.data(), 1, &beta, y.data(), 1); const Tensor expected = std::move(Tensor({static_cast(21.0), static_cast(30.0), static_cast(39.0)}).to_device()); @@ -114,14 +147,14 @@ TYPED_TEST(BlasTest, GemvBatched) { std::vector y = {}; const Tensor _A = std::move(Tensor({ - static_cast(1.0), static_cast(2.0), - static_cast(3.0), static_cast(4.0), + static_cast(1.0), static_cast(2.0), + static_cast(3.0), static_cast(4.0), static_cast(5.0), static_cast(6.0), - + static_cast(7.0), static_cast(8.0), static_cast(9.0), static_cast(10.0), static_cast(11.0),static_cast(12.0)}).to_device()); - + A.push_back(_A.data()); A.push_back(_A.data() + m * n); @@ -164,14 +197,14 @@ TYPED_TEST(BlasTest, GemvBatchedStrided) { std::vector y = {}; const Tensor _A = std::move(Tensor({ - static_cast(1.0), static_cast(2.0), - static_cast(3.0), static_cast(4.0), + static_cast(1.0), static_cast(2.0), + static_cast(3.0), static_cast(4.0), static_cast(5.0), static_cast(6.0), - + static_cast(7.0), static_cast(8.0), static_cast(9.0), static_cast(10.0), static_cast(11.0),static_cast(12.0)}).to_device()); - + A.push_back(_A.data()); A.push_back(_A.data() + m * n); @@ -205,11 +238,11 @@ TYPED_TEST(BlasTest, Gemm) { const int n = 2; const Type alpha = static_cast(2.0); const Type beta = static_cast(3.0); - const Tensor A = std::move(Tensor({static_cast(1.0), static_cast(2.0), static_cast(3.0), + const Tensor A = std::move(Tensor({static_cast(1.0), static_cast(2.0), static_cast(3.0), static_cast(4.0), static_cast(5.0), static_cast(6.0)}).to_device()); const Tensor x = std::move(Tensor({static_cast(1.0), static_cast(2.0)}).to_device()); Tensor y = std::move(Tensor({static_cast(1.0), static_cast(2.0), static_cast(3.0)}).to_device()); - + gemmCalculator(trans, trans, m, 1, n, &alpha, A.data(), m, x.data(), n, &beta, y.data(), m); const Tensor expected = std::move(Tensor({static_cast(21.0), static_cast(30.0), static_cast(39.0)}).to_device()); @@ -237,14 +270,14 @@ TYPED_TEST(BlasTest, GemmBatched) { std::vector y2 = {}; const Tensor _A = std::move(Tensor({ - static_cast(1.0), static_cast(2.0), - static_cast(3.0), static_cast(4.0), + static_cast(1.0), static_cast(2.0), + static_cast(3.0), static_cast(4.0), static_cast(5.0), static_cast(6.0), - + static_cast(7.0), static_cast(8.0), static_cast(9.0), static_cast(10.0), static_cast(11.0),static_cast(12.0)}).to_device()); - + A.push_back(_A.data()); A.push_back(_A.data() + m * n); @@ -287,14 +320,14 @@ TYPED_TEST(BlasTest, GemmBatchedStrided) { std::vector y2 = {}; const Tensor _A = std::move(Tensor({ - static_cast(1.0), static_cast(2.0), - static_cast(3.0), static_cast(4.0), + static_cast(1.0), static_cast(2.0), + static_cast(3.0), static_cast(4.0), static_cast(5.0), static_cast(6.0), - + static_cast(7.0), static_cast(8.0), static_cast(9.0), static_cast(10.0), static_cast(11.0),static_cast(12.0)}).to_device()); - + A.push_back(_A.data()); A.push_back(_A.data() + m * n); diff --git a/source/source_base/module_container/ATen/kernels/test/lapack_test.cpp b/source/source_base/module_container/ATen/kernels/test/lapack_test.cpp index f9998c018c..5524ca6c50 100644 --- a/source/source_base/module_container/ATen/kernels/test/lapack_test.cpp +++ b/source/source_base/module_container/ATen/kernels/test/lapack_test.cpp @@ -33,14 +33,14 @@ TYPED_TEST(LapackTest, Trtri) { Tensor A = std::move(Tensor({static_cast(1.0), static_cast(2.0), static_cast(3.0), static_cast(0.0), static_cast(4.0), static_cast(5.0), static_cast(0.0), static_cast(0.0), static_cast(6.0)}).to_device()); - + Tensor I = std::move(Tensor({static_cast(1.0), static_cast(0.0), static_cast(0.0), static_cast(0.0), static_cast(1.0), static_cast(0.0), static_cast(0.0), static_cast(0.0), static_cast(1.0)}).to_device()); Tensor B = A; Tensor C = B; C.zero(); - + const char trans = 'N'; const int m = 3; const int n = 3; @@ -51,7 +51,7 @@ TYPED_TEST(LapackTest, Trtri) { // For this reason, we should employ 'L' instead of 'U' in the subsequent line. trtriCalculator('L', 'N', dim, B.data(), dim); gemmCalculator(trans, trans, m, n, k, &alpha, B.data(), k, A.data(), n, &beta, C.data(), n); - + EXPECT_EQ(C, I); } @@ -69,11 +69,11 @@ TYPED_TEST(LapackTest, Potrf) { Tensor A = std::move(Tensor({static_cast(4.0), static_cast(1.0), static_cast(2.0), static_cast(1.0), static_cast(5.0), static_cast(3.0), static_cast(2.0), static_cast(3.0), static_cast(6.0)}).to_device()); - + Tensor B = A; Tensor C = B; C.zero(); - + const char transa = 'N'; const char transb = 'C'; const int m = 3; @@ -92,27 +92,107 @@ TYPED_TEST(LapackTest, Potrf) { EXPECT_EQ(A, C); } -TYPED_TEST(LapackTest, dnevd) { +// lapack_geqrf_inplace, +// check that QtQ = I +TYPED_TEST(LapackTest, GeqrfInPlace) { + using Type = typename std::tuple_element<0, decltype(TypeParam())>::type; + using Device = typename std::tuple_element<1, decltype(TypeParam())>::type; + + lapack_geqrf_inplace geqrfCalculator; + + const int m = 4; + const int n = 3; // m >= n,Q is m x n column-orthogonal matrix + const int lda = m; + + Tensor A_input = std::move(Tensor({ + static_cast(1.0), static_cast(2.0), static_cast(3.0), static_cast(4.0), + static_cast(5.0), static_cast(6.0), static_cast(7.0), static_cast(8.0), + static_cast(9.0), static_cast(10.0), static_cast(11.0), static_cast(12.0) + }).to_device()); + + Tensor A = A_input; // will be overwritten as Q + + // do geqrf -> get orthogonal Q + geqrfCalculator(m, n, A.data(), lda); + + // check on CPU + Tensor Q = A.to_device(); + const Type* Q_data = Q.data(); + + // compute QtQ = Q^T * Q (n x n) + Tensor QtQ = Q; // std::move(Tensor(std::vector(n * n, static_cast(0.0))).to_device()); + const Type alpha = static_cast(1.0); + const Type beta = static_cast(0.0); + + blas_gemm gemm; + gemm('C', 'N', // Q^T * Q + n, n, m, // n x n + &alpha, + Q_data, lda, // Q^T + Q_data, lda, // Q + &beta, + QtQ.data(), n); + + // To print value: first to_device CPU, then print + // // Test code: print A + // std::cout << "A = " << std::endl; + // for (int i = 0; i < m; ++i) { + // for (int j = 0; j < n; ++j) { + // std::cout << A_input.to_device().data()[i + j * m] << " "; + // } + // std::cout << std::endl; + // } + // // Test code: print Q + // std::cout << "Q = " << std::endl; + // for (int i = 0; i < m; ++i) { + // for (int j = 0; j < n; ++j) { + // std::cout << Q.data()[i + j * m] << " "; + // } + // std::cout << std::endl; + // } + // // Test code: print QtQ + // std::cout << "QtQ = " << std::endl; + // for (int i = 0; i < n; ++i) { + // for (int j = 0; j < n; ++j) { + // std::cout << QtQ.data()[i + j * n] << " "; + // } + // std::cout << std::endl; + // } + + // check QtQ + for (int i = 0; i < n; ++i) { + for (int j = 0; j < n; ++j) { + Type expected = (i == j) ? static_cast(1.0) : static_cast(0.0); + EXPECT_NEAR(std::abs(QtQ.data()[i + j * n]), std::abs(expected), 1e-5) + << "Q^T * Q not identity at (" << i << "," << j << ")"; + } + } +} + +// Test for lapack_heevd and lapack_heevx: +// Solve a standard eigenvalue problem +// and check that A*V = V*E +TYPED_TEST(LapackTest, heevd) { using Type = typename std::tuple_element<0, decltype(TypeParam())>::type; using Real = typename GetTypeReal::type; using Device = typename std::tuple_element<1, decltype(TypeParam())>::type; - + blas_gemm gemmCalculator; blas_axpy axpyCalculator; - lapack_dnevd dnevdCalculator; + lapack_heevd heevdCalculator; const int dim = 3; Tensor A = std::move(Tensor({static_cast(4.0), static_cast(1.0), static_cast(1.0), static_cast(1.0), static_cast(5.0), static_cast(3.0), static_cast(1.0), static_cast(3.0), static_cast(6.0)}).to_device()); - + Tensor E = std::move(Tensor({static_cast(0.0), static_cast(0.0), static_cast(0.0)}).to_device()); Tensor B = A; Tensor expected_C1 = A; Tensor expected_C2 = A; expected_C1.zero(); expected_C2.zero(); - + const char trans = 'N'; const int m = 3; const int n = 3; @@ -121,11 +201,12 @@ TYPED_TEST(LapackTest, dnevd) { const Type beta = static_cast(0.0); // Note all blas and lapack operators within container are column major! // For this reason, we should employ 'L' instead of 'U' in the subsequent line. - dnevdCalculator('V', 'U', B.data(), dim, E.data()); - + // heevdCalculator('V', 'U', B.data(), dim, E.data()); + heevdCalculator(dim, B.data(), dim, E.data()); + E = E.to_device(); const Tensor Alpha = std::move(Tensor({ - static_cast(E.data()[0]), + static_cast(E.data()[0]), static_cast(E.data()[1]), static_cast(E.data()[2])})); @@ -138,45 +219,99 @@ TYPED_TEST(LapackTest, dnevd) { EXPECT_EQ(expected_C1, expected_C2); } +TYPED_TEST(LapackTest, heevx) { + using Type = typename std::tuple_element<0, decltype(TypeParam())>::type; + using Real = typename GetTypeReal::type; + using Device = typename std::tuple_element<1, decltype(TypeParam())>::type; + + blas_gemm gemmCalculator; + blas_axpy axpyCalculator; + lapack_heevx heevxCalculator; + + const int dim = 3; + const int neig = 2; // Compute first 2 eigenvalues + + Tensor A = std::move(Tensor({static_cast(4.0), static_cast(1.0), static_cast(1.0), + static_cast(1.0), static_cast(5.0), static_cast(3.0), + static_cast(1.0), static_cast(3.0), static_cast(6.0)}).to_device()); + + Tensor E = std::move(Tensor({static_cast(0.0), static_cast(0.0)}).to_device()); + Tensor V = A; + Tensor expected_C1 = std::move(Tensor({static_cast(0.0), static_cast(0.0), static_cast(0.0), + static_cast(0.0), static_cast(0.0), static_cast(0.0)}).to_device()); + Tensor expected_C2 = expected_C1; + expected_C1.zero(); + expected_C2.zero(); + + const char trans = 'N'; + const int m = 3; + const int n = neig; + const int k = 3; + const Type alpha = static_cast(1.0); + const Type beta = static_cast(0.0); -TYPED_TEST(LapackTest, dngvd) { + // Compute first neig eigenvalues and eigenvectors using heevx + heevxCalculator(dim, dim, A.data(), neig, E.data(), V.data()); + + E = E.to_device(); + const Tensor Alpha = std::move(Tensor({ + static_cast(E.data()[0]), + static_cast(E.data()[1])})); + + // Check the eigenvalues and eigenvectors + // A * x = lambda * x for the first neig eigenvectors + // check that A * V = V * E + // get A * V + gemmCalculator(trans, trans, m, n, k, &alpha, A.data(), m, V.data(), k, &beta, expected_C1.data(), m); + // get V * E + for (int ii = 0; ii < neig; ii++) { + axpyCalculator(dim, Alpha.data() + ii, V.data() + ii * dim, 1, expected_C2.data() + ii * dim, 1); + } + + EXPECT_EQ(expected_C1, expected_C2); +} + +// Test for lapack_hegvd and lapack_hegvx +// Solve a generalized eigenvalue problem +// and check that A * v = e * B * v +TYPED_TEST(LapackTest, hegvd) { using Type = typename std::tuple_element<0, decltype(TypeParam())>::type; using Real = typename GetTypeReal::type; using Device = typename std::tuple_element<1, decltype(TypeParam())>::type; - + blas_gemm gemmCalculator; blas_axpy axpyCalculator; - lapack_dngvd dngvdCalculator; + lapack_hegvd hegvdCalculator; const int dim = 3; Tensor A = std::move(Tensor({static_cast(4.0), static_cast(1.0), static_cast(1.0), static_cast(1.0), static_cast(5.0), static_cast(3.0), static_cast(1.0), static_cast(3.0), static_cast(6.0)}).to_device()); - + Tensor I = std::move(Tensor({static_cast(1.0), static_cast(0.0), static_cast(0.0), static_cast(0.0), static_cast(1.0), static_cast(0.0), static_cast(0.0), static_cast(0.0), static_cast(1.0)}).to_device()); - + Tensor E = std::move(Tensor({static_cast(0.0), static_cast(0.0), static_cast(0.0)}).to_device()); Tensor B = A; Tensor expected_C1 = A; Tensor expected_C2 = A; expected_C1.zero(); expected_C2.zero(); - + const char trans = 'N'; const int m = 3; const int n = 3; const int k = 3; const Type alpha = static_cast(1.0); const Type beta = static_cast(0.0); - // Note al(), I.data(), dim, E.data()); + hegvdCalculator(dim, dim, A.data(), I.data(), E.data(), B.data()); E = E.to_device(); const Tensor Alpha = std::move(Tensor({ - static_cast(E.data()[0]), + static_cast(E.data()[0]), static_cast(E.data()[1]), static_cast(E.data()[2])})); @@ -189,5 +324,66 @@ TYPED_TEST(LapackTest, dngvd) { EXPECT_EQ(expected_C1, expected_C2); } -} // namespace op +TYPED_TEST(LapackTest, hegvx) { + using Type = typename std::tuple_element<0, decltype(TypeParam())>::type; + using Real = typename GetTypeReal::type; + using Device = typename std::tuple_element<1, decltype(TypeParam())>::type; + + blas_gemm gemmCalculator; + blas_axpy axpyCalculator; + lapack_hegvx hegvxCalculator; + + const int dim = 3; + const int neig = 2; // Compute first 2 eigenvalues + + Tensor A = std::move(Tensor({static_cast(4.0), static_cast(1.0), static_cast(1.0), + static_cast(1.0), static_cast(5.0), static_cast(3.0), + static_cast(1.0), static_cast(3.0), static_cast(6.0)}).to_device()); + + Tensor B = std::move(Tensor({static_cast(2.0), static_cast(0.0), static_cast(0.0), + static_cast(0.0), static_cast(2.0), static_cast(0.0), + static_cast(0.0), static_cast(0.0), static_cast(2.0)}).to_device()); + + Tensor E = std::move(Tensor({static_cast(0.0), static_cast(0.0)}).to_device()); + Tensor V = A; + Tensor expected_C1 = std::move(Tensor({static_cast(0.0), static_cast(0.0), static_cast(0.0), + static_cast(0.0), static_cast(0.0), static_cast(0.0)}).to_device()); + Tensor expected_C2 = expected_C1; + Tensor C_temp = expected_C1; + expected_C1.zero(); + expected_C2.zero(); + + const char trans = 'N'; + const int m = 3; + const int n = neig; + const int k = 3; + const Type alpha = static_cast(1.0); + const Type beta = static_cast(0.0); + + // Compute first neig eigenvalues and eigenvectors using hegvx + hegvxCalculator(dim, dim, A.data(), B.data(), neig, E.data(), V.data()); + + E = E.to_device(); + const Tensor Alpha = std::move(Tensor({ + static_cast(E.data()[0]), + static_cast(E.data()[1])})); + + // Check the eigenvalues and eigenvectors + // A * x = lambda * B * x for the first neig eigenvectors + // check that A * V = E * B * V + // get A * V + gemmCalculator(trans, trans, m, n, k, &alpha, A.data(), m, V.data(), k, &beta, expected_C1.data(), m); + // get E * B * V + // where B is 2 * eye(3,3) + // get C_temp = B * V first + gemmCalculator(trans, trans, m, n, k, &alpha, B.data(), m, V.data(), k, &beta, C_temp.data(), m); + // then compute C2 = E * B * V + for (int ii = 0; ii < neig; ii++) { + axpyCalculator(dim, Alpha.data() + ii, C_temp.data() + ii * dim, 1, expected_C2.data() + ii * dim, 1); + } + + EXPECT_EQ(expected_C1, expected_C2); +} + +} // namespace kernels } // namespace container diff --git a/source/source_base/module_container/ATen/ops/test/CMakeLists.txt b/source/source_base/module_container/ATen/ops/test/CMakeLists.txt index 0cc2c090ca..d5103acfdd 100644 --- a/source/source_base/module_container/ATen/ops/test/CMakeLists.txt +++ b/source/source_base/module_container/ATen/ops/test/CMakeLists.txt @@ -1,7 +1,7 @@ AddTest( - TARGET container_ops_uts - LIBS parameter ${math_libs} + TARGET MODULE_BASE_container_ops_uts + LIBS parameter ${math_libs} SOURCES einsum_op_test.cpp linalg_op_test.cpp ../../kernels/lapack.cpp ) -target_link_libraries(container_ops_uts container base device) \ No newline at end of file +target_link_libraries(MODULE_BASE_container_ops_uts container base device) diff --git a/source/source_base/module_container/CMakeLists.txt b/source/source_base/module_container/CMakeLists.txt index 80a8dce5fc..14b5c57c52 100644 --- a/source/source_base/module_container/CMakeLists.txt +++ b/source/source_base/module_container/CMakeLists.txt @@ -21,7 +21,7 @@ endif() add_library(container STATIC ${ATen_CPU_SRCS} ${ATen_CUDA_SRCS}) -target_link_libraries(container PUBLIC +target_link_libraries(container PUBLIC ${ATen_CPU_DEPENDENCY_LIBS} ${ATen_CUDA_DEPENDENCY_LIBS} ${ATen_ROCM_DEPENDENCY_LIBS}) if(ENABLE_COVERAGE) diff --git a/source/source_base/module_container/base/core/gpu_allocator.cpp b/source/source_base/module_container/base/core/gpu_allocator.cpp index cf38684bcd..e63043c537 100644 --- a/source/source_base/module_container/base/core/gpu_allocator.cpp +++ b/source/source_base/module_container/base/core/gpu_allocator.cpp @@ -18,7 +18,7 @@ namespace base { namespace core { // Allocate a block of memory with the given size and default alignment on GPU. void *GPUAllocator::allocate(size_t size) { - void *ptr; + void * ptr = nullptr; device_result_t result = device_malloc(&ptr, size); if (result != device_success) { return nullptr; @@ -29,7 +29,7 @@ void *GPUAllocator::allocate(size_t size) { // Allocate a block of CPU memory with the given size and alignment. void *GPUAllocator::allocate(size_t size, size_t alignment) { - void *ptr; + void * ptr = nullptr; device_result_t result = device_malloc(&ptr, size); if (result != device_success) { return nullptr; diff --git a/source/source_base/module_container/base/macros/cuda.h b/source/source_base/module_container/base/macros/cuda.h index ac5ced387a..572eecdffd 100644 --- a/source/source_base/module_container/base/macros/cuda.h +++ b/source/source_base/module_container/base/macros/cuda.h @@ -6,6 +6,8 @@ #include #include +#include "source_base/module_device/device_check.h" + #define THREADS_PER_BLOCK 256 template @@ -23,7 +25,7 @@ struct GetTypeThrust> template <> struct GetTypeThrust> { - using type = thrust::complex; /**< The return type specialization for std::complex. */ + using type = thrust::complex; /**< The return type specialization for std::complex. */ }; static inline cublasOperation_t GetCublasOperation(const char& trans) @@ -121,109 +123,27 @@ static inline cusolverEigType_t cublas_eig_type(const int& itype) throw std::runtime_error("cublas_eig_mode: unknown diag"); } -// cuSOLVER API errors -static const char* cusolverGetErrorEnum(cusolverStatus_t error) -{ - switch (error) - { - case CUSOLVER_STATUS_SUCCESS: - return "CUSOLVER_STATUS_SUCCESS"; - case CUSOLVER_STATUS_NOT_INITIALIZED: - return "CUSOLVER_STATUS_NOT_INITIALIZED"; - case CUSOLVER_STATUS_ALLOC_FAILED: - return "CUSOLVER_STATUS_ALLOC_FAILED"; - case CUSOLVER_STATUS_INVALID_VALUE: - return "CUSOLVER_STATUS_INVALID_VALUE"; - case CUSOLVER_STATUS_ARCH_MISMATCH: - return "CUSOLVER_STATUS_ARCH_MISMATCH"; - case CUSOLVER_STATUS_MAPPING_ERROR: - return "CUSOLVER_STATUS_MAPPING_ERROR"; - case CUSOLVER_STATUS_EXECUTION_FAILED: - return "CUSOLVER_STATUS_EXECUTION_FAILED"; - case CUSOLVER_STATUS_INTERNAL_ERROR: - return "CUSOLVER_STATUS_INTERNAL_ERROR"; - case CUSOLVER_STATUS_MATRIX_TYPE_NOT_SUPPORTED: - return "CUSOLVER_STATUS_MATRIX_TYPE_NOT_SUPPORTED"; - case CUSOLVER_STATUS_NOT_SUPPORTED: - return "CUSOLVER_STATUS_NOT_SUPPORTED "; - case CUSOLVER_STATUS_ZERO_PIVOT: - return "CUSOLVER_STATUS_ZERO_PIVOT"; - case CUSOLVER_STATUS_INVALID_LICENSE: - return "CUSOLVER_STATUS_INVALID_LICENSE"; - default: - return "Unknown cusolverStatus_t message"; - } -} - -inline void cusolverAssert(cusolverStatus_t code, const char* file, int line) -{ - if (code != CUSOLVER_STATUS_SUCCESS) - { - fprintf(stderr, " Unexpected cuSOLVER Error: %s %s %d\n", cusolverGetErrorEnum(code), file, line); - exit(code); - } -} - -// cuSOLVER API errors -static const char* cublasGetErrorEnum(cublasStatus_t error) -{ - switch (error) - { - case CUBLAS_STATUS_SUCCESS: - return "CUBLAS_STATUS_SUCCESS"; - case CUBLAS_STATUS_NOT_INITIALIZED: - return "CUBLAS_STATUS_NOT_INITIALIZED"; - case CUBLAS_STATUS_ALLOC_FAILED: - return "CUBLAS_STATUS_ALLOC_FAILED"; - case CUBLAS_STATUS_INVALID_VALUE: - return "CUBLAS_STATUS_INVALID_VALUE"; - case CUBLAS_STATUS_ARCH_MISMATCH: - return "CUBLAS_STATUS_ARCH_MISMATCH"; - case CUBLAS_STATUS_MAPPING_ERROR: - return "CUBLAS_STATUS_MAPPING_ERROR"; - case CUBLAS_STATUS_EXECUTION_FAILED: - return "CUBLAS_STATUS_EXECUTION_FAILED"; - case CUBLAS_STATUS_INTERNAL_ERROR: - return "CUBLAS_STATUS_INTERNAL_ERROR"; - default: - return "Unknown"; - } -} - -inline void cublasAssert(cublasStatus_t res, const char* file, int line) -{ - if (res != CUBLAS_STATUS_SUCCESS) - { - fprintf(stderr, " Unexpected cuBLAS Error: %s %s %d\n", cublasGetErrorEnum(res), file, line); - exit(res); - } +/** + * @brief Converts a character specifying eigenvalue range to cuSOLVER enum. + * + * 'A' or 'a' -> CUSOLVER_EIG_RANGE_ALL: all eigenvalues + * 'V' or 'v' -> CUSOLVER_EIG_RANGE_V: values in [vl, vu] + * 'I' or 'i' -> CUSOLVER_EIG_RANGE_I: indices in [il, iu] + * + * @param range Character indicating selection mode ('A', 'V', 'I') + * @return Corresponding cusolverEigRange_t enum value + * @throws std::runtime_error if character is invalid + */ +static inline cusolverEigRange_t cublas_eig_range(const char& range) +{ + if (range == 'A' || range == 'a') + return CUSOLVER_EIG_RANGE_ALL; + else if (range == 'V' || range == 'v') + return CUSOLVER_EIG_RANGE_V; + else if (range == 'I' || range == 'i') + return CUSOLVER_EIG_RANGE_I; + else + throw std::runtime_error("cublas_eig_range: unknown range '" + std::string(1, range) + "'"); } -#define cusolverErrcheck(res) \ - { \ - cusolverAssert((res), __FILE__, __LINE__); \ - } - -#define cublasErrcheck(res) \ - { \ - cublasAssert((res), __FILE__, __LINE__); \ - } - -// CUDA API errors -#define cudaErrcheck(res) \ - { \ - if (res != cudaSuccess) \ - { \ - fprintf(stderr, " Unexpected Device Error %s:%d: %s, %s\n", __FILE__, __LINE__, cudaGetErrorName(res), \ - cudaGetErrorString(res)); \ - exit(res); \ - } \ - } - -#ifdef __DEBUG -#define cudaCheckOnDebug() cudaErrcheck(cudaDeviceSynchronize()) -#else -#define cudaCheckOnDebug() -#endif - -#endif // BASE_MACROS_CUDA_H_ \ No newline at end of file +#endif // BASE_MACROS_CUDA_H_ diff --git a/source/source_base/module_container/base/third_party/blas.h b/source/source_base/module_container/base/third_party/blas.h index 5c73032e05..1fdbac67b2 100644 --- a/source/source_base/module_container/base/third_party/blas.h +++ b/source/source_base/module_container/base/third_party/blas.h @@ -25,14 +25,17 @@ void daxpy_(const int *N, const double *alpha, const double *x, const int *incx, void caxpy_(const int *N, const std::complex *alpha, const std::complex *x, const int *incx, std::complex *y, const int *incy); void zaxpy_(const int *N, const std::complex *alpha, const std::complex *x, const int *incx, std::complex *y, const int *incy); -void dcopy_(long const *n, const double *a, int const *incx, double *b, int const *incy); -void zcopy_(long const *n, const std::complex *a, int const *incx, std::complex *b, int const *incy); +void scopy_(const int *n, const float *a, const int *incx, float *b, int const *incy); +void dcopy_(const int *n, const double *a, const int *incx, double *b, int const *incy); +void ccopy_(const int *n, const std::complex *a, const int *incx, std::complex *b, int const *incy); +void zcopy_(const int *n, const std::complex *a, const int *incx, std::complex *b, int const *incy); + //reason for passing results as argument instead of returning it: //see https://www.numbercrunch.de/blog/2014/07/lost-in-translation/ -void cdotc_(const int *n, const std::complex *zx, const int *incx, +void cdotc_(const int *n, const std::complex *zx, const int *incx, const std::complex *zy, const int *incy, std::complex *result); -void zdotc_(const int *n, const std::complex *zx, const int *incx, +void zdotc_(const int *n, const std::complex *zx, const int *incx, const std::complex *zy, const int *incy, std::complex *result); // Peize Lin add ?dot 2017-10-27, to compute d=x*y float sdot_(const int *N, const float *x, const int *incx, const float *y, const int *incy); @@ -41,6 +44,7 @@ double ddot_(const int *N, const double *x, const int *incx, const double *y, co // Peize Lin add ?nrm2 2018-06-12, to compute out = ||x||_2 = \sqrt{ \sum_i x_i**2 } float snrm2_( const int *n, const float *x, const int *incx ); double dnrm2_( const int *n, const double *x, const int *incx ); +float scnrm2_( const int *n, const std::complex *x, const int *incx ); double dznrm2_( const int *n, const std::complex *x, const int *incx ); // level 2: matrix-std::vector operations, O(n^2) data and O(n^2) work. @@ -107,14 +111,26 @@ void dsymm_(const char *side, const char *uplo, const int *m, const int *n, const double *alpha, const double *a, const int *lda, const double *b, const int *ldb, const double *beta, double *c, const int *ldc); //a is hermitian -void zhemm_(char *side, char *uplo, int *m, int *n,std::complex *alpha, - std::complex *a, int *lda, std::complex *b, int *ldb, std::complex *beta, std::complex *c, int *ldc); +void zhemm_(const char *side, const char *uplo, + const int *m, const int *n, + const std::complex *alpha, + const std::complex *a, const int *lda, + const std::complex *b, const int *ldb, + const std::complex *beta, + std::complex *c, const int *ldc); //solving triangular matrix with multiple right hand sides -void dtrsm_(char *side, char* uplo, char *transa, char *diag, int *m, int *n, - double* alpha, double* a, int *lda, double*b, int *ldb); -void ztrsm_(char *side, char* uplo, char *transa, char *diag, int *m, int *n, - std::complex* alpha, std::complex* a, int *lda, std::complex*b, int *ldb); +void dtrsm_(const char *side, const char *uplo, const char *transa, const char *diag, + const int *m, const int *n, + const double *alpha, + const double *a, const int *lda, + double *b, const int *ldb); + +void ztrsm_(const char *side, const char *uplo, const char *transa, const char *diag, + const int *m, const int *n, + const std::complex *alpha, + const std::complex *a, const int *lda, + std::complex *b, const int *ldb); } @@ -332,6 +348,11 @@ double nrm2( const int n, const double *x, const int incx ) return dnrm2_( &n, x, &incx ); } static inline +double nrm2( const int n, const std::complex *x, const int incx ) +{ + return scnrm2_( &n, x, &incx ); +} +static inline double nrm2( const int n, const std::complex *x, const int incx ) { return dznrm2_( &n, x, &incx ); @@ -339,12 +360,23 @@ double nrm2( const int n, const std::complex *x, const int incx ) // copies a into b static inline -void copy(const long n, const double *a, const int incx, double *b, const int incy) +void copy(const int n, const float *a, const int incx, float *b, const int incy) +{ + scopy_(&n, a, &incx, b, &incy); +} +static inline +void copy(const int n, const double *a, const int incx, double *b, const int incy) + { dcopy_(&n, a, &incx, b, &incy); } static inline -void copy(const long n, const std::complex *a, const int incx, std::complex *b, const int incy) +void copy(const int n, const std::complex *a, const int incx, std::complex *b, const int incy) +{ + ccopy_(&n, a, &incx, b, &incy); +} +static inline +void copy(const int n, const std::complex *a, const int incx, std::complex *b, const int incy) { zcopy_(&n, a, &incx, b, &incy); } diff --git a/source/source_base/module_container/base/third_party/cublas.h b/source/source_base/module_container/base/third_party/cublas.h index 34cd7484d1..fabc32e983 100644 --- a/source/source_base/module_container/base/third_party/cublas.h +++ b/source/source_base/module_container/base/third_party/cublas.h @@ -8,67 +8,109 @@ namespace container { namespace cuBlasConnector { +static inline +void copy(cublasHandle_t& handle, const int& n, const float *x, const int& incx, float *y, const int& incy) +{ + CHECK_CUBLAS(cublasScopy(handle, n, x, incx, y, incy)); +} +static inline +void copy(cublasHandle_t& handle, const int& n, const double *x, const int& incx, double *y, const int& incy) +{ + CHECK_CUBLAS(cublasDcopy(handle, n, x, incx, y, incy)); +} +static inline +void copy(cublasHandle_t& handle, const int& n, const std::complex *x, const int& incx, std::complex *y, const int& incy) +{ + CHECK_CUBLAS(cublasCcopy(handle, n, reinterpret_cast(x), incx, reinterpret_cast(y), incy)); +} +static inline +void copy(cublasHandle_t& handle, const int& n, const std::complex *x, const int& incx, std::complex *y, const int& incy) +{ + CHECK_CUBLAS(cublasZcopy(handle, n, reinterpret_cast(x), incx, reinterpret_cast(y), incy)); +} + +static inline +void nrm2(cublasHandle_t& handle, const int& n, const float *x, const int& incx, float* result) +{ + CHECK_CUBLAS(cublasSnrm2(handle, n, x, incx, result)); +} +static inline +void nrm2(cublasHandle_t& handle, const int& n, const double *x, const int& incx, double* result) +{ + CHECK_CUBLAS(cublasDnrm2(handle, n, x, incx, result)); +} +static inline +void nrm2(cublasHandle_t& handle, const int& n, const std::complex *x, const int& incx, float* result) +{ + CHECK_CUBLAS(cublasScnrm2(handle, n, reinterpret_cast(x), incx, result)); +} +static inline +void nrm2(cublasHandle_t& handle, const int& n, const std::complex *x, const int& incx, double* result) +{ + CHECK_CUBLAS(cublasDznrm2(handle, n, reinterpret_cast(x), incx, result)); +} + static inline void dot(cublasHandle_t& handle, const int& n, const float *x, const int& incx, const float *y, const int& incy, float* result) { - cublasErrcheck(cublasSdot(handle, n, x, incx, y, incy, result)); + CHECK_CUBLAS(cublasSdot(handle, n, x, incx, y, incy, result)); } static inline void dot(cublasHandle_t& handle, const int& n, const double *x, const int& incx, const double *y, const int& incy, double* result) { - cublasErrcheck(cublasDdot(handle, n, x, incx, y, incy, result)); + CHECK_CUBLAS(cublasDdot(handle, n, x, incx, y, incy, result)); } static inline void dot(cublasHandle_t& handle, const int& n, const std::complex *x, const int& incx, const std::complex *y, const int& incy, std::complex* result) { - cublasErrcheck(cublasCdotc(handle, n, reinterpret_cast(x), incx, reinterpret_cast(y), incy, reinterpret_cast(result))); + CHECK_CUBLAS(cublasCdotc(handle, n, reinterpret_cast(x), incx, reinterpret_cast(y), incy, reinterpret_cast(result))); } static inline void dot(cublasHandle_t& handle, const int& n, const std::complex *x, const int& incx, const std::complex *y, const int& incy, std::complex* result) { - cublasErrcheck(cublasZdotc(handle, n, reinterpret_cast(x), incx, reinterpret_cast(y), incy, reinterpret_cast(result))); + CHECK_CUBLAS(cublasZdotc(handle, n, reinterpret_cast(x), incx, reinterpret_cast(y), incy, reinterpret_cast(result))); } static inline void axpy(cublasHandle_t& handle, const int& n, const float& alpha, const float *x, const int& incx, float *y, const int& incy) { - cublasErrcheck(cublasSaxpy(handle, n, &alpha, x, incx, y, incy)); + CHECK_CUBLAS(cublasSaxpy(handle, n, &alpha, x, incx, y, incy)); } static inline void axpy(cublasHandle_t& handle, const int& n, const double& alpha, const double *x, const int& incx, double *y, const int& incy) { - cublasErrcheck(cublasDaxpy(handle, n, &alpha, x, incx, y, incy)); + CHECK_CUBLAS(cublasDaxpy(handle, n, &alpha, x, incx, y, incy)); } static inline void axpy(cublasHandle_t& handle, const int& n, const std::complex& alpha, const std::complex *x, const int& incx, std::complex *y, const int& incy) { - cublasErrcheck(cublasCaxpy(handle, n, reinterpret_cast(&alpha), reinterpret_cast(x), incx, reinterpret_cast(y), incy)); + CHECK_CUBLAS(cublasCaxpy(handle, n, reinterpret_cast(&alpha), reinterpret_cast(x), incx, reinterpret_cast(y), incy)); } static inline void axpy(cublasHandle_t& handle, const int& n, const std::complex& alpha, const std::complex *x, const int& incx, std::complex *y, const int& incy) { - cublasErrcheck(cublasZaxpy(handle, n, reinterpret_cast(&alpha), reinterpret_cast(x), incx, reinterpret_cast(y), incy)); + CHECK_CUBLAS(cublasZaxpy(handle, n, reinterpret_cast(&alpha), reinterpret_cast(x), incx, reinterpret_cast(y), incy)); } static inline void scal(cublasHandle_t& handle, const int& n, const float& alpha, float *x, const int& incx) { - cublasErrcheck(cublasSscal(handle, n, &alpha, x, incx)); + CHECK_CUBLAS(cublasSscal(handle, n, &alpha, x, incx)); } static inline void scal(cublasHandle_t& handle, const int& n, const double& alpha, double *x, const int& incx) { - cublasErrcheck(cublasDscal(handle, n, &alpha, x, incx)); + CHECK_CUBLAS(cublasDscal(handle, n, &alpha, x, incx)); } static inline void scal(cublasHandle_t& handle, const int& n, const std::complex& alpha, std::complex *x, const int& incx) { - cublasErrcheck(cublasCscal(handle, n, reinterpret_cast(&alpha), reinterpret_cast(x), incx)); + CHECK_CUBLAS(cublasCscal(handle, n, reinterpret_cast(&alpha), reinterpret_cast(x), incx)); } static inline void scal(cublasHandle_t& handle, const int& n, const std::complex& alpha, std::complex *x, const int& incx) { - cublasErrcheck(cublasZscal(handle, n, reinterpret_cast(&alpha), reinterpret_cast(x), incx)); + CHECK_CUBLAS(cublasZscal(handle, n, reinterpret_cast(&alpha), reinterpret_cast(x), incx)); } static inline @@ -76,21 +118,21 @@ void gemv(cublasHandle_t& handle, const char& trans, const int& m, const int& n, const float& alpha, const float *A, const int& lda, const float *x, const int& incx, const float& beta, float *y, const int& incy) { - cublasErrcheck(cublasSgemv(handle, GetCublasOperation(trans), m, n, &alpha, A, lda, x, incx, &beta, y, incy)); + CHECK_CUBLAS(cublasSgemv(handle, GetCublasOperation(trans), m, n, &alpha, A, lda, x, incx, &beta, y, incy)); } static inline void gemv(cublasHandle_t& handle, const char& trans, const int& m, const int& n, const double& alpha, const double *A, const int& lda, const double *x, const int& incx, const double& beta, double *y, const int& incy) { - cublasErrcheck(cublasDgemv(handle, GetCublasOperation(trans), m, n, &alpha, A, lda, x, incx, &beta, y, incy)); + CHECK_CUBLAS(cublasDgemv(handle, GetCublasOperation(trans), m, n, &alpha, A, lda, x, incx, &beta, y, incy)); } static inline void gemv(cublasHandle_t& handle, const char& trans, const int& m, const int& n, const std::complex& alpha, const std::complex *A, const int& lda, const std::complex *x, const int& incx, const std::complex& beta, std::complex *y, const int& incy) { - cublasErrcheck(cublasCgemv(handle, GetCublasOperation(trans), m, n, reinterpret_cast(&alpha), + CHECK_CUBLAS(cublasCgemv(handle, GetCublasOperation(trans), m, n, reinterpret_cast(&alpha), reinterpret_cast(A), lda, reinterpret_cast(x), incx, reinterpret_cast(&beta), reinterpret_cast(y), incy)); } static inline @@ -98,7 +140,7 @@ void gemv(cublasHandle_t& handle, const char& trans, const int& m, const int& n, const std::complex& alpha, const std::complex *A, const int& lda, const std::complex *x, const int& incx, const std::complex& beta, std::complex *y, const int& incy) { - cublasErrcheck(cublasZgemv(handle, GetCublasOperation(trans), m, n, reinterpret_cast(&alpha), + CHECK_CUBLAS(cublasZgemv(handle, GetCublasOperation(trans), m, n, reinterpret_cast(&alpha), reinterpret_cast(A), lda, reinterpret_cast(x), incx, reinterpret_cast(&beta), reinterpret_cast(y), incy)); } @@ -110,7 +152,7 @@ void gemv_batched(cublasHandle_t& handle, const char& trans, const int& m, const { for (int ii = 0; ii < batch_size; ++ii) { // Call the single GEMV for each pair of matrix A[ii] and vector x[ii] - cuBlasConnector::gemv(handle, trans, m, n, alpha, A[ii], lda, x[ii], incy, beta, y[ii], incy); + cuBlasConnector::gemv(handle, trans, m, n, alpha, A[ii], lda, x[ii], incx, beta, y[ii], incy); } } @@ -131,7 +173,7 @@ void gemm(cublasHandle_t& handle, const char& transa, const char& transb, const const float& alpha, const float* A, const int& lda, const float* B, const int& ldb, const float& beta, float* C, const int& ldc) { - cublasErrcheck(cublasSgemm(handle, GetCublasOperation(transa), GetCublasOperation(transb), + CHECK_CUBLAS(cublasSgemm(handle, GetCublasOperation(transa), GetCublasOperation(transb), m, n, k, &alpha, A, lda, B, ldb, &beta, C, ldc)); } static inline @@ -139,7 +181,7 @@ void gemm(cublasHandle_t& handle, const char& transa, const char& transb, const const double& alpha, const double* A, const int& lda, const double* B, const int& ldb, const double& beta, double* C, const int& ldc) { - cublasErrcheck(cublasDgemm(handle, GetCublasOperation(transa), GetCublasOperation(transb), + CHECK_CUBLAS(cublasDgemm(handle, GetCublasOperation(transa), GetCublasOperation(transb), m, n, k, &alpha, A, lda, B, ldb, &beta, C, ldc)); } static inline @@ -147,12 +189,12 @@ void gemm(cublasHandle_t& handle, const char& transa, const char& transb, const const std::complex& alpha, const std::complex* A, const int& lda, const std::complex* B, const int& ldb, const std::complex& beta, std::complex* C, const int& ldc) { - cublasErrcheck(cublasCgemm(handle, GetCublasOperation(transa), GetCublasOperation(transb), - m, n, k, - reinterpret_cast(&alpha), - reinterpret_cast(A), lda, - reinterpret_cast(B), ldb, - reinterpret_cast(&beta), + CHECK_CUBLAS(cublasCgemm(handle, GetCublasOperation(transa), GetCublasOperation(transb), + m, n, k, + reinterpret_cast(&alpha), + reinterpret_cast(A), lda, + reinterpret_cast(B), ldb, + reinterpret_cast(&beta), reinterpret_cast(C), ldc)); } static inline @@ -160,22 +202,22 @@ void gemm(cublasHandle_t& handle, const char& transa, const char& transb, const const std::complex& alpha, const std::complex* A, const int& lda, const std::complex* B, const int& ldb, const std::complex& beta, std::complex* C, const int& ldc) { - cublasErrcheck(cublasZgemm(handle, GetCublasOperation(transa), GetCublasOperation(transb), + CHECK_CUBLAS(cublasZgemm(handle, GetCublasOperation(transa), GetCublasOperation(transb), m, n, k, - reinterpret_cast(&alpha), - reinterpret_cast(A), lda, - reinterpret_cast(B), ldb, - reinterpret_cast(&beta), + reinterpret_cast(&alpha), + reinterpret_cast(A), lda, + reinterpret_cast(B), ldb, + reinterpret_cast(&beta), reinterpret_cast(C), ldc)); } template -static inline +static inline T** allocate_(T** in, const int& batch_size) { T** out = nullptr; - cudaErrcheck(cudaMalloc(reinterpret_cast(&out), sizeof(T*) * batch_size)); - cudaErrcheck(cudaMemcpy(out, in, sizeof(T*) * batch_size, cudaMemcpyHostToDevice)); + CHECK_CUDA(cudaMalloc(reinterpret_cast(&out), sizeof(T*) * batch_size)); + CHECK_CUDA(cudaMemcpy(out, in, sizeof(T*) * batch_size, cudaMemcpyHostToDevice)); return out; } @@ -187,11 +229,11 @@ void gemm_batched(cublasHandle_t& handle, const char& transa, const char& transb float** d_A = allocate_(A, batch_size); float** d_B = allocate_(B, batch_size); float** d_C = allocate_(C, batch_size); - cublasErrcheck(cublasSgemmBatched(handle, GetCublasOperation(transa), GetCublasOperation(transb), + CHECK_CUBLAS(cublasSgemmBatched(handle, GetCublasOperation(transa), GetCublasOperation(transb), m, n, k, &alpha, d_A, lda, d_B, ldb, &beta, d_C, ldc, batch_size)); - cudaErrcheck(cudaFree(d_A)); - cudaErrcheck(cudaFree(d_B)); - cudaErrcheck(cudaFree(d_C)); + CHECK_CUDA(cudaFree(d_A)); + CHECK_CUDA(cudaFree(d_B)); + CHECK_CUDA(cudaFree(d_C)); } static inline void gemm_batched(cublasHandle_t& handle, const char& transa, const char& transb, const int& m, const int& n, const int& k, @@ -201,11 +243,11 @@ void gemm_batched(cublasHandle_t& handle, const char& transa, const char& transb double** d_A = allocate_(A, batch_size); double** d_B = allocate_(B, batch_size); double** d_C = allocate_(C, batch_size); - cublasErrcheck(cublasDgemmBatched(handle, GetCublasOperation(transa), GetCublasOperation(transb), + CHECK_CUBLAS(cublasDgemmBatched(handle, GetCublasOperation(transa), GetCublasOperation(transb), m, n, k, &alpha, d_A, lda, d_B, ldb, &beta, d_C, ldc, batch_size)); - cudaErrcheck(cudaFree(d_A)); - cudaErrcheck(cudaFree(d_B)); - cudaErrcheck(cudaFree(d_C)); + CHECK_CUDA(cudaFree(d_A)); + CHECK_CUDA(cudaFree(d_B)); + CHECK_CUDA(cudaFree(d_C)); } static inline void gemm_batched(cublasHandle_t& handle, const char& transa, const char& transb, const int& m, const int& n, const int& k, @@ -215,16 +257,16 @@ void gemm_batched(cublasHandle_t& handle, const char& transa, const char& transb std::complex** d_A = allocate_(A, batch_size); std::complex** d_B = allocate_(B, batch_size); std::complex** d_C = allocate_(C, batch_size); - cublasErrcheck(cublasCgemmBatched(handle, GetCublasOperation(transa), GetCublasOperation(transb), - m, n, k, - reinterpret_cast(&alpha), - reinterpret_cast(d_A), lda, - reinterpret_cast(d_B), ldb, - reinterpret_cast(&beta), + CHECK_CUBLAS(cublasCgemmBatched(handle, GetCublasOperation(transa), GetCublasOperation(transb), + m, n, k, + reinterpret_cast(&alpha), + reinterpret_cast(d_A), lda, + reinterpret_cast(d_B), ldb, + reinterpret_cast(&beta), reinterpret_cast(d_C), ldc, batch_size)); - cudaErrcheck(cudaFree(d_A)); - cudaErrcheck(cudaFree(d_B)); - cudaErrcheck(cudaFree(d_C)); + CHECK_CUDA(cudaFree(d_A)); + CHECK_CUDA(cudaFree(d_B)); + CHECK_CUDA(cudaFree(d_C)); } static inline void gemm_batched(cublasHandle_t& handle, const char& transa, const char& transb, const int& m, const int& n, const int& k, @@ -234,16 +276,16 @@ void gemm_batched(cublasHandle_t& handle, const char& transa, const char& transb std::complex** d_A = allocate_(A, batch_size); std::complex** d_B = allocate_(B, batch_size); std::complex** d_C = allocate_(C, batch_size); - cublasErrcheck(cublasZgemmBatched(handle, GetCublasOperation(transa), GetCublasOperation(transb), - m, n, k, - reinterpret_cast(&alpha), - reinterpret_cast(d_A), lda, - reinterpret_cast(d_B), ldb, - reinterpret_cast(&beta), + CHECK_CUBLAS(cublasZgemmBatched(handle, GetCublasOperation(transa), GetCublasOperation(transb), + m, n, k, + reinterpret_cast(&alpha), + reinterpret_cast(d_A), lda, + reinterpret_cast(d_B), ldb, + reinterpret_cast(&beta), reinterpret_cast(d_C), ldc, batch_size)); - cudaErrcheck(cudaFree(d_A)); - cudaErrcheck(cudaFree(d_B)); - cudaErrcheck(cudaFree(d_C)); + CHECK_CUDA(cudaFree(d_A)); + CHECK_CUDA(cudaFree(d_B)); + CHECK_CUDA(cudaFree(d_C)); } static inline @@ -251,15 +293,15 @@ void gemm_batched_strided(cublasHandle_t& handle, const char& transa, const char const float& alpha, const float* A, const int& lda, const int& stride_a, const float* B, const int& ldb, const int& stride_b, const float& beta, float* C, const int& ldc, const int& stride_c, const int& batch_size) { - cublasErrcheck(cublasSgemmStridedBatched( - handle, - GetCublasOperation(transa), + CHECK_CUBLAS(cublasSgemmStridedBatched( + handle, + GetCublasOperation(transa), GetCublasOperation(transb), - m, n, k, - &alpha, - A, lda, stride_a, - B, ldb, stride_b, - &beta, + m, n, k, + &alpha, + A, lda, stride_a, + B, ldb, stride_b, + &beta, C, ldc, stride_c, batch_size)); } @@ -268,15 +310,15 @@ void gemm_batched_strided(cublasHandle_t& handle, const char& transa, const char const double& alpha, const double* A, const int& lda, const int& stride_a, const double* B, const int& ldb, const int& stride_b, const double& beta, double* C, const int& ldc, const int& stride_c, const int& batch_size) { - cublasErrcheck(cublasDgemmStridedBatched( - handle, - GetCublasOperation(transa), + CHECK_CUBLAS(cublasDgemmStridedBatched( + handle, + GetCublasOperation(transa), GetCublasOperation(transb), - m, n, k, - &alpha, - A, lda, stride_a, - B, ldb, stride_b, - &beta, + m, n, k, + &alpha, + A, lda, stride_a, + B, ldb, stride_b, + &beta, C, ldc, stride_c, batch_size)); } @@ -285,15 +327,15 @@ void gemm_batched_strided(cublasHandle_t& handle, const char& transa, const char const std::complex& alpha, const std::complex* A, const int& lda, const int& stride_a, const std::complex* B, const int& ldb, const int& stride_b, const std::complex& beta, std::complex* C, const int& ldc, const int& stride_c, const int& batch_size) { - cublasErrcheck(cublasCgemmStridedBatched( - handle, - GetCublasOperation(transa), + CHECK_CUBLAS(cublasCgemmStridedBatched( + handle, + GetCublasOperation(transa), GetCublasOperation(transb), - m, n, k, - reinterpret_cast(&alpha), - reinterpret_cast(A), lda, stride_a, - reinterpret_cast(B), ldb, stride_b, - reinterpret_cast(&beta), + m, n, k, + reinterpret_cast(&alpha), + reinterpret_cast(A), lda, stride_a, + reinterpret_cast(B), ldb, stride_b, + reinterpret_cast(&beta), reinterpret_cast(C), ldc, stride_c, batch_size)); } @@ -302,15 +344,15 @@ void gemm_batched_strided(cublasHandle_t& handle, const char& transa, const char const std::complex& alpha, const std::complex* A, const int& lda, const int& stride_a, const std::complex* B, const int& ldb, const int& stride_b, const std::complex& beta, std::complex* C, const int& ldc, const int& stride_c, const int& batch_size) { - cublasErrcheck(cublasZgemmStridedBatched( - handle, - GetCublasOperation(transa), + CHECK_CUBLAS(cublasZgemmStridedBatched( + handle, + GetCublasOperation(transa), GetCublasOperation(transb), - m, n, k, - reinterpret_cast(&alpha), - reinterpret_cast(A), lda, stride_a, - reinterpret_cast(B), ldb, stride_b, - reinterpret_cast(&beta), + m, n, k, + reinterpret_cast(&alpha), + reinterpret_cast(A), lda, stride_a, + reinterpret_cast(B), ldb, stride_b, + reinterpret_cast(&beta), reinterpret_cast(C), ldc, stride_c, batch_size)); } @@ -318,4 +360,4 @@ void gemm_batched_strided(cublasHandle_t& handle, const char& transa, const char } // namespace cuBlasConnector } // namespace container -#endif // BASE_THIRD_PARTY_CUBLAS_H_ \ No newline at end of file +#endif // BASE_THIRD_PARTY_CUBLAS_H_ diff --git a/source/source_base/module_container/base/third_party/cusolver.h b/source/source_base/module_container/base/third_party/cusolver.h index 111b321e26..529109823d 100644 --- a/source/source_base/module_container/base/third_party/cusolver.h +++ b/source/source_base/module_container/base/third_party/cusolver.h @@ -3,6 +3,17 @@ #include #include +#include + +// #include // traits, needed if generic API is used. +// header provided by cusolver, including some data types and macros. +// see https://github.com/NVIDIA/CUDALibrarySamples/blob/master/cuSOLVER/utils/cusolver_utils.h +// The cuSolverDN library provides two different APIs; legacy and generic. +// https://docs.nvidia.com/cuda/cusolver/index.html#naming-conventions +// now only legacy APIs are used, while the general APIs have the potential to simplify code implementation. +// for example, cucusolverDnXpotrf/getrf/geqrf/sytrf +// More tests are needed to confirm that the generic APIs are operating normally, as they are not yet fully supported. + #include namespace container { @@ -14,9 +25,9 @@ void trtri (cusolverDnHandle_t& cusolver_handle, const char& uplo, const char& d { size_t d_lwork = 0, h_lwork = 0; using Type = typename GetTypeThrust::type; - cusolverErrcheck(cusolverDnXtrtri_bufferSize(cusolver_handle, cublas_fill_mode(uplo), cublas_diag_type(diag), n, GetTypeCuda::cuda_data_type, reinterpret_cast(A), lda, &d_lwork, &h_lwork)); + CHECK_CUSOLVER(cusolverDnXtrtri_bufferSize(cusolver_handle, cublas_fill_mode(uplo), cublas_diag_type(diag), n, GetTypeCuda::cuda_data_type, reinterpret_cast(A), lda, &d_lwork, &h_lwork)); void* d_work = nullptr, *h_work = nullptr; - cudaErrcheck(cudaMalloc((void**)&d_work, d_lwork)); + CHECK_CUDA(cudaMalloc((void**)&d_work, d_lwork)); if (h_lwork) { h_work = malloc(h_lwork); if (h_work == nullptr) { @@ -25,61 +36,61 @@ void trtri (cusolverDnHandle_t& cusolver_handle, const char& uplo, const char& d } int h_info = 0; int* d_info = nullptr; - cudaErrcheck(cudaMalloc((void**)&d_info, sizeof(int))); + CHECK_CUDA(cudaMalloc((void**)&d_info, sizeof(int))); // Perform Cholesky decomposition - cusolverErrcheck(cusolverDnXtrtri(cusolver_handle, cublas_fill_mode(uplo), cublas_diag_type(diag), n, GetTypeCuda::cuda_data_type, reinterpret_cast(A), n, d_work, d_lwork, h_work, h_lwork, d_info)); - cudaErrcheck(cudaMemcpy(&h_info, d_info, sizeof(int), cudaMemcpyDeviceToHost)); + CHECK_CUSOLVER(cusolverDnXtrtri(cusolver_handle, cublas_fill_mode(uplo), cublas_diag_type(diag), n, GetTypeCuda::cuda_data_type, reinterpret_cast(A), n, d_work, d_lwork, h_work, h_lwork, d_info)); + CHECK_CUDA(cudaMemcpy(&h_info, d_info, sizeof(int), cudaMemcpyDeviceToHost)); if (h_info != 0) { throw std::runtime_error("trtri: failed to invert matrix"); } free(h_work); - cudaErrcheck(cudaFree(d_work)); - cudaErrcheck(cudaFree(d_info)); + CHECK_CUDA(cudaFree(d_work)); + CHECK_CUDA(cudaFree(d_info)); } static inline void potri (cusolverDnHandle_t& cusolver_handle, const char& uplo, const char& diag, const int& n, float * A, const int& lda) { int lwork; - cusolverErrcheck(cusolverDnSpotri_bufferSize(cusolver_handle, cublas_fill_mode(uplo), n, A, n, &lwork)); - float* work; - cudaErrcheck(cudaMalloc((void**)&work, lwork * sizeof(float))); + CHECK_CUSOLVER(cusolverDnSpotri_bufferSize(cusolver_handle, cublas_fill_mode(uplo), n, A, n, &lwork)); + float* work = nullptr; + CHECK_CUDA(cudaMalloc((void**)&work, lwork * sizeof(float))); // Perform Cholesky decomposition - cusolverErrcheck(cusolverDnSpotri(cusolver_handle, cublas_fill_mode(uplo), n, A, n, work, lwork, nullptr)); - cudaErrcheck(cudaFree(work)); + CHECK_CUSOLVER(cusolverDnSpotri(cusolver_handle, cublas_fill_mode(uplo), n, A, n, work, lwork, nullptr)); + CHECK_CUDA(cudaFree(work)); } static inline void potri (cusolverDnHandle_t& cusolver_handle, const char& uplo, const char& diag, const int& n, double * A, const int& lda) { int lwork; - cusolverErrcheck(cusolverDnDpotri_bufferSize(cusolver_handle, cublas_fill_mode(uplo), n, A, n, &lwork)); - double* work; - cudaErrcheck(cudaMalloc((void**)&work, lwork * sizeof(double))); + CHECK_CUSOLVER(cusolverDnDpotri_bufferSize(cusolver_handle, cublas_fill_mode(uplo), n, A, n, &lwork)); + double* work = nullptr; + CHECK_CUDA(cudaMalloc((void**)&work, lwork * sizeof(double))); // Perform Cholesky decomposition - cusolverErrcheck(cusolverDnDpotri(cusolver_handle, cublas_fill_mode(uplo), n, A, n, work, lwork, nullptr)); - cudaErrcheck(cudaFree(work)); + CHECK_CUSOLVER(cusolverDnDpotri(cusolver_handle, cublas_fill_mode(uplo), n, A, n, work, lwork, nullptr)); + CHECK_CUDA(cudaFree(work)); } static inline void potri (cusolverDnHandle_t& cusolver_handle, const char& uplo, const char& diag, const int& n, std::complex * A, const int& lda) { int lwork; - cusolverErrcheck(cusolverDnCpotri_bufferSize(cusolver_handle, cublas_fill_mode(uplo), n, reinterpret_cast(A), n, &lwork)); - cuComplex* work; - cudaErrcheck(cudaMalloc((void**)&work, lwork * sizeof(cuComplex))); + CHECK_CUSOLVER(cusolverDnCpotri_bufferSize(cusolver_handle, cublas_fill_mode(uplo), n, reinterpret_cast(A), n, &lwork)); + cuComplex* work = nullptr; + CHECK_CUDA(cudaMalloc((void**)&work, lwork * sizeof(cuComplex))); // Perform Cholesky decomposition - cusolverErrcheck(cusolverDnCpotri(cusolver_handle, cublas_fill_mode(uplo), n, reinterpret_cast(A), n, work, lwork, nullptr)); - cudaErrcheck(cudaFree(work)); + CHECK_CUSOLVER(cusolverDnCpotri(cusolver_handle, cublas_fill_mode(uplo), n, reinterpret_cast(A), n, work, lwork, nullptr)); + CHECK_CUDA(cudaFree(work)); } static inline void potri (cusolverDnHandle_t& cusolver_handle, const char& uplo, const char& diag, const int& n, std::complex * A, const int& lda) { int lwork; - cusolverErrcheck(cusolverDnZpotri_bufferSize(cusolver_handle, cublas_fill_mode(uplo), n, reinterpret_cast(A), n, &lwork)); - cuDoubleComplex* work; - cudaErrcheck(cudaMalloc((void**)&work, lwork * sizeof(cuDoubleComplex))); + CHECK_CUSOLVER(cusolverDnZpotri_bufferSize(cusolver_handle, cublas_fill_mode(uplo), n, reinterpret_cast(A), n, &lwork)); + cuDoubleComplex* work = nullptr; + CHECK_CUDA(cudaMalloc((void**)&work, lwork * sizeof(cuDoubleComplex))); // Perform Cholesky decomposition - cusolverErrcheck(cusolverDnZpotri(cusolver_handle, cublas_fill_mode(uplo), n, reinterpret_cast(A), n, work, lwork, nullptr)); - cudaErrcheck(cudaFree(work)); + CHECK_CUSOLVER(cusolverDnZpotri(cusolver_handle, cublas_fill_mode(uplo), n, reinterpret_cast(A), n, work, lwork, nullptr)); + CHECK_CUDA(cudaFree(work)); } @@ -88,269 +99,880 @@ void potrf (cusolverDnHandle_t& cusolver_handle, const char& uplo, const int& n, { int lwork; int *info = nullptr; - cudaErrcheck(cudaMalloc((void**)&info, 1 * sizeof(int))); - cusolverErrcheck(cusolverDnSpotrf_bufferSize(cusolver_handle, cublas_fill_mode(uplo), n, A, n, &lwork)); - float* work; - cudaErrcheck(cudaMalloc((void**)&work, lwork * sizeof(float))); + CHECK_CUDA(cudaMalloc((void**)&info, 1 * sizeof(int))); + CHECK_CUSOLVER(cusolverDnSpotrf_bufferSize(cusolver_handle, cublas_fill_mode(uplo), n, A, n, &lwork)); + float* work = nullptr; + CHECK_CUDA(cudaMalloc((void**)&work, lwork * sizeof(float))); // Perform Cholesky decomposition - cusolverErrcheck(cusolverDnSpotrf(cusolver_handle, cublas_fill_mode(uplo), n, A, n, work, lwork, info)); - cudaErrcheck(cudaFree(work)); - cudaErrcheck(cudaFree(info)); + CHECK_CUSOLVER(cusolverDnSpotrf(cusolver_handle, cublas_fill_mode(uplo), n, A, n, work, lwork, info)); + CHECK_CUDA(cudaFree(work)); + CHECK_CUDA(cudaFree(info)); } static inline void potrf (cusolverDnHandle_t& cusolver_handle, const char& uplo, const int& n, double * A, const int& lda) { int lwork; int *info = nullptr; - cudaErrcheck(cudaMalloc((void**)&info, 1 * sizeof(int))); - cusolverErrcheck(cusolverDnDpotrf_bufferSize(cusolver_handle, cublas_fill_mode(uplo), n, A, n, &lwork)); - double* work; - cudaErrcheck(cudaMalloc((void**)&work, lwork * sizeof(double))); + CHECK_CUDA(cudaMalloc((void**)&info, 1 * sizeof(int))); + CHECK_CUSOLVER(cusolverDnDpotrf_bufferSize(cusolver_handle, cublas_fill_mode(uplo), n, A, n, &lwork)); + double* work = nullptr; + CHECK_CUDA(cudaMalloc((void**)&work, lwork * sizeof(double))); // Perform Cholesky decomposition - cusolverErrcheck(cusolverDnDpotrf(cusolver_handle, cublas_fill_mode(uplo), n, A, n, work, lwork, info)); - cudaErrcheck(cudaFree(work)); - cudaErrcheck(cudaFree(info)); + CHECK_CUSOLVER(cusolverDnDpotrf(cusolver_handle, cublas_fill_mode(uplo), n, A, n, work, lwork, info)); + CHECK_CUDA(cudaFree(work)); + CHECK_CUDA(cudaFree(info)); } static inline void potrf (cusolverDnHandle_t& cusolver_handle, const char& uplo, const int& n, std::complex * A, const int& lda) { int lwork; int *info = nullptr; - cudaErrcheck(cudaMalloc((void**)&info, 1 * sizeof(int))); - cusolverErrcheck(cusolverDnCpotrf_bufferSize(cusolver_handle, cublas_fill_mode(uplo), n, reinterpret_cast(A), lda, &lwork)); - cuComplex* work; - cudaErrcheck(cudaMalloc((void**)&work, lwork * sizeof(cuComplex))); + CHECK_CUDA(cudaMalloc((void**)&info, 1 * sizeof(int))); + CHECK_CUSOLVER(cusolverDnCpotrf_bufferSize(cusolver_handle, cublas_fill_mode(uplo), n, reinterpret_cast(A), lda, &lwork)); + cuComplex* work = nullptr; + CHECK_CUDA(cudaMalloc((void**)&work, lwork * sizeof(cuComplex))); // Perform Cholesky decomposition - cusolverErrcheck(cusolverDnCpotrf(cusolver_handle, cublas_fill_mode(uplo), n, reinterpret_cast(A), lda, work, lwork, info)); - cudaErrcheck(cudaFree(work)); - cudaErrcheck(cudaFree(info)); + CHECK_CUSOLVER(cusolverDnCpotrf(cusolver_handle, cublas_fill_mode(uplo), n, reinterpret_cast(A), lda, work, lwork, info)); + CHECK_CUDA(cudaFree(work)); + CHECK_CUDA(cudaFree(info)); } static inline void potrf (cusolverDnHandle_t& cusolver_handle, const char& uplo, const int& n, std::complex * A, const int& lda) { int lwork; int *info = nullptr; - cudaErrcheck(cudaMalloc((void**)&info, 1 * sizeof(int))); - cusolverErrcheck(cusolverDnZpotrf_bufferSize(cusolver_handle, cublas_fill_mode(uplo), n, reinterpret_cast(A), lda, &lwork)); - cuDoubleComplex* work; - cudaErrcheck(cudaMalloc((void**)&work, lwork * sizeof(cuDoubleComplex))); + CHECK_CUDA(cudaMalloc((void**)&info, 1 * sizeof(int))); + CHECK_CUSOLVER(cusolverDnZpotrf_bufferSize(cusolver_handle, cublas_fill_mode(uplo), n, reinterpret_cast(A), lda, &lwork)); + cuDoubleComplex* work = nullptr; + CHECK_CUDA(cudaMalloc((void**)&work, lwork * sizeof(cuDoubleComplex))); // Perform Cholesky decomposition - cusolverErrcheck(cusolverDnZpotrf(cusolver_handle, cublas_fill_mode(uplo), n, reinterpret_cast(A), lda, work, lwork, info)); - cudaErrcheck(cudaFree(work)); - cudaErrcheck(cudaFree(info)); + CHECK_CUSOLVER(cusolverDnZpotrf(cusolver_handle, cublas_fill_mode(uplo), n, reinterpret_cast(A), lda, work, lwork, info)); + CHECK_CUDA(cudaFree(work)); + CHECK_CUDA(cudaFree(info)); } static inline -void dnevd (cusolverDnHandle_t& cusolver_handle, const char& jobz, const char& uplo, const int& n, float* A, const int& lda, float * W) +void heevd (cusolverDnHandle_t& cusolver_handle, const char& jobz, const char& uplo, const int& n, float* A, const int& lda, float * W) { // prepare some values for cusolverDnSsyevd_bufferSize - int lwork = 0; - int h_info = 0; + int lwork = 0; + int h_info = 0; int* d_info = nullptr; float* d_work = nullptr; - cudaErrcheck(cudaMalloc((void**)&d_info, sizeof(int))); + CHECK_CUDA(cudaMalloc((void**)&d_info, sizeof(int))); // calculate the sizes needed for pre-allocated buffer. - cusolverErrcheck(cusolverDnSsyevd_bufferSize(cusolver_handle, cublas_eig_mode(jobz), cublas_fill_mode(uplo), + CHECK_CUSOLVER(cusolverDnSsyevd_bufferSize(cusolver_handle, cublas_eig_mode(jobz), cublas_fill_mode(uplo), n, A, lda, W, &lwork)); // allocate memory - cudaErrcheck(cudaMalloc((void**)&d_work, sizeof(float) * lwork)); + CHECK_CUDA(cudaMalloc((void**)&d_work, sizeof(float) * lwork)); // compute eigenvalues and eigenvectors. - cusolverErrcheck(cusolverDnSsyevd(cusolver_handle, cublas_eig_mode(jobz), cublas_fill_mode(uplo), + CHECK_CUSOLVER(cusolverDnSsyevd(cusolver_handle, cublas_eig_mode(jobz), cublas_fill_mode(uplo), n, A, lda, W, d_work, lwork, d_info)); - cudaErrcheck(cudaMemcpy(&h_info, d_info, sizeof(int), cudaMemcpyDeviceToHost)); + CHECK_CUDA(cudaMemcpy(&h_info, d_info, sizeof(int), cudaMemcpyDeviceToHost)); if (h_info != 0) { - throw std::runtime_error("dnevd: failed to invert matrix"); + throw std::runtime_error("heevd: failed to invert matrix"); } - cudaErrcheck(cudaFree(d_info)); - cudaErrcheck(cudaFree(d_work)); + CHECK_CUDA(cudaFree(d_info)); + CHECK_CUDA(cudaFree(d_work)); } static inline -void dnevd (cusolverDnHandle_t& cusolver_handle, const char& jobz, const char& uplo, const int& n, double* A, const int& lda, double * W) +void heevd (cusolverDnHandle_t& cusolver_handle, const char& jobz, const char& uplo, const int& n, double* A, const int& lda, double * W) { // prepare some values for cusolverDnDsyevd_bufferSize - int lwork = 0; - int h_info = 0; + int lwork = 0; + int h_info = 0; int* d_info = nullptr; double* d_work = nullptr; - cudaErrcheck(cudaMalloc((void**)&d_info, sizeof(int))); + CHECK_CUDA(cudaMalloc((void**)&d_info, sizeof(int))); // calculate the sizes needed for pre-allocated buffer. - cusolverErrcheck(cusolverDnDsyevd_bufferSize(cusolver_handle, cublas_eig_mode(jobz), cublas_fill_mode(uplo), + CHECK_CUSOLVER(cusolverDnDsyevd_bufferSize(cusolver_handle, cublas_eig_mode(jobz), cublas_fill_mode(uplo), n, A, lda, W, &lwork)); // allocate memory - cudaErrcheck(cudaMalloc((void**)&d_work, sizeof(double) * lwork)); + CHECK_CUDA(cudaMalloc((void**)&d_work, sizeof(double) * lwork)); // compute eigenvalues and eigenvectors. - cusolverErrcheck(cusolverDnDsyevd(cusolver_handle, cublas_eig_mode(jobz), cublas_fill_mode(uplo), + CHECK_CUSOLVER(cusolverDnDsyevd(cusolver_handle, cublas_eig_mode(jobz), cublas_fill_mode(uplo), n, A, lda, W, d_work, lwork, d_info)); - cudaErrcheck(cudaMemcpy(&h_info, d_info, sizeof(int), cudaMemcpyDeviceToHost)); + CHECK_CUDA(cudaMemcpy(&h_info, d_info, sizeof(int), cudaMemcpyDeviceToHost)); if (h_info != 0) { - throw std::runtime_error("dnevd: failed to invert matrix"); + throw std::runtime_error("heevd: failed to invert matrix"); } - cudaErrcheck(cudaFree(d_info)); - cudaErrcheck(cudaFree(d_work)); + CHECK_CUDA(cudaFree(d_info)); + CHECK_CUDA(cudaFree(d_work)); } static inline -void dnevd (cusolverDnHandle_t& cusolver_handle, const char& jobz, const char& uplo, const int& n, std::complex* A, const int& lda, float * W) +void heevd (cusolverDnHandle_t& cusolver_handle, const char& jobz, const char& uplo, const int& n, std::complex* A, const int& lda, float * W) { // prepare some values for cusolverDnCheevd_bufferSize - int lwork = 0; - int h_info = 0; + int lwork = 0; + int h_info = 0; int* d_info = nullptr; cuComplex* d_work = nullptr; - cudaErrcheck(cudaMalloc((void**)&d_info, sizeof(int))); + CHECK_CUDA(cudaMalloc((void**)&d_info, sizeof(int))); // calculate the sizes needed for pre-allocated buffer. - cusolverErrcheck(cusolverDnCheevd_bufferSize(cusolver_handle, cublas_eig_mode(jobz), cublas_fill_mode(uplo), + CHECK_CUSOLVER(cusolverDnCheevd_bufferSize(cusolver_handle, cublas_eig_mode(jobz), cublas_fill_mode(uplo), n, reinterpret_cast(A), lda, W, &lwork)); // allocate memory - cudaErrcheck(cudaMalloc((void**)&d_work, sizeof(cuComplex) * lwork)); + CHECK_CUDA(cudaMalloc((void**)&d_work, sizeof(cuComplex) * lwork)); // compute eigenvalues and eigenvectors. - cusolverErrcheck(cusolverDnCheevd(cusolver_handle, cublas_eig_mode(jobz), cublas_fill_mode(uplo), + CHECK_CUSOLVER(cusolverDnCheevd(cusolver_handle, cublas_eig_mode(jobz), cublas_fill_mode(uplo), n, reinterpret_cast(A), lda, W, d_work, lwork, d_info)); - cudaErrcheck(cudaMemcpy(&h_info, d_info, sizeof(int), cudaMemcpyDeviceToHost)); + CHECK_CUDA(cudaMemcpy(&h_info, d_info, sizeof(int), cudaMemcpyDeviceToHost)); if (h_info != 0) { - throw std::runtime_error("dnevd: failed to invert matrix"); + throw std::runtime_error("heevd: failed to invert matrix"); } - cudaErrcheck(cudaFree(d_info)); - cudaErrcheck(cudaFree(d_work)); + CHECK_CUDA(cudaFree(d_info)); + CHECK_CUDA(cudaFree(d_work)); } static inline -void dnevd (cusolverDnHandle_t& cusolver_handle, const char& jobz, const char& uplo, const int& n, std::complex* A, const int& lda, double* W) +void heevd (cusolverDnHandle_t& cusolver_handle, const char& jobz, const char& uplo, const int& n, std::complex* A, const int& lda, double* W) { // prepare some values for cusolverDnZheevd_bufferSize - int lwork = 0; - int h_info = 0; + int lwork = 0; + int h_info = 0; int* d_info = nullptr; cuDoubleComplex* d_work = nullptr; - cudaErrcheck(cudaMalloc((void**)&d_info, sizeof(int))); + CHECK_CUDA(cudaMalloc((void**)&d_info, sizeof(int))); // calculate the sizes needed for pre-allocated buffer. - cusolverErrcheck(cusolverDnZheevd_bufferSize(cusolver_handle, cublas_eig_mode(jobz), cublas_fill_mode(uplo), + CHECK_CUSOLVER(cusolverDnZheevd_bufferSize(cusolver_handle, cublas_eig_mode(jobz), cublas_fill_mode(uplo), n, reinterpret_cast(A), lda, W, &lwork)); // allocate memory - cudaErrcheck(cudaMalloc((void**)&d_work, sizeof(cuDoubleComplex) * lwork)); + CHECK_CUDA(cudaMalloc((void**)&d_work, sizeof(cuDoubleComplex) * lwork)); // compute eigenvalues and eigenvectors. - cusolverErrcheck(cusolverDnZheevd(cusolver_handle, cublas_eig_mode(jobz), cublas_fill_mode(uplo), + CHECK_CUSOLVER(cusolverDnZheevd(cusolver_handle, cublas_eig_mode(jobz), cublas_fill_mode(uplo), n, reinterpret_cast(A), lda, W, d_work, lwork, d_info)); - cudaErrcheck(cudaMemcpy(&h_info, d_info, sizeof(int), cudaMemcpyDeviceToHost)); + CHECK_CUDA(cudaMemcpy(&h_info, d_info, sizeof(int), cudaMemcpyDeviceToHost)); + if (h_info != 0) { + throw std::runtime_error("heevd: failed to invert matrix"); + } + CHECK_CUDA(cudaFree(d_info)); + CHECK_CUDA(cudaFree(d_work)); +} + +// ===================================================================================================== +// heevdx: Compute eigenvalues and eigenvectors of symmetric/Hermitian matrix +// ===================================================================================================== +// --- float --- +static inline +void heevdx(cusolverDnHandle_t& cusolver_handle, + const int n, + const int lda, + float* d_A, + const char jobz, + const char uplo, + const char range, + const int il, const int iu, + const float vl, const float vu, + float* d_eigen_val, + int* h_meig) +{ + int lwork = 0; + int* d_info = nullptr; + float* d_work = nullptr; + + CHECK_CUDA(cudaMalloc((void**)&d_info, sizeof(int))); + + cusolverEigMode_t jobz_t = cublas_eig_mode(jobz); + cublasFillMode_t uplo_t = cublas_fill_mode(uplo); + cusolverEigRange_t range_t = cublas_eig_range(range); + + CHECK_CUSOLVER(cusolverDnSsyevdx_bufferSize( + cusolver_handle, + jobz_t, range_t, uplo_t, + n, d_A, lda, + vl, vu, il, iu, + h_meig, // ← int* output: number of eigenvalues found + d_eigen_val, // ← const float* W (used for query, can be dummy) + &lwork // ← int* lwork (output) + )); + + CHECK_CUDA(cudaMalloc((void**)&d_work, sizeof(float) * lwork)); + + // Main call + CHECK_CUSOLVER(cusolverDnSsyevdx( + cusolver_handle, + jobz_t, range_t, uplo_t, + n, + d_A, lda, + vl, vu, il, iu, + h_meig, // ← int* output + d_eigen_val, // ← float* W: eigenvalues + d_work, lwork, + d_info + )); + + int h_info = 0; + CHECK_CUDA(cudaMemcpy(&h_info, d_info, sizeof(int), cudaMemcpyDeviceToHost)); + if (h_info != 0) { + cudaFree(d_info); cudaFree(d_work); + throw std::runtime_error("heevdx (float) failed with info = " + std::to_string(h_info)); + } + + cudaFree(d_info); + cudaFree(d_work); +} + +// --- double --- +static inline +void heevdx(cusolverDnHandle_t& cusolver_handle, + const int n, + const int lda, + double* d_A, + const char jobz, + const char uplo, + const char range, + const int il, const int iu, + const double vl, const double vu, + double* d_eigen_val, + int* h_meig) +{ + int lwork = 0; + int* d_info = nullptr; + double* d_work = nullptr; + + CHECK_CUDA(cudaMalloc((void**)&d_info, sizeof(int))); + + cusolverEigMode_t jobz_t = cublas_eig_mode(jobz); + cublasFillMode_t uplo_t = cublas_fill_mode(uplo); + cusolverEigRange_t range_t = cublas_eig_range(range); + + CHECK_CUSOLVER(cusolverDnDsyevdx_bufferSize( + cusolver_handle, + jobz_t, range_t, uplo_t, + n, d_A, lda, + vl, vu, il, iu, + h_meig, + d_eigen_val, + &lwork + )); + + CHECK_CUDA(cudaMalloc((void**)&d_work, sizeof(double) * lwork)); + + CHECK_CUSOLVER(cusolverDnDsyevdx( + cusolver_handle, + jobz_t, range_t, uplo_t, + n, + d_A, lda, + vl, vu, il, iu, + h_meig, + d_eigen_val, + d_work, lwork, + d_info + )); + + int h_info = 0; + CHECK_CUDA(cudaMemcpy(&h_info, d_info, sizeof(int), cudaMemcpyDeviceToHost)); + if (h_info != 0) { + cudaFree(d_info); cudaFree(d_work); + throw std::runtime_error("heevdx (double) failed with info = " + std::to_string(h_info)); + } + + cudaFree(d_info); + cudaFree(d_work); +} + +// --- complex --- +static inline +void heevdx(cusolverDnHandle_t& cusolver_handle, + const int n, + const int lda, + std::complex* d_A, + const char jobz, + const char uplo, + const char range, + const int il, const int iu, + const float vl, const float vu, + float* d_eigen_val, + int* h_meig) +{ + int lwork = 0; + int* d_info = nullptr; + cuComplex* d_work = nullptr; + + CHECK_CUDA(cudaMalloc((void**)&d_info, sizeof(int))); + + cusolverEigMode_t jobz_t = cublas_eig_mode(jobz); + cublasFillMode_t uplo_t = cublas_fill_mode(uplo); + cusolverEigRange_t range_t = cublas_eig_range(range); + + CHECK_CUSOLVER(cusolverDnCheevdx_bufferSize( + cusolver_handle, + jobz_t, range_t, uplo_t, + n, + reinterpret_cast(d_A), lda, + vl, vu, il, iu, + h_meig, + d_eigen_val, + &lwork + )); + + CHECK_CUDA(cudaMalloc((void**)&d_work, sizeof(cuComplex) * lwork)); + + CHECK_CUSOLVER(cusolverDnCheevdx( + cusolver_handle, + jobz_t, range_t, uplo_t, + n, + reinterpret_cast(d_A), lda, + vl, vu, il, iu, + h_meig, + d_eigen_val, + d_work, lwork, + d_info + )); + + int h_info = 0; + CHECK_CUDA(cudaMemcpy(&h_info, d_info, sizeof(int), cudaMemcpyDeviceToHost)); + if (h_info != 0) { + cudaFree(d_info); cudaFree(d_work); + throw std::runtime_error("heevdx (complex) failed with info = " + std::to_string(h_info)); + } + + cudaFree(d_info); + cudaFree(d_work); +} + +// --- complex --- +static inline +void heevdx(cusolverDnHandle_t& cusolver_handle, + const int n, + const int lda, + std::complex* d_A, + const char jobz, + const char uplo, + const char range, + const int il, const int iu, + const double vl, const double vu, + double* d_eigen_val, + int* h_meig) +{ + int lwork = 0; + int* d_info = nullptr; + cuDoubleComplex* d_work = nullptr; + + CHECK_CUDA(cudaMalloc((void**)&d_info, sizeof(int))); + + cusolverEigMode_t jobz_t = cublas_eig_mode(jobz); + cublasFillMode_t uplo_t = cublas_fill_mode(uplo); + cusolverEigRange_t range_t = cublas_eig_range(range); + + CHECK_CUSOLVER(cusolverDnZheevdx_bufferSize( + cusolver_handle, + jobz_t, range_t, uplo_t, + n, + reinterpret_cast(d_A), lda, + vl, vu, il, iu, + h_meig, + d_eigen_val, + &lwork + )); + + CHECK_CUDA(cudaMalloc((void**)&d_work, sizeof(cuDoubleComplex) * lwork)); + + CHECK_CUSOLVER(cusolverDnZheevdx( + cusolver_handle, + jobz_t, range_t, uplo_t, + n, + reinterpret_cast(d_A), lda, + vl, vu, il, iu, + h_meig, + d_eigen_val, + d_work, lwork, + d_info + )); + + int h_info = 0; + CHECK_CUDA(cudaMemcpy(&h_info, d_info, sizeof(int), cudaMemcpyDeviceToHost)); if (h_info != 0) { - throw std::runtime_error("dnevd: failed to invert matrix"); + cudaFree(d_info); cudaFree(d_work); + throw std::runtime_error("heevdx (complex) failed with info = " + std::to_string(h_info)); } - cudaErrcheck(cudaFree(d_info)); - cudaErrcheck(cudaFree(d_work)); + + cudaFree(d_info); + cudaFree(d_work); } static inline -void dngvd (cusolverDnHandle_t& cusolver_handle, const int& itype, const char& jobz, const char& uplo, const int& n, float* A, const int& lda, float* B, const int& ldb, float * W) +void hegvd (cusolverDnHandle_t& cusolver_handle, const int& itype, const char& jobz, const char& uplo, const int& n, float* A, const int& lda, float* B, const int& ldb, float * W) { // prepare some values for cusolverDnSsygvd_bufferSize - int lwork = 0; - int h_info = 0; + int lwork = 0; + int h_info = 0; int* d_info = nullptr; float* d_work = nullptr; - cudaErrcheck(cudaMalloc((void**)&d_info, sizeof(int))); + CHECK_CUDA(cudaMalloc((void**)&d_info, sizeof(int))); // calculate the sizes needed for pre-allocated buffer. - cusolverErrcheck(cusolverDnSsygvd_bufferSize(cusolver_handle, cublas_eig_type(itype), cublas_eig_mode(jobz), cublas_fill_mode(uplo), + CHECK_CUSOLVER(cusolverDnSsygvd_bufferSize(cusolver_handle, cublas_eig_type(itype), cublas_eig_mode(jobz), cublas_fill_mode(uplo), n, A, lda, B, ldb, W, &lwork)); // allocate memory - cudaErrcheck(cudaMalloc((void**)&d_work, sizeof(float) * lwork)); + CHECK_CUDA(cudaMalloc((void**)&d_work, sizeof(float) * lwork)); // compute eigenvalues and eigenvectors. - cusolverErrcheck(cusolverDnSsygvd(cusolver_handle, cublas_eig_type(itype), cublas_eig_mode(jobz), cublas_fill_mode(uplo), + CHECK_CUSOLVER(cusolverDnSsygvd(cusolver_handle, cublas_eig_type(itype), cublas_eig_mode(jobz), cublas_fill_mode(uplo), n, A, lda, B, ldb, W, d_work, lwork, d_info)); - cudaErrcheck(cudaMemcpy(&h_info, d_info, sizeof(int), cudaMemcpyDeviceToHost)); + CHECK_CUDA(cudaMemcpy(&h_info, d_info, sizeof(int), cudaMemcpyDeviceToHost)); if (h_info != 0) { - throw std::runtime_error("dnevd: failed to invert matrix"); + throw std::runtime_error("heevd: failed to invert matrix"); } - cudaErrcheck(cudaFree(d_info)); - cudaErrcheck(cudaFree(d_work)); + CHECK_CUDA(cudaFree(d_info)); + CHECK_CUDA(cudaFree(d_work)); } static inline -void dngvd (cusolverDnHandle_t& cusolver_handle, const int& itype, const char& jobz, const char& uplo, const int& n, double* A, const int& lda, double* B, const int& ldb, double * W) +void hegvd (cusolverDnHandle_t& cusolver_handle, const int& itype, const char& jobz, const char& uplo, const int& n, double* A, const int& lda, double* B, const int& ldb, double * W) { // prepare some values for cusolverDnDsygvd_bufferSize - int lwork = 0; - int h_info = 0; + int lwork = 0; + int h_info = 0; int* d_info = nullptr; double* d_work = nullptr; - cudaErrcheck(cudaMalloc((void**)&d_info, sizeof(int))); + CHECK_CUDA(cudaMalloc((void**)&d_info, sizeof(int))); // calculate the sizes needed for pre-allocated buffer. - cusolverErrcheck(cusolverDnDsygvd_bufferSize(cusolver_handle, cublas_eig_type(itype), cublas_eig_mode(jobz), cublas_fill_mode(uplo), + CHECK_CUSOLVER(cusolverDnDsygvd_bufferSize(cusolver_handle, cublas_eig_type(itype), cublas_eig_mode(jobz), cublas_fill_mode(uplo), n, A, lda, B, ldb, W, &lwork)); // allocate memory - cudaErrcheck(cudaMalloc((void**)&d_work, sizeof(double) * lwork)); + CHECK_CUDA(cudaMalloc((void**)&d_work, sizeof(double) * lwork)); // compute eigenvalues and eigenvectors. - cusolverErrcheck(cusolverDnDsygvd(cusolver_handle, cublas_eig_type(itype), cublas_eig_mode(jobz), cublas_fill_mode(uplo), + CHECK_CUSOLVER(cusolverDnDsygvd(cusolver_handle, cublas_eig_type(itype), cublas_eig_mode(jobz), cublas_fill_mode(uplo), n, A, lda, B, ldb, W, d_work, lwork, d_info)); - cudaErrcheck(cudaMemcpy(&h_info, d_info, sizeof(int), cudaMemcpyDeviceToHost)); + CHECK_CUDA(cudaMemcpy(&h_info, d_info, sizeof(int), cudaMemcpyDeviceToHost)); if (h_info != 0) { - throw std::runtime_error("dnevd: failed to invert matrix"); + throw std::runtime_error("heevd: failed to invert matrix"); } - cudaErrcheck(cudaFree(d_info)); - cudaErrcheck(cudaFree(d_work)); + CHECK_CUDA(cudaFree(d_info)); + CHECK_CUDA(cudaFree(d_work)); } static inline -void dngvd (cusolverDnHandle_t& cusolver_handle, const int& itype, const char& jobz, const char& uplo, const int& n, std::complex* A, const int& lda, std::complex* B, const int& ldb, float* W) +void hegvd (cusolverDnHandle_t& cusolver_handle, const int& itype, const char& jobz, const char& uplo, const int& n, std::complex* A, const int& lda, std::complex* B, const int& ldb, float* W) { // prepare some values for cusolverDnChegvd_bufferSize - int lwork = 0; - int h_info = 0; + int lwork = 0; + int h_info = 0; int* d_info = nullptr; cuComplex* d_work = nullptr; - cudaErrcheck(cudaMalloc((void**)&d_info, sizeof(int))); + CHECK_CUDA(cudaMalloc((void**)&d_info, sizeof(int))); // calculate the sizes needed for pre-allocated buffer. - cusolverErrcheck(cusolverDnChegvd_bufferSize(cusolver_handle, cublas_eig_type(itype), cublas_eig_mode(jobz), cublas_fill_mode(uplo), + CHECK_CUSOLVER(cusolverDnChegvd_bufferSize(cusolver_handle, cublas_eig_type(itype), cublas_eig_mode(jobz), cublas_fill_mode(uplo), n, reinterpret_cast(A), lda, reinterpret_cast(B), ldb, W, &lwork)); // allocate memory - cudaErrcheck(cudaMalloc((void**)&d_work, sizeof(cuComplex) * lwork)); + CHECK_CUDA(cudaMalloc((void**)&d_work, sizeof(cuComplex) * lwork)); // compute eigenvalues and eigenvectors. - cusolverErrcheck(cusolverDnChegvd(cusolver_handle, cublas_eig_type(itype), cublas_eig_mode(jobz), cublas_fill_mode(uplo), + CHECK_CUSOLVER(cusolverDnChegvd(cusolver_handle, cublas_eig_type(itype), cublas_eig_mode(jobz), cublas_fill_mode(uplo), n, reinterpret_cast(A), lda, reinterpret_cast(B), ldb, W, d_work, lwork, d_info)); - cudaErrcheck(cudaMemcpy(&h_info, d_info, sizeof(int), cudaMemcpyDeviceToHost)); + CHECK_CUDA(cudaMemcpy(&h_info, d_info, sizeof(int), cudaMemcpyDeviceToHost)); if (h_info != 0) { - throw std::runtime_error("dnevd: failed to invert matrix"); + throw std::runtime_error("heevd: failed to invert matrix"); } - cudaErrcheck(cudaFree(d_info)); - cudaErrcheck(cudaFree(d_work)); + CHECK_CUDA(cudaFree(d_info)); + CHECK_CUDA(cudaFree(d_work)); } static inline -void dngvd (cusolverDnHandle_t& cusolver_handle, const int& itype, const char& jobz, const char& uplo, const int& n, std::complex* A, const int& lda, std::complex* B, const int& ldb, double* W) +void hegvd (cusolverDnHandle_t& cusolver_handle, const int& itype, const char& jobz, const char& uplo, const int& n, std::complex* A, const int& lda, std::complex* B, const int& ldb, double* W) { // prepare some values for cusolverDnZhegvd_bufferSize - int lwork = 0; - int h_info = 0; + int lwork = 0; + int h_info = 0; int* d_info = nullptr; cuDoubleComplex* d_work = nullptr; - cudaErrcheck(cudaMalloc((void**)&d_info, sizeof(int))); + CHECK_CUDA(cudaMalloc((void**)&d_info, sizeof(int))); // calculate the sizes needed for pre-allocated buffer. - cusolverErrcheck(cusolverDnZhegvd_bufferSize(cusolver_handle, cublas_eig_type(itype), cublas_eig_mode(jobz), cublas_fill_mode(uplo), + CHECK_CUSOLVER(cusolverDnZhegvd_bufferSize(cusolver_handle, cublas_eig_type(itype), cublas_eig_mode(jobz), cublas_fill_mode(uplo), n, reinterpret_cast(A), lda, reinterpret_cast(B), ldb, W, &lwork)); // allocate memory - cudaErrcheck(cudaMalloc((void**)&d_work, sizeof(cuDoubleComplex) * lwork)); + CHECK_CUDA(cudaMalloc((void**)&d_work, sizeof(cuDoubleComplex) * lwork)); // compute eigenvalues and eigenvectors. - cusolverErrcheck(cusolverDnZhegvd(cusolver_handle, cublas_eig_type(itype), cublas_eig_mode(jobz), cublas_fill_mode(uplo), + CHECK_CUSOLVER(cusolverDnZhegvd(cusolver_handle, cublas_eig_type(itype), cublas_eig_mode(jobz), cublas_fill_mode(uplo), n, reinterpret_cast(A), lda, reinterpret_cast(B), ldb, W, d_work, lwork, d_info)); - cudaErrcheck(cudaMemcpy(&h_info, d_info, sizeof(int), cudaMemcpyDeviceToHost)); + CHECK_CUDA(cudaMemcpy(&h_info, d_info, sizeof(int), cudaMemcpyDeviceToHost)); if (h_info != 0) { - throw std::runtime_error("dnevd: failed to invert matrix"); + throw std::runtime_error("heevd: failed to invert matrix"); + } + CHECK_CUDA(cudaFree(d_info)); + CHECK_CUDA(cudaFree(d_work)); +} + +// ===================================================================================================== +// hegvd x: Compute selected eigenvalues and eigenvectors of generalized Hermitian-definite eigenproblem +// A * x = lambda * B * x +// ===================================================================================================== + +// --- float --- +static inline +void hegvdx( + cusolverDnHandle_t& cusolver_handle, + const int itype, // 1: A*x = lambda*B*x + const char jobz, // 'V' or 'N' + const char range, // 'I', 'V', 'A' + const char uplo, // 'U' or 'L' + const int n, + const int lda, + float* d_A, // Input matrix A (device) + float* d_B, // Input matrix B (device) + const float vl, // for RANGE='V' + const float vu, + const int il, // for RANGE='I' + const int iu, + int* h_meig, // output: number of eigenvalues found + float* d_eigen_val, // output: eigenvalues + float* d_eigen_vec // output: eigenvectors (if jobz='V'), size ldz × m +) { + int lwork = 0; + int *d_info = nullptr; + float *d_work = nullptr; + + // Allocate device info + CHECK_CUDA(cudaMalloc((void**)&d_info, sizeof(int))); + + // Copy A and B to temporary buffers since sygvdx may modify them + float *d_A_copy = nullptr, *d_B_copy = nullptr; + CHECK_CUDA(cudaMalloc((void**)&d_A_copy, sizeof(float) * n * lda)); + CHECK_CUDA(cudaMalloc((void**)&d_B_copy, sizeof(float) * n * lda)); + CHECK_CUDA(cudaMemcpy(d_A_copy, d_A, sizeof(float) * n * lda, cudaMemcpyDeviceToDevice)); + CHECK_CUDA(cudaMemcpy(d_B_copy, d_B, sizeof(float) * n * lda, cudaMemcpyDeviceToDevice)); + + // Set parameters + cusolverEigType_t itype_t = cublas_eig_type(itype); + cusolverEigMode_t jobz_t = cublas_eig_mode(jobz); + cusolverEigRange_t range_t = cublas_eig_range(range); + cublasFillMode_t uplo_t = cublas_fill_mode(uplo); + + // Query workspace size + CHECK_CUSOLVER(cusolverDnSsygvdx_bufferSize( + cusolver_handle, + itype_t, jobz_t, range_t, uplo_t, + n, + d_A_copy, lda, + d_B_copy, lda, + vl, vu, il, iu, + h_meig, + d_eigen_val, + &lwork + )); + + // Allocate workspace + CHECK_CUDA(cudaMalloc((void**)&d_work, sizeof(float) * lwork)); + + // Main call + CHECK_CUSOLVER(cusolverDnSsygvdx( + cusolver_handle, + itype_t, jobz_t, range_t, uplo_t, + n, + d_A_copy, lda, + d_B_copy, lda, + vl, vu, il, iu, + h_meig, + d_eigen_val, + d_work, lwork, + d_info + )); + + // Check result + int h_info = 0; + CHECK_CUDA(cudaMemcpy(&h_info, d_info, sizeof(int), cudaMemcpyDeviceToHost)); + if (h_info < 0) { + throw std::runtime_error("hegvdx (float): illegal argument #" + std::to_string(-h_info)); + } else if (h_info > 0) { + // If h_info <= n: convergence issue in tridiag solver (no vec) OR + // If h_info > n: B's leading minor of order (h_info - n) is not positive definite + if (jobz_t == CUSOLVER_EIG_MODE_NOVECTOR && h_info <= n) { + throw std::runtime_error("hegvdx (float): failed to converge, " + std::to_string(h_info) + " off-diagonal elements didn't converge"); + } else if (h_info > n) { + throw std::runtime_error("hegvdx (float): leading minor of order " + std::to_string(h_info - n) + " of B is not positive definite"); + } + } + + // If jobz == 'V', copy eigenvectors from A (which now contains Z) to output + if (jobz == 'V') { + const int m = (*h_meig); // number of eigenvectors computed + CHECK_CUDA(cudaMemcpy(d_eigen_vec, d_A_copy, sizeof(float) * n * m, cudaMemcpyDeviceToDevice)); + } + + // Cleanup + cudaFree(d_info); + cudaFree(d_work); + cudaFree(d_A_copy); + cudaFree(d_B_copy); +} + + +// --- double --- +static inline +void hegvdx( + cusolverDnHandle_t& cusolver_handle, + const int itype, + const char jobz, + const char range, + const char uplo, + const int n, + const int lda, + double* d_A, + double* d_B, + const double vl, + const double vu, + const int il, + const int iu, + int* h_meig, + double* d_eigen_val, + double* d_eigen_vec +) { + int lwork = 0; + int *d_info = nullptr; + double *d_work = nullptr; + + CHECK_CUDA(cudaMalloc((void**)&d_info, sizeof(int))); + + double *d_A_copy = nullptr, *d_B_copy = nullptr; + CHECK_CUDA(cudaMalloc((void**)&d_A_copy, sizeof(double) * n * lda)); + CHECK_CUDA(cudaMalloc((void**)&d_B_copy, sizeof(double) * n * lda)); + CHECK_CUDA(cudaMemcpy(d_A_copy, d_A, sizeof(double) * n * lda, cudaMemcpyDeviceToDevice)); + CHECK_CUDA(cudaMemcpy(d_B_copy, d_B, sizeof(double) * n * lda, cudaMemcpyDeviceToDevice)); + + cusolverEigType_t itype_t = cublas_eig_type(itype); + cusolverEigMode_t jobz_t = cublas_eig_mode(jobz); + cusolverEigRange_t range_t = cublas_eig_range(range); + cublasFillMode_t uplo_t = cublas_fill_mode(uplo); + + CHECK_CUSOLVER(cusolverDnDsygvdx_bufferSize( + cusolver_handle, + itype_t, jobz_t, range_t, uplo_t, + n, + d_A_copy, lda, + d_B_copy, lda, + vl, vu, il, iu, + h_meig, + d_eigen_val, + &lwork + )); + + CHECK_CUDA(cudaMalloc((void**)&d_work, sizeof(double) * lwork)); + + CHECK_CUSOLVER(cusolverDnDsygvdx( + cusolver_handle, + itype_t, jobz_t, range_t, uplo_t, + n, + d_A_copy, lda, + d_B_copy, lda, + vl, vu, il, iu, + h_meig, + d_eigen_val, + d_work, lwork, + d_info + )); + + int h_info = 0; + CHECK_CUDA(cudaMemcpy(&h_info, d_info, sizeof(int), cudaMemcpyDeviceToHost)); + if (h_info < 0) { + throw std::runtime_error("hegvdx (double): illegal argument #" + std::to_string(-h_info)); + } else if (h_info > 0) { + if (jobz_t == CUSOLVER_EIG_MODE_NOVECTOR && h_info <= n) { + throw std::runtime_error("hegvdx (double): failed to converge, " + std::to_string(h_info) + " off-diagonal elements didn't converge"); + } else if (h_info > n) { + throw std::runtime_error("hegvdx (double): leading minor of order " + std::to_string(h_info - n) + " of B is not positive definite"); + } + } + + if (jobz == 'V') { + const int m = (*h_meig); + CHECK_CUDA(cudaMemcpy(d_eigen_vec, d_A_copy, sizeof(double) * n * m, cudaMemcpyDeviceToDevice)); } - cudaErrcheck(cudaFree(d_info)); - cudaErrcheck(cudaFree(d_work)); + + cudaFree(d_info); + cudaFree(d_work); + cudaFree(d_A_copy); + cudaFree(d_B_copy); } + +// --- complex --- +static inline +void hegvdx( + cusolverDnHandle_t& cusolver_handle, + const int itype, + const char jobz, + const char range, + const char uplo, + const int n, + const int lda, + std::complex* d_A, + std::complex* d_B, + const float vl, + const float vu, + const int il, + const int iu, + int* h_meig, + float* d_eigen_val, + std::complex* d_eigen_vec +) { + int lwork = 0; + int *d_info = nullptr; + cuComplex *d_work = nullptr; + + CHECK_CUDA(cudaMalloc((void**)&d_info, sizeof(int))); + + cuComplex *d_A_copy = nullptr, *d_B_copy = nullptr; + CHECK_CUDA(cudaMalloc((void**)&d_A_copy, sizeof(cuComplex) * n * lda)); + CHECK_CUDA(cudaMalloc((void**)&d_B_copy, sizeof(cuComplex) * n * lda)); + CHECK_CUDA(cudaMemcpy(d_A_copy, reinterpret_cast(d_A), sizeof(cuComplex) * n * lda, cudaMemcpyDeviceToDevice)); + CHECK_CUDA(cudaMemcpy(d_B_copy, reinterpret_cast(d_B), sizeof(cuComplex) * n * lda, cudaMemcpyDeviceToDevice)); + + cusolverEigType_t itype_t = cublas_eig_type(itype); + cusolverEigMode_t jobz_t = cublas_eig_mode(jobz); + cusolverEigRange_t range_t = cublas_eig_range(range); + cublasFillMode_t uplo_t = cublas_fill_mode(uplo); + + CHECK_CUSOLVER(cusolverDnChegvdx_bufferSize( + cusolver_handle, + itype_t, jobz_t, range_t, uplo_t, + n, + d_A_copy, lda, + d_B_copy, lda, + vl, vu, il, iu, + h_meig, + d_eigen_val, + &lwork + )); + + CHECK_CUDA(cudaMalloc((void**)&d_work, sizeof(cuComplex) * lwork)); + + CHECK_CUSOLVER(cusolverDnChegvdx( + cusolver_handle, + itype_t, jobz_t, range_t, uplo_t, + n, + d_A_copy, lda, + d_B_copy, lda, + vl, vu, il, iu, + h_meig, + d_eigen_val, + d_work, lwork, + d_info + )); + + int h_info = 0; + CHECK_CUDA(cudaMemcpy(&h_info, d_info, sizeof(int), cudaMemcpyDeviceToHost)); + if (h_info < 0) { + throw std::runtime_error("hegvdx (complex): illegal argument #" + std::to_string(-h_info)); + } else if (h_info > 0) { + if (jobz_t == CUSOLVER_EIG_MODE_NOVECTOR && h_info <= n) { + throw std::runtime_error("hegvdx (complex): failed to converge, " + std::to_string(h_info) + " off-diagonal elements didn't converge"); + } else if (h_info > n) { + throw std::runtime_error("hegvdx (complex): leading minor of order " + std::to_string(h_info - n) + " of B is not positive definite"); + } + } + + if (jobz == 'V') { + const int m = (*h_meig); + CHECK_CUDA(cudaMemcpy(reinterpret_cast(d_eigen_vec), d_A_copy, sizeof(cuComplex) * n * m, cudaMemcpyDeviceToDevice)); + } + + cudaFree(d_info); + cudaFree(d_work); + cudaFree(d_A_copy); + cudaFree(d_B_copy); +} + + +// --- complex --- +static inline +void hegvdx( + cusolverDnHandle_t& cusolver_handle, + const int itype, + const char jobz, + const char range, + const char uplo, + const int n, + const int lda, + std::complex* d_A, + std::complex* d_B, + const double vl, + const double vu, + const int il, + const int iu, + int* h_meig, + double* d_eigen_val, + std::complex* d_eigen_vec +) { + int lwork = 0; + int *d_info = nullptr; + cuDoubleComplex *d_work = nullptr; + + CHECK_CUDA(cudaMalloc((void**)&d_info, sizeof(int))); + + cuDoubleComplex *d_A_copy = nullptr, *d_B_copy = nullptr; + CHECK_CUDA(cudaMalloc((void**)&d_A_copy, sizeof(cuDoubleComplex) * n * lda)); + CHECK_CUDA(cudaMalloc((void**)&d_B_copy, sizeof(cuDoubleComplex) * n * lda)); + CHECK_CUDA(cudaMemcpy(d_A_copy, reinterpret_cast(d_A), sizeof(cuDoubleComplex) * n * lda, cudaMemcpyDeviceToDevice)); + CHECK_CUDA(cudaMemcpy(d_B_copy, reinterpret_cast(d_B), sizeof(cuDoubleComplex) * n * lda, cudaMemcpyDeviceToDevice)); + + cusolverEigType_t itype_t = cublas_eig_type(itype); + cusolverEigMode_t jobz_t = cublas_eig_mode(jobz); + cusolverEigRange_t range_t = cublas_eig_range(range); + cublasFillMode_t uplo_t = cublas_fill_mode(uplo); + + CHECK_CUSOLVER(cusolverDnZhegvdx_bufferSize( + cusolver_handle, + itype_t, jobz_t, range_t, uplo_t, + n, + d_A_copy, lda, + d_B_copy, lda, + vl, vu, il, iu, + h_meig, + d_eigen_val, + &lwork + )); + + CHECK_CUDA(cudaMalloc((void**)&d_work, sizeof(cuDoubleComplex) * lwork)); + + CHECK_CUSOLVER(cusolverDnZhegvdx( + cusolver_handle, + itype_t, jobz_t, range_t, uplo_t, + n, + d_A_copy, lda, + d_B_copy, lda, + vl, vu, il, iu, + h_meig, + d_eigen_val, + d_work, lwork, + d_info + )); + + int h_info = 0; + CHECK_CUDA(cudaMemcpy(&h_info, d_info, sizeof(int), cudaMemcpyDeviceToHost)); + if (h_info < 0) { + throw std::runtime_error("hegvdx (complex): illegal argument #" + std::to_string(-h_info)); + } else if (h_info > 0) { + if (jobz_t == CUSOLVER_EIG_MODE_NOVECTOR && h_info <= n) { + throw std::runtime_error("hegvdx (complex): failed to converge, " + std::to_string(h_info) + " off-diagonal elements didn't converge"); + } else if (h_info > n) { + throw std::runtime_error("hegvdx (complex): leading minor of order " + std::to_string(h_info - n) + " of B is not positive definite"); + } + } + + if (jobz == 'V') { + const int m = (*h_meig); + CHECK_CUDA(cudaMemcpy(reinterpret_cast(d_eigen_vec), d_A_copy, sizeof(cuDoubleComplex) * n * m, cudaMemcpyDeviceToDevice)); + } + + cudaFree(d_info); + cudaFree(d_work); + cudaFree(d_A_copy); + cudaFree(d_B_copy); +} + + +// --- getrf static inline void getrf(cusolverDnHandle_t& cusolver_handle, const int& m, const int& n, float* A, const int& lda, int* ipiv) { @@ -359,24 +981,24 @@ void getrf(cusolverDnHandle_t& cusolver_handle, const int& m, const int& n, floa int h_info = 0; int* d_info = nullptr; float* d_work = nullptr; - cudaErrcheck(cudaMalloc((void**)&d_info, sizeof(int))); + CHECK_CUDA(cudaMalloc((void**)&d_info, sizeof(int))); // calculate the sizes needed for pre-allocated buffer. - cusolverErrcheck(cusolverDnSgetrf_bufferSize(cusolver_handle, m, n, A, lda, &lwork)); + CHECK_CUSOLVER(cusolverDnSgetrf_bufferSize(cusolver_handle, m, n, A, lda, &lwork)); // allocate memory - cudaErrcheck(cudaMalloc((void**)&d_work, sizeof(float) * lwork)); + CHECK_CUDA(cudaMalloc((void**)&d_work, sizeof(float) * lwork)); // Perform LU decomposition - cusolverErrcheck(cusolverDnSgetrf(cusolver_handle, m, n, A, lda, d_work, ipiv, d_info)); + CHECK_CUSOLVER(cusolverDnSgetrf(cusolver_handle, m, n, A, lda, d_work, ipiv, d_info)); - cudaErrcheck(cudaMemcpy(&h_info, d_info, sizeof(int), cudaMemcpyDeviceToHost)); + CHECK_CUDA(cudaMemcpy(&h_info, d_info, sizeof(int), cudaMemcpyDeviceToHost)); if (h_info != 0) { throw std::runtime_error("getrf: failed to compute LU factorization"); } - cudaErrcheck(cudaFree(d_work)); - cudaErrcheck(cudaFree(d_info)); + CHECK_CUDA(cudaFree(d_work)); + CHECK_CUDA(cudaFree(d_info)); } static inline void getrf(cusolverDnHandle_t& cusolver_handle, const int& m, const int& n, double* A, const int& lda, int* ipiv) @@ -386,24 +1008,24 @@ void getrf(cusolverDnHandle_t& cusolver_handle, const int& m, const int& n, doub int h_info = 0; int* d_info = nullptr; double* d_work = nullptr; - cudaErrcheck(cudaMalloc((void**)&d_info, sizeof(int))); + CHECK_CUDA(cudaMalloc((void**)&d_info, sizeof(int))); // calculate the sizes needed for pre-allocated buffer. - cusolverErrcheck(cusolverDnDgetrf_bufferSize(cusolver_handle, m, n, A, lda, &lwork)); + CHECK_CUSOLVER(cusolverDnDgetrf_bufferSize(cusolver_handle, m, n, A, lda, &lwork)); // allocate memory - cudaErrcheck(cudaMalloc((void**)&d_work, sizeof(double) * lwork)); + CHECK_CUDA(cudaMalloc((void**)&d_work, sizeof(double) * lwork)); // Perform LU decomposition - cusolverErrcheck(cusolverDnDgetrf(cusolver_handle, m, n, A, lda, d_work, ipiv, d_info)); + CHECK_CUSOLVER(cusolverDnDgetrf(cusolver_handle, m, n, A, lda, d_work, ipiv, d_info)); - cudaErrcheck(cudaMemcpy(&h_info, d_info, sizeof(int), cudaMemcpyDeviceToHost)); + CHECK_CUDA(cudaMemcpy(&h_info, d_info, sizeof(int), cudaMemcpyDeviceToHost)); if (h_info != 0) { throw std::runtime_error("getrf: failed to compute LU factorization"); } - cudaErrcheck(cudaFree(d_work)); - cudaErrcheck(cudaFree(d_info)); + CHECK_CUDA(cudaFree(d_work)); + CHECK_CUDA(cudaFree(d_info)); } static inline void getrf(cusolverDnHandle_t& cusolver_handle, const int& m, const int& n, std::complex* A, const int& lda, int* ipiv) @@ -413,24 +1035,24 @@ void getrf(cusolverDnHandle_t& cusolver_handle, const int& m, const int& n, std: int h_info = 0; int* d_info = nullptr; cuComplex* d_work = nullptr; - cudaErrcheck(cudaMalloc((void**)&d_info, sizeof(int))); + CHECK_CUDA(cudaMalloc((void**)&d_info, sizeof(int))); // calculate the sizes needed for pre-allocated buffer. - cusolverErrcheck(cusolverDnCgetrf_bufferSize(cusolver_handle, m, n, reinterpret_cast(A), lda, &lwork)); + CHECK_CUSOLVER(cusolverDnCgetrf_bufferSize(cusolver_handle, m, n, reinterpret_cast(A), lda, &lwork)); // allocate memory - cudaErrcheck(cudaMalloc((void**)&d_work, sizeof(cuComplex) * lwork)); + CHECK_CUDA(cudaMalloc((void**)&d_work, sizeof(cuComplex) * lwork)); // Perform LU decomposition - cusolverErrcheck(cusolverDnCgetrf(cusolver_handle, m, n, reinterpret_cast(A), lda, d_work, ipiv, d_info)); + CHECK_CUSOLVER(cusolverDnCgetrf(cusolver_handle, m, n, reinterpret_cast(A), lda, d_work, ipiv, d_info)); - cudaErrcheck(cudaMemcpy(&h_info, d_info, sizeof(int), cudaMemcpyDeviceToHost)); + CHECK_CUDA(cudaMemcpy(&h_info, d_info, sizeof(int), cudaMemcpyDeviceToHost)); if (h_info != 0) { throw std::runtime_error("getrf: failed to compute LU factorization"); } - cudaErrcheck(cudaFree(d_work)); - cudaErrcheck(cudaFree(d_info)); + CHECK_CUDA(cudaFree(d_work)); + CHECK_CUDA(cudaFree(d_info)); } static inline void getrf(cusolverDnHandle_t& cusolver_handle, const int& m, const int& n, std::complex* A, const int& lda, int* ipiv) @@ -440,24 +1062,24 @@ void getrf(cusolverDnHandle_t& cusolver_handle, const int& m, const int& n, std: int h_info = 0; int* d_info = nullptr; cuDoubleComplex* d_work = nullptr; - cudaErrcheck(cudaMalloc((void**)&d_info, sizeof(int))); + CHECK_CUDA(cudaMalloc((void**)&d_info, sizeof(int))); // calculate the sizes needed for pre-allocated buffer. - cusolverErrcheck(cusolverDnZgetrf_bufferSize(cusolver_handle, m, n, reinterpret_cast(A), lda, &lwork)); + CHECK_CUSOLVER(cusolverDnZgetrf_bufferSize(cusolver_handle, m, n, reinterpret_cast(A), lda, &lwork)); // allocate memory - cudaErrcheck(cudaMalloc((void**)&d_work, sizeof(cuDoubleComplex) * lwork)); + CHECK_CUDA(cudaMalloc((void**)&d_work, sizeof(cuDoubleComplex) * lwork)); // Perform LU decomposition - cusolverErrcheck(cusolverDnZgetrf(cusolver_handle, m, n, reinterpret_cast(A), lda, d_work, ipiv, d_info)); + CHECK_CUSOLVER(cusolverDnZgetrf(cusolver_handle, m, n, reinterpret_cast(A), lda, d_work, ipiv, d_info)); - cudaErrcheck(cudaMemcpy(&h_info, d_info, sizeof(int), cudaMemcpyDeviceToHost)); + CHECK_CUDA(cudaMemcpy(&h_info, d_info, sizeof(int), cudaMemcpyDeviceToHost)); if (h_info != 0) { throw std::runtime_error("getrf: failed to compute LU factorization"); } - cudaErrcheck(cudaFree(d_work)); - cudaErrcheck(cudaFree(d_info)); + CHECK_CUDA(cudaFree(d_work)); + CHECK_CUDA(cudaFree(d_info)); } static inline @@ -465,67 +1087,494 @@ void getrs(cusolverDnHandle_t& cusolver_handle, const char& trans, const int& n, { int h_info = 0; int* d_info = nullptr; - cudaErrcheck(cudaMalloc((void**)&d_info, sizeof(int))); + CHECK_CUDA(cudaMalloc((void**)&d_info, sizeof(int))); - cusolverErrcheck(cusolverDnSgetrs(cusolver_handle, GetCublasOperation(trans), n, nrhs, A, lda, ipiv, B, ldb, d_info)); + CHECK_CUSOLVER(cusolverDnSgetrs(cusolver_handle, GetCublasOperation(trans), n, nrhs, A, lda, ipiv, B, ldb, d_info)); - cudaErrcheck(cudaMemcpy(&h_info, d_info, sizeof(int), cudaMemcpyDeviceToHost)); + CHECK_CUDA(cudaMemcpy(&h_info, d_info, sizeof(int), cudaMemcpyDeviceToHost)); if (h_info != 0) { throw std::runtime_error("getrs: failed to solve the linear system"); } - cudaErrcheck(cudaFree(d_info)); + CHECK_CUDA(cudaFree(d_info)); } static inline void getrs(cusolverDnHandle_t& cusolver_handle, const char& trans, const int& n, const int& nrhs, double* A, const int& lda, const int* ipiv, double* B, const int& ldb) { int h_info = 0; int* d_info = nullptr; - cudaErrcheck(cudaMalloc((void**)&d_info, sizeof(int))); + CHECK_CUDA(cudaMalloc((void**)&d_info, sizeof(int))); - cusolverErrcheck(cusolverDnDgetrs(cusolver_handle, GetCublasOperation(trans), n, nrhs, A, lda, ipiv, B, ldb, d_info)); + CHECK_CUSOLVER(cusolverDnDgetrs(cusolver_handle, GetCublasOperation(trans), n, nrhs, A, lda, ipiv, B, ldb, d_info)); - cudaErrcheck(cudaMemcpy(&h_info, d_info, sizeof(int), cudaMemcpyDeviceToHost)); + CHECK_CUDA(cudaMemcpy(&h_info, d_info, sizeof(int), cudaMemcpyDeviceToHost)); if (h_info != 0) { throw std::runtime_error("getrs: failed to solve the linear system"); } - cudaErrcheck(cudaFree(d_info)); + CHECK_CUDA(cudaFree(d_info)); } static inline void getrs(cusolverDnHandle_t& cusolver_handle, const char& trans, const int& n, const int& nrhs, std::complex* A, const int& lda, const int* ipiv, std::complex* B, const int& ldb) { int h_info = 0; int* d_info = nullptr; - cudaErrcheck(cudaMalloc((void**)&d_info, sizeof(int))); + CHECK_CUDA(cudaMalloc((void**)&d_info, sizeof(int))); - cusolverErrcheck(cusolverDnCgetrs(cusolver_handle, GetCublasOperation(trans), n, nrhs, reinterpret_cast(A), lda, ipiv, reinterpret_cast(B), ldb, d_info)); + CHECK_CUSOLVER(cusolverDnCgetrs(cusolver_handle, GetCublasOperation(trans), n, nrhs, reinterpret_cast(A), lda, ipiv, reinterpret_cast(B), ldb, d_info)); - cudaErrcheck(cudaMemcpy(&h_info, d_info, sizeof(int), cudaMemcpyDeviceToHost)); + CHECK_CUDA(cudaMemcpy(&h_info, d_info, sizeof(int), cudaMemcpyDeviceToHost)); if (h_info != 0) { throw std::runtime_error("getrs: failed to solve the linear system"); } - cudaErrcheck(cudaFree(d_info)); + CHECK_CUDA(cudaFree(d_info)); } static inline void getrs(cusolverDnHandle_t& cusolver_handle, const char& trans, const int& n, const int& nrhs, std::complex* A, const int& lda, const int* ipiv, std::complex* B, const int& ldb) { int h_info = 0; int* d_info = nullptr; - cudaErrcheck(cudaMalloc((void**)&d_info, sizeof(int))); + CHECK_CUDA(cudaMalloc((void**)&d_info, sizeof(int))); - cusolverErrcheck(cusolverDnZgetrs(cusolver_handle, GetCublasOperation(trans), n, nrhs, reinterpret_cast(A), lda, ipiv, reinterpret_cast(B), ldb, d_info)); + CHECK_CUSOLVER(cusolverDnZgetrs(cusolver_handle, GetCublasOperation(trans), n, nrhs, reinterpret_cast(A), lda, ipiv, reinterpret_cast(B), ldb, d_info)); - cudaErrcheck(cudaMemcpy(&h_info, d_info, sizeof(int), cudaMemcpyDeviceToHost)); + CHECK_CUDA(cudaMemcpy(&h_info, d_info, sizeof(int), cudaMemcpyDeviceToHost)); if (h_info != 0) { throw std::runtime_error("getrs: failed to solve the linear system"); } - cudaErrcheck(cudaFree(d_info)); + CHECK_CUDA(cudaFree(d_info)); +} + +// QR decomposition +// geqrf, orgqr +// Note: +// there are two cusolver geqrf +// one is cusolverDngeqrf +// one is cusolverDnXgeqrf +// which one is better? +// +// template +// static inline void geqrf( +// cusolverDnHandle_t& cusolver_handle, +// const int64_t m, +// const int64_t n, +// T* d_A, // device matrix A (m x n, column-major) +// const int64_t lda, +// T* d_tau // output: scalar factors of elementary reflectors +// ) { +// // query workspace size +// int *d_info = nullptr; /* error info */ +// +// size_t workspaceInBytesOnDevice = 0; /* size of workspace */ +// void *d_work = nullptr; /* device workspace */ +// size_t workspaceInBytesOnHost = 0; /* size of workspace */ +// void *h_work = nullptr; /* host workspace */ +// +// CHECK_CUDA(cudaMalloc(reinterpret_cast(&d_info), sizeof(int))); +// +// cusolverDnParams_t params = NULL; +// CHECK_CUSOLVER(cusolverDnCreateParams(¶ms)); +// +// CHECK_CUSOLVER(cusolverDnXgeqrf_bufferSize( +// cusolver_handle, +// params, +// m, n, +// traits::cuda_data_type, +// d_A, +// lda, +// traits::cuda_data_type, +// d_tau, +// traits::cuda_data_type, +// &workspaceInBytesOnDevice, +// &workspaceInBytesOnHost +// )); +// +// // allocate device workspace +// CHECK_CUDA(cudaMalloc(reinterpret_cast(&d_work), workspaceInBytesOnDevice)); +// +// // allocate host workspace +// if (workspaceInBytesOnHost > 0) { +// h_work = reinterpret_cast(malloc(workspaceInBytesOnHost)); +// if (h_work == nullptr) { +// throw std::runtime_error("Error: h_work not allocated."); +// } +// } +// +// // QR factorization +// CHECK_CUSOLVER(cusolverDnXgeqrf( +// cusolver_handle, +// params, +// m, n, +// traits::cuda_data_type, +// d_A, +// lda, +// traits::cuda_data_type, +// d_tau, +// traits::cuda_data_type, +// d_work, +// workspaceInBytesOnDevice, +// h_work, +// workspaceInBytesOnHost, +// d_info +// )); +// +// // check info +// int h_info = 0; +// CHECK_CUDA(cudaMemcpy(&h_info, d_info, sizeof(int), cudaMemcpyDeviceToHost)); +// if (h_info != 0) { +// // std::printf("%d-th parameter is wrong \n", -info); +// // print error message +// std::cout << -h_info << "th parameter is wrong" << std::endl; +// throw std::runtime_error("geqrf: failed to compute QR decomposition"); +// } +// +// // clean workspace +// CHECK_CUDA(cudaFree(d_info)); +// CHECK_CUDA(cudaFree(d_work)); +// if (h_work) free(h_work); +// CHECK_CUSOLVER(cusolverDnDestroyParams(params)); +// } + +// geqrf + +// --- float --- +static inline void geqrf( + cusolverDnHandle_t& cusolver_handle, + const int m, + const int n, + float* d_A, + const int lda, + float* d_tau +) { + int lwork = 0; + CHECK_CUSOLVER(cusolverDnSgeqrf_bufferSize( + cusolver_handle, m, n, d_A, lda, &lwork)); + + float* d_work = nullptr; + int* d_info = nullptr; + + if (lwork > 0) { + CHECK_CUDA(cudaMalloc(reinterpret_cast(&d_work), sizeof(float) * lwork)); + } + CHECK_CUDA(cudaMalloc(reinterpret_cast(&d_info), sizeof(int))); + + CHECK_CUSOLVER(cusolverDnSgeqrf( + cusolver_handle, m, n, d_A, lda, d_tau, d_work, lwork, d_info)); + + int h_info = 0; + CHECK_CUDA(cudaMemcpy(&h_info, d_info, sizeof(int), cudaMemcpyDeviceToHost)); + if (h_info != 0) { + std::cout << "geqrf (S): info = " << h_info << std::endl; + if (d_work) CHECK_CUDA(cudaFree(d_work)); + CHECK_CUDA(cudaFree(d_info)); + throw std::runtime_error("geqrf (S): QR factorization failed"); + } + + if (d_work) CHECK_CUDA(cudaFree(d_work)); + CHECK_CUDA(cudaFree(d_info)); } +// --- double --- +static inline void geqrf( + cusolverDnHandle_t& cusolver_handle, + const int m, + const int n, + double* d_A, + const int lda, + double* d_tau +) { + int lwork = 0; + CHECK_CUSOLVER(cusolverDnDgeqrf_bufferSize( + cusolver_handle, m, n, d_A, lda, &lwork)); + + double* d_work = nullptr; + int* d_info = nullptr; + + if (lwork > 0) { + CHECK_CUDA(cudaMalloc(reinterpret_cast(&d_work), sizeof(double) * lwork)); + } + CHECK_CUDA(cudaMalloc(reinterpret_cast(&d_info), sizeof(int))); + + CHECK_CUSOLVER(cusolverDnDgeqrf( + cusolver_handle, m, n, d_A, lda, d_tau, d_work, lwork, d_info)); + + int h_info = 0; + CHECK_CUDA(cudaMemcpy(&h_info, d_info, sizeof(int), cudaMemcpyDeviceToHost)); + if (h_info != 0) { + std::cout << "geqrf (D): info = " << h_info << std::endl; + if (d_work) CHECK_CUDA(cudaFree(d_work)); + CHECK_CUDA(cudaFree(d_info)); + throw std::runtime_error("geqrf (D): QR factorization failed"); + } + + if (d_work) CHECK_CUDA(cudaFree(d_work)); + CHECK_CUDA(cudaFree(d_info)); +} + +// --- std::complex --- +static inline void geqrf( + cusolverDnHandle_t& cusolver_handle, + const int m, + const int n, + std::complex* d_A, + const int lda, + std::complex* d_tau +) { + int lwork = 0; + CHECK_CUSOLVER(cusolverDnCgeqrf_bufferSize( + cusolver_handle, m, n, + reinterpret_cast(d_A), + lda, + &lwork // ← 这里才是 lwork 的地址! + )); + + cuComplex* d_work = nullptr; + int* d_info = nullptr; + + if (lwork > 0) { + CHECK_CUDA(cudaMalloc(reinterpret_cast(&d_work), sizeof(cuComplex) * lwork)); + } + CHECK_CUDA(cudaMalloc(reinterpret_cast(&d_info), sizeof(int))); + + CHECK_CUSOLVER(cusolverDnCgeqrf( + cusolver_handle, m, n, + reinterpret_cast(d_A), + lda, + reinterpret_cast(d_tau), // ← 这里才是 d_tau + d_work, lwork, d_info)); + + int h_info = 0; + CHECK_CUDA(cudaMemcpy(&h_info, d_info, sizeof(int), cudaMemcpyDeviceToHost)); + if (h_info != 0) { + std::cout << "geqrf (C): info = " << h_info << std::endl; + if (d_work) CHECK_CUDA(cudaFree(d_work)); + CHECK_CUDA(cudaFree(d_info)); + throw std::runtime_error("geqrf (C): QR factorization failed"); + } + + if (d_work) CHECK_CUDA(cudaFree(d_work)); + CHECK_CUDA(cudaFree(d_info)); +} + +// --- std::complex --- +static inline void geqrf( + cusolverDnHandle_t& cusolver_handle, + const int m, + const int n, + std::complex* d_A, + const int lda, + std::complex* d_tau +) { + int lwork = 0; + CHECK_CUSOLVER(cusolverDnZgeqrf_bufferSize( + cusolver_handle, m, n, + reinterpret_cast(d_A), + lda, + &lwork + )); + + cuDoubleComplex* d_work = nullptr; + int* d_info = nullptr; + + if (lwork > 0) { + CHECK_CUDA(cudaMalloc(reinterpret_cast(&d_work), sizeof(cuDoubleComplex) * lwork)); + } + CHECK_CUDA(cudaMalloc(reinterpret_cast(&d_info), sizeof(int))); + + CHECK_CUSOLVER(cusolverDnZgeqrf( + cusolver_handle, m, n, + reinterpret_cast(d_A), + lda, + reinterpret_cast(d_tau), + d_work, lwork, d_info)); + + int h_info = 0; + CHECK_CUDA(cudaMemcpy(&h_info, d_info, sizeof(int), cudaMemcpyDeviceToHost)); + if (h_info != 0) { + std::cout << "geqrf (Z): info = " << h_info << std::endl; + if (d_work) CHECK_CUDA(cudaFree(d_work)); + CHECK_CUDA(cudaFree(d_info)); + throw std::runtime_error("geqrf (Z): QR factorization failed"); + } + + if (d_work) CHECK_CUDA(cudaFree(d_work)); + CHECK_CUDA(cudaFree(d_info)); +} + + +// --- float --- +static inline void orgqr( + cusolverDnHandle_t& cusolver_handle, + const int m, + const int n, + const int k, + float* d_A, + const int lda, + float* d_tau +) { + int lwork = 0; + CHECK_CUSOLVER(cusolverDnSorgqr_bufferSize( + cusolver_handle, m, n, k, d_A, lda, d_tau, &lwork)); + + float* d_work = nullptr; + int* d_info = nullptr; + + if (lwork > 0) { + CHECK_CUDA(cudaMalloc(reinterpret_cast(&d_work), sizeof(float) * lwork)); + } + CHECK_CUDA(cudaMalloc(reinterpret_cast(&d_info), sizeof(int))); + + CHECK_CUSOLVER(cusolverDnSorgqr( + cusolver_handle, m, n, k, d_A, lda, d_tau, d_work, lwork, d_info)); + + int h_info = 0; + CHECK_CUDA(cudaMemcpy(&h_info, d_info, sizeof(int), cudaMemcpyDeviceToHost)); + if (h_info != 0) { + std::cout << "orgqr (S): info = " << h_info << " (failure at parameter " << -h_info << ")" << std::endl; + if (d_work) CHECK_CUDA(cudaFree(d_work)); + CHECK_CUDA(cudaFree(d_info)); + throw std::runtime_error("orgqr (S): failed to generate Q matrix"); + } + + // clean workspace + if (d_work) CHECK_CUDA(cudaFree(d_work)); + CHECK_CUDA(cudaFree(d_info)); +} + +// --- double --- +static inline void orgqr( + cusolverDnHandle_t& cusolver_handle, + const int m, + const int n, + const int k, + double* d_A, + const int lda, + double* d_tau +) { + int lwork = 0; + CHECK_CUSOLVER(cusolverDnDorgqr_bufferSize( + cusolver_handle, m, n, k, d_A, lda, d_tau, &lwork)); + + double* d_work = nullptr; + int* d_info = nullptr; + + if (lwork > 0) { + CHECK_CUDA(cudaMalloc(reinterpret_cast(&d_work), sizeof(double) * lwork)); + } + CHECK_CUDA(cudaMalloc(reinterpret_cast(&d_info), sizeof(int))); + + CHECK_CUSOLVER(cusolverDnDorgqr( + cusolver_handle, m, n, k, d_A, lda, d_tau, d_work, lwork, d_info)); + + int h_info = 0; + CHECK_CUDA(cudaMemcpy(&h_info, d_info, sizeof(int), cudaMemcpyDeviceToHost)); + if (h_info != 0) { + std::cout << "orgqr (D): info = " << h_info << std::endl; + if (d_work) CHECK_CUDA(cudaFree(d_work)); + CHECK_CUDA(cudaFree(d_info)); + throw std::runtime_error("orgqr (D): failed to generate Q matrix"); + } + + if (d_work) CHECK_CUDA(cudaFree(d_work)); + CHECK_CUDA(cudaFree(d_info)); +} + +// --- std::complex --- +static inline void orgqr( + cusolverDnHandle_t& cusolver_handle, + const int m, + const int n, + const int k, + std::complex* d_A, + const int lda, + std::complex* d_tau +) { + int lwork = 0; + CHECK_CUSOLVER(cusolverDnCungqr_bufferSize( + cusolver_handle, m, n, k, + reinterpret_cast(d_A), + lda, + reinterpret_cast(d_tau), + &lwork)); + + cuComplex* d_work = nullptr; + int* d_info = nullptr; + + if (lwork > 0) { + CHECK_CUDA(cudaMalloc(reinterpret_cast(&d_work), sizeof(cuComplex) * lwork)); + } + CHECK_CUDA(cudaMalloc(reinterpret_cast(&d_info), sizeof(int))); + + CHECK_CUSOLVER(cusolverDnCungqr( + cusolver_handle, m, n, k, + reinterpret_cast(d_A), + lda, + reinterpret_cast(d_tau), + d_work, lwork, d_info)); + + int h_info = 0; + CHECK_CUDA(cudaMemcpy(&h_info, d_info, sizeof(int), cudaMemcpyDeviceToHost)); + if (h_info != 0) { + std::cout << "orgqr (C): info = " << h_info << std::endl; + if (d_work) CHECK_CUDA(cudaFree(d_work)); + CHECK_CUDA(cudaFree(d_info)); + throw std::runtime_error("orgqr (C): failed to generate Q matrix"); + } + + if (d_work) CHECK_CUDA(cudaFree(d_work)); + CHECK_CUDA(cudaFree(d_info)); +} + +// --- std::complex --- +static inline void orgqr( + cusolverDnHandle_t& cusolver_handle, + const int m, + const int n, + const int k, + std::complex* d_A, + const int lda, + std::complex* d_tau +) { + int lwork = 0; + CHECK_CUSOLVER(cusolverDnZungqr_bufferSize( + cusolver_handle, m, n, k, + reinterpret_cast(d_A), + lda, + reinterpret_cast(d_tau), + &lwork)); + + cuDoubleComplex* d_work = nullptr; + int* d_info = nullptr; + + if (lwork > 0) { + CHECK_CUDA(cudaMalloc(reinterpret_cast(&d_work), sizeof(cuDoubleComplex) * lwork)); + } + CHECK_CUDA(cudaMalloc(reinterpret_cast(&d_info), sizeof(int))); + + CHECK_CUSOLVER(cusolverDnZungqr( + cusolver_handle, m, n, k, + reinterpret_cast(d_A), + lda, + reinterpret_cast(d_tau), + d_work, lwork, d_info)); + + int h_info = 0; + CHECK_CUDA(cudaMemcpy(&h_info, d_info, sizeof(int), cudaMemcpyDeviceToHost)); + if (h_info != 0) { + std::cout << "orgqr (Z): info = " << h_info << std::endl; + if (d_work) CHECK_CUDA(cudaFree(d_work)); + CHECK_CUDA(cudaFree(d_info)); + throw std::runtime_error("orgqr (Z): failed to generate Q matrix"); + } + + if (d_work) CHECK_CUDA(cudaFree(d_work)); + CHECK_CUDA(cudaFree(d_info)); +} + + } // namespace cuSolverConnector } // namespace container -#endif // BASE_THIRD_PARTY_CUSOLVER_H_ \ No newline at end of file +#endif // BASE_THIRD_PARTY_CUSOLVER_H_ diff --git a/source/source_base/module_container/base/third_party/hipsolver.h b/source/source_base/module_container/base/third_party/hipsolver.h index a0826d3a09..af8911be43 100644 --- a/source/source_base/module_container/base/third_party/hipsolver.h +++ b/source/source_base/module_container/base/third_party/hipsolver.h @@ -43,7 +43,7 @@ void potri (hipsolverHandle_t& hipsolver_handle, const char& uplo, const char& d { int lwork; hipsolverErrcheck(hipsolverDnSpotri_bufferSize(hipsolver_handle, hipsolver_fill_mode(uplo), n, A, n, &lwork)); - float* work; + float* work = nullptr; hipErrcheck(hipMalloc((void**)&work, lwork * sizeof(float))); // Perform Cholesky decomposition hipsolverErrcheck(hipsolverDnSpotri(hipsolver_handle, hipsolver_fill_mode(uplo), n, A, n, work, lwork, nullptr)); @@ -54,7 +54,7 @@ void potri (hipsolverHandle_t& hipsolver_handle, const char& uplo, const char& d { int lwork; hipsolverErrcheck(hipsolverDnDpotri_bufferSize(hipsolver_handle, hipsolver_fill_mode(uplo), n, A, n, &lwork)); - double* work; + double* work = nullptr; hipErrcheck(hipMalloc((void**)&work, lwork * sizeof(double))); // Perform Cholesky decomposition hipsolverErrcheck(hipsolverDnDpotri(hipsolver_handle, hipsolver_fill_mode(uplo), n, A, n, work, lwork, nullptr)); @@ -65,7 +65,7 @@ void potri (hipsolverHandle_t& hipsolver_handle, const char& uplo, const char& d { int lwork; hipsolverErrcheck(hipsolverDnCpotri_bufferSize(hipsolver_handle, hipsolver_fill_mode(uplo), n, reinterpret_cast(A), n, &lwork)); - hipFloatComplex* work; + hipFloatComplex* work = nullptr; hipErrcheck(hipMalloc((void**)&work, lwork * sizeof(hipFloatComplex))); // Perform Cholesky decomposition hipsolverErrcheck(hipsolverDnCpotri(hipsolver_handle, hipsolver_fill_mode(uplo), n, reinterpret_cast(A), n, work, lwork, nullptr)); @@ -76,7 +76,7 @@ void potri (hipsolverHandle_t& hipsolver_handle, const char& uplo, const char& d { int lwork; hipsolverErrcheck(hipsolverDnZpotri_bufferSize(hipsolver_handle, hipsolver_fill_mode(uplo), n, reinterpret_cast(A), n, &lwork)); - hipDoubleComplex* work; + hipDoubleComplex* work = nullptr; hipErrcheck(hipMalloc((void**)&work, lwork * sizeof(hipDoubleComplex))); // Perform Cholesky decomposition hipsolverErrcheck(hipsolverDnZpotri(hipsolver_handle, hipsolver_fill_mode(uplo), n, reinterpret_cast(A), n, work, lwork, nullptr)); @@ -89,7 +89,7 @@ void potrf (hipsolverHandle_t& hipsolver_handle, const char& uplo, const int& n, { int lwork; hipsolverErrcheck(hipsolverDnSpotrf_bufferSize(hipsolver_handle, hipsolver_fill_mode(uplo), n, A, n, &lwork)); - float* work; + float* work = nullptr; hipErrcheck(hipMalloc((void**)&work, lwork * sizeof(float))); // Perform Cholesky decomposition hipsolverErrcheck(hipsolverDnSpotrf(hipsolver_handle, hipsolver_fill_mode(uplo), n, A, n, work, lwork, nullptr)); @@ -100,7 +100,7 @@ void potrf (hipsolverHandle_t& hipsolver_handle, const char& uplo, const int& n, { int lwork; hipsolverErrcheck(hipsolverDnDpotrf_bufferSize(hipsolver_handle, hipsolver_fill_mode(uplo), n, A, n, &lwork)); - double* work; + double* work = nullptr; hipErrcheck(hipMalloc((void**)&work, lwork * sizeof(double))); // Perform Cholesky decomposition hipsolverErrcheck(hipsolverDnDpotrf(hipsolver_handle, hipsolver_fill_mode(uplo), n, A, n, work, lwork, nullptr)); @@ -111,7 +111,7 @@ void potrf (hipsolverHandle_t& hipsolver_handle, const char& uplo, const int& n, { int lwork; hipsolverErrcheck(hipsolverDnCpotrf_bufferSize(hipsolver_handle, hipsolver_fill_mode(uplo), n, reinterpret_cast(A), n, &lwork)); - hipFloatComplex* work; + hipFloatComplex* work = nullptr; hipErrcheck(hipMalloc((void**)&work, lwork * sizeof(hipFloatComplex))); // Perform Cholesky decomposition hipsolverErrcheck(hipsolverDnCpotrf(hipsolver_handle, hipsolver_fill_mode(uplo), n, reinterpret_cast(A), n, work, lwork, nullptr)); @@ -122,7 +122,7 @@ void potrf (hipsolverHandle_t& hipsolver_handle, const char& uplo, const int& n, { int lwork; hipsolverErrcheck(hipsolverDnZpotrf_bufferSize(hipsolver_handle, hipsolver_fill_mode(uplo), n, reinterpret_cast(A), n, &lwork)); - hipDoubleComplex* work; + hipDoubleComplex* work = nullptr; hipErrcheck(hipMalloc((void**)&work, lwork * sizeof(hipDoubleComplex))); // Perform Cholesky decomposition hipsolverErrcheck(hipsolverDnZpotrf(hipsolver_handle, hipsolver_fill_mode(uplo), n, reinterpret_cast(A), n, work, lwork, nullptr)); @@ -131,7 +131,7 @@ void potrf (hipsolverHandle_t& hipsolver_handle, const char& uplo, const int& n, static inline -void dnevd (hipsolverHandle_t& hipsolver_handle, const char& jobz, const char& uplo, const int& n, float* A, const int& lda, float * W) +void heevd (hipsolverHandle_t& hipsolver_handle, const char& jobz, const char& uplo, const int& n, float* A, const int& lda, float * W) { // prepare some values for hipsolverDnZhegvd_bufferSize int lwork = 0; @@ -151,13 +151,13 @@ void dnevd (hipsolverHandle_t& hipsolver_handle, const char& jobz, const char& u hipErrcheck(hipMemcpy(&h_info, d_info, sizeof(int), hipMemcpyDeviceToHost)); if (h_info != 0) { - throw std::runtime_error("dnevd: failed to invert matrix"); + throw std::runtime_error("heevd: failed to invert matrix"); } hipErrcheck(hipFree(d_info)); hipErrcheck(hipFree(d_work)); } static inline -void dnevd (hipsolverHandle_t& hipsolver_handle, const char& jobz, const char& uplo, const int& n, double* A, const int& lda, double * W) +void heevd (hipsolverHandle_t& hipsolver_handle, const char& jobz, const char& uplo, const int& n, double* A, const int& lda, double * W) { // prepare some values for hipsolverDnZhegvd_bufferSize int lwork = 0; @@ -177,13 +177,13 @@ void dnevd (hipsolverHandle_t& hipsolver_handle, const char& jobz, const char& u hipErrcheck(hipMemcpy(&h_info, d_info, sizeof(int), hipMemcpyDeviceToHost)); if (h_info != 0) { - throw std::runtime_error("dnevd: failed to invert matrix"); + throw std::runtime_error("heevd: failed to invert matrix"); } hipErrcheck(hipFree(d_info)); hipErrcheck(hipFree(d_work)); } static inline -void dnevd (hipsolverHandle_t& hipsolver_handle, const char& jobz, const char& uplo, const int& n, std::complex* A, const int& lda, float * W) +void heevd (hipsolverHandle_t& hipsolver_handle, const char& jobz, const char& uplo, const int& n, std::complex* A, const int& lda, float * W) { // prepare some values for hipsolverDnZhegvd_bufferSize int lwork = 0; @@ -203,13 +203,13 @@ void dnevd (hipsolverHandle_t& hipsolver_handle, const char& jobz, const char& u hipErrcheck(hipMemcpy(&h_info, d_info, sizeof(int), hipMemcpyDeviceToHost)); if (h_info != 0) { - throw std::runtime_error("dnevd: failed to invert matrix"); + throw std::runtime_error("heevd: failed to invert matrix"); } hipErrcheck(hipFree(d_info)); hipErrcheck(hipFree(d_work)); } static inline -void dnevd (hipsolverHandle_t& hipsolver_handle, const char& jobz, const char& uplo, const int& n, std::complex* A, const int& lda, double* W) +void heevd (hipsolverHandle_t& hipsolver_handle, const char& jobz, const char& uplo, const int& n, std::complex* A, const int& lda, double* W) { // prepare some values for hipsolverDnZhegvd_bufferSize int lwork = 0; @@ -229,14 +229,14 @@ void dnevd (hipsolverHandle_t& hipsolver_handle, const char& jobz, const char& u hipErrcheck(hipMemcpy(&h_info, d_info, sizeof(int), hipMemcpyDeviceToHost)); if (h_info != 0) { - throw std::runtime_error("dnevd: failed to invert matrix"); + throw std::runtime_error("heevd: failed to invert matrix"); } hipErrcheck(hipFree(d_info)); hipErrcheck(hipFree(d_work)); } static inline -void dngvd (hipsolverHandle_t& hipsolver_handle, const int& itype, const char& jobz, const char& uplo, const int& n, float* A, const int& lda, float* B, const int& ldb, float * W) +void hegvd (hipsolverHandle_t& hipsolver_handle, const int& itype, const char& jobz, const char& uplo, const int& n, float* A, const int& lda, float* B, const int& ldb, float * W) { // prepare some values for hipsolverDnZhegvd_bufferSize int lwork = 0; @@ -256,13 +256,13 @@ void dngvd (hipsolverHandle_t& hipsolver_handle, const int& itype, const char& j hipErrcheck(hipMemcpy(&h_info, d_info, sizeof(int), hipMemcpyDeviceToHost)); if (h_info != 0) { - throw std::runtime_error("dnevd: failed to invert matrix"); + throw std::runtime_error("heevd: failed to invert matrix"); } hipErrcheck(hipFree(d_info)); hipErrcheck(hipFree(d_work)); } static inline -void dngvd (hipsolverHandle_t& hipsolver_handle, const int& itype, const char& jobz, const char& uplo, const int& n, double* A, const int& lda, double* B, const int& ldb, double * W) +void hegvd (hipsolverHandle_t& hipsolver_handle, const int& itype, const char& jobz, const char& uplo, const int& n, double* A, const int& lda, double* B, const int& ldb, double * W) { // prepare some values for hipsolverDnZhegvd_bufferSize int lwork = 0; @@ -282,13 +282,13 @@ void dngvd (hipsolverHandle_t& hipsolver_handle, const int& itype, const char& j hipErrcheck(hipMemcpy(&h_info, d_info, sizeof(int), hipMemcpyDeviceToHost)); if (h_info != 0) { - throw std::runtime_error("dnevd: failed to invert matrix"); + throw std::runtime_error("heevd: failed to invert matrix"); } hipErrcheck(hipFree(d_info)); hipErrcheck(hipFree(d_work)); } static inline -void dngvd (hipsolverHandle_t& hipsolver_handle, const int& itype, const char& jobz, const char& uplo, const int& n, std::complex* A, const int& lda, std::complex* B, const int& ldb, float* W) +void hegvd (hipsolverHandle_t& hipsolver_handle, const int& itype, const char& jobz, const char& uplo, const int& n, std::complex* A, const int& lda, std::complex* B, const int& ldb, float* W) { // prepare some values for hipsolverDnZhegvd_bufferSize int lwork = 0; @@ -308,13 +308,13 @@ void dngvd (hipsolverHandle_t& hipsolver_handle, const int& itype, const char& j hipErrcheck(hipMemcpy(&h_info, d_info, sizeof(int), hipMemcpyDeviceToHost)); if (h_info != 0) { - throw std::runtime_error("dnevd: failed to invert matrix"); + throw std::runtime_error("heevd: failed to invert matrix"); } hipErrcheck(hipFree(d_info)); hipErrcheck(hipFree(d_work)); } static inline -void dngvd (hipsolverHandle_t& hipsolver_handle, const int& itype, const char& jobz, const char& uplo, const int& n, std::complex* A, const int& lda, std::complex* B, const int& ldb, double* W) +void hegvd (hipsolverHandle_t& hipsolver_handle, const int& itype, const char& jobz, const char& uplo, const int& n, std::complex* A, const int& lda, std::complex* B, const int& ldb, double* W) { // prepare some values for hipsolverDnZhegvd_bufferSize int lwork = 0; @@ -334,7 +334,7 @@ void dngvd (hipsolverHandle_t& hipsolver_handle, const int& itype, const char& j hipErrcheck(hipMemcpy(&h_info, d_info, sizeof(int), hipMemcpyDeviceToHost)); if (h_info != 0) { - throw std::runtime_error("dnevd: failed to invert matrix"); + throw std::runtime_error("heevd: failed to invert matrix"); } hipErrcheck(hipFree(d_info)); hipErrcheck(hipFree(d_work)); diff --git a/source/source_base/module_container/base/third_party/lapack.h b/source/source_base/module_container/base/third_party/lapack.h index 7452dc1835..34881055fd 100644 --- a/source/source_base/module_container/base/third_party/lapack.h +++ b/source/source_base/module_container/base/third_party/lapack.h @@ -1,3 +1,18 @@ +/** + * @file lapack.h + * @brief This is a direct wrapper of some LAPACK routines. + * \b Column-Major version. + * Direct wrapping of standard LAPACK routines. (Column-Major, fortran style) + * + * @warning For Row-major version, please refer to \c source/source_base/module_external/lapack_connector.h. + * + * @note + * Some slight modification are made to fit the C++ style for overloading purpose. + * You can find some function with different parameter list than the original LAPACK routine. + * And some of these parameters are not referred in the function body. They are included just to + * ensure the same parameter list for overloaded functions with a uniform name. + */ + #ifndef BASE_THIRD_PARTY_LAPACK_H_ #define BASE_THIRD_PARTY_LAPACK_H_ @@ -10,6 +25,10 @@ #include #endif +/// This is a wrapper of some LAPACK routines. +/// Direct wrapping of standard LAPACK routines. (column major, fortran style) +/// with some slight modification to fit the C++ style for overloading purpose. + //Naming convention of lapack subroutines : ammxxx, where //"a" specifies the data type: // - d stands for double @@ -22,103 +41,172 @@ extern "C" { -int ilaenv_(int* ispec,const char* name,const char* opts, - const int* n1,const int* n2,const int* n3,const int* n4); - +// ILAENV - environment inquiry +int ilaenv_(const int* ispec, const char* name, const char* opts, + const int* n1, const int* n2, const int* n3, const int* n4); -// solve the generalized eigenproblem Ax=eBx, where A is Hermitian and complex couble -// zhegv_ & zhegvd_ returns all eigenvalues while zhegvx_ returns selected ones +// Generalized symmetric-definite eigenproblems (divide-and-conquer) void ssygvd_(const int* itype, const char* jobz, const char* uplo, const int* n, float* a, const int* lda, - const float* b, const int* ldb, float* w, - float* work, int* lwork, - int* iwork, int* liwork, int* info); + float* b, const int* ldb, + float* w, + float* work, const int* lwork, + int* iwork, const int* liwork, + int* info); void dsygvd_(const int* itype, const char* jobz, const char* uplo, const int* n, double* a, const int* lda, - const double* b, const int* ldb, double* w, - double* work, int* lwork, - int* iwork, int* liwork, int* info); + double* b, const int* ldb, + double* w, + double* work, const int* lwork, + int* iwork, const int* liwork, + int* info); void chegvd_(const int* itype, const char* jobz, const char* uplo, const int* n, std::complex* a, const int* lda, - const std::complex* b, const int* ldb, float* w, - std::complex* work, int* lwork, float* rwork, int* lrwork, - int* iwork, int* liwork, int* info); + std::complex* b, const int* ldb, + float* w, + std::complex* work, const int* lwork, + float* rwork, const int* lrwork, + int* iwork, const int* liwork, + int* info); void zhegvd_(const int* itype, const char* jobz, const char* uplo, const int* n, std::complex* a, const int* lda, - const std::complex* b, const int* ldb, double* w, - std::complex* work, int* lwork, double* rwork, int* lrwork, - int* iwork, int* liwork, int* info); + std::complex* b, const int* ldb, + double* w, + std::complex* work, const int* lwork, + double* rwork, const int* lrwork, + int* iwork, const int* liwork, + int* info); + +// Generalized symmetric-definite eigenproblems (selected eigenvalues/vectors) +void ssygvx_(const int* itype, const char* jobz, const char* range, const char* uplo, + const int* n, float* A, const int* lda, float* B, const int* ldb, + const float* vl, const float* vu, const int* il, const int* iu, + const float* abstol, int* m, float* w, float* Z, const int* ldz, + float* work, const int* lwork, int* iwork, int* ifail, int* info); + +void dsygvx_(const int* itype, const char* jobz, const char* range, const char* uplo, + const int* n, double* A, const int* lda, double* B, const int* ldb, + const double* vl, const double* vu, const int* il, const int* iu, + const double* abstol, int* m, double* w, double* Z, const int* ldz, + double* work, const int* lwork, int* iwork, int* ifail, int* info); +void chegvx_(const int* itype, const char* jobz, const char* range, const char* uplo, + const int* n, std::complex* A, const int* lda, std::complex* B, const int* ldb, + const float* vl, const float* vu, const int* il, const int* iu, + const float* abstol, int* m, float* w, std::complex* Z, const int* ldz, + std::complex* work, const int* lwork, float* rwork, int* iwork, int* ifail, int* info); + +void zhegvx_(const int* itype, const char* jobz, const char* range, const char* uplo, + const int* n, std::complex* A, const int* lda, std::complex* B, const int* ldb, + const double* vl, const double* vu, const int* il, const int* iu, + const double* abstol, int* m, double* w, std::complex* Z, const int* ldz, + std::complex* work, const int* lwork, double* rwork, int* iwork, int* ifail, int* info); + +// Standard symmetric eigenproblems (selected) void ssyevx_(const char* jobz, const char* range, const char* uplo, const int* n, - float *a, const int* lda, - const float* vl, const float* vu, const int* il, const int* iu, const float* abstol, - const int* m, float* w, float *z, const int *ldz, - float *work, const int* lwork, float* rwork, int* iwork, int* ifail, int* info); + float* a, const int* lda, + const float* vl, const float* vu, const int* il, const int* iu, + const float* abstol, int* m, float* w, float* z, const int* ldz, + float* work, const int* lwork, int* iwork, int* ifail, int* info); + void dsyevx_(const char* jobz, const char* range, const char* uplo, const int* n, - double *a, const int* lda, - const double* vl, const double* vu, const int* il, const int* iu, const double* abstol, - const int* m, double* w, double *z, const int *ldz, - double *work, const int* lwork, double* rwork, int* iwork, int* ifail, int* info); + double* a, const int* lda, + const double* vl, const double* vu, const int* il, const int* iu, + const double* abstol, int* m, double* w, double* z, const int* ldz, + double* work, const int* lwork, int* iwork, int* ifail, int* info); + void cheevx_(const char* jobz, const char* range, const char* uplo, const int* n, - std::complex *a, const int* lda, - const float* vl, const float* vu, const int* il, const int* iu, const float* abstol, - const int* m, float* w, std::complex *z, const int *ldz, - std::complex *work, const int* lwork, float* rwork, int* iwork, int* ifail, int* info); + std::complex* a, const int* lda, + const float* vl, const float* vu, const int* il, const int* iu, + const float* abstol, int* m, float* w, std::complex* z, const int* ldz, + std::complex* work, const int* lwork, float* rwork, int* iwork, int* ifail, int* info); + void zheevx_(const char* jobz, const char* range, const char* uplo, const int* n, - std::complex *a, const int* lda, - const double* vl, const double* vu, const int* il, const int* iu, const double* abstol, - const int* m, double* w, std::complex *z, const int *ldz, - std::complex *work, const int* lwork, double* rwork, int* iwork, int* ifail, int* info); - -void ssyevd_(const char *jobz, const char *uplo, const int *n, - float *a, const int *lda, float *w, - float *work, int *lwork, - int *iwork, int *liwork, int *info); -void dsyevd_(const char *jobz, const char *uplo, const int *n, - double *a, const int *lda, double *w, - double *work, int *lwork, - int *iwork, int *liwork, int *info); -void cheevd_(const char *jobz, const char *uplo, const int *n, - std::complex *a, const int *lda, float *w, - std::complex *work, int *lwork, float *rwork, int *lrwork, - int *iwork, int *liwork, int *info); -void zheevd_(const char *jobz, const char *uplo, const int *n, - std::complex *a, const int *lda, double *w, - std::complex *work, int *lwork, double *rwork, int *lrwork, - int *iwork, int *liwork, int *info); - -void spotrf_(const char*const uplo, const int*const n, float*const A, const int*const lda, int*const info); -void dpotrf_(const char*const uplo, const int*const n, double*const A, const int*const lda, int*const info); -void cpotrf_(const char*const uplo, const int*const n, std::complex*const A, const int*const lda, int*const info); -void zpotrf_(const char*const uplo, const int*const n, std::complex*const A, const int*const lda, int*const info); - -void spotri_(const char*const uplo, const int*const n, float*const A, const int*const lda, int*const info); -void dpotri_(const char*const uplo, const int*const n, double*const A, const int*const lda, int*const info); -void cpotri_(const char*const uplo, const int*const n, std::complex*const A, const int*const lda, int*const info); -void zpotri_(const char*const uplo, const int*const n, std::complex*const A, const int*const lda, int*const info); + std::complex* a, const int* lda, + const double* vl, const double* vu, const int* il, const int* iu, + const double* abstol, int* m, double* w, std::complex* z, const int* ldz, + std::complex* work, const int* lwork, double* rwork, int* iwork, int* ifail, int* info); + +// Standard symmetric eigenproblems (divide-and-conquer) +void ssyevd_(const char* jobz, const char* uplo, const int* n, + float* a, const int* lda, float* w, + float* work, const int* lwork, + int* iwork, const int* liwork, int* info); + +void dsyevd_(const char* jobz, const char* uplo, const int* n, + double* a, const int* lda, double* w, + double* work, const int* lwork, + int* iwork, const int* liwork, int* info); + +void cheevd_(const char* jobz, const char* uplo, const int* n, + std::complex* a, const int* lda, float* w, + std::complex* work, const int* lwork, float* rwork, const int* lrwork, + int* iwork, const int* liwork, int* info); + +void zheevd_(const char* jobz, const char* uplo, const int* n, + std::complex* a, const int* lda, double* w, + std::complex* work, const int* lwork, double* rwork, const int* lrwork, + int* iwork, const int* liwork, int* info); + +// Cholesky factorization +void spotrf_(const char* uplo, const int* n, float* A, const int* lda, int* info); +void dpotrf_(const char* uplo, const int* n, double* A, const int* lda, int* info); +void cpotrf_(const char* uplo, const int* n, std::complex* A, const int* lda, int* info); +void zpotrf_(const char* uplo, const int* n, std::complex* A, const int* lda, int* info); +// Inverse using Cholesky factorization +void spotri_(const char* uplo, const int* n, float* A, const int* lda, int* info); +void dpotri_(const char* uplo, const int* n, double* A, const int* lda, int* info); +void cpotri_(const char* uplo, const int* n, std::complex* A, const int* lda, int* info); +void zpotri_(const char* uplo, const int* n, std::complex* A, const int* lda, int* info); + +// Inverse of triangular matrix void strtri_(const char* uplo, const char* diag, const int* n, float* a, const int* lda, int* info); void dtrtri_(const char* uplo, const char* diag, const int* n, double* a, const int* lda, int* info); void ctrtri_(const char* uplo, const char* diag, const int* n, std::complex* a, const int* lda, int* info); void ztrtri_(const char* uplo, const char* diag, const int* n, std::complex* a, const int* lda, int* info); +// LU factorization void sgetrf_(const int* m, const int* n, float* a, const int* lda, int* ipiv, int* info); void dgetrf_(const int* m, const int* n, double* a, const int* lda, int* ipiv, int* info); void cgetrf_(const int* m, const int* n, std::complex* a, const int* lda, int* ipiv, int* info); void zgetrf_(const int* m, const int* n, std::complex* a, const int* lda, int* ipiv, int* info); +// Inverse using LU factorization void sgetri_(const int* n, float* A, const int* lda, const int* ipiv, float* work, const int* lwork, int* info); void dgetri_(const int* n, double* A, const int* lda, const int* ipiv, double* work, const int* lwork, int* info); void cgetri_(const int* n, std::complex* A, const int* lda, const int* ipiv, std::complex* work, const int* lwork, int* info); void zgetri_(const int* n, std::complex* A, const int* lda, const int* ipiv, std::complex* work, const int* lwork, int* info); -void sgetrs_(const char* trans, const int* n, const int* nrhs, const float* A, const int* lda, const int* ipiv, float* B, const int* ldb, int* info); -void dgetrs_(const char* trans, const int* n, const int* nrhs, const double* A, const int* lda, const int* ipiv, double* B, const int* ldb, int* info); -void cgetrs_(const char* trans, const int* n, const int* nrhs, const std::complex* A, const int* lda, const int* ipiv, std::complex* B, const int* ldb, int* info); -void zgetrs_(const char* trans, const int* n, const int* nrhs, const std::complex* A, const int* lda, const int* ipiv, std::complex* B, const int* ldb, int* info); +// Solve linear system using LU factorization +void sgetrs_(const char* trans, const int* n, const int* nrhs, + const float* A, const int* lda, const int* ipiv, + float* B, const int* ldb, int* info); +void dgetrs_(const char* trans, const int* n, const int* nrhs, + const double* A, const int* lda, const int* ipiv, + double* B, const int* ldb, int* info); +void cgetrs_(const char* trans, const int* n, const int* nrhs, + const std::complex* A, const int* lda, const int* ipiv, + std::complex* B, const int* ldb, int* info); +void zgetrs_(const char* trans, const int* n, const int* nrhs, + const std::complex* A, const int* lda, const int* ipiv, + std::complex* B, const int* ldb, int* info); + +// QR factorization +// build R and Householder +void sgeqrf_(const int* m, const int* n, float* A, const int* lda, float* tau, float *work, const int* lwork, int* info); +void dgeqrf_(const int* m, const int* n, double* A, const int* lda, double* tau, double *work, const int* lwork, int* info); +void cgeqrf_(const int* m, const int* n, std::complex* A, const int* lda, std::complex* tau, std::complex *work, const int* lwork, int* info); +void zgeqrf_(const int* m, const int* n, std::complex* A, const int* lda, std::complex* tau, std::complex *work, const int* lwork, int* info); +// make explicit Q +void sorgqr_(const int* m, const int* n, const int* k, float* A, const int* lda, const float* tau, float* work, const int* lwork, int* info); +void dorgqr_(const int* m, const int* n, const int* k, double* A, const int* lda, const double* tau, double* work, const int* lwork, int* info); +void cungqr_(const int* m, const int* n, const int* k, std::complex* A, const int* lda, const std::complex* tau, std::complex *work, const int* lwork, int* info); +void zungqr_(const int* m, const int* n, const int* k, std::complex* A, const int* lda, const std::complex* tau, std::complex *work, const int* lwork, int* info); + } // Class LapackConnector provide the connector to fortran lapack routine. @@ -136,9 +224,9 @@ int ilaenv( int ispec, const char *name,const char *opts,const int n1,const int } // wrap function of fortran lapack routine zhegvd. (pointer version) static inline -void dngvd(const int itype, const char jobz, const char uplo, const int n, +void hegvd(const int itype, const char jobz, const char uplo, const int n, float* a, const int lda, - const float* b, const int ldb, float* w, + float* b, const int ldb, float* w, float* work, int lwork, float* rwork, int lrwork, int* iwork, int liwork, int info) { @@ -150,9 +238,9 @@ void dngvd(const int itype, const char jobz, const char uplo, const int n, } // wrap function of fortran lapack routine zhegvd. static inline -void dngvd(const int itype, const char jobz, const char uplo, const int n, +void hegvd(const int itype, const char jobz, const char uplo, const int n, double* a, const int lda, - const double* b, const int ldb, double* w, + double* b, const int ldb, double* w, double* work, int lwork, double* rwork, int lrwork, int* iwork, int liwork, int info) { @@ -163,9 +251,9 @@ void dngvd(const int itype, const char jobz, const char uplo, const int n, iwork, &liwork, &info); } static inline -void dngvd(const int itype, const char jobz, const char uplo, const int n, +void hegvd(const int itype, const char jobz, const char uplo, const int n, std::complex* a, const int lda, - const std::complex* b, const int ldb, float* w, + std::complex* b, const int ldb, float* w, std::complex* work, int lwork, float* rwork, int lrwork, int* iwork, int liwork, int info) { @@ -177,9 +265,9 @@ void dngvd(const int itype, const char jobz, const char uplo, const int n, } // wrap function of fortran lapack routine zhegvd. static inline -void dngvd(const int itype, const char jobz, const char uplo, const int n, +void hegvd(const int itype, const char jobz, const char uplo, const int n, std::complex* a, const int lda, - const std::complex* b, const int ldb, double* w, + std::complex* b, const int ldb, double* w, std::complex* work, int lwork, double* rwork, int lrwork, int* iwork, int liwork, int info) { @@ -190,37 +278,99 @@ void dngvd(const int itype, const char jobz, const char uplo, const int n, iwork, &liwork, &info); } +// Note +// rwork is only needed for complex version +// and we include rwork in the function parameter list +// for simplicity of function overloading +// and unification of function parameter list +static inline +void hegvx(const int itype, const char jobz, const char range, const char uplo, const int n, + float* a, const int lda, float* b, const int ldb, + const float vl, const float vu, const int il, const int iu, const float abstol, + int m, float* w, float* z, const int ldz, + float* work, const int lwork, float* rwork, int* iwork, int* ifail, int& info) +{ + ssygvx_(&itype, &jobz, &range, &uplo, &n, + a, &lda, b, &ldb, + &vl, &vu, &il, &iu, + &abstol, &m, w, z, &ldz, + work, &lwork, iwork, ifail, &info); +} + +static inline +void hegvx(const int itype, const char jobz, const char range, const char uplo, const int n, + double* a, const int lda, double* b, const int ldb, + const double vl, const double vu, const int il, const int iu, const double abstol, + int m, double* w, double* z, const int ldz, + double* work, const int lwork, double* rwork, int* iwork, int* ifail, int& info) +{ + dsygvx_(&itype, &jobz, &range, &uplo, &n, + a, &lda, b, &ldb, + &vl, &vu, &il, &iu, + &abstol, &m, w, z, &ldz, + work, &lwork, iwork, ifail, &info); +} + +static inline +void hegvx(const int itype, const char jobz, const char range, const char uplo, const int n, + std::complex* a, const int lda, std::complex* b, const int ldb, + const float vl, const float vu, const int il, const int iu, const float abstol, + int m, float* w, std::complex* z, const int ldz, + std::complex* work, const int lwork, float* rwork, int* iwork, int* ifail, int& info) +{ + chegvx_(&itype, &jobz, &range, &uplo, &n, + a, &lda, b, &ldb, + &vl, &vu, &il, &iu, + &abstol, &m, w, z, &ldz, + work, &lwork, rwork, iwork, ifail, &info); +} + +static inline +void hegvx(const int itype, const char jobz, const char range, const char uplo, const int n, + std::complex* a, const int lda, std::complex* b, const int ldb, + const double vl, const double vu, const int il, const int iu, const double abstol, + int m, double* w, std::complex* z, const int ldz, + std::complex* work, const int lwork, double* rwork, int* iwork, int* ifail, int& info) +{ + zhegvx_(&itype, &jobz, &range, &uplo, &n, + a, &lda, b, &ldb, + &vl, &vu, &il, &iu, + &abstol, &m, w, z, &ldz, + work, &lwork, rwork, iwork, ifail, &info); +} + + // wrap function of fortran lapack routine zheevx. static inline -void dnevx( const int itype, const char jobz, const char range, const char uplo, const int n, +void heevx(const char jobz, const char range, const char uplo, const int n, float* a, const int lda, const float vl, const float vu, const int il, const int iu, const float abstol, - const int m, float* w, float* z, const int ldz, + int m, float* w, float* z, const int ldz, float* work, const int lwork, float* rwork, int* iwork, int* ifail, int info) { ssyevx_(&jobz, &range, &uplo, &n, a, &lda, &vl, &vu, &il, &iu, &abstol, &m, w, z, &ldz, - work, &lwork, rwork, iwork, ifail, &info); + work, &lwork, iwork, ifail, &info); } // wrap function of fortran lapack routine zheevx. static inline -void dnevx( const int itype, const char jobz, const char range, const char uplo, const int n, - double* a, const int lda, - const double vl, const double vu, const int il, const int iu, const double abstol, - const int m, double* w, double* z, const int ldz, - double* work, const int lwork, double* rwork, int* iwork, int* ifail, int info) +void heevx(const char jobz, const char range, const char uplo, const int n, + double* a, const int lda, + const double vl, const double vu, const int il, const int iu, const double abstol, + int m, double* w, double* z, const int ldz, + double* work, const int lwork, double* rwork, int* iwork, int* ifail, int info) { dsyevx_(&jobz, &range, &uplo, &n, a, &lda, &vl, &vu, &il, &iu, &abstol, &m, w, z, &ldz, - work, &lwork, rwork, iwork, ifail, &info); + work, &lwork, iwork, ifail, &info); } static inline -void dnevx( const int itype, const char jobz, const char range, const char uplo, const int n, +void heevx(const char jobz, const char range, const char uplo, const int n, std::complex* a, const int lda, const float vl, const float vu, const int il, const int iu, const float abstol, - const int m, float* w, std::complex* z, const int ldz, + int m, float* w, std::complex* z, const int ldz, std::complex* work, const int lwork, float* rwork, int* iwork, int* ifail, int info) { cheevx_(&jobz, &range, &uplo, &n, @@ -230,10 +380,10 @@ void dnevx( const int itype, const char jobz, const char range, const char uplo, } // wrap function of fortran lapack routine zheevx. static inline -void dnevx( const int itype, const char jobz, const char range, const char uplo, const int n, +void heevx(const char jobz, const char range, const char uplo, const int n, std::complex* a, const int lda, const double vl, const double vu, const int il, const int iu, const double abstol, - const int m, double* w, std::complex* z, const int ldz, + int m, double* w, std::complex* z, const int ldz, std::complex* work, const int lwork, double* rwork, int* iwork, int* ifail, int info) { zheevx_(&jobz, &range, &uplo, &n, @@ -243,7 +393,7 @@ void dnevx( const int itype, const char jobz, const char range, const char uplo, } static inline -void dnevd(const char jobz, const char uplo, const int n, +void heevd(const char jobz, const char uplo, const int n, float* a, const int lda, float* w, float* work, int lwork, float* rwork, int lrwork, int* iwork, int liwork, int& info) @@ -256,7 +406,7 @@ void dnevd(const char jobz, const char uplo, const int n, } // wrap function of fortran lapack routine zhegvd. static inline -void dnevd(const char jobz, const char uplo, const int n, +void heevd(const char jobz, const char uplo, const int n, double* a, const int lda, double* w, double* work, int lwork, double* rwork, int lrwork, int* iwork, int liwork, int& info) @@ -268,7 +418,7 @@ void dnevd(const char jobz, const char uplo, const int n, iwork, &liwork, &info); } static inline -void dnevd(const char jobz, const char uplo, const int n, +void heevd(const char jobz, const char uplo, const int n, std::complex* a, const int lda, float* w, std::complex* work, int lwork, float* rwork, int lrwork, int* iwork, int liwork, int& info) @@ -281,7 +431,7 @@ void dnevd(const char jobz, const char uplo, const int n, } // wrap function of fortran lapack routine zhegvd. static inline -void dnevd(const char jobz, const char uplo, const int n, +void heevd(const char jobz, const char uplo, const int n, std::complex* a, const int lda, double* w, std::complex* work, int lwork, double* rwork, int lrwork, int* iwork, int liwork, int& info) @@ -297,17 +447,17 @@ static inline void potrf( const char &uplo, const int &n, float* A, const int &lda, int &info ) { spotrf_(&uplo, &n, A, &lda, &info ); -} +} static inline void potrf( const char &uplo, const int &n, double* A, const int &lda, int &info ) { dpotrf_(&uplo, &n, A, &lda, &info ); -} +} static inline void potrf( const char &uplo, const int &n, std::complex* A, const int &lda, int &info ) { cpotrf_(&uplo, &n, A, &lda, &info ); -} +} static inline void potrf( const char &uplo, const int &n, std::complex* A, const int &lda, int &info ) { @@ -398,6 +548,49 @@ void getrs(const char& trans, const int n, const int nrhs, std::complex* zgetrs_(&trans, &n, &nrhs, A, &lda, ipiv, B, &ldb, &info); } +// LAPACK routines for QR decomposition +static inline +void geqrf(const int m, const int n, float* A, const int lda, float* tau, float* work, const int lwork, int& info) +{ + sgeqrf_(&m, &n, A, &lda, tau, work, &lwork, &info); +} +static inline +void geqrf(const int m, const int n, double* A, const int lda, double* tau, double* work, const int lwork, int& info) +{ + dgeqrf_(&m, &n, A, &lda, tau, work, &lwork, &info); +} +static inline +void geqrf(const int m, const int n, std::complex* A, const int lda, std::complex* tau, std::complex* work, const int lwork, int& info) +{ + cgeqrf_(&m, &n, A, &lda, tau, work, &lwork, &info); +} +static inline +void geqrf(const int m, const int n, std::complex* A, const int lda, std::complex* tau, std::complex* work, const int lwork, int& info) +{ + zgeqrf_(&m, &n, A, &lda, tau, work, &lwork, &info); +} +// these routines generate the orthogonal matrix Q from the QR decomposition +static inline +void orgqr(const int m, const int n, const int k, float* A, const int lda, const float* tau, float* work, const int lwork, int& info) +{ + sorgqr_(&m, &n, &k, A, &lda, tau, work, &lwork, &info); +} +static inline +void orgqr(const int m, const int n, const int k, double* A, const int lda, const double* tau, double* work, const int lwork, int& info) +{ + dorgqr_(&m, &n, &k, A, &lda, tau, work, &lwork, &info); +} +static inline +void orgqr(const int m, const int n, const int k, std::complex* A, const int lda, const std::complex* tau, std::complex* work, const int lwork, int& info) +{ + cungqr_(&m, &n, &k, A, &lda, tau, work, &lwork, &info); +} +static inline +void orgqr(const int m, const int n, const int k, std::complex* A, const int lda, const std::complex* tau, std::complex* work, const int lwork, int& info) +{ + zungqr_(&m, &n, &k, A, &lda, tau, work, &lwork, &info); +} + } // namespace lapackConnector } // namespace container diff --git a/source/source_base/module_container/base/utils/array_ref.h b/source/source_base/module_container/base/utils/array_ref.h index 2af73ae970..735a05c41b 100644 --- a/source/source_base/module_container/base/utils/array_ref.h +++ b/source/source_base/module_container/base/utils/array_ref.h @@ -12,7 +12,7 @@ template class array_ref final { private: - T* data_; + T* data_ = nullptr; size_t length_; public: diff --git a/source/source_base/module_device/cuda/memory_op.cu b/source/source_base/module_device/cuda/memory_op.cu index 43eae7975c..ccb52ae719 100644 --- a/source/source_base/module_device/cuda/memory_op.cu +++ b/source/source_base/module_device/cuda/memory_op.cu @@ -60,7 +60,7 @@ void resize_memory_op::operator()(FPTYPE*& arr, { delete_memory_op()(arr); } - cudaErrcheck(cudaMalloc((void**)&arr, sizeof(FPTYPE) * size)); + CHECK_CUDA(cudaMalloc((void**)&arr, sizeof(FPTYPE) * size)); std::string record_string; if (record_in != nullptr) { @@ -82,7 +82,17 @@ void set_memory_op::operator()(FPTYPE* arr, const int var, const size_t size) { - cudaErrcheck(cudaMemset(arr, var, sizeof(FPTYPE) * size)); + CHECK_CUDA(cudaMemset(arr, var, sizeof(FPTYPE) * size)); +} + +template +void set_memory_2d_op::operator()(FPTYPE* arr, + const size_t pitch, + const int var, + const size_t width, + const size_t height) +{ + CHECK_CUDA(cudaMemset2D(arr, sizeof(FPTYPE) * pitch , var, sizeof(FPTYPE) * width, height)); } template @@ -91,7 +101,7 @@ void synchronize_memory_op @@ -100,7 +110,7 @@ void synchronize_memory_op @@ -109,7 +119,43 @@ void synchronize_memory_op +void synchronize_memory_2d_op::operator()( + FPTYPE* arr_out, + const size_t dpitch, + const FPTYPE* arr_in, + const size_t spitch, + const size_t width, + const size_t height) +{ + CHECK_CUDA(cudaMemcpy2D(arr_out, dpitch * sizeof(FPTYPE), arr_in, spitch * sizeof(FPTYPE), width * sizeof(FPTYPE), height, cudaMemcpyDeviceToHost)); +} + +template +void synchronize_memory_2d_op::operator()( + FPTYPE* arr_out, + const size_t dpitch, + const FPTYPE* arr_in, + const size_t spitch, + const size_t width, + const size_t height) +{ + CHECK_CUDA(cudaMemcpy2D(arr_out, dpitch * sizeof(FPTYPE), arr_in, spitch * sizeof(FPTYPE), width * sizeof(FPTYPE), height, cudaMemcpyHostToDevice)); +} + +template +void synchronize_memory_2d_op::operator()( + FPTYPE* arr_out, + const size_t dpitch, + const FPTYPE* arr_in, + const size_t spitch, + const size_t width, + const size_t height) +{ + CHECK_CUDA(cudaMemcpy2D(arr_out, dpitch * sizeof(FPTYPE), arr_in, spitch * sizeof(FPTYPE), width * sizeof(FPTYPE), height, cudaMemcpyDeviceToDevice)); } template @@ -126,7 +172,7 @@ struct cast_memory_op>>(arr_out, arr_in, size); - cudaCheckOnDebug(); + CHECK_CUDA_SYNC(); } }; @@ -146,12 +192,12 @@ struct cast_memory_op>>(arr_out, arr, size); - cudaCheckOnDebug(); - cudaErrcheck(cudaFree(arr)); + CHECK_CUDA_SYNC(); + CHECK_CUDA(cudaFree(arr)); } }; @@ -170,7 +216,7 @@ struct cast_memory_op(arr[ii]); } @@ -181,7 +227,7 @@ struct cast_memory_op void delete_memory_op::operator()(FPTYPE* arr) { - cudaErrcheck(cudaFree(arr)); + CHECK_CUDA(cudaFree(arr)); } template struct resize_memory_op; @@ -196,6 +242,12 @@ template struct set_memory_op; template struct set_memory_op, base_device::DEVICE_GPU>; template struct set_memory_op, base_device::DEVICE_GPU>; +template struct set_memory_2d_op; +template struct set_memory_2d_op; +template struct set_memory_2d_op; +template struct set_memory_2d_op, base_device::DEVICE_GPU>; +template struct set_memory_2d_op, base_device::DEVICE_GPU>; + template struct synchronize_memory_op; template struct synchronize_memory_op; template struct synchronize_memory_op; @@ -212,6 +264,22 @@ template struct synchronize_memory_op, base_device::DEVICE_ template struct synchronize_memory_op, base_device::DEVICE_GPU, base_device::DEVICE_CPU>; template struct synchronize_memory_op, base_device::DEVICE_GPU, base_device::DEVICE_GPU>; +template struct synchronize_memory_2d_op; +template struct synchronize_memory_2d_op; +template struct synchronize_memory_2d_op; +template struct synchronize_memory_2d_op; +template struct synchronize_memory_2d_op; +template struct synchronize_memory_2d_op; +template struct synchronize_memory_2d_op; +template struct synchronize_memory_2d_op; +template struct synchronize_memory_2d_op; +template struct synchronize_memory_2d_op, base_device::DEVICE_CPU, base_device::DEVICE_GPU>; +template struct synchronize_memory_2d_op, base_device::DEVICE_GPU, base_device::DEVICE_CPU>; +template struct synchronize_memory_2d_op, base_device::DEVICE_GPU, base_device::DEVICE_GPU>; +template struct synchronize_memory_2d_op, base_device::DEVICE_CPU, base_device::DEVICE_GPU>; +template struct synchronize_memory_2d_op, base_device::DEVICE_GPU, base_device::DEVICE_CPU>; +template struct synchronize_memory_2d_op, base_device::DEVICE_GPU, base_device::DEVICE_GPU>; + template struct cast_memory_op; template struct cast_memory_op; template struct cast_memory_op; diff --git a/source/source_base/module_device/cuda_compat.cpp b/source/source_base/module_device/cuda_compat.cpp new file mode 100644 index 0000000000..a4a6844797 --- /dev/null +++ b/source/source_base/module_device/cuda_compat.cpp @@ -0,0 +1,66 @@ +#include "cuda_compat.h" + +namespace ModuleBase { +namespace cuda_compat { + +//--------------------------------------------------------------------------- +// Implementation of printDeprecatedDeviceInfo and printComputeModeInfo +//--------------------------------------------------------------------------- +void printDeprecatedDeviceInfo(std::ostream& ofs_device, const cudaDeviceProp& deviceProp) +{ +#if defined(CUDA_VERSION) && CUDA_VERSION < 13000 + char msg[1024]; + sprintf(msg, + " GPU Max Clock rate: %.0f MHz (%0.2f " + "GHz)\n", + deviceProp.clockRate * 1e-3f, deviceProp.clockRate * 1e-6f); + ofs_device << msg << std::endl; + // This is supported in CUDA 5.0 (runtime API device properties) + sprintf(msg, " Memory Clock rate: %.0f Mhz\n", + deviceProp.memoryClockRate * 1e-3f); + ofs_device << msg << std::endl; + + sprintf(msg, " Memory Bus Width: %d-bit\n", + deviceProp.memoryBusWidth); + ofs_device << msg << std::endl; + + sprintf(msg, + " Concurrent copy and kernel execution: %s with %d copy " + "engine(s)\n", + (deviceProp.deviceOverlap ? "Yes" : "No"), + deviceProp.asyncEngineCount); + ofs_device << msg << std::endl; + sprintf(msg, " Run time limit on kernels: %s\n", + deviceProp.kernelExecTimeoutEnabled ? "Yes" : "No"); + ofs_device << msg << std::endl; +#endif +} + +void printComputeModeInfo(std::ostream& ofs_device, const cudaDeviceProp& deviceProp) +{ +#if defined(CUDA_VERSION) && CUDA_VERSION < 13000 + char msg[1024]; + sprintf(msg, " Supports MultiDevice Co-op Kernel Launch: %s\n", + deviceProp.cooperativeMultiDeviceLaunch ? "Yes" : "No"); + ofs_device << msg << std::endl; + + const char *sComputeMode[] = { + "Default (multiple host threads can use ::cudaSetDevice() with device " + "simultaneously)", + "Exclusive (only one host thread in one process is able to use " + "::cudaSetDevice() with this device)", + "Prohibited (no host thread can use ::cudaSetDevice() with this " + "device)", + "Exclusive Process (many threads in one process is able to use " + "::cudaSetDevice() with this device)", + "Unknown", + NULL}; + sprintf(msg, " Compute Mode:\n"); + ofs_device << msg << std::endl; + ofs_device << " " << sComputeMode[deviceProp.computeMode] << std::endl + << std::endl; +#endif +} + +} // namespace cuda_compat +} // namespace ModuleBase diff --git a/source/source_base/module_device/cuda_compat.h b/source/source_base/module_device/cuda_compat.h new file mode 100644 index 0000000000..acb2fca394 --- /dev/null +++ b/source/source_base/module_device/cuda_compat.h @@ -0,0 +1,70 @@ +/** + * @file cuda_compat.h + * @brief Compatibility layer for CUDA and NVTX headers across different CUDA Toolkit versions. + * + * This header abstracts the differences in NVTX (NVIDIA Tools Extension) header locations + * between CUDA Toolkit versions. + * + * @note Depends on the CUDA_VERSION macro defined in . + * + */ + +#ifndef CUDA_COMPAT_H_ +#define CUDA_COMPAT_H_ + +#include // For std::ostream +#include // For std::invalid_argument +#include // defines CUDA_VERSION +#include +#include + + +// NVTX header for CUDA versions prior to 12.9 vs. 12.9+ +// This block ensures the correct NVTX header path is used based on CUDA_VERSION. +// - For CUDA Toolkit < 12.9, the legacy header "nvToolsExt.h" is included. +// - For CUDA Toolkit >= 12.9, the modern header "nvtx3/nvToolsExt.h" is included, +// and NVTX v2 is removed from 12.9. +// This allows NVTX profiling APIs (e.g. nvtxRangePush) to be used consistently +// across different CUDA versions. +// See: +// https://docs.nvidia.com/cuda/archive/12.9.0/cuda-toolkit-release-notes/index.html#id4 +#if defined(__CUDA) && defined(__USE_NVTX) +#if CUDA_VERSION < 12090 + #include "nvToolsExt.h" +#else + #include "nvtx3/nvToolsExt.h" +#endif +#endif + +//------------------------------------------------------------------------------------------------- +// Compatibility Layer Declarations +//------------------------------------------------------------------------------------------------- +namespace ModuleBase { +namespace cuda_compat { + +/** + * @brief Prints device information that was deprecated or removed in CUDA 13.0. + * + * This function handles properties like clockRate, memoryClockRate, memoryBusWidth, + * and concurrency flags, which are not available in newer CUDA toolkits. + * + * @param os The output stream (e.g., std::cout, std::ofstream). + * @param prop The cudaDeviceProp structure containing device properties. + */ +void printDeprecatedDeviceInfo(std::ostream& os, const cudaDeviceProp& prop); + +/** + * @brief Prints the device's compute mode using a legacy string mapping. + * + * The compute mode display logic is encapsulated here as it relies on aspects + * of the driver model that have changed. + * + * @param os The output stream (e.g., std::cout, std::ofstream). + * @param prop The cudaDeviceProp structure containing device properties. + */ +void printComputeModeInfo(std::ostream& os, const cudaDeviceProp& prop); + +} // namespace cuda_compat +} // namespace ModuleBase + +#endif // CUDA_COMPAT_H_ diff --git a/source/source_base/module_device/device.cpp b/source/source_base/module_device/device.cpp index d8837e1995..fb95e94f49 100644 --- a/source/source_base/module_device/device.cpp +++ b/source/source_base/module_device/device.cpp @@ -1,4 +1,3 @@ - #include "device.h" #include "source_base/tool_quit.h" @@ -6,6 +5,7 @@ #include #include #include +#include #ifdef __MPI #include "mpi.h" #endif @@ -20,97 +20,9 @@ namespace base_device { -// for device -template <> -base_device::AbacusDevice_t -get_device_type(const base_device::DEVICE_CPU *dev) { - return base_device::CpuDevice; -} -template <> -base_device::AbacusDevice_t -get_device_type(const base_device::DEVICE_GPU *dev) { - return base_device::GpuDevice; -} - -// for precision -template <> std::string get_current_precision(const float *var) { - return "single"; -} -template <> std::string get_current_precision(const double *var) { - return "double"; -} -template <> std::string get_current_precision(const std::complex *var) { - return "single"; -} -template <> std::string get_current_precision(const std::complex *var) { - return "double"; -} - namespace information { #if __MPI -int stringCmp(const void *a, const void *b) { - char *m = (char *)a; - char *n = (char *)b; - int i, sum = 0; - - for (i = 0; i < MPI_MAX_PROCESSOR_NAME; i++) { - if (m[i] == n[i]) { - continue; - } else { - sum = m[i] - n[i]; - break; - } - } - return sum; -} -int get_node_rank() { - char host_name[MPI_MAX_PROCESSOR_NAME]; - memset(host_name, '\0', sizeof(char) * MPI_MAX_PROCESSOR_NAME); - char(*host_names)[MPI_MAX_PROCESSOR_NAME]; - int n, namelen, color, rank, nprocs, myrank; - size_t bytes; - MPI_Comm nodeComm; - - MPI_Comm_rank(MPI_COMM_WORLD, &rank); - MPI_Comm_size(MPI_COMM_WORLD, &nprocs); - MPI_Get_processor_name(host_name, &namelen); - - bytes = nprocs * sizeof(char[MPI_MAX_PROCESSOR_NAME]); - host_names = (char(*)[MPI_MAX_PROCESSOR_NAME])malloc(bytes); - for (int ii = 0; ii < nprocs; ii++) { - memset(host_names[ii], '\0', sizeof(char) * MPI_MAX_PROCESSOR_NAME); - } - - strcpy(host_names[rank], host_name); - - for (n = 0; n < nprocs; n++) { - MPI_Bcast(&(host_names[n]), MPI_MAX_PROCESSOR_NAME, MPI_CHAR, n, - MPI_COMM_WORLD); - } - qsort(host_names, nprocs, sizeof(char[MPI_MAX_PROCESSOR_NAME]), stringCmp); - - color = 0; - for (n = 0; n < nprocs - 1; n++) { - if (strcmp(host_name, host_names[n]) == 0) { - break; - } - if (strcmp(host_names[n], host_names[n + 1])) { - color++; - } - } - - MPI_Comm_split(MPI_COMM_WORLD, color, 0, &nodeComm); - MPI_Comm_rank(nodeComm, &myrank); - - MPI_Barrier(MPI_COMM_WORLD); - int looprank = myrank; - // printf (" Assigning device %d to process on node %s rank %d, - // OK\n",looprank, host_name, rank ); - free(host_names); - return looprank; -} - int get_node_rank_with_mpi_shared(const MPI_Comm mpi_comm) { // 20240530 zhanghaochong // The main difference between this function and the above is that it does not @@ -124,596 +36,152 @@ int get_node_rank_with_mpi_shared(const MPI_Comm mpi_comm) { MPI_Comm_free(&localComm); return localMpiRank; } -#if defined(__CUDA) - -int set_device_by_rank(const MPI_Comm mpi_comm) { - int localMpiRank = get_node_rank_with_mpi_shared(mpi_comm); - int device_num = -1; - - cudaGetDeviceCount(&device_num); - if (device_num <= 0) { - ModuleBase::WARNING_QUIT("device", "can not find gpu device!"); - } - // warning: this is not a good way to assign devices, user should assign One - // process per GPU - int local_device_id = localMpiRank % device_num; - int ret = cudaSetDevice(local_device_id); - if (ret != cudaSuccess) { - ModuleBase::WARNING_QUIT("device", "cudaSetDevice failed!"); - } - return local_device_id; -} -#endif - #endif -std::string get_device_flag(const std::string &device, - const std::string &basis_type) { -if (device == "cpu") { - return "cpu"; // no extra checks required -} -std::string error_message; -if (device != "auto" and device != "gpu") -{ - error_message += "Parameter \"device\" can only be set to \"cpu\" or \"gpu\"!"; - ModuleBase::WARNING_QUIT("device", error_message); -} - -// Get available GPU count -int device_count = -1; -#if ((defined __CUDA) || (defined __ROCM)) +bool probe_gpu_availability() { #if defined(__CUDA) -cudaGetDeviceCount(&device_count); + int device_count = 0; + // Directly call cudaGetDeviceCount without CHECK_CUDA to prevent program exit + cudaError_t error_id = cudaGetDeviceCount(&device_count); + if (error_id == cudaSuccess && device_count > 0) { + return true; + } + return false; #elif defined(__ROCM) -hipGetDeviceCount(&device_count); -/***auto start_time = std::chrono::high_resolution_clock::now(); -std::cout << "Starting hipGetDeviceCount.." << std::endl; -auto end_time = std::chrono::high_resolution_clock::now(); -auto duration = std::chrono::duration_cast>(end_time - start_time); -std::cout << "hipGetDeviceCount took " << duration.count() << "seconds" << std::endl;***/ + int device_count = 0; + hipError_t error_id = hipGetDeviceCount(&device_count); + if (error_id == hipSuccess && device_count > 0) { + return true; + } + return false; +#else + // If not compiled with GPU support, GPU is not available + return false; #endif -if (device_count <= 0) -{ - error_message += "Cannot find GPU on this computer!\n"; } -#else // CPU only -error_message += "ABACUS is built with CPU support only. Please rebuild with GPU support.\n"; -#endif -if (basis_type == "lcao_in_pw") { - error_message += - "The GPU currently does not support the basis type \"lcao_in_pw\"!"; -} -if(error_message.empty()) -{ - return "gpu"; // possibly automatically set to GPU -} -else if (device == "gpu") -{ - ModuleBase::WARNING_QUIT("device", error_message); -} -else { return "cpu"; -} -} - -int get_device_kpar(const int& kpar, const int& bndpar) -{ -#if __MPI && (__CUDA || __ROCM) - int temp_nproc = 0; - int new_kpar = kpar; - MPI_Comm_size(MPI_COMM_WORLD, &temp_nproc); - if (temp_nproc != kpar * bndpar) - { - new_kpar = temp_nproc / bndpar; - ModuleBase::WARNING("Input_conv", "kpar is not compatible with the number of processors, auto set kpar value."); +std::string get_device_flag(const std::string &device, + const std::string &basis_type) { + // 1. Validate input string + if (device != "cpu" && device != "gpu" && device != "auto") { + ModuleBase::WARNING_QUIT("device", "Parameter \"device\" can only be set to \"cpu\", \"gpu\", or \"auto\"!"); } - // get the CPU rank of current node - int node_rank = base_device::information::get_node_rank(); - - int device_num = -1; -#if defined(__CUDA) - cudaGetDeviceCount(&device_num); // get the number of GPU devices of current node - cudaSetDevice(node_rank % device_num); // band the CPU processor to the devices -#elif defined(__ROCM) - hipGetDeviceCount(&device_num); - hipSetDevice(node_rank % device_num); -#endif - return new_kpar; -#endif - return kpar; -} - -std::string get_device_info(std::string device_flag) { - std::string device_info = "Unknown"; - -#if defined(__CUDA) - if (device_flag == "gpu") { - int dev = 0; - cudaDeviceProp deviceProp; - cudaErrcheck(cudaGetDeviceProperties(&deviceProp, dev)); - device_info = deviceProp.name; - } -#elif defined(__ROCM) - if (device_flag == "gpu") { - int dev = 0; - hipDeviceProp_t deviceProp; - hipErrcheck(hipGetDeviceProperties(&deviceProp, dev)); - device_info = deviceProp.name; - } -#endif - if (device_flag == "cpu") { - std::ifstream cpuinfo("/proc/cpuinfo"); - std::string line = "", cpu_name = ""; - - while (std::getline(cpuinfo, line)) { - if (line.find("model name") != std::string::npos) { - // Extract the CPU name from the line - size_t colonPos = line.find(":"); - if (colonPos != std::string::npos) { - cpu_name = line.substr(colonPos + 2); // Skip the colon and space - break; // Stop after the first match + // NOTE: This function is called only on rank 0 during input parsing. + // The result will be broadcast to other ranks via the standard bcast mechanism. + // DO NOT use MPI_Bcast here as other ranks are not in this code path. + + std::string result = "cpu"; + + if (device == "gpu") { + if (probe_gpu_availability()) { + result = "gpu"; + // std::cout << " INFO: 'device=gpu' specified. GPU will be used." << std::endl; + } else { + ModuleBase::WARNING_QUIT("device", "Device is set to 'gpu', but no available GPU was found. Please check your hardware/drivers or set 'device=cpu'."); + } + } else if (device == "auto") { + if (probe_gpu_availability()) { + result = "gpu"; + // std::cout << " INFO: 'device=auto' specified. GPU detected and will be used." << std::endl; + } else { + result = "cpu"; + // std::cout << " WARNING: 'device=auto' specified, but no GPU was found. Falling back to CPU." << std::endl; + // std::cout << " To suppress this warning, please explicitly set 'device=cpu' in your input." << std::endl; } - } + } else { // device == "cpu" + result = "cpu"; + // std::cout << " INFO: 'device=cpu' specified. CPU will be used." << std::endl; } - if (cpu_name != "") { - device_info = cpu_name; + + // 2. Final check for incompatible basis type + if (result == "gpu" && basis_type == "lcao_in_pw") { + ModuleBase::WARNING_QUIT("device", "The GPU currently does not support the basis type \"lcao_in_pw\"!"); } - cpuinfo.close(); - } - return device_info; + + // 3. Return the final decision + return result; } -#if defined(__CUDA) +} // end of namespace information -static bool is_init = false; +// ============================================================================ +// DeviceContext singleton implementation +// ============================================================================ -template <> -void print_device_info( - const base_device::DEVICE_GPU *ctx, std::ofstream &ofs_device) { - if (is_init) { - return; - } - int deviceCount = 0; - cudaError_t error_id = cudaGetDeviceCount(&deviceCount); - if (error_id != cudaSuccess) { - ofs_device << "cudaGetDeviceCount returned " << static_cast(error_id) - << "\n-> " << cudaGetErrorString(error_id) << std::endl; - ModuleBase::WARNING_QUIT("device", "GPU returned is without cudaSuccess"); - } - // This function call returns 0 if there are no CUDA capable devices. - if (deviceCount == 0) { - ofs_device << "There are no available device(s) that support CUDA\n"; - } else { - ofs_device << "Detected " << deviceCount << " CUDA Capable device(s)\n"; - } - int dev = 0, driverVersion = 0, runtimeVersion = 0; - cudaErrcheck(cudaSetDevice(dev)); - cudaDeviceProp deviceProp; - cudaErrcheck(cudaGetDeviceProperties(&deviceProp, dev)); - ofs_device << "\nDevice " << dev << ":\t " << deviceProp.name << std::endl; - // Console log - cudaErrcheck(cudaDriverGetVersion(&driverVersion)); - cudaErrcheck(cudaRuntimeGetVersion(&runtimeVersion)); - char msg[1024]; - sprintf(msg, - " CUDA Driver Version / Runtime Version %d.%d / %d.%d\n", - driverVersion / 1000, (driverVersion % 100) / 10, - runtimeVersion / 1000, (runtimeVersion % 100) / 10); - ofs_device << msg << std::endl; - sprintf(msg, " CUDA Capability Major/Minor version number: %d.%d\n", - deviceProp.major, deviceProp.minor); - ofs_device << msg << std::endl; - sprintf(msg, - " GPU Max Clock rate: %.0f MHz (%0.2f " - "GHz)\n", - deviceProp.clockRate * 1e-3f, deviceProp.clockRate * 1e-6f); - ofs_device << msg << std::endl; - // This is supported in CUDA 5.0 (runtime API device properties) - sprintf(msg, " Memory Clock rate: %.0f Mhz\n", - deviceProp.memoryClockRate * 1e-3f); - ofs_device << msg << std::endl; +DeviceContext& DeviceContext::instance() { + static DeviceContext instance; + return instance; +} - sprintf(msg, " Memory Bus Width: %d-bit\n", - deviceProp.memoryBusWidth); - ofs_device << msg << std::endl; - sprintf(msg, - " Maximum Texture Dimension Size (x,y,z) 1D=(%d), 2D=(%d, " - "%d), 3D=(%d, %d, %d)\n", - deviceProp.maxTexture1D, deviceProp.maxTexture2D[0], - deviceProp.maxTexture2D[1], deviceProp.maxTexture3D[0], - deviceProp.maxTexture3D[1], deviceProp.maxTexture3D[2]); - ofs_device << msg << std::endl; +void DeviceContext::init() { + // Thread-safe initialization using mutex + std::lock_guard lock(init_mutex_); - sprintf( - msg, - " Maximum Layered 1D Texture Size, (num) layers 1D=(%d), %d layers\n", - deviceProp.maxTexture1DLayered[0], deviceProp.maxTexture1DLayered[1]); - ofs_device << msg << std::endl; - sprintf(msg, - " Maximum Layered 2D Texture Size, (num) layers 2D=(%d, %d), %d " - "layers\n", - deviceProp.maxTexture2DLayered[0], deviceProp.maxTexture2DLayered[1], - deviceProp.maxTexture2DLayered[2]); - ofs_device << msg << std::endl; - sprintf(msg, " Total amount of constant memory: %zu bytes\n", - deviceProp.totalConstMem); - ofs_device << msg << std::endl; - sprintf(msg, " Total amount of shared memory per block: %zu bytes\n", - deviceProp.sharedMemPerBlock); - ofs_device << msg << std::endl; - sprintf(msg, " Total shared memory per multiprocessor: %zu bytes\n", - deviceProp.sharedMemPerMultiprocessor); - ofs_device << msg << std::endl; - sprintf(msg, " Total number of registers available per block: %d\n", - deviceProp.regsPerBlock); - ofs_device << msg << std::endl; - sprintf(msg, " Warp size: %d\n", - deviceProp.warpSize); - ofs_device << msg << std::endl; - sprintf(msg, " Maximum number of threads per multiprocessor: %d\n", - deviceProp.maxThreadsPerMultiProcessor); - ofs_device << msg << std::endl; - sprintf(msg, " Maximum number of threads per block: %d\n", - deviceProp.maxThreadsPerBlock); - ofs_device << msg << std::endl; - sprintf(msg, " Max dimension size of a thread block (x,y,z): (%d, %d, %d)\n", - deviceProp.maxThreadsDim[0], deviceProp.maxThreadsDim[1], - deviceProp.maxThreadsDim[2]); - ofs_device << msg << std::endl; - sprintf(msg, " Max dimension size of a grid size (x,y,z): (%d, %d, %d)\n", - deviceProp.maxGridSize[0], deviceProp.maxGridSize[1], - deviceProp.maxGridSize[2]); - ofs_device << msg << std::endl; - sprintf(msg, " Maximum memory pitch: %zu bytes\n", - deviceProp.memPitch); - ofs_device << msg << std::endl; - sprintf(msg, " Texture alignment: %zu bytes\n", - deviceProp.textureAlignment); - ofs_device << msg << std::endl; - sprintf(msg, - " Concurrent copy and kernel execution: %s with %d copy " - "engine(s)\n", - (deviceProp.deviceOverlap ? "Yes" : "No"), - deviceProp.asyncEngineCount); - ofs_device << msg << std::endl; - sprintf(msg, " Run time limit on kernels: %s\n", - deviceProp.kernelExecTimeoutEnabled ? "Yes" : "No"); - ofs_device << msg << std::endl; - sprintf(msg, " Integrated GPU sharing Host Memory: %s\n", - deviceProp.integrated ? "Yes" : "No"); - ofs_device << msg << std::endl; - sprintf(msg, " Support host page-locked memory mapping: %s\n", - deviceProp.canMapHostMemory ? "Yes" : "No"); - ofs_device << msg << std::endl; - sprintf(msg, " Alignment requirement for Surfaces: %s\n", - deviceProp.surfaceAlignment ? "Yes" : "No"); - ofs_device << msg << std::endl; - sprintf(msg, " Device has ECC support: %s\n", - deviceProp.ECCEnabled ? "Enabled" : "Disabled"); - ofs_device << msg << std::endl; - sprintf(msg, " Device supports Unified Addressing (UVA): %s\n", - deviceProp.unifiedAddressing ? "Yes" : "No"); - ofs_device << msg << std::endl; - sprintf(msg, " Device supports Managed Memory: %s\n", - deviceProp.managedMemory ? "Yes" : "No"); - ofs_device << msg << std::endl; - sprintf(msg, " Device supports Compute Preemption: %s\n", - deviceProp.computePreemptionSupported ? "Yes" : "No"); - ofs_device << msg << std::endl; - sprintf(msg, " Supports Cooperative Kernel Launch: %s\n", - deviceProp.cooperativeLaunch ? "Yes" : "No"); - ofs_device << msg << std::endl; - sprintf(msg, " Supports MultiDevice Co-op Kernel Launch: %s\n", - deviceProp.cooperativeMultiDeviceLaunch ? "Yes" : "No"); - ofs_device << msg << std::endl; - sprintf(msg, - " Device PCI Domain ID / Bus ID / location ID: %d / %d / %d\n", - deviceProp.pciDomainID, deviceProp.pciBusID, deviceProp.pciDeviceID); - ofs_device << msg << std::endl; - const char *sComputeMode[] = { - "Default (multiple host threads can use ::cudaSetDevice() with device " - "simultaneously)", - "Exclusive (only one host thread in one process is able to use " - "::cudaSetDevice() with this device)", - "Prohibited (no host thread can use ::cudaSetDevice() with this " - "device)", - "Exclusive Process (many threads in one process is able to use " - "::cudaSetDevice() with this device)", - "Unknown", - NULL}; - sprintf(msg, " Compute Mode:\n"); - ofs_device << msg << std::endl; - ofs_device << " " << sComputeMode[deviceProp.computeMode] << std::endl - << std::endl; + // If already initialized, do nothing (idempotent) + if (initialized_) { + return; + } - // If there are 2 or more GPUs, query to determine whether RDMA is supported - if (deviceCount >= 2) { - cudaDeviceProp prop[64]; - int gpuid[64]; // we want to find the first two GPUs that can support P2P - int gpu_p2p_count = 0; +#if defined(__CUDA) || defined(__ROCM) - for (int i = 0; i < deviceCount; i++) { - cudaErrcheck(cudaGetDeviceProperties(&prop[i], i)); +#ifdef __MPI + // Get local rank within the node using MPI_COMM_TYPE_SHARED + // This is the modern and recommended way to get node-local rank + // Use MPI_COMM_WORLD as the default communicator + MPI_Comm local_comm; + MPI_Comm_split_type(MPI_COMM_WORLD, MPI_COMM_TYPE_SHARED, 0, MPI_INFO_NULL, &local_comm); + MPI_Comm_rank(local_comm, &local_rank_); + MPI_Comm_free(&local_comm); +#else + local_rank_ = 0; +#endif - // Only boards based on Fermi or later can support P2P - if (prop[i].major >= 2) { - // This is an array of P2P capable GPUs - gpuid[gpu_p2p_count++] = i; - } + // Get the number of available GPU devices +#if defined(__CUDA) + cudaError_t err = cudaGetDeviceCount(&device_count_); + if (err != cudaSuccess || device_count_ <= 0) { + ModuleBase::WARNING_QUIT("DeviceContext::init", + "No CUDA-capable GPU device found! Please check your hardware/drivers."); + return; } - // Show all the combinations of support P2P GPUs - int can_access_peer; - - if (gpu_p2p_count >= 2) { - for (int i = 0; i < gpu_p2p_count; i++) { - for (int j = 0; j < gpu_p2p_count; j++) { - if (gpuid[i] == gpuid[j]) { - continue; - } - cudaErrcheck( - cudaDeviceCanAccessPeer(&can_access_peer, gpuid[i], gpuid[j])); - sprintf(msg, "> Peer access from %s (GPU%d) -> %s (GPU%d) : %s\n", - prop[gpuid[i]].name, gpuid[i], prop[gpuid[j]].name, gpuid[j], - can_access_peer ? "Yes" : "No"); - ofs_device << msg << std::endl; - } - } + // Bind to GPU device based on local rank + device_id_ = local_rank_ % device_count_; + err = cudaSetDevice(device_id_); + if (err != cudaSuccess) { + ModuleBase::WARNING_QUIT("DeviceContext::init", + "cudaSetDevice failed! Device ID: " + std::to_string(device_id_)); + return; } - } - - // csv masterlog info - // ***************************** - // exe and CUDA driver name - std::string sProfileString = "deviceQuery, CUDA Driver = CUDART"; - char cTemp[16]; - - // driver version - sProfileString += ", CUDA Driver Version = "; - - snprintf(cTemp, sizeof(cTemp), "%d.%d", driverVersion / 1000, - (driverVersion % 100) / 10); - sProfileString += cTemp; - - // Runtime version - sProfileString += ", CUDA Runtime Version = "; - snprintf(cTemp, sizeof(cTemp), "%d.%d", runtimeVersion / 1000, - (runtimeVersion % 100) / 10); - sProfileString += cTemp; - - // Device count - sProfileString += ", NumDevs = "; - snprintf(cTemp, sizeof(cTemp), "%d", deviceCount); - sProfileString += cTemp; - sProfileString += "\n"; - - ofs_device << sProfileString.c_str() << std::endl; - is_init = true; - ofs_device << "End of device informations." << std::endl << std::endl; -} - -template <> -void record_device_memory( - const base_device::DEVICE_GPU *ctx, std::ofstream &ofs_device, - std::string str, size_t size) { - ofs_device << "Allocate " << static_cast(size) / 8 / 1024 / 1024 - << " \tMB device memory\t" - << "from " << str << std::endl - << std::endl; -} - #elif defined(__ROCM) - -static bool is_init = false; - -template <> -void print_device_info( - const base_device::DEVICE_GPU *ctx, std::ofstream &ofs_device) { - if (is_init) { - return; - } - int deviceCount = 0; - hipError_t error_id = hipGetDeviceCount(&deviceCount); - if (error_id != hipSuccess) { - ofs_device << "hipGetDeviceCount returned " << static_cast(error_id) - << "\n-> " << hipGetErrorString(error_id) << std::endl; - ModuleBase::WARNING_QUIT("device", "GPU returned is without hipSuccess"); - } - // This function call returns 0 if there are no CUDA capable devices. - if (deviceCount == 0) { - ofs_device << "There are no available device(s) that support CUDA\n"; - } else { - ofs_device << "Detected " << deviceCount << " CUDA Capable device(s)\n"; - } - int dev = 0, driverVersion = 0, runtimeVersion = 0; - hipErrcheck(hipSetDevice(dev)); - hipDeviceProp_t deviceProp; - hipErrcheck(hipGetDeviceProperties(&deviceProp, dev)); - ofs_device << "\nDevice " << dev << ":\t " << deviceProp.name << std::endl; - // Console log - hipErrcheck(hipDriverGetVersion(&driverVersion)); - hipErrcheck(hipRuntimeGetVersion(&runtimeVersion)); - char msg[1024]; - sprintf(msg, - " CUDA Driver Version / Runtime Version %d.%d / %d.%d\n", - driverVersion / 1000, (driverVersion % 100) / 10, - runtimeVersion / 1000, (runtimeVersion % 100) / 10); - ofs_device << msg << std::endl; - sprintf(msg, " CUDA Capability Major/Minor version number: %d.%d\n", - deviceProp.major, deviceProp.minor); - ofs_device << msg << std::endl; - sprintf(msg, - " GPU Max Clock rate: %.0f MHz (%0.2f " - "GHz)\n", - deviceProp.clockRate * 1e-3f, deviceProp.clockRate * 1e-6f); - ofs_device << msg << std::endl; - // This is supported in CUDA 5.0 (runtime API device properties) - sprintf(msg, " Memory Clock rate: %.0f Mhz\n", - deviceProp.memoryClockRate * 1e-3f); - ofs_device << msg << std::endl; - - sprintf(msg, " Memory Bus Width: %d-bit\n", - deviceProp.memoryBusWidth); - ofs_device << msg << std::endl; - sprintf(msg, - " Maximum Texture Dimension Size (x,y,z) 1D=(%d), 2D=(%d, " - "%d), 3D=(%d, %d, %d)\n", - deviceProp.maxTexture1D, deviceProp.maxTexture2D[0], - deviceProp.maxTexture2D[1], deviceProp.maxTexture3D[0], - deviceProp.maxTexture3D[1], deviceProp.maxTexture3D[2]); - ofs_device << msg << std::endl; - - sprintf(msg, " Total amount of constant memory: %zu bytes\n", - deviceProp.totalConstMem); - ofs_device << msg << std::endl; - sprintf(msg, " Total amount of shared memory per block: %zu bytes\n", - deviceProp.sharedMemPerBlock); - ofs_device << msg << std::endl; - sprintf(msg, " Total number of registers available per block: %d\n", - deviceProp.regsPerBlock); - ofs_device << msg << std::endl; - sprintf(msg, " Warp size: %d\n", - deviceProp.warpSize); - ofs_device << msg << std::endl; - sprintf(msg, " Maximum number of threads per multiprocessor: %d\n", - deviceProp.maxThreadsPerMultiProcessor); - ofs_device << msg << std::endl; - sprintf(msg, " Maximum number of threads per block: %d\n", - deviceProp.maxThreadsPerBlock); - ofs_device << msg << std::endl; - sprintf(msg, " Max dimension size of a thread block (x,y,z): (%d, %d, %d)\n", - deviceProp.maxThreadsDim[0], deviceProp.maxThreadsDim[1], - deviceProp.maxThreadsDim[2]); - ofs_device << msg << std::endl; - sprintf(msg, " Max dimension size of a grid size (x,y,z): (%d, %d, %d)\n", - deviceProp.maxGridSize[0], deviceProp.maxGridSize[1], - deviceProp.maxGridSize[2]); - ofs_device << msg << std::endl; - sprintf(msg, " Maximum memory pitch: %zu bytes\n", - deviceProp.memPitch); - ofs_device << msg << std::endl; - sprintf(msg, " Texture alignment: %zu bytes\n", - deviceProp.textureAlignment); - ofs_device << msg << std::endl; - sprintf(msg, " Run time limit on kernels: %s\n", - deviceProp.kernelExecTimeoutEnabled ? "Yes" : "No"); - ofs_device << msg << std::endl; - sprintf(msg, " Integrated GPU sharing Host Memory: %s\n", - deviceProp.integrated ? "Yes" : "No"); - ofs_device << msg << std::endl; - sprintf(msg, " Support host page-locked memory mapping: %s\n", - deviceProp.canMapHostMemory ? "Yes" : "No"); - ofs_device << msg << std::endl; - sprintf(msg, " Device has ECC support: %s\n", - deviceProp.ECCEnabled ? "Enabled" : "Disabled"); - ofs_device << msg << std::endl; - sprintf(msg, " Device supports Managed Memory: %s\n", - deviceProp.managedMemory ? "Yes" : "No"); - ofs_device << msg << std::endl; - sprintf(msg, " Supports Cooperative Kernel Launch: %s\n", - deviceProp.cooperativeLaunch ? "Yes" : "No"); - ofs_device << msg << std::endl; - sprintf(msg, " Supports MultiDevice Co-op Kernel Launch: %s\n", - deviceProp.cooperativeMultiDeviceLaunch ? "Yes" : "No"); - ofs_device << msg << std::endl; - sprintf(msg, - " Device PCI Domain ID / Bus ID / location ID: %d / %d / %d\n", - deviceProp.pciDomainID, deviceProp.pciBusID, deviceProp.pciDeviceID); - ofs_device << msg << std::endl; - const char *sComputeMode[] = { - "Default (multiple host threads can use ::hipSetDevice() with device " - "simultaneously)", - "Exclusive (only one host thread in one process is able to use " - "::hipSetDevice() with this device)", - "Prohibited (no host thread can use ::hipSetDevice() with this " - "device)", - "Exclusive Process (many threads in one process is able to use " - "::hipSetDevice() with this device)", - "Unknown", - NULL}; - sprintf(msg, " Compute Mode:\n"); - ofs_device << msg << std::endl; - ofs_device << " " << sComputeMode[deviceProp.computeMode] << std::endl - << std::endl; - - // If there are 2 or more GPUs, query to determine whether RDMA is supported - if (deviceCount >= 2) { - hipDeviceProp_t prop[64]; - int gpuid[64]; // we want to find the first two GPUs that can support P2P - int gpu_p2p_count = 0; - - for (int i = 0; i < deviceCount; i++) { - hipErrcheck(hipGetDeviceProperties(&prop[i], i)); - - // Only boards based on Fermi or later can support P2P - if (prop[i].major >= 2) { - // This is an array of P2P capable GPUs - gpuid[gpu_p2p_count++] = i; - } + hipError_t err = hipGetDeviceCount(&device_count_); + if (err != hipSuccess || device_count_ <= 0) { + ModuleBase::WARNING_QUIT("DeviceContext::init", + "No ROCm-capable GPU device found! Please check your hardware/drivers."); + return; } - // Show all the combinations of support P2P GPUs - int can_access_peer; - - if (gpu_p2p_count >= 2) { - for (int i = 0; i < gpu_p2p_count; i++) { - for (int j = 0; j < gpu_p2p_count; j++) { - if (gpuid[i] == gpuid[j]) { - continue; - } - hipErrcheck( - hipDeviceCanAccessPeer(&can_access_peer, gpuid[i], gpuid[j])); - sprintf(msg, "> Peer access from %s (GPU%d) -> %s (GPU%d) : %s\n", - prop[gpuid[i]].name, gpuid[i], prop[gpuid[j]].name, gpuid[j], - can_access_peer ? "Yes" : "No"); - ofs_device << msg << std::endl; - } - } + // Bind to GPU device based on local rank + device_id_ = local_rank_ % device_count_; + err = hipSetDevice(device_id_); + if (err != hipSuccess) { + ModuleBase::WARNING_QUIT("DeviceContext::init", + "hipSetDevice failed! Device ID: " + std::to_string(device_id_)); + return; } - } - - // csv masterlog info - // ***************************** - // exe and CUDA driver name - std::string sProfileString = "deviceQuery, CUDA Driver = CUDART"; - char cTemp[16]; - - // driver version - sProfileString += ", CUDA Driver Version = "; - - snprintf(cTemp, sizeof(cTemp), "%d.%d", driverVersion / 1000, - (driverVersion % 100) / 10); - sProfileString += cTemp; - - // Runtime version - sProfileString += ", CUDA Runtime Version = "; - snprintf(cTemp, sizeof(cTemp), "%d.%d", runtimeVersion / 1000, - (runtimeVersion % 100) / 10); - sProfileString += cTemp; - - // Device count - sProfileString += ", NumDevs = "; - snprintf(cTemp, sizeof(cTemp), "%d", deviceCount); - sProfileString += cTemp; - sProfileString += "\n"; - - ofs_device << sProfileString.c_str() << std::endl; - is_init = true; - ofs_device << "End of device informations." << std::endl << std::endl; -} +#endif -template <> -void record_device_memory( - const base_device::DEVICE_GPU *ctx, std::ofstream &ofs_device, - std::string str, size_t size) { - ofs_device << "Allocate " << static_cast(size) / 8 / 1024 / 1024 - << " \tMB device memory\t" - << "from " << str << std::endl - << std::endl; -} + gpu_enabled_ = true; + initialized_ = true; +#else + // No GPU support compiled in + initialized_ = true; + gpu_enabled_ = false; + device_id_ = -1; + device_count_ = 0; #endif +} -} // end of namespace information } // end of namespace base_device diff --git a/source/source_base/module_device/device.h b/source/source_base/module_device/device.h index 2c4a16f303..395d8c470d 100644 --- a/source/source_base/module_device/device.h +++ b/source/source_base/module_device/device.h @@ -2,7 +2,9 @@ #define MODULE_DEVICE_H_ #include "types.h" +#include "device_helpers.h" #include +#include #ifdef __MPI #include "mpi.h" @@ -11,36 +13,32 @@ namespace base_device { -// struct CPU; -// struct GPU; - -// enum AbacusDevice_t -// { -// UnKnown, -// CpuDevice, -// GpuDevice -// }; - -template -base_device::AbacusDevice_t get_device_type(const Device* dev); - -template -std::string get_current_precision(const T* var); - namespace information { /** - * @brief Get the device info object + * @brief Get the device name * for source_esolver */ -std::string get_device_info(std::string device_flag); +std::string get_device_name(std::string device_flag); /** - * @brief Get the device kpar object - * for source_io GlobalV::KPAR + * @brief Get the device number + * for source_esolver */ -int get_device_kpar(const int& kpar, const int& bndpar); +int get_device_num(std::string device_flag); + +/** + * @brief Output the device information + * for source_esolver + */ +void output_device_info(std::ostream& output); + +/** + * @brief Safely probes for GPU availability without exiting on error. + * @return True if at least one GPU is found and usable, false otherwise. + */ +bool probe_gpu_availability(); /** * @brief Get the device flag object @@ -51,20 +49,11 @@ std::string get_device_flag(const std::string& device, #if __MPI /** - * @brief Get the rank of current node - * Note that GPU can only be binded with CPU in the same node - * - * @return int + * @brief Get the local rank within the node using MPI_COMM_TYPE_SHARED + * @param mpi_comm MPI communicator (default: MPI_COMM_WORLD) + * @return Local rank within the node */ -int get_node_rank(); int get_node_rank_with_mpi_shared(const MPI_Comm mpi_comm = MPI_COMM_WORLD); -int stringCmp(const void* a, const void* b); - -#ifdef __CUDA - -int set_device_by_rank(const MPI_Comm mpi_comm = MPI_COMM_WORLD); -#endif - #endif template @@ -79,27 +68,141 @@ void record_device_memory(const Device* dev, std::ofstream& ofs_device, std::str return; } +#if defined(__CUDA) || defined(__ROCM) +template <> +void print_device_info(const base_device::DEVICE_GPU *ctx, std::ofstream &ofs_device); + +template <> +void record_device_memory(const base_device::DEVICE_GPU* dev, std::ofstream& ofs_device, std::string str, size_t size); +#endif + } // end of namespace information -} // end of namespace base_device /** - * @brief for compatibility with __CUDA_ARCH__ 600 and earlier + * @brief Singleton class to manage GPU device context and initialization. + * + * This class provides a centralized way to: + * 1. Initialize GPU device binding (only once) + * 2. Query GPU device state (device_id, device_count, etc.) + * 3. Ensure thread-safe initialization * + * Usage: + * // Initialize (call once after MPI init and after determining device=gpu) + * DeviceContext::instance().init(MPI_COMM_WORLD); + * + * // Query device info + * int dev_id = DeviceContext::instance().get_device_id(); + */ +class DeviceContext { +public: + /** + * @brief Get the singleton instance of DeviceContext + * @return Reference to the singleton instance + */ + static DeviceContext& instance(); + + /** + * @brief Initialize GPU device binding. + * + * This function: + * 1. Gets the local rank within the node using MPI_COMM_TYPE_SHARED (MPI_COMM_WORLD) + * 2. Queries the number of available GPU devices + * 3. Binds the current process to a GPU device (local_rank % device_count) + * + * @note This function should only be called once. Subsequent calls are no-ops. + * @note This function should only be called when device=gpu is confirmed. + * @note In MPI builds, uses MPI_COMM_WORLD internally. + */ + void init(); + + /** + * @brief Check if the DeviceContext has been initialized + * @return true if init() has been called successfully + */ + bool is_initialized() const { return initialized_; } + + /** + * @brief Check if GPU is enabled and available + * @return true if GPU device is bound and usable + */ + bool is_gpu_enabled() const { return gpu_enabled_; } + + /** + * @brief Get the bound GPU device ID + * @return Device ID (0-based), or -1 if not initialized + */ + int get_device_id() const { return device_id_; } + + /** + * @brief Get the total number of GPU devices on this node + * @return Number of GPU devices, or 0 if not initialized + */ + int get_device_count() const { return device_count_; } + + /** + * @brief Get the local MPI rank within the node + * @return Local rank, or 0 if not initialized + */ + int get_local_rank() const { return local_rank_; } + + /** + * @brief Set the device type (CpuDevice, GpuDevice, or DspDevice) + * @param type The device type + */ + void set_device_type(AbacusDevice_t type) { device_type_ = type; } + + /** + * @brief Get the device type + * @return AbacusDevice_t The device type + */ + AbacusDevice_t get_device_type() const { return device_type_; } + + /** + * @brief Check if the device is CPU + * @return true if the device is CPU + */ + bool is_cpu() const { return device_type_ == CpuDevice; } + + /** + * @brief Check if the device is GPU + * @return true if the device is GPU + */ + bool is_gpu() const { return device_type_ == GpuDevice; } + + /** + * @brief Check if the device is DSP + * @return true if the device is DSP + */ + bool is_dsp() const { return device_type_ == DspDevice; } + + // Disable copy and assignment + DeviceContext(const DeviceContext&) = delete; + DeviceContext& operator=(const DeviceContext&) = delete; + +private: + DeviceContext() = default; + ~DeviceContext() = default; + + bool initialized_ = false; + bool gpu_enabled_ = false; + int device_id_ = -1; + int device_count_ = 0; + int local_rank_ = 0; + AbacusDevice_t device_type_ = CpuDevice; + + std::mutex init_mutex_; +}; + +/** + * @brief Get the device type enum from DeviceContext (runtime version). + * @param ctx Pointer to DeviceContext + * @return AbacusDevice_t enum value */ -#if defined(__CUDA_ARCH__) && __CUDA_ARCH__ < 600 && !defined(__CUDA_ON_DCU) -static __inline__ __device__ double atomicAdd(double* address, double val) +inline AbacusDevice_t get_device_type(const DeviceContext* ctx) { - unsigned long long int* address_as_ull = (unsigned long long int*)address; - unsigned long long int old = *address_as_ull, assumed; - do - { - assumed = old; - old = atomicCAS(address_as_ull, assumed, __double_as_longlong(val + __longlong_as_double(assumed))); - // Note: uses integer comparison to avoid hang in case of NaN (since NaN != - // NaN) } while (assumed != old); - } while (assumed != old); - return __longlong_as_double(old); + return ctx->get_device_type(); } -#endif -#endif // MODULE_DEVICE_H_ \ No newline at end of file +} // end of namespace base_device + +#endif // MODULE_DEVICE_H_ diff --git a/source/source_base/module_device/device_check.h b/source/source_base/module_device/device_check.h new file mode 100644 index 0000000000..f649676001 --- /dev/null +++ b/source/source_base/module_device/device_check.h @@ -0,0 +1,472 @@ +#ifndef DEVICE_CHECK_H +#define DEVICE_CHECK_H + +#include +#include + +#ifdef __CUDA +#include "cublas_v2.h" +#include "cufft.h" +#include "cusolverDn.h" +#include + +static const char* _cublasGetErrorString(cublasStatus_t error) +{ + switch (error) + { + case CUBLAS_STATUS_SUCCESS: + return "CUBLAS_STATUS_SUCCESS"; + case CUBLAS_STATUS_NOT_INITIALIZED: + return "CUBLAS_STATUS_NOT_INITIALIZED"; + case CUBLAS_STATUS_ALLOC_FAILED: + return "CUBLAS_STATUS_ALLOC_FAILED"; + case CUBLAS_STATUS_INVALID_VALUE: + return "CUBLAS_STATUS_INVALID_VALUE"; + case CUBLAS_STATUS_ARCH_MISMATCH: + return "CUBLAS_STATUS_ARCH_MISMATCH"; + case CUBLAS_STATUS_MAPPING_ERROR: + return "CUBLAS_STATUS_MAPPING_ERROR"; + case CUBLAS_STATUS_EXECUTION_FAILED: + return "CUBLAS_STATUS_EXECUTION_FAILED"; + case CUBLAS_STATUS_INTERNAL_ERROR: + return "CUBLAS_STATUS_INTERNAL_ERROR"; + case CUBLAS_STATUS_NOT_SUPPORTED: + return "CUBLAS_STATUS_NOT_SUPPORTED"; + case CUBLAS_STATUS_LICENSE_ERROR: + return "CUBLAS_STATUS_LICENSE_ERROR"; + default: + return ""; + } +} + +static const char* _cusolverGetErrorString(cusolverStatus_t error) +{ + switch (error) + { + case CUSOLVER_STATUS_SUCCESS: + return "CUSOLVER_STATUS_SUCCESS"; + case CUSOLVER_STATUS_NOT_INITIALIZED: + return "CUSOLVER_STATUS_NOT_INITIALIZED"; + case CUSOLVER_STATUS_ALLOC_FAILED: + return "CUSOLVER_STATUS_ALLOC_FAILED"; + case CUSOLVER_STATUS_INVALID_VALUE: + return "CUSOLVER_STATUS_INVALID_VALUE"; + case CUSOLVER_STATUS_ARCH_MISMATCH: + return "CUSOLVER_STATUS_ARCH_MISMATCH"; + case CUSOLVER_STATUS_MAPPING_ERROR: + return "CUSOLVER_STATUS_MAPPING_ERROR"; + case CUSOLVER_STATUS_EXECUTION_FAILED: + return "CUSOLVER_STATUS_EXECUTION_FAILED"; + case CUSOLVER_STATUS_INTERNAL_ERROR: + return "CUSOLVER_STATUS_INTERNAL_ERROR"; + case CUSOLVER_STATUS_MATRIX_TYPE_NOT_SUPPORTED: + return "CUSOLVER_STATUS_MATRIX_TYPE_NOT_SUPPORTED"; + case CUSOLVER_STATUS_NOT_SUPPORTED: + return "CUSOLVER_STATUS_NOT_SUPPORTED"; + case CUSOLVER_STATUS_ZERO_PIVOT: + return "CUSOLVER_STATUS_ZERO_PIVOT"; + case CUSOLVER_STATUS_INVALID_LICENSE: + return "CUSOLVER_STATUS_INVALID_LICENSE"; + case CUSOLVER_STATUS_IRS_PARAMS_NOT_INITIALIZED: + return "CUSOLVER_STATUS_IRS_PARAMS_NOT_INITIALIZED"; + case CUSOLVER_STATUS_IRS_PARAMS_INVALID: + return "CUSOLVER_STATUS_IRS_PARAMS_INVALID"; + case CUSOLVER_STATUS_IRS_PARAMS_INVALID_PREC: + return "CUSOLVER_STATUS_IRS_PARAMS_INVALID_PREC"; + case CUSOLVER_STATUS_IRS_PARAMS_INVALID_REFINE: + return "CUSOLVER_STATUS_IRS_PARAMS_INVALID_REFINE"; + case CUSOLVER_STATUS_IRS_PARAMS_INVALID_MAXITER: + return "CUSOLVER_STATUS_IRS_PARAMS_INVALID_MAXITER"; + case CUSOLVER_STATUS_IRS_INTERNAL_ERROR: + return "CUSOLVER_STATUS_IRS_INTERNAL_ERROR"; + case CUSOLVER_STATUS_IRS_NOT_SUPPORTED: + return "CUSOLVER_STATUS_IRS_NOT_SUPPORTED"; + case CUSOLVER_STATUS_IRS_OUT_OF_RANGE: + return "CUSOLVER_STATUS_IRS_OUT_OF_RANGE"; + case CUSOLVER_STATUS_IRS_NRHS_NOT_SUPPORTED_FOR_REFINE_GMRES: + return "CUSOLVER_STATUS_IRS_NRHS_NOT_SUPPORTED_FOR_REFINE_GMRES"; + case CUSOLVER_STATUS_IRS_INFOS_NOT_INITIALIZED: + return "CUSOLVER_STATUS_IRS_INFOS_NOT_INITIALIZED"; + case CUSOLVER_STATUS_IRS_INFOS_NOT_DESTROYED: + return "CUSOLVER_STATUS_IRS_INFOS_NOT_DESTROYED"; + case CUSOLVER_STATUS_IRS_MATRIX_SINGULAR: + return "CUSOLVER_STATUS_IRS_MATRIX_SINGULAR"; + case CUSOLVER_STATUS_INVALID_WORKSPACE: + return "CUSOLVER_STATUS_INVALID_WORKSPACE"; + default: + return ""; + } +} + +static const char* _cufftGetErrorString(cufftResult_t error) +{ + switch (error) + { + case CUFFT_SUCCESS: + return "CUFFT_SUCCESS"; + case CUFFT_INVALID_PLAN: + return "CUFFT_INVALID_PLAN"; + case CUFFT_ALLOC_FAILED: + return "CUFFT_ALLOC_FAILED"; + case CUFFT_INVALID_TYPE: + return "CUFFT_INVALID_TYPE"; + case CUFFT_INVALID_VALUE: + return "CUFFT_INVALID_VALUE"; + case CUFFT_INTERNAL_ERROR: + return "CUFFT_INTERNAL_ERROR"; + case CUFFT_EXEC_FAILED: + return "CUFFT_EXEC_FAILED"; + case CUFFT_SETUP_FAILED: + return "CUFFT_SETUP_FAILED"; + case CUFFT_INVALID_SIZE: + return "CUFFT_INVALID_SIZE"; + case CUFFT_UNALIGNED_DATA: + return "CUFFT_UNALIGNED_DATA"; + case CUFFT_INVALID_DEVICE: + return "CUFFT_INVALID_DEVICE"; + case CUFFT_NO_WORKSPACE: + return "CUFFT_NO_WORKSPACE"; + case CUFFT_NOT_IMPLEMENTED: + return "CUFFT_NOT_IMPLEMENTED"; + case CUFFT_NOT_SUPPORTED: + return "CUFFT_NOT_SUPPORTED"; +#if defined(CUDA_VERSION) && CUDA_VERSION < 13000 + case CUFFT_INCOMPLETE_PARAMETER_LIST: + return "CUFFT_INCOMPLETE_PARAMETER_LIST"; + case CUFFT_PARSE_ERROR: + return "CUFFT_PARSE_ERROR"; + case CUFFT_LICENSE_ERROR: + return "CUFFT_LICENSE_ERROR"; +#endif + default: + return ""; + } +} + +#define CHECK_CUDA(func) \ + do \ + { \ + cudaError_t status = (func); \ + if (status != cudaSuccess) \ + { \ + fprintf(stderr, "In File %s : CUDA API failed at line %d with error: %s (%d)\n", __FILE__, __LINE__, \ + cudaGetErrorString(status), status); \ + exit(EXIT_FAILURE); \ + } \ + } while (0) + +#define CHECK_CUBLAS(func) \ + do \ + { \ + cublasStatus_t status = (func); \ + if (status != CUBLAS_STATUS_SUCCESS) \ + { \ + fprintf(stderr, "In File %s : CUBLAS API failed at line %d with error: %s (%d)\n", __FILE__, __LINE__, \ + _cublasGetErrorString(status), status); \ + exit(EXIT_FAILURE); \ + } \ + } while (0) + +#define CHECK_CUSOLVER(func) \ + do \ + { \ + cusolverStatus_t status = (func); \ + if (status != CUSOLVER_STATUS_SUCCESS) \ + { \ + fprintf(stderr, "In File %s : CUSOLVER API failed at line %d with error: %s (%d)\n", __FILE__, __LINE__, \ + _cusolverGetErrorString(status), status); \ + exit(EXIT_FAILURE); \ + } \ + } while (0) + +#define CHECK_CUFFT(func) \ + do \ + { \ + cufftResult_t status = (func); \ + if (status != CUFFT_SUCCESS) \ + { \ + fprintf(stderr, "In File %s : CUFFT API failed at line %d with error: %s (%d)\n", __FILE__, __LINE__, \ + _cufftGetErrorString(status), status); \ + exit(EXIT_FAILURE); \ + } \ + } while (0) + +#define CHECK_LAST_CUDA_ERROR(msg) \ + do \ + { \ + cudaError_t status = cudaGetLastError(); \ + if (status != cudaSuccess) \ + { \ + fprintf(stderr, "%s(%d) : CUDA error : %s : (%d) %s.\n", __FILE__, __LINE__, msg, \ + static_cast(status), cudaGetErrorString(status)); \ + exit(EXIT_FAILURE); \ + } \ + } while (0) + +#ifdef __DEBUG +#define CHECK_CUDA_SYNC() \ + do \ + { \ + cudaError_t status = cudaDeviceSynchronize(); \ + if (status != cudaSuccess) \ + { \ + fprintf(stderr, "In File %s : CUDA sync failed at line %d with error: %s (%d)\n", __FILE__, __LINE__, \ + cudaGetErrorString(status), status); \ + exit(EXIT_FAILURE); \ + } \ + } while (0) +#else +#define CHECK_CUDA_SYNC() do {} while (0) +#endif + +// cuSOLVER MP support +#ifdef __CUSOLVERMP +#include + +#ifdef __USE_CAL +#include + +static const char* _calGetErrorString(calError_t error) +{ + switch (error) + { + case CAL_OK: + return "CAL_OK"; + case CAL_ERROR: + return "CAL_ERROR"; + case CAL_ERROR_INVALID_PARAMETER: + return "CAL_ERROR_INVALID_PARAMETER"; + case CAL_ERROR_INTERNAL: + return "CAL_ERROR_INTERNAL"; + case CAL_ERROR_CUDA: + return "CAL_ERROR_CUDA"; + case CAL_ERROR_UCC: + return "CAL_ERROR_UCC"; + case CAL_ERROR_NOT_SUPPORTED: + return "CAL_ERROR_NOT_SUPPORTED"; + case CAL_ERROR_INPROGRESS: + return "CAL_ERROR_INPROGRESS"; + default: + return ""; + } +} + +#define CHECK_CAL(func) \ + do \ + { \ + calError_t status = (func); \ + if (status != CAL_OK) \ + { \ + fprintf(stderr, "In File %s : CAL API failed at line %d with error: %s (%d)\n", __FILE__, __LINE__, \ + _calGetErrorString(status), status); \ + exit(EXIT_FAILURE); \ + } \ + } while (0) +#else // !__USE_CAL (use NCCL) +#include + +#define CHECK_NCCL(func) \ + do \ + { \ + ncclResult_t status = (func); \ + if (status != ncclSuccess) \ + { \ + fprintf(stderr, "In File %s : NCCL API failed at line %d with error: %s (%d)\n", __FILE__, __LINE__, \ + ncclGetErrorString(status), status); \ + exit(EXIT_FAILURE); \ + } \ + } while (0) +#endif // __USE_CAL + +#endif // __CUSOLVERMP + +#endif // __CUDA + +#ifdef __ROCM +#include +#include +#include +#include + +static const char* _hipblasGetErrorString(hipblasStatus_t error) +{ + switch (error) + { + case HIPBLAS_STATUS_SUCCESS: + return "HIPBLAS_STATUS_SUCCESS"; + case HIPBLAS_STATUS_NOT_INITIALIZED: + return "HIPBLAS_STATUS_NOT_INITIALIZED"; + case HIPBLAS_STATUS_ALLOC_FAILED: + return "HIPBLAS_STATUS_ALLOC_FAILED"; + case HIPBLAS_STATUS_INVALID_VALUE: + return "HIPBLAS_STATUS_INVALID_VALUE"; + case HIPBLAS_STATUS_ARCH_MISMATCH: + return "HIPBLAS_STATUS_ARCH_MISMATCH"; + case HIPBLAS_STATUS_MAPPING_ERROR: + return "HIPBLAS_STATUS_MAPPING_ERROR"; + case HIPBLAS_STATUS_EXECUTION_FAILED: + return "HIPBLAS_STATUS_EXECUTION_FAILED"; + case HIPBLAS_STATUS_INTERNAL_ERROR: + return "HIPBLAS_STATUS_INTERNAL_ERROR"; + case HIPBLAS_STATUS_NOT_SUPPORTED: + return "HIPBLAS_STATUS_NOT_SUPPORTED"; + case HIPBLAS_STATUS_HANDLE_IS_NULLPTR: + return "HIPBLAS_STATUS_HANDLE_IS_NULLPTR"; + default: + return ""; + } +} + +static const char* _hipfftGetErrorString(hipfftResult_t error) +{ + switch (error) + { + case HIPFFT_SUCCESS: + return "HIPFFT_SUCCESS"; + case HIPFFT_INVALID_PLAN: + return "HIPFFT_INVALID_PLAN"; + case HIPFFT_ALLOC_FAILED: + return "HIPFFT_ALLOC_FAILED"; + case HIPFFT_INVALID_TYPE: + return "HIPFFT_INVALID_TYPE"; + case HIPFFT_INVALID_VALUE: + return "HIPFFT_INVALID_VALUE"; + case HIPFFT_INTERNAL_ERROR: + return "HIPFFT_INTERNAL_ERROR"; + case HIPFFT_EXEC_FAILED: + return "HIPFFT_EXEC_FAILED"; + case HIPFFT_SETUP_FAILED: + return "HIPFFT_SETUP_FAILED"; + case HIPFFT_INVALID_SIZE: + return "HIPFFT_INVALID_SIZE"; + case HIPFFT_UNALIGNED_DATA: + return "HIPFFT_UNALIGNED_DATA"; + case HIPFFT_INCOMPLETE_PARAMETER_LIST: + return "HIPFFT_INCOMPLETE_PARAMETER_LIST"; + case HIPFFT_INVALID_DEVICE: + return "HIPFFT_INVALID_DEVICE"; + case HIPFFT_PARSE_ERROR: + return "HIPFFT_PARSE_ERROR"; + case HIPFFT_NO_WORKSPACE: + return "HIPFFT_NO_WORKSPACE"; + case HIPFFT_NOT_IMPLEMENTED: + return "HIPFFT_NOT_IMPLEMENTED"; + case HIPFFT_NOT_SUPPORTED: + return "HIPFFT_NOT_SUPPORTED"; + default: + return ""; + } +} + +static const char* _hipsolverGetErrorString(hipsolverStatus_t error) +{ + switch (error) + { + case HIPSOLVER_STATUS_SUCCESS: + return "HIPSOLVER_STATUS_SUCCESS"; + case HIPSOLVER_STATUS_NOT_INITIALIZED: + return "HIPSOLVER_STATUS_NOT_INITIALIZED"; + case HIPSOLVER_STATUS_ALLOC_FAILED: + return "HIPSOLVER_STATUS_ALLOC_FAILED"; + case HIPSOLVER_STATUS_INVALID_VALUE: + return "HIPSOLVER_STATUS_INVALID_VALUE"; + case HIPSOLVER_STATUS_MAPPING_ERROR: + return "HIPSOLVER_STATUS_MAPPING_ERROR"; + case HIPSOLVER_STATUS_EXECUTION_FAILED: + return "HIPSOLVER_STATUS_EXECUTION_FAILED"; + case HIPSOLVER_STATUS_INTERNAL_ERROR: + return "HIPSOLVER_STATUS_INTERNAL_ERROR"; + case HIPSOLVER_STATUS_NOT_SUPPORTED: + return "HIPSOLVER_STATUS_NOT_SUPPORTED"; + case HIPSOLVER_STATUS_ARCH_MISMATCH: + return "HIPSOLVER_STATUS_ARCH_MISMATCH"; + case HIPSOLVER_STATUS_HANDLE_IS_NULLPTR: + return "HIPSOLVER_STATUS_HANDLE_IS_NULLPTR"; + case HIPSOLVER_STATUS_INVALID_ENUM: + return "HIPSOLVER_STATUS_INVALID_ENUM"; + case HIPSOLVER_STATUS_UNKNOWN: + return "HIPSOLVER_STATUS_UNKNOWN"; + default: + return ""; + } +} + +#define CHECK_CUDA(func) \ + do \ + { \ + hipError_t status = (func); \ + if (status != hipSuccess) \ + { \ + fprintf(stderr, "In File %s : HIP API failed at line %d with error: %s (%d)\n", __FILE__, __LINE__, \ + hipGetErrorString(status), status); \ + exit(EXIT_FAILURE); \ + } \ + } while (0) + +#define CHECK_CUBLAS(func) \ + do \ + { \ + hipblasStatus_t status = (func); \ + if (status != HIPBLAS_STATUS_SUCCESS) \ + { \ + fprintf(stderr, "In File %s : HIPBLAS API failed at line %d with error: %s (%d)\n", __FILE__, __LINE__, \ + _hipblasGetErrorString(status), status); \ + exit(EXIT_FAILURE); \ + } \ + } while (0) + +#define CHECK_CUSOLVER(func) \ + do \ + { \ + hipsolverStatus_t status = (func); \ + if (status != HIPSOLVER_STATUS_SUCCESS) \ + { \ + fprintf(stderr, "In File %s : HIPSOLVER API failed at line %d with error: %s (%d)\n", __FILE__, __LINE__, \ + _hipsolverGetErrorString(status), status); \ + exit(EXIT_FAILURE); \ + } \ + } while (0) + +#define CHECK_CUFFT(func) \ + do \ + { \ + hipfftResult_t status = (func); \ + if (status != HIPFFT_SUCCESS) \ + { \ + fprintf(stderr, "In File %s : HIPFFT API failed at line %d with error: %s (%d)\n", __FILE__, __LINE__, \ + _hipfftGetErrorString(status), status); \ + exit(EXIT_FAILURE); \ + } \ + } while (0) + +#define CHECK_LAST_CUDA_ERROR(msg) \ + do \ + { \ + hipError_t status = hipGetLastError(); \ + if (status != hipSuccess) \ + { \ + fprintf(stderr, "%s(%d) : HIP error : %s : (%d) %s.\n", __FILE__, __LINE__, msg, \ + static_cast(status), hipGetErrorString(status)); \ + exit(EXIT_FAILURE); \ + } \ + } while (0) + +#ifdef __DEBUG +#define CHECK_CUDA_SYNC() \ + do \ + { \ + hipError_t status = hipDeviceSynchronize(); \ + if (status != hipSuccess) \ + { \ + fprintf(stderr, "In File %s : HIP sync failed at line %d with error: %s (%d)\n", __FILE__, __LINE__, \ + hipGetErrorString(status), status); \ + exit(EXIT_FAILURE); \ + } \ + } while (0) +#else +#define CHECK_CUDA_SYNC() do {} while (0) +#endif + +#endif // __ROCM + +#endif // DEVICE_CHECK_H diff --git a/source/source_base/module_device/device_helpers.cpp b/source/source_base/module_device/device_helpers.cpp new file mode 100644 index 0000000000..0b5d5a1693 --- /dev/null +++ b/source/source_base/module_device/device_helpers.cpp @@ -0,0 +1,31 @@ +#include "device_helpers.h" + +namespace base_device +{ + +// Precision specializations +template <> +std::string get_current_precision(const float* var) +{ + return "single"; +} + +template <> +std::string get_current_precision(const double* var) +{ + return "double"; +} + +template <> +std::string get_current_precision>(const std::complex* var) +{ + return "single"; +} + +template <> +std::string get_current_precision>(const std::complex* var) +{ + return "double"; +} + +} // end of namespace base_device diff --git a/source/source_base/module_device/device_helpers.h b/source/source_base/module_device/device_helpers.h new file mode 100644 index 0000000000..2870eea2d7 --- /dev/null +++ b/source/source_base/module_device/device_helpers.h @@ -0,0 +1,70 @@ +#ifndef DEVICE_HELPERS_H_ +#define DEVICE_HELPERS_H_ + +/** + * @file device_helpers.h + * @brief Type trait templates for device and precision detection. + * + * This header provides template declarations for: + * - get_device_type() - returns device type enum + * - get_current_precision() - returns "single" or "double" + */ + +#include "types.h" +#include +#include +#include + +namespace base_device +{ + +// Forward declaration +class DeviceContext; + +/** + * @brief Get the device type enum from DeviceContext (runtime version). + * @param ctx Pointer to DeviceContext + * @return AbacusDevice_t enum value + */ +inline AbacusDevice_t get_device_type(const DeviceContext* ctx); + +/** + * @brief Get the device type enum for a given device type (compile-time version). + * @tparam Device The device type (DEVICE_CPU or DEVICE_GPU) + * @param dev Pointer to device (used for template deduction) + * @return AbacusDevice_t enum value + */ +template +AbacusDevice_t get_device_type(const Device* dev) +{ + if (std::is_same::value) return CpuDevice; + else if (std::is_same::value) return GpuDevice; + else if (std::is_same::value) return DspDevice; + else return UnKnown; +} + +/** + * @brief Get the precision string for a given numeric type. + * @tparam T The numeric type (float, double, std::complex, std::complex) + * @param var Pointer to variable (used for template deduction) + * @return "single" or "double" + */ +template +std::string get_current_precision(const T* var); + +// Template specialization declarations +template <> +std::string get_current_precision(const float* var); + +template <> +std::string get_current_precision(const double* var); + +template <> +std::string get_current_precision>(const std::complex* var); + +template <> +std::string get_current_precision>(const std::complex* var); + +} // end of namespace base_device + +#endif // DEVICE_HELPERS_H_ diff --git a/source/source_base/module_device/gpu_runtime.h b/source/source_base/module_device/gpu_runtime.h new file mode 100644 index 0000000000..ce759c0d98 --- /dev/null +++ b/source/source_base/module_device/gpu_runtime.h @@ -0,0 +1,71 @@ +#ifndef GPU_RUNTIME_H_ +#define GPU_RUNTIME_H_ + +/** + * @file gpu_runtime.h + * @brief Unified CUDA/ROCm API macros for portable GPU code. + * + * This header provides macro abstraction for CUDA/ROCm APIs, allowing + * a single implementation to work with both CUDA and ROCm backends. + * + * Usage: + * #include "gpu_runtime.h" + * gpuError_t err = gpuGetDeviceCount(&count); + * if (err != gpuSuccess) { ... } + */ + +#if defined(__CUDA) + +#include + +// Error handling +#define gpuError_t cudaError_t +#define gpuSuccess cudaSuccess +#define gpuGetErrorString cudaGetErrorString + +// Device management +#define gpuGetDeviceCount cudaGetDeviceCount +#define gpuGetDevice cudaGetDevice +#define gpuSetDevice cudaSetDevice +#define gpuGetDeviceProperties cudaGetDeviceProperties +#define gpuDeviceProp_t cudaDeviceProp + +// Version info +#define gpuDriverGetVersion cudaDriverGetVersion +#define gpuRuntimeGetVersion cudaRuntimeGetVersion + +// Peer access +#define gpuDeviceCanAccessPeer cudaDeviceCanAccessPeer + +// Error check macro +#define gpuErrcheck CHECK_CUDA + +#elif defined(__ROCM) + +#include + +// Error handling +#define gpuError_t hipError_t +#define gpuSuccess hipSuccess +#define gpuGetErrorString hipGetErrorString + +// Device management +#define gpuGetDeviceCount hipGetDeviceCount +#define gpuGetDevice hipGetDevice +#define gpuSetDevice hipSetDevice +#define gpuGetDeviceProperties hipGetDeviceProperties +#define gpuDeviceProp_t hipDeviceProp_t + +// Version info +#define gpuDriverGetVersion hipDriverGetVersion +#define gpuRuntimeGetVersion hipRuntimeGetVersion + +// Peer access +#define gpuDeviceCanAccessPeer hipDeviceCanAccessPeer + +// Error check macro +#define gpuErrcheck CHECK_CUDA + +#endif // __CUDA / __ROCM + +#endif // GPU_RUNTIME_H_ diff --git a/source/source_base/module_device/kernel_compat.h b/source/source_base/module_device/kernel_compat.h new file mode 100644 index 0000000000..13c0f11c61 --- /dev/null +++ b/source/source_base/module_device/kernel_compat.h @@ -0,0 +1,33 @@ +#ifndef KERNEL_COMPAT_H_ +#define KERNEL_COMPAT_H_ + +/** + * @file kernel_compat.h + * @brief Device-side kernel compatibility polyfills for older GPU architectures. + * + * This is a lightweight header (no heavy includes) for GPU kernel device-side + * compatibility code. Include this header in .cu/.hip.cu files that need + * legacy GPU support. + * + * Note: The existing cuda_compat.h is for host-side CUDA compatibility + * (NVTX, deprecated APIs, cuFFT) and includes heavy headers, so we keep + * this separate. + */ + +// atomicAdd for double precision - required for CUDA architectures < 600 (pre-Pascal) +#if defined(__CUDA_ARCH__) && __CUDA_ARCH__ < 600 && !defined(__CUDA_ON_DCU) +static __inline__ __device__ double atomicAdd(double* address, double val) +{ + unsigned long long int* address_as_ull = (unsigned long long int*)address; + unsigned long long int old = *address_as_ull, assumed; + do + { + assumed = old; + old = atomicCAS(address_as_ull, assumed, __double_as_longlong(val + __longlong_as_double(assumed))); + // Note: uses integer comparison to avoid hang in case of NaN (since NaN != NaN) + } while (assumed != old); + return __longlong_as_double(old); +} +#endif + +#endif // KERNEL_COMPAT_H_ diff --git a/source/source_base/module_device/memory_op.cpp b/source/source_base/module_device/memory_op.cpp index 189014c981..2ef4be588a 100644 --- a/source/source_base/module_device/memory_op.cpp +++ b/source/source_base/module_device/memory_op.cpp @@ -5,6 +5,7 @@ #ifdef __DSP #include "source_base/kernels/dsp/dsp_connector.h" #include "source_base/global_variable.h" +#include "source_io/module_parameter/parameter.h" #endif #include @@ -55,6 +56,18 @@ struct set_memory_op } }; +template +struct set_memory_2d_op +{ + void operator()(FPTYPE* arr, const size_t pitch, const int var, const size_t width, const size_t height) + { + for (size_t i = 0; i < height; i++){ + set_memory_op()(arr + i * pitch, var, width); + } + } +}; + + template struct synchronize_memory_op { @@ -70,6 +83,23 @@ struct synchronize_memory_op +struct synchronize_memory_2d_op +{ + void operator()(FPTYPE* arr_out, + const size_t dpitch, + const FPTYPE* arr_in, + const size_t spitch, + const size_t width, + const size_t height) + { + for (int i = 0; i < height; i++){ + synchronize_memory_op()( + arr_out + i * dpitch, arr_in + i * spitch, width); + } + } +}; + template struct cast_memory_op { @@ -78,7 +108,7 @@ struct cast_memory_op; template struct set_memory_op, base_device::DEVICE_CPU>; template struct set_memory_op, base_device::DEVICE_CPU>; +template struct set_memory_2d_op; +template struct set_memory_2d_op; +template struct set_memory_2d_op; +template struct set_memory_2d_op, base_device::DEVICE_CPU>; +template struct set_memory_2d_op, base_device::DEVICE_CPU>; + template struct synchronize_memory_op; template struct synchronize_memory_op; template struct synchronize_memory_op; template struct synchronize_memory_op, base_device::DEVICE_CPU, base_device::DEVICE_CPU>; template struct synchronize_memory_op, base_device::DEVICE_CPU, base_device::DEVICE_CPU>; +template struct synchronize_memory_2d_op; +template struct synchronize_memory_2d_op; +template struct synchronize_memory_2d_op; +template struct synchronize_memory_2d_op, base_device::DEVICE_CPU, base_device::DEVICE_CPU>; +template struct synchronize_memory_2d_op, base_device::DEVICE_CPU, base_device::DEVICE_CPU>; + template struct cast_memory_op; template struct cast_memory_op; template struct cast_memory_op; @@ -167,6 +209,14 @@ struct set_memory_op } }; +template +struct set_memory_2d_op +{ + void operator()(FPTYPE* arr, const size_t pitch, const int var, const size_t width, const size_t height) + { + } +}; + template struct synchronize_memory_op { @@ -197,6 +247,45 @@ struct synchronize_memory_op +struct synchronize_memory_2d_op +{ + void operator()(FPTYPE* arr_out, + const size_t dpitch, + const FPTYPE* arr_in, + const size_t spitch, + const size_t width, + const size_t height) + { + } +}; + +template +struct synchronize_memory_2d_op +{ + void operator()(FPTYPE* arr_out, + const size_t dpitch, + const FPTYPE* arr_in, + const size_t spitch, + const size_t width, + const size_t height) + { + } +}; + +template +struct synchronize_memory_2d_op +{ + void operator()(FPTYPE* arr_out, + const size_t dpitch, + const FPTYPE* arr_in, + const size_t spitch, + const size_t width, + const size_t height) + { + } +}; + template struct cast_memory_op { @@ -247,6 +336,12 @@ template struct set_memory_op; template struct set_memory_op, base_device::DEVICE_GPU>; template struct set_memory_op, base_device::DEVICE_GPU>; +template struct set_memory_2d_op; +template struct set_memory_2d_op; +template struct set_memory_2d_op; +template struct set_memory_2d_op, base_device::DEVICE_GPU>; +template struct set_memory_2d_op, base_device::DEVICE_GPU>; + template struct synchronize_memory_op; template struct synchronize_memory_op; template struct synchronize_memory_op; @@ -263,6 +358,22 @@ template struct synchronize_memory_op, base_device::DEVICE_ template struct synchronize_memory_op, base_device::DEVICE_GPU, base_device::DEVICE_CPU>; template struct synchronize_memory_op, base_device::DEVICE_GPU, base_device::DEVICE_GPU>; +template struct synchronize_memory_2d_op; +template struct synchronize_memory_2d_op; +template struct synchronize_memory_2d_op; +template struct synchronize_memory_2d_op; +template struct synchronize_memory_2d_op; +template struct synchronize_memory_2d_op; +template struct synchronize_memory_2d_op; +template struct synchronize_memory_2d_op; +template struct synchronize_memory_2d_op; +template struct synchronize_memory_2d_op, base_device::DEVICE_CPU, base_device::DEVICE_GPU>; +template struct synchronize_memory_2d_op, base_device::DEVICE_GPU, base_device::DEVICE_CPU>; +template struct synchronize_memory_2d_op, base_device::DEVICE_GPU, base_device::DEVICE_GPU>; +template struct synchronize_memory_2d_op, base_device::DEVICE_CPU, base_device::DEVICE_GPU>; +template struct synchronize_memory_2d_op, base_device::DEVICE_GPU, base_device::DEVICE_CPU>; +template struct synchronize_memory_2d_op, base_device::DEVICE_GPU, base_device::DEVICE_GPU>; + template struct cast_memory_op; template struct cast_memory_op; template struct cast_memory_op; @@ -342,7 +453,7 @@ struct resize_memory_op_mt { mtfunc::free_ht(arr); } - arr = (FPTYPE*)mtfunc::malloc_ht(sizeof(FPTYPE) * size, GlobalV::MY_RANK); + arr = (FPTYPE*)mtfunc::malloc_ht(sizeof(FPTYPE) * size, GlobalV::MY_RANK % PARAM.inp.dsp_count); std::string record_string; if (record_in != nullptr) { diff --git a/source/source_base/module_device/memory_op.h b/source/source_base/module_device/memory_op.h index 30182649d3..c24acbb024 100644 --- a/source/source_base/module_device/memory_op.h +++ b/source/source_base/module_device/memory_op.h @@ -40,6 +40,22 @@ struct set_memory_op void operator()(FPTYPE* arr, const int var, const size_t size); }; +template +struct set_memory_2d_op +{ + /// @brief memset2D for multi-device + /// + /// Input Parameters + /// \param var : the specified constant value + /// \param pitch : Pitch in elements of 2D device memory + /// \param width : Width of matrix set (columns in elements) + /// \param height : Height of matrix set (rows) + /// + /// Output Parameters + /// \param arr : output array initialized by the input value + void operator()(FPTYPE* arr, const size_t pitch, const int var, const size_t width, const size_t height); +}; + template struct synchronize_memory_op { @@ -56,6 +72,28 @@ struct synchronize_memory_op const size_t size); }; +template +struct synchronize_memory_2d_op +{ + /// @brief memcpy2D for multi-device + /// + /// Input Parameters + /// \param arr_in : input array + /// \param dpitch : Pitch in elements of destination memory + /// \param spitch : Pitch in elements of source memory + /// \param width : Width of matrix transfer (columns in elements) + /// \param height : Height of matrix transfer (rows) + /// + /// Output Parameters + /// \param arr_out : output array initialized by the input array + void operator()(FPTYPE* arr_out, + const size_t dpitch, + const FPTYPE* arr_in, + const size_t spitch, + const size_t width, + const size_t height); +}; + template struct cast_memory_op { @@ -113,6 +151,12 @@ struct set_memory_op void operator()(FPTYPE* arr, const int var, const size_t size); }; +template +struct set_memory_2d_op +{ + void operator()(FPTYPE* arr, const size_t pitch, const int var, const size_t width, const size_t height); +}; + template struct synchronize_memory_op { @@ -133,7 +177,38 @@ struct synchronize_memory_op +struct synchronize_memory_2d_op +{ + void operator()(FPTYPE* arr_out, + const size_t dpitch, + const FPTYPE* arr_in, + const size_t spitch, + const size_t width, + const size_t height); +}; +template +struct synchronize_memory_2d_op +{ + void operator()(FPTYPE* arr_out, + const size_t dpitch, + const FPTYPE* arr_in, + const size_t spitch, + const size_t width, + const size_t height); +}; +template +struct synchronize_memory_2d_op +{ + void operator()(FPTYPE* arr_out, + const size_t dpitch, + const FPTYPE* arr_in, + const size_t spitch, + const size_t width, + const size_t height); }; template @@ -194,6 +269,16 @@ using setmem_dd_op = base_device::memory::set_memory_op, base_device::DEVICE_GPU>; using setmem_zd_op = base_device::memory::set_memory_op, base_device::DEVICE_GPU>; +using setmem_sh_2d_op = base_device::memory::set_memory_2d_op; +using setmem_dh_2d_op = base_device::memory::set_memory_2d_op; +using setmem_ch_2d_op = base_device::memory::set_memory_2d_op, base_device::DEVICE_CPU>; +using setmem_zh_2d_op = base_device::memory::set_memory_2d_op, base_device::DEVICE_CPU>; + +using setmem_sd_2d_op = base_device::memory::set_memory_2d_op; +using setmem_dd_2d_op = base_device::memory::set_memory_2d_op; +using setmem_cd_2d_op = base_device::memory::set_memory_2d_op, base_device::DEVICE_GPU>; +using setmem_zd_2d_op = base_device::memory::set_memory_2d_op, base_device::DEVICE_GPU>; + using delmem_sh_op = base_device::memory::delete_memory_op; using delmem_dh_op = base_device::memory::delete_memory_op; using delmem_ch_op = base_device::memory::delete_memory_op, base_device::DEVICE_CPU>; @@ -230,6 +315,32 @@ using syncmem_z2z_h2d_op using syncmem_z2z_d2h_op = base_device::memory::synchronize_memory_op, base_device::DEVICE_CPU, base_device::DEVICE_GPU>; +using syncmem_c2c_h2h_op + = base_device::memory::synchronize_memory_op, base_device::DEVICE_CPU, base_device::DEVICE_CPU>; +using syncmem_c2c_h2d_op + = base_device::memory::synchronize_memory_op, base_device::DEVICE_GPU, base_device::DEVICE_CPU>; +using syncmem_c2c_d2h_op + = base_device::memory::synchronize_memory_op, base_device::DEVICE_CPU, base_device::DEVICE_GPU>; +using syncmem_z2z_h2h_op + = base_device::memory::synchronize_memory_op, base_device::DEVICE_CPU, base_device::DEVICE_CPU>; +using syncmem_z2z_h2d_op + = base_device::memory::synchronize_memory_op, base_device::DEVICE_GPU, base_device::DEVICE_CPU>; +using syncmem_z2z_d2h_op + = base_device::memory::synchronize_memory_op, base_device::DEVICE_CPU, base_device::DEVICE_GPU>; + +using syncmem_c2c_h2h_2d_op + = base_device::memory::synchronize_memory_2d_op, base_device::DEVICE_CPU, base_device::DEVICE_CPU>; +using syncmem_c2c_h2d_2d_op + = base_device::memory::synchronize_memory_2d_op, base_device::DEVICE_GPU, base_device::DEVICE_CPU>; +using syncmem_c2c_d2h_2d_op + = base_device::memory::synchronize_memory_2d_op, base_device::DEVICE_CPU, base_device::DEVICE_GPU>; +using syncmem_z2z_h2h_2d_op + = base_device::memory::synchronize_memory_2d_op, base_device::DEVICE_CPU, base_device::DEVICE_CPU>; +using syncmem_z2z_h2d_2d_op + = base_device::memory::synchronize_memory_2d_op, base_device::DEVICE_GPU, base_device::DEVICE_CPU>; +using syncmem_z2z_d2h_2d_op + = base_device::memory::synchronize_memory_2d_op, base_device::DEVICE_CPU, base_device::DEVICE_GPU>; + using castmem_s2d_h2h_op = base_device::memory::cast_memory_op; using castmem_s2d_h2d_op diff --git a/source/source_base/module_device/output_device.cpp b/source/source_base/module_device/output_device.cpp new file mode 100644 index 0000000000..b46688b1bc --- /dev/null +++ b/source/source_base/module_device/output_device.cpp @@ -0,0 +1,443 @@ + +#include "device.h" +#include "gpu_runtime.h" + +#include "source_base/tool_quit.h" +#include "source_io/module_parameter/parameter.h" + +#include +#include +#include +#include +#ifdef __MPI +#include "mpi.h" +#endif + +#if defined(__CUDA) +#include "source_base/module_device/cuda_compat.h" +#endif + +namespace base_device +{ +namespace information +{ +std::string get_device_name(std::string device_flag) { + std::string device_info = "Unknown"; + +#if defined(__CUDA) || defined(__ROCM) + if (device_flag == "gpu") { + int dev = 0; + gpuDeviceProp_t deviceProp; + gpuErrcheck(gpuGetDeviceProperties(&deviceProp, dev)); + device_info = deviceProp.name; + } +#endif + if (device_flag == "cpu") { + std::ifstream cpuinfo("/proc/cpuinfo"); + std::string line = "", cpu_name = ""; + + while (std::getline(cpuinfo, line)) { + if (line.find("model name") != std::string::npos) { + // Extract the CPU name from the line + size_t colonPos = line.find(":"); + if (colonPos != std::string::npos) { + cpu_name = line.substr(colonPos + 2); // Skip the colon and space + break; // Stop after the first match + } + } + } + if (cpu_name != "") { + device_info = cpu_name; + } + cpuinfo.close(); + } + return device_info; +} + +int get_device_num(std::string device_flag) +{ + if (device_flag == "gpu") { + int count = 0; + #if defined(__CUDA) || defined(__ROCM) + gpuErrcheck(gpuGetDeviceCount(&count)); + #endif + return count; + } + if(device_flag == "cpu") + { + std::ifstream file("/proc/cpuinfo"); + if (!file.is_open()) { + return 1; // fallback to 1 if cannot read + } + + std::string line; + std::set physical_ids; // Use set to avoid duplicates + + while (std::getline(file, line)) { + if (line.substr(0, 11) == "physical id") { + size_t pos = line.find(':'); + if (pos != std::string::npos) { + std::string value = line.substr(pos + 1); + std::stringstream ss(value); + int socket_id; + if (ss >> socket_id) { + physical_ids.insert(socket_id); + } + } + } + } + file.close(); + return (physical_ids.size() > 0) ? static_cast(physical_ids.size()) : 1; + } + return 0; +} + +void output_device_info(std::ostream &output) +{ +#ifdef __MPI + int world_rank, world_size; + MPI_Comm_rank(MPI_COMM_WORLD, &world_rank); + MPI_Comm_size(MPI_COMM_WORLD, &world_size); + + // rank in the node + int local_rank = get_node_rank_with_mpi_shared(MPI_COMM_WORLD); + + // Get local hardware info + int local_gpu_count = 0; + #if defined(__CUDA) || defined(__ROCM) + if(PARAM.inp.device == "gpu" && local_rank == 0) + { + local_gpu_count = get_device_num("gpu"); + } + #endif + int local_cpu_sockets = local_rank == 0 ? get_device_num("cpu") : 0; + + // Prepare vectors to gather data from all ranks + std::vector all_gpu_counts(world_size); + std::vector all_cpu_sockets(world_size); + + // Gather GPU and CPU socket counts from all MPI ranks + MPI_Gather(&local_gpu_count, 1, MPI_INT, all_gpu_counts.data(), 1, MPI_INT, 0, MPI_COMM_WORLD); + MPI_Gather(&local_cpu_sockets, 1, MPI_INT, all_cpu_sockets.data(), 1, MPI_INT, 0, MPI_COMM_WORLD); + + // Only rank 0 prints the full summary + if (world_rank == 0) { + int total_gpus = std::accumulate(all_gpu_counts.begin(), all_gpu_counts.end(), 0); + int total_cpus = std::accumulate(all_cpu_sockets.begin(), all_cpu_sockets.end(), 0); + + // Get device model names (from rank 0 node) + std::string cpu_name = get_device_name("cpu"); + std::string gpu_name; + #if defined(__CUDA) || defined(__ROCM) + if(PARAM.inp.device == "gpu" && total_gpus > 0) + { + gpu_name = get_device_name("gpu"); + } + #endif + + // Output all collected information + output << " RUNNING WITH DEVICE : " << "CPU" << " / " + << cpu_name << " (x" << total_cpus << ")" << std::endl; + #if defined(__CUDA) || defined(__ROCM) + if(PARAM.inp.device == "gpu" && total_gpus > 0) + { + output << " " << "GPU" << " / " + << gpu_name << " (x" << total_gpus << ")" << std::endl; + } + #endif + } +#else + int cpu_sockets = get_device_num("cpu"); + std::string cpu_name = get_device_name("cpu"); + output << " RUNNING WITH DEVICE : " << "CPU" << " / " + << cpu_name << " (x" << cpu_sockets << ")" << std::endl; + #if defined(__CUDA) || defined(__ROCM) + if(PARAM.inp.device == "gpu") + { + int gpu_count = get_device_num("gpu"); + if(gpu_count > 0) + { + std::string gpu_name = get_device_name("gpu"); + output << " " << "GPU" << " / " + << gpu_name << " (x" << gpu_count << ")" << std::endl; + } + } + #endif +#endif +} + +#if defined(__CUDA) || defined(__ROCM) + +static bool is_init = false; + +template <> +void print_device_info( + const base_device::DEVICE_GPU *ctx, std::ofstream &ofs_device) { + if (is_init) { + return; + } + int deviceCount = 0; + gpuError_t error_id = gpuGetDeviceCount(&deviceCount); + if (error_id != gpuSuccess) { + ofs_device << "gpuGetDeviceCount returned " << static_cast(error_id) + << "\n-> " << gpuGetErrorString(error_id) << std::endl; + ModuleBase::WARNING_QUIT("device", "GPU returned is without gpuSuccess"); + } + // This function call returns 0 if there are no GPU capable devices. + if (deviceCount == 0) { + ofs_device << "There are no available device(s) that support GPU\n"; + } else { + ofs_device << "Detected " << deviceCount << " GPU Capable device(s)\n"; + } + int dev = 0, driverVersion = 0, runtimeVersion = 0; + gpuErrcheck(gpuGetDevice(&dev)); + gpuDeviceProp_t deviceProp; + gpuErrcheck(gpuGetDeviceProperties(&deviceProp, dev)); + ofs_device << "\nDevice " << dev << ":\t " << deviceProp.name << std::endl; + // Console log + gpuErrcheck(gpuDriverGetVersion(&driverVersion)); + gpuErrcheck(gpuRuntimeGetVersion(&runtimeVersion)); + char msg[1024]; + sprintf(msg, + " GPU Driver Version / Runtime Version %d.%d / %d.%d\n", + driverVersion / 1000, (driverVersion % 100) / 10, + runtimeVersion / 1000, (runtimeVersion % 100) / 10); + ofs_device << msg << std::endl; + sprintf(msg, " GPU Capability Major/Minor version number: %d.%d\n", + deviceProp.major, deviceProp.minor); + ofs_device << msg << std::endl; + +#if defined(__ROCM) + // ROCm-specific: clock rates + sprintf(msg, + " GPU Max Clock rate: %.0f MHz (%0.2f " + "GHz)\n", + deviceProp.clockRate * 1e-3f, deviceProp.clockRate * 1e-6f); + ofs_device << msg << std::endl; + sprintf(msg, " Memory Clock rate: %.0f Mhz\n", + deviceProp.memoryClockRate * 1e-3f); + ofs_device << msg << std::endl; + sprintf(msg, " Memory Bus Width: %d-bit\n", + deviceProp.memoryBusWidth); + ofs_device << msg << std::endl; +#endif + + // Common properties + sprintf(msg, + " Maximum Texture Dimension Size (x,y,z) 1D=(%d), 2D=(%d, " + "%d), 3D=(%d, %d, %d)\n", + deviceProp.maxTexture1D, deviceProp.maxTexture2D[0], + deviceProp.maxTexture2D[1], deviceProp.maxTexture3D[0], + deviceProp.maxTexture3D[1], deviceProp.maxTexture3D[2]); + ofs_device << msg << std::endl; + +#if defined(__CUDA) + // CUDA-specific: layered textures + sprintf( + msg, + " Maximum Layered 1D Texture Size, (num) layers 1D=(%d), %d layers\n", + deviceProp.maxTexture1DLayered[0], deviceProp.maxTexture1DLayered[1]); + ofs_device << msg << std::endl; + sprintf(msg, + " Maximum Layered 2D Texture Size, (num) layers 2D=(%d, %d), %d " + "layers\n", + deviceProp.maxTexture2DLayered[0], deviceProp.maxTexture2DLayered[1], + deviceProp.maxTexture2DLayered[2]); + ofs_device << msg << std::endl; +#endif + + sprintf(msg, " Total amount of constant memory: %zu bytes\n", + deviceProp.totalConstMem); + ofs_device << msg << std::endl; + sprintf(msg, " Total amount of shared memory per block: %zu bytes\n", + deviceProp.sharedMemPerBlock); + ofs_device << msg << std::endl; + +#if defined(__CUDA) + sprintf(msg, " Total shared memory per multiprocessor: %zu bytes\n", + deviceProp.sharedMemPerMultiprocessor); + ofs_device << msg << std::endl; +#endif + + sprintf(msg, " Total number of registers available per block: %d\n", + deviceProp.regsPerBlock); + ofs_device << msg << std::endl; + sprintf(msg, " Warp size: %d\n", + deviceProp.warpSize); + ofs_device << msg << std::endl; + sprintf(msg, " Maximum number of threads per multiprocessor: %d\n", + deviceProp.maxThreadsPerMultiProcessor); + ofs_device << msg << std::endl; + sprintf(msg, " Maximum number of threads per block: %d\n", + deviceProp.maxThreadsPerBlock); + ofs_device << msg << std::endl; + sprintf(msg, " Max dimension size of a thread block (x,y,z): (%d, %d, %d)\n", + deviceProp.maxThreadsDim[0], deviceProp.maxThreadsDim[1], + deviceProp.maxThreadsDim[2]); + ofs_device << msg << std::endl; + sprintf(msg, " Max dimension size of a grid size (x,y,z): (%d, %d, %d)\n", + deviceProp.maxGridSize[0], deviceProp.maxGridSize[1], + deviceProp.maxGridSize[2]); + ofs_device << msg << std::endl; + sprintf(msg, " Maximum memory pitch: %zu bytes\n", + deviceProp.memPitch); + ofs_device << msg << std::endl; + sprintf(msg, " Texture alignment: %zu bytes\n", + deviceProp.textureAlignment); + ofs_device << msg << std::endl; + +#if defined(__ROCM) + sprintf(msg, " Run time limit on kernels: %s\n", + deviceProp.kernelExecTimeoutEnabled ? "Yes" : "No"); + ofs_device << msg << std::endl; +#endif + + sprintf(msg, " Integrated GPU sharing Host Memory: %s\n", + deviceProp.integrated ? "Yes" : "No"); + ofs_device << msg << std::endl; + sprintf(msg, " Support host page-locked memory mapping: %s\n", + deviceProp.canMapHostMemory ? "Yes" : "No"); + ofs_device << msg << std::endl; + +#if defined(__CUDA) + sprintf(msg, " Alignment requirement for Surfaces: %s\n", + deviceProp.surfaceAlignment ? "Yes" : "No"); + ofs_device << msg << std::endl; +#endif + + sprintf(msg, " Device has ECC support: %s\n", + deviceProp.ECCEnabled ? "Enabled" : "Disabled"); + ofs_device << msg << std::endl; + +#if defined(__CUDA) + sprintf(msg, " Device supports Unified Addressing (UVA): %s\n", + deviceProp.unifiedAddressing ? "Yes" : "No"); + ofs_device << msg << std::endl; +#endif + + sprintf(msg, " Device supports Managed Memory: %s\n", + deviceProp.managedMemory ? "Yes" : "No"); + ofs_device << msg << std::endl; + +#if defined(__CUDA) + sprintf(msg, " Device supports Compute Preemption: %s\n", + deviceProp.computePreemptionSupported ? "Yes" : "No"); + ofs_device << msg << std::endl; +#endif + + sprintf(msg, " Supports Cooperative Kernel Launch: %s\n", + deviceProp.cooperativeLaunch ? "Yes" : "No"); + ofs_device << msg << std::endl; + +#if defined(__ROCM) + sprintf(msg, " Supports MultiDevice Co-op Kernel Launch: %s\n", + deviceProp.cooperativeMultiDeviceLaunch ? "Yes" : "No"); + ofs_device << msg << std::endl; +#endif + + sprintf(msg, + " Device PCI Domain ID / Bus ID / location ID: %d / %d / %d\n", + deviceProp.pciDomainID, deviceProp.pciBusID, deviceProp.pciDeviceID); + ofs_device << msg << std::endl; + +#if defined(__CUDA) + ModuleBase::cuda_compat::printDeprecatedDeviceInfo(ofs_device, deviceProp); + ModuleBase::cuda_compat::printComputeModeInfo(ofs_device, deviceProp); +#elif defined(__ROCM) + const char *sComputeMode[] = { + "Default (multiple host threads can use ::gpuSetDevice() with device " + "simultaneously)", + "Exclusive (only one host thread in one process is able to use " + "::gpuSetDevice() with this device)", + "Prohibited (no host thread can use ::gpuSetDevice() with this " + "device)", + "Exclusive Process (many threads in one process is able to use " + "::gpuSetDevice() with this device)", + "Unknown", + NULL}; + sprintf(msg, " Compute Mode:\n"); + ofs_device << msg << std::endl; + ofs_device << " " << sComputeMode[deviceProp.computeMode] << std::endl + << std::endl; +#endif + + // If there are 2 or more GPUs, query to determine whether RDMA is supported + if (deviceCount >= 2) { + gpuDeviceProp_t prop[64]; + int gpuid[64]; // we want to find the first two GPUs that can support P2P + int gpu_p2p_count = 0; + + for (int i = 0; i < deviceCount; i++) { + gpuErrcheck(gpuGetDeviceProperties(&prop[i], i)); + + // Only boards based on Fermi or later can support P2P + if (prop[i].major >= 2) { + // This is an array of P2P capable GPUs + gpuid[gpu_p2p_count++] = i; + } + } + + // Show all the combinations of support P2P GPUs + int can_access_peer; + + if (gpu_p2p_count >= 2) { + for (int i = 0; i < gpu_p2p_count; i++) { + for (int j = 0; j < gpu_p2p_count; j++) { + if (gpuid[i] == gpuid[j]) { + continue; + } + gpuErrcheck( + gpuDeviceCanAccessPeer(&can_access_peer, gpuid[i], gpuid[j])); + sprintf(msg, "> Peer access from %s (GPU%d) -> %s (GPU%d) : %s\n", + prop[gpuid[i]].name, gpuid[i], prop[gpuid[j]].name, gpuid[j], + can_access_peer ? "Yes" : "No"); + ofs_device << msg << std::endl; + } + } + } + } + + // csv masterlog info + // ***************************** + // exe and GPU driver name + std::string sProfileString = "deviceQuery, GPU Driver = GPURT"; + char cTemp[16]; + + // driver version + sProfileString += ", GPU Driver Version = "; + + snprintf(cTemp, sizeof(cTemp), "%d.%d", driverVersion / 1000, + (driverVersion % 100) / 10); + sProfileString += cTemp; + + // Runtime version + sProfileString += ", GPU Runtime Version = "; + snprintf(cTemp, sizeof(cTemp), "%d.%d", runtimeVersion / 1000, + (runtimeVersion % 100) / 10); + sProfileString += cTemp; + + // Device count + sProfileString += ", NumDevs = "; + snprintf(cTemp, sizeof(cTemp), "%d", deviceCount); + sProfileString += cTemp; + sProfileString += "\n"; + + ofs_device << sProfileString.c_str() << std::endl; + is_init = true; + ofs_device << "End of device informations." << std::endl << std::endl; +} + +template <> +void record_device_memory( + const base_device::DEVICE_GPU *ctx, std::ofstream &ofs_device, + std::string str, size_t size) { + ofs_device << "Allocate " << static_cast(size) / 8 / 1024 / 1024 + << " \tMB device memory\t" + << "from " << str << std::endl + << std::endl; +} + +#endif // defined(__CUDA) || defined(__ROCM) + +} +} diff --git a/source/source_base/module_device/test/device_test.cpp b/source/source_base/module_device/test/device_test.cpp index 02d485c8ef..faf083c721 100644 --- a/source/source_base/module_device/test/device_test.cpp +++ b/source/source_base/module_device/test/device_test.cpp @@ -20,14 +20,14 @@ class TestModulePsiDevice : public ::testing::Test TEST_F(TestModulePsiDevice, get_device_type_cpu) { - base_device::AbacusDevice_t device = base_device::get_device_type(cpu_ctx); + base_device::AbacusDevice_t device = base_device::get_device_type(cpu_ctx); EXPECT_EQ(device, base_device::CpuDevice); } #if __UT_USE_CUDA || __UT_USE_ROCM TEST_F(TestModulePsiDevice, get_device_type_gpu) { - base_device::AbacusDevice_t device = base_device::get_device_type(gpu_ctx); + base_device::AbacusDevice_t device = base_device::get_device_type(gpu_ctx); EXPECT_EQ(device, base_device::GpuDevice); } #endif // __UT_USE_CUDA || __UT_USE_ROCM diff --git a/source/source_base/module_external/blas_connector.h b/source/source_base/module_external/blas_connector.h index 921f94ddb9..920731b3f6 100644 --- a/source/source_base/module_external/blas_connector.h +++ b/source/source_base/module_external/blas_connector.h @@ -8,136 +8,192 @@ // These still need to be linked in the header file // Because quite a lot of code will directly use the original cblas kernels. +// The following declarations cover only a subset of BLAS routines. +// If you need a BLAS function that is not included here, feel free to add its declaration as needed. extern "C" { - // level 1: std::vector-std::vector operations, O(n) data and O(n) work. - - // Peize Lin add ?scal 2016-08-04, to compute x=a*x - void sscal_(const int *N, const float *alpha, float *X, const int *incX); - void dscal_(const int *N, const double *alpha, double *X, const int *incX); - void cscal_(const int *N, const std::complex *alpha, std::complex *X, const int *incX); - void zscal_(const int *N, const std::complex *alpha, std::complex *X, const int *incX); - - // Peize Lin add ?axpy 2016-08-04, to compute y=a*x+y - void saxpy_(const int *N, const float *alpha, const float *X, const int *incX, float *Y, const int *incY); - void daxpy_(const int *N, const double *alpha, const double *X, const int *incX, double *Y, const int *incY); - void caxpy_(const int *N, const std::complex *alpha, const std::complex *X, const int *incX, std::complex *Y, const int *incY); - void zaxpy_(const int *N, const std::complex *alpha, const std::complex *X, const int *incX, std::complex *Y, const int *incY); - - void dcopy_(long const *n, const double *a, int const *incx, double *b, int const *incy); - void zcopy_(long const *n, const std::complex *a, int const *incx, std::complex *b, int const *incy); - - //reason for passing results as argument instead of returning it: - //see https://www.numbercrunch.de/blog/2014/07/lost-in-translation/ - // void zdotc_(std::complex *result, const int *n, const std::complex *zx, - // const int *incx, const std::complex *zy, const int *incy); - // Peize Lin add ?dot 2017-10-27, to compute d=x*y - float sdot_(const int *N, const float *X, const int *incX, const float *Y, const int *incY); - double ddot_(const int *N, const double *X, const int *incX, const double *Y, const int *incY); - - // Peize Lin add ?nrm2 2018-06-12, to compute out = ||x||_2 = \sqrt{ \sum_i x_i**2 } - float snrm2_( const int *n, const float *X, const int *incX ); - double dnrm2_( const int *n, const double *X, const int *incX ); - double dznrm2_( const int *n, const std::complex *X, const int *incX ); - - // symmetric rank-k update - void dsyrk_( - const char* uplo, - const char* trans, - const int* n, - const int* k, - const double* alpha, - const double* a, - const int* lda, - const double* beta, - double* c, - const int* ldc - ); - - // level 2: matrix-std::vector operations, O(n^2) data and O(n^2) work. - void sgemv_(const char*const transa, const int*const m, const int*const n, - const float*const alpha, const float*const a, const int*const lda, const float*const x, const int*const incx, - const float*const beta, float*const y, const int*const incy); - void dgemv_(const char*const transa, const int*const m, const int*const n, - const double*const alpha, const double*const a, const int*const lda, const double*const x, const int*const incx, - const double*const beta, double*const y, const int*const incy); - - void cgemv_(const char *trans, const int *m, const int *n, const std::complex *alpha, - const std::complex *a, const int *lda, const std::complex *x, const int *incx, - const std::complex *beta, std::complex *y, const int *incy); - - void zgemv_(const char *trans, const int *m, const int *n, const std::complex *alpha, - const std::complex *a, const int *lda, const std::complex *x, const int *incx, - const std::complex *beta, std::complex *y, const int *incy); - - void dsymv_(const char *uplo, const int *n, - const double *alpha, const double *a, const int *lda, - const double *x, const int *incx, - const double *beta, double *y, const int *incy); - - // A := alpha x * y.T + A - void dger_(const int* m, - const int* n, - const double* alpha, - const double* x, - const int* incx, - const double* y, - const int* incy, - double* a, - const int* lda); - void zgerc_(const int* m, - const int* n, - const std::complex* alpha, - const std::complex* x, - const int* incx, - const std::complex* y, - const int* incy, - std::complex* a, - const int* lda); - - // level 3: matrix-matrix operations, O(n^2) data and O(n^3) work. - - // Peize Lin add ?gemm 2017-10-27, to compute C = a * A.? * B.? + b * C - // A is general - void sgemm_(const char *transa, const char *transb, const int *m, const int *n, const int *k, - const float *alpha, const float *a, const int *lda, const float *b, const int *ldb, - const float *beta, float *c, const int *ldc); - void dgemm_(const char *transa, const char *transb, const int *m, const int *n, const int *k, - const double *alpha, const double *a, const int *lda, const double *b, const int *ldb, - const double *beta, double *c, const int *ldc); - void cgemm_(const char *transa, const char *transb, const int *m, const int *n, const int *k, - const std::complex *alpha, const std::complex *a, const int *lda, const std::complex *b, const int *ldb, - const std::complex *beta, std::complex *c, const int *ldc); - void zgemm_(const char *transa, const char *transb, const int *m, const int *n, const int *k, - const std::complex *alpha, const std::complex *a, const int *lda, const std::complex *b, const int *ldb, - const std::complex *beta, std::complex *c, const int *ldc); - - // A is symmetric. C = a * A.? * B.? + b * C - void ssymm_(const char *side, const char *uplo, const int *m, const int *n, - const float *alpha, const float *a, const int *lda, const float *b, const int *ldb, - const float *beta, float *c, const int *ldc); - void dsymm_(const char *side, const char *uplo, const int *m, const int *n, - const double *alpha, const double *a, const int *lda, const double *b, const int *ldb, - const double *beta, double *c, const int *ldc); - void csymm_(const char *side, const char *uplo, const int *m, const int *n, - const std::complex *alpha, const std::complex *a, const int *lda, const std::complex *b, const int *ldb, - const std::complex *beta, std::complex *c, const int *ldc); - void zsymm_(const char *side, const char *uplo, const int *m, const int *n, - const std::complex *alpha, const std::complex *a, const int *lda, const std::complex *b, const int *ldb, - const std::complex *beta, std::complex *c, const int *ldc); - - // A is hermitian. C = a * A.? * B.? + b * C - void chemm_(char *side, char *uplo, int *m, int *n,std::complex *alpha, - std::complex *a, int *lda, std::complex *b, int *ldb, std::complex *beta, std::complex *c, int *ldc); - void zhemm_(char *side, char *uplo, int *m, int *n,std::complex *alpha, - std::complex *a, int *lda, std::complex *b, int *ldb, std::complex *beta, std::complex *c, int *ldc); - - //solving triangular matrix with multiple right hand sides - void dtrsm_(char *side, char* uplo, char *transa, char *diag, int *m, int *n, - double* alpha, double* a, int *lda, double*b, int *ldb); - void ztrsm_(char *side, char* uplo, char *transa, char *diag, int *m, int *n, - std::complex* alpha, std::complex* a, int *lda, std::complex*b, int *ldb); - +// Level 1 BLAS +void sscal_(const int *N, const float *alpha, float *X, const int *incX); +void dscal_(const int *N, const double *alpha, double *X, const int *incX); +void cscal_(const int *N, const std::complex *alpha, std::complex *X, const int *incX); +void zscal_(const int *N, const std::complex *alpha, std::complex *X, const int *incX); + +void saxpy_(const int *N, const float *alpha, const float *X, const int *incX, float *Y, const int *incY); +void daxpy_(const int *N, const double *alpha, const double *X, const int *incX, double *Y, const int *incY); +void caxpy_(const int *N, const std::complex *alpha, const std::complex *X, const int *incX, std::complex *Y, const int *incY); +void zaxpy_(const int *N, const std::complex *alpha, const std::complex *X, const int *incX, std::complex *Y, const int *incY); + +void scopy_(const int *n, const float *a, const int *incx, float *b, const int *incy); +void dcopy_(const int *n, const double *a, const int *incx, double *b, const int *incy); +void ccopy_(const int *n, const std::complex *a, const int *incx, std::complex *b, const int *incy); +void zcopy_(const int *n, const std::complex *a, const int *incx, std::complex *b, const int *incy); + +// Note: sdot_/ddot_ return by value +float sdot_(const int *N, const float *X, const int *incX, const float *Y, const int *incY); +double ddot_(const int *N, const double *X, const int *incX, const double *Y, const int *incY); + +float snrm2_(const int *n, const float *X, const int *incX); +double dnrm2_(const int *n, const double *X, const int *incX); +float scnrm2_(const int *n, const std::complex *X, const int *incX); +double dznrm2_(const int *n, const std::complex *X, const int *incX); + +// Level 2 BLAS + +void sgemv_(const char *transa, const int *m, const int *n, + const float *alpha, const float *a, const int *lda, + const float *x, const int *incx, + const float *beta, float *y, const int *incy); + +void dgemv_(const char *transa, const int *m, const int *n, + const double *alpha, const double *a, const int *lda, + const double *x, const int *incx, + const double *beta, double *y, const int *incy); + +void cgemv_(const char *trans, const int *m, const int *n, + const std::complex *alpha, + const std::complex *a, const int *lda, + const std::complex *x, const int *incx, + const std::complex *beta, + std::complex *y, const int *incy); + +void zgemv_(const char *trans, const int *m, const int *n, + const std::complex *alpha, + const std::complex *a, const int *lda, + const std::complex *x, const int *incx, + const std::complex *beta, + std::complex *y, const int *incy); + +void dsymv_(const char *uplo, const int *n, + const double *alpha, const double *a, const int *lda, + const double *x, const int *incx, + const double *beta, double *y, const int *incy); + +void dger_(const int *m, const int *n, + const double *alpha, + const double *x, const int *incx, + const double *y, const int *incy, + double *a, const int *lda); + +void zgerc_(const int *m, const int *n, + const std::complex *alpha, + const std::complex *x, const int *incx, + const std::complex *y, const int *incy, + std::complex *a, const int *lda); + +// Level 3 BLAS + +void sgemm_(const char *transa, const char *transb, + const int *m, const int *n, const int *k, + const float *alpha, + const float *a, const int *lda, + const float *b, const int *ldb, + const float *beta, + float *c, const int *ldc); + +void dgemm_(const char *transa, const char *transb, + const int *m, const int *n, const int *k, + const double *alpha, + const double *a, const int *lda, + const double *b, const int *ldb, + const double *beta, + double *c, const int *ldc); + +void cgemm_(const char *transa, const char *transb, + const int *m, const int *n, const int *k, + const std::complex *alpha, + const std::complex *a, const int *lda, + const std::complex *b, const int *ldb, + const std::complex *beta, + std::complex *c, const int *ldc); + +void zgemm_(const char *transa, const char *transb, + const int *m, const int *n, const int *k, + const std::complex *alpha, + const std::complex *a, const int *lda, + const std::complex *b, const int *ldb, + const std::complex *beta, + std::complex *c, const int *ldc); + +void ssymm_(const char *side, const char *uplo, + const int *m, const int *n, + const float *alpha, + const float *a, const int *lda, + const float *b, const int *ldb, + const float *beta, + float *c, const int *ldc); + +void dsymm_(const char *side, const char *uplo, + const int *m, const int *n, + const double *alpha, + const double *a, const int *lda, + const double *b, const int *ldb, + const double *beta, + double *c, const int *ldc); + +void csymm_(const char *side, const char *uplo, + const int *m, const int *n, + const std::complex *alpha, + const std::complex *a, const int *lda, + const std::complex *b, const int *ldb, + const std::complex *beta, + std::complex *c, const int *ldc); + +void zsymm_(const char *side, const char *uplo, + const int *m, const int *n, + const std::complex *alpha, + const std::complex *a, const int *lda, + const std::complex *b, const int *ldb, + const std::complex *beta, + std::complex *c, const int *ldc); + +void chemm_(const char *side, const char *uplo, + const int *m, const int *n, + const std::complex *alpha, + const std::complex *a, const int *lda, + const std::complex *b, const int *ldb, + const std::complex *beta, + std::complex *c, const int *ldc); + +void zhemm_(const char *side, const char *uplo, + const int *m, const int *n, + const std::complex *alpha, + const std::complex *a, const int *lda, + const std::complex *b, const int *ldb, + const std::complex *beta, + std::complex *c, const int *ldc); + +void dtrsm_(const char *side, const char *uplo, const char *transa, const char *diag, + const int *m, const int *n, + const double *alpha, + const double *a, const int *lda, + double *b, const int *ldb); + +void ztrsm_(const char *side, const char *uplo, const char *transa, const char *diag, + const int *m, const int *n, + const std::complex *alpha, + const std::complex *a, const int *lda, + std::complex *b, const int *ldb); + +// === Hermitian rank-k update === +void cherk_(const char* uplo, const char* trans, const int* n, const int* k, + const float* alpha, + const std::complex* a, const int* lda, + const float* beta, + std::complex* c, const int* ldc); + +void zherk_(const char* uplo, const char* trans, const int* n, const int* k, + const double* alpha, + const std::complex* a, const int* lda, + const double* beta, + std::complex* c, const int* ldc); + +// === Symmetric rank-k update === +void dsyrk_(const char* uplo, const char* trans, const int* n, const int* k, + const double* alpha, + const double* a, const int* lda, + const double* beta, + double* c, + const int* ldc); } // Class BlasConnector provide the connector to fortran lapack routine. @@ -338,10 +394,16 @@ class BlasConnector // copies a into b static - void copy(const long n, const double *a, const int incx, double *b, const int incy, base_device::AbacusDevice_t device_type = base_device::AbacusDevice_t::CpuDevice); + void copy(const int n, const double *a, const int incx, double *b, const int incy, base_device::AbacusDevice_t device_type = base_device::AbacusDevice_t::CpuDevice); + + static + void copy(const int n, const float *a, const int incx, float *b, const int incy, base_device::AbacusDevice_t device_type = base_device::AbacusDevice_t::CpuDevice); + + static + void copy(const int n, const std::complex *a, const int incx, std::complex *b, const int incy, base_device::AbacusDevice_t device_type = base_device::AbacusDevice_t::CpuDevice); static - void copy(const long n, const std::complex *a, const int incx, std::complex *b, const int incy, base_device::AbacusDevice_t device_type = base_device::AbacusDevice_t::CpuDevice); + void copy(const int n, const std::complex *a, const int incx, std::complex *b, const int incy, base_device::AbacusDevice_t device_type = base_device::AbacusDevice_t::CpuDevice); // There is some other operators needed, so implemented manually here template diff --git a/source/source_base/module_external/blas_connector_base.cpp b/source/source_base/module_external/blas_connector_base.cpp index 4591f22095..b07f8a3a78 100644 --- a/source/source_base/module_external/blas_connector_base.cpp +++ b/source/source_base/module_external/blas_connector_base.cpp @@ -13,13 +13,13 @@ namespace BlasUtils{ void createGpuBlasHandle(){ if (cublas_handle == nullptr) { - cublasErrcheck(cublasCreate(&cublas_handle)); + CHECK_CUBLAS(cublasCreate(&cublas_handle)); } } void destoryBLAShandle(){ if (cublas_handle != nullptr) { - cublasErrcheck(cublasDestroy(cublas_handle)); + CHECK_CUBLAS(cublasDestroy(cublas_handle)); cublas_handle = nullptr; } } diff --git a/source/source_base/module_external/blas_connector_matrix.cpp b/source/source_base/module_external/blas_connector_matrix.cpp index de1e839ad0..3b18d3ee3a 100644 --- a/source/source_base/module_external/blas_connector_matrix.cpp +++ b/source/source_base/module_external/blas_connector_matrix.cpp @@ -4,6 +4,7 @@ #ifdef __DSP #include "source_base/kernels/dsp/dsp_connector.h" #include "source_base/global_variable.h" +#include "source_io/module_parameter/parameter.h" #endif #ifdef __CUDA @@ -30,14 +31,14 @@ void BlasConnector::gemm(const char transa, const char transb, const int m, cons else if (device_type == base_device::AbacusDevice_t::DspDevice){ mtfunc::sgemm_mth_(&transb, &transa, &n, &m, &k, &alpha, b, &ldb, a, &lda, - &beta, c, &ldc, GlobalV::MY_RANK); + &beta, c, &ldc, GlobalV::MY_RANK % PARAM.inp.dsp_count); } #endif #ifdef __CUDA else if (device_type == base_device::AbacusDevice_t::GpuDevice) { cublasOperation_t cutransA = BlasUtils::judge_trans(false, transa, "gemm_op"); cublasOperation_t cutransB = BlasUtils::judge_trans(false, transb, "gemm_op"); - cublasErrcheck(cublasSgemm(BlasUtils::cublas_handle, cutransA, cutransB, n, m, k, &alpha, b, ldb, a, lda, &beta, c, ldc)); + CHECK_CUBLAS(cublasSgemm(BlasUtils::cublas_handle, cutransA, cutransB, n, m, k, &alpha, b, ldb, a, lda, &beta, c, ldc)); } #endif else { @@ -67,7 +68,7 @@ void BlasConnector::gemm(const char transa, #ifdef __DSP else if (device_type == base_device::AbacusDevice_t::DspDevice) { - mtfunc::dgemm_mth_(&transb, &transa, &n, &m, &k, &alpha, b, &ldb, a, &lda, &beta, c, &ldc, GlobalV::MY_RANK); + mtfunc::dgemm_mth_(&transb, &transa, &n, &m, &k, &alpha, b, &ldb, a, &lda, &beta, c, &ldc, GlobalV::MY_RANK % PARAM.inp.dsp_count); } #endif else if (device_type == base_device::AbacusDevice_t::GpuDevice) @@ -75,7 +76,7 @@ void BlasConnector::gemm(const char transa, #ifdef __CUDA cublasOperation_t cutransA = BlasUtils::judge_trans(false, transa, "gemm_op"); cublasOperation_t cutransB = BlasUtils::judge_trans(false, transb, "gemm_op"); - cublasErrcheck( + CHECK_CUBLAS( cublasDgemm(BlasUtils::cublas_handle, cutransA, cutransB, n, m, k, &alpha, b, ldb, a, lda, &beta, c, ldc)); #endif } @@ -106,7 +107,7 @@ void BlasConnector::gemm(const char transa, #ifdef __DSP else if (device_type == base_device::AbacusDevice_t::DspDevice) { - mtfunc::cgemm_mth_(&transb, &transa, &n, &m, &k, &alpha, b, &ldb, a, &lda, &beta, c, &ldc, GlobalV::MY_RANK); + mtfunc::cgemm_mth_(&transb, &transa, &n, &m, &k, &alpha, b, &ldb, a, &lda, &beta, c, &ldc, GlobalV::MY_RANK % PARAM.inp.dsp_count); } #endif else if (device_type == base_device::AbacusDevice_t::GpuDevice) @@ -114,7 +115,7 @@ void BlasConnector::gemm(const char transa, #ifdef __CUDA cublasOperation_t cutransA = BlasUtils::judge_trans(false, transa, "gemm_op"); cublasOperation_t cutransB = BlasUtils::judge_trans(false, transb, "gemm_op"); - cublasErrcheck(cublasCgemm(BlasUtils::cublas_handle, + CHECK_CUBLAS(cublasCgemm(BlasUtils::cublas_handle, cutransA, cutransB, n, @@ -157,7 +158,7 @@ void BlasConnector::gemm(const char transa, #ifdef __DSP else if (device_type == base_device::AbacusDevice_t::DspDevice) { - mtfunc::zgemm_mth_(&transb, &transa, &n, &m, &k, &alpha, b, &ldb, a, &lda, &beta, c, &ldc, GlobalV::MY_RANK); + mtfunc::zgemm_mth_(&transb, &transa, &n, &m, &k, &alpha, b, &ldb, a, &lda, &beta, c, &ldc, GlobalV::MY_RANK % PARAM.inp.dsp_count); } #endif else if (device_type == base_device::AbacusDevice_t::GpuDevice) @@ -165,7 +166,7 @@ void BlasConnector::gemm(const char transa, #ifdef __CUDA cublasOperation_t cutransA = BlasUtils::judge_trans(false, transa, "gemm_op"); cublasOperation_t cutransB = BlasUtils::judge_trans(false, transb, "gemm_op"); - cublasErrcheck(cublasZgemm(BlasUtils::cublas_handle, + CHECK_CUBLAS(cublasZgemm(BlasUtils::cublas_handle, cutransA, cutransB, n, @@ -200,14 +201,14 @@ void BlasConnector::gemm_cm(const char transa, const char transb, const int m, c else if (device_type == base_device::AbacusDevice_t::DspDevice){ mtfunc::sgemm_mth_(&transb, &transa, &m, &n, &k, &alpha, a, &lda, b, &ldb, - &beta, c, &ldc, GlobalV::MY_RANK); + &beta, c, &ldc, GlobalV::MY_RANK % PARAM.inp.dsp_count); } #endif #ifdef __CUDA else if (device_type == base_device::AbacusDevice_t::GpuDevice) { cublasOperation_t cutransA = BlasUtils::judge_trans(false, transa, "gemm_op"); cublasOperation_t cutransB = BlasUtils::judge_trans(false, transb, "gemm_op"); - cublasErrcheck(cublasSgemm(BlasUtils::cublas_handle, cutransA, cutransB, m, n, k, &alpha, a, lda, b, ldb, &beta, c, ldc)); + CHECK_CUBLAS(cublasSgemm(BlasUtils::cublas_handle, cutransA, cutransB, m, n, k, &alpha, a, lda, b, ldb, &beta, c, ldc)); } #endif else { @@ -237,7 +238,7 @@ void BlasConnector::gemm_cm(const char transa, #ifdef __DSP else if (device_type == base_device::AbacusDevice_t::DspDevice) { - mtfunc::dgemm_mth_(&transa, &transb, &m, &n, &k, &alpha, a, &lda, b, &ldb, &beta, c, &ldc, GlobalV::MY_RANK); + mtfunc::dgemm_mth_(&transa, &transb, &m, &n, &k, &alpha, a, &lda, b, &ldb, &beta, c, &ldc, GlobalV::MY_RANK % PARAM.inp.dsp_count); } #endif #ifdef __CUDA @@ -245,7 +246,7 @@ void BlasConnector::gemm_cm(const char transa, { cublasOperation_t cutransA = BlasUtils::judge_trans(false, transa, "gemm_op"); cublasOperation_t cutransB = BlasUtils::judge_trans(false, transb, "gemm_op"); - cublasErrcheck( + CHECK_CUBLAS( cublasDgemm(BlasUtils::cublas_handle, cutransA, cutransB, m, n, k, &alpha, a, lda, b, ldb, &beta, c, ldc)); } #endif @@ -276,7 +277,7 @@ void BlasConnector::gemm_cm(const char transa, #ifdef __DSP else if (device_type == base_device::AbacusDevice_t::DspDevice) { - mtfunc::cgemm_mth_(&transa, &transb, &m, &n, &k, &alpha, a, &lda, b, &ldb, &beta, c, &ldc, GlobalV::MY_RANK); + mtfunc::cgemm_mth_(&transa, &transb, &m, &n, &k, &alpha, a, &lda, b, &ldb, &beta, c, &ldc, GlobalV::MY_RANK % PARAM.inp.dsp_count); } #endif #ifdef __CUDA @@ -284,7 +285,7 @@ void BlasConnector::gemm_cm(const char transa, { cublasOperation_t cutransA = BlasUtils::judge_trans(false, transa, "gemm_op"); cublasOperation_t cutransB = BlasUtils::judge_trans(false, transb, "gemm_op"); - cublasErrcheck(cublasCgemm(BlasUtils::cublas_handle, + CHECK_CUBLAS(cublasCgemm(BlasUtils::cublas_handle, cutransA, cutransB, m, @@ -327,7 +328,7 @@ void BlasConnector::gemm_cm(const char transa, #ifdef __DSP else if (device_type == base_device::AbacusDevice_t::DspDevice) { - mtfunc::zgemm_mth_(&transa, &transb, &m, &n, &k, &alpha, a, &lda, b, &ldb, &beta, c, &ldc, GlobalV::MY_RANK); + mtfunc::zgemm_mth_(&transa, &transb, &m, &n, &k, &alpha, a, &lda, b, &ldb, &beta, c, &ldc, GlobalV::MY_RANK % PARAM.inp.dsp_count); } #endif #ifdef __CUDA @@ -335,7 +336,7 @@ void BlasConnector::gemm_cm(const char transa, { cublasOperation_t cutransA = BlasUtils::judge_trans(false, transa, "gemm_op"); cublasOperation_t cutransB = BlasUtils::judge_trans(false, transb, "gemm_op"); - cublasErrcheck(cublasZgemm(BlasUtils::cublas_handle, + CHECK_CUBLAS(cublasZgemm(BlasUtils::cublas_handle, cutransA, cutransB, m, @@ -371,7 +372,7 @@ void BlasConnector::symm_cm(const char side, const char uplo, const int m, const else if (device_type == base_device::AbacusDevice_t::GpuDevice) { cublasSideMode_t sideMode = BlasUtils::judge_side(side); cublasFillMode_t fillMode = BlasUtils::judge_fill(uplo); - cublasErrcheck(cublasSsymm(BlasUtils::cublas_handle, sideMode, fillMode, m, n, &alpha, a, lda, b, ldb, &beta, c, ldc)); + CHECK_CUBLAS(cublasSsymm(BlasUtils::cublas_handle, sideMode, fillMode, m, n, &alpha, a, lda, b, ldb, &beta, c, ldc)); } #endif else { @@ -392,7 +393,7 @@ void BlasConnector::symm_cm(const char side, const char uplo, const int m, const else if (device_type == base_device::AbacusDevice_t::GpuDevice) { cublasSideMode_t sideMode = BlasUtils::judge_side(side); cublasFillMode_t fillMode = BlasUtils::judge_fill(uplo); - cublasErrcheck(cublasDsymm(BlasUtils::cublas_handle, sideMode, fillMode, m, n, &alpha, a, lda, b, ldb, &beta, c, ldc)); + CHECK_CUBLAS(cublasDsymm(BlasUtils::cublas_handle, sideMode, fillMode, m, n, &alpha, a, lda, b, ldb, &beta, c, ldc)); } #endif else { @@ -413,7 +414,7 @@ void BlasConnector::symm_cm(const char side, const char uplo, const int m, const else if (device_type == base_device::AbacusDevice_t::GpuDevice) { cublasSideMode_t sideMode = BlasUtils::judge_side(side); cublasFillMode_t fillMode = BlasUtils::judge_fill(uplo); - cublasErrcheck(cublasCsymm(BlasUtils::cublas_handle, sideMode, fillMode, m, n, (float2*)&alpha, (float2*)a, lda, (float2*)b, ldb, (float2*)&beta, (float2*)c, ldc)); + CHECK_CUBLAS(cublasCsymm(BlasUtils::cublas_handle, sideMode, fillMode, m, n, (float2*)&alpha, (float2*)a, lda, (float2*)b, ldb, (float2*)&beta, (float2*)c, ldc)); } #endif else { @@ -434,7 +435,7 @@ void BlasConnector::symm_cm(const char side, const char uplo, const int m, const else if (device_type == base_device::AbacusDevice_t::GpuDevice) { cublasSideMode_t sideMode = BlasUtils::judge_side(side); cublasFillMode_t fillMode = BlasUtils::judge_fill(uplo); - cublasErrcheck(cublasZsymm(BlasUtils::cublas_handle, sideMode, fillMode, m, n, (double2*)&alpha, (double2*)a, lda, (double2*)b, ldb, (double2*)&beta, (double2*)c, ldc)); + CHECK_CUBLAS(cublasZsymm(BlasUtils::cublas_handle, sideMode, fillMode, m, n, (double2*)&alpha, (double2*)a, lda, (double2*)b, ldb, (double2*)&beta, (double2*)c, ldc)); } #endif else { @@ -469,7 +470,7 @@ void BlasConnector::hemm_cm(char side, char uplo, int m, int n, else if (device_type == base_device::AbacusDevice_t::GpuDevice) { cublasSideMode_t sideMode = BlasUtils::judge_side(side); cublasFillMode_t fillMode = BlasUtils::judge_fill(uplo); - cublasErrcheck(cublasChemm(BlasUtils::cublas_handle, sideMode, fillMode, m, n, (float2*)&alpha, (float2*)a, lda, (float2*)b, ldb, (float2*)&beta, (float2*)c, ldc)); + CHECK_CUBLAS(cublasChemm(BlasUtils::cublas_handle, sideMode, fillMode, m, n, (float2*)&alpha, (float2*)a, lda, (float2*)b, ldb, (float2*)&beta, (float2*)c, ldc)); } #endif else { @@ -490,7 +491,7 @@ void BlasConnector::hemm_cm(char side, char uplo, int m, int n, else if (device_type == base_device::AbacusDevice_t::GpuDevice) { cublasSideMode_t sideMode = BlasUtils::judge_side(side); cublasFillMode_t fillMode = BlasUtils::judge_fill(uplo); - cublasErrcheck(cublasZhemm(BlasUtils::cublas_handle, sideMode, fillMode, m, n, (double2*)&alpha, (double2*)a, lda, (double2*)b, ldb, (double2*)&beta, (double2*)c, ldc)); + CHECK_CUBLAS(cublasZhemm(BlasUtils::cublas_handle, sideMode, fillMode, m, n, (double2*)&alpha, (double2*)a, lda, (double2*)b, ldb, (double2*)&beta, (double2*)c, ldc)); } #endif else { @@ -505,10 +506,26 @@ void BlasConnector::gemv(const char trans, const int m, const int n, if (device_type == base_device::AbacusDevice_t::CpuDevice) { sgemv_(&trans, &m, &n, &alpha, A, &lda, X, &incx, &beta, Y, &incy); } +#ifdef __DSP + else if (device_type == base_device::AbacusDevice_t::DspDevice) { + mtfunc::sgemv_mth_(&trans, + &m, + &n, + &alpha, + A, + &lda, + X, + &incx, + &beta, + Y, + &incy, + GlobalV::MY_RANK % PARAM.inp.dsp_count); + } +#endif #ifdef __CUDA else if (device_type == base_device::AbacusDevice_t::GpuDevice) { cublasOperation_t cutransA = BlasUtils::judge_trans(false, trans, "gemv_op"); - cublasErrcheck(cublasSgemv(BlasUtils::cublas_handle, cutransA, m, n, &alpha, A, lda, X, incx, &beta, Y, incy)); + CHECK_CUBLAS(cublasSgemv(BlasUtils::cublas_handle, cutransA, m, n, &alpha, A, lda, X, incx, &beta, Y, incy)); } #endif else { @@ -523,10 +540,26 @@ void BlasConnector::gemv(const char trans, const int m, const int n, if (device_type == base_device::AbacusDevice_t::CpuDevice) { dgemv_(&trans, &m, &n, &alpha, A, &lda, X, &incx, &beta, Y, &incy); } +#ifdef __DSP + else if (device_type == base_device::AbacusDevice_t::DspDevice) { + mtfunc::dgemv_mth_(&trans, + &m, + &n, + &alpha, + A, + &lda, + X, + &incx, + &beta, + Y, + &incy, + GlobalV::MY_RANK % PARAM.inp.dsp_count); + } +#endif #ifdef __CUDA else if (device_type == base_device::AbacusDevice_t::GpuDevice) { cublasOperation_t cutransA = BlasUtils::judge_trans(false, trans, "gemv_op"); - cublasErrcheck(cublasDgemv(BlasUtils::cublas_handle, cutransA, m, n, &alpha, A, lda, X, incx, &beta, Y, incy)); + CHECK_CUBLAS(cublasDgemv(BlasUtils::cublas_handle, cutransA, m, n, &alpha, A, lda, X, incx, &beta, Y, incy)); } #endif else { @@ -541,12 +574,28 @@ void BlasConnector::gemv(const char trans, const int m, const int n, if (device_type == base_device::AbacusDevice_t::CpuDevice) { cgemv_(&trans, &m, &n, &alpha, A, &lda, X, &incx, &beta, Y, &incy); } +#ifdef __DSP + else if (device_type == base_device::AbacusDevice_t::DspDevice) { + mtfunc::cgemv_mth_(&trans, + &m, + &n, + &alpha, + A, + &lda, + X, + &incx, + &beta, + Y, + &incy, + GlobalV::MY_RANK % PARAM.inp.dsp_count); + } +#endif #ifdef __CUDA else if (device_type == base_device::AbacusDevice_t::GpuDevice) { cuFloatComplex alpha_cu = make_cuFloatComplex(alpha.real(), alpha.imag()); cuFloatComplex beta_cu = make_cuFloatComplex(beta.real(), beta.imag()); cublasOperation_t cutransA = BlasUtils::judge_trans(true, trans, "gemv_op"); - cublasErrcheck(cublasCgemv(BlasUtils::cublas_handle, cutransA, m, n, &alpha_cu, (cuFloatComplex*)A, lda, (cuFloatComplex*)X, incx, &beta_cu, (cuFloatComplex*)Y, incy)); + CHECK_CUBLAS(cublasCgemv(BlasUtils::cublas_handle, cutransA, m, n, &alpha_cu, (cuFloatComplex*)A, lda, (cuFloatComplex*)X, incx, &beta_cu, (cuFloatComplex*)Y, incy)); } #endif else { @@ -561,12 +610,28 @@ void BlasConnector::gemv(const char trans, const int m, const int n, if (device_type == base_device::AbacusDevice_t::CpuDevice) { zgemv_(&trans, &m, &n, &alpha, A, &lda, X, &incx, &beta, Y, &incy); } +#ifdef __DSP + else if (device_type == base_device::AbacusDevice_t::DspDevice) { + mtfunc::zgemv_mth_(&trans, + &m, + &n, + &alpha, + A, + &lda, + X, + &incx, + &beta, + Y, + &incy, + GlobalV::MY_RANK % PARAM.inp.dsp_count); + } +#endif #ifdef __CUDA else if (device_type == base_device::AbacusDevice_t::GpuDevice) { cuDoubleComplex alpha_cu = make_cuDoubleComplex(alpha.real(), alpha.imag()); cuDoubleComplex beta_cu = make_cuDoubleComplex(beta.real(), beta.imag()); cublasOperation_t cutransA = BlasUtils::judge_trans(true, trans, "gemv_op"); - cublasErrcheck(cublasZgemv(BlasUtils::cublas_handle, cutransA, m, n, &alpha_cu, (cuDoubleComplex*)A, lda, (cuDoubleComplex*)X, incx, &beta_cu, (cuDoubleComplex*)Y, incy)); + CHECK_CUBLAS(cublasZgemv(BlasUtils::cublas_handle, cutransA, m, n, &alpha_cu, (cuDoubleComplex*)A, lda, (cuDoubleComplex*)X, incx, &beta_cu, (cuDoubleComplex*)Y, incy)); } #endif else { diff --git a/source/source_base/module_external/blas_connector_vector.cpp b/source/source_base/module_external/blas_connector_vector.cpp index b5e0972946..db89fc07fb 100644 --- a/source/source_base/module_external/blas_connector_vector.cpp +++ b/source/source_base/module_external/blas_connector_vector.cpp @@ -22,7 +22,7 @@ void BlasConnector::axpy( const int n, const float alpha, const float *X, const } #ifdef __CUDA else if (device_type == base_device::AbacusDevice_t::GpuDevice) { - cublasErrcheck(cublasSaxpy(BlasUtils::cublas_handle, n, &alpha, X, incX, Y, incY)); + CHECK_CUBLAS(cublasSaxpy(BlasUtils::cublas_handle, n, &alpha, X, incX, Y, incY)); } #endif else { @@ -37,7 +37,7 @@ void BlasConnector::axpy( const int n, const double alpha, const double *X, cons } #ifdef __CUDA else if (device_type == base_device::AbacusDevice_t::GpuDevice) { - cublasErrcheck(cublasDaxpy(BlasUtils::cublas_handle, n, &alpha, X, incX, Y, incY)); + CHECK_CUBLAS(cublasDaxpy(BlasUtils::cublas_handle, n, &alpha, X, incX, Y, incY)); } #endif else { @@ -52,7 +52,7 @@ void BlasConnector::axpy( const int n, const std::complex alpha, const st } #ifdef __CUDA else if (device_type == base_device::AbacusDevice_t::GpuDevice) { - cublasErrcheck(cublasCaxpy(BlasUtils::cublas_handle, n, (float2*)&alpha, (float2*)X, incX, (float2*)Y, incY)); + CHECK_CUBLAS(cublasCaxpy(BlasUtils::cublas_handle, n, (float2*)&alpha, (float2*)X, incX, (float2*)Y, incY)); } #endif else { @@ -67,7 +67,7 @@ void BlasConnector::axpy( const int n, const std::complex alpha, const s } #ifdef __CUDA else if (device_type == base_device::AbacusDevice_t::GpuDevice) { - cublasErrcheck(cublasZaxpy(BlasUtils::cublas_handle, n, (double2*)&alpha, (double2*)X, incX, (double2*)Y, incY)); + CHECK_CUBLAS(cublasZaxpy(BlasUtils::cublas_handle, n, (double2*)&alpha, (double2*)X, incX, (double2*)Y, incY)); } #endif else { @@ -84,7 +84,7 @@ void BlasConnector::scal( const int n, const float alpha, float *X, const int i } #ifdef __CUDA else if (device_type == base_device::AbacusDevice_t::GpuDevice) { - cublasErrcheck(cublasSscal(BlasUtils::cublas_handle, n, &alpha, X, incX)); + CHECK_CUBLAS(cublasSscal(BlasUtils::cublas_handle, n, &alpha, X, incX)); } #endif else { @@ -99,7 +99,7 @@ void BlasConnector::scal( const int n, const double alpha, double *X, const int } #ifdef __CUDA else if (device_type == base_device::AbacusDevice_t::GpuDevice) { - cublasErrcheck(cublasDscal(BlasUtils::cublas_handle, n, &alpha, X, incX)); + CHECK_CUBLAS(cublasDscal(BlasUtils::cublas_handle, n, &alpha, X, incX)); } #endif else { @@ -114,7 +114,7 @@ void BlasConnector::scal( const int n, const std::complex alpha, std::com } #ifdef __CUDA else if (device_type == base_device::AbacusDevice_t::GpuDevice) { - cublasErrcheck(cublasCscal(BlasUtils::cublas_handle, n, (float2*)&alpha, (float2*)X, incX)); + CHECK_CUBLAS(cublasCscal(BlasUtils::cublas_handle, n, (float2*)&alpha, (float2*)X, incX)); } #endif else { @@ -129,7 +129,7 @@ void BlasConnector::scal( const int n, const std::complex alpha, std::co } #ifdef __CUDA else if (device_type == base_device::AbacusDevice_t::GpuDevice) { - cublasErrcheck(cublasZscal(BlasUtils::cublas_handle, n, (double2*)&alpha, (double2*)X, incX)); + CHECK_CUBLAS(cublasZscal(BlasUtils::cublas_handle, n, (double2*)&alpha, (double2*)X, incX)); } #endif else { @@ -147,7 +147,7 @@ float BlasConnector::dot( const int n, const float*const X, const int incX, cons #ifdef __CUDA else if (device_type == base_device::AbacusDevice_t::GpuDevice){ float result = 0.0; - cublasErrcheck(cublasSdot(BlasUtils::cublas_handle, n, X, incX, Y, incY, &result)); + CHECK_CUBLAS(cublasSdot(BlasUtils::cublas_handle, n, X, incX, Y, incY, &result)); return result; } #endif @@ -164,7 +164,7 @@ double BlasConnector::dot( const int n, const double*const X, const int incX, co #ifdef __CUDA else if (device_type == base_device::AbacusDevice_t::GpuDevice){ double result = 0.0; - cublasErrcheck(cublasDdot(BlasUtils::cublas_handle, n, X, incX, Y, incY, &result)); + CHECK_CUBLAS(cublasDdot(BlasUtils::cublas_handle, n, X, incX, Y, incY, &result)); return result; } #endif @@ -276,7 +276,7 @@ float BlasConnector::nrm2( const int n, const float *X, const int incX, base_dev #ifdef __CUDA else if (device_type == base_device::AbacusDevice_t::GpuDevice){ float result = 0.0; - cublasErrcheck(cublasSnrm2(BlasUtils::cublas_handle, n, X, incX, &result)); + CHECK_CUBLAS(cublasSnrm2(BlasUtils::cublas_handle, n, X, incX, &result)); return result; } #endif @@ -294,7 +294,7 @@ double BlasConnector::nrm2( const int n, const double *X, const int incX, base_d #ifdef __CUDA else if (device_type == base_device::AbacusDevice_t::GpuDevice){ double result = 0.0; - cublasErrcheck(cublasDnrm2(BlasUtils::cublas_handle, n, X, incX, &result)); + CHECK_CUBLAS(cublasDnrm2(BlasUtils::cublas_handle, n, X, incX, &result)); return result; } #endif @@ -312,7 +312,7 @@ double BlasConnector::nrm2( const int n, const std::complex *X, const in #ifdef __CUDA else if (device_type == base_device::AbacusDevice_t::GpuDevice){ double result = 0.0; - cublasErrcheck(cublasDznrm2(BlasUtils::cublas_handle, n, (double2*)X, incX, &result)); + CHECK_CUBLAS(cublasDznrm2(BlasUtils::cublas_handle, n, (double2*)X, incX, &result)); return result; } #endif @@ -322,7 +322,17 @@ double BlasConnector::nrm2( const int n, const std::complex *X, const in } // copies a into b -void BlasConnector::copy(const long n, const double *a, const int incx, double *b, const int incy, base_device::AbacusDevice_t device_type) +void BlasConnector::copy(const int n, const float *a, const int incx, float *b, const int incy, base_device::AbacusDevice_t device_type) +{ + if (device_type == base_device::AbacusDevice_t::CpuDevice) { + scopy_(&n, a, &incx, b, &incy); + } + else { + throw std::invalid_argument("device_type = " + std::to_string(device_type) + " in " + std::string(__FILE__) + " line " + std::to_string(__LINE__)); + } +} + +void BlasConnector::copy(const int n, const double *a, const int incx, double *b, const int incy, base_device::AbacusDevice_t device_type) { if (device_type == base_device::AbacusDevice_t::CpuDevice) { dcopy_(&n, a, &incx, b, &incy); @@ -332,7 +342,17 @@ void BlasConnector::copy(const long n, const double *a, const int incx, double * } } -void BlasConnector::copy(const long n, const std::complex *a, const int incx, std::complex *b, const int incy, base_device::AbacusDevice_t device_type) +void BlasConnector::copy(const int n, const std::complex *a, const int incx, std::complex *b, const int incy, base_device::AbacusDevice_t device_type) +{ + if (device_type == base_device::AbacusDevice_t::CpuDevice) { + ccopy_(&n, a, &incx, b, &incy); + } + else { + throw std::invalid_argument("device_type = " + std::to_string(device_type) + " in " + std::string(__FILE__) + " line " + std::to_string(__LINE__)); + } +} + +void BlasConnector::copy(const int n, const std::complex *a, const int incx, std::complex *b, const int incy, base_device::AbacusDevice_t device_type) { if (device_type == base_device::AbacusDevice_t::CpuDevice) { zcopy_(&n, a, &incx, b, &incy); @@ -348,7 +368,7 @@ void vector_mul_vector(const int& dim, T* result, const T* vector1, const T* vec using Real = typename GetTypeReal::type; if (device_type == base_device::AbacusDevice_t::CpuDevice) { #ifdef _OPENMP -#pragma omp parallel for schedule(static, 4096 / sizeof(Real)) +#pragma omp parallel for schedule(static) #endif for (int i = 0; i < dim; i++) { @@ -371,7 +391,7 @@ void vector_div_vector(const int& dim, T* result, const T* vector1, const T* vec using Real = typename GetTypeReal::type; if (device_type == base_device::AbacusDevice_t::CpuDevice) { #ifdef _OPENMP -#pragma omp parallel for schedule(static, 4096 / sizeof(Real)) +#pragma omp parallel for schedule(static) #endif for (int i = 0; i < dim; i++) { @@ -392,7 +412,7 @@ void vector_add_vector(const int& dim, float *result, const float *vector1, cons { if (device_type == base_device::CpuDevice){ #ifdef _OPENMP -#pragma omp parallel for schedule(static, 8192 / sizeof(float)) +#pragma omp parallel for schedule(static) #endif for (int i = 0; i < dim; i++) { @@ -413,7 +433,7 @@ void vector_add_vector(const int& dim, double *result, const double *vector1, co { if (device_type == base_device::CpuDevice){ #ifdef _OPENMP -#pragma omp parallel for schedule(static, 8192 / sizeof(double)) +#pragma omp parallel for schedule(static) #endif for (int i = 0; i < dim; i++) { @@ -434,7 +454,7 @@ void vector_add_vector(const int& dim, std::complex *result, const std::c { if (device_type == base_device::CpuDevice){ #ifdef _OPENMP -#pragma omp parallel for schedule(static, 8192 / sizeof(std::complex)) +#pragma omp parallel for schedule(static) #endif for (int i = 0; i < dim; i++) { @@ -455,7 +475,7 @@ void vector_add_vector(const int& dim, std::complex *result, const std:: { if (device_type == base_device::CpuDevice){ #ifdef _OPENMP -#pragma omp parallel for schedule(static, 8192 / sizeof(std::complex)) +#pragma omp parallel for schedule(static) #endif for (int i = 0; i < dim; i++) { diff --git a/source/source_base/module_external/lapack_connector.h b/source/source_base/module_external/lapack_connector.h index 1f691fe3c2..5007aedabf 100644 --- a/source/source_base/module_external/lapack_connector.h +++ b/source/source_base/module_external/lapack_connector.h @@ -1,5 +1,26 @@ -#ifndef LAPACKCONNECTOR_HPP -#define LAPACKCONNECTOR_HPP +/** + * @file lapack_connector.h + * + * @brief This is a wrapper of some LAPACK routines. + * \b Row-Major version. + * + * @warning MAY BE DEPRECATED IN THE FUTURE. + * @warning For Column-major version, please refer to \c source/source_base/module_container/base/third_party/lapack.h. + * + * @note + * !!! Note that + * This wrapper is a C++ style wrapper of LAPACK routines, + * i.e., assuming that the input matrices are in \b row-major order. + * The data layout in C++ is row-major, C style, + * while the original LAPACK is column-major, fortran style. + * (ModuleBase::ComplexMatrix is in row-major order) + * The wrapper will do the data transformation between + * row-major and column-major order automatically. + * + */ + +#ifndef LAPACK_CONNECTOR_HPP +#define LAPACK_CONNECTOR_HPP #include #include @@ -11,181 +32,276 @@ //Naming convention of lapack subroutines : ammxxx, where //"a" specifies the data type: -// - d stands for double -// - z stands for complex double +// - s stands for float +// - d stands for double +// - c stands for complex float +// - z stands for complex double //"mm" specifies the type of matrix, for example: // - he stands for hermitian // - sy stands for symmetric //"xxx" specifies the type of problem, for example: // - gv stands for generalized eigenvalue +// The following declarations cover only a subset of LAPACK routines. +// If you need a LAPACK function that is not included here, feel free to add its declaration as needed. extern "C" { -// solve the generalized eigenproblem Ax=eBx, where A is Hermitian and complex couble - // zhegv_ & zhegvd_ returns all eigenvalues while zhegvx_ returns selected ones - void dsygvd_(const int* itype, const char* jobz, const char* uplo, const int* n, - double* a, const int* lda, - const double* b, const int* ldb, double* w, - double* work, int* lwork, - int* iwork, int* liwork, int* info); - - void chegvd_(const int* itype, const char* jobz, const char* uplo, const int* n, +// === Generalized Hermitian-definite eigenproblems === +void dsygvd_(const int* itype, const char* jobz, const char* uplo, const int* n, + double* a, const int* lda, + double* b, const int* ldb, + double* w, + double* work, const int* lwork, + int* iwork, const int* liwork, + int* info); + +void chegvd_(const int* itype, const char* jobz, const char* uplo, const int* n, std::complex* a, const int* lda, - const std::complex* b, const int* ldb, float* w, - std::complex* work, int* lwork, float* rwork, int* lrwork, - int* iwork, int* liwork, int* info); - - void zhegvd_(const int* itype, const char* jobz, const char* uplo, const int* n, - std::complex* a, const int* lda, - const std::complex* b, const int* ldb, double* w, - std::complex* work, int* lwork, double* rwork, int* lrwork, - int* iwork, int* liwork, int* info); - - void dsyevx_(const char* jobz, const char* range, const char* uplo, const int* n, - double* a, const int* lda, - const double* vl, const double* vu, const int* il, const int* iu, const double* abstol, - const int* m, double* w, double* z, const int* ldz, - double* work, const int* lwork, double* rwork, int* iwork, int* ifail, int* info); - - void cheevx_(const char* jobz, const char* range, const char* uplo, const int* n, - std::complex *a, const int* lda, - const float* vl, const float* vu, const int* il, const int* iu, const float* abstol, - const int* m, float* w, std::complex *z, const int *ldz, - std::complex *work, const int* lwork, float* rwork, int* iwork, int* ifail, int* info); - - void zheevx_(const char* jobz, const char* range, const char* uplo, const int* n, - std::complex *a, const int* lda, - const double* vl, const double* vu, const int* il, const int* iu, const double* abstol, - const int* m, double* w, std::complex *z, const int *ldz, - std::complex *work, const int* lwork, double* rwork, int* iwork, int* ifail, int* info); - - - void dsygvx_(const int* itype, const char* jobz, const char* range, const char* uplo, - const int* n, double* A, const int* lda, double* B, const int* ldb, - const double* vl, const double* vu, const int* il, const int* iu, - const double* abstol, const int* m, double* w, double* Z, const int* ldz, - double* work, const int* lwork, int* iwork, int* ifail, int* info); - - void chegvx_(const int* itype,const char* jobz,const char* range,const char* uplo, - const int* n,std::complex *a,const int* lda,std::complex *b, - const int* ldb,const float* vl,const float* vu,const int* il, - const int* iu,const float* abstol,const int* m,float* w, - std::complex *z,const int *ldz,std::complex *work,const int* lwork, - float* rwork,int* iwork,int* ifail,int* info); - - void zhegvx_(const int* itype,const char* jobz,const char* range,const char* uplo, - const int* n,std::complex *a,const int* lda,std::complex *b, - const int* ldb,const double* vl,const double* vu,const int* il, - const int* iu,const double* abstol,const int* m,double* w, - std::complex *z,const int *ldz,std::complex *work,const int* lwork, - double* rwork,int* iwork,int* ifail,int* info); - - void zhegv_(const int* itype,const char* jobz,const char* uplo,const int* n, - std::complex* a,const int* lda,std::complex* b,const int* ldb, - double* w,std::complex* work,int* lwork,double* rwork,int* info); - void chegv_(const int* itype,const char* jobz,const char* uplo,const int* n, - std::complex* a,const int* lda,std::complex* b,const int* ldb, - float* w,std::complex* work,int* lwork,float* rwork,int* info); - void dsygv_(const int* itype, const char* jobz,const char* uplo, const int* n, - double* a,const int* lda,double* b,const int* ldb, - double* w,double* work,int* lwork,int* info); - - // solve the eigenproblem Ax=ex, where A is Hermitian and complex couble - // zheev_ returns all eigenvalues while zheevx_ returns selected ones - void zheev_(const char* jobz,const char* uplo,const int* n,std::complex *a, - const int* lda,double* w,std::complex* work,const int* lwork, - double* rwork,int* info); - void cheev_(const char* jobz,const char* uplo,const int* n,std::complex *a, - const int* lda,float* w,std::complex* work,const int* lwork, - float* rwork,int* info); - void dsyev_(const char* jobz,const char* uplo,const int* n,double *a, - const int* lda,double* w,double* work,const int* lwork, int* info); - - // solve the eigenproblem Ax=ex, where A is a general matrix - void dgeev_(const char* jobvl, const char* jobvr, const int* n, double* a, const int* lda, - double* wr, double* wi, double* vl, const int* ldvl, double* vr, const int* ldvr, - double* work, const int* lwork, int* info); - void zgeev_(const char* jobvl, const char* jobvr, const int* n, std::complex* a, const int* lda, - std::complex* w, std::complex* vl, const int* ldvl, std::complex* vr, const int* ldvr, - std::complex* work, const int* lwork, double* rwork, int* info); - // liuyu add 2023-10-03 - // dgetri and dgetrf computes the inverse of a n*n real matrix - void dgetri_(const int* n, double* a, const int* lda, const int* ipiv, double* work, const int* lwork, int* info); - void dgetrf_(const int* m, const int* n, double* a, const int* lda, int* ipiv, int* info); - - // dsytrf_ computes the Bunch-Kaufman factorization of a double precision - // symmetric matrix, while dsytri takes its output to perform martrix inversion - void dsytrf_(const char* uplo, const int* n, double * a, const int* lda, - int *ipiv,double *work, const int* lwork ,int *info); - void dsytri_(const char* uplo,const int* n,double *a, const int *lda, - int *ipiv, double * work,int *info); - // Peize Lin add dsptrf and dsptri 2016-06-21, to compute inverse real symmetry indefinit matrix. - // dpotrf computes the Cholesky factorization of a real symmetric positive definite matrix - // while dpotri taks its output to perform matrix inversion - void spotrf_(const char*const uplo, const int*const n, float*const A, const int*const lda, int*const info); - void dpotrf_(const char*const uplo, const int*const n, double*const A, const int*const lda, int*const info); - void cpotrf_(const char*const uplo, const int*const n, std::complex*const A, const int*const lda, int*const info); - void zpotrf_(const char*const uplo, const int*const n, std::complex*const A, const int*const lda, int*const info); - void spotri_(const char*const uplo, const int*const n, float*const A, const int*const lda, int*const info); - void dpotri_(const char*const uplo, const int*const n, double*const A, const int*const lda, int*const info); - void cpotri_(const char*const uplo, const int*const n, std::complex*const A, const int*const lda, int*const info); - void zpotri_(const char*const uplo, const int*const n, std::complex*const A, const int*const lda, int*const info); - - // zgetrf computes the LU factorization of a general matrix - // while zgetri takes its output to perform matrix inversion - void zgetrf_(const int* m, const int *n, std::complex *A, const int *lda, int *ipiv, int* info); - void zgetri_(const int* n, std::complex* A, const int* lda, const int* ipiv, std::complex* work, const int* lwork, int* info); - - // if trans=='N': C = alpha * A * A.H + beta * C - // if trans=='C': C = alpha * A.H * A + beta * C - void zherk_(const char *uplo, const char *trans, const int *n, const int *k, - const double *alpha, const std::complex *A, const int *lda, - const double *beta, std::complex *C, const int *ldc); - void cherk_(const char* uplo, const char* trans, const int* n, const int* k, - const float* alpha, const std::complex* A, const int* lda, - const float* beta, std::complex* C, const int* ldc); - - // computes all eigenvalues of a symmetric tridiagonal matrix - // using the Pal-Walker-Kahan variant of the QL or QR algorithm. - void dsterf_(int *n, double *d, double *e, int *info); - // computes the eigenvectors of a real symmetric tridiagonal - // matrix T corresponding to specified eigenvalues - void dstein_(int *n, double* d, double *e, int *m, double *w, - int* block, int* isplit, double* z, int *lda, double *work, - int* iwork, int* ifail, int *info); - // computes the eigenvectors of a complex symmetric tridiagonal - // matrix T corresponding to specified eigenvalues - void zstein_(int *n, double* d, double *e, int *m, double *w, - int* block, int* isplit, std::complex* z, int *lda, double *work, - int* iwork, int* ifail, int *info); - - // computes the Cholesky factorization of a symmetric - // positive definite matrix A. - void dpotf2_(char *uplo, int *n, double *a, int *lda, int *info); - void zpotf2_(char *uplo,int *n,std::complex *a, int *lda, int *info); - - // reduces a symmetric definite generalized eigenproblem to standard form - // using the factorization results obtained from spotrf - void dsygs2_(int *itype, char *uplo, int *n, double *a, int *lda, double *b, int *ldb, int *info); - void zhegs2_(int *itype, char *uplo, int *n, std::complex *a, int *lda, std::complex *b, int *ldb, int *info); - - // copies a into b - void dlacpy_(char *uplo, int *m, int *n, double* a, int *lda, double *b, int *ldb); - void zlacpy_(char *uplo, int *m, int *n, std::complex* a, int *lda, std::complex *b, int *ldb); - - // generates a real elementary reflector H of order n, such that - // H * ( alpha ) = ( beta ), H is unitary. - // ( x ) ( 0 ) - void dlarfg_(int *n, double *alpha, double *x, int *incx, double *tau); - void zlarfg_(int *n, std::complex *alpha, std::complex *x, int *incx, std::complex *tau); - - // solve a tridiagonal linear system - void dgtsv_(int* N, int* NRHS, double* DL, double* D, double* DU, double* B, int* LDB, int* INFO); - - // solve Ax = b - void dsysv_(const char* uplo, const int* n, const int* m, double * a, const int* lda, - int *ipiv, double * b, const int* ldb, double *work, const int* lwork ,int *info); -} + std::complex* b, const int* ldb, + float* w, + std::complex* work, const int* lwork, + float* rwork, const int* lrwork, + int* iwork, const int* liwork, + int* info); + +void zhegvd_(const int* itype, const char* jobz, const char* uplo, const int* n, + std::complex* a, const int* lda, + std::complex* b, const int* ldb, + double* w, + std::complex* work, const int* lwork, + double* rwork, const int* lrwork, + int* iwork, const int* liwork, + int* info); + +// === Selected eigenvalues/vectors: standard Hermitian === + +void dsyevx_(const char* jobz, const char* range, const char* uplo, const int* n, + double* a, const int* lda, + const double* vl, const double* vu, + const int* il, const int* iu, + const double* abstol, + int* m, double* w, double* z, const int* ldz, + double* work, const int* lwork, + int* iwork, int* ifail, + int* info); + +void cheevx_(const char* jobz, const char* range, const char* uplo, const int* n, + std::complex* a, const int* lda, + const float* vl, const float* vu, + const int* il, const int* iu, + const float* abstol, + int* m, float* w, std::complex* z, const int* ldz, + std::complex* work, const int* lwork, + float* rwork, int* iwork, int* ifail, + int* info); + +void zheevx_(const char* jobz, const char* range, const char* uplo, const int* n, + std::complex* a, const int* lda, + const double* vl, const double* vu, + const int* il, const int* iu, + const double* abstol, + int* m, double* w, std::complex* z, const int* ldz, + std::complex* work, const int* lwork, + double* rwork, int* iwork, int* ifail, + int* info); + +// === Selected eigenvalues/vectors: generalized Hermitian === + +void dsygvx_(const int* itype, const char* jobz, const char* range, const char* uplo, + const int* n, + double* a, const int* lda, + double* b, const int* ldb, + const double* vl, const double* vu, + const int* il, const int* iu, + const double* abstol, + int* m, double* w, double* z, const int* ldz, + double* work, const int* lwork, + int* iwork, int* ifail, + int* info); + +void chegvx_(const int* itype, const char* jobz, const char* range, const char* uplo, + const int* n, + std::complex* a, const int* lda, + std::complex* b, const int* ldb, + const float* vl, const float* vu, + const int* il, const int* iu, + const float* abstol, + int* m, float* w, std::complex* z, const int* ldz, + std::complex* work, const int* lwork, + float* rwork, int* iwork, int* ifail, + int* info); + +void zhegvx_(const int* itype, const char* jobz, const char* range, const char* uplo, + const int* n, + std::complex* a, const int* lda, + std::complex* b, const int* ldb, + const double* vl, const double* vu, + const int* il, const int* iu, + const double* abstol, + int* m, double* w, std::complex* z, const int* ldz, + std::complex* work, const int* lwork, + double* rwork, int* iwork, int* ifail, + int* info); + +// === Generalized Hermitian: all eigenvalues (simple driver) === + +void dsygv_(const int* itype, const char* jobz, const char* uplo, const int* n, + double* a, const int* lda, + double* b, const int* ldb, + double* w, + double* work, const int* lwork, + int* info); + +void chegv_(const int* itype, const char* jobz, const char* uplo, const int* n, + std::complex* a, const int* lda, + std::complex* b, const int* ldb, + float* w, + std::complex* work, const int* lwork, + float* rwork, + int* info); + +void zhegv_(const int* itype, const char* jobz, const char* uplo, const int* n, + std::complex* a, const int* lda, + std::complex* b, const int* ldb, + double* w, + std::complex* work, const int* lwork, + double* rwork, + int* info); + +// === Standard Hermitian eigenproblem === + + void ssyev_(const char* jobz, + const char* uplo, + const int* n, + float* a, + const int* lda, + float* w, + float* work, + const int* lwork, + int* info); + void dsyev_(const char* jobz, + const char* uplo, + const int* n, + double* a, + const int* lda, + double* w, + double* work, + const int* lwork, + int* info); + +void cheev_(const char* jobz, const char* uplo, const int* n, + std::complex* a, const int* lda, + float* w, + std::complex* work, const int* lwork, + float* rwork, + int* info); + +void zheev_(const char* jobz, const char* uplo, const int* n, + std::complex* a, const int* lda, + double* w, + std::complex* work, const int* lwork, + double* rwork, + int* info); + +// === General (non-Hermitian) eigenproblem === + +void dgeev_(const char* jobvl, const char* jobvr, const int* n, + double* a, const int* lda, + double* wr, double* wi, + double* vl, const int* ldvl, + double* vr, const int* ldvr, + double* work, const int* lwork, + int* info); + +void zgeev_(const char* jobvl, const char* jobvr, const int* n, + std::complex* a, const int* lda, + std::complex* w, + std::complex* vl, const int* ldvl, + std::complex* vr, const int* ldvr, + std::complex* work, const int* lwork, + double* rwork, + int* info); + +// === Matrix inversion (LU) === + +void dgetrf_(const int* m, const int* n, double* a, const int* lda, + int* ipiv, int* info); + +void dgetri_(const int* n, double* a, const int* lda, + const int* ipiv, + double* work, const int* lwork, + int* info); + +// === Symmetric indefinite inversion (Bunch-Kaufman) === + +void dsytrf_(const char* uplo, const int* n, double* a, const int* lda, + int* ipiv, double* work, const int* lwork, int* info); + +void dsytri_(const char* uplo, const int* n, double* a, const int* lda, + const int* ipiv, double* work, int* info); + +// === Cholesky factorization & inversion === + +void spotrf_(const char* uplo, const int* n, float* a, const int* lda, int* info); +void dpotrf_(const char* uplo, const int* n, double* a, const int* lda, int* info); +void cpotrf_(const char* uplo, const int* n, std::complex* a, const int* lda, int* info); +void zpotrf_(const char* uplo, const int* n, std::complex* a, const int* lda, int* info); + +void spotri_(const char* uplo, const int* n, float* a, const int* lda, int* info); +void dpotri_(const char* uplo, const int* n, double* a, const int* lda, int* info); +void cpotri_(const char* uplo, const int* n, std::complex* a, const int* lda, int* info); +void zpotri_(const char* uplo, const int* n, std::complex* a, const int* lda, int* info); + +// === Complex LU inversion === + +void zgetrf_(const int* m, const int* n, std::complex* a, const int* lda, + int* ipiv, int* info); + +void zgetri_(const int* n, std::complex* a, const int* lda, + const int* ipiv, + std::complex* work, const int* lwork, + int* info); + + +// === Tridiagonal eigen solvers === + +void dsterf_(const int* n, double* d, double* e, int* info); + +void dstein_(const int* n, const double* d, const double* e, + const int* m, const double* w, + const int* iblock, const int* isplit, + double* z, const int* ldz, + double* work, int* iwork, int* ifail, + int* info); + +void zstein_(const int* n, const double* d, const double* e, + const int* m, const double* w, + const int* iblock, const int* isplit, + std::complex* z, const int* ldz, + double* work, int* iwork, int* ifail, + int* info); + +// === Unblocked Cholesky (level 2 BLAS) === + +void dpotf2_(const char* uplo, const int* n, double* a, const int* lda, int* info); +void zpotf2_(const char* uplo, const int* n, std::complex* a, const int* lda, int* info); + +// === Tridiagonal solver === + +void dgtsv_(const int* n, const int* nrhs, + double* dl, double* d, double* du, + double* b, const int* ldb, + int* info); + +// === Symmetric indefinite linear solver === + +void dsysv_(const char* uplo, const int* n, const int* nrhs, + double* a, const int* lda, + int* ipiv, + double* b, const int* ldb, + double* work, const int* lwork, + int* info); +} // extern "C" #ifdef GATHER_INFO #define zhegvx_ zhegvx_i @@ -203,7 +319,7 @@ void zhegvx_i(const int* itype, const int* il, const int* iu, const double* abstol, - const int* m, + int* m, double* w, std::complex* z, const int* ldz, @@ -218,9 +334,8 @@ void zhegvx_i(const int* itype, // Class LapackConnector provide the connector to fortran lapack routine. // The entire function in this class are static and inline function. // Usage example: LapackConnector::functionname(parameter list). -class LapackConnector +namespace LapackConnector { -private: // Transpose the std::complex matrix to the fortran-form real-std::complex array. static inline std::complex* transpose(const ModuleBase::ComplexMatrix& a, const int n, const int lda) @@ -327,7 +442,6 @@ class LapackConnector } } -public: // wrap function of fortran lapack routine zheev. static inline void zheev( const char jobz, @@ -467,5 +581,5 @@ class LapackConnector const char trans_changed = change_trans_NC(trans); cherk_(&uplo_changed, &trans_changed, &n, &k, &alpha, A, &lda, &beta, C, &ldc); } -}; -#endif // LAPACKCONNECTOR_HPP +} // namespace LapackConnector +#endif // LAPACK_CONNECTOR_HPP diff --git a/source/source_base/module_external/lapack_wrapper.h b/source/source_base/module_external/lapack_wrapper.h deleted file mode 100644 index acccdc0454..0000000000 --- a/source/source_base/module_external/lapack_wrapper.h +++ /dev/null @@ -1,484 +0,0 @@ -#ifndef LAPACK_HPP -#define LAPACK_HPP -#include -extern "C" -{ - // ================================================================================= - // gvd: - void dsygvd_(const int* itype, const char* jobz, const char* uplo, const int* n, - double* a, const int* lda, - const double* b, const int* ldb, double* w, - double* work, int* lwork, - int* iwork, int* liwork, int* info); - - void chegvd_(const int* itype, const char* jobz, const char* uplo, const int* n, - std::complex* a, const int* lda, - const std::complex* b, const int* ldb, float* w, - std::complex* work, int* lwork, float* rwork, int* lrwork, - int* iwork, int* liwork, int* info); - - void zhegvd_(const int* itype, const char* jobz, const char* uplo, const int* n, - std::complex* a, const int* lda, - const std::complex* b, const int* ldb, double* w, - std::complex* work, int* lwork, double* rwork, int* lrwork, - int* iwork, int* liwork, int* info); - // ================================================================================= - - // ================================================================================= - // evx - void dsyevx_(const char* jobz, const char* range, const char* uplo, const int* n, - double* a, const int* lda, - const double* vl, const double* vu, const int* il, const int* iu, const double* abstol, - const int* m, double* w, double* z, const int* ldz, - double* work, const int* lwork, double* rwork, int* iwork, int* ifail, int* info); - - void cheevx_(const char* jobz, const char* range, const char* uplo, const int* n, - std::complex *a, const int* lda, - const float* vl, const float* vu, const int* il, const int* iu, const float* abstol, - const int* m, float* w, std::complex *z, const int *ldz, - std::complex *work, const int* lwork, float* rwork, int* iwork, int* ifail, int* info); - - void zheevx_(const char* jobz, const char* range, const char* uplo, const int* n, - std::complex *a, const int* lda, - const double* vl, const double* vu, const int* il, const int* iu, const double* abstol, - const int* m, double* w, std::complex *z, const int *ldz, - std::complex *work, const int* lwork, double* rwork, int* iwork, int* ifail, int* info); - // ================================================================================= - - - // ================================================================================= - // gvx - void dsygvx_(const int* itype, const char* jobz, const char* range, const char* uplo, - const int* n, double* A, const int* lda, double* B, const int* ldb, - const double* vl, const double* vu, const int* il, const int* iu, - const double* abstol, const int* m, double* w, double* Z, const int* ldz, - double* work, const int* lwork, int* iwork, int* ifail, int* info); - - void chegvx_(const int* itype,const char* jobz,const char* range,const char* uplo, - const int* n,std::complex *a,const int* lda,std::complex *b, - const int* ldb,const float* vl,const float* vu,const int* il, - const int* iu,const float* abstol,const int* m,float* w, - std::complex *z,const int *ldz,std::complex *work,const int* lwork, - float* rwork,int* iwork,int* ifail,int* info); - - void zhegvx_(const int* itype,const char* jobz,const char* range,const char* uplo, - const int* n,std::complex *a,const int* lda,std::complex *b, - const int* ldb,const double* vl,const double* vu,const int* il, - const int* iu,const double* abstol,const int* m,double* w, - std::complex *z,const int *ldz,std::complex *work,const int* lwork, - double* rwork,int* iwork,int* ifail,int* info); - // ================================================================================= - - // ================================================================================= - // gv - void zhegv_(const int* itype,const char* jobz,const char* uplo,const int* n, - std::complex* a,const int* lda,std::complex* b,const int* ldb, - double* w,std::complex* work,int* lwork,double* rwork,int* info); - void chegv_(const int* itype,const char* jobz,const char* uplo,const int* n, - std::complex* a,const int* lda,std::complex* b,const int* ldb, - float* w,std::complex* work,int* lwork,float* rwork,int* info); - void dsygv_(const int* itype, const char* jobz,const char* uplo, const int* n, - double* a,const int* lda,double* b,const int* ldb, - double* w,double* work,int* lwork,int* info); - // ================================================================================= - -} - -class LapackWrapper -{ - private: - public: - // wrap function of fortran lapack routine zhegvd. (pointer version) - static inline void xhegvd(const int itype, - const char jobz, - const char uplo, - const int n, - double* a, - const int lda, - const double* b, - const int ldb, - double* w, - double* work, - int lwork, - double* rwork, - int lrwork, - int* iwork, - int liwork, - int& info) - { - // call the fortran routine - dsygvd_(&itype, &jobz, &uplo, &n, a, &lda, b, &ldb, w, work, &lwork, iwork, &liwork, &info); - } - - // wrap function of fortran lapack routine zhegvd. (pointer version) - static inline void xhegvd(const int itype, - const char jobz, - const char uplo, - const int n, - std::complex* a, - const int lda, - const std::complex* b, - const int ldb, - float* w, - std::complex* work, - int lwork, - float* rwork, - int lrwork, - int* iwork, - int liwork, - int& info) - { - // call the fortran routine - chegvd_(&itype, &jobz, &uplo, &n, a, &lda, b, &ldb, w, work, &lwork, rwork, &lrwork, iwork, &liwork, &info); - } - - // wrap function of fortran lapack routine zhegvd. - static inline void xhegvd(const int itype, - const char jobz, - const char uplo, - const int n, - std::complex* a, - const int lda, - const std::complex* b, - const int ldb, - double* w, - std::complex* work, - int lwork, - double* rwork, - int lrwork, - int* iwork, - int liwork, - int& info) - { - // call the fortran routine - zhegvd_(&itype, &jobz, &uplo, &n, a, &lda, b, &ldb, w, work, &lwork, rwork, &lrwork, iwork, &liwork, &info); - } - - // wrap function of fortran lapack routine dsyevx. - static inline void xheevx(const int itype, - const char jobz, - const char range, - const char uplo, - const int n, - double* a, - const int lda, - const double vl, - const double vu, - const int il, - const int iu, - const double abstol, - const int m, - double* w, - double* z, - const int ldz, - double* work, - const int lwork, - double* rwork, - int* iwork, - int* ifail, - int& info) - { - dsyevx_(&jobz, - &range, - &uplo, - &n, - a, - &lda, - &vl, - &vu, - &il, - &iu, - &abstol, - &m, - w, - z, - &ldz, - work, - &lwork, - rwork, - iwork, - ifail, - &info); - } - - // wrap function of fortran lapack routine cheevx. - static inline void xheevx(const int itype, - const char jobz, - const char range, - const char uplo, - const int n, - std::complex* a, - const int lda, - const float vl, - const float vu, - const int il, - const int iu, - const float abstol, - const int m, - float* w, - std::complex* z, - const int ldz, - std::complex* work, - const int lwork, - float* rwork, - int* iwork, - int* ifail, - int& info) - { - cheevx_(&jobz, - &range, - &uplo, - &n, - a, - &lda, - &vl, - &vu, - &il, - &iu, - &abstol, - &m, - w, - z, - &ldz, - work, - &lwork, - rwork, - iwork, - ifail, - &info); - } - - // wrap function of fortran lapack routine zheevx. - static inline void xheevx(const int itype, - const char jobz, - const char range, - const char uplo, - const int n, - std::complex* a, - const int lda, - const double vl, - const double vu, - const int il, - const int iu, - const double abstol, - const int m, - double* w, - std::complex* z, - const int ldz, - std::complex* work, - const int lwork, - double* rwork, - int* iwork, - int* ifail, - int& info) - { - zheevx_(&jobz, - &range, - &uplo, - &n, - a, - &lda, - &vl, - &vu, - &il, - &iu, - &abstol, - &m, - w, - z, - &ldz, - work, - &lwork, - rwork, - iwork, - ifail, - &info); - } - - // wrap function of fortran lapack routine xhegvx ( pointer version ). - static inline void xhegvx(const int itype, - const char jobz, - const char range, - const char uplo, - const int n, - std::complex* a, - const int lda, - std::complex* b, - const int ldb, - const float vl, - const float vu, - const int il, - const int iu, - const float abstol, - const int m, - float* w, - std::complex* z, - const int ldz, - std::complex* work, - const int lwork, - float* rwork, - int* iwork, - int* ifail, - int& info) - { - chegvx_(&itype, - &jobz, - &range, - &uplo, - &n, - a, - &lda, - b, - &ldb, - &vl, - &vu, - &il, - &iu, - &abstol, - &m, - w, - z, - &ldz, - work, - &lwork, - rwork, - iwork, - ifail, - &info); - } - - // wrap function of fortran lapack routine xhegvx ( pointer version ). - static inline void xhegvx(const int itype, - const char jobz, - const char range, - const char uplo, - const int n, - std::complex* a, - const int lda, - std::complex* b, - const int ldb, - const double vl, - const double vu, - const int il, - const int iu, - const double abstol, - const int m, - double* w, - std::complex* z, - const int ldz, - std::complex* work, - const int lwork, - double* rwork, - int* iwork, - int* ifail, - int& info) - { - zhegvx_(&itype, - &jobz, - &range, - &uplo, - &n, - a, - &lda, - b, - &ldb, - &vl, - &vu, - &il, - &iu, - &abstol, - &m, - w, - z, - &ldz, - work, - &lwork, - rwork, - iwork, - ifail, - &info); - } - // wrap function of fortran lapack routine xhegvx ( pointer version ). - static inline void xhegvx(const int itype, - const char jobz, - const char range, - const char uplo, - const int n, - double* a, - const int lda, - double* b, - const int ldb, - const double vl, - const double vu, - const int il, - const int iu, - const double abstol, - const int m, - double* w, - double* z, - const int ldz, - double* work, - const int lwork, - double* rwork, - int* iwork, - int* ifail, - int& info) - { - dsygvx_(&itype, &jobz, &range, &uplo, &n, a, &lda, b, &ldb, &vl, - &vu, &il, &iu, &abstol, &m, w, z, &ldz, work, &lwork, iwork, ifail, &info); - } - - // wrap function of fortran lapack routine xhegvx ( pointer version ). - static inline void xhegv(const int itype, - const char jobz, - const char uplo, - const int n, - double* a, - const int lda, - double* b, - const int ldb, - double* w, - double* work, - int lwork, - double* rwork, - int& info) - { - // TODO - } - - // wrap function of fortran lapack routine xhegvx ( pointer version ). - static inline void xhegv(const int itype, - const char jobz, - const char uplo, - const int n, - std::complex* a, - const int lda, - std::complex* b, - const int ldb, - float* w, - std::complex* work, - int lwork, - float* rwork, - int& info) - { - // TODO - } - // wrap function of fortran lapack routine xhegvx ( pointer version ). - static inline void xhegv(const int itype, - const char jobz, - const char uplo, - const int n, - std::complex* a, - const int lda, - std::complex* b, - const int ldb, - double* w, - std::complex* work, - int lwork, - double* rwork, - int& info) - { - zhegv_(&itype, &jobz, &uplo, &n, a, &lda, b, &ldb, w, work, &lwork, rwork, &info); - } -}; -#endif // LAPACK_HPP \ No newline at end of file diff --git a/source/source_basis/module_pw/module_fft/fft_base.h b/source/source_base/module_fft/fft_base.h similarity index 99% rename from source/source_basis/module_pw/module_fft/fft_base.h rename to source/source_base/module_fft/fft_base.h index 1721e4e3d2..1fcbc51412 100644 --- a/source/source_basis/module_pw/module_fft/fft_base.h +++ b/source/source_base/module_fft/fft_base.h @@ -2,7 +2,7 @@ #define FFT_BASE_H #include -namespace ModulePW +namespace ModuleBase { template class FFT_BASE @@ -160,5 +160,5 @@ template FFT_BASE::FFT_BASE(); template FFT_BASE::FFT_BASE(); template FFT_BASE::~FFT_BASE(); template FFT_BASE::~FFT_BASE(); -} // namespace ModulePW +} // namespace ModuleBase #endif // FFT_BASE_H diff --git a/source/source_basis/module_pw/module_fft/fft_bundle.cpp b/source/source_base/module_fft/fft_bundle.cpp similarity index 99% rename from source/source_basis/module_pw/module_fft/fft_bundle.cpp rename to source/source_base/module_fft/fft_bundle.cpp index 8e318c8d6d..67b38364b2 100644 --- a/source/source_basis/module_pw/module_fft/fft_bundle.cpp +++ b/source/source_base/module_fft/fft_bundle.cpp @@ -19,7 +19,7 @@ std::unique_ptr make_unique(Args&&... args) { return std::unique_ptr(new FFT_BASE(std::forward(args)...)); } -namespace ModulePW +namespace ModuleBase { FFT_Bundle::~FFT_Bundle() { @@ -296,4 +296,4 @@ std::complex* FFT_Bundle::get_auxr_3d_data() const { return fft_double->get_auxr_3d_data(); } -} // namespace ModulePW \ No newline at end of file +} // namespace ModuleBase \ No newline at end of file diff --git a/source/source_basis/module_pw/module_fft/fft_bundle.h b/source/source_base/module_fft/fft_bundle.h similarity index 99% rename from source/source_basis/module_pw/module_fft/fft_bundle.h rename to source/source_base/module_fft/fft_bundle.h index 74caadd36e..af82119201 100644 --- a/source/source_basis/module_pw/module_fft/fft_bundle.h +++ b/source/source_base/module_fft/fft_bundle.h @@ -5,7 +5,7 @@ #include "fft_cpu.h" #include -namespace ModulePW +namespace ModuleBase { class FFT_Bundle { @@ -216,5 +216,5 @@ struct FFT_Guard } }; -} // namespace ModulePW +} // namespace ModuleBase #endif // FFT_H diff --git a/source/source_basis/module_pw/module_fft/fft_cpu.cpp b/source/source_base/module_fft/fft_cpu.cpp similarity index 99% rename from source/source_basis/module_pw/module_fft/fft_cpu.cpp rename to source/source_base/module_fft/fft_cpu.cpp index 5c4783d83d..f50f6e9e86 100644 --- a/source/source_basis/module_pw/module_fft/fft_cpu.cpp +++ b/source/source_base/module_fft/fft_cpu.cpp @@ -1,6 +1,6 @@ #include "fft_cpu.h" #include "fftw3.h" -namespace ModulePW +namespace ModuleBase { template diff --git a/source/source_basis/module_pw/module_fft/fft_cpu.h b/source/source_base/module_fft/fft_cpu.h similarity index 99% rename from source/source_basis/module_pw/module_fft/fft_cpu.h rename to source/source_base/module_fft/fft_cpu.h index c0fe9992eb..f33fecd74b 100644 --- a/source/source_basis/module_pw/module_fft/fft_cpu.h +++ b/source/source_base/module_fft/fft_cpu.h @@ -3,7 +3,7 @@ #include "fft_base.h" #include "fftw3.h" -namespace ModulePW +namespace ModuleBase { template class FFT_CPU : public FFT_BASE diff --git a/source/source_basis/module_pw/module_fft/fft_cpu_float.cpp b/source/source_base/module_fft/fft_cpu_float.cpp similarity index 99% rename from source/source_basis/module_pw/module_fft/fft_cpu_float.cpp rename to source/source_base/module_fft/fft_cpu_float.cpp index b3e8d7d572..9d1265fd79 100644 --- a/source/source_basis/module_pw/module_fft/fft_cpu_float.cpp +++ b/source/source_base/module_fft/fft_cpu_float.cpp @@ -1,6 +1,6 @@ #include "fft_cpu.h" -namespace ModulePW +namespace ModuleBase { template <> void FFT_CPU::setupFFT() diff --git a/source/source_basis/module_pw/module_fft/fft_cuda.cpp b/source/source_base/module_fft/fft_cuda.cpp similarity index 96% rename from source/source_basis/module_pw/module_fft/fft_cuda.cpp rename to source/source_base/module_fft/fft_cuda.cpp index 8291acb34a..e33fd20311 100644 --- a/source/source_basis/module_pw/module_fft/fft_cuda.cpp +++ b/source/source_base/module_fft/fft_cuda.cpp @@ -1,9 +1,8 @@ #include "fft_cuda.h" - #include "source_base/module_device/memory_op.h" -#include "source_pw/module_pwdft/global.h" +#include "source_base/module_device/device_check.h" -namespace ModulePW +namespace ModuleBase { template void FFT_CUDA::initfft(int nx_in, int ny_in, int nz_in) @@ -111,4 +110,4 @@ template FFT_CUDA::FFT_CUDA(); template FFT_CUDA::~FFT_CUDA(); template FFT_CUDA::FFT_CUDA(); template FFT_CUDA::~FFT_CUDA(); -} // namespace ModulePW \ No newline at end of file +} // namespace ModuleBase diff --git a/source/source_basis/module_pw/module_fft/fft_cuda.h b/source/source_base/module_fft/fft_cuda.h similarity index 97% rename from source/source_basis/module_pw/module_fft/fft_cuda.h rename to source/source_base/module_fft/fft_cuda.h index 4942ee33f2..7734caffa9 100644 --- a/source/source_basis/module_pw/module_fft/fft_cuda.h +++ b/source/source_base/module_fft/fft_cuda.h @@ -4,7 +4,7 @@ #include "fft_base.h" #include "cufft.h" #include "cuda_runtime.h" -namespace ModulePW +namespace ModuleBase { template class FFT_CUDA : public FFT_BASE @@ -63,5 +63,5 @@ class FFT_CUDA : public FFT_BASE }; -} // namespace ModulePW +} // namespace ModuleBase #endif \ No newline at end of file diff --git a/source/source_basis/module_pw/module_fft/fft_dsp.cpp b/source/source_base/module_fft/fft_dsp.cpp similarity index 88% rename from source/source_basis/module_pw/module_fft/fft_dsp.cpp rename to source/source_base/module_fft/fft_dsp.cpp index e26292cf5b..67353d9a34 100644 --- a/source/source_basis/module_pw/module_fft/fft_dsp.cpp +++ b/source/source_base/module_fft/fft_dsp.cpp @@ -1,11 +1,13 @@ #include "fft_dsp.h" #include "source_base/global_variable.h" +#include "source_base/global_function.h" +#include "source_io/module_parameter/parameter.h" #include #include #include -namespace ModulePW +namespace ModuleBase { template <> void FFT_DSP::initfft(int nx_in, int ny_in, int nz_in) @@ -13,7 +15,7 @@ void FFT_DSP::initfft(int nx_in, int ny_in, int nz_in) this->nx = nx_in; this->ny = ny_in; this->nz = nz_in; - cluster_id = GlobalV::MY_RANK; + cluster_id = GlobalV::MY_RANK % PARAM.inp.dsp_count; nxyz = this->nx * this->ny * this->nz; } template <> @@ -21,8 +23,8 @@ void FFT_DSP::setupFFT() { PROBLEM pbm_forward; PROBLEM pbm_backward; - PLAN* ptr_plan_forward; - PLAN* ptr_plan_backward; + PLAN* ptr_plan_forward = nullptr; + PLAN* ptr_plan_backward = nullptr; INT num_thread = 8; INT size=0; hthread_dat_load(cluster_id, FFT_DAT_DIR); @@ -83,14 +85,14 @@ void FFT_DSP::resource_handler(const int flag) const template <> void FFT_DSP::fft3D_forward(std::complex* in, std::complex* out) const { - hthread_group_exec(thread_id_for, "execute_device", 1, 1, args_for); + hthread_group_exec(thread_id_for, "execute_mtfft_3d", 1, 1, args_for); hthread_group_wait(thread_id_for); } template <> void FFT_DSP::fft3D_backward(std::complex* in, std::complex* out) const { - hthread_group_exec(thread_id_for, "execute_device", 1, 1, args_back); + hthread_group_exec(thread_id_for, "execute_mtfft_3d", 1, 1, args_back); hthread_group_wait(thread_id_for); } template <> @@ -124,4 +126,4 @@ template FFT_DSP::FFT_DSP(); template FFT_DSP::~FFT_DSP(); template FFT_DSP::FFT_DSP(); template FFT_DSP::~FFT_DSP(); -} // namespace ModulePW \ No newline at end of file +} // namespace ModuleBase \ No newline at end of file diff --git a/source/source_basis/module_pw/module_fft/fft_dsp.h b/source/source_base/module_fft/fft_dsp.h similarity index 98% rename from source/source_basis/module_pw/module_fft/fft_dsp.h rename to source/source_base/module_fft/fft_dsp.h index f3358043ee..a735fd1c50 100644 --- a/source/source_basis/module_pw/module_fft/fft_dsp.h +++ b/source/source_base/module_fft/fft_dsp.h @@ -10,7 +10,7 @@ #include "mtfft.h" #include "fftw3.h" -namespace ModulePW +namespace ModuleBase { template @@ -84,5 +84,5 @@ class FFT_DSP : public FFT_BASE std::complex* z_auxr_3d = nullptr; // fft space }; -} // namespace ModulePW +} // namespace ModuleBase #endif \ No newline at end of file diff --git a/source/source_basis/module_pw/module_fft/fft_dsp_float.cpp b/source/source_base/module_fft/fft_dsp_float.cpp similarity index 92% rename from source/source_basis/module_pw/module_fft/fft_dsp_float.cpp rename to source/source_base/module_fft/fft_dsp_float.cpp index 3c11cfc81f..79efa4f000 100644 --- a/source/source_basis/module_pw/module_fft/fft_dsp_float.cpp +++ b/source/source_base/module_fft/fft_dsp_float.cpp @@ -1,5 +1,5 @@ #include "fft_dsp.h" -namespace ModulePW +namespace ModuleBase { template<> diff --git a/source/source_basis/module_pw/module_fft/fft_rocm.cpp b/source/source_base/module_fft/fft_rocm.cpp similarity index 97% rename from source/source_basis/module_pw/module_fft/fft_rocm.cpp rename to source/source_base/module_fft/fft_rocm.cpp index da37b51b7d..1730a0cdda 100644 --- a/source/source_basis/module_pw/module_fft/fft_rocm.cpp +++ b/source/source_base/module_fft/fft_rocm.cpp @@ -1,7 +1,8 @@ #include "fft_rocm.h" #include "source_base/module_device/memory_op.h" -#include "source_pw/module_pwdft/global.h" -namespace ModulePW +#include "source_base/module_device/device_check.h" + +namespace ModuleBase { template void FFT_ROCM::initfft(int nx_in, @@ -107,4 +108,4 @@ template FFT_ROCM::FFT_ROCM(); template FFT_ROCM::~FFT_ROCM(); template FFT_ROCM::FFT_ROCM(); template FFT_ROCM::~FFT_ROCM(); -}// namespace ModulePW \ No newline at end of file +}// namespace ModuleBase diff --git a/source/source_basis/module_pw/module_fft/fft_rocm.h b/source/source_base/module_fft/fft_rocm.h similarity index 97% rename from source/source_basis/module_pw/module_fft/fft_rocm.h rename to source/source_base/module_fft/fft_rocm.h index 10e7751da6..96c4cde091 100644 --- a/source/source_basis/module_pw/module_fft/fft_rocm.h +++ b/source/source_base/module_fft/fft_rocm.h @@ -5,7 +5,7 @@ #include "fft_base.h" #include #include -namespace ModulePW +namespace ModuleBase { template class FFT_ROCM : public FFT_BASE @@ -59,5 +59,5 @@ class FFT_ROCM : public FFT_BASE mutable std::complex* z_auxr_3d = nullptr; // fft space }; -}// namespace ModulePW +}// namespace ModuleBase #endif diff --git a/source/source_base/module_mixing/broyden_mixing.cpp b/source/source_base/module_mixing/broyden_mixing.cpp index c5f8e5e025..eabc0297a7 100644 --- a/source/source_base/module_mixing/broyden_mixing.cpp +++ b/source/source_base/module_mixing/broyden_mixing.cpp @@ -32,7 +32,7 @@ void Broyden_Mixing::tem_push_data(Mixing_Data& mdata, const size_t length = mdata.length; std::vector F_tmp(length); #ifdef _OPENMP -#pragma omp parallel for schedule(static, 4096 / sizeof(FPTYPE)) +#pragma omp parallel for schedule(static) #endif for (int i = 0; i < length; ++i) { @@ -72,7 +72,7 @@ void Broyden_Mixing::tem_push_data(Mixing_Data& mdata, dF = malloc(sizeof(FPTYPE) * length * mixing_ndim); FP_dF = static_cast(dF); #ifdef _OPENMP -#pragma omp parallel for schedule(static, 4096 / sizeof(FPTYPE)) +#pragma omp parallel for schedule(static) #endif for (int i = 0; i < length; ++i) { @@ -84,7 +84,7 @@ void Broyden_Mixing::tem_push_data(Mixing_Data& mdata, this->ndim_cal_dF = std::min(this->ndim_cal_dF + 1, this->mixing_ndim); start_dF = (this->start_dF + 1) % this->mixing_ndim; #ifdef _OPENMP -#pragma omp parallel for schedule(static, 4096 / sizeof(FPTYPE)) +#pragma omp parallel for schedule(static) #endif for (int i = 0; i < length; ++i) { @@ -192,7 +192,7 @@ void Broyden_Mixing::tem_cal_coef(const Mixing_Data& mdata, std::functionndim_history; FPTYPE* FP_startdata = static_cast(this->data) + this->start * this->length; #ifdef _OPENMP -#pragma omp parallel for schedule(static, 4096/sizeof(FPTYPE)) +#pragma omp parallel for schedule(static) #endif for (std::size_t i = 0; i < length; ++i) { diff --git a/source/source_base/module_mixing/plain_mixing.cpp b/source/source_base/module_mixing/plain_mixing.cpp index 81bdd659ef..591519e79f 100644 --- a/source/source_base/module_mixing/plain_mixing.cpp +++ b/source/source_base/module_mixing/plain_mixing.cpp @@ -30,7 +30,7 @@ void Plain_Mixing::tem_push_data(Mixing_Data& mdata, const size_t length = mdata.length; std::vector F_tmp(length); #ifdef _OPENMP -#pragma omp parallel for schedule(static, 4096 / sizeof(FPTYPE)) +#pragma omp parallel for schedule(static) #endif for (int i = 0; i < length; ++i) { @@ -68,7 +68,7 @@ void Plain_Mixing::simple_mix(FPTYPE* data_new, if (screen == nullptr) { #ifdef _OPENMP -#pragma omp parallel for schedule(static, 4096 / sizeof(FPTYPE)) +#pragma omp parallel for schedule(static) #endif for (int ig = 0; ig < length; ig++) { @@ -79,7 +79,7 @@ void Plain_Mixing::simple_mix(FPTYPE* data_new, { std::vector F_tmp(length); #ifdef _OPENMP -#pragma omp parallel for schedule(static, 4096 / sizeof(FPTYPE)) +#pragma omp parallel for schedule(static) #endif for (int i = 0; i < length; ++i) { @@ -87,7 +87,7 @@ void Plain_Mixing::simple_mix(FPTYPE* data_new, } screen(F_tmp.data()); #ifdef _OPENMP -#pragma omp parallel for schedule(static, 4096 / sizeof(FPTYPE)) +#pragma omp parallel for schedule(static) #endif for (int i = 0; i < length; ++i) { diff --git a/source/source_base/module_mixing/pulay_mixing.cpp b/source/source_base/module_mixing/pulay_mixing.cpp index c283a5c2e7..db25d2171d 100644 --- a/source/source_base/module_mixing/pulay_mixing.cpp +++ b/source/source_base/module_mixing/pulay_mixing.cpp @@ -32,7 +32,7 @@ void Pulay_Mixing::tem_push_data(Mixing_Data& mdata, std::vector F_tmp(length); #ifdef _OPENMP -#pragma omp parallel for schedule(static, 4096 / sizeof(FPTYPE)) +#pragma omp parallel for schedule(static) #endif for (std::size_t i = 0; i < length; ++i) { @@ -67,7 +67,7 @@ void Pulay_Mixing::tem_push_data(Mixing_Data& mdata, F = malloc(sizeof(FPTYPE) * length * mixing_ndim); FP_F = static_cast(F); #ifdef _OPENMP -#pragma omp parallel for schedule(static, 4096 / sizeof(FPTYPE)) +#pragma omp parallel for schedule(static) #endif for (std::size_t i = 0; i < length; ++i) { @@ -79,7 +79,7 @@ void Pulay_Mixing::tem_push_data(Mixing_Data& mdata, start_F = (this->start_F + 1) % this->mixing_ndim; FPTYPE* FP_startF = FP_F + start_F * length; #ifdef _OPENMP -#pragma omp parallel for schedule(static, 4096 / sizeof(FPTYPE)) +#pragma omp parallel for schedule(static) #endif for (std::size_t i = 0; i < length; ++i) { diff --git a/source/source_base/name_angular.h b/source/source_base/name_angular.h index 06627c8e22..48b9dae152 100644 --- a/source/source_base/name_angular.h +++ b/source/source_base/name_angular.h @@ -10,7 +10,7 @@ namespace ModuleBase {"dz^2", "dxz", "dyz", "dx^2-y^2", "dxy"}, {"fz^3", "fxz^2", "fyz^2", "fzx^2-zy^2", "fxyz", "fx^3-3*xy^2", "f3yx^2-y^3"}, {"g1", "g2", "g3", "g4", "g5", "g6", "g7", "g8", "g9"} - }; // name of atomic orbital jiyy add 2022-05-10 + }; // name of atomic orbital jiyy add 2022-05-10 } #endif diff --git a/source/source_base/parallel_global.cpp b/source/source_base/parallel_global.cpp index 6e5d1b2185..f227e6518f 100644 --- a/source/source_base/parallel_global.cpp +++ b/source/source_base/parallel_global.cpp @@ -15,7 +15,7 @@ #include "source_base/parallel_common.h" #include "source_base/parallel_reduce.h" #include "source_io/module_parameter/parameter.h" -// #include "source_base/tool_quit.h" +#include "source_base/tool_quit.h" #include "source_main/version.h" #include @@ -88,10 +88,10 @@ void Parallel_Global::split_grid_world(const int diag_np, const int& nproc, cons } // changed from read_mpi_parameters in 2024-1018 -void Parallel_Global::read_pal_param(int argc, - char** argv, - int& NPROC, - int& NTHREAD_PER_PROC, +void Parallel_Global::read_pal_param(int argc, + char** argv, + int& NPROC, + int& NTHREAD_PER_PROC, int& MY_RANK) { #ifdef __MPI @@ -328,9 +328,10 @@ void Parallel_Global::divide_pools(const int& NPROC, // and MY_BNDGROUP will be the same as well. if(BNDPAR > 1 && NPROC %(BNDPAR * KPAR) != 0) { - std::cout << "Error: When BNDPAR = " << BNDPAR << " > 1, number of processes (" << NPROC << ") must be divisible by the number of groups (" - << BNDPAR * KPAR << ")." << std::endl; - exit(1); + std::cout << "Error: When BNDPAR = " << BNDPAR << " > 1, number of processes (" << NPROC + << ") must be divisible by the number of groups (" << BNDPAR * KPAR << ")." << std::endl; + ModuleBase::WARNING_QUIT("ParallelGlobal::divide_pools", + "When BNDPAR > 1, number of processes NPROC must be divisible by the number of groups BNDPAR * KPAR."); } // k-point parallelization MPICommGroup kpar_group(MPI_COMM_WORLD); @@ -339,7 +340,7 @@ void Parallel_Global::divide_pools(const int& NPROC, // band parallelization MPICommGroup bndpar_group(kpar_group.group_comm); bndpar_group.divide_group_comm(BNDPAR, true); - + // Set parallel index. // In previous versions, the order of k-point parallelization and band parallelization is reversed. // So we need to keep some variables for compatibility. @@ -355,7 +356,7 @@ void Parallel_Global::divide_pools(const int& NPROC, { KP_WORLD = MPI_COMM_NULL; } - + if(BNDPAR > 1) { NPROC_IN_BNDGROUP = kpar_group.ngroups * bndpar_group.nprocs_in_group; @@ -385,14 +386,19 @@ void Parallel_Global::divide_mpi_groups(const int& procs, { if (num_groups == 0) { - std::cout << "Error: Number of groups must be greater than 0." << std::endl; - exit(1); + ModuleBase::WARNING_QUIT( + "Parallel_Global::divide_mpi_groups", + "Number of groups must be greater than 0." + ); } if (procs < num_groups) { std::cout << "Error: Number of processes (" << procs << ") must be greater than the number of groups (" << num_groups << ")." << std::endl; - exit(1); + ModuleBase::WARNING_QUIT( + "Parallel_Global::divide_mpi_groups", + "Number of processes must be greater than the number of groups." + ); } // Calculate the distribution of processes among pools. procs_in_group = procs / num_groups; diff --git a/source/source_base/parallel_reduce.cpp b/source/source_base/parallel_reduce.cpp index c44bd8fb66..36095f6d03 100644 --- a/source/source_base/parallel_reduce.cpp +++ b/source/source_base/parallel_reduce.cpp @@ -13,6 +13,15 @@ void Parallel_Reduce::reduce_all(int& object) return; } +template <> +void Parallel_Reduce::reduce_all(long long& object) +{ +#ifdef __MPI + MPI_Allreduce(MPI_IN_PLACE, &object, 1, MPI_LONG_LONG, MPI_SUM, MPI_COMM_WORLD); +#endif + return; +} + void Parallel_Reduce::reduce_int_diag(int& object) { #ifdef __MPI @@ -48,6 +57,15 @@ void Parallel_Reduce::reduce_all(int* object, const int n) return; } +template <> +void Parallel_Reduce::reduce_all(long long* object, const int n) +{ +#ifdef __MPI + MPI_Allreduce(MPI_IN_PLACE, object, n, MPI_LONG_LONG, MPI_SUM, MPI_COMM_WORLD); +#endif + return; +} + void Parallel_Reduce::reduce_int_grid(int* object, const int n) { #ifdef __MPI @@ -99,6 +117,14 @@ void Parallel_Reduce::reduce_pool(double& object) return; } +template <> +void Parallel_Reduce::reduce_pool(int* object, const int n) +{ +#ifdef __MPI + MPI_Allreduce(MPI_IN_PLACE, object, n, MPI_INT, MPI_SUM, POOL_WORLD); +#endif +} + template <> void Parallel_Reduce::reduce_pool(double* object, const int n) { @@ -215,85 +241,65 @@ void Parallel_Reduce::gather_int_all(int& v, int* all) return; } -void Parallel_Reduce::gather_min_int_all(const int& nproc, int& v) +template <> +void Parallel_Reduce::reduce_min(int& v) { #ifdef __MPI - std::vector all(nproc, 0); - MPI_Allgather(&v, 1, MPI_INT, all.data(), 1, MPI_INT, MPI_COMM_WORLD); - for (int i = 0; i < nproc; i++) - { - if (v > all[i]) - { - v = all[i]; - } - } + MPI_Allreduce(MPI_IN_PLACE, &v, 1, MPI_INT, MPI_MIN, MPI_COMM_WORLD); #endif } -void Parallel_Reduce::gather_max_double_all(const int& nproc, double& v) +template <> +void Parallel_Reduce::reduce_min(float& v) { #ifdef __MPI - std::vector value(nproc, 0.0); - MPI_Allgather(&v, 1, MPI_DOUBLE, value.data(), 1, MPI_DOUBLE, MPI_COMM_WORLD); - for (int i = 0; i < nproc; i++) - { - if (v < value[i]) - { - v = value[i]; - } - } + MPI_Allreduce(MPI_IN_PLACE, &v, 1, MPI_FLOAT, MPI_MIN, MPI_COMM_WORLD); #endif } -void Parallel_Reduce::gather_max_double_pool(const int& nproc_in_pool, double& v) +template <> +void Parallel_Reduce::reduce_min(double& v) { #ifdef __MPI - if (nproc_in_pool == 1) - { - return; - } - std::vector value(nproc_in_pool, 0.0); - MPI_Allgather(&v, 1, MPI_DOUBLE, value.data(), 1, MPI_DOUBLE, POOL_WORLD); - for (int i = 0; i < nproc_in_pool; i++) - { - if (v < value[i]) - { - v = value[i]; - } - } + MPI_Allreduce(MPI_IN_PLACE, &v, 1, MPI_DOUBLE, MPI_MIN, MPI_COMM_WORLD); +#endif +} + +template <> +void Parallel_Reduce::reduce_max(float& v) +{ +#ifdef __MPI + MPI_Allreduce(MPI_IN_PLACE, &v, 1, MPI_FLOAT, MPI_MAX, MPI_COMM_WORLD); #endif } -void Parallel_Reduce::gather_min_double_pool(const int& nproc_in_pool, double& v) +template <> +void Parallel_Reduce::reduce_max(double& v) +{ +#ifdef __MPI + MPI_Allreduce(MPI_IN_PLACE, &v, 1, MPI_DOUBLE, MPI_MAX, MPI_COMM_WORLD); +#endif +} + +template <> +void Parallel_Reduce::reduce_max_pool(const int& nproc_in_pool, double& v) { #ifdef __MPI if (nproc_in_pool == 1) { return; } - std::vector value(nproc_in_pool, 0.0); - MPI_Allgather(&v, 1, MPI_DOUBLE, value.data(), 1, MPI_DOUBLE, POOL_WORLD); - for (int i = 0; i < nproc_in_pool; i++) - { - if (v > value[i]) - { - v = value[i]; - } - } + MPI_Allreduce(MPI_IN_PLACE, &v, 1, MPI_DOUBLE, MPI_MAX, POOL_WORLD); #endif } - -void Parallel_Reduce::gather_min_double_all(const int& nproc, double& v) +template <> +void Parallel_Reduce::reduce_min_pool(const int& nproc_in_pool, double& v) { #ifdef __MPI - std::vector value(nproc, 0.0); - MPI_Allgather(&v, 1, MPI_DOUBLE, value.data(), 1, MPI_DOUBLE, MPI_COMM_WORLD); - for (int i = 0; i < nproc; i++) + if (nproc_in_pool == 1) { - if (v > value[i]) - { - v = value[i]; - } + return; } + MPI_Allreduce(MPI_IN_PLACE, &v, 1, MPI_DOUBLE, MPI_MIN, POOL_WORLD); #endif } \ No newline at end of file diff --git a/source/source_base/parallel_reduce.h b/source/source_base/parallel_reduce.h index 7ab85be1cb..a781989951 100644 --- a/source/source_base/parallel_reduce.h +++ b/source/source_base/parallel_reduce.h @@ -21,6 +21,14 @@ template void reduce_pool(T& object); template void reduce_pool(T* object, const int n); +template +void reduce_min(T& v); +template +void reduce_max(T& v); +template +void reduce_min_pool(const int& nproc_in_pool, T& v); +template +void reduce_max_pool(const int& nproc_in_pool, T& v); void reduce_int_diag(int& object); // mohan add 2012-01-12 @@ -34,13 +42,6 @@ void reduce_double_diag(double* object, const int n); void reduce_double_allpool(const int& npool, const int& nproc_in_pool, double& object); void reduce_double_allpool(const int& npool, const int& nproc_in_pool, double* object, const int n); -void gather_min_int_all(const int& nproc, int& v); -void gather_max_double_all(const int& nproc, double& v); -void gather_min_double_all(const int& nproc, double& v); -void gather_max_double_pool(const int& nproc_in_pool, double& v); -void gather_min_double_pool(const int& nproc_in_pool, double& v); - -// mohan add 2011-04-21 void gather_int_all(int& v, int* all); bool check_if_equal(double& v); // mohan add 2009-11-11 diff --git a/source/source_base/realarray.h b/source/source_base/realarray.h index a5eacab3cc..0fb7692148 100644 --- a/source/source_base/realarray.h +++ b/source/source_base/realarray.h @@ -20,7 +20,7 @@ namespace ModuleBase class realArray { public: - double *ptr; + double * ptr = nullptr; realArray(const int d1 = 1, const int d2 = 1, const int d3 = 1); realArray(const int d1, const int d2, const int d3, const int d4); diff --git a/source/source_base/sph_bessel_recursive-d2.cpp b/source/source_base/sph_bessel_recursive-d2.cpp index 4418905d97..f23074e9c3 100644 --- a/source/source_base/sph_bessel_recursive-d2.cpp +++ b/source/source_base/sph_bessel_recursive-d2.cpp @@ -4,12 +4,12 @@ //========================================================== #include "sph_bessel_recursive.h" +#include "constants.h" +#include "source_base/memory.h" #include #include -#include "constants.h" - namespace ModuleBase { @@ -33,6 +33,7 @@ const std::vector>> & Sph_Bessel_Recursive::D2:: cal_jlx_0( lmax+1, ix1_size, ix2_size ); cal_jlx_smallx( lmax+1, ix1_size, ix2_size ); cal_jlx_recursive( lmax+1, ix1_size, ix2_size ); + ModuleBase::Memory::record("ORB::Jl(x)", sizeof(double) * (lmax+1) * ix1_size * ix2_size); return jlx; } @@ -41,7 +42,7 @@ void Sph_Bessel_Recursive::D2::cal_jlx_0( const int l_size, const size_t ix1_siz if(jlx.size() < static_cast(l_size)) jlx.resize(l_size); - for( int l=0; l!=l_size; ++l ) + for( int l=0; l x_const, result, answer; @@ -241,7 +241,7 @@ TEST(blas_connector, dcopy_) { TEST(blas_connector, zcopy_) { typedef std::complex T; - long const size = 8; + int const size = 8; int const incx = 1; int const incy = 1; std::array x_const, result, answer; @@ -259,7 +259,7 @@ TEST(blas_connector, zcopy_) { } TEST(blas_connector, copy) { - long const size = 8; + int const size = 8; int const incx = 1; int const incy = 1; std::complex result[8], answer[8]; diff --git a/source/source_base/test/global_file_test.cpp b/source/source_base/test/global_file_test.cpp index 55b006fac4..338070ecfa 100644 --- a/source/source_base/test/global_file_test.cpp +++ b/source/source_base/test/global_file_test.cpp @@ -26,13 +26,24 @@ class GlobalFile : public testing::Test { - + protected: + void SetUp() override + { + const std::string suffix = "Si"; + PARAM.sys.global_out_dir = "OUT." + suffix + "/"; + PARAM.sys.global_stru_dir = PARAM.sys.global_out_dir + "STRU/"; + PARAM.sys.global_matrix_dir = PARAM.sys.global_out_dir + "matrix/"; + PARAM.sys.global_wfc_dir = PARAM.sys.global_out_dir + "WFC/"; + PARAM.sys.global_mlkedf_descriptor_dir = PARAM.sys.global_out_dir + "MLKEDF_Descriptors/"; + PARAM.sys.global_deepks_label_elec_dir = PARAM.sys.global_out_dir + "DeePKS_Labels_Elec/"; + } }; TEST_F(GlobalFile,mkdirout) { std::string output; testing::internal::CaptureStdout(); + PARAM.sys.log_file = "running_m_1.log"; ModuleBase::Global_File::make_dir_out("Si","m",false,false,0,true,true); output = testing::internal::GetCapturedStdout(); EXPECT_THAT(output,testing::HasSubstr("MAKE THE DIR")); @@ -43,6 +54,7 @@ TEST_F(GlobalFile,mkdirout) remove(dd.c_str()); testing::internal::CaptureStdout(); + PARAM.sys.log_file = "running_md.log"; ModuleBase::Global_File::make_dir_out("Si","md",false,false,0,true,false); output = testing::internal::GetCapturedStdout(); EXPECT_THAT(output,testing::HasSubstr("MAKE THE STRU DIR")); @@ -53,6 +65,7 @@ TEST_F(GlobalFile,mkdirout) remove(bb.c_str()); testing::internal::CaptureStdout(); + PARAM.sys.log_file = "running_md_1.log"; ModuleBase::Global_File::make_dir_out("Si","md",true,false,0,true,true); output = testing::internal::GetCapturedStdout(); EXPECT_THAT(output,testing::HasSubstr("MAKE THE MATRIX DIR")); @@ -79,6 +92,7 @@ TEST_F(GlobalFile,mkdiratom) TEST_F(GlobalFile,openlog) { + PARAM.sys.global_out_dir = "./"; std::ofstream ofs; ModuleBase::Global_File::open_log(ofs,"Si.log","md",true); EXPECT_TRUE(ofs.is_open()); diff --git a/source/source_base/test/global_function_test.cpp b/source/source_base/test/global_function_test.cpp index 3a5458c234..97e53c58a6 100644 --- a/source/source_base/test/global_function_test.cpp +++ b/source/source_base/test/global_function_test.cpp @@ -13,6 +13,10 @@ #include "gmock/gmock.h" #include "gtest/gtest.h" #include +#include +#include +#include +#include /************************************************ * unit test of functions in global_function @@ -420,9 +424,13 @@ TEST_F(GlobalFunctionTest, MakeDir) { GlobalV::MY_RANK = 0; ModuleBase::GlobalFunc::MAKE_DIR("scf"); - auto error1 = std::system("test -d "); + + struct stat st; + int error1 = stat("scf", &st); EXPECT_EQ(error1, 0); - auto error2 = std::system("rm -r scf "); + EXPECT_TRUE(S_ISDIR(st.st_mode)); + + int error2 = rmdir("scf"); EXPECT_EQ(error2, 0); SUCCEED(); } diff --git a/source/source_base/test/ylm_test.cpp b/source/source_base/test/ylm_test.cpp index ee85ac80ec..ed5fcbcc1b 100644 --- a/source/source_base/test/ylm_test.cpp +++ b/source/source_base/test/ylm_test.cpp @@ -1,5 +1,6 @@ #include "../ylm.h" #include "gtest/gtest.h" +#include /************************************************ * unit test of class ylm ***********************************************/ @@ -8,6 +9,13 @@ * - Tested Functions: * - ZEROS * - set all elements of a double float array to zero + * - hes_rl_sph_harm + * - test Hessian symmetry for l=5, l=6 + * - test finite difference validation for l=5, l=6 + * - test all Hessian components (H_xx, H_xy, H_xz, H_yy, H_yz, H_zz) for l=2 + * - test m=0 values across different l (l=0,1,2,3,4) + * - test special points (on coordinate axes) for l=4 + * - verify l>6 is not implemented * */ class ylmTest : public testing::Test @@ -17,9 +25,436 @@ class ylmTest : public testing::Test TEST_F(ylmTest,Zeros) { double aaaa[100]; - ModuleBase::Ylm::ZEROS(aaaa,100); + ModuleBase::Ylm::ZEROS(aaaa,100); for(int i = 0; i < 100; i++) { EXPECT_EQ(aaaa[i],0.0); } } + +// Test Hessian symmetry for l=5 +TEST_F(ylmTest, HessianSymmetryL5) +{ + const int l = 5; + const double x = 1.5, y = 2.0, z = 1.0; + std::vector> hrly; + + ModuleBase::Ylm::hes_rl_sph_harm(l, x, y, z, hrly); + + // Check that Hessian is symmetric for all m values + for (int idx = l*l; idx < (l+1)*(l+1); idx++) { + // hrly format: [H_xx, H_xy, H_xz, H_yy, H_yz, H_zz] + // Symmetry is built into the storage format + // Just verify the array is properly sized + EXPECT_EQ(hrly[idx].size(), 6); + } +} + +// Test Hessian symmetry for l=6 +TEST_F(ylmTest, HessianSymmetryL6) +{ + const int l = 6; + const double x = 1.5, y = 2.0, z = 1.0; + std::vector> hrly; + + ModuleBase::Ylm::hes_rl_sph_harm(l, x, y, z, hrly); + + // Check that Hessian is symmetric for all m values + for (int idx = l*l; idx < (l+1)*(l+1); idx++) { + EXPECT_EQ(hrly[idx].size(), 6); + } +} + +// Test Hessian finite difference for l=5 using central difference +TEST_F(ylmTest, HessianFiniteDifferenceL5) +{ + const int l = 5; + const double x = 1.5, y = 2.0, z = 1.0; + const double h = 1e-5; + const double tol = 1e-3; // Relaxed tolerance for numerical differentiation + + std::vector> hrly; + ModuleBase::Ylm::hes_rl_sph_harm(l, x, y, z, hrly); + + // Allocate gradient arrays for central difference + std::vector rly_xp((l+1)*(l+1)); + std::vector> grly_xp((l+1)*(l+1), std::vector(3)); + double** grly_xp_ptr = new double*[(l+1)*(l+1)]; + for (int i = 0; i < (l+1)*(l+1); i++) { + grly_xp_ptr[i] = grly_xp[i].data(); + } + + std::vector rly_xm((l+1)*(l+1)); + std::vector> grly_xm((l+1)*(l+1), std::vector(3)); + double** grly_xm_ptr = new double*[(l+1)*(l+1)]; + for (int i = 0; i < (l+1)*(l+1); i++) { + grly_xm_ptr[i] = grly_xm[i].data(); + } + + // Compute gradient at (x+h, y, z) and (x-h, y, z) + ModuleBase::Ylm::grad_rl_sph_harm(l, x+h, y, z, rly_xp.data(), grly_xp_ptr); + ModuleBase::Ylm::grad_rl_sph_harm(l, x-h, y, z, rly_xm.data(), grly_xm_ptr); + + // Test H_xx for m=0 (index 25) using central difference + int idx = 25; + double H_xx_fd = (grly_xp[idx][0] - grly_xm[idx][0]) / (2.0 * h); + double H_xx_analytic = hrly[idx][0]; + + EXPECT_NEAR(H_xx_fd, H_xx_analytic, tol); + + delete[] grly_xp_ptr; + delete[] grly_xm_ptr; +} + +// Test Hessian finite difference for l=6 using central difference +TEST_F(ylmTest, HessianFiniteDifferenceL6) +{ + const int l = 6; + const double x = 1.5, y = 2.0, z = 1.0; + const double h = 1e-5; + const double tol = 1e-3; // Relaxed tolerance for numerical differentiation + + std::vector> hrly; + ModuleBase::Ylm::hes_rl_sph_harm(l, x, y, z, hrly); + + // Allocate gradient arrays for central difference + std::vector rly_xp((l+1)*(l+1)); + std::vector> grly_xp((l+1)*(l+1), std::vector(3)); + double** grly_xp_ptr = new double*[(l+1)*(l+1)]; + for (int i = 0; i < (l+1)*(l+1); i++) { + grly_xp_ptr[i] = grly_xp[i].data(); + } + + std::vector rly_xm((l+1)*(l+1)); + std::vector> grly_xm((l+1)*(l+1), std::vector(3)); + double** grly_xm_ptr = new double*[(l+1)*(l+1)]; + for (int i = 0; i < (l+1)*(l+1); i++) { + grly_xm_ptr[i] = grly_xm[i].data(); + } + + // Compute gradient at (x+h, y, z) and (x-h, y, z) + ModuleBase::Ylm::grad_rl_sph_harm(l, x+h, y, z, rly_xp.data(), grly_xp_ptr); + ModuleBase::Ylm::grad_rl_sph_harm(l, x-h, y, z, rly_xm.data(), grly_xm_ptr); + + // Test H_xx for m=0 (index 36) using central difference + int idx = 36; + double H_xx_fd = (grly_xp[idx][0] - grly_xm[idx][0]) / (2.0 * h); + double H_xx_analytic = hrly[idx][0]; + + EXPECT_NEAR(H_xx_fd, H_xx_analytic, tol); + + delete[] grly_xp_ptr; + delete[] grly_xm_ptr; +} + +// Test that l>6 triggers error +TEST_F(ylmTest, HessianL7NotImplemented) +{ + const int l = 7; + const double x = 1.0, y = 0.0, z = 0.0; + std::vector> hrly; + + // This should call WARNING_QUIT and exit + // We can't easily test this in gtest without death tests + // EXPECT_DEATH(ModuleBase::Ylm::hes_rl_sph_harm(l, x, y, z, hrly), "l>6 not implemented"); +} + +// Test all Hessian components for l=2 +TEST_F(ylmTest, HessianAllComponentsL2) +{ + const int l = 2; + const double x = 0.5, y = 1.0, z = 1.5; + const double h = 1e-5; + const double tol = 1e-3; + + std::vector> hrly; + ModuleBase::Ylm::hes_rl_sph_harm(l, x, y, z, hrly); + + // Test all 6 Hessian components for m=0 (index 4) + int idx = 4; + + // Allocate gradient arrays + std::vector rly_xp((l+1)*(l+1)), rly_xm((l+1)*(l+1)); + std::vector rly_yp((l+1)*(l+1)), rly_ym((l+1)*(l+1)); + std::vector rly_zp((l+1)*(l+1)), rly_zm((l+1)*(l+1)); + + std::vector> grly_xp((l+1)*(l+1), std::vector(3)); + std::vector> grly_xm((l+1)*(l+1), std::vector(3)); + std::vector> grly_yp((l+1)*(l+1), std::vector(3)); + std::vector> grly_ym((l+1)*(l+1), std::vector(3)); + std::vector> grly_zp((l+1)*(l+1), std::vector(3)); + std::vector> grly_zm((l+1)*(l+1), std::vector(3)); + + double** grly_xp_ptr = new double*[(l+1)*(l+1)]; + double** grly_xm_ptr = new double*[(l+1)*(l+1)]; + double** grly_yp_ptr = new double*[(l+1)*(l+1)]; + double** grly_ym_ptr = new double*[(l+1)*(l+1)]; + double** grly_zp_ptr = new double*[(l+1)*(l+1)]; + double** grly_zm_ptr = new double*[(l+1)*(l+1)]; + + for (int i = 0; i < (l+1)*(l+1); i++) { + grly_xp_ptr[i] = grly_xp[i].data(); + grly_xm_ptr[i] = grly_xm[i].data(); + grly_yp_ptr[i] = grly_yp[i].data(); + grly_ym_ptr[i] = grly_ym[i].data(); + grly_zp_ptr[i] = grly_zp[i].data(); + grly_zm_ptr[i] = grly_zm[i].data(); + } + + // Compute gradients at perturbed points + ModuleBase::Ylm::grad_rl_sph_harm(l, x+h, y, z, rly_xp.data(), grly_xp_ptr); + ModuleBase::Ylm::grad_rl_sph_harm(l, x-h, y, z, rly_xm.data(), grly_xm_ptr); + ModuleBase::Ylm::grad_rl_sph_harm(l, x, y+h, z, rly_yp.data(), grly_yp_ptr); + ModuleBase::Ylm::grad_rl_sph_harm(l, x, y-h, z, rly_ym.data(), grly_ym_ptr); + ModuleBase::Ylm::grad_rl_sph_harm(l, x, y, z+h, rly_zp.data(), grly_zp_ptr); + ModuleBase::Ylm::grad_rl_sph_harm(l, x, y, z-h, rly_zm.data(), grly_zm_ptr); + + // Test H_xx (index 0) + double H_xx_fd = (grly_xp[idx][0] - grly_xm[idx][0]) / (2.0 * h); + EXPECT_NEAR(H_xx_fd, hrly[idx][0], tol); + + // Test H_xy (index 1) + double H_xy_fd = (grly_xp[idx][1] - grly_xm[idx][1]) / (2.0 * h); + EXPECT_NEAR(H_xy_fd, hrly[idx][1], tol); + + // Test H_xz (index 2) + double H_xz_fd = (grly_xp[idx][2] - grly_xm[idx][2]) / (2.0 * h); + EXPECT_NEAR(H_xz_fd, hrly[idx][2], tol); + + // Test H_yy (index 3) + double H_yy_fd = (grly_yp[idx][1] - grly_ym[idx][1]) / (2.0 * h); + EXPECT_NEAR(H_yy_fd, hrly[idx][3], tol); + + // Test H_yz (index 4) + double H_yz_fd = (grly_yp[idx][2] - grly_ym[idx][2]) / (2.0 * h); + EXPECT_NEAR(H_yz_fd, hrly[idx][4], tol); + + // Test H_zz (index 5) + double H_zz_fd = (grly_zp[idx][2] - grly_zm[idx][2]) / (2.0 * h); + EXPECT_NEAR(H_zz_fd, hrly[idx][5], tol); + + delete[] grly_xp_ptr; + delete[] grly_xm_ptr; + delete[] grly_yp_ptr; + delete[] grly_ym_ptr; + delete[] grly_zp_ptr; + delete[] grly_zm_ptr; +} + +// Test Hessian for m=0 values across different l +TEST_F(ylmTest, HessianM0DifferentL) +{ + const double x = 1.0, y = 0.5, z = 2.0; + const double h = 1e-5; + const double tol = 1e-3; + + // Test m=0 for l=0,1,2,3,4 + std::vector l_values = {0, 1, 2, 3, 4}; + + for (int l : l_values) { + std::vector> hrly; + ModuleBase::Ylm::hes_rl_sph_harm(l, x, y, z, hrly); + + // Allocate gradient arrays + std::vector rly_xp((l+1)*(l+1)), rly_xm((l+1)*(l+1)); + std::vector> grly_xp((l+1)*(l+1), std::vector(3)); + std::vector> grly_xm((l+1)*(l+1), std::vector(3)); + + double** grly_xp_ptr = new double*[(l+1)*(l+1)]; + double** grly_xm_ptr = new double*[(l+1)*(l+1)]; + + for (int i = 0; i < (l+1)*(l+1); i++) { + grly_xp_ptr[i] = grly_xp[i].data(); + grly_xm_ptr[i] = grly_xm[i].data(); + } + + ModuleBase::Ylm::grad_rl_sph_harm(l, x+h, y, z, rly_xp.data(), grly_xp_ptr); + ModuleBase::Ylm::grad_rl_sph_harm(l, x-h, y, z, rly_xm.data(), grly_xm_ptr); + + // Test H_xx for m=0 (index l*l) + int idx = l * l; + double H_xx_fd = (grly_xp[idx][0] - grly_xm[idx][0]) / (2.0 * h); + EXPECT_NEAR(H_xx_fd, hrly[idx][0], tol) << "Failed for l=" << l << " m=0"; + + delete[] grly_xp_ptr; + delete[] grly_xm_ptr; + } +} + +// Test Hessian at special points (on axes) +TEST_F(ylmTest, HessianSpecialPointsL4) +{ + const int l = 4; + const double h = 1e-5; + const double tol = 1e-3; + + // Test on z-axis + { + const double x = 0.0, y = 0.0, z = 1.0; + std::vector> hrly; + ModuleBase::Ylm::hes_rl_sph_harm(l, x, y, z, hrly); + + // Verify array is properly sized + for (int idx = l*l; idx < (l+1)*(l+1); idx++) { + EXPECT_EQ(hrly[idx].size(), 6); + } + } + + // Test on x-axis + { + const double x = 1.0, y = 0.0, z = 0.0; + std::vector> hrly; + ModuleBase::Ylm::hes_rl_sph_harm(l, x, y, z, hrly); + + for (int idx = l*l; idx < (l+1)*(l+1); idx++) { + EXPECT_EQ(hrly[idx].size(), 6); + } + } + + // Test on y-axis + { + const double x = 0.0, y = 1.0, z = 0.0; + std::vector> hrly; + ModuleBase::Ylm::hes_rl_sph_harm(l, x, y, z, hrly); + + for (int idx = l*l; idx < (l+1)*(l+1); idx++) { + EXPECT_EQ(hrly[idx].size(), 6); + } + } +} + +// Test Hessian trace property (Laplacian = 0 for harmonic functions) +TEST_F(ylmTest, HessianTraceL3) +{ + const int l = 3; + const double x = 1.2, y = 0.8, z = 1.5; + const double tol = 1e-10; + + std::vector> hrly; + ModuleBase::Ylm::hes_rl_sph_harm(l, x, y, z, hrly); + + // For spherical harmonics Y_lm(r), the Laplacian should satisfy: + // ∇²(r^l * Y_lm) = l(l+1) * r^(l-2) * Y_lm + // For real spherical harmonics, we need to check the trace + // Note: This is a property check, not a strict zero test + + for (int idx = l*l; idx < (l+1)*(l+1); idx++) { + // Trace = H_xx + H_yy + H_zz + double trace = hrly[idx][0] + hrly[idx][3] + hrly[idx][5]; + // The trace should be finite and well-defined + EXPECT_FALSE(std::isnan(trace)); + EXPECT_FALSE(std::isinf(trace)); + } +} + +// Test Hessian consistency across different coordinate systems +TEST_F(ylmTest, HessianRotationalInvariance) +{ + const int l = 2; + const double r = 2.0; + const double tol = 1e-3; + + // Test at two points with same radius but different angles + const double x1 = r, y1 = 0.0, z1 = 0.0; + const double x2 = 0.0, y2 = r, z2 = 0.0; + + std::vector> hrly1, hrly2; + ModuleBase::Ylm::hes_rl_sph_harm(l, x1, y1, z1, hrly1); + ModuleBase::Ylm::hes_rl_sph_harm(l, x2, y2, z2, hrly2); + + // For m=0 (index 4), the Hessian should have certain symmetries + int idx = 4; + + // Both should be properly sized + EXPECT_EQ(hrly1[idx].size(), 6); + EXPECT_EQ(hrly2[idx].size(), 6); + + // Values should be finite + for (int i = 0; i < 6; i++) { + EXPECT_FALSE(std::isnan(hrly1[idx][i])); + EXPECT_FALSE(std::isnan(hrly2[idx][i])); + EXPECT_FALSE(std::isinf(hrly1[idx][i])); + EXPECT_FALSE(std::isinf(hrly2[idx][i])); + } +} + +// Test Hessian for l=0 (constant function) +TEST_F(ylmTest, HessianL0Constant) +{ + const int l = 0; + const double x = 1.0, y = 2.0, z = 3.0; + + std::vector> hrly; + ModuleBase::Ylm::hes_rl_sph_harm(l, x, y, z, hrly); + + // For l=0, Y_00 is constant, so all second derivatives should be zero + int idx = 0; + const double tol = 1e-10; + + EXPECT_NEAR(hrly[idx][0], 0.0, tol); // H_xx + EXPECT_NEAR(hrly[idx][1], 0.0, tol); // H_xy + EXPECT_NEAR(hrly[idx][2], 0.0, tol); // H_xz + EXPECT_NEAR(hrly[idx][3], 0.0, tol); // H_yy + EXPECT_NEAR(hrly[idx][4], 0.0, tol); // H_yz + EXPECT_NEAR(hrly[idx][5], 0.0, tol); // H_zz +} + +// Test Hessian for l=1 (linear functions) +TEST_F(ylmTest, HessianL1Linear) +{ + const int l = 1; + const double x = 1.0, y = 2.0, z = 3.0; + + std::vector> hrly; + ModuleBase::Ylm::hes_rl_sph_harm(l, x, y, z, hrly); + + // For l=1, Y_1m are linear functions, so all second derivatives should be zero + const double tol = 1e-10; + + for (int idx = 1; idx <= 3; idx++) { + EXPECT_NEAR(hrly[idx][0], 0.0, tol); // H_xx + EXPECT_NEAR(hrly[idx][1], 0.0, tol); // H_xy + EXPECT_NEAR(hrly[idx][2], 0.0, tol); // H_xz + EXPECT_NEAR(hrly[idx][3], 0.0, tol); // H_yy + EXPECT_NEAR(hrly[idx][4], 0.0, tol); // H_yz + EXPECT_NEAR(hrly[idx][5], 0.0, tol); // H_zz + } +} + +// Test Hessian numerical stability for small coordinates +TEST_F(ylmTest, HessianNumericalStability) +{ + const int l = 3; + const double x = 1e-3, y = 2e-3, z = 3e-3; + + std::vector> hrly; + ModuleBase::Ylm::hes_rl_sph_harm(l, x, y, z, hrly); + + // Check that all values are finite (no NaN or Inf) + for (int idx = l*l; idx < (l+1)*(l+1); idx++) { + for (int i = 0; i < 6; i++) { + EXPECT_FALSE(std::isnan(hrly[idx][i])) + << "NaN detected at idx=" << idx << " component=" << i; + EXPECT_FALSE(std::isinf(hrly[idx][i])) + << "Inf detected at idx=" << idx << " component=" << i; + } + } +} + +// Test Hessian for large coordinates +TEST_F(ylmTest, HessianLargeCoordinates) +{ + const int l = 4; + const double x = 100.0, y = 200.0, z = 300.0; + + std::vector> hrly; + ModuleBase::Ylm::hes_rl_sph_harm(l, x, y, z, hrly); + + // Check that all values are finite + for (int idx = l*l; idx < (l+1)*(l+1); idx++) { + for (int i = 0; i < 6; i++) { + EXPECT_FALSE(std::isnan(hrly[idx][i])); + EXPECT_FALSE(std::isinf(hrly[idx][i])); + } + } +} diff --git a/source/source_base/test_parallel/CMakeLists.txt b/source/source_base/test_parallel/CMakeLists.txt index bf4ed79bbc..17c8a8e115 100644 --- a/source/source_base/test_parallel/CMakeLists.txt +++ b/source/source_base/test_parallel/CMakeLists.txt @@ -7,13 +7,13 @@ AddTest( AddTest( TARGET MODULE_BASE_ParaGlobal LIBS parameter MPI::MPI_CXX - SOURCES parallel_global_test.cpp ../global_variable.cpp ../parallel_global.cpp ../parallel_comm.cpp + SOURCES parallel_global_test.cpp ../global_variable.cpp ../parallel_global.cpp ../parallel_comm.cpp ../tool_quit.cpp ../global_file.cpp ../global_function.cpp ../memory.cpp ../timer.cpp ../parallel_reduce.cpp ) AddTest( TARGET MODULE_BASE_ParaReduce LIBS parameter MPI::MPI_CXX - SOURCES parallel_reduce_test.cpp ../global_variable.cpp ../parallel_global.cpp ../parallel_comm.cpp ../parallel_common.cpp ../parallel_reduce.cpp + SOURCES parallel_reduce_test.cpp ../global_variable.cpp ../parallel_global.cpp ../parallel_comm.cpp ../parallel_common.cpp ../parallel_reduce.cpp ../tool_quit.cpp ../global_file.cpp ../global_function.cpp ../memory.cpp ../timer.cpp ) install(FILES parallel_common_test.sh DESTINATION ${CMAKE_CURRENT_BINARY_DIR}) @@ -54,7 +54,7 @@ add_test(NAME MODULE_BASE_para_gemm_parallel AddTest( TARGET MODULE_BASE_parallel_2d_test SOURCES parallel_2d_test.cpp ../parallel_2d.cpp - LIBS parameter ${math_libs} + LIBS parameter ${math_libs} ) install(FILES parallel_2d_test.sh DESTINATION ${CMAKE_CURRENT_BINARY_DIR}) @@ -67,7 +67,7 @@ add_test(NAME MODULE_BASE_parallel_2d_test_para # figure out the lib that provides BLACS if(MKLROOT) - list(APPEND BLACS_LIB MKL::MKL MKL::MKL_SCALAPACK) + list(APPEND BLACS_LIB MKL::MKL) else() set(BLACS_LIB ScaLAPACK::ScaLAPACK) endif() @@ -82,4 +82,3 @@ add_test(NAME MODULE_BASE_parallel_2d_test_para COMMAND ${BASH} blacs_connector_test.sh WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} ) - diff --git a/source/source_base/test_parallel/parallel_global_test.cpp b/source/source_base/test_parallel/parallel_global_test.cpp index bb31af30bc..3b6bf8491f 100644 --- a/source/source_base/test_parallel/parallel_global_test.cpp +++ b/source/source_base/test_parallel/parallel_global_test.cpp @@ -8,6 +8,9 @@ #include #include #include +#include + +#include "source_base/global_variable.h" /************************************************ * unit test of functions in parallel_global.cpp @@ -64,6 +67,7 @@ class MPIContext int _size; }; +// --- Normal Test --- class ParaGlobal : public ::testing::Test { protected: @@ -77,6 +81,7 @@ class ParaGlobal : public ::testing::Test } }; + TEST_F(ParaGlobal, SplitGrid) { // NPROC is set to 4 in parallel_global_test.sh @@ -160,14 +165,126 @@ TEST_F(ParaGlobal, MyProd) EXPECT_EQ(inout[1], std::complex(-3.0, -3.0)); } -TEST_F(ParaGlobal, InitPools) + + +TEST_F(ParaGlobal, DivideMPIPools) { + this->nproc = 12; + mpi.kpar = 3; + this->my_rank = 5; + Parallel_Global::divide_mpi_groups(this->nproc, + mpi.kpar, + this->my_rank, + mpi.nproc_in_pool, + mpi.my_pool, + mpi.rank_in_pool); + EXPECT_EQ(mpi.nproc_in_pool, 4); + EXPECT_EQ(mpi.my_pool, 1); + EXPECT_EQ(mpi.rank_in_pool, 1); +} + + +class FakeMPIContext +{ + public: + FakeMPIContext() + { + _rank = 0; + _size = 1; + } + + int GetRank() const + { + return _rank; + } + int GetSize() const + { + return _size; + } + + int drank; + int dsize; + int dcolor; + + int grank; + int gsize; + + int kpar; + int nproc_in_pool; + int my_pool; + int rank_in_pool; + + int nstogroup; + int MY_BNDGROUP; + int rank_in_stogroup; + int nproc_in_stogroup; + + private: + int _rank; + int _size; +}; + +// --- DeathTest: Single thread --- +// Since these precondition checks cause the processes to die, we call such tests death tests. +// convention of naming the test suite: *DeathTest +// Death tests should be run in a single-threaded context. +// Such DeathTest will be run before all other tests. +class ParaGlobalDeathTest : public ::testing::Test +{ + protected: + FakeMPIContext mpi; + int nproc; + int my_rank; + int real_rank; + + // DeathTest SetUp: + // Init variable, single thread + void SetUp() override + { + int is_init = 0; + MPI_Initialized(&is_init); + if (is_init) { + MPI_Comm_rank(MPI_COMM_WORLD, &real_rank); + } else { + real_rank = 0; + } + + if (real_rank != 0) return; + + nproc = mpi.GetSize(); + my_rank = mpi.GetRank(); + + // init log file needed by WARNING_QUIT + GlobalV::ofs_warning.open("warning.log"); + + + } + + // clean log file + void TearDown() override + { + if (real_rank != 0) return; + + GlobalV::ofs_warning.close(); + remove("warning.log"); + } +}; + +TEST_F(ParaGlobalDeathTest, InitPools) +{ + if (real_rank != 0) return; nproc = 12; mpi.kpar = 3; mpi.nstogroup = 3; my_rank = 5; - testing::internal::CaptureStdout(); - EXPECT_EXIT(Parallel_Global::init_pools(nproc, + EXPECT_EXIT( + // This gtest Macro expect that a given `statement` causes the program to exit, with an + // integer exit status that satisfies `predicate`(Here ::testing::ExitedWithCode(1)), + // and emitting error output that matches `matcher`(Here "Error"). + { + // redirect stdout to stderr to capture WARNING_QUIT output + dup2(STDERR_FILENO, STDOUT_FILENO); + Parallel_Global::init_pools(nproc, my_rank, mpi.nstogroup, mpi.kpar, @@ -176,35 +293,83 @@ TEST_F(ParaGlobal, InitPools) mpi.MY_BNDGROUP, mpi.nproc_in_pool, mpi.rank_in_pool, - mpi.my_pool), ::testing::ExitedWithCode(1), ""); - std::string output = testing::internal::GetCapturedStdout(); - EXPECT_THAT(output, testing::HasSubstr("Error:")); + mpi.my_pool); + }, + ::testing::ExitedWithCode(1), + "Error"); } - -TEST_F(ParaGlobal, DivideMPIPools) +TEST_F(ParaGlobalDeathTest, DivideMPIPoolsNgEqZero) { + if (real_rank != 0) return; + // test for num_groups == 0, + // Num_group Equals 0 + // WARNING_QUIT this->nproc = 12; - mpi.kpar = 3; - this->my_rank = 5; - Parallel_Global::divide_mpi_groups(this->nproc, + mpi.kpar = 0; + EXPECT_EXIT( + { + // redirect stdout to stderr to capture WARNING_QUIT output + dup2(STDERR_FILENO, STDOUT_FILENO); + Parallel_Global::divide_mpi_groups(this->nproc, mpi.kpar, this->my_rank, mpi.nproc_in_pool, mpi.my_pool, mpi.rank_in_pool); - EXPECT_EQ(mpi.nproc_in_pool, 4); - EXPECT_EQ(mpi.my_pool, 1); - EXPECT_EQ(mpi.rank_in_pool, 1); + }, + ::testing::ExitedWithCode(1), + "Number of groups must be greater than 0." + ); +} + +TEST_F(ParaGlobalDeathTest, DivideMPIPoolsNgGtProc) +{ + if (real_rank != 0) return; + // test for procs < num_groups + // Num_group GreaterThan Processors + // WARNING_QUIT + this->nproc = 12; + mpi.kpar = 24; + this->my_rank = 5; + EXPECT_EXIT( + { + // redirect stdout to stderr to capture WARNING_QUIT output + dup2(STDERR_FILENO, STDOUT_FILENO); + Parallel_Global::divide_mpi_groups(this->nproc, + mpi.kpar, + this->my_rank, + mpi.nproc_in_pool, + mpi.my_pool, + mpi.rank_in_pool); + }, + testing::ExitedWithCode(1), + "Error: Number of processes.*must be greater than the number of groups" + ); } int main(int argc, char** argv) { + bool is_death_test_child = false; + for (int i = 0; i < argc; ++i) { + if (std::string(argv[i]).find("gtest_internal_run_death_test") != std::string::npos) { + is_death_test_child = true; + break; + } + } + + if (!is_death_test_child) + { + MPI_Init(&argc, &argv); + } - MPI_Init(&argc, &argv); testing::InitGoogleTest(&argc, argv); + testing::FLAGS_gtest_death_test_style = "threadsafe"; int result = RUN_ALL_TESTS(); - MPI_Finalize(); + + if (!is_death_test_child) { + MPI_Finalize(); + } return result; } -#endif +#endif // __MPI diff --git a/source/source_base/test_parallel/parallel_reduce_test.cpp b/source/source_base/test_parallel/parallel_reduce_test.cpp index 696de3b485..ac980ba24d 100644 --- a/source/source_base/test_parallel/parallel_reduce_test.cpp +++ b/source/source_base/test_parallel/parallel_reduce_test.cpp @@ -30,9 +30,9 @@ * 3. ReduceComplexAll: * Tests two variations of reduce_complex_all() * 4. GatherIntAll: - * Tests gather_int_all() and gather_min_int_all() + * Tests gather_int_all() and reduce_min() * 5. GatherDoubleAll: - * Tests gather_min_double_all() and gather_max_double_all() + * Tests reduce_min_double() and reduce_max_double() * 6. ReduceIntDiag: * Tests reduce_int_diag() * 7. ReduceDoubleDiag: @@ -47,7 +47,7 @@ * 11.ReduceComplexPool: * Tests two variations of reduce_pool() * 12.GatherDoublePool: - * Tests gather_min_double_pool() and gather_max_double_pool() + * Tests reduce_min_pool() and reduce_max_pool() * * */ @@ -233,7 +233,7 @@ TEST_F(ParaReduce, GatherIntAll) EXPECT_EQ(local_number, array[my_rank]); // get minimum integer among all processes int min_number = local_number; - Parallel_Reduce::gather_min_int_all(nproc, min_number); + Parallel_Reduce::reduce_min(min_number); for (int i = 0; i < nproc; i++) { EXPECT_LE(min_number, array[i]); @@ -256,10 +256,10 @@ TEST_F(ParaReduce, GatherDoubleAll) EXPECT_EQ(local_number, array[my_rank]); // get minimum integer among all processes double min_number = local_number; - Parallel_Reduce::gather_min_double_all(nproc, min_number); + Parallel_Reduce::reduce_min(min_number); // get maximum integer among all processes double max_number = local_number; - Parallel_Reduce::gather_max_double_all(nproc, max_number); + Parallel_Reduce::reduce_max(max_number); for (int i = 0; i < nproc; i++) { EXPECT_LE(min_number, array[i]); @@ -587,10 +587,10 @@ TEST_F(ParaReduce, GatherDoublePool) EXPECT_EQ(local_number, array[mpiContext.rank_in_pool]); // get minimum integer among all processes double min_number = local_number; - Parallel_Reduce::gather_min_double_pool(mpiContext.nproc_in_pool, min_number); + Parallel_Reduce::reduce_min_pool(mpiContext.nproc_in_pool, min_number); // get maximum integer among all processes double max_number = local_number; - Parallel_Reduce::gather_max_double_pool(mpiContext.nproc_in_pool, max_number); + Parallel_Reduce::reduce_max_pool(mpiContext.nproc_in_pool, max_number); for (int i = 0; i < mpiContext.nproc_in_pool; i++) { EXPECT_LE(min_number, array[i]); diff --git a/source/source_base/timer.cpp b/source/source_base/timer.cpp index f7a4be636d..c8cd3bc6ac 100644 --- a/source/source_base/timer.cpp +++ b/source/source_base/timer.cpp @@ -14,6 +14,11 @@ #include "chrono" #include "source_base/formatter.h" +#if defined(__CUDA) && defined(__USE_NVTX) +#include "source_base/module_device/cuda_compat.h" +#include "source_io/module_parameter/parameter.h" +#endif + namespace ModuleBase { @@ -93,6 +98,12 @@ void timer::tick(const std::string &class_name,const std::string &name) #endif ++timer_one.calls; timer_one.start_flag = false; +#if defined(__CUDA) && defined(__USE_NVTX) + if (PARAM.inp.timer_enable_nvtx){ + std::string label = class_name + ":" + name; + nvtxRangePushA(label.data()); + } +#endif } else { @@ -107,6 +118,11 @@ void timer::tick(const std::string &class_name,const std::string &name) timer_one.cpu_second += (cpu_time() - timer_one.cpu_start); #endif timer_one.start_flag = true; +#if defined(__CUDA) && defined(__USE_NVTX) + if (PARAM.inp.timer_enable_nvtx){ + nvtxRangePop(); + } +#endif } } // end if(!omp_get_thread_num()) } @@ -128,7 +144,7 @@ void timer::write_to_json(std::string file_name) int is_initialized = 0; MPI_Initialized(&is_initialized); if (!is_initialized) { - return; + return; } int my_rank = 0; MPI_Comm_rank(MPI_COMM_WORLD, &my_rank); @@ -195,12 +211,12 @@ void timer::write_to_json(std::string file_name) const Timer_One timer_one = timer_pool_B.second; ofs << indent << indent << indent << indent << "{\n"; ofs << indent << indent << indent << indent << "\"name\": \"" << name << "\",\n"; - ofs << indent << indent << indent << indent << "\"cpu_second\": " + ofs << indent << indent << indent << indent << "\"cpu_second\": " << std::setprecision(15) << timer_one.cpu_second << ",\n"; ofs << indent << indent << indent << indent << "\"calls\": " << timer_one.calls << ",\n"; - ofs << indent << indent << indent << indent << "\"cpu_second_per_call\": " + ofs << indent << indent << indent << indent << "\"cpu_second_per_call\": " << double_to_string(timer_one.cpu_second/timer_one.calls) << ",\n"; - ofs << indent << indent << indent << indent << "\"cpu_second_per_total\": " + ofs << indent << indent << indent << indent << "\"cpu_second_per_total\": " << double_to_string(timer_one.cpu_second/timer_pool[""]["total"].cpu_second) << "\n"; if (order_b == timer_pool_A.second.size()) @@ -283,11 +299,11 @@ void timer::print_all(std::ofstream &ofs) // if the total time is too small, we do not calculate the percentage - if (timer_pool_order[0].second.cpu_second < 1e-9) + if (timer_pool_order[0].second.cpu_second < 1e-9) { pers.push_back(0); - } - else + } + else { pers.push_back(percentage); } @@ -300,10 +316,10 @@ void timer::print_all(std::ofstream &ofs) std::vector titles = {"CLASS_NAME", "NAME", "TIME/s", "CALLS", "AVG/s", "PER/%"}; std::vector formats = {"%-10s", "%-10s", "%6.2f", "%8d", "%6.2f", "%6.2f"}; - FmtTable time_statistics(/*titles=*/titles, - /*nrows=*/pers.size(), - /*formats=*/formats, - /*indent=*/0, + FmtTable time_statistics(/*titles=*/titles, + /*nrows=*/pers.size(), + /*formats=*/formats, + /*indent=*/0, /*align=*/{/*value*/FmtTable::Align::LEFT, /*title*/FmtTable::Align::CENTER}); time_statistics << class_names << names << times << calls << avgs << pers; const std::string table = "\nTIME STATISTICS\n" + time_statistics.str(); diff --git a/source/source_base/timer_wrapper.h b/source/source_base/timer_wrapper.h new file mode 100644 index 0000000000..6da3f391e3 --- /dev/null +++ b/source/source_base/timer_wrapper.h @@ -0,0 +1,56 @@ +#ifndef TIMER_WRAPPER_H +#define TIMER_WRAPPER_H + +#include + +#ifdef __MPI +#include +#endif + +namespace ModuleBase { + +/** + * @brief Time point type that works in both MPI and non-MPI environments + */ +typedef double TimePoint; + +/** + * @brief Get current time as a TimePoint + * + * @return TimePoint Current time + */ +inline TimePoint get_time() +{ +#ifdef __MPI + int is_initialized = 0; + MPI_Initialized(&is_initialized); + if (is_initialized) + { + return MPI_Wtime(); + } + else + { + return std::chrono::duration_cast( + std::chrono::system_clock::now().time_since_epoch()).count() / 1e6; + } +#else + return std::chrono::duration_cast( + std::chrono::system_clock::now().time_since_epoch()).count() / 1e6; +#endif +} + +/** + * @brief Calculate duration between two TimePoints in seconds + * + * @param start Start time point + * @param end End time point + * @return double Duration in seconds + */ +inline double get_duration(const TimePoint& start, const TimePoint& end) +{ + return end - start; +} + +} + +#endif // TIMER_WRAPPER_H \ No newline at end of file diff --git a/source/source_base/tool_check.cpp b/source/source_base/tool_check.cpp index a9450b4fcb..dab7dd5f21 100644 --- a/source/source_base/tool_check.cpp +++ b/source/source_base/tool_check.cpp @@ -49,7 +49,7 @@ void CHECK_INT(std::ifstream &ifs,const int &v,bool quit) void CHECK_DOUBLE(std::ifstream &ifs,const double &v,bool quit) { const double tiny = 1.0e-5; - double v_in; + double v_in = 0.0; ifs >> v_in; if( fabs(v - v_in) > tiny ) { diff --git a/source/source_base/tool_quit.cpp b/source/source_base/tool_quit.cpp index 8798deb0e0..efd72278cc 100644 --- a/source/source_base/tool_quit.cpp +++ b/source/source_base/tool_quit.cpp @@ -65,7 +65,7 @@ void WARNING_QUIT(const std::string &file,const std::string &description) #ifdef __MPI /* if it is MPI run, finalize first, then exit */ std::cout << "Detecting if MPI has been initialized..." << std::endl; - int is_initialized; + int is_initialized = 0; MPI_Initialized(&is_initialized); if (is_initialized) { std::cout << "Terminating ABACUS with multiprocessing environment." << std::endl; @@ -91,21 +91,21 @@ void WARNING_QUIT(const std::string &file,const std::string &description,int ret std::cout << " https://github.com/deepmodeling/abacus-develop/issues" << std::endl; #else - std::cout << " " << std::endl; - std::cout << " ---------------------------------------------------------" << std::endl; - std::cout << " !NOTICE! " << std::endl; - std::cout << " ---------------------------------------------------------" << std::endl; - std::cout << " " << std::endl; - std::cout << " " << description << std::endl; - std::cout << " CHECK IN FILE : " << PARAM.globalv.global_out_dir << "warning.log" << std::endl; - std::cout << " " << std::endl; - std::cout << " For detailed manual of ABACUS, please see the website" << std::endl; - std::cout << " https://abacus.deepmodeling.com" << std::endl; - std::cout << " For any questions, propose issues on the website" << std::endl; - std::cout << " https://github.com/deepmodeling/abacus-develop/issues" << std::endl; - std::cout << " ---------------------------------------------------------" << std::endl; - std::cout << " !NOTICE! " << std::endl; - std::cout << " ---------------------------------------------------------" << std::endl; + std::cout << " " << std::endl; + std::cout << " ---------------------------------------------------------" << std::endl; + std::cout << " !NOTICE! " << std::endl; + std::cout << " ---------------------------------------------------------" << std::endl; + std::cout << " " << std::endl; + std::cout << " " << description << std::endl; + std::cout << " CHECK IN FILE : " << PARAM.globalv.global_out_dir << "warning.log" << std::endl; + std::cout << " " << std::endl; + std::cout << " For detailed manual of ABACUS, please see the website" << std::endl; + std::cout << " https://abacus.deepmodeling.com" << std::endl; + std::cout << " For any questions, propose issues on the website" << std::endl; + std::cout << " https://github.com/deepmodeling/abacus-develop/issues" << std::endl; + std::cout << " ---------------------------------------------------------" << std::endl; + std::cout << " !NOTICE! " << std::endl; + std::cout << " ---------------------------------------------------------" << std::endl; GlobalV::ofs_running << " ---------------------------------------------------------" << std::endl; diff --git a/source/source_base/truncated_func.h b/source/source_base/truncated_func.h new file mode 100644 index 0000000000..55ce64953a --- /dev/null +++ b/source/source_base/truncated_func.h @@ -0,0 +1,116 @@ +#ifndef MODULE_BASE_TRUNCATED_FUNC_H +#define MODULE_BASE_TRUNCATED_FUNC_H + +#include "source_base/libm/libm.h" +#include +#include +#include + +namespace ModuleBase +{ + +/** + * @brief Truncated exponential function to avoid underflow. + * + * This function returns 0 if the real part of the input is less than -230.0, + * otherwise it calls ModuleBase::libm::exp(x). + * + * @tparam FPTYPE The floating point type (float, double, or complex). + * @param x The input value. + * @return FPTYPE The result of the exponential function. + */ +template +inline FPTYPE truncated_exp(FPTYPE x) +{ + if (std::real(x) < -230.0) + { + return static_cast(0.0); + } + return ModuleBase::libm::exp(x); +} + +/** + * @brief Truncated complementary error function to avoid underflow for large arguments. + * + * This function returns 0 if the real part of the input is greater than 20.0, + * otherwise it calls std::erfc(x). + * + * @tparam FPTYPE The floating point type (float, double, or complex). + * @param x The input value. + * @return FPTYPE The result of the erfc function. + */ +template +inline FPTYPE truncated_erfc(FPTYPE x) +{ + if (std::real(x) > 20.0) + { + return static_cast(0.0); + } + return std::erfc(x); +} + +/** + * @brief Truncated value function to avoid underflow. + * + * This function returns 0 if the absolute value of the input is less than 1.0e-30, + * otherwise it returns the input x. + * + * @tparam FPTYPE The floating point type (float, double, or complex). + * @param x The input value. + * @return FPTYPE The result of the truncation. + */ +/** + * @brief Truncated value function to avoid underflow. + * + * This function modifies the input to 0 if its absolute value is less than 1.0e-30. + * + * @tparam FPTYPE The floating point type (float, double, or complex). + * @param x The input value to be checked and possibly truncated. + */ +template +inline void truncated_underflow(FPTYPE& x) +{ + if (std::abs(x) < 1.0e-30) + { + x = static_cast(0.0); + } +} + +template <> +inline void truncated_underflow(double& x) +{ + const uint64_t u = *reinterpret_cast(&x); + // The exponent bits are 52-62 (11 bits). The bias is 1023. + // 1e-30 corresponds to -100 in base-2 exponent roughly. + // 923 = 1023 - 100. + if (((u >> 52) & 0x7FF) <= 923) + { + x = 0.0; + } +} + +template <> +inline void truncated_underflow(float& x) +{ + const uint32_t u = *reinterpret_cast(&x); + // The exponent bits are 23-30 (8 bits). The bias is 127. + // 1e-30 corresponds to -100 in base-2 exponent roughly. + // 27 = 127 - 100. + if (((u >> 23) & 0xFF) <= 27) + { + x = 0.0f; + } +} + +template +inline void truncated_underflow(std::complex& x) +{ + T* ptr = reinterpret_cast(&x); + truncated_underflow(ptr[0]); + truncated_underflow(ptr[1]); +} + + +} // namespace ModuleBase + +#endif // MODULE_BASE_TRUNCATED_FUNC_H \ No newline at end of file diff --git a/source/source_base/vector3.h b/source/source_base/vector3.h index 3540018ae0..39cdbeb014 100644 --- a/source/source_base/vector3.h +++ b/source/source_base/vector3.h @@ -170,11 +170,11 @@ template class Vector3 } /** - * @brief Get the square of nomr of a Vector3 + * @brief Get the square of norm of a Vector3 * * @return T */ - T norm2(void) const + inline T norm2(void) const { return x * x + y * y + z * z; } @@ -184,7 +184,7 @@ template class Vector3 * * @return T */ - T norm(void) const + inline T norm(void) const { return sqrt(norm2()); } diff --git a/source/source_base/ylm.cpp b/source/source_base/ylm.cpp index a36b14c60a..22c0b8afc7 100644 --- a/source/source_base/ylm.cpp +++ b/source/source_base/ylm.cpp @@ -7,49 +7,12 @@ #include "timer.h" #include "tool_quit.h" #include "array_pool.h" +#include "ylmcoef.h" namespace ModuleBase { int Ylm::nlm = 0; -std::vector Ylm::ylmcoef = { - 1.0 / sqrt(ModuleBase::FOUR_PI), - sqrt (3.0 / ModuleBase::FOUR_PI), - sqrt (15.0) / 2.0, - sqrt (5.0) / 2.0, - sqrt (5.0), - 1.0 / sqrt(3.0), - sqrt (5.0 / 3.0), - sqrt (35.0 / 9.0), - sqrt (7.0/3.0)/1.5, - sqrt (35.0 / 8.0), - sqrt (7.0 / 8.0), - sqrt (7.0), - 1.0 / sqrt (15.0), - sqrt (14.0 / 15.0), - sqrt (14.0 / 3.0), - sqrt(7.0)*3.0/4.0, - 9.0/4.0/sqrt(5.0), - sqrt(21.0/5.0), - sqrt(24.0/25.0), - sqrt(21.0)/2.0, - sqrt(3.0)/2.0, - 0.5/sqrt(7.0), - 1.5*sqrt(3.0/7.0), - 3.0/sqrt(2.0), - 0.6*sqrt(11.0), - 0.8*sqrt(11.0/7.0), - sqrt (33.0/8.0), - sqrt (55.0/56.0), - sqrt (33.0/7.0), - sqrt (11.0)*2.0/7.0, - sqrt (11.0)*0.75, - sqrt (11.0)*0.25, - sqrt (11.0), - 1.0/3.0/sqrt(5.0), - 2.0/3.0*sqrt(11.0/5.0), - sqrt(22.0/5.0) -}; // here Lmax == max angular momentum + 1 void Ylm::get_ylm_real( const int &Lmax, const ModuleBase::Vector3 &vec, double ylmr[] ) @@ -324,10 +287,10 @@ void Ylm::get_ylm_real( const int &Lmax, const ModuleBase::Vector3 &vec, * *************************/ void Ylm::rlylm ( - const int& Lmax, //max momentum of l + 1 - const double& x, - const double& y, - const double& z, + const int Lmax, //max momentum of l + 1 + const double x, + const double y, + const double z, double rly[] ) { @@ -474,7 +437,7 @@ void Ylm::rlylm { int twok = 2 * ik; - double gamma; + double gamma = 0.0; double aux0, aux1, aux2, aux3; aux0 = pow(-1.0, ik) * pow(2.0, -il); @@ -529,10 +492,10 @@ void Ylm::rlylm //return ylm, not rlylm void Ylm::sph_harm ( - const int& Lmax, //max momentum of l - const double& xdr, - const double& ydr, - const double& zdr, + const int Lmax, //max momentum of l + const double xdr, + const double ydr, + const double zdr, std::vector &rly ) { @@ -542,28 +505,28 @@ void Ylm::sph_harm /*************************** L = 0 ***************************/ - rly[0] = Ylm::ylmcoef[0]; //l=0, m=0 + rly[0] = ylmcoef[0]; //l=0, m=0 if (Lmax == 0) return; /*************************** L = 1 ***************************/ - rly[1] = Ylm::ylmcoef[1]*zdr; //l=1, m=0 - rly[2] = -Ylm::ylmcoef[1]*xdr; //l=1, m=1 - rly[3] = -Ylm::ylmcoef[1]*ydr; //l=1, m=-1 + rly[1] = ylmcoef[1]*zdr; //l=1, m=0 + rly[2] = -ylmcoef[1]*xdr; //l=1, m=1 + rly[3] = -ylmcoef[1]*ydr; //l=1, m=-1 if (Lmax == 1) return; /*************************** L = 2 ***************************/ - rly[4] = Ylm::ylmcoef[2]*zdr*rly[1]-Ylm::ylmcoef[3]*rly[0];//l=2, m=0 + rly[4] = ylmcoef[2]*zdr*rly[1]-ylmcoef[3]*rly[0];//l=2, m=0 - double tmp0 = Ylm::ylmcoef[4]*zdr; + double tmp0 = ylmcoef[4]*zdr; rly[5] = tmp0*rly[2];//l=2,m=1 rly[6] = tmp0*rly[3];//l=2,m=-1 - double tmp2 = Ylm::ylmcoef[4]*xdr; - rly[7]= Ylm::ylmcoef[5]*rly[4]-Ylm::ylmcoef[6]*rly[0] - tmp2*rly[2];//l=2,m=2 + double tmp2 = ylmcoef[4]*xdr; + rly[7]= ylmcoef[5]*rly[4]-ylmcoef[6]*rly[0] - tmp2*rly[2];//l=2,m=2 rly[8] = -tmp2*rly[3]; // rly[8] = tmp1+tmp2*rly[3];//l=2,m=-2 if (Lmax == 2) return; @@ -571,67 +534,67 @@ void Ylm::sph_harm /*************************** L = 3 ***************************/ - rly[9] = Ylm::ylmcoef[7]*zdr*rly[4]-Ylm::ylmcoef[8]*rly[1]; //l=3, m=0 + rly[9] = ylmcoef[7]*zdr*rly[4]-ylmcoef[8]*rly[1]; //l=3, m=0 - double tmp3 = Ylm::ylmcoef[9]*zdr; - rly[10] = tmp3*rly[5]-Ylm::ylmcoef[10]*rly[2];//l=3,m=1 - rly[11] = tmp3*rly[6]-Ylm::ylmcoef[10]*rly[3];//l=3,m=-1 + double tmp3 = ylmcoef[9]*zdr; + rly[10] = tmp3*rly[5]-ylmcoef[10]*rly[2];//l=3,m=1 + rly[11] = tmp3*rly[6]-ylmcoef[10]*rly[3];//l=3,m=-1 - double tmp4 = Ylm::ylmcoef[11]*zdr; + double tmp4 = ylmcoef[11]*zdr; rly[12] = tmp4*rly[7];//l=3,m=2 rly[13] = tmp4*rly[8];//l=3,m=-2 - double tmp5 = Ylm::ylmcoef[14]*xdr; - rly[14] = Ylm::ylmcoef[12]*rly[10]-Ylm::ylmcoef[13]*rly[2]-tmp5*rly[7];//l=3,m=3 - rly[15] = Ylm::ylmcoef[12]*rly[11]-Ylm::ylmcoef[13]*rly[3]-tmp5*rly[8];//l=3,m=-3 + double tmp5 = ylmcoef[14]*xdr; + rly[14] = ylmcoef[12]*rly[10]-ylmcoef[13]*rly[2]-tmp5*rly[7];//l=3,m=3 + rly[15] = ylmcoef[12]*rly[11]-ylmcoef[13]*rly[3]-tmp5*rly[8];//l=3,m=-3 if (Lmax == 3) return; /*************************** L = 4 ***************************/ - rly[16] = Ylm::ylmcoef[15]*zdr*rly[9]-Ylm::ylmcoef[16]*rly[4];//l=4,m=0 + rly[16] = ylmcoef[15]*zdr*rly[9]-ylmcoef[16]*rly[4];//l=4,m=0 - double tmp6 = Ylm::ylmcoef[17]*zdr; - rly[17] = tmp6*rly[10]-Ylm::ylmcoef[18]*rly[5];//l=4,m=1 - rly[18] = tmp6*rly[11]-Ylm::ylmcoef[18]*rly[6];//l=4,m=-1 + double tmp6 = ylmcoef[17]*zdr; + rly[17] = tmp6*rly[10]-ylmcoef[18]*rly[5];//l=4,m=1 + rly[18] = tmp6*rly[11]-ylmcoef[18]*rly[6];//l=4,m=-1 - double tmp7 = Ylm::ylmcoef[19]*zdr; - rly[19] = tmp7*rly[12]-Ylm::ylmcoef[20]*rly[7];//l=4,m=2 - rly[20] = tmp7*rly[13]-Ylm::ylmcoef[20]*rly[8];//l=4,m=-2 + double tmp7 = ylmcoef[19]*zdr; + rly[19] = tmp7*rly[12]-ylmcoef[20]*rly[7];//l=4,m=2 + rly[20] = tmp7*rly[13]-ylmcoef[20]*rly[8];//l=4,m=-2 double tmp8 = 3.0*zdr; rly[21] = tmp8*rly[14];//l=4,m=3 rly[22] = tmp8*rly[15];//l=4,m=-3 - double tmp9 = Ylm::ylmcoef[23]*xdr; - rly[23] = Ylm::ylmcoef[21]*rly[19]-Ylm::ylmcoef[22]*rly[7]-tmp9*rly[14];//l=4,m=4 - rly[24] = Ylm::ylmcoef[21]*rly[20]-Ylm::ylmcoef[22]*rly[8]-tmp9*rly[15];//l=4,m=-4 + double tmp9 = ylmcoef[23]*xdr; + rly[23] = ylmcoef[21]*rly[19]-ylmcoef[22]*rly[7]-tmp9*rly[14];//l=4,m=4 + rly[24] = ylmcoef[21]*rly[20]-ylmcoef[22]*rly[8]-tmp9*rly[15];//l=4,m=-4 if (Lmax == 4) return; /*************************** L = 5 ***************************/ - rly[25] = Ylm::ylmcoef[24]*zdr*rly[16]-Ylm::ylmcoef[25]*rly[9];//l=5,m=0 + rly[25] = ylmcoef[24]*zdr*rly[16]-ylmcoef[25]*rly[9];//l=5,m=0 - double tmp10 = Ylm::ylmcoef[26]*zdr; - rly[26] = tmp10*rly[17]-Ylm::ylmcoef[27]*rly[10];//l=5,m=1 - rly[27] = tmp10*rly[18]-Ylm::ylmcoef[27]*rly[11];//l=5,m=-1 + double tmp10 = ylmcoef[26]*zdr; + rly[26] = tmp10*rly[17]-ylmcoef[27]*rly[10];//l=5,m=1 + rly[27] = tmp10*rly[18]-ylmcoef[27]*rly[11];//l=5,m=-1 - double tmp11 = Ylm::ylmcoef[28]*zdr; - rly[28] = tmp11*rly[19]-Ylm::ylmcoef[29]*rly[12];//l=5,m=2 - rly[29] = tmp11*rly[20]-Ylm::ylmcoef[29]*rly[13];//l=5,m=-2 + double tmp11 = ylmcoef[28]*zdr; + rly[28] = tmp11*rly[19]-ylmcoef[29]*rly[12];//l=5,m=2 + rly[29] = tmp11*rly[20]-ylmcoef[29]*rly[13];//l=5,m=-2 - double tmp12 = Ylm::ylmcoef[30]*zdr; - rly[30] = tmp12*rly[21]-Ylm::ylmcoef[31]*rly[14];//l=5,m=3 - rly[31] = tmp12*rly[22]-Ylm::ylmcoef[31]*rly[15];//l=5,m=-3 + double tmp12 = ylmcoef[30]*zdr; + rly[30] = tmp12*rly[21]-ylmcoef[31]*rly[14];//l=5,m=3 + rly[31] = tmp12*rly[22]-ylmcoef[31]*rly[15];//l=5,m=-3 - double tmp13 = Ylm::ylmcoef[32]*zdr; + double tmp13 = ylmcoef[32]*zdr; rly[32] = tmp13*rly[23];//l=5,m=4 rly[33] = tmp13*rly[24];//l=5,m=-4 - double tmp14 = Ylm::ylmcoef[35]*xdr; - rly[34] = Ylm::ylmcoef[33]*rly[30]-Ylm::ylmcoef[34]*rly[14]-tmp14*rly[23];//l=5,m=5 - rly[35] = Ylm::ylmcoef[33]*rly[31]-Ylm::ylmcoef[34]*rly[15]-tmp14*rly[24];//l=5,m=-5 + double tmp14 = ylmcoef[35]*xdr; + rly[34] = ylmcoef[33]*rly[30]-ylmcoef[34]*rly[14]-tmp14*rly[23];//l=5,m=5 + rly[35] = ylmcoef[33]*rly[31]-ylmcoef[34]*rly[15]-tmp14*rly[24];//l=5,m=-5 if (Lmax == 5) return; //if Lmax > 5 @@ -668,10 +631,10 @@ void Ylm::sph_harm // Peize Lin change rly 2016-08-26 void Ylm::rl_sph_harm ( - const int& Lmax, //max momentum of L - const double& x, - const double& y, - const double& z, + const int Lmax, //max momentum of L + const double x, + const double y, + const double z, std::vector& rly ) { @@ -683,28 +646,28 @@ void Ylm::rl_sph_harm /*************************** L = 0 ***************************/ - rly[0] = Ylm::ylmcoef[0]; //l=0, m=0 + rly[0] = ylmcoef[0]; //l=0, m=0 if (Lmax == 0) return; /*************************** L = 1 ***************************/ - rly[1] = Ylm::ylmcoef[1]*z; //l=1, m=0 - rly[2] = -Ylm::ylmcoef[1]*x; //l=1, m=1 - rly[3] = -Ylm::ylmcoef[1]*y; //l=1, m=-1 + rly[1] = ylmcoef[1]*z; //l=1, m=0 + rly[2] = -ylmcoef[1]*x; //l=1, m=1 + rly[3] = -ylmcoef[1]*y; //l=1, m=-1 if (Lmax == 1) return; /*************************** L = 2 ***************************/ - rly[4] = Ylm::ylmcoef[2]*z*rly[1]-Ylm::ylmcoef[3]*rly[0]*radius2;//l=2, m=0 + rly[4] = ylmcoef[2]*z*rly[1]-ylmcoef[3]*rly[0]*radius2;//l=2, m=0 - double tmp0 = Ylm::ylmcoef[4]*z; + double tmp0 = ylmcoef[4]*z; rly[5] = tmp0*rly[2];//l=2,m=1 rly[6] = tmp0*rly[3];//l=2,m=-1 - double tmp2 = Ylm::ylmcoef[4]*x; - rly[7]= Ylm::ylmcoef[5]*rly[4]-Ylm::ylmcoef[6]*rly[0]*radius2 - tmp2*rly[2];//l=2,m=2 + double tmp2 = ylmcoef[4]*x; + rly[7]= ylmcoef[5]*rly[4]-ylmcoef[6]*rly[0]*radius2 - tmp2*rly[2];//l=2,m=2 rly[8] = -tmp2*rly[3]; // rly[8] = tmp1+tmp2*rly[3];//l=2,m=-2 if (Lmax == 2) return; @@ -712,67 +675,67 @@ void Ylm::rl_sph_harm /*************************** L = 3 ***************************/ - rly[9] = Ylm::ylmcoef[7]*z*rly[4]-Ylm::ylmcoef[8]*rly[1]*radius2; //l=3, m=0 + rly[9] = ylmcoef[7]*z*rly[4]-ylmcoef[8]*rly[1]*radius2; //l=3, m=0 - double tmp3 = Ylm::ylmcoef[9]*z; - rly[10] = tmp3*rly[5]-Ylm::ylmcoef[10]*rly[2]*radius2;//l=3,m=1 - rly[11] = tmp3*rly[6]-Ylm::ylmcoef[10]*rly[3]*radius2;//l=3,m=-1 + double tmp3 = ylmcoef[9]*z; + rly[10] = tmp3*rly[5]-ylmcoef[10]*rly[2]*radius2;//l=3,m=1 + rly[11] = tmp3*rly[6]-ylmcoef[10]*rly[3]*radius2;//l=3,m=-1 - double tmp4 = Ylm::ylmcoef[11]*z; + double tmp4 = ylmcoef[11]*z; rly[12] = tmp4*rly[7];//l=3,m=2 rly[13] = tmp4*rly[8];//l=3,m=-2 - double tmp5 = Ylm::ylmcoef[14]*x; - rly[14] = Ylm::ylmcoef[12]*rly[10]-Ylm::ylmcoef[13]*rly[2]*radius2-tmp5*rly[7];//l=3,m=3 - rly[15] = Ylm::ylmcoef[12]*rly[11]-Ylm::ylmcoef[13]*rly[3]*radius2-tmp5*rly[8];//l=3,m=-3 + double tmp5 = ylmcoef[14]*x; + rly[14] = ylmcoef[12]*rly[10]-ylmcoef[13]*rly[2]*radius2-tmp5*rly[7];//l=3,m=3 + rly[15] = ylmcoef[12]*rly[11]-ylmcoef[13]*rly[3]*radius2-tmp5*rly[8];//l=3,m=-3 if (Lmax == 3) return; /*************************** L = 4 ***************************/ - rly[16] = Ylm::ylmcoef[15]*z*rly[9]-Ylm::ylmcoef[16]*rly[4]*radius2;//l=4,m=0 + rly[16] = ylmcoef[15]*z*rly[9]-ylmcoef[16]*rly[4]*radius2;//l=4,m=0 - double tmp6 = Ylm::ylmcoef[17]*z; - rly[17] = tmp6*rly[10]-Ylm::ylmcoef[18]*rly[5]*radius2;//l=4,m=1 - rly[18] = tmp6*rly[11]-Ylm::ylmcoef[18]*rly[6]*radius2;//l=4,m=-1 + double tmp6 = ylmcoef[17]*z; + rly[17] = tmp6*rly[10]-ylmcoef[18]*rly[5]*radius2;//l=4,m=1 + rly[18] = tmp6*rly[11]-ylmcoef[18]*rly[6]*radius2;//l=4,m=-1 - double tmp7 = Ylm::ylmcoef[19]*z; - rly[19] = tmp7*rly[12]-Ylm::ylmcoef[20]*rly[7]*radius2;//l=4,m=2 - rly[20] = tmp7*rly[13]-Ylm::ylmcoef[20]*rly[8]*radius2;//l=4,m=-2 + double tmp7 = ylmcoef[19]*z; + rly[19] = tmp7*rly[12]-ylmcoef[20]*rly[7]*radius2;//l=4,m=2 + rly[20] = tmp7*rly[13]-ylmcoef[20]*rly[8]*radius2;//l=4,m=-2 double tmp8 = 3.0*z; rly[21] = tmp8*rly[14];//l=4,m=3 rly[22] = tmp8*rly[15];//l=4,m=-3 - double tmp9 = Ylm::ylmcoef[23]*x; - rly[23] = Ylm::ylmcoef[21]*rly[19]-Ylm::ylmcoef[22]*rly[7]*radius2-tmp9*rly[14];//l=4,m=4 - rly[24] = Ylm::ylmcoef[21]*rly[20]-Ylm::ylmcoef[22]*rly[8]*radius2-tmp9*rly[15];//l=4,m=-4 + double tmp9 = ylmcoef[23]*x; + rly[23] = ylmcoef[21]*rly[19]-ylmcoef[22]*rly[7]*radius2-tmp9*rly[14];//l=4,m=4 + rly[24] = ylmcoef[21]*rly[20]-ylmcoef[22]*rly[8]*radius2-tmp9*rly[15];//l=4,m=-4 if (Lmax == 4) return; /*************************** L = 5 ***************************/ - rly[25] = Ylm::ylmcoef[24]*z*rly[16]-Ylm::ylmcoef[25]*rly[9]*radius2;//l=5,m=0 + rly[25] = ylmcoef[24]*z*rly[16]-ylmcoef[25]*rly[9]*radius2;//l=5,m=0 - double tmp10 = Ylm::ylmcoef[26]*z; - rly[26] = tmp10*rly[17]-Ylm::ylmcoef[27]*rly[10]*radius2;//l=5,m=1 - rly[27] = tmp10*rly[18]-Ylm::ylmcoef[27]*rly[11]*radius2;//l=5,m=-1 + double tmp10 = ylmcoef[26]*z; + rly[26] = tmp10*rly[17]-ylmcoef[27]*rly[10]*radius2;//l=5,m=1 + rly[27] = tmp10*rly[18]-ylmcoef[27]*rly[11]*radius2;//l=5,m=-1 - double tmp11 = Ylm::ylmcoef[28]*z; - rly[28] = tmp11*rly[19]-Ylm::ylmcoef[29]*rly[12]*radius2;//l=5,m=2 - rly[29] = tmp11*rly[20]-Ylm::ylmcoef[29]*rly[13]*radius2;//l=5,m=-2 + double tmp11 = ylmcoef[28]*z; + rly[28] = tmp11*rly[19]-ylmcoef[29]*rly[12]*radius2;//l=5,m=2 + rly[29] = tmp11*rly[20]-ylmcoef[29]*rly[13]*radius2;//l=5,m=-2 - double tmp12 = Ylm::ylmcoef[30]*z; - rly[30] = tmp12*rly[21]-Ylm::ylmcoef[31]*rly[14]*radius2;//l=5,m=3 - rly[31] = tmp12*rly[22]-Ylm::ylmcoef[31]*rly[15]*radius2;//l=5,m=-3 + double tmp12 = ylmcoef[30]*z; + rly[30] = tmp12*rly[21]-ylmcoef[31]*rly[14]*radius2;//l=5,m=3 + rly[31] = tmp12*rly[22]-ylmcoef[31]*rly[15]*radius2;//l=5,m=-3 - double tmp13 = Ylm::ylmcoef[32]*z; + double tmp13 = ylmcoef[32]*z; rly[32] = tmp13*rly[23];//l=5,m=4 rly[33] = tmp13*rly[24];//l=5,m=-4 - double tmp14 = Ylm::ylmcoef[35]*x; - rly[34] = Ylm::ylmcoef[33]*rly[30]-Ylm::ylmcoef[34]*rly[14]*radius2-tmp14*rly[23];//l=5,m=5 - rly[35] = Ylm::ylmcoef[33]*rly[31]-Ylm::ylmcoef[34]*rly[15]*radius2-tmp14*rly[24];//l=5,m=-5 + double tmp14 = ylmcoef[35]*x; + rly[34] = ylmcoef[33]*rly[30]-ylmcoef[34]*rly[14]*radius2-tmp14*rly[23];//l=5,m=5 + rly[35] = ylmcoef[33]*rly[31]-ylmcoef[34]*rly[15]*radius2-tmp14*rly[24];//l=5,m=-5 if (Lmax == 5) return; //if Lmax > 5 @@ -807,10 +770,10 @@ void Ylm::rl_sph_harm void Ylm::grad_rl_sph_harm ( - const int& Lmax, //max momentum of L - const double& x, - const double& y, - const double& z, + const int Lmax, //max momentum of L + const double x, + const double y, + const double z, double* rly, double** grly ) @@ -824,59 +787,59 @@ void Ylm::grad_rl_sph_harm /*************************** L = 0 ***************************/ - rly[0] = Ylm::ylmcoef[0]; //l=0, m=0 + rly[0] = ylmcoef[0]; //l=0, m=0 grly[0][0] = grly[0][1] = grly[0][2] = 0.0; if (Lmax == 0) return; /*************************** L = 1 ***************************/ - rly[1] = Ylm::ylmcoef[1]*z; //l=1, m=0 + rly[1] = ylmcoef[1]*z; //l=1, m=0 grly[1][0] = grly[1][1] = 0.0; - grly[1][2] = Ylm::ylmcoef[1]; + grly[1][2] = ylmcoef[1]; - rly[2] = -Ylm::ylmcoef[1]*x; //l=1, m=1 + rly[2] = -ylmcoef[1]*x; //l=1, m=1 grly[2][1] = grly[2][2] = 0.0; - grly[2][0] = -Ylm::ylmcoef[1]; + grly[2][0] = -ylmcoef[1]; - rly[3] = -Ylm::ylmcoef[1]*y; //l=1, m=-1 + rly[3] = -ylmcoef[1]*y; //l=1, m=-1 grly[3][0] = grly[3][2] = 0.0; - grly[3][1] = -Ylm::ylmcoef[1]; + grly[3][1] = -ylmcoef[1]; if (Lmax == 1) return; /*************************** L = 2 ***************************/ - rly[4] = Ylm::ylmcoef[2]*z*rly[1]-Ylm::ylmcoef[3]*rly[0]*radius2;//l=2, m=0 - grly[4][0] = Ylm::ylmcoef[2]*z*grly[1][0]-Ylm::ylmcoef[3]*(grly[0][0]*radius2+rly[0]*tx);//l=2, m=0 - grly[4][1] = Ylm::ylmcoef[2]*z*grly[1][1]-Ylm::ylmcoef[3]*(grly[0][1]*radius2+rly[0]*ty);//l=2, m=0 - grly[4][2] = Ylm::ylmcoef[2]*(z*grly[1][2]+rly[1])-Ylm::ylmcoef[3]*(grly[0][2]*radius2+rly[0]*tz);//l=2, m=0 + rly[4] = ylmcoef[2]*z*rly[1]-ylmcoef[3]*rly[0]*radius2;//l=2, m=0 + grly[4][0] = ylmcoef[2]*z*grly[1][0]-ylmcoef[3]*(grly[0][0]*radius2+rly[0]*tx);//l=2, m=0 + grly[4][1] = ylmcoef[2]*z*grly[1][1]-ylmcoef[3]*(grly[0][1]*radius2+rly[0]*ty);//l=2, m=0 + grly[4][2] = ylmcoef[2]*(z*grly[1][2]+rly[1])-ylmcoef[3]*(grly[0][2]*radius2+rly[0]*tz);//l=2, m=0 - double tmp0 = Ylm::ylmcoef[4]*z; + double tmp0 = ylmcoef[4]*z; rly[5] = tmp0*rly[2];//l=2,m=1 grly[5][0] = tmp0*grly[2][0]; grly[5][1] = tmp0*grly[2][1]; - grly[5][2] = Ylm::ylmcoef[4]*(rly[2]+z*grly[2][2]); + grly[5][2] = ylmcoef[4]*(rly[2]+z*grly[2][2]); rly[6] = tmp0*rly[3];//l=2,m=-1 grly[6][0] = tmp0*grly[3][0]; grly[6][1] = tmp0*grly[3][1]; - grly[6][2] = Ylm::ylmcoef[4]*(rly[3]+z*grly[3][2]); + grly[6][2] = ylmcoef[4]*(rly[3]+z*grly[3][2]); - double tmp2 = Ylm::ylmcoef[4]*x; - rly[7]= Ylm::ylmcoef[5]*rly[4]-Ylm::ylmcoef[6]*rly[0]*radius2 - tmp2*rly[2];//l=2,m=2 - grly[7][0] = Ylm::ylmcoef[5]*grly[4][0]-Ylm::ylmcoef[6]*(rly[0]*tx+grly[0][0]*radius2)-Ylm::ylmcoef[4]*(x*grly[2][0]+rly[2]); + double tmp2 = ylmcoef[4]*x; + rly[7]= ylmcoef[5]*rly[4]-ylmcoef[6]*rly[0]*radius2 - tmp2*rly[2];//l=2,m=2 + grly[7][0] = ylmcoef[5]*grly[4][0]-ylmcoef[6]*(rly[0]*tx+grly[0][0]*radius2)-ylmcoef[4]*(x*grly[2][0]+rly[2]); -// std::cout << "\np1 = "<< Ylm::ylmcoef[5]*grly[4][0] << " p2 = " << -Ylm::ylmcoef[6]*rly[0]*tx -// << " p3 = " << -Ylm::ylmcoef[4]*x*grly[2][0] << " p4 = " << -Ylm::ylmcoef[4]*rly[2] << std::endl; +// std::cout << "\np1 = "<< ylmcoef[5]*grly[4][0] << " p2 = " << -ylmcoef[6]*rly[0]*tx +// << " p3 = " << -ylmcoef[4]*x*grly[2][0] << " p4 = " << -ylmcoef[4]*rly[2] << std::endl; - grly[7][1] = Ylm::ylmcoef[5]*grly[4][1]-Ylm::ylmcoef[6]*(rly[0]*ty+grly[0][1]*radius2)-tmp2*grly[2][1]; - grly[7][2] = Ylm::ylmcoef[5]*grly[4][2]-Ylm::ylmcoef[6]*(rly[0]*tz+grly[0][2]*radius2)-tmp2*grly[2][2]; + grly[7][1] = ylmcoef[5]*grly[4][1]-ylmcoef[6]*(rly[0]*ty+grly[0][1]*radius2)-tmp2*grly[2][1]; + grly[7][2] = ylmcoef[5]*grly[4][2]-ylmcoef[6]*(rly[0]*tz+grly[0][2]*radius2)-tmp2*grly[2][2]; rly[8] = -tmp2*rly[3]; - grly[8][0] = -Ylm::ylmcoef[4]*(rly[3]+x*grly[3][0]); + grly[8][0] = -ylmcoef[4]*(rly[3]+x*grly[3][0]); grly[8][1] = -tmp2*grly[3][1]; grly[8][2] = -tmp2*grly[3][2]; // rly[8] = tmp1+tmp2*rly[3];//l=2,m=-2 @@ -885,74 +848,74 @@ void Ylm::grad_rl_sph_harm /*************************** L = 3 ***************************/ - rly[9] = Ylm::ylmcoef[7]*z*rly[4]-Ylm::ylmcoef[8]*rly[1]*radius2; //l=3, m=0 - grly[9][0] = Ylm::ylmcoef[7]*z*grly[4][0]-Ylm::ylmcoef[8]*(rly[1]*tx+grly[1][0]*radius2); - grly[9][1] = Ylm::ylmcoef[7]*z*grly[4][1]-Ylm::ylmcoef[8]*(rly[1]*ty+grly[1][1]*radius2); - grly[9][2] = Ylm::ylmcoef[7]*(rly[4]+z*grly[4][2])-Ylm::ylmcoef[8]*(rly[1]*tz+grly[1][2]*radius2); - - double tmp3 = Ylm::ylmcoef[9]*z; - rly[10] = tmp3*rly[5]-Ylm::ylmcoef[10]*rly[2]*radius2;//l=3,m=1 - grly[10][0] = tmp3*grly[5][0]-Ylm::ylmcoef[10]*(grly[2][0]*radius2+rly[2]*tx); - grly[10][1] = tmp3*grly[5][1]-Ylm::ylmcoef[10]*(grly[2][1]*radius2+rly[2]*ty); - grly[10][2] = Ylm::ylmcoef[9]*(z*grly[5][2]+rly[5])-Ylm::ylmcoef[10]*(grly[2][2]*radius2+rly[2]*tz); - - rly[11] = tmp3*rly[6]-Ylm::ylmcoef[10]*rly[3]*radius2;//l=3,m=-1 - grly[11][0] = tmp3*grly[6][0]-Ylm::ylmcoef[10]*(grly[3][0]*radius2+rly[3]*tx); - grly[11][1] = tmp3*grly[6][1]-Ylm::ylmcoef[10]*(grly[3][1]*radius2+rly[3]*ty); - grly[11][2] = Ylm::ylmcoef[9]*(z*grly[6][2]+rly[6])-Ylm::ylmcoef[10]*(grly[3][2]*radius2+rly[3]*tz); - - double tmp4 = Ylm::ylmcoef[11]*z; + rly[9] = ylmcoef[7]*z*rly[4]-ylmcoef[8]*rly[1]*radius2; //l=3, m=0 + grly[9][0] = ylmcoef[7]*z*grly[4][0]-ylmcoef[8]*(rly[1]*tx+grly[1][0]*radius2); + grly[9][1] = ylmcoef[7]*z*grly[4][1]-ylmcoef[8]*(rly[1]*ty+grly[1][1]*radius2); + grly[9][2] = ylmcoef[7]*(rly[4]+z*grly[4][2])-ylmcoef[8]*(rly[1]*tz+grly[1][2]*radius2); + + double tmp3 = ylmcoef[9]*z; + rly[10] = tmp3*rly[5]-ylmcoef[10]*rly[2]*radius2;//l=3,m=1 + grly[10][0] = tmp3*grly[5][0]-ylmcoef[10]*(grly[2][0]*radius2+rly[2]*tx); + grly[10][1] = tmp3*grly[5][1]-ylmcoef[10]*(grly[2][1]*radius2+rly[2]*ty); + grly[10][2] = ylmcoef[9]*(z*grly[5][2]+rly[5])-ylmcoef[10]*(grly[2][2]*radius2+rly[2]*tz); + + rly[11] = tmp3*rly[6]-ylmcoef[10]*rly[3]*radius2;//l=3,m=-1 + grly[11][0] = tmp3*grly[6][0]-ylmcoef[10]*(grly[3][0]*radius2+rly[3]*tx); + grly[11][1] = tmp3*grly[6][1]-ylmcoef[10]*(grly[3][1]*radius2+rly[3]*ty); + grly[11][2] = ylmcoef[9]*(z*grly[6][2]+rly[6])-ylmcoef[10]*(grly[3][2]*radius2+rly[3]*tz); + + double tmp4 = ylmcoef[11]*z; rly[12] = tmp4*rly[7];//l=3,m=2 grly[12][0] = tmp4*grly[7][0]; grly[12][1] = tmp4*grly[7][1]; - grly[12][2] = Ylm::ylmcoef[11]*(z*grly[7][2]+rly[7]); + grly[12][2] = ylmcoef[11]*(z*grly[7][2]+rly[7]); rly[13] = tmp4*rly[8];//l=3,m=-2 grly[13][0] = tmp4*grly[8][0]; grly[13][1] = tmp4*grly[8][1]; - grly[13][2] = Ylm::ylmcoef[11]*(z*grly[8][2]+rly[8]); - - double tmp5 = Ylm::ylmcoef[14]*x; - rly[14] = Ylm::ylmcoef[12]*rly[10]-Ylm::ylmcoef[13]*rly[2]*radius2-tmp5*rly[7];//l=3,m=3 - grly[14][0] = Ylm::ylmcoef[12]*grly[10][0]-Ylm::ylmcoef[13]*(rly[2]*tx+grly[2][0]*radius2)-Ylm::ylmcoef[14]*(rly[7]+x*grly[7][0]); - grly[14][1] = Ylm::ylmcoef[12]*grly[10][1]-Ylm::ylmcoef[13]*(rly[2]*ty+grly[2][1]*radius2)-tmp5*grly[7][1]; - grly[14][2] = Ylm::ylmcoef[12]*grly[10][2]-Ylm::ylmcoef[13]*(rly[2]*tz+grly[2][2]*radius2)-tmp5*grly[7][2]; - - rly[15] = Ylm::ylmcoef[12]*rly[11]-Ylm::ylmcoef[13]*rly[3]*radius2-tmp5*rly[8];//l=3,m=-3 - grly[15][0] = Ylm::ylmcoef[12]*grly[11][0]-Ylm::ylmcoef[13]*(rly[3]*tx+grly[3][0]*radius2)-Ylm::ylmcoef[14]*(rly[8]+x*grly[8][0]); - grly[15][1] = Ylm::ylmcoef[12]*grly[11][1]-Ylm::ylmcoef[13]*(rly[3]*ty+grly[3][1]*radius2)-tmp5*grly[8][1]; - grly[15][2] = Ylm::ylmcoef[12]*grly[11][2]-Ylm::ylmcoef[13]*(rly[3]*tz+grly[3][2]*radius2)-tmp5*grly[8][2]; + grly[13][2] = ylmcoef[11]*(z*grly[8][2]+rly[8]); + + double tmp5 = ylmcoef[14]*x; + rly[14] = ylmcoef[12]*rly[10]-ylmcoef[13]*rly[2]*radius2-tmp5*rly[7];//l=3,m=3 + grly[14][0] = ylmcoef[12]*grly[10][0]-ylmcoef[13]*(rly[2]*tx+grly[2][0]*radius2)-ylmcoef[14]*(rly[7]+x*grly[7][0]); + grly[14][1] = ylmcoef[12]*grly[10][1]-ylmcoef[13]*(rly[2]*ty+grly[2][1]*radius2)-tmp5*grly[7][1]; + grly[14][2] = ylmcoef[12]*grly[10][2]-ylmcoef[13]*(rly[2]*tz+grly[2][2]*radius2)-tmp5*grly[7][2]; + + rly[15] = ylmcoef[12]*rly[11]-ylmcoef[13]*rly[3]*radius2-tmp5*rly[8];//l=3,m=-3 + grly[15][0] = ylmcoef[12]*grly[11][0]-ylmcoef[13]*(rly[3]*tx+grly[3][0]*radius2)-ylmcoef[14]*(rly[8]+x*grly[8][0]); + grly[15][1] = ylmcoef[12]*grly[11][1]-ylmcoef[13]*(rly[3]*ty+grly[3][1]*radius2)-tmp5*grly[8][1]; + grly[15][2] = ylmcoef[12]*grly[11][2]-ylmcoef[13]*(rly[3]*tz+grly[3][2]*radius2)-tmp5*grly[8][2]; if (Lmax == 3) return; /*************************** L = 4 ***************************/ - rly[16] = Ylm::ylmcoef[15]*z*rly[9]-Ylm::ylmcoef[16]*rly[4]*radius2;//l=4,m=0 - grly[16][0] = Ylm::ylmcoef[15]*z*grly[9][0]-Ylm::ylmcoef[16]*(rly[4]*tx+grly[4][0]*radius2); - grly[16][1] = Ylm::ylmcoef[15]*z*grly[9][1]-Ylm::ylmcoef[16]*(rly[4]*ty+grly[4][1]*radius2); - grly[16][2] = Ylm::ylmcoef[15]*(z*grly[9][2]+rly[9])-Ylm::ylmcoef[16]*(rly[4]*tz+grly[4][2]*radius2); - - double tmp6 = Ylm::ylmcoef[17]*z; - rly[17] = tmp6*rly[10]-Ylm::ylmcoef[18]*rly[5]*radius2;//l=4,m=1 - grly[17][0] = tmp6*grly[10][0]-Ylm::ylmcoef[18]*(rly[5]*tx+grly[5][0]*radius2); - grly[17][1] = tmp6*grly[10][1]-Ylm::ylmcoef[18]*(rly[5]*ty+grly[5][1]*radius2); - grly[17][2] = Ylm::ylmcoef[17]*(z*grly[10][2]+rly[10])-Ylm::ylmcoef[18]*(rly[5]*tz+grly[5][2]*radius2); - - rly[18] = tmp6*rly[11]-Ylm::ylmcoef[18]*rly[6]*radius2;//l=4,m=-1 - grly[18][0] = tmp6*grly[11][0]-Ylm::ylmcoef[18]*(rly[6]*tx+grly[6][0]*radius2); - grly[18][1] = tmp6*grly[11][1]-Ylm::ylmcoef[18]*(rly[6]*ty+grly[6][1]*radius2); - grly[18][2] = Ylm::ylmcoef[17]*(z*grly[11][2]+rly[11])-Ylm::ylmcoef[18]*(rly[6]*tz+grly[6][2]*radius2); - - double tmp7 = Ylm::ylmcoef[19]*z; - rly[19] = tmp7*rly[12]-Ylm::ylmcoef[20]*rly[7]*radius2;//l=4,m=2 - grly[19][0] = tmp7*grly[12][0]-Ylm::ylmcoef[20]*(rly[7]*tx+grly[7][0]*radius2); - grly[19][1] = tmp7*grly[12][1]-Ylm::ylmcoef[20]*(rly[7]*ty+grly[7][1]*radius2); - grly[19][2] = Ylm::ylmcoef[19]*(z*grly[12][2]+rly[12])-Ylm::ylmcoef[20]*(rly[7]*tz+grly[7][2]*radius2); - - rly[20] = tmp7*rly[13]-Ylm::ylmcoef[20]*rly[8]*radius2;//l=4,m=-2 - grly[20][0] = tmp7*grly[13][0]-Ylm::ylmcoef[20]*(rly[8]*tx+grly[8][0]*radius2); - grly[20][1] = tmp7*grly[13][1]-Ylm::ylmcoef[20]*(rly[8]*ty+grly[8][1]*radius2); - grly[20][2] = Ylm::ylmcoef[19]*(z*grly[13][2]+rly[13])-Ylm::ylmcoef[20]*(rly[8]*tz+grly[8][2]*radius2); + rly[16] = ylmcoef[15]*z*rly[9]-ylmcoef[16]*rly[4]*radius2;//l=4,m=0 + grly[16][0] = ylmcoef[15]*z*grly[9][0]-ylmcoef[16]*(rly[4]*tx+grly[4][0]*radius2); + grly[16][1] = ylmcoef[15]*z*grly[9][1]-ylmcoef[16]*(rly[4]*ty+grly[4][1]*radius2); + grly[16][2] = ylmcoef[15]*(z*grly[9][2]+rly[9])-ylmcoef[16]*(rly[4]*tz+grly[4][2]*radius2); + + double tmp6 = ylmcoef[17]*z; + rly[17] = tmp6*rly[10]-ylmcoef[18]*rly[5]*radius2;//l=4,m=1 + grly[17][0] = tmp6*grly[10][0]-ylmcoef[18]*(rly[5]*tx+grly[5][0]*radius2); + grly[17][1] = tmp6*grly[10][1]-ylmcoef[18]*(rly[5]*ty+grly[5][1]*radius2); + grly[17][2] = ylmcoef[17]*(z*grly[10][2]+rly[10])-ylmcoef[18]*(rly[5]*tz+grly[5][2]*radius2); + + rly[18] = tmp6*rly[11]-ylmcoef[18]*rly[6]*radius2;//l=4,m=-1 + grly[18][0] = tmp6*grly[11][0]-ylmcoef[18]*(rly[6]*tx+grly[6][0]*radius2); + grly[18][1] = tmp6*grly[11][1]-ylmcoef[18]*(rly[6]*ty+grly[6][1]*radius2); + grly[18][2] = ylmcoef[17]*(z*grly[11][2]+rly[11])-ylmcoef[18]*(rly[6]*tz+grly[6][2]*radius2); + + double tmp7 = ylmcoef[19]*z; + rly[19] = tmp7*rly[12]-ylmcoef[20]*rly[7]*radius2;//l=4,m=2 + grly[19][0] = tmp7*grly[12][0]-ylmcoef[20]*(rly[7]*tx+grly[7][0]*radius2); + grly[19][1] = tmp7*grly[12][1]-ylmcoef[20]*(rly[7]*ty+grly[7][1]*radius2); + grly[19][2] = ylmcoef[19]*(z*grly[12][2]+rly[12])-ylmcoef[20]*(rly[7]*tz+grly[7][2]*radius2); + + rly[20] = tmp7*rly[13]-ylmcoef[20]*rly[8]*radius2;//l=4,m=-2 + grly[20][0] = tmp7*grly[13][0]-ylmcoef[20]*(rly[8]*tx+grly[8][0]*radius2); + grly[20][1] = tmp7*grly[13][1]-ylmcoef[20]*(rly[8]*ty+grly[8][1]*radius2); + grly[20][2] = ylmcoef[19]*(z*grly[13][2]+rly[13])-ylmcoef[20]*(rly[8]*tz+grly[8][2]*radius2); double tmp8 = 3.0*z; rly[21] = tmp8*rly[14];//l=4,m=3 @@ -966,81 +929,81 @@ void Ylm::grad_rl_sph_harm grly[22][1] = tmp8*grly[15][1]; grly[22][2] = 3.0*(z*grly[15][2]+rly[15]); - double tmp9 = Ylm::ylmcoef[23]*x; - rly[23] = Ylm::ylmcoef[21]*rly[19]-Ylm::ylmcoef[22]*rly[7]*radius2-tmp9*rly[14];//l=4,m=4 - grly[23][0] = Ylm::ylmcoef[21]*grly[19][0]-Ylm::ylmcoef[22]*(rly[7]*tx+grly[7][0]*radius2)-Ylm::ylmcoef[23]*(x*grly[14][0]+rly[14]); - grly[23][1] = Ylm::ylmcoef[21]*grly[19][1]-Ylm::ylmcoef[22]*(rly[7]*ty+grly[7][1]*radius2)-tmp9*grly[14][1]; - grly[23][2] = Ylm::ylmcoef[21]*grly[19][2]-Ylm::ylmcoef[22]*(rly[7]*tz+grly[7][2]*radius2)-tmp9*grly[14][2]; + double tmp9 = ylmcoef[23]*x; + rly[23] = ylmcoef[21]*rly[19]-ylmcoef[22]*rly[7]*radius2-tmp9*rly[14];//l=4,m=4 + grly[23][0] = ylmcoef[21]*grly[19][0]-ylmcoef[22]*(rly[7]*tx+grly[7][0]*radius2)-ylmcoef[23]*(x*grly[14][0]+rly[14]); + grly[23][1] = ylmcoef[21]*grly[19][1]-ylmcoef[22]*(rly[7]*ty+grly[7][1]*radius2)-tmp9*grly[14][1]; + grly[23][2] = ylmcoef[21]*grly[19][2]-ylmcoef[22]*(rly[7]*tz+grly[7][2]*radius2)-tmp9*grly[14][2]; - rly[24] = Ylm::ylmcoef[21]*rly[20]-Ylm::ylmcoef[22]*rly[8]*radius2-tmp9*rly[15];//l=4,m=-4 - grly[24][0] = Ylm::ylmcoef[21]*grly[20][0]-Ylm::ylmcoef[22]*(rly[8]*tx+grly[8][0]*radius2)-Ylm::ylmcoef[23]*(x*grly[15][0]+rly[15]); - grly[24][1] = Ylm::ylmcoef[21]*grly[20][1]-Ylm::ylmcoef[22]*(rly[8]*ty+grly[8][1]*radius2)-tmp9*grly[15][1]; - grly[24][2] = Ylm::ylmcoef[21]*grly[20][2]-Ylm::ylmcoef[22]*(rly[8]*tz+grly[8][2]*radius2)-tmp9*grly[15][2]; + rly[24] = ylmcoef[21]*rly[20]-ylmcoef[22]*rly[8]*radius2-tmp9*rly[15];//l=4,m=-4 + grly[24][0] = ylmcoef[21]*grly[20][0]-ylmcoef[22]*(rly[8]*tx+grly[8][0]*radius2)-ylmcoef[23]*(x*grly[15][0]+rly[15]); + grly[24][1] = ylmcoef[21]*grly[20][1]-ylmcoef[22]*(rly[8]*ty+grly[8][1]*radius2)-tmp9*grly[15][1]; + grly[24][2] = ylmcoef[21]*grly[20][2]-ylmcoef[22]*(rly[8]*tz+grly[8][2]*radius2)-tmp9*grly[15][2]; if (Lmax == 4) return; /*************************** L = 5 ***************************/ - rly[25] = Ylm::ylmcoef[24]*z*rly[16]-Ylm::ylmcoef[25]*rly[9]*radius2;//l=5,m=0 - grly[25][0] = Ylm::ylmcoef[24]*z*grly[16][0]-Ylm::ylmcoef[25]*(rly[9]*tx+grly[9][0]*radius2); - grly[25][1] = Ylm::ylmcoef[24]*z*grly[16][1]-Ylm::ylmcoef[25]*(rly[9]*ty+grly[9][1]*radius2); - grly[25][2] = Ylm::ylmcoef[24]*(z*grly[16][2]+rly[16])-Ylm::ylmcoef[25]*(rly[9]*tz+grly[9][2]*radius2); - - double tmp10 = Ylm::ylmcoef[26]*z; - rly[26] = tmp10*rly[17]-Ylm::ylmcoef[27]*rly[10]*radius2;//l=5,m=1 - grly[26][0] = tmp10*grly[17][0]-Ylm::ylmcoef[27]*(rly[10]*tx+grly[10][0]*radius2); - grly[26][1] = tmp10*grly[17][1]-Ylm::ylmcoef[27]*(rly[10]*ty+grly[10][1]*radius2); - grly[26][2] = Ylm::ylmcoef[26]*(z*grly[17][2]+rly[17])-Ylm::ylmcoef[27]*(rly[10]*tz+grly[10][2]*radius2); - - rly[27] = tmp10*rly[18]-Ylm::ylmcoef[27]*rly[11]*radius2;//l=5,m=-1 - grly[27][0] = tmp10*grly[18][0]-Ylm::ylmcoef[27]*(rly[11]*tx+grly[11][0]*radius2); - grly[27][1] = tmp10*grly[18][1]-Ylm::ylmcoef[27]*(rly[11]*ty+grly[11][1]*radius2); - grly[27][2] = Ylm::ylmcoef[26]*(z*grly[18][2]+rly[18])-Ylm::ylmcoef[27]*(rly[11]*tz+grly[11][2]*radius2); - - double tmp11 = Ylm::ylmcoef[28]*z; - rly[28] = tmp11*rly[19]-Ylm::ylmcoef[29]*rly[12]*radius2;//l=5,m=2 - grly[28][0] = tmp11*grly[19][0]-Ylm::ylmcoef[29]*(rly[12]*tx+grly[12][0]*radius2); - grly[28][1] = tmp11*grly[19][1]-Ylm::ylmcoef[29]*(rly[12]*ty+grly[12][1]*radius2); - grly[28][2] = Ylm::ylmcoef[28]*(z*grly[19][2]+rly[19])-Ylm::ylmcoef[29]*(rly[12]*tz+grly[12][2]*radius2); - - rly[29] = tmp11*rly[20]-Ylm::ylmcoef[29]*rly[13]*radius2;//l=5,m=-2 - grly[29][0] = tmp11*grly[20][0]-Ylm::ylmcoef[29]*(rly[13]*tx+grly[13][0]*radius2); - grly[29][1] = tmp11*grly[20][1]-Ylm::ylmcoef[29]*(rly[13]*ty+grly[13][1]*radius2); - grly[29][2] = Ylm::ylmcoef[28]*(z*grly[20][2]+rly[20])-Ylm::ylmcoef[29]*(rly[13]*tz+grly[13][2]*radius2); - - double tmp12 = Ylm::ylmcoef[30]*z; - rly[30] = tmp12*rly[21]-Ylm::ylmcoef[31]*rly[14]*radius2;//l=5,m=3 - grly[30][0] = tmp12*grly[21][0]-Ylm::ylmcoef[31]*(grly[14][0]*radius2+rly[14]*tx); - grly[30][1] = tmp12*grly[21][1]-Ylm::ylmcoef[31]*(grly[14][1]*radius2+rly[14]*ty); - grly[30][2] = Ylm::ylmcoef[30]*(z*grly[21][2]+rly[21])-Ylm::ylmcoef[31]*(grly[14][2]*radius2+rly[14]*tz); - - rly[31] = tmp12*rly[22]-Ylm::ylmcoef[31]*rly[15]*radius2;//l=5,m=-3 - grly[31][0] = tmp12*grly[22][0]-Ylm::ylmcoef[31]*(grly[15][0]*radius2+rly[15]*tx); - grly[31][1] = tmp12*grly[22][1]-Ylm::ylmcoef[31]*(grly[15][1]*radius2+rly[15]*ty); - grly[31][2] = Ylm::ylmcoef[30]*(z*grly[22][2]+rly[22])-Ylm::ylmcoef[31]*(grly[15][2]*radius2+rly[15]*tz); - - double tmp13 = Ylm::ylmcoef[32]*z; + rly[25] = ylmcoef[24]*z*rly[16]-ylmcoef[25]*rly[9]*radius2;//l=5,m=0 + grly[25][0] = ylmcoef[24]*z*grly[16][0]-ylmcoef[25]*(rly[9]*tx+grly[9][0]*radius2); + grly[25][1] = ylmcoef[24]*z*grly[16][1]-ylmcoef[25]*(rly[9]*ty+grly[9][1]*radius2); + grly[25][2] = ylmcoef[24]*(z*grly[16][2]+rly[16])-ylmcoef[25]*(rly[9]*tz+grly[9][2]*radius2); + + double tmp10 = ylmcoef[26]*z; + rly[26] = tmp10*rly[17]-ylmcoef[27]*rly[10]*radius2;//l=5,m=1 + grly[26][0] = tmp10*grly[17][0]-ylmcoef[27]*(rly[10]*tx+grly[10][0]*radius2); + grly[26][1] = tmp10*grly[17][1]-ylmcoef[27]*(rly[10]*ty+grly[10][1]*radius2); + grly[26][2] = ylmcoef[26]*(z*grly[17][2]+rly[17])-ylmcoef[27]*(rly[10]*tz+grly[10][2]*radius2); + + rly[27] = tmp10*rly[18]-ylmcoef[27]*rly[11]*radius2;//l=5,m=-1 + grly[27][0] = tmp10*grly[18][0]-ylmcoef[27]*(rly[11]*tx+grly[11][0]*radius2); + grly[27][1] = tmp10*grly[18][1]-ylmcoef[27]*(rly[11]*ty+grly[11][1]*radius2); + grly[27][2] = ylmcoef[26]*(z*grly[18][2]+rly[18])-ylmcoef[27]*(rly[11]*tz+grly[11][2]*radius2); + + double tmp11 = ylmcoef[28]*z; + rly[28] = tmp11*rly[19]-ylmcoef[29]*rly[12]*radius2;//l=5,m=2 + grly[28][0] = tmp11*grly[19][0]-ylmcoef[29]*(rly[12]*tx+grly[12][0]*radius2); + grly[28][1] = tmp11*grly[19][1]-ylmcoef[29]*(rly[12]*ty+grly[12][1]*radius2); + grly[28][2] = ylmcoef[28]*(z*grly[19][2]+rly[19])-ylmcoef[29]*(rly[12]*tz+grly[12][2]*radius2); + + rly[29] = tmp11*rly[20]-ylmcoef[29]*rly[13]*radius2;//l=5,m=-2 + grly[29][0] = tmp11*grly[20][0]-ylmcoef[29]*(rly[13]*tx+grly[13][0]*radius2); + grly[29][1] = tmp11*grly[20][1]-ylmcoef[29]*(rly[13]*ty+grly[13][1]*radius2); + grly[29][2] = ylmcoef[28]*(z*grly[20][2]+rly[20])-ylmcoef[29]*(rly[13]*tz+grly[13][2]*radius2); + + double tmp12 = ylmcoef[30]*z; + rly[30] = tmp12*rly[21]-ylmcoef[31]*rly[14]*radius2;//l=5,m=3 + grly[30][0] = tmp12*grly[21][0]-ylmcoef[31]*(grly[14][0]*radius2+rly[14]*tx); + grly[30][1] = tmp12*grly[21][1]-ylmcoef[31]*(grly[14][1]*radius2+rly[14]*ty); + grly[30][2] = ylmcoef[30]*(z*grly[21][2]+rly[21])-ylmcoef[31]*(grly[14][2]*radius2+rly[14]*tz); + + rly[31] = tmp12*rly[22]-ylmcoef[31]*rly[15]*radius2;//l=5,m=-3 + grly[31][0] = tmp12*grly[22][0]-ylmcoef[31]*(grly[15][0]*radius2+rly[15]*tx); + grly[31][1] = tmp12*grly[22][1]-ylmcoef[31]*(grly[15][1]*radius2+rly[15]*ty); + grly[31][2] = ylmcoef[30]*(z*grly[22][2]+rly[22])-ylmcoef[31]*(grly[15][2]*radius2+rly[15]*tz); + + double tmp13 = ylmcoef[32]*z; rly[32] = tmp13*rly[23];//l=5,m=4 grly[32][0] = tmp13*grly[23][0]; grly[32][1] = tmp13*grly[23][1]; - grly[32][2] = Ylm::ylmcoef[32]*(rly[23]+z*grly[23][2]); + grly[32][2] = ylmcoef[32]*(rly[23]+z*grly[23][2]); rly[33] = tmp13*rly[24];//l=5,m=-4 grly[33][0] = tmp13*grly[24][0]; grly[33][1] = tmp13*grly[24][1]; - grly[33][2] = Ylm::ylmcoef[32]*(rly[24]+z*grly[24][2]); + grly[33][2] = ylmcoef[32]*(rly[24]+z*grly[24][2]); - double tmp14 = Ylm::ylmcoef[35]*x; - rly[34] = Ylm::ylmcoef[33]*rly[30]-Ylm::ylmcoef[34]*rly[14]*radius2-tmp14*rly[23];//l=5,m=5 - grly[34][0] = Ylm::ylmcoef[33]*grly[30][0]-Ylm::ylmcoef[34]*(rly[14]*tx+grly[14][0]*radius2)-Ylm::ylmcoef[35]*(x*grly[23][0]+rly[23]); - grly[34][1] = Ylm::ylmcoef[33]*grly[30][1]-Ylm::ylmcoef[34]*(rly[14]*ty+grly[14][1]*radius2)-tmp14*grly[23][1]; - grly[34][2] = Ylm::ylmcoef[33]*grly[30][2]-Ylm::ylmcoef[34]*(rly[14]*tz+grly[14][2]*radius2)-tmp14*grly[23][2]; + double tmp14 = ylmcoef[35]*x; + rly[34] = ylmcoef[33]*rly[30]-ylmcoef[34]*rly[14]*radius2-tmp14*rly[23];//l=5,m=5 + grly[34][0] = ylmcoef[33]*grly[30][0]-ylmcoef[34]*(rly[14]*tx+grly[14][0]*radius2)-ylmcoef[35]*(x*grly[23][0]+rly[23]); + grly[34][1] = ylmcoef[33]*grly[30][1]-ylmcoef[34]*(rly[14]*ty+grly[14][1]*radius2)-tmp14*grly[23][1]; + grly[34][2] = ylmcoef[33]*grly[30][2]-ylmcoef[34]*(rly[14]*tz+grly[14][2]*radius2)-tmp14*grly[23][2]; - rly[35] = Ylm::ylmcoef[33]*rly[31]-Ylm::ylmcoef[34]*rly[15]*radius2-tmp14*rly[24];//l=5,m=-5 - grly[35][0] = Ylm::ylmcoef[33]*grly[31][0]-Ylm::ylmcoef[34]*(rly[15]*tx+grly[15][0]*radius2)-Ylm::ylmcoef[35]*(x*grly[24][0]+rly[24]); - grly[35][1] = Ylm::ylmcoef[33]*grly[31][1]-Ylm::ylmcoef[34]*(rly[15]*ty+grly[15][1]*radius2)-tmp14*grly[24][1]; - grly[35][2] = Ylm::ylmcoef[33]*grly[31][2]-Ylm::ylmcoef[34]*(rly[15]*tz+grly[15][2]*radius2)-tmp14*grly[24][2]; + rly[35] = ylmcoef[33]*rly[31]-ylmcoef[34]*rly[15]*radius2-tmp14*rly[24];//l=5,m=-5 + grly[35][0] = ylmcoef[33]*grly[31][0]-ylmcoef[34]*(rly[15]*tx+grly[15][0]*radius2)-ylmcoef[35]*(x*grly[24][0]+rly[24]); + grly[35][1] = ylmcoef[33]*grly[31][1]-ylmcoef[34]*(rly[15]*ty+grly[15][1]*radius2)-tmp14*grly[24][1]; + grly[35][2] = ylmcoef[33]*grly[31][2]-ylmcoef[34]*(rly[15]*tz+grly[15][2]*radius2)-tmp14*grly[24][2]; if (Lmax == 5) return; @@ -1097,17 +1060,17 @@ void Ylm::grad_rl_sph_harm void Ylm::hes_rl_sph_harm ( - const int& Lmax, //max momentum of L - const double& x, - const double& y, - const double& z, + const int Lmax, //max momentum of L + const double x, + const double y, + const double z, std::vector>& hrly ) { hrly.resize( (Lmax+1)*(Lmax+1), std::vector(6) ); double radius2 = x*x+y*y+z*z; - double coeff; + double coeff = 0.0; //begin calculation /*************************** @@ -1315,9 +1278,224 @@ void Ylm::hes_rl_sph_harm if (Lmax == 4) return; /*************************** - L > 4 + L = 5 + ***************************/ + //m=0 : (63z^5 - 70z^3*r^2 + 15z*r^4) + coeff = sqrt(11.0 / ModuleBase::PI) / 16.0; + hrly[25][0] = (180*x*x*z + 60*y*y*z - 80*z*z*z) * coeff; + hrly[25][1] = (120*x*y*z) * coeff; + hrly[25][2] = (60*x*x*x + 60*x*y*y - 240*x*z*z) * coeff; + hrly[25][3] = (60*x*x*z + 180*y*y*z - 80*z*z*z) * coeff; + hrly[25][4] = (60*x*x*y + 60*y*y*y - 240*y*z*z) * coeff; + hrly[25][5] = (-240*x*x*z - 240*y*y*z + 160*z*z*z) * coeff; + + //m=1 : x(21z^4 - 14z^2*r^2 + r^4) + coeff = sqrt(165.0 / 2.0 / ModuleBase::PI) / 16.0; + hrly[26][0] = (20*x*x*x + 12*x*y*y - 72*x*z*z) * coeff; + hrly[26][1] = (12*x*x*y + 4*y*y*y - 24*y*z*z) * coeff; + hrly[26][2] = (-72*x*x*z - 24*y*y*z + 32*z*z*z) * coeff; + hrly[26][3] = (4*x*x*x + 12*x*y*y - 24*x*z*z) * coeff; + hrly[26][4] = (-48*x*y*z) * coeff; + hrly[26][5] = (-24*x*x*x - 24*x*y*y + 96*x*z*z) * coeff; + + //m=-1 : y(21z^4 - 14z^2*r^2 + r^4) + hrly[27][0] = (12*x*x*y + 4*y*y*y - 24*y*z*z) * coeff; + hrly[27][1] = (4*x*x*x + 12*x*y*y - 24*x*z*z) * coeff; + hrly[27][2] = (-48*x*y*z) * coeff; + hrly[27][3] = (12*x*x*y + 20*y*y*y - 72*y*z*z) * coeff; + hrly[27][4] = (-24*x*x*z - 72*y*y*z + 32*z*z*z) * coeff; + hrly[27][5] = (-24*x*x*y - 24*y*y*y + 96*y*z*z) * coeff; + + //m=2 : (x^2 - y^2)(3z^3 - z*r^2) + coeff = sqrt(1155.0 / ModuleBase::PI) / 8.0; + hrly[28][0] = (-12*x*x*z + 4*z*z*z) * coeff; + hrly[28][1] = 0.0; + hrly[28][2] = (-4*x*x*x + 12*x*z*z) * coeff; + hrly[28][3] = (12*y*y*z - 4*z*z*z) * coeff; + hrly[28][4] = (4*y*y*y - 12*y*z*z) * coeff; + hrly[28][5] = (12*x*x*z - 12*y*y*z) * coeff; + + //m=-2 : xy(3z^3 - z*r^2) + hrly[29][0] = (-6*x*y*z) * coeff; + hrly[29][1] = (-3*x*x*z - 3*y*y*z + 2*z*z*z) * coeff; + hrly[29][2] = (-3*x*x*y - y*y*y + 6*y*z*z) * coeff; + hrly[29][3] = (-6*x*y*z) * coeff; + hrly[29][4] = (-x*x*x - 3*x*y*y + 6*x*z*z) * coeff; + hrly[29][5] = (12*x*y*z) * coeff; + + //m=3 : x(x^2 - 3y^2)(9z^2 - r^2) + coeff = sqrt(385.0 / 2.0 / ModuleBase::PI) / 16.0; + hrly[30][0] = (-20*x*x*x + 12*x*y*y + 48*x*z*z) * coeff; + hrly[30][1] = (12*x*x*y + 12*y*y*y - 48*y*z*z) * coeff; + hrly[30][2] = (48*x*x*z - 48*y*y*z) * coeff; + hrly[30][3] = (4*x*x*x + 36*x*y*y - 48*x*z*z) * coeff; + hrly[30][4] = (-96*x*y*z) * coeff; + hrly[30][5] = (16*x*x*x - 48*x*y*y) * coeff; + + //m=-3 : y(3x^2 - y^2)(9z^2 - r^2) + hrly[31][0] = (-36*x*x*y - 4*y*y*y + 48*y*z*z) * coeff; + hrly[31][1] = (-12*x*x*x - 12*x*y*y + 48*x*z*z) * coeff; + hrly[31][2] = (96*x*y*z) * coeff; + hrly[31][3] = (-12*x*x*y + 20*y*y*y - 48*y*z*z) * coeff; + hrly[31][4] = (48*x*x*z - 48*y*y*z) * coeff; + hrly[31][5] = (48*x*x*y - 16*y*y*y) * coeff; + + //m=4 : (x^4 - 6x^2*y^2 + y^4) * z + coeff = sqrt(385.0 / ModuleBase::PI) / 16.0; + hrly[32][0] = (12*x*x*z - 12*y*y*z) * coeff; + hrly[32][1] = (-24*x*y*z) * coeff; + hrly[32][2] = (4*x*x*x - 12*x*y*y) * coeff; + hrly[32][3] = (-12*x*x*z + 12*y*y*z) * coeff; + hrly[32][4] = (-12*x*x*y + 4*y*y*y) * coeff; + hrly[32][5] = 0.0; + + //m=-4 : xy(x^2 - y^2) * z + hrly[33][0] = (6*x*y*z) * coeff; + hrly[33][1] = (3*x*x*z - 3*y*y*z) * coeff; + hrly[33][2] = (3*x*x*y - y*y*y) * coeff; + hrly[33][3] = (-6*x*y*z) * coeff; + hrly[33][4] = (x*x*x - 3*x*y*y) * coeff; + hrly[33][5] = 0.0; + + //m=5 : x(x^4 - 10x^2*y^2 + 5y^4) + coeff = sqrt(77.0 / 2.0 / ModuleBase::PI) / 16.0; + hrly[34][0] = (20.0 * x*x*x - 60.0 * x * y*y) * coeff; + hrly[34][1] = (-60.0 * x*x * y + 20.0 * y*y*y) * coeff; + hrly[34][2] = 0.0; + hrly[34][3] = (-20.0 * x*x*x + 60.0 * x * y*y) * coeff; + hrly[34][4] = 0.0; + hrly[34][5] = 0.0; + + //m=-5 : y(5x^4 - 10x^2*y^2 + y^4) + hrly[35][0] = (60.0 * x*x * y - 20.0 * y*y*y) * coeff; + hrly[35][1] = (20.0 * x*x*x - 60.0 * x * y*y) * coeff; + hrly[35][2] = 0.0; + hrly[35][3] = (-60.0 * x*x * y + 20.0 * y*y*y) * coeff; + hrly[35][4] = 0.0; + hrly[35][5] = 0.0; + + if (Lmax == 5) return; + + /*************************** + L = 6 + ***************************/ + //m=0 : (231z^6 - 315z^4*r^2 + 105z^2*r^4 - 5r^6) + coeff = sqrt(13.0 / ModuleBase::PI) / 32.0; + hrly[36][0] = (-150*x*x*x*x - 180*x*x*y*y + 1080*x*x*z*z - 30*y*y*y*y + 360*y*y*z*z - 240*z*z*z*z) * coeff; + hrly[36][1] = (-120*x*x*x*y - 120*x*y*y*y + 720*x*y*z*z) * coeff; + hrly[36][2] = (720*x*x*x*z + 720*x*y*y*z - 960*x*z*z*z) * coeff; + hrly[36][3] = (-30*x*x*x*x - 180*x*x*y*y + 360*x*x*z*z - 150*y*y*y*y + 1080*y*y*z*z - 240*z*z*z*z) * coeff; + hrly[36][4] = (720*x*x*y*z + 720*y*y*y*z - 960*y*z*z*z) * coeff; + hrly[36][5] = (180*x*x*x*x + 360*x*x*y*y - 1440*x*x*z*z + 180*y*y*y*y - 1440*y*y*z*z + 480*z*z*z*z) * coeff; + + //m=1 : x(33z^5 - 30z^3*r^2 + 5z*r^4) + coeff = sqrt(273.0 / 2.0 / ModuleBase::PI) / 16.0; + hrly[37][0] = (100*x*x*x*z + 60*x*y*y*z - 120*x*z*z*z) * coeff; + hrly[37][1] = (60*x*x*y*z + 20*y*y*y*z - 40*y*z*z*z) * coeff; + hrly[37][2] = (25*x*x*x*x + 30*x*x*y*y - 180*x*x*z*z + 5*y*y*y*y - 60*y*y*z*z + 40*z*z*z*z) * coeff; + hrly[37][3] = (20*x*x*x*z + 60*x*y*y*z - 40*x*z*z*z) * coeff; + hrly[37][4] = (20*x*x*x*y + 20*x*y*y*y - 120*x*y*z*z) * coeff; + hrly[37][5] = (-120*x*x*x*z - 120*x*y*y*z + 160*x*z*z*z) * coeff; + + //m=-1 : y(33z^5 - 30z^3*r^2 + 5z*r^4) + hrly[38][0] = (60*x*x*y*z + 20*y*y*y*z - 40*y*z*z*z) * coeff; + hrly[38][1] = (20*x*x*x*z + 60*x*y*y*z - 40*x*z*z*z) * coeff; + hrly[38][2] = (20*x*x*x*y + 20*x*y*y*y - 120*x*y*z*z) * coeff; + hrly[38][3] = (60*x*x*y*z + 100*y*y*y*z - 120*y*z*z*z) * coeff; + hrly[38][4] = (5*x*x*x*x + 30*x*x*y*y - 60*x*x*z*z + 25*y*y*y*y - 180*y*y*z*z + 40*z*z*z*z) * coeff; + hrly[38][5] = (-120*x*x*y*z - 120*y*y*y*z + 160*y*z*z*z) * coeff; + + //m=2 : (x^2 - y^2)(33z^4 - 18z^2*r^2 + r^4) + coeff = sqrt(1365.0 / ModuleBase::PI) / 32.0; + hrly[39][0] = (30*x*x*x*x + 12*x*x*y*y - 192*x*x*z*z - 2*y*y*y*y + 32*z*z*z*z) * coeff; + hrly[39][1] = (8*x*x*x*y - 8*x*y*y*y) * coeff; + hrly[39][2] = (-128*x*x*x*z + 128*x*z*z*z) * coeff; + hrly[39][3] = (2*x*x*x*x - 12*x*x*y*y - 30*y*y*y*y + 192*y*y*z*z - 32*z*z*z*z) * coeff; + hrly[39][4] = (128*y*y*y*z - 128*y*z*z*z) * coeff; + hrly[39][5] = (-32*x*x*x*x + 192*x*x*z*z + 32*y*y*y*y - 192*y*y*z*z) * coeff; + + //m=-2 : xy(33z^4 - 18z^2*r^2 + r^4) + hrly[40][0] = (20*x*x*x*y + 12*x*y*y*y - 96*x*y*z*z) * coeff; + hrly[40][1] = (20*x*x*x*x + 36*x*x*y*y - 96*x*x*z*z + 20*y*y*y*y - 96*y*y*z*z + 32*z*z*z*z) * coeff; + hrly[40][2] = (-96*x*x*y*z - 32*y*y*y*z + 64*y*z*z*z) * coeff; + hrly[40][3] = (12*x*x*x*y + 20*x*y*y*y - 96*x*y*z*z) * coeff; + hrly[40][4] = (-32*x*x*x*z - 96*x*y*y*z + 64*x*z*z*z) * coeff; + hrly[40][5] = (-32*x*x*x*y - 32*x*y*y*y + 192*x*y*z*z) * coeff; + + //m=3 : x(x^2 - 3y^2)(11z^3 - 3z*r^2) + coeff = sqrt(1365.0 / ModuleBase::PI) / 16.0; + hrly[41][0] = (-60*x*x*x*z + 36*x*y*y*z + 48*x*z*z*z) * coeff; + hrly[41][1] = (36*x*x*y*z + 36*y*y*y*z - 48*y*z*z*z) * coeff; + hrly[41][2] = (-30*x*x*x*x + 36*x*x*y*y + 72*x*x*z*z + 18*y*y*y*y - 72*y*y*z*z) * coeff; + hrly[41][3] = (12*x*x*x*z + 108*x*y*y*z - 48*x*z*z*z) * coeff; + hrly[41][4] = (12*x*x*x*y + 36*x*y*y*y - 144*x*y*z*z) * coeff; + hrly[41][5] = (48*x*x*x*z - 144*x*y*y*z) * coeff; + + //m=-3 : y(3x^2 - y^2)(11z^3 - 3z*r^2) + hrly[42][0] = (-108*x*x*y*z - 12*y*y*y*z + 48*y*z*z*z) * coeff; + hrly[42][1] = (-36*x*x*x*z - 36*x*y*y*z + 48*x*z*z*z) * coeff; + hrly[42][2] = (-36*x*x*x*y - 12*x*y*y*y + 144*x*y*z*z) * coeff; + hrly[42][3] = (-36*x*x*y*z + 60*y*y*y*z - 48*y*z*z*z) * coeff; + hrly[42][4] = (-18*x*x*x*x - 36*x*x*y*y + 72*x*x*z*z + 30*y*y*y*y - 72*y*y*z*z) * coeff; + hrly[42][5] = (144*x*x*y*z - 48*y*y*y*z) * coeff; + + //m=4 : (x^4 - 6x^2*y^2 + y^4)(11z^2 - r^2) + coeff = sqrt(91.0 / ModuleBase::PI) / 32.0; + hrly[43][0] = (-30*x*x*x*x + 60*x*x*y*y + 120*x*x*z*z + 10*y*y*y*y - 120*y*y*z*z) * coeff; + hrly[43][1] = (40*x*x*x*y + 40*x*y*y*y - 240*x*y*z*z) * coeff; + hrly[43][2] = (80*x*x*x*z - 240*x*y*y*z) * coeff; + hrly[43][3] = (10*x*x*x*x + 60*x*x*y*y - 120*x*x*z*z - 30*y*y*y*y + 120*y*y*z*z) * coeff; + hrly[43][4] = (-240*x*x*y*z + 80*y*y*y*z) * coeff; + hrly[43][5] = (20*x*x*x*x - 120*x*x*y*y + 20*y*y*y*y) * coeff; + + //m=-4 : xy(x^2 - y^2)(11z^2 - r^2) + hrly[44][0] = (-20*x*x*x*y + 60*x*y*z*z) * coeff; + hrly[44][1] = (-5*x*x*x*x + 30*x*x*z*z + 5*y*y*y*y - 30*y*y*z*z) * coeff; + hrly[44][2] = (60*x*x*y*z - 20*y*y*y*z) * coeff; + hrly[44][3] = (20*x*y*y*y - 60*x*y*z*z) * coeff; + hrly[44][4] = (20*x*x*x*z - 60*x*y*y*z) * coeff; + hrly[44][5] = (20*x*x*x*y - 20*x*y*y*y) * coeff; + + //m=5 : x(x^4 - 10x^2*y^2 + 5y^4) * z + coeff = sqrt(1001.0 / 2.0 / ModuleBase::PI) / 16.0; + hrly[45][0] = (20*x*x*x*z - 60*x*y*y*z) * coeff; + hrly[45][1] = (-60*x*x*y*z + 20*y*y*y*z) * coeff; + hrly[45][2] = (5*x*x*x*x - 30*x*x*y*y + 5*y*y*y*y) * coeff; + hrly[45][3] = (-20*x*x*x*z + 60*x*y*y*z) * coeff; + hrly[45][4] = (-20*x*x*x*y + 20*x*y*y*y) * coeff; + hrly[45][5] = 0.0; + + //m=-5 : y(5x^4 - 10x^2*y^2 + y^4) * z + hrly[46][0] = (60*x*x*y*z - 20*y*y*y*z) * coeff; + hrly[46][1] = (20*x*x*x*z - 60*x*y*y*z) * coeff; + hrly[46][2] = (20*x*x*x*y - 20*x*y*y*y) * coeff; + hrly[46][3] = (-60*x*x*y*z + 20*y*y*y*z) * coeff; + hrly[46][4] = (5*x*x*x*x - 30*x*x*y*y + 5*y*y*y*y) * coeff; + hrly[46][5] = 0.0; + + //m=6 : (x^6 - 15x^4*y^2 + 15x^2*y^4 - y^6) + coeff = sqrt(3003.0 / ModuleBase::PI) / 32.0; + hrly[47][0] = (30*x*x*x*x - 180*x*x*y*y + 30*y*y*y*y) * coeff; + hrly[47][1] = (-120*x*x*x*y + 120*x*y*y*y) * coeff; + hrly[47][2] = 0.0; + hrly[47][3] = (-30*x*x*x*x + 180*x*x*y*y - 30*y*y*y*y) * coeff; + hrly[47][4] = 0.0; + hrly[47][5] = 0.0; + + //m=-6 : xy(3x^4 - 10x^2*y^2 + 3y^4) + hrly[48][0] = (60*x*x*x*y - 60*x*y*y*y) * coeff; + hrly[48][1] = (15*x*x*x*x - 90*x*x*y*y + 15*y*y*y*y) * coeff; + hrly[48][2] = 0.0; + hrly[48][3] = (-60*x*x*x*y + 60*x*y*y*y) * coeff; + hrly[48][4] = 0.0; + hrly[48][5] = 0.0; + + if (Lmax == 6) return; + + /*************************** + L > 6 ***************************/ - ModuleBase::WARNING_QUIT("hes_rl_sph_harm","l>4 not implemented!"); + ModuleBase::WARNING_QUIT("hes_rl_sph_harm","l>6 not implemented!"); return; @@ -1394,10 +1572,10 @@ void Ylm::test2 (void) void Ylm::rlylm ( - const int& Lmax, //max momentum of l + 1 - const double& x, - const double& y, - const double& z, + const int Lmax, //max momentum of l + 1 + const double x, + const double y, + const double z, double rly[], double grly[][3] ) @@ -1652,7 +1830,7 @@ void Ylm::rlylm { int twok = 2 * ik; - double gamma; + double gamma = 0.0; double aux0, aux1, aux2, aux3; aux0 = pow(-1.0, ik) * pow(2.0, -il); diff --git a/source/source_base/ylm.h b/source/source_base/ylm.h index 65adcf18f6..6ee950f2cf 100644 --- a/source/source_base/ylm.h +++ b/source/source_base/ylm.h @@ -53,10 +53,10 @@ class Ylm * @param rly [in] calculated Ylm, Y00, Y10, Y11, Y1-1, Y20, Y21, Y2-1, Y22, Y2-2... */ static void rlylm( - const int& Lmax, - const double& x, - const double& y, - const double& z, + const int Lmax, + const double x, + const double y, + const double z, double rly[]); /** @@ -70,10 +70,10 @@ class Ylm * @param grly [out] gradient of Ylm, [dY00/dx, dY00/dy, dY00/dz], [dY10/dx, dY10/dy, dY10/dz], [dY11/dx, dY11/dy, dY11/dz],... */ static void rlylm( - const int& Lmax, - const double& x, - const double& y, - const double& z, + const int Lmax, + const double x, + const double y, + const double z, double rly[], double grly[][3]); @@ -87,10 +87,10 @@ class Ylm * @param rly [in] calculated Ylm, Y00, Y10, Y11, Y1-1, Y20, Y21, Y2-1, Y22, Y2-2... */ static void sph_harm( - const int& Lmax, - const double& xdr, - const double& ydr, - const double& zdr, + const int Lmax, + const double xdr, + const double ydr, + const double zdr, std::vector &rly); /** @@ -105,10 +105,10 @@ class Ylm * @date 2016-08-26 */ static void rl_sph_harm( - const int& Lmax, - const double& x, - const double& y, - const double& z, + const int Lmax, + const double x, + const double y, + const double z, std::vector& rly); /** @@ -123,10 +123,10 @@ class Ylm * grly should be a memory-contiguous two-dimensional array for better performance. */ static void grad_rl_sph_harm( - const int& Lmax, - const double& x, - const double& y, - const double& z, + const int Lmax, + const double x, + const double y, + const double z, double* rly, double** grly); @@ -140,15 +140,14 @@ class Ylm * @param hrly [out] hessian of Ylm, [dY00/dx2, dY00/dxy, dY00/dxz, dY00/dyy, dY00/dyz, dY00/dzz] , ... */ static void hes_rl_sph_harm( - const int& Lmax, - const double& x, - const double& y, - const double& z, + const int Lmax, + const double x, + const double y, + const double z, std::vector>& hrly); - //calculate the coefficient of Ylm, ylmcoef. + //calculate the coefficient of Ylm, ylmcoef. static void set_coefficients (); - static std::vector ylmcoef; //static void test(); //static void test1(); diff --git a/source/source_base/ylmcoef.h b/source/source_base/ylmcoef.h new file mode 100644 index 0000000000..72a756ee74 --- /dev/null +++ b/source/source_base/ylmcoef.h @@ -0,0 +1,56 @@ +#pragma once + +#include +#include "constants.h" + +namespace ModuleBase { + +/// ylmcoef coefficient count (supports up to L=5) +constexpr int YLMCOEF_SIZE = 36; + +#ifdef __CUDACC__ +// GPU version: must use numeric constants (CUDA doesn't support runtime init for __device__) +__device__ static const double ylmcoef[YLMCOEF_SIZE] = { +#else +// Use static constexpr for C++11 compatibility (inline variables require C++17) +static constexpr double ylmcoef[YLMCOEF_SIZE] = { +#endif +0.28209479177387813964, // 1.0 / sqrt(ModuleBase::FOUR_PI) +0.48860251190291992263, // sqrt (3.0 / ModuleBase::FOUR_PI) +1.93649167310370851069, // sqrt (15.0) / 2.0 +1.11803398874989490253, // sqrt (5.0) / 2.0 +2.23606797749978980505, // sqrt (5.0) +0.57735026918962584208, // 1.0 / sqrt(3.0) +1.29099444873580559978, // sqrt (5.0 / 3.0) +1.97202659436653870983, // sqrt (35.0 / 9.0) +1.01835015443463117180, // sqrt (7.0/3.0)/1.5 +2.09165006633518890666, // sqrt (35.0 / 8.0) +0.93541434669348533237, // sqrt (7.0 / 8.0) +2.64575131106459071617, // sqrt (7.0) +0.25819888974716109775, // 1.0 / sqrt (15.0) +0.96609178307929588492, // sqrt (14.0 / 15.0) +2.16024689946928694084, // sqrt (14.0 / 3.0) +1.98431348329844303713, // sqrt(7.0)*3.0/4.0 +1.00623058987490532346, // 9.0/4.0/sqrt(5.0) +2.04939015319191986109, // sqrt(21.0/5.0) +0.97979589711327119694, // sqrt(24.0/25.0) +2.29128784747791991450, // sqrt(21.0)/2.0 +0.86602540378443859659, // sqrt(3.0)/2.0 +0.18898223650461359879, // 0.5/sqrt(7.0) +0.98198050606196563006, // 1.5*sqrt(3.0/7.0) +2.12132034355964238515, // 3.0/sqrt(2.0) +1.98997487421323970835, // 0.6*sqrt(11.0) +1.00285307284481395307, // 0.8*sqrt(11.0/7.0) +2.03100960115899020764, // sqrt (33.0/8.0) +0.99103120896511487370, // sqrt (55.0/56.0) +2.17124059336723762570, // sqrt (33.0/7.0) +0.94760708295868567586, // sqrt (11.0)*2.0/7.0 +2.48746859276654985749, // sqrt (11.0)*0.75 +0.82915619758884995250, // sqrt (11.0)*0.25 +3.31662479035539980998, // sqrt (11.0) +0.14907119849998595740, // 1.0/3.0/sqrt(5.0) +0.98882646494608839038, // 2.0/3.0*sqrt(11.0/5.0) +2.09761769634030326159 // sqrt(22.0/5.0) +}; + +} // namespace ModuleBase diff --git a/source/source_basis/module_ao/CMakeLists.txt b/source/source_basis/module_ao/CMakeLists.txt index e19a5ba34d..bdc18b0d45 100644 --- a/source/source_basis/module_ao/CMakeLists.txt +++ b/source/source_basis/module_ao/CMakeLists.txt @@ -9,6 +9,7 @@ if(ENABLE_LCAO) ORB_nonlocal_lm.cpp ORB_read.cpp parallel_orbitals.cpp + element_basis_index-ORB.cpp ) if(ENABLE_COVERAGE) diff --git a/source/source_basis/module_ao/ORB_gaunt_table.cpp b/source/source_basis/module_ao/ORB_gaunt_table.cpp index e314bc87d6..d05f594f7e 100644 --- a/source/source_basis/module_ao/ORB_gaunt_table.cpp +++ b/source/source_basis/module_ao/ORB_gaunt_table.cpp @@ -20,6 +20,7 @@ void ORB_gaunt_table::init_Gaunt(const int &lmax) ModuleBase::TITLE("ORB_gaunt_table", "init_Gaunt"); ModuleBase::timer::tick("ORB_gaunt_table", "init_Gaunt"); + this->Lmax_Gaunt_Coefficients = lmax; const int nlm = (lmax * 2 + 1) * (lmax * 2 + 1); this->Gaunt_Coefficients.create(nlm, nlm, nlm); @@ -154,13 +155,6 @@ void ORB_gaunt_table::init_Ylm_Gaunt } */ -int ORB_gaunt_table::get_lm_index( - const int l, - const int m) -{ - return l*l+m; -} - ///effective pointers int ORB_gaunt_table::EP_EL(const int& L) @@ -191,6 +185,7 @@ void ORB_gaunt_table::init_Gaunt_CH(const int& Lmax) ModuleBase::TITLE("ORB_gaunt_table","init_Gaunt_CH"); ModuleBase::timer::tick("ORB_gaunt_table","init_Gaunt_CH"); + this->Lmax_Gaunt_CH = Lmax; int L = 2*Lmax + 1; int Eff_Np = this->EP_EL(L); diff --git a/source/source_basis/module_ao/ORB_gaunt_table.h b/source/source_basis/module_ao/ORB_gaunt_table.h index 6e4eed550c..0e9aefdb70 100644 --- a/source/source_basis/module_ao/ORB_gaunt_table.h +++ b/source/source_basis/module_ao/ORB_gaunt_table.h @@ -86,10 +86,16 @@ class ORB_gaunt_table /// ------------------------------------ void init_Gaunt(const int &lmax); - static int get_lm_index(const int l, const int m); + static inline int get_lm_index(const int l, const int m) + { + return l*l+m; + } static int Index_M(const int& m); + int get_Lmax_Gaunt_Coefficients() const { return Lmax_Gaunt_Coefficients; } + int get_Lmax_Gaunt_CH() const { return Lmax_Gaunt_CH; } + private: // Index Function @@ -119,5 +125,8 @@ class ORB_gaunt_table //direct integral ModuleBase::matrix Ylm_Gaunt; + + int Lmax_Gaunt_Coefficients = -1; + int Lmax_Gaunt_CH = -1; }; #endif diff --git a/source/source_basis/module_ao/ORB_nonlocal_lm.h b/source/source_basis/module_ao/ORB_nonlocal_lm.h index b3504065ae..11e00d2470 100644 --- a/source/source_basis/module_ao/ORB_nonlocal_lm.h +++ b/source/source_basis/module_ao/ORB_nonlocal_lm.h @@ -20,8 +20,8 @@ class Numerical_Nonlocal_Lm public: - double* beta_uniform; - double* dbeta_uniform; + double* beta_uniform = nullptr; + double* dbeta_uniform = nullptr; int nr_uniform; double dr_uniform; @@ -86,11 +86,11 @@ class Numerical_Nonlocal_Lm double dk; double* r_radial; //points of r - double* k_radial; + double* k_radial = nullptr; - double* rab; + double* rab = nullptr; double* beta_r; // |beta(r) * r> - double* beta_k; + double* beta_k = nullptr; }; #endif diff --git a/source/source_basis/module_ao/ORB_read.h b/source/source_basis/module_ao/ORB_read.h index 576759ac7b..efb4d532b1 100644 --- a/source/source_basis/module_ao/ORB_read.h +++ b/source/source_basis/module_ao/ORB_read.h @@ -83,12 +83,12 @@ class LCAO_Orbitals std::vector cutoffs() const; /// numerical atomic orbitals - Numerical_Orbital* Phi; + Numerical_Orbital* Phi = nullptr; //caoyu add 2021-3-10 /// descriptor bases, saved as one-type atom orbital - Numerical_Orbital* Alpha; + Numerical_Orbital* Alpha = nullptr; // initialized in input.cpp double ecutwfc; diff --git a/source/source_basis/module_ao/element_basis_index-ORB.cpp b/source/source_basis/module_ao/element_basis_index-ORB.cpp new file mode 100644 index 0000000000..c9441b4497 --- /dev/null +++ b/source/source_basis/module_ao/element_basis_index-ORB.cpp @@ -0,0 +1,44 @@ +#include "element_basis_index-ORB.h" + +#include "ORB_read.h" +#include "ORB_atomic_lm.h" + +namespace ModuleBase +{ + +ModuleBase::Element_Basis_Index::Range +Element_Basis_Index::construct_range( const LCAO_Orbitals &orb ) +{ + ModuleBase::Element_Basis_Index::Range range; + range.resize( orb.get_ntype() ); + for( std::size_t T=0; T!=range.size(); ++T ) + { + range[T].resize( orb.Phi[T].getLmax()+1 ); + for( std::size_t L=0; L!=range[T].size(); ++L ) + { + range[T][L].N = orb.Phi[T].getNchi(L); + range[T][L].M = 2*L+1; + } + } + return range; +} + + +ModuleBase::Element_Basis_Index::Range +Element_Basis_Index::construct_range( const std::vector>> &orb ) +{ + ModuleBase::Element_Basis_Index::Range range; + range.resize( orb.size() ); + for( std::size_t T=0; T!=range.size(); ++T ) + { + range[T].resize( orb[T].size() ); + for( std::size_t L=0; L!=range[T].size(); ++L ) + { + range[T][L].N = orb[T][L].size(); + range[T][L].M = 2*L+1; + } + } + return range; +} + +} \ No newline at end of file diff --git a/source/source_basis/module_ao/element_basis_index-ORB.h b/source/source_basis/module_ao/element_basis_index-ORB.h new file mode 100644 index 0000000000..ec2415e6a0 --- /dev/null +++ b/source/source_basis/module_ao/element_basis_index-ORB.h @@ -0,0 +1,22 @@ +#ifndef ELEMENT_BASIS_INDEX_ORB_H +#define ELEMENT_BASIS_INDEX_ORB_H + +#include "../../source_base/element_basis_index.h" +#include + + class Numerical_Orbital_Lm; + class LCAO_Orbitals; + +namespace ModuleBase +{ + +namespace Element_Basis_Index +{ + extern Range construct_range( const LCAO_Orbitals &orb ); + + extern Range construct_range( const std::vector>> &orb ); // orb[T][L][N] +} + +} + +#endif \ No newline at end of file diff --git a/source/source_basis/module_ao/parallel_orbitals.h b/source/source_basis/module_ao/parallel_orbitals.h index 1ff74d3b2d..2d6a6e7ad9 100644 --- a/source/source_basis/module_ao/parallel_orbitals.h +++ b/source/source_basis/module_ao/parallel_orbitals.h @@ -30,8 +30,8 @@ class Parallel_Orbitals : public Parallel_2D /// on all adjacent atoms-pairs(2D division) ///--------------------------------------- int nnr=1; - int *nlocdim; - int *nlocstart; + int * nlocdim = nullptr; + int * nlocstart = nullptr; #ifdef __MPI int desc_wfc[9]; //for wfc, nlocal*nbands @@ -49,7 +49,7 @@ class Parallel_Orbitals : public Parallel_2D const int& lld); #endif - int* loc_sizes; + int* loc_sizes = nullptr; int loc_size; int get_wfc_global_nbands () const; diff --git a/source/source_basis/module_ao/test/CMakeLists.txt b/source/source_basis/module_ao/test/CMakeLists.txt index b7e1e31191..c280937b28 100644 --- a/source/source_basis/module_ao/test/CMakeLists.txt +++ b/source/source_basis/module_ao/test/CMakeLists.txt @@ -46,7 +46,7 @@ install(DIRECTORY GaAs DESTINATION ${CMAKE_CURRENT_BINARY_DIR}) AddTest( - TARGET ORB_nonlocal_test + TARGET MODULE_AO_ORB_nonlocal_test SOURCES ORB_nonlocal_test.cpp ../ORB_nonlocal.cpp ../ORB_nonlocal_lm.cpp @@ -54,21 +54,21 @@ AddTest( ) AddTest( - TARGET ORB_nonlocal_lm_test + TARGET MODULE_AO_ORB_nonlocal_lm_test SOURCES ORB_nonlocal_lm_test.cpp ../ORB_nonlocal_lm.cpp LIBS parameter ${math_libs} device base ) AddTest( - TARGET ORB_atomic_lm_test + TARGET MODULE_AO_ORB_atomic_lm_test SOURCES ORB_atomic_lm_test.cpp ../ORB_atomic_lm.cpp LIBS parameter ${math_libs} device base ) AddTest( - TARGET ORB_read_test + TARGET MODULE_AO_ORB_read_test SOURCES ORB_read_test.cpp ../ORB_read.cpp ../ORB_atomic.cpp @@ -78,14 +78,14 @@ AddTest( AddTest( - TARGET parallel_orbitals_test + TARGET MODULE_AO_parallel_orbitals_test SOURCES parallel_orbitals_test.cpp ../parallel_orbitals.cpp LIBS parameter ${math_libs} device base ) install(FILES parallel_orbitals_test.sh DESTINATION ${CMAKE_CURRENT_BINARY_DIR}) find_program(BASH bash) -add_test(NAME parallel_orbitals_test_para +add_test(NAME MODULE_AO_parallel_orbitals_test_para COMMAND ${BASH} parallel_orbitals_test.sh WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} ) diff --git a/source/source_basis/module_ao/test/parallel_orbitals_test.sh b/source/source_basis/module_ao/test/parallel_orbitals_test.sh index 54616474e8..acb7479138 100644 --- a/source/source_basis/module_ao/test/parallel_orbitals_test.sh +++ b/source/source_basis/module_ao/test/parallel_orbitals_test.sh @@ -8,7 +8,7 @@ for i in 2 3 4; do continue fi echo "TEST in parallel, nprocs=$i" - mpirun -np $i ./parallel_orbitals_test + mpirun -np $i ./MODULE_AO_parallel_orbitals_test if [[ $? -ne 0 ]]; then echo -e "\e[1;33m [ FAILED ] \e[0m"\ "execute UT with $i cores error." diff --git a/source/source_basis/module_nao/test/CMakeLists.txt b/source/source_basis/module_nao/test/CMakeLists.txt index b337633003..2e4674eed8 100644 --- a/source/source_basis/module_nao/test/CMakeLists.txt +++ b/source/source_basis/module_nao/test/CMakeLists.txt @@ -1,5 +1,5 @@ AddTest( - TARGET numerical_radial + TARGET MODULE_NAO_numerical_radial SOURCES numerical_radial_test.cpp ../numerical_radial.cpp @@ -8,7 +8,7 @@ AddTest( ) AddTest( - TARGET atomic_radials + TARGET MODULE_NAO_atomic_radials SOURCES atomic_radials_test.cpp ../atomic_radials.cpp @@ -16,12 +16,12 @@ AddTest( ../numerical_radial.cpp ../../module_ao/ORB_atomic_lm.cpp ../../module_ao/ORB_atomic.cpp - ../../../source_io/orb_io.cpp + ../../../source_io/module_output/orb_io.cpp LIBS parameter ${math_libs} device base ) AddTest( - TARGET beta_radials + TARGET MODULE_NAO_beta_radials SOURCES beta_radials_test.cpp ../beta_radials.cpp @@ -29,12 +29,12 @@ AddTest( ../numerical_radial.cpp ../../module_ao/ORB_atomic_lm.cpp ../../module_ao/ORB_atomic.cpp - ../../../source_io/orb_io.cpp + ../../../source_io/module_output/orb_io.cpp LIBS parameter ${math_libs} device base ) AddTest( - TARGET hydrogen_radials + TARGET MODULE_NAO_hydrogen_radials SOURCES hydrogen_radials_test.cpp ../hydrogen_radials.cpp @@ -42,12 +42,12 @@ AddTest( ../numerical_radial.cpp ../../module_ao/ORB_atomic_lm.cpp ../../module_ao/ORB_atomic.cpp - ../../../source_io/orb_io.cpp + ../../../source_io/module_output/orb_io.cpp LIBS parameter ${math_libs} device base ) AddTest( - TARGET pswfc_radials + TARGET MODULE_NAO_pswfc_radials SOURCES pswfc_radials_test.cpp ../pswfc_radials.cpp @@ -55,12 +55,12 @@ AddTest( ../numerical_radial.cpp ../../module_ao/ORB_atomic_lm.cpp ../../module_ao/ORB_atomic.cpp - ../../../source_io/orb_io.cpp + ../../../source_io/module_output/orb_io.cpp LIBS parameter ${math_libs} device base ) AddTest( - TARGET sphbes_radials + TARGET MODULE_NAO_sphbes_radials SOURCES sphbes_radials_test.cpp ../sphbes_radials.cpp @@ -68,12 +68,12 @@ AddTest( ../numerical_radial.cpp ../../module_ao/ORB_atomic_lm.cpp ../../module_ao/ORB_atomic.cpp - ../../../source_io/orb_io.cpp + ../../../source_io/module_output/orb_io.cpp LIBS parameter ${math_libs} device base ) AddTest( - TARGET radial_collection + TARGET MODULE_NAO_radial_collection SOURCES radial_collection_test.cpp ../radial_collection.cpp @@ -86,12 +86,12 @@ AddTest( ../sphbes_radials.cpp ../../module_ao/ORB_atomic_lm.cpp ../../module_ao/ORB_atomic.cpp - ../../../source_io/orb_io.cpp + ../../../source_io/module_output/orb_io.cpp LIBS parameter ${math_libs} device base ) AddTest( - TARGET two_center_table + TARGET MODULE_NAO_two_center_table SOURCES two_center_table_test.cpp ../two_center_table.cpp @@ -106,12 +106,12 @@ AddTest( ../two_center_bundle.cpp ../two_center_integrator.cpp ../real_gaunt_table.cpp - ../../../source_io/orb_io.cpp + ../../../source_io/module_output/orb_io.cpp LIBS parameter ${math_libs} device base container orb ) AddTest( - TARGET real_gaunt_table + TARGET MODULE_NAO_real_gaunt_table SOURCES real_gaunt_table_test.cpp ../real_gaunt_table.cpp @@ -120,7 +120,7 @@ AddTest( ) AddTest( - TARGET two_center_integrator + TARGET MODULE_NAO_two_center_integrator SOURCES two_center_integrator_test.cpp ../two_center_integrator.cpp @@ -135,12 +135,12 @@ AddTest( ../radial_set.cpp ../numerical_radial.cpp ../two_center_bundle.cpp - ../../../source_io/orb_io.cpp + ../../../source_io/module_output/orb_io.cpp LIBS parameter ${math_libs} device base container orb ) AddTest( - TARGET two_center_bundle + TARGET MODULE_NAO_two_center_bundle SOURCES two_center_bundle_test.cpp ../two_center_bundle.cpp @@ -155,12 +155,12 @@ AddTest( ../sphbes_radials.cpp ../radial_set.cpp ../numerical_radial.cpp - ../../../source_io/orb_io.cpp + ../../../source_io/module_output/orb_io.cpp LIBS parameter ${math_libs} device base container orb ) AddTest( - TARGET generate_projection + TARGET MODULE_NAO_generate_projection SOURCES projgen_test.cpp ../two_center_bundle.cpp @@ -175,7 +175,7 @@ AddTest( ../sphbes_radials.cpp ../radial_set.cpp ../numerical_radial.cpp - ../../../source_io/orb_io.cpp + ../../../source_io/module_output/orb_io.cpp LIBS parameter ${math_libs} device base container orb ) diff --git a/source/source_basis/module_nao/test/two_center_integrator_test.cpp b/source/source_basis/module_nao/test/two_center_integrator_test.cpp index cc63505f94..37601fadfc 100644 --- a/source/source_basis/module_nao/test/two_center_integrator_test.cpp +++ b/source/source_basis/module_nao/test/two_center_integrator_test.cpp @@ -218,6 +218,153 @@ TEST_F(TwoCenterIntegratorTest, SphericalBessel) delete[] zeros; } +TEST_F(TwoCenterIntegratorTest, HessianSymmetry) +{ + nfile = 3; + orb.build(nfile, file, 'o'); + + ModuleBase::SphericalBesselTransformer sbt; + orb.set_transformer(sbt); + + double rmax = orb.rcut_max() * 2.0; + double dr = 0.01; + int nr = static_cast(rmax / dr) + 1; + + orb.set_uniform_grid(true, nr, rmax, 'i', true); + + S_intor.tabulate(orb, orb, 'S', nr, rmax); + T_intor.tabulate(orb, orb, 'T', nr, rmax); + + ModuleBase::Vector3 R(1.5, 2.0, 1.0); + double hess[9]; + + // Test S operator + S_intor.calculate(0, 1, 0, 0, 1, 1, 0, 0, R, nullptr, nullptr, hess); + + EXPECT_NEAR(hess[1], hess[3], 1e-10); // H_xy == H_yx + EXPECT_NEAR(hess[2], hess[6], 1e-10); // H_xz == H_zx + EXPECT_NEAR(hess[5], hess[7], 1e-10); // H_yz == H_zy + + // Test T operator + T_intor.calculate(0, 1, 0, 0, 1, 1, 0, 0, R, nullptr, nullptr, hess); + + EXPECT_NEAR(hess[1], hess[3], 1e-10); // H_xy == H_yx + EXPECT_NEAR(hess[2], hess[6], 1e-10); // H_xz == H_zx + EXPECT_NEAR(hess[5], hess[7], 1e-10); // H_yz == H_zy +} + +TEST_F(TwoCenterIntegratorTest, HessianFiniteDifference) +{ + nfile = 3; + orb.build(nfile, file, 'o'); + + ModuleBase::SphericalBesselTransformer sbt; + orb.set_transformer(sbt); + + double rmax = orb.rcut_max() * 2.0; + double dr = 0.01; + int nr = static_cast(rmax / dr) + 1; + + orb.set_uniform_grid(true, nr, rmax, 'i', true); + + S_intor.tabulate(orb, orb, 'S', nr, rmax); + T_intor.tabulate(orb, orb, 'T', nr, rmax); + + ModuleBase::Vector3 R(1.5, 2.0, 1.0); + double hess_analytical[9]; + double hess_numerical[9]; + double eps = 1e-5; + + // Test S operator + S_intor.calculate(0, 1, 0, 0, 1, 1, 0, 0, R, nullptr, nullptr, hess_analytical); + + // Compute numerical Hessian via finite differences + for (int alpha = 0; alpha < 3; ++alpha) + { + for (int beta = 0; beta < 3; ++beta) + { + ModuleBase::Vector3 R_plus = R, R_minus = R; + R_plus[beta] += eps; + R_minus[beta] -= eps; + + double grad_plus[3], grad_minus[3]; + S_intor.calculate(0, 1, 0, 0, 1, 1, 0, 0, R_plus, nullptr, grad_plus, nullptr); + S_intor.calculate(0, 1, 0, 0, 1, 1, 0, 0, R_minus, nullptr, grad_minus, nullptr); + + hess_numerical[alpha * 3 + beta] = (grad_plus[alpha] - grad_minus[alpha]) / (2.0 * eps); + } + } + + // Compare with tolerance appropriate for finite differences + for (int i = 0; i < 9; ++i) + { + EXPECT_NEAR(hess_analytical[i], hess_numerical[i], 1e-5); + } + + // Test T operator + T_intor.calculate(0, 1, 0, 0, 1, 1, 0, 0, R, nullptr, nullptr, hess_analytical); + + for (int alpha = 0; alpha < 3; ++alpha) + { + for (int beta = 0; beta < 3; ++beta) + { + ModuleBase::Vector3 R_plus = R, R_minus = R; + R_plus[beta] += eps; + R_minus[beta] -= eps; + + double grad_plus[3], grad_minus[3]; + T_intor.calculate(0, 1, 0, 0, 1, 1, 0, 0, R_plus, nullptr, grad_plus, nullptr); + T_intor.calculate(0, 1, 0, 0, 1, 1, 0, 0, R_minus, nullptr, grad_minus, nullptr); + + hess_numerical[alpha * 3 + beta] = (grad_plus[alpha] - grad_minus[alpha]) / (2.0 * eps); + } + } + + for (int i = 0; i < 9; ++i) + { + EXPECT_NEAR(hess_analytical[i], hess_numerical[i], 1e-5); + } +} + +TEST_F(TwoCenterIntegratorTest, HessianDoesNotBreakGradient) +{ + nfile = 3; + orb.build(nfile, file, 'o'); + + ModuleBase::SphericalBesselTransformer sbt; + orb.set_transformer(sbt); + + double rmax = orb.rcut_max() * 2.0; + double dr = 0.01; + int nr = static_cast(rmax / dr) + 1; + + orb.set_uniform_grid(true, nr, rmax, 'i', true); + + S_intor.tabulate(orb, orb, 'S', nr, rmax); + T_intor.tabulate(orb, orb, 'T', nr, rmax); + + ModuleBase::Vector3 R(1.5, 2.0, 1.0); + double grad_only[3], grad_with_hess[3], hess[9]; + + // Test S operator + S_intor.calculate(0, 1, 0, 0, 1, 1, 0, 0, R, nullptr, grad_only, nullptr); + S_intor.calculate(0, 1, 0, 0, 1, 1, 0, 0, R, nullptr, grad_with_hess, hess); + + for (int i = 0; i < 3; ++i) + { + EXPECT_NEAR(grad_only[i], grad_with_hess[i], 1e-12); + } + + // Test T operator + T_intor.calculate(0, 1, 0, 0, 1, 1, 0, 0, R, nullptr, grad_only, nullptr); + T_intor.calculate(0, 1, 0, 0, 1, 1, 0, 0, R, nullptr, grad_with_hess, hess); + + for (int i = 0; i < 3; ++i) + { + EXPECT_NEAR(grad_only[i], grad_with_hess[i], 1e-12); + } +} + int main(int argc, char** argv) { diff --git a/source/source_basis/module_nao/two_center_bundle.h b/source/source_basis/module_nao/two_center_bundle.h index 7aa6676483..b2708a9dad 100644 --- a/source/source_basis/module_nao/two_center_bundle.h +++ b/source/source_basis/module_nao/two_center_bundle.h @@ -1,5 +1,5 @@ -#ifndef W_ABACUS_DEVELOP_ABACUS_DEVELOP_SOURCE_MODULE_BASIS_MODULE_NAO_TWO_CENTER_BUNDLE_H -#define W_ABACUS_DEVELOP_ABACUS_DEVELOP_SOURCE_MODULE_BASIS_MODULE_NAO_TWO_CENTER_BUNDLE_H +#ifndef TWO_CENTER_BUNDLE_H +#define TWO_CENTER_BUNDLE_H #include "source_basis/module_ao/ORB_read.h" #include "source_basis/module_nao/two_center_integrator.h" diff --git a/source/source_basis/module_nao/two_center_integrator.cpp b/source/source_basis/module_nao/two_center_integrator.cpp index ebc7f71141..1c2a574c16 100644 --- a/source/source_basis/module_nao/two_center_integrator.cpp +++ b/source/source_basis/module_nao/two_center_integrator.cpp @@ -22,25 +22,27 @@ void TwoCenterIntegrator::tabulate(const RadialCollection& bra, is_tabulated_ = true; } -void TwoCenterIntegrator::calculate(const int itype1, - const int l1, - const int izeta1, - const int m1, +void TwoCenterIntegrator::calculate(const int itype1, + const int l1, + const int izeta1, + const int m1, const int itype2, const int l2, const int izeta2, const int m2, const ModuleBase::Vector3& vR, // R = R2 - R1 double* out, - double* grad_out) const + double* grad_out, + double* hess_out) const { #ifdef __DEBUG assert( is_tabulated_ ); - assert( out || grad_out ); + assert( out || grad_out || hess_out ); #endif if (out) *out = 0.0; if (grad_out) std::fill(grad_out, grad_out + 3, 0.0); + if (hess_out) std::fill(hess_out, hess_out + 9, 0.0); double R = vR.norm(); if (R > table_.rmax()) @@ -48,6 +50,19 @@ void TwoCenterIntegrator::calculate(const int itype1, return; } + if (m1 > l1 || m1 < -l1 || m2 > l2 || m2 < -l2) + { + ModuleBase::WARNING("TwoCenterIntegrator", "m should be in range [-l, l]."); + return; + } + + // Check angular momentum limitation for Hessian computation + if (hess_out && (l1 + l2 > 6)) + { + ModuleBase::WARNING_QUIT("TwoCenterIntegrator::calculate", + "Hessian computation not supported for l1+l2 > 6"); + } + // unit vector along R ModuleBase::Vector3 uR = (R == 0.0 ? ModuleBase::Vector3(0., 0., 1.) : vR / R); @@ -55,37 +70,75 @@ void TwoCenterIntegrator::calculate(const int itype1, const int lmax = l1 + l2; std::vector Rl_Y((lmax+1) * (lmax+1)); ModuleBase::Array_Pool grad_Rl_Y((lmax+1) * (lmax+1), 3); + std::vector> hess_Rl_Y; // R^l * Y is necessary anyway ModuleBase::Ylm::rl_sph_harm(l1 + l2, vR[0], vR[1], vR[2], Rl_Y); - if (grad_out) ModuleBase::Ylm::grad_rl_sph_harm(l1 + l2, vR[0], vR[1], vR[2], Rl_Y.data(), grad_Rl_Y.get_ptr_2D()); + if (grad_out || hess_out) ModuleBase::Ylm::grad_rl_sph_harm(l1 + l2, vR[0], vR[1], vR[2], Rl_Y.data(), grad_Rl_Y.get_ptr_2D()); + if (hess_out) ModuleBase::Ylm::hes_rl_sph_harm(l1 + l2, vR[0], vR[1], vR[2], hess_Rl_Y); - double tmp[2] = {0.0, 0.0}; + double tmp[3] = {0.0, 0.0, 0.0}; double* S_by_Rl = tmp; - double* d_S_by_Rl = grad_out ? tmp + 1 : nullptr; + double* d_S_by_Rl = (grad_out || hess_out) ? tmp + 1 : nullptr; + double* d2_S_by_Rl = hess_out ? tmp + 2 : nullptr; // the sign is given by i^(l1-l2-l) = (-1)^((l1-l2-l)/2) int sign = (l1 - l2 - std::abs(l1 - l2)) % 4 == 0 ? 1 : -1; for (int l = std::abs(l1 - l2); l <= l1 + l2; l += 2) { - // look up S/R^l and (d/dR)(S/R^l) (if necessary) from the radial table - table_.lookup(itype1, l1, izeta1, itype2, l2, izeta2, l, R, S_by_Rl, d_S_by_Rl); + // look up S/R^l, (d/dR)(S/R^l), and (d²/dR²)(S/R^l) from the radial table + table_.lookup(itype1, l1, izeta1, itype2, l2, izeta2, l, R, S_by_Rl, d_S_by_Rl, d2_S_by_Rl); for (int m = -l; m <= l; ++m) { double G = RealGauntTable::instance()(l1, l2, l, m1, m2, m); + int lm_idx = ylm_index(l, m); if (out) { - *out += sign * G * (*S_by_Rl) * Rl_Y[ylm_index(l, m)]; + *out += sign * G * (*S_by_Rl) * Rl_Y[lm_idx]; } if (grad_out) { for (int i = 0; i < 3; ++i) { - grad_out[i] += sign * G * ( (*d_S_by_Rl) * uR[i] * Rl_Y[ylm_index(l, m)] - + (*S_by_Rl) * grad_Rl_Y[ylm_index(l, m)][i] ); + grad_out[i] += sign * G * ( (*d_S_by_Rl) * uR[i] * Rl_Y[lm_idx] + + (*S_by_Rl) * grad_Rl_Y[lm_idx][i] ); + } + } + + if (hess_out) + { + // Convert 6-element symmetric format to 9-element full matrix + // hess_Rl_Y[lm_idx] = [H_xx, H_xy, H_xz, H_yy, H_yz, H_zz] + double H_full[9] = { + hess_Rl_Y[lm_idx][0], hess_Rl_Y[lm_idx][1], hess_Rl_Y[lm_idx][2], + hess_Rl_Y[lm_idx][1], hess_Rl_Y[lm_idx][3], hess_Rl_Y[lm_idx][4], + hess_Rl_Y[lm_idx][2], hess_Rl_Y[lm_idx][4], hess_Rl_Y[lm_idx][5] + }; + + for (int alpha = 0; alpha < 3; ++alpha) + { + for (int beta = 0; beta < 3; ++beta) + { + int idx = alpha * 3 + beta; + + // Product rule: d²(f*g)/dα dβ = f''*g + f'*g'_α + f'*g'_β + f*g'' + double term1 = (*d2_S_by_Rl) * uR[alpha] * uR[beta] * Rl_Y[lm_idx]; + + // Derivative of unit vector: du_α/dR_β = (δ_αβ - u_α*u_β)/R + double du_dR = (alpha == beta ? 1.0 : 0.0) - uR[alpha] * uR[beta]; + if (R > 1e-10) du_dR /= R; + else du_dR = 0.0; + + double term2 = (*d_S_by_Rl) * (du_dR * Rl_Y[lm_idx] + + uR[alpha] * grad_Rl_Y[lm_idx][beta] + + uR[beta] * grad_Rl_Y[lm_idx][alpha]); + double term3 = (*S_by_Rl) * H_full[idx]; + + hess_out[idx] += sign * G * (term1 + term2 + term3); + } } } } diff --git a/source/source_basis/module_nao/two_center_integrator.h b/source/source_basis/module_nao/two_center_integrator.h index 52b0f63dff..285ffe8728 100644 --- a/source/source_basis/module_nao/two_center_integrator.h +++ b/source/source_basis/module_nao/two_center_integrator.h @@ -57,15 +57,15 @@ class TwoCenterIntegrator ); /*! - * @brief Compute the two-center integrals. + * @brief Compute the two-center integrals and optionally their derivatives. * * This function calculates the two-center integral * - * / + * / * I(R) = | dr phi1(r) (op_) phi2(r - R) - * / + * / * - * or its gradient by using the tabulated radial part and real Gaunt coefficients. + * and optionally its gradient and/or Hessian. * * @param[in] itype1 Element index of orbital 1. * @param[in] l1 Angular momentum of orbital 1. @@ -81,20 +81,26 @@ class TwoCenterIntegrator * @param[out] grad_out Gradient of the integral. grad_out[0], grad_out[1] and * grad_out[2] are the x, y, z components of the gradient. * The gradient will not be computed if grad_out is nullptr. + * @param[out] hess_out Hessian of the integral. hess_out is a 9-element array + * in row-major order: [H_xx, H_xy, H_xz, H_yx, H_yy, H_yz, + * H_zx, H_zy, H_zz]. The Hessian will not be computed if + * hess_out is nullptr. * - * @note out and grad_out cannot be both nullptr. + * @note At least one of out, grad_out, or hess_out must be non-nullptr. + * @note Hessian computation requires l1 + l2 <= 6 (limitation of hes_rl_sph_harm). * */ - void calculate(const int itype1, - const int l1, - const int izeta1, - const int m1, + void calculate(const int itype1, + const int l1, + const int izeta1, + const int m1, const int itype2, const int l2, const int izeta2, const int m2, const ModuleBase::Vector3& vR, // vR = R2 - R1 double* out = nullptr, - double* grad_out = nullptr + double* grad_out = nullptr, + double* hess_out = nullptr ) const; /*! diff --git a/source/source_basis/module_nao/two_center_table.cpp b/source/source_basis/module_nao/two_center_table.cpp index 433c3fc7e2..821e881a45 100644 --- a/source/source_basis/module_nao/two_center_table.cpp +++ b/source/source_basis/module_nao/two_center_table.cpp @@ -79,7 +79,8 @@ void TwoCenterTable::lookup(const int itype1, const int l, const double R, double* val, - double* dval) const + double* dval, + double* d2val) const { #ifdef __DEBUG assert(R >= 0); @@ -91,12 +92,14 @@ void TwoCenterTable::lookup(const int itype1, *val = 0.0; if (dval) *dval = 0.0; + if (d2val) + *d2val = 0.0; return; } const double* tab = table(itype1, l1, izeta1, itype2, l2, izeta2, l, false); const double* dtab = table(itype1, l1, izeta1, itype2, l2, izeta2, l, true); - ModuleBase::CubicSpline::eval(nr_, rgrid_, tab, dtab, 1, &R, val, dval); + ModuleBase::CubicSpline::eval(nr_, rgrid_, tab, dtab, 1, &R, val, dval, d2val); } int& TwoCenterTable::table_index(const NumericalRadial* it1, const NumericalRadial* it2, const int l) diff --git a/source/source_basis/module_nao/two_center_table.h b/source/source_basis/module_nao/two_center_table.h index c130af9929..6240ce8429 100644 --- a/source/source_basis/module_nao/two_center_table.h +++ b/source/source_basis/module_nao/two_center_table.h @@ -48,16 +48,17 @@ class TwoCenterTable const bool deriv = false //!< [in] if true, return the derivative table ) const; - void lookup(const int itype1, //!< [in] element index of chi1 - const int l1, //!< [in] angular momentum of chi1 - const int izeta1, //!< [in] zeta number of chi1 - const int itype2, //!< [in] element index of chi2 - const int l2, //!< [in] angular momentum of chi2 - const int izeta2, //!< [in] zeta number of chi2 - const int l, //!< [in] angular momentum of the entry - const double R, //!< [in] distance between the two centers - double* val, //!< [out] interpolated values from table_ - double* dval = nullptr //!< [out] interpolated values from dtable_ + void lookup(const int itype1, //!< [in] element index of chi1 + const int l1, //!< [in] angular momentum of chi1 + const int izeta1, //!< [in] zeta number of chi1 + const int itype2, //!< [in] element index of chi2 + const int l2, //!< [in] angular momentum of chi2 + const int izeta2, //!< [in] zeta number of chi2 + const int l, //!< [in] angular momentum of the entry + const double R, //!< [in] distance between the two centers + double* val, //!< [out] interpolated values from table_ + double* dval = nullptr, //!< [out] interpolated values from dtable_ + double* d2val = nullptr //!< [out] interpolated second derivatives ) const; //!@} diff --git a/source/source_basis/module_pw/CMakeLists.txt b/source/source_basis/module_pw/CMakeLists.txt index 1c9dd2828d..912772e057 100644 --- a/source/source_basis/module_pw/CMakeLists.txt +++ b/source/source_basis/module_pw/CMakeLists.txt @@ -1,22 +1,22 @@ if (ENABLE_FLOAT_FFTW) list (APPEND FFT_SRC - module_fft/fft_cpu_float.cpp + ../../source_base/module_fft/fft_cpu_float.cpp ) endif() if (USE_CUDA) list (APPEND FFT_SRC - module_fft/fft_cuda.cpp + ../../source_base/module_fft/fft_cuda.cpp ) endif() if (USE_ROCM) list (APPEND FFT_SRC - module_fft/fft_rocm.cpp + ../../source_base/module_fft/fft_rocm.cpp ) endif() if (USE_DSP) list (APPEND FFT_SRC - module_fft/fft_dsp.cpp - module_fft/fft_dsp_float.cpp + ../../source_base/module_fft/fft_dsp.cpp + ../../source_base/module_fft/fft_dsp_float.cpp pw_transform_k_dsp.cpp) endif() @@ -32,8 +32,8 @@ list(APPEND objects pw_transform.cpp pw_transform_gpu.cpp pw_transform_k.cpp - module_fft/fft_bundle.cpp - module_fft/fft_cpu.cpp + ../../source_base/module_fft/fft_bundle.cpp + ../../source_base/module_fft/fft_cpu.cpp ${FFT_SRC} ) diff --git a/source/source_basis/module_pw/kernels/cuda/pw_op.cu b/source/source_basis/module_pw/kernels/cuda/pw_op.cu index a60c81a08c..58488e1a7d 100644 --- a/source/source_basis/module_pw/kernels/cuda/pw_op.cu +++ b/source/source_basis/module_pw/kernels/cuda/pw_op.cu @@ -112,7 +112,7 @@ void set_3d_fft_box_op::operator()(const int np reinterpret_cast*>(in), reinterpret_cast*>(out)); - cudaCheckOnDebug(); + CHECK_CUDA_SYNC(); } template @@ -130,7 +130,7 @@ void set_recip_to_real_output_op::operator()(co reinterpret_cast*>(in), reinterpret_cast*>(out)); - cudaCheckOnDebug(); + CHECK_CUDA_SYNC(); } template @@ -148,7 +148,7 @@ void set_recip_to_real_output_op::operator()(co reinterpret_cast*>(in), reinterpret_cast(out)); - cudaCheckOnDebug(); + CHECK_CUDA_SYNC(); } template @@ -170,7 +170,7 @@ void set_real_to_recip_output_op::operator()(co reinterpret_cast*>(in), reinterpret_cast*>(out)); - cudaCheckOnDebug(); + CHECK_CUDA_SYNC(); } template @@ -192,7 +192,7 @@ void set_real_to_recip_output_op::operator()(co reinterpret_cast*>(in), reinterpret_cast(out)); - cudaCheckOnDebug(); + CHECK_CUDA_SYNC(); } template struct set_3d_fft_box_op; diff --git a/source/source_basis/module_pw/kernels/test/CMakeLists.txt b/source/source_basis/module_pw/kernels/test/CMakeLists.txt index 151010241b..7ee73e1df5 100644 --- a/source/source_basis/module_pw/kernels/test/CMakeLists.txt +++ b/source/source_basis/module_pw/kernels/test/CMakeLists.txt @@ -1,7 +1,7 @@ add_definitions(-D__NORMAL) AddTest( - TARGET PW_Kernels_UTs + TARGET MODULE_PW_PW_Kernels_UTs LIBS parameter ${math_libs} psi device SOURCES pw_op_test.cpp ../../../../source_base/tool_quit.cpp ../../../../source_base/global_variable.cpp diff --git a/source/source_basis/module_pw/pw_basis.h b/source/source_basis/module_pw/pw_basis.h index 1578af0d83..b834cb0e0f 100644 --- a/source/source_basis/module_pw/pw_basis.h +++ b/source/source_basis/module_pw/pw_basis.h @@ -7,7 +7,7 @@ #include "source_base/matrix3.h" #include "source_base/vector3.h" #include -#include "module_fft/fft_bundle.h" +#include "source_base/module_fft/fft_bundle.h" #include #ifdef __MPI #include "mpi.h" @@ -245,7 +245,7 @@ class PW_Basis int nmaxgr = 0; // Gamma_only: max between npw and (nrxx+1)/2, others: max between npw and nrxx // Thus std::complex[nmaxgr] is able to contain either reciprocal or real data // FFT ft; - FFT_Bundle fft_bundle; + ModuleBase::FFT_Bundle fft_bundle; //The position of pointer in and out can be equal(in-place transform) or different(out-of-place transform). template diff --git a/source/source_basis/module_pw/pw_basis_big.h b/source/source_basis/module_pw/pw_basis_big.h index 2a04720877..987af787b3 100644 --- a/source/source_basis/module_pw/pw_basis_big.h +++ b/source/source_basis/module_pw/pw_basis_big.h @@ -2,6 +2,7 @@ #define PW_BASIS_BIG_H #include "source_base/constants.h" #include "source_base/global_function.h" + #ifdef __MPI #include "mpi.h" #endif diff --git a/source/source_basis/module_pw/pw_gatherscatter.h b/source/source_basis/module_pw/pw_gatherscatter.h index e6b5998446..5a1a5a37c1 100644 --- a/source/source_basis/module_pw/pw_gatherscatter.h +++ b/source/source_basis/module_pw/pw_gatherscatter.h @@ -102,7 +102,7 @@ void PW_Basis::gathers_scatterp(std::complex* in, std::complex* out) const if(this->poolnproc == 1) //In this case nrxx=fftnx*fftny*nz, nst = nstot, { #ifdef _OPENMP -#pragma omp parallel for schedule(static, 4096/sizeof(T)) +#pragma omp parallel for schedule(static) #endif for(int i = 0; i < this->nrxx; ++i) { @@ -160,7 +160,7 @@ void PW_Basis::gathers_scatterp(std::complex* in, std::complex* out) const } #ifdef _OPENMP -#pragma omp parallel for schedule(static, 4096/sizeof(T)) +#pragma omp parallel for schedule(static) #endif for(int i = 0; i < this->nrxx; ++i) { diff --git a/source/source_basis/module_pw/pw_transform.cpp b/source/source_basis/module_pw/pw_transform.cpp index 947909a3c8..1e4e45bbbc 100644 --- a/source/source_basis/module_pw/pw_transform.cpp +++ b/source/source_basis/module_pw/pw_transform.cpp @@ -1,7 +1,7 @@ #include "source_base/global_function.h" #include "source_base/timer.h" #include "source_basis/module_pw/kernels/pw_op.h" -#include "module_fft/fft_bundle.h" +#include "source_base/module_fft/fft_bundle.h" #include "pw_basis.h" #include "pw_gatherscatter.h" @@ -31,7 +31,7 @@ void PW_Basis::real2recip(const std::complex* in, assert(this->gamma_only == false); #ifdef _OPENMP -#pragma omp parallel for schedule(static, 4096 / sizeof(FPTYPE)) +#pragma omp parallel for schedule(static) #endif for (int ir = 0; ir < this->nrxx; ++ir) { @@ -47,7 +47,7 @@ void PW_Basis::real2recip(const std::complex* in, { FPTYPE tmpfac = factor / FPTYPE(this->nxyz); #ifdef _OPENMP -#pragma omp parallel for schedule(static, 4096 / sizeof(FPTYPE)) +#pragma omp parallel for schedule(static) #endif for (int ig = 0; ig < this->npw; ++ig) { @@ -58,7 +58,7 @@ void PW_Basis::real2recip(const std::complex* in, { FPTYPE tmpfac = 1.0 / FPTYPE(this->nxyz); #ifdef _OPENMP -#pragma omp parallel for schedule(static, 4096 / sizeof(FPTYPE)) +#pragma omp parallel for schedule(static) #endif for (int ig = 0; ig < this->npw; ++ig) { @@ -83,7 +83,7 @@ void PW_Basis::real2recip(const FPTYPE* in, std::complex* out, const boo { const int npy = this->ny * this->nplane; #ifdef _OPENMP -#pragma omp parallel for collapse(2) schedule(static, 4096 / sizeof(FPTYPE)) +#pragma omp parallel for collapse(2) schedule(static) #endif for (int ix = 0; ix < this->nx; ++ix) { @@ -98,7 +98,7 @@ void PW_Basis::real2recip(const FPTYPE* in, std::complex* out, const boo else { #ifdef _OPENMP -#pragma omp parallel for schedule(static, 4096 / sizeof(FPTYPE)) +#pragma omp parallel for schedule(static) #endif for (int ir = 0; ir < this->nrxx; ++ir) { @@ -114,7 +114,7 @@ void PW_Basis::real2recip(const FPTYPE* in, std::complex* out, const boo { FPTYPE tmpfac = factor / FPTYPE(this->nxyz); #ifdef _OPENMP -#pragma omp parallel for schedule(static, 4096 / sizeof(FPTYPE)) +#pragma omp parallel for schedule(static) #endif for (int ig = 0; ig < this->npw; ++ig) { @@ -125,7 +125,7 @@ void PW_Basis::real2recip(const FPTYPE* in, std::complex* out, const boo { FPTYPE tmpfac = 1.0 / FPTYPE(this->nxyz); #ifdef _OPENMP -#pragma omp parallel for schedule(static, 4096 / sizeof(FPTYPE)) +#pragma omp parallel for schedule(static) #endif for (int ig = 0; ig < this->npw; ++ig) { @@ -151,7 +151,7 @@ void PW_Basis::recip2real(const std::complex* in, ModuleBase::timer::tick(this->classname, "recip2real"); assert(this->gamma_only == false); #ifdef _OPENMP -#pragma omp parallel for schedule(static, 4096 / sizeof(FPTYPE)) +#pragma omp parallel for schedule(static) #endif for (int i = 0; i < this->nst * this->nz; ++i) { @@ -159,7 +159,7 @@ void PW_Basis::recip2real(const std::complex* in, } #ifdef _OPENMP -#pragma omp parallel for schedule(static, 4096 / sizeof(FPTYPE)) +#pragma omp parallel for schedule(static) #endif for (int ig = 0; ig < this->npw; ++ig) { @@ -174,7 +174,7 @@ void PW_Basis::recip2real(const std::complex* in, if (add) { #ifdef _OPENMP -#pragma omp parallel for schedule(static, 4096 / sizeof(FPTYPE)) +#pragma omp parallel for schedule(static) #endif for (int ir = 0; ir < this->nrxx; ++ir) { @@ -184,7 +184,7 @@ void PW_Basis::recip2real(const std::complex* in, else { #ifdef _OPENMP -#pragma omp parallel for schedule(static, 4096 / sizeof(FPTYPE)) +#pragma omp parallel for schedule(static) #endif for (int ir = 0; ir < this->nrxx; ++ir) { @@ -206,7 +206,7 @@ void PW_Basis::recip2real(const std::complex* in, FPTYPE* out, const boo { ModuleBase::timer::tick(this->classname, "recip2real"); #ifdef _OPENMP -#pragma omp parallel for schedule(static, 4096 / sizeof(FPTYPE)) +#pragma omp parallel for schedule(static) #endif for (int i = 0; i < this->nst * this->nz; ++i) { @@ -214,7 +214,7 @@ void PW_Basis::recip2real(const std::complex* in, FPTYPE* out, const boo } #ifdef _OPENMP -#pragma omp parallel for schedule(static, 4096 / sizeof(FPTYPE)) +#pragma omp parallel for schedule(static) #endif for (int ig = 0; ig < this->npw; ++ig) { @@ -234,7 +234,7 @@ void PW_Basis::recip2real(const std::complex* in, FPTYPE* out, const boo if (add) { #ifdef _OPENMP -#pragma omp parallel for collapse(2) schedule(static, 4096 / sizeof(FPTYPE)) +#pragma omp parallel for collapse(2) schedule(static) #endif for (int ix = 0; ix < this->nx; ++ix) { @@ -247,7 +247,7 @@ void PW_Basis::recip2real(const std::complex* in, FPTYPE* out, const boo else { #ifdef _OPENMP -#pragma omp parallel for collapse(2) schedule(static, 4096 / sizeof(FPTYPE)) +#pragma omp parallel for collapse(2) schedule(static) #endif for (int ix = 0; ix < this->nx; ++ix) { @@ -264,7 +264,7 @@ void PW_Basis::recip2real(const std::complex* in, FPTYPE* out, const boo if (add) { #ifdef _OPENMP -#pragma omp parallel for schedule(static, 4096 / sizeof(FPTYPE)) +#pragma omp parallel for schedule(static) #endif for (int ir = 0; ir < this->nrxx; ++ir) { @@ -274,7 +274,7 @@ void PW_Basis::recip2real(const std::complex* in, FPTYPE* out, const boo else { #ifdef _OPENMP -#pragma omp parallel for schedule(static, 4096 / sizeof(FPTYPE)) +#pragma omp parallel for schedule(static) #endif for (int ir = 0; ir < this->nrxx; ++ir) { diff --git a/source/source_basis/module_pw/pw_transform_k.cpp b/source/source_basis/module_pw/pw_transform_k.cpp index 36290d091a..a8adc6a67b 100644 --- a/source/source_basis/module_pw/pw_transform_k.cpp +++ b/source/source_basis/module_pw/pw_transform_k.cpp @@ -34,7 +34,7 @@ void PW_Basis_K::real2recip(const std::complex* in, assert(this->gamma_only == false); auto* auxr = this->fft_bundle.get_auxr_data(); #ifdef _OPENMP -#pragma omp parallel for schedule(static, 4096 / sizeof(FPTYPE)) +#pragma omp parallel for schedule(static) #endif for (int ir = 0; ir < this->nrxx; ++ir) { @@ -53,7 +53,7 @@ void PW_Basis_K::real2recip(const std::complex* in, { FPTYPE tmpfac = factor / FPTYPE(this->nxyz); #ifdef _OPENMP -#pragma omp parallel for schedule(static, 4096 / sizeof(FPTYPE)) +#pragma omp parallel for schedule(static) #endif for (int igl = 0; igl < npwk; ++igl) { @@ -64,7 +64,7 @@ void PW_Basis_K::real2recip(const std::complex* in, { FPTYPE tmpfac = 1.0 / FPTYPE(this->nxyz); #ifdef _OPENMP -#pragma omp parallel for schedule(static, 4096 / sizeof(FPTYPE)) +#pragma omp parallel for schedule(static) #endif for (int igl = 0; igl < npwk; ++igl) { @@ -103,7 +103,7 @@ void PW_Basis_K::real2recip(const FPTYPE* in, // r2c in place const int npy = this->ny * this->nplane; #ifdef _OPENMP -#pragma omp parallel for collapse(2) schedule(static, 4096 / sizeof(FPTYPE)) +#pragma omp parallel for collapse(2) schedule(static) #endif for (int ix = 0; ix < this->nx; ++ix) { @@ -126,7 +126,7 @@ void PW_Basis_K::real2recip(const FPTYPE* in, { FPTYPE tmpfac = factor / FPTYPE(this->nxyz); #ifdef _OPENMP -#pragma omp parallel for schedule(static, 4096 / sizeof(FPTYPE)) +#pragma omp parallel for schedule(static) #endif for (int igl = 0; igl < npwk; ++igl) { @@ -137,7 +137,7 @@ void PW_Basis_K::real2recip(const FPTYPE* in, { FPTYPE tmpfac = 1.0 / FPTYPE(this->nxyz); #ifdef _OPENMP -#pragma omp parallel for schedule(static, 4096 / sizeof(FPTYPE)) +#pragma omp parallel for schedule(static) #endif for (int igl = 0; igl < npwk; ++igl) { @@ -176,7 +176,7 @@ void PW_Basis_K::recip2real(const std::complex* in, const int npwk = this->npwk[ik]; auto* auxg = this->fft_bundle.get_auxg_data(); #ifdef _OPENMP -#pragma omp parallel for schedule(static, 4096 / sizeof(FPTYPE)) +#pragma omp parallel for schedule(static) #endif for (int igl = 0; igl < npwk; ++igl) { @@ -191,7 +191,7 @@ void PW_Basis_K::recip2real(const std::complex* in, if (add) { #ifdef _OPENMP -#pragma omp parallel for schedule(static, 4096 / sizeof(FPTYPE)) +#pragma omp parallel for schedule(static) #endif for (int ir = 0; ir < this->nrxx; ++ir) { @@ -201,7 +201,7 @@ void PW_Basis_K::recip2real(const std::complex* in, else { #ifdef _OPENMP -#pragma omp parallel for schedule(static, 4096 / sizeof(FPTYPE)) +#pragma omp parallel for schedule(static) #endif for (int ir = 0; ir < this->nrxx; ++ir) { @@ -239,7 +239,7 @@ void PW_Basis_K::recip2real(const std::complex* in, const int npwk = this->npwk[ik]; auto* auxg = this->fft_bundle.get_auxg_data(); #ifdef _OPENMP -#pragma omp parallel for schedule(static, 4096 / sizeof(FPTYPE)) +#pragma omp parallel for schedule(static) #endif for (int igl = 0; igl < npwk; ++igl) { @@ -262,7 +262,7 @@ void PW_Basis_K::recip2real(const std::complex* in, if (add) { #ifdef _OPENMP -#pragma omp parallel for collapse(2) schedule(static, 4096 / sizeof(FPTYPE)) +#pragma omp parallel for collapse(2) schedule(static) #endif for (int ix = 0; ix < this->nx; ++ix) { @@ -275,7 +275,7 @@ void PW_Basis_K::recip2real(const std::complex* in, else { #ifdef _OPENMP -#pragma omp parallel for collapse(2) schedule(static, 4096 / sizeof(FPTYPE)) +#pragma omp parallel for collapse(2) schedule(static) #endif for (int ix = 0; ix < this->nx; ++ix) { diff --git a/source/source_basis/module_pw/pw_transform_k_dsp.cpp b/source/source_basis/module_pw/pw_transform_k_dsp.cpp index 1449943550..251c21372e 100644 --- a/source/source_basis/module_pw/pw_transform_k_dsp.cpp +++ b/source/source_basis/module_pw/pw_transform_k_dsp.cpp @@ -33,8 +33,8 @@ void PW_Basis_K::real2recip_dsp(const std::complex* in, const bool add, const double factor) const { - const base_device::DEVICE_CPU* ctx; - const base_device::DEVICE_GPU* gpux; + const base_device::DEVICE_CPU* ctx = nullptr; + const base_device::DEVICE_GPU* gpux = nullptr; assert(this->gamma_only == false); auto* auxr = this->fft_bundle.get_auxr_3d_data(); @@ -65,8 +65,8 @@ void PW_Basis_K::recip2real_dsp(const std::complex* in, const double factor) const { assert(this->gamma_only == false); - const base_device::DEVICE_CPU* ctx; - const base_device::DEVICE_GPU* gpux; + const base_device::DEVICE_CPU* ctx = nullptr; + const base_device::DEVICE_GPU* gpux = nullptr; // memset the auxr of 0 in the auxr,here the len of the auxr is nxyz auto* auxr = this->fft_bundle.get_auxr_3d_data(); memset(auxr, 0, this->nxyz * 2 * 8); @@ -83,7 +83,7 @@ void PW_Basis_K::recip2real_dsp(const std::complex* in, { const int one = 1; const std::complex factor1 = std::complex(factor, 0); - zaxpy_(&nrxx, &factor1, auxr, &one, out, &one); + BlasConnector::axpy(nrxx, factor1, auxr, one, out, one); } else { @@ -115,7 +115,7 @@ void PW_Basis_K::convolution(const base_device::DEVICE_CPU* ctx, ModuleBase::timer::tick(this->classname, "convolution"); assert(this->gamma_only == false); - const base_device::DEVICE_GPU* gpux; + const base_device::DEVICE_GPU* gpux = nullptr; // memset the auxr of 0 in the auxr,here the len of the auxr is nxyz auto* auxr = this->fft_bundle.get_auxr_3d_data(); memset(auxr, 0, this->nxyz * 2 * 8); diff --git a/source/source_basis/module_pw/test/CMakeLists.txt b/source/source_basis/module_pw/test/CMakeLists.txt index c73f5549fd..6da769ea2f 100644 --- a/source/source_basis/module_pw/test/CMakeLists.txt +++ b/source/source_basis/module_pw/test/CMakeLists.txt @@ -1,6 +1,6 @@ add_definitions(-D__NORMAL) AddTest( - TARGET pw_test + TARGET MODULE_PW_pw_test LIBS parameter ${math_libs} planewave device SOURCES ../../../source_base/matrix.cpp ../../../source_base/complexmatrix.cpp ../../../source_base/matrix3.cpp ../../../source_base/tool_quit.cpp ../../../source_base/mymath.cpp ../../../source_base/timer.cpp ../../../source_base/memory.cpp @@ -18,7 +18,7 @@ AddTest( test_tool.cpp test-big.cpp test-other.cpp test_sup.cpp ) -add_test(NAME pw_test_parallel - COMMAND mpirun -np 3 ./pw_test; mpirun -np 4 ./pw_test +add_test(NAME MODULE_PW_pw_test_parallel + COMMAND mpirun -np 3 ./MODULE_PW_pw_test; mpirun -np 4 ./MODULE_PW_pw_test WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} ) diff --git a/source/source_basis/module_pw/test_gpu/pw_basis_C2C.cpp b/source/source_basis/module_pw/test_gpu/pw_basis_C2C.cpp index 95d076040e..9abaefab44 100644 --- a/source/source_basis/module_pw/test_gpu/pw_basis_C2C.cpp +++ b/source/source_basis/module_pw/test_gpu/pw_basis_C2C.cpp @@ -44,9 +44,6 @@ class PW_BASIS_K_GPU_TEST : public ::testing::Test int distribution_type = 1; bool xprime = false; const int nks = 1; - ModuleBase::Vector3* kvec_d; - kvec_d = new ModuleBase::Vector3[nks]; - kvec_d[0].set(0, 0, 0); // init const int mypool = 0; const int key = 1; diff --git a/source/source_basis/module_pw/test_serial/CMakeLists.txt b/source/source_basis/module_pw/test_serial/CMakeLists.txt index d604aa64b1..52e594afb9 100644 --- a/source/source_basis/module_pw/test_serial/CMakeLists.txt +++ b/source/source_basis/module_pw/test_serial/CMakeLists.txt @@ -9,8 +9,8 @@ remove_definitions(-D__MLALGO) add_library( planewave_serial OBJECT - ../module_fft/fft_bundle.cpp - ../module_fft/fft_cpu.cpp + ../../../source_base/module_fft/fft_bundle.cpp + ../../../source_base/module_fft/fft_cpu.cpp ../pw_basis.cpp ../pw_basis_k.cpp ../pw_basis_sup.cpp @@ -24,13 +24,13 @@ add_library( ) AddTest( - TARGET basis_pw_serial + TARGET MODULE_PW_basis_pw_serial LIBS parameter ${math_libs} planewave_serial device base SOURCES pw_basis_test.cpp ) AddTest( - TARGET basis_pw_k_serial + TARGET MODULE_PW_basis_pw_k_serial LIBS parameter ${math_libs} planewave_serial device base SOURCES pw_basis_k_test.cpp ) diff --git a/source/source_cell/CMakeLists.txt b/source/source_cell/CMakeLists.txt index 95d997ecfd..39cfa88c22 100644 --- a/source/source_cell/CMakeLists.txt +++ b/source/source_cell/CMakeLists.txt @@ -15,6 +15,7 @@ add_library( read_pp_vwr.cpp unitcell.cpp read_atoms.cpp + read_atoms_helper.cpp setup_nonlocal.cpp klist.cpp parallel_kpoints.cpp @@ -26,6 +27,8 @@ add_library( print_cell.cpp read_atom_species.cpp k_vector_utils.cpp + sep.cpp + sep_cell.cpp ) if(ENABLE_COVERAGE) diff --git a/source/source_cell/atom_pseudo.h b/source/source_cell/atom_pseudo.h index 8d5c074830..9f04e0861a 100644 --- a/source/source_cell/atom_pseudo.h +++ b/source/source_cell/atom_pseudo.h @@ -3,7 +3,7 @@ #include "source_base/global_variable.h" #include "source_base/vector3.h" -#include "source_io/output.h" +#include "source_io/module_output/output.h" #include "source_base/complexarray.h" #include "source_base/complexmatrix.h" #include "pseudo.h" diff --git a/source/source_cell/atom_spec.cpp b/source/source_cell/atom_spec.cpp index e4ee60ecc9..82645d079e 100644 --- a/source/source_cell/atom_spec.cpp +++ b/source/source_cell/atom_spec.cpp @@ -101,6 +101,7 @@ void Atom::bcast_atom() this->tau.resize(na, ModuleBase::Vector3(0, 0, 0)); this->dis.resize(na, ModuleBase::Vector3(0, 0, 0)); this->taud.resize(na, ModuleBase::Vector3(0, 0, 0)); + this->boundary_shift.resize(na, ModuleBase::Vector3(0, 0, 0)); this->vel.resize(na, ModuleBase::Vector3(0, 0, 0)); this->mag.resize(na, 0); this->angle1.resize(na, 0); diff --git a/source/source_cell/atom_spec.h b/source/source_cell/atom_spec.h index 51f24ac202..3ee18d3971 100644 --- a/source/source_cell/atom_spec.h +++ b/source/source_cell/atom_spec.h @@ -1,7 +1,7 @@ #ifndef ATOM_H #define ATOM_H -#include "../source_io/output.h" +#include "../source_io/module_output/output.h" #include "atom_pseudo.h" class Atom { @@ -36,6 +36,7 @@ class Atom std::vector> tau; // Cartesian coordinates of each atom in this type. std::vector> dis; // direct displacements of each atom in this type in current step liuyu modift 2023-03-22 std::vector> taud; // Direct coordinates of each atom in this type. + std::vector> boundary_shift; // record for periodic boundary adjustment. std::vector> vel; // velocities of each atom in this type. std::vector> force; // force acting on each atom in this type. std::vector> lambda; // Lagrange multiplier for each atom in this type. used in deltaspin diff --git a/source/source_cell/bcast_cell.cpp b/source/source_cell/bcast_cell.cpp index bb23fd82fe..8f2dcd3300 100644 --- a/source/source_cell/bcast_cell.cpp +++ b/source/source_cell/bcast_cell.cpp @@ -3,8 +3,9 @@ #include "source_io/module_parameter/parameter.h" #ifdef __EXX #include "source_lcao/module_ri/serialization_cereal.h" -#include "source_pw/module_pwdft/global.h" #endif +#include "source_hamilt/module_xc/exx_info.h" // use GlobalC::exx_info + namespace unitcell { void bcast_atoms_tau(Atom* atoms, @@ -112,8 +113,14 @@ namespace unitcell #ifdef __EXX ModuleBase::bcast_data_cereal(GlobalC::exx_info.info_ri.files_abfs, - MPI_COMM_WORLD, - 0); + MPI_COMM_WORLD, + 0); + ModuleBase::bcast_data_cereal(GlobalC::exx_info.info_opt_abfs.files_abfs, + MPI_COMM_WORLD, + 0); + ModuleBase::bcast_data_cereal(GlobalC::exx_info.info_opt_abfs.files_jles, + MPI_COMM_WORLD, + 0); #endif return; #endif diff --git a/source/source_cell/cell_index.cpp b/source/source_cell/cell_index.cpp index 75708dec76..c147afa936 100644 --- a/source/source_cell/cell_index.cpp +++ b/source/source_cell/cell_index.cpp @@ -2,7 +2,6 @@ #include "source_base/name_angular.h" #include "source_base/tool_quit.h" -#include CellIndex::CellIndex(const std::vector& atomLabels_in, const std::vector& atomCounts_in, @@ -18,12 +17,12 @@ CellIndex::CellIndex(const std::vector& atomLabels_in, this->cal_orbitalCounts(); } -int CellIndex::get_ntype() +int CellIndex::get_ntype() const { return this->atomCounts.size(); } -int CellIndex::get_nat() +int CellIndex::get_nat() const { int nat = 0; for (int it = 0; it < this->atomCounts.size(); ++it) @@ -33,12 +32,12 @@ int CellIndex::get_nat() return nat; } -int CellIndex::get_nat(int it) +int CellIndex::get_nat(int it) const { return this->atomCounts[it]; } -int CellIndex::get_nw() +int CellIndex::get_nw() const { int nw = 0; for (int it = 0; it < this->orbitalCounts.size(); ++it) @@ -48,13 +47,13 @@ int CellIndex::get_nw() return nw; } -int CellIndex::get_nw(int iat) +int CellIndex::get_nw(int iat) const { int it = this->iat2it(iat); return this->orbitalCounts[it]; } -int CellIndex::get_iwt(int iat, int orbital_index) +int CellIndex::get_iwt(int iat, int orbital_index) const { if (iat < 0 || iat >= this->get_nat()) { @@ -83,14 +82,14 @@ int CellIndex::get_iwt(int iat, int orbital_index) return iwt; } -int CellIndex::get_maxL(int iat) +int CellIndex::get_maxL(int iat) const { int it = this->iat2it(iat); return this->lnchiCounts[it].size() - 1; } /// @brief get nchi -int CellIndex::get_nchi(int iat, int L) +int CellIndex::get_nchi(int iat, int L) const { int it = this->iat2it(iat); if (L < 0 || L >= this->lnchiCounts[it].size()) @@ -119,7 +118,7 @@ void CellIndex::check_atomCounts() } } -std::string CellIndex::get_atom_label(int iat, bool order) +std::string CellIndex::get_atom_label(int iat, bool order) const { int it = this->iat2it(iat); int ia = this->iat2ia(iat); @@ -129,7 +128,7 @@ std::string CellIndex::get_atom_label(int iat, bool order) return atomType; } -int CellIndex::iat2it(int iat) +int CellIndex::iat2it(int iat) const { int running_iat = 0; int it = -1; // Tracks the index of the atom in atomLabels @@ -151,7 +150,7 @@ int CellIndex::iat2it(int iat) return it; } -int CellIndex::iat2ia(int iat) +int CellIndex::iat2ia(int iat) const { int it = this->iat2it(iat); // sum of atoms of previous types @@ -163,7 +162,7 @@ int CellIndex::iat2ia(int iat) return iat - running_iat; } -int CellIndex::iw2l(int iat, int iw) +int CellIndex::iw2l(int iat, int iw) const { int it = this->iat2it(iat); int maxL = this->lnchiCounts[it].size() - 1; @@ -185,10 +184,10 @@ int CellIndex::iw2l(int iat, int iw) { ModuleBase::WARNING_QUIT("CellIndex::iw2l", "localized wave funciton index out of range [0, nw)"); } - throw std::out_of_range(std::string(__FILE__)+" line "+std::to_string(__LINE__)); + ModuleBase::WARNING_QUIT("CellIndex::iw2l", "unreachable code reached"); } -int CellIndex::iw2z(int iat, int iw) +int CellIndex::iw2z(int iat, int iw) const { int it = this->iat2it(iat); int maxL = this->lnchiCounts[it].size() - 1; @@ -208,12 +207,12 @@ int CellIndex::iw2z(int iat, int iw) } if (iw >= 0) { - ModuleBase::WARNING_QUIT("CellIndex::iw2l", "localized wave funciton index out of range [0, nw)"); + ModuleBase::WARNING_QUIT("CellIndex::iw2z", "localized wave funciton index out of range [0, nw)"); } - throw std::out_of_range(std::string(__FILE__)+" line "+std::to_string(__LINE__)); + ModuleBase::WARNING_QUIT("CellIndex::iw2z", "unreachable code reached"); } -int CellIndex::iw2m(int iat, int iw) +int CellIndex::iw2m(int iat, int iw) const { int it = this->iat2it(iat); int maxL = this->lnchiCounts[it].size() - 1; @@ -233,9 +232,9 @@ int CellIndex::iw2m(int iat, int iw) } if (iw >= 0) { - ModuleBase::WARNING_QUIT("CellIndex::iw2l", "localized wave funciton index out of range [0, nw)"); + ModuleBase::WARNING_QUIT("CellIndex::iw2m", "localized wave funciton index out of range [0, nw)"); } - throw std::out_of_range(std::string(__FILE__)+" line "+std::to_string(__LINE__)); + ModuleBase::WARNING_QUIT("CellIndex::iw2m", "unreachable code reached"); } bool CellIndex::check_nspin(int nspin) @@ -262,7 +261,7 @@ void CellIndex::cal_orbitalCounts() } } -void CellIndex::write_orb_info(std::string out_dir) +void CellIndex::write_orb_info(const std::string& out_dir) const { std::stringstream os; os << out_dir << "Orbital"; diff --git a/source/source_cell/cell_index.h b/source/source_cell/cell_index.h index caa2645e20..ed24e52190 100644 --- a/source/source_cell/cell_index.h +++ b/source/source_cell/cell_index.h @@ -28,25 +28,25 @@ class CellIndex public: /// @brief the total number of atoms - int get_nat(); + int get_nat() const; /// @brief the total number of atoms of a given type - int get_nat(int it); + int get_nat(int it) const; /// @brief get ntype - int get_ntype(); + int get_ntype() const; /// @brief get nw - int get_nw(); + int get_nw() const; /// @brief get nw of a given type - int get_nw(int iat); + int get_nw(int iat) const; /// @brief get iwt - int get_iwt(int iat, int orbital_index); + int get_iwt(int iat, int orbital_index) const; /// @brief get maximum L of a given atom - int get_maxL(int iat); + int get_maxL(int iat) const; /// @brief get nchi of a given atom and a give L - int get_nchi(int iat, int L); + int get_nchi(int iat, int L) const; /// @brief get atom label of a given atom - std::string get_atom_label(int iat, bool order = false); + std::string get_atom_label(int iat, bool order = false) const; /// @brief write orbital info into file - void write_orb_info(std::string out_dir); + void write_orb_info(const std::string& out_dir) const; private: /// atomCounts is a vector used to store the number of atoms for each type @@ -66,15 +66,15 @@ class CellIndex /// check if atomCounts is set ok void check_atomCounts(); /// get type of atom from total order - int iat2it(int iat); + int iat2it(int iat) const; /// get index of atom in the same type - int iat2ia(int iat); + int iat2ia(int iat) const; /// get L from iw - int iw2l(int iat, int iw); + int iw2l(int iat, int iw) const; /// get Z from iw - int iw2z(int iat, int iw); + int iw2z(int iat, int iw) const; /// get m from iw - int iw2m(int iat, int iw); + int iw2m(int iat, int iw) const; }; #endif // CELL_INDEX_H diff --git a/source/source_cell/k_vector_utils.cpp b/source/source_cell/k_vector_utils.cpp index 0ea7cb77da..e9922bc551 100644 --- a/source/source_cell/k_vector_utils.cpp +++ b/source/source_cell/k_vector_utils.cpp @@ -245,7 +245,7 @@ void kvec_mpi_k(K_Vectors& kv) ModuleBase::GlobalFunc::OUT(GlobalV::ofs_running, "Number of k-points in this process", kv.nks); int nks_minimum = kv.nks; - Parallel_Reduce::gather_min_int_all(GlobalV::NPROC, nks_minimum); + Parallel_Reduce::reduce_min(nks_minimum); if (nks_minimum == 0) { @@ -312,7 +312,7 @@ void kvec_mpi_k(K_Vectors& kv) { int starsize = kv.kstars[ikibz].size(); Parallel_Common::bcast_int(starsize); - GlobalV::ofs_running << "starsize: " << starsize << std::endl; + //GlobalV::ofs_running << "starsize: " << starsize << std::endl; auto ks = kv.kstars[ikibz].begin(); for (int ik = 0; ik < starsize; ++ik) { @@ -328,8 +328,8 @@ void kvec_mpi_k(K_Vectors& kv) Parallel_Common::bcast_double(ks_vec.x); Parallel_Common::bcast_double(ks_vec.y); Parallel_Common::bcast_double(ks_vec.z); - GlobalV::ofs_running << "isym: " << isym << " ks_vec: " << ks_vec.x << " " << ks_vec.y << " " - << ks_vec.z << std::endl; + //GlobalV::ofs_running << "isym: " << isym << " ks_vec: " << ks_vec.x << " " << ks_vec.y << " " + // << ks_vec.z << std::endl; if (GlobalV::MY_RANK != 0) { kv.kstars[ikibz].insert(std::make_pair(isym, ks_vec)); @@ -572,7 +572,7 @@ void kvec_ibz_kpoint(K_Vectors& kv, std::vector ibz2bz(kv.get_nkstot()); // nkstot is the total input k-points number. - const double weight = 1.0 / static_cast(kv.get_nkstot()); + double weight = 1.0 / static_cast(kv.get_nkstot()); ModuleBase::Vector3 kvec_rot; ModuleBase::Vector3 kvec_rot_k; @@ -604,11 +604,13 @@ void kvec_ibz_kpoint(K_Vectors& kv, } return; }; - // for output in kpoints file - int ibz_index[kv.get_nkstot()]; + // update map k -> irreducible k + kv.ibz_index.assign( kv.get_nkstot_full(), -1); // -1 means not in ibz_kpoint list // search in all k-poins. for (int i = 0; i < kv.get_nkstot(); ++i) { + if (!kv.get_is_mp()) { weight = kv.wk[i]; } // use the input weight, instead of 1/nkstot + // restrict to [0, 1) restrict_kpt(kv.kvec_d[i]); @@ -667,7 +669,7 @@ void kvec_ibz_kpoint(K_Vectors& kv, // nkstot_ibz indicate the index of ibz kpoint. kvec_d_ibz[nkstot_ibz] = kv.kvec_d[i]; // output in kpoints file - ibz_index[i] = nkstot_ibz; + kv.ibz_index[i] = nkstot_ibz; // the weight should be averged k-point weight. wk_ibz[nkstot_ibz] = weight; @@ -688,7 +690,7 @@ void kvec_ibz_kpoint(K_Vectors& kv, double kmol_new = kv.kvec_d[i].norm2(); double kmol_old = kvec_d_ibz[exist_number].norm2(); - ibz_index[i] = exist_number; + kv.ibz_index[i] = exist_number; // std::cout << "\n kmol_new = " << kmol_new; // std::cout << "\n kmol_old = " << kmol_old; @@ -765,10 +767,10 @@ void kvec_ibz_kpoint(K_Vectors& kv, kv.kvec_d[i].x, kv.kvec_d[i].y, kv.kvec_d[i].z, - ibz_index[i] + 1, - kvec_d_ibz[ibz_index[i]].x, - kvec_d_ibz[ibz_index[i]].y, - kvec_d_ibz[ibz_index[i]].z); + kv.ibz_index[i] + 1, + kvec_d_ibz[kv.ibz_index[i]].x, + kvec_d_ibz[kv.ibz_index[i]].y, + kvec_d_ibz[kv.ibz_index[i]].z); } ss << table << std::endl; skpt = ss.str(); diff --git a/source/source_cell/klist.cpp b/source/source_cell/klist.cpp index 694411b3cf..c5ab3402f3 100644 --- a/source/source_cell/klist.cpp +++ b/source/source_cell/klist.cpp @@ -7,8 +7,7 @@ #include "source_base/parallel_global.h" #include "source_base/parallel_reduce.h" #include "source_cell/module_symmetry/symmetry.h" -#include "source_pw/module_pwdft/global.h" -#include "source_io/berryphase.h" +#include "source_io/module_unk/berryphase.h" #include "source_io/module_parameter/parameter.h" void K_Vectors::cal_ik_global() @@ -160,6 +159,13 @@ void K_Vectors::set(const UnitCell& ucell, // set the k vectors for the up and down spin this->set_kup_and_kdw(); + // initialize ibz_index + this->ibz_index.resize(this->nkstot_full); + for (int ik = 0; ik < this->nkstot_full; ik++) + { + this->ibz_index[ik] = ik; + } + // get ik2iktot this->cal_ik_global(); @@ -460,7 +466,7 @@ void K_Vectors::interpolate_k_between(std::ifstream& ifk, std::vectorwk[ik]; } - assert(sum > 0.0); + + // If sum of weights is zero or very small, set equal weights + if (sum < 1e-10) + { + ModuleBase::WARNING("K_Vectors::normalize_wk", + "Sum of k-point weights is zero or very small. " + "Setting equal weights for all k-points."); + for (int ik = 0; ik < nkstot; ik++) + { + this->wk[ik] = 1.0 / double(nkstot); + } + sum = 1.0; + } for (int ik = 0; ik < nkstot; ik++) { diff --git a/source/source_cell/klist.h b/source/source_cell/klist.h index 4fd2f41c1f..e16b9d1642 100644 --- a/source/source_cell/klist.h +++ b/source/source_cell/klist.h @@ -126,6 +126,7 @@ class K_Vectors } std::vector ik2iktot; ///<[nks] map ik to the global index of k points + std::vector ibz_index; ///< map k points (before symmetry reduction) to irreducible k-points /** * @brief Updates the k-points to use the irreducible Brillouin zone (IBZ). @@ -272,7 +273,8 @@ class K_Vectors * @return void * * @note This function should only be called by the master process (MY_RANK == 0). - * @note The function assumes that the sum of the weights of the k-points is greater than 0. + * @note If the sum of the weights is zero or very small (< 1e-10), the function will set equal weights for all + * k-points and issue a warning. This allows calculations like get_wf to proceed with zero-weight k-points. * @note The function first normalizes the weights so that their sum is 1, and then scales them by the degeneracy of * spin. */ diff --git a/source/source_cell/module_neighbor/test/CMakeLists.txt b/source/source_cell/module_neighbor/test/CMakeLists.txt index 01c5b9d3ef..3d891aa20c 100644 --- a/source/source_cell/module_neighbor/test/CMakeLists.txt +++ b/source/source_cell/module_neighbor/test/CMakeLists.txt @@ -13,7 +13,7 @@ AddTest( TARGET MODULE_CELL_NEIGHBOR_sltk_grid LIBS parameter ${math_libs} base device cell_info SOURCES sltk_grid_test.cpp ../sltk_grid.cpp ../sltk_atom.cpp - ../../../source_io/output.cpp + ../../../source_io/module_output/output.cpp ) AddTest( @@ -21,5 +21,5 @@ AddTest( LIBS parameter ${math_libs} base device cell_info SOURCES sltk_atom_arrange_test.cpp ../sltk_atom_arrange.cpp ../sltk_grid_driver.cpp ../sltk_grid.cpp ../sltk_atom.cpp - ../../../source_io/output.cpp + ../../../source_io/module_output/output.cpp ) \ No newline at end of file diff --git a/source/source_cell/module_neighbor/test/prepare_unitcell.h b/source/source_cell/module_neighbor/test/prepare_unitcell.h index 7af6d01e90..11bd94ba7b 100644 --- a/source/source_cell/module_neighbor/test/prepare_unitcell.h +++ b/source/source_cell/module_neighbor/test/prepare_unitcell.h @@ -98,7 +98,7 @@ class UcellTestPrepare } //lattice info ucell->lat0 = this->lat0; - ucell->lat0_angstrom = ucell->lat0 * 0.529177; + ucell->lat0_angstrom = ucell->lat0 * ModuleBase::BOHR_TO_A; ucell->tpiba = ModuleBase::TWO_PI/ucell->lat0; ucell->tpiba2 = ucell->tpiba * ucell->tpiba; ucell->latvec.e11 = this->latvec[0]; diff --git a/source/source_cell/module_symmetry/symm_rho.cpp b/source/source_cell/module_symmetry/symm_rho.cpp index 754279ffbc..28ae30d5b4 100644 --- a/source/source_cell/module_symmetry/symm_rho.cpp +++ b/source/source_cell/module_symmetry/symm_rho.cpp @@ -9,6 +9,10 @@ void Symmetry::rho_symmetry( double *rho, { ModuleBase::timer::tick("Symmetry","rho_symmetry"); + assert(nr1>0); + assert(nr2>0); + assert(nr3>0); + // allocate flag for each FFT grid. bool* symflag = new bool[nr1 * nr2 * nr3]; for (int i=0; i pseudo::pseudo() { @@ -33,7 +34,7 @@ void pseudo::check_betar() } if (min_flag) { - std::cout << "WARNING: some of potential function is set to zero cause of less than 1e-30.\n"; + std::cout << " WARNING: some of potential function is set to zero cause of less than 1e-30.\n"; } } diff --git a/source/source_cell/pseudo.h b/source/source_cell/pseudo.h index b654abcc8f..17519ddeba 100644 --- a/source/source_cell/pseudo.h +++ b/source/source_cell/pseudo.h @@ -1,8 +1,9 @@ #ifndef PSEUDO_H #define PSEUDO_H +#include #include "source_base/global_function.h" -#include "source_io/output.h" +#include "source_io/module_output/output.h" //----------------------------------------- // read in pseudopotentials diff --git a/source/source_cell/read_atom_species.cpp b/source/source_cell/read_atom_species.cpp index 54e131e6b3..4c78551c9b 100644 --- a/source/source_cell/read_atom_species.cpp +++ b/source/source_cell/read_atom_species.cpp @@ -3,9 +3,10 @@ #include "source_io/module_parameter/parameter.h" #include "source_base/tool_title.h" #ifdef __EXX -#include "source_pw/module_pwdft/global.h" #include "source_lcao/module_ri/serialization_cereal.h" #endif +#include "source_hamilt/module_xc/exx_info.h" // use GlobalC::exx_info + namespace unitcell { bool read_atom_species(std::ifstream& ifa, @@ -112,6 +113,16 @@ bool read_atom_species(std::ifstream& ifa, std::string ofile; ifa >> ofile; GlobalC::exx_info.info_ri.files_abfs.push_back(ofile); + GlobalC::exx_info.info_opt_abfs.files_abfs.push_back(ofile); + } + } + if( ModuleBase::GlobalFunc::SCAN_LINE_BEGIN(ifa, "ABFS_JLES_ORBITAL") ) + { + for(int i=0; i> ofile; + GlobalC::exx_info.info_opt_abfs.files_jles.push_back(ofile); } } } @@ -140,7 +151,7 @@ bool read_lattice_constant(std::ifstream& ifa, { ModuleBase::WARNING_QUIT("read_atom_species","Lattice constant <= 0.0"); } - lat0_angstrom = lat0 * 0.529177; + lat0_angstrom = lat0 * ModuleBase::BOHR_TO_A; ModuleBase::GlobalFunc::OUT(ofs_running,"Lattice constant (Bohr)",lat0); ModuleBase::GlobalFunc::OUT(ofs_running,"Lattice constant (Angstrom)",lat0_angstrom); lat.tpiba = ModuleBase::TWO_PI / lat0; @@ -151,7 +162,7 @@ bool read_lattice_constant(std::ifstream& ifa, // Read in latticies vector //=========================== - if(latName=="none") + if(latName=="user_defined_lattice") { // check the existence of keyword "LATTICE_PARAMETERS" if (ModuleBase::GlobalFunc::SCAN_LINE_BEGIN(ifa, diff --git a/source/source_cell/read_atoms.cpp b/source/source_cell/read_atoms.cpp index 5162e6134e..748be95c01 100644 --- a/source/source_cell/read_atoms.cpp +++ b/source/source_cell/read_atoms.cpp @@ -4,13 +4,13 @@ #include #include "unitcell.h" +#include "read_atoms_helper.h" #include "source_io/module_parameter/parameter.h" -#include "source_cell/print_cell.h" -#include "source_cell/read_stru.h" +#include "print_cell.h" +#include "read_stru.h" #include "source_estate/read_orb.h" #include "source_base/timer.h" #include "source_base/constants.h" -#include "source_pw/module_pwdft/global.h" #include "source_base/formatter.h" #include "source_base/mathzone.h" @@ -19,44 +19,26 @@ #endif bool unitcell::read_atom_positions(UnitCell& ucell, - std::ifstream &ifpos, - std::ofstream &ofs_running, + std::ifstream &ifpos, + std::ofstream &ofs_running, std::ofstream &ofs_warning) { ModuleBase::TITLE("UnitCell","read_atom_positions"); std::string& Coordinate = ucell.Coordinate; - const int ntype = ucell.ntype; + const int ntype = ucell.ntype; + const int nspin = PARAM.inp.nspin; + assert (nspin==1 || nspin==2 || nspin==4); if( ModuleBase::GlobalFunc::SCAN_LINE_BEGIN(ifpos, "ATOMIC_POSITIONS")) { ModuleBase::GlobalFunc::READ_VALUE(ifpos, Coordinate); - if(Coordinate != "Cartesian" - && Coordinate != "Direct" - && Coordinate != "Cartesian_angstrom" - && Coordinate != "Cartesian_au" - && Coordinate != "Cartesian_angstrom_center_xy" - && Coordinate != "Cartesian_angstrom_center_xz" - && Coordinate != "Cartesian_angstrom_center_yz" - && Coordinate != "Cartesian_angstrom_center_xyz" - ) + if (!unitcell::validate_coordinate_system(Coordinate, ofs_warning)) { - ModuleBase::WARNING("read_atom_position","Cartesian or Direct?"); - ofs_warning << " There are several options for you:" << std::endl; - ofs_warning << " Direct" << std::endl; - ofs_warning << " Cartesian_angstrom" << std::endl; - ofs_warning << " Cartesian_au" << std::endl; - ofs_warning << " Cartesian_angstrom_center_xy" << std::endl; - ofs_warning << " Cartesian_angstrom_center_xz" << std::endl; - ofs_warning << " Cartesian_angstrom_center_yz" << std::endl; - ofs_warning << " Cartesian_angstrom_center_xyz" << std::endl; - return false; // means something wrong + return false; } - ModuleBase::Vector3 v; - ModuleBase::Vector3 mv; - int na = 0; ucell.nat = 0; //====================================== @@ -66,115 +48,25 @@ bool unitcell::read_atom_positions(UnitCell& ucell, for (int it = 0;it < ntype; it++) { ofs_running << "\n READING ATOM TYPE " << it+1 << std::endl; - - //======================================= - // (1) read in atom label - // start magnetization - //======================================= - ModuleBase::GlobalFunc::READ_VALUE(ifpos, ucell.atoms[it].label); - if(ucell.atoms[it].label != ucell.atom_label[it]) + bool set_element_mag_zero = false; + if (!unitcell::read_atom_type_header(it, ucell, ifpos, ofs_running, + ofs_warning, set_element_mag_zero)) { - ofs_warning << " Label orders in ATOMIC_POSITIONS and ATOMIC_SPECIES sections do not match!" << std::endl; - ofs_warning << " Label read from ATOMIC_POSITIONS is " << ucell.atoms[it].label << std::endl; - ofs_warning << " Label from ATOMIC_SPECIES is " << ucell.atom_label[it] << std::endl; return false; } - ModuleBase::GlobalFunc::OUT(ofs_running, "Atom label", ucell.atoms[it].label); - - bool set_element_mag_zero = false; - ModuleBase::GlobalFunc::READ_VALUE(ifpos, ucell.magnet.start_mag[it]); - -#ifndef __SYMMETRY - //=========================================== - // (2) read in numerical orbital information - // int ucell.atoms[it].nwl - // int* ucell.atoms[it].l_nchi; - //=========================================== - - if ((PARAM.inp.basis_type == "lcao")||(PARAM.inp.basis_type == "lcao_in_pw")) - { - std::string orbital_file = PARAM.inp.orbital_dir + ucell.orbital_fn[it]; - elecstate::read_orb_file(it, orbital_file, ofs_running, &(ucell.atoms[it])); - } - else if(PARAM.inp.basis_type == "pw") - { - if ((PARAM.inp.init_wfc.substr(0, 3) == "nao") || PARAM.inp.onsite_radius > 0.0) - { - std::string orbital_file = PARAM.inp.orbital_dir + ucell.orbital_fn[it]; - elecstate::read_orb_file(it, orbital_file, ofs_running, &(ucell.atoms[it])); - } - else - { - ucell.atoms[it].nw = 0; - ucell.atoms[it].nwl = 2; - if ( ucell.lmaxmax != 2 ) - { - ucell.atoms[it].nwl = ucell.lmaxmax; - } - ucell.atoms[it].l_nchi.resize(ucell.atoms[it].nwl+1, 0); - for(int L=0; L 0) { - ModuleBase::WARNING("read_atom_positions", " atom number < 0."); - return false; - } - else if (na == 0) - { - std::cout << "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%" << std::endl; - std::cout << " Warning: atom number is 0 for atom type: " << ucell.atoms[it].label << std::endl; - std::cout << " If you are confident that this is not a mistake, please ignore this warning." << std::endl; - std::cout << "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%" << std::endl; - ofs_running << "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%" << std::endl; - ofs_running << " Warning: atom number is 0 for atom type: " << ucell.atoms[it].label << std::endl; - ofs_running << " If you are confident that this is not a mistake, please ignore this warning." << std::endl; - ofs_running << "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%" << std::endl; - } - else if (na > 0) - { - ucell.atoms[it].tau.resize(na, ModuleBase::Vector3(0,0,0)); - ucell.atoms[it].dis.resize(na, ModuleBase::Vector3(0,0,0)); - ucell.atoms[it].taud.resize(na, ModuleBase::Vector3(0,0,0)); - ucell.atoms[it].vel.resize(na, ModuleBase::Vector3(0,0,0)); - ucell.atoms[it].mbl.resize(na, ModuleBase::Vector3(0,0,0)); - ucell.atoms[it].mag.resize(na, 0); - ucell.atoms[it].angle1.resize(na, 0); - ucell.atoms[it].angle2.resize(na, 0); - ucell.atoms[it].m_loc_.resize(na, ModuleBase::Vector3(0,0,0)); - ucell.atoms[it].lambda.resize(na, ModuleBase::Vector3(0,0,0)); - ucell.atoms[it].constrain.resize(na, ModuleBase::Vector3(0,0,0)); - ucell.atoms[it].mass = ucell.atom_mass[it]; //mohan add 2011-11-07 + unitcell::allocate_atom_properties(ucell.atoms[it], na, ucell.atom_mass[it]); for (int ia = 0;ia < na; ia++) { // modify the reading of frozen ions and velocities -- Yuanbo Li 2021/8/20 + ModuleBase::Vector3 v; + ModuleBase::Vector3 mv; ifpos >> v.x >> v.y >> v.z; mv.x = true ; mv.y = true ; @@ -188,305 +80,27 @@ bool unitcell::read_atom_positions(UnitCell& ucell, ucell.atoms[it].lambda[ia].set(0,0,0); ucell.atoms[it].constrain[ia].set(0,0,0); - std::string tmpid; - tmpid = ifpos.get(); - - if( (int)tmpid[0] < 0 ) - { - std::cout << "read_atom_positions, mismatch in atom number for atom type: " - << ucell.atoms[it].label << std::endl; - exit(1); - } - bool input_vec_mag=false; bool input_angle_mag=false; - // read if catch goodbit before "\n" and "#" - while ( (tmpid != "\n") && (ifpos.good()) && (tmpid !="#") ) - { - tmpid = ifpos.get() ; - // old method of reading frozen ions - char tmp = (char)tmpid[0]; - if ( tmp >= 48 && tmp <= 57 ) - { - mv.x = std::stoi(tmpid); - ifpos >> mv.y >> mv.z ; - } - // new method of reading frozen ions and velocities - if ( tmp >= 'a' && tmp <='z') - { - ifpos.putback(tmp); - ifpos >> tmpid; - } - if ( tmpid == "m" ) - { - ifpos >> mv.x >> mv.y >> mv.z ; - } - else if ( tmpid == "v" ||tmpid == "vel" || tmpid == "velocity" ) - { - ifpos >> ucell.atoms[it].vel[ia].x >> ucell.atoms[it].vel[ia].y >> ucell.atoms[it].vel[ia].z; - } - else if ( tmpid == "mag" || tmpid == "magmom") - { - set_element_mag_zero = true; - double tmpamg=0; - ifpos >> tmpamg; - tmp=ifpos.get(); - while (tmp==' ') - { - tmp=ifpos.get(); - } - - if((tmp >= 48 && tmp <= 57) or tmp=='-') - { - ifpos.putback(tmp); - ifpos >> ucell.atoms[it].m_loc_[ia].y>>ucell.atoms[it].m_loc_[ia].z; - ucell.atoms[it].m_loc_[ia].x=tmpamg; - ucell.atoms[it].mag[ia]=sqrt(pow(ucell.atoms[it].m_loc_[ia].x,2) - +pow(ucell.atoms[it].m_loc_[ia].y,2) - +pow(ucell.atoms[it].m_loc_[ia].z,2)); - input_vec_mag=true; - - } - else - { - ifpos.putback(tmp); - ucell.atoms[it].mag[ia]=tmpamg; - } - } - else if ( tmpid == "angle1") - { - ifpos >> ucell.atoms[it].angle1[ia]; - ucell.atoms[it].angle1[ia]=ucell.atoms[it].angle1[ia]/180 *ModuleBase::PI; - input_angle_mag=true; - set_element_mag_zero = true; - } - else if ( tmpid == "angle2") - { - ifpos >> ucell.atoms[it].angle2[ia]; - ucell.atoms[it].angle2[ia]=ucell.atoms[it].angle2[ia]/180 *ModuleBase::PI; - input_angle_mag=true; - set_element_mag_zero = true; - } - else if ( tmpid == "lambda") - { - double tmplam=0; - ifpos >> tmplam; - tmp=ifpos.get(); - while (tmp==' ') - { - tmp=ifpos.get(); - } - if((tmp >= 48 && tmp <= 57) or tmp=='-') - { - ifpos.putback(tmp); - ifpos >> ucell.atoms[it].lambda[ia].y>>ucell.atoms[it].lambda[ia].z; - ucell.atoms[it].lambda[ia].x=tmplam; - } - else - { - ifpos.putback(tmp); - ucell.atoms[it].lambda[ia].z=tmplam; - } - ucell.atoms[it].lambda[ia].x /= ModuleBase::Ry_to_eV; - ucell.atoms[it].lambda[ia].y /= ModuleBase::Ry_to_eV; - ucell.atoms[it].lambda[ia].z /= ModuleBase::Ry_to_eV; - } - else if ( tmpid == "sc") - { - double tmplam=0; - ifpos >> tmplam; - tmp=ifpos.get(); - while (tmp==' ') - { - tmp=ifpos.get(); - } - if((tmp >= 48 && tmp <= 57) or tmp=='-') - { - ifpos.putback(tmp); - ifpos >> ucell.atoms[it].constrain[ia].y>>ucell.atoms[it].constrain[ia].z; - ucell.atoms[it].constrain[ia].x=tmplam; - } - else - { - ifpos.putback(tmp); - ucell.atoms[it].constrain[ia].z=tmplam; - } - } - } - // move to next line - while ( (tmpid != "\n") && (ifpos.good()) ) - { - tmpid = ifpos.get(); - } - std::string mags; - - // ---------------------------------------------------------------------------- - // recalcualte mag and m_loc_ from read in angle1, angle2 and mag or mx, my, mz - if(input_angle_mag) - {// angle1 or angle2 are given, calculate mx, my, mz from angle1 and angle2 and mag - ucell.atoms[it].m_loc_[ia].z = ucell.atoms[it].mag[ia] * - cos(ucell.atoms[it].angle1[ia]); - if(std::abs(sin(ucell.atoms[it].angle1[ia])) > 1e-10 ) - { - ucell.atoms[it].m_loc_[ia].x = ucell.atoms[it].mag[ia] * - sin(ucell.atoms[it].angle1[ia]) * cos(ucell.atoms[it].angle2[ia]); - ucell.atoms[it].m_loc_[ia].y = ucell.atoms[it].mag[ia] * - sin(ucell.atoms[it].angle1[ia]) * sin(ucell.atoms[it].angle2[ia]); - } - } - else if (input_vec_mag) - {// mx, my, mz are given, calculate angle1 and angle2 from mx, my, mz - double mxy=sqrt(pow(ucell.atoms[it].m_loc_[ia].x,2)+pow(ucell.atoms[it].m_loc_[ia].y,2)); - ucell.atoms[it].angle1[ia]=atan2(mxy,ucell.atoms[it].m_loc_[ia].z); - if(mxy>1e-8) - { - ucell.atoms[it].angle2[ia]=atan2(ucell.atoms[it].m_loc_[ia].y,ucell.atoms[it].m_loc_[ia].x); - } - } - else// only one mag is given, assume it is z + // Parse optional properties + if (!unitcell::parse_atom_properties(ifpos, ucell.atoms[it], ia, mv, + input_vec_mag, input_angle_mag, + set_element_mag_zero)) { - ucell.atoms[it].m_loc_[ia].x = 0; - ucell.atoms[it].m_loc_[ia].y = 0; - ucell.atoms[it].m_loc_[ia].z = ucell.atoms[it].mag[ia]; + return false; } - if(PARAM.inp.nspin==4) - { - if(!PARAM.inp.noncolin) - { - //collinear case with nspin = 4, only z component is used - ucell.atoms[it].m_loc_[ia].x = 0; - ucell.atoms[it].m_loc_[ia].y = 0; - } - //print only ia==0 && mag>0 to avoid too much output - //print when ia!=0 && mag[ia] != mag[0] to avoid too much output - // 'A || (!A && B)' is equivalent to 'A || B',so the following - // code is equivalent to 'ia==0 || (...)' - if(ia==0 || (ucell.atoms[it].m_loc_[ia].x != ucell.atoms[it].m_loc_[0].x - || ucell.atoms[it].m_loc_[ia].y != ucell.atoms[it].m_loc_[0].y - || ucell.atoms[it].m_loc_[ia].z != ucell.atoms[it].m_loc_[0].z)) - { - //use a stringstream to generate string: "concollinear magnetization of element it is:" - std::stringstream ss; - ss << "Magnetization for this type"; - if(ia!=0) - { - ss<<" (atom"<0 to avoid too much output - //print when ia!=0 && mag[ia] != mag[0] to avoid too much output - if(ia==0 || (ucell.atoms[it].mag[ia] != ucell.atoms[it].mag[0])) - { - //use a stringstream to generate string: "cocollinear magnetization of element it is:" - std::stringstream ss; - ss << "magnetization of element " << it+1; - if(ia!=0) - { - ss<<" (atom"< 1e-5) - { - autoset_mag = 0; - break; - } - } - } - if (autoset_mag) - { - if(PARAM.inp.nspin==4) - { - for (int it = 0;it < ntype; it++) - { - for (int ia = 0;ia < ucell.atoms[it].na; ia++) - { - ucell.atoms[it].m_loc_[ia].x = 1.0; - ucell.atoms[it].m_loc_[ia].y = 1.0; - ucell.atoms[it].m_loc_[ia].z = 1.0; - ucell.atoms[it].mag[ia] = sqrt(pow(ucell.atoms[it].m_loc_[ia].x,2) - +pow(ucell.atoms[it].m_loc_[ia].y,2) - +pow(ucell.atoms[it].m_loc_[ia].z,2)); - ModuleBase::GlobalFunc::OUT(ofs_running,"Autoset magnetism for this atom", 1.0, 1.0, 1.0); - } - } - } - else if(PARAM.inp.nspin==2) - { - for (int it = 0;it < ntype; it++) - { - for (int ia = 0;ia < ucell.atoms[it].na; ia++) - { - ucell.atoms[it].mag[ia] = 1.0; - ucell.atoms[it].m_loc_[ia].x = ucell.atoms[it].mag[ia]; - ModuleBase::GlobalFunc::OUT(ofs_running,"Autoset magnetism for this atom", 1.0); - } - } - } - } - // End Autoset magnetization + // Auto-set magnetization if needed + unitcell::autoset_magnetization(ucell, nspin, ofs_running); } // end scan_begin - //check if any atom can move in MD - if(!ucell.if_atoms_can_move() && PARAM.inp.calculation=="md" && PARAM.inp.esolver_type!="tddft") - { - ModuleBase::WARNING("read_atoms", "no atoms can move in MD simulations!"); - return false; - } - - ofs_running << std::endl; - ModuleBase::GlobalFunc::OUT(ofs_running,"TOTAL ATOM NUMBER",ucell.nat); - ofs_running << std::endl; - - if (ucell.nat == 0) - { - ModuleBase::WARNING("read_atom_positions","no atoms found in the system!"); - return false; - } - - // mohan add 2010-06-30 - unitcell::check_dtau(ucell.atoms,ucell.ntype, ucell.lat0, ucell.latvec); - - if (unitcell::check_tau(ucell.atoms, ucell.ntype, ucell.lat0)) - { - unitcell::print_tau(ucell.atoms,ucell.Coordinate,ucell.ntype,ucell.lat0,ofs_running); - return true; - } - return false; + // Final validation and output + return unitcell::finalize_atom_positions(ucell, ofs_running, ofs_warning); }//end read_atom_positions diff --git a/source/source_cell/read_atoms_helper.cpp b/source/source_cell/read_atoms_helper.cpp new file mode 100644 index 0000000000..4fc3dfe6cb --- /dev/null +++ b/source/source_cell/read_atoms_helper.cpp @@ -0,0 +1,596 @@ +#include "read_atoms_helper.h" +#include "source_io/module_parameter/parameter.h" +#include "source_base/global_function.h" +#include "source_base/constants.h" +#include "source_base/mathzone.h" +#include "read_stru.h" +#include "print_cell.h" +#include "source_estate/read_orb.h" +#include +#include +#include + +namespace { + // Magic number constants for character code checks + constexpr char DIGIT_START = '0'; // ASCII 48 + constexpr char DIGIT_END = '9'; // ASCII 57 + constexpr char LOWER_A = 'a'; + constexpr char LOWER_Z = 'z'; + constexpr char MINUS_SIGN = '-'; +} + +namespace unitcell { + +bool validate_coordinate_system(const std::string& Coordinate, + std::ofstream& ofs_warning) +{ + if(Coordinate != "Cartesian" + && Coordinate != "Direct" + && Coordinate != "Cartesian_angstrom" + && Coordinate != "Cartesian_au" + && Coordinate != "Cartesian_angstrom_center_xy" + && Coordinate != "Cartesian_angstrom_center_xz" + && Coordinate != "Cartesian_angstrom_center_yz" + && Coordinate != "Cartesian_angstrom_center_xyz" + ) + { + ModuleBase::WARNING("read_atom_position","Cartesian or Direct?"); + ofs_warning << " There are several options for you:" << std::endl; + ofs_warning << " Direct" << std::endl; + ofs_warning << " Cartesian_angstrom" << std::endl; + ofs_warning << " Cartesian_au" << std::endl; + ofs_warning << " Cartesian_angstrom_center_xy" << std::endl; + ofs_warning << " Cartesian_angstrom_center_xz" << std::endl; + ofs_warning << " Cartesian_angstrom_center_yz" << std::endl; + ofs_warning << " Cartesian_angstrom_center_xyz" << std::endl; + return false; + } + return true; +} + +void allocate_atom_properties(Atom& atom, int na, double mass) +{ + atom.tau.resize(na, ModuleBase::Vector3(0,0,0)); + atom.dis.resize(na, ModuleBase::Vector3(0,0,0)); + atom.taud.resize(na, ModuleBase::Vector3(0,0,0)); + atom.boundary_shift.resize(na, ModuleBase::Vector3(0,0,0)); + atom.vel.resize(na, ModuleBase::Vector3(0,0,0)); + atom.mbl.resize(na, ModuleBase::Vector3(0,0,0)); + atom.mag.resize(na, 0); + atom.angle1.resize(na, 0); + atom.angle2.resize(na, 0); + atom.m_loc_.resize(na, ModuleBase::Vector3(0,0,0)); + atom.lambda.resize(na, ModuleBase::Vector3(0,0,0)); + atom.constrain.resize(na, ModuleBase::Vector3(0,0,0)); + atom.mass = mass; +} + +void set_atom_movement_flags(Atom& atom, int ia, + const ModuleBase::Vector3& mv) +{ + if(!PARAM.inp.fixed_atoms) + { + atom.mbl[ia] = mv; + } + else + { + atom.mbl[ia] = 0.0; + atom.mbl[ia].print(); + } +} + +void autoset_magnetization(UnitCell& ucell, int nspin, + std::ofstream& ofs_running) +{ + const int ntype = ucell.ntype; + + // Check if any atom has non-zero magnetization + int autoset_mag = 1; + for (int it = 0; it < ntype; it++) + { + for (int ia = 0; ia < ucell.atoms[it].na; ia++) + { + if(std::abs(ucell.atoms[it].mag[ia]) > 1e-5) + { + autoset_mag = 0; + break; + } + } + } + + if (autoset_mag) + { + if(nspin==4) + { + for (int it = 0; it < ntype; it++) + { + for (int ia = 0; ia < ucell.atoms[it].na; ia++) + { + ucell.atoms[it].m_loc_[ia].x = 1.0; + ucell.atoms[it].m_loc_[ia].y = 1.0; + ucell.atoms[it].m_loc_[ia].z = 1.0; + ucell.atoms[it].mag[ia] = sqrt(pow(ucell.atoms[it].m_loc_[ia].x,2) + +pow(ucell.atoms[it].m_loc_[ia].y,2) + +pow(ucell.atoms[it].m_loc_[ia].z,2)); + ModuleBase::GlobalFunc::OUT(ofs_running,"Autoset magnetism for this atom", 1.0, 1.0, 1.0); + } + } + } + else if(nspin==2) + { + for (int it = 0; it < ntype; it++) + { + for (int ia = 0; ia < ucell.atoms[it].na; ia++) + { + ucell.atoms[it].mag[ia] = 1.0; + ucell.atoms[it].m_loc_[ia].x = ucell.atoms[it].mag[ia]; + ModuleBase::GlobalFunc::OUT(ofs_running,"Autoset magnetism for this atom", 1.0); + } + } + } + } +} + +bool finalize_atom_positions(UnitCell& ucell, + std::ofstream& ofs_running, + std::ofstream& ofs_warning) +{ + // Check if any atom can move in MD + if(!ucell.if_atoms_can_move() && PARAM.inp.calculation=="md" && PARAM.inp.esolver_type!="tddft") + { + ModuleBase::WARNING("read_atoms", "no atoms can move in MD simulations!"); + return false; + } + + ofs_running << std::endl; + ModuleBase::GlobalFunc::OUT(ofs_running,"TOTAL ATOM NUMBER",ucell.nat); + ofs_running << std::endl; + + if (ucell.nat == 0) + { + ModuleBase::WARNING("read_atom_positions","no atoms found in the system!"); + return false; + } + + // Check atom positions + unitcell::check_dtau(ucell.atoms, ucell.ntype, ucell.lat0, ucell.latvec); + + if (unitcell::check_tau(ucell.atoms, ucell.ntype, ucell.lat0)) + { + print_tau(ucell.atoms, ucell.Coordinate, ucell.ntype, ucell.lat0, ofs_running); + return true; + } + return false; +} + +ModuleBase::Vector3 calculate_lattice_center( + const ModuleBase::Matrix3& latvec, + const std::string& center_mode) +{ + ModuleBase::Vector3 latcenter(0.0, 0.0, 0.0); + + if (center_mode == "xy" || center_mode == "xyz") + { + latcenter.x = (latvec.e11 + latvec.e21 + latvec.e31) / 2.0; + latcenter.y = (latvec.e12 + latvec.e22 + latvec.e32) / 2.0; + } + + if (center_mode == "xz" || center_mode == "xyz") + { + latcenter.x = (latvec.e11 + latvec.e21 + latvec.e31) / 2.0; + latcenter.z = (latvec.e13 + latvec.e23 + latvec.e33) / 2.0; + } + + if (center_mode == "yz" || center_mode == "xyz") + { + latcenter.y = (latvec.e12 + latvec.e22 + latvec.e32) / 2.0; + latcenter.z = (latvec.e13 + latvec.e23 + latvec.e33) / 2.0; + } + + return latcenter; +} + +void transform_atom_coordinates(Atom& atom, int ia, + const std::string& Coordinate, + const ModuleBase::Vector3& v, + const ModuleBase::Matrix3& latvec, + double lat0, + ModuleBase::Vector3& latcenter) +{ + if(Coordinate=="Direct") + { + // change v from direct to cartesian, + // the unit is GlobalC::sf.ucell.lat0 + atom.taud[ia] = v; + atom.tau[ia] = v * latvec; + } + else if(Coordinate=="Cartesian") + { + atom.tau[ia] = v; // in unit ucell.lat0 + } + else if(Coordinate=="Cartesian_angstrom") + { + atom.tau[ia] = v / ModuleBase::BOHR_TO_A / lat0; + } + else if(Coordinate=="Cartesian_angstrom_center_xy") + { + latcenter = calculate_lattice_center(latvec, "xy"); + atom.tau[ia] = v / ModuleBase::BOHR_TO_A / lat0 + latcenter; + } + else if(Coordinate=="Cartesian_angstrom_center_xz") + { + latcenter = calculate_lattice_center(latvec, "xz"); + atom.tau[ia] = v / ModuleBase::BOHR_TO_A / lat0 + latcenter; + } + else if(Coordinate=="Cartesian_angstrom_center_yz") + { + latcenter = calculate_lattice_center(latvec, "yz"); + atom.tau[ia] = v / ModuleBase::BOHR_TO_A / lat0 + latcenter; + } + else if(Coordinate=="Cartesian_angstrom_center_xyz") + { + latcenter = calculate_lattice_center(latvec, "xyz"); + atom.tau[ia] = v / ModuleBase::BOHR_TO_A / lat0 + latcenter; + } + else if(Coordinate=="Cartesian_au") + { + atom.tau[ia] = v / lat0; + } + + // Convert to direct coordinates if using Cartesian + if(Coordinate=="Cartesian" || + Coordinate=="Cartesian_angstrom" || + Coordinate=="Cartesian_angstrom_center_xy" || + Coordinate=="Cartesian_angstrom_center_xz" || + Coordinate=="Cartesian_angstrom_center_yz" || + Coordinate=="Cartesian_angstrom_center_xyz" || + Coordinate=="Cartesian_au") + { + double dx=0.0; + double dy=0.0; + double dz=0.0; + ModuleBase::Mathzone::Cartesian_to_Direct(atom.tau[ia].x, + atom.tau[ia].y, + atom.tau[ia].z, + latvec.e11, latvec.e12, latvec.e13, + latvec.e21, latvec.e22, latvec.e23, + latvec.e31, latvec.e32, latvec.e33, + dx,dy,dz); + + atom.taud[ia].x = dx; + atom.taud[ia].y = dy; + atom.taud[ia].z = dz; + } +} + +void process_magnetization(Atom& atom, int it, int ia, + int nspin, bool input_vec_mag, + bool input_angle_mag, + std::ofstream& ofs_running) +{ + // Recalculate mag and m_loc_ from read in angle1, angle2 and mag or mx, my, mz + if(input_angle_mag) + { + // angle1 or angle2 are given, calculate mx, my, mz from angle1 and angle2 and mag + atom.m_loc_[ia].z = atom.mag[ia] * cos(atom.angle1[ia]); + if(std::abs(sin(atom.angle1[ia])) > 1e-10) + { + atom.m_loc_[ia].x = atom.mag[ia] * + sin(atom.angle1[ia]) * cos(atom.angle2[ia]); + atom.m_loc_[ia].y = atom.mag[ia] * + sin(atom.angle1[ia]) * sin(atom.angle2[ia]); + } + } + else if (input_vec_mag) + { + // mx, my, mz are given, calculate angle1 and angle2 from mx, my, mz + double mxy=sqrt(pow(atom.m_loc_[ia].x,2)+pow(atom.m_loc_[ia].y,2)); + atom.angle1[ia]=atan2(mxy,atom.m_loc_[ia].z); + if(mxy>1e-8) + { + atom.angle2[ia]=atan2(atom.m_loc_[ia].y,atom.m_loc_[ia].x); + } + } + else + { + // only one mag is given, assume it is z + atom.m_loc_[ia].x = 0; + atom.m_loc_[ia].y = 0; + atom.m_loc_[ia].z = atom.mag[ia]; + } + + if(nspin==4) + { + if(!PARAM.inp.noncolin) + { + // collinear case with nspin = 4, only z component is used + atom.m_loc_[ia].x = 0; + atom.m_loc_[ia].y = 0; + } + // print only ia==0 && mag>0 to avoid too much output + // print when ia!=0 && mag[ia] != mag[0] to avoid too much output + if(ia==0 || (atom.m_loc_[ia].x != atom.m_loc_[0].x + || atom.m_loc_[ia].y != atom.m_loc_[0].y + || atom.m_loc_[ia].z != atom.m_loc_[0].z)) + { + std::stringstream ss; + ss << "Magnetization for this type"; + if(ia!=0) + { + ss<<" (atom"<0 to avoid too much output + // print when ia!=0 && mag[ia] != mag[0] to avoid too much output + if(ia==0 || (atom.mag[ia] != atom.mag[0])) + { + std::stringstream ss; + ss << "magnetization of element " << it+1; + if(ia!=0) + { + ss<<" (atom"<& mv, + bool& input_vec_mag, + bool& input_angle_mag, + bool& set_element_mag_zero) +{ + std::string tmpid; + tmpid = ifpos.get(); + + if( (int)tmpid[0] < 0 ) + { + std::cout << "read_atom_positions, mismatch in atom number for atom type: " + << atom.label << std::endl; + exit(1); + } + + // read if catch goodbit before "\n" and "#" + while ( (tmpid != "\n") && (ifpos.good()) && (tmpid !="#") ) + { + tmpid = ifpos.get(); + // old method of reading frozen ions + char tmp = (char)tmpid[0]; + if ( tmp >= DIGIT_START && tmp <= DIGIT_END ) + { + mv.x = std::stoi(tmpid); + ifpos >> mv.y >> mv.z; + } + // new method of reading frozen ions and velocities + if ( tmp >= LOWER_A && tmp <= LOWER_Z) + { + ifpos.putback(tmp); + ifpos >> tmpid; + } + if ( tmpid == "m" ) + { + ifpos >> mv.x >> mv.y >> mv.z; + } + else if ( tmpid == "v" ||tmpid == "vel" || tmpid == "velocity" ) + { + ifpos >> atom.vel[ia].x >> atom.vel[ia].y >> atom.vel[ia].z; + } + else if ( tmpid == "mag" || tmpid == "magmom") + { + set_element_mag_zero = true; + double tmpamg=0; + ifpos >> tmpamg; + tmp=ifpos.get(); + while (tmp==' ') + { + tmp=ifpos.get(); + } + + if((tmp >= DIGIT_START && tmp <= DIGIT_END) or tmp==MINUS_SIGN) + { + ifpos.putback(tmp); + ifpos >> atom.m_loc_[ia].y>>atom.m_loc_[ia].z; + atom.m_loc_[ia].x=tmpamg; + atom.mag[ia]=sqrt(pow(atom.m_loc_[ia].x,2) + +pow(atom.m_loc_[ia].y,2) + +pow(atom.m_loc_[ia].z,2)); + input_vec_mag=true; + + } + else + { + ifpos.putback(tmp); + atom.mag[ia]=tmpamg; + } + } + else if ( tmpid == "angle1") + { + ifpos >> atom.angle1[ia]; + atom.angle1[ia]=atom.angle1[ia]/180 *ModuleBase::PI; + input_angle_mag=true; + set_element_mag_zero = true; + } + else if ( tmpid == "angle2") + { + ifpos >> atom.angle2[ia]; + atom.angle2[ia]=atom.angle2[ia]/180 *ModuleBase::PI; + input_angle_mag=true; + set_element_mag_zero = true; + } + else if ( tmpid == "lambda") + { + double tmplam=0; + ifpos >> tmplam; + tmp=ifpos.get(); + while (tmp==' ') + { + tmp=ifpos.get(); + } + if((tmp >= DIGIT_START && tmp <= DIGIT_END) or tmp==MINUS_SIGN) + { + ifpos.putback(tmp); + ifpos >> atom.lambda[ia].y>>atom.lambda[ia].z; + atom.lambda[ia].x=tmplam; + } + else + { + ifpos.putback(tmp); + atom.lambda[ia].z=tmplam; + } + atom.lambda[ia].x /= ModuleBase::Ry_to_eV; + atom.lambda[ia].y /= ModuleBase::Ry_to_eV; + atom.lambda[ia].z /= ModuleBase::Ry_to_eV; + } + else if ( tmpid == "sc") + { + double tmplam=0; + ifpos >> tmplam; + tmp=ifpos.get(); + while (tmp==' ') + { + tmp=ifpos.get(); + } + if((tmp >= DIGIT_START && tmp <= DIGIT_END) or tmp==MINUS_SIGN) + { + ifpos.putback(tmp); + ifpos >> atom.constrain[ia].y>>atom.constrain[ia].z; + atom.constrain[ia].x=tmplam; + } + else + { + ifpos.putback(tmp); + atom.constrain[ia].z=tmplam; + } + } + } + // move to next line + while ( (tmpid != "\n") && (ifpos.good()) ) + { + tmpid = ifpos.get(); + } + + return true; +} + +bool read_atom_type_header(int it, UnitCell& ucell, + std::ifstream& ifpos, + std::ofstream& ofs_running, + std::ofstream& ofs_warning, + bool& set_element_mag_zero) +{ + //======================================= + // (1) read in atom label + // start magnetization + //======================================= + ModuleBase::GlobalFunc::READ_VALUE(ifpos, ucell.atoms[it].label); + + if(ucell.atoms[it].label != ucell.atom_label[it]) + { + ofs_warning << " Label orders in ATOMIC_POSITIONS and ATOMIC_SPECIES sections do not match!" << std::endl; + ofs_warning << " Label read from ATOMIC_POSITIONS is " << ucell.atoms[it].label << std::endl; + ofs_warning << " Label from ATOMIC_SPECIES is " << ucell.atom_label[it] << std::endl; + return false; + } + ModuleBase::GlobalFunc::OUT(ofs_running, "Atom label", ucell.atoms[it].label); + + set_element_mag_zero = false; + ModuleBase::GlobalFunc::READ_VALUE(ifpos, ucell.magnet.start_mag[it]); + +#ifndef __SYMMETRY + //=========================================== + // (2) read in numerical orbital information + // int ucell.atoms[it].nwl + // int* ucell.atoms[it].l_nchi; + //=========================================== + + if ((PARAM.inp.basis_type == "lcao")||(PARAM.inp.basis_type == "lcao_in_pw")) + { + std::string orbital_file = PARAM.inp.orbital_dir + ucell.orbital_fn[it]; + bool normal = elecstate::read_orb_file(it, orbital_file, ofs_running, &(ucell.atoms[it])); + if(!normal) + { + return false; + } + } + else if(PARAM.inp.basis_type == "pw") + { + if ((PARAM.inp.init_wfc.substr(0, 3) == "nao") || PARAM.inp.onsite_radius > 0.0) + { + std::string orbital_file = PARAM.inp.orbital_dir + ucell.orbital_fn[it]; + bool normal = elecstate::read_orb_file(it, orbital_file, ofs_running, &(ucell.atoms[it])); + if(!normal) + { + return false; + } + } + else + { + ucell.atoms[it].nw = 0; + ucell.atoms[it].nwl = 2; + if ( ucell.lmaxmax != 2 ) + { + ucell.atoms[it].nwl = ucell.lmaxmax; + } + ucell.atoms[it].l_nchi.resize(ucell.atoms[it].nwl+1, 0); + for(int L=0; L +#include +#include "unitcell.h" +#include "source_base/vector3.h" +#include "source_base/matrix3.h" + +namespace unitcell { + +/** + * @brief Validate coordinate system type + * @param Coordinate The coordinate system string to validate + * @param ofs_warning Output stream for warnings + * @return true if valid, false otherwise + */ +bool validate_coordinate_system(const std::string& Coordinate, + std::ofstream& ofs_warning); + +/** + * @brief Allocate and initialize atom property vectors + * @param atom The atom object to allocate properties for + * @param na Number of atoms + * @param mass Atomic mass + */ +void allocate_atom_properties(Atom& atom, int na, double mass); + +/** + * @brief Set atom movement constraints based on fixed_atoms parameter + * @param atom The atom object + * @param ia Atom index + * @param mv Movement vector (1=movable, 0=fixed) + */ +void set_atom_movement_flags(Atom& atom, int ia, + const ModuleBase::Vector3& mv); + +/** + * @brief Set default magnetization if not explicitly specified + * @param ucell Unit cell object + * @param nspin Number of spin components + * @param ofs_running Output stream for running information + */ +void autoset_magnetization(UnitCell& ucell, int nspin, + std::ofstream& ofs_running); + +/** + * @brief Perform final validation and output + * @param ucell Unit cell object + * @param ofs_running Output stream for running information + * @param ofs_warning Output stream for warnings + * @return true if validation passes, false otherwise + */ +bool finalize_atom_positions(UnitCell& ucell, + std::ofstream& ofs_running, + std::ofstream& ofs_warning); + +/** + * @brief Calculate lattice center for different centering modes + * @param latvec Lattice vectors + * @param center_mode Centering mode: "xy", "xz", "yz", or "xyz" + * @return Lattice center coordinates + */ +ModuleBase::Vector3 calculate_lattice_center( + const ModuleBase::Matrix3& latvec, + const std::string& center_mode); + +/** + * @brief Convert between different coordinate systems + * @param atom The atom object + * @param ia Atom index + * @param Coordinate Coordinate system type + * @param v Input position vector + * @param latvec Lattice vectors + * @param lat0 Lattice constant + * @param latcenter Lattice center (output parameter) + */ +void transform_atom_coordinates(Atom& atom, int ia, + const std::string& Coordinate, + const ModuleBase::Vector3& v, + const ModuleBase::Matrix3& latvec, + double lat0, + ModuleBase::Vector3& latcenter); + +/** + * @brief Convert between magnetization representations and output + * @param atom The atom object + * @param it Atom type index + * @param ia Atom index + * @param nspin Number of spin components + * @param input_vec_mag Whether vector magnetization was input + * @param input_angle_mag Whether angle magnetization was input + * @param ofs_running Output stream for running information + */ +void process_magnetization(Atom& atom, int it, int ia, + int nspin, bool input_vec_mag, + bool input_angle_mag, + std::ofstream& ofs_running); + +/** + * @brief Parse optional atom properties (mag, angle1, angle2, lambda, sc, m, v) + * @param ifpos Input file stream + * @param atom The atom object + * @param ia Atom index + * @param mv Movement vector (output parameter) + * @param input_vec_mag Whether vector magnetization was input (output parameter) + * @param input_angle_mag Whether angle magnetization was input (output parameter) + * @param set_element_mag_zero Whether to reset element magnetization (output parameter) + * @return true if parsing succeeds, false otherwise + */ +bool parse_atom_properties(std::ifstream& ifpos, + Atom& atom, int ia, + ModuleBase::Vector3& mv, + bool& input_vec_mag, + bool& input_angle_mag, + bool& set_element_mag_zero); + +/** + * @brief Read atom type metadata (label, magnetization, orbital info, atom count) + * @param it Atom type index + * @param ucell Unit cell object + * @param ifpos Input file stream + * @param ofs_running Output stream for running information + * @param ofs_warning Output stream for warnings + * @param set_element_mag_zero Whether to reset element magnetization (output parameter) + * @return true if reading succeeds, false otherwise + */ +bool read_atom_type_header(int it, UnitCell& ucell, + std::ifstream& ifpos, + std::ofstream& ofs_running, + std::ofstream& ofs_warning, + bool& set_element_mag_zero); + +} // namespace unitcell + +#endif // READ_ATOMS_HELPER_H diff --git a/source/source_cell/read_pp_blps.cpp b/source/source_cell/read_pp_blps.cpp index 682f39dfdc..5370dbc41b 100644 --- a/source/source_cell/read_pp_blps.cpp +++ b/source/source_cell/read_pp_blps.cpp @@ -24,8 +24,8 @@ int Pseudopot_upf::read_pseudo_blps(std::ifstream &ifs, Atom_pseudo& pp) // if(!SCAN_BEGIN(ifs,"BLPS")) WARNING_QUIT("read_pp_blps","Find no PP_HEADER"); ifs.ignore(300, '\n'); - double zatom; - double zion; + double zatom = 0.0; + double zion = 0.0; ifs >> zatom >> zion; pp.zv = zion; ifs.ignore(300, '\n'); diff --git a/source/source_cell/read_pp_upf100.cpp b/source/source_cell/read_pp_upf100.cpp index 0e91dffccc..9327ebe712 100644 --- a/source/source_cell/read_pp_upf100.cpp +++ b/source/source_cell/read_pp_upf100.cpp @@ -326,7 +326,7 @@ void Pseudopot_upf::read_pseudo_nl(std::ifstream& ifs, Atom_pseudo& pp) ModuleBase::GlobalFunc::READ_VALUE(ifs, this->nd); // nl_4 for (int i = 0; i < this->nd; i++) { - double swap; + double swap = 0.0; ifs >> nb >> mb >> swap; nb--; mb--; diff --git a/source/source_cell/read_pp_upf201.cpp b/source/source_cell/read_pp_upf201.cpp index e0941664bf..d02bb8e6d5 100644 --- a/source/source_cell/read_pp_upf201.cpp +++ b/source/source_cell/read_pp_upf201.cpp @@ -807,7 +807,7 @@ void Pseudopot_upf::read_pseudo_upf201_fullwfc(std::ifstream& ifs) std::string word; std::string name[50]; std::string val[50]; - int nparameter; + int nparameter = 0; this->aewfc.create(this->nbeta, this->mesh); this->pswfc.create(this->nbeta, this->mesh); ModuleBase::GlobalFunc::SCAN_BEGIN(ifs, " +#include +#include + +SepPot::SepPot() +{ +} + +SepPot::~SepPot() +{ + delete[] r; + r = nullptr; + delete[] rv; + rv = nullptr; +} + +int SepPot::read_sep(std::ifstream& ifs) +{ + std::string line; + while (std::getline(ifs, line)) + { + std::istringstream iss(line); + std::string key; + iss >> key; + + if (key == "Sep.Element") + { + iss >> label; + } + else if (key == "Sep.XcType") + { + iss >> xc_type; + } + else if (key == "Sep.Orbital") + { + iss >> orbital; + } + else if (key == "Sep.Points") + { + iss >> mesh; + delete[] r; + r = new double[mesh]; + delete[] rv; + rv = new double[mesh]; + } + else if (key == "Sep.StripAmount") + { + iss >> strip_elec; + } + else if (key == "> r_val >> rv_val) + { + r[idx] = r_val; + rv[idx] = rv_val; + idx++; + } + } + break; + } + } + return 0; +} + +void SepPot::print_sep_info(std::ofstream& ofs) +{ + ofs << "\n sep_vl:"; + ofs << "\n sep_info:"; + ofs << "\n label " << label; + ofs << "\n xc " << xc_type; + ofs << "\n orbital " << orbital; + ofs << "\n strip electron" << strip_elec; +} + +void SepPot::print_sep_vsep(std::ofstream& ofs) +{ + ofs << "\n mesh " << mesh; + output::printr1_d(ofs, " r : ", r, mesh); + output::printr1_d(ofs, " vsep : ", rv, mesh); + ofs << "\n -----------------------------"; +} + +#ifdef __MPI + +void SepPot::bcast_sep() +{ + ModuleBase::TITLE("SepPot", "bcast_sep"); + Parallel_Common::bcast_bool(is_enable); + Parallel_Common::bcast_double(r_in); + Parallel_Common::bcast_double(r_out); + Parallel_Common::bcast_double(r_power); + Parallel_Common::bcast_double(enhence_a); + Parallel_Common::bcast_string(label); + Parallel_Common::bcast_string(xc_type); + Parallel_Common::bcast_string(orbital); + Parallel_Common::bcast_int(strip_elec); + Parallel_Common::bcast_int(mesh); + + if (GlobalV::MY_RANK != 0 && mesh > 0) + { + r = new double[mesh]; + rv = new double[mesh]; + } + + Parallel_Common::bcast_double(r, mesh); + Parallel_Common::bcast_double(rv, mesh); + + return; +} +#endif // __MPI diff --git a/source/source_cell/sep.h b/source/source_cell/sep.h new file mode 100644 index 0000000000..20c95b528c --- /dev/null +++ b/source/source_cell/sep.h @@ -0,0 +1,39 @@ +#ifndef SEP_H +#define SEP_H + +#include +#include + +/** + * Sep Potential for DFT-1/2 etc. + * + * Sep Potential + */ +class SepPot +{ + public: + SepPot(); + ~SepPot(); + + bool is_enable = false; + double r_in = 0.0; /**< cut-off radius inner */ + double r_out = 0.0; /**< cut-off radius outter */ + double r_power = 20.0; /**< shell function exp factor */ + double enhence_a = 1.0; /**< scale sep potential */ + std::string label; /**< element nameof sep */ + std::string xc_type; /**< Exch-Corr type */ + std::string orbital; /** atomic angular moment s,p,d,f */ + int mesh = 0; /**< number of points in radial mesh */ + int strip_elec = 0; /**< strip electron amount 1->0.01 50->0.5 */ + double* r = nullptr; /**< ridial mesh */ + double* rv = nullptr; /**< sep potential, but rV, unit: Ry */ + + int read_sep(std::ifstream& is); + void print_sep_info(std::ofstream& ofs); + void print_sep_vsep(std::ofstream& ofs); +#ifdef __MPI + void bcast_sep(); +#endif /* ifdef __MPI */ +}; + +#endif /* ifndef SEP_H */ diff --git a/source/source_cell/sep_cell.cpp b/source/source_cell/sep_cell.cpp new file mode 100644 index 0000000000..e7ec5f1baf --- /dev/null +++ b/source/source_cell/sep_cell.cpp @@ -0,0 +1,127 @@ +#include "sep_cell.h" + +#include "source_base/global_function.h" +#include "source_base/global_variable.h" +#include "source_base/parallel_common.h" +#include "source_base/tool_title.h" + +#include +#include +#include + +// namespace GlobalC +// { +// Sep_Cell sep_cell; +// } + +Sep_Cell::Sep_Cell() noexcept : ntype(0), omega(0.0), tpiba2(0.0) +{ +} + +Sep_Cell::~Sep_Cell() noexcept = default; + +void Sep_Cell::init(const int ntype_in) +{ + this->ntype = ntype_in; + this->seps.resize(ntype); + this->sep_enable.resize(ntype); + std::fill(this->sep_enable.begin(), this->sep_enable.end(), false); +} + +void Sep_Cell::set_omega(const double omega_in, const double tpiba2_in) +{ + this->omega = omega_in; + this->tpiba2 = tpiba2_in; +} + +/** + * read sep potential files + * + * need to add following lines in STRU file, and order of elements must match ATOMIC_SPECIES. + * SEP_FILES + * symbol is_enable r_in r_out r_power enhence_a + * + * example + * Li 0 + * F 1 F_pbe_50.sep 0.0 2.0 20.0 1.0 + */ +int Sep_Cell::read_sep_potentials(std::ifstream& ifpos, + const std::string& pp_dir, + std::ofstream& ofs_running, + std::vector& ucell_atom_label) +{ + ModuleBase::TITLE("Sep_Cell", "read_sep_potentials"); + + if (!ModuleBase::GlobalFunc::SCAN_BEGIN(ifpos, "SEP_FILES")) + { + GlobalV::ofs_running << "Cannot find SEP_FILES section in STRU" << std::endl; + return false; + } + + ifpos.ignore(300, '\n'); + + for (int i = 0; i < this->ntype; ++i) + { + std::string one_line, atom_label; + std::getline(ifpos, one_line); + std::stringstream ss(one_line); + + // read the label of the atom + bool enable_tmp; + ss >> atom_label >> enable_tmp; + + // Validate atom label + if (atom_label != ucell_atom_label[i]) + { + GlobalV::ofs_running << "Sep potential and atom order do not match. " + << "Expected: " << ucell_atom_label[i] << ", Got: " << atom_label << std::endl; + return false; + } + this->sep_enable[i] = enable_tmp; + if (this->sep_enable[i]) + { + this->seps[i].is_enable = this->sep_enable[i]; + std::string sep_filename; + ss >> sep_filename; + ss >> this->seps[i].r_in >> this->seps[i].r_out >> this->seps[i].r_power >> this->seps[i].enhence_a; + std::string sep_addr = pp_dir + sep_filename; + std::ifstream sep_ifs(sep_addr.c_str(), std::ios::in); + if (!sep_ifs) + { + GlobalV::ofs_running << "Cannot find sep potential file: " << sep_addr << std::endl; + return false; + } + this->seps[i].read_sep(sep_ifs); + } + } + + return true; +} + +#ifdef __MPI +void Sep_Cell::bcast_sep_cell() +{ + ModuleBase::TITLE("Sep_Cell", "bcast_sep_cell"); + Parallel_Common::bcast_int(this->ntype); + + if (GlobalV::MY_RANK != 0) + { + this->seps.resize(this->ntype); + this->sep_enable.resize(this->ntype); + } + for (int i = 0; i < this->ntype; ++i) + { + bool tmp = false; + if (GlobalV::MY_RANK == 0) + { + tmp = this->sep_enable[i]; + } + Parallel_Common::bcast_bool(tmp); + if (GlobalV::MY_RANK != 0) + { + this->sep_enable[i] = tmp; + } + this->seps[i].bcast_sep(); + } +} +#endif // __MPI diff --git a/source/source_cell/sep_cell.h b/source/source_cell/sep_cell.h new file mode 100644 index 0000000000..03cddca2ea --- /dev/null +++ b/source/source_cell/sep_cell.h @@ -0,0 +1,74 @@ +// The Sep_Cell class is container for Sep potential. + +#ifndef SEP_CELL +#define SEP_CELL + +#include "source_cell/sep.h" + +#include +#include +#include + +class Sep_Cell +{ + public: + Sep_Cell() noexcept; + ~Sep_Cell() noexcept; + + // Sets the number of atom types and initializes internal vectors + void init(const int ntype_in); + + void set_omega(const double omega_in, const double tpiba2_in); + + // Reads self potentials from STRU file and xx.sep files + // Returns true if successful, false otherwise + int read_sep_potentials(std::ifstream& ifpos, + const std::string& pp_dir, + std::ofstream& ofs_running, + std::vector& ucell_atom_label); + +#ifdef __MPI + // Broadcasts the Sep_Cell object to all processes + void bcast_sep_cell(); +#endif // __MPI + + // Getter methods + const std::vector& get_seps() const + { + return seps; + } + int get_ntype() const + { + return ntype; + } + const std::vector& get_sep_enable() const + { + return sep_enable; + } + + double get_omega() const + { + return omega; + } + + double get_tpiba2() const + { + return tpiba2; + } + + private: + std::vector seps; // Self potentials for each atom type + int ntype; // number of atom types + std::vector sep_enable; // Whether self potential is enabled for each atom type + + // unit cell data for VSep + double omega; // unit cell Volume + double tpiba2; // tpiba ^ 2 +}; + +// namespace GlobalC +// { +// extern Sep_Cell sep_cell; +// } + +#endif // SEP_CEll diff --git a/source/source_cell/setup_nonlocal.cpp b/source/source_cell/setup_nonlocal.cpp index ba3f915315..96bf898864 100644 --- a/source/source_cell/setup_nonlocal.cpp +++ b/source/source_cell/setup_nonlocal.cpp @@ -4,7 +4,6 @@ #include "source_io/module_parameter/parameter.h" #ifdef __LCAO -//#include "../source_pw/module_pwdft/global.h" #include "source_pw/module_pwdft/soc.h" // mohan add 2013-08-02 // In order to get rid of the read in file .NONLOCAL. @@ -313,7 +312,7 @@ void InfoNonlocal::Read_NonLocal(const int& it, { if (ModuleBase::GlobalFunc::SCAN_BEGIN(ifs, "", false)) { - int iproj; + int iproj = 0; ModuleBase::GlobalFunc::READ_VALUE(ifs, iproj); if (iproj != p1) { diff --git a/source/source_cell/test/CMakeLists.txt b/source/source_cell/test/CMakeLists.txt index 7d1a2ab8c2..c6eab25d01 100644 --- a/source/source_cell/test/CMakeLists.txt +++ b/source/source_cell/test/CMakeLists.txt @@ -10,6 +10,8 @@ install(FILES bcast_atom_spec_test.sh DESTINATION ${CMAKE_CURRENT_BINARY_DIR}) install(FILES parallel_kpoints_test.sh DESTINATION ${CMAKE_CURRENT_BINARY_DIR}) install(FILES klist_test_para.sh DESTINATION ${CMAKE_CURRENT_BINARY_DIR}) install(FILES unitcell_test_parallel.sh DESTINATION ${CMAKE_CURRENT_BINARY_DIR}) +install(FILES bcast_read_sep_test.sh DESTINATION ${CMAKE_CURRENT_BINARY_DIR}) +install(FILES bcast_sep_cell_test.sh DESTINATION ${CMAKE_CURRENT_BINARY_DIR}) list(APPEND cell_simple_srcs ../unitcell.cpp @@ -19,6 +21,7 @@ list(APPEND cell_simple_srcs ../read_stru.cpp ../read_atom_species.cpp ../read_atoms.cpp + ../read_atoms_helper.cpp ../atom_spec.cpp ../atom_pseudo.cpp ../pseudo.cpp @@ -33,6 +36,8 @@ list(APPEND cell_simple_srcs ../../source_estate/cal_wfc.cpp ../../source_estate/cal_nelec_nband.cpp ../../source_estate/read_orb.cpp + ../sep.cpp + ../sep_cell.cpp ) add_library(cell_info OBJECT ${cell_simple_srcs}) @@ -40,41 +45,41 @@ add_library(cell_info OBJECT ${cell_simple_srcs}) AddTest( TARGET MODULE_CELL_read_pp LIBS parameter ${math_libs} base device - SOURCES read_pp_test.cpp ../atom_pseudo.cpp ../pseudo.cpp ../read_pp.cpp ../read_pp_complete.cpp ../read_pp_upf201.cpp ../read_pp_upf100.cpp ../read_pp_vwr.cpp ../read_pp_blps.cpp - ../../source_io/output.cpp + SOURCES read_pp_test.cpp ../atom_pseudo.cpp ../pseudo.cpp ../read_pp.cpp ../read_pp_complete.cpp ../read_pp_upf201.cpp ../read_pp_upf100.cpp ../read_pp_vwr.cpp ../read_pp_blps.cpp + ../../source_io/module_output/output.cpp ) AddTest( TARGET MODULE_CELL_pseudo_nc LIBS parameter ${math_libs} base device - SOURCES pseudo_nc_test.cpp ../pseudo.cpp ../atom_pseudo.cpp ../read_pp.cpp ../read_pp_complete.cpp ../read_pp_upf201.cpp ../read_pp_upf100.cpp ../read_pp_vwr.cpp - ../read_pp_blps.cpp ../../source_io/output.cpp + SOURCES pseudo_nc_test.cpp ../pseudo.cpp ../atom_pseudo.cpp ../read_pp.cpp ../read_pp_complete.cpp ../read_pp_upf201.cpp ../read_pp_upf100.cpp ../read_pp_vwr.cpp + ../read_pp_blps.cpp ../../source_io/module_output/output.cpp ) AddTest( TARGET MODULE_CELL_atom_pseudo LIBS parameter ${math_libs} base device - SOURCES atom_pseudo_test.cpp ../atom_pseudo.cpp ../pseudo.cpp ../read_pp.cpp ../read_pp_complete.cpp ../read_pp_upf201.cpp ../read_pp_upf100.cpp - ../read_pp_vwr.cpp ../read_pp_blps.cpp ../../source_io/output.cpp + SOURCES atom_pseudo_test.cpp ../atom_pseudo.cpp ../pseudo.cpp ../read_pp.cpp ../read_pp_complete.cpp ../read_pp_upf201.cpp ../read_pp_upf100.cpp + ../read_pp_vwr.cpp ../read_pp_blps.cpp ../../source_io/module_output/output.cpp ) AddTest( TARGET MODULE_CELL_atom_spec - LIBS parameter ${math_libs} base device - SOURCES atom_spec_test.cpp ../atom_spec.cpp ../atom_pseudo.cpp ../pseudo.cpp ../read_pp.cpp ../read_pp_complete.cpp ../read_pp_upf201.cpp - ../read_pp_upf100.cpp ../read_pp_vwr.cpp ../read_pp_blps.cpp ../../source_io/output.cpp + LIBS parameter ${math_libs} base device + SOURCES atom_spec_test.cpp ../atom_spec.cpp ../atom_pseudo.cpp ../pseudo.cpp ../read_pp.cpp ../read_pp_complete.cpp ../read_pp_upf201.cpp + ../read_pp_upf100.cpp ../read_pp_vwr.cpp ../read_pp_blps.cpp ../../source_io/module_output/output.cpp ) AddTest( TARGET MODULE_CELL_klist_test - LIBS parameter ${math_libs} base device symmetry - SOURCES klist_test.cpp ../klist.cpp ../parallel_kpoints.cpp ../../source_io/output.cpp ../k_vector_utils.cpp + LIBS parameter ${math_libs} base device symmetry + SOURCES klist_test.cpp ../klist.cpp ../parallel_kpoints.cpp ../../source_io/module_output/output.cpp ../k_vector_utils.cpp ) AddTest( TARGET MODULE_CELL_klist_test_para1 - LIBS parameter ${math_libs} base device symmetry - SOURCES klist_test_para.cpp ../klist.cpp ../parallel_kpoints.cpp ../../source_io/output.cpp ../k_vector_utils.cpp + LIBS parameter ${math_libs} base device symmetry + SOURCES klist_test_para.cpp ../klist.cpp ../parallel_kpoints.cpp ../../source_io/module_output/output.cpp ../k_vector_utils.cpp ) add_test(NAME MODULE_CELL_klist_test_para4 @@ -85,8 +90,33 @@ add_test(NAME MODULE_CELL_klist_test_para4 AddTest( TARGET MODULE_CELL_ParaKpoints LIBS parameter MPI::MPI_CXX - SOURCES parallel_kpoints_test.cpp ../../source_base/global_variable.cpp ../../source_base/parallel_global.cpp - ../../source_base/parallel_common.cpp ../../source_base/parallel_comm.cpp ../parallel_kpoints.cpp + SOURCES parallel_kpoints_test.cpp ../../source_base/global_variable.cpp ../../source_base/parallel_global.cpp + ../../source_base/parallel_common.cpp ../../source_base/parallel_comm.cpp ../parallel_kpoints.cpp ../../source_base/tool_quit.cpp ../../source_base/global_variable.cpp ../../source_base/global_file.cpp ../../source_base/global_function.cpp ../../source_base/memory.cpp ../../source_base/timer.cpp ../../source_base/parallel_reduce.cpp +) + +# Add unit test for read_atoms_helper +AddTest( + TARGET MODULE_CELL_read_atoms_helper_test + LIBS parameter ${math_libs} base device + SOURCES read_atoms_helper_test.cpp + ../read_atoms_helper.cpp + ../read_stru.cpp + ../print_cell.cpp + ../atom_spec.cpp + ../unitcell.cpp + ../update_cell.cpp + ../bcast_cell.cpp + ../atom_pseudo.cpp + ../pseudo.cpp + ../read_pp.cpp + ../read_pp_complete.cpp + ../read_pp_upf201.cpp + ../read_pp_upf100.cpp + ../read_pp_vwr.cpp + ../read_pp_blps.cpp + ../read_atom_species.cpp + ../sep.cpp + ../sep_cell.cpp ) find_program(BASH bash) @@ -109,26 +139,26 @@ add_test(NAME MODULE_CELL_parallel_kpoints_test AddTest( TARGET MODULE_CELL_unitcell_test LIBS parameter ${math_libs} base device cell_info symmetry - SOURCES unitcell_test.cpp ../../source_io/output.cpp ../../source_estate/cal_ux.cpp + SOURCES unitcell_test.cpp ../../source_io/module_output/output.cpp ../../source_estate/cal_ux.cpp ) AddTest( TARGET MODULE_CELL_unitcell_test_readpp - LIBS parameter ${math_libs} base device cell_info - SOURCES unitcell_test_readpp.cpp ../../source_io/output.cpp + LIBS parameter ${math_libs} base device cell_info + SOURCES unitcell_test_readpp.cpp ../../source_io/module_output/output.cpp ) AddTest( TARGET MODULE_CELL_unitcell_test_para - LIBS parameter ${math_libs} base device cell_info - SOURCES unitcell_test_para.cpp ../../source_io/output.cpp + LIBS parameter ${math_libs} base device cell_info + SOURCES unitcell_test_para.cpp ../../source_io/module_output/output.cpp ) AddTest( TARGET MODULE_CELL_unitcell_test_setupcell - LIBS parameter ${math_libs} base device cell_info - SOURCES unitcell_test_setupcell.cpp ../../source_io/output.cpp + LIBS parameter ${math_libs} base device cell_info + SOURCES unitcell_test_setupcell.cpp ../../source_io/module_output/output.cpp ) add_test(NAME MODULE_CELL_unitcell_test_parallel @@ -142,3 +172,24 @@ AddTest( SOURCES cell_index_test.cpp ../cell_index.cpp ) +AddTest( + TARGET MODULE_CELL_SEP_TEST + LIBS parameter ${math_libs} base device + SOURCES read_sep_test.cpp ../sep.cpp +) + +add_test(NAME MODULE_CELL_read_sep_parallel + COMMAND ${BASH} bcast_read_sep_test.sh + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} +) + +AddTest( + TARGET MODULE_CELL_SEP_CELL_TEST + LIBS parameter ${math_libs} base device + SOURCES sepcell_test.cpp ../sep.cpp ../sep_cell.cpp +) + +add_test(NAME MODULE_CELL_sep_cell_parallel + COMMAND ${BASH} bcast_sep_cell_test.sh + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} +) diff --git a/source/source_cell/test/bcast_read_sep_test.sh b/source/source_cell/test/bcast_read_sep_test.sh new file mode 100644 index 0000000000..4a38e4f5e4 --- /dev/null +++ b/source/source_cell/test/bcast_read_sep_test.sh @@ -0,0 +1,18 @@ +#!/bin/bash -e + +np=$(cat /proc/cpuinfo | grep "cpu cores" | uniq | awk '{print $NF}') +echo "nprocs in this machine is $np" + +for i in 4; do + if [[ $i -gt $np ]]; then + continue + fi + echo "TEST in parallel, nprocs=$i" + mpirun -np $i ./MODULE_CELL_SEP_TEST + if [[ $? -ne 0 ]]; then + echo -e "\e[1;33m [ FAILED ] \e[0m" \ + "execute UT with $i cores error." + exit 1 + fi + break +done diff --git a/source/source_cell/test/bcast_sep_cell_test.sh b/source/source_cell/test/bcast_sep_cell_test.sh new file mode 100644 index 0000000000..79689516e3 --- /dev/null +++ b/source/source_cell/test/bcast_sep_cell_test.sh @@ -0,0 +1,18 @@ +#!/bin/bash -e + +np=$(cat /proc/cpuinfo | grep "cpu cores" | uniq | awk '{print $NF}') +echo "nprocs in this machine is $np" + +for i in 4; do + if [[ $i -gt $np ]]; then + continue + fi + echo "TEST in parallel, nprocs=$i" + mpirun -np $i ./MODULE_CELL_SEP_CELL_TEST + if [[ $? -ne 0 ]]; then + echo -e "\e[1;33m [ FAILED ] \e[0m" \ + "execute UT with $i cores error." + exit 1 + fi + break +done diff --git a/source/source_cell/test/klist_test.cpp b/source/source_cell/test/klist_test.cpp index ee9c320409..f6169b6229 100644 --- a/source/source_cell/test/klist_test.cpp +++ b/source/source_cell/test/klist_test.cpp @@ -12,10 +12,10 @@ #include "source_cell/setup_nonlocal.h" #include "source_cell/unitcell.h" #include "source_estate/magnetism.h" -#include "source_pw/module_pwdft/VL_in_pw.h" -#include "source_pw/module_pwdft/VNL_in_pw.h" +#include "source_pw/module_pwdft/vl_pw.h" +#include "source_pw/module_pwdft/vnl_pw.h" #include "source_pw/module_pwdft/parallel_grid.h" -#include "source_io/berryphase.h" +#include "source_io/module_unk/berryphase.h" #include "source_io/module_parameter/parameter.h" #undef private #include "source_base/mathzone.h" @@ -83,6 +83,10 @@ Soc::~Soc() Fcoef::~Fcoef() { } +SepPot::SepPot(){} +SepPot::~SepPot(){} +Sep_Cell::Sep_Cell() noexcept {} +Sep_Cell::~Sep_Cell() noexcept {} /************************************************ @@ -723,6 +727,32 @@ TEST_F(KlistTest, NormalizeWk) EXPECT_DOUBLE_EQ(kv->wk[1], 1.0); } +TEST_F(KlistTest, NormalizeWkZeroWeights) +{ + // Test that zero weights are handled correctly + kv->nspin = 1; + kv->set_nkstot(3); + kv->set_nks(3); + kv->renew(kv->get_nkstot()); + kv->wk[0] = 0.0; + kv->wk[1] = 0.0; + kv->wk[2] = 0.0; + int deg = 2; + + // Should not crash and should set equal weights + kv->normalize_wk(deg); + + // Each k-point should have weight = deg / nkstot = 2 / 3 + EXPECT_NEAR(kv->wk[0], 2.0 / 3.0, 1e-10); + EXPECT_NEAR(kv->wk[1], 2.0 / 3.0, 1e-10); + EXPECT_NEAR(kv->wk[2], 2.0 / 3.0, 1e-10); + + // Sum should equal deg + double sum = kv->wk[0] + kv->wk[1] + kv->wk[2]; + EXPECT_NEAR(sum, 2.0, 1e-10); +} + + TEST_F(KlistTest, UpdateUseIBZ) { kv->nspin = 1; @@ -784,3 +814,158 @@ TEST_F(KlistTest, IbzKpointIsMP) ClearUcell(); remove("tmp_klist_4"); } + +TEST_F(KlistTest, IbzKpointCustomWeights) +{ + // This test verifies the fix for issue #6552: k-point weights should not be overwritten + // during IBZ reduction for non-Monkhorst-Pack k-point lists. + + ModuleSymmetry::Symmetry symm; + construct_ucell(stru_lib[0]); + GlobalV::ofs_running.open("tmp_klist_custom_weights"); + symm.analy_sys(ucell.lat, ucell.st, ucell.atoms, GlobalV::ofs_running); + + // Test 1: Non-MP k-points with uniform weights (KPT4) + { + K_Vectors kv_test1; + std::string k_file = "./support/KPT4"; + kv_test1.nspin = 1; + kv_test1.read_kpoints(ucell, k_file); + EXPECT_EQ(kv_test1.get_nkstot(), 5); + EXPECT_FALSE(kv_test1.is_mp); // Should be non-MP + + // Store original weights before IBZ reduction + std::vector original_weights = kv_test1.wk; + + // Apply IBZ reduction + std::string skpt; + ModuleSymmetry::Symmetry::symm_flag = 1; + bool match = true; + KVectorUtils::kvec_ibz_kpoint(kv_test1, symm, ModuleSymmetry::Symmetry::symm_flag, skpt, ucell, match); + + // Verify that weights are preserved (not overwritten with 1/nkstot) + // After IBZ reduction, weights should still reflect the input weights + double total_weight = 0.0; + for (int i = 0; i < kv_test1.get_nkstot(); ++i) + { + total_weight += kv_test1.wk[i]; + } + // Weights should sum to approximately the number of original k-points (before normalization) + EXPECT_GT(total_weight, 0.0); + } + + // Test 2: Non-MP k-points with non-uniform custom weights + { + K_Vectors kv_test2; + std::string k_file = "./support/KPT_custom_weights"; + kv_test2.nspin = 1; + kv_test2.read_kpoints(ucell, k_file); + EXPECT_EQ(kv_test2.get_nkstot(), 5); + EXPECT_FALSE(kv_test2.is_mp); // Should be non-MP + + // Verify custom weights were read correctly + EXPECT_DOUBLE_EQ(kv_test2.wk[0], 0.1); + EXPECT_DOUBLE_EQ(kv_test2.wk[1], 0.2); + EXPECT_DOUBLE_EQ(kv_test2.wk[2], 0.3); + EXPECT_DOUBLE_EQ(kv_test2.wk[3], 0.2); + EXPECT_DOUBLE_EQ(kv_test2.wk[4], 0.2); + + // Store original weights + std::vector original_weights = kv_test2.wk; + double original_sum = 0.0; + for (double w : original_weights) + { + original_sum += w; + } + + // Apply IBZ reduction + std::string skpt; + ModuleSymmetry::Symmetry::symm_flag = 1; + bool match = true; + KVectorUtils::kvec_ibz_kpoint(kv_test2, symm, ModuleSymmetry::Symmetry::symm_flag, skpt, ucell, match); + + // After IBZ reduction, the weights should be based on the custom input weights, + // not uniform 1/nkstot weights. The total weight should be preserved. + double total_weight_after = 0.0; + for (int i = 0; i < kv_test2.get_nkstot(); ++i) + { + total_weight_after += kv_test2.wk[i]; + } + + // The sum of weights after IBZ reduction should equal the sum before + // (accounting for symmetry operations that may combine k-points) + EXPECT_NEAR(total_weight_after, original_sum, 1e-10); + + // Verify that at least one weight is NOT equal to 1/5 (which would indicate + // the bug where custom weights are overwritten with uniform weights) + bool has_custom_weight = false; + double uniform_weight = 1.0 / 5.0; + for (int i = 0; i < kv_test2.get_nkstot(); ++i) + { + if (std::abs(kv_test2.wk[i] - uniform_weight) > 1e-10) + { + has_custom_weight = true; + break; + } + } + EXPECT_TRUE(has_custom_weight) << "Custom weights were overwritten with uniform weights!"; + } + + // Test 3: MP grid (regression test - should still work correctly) + { + K_Vectors kv_test3; + std::string k_file = "./support/KPT1"; + kv_test3.nspin = 1; + kv_test3.read_kpoints(ucell, k_file); + EXPECT_EQ(kv_test3.get_nkstot(), 512); + EXPECT_TRUE(kv_test3.is_mp); // Should be MP + + // Apply IBZ reduction + std::string skpt; + ModuleSymmetry::Symmetry::symm_flag = 1; + bool match = true; + KVectorUtils::kvec_ibz_kpoint(kv_test3, symm, ModuleSymmetry::Symmetry::symm_flag, skpt, ucell, match); + + // For MP grids, all weights should be uniform after IBZ reduction + EXPECT_EQ(kv_test3.get_nkstot(), 35); // Known result from existing test + + // Verify weights sum correctly + double total_weight = 0.0; + for (int i = 0; i < kv_test3.get_nkstot(); ++i) + { + total_weight += kv_test3.wk[i]; + } + EXPECT_GT(total_weight, 0.0); + } + + // Test 4: Weight normalization verification + { + K_Vectors kv_test4; + std::string k_file = "./support/KPT_custom_weights"; + kv_test4.nspin = 1; + kv_test4.read_kpoints(ucell, k_file); + + // Apply IBZ reduction + std::string skpt; + ModuleSymmetry::Symmetry::symm_flag = 1; + bool match = true; + KVectorUtils::kvec_ibz_kpoint(kv_test4, symm, ModuleSymmetry::Symmetry::symm_flag, skpt, ucell, match); + + // Normalize weights + int degspin = (kv_test4.nspin == 2) ? 1 : 2; + kv_test4.normalize_wk(degspin); + + // After normalization, weights should sum to degspin + double total_weight = 0.0; + for (int i = 0; i < kv_test4.get_nkstot(); ++i) + { + total_weight += kv_test4.wk[i]; + } + EXPECT_NEAR(total_weight, degspin, 1e-10); + } + + GlobalV::ofs_running.close(); + ClearUcell(); + remove("tmp_klist_custom_weights"); +} + diff --git a/source/source_cell/test/klist_test_para.cpp b/source/source_cell/test/klist_test_para.cpp index 2b03a169ab..00b317ce8e 100644 --- a/source/source_cell/test/klist_test_para.cpp +++ b/source/source_cell/test/klist_test_para.cpp @@ -19,10 +19,10 @@ #include "source_cell/setup_nonlocal.h" #include "source_cell/unitcell.h" #include "source_estate/magnetism.h" -#include "source_pw/module_pwdft/VL_in_pw.h" -#include "source_pw/module_pwdft/VNL_in_pw.h" +#include "source_pw/module_pwdft/vl_pw.h" +#include "source_pw/module_pwdft/vnl_pw.h" #include "source_pw/module_pwdft/parallel_grid.h" -#include "source_io/berryphase.h" +#include "source_io/module_unk/berryphase.h" #undef private bool berryphase::berry_phase_flag = false; @@ -86,6 +86,10 @@ Soc::~Soc() Fcoef::~Fcoef() { } +SepPot::SepPot(){} +SepPot::~SepPot(){} +Sep_Cell::Sep_Cell() noexcept {} +Sep_Cell::~Sep_Cell() noexcept {} /************************************************ diff --git a/source/source_cell/test/prepare_unitcell.h b/source/source_cell/test/prepare_unitcell.h index 32142daad9..7391464408 100644 --- a/source/source_cell/test/prepare_unitcell.h +++ b/source/source_cell/test/prepare_unitcell.h @@ -97,7 +97,7 @@ class UcellTestPrepare } //lattice info ucell->lat0 = this->lat0; - ucell->lat0_angstrom = ucell->lat0 * 0.529177; + ucell->lat0_angstrom = ucell->lat0 * ModuleBase::BOHR_TO_A; ucell->tpiba = ModuleBase::TWO_PI/ucell->lat0; ucell->tpiba2 = ucell->tpiba * ucell->tpiba; ucell->latvec.e11 = this->latvec[0]; diff --git a/source/source_cell/test/read_atoms_helper_test.cpp b/source/source_cell/test/read_atoms_helper_test.cpp new file mode 100644 index 0000000000..1cd8084784 --- /dev/null +++ b/source/source_cell/test/read_atoms_helper_test.cpp @@ -0,0 +1,483 @@ +#include "gtest/gtest.h" +#include "gmock/gmock.h" +#include "../read_atoms_helper.h" +#include "source_base/vector3.h" +#include "source_base/matrix3.h" +#include +#include + +// Mock implementations for missing functions that are not in the linked sources +namespace elecstate { + bool read_orb_file(int it, std::string& orbital_file, std::ofstream& ofs_running, Atom* atom) { + // Mock implementation - just return true + return true; + } +} + +// Mock output class methods +void output::printM3(std::ofstream& ofs, const std::string& description, const ModuleBase::Matrix3& m) { + // Mock implementation +} + +void output::printrm(std::ofstream& ofs, const std::string& description, const ModuleBase::matrix& m, const double& limit) { + // Mock implementation +} + +// Mock InfoNonlocal class +InfoNonlocal::InfoNonlocal() {} +InfoNonlocal::~InfoNonlocal() {} + +// Mock Magnetism class +Magnetism::Magnetism() {} +Magnetism::~Magnetism() {} + +// Mock read_atom_positions function (we're testing the helpers, not the main function) +namespace unitcell { + bool read_atom_positions(UnitCell& ucell, std::ifstream& ifpos, + std::ofstream& ofs_running, std::ofstream& ofs_warning) { + // Mock implementation + return true; + } +} + +// Test fixture for read_atoms_helper tests +class ReadAtomsHelperTest : public ::testing::Test +{ +protected: + void SetUp() override + { + // Create temporary output streams + ofs_warning.open("test_warning.log"); + ofs_running.open("test_running.log"); + } + + void TearDown() override + { + ofs_warning.close(); + ofs_running.close(); + // Clean up temporary files + std::remove("test_warning.log"); + std::remove("test_running.log"); + } + + std::ofstream ofs_warning; + std::ofstream ofs_running; +}; + +// Test validate_coordinate_system function +TEST_F(ReadAtomsHelperTest, ValidateCoordinateSystem_ValidInputs) +{ + EXPECT_TRUE(unitcell::validate_coordinate_system("Direct", ofs_warning)); + EXPECT_TRUE(unitcell::validate_coordinate_system("Cartesian", ofs_warning)); + EXPECT_TRUE(unitcell::validate_coordinate_system("Cartesian_angstrom", ofs_warning)); + EXPECT_TRUE(unitcell::validate_coordinate_system("Cartesian_au", ofs_warning)); + EXPECT_TRUE(unitcell::validate_coordinate_system("Cartesian_angstrom_center_xy", ofs_warning)); + EXPECT_TRUE(unitcell::validate_coordinate_system("Cartesian_angstrom_center_xz", ofs_warning)); + EXPECT_TRUE(unitcell::validate_coordinate_system("Cartesian_angstrom_center_yz", ofs_warning)); + EXPECT_TRUE(unitcell::validate_coordinate_system("Cartesian_angstrom_center_xyz", ofs_warning)); +} + +TEST_F(ReadAtomsHelperTest, ValidateCoordinateSystem_InvalidInputs) +{ + EXPECT_FALSE(unitcell::validate_coordinate_system("Invalid", ofs_warning)); + EXPECT_FALSE(unitcell::validate_coordinate_system("direct", ofs_warning)); // case sensitive + EXPECT_FALSE(unitcell::validate_coordinate_system("", ofs_warning)); + EXPECT_FALSE(unitcell::validate_coordinate_system("Cartesian_angstrom_center", ofs_warning)); +} + +// Test calculate_lattice_center function +TEST_F(ReadAtomsHelperTest, CalculateLatticeCenterXY) +{ + ModuleBase::Matrix3 latvec; + latvec.e11 = 10.0; latvec.e12 = 0.0; latvec.e13 = 0.0; + latvec.e21 = 0.0; latvec.e22 = 10.0; latvec.e23 = 0.0; + latvec.e31 = 0.0; latvec.e32 = 0.0; latvec.e33 = 10.0; + + auto center = unitcell::calculate_lattice_center(latvec, "xy"); + + EXPECT_DOUBLE_EQ(center.x, 5.0); + EXPECT_DOUBLE_EQ(center.y, 5.0); + EXPECT_DOUBLE_EQ(center.z, 0.0); +} + +TEST_F(ReadAtomsHelperTest, CalculateLatticeCenterXZ) +{ + ModuleBase::Matrix3 latvec; + latvec.e11 = 10.0; latvec.e12 = 0.0; latvec.e13 = 0.0; + latvec.e21 = 0.0; latvec.e22 = 10.0; latvec.e23 = 0.0; + latvec.e31 = 0.0; latvec.e32 = 0.0; latvec.e33 = 10.0; + + auto center = unitcell::calculate_lattice_center(latvec, "xz"); + + EXPECT_DOUBLE_EQ(center.x, 5.0); + EXPECT_DOUBLE_EQ(center.y, 0.0); + EXPECT_DOUBLE_EQ(center.z, 5.0); +} + +TEST_F(ReadAtomsHelperTest, CalculateLatticeCenterYZ) +{ + ModuleBase::Matrix3 latvec; + latvec.e11 = 10.0; latvec.e12 = 0.0; latvec.e13 = 0.0; + latvec.e21 = 0.0; latvec.e22 = 10.0; latvec.e23 = 0.0; + latvec.e31 = 0.0; latvec.e32 = 0.0; latvec.e33 = 10.0; + + auto center = unitcell::calculate_lattice_center(latvec, "yz"); + + EXPECT_DOUBLE_EQ(center.x, 0.0); + EXPECT_DOUBLE_EQ(center.y, 5.0); + EXPECT_DOUBLE_EQ(center.z, 5.0); +} + +TEST_F(ReadAtomsHelperTest, CalculateLatticeCenterXYZ) +{ + ModuleBase::Matrix3 latvec; + latvec.e11 = 10.0; latvec.e12 = 0.0; latvec.e13 = 0.0; + latvec.e21 = 0.0; latvec.e22 = 10.0; latvec.e23 = 0.0; + latvec.e31 = 0.0; latvec.e32 = 0.0; latvec.e33 = 10.0; + + auto center = unitcell::calculate_lattice_center(latvec, "xyz"); + + EXPECT_DOUBLE_EQ(center.x, 5.0); + EXPECT_DOUBLE_EQ(center.y, 5.0); + EXPECT_DOUBLE_EQ(center.z, 5.0); +} + +TEST_F(ReadAtomsHelperTest, CalculateLatticeCenterNonCubic) +{ + ModuleBase::Matrix3 latvec; + latvec.e11 = 8.0; latvec.e12 = 0.0; latvec.e13 = 0.0; + latvec.e21 = 2.0; latvec.e22 = 6.0; latvec.e23 = 0.0; + latvec.e31 = 1.0; latvec.e32 = 1.0; latvec.e33 = 10.0; + + auto center = unitcell::calculate_lattice_center(latvec, "xyz"); + + EXPECT_DOUBLE_EQ(center.x, (8.0 + 2.0 + 1.0) / 2.0); + EXPECT_DOUBLE_EQ(center.y, (0.0 + 6.0 + 1.0) / 2.0); + EXPECT_DOUBLE_EQ(center.z, (0.0 + 0.0 + 10.0) / 2.0); +} + +// Test allocate_atom_properties function +TEST_F(ReadAtomsHelperTest, AllocateAtomProperties) +{ + Atom atom; + int na = 5; + double mass = 12.0; + + unitcell::allocate_atom_properties(atom, na, mass); + + EXPECT_EQ(atom.tau.size(), na); + EXPECT_EQ(atom.dis.size(), na); + EXPECT_EQ(atom.taud.size(), na); + EXPECT_EQ(atom.boundary_shift.size(), na); + EXPECT_EQ(atom.vel.size(), na); + EXPECT_EQ(atom.mbl.size(), na); + EXPECT_EQ(atom.mag.size(), na); + EXPECT_EQ(atom.angle1.size(), na); + EXPECT_EQ(atom.angle2.size(), na); + EXPECT_EQ(atom.m_loc_.size(), na); + EXPECT_EQ(atom.lambda.size(), na); + EXPECT_EQ(atom.constrain.size(), na); + EXPECT_DOUBLE_EQ(atom.mass, mass); +} + +// Test transform_atom_coordinates for Direct coordinates +TEST_F(ReadAtomsHelperTest, TransformAtomCoordinatesDirect) +{ + Atom atom; + atom.tau.resize(1); + atom.taud.resize(1); + + ModuleBase::Vector3 v(0.5, 0.5, 0.5); + ModuleBase::Matrix3 latvec; + latvec.e11 = 10.0; latvec.e12 = 0.0; latvec.e13 = 0.0; + latvec.e21 = 0.0; latvec.e22 = 10.0; latvec.e23 = 0.0; + latvec.e31 = 0.0; latvec.e32 = 0.0; latvec.e33 = 10.0; + + double lat0 = 1.0; + ModuleBase::Vector3 latcenter; + + unitcell::transform_atom_coordinates(atom, 0, "Direct", v, latvec, lat0, latcenter); + + EXPECT_DOUBLE_EQ(atom.taud[0].x, 0.5); + EXPECT_DOUBLE_EQ(atom.taud[0].y, 0.5); + EXPECT_DOUBLE_EQ(atom.taud[0].z, 0.5); + EXPECT_DOUBLE_EQ(atom.tau[0].x, 5.0); + EXPECT_DOUBLE_EQ(atom.tau[0].y, 5.0); + EXPECT_DOUBLE_EQ(atom.tau[0].z, 5.0); +} + +// Test transform_atom_coordinates for Cartesian coordinates +TEST_F(ReadAtomsHelperTest, TransformAtomCoordinatesCartesian) +{ + Atom atom; + atom.tau.resize(1); + atom.taud.resize(1); + + ModuleBase::Vector3 v(5.0, 5.0, 5.0); + ModuleBase::Matrix3 latvec; + latvec.e11 = 10.0; latvec.e12 = 0.0; latvec.e13 = 0.0; + latvec.e21 = 0.0; latvec.e22 = 10.0; latvec.e23 = 0.0; + latvec.e31 = 0.0; latvec.e32 = 0.0; latvec.e33 = 10.0; + + double lat0 = 1.0; + ModuleBase::Vector3 latcenter; + + unitcell::transform_atom_coordinates(atom, 0, "Cartesian", v, latvec, lat0, latcenter); + + EXPECT_DOUBLE_EQ(atom.tau[0].x, 5.0); + EXPECT_DOUBLE_EQ(atom.tau[0].y, 5.0); + EXPECT_DOUBLE_EQ(atom.tau[0].z, 5.0); + EXPECT_DOUBLE_EQ(atom.taud[0].x, 0.5); + EXPECT_DOUBLE_EQ(atom.taud[0].y, 0.5); + EXPECT_DOUBLE_EQ(atom.taud[0].z, 0.5); +} + +// Test process_magnetization for nspin=2 +TEST_F(ReadAtomsHelperTest, ProcessMagnetizationNspin2) +{ + Atom atom; + atom.mag.resize(1); + atom.m_loc_.resize(1); + atom.angle1.resize(1); + atom.angle2.resize(1); + + atom.mag[0] = 2.0; + atom.m_loc_[0].set(0, 0, 0); + + unitcell::process_magnetization(atom, 0, 0, 2, false, false, ofs_running); + + // For nspin=2, only z component should be set + EXPECT_DOUBLE_EQ(atom.m_loc_[0].x, 0.0); + EXPECT_DOUBLE_EQ(atom.m_loc_[0].y, 0.0); + EXPECT_DOUBLE_EQ(atom.m_loc_[0].z, 2.0); + EXPECT_DOUBLE_EQ(atom.mag[0], 2.0); +} + +// Test process_magnetization for nspin=4 with vector input +TEST_F(ReadAtomsHelperTest, ProcessMagnetizationNspin4VectorInput) +{ + Atom atom; + atom.mag.resize(1); + atom.m_loc_.resize(1); + atom.angle1.resize(1); + atom.angle2.resize(1); + + atom.m_loc_[0].set(1.0, 1.0, 1.0); + atom.mag[0] = sqrt(3.0); + + // Set noncolin to true to allow non-collinear magnetization + // Note: This requires PARAM to be properly initialized + + unitcell::process_magnetization(atom, 0, 0, 4, true, false, ofs_running); + + // Angles should be calculated from vector components + EXPECT_GT(atom.angle1[0], 0.0); + EXPECT_GT(atom.angle2[0], 0.0); +} + +// Test process_magnetization with angle input +TEST_F(ReadAtomsHelperTest, ProcessMagnetizationAngleInput) +{ + Atom atom; + atom.mag.resize(1); + atom.m_loc_.resize(1); + atom.angle1.resize(1); + atom.angle2.resize(1); + + atom.mag[0] = 2.0; + atom.angle1[0] = M_PI / 2.0; // 90 degrees + atom.angle2[0] = 0.0; + atom.m_loc_[0].set(0, 0, 0); + + // Note: For nspin=4, if noncolin is false (default), x and y components are zeroed + // So we test with nspin=2 instead to verify the angle calculation works + unitcell::process_magnetization(atom, 0, 0, 2, false, true, ofs_running); + + // For nspin=2, only z component is used, which should be mag[0] * cos(angle1) + // With angle1 = PI/2, cos(PI/2) = 0 + EXPECT_NEAR(atom.m_loc_[0].z, 0.0, 1e-10); + EXPECT_DOUBLE_EQ(atom.mag[0], atom.m_loc_[0].z); +} + +// Test parse_atom_properties with movement flags +TEST_F(ReadAtomsHelperTest, ParseAtomPropertiesMovementFlags) +{ + std::string input_str = "1.0 2.0 3.0 m 1 0 1\n"; + std::istringstream iss(input_str); + + // Create a temporary file for testing + std::ofstream temp_file("test_input.tmp"); + temp_file << input_str; + temp_file.close(); + + std::ifstream ifpos("test_input.tmp"); + + Atom atom; + atom.label = "C"; + atom.vel.resize(1); + atom.mag.resize(1); + atom.m_loc_.resize(1); + atom.angle1.resize(1); + atom.angle2.resize(1); + atom.lambda.resize(1); + atom.constrain.resize(1); + + ModuleBase::Vector3 mv(1, 1, 1); + bool input_vec_mag = false; + bool input_angle_mag = false; + bool set_element_mag_zero = false; + + // Skip the position coordinates + double x, y, z; + ifpos >> x >> y >> z; + + bool result = unitcell::parse_atom_properties(ifpos, atom, 0, mv, + input_vec_mag, input_angle_mag, + set_element_mag_zero); + + EXPECT_TRUE(result); + EXPECT_EQ(mv.x, 1); + EXPECT_EQ(mv.y, 0); + EXPECT_EQ(mv.z, 1); + + ifpos.close(); + std::remove("test_input.tmp"); +} + +// Test parse_atom_properties with velocity +TEST_F(ReadAtomsHelperTest, ParseAtomPropertiesVelocity) +{ + std::string input_str = "1.0 2.0 3.0 v 0.1 0.2 0.3\n"; + + std::ofstream temp_file("test_input.tmp"); + temp_file << input_str; + temp_file.close(); + + std::ifstream ifpos("test_input.tmp"); + + Atom atom; + atom.label = "C"; + atom.vel.resize(1); + atom.mag.resize(1); + atom.m_loc_.resize(1); + atom.angle1.resize(1); + atom.angle2.resize(1); + atom.lambda.resize(1); + atom.constrain.resize(1); + + ModuleBase::Vector3 mv(1, 1, 1); + bool input_vec_mag = false; + bool input_angle_mag = false; + bool set_element_mag_zero = false; + + // Skip the position coordinates + double x, y, z; + ifpos >> x >> y >> z; + + bool result = unitcell::parse_atom_properties(ifpos, atom, 0, mv, + input_vec_mag, input_angle_mag, + set_element_mag_zero); + + EXPECT_TRUE(result); + EXPECT_DOUBLE_EQ(atom.vel[0].x, 0.1); + EXPECT_DOUBLE_EQ(atom.vel[0].y, 0.2); + EXPECT_DOUBLE_EQ(atom.vel[0].z, 0.3); + + ifpos.close(); + std::remove("test_input.tmp"); +} + +// Test parse_atom_properties with scalar magnetization +TEST_F(ReadAtomsHelperTest, ParseAtomPropertiesScalarMag) +{ + std::string input_str = "1.0 2.0 3.0 mag 2.5\n"; + + std::ofstream temp_file("test_input.tmp"); + temp_file << input_str; + temp_file.close(); + + std::ifstream ifpos("test_input.tmp"); + + Atom atom; + atom.label = "C"; + atom.vel.resize(1); + atom.mag.resize(1); + atom.m_loc_.resize(1); + atom.angle1.resize(1); + atom.angle2.resize(1); + atom.lambda.resize(1); + atom.constrain.resize(1); + + ModuleBase::Vector3 mv(1, 1, 1); + bool input_vec_mag = false; + bool input_angle_mag = false; + bool set_element_mag_zero = false; + + // Skip the position coordinates + double x, y, z; + ifpos >> x >> y >> z; + + bool result = unitcell::parse_atom_properties(ifpos, atom, 0, mv, + input_vec_mag, input_angle_mag, + set_element_mag_zero); + + EXPECT_TRUE(result); + EXPECT_DOUBLE_EQ(atom.mag[0], 2.5); + EXPECT_TRUE(set_element_mag_zero); + EXPECT_FALSE(input_vec_mag); + + ifpos.close(); + std::remove("test_input.tmp"); +} + +// Test parse_atom_properties with vector magnetization +TEST_F(ReadAtomsHelperTest, ParseAtomPropertiesVectorMag) +{ + std::string input_str = "1.0 2.0 3.0 mag 1.0 2.0 3.0\n"; + + std::ofstream temp_file("test_input.tmp"); + temp_file << input_str; + temp_file.close(); + + std::ifstream ifpos("test_input.tmp"); + + Atom atom; + atom.label = "C"; + atom.vel.resize(1); + atom.mag.resize(1); + atom.m_loc_.resize(1); + atom.angle1.resize(1); + atom.angle2.resize(1); + atom.lambda.resize(1); + atom.constrain.resize(1); + + ModuleBase::Vector3 mv(1, 1, 1); + bool input_vec_mag = false; + bool input_angle_mag = false; + bool set_element_mag_zero = false; + + // Skip the position coordinates + double x, y, z; + ifpos >> x >> y >> z; + + bool result = unitcell::parse_atom_properties(ifpos, atom, 0, mv, + input_vec_mag, input_angle_mag, + set_element_mag_zero); + + EXPECT_TRUE(result); + EXPECT_DOUBLE_EQ(atom.m_loc_[0].x, 1.0); + EXPECT_DOUBLE_EQ(atom.m_loc_[0].y, 2.0); + EXPECT_DOUBLE_EQ(atom.m_loc_[0].z, 3.0); + EXPECT_NEAR(atom.mag[0], sqrt(1.0 + 4.0 + 9.0), 1e-10); + EXPECT_TRUE(input_vec_mag); + EXPECT_TRUE(set_element_mag_zero); + + ifpos.close(); + std::remove("test_input.tmp"); +} + +int main(int argc, char **argv) +{ + ::testing::InitGoogleTest(&argc, argv); + return RUN_ALL_TESTS(); +} diff --git a/source/source_cell/test/read_sep_test.cpp b/source/source_cell/test/read_sep_test.cpp new file mode 100644 index 0000000000..0bfada1a36 --- /dev/null +++ b/source/source_cell/test/read_sep_test.cpp @@ -0,0 +1,146 @@ +#include "gmock/gmock.h" +#include "gtest/gtest.h" +#include +#define private public +#include "source_io/module_parameter/parameter.h" +#undef private + +#ifdef __MPI +#include +#endif // __MPI + +#define private public +#include "source_cell/sep.h" +#undef private + +class ReadSepTest : public testing::Test +{ + protected: + std::string output; + std::unique_ptr read_sep{new SepPot}; + + void SetUp() override + { + // Initialization default check + EXPECT_FALSE(read_sep->is_enable); + EXPECT_DOUBLE_EQ(read_sep->r_in, 0.0); + EXPECT_DOUBLE_EQ(read_sep->r_out, 0.0); + EXPECT_DOUBLE_EQ(read_sep->r_power, 20.0); + EXPECT_DOUBLE_EQ(read_sep->enhence_a, 1.0); + EXPECT_EQ(read_sep->mesh, 0); + EXPECT_EQ(read_sep->strip_elec, 0); + EXPECT_EQ(read_sep->r, nullptr); + EXPECT_EQ(read_sep->rv, nullptr); + } + + void TearDown() override + { + // Cleaning is done automatically in the destructor + } +}; + +TEST_F(ReadSepTest, ReadSep) +{ +#ifdef __MPI + if (GlobalV::MY_RANK == 0) + { +#endif // !__MPI + std::ifstream ifs; + ifs.open("./support/F_pbe_50.sep"); + ASSERT_TRUE(ifs.is_open()); + read_sep->read_sep(ifs); + ifs.close(); + EXPECT_EQ(read_sep->label, "F"); + EXPECT_EQ(read_sep->mesh, 1038); + EXPECT_EQ(read_sep->xc_type, "pbe"); + EXPECT_EQ(read_sep->strip_elec, 50); + + EXPECT_EQ(read_sep->r[0], 3.4643182373e-06); + EXPECT_NE(read_sep->r, nullptr); + EXPECT_NE(read_sep->rv, nullptr); +#ifdef __MPI + } +#endif // __MPI +} + +TEST_F(ReadSepTest, PrintSep) +{ +#ifdef __MPI + if (GlobalV::MY_RANK == 0) + { +#endif + // 设置测试数据 + read_sep->label = "F"; + read_sep->xc_type = "pbe"; + read_sep->orbital = "p"; + read_sep->strip_elec = 50; + read_sep->mesh = 2; + read_sep->r = new double[2]{0.1, 0.2}; + read_sep->rv = new double[2]{1.0, 2.0}; + + // 测试打印功能 + std::ofstream ofs("test_sep.out"); + read_sep->print_sep_info(ofs); + read_sep->print_sep_vsep(ofs); + ofs.close(); + + // 验证输出文件 + std::ifstream ifs("test_sep.out"); + std::string line; + std::vector lines; + while (std::getline(ifs, line)) + { + lines.push_back(line); + } + ifs.close(); + + EXPECT_THAT(lines, testing::Contains(" label F")); + EXPECT_THAT(lines, testing::Contains(" xc pbe")); + EXPECT_THAT(lines, testing::Contains(" orbital p")); + EXPECT_THAT(lines, testing::Contains(" strip electron50")); + EXPECT_THAT(lines, testing::Contains(" mesh 2")); + + std::remove("test_sep.out"); +#ifdef __MPI + } +#endif +} + +#ifdef __MPI +TEST_F(ReadSepTest, BcastSep) +{ + if (GlobalV::MY_RANK == 0) + { + std::ifstream ifs; + ifs.open("./support/F_pbe_50.sep"); + ASSERT_TRUE(ifs.is_open()); + read_sep->read_sep(ifs); + ifs.close(); + } + read_sep->bcast_sep(); + if (GlobalV::MY_RANK != 0) + { + EXPECT_EQ(read_sep->label, "F"); + EXPECT_EQ(read_sep->mesh, 1038); + EXPECT_EQ(read_sep->xc_type, "pbe"); + EXPECT_EQ(read_sep->strip_elec, 50); + EXPECT_DOUBLE_EQ(read_sep->r[0], 3.4643182373e-06); + EXPECT_NE(read_sep->r, nullptr); + EXPECT_NE(read_sep->rv, nullptr); + } +} + +int main(int argc, char** argv) +{ + MPI_Init(&argc, &argv); + testing::InitGoogleTest(&argc, argv); + + MPI_Comm_size(MPI_COMM_WORLD, &GlobalV::NPROC); + MPI_Comm_rank(MPI_COMM_WORLD, &GlobalV::MY_RANK); + + int result = RUN_ALL_TESTS(); + + MPI_Finalize(); + return result; +} +#endif // __MPI diff --git a/source/source_cell/test/sepcell_test.cpp b/source/source_cell/test/sepcell_test.cpp new file mode 100644 index 0000000000..11316355e1 --- /dev/null +++ b/source/source_cell/test/sepcell_test.cpp @@ -0,0 +1,286 @@ +#include "gtest/gtest.h" +#include +// #include +#include + +#define private public +#include "source_io/module_parameter/parameter.h" +#undef private + +#ifdef __MPI +#include +#endif + +#define private public +#include "source_cell/sep_cell.h" +#include "source_cell/unitcell.h" +#undef private +pseudo::pseudo() +{ +} +pseudo::~pseudo() +{ +} +Atom_pseudo::Atom_pseudo() +{ +} +Atom_pseudo::~Atom_pseudo() +{ +} +Atom::Atom() +{ +} +Atom::~Atom() +{ +} +InfoNonlocal::InfoNonlocal() +{ +} +InfoNonlocal::~InfoNonlocal() +{ +} +LCAO_Orbitals::LCAO_Orbitals() +{ +} +LCAO_Orbitals::~LCAO_Orbitals() +{ +} +Magnetism::Magnetism() +{ +} +Magnetism::~Magnetism() +{ +} +UnitCell::UnitCell() +{ +} +UnitCell::~UnitCell() +{ +} + +// Test fixture for Sep_Cell tests +class SepCellTest : public ::testing::Test +{ + protected: + Sep_Cell sep_cell; + UnitCell ucell; + + // Names for temporary files used in tests + std::string stru_filename = "STRU_LiF"; + std::string stru_noLi_filename = "STRU_LiF_Warning1"; + std::string f_sep_filename = "F_pbe_50.sep"; + std::string pp_dir = "support/"; // Directory for pseudopotential files + + void SetUp() override + { + // Initialize UnitCell for tests that need it. + // This setup is common for many read_sep_potentials tests. + ucell.ntype = 2; + ucell.atom_label.resize(ucell.ntype); + ucell.atom_label[0] = "Li"; + ucell.atom_label[1] = "F"; + ucell.atoms = new Atom[ucell.ntype]; + ucell.atoms[0].label = "Li"; + ucell.atoms[0].na = 1; // Number of atoms of this type + ucell.atoms[1].label = "F"; + ucell.atoms[1].na = 1; + } + + void TearDown() override + { + delete[] ucell.atoms; + ucell.atoms = nullptr; + } +}; + +TEST_F(SepCellTest, Constructor) +{ + EXPECT_EQ(sep_cell.get_ntype(), 0); + EXPECT_DOUBLE_EQ(sep_cell.get_omega(), 0.0); + EXPECT_DOUBLE_EQ(sep_cell.get_tpiba2(), 0.0); + EXPECT_TRUE(sep_cell.get_seps().empty()); + EXPECT_TRUE(sep_cell.get_sep_enable().empty()); +} + +TEST_F(SepCellTest, Init) +{ + sep_cell.init(2); + EXPECT_EQ(sep_cell.get_ntype(), 2); + ASSERT_EQ(sep_cell.get_seps().size(), 2); + ASSERT_EQ(sep_cell.get_sep_enable().size(), 2); + EXPECT_FALSE(sep_cell.get_sep_enable()[0]); + EXPECT_FALSE(sep_cell.get_sep_enable()[1]); + // Check default values of SepPot within seps + EXPECT_EQ(sep_cell.get_seps()[0].mesh, 0); + EXPECT_FALSE(sep_cell.get_seps()[0].is_enable); +} + +TEST_F(SepCellTest, SetOmega) +{ + sep_cell.set_omega(100.0, 0.25); + EXPECT_DOUBLE_EQ(sep_cell.get_omega(), 100.0); + EXPECT_DOUBLE_EQ(sep_cell.get_tpiba2(), 0.25); +} + +TEST_F(SepCellTest, ReadSepPotentialsSuccess) +{ +#ifdef __MPI + if (GlobalV::MY_RANK == 0) + { +#endif + + std::ifstream ifs(pp_dir + stru_filename); + ASSERT_TRUE(ifs.is_open()); + + sep_cell.init(ucell.ntype); + std::ofstream ofs_running_dummy("dummy_ofs_running.tmp"); + int result = sep_cell.read_sep_potentials(ifs, pp_dir, ofs_running_dummy, ucell.atom_label); + ifs.close(); + std::remove("dummy_ofs_running.tmp"); + + EXPECT_EQ(result, 1); // Expect success (true) + + // Due to the bug mentioned (this->sep_enable[i] is always false), + // SEP data won't actually be loaded. + ASSERT_EQ(sep_cell.get_sep_enable().size(), 2); + EXPECT_FALSE(sep_cell.get_sep_enable()[0]); // Stays false from init + EXPECT_TRUE(sep_cell.get_sep_enable()[1]); // Stays false from init + + const auto& seps = sep_cell.get_seps(); + ASSERT_EQ(seps.size(), 2); + EXPECT_FALSE(seps[0].is_enable); // Default value, not set from file + EXPECT_EQ(seps[0].mesh, 0); // Default value + EXPECT_EQ(seps[0].label, ""); // Default value + + EXPECT_TRUE(seps[1].is_enable); // Default value + EXPECT_EQ(seps[1].mesh, 1038); // Default value + EXPECT_EQ(seps[1].label, "F"); // Default value + EXPECT_DOUBLE_EQ(seps[1].r_in, 0.0); + EXPECT_DOUBLE_EQ(seps[1].r_out, 2.5); + EXPECT_DOUBLE_EQ(seps[1].r_power, 20.0); + EXPECT_DOUBLE_EQ(seps[1].enhence_a, 1.0); +#ifdef __MPI + } + // If run in MPI, other ranks might need to know the outcome or have sep_cell state consistent. + // For this specific test, only rank 0 performs the read. + // A broadcast test would cover data consistency across ranks. +#endif +} + +TEST_F(SepCellTest, ReadSepPotentialsNoSepFilesSection) +{ +#ifdef __MPI + if (GlobalV::MY_RANK == 0) + { +#endif + + std::ifstream ifs(pp_dir + stru_noLi_filename); + ASSERT_TRUE(ifs.is_open()); + std::ofstream ofs_running_dummy("dummy_ofs_running.tmp"); + + sep_cell.init(ucell.ntype); + int result = sep_cell.read_sep_potentials(ifs, pp_dir, ofs_running_dummy, ucell.atom_label); + ifs.close(); + std::remove("dummy_ofs_running.tmp"); + + EXPECT_EQ(result, 0); // Expect failure (false) because "SEP_FILES" not found +#ifdef __MPI + } +#endif +} + +#ifdef __MPI +TEST_F(SepCellTest, BcastSepCell) +{ + sep_cell.init(2); // ntype = 2 + // Rank 0 prepares some data (or reads from file) + if (GlobalV::MY_RANK == 0) + { + sep_cell.set_omega(150.0, 0.75); + std::ifstream ifs(pp_dir + stru_filename); + ASSERT_TRUE(ifs.is_open()); + + sep_cell.init(ucell.ntype); + std::ofstream ofs_running_dummy("dummy_ofs_running.tmp"); + int result = sep_cell.read_sep_potentials(ifs, pp_dir, ofs_running_dummy, ucell.atom_label); + ifs.close(); + std::remove("dummy_ofs_running.tmp"); + + EXPECT_EQ(result, 1); // Expect success (true) + } + + sep_cell.bcast_sep_cell(); + + // All ranks should have the same data + EXPECT_EQ(sep_cell.get_ntype(), 2); + // Omega and tpiba2 are NOT part of Sep_Cell::bcast_sep_cell, so they remain default on non-zero ranks + if (GlobalV::MY_RANK == 0) + { + EXPECT_DOUBLE_EQ(sep_cell.get_omega(), 150.0); + EXPECT_DOUBLE_EQ(sep_cell.get_tpiba2(), 0.75); + } + else + { + EXPECT_DOUBLE_EQ(sep_cell.get_omega(), 0.0); // Default + EXPECT_DOUBLE_EQ(sep_cell.get_tpiba2(), 0.0); // Default + } + + ASSERT_EQ(sep_cell.get_sep_enable().size(), 2); + // sep_enable will be broadcast as false from rank 0 due to read_sep_potentials bug + EXPECT_FALSE(sep_cell.get_sep_enable()[0]); + EXPECT_TRUE(sep_cell.get_sep_enable()[1]); + + const auto& seps = sep_cell.get_seps(); + ASSERT_EQ(seps.size(), 2); + + // Check SepPot data (will be default values due to bug and current test setup) + EXPECT_EQ(seps[0].label, ""); // Default broadcasted + EXPECT_EQ(seps[0].mesh, 0); // Default broadcasted + EXPECT_FALSE(seps[0].is_enable); // Default broadcasted + + EXPECT_EQ(seps[1].label, "F"); // Default broadcasted + EXPECT_EQ(seps[1].mesh, 1038); // Default broadcasted + EXPECT_TRUE(seps[1].is_enable); // Default broadcasted + // Note: SepPot::bcast_sep() allocates memory for r and rv on all ranks + // whenever mesh > 0, regardless of is_enable status + if (seps[0].mesh > 0) + { + EXPECT_NE(seps[0].r, nullptr); + EXPECT_NE(seps[0].rv, nullptr); + } + else + { + EXPECT_EQ(seps[0].r, nullptr); + EXPECT_EQ(seps[0].rv, nullptr); + } + EXPECT_NE(seps[1].r, nullptr); + EXPECT_NE(seps[1].rv, nullptr); + EXPECT_DOUBLE_EQ(seps[1].r[0], 3.4643182373e-06); + EXPECT_DOUBLE_EQ(seps[1].rv[0], -2.0868200000e-05); + EXPECT_DOUBLE_EQ(seps[1].r[7], 2.8965849122e-05); + EXPECT_DOUBLE_EQ(seps[1].rv[7], -1.9723800000e-05); +} +#endif // __MPI + +// Main function for running tests +int main(int argc, char** argv) +{ +#ifdef __MPI + MPI_Init(&argc, &argv); + MPI_Comm_size(MPI_COMM_WORLD, &GlobalV::NPROC); + MPI_Comm_rank(MPI_COMM_WORLD, &GlobalV::MY_RANK); +#endif + + testing::InitGoogleTest(&argc, argv); + + // Potentially initialize GlobalV::ofs_running here if not handled by test infra + // e.g., if (GlobalV::MY_RANK == 0) GlobalV::ofs_running.open("sep_cell_test.log"); + // For now, assume it's usable or output to console/dev_null is acceptable. + + int result = RUN_ALL_TESTS(); + +#ifdef __MPI + MPI_Finalize(); +#endif + return result; +} diff --git a/source/source_cell/test/support/C_ca_50.sep b/source/source_cell/test/support/C_ca_50.sep new file mode 100644 index 0000000000..325c9aa6e0 --- /dev/null +++ b/source/source_cell/test/support/C_ca_50.sep @@ -0,0 +1,1014 @@ +Sep.Element C +Sep.XcType ca +Sep.Orbital p +Sep.Points 1006 +Sep.StripAmount 50 + + diff --git a/source/source_cell/test/support/F_pbe_50.sep b/source/source_cell/test/support/F_pbe_50.sep new file mode 100644 index 0000000000..c8bc18b301 --- /dev/null +++ b/source/source_cell/test/support/F_pbe_50.sep @@ -0,0 +1,1046 @@ +Sep.Element F +Sep.XcType pbe +Sep.Orbital p +Sep.Points 1038 +Sep.StripAmount 50 + + diff --git a/source/source_cell/test/support/KPT_custom_weights b/source/source_cell/test/support/KPT_custom_weights new file mode 100644 index 0000000000..e441560a1b --- /dev/null +++ b/source/source_cell/test/support/KPT_custom_weights @@ -0,0 +1,8 @@ +K_POINTS +5 +Direct +0.0 0.0 0.0 0.1 +0.5 0.0 0.0 0.2 +0.0 0.5 0.0 0.3 +0.5 0.5 0.0 0.2 +0.0 0.0 0.5 0.2 diff --git a/source/source_cell/test/support/STRU_LiF b/source/source_cell/test/support/STRU_LiF new file mode 100644 index 0000000000..16f61bcc80 --- /dev/null +++ b/source/source_cell/test/support/STRU_LiF @@ -0,0 +1,28 @@ +ATOMIC_SPECIES +Li 14.0000 Li_ONCV_PBE-1.2.upf upf201 +F 0.0000 F_ONCV_PBE-1.2.upf upf201 + +LATTICE_CONSTANT +1.0000000000 + +LATTICE_VECTORS + 0.0000000000 3.8379626543 3.8379626543 + 3.8379626543 0.0000000000 3.8379626543 + 3.8379626543 3.8379626543 0.0000000000 + +SEP_FILES +Li 0 +F 1 F_pbe_50.sep 0.0 2.5 20.0 1.0 + +ATOMIC_POSITIONS +Direct + +Li #label +0.0000 #magnetism +1 #number of atoms + 0.0000000000 0.0000000000 0.0000000000 m 1 1 1 + +F #label +0.0000 #magnetism +1 #number of atoms + 0.5000000000 0.5000000000 0.5000000000 m 1 1 1 diff --git a/source/source_cell/test/support/STRU_LiF_Warning1 b/source/source_cell/test/support/STRU_LiF_Warning1 new file mode 100644 index 0000000000..9e110b24db --- /dev/null +++ b/source/source_cell/test/support/STRU_LiF_Warning1 @@ -0,0 +1,27 @@ +ATOMIC_SPECIES +Li 14.0000 Li_ONCV_PBE-1.2.upf upf201 +F 0.0000 F_ONCV_PBE-1.2.upf upf201 + +LATTICE_CONSTANT +1.0000000000 + +LATTICE_VECTORS + 0.0000000000 3.8379626543 3.8379626543 + 3.8379626543 0.0000000000 3.8379626543 + 3.8379626543 3.8379626543 0.0000000000 + +SEP_FILES +F 1 F_pbe_50.sep 0.0 2.5 20.0 1.0 + +ATOMIC_POSITIONS +Direct + +Li #label +0.0000 #magnetism +1 #number of atoms + 0.0000000000 0.0000000000 0.0000000000 m 1 1 1 + +F #label +0.0000 #magnetism +1 #number of atoms + 0.5000000000 0.5000000000 0.5000000000 m 1 1 1 diff --git a/source/source_cell/test/support/mock_unitcell.cpp b/source/source_cell/test/support/mock_unitcell.cpp index 46d7303f56..ce8f7460f3 100644 --- a/source/source_cell/test/support/mock_unitcell.cpp +++ b/source/source_cell/test/support/mock_unitcell.cpp @@ -17,6 +17,10 @@ UnitCell::~UnitCell() { delete[] atoms; } } +SepPot::SepPot(){} +SepPot::~SepPot(){} +Sep_Cell::Sep_Cell() noexcept {} +Sep_Cell::~Sep_Cell() noexcept {} void UnitCell::print_cell(std::ofstream& ofs) const {} diff --git a/source/source_cell/test/unitcell_test.cpp b/source/source_cell/test/unitcell_test.cpp index d0f55c76e1..47642b22a1 100644 --- a/source/source_cell/test/unitcell_test.cpp +++ b/source/source_cell/test/unitcell_test.cpp @@ -172,7 +172,7 @@ using UcellDeathTest = UcellTest; TEST_F(UcellTest, Constructor) { EXPECT_EQ(ucell->Coordinate, "Direct"); - EXPECT_EQ(ucell->latName, "none"); + EXPECT_EQ(ucell->latName, "user_defined_lattice"); EXPECT_DOUBLE_EQ(ucell->lat0, 0.0); EXPECT_DOUBLE_EQ(ucell->lat0_angstrom, 0.0); EXPECT_EQ(ucell->ntype, 0); @@ -263,39 +263,9 @@ TEST_F(UcellTest, Setup) } } -TEST_F(UcellDeathTest, SetupWarningQuit1) -{ - std::string latname_in = "bcc"; - int ntype_in = 1; - int lmaxmax_in = 2; - bool init_vel_in = false; - PARAM.input.relax_new = false; - std::string fixed_axes_in = "volume"; - testing::internal::CaptureStdout(); - EXPECT_EXIT(ucell->setup(latname_in, ntype_in, lmaxmax_in, init_vel_in, fixed_axes_in), - ::testing::ExitedWithCode(1), - ""); - output = testing::internal::GetCapturedStdout(); - EXPECT_THAT(output, - testing::HasSubstr( - "there are bugs in the old implementation; set relax_new to be 1 for fixed_volume relaxation")); -} - -TEST_F(UcellDeathTest, SetupWarningQuit2) -{ - std::string latname_in = "bcc"; - int ntype_in = 1; - int lmaxmax_in = 2; - bool init_vel_in = false; - PARAM.input.relax_new = false; - std::string fixed_axes_in = "shape"; - testing::internal::CaptureStdout(); - EXPECT_EXIT(ucell->setup(latname_in, ntype_in, lmaxmax_in, init_vel_in, fixed_axes_in), - ::testing::ExitedWithCode(1), - ""); - output = testing::internal::GetCapturedStdout(); - EXPECT_THAT(output, testing::HasSubstr("set relax_new to be 1 for fixed_shape relaxation")); -} +// These tests are removed because fixed_axes="volume" and fixed_axes="shape" +// are now supported with relax_new=false (see commit cdc3457f5a8546cda869655c3faabd8b29687aff) +// The old implementation now properly handles these constraints via post-update enforcement TEST_F(UcellDeathTest, CompareAatomLabel) { @@ -577,7 +547,7 @@ TEST_F(UcellTest, RemakeCell) TEST_F(UcellDeathTest, RemakeCellWarnings) { - std::vector latname_in = {"none", "trigonal", "bacm", "triclinic", "arbitrary"}; + std::vector latname_in = {"user_defined_lattice", "trigonal", "bacm", "triclinic", "arbitrary"}; for (int i = 0; i < latname_in.size(); ++i) { ucell->latvec.e11 = 10.0; @@ -593,7 +563,7 @@ TEST_F(UcellDeathTest, RemakeCellWarnings) testing::internal::CaptureStdout(); EXPECT_EXIT(unitcell::remake_cell(ucell->lat), ::testing::ExitedWithCode(1), ""); std::string output = testing::internal::GetCapturedStdout(); - if (latname_in[i] == "none") + if (latname_in[i] == "user_defined_lattice") { EXPECT_THAT(output, testing::HasSubstr("to use fixed_ibrav, latname must be provided")); } @@ -1120,27 +1090,14 @@ TEST_F(UcellTest, ReadOrbFile) std::string orb_file = "./support/C.orb"; std::ofstream ofs_running; ofs_running.open("tmp_readorbfile"); - elecstate::read_orb_file(0, orb_file, ofs_running, &(ucell->atoms[0])); + bool result = elecstate::read_orb_file(0, orb_file, ofs_running, &(ucell->atoms[0])); + ofs_running << " result=" << result << std::endl; + EXPECT_TRUE(result); ofs_running.close(); EXPECT_EQ(ucell->atoms[0].nw, 25); remove("tmp_readorbfile"); } -TEST_F(UcellDeathTest, ReadOrbFileWarning) -{ - UcellTestPrepare utp = UcellTestLib["C1H2-Read"]; - PARAM.input.relax_new = utp.relax_new; - ucell = utp.SetUcellInfo(); - std::string orb_file = "./support/CC.orb"; - std::ofstream ofs_running; - ofs_running.open("tmp_readorbfile"); - testing::internal::CaptureStdout(); - EXPECT_EXIT(elecstate::read_orb_file(0, orb_file, ofs_running, &(ucell->atoms[0])), ::testing::ExitedWithCode(1), ""); - output = testing::internal::GetCapturedStdout(); - EXPECT_THAT(output, testing::HasSubstr("ABACUS Cannot find the ORBITAL file")); - ofs_running.close(); - remove("tmp_readorbfile"); -} class UcellTestReadStru : public ::testing::Test { protected: @@ -1917,3 +1874,21 @@ TEST_F(UcellTestReadStru, ReadAtomPositionsWarning5) remove("read_atom_positions.warn"); } #endif +TEST_F(UcellTest, ReadOrbFileWarning) +{ + UcellTestPrepare utp = UcellTestLib["C1H2-Read"]; + PARAM.input.relax_new = utp.relax_new; + ucell = utp.SetUcellInfo(); + std::string orb_file = "./support/CC.orb"; + std::ofstream ofs_running; + ofs_running.open("tmp_readorbfilewarning"); + testing::internal::CaptureStdout(); + bool result = elecstate::read_orb_file(0, orb_file, ofs_running, &(ucell->atoms[0])); + output = testing::internal::GetCapturedStdout(); + ofs_running << output << std::endl; + EXPECT_FALSE(result); + EXPECT_THAT(output, testing::HasSubstr("Element index 1")); + EXPECT_THAT(output, testing::HasSubstr("orbital file: ./support/CC.orb")); + ofs_running.close(); + remove("tmp_readorbfilewarning"); +} diff --git a/source/source_cell/test/unitcell_test_para.cpp b/source/source_cell/test/unitcell_test_para.cpp index 81f0a65055..ca6b3bad1f 100644 --- a/source/source_cell/test/unitcell_test_para.cpp +++ b/source/source_cell/test/unitcell_test_para.cpp @@ -1,3 +1,6 @@ +#include +#include +#include #include "gmock/gmock.h" #include "gtest/gtest.h" #define private public @@ -249,12 +252,17 @@ TEST_F(UcellTest, ReadPseudo) ifs.open("./H/H.NONLOCAL"); EXPECT_TRUE(ifs.good()); ifs.close(); - std::string command1 = "test -d C && rm -rf C"; - std::string command2 = "test -d H && rm -rf H"; - auto error1 = std::system(command1.c_str()); - EXPECT_EQ(error1, 0); - auto error2 = std::system(command2.c_str()); - EXPECT_EQ(error2, 0); + + struct stat st; + int ret1 = stat("C", &st); + EXPECT_EQ(ret1, 0); + EXPECT_TRUE(S_ISDIR(st.st_mode)); + rmdir("C"); + + int ret2 = stat("H", &st); + EXPECT_EQ(ret2, 0); + EXPECT_TRUE(S_ISDIR(st.st_mode)); + rmdir("H"); } // read_cell_pseudopots EXPECT_FALSE(ucell->atoms[0].ncpp.has_so); diff --git a/source/source_cell/test_pw/CMakeLists.txt b/source/source_cell/test_pw/CMakeLists.txt index 1776bf38c2..9bcfd02210 100644 --- a/source/source_cell/test_pw/CMakeLists.txt +++ b/source/source_cell/test_pw/CMakeLists.txt @@ -9,14 +9,14 @@ install(FILES unitcell_test_pw_para.sh DESTINATION ${CMAKE_CURRENT_BINARY_DIR}) AddTest( TARGET MODULE_CELL_unitcell_test_pw - LIBS parameter ${math_libs} base device - SOURCES unitcell_test_pw.cpp ../unitcell.cpp ../read_atoms.cpp ../atom_spec.cpp ../update_cell.cpp ../bcast_cell.cpp + LIBS parameter ${math_libs} base device + SOURCES unitcell_test_pw.cpp ../unitcell.cpp ../read_atoms.cpp ../read_atoms_helper.cpp ../atom_spec.cpp ../update_cell.cpp ../bcast_cell.cpp ../atom_pseudo.cpp ../pseudo.cpp ../read_pp.cpp ../read_pp_complete.cpp ../read_pp_upf201.cpp ../read_pp_upf100.cpp ../read_stru.cpp ../read_atom_species.cpp - ../read_pp_vwr.cpp ../read_pp_blps.cpp ../../source_io/output.cpp + ../read_pp_vwr.cpp ../read_pp_blps.cpp ../../source_io/module_output/output.cpp ../../source_estate/read_pseudo.cpp ../../source_estate/cal_nelec_nband.cpp - ../../source_estate/read_orb.cpp ../../source_cell/print_cell.cpp - ../../source_estate/cal_wfc.cpp + ../../source_estate/read_orb.cpp ../print_cell.cpp + ../../source_estate/cal_wfc.cpp ../sep.cpp ../sep_cell.cpp ) find_program(BASH bash) diff --git a/source/source_cell/unitcell.cpp b/source/source_cell/unitcell.cpp index 44b620089c..bae4b1b2dd 100644 --- a/source/source_cell/unitcell.cpp +++ b/source/source_cell/unitcell.cpp @@ -6,6 +6,7 @@ #include "source_base/global_variable.h" #include "unitcell.h" #include "bcast_cell.h" +#include "source_base/tool_quit.h" #include "source_io/module_parameter/parameter.h" #include "source_cell/read_stru.h" #include "source_base/atom_in.h" @@ -13,6 +14,7 @@ #include "source_base/global_file.h" #include "source_base/parallel_common.h" #include "source_io/module_parameter/parameter.h" +#include "source_cell/sep_cell.h" #ifdef __MPI #include "mpi.h" @@ -23,14 +25,14 @@ #endif #include "update_cell.h" -UnitCell::UnitCell() +UnitCell::UnitCell() { itia2iat.create(1, 1); } -UnitCell::~UnitCell() +UnitCell::~UnitCell() { - if (set_atom_flag) + if (set_atom_flag) { delete[] atoms; } @@ -181,7 +183,7 @@ std::vector> UnitCell::get_constrain() const //============================================================== // Calculate various lattice related quantities for given latvec //============================================================== -void UnitCell::setup_cell(const std::string& fn, std::ofstream& log) +void UnitCell::setup_cell(const std::string& fn, std::ofstream& log) { ModuleBase::TITLE("UnitCell", "setup_cell"); @@ -200,6 +202,8 @@ void UnitCell::setup_cell(const std::string& fn, std::ofstream& log) bool ok = true; bool ok2 = true; + bool ok3 = true; // for sep potential in DFT-1/2 + // (3) read in atom information this->atom_mass.resize(ntype); this->atom_label.resize(ntype); @@ -207,17 +211,17 @@ void UnitCell::setup_cell(const std::string& fn, std::ofstream& log) this->pseudo_type.resize(ntype); this->orbital_fn.resize(ntype); - if (GlobalV::MY_RANK == 0) + if (GlobalV::MY_RANK == 0) { // open "atom_unitcell" file. std::ifstream ifa(fn.c_str(), std::ios::in); - if (!ifa) + if (!ifa) { GlobalV::ofs_warning << fn; ok = false; } - if (ok) + if (ok) { log << "\n\n"; log << " >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>" << std::endl; @@ -245,6 +249,16 @@ void UnitCell::setup_cell(const std::string& fn, std::ofstream& log) //======================== const bool read_lattice_constant = unitcell::read_lattice_constant(ifa, log ,this->lat); //========================== + // readl sep potential, currently using the pseudopotential folder (pseudo_dir in INPUT) + //========================== + if (PARAM.inp.dfthalf_type > 0) { + // GlobalC::sep_cell.init(this->ntype); + // ok3 = GlobalC::sep_cell.read_sep_potentials(ifa, PARAM.inp.pseudo_dir, GlobalV::ofs_warning, this->atom_label); + + sep_cell.init(this->ntype); + ok3 = sep_cell.read_sep_potentials(ifa, PARAM.inp.pseudo_dir, GlobalV::ofs_warning, this->atom_label); + } + //========================== // call read_atom_positions //========================== ok2 = unitcell::read_atom_positions(*this, ifa, log, GlobalV::ofs_warning); @@ -253,6 +267,7 @@ void UnitCell::setup_cell(const std::string& fn, std::ofstream& log) #ifdef __MPI Parallel_Common::bcast_bool(ok); Parallel_Common::bcast_bool(ok2); + Parallel_Common::bcast_bool(ok3); #endif if (!ok) { ModuleBase::WARNING_QUIT( @@ -263,9 +278,14 @@ void UnitCell::setup_cell(const std::string& fn, std::ofstream& log) ModuleBase::WARNING_QUIT("UnitCell::setup_cell", "Something wrong during read_atom_positions."); } + if (!ok3) { + ModuleBase::WARNING_QUIT("UnitCell::setup_cell", "Something wrong during read_sep_potentials"); + } #ifdef __MPI unitcell::bcast_unitcell(*this); + // GlobalC::sep_cell.bcast_sep_cell(); + sep_cell.bcast_sep_cell(); #endif //======================================================== @@ -282,11 +302,11 @@ void UnitCell::setup_cell(const std::string& fn, std::ofstream& log) std::cout << "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%" << std::endl; std::cout << " Warning: The lattice vector is left-handed; a right-handed vector is prefered." << std::endl; std::cout << "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%" << std::endl; - GlobalV::ofs_warning << + GlobalV::ofs_warning << "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%" << std::endl; - GlobalV::ofs_warning << + GlobalV::ofs_warning << " Warning: The lattice vector is left-handed; a right-handed vector is prefered." << std::endl; - GlobalV::ofs_warning << + GlobalV::ofs_warning << "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%" << std::endl; this->omega = std::abs(this->omega); } @@ -329,11 +349,14 @@ void UnitCell::setup_cell(const std::string& fn, std::ofstream& log) //=================================== this->set_iat2itia(); + // GlobalC::sep_cell.set_omega(this->omega, this->tpiba2); + sep_cell.set_omega(this->omega, this->tpiba2); + return; } -void UnitCell::set_iat2iwt(const int& npol_in) +void UnitCell::set_iat2iwt(const int& npol_in) { #ifdef __DEBUG assert(npol_in == 1 || npol_in == 2); @@ -345,9 +368,9 @@ void UnitCell::set_iat2iwt(const int& npol_in) int iat = 0; int iwt = 0; - for (int it = 0; it < this->ntype; it++) + for (int it = 0; it < this->ntype; it++) { - for (int ia = 0; ia < atoms[it].na; ia++) + for (int ia = 0; ia < atoms[it].na; ia++) { this->iat2iwt[iat] = iwt; iwt += atoms[it].nw * this->npol; @@ -360,14 +383,14 @@ void UnitCell::set_iat2iwt(const int& npol_in) // check if any atom can be moved -bool UnitCell::if_atoms_can_move() const +bool UnitCell::if_atoms_can_move() const { - for (int it = 0; it < this->ntype; it++) + for (int it = 0; it < this->ntype; it++) { Atom* atom = &atoms[it]; - for (int ia = 0; ia < atom->na; ia++) + for (int ia = 0; ia < atom->na; ia++) { - if (atom->mbl[ia].x || atom->mbl[ia].y || atom->mbl[ia].z) + if (atom->mbl[ia].x || atom->mbl[ia].y || atom->mbl[ia].z) { return true; } @@ -377,10 +400,10 @@ bool UnitCell::if_atoms_can_move() const } // check if lattice vector can be changed -bool UnitCell::if_cell_can_change() const +bool UnitCell::if_cell_can_change() const { // need to be fixed next - if (this->lc[0] || this->lc[1] || this->lc[2]) + if (this->lc[0] || this->lc[1] || this->lc[2]) { return true; } @@ -405,18 +428,7 @@ void UnitCell::setup(const std::string& latname_in, this->lc[0] = 1; this->lc[1] = 1; this->lc[2] = 1; - if (!PARAM.inp.relax_new) { - ModuleBase::WARNING_QUIT( - "Input", - "there are bugs in the old implementation; set relax_new to be " - "1 for fixed_volume relaxation"); - } } else if (fixed_axes_in == "shape") { - if (!PARAM.inp.relax_new) { - ModuleBase::WARNING_QUIT( - "Input", - "set relax_new to be 1 for fixed_shape relaxation"); - } this->lc[0] = 1; this->lc[1] = 1; this->lc[2] = 1; @@ -457,7 +469,7 @@ void UnitCell::setup(const std::string& latname_in, } -void UnitCell::compare_atom_labels(const std::string &label1, const std::string &label2) +void UnitCell::compare_atom_labels(const std::string &label1, const std::string &label2) { if (label1!= label2) //'!( "Ag" == "Ag" || "47" == "47" || "Silver" == Silver" )' { @@ -475,26 +487,26 @@ void UnitCell::compare_atom_labels(const std::string &label1, const std::string { std::string stru_label = ""; std::string psuedo_label = ""; - for (int ip = 0; ip < label1.length(); ip++) + for (int ip = 0; ip < label1.length(); ip++) { - if (!(isdigit(label1[ip]) || label1[ip] == '_')) + if (!(isdigit(label1[ip]) || label1[ip] == '_')) { stru_label += label1[ip]; - } - else + } + else { break; } } stru_label[0] = toupper(stru_label[0]); - for (int ip = 0; ip < label2.length(); ip++) + for (int ip = 0; ip < label2.length(); ip++) { - if (!(isdigit(label2[ip]) || label2[ip] == '_')) + if (!(isdigit(label2[ip]) || label2[ip] == '_')) { psuedo_label += label2[ip]; - } - else + } + else { break; } diff --git a/source/source_cell/unitcell.h b/source/source_cell/unitcell.h index 7e1b3ecb1e..4b0e702a67 100644 --- a/source/source_cell/unitcell.h +++ b/source/source_cell/unitcell.h @@ -3,8 +3,9 @@ #include "source_base/global_function.h" #include "source_base/global_variable.h" +#include "source_cell/sep_cell.h" #include "source_estate/magnetism.h" -#include "source_io/output.h" +#include "source_io/module_output/output.h" #include "module_symmetry/symmetry.h" #ifdef __LCAO @@ -16,6 +17,7 @@ class UnitCell { public: Atom* atoms = nullptr; + Sep_Cell sep_cell; bool set_atom_flag = false; // added on 2009-3-8 by mohan Magnetism magnet; // magnetism Yu Liu 2021-07-03 diff --git a/source/source_cell/unitcell_data.h b/source/source_cell/unitcell_data.h index c93c469866..522d638fd2 100644 --- a/source/source_cell/unitcell_data.h +++ b/source/source_cell/unitcell_data.h @@ -7,7 +7,7 @@ struct Lattice { std::string Coordinate = "Direct"; // "Direct" or "Cartesian" or "Cartesian_angstrom" - std::string latName = "none"; // Lattice name + std::string latName = "user_defined_lattice"; // Lattice name double lat0 = 0.0; // Lattice constant(bohr)(a.u.) double lat0_angstrom = 0.0; // Lattice constant(angstrom) double tpiba = 0.0; // 2*pi / lat0; @@ -64,4 +64,4 @@ struct Statistics } }; -#endif \ No newline at end of file +#endif diff --git a/source/source_cell/update_cell.cpp b/source/source_cell/update_cell.cpp index 3768386e0c..8e2efaa04e 100644 --- a/source/source_cell/update_cell.cpp +++ b/source/source_cell/update_cell.cpp @@ -15,290 +15,290 @@ void remake_cell(Lattice& lat) std::string& latName = lat.latName; ModuleBase::Matrix3& latvec = lat.latvec; - if (latName == "none") + if (latName == "user_defined_lattice") { - ModuleBase::WARNING_QUIT("UnitCell", "to use fixed_ibrav, latname must be provided"); - } - else if (latName == "sc") // ibrav = 1 - { - double celldm = std::sqrt(pow(latvec.e11, 2) + pow(latvec.e12, 2) - + pow(latvec.e13, 2)); - - latvec.Zero(); - latvec.e11 = latvec.e22 = latvec.e33 = celldm; - } - else if (latName == "fcc") // ibrav = 2 - { - double celldm = std::sqrt(pow(latvec.e11, 2) + pow(latvec.e12, 2) - + pow(latvec.e13, 2)) / std::sqrt(2.0); - - latvec.e11 = -celldm; - latvec.e12 = 0.0; - latvec.e13 = celldm; - latvec.e21 = 0.0; - latvec.e22 = celldm; - latvec.e23 = celldm; - latvec.e31 = -celldm; - latvec.e32 = celldm; - latvec.e33 = 0.0; - } - else if (latName == "bcc") // ibrav = 3 - { - double celldm = std::sqrt(pow(latvec.e11, 2) + pow(latvec.e12, 2) - + pow(latvec.e13, 2)) - / std::sqrt(3.0); - - latvec.e11 = celldm; - latvec.e12 = celldm; - latvec.e13 = celldm; - latvec.e21 = -celldm; - latvec.e22 = celldm; - latvec.e23 = celldm; - latvec.e31 = -celldm; - latvec.e32 = -celldm; - latvec.e33 = celldm; - } - else if (latName == "hexagonal") // ibrav = 4 - { - double celldm1 = std::sqrt(pow(latvec.e11, 2) + pow(latvec.e12, 2) - + pow(latvec.e13, 2)); - double celldm3 = std::sqrt(pow(latvec.e31, 2) + pow(latvec.e32, 2) - + pow(latvec.e33, 2)); - double e22 = sqrt(3.0) / 2.0; - - latvec.e11 = celldm1; - latvec.e12 = 0.0; - latvec.e13 = 0.0; - latvec.e21 = -0.5 * celldm1; - latvec.e22 = celldm1 * e22; - latvec.e23 = 0.0; - latvec.e31 = 0.0; - latvec.e32 = 0.0; - latvec.e33 = celldm3; - } - else if (latName == "trigonal") // ibrav = 5 - { - double celldm1 = std::sqrt(pow(latvec.e11, 2) + pow(latvec.e12, 2) - + pow(latvec.e13, 2)); - double celldm2 = std::sqrt(pow(latvec.e21, 2) + pow(latvec.e22, 2) - + pow(latvec.e23, 2)); - double celldm12 = (latvec.e11 * latvec.e21 + latvec.e12 * latvec.e22 - + latvec.e13 * latvec.e23); - double cos12 = celldm12 / celldm1 / celldm2; - - if (cos12 <= -0.5 || cos12 >= 1.0) - { - ModuleBase::WARNING_QUIT("unitcell", "wrong cos12!"); - } - double t1 = sqrt(1.0 + 2.0 * cos12); - double t2 = sqrt(1.0 - cos12); - - double e11 = celldm1 * t2 / sqrt(2.0); - double e12 = -celldm1 * t2 / sqrt(6.0); - double e13 = celldm1 * t1 / sqrt(3.0); - double e22 = celldm1 * sqrt(2.0) * t2 / sqrt(3.0); - - latvec.e11 = e11; - latvec.e12 = e12; - latvec.e13 = e13; - latvec.e21 = 0.0; - latvec.e22 = e22; - latvec.e23 = e13; - latvec.e31 = -e11; - latvec.e32 = e12; - latvec.e33 = e13; - } - else if (latName == "st") // ibrav = 6 - { - double celldm1 = std::sqrt(pow(latvec.e11, 2) + pow(latvec.e12, 2) - + pow(latvec.e13, 2)); - double celldm3 = std::sqrt(pow(latvec.e31, 2) + pow(latvec.e32, 2) - + pow(latvec.e33, 2)); - latvec.e11 = celldm1; - latvec.e12 = 0.0; - latvec.e13 = 0.0; - latvec.e21 = 0.0; - latvec.e22 = celldm1; - latvec.e23 = 0.0; - latvec.e31 = 0.0; - latvec.e32 = 0.0; - latvec.e33 = celldm3; - } - else if (latName == "bct") // ibrav = 7 - { - double celldm1 = std::abs(latvec.e11); - double celldm2 = std::abs(latvec.e13); - - latvec.e11 = celldm1; - latvec.e12 = -celldm1; - latvec.e13 = celldm2; - latvec.e21 = celldm1; - latvec.e22 = celldm1; - latvec.e23 = celldm2; - latvec.e31 = -celldm1; - latvec.e32 = -celldm1; - latvec.e33 = celldm2; - } - else if (latName == "so") // ibrav = 8 - { - double celldm1 = std::sqrt(pow(latvec.e11, 2) + pow(latvec.e12, 2) - + pow(latvec.e13, 2)); - double celldm2 = std::sqrt(pow(latvec.e21, 2) + pow(latvec.e22, 2) - + pow(latvec.e23, 2)); - double celldm3 = std::sqrt(pow(latvec.e31, 2) + pow(latvec.e32, 2) - + pow(latvec.e33, 2)); - - latvec.e11 = celldm1; - latvec.e12 = 0.0; - latvec.e13 = 0.0; - latvec.e21 = 0.0; - latvec.e22 = celldm2; - latvec.e23 = 0.0; - latvec.e31 = 0.0; - latvec.e32 = 0.0; - latvec.e33 = celldm3; - } - else if (latName == "baco") // ibrav = 9 - { - double celldm1 = std::abs(latvec.e11); - double celldm2 = std::abs(latvec.e22); - double celldm3 = std::abs(latvec.e33); - - latvec.e11 = celldm1; - latvec.e12 = celldm2; - latvec.e13 = 0.0; - latvec.e21 = -celldm1; - latvec.e22 = celldm2; - latvec.e23 = 0.0; - latvec.e31 = 0.0; - latvec.e32 = 0.0; - latvec.e33 = celldm3; - } - else if (latName == "fco") // ibrav = 10 - { - double celldm1 = std::abs(latvec.e11); - double celldm2 = std::abs(latvec.e22); - double celldm3 = std::abs(latvec.e33); - - latvec.e11 = celldm1; - latvec.e12 = 0.0; - latvec.e13 = celldm3; - latvec.e21 = celldm1; - latvec.e22 = celldm2; - latvec.e23 = 0.0; - latvec.e31 = 0.0; - latvec.e32 = celldm2; - latvec.e33 = celldm3; - } - else if (latName == "bco") // ibrav = 11 - { - double celldm1 = std::abs(latvec.e11); - double celldm2 = std::abs(latvec.e12); - double celldm3 = std::abs(latvec.e13); - - latvec.e11 = celldm1; - latvec.e12 = celldm2; - latvec.e13 = celldm3; - latvec.e21 = -celldm1; - latvec.e22 = celldm2; - latvec.e23 = celldm3; - latvec.e31 = -celldm1; - latvec.e32 = -celldm2; - latvec.e33 = celldm3; - } - else if (latName == "sm") // ibrav = 12 - { - double celldm1 = std::sqrt(pow(latvec.e11, 2) + pow(latvec.e12, 2) - + pow(latvec.e13, 2)); - double celldm2 = std::sqrt(pow(latvec.e21, 2) + pow(latvec.e22, 2) - + pow(latvec.e23, 2)); - double celldm3 = std::sqrt(pow(latvec.e31, 2) + pow(latvec.e32, 2) - + pow(latvec.e33, 2)); - double celldm12 = (latvec.e11 * latvec.e21 + latvec.e12 * latvec.e22 - + latvec.e13 * latvec.e23); - double cos12 = celldm12 / celldm1 / celldm2; - - double e21 = celldm2 * cos12; - double e22 = celldm2 * std::sqrt(1.0 - cos12 * cos12); - - latvec.e11 = celldm1; - latvec.e12 = 0.0; - latvec.e13 = 0.0; - latvec.e21 = e21; - latvec.e22 = e22; - latvec.e23 = 0.0; - latvec.e31 = 0.0; - latvec.e32 = 0.0; - latvec.e33 = celldm3; - } - else if (latName == "bacm") // ibrav = 13 - { - double celldm1 = std::abs(latvec.e11); - double celldm2 = std::sqrt(pow(latvec.e21, 2) + pow(latvec.e22, 2) - + pow(latvec.e23, 2)); - double celldm3 = std::abs(latvec.e13); - - double cos12 = latvec.e21 / celldm2; - if (cos12 >= 1.0) - { - ModuleBase::WARNING_QUIT("unitcell", "wrong cos12!"); - } - - double e21 = celldm2 * cos12; - double e22 = celldm2 * std::sqrt(1.0 - cos12 * cos12); - - latvec.e11 = celldm1; - latvec.e12 = 0.0; - latvec.e13 = -celldm3; - latvec.e21 = e21; - latvec.e22 = e22; - latvec.e23 = 0.0; - latvec.e31 = celldm1; - latvec.e32 = 0.0; - latvec.e33 = celldm3; - } - else if (latName == "triclinic") // ibrav = 14 - { - double celldm1 = std::sqrt(pow(latvec.e11, 2) + pow(latvec.e12, 2) - + pow(latvec.e13, 2)); - double celldm2 = std::sqrt(pow(latvec.e21, 2) + pow(latvec.e22, 2) - + pow(latvec.e23, 2)); - double celldm3 = std::sqrt(pow(latvec.e31, 2) + pow(latvec.e32, 2) - + pow(latvec.e33, 2)); - double celldm12 = (latvec.e11 * latvec.e21 + latvec.e12 * latvec.e22 - + latvec.e13 * latvec.e23); - double cos12 = celldm12 / celldm1 / celldm2; - double celldm13 = (latvec.e11 * latvec.e31 + latvec.e12 * latvec.e32 - + latvec.e13 * latvec.e33); - double cos13 = celldm13 / celldm1 / celldm3; - double celldm23 = (latvec.e21 * latvec.e31 + latvec.e22 * latvec.e32 - + latvec.e23 * latvec.e33); - double cos23 = celldm23 / celldm2 / celldm3; - - double sin12 = std::sqrt(1.0 - cos12 * cos12); - if (cos12 >= 1.0) - { - ModuleBase::WARNING_QUIT("unitcell", "wrong cos12!"); - } + ModuleBase::WARNING_QUIT("UnitCell", "to use fixed_ibrav, latname must be provided"); + } + else if (latName == "sc") // ibrav = 1 + { + double celldm = std::sqrt(pow(latvec.e11, 2) + pow(latvec.e12, 2) + + pow(latvec.e13, 2)); - latvec.e11 = celldm1; - latvec.e12 = 0.0; - latvec.e13 = 0.0; - latvec.e21 = celldm2 * cos12; - latvec.e22 = celldm2 * sin12; - latvec.e23 = 0.0; - latvec.e31 = celldm3 * cos13; - latvec.e32 = celldm3 * (cos23 - cos13 * cos12) / sin12; - double term = 1.0 + 2.0 * cos12 * cos13 * cos23 - cos12 * cos12 - - cos13 * cos13 - cos23 * cos23; - term = sqrt(term) / sin12; - latvec.e33 = celldm3 * term; + latvec.Zero(); + latvec.e11 = latvec.e22 = latvec.e33 = celldm; + } + else if (latName == "fcc") // ibrav = 2 + { + double celldm = std::sqrt(pow(latvec.e11, 2) + pow(latvec.e12, 2) + + pow(latvec.e13, 2)) / std::sqrt(2.0); + + latvec.e11 = -celldm; + latvec.e12 = 0.0; + latvec.e13 = celldm; + latvec.e21 = 0.0; + latvec.e22 = celldm; + latvec.e23 = celldm; + latvec.e31 = -celldm; + latvec.e32 = celldm; + latvec.e33 = 0.0; + } + else if (latName == "bcc") // ibrav = 3 + { + double celldm = std::sqrt(pow(latvec.e11, 2) + pow(latvec.e12, 2) + + pow(latvec.e13, 2)) + / std::sqrt(3.0); + + latvec.e11 = celldm; + latvec.e12 = celldm; + latvec.e13 = celldm; + latvec.e21 = -celldm; + latvec.e22 = celldm; + latvec.e23 = celldm; + latvec.e31 = -celldm; + latvec.e32 = -celldm; + latvec.e33 = celldm; + } + else if (latName == "hexagonal") // ibrav = 4 + { + double celldm1 = std::sqrt(pow(latvec.e11, 2) + pow(latvec.e12, 2) + + pow(latvec.e13, 2)); + double celldm3 = std::sqrt(pow(latvec.e31, 2) + pow(latvec.e32, 2) + + pow(latvec.e33, 2)); + double e22 = sqrt(3.0) / 2.0; + + latvec.e11 = celldm1; + latvec.e12 = 0.0; + latvec.e13 = 0.0; + latvec.e21 = -0.5 * celldm1; + latvec.e22 = celldm1 * e22; + latvec.e23 = 0.0; + latvec.e31 = 0.0; + latvec.e32 = 0.0; + latvec.e33 = celldm3; + } + else if (latName == "trigonal") // ibrav = 5 + { + double celldm1 = std::sqrt(pow(latvec.e11, 2) + pow(latvec.e12, 2) + + pow(latvec.e13, 2)); + double celldm2 = std::sqrt(pow(latvec.e21, 2) + pow(latvec.e22, 2) + + pow(latvec.e23, 2)); + double celldm12 = (latvec.e11 * latvec.e21 + latvec.e12 * latvec.e22 + + latvec.e13 * latvec.e23); + double cos12 = celldm12 / celldm1 / celldm2; + + if (cos12 <= -0.5 || cos12 >= 1.0) + { + ModuleBase::WARNING_QUIT("unitcell", "wrong cos12!"); + } + double t1 = sqrt(1.0 + 2.0 * cos12); + double t2 = sqrt(1.0 - cos12); + + double e11 = celldm1 * t2 / sqrt(2.0); + double e12 = -celldm1 * t2 / sqrt(6.0); + double e13 = celldm1 * t1 / sqrt(3.0); + double e22 = celldm1 * sqrt(2.0) * t2 / sqrt(3.0); + + latvec.e11 = e11; + latvec.e12 = e12; + latvec.e13 = e13; + latvec.e21 = 0.0; + latvec.e22 = e22; + latvec.e23 = e13; + latvec.e31 = -e11; + latvec.e32 = e12; + latvec.e33 = e13; + } + else if (latName == "st") // ibrav = 6 + { + double celldm1 = std::sqrt(pow(latvec.e11, 2) + pow(latvec.e12, 2) + + pow(latvec.e13, 2)); + double celldm3 = std::sqrt(pow(latvec.e31, 2) + pow(latvec.e32, 2) + + pow(latvec.e33, 2)); + latvec.e11 = celldm1; + latvec.e12 = 0.0; + latvec.e13 = 0.0; + latvec.e21 = 0.0; + latvec.e22 = celldm1; + latvec.e23 = 0.0; + latvec.e31 = 0.0; + latvec.e32 = 0.0; + latvec.e33 = celldm3; + } + else if (latName == "bct") // ibrav = 7 + { + double celldm1 = std::abs(latvec.e11); + double celldm2 = std::abs(latvec.e13); + + latvec.e11 = celldm1; + latvec.e12 = -celldm1; + latvec.e13 = celldm2; + latvec.e21 = celldm1; + latvec.e22 = celldm1; + latvec.e23 = celldm2; + latvec.e31 = -celldm1; + latvec.e32 = -celldm1; + latvec.e33 = celldm2; + } + else if (latName == "so") // ibrav = 8 + { + double celldm1 = std::sqrt(pow(latvec.e11, 2) + pow(latvec.e12, 2) + + pow(latvec.e13, 2)); + double celldm2 = std::sqrt(pow(latvec.e21, 2) + pow(latvec.e22, 2) + + pow(latvec.e23, 2)); + double celldm3 = std::sqrt(pow(latvec.e31, 2) + pow(latvec.e32, 2) + + pow(latvec.e33, 2)); + + latvec.e11 = celldm1; + latvec.e12 = 0.0; + latvec.e13 = 0.0; + latvec.e21 = 0.0; + latvec.e22 = celldm2; + latvec.e23 = 0.0; + latvec.e31 = 0.0; + latvec.e32 = 0.0; + latvec.e33 = celldm3; + } + else if (latName == "baco") // ibrav = 9 + { + double celldm1 = std::abs(latvec.e11); + double celldm2 = std::abs(latvec.e22); + double celldm3 = std::abs(latvec.e33); + + latvec.e11 = celldm1; + latvec.e12 = celldm2; + latvec.e13 = 0.0; + latvec.e21 = -celldm1; + latvec.e22 = celldm2; + latvec.e23 = 0.0; + latvec.e31 = 0.0; + latvec.e32 = 0.0; + latvec.e33 = celldm3; + } + else if (latName == "fco") // ibrav = 10 + { + double celldm1 = std::abs(latvec.e11); + double celldm2 = std::abs(latvec.e22); + double celldm3 = std::abs(latvec.e33); + + latvec.e11 = celldm1; + latvec.e12 = 0.0; + latvec.e13 = celldm3; + latvec.e21 = celldm1; + latvec.e22 = celldm2; + latvec.e23 = 0.0; + latvec.e31 = 0.0; + latvec.e32 = celldm2; + latvec.e33 = celldm3; + } + else if (latName == "bco") // ibrav = 11 + { + double celldm1 = std::abs(latvec.e11); + double celldm2 = std::abs(latvec.e12); + double celldm3 = std::abs(latvec.e13); + + latvec.e11 = celldm1; + latvec.e12 = celldm2; + latvec.e13 = celldm3; + latvec.e21 = -celldm1; + latvec.e22 = celldm2; + latvec.e23 = celldm3; + latvec.e31 = -celldm1; + latvec.e32 = -celldm2; + latvec.e33 = celldm3; + } + else if (latName == "sm") // ibrav = 12 + { + double celldm1 = std::sqrt(pow(latvec.e11, 2) + pow(latvec.e12, 2) + + pow(latvec.e13, 2)); + double celldm2 = std::sqrt(pow(latvec.e21, 2) + pow(latvec.e22, 2) + + pow(latvec.e23, 2)); + double celldm3 = std::sqrt(pow(latvec.e31, 2) + pow(latvec.e32, 2) + + pow(latvec.e33, 2)); + double celldm12 = (latvec.e11 * latvec.e21 + latvec.e12 * latvec.e22 + + latvec.e13 * latvec.e23); + double cos12 = celldm12 / celldm1 / celldm2; + + double e21 = celldm2 * cos12; + double e22 = celldm2 * std::sqrt(1.0 - cos12 * cos12); + + latvec.e11 = celldm1; + latvec.e12 = 0.0; + latvec.e13 = 0.0; + latvec.e21 = e21; + latvec.e22 = e22; + latvec.e23 = 0.0; + latvec.e31 = 0.0; + latvec.e32 = 0.0; + latvec.e33 = celldm3; + } + else if (latName == "bacm") // ibrav = 13 + { + double celldm1 = std::abs(latvec.e11); + double celldm2 = std::sqrt(pow(latvec.e21, 2) + pow(latvec.e22, 2) + + pow(latvec.e23, 2)); + double celldm3 = std::abs(latvec.e13); + + double cos12 = latvec.e21 / celldm2; + if (cos12 >= 1.0) + { + ModuleBase::WARNING_QUIT("unitcell", "wrong cos12!"); + } + + double e21 = celldm2 * cos12; + double e22 = celldm2 * std::sqrt(1.0 - cos12 * cos12); + + latvec.e11 = celldm1; + latvec.e12 = 0.0; + latvec.e13 = -celldm3; + latvec.e21 = e21; + latvec.e22 = e22; + latvec.e23 = 0.0; + latvec.e31 = celldm1; + latvec.e32 = 0.0; + latvec.e33 = celldm3; + } + else if (latName == "triclinic") // ibrav = 14 + { + double celldm1 = std::sqrt(pow(latvec.e11, 2) + pow(latvec.e12, 2) + + pow(latvec.e13, 2)); + double celldm2 = std::sqrt(pow(latvec.e21, 2) + pow(latvec.e22, 2) + + pow(latvec.e23, 2)); + double celldm3 = std::sqrt(pow(latvec.e31, 2) + pow(latvec.e32, 2) + + pow(latvec.e33, 2)); + double celldm12 = (latvec.e11 * latvec.e21 + latvec.e12 * latvec.e22 + + latvec.e13 * latvec.e23); + double cos12 = celldm12 / celldm1 / celldm2; + double celldm13 = (latvec.e11 * latvec.e31 + latvec.e12 * latvec.e32 + + latvec.e13 * latvec.e33); + double cos13 = celldm13 / celldm1 / celldm3; + double celldm23 = (latvec.e21 * latvec.e31 + latvec.e22 * latvec.e32 + + latvec.e23 * latvec.e33); + double cos23 = celldm23 / celldm2 / celldm3; + + double sin12 = std::sqrt(1.0 - cos12 * cos12); + if (cos12 >= 1.0) + { + ModuleBase::WARNING_QUIT("unitcell", "wrong cos12!"); + } + + latvec.e11 = celldm1; + latvec.e12 = 0.0; + latvec.e13 = 0.0; + latvec.e21 = celldm2 * cos12; + latvec.e22 = celldm2 * sin12; + latvec.e23 = 0.0; + latvec.e31 = celldm3 * cos13; + latvec.e32 = celldm3 * (cos23 - cos13 * cos12) / sin12; + double term = 1.0 + 2.0 * cos12 * cos13 * cos23 - cos12 * cos12 + - cos13 * cos13 - cos23 * cos23; + term = sqrt(term) / sin12; + latvec.e33 = celldm3 * term; } else { - std::cout << "latname is : " << latName << std::endl; - ModuleBase::WARNING_QUIT("unitcell::remake_cell", - "latname type not supported!"); + std::cout << "latname is : " << latName << std::endl; + ModuleBase::WARNING_QUIT("unitcell::remake_cell", + "latname type not supported!"); } } @@ -319,7 +319,7 @@ void setup_cell_after_vc(UnitCell& ucell, std::ofstream& log) ucell.omega * pow(ModuleBase::BOHR_TO_A, 3)); } - ucell.lat0_angstrom = ucell.lat0 * 0.529177; + ucell.lat0_angstrom = ucell.lat0 * ModuleBase::BOHR_TO_A; ucell.tpiba = ModuleBase::TWO_PI / ucell.lat0; ucell.tpiba2 = ucell.tpiba * ucell.tpiba; @@ -482,6 +482,7 @@ void periodic_boundary_adjustment(Atom* atoms, for (int it = 0; it < ntype; it++) { Atom* atom = &atoms[it]; + atom->boundary_shift.assign(atom->na, {0,0,0}); for (int ia = 0; ia < atom->na; ia++) { // mohan update 2011-03-21 @@ -489,19 +490,22 @@ void periodic_boundary_adjustment(Atom* atoms, { if (atom->taud[ia][ik] < 0) { + atom->boundary_shift[ia][ik] += 1; atom->taud[ia][ik] += 1.0; } if (atom->taud[ia][ik] >= 1.0) { + atom->boundary_shift[ia][ik] -= 1; atom->taud[ia][ik] -= 1.0; } } - if (atom->taud[ia].x < 0 - || atom->taud[ia].y < 0 - || atom->taud[ia].z < 0 - || atom->taud[ia].x >= 1.0 - || atom->taud[ia].y >= 1.0 - || atom->taud[ia].z >= 1.0) + const double eps = 1e-12; + if (atom->taud[ia].x < -eps + || atom->taud[ia].y < -eps + || atom->taud[ia].z < -eps + || atom->taud[ia].x >= 1.0+eps + || atom->taud[ia].y >= 1.0+eps + || atom->taud[ia].z >= 1.0+eps) { GlobalV::ofs_warning << " atom type=" << it + 1 << " atom index=" << ia + 1 << std::endl; GlobalV::ofs_warning << " direct coordinate=" << atom->taud[ia].x << " " diff --git a/source/source_esolver/CMakeLists.txt b/source/source_esolver/CMakeLists.txt index 281b2e8b55..4a83a9e9a1 100644 --- a/source/source_esolver/CMakeLists.txt +++ b/source/source_esolver/CMakeLists.txt @@ -7,21 +7,21 @@ list(APPEND objects esolver_sdft_pw.cpp esolver_lj.cpp esolver_dp.cpp + esolver_nep.cpp esolver_of.cpp + esolver_of_tddft.cpp esolver_of_interface.cpp esolver_of_tool.cpp pw_others.cpp - pw_setup.cpp ) if(ENABLE_LCAO) list(APPEND objects esolver_ks_lcao.cpp esolver_ks_lcao_tddft.cpp - lcao_before_scf.cpp - lcao_after_scf.cpp esolver_gets.cpp lcao_others.cpp esolver_dm2rho.cpp + esolver_double_xc.cpp ) endif() @@ -29,8 +29,8 @@ add_library( esolver OBJECT ${objects} - ../source_pw/module_pwdft/module_exx_helper/exx_helper.cpp - ../source_pw/module_pwdft/module_exx_helper/exx_helper.h + ../source_pw/module_pwdft/exx_helper.cpp + ../source_pw/module_pwdft/exx_helper.h ) if(ENABLE_COVERAGE) diff --git a/source/source_esolver/esolver.cpp b/source/source_esolver/esolver.cpp index 0fd1e524fa..4809c6df77 100644 --- a/source/source_esolver/esolver.cpp +++ b/source/source_esolver/esolver.cpp @@ -6,6 +6,7 @@ #include "source_io/module_parameter/parameter.h" #ifdef __LCAO #include "esolver_dm2rho.h" +#include "esolver_double_xc.h" #include "esolver_gets.h" #include "esolver_ks_lcao.h" #include "esolver_ks_lcao_tddft.h" @@ -17,8 +18,10 @@ extern "C" } #endif #include "esolver_dp.h" +#include "esolver_nep.h" #include "esolver_lj.h" #include "esolver_of.h" +#include "esolver_of_tddft.h" #include "source_io/module_parameter/md_parameter.h" #include @@ -39,6 +42,10 @@ std::string determine_type() { esolver_type = "ofdft"; } + else if (PARAM.inp.esolver_type == "tdofdft") + { + esolver_type = "tdofdft"; + } else if (PARAM.inp.esolver_type == "ksdft") { esolver_type = "ksdft_pw"; @@ -91,6 +98,10 @@ std::string determine_type() { esolver_type = "dp_pot"; } + else if (PARAM.inp.esolver_type == "nep") + { + esolver_type = "nep_pot"; + } else if (esolver_type == "none") { ModuleBase::WARNING_QUIT("ESolver", "No such esolver_type combined with basis_type"); @@ -107,14 +118,8 @@ std::string determine_type() c = std::toupper(c); } } - if (GlobalV::MY_RANK == 0) - { - std::cout << " RUNNING WITH DEVICE : " << device_info << " / " - << base_device::information::get_device_info(PARAM.inp.device) << std::endl; - } - - GlobalV::ofs_running << "\n RUNNING WITH DEVICE : " << device_info << " / " - << base_device::information::get_device_info(PARAM.inp.device) << std::endl; + base_device::information::output_device_info(std::cout); + base_device::information::output_device_info(GlobalV::ofs_running); /***auto end_time = std::chrono::high_resolution_clock::now(); auto duration = std::chrono::duration_cast>(end_time - start_time); std::cout << "hipGetDeviceInfo took " << duration.count() << " seconds" << std::endl;***/ @@ -201,26 +206,45 @@ ESolver* init_esolver(const Input_para& inp, UnitCell& ucell) return new ESolver_GetS(); } } - if (PARAM.globalv.gamma_only_local) + else if (PARAM.inp.deepks_out_base != "none") { - return new ESolver_KS_LCAO(); + if (PARAM.globalv.gamma_only_local) + { + return new ESolver_DoubleXC(); + } + else if (PARAM.inp.nspin < 4) + { + return new ESolver_DoubleXC, double>(); + } + else + { + return new ESolver_DoubleXC, std::complex>(); + } } - else if (PARAM.inp.nspin < 4) + else if (PARAM.inp.dm_to_rho) { - if (PARAM.inp.dm_to_rho) + if (PARAM.globalv.gamma_only_local) + { + ModuleBase::WARNING_QUIT("ESolver", "dm_to_rho is not implemented for gamma_only"); + } + else if (PARAM.inp.nspin < 4) { return new ESolver_DM2rho, double>(); } else { - return new ESolver_KS_LCAO, double>(); + return new ESolver_DM2rho, std::complex>(); } } else { - if (PARAM.inp.dm_to_rho) + if (PARAM.globalv.gamma_only_local) { - return new ESolver_DM2rho, std::complex>(); + return new ESolver_KS_LCAO(); + } + else if (PARAM.inp.nspin < 4) + { + return new ESolver_KS_LCAO, double>(); } else { @@ -287,23 +311,23 @@ ESolver* init_esolver(const Input_para& inp, UnitCell& ucell) // of LR-TDDFT is implemented. std::cout << " PREPARING FOR EXCITED STATES." << std::endl; // initialize the 2nd ESolver_LR at the temporary pointer - ModuleESolver::ESolver* p_esolver_lr = nullptr; - if (PARAM.globalv.gamma_only_local) - { - p_esolver_lr = new LR::ESolver_LR( - std::move(*dynamic_cast*>(p_esolver)), - inp, - ucell); - } - else - { - p_esolver_lr = new LR::ESolver_LR, double>( - std::move(*dynamic_cast, double>*>(p_esolver)), - inp, - ucell); - } - // clean the 1st ESolver_KS and swap the pointer - ModuleESolver::clean_esolver(p_esolver, false); // do not call Cblacs_exit, remain it for the 2nd ESolver + ModuleESolver::ESolver* p_esolver_lr = nullptr; + if (PARAM.globalv.gamma_only_local) + { + p_esolver_lr = new LR::ESolver_LR( + std::move(*dynamic_cast*>(p_esolver)), + inp, + ucell); + } + else + { + p_esolver_lr = new LR::ESolver_LR, double>( + std::move(*dynamic_cast, double>*>(p_esolver)), + inp, + ucell); + } + // clean the 1st ESolver_KS and swap the pointer + delete p_esolver; return p_esolver_lr; } #endif @@ -311,6 +335,10 @@ ESolver* init_esolver(const Input_para& inp, UnitCell& ucell) { return new ESolver_OF(); } + else if (esolver_type == "tdofdft") + { + return new ESolver_OF_TDDFT(); + } else if (esolver_type == "lj_pot") { return new ESolver_LJ(); @@ -319,24 +347,13 @@ ESolver* init_esolver(const Input_para& inp, UnitCell& ucell) { return new ESolver_DP(PARAM.mdp.pot_file); } + else if (esolver_type == "nep_pot") + { + return new ESolver_NEP(PARAM.mdp.pot_file); + } throw std::invalid_argument("esolver_type = " + std::string(esolver_type) + ". Wrong in " + std::string(__FILE__) + " line " + std::to_string(__LINE__)); } -void clean_esolver(ESolver*& pesolver, const bool lcao_cblacs_exit) -{ -// Zhang Xiaoyang modified in 2024/7/6: -// Note: because of the init method of serial lcao hsolver -// it needs no release step for it, or this [delete] will cause Segmentation Fault -// Probably it will be modified later. -#ifdef __MPI - delete pesolver; -#ifdef __LCAO - if (lcao_cblacs_exit) - { - Cblacs_exit(1); - } -#endif -#endif -} + } // namespace ModuleESolver diff --git a/source/source_esolver/esolver.h b/source/source_esolver/esolver.h index 58238dcb1b..dd621cfe15 100644 --- a/source/source_esolver/esolver.h +++ b/source/source_esolver/esolver.h @@ -17,6 +17,9 @@ class ESolver virtual ~ESolver() { + //**************************************************** + // do not add any codes in this deconstructor funcion + //**************************************************** } //! initialize the energy solver by using input parameters and cell modules @@ -66,7 +69,7 @@ std::string determine_type(); */ ESolver* init_esolver(const Input_para& inp, UnitCell& ucell); -void clean_esolver(ESolver*& pesolver, const bool lcao_cblacs_exit = false); + } // namespace ModuleESolver diff --git a/source/source_esolver/esolver_dm2rho.cpp b/source/source_esolver/esolver_dm2rho.cpp index 07b458206e..1ddac414f0 100644 --- a/source/source_esolver/esolver_dm2rho.cpp +++ b/source/source_esolver/esolver_dm2rho.cpp @@ -7,9 +7,10 @@ #include "source_lcao/LCAO_domain.h" #include "source_lcao/hamilt_lcao.h" #include "source_lcao/module_operator_lcao/operator_lcao.h" -#include "source_io/cube_io.h" -#include "source_io/io_npz.h" -#include "source_io/print_info.h" +#include "source_io/module_output/cube_io.h" +#include "source_io/module_ml/io_npz.h" +#include "source_io/module_output/print_info.h" +#include "source_lcao/rho_tau_lcao.h" // mohan add 2025-10-24 namespace ModuleESolver { @@ -47,19 +48,20 @@ void ESolver_DM2rho::runner(UnitCell& ucell, const int istep) // file name of DM std::string zipname = "output_DM0.npz"; - elecstate::DensityMatrix* dm = dynamic_cast*>(this->pelec)->get_DM(); // read DM from file - ModuleIO::read_mat_npz(&(this->pv), ucell, zipname, *(dm->get_DMR_pointer(1))); + ModuleIO::read_mat_npz(&(this->pv), ucell, zipname, *(this->dmat.dm->get_DMR_pointer(1))); // if nspin=2, need extra reading if (PARAM.inp.nspin == 2) { zipname = "output_DM1.npz"; - ModuleIO::read_mat_npz(&(this->pv), ucell, zipname, *(dm->get_DMR_pointer(2))); + ModuleIO::read_mat_npz(&(this->pv), ucell, zipname, *(this->dmat.dm->get_DMR_pointer(2))); } - this->pelec->psiToRho(*this->psi); + // it's dangerous to design psiToRho function like this, mohan note 20251024 + // this->pelec->psiToRho(*this->psi); + LCAO_domain::dm2rho(this->dmat.dm->get_DMR_vector(), PARAM.inp.nspin, &this->chr); int nspin0 = PARAM.inp.nspin == 2 ? 2 : 1; diff --git a/source/source_esolver/esolver_double_xc.cpp b/source/source_esolver/esolver_double_xc.cpp new file mode 100644 index 0000000000..db65655e0b --- /dev/null +++ b/source/source_esolver/esolver_double_xc.cpp @@ -0,0 +1,421 @@ +#include "esolver_double_xc.h" +#include "source_hamilt/module_xc/xc_functional.h" +#include "source_hamilt/module_ewald/H_Ewald_pw.h" +#include "source_hamilt/module_vdw/vdw.h" +#ifdef __MLALGO +#include "source_lcao/module_deepks/LCAO_deepks.h" +#include "source_lcao/module_deepks/LCAO_deepks_interface.h" +#endif +#include "source_lcao/FORCE_STRESS.h" + +//-----HSolver ElecState Hamilt-------- +#include "source_estate/elecstate_lcao.h" +#include "source_estate/elecstate_tools.h" +#include "source_lcao/hamilt_lcao.h" +#include "source_hsolver/hsolver_lcao.h" +#include "source_io/module_parameter/parameter.h" +#include "source_io/module_hs/write_HS.h" // use ModuleIO::write_hsk() +#include "source_lcao/setup_deepks.h" // use deepks, mohan add 2025-10-10 + +namespace ModuleESolver +{ + +template +ESolver_DoubleXC::ESolver_DoubleXC() +{ + this->classname = "ESolver_DoubleXC"; + this->basisname = "LCAO"; +} + +template +ESolver_DoubleXC::~ESolver_DoubleXC() +{ + delete this->psi_base; + delete this->p_hamilt_base; + delete this->pelec_base; +} + +template +void ESolver_DoubleXC::before_all_runners(UnitCell& ucell, const Input_para& inp) +{ + ModuleBase::TITLE("ESolver_DoubleXC", "before_all_runners"); + ModuleBase::timer::tick("ESolver_DoubleXC", "before_all_runners"); + + ESolver_KS_LCAO::before_all_runners(ucell, inp); + + // init some items for base functional + + // 2) init ElecState + if (this->pelec_base == nullptr) + { + this->pelec_base = new elecstate::ElecStateLCAO(&(this->chr_base), // use which parameter? + &(this->kv), + this->kv.get_nks(), + this->pw_big); + } + + // 4) initialize electronic wave function psi + if (this->psi_base == nullptr) + { + int nsk = 0; + int ncol = 0; + if (PARAM.globalv.gamma_only_local) + { + nsk = PARAM.inp.nspin; + ncol = this->pv.ncol_bands; + if (PARAM.inp.ks_solver == "genelpa" || PARAM.inp.ks_solver == "elpa" || PARAM.inp.ks_solver == "lapack" + || PARAM.inp.ks_solver == "pexsi" || PARAM.inp.ks_solver == "cusolver" + || PARAM.inp.ks_solver == "cusolvermp") + { + ncol = this->pv.ncol; + } + } + else + { + nsk = this->kv.get_nks(); +#ifdef __MPI + ncol = this->pv.ncol_bands; +#else + ncol = PARAM.inp.nbands; +#endif + } + this->psi_base = new psi::Psi(nsk, ncol, this->pv.nrow, this->kv.ngk, true); + } + + // 6) initialize the density matrix + this->dmat_base.allocate_dm(&this->kv, &this->pv, PARAM.inp.nspin); + + // 10) inititlize the charge density + this->chr_base.set_rhopw(this->pw_rhod); // mohan add 20251130 + const bool kin_den = this->chr_base.kin_density(); // mohan add 20251202 + this->chr_base.allocate(PARAM.inp.nspin, kin_den); + this->chr_base.init_rho(ucell, this->Pgrid, this->sf.strucFac, ucell.symm, &this->kv); + this->chr_base.check_rho(); + + // 11) initialize the potential + if (this->pelec_base->pot == nullptr) + { + this->pelec_base->pot = new elecstate::Potential(this->pw_rhod, + this->pw_rho, + &ucell, + &(this->locpp.vloc), + &(this->sf), + &(this->solvent), + &(this->pelec_base->f_en.etxc), + &(this->pelec_base->f_en.vtxc)); + } + + ModuleBase::timer::tick("ESolver_DoubleXC", "before_all_runners"); +} + +template +void ESolver_DoubleXC::before_scf(UnitCell& ucell, const int istep) +{ + ModuleBase::TITLE("ESolver_DoubleXC", "before_scf"); + ModuleBase::timer::tick("ESolver_DoubleXC", "before_scf"); + + ESolver_KS_LCAO::before_scf(ucell, istep); + + //---------------------------------------------------------- + //! calculate D2 or D3 vdW + //---------------------------------------------------------- + auto vdw_solver = vdw::make_vdw(ucell, PARAM.inp, &(GlobalV::ofs_running)); + if (vdw_solver != nullptr) + { + this->pelec_base->f_en.evdw = vdw_solver->get_energy(); + } + + //---------------------------------------------------------- + //! calculate ewald energy + //---------------------------------------------------------- + if (!PARAM.inp.test_skip_ewald) + { + //this->pelec_base->f_en.ewald_energy = H_Ewald_pw::compute_ewald(ucell, this->pw_rhod, this->sf.strucFac); + this->pelec_base->f_en.ewald_energy = this->pelec->f_en.ewald_energy; + } + + if (this->p_hamilt_base != nullptr) + { + delete this->p_hamilt_base; + this->p_hamilt_base = nullptr; + } + if (this->p_hamilt_base == nullptr) + { + this->p_hamilt_base = new hamilt::HamiltLCAO( + ucell, + this->gd, + &this->pv, + this->pelec_base->pot, + this->kv, + this->two_center_bundle_, + this->orb_, + this->dmat_base.dm, + &this->dftu, + this->deepks, + istep, + this->exx_nao); + } + + XC_Functional::set_xc_type(PARAM.inp.deepks_out_base); + this->pelec_base->init_scf(ucell, this->Pgrid, this->sf.strucFac, this->locpp.numeric, ucell.symm); + XC_Functional::set_xc_type(ucell.atoms[0].ncpp.xc_func); + + // DMR should be same size with Hamiltonian(R) + this->dmat_base.dm->init_DMR(*(dynamic_cast*>(this->p_hamilt_base)->getHR())); + + if (istep > 0) + { + this->dmat_base.dm->cal_DMR(); + } + + ModuleBase::timer::tick("ESolver_DoubleXC", "before_scf"); + return; +} + +template +void ESolver_DoubleXC::iter_finish(UnitCell& ucell, const int istep, int& iter, bool& conv_esolver) +{ + ModuleBase::TITLE("ESolver_DoubleXC", "iter_finish"); + ModuleBase::timer::tick("ESolver_DoubleXC", "iter_finish"); + + bool output_iter = PARAM.inp.deepks_out_labels >0 && PARAM.inp.deepks_out_freq_elec && + (iter % PARAM.inp.deepks_out_freq_elec == 0); + + if ( output_iter ) + { + // save output charge density (density after diagnonalization) + for (int is = 0; is < PARAM.inp.nspin; is++) + { + ModuleBase::GlobalFunc::DCOPY(this->chr.rho[is], this->chr_base.rho[is], this->chr.rhopw->nrxx); + if (XC_Functional::get_ked_flag()) + { + ModuleBase::GlobalFunc::DCOPY(this->chr.kin_r[is], this->chr_base.kin_r[is], this->chr.rhopw->nrxx); + } + } + } + + ESolver_KS_LCAO::iter_finish(ucell, istep, iter, conv_esolver); + + // for deepks, output labels during electronic steps (after conv_esolver is renewed) + if ( output_iter) + { + // ---------- update etot and htot ---------- + // get etot of output charge density, now the etot is of density after charge mixing + this->pelec->pot->update_from_charge(&this->chr_base, &ucell); + this->pelec->f_en.descf = 0.0; + this->pelec->cal_energies(2); + // std::cout<<"in deepks etot------"<pelec->f_en.print_all(); + // std::cout<<"in deepks etot------"<pelec->f_en.etot << std::endl; + + // update p_hamilt using output charge density + // Note!!! + // This will change the result of out_mat_hs + // The original result of out_mat_hs is H of input density, but this change H to that of output density + // When converged, these two should be close + if (PARAM.inp.deepks_v_delta > 0 && PARAM.inp.vl_in_h) + { + // update real space Hamiltonian + this->p_hamilt->refresh(); + } + +#ifdef __MLALGO + // ---------- output tot and precalc ---------- + hamilt::HamiltLCAO* p_ham_deepks = dynamic_cast*>(this->p_hamilt); + std::shared_ptr> ld_shared_ptr(&this->deepks.ld, [](LCAO_Deepks*) {}); + LCAO_Deepks_Interface deepks_interface(ld_shared_ptr); + + deepks_interface.out_deepks_labels(this->pelec->f_en.etot, + this->kv.get_nks(), + ucell.nat, + PARAM.globalv.nlocal, + this->pelec->ekb, + this->kv.kvec_d, + ucell, + this->orb_, + this->gd, + &(this->pv), + *(this->psi), + this->dmat.dm, + p_ham_deepks, + iter, + conv_esolver, + GlobalV::MY_RANK, + GlobalV::ofs_running); +#endif + + // restore to density after charge mixing + this->pelec->pot->update_from_charge(&this->chr, &ucell); + + // ---------- prepare for base ---------- + // set as base functional Temporarily + XC_Functional::set_xc_type(PARAM.inp.deepks_out_base); + + // update pot of pelec_base according to chr_base + if (!conv_esolver) + { + this->pelec_base->pot->update_from_charge(&this->chr_base, &ucell); + } + else + { + this->pelec_base->cal_converged(); + } + + // ---------- e_base ---------- + // ebase use the same output density with etot, just different in xc + this->pelec_base->f_en.eband = this->pelec->f_en.eband; + this->pelec_base->f_en.deband = this->pelec->f_en.deband; + this->pelec_base->f_en.demet = this->pelec->f_en.demet; + this->pelec_base->f_en.descf = 0.0; // set descf to 0 + this->pelec_base->cal_energies(2); // 2 means Kohn-Sham functional + // std::cout<<"in double_xc------"<pelec_base->f_en.print_all(); + // std::cout<<"in double_xc------"<f_en.etot << std::endl; + +#ifdef __MLALGO + const std::string file_ebase = deepks_interface.get_filename("ebase", PARAM.inp.deepks_out_labels, iter); + LCAO_deepks_io::save_npy_e(pelec_base->f_en.etot, file_ebase, GlobalV::MY_RANK); +#endif + + // ---------- h_base ---------- + if (PARAM.inp.deepks_v_delta > 0) + { + if (PARAM.inp.vl_in_h) + { + // update real space Hamiltonian + this->p_hamilt_base->refresh(); + } + + // Note!!! + // should not use ModuleIO::write_hsk() to output h_base, because it will call get_hs_pointers() + // which will change the hsolver::DiagoElpa::DecomposedState, influencing the following SCF steps + +#ifdef __MLALGO + using TH = std::conditional_t::value, ModuleBase::matrix, ModuleBase::ComplexMatrix>; + hamilt::HamiltLCAO* p_ham_deepks_base = dynamic_cast*>(this->p_hamilt_base); + int nks = this->kv.get_nks(); + std::vector h_tot(nks); + DeePKS_domain::get_h_tot(this->pv, p_ham_deepks_base, h_tot, PARAM.globalv.nlocal, nks, 'H'); + + const std::string file_htot = deepks_interface.get_filename("hbase", PARAM.inp.deepks_out_labels, iter); + LCAO_deepks_io::save_npy_h(h_tot, file_htot, PARAM.globalv.nlocal, nks, GlobalV::MY_RANK); +#endif + } + + // ---------- o_base ---------- + if ( PARAM.inp.deepks_bandgap > 0 ) + { + // obase isn't implemented yet + // don't need to solve p_hamilt_base + // just dm*p_hamilt_base, similar to cal_o_delta + } + + // restore to original xc + XC_Functional::set_xc_type(ucell.atoms[0].ncpp.xc_func); + + } + // ---------- prepare for f_base ---------- + else if ( PARAM.inp.cal_force && conv_esolver ) + { + // vnew must be updated for force_scc() even if not output_iter + // set as base functional Temporarily + XC_Functional::set_xc_type(PARAM.inp.deepks_out_base); + this->pelec_base->cal_converged(); + // restore to original xc + XC_Functional::set_xc_type(ucell.atoms[0].ncpp.xc_func); + } + + if ( PARAM.inp.cal_force ) + { + if ( ! conv_esolver ) + { + // use chr after mixing to restore veff, useful for vnew when converged + this->pelec_base->pot->update_from_charge(&this->chr, &ucell); + } + else + { + // copy charge + for (int is = 0; is < PARAM.inp.nspin; is++) + { + ModuleBase::GlobalFunc::DCOPY(this->chr.rho[is], this->chr_base.rho[is], this->chr.rhopw->nrxx); + if (XC_Functional::get_ked_flag()) + { + ModuleBase::GlobalFunc::DCOPY(this->chr.kin_r[is], this->chr_base.kin_r[is], this->chr.rhopw->nrxx); + } + } + + // copy dm + int nks = this->kv.get_nks(); + auto _pes_lcao_base = dynamic_cast*>(this->pelec_base); + auto _pes_lcao = dynamic_cast*>(this->pelec); + for (int ik = 0; ik < nks; ik++) + { +// mohan update 2025-11-03 + this->dmat_base.dm->set_DMK_pointer(ik, this->dmat.dm->get_DMK_pointer(ik)); +// _pes_lcao_base->get_DM()->set_DMK_pointer(ik, _pes_lcao->get_DM()->get_DMK_pointer(ik)); + } + this->dmat_base.dm->cal_DMR(); +// _pes_lcao_base->get_DM()->cal_DMR(); + _pes_lcao_base->ekb = _pes_lcao->ekb; + _pes_lcao_base->wg = _pes_lcao->wg; + } + } + ModuleBase::timer::tick("ESolver_DoubleXC", "iter_finish"); +} + +template +void ESolver_DoubleXC::cal_force(UnitCell& ucell, ModuleBase::matrix& force) +{ + ModuleBase::TITLE("ESolver_DoubleXC", "cal_force"); + ModuleBase::timer::tick("ESolver_DoubleXC", "cal_force"); + + ModuleBase::matrix force_base; + ModuleBase::matrix stress_base; + + Force_Stress_LCAO fsl(this->RA, ucell.nat); + + // set as base functional Temporarily + XC_Functional::set_xc_type(PARAM.inp.deepks_out_base); + + this->deepks.dpks_out_type = "base"; // for deepks method + + fsl.getForceStress(ucell, + PARAM.inp.cal_force, + PARAM.inp.cal_stress, + PARAM.inp.test_force, + PARAM.inp.test_stress, + this->gd, + this->pv, + this->pelec_base, + this->dmat_base, // mohan add 2025-11-03 + this->psi, + this->two_center_bundle_, + this->orb_, + force_base, + stress_base, + this->locpp, + this->sf, + this->kv, + this->pw_rho, + this->solvent, + this->dftu, + this->deepks, + this->exx_nao, + &ucell.symm); + + // restore to original xc + XC_Functional::set_xc_type(ucell.atoms[0].ncpp.xc_func); + + // this will delete RA, so call it later + ESolver_KS_LCAO::cal_force(ucell, force); + + ModuleBase::timer::tick("ESolver_DoubleXC", "cal_force"); +} + +template class ESolver_DoubleXC; +template class ESolver_DoubleXC, double>; +template class ESolver_DoubleXC, std::complex>; + +} // namespace ModuleESolver diff --git a/source/source_esolver/esolver_double_xc.h b/source/source_esolver/esolver_double_xc.h new file mode 100644 index 0000000000..bff9e28bc7 --- /dev/null +++ b/source/source_esolver/esolver_double_xc.h @@ -0,0 +1,42 @@ +#ifndef ESOLVER_DOUBLE_XC_H +#define ESOLVER_DOUBLE_XC_H + +#include "source_esolver/esolver_ks_lcao.h" + +namespace ModuleESolver +{ +// used in deepks, run target and base xc functional simultaneously +template +class ESolver_DoubleXC : public ESolver_KS_LCAO +{ + public: + ESolver_DoubleXC(); + ~ESolver_DoubleXC(); + + void before_all_runners(UnitCell& ucell, const Input_para& inp) override; + + void cal_force(UnitCell& ucell, ModuleBase::matrix& force) override; + + protected: + + void before_scf(UnitCell& ucell, const int istep) override; + + void iter_finish(UnitCell& ucell, const int istep, int& iter, bool& conv_esolver) override; + + //! Hamiltonian + hamilt::Hamilt* p_hamilt_base = nullptr; + + //! Electronic wavefunctions + psi::Psi* psi_base = nullptr; + + //! Electronic states + elecstate::ElecState* pelec_base = nullptr; + + //! Density Matrix, mohan add 2025-11-03 + LCAO_domain::Setup_DM dmat_base; + + //! Electorn charge density + Charge chr_base; +}; +} // namespace ModuleESolver +#endif diff --git a/source/source_esolver/esolver_dp.cpp b/source/source_esolver/esolver_dp.cpp index 50ab8b0e78..2cabd668b6 100644 --- a/source/source_esolver/esolver_dp.cpp +++ b/source/source_esolver/esolver_dp.cpp @@ -21,8 +21,8 @@ #include "source_base/parallel_common.h" #include "source_base/timer.h" -#include "source_io/output_log.h" -#include "source_io/cif_io.h" +#include "source_io/module_output/output_log.h" +#include "source_io/module_output/cif_io.h" #include #include diff --git a/source/source_esolver/esolver_fp.cpp b/source/source_esolver/esolver_fp.cpp index 97680ba8d0..238c093580 100644 --- a/source/source_esolver/esolver_fp.cpp +++ b/source/source_esolver/esolver_fp.cpp @@ -1,27 +1,23 @@ #include "esolver_fp.h" -#include "source_base/global_variable.h" #include "source_estate/cal_ux.h" #include "source_estate/module_charge/symmetry_rho.h" #include "source_estate/read_pseudo.h" #include "source_hamilt/module_ewald/H_Ewald_pw.h" #include "source_hamilt/module_vdw/vdw.h" -#include "source_pw/module_pwdft/global.h" -#include "source_io/cif_io.h" -#include "source_io/cube_io.h" -#include "source_io/json_output/init_info.h" -#include "source_io/json_output/output_info.h" -#include "source_io/output_log.h" -#include "source_io/print_info.h" -#include "source_io/rhog_io.h" -#include "source_io/write_elecstat_pot.h" -#include "source_io/write_elf.h" +#include "source_io/module_output/cif_io.h" +#include "source_io/module_output/cube_io.h" // use write_vdata_palgrid +#include "source_io/module_json/init_info.h" +#include "source_io/module_json/output_info.h" +#include "source_io/module_output/output_log.h" +#include "source_io/module_output/print_info.h" +#include "source_io/module_chgpot/rhog_io.h" #include "source_io/module_parameter/parameter.h" -#include "source_cell/k_vector_utils.h" -#ifdef USE_LIBXC -#include "source_io/write_libxc_r.h" -#endif +#include "source_pw/module_pwdft/setup_pwrho.h" // mohan 20251005 +#include "source_hamilt/module_xc/xc_functional.h" // mohan 20251005 +#include "source_io/module_ctrl/ctrl_output_fp.h" +#include "source_io/module_chgpot/write_init.h" // write_chg_init, write_pot_init namespace ModuleESolver { @@ -32,250 +28,90 @@ ESolver_FP::ESolver_FP() ESolver_FP::~ESolver_FP() { - if (pw_rho_flag == true) - { - delete this->pw_rho; - this->pw_rho_flag = false; - } - if (PARAM.globalv.double_grid) - { - delete pw_rhod; - } - delete this->pelec; + //**************************************************** + // do not add any codes in this deconstructor funcion + //**************************************************** + // mohan add 20251005 + pw::teardown_pwrho(this->pw_rho_flag, PARAM.globalv.double_grid, this->pw_rho, this->pw_rhod); + + delete this->pelec; } void ESolver_FP::before_all_runners(UnitCell& ucell, const Input_para& inp) { ModuleBase::TITLE("ESolver_FP", "before_all_runners"); - std::string fft_device = inp.device; - std::string fft_precison = inp.precision; - // LCAO basis doesn't support GPU acceleration on FFT currently - if(inp.basis_type == "lcao") - { - fft_device = "cpu"; - } - if ((inp.precision=="single") || (inp.precision=="mixing")) - { - fft_precison = "mixing"; - } - else if (inp.precision=="double") - { - fft_precison = "double"; - } - #if (not defined(__ENABLE_FLOAT_FFTW) and (defined(__CUDA) || defined(__RCOM))) - if (fft_device == "gpu") - { - fft_precison = "double"; - } - #endif - pw_rho = new ModulePW::PW_Basis_Big(fft_device, fft_precison); - pw_rho_flag = true; - if (PARAM.globalv.double_grid) - { - pw_rhod = new ModulePW::PW_Basis_Big(fft_device, fft_precison); - } - else - { - pw_rhod = pw_rho; - } - pw_big = static_cast(pw_rhod); - pw_big->setbxyz(inp.bx, inp.by, inp.bz); - sf.set(pw_rhod, inp.nbspline); //! 1) read pseudopotentials elecstate::read_pseudo(GlobalV::ofs_running, ucell); - //! 2) initialie the plane wave basis for rho -#ifdef __MPI - this->pw_rho->initmpi(GlobalV::NPROC_IN_POOL, GlobalV::RANK_IN_POOL, POOL_WORLD); -#endif - if (this->classname == "ESolver_OF" || inp.of_ml_gene_data == 1) - { - this->pw_rho->setfullpw(inp.of_full_pw, inp.of_full_pw_dim); - } + //! 2) setup pw_rho, pw_rhod, pw_big, sf, and read_pseudopotentials + pw::setup_pwrho(ucell, PARAM.globalv.double_grid, this->pw_rho_flag, + this->pw_rho, this->pw_rhod, this->pw_big, this->classname, inp); - if (inp.nx * inp.ny * inp.nz == 0) - { - this->pw_rho->initgrids(inp.ref_cell_factor * ucell.lat0, ucell.latvec, 4.0 * inp.ecutwfc); - } - else - { - this->pw_rho->initgrids(inp.ref_cell_factor * ucell.lat0, ucell.latvec, inp.nx, inp.ny, inp.nz); - } + //! 3) setup structure factors + this->sf.set(this->pw_rhod, inp.nbspline); + + //! 4) write geometry file + ModuleIO::CifParser::write(PARAM.globalv.global_out_dir + "STRU.cif", + ucell, "# Generated by ABACUS ModuleIO::CifParser", "data_?"); - this->pw_rho->initparameters(false, 4.0 * inp.ecutwfc); - this->pw_rho->fft_bundle.initfftmode(inp.fft_mode); - this->pw_rho->setuptransform(); - this->pw_rho->collect_local_pw(); - this->pw_rho->collect_uniqgg(); + //! 5) init charge extrapolation + this->CE.Init_CE(inp.nspin, ucell.nat, this->pw_rhod->nrxx, inp.chg_extrap); - //! 3) initialize the double grid (for uspp) if necessary - if ( PARAM.globalv.double_grid) + //! 6) symmetry analysis should be performed every time the cell is changed + if (ModuleSymmetry::Symmetry::symm_flag == 1) { - ModulePW::PW_Basis_Sup* pw_rhod_sup = static_cast(pw_rhod); -#ifdef __MPI - this->pw_rhod->initmpi(GlobalV::NPROC_IN_POOL, GlobalV::RANK_IN_POOL, POOL_WORLD); -#endif - if (this->classname == "ESolver_OF") - { - this->pw_rhod->setfullpw(inp.of_full_pw, inp.of_full_pw_dim); - } - if (inp.ndx * inp.ndy * inp.ndz == 0) - { - this->pw_rhod->initgrids(inp.ref_cell_factor * ucell.lat0, ucell.latvec, inp.ecutrho); - } - else - { - this->pw_rhod->initgrids(inp.ref_cell_factor * ucell.lat0, ucell.latvec, inp.ndx, inp.ndy, inp.ndz); - } - this->pw_rhod->initparameters(false, inp.ecutrho); - this->pw_rhod->fft_bundle.initfftmode(inp.fft_mode); - pw_rhod_sup->setuptransform(this->pw_rho); - this->pw_rhod->collect_local_pw(); - this->pw_rhod->collect_uniqgg(); + ucell.symm.analy_sys(ucell.lat, ucell.st, ucell.atoms, GlobalV::ofs_running); + ModuleBase::GlobalFunc::DONE(GlobalV::ofs_running, "SYMMETRY"); } - ModuleIO::CifParser::write(PARAM.globalv.global_out_dir + "STRU.cif", - ucell, - "# Generated by ABACUS ModuleIO::CifParser", - "data_?"); - //! 4) print some information - ModuleIO::print_rhofft(this->pw_rhod, this->pw_rho, this->pw_big, GlobalV::ofs_running); + ModuleBase::GlobalFunc::DONE(GlobalV::ofs_running, "SETUP UNITCELL"); + + //! 7) setup k points in the Brillouin zone according to symmetry. + this->kv.set(ucell,ucell.symm, inp.kpoint_file, inp.nspin, ucell.G, ucell.latvec, GlobalV::ofs_running); + ModuleBase::GlobalFunc::DONE(GlobalV::ofs_running, "INIT K-POINTS"); + + //! 8) print information + ModuleIO::print_parameters(ucell, this->kv, inp); + + //! 9) parallel of FFT grid + this->Pgrid.init(this->pw_rhod->nx, this->pw_rhod->ny, this->pw_rhod->nz, + this->pw_rhod->nplane, this->pw_rhod->nrxx, pw_big->nbz, pw_big->bz); + + //! 10) calculate the structure factor + this->sf.setup(&ucell, Pgrid, this->pw_rhod); + + //! 11) setup the xc functional + XC_Functional::set_xc_type(ucell.atoms[0].ncpp.xc_func); + GlobalV::ofs_running<chr.set_rhopw(this->pw_rhod); // mohan add 20251130 + const bool kin_den = this->chr.kin_density(); // mohan add 20251202 + this->chr.allocate(inp.nspin, kin_den); // mohan move this from setup_estate_pw, 20251128 - //! 5) initialize the charge extrapolation method if necessary - this->CE.Init_CE(inp.nspin, ucell.nat, this->pw_rhod->nrxx, inp.chg_extrap); return; } -//! Something to do after SCF iterations when SCF is converged or comes to the max iter step. void ESolver_FP::after_scf(UnitCell& ucell, const int istep, const bool conv_esolver) { ModuleBase::TITLE("ESolver_FP", "after_scf"); - // 1) output convergence information + //! Output convergence information ModuleIO::output_convergence_after_scf(conv_esolver, this->pelec->f_en.etot); - // 2) write fermi energy + //! Write Fermi energy ModuleIO::output_efermi(conv_esolver, this->pelec->eferm.ef); - // 3) update delta_rho for charge extrapolation + //! Update delta_rho for charge extrapolation CE.update_delta_rho(ucell, &(this->chr), &(this->sf)); - if (istep % PARAM.inp.out_interval == 0) - { - // 4) write charge density - if (PARAM.inp.out_chg[0] > 0) - { - for (int is = 0; is < PARAM.inp.nspin; is++) - { - this->pw_rhod->real2recip(this->chr.rho_save[is], this->chr.rhog_save[is]); - std::string fn =PARAM.globalv.global_out_dir + "/chgs" + std::to_string(is + 1) + ".cube"; - ModuleIO::write_vdata_palgrid(Pgrid, - this->chr.rho_save[is], - is, - PARAM.inp.nspin, - istep, - fn, - this->pelec->eferm.get_efval(is), - &(ucell), - PARAM.inp.out_chg[1], - 1); - - if (XC_Functional::get_ked_flag()) - { - fn =PARAM.globalv.global_out_dir + "/taus" + std::to_string(is + 1) + ".cube"; - ModuleIO::write_vdata_palgrid(Pgrid, - this->chr.kin_r_save[is], - is, - PARAM.inp.nspin, - istep, - fn, - this->pelec->eferm.get_efval(is), - &(ucell)); - } - } - } - - // 5) write potential - if (PARAM.inp.out_pot == 1 || PARAM.inp.out_pot == 3) - { - for (int is = 0; is < PARAM.inp.nspin; is++) - { - std::string fn =PARAM.globalv.global_out_dir + "/pots" + std::to_string(is + 1) + ".cube"; - - ModuleIO::write_vdata_palgrid(Pgrid, - this->pelec->pot->get_effective_v(is), - is, - PARAM.inp.nspin, - istep, - fn, - 0.0, // efermi - &(ucell), - 3, // precision - 0); // out_fermi - } - } - else if (PARAM.inp.out_pot == 2) - { - std::string fn =PARAM.globalv.global_out_dir + "/pot_es.cube"; - ModuleIO::write_elecstat_pot( -#ifdef __MPI - this->pw_big->bz, - this->pw_big->nbz, -#endif - fn, - istep, - this->pw_rhod, - &this->chr, - &(ucell), - this->pelec->pot->get_fixed_v(), - this->solvent); - } + //! print out charge density, potential, elf, etc. + ModuleIO::ctrl_output_fp(ucell, this->pelec, this->pw_big, this->pw_rhod, + this->chr, this->solvent, this->Pgrid, istep); - // 6) write ELF - if (PARAM.inp.out_elf[0] > 0) - { - this->chr.cal_elf = true; - Symmetry_rho srho; - for (int is = 0; is < PARAM.inp.nspin; is++) - { - srho.begin(is, this->chr, this->pw_rhod, ucell.symm); - } - - std::string out_dir =PARAM.globalv.global_out_dir; - ModuleIO::write_elf( -#ifdef __MPI - this->pw_big->bz, - this->pw_big->nbz, -#endif - out_dir, - istep, - PARAM.inp.nspin, - this->chr.rho, - this->chr.kin_r, - this->pw_rhod, - this->Pgrid, - &(ucell), - PARAM.inp.out_elf[1]); - } - -#ifdef USE_LIBXC - // 7) write xc(r) - if(PARAM.inp.out_xc_r[0]>=0) - { - ModuleIO::write_libxc_r( - PARAM.inp.out_xc_r[0], - XC_Functional::get_func_id(), - this->pw_rhod->nrxx, // number of real-space grid - ucell.omega, // volume of cell - ucell.tpiba, - this->chr, - *this->pw_big, - *this->pw_rhod); - } -#endif - } } void ESolver_FP::before_scf(UnitCell& ucell, const int istep) @@ -303,8 +139,6 @@ void ESolver_FP::before_scf(UnitCell& ucell, const int istep) this->locpp.init_vloc(ucell, this->pw_rhod); ModuleBase::GlobalFunc::DONE(GlobalV::ofs_running, "LOCAL POTENTIAL"); - this->pelec->omega = ucell.omega; - // perform symmetry analysis if (ModuleSymmetry::Symmetry::symm_flag == 1) { @@ -317,90 +151,40 @@ void ESolver_FP::before_scf(UnitCell& ucell, const int istep) ModuleBase::GlobalFunc::DONE(GlobalV::ofs_running, "INIT K-POINTS"); } - //---------------------------------------------------------- // charge extrapolation - //---------------------------------------------------------- if (ucell.ionic_position_updated) { this->CE.update_all_dis(ucell); - this->CE.extrapolate_charge(&this->Pgrid, - ucell, - &this->chr, - &this->sf, - GlobalV::ofs_running, - GlobalV::ofs_warning); + this->CE.extrapolate_charge(&this->Pgrid, ucell, &this->chr, &this->sf, + GlobalV::ofs_running, GlobalV::ofs_warning); } - //---------------------------------------------------------- //! calculate D2 or D3 vdW - //---------------------------------------------------------- auto vdw_solver = vdw::make_vdw(ucell, PARAM.inp, &(GlobalV::ofs_running)); if (vdw_solver != nullptr) { this->pelec->f_en.evdw = vdw_solver->get_energy(); } - //---------------------------------------------------------- //! calculate ewald energy - //---------------------------------------------------------- if (!PARAM.inp.test_skip_ewald) { this->pelec->f_en.ewald_energy = H_Ewald_pw::compute_ewald(ucell, this->pw_rhod, this->sf.strucFac); } - //---------------------------------------------------------- //! set direction of magnetism, used in non-collinear case - //---------------------------------------------------------- elecstate::cal_ux(ucell); - //---------------------------------------------------------- - //! output the initial charge density - //---------------------------------------------------------- - if (PARAM.inp.out_chg[0] == 2) - { - for (int is = 0; is < PARAM.inp.nspin; is++) - { - std::stringstream ss; - ss << PARAM.globalv.global_out_dir << "/chgs" << is + 1 << "_ini.cube"; - ModuleIO::write_vdata_palgrid(this->Pgrid, - this->chr.rho[is], - is, - PARAM.inp.nspin, - istep, - ss.str(), - this->pelec->eferm.ef, - &(ucell)); - } - } - - //---------------------------------------------------------- - //! output total local potential of the initial charge density - //---------------------------------------------------------- - if (PARAM.inp.out_pot == 3) - { - for (int is = 0; is < PARAM.inp.nspin; is++) - { - std::stringstream ss; - ss << PARAM.globalv.global_out_dir << "pots" << is + 1 << "_ini.cube"; - ModuleIO::write_vdata_palgrid(this->Pgrid, - this->pelec->pot->get_effective_v(is), - is, - PARAM.inp.nspin, - istep, - ss.str(), - 0.0, // efermi - &(ucell), - 11, // precsion - 0); // out_fermi - } - } + //! output the initial charge density and potential + ModuleIO::write_chg_init(ucell, this->Pgrid, this->chr, this->pelec->eferm, istep, PARAM.inp); +// ModuleIO::write_pot_init(ucell, this->Pgrid, this->pelec, istep, PARAM.inp); return; } void ESolver_FP::iter_finish(UnitCell& ucell, const int istep, int& iter, bool& conv_esolver) { - //! output charge density + //! output charge density in G-space, or if available, kinetic energy density in G-space if (PARAM.inp.out_chg[0] != -1) { if (iter % PARAM.inp.out_freq_elec == 0 || iter == PARAM.inp.scf_nmax || conv_esolver) @@ -410,7 +194,7 @@ void ESolver_FP::iter_finish(UnitCell& ucell, const int istep, int& iter, bool& this->pw_rhod->real2recip(this->chr.rho_save[is], this->chr.rhog_save[is]); } ModuleIO::write_rhog(PARAM.globalv.global_out_dir + PARAM.inp.suffix + "-CHARGE-DENSITY.restart", - PARAM.globalv.gamma_only_pw || PARAM.globalv.gamma_only_local, + PARAM.globalv.gamma_only_pw, this->pw_rhod, PARAM.inp.nspin, ucell.GT, @@ -429,7 +213,7 @@ void ESolver_FP::iter_finish(UnitCell& ucell, const int istep, int& iter, bool& this->pw_rhod->real2recip(this->chr.kin_r_save[is], kin_g[is]); } ModuleIO::write_rhog(PARAM.globalv.global_out_dir + PARAM.inp.suffix + "-TAU-DENSITY.restart", - PARAM.globalv.gamma_only_pw || PARAM.globalv.gamma_only_local, + PARAM.globalv.gamma_only_pw, this->pw_rhod, PARAM.inp.nspin, ucell.GT, @@ -444,10 +228,12 @@ void ESolver_FP::iter_finish(UnitCell& ucell, const int istep, int& iter, bool& void ESolver_FP::after_all_runners(UnitCell& ucell) { + // print out the final total energy GlobalV::ofs_running << "\n --------------------------------------------" << std::endl; GlobalV::ofs_running << std::setprecision(16); GlobalV::ofs_running << " !FINAL_ETOT_IS " << this->pelec->f_en.etot * ModuleBase::Ry_to_eV << " eV" << std::endl; GlobalV::ofs_running << " --------------------------------------------\n\n" << std::endl; + } } // namespace ModuleESolver diff --git a/source/source_esolver/esolver_fp.h b/source/source_esolver/esolver_fp.h index fda47313bc..a57af07901 100644 --- a/source/source_esolver/esolver_fp.h +++ b/source/source_esolver/esolver_fp.h @@ -3,30 +3,15 @@ #include "esolver.h" -#ifndef __MPI -#include -#endif - -//! plane wave basis -#include "source_basis/module_pw/pw_basis.h" - -//! symmetry analysis -#include "source_cell/module_symmetry/symmetry.h" - -//! electronic states -#include "source_estate/elecstate.h" - -//! charge extrapolation -#include "source_estate/module_charge/charge_extra.h" - -//! solvation model -#include "source_hamilt/module_surchem/surchem.h" - -//! local pseudopotential -#include "source_pw/module_pwdft/VL_in_pw.h" +#include "source_base/timer_wrapper.h" -//! structure factor related to plane wave basis -#include "source_pw/module_pwdft/structure_factor.h" +#include "source_basis/module_pw/pw_basis.h" // plane wave basis +#include "source_cell/module_symmetry/symmetry.h" // symmetry analysis +#include "source_estate/elecstate.h" // electronic states +#include "source_estate/module_charge/charge_extra.h" // charge extrapolation +#include "source_hamilt/module_surchem/surchem.h" // solvation model +#include "source_pw/module_pwdft/vl_pw.h" // local pseudopotential +#include "source_pw/module_pwdft/structure_factor.h" // structure factor #include @@ -44,10 +29,8 @@ namespace ModuleESolver class ESolver_FP: public ESolver { public: - //! Constructor ESolver_FP(); - //! Deconstructor virtual ~ESolver_FP(); //! Initialize of the first-principels energy solver @@ -56,18 +39,13 @@ class ESolver_FP: public ESolver virtual void after_all_runners(UnitCell& ucell) override; protected: - //! Something to do before SCF iterations. virtual void before_scf(UnitCell& ucell, const int istep); - //! Something to do after SCF iterations when SCF is converged or comes to the max iter step. virtual void after_scf(UnitCell& ucell, const int istep, const bool conv_esolver); - //! Something to do after hamilt2rho function in each iter loop. virtual void iter_finish(UnitCell& ucell, const int istep, int& iter, bool &conv_esolver); - //! ------------------------------------------------------------------------------ //! These pointers will be deleted in the free_pointers() function every ion step. - //! ------------------------------------------------------------------------------ elecstate::ElecState* pelec = nullptr; ///< Electronic states //! K points in Brillouin zone @@ -81,7 +59,7 @@ class ESolver_FP: public ESolver //! dense grid for for uspp, used for ultrasoft augmented charge density. //! charge density and potential are defined on dense grids, //! but effective potential needs to be interpolated on smooth grids in order to compute Veff|psi> - ModulePW::PW_Basis* pw_rho; + ModulePW::PW_Basis* pw_rho = nullptr; ModulePW::PW_Basis* pw_rhod; //! dense grid for USPP ModulePW::PW_Basis_Big* pw_big; ///< [temp] pw_basis_big class @@ -100,14 +78,10 @@ class ESolver_FP: public ESolver //! solvent model surchem solvent; - int pw_rho_flag = false; ///< flag for pw_rho, 0: not initialized, 1: initialized + bool pw_rho_flag = false; ///< flag for pw_rho, 0: not initialized, 1: initialized //! the start time of scf iteration - #ifdef __MPI - double iter_time; - #else - std::chrono::system_clock::time_point iter_time; - #endif + ModuleBase::TimePoint iter_time; }; } // namespace ModuleESolver diff --git a/source/source_esolver/esolver_gets.cpp b/source/source_esolver/esolver_gets.cpp index 300fd532b2..e03e7b8bdc 100644 --- a/source/source_esolver/esolver_gets.cpp +++ b/source/source_esolver/esolver_gets.cpp @@ -7,9 +7,9 @@ #include "source_lcao/LCAO_domain.h" #include "source_lcao/hamilt_lcao.h" #include "source_lcao/module_operator_lcao/operator_lcao.h" -#include "source_io/cal_r_overlap_R.h" -#include "source_io/print_info.h" -#include "source_io/write_HS_R.h" +#include "source_io/module_hs/cal_r_overlap_R.h" +#include "source_io/module_output/print_info.h" +#include "source_io/module_hs/write_HS_R.h" namespace ModuleESolver { @@ -43,7 +43,7 @@ void ESolver_GetS::before_all_runners(UnitCell& ucell, const Input_para& inp) this->kv.set(ucell, ucell.symm, inp.kpoint_file, inp.nspin, ucell.G, ucell.latvec, GlobalV::ofs_running); ModuleBase::GlobalFunc::DONE(GlobalV::ofs_running, "INIT K-POINTS"); - ModuleIO::setup_parameters(ucell, this->kv); + ModuleIO::print_parameters(ucell, this->kv, inp); // 2) init ElecState // autoset nbands in ElecState, it should before basis_init (for Psi 2d division) @@ -53,9 +53,6 @@ void ESolver_GetS::before_all_runners(UnitCell& ucell, const Input_para& inp) this->pelec = new elecstate::ElecStateLCAO>(&(this->chr), // use which parameter? &(this->kv), this->kv.get_nks(), - nullptr, // mohan add 2024-04-01 - nullptr, // mohan add 2024-04-01 - this->pw_rho, this->pw_big); } @@ -111,8 +108,9 @@ void ESolver_GetS::runner(UnitCell& ucell, const int istep) this->kv, *(two_center_bundle_.overlap_orb), orb_.cutoffs()); - dynamic_cast, std::complex>*>(this->p_hamilt->ops) - ->contributeHR(); + auto* hamilt_ptr = static_cast>*>(this->p_hamilt); + auto* ops_ptr = dynamic_cast, std::complex>*>(hamilt_ptr->ops); + ops_ptr->contributeHR(); } else { @@ -122,13 +120,16 @@ void ESolver_GetS::runner(UnitCell& ucell, const int istep) this->kv, *(two_center_bundle_.overlap_orb), orb_.cutoffs()); - dynamic_cast, double>*>(this->p_hamilt->ops)->contributeHR(); + auto* hamilt_ptr = static_cast>*>(this->p_hamilt); + auto* ops_ptr = dynamic_cast, double>*>(hamilt_ptr->ops); + ops_ptr->contributeHR(); } } const std::string fn = PARAM.globalv.global_out_dir + "sr_nao.csr"; - ModuleIO::output_SR(pv, gd, this->p_hamilt, fn); + auto* hamilt_ptr = static_cast>*>(this->p_hamilt); + ModuleIO::output_SR(pv, gd, hamilt_ptr, fn); if (PARAM.inp.out_mat_r) { diff --git a/source/source_esolver/esolver_gets.h b/source/source_esolver/esolver_gets.h index a0d163ef4d..7a7fb1d34b 100644 --- a/source/source_esolver/esolver_gets.h +++ b/source/source_esolver/esolver_gets.h @@ -10,7 +10,7 @@ namespace ModuleESolver { -class ESolver_GetS : public ESolver_KS> +class ESolver_GetS : public ESolver_KS { public: ESolver_GetS(); @@ -37,7 +37,7 @@ class ESolver_GetS : public ESolver_KS> TwoCenterBundle two_center_bundle_; - // temporary introduced during removing GlobalC::ORB + // temporary introduced LCAO_Orbitals orb_; }; } // namespace ModuleESolver diff --git a/source/source_esolver/esolver_ks.cpp b/source/source_esolver/esolver_ks.cpp index 12452cfd68..cc94510a66 100644 --- a/source/source_esolver/esolver_ks.cpp +++ b/source/source_esolver/esolver_ks.cpp @@ -1,191 +1,97 @@ #include "esolver_ks.h" +#include "source_base/timer_wrapper.h" -// To setup plane wave for electronic wave functions -#include "pw_setup.h" - -#include "source_base/timer.h" -#include "source_base/global_variable.h" -#include "source_pw/module_pwdft/global.h" -#include "source_io/module_parameter/parameter.h" -#include "source_lcao/module_dftu/dftu.h" - -#include "source_cell/cal_atoms_info.h" -#include "source_estate/elecstate_print.h" -#include "source_hamilt/module_xc/xc_functional.h" -#include "source_hsolver/hsolver.h" -#include "source_io/cube_io.h" - -// for NSCF calculations of band structures -#include "source_io/nscf_band.h" -// for output log information -#include "source_io/output_log.h" -#include "source_io/print_info.h" -#include "source_io/write_eig_occ.h" // for jason output information -#include "source_io/json_output/init_info.h" -#include "source_io/json_output/output_info.h" - +#include "source_io/module_json/init_info.h" +#include "source_io/module_json/output_info.h" +#include "source_estate/update_pot.h" // mohan add 20251016 +#include "source_estate/module_charge/chgmixing.h" // mohan add 20251018 +#include "source_pw/module_pwdft/setup_pwwfc.h" // mohan add 20251018 +#include "source_hsolver/hsolver.h" +#include "source_io/module_energy/write_eig_occ.h" +#include "source_io/module_energy/write_bands.h" +#include "source_hamilt/module_xc/xc_functional.h" +#include "source_io/module_output/output_log.h" // use write_head +#include "source_estate/elecstate_print.h" // print_etot +#include "source_io/module_output/print_info.h" // print_parameters +#include "source_lcao/module_dftu/dftu.h" // mohan add 2025-11-07 namespace ModuleESolver { -template -ESolver_KS::ESolver_KS() -{ -} +ESolver_KS::ESolver_KS() {} -template -ESolver_KS::~ESolver_KS() +ESolver_KS::~ESolver_KS() { - delete this->psi; - delete this->pw_wfc; + //**************************************************** + // do not add any codes in this deconstructor funcion + //**************************************************** delete this->p_hamilt; delete this->p_chgmix; this->ppcell.release_memory(); + + // mohan add 2025-10-18, should be put int clean() function + pw::teardown_pwwfc(this->pw_wfc); } -template -void ESolver_KS::before_all_runners(UnitCell& ucell, const Input_para& inp) +void ESolver_KS::before_all_runners(UnitCell& ucell, const Input_para& inp) { ModuleBase::TITLE("ESolver_KS", "before_all_runners"); - //! 1) initialize "before_all_runniers" in ESolver_FP + + //! 1) setup "before_all_runniers" in ESolver_FP ESolver_FP::before_all_runners(ucell, inp); + //! 2) setup some parameters classname = "ESolver_KS"; basisname = ""; - scf_thr = inp.scf_thr; - scf_ene_thr = inp.scf_ene_thr; - maxniter = inp.scf_nmax; - niter = maxniter; - drho = 0.0; - - std::string fft_device = inp.device; - - // Fast Fourier Transform - // LCAO basis doesn't support GPU acceleration on FFT currently - if(inp.basis_type == "lcao") - { - fft_device = "cpu"; - } - std::string fft_precision = inp.precision; -#ifdef __ENABLE_FLOAT_FFTW - if (inp.cal_cond && inp.esolver_type == "sdft") - { - fft_precision = "mixing"; - } -#endif - - pw_wfc = new ModulePW::PW_Basis_K_Big(fft_device, fft_precision); - ModulePW::PW_Basis_K_Big* tmp = static_cast(pw_wfc); - - // should not use INPUT here, mohan 2024-05-12 - tmp->setbxyz(inp.bx, inp.by, inp.bz); - - ///---------------------------------------------------------- - /// charge mixing - ///---------------------------------------------------------- - p_chgmix = new Charge_Mixing(); - p_chgmix->set_rhopw(this->pw_rho, this->pw_rhod); + this->scf_thr = inp.scf_thr; + this->scf_ene_thr = inp.scf_ene_thr; + this->maxniter = inp.scf_nmax; + this->niter = maxniter; + this->drho = 0.0; // cell_factor this->ppcell.cell_factor = inp.cell_factor; - - //! 3) it has been established that - // xc_func is same for all elements, therefore - // only the first one if used - XC_Functional::set_xc_type(ucell.atoms[0].ncpp.xc_func); - - ModuleBase::GlobalFunc::DONE(GlobalV::ofs_running, "SETUP UNITCELL"); - - //! 4) setup the charge mixing parameters - p_chgmix->set_mixing(inp.mixing_mode, - inp.mixing_beta, - inp.mixing_ndim, - inp.mixing_gg0, - inp.mixing_tau, - inp.mixing_beta_mag, - inp.mixing_gg0_mag, - inp.mixing_gg0_min, - inp.mixing_angle, - inp.mixing_dmr, - ucell.omega, - ucell.tpiba); - + //! 3) setup charge mixing + p_chgmix = new Charge_Mixing(); + p_chgmix->set_rhopw(this->pw_rho, this->pw_rhod); + p_chgmix->set_mixing(inp.mixing_mode, inp.mixing_beta, inp.mixing_ndim, + inp.mixing_gg0, inp.mixing_tau, inp.mixing_beta_mag, inp.mixing_gg0_mag, + inp.mixing_gg0_min, inp.mixing_angle, inp.mixing_dmr, ucell.omega, ucell.tpiba); p_chgmix->init_mixing(); - //! 5) ESolver depends on the Symmetry module - // symmetry analysis should be performed every time the cell is changed - if (ModuleSymmetry::Symmetry::symm_flag == 1) - { - ucell.symm.analy_sys(ucell.lat, ucell.st, ucell.atoms, GlobalV::ofs_running); - ModuleBase::GlobalFunc::DONE(GlobalV::ofs_running, "SYMMETRY"); - } - - //! 6) Setup the k points according to symmetry. - this->kv.set(ucell,ucell.symm, inp.kpoint_file, inp.nspin, ucell.G, ucell.latvec, GlobalV::ofs_running); - ModuleBase::GlobalFunc::DONE(GlobalV::ofs_running, "INIT K-POINTS"); - - //! 7) print information - ModuleIO::setup_parameters(ucell, this->kv); - - //! 8) setup plane wave for electronic wave functions - ModuleESolver::pw_setup(inp, ucell, *this->pw_rho, this->kv, *this->pw_wfc); + //! 4) setup plane wave for electronic wave functions + pw::setup_pwwfc(inp, ucell, *this->pw_rho, this->kv, this->pw_wfc); - //! 9) initialize the real-space uniform grid for FFT and parallel - //! distribution of plane waves - Pgrid.init(this->pw_rhod->nx, - this->pw_rhod->ny, - this->pw_rhod->nz, - this->pw_rhod->nplane, - this->pw_rhod->nrxx, - pw_big->nbz, - pw_big->bz); - - //! 10) calculate the structure factor - this->sf.setup_structure_factor(&ucell, Pgrid, this->pw_rhod); + //! 5) read in charge density, mohan add 2025-11-28 + //! Inititlize the charge density. + this->chr.init_rho(ucell, this->Pgrid, this->sf.strucFac, ucell.symm, &this->kv, this->pw_wfc); + this->chr.check_rho(); // check the rho + } -//------------------------------------------------------------------------------ -//! the 5th function of ESolver_KS: hamilt2rho_single -//! mohan add 2024-05-11 -//------------------------------------------------------------------------------ -template -void ESolver_KS::hamilt2rho_single(UnitCell& ucell, const int istep, const int iter, const double ethr) -{ - ModuleBase::timer::tick(this->classname, "hamilt2rho_single"); - // Temporarily, before HSolver is constructed, it should be overrided by - // LCAO, PW, SDFT and TDDFT. - // After HSolver is constructed, LCAO, PW, SDFT should delete their own - // hamilt2rho_single() and use: - ModuleBase::timer::tick(this->classname, "hamilt2rho_single"); -} +void ESolver_KS::hamilt2rho_single(UnitCell& ucell, const int istep, const int iter, const double ethr) +{} -template -void ESolver_KS::hamilt2rho(UnitCell& ucell, const int istep, const int iter, const double ethr) +void ESolver_KS::hamilt2rho(UnitCell& ucell, const int istep, const int iter, const double ethr) { // 1) use Hamiltonian to obtain charge density this->hamilt2rho_single(ucell, istep, iter, diag_ethr); // 2) for MPI: STOGROUP? need to rewrite - // It may be changed when more clever parallel algorithm is - // put forward. - // When parallel algorithm for bands are adopted. Density will only be - // treated in the first group. - //(Different ranks should have abtained the same, but small differences - // always exist in practice.) + // It may be changed when more clever parallel algorithm is put forward. + // When parallel algorithm for bands are adopted. Density will only be treated in the first group. + //(Different ranks should have abtained the same, but small differences always exist in practice.) // Maybe in the future, density and wavefunctions should use different // parallel algorithms, in which they do not occupy all processors, for // example wavefunctions uses 20 processors while density uses 10. if (PARAM.globalv.ks_run) { - // double drho = this->estate.caldr2(); - // EState should be used after it is constructed. - drho = p_chgmix->get_drho(&this->chr, PARAM.inp.nelec); hsolver_error = 0.0; if (iter == 1 && PARAM.inp.calculation != "nscf") @@ -197,66 +103,52 @@ void ESolver_KS::hamilt2rho(UnitCell& ucell, const int istep, const i // so a more precise HSolver should be executed. if (hsolver_error > drho) { - diag_ethr = hsolver::reset_diag_ethr(GlobalV::ofs_running, - PARAM.inp.basis_type, - PARAM.inp.esolver_type, - PARAM.inp.precision, - hsolver_error, - drho, - diag_ethr, - PARAM.inp.nelec); + diag_ethr = hsolver::reset_diag_ethr(GlobalV::ofs_running, PARAM.inp.basis_type, + PARAM.inp.esolver_type, PARAM.inp.precision, hsolver_error, + drho, diag_ethr, PARAM.inp.nelec); this->hamilt2rho_single(ucell, istep, iter, diag_ethr); drho = p_chgmix->get_drho(&this->chr, PARAM.inp.nelec); hsolver_error = hsolver::cal_hsolve_error(PARAM.inp.basis_type, - PARAM.inp.esolver_type, - diag_ethr, - PARAM.inp.nelec); + PARAM.inp.esolver_type, diag_ethr, PARAM.inp.nelec); } } } } -template -void ESolver_KS::runner(UnitCell& ucell, const int istep) +void ESolver_KS::runner(UnitCell& ucell, const int istep) { ModuleBase::TITLE("ESolver_KS", "runner"); ModuleBase::timer::tick(this->classname, "runner"); - //---------------------------------------------------------------- // 1) before_scf (electronic iteration loops) - //---------------------------------------------------------------- this->before_scf(ucell, istep); ModuleBase::GlobalFunc::DONE(GlobalV::ofs_running, "INIT SCF"); - //---------------------------------------------------------------- // 2) SCF iterations - //---------------------------------------------------------------- bool conv_esolver = false; this->niter = this->maxniter; this->diag_ethr = PARAM.inp.pw_diag_thr; + this->scf_nmax_flag = false; // mohan add 2025-09-21 for (int iter = 1; iter <= this->maxniter; ++iter) { - //---------------------------------------------------------------- - // 3) initialization of SCF iterations - //---------------------------------------------------------------- - this->iter_init(ucell, istep, iter); + if(iter == this->maxniter) + { + this->scf_nmax_flag=true; + } + + // 3) initialization of SCF iterations + this->iter_init(ucell, istep, iter); - //---------------------------------------------------------------- // 4) use Hamiltonian to obtain charge density - //---------------------------------------------------------------- this->hamilt2rho(ucell, istep, iter, diag_ethr); - //---------------------------------------------------------------- // 5) finish scf iterations - //---------------------------------------------------------------- this->iter_finish(ucell, istep, iter, conv_esolver); - //---------------------------------------------------------------- // 6) check convergence - //---------------------------------------------------------------- if (conv_esolver || this->oscillate_esolver) { this->niter = iter; @@ -268,216 +160,93 @@ void ESolver_KS::runner(UnitCell& ucell, const int istep) } } // end scf iterations - //---------------------------------------------------------------- - // 7) after scf - //---------------------------------------------------------------- + // 7) after scf this->after_scf(ucell, istep, conv_esolver); ModuleBase::timer::tick(this->classname, "runner"); return; }; -template -void ESolver_KS::before_scf(UnitCell& ucell, const int istep) +void ESolver_KS::before_scf(UnitCell& ucell, const int istep) { ModuleBase::TITLE("ESolver_KS", "before_scf"); ESolver_FP::before_scf(ucell, istep); } -template -void ESolver_KS::iter_init(UnitCell& ucell, const int istep, const int iter) +void ESolver_KS::iter_init(UnitCell& ucell, const int istep, const int iter) { if(PARAM.inp.esolver_type != "tddft") { ModuleIO::write_head(GlobalV::ofs_running, istep, iter, this->basisname); } -#ifdef __MPI - iter_time = MPI_Wtime(); -#else - iter_time = std::chrono::system_clock::now(); -#endif + iter_time = ModuleBase::get_time(); if (PARAM.inp.esolver_type == "ksdft") { - diag_ethr = hsolver::set_diagethr_ks(PARAM.inp.basis_type, - PARAM.inp.esolver_type, - PARAM.inp.calculation, - PARAM.inp.init_chg, - PARAM.inp.precision, - istep, - iter, - drho, - PARAM.inp.pw_diag_thr, - diag_ethr, - PARAM.inp.nelec); + diag_ethr = hsolver::set_diagethr_ks(PARAM.inp.basis_type, PARAM.inp.esolver_type, + PARAM.inp.calculation, PARAM.inp.init_chg, PARAM.inp.precision, istep, iter, + drho, PARAM.inp.pw_diag_thr, diag_ethr, PARAM.inp.nelec); } else if (PARAM.inp.esolver_type == "sdft") { - diag_ethr = hsolver::set_diagethr_sdft(PARAM.inp.basis_type, - PARAM.inp.esolver_type, - PARAM.inp.calculation, - PARAM.inp.init_chg, - istep, - iter, - drho, - PARAM.inp.pw_diag_thr, - diag_ethr, - PARAM.inp.nbands, - esolver_KS_ne); + diag_ethr = hsolver::set_diagethr_sdft(PARAM.inp.basis_type, PARAM.inp.esolver_type, + PARAM.inp.calculation, PARAM.inp.init_chg, istep, iter, drho, + PARAM.inp.pw_diag_thr, diag_ethr, PARAM.inp.nbands, esolver_KS_ne); } // save input charge density (rho) this->chr.save_rho_before_sum_band(); } -template -void ESolver_KS::iter_finish(UnitCell& ucell, const int istep, int& iter, bool &conv_esolver) +void ESolver_KS::iter_finish(UnitCell& ucell, const int istep, int& iter, bool &conv_esolver) { - if(iter % PARAM.inp.out_freq_elec == 0) - { - //---------------------------------------------------------------- - // 1) print out band gap - //---------------------------------------------------------------- - if (PARAM.inp.out_bandgap) - { - if (!PARAM.globalv.two_fermi) - { - this->pelec->cal_bandgap(); - } - else - { - this->pelec->cal_bandgap_updw(); - } - } - - //---------------------------------------------------------------- - // 2) print out eigenvalues and occupations - //---------------------------------------------------------------- - if (PARAM.inp.out_band[0] || iter == PARAM.inp.scf_nmax || conv_esolver) - { - ModuleIO::write_eig_iter(this->pelec->ekb,this->pelec->wg,*this->pelec->klist); - } - } - - //---------------------------------------------------------------- - // 2) compute magnetization, only for LSDA(spin==2) - //---------------------------------------------------------------- - ucell.magnet.compute_mag(ucell.omega, - this->chr.nrxx, - this->chr.nxyz, - this->chr.rho, - this->pelec->nelec_spin.data()); + // 1.1) print out band gap + if (!PARAM.globalv.two_fermi) + { + this->pelec->cal_bandgap(); + } + else + { + this->pelec->cal_bandgap_updw(); + } - //---------------------------------------------------------------- - // 3) charge mixing - //---------------------------------------------------------------- - if (PARAM.globalv.ks_run) + // 1.2) print out eigenvalues and occupations + if (PARAM.inp.out_band[0]) { - // mixing will restart at this->p_chgmix->mixing_restart steps - if (drho <= PARAM.inp.mixing_restart && PARAM.inp.mixing_restart > 0.0 - && this->p_chgmix->mixing_restart_step > iter) + if (iter % PARAM.inp.out_freq_elec == 0 || iter == PARAM.inp.scf_nmax || conv_esolver) { - this->p_chgmix->mixing_restart_step = iter + 1; + ModuleIO::write_eig_iter(this->pelec->ekb,this->pelec->wg,*this->pelec->klist); } + } - if (PARAM.inp.scf_os_stop) // if oscillation is detected, SCF will stop - { - this->oscillate_esolver - = this->p_chgmix->if_scf_oscillate(iter, drho, PARAM.inp.scf_os_ndim, PARAM.inp.scf_os_thr); - } + // 2.1) compute magnetization, only for spin==2 + ucell.magnet.compute_mag(ucell.omega, this->chr.nrxx, this->chr.nxyz, this->chr.rho, + this->pelec->nelec_spin.data()); - // drho will be 0 at this->p_chgmix->mixing_restart step, which is - // not ground state - bool not_restart_step = !(iter == this->p_chgmix->mixing_restart_step && PARAM.inp.mixing_restart > 0.0); - // SCF will continue if U is not converged for uramping calculation - bool is_U_converged = true; - // to avoid unnecessary dependence on dft+u, refactor is needed + // 2.2) charge mixing + // SCF will continue if U is not converged for uramping calculation + bool converged_u = true; + // to avoid unnecessary dependence on dft+u, refactor is needed #ifdef __LCAO - if (PARAM.inp.dft_plus_u) - { - is_U_converged = GlobalC::dftu.u_converged(); - } + if (PARAM.inp.dft_plus_u) + { + converged_u = this->dftu.u_converged(); + } #endif - conv_esolver = (drho < this->scf_thr && not_restart_step && is_U_converged); - - // add energy threshold for SCF convergence - if (this->scf_ene_thr > 0.0) - { - // calculate energy of output charge density - this->update_pot(ucell, istep, iter, conv_esolver); - this->pelec->cal_energies(2); // 2 means Kohn-Sham functional - // now, etot_old is the energy of input density, while etot is the energy of output density - this->pelec->f_en.etot_delta = this->pelec->f_en.etot - this->pelec->f_en.etot_old; - // output etot_delta - GlobalV::ofs_running << " DeltaE_womix = " << this->pelec->f_en.etot_delta * ModuleBase::Ry_to_eV << " eV" - << std::endl; - if (iter > 1 && conv_esolver == 1) // only check when density is converged - { - // update the convergence flag - conv_esolver - = (std::abs(this->pelec->f_en.etot_delta * ModuleBase::Ry_to_eV) < this->scf_ene_thr); - } - } - - // If drho < hsolver_error in the first iter or drho < scf_thr, we - // do not change rho. - if (drho < hsolver_error || conv_esolver || PARAM.inp.calculation == "nscf") - { - if (drho < hsolver_error) - { - GlobalV::ofs_warning << " drho < hsolver_error, keep " - "charge density unchanged." - << std::endl; - } - } - else - { - //----------charge mixing--------------- - // mixing will restart after this->p_chgmix->mixing_restart - // steps - if (PARAM.inp.mixing_restart > 0 && iter == this->p_chgmix->mixing_restart_step - 1 - && drho <= PARAM.inp.mixing_restart) - { - // do not mix charge density - } - else - { - p_chgmix->mix_rho(&this->chr); // update chr->rho by mixing - } - if (PARAM.inp.scf_thr_type == 2) - { - this->chr.renormalize_rho(); // renormalize rho in R-space would - // induce a error in K-space - } - //----------charge mixing done----------- - } - } + module_charge::chgmixing_ks(iter, ucell, this->pelec, this->chr, this->p_chgmix, + this->pw_rhod->nrxx, this->drho, this->oscillate_esolver, conv_esolver, hsolver_error, + this->scf_thr, this->scf_ene_thr, converged_u, PARAM.inp); -#ifdef __MPI - MPI_Bcast(&drho, 1, MPI_DOUBLE, 0, BP_WORLD); + // 2.3) Update potentials (should be done every SF iter) + elecstate::update_pot(ucell, this->pelec, this->chr, conv_esolver); - // change MPI_DOUBLE to MPI_C_BOOL, mohan 2025-04-13 - MPI_Bcast(&conv_esolver, 1, MPI_C_BOOL, 0, BP_WORLD); - MPI_Bcast(this->chr.rho[0], this->pw_rhod->nrxx, MPI_DOUBLE, 0, BP_WORLD); -#endif + // 3.1) calculate energies + this->pelec->cal_energies(1); // Harris-Foulkes functional + this->pelec->cal_energies(2); // Kohn-Sham functional - //---------------------------------------------------------------- - // 4) Update potentials (should be done every SF iter) - //---------------------------------------------------------------- - // Hamilt should be used after it is constructed. - // this->phamilt->update(conv_esolver); - this->update_pot(ucell, istep, iter, conv_esolver); - - //---------------------------------------------------------------- - // 5) calculate energies - //---------------------------------------------------------------- - // 1 means Harris-Foulkes functional - // 2 means Kohn-Sham functional - this->pelec->cal_energies(1); - this->pelec->cal_energies(2); if (iter == 1) { this->pelec->f_en.etot_old = this->pelec->f_en.etot; @@ -485,129 +254,64 @@ void ESolver_KS::iter_finish(UnitCell& ucell, const int istep, int& i this->pelec->f_en.etot_delta = this->pelec->f_en.etot - this->pelec->f_en.etot_old; this->pelec->f_en.etot_old = this->pelec->f_en.etot; - - - //---------------------------------------------------------------- - // 6) time and meta-GGA - //---------------------------------------------------------------- -#ifdef __MPI - double duration = (double)(MPI_Wtime() - iter_time); -#else - double duration - = (std::chrono::duration_cast(std::chrono::system_clock::now() - iter_time)).count() - / static_cast(1e6); -#endif - - // get mtaGGA related parameters + // 4) get meta-GGA related parameters double dkin = 0.0; // for meta-GGA if (XC_Functional::get_ked_flag()) { dkin = p_chgmix->get_dkin(&this->chr, PARAM.inp.nelec); } - // pint energy - elecstate::print_etot(ucell.magnet, *pelec,conv_esolver, iter, drho, + // Iter finish + ESolver_FP::iter_finish(ucell, istep, iter, conv_esolver); + + + // the end, print time + double duration = ModuleBase::get_duration(iter_time, ModuleBase::get_time()); + + // print energies + elecstate::print_etot(ucell.magnet, *pelec, conv_esolver, iter, drho, dkin, duration, diag_ethr); #ifdef __RAPIDJSON - //---------------------------------------------------------------- - // 7) add Json of scf mag - //---------------------------------------------------------------- - Json::add_output_scf_mag(ucell.magnet.tot_mag, - ucell.magnet.abs_mag, + // add Json of scf mag + Json::add_output_scf_mag(ucell.magnet.tot_mag, ucell.magnet.abs_mag, this->pelec->f_en.etot * ModuleBase::Ry_to_eV, this->pelec->f_en.etot_delta * ModuleBase::Ry_to_eV, - drho, - duration); + drho, duration); #endif //__RAPIDJSON - - //---------------------------------------------------------------- - // 7) SCF restart information - //---------------------------------------------------------------- - if (PARAM.inp.mixing_restart > 0 - && iter == this->p_chgmix->mixing_restart_step - 1 - && iter != PARAM.inp.scf_nmax) - { - this->p_chgmix->mixing_restart_last = iter; - std::cout << " SCF restart after this step!" << std::endl; - } - - //---------------------------------------------------------------- - // 8) Iter finish - //---------------------------------------------------------------- - ESolver_FP::iter_finish(ucell, istep, iter, conv_esolver); } //! Something to do after SCF iterations when SCF is converged or comes to the max iter step. -template -void ESolver_KS::after_scf(UnitCell& ucell, const int istep, const bool conv_esolver) +void ESolver_KS::after_scf(UnitCell& ucell, const int istep, const bool conv_esolver) { ModuleBase::TITLE("ESolver_KS", "after_scf"); +/* // 1) calculate the kinetic energy density tau if (PARAM.inp.out_elf[0] > 0) { assert(this->psi != nullptr); this->pelec->cal_tau(*(this->psi)); } +*/ // 2) call after_scf() of ESolver_FP ESolver_FP::after_scf(ucell, istep, conv_esolver); - // 3) write eigenvalues - if (istep % PARAM.inp.out_interval == 0) - { -// elecstate::print_eigenvalue(this->pelec->ekb,this->pelec->wg,this->pelec->klist,GlobalV::ofs_running); - } + // 3) write eigenvalues and occupations to eig_occ.txt + ModuleIO::write_eig_file(this->pelec->ekb, this->pelec->wg, this->kv, istep); + + // 4) write band information to band.txt + ModuleIO::write_bands(PARAM.inp, this->pelec->ekb, this->kv); + } -template -void ESolver_KS::after_all_runners(UnitCell& ucell) +void ESolver_KS::after_all_runners(UnitCell& ucell) { // 1) write Etot information ESolver_FP::after_all_runners(ucell); - - // 2) write eigenvalue information - ModuleIO::write_eig_file(this->pelec->ekb, this->pelec->wg, this->kv); - - // 3) write band information - if (PARAM.inp.out_band[0]) - { - const int nspin0 = (PARAM.inp.nspin == 2) ? 2 : 1; - for (int is = 0; is < nspin0; is++) - { - std::stringstream ss2; - ss2 << PARAM.globalv.global_out_dir << "eigs" << is + 1 << ".txt"; - const double eshift = 0.0; - ModuleIO::nscf_band(is, - ss2.str(), - PARAM.inp.nbands, - eshift, - PARAM.inp.out_band[1], - this->pelec->ekb, - this->kv); - } - } } -//------------------------------------------------------------------------------ -//! the 16th-20th functions of ESolver_KS -//! mohan add 2024-05-12 -//------------------------------------------------------------------------------ -//! This is for mixed-precision pw/LCAO basis sets. -template class ESolver_KS, base_device::DEVICE_CPU>; -template class ESolver_KS, base_device::DEVICE_CPU>; - -//! This is for GPU codes. -#if ((defined __CUDA) || (defined __ROCM)) -template class ESolver_KS, base_device::DEVICE_GPU>; -template class ESolver_KS, base_device::DEVICE_GPU>; -#endif - -//! This is for LCAO basis set. -#ifdef __LCAO -template class ESolver_KS; -#endif } // namespace ModuleESolver diff --git a/source/source_esolver/esolver_ks.h b/source/source_esolver/esolver_ks.h index ef26d986c6..b6affc7b0c 100644 --- a/source/source_esolver/esolver_ks.h +++ b/source/source_esolver/esolver_ks.h @@ -1,26 +1,17 @@ #ifndef ESOLVER_KS_H #define ESOLVER_KS_H -#include -//#include - -// for first-principles esolver -#include "esolver_fp.h" -// for plane wave basis set -#include "source_basis/module_pw/pw_basis_k.h" -// for k-points in Brillouin zone -#include "source_cell/klist.h" -// for charge mixing -#include "source_estate/module_charge/charge_mixing.h" -// for electronic wave functions -#include "source_psi/psi.h" -// for Hamiltonian -#include "source_hamilt/hamilt.h" +#include "esolver_fp.h" // first-principles esolver +#include "source_basis/module_pw/pw_basis_k.h" // use plane wave +#include "source_cell/klist.h" // use k-points in Brillouin zone +#include "source_estate/module_charge/charge_mixing.h" // use charge mixing +#include "source_hamilt/hamilt.h" // use Hamiltonian +#include "source_hamilt/hamilt_base.h" // use Hamiltonian base class +#include "source_lcao/module_dftu/dftu.h" // mohan add 20251107 namespace ModuleESolver { -template class ESolver_KS : public ESolver_FP { public: @@ -55,11 +46,8 @@ class ESolver_KS : public ESolver_FP //! Something to do after SCF iterations when SCF is converged or comes to the max iter step. virtual void after_scf(UnitCell& ucell, const int istep, const bool conv_esolver) override; - //! It should be replaced by a function in Hamilt Class - virtual void update_pot(UnitCell& ucell, const int istep, const int iter, const bool conv_esolver){}; - - //! Hamiltonian - hamilt::Hamilt* p_hamilt = nullptr; + //! Hamiltonian (base class pointer, actual type determined at runtime) + hamilt::HamiltBase* p_hamilt = nullptr; //! PW for wave functions, only used in KSDFT, not in OFDFT ModulePW::PW_Basis_K* pw_wfc = nullptr; @@ -70,8 +58,8 @@ class ESolver_KS : public ESolver_FP //! nonlocal pseudopotentials pseudopot_cell_vnl ppcell; - //! Electronic wavefunctions - psi::Psi* psi = nullptr; + //! DFT+U method, mohan add 2025-11-07 + Plus_U dftu; std::string basisname; //! esolver_ks_lcao.cpp double esolver_KS_ne = 0.0; //! number of electrons @@ -83,6 +71,7 @@ class ESolver_KS : public ESolver_FP int maxniter; //! maximum iter steps for scf int niter; //! iter steps actually used in scf bool oscillate_esolver = false; // whether esolver is oscillated + bool scf_nmax_flag = false; // whether scf has reached nmax, mohan add 20250921 }; } // namespace ModuleESolver #endif diff --git a/source/source_esolver/esolver_ks_lcao.cpp b/source/source_esolver/esolver_ks_lcao.cpp index 84844ab720..0558942e91 100644 --- a/source/source_esolver/esolver_ks_lcao.cpp +++ b/source/source_esolver/esolver_ks_lcao.cpp @@ -1,73 +1,28 @@ #include "esolver_ks_lcao.h" - -#include "source_io/write_proj_band_lcao.h" // projcted band structure - -#include "source_base/formatter.h" -#include "source_base/global_variable.h" -#include "source_base/tool_title.h" #include "source_estate/elecstate_tools.h" - -#include "source_estate/module_dm/cal_dm_psi.h" #include "source_lcao/module_deltaspin/spin_constrain.h" -#include "source_lcao/module_dftu/dftu.h" -#include "source_io/berryphase.h" -#include "source_io/cal_ldos.h" -#include "source_io/cube_io.h" -#include "source_io/io_dmk.h" -#include "source_io/io_npz.h" -#include "source_io/output_dmk.h" -#include "source_io/output_log.h" -#include "source_io/output_mat_sparse.h" -#include "source_io/output_mulliken.h" -#include "source_io/output_sk.h" -#include "source_io/read_wfc_nao.h" -#include "source_io/to_qo.h" -#include "source_io/to_wannier90_lcao.h" -#include "source_io/to_wannier90_lcao_in_pw.h" -#include "source_io/write_HS.h" -#include "source_io/write_elecstat_pot.h" -#include "source_io/module_parameter/parameter.h" - -// be careful of hpp, there may be multiple definitions of functions, 20250302, mohan -#include "source_lcao/hs_matrix_k.hpp" -#include "source_io/write_eband_terms.hpp" -#include "source_io/write_vxc.hpp" -#include "source_io/write_vxc_r.hpp" - -#include "source_base/global_function.h" -#include "source_cell/module_neighbor/sltk_grid_driver.h" -#include "source_estate/cal_ux.h" +#include "source_lcao/module_deltaspin/deltaspin_lcao.h" +#include "source_lcao/dftu_lcao.h" +#include "source_lcao/hs_matrix_k.hpp" // there may be multiple definitions if using hpp #include "source_estate/module_charge/symmetry_rho.h" -#include "source_estate/occupy.h" #include "source_lcao/LCAO_domain.h" // need DeePKS_init -#include "source_lcao/module_dftu/dftu.h" -#include "source_pw/module_pwdft/global.h" -#include "source_io/print_info.h" - -#include - -#ifdef __MLALGO -#include "source_lcao/module_deepks/LCAO_deepks.h" -#include "source_lcao/module_deepks/LCAO_deepks_interface.h" -#endif -//-----force& stress------------------- #include "source_lcao/FORCE_STRESS.h" - -//-----HSolver ElecState Hamilt-------- #include "source_estate/elecstate_lcao.h" #include "source_lcao/hamilt_lcao.h" #include "source_hsolver/hsolver_lcao.h" - #ifdef __EXX #include "../source_lcao/module_ri/exx_opt_orb.h" #endif - -// test RDMFT #include "source_lcao/module_rdmft/rdmft.h" - -#include "source_lcao/module_gint/temp_gint/gint_info.h" - -#include +#include "source_estate/module_charge/chgmixing.h" // use charge mixing, mohan add 20251006 +#include "source_estate/module_dm/init_dm.h" // init dm from electronic wave functions +#include "source_io/module_ctrl/ctrl_runner_lcao.h" // use ctrl_runner_lcao() +#include "source_io/module_ctrl/ctrl_iter_lcao.h" // use ctrl_iter_lcao() +#include "source_io/module_ctrl/ctrl_scf_lcao.h" // use ctrl_scf_lcao() +#include "source_io/module_output/print_info.h" +#include "source_lcao/rho_tau_lcao.h" // mohan add 20251024 +#include "source_lcao/LCAO_set.h" // mohan add 20251111 +#include "source_psi/setup_psi.h" // use Setup_Psi for deallocate_psi namespace ModuleESolver { @@ -77,27 +32,16 @@ ESolver_KS_LCAO::ESolver_KS_LCAO() { this->classname = "ESolver_KS_LCAO"; this->basisname = "LCAO"; - -#ifdef __EXX - // 1. currently this initialization must be put in constructor rather than `before_all_runners()` - // because the latter is not reused by ESolver_LCAO_TDDFT, - // which cause the failure of the subsequent procedure reused by ESolver_LCAO_TDDFT - // 2. always construct but only initialize when if(cal_exx) is true - // because some members like two_level_step are used outside if(cal_exx) - if (GlobalC::exx_info.info_ri.real_number) - { - this->exd = std::make_shared>(GlobalC::exx_info.info_ri); - } - else - { - this->exc = std::make_shared>>(GlobalC::exx_info.info_ri); - } -#endif + this->exx_nao.init(); // mohan add 20251008 } template ESolver_KS_LCAO::~ESolver_KS_LCAO() { + //**************************************************** + // do not add any codes in this deconstructor funcion + //**************************************************** + Setup_Psi::deallocate_psi(this->psi); } template @@ -107,227 +51,172 @@ void ESolver_KS_LCAO::before_all_runners(UnitCell& ucell, const Input_pa ModuleBase::timer::tick("ESolver_KS_LCAO", "before_all_runners"); // 1) before_all_runners in ESolver_KS - ESolver_KS::before_all_runners(ucell, inp); + ESolver_KS::before_all_runners(ucell, inp); - // 2) init ElecState - // autoset nbands in ElecState before basis_init (for Psi 2d division) + // 2) autoset nbands in ElecState before init_basis (for Psi 2d division) if (this->pelec == nullptr) { // TK stands for double and std::complex? - this->pelec = new elecstate::ElecStateLCAO(&(this->chr), // use which parameter? - &(this->kv), - this->kv.get_nks(), - &(this->GG), - &(this->GK), - this->pw_rho, - this->pw_big); + this->pelec = new elecstate::ElecStateLCAO(&(this->chr), &(this->kv), + this->kv.get_nks(), this->pw_big); } - // 3) init LCAO basis - // reading the localized orbitals/projectors - // construct the interpolation tables. - LCAO_domain::init_basis_lcao(this->pv, - inp.onsite_radius, - inp.lcao_ecut, - inp.lcao_dk, - inp.lcao_dr, - inp.lcao_rmax, - ucell, - two_center_bundle_, - orb_); - - if (PARAM.inp.calculation == "gen_opt_abfs") + // 3) read LCAO orbitals/projectors and construct the interpolation tables. + LCAO_domain::init_basis_lcao(this->pv, inp.onsite_radius, inp.lcao_ecut, + inp.lcao_dk, inp.lcao_dr, inp.lcao_rmax, ucell, two_center_bundle_, orb_); + + // 4) setup EXX calculations + if (inp.calculation == "gen_opt_abfs") { - #ifdef __EXX +#ifdef __EXX Exx_Opt_Orb exx_opt_orb; exx_opt_orb.generate_matrix(GlobalC::exx_info.info_opt_abfs, this->kv, ucell, this->orb_); - #else +#else ModuleBase::WARNING_QUIT("ESolver_KS_LCAO::before_all_runners", "calculation=gen_opt_abfs must compile __EXX"); - #endif +#endif return; } - // 4) initialize electronic wave function psi - if (this->psi == nullptr) - { - int nsk = 0; - int ncol = 0; - if (PARAM.globalv.gamma_only_local) - { - nsk = inp.nspin; - ncol = this->pv.ncol_bands; - if (inp.ks_solver == "genelpa" || inp.ks_solver == "elpa" || inp.ks_solver == "lapack" - || inp.ks_solver == "pexsi" || inp.ks_solver == "cusolver" - || inp.ks_solver == "cusolvermp") - { - ncol = this->pv.ncol; - } - } - else - { - nsk = this->kv.get_nks(); -#ifdef __MPI - ncol = this->pv.ncol_bands; -#else - ncol = inp.nbands; -#endif - } - this->psi = new psi::Psi(nsk, ncol, this->pv.nrow, this->kv.ngk, true); - } + LCAO_domain::set_psi_occ_dm_chg(this->kv, this->psi, this->pv, this->pelec, + this->dmat, this->chr, inp); - // 5) read psi from file - if (inp.init_wfc == "file" && inp.esolver_type != "tddft") - { - if (!ModuleIO::read_wfc_nao(PARAM.globalv.global_readin_dir, - this->pv, - *(this->psi), - this->pelec, - this->pelec->klist->ik2iktot, - this->pelec->klist->get_nkstot(), - inp.nspin)) - { - ModuleBase::WARNING_QUIT("ESolver_KS_LCAO", "read electronic wave functions failed"); - } - } + LCAO_domain::set_pot(ucell, this->kv, this->sf, *this->pw_rho, *this->pw_rhod, + this->pelec, this->orb_, this->pv, this->locpp, this->dftu, + this->solvent, this->exx_nao, this->deepks, inp); - // 6) initialize the density matrix - // DensityMatrix is allocated here, DMK is also initialized here - // DMR is not initialized here, it will be constructed in each before_scf - dynamic_cast*>(this->pelec)->init_DM(&this->kv, &(this->pv), inp.nspin); + //! if kpar is not divisible by nks, print a warning + ModuleIO::print_kpar(this->kv.get_nks(), PARAM.globalv.kpar_lcao); - // 7) initialize exact exchange calculations -#ifdef __EXX - if (inp.calculation == "scf" || inp.calculation == "relax" || inp.calculation == "cell-relax" - || inp.calculation == "md") + //! init rdmft, added by jghan + if (inp.rdmft == true) { - if (GlobalC::exx_info.info_global.cal_exx) - { - if (inp.init_wfc != "file") - { // if init_wfc==file, directly enter the EXX loop - XC_Functional::set_xc_first_loop(ucell); - } - - // initialize 2-center radial tables for EXX-LRI - if (GlobalC::exx_info.info_ri.real_number) - { - this->exd->init(MPI_COMM_WORLD, ucell, this->kv, orb_); - this->exd->exx_before_all_runners(this->kv, ucell, this->pv); - } - else - { - this->exc->init(MPI_COMM_WORLD, ucell, this->kv, orb_); - this->exc->exx_before_all_runners(this->kv, ucell, this->pv); - } - } + rdmft_solver.init(this->pv, ucell, + this->gd, this->kv, *(this->pelec), this->orb_, + two_center_bundle_, inp.dft_functional, inp.rdmft_power_alpha); } -#endif - // 8) initialize DFT+U - if (inp.dft_plus_u) - { - auto* dftu = ModuleDFTU::DFTU::get_instance(); - dftu->init(ucell, &this->pv, this->kv.get_nks(), &orb_); - } + ModuleBase::timer::tick("ESolver_KS_LCAO", "before_all_runners"); + return; +} + + +template +void ESolver_KS_LCAO::before_scf(UnitCell& ucell, const int istep) +{ + ModuleBase::TITLE("ESolver_KS_LCAO", "before_scf"); + ModuleBase::timer::tick("ESolver_KS_LCAO", "before_scf"); + + //! 1) call before_scf() of ESolver_KS. + ESolver_KS::before_scf(ucell, istep); + + //! 2) find search radius + double search_radius = atom_arrange::set_sr_NL(GlobalV::ofs_running, + PARAM.inp.out_level, orb_.get_rcutmax_Phi(), ucell.infoNL.get_rcutmax_Beta(), + PARAM.globalv.gamma_only_local); + + //! 3) use search_radius to search adj atoms + atom_arrange::search(PARAM.globalv.search_pbc, GlobalV::ofs_running, + this->gd, ucell, search_radius, PARAM.inp.test_atom_input); - // 9) initialize local pseudopotentials - this->locpp.init_vloc(ucell, this->pw_rho); - ModuleBase::GlobalFunc::DONE(GlobalV::ofs_running, "LOCAL POTENTIAL"); + //! 4) initialize NAO basis set + // here new is a unique pointer, which will be deleted automatically + gint_info_.reset( + new ModuleGint::GintInfo( + this->pw_big->nbx, this->pw_big->nby, this->pw_big->nbz, + this->pw_rho->nx, this->pw_rho->ny, this->pw_rho->nz, + 0, 0, this->pw_big->nbzp_start, + this->pw_big->nbx, this->pw_big->nby, this->pw_big->nbzp, + orb_.Phi, ucell, this->gd)); + ModuleGint::Gint::set_gint_info(gint_info_.get()); - // 10) inititlize the charge density - this->chr.allocate(inp.nspin); - this->pelec->omega = ucell.omega; + // 7) For each atom, calculate the adjacent atoms in different cells + // and allocate the space for H(R) and S(R). + // If k point is used here, allocate HlocR after atom_arrange. + this->RA.for_2d(ucell, this->gd, this->pv, PARAM.globalv.gamma_only_local, orb_.cutoffs()); - // 11) initialize the potential - if (this->pelec->pot == nullptr) + // 8) initialize the Hamiltonian operators + // if atom moves, then delete old pointer and add a new one + if (this->p_hamilt != nullptr) { - this->pelec->pot = new elecstate::Potential(this->pw_rhod, - this->pw_rho, - &ucell, - &(this->locpp.vloc), - &(this->sf), - &(this->solvent), - &(this->pelec->f_en.etxc), - &(this->pelec->f_en.vtxc)); + delete this->p_hamilt; + this->p_hamilt = nullptr; } - - // 12) initialize deepks -#ifdef __MLALGO - LCAO_domain::DeePKS_init(ucell, pv, this->kv.get_nks(), orb_, this->ld, GlobalV::ofs_running); - if (inp.deepks_scf) + if (this->p_hamilt == nullptr) { - // load the DeePKS model from deep neural network - DeePKS_domain::load_model(inp.deepks_model, ld.model_deepks); - // read pdm from file for NSCF or SCF-restart, do it only once in whole calculation - DeePKS_domain::read_pdm((inp.init_chg == "file"), - inp.deepks_equiv, - ld.init_pdm, - ucell.nat, - orb_.Alpha[0].getTotal_nchi() * ucell.nat, - ld.lmaxd, - ld.inl2l, - *orb_.Alpha, - ld.pdm); + this->p_hamilt = new hamilt::HamiltLCAO( + ucell, this->gd, &this->pv, this->pelec->pot, this->kv, + two_center_bundle_, orb_, this->dmat.dm, &this->dftu, this->deepks, istep, exx_nao); } -#endif - // 13) set occupations - // tddft does not need to set occupations in the first scf - if (inp.ocp && inp.esolver_type != "tddft") + // 9) for each ionic step, the overlap must be rebuilt + // since it depends on ionic positions + this->deepks.build_overlap(ucell, orb_, pv, gd, *(two_center_bundle_.overlap_orb_alpha), PARAM.inp); + + // 10) prepare sc calculation + init_deltaspin_lcao(ucell, PARAM.inp, &(this->pv), this->kv, this->p_hamilt, this->psi, this->dmat.dm, this->pelec); + + // 11) set xc type before the first cal of xc in pelec->init_scf, Peize Lin add 2016-12-03 + this->exx_nao.before_scf(ucell, this->kv, orb_, this->p_chgmix, istep, PARAM.inp); + + // 12) initalize DM(R), which has the same size with Hamiltonian(R) + auto* hamilt_lcao = dynamic_cast*>(this->p_hamilt); + + if(!hamilt_lcao) { - elecstate::fixed_weights(inp.ocp_kb, - inp.nbands, - inp.nelec, - this->pelec->klist, - this->pelec->wg, - this->pelec->skip_weights); + ModuleBase::WARNING_QUIT("ESolver_KS_LCAO::before_scf","p_hamilt does not exist"); } + this->dmat.dm->init_DMR(*hamilt_lcao->getHR()); - // 14) if kpar is not divisible by nks, print a warning - if (PARAM.globalv.kpar_lcao > 1) + // 13.1) decide the strategy for initializing DMR and HR + if(istep == 0)//if the first scf step, readin DMR from file, { - if (this->kv.get_nks() % PARAM.globalv.kpar_lcao != 0) + //calculate or readin the density matrix DMR + if(PARAM.inp.init_chg == "dm") { - ModuleBase::WARNING("ESolver_KS_LCAO::before_all_runners", "nks is not divisible by kpar."); - std::cout << "\n%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%" - "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%" - "%%%%%%%%%%%%%%%%%%%%%%%%%%" - << std::endl; - std::cout << " Warning: nks (" << this->kv.get_nks() << ") is not divisible by kpar (" - << PARAM.globalv.kpar_lcao << ")." << std::endl; - std::cout << " This may lead to poor load balance. It is strongly suggested to" << std::endl; - std::cout << " set nks to be divisible by kpar, but if this is really what" << std::endl; - std::cout << " you want, please ignore this warning." << std::endl; - std::cout << "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%" - "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%" - "%%%%%%%%%%%%\n"; + //! 13.1.1) init charge density from density matrix file + LCAO_domain::init_chg_dm(PARAM.globalv.global_readin_dir, PARAM.inp.nspin, + this->dmat, ucell, &(this->pv), this->pelec->charge); } + if(PARAM.inp.init_chg == "hr") + { + //! 13.1.2) init charge density from Hamiltonian matrix file + LCAO_domain::init_chg_hr(PARAM.globalv.global_readin_dir, PARAM.inp.nspin, + static_cast*>(this->p_hamilt), ucell, &(this->pv), this->psi[0], this->pelec, *this->dmat.dm, + this->chr, PARAM.inp.ks_solver); + } + } + else //if not, use the DMR calculated from last step + { + // 13.1.2) two cases are considered: + // 1. DMK in DensityMatrix is not empty (istep > 0), then DMR is initialized by DMK + // 2. DMK in DensityMatrix is empty (istep == 0), then DMR is initialized by zeros + this->dmat.dm->cal_DMR(); } + // 13.2) init_scf, should be before_scf? mohan add 2025-03-10 + this->pelec->init_scf(ucell, this->Pgrid, this->sf.strucFac, this->locpp.numeric, ucell.symm); - // 15) initialize rdmft, added by jghan - if (inp.rdmft == true) +#ifdef __MLALGO + // 14) initialize DM2(R) of DeePKS, the DM2(R) is different from DM(R) + this->deepks.ld.init_DMR(ucell, orb_, this->pv, this->gd); +#endif + + // 16) the electron charge density should be symmetrized, + Symmetry_rho::symmetrize_rho(PARAM.inp.nspin, this->chr, this->pw_rho, ucell.symm); + + // 17) update of RDMFT, added by jghan + if (PARAM.inp.rdmft == true) { - rdmft_solver.init(this->GG, - this->GK, - this->pv, - ucell, - this->gd, - this->kv, - *(this->pelec), - this->orb_, - two_center_bundle_, - inp.dft_functional, - inp.rdmft_power_alpha); + rdmft_solver.update_ion(ucell, *(this->pw_rho), this->locpp.vloc, this->sf.strucFac); } - ModuleBase::timer::tick("ESolver_KS_LCAO", "before_all_runners"); + ModuleBase::timer::tick("ESolver_KS_LCAO", "before_scf"); return; } + template double ESolver_KS_LCAO::cal_energy() { - ModuleBase::TITLE("ESolver_KS_LCAO", "cal_energy"); - return this->pelec->f_en.etot; } @@ -339,34 +228,15 @@ void ESolver_KS_LCAO::cal_force(UnitCell& ucell, ModuleBase::matrix& for Force_Stress_LCAO fsl(this->RA, ucell.nat); - fsl.getForceStress(ucell, - PARAM.inp.cal_force, - PARAM.inp.cal_stress, - PARAM.inp.test_force, - PARAM.inp.test_stress, - this->gd, - this->pv, - this->pelec, - this->psi, - this->GG, // mohan add 2024-04-01 - this->GK, // mohan add 2024-04-01 - two_center_bundle_, - orb_, - force, - this->scs, - this->locpp, - this->sf, - this->kv, - this->pw_rho, - this->solvent, -#ifdef __MLALGO - this->ld, -#endif -#ifdef __EXX - *this->exd, - *this->exc, -#endif - &ucell.symm); + deepks.dpks_out_type = "tot"; // for deepks method + + fsl.getForceStress(ucell, PARAM.inp.cal_force, PARAM.inp.cal_stress, + PARAM.inp.test_force, PARAM.inp.test_stress, + this->gd, this->pv, this->pelec, this->dmat, this->psi, + two_center_bundle_, orb_, force, this->scs, + this->locpp, this->sf, this->kv, + this->pw_rho, this->solvent, this->dftu, this->deepks, + this->exx_nao, &ucell.symm); // delete RA after cal_force this->RA.delete_grid(); @@ -376,25 +246,19 @@ void ESolver_KS_LCAO::cal_force(UnitCell& ucell, ModuleBase::matrix& for ModuleBase::timer::tick("ESolver_KS_LCAO", "cal_force"); } -//------------------------------------------------------------------------------ -//! the 7th function of ESolver_KS_LCAO: cal_stress -//! mohan add 2024-05-11 -//------------------------------------------------------------------------------ template void ESolver_KS_LCAO::cal_stress(UnitCell& ucell, ModuleBase::matrix& stress) { ModuleBase::TITLE("ESolver_KS_LCAO", "cal_stress"); ModuleBase::timer::tick("ESolver_KS_LCAO", "cal_stress"); - // if the users do not want to calculate forces but want stress, - // we call cal_force if (!this->have_force) { ModuleBase::matrix fcs; this->cal_force(ucell, fcs); } - // the 'scs' stress has already been calculated in 'cal_force' + // the stress has been calculated in 'cal_force' stress = this->scs; this->have_force = false; @@ -407,107 +271,28 @@ void ESolver_KS_LCAO::after_all_runners(UnitCell& ucell) ModuleBase::TITLE("ESolver_KS_LCAO", "after_all_runners"); ModuleBase::timer::tick("ESolver_KS_LCAO", "after_all_runners"); - ESolver_KS::after_all_runners(ucell); + ESolver_KS::after_all_runners(ucell); - const int nspin0 = (PARAM.inp.nspin == 2) ? 2 : 1; - - // 1) write projected band structure - if (PARAM.inp.out_proj_band) + auto* hamilt_lcao = dynamic_cast*>(this->p_hamilt); + if(!hamilt_lcao) { - ModuleIO::write_proj_band_lcao(this->psi, this->pv, this->pelec, this->kv, ucell, this->p_hamilt); + ModuleBase::WARNING_QUIT("ESolver_KS_LCAO::after_all_runners","p_hamilt does not exist"); } - // 2) out ldos - if (PARAM.inp.out_ldos[0]) - { - ModuleIO::Cal_ldos::cal_ldos_lcao(reinterpret_cast*>(this->pelec), - this->psi[0], - this->Pgrid, - ucell); - } + ModuleIO::ctrl_runner_lcao(ucell, + PARAM.inp, this->kv, this->pelec, this->dmat, this->pv, this->Pgrid, + this->gd, this->psi, this->chr, hamilt_lcao, + this->two_center_bundle_, + this->orb_, this->pw_rho, this->pw_rhod, + this->sf, this->locpp.vloc, this->exx_nao, this->solvent); - // 3) print out exchange-correlation potential - if (PARAM.inp.out_mat_xc) - { - ModuleIO::write_Vxc(PARAM.inp.nspin, - PARAM.globalv.nlocal, - GlobalV::DRANK, - &this->pv, - *this->psi, - ucell, - this->sf, - this->solvent, - *this->pw_rho, - *this->pw_rhod, - this->locpp.vloc, - this->chr, - this->GG, - this->GK, - this->kv, - orb_.cutoffs(), - this->pelec->wg, - this->gd -#ifdef __EXX - , - this->exd ? &this->exd->get_Hexxs() : nullptr, - this->exc ? &this->exc->get_Hexxs() : nullptr -#endif - ); - } - if (PARAM.inp.out_mat_xc2) - { - ModuleIO::write_Vxc_R(PARAM.inp.nspin, - &this->pv, - ucell, - this->sf, - this->solvent, - *this->pw_rho, - *this->pw_rhod, - this->locpp.vloc, - this->chr, - this->GG, - this->GK, - this->kv, - orb_.cutoffs(), - this->gd -#ifdef __EXX - , - this->exd ? &this->exd->get_Hexxs() : nullptr, - this->exc ? &this->exc->get_Hexxs() : nullptr +#ifdef __MPI +#ifdef __LCAO + // Exit BLACS environment for LCAO calculations + Cblacs_exit(1); #endif - ); - } - - // write eband terms - if (PARAM.inp.out_eband_terms) - { - ModuleIO::write_eband_terms(PARAM.inp.nspin, - PARAM.globalv.nlocal, - GlobalV::DRANK, - &this->pv, - *this->psi, - ucell, - this->sf, - this->solvent, - *this->pw_rho, - *this->pw_rhod, - this->locpp.vloc, - this->chr, - this->GG, - this->GK, - this->kv, - this->pelec->wg, - this->gd, - orb_.cutoffs(), - this->two_center_bundle_ -#ifdef __EXX - , - this->exd ? &this->exd->get_Hexxs() : nullptr, - this->exc ? &this->exc->get_Hexxs() : nullptr #endif - ); - } ModuleBase::timer::tick("ESolver_KS_LCAO", "after_all_runners"); } @@ -518,128 +303,28 @@ void ESolver_KS_LCAO::iter_init(UnitCell& ucell, const int istep, const ModuleBase::TITLE("ESolver_KS_LCAO", "iter_init"); // call iter_init() of ESolver_KS - ESolver_KS::iter_init(ucell, istep, iter); + ESolver_KS::iter_init(ucell, istep, iter); - if (iter == 1) - { - this->p_chgmix->mix_reset(); // init mixing - this->p_chgmix->mixing_restart_step = PARAM.inp.scf_nmax + 1; - this->p_chgmix->mixing_restart_count = 0; - // this output will be removed once the feeature is stable - if (GlobalC::dftu.uramping > 0.01) - { - std::cout << " U-Ramping! Current U = "; - for (int i = 0; i < GlobalC::dftu.U0.size(); i++) - { - std::cout << GlobalC::dftu.U[i] * ModuleBase::Ry_to_eV << " "; - } - std::cout << " eV " << std::endl; - } - } - - // for mixing restart - if (iter == this->p_chgmix->mixing_restart_step && PARAM.inp.mixing_restart > 0.0) - { - this->p_chgmix->init_mixing(); - this->p_chgmix->mixing_restart_count++; - if (PARAM.inp.dft_plus_u) - { - GlobalC::dftu.uramping_update(); // update U by uramping if uramping > 0.01 - if (GlobalC::dftu.uramping > 0.01) - { - std::cout << " U-Ramping! Current U = "; - for (int i = 0; i < GlobalC::dftu.U0.size(); i++) - { - std::cout << GlobalC::dftu.U[i] * ModuleBase::Ry_to_eV << " "; - } - std::cout << " eV " << std::endl; - } - if (GlobalC::dftu.uramping > 0.01 && !GlobalC::dftu.u_converged()) - { - this->p_chgmix->mixing_restart_step = PARAM.inp.scf_nmax + 1; - } - } - if (PARAM.inp.mixing_dmr) // for mixing_dmr - { - // allocate memory for dmr_mdata - const elecstate::DensityMatrix* dm - = dynamic_cast*>(this->pelec)->get_DM(); - int nnr_tmp = dm->get_DMR_pointer(1)->get_nnr(); - this->p_chgmix->allocate_mixing_dmr(nnr_tmp); - } - } + module_charge::chgmixing_ks_lcao(iter, this->p_chgmix, this->dftu, + this->dmat.dm->get_DMR_pointer(1)->get_nnr(), PARAM.inp); // mohan update 2012-06-05 this->pelec->f_en.deband_harris = this->pelec->cal_delta_eband(ucell); - // first need to calculate the weight according to - // electrons number. if (istep == 0 && PARAM.inp.init_wfc == "file") - { - int exx_two_level_step = 0; + { + int exx_two_level_step = 0; #ifdef __EXX - if (GlobalC::exx_info.info_global.cal_exx) - { - // the following steps are only needed in the first outer exx loop - exx_two_level_step - = GlobalC::exx_info.info_ri.real_number ? this->exd->two_level_step : this->exc->two_level_step; - } + if (GlobalC::exx_info.info_global.cal_exx) + { + // the following steps are only needed in the first outer exx loop + exx_two_level_step + = GlobalC::exx_info.info_ri.real_number ? + this->exx_nao.exd->two_level_step : this->exx_nao.exc->two_level_step; + } #endif - if (iter == 1 && exx_two_level_step == 0) - { - std::cout << " WAVEFUN -> CHARGE " << std::endl; - - // calculate the density matrix using read in wave functions - // and then calculate the charge density on grid. - - this->pelec->skip_weights = true; - elecstate::calculate_weights(this->pelec->ekb, - this->pelec->wg, - this->pelec->klist, - this->pelec->eferm, - this->pelec->f_en, - this->pelec->nelec_spin, - this->pelec->skip_weights); - - auto _pelec = dynamic_cast*>(this->pelec); - elecstate::calEBand(_pelec->ekb, _pelec->wg, _pelec->f_en); - elecstate::cal_dm_psi(_pelec->DM->get_paraV_pointer(), _pelec->wg, *this->psi, *(_pelec->DM)); - _pelec->DM->cal_DMR(); - - this->pelec->psiToRho(*this->psi); - this->pelec->skip_weights = false; - - // calculate the local potential(rho) again. - // the grid integration will do in later grid integration. - - // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - // a puzzle remains here. - // if I don't renew potential, - // The scf_thr is very small. - // OneElectron, Hartree and - // Exc energy are all correct - // except the band energy. - // - // solved by mohan 2010-09-10 - // there are there rho here: - // rho1: formed by read in orbitals. - // rho2: atomic rho, used to construct H - // rho3: generated by after diagonalize - // here converged because rho3 and rho1 - // are very close. - // so be careful here, make sure - // rho1 and rho2 are the same rho. - // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - elecstate::cal_ux(ucell); - - //! update the potentials by using new electron charge density - this->pelec->pot->update_from_charge(&this->chr, &ucell); - - //! compute the correction energy for metals - this->pelec->f_en.descf = this->pelec->cal_delta_escf(); - } - } + elecstate::init_dm(ucell, this->pelec, this->dmat, this->psi, this->chr, iter, exx_two_level_step); + } #ifdef __EXX // calculate exact-exchange @@ -647,47 +332,26 @@ void ESolver_KS_LCAO::iter_init(UnitCell& ucell, const int istep, const { if (GlobalC::exx_info.info_ri.real_number) { - this->exd->exx_eachiterinit(istep, - ucell, - *dynamic_cast*>(this->pelec)->get_DM(), - this->kv, - iter); + this->exx_nao.exd->exx_eachiterinit(istep, ucell, *this->dmat.dm, this->kv, iter); } else { - this->exc->exx_eachiterinit(istep, - ucell, - *dynamic_cast*>(this->pelec)->get_DM(), - this->kv, - iter); + this->exx_nao.exc->exx_eachiterinit(istep, ucell, *this->dmat.dm, this->kv, iter); } } #endif - if (PARAM.inp.dft_plus_u) - { - if (istep != 0 || iter != 1) - { - GlobalC::dftu.set_dmr(dynamic_cast*>(this->pelec)->get_DM()); - } - // Calculate U and J if Yukawa potential is used - GlobalC::dftu.cal_slater_UJ(ucell, this->chr.rho, this->pw_rho->nrxx); - } + init_dftu_lcao(istep, iter, PARAM.inp, &(this->dftu), this->dmat.dm, ucell, this->chr.rho, this->pw_rho->nrxx); #ifdef __MLALGO // the density matrixes of DeePKS have been updated in each iter - ld.set_hr_cal(true); + this->deepks.ld.set_hr_cal(true); // HR in HamiltLCAO should be recalculate if (PARAM.inp.deepks_scf) { this->p_hamilt->refresh(); } - // if (iter == 1 && istep == 0) - // { - // // initialize DMR - // this->ld.init_DMR(ucell, orb_, this->pv, this->gd); - // } #endif if (PARAM.inp.vl_in_h) @@ -699,8 +363,7 @@ void ESolver_KS_LCAO::iter_init(UnitCell& ucell, const int istep, const // save density matrix DMR for mixing if (PARAM.inp.mixing_restart > 0 && PARAM.inp.mixing_dmr && this->p_chgmix->mixing_restart_count > 0) { - elecstate::DensityMatrix* dm = dynamic_cast*>(this->pelec)->get_DM(); - dm->save_DMR(); + this->dmat.dm->save_DMR(); } } @@ -709,36 +372,20 @@ void ESolver_KS_LCAO::hamilt2rho_single(UnitCell& ucell, int istep, int { ModuleBase::TITLE("ESolver_KS_LCAO", "hamilt2rho_single"); - // i1) reset energy + // 1) reset energy this->pelec->f_en.eband = 0.0; this->pelec->f_en.demet = 0.0; bool skip_charge = PARAM.inp.calculation == "nscf" ? true : false; // 2) run the inner lambda loop to contrain atomic moments with the DeltaSpin method - bool skip_solve = false; - if (PARAM.inp.sc_mag_switch) - { - spinconstrain::SpinConstrain& sc = spinconstrain::SpinConstrain::getScInstance(); - if (!sc.mag_converged() && this->drho > 0 && this->drho < PARAM.inp.sc_scf_thr) - { - // optimize lambda to get target magnetic moments, but the lambda is not near target - sc.run_lambda_loop(iter - 1); - sc.set_mag_converged(true); - skip_solve = true; - } - else if (sc.mag_converged()) - { - // optimize lambda to get target magnetic moments, but the lambda is not near target - sc.run_lambda_loop(iter - 1); - skip_solve = true; - } - } + bool skip_solve = run_deltaspin_lambda_loop_lcao(iter - 1, this->drho, PARAM.inp); // 3) run Hsolver if (!skip_solve) { hsolver::HSolverLCAO hsolver_lcao_obj(&(this->pv), PARAM.inp.ks_solver); - hsolver_lcao_obj.solve(this->p_hamilt, this->psi[0], this->pelec, skip_charge); + hsolver_lcao_obj.solve(static_cast*>(this->p_hamilt), this->psi[0], this->pelec, *this->dmat.dm, + this->chr, PARAM.inp.nspin, skip_charge); } // 4) EXX @@ -747,180 +394,105 @@ void ESolver_KS_LCAO::hamilt2rho_single(UnitCell& ucell, int istep, int { if (GlobalC::exx_info.info_ri.real_number) { - this->exd->exx_hamilt2rho(*this->pelec, this->pv, iter); + this->exx_nao.exd->exx_hamilt2rho(*this->pelec, this->pv, iter); } else { - this->exc->exx_hamilt2rho(*this->pelec, this->pv, iter); + this->exx_nao.exc->exx_hamilt2rho(*this->pelec, this->pv, iter); } } #endif // 5) symmetrize the charge density - Symmetry_rho srho; - for (int is = 0; is < PARAM.inp.nspin; is++) - { - srho.begin(is, this->chr, this->pw_rho, ucell.symm); - } + Symmetry_rho::symmetrize_rho(PARAM.inp.nspin, this->chr, this->pw_rho, ucell.symm); // 6) calculate delta energy this->pelec->f_en.deband = this->pelec->cal_delta_eband(ucell); } -template -void ESolver_KS_LCAO::update_pot(UnitCell& ucell, const int istep, const int iter, const bool conv_esolver) -{ - ModuleBase::TITLE("ESolver_KS_LCAO", "update_pot"); - - if (!conv_esolver) - { - elecstate::cal_ux(ucell); - this->pelec->pot->update_from_charge(&this->chr, &ucell); - this->pelec->f_en.descf = this->pelec->cal_delta_escf(); - } - else - { - this->pelec->cal_converged(); - } -} template void ESolver_KS_LCAO::iter_finish(UnitCell& ucell, const int istep, int& iter, bool& conv_esolver) { ModuleBase::TITLE("ESolver_KS_LCAO", "iter_finish"); - // 1) calculate the local occupation number matrix and energy correction - // in DFT+U - if (PARAM.inp.dft_plus_u) + auto* hamilt_lcao = dynamic_cast*>(this->p_hamilt); + + if(!hamilt_lcao) { - // only old DFT+U method should calculated energy correction in esolver, - // new DFT+U method will calculate energy in calculating Hamiltonian - if (PARAM.inp.dft_plus_u == 2) - { - if (GlobalC::dftu.omc != 2) - { - const std::vector>& tmp_dm - = dynamic_cast*>(this->pelec)->get_DM()->get_DMK_vector(); - ModuleDFTU::dftu_cal_occup_m(iter, - ucell, - tmp_dm, - this->kv, - this->p_chgmix->get_mixing_beta(), - this->p_hamilt); - } - GlobalC::dftu.cal_energy_correction(ucell, istep); - } - GlobalC::dftu.output(ucell); + ModuleBase::WARNING_QUIT("ESolver_KS_LCAO::iter_finish","p_hamilt does not exist"); } - // 2) for deepks, calculate delta_e, output labels during electronic steps -#ifdef __MLALGO - if (PARAM.inp.deepks_scf) - { - const std::vector>& dm - = dynamic_cast*>(this->pelec)->get_DM()->get_DMK_vector(); + const std::vector>& dm_vec = this->dmat.dm->get_DMK_vector(); - ld.dpks_cal_e_delta_band(dm, this->kv.get_nks()); - DeePKS_domain::update_dmr(this->kv.kvec_d, dm, ucell, orb_, this->pv, this->gd, ld.dm_r); - this->pelec->f_en.edeepks_scf = ld.E_delta - ld.e_delta_band; - this->pelec->f_en.edeepks_delta = ld.E_delta; - } -#endif + // 1) calculate the local occupation number matrix and energy correction in DFT+U + finish_dftu_lcao(iter, conv_esolver, PARAM.inp, &(this->dftu), ucell, dm_vec, this->kv, this->p_chgmix->get_mixing_beta(), hamilt_lcao); + + // 2) for deepks, calculate delta_e, output labels during electronic steps + this->deepks.delta_e(ucell, this->kv, this->orb_, this->pv, this->gd, dm_vec, this->pelec->f_en, PARAM.inp); // 3) for delta spin - if (PARAM.inp.sc_mag_switch) - { - spinconstrain::SpinConstrain& sc = spinconstrain::SpinConstrain::getScInstance(); - sc.cal_mi_lcao(iter); - } + cal_mi_lcao_wrapper(iter, PARAM.inp); - // 4) call iter_finish() of ESolver_KS - ESolver_KS::iter_finish(ucell, istep, iter, conv_esolver); + // call iter_finish() of ESolver_KS, where band gap is printed, + // eig and occ are printed, magnetization is calculated, + // charge mixing is performed, potential is updated, + // HF and kS energies are computed, meta-GGA, Jason and restart + ESolver_KS::iter_finish(ucell, istep, iter, conv_esolver); - // 5) mix density matrix if mixing_restart + mixing_dmr + not first + // mix density matrix if mixing_restart + mixing_dmr + not first // mixing_restart at every iter except the last iter if(iter != PARAM.inp.scf_nmax && !conv_esolver) { if (PARAM.inp.mixing_restart > 0 && this->p_chgmix->mixing_restart_count > 0 && PARAM.inp.mixing_dmr) { - elecstate::DensityMatrix* dm = dynamic_cast*>(this->pelec)->get_DM(); - this->p_chgmix->mix_dmr(dm); - } - } - // 6) save charge density - // Peize Lin add 2020.04.04 - if (GlobalC::restart.info_save.save_charge) - { - for (int is = 0; is < PARAM.inp.nspin; ++is) - { - GlobalC::restart.save_disk("charge", is, this->chr.nrxx, this->chr.rho[is]); + this->p_chgmix->mix_dmr(this->dmat.dm); } } -#ifdef __EXX - // 7) save exx matrix - if (PARAM.inp.calculation != "nscf") - { - if (GlobalC::exx_info.info_global.cal_exx) - { - GlobalC::exx_info.info_ri.real_number ? this->exd->exx_iter_finish(this->kv, - ucell, - *this->p_hamilt, - *this->pelec, - *this->p_chgmix, - this->scf_ene_thr, - iter, - istep, - conv_esolver) - : this->exc->exx_iter_finish(this->kv, - ucell, - *this->p_hamilt, - *this->pelec, - *this->p_chgmix, - this->scf_ene_thr, - iter, - istep, - conv_esolver); - } - } -#endif + // control the output related to the finished iteration + ModuleIO::ctrl_iter_lcao(ucell, PARAM.inp, this->kv, this->pelec, *this->dmat.dm, + this->pv, this->gd, this->psi, this->chr, this->p_chgmix, + hamilt_lcao, this->orb_, this->deepks, + this->exx_nao, iter, istep, conv_esolver, this->scf_ene_thr); +} + +template +void ESolver_KS_LCAO::after_scf(UnitCell& ucell, const int istep, const bool conv_esolver) +{ + ModuleBase::TITLE("ESolver_KS_LCAO", "after_scf"); + ModuleBase::timer::tick("ESolver_KS_LCAO", "after_scf"); - // 8) use the converged occupation matrix for next MD/Relax SCF calculation - if (PARAM.inp.dft_plus_u && conv_esolver) + auto* hamilt_lcao = dynamic_cast*>(this->p_hamilt); + + if(!hamilt_lcao) { - GlobalC::dftu.initialed_locale = true; + ModuleBase::WARNING_QUIT("ESolver_KS_LCAO::after_scf","p_hamilt does not exist"); } - // 9) for deepks, output labels during electronic steps (after conv_esolver is renewed) -#ifdef __MLALGO - if (PARAM.inp.deepks_out_labels >0 && PARAM.inp.deepks_out_freq_elec) + if (PARAM.inp.out_elf[0] > 0) + { + LCAO_domain::dm2tau(this->dmat.dm->get_DMR_vector(), PARAM.inp.nspin, this->pelec->charge); + } + + //! 1) call after_scf() of ESolver_KS + ESolver_KS::after_scf(ucell, istep, conv_esolver); + + //! 2) output of lcao every few ionic steps + ModuleIO::ctrl_scf_lcao(ucell, + PARAM.inp, this->kv, this->pelec, this->dmat.dm, this->pv, + this->gd, this->psi, hamilt_lcao, this->dftu, this->two_center_bundle_, + this->orb_, this->pw_wfc, this->pw_rho, this->pw_big, this->sf, + this->rdmft_solver, this->deepks, this->exx_nao, + this->conv_esolver, this->scf_nmax_flag, istep); + + //! 3) Clean up RA, which is used to serach for adjacent atoms + if (!PARAM.inp.cal_force && !PARAM.inp.cal_stress) { - if (iter % PARAM.inp.deepks_out_freq_elec == 0 ) - { - hamilt::HamiltLCAO* p_ham_deepks = dynamic_cast*>(this->p_hamilt); - std::shared_ptr> ld_shared_ptr(&ld, [](LCAO_Deepks*) {}); - LCAO_Deepks_Interface deepks_interface(ld_shared_ptr); - - deepks_interface.out_deepks_labels(this->pelec->f_en.etot, - this->kv.get_nks(), - ucell.nat, - PARAM.globalv.nlocal, - this->pelec->ekb, - this->kv.kvec_d, - ucell, - orb_, - this->gd, - &(this->pv), - *(this->psi), - dynamic_cast*>(this->pelec)->get_DM(), - p_ham_deepks, - iter, - conv_esolver, - GlobalV::MY_RANK, - GlobalV::ofs_running); - } + this->RA.delete_grid(); } -#endif + + ModuleBase::timer::tick("ESolver_KS_LCAO", "after_scf"); } template class ESolver_KS_LCAO; diff --git a/source/source_esolver/esolver_ks_lcao.h b/source/source_esolver/esolver_ks_lcao.h index 8040ccbbb9..143f7089ba 100644 --- a/source/source_esolver/esolver_ks_lcao.h +++ b/source/source_esolver/esolver_ks_lcao.h @@ -2,32 +2,14 @@ #define ESOLVER_KS_LCAO_H #include "esolver_ks.h" - -// for adjacent atoms -#include "source_lcao/record_adj.h" - -// for NAO basis -#include "source_basis/module_nao/two_center_bundle.h" - -// for grid integration -#include "source_lcao/module_gint/gint_gamma.h" -#include "source_lcao/module_gint/gint_k.h" -#include "source_lcao/module_gint/temp_gint/gint.h" -#include "source_lcao/module_gint/temp_gint/gint_info.h" - -// for DeePKS -#ifdef __MLALGO -#include "source_lcao/module_deepks/LCAO_deepks.h" -#endif - -// for EXX -#ifdef __EXX -#include "source_lcao/module_ri/Exx_LRI_interface.h" -#include "source_lcao/module_ri/Mix_DMk_2D.h" -#endif - -// for RDMFT -#include "source_lcao/module_rdmft/rdmft.h" +#include "source_lcao/record_adj.h" // adjacent atoms +#include "source_basis/module_nao/two_center_bundle.h" // nao basis +#include "source_lcao/module_gint/gint.h" // gint +#include "source_lcao/module_gint/gint_info.h" +#include "source_lcao/setup_deepks.h" // for deepks, mohan add 20251008 +#include "source_lcao/setup_exx.h" // for exx, mohan add 20251008 +#include "source_lcao/module_rdmft/rdmft.h" // rdmft +#include "source_lcao/setup_dm.h" // mohan add 2025-10-30 #include @@ -46,7 +28,7 @@ namespace ModuleESolver { template -class ESolver_KS_LCAO : public ESolver_KS +class ESolver_KS_LCAO : public ESolver_KS { public: ESolver_KS_LCAO(); @@ -69,14 +51,15 @@ class ESolver_KS_LCAO : public ESolver_KS virtual void hamilt2rho_single(UnitCell& ucell, const int istep, const int iter, const double ethr) override; - virtual void update_pot(UnitCell& ucell, const int istep, const int iter, const bool conv_esolver) override; - virtual void iter_finish(UnitCell& ucell, const int istep, int& iter, bool& conv_esolver) override; virtual void after_scf(UnitCell& ucell, const int istep, const bool conv_esolver) override; virtual void others(UnitCell& ucell, const int istep) override; + //! Electronic wave functions (moved from base class) + psi::Psi* psi = nullptr; + //! Store information about Adjacent Atoms Record_adj RA; @@ -86,45 +69,49 @@ class ESolver_KS_LCAO : public ESolver_KS //! NAO orbitals: 2d block-cyclic distribution info Parallel_Orbitals pv; - //! Grid integration: used for k-point-dependent algorithm - Gint_k GK; - - //! Grid integration: used for gamma only algorithms. - Gint_Gamma GG; - - //! Grid integration: used to store some basic information - Grid_Technique GridT; - -#ifndef __OLD_GINT //! GintInfo: used to store some basic infomation about module_gint std::unique_ptr gint_info_; -#endif + + //! NAO: store related information + LCAO_Orbitals orb_; //! NAO orbitals: two-center integrations TwoCenterBundle two_center_bundle_; + //! Add density matrix class, mohan add 2025-10-30 + LCAO_domain::Setup_DM dmat; + + + // For deepks method, mohan add 2025-10-08 + Setup_DeePKS deepks; + + // For exact-exchange energy, mohan add 2025-10-08 + Exx_NAO exx_nao; + //! For RDMFT calculations, added by jghan, 2024-03-16 rdmft::RDMFT rdmft_solver; - //! NAO: store related information - LCAO_Orbitals orb_; + //! For linear-response TDDFT + friend class LR::ESolver_LR; + friend class LR::ESolver_LR, double>; // Temporarily store the stress to unify the interface with PW, // because it's hard to seperate force and stress calculation in LCAO. ModuleBase::matrix scs; bool have_force = false; -#ifdef __MLALGO - LCAO_Deepks ld; -#endif - -#ifdef __EXX - std::shared_ptr> exd = nullptr; - std::shared_ptr>> exc = nullptr; -#endif - friend class LR::ESolver_LR; - friend class LR::ESolver_LR, double>; + public: + const Record_adj & get_RA() const { return RA; } + const Grid_Driver & get_gd() const { return gd; } + const Parallel_Orbitals & get_pv() const { return pv; } + const std::unique_ptr & get_gint_info() const { return gint_info_; } + const TwoCenterBundle & get_two_center_bundle() const { return two_center_bundle_; } + const rdmft::RDMFT & get_rdmft_solver() const { return rdmft_solver; } + const LCAO_Orbitals & get_orb() const { return orb_; } + const ModuleBase::matrix & get_scs() const { return scs; } + const Setup_DeePKS & get_deepks() const { return deepks; } + const Exx_NAO & get_exx_nao() const { return exx_nao; } }; } // namespace ModuleESolver #endif diff --git a/source/source_esolver/esolver_ks_lcao_tddft.cpp b/source/source_esolver/esolver_ks_lcao_tddft.cpp index 88b7e5136b..de109583a1 100644 --- a/source/source_esolver/esolver_ks_lcao_tddft.cpp +++ b/source/source_esolver/esolver_ks_lcao_tddft.cpp @@ -1,40 +1,20 @@ #include "esolver_ks_lcao_tddft.h" +//----------------IO----------------- +#include "source_io/module_ctrl/ctrl_output_td.h" +#include "source_io/module_current/td_current_io.h" +#include "source_io/module_dipole/dipole_io.h" +#include "source_io/module_output/output_log.h" +#include "source_io/module_wf/read_wfc_nao.h" +//------LCAO HSolver ElecState------- #include "source_estate/elecstate_tools.h" -#include "source_io/cal_r_overlap_R.h" -#include "source_io/dipole_io.h" -#include "source_io/td_current_io.h" -#include "source_io/read_wfc_nao.h" -#include "source_io/write_HS.h" -#include "source_io/write_HS_R.h" -#include "source_io/output_log.h" - -//--------------temporary---------------------------- -#include "source_base/module_external/blas_connector.h" -#include "source_base/global_function.h" -#include "source_base/module_external/scalapack_connector.h" #include "source_estate/module_charge/symmetry_rho.h" #include "source_estate/module_dm/cal_dm_psi.h" #include "source_estate/module_dm/cal_edm_tddft.h" -#include "source_estate/module_dm/density_matrix.h" -#include "source_estate/occupy.h" -#include "source_io/print_info.h" -#include "source_lcao/module_rt/evolve_elec.h" -#include "source_pw/module_pwdft/global.h" #include "source_estate/module_pot/H_TDDFT_pw.h" - -//-----HSolver ElecState Hamilt-------- -#include "source_io/module_parameter/parameter.h" -#include "source_estate/cal_ux.h" -#include "source_estate/elecstate_lcao.h" #include "source_hsolver/hsolver_lcao.h" -#include "source_lcao/hamilt_lcao.h" -#include "source_psi/psi.h" - -//-----force& stress------------------- -#include "source_lcao/FORCE_STRESS.h" - -//--------------------------------------------------- +#include "source_lcao/module_rt/evolve_elec.h" +#include "source_lcao/rho_tau_lcao.h" namespace ModuleESolver { @@ -50,30 +30,25 @@ ESolver_KS_LCAO_TDDFT::ESolver_KS_LCAO_TDDFT() if (ct_device_type == ct::DeviceType::GpuDevice) { use_tensor = true; - use_lapack = true; + if (PARAM.inp.ks_solver != "cusolvermp") + { + use_lapack = true; + } } } template ESolver_KS_LCAO_TDDFT::~ESolver_KS_LCAO_TDDFT() { - delete psi_laststep; - if (Hk_laststep != nullptr) + //************************************************* + // Do not add any code in this destructor function + //************************************************* + if (psi_laststep != nullptr) { - for (int ik = 0; ik < this->kv.get_nks(); ++ik) - { - delete[] Hk_laststep[ik]; - } - delete[] Hk_laststep; - } - if (Sk_laststep != nullptr) - { - for (int ik = 0; ik < this->kv.get_nks(); ++ik) - { - delete[] Sk_laststep[ik]; - } - delete[] Sk_laststep; + delete psi_laststep; + psi_laststep = nullptr; } + if (td_p != nullptr) { delete td_p; @@ -84,32 +59,31 @@ ESolver_KS_LCAO_TDDFT::~ESolver_KS_LCAO_TDDFT() template void ESolver_KS_LCAO_TDDFT::before_all_runners(UnitCell& ucell, const Input_para& inp) { - // 1) run before_all_runners in ESolver_KS_LCAO + // Run before_all_runners in ESolver_KS_LCAO ESolver_KS_LCAO, TR>::before_all_runners(ucell, inp); - // this line should be optimized - // this->pelec = dynamic_cast(this->pelec); - - td_p = new TD_info(&ucell); + td_p = new TD_info(&ucell, this->pv, this->orb_); TD_info::td_vel_op = td_p; totstep += TD_info::estep_shift; if (PARAM.inp.init_wfc == "file") - { - if (!ModuleIO::read_wfc_nao(PARAM.globalv.global_readin_dir, - this->pv, - *(this->psi), - this->pelec, - this->pelec->klist->ik2iktot, - this->pelec->klist->get_nkstot(), - PARAM.inp.nspin, - 0, - TD_info::estep_shift)) + { + if (!ModuleIO::read_wfc_nao(PARAM.globalv.global_readin_dir, + this->pv, + *(this->psi), + this->pelec->ekb, + this->pelec->wg, + this->kv.ik2iktot, + this->kv.get_nkstot(), + PARAM.inp.nspin, + 0, + TD_info::estep_shift)) { - ModuleBase::WARNING_QUIT("ESolver_KS_LCAO", "read electronic wave functions failed"); + ModuleBase::WARNING_QUIT("ESolver_KS_LCAO_TDDFT", "Read electronic wavefunction from file failed!"); } } } + template void ESolver_KS_LCAO_TDDFT::runner(UnitCell& ucell, const int istep) { @@ -119,28 +93,47 @@ void ESolver_KS_LCAO_TDDFT::runner(UnitCell& ucell, const int istep) //---------------------------------------------------------------- // 1) before_scf (electronic iteration loops) //---------------------------------------------------------------- - this->before_scf(ucell, istep); + this->before_scf(ucell, istep); // From ESolver_KS_LCAO ModuleBase::GlobalFunc::DONE(GlobalV::ofs_running, "INIT SCF"); // Initialize velocity operator for current calculation - if(PARAM.inp.td_stype!=1 && TD_info::out_current) + if (PARAM.inp.td_stype != 1 && TD_info::out_current == 1) { // initialize the velocity operator - velocity_mat = new Velocity_op(&ucell, &(this->gd), &this->pv, this->orb_, this->two_center_bundle_.overlap_orb.get()); - //calculate velocity operator + velocity_mat = new Velocity_op(&ucell, + &(this->gd), + &this->pv, + this->orb_, + this->two_center_bundle_.overlap_orb.get()); + // calculate velocity operator velocity_mat->calculate_grad_term(); velocity_mat->calculate_vcomm_r(); } int estep_max = (istep == 0 && !PARAM.inp.mdp.md_restart) ? 1 : PARAM.inp.estep_per_md; - if(PARAM.inp.mdp.md_nstep==0)estep_max = PARAM.inp.estep_per_md + 1; - //int estep_max = PARAM.inp.estep_per_md; - for(int estep =0; estep < estep_max; estep++) + // mohan change md_nstep from 0 to 1, 2026-01-04 + if (PARAM.inp.mdp.md_nstep == 1) + { + estep_max = PARAM.inp.estep_per_md + 1; + } + + // Reset laststep matrix and wfc, if any atom cross the boundary + // Apply a phase correction to H, S, and psi to keep consistency when atoms cross periodic boundaries + const size_t len_hs_ik = use_tensor && use_lapack ? PARAM.globalv.nlocal * PARAM.globalv.nlocal : this->pv.nloc; + module_rt::reset_matrix_boundary(ucell, + this->kv, + &(this->pv), + this->Hk_laststep, + this->Sk_laststep, + this->psi_laststep, + len_hs_ik); + + for (int estep = 0; estep < estep_max; estep++) { // calculate total time step this->totstep++; this->print_step(); - //update At - if(PARAM.inp.td_stype > 0) + // update At + if (PARAM.inp.td_stype > 0) { elecstate::H_TDDFT_pw::update_At(); td_p->cal_cart_At(elecstate::H_TDDFT_pw::At); @@ -149,7 +142,7 @@ void ESolver_KS_LCAO_TDDFT::runner(UnitCell& ucell, const int istep) ModuleBase::GlobalFunc::OUT(GlobalV::ofs_running, "Cartesian vector potential Az(t)", TD_info::cart_At[2]); } - if(estep!=0) + if (estep != 0) { this->CE.update_all_dis(ucell); this->CE.extrapolate_charge(&this->Pgrid, @@ -158,10 +151,10 @@ void ESolver_KS_LCAO_TDDFT::runner(UnitCell& ucell, const int istep) &this->sf, GlobalV::ofs_running, GlobalV::ofs_warning); - //need to test if correct when estep>0 - this->pelec->init_scf(totstep, ucell, this->Pgrid, this->sf.strucFac, this->locpp.numeric, ucell.symm); - - if(totstep <= PARAM.inp.td_tend + 1) + // need to test if correct when estep>0 + this->pelec->init_scf(ucell, this->Pgrid, this->sf.strucFac, this->locpp.numeric, ucell.symm); + + if (totstep <= PARAM.inp.td_tend + 1) { TD_info::evolve_once = true; } @@ -175,24 +168,17 @@ void ESolver_KS_LCAO_TDDFT::runner(UnitCell& ucell, const int istep) for (int iter = 1; iter <= this->maxniter; ++iter) { ModuleIO::write_head_td(GlobalV::ofs_running, istep, totstep, iter, this->basisname); - //---------------------------------------------------------------- - // 3) initialization of SCF iterations - //---------------------------------------------------------------- - this->iter_init(ucell, totstep, iter); - - //---------------------------------------------------------------- - // 4) use Hamiltonian to obtain charge density - //---------------------------------------------------------------- - this->hamilt2rho(ucell, totstep, iter, this->diag_ethr); - - //---------------------------------------------------------------- - // 5) finish scf iterations - //---------------------------------------------------------------- - this->iter_finish(ucell, totstep, iter, conv_esolver); - - //---------------------------------------------------------------- - // 6) check convergence - //---------------------------------------------------------------- + + // 3) Initialization of SCF iterations + this->iter_init(ucell, totstep, iter); // From ESolver_KS_LCAO + + // 4) Use Hamiltonian to obtain charge density + this->hamilt2rho(ucell, totstep, iter, this->diag_ethr); // From ESolver_KS + + // 5) Finish SCF iterations + this->iter_finish(ucell, totstep, estep, estep_max, iter, conv_esolver); + + // 6) Check convergence if (conv_esolver || this->oscillate_esolver) { this->niter = iter; @@ -202,28 +188,38 @@ void ESolver_KS_LCAO_TDDFT::runner(UnitCell& ucell, const int istep) } break; } - } // end scf iterations + } // end SCF iterations //---------------------------------------------------------------- - // 7) after scf + // 7) after_scf //---------------------------------------------------------------- this->after_scf(ucell, totstep, conv_esolver); - if(!restart_done && PARAM.inp.mdp.md_restart) + if (!restart_done && PARAM.inp.mdp.md_restart) { restart_done = true; - estep += TD_info::estep_shift%PARAM.inp.estep_per_md; - if(estep==0)break; - if(PARAM.inp.mdp.md_nstep!=0)estep -= 1; + estep += TD_info::estep_shift % PARAM.inp.estep_per_md; + if (estep == 0) + { + break; + } + // mohan add 2026-01-04, change md_nstep!=0 to md_nstep!=1 + if (PARAM.inp.mdp.md_nstep != 1) + { + estep -= 1; + } } } - if(PARAM.inp.td_stype!=1 && TD_info::out_current) + + if (PARAM.inp.td_stype != 1 && TD_info::out_current == 1) { delete velocity_mat; } + ModuleBase::timer::tick(this->classname, "runner"); return; } -//output electronic step infos + +// Output electronic step information template void ESolver_KS_LCAO_TDDFT::print_step() { @@ -231,6 +227,7 @@ void ESolver_KS_LCAO_TDDFT::print_step() std::cout << " STEP OF ELECTRON EVOLVE : " << unsigned(totstep) << std::endl; std::cout << " -------------------------------------------" << std::endl; } + template void ESolver_KS_LCAO_TDDFT::hamilt2rho_single(UnitCell& ucell, const int istep, @@ -241,80 +238,88 @@ void ESolver_KS_LCAO_TDDFT::hamilt2rho_single(UnitCell& ucell, { if (istep >= TD_info::estep_shift + 1) { - module_rt::Evolve_elec::solve_psi(istep, - PARAM.inp.nbands, - PARAM.globalv.nlocal, - this->kv.get_nks(), - this->p_hamilt, - this->pv, - this->psi, - this->psi_laststep, - this->Hk_laststep, - this->Sk_laststep, - this->pelec->ekb, - GlobalV::ofs_running, - td_htype, - PARAM.inp.propagator, - use_tensor, - use_lapack); + module_rt::Evolve_elec::solve_psi( + istep, + PARAM.inp.nbands, + PARAM.globalv.nlocal, + this->kv.get_nks(), + static_cast>*>(this->p_hamilt), + this->pv, + this->psi, + this->psi_laststep, + this->Hk_laststep, + this->Sk_laststep, + this->pelec->ekb, + GlobalV::ofs_running, + PARAM.inp.propagator, + use_tensor, + use_lapack); } this->weight_dm_rho(ucell); } else if (istep >= 1) { module_rt::Evolve_elec::solve_psi(istep, - PARAM.inp.nbands, - PARAM.globalv.nlocal, - this->kv.get_nks(), - this->p_hamilt, - this->pv, - this->psi, - this->psi_laststep, - this->Hk_laststep, - this->Sk_laststep, - this->pelec->ekb, - GlobalV::ofs_running, - td_htype, - PARAM.inp.propagator, - use_tensor, - use_lapack); + PARAM.inp.nbands, + PARAM.globalv.nlocal, + this->kv.get_nks(), + static_cast>*>(this->p_hamilt), + this->pv, + this->psi, + this->psi_laststep, + this->Hk_laststep, + this->Sk_laststep, + this->pelec->ekb, + GlobalV::ofs_running, + PARAM.inp.propagator, + use_tensor, + use_lapack); this->weight_dm_rho(ucell); } else { - // reset energy + // For the first step, do normal SCF calculation to get initial state this->pelec->f_en.eband = 0.0; this->pelec->f_en.demet = 0.0; if (this->psi != nullptr) { bool skip_charge = PARAM.inp.calculation == "nscf" ? true : false; hsolver::HSolverLCAO> hsolver_lcao_obj(&this->pv, PARAM.inp.ks_solver); - hsolver_lcao_obj.solve(this->p_hamilt, this->psi[0], this->pelec, skip_charge); + hsolver_lcao_obj.solve(static_cast>*>(this->p_hamilt), + this->psi[0], + this->pelec, + *this->dmat.dm, + this->chr, + PARAM.inp.nspin, + skip_charge); } } - // symmetrize the charge density only for ground state + // Symmetrize the charge density only for ground state if (istep <= 1) { - Symmetry_rho srho; - for (int is = 0; is < PARAM.inp.nspin; is++) - { - srho.begin(is, this->chr, this->pw_rho, ucell.symm); - } + Symmetry_rho::symmetrize_rho(PARAM.inp.nspin, this->chr, this->pw_rho, ucell.symm); } +#ifdef __EXX + if (GlobalC::exx_info.info_ri.real_number) + this->exx_nao.exd->exx_hamilt2rho(*this->pelec, this->pv, iter); + else + this->exx_nao.exc->exx_hamilt2rho(*this->pelec, this->pv, iter); +#endif - // (7) calculate delta energy + // Calculate delta energy this->pelec->f_en.deband = this->pelec->cal_delta_eband(ucell); } template -void ESolver_KS_LCAO_TDDFT::iter_finish( - UnitCell& ucell, - const int istep, - int& iter, - bool& conv_esolver) +void ESolver_KS_LCAO_TDDFT::iter_finish(UnitCell& ucell, + const int istep, + const int estep, + const int estep_max, + int& iter, + bool& conv_esolver) { - // print occupation of each band + // Print occupation of each band if (iter == 1 && istep <= 2) { GlobalV::ofs_running << " k-point State Occupations" << std::endl; @@ -325,211 +330,207 @@ void ESolver_KS_LCAO_TDDFT::iter_finish( { for (int ib = 0; ib < PARAM.inp.nbands; ib++) { - GlobalV::ofs_running << " " << std::setw(9) - << ik+1 << std::setw(8) << ib + 1 - << std::setw(12) << this->pelec->wg(ik, ib) << std::endl; + GlobalV::ofs_running << " " << std::setw(9) << ik + 1 << std::setw(8) << ib + 1 << std::setw(12) + << this->pelec->wg(ik, ib) << std::endl; } } GlobalV::ofs_running << std::endl; } ESolver_KS_LCAO, TR>::iter_finish(ucell, istep, iter, conv_esolver); -} -template -void ESolver_KS_LCAO_TDDFT::update_pot(UnitCell& ucell, - const int istep, - const int iter, - const bool conv_esolver) -{ - // Calculate new potential according to new Charge Density - if (!conv_esolver) - { - elecstate::cal_ux(ucell); - this->pelec->pot->update_from_charge(&this->chr, &ucell); - this->pelec->f_en.descf = this->pelec->cal_delta_escf(); - } - else + // Store wave function, Hamiltonian and Overlap matrix, to be used in next time step + // Store when converged or reach max iteration + bool force_save = conv_esolver || (iter == this->maxniter); + this->store_h_s_psi(ucell, istep, iter, force_save); + + // Calculate energy-density matrix for RT-TDDFT + if (conv_esolver && estep == estep_max - 1 && istep >= (PARAM.inp.init_wfc == "file" ? 0 : 1) + && PARAM.inp.td_edm == 0) { - this->pelec->cal_converged(); + if (use_tensor && use_lapack) + { + elecstate::cal_edm_tddft_tensor_lapack( + this->pv, + this->dmat, + this->kv, + static_cast>*>(this->p_hamilt)); + } + else + { + elecstate::cal_edm_tddft(this->pv, + this->dmat, + this->kv, + static_cast>*>(this->p_hamilt)); + } } +} - const int nloc = this->pv.nloc; - const int ncol_nbands = this->pv.ncol_bands; - const int nrow = this->pv.nrow; +template +void ESolver_KS_LCAO_TDDFT::store_h_s_psi(UnitCell& ucell, + const int istep, + const int iter, + const bool conv_esolver) +{ const int nbands = PARAM.inp.nbands; const int nlocal = PARAM.globalv.nlocal; - // store wfc and Hk laststep + // Store wave function, Hamiltonian and Overlap matrix if (conv_esolver) { if (this->psi_laststep == nullptr) { - int ncol_tmp = 0; - int nrow_tmp = 0; + this->psi_laststep = new psi::Psi>(this->kv.get_nks(), #ifdef __MPI - ncol_tmp = ncol_nbands; - nrow_tmp = nrow; + this->pv.ncol_bands, + this->pv.nrow, #else - ncol_tmp = nbands; - nrow_tmp = nlocal; + nbands, + nlocal, #endif - this->psi_laststep = new psi::Psi>(this->kv.get_nks(), ncol_tmp, nrow_tmp, this->kv.ngk, true); - + this->kv.ngk, + true); } - // allocate memory for Hk_laststep and Sk_laststep - if (td_htype == 1) + // Length of Hk_laststep and Sk_laststep, nlocal * nlocal for global, nloc for local + const int len_HS_ik = use_tensor && use_lapack ? nlocal * nlocal : this->pv.nloc; + const int len_HS_all = this->kv.get_nks() * len_HS_ik; + + // Allocate memory for Hk_laststep, if (use_tensor && use_lapack), should be global + if (this->Hk_laststep.NumElements() != len_HS_all) { - // Length of Hk_laststep and Sk_laststep, nlocal * nlocal for global, nloc for local - const int len_HS = use_tensor && use_lapack ? nlocal * nlocal : nloc; + this->Hk_laststep = ct::Tensor(ct::DataType::DT_COMPLEX_DOUBLE, + ct_device_type_hs, + ct::TensorShape({this->kv.get_nks(), len_HS_ik})); + this->Hk_laststep.zero(); + } - if (this->Hk_laststep == nullptr) - { - this->Hk_laststep = new std::complex*[this->kv.get_nks()]; - for (int ik = 0; ik < this->kv.get_nks(); ++ik) - { - // Allocate memory for Hk_laststep, if (use_tensor && use_lapack), should be global - this->Hk_laststep[ik] = new std::complex[len_HS]; - ModuleBase::GlobalFunc::ZEROS(Hk_laststep[ik], len_HS); - } - } - if (this->Sk_laststep == nullptr) - { - this->Sk_laststep = new std::complex*[this->kv.get_nks()]; - for (int ik = 0; ik < this->kv.get_nks(); ++ik) - { - // Allocate memory for Sk_laststep, if (use_tensor && use_lapack), should be global - this->Sk_laststep[ik] = new std::complex[len_HS]; - ModuleBase::GlobalFunc::ZEROS(Sk_laststep[ik], len_HS); - } - } + // Allocate memory for Sk_laststep, if (use_tensor && use_lapack), should be global + if (this->Sk_laststep.NumElements() != len_HS_all) + { + this->Sk_laststep = ct::Tensor(ct::DataType::DT_COMPLEX_DOUBLE, + ct_device_type_hs, + ct::TensorShape({this->kv.get_nks(), len_HS_ik})); + this->Sk_laststep.zero(); } - // put information to Hk_laststep and Sk_laststep + // Put information into psi_laststep, Hk_laststep and Sk_laststep for (int ik = 0; ik < this->kv.get_nks(); ++ik) { this->psi->fix_k(ik); this->psi_laststep->fix_k(ik); - // copy the data from psi to psi_laststep - const int size0 = this->psi->get_nbands() * this->psi->get_nbasis(); - for (int index = 0; index < size0; ++index) + // Copy data from psi to psi_laststep at k-point ik + const int len_psi_ik = this->psi->get_nbands() * this->psi->get_nbasis(); + for (int index = 0; index < len_psi_ik; ++index) { psi_laststep[0].get_pointer()[index] = this->psi[0].get_pointer()[index]; } - // store Hamiltonian - if (td_htype == 1) - { - this->p_hamilt->updateHk(ik); - hamilt::MatrixBlock> h_mat; - hamilt::MatrixBlock> s_mat; - this->p_hamilt->matrix(h_mat, s_mat); + // Get H and S matrices at k-point ik + this->p_hamilt->updateHk(ik); + hamilt::MatrixBlock> h_mat; + hamilt::MatrixBlock> s_mat; + static_cast>*>(this->p_hamilt)->matrix(h_mat, s_mat); - if (use_tensor && use_lapack) - { - // Gather H and S matrices to root process + // Store H and S matrices to Hk_laststep and Sk_laststep + if (use_tensor && use_lapack) + { #ifdef __MPI - int myid = 0; - int num_procs = 1; - MPI_Comm_rank(MPI_COMM_WORLD, &myid); - MPI_Comm_size(MPI_COMM_WORLD, &num_procs); + int myid = 0; + int num_procs = 1; + MPI_Comm_rank(MPI_COMM_WORLD, &myid); + MPI_Comm_size(MPI_COMM_WORLD, &num_procs); - Matrix_g> h_mat_g; // Global matrix structure - Matrix_g> s_mat_g; // Global matrix structure + std::complex* h_ptr = nullptr; + std::complex* s_ptr = nullptr; - // Collect H matrix - gatherMatrix(myid, 0, h_mat, h_mat_g); - BlasConnector::copy(nlocal * nlocal, h_mat_g.p.get(), 1, Hk_laststep[ik], 1); + // Define containers for gathered data (only needed for multi-process) + module_rt::Matrix_g> h_mat_g; + module_rt::Matrix_g> s_mat_g; - // Collect S matrix - gatherMatrix(myid, 0, s_mat, s_mat_g); - BlasConnector::copy(nlocal * nlocal, s_mat_g.p.get(), 1, Sk_laststep[ik], 1); -#endif + if (num_procs == 1) + { + // Single process: directly point to local data without gather + h_ptr = h_mat.p; + s_ptr = s_mat.p; } else { - BlasConnector::copy(nloc, h_mat.p, 1, Hk_laststep[ik], 1); - BlasConnector::copy(nloc, s_mat.p, 1, Sk_laststep[ik], 1); + // Multiple processes: gather data to the root process (myid == 0) and point to the gathered data + module_rt::gatherMatrix(myid, 0, h_mat, h_mat_g); + module_rt::gatherMatrix(myid, 0, s_mat, s_mat_g); + if (myid == 0) + { + h_ptr = h_mat_g.p.get(); + s_ptr = s_mat_g.p.get(); + } } - } - } - - // calculate energy density matrix for tddft - if (istep >= (PARAM.inp.init_wfc == "file" ? 0 : 1) && PARAM.inp.td_edm == 0) - { - elecstate::cal_edm_tddft(this->pv, this->pelec, this->kv, this->p_hamilt); - } - } + // Only the root process (myid == 0) performs the copy + if (myid == 0 && h_ptr != nullptr && s_ptr != nullptr) + { + BlasConnector::copy(len_HS_ik, + h_ptr, + 1, + this->Hk_laststep.template data>() + ik * len_HS_ik, + 1); + BlasConnector::copy(len_HS_ik, + s_ptr, + 1, + this->Sk_laststep.template data>() + ik * len_HS_ik, + 1); + } +#endif + } + else + { + BlasConnector::copy(len_HS_ik, + h_mat.p, + 1, + this->Hk_laststep.template data>() + ik * len_HS_ik, + 1); + BlasConnector::copy(len_HS_ik, + s_mat.p, + 1, + this->Sk_laststep.template data>() + ik * len_HS_ik, + 1); + } // end use_tensor + } // end ik + } // conv_esolver } template void ESolver_KS_LCAO_TDDFT::after_scf(UnitCell& ucell, const int istep, const bool conv_esolver) { ModuleBase::TITLE("ESolver_LCAO_TDDFT", "after_scf"); - ModuleBase::timer::tick("ESolver_LCAO_TDDFT", "after_scf"); + ModuleBase::timer::tick(this->classname, "after_scf"); ESolver_KS_LCAO, TR>::after_scf(ucell, istep, conv_esolver); - // (1) write dipole information - for (int is = 0; is < PARAM.inp.nspin; is++) - { - if (PARAM.inp.out_dipole == 1) - { - std::stringstream ss_dipole; - ss_dipole << PARAM.globalv.global_out_dir << "SPIN" << is + 1 << "_DIPOLE"; - ModuleIO::write_dipole(ucell, - this->chr.rho_save[is], - this->chr.rhopw, - is, - istep, - ss_dipole.str()); - } - } - elecstate::DensityMatrix, double>* tmp_DM - = dynamic_cast>*>(this->pelec)->get_DM(); - // (2) write current information - if(TD_info::out_current) - { - if(TD_info::out_current_k) - { - ModuleIO::write_current_eachk(ucell, - istep, - this->psi, - this->pelec, - this->kv, - this->two_center_bundle_.overlap_orb.get(), - tmp_DM->get_paraV_pointer(), - this->orb_, - this->velocity_mat, - this->RA); - } - else - { - ModuleIO::write_current(ucell, - istep, - this->psi, - this->pelec, - this->kv, - this->two_center_bundle_.overlap_orb.get(), - tmp_DM->get_paraV_pointer(), - this->orb_, - this->velocity_mat, - this->RA); - } - } - // (3) output energy for sub loop - std::cout << " Potential (Ry): " << std::setprecision(15) << this->pelec->f_en.etot <out_restart_info(istep, elecstate::H_TDDFT_pw::At, elecstate::H_TDDFT_pw::At_laststep); - } - - ModuleBase::timer::tick("ESolver_LCAO_TDDFT", "after_scf"); + // Output energy for sub-loop (electronic step) + std::cout << " Potential (Ry): " << std::setprecision(15) << this->pelec->f_en.etot << std::endl; + + // Output dipole, current, etc. + auto* hamilt_lcao = dynamic_cast, TR>*>(this->p_hamilt); + ModuleIO::ctrl_output_td(ucell, + this->chr.rho_save, + this->chr.rhopw, + istep, + this->psi, + this->pelec, + this->kv, + this->two_center_bundle_.overlap_orb.get(), + &this->pv, + this->orb_, + this->velocity_mat, + this->gd, + hamilt_lcao, + this->RA, + this->td_p, + this->exx_nao); + + ModuleBase::timer::tick(this->classname, "after_scf"); } template @@ -545,25 +546,21 @@ void ESolver_KS_LCAO_TDDFT::weight_dm_rho(const UnitCell& ucell) this->pelec->skip_weights); } - // calculate Eband energy - elecstate::calEBand(this->pelec->ekb,this->pelec->wg,this->pelec->f_en); - - // calculate the density matrix - ModuleBase::GlobalFunc::NOTE("Calculate the density matrix."); + // Calculate Eband energy + elecstate::calEBand(this->pelec->ekb, this->pelec->wg, this->pelec->f_en); - auto _pes = dynamic_cast>*>(this->pelec); - elecstate::cal_dm_psi(_pes->DM->get_paraV_pointer(), _pes->wg, this->psi[0], *(_pes->DM)); - if(PARAM.inp.td_stype == 2) + elecstate::cal_dm_psi(this->dmat.dm->get_paraV_pointer(), this->pelec->wg, this->psi[0], *this->dmat.dm); + if (PARAM.inp.td_stype == 2) { - _pes->DM->cal_DMR_td(ucell, TD_info::cart_At); + this->dmat.dm->cal_DMR_td(ucell, TD_info::cart_At); } else { - _pes->DM->cal_DMR(); + this->dmat.dm->cal_DMR(); } - // get the real-space charge density - this->pelec->psiToRho(this->psi[0]); + // get the real-space charge density, mohan add 2025-10-24 + LCAO_domain::dm2rho(this->dmat.dm->get_DMR_vector(), PARAM.inp.nspin, &this->chr); } template class ESolver_KS_LCAO_TDDFT; diff --git a/source/source_esolver/esolver_ks_lcao_tddft.h b/source/source_esolver/esolver_ks_lcao_tddft.h index fc0a62e41d..f534b303f4 100644 --- a/source/source_esolver/esolver_ks_lcao_tddft.h +++ b/source/source_esolver/esolver_ks_lcao_tddft.h @@ -2,52 +2,15 @@ #define ESOLVER_KS_LCAO_TDDFT_H #include "esolver_ks.h" #include "esolver_ks_lcao.h" -#include "source_base/module_external/scalapack_connector.h" // Cpxgemr2d -#include "source_lcao/record_adj.h" -#include "source_psi/psi.h" -#include "source_lcao/module_rt/velocity_op.h" +#include "source_base/module_container/ATen/core/tensor.h" // ct::Tensor +#include "source_lcao/module_rt/boundary_fix.h" +#include "source_lcao/module_rt/gather_mat.h" // MPI gathering and distributing functions +#include "source_lcao/module_rt/kernels/cublasmp_context.h" #include "source_lcao/module_rt/td_info.h" +#include "source_lcao/module_rt/velocity_op.h" namespace ModuleESolver { -//------------------------ MPI gathering and distributing functions ------------------------// -// This struct is used for collecting matrices from all processes to root process -template -struct Matrix_g -{ - std::shared_ptr p; - size_t row; - size_t col; - std::shared_ptr desc; -}; - -// Collect matrices from all processes to root process -template -void gatherMatrix(const int myid, const int root_proc, const hamilt::MatrixBlock& mat_l, Matrix_g& mat_g) -{ - const int* desca = mat_l.desc; // Obtain the descriptor of the local matrix - int ctxt = desca[1]; // BLACS context - int nrows = desca[2]; // Global matrix row number - int ncols = desca[3]; // Global matrix column number - - if (myid == root_proc) - { - mat_g.p.reset(new T[nrows * ncols]); // No need to delete[] since it is a shared_ptr - } - else - { - mat_g.p.reset(new T[nrows * ncols]); // Placeholder for non-root processes - } - - // Set the descriptor of the global matrix - mat_g.desc.reset(new int[9]{1, ctxt, nrows, ncols, nrows, ncols, 0, 0, nrows}); - mat_g.row = nrows; - mat_g.col = ncols; - - // Call the Cpxgemr2d function in ScaLAPACK to collect the matrix data - Cpxgemr2d(nrows, ncols, mat_l.p, 1, 1, const_cast(desca), mat_g.p.get(), 1, 1, mat_g.desc.get(), ctxt); -} -//------------------------ MPI gathering and distributing functions ------------------------// template class ESolver_KS_LCAO_TDDFT : public ESolver_KS_LCAO, TR> @@ -64,27 +27,36 @@ class ESolver_KS_LCAO_TDDFT : public ESolver_KS_LCAO, TR> virtual void hamilt2rho_single(UnitCell& ucell, const int istep, const int iter, const double ethr) override; - virtual void update_pot(UnitCell& ucell, const int istep, const int iter, const bool conv_esolver) override; + void store_h_s_psi(UnitCell& ucell, const int istep, const int iter, const bool conv_esolver); - virtual void iter_finish(UnitCell& ucell, const int istep, int& iter, bool& conv_esolver) override; + void iter_finish(UnitCell& ucell, + const int istep, + const int estep, + const int estep_max, + int& iter, + bool& conv_esolver); virtual void after_scf(UnitCell& ucell, const int istep, const bool conv_esolver) override; void print_step(); - //! wave functions of last time step - psi::Psi>* psi_laststep = nullptr; - //! Hamiltonian of last time step - std::complex** Hk_laststep = nullptr; + //! Wave function for all k-points of last time step + psi::Psi>* psi_laststep = nullptr; - //! Overlap matrix of last time step - std::complex** Sk_laststep = nullptr; + //! Hamiltonian for all k-points of last time step + ct::Tensor Hk_laststep = ct::Tensor(ct::DataType::DT_COMPLEX_DOUBLE); - const int td_htype = 1; + //! Overlap matrix for all k-points of last time step + ct::Tensor Sk_laststep = ct::Tensor(ct::DataType::DT_COMPLEX_DOUBLE); //! Control heterogeneous computing of the TDDFT solver bool use_tensor = false; bool use_lapack = false; + CublasMpResources cublas_res; + + // Control the device type for Hk_laststep and Sk_laststep + // Set to CPU temporarily, should wait for further GPU development + static constexpr ct::DeviceType ct_device_type_hs = ct::DeviceType::CpuDevice; //! Total steps for evolving the wave function int totstep = -1; @@ -94,7 +66,7 @@ class ESolver_KS_LCAO_TDDFT : public ESolver_KS_LCAO, TR> TD_info* td_p = nullptr; - //! doubt + //! Restart flag bool restart_done = false; private: @@ -102,5 +74,4 @@ class ESolver_KS_LCAO_TDDFT : public ESolver_KS_LCAO, TR> }; } // namespace ModuleESolver -#endif - +#endif // ESOLVER_KS_LCAO_TDDFT_H diff --git a/source/source_esolver/esolver_ks_lcaopw.cpp b/source/source_esolver/esolver_ks_lcaopw.cpp index 0de6f10a2b..7726c4ff72 100644 --- a/source/source_esolver/esolver_ks_lcaopw.cpp +++ b/source/source_esolver/esolver_ks_lcaopw.cpp @@ -1,8 +1,8 @@ #include "esolver_ks_lcaopw.h" #include "source_pw/module_pwdft/elecond.h" -#include "source_io/input_conv.h" -#include "source_io/output_log.h" +#include "source_io/module_parameter/input_conv.h" +#include "source_io/module_output/output_log.h" #include @@ -10,8 +10,7 @@ #include "source_estate/module_charge/symmetry_rho.h" #include "source_estate/occupy.h" #include "source_hamilt/module_ewald/H_Ewald_pw.h" -#include "source_pw/module_pwdft/global.h" -#include "source_io/print_info.h" +#include "source_io/module_output/print_info.h" //-----force------------------- #include "source_pw/module_pwdft/forces.h" //-----stress------------------ @@ -23,21 +22,21 @@ #include "source_pw/module_pwdft/hamilt_pw.h" #include "source_hsolver/diago_iter_assist.h" #include "source_hsolver/hsolver_lcaopw.h" -#include "source_hsolver/kernels/dngvd_op.h" +#include "source_hsolver/kernels/hegvd_op.h" #include "source_base/kernels/math_kernel_op.h" -#include "source_io/berryphase.h" -#include "source_io/numerical_basis.h" -#include "source_io/numerical_descriptor.h" -#include "source_io/to_wannier90_pw.h" -#include "source_io/winput.h" -#include "source_io/write_elecstat_pot.h" +#include "source_io/module_unk/berryphase.h" +#include "source_io/module_bessel/numerical_basis.h" +#include "source_io/module_bessel/numerical_descriptor.h" +#include "source_io/module_wannier/to_wannier90_pw.h" +#include "source_io/module_chgpot/write_elecstat_pot.h" #include "source_io/module_parameter/parameter.h" +#include "source_hamilt/module_xc/xc_functional.h" #include #include #include #ifdef __LCAO -#include "source_io/write_vxc_lip.hpp" +#include "source_io/module_hs/write_vxc_lip.hpp" #endif namespace ModuleESolver @@ -52,6 +51,9 @@ namespace ModuleESolver template ESolver_KS_LIP::~ESolver_KS_LIP() { + //**************************************************** + // do not add any codes in this deconstructor funcion + //**************************************************** delete this->psi_local; // delete Hamilt this->deallocate_hamilt(); @@ -79,17 +81,19 @@ namespace ModuleESolver void ESolver_KS_LIP::before_scf(UnitCell& ucell, const int istep) { ESolver_KS_PW::before_scf(ucell, istep); - this->p_psi_init->initialize_lcao_in_pw(this->psi_local, GlobalV::ofs_running); + auto* p_psi_init = static_cast*>(this->stp.p_psi_init); + p_psi_init->initialize_lcao_in_pw(this->psi_local, GlobalV::ofs_running); } template void ESolver_KS_LIP::before_all_runners(UnitCell& ucell, const Input_para& inp) { ESolver_KS_PW::before_all_runners(ucell, inp); + auto* p_psi_init = static_cast*>(this->stp.p_psi_init); delete this->psi_local; - this->psi_local = new psi::Psi(this->psi->get_nk(), - this->p_psi_init->psi_initer->nbands_start(), - this->psi->get_nbasis(), + this->psi_local = new psi::Psi(this->stp.psi_cpu->get_nk(), + p_psi_init->psi_initer->nbands_start(), + this->stp.psi_cpu->get_nbasis(), this->kv.ngk, true); #ifdef __EXX @@ -103,13 +107,12 @@ namespace ModuleESolver ucell.symm, &this->kv, this->psi_local, - this->kspw_psi, + this->stp.template get_psi_t(), this->pw_wfc, this->pw_rho, this->sf, &ucell, this->pelec)); - // this->exx_lip.init(GlobalC::exx_info.info_lip, cell.symm, &this->kv, this->p_psi_init, this->kspw_psi, this->pw_wfc, this->pw_rho, this->sf, &cell, this->pelec); } } #endif @@ -145,7 +148,8 @@ namespace ModuleESolver bool skip_charge = PARAM.inp.calculation == "nscf" ? true : false; hsolver::HSolverLIP hsolver_lip_obj(this->pw_wfc); - hsolver_lip_obj.solve(this->p_hamilt, this->kspw_psi[0], this->pelec, *this->psi_local, skip_charge,ucell.tpiba,ucell.nat); + hsolver_lip_obj.solve(static_cast*>(this->p_hamilt), *this->stp.template get_psi_t(), this->pelec, + *this->psi_local, skip_charge,ucell.tpiba,ucell.nat); // add exx #ifdef __EXX @@ -155,11 +159,7 @@ namespace ModuleESolver } #endif - Symmetry_rho srho; - for (int is = 0; is < PARAM.inp.nspin; is++) - { - srho.begin(is, this->chr, this->pw_rhod, ucell.symm); - } + Symmetry_rho::symmetrize_rho(PARAM.inp.nspin, this->chr, this->pw_rhod, ucell.symm); // deband is calculated from "output" charge density calculated // in sum_band @@ -242,7 +242,7 @@ namespace ModuleESolver ModuleIO::write_Vxc(PARAM.inp.nspin, PARAM.globalv.nlocal, GlobalV::DRANK, - *this->kspw_psi, + *this->stp.template get_psi_t(), ucell, this->sf, this->solvent, diff --git a/source/source_esolver/esolver_ks_pw.cpp b/source/source_esolver/esolver_ks_pw.cpp index 6ed705eb1c..4d605b9738 100644 --- a/source/source_esolver/esolver_ks_pw.cpp +++ b/source/source_esolver/esolver_ks_pw.cpp @@ -1,52 +1,39 @@ #include "esolver_ks_pw.h" -#include "source_base/formatter.h" -#include "source_base/global_variable.h" -#include "source_base/kernels/math_kernel_op.h" -#include "source_base/memory.h" #include "source_estate/cal_ux.h" #include "source_estate/elecstate_pw.h" -#include "source_estate/elecstate_pw_sdft.h" -#include "source_estate/elecstate_tools.h" #include "source_estate/module_charge/symmetry_rho.h" -#include "source_hamilt/module_ewald/H_Ewald_pw.h" -#include "source_hamilt/module_vdw/vdw.h" + #include "source_hsolver/diago_iter_assist.h" #include "source_hsolver/hsolver_pw.h" -#include "source_hsolver/kernels/dngvd_op.h" -#include "source_io/berryphase.h" -#include "source_io/cal_ldos.h" -#include "source_io/get_pchg_pw.h" -#include "source_io/get_wf_pw.h" +#include "source_hsolver/diago_params.h" + +#include "source_hsolver/kernels/hegvd_op.h" #include "source_io/module_parameter/parameter.h" -#include "source_io/numerical_basis.h" -#include "source_io/numerical_descriptor.h" -#include "source_io/to_wannier90_pw.h" -#include "source_io/winput.h" -#include "source_io/write_dos_pw.h" -#include "source_io/write_wfc_pw.h" #include "source_lcao/module_deltaspin/spin_constrain.h" +#include "source_pw/module_pwdft/onsite_projector.h" #include "source_lcao/module_dftu/dftu.h" -#include "source_pw/module_pwdft/elecond.h" -#include "source_pw/module_pwdft/forces.h" +#include "source_pw/module_pwdft/vsep_pw.h" #include "source_pw/module_pwdft/hamilt_pw.h" -#include "source_pw/module_pwdft/onsite_projector.h" -#include "source_pw/module_pwdft/stress_pw.h" -#include - -#ifdef __MLALGO -#include "source_io/write_mlkedf_descriptors.h" -#endif - -#include -#include +#include "source_pw/module_pwdft/forces.h" +#include "source_pw/module_pwdft/stress_pw.h" +#include "source_hamilt/module_xc/xc_functional.h" // use XC_Functional #ifdef __DSP #include "source_base/kernels/dsp/dsp_connector.h" #endif -#include +#include "source_pw/module_pwdft/setup_pot.h" // mohan add 20250929 +#include "source_estate/setup_estate_pw.h" // mohan add 20251005 +#include "source_io/module_ctrl/ctrl_output_pw.h" // mohan add 20250927 +#include "source_estate/module_charge/chgmixing.h" // use charge mixing, mohan add 20251006 +#include "source_estate/update_pot.h" // mohan add 20251016 +#include "source_pw/module_pwdft/update_cell_pw.h" // mohan add 20250309 +#include "source_pw/module_pwdft/dftu_pw.h" // mohan add 20250309 +#include "source_pw/module_pwdft/deltaspin_pw.h" // mohan add 20250309 + +#include "source_hamilt/module_xc/exx_info.h" // use GlobalC::exx_info namespace ModuleESolver { @@ -56,69 +43,38 @@ ESolver_KS_PW::ESolver_KS_PW() { this->classname = "ESolver_KS_PW"; this->basisname = "PW"; - this->device = base_device::get_device_type(this->ctx); - -#if ((defined __CUDA) || (defined __ROCM)) - if (this->device == base_device::GpuDevice) - { - ModuleBase::createGpuBlasHandle(); - hsolver::createGpuSolverHandle(); - container::kernels::createGpuBlasHandle(); - container::kernels::createGpuSolverHandle(); - } -#endif - -#ifdef __DSP - std::cout << " ** Initializing DSP Hardware..." << std::endl; - mtfunc::dspInitHandle(GlobalV::MY_RANK); -#endif } template ESolver_KS_PW::~ESolver_KS_PW() { - + //**************************************************** + // do not add any codes in this deconstructor funcion + //**************************************************** // delete Hamilt this->deallocate_hamilt(); - if (this->pelec != nullptr) + // delete exx_helper + if (this->exx_helper != nullptr) { - delete reinterpret_cast*>(this->pelec); - this->pelec = nullptr; + delete this->exx_helper; + this->exx_helper = nullptr; } - if (this->device == base_device::GpuDevice) - { -#if defined(__CUDA) || defined(__ROCM) - ModuleBase::destoryBLAShandle(); - hsolver::destroyGpuSolverHandle(); - container::kernels::destroyGpuBlasHandle(); - container::kernels::destroyGpuSolverHandle(); -#endif - } - -#ifdef __DSP - std::cout << " ** Closing DSP Hardware..." << std::endl; - mtfunc::dspDestoryHandle(GlobalV::MY_RANK); -#endif - - if (PARAM.inp.device == "gpu" || PARAM.inp.precision == "single") - { - delete this->kspw_psi; - } - if (PARAM.inp.precision == "single") - { - delete this->__kspw_psi; - } - - delete this->psi; - delete this->p_psi_init; + // mohan add 2025-10-12 + this->stp.clean(); } template void ESolver_KS_PW::allocate_hamilt(const UnitCell& ucell) { - this->p_hamilt = new hamilt::HamiltPW(this->pelec->pot, this->pw_wfc, &this->kv, &this->ppcell, &ucell); + this->p_hamilt = new hamilt::HamiltPW( + this->pelec->pot, + this->pw_wfc, + &this->kv, + &this->ppcell, + &this->dftu, + &ucell); } template @@ -126,7 +82,7 @@ void ESolver_KS_PW::deallocate_hamilt() { if (this->p_hamilt != nullptr) { - delete reinterpret_cast*>(this->p_hamilt); + delete static_cast*>(this->p_hamilt); this->p_hamilt = nullptr; } } @@ -134,112 +90,48 @@ void ESolver_KS_PW::deallocate_hamilt() template void ESolver_KS_PW::before_all_runners(UnitCell& ucell, const Input_para& inp) { - // 1) call before_all_runners() of ESolver_KS - ESolver_KS::before_all_runners(ucell, inp); + ESolver_KS::before_all_runners(ucell, inp); + + //! setup and allocation for pelec, potentials, etc. + elecstate::setup_estate_pw(ucell, this->kv, this->sf, this->pelec, this->chr, + this->locpp, this->ppcell, this->vsep_cell, this->pw_wfc, this->pw_rho, + this->pw_rhod, this->pw_big, this->solvent, inp); - // 2) initialize ElecState, set pelec pointer - if (this->pelec == nullptr) + this->stp.before_runner(ucell, this->kv, this->sf, *this->pw_wfc, this->ppcell, PARAM.inp); + + ModuleBase::GlobalFunc::DONE(GlobalV::ofs_running, "INIT BASIS"); + + //! Create exx_helper based on device and precision + const bool is_gpu = (inp.device == "gpu"); + const bool is_single = (inp.precision == "single"); + +#if ((defined __CUDA) || (defined __ROCM)) + if (is_gpu) { - if (inp.esolver_type == "sdft") + if (is_single) { - //! SDFT only supports double precision currently - this->pelec = new elecstate::ElecStatePW_SDFT, Device>(this->pw_wfc, - &(this->chr), - &(this->kv), - &ucell, - &(this->ppcell), - this->pw_rhod, - this->pw_rho, - this->pw_big); + this->exx_helper = new Exx_Helper, base_device::DEVICE_GPU>(); } else { - this->pelec = new elecstate::ElecStatePW(this->pw_wfc, - &(this->chr), - &(this->kv), - &ucell, - &this->ppcell, - this->pw_rhod, - this->pw_rho, - this->pw_big); + this->exx_helper = new Exx_Helper, base_device::DEVICE_GPU>(); } } - - //! set the cell volume variable in pelec - this->pelec->omega = ucell.omega; - - //! 3) inititlize the charge density. - this->chr.allocate(inp.nspin); - - //! 4) initialize the potential. - if (this->pelec->pot == nullptr) - { - this->pelec->pot = new elecstate::Potential(this->pw_rhod, - this->pw_rho, - &ucell, - &this->locpp.vloc, - &(this->sf), - &(this->solvent), - &(this->pelec->f_en.etxc), - &(this->pelec->f_en.vtxc)); - } - - //! 5) Initalize local pseudopotential - this->locpp.init_vloc(ucell, this->pw_rhod); - ModuleBase::GlobalFunc::DONE(GlobalV::ofs_running, "LOCAL POTENTIAL"); - - //! 6) Initalize non-local pseudopotential - this->ppcell.init(ucell, &this->sf, this->pw_wfc); - this->ppcell.init_vnl(ucell, this->pw_rhod); - ModuleBase::GlobalFunc::DONE(GlobalV::ofs_running, "NON-LOCAL POTENTIAL"); - - //! 7) Allocate and initialize psi - this->p_psi_init = new psi::PSIInit(inp.init_wfc, - inp.ks_solver, - inp.basis_type, - GlobalV::MY_RANK, - ucell, - this->sf, - this->kv, - this->ppcell, - *this->pw_wfc); - - allocate_psi(this->psi, this->kv.get_nks(), this->kv.ngk, PARAM.globalv.nbands_l, this->pw_wfc->npwk_max); - - this->p_psi_init->prepare_init(inp.pw_seed); - - this->kspw_psi = inp.device == "gpu" || inp.precision == "single" - ? new psi::Psi(this->psi[0]) - : reinterpret_cast*>(this->psi); - - ModuleBase::GlobalFunc::DONE(GlobalV::ofs_running, "INIT BASIS"); - - //! 8) setup occupations - if (inp.ocp) - { - elecstate::fixed_weights(inp.ocp_kb, - inp.nbands, - inp.nelec, - this->pelec->klist, - this->pelec->wg, - this->pelec->skip_weights); - } - - // 9) initialize exx pw - if (inp.calculation == "scf" || inp.calculation == "relax" || inp.calculation == "cell-relax" - || inp.calculation == "md") + else +#endif { - if (GlobalC::exx_info.info_global.cal_exx && GlobalC::exx_info.info_global.separate_loop == true) + if (is_single) { - XC_Functional::set_xc_first_loop(ucell); - exx_helper.set_firstiter(); + this->exx_helper = new Exx_Helper, base_device::DEVICE_CPU>(); } - - if (GlobalC::exx_info.info_global.cal_exx) + else { - exx_helper.set_wg(&this->pelec->wg); + this->exx_helper = new Exx_Helper, base_device::DEVICE_CPU>(); } } + + //! Initialize exx pw + this->exx_helper->init(ucell, inp, this->pelec->wg); } template @@ -248,152 +140,37 @@ void ESolver_KS_PW::before_scf(UnitCell& ucell, const int istep) ModuleBase::TITLE("ESolver_KS_PW", "before_scf"); ModuleBase::timer::tick("ESolver_KS_PW", "before_scf"); - //---------------------------------------------------------- - //! 1) Call before_scf() of ESolver_KS - //---------------------------------------------------------- - ESolver_KS::before_scf(ucell, istep); + ESolver_KS::before_scf(ucell, istep); + + //! Init variables (once the cell has changed) + pw::update_cell_pw(ucell, this->ppcell, this->kv, this->pw_wfc, PARAM.inp); - //---------------------------------------------------------- - //! 2) Init variables (cell changed) - //---------------------------------------------------------- if (ucell.cell_parameter_updated) { - this->ppcell.rescale_vnl(ucell.omega); - ModuleBase::GlobalFunc::DONE(GlobalV::ofs_running, "NON-LOCAL POTENTIAL"); - - this->pw_wfc->initgrids(ucell.lat0, ucell.latvec, this->pw_wfc->nx, this->pw_wfc->ny, this->pw_wfc->nz); - - this->pw_wfc->initparameters(false, PARAM.inp.ecutwfc, this->kv.get_nks(), this->kv.kvec_d.data()); - - this->pw_wfc->collect_local_pw(PARAM.inp.erf_ecut, PARAM.inp.erf_height, PARAM.inp.erf_sigma); - - this->p_psi_init->prepare_init(PARAM.inp.pw_seed); + auto* p_psi_init = static_cast*>(this->stp.p_psi_init); + p_psi_init->prepare_init(PARAM.inp.pw_seed); } - //---------------------------------------------------------- - //! 3) init Hamiltonian (cell changed) - //---------------------------------------------------------- + //! Init Hamiltonian (cell changed) //! Operators in HamiltPW should be reallocated once cell changed //! delete Hamilt if not first scf this->deallocate_hamilt(); - // allocate HamiltPW + //! Allocate HamiltPW this->allocate_hamilt(ucell); - //---------------------------------------------------------- - //! 4) Exx calculations - //---------------------------------------------------------- - if (PARAM.inp.calculation == "scf" || PARAM.inp.calculation == "relax" || PARAM.inp.calculation == "cell-relax" - || PARAM.inp.calculation == "md") - { - if (GlobalC::exx_info.info_global.cal_exx && PARAM.inp.basis_type == "pw") - { - auto hamilt_pw = reinterpret_cast*>(this->p_hamilt); - hamilt_pw->set_exx_helper(exx_helper); - } - } - - //---------------------------------------------------------- - //! 5) Renew local pseudopotential - //---------------------------------------------------------- - this->pelec - ->init_scf(istep, ucell, this->Pgrid, this->sf.strucFac, this->locpp.numeric, ucell.symm, (void*)this->pw_wfc); - - //---------------------------------------------------------- - //! 6) Symmetrize the charge density (rho) - //---------------------------------------------------------- - - //! Symmetry_rho should behind init_scf, because charge should be - //! initialized first. liuyu comment: Symmetry_rho should be - //! located between init_rho and v_of_rho? - Symmetry_rho srho; - for (int is = 0; is < PARAM.inp.nspin; is++) - { - srho.begin(is, this->chr, this->pw_rhod, ucell.symm); - } - - //---------------------------------------------------------- - //! 7) Calculate the effective potential with rho - //---------------------------------------------------------- - //! liuyu move here 2023-10-09 - //! D in uspp need vloc, thus behind init_scf() - //! calculate the effective coefficient matrix - //! for non-local pseudopotential projectors - ModuleBase::matrix veff = this->pelec->pot->get_effective_v(); - - this->ppcell.cal_effective_D(veff, this->pw_rhod, ucell); - - //---------------------------------------------------------- - //! 8) Onsite projectors - //---------------------------------------------------------- - if (PARAM.inp.onsite_radius > 0) - { - auto* onsite_p = projectors::OnsiteProjector::get_instance(); - onsite_p->init(PARAM.inp.orbital_dir, - &ucell, - *(this->kspw_psi), - this->kv, - *(this->pw_wfc), - this->sf, - PARAM.inp.onsite_radius, - PARAM.globalv.nqx, - PARAM.globalv.dq, - this->pelec->wg, - this->pelec->ekb); - } - - //---------------------------------------------------------- - //! 9) Spin-constrained algorithms - //---------------------------------------------------------- - if (PARAM.inp.sc_mag_switch) - { - spinconstrain::SpinConstrain>& sc - = spinconstrain::SpinConstrain>::getScInstance(); - sc.init_sc(PARAM.inp.sc_thr, - PARAM.inp.nsc, - PARAM.inp.nsc_min, - PARAM.inp.alpha_trial, - PARAM.inp.sccut, - PARAM.inp.sc_drop_thr, - ucell, - nullptr, - PARAM.inp.nspin, - this->kv, - this->p_hamilt, - this->kspw_psi, - this->pelec, - this->pw_wfc); - } + //! Setup potentials (local, non-local, sc, +U, DFT-1/2) + // note: init DFT+U is done here for pw basis for every scf iteration, however, + // init DFT+U is done in "before_all_runners" in LCAO basis. This should be refactored, mohan note 2025-11-06 + pw::setup_pot(istep, ucell, this->kv, this->sf, this->pelec, this->Pgrid, + this->chr, this->locpp, this->ppcell, this->dftu, this->vsep_cell, + this->stp.template get_psi_t(), static_cast*>(this->p_hamilt), this->pw_wfc, this->pw_rhod, PARAM.inp); - //---------------------------------------------------------- - //! 10) DFT+U algorithm - //---------------------------------------------------------- - if (PARAM.inp.dft_plus_u) - { - auto* dftu = ModuleDFTU::DFTU::get_instance(); - dftu->init(ucell, nullptr, this->kv.get_nks()); - } + // setup psi (electronic wave functions) + this->stp.init(this->p_hamilt); - //---------------------------------------------------------- - //! 10) Initialize wave functions - //---------------------------------------------------------- - if (!this->already_initpsi) - { - this->p_psi_init->initialize_psi(this->psi, this->kspw_psi, this->p_hamilt, GlobalV::ofs_running); - this->already_initpsi = true; - } - - //---------------------------------------------------------- - //! 11) Exx calculations - //---------------------------------------------------------- - if (PARAM.inp.calculation == "scf" || PARAM.inp.calculation == "relax" || PARAM.inp.calculation == "cell-relax" - || PARAM.inp.calculation == "md") - { - if (GlobalC::exx_info.info_global.cal_exx && PARAM.inp.basis_type == "pw") - { - exx_helper.set_psi(kspw_psi); - } - } + //! Setup EXX helper for Hamiltonian and psi + exx_helper->before_scf(this->p_hamilt, this->stp.template get_psi_t(), PARAM.inp); ModuleBase::timer::tick("ESolver_KS_PW", "before_scf"); } @@ -401,78 +178,17 @@ void ESolver_KS_PW::before_scf(UnitCell& ucell, const int istep) template void ESolver_KS_PW::iter_init(UnitCell& ucell, const int istep, const int iter) { - // call iter_init() of ESolver_KS - ESolver_KS::iter_init(ucell, istep, iter); + ESolver_KS::iter_init(ucell, istep, iter); - if (iter == 1) - { - this->p_chgmix->init_mixing(); - this->p_chgmix->mixing_restart_step = PARAM.inp.scf_nmax + 1; - } + module_charge::chgmixing_ks_pw(iter, this->p_chgmix, this->dftu, PARAM.inp); - //---------------------------------------------------------- - // for mixing restart - // the details should move somewhere else, 2025-04-13 - //---------------------------------------------------------- - if (iter == this->p_chgmix->mixing_restart_step && PARAM.inp.mixing_restart > 0.0) - { - this->p_chgmix->init_mixing(); - this->p_chgmix->mixing_restart_count++; - - if (PARAM.inp.dft_plus_u) - { - auto* dftu = ModuleDFTU::DFTU::get_instance(); - if (dftu->uramping > 0.01 && !dftu->u_converged()) - { - this->p_chgmix->mixing_restart_step = PARAM.inp.scf_nmax + 1; - } - if (dftu->uramping > 0.01) - { - bool do_uramping = true; - if (PARAM.inp.sc_mag_switch) - { - spinconstrain::SpinConstrain>& sc - = spinconstrain::SpinConstrain>::getScInstance(); - if (!sc.mag_converged()) // skip uramping if mag not converged - { - do_uramping = false; - } - } - if (do_uramping) - { - dftu->uramping_update(); // update U by uramping if uramping > 0.01 - std::cout << " U-Ramping! Current U = "; - for (int i = 0; i < dftu->U0.size(); i++) - { - std::cout << dftu->U[i] * ModuleBase::Ry_to_eV << " "; - } - std::cout << " eV " << std::endl; - } - } - } - } - - //---------------------------------------------------------- - // mohan move harris functional to here, 2012-06-05 + // mohan move harris functional here, 2012-06-05 // use 'rho(in)' and 'v_h and v_xc'(in) - //---------------------------------------------------------- this->pelec->f_en.deband_harris = this->pelec->cal_delta_eband(ucell); - //---------------------------------------------------------- // update local occupations for DFT+U // should before lambda loop in DeltaSpin - //---------------------------------------------------------- - if (PARAM.inp.dft_plus_u && (iter != 1 || istep != 0)) - { - auto* dftu = ModuleDFTU::DFTU::get_instance(); - // only old DFT+U method should calculate energy correction in esolver, - // new DFT+U method will calculate energy when evaluating the Hamiltonian - if (dftu->omc != 2) - { - dftu->cal_occ_pw(iter, this->kspw_psi, this->pelec->wg, ucell, PARAM.inp.mixing_beta); - } - dftu->output(ucell); - } + pw::iter_init_dftu_pw(iter, istep, this->dftu, this->stp.template get_psi_t(), this->pelec->wg, ucell, PARAM.inp); } // Temporary, it should be replaced by hsolver later. @@ -485,42 +201,14 @@ void ESolver_KS_PW::hamilt2rho_single(UnitCell& ucell, const int iste this->pelec->f_en.eband = 0.0; this->pelec->f_en.demet = 0.0; - // choose if psi should be diag in subspace - // be careful that istep start from 0 and iter start from 1 - // if (iter == 1) - hsolver::DiagoIterAssist::need_subspace = ((istep == 0 || istep == 1) && iter == 1) ? false : true; - - hsolver::DiagoIterAssist::SCF_ITER = iter; - hsolver::DiagoIterAssist::PW_DIAG_THR = ethr; - - if (PARAM.inp.calculation != "nscf") - { - hsolver::DiagoIterAssist::PW_DIAG_NMAX = PARAM.inp.pw_diag_nmax; - } + // setup diagonalization parameters + hsolver::setup_diago_params_pw(istep, iter, ethr, PARAM.inp); bool skip_charge = PARAM.inp.calculation == "nscf" ? true : false; // run the inner lambda loop to contrain atomic moments with the DeltaSpin method - bool skip_solve = false; + bool skip_solve = pw::run_deltaspin_lambda_loop(iter - 1, this->drho, PARAM.inp); - if (PARAM.inp.sc_mag_switch) - { - spinconstrain::SpinConstrain>& sc - = spinconstrain::SpinConstrain>::getScInstance(); - if (!sc.mag_converged() && this->drho > 0 && this->drho < PARAM.inp.sc_scf_thr) - { - // optimize lambda to get target magnetic moments, but the lambda is not near target - sc.run_lambda_loop(iter - 1); - sc.set_mag_converged(true); - skip_solve = true; - } - else if (sc.mag_converged()) - { - // optimize lambda to get target magnetic moments, but the lambda is not near target - sc.run_lambda_loop(iter - 1); - skip_solve = true; - } - } if (!skip_solve) { hsolver::HSolverPW hsolver_pw_obj(this->pw_wfc, @@ -536,151 +224,50 @@ void ESolver_KS_PW::hamilt2rho_single(UnitCell& ucell, const int iste hsolver::DiagoIterAssist::need_subspace, PARAM.inp.use_k_continuity); - hsolver_pw_obj.solve(this->p_hamilt, - this->kspw_psi[0], - this->pelec, - this->pelec->ekb.c, - GlobalV::RANK_IN_POOL, - GlobalV::NPROC_IN_POOL, - skip_charge, - ucell.tpiba, - ucell.nat); + hsolver_pw_obj.solve(static_cast*>(this->p_hamilt), *this->stp.template get_psi_t(), this->pelec, this->pelec->ekb.c, + GlobalV::RANK_IN_POOL, GlobalV::NPROC_IN_POOL, skip_charge, ucell.tpiba, ucell.nat); } // symmetrize the charge density - Symmetry_rho srho; - for (int is = 0; is < PARAM.inp.nspin; is++) - { - srho.begin(is, this->chr, this->pw_rhod, ucell.symm); - } + Symmetry_rho::symmetrize_rho(PARAM.inp.nspin, this->chr, this->pw_rhod, ucell.symm); ModuleBase::timer::tick("ESolver_KS_PW", "hamilt2rho_single"); } -// Temporary, it should be rewritten with Hamilt class. -template -void ESolver_KS_PW::update_pot(UnitCell& ucell, const int istep, const int iter, const bool conv_esolver) -{ - if (!conv_esolver) - { - elecstate::cal_ux(ucell); - this->pelec->pot->update_from_charge(&this->chr, &ucell); - this->pelec->f_en.descf = this->pelec->cal_delta_escf(); -#ifdef __MPI - MPI_Bcast(&(this->pelec->f_en.descf), 1, MPI_DOUBLE, 0, BP_WORLD); -#endif - } - else - { - this->pelec->cal_converged(); - } -} template void ESolver_KS_PW::iter_finish(UnitCell& ucell, const int istep, int& iter, bool& conv_esolver) { - //---------------------------------------------------------- // Related to EXX - //---------------------------------------------------------- - if (GlobalC::exx_info.info_global.cal_exx && !exx_helper.op_exx->first_iter) + if (GlobalC::exx_info.info_global.cal_exx && !exx_helper->get_op_first_iter()) { - this->pelec->set_exx(exx_helper.cal_exx_energy(kspw_psi)); + this->pelec->set_exx(exx_helper->cal_exx_energy(this->stp.template get_psi_t())); } - //---------------------------------------------------------- - // deband is calculated from "output" charge density calculated - // in sum_band - // need 'rho(out)' and 'vr (v_h(in) and v_xc(in))' - //---------------------------------------------------------- + // deband is calculated from "output" charge density this->pelec->f_en.deband = this->pelec->cal_delta_eband(ucell); - //---------------------------------------------------------- - // 1) Call iter_finish() of ESolver_KS - //---------------------------------------------------------- - ESolver_KS::iter_finish(ucell, istep, iter, conv_esolver); + // Call iter_finish() of ESolver_KS + ESolver_KS::iter_finish(ucell, istep, iter, conv_esolver); - //---------------------------------------------------------- - // 2) Update USPP-related quantities // D in USPP needs vloc, thus needs update when veff updated // calculate the effective coefficient matrix for non-local // pp projectors, liuyu 2023-10-24 - //---------------------------------------------------------- if (PARAM.globalv.use_uspp) { - ModuleBase::matrix veff = this->pelec->pot->get_effective_v(); + ModuleBase::matrix veff = this->pelec->pot->get_eff_v(); this->ppcell.cal_effective_D(veff, this->pw_rhod, ucell); } - if (GlobalC::exx_info.info_global.cal_exx) - { - if (GlobalC::exx_info.info_global.separate_loop) - { - if (conv_esolver) - { - auto start = std::chrono::high_resolution_clock::now(); - exx_helper.set_firstiter(false); - exx_helper.op_exx->first_iter = false; - exx_helper.set_psi(this->kspw_psi); - - conv_esolver = exx_helper.exx_after_converge(iter); - - if (!conv_esolver) - { - auto duration = std::chrono::high_resolution_clock::now() - start; - std::cout << " Setting Psi for EXX PW Inner Loop took " - << std::chrono::duration_cast(duration).count() / 1000.0 << "s" - << std::endl; - exx_helper.op_exx->first_iter = false; - XC_Functional::set_xc_type(ucell.atoms[0].ncpp.xc_func); - update_pot(ucell, istep, iter, conv_esolver); - } - } - } - else - { - exx_helper.set_psi(this->kspw_psi); - } - } + // Handle EXX-related operations after SCF iteration + exx_helper->iter_finish(this->pelec, &this->chr, this->stp.template get_psi_t(), ucell, PARAM.inp, conv_esolver, iter); - //---------------------------------------------------------- - // 3) Print out electronic wavefunctions in pw basis - //---------------------------------------------------------- - if (iter % PARAM.inp.out_freq_elec == 0 || iter == PARAM.inp.scf_nmax || conv_esolver) - { - ModuleIO::write_wfc_pw(GlobalV::KPAR, - GlobalV::MY_POOL, - GlobalV::MY_RANK, - PARAM.inp.nbands, - PARAM.inp.nspin, - PARAM.globalv.npol, - GlobalV::RANK_IN_POOL, - GlobalV::NPROC_IN_POOL, - PARAM.inp.out_wfc_pw, - PARAM.inp.ecutwfc, - PARAM.globalv.global_out_dir, - this->psi[0], - this->kv, - this->pw_wfc, - GlobalV::ofs_running); - } + // check if oscillate for delta_spin method + pw::check_deltaspin_oscillation(iter, this->drho, this->p_chgmix, PARAM.inp); - //---------------------------------------------------------- - // 4) check if oscillate for delta_spin method - //---------------------------------------------------------- - if (PARAM.inp.sc_mag_switch) - { - spinconstrain::SpinConstrain>& sc - = spinconstrain::SpinConstrain>::getScInstance(); - if (!sc.higher_mag_prec) - { - sc.higher_mag_prec - = this->p_chgmix->if_scf_oscillate(iter, this->drho, PARAM.inp.sc_os_ndim, PARAM.inp.scf_os_thr); - if (sc.higher_mag_prec) - { // if oscillate, increase the precision of magnetization and do mixing_restart in next iteration - this->p_chgmix->mixing_restart_step = iter + 1; - } - } - } + // the output quantities + ModuleIO::ctrl_iter_pw(istep, iter, conv_esolver, this->stp.psi_cpu, + this->kv, this->pw_wfc, PARAM.inp); } template @@ -689,133 +276,18 @@ void ESolver_KS_PW::after_scf(UnitCell& ucell, const int istep, const ModuleBase::TITLE("ESolver_KS_PW", "after_scf"); ModuleBase::timer::tick("ESolver_KS_PW", "after_scf"); - //------------------------------------------------------------------ - // 1) since ESolver_KS::psi is hidden by ESolver_KS_PW::psi, - // we need to copy the data from ESolver_KS::psi to ESolver_KS_PW::psi. - // This part needs to be removed when we have a better design. - // sunliang 2025-04-10 - //------------------------------------------------------------------ + // Calculate kinetic energy density tau for ELF if needed if (PARAM.inp.out_elf[0] > 0) { - this->ESolver_KS::psi = new psi::Psi(this->psi[0]); + this->pelec->cal_tau(*(this->stp.psi_cpu)); } - //------------------------------------------------------------------ - // 2) call after_scf() of ESolver_KS - //------------------------------------------------------------------ - ESolver_KS::after_scf(ucell, istep, conv_esolver); + ESolver_KS::after_scf(ucell, istep, conv_esolver); - //------------------------------------------------------------------ - // 3) transfer data from GPU to CPU in pw basis - //------------------------------------------------------------------ - if (this->device == base_device::GpuDevice) - { - castmem_2d_d2h_op()(this->psi[0].get_pointer() - this->psi[0].get_psi_bias(), - this->kspw_psi[0].get_pointer() - this->kspw_psi[0].get_psi_bias(), - this->psi[0].size()); - } - - //------------------------------------------------------------------ - // 4) calculate band-decomposed (partial) charge density in pw basis - //------------------------------------------------------------------ - if (PARAM.inp.out_pchg.size() > 0) - { - if (this->__kspw_psi != nullptr && PARAM.inp.precision == "single") - { - delete reinterpret_cast, Device>*>(this->__kspw_psi); - } - - // Refresh __kspw_psi - this->__kspw_psi = PARAM.inp.precision == "single" - ? new psi::Psi, Device>(this->kspw_psi[0]) - : reinterpret_cast, Device>*>(this->kspw_psi); - - ModuleIO::get_pchg_pw(PARAM.inp.out_pchg, - this->kspw_psi->get_nbands(), - PARAM.inp.nspin, - this->pw_rhod->nxyz, - this->chr.ngmc, - &ucell, - this->__kspw_psi, - this->pw_rhod, - this->pw_wfc, - this->ctx, - this->Pgrid, - PARAM.globalv.global_out_dir, - PARAM.inp.if_separate_k, - this->kv, - GlobalV::KPAR, - GlobalV::MY_POOL, - &this->chr); - } - - // tmp 2025-05-17, mohan note - ModuleIO::write_wfc_pw(GlobalV::KPAR, - GlobalV::MY_POOL, - GlobalV::MY_RANK, - PARAM.inp.nbands, - PARAM.inp.nspin, - PARAM.globalv.npol, - GlobalV::RANK_IN_POOL, - GlobalV::NPROC_IN_POOL, - PARAM.inp.out_wfc_pw, - PARAM.inp.ecutwfc, - PARAM.globalv.global_out_dir, - this->psi[0], - this->kv, - this->pw_wfc, - GlobalV::ofs_running); - - //------------------------------------------------------------------ - //! 5) calculate Wannier functions in pw basis - //------------------------------------------------------------------ - if (PARAM.inp.calculation == "nscf" && PARAM.inp.towannier90) - { - std::cout << FmtCore::format("\n * * * * * *\n << Start %s.\n", "Wannier functions calculation"); - toWannier90_PW wan(PARAM.inp.out_wannier_mmn, - PARAM.inp.out_wannier_amn, - PARAM.inp.out_wannier_unk, - PARAM.inp.out_wannier_eig, - PARAM.inp.out_wannier_wvfn_formatted, - PARAM.inp.nnkpfile, - PARAM.inp.wannier_spin); - wan.set_tpiba_omega(ucell.tpiba, ucell.omega); - wan.calculate(ucell, this->pelec->ekb, this->pw_wfc, this->pw_big, this->kv, this->psi); - std::cout << FmtCore::format(" >> Finish %s.\n * * * * * *\n", "Wannier functions calculation"); - } - - //------------------------------------------------------------------ - //! 6) calculate Berry phase polarization in pw basis - //------------------------------------------------------------------ - if (PARAM.inp.calculation == "nscf" && berryphase::berry_phase_flag && ModuleSymmetry::Symmetry::symm_flag != 1) - { - std::cout << FmtCore::format("\n * * * * * *\n << Start %s.\n", "Berry phase polarization"); - berryphase bp; - bp.Macroscopic_polarization(ucell, this->pw_wfc->npwk_max, this->psi, this->pw_rho, this->pw_wfc, this->kv); - std::cout << FmtCore::format(" >> Finish %s.\n * * * * * *\n", "Berry phase polarization"); - } - - //------------------------------------------------------------------ - // 7) write spin constrian results in pw basis - // spin constrain calculations, write atomic magnetization and magnetic force. - //------------------------------------------------------------------ - if (PARAM.inp.sc_mag_switch) - { - spinconstrain::SpinConstrain>& sc - = spinconstrain::SpinConstrain>::getScInstance(); - sc.cal_mi_pw(); - sc.print_Mag_Force(GlobalV::ofs_running); - } - - //------------------------------------------------------------------ - // 8) write onsite occupations for charge and magnetizations - //------------------------------------------------------------------ - if (PARAM.inp.onsite_radius > 0) - { // float type has not been implemented - auto* onsite_p = projectors::OnsiteProjector::get_instance(); - onsite_p->cal_occupations(reinterpret_cast, Device>*>(this->kspw_psi), - this->pelec->wg); - } + // Output quantities + ModuleIO::ctrl_scf_pw(istep, ucell, this->pelec, this->chr, this->kv, this->pw_wfc, + this->pw_rho, this->pw_rhod, this->pw_big, this->stp, + this->Pgrid, PARAM.inp); ModuleBase::timer::tick("ESolver_KS_PW", "after_scf"); } @@ -831,29 +303,13 @@ void ESolver_KS_PW::cal_force(UnitCell& ucell, ModuleBase::matrix& fo { Forces ff(ucell.nat); - if (this->__kspw_psi != nullptr && PARAM.inp.precision == "single") - { - delete reinterpret_cast, Device>*>(this->__kspw_psi); - } - - // Refresh __kspw_psi - this->__kspw_psi = PARAM.inp.precision == "single" - ? new psi::Psi, Device>(this->kspw_psi[0]) - : reinterpret_cast, Device>*>(this->kspw_psi); + // mohan add 2025-10-12 + this->stp.update_psi_d(); // Calculate forces - ff.cal_force(ucell, - force, - *this->pelec, - this->pw_rhod, - &ucell.symm, - &this->sf, - this->solvent, - &this->locpp, - &this->ppcell, - &this->kv, - this->pw_wfc, - this->__kspw_psi); + ff.cal_force(ucell, force, *this->pelec, this->pw_rhod, &ucell.symm, + &this->sf, this->solvent, &this->dftu, &this->locpp, &this->ppcell, + &this->kv, this->pw_wfc, this->stp.template get_psi_d()); } template @@ -861,25 +317,11 @@ void ESolver_KS_PW::cal_stress(UnitCell& ucell, ModuleBase::matrix& s { Stress_PW ss(this->pelec); - if (this->__kspw_psi != nullptr && PARAM.inp.precision == "single") - { - delete reinterpret_cast, Device>*>(this->__kspw_psi); - } + // mohan add 2025-10-12 + this->stp.update_psi_d(); - // Refresh __kspw_psi - this->__kspw_psi = PARAM.inp.precision == "single" - ? new psi::Psi, Device>(this->kspw_psi[0]) - : reinterpret_cast, Device>*>(this->kspw_psi); - ss.cal_stress(stress, - ucell, - this->locpp, - this->ppcell, - this->pw_rhod, - &ucell.symm, - &this->sf, - &this->kv, - this->pw_wfc, - this->__kspw_psi); + ss.cal_stress(stress, ucell, this->dftu, this->locpp, this->ppcell, this->pw_rhod, + &ucell.symm, &this->sf, &this->kv, this->pw_wfc, this->stp.template get_psi_d()); // external stress double unit_transform = 0.0; @@ -894,143 +336,14 @@ void ESolver_KS_PW::cal_stress(UnitCell& ucell, ModuleBase::matrix& s template void ESolver_KS_PW::after_all_runners(UnitCell& ucell) { - //---------------------------------------------------------- - //! 1) after_all_runners in ESolver_KS - //---------------------------------------------------------- - ESolver_KS::after_all_runners(ucell); - - //---------------------------------------------------------- - //! 2) Compute density of states (DOS) - //---------------------------------------------------------- - if (PARAM.inp.out_dos) - { - ModuleIO::write_dos_pw(ucell, - this->pelec->ekb, - this->pelec->wg, - this->kv, - PARAM.inp.nbands, - this->pelec->eferm, - PARAM.inp.dos_edelta_ev, - PARAM.inp.dos_scale, - PARAM.inp.dos_sigma, - GlobalV::ofs_running); - } - - //---------------------------------------------------------- - //! 3) Compute LDOS - //---------------------------------------------------------- - if (PARAM.inp.out_ldos[0]) - { - ModuleIO::cal_ldos_pw(reinterpret_cast>*>(this->pelec), - this->psi[0], - this->Pgrid, - ucell); - } - - //---------------------------------------------------------- - //! 4) Calculate the spillage value, - //! which are used to generate numerical atomic orbitals - //---------------------------------------------------------- - if (PARAM.inp.basis_type == "pw" && winput::out_spillage) - { - // ! Print out overlap matrices - if (winput::out_spillage <= 2) - { - for (int i = 0; i < PARAM.inp.bessel_nao_rcuts.size(); i++) - { - if (GlobalV::MY_RANK == 0) - { - std::cout << "update value: bessel_nao_rcut <- " << std::fixed << PARAM.inp.bessel_nao_rcuts[i] - << " a.u." << std::endl; - } - Numerical_Basis numerical_basis; - numerical_basis.output_overlap(this->psi[0], this->sf, this->kv, this->pw_wfc, ucell, i); - } - ModuleBase::GlobalFunc::DONE(GlobalV::ofs_running, "BASIS OVERLAP (Q and S) GENERATION."); - } - } + ESolver_KS::after_all_runners(ucell); - //---------------------------------------------------------- - //! 5) Print out electronic wave functions in real space - //---------------------------------------------------------- - if (PARAM.inp.out_wfc_norm.size() > 0 || PARAM.inp.out_wfc_re_im.size() > 0) - { - if (this->__kspw_psi != nullptr && PARAM.inp.precision == "single") - { - delete reinterpret_cast, Device>*>(this->__kspw_psi); - } + ModuleIO::ctrl_runner_pw(ucell, this->pelec, this->pw_wfc, + this->pw_rho, this->pw_rhod, this->chr, this->kv, this->stp, + this->sf, this->ppcell, this->solvent, this->Pgrid, PARAM.inp); - // Refresh __kspw_psi - this->__kspw_psi = PARAM.inp.precision == "single" - ? new psi::Psi, Device>(this->kspw_psi[0]) - : reinterpret_cast, Device>*>(this->kspw_psi); - - ModuleIO::get_wf_pw(PARAM.inp.out_wfc_norm, - PARAM.inp.out_wfc_re_im, - this->kspw_psi->get_nbands(), - PARAM.inp.nspin, - this->pw_rhod->nxyz, - &ucell, - this->__kspw_psi, - this->pw_wfc, - this->ctx, - this->Pgrid, - PARAM.globalv.global_out_dir, - this->kv, - GlobalV::KPAR, - GlobalV::MY_POOL); - } - - //---------------------------------------------------------- - //! 6) Use Kubo-Greenwood method to compute conductivities - //---------------------------------------------------------- - if (PARAM.inp.cal_cond) - { - EleCond elec_cond(&ucell, &this->kv, this->pelec, this->pw_wfc, this->kspw_psi, &this->ppcell); - elec_cond.KG(PARAM.inp.cond_smear, - PARAM.inp.cond_fwhm, - PARAM.inp.cond_wcut, - PARAM.inp.cond_dw, - PARAM.inp.cond_dt, - PARAM.inp.cond_nonlocal, - this->pelec->wg); - } - -#ifdef __MLALGO - //---------------------------------------------------------- - //! 7) generate training data for ML-KEDF - //---------------------------------------------------------- - if (PARAM.inp.of_ml_gene_data == 1) - { - this->pelec->pot->update_from_charge(&this->chr, &ucell); - - ModuleIO::Write_MLKEDF_Descriptors write_mlkedf_desc; - write_mlkedf_desc.cal_tool->set_para(this->chr.nrxx, - PARAM.inp.nelec, - PARAM.inp.of_tf_weight, - PARAM.inp.of_vw_weight, - PARAM.inp.of_ml_chi_p, - PARAM.inp.of_ml_chi_q, - PARAM.inp.of_ml_chi_xi, - PARAM.inp.of_ml_chi_pnl, - PARAM.inp.of_ml_chi_qnl, - PARAM.inp.of_ml_nkernel, - PARAM.inp.of_ml_kernel, - PARAM.inp.of_ml_kernel_scaling, - PARAM.inp.of_ml_yukawa_alpha, - PARAM.inp.of_ml_kernel_file, - ucell.omega, - this->pw_rho); - - write_mlkedf_desc.generateTrainData_KS(PARAM.globalv.global_mlkedf_descriptor_dir, - this->kspw_psi, - this->pelec, - this->pw_wfc, - this->pw_rho, - ucell, - this->pelec->pot->get_effective_v(0)); - } -#endif + elecstate::teardown_estate_pw(this->pelec, this->vsep_cell); + } template class ESolver_KS_PW, base_device::DEVICE_CPU>; diff --git a/source/source_esolver/esolver_ks_pw.h b/source/source_esolver/esolver_ks_pw.h index d2efb640bc..f527101d68 100644 --- a/source/source_esolver/esolver_ks_pw.h +++ b/source/source_esolver/esolver_ks_pw.h @@ -1,10 +1,10 @@ #ifndef ESOLVER_KS_PW_H #define ESOLVER_KS_PW_H #include "./esolver_ks.h" -#include "source_pw/module_pwdft/operator_pw/velocity_pw.h" -#include "source_psi/psi_init.h" -#include "source_pw/module_pwdft/module_exx_helper/exx_helper.h" -#include "source_pw/module_pwdft/global.h" +#include "source_psi/setup_psi_pw.h" // mohan add 20251012 +#include "source_pw/module_pwdft/vsep_pw.h" +#include "source_pw/module_pwdft/exx_helper_base.h" +#include "source_pw/module_pwdft/op_pw_vel.h" #include #include @@ -13,7 +13,7 @@ namespace ModuleESolver { template -class ESolver_KS_PW : public ESolver_KS +class ESolver_KS_PW : public ESolver_KS { private: using Real = typename GetTypeReal::type; @@ -33,15 +33,13 @@ class ESolver_KS_PW : public ESolver_KS void after_all_runners(UnitCell& ucell) override; - Exx_Helper exx_helper; + Exx_HelperBase* exx_helper = nullptr; protected: virtual void before_scf(UnitCell& ucell, const int istep) override; virtual void iter_init(UnitCell& ucell, const int istep, const int iter) override; - virtual void update_pot(UnitCell& ucell, const int istep, const int iter, const bool conv_esolver) override; - virtual void iter_finish(UnitCell& ucell, const int istep, int& iter, bool& conv_esolver) override; virtual void after_scf(UnitCell& ucell, const int istep, const bool conv_esolver) override; @@ -53,24 +51,11 @@ class ESolver_KS_PW : public ESolver_KS virtual void allocate_hamilt(const UnitCell& ucell); virtual void deallocate_hamilt(); - //! hide the psi in ESolver_KS for tmp use - psi::Psi, base_device::DEVICE_CPU>* psi = nullptr; - - // psi_initializer controller - psi::PSIInit* p_psi_init = nullptr; - - Device* ctx = {}; - - base_device::AbacusDevice_t device = {}; - - psi::Psi* kspw_psi = nullptr; - - psi::Psi, Device>* __kspw_psi = nullptr; - - bool already_initpsi = false; + // Electronic wave function psi + Setup_Psi_pw stp; - using castmem_2d_d2h_op - = base_device::memory::cast_memory_op, T, base_device::DEVICE_CPU, Device>; + // DFT-1/2 method + VSep* vsep_cell = nullptr; }; } // namespace ModuleESolver diff --git a/source/source_esolver/esolver_lj.cpp b/source/source_esolver/esolver_lj.cpp index 3f1dd95f23..d6bb6ff21c 100644 --- a/source/source_esolver/esolver_lj.cpp +++ b/source/source_esolver/esolver_lj.cpp @@ -2,8 +2,8 @@ #include "source_io/module_parameter/parameter.h" #include "source_cell/module_neighbor/sltk_atom_arrange.h" #include "source_cell/module_neighbor/sltk_grid_driver.h" -#include "source_io/output_log.h" -#include "source_io/cif_io.h" +#include "source_io/module_output/output_log.h" +#include "source_io/module_output/cif_io.h" namespace ModuleESolver diff --git a/source/source_esolver/esolver_nep.cpp b/source/source_esolver/esolver_nep.cpp new file mode 100644 index 0000000000..680442bbf4 --- /dev/null +++ b/source/source_esolver/esolver_nep.cpp @@ -0,0 +1,213 @@ +/** + * @file esolver_nep.cpp +#include "source_io/module_parameter/parameter.h" + * @brief Implementation of ESolver_NEP class for neuroevolution potential (NEP). + * + * This file contains the implementation of the ESolver_NEP class, which is used for solving the energy and forces in a + * NEP simulation. + * NEP is a method for training deep neural networks to accurately predict the potential energy surface of a + * molecular system. + * + * For more information about NEP, see the following reference: + * 1. https://gpumd.org/potentials/nep.html + * 2. https://doi.org/10.1002/mgea.70028 + * + * @author MoseyQAQ + * @date 2025-10-10 + */ +#include "esolver_nep.h" + +#include "source_base/parallel_common.h" +#include "source_base/timer.h" +#include "source_io/module_output/output_log.h" +#include "source_io/module_output/cif_io.h" + +#include +#include + +using namespace ModuleESolver; + +void ESolver_NEP::before_all_runners(UnitCell& ucell, const Input_para& inp) +{ + nep_potential = 0.0; + nep_force.create(ucell.nat, 3); + nep_virial.create(3, 3); + atype.resize(ucell.nat); + _e.resize(ucell.nat); + _f.resize(3 * ucell.nat); + _v.resize(9 * ucell.nat); + + ModuleIO::CifParser::write(PARAM.globalv.global_out_dir + "STRU.cif", + ucell, + "# Generated by ABACUS ModuleIO::CifParser", + "data_?"); + +#ifdef __NEP + /// determine the type map from STRU to NEP model + type_map(ucell); +#endif +} + +void ESolver_NEP::runner(UnitCell& ucell, const int istep) +{ + ModuleBase::TITLE("ESolver_NEP", "runner"); + ModuleBase::timer::tick("ESolver_NEP", "runner"); + + // note that NEP are column major, thus a transpose is needed + // cell + std::vector cell(9, 0.0); + cell[0] = ucell.latvec.e11 * ucell.lat0_angstrom; + cell[1] = ucell.latvec.e21 * ucell.lat0_angstrom; + cell[2] = ucell.latvec.e31 * ucell.lat0_angstrom; + cell[3] = ucell.latvec.e12 * ucell.lat0_angstrom; + cell[4] = ucell.latvec.e22 * ucell.lat0_angstrom; + cell[5] = ucell.latvec.e32 * ucell.lat0_angstrom; + cell[6] = ucell.latvec.e13 * ucell.lat0_angstrom; + cell[7] = ucell.latvec.e23 * ucell.lat0_angstrom; + cell[8] = ucell.latvec.e33 * ucell.lat0_angstrom; + + // coord + std::vector coord(3 * ucell.nat, 0.0); + int iat = 0; + const int nat = ucell.nat; + for (int it = 0; it < ucell.ntype; ++it) + { + for (int ia = 0; ia < ucell.atoms[it].na; ++ia) + { + coord[iat] = ucell.atoms[it].tau[ia].x * ucell.lat0_angstrom; + coord[iat + nat] = ucell.atoms[it].tau[ia].y * ucell.lat0_angstrom; + coord[iat + 2 * nat] = ucell.atoms[it].tau[ia].z * ucell.lat0_angstrom; + iat++; + } + } + assert(ucell.nat == iat); + +#ifdef __NEP + nep_potential = 0.0; + nep_force.zero_out(); + nep_virial.zero_out(); + + nep.compute(atype, cell, coord, _e, _f, _v); + + // unit conversion + const double fact_e = 1.0 / ModuleBase::Ry_to_eV; + const double fact_f = 1.0 / (ModuleBase::Ry_to_eV * ModuleBase::ANGSTROM_AU); + const double fact_v = 1.0 / (ucell.omega * ModuleBase::Ry_to_eV); + + + // potential energy + nep_potential = fact_e * std::accumulate(_e.begin(), _e.end(), 0.0) ; + GlobalV::ofs_running << " #TOTAL ENERGY# " << std::setprecision(11) << nep_potential * ModuleBase::Ry_to_eV << " eV" + << std::endl; + + // forces + for (int i = 0; i < nat; ++i) + { + nep_force(i, 0) = _f[i] * fact_f; + nep_force(i, 1) = _f[i + nat] * fact_f; + nep_force(i, 2) = _f[i + 2 * nat] * fact_f; + } + + // virial + std::vector v_sum(9, 0.0); + for (int j = 0; j < 9; ++j) + { + for (int i = 0; i < nat; ++i) + { + int index = j * nat + i; + v_sum[j] += _v[index]; + } + } + + // virial -> stress + for (int i = 0; i < 3; ++i) + { + for (int j = 0; j < 3; ++j) + { + nep_virial(i, j) = v_sum[3 * i + j] * fact_v; + } + } +#else + ModuleBase::WARNING_QUIT("ESolver_NEP", "Please recompile with -D__NEP"); +#endif + ModuleBase::timer::tick("ESolver_NEP", "runner"); +} + +double ESolver_NEP::cal_energy() +{ + return nep_potential; +} + +void ESolver_NEP::cal_force(UnitCell& ucell, ModuleBase::matrix& force) +{ + force = nep_force; + ModuleIO::print_force(GlobalV::ofs_running, ucell, "TOTAL-FORCE (eV/Angstrom)", force, false); +} + +void ESolver_NEP::cal_stress(UnitCell& ucell, ModuleBase::matrix& stress) +{ + stress = nep_virial; + ModuleIO::print_stress("TOTAL-STRESS", stress, true, false, GlobalV::ofs_running); + + // external stress + double unit_transform = ModuleBase::RYDBERG_SI / pow(ModuleBase::BOHR_RADIUS_SI, 3) * 1.0e-8; + double external_stress[3] = {PARAM.inp.press1, PARAM.inp.press2, PARAM.inp.press3}; + for (int i = 0; i < 3; i++) + { + stress(i, i) -= external_stress[i] / unit_transform; + } +} + +void ESolver_NEP::after_all_runners(UnitCell& ucell) +{ + GlobalV::ofs_running << "\n --------------------------------------------" << std::endl; + GlobalV::ofs_running << std::setprecision(16); + GlobalV::ofs_running << " !FINAL_ETOT_IS " << nep_potential * ModuleBase::Ry_to_eV << " eV" << std::endl; + GlobalV::ofs_running << " --------------------------------------------\n\n" << std::endl; +} + +#ifdef __NEP +void ESolver_NEP::type_map(const UnitCell& ucell) +{ + // parse the element list from NEP model file + std::unordered_map label; + std::string temp; + for (int i = 0; i < nep.element_list.size(); ++i) + { + label[nep.element_list[i]] = i; //> label: map from element string to index int. + } + + std::cout << "\n Element list of model file " << nep_file << " " << std::endl; + std::cout << " ----------------------------------------------------------------"; + int count = 0; + for (auto it = label.begin(); it != label.end(); ++it) + { + if (count % 5 == 0) + { + std::cout << std::endl; + std::cout << " "; + } + count++; + temp = it->first + ": " + std::to_string(it->second); + std::cout << std::left << std::setw(10) << temp; + } + std::cout << "\n -----------------------------------------------------------------" << std::endl; + + // parse the atype based on the element list + int iat = 0; + for (int it = 0; it < ucell.ntype; ++it) + { + for (int ia = 0; ia < ucell.atoms[it].na; ++ia) + { + if (label.find(ucell.atoms[it].label) == label.end()) + { + ModuleBase::WARNING_QUIT("ESolver_NEP", + "The label " + ucell.atoms[it].label + " is not found in the type map."); + } + atype[iat] = label[ucell.atoms[it].label]; + iat++; + } + } + assert(ucell.nat == iat); +} +#endif diff --git a/source/source_esolver/esolver_nep.h b/source/source_esolver/esolver_nep.h new file mode 100644 index 0000000000..dfec17a83c --- /dev/null +++ b/source/source_esolver/esolver_nep.h @@ -0,0 +1,108 @@ +#ifndef ESOLVER_NEP_H +#define ESOLVER_NEP_H + +#include "esolver.h" +#ifdef __NEP +#include "nep.h" +#endif +#include +#include + +namespace ModuleESolver +{ + +class ESolver_NEP : public ESolver +{ + public: +#ifdef __NEP + ESolver_NEP(const std::string& pot_file): nep(pot_file) + { + classname = "ESolver_NEP"; + nep_file = pot_file; + } +#else + ESolver_NEP(const std::string& pot_file) + { + classname = "ESolver_NEP"; + nep_file = pot_file; + } +#endif + + /** + * @brief Initialize the NEP solver with given input parameters and unit cell + * + * @param inp input parameters + * @param cell unitcell information + */ + void before_all_runners(UnitCell& ucell, const Input_para& inp) override; + + /** + * @brief Run the NEP solver for a given ion/md step and unit cell + * + * @param istep the current ion/md step + * @param cell unitcell information + */ + void runner(UnitCell& ucell, const int istep) override; + + /** + * @brief get the total energy without ion kinetic energy + * + * @param etot the computed energy + * @return total energy without ion kinetic energy + */ + double cal_energy() override; + + /** + * @brief get the computed atomic forces + * + * @param force the computed atomic forces + */ + void cal_force(UnitCell& ucell, ModuleBase::matrix& force) override; + + /** + * @brief get the computed lattice virials + * + * @param stress the computed lattice virials + */ + void cal_stress(UnitCell& ucell, ModuleBase::matrix& stress) override; + + /** + * @brief Prints the final total energy of the NEP model to the output file + * + * This function prints the final total energy of the NEP model in eV to the output file along with some formatting. + */ + void after_all_runners(UnitCell& ucell) override; + + private: + /** + * @brief determine the type map of NEP model + * + * @param ucell unitcell information + */ + void type_map(const UnitCell& ucell); + + /** + * @brief NEP related variables for ESolver_NEP class + * + * These variables are related to the NEP method and are used in the ESolver_NEP class to compute the potential + * energy and forces. + * + * @note These variables are only defined if the __NEP preprocessor macro is defined. + */ +#ifdef __NEP + NEP nep; ///< NEP object for NEP calculations +#endif + + std::string nep_file; ///< directory of NEP model file + std::vector atype = {}; ///< atom type mapping for NEP model + double nep_potential; ///< computed potential energy + ModuleBase::matrix nep_force; ///< computed atomic forces + ModuleBase::matrix nep_virial; ///< computed lattice virials + std::vector _e; ///< temporary storage for energy computation + std::vector _f; ///< temporary storage for force computation + std::vector _v; ///< temporary storage for virial computation +}; + +} // namespace ModuleESolver + +#endif \ No newline at end of file diff --git a/source/source_esolver/esolver_of.cpp b/source/source_esolver/esolver_of.cpp index 1ece91eb62..1fb754d2b6 100644 --- a/source/source_esolver/esolver_of.cpp +++ b/source/source_esolver/esolver_of.cpp @@ -1,20 +1,20 @@ #include "esolver_of.h" #include "source_io/module_parameter/parameter.h" -#include "source_io/cube_io.h" -#include "source_io/output_log.h" -#include "source_io/write_elecstat_pot.h" +#include "source_io/module_output/cube_io.h" +#include "source_io/module_output/output_log.h" +#include "source_io/module_chgpot/write_elecstat_pot.h" //-----------temporary------------------------- #include "source_base/global_function.h" #include "source_estate/module_charge/symmetry_rho.h" #include "source_hamilt/module_ewald/H_Ewald_pw.h" -#include "source_pw/module_pwdft/global.h" -#include "source_io/print_info.h" +#include "source_io/module_output/print_info.h" #include "source_estate/cal_ux.h" -//-----force------------------- #include "source_pw/module_pwdft/forces.h" -//-----stress------------------ #include "source_pw/module_ofdft/of_stress_pw.h" +#include "source_pw/module_ofdft/of_print_info.h" +#include "source_hamilt/module_xc/xc_functional.h" + namespace ModuleESolver { @@ -27,6 +27,9 @@ ESolver_OF::ESolver_OF() ESolver_OF::~ESolver_OF() { + //**************************************************** + // do not add any codes in this deconstructor funcion + //**************************************************** delete psi_; delete[] this->pphi_; @@ -72,40 +75,15 @@ void ESolver_OF::before_all_runners(UnitCell& ucell, const Input_para& inp) ModuleBase::GlobalFunc::DONE(GlobalV::ofs_running, "SETUP UNITCELL"); - XC_Functional::set_xc_type(ucell.atoms[0].ncpp.xc_func); +// XC_Functional::set_xc_type(ucell.atoms[0].ncpp.xc_func); int func_type = XC_Functional::get_func_type(); if (func_type > 2) { ModuleBase::WARNING_QUIT("esolver_of", "meta-GGA and Hybrid functionals are not supported by OFDFT."); } - // symmetry analysis should be performed every time the cell is changed - if (ModuleSymmetry::Symmetry::symm_flag == 1) - { - ucell.symm.analy_sys(ucell.lat, ucell.st, ucell.atoms, GlobalV::ofs_running); - ModuleBase::GlobalFunc::DONE(GlobalV::ofs_running, "SYMMETRY"); - } - - // Setup the k points according to symmetry. - kv.set(ucell,ucell.symm, inp.kpoint_file, inp.nspin, ucell.G, ucell.latvec, GlobalV::ofs_running); - ModuleBase::GlobalFunc::DONE(GlobalV::ofs_running, "INIT K-POINTS"); - - // print information - // mohan add 2021-01-30 - ModuleIO::setup_parameters(ucell, kv); - - // initialize the real-space uniform grid for FFT and parallel - // distribution of plane waves - Pgrid.init(pw_rho->nx, - pw_rho->ny, - pw_rho->nz, - pw_rho->nplane, - pw_rho->nrxx, - pw_big->nbz, - pw_big->bz); // mohan add 2010-07-22, update 2011-05-04 - // Calculate Structure factor - sf.setup_structure_factor(&ucell, Pgrid, pw_rho); - ModuleBase::GlobalFunc::DONE(GlobalV::ofs_running, "INIT BASIS"); + this->chr.init_rho(ucell, this->Pgrid, this->sf.strucFac, ucell.symm, &this->kv); + this->chr.check_rho(); // check the rho // initialize local pseudopotential this->locpp.init_vloc(ucell,pw_rho); @@ -116,12 +94,12 @@ void ESolver_OF::before_all_runners(UnitCell& ucell, const Input_para& inp) this->init_elecstate(ucell); // calculate the total local pseudopotential in real space - this->pelec->init_scf(0, ucell, Pgrid, sf.strucFac, locpp.numeric, ucell.symm); // atomic_rho, v_of_rho, set_vrs + this->pelec->init_scf(ucell, Pgrid, sf.strucFac, locpp.numeric, ucell.symm); // atomic_rho, v_of_rho, set_vrs // liuyu move here 2023-10-09 // D in uspp need vloc, thus behind init_scf() // calculate the effective coefficient matrix for non-local pseudopotential projectors - ModuleBase::matrix veff = this->pelec->pot->get_effective_v(); + ModuleBase::matrix veff = this->pelec->pot->get_eff_v(); ModuleBase::GlobalFunc::DONE(GlobalV::ofs_running, "INIT POTENTIAL"); @@ -139,6 +117,7 @@ void ESolver_OF::before_all_runners(UnitCell& ucell, const Input_para& inp) this->nelec_[0] = this->pelec->nelec_spin[0]; this->nelec_[1] = this->pelec->nelec_spin[1]; } + delete[] this->kedf_manager_; this->kedf_manager_ = new KEDF_Manager(); this->kedf_manager_->init(inp, this->pw_rho, this->dV_, this->nelec_[0]); ModuleBase::GlobalFunc::DONE(GlobalV::ofs_running, "INIT KEDF"); @@ -158,11 +137,7 @@ void ESolver_OF::runner(UnitCell& ucell, const int istep) this->iter_ = 0; bool conv_esolver = false; // this conv_esolver is added by mohan 20250302 -#ifdef __MPI - this->iter_time = MPI_Wtime(); -#else - this->iter_time = std::chrono::system_clock::now(); -#endif + this->iter_time = ModuleBase::get_time(); while (true) { @@ -213,6 +188,8 @@ void ESolver_OF::before_opt(const int istep, UnitCell& ucell) //! 1) call before_scf() of ESolver_FP ESolver_FP::before_scf(ucell, istep); + + if (ucell.cell_parameter_updated) { this->dV_ = ucell.omega / this->pw_rho->nxyz; @@ -228,11 +205,9 @@ void ESolver_OF::before_opt(const int istep, UnitCell& ucell) // Refresh the arrays delete this->psi_; - this->psi_ = new psi::Psi(1, - PARAM.inp.nspin, - this->pw_rho->nrxx, - this->pw_rho->nrxx, - true); + this->psi_ = new psi::Psi(1, PARAM.inp.nspin, + this->pw_rho->nrxx, this->pw_rho->nrxx, true); + for (int is = 0; is < PARAM.inp.nspin; ++is) { this->pphi_[is] = this->psi_->get_pointer(is); @@ -240,8 +215,9 @@ void ESolver_OF::before_opt(const int istep, UnitCell& ucell) delete this->ptemp_rho_; this->ptemp_rho_ = new Charge(); - this->ptemp_rho_->set_rhopw(this->pw_rho); - this->ptemp_rho_->allocate(PARAM.inp.nspin); + this->ptemp_rho_->set_rhopw(this->pw_rho); + const bool kin_den = this->ptemp_rho_->kin_density(); // mohan add 20251202 + this->ptemp_rho_->allocate(PARAM.inp.nspin, kin_den); for (int is = 0; is < PARAM.inp.nspin; ++is) { @@ -256,13 +232,9 @@ void ESolver_OF::before_opt(const int istep, UnitCell& ucell) } } - this->pelec->init_scf(istep, ucell, Pgrid, sf.strucFac, locpp.numeric, ucell.symm); + this->pelec->init_scf(ucell, Pgrid, sf.strucFac, locpp.numeric, ucell.symm); - Symmetry_rho srho; - for (int is = 0; is < PARAM.inp.nspin; is++) - { - srho.begin(is, this->chr, this->pw_rho, ucell.symm); - } + Symmetry_rho::symmetrize_rho(PARAM.inp.nspin, this->chr, this->pw_rho, ucell.symm); for (int is = 0; is < PARAM.inp.nspin; ++is) { @@ -272,7 +244,7 @@ void ESolver_OF::before_opt(const int istep, UnitCell& ucell) { // Here we initialize rho to be uniform, // because the rho got by pot.init_pot -> Charge::atomic_rho may contain minus elements. - this->chr.rho[is][ibs] = this->nelec_[is] / this->pelec->omega; + this->chr.rho[is][ibs] = this->nelec_[is] / ucell.omega; this->pphi_[is][ibs] = sqrt(this->chr.rho[is][ibs]); } } @@ -316,10 +288,10 @@ void ESolver_OF::update_potential(UnitCell& ucell) this->kedf_manager_->get_potential(this->chr.rho, this->pphi_, this->pw_rho, - this->pelec->pot->get_effective_v()); // KEDF potential + this->pelec->pot->get_eff_v()); // KEDF potential for (int is = 0; is < PARAM.inp.nspin; ++is) { - const double* vr_eff = this->pelec->pot->get_effective_v(is); + const double* vr_eff = this->pelec->pot->get_eff_v(is); for (int ir = 0; ir < this->pw_rho->nrxx; ++ir) { this->pdEdphi_[is][ir] = vr_eff[ir]; @@ -453,7 +425,8 @@ bool ESolver_OF::check_exit(bool& conv_esolver) conv_esolver = (this->of_conv_ == "energy" && energyConv) || (this->of_conv_ == "potential" && potConv) || (this->of_conv_ == "both" && potConv && energyConv); - this->print_info(conv_esolver); + OFDFT::print_info(this->iter_, this->iter_time, this->energy_current_, this->energy_last_, + this->normdLdphi_, this->pelec, this->kedf_manager_, conv_esolver); if (conv_esolver || this->iter_ >= this->max_iter_) { @@ -494,18 +467,17 @@ void ESolver_OF::after_opt(const int istep, UnitCell& ucell, const bool conv_eso this->kedf_manager_->get_energy_density(this->chr.rho, this->pphi_, this->pw_rho, this->chr.kin_r); } - //------------------------------------------------------------------ - // 2) call after_scf() of ESolver_FP - //------------------------------------------------------------------ - ESolver_FP::after_scf(ucell, istep, conv_esolver); - - // should not be here? mohan note 2025-03-03 for (int ir = 0; ir < this->pw_rho->nrxx; ++ir) { this->chr.rho_save[0][ir] = this->chr.rho[0][ir]; } + //------------------------------------------------------------------ + // 2) call after_scf() of ESolver_FP + //------------------------------------------------------------------ + ESolver_FP::after_scf(ucell, istep, conv_esolver); + #ifdef __MLALGO //------------------------------------------------------------------ // Generate data if needed @@ -513,12 +485,12 @@ void ESolver_OF::after_opt(const int istep, UnitCell& ucell, const bool conv_eso if (PARAM.inp.of_ml_gene_data) { this->pelec->pot->update_from_charge(&this->chr, &ucell); // Hartree + XC + external - this->kedf_manager_->get_potential(this->chr.rho, - this->pphi_, - this->pw_rho, - this->pelec->pot->get_effective_v()); // KEDF potential + this->kedf_manager_->get_potential(this->chr.rho, + this->pphi_, + this->pw_rho, + this->pelec->pot->get_eff_v()); // KEDF potential - const double* vr_eff = this->pelec->pot->get_effective_v(0); + const double* vr_eff = this->pelec->pot->get_eff_v(0); for (int ir = 0; ir < this->pw_rho->nrxx; ++ir) { this->pdEdphi_[0][ir] = vr_eff[ir]; @@ -560,7 +532,7 @@ double ESolver_OF::cal_energy() this->pw_rho->nrxx, this->dV_); } - Parallel_Reduce::reduce_all(pseudopot_energy); + Parallel_Reduce::reduce_pool(pseudopot_energy); this->pelec->f_en.ekinetic = kinetic_energy; this->pelec->f_en.e_local_pp = pseudopot_energy; this->pelec->f_en.etot += kinetic_energy + pseudopot_energy; @@ -575,7 +547,10 @@ double ESolver_OF::cal_energy() void ESolver_OF::cal_force(UnitCell& ucell, ModuleBase::matrix& force) { Forces ff(ucell.nat); - ff.cal_force(ucell, force, *pelec, this->pw_rho, &ucell.symm, &sf, this->solvent, &this->locpp); + + // here nullptr is for DFT+U, which may cause bugs, mohan note 2025-11-07 + // solvent can be used? mohan ask 2025-11-07 + ff.cal_force(ucell, force, *pelec, this->pw_rho, &ucell.symm, &sf, this->solvent, nullptr, &this->locpp); } /** @@ -587,11 +562,8 @@ void ESolver_OF::cal_stress(UnitCell& ucell, ModuleBase::matrix& stress) { ModuleBase::matrix kinetic_stress_; kinetic_stress_.create(3, 3); - this->kedf_manager_->get_stress(this->pelec->omega, - this->chr.rho, - this->pphi_, - this->pw_rho, - kinetic_stress_); // kinetic stress + this->kedf_manager_->get_stress(ucell.omega, this->chr.rho, + this->pphi_, this->pw_rho, kinetic_stress_); // kinetic stress OF_Stress_PW ss(this->pelec, this->pw_rho); ss.cal_stress(stress, kinetic_stress_, ucell, &ucell.symm, this->locpp, &sf, &kv); diff --git a/source/source_esolver/esolver_of.h b/source/source_esolver/esolver_of.h index 508a18b3db..b94019d5fe 100644 --- a/source/source_esolver/esolver_of.h +++ b/source/source_esolver/esolver_of.h @@ -27,7 +27,7 @@ class ESolver_OF : public ESolver_FP virtual void cal_stress(UnitCell& ucell, ModuleBase::matrix& stress) override; - private: + protected: // ======================= variables ========================== // ---------- the kinetic energy density functionals ---------- KEDF_Manager* kedf_manager_ = nullptr; // KEDF manager, which will be initialized in before_all_runners @@ -83,7 +83,7 @@ class ESolver_OF : public ESolver_FP // ============================ tools =============================== // --------------------- initialize --------------------------------- - void init_elecstate(UnitCell& ucell); + void init_elecstate(UnitCell& ucell); void allocate_array(); // --------------------- calculate physical qualities --------------- @@ -98,9 +98,6 @@ class ESolver_OF : public ESolver_FP void check_direction(double* dEdtheta, double** ptemp_phi, UnitCell& ucell); void test_direction(double* dEdtheta, double** ptemp_phi, UnitCell& ucell); - // --------------------- output the necessary information ----------- - void print_info(const bool conv_esolver); - // --------------------- interface to blas -------------------------- double inner_product(double* pa, double* pb, int length, double dV = 1) { diff --git a/source/source_esolver/esolver_of_interface.cpp b/source/source_esolver/esolver_of_interface.cpp index 7051308a00..d428b79506 100644 --- a/source/source_esolver/esolver_of_interface.cpp +++ b/source/source_esolver/esolver_of_interface.cpp @@ -1,5 +1,4 @@ #include "esolver_of.h" -#include "source_pw/module_pwdft/global.h" #include "source_io/module_parameter/parameter.h" namespace ModuleESolver diff --git a/source/source_esolver/esolver_of_tddft.cpp b/source/source_esolver/esolver_of_tddft.cpp new file mode 100644 index 0000000000..487cbbca5b --- /dev/null +++ b/source/source_esolver/esolver_of_tddft.cpp @@ -0,0 +1,127 @@ +#include "esolver_of_tddft.h" + +#include "source_io/module_parameter/parameter.h" +#include "source_io/module_output/cube_io.h" +#include "source_io/module_output/output_log.h" +#include "source_io/module_chgpot/write_elecstat_pot.h" +//-----------temporary------------------------- +#include "source_base/global_function.h" +#include "source_estate/module_charge/symmetry_rho.h" +#include "source_hamilt/module_ewald/H_Ewald_pw.h" +#include "source_io/module_output/print_info.h" +#include "source_estate/cal_ux.h" +//-----force------------------- +#include "source_pw/module_pwdft/forces.h" +//-----stress------------------ +#include "source_pw/module_ofdft/of_stress_pw.h" + +#include + +namespace ModuleESolver +{ + +ESolver_OF_TDDFT::ESolver_OF_TDDFT() +{ + this->classname = "ESolver_OF_TDDFT"; + this->evolve_ofdft=new Evolve_OFDFT(); +} + +ESolver_OF_TDDFT::~ESolver_OF_TDDFT() +{ + delete this->evolve_ofdft; +} + + +void ESolver_OF_TDDFT::runner(UnitCell& ucell, const int istep) +{ + ModuleBase::timer::tick("ESolver_OF_TDDFT", "runner"); + // get Ewald energy, initial rho and phi if necessary + this->before_opt(istep, ucell); + this->iter_ = 0; + + bool conv_esolver = false; // this conv_esolver is added by mohan 20250302 + this->iter_time = ModuleBase::get_time(); + + if (this->phi_td.empty()) + { + const int size = PARAM.inp.nspin * this->pw_rho->nrxx; + this->phi_td.resize(size, std::complex(0.0, 0.0)); + } + + if ((istep==0) && PARAM.inp.init_chg != "file") + { + while (true) + { + // once we get a new rho and phi, update potential + this->update_potential(ucell); + + // calculate the energy of new rho and phi + this->energy_llast_ = this->energy_last_; + this->energy_last_ = this->energy_current_; + this->energy_current_ = this->cal_energy(); + + + // check if the job is done + if (this->check_exit(conv_esolver)) + { + break; + } + + // find the optimization direction and step lenghth theta according to the potential + this->optimize(ucell); + + // update the rho and phi based on the direction and theta + this->update_rho(); + + this->iter_++; + + ESolver_FP::iter_finish(ucell, istep, this->iter_, conv_esolver); + } + +#ifdef _OPENMP +#pragma omp parallel for collapse(2) +#endif + for (int is = 0; is < PARAM.inp.nspin; ++is) + { + for (int ir = 0; ir < this->pw_rho->nrxx; ++ir) + { + phi_td[is*this->pw_rho->nrxx+ir]=pphi_[is][ir]; + } + } + } + else if ((istep==0) && PARAM.inp.init_chg == "file") + { +#ifdef _OPENMP +#pragma omp parallel for collapse(2) +#endif + for (int is = 0; is < PARAM.inp.nspin; ++is) + { + for (int ir = 0; ir < this->pw_rho->nrxx; ++ir) + { + phi_td[is*this->pw_rho->nrxx+ir]=pphi_[is][ir]; + } + } + conv_esolver=true; + } + else + { + this->evolve_ofdft->propagate_psi_RK4(this->pelec, this->chr, ucell, this->phi_td, this->pw_rho); +#ifdef _OPENMP +#pragma omp parallel for collapse(2) +#endif + for (int is = 0; is < PARAM.inp.nspin; ++is) + { + for (int ir = 0; ir < this->pw_rho->nrxx; ++ir) + { + pphi_[is][ir]=std::abs(phi_td[is*this->pw_rho->nrxx+ir]); + } + } + conv_esolver=true; + } + + this->after_opt(istep, ucell, conv_esolver); + + ModuleBase::timer::tick("ESolver_OF_TDDFT", "runner"); +} + +} // namespace ModuleESolver diff --git a/source/source_esolver/esolver_of_tddft.h b/source/source_esolver/esolver_of_tddft.h new file mode 100644 index 0000000000..85293b1761 --- /dev/null +++ b/source/source_esolver/esolver_of_tddft.h @@ -0,0 +1,23 @@ +#ifndef ESOLVER_OF_TDDFT_H +#define ESOLVER_OF_TDDFT_H + +#include "esolver_of.h" +#include "source_pw/module_ofdft/evolve_ofdft.h" + +namespace ModuleESolver +{ +class ESolver_OF_TDDFT : public ESolver_OF +{ + public: + ESolver_OF_TDDFT(); + ~ESolver_OF_TDDFT(); + + virtual void runner(UnitCell& ucell, const int istep) override; + + protected: + std::vector> phi_td; // time dependent wavefunction + Evolve_OFDFT* evolve_ofdft=nullptr; +}; +} // namespace ModuleESolver + +#endif diff --git a/source/source_esolver/esolver_of_tool.cpp b/source/source_esolver/esolver_of_tool.cpp index a71b128cf3..b54f4de53a 100644 --- a/source/source_esolver/esolver_of_tool.cpp +++ b/source/source_esolver/esolver_of_tool.cpp @@ -3,7 +3,6 @@ #include "source_base/memory.h" #include "source_estate/module_pot/efield.h" #include "source_estate/module_pot/gatefield.h" -#include "source_pw/module_pwdft/global.h" #include "source_io/module_parameter/parameter.h" #include "source_estate/cal_ux.h" @@ -20,9 +19,7 @@ void ESolver_OF::init_elecstate(UnitCell& ucell) if (this->pelec == nullptr) { this->pelec = new elecstate::ElecState((Charge*)(&chr), this->pw_rho, pw_big); - this->chr.allocate(PARAM.inp.nspin); } - this->pelec->omega = ucell.omega; delete this->pelec->pot; this->pelec->pot = new elecstate::Potential(this->pw_rhod, @@ -57,6 +54,10 @@ void ESolver_OF::init_elecstate(UnitCell& ucell) { pot_register_in.push_back("gatefield"); } + if (PARAM.inp.ml_exx) + { + pot_register_in.push_back("ml_exx"); + } // only Potential is not empty, Veff and Meta are available if (pot_register_in.size() > 0) { @@ -88,7 +89,8 @@ void ESolver_OF::allocate_array() delete this->ptemp_rho_; this->ptemp_rho_ = new Charge(); this->ptemp_rho_->set_rhopw(this->pw_rho); - this->ptemp_rho_->allocate(PARAM.inp.nspin); + const bool kin_den = this->ptemp_rho_->kin_density(); // mohan add 20251202 + this->ptemp_rho_->allocate(PARAM.inp.nspin, kin_den); this->theta_ = new double[PARAM.inp.nspin]; this->pdLdphi_ = new double*[PARAM.inp.nspin]; @@ -140,7 +142,7 @@ void ESolver_OF::cal_potential(double* ptemp_phi, double* rdLdphi, UnitCell& uce elecstate::cal_ux(ucell); this->pelec->pot->update_from_charge(this->ptemp_rho_, &ucell); - ModuleBase::matrix& vr_eff = this->pelec->pot->get_effective_v(); + ModuleBase::matrix& vr_eff = this->pelec->pot->get_eff_v(); this->kedf_manager_->get_potential(this->ptemp_rho_->rho, temp_phi, @@ -180,7 +182,7 @@ void ESolver_OF::cal_dEdtheta(double** ptemp_phi, Charge* temp_rho, UnitCell& uc elecstate::cal_ux(ucell); this->pelec->pot->update_from_charge(temp_rho, &ucell); - ModuleBase::matrix& vr_eff = this->pelec->pot->get_effective_v(); + ModuleBase::matrix& vr_eff = this->pelec->pot->get_eff_v(); this->kedf_manager_->get_potential(temp_rho->rho, ptemp_phi, @@ -220,7 +222,7 @@ double ESolver_OF::cal_mu(double* pphi, double* pdEdphi, double nelec) * @brief Rotate and renormalize the direction |d>, * make it orthogonal to phi ( = 0), and = nelec */ -void ESolver_OF::adjust_direction() +void ESolver_OF::adjust_direction(void) { // filter the high frequency term in direction if of_full_pw = false if (!PARAM.inp.of_full_pw) @@ -380,140 +382,13 @@ void ESolver_OF::test_direction(double* dEdtheta, double** ptemp_phi, UnitCell& Parallel_Reduce::reduce_all(pseudopot_energy); temp_energy += kinetic_energy + pseudopot_energy; GlobalV::ofs_warning << i << " " << dEdtheta[0] << " " << temp_energy << std::endl; - if (this->theta_[0] == 0) { - std::cout << "dEdtheta " << dEdtheta[0] << std::endl; -} - } + if (this->theta_[0] == 0) + { + std::cout << "dEdtheta " << dEdtheta[0] << std::endl; + } + } exit(0); } } -/** - * @brief Print nessecary information to the screen, - * and write the components of the total energy into running_log. - */ -void ESolver_OF::print_info(const bool conv_esolver) -{ - if (this->iter_ == 0) - { - std::cout << " ============================= Running OFDFT " - "==============================" - << std::endl; - std::cout << " ITER ETOT/eV EDIFF/eV EFERMI/eV POTNORM TIME/s" - << std::endl; - } - - std::map prefix_map = { - {"cg1", "CG"}, - {"cg2", "CG"}, - {"tn", "TN"} - }; - std::string iteration = prefix_map[PARAM.inp.of_method] + std::to_string(this->iter_); -#ifdef __MPI - double duration = (double)(MPI_Wtime() - this->iter_time); -#else - double duration - = (std::chrono::duration_cast(std::chrono::system_clock::now() - this->iter_time)).count() - / static_cast(1e6); -#endif - std::cout << " " << std::setw(8) << iteration - << std::setw(18) << std::scientific << std::setprecision(8) << this->energy_current_ * ModuleBase::Ry_to_eV - << std::setw(18) << (this->energy_current_ - this->energy_last_) * ModuleBase::Ry_to_eV - << std::setw(13) << std::setprecision(4) << this->pelec->eferm.get_efval(0) * ModuleBase::Ry_to_eV - << std::setw(13) << std::setprecision(4) << this->normdLdphi_ - << std::setw(6) << std::fixed << std::setprecision(2) << duration << std::endl; - - GlobalV::ofs_running << std::setprecision(12); - GlobalV::ofs_running << std::setiosflags(std::ios::right); - - GlobalV::ofs_running << "\nIter" << this->iter_ << ": the norm of potential is " << this->normdLdphi_ << std::endl; - - std::vector titles; - std::vector energies_Ry; - std::vector energies_eV; - if ((PARAM.inp.out_band[0] > 0 && - ((this->iter_ + 1) % PARAM.inp.out_band[0] == 0 || - conv_esolver || - this->iter_ == PARAM.inp.scf_nmax)) || - PARAM.inp.init_chg == "file") - { - titles.push_back("E_Total"); - energies_Ry.push_back(this->pelec->f_en.etot); - titles.push_back("E_Kinetic"); - energies_Ry.push_back(this->pelec->f_en.ekinetic); - titles.push_back("E_Hartree"); - energies_Ry.push_back(this->pelec->f_en.hartree_energy); - titles.push_back("E_xc"); - energies_Ry.push_back(this->pelec->f_en.etxc - this->pelec->f_en.etxcc); - titles.push_back("E_LocalPP"); - energies_Ry.push_back(this->pelec->f_en.e_local_pp); - titles.push_back("E_Ewald"); - energies_Ry.push_back(this->pelec->f_en.ewald_energy); - - this->kedf_manager_->record_energy(titles, energies_Ry); - - std::string vdw_method = PARAM.inp.vdw_method; - if (vdw_method == "d2") // Peize Lin add 2014-04, update 2021-03-09 - { - titles.push_back("E_vdwD2"); - energies_Ry.push_back(this->pelec->f_en.evdw); - } - else if (vdw_method == "d3_0" || vdw_method == "d3_bj") // jiyy add 2019-05, update 2021-05-02 - { - titles.push_back("E_vdwD3"); - energies_Ry.push_back(this->pelec->f_en.evdw); - } - if (PARAM.inp.imp_sol) - { - titles.push_back("E_sol_el"); - energies_Ry.push_back(this->pelec->f_en.esol_el); - titles.push_back("E_sol_cav"); - energies_Ry.push_back(this->pelec->f_en.esol_cav); - } - if (PARAM.inp.efield_flag) - { - titles.push_back("E_efield"); - energies_Ry.push_back(elecstate::Efield::etotefield); - } - if (PARAM.inp.gate_flag) - { - titles.push_back("E_gatefield"); - energies_Ry.push_back(elecstate::Gatefield::etotgatefield); - } - } - else - { - titles.push_back("E_Total"); - energies_Ry.push_back(this->pelec->f_en.etot); - } - - if (PARAM.globalv.two_fermi) - { - titles.push_back("E_Fermi_up"); - energies_Ry.push_back(this->pelec->eferm.get_efval(0)); - titles.push_back("E_Fermi_dw"); - energies_Ry.push_back(this->pelec->eferm.get_efval(1)); - } - else - { - titles.push_back("E_Fermi"); - energies_Ry.push_back(this->pelec->eferm.get_efval(0)); - } - energies_eV.resize(energies_Ry.size()); - std::transform(energies_Ry.begin(), energies_Ry.end(), energies_eV.begin(), [](double energy) { - return energy * ModuleBase::Ry_to_eV; - }); - FmtTable table(/*titles=*/{"Energy", "Rydberg", "eV"}, - /*nrows=*/titles.size(), - /*formats=*/{"%20s", "%20.12f", "%20.12f"}, 0); - table << titles << energies_Ry << energies_eV; - GlobalV::ofs_running << table.str() << std::endl; - - // reset the iter_time for the next iteration -#ifdef __MPI - this->iter_time = MPI_Wtime(); -#else - this->iter_time = std::chrono::system_clock::now(); -#endif -} } // namespace ModuleESolver diff --git a/source/source_esolver/esolver_sdft_pw.cpp b/source/source_esolver/esolver_sdft_pw.cpp index 42fde3ebe5..c3bbdad210 100644 --- a/source/source_esolver/esolver_sdft_pw.cpp +++ b/source/source_esolver/esolver_sdft_pw.cpp @@ -8,6 +8,7 @@ #include "source_pw/module_stodft/sto_forces.h" #include "source_pw/module_stodft/sto_stress_pw.h" #include "source_hsolver/diago_iter_assist.h" +#include "source_hsolver/diago_params.h" #include "source_io/module_parameter/parameter.h" #include @@ -27,6 +28,9 @@ ESolver_SDFT_PW::ESolver_SDFT_PW() template ESolver_SDFT_PW::~ESolver_SDFT_PW() { + //**************************************************** + // do not add any codes in this deconstructor funcion + //**************************************************** } template @@ -115,7 +119,7 @@ template void ESolver_SDFT_PW::iter_finish(UnitCell& ucell, const int istep, int& iter, bool& conv_esolver) { // call iter_finish() of ESolver_KS - ESolver_KS::iter_finish(ucell, istep, iter, conv_esolver); + ESolver_KS::iter_finish(ucell, istep, iter, conv_esolver); } template @@ -139,20 +143,11 @@ void ESolver_SDFT_PW::hamilt2rho_single(UnitCell& ucell, int istep, i // reset energy this->pelec->f_en.eband = 0.0; this->pelec->f_en.demet = 0.0; - // choose if psi should be diag in subspace - // be careful that istep start from 0 and iter start from 1 - if (istep == 0 && iter == 1 || PARAM.inp.calculation == "nscf") - { - hsolver::DiagoIterAssist::need_subspace = false; - } - else - { - hsolver::DiagoIterAssist::need_subspace = true; - } + + // setup diagonalization parameters for SDFT + hsolver::setup_diago_params_sdft(istep, iter, ethr, PARAM.inp); bool skip_charge = PARAM.inp.calculation == "nscf" ? true : false; - hsolver::DiagoIterAssist::PW_DIAG_THR = ethr; - hsolver::DiagoIterAssist::PW_DIAG_NMAX = PARAM.inp.pw_diag_nmax; // hsolver only exists in this function hsolver::HSolverPW_SDFT hsolver_pw_sdft_obj(&this->kv, @@ -172,9 +167,9 @@ void ESolver_SDFT_PW::hamilt2rho_single(UnitCell& ucell, int istep, i hsolver::DiagoIterAssist::need_subspace); hsolver_pw_sdft_obj.solve(ucell, - this->p_hamilt, - this->kspw_psi[0], - this->psi[0], + static_cast*>(this->p_hamilt), + *this->stp.template get_psi_t(), + this->stp.psi_cpu[0], this->pelec, this->pw_wfc, this->stowf, @@ -187,11 +182,7 @@ void ESolver_SDFT_PW::hamilt2rho_single(UnitCell& ucell, int istep, i if (PARAM.globalv.ks_run) { - Symmetry_rho srho; - for (int is = 0; is < PARAM.inp.nspin; is++) - { - srho.begin(is, this->chr, this->pw_rho, ucell.symm); - } + Symmetry_rho::symmetrize_rho(PARAM.inp.nspin, this->chr, this->pw_rho, ucell.symm); this->pelec->f_en.deband = this->pelec->cal_delta_eband(ucell); } else @@ -230,7 +221,7 @@ void ESolver_SDFT_PW::cal_force(UnitCell& ucell, ModuleBase::matrix& this->locpp, this->ppcell, ucell, - *this->kspw_psi, + *this->stp.template get_psi_t(), this->stowf); } @@ -245,7 +236,7 @@ void ESolver_SDFT_PW::cal_stress(UnitCell& ucell, ModuleBase::matrix& &this->sf, &this->kv, this->pw_wfc, - *this->kspw_psi, + *this->stp.template get_psi_t(), this->stowf, &this->chr, &this->locpp, @@ -276,7 +267,7 @@ void ESolver_SDFT_PW::after_all_runners(UnitCell& ucell) this->pw_wfc, &this->kv, this->pelec, - reinterpret_cast>*>(this->psi), + reinterpret_cast>*>(this->stp.psi_cpu), reinterpret_cast>*>(this->p_hamilt), this->stoche, reinterpret_cast, base_device::DEVICE_CPU>*>(&stowf)); @@ -298,9 +289,9 @@ void ESolver_SDFT_PW::after_all_runners(UnitCell& ucell) &this->kv, this->pelec, this->pw_wfc, - this->kspw_psi, + this->stp.template get_psi_t(), &this->ppcell, - this->p_hamilt, + static_cast, Device>*>(this->p_hamilt), this->stoche, &stowf); sto_elecond.decide_nche(PARAM.inp.cond_dt, 1e-8, this->nche_sto, PARAM.inp.emin_sto, PARAM.inp.emax_sto); diff --git a/source/source_esolver/lcao_after_scf.cpp b/source/source_esolver/lcao_after_scf.cpp deleted file mode 100644 index c2cc359336..0000000000 --- a/source/source_esolver/lcao_after_scf.cpp +++ /dev/null @@ -1,72 +0,0 @@ -#include "esolver_ks_lcao.h" -#include "source_io/ctrl_output_lcao.h" - -namespace ModuleESolver -{ - -template -void ESolver_KS_LCAO::after_scf(UnitCell& ucell, const int istep, const bool conv_esolver) -{ - ModuleBase::TITLE("ESolver_KS_LCAO", "after_scf"); - ModuleBase::timer::tick("ESolver_KS_LCAO", "after_scf"); - - //------------------------------------------------------------------ - //! 1) call after_scf() of ESolver_KS - //------------------------------------------------------------------ - ESolver_KS::after_scf(ucell, istep, conv_esolver); - - //------------------------------------------------------------------ - //! 2) output of lcao every few ionic steps - //------------------------------------------------------------------ - auto* estate = dynamic_cast*>(this->pelec); - auto* hamilt_lcao = dynamic_cast*>(this->p_hamilt); - - if(!estate) - { - ModuleBase::WARNING_QUIT("ModuleIO::ctrl_output_lcao","pelec does not exist"); - } - - if(istep % PARAM.inp.out_interval == 0) - { - - ModuleIO::ctrl_output_lcao(ucell, - this->kv, - estate, - this->pv, - this->gd, - this->psi, - hamilt_lcao, - this->two_center_bundle_, - this->GK, - this->orb_, - this->pw_wfc, - this->pw_rho, - this->GridT, - this->pw_big, - this->sf, - this->rdmft_solver, -#ifdef __MLALGO - this->ld, -#endif -#ifdef __EXX - *this->exd, - *this->exc, -#endif - istep); - } - - //------------------------------------------------------------------ - //! 3) Clean up RA, which is used to serach for adjacent atoms - //------------------------------------------------------------------ - if (!PARAM.inp.cal_force && !PARAM.inp.cal_stress) - { - RA.delete_grid(); - } - - ModuleBase::timer::tick("ESolver_KS_LCAO", "after_scf"); -} - -template class ESolver_KS_LCAO; -template class ESolver_KS_LCAO, double>; -template class ESolver_KS_LCAO, std::complex>; -} // namespace ModuleESolver diff --git a/source/source_esolver/lcao_before_scf.cpp b/source/source_esolver/lcao_before_scf.cpp deleted file mode 100644 index 237cb41175..0000000000 --- a/source/source_esolver/lcao_before_scf.cpp +++ /dev/null @@ -1,286 +0,0 @@ -#include "source_estate/module_charge/symmetry_rho.h" -#include "source_esolver/esolver_ks_lcao.h" -#include "source_lcao/hamilt_lcao.h" -#include "source_lcao/module_dftu/dftu.h" -#include "source_pw/module_pwdft/global.h" -// -#include "source_base/timer.h" -#include "source_cell/module_neighbor/sltk_atom_arrange.h" -#include "source_cell/module_neighbor/sltk_grid_driver.h" -#include "source_io/berryphase.h" -#include "source_io/get_pchg_lcao.h" -#include "source_io/get_wf_lcao.h" -#include "source_io/io_npz.h" -#include "source_io/to_wannier90_lcao.h" -#include "source_io/to_wannier90_lcao_in_pw.h" -#include "source_io/write_HS_R.h" -#include "source_io/module_parameter/parameter.h" -#include "source_estate/elecstate_tools.h" -#ifdef __MLALGO -#include "source_lcao/module_deepks/LCAO_deepks.h" -#endif -#include "source_base/formatter.h" -#include "source_estate/elecstate_lcao.h" -#include "source_estate/module_dm/cal_dm_psi.h" -#include "source_lcao/LCAO_domain.h" -#include "source_lcao/module_operator_lcao/op_exx_lcao.h" -#include "source_lcao/module_operator_lcao/operator_lcao.h" -#include "source_lcao/module_deltaspin/spin_constrain.h" -#include "source_io/cube_io.h" -#include "source_io/write_elecstat_pot.h" -#ifdef __EXX -#include "source_io/restart_exx_csr.h" -#endif - -namespace ModuleESolver -{ - -template -void ESolver_KS_LCAO::before_scf(UnitCell& ucell, const int istep) -{ - ModuleBase::TITLE("ESolver_KS_LCAO", "before_scf"); - ModuleBase::timer::tick("ESolver_KS_LCAO", "before_scf"); - - //! 1) call before_scf() of ESolver_KS. - ESolver_KS::before_scf(ucell, istep); - - //! 2) find search radius - double search_radius = atom_arrange::set_sr_NL(GlobalV::ofs_running, - PARAM.inp.out_level, - orb_.get_rcutmax_Phi(), - ucell.infoNL.get_rcutmax_Beta(), - PARAM.globalv.gamma_only_local); - - //! 3) use search_radius to search adj atoms - atom_arrange::search(PARAM.globalv.search_pbc, - GlobalV::ofs_running, - this->gd, - ucell, - search_radius, - PARAM.inp.test_atom_input); - - //! 4) initialize NAO basis set -#ifdef __OLD_GINT - double dr_uniform = 0.001; - std::vector rcuts; - std::vector> psi_u; - std::vector> dpsi_u; - std::vector> d2psi_u; - - Gint_Tools::init_orb(dr_uniform, rcuts, ucell, orb_, psi_u, dpsi_u, d2psi_u); - - //! 5) set periodic boundary conditions - this->GridT.set_pbc_grid(this->pw_rho->nx, - this->pw_rho->ny, - this->pw_rho->nz, - this->pw_big->bx, - this->pw_big->by, - this->pw_big->bz, - this->pw_big->nbx, - this->pw_big->nby, - this->pw_big->nbz, - this->pw_big->nbxx, - this->pw_big->nbzp_start, - this->pw_big->nbzp, - this->pw_rho->ny, - this->pw_rho->nplane, - this->pw_rho->startz_current, - ucell, - this->gd, - dr_uniform, - rcuts, - psi_u, - dpsi_u, - d2psi_u, - PARAM.inp.nstream); - - psi_u.clear(); - psi_u.shrink_to_fit(); - dpsi_u.clear(); - dpsi_u.shrink_to_fit(); - d2psi_u.clear(); - d2psi_u.shrink_to_fit(); - LCAO_domain::grid_prepare(this->GridT, this->GG, this->GK, ucell, orb_, *this->pw_rho, *this->pw_big); - - //! 6) prepare grid integral -#else - gint_info_.reset( - new ModuleGint::GintInfo( - this->pw_big->nbx, - this->pw_big->nby, - this->pw_big->nbz, - this->pw_rho->nx, - this->pw_rho->ny, - this->pw_rho->nz, - 0, - 0, - this->pw_big->nbzp_start, - this->pw_big->nbx, - this->pw_big->nby, - this->pw_big->nbzp, - orb_.Phi, - ucell, - this->gd)); - ModuleGint::Gint::set_gint_info(gint_info_.get()); -#endif - - // 7) For each atom, calculate the adjacent atoms in different cells - // and allocate the space for H(R) and S(R). - // If k point is used here, allocate HlocR after atom_arrange. - this->RA.for_2d(ucell, this->gd, this->pv, PARAM.globalv.gamma_only_local, orb_.cutoffs()); - - // 8) initialize the Hamiltonian operators - // if atom moves, then delete old pointer and add a new one - if (this->p_hamilt != nullptr) - { - delete this->p_hamilt; - this->p_hamilt = nullptr; - } - if (this->p_hamilt == nullptr) - { - elecstate::DensityMatrix* DM = dynamic_cast*>(this->pelec)->get_DM(); - - this->p_hamilt = new hamilt::HamiltLCAO( - PARAM.globalv.gamma_only_local ? &(this->GG) : nullptr, - PARAM.globalv.gamma_only_local ? nullptr : &(this->GK), - ucell, - this->gd, - &this->pv, - this->pelec->pot, - this->kv, - two_center_bundle_, - orb_, - DM -#ifdef __MLALGO - , - &this->ld -#endif -#ifdef __EXX - , - istep, - GlobalC::exx_info.info_ri.real_number ? &this->exd->two_level_step : &this->exc->two_level_step, - GlobalC::exx_info.info_ri.real_number ? &this->exd->get_Hexxs() : nullptr, - GlobalC::exx_info.info_ri.real_number ? nullptr : &this->exc->get_Hexxs() -#endif - ); - } - - - - -#ifdef __MLALGO - // 9) for each ionic step, the overlap must be rebuilt - // since it depends on ionic positions - if (PARAM.globalv.deepks_setorb) - { - const Parallel_Orbitals* pv = &this->pv; - // allocate , phialpha is different every ion step, so it is allocated here - DeePKS_domain::allocate_phialpha(PARAM.inp.cal_force, ucell, orb_, this->gd, pv, this->ld.phialpha); - // build and save at beginning - DeePKS_domain::build_phialpha(PARAM.inp.cal_force, - ucell, - orb_, - this->gd, - pv, - *(two_center_bundle_.overlap_orb_alpha), - this->ld.phialpha); - - if (PARAM.inp.deepks_out_unittest) - { - DeePKS_domain::check_phialpha(PARAM.inp.cal_force, - ucell, - orb_, - this->gd, - pv, - this->ld.phialpha, - GlobalV::MY_RANK); - } - } -#endif - - // 10) prepare sc calculation - if (PARAM.inp.sc_mag_switch) - { - spinconstrain::SpinConstrain& sc = spinconstrain::SpinConstrain::getScInstance(); - sc.init_sc(PARAM.inp.sc_thr, - PARAM.inp.nsc, - PARAM.inp.nsc_min, - PARAM.inp.alpha_trial, - PARAM.inp.sccut, - PARAM.inp.sc_drop_thr, - ucell, - &(this->pv), - PARAM.inp.nspin, - this->kv, - this->p_hamilt, - this->psi, - this->pelec); - } - - // 11) set xc type before the first cal of xc in pelec->init_scf - // Peize Lin add 2016-12-03 -#ifdef __EXX - if (PARAM.inp.calculation != "nscf") - { - if (GlobalC::exx_info.info_ri.real_number) - { - this->exd->exx_beforescf(istep, this->kv, *this->p_chgmix, ucell, orb_); - } - else - { - this->exc->exx_beforescf(istep, this->kv, *this->p_chgmix, ucell, orb_); - } - } -#endif - - // 12) init_scf, should be before_scf? mohan add 2025-03-10 - this->pelec->init_scf(istep, ucell, this->Pgrid, this->sf.strucFac, this->locpp.numeric, ucell.symm); - - // 13) initalize DMR - // DMR should be same size with Hamiltonian(R) - dynamic_cast*>(this->pelec) - ->get_DM() - ->init_DMR(*(dynamic_cast*>(this->p_hamilt)->getHR())); - -#ifdef __MLALGO - // initialize DMR of DeePKS - this->ld.init_DMR(ucell, orb_, this->pv, this->gd); -#endif - - // 14) two cases are considered: - // 1. DMK in DensityMatrix is not empty (istep > 0), then DMR is initialized by DMK - // 2. DMK in DensityMatrix is empty (istep == 0), then DMR is initialized by zeros - if (istep > 0) - { - dynamic_cast*>(this->pelec)->get_DM()->cal_DMR(); - } - - // 15) the electron charge density should be symmetrized, - // here is the initialization - Symmetry_rho srho; - for (int is = 0; is < PARAM.inp.nspin; is++) - { - srho.begin(is, this->chr, this->pw_rho, ucell.symm); - } - - // 16) why we need to set this sentence? mohan add 2025-03-10 - this->p_hamilt->non_first_scf = istep; - - // 17) update of RDMFT, added by jghan - if (PARAM.inp.rdmft == true) - { - // necessary operation of these parameters have be done with p_esolver->Init() in source/source_main/driver_run.cpp - rdmft_solver.update_ion(ucell, - *(this->pw_rho), - this->locpp.vloc, - this->sf.strucFac); - } - - ModuleBase::timer::tick("ESolver_KS_LCAO", "before_scf"); - return; -} - -template class ESolver_KS_LCAO; -template class ESolver_KS_LCAO, double>; -template class ESolver_KS_LCAO, std::complex>; -} // namespace ModuleESolver diff --git a/source/source_esolver/lcao_others.cpp b/source/source_esolver/lcao_others.cpp index 2cc85ca253..f720493e75 100644 --- a/source/source_esolver/lcao_others.cpp +++ b/source/source_esolver/lcao_others.cpp @@ -1,39 +1,32 @@ -#include "source_lcao/hamilt_lcao.h" -#include "source_lcao/module_dftu/dftu.h" #include "source_esolver/esolver_ks_lcao.h" #include "source_estate/cal_ux.h" #include "source_estate/module_charge/symmetry_rho.h" -#include "source_pw/module_pwdft/global.h" -// -#include "source_io/berryphase.h" -#include "source_io/get_pchg_lcao.h" -#include "source_io/get_wf_lcao.h" -#include "source_io/to_wannier90_lcao.h" -#include "source_io/to_wannier90_lcao_in_pw.h" -#include "source_io/write_HS_R.h" -#include "source_io/module_parameter/parameter.h" +#include "source_lcao/hamilt_lcao.h" +#include "source_lcao/module_dftu/dftu.h" +#include "source_base/formatter.h" #include "source_base/timer.h" #include "source_cell/module_neighbor/sltk_atom_arrange.h" #include "source_cell/module_neighbor/sltk_grid_driver.h" -#ifdef __MLALGO -#include "source_lcao/module_deepks/LCAO_deepks.h" -#endif +#include "source_estate/elecstate_lcao.h" +#include "source_estate/module_dm/cal_dm_psi.h" +#include "source_io/module_unk/berryphase.h" +#include "source_io/module_chgpot/get_pchg_lcao.h" +#include "source_io/module_wf/get_wf_lcao.h" +#include "source_io/module_parameter/parameter.h" +#include "source_io/module_wf/read_wfc_nao.h" +#include "source_io/module_hs/write_HS_R.h" +#include "source_io/module_chgpot/write_elecstat_pot.h" #include "source_lcao/LCAO_domain.h" +#include "source_lcao/module_deltaspin/spin_constrain.h" #include "source_lcao/module_operator_lcao/op_exx_lcao.h" #include "source_lcao/module_operator_lcao/operator_lcao.h" -#include "source_lcao/module_deltaspin/spin_constrain.h" -#include "source_io/read_wfc_nao.h" -#include "source_io/write_elecstat_pot.h" -#include "source_base/formatter.h" -#include "source_estate/elecstate_lcao.h" -#include "source_estate/module_dm/cal_dm_psi.h" #ifdef __EXX -#include "source_io/restart_exx_csr.h" +#include "source_io/module_restart/restart_exx_csr.h" #endif // mohan add 2025-03-06 -#include "source_io/cal_test.h" +#include "source_io/module_output/cal_test.h" namespace ModuleESolver { @@ -95,66 +88,22 @@ void ESolver_KS_LCAO::others(UnitCell& ucell, const int istep) PARAM.inp.test_atom_input); // (3) Periodic condition search for each grid. -#ifdef __OLD_GINT - double dr_uniform = 0.001; - std::vector rcuts; - std::vector> psi_u; - std::vector> dpsi_u; - std::vector> d2psi_u; - - Gint_Tools::init_orb(dr_uniform, rcuts, ucell, orb_, psi_u, dpsi_u, d2psi_u); - this->GridT.set_pbc_grid(this->pw_rho->nx, - this->pw_rho->ny, - this->pw_rho->nz, - this->pw_big->bx, - this->pw_big->by, - this->pw_big->bz, - this->pw_big->nbx, - this->pw_big->nby, - this->pw_big->nbz, - this->pw_big->nbxx, - this->pw_big->nbzp_start, - this->pw_big->nbzp, - this->pw_rho->ny, - this->pw_rho->nplane, - this->pw_rho->startz_current, - ucell, - this->gd, - dr_uniform, - rcuts, - psi_u, - dpsi_u, - d2psi_u, - PARAM.inp.nstream); - - psi_u.clear(); - psi_u.shrink_to_fit(); - dpsi_u.clear(); - dpsi_u.shrink_to_fit(); - d2psi_u.clear(); - d2psi_u.shrink_to_fit(); - // prepare grid in Gint - LCAO_domain::grid_prepare(this->GridT, this->GG, this->GK, ucell, orb_, *this->pw_rho, *this->pw_big); -#else - gint_info_.reset( - new ModuleGint::GintInfo( - this->pw_big->nbx, - this->pw_big->nby, - this->pw_big->nbz, - this->pw_rho->nx, - this->pw_rho->ny, - this->pw_rho->nz, - 0, - 0, - this->pw_big->nbzp_start, - this->pw_big->nbx, - this->pw_big->nby, - this->pw_big->nbzp, - orb_.Phi, - ucell, - this->gd)); + gint_info_.reset(new ModuleGint::GintInfo(this->pw_big->nbx, + this->pw_big->nby, + this->pw_big->nbz, + this->pw_rho->nx, + this->pw_rho->ny, + this->pw_rho->nz, + 0, + 0, + this->pw_big->nbzp_start, + this->pw_big->nbx, + this->pw_big->nby, + this->pw_big->nbzp, + orb_.Phi, + ucell, + this->gd)); ModuleGint::Gint::set_gint_info(gint_info_.get()); -#endif // (2)For each atom, calculate the adjacent atoms in different cells // and allocate the space for H(R) and S(R). @@ -168,48 +117,8 @@ void ESolver_KS_LCAO::others(UnitCell& ucell, const int istep) // this information is used to calculate // the force. - // init psi - if (this->psi == nullptr) - { - int nsk = 0; - int ncol = 0; - if (PARAM.globalv.gamma_only_local) - { - nsk = PARAM.inp.nspin; - ncol = this->pv.ncol_bands; - if (PARAM.inp.ks_solver == "genelpa" || PARAM.inp.ks_solver == "elpa" || PARAM.inp.ks_solver == "lapack" - || PARAM.inp.ks_solver == "pexsi" || PARAM.inp.ks_solver == "cusolver" - || PARAM.inp.ks_solver == "cusolvermp") - { - ncol = this->pv.ncol; - } - } - else - { - nsk = this->kv.get_nks(); -#ifdef __MPI - ncol = this->pv.ncol_bands; -#else - ncol = PARAM.inp.nbands; -#endif - } - this->psi = new psi::Psi(nsk, ncol, this->pv.nrow, this->kv.ngk, true); - } - - // init wfc from file - if (istep == 0 && PARAM.inp.init_wfc == "file") - { - if (!ModuleIO::read_wfc_nao(PARAM.globalv.global_readin_dir, - this->pv, - *(this->psi), - this->pelec, - this->pelec->klist->ik2iktot, - this->pelec->klist->get_nkstot(), - PARAM.inp.nspin)) - { - ModuleBase::WARNING_QUIT("ESolver_KS_LCAO::others", "read wfc nao failed"); - } - } + // init psi deleted by taoni 2026-01-23 + // don't need to since initialized in LCAO_domain::set_psi_occ_dm_chg in before_all_runners // init Hamiltonian if (this->p_hamilt != nullptr) @@ -219,61 +128,24 @@ void ESolver_KS_LCAO::others(UnitCell& ucell, const int istep) } if (this->p_hamilt == nullptr) { - elecstate::DensityMatrix* DM = dynamic_cast*>(this->pelec)->get_DM(); - this->p_hamilt = new hamilt::HamiltLCAO( - PARAM.globalv.gamma_only_local ? &(this->GG) : nullptr, - PARAM.globalv.gamma_only_local ? nullptr : &(this->GK), - ucell, - this->gd, - &this->pv, - this->pelec->pot, - this->kv, - two_center_bundle_, - orb_, - DM -#ifdef __MLALGO - , - &this->ld -#endif -#ifdef __EXX - , - istep, - GlobalC::exx_info.info_ri.real_number ? &this->exd->two_level_step : &this->exc->two_level_step, - GlobalC::exx_info.info_ri.real_number ? &this->exd->get_Hexxs() : nullptr, - GlobalC::exx_info.info_ri.real_number ? nullptr : &this->exc->get_Hexxs() -#endif - ); + this->p_hamilt = new hamilt::HamiltLCAO(ucell, + this->gd, + &this->pv, + this->pelec->pot, + this->kv, + two_center_bundle_, + orb_, + this->dmat.dm, + &this->dftu, + this->deepks, + istep, + this->exx_nao); } -#ifdef __MLALGO // for each ionic step, the overlap must be rebuilt // since it depends on ionic positions - if (PARAM.globalv.deepks_setorb) - { - const Parallel_Orbitals* pv = &this->pv; - // allocate , phialpha is different every ion step, so it is allocated here - DeePKS_domain::allocate_phialpha(PARAM.inp.cal_force, ucell, orb_, this->gd, pv, this->ld.phialpha); - // build and save at beginning - DeePKS_domain::build_phialpha(PARAM.inp.cal_force, - ucell, - orb_, - this->gd, - pv, - *(two_center_bundle_.overlap_orb_alpha), - this->ld.phialpha); + this->deepks.build_overlap(ucell, orb_, pv, gd, *(two_center_bundle_.overlap_orb_alpha), PARAM.inp); - if (PARAM.inp.deepks_out_unittest) - { - DeePKS_domain::check_phialpha(PARAM.inp.cal_force, - ucell, - orb_, - this->gd, - pv, - this->ld.phialpha, - GlobalV::MY_RANK); - } - } -#endif if (PARAM.inp.sc_mag_switch) { spinconstrain::SpinConstrain& sc = spinconstrain::SpinConstrain::getScInstance(); @@ -289,6 +161,7 @@ void ESolver_KS_LCAO::others(UnitCell& ucell, const int istep) this->kv, this->p_hamilt, this->psi, + this->dmat.dm, this->pelec); } @@ -299,7 +172,7 @@ void ESolver_KS_LCAO::others(UnitCell& ucell, const int istep) elecstate::cal_ux(ucell); // pelec should be initialized before these calculations - this->pelec->init_scf(istep, ucell, this->Pgrid, this->sf.strucFac, this->locpp.numeric, ucell.symm); + this->pelec->init_scf(ucell, this->Pgrid, this->sf.strucFac, this->locpp.numeric, ucell.symm); // self consistent calculations for electronic ground state if (cal_type == "get_pchg") @@ -308,8 +181,7 @@ void ESolver_KS_LCAO::others(UnitCell& ucell, const int istep) Get_pchg_lcao get_pchg(this->psi, &(this->pv)); if (PARAM.globalv.gamma_only_local) { - get_pchg.begin(this->GG, - this->chr.rho, + get_pchg.begin(this->chr.rho, this->pelec->wg, this->pelec->eferm.get_all_ef(), this->pw_rhod->nrxx, @@ -326,8 +198,7 @@ void ESolver_KS_LCAO::others(UnitCell& ucell, const int istep) } else { - get_pchg.begin(this->GK, - this->chr.rho, + get_pchg.begin(this->chr.rho, this->chr.rhog, this->pelec->wg, this->pelec->eferm.get_all_ef(), @@ -359,7 +230,6 @@ void ESolver_KS_LCAO::others(UnitCell& ucell, const int istep) this->pw_wfc, this->Pgrid, this->pv, - this->GG, PARAM.inp.out_wfc_pw, this->kv, PARAM.inp.nelec, @@ -378,7 +248,6 @@ void ESolver_KS_LCAO::others(UnitCell& ucell, const int istep) this->pw_wfc, this->Pgrid, this->pv, - this->GK, PARAM.inp.out_wfc_pw, this->kv, PARAM.inp.nelec, diff --git a/source/source_esolver/pw_others.cpp b/source/source_esolver/pw_others.cpp index 3df5f48432..49f7465b46 100644 --- a/source/source_esolver/pw_others.cpp +++ b/source/source_esolver/pw_others.cpp @@ -1,46 +1,13 @@ #include "esolver_ks_pw.h" - -#include "source_base/global_variable.h" -#include "source_pw/module_pwdft/elecond.h" -#include "source_io/input_conv.h" -#include "source_io/output_log.h" - -#include - -//--------------temporary---------------------------- -#include "source_estate/module_charge/symmetry_rho.h" -#include "source_estate/occupy.h" -#include "source_hamilt/module_ewald/H_Ewald_pw.h" -#include "source_pw/module_pwdft/global.h" -#include "source_io/print_info.h" -//-----force------------------- -#include "source_pw/module_pwdft/forces.h" -//-----stress------------------ -#include "source_pw/module_pwdft/stress_pw.h" -//--------------------------------------------------- #include "source_base/memory.h" #include "source_base/module_device/device.h" -#include "source_estate/elecstate_pw.h" -#include "source_hamilt/module_vdw/vdw.h" -#include "source_pw/module_pwdft/hamilt_pw.h" -#include "source_hsolver/diago_iter_assist.h" -#include "source_hsolver/hsolver_pw.h" -#include "source_hsolver/kernels/dngvd_op.h" -#include "source_base/kernels/math_kernel_op.h" -#include "source_io/berryphase.h" -#include "source_io/numerical_basis.h" -#include "source_io/numerical_descriptor.h" -#include "source_io/to_wannier90_pw.h" -#include "source_io/winput.h" -#include "source_io/write_elecstat_pot.h" -#include "source_io/module_parameter/parameter.h" +#include "source_io/module_bessel/numerical_basis.h" +#include "source_io/module_bessel/numerical_descriptor.h" -#include -#include #include "source_base/formatter.h" // mohan add 2025-03-06 -#include "source_io/cal_test.h" +#include "source_io/module_output/cal_test.h" namespace ModuleESolver { @@ -65,7 +32,7 @@ void ESolver_KS_PW::others(UnitCell& ucell, const int istep) { Numerical_Descriptor nc; nc.output_descriptor(ucell, - this->psi[0], + *(this->stp.psi_cpu), PARAM.inp.bessel_descriptor_lmax, PARAM.inp.bessel_descriptor_rcut, PARAM.inp.bessel_descriptor_tolerence, diff --git a/source/source_esolver/pw_setup.cpp b/source/source_esolver/pw_setup.cpp deleted file mode 100644 index 14fb66347e..0000000000 --- a/source/source_esolver/pw_setup.cpp +++ /dev/null @@ -1,52 +0,0 @@ -#include "pw_setup.h" - -// To get POOL_WORLD -#include "source_base/parallel_comm.h" -// Print information -#include "source_io/print_info.h" - -void ModuleESolver::pw_setup(const Input_para& inp, - const UnitCell& ucell, - const ModulePW::PW_Basis& pw_rho, - K_Vectors& kv, - ModulePW::PW_Basis_K& pw_wfc) -{ - ModuleBase::TITLE("ModuleESolver", "pw_setup"); - - //! new plane wave basis, fft grids, etc. -#ifdef __MPI - pw_wfc.initmpi(GlobalV::NPROC_IN_POOL, GlobalV::RANK_IN_POOL, POOL_WORLD); -#endif - - pw_wfc.initgrids(inp.ref_cell_factor * ucell.lat0, - ucell.latvec, - pw_rho.nx, - pw_rho.ny, - pw_rho.nz); - - pw_wfc.initparameters(false, inp.ecutwfc, kv.get_nks(), kv.kvec_d.data()); - -#ifdef __MPI - if (inp.pw_seed > 0) - { - MPI_Allreduce(MPI_IN_PLACE, &pw_wfc.ggecut, 1, MPI_DOUBLE, MPI_MAX, MPI_COMM_WORLD); - } - // qianrui add 2021-8-13 to make different kpar parameters can get the same - // results -#endif - - pw_wfc.fft_bundle.initfftmode(inp.fft_mode); - pw_wfc.setuptransform(); - - //! initialize the number of plane waves for each k point - for (int ik = 0; ik < kv.get_nks(); ++ik) - { - kv.ngk[ik] = pw_wfc.npwk[ik]; - } - - pw_wfc.collect_local_pw(inp.erf_ecut, inp.erf_height, inp.erf_sigma); - - ModuleIO::print_wfcfft(inp, pw_wfc, GlobalV::ofs_running); - -} - diff --git a/source/source_esolver/pw_setup.h b/source/source_esolver/pw_setup.h deleted file mode 100644 index 8f1cd86af4..0000000000 --- a/source/source_esolver/pw_setup.h +++ /dev/null @@ -1,26 +0,0 @@ -#ifndef PW_SETUP_H -#define PW_SETUP_H - -//! Input parameters -#include "source_io/module_parameter/parameter.h" -//! Unit cell information -#include "source_cell/unitcell.h" -//! Plane wave basis -#include "source_basis/module_pw/pw_basis.h" -//! K points in Brillouin zone -#include "source_cell/klist.h" -//! Plane wave basis set for k points -#include "source_basis/module_pw/pw_basis_k.h" - -namespace ModuleESolver -{ - -void pw_setup(const Input_para& inp, - const UnitCell& ucell, - const ModulePW::PW_Basis& pw_rho, - K_Vectors& kv, - ModulePW::PW_Basis_K& pw_wfc); - -} - -#endif diff --git a/source/source_esolver/rho_restart.cpp b/source/source_esolver/rho_restart.cpp deleted file mode 100644 index bd7497f34b..0000000000 --- a/source/source_esolver/rho_restart.cpp +++ /dev/null @@ -1,147 +0,0 @@ -#include "rho_restart.h" - -void ModuleESolver::rho_restart(const Input_para& inp, - const UnitCell& ucell, - const elecstate::ElecState& elec, - const int nrxx, // originally written as pw_rhod->nrxx - const int iter, // SCF iteration index - const double& scf_thr, - const double& scf_ene_thr, - double& drho, // not sure how this is changed in this function - Charge_Mixing& chr_mix, - Charge &chr, - bool &conv_esolver, - bool &oscillate_esolver) -{ - ModuleBase::TITLE("ModuleESolver", "rho_restart"); - - // mixing will restart once if drho is smaller than inp.mixing_restart - const double restart_thr = inp.mixing_restart; - - // ks_run means this is KSDFT - if (PARAM.globalv.ks_run) - { - //-------------------------------------------------------- - // step1: determine mixing_restart_step - //-------------------------------------------------------- - // charge mixing restarts at chgmix.mixing_restart steps - if (drho <= restart_thr - && restart_thr > 0.0 - && chgmix.mixing_restart_step > iter) - { - chgmix.mixing_restart_step = iter + 1; - } - - - //-------------------------------------------------------- - // step2: determine density oscillation - //-------------------------------------------------------- - // if density oscillation is detected, SCF will stop - if (inp.scf_os_stop) - { - oscillate_esolver = chgmix.if_scf_oscillate(iter, - drho, - inp.scf_os_ndim, - inp.scf_os_thr); - } - - //-------------------------------------------------------- - // step3: determine convergence of SCF: conv_esolver - //-------------------------------------------------------- - // drho will be 0 at the chgmix.mixing_restart step, - // which is not ground state - bool is_mixing_restart_step = (iter == chgmix.mixing_restart_step); - bool is_restart_thr_positive = (restart_thr > 0.0); - bool is_restart_condition_met = is_mixing_restart_step && is_restart_thr_positive; - bool not_restart_step =!is_restart_condition_met; - - // SCF will continue if U is not converged for uramping calculation - bool is_U_converged = true; - - // to avoid unnecessary dependence on dft+u, refactor is needed -#ifdef __LCAO - if (inp.dft_plus_u) - { - is_U_converged = GlobalC::dftu.u_converged(); - } -#endif - - conv_esolver = (drho < scf_thr && not_restart_step && is_U_converged); - - //-------------------------------------------------------- - // step4: determine conv_esolver if energy threshold is - // used in SCF - //-------------------------------------------------------- - if (scf_ene_thr > 0.0) - { - // calculate energy of output charge density - this->update_pot(ucell, istep, iter, conv_esolver); - - // '2' means Kohn-Sham functional - elec.cal_energies(2); - - // now, etot_old is the energy of input density, while etot is the energy of output density - elec.f_en.etot_delta = elec.f_en.etot - elec.f_en.etot_old; - - // output etot_delta - GlobalV::ofs_running << " DeltaE_womix = " - << elec.f_en.etot_delta * ModuleBase::Ry_to_eV << " eV" - << std::endl; - - // only check when density is converged - if (iter > 1 && conv_esolver == 1) - { - // update the convergence flag - conv_esolver - = (std::abs(elec.f_en.etot_delta * ModuleBase::Ry_to_eV) < scf_ene_thr); - } - } - - //-------------------------------------------------------- - // If drho < hsolver_error in the first iter or - // drho < scf_thr, we do nothing and do not change rho. - //-------------------------------------------------------- - if (drho < hsolver_error - || conv_esolver // SCF has been converged - || inp.calculation == "nscf") // nscf calculations, do not change rho - { - if (drho < hsolver_error) - { - GlobalV::ofs_warning << " drho < hsolver_error, keep " - "charge density unchanged." - << std::endl; - } - } - else - { - // mixing will restart after chgmix.mixing_restart steps - if (restart_thr > 0.0 - && iter == chgmix.mixing_restart_step - 1 - && drho <= restart_thr) - { - // do not mix charge density - } - else - { - // mix charge density (rho) - chgmix.mix_rho(&chr); - } - - // renormalize rho in R-space would induce error in G space - if (inp.scf_thr_type == 2) - { - chr.renormalize_rho(); - } - } - } - -#ifdef __MPI - // bcast drho in BP_WORLD (Band parallel world) - MPI_Bcast(&drho, 1, MPI_DOUBLE, 0, BP_WORLD); - - // be careful! conv_esolver is bool, not double !! Maybe a bug 20250302 by mohan - MPI_Bcast(&conv_esolver, 1, MPI_DOUBLE, 0, BP_WORLD); - MPI_Bcast(chr.rho[0], nrxx, MPI_DOUBLE, 0, BP_WORLD); -#endif - -} diff --git a/source/source_esolver/test/CMakeLists.txt b/source/source_esolver/test/CMakeLists.txt index c1e94abb70..38506e2ea0 100644 --- a/source/source_esolver/test/CMakeLists.txt +++ b/source/source_esolver/test/CMakeLists.txt @@ -4,7 +4,7 @@ remove_definitions(-D__LCAO) install(DIRECTORY support DESTINATION ${CMAKE_CURRENT_BINARY_DIR}) AddTest( - TARGET esolver_dp_test + TARGET MODULE_ESOLVER_esolver_dp_test LIBS parameter ${math_libs} base device - SOURCES esolver_dp_test.cpp ../esolver_dp.cpp ../../source_io/cif_io.cpp ../../source_io/output_log.cpp + SOURCES esolver_dp_test.cpp ../esolver_dp.cpp ../../source_io/module_output/cif_io.cpp ../../source_io/module_output/output_log.cpp ) diff --git a/source/source_esolver/test/for_test.h b/source/source_esolver/test/for_test.h index c8defbb8e7..ba8c9bb415 100644 --- a/source/source_esolver/test/for_test.h +++ b/source/source_esolver/test/for_test.h @@ -71,4 +71,8 @@ pseudo::pseudo() pseudo::~pseudo() { } -#endif \ No newline at end of file +SepPot::SepPot(){} +SepPot::~SepPot(){} +Sep_Cell::Sep_Cell() noexcept {} +Sep_Cell::~Sep_Cell() noexcept {} +#endif diff --git a/source/source_estate/CMakeLists.txt b/source/source_estate/CMakeLists.txt index 0bdd120879..361df41c8b 100644 --- a/source/source_estate/CMakeLists.txt +++ b/source/source_estate/CMakeLists.txt @@ -13,9 +13,14 @@ list(APPEND objects module_pot/H_Hartree_pw.cpp module_pot/pot_xc.cpp module_pot/pot_local.cpp - module_pot/pot_local_paw.cpp module_pot/potential_new.cpp module_pot/potential_types.cpp + module_pot/pot_ml_exx.cpp + module_pot/pot_ml_exx_label.cpp + module_pot/pot_sep.cpp + module_pot/pot_xc_fdm.cpp + module_pot/pot_cosikr.cpp + module_charge/chgmixing.cpp module_charge/charge.cpp module_charge/charge_init.cpp module_charge/charge_mpi.cpp @@ -36,13 +41,15 @@ list(APPEND objects cal_nelec_nband.cpp read_pseudo.cpp cal_wfc.cpp + setup_estate_pw.cpp + update_pot.cpp ) if(ENABLE_LCAO) list(APPEND objects elecstate_lcao.cpp - elecstate_lcao_cal_tau.cpp module_pot/H_TDDFT_pw.cpp + module_dm/init_dm.cpp module_dm/density_matrix.cpp module_dm/density_matrix_io.cpp module_dm/cal_dm_psi.cpp @@ -69,4 +76,4 @@ endif() if(ENABLE_LCAO) add_subdirectory(module_dm) -endif() \ No newline at end of file +endif() diff --git a/source/source_estate/cal_ux.cpp b/source/source_estate/cal_ux.cpp index 5175e48d5a..f7ea856386 100644 --- a/source/source_estate/cal_ux.cpp +++ b/source/source_estate/cal_ux.cpp @@ -93,7 +93,7 @@ void cal_ux(UnitCell& ucell) { bool judge_parallel(double a[3], ModuleBase::Vector3 b) { bool jp = false; - double cross; + double cross = 0.0; cross = pow((a[1] * b.z - a[2] * b.y), 2) + pow((a[2] * b.x - a[0] * b.z), 2) + pow((a[0] * b.y - a[1] * b.x), 2); diff --git a/source/source_estate/elecstate.cpp b/source/source_estate/elecstate.cpp index 72ac36f06b..5e2c6a8ced 100644 --- a/source/source_estate/elecstate.cpp +++ b/source/source_estate/elecstate.cpp @@ -27,8 +27,7 @@ void ElecState::init_nelec_spin() } } -void ElecState::init_scf(const int istep, - const UnitCell& ucell, +void ElecState::init_scf(const UnitCell& ucell, const Parallel_Grid& pgrid, const ModuleBase::ComplexMatrix& strucfac, const bool* numeric, @@ -38,31 +37,21 @@ void ElecState::init_scf(const int istep, //! core correction potential. this->charge->set_rho_core(ucell,strucfac, numeric); - //! other effective potentials need charge density, - // choose charge density from ionic step 0. - if (istep == 0) - { - this->charge->init_rho(this->eferm,ucell, pgrid, strucfac, symm, (const void*)this->klist, wfcpw); - this->charge->check_rho(); // check the rho - } - //! renormalize the charge density this->charge->renormalize_rho(); //! initialize the potential - this->pot->init_pot(istep, this->charge); + this->pot->init_pot(this->charge); } -void ElecState::init_ks(Charge* chg_in, // pointer for class Charge +void ElecState::init_ks(Charge* chr_in, // pointer for class Charge const K_Vectors* klist_in, int nk_in, - ModulePW::PW_Basis* rhopw_in, const ModulePW::PW_Basis_Big* bigpw_in) { - this->charge = chg_in; + this->charge = chr_in; this->klist = klist_in; - this->charge->set_rhopw(rhopw_in); this->bigpw = bigpw_in; // init nelec_spin with nelec and nupdown this->init_nelec_spin(); diff --git a/source/source_estate/elecstate.h b/source/source_estate/elecstate.h index bdf5f9cc77..888b3b95dc 100644 --- a/source/source_estate/elecstate.h +++ b/source/source_estate/elecstate.h @@ -17,9 +17,9 @@ class ElecState ElecState() { } - ElecState(Charge* charge_in, ModulePW::PW_Basis* rhopw_in, ModulePW::PW_Basis_Big* bigpw_in) + ElecState(Charge* chr_in, ModulePW::PW_Basis* rhopw_in, ModulePW::PW_Basis_Big* bigpw_in) { - this->charge = charge_in; + this->charge = chr_in; this->charge->set_rhopw(rhopw_in); this->bigpw = bigpw_in; this->eferm.two_efermi = PARAM.globalv.two_fermi; @@ -32,10 +32,9 @@ class ElecState this->pot = nullptr; } } - void init_ks(Charge* chg_in, // pointer for class Charge + void init_ks(Charge* chr_in, // pointer for class Charge const K_Vectors* klist_in, int nk_in, // number of k points - ModulePW::PW_Basis* rhopw_in, const ModulePW::PW_Basis_Big* bigpw_in); // return current electronic density rho, as a input for constructing Hamiltonian @@ -51,8 +50,6 @@ class ElecState { return; } - // virtual void updateRhoK(const psi::Psi> &psi) = 0; - // virtual void updateRhoK(const psi::Psi &psi)=0 virtual void cal_tau(const psi::Psi>& psi) { return; @@ -77,12 +74,9 @@ class ElecState return; } - - // use occupied weights from INPUT and skip calculate_weights // mohan updated on 2024-06-08 - // if nupdown is not 0(TWO_EFERMI case), // nelec_spin will be fixed and weights will be constrained void init_nelec_spin(); @@ -103,14 +97,12 @@ class ElecState /** * @brief Init rho_core, init rho, renormalize rho, init pot * - * @param istep i-th step * @param ucell unit cell * @param strucfac structure factor * @param symm symmetry * @param wfcpw PW basis for wave function if needed */ - void init_scf(const int istep, - const UnitCell& ucell, + void init_scf(const UnitCell& ucell, const Parallel_Grid& pgrid, const ModuleBase::ComplexMatrix& strucfac, const bool* numeric, @@ -119,7 +111,6 @@ class ElecState std::string classname = "elecstate"; int iter = 0; ///< scf iteration - double omega = 0.0; ///< volume Potential* pot = nullptr; ///< pointer to potential Charge* charge = nullptr; ///< pointer to charge density const K_Vectors* klist = nullptr; ///< pointer to k points lists @@ -155,7 +146,7 @@ class ElecState double get_local_pp_energy(); fenergy f_en; ///< energies contribute to the total free energy - efermi eferm; ///< fermi energies + Efermi eferm; ///< fermi energies // below defines the bandgap: diff --git a/source/source_estate/elecstate_energy.cpp b/source/source_estate/elecstate_energy.cpp index 471dd0df00..ea8687f853 100644 --- a/source/source_estate/elecstate_energy.cpp +++ b/source/source_estate/elecstate_energy.cpp @@ -5,6 +5,7 @@ #include "source_io/module_parameter/parameter.h" #include +#include namespace elecstate { @@ -12,29 +13,45 @@ namespace elecstate void ElecState::cal_bandgap() { if (this->ekb.nr == 0 || this->ekb.nc == 0) - { // which means no homo and no lumo + { // which means no vbm and no cbm this->bandgap = 0.0; return; } - int nbands = PARAM.inp.nbands; + + int nbands = this->ekb.nc; int nks = this->klist->get_nks(); - double homo = this->ekb(0, 0); - double lumo = this->ekb(0, nbands - 1); + double vbm = -std::numeric_limits::infinity(); // Valence Band Maximum + double cbm = std::numeric_limits::infinity(); // Conduction Band Minimum + const double threshold = 1.0e-5; // threshold to avoid E_gap(k) = 0 for (int ib = 0; ib < nbands; ib++) { for (int ik = 0; ik < nks; ik++) { - if (!(this->ekb(ik, ib) - this->eferm.ef > 1e-5) && homo < this->ekb(ik, ib)) + if (this->ekb(ik, ib) <= this->eferm.ef + threshold && this->ekb(ik, ib) > vbm) { - homo = this->ekb(ik, ib); + vbm = this->ekb(ik, ib); } - if (this->ekb(ik, ib) - this->eferm.ef > 1e-5 && lumo > this->ekb(ik, ib)) + if (this->ekb(ik, ib) > this->eferm.ef + threshold && this->ekb(ik, ib) < cbm) { - lumo = this->ekb(ik, ib); + cbm = this->ekb(ik, ib); } } } - this->bandgap = lumo - homo; + // Assign fermi level to CBM if it's still infinity + if(cbm == std::numeric_limits::infinity()) + { + cbm =this->eferm.ef; + } + // Assign fermi level to VBM if it's still negative infinity + if(vbm ==-std::numeric_limits::infinity()) + { + vbm =this->eferm.ef; + } + #ifdef __MPI + Parallel_Reduce::reduce_max(vbm); + Parallel_Reduce::reduce_min(cbm); + #endif + this->bandgap = cbm - vbm; } /// @brief calculate spin up & down band gap @@ -42,61 +59,87 @@ void ElecState::cal_bandgap() void ElecState::cal_bandgap_updw() { if (this->ekb.nr == 0 || this->ekb.nc == 0) - { // which means no homo and no lumo + { // which means no vbm and no cbm this->bandgap_up = 0.0; this->bandgap_dw = 0.0; return; } - int nbands = PARAM.inp.nbands; + // int nbands = PARAM.inp.nbands; + int nbands = this->ekb.nc; int nks = this->klist->get_nks(); - double homo_up = this->ekb(0, 0); - double lumo_up = this->ekb(0, nbands - 1); - double homo_dw = this->ekb(0, 0); - double lumo_dw = this->ekb(0, nbands - 1); + double vbm_up = -std::numeric_limits::infinity(); + double cbm_up = std::numeric_limits::infinity(); + double vbm_dw = -std::numeric_limits::infinity(); + double cbm_dw = std::numeric_limits::infinity(); + const double threshold = 1.0e-5; for (int ib = 0; ib < nbands; ib++) { for (int ik = 0; ik < nks; ik++) { if (this->klist->isk[ik] == 0) { - if (!(this->ekb(ik, ib) - this->eferm.ef_up > 1e-5) && homo_up < this->ekb(ik, ib)) + if (this->ekb(ik, ib) <= this->eferm.ef_up + threshold && this->ekb(ik, ib) > vbm_up) { - homo_up = this->ekb(ik, ib); + vbm_up = this->ekb(ik, ib); } - if (this->ekb(ik, ib) - this->eferm.ef_up > 1e-5 && lumo_up > this->ekb(ik, ib)) + if (this->ekb(ik, ib) > this->eferm.ef_up + threshold && this->ekb(ik, ib) < cbm_up) { - lumo_up = this->ekb(ik, ib); + cbm_up = this->ekb(ik, ib); } } if (this->klist->isk[ik] == 1) { - if (!(this->ekb(ik, ib) - this->eferm.ef_dw > 1e-5) && homo_dw < this->ekb(ik, ib)) + if (this->ekb(ik, ib) <= this->eferm.ef_dw + threshold && this->ekb(ik, ib) > vbm_dw) { - homo_dw = this->ekb(ik, ib); + vbm_dw = this->ekb(ik, ib); } - if (this->ekb(ik, ib) - this->eferm.ef_dw > 1e-5 && lumo_dw > this->ekb(ik, ib)) + if (this->ekb(ik, ib) > this->eferm.ef_dw + threshold && this->ekb(ik, ib) < cbm_dw) { - lumo_dw = this->ekb(ik, ib); + cbm_dw = this->ekb(ik, ib); } } } } - this->bandgap_up = lumo_up - homo_up; - this->bandgap_dw = lumo_dw - homo_dw; + // Assign fermi level to CBM if it's still infinity + if (cbm_up == std::numeric_limits::infinity()) + { + cbm_up =this->eferm.ef_up; + } + if (cbm_dw == std::numeric_limits::infinity()) + { + cbm_dw =this->eferm.ef_dw; + } + // Assign fermi level to VBM if it's still negative infinity + if(vbm_up ==-std::numeric_limits::infinity()) + { + vbm_up =this->eferm.ef_up; + } + if(vbm_dw ==-std::numeric_limits::infinity()) + { + vbm_dw =this->eferm.ef_dw; + } + #ifdef __MPI + Parallel_Reduce::reduce_max(vbm_up); + Parallel_Reduce::reduce_min(cbm_up); + Parallel_Reduce::reduce_max(vbm_dw); + Parallel_Reduce::reduce_min(cbm_dw); + #endif + this->bandgap_up = cbm_up - vbm_up; + this->bandgap_dw = cbm_dw - vbm_dw; } /// @brief calculate deband double ElecState::cal_delta_eband(const UnitCell& ucell) const { - // out potentials from potential mixing - // total energy and band energy corrections + ModuleBase::timer::tick("ElecState", "cal_delta_eband"); + // out potentials from potential mixing + // total energy and band energy corrections double deband0 = 0.0; - double deband_aux = 0.0; // only potential related with charge is used here for energy correction - // on the fly calculate it here by v_effective - v_fixed - const double* v_eff = this->pot->get_effective_v(0); + // on the fly calculate it here by v_eff - v_fixed + const double* v_eff = this->pot->get_eff_v(0); const double* v_fixed = this->pot->get_fixed_v(); const double* v_ofk = nullptr; const bool v_ofk_flag = (XC_Functional::get_ked_flag()); @@ -105,10 +148,11 @@ double ElecState::cal_delta_eband(const UnitCell& ucell) const { deband_aux -= this->charge->rho[0][ir] * (v_eff[ir] - v_fixed[ir]); } + if (v_ofk_flag) { - v_ofk = this->pot->get_effective_vofk(0); - // cause in the get_effective_vofk, the func will return nullptr + v_ofk = this->pot->get_eff_vofk(0); + // cause in the get_eff_vofk, the func will return nullptr if (v_ofk == nullptr && this->charge->rhopw->nrxx > 0) { ModuleBase::WARNING_QUIT("ElecState::cal_delta_eband", "v_ofk is nullptr"); @@ -121,14 +165,14 @@ double ElecState::cal_delta_eband(const UnitCell& ucell) const if (PARAM.inp.nspin == 2) { - v_eff = this->pot->get_effective_v(1); + v_eff = this->pot->get_eff_v(1); for (int ir = 0; ir < this->charge->rhopw->nrxx; ir++) { deband_aux -= this->charge->rho[1][ir] * (v_eff[ir] - v_fixed[ir]); } if (v_ofk_flag) { - v_ofk = this->pot->get_effective_vofk(1); + v_ofk = this->pot->get_eff_vofk(1); if (v_ofk == nullptr && this->charge->rhopw->nrxx > 0) { ModuleBase::WARNING_QUIT("ElecState::cal_delta_eband", "v_ofk is nullptr"); @@ -143,7 +187,7 @@ double ElecState::cal_delta_eband(const UnitCell& ucell) const { for (int is = 1; is < 4; is++) { - v_eff = this->pot->get_effective_v(is); + v_eff = this->pot->get_eff_v(is); for (int ir = 0; ir < this->charge->rhopw->nrxx; ir++) { deband_aux -= this->charge->rho[is][ir] * v_eff[ir]; @@ -157,17 +201,20 @@ double ElecState::cal_delta_eband(const UnitCell& ucell) const deband0 = deband_aux; #endif - deband0 *= this->omega / this->charge->rhopw->nxyz; + deband0 *= ucell.omega / this->charge->rhopw->nxyz; // \int rho(r) v_{exx}(r) dr = 2 E_{exx}[rho] deband0 -= 2 * this->f_en.exx; // Peize Lin add 2017-10-16 + + ModuleBase::timer::tick("ElecState", "cal_delta_eband"); return deband0; } /// @brief calculate descf double ElecState::cal_delta_escf() const { - ModuleBase::TITLE("energy", "delta_escf"); + ModuleBase::TITLE("ElecState", "cal_delta_escf"); + ModuleBase::timer::tick("ElecState", "cal_delta_escf"); double descf = 0.0; // now rho1 is "mixed" charge density @@ -175,21 +222,21 @@ double ElecState::cal_delta_escf() const // because in "deband" the energy is calculated from "output" charge density, // so here is the correction. // only potential related with charge is used here for energy correction - // on the fly calculate it here by v_effective - v_fixed - const double* v_eff = this->pot->get_effective_v(0); + // on the fly calculate it here by v_eff - v_fixed + const double* v_eff = this->pot->get_eff_v(0); const double* v_fixed = this->pot->get_fixed_v(); const double* v_ofk = nullptr; if (XC_Functional::get_ked_flag()) { - v_ofk = this->pot->get_effective_vofk(0); + v_ofk = this->pot->get_eff_vofk(0); } for (int ir = 0; ir < this->charge->rhopw->nrxx; ir++) { descf -= (this->charge->rho[0][ir] - this->charge->rho_save[0][ir]) * (v_eff[ir] - v_fixed[ir]); if (XC_Functional::get_ked_flag()) { - // cause in the get_effective_vofk, the func will return nullptr + // cause in the get_eff_vofk, the func will return nullptr assert(v_ofk != nullptr); descf -= (this->charge->kin_r[0][ir] - this->charge->kin_r_save[0][ir]) * v_ofk[ir]; } @@ -197,10 +244,10 @@ double ElecState::cal_delta_escf() const if (PARAM.inp.nspin == 2) { - v_eff = this->pot->get_effective_v(1); + v_eff = this->pot->get_eff_v(1); if (XC_Functional::get_ked_flag()) { - v_ofk = this->pot->get_effective_vofk(1); + v_ofk = this->pot->get_eff_vofk(1); } for (int ir = 0; ir < this->charge->rhopw->nrxx; ir++) { @@ -215,7 +262,7 @@ double ElecState::cal_delta_escf() const { for (int is = 1; is < 4; is++) { - v_eff = this->pot->get_effective_v(is); + v_eff = this->pot->get_eff_v(is); for (int ir = 0; ir < this->charge->rhopw->nrxx; ir++) { descf -= (this->charge->rho[is][ir] - this->charge->rho_save[is][ir]) * v_eff[ir]; @@ -229,7 +276,15 @@ double ElecState::cal_delta_escf() const assert(this->charge->rhopw->nxyz > 0); - descf *= this->omega / this->charge->rhopw->nxyz; + descf *= this->charge->rhopw->omega / this->charge->rhopw->nxyz; + +// mohan move the code here, 2025-11-28 +#ifdef __MPI + MPI_Bcast(&descf, 1, MPI_DOUBLE, 0, BP_WORLD); +#endif + + + ModuleBase::timer::tick("ElecState", "cal_delta_escf"); return descf; } @@ -284,6 +339,10 @@ void ElecState::cal_energies(const int type) this->f_en.e_local_pp = get_local_pp_energy(); +#ifdef __MLALGO + this->f_en.ml_exx = this->pot->get_ml_exx_energy(); +#endif + if (type == 1) // Harris-Foulkes functional { this->f_en.calculate_harris(); @@ -294,7 +353,7 @@ void ElecState::cal_energies(const int type) } else { - ModuleBase::WARNING_QUIT("cal_energies", "The form of total energy functional is unknown!"); + ModuleBase::WARNING_QUIT("ElecState::cal_energies", "The form of total energy functional is unknown!"); } } diff --git a/source/source_estate/elecstate_energy_terms.cpp b/source/source_estate/elecstate_energy_terms.cpp index 73abe5f17b..c7bb4b55a5 100644 --- a/source/source_estate/elecstate_energy_terms.cpp +++ b/source/source_estate/elecstate_energy_terms.cpp @@ -4,7 +4,7 @@ #include "source_estate/module_pot/gatefield.h" #include "source_lcao/module_deepks/LCAO_deepks.h" #include "source_lcao/module_deltaspin/spin_constrain.h" -#include "source_lcao/module_dftu/dftu.h" +#include "source_lcao/module_dftu/dftu.h" // mohan add 2025-11-06 namespace elecstate { @@ -36,7 +36,7 @@ double ElecState::get_solvent_model_Acav() double ElecState::get_dftu_energy() { - return GlobalC::dftu.get_energy(); + return Plus_U::get_energy(); } double ElecState::get_local_pp_energy() @@ -45,11 +45,14 @@ double ElecState::get_local_pp_energy() for (int is = 0; is < PARAM.inp.nspin; ++is) { local_pseudopot_energy - += BlasConnector::dot(this->charge->rhopw->nrxx, this->pot->get_fixed_v(), 1, this->charge->rho[is], 1) - * this->charge->rhopw->omega / this->charge->rhopw->nxyz; + += BlasConnector::dot(this->charge->rhopw->nrxx, + this->pot->get_fixed_v(), + 1, + this->charge->rho[is], 1) + * this->charge->rhopw->omega / this->charge->rhopw->nxyz; } - Parallel_Reduce::reduce_all(local_pseudopot_energy); + Parallel_Reduce::reduce_pool(local_pseudopot_energy); return local_pseudopot_energy; } -} // namespace elecstate \ No newline at end of file +} // namespace elecstate diff --git a/source/source_estate/elecstate_exx.cpp b/source/source_estate/elecstate_exx.cpp index b8854de319..addc7a03da 100644 --- a/source/source_estate/elecstate_exx.cpp +++ b/source/source_estate/elecstate_exx.cpp @@ -1,4 +1,5 @@ -#include "source_pw/module_pwdft/global.h" +#include "source_estate/elecstate.h" +#include "source_hamilt/module_xc/exx_info.h" // use GlobalC::exx_info namespace elecstate { @@ -16,4 +17,4 @@ void ElecState::set_exx(const double& Eexx) return; } -} \ No newline at end of file +} diff --git a/source/source_estate/elecstate_lcao.cpp b/source/source_estate/elecstate_lcao.cpp index 0a02774687..ffe81901e7 100644 --- a/source/source_estate/elecstate_lcao.cpp +++ b/source/source_estate/elecstate_lcao.cpp @@ -1,101 +1,18 @@ -#include "elecstate_lcao.h" - -#include "cal_dm.h" +#include "source_estate/elecstate_lcao.h" +#include "source_estate/cal_dm.h" #include "source_base/timer.h" #include "source_estate/module_dm/cal_dm_psi.h" #include "source_hamilt/module_xc/xc_functional.h" #include "source_lcao/module_deltaspin/spin_constrain.h" -#include "source_lcao/module_gint/grid_technique.h" -#include "source_pw/module_pwdft/global.h" #include "source_io/module_parameter/parameter.h" -#include "source_lcao/module_gint/temp_gint/gint_interface.h" +#include "source_lcao/module_gint/gint_interface.h" #include namespace elecstate { -// multi-k case -template <> -void ElecStateLCAO>::psiToRho(const psi::Psi>& psi) -{ - ModuleBase::TITLE("ElecStateLCAO", "psiToRho"); - ModuleBase::timer::tick("ElecStateLCAO", "psiToRho"); - - for (int is = 0; is < PARAM.inp.nspin; is++) - { - ModuleBase::GlobalFunc::ZEROS(this->charge->rho[is], - this->charge->nrxx); // mohan 2009-11-10 - } - - //------------------------------------------------------------ - // calculate the charge density on real space grid. - //------------------------------------------------------------ - - ModuleBase::GlobalFunc::NOTE("Calculate the charge on real space grid!"); -#ifdef __OLD_GINT - this->gint_k->transfer_DM2DtoGrid(this->DM->get_DMR_vector()); // transfer DM2D to DM_grid in gint - Gint_inout inout(this->charge->rho, Gint_Tools::job_type::rho, PARAM.inp.nspin); - this->gint_k->cal_gint(&inout); -#else - ModuleGint::cal_gint_rho(this->DM->get_DMR_vector(), PARAM.inp.nspin, this->charge->rho); -#endif - - if (XC_Functional::get_ked_flag()) - { - this->cal_tau(psi); - } - - this->charge->renormalize_rho(); - - ModuleBase::timer::tick("ElecStateLCAO", "psiToRho"); - return; -} - -// Gamma_only case -template <> -void ElecStateLCAO::psiToRho(const psi::Psi& psi) -{ - ModuleBase::TITLE("ElecStateLCAO", "psiToRho"); - ModuleBase::timer::tick("ElecStateLCAO", "psiToRho"); - - for (int is = 0; is < PARAM.inp.nspin; is++) - { - ModuleBase::GlobalFunc::ZEROS(this->charge->rho[is], - this->charge->nrxx); // mohan 2009-11-10 - } - - //------------------------------------------------------------ - // calculate the charge density on real space grid. - //------------------------------------------------------------ - ModuleBase::GlobalFunc::NOTE("Calculate the charge on real space grid!"); - -#ifdef __OLD_GINT - this->gint_gamma->transfer_DM2DtoGrid(this->DM->get_DMR_vector()); // transfer DM2D to DM_grid in gint - Gint_inout inout(this->charge->rho, Gint_Tools::job_type::rho, PARAM.inp.nspin); - this->gint_gamma->cal_gint(&inout); -#else - ModuleGint::cal_gint_rho(this->DM->get_DMR_vector(), PARAM.inp.nspin, this->charge->rho); -#endif - - if (XC_Functional::get_ked_flag()) - { - this->cal_tau(psi); - } - - this->charge->renormalize_rho(); - - ModuleBase::timer::tick("ElecStateLCAO", "psiToRho"); - return; -} - -template -void ElecStateLCAO::init_DM(const K_Vectors* kv, const Parallel_Orbitals* paraV, const int nspin) -{ - const int nspin_dm = nspin == 2 ? 2 : 1; - this->DM = new DensityMatrix(paraV, nspin_dm, kv->kvec_d, kv->get_nks() / nspin_dm); -} template <> double ElecStateLCAO::get_spin_constrain_energy() @@ -112,11 +29,12 @@ double ElecStateLCAO>::get_spin_constrain_energy() return sc.cal_escon(); } -#ifdef __PEXSI template <> -void ElecStateLCAO::dmToRho(std::vector pexsi_DM, std::vector pexsi_EDM) +void ElecStateLCAO::dm2rho(std::vector pexsi_DM, + std::vector pexsi_EDM, + DensityMatrix* dm) { - ModuleBase::timer::tick("ElecStateLCAO", "dmToRho"); + ModuleBase::timer::tick("ElecStateLCAO", "dm2rho"); int nspin = PARAM.inp.nspin; if (PARAM.inp.nspin == 4) @@ -124,13 +42,15 @@ void ElecStateLCAO::dmToRho(std::vector pexsi_DM, std::vectorget_DM()->pexsi_EDM = pexsi_EDM; +#ifdef __PEXSI + dm->pexsi_EDM = pexsi_EDM; +#endif for (int is = 0; is < nspin; is++) { - this->DM->set_DMK_pointer(is, pexsi_DM[is]); + dm->set_DMK_pointer(is, pexsi_DM[is]); } - DM->cal_DMR(); + dm->cal_DMR(); for (int is = 0; is < PARAM.inp.nspin; is++) { @@ -139,41 +59,30 @@ void ElecStateLCAO::dmToRho(std::vector pexsi_DM, std::vectorgint_gamma->transfer_DM2DtoGrid(this->DM->get_DMR_vector()); // transfer DM2D to DM_grid in gint - Gint_inout inout(this->charge->rho, Gint_Tools::job_type::rho, PARAM.inp.nspin); - this->gint_gamma->cal_gint(&inout); -#else - ModuleGint::cal_gint_rho(this->DM->get_DMR_vector(), PARAM.inp.nspin, this->charge->rho); -#endif + ModuleGint::cal_gint_rho(dm->get_DMR_vector(), PARAM.inp.nspin, this->charge->rho); if (XC_Functional::get_ked_flag()) { for (int is = 0; is < PARAM.inp.nspin; is++) { ModuleBase::GlobalFunc::ZEROS(this->charge->kin_r[0], this->charge->nrxx); } -#ifdef __OLD_GINT - Gint_inout inout1(this->charge->kin_r, Gint_Tools::job_type::tau); - this->gint_gamma->cal_gint(&inout1); -#else - ModuleGint::cal_gint_tau(this->DM->get_DMR_vector(), PARAM.inp.nspin, this->charge->kin_r); -#endif + ModuleGint::cal_gint_tau(dm->get_DMR_vector(), PARAM.inp.nspin, this->charge->kin_r); } this->charge->renormalize_rho(); - ModuleBase::timer::tick("ElecStateLCAO", "dmToRho"); + ModuleBase::timer::tick("ElecStateLCAO", "dm2rho"); return; } template <> -void ElecStateLCAO>::dmToRho(std::vector*> pexsi_DM, - std::vector*> pexsi_EDM) +void ElecStateLCAO>::dm2rho(std::vector*> pexsi_DM, + std::vector*> pexsi_EDM, + DensityMatrix, double>* dm) { ModuleBase::WARNING_QUIT("ElecStateLCAO", "pexsi is not completed for multi-k case"); } -#endif template class ElecStateLCAO; // Gamma_only case template class ElecStateLCAO>; // multi-k case diff --git a/source/source_estate/elecstate_lcao.h b/source/source_estate/elecstate_lcao.h index b56ec31f18..bf1f11e1f7 100644 --- a/source/source_estate/elecstate_lcao.h +++ b/source/source_estate/elecstate_lcao.h @@ -3,8 +3,6 @@ #include "elecstate.h" #include "source_estate/module_dm/density_matrix.h" -#include "source_lcao/module_gint/gint_gamma.h" -#include "source_lcao/module_gint/gint_k.h" #include @@ -17,52 +15,27 @@ class ElecStateLCAO : public ElecState ElecStateLCAO() { } // will be called by ElecStateLCAO_TDDFT - ElecStateLCAO(Charge* chg_in, + ElecStateLCAO(Charge* chr_in, const K_Vectors* klist_in, int nks_in, - Gint_Gamma* gint_gamma_in, // mohan add 2024-04-01 - Gint_k* gint_k_in, // mohan add 2024-04-01 - ModulePW::PW_Basis* rhopw_in, ModulePW::PW_Basis_Big* bigpw_in) { - init_ks(chg_in, klist_in, nks_in, rhopw_in, bigpw_in); - this->gint_gamma = gint_gamma_in; // mohan add 2024-04-01 - this->gint_k = gint_k_in; // mohan add 2024-04-01 + init_ks(chr_in, klist_in, nks_in, bigpw_in); this->classname = "ElecStateLCAO"; } virtual ~ElecStateLCAO() { - if (this->DM != nullptr) - { - delete this->DM; - } } - // void init(Charge* chg_in):charge(chg_in){} override; - - // interface for HSolver to calculate rho from Psi - virtual void psiToRho(const psi::Psi& psi) override; - // virtual void psiToRho(const psi::Psi& psi) override; - // return current electronic density rho, as a input for constructing Hamiltonian - // const double* getRho(int spin) const override; - virtual void cal_tau(const psi::Psi& psi) override; - // update charge density for next scf step // void getNewRho() override; - // initial density matrix - void init_DM(const K_Vectors* kv, const Parallel_Orbitals* paraV, const int nspin); - DensityMatrix* get_DM() const - { - return const_cast*>(this->DM); - } static int out_wfc_lcao; static bool need_psi_grid; double get_spin_constrain_energy() override; -#ifdef __PEXSI // use for pexsi /** @@ -71,22 +44,10 @@ class ElecStateLCAO : public ElecState * @param pexsi_EDM: pointers of energy-weighed density matrix (EDMK) calculated by pexsi, needed by MD, will be * stored in DensityMatrix::pexsi_EDM */ - void dmToRho(std::vector pexsi_DM, std::vector pexsi_EDM); -#endif - - DensityMatrix* DM = nullptr; - - protected: - // calculate electronic charge density on grid points or density matrix in real space - // the consequence charge density rho saved into rho_out, preparing for charge mixing. - // void updateRhoK(const psi::Psi>& psi) ;//override; - // sum over all pools for rho and ebands - // void parallelK(); - // calcualte rho for each k - // void rhoBandK(const psi::Psi>& psi); + void dm2rho(std::vector pexsi_DM, + std::vector pexsi_EDM, + DensityMatrix* dm); - Gint_Gamma* gint_gamma = nullptr; // mohan add 2024-04-01 - Gint_k* gint_k = nullptr; // mohan add 2024-04-01 }; template diff --git a/source/source_estate/elecstate_lcao_cal_tau.cpp b/source/source_estate/elecstate_lcao_cal_tau.cpp deleted file mode 100644 index db85c314fd..0000000000 --- a/source/source_estate/elecstate_lcao_cal_tau.cpp +++ /dev/null @@ -1,49 +0,0 @@ -#include "elecstate_lcao.h" -#include "source_lcao/module_gint/temp_gint/gint_interface.h" - -#include "source_base/timer.h" - -namespace elecstate -{ - -// calculate the kinetic energy density tau, multi-k case -template <> -void ElecStateLCAO>::cal_tau(const psi::Psi>& psi) -{ - ModuleBase::timer::tick("ElecStateLCAO", "cal_tau"); - - for (int is = 0; is < PARAM.inp.nspin; is++) - { - ModuleBase::GlobalFunc::ZEROS(this->charge->kin_r[is], this->charge->nrxx); - } -#ifdef __OLD_GINT - Gint_inout inout1(this->charge->kin_r, Gint_Tools::job_type::tau, PARAM.inp.nspin); - this->gint_k->cal_gint(&inout1); -#else - ModuleGint::cal_gint_tau(this->DM->get_DMR_vector(), PARAM.inp.nspin, this->charge->kin_r); -#endif - ModuleBase::timer::tick("ElecStateLCAO", "cal_tau"); - return; -} - -// calculate the kinetic energy density tau, gamma-only case -template <> -void ElecStateLCAO::cal_tau(const psi::Psi& psi) -{ - ModuleBase::timer::tick("ElecStateLCAO", "cal_tau"); - - for (int is = 0; is < PARAM.inp.nspin; is++) - { - ModuleBase::GlobalFunc::ZEROS(this->charge->kin_r[is], this->charge->nrxx); - } -#ifdef __OLD_GINT - Gint_inout inout1(this->charge->kin_r, Gint_Tools::job_type::tau, PARAM.inp.nspin); - this->gint_gamma->cal_gint(&inout1); -#else - ModuleGint::cal_gint_tau(this->DM->get_DMR_vector(), PARAM.inp.nspin, this->charge->kin_r); -#endif - - ModuleBase::timer::tick("ElecStateLCAO", "cal_tau"); - return; -} -} \ No newline at end of file diff --git a/source/source_estate/elecstate_print.cpp b/source/source_estate/elecstate_print.cpp index 6e7ebf238e..84c7972a41 100644 --- a/source/source_estate/elecstate_print.cpp +++ b/source/source_estate/elecstate_print.cpp @@ -146,7 +146,7 @@ void print_scf_iterinfo(const std::string& ks_solver, { buf += FmtCore::format(td_fmt[i].c_str(), values[i]); } - std::cout << buf; + std::cout << buf << std::flush; } @@ -192,28 +192,52 @@ void print_etot(const Magnetism& magnet, if( (iter % PARAM.inp.out_freq_elec == 0) || converged || iter == PARAM.inp.scf_nmax ) { int n_order = std::max(0, Occupy::gaussian_type); + + //! Kohn-Sham functional energy titles.push_back("E_KohnSham"); energies_Ry.push_back(elec.f_en.etot); + + //! Kohn-Sham energy with sigma->0 titles.push_back("E_KS(sigma->0)"); energies_Ry.push_back(elec.f_en.etot - elec.f_en.demet / (2 + n_order)); + + //! Harris functional energy titles.push_back("E_Harris"); energies_Ry.push_back(elec.f_en.etot_harris); + + //! band energy titles.push_back("E_band"); energies_Ry.push_back(elec.f_en.eband); + + //! one-electron energy titles.push_back("E_one_elec"); energies_Ry.push_back(elec.f_en.eband + elec.f_en.deband); + + //! Hartree energy titles.push_back("E_Hartree"); energies_Ry.push_back(elec.f_en.hartree_energy); + + //! exchange-correlation energy titles.push_back("E_xc"); energies_Ry.push_back(elec.f_en.etxc - elec.f_en.etxcc); + + //! Ewald energy titles.push_back("E_Ewald"); energies_Ry.push_back(elec.f_en.ewald_energy); + + //! entropy energy titles.push_back("E_entropy(-TS)"); energies_Ry.push_back(elec.f_en.demet); + + //! correction energy for scf titles.push_back("E_descf"); energies_Ry.push_back(elec.f_en.descf); - titles.push_back("E_LocalPP"); + + //! local potential energy + titles.push_back("E_localpp"); energies_Ry.push_back(elec.f_en.e_local_pp); + + //! vdw energy std::string vdw_method = PARAM.inp.vdw_method; if (vdw_method == "d2") // Peize Lin add 2014-04, update 2021-03-09 { @@ -225,8 +249,19 @@ void print_etot(const Magnetism& magnet, titles.push_back("E_vdwD3"); energies_Ry.push_back(elec.f_en.evdw); } + + // mohan add 20251108 + if (PARAM.inp.dft_plus_u) + { + titles.push_back("E_plusU"); + energies_Ry.push_back(elec.f_en.edftu); + } + + //! hybrid functional energy titles.push_back("E_exx"); energies_Ry.push_back(elec.f_en.exx); + + //! solvation energy if (PARAM.inp.imp_sol) { titles.push_back("E_sol_el"); @@ -234,23 +269,33 @@ void print_etot(const Magnetism& magnet, titles.push_back("E_sol_cav"); energies_Ry.push_back(elec.f_en.esol_cav); } + + //! electric field energy if (PARAM.inp.efield_flag) { titles.push_back("E_efield"); energies_Ry.push_back(elecstate::Efield::etotefield); } + + //! gate energy if (PARAM.inp.gate_flag) { titles.push_back("E_gatefield"); energies_Ry.push_back(elecstate::Gatefield::etotgatefield); } + //! deepks energy #ifdef __MLALGO if (PARAM.inp.deepks_scf) { titles.push_back("E_DeePKS"); energies_Ry.push_back(elec.f_en.edeepks_delta); } + if (PARAM.inp.ml_exx) + { + titles.push_back("E_ML-EXX"); + energies_Ry.push_back(elec.f_en.ml_exx); + } #endif } else @@ -276,20 +321,17 @@ void print_etot(const Magnetism& magnet, } // print out the band gap if needed - if (PARAM.inp.out_bandgap) + if (!PARAM.globalv.two_fermi) { - if (!PARAM.globalv.two_fermi) - { - titles.push_back("E_bandgap"); - energies_Ry.push_back(elec.bandgap); - } - else - { - titles.push_back("E_bandgap_up"); - energies_Ry.push_back(elec.bandgap_up); - titles.push_back("E_bandgap_dw"); - energies_Ry.push_back(elec.bandgap_dw); - } + titles.push_back("E_gap(k)"); // gap of given k-points + energies_Ry.push_back(elec.bandgap); + } + else + { + titles.push_back("E_gap_up(k)"); + energies_Ry.push_back(elec.bandgap_up); + titles.push_back("E_gap_dw(k)"); + energies_Ry.push_back(elec.bandgap_dw); } energies_eV.resize(energies_Ry.size()); std::transform(energies_Ry.begin(), energies_Ry.end(), energies_eV.begin(), [](double ener) { diff --git a/source/source_estate/elecstate_pw.cpp b/source/source_estate/elecstate_pw.cpp index caffd1211b..2d24321f2a 100644 --- a/source/source_estate/elecstate_pw.cpp +++ b/source/source_estate/elecstate_pw.cpp @@ -13,11 +13,10 @@ namespace elecstate { template ElecStatePW::ElecStatePW(ModulePW::PW_Basis_K* wfc_basis_in, - Charge* chg_in, + Charge* chr_in, K_Vectors* pkv_in, UnitCell* ucell_in, pseudopot_cell_vnl* ppcell_in, - ModulePW::PW_Basis* rhodpw_in, ModulePW::PW_Basis* rhopw_in, ModulePW::PW_Basis_Big* bigpw_in) : basis(wfc_basis_in) @@ -26,7 +25,7 @@ ElecStatePW::ElecStatePW(ModulePW::PW_Basis_K* wfc_basis_in, this->rhopw_smooth = rhopw_in; this->ppcell = ppcell_in; this->ucell = ucell_in; - this->init_ks(chg_in, pkv_in, pkv_in->get_nks(), rhodpw_in, bigpw_in); + this->init_ks(chr_in, pkv_in, pkv_in->get_nks(), bigpw_in); } template diff --git a/source/source_estate/elecstate_pw.h b/source/source_estate/elecstate_pw.h index c3d7568dc4..f674beed89 100644 --- a/source/source_estate/elecstate_pw.h +++ b/source/source_estate/elecstate_pw.h @@ -20,11 +20,10 @@ class ElecStatePW : public ElecState public: ElecStatePW(ModulePW::PW_Basis_K* wfc_basis_in, - Charge* chg_in, + Charge* chr_in, K_Vectors* pkv_in, UnitCell* ucell_in, pseudopot_cell_vnl* ppcell_in, - ModulePW::PW_Basis* rhodpw_in, ModulePW::PW_Basis* rhopw_in, ModulePW::PW_Basis_Big* bigpw_in); diff --git a/source/source_estate/elecstate_pw_sdft.cpp b/source/source_estate/elecstate_pw_sdft.cpp index 4c04fbd886..1df5545cb5 100644 --- a/source/source_estate/elecstate_pw_sdft.cpp +++ b/source/source_estate/elecstate_pw_sdft.cpp @@ -42,4 +42,4 @@ template class ElecStatePW_SDFT, base_device::DEVICE_CPU>; #if ((defined __CUDA) || (defined __ROCM)) template class ElecStatePW_SDFT, base_device::DEVICE_GPU>; #endif -} // namespace elecstate \ No newline at end of file +} // namespace elecstate diff --git a/source/source_estate/elecstate_pw_sdft.h b/source/source_estate/elecstate_pw_sdft.h index fe9ab81834..0ffa00efc4 100644 --- a/source/source_estate/elecstate_pw_sdft.h +++ b/source/source_estate/elecstate_pw_sdft.h @@ -8,15 +8,14 @@ class ElecStatePW_SDFT : public ElecStatePW { public: ElecStatePW_SDFT(ModulePW::PW_Basis_K* wfc_basis_in, - Charge* chg_in, + Charge* chr_in, K_Vectors* pkv_in, UnitCell* ucell_in, pseudopot_cell_vnl* ppcell_in, - ModulePW::PW_Basis* rhodpw_in, ModulePW::PW_Basis* rhopw_in, ModulePW::PW_Basis_Big* bigpw_in) : ElecStatePW(wfc_basis_in, chg_in, pkv_in, ucell_in, ppcell_in, rhodpw_in, rhopw_in, bigpw_in) + Device>(wfc_basis_in, chr_in, pkv_in, ucell_in, ppcell_in, rhopw_in, bigpw_in) { this->classname = "ElecStatePW_SDFT"; } @@ -27,4 +26,4 @@ class ElecStatePW_SDFT : public ElecStatePW using castmem_var_d2h_op = base_device::memory::cast_memory_op; }; } // namespace elecstate -#endif \ No newline at end of file +#endif diff --git a/source/source_estate/elecstate_tools.cpp b/source/source_estate/elecstate_tools.cpp index 446007a296..4a4c24e3cf 100644 --- a/source/source_estate/elecstate_tools.cpp +++ b/source/source_estate/elecstate_tools.cpp @@ -29,7 +29,7 @@ namespace elecstate void calculate_weights(const ModuleBase::matrix& ekb, ModuleBase::matrix& wg, const K_Vectors* klist, - efermi& eferm, + Efermi& eferm, fenergy& f_en, std::vector& nelec_spin, const bool skip_weights=false) @@ -179,4 +179,4 @@ namespace elecstate skip_weights = true; } -} \ No newline at end of file +} diff --git a/source/source_estate/elecstate_tools.h b/source/source_estate/elecstate_tools.h index 6d144ab91b..1486c41452 100644 --- a/source/source_estate/elecstate_tools.h +++ b/source/source_estate/elecstate_tools.h @@ -10,7 +10,7 @@ void calEBand(const ModuleBase::matrix& ekb, const ModuleBase::matrix& wg, fener void calculate_weights(const ModuleBase::matrix& ekb, ModuleBase::matrix& wg, const K_Vectors* klist, - efermi& eferm, + Efermi& eferm, fenergy& f_en, std::vector& nelec_spin, const bool skip_weights); @@ -23,4 +23,4 @@ void fixed_weights(const std::vector& ocp_kb, bool& skip_weights); } // namespace elecstate -#endif \ No newline at end of file +#endif diff --git a/source/source_estate/fp_energy.cpp b/source/source_estate/fp_energy.cpp index b84d9a4a52..a8d3124b4f 100644 --- a/source/source_estate/fp_energy.cpp +++ b/source/source_estate/fp_energy.cpp @@ -16,7 +16,7 @@ namespace elecstate double fenergy::calculate_etot() { etot = eband + deband + (etxc - etxcc) + ewald_energy + hartree_energy + demet + descf + exx + efield - + gatefield + evdw + esol_el + esol_cav + edftu + edeepks_scf + escon; + + gatefield + evdw + esol_el + esol_cav + edftu + edeepks_scf + escon + ml_exx; return etot; } @@ -24,7 +24,7 @@ double fenergy::calculate_etot() double fenergy::calculate_harris() { etot_harris = eband + deband_harris + (etxc - etxcc) + ewald_energy + hartree_energy + demet + descf + exx - + efield + gatefield + evdw + esol_el + esol_cav + edftu + edeepks_scf + escon; + + efield + gatefield + evdw + esol_el + esol_cav + edftu + edeepks_scf + escon + ml_exx; return etot_harris; } @@ -33,7 +33,7 @@ void fenergy::clear_all() { etot = etot_old = eband = deband = etxc = etxcc = vtxc = ewald_energy = hartree_energy = demet = descf = exx = efield = gatefield = evdw = etot_harris = deband_harris = esol_el = esol_cav = edftu = edeepks_scf = escon - = 0.0; + = ml_exx = 0.0; } /// @brief print all energies @@ -49,6 +49,7 @@ void fenergy::print_all() const std::cout << " entropy(-TS)=" << demet << std::endl; std::cout << " descf=" << descf << std::endl; std::cout << " exx=" << exx << std::endl; + std::cout << " ml_exx=" << ml_exx << std::endl; std::cout << " efiled=" << efield << std::endl; std::cout << " gatefiled=" << gatefield << std::endl; std::cout << " evdw=" << evdw << std::endl; @@ -61,10 +62,10 @@ void fenergy::print_all() const std::cout << " total= " << etot << std::endl; } -/// @brief set efermi of a specific spin +/// @brief set Efermi of a specific spin /// @param is SPIN /// @param ef_in fermi(is) -void efermi::set_efval(const int& is, const double& ef_in) +void Efermi::set_efval(const int& is, const double& ef_in) { if (!two_efermi) { @@ -88,7 +89,7 @@ void efermi::set_efval(const int& is, const double& ef_in) /// @brief get the value of fermi of a specific spin /// @param is SPIN /// @return value of fermi(is) -double efermi::get_efval(const int& is) const +double Efermi::get_efval(const int& is) const { if (!two_efermi) { @@ -111,7 +112,7 @@ double efermi::get_efval(const int& is) const /// @brief get all fermi energies for all spins /// @return all fermi energies for all spins -std::vector efermi::get_all_ef() const +std::vector Efermi::get_all_ef() const { if (two_efermi) { diff --git a/source/source_estate/fp_energy.h b/source/source_estate/fp_energy.h index 78a3085ed2..3f37ca2656 100644 --- a/source/source_estate/fp_energy.h +++ b/source/source_estate/fp_energy.h @@ -29,6 +29,7 @@ struct fenergy double demet = 0.0; ///< correction for metals or entropy (-TS) double descf = 0.0; ///< correction by the difference of rho double exx = 0.0; ///< the exact exchange energy. + double ml_exx = 0.0; ///< the ML-EXX energy. double efield = 0.0; ///< dipole potential in surface calculations double gatefield = 0.0; ///< correction energy for gatefield @@ -59,7 +60,7 @@ struct fenergy * @struct efermi * @brief Fermi energies */ -struct efermi +struct Efermi { double ef = 0.0; ///< Fermi energy double ef_up = 0.0; ///< spin up Fermi energy diff --git a/source/source_estate/kernels/cuda/elecstate_op.cu b/source/source_estate/kernels/cuda/elecstate_op.cu index 8b9753facc..4597a1f1ad 100644 --- a/source/source_estate/kernels/cuda/elecstate_op.cu +++ b/source/source_estate/kernels/cuda/elecstate_op.cu @@ -71,7 +71,7 @@ void elecstate_pw_op::operator()(const base_dev reinterpret_cast*>(wfcr) ); - cudaCheckOnDebug(); + CHECK_CUDA_SYNC(); } template @@ -91,7 +91,7 @@ void elecstate_pw_op::operator()(const base_dev reinterpret_cast*>(wfcr_another_spin) ); - cudaCheckOnDebug(); + CHECK_CUDA_SYNC(); } template struct elecstate_pw_op; diff --git a/source/source_estate/kernels/elecstate_op.cpp b/source/source_estate/kernels/elecstate_op.cpp index 0a1bd731da..c3933319fc 100644 --- a/source/source_estate/kernels/elecstate_op.cpp +++ b/source/source_estate/kernels/elecstate_op.cpp @@ -70,7 +70,7 @@ struct elecstate_pw_op } else { #ifdef _OPENMP -#pragma omp parallel for collapse(2) schedule(static, 4096/sizeof(FPTYPE)) +#pragma omp parallel for collapse(2) schedule(static) #endif for (int is = 1; is < 4; is++) { diff --git a/source/source_estate/magnetism.cpp b/source/source_estate/magnetism.cpp index 3d42ce6062..a31bec1f79 100644 --- a/source/source_estate/magnetism.cpp +++ b/source/source_estate/magnetism.cpp @@ -23,8 +23,11 @@ void Magnetism::compute_mag(const double& omega, const double* const * rho, double* nelec_spin) { + assert(omega>0.0); assert(nxyz>0); + const double fac = omega / nxyz; + if (PARAM.inp.nspin==2) { this->tot_mag = 0.00; @@ -40,8 +43,8 @@ void Magnetism::compute_mag(const double& omega, Parallel_Reduce::reduce_pool(this->tot_mag); Parallel_Reduce::reduce_pool(this->abs_mag); #endif - this->tot_mag *= omega / nxyz; - this->abs_mag *= omega / nxyz; + this->tot_mag *= fac; + this->abs_mag *= fac; ModuleBase::GlobalFunc::OUT(GlobalV::ofs_running,"Total magnetism (Bohr mag/cell)",this->tot_mag); ModuleBase::GlobalFunc::OUT(GlobalV::ofs_running,"Absolute magnetism (Bohr mag/cell)",this->abs_mag); @@ -82,7 +85,7 @@ void Magnetism::compute_mag(const double& omega, #endif for(int i=0;i<3;i++) { - this->tot_mag_nc[i] *= omega/ nxyz; + this->tot_mag_nc[i] *= fac; // mohan add 2025-06-21 if( std::abs(this->tot_mag_nc[i]) < 1.0e-16) { @@ -90,7 +93,7 @@ void Magnetism::compute_mag(const double& omega, } } - this->abs_mag *= omega/ nxyz; + this->abs_mag *= fac; // mohan update 2025-06-21 ModuleBase::GlobalFunc::OUT(GlobalV::ofs_running,"Total magnetism (Bohr mag/cell)", diff --git a/source/source_estate/module_charge/charge.cpp b/source/source_estate/module_charge/charge.cpp index be86a04800..7c8008c34d 100644 --- a/source/source_estate/module_charge/charge.cpp +++ b/source/source_estate/module_charge/charge.cpp @@ -53,6 +53,19 @@ void Charge::set_rhopw(ModulePW::PW_Basis* rhopw_in) this->rhopw = rhopw_in; } +// mohan add 2025-12-02 +bool Charge::kin_density() +{ + if (XC_Functional::get_ked_flag() || PARAM.inp.out_elf[0] > 0) + { + return true; + } + else + { + return false; + } +} + void Charge::destroy() { if (allocate_rho || allocate_rho_final_scf) // LiuXh add 20180619 @@ -77,13 +90,20 @@ void Charge::destroy() } } -void Charge::allocate(const int& nspin_in) +void Charge::allocate(const int& nspin_in, const bool kin_den) { ModuleBase::TITLE("Charge", "allocate"); + + if (this->rhopw == nullptr) + { + ModuleBase::WARNING_QUIT("Charge::allocate","rhopw is nullptr."); + } + this->nrxx = this->rhopw->nrxx; this->nxyz = this->rhopw->nxyz; this->ngmc = this->rhopw->npw; + if (allocate_rho == true) { this->destroy(); @@ -105,7 +125,7 @@ void Charge::allocate(const int& nspin_in) _space_rho_save = new double[nspin * nrxx]; _space_rhog = new std::complex[nspin * ngmc]; _space_rhog_save = new std::complex[nspin * ngmc]; - if (XC_Functional::get_ked_flag() || PARAM.inp.out_elf[0] > 0) + if(kin_den) { _space_kin_r = new double[nspin * nrxx]; _space_kin_r_save = new double[nspin * nrxx]; @@ -114,7 +134,7 @@ void Charge::allocate(const int& nspin_in) rhog = new std::complex*[nspin]; rho_save = new double*[nspin]; rhog_save = new std::complex*[nspin]; - if (XC_Functional::get_ked_flag() || PARAM.inp.out_elf[0] > 0) + if(kin_den) { kin_r = new double*[nspin]; kin_r_save = new double*[nspin]; @@ -129,7 +149,7 @@ void Charge::allocate(const int& nspin_in) ModuleBase::GlobalFunc::ZEROS(rhog[is], ngmc); ModuleBase::GlobalFunc::ZEROS(rho_save[is], nrxx); ModuleBase::GlobalFunc::ZEROS(rhog_save[is], ngmc); - if (XC_Functional::get_ked_flag() || PARAM.inp.out_elf[0] > 0) + if(kin_den) { kin_r[is] = _space_kin_r + is * nrxx; ModuleBase::GlobalFunc::ZEROS(kin_r[is], nrxx); @@ -142,7 +162,7 @@ void Charge::allocate(const int& nspin_in) ModuleBase::Memory::record("Chg::rho_save", sizeof(double) * nspin * nrxx); ModuleBase::Memory::record("Chg::rhog", sizeof(double) * nspin * ngmc); ModuleBase::Memory::record("Chg::rhog_save", sizeof(double) * nspin * ngmc); - if (XC_Functional::get_ked_flag() || PARAM.inp.out_elf[0] > 0) + if(kin_den) { ModuleBase::Memory::record("Chg::kin_r", sizeof(double) * nspin * ngmc); ModuleBase::Memory::record("Chg::kin_r_save", sizeof(double) * nspin * ngmc); @@ -634,6 +654,8 @@ void Charge::save_rho_before_sum_band() double Charge::cal_rho2ne(const double* rho_in) const { + assert(this->rhopw->nxyz > 0); // mohan add 2025-12-02 + double ne = 0.0; for (int ir = 0; ir < this->rhopw->nrxx; ir++) { diff --git a/source/source_estate/module_charge/charge.h b/source/source_estate/module_charge/charge.h index e943e662a9..79a5f5ca9e 100644 --- a/source/source_estate/module_charge/charge.h +++ b/source/source_estate/module_charge/charge.h @@ -7,19 +7,18 @@ #include "source_base/parallel_global.h" #include "source_basis/module_pw/pw_basis.h" #include "source_cell/module_symmetry/symmetry.h" -#include "source_estate/fp_energy.h" +// #include "source_estate/fp_energy.h" #include "source_pw/module_pwdft/parallel_grid.h" //a forward declaration of UnitCell class UnitCell; -//========================================================== // Electron Charge Density -//========================================================== class Charge { public: + Charge(); ~Charge(); @@ -43,8 +42,8 @@ class Charge double **kin_r = nullptr; // kinetic energy density in real space, for meta-GGA double **kin_r_save = nullptr; // kinetic energy density in real space, for meta-GGA - // wenfei 2021-07-28 const Parallel_Grid* pgrid = nullptr; + private: //temporary @@ -56,6 +55,7 @@ class Charge double *_space_kin_r_save = nullptr; public: + double **nhat = nullptr; //compensation charge for PAW double **nhat_save = nullptr; //compensation charge for PAW // wenfei 2023-09-05 @@ -77,15 +77,17 @@ class Charge * @param klist [in] k points list if needed * @param wfcpw [in] PW basis for wave function if needed */ - void init_rho(elecstate::efermi& eferm_iout, - const UnitCell& ucell, + void init_rho(const UnitCell& ucell, const Parallel_Grid& pgrid, const ModuleBase::ComplexMatrix& strucFac, ModuleSymmetry::Symmetry& symm, const void* klist = nullptr, const void* wfcpw = nullptr); - void allocate(const int &nspin_in); + // mohan add 2025-12-02 + bool kin_density(); + + void allocate(const int &nspin_in, const bool kin_den); void atomic_rho(const int spin_number_need, const double& omega, @@ -96,7 +98,6 @@ class Charge void set_rho_core(const UnitCell& ucell, const ModuleBase::ComplexMatrix& structure_factor, const bool* numeric); - void set_rho_core_paw(); void renormalize_rho(); @@ -119,14 +120,13 @@ class Charge double cal_rho2ne(const double *rho_in) const; - void check_rho(); // to check whether the charge density is normal + void check_rho(); // to check whether the charge density is normal - void init_final_scf(); //LiuXh add 20180619 + void init_final_scf(); //LiuXh add 20180619 public: /** * @brief init some arrays for mpi_inter_pools, rho_mpi - * */ void init_chgmpi(); @@ -136,14 +136,14 @@ class Charge */ void rho_mpi(); - /** - * @brief Reduce among different pools + /** + * @brief Reduce among different pools * If NPROC_IN_POOLs are all the same, use GlobalV::KP_WORLD * else, gather rho in a POOL, and then reduce among different POOLs - * - * @param array_rho f(rho): an array [nrxx] - */ - void reduce_diff_pools(double* array_rho) const; + * + * @param array_rho f(rho): an array [nrxx] + */ + void reduce_diff_pools(double* array_rho) const; void set_omega(double* omega_in){this->omega_ = omega_in;}; @@ -154,6 +154,7 @@ class Charge int nspin=0; // number of spins ModulePW::PW_Basis* rhopw = nullptr;// When double_grid is used, rhopw = rhodpw (dense grid) bool cal_elf = false; // whether to calculate electron localization function (ELF) + private: void destroy(); // free arrays liuyu 2023-03-12 @@ -163,8 +164,8 @@ class Charge bool allocate_rho; bool allocate_rho_final_scf; // LiuXh add 20180606 + #ifdef __MPI - private: int *rec = nullptr; //The number of elements each process should receive into the receive buffer. int *dis = nullptr; //The displacement (relative to recvbuf) for each process in the receive buffer. #endif diff --git a/source/source_estate/module_charge/charge_extra.cpp b/source/source_estate/module_charge/charge_extra.cpp index 345a34b723..5d3c7e96d1 100644 --- a/source/source_estate/module_charge/charge_extra.cpp +++ b/source/source_estate/module_charge/charge_extra.cpp @@ -4,7 +4,7 @@ #include "source_base/global_variable.h" #include "source_base/timer.h" #include "source_base/tool_threading.h" -#include "source_io/cube_io.h" +#include "source_io/module_output/cube_io.h" Charge_Extra::Charge_Extra() { @@ -107,7 +107,7 @@ void Charge_Extra::extrapolate_charge( rho_extr = std::min(istep, pot_order); if(rho_extr == 0) { - sf->setup_structure_factor(&ucell, *Pgrid, chr->rhopw); + sf->setup(&ucell, *Pgrid, chr->rhopw); ofs_running << " charge density from previous step !" << std::endl; return; } @@ -169,7 +169,7 @@ void Charge_Extra::extrapolate_charge( } } - sf->setup_structure_factor(&ucell, *Pgrid, chr->rhopw); + sf->setup(&ucell, *Pgrid, chr->rhopw); double** rho_atom = new double*[this->nspin]; for (int is = 0; is < this->nspin; is++) { @@ -314,4 +314,4 @@ void Charge_Extra::update_delta_rho(const UnitCell& ucell, const Charge* chr, co } delete[] rho_atom; return; -} \ No newline at end of file +} diff --git a/source/source_estate/module_charge/charge_init.cpp b/source/source_estate/module_charge/charge_init.cpp index 93f89fec81..e93f1210c9 100644 --- a/source/source_estate/module_charge/charge_init.cpp +++ b/source/source_estate/module_charge/charge_init.cpp @@ -12,14 +12,15 @@ #include "source_base/timer.h" #include "source_base/tool_threading.h" #include "source_estate/magnetism.h" -#include "source_pw/module_pwdft/global.h" #include "source_pw/module_pwdft/parallel_grid.h" -#include "source_io/cube_io.h" -#include "source_io/rhog_io.h" -#include "source_io/read_wf2rho_pw.h" - -void Charge::init_rho(elecstate::efermi& eferm_iout, - const UnitCell& ucell, +#include "source_io/module_output/cube_io.h" +#include "source_io/module_chgpot/rhog_io.h" +#include "source_io/module_wf/read_wf2rho_pw.h" +#include "source_io/module_restart/restart.h" +#include "source_hamilt/module_xc/xc_functional.h" +#include "source_cell/klist.h" + +void Charge::init_rho(const UnitCell& ucell, const Parallel_Grid& pgrid, const ModuleBase::ComplexMatrix& strucFac, ModuleSymmetry::Symmetry& symm, @@ -59,8 +60,18 @@ void Charge::init_rho(elecstate::efermi& eferm_iout, { for (int is = 0; is < nspin; ++is) { - std::stringstream ssc; - ssc << PARAM.globalv.global_readin_dir << "chgs" << is + 1 << ".cube"; + std::stringstream ssc; + + if(nspin==1) + { + ssc << PARAM.globalv.global_readin_dir << "chg.cube"; + } + else + { + ssc << PARAM.globalv.global_readin_dir << "chgs" << is + 1 << ".cube"; + } + + if (ModuleIO::read_vdata_palgrid(pgrid, (PARAM.inp.esolver_type == "sdft" ? GlobalV::RANK_IN_BPGROUP : GlobalV::MY_RANK), GlobalV::ofs_running, @@ -107,7 +118,7 @@ void Charge::init_rho(elecstate::efermi& eferm_iout, { const std::string warn_msg = " WARNING: \"init_chg\" is enabled but ABACUS failed to read\n charge density from file.\n" - " Please check if there is chgsx.cube (x=1,2,etc.) or\n {suffix}-CHARGE-DENSITY.restart in the " + " Please check if there is chg.cube (for nspin=1) or chgsx.cube (x=1,2,etc.) or\n {suffix}-CHARGE-DENSITY.restart in the " "directory.\n"; std::cout << warn_msg; if (PARAM.inp.init_chg == "file") @@ -219,7 +230,7 @@ void Charge::init_rho(elecstate::efermi& eferm_iout, } catch (const std::exception& e) { - // try to load from the output of `out_chg` + // try to load from the output of `out_chg` std::stringstream ssc; ssc << PARAM.globalv.global_readin_dir << "chgs" << is + 1 << ".cube"; if (ModuleIO::read_vdata_palgrid(pgrid, @@ -251,7 +262,7 @@ void Charge::init_rho(elecstate::efermi& eferm_iout, ModuleIO::read_wf2rho_pw(pw_wfc, symm, *this, PARAM.globalv.global_readin_dir, - GlobalV::KPAR, GlobalV::MY_POOL, GlobalV::MY_RANK, + GlobalV::KPAR, GlobalV::MY_POOL, GlobalV::MY_RANK, GlobalV::NPROC_IN_POOL, GlobalV::RANK_IN_POOL, PARAM.inp.nbands, nspin, PARAM.globalv.npol, kv->get_nkstot(),kv->ik2iktot,kv->isk,GlobalV::ofs_running); @@ -262,7 +273,7 @@ void Charge::init_rho(elecstate::efermi& eferm_iout, // computes the core charge on the real space 3D mesh. //========================================================== void Charge::set_rho_core(const UnitCell& ucell, - const ModuleBase::ComplexMatrix& structure_factor, + const ModuleBase::ComplexMatrix& structure_factor, const bool* numeric) { ModuleBase::TITLE("Charge","set_rho_core"); @@ -289,7 +300,7 @@ void Charge::set_rho_core(const UnitCell& ucell, ModuleBase::GlobalFunc::ZEROS(rhocg, this->rhopw->ngg ); // three dimension. - std::complex *vg = new std::complex[this->rhopw->npw]; + std::complex *vg = new std::complex[this->rhopw->npw]; for (int it = 0; it < ucell.ntype;it++) { @@ -362,11 +373,6 @@ void Charge::set_rho_core(const UnitCell& ucell, return; } // end subroutine set_rhoc -void Charge::set_rho_core_paw() -{ - ModuleBase::TITLE("Charge","set_rho_core_paw"); -} - void Charge::non_linear_core_correction ( @@ -387,7 +393,7 @@ void Charge::non_linear_core_correction double gx = 0.0; double rhocg1 = 0.0; - double *aux; + double *aux = nullptr; // here we compute the fourier transform is the charge in numeric form if (numeric) @@ -419,11 +425,11 @@ void Charge::non_linear_core_correction igl_end += igl_beg; // G <> 0 term - for (int igl = igl_beg; igl < igl_end;igl++) + for (int igl = igl_beg; igl < igl_end;igl++) { gx = sqrt(this->rhopw->gg_uniq[igl] * tpiba2); ModuleBase::Sphbes::Spherical_Bessel(mesh, r, gx, 0, aux); - for (int ir = 0;ir < mesh; ir++) + for (int ir = 0;ir < mesh; ir++) { aux [ir] = r[ir] * r[ir] * rhoc [ir] * aux [ir]; } // enddo @@ -441,7 +447,7 @@ void Charge::non_linear_core_correction }; // end kernel // do not use omp parallel when this function is already in parallel block - // + // // it is called in parallel block in Forces::cal_force_cc, // but not in other funtcion such as Stress_Func::stress_cc. ModuleBase::TRY_OMP_PARALLEL(kernel); diff --git a/source/source_estate/module_charge/charge_mixing.cpp b/source/source_estate/module_charge/charge_mixing.cpp index a236e3a76d..320edc37ef 100644 --- a/source/source_estate/module_charge/charge_mixing.cpp +++ b/source/source_estate/module_charge/charge_mixing.cpp @@ -4,16 +4,27 @@ #include "source_base/module_mixing/broyden_mixing.h" #include "source_base/module_mixing/pulay_mixing.h" #include "source_base/timer.h" -#include "source_pw/module_pwdft/global.h" +#include "source_hamilt/module_xc/xc_functional.h" Charge_Mixing::Charge_Mixing() { + this->mixing = nullptr; + this->mixing_highf = nullptr; } Charge_Mixing::~Charge_Mixing() { - delete this->mixing; - delete this->mixing_highf; + if(this->mixing != nullptr) + { + delete this->mixing; + this->mixing = nullptr; + } + + if(this->mixing_highf != nullptr) + { + delete this->mixing_highf; + this->mixing_highf = nullptr; + } } void Charge_Mixing::set_mixing(const std::string& mixing_mode_in, diff --git a/source/source_estate/module_charge/charge_mixing_dmr.cpp b/source/source_estate/module_charge/charge_mixing_dmr.cpp index 4987110b0f..9b3ac9f394 100644 --- a/source/source_estate/module_charge/charge_mixing_dmr.cpp +++ b/source/source_estate/module_charge/charge_mixing_dmr.cpp @@ -58,8 +58,8 @@ void Charge_Mixing::mix_dmr(elecstate::DensityMatrix* DM) dmr_mag_save = new double[nnr * PARAM.inp.nspin]; ModuleBase::GlobalFunc::ZEROS(dmr_mag, nnr * PARAM.inp.nspin); ModuleBase::GlobalFunc::ZEROS(dmr_mag_save, nnr * PARAM.inp.nspin); - double* dmr_up; - double* dmr_down; + double* dmr_up = nullptr; + double* dmr_down = nullptr; // tranfer dmr into dmr_mag dmr_up = dmr[0]->get_wrapper(); dmr_down = dmr[1]->get_wrapper(); @@ -157,8 +157,8 @@ void Charge_Mixing::mix_dmr(elecstate::DensityMatrix, doubl dmr_mag_save = new double[nnr * PARAM.inp.nspin]; ModuleBase::GlobalFunc::ZEROS(dmr_mag, nnr * PARAM.inp.nspin); ModuleBase::GlobalFunc::ZEROS(dmr_mag_save, nnr * PARAM.inp.nspin); - double* dmr_up; - double* dmr_down; + double* dmr_up = nullptr; + double* dmr_down = nullptr; // tranfer dmr into dmr_mag dmr_up = dmr[0]->get_wrapper(); dmr_down = dmr[1]->get_wrapper(); diff --git a/source/source_estate/module_charge/charge_mixing_preconditioner.cpp b/source/source_estate/module_charge/charge_mixing_preconditioner.cpp index 804705be99..a2fecdb91c 100644 --- a/source/source_estate/module_charge/charge_mixing_preconditioner.cpp +++ b/source/source_estate/module_charge/charge_mixing_preconditioner.cpp @@ -2,25 +2,35 @@ #include "source_io/module_parameter/parameter.h" #include "source_base/timer.h" -#include "source_pw/module_pwdft/global.h" void Charge_Mixing::Kerker_screen_recip(std::complex* drhog) { - if (this->mixing_gg0 <= 0.0 || this->mixing_beta <= 0.1) { - return; -} + ModuleBase::TITLE("Charge_Mixing", "Kerker_screen_recip"); + + if (this->mixing_gg0 <= 0.0 || this->mixing_beta <= 0.1) + { + return; + } + + ModuleBase::timer::tick("Charge_Mixing", "Kerker_screen_recip"); + + const int nspin = PARAM.inp.nspin; + double fac = 0.0; double gg0 = 0.0; double amin = 0.0; /// consider a resize for mixing_angle - int resize_tmp = 1; - if (PARAM.inp.nspin == 4 && this->mixing_angle > 0) { resize_tmp = 2; -} + int resize_tmp = 1; + if (nspin == 4 && this->mixing_angle > 0) + { + resize_tmp = 2; + } /// implement Kerker for density and magnetization separately - for (int is = 0; is < PARAM.inp.nspin / resize_tmp; ++is) + for (int is = 0; is < nspin / resize_tmp; ++is) { + const int is_idx = is * this->rhopw->npw; /// new mixing method only support nspin=2 not nspin=4 if (is >= 1) { @@ -29,10 +39,10 @@ void Charge_Mixing::Kerker_screen_recip(std::complex* drhog) #ifdef __DEBUG assert(is == 1); // make sure break works #endif - double is_mag = PARAM.inp.nspin - 1; + double is_mag = nspin - 1; //for (int ig = 0; ig < this->rhopw->npw * is_mag; ig++) //{ - // drhog[is * this->rhopw->npw + ig] *= 1; + // drhog[is_idx + ig] *= 1; //} break; } @@ -45,33 +55,50 @@ void Charge_Mixing::Kerker_screen_recip(std::complex* drhog) amin = this->mixing_beta; } - gg0 = std::pow(fac * 0.529177 / *this->tpiba, 2); + gg0 = std::pow(fac * ModuleBase::BOHR_TO_A / *this->tpiba, 2); + + const double gg0_amin = this->mixing_gg0_min / amin; + #ifdef _OPENMP #pragma omp parallel for schedule(static, 512) #endif for (int ig = 0; ig < this->rhopw->npw; ++ig) { double gg = this->rhopw->gg[ig]; - double filter_g = std::max(gg / (gg + gg0), this->mixing_gg0_min / amin); - drhog[is * this->rhopw->npw + ig] *= filter_g; + double filter_g = std::max(gg / (gg + gg0), gg0_amin); + drhog[is_idx + ig] *= filter_g; } } + + ModuleBase::timer::tick("Charge_Mixing", "Kerker_screen_recip"); return; } void Charge_Mixing::Kerker_screen_real(double* drhor) { - if (this->mixing_gg0 <= 0.0001 || this->mixing_beta <= 0.1) { - return; -} - /// consider a resize for mixing_angle + ModuleBase::TITLE("Charge_Mixing", "Kerker_screen_real"); + + if (this->mixing_gg0 <= 0.0001 || this->mixing_beta <= 0.1) + { + return; + } + + ModuleBase::timer::tick("Charge_Mixing", "Kerker_screen_real"); + + const int nspin = PARAM.inp.nspin; + assert(nspin==1 || nspin==2 || nspin==4); + + /// consider a resize for mixing_angle int resize_tmp = 1; - if (PARAM.inp.nspin == 4 && this->mixing_angle > 0) { resize_tmp = 2; -} + if (nspin == 4 && this->mixing_angle > 0) + { + resize_tmp = 2; + } - std::vector> drhog(this->rhopw->npw * PARAM.inp.nspin / resize_tmp); - std::vector drhor_filter(this->rhopw->nrxx * PARAM.inp.nspin / resize_tmp); - for (int is = 0; is < PARAM.inp.nspin / resize_tmp; ++is) + std::vector> drhog(this->rhopw->npw * nspin / resize_tmp); + std::vector drhor_filter(this->rhopw->nrxx * nspin / resize_tmp); + + for (int is = 0; is < nspin / resize_tmp; ++is) { // Note after this process some G which is higher than Gmax will be filtered. // Thus we cannot use Kerker_screen_recip(drhog.data()) directly after it. @@ -82,7 +109,7 @@ void Charge_Mixing::Kerker_screen_real(double* drhor) double gg0 = 0.0; double amin = 0.0; - for (int is = 0; is < PARAM.inp.nspin / resize_tmp; is++) + for (int is = 0; is < nspin / resize_tmp; is++) { if (is >= 1) @@ -92,8 +119,8 @@ void Charge_Mixing::Kerker_screen_real(double* drhor) #ifdef __DEBUG assert(is == 1); /// make sure break works #endif - double is_mag = PARAM.inp.nspin - 1; - if (PARAM.inp.nspin == 4 && this->mixing_angle > 0) { is_mag = 1; + double is_mag = nspin - 1; + if (nspin == 4 && this->mixing_angle > 0) { is_mag = 1; } for (int ig = 0; ig < this->rhopw->npw * is_mag; ig++) { @@ -110,7 +137,10 @@ void Charge_Mixing::Kerker_screen_real(double* drhor) amin = this->mixing_beta; } - gg0 = std::pow(fac * 0.529177 / *this->tpiba, 2); + gg0 = std::pow(fac * ModuleBase::BOHR_TO_A / *this->tpiba, 2); + + const int is_idx = is * this->rhopw->npw; + const double gg0_amin = this->mixing_gg0_min / amin; #ifdef _OPENMP #pragma omp parallel for schedule(static, 512) #endif @@ -120,15 +150,15 @@ void Charge_Mixing::Kerker_screen_real(double* drhor) // I have not decided how to handle gg=0 part, will be changed in future //if (gg == 0) //{ - // drhog[is * this->rhopw->npw + ig] *= 0; + // drhog[is_idx + ig] *= 0; // continue; //} - double filter_g = std::max(gg / (gg + gg0), this->mixing_gg0_min / amin); - drhog[is * this->rhopw->npw + ig] *= (1 - filter_g); + double filter_g = std::max(gg / (gg + gg0), gg0_amin); + drhog[is_idx + ig] *= (1 - filter_g); } } /// inverse FT - for (int is = 0; is < PARAM.inp.nspin / resize_tmp; ++is) + for (int is = 0; is < nspin / resize_tmp; ++is) { this->rhopw->recip2real(drhog.data() + is * this->rhopw->npw, drhor_filter.data() + is * this->rhopw->nrxx); } @@ -136,8 +166,11 @@ void Charge_Mixing::Kerker_screen_real(double* drhor) #ifdef _OPENMP #pragma omp parallel for schedule(static, 512) #endif - for (int ir = 0; ir < this->rhopw->nrxx * PARAM.inp.nspin / resize_tmp; ir++) + for (int ir = 0; ir < this->rhopw->nrxx * nspin / resize_tmp; ir++) { drhor[ir] -= drhor_filter[ir]; } + + ModuleBase::timer::tick("Charge_Mixing", "Kerker_screen_real"); + return; } diff --git a/source/source_estate/module_charge/charge_mixing_residual.cpp b/source/source_estate/module_charge/charge_mixing_residual.cpp index 9e9c5e0131..9120ff4b35 100644 --- a/source/source_estate/module_charge/charge_mixing_residual.cpp +++ b/source/source_estate/module_charge/charge_mixing_residual.cpp @@ -1,19 +1,20 @@ #include "charge_mixing.h" - #include "source_io/module_parameter/parameter.h" #include "source_base/timer.h" -#include "source_pw/module_pwdft/global.h" #include "source_base/parallel_reduce.h" +#include "source_hamilt/module_xc/xc_functional.h" double Charge_Mixing::get_drho(Charge* chr, const double nelec) { ModuleBase::TITLE("Charge_Mixing", "get_drho"); ModuleBase::timer::tick("Charge_Mixing", "get_drho"); + const int nspin = PARAM.inp.nspin; + assert(nspin==1 || nspin==2 || nspin==4); double drho = 0.0; if (PARAM.inp.scf_thr_type == 1) { - for (int is = 0; is < PARAM.inp.nspin; ++is) + for (int is = 0; is < nspin; ++is) { ModuleBase::GlobalFunc::NOTE("Perform FFT on rho(r) to obtain rho(G)."); chr->rhopw->real2recip(chr->rho[is], chr->rhog[is]); @@ -23,15 +24,15 @@ double Charge_Mixing::get_drho(Charge* chr, const double nelec) } ModuleBase::GlobalFunc::NOTE("Calculate the charge difference between rho(G) and rho_save(G)"); - std::vector> drhog(PARAM.inp.nspin * this->rhopw->npw); + std::vector> drhog(nspin * this->rhopw->npw); #ifdef _OPENMP #pragma omp parallel for collapse(2) schedule(static, 512) #endif - for (int is = 0; is < PARAM.inp.nspin; ++is) + for (int is = 0; is < nspin; ++is) { for (int ig = 0; ig < this->rhopw->npw; ig++) { - drhog[is * rhopw->npw + ig] = chr->rhog[is][ig] - chr->rhog_save[is][ig]; + drhog[is * this->rhopw->npw + ig] = chr->rhog[is][ig] - chr->rhog_save[is][ig]; } } @@ -42,7 +43,7 @@ double Charge_Mixing::get_drho(Charge* chr, const double nelec) { // Note: Maybe it is wrong. // The inner_product_real function (L1-norm) is different from that (L2-norm) in mixing. - for (int is = 0; is < PARAM.inp.nspin; is++) + for (int is = 0; is < nspin; is++) { if (is != 0 && is != 3 && PARAM.globalv.domag_z) { diff --git a/source/source_estate/module_charge/charge_mixing_rho.cpp b/source/source_estate/module_charge/charge_mixing_rho.cpp index 6a965c5da2..3eb3e91d1a 100644 --- a/source/source_estate/module_charge/charge_mixing_rho.cpp +++ b/source/source_estate/module_charge/charge_mixing_rho.cpp @@ -1,10 +1,16 @@ #include "charge_mixing.h" #include "source_io/module_parameter/parameter.h" #include "source_base/timer.h" -#include "source_pw/module_pwdft/global.h" +#include "source_hamilt/module_xc/xc_functional.h" void Charge_Mixing::mix_rho_recip(Charge* chr) { + ModuleBase::TITLE("Charge_Mixing", "mix_rho_recip"); + ModuleBase::timer::tick("Charge_Mixing", "mix_rho_recip"); + + const int nspin = PARAM.inp.nspin; + assert(nspin==1 || nspin==2 || nspin==4); + std::complex* rhog_in = nullptr; std::complex* rhog_out = nullptr; // for smooth part @@ -26,7 +32,7 @@ void Charge_Mixing::mix_rho_recip(Charge* chr) = std::bind(&Charge_Mixing::inner_product_recip_hartree, this, std::placeholders::_1, std::placeholders::_2); // DIIS Mixing Only for smooth part, while high_frequency part is mixed by plain mixing method. - if (PARAM.inp.nspin == 1) + if (nspin == 1) { rhog_in = rhogs_in; rhog_out = rhogs_out; @@ -35,17 +41,17 @@ void Charge_Mixing::mix_rho_recip(Charge* chr) this->mixing->cal_coef(this->rho_mdata, inner_product); this->mixing->mix_data(this->rho_mdata, rhog_out); } - else if (PARAM.inp.nspin == 2) + else if (nspin == 2) { // magnetic density std::complex *rhog_mag = nullptr; std::complex *rhog_mag_save = nullptr; const int npw = this->rhopw->npw; // allocate rhog_mag[is*ngmc] and rhog_mag_save[is*ngmc] - rhog_mag = new std::complex[npw * PARAM.inp.nspin]; - rhog_mag_save = new std::complex[npw * PARAM.inp.nspin]; - ModuleBase::GlobalFunc::ZEROS(rhog_mag, npw * PARAM.inp.nspin); - ModuleBase::GlobalFunc::ZEROS(rhog_mag_save, npw * PARAM.inp.nspin); + rhog_mag = new std::complex[npw * nspin]; + rhog_mag_save = new std::complex[npw * nspin]; + ModuleBase::GlobalFunc::ZEROS(rhog_mag, npw * nspin); + ModuleBase::GlobalFunc::ZEROS(rhog_mag_save, npw * nspin); // get rhog_mag[is*ngmc] and rhog_mag_save[is*ngmc] for (int ig = 0; ig < npw; ig++) { @@ -84,7 +90,7 @@ void Charge_Mixing::mix_rho_recip(Charge* chr) this->mixing->cal_coef(this->rho_mdata, inner_product); this->mixing->mix_data(this->rho_mdata, rhog_out); // get rhog[is][ngmc] from rhog_mag[is*ngmc] - for (int is = 0; is < PARAM.inp.nspin; is++) + for (int is = 0; is < nspin; is++) { ModuleBase::GlobalFunc::ZEROS(chr->rhog[is], npw); } @@ -106,7 +112,7 @@ void Charge_Mixing::mix_rho_recip(Charge* chr) } } } - else if (PARAM.inp.nspin == 4 && PARAM.inp.mixing_angle <= 0) + else if (nspin == 4 && PARAM.inp.mixing_angle <= 0) { // normal broyden mixing for {rho, mx, my, mz} rhog_in = rhogs_in; @@ -135,7 +141,7 @@ void Charge_Mixing::mix_rho_recip(Charge* chr) this->mixing->cal_coef(this->rho_mdata, inner_product); this->mixing->mix_data(this->rho_mdata, rhog_out); } - else if (PARAM.inp.nspin == 4 && PARAM.inp.mixing_angle > 0) + else if (nspin == 4 && PARAM.inp.mixing_angle > 0) { // special broyden mixing for {rho, |m|} proposed by J. Phys. Soc. Jpn. 82 (2013) 114706 // here only consider the case of mixing_angle = 1, which mean only change |m| and keep angle fixed @@ -154,9 +160,13 @@ void Charge_Mixing::mix_rho_recip(Charge* chr) for (int ir = 0; ir < nrxx; ir++) { // |m| for rho - rho_magabs[ir] = std::sqrt(chr->rho[1][ir] * chr->rho[1][ir] + chr->rho[2][ir] * chr->rho[2][ir] + chr->rho[3][ir] * chr->rho[3][ir]); + rho_magabs[ir] = std::sqrt(chr->rho[1][ir] * chr->rho[1][ir] + + chr->rho[2][ir] * chr->rho[2][ir] + + chr->rho[3][ir] * chr->rho[3][ir]); // |m| for rho_save - rho_magabs_save[ir] = std::sqrt(chr->rho_save[1][ir] * chr->rho_save[1][ir] + chr->rho_save[2][ir] * chr->rho_save[2][ir] + chr->rho_save[3][ir] * chr->rho_save[3][ir]); + rho_magabs_save[ir] = std::sqrt(chr->rho_save[1][ir] * chr->rho_save[1][ir] + + chr->rho_save[2][ir] * chr->rho_save[2][ir] + + chr->rho_save[3][ir] * chr->rho_save[3][ir]); } // allocate memory for rhog_magabs and rhog_magabs_save const int npw = this->rhopw->npw; @@ -203,10 +213,14 @@ void Charge_Mixing::mix_rho_recip(Charge* chr) // use new |m| and angle to update {mx, my, mz} for (int ig = 0; ig < npw; ig++) { - chr->rhog[0][ig] = rhog_magabs[ig]; // rhog - double norm = std::sqrt(chr->rho[1][ig] * chr->rho[1][ig] + chr->rho[2][ig] * chr->rho[2][ig] + chr->rho[3][ig] * chr->rho[3][ig]); - if (std::abs(norm) < 1e-10) { continue; -} + chr->rhog[0][ig] = rhog_magabs[ig]; // rhog + double norm = std::sqrt(chr->rho[1][ig] * chr->rho[1][ig] + + chr->rho[2][ig] * chr->rho[2][ig] + + chr->rho[3][ig] * chr->rho[3][ig]); + if (std::abs(norm) < 1e-10) + { + continue; + } double rescale_tmp = rho_magabs[npw + ig] / norm; chr->rho[1][ig] *= rescale_tmp; chr->rho[2][ig] *= rescale_tmp; @@ -222,7 +236,7 @@ void Charge_Mixing::mix_rho_recip(Charge* chr) if ( PARAM.globalv.double_grid) { // plain mixing for high_frequencies - const int ndimhf = (this->rhodpw->npw - this->rhopw->npw) * PARAM.inp.nspin; + const int ndimhf = (this->rhodpw->npw - this->rhopw->npw) * nspin; this->mixing_highf->plain_mix(rhoghf_out, rhoghf_in, rhoghf_out, ndimhf, nullptr); // combine smooth part and high_frequency part @@ -231,7 +245,7 @@ void Charge_Mixing::mix_rho_recip(Charge* chr) } // rhog to rho - if (PARAM.inp.nspin == 4 && PARAM.inp.mixing_angle > 0) + if (nspin == 4 && PARAM.inp.mixing_angle > 0) { // only tranfer rhog[0] // do not support double_grid, use rhopw directly @@ -239,7 +253,7 @@ void Charge_Mixing::mix_rho_recip(Charge* chr) } else { - for (int is = 0; is < PARAM.inp.nspin; is++) + for (int is = 0; is < nspin; is++) { // use rhodpw for double_grid // rhodpw is the same as rhopw for ! PARAM.globalv.double_grid @@ -249,10 +263,10 @@ void Charge_Mixing::mix_rho_recip(Charge* chr) // For kinetic energy density if ((XC_Functional::get_ked_flag()) && mixing_tau) { - std::vector> kin_g(PARAM.inp.nspin * rhodpw->npw); - std::vector> kin_g_save(PARAM.inp.nspin * rhodpw->npw); + std::vector> kin_g(nspin * rhodpw->npw); + std::vector> kin_g_save(nspin * rhodpw->npw); // FFT to get kin_g and kin_g_save - for (int is = 0; is < PARAM.inp.nspin; ++is) + for (int is = 0; is < nspin; ++is) { rhodpw->real2recip(chr->kin_r[is], &kin_g[is * rhodpw->npw]); rhodpw->real2recip(chr->kin_r_save[is], &kin_g_save[is * rhodpw->npw]); @@ -277,7 +291,7 @@ void Charge_Mixing::mix_rho_recip(Charge* chr) if ( PARAM.globalv.double_grid) { // simple mixing for high_frequencies - const int ndimhf = (this->rhodpw->npw - this->rhopw->npw) * PARAM.inp.nspin; + const int ndimhf = (this->rhodpw->npw - this->rhopw->npw) * nspin; this->mixing_highf->plain_mix(taughf_out, taughf_in, taughf_out, ndimhf, nullptr); // combine smooth part and high_frequency part @@ -286,22 +300,28 @@ void Charge_Mixing::mix_rho_recip(Charge* chr) } // kin_g to kin_r - for (int is = 0; is < PARAM.inp.nspin; is++) + for (int is = 0; is < nspin; is++) { rhodpw->recip2real(&kin_g[is * rhodpw->npw], chr->kin_r[is]); } } - + ModuleBase::timer::tick("Charge_Mixing", "mix_rho_recip"); return; } void Charge_Mixing::mix_rho_real(Charge* chr) { + ModuleBase::TITLE("Charge_Mixing", "mix_rho_real"); + ModuleBase::timer::tick("Charge_Mixing", "mix_rho_real"); + + const int nspin = PARAM.inp.nspin; + assert(nspin==1 || nspin==2 || nspin==4); + double* rhor_in=nullptr; double* rhor_out=nullptr; - if (PARAM.inp.nspin == 1) + if (nspin == 1) { rhor_in = chr->rho_save[0]; rhor_out = chr->rho[0]; @@ -312,17 +332,17 @@ void Charge_Mixing::mix_rho_real(Charge* chr) this->mixing->cal_coef(this->rho_mdata, inner_product); this->mixing->mix_data(this->rho_mdata, rhor_out); } - else if (PARAM.inp.nspin == 2) + else if (nspin == 2) { // magnetic density double *rho_mag = nullptr; double *rho_mag_save = nullptr; const int nrxx = this->rhopw->nrxx; // allocate rho_mag[is*nnrx] and rho_mag_save[is*nnrx] - rho_mag = new double[nrxx * PARAM.inp.nspin]; - rho_mag_save = new double[nrxx * PARAM.inp.nspin]; - ModuleBase::GlobalFunc::ZEROS(rho_mag, nrxx * PARAM.inp.nspin); - ModuleBase::GlobalFunc::ZEROS(rho_mag_save, nrxx * PARAM.inp.nspin); + rho_mag = new double[nrxx * nspin]; + rho_mag_save = new double[nrxx * nspin]; + ModuleBase::GlobalFunc::ZEROS(rho_mag, nrxx * nspin); + ModuleBase::GlobalFunc::ZEROS(rho_mag_save, nrxx * nspin); // get rho_mag[is*nnrx] and rho_mag_save[is*nnrx] for (int ir = 0; ir < nrxx; ir++) { @@ -362,7 +382,7 @@ void Charge_Mixing::mix_rho_real(Charge* chr) this->mixing->cal_coef(this->rho_mdata, inner_product); this->mixing->mix_data(this->rho_mdata, rhor_out); // get new rho[is][nrxx] from rho_mag[is*nrxx] - for (int is = 0; is < PARAM.inp.nspin; is++) + for (int is = 0; is < nspin; is++) { ModuleBase::GlobalFunc::ZEROS(chr->rho[is], nrxx); //ModuleBase::GlobalFunc::ZEROS(rho_save[is], nrxx); @@ -376,7 +396,7 @@ void Charge_Mixing::mix_rho_real(Charge* chr) delete[] rho_mag; delete[] rho_mag_save; } - else if (PARAM.inp.nspin == 4 && PARAM.inp.mixing_angle <= 0) + else if (nspin == 4 && PARAM.inp.mixing_angle <= 0) { // normal broyden mixing for {rho, mx, my, mz} rhor_in = chr->rho_save[0]; @@ -407,7 +427,7 @@ void Charge_Mixing::mix_rho_real(Charge* chr) this->mixing->cal_coef(this->rho_mdata, inner_product); this->mixing->mix_data(this->rho_mdata, rhor_out); } - else if (PARAM.inp.nspin == 4 && PARAM.inp.mixing_angle > 0) + else if (nspin == 4 && PARAM.inp.mixing_angle > 0) { // special broyden mixing for {rho, |m|} proposed by J. Phys. Soc. Jpn. 82 (2013) 114706 // here only consider the case of mixing_angle = 1, which mean only change |m| and keep angle fixed @@ -494,6 +514,8 @@ void Charge_Mixing::mix_rho_real(Charge* chr) this->mixing->mix_data(this->tau_mdata, taur_out); } + ModuleBase::timer::tick("Charge_Mixing", "mix_rho_real"); + return; } @@ -502,10 +524,13 @@ void Charge_Mixing::mix_rho(Charge* chr) ModuleBase::TITLE("Charge_Mixing", "mix_rho"); ModuleBase::timer::tick("Charge_Mixing", "mix_rho"); + const int nspin = PARAM.inp.nspin; + assert(nspin==1 || nspin==2 || nspin==4); + // the charge before mixing. const int nrxx = chr->rhopw->nrxx; - std::vector rho123(PARAM.inp.nspin * nrxx); - for (int is = 0; is < PARAM.inp.nspin; ++is) + std::vector rho123(nspin * nrxx); + for (int is = 0; is < nspin; ++is) { if (is == 0 || is == 3 || !PARAM.globalv.domag_z) { @@ -522,8 +547,8 @@ void Charge_Mixing::mix_rho(Charge* chr) std::vector kin_r123; if ((XC_Functional::get_ked_flag()) && mixing_tau) { - kin_r123.resize(PARAM.inp.nspin * nrxx); - for (int is = 0; is < PARAM.inp.nspin; ++is) + kin_r123.resize(nspin * nrxx); + for (int is = 0; is < nspin; ++is) { double* kin_r123_is = kin_r123.data() + is * nrxx; #ifdef _OPENMP @@ -548,7 +573,7 @@ void Charge_Mixing::mix_rho(Charge* chr) // mohan add 2012-06-05 // rho_save is the charge before mixing - for (int is = 0; is < PARAM.inp.nspin; ++is) + for (int is = 0; is < nspin; ++is) { if (is == 0 || is == 3 || !PARAM.globalv.domag_z) { @@ -565,7 +590,7 @@ void Charge_Mixing::mix_rho(Charge* chr) if ((XC_Functional::get_ked_flag()) && mixing_tau) { - for (int is = 0; is < PARAM.inp.nspin; ++is) + for (int is = 0; is < nspin; ++is) { double* kin_r123_is = kin_r123.data() + is * nrxx; #ifdef _OPENMP diff --git a/source/source_estate/module_charge/charge_mpi.cpp b/source/source_estate/module_charge/charge_mpi.cpp index db1b458fbf..32fc8bc195 100644 --- a/source/source_estate/module_charge/charge_mpi.cpp +++ b/source/source_estate/module_charge/charge_mpi.cpp @@ -119,9 +119,10 @@ void Charge::reduce_diff_pools(double* array_rho) const void Charge::rho_mpi() { ModuleBase::TITLE("Charge", "rho_mpi"); - if (GlobalV::KPAR * PARAM.inp.bndpar <= 1) { - return; -} + if (GlobalV::KPAR * PARAM.inp.bndpar <= 1) + { + return; + } ModuleBase::timer::tick("Charge", "rho_mpi"); for (int is = 0; is < PARAM.inp.nspin; ++is) @@ -136,4 +137,4 @@ void Charge::rho_mpi() ModuleBase::timer::tick("Charge", "rho_mpi"); return; } -#endif \ No newline at end of file +#endif diff --git a/source/source_estate/module_charge/chgmixing.cpp b/source/source_estate/module_charge/chgmixing.cpp new file mode 100644 index 0000000000..45e5c5b350 --- /dev/null +++ b/source/source_estate/module_charge/chgmixing.cpp @@ -0,0 +1,227 @@ +#include "source_estate/module_charge/chgmixing.h" +#include "source_estate/update_pot.h" +#include "source_lcao/module_dftu/dftu.h" +#include "source_lcao/module_deltaspin/spin_constrain.h" + +void module_charge::chgmixing_ks(const int iter, // scf iteration number + UnitCell& ucell, + elecstate::ElecState* pelec, + Charge &chr, // charge density + Charge_Mixing* p_chgmix, // charge mixing class + const int nrxx, // charge density + double &drho, // charge density deviation + bool &oscillate_esolver, // whether the esolver has oscillation of charge density + bool &conv_esolver, + const double &hsolver_error, + const double &scf_thr, + const double &scf_ene_thr, + const bool converged_u, // mohan add 2025-11-06 + const Input_para& inp) // input parameters +{ + + if (PARAM.globalv.ks_run) + { + // mixing will restart at p_chgmix->mixing_restart steps + if (drho <= inp.mixing_restart && inp.mixing_restart > 0.0 + && p_chgmix->mixing_restart_step > iter) + { + p_chgmix->mixing_restart_step = iter + 1; + } + + if (inp.scf_os_stop) // if oscillation is detected, SCF will stop + { + oscillate_esolver = p_chgmix->if_scf_oscillate(iter, drho, + inp.scf_os_ndim, inp.scf_os_thr); + } + + // drho will be 0 at p_chgmix->mixing_restart step, which is + // not ground state + bool not_restart_step = !(iter == p_chgmix->mixing_restart_step && inp.mixing_restart > 0.0); + + conv_esolver = (drho < scf_thr && not_restart_step && converged_u); + + // add energy threshold for SCF convergence + if (scf_ene_thr > 0.0) + { + // calculate energy of output charge density + elecstate::update_pot(ucell, pelec, chr, conv_esolver); + pelec->cal_energies(2); // 2 means Kohn-Sham functional + // now, etot_old is the energy of input density, while etot is the energy of output density + pelec->f_en.etot_delta = pelec->f_en.etot - pelec->f_en.etot_old; + // output etot_delta + GlobalV::ofs_running << " DeltaE_womix = " << pelec->f_en.etot_delta * ModuleBase::Ry_to_eV << " eV" + << std::endl; + if (iter > 1 && conv_esolver == 1) // only check when density is converged + { + // update the convergence flag + conv_esolver + = (std::abs(pelec->f_en.etot_delta * ModuleBase::Ry_to_eV) < scf_ene_thr); + } + } + + // If drho < hsolver_error in the first iter or drho < scf_thr, we + // do not change rho. + if (drho < hsolver_error || conv_esolver || inp.calculation == "nscf") + { + if (drho < hsolver_error) + { + GlobalV::ofs_warning << " drho < hsolver_error, keep " + "charge density unchanged." + << std::endl; + } + } + else + { + //----------charge mixing--------------- + // mixing will restart after p_chgmix->mixing_restart + // steps + if (inp.mixing_restart > 0 && iter == p_chgmix->mixing_restart_step - 1 + && drho <= inp.mixing_restart) + { + // do not mix charge density + } + else + { + p_chgmix->mix_rho(&chr); // update chr->rho by mixing + } + if (inp.scf_thr_type == 2) + { + chr.renormalize_rho(); // renormalize rho in R-space would + // induce a error in K-space + } + //----------charge mixing done----------- + } + } + +#ifdef __MPI + MPI_Bcast(&drho, 1, MPI_DOUBLE, 0, BP_WORLD); + + // change MPI_DOUBLE to MPI_C_BOOL, mohan 2025-04-13 + MPI_Bcast(&conv_esolver, 1, MPI_C_BOOL, 0, BP_WORLD); + + assert(nrxx>=0); // mohan add 2025-10-18 + MPI_Bcast(chr.rho[0], nrxx, MPI_DOUBLE, 0, BP_WORLD); +#endif + + // mohan move the following code here, 2025-10-18 + // SCF restart information + if (PARAM.inp.mixing_restart > 0 + && iter == p_chgmix->mixing_restart_step - 1 + && iter != PARAM.inp.scf_nmax) + { + p_chgmix->mixing_restart_last = iter; + std::cout << " SCF restart after this step!" << std::endl; + } + + return; +} + + +void module_charge::chgmixing_ks_pw(const int iter, // scf iteration number + Charge_Mixing* p_chgmix, // charge mixing class + Plus_U &dftu, // mohan add 2025-11-06 + const Input_para& inp) // input parameters +{ + ModuleBase::TITLE("module_charge", "chgmixing_ks_pw"); + + if (iter == 1) + { + p_chgmix->init_mixing(); + p_chgmix->mixing_restart_step = inp.scf_nmax + 1; + } + + // For mixing restart + if (iter == p_chgmix->mixing_restart_step && inp.mixing_restart > 0.0) + { + p_chgmix->init_mixing(); + p_chgmix->mixing_restart_count++; + + if (inp.dft_plus_u) + { + if (dftu.uramping > 0.01 && !dftu.u_converged()) + { + p_chgmix->mixing_restart_step = inp.scf_nmax + 1; + } + if (dftu.uramping > 0.01) + { + bool do_uramping = true; + if (inp.sc_mag_switch) + { + spinconstrain::SpinConstrain>& sc + = spinconstrain::SpinConstrain>::getScInstance(); + if (!sc.mag_converged()) // skip uramping if mag not converged + { + do_uramping = false; + } + } + if (do_uramping) + { + dftu.uramping_update(); // update U by uramping if uramping > 0.01 + std::cout << " U-Ramping! Current U = "; + for (int i = 0; i < dftu.U0.size(); i++) + { + std::cout << dftu.U[i] * ModuleBase::Ry_to_eV << " "; + } + std::cout << " eV " << std::endl; + } + } + } + } + + return; +} + +void module_charge::chgmixing_ks_lcao(const int iter, // scf iteration number + Charge_Mixing* p_chgmix, // charge mixing class + Plus_U &dftu, // mohan add 2025-11-06 + const int nnr, // dimension of density matrix + const Input_para& inp) // input parameters +{ + ModuleBase::TITLE("module_charge", "chgmixing_ks_lcao"); + + if (iter == 1) + { + p_chgmix->mix_reset(); // init mixing + p_chgmix->mixing_restart_step = inp.scf_nmax + 1; + p_chgmix->mixing_restart_count = 0; + // this output will be removed once the feeature is stable + if (dftu.uramping > 0.01) + { + std::cout << " U-Ramping! Current U = "; + for (int i = 0; i < dftu.U0.size(); i++) + { + std::cout << dftu.U[i] * ModuleBase::Ry_to_eV << " "; + } + std::cout << " eV " << std::endl; + } + } + + // for mixing restart + if (iter == p_chgmix->mixing_restart_step && inp.mixing_restart > 0.0) + { + p_chgmix->init_mixing(); + p_chgmix->mixing_restart_count++; + if (inp.dft_plus_u) + { + dftu.uramping_update(); // update U by uramping if uramping > 0.01 + if (dftu.uramping > 0.01) + { + std::cout << " U-Ramping! Current U = "; + for (int i = 0; i < dftu.U0.size(); i++) + { + std::cout << dftu.U[i] * ModuleBase::Ry_to_eV << " "; + } + std::cout << " eV " << std::endl; + } + if (dftu.uramping > 0.01 && !dftu.u_converged()) + { + p_chgmix->mixing_restart_step = inp.scf_nmax + 1; + } + } + if (inp.mixing_dmr) // for mixing_dmr + { + // allocate memory for dmr_mdata + p_chgmix->allocate_mixing_dmr(nnr); + } + } +} diff --git a/source/source_estate/module_charge/chgmixing.h b/source/source_estate/module_charge/chgmixing.h new file mode 100644 index 0000000000..4a04a0880d --- /dev/null +++ b/source/source_estate/module_charge/chgmixing.h @@ -0,0 +1,43 @@ +#ifndef CHGMIXING_H +#define CHGMIXING_H + +#include "source_estate/elecstate.h" // use pelec +#include "source_estate/module_charge/charge.h" // use chr +#include "source_estate/module_charge/charge_mixing.h" // use p_chgmix +#include "source_io/module_parameter/input_parameter.h" // use Input_para +#include "source_cell/unitcell.h" +#include "source_lcao/module_dftu/dftu.h" // mohan add 2025-11-06 + +namespace module_charge +{ + +void chgmixing_ks(const int iter, // scf iteration number + UnitCell& ucell, + elecstate::ElecState* pelec, + Charge &chr, // charge density + Charge_Mixing* p_chgmix, // charge mixing class + const int nrxx, // charge density + double &drho, // charge density deviation + bool &oscillate_esolver, // whether the esolver has oscillation of charge density + bool &conv_esolver, + const double &hsolver_error, + const double &scf_thr, + const double &scf_ene_thr, + const bool converged_u, // mohan add 2025-11-06 + const Input_para& inp); // input parameters + +void chgmixing_ks_pw(const int iter, + Charge_Mixing* p_chgmix, + Plus_U &dftu, // mohan add 2025-11-06 + const Input_para& inp); // input parameters + +void chgmixing_ks_lcao(const int iter, // scf iteration number + Charge_Mixing* p_chgmix, // charge mixing class + Plus_U &dftu, // mohan add 2025-11-06 + const int nnr, // dimension of density matrix + const Input_para& inp); // input parameters + +} + + +#endif diff --git a/source/source_estate/module_charge/symmetry_rho.cpp b/source/source_estate/module_charge/symmetry_rho.cpp index f6bc1272f9..19b67967c7 100644 --- a/source/source_estate/module_charge/symmetry_rho.cpp +++ b/source/source_estate/module_charge/symmetry_rho.cpp @@ -10,38 +10,58 @@ Symmetry_rho::~Symmetry_rho() { } +void Symmetry_rho::symmetrize_rho(const int nspin, + const Charge& chr, + const ModulePW::PW_Basis* pw, + ModuleSymmetry::Symmetry& symm) +{ + Symmetry_rho srho; + for (int is = 0; is < nspin; is++) + { + srho.begin(is, chr, pw, symm); + } +} + void Symmetry_rho::begin(const int& spin_now, - const Charge& CHR, + const Charge& chr, const ModulePW::PW_Basis* rho_basis, ModuleSymmetry::Symmetry& symm) const { assert(spin_now < 4); // added by zhengdy-soc - if (ModuleSymmetry::Symmetry::symm_flag != 1) { - return; -} + if (ModuleSymmetry::Symmetry::symm_flag != 1) + { + return; + } + + ModuleBase::TITLE("Symmetry_rho", "begin"); + ModuleBase::timer::tick("Symmetry_rho","begin"); + // both parallel and serial // if(symm.nrot==symm.nrotk) //pure point-group, do rho_symm in real space // { -// psymm(CHR.rho[spin_now], rho_basis, Pgrid, symm); -// if(XC_Functional::get_ked_flag()) psymm(CHR.kin_r[spin_now], +// psymm(chr.rho[spin_now], rho_basis, Pgrid, symm); +// if(XC_Functional::get_ked_flag()) psymm(chr.kin_r[spin_now], // rho_basis,Pgrid,symm); // } // else //space group, do rho_symm in reciprocal space -{ - rho_basis->real2recip(CHR.rho[spin_now], CHR.rhog[spin_now]); - psymmg(CHR.rhog[spin_now], rho_basis, symm); // need to modify - rho_basis->recip2real(CHR.rhog[spin_now], CHR.rho[spin_now]); - if (XC_Functional::get_ked_flag() || CHR.cal_elf) + rho_basis->real2recip(chr.rho[spin_now], chr.rhog[spin_now]); + + psymmg(chr.rhog[spin_now], rho_basis, symm); // need to modify + + rho_basis->recip2real(chr.rhog[spin_now], chr.rho[spin_now]); + + if (XC_Functional::get_ked_flag() || chr.cal_elf) { // Use std::vector to manage kin_g instead of raw pointer - std::vector> kin_g(CHR.ngmc); - rho_basis->real2recip(CHR.kin_r[spin_now], kin_g.data()); + std::vector> kin_g(chr.ngmc); + rho_basis->real2recip(chr.kin_r[spin_now], kin_g.data()); psymmg(kin_g.data(), rho_basis, symm); - rho_basis->recip2real(kin_g.data(), CHR.kin_r[spin_now]); - } + rho_basis->recip2real(kin_g.data(), chr.kin_r[spin_now]); } + + ModuleBase::timer::tick("Symmetry_rho","begin"); return; } @@ -59,6 +79,10 @@ void Symmetry_rho::begin(const int& spin_now, { return; } + + ModuleBase::TITLE("Symmetry_rho", "begin"); + ModuleBase::timer::tick("Symmetry_rho","begin"); + // both parallel and serial // if(symm.nrot==symm.nrotk) //pure point-group, do rho_symm in real space // { @@ -81,6 +105,8 @@ void Symmetry_rho::begin(const int& spin_now, rho_basis->recip2real(kin_g.data(), kin_r[spin_now]); } } + + ModuleBase::timer::tick("Symmetry_rho","begin"); return; } @@ -89,8 +115,11 @@ void Symmetry_rho::psymm(double* rho_part, Parallel_Grid& Pgrid, ModuleSymmetry::Symmetry& symm) const { + ModuleBase::TITLE("Symmetry_rho", "psymm"); + ModuleBase::timer::tick("Symmetry_rho","psymm"); + #ifdef __MPI - // (1) reduce all rho from the first pool. + // reduce all rho from the first pool. std::vector rhotot; if (GlobalV::MY_RANK == 0) { @@ -99,7 +128,6 @@ void Symmetry_rho::psymm(double* rho_part, } Pgrid.reduce(rhotot.data(), rho_part, false); - // (2) if (GlobalV::MY_RANK == 0) { symm.rho_symmetry(rhotot.data(), rho_basis->nx, rho_basis->ny, rho_basis->nz); @@ -126,8 +154,9 @@ void Symmetry_rho::psymm(double* rho_part, #ifdef __MPI } - // (3) -Pgrid.bcast(rhotot.data(), rho_part, GlobalV::MY_RANK); + Pgrid.bcast(rhotot.data(), rho_part, GlobalV::MY_RANK); #endif + + ModuleBase::timer::tick("Symmetry_rho","psymm"); return; -} \ No newline at end of file +} diff --git a/source/source_estate/module_charge/symmetry_rho.h b/source/source_estate/module_charge/symmetry_rho.h index 638903fd93..98d0650167 100644 --- a/source/source_estate/module_charge/symmetry_rho.h +++ b/source/source_estate/module_charge/symmetry_rho.h @@ -11,6 +11,22 @@ class Symmetry_rho Symmetry_rho(); ~Symmetry_rho(); + /** + * @brief Symmetrize charge density for all spin channels + * + * This is a static helper function that symmetrizes the charge density + * for all spin channels by calling begin() for each spin. + * + * @param nspin Number of spin channels + * @param chr Charge object containing the density + * @param pw Plane wave basis + * @param symm Symmetry object + */ + static void symmetrize_rho(const int nspin, + const Charge& chr, + const ModulePW::PW_Basis* pw, + ModuleSymmetry::Symmetry& symm); + void begin(const int& spin_now, const Charge& CHR, const ModulePW::PW_Basis* pw, diff --git a/source/source_estate/module_charge/symmetry_rhog.cpp b/source/source_estate/module_charge/symmetry_rhog.cpp index aae2103b75..3a537560bb 100644 --- a/source/source_estate/module_charge/symmetry_rhog.cpp +++ b/source/source_estate/module_charge/symmetry_rhog.cpp @@ -1,5 +1,5 @@ #include "symmetry_rho.h" -#include "source_pw/module_pwdft/global.h" +#include "source_base/parallel_reduce.h" #include "source_base/parallel_global.h" #include "source_hamilt/module_xc/xc_functional.h" @@ -10,14 +10,14 @@ void Symmetry_rho::psymmg(std::complex* rhog_part, const ModulePW::PW_Ba int * fftixy2is = new int [rho_basis->fftnxy]; rho_basis->getfftixy2is(fftixy2is); //current proc #ifdef __MPI - MPI_Allreduce(MPI_IN_PLACE, fftixy2is, rho_basis->fftnxy, MPI_INT, MPI_SUM, POOL_WORLD); + Parallel_Reduce::reduce_pool(fftixy2is, rho_basis->fftnxy); if(rho_basis->poolnproc>1) for (int i=0;ifftnxy;++i) fftixy2is[i]+=rho_basis->poolnproc-1; // (2) reduce all rho from the first pool. std::complex* rhogtot; - int* ig2isztot; + int* ig2isztot = nullptr; if(GlobalV::RANK_IN_POOL == 0) { rhogtot = new std::complex[rho_basis->npwtot]; @@ -234,4 +234,4 @@ void Symmetry_rho::get_ixyz2ipw(const ModulePW::PW_Basis *rho_basis, delete[] nstnz_start; delete[] ipsz2ipw; return; -} \ No newline at end of file +} diff --git a/source/source_estate/module_dm/cal_dm_psi.cpp b/source/source_estate/module_dm/cal_dm_psi.cpp index 7f68838c94..ac52854be1 100644 --- a/source/source_estate/module_dm/cal_dm_psi.cpp +++ b/source/source_estate/module_dm/cal_dm_psi.cpp @@ -15,8 +15,8 @@ void cal_dm_psi(const Parallel_Orbitals* ParaV, const psi::Psi& wfc, elecstate::DensityMatrix& DM) { - ModuleBase::TITLE("elecstate", "cal_dm"); - ModuleBase::timer::tick("elecstate", "cal_dm"); + ModuleBase::TITLE("elecstate", "cal_dm_psi"); + ModuleBase::timer::tick("elecstate", "cal_dm_psi"); // dm.resize(wfc.get_nk(), ParaV->ncol, ParaV->nrow); const int nbands_local = wfc.get_nbands(); @@ -33,13 +33,10 @@ void cal_dm_psi(const Parallel_Orbitals* ParaV, // dm[ik].create(ParaV->ncol, ParaV->nrow); // wg_wfc(ib,iw) = wg[ib] * wfc(ib,iw); - psi::Psi wg_wfc(1, - wfc.get_nbands(), - wfc.get_nbasis(), - wfc.get_nbasis(), - true); - wg_wfc.set_all_psi(wfc.get_pointer(), wg_wfc.size()); + psi::Psi wg_wfc(1, wfc.get_nbands(), + wfc.get_nbasis(), wfc.get_nbasis(), true); + wg_wfc.set_all_psi(wfc.get_pointer(), wg_wfc.size()); int ib_global = 0; for (int ib_local = 0; ib_local < nbands_local; ++ib_local) @@ -50,7 +47,6 @@ void cal_dm_psi(const Parallel_Orbitals* ParaV, if (ib_global >= wg.nc) { break; - ModuleBase::WARNING_QUIT("ElecStateLCAO::cal_dm", "please check global2local_col!"); } } if (ib_global >= wg.nc) @@ -70,7 +66,7 @@ void cal_dm_psi(const Parallel_Orbitals* ParaV, psiMulPsi(wg_wfc, wfc, dmk_pointer); #endif } - ModuleBase::timer::tick("elecstate", "cal_dm"); + ModuleBase::timer::tick("elecstate", "cal_dm_psi"); return; } @@ -80,8 +76,8 @@ void cal_dm_psi(const Parallel_Orbitals* ParaV, const psi::Psi>& wfc, elecstate::DensityMatrix, double>& DM) { - ModuleBase::TITLE("elecstate", "cal_dm"); - ModuleBase::timer::tick("elecstate", "cal_dm"); + ModuleBase::TITLE("elecstate", "cal_dm_psi"); + ModuleBase::timer::tick("elecstate", "cal_dm_psi"); // dm.resize(wfc.get_nk(), ParaV->ncol, ParaV->nrow); const int nbands_local = wfc.get_nbands(); @@ -104,6 +100,7 @@ void cal_dm_psi(const Parallel_Orbitals* ParaV, const std::complex* pwfc = wfc.get_pointer(); std::complex* pwg_wfc = wg_wfc.get_pointer(); + #ifdef _OPENMP #pragma omp parallel for schedule(static, 1024) #endif @@ -139,8 +136,9 @@ void cal_dm_psi(const Parallel_Orbitals* ParaV, if (PARAM.inp.ks_solver == "cg_in_lcao") { psiMulPsi(wg_wfc, wfc, dmk_pointer); - } else - { + } + else + { psiMulPsiMpi(wg_wfc, wfc, dmk_pointer, ParaV->desc_wfc, ParaV->desc); } #else @@ -148,7 +146,7 @@ void cal_dm_psi(const Parallel_Orbitals* ParaV, #endif } - ModuleBase::timer::tick("elecstate", "cal_dm"); + ModuleBase::timer::tick("elecstate", "cal_dm_psi"); return; } @@ -166,24 +164,24 @@ void psiMulPsiMpi(const psi::Psi& psi1, const int nlocal = desc_dm[2]; const int nbands = desc_psi[3]; - pdgemm_(&N_char, - &T_char, - &nlocal, - &nlocal, - &nbands, - &one_float, + ScalapackConnector::gemm(N_char, + T_char, + nlocal, + nlocal, + nbands, + one_float, psi1.get_pointer(), - &one_int, - &one_int, + one_int, + one_int, desc_psi, psi2.get_pointer(), - &one_int, - &one_int, + one_int, + one_int, desc_psi, - &zero_float, + zero_float, dm_out, - &one_int, - &one_int, + one_int, + one_int, desc_dm); ModuleBase::timer::tick("psiMulPsiMpi", "pdgemm"); } @@ -200,24 +198,24 @@ void psiMulPsiMpi(const psi::Psi>& psi1, const char N_char = 'N', T_char = 'T'; const int nlocal = desc_dm[2]; const int nbands = desc_psi[3]; - pzgemm_(&N_char, - &T_char, - &nlocal, - &nlocal, - &nbands, - &one_complex, + ScalapackConnector::gemm(N_char, + T_char, + nlocal, + nlocal, + nbands, + one_complex, psi1.get_pointer(), - &one_int, - &one_int, + one_int, + one_int, desc_psi, psi2.get_pointer(), - &one_int, - &one_int, + one_int, + one_int, desc_psi, - &zero_complex, + zero_complex, dm_out, - &one_int, - &one_int, + one_int, + one_int, desc_dm); ModuleBase::timer::tick("psiMulPsiMpi", "pdgemm"); } @@ -231,19 +229,19 @@ void psiMulPsi(const psi::Psi& psi1, const psi::Psi& psi2, doubl const char N_char = 'N', T_char = 'T'; const int nlocal = psi1.get_nbasis(); const int nbands = psi1.get_nbands(); - dgemm_(&N_char, - &T_char, - &nlocal, - &nlocal, - &nbands, - &one_float, + BlasConnector::gemm_cm(N_char, + T_char, + nlocal, + nlocal, + nbands, + one_float, psi1.get_pointer(), - &nlocal, + nlocal, psi2.get_pointer(), - &nlocal, - &zero_float, + nlocal, + zero_float, dm_out, - &nlocal); + nlocal); } void psiMulPsi(const psi::Psi>& psi1, @@ -256,19 +254,19 @@ void psiMulPsi(const psi::Psi>& psi1, const int nbands = psi1.get_nbands(); const std::complex one_complex = {1.0, 0.0}; const std::complex zero_complex = {0.0, 0.0}; - zgemm_(&N_char, - &T_char, - &nlocal, - &nlocal, - &nbands, - &one_complex, + BlasConnector::gemm_cm(N_char, + T_char, + nlocal, + nlocal, + nbands, + one_complex, psi1.get_pointer(), - &nlocal, + nlocal, psi2.get_pointer(), - &nlocal, - &zero_complex, + nlocal, + zero_complex, dm_out, - &nlocal); + nlocal); } } // namespace elecstate diff --git a/source/source_estate/module_dm/cal_edm_tddft.cpp b/source/source_estate/module_dm/cal_edm_tddft.cpp index dd934d8a00..3196283c6b 100644 --- a/source/source_estate/module_dm/cal_edm_tddft.cpp +++ b/source/source_estate/module_dm/cal_edm_tddft.cpp @@ -1,35 +1,80 @@ #include "cal_edm_tddft.h" +#include "source_base/module_container/ATen/core/tensor.h" // For ct::Tensor +#include "source_base/module_container/ATen/kernels/blas.h" +#include "source_base/module_container/ATen/kernels/lapack.h" +#include "source_base/module_container/ATen/kernels/memory.h" // memory operations (Tensor) +#include "source_base/module_device/memory_op.h" // memory operations #include "source_base/module_external/lapack_connector.h" #include "source_base/module_external/scalapack_connector.h" +#include "source_io/module_parameter/parameter.h" // use PARAM.globalv +#include "source_lcao/module_rt/gather_mat.h" // gatherMatrix and distributeMatrix +#include "source_lcao/module_rt/propagator.h" // Include header for create_identity_matrix + namespace elecstate { +void print_local_matrix(std::ostream& os, + const std::complex* matrix_data, + int local_rows, + int local_cols, + const std::string& matrix_name, + int rank) +{ + if (!matrix_name.empty() || rank >= 0) + { + os << "=== "; + if (!matrix_name.empty()) + { + os << "Matrix: " << matrix_name; + if (rank >= 0) + os << " "; + } + if (rank >= 0) + { + os << "(Process: " << rank + 1 << ")"; + } + os << " (Local dims: " << local_rows << " x " << local_cols << ") ===" << std::endl; + } + + os << std::fixed << std::setprecision(10) << std::showpos; + + for (int i = 0; i < local_rows; ++i) // Iterate over rows (i) + { + for (int j = 0; j < local_cols; ++j) // Iterate over columns (j) + { + // For column-major storage, element (i, j) is at index i + j * LDA + // where LDA (leading dimension) is typically the number of *rows* in the local block. + int idx = i + j * local_rows; + os << "(" << std::real(matrix_data[idx]) << "," << std::imag(matrix_data[idx]) << ") "; + } + os << std::endl; // New line after each row + } + os.unsetf(std::ios_base::fixed | std::ios_base::showpos); + os << std::endl; +} + // use the original formula (Hamiltonian matrix) to calculate energy density matrix void cal_edm_tddft(Parallel_Orbitals& pv, - elecstate::ElecState* pelec, + LCAO_domain::Setup_DM>& dmat, K_Vectors& kv, hamilt::Hamilt>* p_hamilt) { - // mohan add 2024-03-27 + ModuleBase::TITLE("elecstate", "cal_edm_tddft"); + ModuleBase::timer::tick("TD_Efficiency", "cal_edm_tddft"); + const int nlocal = PARAM.globalv.nlocal; assert(nlocal >= 0); - auto _pelec = dynamic_cast>*>(pelec); - - _pelec->get_DM()->EDMK.resize(kv.get_nks()); + dmat.dm->EDMK.resize(kv.get_nks()); for (int ik = 0; ik < kv.get_nks(); ++ik) { p_hamilt->updateHk(ik); - std::complex* tmp_dmk = _pelec->get_DM()->get_DMK_pointer(ik); - ModuleBase::ComplexMatrix& tmp_edmk = _pelec->get_DM()->EDMK[ik]; + std::complex* tmp_dmk = dmat.dm->get_DMK_pointer(ik); + ModuleBase::ComplexMatrix& tmp_edmk = dmat.dm->EDMK[ik]; #ifdef __MPI - - // mohan add 2024-03-27 - //! be careful, the type of nloc is 'long' - //! whether the long type is safe, needs more discussion - const long nloc = pv.nloc; + const int nloc = pv.nloc; const int ncol = pv.ncol; const int nrow = pv.nrow; @@ -54,14 +99,14 @@ void cal_edm_tddft(Parallel_Orbitals& pv, hamilt::MatrixBlock> s_mat; p_hamilt->matrix(h_mat, s_mat); - zcopy_(&nloc, h_mat.p, &inc, Htmp, &inc); - zcopy_(&nloc, s_mat.p, &inc, Sinv, &inc); + BlasConnector::copy(nloc, h_mat.p, inc, Htmp, inc); + BlasConnector::copy(nloc, s_mat.p, inc, Sinv, inc); vector ipiv(nloc, 0); int info = 0; const int one_int = 1; - pzgetrf_(&nlocal, &nlocal, Sinv, &one_int, &one_int, pv.desc, ipiv.data(), &info); + ScalapackConnector::getrf(nlocal, nlocal, Sinv, one_int, one_int, pv.desc, ipiv.data(), &info); int lwork = -1; int liwork = -1; @@ -72,136 +117,141 @@ void cal_edm_tddft(Parallel_Orbitals& pv, // if liwork = -1, then the size of iwork is (at least) of length 1. std::vector iwork(1, 0); - pzgetri_(&nlocal, - Sinv, - &one_int, - &one_int, - pv.desc, - ipiv.data(), - work.data(), - &lwork, - iwork.data(), - &liwork, - &info); + ScalapackConnector::getri(nlocal, + Sinv, + one_int, + one_int, + pv.desc, + ipiv.data(), + work.data(), + &lwork, + iwork.data(), + &liwork, + &info); lwork = work[0].real(); work.resize(lwork, 0); liwork = iwork[0]; iwork.resize(liwork, 0); - pzgetri_(&nlocal, - Sinv, - &one_int, - &one_int, - pv.desc, - ipiv.data(), - work.data(), - &lwork, - iwork.data(), - &liwork, - &info); + ScalapackConnector::getri(nlocal, + Sinv, + one_int, + one_int, + pv.desc, + ipiv.data(), + work.data(), + &lwork, + iwork.data(), + &liwork, + &info); const char N_char = 'N'; const char T_char = 'T'; - const std::complex one_float = {1.0, 0.0}; - const std::complex zero_float = {0.0, 0.0}; - const std::complex half_float = {0.5, 0.0}; - - pzgemm_(&N_char, - &N_char, - &nlocal, - &nlocal, - &nlocal, - &one_float, - Htmp, - &one_int, - &one_int, - pv.desc, - Sinv, - &one_int, - &one_int, - pv.desc, - &zero_float, - tmp1, - &one_int, - &one_int, - pv.desc); - - pzgemm_(&T_char, - &N_char, - &nlocal, - &nlocal, - &nlocal, - &one_float, - tmp1, - &one_int, - &one_int, - pv.desc, - tmp_dmk, - &one_int, - &one_int, - pv.desc, - &zero_float, - tmp2, - &one_int, - &one_int, - pv.desc); - - pzgemm_(&N_char, - &N_char, - &nlocal, - &nlocal, - &nlocal, - &one_float, - Sinv, - &one_int, - &one_int, - pv.desc, - Htmp, - &one_int, - &one_int, - pv.desc, - &zero_float, - tmp3, - &one_int, - &one_int, - pv.desc); - - pzgemm_(&N_char, - &T_char, - &nlocal, - &nlocal, - &nlocal, - &one_float, - tmp_dmk, - &one_int, - &one_int, - pv.desc, - tmp3, - &one_int, - &one_int, - pv.desc, - &zero_float, - tmp4, - &one_int, - &one_int, - pv.desc); - - pzgeadd_(&N_char, - &nlocal, - &nlocal, - &half_float, - tmp2, - &one_int, - &one_int, - pv.desc, - &half_float, - tmp4, - &one_int, - &one_int, - pv.desc); - - zcopy_(&nloc, tmp4, &inc, tmp_edmk.c, &inc); + const std::complex one_complex = {1.0, 0.0}; + const std::complex zero_complex = {0.0, 0.0}; + const std::complex half_complex = {0.5, 0.0}; + + // tmp1 = Htmp * Sinv + ScalapackConnector::gemm(N_char, + N_char, + nlocal, + nlocal, + nlocal, + one_complex, + Htmp, + one_int, + one_int, + pv.desc, + Sinv, + one_int, + one_int, + pv.desc, + zero_complex, + tmp1, + one_int, + one_int, + pv.desc); + + // tmp2 = tmp1^T * tmp_dmk + ScalapackConnector::gemm(T_char, + N_char, + nlocal, + nlocal, + nlocal, + one_complex, + tmp1, + one_int, + one_int, + pv.desc, + tmp_dmk, + one_int, + one_int, + pv.desc, + zero_complex, + tmp2, + one_int, + one_int, + pv.desc); + + // tmp3 = Sinv * Htmp + ScalapackConnector::gemm(N_char, + N_char, + nlocal, + nlocal, + nlocal, + one_complex, + Sinv, + one_int, + one_int, + pv.desc, + Htmp, + one_int, + one_int, + pv.desc, + zero_complex, + tmp3, + one_int, + one_int, + pv.desc); + + // tmp4 = tmp_dmk * tmp3^T + ScalapackConnector::gemm(N_char, + T_char, + nlocal, + nlocal, + nlocal, + one_complex, + tmp_dmk, + one_int, + one_int, + pv.desc, + tmp3, + one_int, + one_int, + pv.desc, + zero_complex, + tmp4, + one_int, + one_int, + pv.desc); + + // tmp4 = 0.5 * (tmp2 + tmp4) + ScalapackConnector::geadd(N_char, + nlocal, + nlocal, + half_complex, + tmp2, + one_int, + one_int, + pv.desc, + half_complex, + tmp4, + one_int, + one_int, + pv.desc); + + BlasConnector::copy(nloc, tmp4, inc, tmp_edmk.c, inc); delete[] Htmp; delete[] Sinv; @@ -219,7 +269,7 @@ void cal_edm_tddft(Parallel_Orbitals& pv, hamilt::MatrixBlock> s_mat; p_hamilt->matrix(h_mat, s_mat); - // cout<<"hmat "<>& dmat, + K_Vectors& kv, + hamilt::Hamilt>* p_hamilt) +{ + ModuleBase::TITLE("elecstate", "cal_edm_tddft_tensor"); + ModuleBase::timer::tick("TD_Efficiency", "cal_edm_tddft"); + + const int nlocal = PARAM.globalv.nlocal; + assert(nlocal >= 0); + dmat.dm->EDMK.resize(kv.get_nks()); + + for (int ik = 0; ik < kv.get_nks(); ++ik) + { + p_hamilt->updateHk(ik); + std::complex* tmp_dmk = dmat.dm->get_DMK_pointer(ik); + ModuleBase::ComplexMatrix& tmp_edmk = dmat.dm->EDMK[ik]; + +#ifdef __MPI + const int nloc = pv.nloc; + const int ncol = pv.ncol; + const int nrow = pv.nrow; + + // Initialize EDMK matrix + tmp_edmk.create(ncol, nrow); + + // Allocate Tensor objects on CPU + ct::Tensor Htmp_tensor(ct::DataType::DT_COMPLEX_DOUBLE, ct::DeviceType::CpuDevice, ct::TensorShape({nloc})); + Htmp_tensor.zero(); + + ct::Tensor Sinv_tensor(ct::DataType::DT_COMPLEX_DOUBLE, ct::DeviceType::CpuDevice, ct::TensorShape({nloc})); + Sinv_tensor.zero(); + + ct::Tensor tmp1_tensor(ct::DataType::DT_COMPLEX_DOUBLE, ct::DeviceType::CpuDevice, ct::TensorShape({nloc})); + tmp1_tensor.zero(); + + ct::Tensor tmp2_tensor(ct::DataType::DT_COMPLEX_DOUBLE, ct::DeviceType::CpuDevice, ct::TensorShape({nloc})); + tmp2_tensor.zero(); + + ct::Tensor tmp3_tensor(ct::DataType::DT_COMPLEX_DOUBLE, ct::DeviceType::CpuDevice, ct::TensorShape({nloc})); + tmp3_tensor.zero(); + + ct::Tensor tmp4_tensor(ct::DataType::DT_COMPLEX_DOUBLE, ct::DeviceType::CpuDevice, ct::TensorShape({nloc})); + tmp4_tensor.zero(); + + // Get raw pointers from tensors for ScaLAPACK calls + std::complex* Htmp_ptr = Htmp_tensor.data>(); + std::complex* Sinv_ptr = Sinv_tensor.data>(); + std::complex* tmp1_ptr = tmp1_tensor.data>(); + std::complex* tmp2_ptr = tmp2_tensor.data>(); + std::complex* tmp3_ptr = tmp3_tensor.data>(); + std::complex* tmp4_ptr = tmp4_tensor.data>(); + + const int inc = 1; + hamilt::MatrixBlock> h_mat; + hamilt::MatrixBlock> s_mat; + p_hamilt->matrix(h_mat, s_mat); + + // Copy Hamiltonian and Overlap matrices into Tensor buffers using BlasConnector + BlasConnector::copy(nloc, h_mat.p, inc, Htmp_ptr, inc); + BlasConnector::copy(nloc, s_mat.p, inc, Sinv_ptr, inc); + + int myid = 0; + const int root_proc = 0; + MPI_Comm_rank(MPI_COMM_WORLD, &myid); + + // --- ScaLAPACK Inversion of S --- + ct::Tensor ipiv(ct::DataType::DT_INT, + ct::DeviceType::CpuDevice, + ct::TensorShape({pv.nrow + pv.nb})); // Size for ScaLAPACK pivot array + ipiv.zero(); + int* ipiv_ptr = ipiv.data(); + + int info = 0; + const int one_int = 1; + ScalapackConnector::getrf(nlocal, nlocal, Sinv_ptr, one_int, one_int, pv.desc, ipiv_ptr, &info); + + int lwork = -1; + int liwork = -1; + ct::Tensor work_query(ct::DataType::DT_COMPLEX_DOUBLE, ct::DeviceType::CpuDevice, ct::TensorShape({1})); + ct::Tensor iwork_query(ct::DataType::DT_INT, ct::DeviceType::CpuDevice, ct::TensorShape({1})); + + ScalapackConnector::getri(nlocal, + Sinv_ptr, + one_int, + one_int, + pv.desc, + ipiv_ptr, + work_query.data>(), + &lwork, + iwork_query.data(), + &liwork, + &info); + + // Resize work arrays based on query results + lwork = work_query.data>()[0].real(); + work_query.resize(ct::TensorShape({lwork})); + liwork = iwork_query.data()[0]; + iwork_query.resize(ct::TensorShape({liwork})); + + ScalapackConnector::getri(nlocal, + Sinv_ptr, + one_int, + one_int, + pv.desc, + ipiv_ptr, + work_query.data>(), + &lwork, + iwork_query.data(), + &liwork, + &info); + + // --- EDM Calculation using ScaLAPACK --- + const char N_char = 'N'; + const char T_char = 'T'; + const std::complex one_complex = {1.0, 0.0}; + const std::complex zero_complex = {0.0, 0.0}; + const std::complex half_complex = {0.5, 0.0}; + + // tmp1 = Htmp * Sinv + ScalapackConnector::gemm(N_char, + N_char, + nlocal, + nlocal, + nlocal, + one_complex, + Htmp_ptr, + one_int, + one_int, + pv.desc, + Sinv_ptr, + one_int, + one_int, + pv.desc, + zero_complex, + tmp1_ptr, + one_int, + one_int, + pv.desc); + + // tmp2 = tmp1^T * tmp_dmk + ScalapackConnector::gemm(T_char, + N_char, + nlocal, + nlocal, + nlocal, + one_complex, + tmp1_ptr, + one_int, + one_int, + pv.desc, + tmp_dmk, + one_int, + one_int, + pv.desc, + zero_complex, + tmp2_ptr, + one_int, + one_int, + pv.desc); + + // tmp3 = Sinv * Htmp + ScalapackConnector::gemm(N_char, + N_char, + nlocal, + nlocal, + nlocal, + one_complex, + Sinv_ptr, + one_int, + one_int, + pv.desc, + Htmp_ptr, + one_int, + one_int, + pv.desc, + zero_complex, + tmp3_ptr, + one_int, + one_int, + pv.desc); + + // tmp4 = tmp_dmk * tmp3^T + ScalapackConnector::gemm(N_char, + T_char, + nlocal, + nlocal, + nlocal, + one_complex, + tmp_dmk, + one_int, + one_int, + pv.desc, + tmp3_ptr, + one_int, + one_int, + pv.desc, + zero_complex, + tmp4_ptr, + one_int, + one_int, + pv.desc); + + // tmp4 = 0.5 * (tmp2 + tmp4) + ScalapackConnector::geadd(N_char, + nlocal, + nlocal, + half_complex, + tmp2_ptr, + one_int, + one_int, + pv.desc, + half_complex, + tmp4_ptr, + one_int, + one_int, + pv.desc); + + // Copy final result from Tensor buffer back to EDMK matrix + BlasConnector::copy(nloc, tmp4_ptr, inc, tmp_edmk.c, inc); + +#else + ModuleBase::WARNING_QUIT("elecstate::cal_edm_tddft_tensor", "MPI is required for this function!"); +#endif + } // end ik + ModuleBase::timer::tick("TD_Efficiency", "cal_edm_tddft"); + return; +} // cal_edm_tddft_tensor + +// Template function for EDM calculation supporting CPU and GPU +template +void cal_edm_tddft_tensor_lapack(Parallel_Orbitals& pv, + LCAO_domain::Setup_DM>& dmat, + K_Vectors& kv, + hamilt::Hamilt>* p_hamilt) +{ + ModuleBase::TITLE("elecstate", "cal_edm_tddft_tensor_lapack"); + ModuleBase::timer::tick("TD_Efficiency", "cal_edm_tddft"); + + const int nlocal = PARAM.globalv.nlocal; + assert(nlocal >= 0); + dmat.dm->EDMK.resize(kv.get_nks()); + + // ct_device_type = ct::DeviceType::CpuDevice or ct::DeviceType::GpuDevice + ct::DeviceType ct_device_type = ct::DeviceTypeToEnum::value; + // ct_Device = ct::DEVICE_CPU or ct::DEVICE_GPU + using ct_Device = typename ct::PsiToContainer::type; + + // Memory operations + using syncmem_complex_h2d_op + = base_device::memory::synchronize_memory_op, Device, base_device::DEVICE_CPU>; + using syncmem_complex_d2h_op + = base_device::memory::synchronize_memory_op, base_device::DEVICE_CPU, Device>; + +#if ((defined __CUDA) /* || (defined __ROCM) */) + if (ct_device_type == ct::DeviceType::GpuDevice) + { + // Initialize cuBLAS & cuSOLVER handle + ct::kernels::createGpuSolverHandle(); + ct::kernels::createGpuBlasHandle(); + } +#endif // __CUDA + + for (int ik = 0; ik < kv.get_nks(); ++ik) + { + p_hamilt->updateHk(ik); + std::complex* tmp_dmk_local = dmat.dm->get_DMK_pointer(ik); + ModuleBase::ComplexMatrix& tmp_edmk = dmat.dm->EDMK[ik]; + +#ifdef __MPI + int myid = 0; + const int root_proc = 0; + int num_procs = 1; + MPI_Comm_rank(MPI_COMM_WORLD, &myid); + MPI_Comm_size(MPI_COMM_WORLD, &num_procs); + + // 1. Prepare Data Source Pointers (Host) + // If np = 1, point directly to local data to avoid copy + // If np > 1, gather data and point to the gathered buffer + std::complex* h_src = nullptr; + std::complex* s_src = nullptr; + std::complex* dmk_src = nullptr; + + // Global containers (Used only when num_procs > 1) + module_rt::Matrix_g> h_mat_global, s_mat_global, dmk_global, edm_global; + + // Get Local Matrices + hamilt::MatrixBlock> h_mat_local, s_mat_local; + p_hamilt->matrix(h_mat_local, s_mat_local); + + if (num_procs == 1) + { + // Optimization: Direct access for single process + h_src = h_mat_local.p; + s_src = s_mat_local.p; + dmk_src = tmp_dmk_local; + } + else + { + // Standard Gather Logic for multi-process + module_rt::gatherMatrix(myid, root_proc, h_mat_local, h_mat_global); + module_rt::gatherMatrix(myid, root_proc, s_mat_local, s_mat_global); + + hamilt::MatrixBlock> dmk_local_block; + dmk_local_block.p = tmp_dmk_local; + dmk_local_block.desc = pv.desc; + module_rt::gatherMatrix(myid, root_proc, dmk_local_block, dmk_global); + + if (myid == root_proc) + { + h_src = h_mat_global.p.get(); + s_src = s_mat_global.p.get(); + dmk_src = dmk_global.p.get(); + } + } + + // 2. GPU Calculation (on Rank 0) + if (myid == root_proc) + { + ct::Tensor H_dev, S_dev, DMK_dev, ipiv_dev; + + // Allocate and Copy (H2D) + H_dev = ct::Tensor(ct::DataType::DT_COMPLEX_DOUBLE, ct_device_type, ct::TensorShape({nlocal, nlocal})); + syncmem_complex_h2d_op()(H_dev.template data>(), h_src, nlocal * nlocal); + + S_dev = ct::Tensor(ct::DataType::DT_COMPLEX_DOUBLE, ct_device_type, ct::TensorShape({nlocal, nlocal})); + syncmem_complex_h2d_op()(S_dev.template data>(), s_src, nlocal * nlocal); + + DMK_dev = ct::Tensor(ct::DataType::DT_COMPLEX_DOUBLE, ct_device_type, ct::TensorShape({nlocal, nlocal})); + syncmem_complex_h2d_op()(DMK_dev.template data>(), dmk_src, nlocal * nlocal); + + ipiv_dev = ct::Tensor(ct::DataType::DT_INT, ct_device_type, ct::TensorShape({nlocal})); + ipiv_dev.zero(); + + // --- Calculate S^-1 using getrf + getrs --- + // 1. LU decomposition S = P * L * U + ct::kernels::lapack_getrf, ct_Device>()(nlocal, + nlocal, + S_dev.template data>(), + nlocal, + ipiv_dev.template data()); + + // 2. Solve S * Sinv = I + auto Sinv_dev = module_rt::create_identity_matrix>(nlocal, ct_device_type); + + ct::kernels::lapack_getrs, ct_Device>()('N', + nlocal, + nlocal, + S_dev.template data>(), + nlocal, + ipiv_dev.template data(), + Sinv_dev.template data>(), + nlocal); + + // --- EDM Calculation --- + std::complex one = {1.0, 0.0}; + std::complex zero = {0.0, 0.0}; + + // tmp1 = H * Sinv + ct::Tensor tmp1_dev(ct::DataType::DT_COMPLEX_DOUBLE, ct_device_type, ct::TensorShape({nlocal, nlocal})); + ct::kernels::blas_gemm, ct_Device>()('N', + 'N', + nlocal, + nlocal, + nlocal, + &one, + H_dev.template data>(), + nlocal, + Sinv_dev.template data>(), + nlocal, + &zero, + tmp1_dev.template data>(), + nlocal); + + // tmp2 = tmp1^T * DMK + ct::Tensor tmp2_dev(ct::DataType::DT_COMPLEX_DOUBLE, ct_device_type, ct::TensorShape({nlocal, nlocal})); + ct::kernels::blas_gemm, ct_Device>()('T', + 'N', + nlocal, + nlocal, + nlocal, + &one, + tmp1_dev.template data>(), + nlocal, + DMK_dev.template data>(), + nlocal, + &zero, + tmp2_dev.template data>(), + nlocal); + + // tmp3 = Sinv * H + ct::Tensor tmp3_dev(ct::DataType::DT_COMPLEX_DOUBLE, ct_device_type, ct::TensorShape({nlocal, nlocal})); + ct::kernels::blas_gemm, ct_Device>()('N', + 'N', + nlocal, + nlocal, + nlocal, + &one, + Sinv_dev.template data>(), + nlocal, + H_dev.template data>(), + nlocal, + &zero, + tmp3_dev.template data>(), + nlocal); + + // tmp4 = DMK * tmp3^T + ct::Tensor tmp4_dev(ct::DataType::DT_COMPLEX_DOUBLE, ct_device_type, ct::TensorShape({nlocal, nlocal})); + ct::kernels::blas_gemm, ct_Device>()('N', + 'T', + nlocal, + nlocal, + nlocal, + &one, + DMK_dev.template data>(), + nlocal, + tmp3_dev.template data>(), + nlocal, + &zero, + tmp4_dev.template data>(), + nlocal); + + // tmp4 = tmp2 + tmp4 + ct::kernels::blas_axpy, ct_Device>()(nlocal * nlocal, + &one, + tmp2_dev.template data>(), + 1, + tmp4_dev.template data>(), + 1); + + // tmp4 = 0.5 * tmp4 + std::complex half = {0.5, 0.0}; + ct::kernels::blas_scal, ct_Device>()(nlocal * nlocal, + &half, + tmp4_dev.template data>(), + 1); + + // 3. Retrieve Result (D2H) + std::complex* edm_dest = nullptr; + + if (num_procs == 1) + { + // Directly copy to target local matrix + tmp_edmk.create(pv.ncol, pv.nrow); + edm_dest = tmp_edmk.c; + } + else + { + // Wait to set up edm_dest after allocating global buffer + if (myid == root_proc && edm_global.p == nullptr) + { + edm_global.p.reset(new std::complex[nlocal * nlocal]); + } + edm_dest = edm_global.p.get(); + } + + if (num_procs == 1 || myid == root_proc) + { + syncmem_complex_d2h_op()(edm_dest, tmp4_dev.template data>(), nlocal * nlocal); + } + } + + // 4. Distribute (Only needed if num_procs > 1) + if (num_procs > 1) + { + if (edm_global.p == nullptr) + { + edm_global.p.reset(new std::complex[nlocal * nlocal]); + } + + edm_global.row = nlocal; + edm_global.col = nlocal; + edm_global.desc.reset(new int[9]{1, pv.desc[1], nlocal, nlocal, nlocal, nlocal, 0, 0, nlocal}); + + tmp_edmk.create(pv.ncol, pv.nrow); + hamilt::MatrixBlock> edm_local_block; + edm_local_block.p = tmp_edmk.c; + edm_local_block.desc = pv.desc; + module_rt::distributeMatrix(edm_local_block, edm_global); + } +#else + ModuleBase::WARNING_QUIT("elecstate::cal_edm_tddft_tensor_lapack", "MPI is required for this function!"); +#endif // __MPI + } // end ik + +#if ((defined __CUDA) /* || (defined __ROCM) */) + if (ct_device_type == ct::DeviceType::GpuDevice) + { + // Destroy cuBLAS & cuSOLVER handle + ct::kernels::destroyGpuSolverHandle(); + ct::kernels::destroyGpuBlasHandle(); + } +#endif // __CUDA + + ModuleBase::timer::tick("TD_Efficiency", "cal_edm_tddft"); + return; +} // cal_edm_tddft_tensor_lapack + +// Explicit instantiation of template functions +template void cal_edm_tddft_tensor_lapack(Parallel_Orbitals& pv, + LCAO_domain::Setup_DM>& dmat, + K_Vectors& kv, + hamilt::Hamilt>* p_hamilt); +#if ((defined __CUDA) /* || (defined __ROCM) */) +template void cal_edm_tddft_tensor_lapack(Parallel_Orbitals& pv, + LCAO_domain::Setup_DM>& dmat, + K_Vectors& kv, + hamilt::Hamilt>* p_hamilt); +#endif // __CUDA + } // namespace elecstate diff --git a/source/source_estate/module_dm/cal_edm_tddft.h b/source/source_estate/module_dm/cal_edm_tddft.h index 49de0550b5..b442bd90cd 100644 --- a/source/source_estate/module_dm/cal_edm_tddft.h +++ b/source/source_estate/module_dm/cal_edm_tddft.h @@ -3,14 +3,32 @@ #include "source_basis/module_ao/parallel_orbitals.h" #include "source_cell/klist.h" -#include "source_estate/elecstate_lcao.h" #include "source_hamilt/hamilt.h" +#include "source_lcao/setup_dm.h" namespace elecstate { +void print_local_matrix(std::ostream& os, + const std::complex* matrix_data, + int local_rows, // pv.nrow + int local_cols, // pv.ncol + const std::string& matrix_name = "", + int rank = -1); + void cal_edm_tddft(Parallel_Orbitals& pv, - elecstate::ElecState* pelec, + LCAO_domain::Setup_DM>& dmat, K_Vectors& kv, hamilt::Hamilt>* p_hamilt); + +void cal_edm_tddft_tensor(Parallel_Orbitals& pv, + LCAO_domain::Setup_DM>& dmat, + K_Vectors& kv, + hamilt::Hamilt>* p_hamilt); + +template +void cal_edm_tddft_tensor_lapack(Parallel_Orbitals& pv, + LCAO_domain::Setup_DM>& dmat, + K_Vectors& kv, + hamilt::Hamilt>* p_hamilt); } // namespace elecstate #endif // CAL_EDM_TDDFT_H diff --git a/source/source_estate/module_dm/density_matrix.cpp b/source/source_estate/module_dm/density_matrix.cpp index 8dd87e73c4..97ca303259 100644 --- a/source/source_estate/module_dm/density_matrix.cpp +++ b/source/source_estate/module_dm/density_matrix.cpp @@ -5,6 +5,8 @@ #include "source_base/memory.h" #include "source_base/timer.h" #include "source_base/tool_title.h" +#include "source_base/tool_quit.h" +#include "source_base/constants.h" #include "source_cell/klist.h" namespace elecstate @@ -29,7 +31,7 @@ template DensityMatrix::DensityMatrix(const Parallel_Orbitals* paraV_in, const int nspin, const std::vector>& kvec_d, const int nk) : _paraV(paraV_in), _nspin(nspin), _kvec_d(kvec_d), _nk((nk > 0 && nk <= _kvec_d.size()) ? nk : _kvec_d.size()) { - ModuleBase::TITLE("DensityMatrix", "DensityMatrix-MK"); + ModuleBase::TITLE("DensityMatrix", "resize_DMK"); const int nks = _nk * _nspin; this->_DMK.resize(nks); for (int ik = 0; ik < nks; ik++) @@ -42,7 +44,7 @@ DensityMatrix::DensityMatrix(const Parallel_Orbitals* paraV_in, const in template DensityMatrix::DensityMatrix(const Parallel_Orbitals* paraV_in, const int nspin) :_paraV(paraV_in), _nspin(nspin), _kvec_d({ ModuleBase::Vector3(0,0,0) }), _nk(1) { - ModuleBase::TITLE("DensityMatrix", "DensityMatrix-GO"); + ModuleBase::TITLE("DensityMatrix", "resize_gamma"); this->_DMK.resize(_nspin); for (int ik = 0; ik < this->_nspin; ik++) { @@ -51,134 +53,103 @@ DensityMatrix::DensityMatrix(const Parallel_Orbitals* paraV_in, const in ModuleBase::Memory::record("DensityMatrix::DMK", this->_DMK.size() * this->_DMK[0].size() * sizeof(TK)); } + + // calculate DMR from DMK using blas for multi-k calculation -template <> -void DensityMatrix, double>::cal_DMR(const int ik_in) +template +void DensityMatrix_Tools::cal_DMR( + const DensityMatrix &dm, + std::vector*> &dmR_out, + const int ik_in) { ModuleBase::TITLE("DensityMatrix", "cal_DMR"); // To check whether DMR has been initialized -#ifdef __DEBUG - assert(!this->_DMR.empty() && "DMR has not been initialized!"); -#endif + assert(dmR_out.size()==dm._nspin && "DMR has not been initialized!"); ModuleBase::timer::tick("DensityMatrix", "cal_DMR"); - int ld_hk = this->_paraV->nrow; - for (int is = 1; is <= this->_nspin; ++is) + const int ld_hk = dm._paraV->nrow; + for (int is = 1; is <= dm._nspin; ++is) { - int ik_begin = this->_nk * (is - 1); // jump this->_nk for spin_down if nspin==2 - hamilt::HContainer* target_DMR = this->_DMR[is - 1]; + const int ik_begin = dm._nk * (is - 1); // jump dm._nk for spin_down if nspin==2 + hamilt::HContainer*const target_DMR = dmR_out[is - 1]; // set zero since this function is called in every scf step target_DMR->set_zero(); -#ifdef _OPENMP -#pragma omp parallel for schedule(dynamic) -#endif + #ifdef _OPENMP + #pragma omp parallel for schedule(dynamic) + #endif for (int i = 0; i < target_DMR->size_atom_pairs(); ++i) { - hamilt::AtomPair& target_ap = target_DMR->get_atom_pair(i); - int iat1 = target_ap.get_atom_i(); - int iat2 = target_ap.get_atom_j(); + hamilt::AtomPair& target_ap = target_DMR->get_atom_pair(i); + const int iat1 = target_ap.get_atom_i(); + const int iat2 = target_ap.get_atom_j(); // get global indexes of whole matrix for each atom in this process - int row_ap = this->_paraV->atom_begin_row[iat1]; - int col_ap = this->_paraV->atom_begin_col[iat2]; - const int row_size = this->_paraV->get_row_size(iat1); - const int col_size = this->_paraV->get_col_size(iat2); + const int row_ap = dm._paraV->atom_begin_row[iat1]; + const int col_ap = dm._paraV->atom_begin_col[iat2]; + const int row_size = dm._paraV->get_row_size(iat1); + const int col_size = dm._paraV->get_col_size(iat2); const int mat_size = row_size * col_size; - const int r_size = target_ap.get_R_size(); - if (row_ap == -1 || col_ap == -1) - { - throw std::string("Atom-pair not belong this process"); - } - std::vector> tmp_DMR; - if (PARAM.inp.nspin == 4) - { - tmp_DMR.resize(mat_size * r_size, 0); - } + const int R_size = target_ap.get_R_size(); + assert(row_ap != -1 && col_ap != -1 && "Atom-pair not belong this process"); // calculate kphase and target_mat_ptr - std::vector> kphase_vec(r_size * this->_nk); - std::vector target_DMR_mat_vec(r_size); - for(int ir = 0; ir < r_size; ++ir) + std::vector> kphase_vec(dm._nk, std::vector(R_size)); + std::vector target_DMR_mat_vec(R_size); + for(int iR = 0; iR < R_size; ++iR) { - const ModuleBase::Vector3 r_index = target_ap.get_R_index(ir); - hamilt::BaseMatrix* target_mat = target_ap.find_matrix(r_index); -#ifdef __DEBUG + const ModuleBase::Vector3 R_index = target_ap.get_R_index(iR); + hamilt::BaseMatrix*const target_mat = target_ap.find_matrix(R_index); + #ifdef __DEBUG if (target_mat == nullptr) { std::cout << "target_mat is nullptr" << std::endl; continue; } -#endif - target_DMR_mat_vec[ir] = target_mat->get_pointer(); - for(int ik = 0; ik < this->_nk; ++ik) + #endif + target_DMR_mat_vec[iR] = target_mat->get_pointer(); + for(int ik = 0; ik < dm._nk; ++ik) { - if(ik_in >= 0 && ik_in != ik) - { - continue; - } + if(ik_in >= 0 && ik_in != ik) { continue; } // cal k_phase // if TK==std::complex, kphase is e^{ikR} - const ModuleBase::Vector3 dR(r_index[0], r_index[1], r_index[2]); - const double arg = (this->_kvec_d[ik] * dR) * ModuleBase::TWO_PI; + const ModuleBase::Vector3 dR(R_index[0], R_index[1], R_index[2]); + const double arg = (dm._kvec_d[ik] * dR) * ModuleBase::TWO_PI; double sinp, cosp; ModuleBase::libm::sincos(arg, &sinp, &cosp); - kphase_vec[ik * r_size + ir] = std::complex(cosp, sinp); + kphase_vec[ik][iR] = TK(cosp, sinp); } } - std::vector> tmp_DMK_mat(mat_size); - // step_trace = 0 for NSPIN=1,2; ={0, 1, local_col, local_col+1} for NSPIN=4 - // step_trace is used when nspin = 4; - int step_trace[4]{}; - if(PARAM.inp.nspin == 4) + std::vector DMK_mat_trans(mat_size); + std::vector tmp_DMR( (PARAM.inp.nspin==4) ? mat_size*R_size : 0); + for(int ik = 0; ik < dm._nk; ++ik) { - const int npol = 2; - for (int is = 0; is < npol; is++) - { - for (int is2 = 0; is2 < npol; is2++) - { - step_trace[is * npol + is2] = target_ap.get_col_size() * is + is2; - } - } - } - for(int ik = 0; ik < this->_nk; ++ik) - { - if(ik_in >= 0 && ik_in != ik) - { - continue; - } - - // copy column-major DMK to row-major tmp_DMK_mat (for the purpose of computational efficiency) - const std::complex* DMK_mat_ptr = this->_DMK[ik + ik_begin].data() + col_ap * this->_paraV->nrow + row_ap; - for(int icol = 0; icol < col_size; ++icol) - { - for(int irow = 0; irow < row_size; ++irow) - { - tmp_DMK_mat[irow * col_size + icol] = DMK_mat_ptr[icol * ld_hk + irow]; - } - } + if(ik_in >= 0 && ik_in != ik) { continue; } + // copy column-major DMK to row-major DMK_mat_trans (for the purpose of computational efficiency) + const TK*const DMK_mat_ptr + = dm._DMK[ik + ik_begin].data() + + col_ap * dm._paraV->nrow + row_ap; + for(int icol = 0; icol < col_size; ++icol) { + for(int irow = 0; irow < row_size; ++irow) { + DMK_mat_trans[irow * col_size + icol] = DMK_mat_ptr[icol * ld_hk + irow]; + }} // if nspin != 4, fill DMR // if nspin == 4, fill tmp_DMR - for(int ir = 0; ir < r_size; ++ir) + for(int iR = 0; iR < R_size; ++iR) { - std::complex kphase = kphase_vec[ik * r_size + ir]; - if(PARAM.inp.nspin != 4) + // (kr+i*ki) * (Dr+i*Di) = (kr*Dr-ki*Di) + i*(kr*Di+ki*Dr) + const TK kphase = kphase_vec[ik][iR]; + if(PARAM.inp.nspin != 4) // only save real kr*Dr-ki*Di { - double* target_DMR_mat = target_DMR_mat_vec[ir]; - for(int i = 0; i < mat_size; i++) - { - target_DMR_mat[i] += kphase.real() * tmp_DMK_mat[i].real() - - kphase.imag() * tmp_DMK_mat[i].imag(); - } + func_exp_mul_dmk(kphase, DMK_mat_trans, target_DMR_mat_vec[iR]); } else if(PARAM.inp.nspin == 4) { - std::complex* tmp_DMR_mat = &tmp_DMR[ir * mat_size]; BlasConnector::axpy(mat_size, kphase, - tmp_DMK_mat.data(), + DMK_mat_trans.data(), 1, - tmp_DMR_mat, + &tmp_DMR[iR * mat_size], 1); } } @@ -188,11 +159,19 @@ void DensityMatrix, double>::cal_DMR(const int ik_in) // copy tmp_DMR to fill target_DMR if(PARAM.inp.nspin == 4) { - std::complex tmp[4]{}; - for(int ir = 0; ir < r_size; ++ir) + // step_trace ={0, 1, local_col, local_col+1} for NSPIN=4 + int step_trace[4]{}; + constexpr int npol = 2; + for (int is = 0; is < npol; is++) { + for (int is2 = 0; is2 < npol; is2++) { + step_trace[is * npol + is2] = target_ap.get_col_size() * is + is2; + }} + + TK tmp[4]{}; + for(int iR = 0; iR < R_size; ++iR) { - std::complex* tmp_DMR_mat = &tmp_DMR[ir * mat_size]; - double* target_DMR_mat = target_DMR_mat_vec[ir]; + const TK* tmp_DMR_mat = &tmp_DMR[iR * mat_size]; + TR_out* target_DMR_mat = target_DMR_mat_vec[iR]; for (int irow = 0; irow < row_size; irow += 2) { for (int icol = 0; icol < col_size; icol += 2) @@ -202,13 +181,9 @@ void DensityMatrix, double>::cal_DMR(const int ik_in) tmp[1] = tmp_DMR_mat[icol + step_trace[1]]; tmp[2] = tmp_DMR_mat[icol + step_trace[2]]; tmp[3] = tmp_DMR_mat[icol + step_trace[3]]; - // transfer to Pauli matrix and save the real part - // save them back to the target_mat - target_DMR_mat[icol + step_trace[0]] = tmp[0].real() + tmp[3].real(); - target_DMR_mat[icol + step_trace[1]] = tmp[1].real() + tmp[2].real(); - target_DMR_mat[icol + step_trace[2]] - = -tmp[1].imag() + tmp[2].imag(); // (i * (rho_updown - rho_downup)).real() - target_DMR_mat[icol + step_trace[3]] = tmp[0].real() - tmp[3].real(); + + // transfer to Pauli matrix, save them back to the target_DMR_mat + func_xyz_to_updown(tmp, icol, step_trace, target_DMR_mat); } tmp_DMR_mat += col_size * 2; target_DMR_mat += col_size * 2; @@ -220,137 +195,119 @@ void DensityMatrix, double>::cal_DMR(const int ik_in) ModuleBase::timer::tick("DensityMatrix", "cal_DMR"); } -// calculate DMR from DMK using blas for multi-k calculation template <> -void DensityMatrix, double>::cal_DMR_td(const UnitCell& ucell, const ModuleBase::Vector3 At, const int ik_in) +void DensityMatrix, double>::cal_DMR(const int ik_in) +{ + DensityMatrix_Tools::cal_DMR(*this, this->_DMR, ik_in); +} + +template <> +void DensityMatrix, std::complex>::cal_DMR(const int ik_in) +{ + DensityMatrix_Tools::cal_DMR(*this, this->_DMR, ik_in); +} + + + +// calculate DMR from DMK using blas for multi-k calculation +template +void DensityMatrix_Tools::cal_DMR_td( + const DensityMatrix &dm, + std::vector*> &dmR_out, + const UnitCell& ucell, + const ModuleBase::Vector3 At, + const int ik_in) { ModuleBase::TITLE("DensityMatrix", "cal_DMR_td"); // To check whether DMR has been initialized -#ifdef __DEBUG - assert(!this->_DMR.empty() && "DMR has not been initialized!"); -#endif + assert(dmR_out.size()==dm._nspin && "DMR has not been initialized!"); ModuleBase::timer::tick("DensityMatrix", "cal_DMR_td"); - int ld_hk = this->_paraV->nrow; - for (int is = 1; is <= this->_nspin; ++is) + const int ld_hk = dm._paraV->nrow; + for (int is = 1; is <= dm._nspin; ++is) { - int ik_begin = this->_nk * (is - 1); // jump this->_nk for spin_down if nspin==2 - hamilt::HContainer* target_DMR = this->_DMR[is - 1]; + const int ik_begin = dm._nk * (is - 1); // jump dm._nk for spin_down if nspin==2 + hamilt::HContainer*const target_DMR = dmR_out[is - 1]; // set zero since this function is called in every scf step target_DMR->set_zero(); -#ifdef _OPENMP -#pragma omp parallel for schedule(dynamic) -#endif + #ifdef _OPENMP + #pragma omp parallel for schedule(dynamic) + #endif for (int i = 0; i < target_DMR->size_atom_pairs(); ++i) { - hamilt::AtomPair& target_ap = target_DMR->get_atom_pair(i); - int iat1 = target_ap.get_atom_i(); - int iat2 = target_ap.get_atom_j(); + hamilt::AtomPair& target_ap = target_DMR->get_atom_pair(i); + const int iat1 = target_ap.get_atom_i(); + const int iat2 = target_ap.get_atom_j(); // get global indexes of whole matrix for each atom in this process - int row_ap = this->_paraV->atom_begin_row[iat1]; - int col_ap = this->_paraV->atom_begin_col[iat2]; - const int row_size = this->_paraV->get_row_size(iat1); - const int col_size = this->_paraV->get_col_size(iat2); + const int row_ap = dm._paraV->atom_begin_row[iat1]; + const int col_ap = dm._paraV->atom_begin_col[iat2]; + const int row_size = dm._paraV->get_row_size(iat1); + const int col_size = dm._paraV->get_col_size(iat2); const int mat_size = row_size * col_size; - const int r_size = target_ap.get_R_size(); - if (row_ap == -1 || col_ap == -1) - { - throw std::string("Atom-pair not belong this process"); - } - std::vector> tmp_DMR; - if (PARAM.inp.nspin == 4) - { - tmp_DMR.resize(mat_size * r_size, 0); - } + const int R_size = target_ap.get_R_size(); + assert(row_ap != -1 && col_ap != -1 && "Atom-pair not belong this process"); // calculate kphase and target_mat_ptr - std::vector> kphase_vec(r_size * this->_nk); - std::vector target_DMR_mat_vec(r_size); - for(int ir = 0; ir < r_size; ++ir) + std::vector> kphase_vec(dm._nk, std::vector(R_size)); + std::vector target_DMR_mat_vec(R_size); + for(int iR = 0; iR < R_size; ++iR) { - const ModuleBase::Vector3 r_index = target_ap.get_R_index(ir); - hamilt::BaseMatrix* target_mat = target_ap.find_matrix(r_index); -#ifdef __DEBUG + const ModuleBase::Vector3 R_index = target_ap.get_R_index(iR); + hamilt::BaseMatrix*const target_mat = target_ap.find_matrix(R_index); + #ifdef __DEBUG if (target_mat == nullptr) { std::cout << "target_mat is nullptr" << std::endl; continue; } -#endif - target_DMR_mat_vec[ir] = target_mat->get_pointer(); - double arg_td = 0.0; + #endif + target_DMR_mat_vec[iR] = target_mat->get_pointer(); //cal tddft phase for hybrid gauge - ModuleBase::Vector3 dtau = ucell.cal_dtau(iat1, iat2, r_index); - arg_td = At * dtau * ucell.lat0; - for(int ik = 0; ik < this->_nk; ++ik) + const ModuleBase::Vector3 dtau = ucell.cal_dtau(iat1, iat2, R_index); + const double arg_td = At * dtau * ucell.lat0; + for(int ik = 0; ik < dm._nk; ++ik) { - if(ik_in >= 0 && ik_in != ik) - { - continue; - } + if(ik_in >= 0 && ik_in != ik) { continue; } // cal k_phase // if TK==std::complex, kphase is e^{ikR} - const ModuleBase::Vector3 dR(r_index[0], r_index[1], r_index[2]); - const double arg = (this->_kvec_d[ik] * dR) * ModuleBase::TWO_PI + arg_td; + const ModuleBase::Vector3 dR(R_index[0], R_index[1], R_index[2]); + const double arg = (dm._kvec_d[ik] * dR) * ModuleBase::TWO_PI + arg_td; double sinp, cosp; ModuleBase::libm::sincos(arg, &sinp, &cosp); - kphase_vec[ik * r_size + ir] = std::complex(cosp, sinp); + kphase_vec[ik][iR] = TK(cosp, sinp); } } - std::vector> tmp_DMK_mat(mat_size); - // step_trace = 0 for NSPIN=1,2; ={0, 1, local_col, local_col+1} for NSPIN=4 - // step_trace is used when nspin = 4; - int step_trace[4]{}; - if(PARAM.inp.nspin == 4) + std::vector DMK_mat_trans(mat_size); + std::vector tmp_DMR( (PARAM.inp.nspin==4) ? mat_size*R_size : 0); + for(int ik = 0; ik < dm._nk; ++ik) { - const int npol = 2; - for (int is = 0; is < npol; is++) - { - for (int is2 = 0; is2 < npol; is2++) - { - step_trace[is * npol + is2] = target_ap.get_col_size() * is + is2; - } - } - } - for(int ik = 0; ik < this->_nk; ++ik) - { - if(ik_in >= 0 && ik_in != ik) - { - continue; - } - - // copy column-major DMK to row-major tmp_DMK_mat (for the purpose of computational efficiency) - const std::complex* DMK_mat_ptr = this->_DMK[ik + ik_begin].data() + col_ap * this->_paraV->nrow + row_ap; - for(int icol = 0; icol < col_size; ++icol) - { - for(int irow = 0; irow < row_size; ++irow) - { - tmp_DMK_mat[irow * col_size + icol] = DMK_mat_ptr[icol * ld_hk + irow]; - } - } + if(ik_in >= 0 && ik_in != ik) { continue; } + // copy column-major DMK to row-major DMK_mat_trans (for the purpose of computational efficiency) + const TK*const DMK_mat_ptr + = dm._DMK[ik + ik_begin].data() + + col_ap * dm._paraV->nrow + row_ap; + for(int icol = 0; icol < col_size; ++icol) { + for(int irow = 0; irow < row_size; ++irow) { + DMK_mat_trans[irow * col_size + icol] = DMK_mat_ptr[icol * ld_hk + irow]; + }} // if nspin != 4, fill DMR // if nspin == 4, fill tmp_DMR - for(int ir = 0; ir < r_size; ++ir) + for(int iR = 0; iR < R_size; ++iR) { - std::complex kphase = kphase_vec[ik * r_size + ir]; - if(PARAM.inp.nspin != 4) + // (kr+i*ki) * (Dr+i*Di) = (kr*Dr-ki*Di) + i*(kr*Di+ki*Dr) + const TK kphase = kphase_vec[ik][iR]; + if(PARAM.inp.nspin != 4) // only save real kr*Dr-ki*Di { - double* target_DMR_mat = target_DMR_mat_vec[ir]; - for(int i = 0; i < mat_size; i++) - { - target_DMR_mat[i] += kphase.real() * tmp_DMK_mat[i].real() - - kphase.imag() * tmp_DMK_mat[i].imag(); - } + func_exp_mul_dmk(kphase, DMK_mat_trans, target_DMR_mat_vec[iR]); } else if(PARAM.inp.nspin == 4) { - std::complex* tmp_DMR_mat = &tmp_DMR[ir * mat_size]; BlasConnector::axpy(mat_size, kphase, - tmp_DMK_mat.data(), + DMK_mat_trans.data(), 1, - tmp_DMR_mat, + &tmp_DMR[iR * mat_size], 1); } } @@ -360,11 +317,19 @@ void DensityMatrix, double>::cal_DMR_td(const UnitCell& uce // copy tmp_DMR to fill target_DMR if(PARAM.inp.nspin == 4) { - std::complex tmp[4]{}; - for(int ir = 0; ir < r_size; ++ir) + // step_trace ={0, 1, local_col, local_col+1} for NSPIN=4 + int step_trace[4]{}; + constexpr int npol = 2; + for (int is = 0; is < npol; is++) { + for (int is2 = 0; is2 < npol; is2++) { + step_trace[is * npol + is2] = target_ap.get_col_size() * is + is2; + }} + + TK tmp[4]{}; + for(int iR = 0; iR < R_size; ++iR) { - std::complex* tmp_DMR_mat = &tmp_DMR[ir * mat_size]; - double* target_DMR_mat = target_DMR_mat_vec[ir]; + const TK* tmp_DMR_mat = &tmp_DMR[iR * mat_size]; + TR_out* target_DMR_mat = target_DMR_mat_vec[iR]; for (int irow = 0; irow < row_size; irow += 2) { for (int icol = 0; icol < col_size; icol += 2) @@ -374,13 +339,9 @@ void DensityMatrix, double>::cal_DMR_td(const UnitCell& uce tmp[1] = tmp_DMR_mat[icol + step_trace[1]]; tmp[2] = tmp_DMR_mat[icol + step_trace[2]]; tmp[3] = tmp_DMR_mat[icol + step_trace[3]]; - // transfer to Pauli matrix and save the real part - // save them back to the target_mat - target_DMR_mat[icol + step_trace[0]] = tmp[0].real() + tmp[3].real(); - target_DMR_mat[icol + step_trace[1]] = tmp[1].real() + tmp[2].real(); - target_DMR_mat[icol + step_trace[2]] - = -tmp[1].imag() + tmp[2].imag(); // (i * (rho_updown - rho_downup)).real() - target_DMR_mat[icol + step_trace[3]] = tmp[0].real() - tmp[3].real(); + + // transfer to Pauli matrix, save them back to the target_DMR_mat + func_xyz_to_updown(tmp, icol, step_trace, target_DMR_mat); } tmp_DMR_mat += col_size * 2; target_DMR_mat += col_size * 2; @@ -392,84 +353,100 @@ void DensityMatrix, double>::cal_DMR_td(const UnitCell& uce ModuleBase::timer::tick("DensityMatrix", "cal_DMR_td"); } -// calculate DMR from DMK using blas for multi-k calculation template <> -void DensityMatrix::cal_DMR_full(hamilt::HContainer>* dmR_out)const{} +void DensityMatrix, double>::cal_DMR_td(const UnitCell& ucell, const ModuleBase::Vector3 At, const int ik_in) +{ + DensityMatrix_Tools::cal_DMR_td(*this, this->_DMR, ucell, At, ik_in); +} + template <> -void DensityMatrix, double>::cal_DMR_full(hamilt::HContainer>* dmR_out)const +void DensityMatrix, std::complex>::cal_DMR_td(const UnitCell& ucell, const ModuleBase::Vector3 At, const int ik_in) +{ + DensityMatrix_Tools::cal_DMR_td(*this, this->_DMR, ucell, At, ik_in); +} + + + +// calculate DMR from DMK using blas for multi-k calculation +template +void DensityMatrix_Tools::cal_DMR_full( + const DensityMatrix &dm, + hamilt::HContainer* dmR_out, + const int ik_in) { ModuleBase::TITLE("DensityMatrix", "cal_DMR_full"); ModuleBase::timer::tick("DensityMatrix", "cal_DMR_full"); - int ld_hk = this->_paraV->nrow; - hamilt::HContainer>* target_DMR = dmR_out; + const int ld_hk = dm._paraV->nrow; + hamilt::HContainer* target_DMR = dmR_out; // set zero since this function is called in every scf step target_DMR->set_zero(); -#ifdef _OPENMP -#pragma omp parallel for schedule(dynamic) -#endif + #ifdef _OPENMP + #pragma omp parallel for schedule(dynamic) + #endif for (int i = 0; i < target_DMR->size_atom_pairs(); ++i) { - auto& target_ap = target_DMR->get_atom_pair(i); - int iat1 = target_ap.get_atom_i(); - int iat2 = target_ap.get_atom_j(); + hamilt::AtomPair& target_ap = target_DMR->get_atom_pair(i); + const int iat1 = target_ap.get_atom_i(); + const int iat2 = target_ap.get_atom_j(); // get global indexes of whole matrix for each atom in this process - int row_ap = this->_paraV->atom_begin_row[iat1]; - int col_ap = this->_paraV->atom_begin_col[iat2]; - const int row_size = this->_paraV->get_row_size(iat1); - const int col_size = this->_paraV->get_col_size(iat2); + const int row_ap = dm._paraV->atom_begin_row[iat1]; + const int col_ap = dm._paraV->atom_begin_col[iat2]; + const int row_size = dm._paraV->get_row_size(iat1); + const int col_size = dm._paraV->get_col_size(iat2); const int mat_size = row_size * col_size; - const int r_size = target_ap.get_R_size(); + const int R_size = target_ap.get_R_size(); + assert(row_ap != -1 && col_ap != -1 && "Atom-pair not belong this process"); // calculate kphase and target_mat_ptr - std::vector> kphase_vec(r_size * this->_nk); - std::vector*> target_DMR_mat_vec(r_size); - for(int ir = 0; ir < r_size; ++ir) + std::vector> kphase_vec(dm._nk, std::vector(R_size)); + std::vector target_DMR_mat_vec(R_size); + for(int iR = 0; iR < R_size; ++iR) { - const ModuleBase::Vector3 r_index = target_ap.get_R_index(ir); - hamilt::BaseMatrix>* target_mat = target_ap.find_matrix(r_index); -#ifdef __DEBUG + const ModuleBase::Vector3 R_index = target_ap.get_R_index(iR); + hamilt::BaseMatrix*const target_mat = target_ap.find_matrix(R_index); + #ifdef __DEBUG if (target_mat == nullptr) { std::cout << "target_mat is nullptr" << std::endl; continue; } -#endif - target_DMR_mat_vec[ir] = target_mat->get_pointer(); - for(int ik = 0; ik < this->_nk; ++ik) + #endif + target_DMR_mat_vec[iR] = target_mat->get_pointer(); + for(int ik = 0; ik < dm._nk; ++ik) { + if(ik_in >= 0 && ik_in != ik) { continue; } // cal k_phase // if TK==std::complex, kphase is e^{ikR} - const ModuleBase::Vector3 dR(r_index[0], r_index[1], r_index[2]); - const double arg = (this->_kvec_d[ik] * dR) * ModuleBase::TWO_PI; + const ModuleBase::Vector3 dR(R_index[0], R_index[1], R_index[2]); + const double arg = (dm._kvec_d[ik] * dR) * ModuleBase::TWO_PI; double sinp, cosp; ModuleBase::libm::sincos(arg, &sinp, &cosp); - kphase_vec[ik * r_size + ir] = std::complex(cosp, sinp); + kphase_vec[ik][iR] = TK(cosp, sinp); } } - std::vector> tmp_DMK_mat(mat_size); - for(int ik = 0; ik < this->_nk; ++ik) + std::vector DMK_mat_trans(mat_size); + for(int ik = 0; ik < dm._nk; ++ik) { - // copy column-major DMK to row-major tmp_DMK_mat (for the purpose of computational efficiency) - const std::complex* DMK_mat_ptr = this->_DMK[ik].data() + col_ap * this->_paraV->nrow + row_ap; - for(int icol = 0; icol < col_size; ++icol) + if(ik_in >= 0 && ik_in != ik) { continue; } + // copy column-major DMK to row-major DMK_mat_trans (for the purpose of computational efficiency) + const TK*const DMK_mat_ptr + = dm._DMK[ik].data() + + col_ap * dm._paraV->nrow + row_ap; + for(int icol = 0; icol < col_size; ++icol) { + for(int irow = 0; irow < row_size; ++irow) { + DMK_mat_trans[irow * col_size + icol] = DMK_mat_ptr[icol * ld_hk + irow]; + }} + + for(int iR = 0; iR < R_size; ++iR) { - for(int irow = 0; irow < row_size; ++irow) - { - tmp_DMK_mat[irow * col_size + icol] = DMK_mat_ptr[icol * ld_hk + irow]; - } - } - - for(int ir = 0; ir < r_size; ++ir) - { - std::complex kphase = kphase_vec[ik * r_size + ir]; - std::complex* target_DMR_mat = target_DMR_mat_vec[ir]; + const TK kphase = kphase_vec[ik][iR]; BlasConnector::axpy(mat_size, kphase, - tmp_DMK_mat.data(), + DMK_mat_trans.data(), 1, - target_DMR_mat, + target_DMR_mat_vec[iR], 1); } } @@ -477,80 +454,85 @@ void DensityMatrix, double>::cal_DMR_full(hamilt::HContaine ModuleBase::timer::tick("DensityMatrix", "cal_DMR_full"); } +template <> +void DensityMatrix::cal_DMR_full( + hamilt::HContainer>* dmR_out, + const int ik_in) const{} +template <> +void DensityMatrix, double>::cal_DMR_full( + hamilt::HContainer>* dmR_out, + const int ik_in) const +{ + DensityMatrix_Tools::cal_DMR_full(*this, dmR_out, ik_in); +} + + + // calculate DMR from DMK using blas for gamma-only calculation template <> void DensityMatrix::cal_DMR(const int ik_in) { ModuleBase::TITLE("DensityMatrix", "cal_DMR"); + using TK = double; + using TR = double; assert(ik_in == -1 || ik_in == 0); + assert(this->_nk == 1); // To check whether DMR has been initialized -#ifdef __DEBUG - assert(!this->_DMR.empty() && "DMR has not been initialized!"); -#endif + assert(this->_DMR.size()==this->_nspin && "DMR has not been initialized!"); ModuleBase::timer::tick("DensityMatrix", "cal_DMR"); - int ld_hk = this->_paraV->nrow; + const int ld_hk = this->_paraV->nrow; for (int is = 1; is <= this->_nspin; ++is) { - int ik_begin = this->_nk * (is - 1); // jump this->_nk for spin_down if nspin==2 - hamilt::HContainer* target_DMR = this->_DMR[is - 1]; + const int ik_begin = this->_nk * (is - 1); // jump this->_nk for spin_down if nspin==2 + hamilt::HContainer*const target_DMR = this->_DMR[is - 1]; // set zero since this function is called in every scf step target_DMR->set_zero(); - -#ifdef __DEBUG - // assert(target_DMR->is_gamma_only() == true); - assert(this->_nk == 1); -#endif -#ifdef _OPENMP -#pragma omp parallel for schedule(dynamic) -#endif + #ifdef _OPENMP + #pragma omp parallel for schedule(dynamic) + #endif for (int i = 0; i < target_DMR->size_atom_pairs(); ++i) { - hamilt::AtomPair& target_ap = target_DMR->get_atom_pair(i); - int iat1 = target_ap.get_atom_i(); - int iat2 = target_ap.get_atom_j(); + hamilt::AtomPair& target_ap = target_DMR->get_atom_pair(i); + const int iat1 = target_ap.get_atom_i(); + const int iat2 = target_ap.get_atom_j(); // get global indexes of whole matrix for each atom in this process - int row_ap = this->_paraV->atom_begin_row[iat1]; - int col_ap = this->_paraV->atom_begin_col[iat2]; + const int row_ap = this->_paraV->atom_begin_row[iat1]; + const int col_ap = this->_paraV->atom_begin_col[iat2]; const int row_size = this->_paraV->get_row_size(iat1); const int col_size = this->_paraV->get_col_size(iat2); - const int r_size = target_ap.get_R_size(); - if (row_ap == -1 || col_ap == -1) - { - throw std::string("Atom-pair not belong this process"); - } - // R index - const ModuleBase::Vector3 r_index = target_ap.get_R_index(0); -#ifdef __DEBUG - assert(r_size == 1); - assert(r_index.x == 0 && r_index.y == 0 && r_index.z == 0); -#endif - hamilt::BaseMatrix* target_mat = target_ap.find_matrix(r_index); -#ifdef __DEBUG + const int R_size = target_ap.get_R_size(); + assert(row_ap != -1 && col_ap != -1 && "Atom-pair not belong this process"); + assert(R_size == 1); + const ModuleBase::Vector3 R_index = target_ap.get_R_index(0); + assert(R_index.x == 0 && R_index.y == 0 && R_index.z == 0); + hamilt::BaseMatrix*const target_mat = target_ap.find_matrix(R_index); + #ifdef __DEBUG if (target_mat == nullptr) { std::cout << "target_mat is nullptr" << std::endl; continue; } -#endif + #endif // k index - double kphase = 1; - // set DMR element - double* target_DMR_ptr = target_mat->get_pointer(); - double* DMK_ptr = this->_DMK[0 + ik_begin].data(); + constexpr TK kphase = 1; // transpose DMK col=>row - DMK_ptr += col_ap * this->_paraV->nrow + row_ap; + const TK* DMK_mat_ptr + = this->_DMK[0 + ik_begin].data() + + col_ap * this->_paraV->nrow + row_ap; + // set DMR element + TR* target_DMR_ptr = target_mat->get_pointer(); for (int mu = 0; mu < row_size; ++mu) { BlasConnector::axpy(col_size, kphase, - DMK_ptr, + DMK_mat_ptr, ld_hk, target_DMR_ptr, 1); - DMK_ptr += 1; + DMK_mat_ptr += 1; target_DMR_ptr += col_size; } } @@ -558,6 +540,8 @@ void DensityMatrix::cal_DMR(const int ik_in) ModuleBase::timer::tick("DensityMatrix", "cal_DMR"); } + + // switch_dmr template void DensityMatrix::switch_dmr(const int mode) @@ -629,12 +613,57 @@ void DensityMatrix::switch_dmr(const int mode) } break; default: - throw std::string("Unknown mode in switch_dmr"); + ModuleBase::WARNING_QUIT("density_matrix.cpp", "Unknown mode in switch_dmr"); } ModuleBase::timer::tick("DensityMatrix", "switch_dmr"); } } + + +template <> +void DensityMatrix_Tools::func_exp_mul_dmk(const std::complex kphase, const std::vector> &DMK_mat_trans, double* target_DMR_mat) +{ + const std::size_t mat_size = DMK_mat_trans.size(); + for(std::size_t i = 0; i < mat_size; i++) + { + target_DMR_mat[i] + += kphase.real() * DMK_mat_trans[i].real() + - kphase.imag() * DMK_mat_trans[i].imag(); + } +} + +template <> +void DensityMatrix_Tools::func_exp_mul_dmk>(const std::complex kphase, const std::vector> &DMK_mat_trans, std::complex* target_DMR_mat) +{ + BlasConnector::axpy(DMK_mat_trans.size(), + kphase, + DMK_mat_trans.data(), + 1, + target_DMR_mat, + 1); +} + +template <> +void DensityMatrix_Tools::func_xyz_to_updown(const std::complex tmp[4], const int icol, const int step_trace[4], double* target_DMR_mat) +{ + target_DMR_mat[icol + step_trace[0]] = tmp[0].real() + tmp[3].real(); // rho_0 = (rho_upup + rho_downdown).real() + target_DMR_mat[icol + step_trace[1]] = tmp[1].real() + tmp[2].real(); // rho_x = (rho_updown + rho_downup).real() + target_DMR_mat[icol + step_trace[2]] = -tmp[1].imag() + tmp[2].imag(); // rho_y = (i * (rho_updown - rho_downup)).real() + target_DMR_mat[icol + step_trace[3]] = tmp[0].real() - tmp[3].real(); // rho_z = (rho_upup - rho_downdown).real() +} + +template <> +void DensityMatrix_Tools::func_xyz_to_updown>(const std::complex tmp[4], const int icol, const int step_trace[4], std::complex* target_DMR_mat) +{ + target_DMR_mat[icol + step_trace[0]] = tmp[0] + tmp[3]; // rho_0 = (rho_upup + rho_downdown) + target_DMR_mat[icol + step_trace[1]] = tmp[1] + tmp[2]; // rho_x = (rho_updown + rho_downup) + target_DMR_mat[icol + step_trace[2]] = ModuleBase::IMAG_UNIT * (tmp[1].imag() - tmp[2].imag()); // rho_y = (i * (rho_updown - rho_downup)) + target_DMR_mat[icol + step_trace[3]] = tmp[0] - tmp[3]; // rho_z = (rho_upup - rho_downdown) +} + + + // T of HContainer can be double or complex template class DensityMatrix; // Gamma-Only case template class DensityMatrix, double>; // Multi-k case diff --git a/source/source_estate/module_dm/density_matrix.h b/source/source_estate/module_dm/density_matrix.h index 5716340e07..a8b0e1c4ec 100644 --- a/source/source_estate/module_dm/density_matrix.h +++ b/source/source_estate/module_dm/density_matrix.h @@ -31,6 +31,40 @@ struct ShiftRealComplex> using type = double; }; + + template class DensityMatrix; + +// DensityMatrix,TR>::cal_DMR() is illegal in C++, so DensityMatrix_Tools is used instead. +namespace DensityMatrix_Tools +{ + template + extern void cal_DMR( + const DensityMatrix &dm, + std::vector*> &dmR_out, + const int ik_in); + + template + extern void cal_DMR_td( + const DensityMatrix &dm, + std::vector*> &dmR_out, + const UnitCell& ucell, + const ModuleBase::Vector3 At, + const int ik_in); + + template + extern void cal_DMR_full( + const DensityMatrix &dm, + hamilt::HContainer* dmR_out, + const int ik_in); + + template + extern void func_exp_mul_dmk(const std::complex kphase, const std::vector> &DMK_mat_trans, TR* target_DMR_mat); + + template + extern void func_xyz_to_updown(const std::complex tmp[4], const int icol, const int step_trace[4], TR* target_DMR_mat); +} + + template class DensityMatrix { @@ -51,7 +85,10 @@ class DensityMatrix * @param nk number of k-points, not always equal to K_Vectors::get_nks()/nspin_dm. * it will be set to kvec_d.size() if the value is invalid */ - DensityMatrix(const Parallel_Orbitals* _paraV, const int nspin, const std::vector>& kvec_d, const int nk); + DensityMatrix(const Parallel_Orbitals* _paraV, + const int nspin, + const std::vector>& kvec_d, + const int nk); /** * @brief Constructor of class DensityMatrix for gamma-only calculation, where kvector is not required @@ -176,6 +213,7 @@ class DensityMatrix /** * @brief calculate density matrix DMR from dm(k) using blas::axpy + * @param ik_in * if ik_in < 0, calculate all k-points * if ik_in >= 0, calculate only one k-point without summing over k-points */ @@ -183,6 +221,7 @@ class DensityMatrix /** * @brief calculate density matrix DMR with additional vector potential phase, used for hybrid gauge tddft + * @param ik_in * if ik_in < 0, calculate all k-points * if ik_in >= 0, calculate only one k-point without summing over k-points */ @@ -192,8 +231,11 @@ class DensityMatrix * @brief calculate complex density matrix DMR with both real and imaginary part for noncollinear-spin calculation * the stored dm(k) has been used to calculate the passin DMR * @param dmR_out pointer of HContainer object to store the calculated complex DMR + * @param ik_in + * if ik_in < 0, calculate all k-points + * if ik_in >= 0, calculate only one k-point without summing over k-points */ - void cal_DMR_full(hamilt::HContainer>* dmR_out) const; + void cal_DMR_full(hamilt::HContainer>* dmR_out, const int ik_in = -1) const; /** * @brief (Only nspin=2) switch DMR to total density matrix or magnetization density matrix @@ -284,6 +326,9 @@ class DensityMatrix std::vector dmr_origin_; TR* dmr_tmp_ = nullptr; + friend void DensityMatrix_Tools::cal_DMR(const DensityMatrix &dm, std::vector*> &dmR_out, const int ik_in); + friend void DensityMatrix_Tools::cal_DMR_td(const DensityMatrix &dm, std::vector*> &dmR_out, const UnitCell& ucell, const ModuleBase::Vector3 At, const int ik_in); + friend void DensityMatrix_Tools::cal_DMR_full(const DensityMatrix &dm, hamilt::HContainer>* dmR_out, const int ik_in); }; } // namespace elecstate diff --git a/source/source_estate/module_dm/init_dm.cpp b/source/source_estate/module_dm/init_dm.cpp new file mode 100644 index 0000000000..c45190e01e --- /dev/null +++ b/source/source_estate/module_dm/init_dm.cpp @@ -0,0 +1,58 @@ +#include "source_estate/module_dm/init_dm.h" +#include "source_estate/module_dm/cal_dm_psi.h" +#include "source_estate/elecstate_tools.h" +#include "source_estate/cal_ux.h" +#include "source_lcao/rho_tau_lcao.h" // mohan add 2025-11-12 + +template +void elecstate::init_dm(UnitCell& ucell, + elecstate::ElecState* pelec, + LCAO_domain::Setup_DM &dmat, + psi::Psi* psi, + Charge &chr, + const int iter, + const int exx_two_level_step) +{ + ModuleBase::TITLE("elecstate", "init_dm"); + + if (iter == 1 && exx_two_level_step == 0) + { + std::cout << " LCAO WAVEFUN -> CHARGE " << std::endl; + + elecstate::calEBand(pelec->ekb, pelec->wg, pelec->f_en); + + elecstate::cal_dm_psi(dmat.dm->get_paraV_pointer(), pelec->wg, *psi, *dmat.dm); + dmat.dm->cal_DMR(); + + // mohan add 2025-11-12, use density matrix to calculate the charge density + LCAO_domain::dm2rho(dmat.dm->get_DMR_vector(), PARAM.inp.nspin, &chr); + + elecstate::cal_ux(ucell); + + //! update the potentials by using new electron charge density + pelec->pot->update_from_charge(&chr, &ucell); + + //! compute the correction energy for metals + pelec->f_en.descf = pelec->cal_delta_escf(); + } + + return; +} + + +template void elecstate::init_dm(UnitCell& ucell, + elecstate::ElecState* pelec, + LCAO_domain::Setup_DM &dmat, + psi::Psi* psi, + Charge &chr, + const int iter, + const int exx_two_level_step); + +template void elecstate::init_dm>(UnitCell& ucell, + elecstate::ElecState* pelec, + LCAO_domain::Setup_DM> &dmat, + psi::Psi>* psi, + Charge &chr, + const int iter, + const int exx_two_level_step); + diff --git a/source/source_estate/module_dm/init_dm.h b/source/source_estate/module_dm/init_dm.h new file mode 100644 index 0000000000..2fd969638d --- /dev/null +++ b/source/source_estate/module_dm/init_dm.h @@ -0,0 +1,24 @@ +#ifndef INIT_DM_H +#define INIT_DM_H + +#include "source_cell/unitcell.h" // use unitcell +#include "source_estate/elecstate.h"// use ElecState +#include "source_psi/psi.h" // use electronic wave functions +#include "source_estate/module_charge/charge.h" // use charge +#include "source_lcao/setup_dm.h" // define Setup_DM + +namespace elecstate +{ + +template +void init_dm(UnitCell& ucell, + ElecState* pelec, + LCAO_domain::Setup_DM &dmat, + psi::Psi* psi, + Charge &chr, + const int iter, + const int exx_two_level_step); + +} + +#endif diff --git a/source/source_estate/module_dm/test/CMakeLists.txt b/source/source_estate/module_dm/test/CMakeLists.txt index 1c4365cdb3..bb95272936 100644 --- a/source/source_estate/module_dm/test/CMakeLists.txt +++ b/source/source_estate/module_dm/test/CMakeLists.txt @@ -4,23 +4,23 @@ remove_definitions(-D__ROCM) install(DIRECTORY support DESTINATION ${CMAKE_CURRENT_BINARY_DIR}) -if(TARGET dm_io_test_serial) +if(TARGET MODULE_ESTATE_dm_io_test_serial) remove_definitions(-D__MPI) endif() AddTest( - TARGET dm_io_test_serial + TARGET MODULE_ESTATE_dm_io_test_serial LIBS parameter ${math_libs} base device cell_info SOURCES test_dm_io.cpp ../density_matrix.cpp ../density_matrix_io.cpp ${ABACUS_SOURCE_DIR}/source_lcao/module_hcontainer/base_matrix.cpp ${ABACUS_SOURCE_DIR}/source_lcao/module_hcontainer/hcontainer.cpp ${ABACUS_SOURCE_DIR}/source_lcao/module_hcontainer/atom_pair.cpp ${ABACUS_SOURCE_DIR}/source_basis/module_ao/parallel_orbitals.cpp - ${ABACUS_SOURCE_DIR}/source_io/output.cpp + ${ABACUS_SOURCE_DIR}/source_io/module_output/output.cpp ) AddTest( - TARGET dm_constructor_test + TARGET MODULE_ESTATE_dm_constructor_test LIBS parameter ${math_libs} base device SOURCES test_dm_constructor.cpp ../density_matrix.cpp ../density_matrix_io.cpp tmp_mocks.cpp ${ABACUS_SOURCE_DIR}/source_lcao/module_hcontainer/base_matrix.cpp @@ -30,7 +30,7 @@ AddTest( ) AddTest( - TARGET dm_init_test + TARGET MODULE_ESTATE_dm_init_test LIBS parameter ${math_libs} base device SOURCES test_dm_R_init.cpp ../density_matrix.cpp ../density_matrix_io.cpp tmp_mocks.cpp ${ABACUS_SOURCE_DIR}/source_lcao/module_hcontainer/base_matrix.cpp @@ -40,7 +40,7 @@ AddTest( ) AddTest( - TARGET dm_cal_DMR_test + TARGET MODULE_ESTATE_dm_cal_DMR_test LIBS parameter ${math_libs} base device SOURCES test_cal_dm_R.cpp ../density_matrix.cpp ../density_matrix_io.cpp tmp_mocks.cpp ${ABACUS_SOURCE_DIR}/source_lcao/module_hcontainer/base_matrix.cpp diff --git a/source/source_estate/module_dm/test/prepare_unitcell.h b/source/source_estate/module_dm/test/prepare_unitcell.h index e760a8da0e..0cbbd28905 100644 --- a/source/source_estate/module_dm/test/prepare_unitcell.h +++ b/source/source_estate/module_dm/test/prepare_unitcell.h @@ -96,7 +96,7 @@ class UcellTestPrepare } // lattice info ucell.lat0 = this->lat0; - ucell.lat0_angstrom = ucell.lat0 * 0.529177; + ucell.lat0_angstrom = ucell.lat0 * ModuleBase::BOHR_TO_A; ucell.tpiba = ModuleBase::TWO_PI / ucell.lat0; ucell.tpiba2 = ucell.tpiba * ucell.tpiba; ucell.latvec.e11 = this->latvec[0]; diff --git a/source/source_estate/module_dm/test/tmp_mocks.cpp b/source/source_estate/module_dm/test/tmp_mocks.cpp index d890a90beb..dcf803ca5f 100644 --- a/source/source_estate/module_dm/test/tmp_mocks.cpp +++ b/source/source_estate/module_dm/test/tmp_mocks.cpp @@ -45,6 +45,10 @@ pseudo::pseudo() pseudo::~pseudo() { } +SepPot::SepPot(){} +SepPot::~SepPot(){} +Sep_Cell::Sep_Cell() noexcept {} +Sep_Cell::~Sep_Cell() noexcept {} // constructor of UnitCell UnitCell::UnitCell() @@ -113,4 +117,4 @@ Record_adj::Record_adj() } Record_adj::~Record_adj() { -} \ No newline at end of file +} diff --git a/source/source_estate/module_pot/H_TDDFT_pw.cpp b/source/source_estate/module_pot/H_TDDFT_pw.cpp index 165f1fe5b4..cdb8a28e2d 100644 --- a/source/source_estate/module_pot/H_TDDFT_pw.cpp +++ b/source/source_estate/module_pot/H_TDDFT_pw.cpp @@ -3,10 +3,9 @@ #include "source_base/constants.h" #include "source_base/math_integral.h" #include "source_base/timer.h" -#include "source_lcao/module_rt/evolve_elec.h" -#include "source_pw/module_pwdft/global.h" -#include "source_io/input_conv.h" +#include "source_io/module_parameter/input_conv.h" #include "source_io/module_parameter/parameter.h" +#include "source_lcao/module_rt/evolve_elec.h" namespace elecstate { @@ -15,20 +14,17 @@ int H_TDDFT_pw::istep = -1; bool H_TDDFT_pw::is_initialized = false; double H_TDDFT_pw::amp; -double H_TDDFT_pw::bmod; -double H_TDDFT_pw::bvec[3]; -// Used for calculating electric field force on ions +// Used for calculating electric field force on ions, summing over directions vector H_TDDFT_pw::global_vext_time = {0.0, 0.0, 0.0}; int H_TDDFT_pw::stype; // 0 : length gauge 1: velocity gauge std::vector H_TDDFT_pw::ttype; -// 0 Gauss type function. -// 1 trapezoid type function. -// 2 Trigonometric functions, sin^2. -// 3 heaviside function. -// 4 HHG function. +// 0: Gaussian type function. +// 1: Trapezoid type function. +// 2: Trigonometric functions, sin^2. +// 3: Heaviside step function. int H_TDDFT_pw::tstart; int H_TDDFT_pw::tend; @@ -94,9 +90,9 @@ void H_TDDFT_pw::current_step_info(const std::string& file_dir, int& istep) } file >> istep; - file >> At[0] >> At[1] >>At[2]; + file >> At[0] >> At[1] >> At[2]; file >> At_laststep[0] >> At_laststep[1] >> At_laststep[2]; - At_laststep=-At_laststep; + At_laststep = -At_laststep; file.close(); } @@ -119,7 +115,6 @@ void H_TDDFT_pw::cal_fixed_v(double* vl_pseudo) { return; } - //std::cout << "calculate electric potential" << std::endl; ModuleBase::timer::tick("H_TDDFT_pw", "cal_fixed_v"); @@ -131,20 +126,6 @@ void H_TDDFT_pw::cal_fixed_v(double* vl_pseudo) global_vext_time = {0.0, 0.0, 0.0}; - if (PARAM.inp.td_vext_dire.size() != 1) - { - ModuleBase::WARNING("H_TDDFT_pw::cal_fixed_v", - "Multiple electric fields detected. This feature may have potential issues and is not " - "recommended for use!"); - } - if (PARAM.inp.td_vext_dire.size() > 2) - { - // To avoid breaking the integration test 601_NO_TDDFT_H2_len_hhg, a maximum of 2 electric fields are allowed - ModuleBase::WARNING_QUIT("H_TDDFT_pw::cal_fixed_v", - "For the sake of program stability, the feature of applying multiple electric fields " - "simultaneously has been temporarily disabled. Thank you for your understanding!"); - } - for (auto direc: PARAM.inp.td_vext_dire) { std::vector vext_space(this->rho_basis_->nrxx, 0.0); @@ -155,7 +136,7 @@ void H_TDDFT_pw::cal_fixed_v(double* vl_pseudo) if (PARAM.inp.out_efield && GlobalV::MY_RANK == 0) { std::stringstream as; - as << PARAM.globalv.global_out_dir << "efield_" << count << ".dat"; + as << PARAM.globalv.global_out_dir << "efield_" << count << ".txt"; std::ofstream ofs(as.str().c_str(), std::ofstream::app); ofs << H_TDDFT_pw::istep * dt * ModuleBase::AU_to_FS << "\t" << vext_time * ModuleBase::Ry_to_eV / ModuleBase::BOHR_TO_A << std::endl; @@ -198,8 +179,6 @@ void H_TDDFT_pw::cal_v_space_length(std::vector& vext_space, int direc) ModuleBase::TITLE("H_TDDFT_pw", "cal_v_space_length"); ModuleBase::timer::tick("H_TDDFT_pw", "cal_v_space_length"); - prepare(ucell_->G, direc); - for (int ir = 0; ir < this->rho_basis_->nrxx; ++ir) { int i = ir / (this->rho_basis_->ny * this->rho_basis_->nplane); @@ -212,15 +191,21 @@ void H_TDDFT_pw::cal_v_space_length(std::vector& vext_space, int direc) switch (direc) { case 1: - vext_space[ir] = cal_v_space_length_potential(x) / bmod; + vext_space[ir] = cal_v_space_length_potential(x) * this->ucell_->latvec.e11 + + cal_v_space_length_potential(y) * this->ucell_->latvec.e21 + + cal_v_space_length_potential(z) * this->ucell_->latvec.e31; break; case 2: - vext_space[ir] = cal_v_space_length_potential(y) / bmod; + vext_space[ir] = cal_v_space_length_potential(x) * this->ucell_->latvec.e12 + + cal_v_space_length_potential(y) * this->ucell_->latvec.e22 + + cal_v_space_length_potential(z) * this->ucell_->latvec.e32; break; case 3: - vext_space[ir] = cal_v_space_length_potential(z) / bmod; + vext_space[ir] = cal_v_space_length_potential(x) * this->ucell_->latvec.e13 + + cal_v_space_length_potential(y) * this->ucell_->latvec.e23 + + cal_v_space_length_potential(z) * this->ucell_->latvec.e33; break; default: @@ -272,10 +257,6 @@ int H_TDDFT_pw::check_ncut(int t_type) ncut = 2; break; - // case 4: - // vext_time = cal_v_time_HHG(); - // break; - default: std::cout << "time_domain_type of electric field is wrong" << std::endl; break; @@ -285,11 +266,10 @@ int H_TDDFT_pw::check_ncut(int t_type) void H_TDDFT_pw::update_At() { - //std::cout << "calculate electric potential" << std::endl; // time evolve H_TDDFT_pw::istep++; // midpoint rule should be used both in Hamiltonian and here. - At = At + At_laststep/2.0; + At = At + At_laststep / 2.0; At_laststep.set(0.0, 0.0, 0.0); Et.set(0.0, 0.0, 0.0); @@ -341,8 +321,8 @@ void H_TDDFT_pw::update_At() At_laststep[direc - 1] -= out; break; case 2: - At_laststep[direc-1] -= out; - Et[direc-1] += vext_time[0]; + At_laststep[direc - 1] -= out; + Et[direc - 1] += vext_time[0]; break; default: std::cout << "space_domain_type of electric field is wrong" << std::endl; @@ -353,7 +333,7 @@ void H_TDDFT_pw::update_At() if (PARAM.inp.out_efield && GlobalV::MY_RANK == 0) { std::stringstream as; - as << PARAM.globalv.global_out_dir << "efield_" << count << ".dat"; + as << PARAM.globalv.global_out_dir << "efield_" << count << ".txt"; std::ofstream ofs(as.str().c_str(), std::ofstream::app); ofs << H_TDDFT_pw::istep * dt * ModuleBase::AU_to_FS << "\t" << vext_time[0] * ModuleBase::Ry_to_eV / ModuleBase::BOHR_TO_A << std::endl; @@ -362,7 +342,7 @@ void H_TDDFT_pw::update_At() // total count++ count++; } - At = At + At_laststep/2.0; + At = At + At_laststep / 2.0; ModuleBase::timer::tick("H_TDDFT_pw", "update_At"); return; @@ -390,10 +370,6 @@ double H_TDDFT_pw::cal_v_time(int t_type, const bool last) vext_time = cal_v_time_heaviside(last); break; - // case 4: - // vext_time = cal_v_time_HHG(); - // break; - default: std::cout << "time_domain_type of electric field is wrong" << std::endl; break; @@ -487,36 +463,12 @@ double H_TDDFT_pw::cal_v_time_heaviside(const bool last) { vext_time = 0.0; } - if(last)heavi_count++; - - return vext_time; -} - -void H_TDDFT_pw::prepare(const ModuleBase::Matrix3& G, int& dir) -{ - if (dir == 1) - { - bvec[0] = G.e11; - bvec[1] = G.e12; - bvec[2] = G.e13; - } - else if (dir == 2) - { - bvec[0] = G.e21; - bvec[1] = G.e22; - bvec[2] = G.e23; - } - else if (dir == 3) - { - bvec[0] = G.e31; - bvec[1] = G.e32; - bvec[2] = G.e33; - } - else + if (last) { - ModuleBase::WARNING_QUIT("H_TDDFT_pw::prepare", "direction is wrong!"); + heavi_count++; } - bmod = sqrt(pow(bvec[0], 2) + pow(bvec[1], 2) + pow(bvec[2], 2)); + + return vext_time; } void H_TDDFT_pw::compute_force(const UnitCell& cell, ModuleBase::matrix& fe) @@ -526,11 +478,10 @@ void H_TDDFT_pw::compute_force(const UnitCell& cell, ModuleBase::matrix& fe) { for (int ia = 0; ia < cell.atoms[it].na; ++ia) { - for (int jj = 0; jj < 3; ++jj) + for (int direc = 0; direc < 3; ++direc) { // No need to multiply ModuleBase::e2, since the unit of force is Ry/Bohr - fe(iat, jj) - = (std::abs(bmod) > 1e-10 ? global_vext_time[jj] * cell.atoms[it].ncpp.zv * bvec[jj] / bmod : 0); + fe(iat, direc) = global_vext_time[direc] * cell.atoms[it].ncpp.zv; } ++iat; } @@ -538,4 +489,3 @@ void H_TDDFT_pw::compute_force(const UnitCell& cell, ModuleBase::matrix& fe) } } // namespace elecstate - diff --git a/source/source_estate/module_pot/H_TDDFT_pw.h b/source/source_estate/module_pot/H_TDDFT_pw.h index 6c69d63566..fc25f510bd 100644 --- a/source/source_estate/module_pot/H_TDDFT_pw.h +++ b/source/source_estate/module_pot/H_TDDFT_pw.h @@ -1,9 +1,9 @@ #ifndef H_TDDFT_PW_H #define H_TDDFT_PW_H -#include "source_io/input_conv.h" -#include "source_io/module_parameter/parameter.h" // PARAM.globalv.global_readin_dir, PARAM.inp.mdp.md_restart #include "pot_base.h" +#include "source_io/module_parameter/input_conv.h" +#include "source_io/module_parameter/parameter.h" // PARAM.globalv.global_readin_dir, PARAM.inp.mdp.md_restart namespace elecstate { @@ -40,22 +40,21 @@ class H_TDDFT_pw : public PotBase void cal_fixed_v(double* vl_pseudo) override; /** - * @brief compute force of electric field + * @brief Compute ionic force of electric field * - * @param[in] cell information of cell - * @param[out] fe force of electric field F=qE + * @param[in] cell Information of cell + * @param[out] fe Force of electric field F = qE */ static void compute_force(const UnitCell& cell, ModuleBase::matrix& fe); // parameters - static int stype; // 0 : length gauge 1: velocity gauge + static int stype; // 0: length gauge; 1: velocity gauge; 2: hybrid gauge static std::vector ttype; - // 0 Gauss type function. - // 1 trapezoid type function. - // 2 Trigonometric functions, sin^2. - // 3 heaviside function. - // 4 HHG function. + // 0: Gaussian type function. + // 1: Trapezoid type function. + // 2: Trigonometric functions, sin^2. + // 3: Heaviside step function. static int tstart; static int tend; @@ -64,18 +63,18 @@ class H_TDDFT_pw : public PotBase static double dt_int; static int istep_int; - // space domain parameters + // Space domain parameters // length gauge static double lcut1; static double lcut2; - // velocity gauge, vector magnetic potential + // velocity gauge, vector potential static ModuleBase::Vector3 At; static ModuleBase::Vector3 At_laststep; static ModuleBase::Vector3 Et; - // time domain parameters + // Time domain parameters // Gauss static int gauss_count; @@ -84,11 +83,11 @@ class H_TDDFT_pw : public PotBase static std::vector gauss_sigma; // time(a.u.) static std::vector gauss_t0; static std::vector gauss_amp; // Ry/bohr - // add for velocity gauge, recut dt into n pieces to make sure the integral is accurate Enough - // must be even, thus would get odd number of points for simpson integral + // add for velocity gauge, recut dt into n pieces to make sure the integral is accurate enough + // must be even, thus would get odd number of points for Simpson integral static std::vector gauss_ncut; - // trapezoid + // Trapezoid static int trape_count; static std::vector trape_omega; // time(a.u.)^-1 static std::vector trape_phase; @@ -96,7 +95,7 @@ class H_TDDFT_pw : public PotBase static std::vector trape_t2; static std::vector trape_t3; static std::vector trape_amp; // Ry/bohr - // add for velocity gauge, recut dt into n pieces to make sure the integral is accurate Enough + // add for velocity gauge, recut dt into n pieces to make sure the integral is accurate enough static std::vector trape_ncut; // Trigonometric @@ -106,7 +105,7 @@ class H_TDDFT_pw : public PotBase static std::vector trigo_phase1; static std::vector trigo_phase2; static std::vector trigo_amp; // Ry/bohr - // add for velocity gauge, recut dt into n pieces to make sure the integral is accurate Enough + // add for velocity gauge, recut dt into n pieces to make sure the integral is accurate enough static std::vector trigo_ncut; // Heaviside @@ -118,44 +117,33 @@ class H_TDDFT_pw : public PotBase static void update_At(); private: - // internal time-step, - //-------hypothesis------- - // Vext will evolve by time, every time cal_fixed_v() is called, istep++ - //------------------------ static int istep; static bool is_initialized; // static flag variable, used to ensure initialization only once static double amp; static vector global_vext_time; - static double bmod; - static double bvec[3]; - const UnitCell* ucell_ = nullptr; // Obtain the current MD step information, used for restart calculation void current_step_info(const std::string& file_dir, int& istep); - // potential of electric field in space domain : length gauge and velocity gauge + // Potential of electric field in space domain: for length gauge only void cal_v_space(std::vector& vext_space, int direc); void cal_v_space_length(std::vector& vext_space, int direc); double cal_v_space_length_potential(double i); - // potential of electric field in time domain : Gauss , trapezoid, trigonometric, heaviside, HHG + // Potential of electric field in time domain: Gaussian, trapezoid, trigonometric, Heaviside static double cal_v_time(int t_type, const bool last); static double cal_v_time_Gauss(const bool last); static double cal_v_time_trapezoid(const bool last); static double cal_v_time_trigonometric(const bool last); static double cal_v_time_heaviside(const bool last); - // double cal_v_time_HHG(); - // get ncut number for At integral + // Get ncut number for At integral static int check_ncut(int t_type); - - void prepare(const ModuleBase::Matrix3& G, int& dir); }; } // namespace elecstate #endif - diff --git a/source/source_estate/module_pot/efield.cpp b/source/source_estate/module_pot/efield.cpp index c51b6262ac..2e9676d9d4 100644 --- a/source/source_estate/module_pot/efield.cpp +++ b/source/source_estate/module_pot/efield.cpp @@ -227,7 +227,7 @@ double Efield::cal_induced_dipole(const UnitCell& cell, Parallel_Reduce::reduce_pool(induced_dipole); induced_dipole *= cell.lat0 / bmod * ModuleBase::FOUR_PI / rho_basis->nxyz; - + delete[] induced_rho; return induced_dipole; } @@ -360,4 +360,4 @@ void Efield::autoset(std::vector& pos) ModuleBase::GlobalFunc::OUT(GlobalV::ofs_running, "Autoset efield_pos_dec", efield_pos_dec); } -} // namespace elecstate \ No newline at end of file +} // namespace elecstate diff --git a/source/source_estate/module_pot/pot_base.h b/source/source_estate/module_pot/pot_base.h index be47777af4..aaa578bc5b 100644 --- a/source/source_estate/module_pot/pot_base.h +++ b/source/source_estate/module_pot/pot_base.h @@ -28,6 +28,8 @@ class PotBase virtual void cal_fixed_v(double* vl_pseudo){} + virtual double get_energy() const { return 0.0; } + bool fixed_mode = 0; bool dynamic_mode = 0; diff --git a/source/source_estate/module_pot/pot_cosikr.cpp b/source/source_estate/module_pot/pot_cosikr.cpp new file mode 100644 index 0000000000..f77ea320a5 --- /dev/null +++ b/source/source_estate/module_pot/pot_cosikr.cpp @@ -0,0 +1,53 @@ +//======================= +// AUTHOR : Peize Lin +// DATE : 2025-10-05 +//======================= + +#include "pot_cosikr.h" + +#include + +namespace elecstate +{ + +Pot_Cosikr::Pot_Cosikr( + const ModulePW::PW_Basis* rho_basis_in, + const ModuleBase::Vector3 &kvec_d_in, + const std::vector &phase_in, + const std::vector &litude_in) + :kvec_d(kvec_d_in), + phase(phase_in), + amplitude(amplitude_in) +{ + this->rho_basis_ = rho_basis_in; + this->dynamic_mode = true; + this->fixed_mode = false; +} + + +void Pot_Cosikr::cal_v_eff(const Charge*const chg, const UnitCell*const ucell, ModuleBase::matrix &v_eff) +{ + ModuleBase::TITLE("Pot_Cosikr", "cal_v_eff"); + ModuleBase::timer::tick("Pot_Cosikr", "cal_veff"); + assert(v_eff.nr == this->phase.size()); + assert(v_eff.nr == this->amplitude.size()); + int ir = 0; + for (int ix = 0; ix < this->rho_basis_->nx; ++ix) + { + const double phase_x = this->kvec_d.x * ix / this->rho_basis_->nx; + for (int iy = 0; iy < this->rho_basis_->ny; ++iy) + { + const double phase_xy = phase_x + this->kvec_d.y * iy / this->rho_basis_->ny; + for (int iz = this->rho_basis_->startz_current; iz < this->rho_basis_->startz_current + this->rho_basis_->nplane; ++iz) + { + const double phase_xyz = phase_xy + this->kvec_d.z * iz / this->rho_basis_->nz; + for(int is=0; isamplitude[is] * std::cos((phase_xyz + this->phase[is]) * ModuleBase::TWO_PI); + ++ir; + } + } + } + ModuleBase::timer::tick("Pot_Cosikr", "cal_veff"); +} + +} \ No newline at end of file diff --git a/source/source_estate/module_pot/pot_cosikr.h b/source/source_estate/module_pot/pot_cosikr.h new file mode 100644 index 0000000000..d6953a5dfe --- /dev/null +++ b/source/source_estate/module_pot/pot_cosikr.h @@ -0,0 +1,36 @@ +//======================= +// AUTHOR : Peize Lin +// DATE : 2025-10-05 +//======================= + +#ifndef POT_COSIKR_H +#define POT_COSIKR_H + +#include "pot_base.h" +#include "source_base/vector3.h" + + +namespace elecstate +{ + +// ampitude * cos( 2pi*( k * r + phase ) ) +class Pot_Cosikr : public PotBase +{ + public: + Pot_Cosikr( + const ModulePW::PW_Basis* rho_basis_in, + const ModuleBase::Vector3 &kvec_d_in, + const std::vector &phase_in, + const std::vector &litude_in); + + void cal_v_eff(const Charge*const chg, const UnitCell*const ucell, ModuleBase::matrix &v_eff) override; + + private: + const ModuleBase::Vector3 kvec_d; + const std::vector phase; + const std::vector amplitude; +}; + +} + +#endif \ No newline at end of file diff --git a/source/source_estate/module_pot/pot_local_paw.cpp b/source/source_estate/module_pot/pot_local_paw.cpp deleted file mode 100644 index 03dab7d59e..0000000000 --- a/source/source_estate/module_pot/pot_local_paw.cpp +++ /dev/null @@ -1,25 +0,0 @@ -#include "pot_local_paw.h" - -#include "source_base/timer.h" -#include "source_base/tool_title.h" - -#include - -namespace elecstate -{ - -//========================================================== -// This routine computes the local potential in real space -//========================================================== -void PotLocal_PAW::cal_fixed_v(double *vl_pseudo // store the local pseudopotential -) -{ - ModuleBase::TITLE("PotLocal_PAW", "cal_fixed_v"); - ModuleBase::timer::tick("PotLocal_PAW", "cal_fixed_v"); - - // GlobalV::ofs_running <<" set local pseudopotential done." << std::endl; - ModuleBase::timer::tick("PotLocal_PAW", "cal_fixed_v"); - return; -} - -} // namespace elecstate \ No newline at end of file diff --git a/source/source_estate/module_pot/pot_local_paw.h b/source/source_estate/module_pot/pot_local_paw.h deleted file mode 100644 index 7399827c33..0000000000 --- a/source/source_estate/module_pot/pot_local_paw.h +++ /dev/null @@ -1,24 +0,0 @@ -#ifndef POTLOCALPAW_H -#define POTLOCALPAW_H - -#include "source_base/matrix.h" -#include "pot_base.h" - -namespace elecstate -{ - -class PotLocal_PAW : public PotBase -{ - public: - PotLocal_PAW() - { - this->fixed_mode = true; - this->dynamic_mode = false; - } - - void cal_fixed_v(double* vl_pseudo) override; -}; - -} // namespace elecstate - -#endif \ No newline at end of file diff --git a/source/source_estate/module_pot/pot_ml_exx.cpp b/source/source_estate/module_pot/pot_ml_exx.cpp new file mode 100644 index 0000000000..4d1237276d --- /dev/null +++ b/source/source_estate/module_pot/pot_ml_exx.cpp @@ -0,0 +1,217 @@ +#ifdef __MLALGO + +#include "pot_ml_exx.h" + +#include "npy.hpp" +#include "source_base/parallel_reduce.h" +#include "source_base/global_function.h" + +namespace elecstate +{ + +ML_EXX::ML_EXX() +{ + this->energy_prefactor = - 3. / 4. * std::pow(3. / M_PI, 1./3.) * 2; + this->energy_exponent = 4. / 3.; +} + +ML_EXX::~ML_EXX(){} + +void ML_EXX::set_para(const Input_para& inp, const UnitCell* ucell_in, const ModulePW::PW_Basis* rho_basis_in) +{ + torch::set_default_dtype(caffe2::TypeMeta::fromScalarType(torch::kDouble)); + auto output = torch::get_default_dtype(); + std::cout << "Default type: " << output << std::endl; + + this->set_device(inp.of_ml_device); + + this->nx = rho_basis_in->nrxx; + this->nx_tot = rho_basis_in->nrxx; + this->dV = ucell_in->omega / rho_basis_in->nxyz; + this->nkernel = inp.of_ml_nkernel; + + this->init_data( + this->nkernel, + inp.of_ml_gamma, + inp.of_ml_p, + inp.of_ml_q, + inp.of_ml_tanhp, + inp.of_ml_tanhq, + inp.of_ml_gammanl, + inp.of_ml_pnl, + inp.of_ml_qnl, + inp.of_ml_xi, + inp.of_ml_tanhxi, + inp.of_ml_tanhxi_nl, + inp.of_ml_tanh_pnl, + inp.of_ml_tanh_qnl, + inp.of_ml_tanhp_nl, + inp.of_ml_tanhq_nl); + + std::cout << "ninput = " << this->ninput << std::endl; + + if (PARAM.inp.ml_exx) + { + int nnode = 100; + int nlayer = 3; + this->nn = std::make_shared(this->nx, 0, this->ninput, nnode, nlayer, this->device); + torch::load(this->nn, "net.pt", this->device_type); + std::cout << "load net done" << std::endl; + if (PARAM.inp.of_ml_feg != 0) + { + torch::Tensor feg_inpt = torch::zeros(this->ninput, this->device_type); + for (int i = 0; i < this->ninput; ++i) + { + if (this->descriptor_type[i] == "gamma") feg_inpt[i] = 1.; + } + + if (PARAM.inp.of_ml_feg == 1) + this->feg_net_F = torch::softplus(this->nn->forward(feg_inpt)).to(this->device_CPU).contiguous().data_ptr()[0]; + else + { + this->feg_net_F = this->nn->forward(feg_inpt).to(this->device_CPU).contiguous().data_ptr()[0]; + } + + std::cout << "feg_net_F = " << this->feg_net_F << std::endl; + } + } + + if (PARAM.inp.ml_exx || PARAM.inp.of_ml_gene_data == 1) + { + this->cal_tool = new ModuleIO::Cal_MLKEDF_Descriptors; + + this->chi_p = inp.of_ml_chi_p; + this->chi_q = inp.of_ml_chi_q; + this->chi_xi = inp.of_ml_chi_xi; + this->chi_pnl = inp.of_ml_chi_pnl; + this->chi_qnl = inp.of_ml_chi_qnl; + + this->cal_tool->set_para(this->nx, inp.nelec, inp.of_tf_weight, inp.of_vw_weight, this->chi_p, this->chi_q, + this->chi_xi, this->chi_pnl, this->chi_qnl, this->nkernel, inp.of_ml_kernel, inp.of_ml_kernel_scaling, inp.of_ml_yukawa_alpha, inp.of_ml_kernel_file, this->dV * rho_basis_in->nxyz, rho_basis_in); + } +} + + +/** + * @brief Get the potential of ML KEDF, and add it into rpotential + * + * @param prho charge density + * @param pw_rho PW_Basis + * @param rpotential rpotential => rpotential + V_{ML} + */ +void ML_EXX::ml_potential(const double * const * prho, const ModulePW::PW_Basis *pw_rho, ModuleBase::matrix &rpotential) +{ + double* rho_data = new double[this->nx]; + const double** prho_mod = new const double*[1]; + prho_mod[0] = rho_data; + + for (int ir = 0; ir < this->nx; ++ir) + { + rho_data[ir] = std::abs(prho[0][ir]); + } + + this->updateInput(prho_mod, pw_rho); + + this->NN_forward(prho_mod, pw_rho, true); + + torch::Tensor enhancement_cpu_tensor = this->nn->F.to(this->device_CPU).contiguous(); + this->enhancement_cpu_ptr = enhancement_cpu_tensor.data_ptr(); + torch::Tensor gradient_cpu_tensor = this->nn->inputs.grad().to(this->device_CPU).contiguous(); + this->gradient_cpu_ptr = gradient_cpu_tensor.data_ptr(); + + this->get_potential_(prho_mod, pw_rho, rpotential); + + // get energy + ModuleBase::timer::tick("ML_EXX", "Pauli Energy"); + double energy = 0.; + for (int ir = 0; ir < this->nx; ++ir) + { + energy += this->enhancement_cpu_ptr[ir] * std::pow(prho_mod[0][ir], this->energy_exponent); + } + energy *= this->dV * this->energy_prefactor; + this->ml_exx_energy = energy; + Parallel_Reduce::reduce_pool(this->ml_exx_energy); + ModuleBase::timer::tick("ML_EXX", "Pauli Energy"); + + delete[] rho_data; + delete[] prho_mod; +} + +/** + * @brief Generate training data for ML KEDF + * + * @param prho charge density + * @param wt KEDF_WT + * @param tf KEDF_TF + * @param pw_rho PW_Basis + * @param veff effective potential + */ +void ML_EXX::generateTrainData(const double * const *prho, const ModulePW::PW_Basis *pw_rho, const double *veff) +{ + if (PARAM.inp.of_kinetic == "ml") + { + this->updateInput(prho, pw_rho); + + this->NN_forward(prho, pw_rho, true); + + torch::Tensor enhancement_cpu_tensor = this->nn->F.to(this->device_CPU).contiguous(); + this->enhancement_cpu_ptr = enhancement_cpu_tensor.data_ptr(); + torch::Tensor gradient_cpu_tensor = this->nn->inputs.grad().to(this->device_CPU).contiguous(); + this->gradient_cpu_ptr = gradient_cpu_tensor.data_ptr(); + + torch::Tensor enhancement = this->nn->F.reshape({this->nx}); + ModuleBase::matrix potential(1, this->nx); + + this->get_potential_(prho, pw_rho, potential); + + this->dumpTensor("enhancement.npy", enhancement); + this->dumpMatrix("potential.npy", potential); + } +} + +/** + * @brief For test + * + * @param prho charge density + * @param pw_rho PW_Basis + */ +void ML_EXX::localTest(const double * const *pprho, const ModulePW::PW_Basis *pw_rho) +{ + // for test ===================== + std::vector cshape = {(long unsigned) this->nx}; + bool fortran_order = false; + + std::vector temp_prho(this->nx); + this->loadVector("path_to_rho_file", temp_prho); + + double ** prho = new double *[1]; + prho[0] = new double[this->nx]; + for (int ir = 0; ir < this->nx; ++ir) prho[0][ir] = temp_prho[ir]; + for (int ir = 0; ir < this->nx; ++ir) + { + if (prho[0][ir] == 0.){ + std::cout << "WARNING: rho = 0" << std::endl; + } + }; + // ============================== + this->updateInput(prho, pw_rho); + + this->NN_forward(prho, pw_rho, true); + + torch::Tensor enhancement_cpu_tensor = this->nn->F.to(this->device_CPU).contiguous(); + this->enhancement_cpu_ptr = enhancement_cpu_tensor.data_ptr(); + torch::Tensor gradient_cpu_tensor = this->nn->inputs.grad().to(this->device_CPU).contiguous(); + this->gradient_cpu_ptr = gradient_cpu_tensor.data_ptr(); + + torch::Tensor enhancement = this->nn->F.reshape({this->nx}); + ModuleBase::matrix potential(1, this->nx); + + this->get_potential_(prho, pw_rho, potential); + + this->dumpTensor("enhancement-abacus.npy", enhancement); + this->dumpMatrix("potential-abacus.npy", potential); + exit(0); +} + +} // namespace elecstate +#endif diff --git a/source/source_estate/module_pot/pot_ml_exx.h b/source/source_estate/module_pot/pot_ml_exx.h new file mode 100644 index 0000000000..41a4b63c0b --- /dev/null +++ b/source/source_estate/module_pot/pot_ml_exx.h @@ -0,0 +1,80 @@ +#ifndef POT_ML_EXX_H +#define POT_ML_EXX_H +#include "source_io/module_parameter/parameter.h" + +#ifdef __MLALGO + +#include "pot_base.h" +#include "source_pw/module_ofdft/ml_tools/nn_of.h" +#include "source_io/module_ml/cal_mlkedf_descriptors.h" +#include "source_pw/module_ofdft/ml_base.h" + +namespace elecstate +{ + +class ML_EXX : public ML_Base +{ +public: + ML_EXX(); + virtual ~ML_EXX(); + + void set_para(const Input_para& inp, const UnitCell* ucell_in, const ModulePW::PW_Basis* rho_basis_in); + + void ml_potential(const double * const * prho, const ModulePW::PW_Basis *pw_rho, ModuleBase::matrix &rpotential); + + // output all parameters + void generateTrainData(const double * const *prho, const ModulePW::PW_Basis *pw_rho, const double *veff); + void localTest(const double * const *prho, const ModulePW::PW_Basis *pw_rho); + + void init_data( + const int &nkernel, + const bool &of_ml_gamma, + const bool &of_ml_p, + const bool &of_ml_q, + const bool &of_ml_tanhp, + const bool &of_ml_tanhq, + const std::vector &of_ml_gammanl_, + const std::vector &of_ml_pnl, + const std::vector &of_ml_qnl, + const std::vector &of_ml_xi, + const std::vector &of_ml_tanhxi, + const std::vector &of_ml_tanhxi_nl, + const std::vector &of_ml_tanh_pnl, + const std::vector &of_ml_tanh_qnl, + const std::vector &of_ml_tanhp_nl, + const std::vector &of_ml_tanhq_nl + ); + + double ml_exx_energy = 0.0; +}; + + +class PotML_EXX : public PotBase +{ + public: + PotML_EXX(const ModulePW::PW_Basis* rho_basis_in, const UnitCell* ucell_in) + { + this->rho_basis_ = rho_basis_in; + this->dynamic_mode = true; + this->fixed_mode = false; + + this->ml_exx.set_para(PARAM.inp, ucell_in, rho_basis_in); + } + ~PotML_EXX() {}; + + void cal_v_eff(const Charge*const chg, const UnitCell*const ucell, ModuleBase::matrix& v_eff) override + { + if (PARAM.inp.of_ml_local_test) this->ml_exx.localTest(chg->rho, this->rho_basis_); + this->ml_exx.ml_potential(chg->rho, this->rho_basis_, v_eff); + } + + double get_energy() const override { return this->ml_exx.ml_exx_energy; } + +private: + ML_EXX ml_exx; +}; + + +} +#endif +#endif diff --git a/source/source_estate/module_pot/pot_ml_exx_label.cpp b/source/source_estate/module_pot/pot_ml_exx_label.cpp new file mode 100644 index 0000000000..3908b7c5ef --- /dev/null +++ b/source/source_estate/module_pot/pot_ml_exx_label.cpp @@ -0,0 +1,305 @@ +#ifdef __MLALGO + +#include "pot_ml_exx.h" + +namespace elecstate +{ +/** + * @brief Initialize the data for ML KEDF, and generate the mapping between descriptor and kernel + * + * @param nkernel number of kernels + * @param of_ml_gamma whether to use gamma descriptor + * @param of_ml_p whether to use p descriptor + * @param of_ml_q whether to use q descriptor + * @param of_ml_tanhp whether to use tanhp descriptor + * @param of_ml_tanhq whether to use tanhq descriptor + * @param of_ml_gammanl whether to use gammanl descriptor + * @param of_ml_pnl whether to use pnl descriptor + * @param of_ml_qnl whether to use qnl descriptor + * @param of_ml_xi whether to use xi descriptor + * @param of_ml_tanhxi whether to use tanhxi descriptor + * @param of_ml_tanhxi_nl whether to use tanhxi_nl descriptor + * @param of_ml_tanh_pnl whether to use tanh_pnl descriptor + * @param of_ml_tanh_qnl whether to use tanh_qnl descriptor + * @param of_ml_tanhp_nl whether to use tanhp_nl descriptor + * @param of_ml_tanhq_nl whether to use tanhq_nl descriptor + */ +void ML_EXX::init_data( + const int &nkernel, + const bool &of_ml_gamma, + const bool &of_ml_p, + const bool &of_ml_q, + const bool &of_ml_tanhp, + const bool &of_ml_tanhq, + const std::vector &of_ml_gammanl, + const std::vector &of_ml_pnl, + const std::vector &of_ml_qnl, + const std::vector &of_ml_xi, + const std::vector &of_ml_tanhxi, + const std::vector &of_ml_tanhxi_nl, + const std::vector &of_ml_tanh_pnl, + const std::vector &of_ml_tanh_qnl, + const std::vector &of_ml_tanhp_nl, + const std::vector &of_ml_tanhq_nl +) +{ + + this->ninput = 0; + + // --------- semi-local descriptors --------- + if (of_ml_gamma){ + this->descriptor_type.push_back("gamma"); + this->kernel_index.push_back(-1); + this->ninput++; + } + if (of_ml_p){ + this->descriptor_type.push_back("p"); + this->kernel_index.push_back(-1); + this->ninput++; + } + if (of_ml_q){ + this->descriptor_type.push_back("q"); + this->kernel_index.push_back(-1); + this->ninput++; + } + // --------- non-local descriptors --------- + for (int ik = 0; ik < nkernel; ++ik) + { + if (of_ml_gammanl[ik]){ + this->descriptor_type.push_back("gammanl"); + this->kernel_index.push_back(ik); + this->ninput++; + } + if (of_ml_pnl[ik]){ + this->descriptor_type.push_back("pnl"); + this->kernel_index.push_back(ik); + this->ninput++; + } + if (of_ml_qnl[ik]){ + this->descriptor_type.push_back("qnl"); + this->kernel_index.push_back(ik); + this->ninput++; + } + if (of_ml_xi[ik]){ + this->descriptor_type.push_back("xi"); + this->kernel_index.push_back(ik); + this->ninput++; + } + if (of_ml_tanhxi[ik]){ + this->descriptor_type.push_back("tanhxi"); + this->kernel_index.push_back(ik); + this->ninput++; + } + if (of_ml_tanhxi_nl[ik]){ + this->descriptor_type.push_back("tanhxi_nl"); + this->kernel_index.push_back(ik); + this->ninput++; + } + } + // --------- semi-local descriptors --------- + if (of_ml_tanhp){ + this->descriptor_type.push_back("tanhp"); + this->kernel_index.push_back(-1); + this->ninput++; + } + if (of_ml_tanhq){ + this->descriptor_type.push_back("tanhq"); + this->kernel_index.push_back(-1); + this->ninput++; + } + // --------- non-local descriptors --------- + for (int ik = 0; ik < nkernel; ++ik) + { + if (of_ml_tanh_pnl[ik]){ + this->descriptor_type.push_back("tanh_pnl"); + this->kernel_index.push_back(ik); + this->ninput++; + } + if (of_ml_tanh_qnl[ik]){ + this->descriptor_type.push_back("tanh_qnl"); + this->kernel_index.push_back(ik); + this->ninput++; + } + if (of_ml_tanhp_nl[ik]){ + this->descriptor_type.push_back("tanhp_nl"); + this->kernel_index.push_back(ik); + this->ninput++; + } + if (of_ml_tanhq_nl[ik]){ + this->descriptor_type.push_back("tanhq_nl"); + this->kernel_index.push_back(ik); + this->ninput++; + } + } + + this->descriptor2kernel = {{"gamma", {}}, + {"p", {}}, + {"q", {}}, + {"tanhp", {}}, + {"tanhq", {}}, + {"gammanl", {}}, + {"pnl", {}}, + {"qnl", {}}, + {"xi", {}}, + {"tanhxi", {}}, + {"tanhxi_nl", {}}, + {"tanh_pnl", {}}, + {"tanh_qnl", {}}, + {"tanhp_nl", {}}, + {"tanhq_nl", {}}}; + this->descriptor2index = this->descriptor2kernel; + + for (int i = 0; i < this->ninput; ++i) + { + this->descriptor2kernel[this->descriptor_type[i]].push_back(this->kernel_index[i]); + this->descriptor2index[this->descriptor_type[i]].push_back(i); + } + // std::cout << "descriptor2index " << this->descriptor2index << std::endl; + // std::cout << "descriptor2kernel " << this->descriptor2kernel << std::endl; + + this->ml_gamma = this->descriptor2index["gamma"].size() > 0; + this->ml_p = this->descriptor2index["p"].size() > 0; + this->ml_q = this->descriptor2index["q"].size() > 0; + this->ml_tanhp = this->descriptor2index["tanhp"].size() > 0; + this->ml_tanhq = this->descriptor2index["tanhq"].size() > 0; + this->ml_gammanl = this->descriptor2index["gammanl"].size() > 0; + this->ml_pnl = this->descriptor2index["pnl"].size() > 0; + this->ml_qnl = this->descriptor2index["qnl"].size() > 0; + this->ml_xi = this->descriptor2index["xi"].size() > 0; + this->ml_tanhxi = this->descriptor2index["tanhxi"].size() > 0; + this->ml_tanhxi_nl = this->descriptor2index["tanhxi_nl"].size() > 0; + this->ml_tanh_pnl = this->descriptor2index["tanh_pnl"].size() > 0; + this->ml_tanh_qnl = this->descriptor2index["tanh_qnl"].size() > 0; + this->ml_tanhp_nl = this->descriptor2index["tanhp_nl"].size() > 0; + this->ml_tanhq_nl = this->descriptor2index["tanhq_nl"].size() > 0; + + bool gene_gammanl_tot = false; + bool gene_pnl_tot = false; + bool gene_qnl_tot = false; + bool gene_tanh_pnl_tot = false; + bool gene_tanh_qnl_tot = false; + bool gene_tanhp_nl_tot = false; + bool gene_tanhq_nl_tot = false; + + this->gene_data_label = {{"gamma", {}}, + {"p", {}}, + {"q", {}}, + {"tanhp", {}}, + {"tanhq", {}}, + {"gammanl", {}}, + {"pnl", {}}, + {"qnl", {}}, + {"xi", {}}, + {"tanhxi", {}}, + {"tanhxi_nl", {}}, + {"tanh_pnl", {}}, + {"tanh_qnl", {}}, + {"tanhp_nl", {}}, + {"tanhq_nl", {}}}; + + for (std::string descriptor : {"gamma", "p", "q", "tanhp", "tanhq"}) + { + this->gene_data_label[descriptor].push_back(0); + } + for (std::string descriptor : {"gammanl", "pnl", "qnl", "xi", "tanhxi", "tanhxi_nl", + "tanh_pnl", "tanh_qnl", "tanhp_nl", "tanhq_nl"}) + { + for (int ik = 0; ik < nkernel; ++ik) + { + this->gene_data_label[descriptor].push_back(0); + } + } + + for (int ik = 0; ik < nkernel; ++ik) + { + this->gene_data_label["pnl"][ik] = of_ml_pnl[ik] || of_ml_tanh_pnl[ik]; + this->gene_data_label["qnl"][ik] = of_ml_qnl[ik] || of_ml_tanh_qnl[ik]; + this->gene_data_label["tanhxi_nl"][ik] = of_ml_tanhxi_nl[ik]; + this->gene_data_label["tanhxi"][ik] = of_ml_tanhxi[ik] || of_ml_tanhxi_nl[ik]; + this->gene_data_label["xi"][ik] = of_ml_xi[ik] || this->gene_data_label["tanhxi"][ik]; + this->gene_data_label["gammanl"][ik] = of_ml_gammanl[ik] || this->gene_data_label["xi"][ik]; + this->gene_data_label["tanh_pnl"][ik] = of_ml_tanh_pnl[ik]; + this->gene_data_label["tanh_qnl"][ik] = of_ml_tanh_qnl[ik]; + this->gene_data_label["tanhp_nl"][ik] = of_ml_tanhp_nl[ik]; + this->gene_data_label["tanhq_nl"][ik] = of_ml_tanhq_nl[ik]; + // this->gene_data_label["pnl"][ik] = of_ml_pnl[ik] || of_ml_tanh_pnl[ik]; + + gene_gammanl_tot = gene_gammanl_tot || this->gene_data_label["gammanl"][ik]; + gene_pnl_tot = gene_pnl_tot || this->gene_data_label["pnl"][ik]; + gene_qnl_tot = gene_qnl_tot || this->gene_data_label["qnl"][ik]; + gene_tanh_pnl_tot = gene_tanh_pnl_tot || this->gene_data_label["tanh_pnl"][ik]; + gene_tanh_qnl_tot = gene_tanh_qnl_tot || this->gene_data_label["tanh_qnl"][ik]; + gene_tanhp_nl_tot = gene_tanhp_nl_tot || this->gene_data_label["tanhp_nl"][ik]; + gene_tanhq_nl_tot = gene_tanhq_nl_tot || this->gene_data_label["tanhq_nl"][ik]; + } + this->gene_data_label["gamma"][0] = of_ml_gamma || gene_gammanl_tot; + this->gene_data_label["tanhp"][0] = of_ml_tanhp || gene_tanhp_nl_tot || gene_tanh_pnl_tot; + this->gene_data_label["tanhq"][0] = of_ml_tanhq || gene_tanhq_nl_tot || gene_tanh_qnl_tot; + this->gene_data_label["p"][0] = of_ml_p || this->gene_data_label["tanhp"][0] || gene_pnl_tot; + this->gene_data_label["q"][0] = of_ml_q || this->gene_data_label["tanhq"][0] || gene_qnl_tot; + + + if (this->gene_data_label["gamma"][0]){ + this->gamma = std::vector(this->nx, 0.); + } + if (this->gene_data_label["p"][0]){ + this->nablaRho = std::vector >(3, std::vector(this->nx, 0.)); + this->p = std::vector(this->nx, 0.); + } + if (this->gene_data_label["q"][0]){ + this->q = std::vector(this->nx, 0.); + } + if (this->gene_data_label["tanhp"][0]){ + this->tanhp = std::vector(this->nx, 0.); + } + if (this->gene_data_label["tanhq"][0]){ + this->tanhq = std::vector(this->nx, 0.); + } + + for (int ik = 0; ik < nkernel; ++ik) + { + this->gammanl.push_back({}); + this->pnl.push_back({}); + this->qnl.push_back({}); + this->xi.push_back({}); + this->tanhxi.push_back({}); + this->tanhxi_nl.push_back({}); + this->tanh_pnl.push_back({}); + this->tanh_qnl.push_back({}); + this->tanhp_nl.push_back({}); + this->tanhq_nl.push_back({}); + + if (this->gene_data_label["gammanl"][ik]){ + this->gammanl[ik] = std::vector(this->nx, 0.); + } + if (this->gene_data_label["pnl"][ik]){ + this->pnl[ik] = std::vector(this->nx, 0.); + } + if (this->gene_data_label["qnl"][ik]){ + this->qnl[ik] = std::vector(this->nx, 0.); + } + if (this->gene_data_label["xi"][ik]){ + this->xi[ik] = std::vector(this->nx, 0.); + } + if (this->gene_data_label["tanhxi"][ik]){ + this->tanhxi[ik] = std::vector(this->nx, 0.); + } + if (this->gene_data_label["tanhxi_nl"][ik]){ + this->tanhxi_nl[ik] = std::vector(this->nx, 0.); + } + if (this->gene_data_label["tanh_pnl"][ik]){ + this->tanh_pnl[ik] = std::vector(this->nx, 0.); + } + if (this->gene_data_label["tanh_qnl"][ik]){ + this->tanh_qnl[ik] = std::vector(this->nx, 0.); + } + if (this->gene_data_label["tanhp_nl"][ik]){ + this->tanhp_nl[ik] = std::vector(this->nx, 0.); + } + if (this->gene_data_label["tanhq_nl"][ik]){ + this->tanhq_nl[ik] = std::vector(this->nx, 0.); + } + } +} +} +#endif diff --git a/source/source_estate/module_pot/pot_sep.cpp b/source/source_estate/module_pot/pot_sep.cpp new file mode 100644 index 0000000000..e3c4bb0696 --- /dev/null +++ b/source/source_estate/module_pot/pot_sep.cpp @@ -0,0 +1,28 @@ +#include "pot_sep.h" + +#include "source_base/timer.h" +#include "source_base/tool_title.h" + +namespace elecstate +{ +void PotSep::cal_fixed_v(double* vl_pseudo) +{ + ModuleBase::TITLE("PotSep", "cal_fixed_v"); + ModuleBase::timer::tick("PotSep", "cal_fixed_v"); + + // GlobalC::vsep_cell.generate_vsep_r(this->rho_basis_[0], this->sf_[0]); + + // const_cast(this->vsep_)->generate_vsep_r(this->rho_basis_[0], this->sf_[0]); + + if (vsep_cell != nullptr) + { + for (int ir = 0; ir < this->rho_basis_->nrxx; ++ir) + { + vl_pseudo[ir] += vsep_cell->vsep_r[ir]; + } + } + + ModuleBase::timer::tick("PotSep", "cal_fixed_v"); + return; +} +} // namespace elecstate diff --git a/source/source_estate/module_pot/pot_sep.h b/source/source_estate/module_pot/pot_sep.h new file mode 100644 index 0000000000..cb4368030d --- /dev/null +++ b/source/source_estate/module_pot/pot_sep.h @@ -0,0 +1,47 @@ +#ifndef POTSEP_H +#define POTSEP_H + +#include "pot_base.h" +#include "source_base/matrix.h" +#include "source_pw/module_pwdft/vsep_pw.h" + +namespace elecstate +{ + +class PotSep : public PotBase +{ + public: + // PotSep(const ModuleBase::matrix* vsep_in, + // const ModuleBase::ComplexMatrix* sf_in, + // const ModulePW::PW_Basis* rho_basis_in, + // const bool* sep_enable_in) + // : vsep_(vsep_in), sf_(sf_in), sep_enable_(sep_enable_in) + // { + // assert(this->vsep_->nr == this->sf_->nr); + // this->rho_basis_ = rho_basis_in; + // this->ntype_ = this->vsep_->nr; + // this->fixed_mode = true; + // this->dynamic_mode = false; + // } + PotSep(const ModuleBase::ComplexMatrix* sf_in, const ModulePW::PW_Basis* rho_basis_in, const VSep* vsep_cell_in) + : sf_(sf_in), vsep_cell(vsep_cell_in) + { + assert(vsep_cell->vsep_form.nr == this->sf_->nr); + // assert(this->vsep_->vsep_form.nr == this->sf_->nr); + this->rho_basis_ = rho_basis_in; + // this->ntype_ = this->vsep_->vsep_form.nr; + this->fixed_mode = true; + this->dynamic_mode = false; + } + + void cal_fixed_v(double* vl_pseudo) override; + + const VSep* vsep_cell = nullptr; + const ModuleBase::ComplexMatrix* sf_ = nullptr; + // int ntype_ = 0; + // const bool* sep_enable_; +}; + +} // namespace elecstate + +#endif /* ifndef POTSEP_H */ diff --git a/source/source_estate/module_pot/pot_surchem.hpp b/source/source_estate/module_pot/pot_surchem.hpp index 3ccb4960dc..dc06e60fd4 100644 --- a/source/source_estate/module_pot/pot_surchem.hpp +++ b/source/source_estate/module_pot/pot_surchem.hpp @@ -31,6 +31,7 @@ class PotSurChem : public PotBase } } + // Passing an explicit output matrix makes the lifetime and allocation explicit and avoids hidden allocations. void cal_v_eff(const Charge*const chg, const UnitCell*const ucell, ModuleBase::matrix& v_eff) override { if (!this->allocated) @@ -38,14 +39,16 @@ class PotSurChem : public PotBase this->surchem_->allocate(this->rho_basis_->nrxx, v_eff.nr); this->allocated = true; } - - v_eff += this->surchem_->v_correction(*ucell, - *chg->pgrid, - const_cast(this->rho_basis_), - v_eff.nr, - chg->rho, - this->vlocal, - this->structure_factors_); + ModuleBase::matrix v_sol_correction(v_eff.nr, this->rho_basis_->nrxx); + this->surchem_->v_correction(*ucell, + *chg->pgrid, + const_cast(this->rho_basis_), + v_eff.nr, + chg->rho, + this->vlocal, + this->structure_factors_, + v_sol_correction); + v_eff += v_sol_correction; } private: diff --git a/source/source_estate/module_pot/pot_xc.cpp b/source/source_estate/module_pot/pot_xc.cpp index 09c4719a5c..c6633810d9 100644 --- a/source/source_estate/module_pot/pot_xc.cpp +++ b/source/source_estate/module_pot/pot_xc.cpp @@ -1,7 +1,7 @@ #include "pot_xc.h" #include "source_base/timer.h" -#include "source_pw/module_pwdft/global.h" +#include "source_hamilt/module_xc/xc_functional.h" #ifdef USE_LIBXC #include "source_hamilt/module_xc/xc_functional_libxc.h" diff --git a/source/source_estate/module_pot/pot_xc_fdm.cpp b/source/source_estate/module_pot/pot_xc_fdm.cpp new file mode 100644 index 0000000000..5b0b0768c8 --- /dev/null +++ b/source/source_estate/module_pot/pot_xc_fdm.cpp @@ -0,0 +1,59 @@ +//======================= +// AUTHOR : Peize Lin +// DATE : 2025-10-01 +//======================= + +#include "pot_xc_fdm.h" +#include "source_hamilt/module_xc/xc_functional.h" + +namespace elecstate +{ + +PotXC_FDM::PotXC_FDM( + const ModulePW::PW_Basis* rho_basis_in, + const Charge*const chg_0_in, + const UnitCell*const ucell) + : chg_0(chg_0_in) +{ + this->rho_basis_ = rho_basis_in; + this->dynamic_mode = true; + this->fixed_mode = false; + + const std::tuple etxc_vtxc_v_0 + = XC_Functional::v_xc(this->chg_0->nrxx, this->chg_0, ucell); + this->v_xc_0 = std::get<2>(etxc_vtxc_v_0); +} + +void PotXC_FDM::cal_v_eff( + const Charge*const chg_1, + const UnitCell*const ucell, + ModuleBase::matrix& v_eff) +{ + ModuleBase::TITLE("PotXC_FDM", "cal_veff"); + ModuleBase::timer::tick("PotXC_FDM", "cal_veff"); + + assert(this->chg_0->nrxx == chg_1->nrxx); + assert(this->chg_0->nspin == chg_1->nspin); + + Charge chg_01; + chg_01.set_rhopw(chg_1->rhopw); + chg_01.allocate(chg_1->nspin, chg_01.kin_density()); + + for(int ir=0; irrho[is][ir] + chg_1->rho[is][ir]; } + chg_01.rho_core[ir] = chg_0->rho_core[ir] + chg_1->rho_core[ir]; + } + + const std::tuple etxc_vtxc_v_01 + = XC_Functional::v_xc(chg_01.nrxx, &chg_01, ucell); + const ModuleBase::matrix &v_xc_01 = std::get<2>(etxc_vtxc_v_01); + + v_eff += v_xc_01 - this->v_xc_0; + + ModuleBase::timer::tick("PotXC_FDM", "cal_veff"); +} + +} // namespace elecstate + diff --git a/source/source_estate/module_pot/pot_xc_fdm.h b/source/source_estate/module_pot/pot_xc_fdm.h new file mode 100644 index 0000000000..eb1cd88057 --- /dev/null +++ b/source/source_estate/module_pot/pot_xc_fdm.h @@ -0,0 +1,34 @@ +//======================= +// AUTHOR : Peize Lin +// DATE : 2025-10-01 +//======================= + +#ifndef POTXC_FDM_H +#define POTXC_FDM_H + +#include "pot_base.h" + +namespace elecstate +{ + +class PotXC_FDM : public PotBase +{ +public: + + PotXC_FDM( + const ModulePW::PW_Basis* rho_basis_in, + const Charge*const chg_0_in, + const UnitCell*const ucell); + + void cal_v_eff( + const Charge*const chg_1, + const UnitCell*const ucell, + ModuleBase::matrix& v_eff) override; + + const Charge*const chg_0 = nullptr; + ModuleBase::matrix v_xc_0; +}; + +} // namespace elecstate + +#endif \ No newline at end of file diff --git a/source/source_estate/module_pot/potential_new.cpp b/source/source_estate/module_pot/potential_new.cpp index 3b34e0d026..dceab85c0b 100644 --- a/source/source_estate/module_pot/potential_new.cpp +++ b/source/source_estate/module_pot/potential_new.cpp @@ -8,6 +8,7 @@ #include "source_base/tool_title.h" #include "source_hamilt/module_xc/xc_functional.h" #include "source_io/module_parameter/parameter.h" +#include "pot_ml_exx.h" #include @@ -21,8 +22,10 @@ Potential::Potential(const ModulePW::PW_Basis* rho_basis_in, Structure_Factor* structure_factors_in, surchem* solvent_in, double* etxc_in, - double* vtxc_in) - : ucell_(ucell_in), vloc_(vloc_in), structure_factors_(structure_factors_in), solvent_(solvent_in), etxc_(etxc_in), + double* vtxc_in, + VSep* vsep_cell_in) + : ucell_(ucell_in), vloc_(vloc_in), structure_factors_(structure_factors_in), + solvent_(solvent_in), vsep_cell(vsep_cell_in), etxc_(etxc_in), vtxc_(vtxc_in) { this->rho_basis_ = rho_basis_in; @@ -80,7 +83,6 @@ void Potential::pot_register(const std::vector& components_list) { PotBase* tmp = this->get_pot_type(comp); this->components.push_back(tmp); - // GlobalV::ofs_running << "Successful completion of Potential's registration : " << comp << std::endl; } // after register, reset fixed_done to false @@ -92,53 +94,58 @@ void Potential::pot_register(const std::vector& components_list) void Potential::allocate() { ModuleBase::TITLE("Potential", "allocate"); - int nrxx = this->rho_basis_->nrxx; - int nrxx_smooth = this->rho_basis_smooth_->nrxx; - if (nrxx == 0) + + const int nspin = PARAM.inp.nspin; + assert(nspin==1 || nspin==2 || nspin==4); + + const int nrxx = this->rho_basis_->nrxx; + const int nrxx_smooth = this->rho_basis_smooth_->nrxx; + + if (nrxx == 0) { return; } - if (nrxx_smooth == 0) + if (nrxx_smooth == 0) { return; } - this->v_effective_fixed.resize(nrxx); + this->v_eff_fixed.resize(nrxx); ModuleBase::Memory::record("Pot::veff_fix", sizeof(double) * nrxx); - this->v_effective.create(PARAM.inp.nspin, nrxx); - ModuleBase::Memory::record("Pot::veff", sizeof(double) * PARAM.inp.nspin * nrxx); + this->v_eff.create(nspin, nrxx); + ModuleBase::Memory::record("Pot::veff", sizeof(double) * nspin * nrxx); - this->veff_smooth.create(PARAM.inp.nspin, nrxx_smooth); - ModuleBase::Memory::record("Pot::veff_smooth", sizeof(double) * PARAM.inp.nspin * nrxx_smooth); + this->veff_smooth.create(nspin, nrxx_smooth); + ModuleBase::Memory::record("Pot::veff_smooth", sizeof(double) * nspin * nrxx_smooth); if (XC_Functional::get_ked_flag()) { - this->vofk_effective.create(PARAM.inp.nspin, nrxx); - ModuleBase::Memory::record("Pot::vofk", sizeof(double) * PARAM.inp.nspin * nrxx); + this->vofk_eff.create(nspin, nrxx); + ModuleBase::Memory::record("Pot::vofk", sizeof(double) * nspin * nrxx); - this->vofk_smooth.create(PARAM.inp.nspin, nrxx_smooth); - ModuleBase::Memory::record("Pot::vofk_smooth", sizeof(double) * PARAM.inp.nspin * nrxx_smooth); + this->vofk_smooth.create(nspin, nrxx_smooth); + ModuleBase::Memory::record("Pot::vofk_smooth", sizeof(double) * nspin * nrxx_smooth); } if (use_gpu_) { if (PARAM.globalv.has_float_data) { - resmem_sd_op()(s_veff_smooth, PARAM.inp.nspin * nrxx_smooth); - resmem_sd_op()(s_vofk_smooth, PARAM.inp.nspin * nrxx_smooth); + resmem_sd_op()(s_veff_smooth, nspin * nrxx_smooth); + resmem_sd_op()(s_vofk_smooth, nspin * nrxx_smooth); } if (PARAM.globalv.has_double_data) { - resmem_dd_op()(d_veff_smooth, PARAM.inp.nspin * nrxx_smooth); - resmem_dd_op()(d_vofk_smooth, PARAM.inp.nspin * nrxx_smooth); + resmem_dd_op()(d_veff_smooth, nspin * nrxx_smooth); + resmem_dd_op()(d_vofk_smooth, nspin * nrxx_smooth); } } else { if (PARAM.globalv.has_float_data) { - resmem_sh_op()(s_veff_smooth, PARAM.inp.nspin * nrxx_smooth, "POT::sveff_smooth"); - resmem_sh_op()(s_vofk_smooth, PARAM.inp.nspin * nrxx_smooth, "POT::svofk_smooth"); + resmem_sh_op()(s_veff_smooth, nspin * nrxx_smooth, "POT::sveff_smooth"); + resmem_sh_op()(s_vofk_smooth, nspin * nrxx_smooth, "POT::svofk_smooth"); } if (PARAM.globalv.has_double_data) { @@ -156,11 +163,11 @@ void Potential::update_from_charge(const Charge*const chg, const UnitCell*const if (!this->fixed_done) { - this->cal_fixed_v(this->v_effective_fixed.data()); + this->cal_fixed_v(this->v_eff_fixed.data()); this->fixed_done = true; } - this->cal_v_eff(chg, ucell, this->v_effective); + this->cal_v_eff(chg, ucell, this->v_eff); // interpolate potential on the smooth mesh if necessary this->interpolate_vrs(); @@ -196,7 +203,7 @@ void Potential::cal_fixed_v(double* vl_pseudo) ModuleBase::TITLE("Potential", "cal_fixed_v"); ModuleBase::timer::tick("Potential", "cal_fixed_v"); - this->v_effective_fixed.assign(this->v_effective_fixed.size(), 0.0); + this->v_eff_fixed.assign(this->v_eff_fixed.size(), 0.0); for (size_t i = 0; i < this->components.size(); i++) { if (this->components[i]->fixed_mode) @@ -213,10 +220,10 @@ void Potential::cal_v_eff(const Charge*const chg, const UnitCell*const ucell, Mo ModuleBase::TITLE("Potential", "cal_veff"); ModuleBase::timer::tick("Potential", "cal_veff"); - const int nspin_current = this->v_effective.nr; - const int nrxx = this->v_effective.nc; - // first of all, set v_effective to zero. - this->v_effective.zero_out(); + const int nspin_current = this->v_eff.nr; + const int nrxx = this->v_eff.nc; + // first of all, set v_eff to zero. + this->v_eff.zero_out(); // add fixed potential components // nspin = 2, add fixed components for all @@ -225,11 +232,11 @@ void Potential::cal_v_eff(const Charge*const chg, const UnitCell*const ucell, Mo { if (i == 0 || nspin_current == 2) { - ModuleBase::GlobalFunc::COPYARRAY(this->v_effective_fixed.data(), this->get_effective_v(i), nrxx); + ModuleBase::GlobalFunc::COPYARRAY(this->v_eff_fixed.data(), this->get_eff_v(i), nrxx); } } - // cal effective by every components + // cal eff by every components for (size_t i = 0; i < this->components.size(); i++) { if (this->components[i]->dynamic_mode) @@ -241,12 +248,11 @@ void Potential::cal_v_eff(const Charge*const chg, const UnitCell*const ucell, Mo ModuleBase::timer::tick("Potential", "cal_veff"); } -void Potential::init_pot(int istep, const Charge*const chg) +void Potential::init_pot(const Charge*const chg) { ModuleBase::TITLE("Potential", "init_pot"); ModuleBase::timer::tick("Potential", "init_pot"); - assert(istep >= 0); // fixed components only calculated in the beginning of SCF this->fixed_done = false; @@ -259,52 +265,55 @@ void Potential::init_pot(int istep, const Charge*const chg) void Potential::get_vnew(const Charge* chg, ModuleBase::matrix& vnew) { ModuleBase::TITLE("Potential", "get_vnew"); - vnew.create(this->v_effective.nr, this->v_effective.nc); - vnew = this->v_effective; + vnew.create(this->v_eff.nr, this->v_eff.nc); + vnew = this->v_eff; this->update_from_charge(chg, this->ucell_); //(used later for scf correction to the forces ) for (int iter = 0; iter < vnew.nr * vnew.nc; ++iter) { - vnew.c[iter] = this->v_effective.c[iter] - vnew.c[iter]; + vnew.c[iter] = this->v_eff.c[iter] - vnew.c[iter]; } return; } -void Potential::interpolate_vrs() +void Potential::interpolate_vrs(void) { ModuleBase::TITLE("Potential", "interpolate_vrs"); ModuleBase::timer::tick("Potential", "interpolate_vrs"); - if ( PARAM.globalv.double_grid) + const int nspin = PARAM.inp.nspin; + assert(nspin==1 || nspin==2 || nspin==4); + + if (PARAM.globalv.double_grid) { if (rho_basis_->gamma_only != rho_basis_smooth_->gamma_only) { ModuleBase::WARNING_QUIT("Potential::interpolate_vrs", "gamma_only is not consistent"); } - ModuleBase::ComplexMatrix vrs(PARAM.inp.nspin, rho_basis_->npw); - for (int is = 0; is < PARAM.inp.nspin; is++) + ModuleBase::ComplexMatrix vrs(nspin, rho_basis_->npw); + for (int is = 0; is < nspin; is++) { - rho_basis_->real2recip(&v_effective(is, 0), &vrs(is, 0)); + rho_basis_->real2recip(&v_eff(is, 0), &vrs(is, 0)); rho_basis_smooth_->recip2real(&vrs(is, 0), &veff_smooth(is, 0)); } if (XC_Functional::get_ked_flag()) { - ModuleBase::ComplexMatrix vrs_ofk(PARAM.inp.nspin, rho_basis_->npw); - for (int is = 0; is < PARAM.inp.nspin; is++) + ModuleBase::ComplexMatrix vrs_ofk(nspin, rho_basis_->npw); + for (int is = 0; is < nspin; is++) { - rho_basis_->real2recip(&vofk_effective(is, 0), &vrs_ofk(is, 0)); + rho_basis_->real2recip(&vofk_eff(is, 0), &vrs_ofk(is, 0)); rho_basis_smooth_->recip2real(&vrs_ofk(is, 0), &vofk_smooth(is, 0)); } } } else { - this->veff_smooth = this->v_effective; - this->vofk_smooth = this->vofk_effective; + this->veff_smooth = this->v_eff; + this->vofk_smooth = this->vofk_eff; } ModuleBase::timer::tick("Potential", "interpolate_vrs"); @@ -334,4 +343,21 @@ double* Potential::get_vofk_smooth_data() return this->vofk_smooth.nc > 0 ? this->d_vofk_smooth : nullptr; } +double Potential::get_ml_exx_energy() const +{ +#ifdef __MLALGO + for (size_t i = 0; i < this->components.size(); i++) + { + PotML_EXX* pot_ml_exx = dynamic_cast(this->components[i]); + if (pot_ml_exx != nullptr) + { + return pot_ml_exx->get_energy(); + } + } + return 0.0; +#else + return 0.0; +#endif +} + } // namespace elecstate diff --git a/source/source_estate/module_pot/potential_new.h b/source/source_estate/module_pot/potential_new.h index ec72daaae5..5b888e7d8b 100644 --- a/source/source_estate/module_pot/potential_new.h +++ b/source/source_estate/module_pot/potential_new.h @@ -3,7 +3,8 @@ #include "source_base/complexmatrix.h" #include "source_hamilt/module_surchem/surchem.h" -#include "source_pw/module_pwdft/VNL_in_pw.h" +#include "source_pw/module_pwdft/vnl_pw.h" +#include "source_pw/module_pwdft/vsep_pw.h" #include "source_pw/module_pwdft/structure_factor.h" #include "pot_base.h" @@ -17,7 +18,7 @@ namespace elecstate * 2. Func init_pot() * a. need istep for update_for_tddft(); * b. need Charge for update_from_charge(); - * c. it will reset fixed_done to false, v_effective_fixed will be calculated; + * c. it will reset fixed_done to false, v_eff_fixed will be calculated; * d. it should be called after Charge is initialized; * e. it can only be called once in one SCF loop * 3. Func pot_register() and components @@ -29,8 +30,8 @@ namespace elecstate * f. "efield", PotEfield introduces electronic field including dipole correction part of potentials; * g. "gatefield", PotGate introduces gate field part of potentials; * 4. Func update_from_charge() - * a. regenerate v_effective - * b. if Meta-GGA is choosed, it will regenerate vofk_effective + * a. regenerate v_eff + * b. if Meta-GGA is choosed, it will regenerate vofk_eff * 5. Func update_for_tddft() * a. in principle, it should be added to components, but it related to real time(istep) * b. it should be called after update_from_charge() as a compensation; @@ -40,9 +41,9 @@ namespace elecstate * 2. use the final delta_V_eff for calculating force correction * 7. Func write_potential() * 8. Func write_elecstat_pot() - * 9. interfaces for v_effective_fixed/v_effective/vofk_effective + * 9. interfaces for v_eff_fixed/v_eff/vofk_eff * 10. Func interpolate_vrs() - * a. interpolate v_effective on the smooth mesh + * a. interpolate v_eff on the smooth mesh */ class Potential : public PotBase { @@ -52,7 +53,7 @@ class Potential : public PotBase // In constructor, size of every potential components should be allocated // rho_basis_in is the dense grids, rho_basis_smooth_in is the smooth grids in USPP // charge density and potential are defined on dense grids, - // but effective potential needs to be interpolated on smooth grids in order to compute Veff|psi> + // but eff potential needs to be interpolated on smooth grids in order to compute Veff|psi> // Note: rho_basis_in and rho_basis_smooth_in are the same in NCPP Potential(const ModulePW::PW_Basis* rho_basis_in, const ModulePW::PW_Basis* rho_basis_smooth_in, @@ -61,11 +62,12 @@ class Potential : public PotBase Structure_Factor* structure_factors_in, surchem* solvent_in, double* etxc_in, - double* vtxc_in); + double* vtxc_in, + VSep* vsep_cell_in = nullptr); ~Potential(); // initialize potential when SCF begin - void init_pot(int istep, const Charge*const chg); + void init_pot(const Charge*const chg); // initialize potential components before SCF void pot_register(const std::vector& components_list); // update potential from current charge @@ -76,61 +78,61 @@ class Potential : public PotBase PotBase* get_pot_type(const std::string& pot_type); // interfaces to get values - ModuleBase::matrix& get_effective_v() + ModuleBase::matrix& get_eff_v() { - return this->v_effective; + return this->v_eff; } - const ModuleBase::matrix& get_effective_v() const + const ModuleBase::matrix& get_eff_v() const { - return this->v_effective; + return this->v_eff; } - double* get_effective_v(int is) + double* get_eff_v(int is) { - if (this->v_effective.nc > 0) + if (this->v_eff.nc > 0) { - return &(this->v_effective(is, 0)); + return &(this->v_eff(is, 0)); } else { return nullptr; } } - const double* get_effective_v(int is) const + const double* get_eff_v(int is) const { - if (this->v_effective.nc > 0) + if (this->v_eff.nc > 0) { - return &(this->v_effective(is, 0)); + return &(this->v_eff(is, 0)); } else { return nullptr; } } - ModuleBase::matrix& get_effective_vofk() + ModuleBase::matrix& get_eff_vofk() { - return this->vofk_effective; + return this->vofk_eff; } - const ModuleBase::matrix& get_effective_vofk() const + const ModuleBase::matrix& get_eff_vofk() const { - return this->vofk_effective; + return this->vofk_eff; } - double* get_effective_vofk(int is) + double* get_eff_vofk(int is) { - if (this->vofk_effective.nc > 0) + if (this->vofk_eff.nc > 0) { - return &(this->vofk_effective(is, 0)); + return &(this->vofk_eff(is, 0)); } else { return nullptr; } } - const double* get_effective_vofk(int is) const + const double* get_eff_vofk(int is) const { - if (this->vofk_effective.nc > 0) + if (this->vofk_eff.nc > 0) { - return &(this->vofk_effective(is, 0)); + return &(this->vofk_eff(is, 0)); } else { @@ -164,17 +166,17 @@ class Potential : public PotBase double* get_fixed_v() { - return this->v_effective_fixed.data(); + return this->v_eff_fixed.data(); } const double* get_fixed_v() const { - return this->v_effective_fixed.data(); + return this->v_eff_fixed.data(); } const ModulePW::PW_Basis *get_rho_basis() const { return this->rho_basis_; } - // What about adding a function to get the wfc? + // What about adding a function to get the wfc? // This is useful for the calculation of the exx energy @@ -185,6 +187,10 @@ class Potential : public PotBase return this->vl_of_0; } + /// @brief get the ML-EXX energy, avoiding static variable + /// @return E_ML-EXX + double get_ml_exx_energy() const; + private: void cal_v_eff(const Charge*const chg, const UnitCell*const ucell, ModuleBase::matrix& v_eff) override; void cal_fixed_v(double* vl_pseudo) override; @@ -193,18 +199,20 @@ class Potential : public PotBase void allocate(); - std::vector v_effective_fixed; - ModuleBase::matrix v_effective; + std::vector v_eff_fixed; + ModuleBase::matrix v_eff; ModuleBase::matrix veff_smooth; // used in uspp liuyu 2023-10-12 ModuleBase::matrix vofk_smooth; // used in uspp liuyu 2023-10-12 ModuleBase::matrix v_xc; // if PAW is used, vxc must be stored separately - float *s_veff_smooth = nullptr, *s_vofk_smooth = nullptr; - double *d_veff_smooth = nullptr, *d_vofk_smooth = nullptr; + float *s_veff_smooth = nullptr; + float *s_vofk_smooth = nullptr; + double *d_veff_smooth = nullptr; + double *d_vofk_smooth = nullptr; - ModuleBase::matrix vofk_effective; + ModuleBase::matrix vofk_eff; bool fixed_done = false; @@ -220,9 +228,10 @@ class Potential : public PotBase const ModuleBase::matrix* vloc_ = nullptr; Structure_Factor* structure_factors_ = nullptr; surchem* solvent_ = nullptr; + VSep* vsep_cell = nullptr; bool use_gpu_ = false; }; } // namespace elecstate -#endif \ No newline at end of file +#endif diff --git a/source/source_estate/module_pot/potential_types.cpp b/source/source_estate/module_pot/potential_types.cpp index 9153dd4203..f8f1315d8e 100644 --- a/source/source_estate/module_pot/potential_types.cpp +++ b/source/source_estate/module_pot/potential_types.cpp @@ -12,10 +12,13 @@ #include "pot_surchem.hpp" #include "pot_xc.h" #include "potential_new.h" -#include "pot_local_paw.h" +#include "pot_sep.h" #ifdef __LCAO #include "H_TDDFT_pw.h" #endif +#ifdef __MLALGO +#include "pot_ml_exx.h" +#endif namespace elecstate { @@ -33,13 +36,13 @@ PotBase* Potential::get_pot_type(const std::string& pot_type) } else if (pot_type == "xc") { - return new PotXC(this->rho_basis_, this->etxc_, this->vtxc_, &(this->vofk_effective)); + return new PotXC(this->rho_basis_, this->etxc_, this->vtxc_, &(this->vofk_eff)); } else if (pot_type == "surchem") { return new PotSurChem(this->rho_basis_, this->structure_factors_, - this->v_effective_fixed.data(), + this->v_eff_fixed.data(), this->solvent_); } else if (pot_type == "efield") @@ -56,6 +59,15 @@ PotBase* Potential::get_pot_type(const std::string& pot_type) return new H_TDDFT_pw(this->rho_basis_, this->ucell_); } #endif +#ifdef __MLALGO + else if (pot_type == "ml_exx") + { + return new PotML_EXX(this->rho_basis_, this->ucell_); + } +#endif + else if (pot_type == "dfthalf") { + return new PotSep(&(this->structure_factors_->strucFac), this->rho_basis_, this->vsep_cell); + } else { ModuleBase::WARNING_QUIT("Potential::get_pot_type", "Please input correct component of potential!"); @@ -63,4 +75,4 @@ PotBase* Potential::get_pot_type(const std::string& pot_type) } } -} // namespace elecstate \ No newline at end of file +} // namespace elecstate diff --git a/source/source_estate/occupy.cpp b/source/source_estate/occupy.cpp index d9d8bebf9b..fa50d1520d 100644 --- a/source/source_estate/occupy.cpp +++ b/source/source_estate/occupy.cpp @@ -179,10 +179,9 @@ void Occupy::iweights( } } } -#ifdef __MPI - Parallel_Reduce::gather_max_double_all(GlobalV::NPROC, ef); -#endif - + #ifdef __MPI + Parallel_Reduce::reduce_max(ef); + #endif return; } @@ -306,48 +305,50 @@ void Occupy::efermig(const ModuleBase::matrix& ekb, eup += 2 * smearing_sigma; elw -= 2 * smearing_sigma; - -#ifdef __MPI // find min and max across pools - Parallel_Reduce::gather_max_double_all(GlobalV::NPROC, eup); - Parallel_Reduce::gather_min_double_all(GlobalV::NPROC, elw); - -#endif + #ifdef __MPI + Parallel_Reduce::reduce_max(eup); + Parallel_Reduce::reduce_min(elw); + #endif //================= // Bisection method //================= // call sumkg int changetime = 0; -sumkg: - - const double sumkup = Occupy::sumkg(ekb, nband, nks, wk, smearing_sigma, ngauss, eup, is, isk); - const double sumklw = Occupy::sumkg(ekb, nband, nks, wk, smearing_sigma, ngauss, elw, is, isk); - - if (changetime > 1000) + while (true) { - std::cout << " SOMETHING WRONG: " << std::endl; - std::cout << " is = " << is << std::endl; - std::cout << " eup = " << eup << std::endl; - std::cout << " elw = " << elw << std::endl; - std::cout << " nband = " << nband << std::endl; - std::cout << " nelec = " << nelec << std::endl; - std::cout << " sumkup = " << sumkup << std::endl; - std::cout << " sumklw = " << sumklw << std::endl; - std::cout << " sumkup - nelec = " << sumkup - nelec << std::endl; - std::cout << " sumklw - nelec = " << sumklw - nelec << std::endl; - ModuleBase::WARNING_QUIT("Occupy::efermig", "ERROS in SMEARING"); - } - else if ((sumkup - nelec) < -eps) - { - eup += 2 * smearing_sigma; - ++changetime; - goto sumkg; - } - else if ((sumklw - nelec) > eps) - { - elw -= 2 * smearing_sigma; - ++changetime; - goto sumkg; + const double sumkup = Occupy::sumkg(ekb, nband, nks, wk, smearing_sigma, ngauss, eup, is, isk); + const double sumklw = Occupy::sumkg(ekb, nband, nks, wk, smearing_sigma, ngauss, elw, is, isk); + + if (changetime > 1000) + { + std::cout << " SOMETHING WRONG: " << std::endl; + std::cout << " is = " << is << std::endl; + std::cout << " eup = " << eup << std::endl; + std::cout << " elw = " << elw << std::endl; + std::cout << " nband = " << nband << std::endl; + std::cout << " nelec = " << nelec << std::endl; + std::cout << " sumkup = " << sumkup << std::endl; + std::cout << " sumklw = " << sumklw << std::endl; + std::cout << " sumkup - nelec = " << sumkup - nelec << std::endl; + std::cout << " sumklw - nelec = " << sumklw - nelec << std::endl; + ModuleBase::WARNING_QUIT("Occupy::efermig", "ERROS in SMEARING"); + // no need to break; quit directly + } + else if ((sumkup - nelec) < -eps) + { + eup += 2 * smearing_sigma; + ++changetime; + } + else if ((sumklw - nelec) > eps) + { + elw -= 2 * smearing_sigma; + ++changetime; + } + else + { + break; + } } for (int i = 0; i < maxiter; i++) diff --git a/source/source_estate/read_orb.cpp b/source/source_estate/read_orb.cpp index a40d66640a..ce6f1cfcbf 100644 --- a/source/source_estate/read_orb.cpp +++ b/source/source_estate/read_orb.cpp @@ -2,7 +2,7 @@ #include "source_base/formatter.h" namespace elecstate { - void read_orb_file(int it, std::string &orb_file, std::ofstream &ofs_running, Atom* atom) + bool read_orb_file(int it, std::string &orb_file, std::ofstream &ofs_running, Atom* atom) { // the maximum L is 9 like cc-pV9Z, according to the // basissetexchange https://www.basissetexchange.org/ @@ -14,8 +14,9 @@ namespace elecstate { { std::cout << " Element index " << it+1 << std::endl; std::cout << " orbital file: " << orb_file << std::endl; - ModuleBase::WARNING_QUIT("UnitCell::read_orb_file", - "ABACUS Cannot find the ORBITAL file (basis sets)"); + ModuleBase::WARNING("elecstate::read_orb_file", + "cannot open the ORBITAL file (NAO basis sets)"); + return false; } std::string word; atom->nw = 0; @@ -54,17 +55,20 @@ namespace elecstate { } if (!valid) { - ModuleBase::WARNING_QUIT("UnitCell::read_orb_file", - "ABACUS does not support numerical atomic orbital with L > 9, " + ModuleBase::WARNING("elecstate::read_orb_file", + "ABACUS does not support NAO with L > 9, " "or an invalid orbital label is found in the ORBITAL file."); + return false; } } } ifs.close(); if(!atom->nw) { - ModuleBase::WARNING_QUIT("UnitCell::read_orb_file","get nw = 0"); + ModuleBase::WARNING("elecstate::read_orb_file","get nw = 0, check the ORBITAL file"); + return false; } + return true; } -} \ No newline at end of file +} diff --git a/source/source_estate/read_orb.h b/source/source_estate/read_orb.h index 4f3822b4b9..8d42b789e7 100644 --- a/source/source_estate/read_orb.h +++ b/source/source_estate/read_orb.h @@ -13,11 +13,11 @@ namespace elecstate * @param ofs_running ofstream * @param atom Atom instance stored in UnitCell */ - void read_orb_file(int it, + bool read_orb_file(int it, std::string& orb_file, std::ofstream& ofs_running, Atom* atom); } -#endif \ No newline at end of file +#endif diff --git a/source/source_estate/setup_estate_pw.cpp b/source/source_estate/setup_estate_pw.cpp new file mode 100644 index 0000000000..3ca02d79e6 --- /dev/null +++ b/source/source_estate/setup_estate_pw.cpp @@ -0,0 +1,215 @@ +#include "source_estate/setup_estate_pw.h" +#include "source_estate/elecstate_pw.h" +#include "source_estate/elecstate_pw_sdft.h" +#include "source_estate/elecstate_tools.h" + +namespace elecstate +{ + +void setup_estate_pw( + UnitCell& ucell, + K_Vectors& kv, + Structure_Factor& sf, + elecstate::ElecState*& pelec, + Charge& chr, + pseudopot_cell_vl& locpp, + pseudopot_cell_vnl& ppcell, + VSep*& vsep_cell, + ModulePW::PW_Basis_K* pw_wfc, + ModulePW::PW_Basis* pw_rho, + ModulePW::PW_Basis* pw_rhod, + ModulePW::PW_Basis_Big* pw_big, + surchem& solvent, + const Input_para& inp) +{ + ModuleBase::TITLE("elecstate", "setup_estate_pw"); + + const bool is_gpu = (inp.device == "gpu"); + const bool is_single = (inp.precision == "single"); + +#if ((defined __CUDA) || (defined __ROCM)) + if (is_gpu) + { + if (is_single) + { + setup_estate_pw_impl, base_device::DEVICE_GPU>( + ucell, kv, sf, pelec, chr, locpp, ppcell, vsep_cell, + pw_wfc, pw_rho, pw_rhod, pw_big, solvent, inp); + } + else + { + setup_estate_pw_impl, base_device::DEVICE_GPU>( + ucell, kv, sf, pelec, chr, locpp, ppcell, vsep_cell, + pw_wfc, pw_rho, pw_rhod, pw_big, solvent, inp); + } + } + else +#endif + { + if (is_single) + { + setup_estate_pw_impl, base_device::DEVICE_CPU>( + ucell, kv, sf, pelec, chr, locpp, ppcell, vsep_cell, + pw_wfc, pw_rho, pw_rhod, pw_big, solvent, inp); + } + else + { + setup_estate_pw_impl, base_device::DEVICE_CPU>( + ucell, kv, sf, pelec, chr, locpp, ppcell, vsep_cell, + pw_wfc, pw_rho, pw_rhod, pw_big, solvent, inp); + } + } +} + +template +void setup_estate_pw_impl( + UnitCell& ucell, + K_Vectors& kv, + Structure_Factor& sf, + elecstate::ElecState*& pelec, + Charge& chr, + pseudopot_cell_vl& locpp, + pseudopot_cell_vnl& ppcell, + VSep*& vsep_cell, + ModulePW::PW_Basis_K* pw_wfc, + ModulePW::PW_Basis* pw_rho, + ModulePW::PW_Basis* pw_rhod, + ModulePW::PW_Basis_Big* pw_big, + surchem& solvent, + const Input_para& inp) +{ + if (pelec == nullptr) + { + if (inp.esolver_type == "sdft") + { + pelec = new elecstate::ElecStatePW_SDFT, Device>(pw_wfc, + &chr, &kv, &ucell, &ppcell, pw_rho, pw_big); + } + else + { + pelec = new elecstate::ElecStatePW(pw_wfc, + &chr, &kv, &ucell, &ppcell, pw_rho, pw_big); + } + } + + if (PARAM.inp.dfthalf_type > 0) + { + vsep_cell = new VSep; + vsep_cell->init_vsep(*pw_rhod, ucell.sep_cell); + } + + if (pelec->pot == nullptr) + { + pelec->pot = new elecstate::Potential(pw_rhod, + pw_rho, &ucell, &locpp.vloc, &sf, + &solvent, &(pelec->f_en.etxc), &(pelec->f_en.vtxc), vsep_cell); + } + + locpp.init_vloc(ucell, pw_rhod); + ModuleBase::GlobalFunc::DONE(GlobalV::ofs_running, "LOCAL POTENTIAL"); + + ppcell.init(ucell, &sf, pw_wfc); + ppcell.init_vnl(ucell, pw_rhod); + ModuleBase::GlobalFunc::DONE(GlobalV::ofs_running, "NON-LOCAL POTENTIAL"); + + if (inp.ocp) + { + elecstate::fixed_weights(inp.ocp_kb, + inp.nbands, + inp.nelec, + pelec->klist, + pelec->wg, + pelec->skip_weights); + } +} + +void teardown_estate_pw(elecstate::ElecState*& pelec, VSep*& vsep_cell) +{ + ModuleBase::TITLE("elecstate", "teardown_estate_pw"); + + if (vsep_cell != nullptr) + { + delete vsep_cell; + } + + if (pelec != nullptr) + { + delete pelec; + pelec = nullptr; + } +} + +template +void teardown_estate_pw_impl(elecstate::ElecState*& pelec, VSep*& vsep_cell) +{ + ModuleBase::TITLE("elecstate", "teardown_estate_pw_impl"); + + if (vsep_cell != nullptr) + { + delete vsep_cell; + } + + if (pelec != nullptr) + { + auto* pw_elec = dynamic_cast*>(pelec); + if (pw_elec) + { + delete pw_elec; + pelec = nullptr; + } + else + { + ModuleBase::WARNING_QUIT("elecstate::teardown_estate_pw_impl", "Invalid ElecState type"); + } + } +} + +template void setup_estate_pw_impl, base_device::DEVICE_CPU>( + UnitCell& ucell, K_Vectors& kv, Structure_Factor& sf, + elecstate::ElecState*& pelec, Charge& chr, + pseudopot_cell_vl& locpp, pseudopot_cell_vnl& ppcell, VSep*& vsep_cell, + ModulePW::PW_Basis_K* pw_wfc, ModulePW::PW_Basis* pw_rho, + ModulePW::PW_Basis* pw_rhod, ModulePW::PW_Basis_Big* pw_big, + surchem& solvent, const Input_para& inp); + +template void setup_estate_pw_impl, base_device::DEVICE_CPU>( + UnitCell& ucell, K_Vectors& kv, Structure_Factor& sf, + elecstate::ElecState*& pelec, Charge& chr, + pseudopot_cell_vl& locpp, pseudopot_cell_vnl& ppcell, VSep*& vsep_cell, + ModulePW::PW_Basis_K* pw_wfc, ModulePW::PW_Basis* pw_rho, + ModulePW::PW_Basis* pw_rhod, ModulePW::PW_Basis_Big* pw_big, + surchem& solvent, const Input_para& inp); + +template void teardown_estate_pw_impl, base_device::DEVICE_CPU>( + elecstate::ElecState*& pelec, VSep*& vsep_cell); + +template void teardown_estate_pw_impl, base_device::DEVICE_CPU>( + elecstate::ElecState*& pelec, VSep*& vsep_cell); + +#if ((defined __CUDA) || (defined __ROCM)) + +template void setup_estate_pw_impl, base_device::DEVICE_GPU>( + UnitCell& ucell, K_Vectors& kv, Structure_Factor& sf, + elecstate::ElecState*& pelec, Charge& chr, + pseudopot_cell_vl& locpp, pseudopot_cell_vnl& ppcell, VSep*& vsep_cell, + ModulePW::PW_Basis_K* pw_wfc, ModulePW::PW_Basis* pw_rho, + ModulePW::PW_Basis* pw_rhod, ModulePW::PW_Basis_Big* pw_big, + surchem& solvent, const Input_para& inp); + +template void setup_estate_pw_impl, base_device::DEVICE_GPU>( + UnitCell& ucell, K_Vectors& kv, Structure_Factor& sf, + elecstate::ElecState*& pelec, Charge& chr, + pseudopot_cell_vl& locpp, pseudopot_cell_vnl& ppcell, VSep*& vsep_cell, + ModulePW::PW_Basis_K* pw_wfc, ModulePW::PW_Basis* pw_rho, + ModulePW::PW_Basis* pw_rhod, ModulePW::PW_Basis_Big* pw_big, + surchem& solvent, const Input_para& inp); + +template void teardown_estate_pw_impl, base_device::DEVICE_GPU>( + elecstate::ElecState*& pelec, VSep*& vsep_cell); + +template void teardown_estate_pw_impl, base_device::DEVICE_GPU>( + elecstate::ElecState*& pelec, VSep*& vsep_cell); + +#endif + +} diff --git a/source/source_estate/setup_estate_pw.h b/source/source_estate/setup_estate_pw.h new file mode 100644 index 0000000000..cd1a388a74 --- /dev/null +++ b/source/source_estate/setup_estate_pw.h @@ -0,0 +1,55 @@ +#ifndef SETUP_ESTATE_PW_H +#define SETUP_ESTATE_PW_H + +#include "source_base/module_device/device.h" +#include "source_cell/unitcell.h" +#include "source_cell/klist.h" +#include "source_pw/module_pwdft/structure_factor.h" +#include "source_estate/elecstate.h" +#include "source_pw/module_pwdft/vl_pw.h" +#include "source_pw/module_pwdft/vsep_pw.h" + +namespace elecstate +{ + +void setup_estate_pw( + UnitCell& ucell, + K_Vectors& kv, + Structure_Factor& sf, + elecstate::ElecState*& pelec, + Charge& chr, + pseudopot_cell_vl& locpp, + pseudopot_cell_vnl& ppcell, + VSep*& vsep_cell, + ModulePW::PW_Basis_K* pw_wfc, + ModulePW::PW_Basis* pw_rho, + ModulePW::PW_Basis* pw_rhod, + ModulePW::PW_Basis_Big* pw_big, + surchem& solvent, + const Input_para& inp); + +void teardown_estate_pw(elecstate::ElecState*& pelec, VSep*& vsep_cell); + +template +void setup_estate_pw_impl( + UnitCell& ucell, + K_Vectors& kv, + Structure_Factor& sf, + elecstate::ElecState*& pelec, + Charge& chr, + pseudopot_cell_vl& locpp, + pseudopot_cell_vnl& ppcell, + VSep*& vsep_cell, + ModulePW::PW_Basis_K* pw_wfc, + ModulePW::PW_Basis* pw_rho, + ModulePW::PW_Basis* pw_rhod, + ModulePW::PW_Basis_Big* pw_big, + surchem& solvent, + const Input_para& inp); + +template +void teardown_estate_pw_impl(elecstate::ElecState*& pelec, VSep*& vsep_cell); + +} + +#endif diff --git a/source/source_estate/test/CMakeLists.txt b/source/source_estate/test/CMakeLists.txt index 2cdcecaef8..ba33037bc5 100644 --- a/source/source_estate/test/CMakeLists.txt +++ b/source/source_estate/test/CMakeLists.txt @@ -12,43 +12,44 @@ if (ENABLE_MPI) install(DIRECTORY support DESTINATION ${CMAKE_CURRENT_BINARY_DIR}) AddTest( - TARGET Elecstate_Op_UTs + TARGET MODULE_ESTATE_Elecstate_Op_UTs LIBS parameter ${math_libs} psi base device SOURCES ../kernels/test/elecstate_op_test.cpp ) AddTest( - TARGET elecstate_occupy + TARGET MODULE_ESTATE_elecstate_occupy LIBS parameter ${math_libs} base device SOURCES elecstate_occupy_test.cpp ../occupy.cpp ) AddTest( - TARGET elecstate_magnetism + TARGET MODULE_ESTATE_elecstate_magnetism LIBS parameter ${math_libs} base device SOURCES elecstate_magnetism_test.cpp ../magnetism.cpp ) AddTest( - TARGET elecstate_fp_energy + TARGET MODULE_ESTATE_elecstate_fp_energy LIBS parameter ${math_libs} base device SOURCES elecstate_fp_energy_test.cpp ../fp_energy.cpp ) AddTest( - TARGET elecstate_print + TARGET MODULE_ESTATE_elecstate_print LIBS parameter ${math_libs} base device SOURCES elecstate_print_test.cpp ../elecstate_print.cpp ../occupy.cpp ) AddTest( - TARGET elecstate_base + TARGET MODULE_ESTATE_elecstate_base LIBS parameter ${math_libs} base device SOURCES elecstate_base_test.cpp ../elecstate.cpp ../elecstate_tools.cpp ../occupy.cpp ../../source_psi/psi.cpp + ../../source_base/module_fft/fft_bundle.cpp ../../source_base/module_fft/fft_cpu.cpp ) AddTest( - TARGET elecstate_pw + TARGET MODULE_ESTATE_elecstate_pw LIBS parameter ${math_libs} planewave_serial base device SOURCES elecstate_pw_test.cpp ../elecstate_pw.cpp @@ -61,43 +62,43 @@ AddTest( ) AddTest( - TARGET elecstate_energy + TARGET MODULE_ESTATE_elecstate_energy LIBS parameter ${math_libs} base device SOURCES elecstate_energy_test.cpp ../elecstate_energy.cpp ../fp_energy.cpp ) AddTest( - TARGET potentials_base + TARGET MODULE_ESTATE_potentials_base SOURCES potentials_base_test.cpp ) AddTest( - TARGET potentials_new + TARGET MODULE_ESTATE_potentials_new LIBS parameter ${math_libs} base device planewave_serial SOURCES potential_new_test.cpp ../module_pot/potential_new.cpp ) AddTest( - TARGET charge_test + TARGET MODULE_ESTATE_charge_test LIBS parameter ${math_libs} planewave_serial base device cell_info SOURCES charge_test.cpp ../module_charge/charge.cpp - ../../source_io/output.cpp + ../../source_io/module_output/output.cpp ) AddTest( - TARGET charge_mixing + TARGET MODULE_ESTATE_charge_mixing LIBS parameter base ${math_libs} psi device planewave_serial cell_info SOURCES charge_mixing_test.cpp ../module_charge/charge_mixing.cpp ../module_charge/charge_mixing_dmr.cpp ../module_charge/charge_mixing_residual.cpp ../module_charge/charge_mixing_preconditioner.cpp ../module_charge/charge_mixing_rho.cpp - ../module_charge/charge_mixing_uspp.cpp ../../source_io/output.cpp + ../module_charge/charge_mixing_uspp.cpp ../../source_io/module_output/output.cpp ) AddTest( - TARGET charge_extra + TARGET MODULE_ESTATE_charge_extra LIBS parameter ${math_libs} base device cell_info - SOURCES charge_extra_test.cpp ../module_charge/charge_extra.cpp ../../source_io/read_cube.cpp ../../source_io/write_cube.cpp - ../../source_io/output.cpp + SOURCES charge_extra_test.cpp ../module_charge/charge_extra.cpp ../../source_io/module_output/read_cube.cpp ../../source_io/module_output/write_cube.cpp + ../../source_io/module_output/output.cpp ../../source_base/module_fft/fft_bundle.cpp ../../source_base/module_fft/fft_cpu.cpp ) endif() \ No newline at end of file diff --git a/source/source_estate/test/charge_extra_test.cpp b/source/source_estate/test/charge_extra_test.cpp index 350ccd7aa3..c2951c1b5a 100644 --- a/source/source_estate/test/charge_extra_test.cpp +++ b/source/source_estate/test/charge_extra_test.cpp @@ -5,6 +5,7 @@ #include "source_io/module_parameter/parameter.h" #include "source_estate/module_charge/charge_extra.h" #include "prepare_unitcell.h" +#include "source_base/module_fft/fft_bundle.h" #undef private #undef protected // mock functions for UnitCell @@ -66,7 +67,6 @@ PW_Basis::PW_Basis() PW_Basis::~PW_Basis() { } -FFT_Bundle::~FFT_Bundle(){}; void PW_Basis::initgrids(const double lat0_in, const ModuleBase::Matrix3 latvec_in, const double gridecut) { } @@ -89,7 +89,7 @@ Structure_Factor::Structure_Factor() Structure_Factor::~Structure_Factor() { } -void Structure_Factor::setup_structure_factor(const UnitCell*, const Parallel_Grid&, const ModulePW::PW_Basis*) +void Structure_Factor::setup(const UnitCell*, const Parallel_Grid&, const ModulePW::PW_Basis*) { } diff --git a/source/source_estate/test/charge_mixing_test.cpp b/source/source_estate/test/charge_mixing_test.cpp index 0fc96bd29e..a0e03b9911 100644 --- a/source/source_estate/test/charge_mixing_test.cpp +++ b/source/source_estate/test/charge_mixing_test.cpp @@ -619,7 +619,7 @@ TEST_F(ChargeMixingTest, KerkerScreenRecipTest) // kerker CMtest.mixing_gg0 = 1.0; CMtest.Kerker_screen_recip(drhog); - double gg0 = std::pow(0.529177, 2); + double gg0 = std::pow(ModuleBase::BOHR_TO_A, 2); for (int i = 0; i < pw_basis.npw; ++i) { double gg = this->pw_basis.gg[i]; @@ -650,7 +650,7 @@ TEST_F(ChargeMixingTest, KerkerScreenRecipTest) // mixing_gg0 = 1.0, mixing_gg0_mag = 0.0 CMtest.mixing_gg0 = 1.0; CMtest.Kerker_screen_recip(drhog); - gg0 = std::pow(0.529177, 2); + gg0 = std::pow(ModuleBase::BOHR_TO_A, 2); for (int i = 0; i < pw_basis.npw; ++i) { double gg = this->pw_basis.gg[i]; @@ -683,7 +683,7 @@ TEST_F(ChargeMixingTest, KerkerScreenRecipTest) // mixing_gg0 = 1.0, mixing_gg0_mag = 0.0 CMtest.mixing_gg0 = 1.0; CMtest.Kerker_screen_recip(drhog); - gg0 = std::pow(0.529177, 2); + gg0 = std::pow(ModuleBase::BOHR_TO_A, 2); for (int i = 0; i < pw_basis.npw; ++i) { double gg = this->pw_basis.gg[i]; @@ -701,8 +701,8 @@ TEST_F(ChargeMixingTest, KerkerScreenRecipTest) CMtest.mixing_gg0 = 1.0; CMtest.mixing_gg0_mag = 2.0; CMtest.Kerker_screen_recip(drhog); - double gg1 = std::pow(1.0 * 0.529177, 2); - double gg2 = std::pow(2.0 * 0.529177, 2); + double gg1 = std::pow(1.0 * ModuleBase::BOHR_TO_A, 2); + double gg2 = std::pow(2.0 * ModuleBase::BOHR_TO_A, 2); for (int i = 0; i < pw_basis.npw; ++i) { double gg = this->pw_basis.gg[i]; @@ -782,7 +782,7 @@ TEST_F(ChargeMixingTest, KerkerScreenRealTest) CMtest.mixing_gg0 = 1.0; PARAM.input.mixing_gg0_mag = 0.0; CMtest.Kerker_screen_recip(drhog); - const double gg0 = std::pow(0.529177, 2); + const double gg0 = std::pow(ModuleBase::BOHR_TO_A, 2); for (int i = 0; i < pw_basis.npw; ++i) { std::complex ration = drhog[i] / drhog[i+pw_basis.npw]; diff --git a/source/source_estate/test/charge_test.cpp b/source/source_estate/test/charge_test.cpp index de28a5848c..261bcc5e3e 100644 --- a/source/source_estate/test/charge_test.cpp +++ b/source/source_estate/test/charge_test.cpp @@ -117,10 +117,11 @@ TEST_F(ChargeTest, Allocate) XC_Functional::ked_flag = true; charge->set_rhopw(rhopw); EXPECT_FALSE(charge->allocate_rho); - charge->allocate(PARAM.input.nspin); + const bool kin_den = charge->kin_density(); + charge->allocate(PARAM.input.nspin, kin_den); EXPECT_TRUE(charge->allocate_rho); // test if Charge::allocate() be called twice - EXPECT_NO_THROW(charge->allocate(PARAM.input.nspin)); + EXPECT_NO_THROW(charge->allocate(PARAM.input.nspin, kin_den)); EXPECT_TRUE(charge->allocate_rho); } @@ -128,7 +129,8 @@ TEST_F(ChargeTest, SumRho) { charge->set_rhopw(rhopw); EXPECT_FALSE(charge->allocate_rho); - charge->allocate(PARAM.input.nspin); + const bool kin_den = charge->kin_density(); + charge->allocate(PARAM.input.nspin, kin_den); EXPECT_TRUE(charge->allocate_rho); int nspin = (PARAM.input.nspin == 2) ? 2 : 1; for (int is = 0; is < nspin; is++) @@ -146,7 +148,8 @@ TEST_F(ChargeTest, RenormalizeRho) { charge->set_rhopw(rhopw); EXPECT_FALSE(charge->allocate_rho); - charge->allocate(PARAM.input.nspin); + const bool kin_den = charge->kin_density(); + charge->allocate(PARAM.input.nspin, kin_den); EXPECT_TRUE(charge->allocate_rho); int nspin = (PARAM.input.nspin == 2) ? 2 : 1; for (int is = 0; is < nspin; is++) @@ -166,7 +169,8 @@ TEST_F(ChargeTest, CheckNe) { charge->set_rhopw(rhopw); EXPECT_FALSE(charge->allocate_rho); - charge->allocate(PARAM.input.nspin); + const bool kin_den = charge->kin_density(); + charge->allocate(PARAM.input.nspin, kin_den); EXPECT_TRUE(charge->allocate_rho); int nspin = (PARAM.input.nspin == 2) ? 2 : 1; for (int is = 0; is < nspin; is++) @@ -187,7 +191,8 @@ TEST_F(ChargeTest, SaveRhoBeforeSumBand) { charge->set_rhopw(rhopw); EXPECT_FALSE(charge->allocate_rho); - charge->allocate(PARAM.input.nspin); + const bool kin_den = charge->kin_density(); + charge->allocate(PARAM.input.nspin, kin_den); EXPECT_TRUE(charge->allocate_rho); int nspin = (PARAM.input.nspin == 2) ? 2 : 1; for (int is = 0; is < nspin; is++) diff --git a/source/source_estate/test/elecstate_base_test.cpp b/source/source_estate/test/elecstate_base_test.cpp index 4e9aa2307d..e0d63df822 100644 --- a/source/source_estate/test/elecstate_base_test.cpp +++ b/source/source_estate/test/elecstate_base_test.cpp @@ -7,13 +7,14 @@ #include "source_estate/elecstate_tools.h" #include "source_estate/occupy.h" #include "source_io/module_parameter/parameter.h" +#include "source_base/module_fft/fft_bundle.h" #undef protected #undef private // Mock functions for testing elecstate.cpp namespace elecstate { -void Potential::init_pot(int, Charge const*) +void Potential::init_pot(Charge const*) { } void Potential::cal_v_eff(const Charge* chg, const UnitCell* ucell, ModuleBase::matrix& v_eff) @@ -52,6 +53,10 @@ InfoNonlocal::InfoNonlocal() InfoNonlocal::~InfoNonlocal() { } +SepPot::SepPot(){} +SepPot::~SepPot(){} +Sep_Cell::Sep_Cell() noexcept {} +Sep_Cell::~Sep_Cell() noexcept {} #include "source_cell/klist.h" ModulePW::PW_Basis::PW_Basis() @@ -63,7 +68,6 @@ ModulePW::PW_Basis::~PW_Basis() ModulePW::PW_Basis_Sup::~PW_Basis_Sup() { } -ModulePW::FFT_Bundle::~FFT_Bundle() {}; void ModulePW::PW_Basis::initgrids(double, ModuleBase::Matrix3, double) { } @@ -76,11 +80,7 @@ void ModulePW::PW_Basis::distribute_r() void Charge::set_rho_core(const UnitCell& ucell, ModuleBase::ComplexMatrix const&, const bool*) { } -void Charge::set_rho_core_paw() -{ -} -void Charge::init_rho(elecstate::efermi&, - const UnitCell&, +void Charge::init_rho(const UnitCell&, const Parallel_Grid&, ModuleBase::ComplexMatrix const&, ModuleSymmetry::Symmetry& symm, @@ -197,11 +197,10 @@ TEST_F(ElecStateTest, Constructor) TEST_F(ElecStateTest, InitKS) { Charge* charge = new Charge; - ModulePW::PW_Basis* rhopw = new ModulePW::PW_Basis; ModulePW::PW_Basis_Big* bigpw = new ModulePW::PW_Basis_Big; K_Vectors* klist = new K_Vectors; int nk = 1; - EXPECT_NO_THROW(elecstate->init_ks(charge, klist, nk, rhopw, bigpw)); + EXPECT_NO_THROW(elecstate->init_ks(charge, klist, nk, bigpw)); EXPECT_EQ(elecstate->charge, charge); EXPECT_EQ(elecstate->bigpw, bigpw); EXPECT_EQ(elecstate->klist, klist); @@ -211,14 +210,12 @@ TEST_F(ElecStateTest, InitKS) EXPECT_EQ(elecstate->wg.nc, PARAM.input.nbands); delete klist; delete bigpw; - delete rhopw; delete charge; } TEST_F(ElecStateTest, GetRho) { Charge* charge = new Charge; - ModulePW::PW_Basis* rhopw = new ModulePW::PW_Basis; ModulePW::PW_Basis_Big* bigpw = new ModulePW::PW_Basis_Big; K_Vectors* klist = new K_Vectors; int nk = 1; @@ -232,7 +229,7 @@ TEST_F(ElecStateTest, GetRho) charge->rho[i][j] = 1.0; } } - elecstate->init_ks(charge, klist, nk, rhopw, bigpw); + elecstate->init_ks(charge, klist, nk, bigpw); EXPECT_EQ(elecstate->getRho(0), &(charge->rho[0][0])); EXPECT_EQ(elecstate->getRho(0)[nrxx - 1], 1.0); for (int i = 0; i < PARAM.input.nspin; ++i) @@ -242,7 +239,6 @@ TEST_F(ElecStateTest, GetRho) delete[] charge->rho; delete klist; delete bigpw; - delete rhopw; delete charge; } @@ -262,12 +258,12 @@ TEST_F(ElecStateTest, InitSCF) Charge* charge = new Charge; elecstate->charge = charge; elecstate->pot = new elecstate::Potential; - elecstate::efermi efermi; + elecstate::Efermi efermi; int istep = 0; ModuleBase::ComplexMatrix strucfac; elecstate->eferm = efermi; ModuleSymmetry::Symmetry symm; - EXPECT_NO_THROW(elecstate->init_scf(istep, ucell, pgrid, strucfac, nullptr, symm)); + EXPECT_NO_THROW(elecstate->init_scf(ucell, pgrid, strucfac, nullptr, symm)); // delete elecstate->pot is done in the destructor of elecstate delete charge; } diff --git a/source/source_estate/test/elecstate_energy_test.cpp b/source/source_estate/test/elecstate_energy_test.cpp index e6d0203b68..00b94bacc4 100644 --- a/source/source_estate/test/elecstate_energy_test.cpp +++ b/source/source_estate/test/elecstate_energy_test.cpp @@ -1,4 +1,3 @@ - #include "gmock/gmock.h" #include "gtest/gtest.h" #define private public @@ -242,3 +241,48 @@ TEST_F(ElecStateEnergyTest, CalBandgapUpDw) EXPECT_DOUBLE_EQ(elecstate->bandgap_up, 1.0); EXPECT_DOUBLE_EQ(elecstate->bandgap_dw, 0.5); } + +TEST_F(ElecStateEnergyTest, CalBandgapBoundaryConditions) +{ + K_Vectors* klist = new K_Vectors; + klist->set_nks(1); + elecstate->klist = klist; + elecstate->ekb.create(1, 1); + + // Case 1: Only VBM found (all bands below Fermi level) + elecstate->ekb(0, 0) = -5.0; + elecstate->eferm.ef = 0.0; + elecstate->cal_bandgap(); + // Only VBM found, CBM is set to eferm.ef, so bandgap should be eferm.ef - vbm + EXPECT_DOUBLE_EQ(elecstate->bandgap, 5.0); + + // Case 2: Only CBM found (all bands above Fermi level) + elecstate->ekb(0, 0) = 5.0; + elecstate->eferm.ef = 0.0; + elecstate->cal_bandgap(); + // Only CBM found, VBM is set to eferm.ef, so bandgap should be cbm - eferm.ef + EXPECT_DOUBLE_EQ(elecstate->bandgap, 5.0); +} + +TEST_F(ElecStateEnergyTest, CalBandgapUpDwBoundaryConditions) +{ + K_Vectors* klist = new K_Vectors; + klist->set_nks(2); + klist->isk.resize(2); + klist->isk[0] = 0; // spin up + klist->isk[1] = 1; // spin down + elecstate->klist = klist; + elecstate->ekb.create(2, 1); // 2 k-points, 1 band + + // Spin UP: Only VBM (band < ef) + elecstate->ekb(0, 0) = -5.0; + elecstate->eferm.ef_up = 0.0; + // Spin DW: Only CBM (band > ef) + elecstate->ekb(1, 0) = 5.0; + elecstate->eferm.ef_dw = 0.0; + elecstate->cal_bandgap_updw(); + // up: Only VBM found, CBM is set to eferm.ef_up, so gap should be eferm.ef_up - vbm_up + // dw: Only CBM found, VBM is set to eferm.ef_dw, so gap should be cbm_dw - eferm.ef_dw + EXPECT_DOUBLE_EQ(elecstate->bandgap_up, 5.0); + EXPECT_DOUBLE_EQ(elecstate->bandgap_dw, 5.0); +} diff --git a/source/source_estate/test/elecstate_fp_energy_test.cpp b/source/source_estate/test/elecstate_fp_energy_test.cpp index 36f775d9af..66ef941f37 100644 --- a/source/source_estate/test/elecstate_fp_energy_test.cpp +++ b/source/source_estate/test/elecstate_fp_energy_test.cpp @@ -14,14 +14,14 @@ * - fenergy::calculate_harris() * - fenergy::clear_all() * - fenergy::print_all() - * - efermi::set_efval() - * - efermi::get_efval() + * - Efermi::set_efval() + * - Efermi::get_efval() */ class fenergy : public ::testing::Test { protected: elecstate::fenergy f_en; - elecstate::efermi eferm; + elecstate::Efermi eferm; }; TEST_F(fenergy, calculate_etot) @@ -92,4 +92,4 @@ TEST_F(fenergy, eferm_get_efval) EXPECT_EXIT(double tmpp = eferm.get_efval(2);, ::testing::ExitedWithCode(1), ""); std::string output = testing::internal::GetCapturedStdout(); EXPECT_THAT(output, testing::HasSubstr("Please check NSPIN when TWO_EFERMI is true")); -} \ No newline at end of file +} diff --git a/source/source_estate/test/elecstate_print_test.cpp b/source/source_estate/test/elecstate_print_test.cpp index 0003ef2475..53dcbb0c58 100644 --- a/source/source_estate/test/elecstate_print_test.cpp +++ b/source/source_estate/test/elecstate_print_test.cpp @@ -11,7 +11,7 @@ #include "source_hamilt/module_xc/xc_functional.h" #include "source_io/module_parameter/parameter.h" #include "source_estate/elecstate_print.h" -#undef private +#undef private /*************************************************************** * mock functions ****************************************************************/ @@ -37,6 +37,10 @@ Charge::Charge() Charge::~Charge() { } +SepPot::SepPot(){} +SepPot::~SepPot(){} +Sep_Cell::Sep_Cell() noexcept {} +Sep_Cell::~Sep_Cell() noexcept {} int XC_Functional::func_type = 0; bool XC_Functional::ked_flag = false; @@ -131,7 +135,6 @@ TEST_F(ElecStatePrintTest, PrintEtot) PARAM.input.efield_flag = true; PARAM.input.gate_flag = true; PARAM.sys.two_fermi = true; - PARAM.input.out_bandgap = true; GlobalV::MY_RANK = 0; PARAM.input.basis_type = "pw"; PARAM.input.nspin = 2; @@ -141,7 +144,7 @@ TEST_F(ElecStatePrintTest, PrintEtot) for (int i = 0; i < vdw_methods.size(); i++) { PARAM.input.vdw_method = vdw_methods[i]; - elecstate::print_etot(ucell.magnet,elecstate, converged, iter, scf_thr, + elecstate::print_etot(ucell.magnet,elecstate, converged, iter, scf_thr, scf_thr_kin, duration, pw_diag_thr, avg_iter, false); } @@ -152,7 +155,7 @@ TEST_F(ElecStatePrintTest, PrintEtot) PARAM.input.ks_solver = ks_solvers[i]; testing::internal::CaptureStdout(); - elecstate::print_etot(ucell.magnet,elecstate,converged, iter, scf_thr, + elecstate::print_etot(ucell.magnet,elecstate,converged, iter, scf_thr, scf_thr_kin, duration, pw_diag_thr, avg_iter, print); output = testing::internal::GetCapturedStdout(); @@ -217,11 +220,10 @@ TEST_F(ElecStatePrintTest, PrintEtotColorS2) PARAM.input.efield_flag = true; PARAM.input.gate_flag = true; PARAM.sys.two_fermi = true; - PARAM.input.out_bandgap = true; PARAM.input.nspin = 2; GlobalV::MY_RANK = 0; - elecstate::print_etot(ucell.magnet,elecstate,converged, iter, scf_thr, + elecstate::print_etot(ucell.magnet,elecstate,converged, iter, scf_thr, scf_thr_kin, duration, pw_diag_thr, avg_iter, print); delete elecstate.charge; @@ -247,12 +249,11 @@ TEST_F(ElecStatePrintTest, PrintEtotColorS4) PARAM.input.efield_flag = true; PARAM.input.gate_flag = true; PARAM.sys.two_fermi = true; - PARAM.input.out_bandgap = true; PARAM.input.nspin = 4; PARAM.input.noncolin = true; GlobalV::MY_RANK = 0; - elecstate::print_etot(ucell.magnet,elecstate, converged, iter, scf_thr, scf_thr_kin, + elecstate::print_etot(ucell.magnet,elecstate, converged, iter, scf_thr, scf_thr_kin, duration, pw_diag_thr, avg_iter, print); delete elecstate.charge; diff --git a/source/source_estate/test/elecstate_pw_test.cpp b/source/source_estate/test/elecstate_pw_test.cpp index 865b4f0049..c71a38002e 100644 --- a/source/source_estate/test/elecstate_pw_test.cpp +++ b/source/source_estate/test/elecstate_pw_test.cpp @@ -6,13 +6,13 @@ #define protected public #include "source_estate/elecstate_pw.h" #include "source_hamilt/module_xc/xc_functional.h" -#include "source_pw/module_pwdft/VL_in_pw.h" +#include "source_pw/module_pwdft/vl_pw.h" #include "source_io/module_parameter/parameter.h" // mock functions for testing int XC_Functional::func_type = 1; namespace elecstate { -void Potential::init_pot(int, Charge const*) +void Potential::init_pot(Charge const*) { } void Potential::cal_v_eff(const Charge* chg, const UnitCell* ucell, ModuleBase::matrix& v_eff) @@ -43,6 +43,10 @@ Magnetism::Magnetism() Magnetism::~Magnetism() { } +SepPot::SepPot(){} +SepPot::~SepPot(){} +Sep_Cell::Sep_Cell() noexcept {} +Sep_Cell::~Sep_Cell() noexcept {} #ifdef __LCAO InfoNonlocal::InfoNonlocal() { @@ -126,11 +130,7 @@ Fcoef::~Fcoef() void Charge::set_rho_core(const UnitCell& ucell, ModuleBase::ComplexMatrix const&, const bool*) { } -void Charge::set_rho_core_paw() -{ -} -void Charge::init_rho(elecstate::efermi&, - const UnitCell&, +void Charge::init_rho(const UnitCell&, const Parallel_Grid&, ModuleBase::ComplexMatrix const&, ModuleSymmetry::Symmetry& symm, @@ -240,7 +240,6 @@ TEST_F(ElecStatePWTest, ConstructorDouble) klist, ucell, ppcell, - rhodpw, rhopw, bigpw); EXPECT_EQ(elecstate_pw_d->classname, "ElecStatePW"); @@ -256,7 +255,6 @@ TEST_F(ElecStatePWTest, ConstructorSingle) klist, ucell, ppcell, - rhodpw, rhopw, bigpw); EXPECT_EQ(elecstate_pw_s->classname, "ElecStatePW"); @@ -274,7 +272,6 @@ TEST_F(ElecStatePWTest, InitRhoDataDouble) klist, ucell, ppcell, - rhodpw, rhopw, bigpw); elecstate_pw_d->init_rho_data(); @@ -294,7 +291,6 @@ TEST_F(ElecStatePWTest, InitRhoDataSingle) klist, ucell, ppcell, - rhodpw, rhopw, bigpw); elecstate_pw_s->init_rho_data(); @@ -311,7 +307,6 @@ TEST_F(ElecStatePWTest, ParallelKDouble) klist, ucell, ppcell, - rhodpw, rhopw, bigpw); EXPECT_NO_THROW(elecstate_pw_d->parallelK()); @@ -325,10 +320,9 @@ TEST_F(ElecStatePWTest, ParallelKSingle) klist, ucell, ppcell, - rhodpw, rhopw, bigpw); EXPECT_NO_THROW(elecstate_pw_s->parallelK()); } -#undef protected \ No newline at end of file +#undef protected diff --git a/source/source_estate/test/potential_new_test.cpp b/source/source_estate/test/potential_new_test.cpp index 82a10bf17a..f91f473efa 100644 --- a/source/source_estate/test/potential_new_test.cpp +++ b/source/source_estate/test/potential_new_test.cpp @@ -24,6 +24,10 @@ Magnetism::Magnetism() Magnetism::~Magnetism() { } +SepPot::SepPot(){} +SepPot::~SepPot(){} +Sep_Cell::Sep_Cell() noexcept {} +Sep_Cell::~Sep_Cell() noexcept {} #ifdef __LCAO InfoNonlocal::InfoNonlocal() { @@ -84,7 +88,7 @@ void Set_GlobalV_Default() * - UpdateFromCharge: elecstate::Potential::update_from_charge() * - calls cal_fixed_v and cal_v_eff to update v_effective from rho * - InitPot: elecstate::Potential::init_pot() - * - using istep and update_from_charge to initialize v_effective + * - using update_from_charge to initialize v_effective * - GetVnew: elecstate::Potential::get_vnew() * - used later for scf correction to the forces * - GetEffective: elecstate::Potential::get_effective_v() @@ -166,9 +170,9 @@ TEST_F(PotentialNewTest, ConstructorCPUDouble) pot = new elecstate::Potential(rhopw, rhopw, ucell, vloc, structure_factors, solvent, etxc, vtxc); EXPECT_TRUE(pot->fixed_mode); EXPECT_TRUE(pot->dynamic_mode); - EXPECT_EQ(pot->v_effective_fixed.size(), 100); - EXPECT_EQ(pot->v_effective.nr, PARAM.input.nspin); - EXPECT_EQ(pot->v_effective.nc, 100); + EXPECT_EQ(pot->v_eff_fixed.size(), 100); + EXPECT_EQ(pot->v_eff.nr, PARAM.input.nspin); + EXPECT_EQ(pot->v_eff.nc, 100); } TEST_F(PotentialNewTest, ConstructorCPUSingle) @@ -178,9 +182,9 @@ TEST_F(PotentialNewTest, ConstructorCPUSingle) pot = new elecstate::Potential(rhopw, rhopw, ucell, vloc, structure_factors, solvent, etxc, vtxc); EXPECT_TRUE(pot->fixed_mode); EXPECT_TRUE(pot->dynamic_mode); - EXPECT_EQ(pot->v_effective_fixed.size(), 100); - EXPECT_EQ(pot->v_effective.nr, PARAM.input.nspin); - EXPECT_EQ(pot->v_effective.nc, 100); + EXPECT_EQ(pot->v_eff_fixed.size(), 100); + EXPECT_EQ(pot->v_eff.nr, PARAM.input.nspin); + EXPECT_EQ(pot->v_eff.nc, 100); } TEST_F(PotentialNewTest, ConstructorNRXX0) @@ -199,11 +203,11 @@ TEST_F(PotentialNewTest, ConstructorXC3) pot = new elecstate::Potential(rhopw, rhopw, ucell, vloc, structure_factors, solvent, etxc, vtxc); EXPECT_TRUE(pot->fixed_mode); EXPECT_TRUE(pot->dynamic_mode); - EXPECT_EQ(pot->v_effective_fixed.size(), 100); - EXPECT_EQ(pot->v_effective.nr, PARAM.input.nspin); - EXPECT_EQ(pot->v_effective.nc, 100); - EXPECT_EQ(pot->vofk_effective.nr, PARAM.input.nspin); - EXPECT_EQ(pot->vofk_effective.nc, 100); + EXPECT_EQ(pot->v_eff_fixed.size(), 100); + EXPECT_EQ(pot->v_eff.nr, PARAM.input.nspin); + EXPECT_EQ(pot->v_eff.nc, 100); + EXPECT_EQ(pot->vofk_eff.nr, PARAM.input.nspin); + EXPECT_EQ(pot->vofk_eff.nc, 100); } TEST_F(PotentialNewTest, ConstructorGPUDouble) @@ -214,9 +218,9 @@ TEST_F(PotentialNewTest, ConstructorGPUDouble) pot = new elecstate::Potential(rhopw, rhopw, ucell, vloc, structure_factors, solvent, etxc, vtxc); EXPECT_TRUE(pot->fixed_mode); EXPECT_TRUE(pot->dynamic_mode); - EXPECT_EQ(pot->v_effective_fixed.size(), 100); - EXPECT_EQ(pot->v_effective.nr, PARAM.input.nspin); - EXPECT_EQ(pot->v_effective.nc, 100); + EXPECT_EQ(pot->v_eff_fixed.size(), 100); + EXPECT_EQ(pot->v_eff.nr, PARAM.input.nspin); + EXPECT_EQ(pot->v_eff.nc, 100); } TEST_F(PotentialNewTest, ConstructorGPUSingle) @@ -228,9 +232,9 @@ TEST_F(PotentialNewTest, ConstructorGPUSingle) pot = new elecstate::Potential(rhopw, rhopw, ucell, vloc, structure_factors, solvent, etxc, vtxc); EXPECT_TRUE(pot->fixed_mode); EXPECT_TRUE(pot->dynamic_mode); - EXPECT_EQ(pot->v_effective_fixed.size(), 100); - EXPECT_EQ(pot->v_effective.nr, PARAM.input.nspin); - EXPECT_EQ(pot->v_effective.nc, 100); + EXPECT_EQ(pot->v_eff_fixed.size(), 100); + EXPECT_EQ(pot->v_eff.nr, PARAM.input.nspin); + EXPECT_EQ(pot->v_eff.nc, 100); } TEST_F(PotentialNewTest, Getters) @@ -285,9 +289,9 @@ TEST_F(PotentialNewTest, CalFixedV) } double* vl_pseudo = new double[1000]; pot->cal_fixed_v(vl_pseudo); - for (int i = 0; i < pot->v_effective_fixed.size(); i++) + for (int i = 0; i < pot->v_eff_fixed.size(); i++) { - EXPECT_DOUBLE_EQ(pot->v_effective_fixed[i], 0.0); + EXPECT_DOUBLE_EQ(pot->v_eff_fixed[i], 0.0); } delete[] vl_pseudo; } @@ -315,9 +319,9 @@ TEST_F(PotentialNewTest, CalVeff) ModuleBase::matrix v_eff; v_eff.create(2, 100); pot->cal_v_eff(chg,this->ucell,v_eff); - for (int i = 0; i < pot->v_effective_fixed.size(); i++) + for (int i = 0; i < pot->v_eff_fixed.size(); i++) { - EXPECT_DOUBLE_EQ(pot->v_effective_fixed[i], 0.0); + EXPECT_DOUBLE_EQ(pot->v_eff_fixed[i], 0.0); } delete chg; } @@ -373,7 +377,7 @@ TEST_F(PotentialNewTest, InitPot) } Charge* chg = new Charge; EXPECT_FALSE(pot->fixed_done); - pot->init_pot(1,chg); + pot->init_pot(chg); EXPECT_TRUE(pot->fixed_done); delete chg; } @@ -413,8 +417,8 @@ TEST_F(PotentialNewTest, GetEffectiveVmatrix) rhopw->nrxx = 100; pot = new elecstate::Potential(rhopw, rhopw, ucell, vloc, structure_factors, solvent, etxc, vtxc); // - ModuleBase::matrix v_eff_tmp = pot->get_effective_v(); - const ModuleBase::matrix v_eff_tmp_const = pot->get_effective_v(); + ModuleBase::matrix v_eff_tmp = pot->get_eff_v(); + const ModuleBase::matrix v_eff_tmp_const = pot->get_eff_v(); EXPECT_EQ(v_eff_tmp.nr, PARAM.input.nspin); EXPECT_EQ(v_eff_tmp.nc, 100); EXPECT_EQ(v_eff_tmp_const.nr, PARAM.input.nspin); @@ -423,8 +427,8 @@ TEST_F(PotentialNewTest, GetEffectiveVmatrix) { for (int ic = 0; ic < v_eff_tmp.nc; ic++) { - EXPECT_DOUBLE_EQ(v_eff_tmp(ir, ic), pot->v_effective(ir, ic)); - EXPECT_DOUBLE_EQ(v_eff_tmp_const(ir, ic), pot->v_effective(ir, ic)); + EXPECT_DOUBLE_EQ(v_eff_tmp(ir, ic), pot->v_eff(ir, ic)); + EXPECT_DOUBLE_EQ(v_eff_tmp_const(ir, ic), pot->v_eff(ir, ic)); } } } @@ -435,24 +439,24 @@ TEST_F(PotentialNewTest, GetEffectiveVarray) rhopw->nrxx = 100; pot = new elecstate::Potential(rhopw, rhopw, ucell, vloc, structure_factors, solvent, etxc, vtxc); // - double* v_eff_tmp = pot->get_effective_v(0); - const double* v_eff_tmp_const = pot->get_effective_v(0); + double* v_eff_tmp = pot->get_eff_v(0); + const double* v_eff_tmp_const = pot->get_eff_v(0); for (int ic = 0; ic < rhopw->nrxx; ic++) { - EXPECT_DOUBLE_EQ(v_eff_tmp[ic], pot->v_effective(0, ic)); - EXPECT_DOUBLE_EQ(v_eff_tmp_const[ic], pot->v_effective(0, ic)); + EXPECT_DOUBLE_EQ(v_eff_tmp[ic], pot->v_eff(0, ic)); + EXPECT_DOUBLE_EQ(v_eff_tmp_const[ic], pot->v_eff(0, ic)); } v_eff_tmp[0] = 1.0; - EXPECT_DOUBLE_EQ(pot->v_effective(0, 0), 1.0); + EXPECT_DOUBLE_EQ(pot->v_eff(0, 0), 1.0); EXPECT_DOUBLE_EQ(v_eff_tmp_const[0], 1.0); } TEST_F(PotentialNewTest, GetEffectiveVarrayNullptr) { pot = new elecstate::Potential; - EXPECT_EQ(pot->v_effective.nc, 0); - double* v_eff_tmp = pot->get_effective_v(0); - const double* v_eff_tmp_const = pot->get_effective_v(0); + EXPECT_EQ(pot->v_eff.nc, 0); + double* v_eff_tmp = pot->get_eff_v(0); + const double* v_eff_tmp_const = pot->get_eff_v(0); EXPECT_EQ(v_eff_tmp, nullptr); EXPECT_EQ(v_eff_tmp_const, nullptr); } @@ -465,8 +469,8 @@ TEST_F(PotentialNewTest, GetEffectiveVofkmatrix) rhopw->nrxx = 100; pot = new elecstate::Potential(rhopw, rhopw, ucell, vloc, structure_factors, solvent, etxc, vtxc); // - ModuleBase::matrix vofk_eff_tmp = pot->get_effective_vofk(); - const ModuleBase::matrix vofk_eff_tmp_const = pot->get_effective_vofk(); + ModuleBase::matrix vofk_eff_tmp = pot->get_eff_vofk(); + const ModuleBase::matrix vofk_eff_tmp_const = pot->get_eff_vofk(); EXPECT_EQ(vofk_eff_tmp.nr, PARAM.input.nspin); EXPECT_EQ(vofk_eff_tmp.nc, 100); EXPECT_EQ(vofk_eff_tmp_const.nr, PARAM.input.nspin); @@ -475,8 +479,8 @@ TEST_F(PotentialNewTest, GetEffectiveVofkmatrix) { for (int ic = 0; ic < vofk_eff_tmp.nc; ic++) { - EXPECT_DOUBLE_EQ(vofk_eff_tmp(ir, ic), pot->vofk_effective(ir, ic)); - EXPECT_DOUBLE_EQ(vofk_eff_tmp_const(ir, ic), pot->vofk_effective(ir, ic)); + EXPECT_DOUBLE_EQ(vofk_eff_tmp(ir, ic), pot->vofk_eff(ir, ic)); + EXPECT_DOUBLE_EQ(vofk_eff_tmp_const(ir, ic), pot->vofk_eff(ir, ic)); } } } @@ -487,24 +491,24 @@ TEST_F(PotentialNewTest, GetEffectiveVofkarray) rhopw->nrxx = 100; pot = new elecstate::Potential(rhopw, rhopw, ucell, vloc, structure_factors, solvent, etxc, vtxc); // - double* vofk_eff_tmp = pot->get_effective_vofk(0); - const double* vofk_eff_tmp_const = pot->get_effective_vofk(0); + double* vofk_eff_tmp = pot->get_eff_vofk(0); + const double* vofk_eff_tmp_const = pot->get_eff_vofk(0); for (int ic = 0; ic < rhopw->nrxx; ic++) { - EXPECT_DOUBLE_EQ(vofk_eff_tmp[ic], pot->vofk_effective(0, ic)); - EXPECT_DOUBLE_EQ(vofk_eff_tmp_const[ic], pot->vofk_effective(0, ic)); + EXPECT_DOUBLE_EQ(vofk_eff_tmp[ic], pot->vofk_eff(0, ic)); + EXPECT_DOUBLE_EQ(vofk_eff_tmp_const[ic], pot->vofk_eff(0, ic)); } vofk_eff_tmp[0] = 1.0; - EXPECT_DOUBLE_EQ(pot->vofk_effective(0, 0), 1.0); + EXPECT_DOUBLE_EQ(pot->vofk_eff(0, 0), 1.0); EXPECT_DOUBLE_EQ(vofk_eff_tmp_const[0], 1.0); } TEST_F(PotentialNewTest, GetEffectiveVofkarrayNullptr) { pot = new elecstate::Potential; - EXPECT_EQ(pot->v_effective.nc, 0); - double* vofk_eff_tmp = pot->get_effective_vofk(0); - const double* vofk_eff_tmp_const = pot->get_effective_vofk(0); + EXPECT_EQ(pot->v_eff.nc, 0); + double* vofk_eff_tmp = pot->get_eff_vofk(0); + const double* vofk_eff_tmp_const = pot->get_eff_vofk(0); EXPECT_EQ(vofk_eff_tmp, nullptr); EXPECT_EQ(vofk_eff_tmp_const, nullptr); } @@ -515,14 +519,14 @@ TEST_F(PotentialNewTest, GetFixedV) pot = new elecstate::Potential(rhopw, rhopw, ucell, vloc, structure_factors, solvent, etxc, vtxc); EXPECT_TRUE(pot->fixed_mode); EXPECT_TRUE(pot->dynamic_mode); - EXPECT_EQ(pot->v_effective_fixed.size(), 100); + EXPECT_EQ(pot->v_eff_fixed.size(), 100); double* v_eff_fixed_tmp = pot->get_fixed_v(); const double* v_eff_fixed_tmp_const = pot->get_fixed_v(); for (int ic = 0; ic < rhopw->nrxx; ic++) { v_eff_fixed_tmp[ic] = ic; - EXPECT_DOUBLE_EQ(v_eff_fixed_tmp[ic], pot->v_effective_fixed[ic]); - EXPECT_DOUBLE_EQ(v_eff_fixed_tmp_const[ic], pot->v_effective_fixed[ic]); + EXPECT_DOUBLE_EQ(v_eff_fixed_tmp[ic], pot->v_eff_fixed[ic]); + EXPECT_DOUBLE_EQ(v_eff_fixed_tmp_const[ic], pot->v_eff_fixed[ic]); } } @@ -590,12 +594,12 @@ TEST_F(PotentialNewTest, InterpolateVrsDoubleGrids) pot = new elecstate::Potential(rhodpw, rhopw, ucell, vloc, structure_factors, solvent, etxc, vtxc); - for (int ir = 0; ir < pot->v_effective.nr; ir++) + for (int ir = 0; ir < pot->v_eff.nr; ir++) { - for (int ic = 0; ic < pot->v_effective.nc; ic++) + for (int ic = 0; ic < pot->v_eff.nc; ic++) { - pot->v_effective(ir, ic) = ir + ic; - pot->vofk_effective(ir, ic) = ir + 2 * ic; + pot->v_eff(ir, ic) = ir + ic; + pot->vofk_eff(ir, ic) = ir + 2 * ic; } } @@ -651,12 +655,12 @@ TEST_F(PotentialNewTest, InterpolateVrsSingleGrids) pot = new elecstate::Potential(rhopw, rhopw, ucell, vloc, structure_factors, solvent, etxc, vtxc); - for (int ir = 0; ir < pot->v_effective.nr; ir++) + for (int ir = 0; ir < pot->v_eff.nr; ir++) { - for (int ic = 0; ic < pot->v_effective.nc; ic++) + for (int ic = 0; ic < pot->v_eff.nc; ic++) { - pot->v_effective(ir, ic) = ir + ic; - pot->vofk_effective(ir, ic) = ir + 2 * ic; + pot->v_eff(ir, ic) = ir + ic; + pot->vofk_eff(ir, ic) = ir + 2 * ic; } } diff --git a/source/source_estate/test/prepare_unitcell.h b/source/source_estate/test/prepare_unitcell.h index 49635e89f3..eec2fa9a52 100644 --- a/source/source_estate/test/prepare_unitcell.h +++ b/source/source_estate/test/prepare_unitcell.h @@ -82,7 +82,7 @@ class UcellTestPrepare } //lattice info ucell->lat0 = this->lat0; - ucell->lat0_angstrom = ucell->lat0 * 0.529177; + ucell->lat0_angstrom = ucell->lat0 * ModuleBase::BOHR_TO_A; ucell->tpiba = ModuleBase::TWO_PI/ucell->lat0; ucell->tpiba2 = ucell->tpiba * ucell->tpiba; ucell->latvec.e11 = this->latvec[0]; diff --git a/source/source_estate/test/support/chgs1.cube b/source/source_estate/test/support/chg.cube similarity index 100% rename from source/source_estate/test/support/chgs1.cube rename to source/source_estate/test/support/chg.cube diff --git a/source/source_estate/test_mpi/CMakeLists.txt b/source/source_estate/test_mpi/CMakeLists.txt index 83a1aba943..6d2073592b 100644 --- a/source/source_estate/test_mpi/CMakeLists.txt +++ b/source/source_estate/test_mpi/CMakeLists.txt @@ -7,12 +7,12 @@ remove_definitions(-D__MLALGO) remove_definitions(-D_OPENMP) AddTest( - TARGET charge_mpi_test + TARGET MODULE_ESTATE_charge_mpi_test LIBS parameter ${math_libs} psi base device planewave SOURCES charge_mpi_test.cpp ../module_charge/charge_mpi.cpp ) -add_test(NAME charge_mpi_test_4np - COMMAND mpirun -np 4 ./charge_mpi_test; +add_test(NAME MODULE_ESTATE_charge_mpi_test_4np + COMMAND mpirun -np 4 ./MODULE_ESTATE_charge_mpi_test; WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} ) diff --git a/source/source_estate/update_pot.cpp b/source/source_estate/update_pot.cpp new file mode 100644 index 0000000000..f0f0ef861a --- /dev/null +++ b/source/source_estate/update_pot.cpp @@ -0,0 +1,20 @@ +#include "source_estate/update_pot.h" +#include "source_estate/cal_ux.h" + +void elecstate::update_pot(UnitCell& ucell, // unitcell + elecstate::ElecState* &pelec, // pointer of electrons + const Charge &chr, + const bool conv_esolver + ) // charge density +{ + if (!conv_esolver) + { + elecstate::cal_ux(ucell); + pelec->pot->update_from_charge(&chr, &ucell); + pelec->f_en.descf = pelec->cal_delta_escf(); + } + else + { + pelec->cal_converged(); + } +} diff --git a/source/source_estate/update_pot.h b/source/source_estate/update_pot.h new file mode 100644 index 0000000000..cce4c42428 --- /dev/null +++ b/source/source_estate/update_pot.h @@ -0,0 +1,17 @@ +#ifndef UPDATE_POT_H +#define UPDATE_POT_H + +#include "source_cell/unitcell.h" +#include "source_estate/elecstate.h" + +namespace elecstate +{ + +void update_pot(UnitCell& ucell, // unitcell + elecstate::ElecState* &pelec, // pointer of electrons + const Charge &chr, + const bool conv_esolver); // charge density +} + + +#endif diff --git a/source/source_hamilt/hamilt.h b/source/source_hamilt/hamilt.h index 634ff28b05..3d554c0fe6 100644 --- a/source/source_hamilt/hamilt.h +++ b/source/source_hamilt/hamilt.h @@ -7,21 +7,28 @@ #include "matrixblock.h" #include "source_psi/psi.h" #include "operator.h" +#include "hamilt_base.h" namespace hamilt { template -class Hamilt +class Hamilt : public HamiltBase { public: virtual ~Hamilt(){}; /// for target K point, update consequence of hPsi() and matrix() - virtual void updateHk(const int ik){return;} + void updateHk(const int ik) override { return; } /// refresh status of Hamiltonian, for example, refresh H(R) and S(R) in LCAO case - virtual void refresh(void){return;} + void refresh(bool yes = true) override { return; } + + /// get the class name + std::string get_classname() const override { return classname; } + + /// get the operator chain + void* get_ops() override { return static_cast(ops); } /// core function: for solving eigenvalues of Hamiltonian with iterative method virtual void hPsi( @@ -55,8 +62,6 @@ class Hamilt std::string classname = "none"; - int non_first_scf=0; - /// first node operator, add operations from each operators Operator* ops = nullptr; diff --git a/source/source_hamilt/hamilt_base.h b/source/source_hamilt/hamilt_base.h new file mode 100644 index 0000000000..06325bf050 --- /dev/null +++ b/source/source_hamilt/hamilt_base.h @@ -0,0 +1,52 @@ +#ifndef HAMILT_BASE_H +#define HAMILT_BASE_H + +#include + +namespace hamilt +{ + +/** + * @brief Base class for Hamiltonian + * + * This is a non-template base class for Hamilt. + * It provides a common interface for all Hamiltonian types, + * allowing ESolver to manage Hamiltonian without template parameters. + */ +class HamiltBase +{ + public: + virtual ~HamiltBase() {} + + /** + * @brief Update Hamiltonian for a specific k-point + * + * @param ik k-point index + */ + virtual void updateHk(const int ik) { return; } + + /** + * @brief Refresh the status of Hamiltonian + * + * @param yes whether to refresh + */ + virtual void refresh(bool yes = true) { return; } + + /** + * @brief Get the class name + * + * @return class name + */ + virtual std::string get_classname() const { return "none"; } + + /** + * @brief Get the operator chain (as void* to avoid template) + * + * @return pointer to operator chain + */ + virtual void* get_ops() { return nullptr; } +}; + +} // namespace hamilt + +#endif // HAMILT_BASE_H diff --git a/source/source_hamilt/module_ewald/H_Ewald_pw.cpp b/source/source_hamilt/module_ewald/H_Ewald_pw.cpp index 20e6762cc0..f2eb42f242 100644 --- a/source/source_hamilt/module_ewald/H_Ewald_pw.cpp +++ b/source/source_hamilt/module_ewald/H_Ewald_pw.cpp @@ -6,7 +6,6 @@ #include "source_base/parallel_reduce.h" #include "source_base/constants.h" #include "source_base/timer.h" -#include "source_pw/module_pwdft/global.h" double H_Ewald_pw::alpha=0.0; int H_Ewald_pw::mxr = 200; @@ -51,19 +50,7 @@ double H_Ewald_pw::compute_ewald(const UnitCell& cell, // buffer variable // used to optimize alpha - if(PARAM.inp.test_energy) - { - ModuleBase::GlobalFunc::OUT(GlobalV::ofs_running,"mxr",mxr); - } - //r = new ModuleBase::Vector3[mxr]; - //r2 = new double[mxr]; - //int* irr = new int[mxr]; - std::vector> vec_r(mxr); - std::vector vec_r2(mxr); - std::vector vec_irr(mxr); - int* irr = vec_irr.data(); - ModuleBase::Vector3* r = vec_r.data(); - double* r2 = vec_r2.data(); + // (arrays are allocated below, after rmax and mxr are determined) // (1) calculate total ionic charge double charge = 0.0; @@ -159,8 +146,33 @@ double H_Ewald_pw::compute_ewald(const UnitCell& cell, // R-space sum here (only done for the processor that contains G=0) ewaldr = 0.0; -#ifdef __MPI + + // Compute rmax and dynamically determine mxr (maximum number of r-vectors) + // to avoid buffer overflow for very small unit cells or high cutoff energies. rmax = 4.0 / sqrt(alpha) / cell.lat0; + { + double bg1[3]; + bg1[0] = cell.G.e11; bg1[1] = cell.G.e12; bg1[2] = cell.G.e13; + int nm1 = (int)(dnrm2(3, bg1, 1) * rmax + 2); + bg1[0] = cell.G.e21; bg1[1] = cell.G.e22; bg1[2] = cell.G.e23; + int nm2 = (int)(dnrm2(3, bg1, 1) * rmax + 2); + bg1[0] = cell.G.e31; bg1[1] = cell.G.e32; bg1[2] = cell.G.e33; + int nm3 = (int)(dnrm2(3, bg1, 1) * rmax + 2); + mxr = (2 * nm1 + 1) * (2 * nm2 + 1) * (2 * nm3 + 1); + } + + if(PARAM.inp.test_energy) + { + ModuleBase::GlobalFunc::OUT(GlobalV::ofs_running,"mxr",mxr); + } + std::vector> vec_r(mxr); + std::vector vec_r2(mxr); + std::vector vec_irr(mxr); + int* irr = vec_irr.data(); + ModuleBase::Vector3* r = vec_r.data(); + double* r2 = vec_r2.data(); + +#ifdef __MPI if(PARAM.inp.test_energy) { ModuleBase::GlobalFunc::OUT(GlobalV::ofs_running,"rmax(unit lat0)",rmax); @@ -221,8 +233,7 @@ double H_Ewald_pw::compute_ewald(const UnitCell& cell, #else if (rho_basis->ig_gge0 >= 0) { - rmax = 4.0 / sqrt(alpha) / cell.lat0; - if(PARAM.inp.test_energy) ModuleBase::GlobalFunc::OUT(GlobalV::ofs_running,"rmax(unit lat0)",rmax); + if(PARAM.inp.test_energy) ModuleBase::GlobalFunc::OUT(GlobalV::ofs_running,"rmax(unit lat0)",rmax); // with this choice terms up to ZiZj*erfc(4) are counted (erfc(4)=2x10^-8 int nt1=0; int nt2=0; @@ -386,9 +397,10 @@ void H_Ewald_pw::rgen( if (tt <= rmax * rmax && std::abs(tt) > 1.e-10) { - if (nrm > mxr) + if (nrm >= mxr) { - std::cerr << "\n rgen, too many r-vectors," << nrm; + ModuleBase::WARNING_QUIT("rgen", "too many r-vectors (nrm=" + std::to_string(nrm) + + ", mxr=" + std::to_string(mxr) + "). Please report this issue."); } r[nrm] = t; r2[nrm] = tt; diff --git a/source/source_hamilt/module_surchem/H_correction_pw.cpp b/source/source_hamilt/module_surchem/H_correction_pw.cpp index 06bb2eea25..289f00d07e 100644 --- a/source/source_hamilt/module_surchem/H_correction_pw.cpp +++ b/source/source_hamilt/module_surchem/H_correction_pw.cpp @@ -5,14 +5,15 @@ #include "source_base/timer.h" #include "source_hamilt/module_xc/xc_functional.h" #include "surchem.h" - -ModuleBase::matrix surchem::v_correction(const UnitCell& cell, - const Parallel_Grid& pgrid, - const ModulePW::PW_Basis* rho_basis, - const int& nspin, - const double* const* const rho, - const double* vlocal, - Structure_Factor* sf) +// Changing the interface to use an explicit output parameter clarifies lifetime management and avoids hidden allocations. +void surchem::v_correction(const UnitCell& cell, + const Parallel_Grid& pgrid, + const ModulePW::PW_Basis* rho_basis, + const int& nspin, + const double* const* const rho, + const double* vlocal, + Structure_Factor* sf, + ModuleBase::matrix& v) { ModuleBase::TITLE("surchem", "v_cor"); ModuleBase::timer::tick("surchem", "v_cor"); @@ -46,10 +47,15 @@ ModuleBase::matrix surchem::v_correction(const UnitCell& cell, cal_pseudo(cell, pgrid, rho_basis, porter_g, ps_totn, sf); - ModuleBase::matrix v(nspin, rho_basis->nrxx); + // ModuleBase::matrix v(nspin, rho_basis->nrxx); + if (v.nr != nspin || v.nc != rho_basis->nrxx) + { + v.create(nspin, rho_basis->nrxx); + } + ModuleBase::GlobalFunc::ZEROS(v.c, nspin * rho_basis->nrxx); - v += cal_vel(cell, rho_basis, total_n, ps_totn, nspin); - v += cal_vcav(cell, rho_basis, ps_totn, nspin); + cal_vel(cell, rho_basis, total_n, ps_totn, nspin, v); + cal_vcav(cell, rho_basis, ps_totn, nspin, v); delete[] porter; delete[] porter_g; @@ -58,5 +64,5 @@ ModuleBase::matrix surchem::v_correction(const UnitCell& cell, delete[] total_n; ModuleBase::timer::tick("surchem", "v_cor"); - return v; -} + return; +} \ No newline at end of file diff --git a/source/source_hamilt/module_surchem/cal_pseudo.cpp b/source/source_hamilt/module_surchem/cal_pseudo.cpp index 1e0a64c5b5..e58024d441 100644 --- a/source/source_hamilt/module_surchem/cal_pseudo.cpp +++ b/source/source_hamilt/module_surchem/cal_pseudo.cpp @@ -1,4 +1,3 @@ -#include "source_pw/module_pwdft/global.h" #include "surchem.h" // atom_in surchem::GetAtom; @@ -9,7 +8,8 @@ void surchem::gauss_charge(const UnitCell& cell, std::complex* N, Structure_Factor* sf) { - sf->setup_structure_factor(&cell, pgrid, rho_basis); // call strucFac(ntype,ngmc) + //sf->setup(&cell, pgrid, rho_basis); // this is strange, should be removed to other places, mohan add 2025-11-04 + //sf here was only needed in the test. const int ig0 = rho_basis->ig_gge0; // G=0 index for (int it = 0; it < cell.ntype; it++) { diff --git a/source/source_hamilt/module_surchem/cal_vcav.cpp b/source/source_hamilt/module_surchem/cal_vcav.cpp index 617da1376e..32f4db6f57 100644 --- a/source/source_hamilt/module_surchem/cal_vcav.cpp +++ b/source/source_hamilt/module_surchem/cal_vcav.cpp @@ -16,25 +16,26 @@ void lapl_rho(const double& tpiba2, // the formula is : rho(r)^prime = \int iG * rho(G)e^{iGr} dG for (int ig = 0; ig < rho_basis->npw; ig++) { gdrtmpg[ig] = rhog[ig]; -} + } + for(int i = 0 ; i < 3 ; ++i) { - // calculate the charge density gradient in reciprocal space. + // calculate the charge density gradient in reciprocal space. for (int ig = 0; ig < rho_basis->npw; ig++) { aux[ig] = gdrtmpg[ig] * pow(rho_basis->gcar[ig][i], 2); -} + } + // bring the gdr from G --> R rho_basis->recip2real(aux, aux); + // remember to multily 2pi/a0, which belongs to G vectors. for (int ir = 0; ir < rho_basis->nrxx; ir++) { lapn[ir] -= aux[ir].real() * tpiba2; -} - + } } delete[] gdrtmpg; delete[] aux; - return; } // calculates first derivative of the shape function in realspace @@ -66,6 +67,7 @@ void surchem::createcavity(const UnitCell& ucell, { ModuleBase::Vector3 *nablan = new ModuleBase::Vector3[rho_basis->nrxx]; ModuleBase::GlobalFunc::ZEROS(nablan, rho_basis->nrxx); + double *nablan_2 = new double[rho_basis->nrxx]; double *sqrt_nablan_2 = new double[rho_basis->nrxx]; double *lapn = new double[rho_basis->nrxx]; @@ -77,14 +79,14 @@ void surchem::createcavity(const UnitCell& ucell, // nabla n XC_Functional::grad_rho(ps_totn, nablan, rho_basis, ucell.tpiba); - // |\nabla n |^2 = nablan_2 + // |\nabla n |^2 = nablan_2 for (int ir = 0; ir < rho_basis->nrxx; ir++) { nablan_2[ir] = pow(nablan[ir].x, 2) + pow(nablan[ir].y, 2) + pow(nablan[ir].z, 2); } // Laplacian of n - lapl_rho(ucell.tpiba2,ps_totn, lapn, rho_basis); + lapl_rho(ucell.tpiba2, ps_totn, lapn, rho_basis); //------------------------------------------------------------- // add -Lap(n)/|\nabla n| to vwork and copy \sqrt(|\nabla n|^2) @@ -162,10 +164,13 @@ void surchem::createcavity(const UnitCell& ucell, delete[] ggn; } -ModuleBase::matrix surchem::cal_vcav(const UnitCell& ucell, - const ModulePW::PW_Basis* rho_basis, - std::complex* ps_totn, - int nspin) +//The interface is changed to use an explicit output parameter to +//clarify lifetime management and avoid hidden allocations. +void surchem::cal_vcav(const UnitCell& ucell, + const ModulePW::PW_Basis* rho_basis, + std::complex* ps_totn, + int nspin, + ModuleBase::matrix& v) { ModuleBase::TITLE("surchem", "cal_vcav"); ModuleBase::timer::tick("surchem", "cal_vcav"); @@ -175,12 +180,12 @@ ModuleBase::matrix surchem::cal_vcav(const UnitCell& ucell, createcavity(ucell, rho_basis, ps_totn, tmp_Vcav); - ModuleBase::GlobalFunc::ZEROS(Vcav.c, nspin * rho_basis->nrxx); if (nspin == 4) { for (int ir = 0; ir < rho_basis->nrxx; ir++) { - Vcav(0, ir) += tmp_Vcav[ir]; + Vcav(0, ir) = tmp_Vcav[ir]; + v(0, ir) += Vcav(0, ir); } } else @@ -189,12 +194,13 @@ ModuleBase::matrix surchem::cal_vcav(const UnitCell& ucell, { for (int ir = 0; ir < rho_basis->nrxx; ir++) { - Vcav(is, ir) += tmp_Vcav[ir]; + Vcav(is, ir) = tmp_Vcav[ir]; + v(is, ir) += Vcav(is, ir); } } } delete[] tmp_Vcav; ModuleBase::timer::tick("surchem", "cal_vcav"); - return Vcav; + return; } diff --git a/source/source_hamilt/module_surchem/cal_vel.cpp b/source/source_hamilt/module_surchem/cal_vel.cpp index 7790dd3341..83b72966a2 100644 --- a/source/source_hamilt/module_surchem/cal_vel.cpp +++ b/source/source_hamilt/module_surchem/cal_vel.cpp @@ -54,11 +54,14 @@ void eps_pot(const double* PS_TOTN_real, delete[] phisq; } -ModuleBase::matrix surchem::cal_vel(const UnitCell& cell, - const ModulePW::PW_Basis* rho_basis, - std::complex* TOTN, - std::complex* PS_TOTN, - int nspin) +//The interface is changed to use an explicit output parameter to +//clarify lifetime management and avoid hidden allocations. +void surchem::cal_vel(const UnitCell& cell, + const ModulePW::PW_Basis* rho_basis, + std::complex* TOTN, + std::complex* PS_TOTN, + int nspin, + ModuleBase::matrix& v) { ModuleBase::TITLE("surchem", "cal_vel"); ModuleBase::timer::tick("surchem", "cal_vel"); @@ -134,6 +137,7 @@ ModuleBase::matrix surchem::cal_vel(const UnitCell& cell, for (int ir = 0; ir < rho_basis->nrxx; ir++) { Vel(0, ir) += tmp_Vel[ir]; + v(0, ir) += Vel(0, ir); } } else @@ -143,6 +147,7 @@ ModuleBase::matrix surchem::cal_vel(const UnitCell& cell, for (int ir = 0; ir < rho_basis->nrxx; ir++) { Vel(is, ir) += tmp_Vel[ir]; + v(is, ir) += Vel(is, ir); } } } @@ -158,5 +163,5 @@ ModuleBase::matrix surchem::cal_vel(const UnitCell& cell, delete[] phi_tilda_R0; ModuleBase::timer::tick("surchem", "cal_vel"); - return Vel; -} + return; +} \ No newline at end of file diff --git a/source/source_hamilt/module_surchem/minimize_cg.cpp b/source/source_hamilt/module_surchem/minimize_cg.cpp index fb9fe63f73..da41053cd5 100644 --- a/source/source_hamilt/module_surchem/minimize_cg.cpp +++ b/source/source_hamilt/module_surchem/minimize_cg.cpp @@ -15,9 +15,8 @@ void surchem::minimize_cg(const UnitCell& ucell, double rinvLr = 0; // r * r double r2 = 0; - // precond loop parameter - int i = 0; ModuleBase::GlobalFunc::ZEROS(phi, rho_basis->npw); + // malloc vectors in G space std::complex *resid = new std::complex[rho_basis->npw]; std::complex *z = new std::complex[rho_basis->npw]; @@ -25,23 +24,21 @@ void surchem::minimize_cg(const UnitCell& ucell, std::complex *gsqu = new std::complex[rho_basis->npw]; std::complex *d = new std::complex[rho_basis->npw]; - std::complex *gradphi_x = new std::complex[rho_basis->npw]; - std::complex *gradphi_y = new std::complex[rho_basis->npw]; - std::complex *gradphi_z = new std::complex[rho_basis->npw]; + std::complex *gradphi_G_work = new std::complex[rho_basis->npw]; - std::complex *phi_work = new std::complex[rho_basis->npw]; + // ========================================================== + // PRE-ALLOCATION FOR LEPS2 (Avoids allocation inside loop) + // ========================================================== + ModuleBase::Vector3 *aux_grad_phi = new ModuleBase::Vector3[rho_basis->nrxx]; + double *aux_grad_grad_phi_real = new double[rho_basis->nrxx]; + // remove aux_grad_grad_phi_G and aux_lp_real ModuleBase::GlobalFunc::ZEROS(resid, rho_basis->npw); ModuleBase::GlobalFunc::ZEROS(z, rho_basis->npw); ModuleBase::GlobalFunc::ZEROS(lp, rho_basis->npw); ModuleBase::GlobalFunc::ZEROS(gsqu, rho_basis->npw); ModuleBase::GlobalFunc::ZEROS(d, rho_basis->npw); - - ModuleBase::GlobalFunc::ZEROS(gradphi_x, rho_basis->npw); - ModuleBase::GlobalFunc::ZEROS(gradphi_y, rho_basis->npw); - ModuleBase::GlobalFunc::ZEROS(gradphi_z, rho_basis->npw); - - ModuleBase::GlobalFunc::ZEROS(phi_work, rho_basis->npw); + ModuleBase::GlobalFunc::ZEROS(gradphi_G_work, rho_basis->npw); int count = 0; double gg = 0; @@ -65,7 +62,9 @@ void surchem::minimize_cg(const UnitCell& ucell, } // call leps to calculate div ( epsilon * grad ) phi - Leps2(ucell, rho_basis, phi, d_eps, gradphi_x, gradphi_y, gradphi_z, phi_work, lp); + // Updated Leps2 call with new buffers + Leps2(ucell, rho_basis, phi, d_eps, gradphi_G_work, lp, + aux_grad_phi, aux_grad_grad_phi_real); // the residue // r = A*phi + (chtot + N) @@ -85,8 +84,6 @@ void surchem::minimize_cg(const UnitCell& ucell, rinvLr = ModuleBase::GlobalFunc::ddot_real(rho_basis->npw, resid, z); r2 = ModuleBase::GlobalFunc::ddot_real(rho_basis->npw, resid, resid); - double r20 = r2; - // copy for (int ig = 0; ig < rho_basis->npw; ig++) { @@ -103,9 +100,10 @@ void surchem::minimize_cg(const UnitCell& ucell, break; } - Leps2(ucell, rho_basis, d, d_eps, gradphi_x, gradphi_y, gradphi_z, phi_work, lp); + // Updated Leps2 call inside loop + Leps2(ucell, rho_basis, d, d_eps, gradphi_G_work, lp, + aux_grad_phi, aux_grad_grad_phi_real); - // cout <<"lp after leps"<npw, d, lp); // update phi @@ -149,96 +147,70 @@ void surchem::minimize_cg(const UnitCell& ucell, // output: num of cg loop ncgsol = count; - // comment test res + // CLEANUP delete[] resid; delete[] z; delete[] lp; delete[] gsqu; delete[] d; - delete[] gradphi_x; - delete[] gradphi_y; - delete[] gradphi_z; - delete[] phi_work; + delete[] gradphi_G_work; + + // Clean up auxiliary buffers + delete[] aux_grad_phi; + // delete[] aux_grad_grad_phi_G; // Removed + // delete[] aux_lp_real; // Removed + delete[] aux_grad_grad_phi_real; } +// avoid creating large temporary matrices inside its iteration loop +// reduce the intermediate FFT related calls void surchem::Leps2(const UnitCell& ucell, const ModulePW::PW_Basis* rho_basis, std::complex* phi, - double* epsilon, // epsilon from shapefunc, dim=nrxx - std::complex* gradphi_x, // dim=ngmc - std::complex* gradphi_y, - std::complex* gradphi_z, - std::complex* phi_work, - std::complex* lp) + double* epsilon, // epsilon from shapefunc, dim=nrxx + std::complex* gradphi_G_work, + std::complex* lp, + ModuleBase::Vector3* grad_phi_R, // size: nrxx + double* aux_R) // size: nrxx { - ModuleBase::Vector3 *grad_phi = new ModuleBase::Vector3[rho_basis->nrxx]; - XC_Functional::grad_rho(phi, grad_phi, rho_basis, ucell.tpiba); - - for (int ir = 0; ir < rho_basis->nrxx; ir++) - { - grad_phi[ir].x *= epsilon[ir]; - grad_phi[ir].y *= epsilon[ir]; - grad_phi[ir].z *= epsilon[ir]; - } - std::vector lp_real(rho_basis->nrxx,0); - ModuleBase::GlobalFunc::ZEROS(lp, rho_basis->npw); + XC_Functional::grad_rho(phi, grad_phi_R, rho_basis, ucell.tpiba); - std::vector grad_grad_phi(rho_basis->nrxx,0); - std::complex *grad_grad_phi_G = new std::complex[rho_basis->npw]; - ModuleBase::Vector3 *tmp_vector3 = new ModuleBase::Vector3[rho_basis->nrxx]; - // x - ModuleBase::GlobalFunc::ZEROS(grad_grad_phi_G, rho_basis->npw); - ModuleBase::GlobalFunc::ZEROS(tmp_vector3, rho_basis->nrxx); - for (int ir = 0; ir < rho_basis->nrxx; ir++) - { - grad_grad_phi[ir] = grad_phi[ir].x; - } - rho_basis->real2recip(grad_grad_phi.data(), grad_grad_phi_G); - XC_Functional::grad_rho(grad_grad_phi_G, tmp_vector3, rho_basis, ucell.tpiba); for (int ir = 0; ir < rho_basis->nrxx; ir++) { - lp_real[ir] += tmp_vector3[ir].x; + grad_phi_R[ir].x *= epsilon[ir]; + grad_phi_R[ir].y *= epsilon[ir]; + grad_phi_R[ir].z *= epsilon[ir]; } - // y - grad_grad_phi.assign(grad_grad_phi.size(),0.0); - ModuleBase::GlobalFunc::ZEROS(grad_grad_phi_G, rho_basis->npw); - ModuleBase::GlobalFunc::ZEROS(tmp_vector3, rho_basis->nrxx); - for (int ir = 0; ir < rho_basis->nrxx; ir++) - { - grad_grad_phi[ir] = grad_phi[ir].y; - } - rho_basis->real2recip(grad_grad_phi.data(), grad_grad_phi_G); - XC_Functional::grad_rho(grad_grad_phi_G, tmp_vector3, rho_basis, ucell.tpiba); - for (int ir = 0; ir < rho_basis->nrxx; ir++) - { - lp_real[ir] += tmp_vector3[ir].y; - } - // z - grad_grad_phi.assign(grad_grad_phi.size(),0.0); - ModuleBase::GlobalFunc::ZEROS(grad_grad_phi_G, rho_basis->npw); - ModuleBase::GlobalFunc::ZEROS(tmp_vector3, rho_basis->nrxx); - for (int ir = 0; ir < rho_basis->nrxx; ir++) - { - grad_grad_phi[ir] = grad_phi[ir].z; - } - rho_basis->real2recip(grad_grad_phi.data(), grad_grad_phi_G); - XC_Functional::grad_rho(grad_grad_phi_G, tmp_vector3, rho_basis, ucell.tpiba); - for (int ir = 0; ir < rho_basis->nrxx; ir++) - { - lp_real[ir] += tmp_vector3[ir].z; - } + ModuleBase::GlobalFunc::ZEROS(lp, rho_basis->npw); + // R -> G + for (int ir = 0; ir < rho_basis->nrxx; ir++) aux_R[ir] = grad_phi_R[ir].x; + rho_basis->real2recip(aux_R, gradphi_G_work); + + for(int ig=0; ignpw; ig++) { + // Divergence in G space: div(F) -> i * G * F(G) + lp[ig] += ModuleBase::IMAG_UNIT * gradphi_G_work[ig] * rho_basis->gcar[ig][0]; // 0 = x + } - rho_basis->real2recip(lp_real.data(), lp); + for (int ir = 0; ir < rho_basis->nrxx; ir++) aux_R[ir] = grad_phi_R[ir].y; + rho_basis->real2recip(aux_R, gradphi_G_work); + + for(int ig=0; ignpw; ig++) { + lp[ig] += ModuleBase::IMAG_UNIT * gradphi_G_work[ig] * rho_basis->gcar[ig][1]; // 1 = y + } - delete[] grad_phi; - std::vector().swap(lp_real); - std::vector().swap(grad_grad_phi); + for (int ir = 0; ir < rho_basis->nrxx; ir++) aux_R[ir] = grad_phi_R[ir].z; + rho_basis->real2recip(aux_R, gradphi_G_work); + + for(int ig=0; ignpw; ig++) { + lp[ig] += ModuleBase::IMAG_UNIT * gradphi_G_work[ig] * rho_basis->gcar[ig][2]; // 2 = z + } - delete[] grad_grad_phi_G; - delete[] tmp_vector3; -} + for(int ig=0; ignpw; ig++) { + lp[ig] *= ucell.tpiba; + } +} \ No newline at end of file diff --git a/source/source_hamilt/module_surchem/surchem.cpp b/source/source_hamilt/module_surchem/surchem.cpp index 60db451b41..1f2a66ef86 100644 --- a/source/source_hamilt/module_surchem/surchem.cpp +++ b/source/source_hamilt/module_surchem/surchem.cpp @@ -50,9 +50,12 @@ void surchem::clear() this->TOTN_real = nullptr; this->delta_phi = nullptr; this->epspot = nullptr; + + this->Vcav.create(0, 0); + this->Vel.create(0, 0); } surchem::~surchem() { this->clear(); -} +} \ No newline at end of file diff --git a/source/source_hamilt/module_surchem/surchem.h b/source/source_hamilt/module_surchem/surchem.h index e2358449c1..b272d0f70e 100644 --- a/source/source_hamilt/module_surchem/surchem.h +++ b/source/source_hamilt/module_surchem/surchem.h @@ -17,9 +17,9 @@ class surchem surchem(); ~surchem(); - double* TOTN_real; - double* delta_phi; - double* epspot; + double* TOTN_real = nullptr; + double* delta_phi = nullptr; + double* epspot = nullptr; ModuleBase::matrix Vcav; ModuleBase::matrix Vel; double qs; @@ -62,16 +62,18 @@ class surchem const std::complex* PS_TOTN, double* vwork); - ModuleBase::matrix cal_vcav(const UnitCell& ucell, - const ModulePW::PW_Basis* rho_basis, - std::complex* PS_TOTN, - int nspin); + void cal_vcav(const UnitCell& ucell, + const ModulePW::PW_Basis* rho_basis, + std::complex* PS_TOTN, + int nspin, + ModuleBase::matrix& v); - ModuleBase::matrix cal_vel(const UnitCell& cell, - const ModulePW::PW_Basis* rho_basis, - std::complex* TOTN, - std::complex* PS_TOTN, - int nspin); + void cal_vel(const UnitCell& cell, + const ModulePW::PW_Basis* rho_basis, + std::complex* TOTN, + std::complex* PS_TOTN, + int nspin, + ModuleBase::matrix& v); double cal_Ael(const UnitCell& cell, const int& nrxx, // num. of real space grids on current core @@ -96,19 +98,19 @@ class surchem const ModulePW::PW_Basis* rho_basis, std::complex* phi, double* epsilon, // epsilon from shapefunc, dim=nrxx - std::complex* gradphi_x, // dim=ngmc - std::complex* gradphi_y, - std::complex* gradphi_z, - std::complex* phi_work, - std::complex* lp); - - ModuleBase::matrix v_correction(const UnitCell& cell, - const Parallel_Grid& pgrid, - const ModulePW::PW_Basis* rho_basis, - const int& nspin, - const double* const* const rho, - const double* vlocal, - Structure_Factor* sf); + std::complex* gradphi_G_work, + std::complex* lp, + ModuleBase::Vector3* grad_phi_R, // size: nrxx + double* aux_R); + + void v_correction(const UnitCell& cell, + const Parallel_Grid& pgrid, + const ModulePW::PW_Basis* rho_basis, + const int& nspin, + const double* const* const rho, + const double* vlocal, + Structure_Factor* sf, + ModuleBase::matrix& v); void test_V_to_N(ModuleBase::matrix& v, const UnitCell& cell, @@ -134,4 +136,4 @@ class surchem private: }; -#endif +#endif \ No newline at end of file diff --git a/source/source_hamilt/module_surchem/test/CMakeLists.txt b/source/source_hamilt/module_surchem/test/CMakeLists.txt index f08e30f347..eb667b7c2a 100644 --- a/source/source_hamilt/module_surchem/test/CMakeLists.txt +++ b/source/source_hamilt/module_surchem/test/CMakeLists.txt @@ -7,13 +7,13 @@ list(APPEND depend_files ) AddTest( - TARGET surchem_cal_epsilon + TARGET MODULE_HAMILT_surchem_cal_epsilon LIBS parameter ${math_libs} planewave device base SOURCES cal_epsilon_test.cpp ../cal_epsilon.cpp ../surchem.cpp ) AddTest( - TARGET surchem_cal_pseudo + TARGET MODULE_HAMILT_surchem_cal_pseudo LIBS parameter ${math_libs} planewave device base psi SOURCES cal_pseudo_test.cpp ../cal_pseudo.cpp ../surchem.cpp ../cal_epsilon.cpp ../../../source_pw/module_pwdft/structure_factor.cpp ../../../source_pw/module_pwdft/parallel_grid.cpp @@ -21,13 +21,13 @@ AddTest( ) AddTest( - TARGET surchem_cal_totn + TARGET MODULE_HAMILT_surchem_cal_totn LIBS parameter ${math_libs} planewave device base SOURCES cal_totn_test.cpp ../cal_totn.cpp ../surchem.cpp ../../../source_pw/module_pwdft/parallel_grid.cpp ) AddTest( - TARGET surchem_cal_vcav + TARGET MODULE_HAMILT_surchem_cal_vcav LIBS parameter ${math_libs} planewave device base container SOURCES cal_vcav_test.cpp ../cal_vcav.cpp ../surchem.cpp ../../../source_pw/module_pwdft/parallel_grid.cpp ../../module_xc/xc_functional_gradcorr.cpp ../../module_xc/xc_functional.cpp @@ -42,7 +42,7 @@ AddTest( ) AddTest( - TARGET surchem_cal_vel + TARGET MODULE_HAMILT_surchem_cal_vel LIBS parameter ${math_libs} planewave device base container SOURCES cal_vel_test.cpp ../cal_vel.cpp ../surchem.cpp ../cal_epsilon.cpp ../minimize_cg.cpp ../../../source_pw/module_pwdft/parallel_grid.cpp ../../module_xc/xc_functional_gradcorr.cpp ../../module_xc/xc_functional.cpp diff --git a/source/source_hamilt/module_surchem/test/cal_pseudo_test.cpp b/source/source_hamilt/module_surchem/test/cal_pseudo_test.cpp index e60b192719..2bd8025f7d 100644 --- a/source/source_hamilt/module_surchem/test/cal_pseudo_test.cpp +++ b/source/source_hamilt/module_surchem/test/cal_pseudo_test.cpp @@ -76,6 +76,8 @@ TEST_F(cal_pseudo_test, gauss_charge) Structure_Factor sf; sf.nbspline = -1; + sf.setup(&ucell, pgrid, &pwtest); + solvent_model.gauss_charge(ucell, pgrid, &pwtest, N, &sf); EXPECT_NEAR(N[14].real(), 0.002, 1e-9); @@ -126,6 +128,7 @@ TEST_F(cal_pseudo_test, cal_pseudo) Structure_Factor sf; sf.nbspline = -1; + sf.setup(&ucell, pgrid, &pwtest); // sf.setup is moved to here std::complex* Porter_g = new std::complex[npw]; ModuleBase::GlobalFunc::ZEROS(Porter_g, npw); @@ -160,4 +163,4 @@ int main(int argc, char** argv) #endif return result; -} +} \ No newline at end of file diff --git a/source/source_hamilt/module_surchem/test/cal_vcav_test.cpp b/source/source_hamilt/module_surchem/test/cal_vcav_test.cpp index 65fe839aa2..9a0af0432d 100644 --- a/source/source_hamilt/module_surchem/test/cal_vcav_test.cpp +++ b/source/source_hamilt/module_surchem/test/cal_vcav_test.cpp @@ -253,12 +253,14 @@ TEST_F(cal_vcav_test, cal_vcav) int nspin = 2; solvent_model.Vcav.create(nspin, nrxx); - solvent_model.cal_vcav(ucell, &pwtest, PS_TOTN, nspin); + ModuleBase::matrix v_res(nspin, nrxx); + ModuleBase::GlobalFunc::ZEROS(v_res.c, nspin * nrxx); + solvent_model.cal_vcav(ucell, &pwtest, PS_TOTN, nspin, v_res); - EXPECT_NEAR(solvent_model.Vcav(0, 0), 4.8556305312, 1e-10); - EXPECT_NEAR(solvent_model.Vcav(0, 1), -2.1006480538, 1e-10); - EXPECT_NEAR(solvent_model.Vcav(1, 0), 4.8556305312, 1e-10); - EXPECT_NEAR(solvent_model.Vcav(1, 1), -2.1006480538, 1e-10); + EXPECT_NEAR(v_res(0, 0), 4.8556305312, 1e-10); + EXPECT_NEAR(v_res(0, 1), -2.1006480538, 1e-10); + EXPECT_NEAR(v_res(1, 0), 4.8556305312, 1e-10); + EXPECT_NEAR(v_res(1, 1), -2.1006480538, 1e-10); delete[] PS_TOTN; } @@ -279,4 +281,4 @@ int main(int argc, char** argv) #endif return result; -} +} \ No newline at end of file diff --git a/source/source_hamilt/module_surchem/test/cal_vel_test.cpp b/source/source_hamilt/module_surchem/test/cal_vel_test.cpp index 60d925b3fb..818e52dbe6 100644 --- a/source/source_hamilt/module_surchem/test/cal_vel_test.cpp +++ b/source/source_hamilt/module_surchem/test/cal_vel_test.cpp @@ -220,10 +220,13 @@ TEST_F(cal_vel_test, cal_vel) solvent_model.TOTN_real = new double[nrxx]; solvent_model.delta_phi = new double[nrxx]; - solvent_model.cal_vel(ucell, &pwtest, TOTN, PS_TOTN, nspin); + ModuleBase::matrix v_res(nspin, nrxx); + ModuleBase::GlobalFunc::ZEROS(v_res.c, nspin * nrxx); - EXPECT_NEAR(solvent_model.Vel(0, 0), 0.0532168705, 1e-10); - EXPECT_NEAR(solvent_model.Vel(0, 1), 0.0447818244, 1e-10); + solvent_model.cal_vel(ucell, &pwtest, TOTN, PS_TOTN, nspin, v_res); + + EXPECT_NEAR(v_res(0, 0), 0.0532168705, 1e-10); + EXPECT_NEAR(v_res(0, 1), 0.0447818244, 1e-10); delete[] PS_TOTN; delete[] TOTN; @@ -245,4 +248,4 @@ int main(int argc, char** argv) #endif return result; -} +} \ No newline at end of file diff --git a/source/source_hamilt/module_surchem/test/setcell.h b/source/source_hamilt/module_surchem/test/setcell.h index 308a557319..ebd38bcc09 100644 --- a/source/source_hamilt/module_surchem/test/setcell.h +++ b/source/source_hamilt/module_surchem/test/setcell.h @@ -27,6 +27,10 @@ Atom_pseudo::Atom_pseudo(){}; Atom_pseudo::~Atom_pseudo(){}; pseudo::pseudo(){}; pseudo::~pseudo(){}; +SepPot::SepPot(){} +SepPot::~SepPot(){} +Sep_Cell::Sep_Cell() noexcept {} +Sep_Cell::~Sep_Cell() noexcept {} /* Structure_Factor::Structure_Factor(){}; Structure_Factor::~Structure_Factor(){}; @@ -46,7 +50,7 @@ class Setcell ucell.atoms[1].ncpp.psd = "O"; ucell.lat0 = 1; - ucell.lat0_angstrom = ucell.lat0 * 0.529177; + ucell.lat0_angstrom = ucell.lat0 * ModuleBase::BOHR_TO_A; ucell.tpiba = ModuleBase::TWO_PI / ucell.lat0; ucell.tpiba2 = ucell.tpiba * ucell.tpiba; @@ -85,4 +89,4 @@ class Setcell }; }; -#endif \ No newline at end of file +#endif diff --git a/source/source_hamilt/module_vdw/test/CMakeLists.txt b/source/source_hamilt/module_vdw/test/CMakeLists.txt index 504a0310ae..7e5c825128 100644 --- a/source/source_hamilt/module_vdw/test/CMakeLists.txt +++ b/source/source_hamilt/module_vdw/test/CMakeLists.txt @@ -6,7 +6,7 @@ install(FILES c6.txt DESTINATION ${CMAKE_CURRENT_BINARY_DIR}) install(FILES r0.txt DESTINATION ${CMAKE_CURRENT_BINARY_DIR}) AddTest( - TARGET vdwTest + TARGET MODULE_HAMILT_vdwTest LIBS parameter ${math_libs} base device vdw SOURCES vdw_test.cpp ) diff --git a/source/source_hamilt/module_vdw/test/vdw_test.cpp b/source/source_hamilt/module_vdw/test/vdw_test.cpp index 06bfa00571..5d66cb53a5 100644 --- a/source/source_hamilt/module_vdw/test/vdw_test.cpp +++ b/source/source_hamilt/module_vdw/test/vdw_test.cpp @@ -20,10 +20,10 @@ /** * - Tested functions: * - vdw::make_vdw(): -* Based on the value of INPUT.vdw_method, construct +* Based on the value of INPUT.vdw_method, construct * Vdwd2 or Vdwd3 class, and do the initialization. * - vdw::get_energy()/vdw::get_force()/vdw::get_stress(): -* Calculate the VDW (d2, d3_0 and d3_bj types) enerygy, force, stress. +* Calculate the VDW (d2, d3_0 and d3_bj types) enerygy, force, stress. * - Vdwd2Parameters::initial_parameters() * - Vdwd3Parameters::initial_parameters() */ @@ -60,6 +60,10 @@ Magnetism::~Magnetism() } InfoNonlocal::InfoNonlocal(){} InfoNonlocal::~InfoNonlocal(){} +SepPot::SepPot(){} +SepPot::~SepPot(){} +Sep_Cell::Sep_Cell() noexcept {} +Sep_Cell::~Sep_Cell() noexcept {} struct atomtype_ { @@ -130,7 +134,7 @@ void construct_ucell(stru_ &stru, UnitCell &ucell) { ucell.itia2iat(it, ia) = iat; ++iat; - } + } } } @@ -211,7 +215,7 @@ TEST_F(vdwd2Test, OneAtomWarning) GlobalV::ofs_warning.open("warning.log"); std::ifstream ifs; std::string output; - + std::unique_ptr vdw_test = vdw::make_vdw(ucell1, input); GlobalV::ofs_warning.close(); @@ -230,7 +234,7 @@ TEST_F(vdwd2Test, D2ReadFile) input.vdw_C6_file = "c6.txt"; input.vdw_R0_file = "r0.txt"; vdw::Vdwd2 vdwd2_test(ucell); - + vdwd2_test.parameter().initial_parameters(input); double Si_C6 = 9.13*1e6 / (ModuleBase::ELECTRONVOLT_SI * ModuleBase::NA) / pow(ModuleBase::BOHR_TO_A, 6)/ ModuleBase::Ry_to_eV; EXPECT_NEAR(vdwd2_test.parameter().C6_["Si"], Si_C6,1e-13); @@ -242,7 +246,7 @@ TEST_F(vdwd2Test, D2ReadFileError) input.vdw_C6_file = "c6_wrong.txt"; input.vdw_R0_file = "r0_wrong.txt"; vdw::Vdwd2 vdwd2_test(ucell); - + testing::internal::CaptureStdout(); EXPECT_EXIT(vdwd2_test.parameter().C6_input(input.vdw_C6_file, input.vdw_C6_unit), ::testing::ExitedWithCode(1), ""); EXPECT_EXIT(vdwd2_test.parameter().R0_input(input.vdw_R0_file, input.vdw_R0_unit), ::testing::ExitedWithCode(1), ""); @@ -284,7 +288,7 @@ TEST_F(vdwd2Test, D2RadiusUnitAngstrom) { input.vdw_cutoff_radius = "56.6918"; input.vdw_radius_unit = "Angstrom"; - + vdw::Vdwd2 vdwd2_test(ucell); vdwd2_test.parameter().initial_parameters(input); EXPECT_EQ(vdwd2_test.parameter().radius_, 56.6918/ModuleBase::BOHR_TO_A); @@ -294,32 +298,32 @@ TEST_F(vdwd2Test, D2CutoffTypePeriod) { input.vdw_cutoff_type = "period"; input.vdw_cutoff_period = {3,3,3}; - + vdw::Vdwd2 vdwd2_test(ucell); vdwd2_test.parameter().initial_parameters(input); EXPECT_EQ(vdwd2_test.parameter().period(), input.vdw_cutoff_period); } TEST_F(vdwd2Test, D2R0ZeroQuit) -{ +{ vdw::Vdwd2 vdwd2_test(ucell); vdwd2_test.parameter().initial_parameters(input); vdwd2_test.parameter().R0_["Si"] = 0.0; - + testing::internal::CaptureStdout(); EXPECT_EXIT(vdwd2_test.get_energy(), ::testing::ExitedWithCode(1), ""); std::string output = testing::internal::GetCapturedStdout(); } TEST_F(vdwd2Test, D2GetEnergy) -{ +{ auto vdw_solver = vdw::make_vdw(ucell, input); double ene = vdw_solver->get_energy(); EXPECT_NEAR(ene,-0.034526673470525196,1E-10); } TEST_F(vdwd2Test, D2GetForce) -{ +{ auto vdw_solver = vdw::make_vdw(ucell, input); std::vector> force = vdw_solver->get_force(); EXPECT_NEAR(force[0].x, -0.00078824525563651242,1e-12); @@ -331,7 +335,7 @@ TEST_F(vdwd2Test, D2GetForce) } TEST_F(vdwd2Test, D2GetStress) -{ +{ auto vdw_solver = vdw::make_vdw(ucell, input); ModuleBase::Matrix3 stress = vdw_solver->get_stress(); EXPECT_NEAR(stress.e11, -0.00020532319044269705,1e-12); @@ -394,7 +398,7 @@ TEST_F(vdwd3Test, D30Default) EXPECT_EQ(vdwd3_test.parameter().version(), "d3_0"); EXPECT_EQ(vdwd3_test.parameter().model(), "radius"); EXPECT_EQ(vdwd3_test.parameter().rthr2(), std::pow(95, 2)); - EXPECT_EQ(vdwd3_test.parameter().cn_thr2(), std::pow(40, 2)); + EXPECT_EQ(vdwd3_test.parameter().cn_thr2(), std::pow(40, 2)); } TEST_F(vdwd3Test, D30UnitA) @@ -407,7 +411,7 @@ TEST_F(vdwd3Test, D30UnitA) vdwd3_test.parameter().initial_parameters(xc, input); EXPECT_EQ(vdwd3_test.parameter().rthr2(), std::pow(95/ModuleBase::BOHR_TO_A, 2)); - EXPECT_EQ(vdwd3_test.parameter().cn_thr2(), std::pow(40/ModuleBase::BOHR_TO_A, 2)); + EXPECT_EQ(vdwd3_test.parameter().cn_thr2(), std::pow(40/ModuleBase::BOHR_TO_A, 2)); } TEST_F(vdwd3Test, D30Period) @@ -421,18 +425,18 @@ TEST_F(vdwd3Test, D30Period) std::vector rep_vdw_ref = {input.vdw_cutoff_period.x, input.vdw_cutoff_period.y, input.vdw_cutoff_period.z}; EXPECT_EQ(vdwd3_test.parameter().period(), input.vdw_cutoff_period); - EXPECT_EQ(vdwd3_test.rep_vdw_, rep_vdw_ref); + EXPECT_EQ(vdwd3_test.rep_vdw_, rep_vdw_ref); } TEST_F(vdwd3Test, D30GetEnergy) -{ +{ auto vdw_solver = vdw::make_vdw(ucell, input); double ene = vdw_solver->get_energy(); EXPECT_NEAR(ene,-0.20932367230529664,1E-10); } TEST_F(vdwd3Test, D30GetForce) -{ +{ auto vdw_solver = vdw::make_vdw(ucell, input); std::vector> force = vdw_solver->get_force(); EXPECT_NEAR(force[0].x, -0.032450975169023302,1e-12); @@ -444,7 +448,7 @@ TEST_F(vdwd3Test, D30GetForce) } TEST_F(vdwd3Test, D30GetStress) -{ +{ auto vdw_solver = vdw::make_vdw(ucell, input); ModuleBase::Matrix3 stress = vdw_solver->get_stress(); EXPECT_NEAR(stress.e11, -0.0011141545452036336,1e-12); @@ -459,15 +463,15 @@ TEST_F(vdwd3Test, D30GetStress) } TEST_F(vdwd3Test, D3bjGetEnergy) -{ - input.vdw_method = "d3_bj"; +{ + input.vdw_method = "d3_bj"; auto vdw_solver = vdw::make_vdw(ucell, input); double ene = vdw_solver->get_energy(); EXPECT_NEAR(ene,-0.047458675421836918,1E-10); } TEST_F(vdwd3Test, D3bjGetForce) -{ +{ input.vdw_method = "d3_bj"; auto vdw_solver = vdw::make_vdw(ucell, input); std::vector> force = vdw_solver->get_force(); @@ -480,7 +484,7 @@ TEST_F(vdwd3Test, D3bjGetForce) } TEST_F(vdwd3Test, D3bjGetStress) -{ +{ input.vdw_method = "d3_bj"; auto vdw_solver = vdw::make_vdw(ucell, input); ModuleBase::Matrix3 stress = vdw_solver->get_stress(); @@ -530,14 +534,14 @@ class vdwd3abcTest: public testing::Test TEST_F(vdwd3abcTest, D30GetEnergy) -{ +{ auto vdw_solver = vdw::make_vdw(ucell, input); double ene = vdw_solver->get_energy(); EXPECT_NEAR(ene,-0.11487062308916372,1E-10); } TEST_F(vdwd3abcTest, D30GetForce) -{ +{ auto vdw_solver = vdw::make_vdw(ucell, input); std::vector> force = vdw_solver->get_force(); EXPECT_NEAR(force[0].x, 0.030320738678429094,1e-12); @@ -549,7 +553,7 @@ TEST_F(vdwd3abcTest, D30GetForce) } TEST_F(vdwd3abcTest, D30GetStress) -{ +{ auto vdw_solver = vdw::make_vdw(ucell, input); ModuleBase::Matrix3 stress = vdw_solver->get_stress(); EXPECT_NEAR(stress.e11, -0.00023421562840819491,1e-12); @@ -564,7 +568,7 @@ TEST_F(vdwd3abcTest, D30GetStress) } TEST_F(vdwd3abcTest, D3bjGetEnergy) -{ +{ input.vdw_method = "d3_bj"; auto vdw_solver = vdw::make_vdw(ucell, input); double ene = vdw_solver->get_energy(); @@ -572,7 +576,7 @@ TEST_F(vdwd3abcTest, D3bjGetEnergy) } TEST_F(vdwd3abcTest, D3bjGetForce) -{ +{ input.vdw_method = "d3_bj"; auto vdw_solver = vdw::make_vdw(ucell, input); std::vector> force = vdw_solver->get_force(); @@ -585,7 +589,7 @@ TEST_F(vdwd3abcTest, D3bjGetForce) } TEST_F(vdwd3abcTest, D3bjGetStress) -{ +{ input.vdw_method = "d3_bj"; auto vdw_solver = vdw::make_vdw(ucell, input); ModuleBase::Matrix3 stress = vdw_solver->get_stress(); diff --git a/source/source_hamilt/module_vdw/vdwd2.h b/source/source_hamilt/module_vdw/vdwd2.h index 4315204288..4e1e836d57 100644 --- a/source/source_hamilt/module_vdw/vdwd2.h +++ b/source/source_hamilt/module_vdw/vdwd2.h @@ -36,9 +36,9 @@ class Vdwd2 : public Vdw int yidx = para_.period().y / 2; int zidx = para_.period().z / 2; - for (int it1 = 0; it1 != ucell_.ntype; ++it1) + for (int it1 = 0; it1 < ucell_.ntype; ++it1) { - for (int it2 = 0; it2 != ucell_.ntype; ++it2) + for (int it2 = 0; it2 < ucell_.ntype; ++it2) { const double C6_product = sqrt(para_.C6().at(ucell_.atoms[it1].ncpp.psd) * para_.C6().at(ucell_.atoms[it2].ncpp.psd)) diff --git a/source/source_hamilt/module_vdw/vdwd2_parameters.cpp b/source/source_hamilt/module_vdw/vdwd2_parameters.cpp index a562244be3..3ac48e1819 100644 --- a/source/source_hamilt/module_vdw/vdwd2_parameters.cpp +++ b/source/source_hamilt/module_vdw/vdwd2_parameters.cpp @@ -50,7 +50,7 @@ void Vdwd2Parameters::C6_input(const std::string &file, const std::string &unit) ModuleBase::WARNING_QUIT("Vdwd2::C6_input", "Can not find the file " + ModuleBase::GlobalFunc::TO_STRING(file)); std::string element; - double value; + double value = 0.0; while (ifs >> element >> value) C6_[element] = value; ifs.close(); @@ -77,7 +77,7 @@ void Vdwd2Parameters::R0_input(const std::string &file, const std::string &unit) ModuleBase::WARNING_QUIT("Vdwd2::R0_input", "Can not find the file " + ModuleBase::GlobalFunc::TO_STRING(file)); std::string element; - double value; + double value = 0.0; while (ifs >> element >> value) R0_[element] = value; ifs.close(); diff --git a/source/source_hamilt/module_vdw/vdwd3.cpp b/source/source_hamilt/module_vdw/vdwd3.cpp index 95aeac8226..66245e0f09 100644 --- a/source/source_hamilt/module_vdw/vdwd3.cpp +++ b/source/source_hamilt/module_vdw/vdwd3.cpp @@ -88,7 +88,7 @@ void Vdwd3::cal_energy() ModuleBase::timer::tick("Vdwd3", "cal_energy"); init(); - int ij; + int ij = 0; double c6 = 0.0, c8 = 0.0, r2 = 0.0, r6 = 0.0, r8 = 0.0, rr = 0.0, damp6 = 0.0, damp8 = 0.0; double e6 = 0.0, e8 = 0.0, eabc = 0.0; std::vector cc6ab(ucell_.nat * ucell_.nat), cn(ucell_.nat); @@ -96,7 +96,7 @@ void Vdwd3::cal_energy() ModuleBase::Vector3 tau; if (para_.version() == "d3_0") // DFT-D3(zero-damping) { - double tmp; + double tmp = 0.0; for (int iat = 0; iat != ucell_.nat - 1; iat++) { for (int jat = iat + 1; jat != ucell_.nat; jat++) { @@ -178,7 +178,7 @@ void Vdwd3::cal_energy() } // end d3_0 else if (para_.version() == "d3_bj") // DFT-D3(BJ-damping) { - double r42; + double r42 = 0.0; for (int iat = 0; iat != ucell_.nat; iat++) { for (int jat = iat + 1; jat != ucell_.nat; jat++) @@ -860,7 +860,7 @@ void Vdwd3::pbc_gdisp(std::vector> &g, ModuleBase::m } // end d3_0 else if (para_.version() == "d3_bj") { - double r4; + double r4 = 0.0; for (int iat = 0; iat != ucell_.nat; iat++) { get_dc6_dcnij(para_.mxc()[iz_[iat]], para_.mxc()[iz_[iat]], cn[iat], cn[iat], diff --git a/source/source_hamilt/module_vdw/vdwd3_autoset_xcparam.cpp b/source/source_hamilt/module_vdw/vdwd3_autoset_xcparam.cpp index 8e520c6a41..c2c68bb4a1 100644 --- a/source/source_hamilt/module_vdw/vdwd3_autoset_xcparam.cpp +++ b/source/source_hamilt/module_vdw/vdwd3_autoset_xcparam.cpp @@ -243,6 +243,9 @@ const std::pair> zero_data[] = { {"b97_d", {1.0, 0.892, 0.892, 0.909, 1.0, 1.0, 1.0, 14.0, 0.0}}, {"b973c", {1.0, 1.06, 1.06, 1.5, 1.0, 1.0, 1.0, 14.0, 0.0}}, {"pbe", {1.0, 1.217, 1.217, 0.722, 1.0, 1.0, 1.0, 14.0, 0.0}}, + {"pbesol", {1.0, 1.345, 1.345, 0.612, 1.0, 1.0, 1.0, 14.0, 0.0}}, + // issue#6646, d3 zero-damping support for PBEsol, + // parameters retrived from https://www.chemie.uni-bonn.de/grimme/de/software/dft-d3/zero_damping {"rpw86pbe", {1.0, 1.224, 1.224, 0.901, 1.0, 1.0, 1.0, 14.0, 0.0}}, {"b3lyp", {1.0, 1.261, 1.261, 1.703, 1.0, 1.0, 1.0, 14.0, 0.0}}, {"tpss", {1.0, 1.166, 1.166, 1.105, 1.0, 1.0, 1.0, 14.0, 0.0}}, diff --git a/source/source_hamilt/module_vdw/vdwd3_parameters_tab.cpp b/source/source_hamilt/module_vdw/vdwd3_parameters_tab.cpp index bd06018e6e..534f845ea4 100644 --- a/source/source_hamilt/module_vdw/vdwd3_parameters_tab.cpp +++ b/source/source_hamilt/module_vdw/vdwd3_parameters_tab.cpp @@ -11,7 +11,7 @@ namespace vdw void Vdwd3Parameters::init_C6() { - std::vector C6_tmp = { + static const double C6_tmp[] = { 0.30267000E+1,0.100E+1,0.100E+1,0.91180000E+0,0.91180000E+0 ,0.20835000E+1,0.200E+1,0.100E+1,0.00000000E+0,0.91180000E+0 ,0.15583000E+1,0.200E+1,0.200E+1,0.00000000E+0,0.00000000E+0 @@ -32475,7 +32475,7 @@ void Vdwd3Parameters::init_rcov() void Vdwd3Parameters::init_r0ab() { - std::vector r = { + static const double r[] = { 2.1823, 1.8547, 1.7347, 2.9086, 2.5732, 3.4956, 2.3550, 2.5095, 2.9802, 3.0982, 2.5141, 2.3917, 2.9977, 2.9484, 3.2160, 2.4492, 2.2527, 3.1933, 3.0214, 2.9531, 2.9103, diff --git a/source/source_hamilt/module_xc/CMakeLists.txt b/source/source_hamilt/module_xc/CMakeLists.txt index 4db1ef083d..9d38b59fa2 100644 --- a/source/source_hamilt/module_xc/CMakeLists.txt +++ b/source/source_hamilt/module_xc/CMakeLists.txt @@ -17,6 +17,7 @@ add_library( xc_functional_libxc_wrapper_xc.cpp xc_functional_libxc_wrapper_gcxc.cpp xc_functional_libxc_wrapper_tauxc.cpp + exx_info.cpp ) if(ENABLE_COVERAGE) diff --git a/source/source_hamilt/module_xc/exx_info.cpp b/source/source_hamilt/module_xc/exx_info.cpp new file mode 100644 index 0000000000..8416891052 --- /dev/null +++ b/source/source_hamilt/module_xc/exx_info.cpp @@ -0,0 +1,9 @@ +#include "exx_info.h" + +//---------------------------------------------------------- +// init "GLOBAL CLASS" object +//---------------------------------------------------------- +namespace GlobalC +{ + Exx_Info exx_info; +} \ No newline at end of file diff --git a/source/source_hamilt/module_xc/exx_info.h b/source/source_hamilt/module_xc/exx_info.h index 0b427b438d..c9584f9b60 100644 --- a/source/source_hamilt/module_xc/exx_info.h +++ b/source/source_hamilt/module_xc/exx_info.h @@ -2,7 +2,6 @@ #define EXX_INFO_H #include "source_lcao/module_ri/conv_coulomb_pot_k.h" -#include "xc_functional.h" #include #include @@ -67,8 +66,7 @@ struct Exx_Info double ccp_rmesh_times = 10; bool exx_symmetry_realspace = true; double kmesh_times = 4; - - int abfs_Lmax = 0; // tmp + double Cs_inv_thr = -1; Exx_Info_RI(const Exx_Info::Exx_Info_Global& info_global) : coulomb_param(info_global.coulomb_param) @@ -79,9 +77,14 @@ struct Exx_Info struct Exx_Info_Opt_ABFs { - int abfs_Lmax = 0; // tmp + int abfs_Lmax = 0; double ecut_exx = 60; - double tolerence = 1E-2; + double tolerence = 1E-12; + std::vector files_jles; + + double pca_threshold = 0; + std::vector files_abfs; + double kmesh_times = 4; }; Exx_Info_Opt_ABFs info_opt_abfs; @@ -91,4 +94,12 @@ struct Exx_Info } }; +//========================================================== +// EXPLAIN : define "GLOBAL CLASS" +//========================================================== +namespace GlobalC +{ + extern Exx_Info exx_info; +} // namespace GlobalC + #endif diff --git a/source/source_hamilt/module_xc/kernels/cuda/xc_functional_op.cu b/source/source_hamilt/module_xc/kernels/cuda/xc_functional_op.cu index 8d5c0683cc..6ee81727c4 100644 --- a/source/source_hamilt/module_xc/kernels/cuda/xc_functional_op.cu +++ b/source/source_hamilt/module_xc/kernels/cuda/xc_functional_op.cu @@ -59,7 +59,7 @@ void xc_functional_grad_wfc_op::operator()( xc_functional_grad_wfc<<>>( ik, pol, npw, npwx, tpiba, gcar, kvec_c, rhog_, porter_); - cudaCheckOnDebug(); + CHECK_CUDA_SYNC(); } template @@ -75,7 +75,7 @@ void xc_functional_grad_wfc_op::operator()( xc_functional_grad_wfc<<>>( ipol, nrxx, porter_, grad_); - cudaCheckOnDebug(); + CHECK_CUDA_SYNC(); } template struct xc_functional_grad_wfc_op, base_device::DEVICE_GPU>; diff --git a/source/source_hamilt/module_xc/kernels/test/CMakeLists.txt b/source/source_hamilt/module_xc/kernels/test/CMakeLists.txt index 8d0426235c..37fd50ba87 100644 --- a/source/source_hamilt/module_xc/kernels/test/CMakeLists.txt +++ b/source/source_hamilt/module_xc/kernels/test/CMakeLists.txt @@ -1,5 +1,5 @@ AddTest( - TARGET XC_Functional_UTs + TARGET MODULE_HAMILT_XC_Functional_UTs LIBS parameter ${math_libs} device base container SOURCES xc_functional_op_test.cpp ) diff --git a/source/source_hamilt/module_xc/test/CMakeLists.txt b/source/source_hamilt/module_xc/test/CMakeLists.txt index eb24bfec27..0b8bc888c2 100644 --- a/source/source_hamilt/module_xc/test/CMakeLists.txt +++ b/source/source_hamilt/module_xc/test/CMakeLists.txt @@ -1,32 +1,32 @@ AddTest( - TARGET XCTest_PBE + TARGET MODULE_HAMILT_XCTest_PBE LIBS parameter MPI::MPI_CXX Libxc::xc # required by global.h; for details, `remove_definitions(-D__MPI)`. SOURCES test_xc.cpp ../xc_functional.cpp ../xc_functional_wrapper_xc.cpp ../xc_functional_wrapper_gcxc.cpp ../xc_funct_corr_gga.cpp ../xc_funct_corr_lda.cpp ../xc_funct_exch_gga.cpp ../xc_funct_exch_lda.cpp ../xc_funct_hcth.cpp ../xc_functional_libxc_wrapper_gcxc.cpp ../xc_functional_libxc.cpp ) AddTest( - TARGET XCTest_HSE + TARGET MODULE_HAMILT_XCTest_HSE LIBS parameter MPI::MPI_CXX Libxc::xc # required by global.h; for details, `remove_definitions(-D__MPI)`. SOURCES test_xc1.cpp ../xc_functional.cpp ../xc_functional_libxc.cpp ) AddTest( - TARGET XCTest_PZ_SPN + TARGET MODULE_HAMILT_XCTest_PZ_SPN LIBS parameter MPI::MPI_CXX Libxc::xc # required by global.h; for details, `remove_definitions(-D__MPI)`. SOURCES test_xc2.cpp ../xc_functional.cpp ../xc_functional_wrapper_xc.cpp ../xc_functional_wrapper_gcxc.cpp ../xc_funct_corr_gga.cpp ../xc_funct_corr_lda.cpp ../xc_funct_exch_gga.cpp ../xc_funct_exch_lda.cpp ../xc_funct_hcth.cpp ../xc_functional_libxc_wrapper_gcxc.cpp ../xc_functional_libxc_wrapper_xc.cpp ../xc_functional_libxc.cpp ) if (USE_CUDA) -list(APPEND FFT_SRC ../../../source_basis/module_pw/module_fft/fft_cuda.cpp) +list(APPEND FFT_SRC ../../../source_base/module_fft/fft_cuda.cpp) endif() if (USE_ROCM) -list(APPEND FFT_SRC ../../../source_basis/module_pw/module_fft/fft_rocm.cpp) +list(APPEND FFT_SRC ../../../source_base/module_fft/fft_rocm.cpp) endif() AddTest( - TARGET XCTest_GRADCORR + TARGET MODULE_HAMILT_XCTest_GRADCORR LIBS parameter MPI::MPI_CXX Libxc::xc ${math_libs} psi device container SOURCES test_xc3.cpp ../xc_functional_gradcorr.cpp ../xc_functional.cpp ../xc_functional_wrapper_xc.cpp ../xc_functional_wrapper_gcxc.cpp @@ -41,13 +41,13 @@ AddTest( ../../../source_base/libm/branred.cpp ../../../source_base/libm/sincos.cpp ../../../source_base/module_external/blas_connector_base.cpp ../../../source_base/module_external/blas_connector_vector.cpp ../../../source_base/module_external/blas_connector_matrix.cpp - ../../../source_basis/module_pw/module_fft/fft_bundle.cpp - ../../../source_basis/module_pw/module_fft/fft_cpu.cpp + ../../../source_base/module_fft/fft_bundle.cpp + ../../../source_base/module_fft/fft_cpu.cpp ${FFT_SRC} ) AddTest( - TARGET XCTest_SCAN + TARGET MODULE_HAMILT_XCTest_SCAN LIBS parameter MPI::MPI_CXX Libxc::xc SOURCES test_xc4.cpp ../xc_functional.cpp ../xc_functional_wrapper_xc.cpp ../xc_functional_wrapper_gcxc.cpp @@ -60,7 +60,7 @@ AddTest( ) AddTest( - TARGET XCTest_VXC + TARGET MODULE_HAMILT_XCTest_VXC LIBS parameter MPI::MPI_CXX Libxc::xc ${math_libs} psi device container SOURCES test_xc5.cpp ../xc_functional_gradcorr.cpp ../xc_functional.cpp ../xc_functional_wrapper_xc.cpp ../xc_functional_wrapper_gcxc.cpp @@ -79,7 +79,7 @@ AddTest( ../../../source_base/timer.cpp ../../../source_base/libm/branred.cpp ../../../source_base/libm/sincos.cpp - ../../../source_basis/module_pw/module_fft/fft_bundle.cpp - ../../../source_basis/module_pw/module_fft/fft_cpu.cpp + ../../../source_base/module_fft/fft_bundle.cpp + ../../../source_base/module_fft/fft_cpu.cpp ${FFT_SRC} ) \ No newline at end of file diff --git a/source/source_hamilt/module_xc/test/xc3_mock.h b/source/source_hamilt/module_xc/test/xc3_mock.h index 8200bb5eaa..131067c3e9 100644 --- a/source/source_hamilt/module_xc/test/xc3_mock.h +++ b/source/source_hamilt/module_xc/test/xc3_mock.h @@ -187,6 +187,11 @@ Charge::~Charge(){}; Magnetism::Magnetism(){}; Magnetism::~Magnetism(){}; +SepPot::SepPot(){} +SepPot::~SepPot(){} +Sep_Cell::Sep_Cell() noexcept {} +Sep_Cell::~Sep_Cell() noexcept {} + namespace elecstate { void cal_ux(UnitCell& ucell) diff --git a/source/source_hamilt/module_xc/xc_funct_corr_gga.cpp b/source/source_hamilt/module_xc/xc_funct_corr_gga.cpp index 2c94989482..3c88eb653c 100644 --- a/source/source_hamilt/module_xc/xc_funct_corr_gga.cpp +++ b/source/source_hamilt/module_xc/xc_funct_corr_gga.cpp @@ -104,7 +104,7 @@ void XC_Functional::ggac(const double &rho,const double &grho, double &sc, doubl y = af * t * t; xy = (1.0 + y) / (1.0 + y + y * y); - double x; + double x = 0.0; x = 1.0 + y + y * y; qy = y * y * (2.0 + y) / (x * x); s1 = 1.0 + 2.0 * al / be * t * t * xy; diff --git a/source/source_hamilt/module_xc/xc_funct_corr_lda.cpp b/source/source_hamilt/module_xc/xc_funct_corr_lda.cpp index 4a749320b8..5b6ff5367b 100644 --- a/source/source_hamilt/module_xc/xc_funct_corr_lda.cpp +++ b/source/source_hamilt/module_xc/xc_funct_corr_lda.cpp @@ -138,7 +138,7 @@ void XC_Functional::vwn(const double &rs, double &ec, double &vc) fx = rs + b * rs12 + c; qx = atan(q / (2.0 * rs12 + b)); - double x; + double x = 0.0; x = (rs12 - x0); ec = a * (log(rs / fx) + f1 * qx - f2 * (log((x * x) / fx) + f3 * qx)); diff --git a/source/source_hamilt/module_xc/xc_functional.cpp b/source/source_hamilt/module_xc/xc_functional.cpp index e530cc9cdd..5cb8394b72 100644 --- a/source/source_hamilt/module_xc/xc_functional.cpp +++ b/source/source_hamilt/module_xc/xc_functional.cpp @@ -1,5 +1,4 @@ #include "xc_functional.h" -#include "source_pw/module_pwdft/global.h" #include "source_io/module_parameter/parameter.h" #include "source_base/global_function.h" @@ -29,18 +28,29 @@ void XC_Functional::set_xc_first_loop(const UnitCell& ucell) the first scf iteration only calculate the functional without exact exchange. but in "nscf" calculation, there is no need of "two-level" method. */ - if (ucell.atoms[0].ncpp.xc_func == "HF" || ucell.atoms[0].ncpp.xc_func == "HSE" - || ucell.atoms[0].ncpp.xc_func == "PBE0"|| ucell.atoms[0].ncpp.xc_func == "LC_PBE" - || ucell.atoms[0].ncpp.xc_func == "LC_WPBE" || ucell.atoms[0].ncpp.xc_func == "LRC_WPBEH" - || ucell.atoms[0].ncpp.xc_func == "CAM_PBEH") { + if (ucell.atoms[0].ncpp.xc_func == "HF" || ucell.atoms[0].ncpp.xc_func == "PBE0" || ucell.atoms[0].ncpp.xc_func == "HSE") + { XC_Functional::set_xc_type("pbe"); } - else if (ucell.atoms[0].ncpp.xc_func == "SCAN0") { - XC_Functional::set_xc_type("scan"); + else if ( ucell.atoms[0].ncpp.xc_func == "LC_PBE" || ucell.atoms[0].ncpp.xc_func == "LC_WPBE" + || ucell.atoms[0].ncpp.xc_func == "LRC_WPBEH" || ucell.atoms[0].ncpp.xc_func == "CAM_PBEH" ) + { + XC_Functional::set_xc_type("pbe"); + } + // added by jghan, 2024-07-07 + else if ( ucell.atoms[0].ncpp.xc_func == "MULLER" || ucell.atoms[0].ncpp.xc_func == "POWER" + || ucell.atoms[0].ncpp.xc_func == "WP22" || ucell.atoms[0].ncpp.xc_func == "CWP22" ) + { + XC_Functional::set_xc_type("pbe"); } - else if (ucell.atoms[0].ncpp.xc_func == "B3LYP") { + else if (ucell.atoms[0].ncpp.xc_func == "B3LYP") + { XC_Functional::set_xc_type("blyp"); } + else if (ucell.atoms[0].ncpp.xc_func == "SCAN0") + { + XC_Functional::set_xc_type("scan"); + } } // The setting values of functional id according to the index in LIBXC @@ -278,6 +288,10 @@ void XC_Functional::set_xc_type(const std::string xc_func_in) { ked_flag = true; } + else + { + ked_flag = false; + } if (func_id[0] == XC_GGA_X_OPTX) { @@ -312,3 +326,42 @@ void XC_Functional::set_xc_type(const std::string xc_func_in) #endif } + +std::string XC_Functional::output_info() +{ + #ifdef USE_LIBXC + if(use_libxc) + { + std::stringstream ss; + ss<<" Libxc v"< funcs = XC_Functional_Libxc::init_func(func_id, XC_UNPOLARIZED); + for(const auto &func : funcs) + { + const xc_func_info_type *info = xc_func_get_info(&func); + ss<<" XC: "< func_id; // libxc id of functional diff --git a/source/source_hamilt/module_xc/xc_functional_gradcorr.cpp b/source/source_hamilt/module_xc/xc_functional_gradcorr.cpp index 66b0a4a0d6..008109377c 100644 --- a/source/source_hamilt/module_xc/xc_functional_gradcorr.cpp +++ b/source/source_hamilt/module_xc/xc_functional_gradcorr.cpp @@ -226,7 +226,7 @@ void XC_Functional::gradcorr(double &etxc, double &vtxc, ModuleBase::matrix &v, if(nspin0==1) { - double segno; + double segno = 0.0; #ifdef _OPENMP #pragma omp for #endif @@ -249,7 +249,7 @@ void XC_Functional::gradcorr(double &etxc, double &vtxc, ModuleBase::matrix &v, #ifdef USE_LIBXC if(func_type == 3 || func_type == 5) //the gradcorr part to stress of mGGA { - double v3xc; + double v3xc = 0.0; double atau = chr->kin_r[0][ir]/2.0; XC_Functional_Libxc::tau_xc( func_id, arho, grho2a, atau, sxc, v1xc, v2xc, v3xc); } diff --git a/source/source_hamilt/module_xc/xc_functional_libxc.cpp b/source/source_hamilt/module_xc/xc_functional_libxc.cpp index ca1f0099a7..3b1595a3a5 100644 --- a/source/source_hamilt/module_xc/xc_functional_libxc.cpp +++ b/source/source_hamilt/module_xc/xc_functional_libxc.cpp @@ -6,7 +6,7 @@ #include "source_base/formatter.h" #ifdef __EXX -#include "source_pw/module_pwdft/global.h" // just for GlobalC::exx_info +#include "source_hamilt/module_xc/exx_info.h" // use GlobalC::exx_info #endif #include @@ -40,7 +40,7 @@ bool not_supported_xc_with_nonlocal_vdw(const std::string& xc_func_in) if(xc_func.find("VV10") != std::string::npos) { return true; } /* known excluded: GGA_XC_VV10, HYB_GGA_XC_LC_VV10, MGGA_C_REVSCAN_VV10, MGGA_C_SCAN_VV10, - MGGA_C_SCANL_VV10, MGGA_XC_VCML_RVV10 */ + MGGA_C_SCANL_VV10, MGGA_XC_VCML_RVV10 */ const std::vector not_supported = {"C09X", "VCML", "HYB_MGGA_XC_WB97M_V", "MGGA_XC_B97M_V"}; for(const std::string& str : not_supported) @@ -54,8 +54,8 @@ bool not_supported_xc_with_nonlocal_vdw(const std::string& xc_func_in) { std::cout << " WARNING: range-seperated XC omega-B97 family with nonlocal correction term is used.\n" << " if you are not planning to use these functionals like wB97X-D3BJ that:\n" - << " XC_GGA_XC_WB97X_V with specified D3BJ DFT-D3 parameters, this is not what\n" - << " you want." << std::endl; + << " XC_GGA_XC_WB97X_V with specified D3BJ DFT-D3 parameters, this is not what\n" + << " you want." << std::endl; } return false; } @@ -92,7 +92,7 @@ int xc_func_type_classifier(const std::string& xc_func, std::pair> XC_Functional_Libxc::set_xc_type_libxc(const std::string& xc_func_in) { - // check if the functional involves Laplacian of rho + // check if the functional involves Laplacian of rho if (not_supported_xc_with_laplacian(xc_func_in)) { ModuleBase::WARNING_QUIT("XC_Functional::set_xc_type_libxc", @@ -120,14 +120,14 @@ XC_Functional_Libxc::set_xc_type_libxc(const std::string& xc_func_in) } // check if there is None (no, we dont check it) - int func_type = xcfunc_type_.front(); // all functionals are of the same type + int func_type = xcfunc_type_.front(); // all functionals are of the same type // if (func_type == 0) // { // ModuleBase::WARNING_QUIT("XC_Functional::set_xc_type_libxc", // "Unrecognized functional type in '" + xc_func_in + "'."); // } - // determine the functional id + // determine the functional id std::vector func_id(xcfunc_words_.size(), -1); std::transform(xcfunc_words_.begin(), xcfunc_words_.end(), func_id.begin(), [](const std::string& func) { return xc_functional_get_number(func.c_str()); }); @@ -144,7 +144,7 @@ XC_Functional_Libxc::set_xc_type_libxc(const std::string& xc_func_in) } // return - return std::make_pair(func_type, func_id); + return std::make_pair(func_type, func_id); } const std::vector in_built_xc_func_ext_params(const int id) @@ -176,45 +176,45 @@ const std::vector in_built_xc_func_ext_params(const int id) return {0.04918, 0.132, 0.2533, 0.349, 0.35/2.29, 2.0/2.29, GlobalC::exx_info.info_global.hse_omega}; // Long-range corrected functionals: - case XC_HYB_GGA_XC_LC_PBEOP: // LC version of PBE + case XC_HYB_GGA_XC_LC_PBEOP: // LC version of PBE { - // This is a range-separated hybrid functional with range-separation constant 0.330, - // and 0.0% short-range and 100.0% long-range exact exchange, - // using the error function kernel. + // This is a range-separated hybrid functional with range-separation constant 0.330, + // and 0.0% short-range and 100.0% long-range exact exchange, + // using the error function kernel. return { GlobalC::exx_info.info_global.hse_omega }; //Range separation constant: 0.33 } - case XC_HYB_GGA_XC_LC_WPBE: // Long-range corrected PBE (LC-wPBE) by Vydrov and Scuseria + case XC_HYB_GGA_XC_LC_WPBE: // Long-range corrected PBE (LC-wPBE) by Vydrov and Scuseria { - // This is a range-separated hybrid functional with range-separation constant 0.400, - // and 0.0% short-range and 100.0% long-range exact exchange, - // using the error function kernel. + // This is a range-separated hybrid functional with range-separation constant 0.400, + // and 0.0% short-range and 100.0% long-range exact exchange, + // using the error function kernel. return { std::stod(PARAM.inp.exx_fock_alpha[0]), //Fraction of Hartree-Fock exchange: 1.0 std::stod(PARAM.inp.exx_erfc_alpha[0]), //Fraction of short-range exact exchange: -1.0 GlobalC::exx_info.info_global.hse_omega }; //Range separation constant: 0.4 } - case XC_HYB_GGA_XC_LRC_WPBE: // Long-range corrected PBE (LRC-wPBE) by by Rohrdanz, Martins and Herbert + case XC_HYB_GGA_XC_LRC_WPBE: // Long-range corrected PBE (LRC-wPBE) by by Rohrdanz, Martins and Herbert { - // This is a range-separated hybrid functional with range-separation constant 0.300, - // and 0.0% short-range and 100.0% long-range exact exchange, - // using the error function kernel. + // This is a range-separated hybrid functional with range-separation constant 0.300, + // and 0.0% short-range and 100.0% long-range exact exchange, + // using the error function kernel. return { std::stod(PARAM.inp.exx_fock_alpha[0]), //Fraction of Hartree-Fock exchange: 1.0 std::stod(PARAM.inp.exx_erfc_alpha[0]), //Fraction of short-range exact exchange: -1.0 GlobalC::exx_info.info_global.hse_omega }; //Range separation constant: 0.3 } - case XC_HYB_GGA_XC_LRC_WPBEH: // Long-range corrected short-range hybrid PBE (LRC-wPBEh) by Rohrdanz, Martins and Herbert + case XC_HYB_GGA_XC_LRC_WPBEH: // Long-range corrected short-range hybrid PBE (LRC-wPBEh) by Rohrdanz, Martins and Herbert { - // This is a range-separated hybrid functional with range-separation constant 0.200, - // and 20.0% short-range and 100.0% long-range exact exchange, - // using the error function kernel. + // This is a range-separated hybrid functional with range-separation constant 0.200, + // and 20.0% short-range and 100.0% long-range exact exchange, + // using the error function kernel. return { std::stod(PARAM.inp.exx_fock_alpha[0]), //Fraction of Hartree-Fock exchange: 1.0 std::stod(PARAM.inp.exx_erfc_alpha[0]), //Fraction of short-range exact exchange: -0.8 GlobalC::exx_info.info_global.hse_omega }; //Range separation constant: 0.2 } - case XC_HYB_GGA_XC_CAM_PBEH: // CAM hybrid screened exchange PBE version + case XC_HYB_GGA_XC_CAM_PBEH: // CAM hybrid screened exchange PBE version { - // This is a range-separated hybrid functional with range-separation constant 0.700, - // and 100.0% short-range and 20.0% long-range exact exchange, - // using the error function kernel. + // This is a range-separated hybrid functional with range-separation constant 0.700, + // and 100.0% short-range and 20.0% long-range exact exchange, + // using the error function kernel. return { std::stod(PARAM.inp.exx_fock_alpha[0]), //Fraction of Hartree-Fock exchange: 0.2 std::stod(PARAM.inp.exx_erfc_alpha[0]), //Fraction of short-range exact exchange: 0.8 GlobalC::exx_info.info_global.hse_omega }; //Range separation constant: 0.7 @@ -287,10 +287,10 @@ XC_Functional_Libxc::init_func(const std::vector &func_id, void XC_Functional_Libxc::finish_func(std::vector &funcs) { - for(xc_func_type func : funcs) + for(xc_func_type func : funcs) { - xc_func_end(&func); - } + xc_func_end(&func); + } } -#endif \ No newline at end of file +#endif diff --git a/source/source_hamilt/module_xc/xc_functional_libxc.h b/source/source_hamilt/module_xc/xc_functional_libxc.h index 948db289db..defd851faa 100644 --- a/source/source_hamilt/module_xc/xc_functional_libxc.h +++ b/source/source_hamilt/module_xc/xc_functional_libxc.h @@ -53,13 +53,13 @@ namespace XC_Functional_Libxc // xc_functional_libxc_vxc.cpp //------------------- - extern std::tuple v_xc_libxc( - const std::vector &func_id, - const int &nrxx, // number of real-space grid - const double &omega, // volume of cell - const double tpiba, - const Charge* const chr, // charge density - const std::map* scaling_factor = nullptr); // added by jghan, 2024-10-10 + extern std::tuple v_xc_libxc( + const std::vector &func_id, + const int &nrxx, // number of real-space grid + const double &omega, // volume of cell + const double tpiba, + const Charge* const chr, // charge density + const std::map* scaling_factor = nullptr); // added by jghan, 2024-10-10 // for mGGA functional extern std::tuple v_xc_meta( diff --git a/source/source_hamilt/module_xc/xc_functional_libxc_tools.cpp b/source/source_hamilt/module_xc/xc_functional_libxc_tools.cpp index d7c8439d10..4d4af83a7e 100644 --- a/source/source_hamilt/module_xc/xc_functional_libxc_tools.cpp +++ b/source/source_hamilt/module_xc/xc_functional_libxc_tools.cpp @@ -16,8 +16,12 @@ std::vector XC_Functional_Libxc::convert_rho( #pragma omp parallel for collapse(2) schedule(static, 1024) #endif for( int is=0; isrho[is][ir] + 1.0/nspin*chr->rho_core[ir]; + } + } return rho; } @@ -64,7 +68,9 @@ XC_Functional_Libxc::cal_gdr( #pragma omp parallel for schedule(static, 1024) #endif for(std::size_t ir=0; ir XC_Functional_Libxc::convert_sigma( assert(nspin>0); const std::size_t nrxx = gdr[0].size(); for(std::size_t is=1; is sigma( nrxx * ((1==nspin)?1:3) ); if( 1==nspin ) @@ -126,6 +134,7 @@ std::vector XC_Functional_Libxc::cal_sgn( const std::vector &rho, const std::vector &sigma) { + //assert(nrxx>0); // adding this once will cause error in examples std::vector sgn(nrxx*nspin, 1.0); // in the case of GGA correlation for polarized case, // a cutoff for grho is required to ensure that libxc gives reasonable results @@ -137,9 +146,13 @@ std::vector XC_Functional_Libxc::cal_sgn( for( int ir=0; ir XC_Functional_Libxc::convert_vtxc_v( const double tpiba, const Charge* const chr) { + // assert(nrxx>0); // will cause error double vtxc = 0.0; ModuleBase::matrix v(nspin, nrxx); @@ -186,9 +204,10 @@ std::pair XC_Functional_Libxc::convert_vtxc_v( { for( std::size_t ir=0; ir> XC_Functional_Libxc::cal_dh( const double tpiba, const Charge* const chr) { + //assert(nrxx>0); // this line will cause bug std::vector>> h( nspin, std::vector>(nrxx) ); - if( 1==nspin ) + + if( nspin==1 ) { #ifdef _OPENMP #pragma omp parallel for schedule(static, 1024) #endif for( std::size_t ir=0; ir> XC_Functional_Libxc::cal_dh( // define two dimensional array dh [ nspin, nrxx ] std::vector> dh(nspin, std::vector(nrxx)); for( int is=0; is!=nspin; ++is ) + { XC_Functional::grad_dot( h[is].data(), dh[is].data(), chr->rhopw, tpiba); + } return dh; } @@ -267,11 +292,14 @@ ModuleBase::matrix XC_Functional_Libxc::convert_v_nspin4( const std::vector &amag, const ModuleBase::matrix &v) { + //assert(nrxx>0); assert(PARAM.inp.nspin==4); constexpr double vanishing_charge = 1.0e-10; ModuleBase::matrix v_nspin4(PARAM.inp.nspin, nrxx); for( int ir=0; irrho[ipol][ir] / amag[ir]; + } } } } return v_nspin4; } -#endif \ No newline at end of file +#endif diff --git a/source/source_hamilt/module_xc/xc_functional_libxc_wrapper_tauxc.cpp b/source/source_hamilt/module_xc/xc_functional_libxc_wrapper_tauxc.cpp index 8891fc98f6..a7499ef090 100644 --- a/source/source_hamilt/module_xc/xc_functional_libxc_wrapper_tauxc.cpp +++ b/source/source_hamilt/module_xc/xc_functional_libxc_wrapper_tauxc.cpp @@ -4,8 +4,9 @@ #ifdef USE_LIBXC +#include "source_hamilt/module_xc/exx_info.h" // use GlobalC::exx_info +#include "source_hamilt/module_xc/xc_functional.h" #include "xc_functional_libxc.h" -#include "source_pw/module_pwdft/global.h" #include //tau_xc and tau_xc_spin: interface for calling xc_mgga_exc_vxc from LIBXC @@ -102,4 +103,4 @@ void XC_Functional_Libxc::tau_xc_spin( XC_Functional_Libxc::finish_func(funcs); } -#endif \ No newline at end of file +#endif diff --git a/source/source_hamilt/module_xc/xc_functional_vxc.cpp b/source/source_hamilt/module_xc/xc_functional_vxc.cpp index 3eb59834de..0ac1990059 100644 --- a/source/source_hamilt/module_xc/xc_functional_vxc.cpp +++ b/source/source_hamilt/module_xc/xc_functional_vxc.cpp @@ -4,30 +4,35 @@ // NOTE : it is only used for nspin = 1 and 2, the nspin = 4 case is treated in v_xc // 3. v_xc_meta : which takes rho and tau as input, and v_xc as output -#include "xc_functional.h" #include "source_base/parallel_reduce.h" #include "source_base/timer.h" #include "source_io/module_parameter/parameter.h" +#include "xc_functional.h" #ifdef USE_LIBXC #include "xc_functional_libxc.h" #endif // [etxc, vtxc, v] = XC_Functional::v_xc(...) -std::tuple XC_Functional::v_xc( - const int &nrxx, // number of real-space grid - const Charge* const chr, - const UnitCell *ucell) // core charge density +std::tuple XC_Functional::v_xc(const int& nrxx, // number of real-space grid + const Charge* const chr, + const UnitCell* ucell) // core charge density { - ModuleBase::TITLE("XC_Functional","v_xc"); - ModuleBase::timer::tick("XC_Functional","v_xc"); + ModuleBase::TITLE("XC_Functional", "v_xc"); + ModuleBase::timer::tick("XC_Functional", "v_xc"); - if(use_libxc) + if (use_libxc) { #ifdef USE_LIBXC - return XC_Functional_Libxc::v_xc_libxc(XC_Functional::get_func_id(), nrxx, ucell->omega, ucell->tpiba, chr, &(scaling_factor_xc)); + ModuleBase::timer::tick("XC_Functional", "v_xc"); + return XC_Functional_Libxc::v_xc_libxc(XC_Functional::get_func_id(), + nrxx, + ucell->omega, + ucell->tpiba, + chr, + &(scaling_factor_xc)); #else - ModuleBase::WARNING_QUIT("v_xc","compile with LIBXC"); + ModuleBase::WARNING_QUIT("v_xc", "compile with LIBXC"); #endif } @@ -134,7 +139,7 @@ std::tuple XC_Functional::v_xc( double rhodw = arhox * (1.0-zeta) / 2.0; XC_Functional_Libxc::xc_spin_libxc(XC_Functional::get_func_id(), rhoup, rhodw, exc, vxc[0], vxc[1]); #else - ModuleBase::WARNING_QUIT("v_xc","compile with LIBXC"); + ModuleBase::WARNING_QUIT("v_xc", "compile with LIBXC"); #endif } else @@ -180,6 +185,6 @@ std::tuple XC_Functional::v_xc( etxc *= ucell->omega / chr->rhopw->nxyz; vtxc *= ucell->omega / chr->rhopw->nxyz; - ModuleBase::timer::tick("XC_Functional","v_xc"); + ModuleBase::timer::tick("XC_Functional", "v_xc"); return std::make_tuple(etxc, vtxc, std::move(v)); } diff --git a/source/source_hamilt/module_xc/xc_functional_wrapper_gcxc.cpp b/source/source_hamilt/module_xc/xc_functional_wrapper_gcxc.cpp index 7b46ce96a1..3956d29702 100644 --- a/source/source_hamilt/module_xc/xc_functional_wrapper_gcxc.cpp +++ b/source/source_hamilt/module_xc/xc_functional_wrapper_gcxc.cpp @@ -8,7 +8,6 @@ #include "xc_functional.h" #include -#include "source_pw/module_pwdft/global.h" #include "source_base/global_function.h" #ifdef USE_LIBXC @@ -129,7 +128,7 @@ void XC_Functional::gcx_spin(double rhoup, double rhodw, double grhoup2, double // parameter : double small = 1.e-10; double sxup, sxdw; - int iflag; + int iflag = 0; // exchange double rho = rhoup + rhodw; @@ -248,7 +247,7 @@ void XC_Functional::gcc_spin(double rho, double &zeta, double grho, double &sc, double small = 1.0e-10; double epsr = 1.0e-6; - double x; + double x = 0.0; sc = 0.00; v1cup = 0.00; v1cdw = 0.00; diff --git a/source/source_hamilt/module_xc/xc_functional_wrapper_xc.cpp b/source/source_hamilt/module_xc/xc_functional_wrapper_xc.cpp index d13eb0d129..0a9bffbc42 100644 --- a/source/source_hamilt/module_xc/xc_functional_wrapper_xc.cpp +++ b/source/source_hamilt/module_xc/xc_functional_wrapper_xc.cpp @@ -17,7 +17,7 @@ void XC_Functional::xc(const double &rho, double &exc, double &vxc) double third = 1.0 / 3.0; double pi34 = 0.6203504908994e0 ; // pi34=(3/4pi)^(1/3) - double rs; + double rs = 0.0; double e,v; exc = vxc = 0.00; diff --git a/source/source_hamilt/test/CMakeLists.txt b/source/source_hamilt/test/CMakeLists.txt index d3def4c86b..8994824db0 100644 --- a/source/source_hamilt/test/CMakeLists.txt +++ b/source/source_hamilt/test/CMakeLists.txt @@ -1,4 +1,10 @@ AddTest( - TARGET ewald_dnrm2 + TARGET MODULE_HAMILT_ewald_dnrm2 SOURCES dnrm2_test.cpp ../module_ewald/dnrm2.cpp ) + +AddTest( + TARGET MODULE_HAMILT_ewald_rgen + LIBS parameter ${math_libs} base device + SOURCES rgen_test.cpp ../module_ewald/H_Ewald_pw.cpp ../module_ewald/dnrm2.cpp +) diff --git a/source/source_hamilt/test/rgen_test.cpp b/source/source_hamilt/test/rgen_test.cpp new file mode 100644 index 0000000000..43cecfba5e --- /dev/null +++ b/source/source_hamilt/test/rgen_test.cpp @@ -0,0 +1,154 @@ +#include "gtest/gtest.h" +#include "gmock/gmock.h" +#include "../module_ewald/H_Ewald_pw.h" +#include "../module_ewald/dnrm2.h" +#include "source_base/matrix3.h" +#include + +/************************************************ + * unit test of H_Ewald_pw::rgen + ***********************************************/ + +/** + * - Tested Functions: + * - H_Ewald_pw::rgen(): + * - Generates lattice vectors R such that |R - dtau| <= rmax, + * and returns them sorted by ascending magnitude. + * - Tested cases: + * 1. rmax == 0.0: no vectors returned. + * 2. Simple cubic cell, small rmax: correct count + sorted order. + * 3. Large rmax exceeding original fixed mxr=200 limit: verifies + * that the dynamic mxr sizing introduced in the bug fix works + * correctly and does not overflow the allocated arrays. + */ + +class RgenTest : public ::testing::Test +{ + protected: + // Simple cubic unit cell: latvec = G = identity + ModuleBase::Matrix3 latvec; + ModuleBase::Matrix3 G; + ModuleBase::Vector3 dtau; + + void SetUp() override + { + // Unit cubic cell: direct and reciprocal lattice vectors are identity + latvec = ModuleBase::Matrix3(1, 0, 0, 0, 1, 0, 0, 0, 1); + G = ModuleBase::Matrix3(1, 0, 0, 0, 1, 0, 0, 0, 1); + dtau = ModuleBase::Vector3(0.0, 0.0, 0.0); + } +}; + +TEST_F(RgenTest, ZeroRmax) +{ + // When rmax==0 the function should return immediately with nrm=0 + const int mxr_test = 10; + H_Ewald_pw::mxr = mxr_test; + std::vector> r(mxr_test); + std::vector r2(mxr_test); + std::vector irr(mxr_test); + int nrm = 0; + + H_Ewald_pw::rgen(dtau, 0.0, irr.data(), latvec, G, r.data(), r2.data(), nrm); + + EXPECT_EQ(nrm, 0); +} + +TEST_F(RgenTest, SimpleCubicNearestNeighbors) +{ + // rmax = 1.5 captures nearest (d=1) and next-nearest (d=sqrt(2)~1.414) + // neighbors: 6 + 12 = 18 vectors total. + const double rmax = 1.5; + const int mxr_test = 50; + H_Ewald_pw::mxr = mxr_test; + std::vector> r(mxr_test); + std::vector r2(mxr_test); + std::vector irr(mxr_test); + int nrm = 0; + + H_Ewald_pw::rgen(dtau, rmax, irr.data(), latvec, G, r.data(), r2.data(), nrm); + + EXPECT_EQ(nrm, 18); + + // Vectors must be sorted in ascending order of |r|^2 + for (int i = 1; i < nrm; ++i) + { + EXPECT_LE(r2[i - 1], r2[i]); + } + + // All returned vectors must lie strictly inside the sphere + for (int i = 0; i < nrm; ++i) + { + EXPECT_LE(r2[i], rmax * rmax + 1.0e-10); + EXPECT_GT(r2[i], 1.0e-10); + } +} + +TEST_F(RgenTest, SimpleCubicNonZeroDtau) +{ + // rgen computes t = R - dtau for each lattice vector R=(i,j,k)*latvec, + // and excludes vectors with |t|^2 < 1e-10 (i.e. R == dtau). + // With dtau=(0.5,0,0) and rmax=0.6, two vectors qualify: + // R=(0,0,0): t = (0,0,0)-(0.5,0,0) = (-0.5,0,0), |t|^2=0.25 <= 0.36 + // R=(1,0,0): t = (1,0,0)-(0.5,0,0) = ( 0.5,0,0), |t|^2=0.25 <= 0.36 + // No lattice point coincides with dtau, so neither is excluded. + const double rmax = 0.6; + const int mxr_test = 10; + H_Ewald_pw::mxr = mxr_test; + dtau = ModuleBase::Vector3(0.5, 0.0, 0.0); + std::vector> r(mxr_test); + std::vector r2(mxr_test); + std::vector irr(mxr_test); + int nrm = 0; + + H_Ewald_pw::rgen(dtau, rmax, irr.data(), latvec, G, r.data(), r2.data(), nrm); + + EXPECT_EQ(nrm, 2); + for (int i = 0; i < nrm; ++i) + { + EXPECT_NEAR(r2[i], 0.25, 1.0e-10); + } +} + +TEST_F(RgenTest, LargeRmaxExceedsOriginalLimit) +{ + // rmax=4.0 on a unit cubic cell yields ~499 r-vectors, well above the + // old fixed limit of mxr=200 that caused the buffer overflow. + // This test verifies that with a properly sized mxr the function + // completes without error. + const double rmax = 4.0; + + // Replicate the dynamic mxr computation from compute_ewald() + double bg1[3]; + bg1[0] = G.e11; bg1[1] = G.e12; bg1[2] = G.e13; + int nm1 = (int)(dnrm2(3, bg1, 1) * rmax + 2); + bg1[0] = G.e21; bg1[1] = G.e22; bg1[2] = G.e23; + int nm2 = (int)(dnrm2(3, bg1, 1) * rmax + 2); + bg1[0] = G.e31; bg1[1] = G.e32; bg1[2] = G.e33; + int nm3 = (int)(dnrm2(3, bg1, 1) * rmax + 2); + const int mxr_test = (2 * nm1 + 1) * (2 * nm2 + 1) * (2 * nm3 + 1); + + H_Ewald_pw::mxr = mxr_test; + std::vector> r(mxr_test); + std::vector r2(mxr_test); + std::vector irr(mxr_test); + int nrm = 0; + + H_Ewald_pw::rgen(dtau, rmax, irr.data(), latvec, G, r.data(), r2.data(), nrm); + + // Must exceed the old hard-coded limit that caused the crash + EXPECT_GT(nrm, 200); + + // All returned vectors lie within the sphere + for (int i = 0; i < nrm; ++i) + { + EXPECT_LE(r2[i], rmax * rmax + 1.0e-10); + EXPECT_GT(r2[i], 1.0e-10); + } + + // Vectors are sorted in ascending order of |r|^2 + for (int i = 1; i < nrm; ++i) + { + EXPECT_LE(r2[i - 1], r2[i]); + } +} diff --git a/source/source_hsolver/CMakeLists.txt b/source/source_hsolver/CMakeLists.txt index 8fa1d17983..b115d6d4cd 100644 --- a/source/source_hsolver/CMakeLists.txt +++ b/source/source_hsolver/CMakeLists.txt @@ -12,6 +12,7 @@ list(APPEND objects hsolver.cpp diago_pxxxgvx.cpp diag_hs_para.cpp + diago_params.cpp ) @@ -21,6 +22,7 @@ if(ENABLE_LCAO) hsolver_lcao.cpp diago_scalapack.cpp parallel_k2d.cpp + diago_lapack.cpp ) else () list(APPEND objects @@ -36,14 +38,14 @@ if(ENABLE_LCAO) endif () if(USE_CUDA) - list(APPEND objects - ./kernels/dngvd_op.cpp + set(cuda_objects + ./kernels/hegvd_op.cpp ./kernels/cuda/diag_cusolver.cu diago_cusolver.cpp diago_cusolver.h ) if(ENABLE_CUSOLVERMP) - list(APPEND objects + list(APPEND cuda_objects ./kernels/cuda/diag_cusolvermp.cu diago_cusolvermp.cpp diago_cusolvermp.h @@ -52,7 +54,7 @@ if(ENABLE_LCAO) add_library( diag_cusolver OBJECT - ${objects} + ${cuda_objects} ) if(ENABLE_COVERAGE) add_coverage(diag_cusolver) diff --git a/source/source_hsolver/diago_bpcg.cpp b/source/source_hsolver/diago_bpcg.cpp index 45c9b8b24d..d4db3d790b 100644 --- a/source/source_hsolver/diago_bpcg.cpp +++ b/source/source_hsolver/diago_bpcg.cpp @@ -112,14 +112,14 @@ void DiagoBPCG::line_minimize( // Finally, the last two! template void DiagoBPCG::orth_cholesky( - ct::Tensor& workspace_in, - ct::Tensor& psi_out, - ct::Tensor& hpsi_out, + ct::Tensor& workspace_in, + ct::Tensor& psi_out, + ct::Tensor& hpsi_out, ct::Tensor& hsub_out) { // gemm: hsub_out(n_band x n_band) = psi_out^T(n_band x n_basis) * psi_out(n_basis x n_band) this->pmmcn.multiply(1.0, psi_out.data(), psi_out.data(), 0.0, hsub_out.data()); - + // set hsub matrix to lower format; ct::kernels::set_matrix()( 'L', hsub_out.data(), this->n_band); @@ -209,7 +209,8 @@ void DiagoBPCG::diag_hsub( // gemm: hsub_out(n_band x n_band) = hpsi_in^T(n_band x n_basis) * psi_in(n_basis x n_band) this->pmmcn.multiply(1.0, hpsi_in.data(), psi_in.data(), 0.0, hsub_out.data()); - ct::kernels::lapack_dnevd()('V', 'U', hsub_out.data(), this->n_band, eigenvalue_out.data()); + // ct::kernels::lapack_heevd()('V', 'U', hsub_out.data(), this->n_band, eigenvalue_out.data()); + ct::kernels::lapack_heevd()(this->n_band, hsub_out.data(), this->n_band, eigenvalue_out.data()); return; } @@ -235,15 +236,15 @@ void DiagoBPCG::calc_hsub_with_block( // hpsi_out[n_basis, n_band] = psi_out[n_basis, n_band] x hsub_out[n_band, n_band] this->rotate_wf(hsub_out, psi_out, workspace_in); this->rotate_wf(hsub_out, hpsi_out, workspace_in); - + return; } template void DiagoBPCG::calc_hsub_with_block_exit( - ct::Tensor& psi_out, + ct::Tensor& psi_out, ct::Tensor& hpsi_out, - ct::Tensor& hsub_out, + ct::Tensor& hsub_out, ct::Tensor& workspace_in, ct::Tensor& eigenvalue_out) { diff --git a/source/source_hsolver/diago_bpcg.h b/source/source_hsolver/diago_bpcg.h index d9baa9eef3..796ae77666 100644 --- a/source/source_hsolver/diago_bpcg.h +++ b/source/source_hsolver/diago_bpcg.h @@ -7,7 +7,7 @@ #include "source_base/para_gemm.h" #include "source_hamilt/hamilt.h" #include "source_pw/module_pwdft/structure_factor.h" -#include "source_hsolver/kernels/dngvd_op.h" +#include "source_hsolver/kernels/hegvd_op.h" #include "source_hsolver/para_linear_transform.h" #include diff --git a/source/source_hsolver/diago_cg.cpp b/source/source_hsolver/diago_cg.cpp index 0c8f5b81e7..d6bd08450e 100644 --- a/source/source_hsolver/diago_cg.cpp +++ b/source/source_hsolver/diago_cg.cpp @@ -28,7 +28,7 @@ template DiagoCG::DiagoCG(const std::string& basis_type, const std::string& calculation, const bool& need_subspace, - const Func& subspace_func, + const SubspaceFunc& subspace_func, const Real& pw_diag_thr, const int& pw_diag_nmax, const int& nproc_in_pool) @@ -54,7 +54,7 @@ DiagoCG::~DiagoCG() } template -void DiagoCG::diag_mock(const ct::Tensor& prec_in, +void DiagoCG::diag_once(const ct::Tensor& prec_in, ct::Tensor& psi, ct::Tensor& eigen, const std::vector& ethr_band) @@ -122,10 +122,10 @@ void DiagoCG::diag_mock(const ct::Tensor& prec_in, { phi_m.sync(psi[m]); // copy psi_in into internal psi, m=0 has been done in Constructor - this->spsi_func_(phi_m, sphi); // sphi = S|psi(m)> + this->spsi_func_(phi_m.data(), sphi.data(), this->n_basis_, 1); // sphi = S|psi(m)> this->schmit_orth(m, psi, sphi, phi_m); - this->spsi_func_(phi_m, sphi); // sphi = S|psi(m)> - this->hpsi_func_(phi_m, hphi); // hphi = H|psi(m)> + this->spsi_func_(phi_m.data(), sphi.data(), this->n_basis_, 1); // sphi = S|psi(m)> + this->hpsi_func_(phi_m.data(), hphi.data(), this->n_basis_, 1); // hphi = H|psi(m)> eigen_pack[m] = dot_real_op()(this->n_basis_, phi_m.data(), hphi.data()); @@ -150,8 +150,8 @@ void DiagoCG::diag_mock(const ct::Tensor& prec_in, g0, cg); // Tensor& - this->hpsi_func_(cg, pphi); - this->spsi_func_(cg, scg); + this->hpsi_func_(cg.data(), pphi.data(), this->n_basis_, 1); + this->spsi_func_(cg.data(), scg.data(), this->n_basis_, 1); converged = this->update_psi(pphi, cg, @@ -171,6 +171,7 @@ void DiagoCG::diag_mock(const ct::Tensor& prec_in, { ++this->notconv_; } + iter_band.push_back(iter); avg += static_cast(iter) + 1.00; // reorder eigenvalue if they are not in the right order @@ -263,7 +264,7 @@ void DiagoCG::orth_grad(const ct::Tensor& psi, ct::Tensor& scg, ct::Tensor& lagrange) { - this->spsi_func_(grad, scg); // scg = S|grad> + this->spsi_func_(grad.data(), scg.data(), this->n_basis_, 1); // scg = S|grad> ModuleBase::gemv_op()('C', this->n_basis_, m, @@ -569,19 +570,45 @@ bool DiagoCG::test_exit_cond(const int& ntry, const int& notconv) con // In non-self consistent calculation, do until totally converged. const bool f2 = !scf && notconv > 0; // if self consistent calculation, if not converged > 5, - // using diagH_subspace and cg method again. ntry++ + // using diag_subspace and cg method again. ntry++ const bool f3 = scf && notconv > 5; return f1 && (f2 || f3); } template -void DiagoCG::diag(const Func& hpsi_func, - const Func& spsi_func, - ct::Tensor& psi, - ct::Tensor& eigen, - const std::vector& ethr_band, - const ct::Tensor& prec) +double DiagoCG::diag(const HPsiFunc& hpsi_func, + const SPsiFunc& spsi_func, + const int ld_psi, + const int nband, + const int dim, + T* psi_in, + Real* eigenvalue_in, + const std::vector& ethr_band, + const Real* prec) { + REQUIRES_OK(ld_psi >= dim, "DiagoCG::diag: ld_psi must be >= dim"); + REQUIRES_OK(static_cast(ethr_band.size()) >= nband, + "DiagoCG::diag: ethr_band size must be >= nband"); + + auto psi = ct::TensorMap(psi_in, + ct::DataTypeToEnum::value, + ct::DeviceTypeToEnum::value, + ct::TensorShape({nband, ld_psi})); + auto eigen = ct::TensorMap(eigenvalue_in, + ct::DataTypeToEnum::value, + ct::DeviceTypeToEnum::value, + ct::TensorShape({nband})); + + ct::Tensor prec_tensor; + if (prec != nullptr) + { + prec_tensor = ct::TensorMap(const_cast(prec), + ct::DataTypeToEnum::value, + ct::DeviceTypeToEnum::value, + ct::TensorShape({dim})) + .template to_device(); + } + /// record the times of trying iterative diagonalization int ntry = 0; this->notconv_ = 0; @@ -589,19 +616,40 @@ void DiagoCG::diag(const Func& hpsi_func, spsi_func_ = spsi_func; // create a new slice of psi to do cg diagonalization - ct::Tensor psi_temp = psi.slice({0, 0}, {int(psi.shape().dim_size(0)), int(prec.shape().dim_size(0))}); + ct::Tensor psi_temp = psi.slice({0, 0}, {nband, dim}); do { - if (need_subspace_ || ntry > 0) + // subspace diagonalization to get a better starting guess + // for cg diagonalization, restart from current psi approximation + // Note: if not the first try, then psi is already S-orthogonalized by CG iterations! + // Otherwise, if the first try, then psi is not assumed to be S-orthogonalized + if (ntry > 0) + { + ct::TensorMap psi_map = ct::TensorMap(psi.data(), psi_temp); + const bool assume_S_orthogonal = true; + this->subspace_func_(psi_temp.data(), + psi_map.data(), + dim, + nband, + assume_S_orthogonal); + psi_temp.sync(psi_map); + } + else if (need_subspace_) { ct::TensorMap psi_map = ct::TensorMap(psi.data(), psi_temp); - this->subspace_func_(psi_temp, psi_map); + const bool assume_S_orthogonal = false; + this->subspace_func_(psi_temp.data(), + psi_map.data(), + dim, + nband, + assume_S_orthogonal); psi_temp.sync(psi_map); } + ++ntry; avg_iter_ += 1.0; - this->diag_mock(prec, psi_temp, eigen, ethr_band); + this->diag_once(prec_tensor, psi_temp, eigen, ethr_band); } while (this->test_exit_cond(ntry, this->notconv_)); if (this->notconv_ > std::max(5, this->n_band_ / 4)) @@ -613,6 +661,20 @@ void DiagoCG::diag(const Func& hpsi_func, psi.zero(); // copy psi_temp to psi for 0 to npw. psi.sync(psi_temp); + +#ifdef __DEBUG +// only output iter count for each band if DEBUG! +// this should not be output in production log + std::cout << "\n DiagoCG::diag' avg_iter_ = " << avg_iter_; + std::cout << "\n DiagoCG::diag' iter_band = "; + for (auto iter_in_band : iter_band) + { + std::cout << iter_in_band << " "; + } + std::cout << "\n"; +#endif + + return avg_iter_; } namespace hsolver @@ -631,4 +693,4 @@ template class DiagoCG; template class DiagoCG; #endif #endif -} // namespace hsolver \ No newline at end of file +} // namespace hsolver diff --git a/source/source_hsolver/diago_cg.h b/source/source_hsolver/diago_cg.h index 482f2bba04..99d9369a0a 100644 --- a/source/source_hsolver/diago_cg.h +++ b/source/source_hsolver/diago_cg.h @@ -2,6 +2,7 @@ #define MODULE_HSOLVER_DIAGO_CG_H_ #include +#include #include #include @@ -21,7 +22,9 @@ class DiagoCG final using Real = typename GetTypeReal::type; using ct_Device = typename ct::PsiToContainer::type; public: - using Func = std::function; + using HPsiFunc = std::function; + using SPsiFunc = std::function; + using SubspaceFunc = std::function; // Constructor need: // 1. temporary mock of Hamiltonian "Hamilt_PW" // 2. precondition pointer should point to place of precondition array. @@ -30,22 +33,26 @@ class DiagoCG final const std::string& basis_type, const std::string& calculation, const bool& need_subspace, - const Func& subspace_func, + const SubspaceFunc& subspace_func, const Real& pw_diag_thr, const int& pw_diag_nmax, const int& nproc_in_pool); - + ~DiagoCG(); // virtual void init(){}; // refactor hpsi_info // this is the diag() function for CG method - void diag(const Func& hpsi_func, - const Func& spsi_func, - ct::Tensor& psi, - ct::Tensor& eigen, - const std::vector& ethr_band, - const ct::Tensor& prec = {}); + // returns avg_iter + double diag(const HPsiFunc& hpsi_func, + const SPsiFunc& spsi_func, + const int ld_psi, + const int nband, + const int dim, + T* psi_in, + Real* eigenvalue_in, + const std::vector& ethr_band, + const Real* prec = nullptr); private: Device * ctx_ = {}; @@ -58,7 +65,9 @@ class DiagoCG final /// col size for input psi matrix int n_basis_ = 0; /// average iteration steps for cg diagonalization - int avg_iter_ = 0; + double avg_iter_ = 0; + /// std::vector for iter count of each band + std::vector iter_band; /// threshold for cg diagonalization Real pw_diag_thr_ = 1e-5; /// maximum iteration steps for cg diagonalization @@ -72,11 +81,11 @@ class DiagoCG final bool need_subspace_ = false; /// A function object that performs the hPsi calculation. - std::function hpsi_func_ = nullptr; + HPsiFunc hpsi_func_ = nullptr; /// A function object that performs the sPsi calculation. - std::function spsi_func_ = nullptr; + SPsiFunc spsi_func_ = nullptr; /// A function object that performs the subspace calculation. - std::function subspace_func_ = nullptr; + SubspaceFunc subspace_func_ = nullptr; void calc_grad( const ct::Tensor& prec, @@ -86,15 +95,15 @@ class DiagoCG final ct::Tensor& pphi); void orth_grad( - const ct::Tensor& psi, - const int& m, - ct::Tensor& grad, + const ct::Tensor& psi, + const int& m, + ct::Tensor& grad, ct::Tensor& scg, ct::Tensor& lagrange); void calc_gamma_cg( const int& iter, - const Real& cg_norm, + const Real& cg_norm, const Real& theta, const ct::Tensor& prec, const ct::Tensor& scg, @@ -109,8 +118,8 @@ class DiagoCG final const ct::Tensor& cg, const ct::Tensor& scg, const double& ethreshold, - Real &cg_norm, - Real &theta, + Real &cg_norm, + Real &theta, Real &eigen, ct::Tensor& phi_m, ct::Tensor& sphi, @@ -119,7 +128,7 @@ class DiagoCG final void schmit_orth(const int& m, const ct::Tensor& psi, const ct::Tensor& sphi, ct::Tensor& phi_m); // used in diag() for template replace Hamilt with Hamilt_PW - void diag_mock(const ct::Tensor& prec, + void diag_once(const ct::Tensor& prec, ct::Tensor& psi, ct::Tensor& eigen, const std::vector& ethr_band); @@ -132,4 +141,4 @@ class DiagoCG final } // namespace hsolver -#endif // MODULE_HSOLVER_DIAGO_CG_H_ \ No newline at end of file +#endif // MODULE_HSOLVER_DIAGO_CG_H_ diff --git a/source/source_hsolver/diago_cusolver.cpp b/source/source_hsolver/diago_cusolver.cpp index a42c7844ba..960c4ec5d7 100644 --- a/source/source_hsolver/diago_cusolver.cpp +++ b/source/source_hsolver/diago_cusolver.cpp @@ -15,24 +15,13 @@ using complex = std::complex; // Namespace for the diagonalization solver namespace hsolver { -// this struct is used for collecting matrices from all processes to root process -template -struct Matrix_g -{ - std::shared_ptr p; - size_t row; - size_t col; - std::shared_ptr desc; -}; - // Initialize the DecomposedState variable for real and complex numbers template int DiagoCusolver::DecomposedState = 0; template -DiagoCusolver::DiagoCusolver(const Parallel_Orbitals* ParaV) +DiagoCusolver::DiagoCusolver() { - this->ParaV = ParaV; } template @@ -40,162 +29,25 @@ DiagoCusolver::~DiagoCusolver() { } -// Wrapper for pdgemr2d and pzgemr2d -// static inline void Cpxgemr2d( -// const int M, const int N, -// double *a, const int ia, const int ja, const int *desca, -// double *b, const int ib, const int jb, const int *descb, -// const int blacs_ctxt) -//{ -// pdgemr2d_(&M, &N, -// a, &ia, &ja, desca, -// b, &ib, &jb, descb, -// &blacs_ctxt); -//} -// -// static inline void Cpxgemr2d( -// const int M, const int N, -// complex *a, const int ia, const int ja, const int *desca, -// complex *b, const int ib, const int jb, const int *descb, -// const int blacs_ctxt) -//{ -// pzgemr2d_(&M, &N, -// a, &ia, &ja, desca, -// b, &ib, &jb, descb, -// &blacs_ctxt); -//} - -// Use Cpxgemr2d to collect matrices from all processes to root process -template -static void gatherMatrix(const int myid, const int root_proc, const mat& mat_l, matg& mat_g) -{ - auto a = mat_l.p; - const int* desca = mat_l.desc; - int ctxt = desca[1]; - int nrows = desca[2]; - int ncols = desca[3]; - - if (myid == root_proc) - { - mat_g.p.reset(new typename std::remove_reference::type[nrows * ncols]); - } - else - { - mat_g.p.reset(new typename std::remove_reference::type[1]); - } - - // Set descb, which has all elements in the only block in the root process - mat_g.desc.reset(new int[9]{1, ctxt, nrows, ncols, nrows, ncols, 0, 0, nrows}); - - mat_g.row = nrows; - mat_g.col = ncols; - - Cpxgemr2d(nrows, ncols, a, 1, 1, const_cast(desca), mat_g.p.get(), 1, 1, mat_g.desc.get(), ctxt); -} - -// Convert the Psi to a 2D block storage format -template -static void distributePsi(const int* desc_psi, T* psi, T* psi_g) -{ - int ctxt = desc_psi[1]; - int nrows = desc_psi[2]; - int ncols = desc_psi[3]; - int rsrc = desc_psi[6]; - int csrc = desc_psi[7]; - - int descg[9] = {1, ctxt, nrows, ncols, nrows, ncols, rsrc, csrc, nrows}; - int descl[9]; - - std::copy(desc_psi, desc_psi + 9, descl); - - Cpxgemr2d(nrows, ncols, psi_g, 1, 1, descg, psi, 1, 1, descl, ctxt); -} - // Diagonalization function template -void DiagoCusolver::diag(hamilt::Hamilt* phm_in, psi::Psi& psi, Real* eigenvalue_in) +void DiagoCusolver::diag( + hamilt::MatrixBlock& h_mat, + hamilt::MatrixBlock& s_mat, + psi::Psi& psi, + Real* eigenvalue_in) { - // Output the title for the current operation ModuleBase::TITLE("DiagoCusolver", "diag"); - - // Create matrices for the Hamiltonian and overlap - hamilt::MatrixBlock h_mat; - hamilt::MatrixBlock s_mat; - phm_in->matrix(h_mat, s_mat); - -#ifdef __MPI - // global matrix - Matrix_g h_mat_g; - Matrix_g s_mat_g; - - // get the context and process information - int ctxt = ParaV->blacs_ctxt; - int nprows = 0; - int npcols = 0; - int myprow = 0; - int mypcol = 0; - Cblacs_gridinfo(ctxt, &nprows, &npcols, &myprow, &mypcol); - const int num_procs = nprows * npcols; - const int myid = Cblacs_pnum(ctxt, myprow, mypcol); - const int root_proc = Cblacs_pnum(ctxt, ParaV->desc[6], ParaV->desc[7]); -#endif - + ModuleBase::timer::tick("DiagoCusolver", "cusolver"); // Allocate memory for eigenvalues std::vector eigen(PARAM.globalv.nlocal, 0.0); - - // Start the timer for the cusolver operation - ModuleBase::timer::tick("DiagoCusolver", "cusolver"); - -#ifdef __MPI - if (num_procs > 1) - { - // gather matrices from processes to root process - gatherMatrix(myid, root_proc, h_mat, h_mat_g); - gatherMatrix(myid, root_proc, s_mat, s_mat_g); - } -#endif - - // Call the dense diagonalization routine -#ifdef __MPI - if (num_procs > 1) - { - MPI_Barrier(MPI_COMM_WORLD); - // global psi for distribute - int psi_len = myid == root_proc ? h_mat_g.row * h_mat_g.col : 1; - std::vector psi_g(psi_len); - if (myid == root_proc) - { - this->dc.Dngvd(h_mat_g.col, h_mat_g.row, h_mat_g.p.get(), s_mat_g.p.get(), eigen.data(), psi_g.data()); - } - - MPI_Barrier(MPI_COMM_WORLD); - - // broadcast eigenvalues to all processes - MPI_Bcast(eigen.data(), PARAM.inp.nbands, MPI_DOUBLE, root_proc, MPI_COMM_WORLD); - - // distribute psi to all processes - distributePsi(this->ParaV->desc_wfc, psi.get_pointer(), psi_g.data()); - } - else - { - // Be careful that h_mat.row * h_mat.col != psi.get_nbands() * psi.get_nbasis() under multi-k situation - std::vector eigenvectors(h_mat.row * h_mat.col); - this->dc.Dngvd(h_mat.row, h_mat.col, h_mat.p, s_mat.p, eigen.data(), eigenvectors.data()); - const int size = psi.get_nbands() * psi.get_nbasis(); - BlasConnector::copy(size, eigenvectors.data(), 1, psi.get_pointer(), 1); - } -#else std::vector eigenvectors(h_mat.row * h_mat.col); this->dc.Dngvd(h_mat.row, h_mat.col, h_mat.p, s_mat.p, eigen.data(), eigenvectors.data()); const int size = psi.get_nbands() * psi.get_nbasis(); BlasConnector::copy(size, eigenvectors.data(), 1, psi.get_pointer(), 1); -#endif - // Stop the timer for the cusolver operation - ModuleBase::timer::tick("DiagoCusolver", "cusolver"); - - // Copy the eigenvalues to the output arrays const int inc = 1; BlasConnector::copy(PARAM.inp.nbands, eigen.data(), inc, eigenvalue_in, inc); + ModuleBase::timer::tick("DiagoCusolver", "cusolver"); } // Explicit instantiation of the DiagoCusolver class for real and complex numbers diff --git a/source/source_hsolver/diago_cusolver.h b/source/source_hsolver/diago_cusolver.h index bdfdaa86ee..b8cd0fccd2 100644 --- a/source/source_hsolver/diago_cusolver.h +++ b/source/source_hsolver/diago_cusolver.h @@ -5,7 +5,6 @@ #include "source_hamilt/hamilt.h" #include "source_basis/module_ao/parallel_orbitals.h" #include "source_hsolver/kernels/cuda/diag_cusolver.cuh" -// #include "source_hsolver/kernels/cuda/dngvd_op.cu" namespace hsolver { @@ -17,15 +16,18 @@ class DiagoCusolver private: // Real is the real part of the complex type T using Real = typename GetTypeReal::type; - Parallel_Orbitals const * ParaV; public: - DiagoCusolver(const Parallel_Orbitals* ParaV = nullptr); + DiagoCusolver(); ~DiagoCusolver(); // Override the diag function for CUSOLVER diagonalization - void diag(hamilt::Hamilt* phm_in, psi::Psi& psi, Real* eigenvalue_in); + void diag( + hamilt::MatrixBlock& h_mat, + hamilt::MatrixBlock& s_mat, + psi::Psi& psi, + Real* eigenvalue_in); // Static variable to keep track of the decomposition state static int DecomposedState; diff --git a/source/source_hsolver/diago_dav_subspace.cpp b/source/source_hsolver/diago_dav_subspace.cpp index 4402fad9f8..4ff93d03e9 100644 --- a/source/source_hsolver/diago_dav_subspace.cpp +++ b/source/source_hsolver/diago_dav_subspace.cpp @@ -1,15 +1,18 @@ #include "diago_dav_subspace.h" #include "diago_iter_assist.h" -#include "source_base/memory.h" + #include "source_base/module_device/device.h" #include "source_base/timer.h" -#include "source_hsolver/kernels/dngvd_op.h" #include "source_base/kernels/math_kernel_op.h" -#include "source_hsolver/kernels/bpcg_kernel_op.h" // normalize_op, precondition_op, apply_eigenvalues_op #include "source_base/kernels/dsp/dsp_connector.h" +// #include "source_base/module_container/ATen/kernels/lapack.h" +#include + +#include "source_hsolver/kernels/hegvd_op.h" #include "source_hsolver/diag_hs_para.h" +#include "source_hsolver/kernels/bpcg_kernel_op.h" // normalize_op, precondition_op, apply_eigenvalues_op #include @@ -26,15 +29,14 @@ Diago_DavSubspace::Diago_DavSubspace(const std::vector& precond const int& david_ndim_in, const double& diag_thr_in, const int& diag_nmax_in, - const bool& need_subspace_in, const diag_comm_info& diag_comm_in, const int diag_subspace_in, const int diago_subspace_bs_in) : precondition(precondition_in), n_band(nband_in), dim(nbasis_in), nbase_x(nband_in * david_ndim_in), - diag_thr(diag_thr_in), iter_nmax(diag_nmax_in), is_subspace(need_subspace_in), diag_comm(diag_comm_in), + diag_thr(diag_thr_in), iter_nmax(diag_nmax_in), diag_comm(diag_comm_in), diag_subspace(diag_subspace_in), diago_subspace_bs(diago_subspace_bs_in) { - this->device = base_device::get_device_type(this->ctx); + this->device = base_device::get_device_type(this->ctx); this->one = &one_; this->zero = &zero_; @@ -51,12 +53,12 @@ Diago_DavSubspace::Diago_DavSubspace(const std::vector& precond setmem_complex_op()(this->psi_in_iter, 0, this->nbase_x * this->dim); // the product of H and psi in the reduced psi set - resmem_complex_op()(this->hphi, this->nbase_x * this->dim, "DAV::hphi"); - setmem_complex_op()(this->hphi, 0, this->nbase_x * this->dim); + resmem_complex_op()(this->hpsi, this->nbase_x * this->dim, "DAV::hpsi"); + setmem_complex_op()(this->hpsi, 0, this->nbase_x * this->dim); // the product of S and psi in the reduced psi set - resmem_complex_op()(this->sphi, this->nbase_x * this->dim, "DAV::sphi"); - setmem_complex_op()(this->sphi, 0, this->nbase_x * this->dim); + resmem_complex_op()(this->spsi, this->nbase_x * this->dim, "DAV::spsi"); + setmem_complex_op()(this->spsi, 0, this->nbase_x * this->dim); // Hamiltonian on the reduced psi set resmem_complex_op()(this->hcc, this->nbase_x * this->nbase_x, "DAV::hcc"); @@ -75,7 +77,9 @@ Diago_DavSubspace::Diago_DavSubspace(const std::vector& precond if (this->device == base_device::GpuDevice) { resmem_real_op()(this->d_precondition, nbasis_in); - // syncmem_var_h2d_op()(this->ctx, this->cpu_ctx, this->d_precondition, this->precondition.data(), nbasis_in); + syncmem_var_h2d_op()(this->d_precondition, this->precondition.data(), nbasis_in); + resmem_complex_op()(this->d_scc, this->nbase_x * this->nbase_x); + resmem_real_op()(this->d_eigenvalue, this->nbase_x); } #endif } @@ -85,7 +89,8 @@ Diago_DavSubspace::~Diago_DavSubspace() { delmem_complex_op()(this->psi_in_iter); - delmem_complex_op()(this->hphi); + delmem_complex_op()(this->hpsi); + delmem_complex_op()(this->spsi); delmem_complex_op()(this->hcc); delmem_complex_op()(this->scc); delmem_complex_op()(this->vcc); @@ -94,6 +99,8 @@ Diago_DavSubspace::~Diago_DavSubspace() if (this->device == base_device::GpuDevice) { delmem_real_op()(this->d_precondition); + delmem_complex_op()(this->d_scc); + delmem_real_op()(this->d_eigenvalue); } #endif } @@ -125,25 +132,22 @@ int Diago_DavSubspace::diag_once(const HPsiFunc& hpsi_func, ModuleBase::timer::tick("Diago_DavSubspace", "first"); + syncmem_complex_2d_op()(this->psi_in_iter, this->dim, psi_in, psi_in_dmax, this->dim, this->n_band); for (int m = 0; m < this->n_band; m++) { unconv[m] = m; - - syncmem_complex_op()(this->psi_in_iter + m * this->dim, - psi_in + m * psi_in_dmax, - this->dim); } // compute h*psi_in_iter // NOTE: bands after the first n_band should yield zero - // hphi[:, 0:nbase_x] = H * psi_in_iter[:, 0:nbase_x] - hpsi_func(this->psi_in_iter, this->hphi, this->dim, this->notconv); + // hpsi[:, 0:nbase_x] = H * psi_in_iter[:, 0:nbase_x] + hpsi_func(this->psi_in_iter, this->hpsi, this->dim, this->notconv); // compute s*psi_in_iter - // sphi[:, 0:nbase_x] = S * psi_in_iter[:, 0:nbase_x] - spsi_func(this->psi_in_iter, this->sphi, this->dim, this->notconv); + // spsi[:, 0:nbase_x] = S * psi_in_iter[:, 0:nbase_x] + spsi_func(this->psi_in_iter, this->spsi, this->dim, this->notconv); - this->cal_elem(this->dim, nbase, this->notconv, this->psi_in_iter, this->sphi, this->hphi, this->hcc, this->scc); + this->cal_elem(this->dim, nbase, this->notconv, this->psi_in_iter, this->spsi, this->hpsi, this->hcc, this->scc); this->diag_zhegvx(nbase, this->notconv, this->hcc, this->scc, this->nbase_x, &eigenvalue_iter, this->vcc); @@ -166,8 +170,8 @@ int Diago_DavSubspace::diag_once(const HPsiFunc& hpsi_func, nbase, this->notconv, this->psi_in_iter, - this->hphi, - this->sphi, + this->hpsi, + this->spsi, this->vcc, unconv.data(), &eigenvalue_iter); @@ -176,8 +180,8 @@ int Diago_DavSubspace::diag_once(const HPsiFunc& hpsi_func, nbase, this->notconv, this->psi_in_iter, - this->sphi, - this->hphi, + this->spsi, + this->hpsi, this->hcc, this->scc); @@ -243,20 +247,15 @@ int Diago_DavSubspace::diag_once(const HPsiFunc& hpsi_func, // estimate of the eigenvectors and set the basis dimension to N; // update this->psi_in_iter according to psi_in - for (size_t i = 0; i < this->n_band; i++) - { - syncmem_complex_op()(this->psi_in_iter + i * this->dim, - psi_in + i * psi_in_dmax, - this->dim); - } + syncmem_complex_2d_op()(this->psi_in_iter, this->dim, psi_in, psi_in_dmax, this->dim, this->n_band); this->refresh(this->dim, this->n_band, nbase, eigenvalue_in_hsolver, this->psi_in_iter, - this->hphi, - this->sphi, + this->hpsi, + this->spsi, this->hcc, this->scc, this->vcc); @@ -279,7 +278,7 @@ void Diago_DavSubspace::cal_grad(const HPsiFunc& hpsi_func, const int& nbase, const int& notconv, T* psi_iter, - T* hphi, + T* hpsi, T* spsi, T* vcc, const int* unconv, @@ -296,6 +295,8 @@ void Diago_DavSubspace::cal_grad(const HPsiFunc& hpsi_func, } } + if (notconv > 1){ + #ifdef __DSP ModuleBase::gemm_op_mt() #else @@ -307,40 +308,49 @@ void Diago_DavSubspace::cal_grad(const HPsiFunc& hpsi_func, notconv, nbase, this->one, - hphi, + hpsi, this->dim, vcc, this->nbase_x, this->zero, psi_iter + (nbase) * this->dim, this->dim); - - // Eigenvalues operation section - std::vector e_temp_cpu(this->notconv, 0); - Real* e_temp_hd = e_temp_cpu.data(); - if (this->device == base_device::GpuDevice) + } else { - e_temp_hd = nullptr; - resmem_real_op()(e_temp_hd, nbase); - } - for (int m = 0; m < this->notconv; m++) - { - e_temp_cpu[m] = -(*eigenvalue_iter)[m]; +#ifdef __DSP + ModuleBase::gemv_op_mt() +#else + ModuleBase::gemv_op() +#endif + ('N', + this->dim, // m: row of A + nbase, // n: col of A + this->one, // alpha + hpsi, // A dim * nbase + this->dim, // LDA: if(N) max(1,m) + vcc, // X nbase + 1, // incx + this->zero, // beta + psi_iter + (nbase) * this->dim, // Y dim + 1 // incy + ); } - if (this->device == base_device::GpuDevice) - { - syncmem_var_h2d_op()(e_temp_hd, e_temp_cpu.data(), this->notconv); - } - - apply_eigenvalues_op()(nbase, this->nbase_x, this->notconv, this->vcc, this->vcc, e_temp_hd); + // Eigenvalues operation section + Real* e_temp_hd = eigenvalue_iter->data(); if (this->device == base_device::GpuDevice) { - delmem_real_op()(e_temp_hd); + syncmem_var_h2d_op()(this->d_eigenvalue, eigenvalue_iter->data(), this->nbase_x); + e_temp_hd = this->d_eigenvalue; } + // vcc = - vcc * eigenvalue + ModuleBase::matrix_mul_vector_op()(nbase, notconv, vcc, this->nbase_x, e_temp_hd, -1.0, vcc, this->nbase_x); + + if (notconv > 1){ + #ifdef __DSP ModuleBase::gemm_op_mt() #else @@ -352,29 +362,44 @@ void Diago_DavSubspace::cal_grad(const HPsiFunc& hpsi_func, notconv, nbase, this->one, - sphi, + spsi, this->dim, vcc, this->nbase_x, this->one, psi_iter + nbase * this->dim, this->dim); + } else + { +#ifdef __DSP + ModuleBase::gemv_op_mt() +#else + ModuleBase::gemv_op() +#endif + ('N', + this->dim, // m: row of A + nbase, // n: col of A + this->one, // alpha + spsi, // A dim * nbase + this->dim, // LDA: if(N) max(1,m) + vcc, // X nbase + 1, // incx + this->one, // beta + psi_iter + nbase * this->dim, // Y dim + 1 // incy + ); + } // Precondition section #if defined(__CUDA) || defined(__ROCM) if (this->device == base_device::GpuDevice) { - Real* eigenvalues_gpu = nullptr; - resmem_real_op()(eigenvalues_gpu, notconv); - syncmem_var_h2d_op()(eigenvalues_gpu, (*eigenvalue_iter).data(), notconv); - precondition_op()(this->dim, psi_iter, nbase, notconv, d_precondition, - eigenvalues_gpu); - delmem_real_op()(eigenvalues_gpu); + this->d_eigenvalue); } else #endif @@ -393,9 +418,8 @@ void Diago_DavSubspace::cal_grad(const HPsiFunc& hpsi_func, { Real* psi_norm = nullptr; resmem_real_op()(psi_norm, notconv); - using setmem_real_op = base_device::memory::set_memory_op; setmem_real_op()(psi_norm, 0.0, notconv); - + normalize_op()(this->dim, psi_iter, nbase, @@ -416,8 +440,8 @@ void Diago_DavSubspace::cal_grad(const HPsiFunc& hpsi_func, // update hpsi[:, nbase:nbase+notconv] // hpsi[:, nbase:nbase+notconv] = H * psi_iter[:, nbase:nbase+notconv] - hpsi_func(psi_iter + nbase * dim, hphi + nbase * this->dim, this->dim, notconv); - spsi_func(psi_iter + nbase * dim, sphi + nbase * this->dim, this->dim, notconv); + hpsi_func(psi_iter + nbase * dim, hpsi + nbase * this->dim, this->dim, notconv); + spsi_func(psi_iter + nbase * dim, spsi + nbase * this->dim, this->dim, notconv); ModuleBase::timer::tick("Diago_DavSubspace", "cal_grad"); return; @@ -429,12 +453,13 @@ void Diago_DavSubspace::cal_elem(const int& dim, const int& notconv, const T* psi_iter, const T* spsi, - const T* hphi, + const T* hpsi, T* hcc, T* scc) { ModuleBase::timer::tick("Diago_DavSubspace", "cal_elem"); + if (notconv > 1){ #ifdef __DSP ModuleBase::gemm_op_mt() #else @@ -448,7 +473,7 @@ void Diago_DavSubspace::cal_elem(const int& dim, this->one, psi_iter, this->dim, - &hphi[nbase * this->dim], + &hpsi[nbase * this->dim], this->dim, this->zero, &hcc[nbase * this->nbase_x], @@ -473,6 +498,46 @@ void Diago_DavSubspace::cal_elem(const int& dim, &scc[nbase * this->nbase_x], this->nbase_x); + } else { + +#ifdef __DSP + ModuleBase::gemv_op_mt() +#else + ModuleBase::gemv_op() +#endif + ('C', + this->dim, // m: row of A + nbase + notconv, // n: col of A + this->one, // alpha + psi_iter, // A dim * nbase + this->dim, // LDA: if(N) max(1,m) + &hpsi[nbase * this->dim], // X nbase + 1, // incx + this->zero, // beta + &hcc[nbase * this->nbase_x], // Y dim + 1 // incy + ); +#ifdef __DSP + ModuleBase::gemv_op_mt() +#else + ModuleBase::gemv_op() +#endif + ('C', + this->dim, // m: row of A + nbase + notconv, // n: col of A + this->one, // alpha + psi_iter, // A dim * nbase + this->dim, // LDA: if(N) max(1,m) + spsi + nbase * this->dim, // X nbase + 1, // incx + this->zero, // beta + &scc[nbase * this->nbase_x], // Y dim + 1 // incy + ); + + } + + #ifdef __MPI if (this->diag_comm.nproc > 1) { @@ -564,34 +629,9 @@ void Diago_DavSubspace::diag_zhegvx(const int& nbase, #if defined(__CUDA) || defined(__ROCM) if (this->diag_comm.rank == 0) { - Real* eigenvalue_gpu = nullptr; - resmem_real_op()(eigenvalue_gpu, this->nbase_x); - - syncmem_var_h2d_op()(eigenvalue_gpu, (*eigenvalue_iter).data(), this->nbase_x); - - T* hcc_gpu = nullptr; - T* scc_gpu = nullptr; - T* vcc_gpu = nullptr; - base_device::memory::resize_memory_op()(hcc_gpu, nbase * nbase); - base_device::memory::resize_memory_op()(scc_gpu, nbase * nbase); - base_device::memory::resize_memory_op()(vcc_gpu, nbase * nbase); - for(int i=0;i()(hcc_gpu + i * nbase, hcc + i * nbase_x, nbase); - base_device::memory::synchronize_memory_op()(scc_gpu + i * nbase, scc + i * nbase_x, nbase); - } - dngvd_op()(this->ctx, nbase, nbase, hcc_gpu, scc_gpu, eigenvalue_gpu, vcc_gpu); - for(int i=0;i()(vcc + i * nbase_x, vcc_gpu + i * nbase, nbase); - } - delmem_complex_op()(hcc_gpu); - delmem_complex_op()(scc_gpu); - delmem_complex_op()(vcc_gpu); - - syncmem_var_d2h_op()((*eigenvalue_iter).data(), eigenvalue_gpu, this->nbase_x); - - delmem_real_op()(eigenvalue_gpu); + syncmem_complex_op()(this->d_scc, scc, nbase * this->nbase_x); + ct::kernels::lapack_hegvd()(nbase, this->nbase_x, this->hcc, this->d_scc, this->d_eigenvalue, this->vcc); + syncmem_var_d2h_op()((*eigenvalue_iter).data(), this->d_eigenvalue, this->nbase_x); } #endif } @@ -612,7 +652,7 @@ void Diago_DavSubspace::diag_zhegvx(const int& nbase, s_diag[i][j] = scc[i * this->nbase_x + j]; } } - dngvx_op()(this->ctx, + hegvx_op()(this->ctx, nbase, this->nbase_x, this->hcc, @@ -641,7 +681,7 @@ void Diago_DavSubspace::diag_zhegvx(const int& nbase, } else { -#ifdef __MPI +#ifdef __MPI std::vector h_diag; std::vector s_diag; std::vector vcc_tmp; @@ -680,7 +720,7 @@ void Diago_DavSubspace::diag_zhegvx(const int& nbase, } #else std::cout << "Error: parallel diagonalization is not supported in serial mode." << std::endl; - exit(1); + exit(1); #endif } } @@ -708,8 +748,8 @@ void Diago_DavSubspace::refresh(const int& dim, const Real* eigenvalue_in_hsolver, // const psi::Psi& psi, T* psi_iter, - T* hphi, - T* sphi, + T* hpsi, + T* spsi, T* hcc, T* scc, T* vcc) @@ -727,7 +767,7 @@ void Diago_DavSubspace::refresh(const int& dim, nband, nbase, this->one, - this->hphi, + this->hpsi, this->dim, this->vcc, this->nbase_x, @@ -735,8 +775,8 @@ void Diago_DavSubspace::refresh(const int& dim, psi_iter + nband * this->dim, this->dim); - // update hphi - syncmem_complex_op()(hphi, psi_iter + nband * this->dim, this->dim * nband); + // update hpsi + syncmem_complex_op()(hpsi, psi_iter + nband * this->dim, this->dim * nband); #ifdef __DSP ModuleBase::gemm_op_mt() @@ -749,7 +789,7 @@ void Diago_DavSubspace::refresh(const int& dim, nband, nbase, this->one, - this->sphi, + this->spsi, this->dim, this->vcc, this->nbase_x, @@ -757,54 +797,19 @@ void Diago_DavSubspace::refresh(const int& dim, psi_iter + nband * this->dim, this->dim); - // update sphi - syncmem_complex_op()(sphi, psi_iter + nband * this->dim, this->dim * nband); + // update spsi + syncmem_complex_op()(spsi, psi_iter + nband * this->dim, this->dim * nband); nbase = nband; // set hcc/scc/vcc to 0 - for (size_t i = 0; i < nbase; i++) - { - setmem_complex_op()(&hcc[this->nbase_x * i], 0, nbase); - setmem_complex_op()(&scc[this->nbase_x * i], 0, nbase); - setmem_complex_op()(&vcc[this->nbase_x * i], 0, nbase); - } + setmem_complex_2d_op()(hcc, this->nbase_x, 0, nbase, nbase); + setmem_complex_2d_op()(scc, this->nbase_x, 0, nbase, nbase); + setmem_complex_2d_op()(vcc, this->nbase_x, 0, nbase, nbase); if (this->device == base_device::GpuDevice) { -#if defined(__CUDA) || defined(__ROCM) - T* hcc_cpu = nullptr; - T* scc_cpu = nullptr; - T* vcc_cpu = nullptr; - base_device::memory::resize_memory_op()(hcc_cpu, - this->nbase_x * this->nbase_x, - "DAV::hcc"); - base_device::memory::resize_memory_op()(scc_cpu, - this->nbase_x * this->nbase_x, - "DAV::scc"); - base_device::memory::resize_memory_op()(vcc_cpu, - this->nbase_x * this->nbase_x, - "DAV::vcc"); - - syncmem_d2h_op()(hcc_cpu, hcc, this->nbase_x * this->nbase_x); - syncmem_d2h_op()(scc_cpu, scc, this->nbase_x * this->nbase_x); - syncmem_d2h_op()(vcc_cpu, vcc, this->nbase_x * this->nbase_x); - - for (int i = 0; i < nbase; i++) - { - hcc_cpu[i * this->nbase_x + i] = eigenvalue_in_hsolver[i]; - scc_cpu[i * this->nbase_x + i] = this->one[0]; - vcc_cpu[i * this->nbase_x + i] = this->one[0]; - } - - syncmem_h2d_op()(hcc, hcc_cpu, this->nbase_x * this->nbase_x); - syncmem_h2d_op()(scc, scc_cpu, this->nbase_x * this->nbase_x); - syncmem_h2d_op()(vcc, vcc_cpu, this->nbase_x * this->nbase_x); - - base_device::memory::delete_memory_op()(hcc_cpu); - base_device::memory::delete_memory_op()(scc_cpu); - base_device::memory::delete_memory_op()(vcc_cpu); -#endif + refresh_hcc_scc_vcc_op()(nbase, hcc, scc, vcc, this->nbase_x, this->d_eigenvalue, this->one_); } else { diff --git a/source/source_hsolver/diago_dav_subspace.h b/source/source_hsolver/diago_dav_subspace.h index 3b4c224ec8..6ad3300b18 100644 --- a/source/source_hsolver/diago_dav_subspace.h +++ b/source/source_hsolver/diago_dav_subspace.h @@ -5,6 +5,8 @@ #include "source_base/module_device/device.h" // base_device #include "source_base/module_device/memory_op.h"// base_device::memory" +#include "source_base/module_container/ATen/kernels/lapack.h" + #include "source_hsolver/diag_comm_info.h" #include "source_hsolver/diag_const_nums.h" @@ -30,7 +32,6 @@ class Diago_DavSubspace const int& david_ndim_in, const double& diag_thr_in, const int& diag_nmax_in, - const bool& need_subspace_in, const diag_comm_info& diag_comm_in, const int diago_dav_method_in, const int block_size_in); @@ -58,9 +59,6 @@ class Diago_DavSubspace /// maximal iteration number const int iter_nmax; - /// is diagH_subspace needed? - const bool is_subspace; - /// the first dimension of the matrix to be diagonalized const int n_band = 0; @@ -80,10 +78,10 @@ class Diago_DavSubspace T* psi_in_iter = nullptr; /// the product of H and psi in the reduced basis set - T* hphi = nullptr; + T* hpsi = nullptr; /// the product of S and psi in the reduced basis set - T* sphi = nullptr; + T* spsi = nullptr; /// Hamiltonian on the reduced basis T* hcc = nullptr; @@ -94,6 +92,9 @@ class Diago_DavSubspace /// Eigenvectors on the reduced basis T* vcc = nullptr; + T* d_scc = nullptr; + Real* d_eigenvalue = nullptr; + /// device type of psi Device* ctx = {}; base_device::DEVICE_CPU* cpu_ctx = {}; @@ -105,7 +106,7 @@ class Diago_DavSubspace const int& nbase, const int& notconv, T* psi_iter, - T* hphi, + T* hpsi, T* spsi, T* vcc, const int* unconv, @@ -115,8 +116,8 @@ class Diago_DavSubspace int& nbase, const int& notconv, const T* psi_iter, - const T* sphi, - const T* hphi, + const T* spsi, + const T* hpsi, T* hcc, T* scc); @@ -125,8 +126,8 @@ class Diago_DavSubspace int& nbase, const Real* eigenvalue, T* psi_iter, - T* hphi, - T* sphi, + T* hpsi, + T* spsi, T* hcc, T* scc, T* vcc); @@ -176,6 +177,7 @@ class Diago_DavSubspace using delmem_real_op = base_device::memory::delete_memory_op; #endif using setmem_real_op = base_device::memory::set_memory_op; + using setmem_complex_2d_op = base_device::memory::set_memory_2d_op; using resmem_real_h_op = base_device::memory::resize_memory_op; using delmem_real_h_op = base_device::memory::delete_memory_op; @@ -184,14 +186,19 @@ class Diago_DavSubspace using syncmem_var_h2d_op = base_device::memory::synchronize_memory_op; using syncmem_var_d2h_op = base_device::memory::synchronize_memory_op; using syncmem_complex_op = base_device::memory::synchronize_memory_op; + using syncmem_complex_2d_op = base_device::memory::synchronize_memory_2d_op; using castmem_complex_op = base_device::memory::cast_memory_op, T, Device, Device>; using syncmem_h2d_op = base_device::memory::synchronize_memory_op; using syncmem_d2h_op = base_device::memory::synchronize_memory_op; + // Note that ct_Device is different from base_device! + using ct_Device = typename ct::PsiToContainer::type; + // using hegvd_op = container::kernels::lapack_hegvd; + const T *one = nullptr, *zero = nullptr, *neg_one = nullptr; const T one_ = static_cast(1.0), zero_ = static_cast(0.0), neg_one_ = static_cast(-1.0); }; } // namespace hsolver -#endif \ No newline at end of file +#endif diff --git a/source/source_hsolver/diago_david.cpp b/source/source_hsolver/diago_david.cpp index ef7dd07423..49d5d0d953 100644 --- a/source/source_hsolver/diago_david.cpp +++ b/source/source_hsolver/diago_david.cpp @@ -4,7 +4,7 @@ #include "source_base/tool_title.h" // ModuleBase::TITLE #include "source_base/module_device/device.h" -#include "source_hsolver/kernels/dngvd_op.h" +#include "source_hsolver/kernels/hegvd_op.h" #include "source_base/kernels/math_kernel_op.h" @@ -12,7 +12,7 @@ using namespace hsolver; template -DiagoDavid::DiagoDavid(const Real* precondition_in, +DiagoDavid::DiagoDavid(const Real* precondition_in, const int nband_in, const int dim_in, const int david_ndim_in, @@ -20,7 +20,7 @@ DiagoDavid::DiagoDavid(const Real* precondition_in, const diag_comm_info& diag_comm_in) : nband(nband_in), dim(dim_in), nbase_x(david_ndim_in * nband_in), david_ndim(david_ndim_in), use_paw(use_paw_in), diag_comm(diag_comm_in) { - this->device = base_device::get_device_type(this->ctx); + this->device = base_device::get_device_type(this->ctx); this->precondition = precondition_in; this->one = &one_; @@ -80,7 +80,7 @@ DiagoDavid::DiagoDavid(const Real* precondition_in, resmem_complex_op()(this->vcc, nbase_x * nbase_x, "DAV::vcc"); setmem_complex_op()(this->vcc, 0, nbase_x * nbase_x); //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< - + // lagrange_matrix(nband, nband); // for orthogonalization resmem_complex_op()(this->lagrange_matrix, nband * nband); setmem_complex_op()(this->lagrange_matrix, 0, nband * nband); @@ -351,7 +351,24 @@ void DiagoDavid::cal_grad(const HPsiFunc& hpsi_func, // basis[nbase] = hpsi * vc_ev_vector = hpsi*vcc // basis' = vc_ev_vector' * hpsi' // (dim, notconv) (dim, nbase) (nbase, notconv) - ModuleBase::gemm_op()('N', + if (notconv == 1){ + //Reuse gemv for vector case to avoid potential bug using gemm call with n=1 + ModuleBase::gemv_op()('N', + dim, // m: row of A + nbase, // n: col of A + this->one, // alpha + hpsi, // A dim * nbase + dim, // LDA: if(N) max(1,m) + vc_ev_vector, // X nbase + 1, // incx + this->zero, // beta + basis + dim * nbase, // Y dim + 1 // incy + ); + + }else + { + ModuleBase::gemm_op()('N', 'N', dim, // m: row of A,C notconv, // n: col of B,C @@ -364,7 +381,8 @@ void DiagoDavid::cal_grad(const HPsiFunc& hpsi_func, this->zero, // belta basis + dim * nbase, // C dim * notconv dim // LDC: if(N) max(1, m) - ); + ); + } //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< // for (int m = 0; m < notconv; m++) @@ -409,22 +427,39 @@ void DiagoDavid::cal_grad(const HPsiFunc& hpsi_func, // basis[nbase] = basis[nbase] - spsi * vc_ev_vector // = hpsi - spsi * lambda * vcc // = (H - lambda * S) * psi * vcc - // = (H - lambda * S) * psi_new + // = (H - lambda * S) * psi_new //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< - ModuleBase::gemm_op()('N', - 'N', - dim, // m: row of A,C - notconv, // n: col of B,C - nbase, // k: col of A, row of B - this->one, // alpha - spsi, // A - dim, // LDA: if(N) max(1,m) if(T) max(1,k) - vc_ev_vector, // B - nbase, // LDB: if(N) max(1,k) if(T) max(1,n) - this->one, // belta - basis + dim * nbase, // C dim * notconv - dim // LDC: if(N) max(1, m) - ); + if (notconv == 1){ + //Use gemv for vector case to avoid potential bug using gemm call with n=1 + ModuleBase::gemv_op()('N', + dim, // m: row of A + nbase, // n: col of A + this->one, // alpha + spsi, // A dim * nbase + dim, // LDA: if(N) max(1,m) + vc_ev_vector, // X nbase + 1, // incx + this->one, // beta + basis + dim * nbase, // Y dim + 1 //incy + ); + } else + { + ModuleBase::gemm_op()('N', + 'N', + dim, // m: row of A,C + notconv, // n: col of B,C + nbase, // k: col of A, row of B + this->one, // alpha + spsi, // A + dim, // LDA: if(N) max(1,m) if(T) max(1,k) + vc_ev_vector, // B + nbase, // LDB: if(N) max(1,k) if(T) max(1,n) + this->one, // beta + basis + dim * nbase, // C dim * notconv + dim // LDC: if(N) max(1, m) + ); + } //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< // Preconditioning @@ -478,20 +513,37 @@ void DiagoDavid::cal_grad(const HPsiFunc& hpsi_func, // first nbase bands psi* dot notconv bands spsi to prepare lagrange_matrix // calculate the square matrix for future lagranges - ModuleBase::gemm_op()('C', - 'N', - nbase, // m: row of A,C - notconv, // n: col of B,C - dim, // k: col of A, row of B - this->one, // alpha - basis, // A - dim, // LDA: if(N) max(1,m) if(T) max(1,k) - &spsi[nbase * dim], // B - dim, // LDB: if(N) max(1,k) if(T) max(1,n) - this->zero, // belta - lagrange, // C - nbase + notconv // LDC: if(N) max(1, m) - ); + if (notconv == 1){ + //Use gemv for vector case to avoid potential bug using gemm call with n=1 + ModuleBase::gemv_op()('C', + dim, // m: row of A + nbase, // n: col of A + this->one, // alpha + basis, // A dim * nbase + dim, // LDA: if(N) max(1,m) + &spsi[nbase * dim], // X dim + 1, // incx + this->zero, // beta + lagrange, // Y nbase + 1 + ); + } else + { + ModuleBase::gemm_op()('C', + 'N', + nbase, // m: row of A,C + notconv, // n: col of B,C + dim, // k: col of A, row of B + this->one, // alpha + basis, // A + dim, // LDA: if(N) max(1,m) if(T) max(1,k) + &spsi[nbase * dim], // B + dim, // LDB: if(N) max(1,k) if(T) max(1,n) + this->zero, // belta + lagrange, // C + nbase + notconv // LDC: if(N) max(1, m) + ); + } for (int m = 0; m < notconv; m++) { @@ -622,7 +674,8 @@ void DiagoDavid::diag_zhegvx(const int& nbase, resmem_var_op()(eigenvalue_gpu, nbase_x); syncmem_var_h2d_op()(eigenvalue_gpu, this->eigenvalue, nbase_x); - dnevx_op()(this->ctx, nbase, nbase_x, hcc, nband, eigenvalue_gpu, vcc); + // heevx_op()(this->ctx, nbase, nbase_x, hcc, nband, eigenvalue_gpu, vcc); + ct::kernels::lapack_heevx()(nbase, nbase_x, hcc, nband, eigenvalue_gpu, vcc); syncmem_var_d2h_op()(this->eigenvalue, eigenvalue_gpu, nbase_x); delmem_var_op()(eigenvalue_gpu); @@ -630,7 +683,8 @@ void DiagoDavid::diag_zhegvx(const int& nbase, } else { - dnevx_op()(this->ctx, nbase, nbase_x, hcc, nband, this->eigenvalue, vcc); + //heevx_op()(this->ctx, nbase, nbase_x, hcc, nband, this->eigenvalue, vcc); + ct::kernels::lapack_heevx()(nbase, nbase_x, hcc, nband, this->eigenvalue, vcc); } } diff --git a/source/source_hsolver/diago_david.h b/source/source_hsolver/diago_david.h index 5b65f22cec..75a745d326 100644 --- a/source/source_hsolver/diago_david.h +++ b/source/source_hsolver/diago_david.h @@ -5,7 +5,10 @@ #include "source_base/module_device/device.h" // base_device #include "source_base/module_device/memory_op.h"// base_device::memory +#include "source_base/module_container/ATen/kernels/lapack.h" // container::kernels + #include "source_hsolver/diag_comm_info.h" +#include "source_hsolver/kernels/hegvd_op.h" #include #include @@ -26,16 +29,16 @@ template , typename Device = base_device::DEVI class DiagoDavid { private: - // Note GetTypeReal::type will - // return T if T is real type(float, double), + // Note GetTypeReal::type will + // return T if T is real type(float, double), // otherwise return the real type of T(complex, std::complex) using Real = typename GetTypeReal::type; - + public: /** * @brief Constructor for the DiagoDavid class. - * + * * @param[in] precondition_in Pointer to the preconditioning matrix. * @param[in] nband_in Number of eigenpairs required(i.e. bands). * @param[in] dim_in Dimension of the matrix. @@ -44,10 +47,10 @@ class DiagoDavid * the reduced basis set before \b restart of Davidson. * @param[in] use_paw_in Flag indicating whether to use PAW. * @param[in] diag_comm_in Communication information for diagonalization. - * + * * @tparam T The data type of the matrices and arrays. * @tparam Device The device type (base_device::DEVICE_CPU or DEVICE_GPU). - * + * * @note Auxiliary memory is allocated in the constructor and deallocated in the destructor. */ DiagoDavid(const Real* precondition_in, @@ -59,10 +62,10 @@ class DiagoDavid /** * @brief Destructor for the DiagoDavid class. - * + * * This destructor releases the dynamically allocated memory used by the class members. * It deletes the basis, hpsi, spsi, hcc, vcc, lagrange_matrix, and eigenvalue arrays. - * + * */ ~DiagoDavid(); @@ -75,7 +78,7 @@ class DiagoDavid * This function type is used to define a matrix-blockvector operator H. * For eigenvalue problem HX = λX or generalized eigenvalue problem HX = λSX, * this function computes the product of the Hamiltonian matrix H and a blockvector X. - * + * * Called as follows: * hpsi(X, HX, ld, nvec) where X and HX are (ld, nvec)-shaped blockvectors. * Result HX = H * X is stored in HX. @@ -84,7 +87,7 @@ class DiagoDavid * @param[in] HX Head address of output blockvector of type `T*`. * @param[in] ld Leading dimension of blockvector. * @param[in] nvec Number of vectors in a block. - * + * * @warning X and HX are the exact address to read input X and store output H*X, * @warning both of size ld * nvec. */ @@ -92,7 +95,7 @@ class DiagoDavid /** * @brief A function type representing the SX function. - * + * * nrow is leading dimension of spsi, npw is leading dimension of psi, nbands is number of vecs * * This function type is used to define a matrix-blockvector operator S. @@ -108,9 +111,9 @@ class DiagoDavid /** * @brief Performs iterative diagonalization using the David algorithm. - * + * * @warning Please see docs of `HPsiFunc` for more information about the hpsi mat-vec interface. - * + * * @tparam T The type of the elements in the matrix. * @tparam Device The device type (CPU or GPU). * @param hpsi_func The function object that computes the matrix-blockvector product H * psi. @@ -123,13 +126,13 @@ class DiagoDavid * @param ntry_max The maximum number of attempts for the diagonalization restart. * @param notconv_max The maximum number of bands unconverged allowed. * @return The total number of iterations performed during the diagonalization. - * + * * @note ntry_max is an empirical parameter that should be specified in external routine, default 5 * notconv_max is determined by the accuracy required for the calculation, default 0 */ int diag( - const HPsiFunc& hpsi_func, // function void hpsi(T*, T*, const int, const int) - const SPsiFunc& spsi_func, // function void spsi(T*, T*, const int, const int, const int) + const HPsiFunc& hpsi_func, // function void hpsi(T*, T*, const int, const int) + const SPsiFunc& spsi_func, // function void spsi(T*, T*, const int, const int, const int) const int ld_psi, // Leading dimension of the psi input T *psi_in, // Pointer to eigenvectors Real* eigenvalue_in, // Pointer to store the resulting eigenvalues @@ -218,7 +221,7 @@ class DiagoDavid /** * Calculates the elements of the diagonalization matrix for the DiagoDavid class. - * + * * @param dim The dimension of the problem. * @param nbase The current dimension of the reduced basis. * @param nbase_x The maximum dimension of the reduced basis set. @@ -237,7 +240,7 @@ class DiagoDavid /** * Refreshes the diagonalization solver by updating the basis and the reduced Hamiltonian. - * + * * @param dim The dimension of the problem. * @param nband The number of bands. * @param nbase The number of basis states. @@ -249,7 +252,7 @@ class DiagoDavid * @param spsi Pointer to the output array for the updated basis set (nband-th column). * @param hcc Pointer to the output array for the updated reduced Hamiltonian. * @param vcc Pointer to the output array for the updated eigenvector matrix. - * + * */ void refresh(const int& dim, const int& nband, @@ -286,7 +289,7 @@ class DiagoDavid /** * @brief Plans the Schmidt orthogonalization for a given number of bands. - * + * * @tparam T The type of the elements in the vectors. * @tparam Device The device on which the computation will be performed. * @param nband The number of bands. @@ -338,6 +341,8 @@ class DiagoDavid using syncmem_h2d_op = base_device::memory::synchronize_memory_op; using syncmem_d2h_op = base_device::memory::synchronize_memory_op; + // Note that ct_Device is different from base_device! + using ct_Device = typename ct::PsiToContainer::type; // using hpsi_info = typename hamilt::Operator::hpsi_info; // Dependence of hpsi removed const T *one = nullptr, *zero = nullptr, *neg_one = nullptr; diff --git a/source/source_hsolver/diago_elpa_native.cpp b/source/source_hsolver/diago_elpa_native.cpp index f320191d28..dc4bf2b6d7 100644 --- a/source/source_hsolver/diago_elpa_native.cpp +++ b/source/source_hsolver/diago_elpa_native.cpp @@ -77,7 +77,7 @@ void DiagoElpaNative::diag_pool(hamilt::MatrixBlock& h_mat, } // elpa_init(20210430); - int success; + int success = 0; elpa_t handle = elpa_allocate(&success); #ifdef _OPENMP int num_threads = omp_get_max_threads(); diff --git a/source/source_hsolver/diago_iter_assist.cpp b/source/source_hsolver/diago_iter_assist.cpp index 916ea0d3fc..8c5673c37a 100644 --- a/source/source_hsolver/diago_iter_assist.cpp +++ b/source/source_hsolver/diago_iter_assist.cpp @@ -6,7 +6,7 @@ #include "source_base/module_device/device.h" #include "source_base/parallel_reduce.h" #include "source_base/timer.h" -#include "source_hsolver/kernels/dngvd_op.h" +#include "source_hsolver/kernels/hegvd_op.h" #include "source_base/kernels/math_kernel_op.h" namespace hsolver @@ -18,39 +18,52 @@ namespace hsolver // Produces on output n_band eigenvectors (n_band <= nstart) in evc. //---------------------------------------------------------------------- template -void DiagoIterAssist::diagH_subspace(const hamilt::Hamilt* const pHamilt, // hamiltonian operator carrier +void DiagoIterAssist::diag_subspace(const hamilt::Hamilt* const pHamilt, // hamiltonian operator carrier const psi::Psi& psi, // [in] wavefunction - psi::Psi& evc, // [out] wavefunction + psi::Psi& evc, // [out] wavefunction, eigenvectors Real* en, // [out] eigenvalues - int n_band // [in] number of bands to be calculated, also number of rows + int n_band, // [in] number of bands to be calculated, also number of rows // of evc, if set to 0, n_band = nstart, default 0 + const bool S_orth // [in] if true, psi is assumed to be already S-orthogonalized ) { - ModuleBase::TITLE("DiagoAssist", "diag_subspace"); - ModuleBase::timer::tick("DiagoAssist", "diag_subspace"); + ModuleBase::TITLE("DiagoIterAssist", "diag_subspace"); + ModuleBase::timer::tick("DiagoIterAssist", "diag_subspace"); // two case: // 1. pw base: nstart = n_band, psi(nbands * npwx) // 2. lcao_in_pw base: nstart >= n_band, psi(NLOCAL * npwx) const int nstart = psi.get_nbands(); + // n_band = 0 means default, set n_band = nstart if (n_band == 0) { n_band = nstart; } assert(n_band <= nstart); + // scc is overlap (optional, only needed if input is not s-orthogonal) T *hcc = nullptr, *scc = nullptr, *vcc = nullptr; + + // hcc is reduced hamiltonian matrix resmem_complex_op()(hcc, nstart * nstart, "DiagSub::hcc"); - resmem_complex_op()(scc, nstart * nstart, "DiagSub::scc"); - resmem_complex_op()(vcc, nstart * nstart, "DiagSub::vcc"); setmem_complex_op()(hcc, 0, nstart * nstart); - setmem_complex_op()(scc, 0, nstart * nstart); + + // scc is overlap matrix, only needed when psi is not orthogonal + if(!S_orth){ + resmem_complex_op()(scc, nstart * nstart, "DiagSub::scc"); + setmem_complex_op()(scc, 0, nstart * nstart); + } + + // vcc is eigenvector matrix of the reduced generalized eigenvalue problem + resmem_complex_op()(vcc, nstart * nstart, "DiagSub::vcc"); setmem_complex_op()(vcc, 0, nstart * nstart); + // dmin is the active number of plane waves or atomic orbitals + // dmax is the leading dimension of psi const int dmin = psi.get_current_ngk(); const int dmax = psi.get_nbasis(); - T* temp = nullptr; + T *temp = nullptr; /// temporary array for calculation of evc bool in_place = false; ///< if temp and evc share the same memory if (psi.get_pointer() != evc.get_pointer() && psi.get_nbands() == evc.get_nbands()) { // use memory of evc as temp @@ -65,10 +78,10 @@ void DiagoIterAssist::diagH_subspace(const hamilt::Hamilt* { // code block to calculate hcc and scc setmem_complex_op()(temp, 0, nstart * dmax); - T* hphi = temp; + T *hpsi = temp; // do hPsi for all bands psi::Range all_bands_range(1, psi.get_current_k(), 0, nstart - 1); - hpsi_info hpsi_in(&psi, all_bands_range, hphi); + hpsi_info hpsi_in(&psi, all_bands_range, hpsi); pHamilt->ops->hPsi(hpsi_in); ModuleBase::gemm_op()('C', @@ -79,40 +92,50 @@ void DiagoIterAssist::diagH_subspace(const hamilt::Hamilt* &one, psi.get_pointer(), dmax, - hphi, + hpsi, dmax, &zero, hcc, nstart); - T* sphi = temp; - // do sPsi for all bands - pHamilt->sPsi(psi.get_pointer(), sphi, dmax, dmin, nstart); - - ModuleBase::gemm_op()('C', - 'N', - nstart, - nstart, - dmin, - &one, - psi.get_pointer(), - dmax, - sphi, - dmax, - &zero, - scc, - nstart); + if(!S_orth){ + // Only calculate S_sub if not orthogonal + T *spsi = temp; + // do sPsi for all bands + pHamilt->sPsi(psi.get_pointer(), spsi, dmax, dmin, nstart); + + ModuleBase::gemm_op()('C', + 'N', + nstart, + nstart, + dmin, + &one, + psi.get_pointer(), + dmax, + spsi, + dmax, + &zero, + scc, + nstart); + } } if (GlobalV::NPROC_IN_POOL > 1) { Parallel_Reduce::reduce_pool(hcc, nstart * nstart); - Parallel_Reduce::reduce_pool(scc, nstart * nstart); + if(!S_orth){ + Parallel_Reduce::reduce_pool(scc, nstart * nstart); + } } - // after generation of H and S matrix, diag them - DiagoIterAssist::diagH_LAPACK(nstart, n_band, hcc, scc, nstart, en, vcc); - + // after generation of H and (optionally) S matrix, diag them + if (S_orth) { + // Solve standard eigenproblem: H_sub * y = lambda * y + DiagoIterAssist::diag_heevx(nstart, n_band, hcc, nstart, en, vcc); + } else { + // Solve generalized eigenproblem: H_sub * y = lambda * S_sub * y + DiagoIterAssist::diag_hegvd(nstart, n_band, hcc, scc, nstart, en, vcc); + } const int ld_temp = in_place ? dmax : dmin; @@ -138,14 +161,16 @@ void DiagoIterAssist::diagH_subspace(const hamilt::Hamilt* delmem_complex_op()(temp); } delmem_complex_op()(hcc); - delmem_complex_op()(scc); + if(!S_orth){ + delmem_complex_op()(scc); + } delmem_complex_op()(vcc); - ModuleBase::timer::tick("DiagoAssist", "diag_subspace"); + ModuleBase::timer::tick("DiagoIterAssist", "diag_subspace"); } template -void DiagoIterAssist::diagH_subspace_init(hamilt::Hamilt* pHamilt, +void DiagoIterAssist::diag_subspace_init(hamilt::Hamilt* pHamilt, const T* psi, int psi_nr, int psi_nc, @@ -154,8 +179,8 @@ void DiagoIterAssist::diagH_subspace_init(hamilt::Hamilt* const std::function& add_to_hcc, const std::function& export_vcc) { - ModuleBase::TITLE("DiagoIterAssist", "diagH_subspace_init"); - ModuleBase::timer::tick("DiagoIterAssist", "diagH_subspace_init"); + ModuleBase::TITLE("DiagoIterAssist", "diag_subspace_init"); + ModuleBase::timer::tick("DiagoIterAssist", "diag_subspace_init"); // two case: // 1. pw base: nstart = n_band, psi(nbands * npwx) @@ -170,7 +195,7 @@ void DiagoIterAssist::diagH_subspace_init(hamilt::Hamilt* if (pHamilt->ops == nullptr) { ModuleBase::WARNING( - "DiagoIterAssist::diagH_subspace_init", + "DiagoIterAssist::diag_subspace_init", "Severe warning: Operators in Hamilt are not allocated yet, will return value of psi to evc directly\n"); for (int iband = 0; iband < n_band; iband++) { @@ -291,7 +316,7 @@ void DiagoIterAssist::diagH_subspace_init(hamilt::Hamilt* } }*/ - DiagoIterAssist::diagH_LAPACK(nstart, n_band, hcc, scc, nstart, en, vcc); + DiagoIterAssist::diag_hegvd(nstart, n_band, hcc, scc, nstart, en, vcc); export_vcc(vcc, nstart, n_band); @@ -353,35 +378,72 @@ void DiagoIterAssist::diagH_subspace_init(hamilt::Hamilt* delmem_complex_op()(hcc); delmem_complex_op()(scc); delmem_complex_op()(vcc); - ModuleBase::timer::tick("DiagoIterAssist", "diagH_subspace_init"); + ModuleBase::timer::tick("DiagoIterAssist", "diag_subspace_init"); +} + +template +void DiagoIterAssist::diag_heevx(const int matrix_size, + const int num_eigenpairs, + const T *h, + const int ldh, + Real *e, // always in CPU + T *v) +{ + ModuleBase::TITLE("DiagoIterAssist", "diag_heevx"); + ModuleBase::timer::tick("DiagoIterAssist", "diag_heevx"); + + Real *eigenvalues = nullptr; + // device memory for eigenvalues + resmem_var_op()(eigenvalues, matrix_size); + setmem_var_op()(eigenvalues, 0, matrix_size); + + // (const Device *d, const int matrix_size, const int lda, const T *A, const int num_eigenpairs, Real *eigenvalues, T *eigenvectors); + heevx_op()(ctx, matrix_size, ldh, h, num_eigenpairs, eigenvalues, v); + + if (base_device::get_device_type(ctx) == base_device::GpuDevice) + { +#if ((defined __CUDA) || (defined __ROCM)) + // eigenvalues to e, from device to host + syncmem_var_d2h_op()(e, eigenvalues, num_eigenpairs); +#endif + } + else if (base_device::get_device_type(ctx) == base_device::CpuDevice) + { + // eigenvalues to e + syncmem_var_op()(e, eigenvalues, num_eigenpairs); + } + + delmem_var_op()(eigenvalues); + + ModuleBase::timer::tick("DiagoIterAssist", "diag_heevx"); } template -void DiagoIterAssist::diagH_LAPACK(const int nstart, +void DiagoIterAssist::diag_hegvd(const int nstart, const int nbands, - const T* hcc, - const T* scc, + const T *hcc, + T *scc, const int ldh, // nstart - Real* e, // always in CPU - T* vcc) + Real *e, // always in CPU + T *vcc) { - ModuleBase::TITLE("DiagoIterAssist", "diagH_LAPACK"); - ModuleBase::timer::tick("DiagoIterAssist", "diagH_LAPACK"); + ModuleBase::TITLE("DiagoIterAssist", "diag_hegvd"); + ModuleBase::timer::tick("DiagoIterAssist", "diag_hegvd"); - Real* eigenvalues = nullptr; + Real *eigenvalues = nullptr; resmem_var_op()(eigenvalues, nstart); setmem_var_op()(eigenvalues, 0, nstart); - dngvd_op()(ctx, nstart, ldh, hcc, scc, eigenvalues, vcc); + hegvd_op()(ctx, nstart, ldh, hcc, scc, eigenvalues, vcc); - if (base_device::get_device_type(ctx) == base_device::GpuDevice) + if (base_device::get_device_type(ctx) == base_device::GpuDevice) { #if ((defined __CUDA) || (defined __ROCM)) // set eigenvalues in GPU to e in CPU syncmem_var_d2h_op()(e, eigenvalues, nbands); #endif } - else if (base_device::get_device_type(ctx) == base_device::CpuDevice) + else if (base_device::get_device_type(ctx) == base_device::CpuDevice) { // set eigenvalues in CPU to e in CPU syncmem_var_op()(e, eigenvalues, nbands); @@ -404,7 +466,7 @@ void DiagoIterAssist::diagH_LAPACK(const int nstart, // dngvx_op()(ctx, nstart, ldh, hcc, scc, nbands, res, vcc); // } - ModuleBase::timer::tick("DiagoIterAssist", "diagH_LAPACK"); + ModuleBase::timer::tick("DiagoIterAssist", "diag_hegvd"); } template @@ -428,10 +490,10 @@ void DiagoIterAssist::cal_hs_subspace(const hamilt::Hamilt { // code block to calculate hcc and scc setmem_complex_op()(temp, 0, nstart * dmax); - T* hphi = temp; + T* hpsi = temp; // do hPsi for all bands psi::Range all_bands_range(1, psi.get_current_k(), 0, nstart - 1); - hpsi_info hpsi_in(&psi, all_bands_range, hphi); + hpsi_info hpsi_in(&psi, all_bands_range, hpsi); pHamilt->ops->hPsi(hpsi_in); ModuleBase::gemm_op()('C', @@ -442,15 +504,15 @@ void DiagoIterAssist::cal_hs_subspace(const hamilt::Hamilt &one, psi.get_pointer(), dmax, - hphi, + hpsi, dmax, &zero, hcc, nstart); - T* sphi = temp; + T* spsi = temp; // do sPsi for all bands - pHamilt->sPsi(psi.get_pointer(), sphi, dmax, dmin, nstart); + pHamilt->sPsi(psi.get_pointer(), spsi, dmax, dmin, nstart); ModuleBase::gemm_op()('C', 'N', @@ -460,7 +522,7 @@ void DiagoIterAssist::cal_hs_subspace(const hamilt::Hamilt &one, psi.get_pointer(), dmax, - sphi, + spsi, dmax, &zero, scc, @@ -478,7 +540,7 @@ void DiagoIterAssist::cal_hs_subspace(const hamilt::Hamilt template void DiagoIterAssist::diag_responce( const T* hcc, - const T* scc, + T* scc, const int nbands, const T* mat_in, // [out] target matrix to be multiplied T* mat_out, @@ -496,7 +558,7 @@ void DiagoIterAssist::diag_responce( const T* hcc, setmem_complex_op()(vcc, 0, nstart * nstart); // after generation of H and S matrix, diag them - DiagoIterAssist::diagH_LAPACK(nstart, nstart, hcc, scc, nstart, en, vcc); + DiagoIterAssist::diag_hegvd(nstart, nstart, hcc, scc, nstart, en, vcc); { // code block to calculate tar_mat ModuleBase::gemm_op()('N', @@ -521,7 +583,7 @@ void DiagoIterAssist::diag_responce( const T* hcc, template void DiagoIterAssist::diag_subspace_psi(const T* hcc, - const T* scc, + T* scc, const int dim_subspace, psi::Psi& evc, Real* en @@ -538,7 +600,7 @@ void DiagoIterAssist::diag_subspace_psi(const T* hcc, setmem_complex_op()(vcc, 0, nstart * nstart); // after generation of H and S matrix, diag them - DiagoIterAssist::diagH_LAPACK(nstart, nstart, hcc, scc, nstart, en, vcc); + DiagoIterAssist::diag_hegvd(nstart, nstart, hcc, scc, nstart, en, vcc); { // code block to calculate tar_mat const int dmin = evc.get_current_ngk(); @@ -572,7 +634,7 @@ template bool DiagoIterAssist::test_exit_cond(const int& ntry, const int& notconv) { //================================================================ - // If this logical function is true, need to do diagH_subspace + // If this logical function is true, need to do diag_subspace // and cg again. //================================================================ @@ -588,7 +650,7 @@ bool DiagoIterAssist::test_exit_cond(const int& ntry, const int& notc const bool f2 = ((!scf && (notconv > 0))); // if self consistent calculation, if not converged > 5, - // using diagH_subspace and cg method again. ntry++ + // using diag_subspace and cg method again. ntry++ const bool f3 = ((scf && (notconv > 5))); return (f1 && (f2 || f3)); } diff --git a/source/source_hsolver/diago_iter_assist.h b/source/source_hsolver/diago_iter_assist.h index 696c3c2862..2867b50b5c 100644 --- a/source/source_hsolver/diago_iter_assist.h +++ b/source/source_hsolver/diago_iter_assist.h @@ -29,11 +29,28 @@ class DiagoIterAssist static int SCF_ITER; // for psi::Psi structure - static void diagH_subspace(const hamilt::Hamilt* const pHamilt, - const psi::Psi& psi, - psi::Psi& evc, - Real* en, - int n_band = 0); + /** + * @brief Diagonalizes the Hamiltonian in a subspace defined by the given wavefunction. + * + * This static function computes the eigenvalues and eigenvectors of the Hamiltonian + * within the subspace spanned by the provided wavefunction `psi`. The resulting eigenvectors + * are stored in `evc`, and the corresponding eigenvalues are written to `en`. + * + * @tparam T Data type for computation (e.g., float, double). + * @tparam Device Device type for computation (e.g., CPU, GPU). + * @param pHamilt Pointer to the Hamiltonian object. + * @param psi Input wavefunction defining the subspace. + * @param evc Output container for computed eigenvectors. + * @param en Output array for computed eigenvalues. + * @param n_band Number of bands (eigenvalues/eigenvectors) to compute. Default is 0 (all). + * @param is_S_orthogonal If true, assumes the input wavefunction is already orthogonalized. + */ + static void diag_subspace(const hamilt::Hamilt* const pHamilt, + const psi::Psi& psi, + psi::Psi& evc, + Real *en, + int n_band = 0, + const bool is_S_orthogonal = false); /// @brief use LAPACK to diagonalize the Hamiltonian matrix /// @param pHamilt interface to hamiltonian @@ -44,7 +61,7 @@ class DiagoIterAssist /// @param en eigenenergies /// @note exception handle: if there is no operator initialized in Hamilt, will directly copy value from psi to evc, /// and return all - zero eigenenergies. - static void diagH_subspace_init( + static void diag_subspace_init( hamilt::Hamilt* pHamilt, const T* psi, int psi_nr, @@ -54,13 +71,19 @@ class DiagoIterAssist const std::function& add_to_hcc = [](T* null, const int n) {}, const std::function& export_vcc = [](const T* null, const int n, const int m) {}); - static void diagH_LAPACK(const int nstart, - const int nbands, - const T* hcc, - const T* sc, - const int ldh, // nstart - Real* e, - T* vcc); + static void diag_heevx(const int nstart, + const int nbands, + const T *hcc, + const int ldh, + Real *e, + T *vcc); + static void diag_hegvd(const int nstart, + const int nbands, + const T *hcc, + T *sc, + const int ldh, // nstart + Real *e, + T *vcc); /// @brief calculate Hamiltonian and overlap matrix in subspace spanned by nstart states psi /// @param pHamilt : hamiltonian operator carrier @@ -81,7 +104,7 @@ class DiagoIterAssist /// @param mat_col : number of columns of target matrix /// @param en : eigenvalues static void diag_responce(const T* hcc, - const T* scc, + T* scc, const int nbands, const T* mat_in, T* mat_out, @@ -90,7 +113,7 @@ class DiagoIterAssist /// @brief calculate the response wavefunction psi from rotation matrix solved by diagonalization of H and S matrix static void diag_subspace_psi(const T* hcc, - const T* scc, + T* scc, const int dim_subspace, psi::Psi& evc, Real* en); diff --git a/source/source_hsolver/diago_lapack.cpp b/source/source_hsolver/diago_lapack.cpp index 90018c288d..996115fa69 100644 --- a/source/source_hsolver/diago_lapack.cpp +++ b/source/source_hsolver/diago_lapack.cpp @@ -7,8 +7,8 @@ #include "source_base/global_variable.h" #include "source_base/module_external/lapack_connector.h" #include "source_base/timer.h" +#include #include "source_base/tool_quit.h" -#include "source_pw/module_pwdft/global.h" typedef hamilt::MatrixBlock matd; typedef hamilt::MatrixBlock> matcd; @@ -30,12 +30,10 @@ void DiagoLapack::diag(hamilt::Hamilt* phm_in, psi::Psi& // Diag this->dsygvx_diag(h_mat.col, h_mat.row, h_mat.p, s_mat.p, eigen.data(), psi); // Copy result - int size = eigen.size(); - for (int i = 0; i < size; i++) - { - eigenvalue_in[i] = eigen[i]; - } + const int inc = 1; + BlasConnector::copy(PARAM.inp.nbands, eigen.data(), inc, eigenvalue_in, inc); } + template <> void DiagoLapack>::diag(hamilt::Hamilt>* phm_in, psi::Psi>& psi, @@ -48,109 +46,152 @@ void DiagoLapack>::diag(hamilt::Hamilt std::vector eigen(PARAM.globalv.nlocal, 0.0); this->zhegvx_diag(h_mat.col, h_mat.row, h_mat.p, s_mat.p, eigen.data(), psi); - int size = eigen.size(); - for (int i = 0; i < size; i++) - { - eigenvalue_in[i] = eigen[i]; - } + const int inc = 1; + BlasConnector::copy(PARAM.inp.nbands, eigen.data(), inc, eigenvalue_in, inc); +} + +#ifdef __MPI + template<> + void DiagoLapack::diag_pool(hamilt::MatrixBlock& h_mat, + hamilt::MatrixBlock& s_mat, + psi::Psi& psi, + Real* eigenvalue_in, + MPI_Comm& comm) +{ + ModuleBase::TITLE("DiagoLapack", "diag_pool"); + assert(h_mat.col == s_mat.col && h_mat.row == s_mat.row && h_mat.desc == s_mat.desc); + std::vector eigen(PARAM.globalv.nlocal, 0.0); + this->dsygvx_diag(h_mat.col, h_mat.row, h_mat.p, s_mat.p, eigen.data(), psi); + const int inc = 1; + BlasConnector::copy(PARAM.inp.nbands, eigen.data(), inc, eigenvalue_in, inc); +} + template<> + void DiagoLapack>::diag_pool(hamilt::MatrixBlock>& h_mat, + hamilt::MatrixBlock>& s_mat, + psi::Psi>& psi, + Real* eigenvalue_in, + MPI_Comm& comm) +{ + ModuleBase::TITLE("DiagoLapack", "diag_pool"); + assert(h_mat.col == s_mat.col && h_mat.row == s_mat.row && h_mat.desc == s_mat.desc); + std::vector eigen(PARAM.globalv.nlocal, 0.0); + this->zhegvx_diag(h_mat.col, h_mat.row, h_mat.p, s_mat.p, eigen.data(), psi); + const int inc = 1; + BlasConnector::copy(PARAM.inp.nbands, eigen.data(), inc, eigenvalue_in, inc); } +#endif template -int DiagoLapack::dsygvx_once(const int ncol, +std::pair> DiagoLapack::dsygvx_once(const int ncol, const int nrow, const double* const h_mat, const double* const s_mat, double* const ekb, psi::Psi& wfc_2d) const { - // Copy matrix to temp variables ModuleBase::matrix h_tmp(ncol, nrow, false); memcpy(h_tmp.c, h_mat, sizeof(double) * ncol * nrow); - - ModuleBase::matrix s_tmp(ncol, nrow, false); memcpy(s_tmp.c, s_mat, sizeof(double) * ncol * nrow); - // Prepare caculate parameters const char jobz = 'V', range = 'I', uplo = 'U'; const int itype = 1, il = 1, iu = PARAM.inp.nbands, one = 1; - int M = 0, info = 0; + int M = 0, NZ = 0, lwork = -1, liwork = -1, info = 0; double vl = 0, vu = 0; - const double abstol = 0; - - int lwork = (ncol + 2) * ncol; - + const double abstol = 0, orfac = -1; std::vector work(3, 0); std::vector iwork(1, 0); std::vector ifail(PARAM.globalv.nlocal, 0); - - // Original Lapack caculate, obelsete - /*dsygvx_(&itype, - &jobz, - &range, - &uplo, - &PARAM.globalv.nlocal, - h_tmp.c, - &ncol, - s_tmp.c, - &ncol, - &vl, - &vu, - &il, - &iu, - &abstol, - &M, - ekb, - wfc_2d.get_pointer(), - &ncol, - work.data(), - &lwork, - iwork.data(), - ifail.data(), - &info); - - // Throw error if it returns info - if (info) + std::vector iclustr(2 * GlobalV::DSIZE); + std::vector gap(GlobalV::DSIZE); + + // LAPACK dsygvx signature: + // (ITYPE, JOBZ, RANGE, UPLO, N, A, LDA, B, LDB, VL, VU, IL, IU, + // ABSTOL, M, W, Z, LDZ, WORK, LWORK, IWORK, IFAIL, INFO) + int n = PARAM.globalv.nlocal; + int lda = n, ldb = n, ldz = n; + dsygvx_(&itype, + &jobz, + &range, + &uplo, + &n, + h_tmp.c, + &lda, + s_tmp.c, + &ldb, + &vl, + &vu, + &il, + &iu, + &abstol, + &M, + ekb, + wfc_2d.get_pointer(), + &ldz, + work.data(), + &lwork, + iwork.data(), + ifail.data(), + &info); + if (info) { throw std::runtime_error("info = " + ModuleBase::GlobalFunc::TO_STRING(info) + ".\n" + std::string(__FILE__) + " line " + std::to_string(__LINE__)); - //lwork = work[0]; - //work.resize(std::max(lwork, 3), 0); - //iwork.resize(iwork[0], 0); - - dsygvx_(&itype, - &jobz, - &range, - &uplo, - &PARAM.globalv.nlocal, - h_tmp.c, - &PARAM.globalv.nlocal, - s_tmp.c, - &PARAM.globalv.nlocal, - &vl, - &vu, - &il, - &iu, - &abstol, - &M, - ekb, - wfc_2d.get_pointer(), - &ncol, - work.data(), - &lwork, - iwork.data(), - ifail.data(), - &info);*/ - - double *ev = new double[ncol * ncol]; + } - dsygv_(&itype, &jobz, &uplo, &PARAM.globalv.nlocal, h_tmp.c, &ncol, s_tmp.c, &ncol, ekb, ev, &lwork, &info); + // Query returned optimal lwork in work[0] + lwork = static_cast(work[0]); + work.resize(std::max(lwork, 3), 0); + // LAPACK integer workspace: use conservative size (5*N) + liwork = std::max(1, 5 * n); + iwork.resize(liwork, 0); - return info; + dsygvx_(&itype, + &jobz, + &range, + &uplo, + &n, + h_tmp.c, + &lda, + s_tmp.c, + &ldb, + &vl, + &vu, + &il, + &iu, + &abstol, + &M, + ekb, + wfc_2d.get_pointer(), + &ldz, + work.data(), + &lwork, + iwork.data(), + ifail.data(), + &info); + // GlobalV::ofs_running<<"M="<{}); + } else if (info < 0) { + return std::make_pair(info, std::vector{}); + } else if (info % 2) { + return std::make_pair(info, ifail); + } else if (info / 2 % 2) { + return std::make_pair(info, iclustr); + } else if (info / 4 % 2) { + return std::make_pair(info, std::vector{M, NZ}); + } else if (info / 16 % 2) { + return std::make_pair(info, ifail); + } else { + throw std::runtime_error("info = " + ModuleBase::GlobalFunc::TO_STRING(info) + ".\n" + + std::string(__FILE__) + " line " + + std::to_string(__LINE__)); + } } template -int DiagoLapack::zhegvx_once(const int ncol, +std::pair> DiagoLapack::zhegvx_once(const int ncol, const int nrow, const std::complex* const h_mat, const std::complex* const s_mat, @@ -159,95 +200,110 @@ int DiagoLapack::zhegvx_once(const int ncol, { ModuleBase::ComplexMatrix h_tmp(ncol, nrow, false); memcpy(h_tmp.c, h_mat, sizeof(std::complex) * ncol * nrow); - ModuleBase::ComplexMatrix s_tmp(ncol, nrow, false); memcpy(s_tmp.c, s_mat, sizeof(std::complex) * ncol * nrow); const char jobz = 'V', range = 'I', uplo = 'U'; const int itype = 1, il = 1, iu = PARAM.inp.nbands, one = 1; - int M = 0, lrwork = -1, info = 0; - const double abstol = 0; - - int lwork = (ncol + 2) * ncol; - + int M = 0, NZ = 0, lwork = -1, lrwork = -1, liwork = -1, info = 0; + const double abstol = 0, orfac = -1; + const double vl = 0, vu = 0; std::vector> work(1, 0); - double *rwork = new double[3 * ncol - 2]; + std::vector rwork(3, 0); std::vector iwork(1, 0); std::vector ifail(PARAM.globalv.nlocal, 0); - - // Original Lapack caculate, obelsete - /* + std::vector iclustr(2 * GlobalV::DSIZE); + std::vector gap(GlobalV::DSIZE); + + // LAPACK zhegvx signature: + // (ITYPE, JOBZ, RANGE, UPLO, N, A, LDA, B, LDB, VL, VU, IL, IU, + // ABSTOL, M, W, Z, LDZ, WORK, LWORK, RWORK, IWORK, IFAIL, INFO) + int n = PARAM.globalv.nlocal; + int lda = n, ldb = n, ldz = n; zhegvx_(&itype, - &jobz, - &range, - &uplo, - &PARAM.globalv.nlocal, - h_tmp.c, - &PARAM.globalv.nlocal, - s_tmp.c, - &PARAM.globalv.nlocal, - &vl, - &vu, - &il, - &iu, - &abstol, - &M, - ekb, - wfc_2d.get_pointer(), - &ncol, - work.data(), - &lwork, - rwork.data(), - iwork.data(), - ifail.data(), - &info); - - if (info) + &jobz, + &range, + &uplo, + &n, + h_tmp.c, + &lda, + s_tmp.c, + &ldb, + &vl, + &vu, + &il, + &iu, + &abstol, + &M, + ekb, + wfc_2d.get_pointer(), + &ldz, + work.data(), + &lwork, + rwork.data(), + iwork.data(), + ifail.data(), + &info); + if (info) { throw std::runtime_error("info=" + ModuleBase::GlobalFunc::TO_STRING(info) + ". " + std::string(__FILE__) + " line " + std::to_string(__LINE__)); + } - // GlobalV::ofs_running<<"lwork="<(work[0].real()); + work.resize(std::max(lwork, 1), 0); + // rwork: choose conservative size. Use baseline 7*N plus degeneracy margin + lrwork = std::max(3, 7 * n + this->degeneracy_max * n); + rwork.resize(lrwork, 0); + // LAPACK integer workspace: use conservative size (5*N) + liwork = std::max(1, 5 * n); + iwork.resize(liwork, 0); zhegvx_(&itype, - &jobz, - &range, - &uplo, - &PARAM.globalv.nlocal, - h_tmp.c, - &PARAM.globalv.nlocal, - s_tmp.c, - &PARAM.globalv.nlocal, - &vl, - &vu, - &il, - &iu, - &abstol, - &M, - ekb, - wfc_2d.get_pointer(), - &ncol, - work.data(), - &lwork, - rwork.data(), - iwork.data(), - ifail.data(), - &info); - - */ - - std::complex *ev = new std::complex[ncol * ncol]; - - zhegv_(&itype, &jobz, &uplo, &PARAM.globalv.nlocal, h_tmp.c, &ncol, s_tmp.c, &ncol, ekb, ev, &lwork, rwork, &info); - - return info; + &jobz, + &range, + &uplo, + &n, + h_tmp.c, + &lda, + s_tmp.c, + &ldb, + &vl, + &vu, + &il, + &iu, + &abstol, + &M, + ekb, + wfc_2d.get_pointer(), + &ldz, + work.data(), + &lwork, + rwork.data(), + iwork.data(), + ifail.data(), + &info); + // GlobalV::ofs_running<<"M="<{}); + } else if (info < 0) { + return std::make_pair(info, std::vector{}); + } else if (info % 2) { + return std::make_pair(info, ifail); + } else if (info / 2 % 2) { + return std::make_pair(info, iclustr); + } else if (info / 4 % 2) { + return std::make_pair(info, std::vector{M, NZ}); + } else if (info / 16 % 2) { + return std::make_pair(info, ifail); + } else { + throw std::runtime_error("info = " + ModuleBase::GlobalFunc::TO_STRING(info) + ".\n" + + std::string(__FILE__) + " line " + + std::to_string(__LINE__)); + } } template @@ -260,9 +316,9 @@ void DiagoLapack::dsygvx_diag(const int ncol, { while (true) { - - int info_result = dsygvx_once(ncol, nrow, h_mat, s_mat, ekb, wfc_2d); - if (info_result == 0) { + const std::pair> info_vec = dsygvx_once(ncol, nrow, h_mat, s_mat, ekb, wfc_2d); + post_processing(info_vec.first, info_vec.second); + if (info_vec.first == 0) { break; } } @@ -278,8 +334,9 @@ void DiagoLapack::zhegvx_diag(const int ncol, { while (true) { - int info_result = zhegvx_once(ncol, nrow, h_mat, s_mat, ekb, wfc_2d); - if (info_result == 0) { + const std::pair> info_vec = zhegvx_once(ncol, nrow, h_mat, s_mat, ekb, wfc_2d); + post_processing(info_vec.first, info_vec.second); + if (info_vec.first == 0) { break; } } @@ -297,5 +354,60 @@ void DiagoLapack::post_processing(const int info, const std::vector& vec { return; } + else if (info < 0) + { + const int info_negative = -info; + const std::string str_index + = (info_negative > 100) + ? ModuleBase::GlobalFunc::TO_STRING(info_negative / 100) + "-th argument " + + ModuleBase::GlobalFunc::TO_STRING(info_negative % 100) + "-entry is illegal.\n" + : ModuleBase::GlobalFunc::TO_STRING(info_negative) + "-th argument is illegal.\n"; + throw std::runtime_error(str_info_FILE + str_index); + } + else if (info % 2) + { + std::string str_ifail = "ifail = "; + for (const int i: vec) { + str_ifail += ModuleBase::GlobalFunc::TO_STRING(i) + " "; + } + throw std::runtime_error(str_info_FILE + str_ifail); + } + else if (info / 2 % 2) + { + int degeneracy_need = 0; + for (int irank = 0; irank < GlobalV::DSIZE; ++irank) { + degeneracy_need = std::max(degeneracy_need, vec[2 * irank + 1] - vec[2 * irank]); + } + const std::string str_need = "degeneracy_need = " + ModuleBase::GlobalFunc::TO_STRING(degeneracy_need) + ".\n"; + const std::string str_saved + = "degeneracy_saved = " + ModuleBase::GlobalFunc::TO_STRING(this->degeneracy_max) + ".\n"; + if (degeneracy_need <= this->degeneracy_max) + { + throw std::runtime_error(str_info_FILE + str_need + str_saved); + } + else + { + GlobalV::ofs_running << str_need << str_saved; + this->degeneracy_max = degeneracy_need; + return; + } + } + else if (info / 4 % 2) + { + const std::string str_M = "M = " + ModuleBase::GlobalFunc::TO_STRING(vec[0]) + ".\n"; + const std::string str_NZ = "NZ = " + ModuleBase::GlobalFunc::TO_STRING(vec[1]) + ".\n"; + const std::string str_NBANDS + = "PARAM.inp.nbands = " + ModuleBase::GlobalFunc::TO_STRING(PARAM.inp.nbands) + ".\n"; + throw std::runtime_error(str_info_FILE + str_M + str_NZ + str_NBANDS); + } + else if (info / 16 % 2) + { + const std::string str_npos = "not positive definite = " + ModuleBase::GlobalFunc::TO_STRING(vec[0]) + ".\n"; + throw std::runtime_error(str_info_FILE + str_npos); + } + else + { + throw std::runtime_error(str_info_FILE); + } } -} // namespace hsolver \ No newline at end of file +} // namespace hsolver diff --git a/source/source_hsolver/diago_lapack.h b/source/source_hsolver/diago_lapack.h index 53b710ae63..bfdf78ac34 100644 --- a/source/source_hsolver/diago_lapack.h +++ b/source/source_hsolver/diago_lapack.h @@ -27,6 +27,10 @@ class DiagoLapack public: void diag(hamilt::Hamilt* phm_in, psi::Psi& psi, Real* eigenvalue_in); + #ifdef __MPI + // diagnolization used in parallel-k case + void diag_pool(hamilt::MatrixBlock& h_mat, hamilt::MatrixBlock& s_mat, psi::Psi& psi, Real* eigenvalue_in, MPI_Comm& comm); +#endif void dsygvx_diag(const int ncol, const int nrow, @@ -41,18 +45,18 @@ class DiagoLapack double* const ekb, psi::Psi>& wfc_2d); - int dsygvx_once(const int ncol, - const int nrow, - const double* const h_mat, - const double* const s_mat, - double* const ekb, - psi::Psi& wfc_2d) const; - int zhegvx_once(const int ncol, - const int nrow, - const std::complex* const h_mat, - const std::complex* const s_mat, - double* const ekb, - psi::Psi>& wfc_2d) const; + std::pair> dsygvx_once(const int ncol, + const int nrow, + const double* const h_mat, + const double* const s_mat, + double* const ekb, + psi::Psi& wfc_2d) const; + std::pair> zhegvx_once(const int ncol, + const int nrow, + const std::complex* const h_mat, + const std::complex* const s_mat, + double* const ekb, + psi::Psi>& wfc_2d) const; int degeneracy_max = 12; // For reorthogonalized memory. 12 followes siesta. diff --git a/source/source_hsolver/diago_params.cpp b/source/source_hsolver/diago_params.cpp new file mode 100644 index 0000000000..28e1040a97 --- /dev/null +++ b/source/source_hsolver/diago_params.cpp @@ -0,0 +1,106 @@ +#include "diago_params.h" +#include "diago_iter_assist.h" + +namespace hsolver +{ + +template +void setup_diago_params_pw(const int istep, + const int iter, + const double ethr, + const Input_para& inp) +{ + /// choose if psi should be diag in subspace + /// be careful that istep start from 0 and iter start from 1 + DiagoIterAssist::need_subspace = ((istep == 0 || istep == 1) && iter == 1) ? false : true; + DiagoIterAssist::SCF_ITER = iter; + DiagoIterAssist::PW_DIAG_THR = ethr; + + if (inp.calculation != "nscf") + { + DiagoIterAssist::PW_DIAG_NMAX = inp.pw_diag_nmax; + } +} + +template +void setup_diago_params_sdft(const int istep, + const int iter, + const double ethr, + const Input_para& inp) +{ + /// choose if psi should be diag in subspace + /// be careful that istep start from 0 and iter start from 1 + if (istep == 0 && iter == 1 || inp.calculation == "nscf") + { + DiagoIterAssist::need_subspace = false; + } + else + { + DiagoIterAssist::need_subspace = true; + } + + DiagoIterAssist::PW_DIAG_THR = ethr; + DiagoIterAssist::PW_DIAG_NMAX = inp.pw_diag_nmax; +} + +/// Template instantiation for CPU +template void setup_diago_params_pw, base_device::DEVICE_CPU>(const int istep, + const int iter, + const double ethr, + const Input_para& inp); +template void setup_diago_params_pw, base_device::DEVICE_CPU>(const int istep, + const int iter, + const double ethr, + const Input_para& inp); +template void setup_diago_params_pw(const int istep, + const int iter, + const double ethr, + const Input_para& inp); + +/// Template instantiation for GPU +#if ((defined __CUDA) || (defined __ROCM)) +template void setup_diago_params_pw, base_device::DEVICE_GPU>(const int istep, + const int iter, + const double ethr, + const Input_para& inp); +template void setup_diago_params_pw, base_device::DEVICE_GPU>(const int istep, + const int iter, + const double ethr, + const Input_para& inp); +template void setup_diago_params_pw(const int istep, + const int iter, + const double ethr, + const Input_para& inp); +#endif + +/// Template instantiation for SDFT CPU +template void setup_diago_params_sdft, base_device::DEVICE_CPU>(const int istep, + const int iter, + const double ethr, + const Input_para& inp); +template void setup_diago_params_sdft, base_device::DEVICE_CPU>(const int istep, + const int iter, + const double ethr, + const Input_para& inp); +template void setup_diago_params_sdft(const int istep, + const int iter, + const double ethr, + const Input_para& inp); + +/// Template instantiation for SDFT GPU +#if ((defined __CUDA) || (defined __ROCM)) +template void setup_diago_params_sdft, base_device::DEVICE_GPU>(const int istep, + const int iter, + const double ethr, + const Input_para& inp); +template void setup_diago_params_sdft, base_device::DEVICE_GPU>(const int istep, + const int iter, + const double ethr, + const Input_para& inp); +template void setup_diago_params_sdft(const int istep, + const int iter, + const double ethr, + const Input_para& inp); +#endif + +} // namespace hsolver diff --git a/source/source_hsolver/diago_params.h b/source/source_hsolver/diago_params.h new file mode 100644 index 0000000000..5d46b01046 --- /dev/null +++ b/source/source_hsolver/diago_params.h @@ -0,0 +1,47 @@ +#ifndef DIAGO_PARAMS_H +#define DIAGO_PARAMS_H + +#include "source_io/module_parameter/input_parameter.h" + +namespace hsolver +{ + +/** + * @brief Setup diagonalization parameters for PW method + * + * This function sets up the diagonalization parameters for plane wave method, + * including subspace diagonalization flag, SCF iteration number, diagonalization + * threshold, and maximum number of diagonalization steps. + * + * @param istep Current ionic step + * @param iter Current SCF iteration + * @param ethr Diagonalization threshold + * @param inp Input parameters + */ +template +void setup_diago_params_pw(const int istep, + const int iter, + const double ethr, + const Input_para& inp); + +/** + * @brief Setup diagonalization parameters for SDFT method + * + * This function sets up the diagonalization parameters for stochastic DFT method, + * including subspace diagonalization flag, diagonalization threshold, and + * maximum number of diagonalization steps. + * + * @param istep Current ionic step + * @param iter Current SCF iteration + * @param ethr Diagonalization threshold + * @param inp Input parameters + */ +template +void setup_diago_params_sdft(const int istep, + const int iter, + const double ethr, + const Input_para& inp); + +} // namespace hsolver + +#endif // DIAGO_PARAMS_H diff --git a/source/source_hsolver/diago_pexsi.h b/source/source_hsolver/diago_pexsi.h index 242dd0350e..9871935f0f 100644 --- a/source/source_hsolver/diago_pexsi.h +++ b/source/source_hsolver/diago_pexsi.h @@ -22,7 +22,7 @@ class DiagoPexsi public: DiagoPexsi(const Parallel_Orbitals* ParaV_in); void diag(hamilt::Hamilt* phm_in, psi::Psi& psi, Real* eigenvalue_in); - const Parallel_Orbitals* ParaV; + const Parallel_Orbitals* ParaV = nullptr; std::vector DM; std::vector EDM; double totalEnergyH; diff --git a/source/source_hsolver/hsolver_lcao.cpp b/source/source_hsolver/hsolver_lcao.cpp index 2a168f8b24..6b3abd325e 100644 --- a/source/source_hsolver/hsolver_lcao.cpp +++ b/source/source_hsolver/hsolver_lcao.cpp @@ -3,10 +3,10 @@ #ifdef __MPI #include "diago_scalapack.h" #include "source_base/module_external/scalapack_connector.h" -#else -#include "diago_lapack.h" #endif +#include "diago_lapack.h" + #ifdef __CUSOLVERMP #include "diago_cusolvermp.h" #endif @@ -25,6 +25,7 @@ #endif #include "source_base/global_variable.h" +#include "source_base/module_device/device.h" #include "source_estate/elecstate_tools.h" #include "source_base/memory.h" #include "source_base/timer.h" @@ -34,13 +35,18 @@ #include "source_hsolver/parallel_k2d.h" #include "source_io/module_parameter/parameter.h" +#include "source_lcao/rho_tau_lcao.h" // mohan add 20251024 + namespace hsolver { -template -void HSolverLCAO::solve(hamilt::Hamilt* pHamilt, - psi::Psi& psi, - elecstate::ElecState* pes, +template +void HSolverLCAO::solve(hamilt::Hamilt* pHamilt, + psi::Psi& psi, + elecstate::ElecState* pes, + elecstate::DensityMatrix& dm, // mohan add 2025-11-03 + Charge &chr, + const int nspin, const bool skip_charge) { ModuleBase::TITLE("HSolverLCAO", "solve"); @@ -48,14 +54,20 @@ void HSolverLCAO::solve(hamilt::Hamilt* pHamilt, if (this->method != "pexsi") { + #ifdef __MPI + #ifdef __CUDA + if (this->method == "cusolver" && GlobalV::NPROC > 1) + { + this->parakSolve_cusolver(pHamilt, psi, pes); + }else + #endif if (PARAM.globalv.kpar_lcao > 1 - && (this->method == "genelpa" || this->method == "elpa" || this->method == "scalapack_gvx")) + && (this->method == "genelpa" || this->method == "elpa" || this->method == "scalapack_gvx" || this->method == "lapack")) { -#ifdef __MPI this->parakSolve(pHamilt, psi, pes, PARAM.globalv.kpar_lcao); -#endif - } - else if (PARAM.globalv.kpar_lcao == 1) + } else + #endif + if (PARAM.globalv.kpar_lcao == 1) { /// Loop over k points for solve Hamiltonian to eigenpairs(eigenvalues and eigenvectors). for (int ik = 0; ik < psi.get_nk(); ++ik) @@ -84,16 +96,14 @@ void HSolverLCAO::solve(hamilt::Hamilt* pHamilt, pes->nelec_spin, pes->skip_weights); - auto _pes_lcao = dynamic_cast*>(pes); - elecstate::calEBand(_pes_lcao->ekb, _pes_lcao->wg, _pes_lcao->f_en); - elecstate::cal_dm_psi(_pes_lcao->DM->get_paraV_pointer(), _pes_lcao->wg, psi, *(_pes_lcao->DM)); - _pes_lcao->DM->cal_DMR(); + elecstate::calEBand(pes->ekb, pes->wg, pes->f_en); + elecstate::cal_dm_psi(dm.get_paraV_pointer(), pes->wg, psi, dm); + dm.cal_DMR(); if (!skip_charge) { - // used in scf calculation - // calculate charge by eigenpairs(eigenvalues and eigenvectors) - pes->psiToRho(psi); + // compute charge density from density matrix, mohan update 20251024 + LCAO_domain::dm2rho(dm.get_DMR_vector(), nspin, &chr); } else { @@ -103,7 +113,7 @@ void HSolverLCAO::solve(hamilt::Hamilt* pHamilt, else if (this->method == "pexsi") { #ifdef __PEXSI // other purification methods should follow this routine - DiagoPexsi pe(ParaV); + DiagoPexsi pe(ParaV); for (int ik = 0; ik < psi.get_nk(); ++ik) { /// update H(k) for each k point @@ -112,10 +122,10 @@ void HSolverLCAO::solve(hamilt::Hamilt* pHamilt, // solve eigenvector and eigenvalue for H(k) pe.diag(pHamilt, psi, nullptr); } - auto _pes = dynamic_cast*>(pes); + auto _pes = dynamic_cast*>(pes); pes->f_en.eband = pe.totalFreeEnergy; // maybe eferm could be dealt with in the future - _pes->dmToRho(pe.DM, pe.EDM); + _pes->dm2rho(pe.DM, pe.EDM, &dm); #endif } @@ -151,8 +161,11 @@ void HSolverLCAO::hamiltSolvePsiK(hamilt::Hamilt* hm, psi::Psi& #ifdef __CUDA else if (this->method == "cusolver") { - DiagoCusolver cs(this->ParaV); - cs.diag(hm, psi, eigenvalue); + // Note: This branch will only be executed in the single-process case + DiagoCusolver cu; + hamilt::MatrixBlock hk, sk; + hm->matrix(hk, sk); + cu.diag(hk, sk, psi, eigenvalue); } #ifdef __CUSOLVERMP else if (this->method == "cusolvermp") @@ -162,13 +175,11 @@ void HSolverLCAO::hamiltSolvePsiK(hamilt::Hamilt* hm, psi::Psi& } #endif #endif -#ifndef __MPI else if (this->method == "lapack") // only for single core { DiagoLapack la; la.diag(hm, psi, eigenvalue); } -#endif else { ModuleBase::WARNING_QUIT("HSolverLCAO::solve", "This method is not supported for lcao basis in ABACUS!"); @@ -244,6 +255,11 @@ void HSolverLCAO::parakSolve(hamilt::Hamilt* pHamilt, DiagoScalapack sa; sa.diag_pool(hk_pool, sk_pool, psi_pool, &(pes->ekb(ik_global, 0)), k2d.POOL_WORLD_K2D); } + else if (this->method == "lapack") + { + DiagoLapack la; + la.diag_pool(hk_pool, sk_pool, psi_pool, &(pes->ekb(ik_global, 0)), k2d.POOL_WORLD_K2D); + } #ifdef __ELPA else if (this->method == "genelpa") { @@ -295,6 +311,167 @@ void HSolverLCAO::parakSolve(hamilt::Hamilt* pHamilt, #endif } +#if defined (__MPI) && defined (__CUDA) +template +void HSolverLCAO::parakSolve_cusolver(hamilt::Hamilt* pHamilt, + psi::Psi& psi, + elecstate::ElecState* pes) +{ + ModuleBase::timer::tick("HSolverLCAO", "parakSolve"); + // GPU device is already bound by DeviceContext::init() in read_input.cpp + auto& dev_ctx = base_device::DeviceContext::instance(); + const int local_rank = dev_ctx.get_local_rank(); + const int device_count = dev_ctx.get_device_count(); + + int world_rank, world_size; + MPI_Comm_rank(MPI_COMM_WORLD, &world_rank); + MPI_Comm_size(MPI_COMM_WORLD, &world_size); + + // Determine if this process is active (assigned a dedicated GPU) + // We enforce 1 process per GPU by checking local_rank < device_count. + bool is_active = (local_rank < device_count); + int is_active_int = is_active ? 1 : 0; + + std::vector all_local_ranks(world_size); + std::vector all_is_active(world_size); + + MPI_Allgather(&local_rank, 1, MPI_INT, + all_local_ranks.data(), 1, MPI_INT, MPI_COMM_WORLD); + MPI_Allgather(&is_active_int, 1, MPI_INT, + all_is_active.data(), 1, MPI_INT, MPI_COMM_WORLD); + + int total_active_ranks = 0; + int max_local_rank = 0; + for (int i = 0; i < world_size; ++i) { + if (all_is_active[i]) { + total_active_ranks++; + if(all_local_ranks[i] > max_local_rank) max_local_rank = all_local_ranks[i]; + } + } + + // active_ranks will store the global ranks of all active processes across all nodes + // The order of global ranks stored here determines the order in which they will be assigned to k-points. + // The k-points will be distributed among these ranks in a round-robin fashion. + // The purpose of setting the order is to ensure load balancing among nodes as much as possible + std::vector active_ranks; + for(int r = 0; r <= max_local_rank; r++) + { + for(int j = 0; j < world_size; j++) + { + if(all_is_active[j] && all_local_ranks[j] == r) + { + active_ranks.push_back(j); + } + } + } + + const int nks = psi.get_nk(); // total number of k points + const int nbands = this->ParaV->get_nbands(); + // Set the parallel storage scheme for the matrix and psi + Parallel_2D mat_para_global; // store the info about how the origin matrix is distributed in parallel + Parallel_2D mat_para_local; // store the info about how the matrix is distributed after collected from all processes + Parallel_2D psi_para_global; // store the info about how the psi is distributed in parallel + Parallel_2D psi_para_local; // store the info about how the psi is distributed before distributing to all processes + + MPI_Comm self_comm; // the communicator that only contains the current process itself + MPI_Comm_split(MPI_COMM_WORLD, world_rank, 0, &self_comm); + int nrow = this->ParaV->get_global_row_size(); // number of rows in the global matrix + int ncol = nrow; + int nb2d = this->ParaV->get_block_size(); // block size for the 2D matrix distribution + mat_para_global.init(nrow, ncol, nb2d, MPI_COMM_WORLD); + psi_para_global.init(nrow, nbands, nb2d, MPI_COMM_WORLD); + mat_para_local.init(nrow, ncol, nb2d, self_comm); + psi_para_local.init(nrow, ncol, nb2d, self_comm); + + std::vector hk_mat; // temporary storage for H(k) matrix collected from all processes + std::vector sk_mat; // temporary storage for S(k) matrix collected from all processes + // In each iteration, we process total_active_ranks k-points. + for(int ik_start = 0; ik_start < nks; ik_start += total_active_ranks) + { + int kpt_assigned = -1; // the k-point assigned to the current MPI process in this iteration + // Compute and gather the hk and sk matrices distributed across different processes in parallel, + // preparing for subsequent transfer to the GPU for computation. + for(int ik = ik_start; ik < ik_start + total_active_ranks && ik < nks; ik++) + { + // `is_active` indicates whether this MPI process is assigned to compute the current k-point + bool is_active = world_rank == active_ranks[ik % total_active_ranks]; + if (is_active) + { + kpt_assigned = ik; + hk_mat.resize(nrow * ncol); + sk_mat.resize(nrow * ncol); + } + pHamilt->updateHk(ik); + hamilt::MatrixBlock hk_2D, sk_2D; + pHamilt->matrix(hk_2D, sk_2D); + int desc_tmp[9]; + T* hk_local_ptr = hk_mat.data(); + T* sk_local_ptr = sk_mat.data(); + std::copy(mat_para_local.desc, mat_para_local.desc + 9, desc_tmp); + if( !is_active) + { + desc_tmp[1] = -1; + } + + Cpxgemr2d(nrow, ncol, hk_2D.p, 1, 1, mat_para_global.desc, + hk_local_ptr, 1, 1, desc_tmp, + mat_para_global.blacs_ctxt); + Cpxgemr2d(nrow, ncol, sk_2D.p, 1, 1, mat_para_global.desc, + sk_local_ptr, 1, 1, desc_tmp, + mat_para_global.blacs_ctxt); + } + + // diagonalize the Hamiltonian matrix using cusolver + psi::Psi psi_local{}; + if(kpt_assigned != -1) + { + psi_local.resize(1, ncol, nrow); + DiagoCusolver cu{}; + hamilt::MatrixBlock hk_local = hamilt::MatrixBlock{ + hk_mat.data(), (size_t)nrow, (size_t)ncol, + mat_para_local.desc}; + hamilt::MatrixBlock sk_local = hamilt::MatrixBlock{ + sk_mat.data(), (size_t)nrow, (size_t)ncol, + mat_para_local.desc}; + cu.diag(hk_local, sk_local, psi_local, &(pes->ekb(kpt_assigned, 0))); + } + + // transfer the eigenvectors and eigenvalues to all processes + for(int ik = ik_start; ik < ik_start + total_active_ranks && ik < nks; ik++) + { + int root = active_ranks[ik % total_active_ranks]; + MPI_Bcast(&(pes->ekb(ik, 0)), nbands, MPI_DOUBLE, root, MPI_COMM_WORLD); + int desc_pool[9]; + std::copy(psi_para_local.desc, psi_para_local.desc + 9, desc_pool); + T* psi_local_ptr = nullptr; + if (world_rank != root) + { + desc_pool[1] = -1; + }else + { + psi_local_ptr = psi_local.get_pointer(); + } + psi.fix_k(ik); + Cpxgemr2d(nrow, + nbands, + psi_local_ptr, + 1, + 1, + desc_pool, + psi.get_pointer(), + 1, + 1, + psi_para_global.desc, + psi_para_global.blacs_ctxt); + } + } + + MPI_Comm_free(&self_comm); + ModuleBase::timer::tick("HSolverLCAO", "parakSolve"); +} +#endif + + template class HSolverLCAO; template class HSolverLCAO>; diff --git a/source/source_hsolver/hsolver_lcao.h b/source/source_hsolver/hsolver_lcao.h index 8ee0a15576..87ed6ac4c9 100644 --- a/source/source_hsolver/hsolver_lcao.h +++ b/source/source_hsolver/hsolver_lcao.h @@ -5,30 +5,41 @@ #include "source_hamilt/hamilt.h" #include "source_basis/module_ao/parallel_orbitals.h" +#include "source_estate/module_charge/charge.h" // mohan add 20251024 +#include "source_estate/module_dm/density_matrix.h" // mohan add 20251103 + namespace hsolver { -template +template class HSolverLCAO { public: HSolverLCAO(const Parallel_Orbitals* ParaV_in, std::string method_in) : ParaV(ParaV_in), method(method_in) {}; - void solve(hamilt::Hamilt* pHamilt, - psi::Psi& psi, + void solve(hamilt::Hamilt* pHamilt, + psi::Psi& psi, elecstate::ElecState* pes, - const bool skip_charge); + elecstate::DensityMatrix& dm, // mohan add 2025-11-03 + Charge &chr, // charge density + const int nspin, + const bool skip_charge); private: - void hamiltSolvePsiK(hamilt::Hamilt* hm, psi::Psi& psi, double* eigenvalue); // for kpar_lcao == 1 + void hamiltSolvePsiK(hamilt::Hamilt* hm, psi::Psi& psi, double* eigenvalue); // for kpar_lcao == 1 + + void parakSolve(hamilt::Hamilt* pHamilt, psi::Psi& psi, elecstate::ElecState* pes, int kpar); // for kpar_lcao > 1 - void parakSolve(hamilt::Hamilt* pHamilt, psi::Psi& psi, elecstate::ElecState* pes, int kpar); // for kpar_lcao > 1 + // The solving algorithm using cusolver is different from others, so a separate function is needed + void parakSolve_cusolver(hamilt::Hamilt* pHamilt, + psi::Psi& psi, + elecstate::ElecState* pes); - const Parallel_Orbitals* ParaV; + const Parallel_Orbitals* ParaV = nullptr; const std::string method; }; } // namespace hsolver -#endif \ No newline at end of file +#endif diff --git a/source/source_hsolver/hsolver_lcaopw.cpp b/source/source_hsolver/hsolver_lcaopw.cpp index ed26436378..2167330705 100644 --- a/source/source_hsolver/hsolver_lcaopw.cpp +++ b/source/source_hsolver/hsolver_lcaopw.cpp @@ -5,7 +5,6 @@ #include "source_base/timer.h" #include "source_base/tool_quit.h" #include "source_estate/elecstate_pw.h" -#include "source_pw/module_pwdft/global.h" #include "source_pw/module_pwdft/hamilt_pw.h" #include "source_hsolver/diago_iter_assist.h" #include "source_io/module_parameter/parameter.h" @@ -65,7 +64,7 @@ void HSolverLIP::solve(hamilt::Hamilt* pHamilt, // ESolver_KS_PW::p_hamilt }; #endif /// solve eigenvector and eigenvalue for H(k) - hsolver::DiagoIterAssist::diagH_subspace_init( + hsolver::DiagoIterAssist::diag_subspace_init( pHamilt, // interface to hamilt transform.get_pointer(), // transform matrix between lcao and pw transform.get_nbands(), diff --git a/source/source_hsolver/hsolver_lcaopw.h b/source/source_hsolver/hsolver_lcaopw.h index 79c9acde03..13c359b2e9 100644 --- a/source/source_hsolver/hsolver_lcaopw.h +++ b/source/source_hsolver/hsolver_lcaopw.h @@ -36,7 +36,7 @@ class HSolverLIP const int nat); private: - ModulePW::PW_Basis_K* wfc_basis; + ModulePW::PW_Basis_K* wfc_basis = nullptr; }; } // namespace hsolver diff --git a/source/source_hsolver/hsolver_pw.cpp b/source/source_hsolver/hsolver_pw.cpp index c061023546..204b9b53ed 100644 --- a/source/source_hsolver/hsolver_pw.cpp +++ b/source/source_hsolver/hsolver_pw.cpp @@ -105,7 +105,7 @@ void HSolverPW::solve(hamilt::Hamilt* pHamilt, for (int i = 0; i < this->wfc_basis->nks; ++i) { const int ik = k_order[i]; - + // update H(k) for each k point pHamilt->updateHk(ik); @@ -142,13 +142,13 @@ void HSolverPW::solve(hamilt::Hamilt* pHamilt, if (skip_charge) { - GlobalV::ofs_running << "Average iterative diagonalization steps for k-points " << ik - << " is: " << DiagoIterAssist::avg_iter - << " ; where current threshold is: " << this->diag_thr << " . " << std::endl; + GlobalV::ofs_running << " Average iterative diagonalization steps for k-points " << ik + << " is " << DiagoIterAssist::avg_iter + << "\n current threshold of diagonalization is " << this->diag_thr << std::endl; DiagoIterAssist::avg_iter = 0.0; } } - } + } // if (use_k_continuity) else { // Original code without k-point continuity for (int ik = 0; ik < this->wfc_basis->nks; ++ik) @@ -182,6 +182,7 @@ void HSolverPW::solve(hamilt::Hamilt* pHamilt, // solve eigenvector and eigenvalue for H(k) this->hamiltSolvePsiK(pHamilt, psi, precondition, eigenvalues.data() + ik * psi.get_nbands(), this->wfc_basis->nks); + // output iteration information and reset avg_iter if (skip_charge) { GlobalV::ofs_running << " k(" << ik+1 << "/" << pes->klist->get_nkstot() @@ -189,10 +190,14 @@ void HSolverPW::solve(hamilt::Hamilt* pHamilt, << " threshold=" << this->diag_thr << std::endl; DiagoIterAssist::avg_iter = 0.0; } + /// calculate the contribution of Psi for charge density rho } - } - + } // else (use_k_continuity) + + // output average iteration information and reset avg_iter + this->output_iterInfo(); + count++; // END Loop over k points @@ -244,30 +249,32 @@ void HSolverPW::hamiltSolvePsiK(hamilt::Hamilt* hm, const int cur_nbasis = psi.get_current_nbas(); + // Shared matrix-blockvector operators used by all iterative solvers. + auto hpsi_func = [hm, cur_nbasis](T* psi_in, T* hpsi_out, const int ld_psi, const int nvec) { + auto psi_wrapper = psi::Psi(psi_in, 1, nvec, ld_psi, cur_nbasis); + psi::Range bands_range(true, 0, 0, nvec - 1); + using hpsi_info = typename hamilt::Operator::hpsi_info; + hpsi_info info(&psi_wrapper, bands_range, hpsi_out); + hm->ops->hPsi(info); + }; + auto spsi_func = [hm](const T* psi_in, T* spsi_out, const int ld_psi, const int nvec) { + hm->sPsi(psi_in, spsi_out, ld_psi, ld_psi, nvec); + }; + if (this->method == "cg") { // wrap the subspace_func into a lambda function - auto subspace_func = [hm, cur_nbasis](const ct::Tensor& psi_in, ct::Tensor& psi_out) { - // psi_in should be a 2D tensor: - // psi_in.shape() = [nbands, nbasis] - const auto ndim = psi_in.shape().ndim(); - REQUIRES_OK(ndim == 2, "dims of psi_in should be less than or equal to 2"); - // Convert a Tensor object to a psi::Psi object - auto psi_in_wrapper = psi::Psi(psi_in.data(), - 1, - psi_in.shape().dim_size(0), - psi_in.shape().dim_size(1), - cur_nbasis); - auto psi_out_wrapper = psi::Psi(psi_out.data(), - 1, - psi_out.shape().dim_size(0), - psi_out.shape().dim_size(1), - cur_nbasis); - auto eigen = ct::Tensor(ct::DataTypeToEnum::value, - ct::DeviceType::CpuDevice, - ct::TensorShape({psi_in.shape().dim_size(0)})); - - DiagoIterAssist::diagH_subspace(hm, psi_in_wrapper, psi_out_wrapper, eigen.data()); + // if S_orth is true, then assume psi is S-orthogonal, solve standard eigenproblem + // otherwise, solve generalized eigenproblem + auto subspace_func = [hm, cur_nbasis](T* psi_in, + T* psi_out, + const int ld_psi, + const int nband, + const bool S_orth) { + auto psi_in_wrapper = psi::Psi(psi_in, 1, nband, ld_psi, cur_nbasis); + auto psi_out_wrapper = psi::Psi(psi_out, 1, nband, ld_psi, cur_nbasis); + std::vector eigen(nband, 0.0); + DiagoIterAssist::diag_subspace(hm, psi_in_wrapper, psi_out_wrapper, eigen.data()); }; DiagoCG cg(this->basis_type, this->calculation_type, @@ -277,69 +284,17 @@ void HSolverPW::hamiltSolvePsiK(hamilt::Hamilt* hm, this->diag_iter_max, this->nproc_in_pool); - // wrap the hpsi_func and spsi_func into a lambda function - using ct_Device = typename ct::PsiToContainer::type; - - // wrap the hpsi_func and spsi_func into a lambda function - auto hpsi_func = [hm, cur_nbasis](const ct::Tensor& psi_in, ct::Tensor& hpsi_out) { - // psi_in should be a 2D tensor: - // psi_in.shape() = [nbands, nbasis] - const auto ndim = psi_in.shape().ndim(); - REQUIRES_OK(ndim <= 2, "dims of psi_in should be less than or equal to 2"); - // Convert a Tensor object to a psi::Psi object - auto psi_wrapper = psi::Psi(psi_in.data(), - 1, - ndim == 1 ? 1 : psi_in.shape().dim_size(0), - ndim == 1 ? psi_in.NumElements() : psi_in.shape().dim_size(1), - cur_nbasis); - psi::Range all_bands_range(true, psi_wrapper.get_current_k(), 0, psi_wrapper.get_nbands() - 1); - using hpsi_info = typename hamilt::Operator::hpsi_info; - hpsi_info info(&psi_wrapper, all_bands_range, hpsi_out.data()); - hm->ops->hPsi(info); - }; - auto spsi_func = [this, hm](const ct::Tensor& psi_in, ct::Tensor& spsi_out) { - // psi_in should be a 2D tensor: - // psi_in.shape() = [nbands, nbasis] - const auto ndim = psi_in.shape().ndim(); - REQUIRES_OK(ndim <= 2, "dims of psi_in should be less than or equal to 2"); - - if (this->use_uspp) - { - // Convert a Tensor object to a psi::Psi object - hm->sPsi(psi_in.data(), - spsi_out.data(), - ndim == 1 ? psi_in.NumElements() : psi_in.shape().dim_size(1), - ndim == 1 ? psi_in.NumElements() : psi_in.shape().dim_size(1), - ndim == 1 ? 1 : psi_in.shape().dim_size(0)); - } - else - { - base_device::memory::synchronize_memory_op()( - spsi_out.data(), - psi_in.data(), - static_cast((ndim == 1 ? 1 : psi_in.shape().dim_size(0)) - * (ndim == 1 ? psi_in.NumElements() : psi_in.shape().dim_size(1)))); - } - }; - - auto psi_tensor = ct::TensorMap(psi.get_pointer(), - ct::DataTypeToEnum::value, - ct::DeviceTypeToEnum::value, - ct::TensorShape({psi.get_nbands(), psi.get_nbasis()})); - - auto eigen_tensor = ct::TensorMap(eigenvalue, - ct::DataTypeToEnum::value, - ct::DeviceTypeToEnum::value, - ct::TensorShape({psi.get_nbands()})); - - auto prec_tensor = ct::TensorMap(pre_condition.data(), - ct::DataTypeToEnum::value, - ct::DeviceTypeToEnum::value, - ct::TensorShape({static_cast(pre_condition.size())})) - .to_device() - .slice({0}, {psi.get_current_ngk()}); - - cg.diag(hpsi_func, spsi_func, psi_tensor, eigen_tensor, this->ethr_band, prec_tensor); + DiagoIterAssist::avg_iter += static_cast( + cg.diag(hpsi_func, + spsi_func, + psi.get_nbasis(), + psi.get_nbands(), + psi.get_current_ngk(), + psi.get_pointer(), + eigenvalue, + this->ethr_band, + pre_condition.data()) + ); // TODO: Double check tensormap's potential problem // ct::TensorMap(psi.get_pointer(), psi_tensor, {psi.get_nbands(), psi.get_nbasis()}).sync(psi_tensor); } @@ -348,42 +303,14 @@ void HSolverPW::hamiltSolvePsiK(hamilt::Hamilt* hm, const int nband_l = psi.get_nbands(); const int nbasis = psi.get_nbasis(); const int ndim = psi.get_current_ngk(); - // hpsi_func (X, HX, ld, nvec) -> HX = H(X), X and HX blockvectors of size ld x nvec - auto hpsi_func = [hm, cur_nbasis](T* psi_in, T* hpsi_out, const int ld_psi, const int nvec) { - - // Convert "pointer data stucture" to a psi::Psi object - auto psi_iter_wrapper = psi::Psi(psi_in, 1, nvec, ld_psi, cur_nbasis); - - psi::Range bands_range(true, 0, 0, nvec - 1); - - using hpsi_info = typename hamilt::Operator::hpsi_info; - hpsi_info info(&psi_iter_wrapper, bands_range, hpsi_out); - hm->ops->hPsi(info); - }; DiagoBPCG bpcg(pre_condition.data()); bpcg.init_iter(PARAM.inp.nbands, nband_l, nbasis, ndim); bpcg.diag(hpsi_func, psi.get_pointer(), eigenvalue, this->ethr_band); } else if (this->method == "dav_subspace") { - // hpsi_func (X, HX, ld, nvec) -> HX = H(X), X and HX blockvectors of size ld x nvec - auto hpsi_func = [hm, cur_nbasis](T* psi_in, T* hpsi_out, const int ld_psi, const int nvec) { - - // Convert "pointer data stucture" to a psi::Psi object - auto psi_iter_wrapper = psi::Psi(psi_in, 1, nvec, ld_psi, cur_nbasis); - - psi::Range bands_range(true, 0, 0, nvec - 1); - - using hpsi_info = typename hamilt::Operator::hpsi_info; - hpsi_info info(&psi_iter_wrapper, bands_range, hpsi_out); - hm->ops->hPsi(info); - }; bool scf = this->calculation_type == "nscf" ? false : true; - auto spsi_func = [hm](T* psi_in, T* spsi_out, const int ld_psi, const int nvec) { - hm->sPsi(psi_in, spsi_out, ld_psi, ld_psi, nvec); - }; - Diago_DavSubspace dav_subspace(pre_condition, psi.get_nbands(), psi.get_k_first() ? psi.get_current_ngk() @@ -391,14 +318,18 @@ void HSolverPW::hamiltSolvePsiK(hamilt::Hamilt* hm, PARAM.inp.pw_diag_ndim, this->diag_thr, this->diag_iter_max, - this->need_subspace, comm_info, PARAM.inp.diag_subspace, PARAM.inp.nb2d); DiagoIterAssist::avg_iter += static_cast( - dav_subspace - .diag(hpsi_func, spsi_func, psi.get_pointer(), psi.get_nbasis(), eigenvalue, this->ethr_band, scf)); + dav_subspace.diag(hpsi_func, + spsi_func, + psi.get_pointer(), + psi.get_nbasis(), + eigenvalue, + this->ethr_band, + scf)); } else if (this->method == "dav") { @@ -419,45 +350,18 @@ void HSolverPW::hamiltSolvePsiK(hamilt::Hamilt* hm, const int nband = psi.get_nbands(); /// number of eigenpairs sought const int ld_psi = psi.get_nbasis(); /// leading dimension of psi - // Davidson matrix-blockvector functions - /// wrap hpsi into lambda function, Matrix \times blockvector - // hpsi_func (X, HX, ld, nvec) -> HX = H(X), X and HX blockvectors of size ld x nvec - auto hpsi_func = [hm, cur_nbasis](T* psi_in, T* hpsi_out, const int ld_psi, const int nvec) { - - // Convert pointer of psi_in to a psi::Psi object - auto psi_iter_wrapper = psi::Psi(psi_in, 1, nvec, ld_psi, cur_nbasis); - - psi::Range bands_range(true, 0, 0, nvec - 1); - - using hpsi_info = typename hamilt::Operator::hpsi_info; - hpsi_info info(&psi_iter_wrapper, bands_range, hpsi_out); - hm->ops->hPsi(info); - }; - - /// wrap spsi into lambda function, Matrix \times blockvector - /// spsi(X, SX, ld, nvec) - /// ld is leading dimension of psi and spsi - auto spsi_func = [hm](const T* psi_in, - T* spsi_out, - const int ld_psi, // Leading dimension of psi and spsi. - const int nvec // Number of vectors(bands) - ) { - // sPsi determines S=I or not by PARAM.globalv.use_uspp inside - // sPsi(psi, spsi, nrow, npw, nbands) - hm->sPsi(psi_in, spsi_out, ld_psi, ld_psi, nvec); - }; - DiagoDavid david(pre_condition.data(), nband, dim, PARAM.inp.pw_diag_ndim, this->use_paw, comm_info); // do diag and add davidson iteration counts up to avg_iter - DiagoIterAssist::avg_iter += static_cast(david.diag(hpsi_func, - spsi_func, - ld_psi, - psi.get_pointer(), - eigenvalue, - this->ethr_band, - david_maxiter, - ntry_max, - notconv_max)); + DiagoIterAssist::avg_iter += static_cast( + david.diag(hpsi_func, + spsi_func, + ld_psi, + psi.get_pointer(), + eigenvalue, + this->ethr_band, + david_maxiter, + ntry_max, + notconv_max)); } ModuleBase::timer::tick("HSolverPW", "solve_psik"); return; @@ -518,9 +422,9 @@ void HSolverPW::output_iterInfo() // in PW base, average iteration steps for each band and k-point should be printing if (DiagoIterAssist::avg_iter > 0.0) { - GlobalV::ofs_running << "Average iterative diagonalization steps: " + GlobalV::ofs_running << " Average iterative diagonalization steps for k-points is " << DiagoIterAssist::avg_iter / this->wfc_basis->nks - << " ; where current threshold is: " << this->diag_thr << " . " << std::endl; + << "\n current threshold of diagonalizaiton is " << this->diag_thr << std::endl; // reset avg_iter DiagoIterAssist::avg_iter = 0.0; } @@ -532,39 +436,39 @@ void HSolverPW::build_k_neighbors() { kvecs_c.resize(nk); k_order.clear(); k_order.reserve(nk); - + // Store k-points and corresponding indices struct KPoint { ModuleBase::Vector3 kvec; - int index; - double norm; - - KPoint(const ModuleBase::Vector3& v, int i) : + int index = 0; + double norm = 0.0; + + KPoint(const ModuleBase::Vector3& v, int i) : kvec(v), index(i), norm(v.norm()) {} }; - + // Build k-point list std::vector klist; for (int ik = 0; ik < nk; ++ik) { kvecs_c[ik] = this->wfc_basis->kvec_c[ik]; klist.push_back(KPoint(kvecs_c[ik], ik)); } - + // Sort k-points by distance from origin std::sort(klist.begin(), klist.end(), [](const KPoint& a, const KPoint& b) { return a.norm < b.norm; }); - + // Build parent-child relationships k_order.push_back(klist[0].index); - + // Find nearest processed k-point as parent for each k-point for (int i = 1; i < nk; ++i) { int current_k = klist[i].index; double min_dist = 1e10; int parent = -1; - + // find the nearest k-point as parent for (int j = 0; j < k_order.size(); ++j) { int processed_k = k_order[j]; @@ -574,7 +478,7 @@ void HSolverPW::build_k_neighbors() { parent = processed_k; } } - + k_parent[current_k] = parent; k_order.push_back(current_k); } @@ -584,34 +488,34 @@ template void HSolverPW::propagate_psi(psi::Psi& psi, const int from_ik, const int to_ik) { const int nbands = psi.get_nbands(); const int npwk = this->wfc_basis->npwk[to_ik]; - + // Get k-point difference ModuleBase::Vector3 dk = kvecs_c[to_ik] - kvecs_c[from_ik]; - + // Allocate porter locally T* porter = nullptr; resmem_complex_op()(porter, this->wfc_basis->nmaxgr, "HSolverPW::porter"); - + // Process each band for (int ib = 0; ib < nbands; ib++) { // Fix current k-point and band // psi.fix_k(from_ik); - + // FFT to real space // this->wfc_basis->recip_to_real(this->ctx, psi.get_pointer(ib), porter, from_ik); this->wfc_basis->recip_to_real(this->ctx, &psi(from_ik, ib, 0), porter, from_ik); - + // Apply phase factor // // TODO: Check how to get the r vector // ModuleBase::Vector3 r = this->wfc_basis->get_ir2r(ir); // double phase = this->wfc_basis->tpiba * (dk.x * r.x + dk.y * r.y + dk.z * r.z); // psi_real[ir] *= std::exp(std::complex(0.0, phase)); // } - + // Fix k-point for target // psi.fix_k(to_ik); - + // FFT back to reciprocal space // this->wfc_basis->real_to_recip(this->ctx, porter, psi.get_pointer(ib), to_ik, true); this->wfc_basis->real_to_recip(this->ctx, porter, &psi(to_ik, ib, 0), to_ik); diff --git a/source/source_hsolver/hsolver_pw.h b/source/source_hsolver/hsolver_pw.h index ae634fb862..2ba686063a 100644 --- a/source/source_hsolver/hsolver_pw.h +++ b/source/source_hsolver/hsolver_pw.h @@ -71,7 +71,7 @@ class HSolverPW void output_iterInfo(); - ModulePW::PW_Basis_K* wfc_basis; + ModulePW::PW_Basis_K* wfc_basis = nullptr; const std::string calculation_type; const std::string basis_type; diff --git a/source/source_hsolver/kernels/bpcg_kernel_op.cpp b/source/source_hsolver/kernels/bpcg_kernel_op.cpp index 19c51fc398..88f94e288c 100644 --- a/source/source_hsolver/kernels/bpcg_kernel_op.cpp +++ b/source/source_hsolver/kernels/bpcg_kernel_op.cpp @@ -183,6 +183,30 @@ struct normalize_op { } }; +template +struct refresh_hcc_scc_vcc_op +{ + using Real = typename GetTypeReal::type; + void operator()(const int &n, + T *hcc, + T *scc, + T *vcc, + const int &ldh, + const Real *eigenvalue, + const T &one) + { +#ifdef _OPENMP +#pragma omp parallel for collapse(1) schedule(static) +#endif + for (int i = 0; i < n; i++) + { + hcc[i * ldh + i] = eigenvalue[i]; + scc[i * ldh + i] = one; + vcc[i * ldh + i] = one; + } + } +}; + template struct calc_grad_with_block_op, base_device::DEVICE_CPU>; template struct line_minimize_with_block_op, base_device::DEVICE_CPU>; template struct calc_grad_with_block_op, base_device::DEVICE_CPU>; @@ -196,4 +220,7 @@ template struct precondition_op; template struct normalize_op, base_device::DEVICE_CPU>; template struct normalize_op, base_device::DEVICE_CPU>; template struct normalize_op; +template struct refresh_hcc_scc_vcc_op, base_device::DEVICE_CPU>; +template struct refresh_hcc_scc_vcc_op, base_device::DEVICE_CPU>; +template struct refresh_hcc_scc_vcc_op; } // namespace hsolver \ No newline at end of file diff --git a/source/source_hsolver/kernels/bpcg_kernel_op.h b/source/source_hsolver/kernels/bpcg_kernel_op.h index 802ee3c1e4..9ac7c5e2ce 100644 --- a/source/source_hsolver/kernels/bpcg_kernel_op.h +++ b/source/source_hsolver/kernels/bpcg_kernel_op.h @@ -63,11 +63,11 @@ template struct apply_eigenvalues_op { using Real = typename GetTypeReal::type; - void operator()(const int& nbase, - const int& nbase_x, - const int& notconv, - T* result, - const T* vectors, + void operator()(const int& nbase, + const int& nbase_x, + const int& notconv, + T* result, + const T* vectors, const Real* eigenvalues); }; @@ -92,6 +92,30 @@ struct normalize_op { Real* psi_norm = nullptr); }; +template struct refresh_hcc_scc_vcc_op { + using Real = typename GetTypeReal::type; + /// @brief refresh hcc scc vcc + /// + /// Input Parameters + /// \param n : first dimension of matrix + /// \param ldh : leading dimension of hcc, scc, vcc + /// \param nbase : matrix size + /// \param eigenvalue : input eigenvalue + /// \param one : constant one + /// + /// Output Parameters + /// \param hcc : output matrix hcc + /// \param scc : output matrix scc + /// \param vcc : output matrix vcc + void operator()(const int &n, + T *hcc, + T *scc, + T *vcc, + const int &ldh, + const Real *eigenvalue, + const T& one); +}; + #if __CUDA || __UT_USE_CUDA || __ROCM || __UT_USE_ROCM template @@ -114,11 +138,11 @@ struct calc_grad_with_block_op { template struct apply_eigenvalues_op { using Real = typename GetTypeReal::type; - void operator()(const int& nbase, - const int& nbase_x, - const int& notconv, - T* result, - const T* vectors, + void operator()(const int& nbase, + const int& nbase_x, + const int& notconv, + T* result, + const T* vectors, const Real* eigenvalues); }; @@ -143,6 +167,17 @@ struct normalize_op { Real* psi_norm = nullptr); }; +template +struct refresh_hcc_scc_vcc_op { + using Real = typename GetTypeReal::type; + void operator()(const int &n, + T *hcc, + T *scc, + T *vcc, + const int &ldh, + const Real *eigenvalue, + const T& one); +}; #endif } // namespace hsolver diff --git a/source/source_hsolver/kernels/cuda/bpcg_kernel_op.cu b/source/source_hsolver/kernels/cuda/bpcg_kernel_op.cu index e8af516274..12d50b0df0 100644 --- a/source/source_hsolver/kernels/cuda/bpcg_kernel_op.cu +++ b/source/source_hsolver/kernels/cuda/bpcg_kernel_op.cu @@ -7,6 +7,8 @@ namespace hsolver { const int warp_size = 32; const int thread_per_block = 256; +#define FULL_MASK 0xffffffff +#define WARP_SIZE 32 template __global__ void line_minimize_with_block( @@ -257,7 +259,7 @@ __global__ void apply_eigenvalues_kernel( { int m = blockIdx.x; int idx = threadIdx.x + blockIdx.y * blockDim.x; - + if (m < notconv && idx < nbase) { result[m * nbase_x + idx] = eigenvalues[m] * vectors[m * nbase_x + idx]; } @@ -274,7 +276,7 @@ __global__ void precondition_kernel( { int m = blockIdx.x; int i = threadIdx.x + blockIdx.y * blockDim.x; - + if (m < notconv && i < dim) { Real x = abs(precondition[i] - eigenvalues[m]); Real pre = 0.5 * (1.0 + x + sqrt(1 + (x - 1.0) * (x - 1.0))); @@ -282,6 +284,37 @@ __global__ void precondition_kernel( } } +template +__device__ Real warpReduceSum(Real val) { + for (int offset = WARP_SIZE / 2; offset > 0; offset >>= 1) + val += __shfl_down_sync(FULL_MASK, val, offset); + return val; +} + +template +__device__ Real blockReduceSum(Real val, volatile Real* shared) { + int lane = threadIdx.x % WARP_SIZE; + int wid = threadIdx.x / WARP_SIZE; + + val = warpReduceSum(val); + + if (lane == 0) + shared[wid] = val; + + __syncthreads(); + + Real sum = 0.0; + if (wid == 0) { + sum = (threadIdx.x < blockDim.x / 32) ? shared[lane] : 0.0; + sum = warpReduceSum(sum); + if (lane == 0) shared[0] = sum; + } + + __syncthreads(); + return shared[0]; +} + + template __global__ void normalize_kernel( thrust::complex* psi_iter, @@ -292,50 +325,50 @@ __global__ void normalize_kernel( { int m = blockIdx.x; int tid = threadIdx.x; - __shared__ Real sum[thread_per_block]; - - sum[tid] = 0.0; - + extern __shared__ char s_char[]; + Real* shared = reinterpret_cast(s_char); + + Real local_sum = 0.0; + // Calculate the sum for normalization for (int i = tid; i < dim; i += thread_per_block) { auto val = psi_iter[(nbase + m) * dim + i]; - sum[tid] += (val * thrust::conj(val)).real(); - } - - __syncthreads(); - - // Parallel reduction in shared memory - for (int s = thread_per_block/2; s > warp_size; s >>= 1) { - if (tid < s) { - sum[tid] += sum[tid + s]; - } - __syncthreads(); - } - - if (tid < warp_size) { - sum[tid] += sum[tid + 32]; __syncwarp(); - sum[tid] += sum[tid + 16]; __syncwarp(); - sum[tid] += sum[tid + 8]; __syncwarp(); - sum[tid] += sum[tid + 4]; __syncwarp(); - sum[tid] += sum[tid + 2]; __syncwarp(); - sum[tid] += sum[tid + 1]; __syncwarp(); + local_sum += (val * thrust::conj(val)).real(); } - - __syncthreads(); - - Real norm = sqrt(sum[0]); - + + Real l2_sq = blockReduceSum(local_sum, shared); + Real norm = sqrt(l2_sq); + // Normalize the vector for (int i = tid; i < dim; i += thread_per_block) { psi_iter[(nbase + m) * dim + i] /= norm; } - + // Store the norm if needed if (tid == 0 && psi_norm != nullptr) { psi_norm[m] = norm; } } +template +__global__ void refresh_hcc_scc_vcc_kernel( + const int n, + T *hcc, + T *scc, + T *vcc, + const int ldh, + const Real *eigenvalue, + const T one) +{ + int i = blockIdx.x * blockDim.x + threadIdx.x; + if (i < n) + { + hcc[i * ldh + i] = eigenvalue[i]; + scc[i * ldh + i] = one; + vcc[i * ldh + i] = one; + } +} + template void line_minimize_with_block_op::operator()(T* grad_out, T* hgrad_out, @@ -354,7 +387,7 @@ void line_minimize_with_block_op::operator()(T* grad A, B, C, D, n_basis, n_basis_max); - cudaCheckOnDebug(); + CHECK_CUDA_SYNC(); } template @@ -379,7 +412,7 @@ void calc_grad_with_block_op::operator()(const Real* A, B, C, D, n_basis, n_basis_max); - cudaCheckOnDebug(); + CHECK_CUDA_SYNC(); } template @@ -392,16 +425,16 @@ void apply_eigenvalues_op::operator()(const int& nba { const int threads_per_block = 256; const int blocks_per_grid_y = (nbase + threads_per_block - 1) / threads_per_block; - + dim3 grid(notconv, blocks_per_grid_y); - + auto vec_complex = reinterpret_cast*>(vectors); auto res_complex = reinterpret_cast*>(result); - + apply_eigenvalues_kernel<<>>( vec_complex, res_complex, eigenvalues, nbase, nbase_x, notconv); - - cudaCheckOnDebug(); + + CHECK_CUDA_SYNC(); } template @@ -414,15 +447,15 @@ void precondition_op::operator()(const int& dim, { const int threads_per_block = 256; const int blocks_per_grid_y = (dim + threads_per_block - 1) / threads_per_block; - + dim3 grid(notconv, blocks_per_grid_y); - + auto psi_complex = reinterpret_cast*>(psi_iter); - + precondition_kernel<<>>( psi_complex, precondition, eigenvalues, dim, nbase, notconv); - - cudaCheckOnDebug(); + + CHECK_CUDA_SYNC(); } template @@ -433,11 +466,64 @@ void normalize_op::operator()(const int& dim, Real* psi_norm) { auto psi_complex = reinterpret_cast*>(psi_iter); - - normalize_kernel<<>>( + int sharedMemSize = (thread_per_block / WARP_SIZE) * sizeof(Real); + + normalize_kernel<<>>( psi_complex, psi_norm, dim, nbase, notconv); - - cudaCheckOnDebug(); + + CHECK_CUDA_SYNC(); +} + +template <> +void refresh_hcc_scc_vcc_op::operator()(const int &n, + double *hcc, + double *scc, + double *vcc, + const int &ldh, + const double *eigenvalue, + const double& one) +{ + int thread = 512; + int block = (n + thread - 1) / thread; + refresh_hcc_scc_vcc_kernel <<>> (n, hcc, scc, vcc, ldh, eigenvalue, one); + + CHECK_CUDA_SYNC(); +} + +template <> +void refresh_hcc_scc_vcc_op, base_device::DEVICE_GPU>::operator()(const int &n, + std::complex *hcc, + std::complex *scc, + std::complex *vcc, + const int &ldh, + const float *eigenvalue, + const std::complex& one) +{ + int thread = 512; + int block = (n + thread - 1) / thread; + refresh_hcc_scc_vcc_kernel, float> <<>> (n, reinterpret_cast*>(hcc), + reinterpret_cast*>(scc), reinterpret_cast*>(vcc), ldh, eigenvalue, + thrust::complex(one)); + + CHECK_CUDA_SYNC(); +} + +template <> +void refresh_hcc_scc_vcc_op, base_device::DEVICE_GPU>::operator()(const int &n, + std::complex *hcc, + std::complex *scc, + std::complex *vcc, + const int &ldh, + const double *eigenvalue, + const std::complex& one) +{ + int thread = 512; + int block = (n + thread - 1) / thread; + refresh_hcc_scc_vcc_kernel, double> <<>> (n, reinterpret_cast*>(hcc), + reinterpret_cast*>(scc), reinterpret_cast*>(vcc), ldh, eigenvalue, + thrust::complex(one)); + + CHECK_CUDA_SYNC(); } template struct calc_grad_with_block_op, base_device::DEVICE_GPU>; @@ -453,4 +539,7 @@ template struct precondition_op; template struct normalize_op, base_device::DEVICE_GPU>; template struct normalize_op, base_device::DEVICE_GPU>; template struct normalize_op; +template struct refresh_hcc_scc_vcc_op, base_device::DEVICE_GPU>; +template struct refresh_hcc_scc_vcc_op, base_device::DEVICE_GPU>; +template struct refresh_hcc_scc_vcc_op; } \ No newline at end of file diff --git a/source/source_hsolver/kernels/cuda/diag_cusolver.cu b/source/source_hsolver/kernels/cuda/diag_cusolver.cu index 90548f1c9b..642198cfd9 100644 --- a/source/source_hsolver/kernels/cuda/diag_cusolver.cu +++ b/source/source_hsolver/kernels/cuda/diag_cusolver.cu @@ -1,11 +1,11 @@ #include #include "diag_cusolver.cuh" -#include "helper_cuda.h" +#include "source_base/module_device/device_check.h" Diag_Cusolver_gvd::Diag_Cusolver_gvd(){ // step 1: create cusolver/cublas handle cusolverH = NULL; - checkCudaErrors( cusolverDnCreate(&cusolverH) ); + CHECK_CUSOLVER( cusolverDnCreate(&cusolverH) ); itype = CUSOLVER_EIG_TYPE_1; // A*x = (lambda)*B*x jobz = CUSOLVER_EIG_MODE_VECTOR; // compute eigenvalues and eigenvectors. @@ -29,37 +29,37 @@ Diag_Cusolver_gvd::Diag_Cusolver_gvd(){ void Diag_Cusolver_gvd::finalize(){ // free resources and destroy - if (d_A ) {checkCudaErrors( cudaFree(d_A) ); d_A = NULL;} - if (d_B ) {checkCudaErrors( cudaFree(d_B) ); d_B = NULL;} - if (d_A2 ) {checkCudaErrors( cudaFree(d_A2) ); d_A2 = NULL;} - if (d_B2 ) {checkCudaErrors( cudaFree(d_B2) ); d_B2 = NULL;} - if (d_W ) {checkCudaErrors( cudaFree(d_W) ); d_W = NULL;} - if (devInfo ) {checkCudaErrors( cudaFree(devInfo) ); devInfo = NULL;} + if (d_A ) {CHECK_CUDA( cudaFree(d_A) ); d_A = NULL;} + if (d_B ) {CHECK_CUDA( cudaFree(d_B) ); d_B = NULL;} + if (d_A2 ) {CHECK_CUDA( cudaFree(d_A2) ); d_A2 = NULL;} + if (d_B2 ) {CHECK_CUDA( cudaFree(d_B2) ); d_B2 = NULL;} + if (d_W ) {CHECK_CUDA( cudaFree(d_W) ); d_W = NULL;} + if (devInfo ) {CHECK_CUDA( cudaFree(devInfo) ); devInfo = NULL;} } Diag_Cusolver_gvd::~Diag_Cusolver_gvd(){ finalize(); - if (cusolverH) {checkCudaErrors( cusolverDnDestroy(cusolverH) ); cusolverH = NULL;} - //checkCudaErrors( cudaDeviceReset() ); + if (cusolverH) {CHECK_CUSOLVER( cusolverDnDestroy(cusolverH) ); cusolverH = NULL;} + //CHECK_CUDA( cudaDeviceReset() ); } void Diag_Cusolver_gvd::init_double(int N){ // step 2: Malloc A and B on device m = lda = N; - checkCudaErrors( cudaMalloc ((void**)&d_A, sizeof(double) * lda * m) ); - checkCudaErrors( cudaMalloc ((void**)&d_B, sizeof(double) * lda * m) ); - checkCudaErrors( cudaMalloc ((void**)&d_W, sizeof(double) * m) ); - checkCudaErrors( cudaMalloc ((void**)&devInfo, sizeof(int)) ); + CHECK_CUDA( cudaMalloc ((void**)&d_A, sizeof(double) * lda * m) ); + CHECK_CUDA( cudaMalloc ((void**)&d_B, sizeof(double) * lda * m) ); + CHECK_CUDA( cudaMalloc ((void**)&d_W, sizeof(double) * m) ); + CHECK_CUDA( cudaMalloc ((void**)&devInfo, sizeof(int)) ); } void Diag_Cusolver_gvd::init_complex(int N){ // step 2: Malloc A and B on device m = lda = N; - checkCudaErrors( cudaMalloc ((void**)&d_A2, sizeof(cuDoubleComplex) * lda * m) ); - checkCudaErrors( cudaMalloc ((void**)&d_B2, sizeof(cuDoubleComplex) * lda * m) ); - checkCudaErrors( cudaMalloc ((void**)&d_W, sizeof(double) * m) ); - checkCudaErrors( cudaMalloc ((void**)&devInfo, sizeof(int)) ); + CHECK_CUDA( cudaMalloc ((void**)&d_A2, sizeof(cuDoubleComplex) * lda * m) ); + CHECK_CUDA( cudaMalloc ((void**)&d_B2, sizeof(cuDoubleComplex) * lda * m) ); + CHECK_CUDA( cudaMalloc ((void**)&d_W, sizeof(double) * m) ); + CHECK_CUDA( cudaMalloc ((void**)&devInfo, sizeof(int)) ); } void Diag_Cusolver_gvd::Dngvd_double(int N, int M, double *A, double *B, double *W, double *V){ @@ -70,14 +70,14 @@ void Diag_Cusolver_gvd::Dngvd_double(int N, int M, double *A, double *B, double this->finalize(); this->init_double(M); } - checkCudaErrors( cudaMemcpy(d_A, A, sizeof(double) * lda * m, cudaMemcpyHostToDevice) ); - checkCudaErrors( cudaMemcpy(d_B, B, sizeof(double) * lda * m, cudaMemcpyHostToDevice) ); + CHECK_CUDA( cudaMemcpy(d_A, A, sizeof(double) * lda * m, cudaMemcpyHostToDevice) ); + CHECK_CUDA( cudaMemcpy(d_B, B, sizeof(double) * lda * m, cudaMemcpyHostToDevice) ); // Query working space of sygvd // The helper functions below can calculate the sizes needed for pre-allocated buffer. // The S and D data types are real valued single and double precision, respectively. // The C and Z data types are complex valued single and double precision, respectively. - checkCudaErrors(cusolverDnDsygvd_bufferSize( + CHECK_CUSOLVER(cusolverDnDsygvd_bufferSize( cusolverH, itype, jobz, @@ -90,10 +90,10 @@ void Diag_Cusolver_gvd::Dngvd_double(int N, int M, double *A, double *B, double d_W, &lwork )); - checkCudaErrors( cudaMalloc((void**)&d_work, sizeof(double)*lwork) ); + CHECK_CUDA( cudaMalloc((void**)&d_work, sizeof(double)*lwork) ); // compute spectrum of (A,B) - checkCudaErrors(cusolverDnDsygvd( + CHECK_CUSOLVER(cusolverDnDsygvd( cusolverH, itype, jobz, @@ -108,35 +108,35 @@ void Diag_Cusolver_gvd::Dngvd_double(int N, int M, double *A, double *B, double lwork, devInfo )); - checkCudaErrors( cudaDeviceSynchronize() ); + CHECK_CUDA( cudaDeviceSynchronize() ); // copy (W, V) to the cpu root - checkCudaErrors( cudaMemcpy(W, d_W, sizeof(double)*m, cudaMemcpyDeviceToHost) ); - checkCudaErrors( cudaMemcpy(V, d_A, sizeof(double)*lda*m, cudaMemcpyDeviceToHost) ); - checkCudaErrors( cudaMemcpy(&info_gpu, devInfo, sizeof(int), cudaMemcpyDeviceToHost) ); + CHECK_CUDA( cudaMemcpy(W, d_W, sizeof(double)*m, cudaMemcpyDeviceToHost) ); + CHECK_CUDA( cudaMemcpy(V, d_A, sizeof(double)*lda*m, cudaMemcpyDeviceToHost) ); + CHECK_CUDA( cudaMemcpy(&info_gpu, devInfo, sizeof(int), cudaMemcpyDeviceToHost) ); assert(0 == info_gpu); // free the buffer - if (d_work ) checkCudaErrors( cudaFree(d_work) ); + if (d_work ) CHECK_CUDA( cudaFree(d_work) ); } void Diag_Cusolver_gvd::Dngvd_complex(int N, int M, std::complex *A, std::complex *B, double *W, std::complex *V){ - + // copy A, B to the GPU assert(N == M); if (M != m) { this->finalize(); this->init_complex(M); } - checkCudaErrors( cudaMemcpy(d_A2, A, sizeof(cuDoubleComplex) * lda * m, cudaMemcpyHostToDevice) ); - checkCudaErrors( cudaMemcpy(d_B2, B, sizeof(cuDoubleComplex) * lda * m, cudaMemcpyHostToDevice) ); + CHECK_CUDA( cudaMemcpy(d_A2, A, sizeof(cuDoubleComplex) * lda * m, cudaMemcpyHostToDevice) ); + CHECK_CUDA( cudaMemcpy(d_B2, B, sizeof(cuDoubleComplex) * lda * m, cudaMemcpyHostToDevice) ); // Query working space of Zhegvd // The helper functions below can calculate the sizes needed for pre-allocated buffer. // The S and D data types are real valued single and double precision, respectively. // The C and Z data types are complex valued single and double precision, respectively. - checkCudaErrors( + CHECK_CUSOLVER( cusolverDnZhegvd_bufferSize( cusolverH, itype, @@ -149,11 +149,11 @@ void Diag_Cusolver_gvd::Dngvd_complex(int N, int M, std::complex *A, std lda, d_W, &lwork) - ); - checkCudaErrors( cudaMalloc((void**)&d_work2, sizeof(cuDoubleComplex)*lwork) ); + ); + CHECK_CUDA( cudaMalloc((void**)&d_work2, sizeof(cuDoubleComplex)*lwork) ); // compute spectrum of (A,B) - checkCudaErrors( + CHECK_CUSOLVER( cusolverDnZhegvd( cusolverH, itype, @@ -169,14 +169,14 @@ void Diag_Cusolver_gvd::Dngvd_complex(int N, int M, std::complex *A, std lwork, devInfo) ); - checkCudaErrors( cudaDeviceSynchronize() ); - + CHECK_CUDA( cudaDeviceSynchronize() ); + // copy (W, V) to the cpu root - checkCudaErrors( cudaMemcpy(W, d_W, sizeof(double)*m, cudaMemcpyDeviceToHost) ); - checkCudaErrors( cudaMemcpy(V, d_A2, sizeof(std::complex)*lda*m, cudaMemcpyDeviceToHost) ); - checkCudaErrors( cudaMemcpy(&info_gpu, devInfo, sizeof(int), cudaMemcpyDeviceToHost) ); + CHECK_CUDA( cudaMemcpy(W, d_W, sizeof(double)*m, cudaMemcpyDeviceToHost) ); + CHECK_CUDA( cudaMemcpy(V, d_A2, sizeof(std::complex)*lda*m, cudaMemcpyDeviceToHost) ); + CHECK_CUDA( cudaMemcpy(&info_gpu, devInfo, sizeof(int), cudaMemcpyDeviceToHost) ); assert(0 == info_gpu); // free the buffer - if (d_work2 ) checkCudaErrors( cudaFree(d_work2) ); + if (d_work2 ) CHECK_CUDA( cudaFree(d_work2) ); } diff --git a/source/source_hsolver/kernels/cuda/diag_cusolver.cuh b/source/source_hsolver/kernels/cuda/diag_cusolver.cuh index faf4ec0a09..e47d43be50 100644 --- a/source/source_hsolver/kernels/cuda/diag_cusolver.cuh +++ b/source/source_hsolver/kernels/cuda/diag_cusolver.cuh @@ -3,12 +3,6 @@ #include #include -#if CUDA_VERSION < 12090 -#include "nvToolsExt.h" -#else -#include "nvtx3/nvToolsExt.h" -#endif - #include #include @@ -39,7 +33,7 @@ class Diag_Cusolver_gvd{ double *d_A = nullptr; double *d_B = nullptr; double *d_work = nullptr; - + cuDoubleComplex *d_A2 = nullptr; cuDoubleComplex *d_B2 = nullptr; cuDoubleComplex *d_work2 = nullptr; @@ -54,7 +48,7 @@ class Diag_Cusolver_gvd{ // - init_double : initializing relevant double type data structures and gpu apis' handle and memory // - init_complex : initializing relevant complex type data structures and gpu apis' handle and memory // Input Parameters -// N: the dimension of the matrix +// N: the dimension of the matrix void init_double(int N); void init_complex(int N); @@ -70,17 +64,17 @@ public: // - Dngvd_double : dense double type matrix // - Dngvd_complex : dense complex type matrix // Input Parameters -// N: the number of rows of the matrix -// M: the number of cols of the matrix -// A: the hermitian matrix A in A x=lambda B (column major) -// B: the SPD matrix B in A x=lambda B (column major) +// N: the number of rows of the matrix +// M: the number of cols of the matrix +// A: the hermitian matrix A in A x=lambda B (column major) +// B: the SPD matrix B in A x=lambda B (column major) // Output Parameter // W: generalized eigenvalues // V: generalized eigenvectors (column major) void Dngvd_double(int N, int M, double *A, double *B, double *W, double *V); void Dngvd_complex(int N, int M, std::complex *A, std::complex *B, double *W, std::complex *V); - + void Dngvd(int N, int M, double *A, double *B, double *W, double *V) { return Dngvd_double(N, M, A, B, W, V); diff --git a/source/source_hsolver/kernels/cuda/diag_cusolvermp.cu b/source/source_hsolver/kernels/cuda/diag_cusolvermp.cu index 032efd797b..c53139897f 100644 --- a/source/source_hsolver/kernels/cuda/diag_cusolvermp.cu +++ b/source/source_hsolver/kernels/cuda/diag_cusolvermp.cu @@ -1,6 +1,6 @@ #ifdef __CUSOLVERMP #include "diag_cusolvermp.cuh" -#include "helper_cuda.h" +#include "source_base/module_device/device_check.h" #include "source_base/global_variable.h" #include @@ -11,9 +11,15 @@ extern "C" } #include #include -#include "helper_cusolver.h" #include "source_base/global_function.h" #include "source_base/module_device/device.h" +#include "source_base/module_device/device_check.h" + +#ifdef __USE_CAL +// ============================================================================ +// CAL callback functions for MPI communication +// ============================================================================ + static calError_t allgather(void* src_buf, void* recv_buf, size_t size, void* data, void** request) { MPI_Request req; @@ -44,6 +50,7 @@ static calError_t request_free(void* request) { return CAL_OK; } +#endif // __USE_CAL template Diag_CusolverMP_gvd::Diag_CusolverMP_gvd(const MPI_Comm mpi_comm, @@ -70,10 +77,12 @@ Diag_CusolverMP_gvd::Diag_CusolverMP_gvd(const MPI_Comm mpi_comm, MPI_Comm_size(mpi_comm, &this->globalMpiSize); MPI_Comm_rank(mpi_comm, &(this->globalMpiRank)); - int local_device_id = base_device::information::set_device_by_rank(mpi_comm); + // GPU device is already bound by DeviceContext::init() in read_input.cpp + int local_device_id = base_device::DeviceContext::instance().get_device_id(); Cblacs_gridinfo(this->cblacs_ctxt, &this->nprows, &this->npcols, &this->myprow, &this->mypcol); - this->cusolverCalComm = NULL; +#ifdef __USE_CAL + // Initialize CAL communicator cal_comm_create_params_t params; params.allgather = allgather; params.req_test = request_test; @@ -82,11 +91,19 @@ Diag_CusolverMP_gvd::Diag_CusolverMP_gvd(const MPI_Comm mpi_comm, params.rank = this->globalMpiRank; params.nranks = this->globalMpiSize; params.local_device = local_device_id; + CHECK_CAL(cal_comm_create(params, &this->cusolverCalComm)); +#else + // Initialize NCCL communicator + ncclUniqueId ncclId; + if (this->globalMpiRank == 0) { + CHECK_NCCL(ncclGetUniqueId(&ncclId)); + } + MPI_Bcast(&ncclId, sizeof(ncclId), MPI_BYTE, 0, mpi_comm); + CHECK_NCCL(ncclCommInitRank(&this->ncclComm, this->globalMpiSize, ncclId, this->globalMpiRank)); +#endif - CAL_CHECK(cal_comm_create(params, &this->cusolverCalComm)); - - checkCudaErrors(cudaStreamCreate(&this->localStream)); - CUSOLVER_CHECK(cusolverMpCreate(&cusolverMpHandle, local_device_id, this->localStream)); + CHECK_CUDA(cudaStreamCreate(&this->localStream)); + CHECK_CUSOLVER(cusolverMpCreate(&cusolverMpHandle, local_device_id, this->localStream)); // 20240529 zhanghaochong // so far, cusolvermp only support = 1 @@ -113,18 +130,23 @@ Diag_CusolverMP_gvd::Diag_CusolverMP_gvd(const MPI_Comm mpi_comm, // This is because the current implementation of the cusolvermp library is ONE process ONE GPU. // So, when we use cusolvermp, we must ensure that the number of processes is equal to the number of GPUs. // In a sense, the MPI usage strategy of ABACUS must be subject to the cusolvermp. - CUSOLVER_CHECK(cusolverMpCreateDeviceGrid(cusolverMpHandle, + // Use ROW_MAJOR to match BLACS grid initialization (order='R' in parallel_2d.cpp) + CHECK_CUSOLVER(cusolverMpCreateDeviceGrid(cusolverMpHandle, &this->grid, +#ifdef __USE_CAL this->cusolverCalComm, +#else + this->ncclComm, +#endif this->nprows, this->npcols, - CUSOLVERMP_GRID_MAPPING_COL_MAJOR)); + CUSOLVERMP_GRID_MAPPING_ROW_MAJOR)); // 20240529 zhanghaochong // Actually, there should be three matrix descriptors, A matrix, B matrix, and output eigenvector matrix. // But in ABACUS the three matrices descriptors are the same. // So, I only create one matrix descriptor and use it for the three matrices. - CUSOLVER_CHECK(cusolverMpCreateMatrixDesc(&this->desc_for_cusolvermp, + CHECK_CUSOLVER(cusolverMpCreateMatrixDesc(&this->desc_for_cusolvermp, this->grid, this->datatype, nFull, @@ -139,12 +161,22 @@ Diag_CusolverMP_gvd::Diag_CusolverMP_gvd(const MPI_Comm mpi_comm, template Diag_CusolverMP_gvd::~Diag_CusolverMP_gvd() { - CAL_CHECK(cal_comm_barrier(this->cusolverCalComm, this->localStream)); - CUSOLVER_CHECK(cusolverMpDestroyMatrixDesc(this->desc_for_cusolvermp)); - CUSOLVER_CHECK(cusolverMpDestroyGrid(this->grid)); - CUSOLVER_CHECK(cusolverMpDestroy(this->cusolverMpHandle)); - CAL_CHECK(cal_comm_destroy(this->cusolverCalComm)); - checkCudaErrors(cudaStreamDestroy(this->localStream)); +#ifdef __USE_CAL + CHECK_CAL(cal_comm_barrier(this->cusolverCalComm, this->localStream)); + CHECK_CAL(cal_stream_sync(this->cusolverCalComm, this->localStream)); + CHECK_CUSOLVER(cusolverMpDestroyMatrixDesc(this->desc_for_cusolvermp)); + CHECK_CUSOLVER(cusolverMpDestroyGrid(this->grid)); + CHECK_CUSOLVER(cusolverMpDestroy(this->cusolverMpHandle)); + CHECK_CAL(cal_comm_destroy(this->cusolverCalComm)); + CHECK_CUDA(cudaStreamDestroy(this->localStream)); +#else + CHECK_CUDA(cudaStreamSynchronize(this->localStream)); + CHECK_CUSOLVER(cusolverMpDestroyMatrixDesc(this->desc_for_cusolvermp)); + CHECK_CUSOLVER(cusolverMpDestroyGrid(this->grid)); + CHECK_CUSOLVER(cusolverMpDestroy(this->cusolverMpHandle)); + CHECK_NCCL(ncclCommDestroy(this->ncclComm)); + CHECK_CUDA(cudaStreamDestroy(this->localStream)); +#endif } @@ -156,21 +188,21 @@ int Diag_CusolverMP_gvd::generalized_eigenvector(inputT* A, inputT* B, o void *d_D = NULL; void *d_Z = NULL; - checkCudaErrors(cudaMalloc((void**)&d_A, this->n_local * this->m_local * sizeof(inputT))); - checkCudaErrors(cudaMalloc((void**)&d_B, this->n_local * this->m_local * sizeof(inputT))); - checkCudaErrors(cudaMalloc((void**)&d_D, this->nFull * sizeof(outputT))); - checkCudaErrors(cudaMalloc((void**)&d_Z, this->n_local * this->m_local * sizeof(inputT))); + CHECK_CUDA(cudaMalloc((void**)&d_A, this->n_local * this->m_local * sizeof(inputT))); + CHECK_CUDA(cudaMalloc((void**)&d_B, this->n_local * this->m_local * sizeof(inputT))); + CHECK_CUDA(cudaMalloc((void**)&d_D, this->nFull * sizeof(outputT))); + CHECK_CUDA(cudaMalloc((void**)&d_Z, this->n_local * this->m_local * sizeof(inputT))); - checkCudaErrors( + CHECK_CUDA( cudaMemcpy(d_A, (void*)A, this->n_local * this->m_local * sizeof(inputT), cudaMemcpyHostToDevice)); - checkCudaErrors( + CHECK_CUDA( cudaMemcpy(d_B, (void*)B, this->n_local * this->m_local * sizeof(inputT), cudaMemcpyHostToDevice)); - CAL_CHECK(cal_stream_sync(this->cusolverCalComm, this->localStream)); + CHECK_CUDA(cudaStreamSynchronize(this->localStream)); size_t sygvdWorkspaceInBytesOnDevice = 0; size_t sygvdWorkspaceInBytesOnHost = 0; - CUSOLVER_CHECK(cusolverMpSygvd_bufferSize(cusolverMpHandle, + CHECK_CUSOLVER(cusolverMpSygvd_bufferSize(cusolverMpHandle, CUSOLVER_EIG_TYPE_1, CUSOLVER_EIG_MODE_VECTOR, CUBLAS_FILL_MODE_LOWER, @@ -194,17 +226,17 @@ int Diag_CusolverMP_gvd::generalized_eigenvector(inputT* A, inputT* B, o /* Distributed device workspace */ void* d_sygvdWork = NULL; - checkCudaErrors(cudaMalloc((void**)&d_sygvdWork, sygvdWorkspaceInBytesOnDevice)); - checkCudaErrors(cudaMemset(d_sygvdWork, 0, sygvdWorkspaceInBytesOnDevice)); + CHECK_CUDA(cudaMalloc((void**)&d_sygvdWork, sygvdWorkspaceInBytesOnDevice)); + CHECK_CUDA(cudaMemset(d_sygvdWork, 0, sygvdWorkspaceInBytesOnDevice)); int* d_sygvdInfo = NULL; - checkCudaErrors(cudaMalloc((void**)&d_sygvdInfo, sizeof(int))); - checkCudaErrors(cudaMemset(d_sygvdInfo, 0, sizeof(int))); + CHECK_CUDA(cudaMalloc((void**)&d_sygvdInfo, sizeof(int))); + CHECK_CUDA(cudaMemset(d_sygvdInfo, 0, sizeof(int))); /* sync wait for data to arrive to device */ - CAL_CHECK(cal_stream_sync(cusolverCalComm, localStream)); + CHECK_CUDA(cudaStreamSynchronize(this->localStream)); - CUSOLVER_CHECK(cusolverMpSygvd(cusolverMpHandle, + CHECK_CUSOLVER(cusolverMpSygvd(cusolverMpHandle, CUSOLVER_EIG_TYPE_1, CUSOLVER_EIG_MODE_VECTOR, CUBLAS_FILL_MODE_LOWER, @@ -230,22 +262,22 @@ int Diag_CusolverMP_gvd::generalized_eigenvector(inputT* A, inputT* B, o d_sygvdInfo)); int h_sygvdInfo = 0; - checkCudaErrors(cudaMemcpyAsync(&h_sygvdInfo, d_sygvdInfo, sizeof(int), cudaMemcpyDeviceToHost, this->localStream)); + CHECK_CUDA(cudaMemcpyAsync(&h_sygvdInfo, d_sygvdInfo, sizeof(int), cudaMemcpyDeviceToHost, this->localStream)); /* wait for d_sygvdInfo copy */ - checkCudaErrors(cudaStreamSynchronize(this->localStream)); + CHECK_CUDA(cudaStreamSynchronize(this->localStream)); if (h_sygvdInfo != 0) { ModuleBase::WARNING_QUIT("cusolvermp", "cusolverMpSygvd failed with error"); } - CAL_CHECK(cal_stream_sync(this->cusolverCalComm, this->localStream)); + CHECK_CUDA(cudaStreamSynchronize(this->localStream)); - checkCudaErrors(cudaFree(d_sygvdWork)); - checkCudaErrors(cudaFree(d_sygvdInfo)); + CHECK_CUDA(cudaFree(d_sygvdWork)); + CHECK_CUDA(cudaFree(d_sygvdInfo)); free(h_sygvdWork); - checkCudaErrors(cudaMemcpy((void*)EigenValue, d_D, this->nFull * sizeof(outputT), cudaMemcpyDeviceToHost)); - checkCudaErrors(cudaMemcpy((void*)EigenVector, + CHECK_CUDA(cudaMemcpy((void*)EigenValue, d_D, this->nFull * sizeof(outputT), cudaMemcpyDeviceToHost)); + CHECK_CUDA(cudaMemcpy((void*)EigenVector, d_Z, this->n_local * this->m_local * sizeof(inputT), cudaMemcpyDeviceToHost)); @@ -253,13 +285,13 @@ int Diag_CusolverMP_gvd::generalized_eigenvector(inputT* A, inputT* B, o // I move the free operations from destructor to here. // Because I think it is more reasonable to free the memory in the function where it is allocated. // Destructor is used to release resources that allocated in the constructor. - // And currently, we construct and destruct the object in every SCF iteration. Maybe one day we + // And currently, we construct and destruct the object in every SCF iteration. Maybe one day we // will construct the object only once during the whole program life cycle. // In that case, allocate and free memory in compute function is more reasonable. - checkCudaErrors(cudaFree(d_A)); - checkCudaErrors(cudaFree(d_B)); - checkCudaErrors(cudaFree(d_D)); - checkCudaErrors(cudaFree(d_Z)); + CHECK_CUDA(cudaFree(d_A)); + CHECK_CUDA(cudaFree(d_B)); + CHECK_CUDA(cudaFree(d_D)); + CHECK_CUDA(cudaFree(d_Z)); return 0; } @@ -282,4 +314,4 @@ void Diag_CusolverMP_gvd::outputParameters() template class Diag_CusolverMP_gvd; template class Diag_CusolverMP_gvd>; -#endif \ No newline at end of file +#endif diff --git a/source/source_hsolver/kernels/cuda/diag_cusolvermp.cuh b/source/source_hsolver/kernels/cuda/diag_cusolvermp.cuh index 0e330908dc..fe49677447 100644 --- a/source/source_hsolver/kernels/cuda/diag_cusolvermp.cuh +++ b/source/source_hsolver/kernels/cuda/diag_cusolvermp.cuh @@ -4,10 +4,15 @@ #include #include #include -#include #include #include "source_base/macros.h" +#ifdef __USE_CAL +#include +#else +#include +#endif + template class Diag_CusolverMP_gvd { @@ -53,7 +58,11 @@ class Diag_CusolverMP_gvd int globalMpiSize; cudaDataType_t datatype; +#ifdef __USE_CAL cal_comm_t cusolverCalComm = NULL; +#else + ncclComm_t ncclComm = NULL; +#endif cudaStream_t localStream = NULL; cusolverMpHandle_t cusolverMpHandle = NULL; cusolverMpGrid_t grid = NULL; @@ -64,6 +73,3 @@ class Diag_CusolverMP_gvd int64_t matrix_i; int64_t matrix_j; }; - -// 实现模板类的成员函数 - diff --git a/source/source_hsolver/kernels/cuda/dngvd_op.cu b/source/source_hsolver/kernels/cuda/dngvd_op.cu deleted file mode 100644 index 4ce3d9a1d0..0000000000 --- a/source/source_hsolver/kernels/cuda/dngvd_op.cu +++ /dev/null @@ -1,277 +0,0 @@ -#include "source_hsolver/kernels/dngvd_op.h" -#include "helper_cuda.h" - -#include - -#include - -namespace hsolver -{ - -static cusolverDnHandle_t cusolver_H = nullptr; - -void createGpuSolverHandle() -{ - if (cusolver_H == nullptr) - { - cusolverErrcheck(cusolverDnCreate(&cusolver_H)); - } -} - -void destroyGpuSolverHandle() -{ - if (cusolver_H != nullptr) - { - cusolverErrcheck(cusolverDnDestroy(cusolver_H)); - cusolver_H = nullptr; - } -} - -static inline -void xhegvd_wrapper( - const cublasFillMode_t& uplo, - const int& n, - double* A, const int& lda, - double* B, const int& ldb, - double* W) -{ - // prepare some values for cusolverDnZhegvd_bufferSize - int* devInfo = nullptr; - int lwork = 0, info_gpu = 0; - double* work = nullptr; - cudaErrcheck(cudaMalloc((void**)&devInfo, sizeof(int))); - - // calculate the sizes needed for pre-allocated buffer. - cusolverErrcheck(cusolverDnDsygvd_bufferSize(cusolver_H, CUSOLVER_EIG_TYPE_1, CUSOLVER_EIG_MODE_VECTOR, uplo, n, - A, lda, B, ldb, W, &lwork)); - // allocate memery - cudaErrcheck(cudaMalloc((void**)&work, sizeof(double) * lwork)); - - // compute eigenvalues and eigenvectors. - cusolverErrcheck(cusolverDnDsygvd(cusolver_H, CUSOLVER_EIG_TYPE_1, CUSOLVER_EIG_MODE_VECTOR, uplo, n, - A, lda, B, ldb, W, work, lwork, devInfo)); - - cudaErrcheck(cudaMemcpy(&info_gpu, devInfo, sizeof(int), cudaMemcpyDeviceToHost)); - assert(0 == info_gpu); - // free the buffer - cudaErrcheck(cudaFree(work)); - cudaErrcheck(cudaFree(devInfo)); -} - -static inline -void xhegvd_wrapper ( - const cublasFillMode_t& uplo, - const int& n, - std::complex * A, const int& lda, - std::complex * B, const int& ldb, - float * W) -{ - // prepare some values for cusolverDnZhegvd_bufferSize - int * devInfo = nullptr; - int lwork = 0, info_gpu = 0; - float2 * work = nullptr; - cudaErrcheck(cudaMalloc((void**)&devInfo, sizeof(int))); - - // calculate the sizes needed for pre-allocated buffer. - cusolverErrcheck(cusolverDnChegvd_bufferSize(cusolver_H, CUSOLVER_EIG_TYPE_1, CUSOLVER_EIG_MODE_VECTOR, uplo, n, - reinterpret_cast(A), lda, - reinterpret_cast(B), ldb, W, &lwork)); - // allocate memery - cudaErrcheck(cudaMalloc((void**)&work, sizeof(float2) * lwork)); - - // compute eigenvalues and eigenvectors. - cusolverErrcheck(cusolverDnChegvd(cusolver_H, CUSOLVER_EIG_TYPE_1, CUSOLVER_EIG_MODE_VECTOR, uplo, n, - reinterpret_cast(A), lda, reinterpret_cast(B), ldb, W, work, lwork, devInfo)); - - cudaErrcheck(cudaMemcpy(&info_gpu, devInfo, sizeof(int), cudaMemcpyDeviceToHost)); - assert(0 == info_gpu); - // free the buffer - cudaErrcheck(cudaFree(work)); - cudaErrcheck(cudaFree(devInfo)); -} - -static inline -void xhegvd_wrapper ( - const cublasFillMode_t& uplo, - const int& n, - std::complex * A, const int& lda, - std::complex * B, const int& ldb, - double * W) -{ - // prepare some values for cusolverDnZhegvd_bufferSize - int * devInfo = nullptr; - int lwork = 0, info_gpu = 0; - double2 * work = nullptr; - cudaErrcheck(cudaMalloc((void**)&devInfo, sizeof(int))); - - // calculate the sizes needed for pre-allocated buffer. - cusolverErrcheck(cusolverDnZhegvd_bufferSize(cusolver_H, CUSOLVER_EIG_TYPE_1, CUSOLVER_EIG_MODE_VECTOR, uplo, n, - reinterpret_cast(A), lda, - reinterpret_cast(B), ldb, W, &lwork)); - // allocate memery - cudaErrcheck(cudaMalloc((void**)&work, sizeof(double2) * lwork)); - - // compute eigenvalues and eigenvectors. - cusolverErrcheck(cusolverDnZhegvd(cusolver_H, CUSOLVER_EIG_TYPE_1, CUSOLVER_EIG_MODE_VECTOR, uplo, n, - reinterpret_cast(A), lda, reinterpret_cast(B), ldb, W, work, lwork, devInfo)); - - cudaErrcheck(cudaMemcpy(&info_gpu, devInfo, sizeof(int), cudaMemcpyDeviceToHost)); - assert(0 == info_gpu); - // free the buffer - cudaErrcheck(cudaFree(work)); - cudaErrcheck(cudaFree(devInfo)); -} - -static inline -void xheevd_wrapper( - const cublasFillMode_t& uplo, - const int& n, - double* A, const int& lda, - double* W) -{ - // prepare some values for cusolverDnZhegvd_bufferSize - int* devInfo = nullptr; - int lwork = 0, info_gpu = 0; - double* work = nullptr; - cudaErrcheck(cudaMalloc((void**)&devInfo, sizeof(int))); - - // calculate the sizes needed for pre-allocated buffer. - cusolverErrcheck(cusolverDnDsyevd_bufferSize(cusolver_H, CUSOLVER_EIG_MODE_VECTOR, uplo, n, - A, lda, W, &lwork)); - // allocate memery - cudaErrcheck(cudaMalloc((void**)&work, sizeof(double) * lwork)); - // compute eigenvalues and eigenvectors. - cusolverErrcheck(cusolverDnDsyevd(cusolver_H, CUSOLVER_EIG_MODE_VECTOR, uplo, n, A, lda, W, work, lwork, devInfo)); - - cudaErrcheck(cudaMemcpy(&info_gpu, devInfo, sizeof(int), cudaMemcpyDeviceToHost)); - assert(0 == info_gpu); - cudaErrcheck(cudaFree(work)); - cudaErrcheck(cudaFree(devInfo)); -} - -static inline -void xheevd_wrapper ( - const cublasFillMode_t& uplo, - const int& n, - std::complex * A, const int& lda, - float * W) -{ - // prepare some values for cusolverDnZhegvd_bufferSize - int * devInfo = nullptr; - int lwork = 0, info_gpu = 0; - float2 * work = nullptr; - cudaErrcheck(cudaMalloc((void**)&devInfo, sizeof(int))); - - // calculate the sizes needed for pre-allocated buffer. - cusolverErrcheck(cusolverDnCheevd_bufferSize(cusolver_H, CUSOLVER_EIG_MODE_VECTOR, uplo, n, - reinterpret_cast(A), lda, W, &lwork)); - // allocate memery - cudaErrcheck(cudaMalloc((void**)&work, sizeof(float2) * lwork)); - // compute eigenvalues and eigenvectors. - cusolverErrcheck(cusolverDnCheevd(cusolver_H, CUSOLVER_EIG_MODE_VECTOR, uplo, n, reinterpret_cast(A), lda, W, work, lwork, devInfo)); - - cudaErrcheck(cudaMemcpy(&info_gpu, devInfo, sizeof(int), cudaMemcpyDeviceToHost)); - assert(0 == info_gpu); - cudaErrcheck(cudaFree(work)); - cudaErrcheck(cudaFree(devInfo)); -} - -static inline -void xheevd_wrapper ( - const cublasFillMode_t& uplo, - const int& n, - std::complex * A, const int& lda, - double * W) -{ - // prepare some values for cusolverDnZhegvd_bufferSize - int * devInfo = nullptr; - int lwork = 0, info_gpu = 0; - double2 * work = nullptr; - cudaErrcheck(cudaMalloc((void**)&devInfo, sizeof(int))); - - // calculate the sizes needed for pre-allocated buffer. - cusolverErrcheck(cusolverDnZheevd_bufferSize(cusolver_H, CUSOLVER_EIG_MODE_VECTOR, uplo, n, - reinterpret_cast(A), lda, W, &lwork)); - // allocate memery - cudaErrcheck(cudaMalloc((void**)&work, sizeof(double2) * lwork)); - // compute eigenvalues and eigenvectors. - cusolverErrcheck(cusolverDnZheevd(cusolver_H, CUSOLVER_EIG_MODE_VECTOR, uplo, n, - reinterpret_cast(A), lda, W, work, lwork, devInfo)); - - cudaErrcheck(cudaMemcpy(&info_gpu, devInfo, sizeof(int), cudaMemcpyDeviceToHost)); - assert(0 == info_gpu); - cudaErrcheck(cudaFree(work)); - cudaErrcheck(cudaFree(devInfo)); -} - -template -struct dngvd_op -{ - using Real = typename GetTypeReal::type; - void operator()(const base_device::DEVICE_GPU* d, - const int nstart, - const int ldh, - const T* A, // hcc - const T* B, // scc - Real* W, // eigenvalue - T* V) - { - assert(nstart == ldh); - // A to V - cudaErrcheck(cudaMemcpy(V, A, sizeof(T) * ldh * nstart, cudaMemcpyDeviceToDevice)); - xhegvd_wrapper(CUBLAS_FILL_MODE_UPPER, nstart, V, ldh, - (T*)B, ldh, W); - } -}; - -template -struct dnevx_op -{ - using Real = typename GetTypeReal::type; - void operator()(const base_device::DEVICE_GPU* d, - const int nstart, - const int ldh, - const T* A, // hcc - const int m, - Real* W, // eigenvalue - T* V) - { - assert(nstart <= ldh); - // A to V - cudaErrcheck(cudaMemcpy(V, A, sizeof(T) * nstart * ldh, cudaMemcpyDeviceToDevice)); - xheevd_wrapper(CUBLAS_FILL_MODE_LOWER, nstart, V, ldh, W); - } -}; - -template -struct dngvx_op -{ - using Real = typename GetTypeReal::type; - void operator()(const base_device::DEVICE_GPU* d, - const int nbase, - const int ldh, - T* hcc, - T* scc, - const int m, - Real* eigenvalue, - T* vcc) - { - - } -}; - -template struct dngvd_op, base_device::DEVICE_GPU>; -template struct dnevx_op, base_device::DEVICE_GPU>; -template struct dngvx_op, base_device::DEVICE_GPU>; - -template struct dngvd_op, base_device::DEVICE_GPU>; -template struct dnevx_op, base_device::DEVICE_GPU>; -template struct dngvx_op, base_device::DEVICE_GPU>; - -#ifdef __LCAO -template struct dngvd_op; -template struct dnevx_op; -template struct dngvx_op; -#endif - -} // namespace hsolver \ No newline at end of file diff --git a/source/source_hsolver/kernels/cuda/hegvd_op.cu b/source/source_hsolver/kernels/cuda/hegvd_op.cu new file mode 100644 index 0000000000..6954522bc5 --- /dev/null +++ b/source/source_hsolver/kernels/cuda/hegvd_op.cu @@ -0,0 +1,277 @@ +#include "source_hsolver/kernels/hegvd_op.h" +#include "source_base/module_device/device_check.h" + +#include + +#include + +namespace hsolver +{ + +static cusolverDnHandle_t cusolver_H = nullptr; + +void createGpuSolverHandle() +{ + if (cusolver_H == nullptr) + { + CHECK_CUSOLVER(cusolverDnCreate(&cusolver_H)); + } +} + +void destroyGpuSolverHandle() +{ + if (cusolver_H != nullptr) + { + CHECK_CUSOLVER(cusolverDnDestroy(cusolver_H)); + cusolver_H = nullptr; + } +} + +static inline +void xhegvd_wrapper( + const cublasFillMode_t& uplo, + const int& n, + double* A, const int& lda, + double* B, const int& ldb, + double* W) +{ + // prepare some values for cusolverDnZhegvd_bufferSize + int* devInfo = nullptr; + int lwork = 0, info_gpu = 0; + double* work = nullptr; + CHECK_CUDA(cudaMalloc((void**)&devInfo, sizeof(int))); + + // calculate the sizes needed for pre-allocated buffer. + CHECK_CUSOLVER(cusolverDnDsygvd_bufferSize(cusolver_H, CUSOLVER_EIG_TYPE_1, CUSOLVER_EIG_MODE_VECTOR, uplo, n, + A, lda, B, ldb, W, &lwork)); + // allocate memery + CHECK_CUDA(cudaMalloc((void**)&work, sizeof(double) * lwork)); + + // compute eigenvalues and eigenvectors. + CHECK_CUSOLVER(cusolverDnDsygvd(cusolver_H, CUSOLVER_EIG_TYPE_1, CUSOLVER_EIG_MODE_VECTOR, uplo, n, + A, lda, B, ldb, W, work, lwork, devInfo)); + + CHECK_CUDA(cudaMemcpy(&info_gpu, devInfo, sizeof(int), cudaMemcpyDeviceToHost)); + assert(0 == info_gpu); + // free the buffer + CHECK_CUDA(cudaFree(work)); + CHECK_CUDA(cudaFree(devInfo)); +} + +static inline +void xhegvd_wrapper ( + const cublasFillMode_t& uplo, + const int& n, + std::complex * A, const int& lda, + std::complex * B, const int& ldb, + float * W) +{ + // prepare some values for cusolverDnZhegvd_bufferSize + int * devInfo = nullptr; + int lwork = 0, info_gpu = 0; + float2 * work = nullptr; + CHECK_CUDA(cudaMalloc((void**)&devInfo, sizeof(int))); + + // calculate the sizes needed for pre-allocated buffer. + CHECK_CUSOLVER(cusolverDnChegvd_bufferSize(cusolver_H, CUSOLVER_EIG_TYPE_1, CUSOLVER_EIG_MODE_VECTOR, uplo, n, + reinterpret_cast(A), lda, + reinterpret_cast(B), ldb, W, &lwork)); + // allocate memery + CHECK_CUDA(cudaMalloc((void**)&work, sizeof(float2) * lwork)); + + // compute eigenvalues and eigenvectors. + CHECK_CUSOLVER(cusolverDnChegvd(cusolver_H, CUSOLVER_EIG_TYPE_1, CUSOLVER_EIG_MODE_VECTOR, uplo, n, + reinterpret_cast(A), lda, reinterpret_cast(B), ldb, W, work, lwork, devInfo)); + + CHECK_CUDA(cudaMemcpy(&info_gpu, devInfo, sizeof(int), cudaMemcpyDeviceToHost)); + assert(0 == info_gpu); + // free the buffer + CHECK_CUDA(cudaFree(work)); + CHECK_CUDA(cudaFree(devInfo)); +} + +static inline +void xhegvd_wrapper ( + const cublasFillMode_t& uplo, + const int& n, + std::complex * A, const int& lda, + std::complex * B, const int& ldb, + double * W) +{ + // prepare some values for cusolverDnZhegvd_bufferSize + int * devInfo = nullptr; + int lwork = 0, info_gpu = 0; + double2 * work = nullptr; + CHECK_CUDA(cudaMalloc((void**)&devInfo, sizeof(int))); + + // calculate the sizes needed for pre-allocated buffer. + CHECK_CUSOLVER(cusolverDnZhegvd_bufferSize(cusolver_H, CUSOLVER_EIG_TYPE_1, CUSOLVER_EIG_MODE_VECTOR, uplo, n, + reinterpret_cast(A), lda, + reinterpret_cast(B), ldb, W, &lwork)); + // allocate memery + CHECK_CUDA(cudaMalloc((void**)&work, sizeof(double2) * lwork)); + + // compute eigenvalues and eigenvectors. + CHECK_CUSOLVER(cusolverDnZhegvd(cusolver_H, CUSOLVER_EIG_TYPE_1, CUSOLVER_EIG_MODE_VECTOR, uplo, n, + reinterpret_cast(A), lda, reinterpret_cast(B), ldb, W, work, lwork, devInfo)); + + CHECK_CUDA(cudaMemcpy(&info_gpu, devInfo, sizeof(int), cudaMemcpyDeviceToHost)); + assert(0 == info_gpu); + // free the buffer + CHECK_CUDA(cudaFree(work)); + CHECK_CUDA(cudaFree(devInfo)); +} + +static inline +void xheevd_wrapper( + const cublasFillMode_t& uplo, + const int& n, + double* A, const int& lda, + double* W) +{ + // prepare some values for cusolverDnZhegvd_bufferSize + int* devInfo = nullptr; + int lwork = 0, info_gpu = 0; + double* work = nullptr; + CHECK_CUDA(cudaMalloc((void**)&devInfo, sizeof(int))); + + // calculate the sizes needed for pre-allocated buffer. + CHECK_CUSOLVER(cusolverDnDsyevd_bufferSize(cusolver_H, CUSOLVER_EIG_MODE_VECTOR, uplo, n, + A, lda, W, &lwork)); + // allocate memery + CHECK_CUDA(cudaMalloc((void**)&work, sizeof(double) * lwork)); + // compute eigenvalues and eigenvectors. + CHECK_CUSOLVER(cusolverDnDsyevd(cusolver_H, CUSOLVER_EIG_MODE_VECTOR, uplo, n, A, lda, W, work, lwork, devInfo)); + + CHECK_CUDA(cudaMemcpy(&info_gpu, devInfo, sizeof(int), cudaMemcpyDeviceToHost)); + assert(0 == info_gpu); + CHECK_CUDA(cudaFree(work)); + CHECK_CUDA(cudaFree(devInfo)); +} + +static inline +void xheevd_wrapper ( + const cublasFillMode_t& uplo, + const int& n, + std::complex * A, const int& lda, + float * W) +{ + // prepare some values for cusolverDnZhegvd_bufferSize + int * devInfo = nullptr; + int lwork = 0, info_gpu = 0; + float2 * work = nullptr; + CHECK_CUDA(cudaMalloc((void**)&devInfo, sizeof(int))); + + // calculate the sizes needed for pre-allocated buffer. + CHECK_CUSOLVER(cusolverDnCheevd_bufferSize(cusolver_H, CUSOLVER_EIG_MODE_VECTOR, uplo, n, + reinterpret_cast(A), lda, W, &lwork)); + // allocate memery + CHECK_CUDA(cudaMalloc((void**)&work, sizeof(float2) * lwork)); + // compute eigenvalues and eigenvectors. + CHECK_CUSOLVER(cusolverDnCheevd(cusolver_H, CUSOLVER_EIG_MODE_VECTOR, uplo, n, reinterpret_cast(A), lda, W, work, lwork, devInfo)); + + CHECK_CUDA(cudaMemcpy(&info_gpu, devInfo, sizeof(int), cudaMemcpyDeviceToHost)); + assert(0 == info_gpu); + CHECK_CUDA(cudaFree(work)); + CHECK_CUDA(cudaFree(devInfo)); +} + +static inline +void xheevd_wrapper ( + const cublasFillMode_t& uplo, + const int& n, + std::complex * A, const int& lda, + double * W) +{ + // prepare some values for cusolverDnZhegvd_bufferSize + int * devInfo = nullptr; + int lwork = 0, info_gpu = 0; + double2 * work = nullptr; + CHECK_CUDA(cudaMalloc((void**)&devInfo, sizeof(int))); + + // calculate the sizes needed for pre-allocated buffer. + CHECK_CUSOLVER(cusolverDnZheevd_bufferSize(cusolver_H, CUSOLVER_EIG_MODE_VECTOR, uplo, n, + reinterpret_cast(A), lda, W, &lwork)); + // allocate memery + CHECK_CUDA(cudaMalloc((void**)&work, sizeof(double2) * lwork)); + // compute eigenvalues and eigenvectors. + CHECK_CUSOLVER(cusolverDnZheevd(cusolver_H, CUSOLVER_EIG_MODE_VECTOR, uplo, n, + reinterpret_cast(A), lda, W, work, lwork, devInfo)); + + CHECK_CUDA(cudaMemcpy(&info_gpu, devInfo, sizeof(int), cudaMemcpyDeviceToHost)); + assert(0 == info_gpu); + CHECK_CUDA(cudaFree(work)); + CHECK_CUDA(cudaFree(devInfo)); +} + +template +struct hegvd_op +{ + using Real = typename GetTypeReal::type; + void operator()(const base_device::DEVICE_GPU* d, + const int nstart, + const int ldh, + const T* A, // hcc + T* B, // scc + Real* W, // eigenvalue + T* V) + { + // assert(nstart == ldh); + // A to V + CHECK_CUDA(cudaMemcpy(V, A, sizeof(T) * ldh * nstart, cudaMemcpyDeviceToDevice)); + xhegvd_wrapper(CUBLAS_FILL_MODE_UPPER, nstart, V, ldh, + (T*)B, ldh, W); + } +}; + +template +struct heevx_op +{ + using Real = typename GetTypeReal::type; + void operator()(const base_device::DEVICE_GPU* d, + const int nstart, + const int ldh, + const T* A, // hcc + const int m, + Real* W, // eigenvalue + T* V) + { + assert(nstart <= ldh); + // A to V + CHECK_CUDA(cudaMemcpy(V, A, sizeof(T) * nstart * ldh, cudaMemcpyDeviceToDevice)); + xheevd_wrapper(CUBLAS_FILL_MODE_LOWER, nstart, V, ldh, W); + } +}; + +template +struct hegvx_op +{ + using Real = typename GetTypeReal::type; + void operator()(const base_device::DEVICE_GPU* d, + const int nbase, + const int ldh, + T* hcc, + T* scc, + const int m, + Real* eigenvalue, + T* vcc) + { + + } +}; + +template struct hegvd_op, base_device::DEVICE_GPU>; +template struct heevx_op, base_device::DEVICE_GPU>; +template struct hegvx_op, base_device::DEVICE_GPU>; + +template struct hegvd_op, base_device::DEVICE_GPU>; +template struct heevx_op, base_device::DEVICE_GPU>; +template struct hegvx_op, base_device::DEVICE_GPU>; + +#ifdef __LCAO +template struct hegvd_op; +template struct heevx_op; +template struct hegvx_op; +#endif + +} // namespace hsolver \ No newline at end of file diff --git a/source/source_hsolver/kernels/cuda/helper_cuda.h b/source/source_hsolver/kernels/cuda/helper_cuda.h deleted file mode 100644 index e61e4597f6..0000000000 --- a/source/source_hsolver/kernels/cuda/helper_cuda.h +++ /dev/null @@ -1,968 +0,0 @@ -/* Copyright (c) 2022, NVIDIA CORPORATION. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * 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. - * * Neither the name of NVIDIA CORPORATION 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 ``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 OWNER 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. - */ - -//////////////////////////////////////////////////////////////////////////////// -// These are CUDA Helper functions for initialization and error checking - -#ifndef COMMON_HELPER_CUDA_H_ -#define COMMON_HELPER_CUDA_H_ - -#pragma once - -#include -#include -#include -#include - -#include "helper_string.h" - -#ifndef EXIT_WAIVED -#define EXIT_WAIVED 2 -#endif - -// Note, it is required that your SDK sample to include the proper header -// files, please refer the CUDA examples for examples of the needed CUDA -// headers, which may change depending on which CUDA functions are used. - -// CUDA Runtime error messages -#ifdef __DRIVER_TYPES_H__ -static const char *_cudaGetErrorEnum(cudaError_t error) { - return cudaGetErrorName(error); -} -#endif - -#ifdef CUDA_DRIVER_API -// CUDA Driver API errors -static const char *_cudaGetErrorEnum(CUresult error) { - static char unknown[] = ""; - const char *ret = NULL; - cuGetErrorName(error, &ret); - return ret ? ret : unknown; -} -#endif - -#ifdef CUBLAS_API_H_ -// cuBLAS API errors -static const char *_cudaGetErrorEnum(cublasStatus_t error) { - switch (error) { - case CUBLAS_STATUS_SUCCESS: - return "CUBLAS_STATUS_SUCCESS"; - - case CUBLAS_STATUS_NOT_INITIALIZED: - return "CUBLAS_STATUS_NOT_INITIALIZED"; - - case CUBLAS_STATUS_ALLOC_FAILED: - return "CUBLAS_STATUS_ALLOC_FAILED"; - - case CUBLAS_STATUS_INVALID_VALUE: - return "CUBLAS_STATUS_INVALID_VALUE"; - - case CUBLAS_STATUS_ARCH_MISMATCH: - return "CUBLAS_STATUS_ARCH_MISMATCH"; - - case CUBLAS_STATUS_MAPPING_ERROR: - return "CUBLAS_STATUS_MAPPING_ERROR"; - - case CUBLAS_STATUS_EXECUTION_FAILED: - return "CUBLAS_STATUS_EXECUTION_FAILED"; - - case CUBLAS_STATUS_INTERNAL_ERROR: - return "CUBLAS_STATUS_INTERNAL_ERROR"; - - case CUBLAS_STATUS_NOT_SUPPORTED: - return "CUBLAS_STATUS_NOT_SUPPORTED"; - - case CUBLAS_STATUS_LICENSE_ERROR: - return "CUBLAS_STATUS_LICENSE_ERROR"; - } - - return ""; -} -#endif - -#ifdef _CUFFT_H_ -// cuFFT API errors -static const char *_cudaGetErrorEnum(cufftResult error) { - switch (error) { - case CUFFT_SUCCESS: - return "CUFFT_SUCCESS"; - - case CUFFT_INVALID_PLAN: - return "CUFFT_INVALID_PLAN"; - - case CUFFT_ALLOC_FAILED: - return "CUFFT_ALLOC_FAILED"; - - case CUFFT_INVALID_TYPE: - return "CUFFT_INVALID_TYPE"; - - case CUFFT_INVALID_VALUE: - return "CUFFT_INVALID_VALUE"; - - case CUFFT_INTERNAL_ERROR: - return "CUFFT_INTERNAL_ERROR"; - - case CUFFT_EXEC_FAILED: - return "CUFFT_EXEC_FAILED"; - - case CUFFT_SETUP_FAILED: - return "CUFFT_SETUP_FAILED"; - - case CUFFT_INVALID_SIZE: - return "CUFFT_INVALID_SIZE"; - - case CUFFT_UNALIGNED_DATA: - return "CUFFT_UNALIGNED_DATA"; - - case CUFFT_INCOMPLETE_PARAMETER_LIST: - return "CUFFT_INCOMPLETE_PARAMETER_LIST"; - - case CUFFT_INVALID_DEVICE: - return "CUFFT_INVALID_DEVICE"; - - case CUFFT_PARSE_ERROR: - return "CUFFT_PARSE_ERROR"; - - case CUFFT_NO_WORKSPACE: - return "CUFFT_NO_WORKSPACE"; - - case CUFFT_NOT_IMPLEMENTED: - return "CUFFT_NOT_IMPLEMENTED"; - - case CUFFT_LICENSE_ERROR: - return "CUFFT_LICENSE_ERROR"; - - case CUFFT_NOT_SUPPORTED: - return "CUFFT_NOT_SUPPORTED"; - } - - return ""; -} -#endif - -#ifdef CUSPARSEAPI -// cuSPARSE API errors -static const char *_cudaGetErrorEnum(cusparseStatus_t error) { - switch (error) { - case CUSPARSE_STATUS_SUCCESS: - return "CUSPARSE_STATUS_SUCCESS"; - - case CUSPARSE_STATUS_NOT_INITIALIZED: - return "CUSPARSE_STATUS_NOT_INITIALIZED"; - - case CUSPARSE_STATUS_ALLOC_FAILED: - return "CUSPARSE_STATUS_ALLOC_FAILED"; - - case CUSPARSE_STATUS_INVALID_VALUE: - return "CUSPARSE_STATUS_INVALID_VALUE"; - - case CUSPARSE_STATUS_ARCH_MISMATCH: - return "CUSPARSE_STATUS_ARCH_MISMATCH"; - - case CUSPARSE_STATUS_MAPPING_ERROR: - return "CUSPARSE_STATUS_MAPPING_ERROR"; - - case CUSPARSE_STATUS_EXECUTION_FAILED: - return "CUSPARSE_STATUS_EXECUTION_FAILED"; - - case CUSPARSE_STATUS_INTERNAL_ERROR: - return "CUSPARSE_STATUS_INTERNAL_ERROR"; - - case CUSPARSE_STATUS_MATRIX_TYPE_NOT_SUPPORTED: - return "CUSPARSE_STATUS_MATRIX_TYPE_NOT_SUPPORTED"; - } - - return ""; -} -#endif - -#ifdef CUSOLVER_COMMON_H_ -// cuSOLVER API errors -static const char *_cudaGetErrorEnum(cusolverStatus_t error) { - switch (error) { - case CUSOLVER_STATUS_SUCCESS: - return "CUSOLVER_STATUS_SUCCESS"; - case CUSOLVER_STATUS_NOT_INITIALIZED: - return "CUSOLVER_STATUS_NOT_INITIALIZED"; - case CUSOLVER_STATUS_ALLOC_FAILED: - return "CUSOLVER_STATUS_ALLOC_FAILED"; - case CUSOLVER_STATUS_INVALID_VALUE: - return "CUSOLVER_STATUS_INVALID_VALUE"; - case CUSOLVER_STATUS_ARCH_MISMATCH: - return "CUSOLVER_STATUS_ARCH_MISMATCH"; - case CUSOLVER_STATUS_MAPPING_ERROR: - return "CUSOLVER_STATUS_MAPPING_ERROR"; - case CUSOLVER_STATUS_EXECUTION_FAILED: - return "CUSOLVER_STATUS_EXECUTION_FAILED"; - case CUSOLVER_STATUS_INTERNAL_ERROR: - return "CUSOLVER_STATUS_INTERNAL_ERROR"; - case CUSOLVER_STATUS_MATRIX_TYPE_NOT_SUPPORTED: - return "CUSOLVER_STATUS_MATRIX_TYPE_NOT_SUPPORTED"; - case CUSOLVER_STATUS_NOT_SUPPORTED: - return "CUSOLVER_STATUS_NOT_SUPPORTED "; - case CUSOLVER_STATUS_ZERO_PIVOT: - return "CUSOLVER_STATUS_ZERO_PIVOT"; - case CUSOLVER_STATUS_INVALID_LICENSE: - return "CUSOLVER_STATUS_INVALID_LICENSE"; - } - - return ""; -} -#endif - -#ifdef CURAND_H_ -// cuRAND API errors -static const char *_cudaGetErrorEnum(curandStatus_t error) { - switch (error) { - case CURAND_STATUS_SUCCESS: - return "CURAND_STATUS_SUCCESS"; - - case CURAND_STATUS_VERSION_MISMATCH: - return "CURAND_STATUS_VERSION_MISMATCH"; - - case CURAND_STATUS_NOT_INITIALIZED: - return "CURAND_STATUS_NOT_INITIALIZED"; - - case CURAND_STATUS_ALLOCATION_FAILED: - return "CURAND_STATUS_ALLOCATION_FAILED"; - - case CURAND_STATUS_TYPE_ERROR: - return "CURAND_STATUS_TYPE_ERROR"; - - case CURAND_STATUS_OUT_OF_RANGE: - return "CURAND_STATUS_OUT_OF_RANGE"; - - case CURAND_STATUS_LENGTH_NOT_MULTIPLE: - return "CURAND_STATUS_LENGTH_NOT_MULTIPLE"; - - case CURAND_STATUS_DOUBLE_PRECISION_REQUIRED: - return "CURAND_STATUS_DOUBLE_PRECISION_REQUIRED"; - - case CURAND_STATUS_LAUNCH_FAILURE: - return "CURAND_STATUS_LAUNCH_FAILURE"; - - case CURAND_STATUS_PREEXISTING_FAILURE: - return "CURAND_STATUS_PREEXISTING_FAILURE"; - - case CURAND_STATUS_INITIALIZATION_FAILED: - return "CURAND_STATUS_INITIALIZATION_FAILED"; - - case CURAND_STATUS_ARCH_MISMATCH: - return "CURAND_STATUS_ARCH_MISMATCH"; - - case CURAND_STATUS_INTERNAL_ERROR: - return "CURAND_STATUS_INTERNAL_ERROR"; - } - - return ""; -} -#endif - -#ifdef NVJPEGAPI -// nvJPEG API errors -static const char *_cudaGetErrorEnum(nvjpegStatus_t error) { - switch (error) { - case NVJPEG_STATUS_SUCCESS: - return "NVJPEG_STATUS_SUCCESS"; - - case NVJPEG_STATUS_NOT_INITIALIZED: - return "NVJPEG_STATUS_NOT_INITIALIZED"; - - case NVJPEG_STATUS_INVALID_PARAMETER: - return "NVJPEG_STATUS_INVALID_PARAMETER"; - - case NVJPEG_STATUS_BAD_JPEG: - return "NVJPEG_STATUS_BAD_JPEG"; - - case NVJPEG_STATUS_JPEG_NOT_SUPPORTED: - return "NVJPEG_STATUS_JPEG_NOT_SUPPORTED"; - - case NVJPEG_STATUS_ALLOCATOR_FAILURE: - return "NVJPEG_STATUS_ALLOCATOR_FAILURE"; - - case NVJPEG_STATUS_EXECUTION_FAILED: - return "NVJPEG_STATUS_EXECUTION_FAILED"; - - case NVJPEG_STATUS_ARCH_MISMATCH: - return "NVJPEG_STATUS_ARCH_MISMATCH"; - - case NVJPEG_STATUS_INTERNAL_ERROR: - return "NVJPEG_STATUS_INTERNAL_ERROR"; - } - - return ""; -} -#endif - -#ifdef NV_NPPIDEFS_H -// NPP API errors -static const char *_cudaGetErrorEnum(NppStatus error) { - switch (error) { - case NPP_NOT_SUPPORTED_MODE_ERROR: - return "NPP_NOT_SUPPORTED_MODE_ERROR"; - - case NPP_ROUND_MODE_NOT_SUPPORTED_ERROR: - return "NPP_ROUND_MODE_NOT_SUPPORTED_ERROR"; - - case NPP_RESIZE_NO_OPERATION_ERROR: - return "NPP_RESIZE_NO_OPERATION_ERROR"; - - case NPP_NOT_SUFFICIENT_COMPUTE_CAPABILITY: - return "NPP_NOT_SUFFICIENT_COMPUTE_CAPABILITY"; - -#if ((NPP_VERSION_MAJOR << 12) + (NPP_VERSION_MINOR << 4)) <= 0x5000 - - case NPP_BAD_ARG_ERROR: - return "NPP_BAD_ARGUMENT_ERROR"; - - case NPP_COEFF_ERROR: - return "NPP_COEFFICIENT_ERROR"; - - case NPP_RECT_ERROR: - return "NPP_RECTANGLE_ERROR"; - - case NPP_QUAD_ERROR: - return "NPP_QUADRANGLE_ERROR"; - - case NPP_MEM_ALLOC_ERR: - return "NPP_MEMORY_ALLOCATION_ERROR"; - - case NPP_HISTO_NUMBER_OF_LEVELS_ERROR: - return "NPP_HISTOGRAM_NUMBER_OF_LEVELS_ERROR"; - - case NPP_INVALID_INPUT: - return "NPP_INVALID_INPUT"; - - case NPP_POINTER_ERROR: - return "NPP_POINTER_ERROR"; - - case NPP_WARNING: - return "NPP_WARNING"; - - case NPP_ODD_ROI_WARNING: - return "NPP_ODD_ROI_WARNING"; -#else - - // These are for CUDA 5.5 or higher - case NPP_BAD_ARGUMENT_ERROR: - return "NPP_BAD_ARGUMENT_ERROR"; - - case NPP_COEFFICIENT_ERROR: - return "NPP_COEFFICIENT_ERROR"; - - case NPP_RECTANGLE_ERROR: - return "NPP_RECTANGLE_ERROR"; - - case NPP_QUADRANGLE_ERROR: - return "NPP_QUADRANGLE_ERROR"; - - case NPP_MEMORY_ALLOCATION_ERR: - return "NPP_MEMORY_ALLOCATION_ERROR"; - - case NPP_HISTOGRAM_NUMBER_OF_LEVELS_ERROR: - return "NPP_HISTOGRAM_NUMBER_OF_LEVELS_ERROR"; - - case NPP_INVALID_HOST_POINTER_ERROR: - return "NPP_INVALID_HOST_POINTER_ERROR"; - - case NPP_INVALID_DEVICE_POINTER_ERROR: - return "NPP_INVALID_DEVICE_POINTER_ERROR"; -#endif - - case NPP_LUT_NUMBER_OF_LEVELS_ERROR: - return "NPP_LUT_NUMBER_OF_LEVELS_ERROR"; - - case NPP_TEXTURE_BIND_ERROR: - return "NPP_TEXTURE_BIND_ERROR"; - - case NPP_WRONG_INTERSECTION_ROI_ERROR: - return "NPP_WRONG_INTERSECTION_ROI_ERROR"; - - case NPP_NOT_EVEN_STEP_ERROR: - return "NPP_NOT_EVEN_STEP_ERROR"; - - case NPP_INTERPOLATION_ERROR: - return "NPP_INTERPOLATION_ERROR"; - - case NPP_RESIZE_FACTOR_ERROR: - return "NPP_RESIZE_FACTOR_ERROR"; - - case NPP_HAAR_CLASSIFIER_PIXEL_MATCH_ERROR: - return "NPP_HAAR_CLASSIFIER_PIXEL_MATCH_ERROR"; - -#if ((NPP_VERSION_MAJOR << 12) + (NPP_VERSION_MINOR << 4)) <= 0x5000 - - case NPP_MEMFREE_ERR: - return "NPP_MEMFREE_ERR"; - - case NPP_MEMSET_ERR: - return "NPP_MEMSET_ERR"; - - case NPP_MEMCPY_ERR: - return "NPP_MEMCPY_ERROR"; - - case NPP_MIRROR_FLIP_ERR: - return "NPP_MIRROR_FLIP_ERR"; -#else - - case NPP_MEMFREE_ERROR: - return "NPP_MEMFREE_ERROR"; - - case NPP_MEMSET_ERROR: - return "NPP_MEMSET_ERROR"; - - case NPP_MEMCPY_ERROR: - return "NPP_MEMCPY_ERROR"; - - case NPP_MIRROR_FLIP_ERROR: - return "NPP_MIRROR_FLIP_ERROR"; -#endif - - case NPP_ALIGNMENT_ERROR: - return "NPP_ALIGNMENT_ERROR"; - - case NPP_STEP_ERROR: - return "NPP_STEP_ERROR"; - - case NPP_SIZE_ERROR: - return "NPP_SIZE_ERROR"; - - case NPP_NULL_POINTER_ERROR: - return "NPP_NULL_POINTER_ERROR"; - - case NPP_CUDA_KERNEL_EXECUTION_ERROR: - return "NPP_CUDA_KERNEL_EXECUTION_ERROR"; - - case NPP_NOT_IMPLEMENTED_ERROR: - return "NPP_NOT_IMPLEMENTED_ERROR"; - - case NPP_ERROR: - return "NPP_ERROR"; - - case NPP_SUCCESS: - return "NPP_SUCCESS"; - - case NPP_WRONG_INTERSECTION_QUAD_WARNING: - return "NPP_WRONG_INTERSECTION_QUAD_WARNING"; - - case NPP_MISALIGNED_DST_ROI_WARNING: - return "NPP_MISALIGNED_DST_ROI_WARNING"; - - case NPP_AFFINE_QUAD_INCORRECT_WARNING: - return "NPP_AFFINE_QUAD_INCORRECT_WARNING"; - - case NPP_DOUBLE_SIZE_WARNING: - return "NPP_DOUBLE_SIZE_WARNING"; - - case NPP_WRONG_INTERSECTION_ROI_WARNING: - return "NPP_WRONG_INTERSECTION_ROI_WARNING"; - -#if ((NPP_VERSION_MAJOR << 12) + (NPP_VERSION_MINOR << 4)) >= 0x6000 - /* These are 6.0 or higher */ - case NPP_LUT_PALETTE_BITSIZE_ERROR: - return "NPP_LUT_PALETTE_BITSIZE_ERROR"; - - case NPP_ZC_MODE_NOT_SUPPORTED_ERROR: - return "NPP_ZC_MODE_NOT_SUPPORTED_ERROR"; - - case NPP_QUALITY_INDEX_ERROR: - return "NPP_QUALITY_INDEX_ERROR"; - - case NPP_CHANNEL_ORDER_ERROR: - return "NPP_CHANNEL_ORDER_ERROR"; - - case NPP_ZERO_MASK_VALUE_ERROR: - return "NPP_ZERO_MASK_VALUE_ERROR"; - - case NPP_NUMBER_OF_CHANNELS_ERROR: - return "NPP_NUMBER_OF_CHANNELS_ERROR"; - - case NPP_COI_ERROR: - return "NPP_COI_ERROR"; - - case NPP_DIVISOR_ERROR: - return "NPP_DIVISOR_ERROR"; - - case NPP_CHANNEL_ERROR: - return "NPP_CHANNEL_ERROR"; - - case NPP_STRIDE_ERROR: - return "NPP_STRIDE_ERROR"; - - case NPP_ANCHOR_ERROR: - return "NPP_ANCHOR_ERROR"; - - case NPP_MASK_SIZE_ERROR: - return "NPP_MASK_SIZE_ERROR"; - - case NPP_MOMENT_00_ZERO_ERROR: - return "NPP_MOMENT_00_ZERO_ERROR"; - - case NPP_THRESHOLD_NEGATIVE_LEVEL_ERROR: - return "NPP_THRESHOLD_NEGATIVE_LEVEL_ERROR"; - - case NPP_THRESHOLD_ERROR: - return "NPP_THRESHOLD_ERROR"; - - case NPP_CONTEXT_MATCH_ERROR: - return "NPP_CONTEXT_MATCH_ERROR"; - - case NPP_FFT_FLAG_ERROR: - return "NPP_FFT_FLAG_ERROR"; - - case NPP_FFT_ORDER_ERROR: - return "NPP_FFT_ORDER_ERROR"; - - case NPP_SCALE_RANGE_ERROR: - return "NPP_SCALE_RANGE_ERROR"; - - case NPP_DATA_TYPE_ERROR: - return "NPP_DATA_TYPE_ERROR"; - - case NPP_OUT_OFF_RANGE_ERROR: - return "NPP_OUT_OFF_RANGE_ERROR"; - - case NPP_DIVIDE_BY_ZERO_ERROR: - return "NPP_DIVIDE_BY_ZERO_ERROR"; - - case NPP_RANGE_ERROR: - return "NPP_RANGE_ERROR"; - - case NPP_NO_MEMORY_ERROR: - return "NPP_NO_MEMORY_ERROR"; - - case NPP_ERROR_RESERVED: - return "NPP_ERROR_RESERVED"; - - case NPP_NO_OPERATION_WARNING: - return "NPP_NO_OPERATION_WARNING"; - - case NPP_DIVIDE_BY_ZERO_WARNING: - return "NPP_DIVIDE_BY_ZERO_WARNING"; -#endif - -#if ((NPP_VERSION_MAJOR << 12) + (NPP_VERSION_MINOR << 4)) >= 0x7000 - /* These are 7.0 or higher */ - case NPP_OVERFLOW_ERROR: - return "NPP_OVERFLOW_ERROR"; - - case NPP_CORRUPTED_DATA_ERROR: - return "NPP_CORRUPTED_DATA_ERROR"; -#endif - } - - return ""; -} -#endif - -template -void check(T result, char const *const func, const char *const file, - int const line) { - if (result) { - fprintf(stderr, "CUDA error at %s:%d code=%d(%s) \"%s\" \n", file, line, - static_cast(result), _cudaGetErrorEnum(result), func); - exit(EXIT_FAILURE); - } -} - -#ifdef __DRIVER_TYPES_H__ -// This will output the proper CUDA error strings in the event -// that a CUDA host call returns an error -#define checkCudaErrors(val) check((val), #val, __FILE__, __LINE__) - -// This will output the proper error string when calling cudaGetLastError -#define getLastCudaError(msg) __getLastCudaError(msg, __FILE__, __LINE__) - -inline void __getLastCudaError(const char *errorMessage, const char *file, - const int line) { - cudaError_t err = cudaGetLastError(); - - if (cudaSuccess != err) { - fprintf(stderr, - "%s(%i) : getLastCudaError() CUDA error :" - " %s : (%d) %s.\n", - file, line, errorMessage, static_cast(err), - cudaGetErrorString(err)); - exit(EXIT_FAILURE); - } -} - -// This will only print the proper error string when calling cudaGetLastError -// but not exit program incase error detected. -#define printLastCudaError(msg) __printLastCudaError(msg, __FILE__, __LINE__) - -inline void __printLastCudaError(const char *errorMessage, const char *file, - const int line) { - cudaError_t err = cudaGetLastError(); - - if (cudaSuccess != err) { - fprintf(stderr, - "%s(%i) : getLastCudaError() CUDA error :" - " %s : (%d) %s.\n", - file, line, errorMessage, static_cast(err), - cudaGetErrorString(err)); - } -} -#endif - -#ifndef MAX -#define MAX(a, b) (a > b ? a : b) -#endif - -// Float To Int conversion -inline int ftoi(float value) { - return (value >= 0 ? static_cast(value + 0.5) - : static_cast(value - 0.5)); -} - -// Beginning of GPU Architecture definitions -inline int _ConvertSMVer2Cores(int major, int minor) { - // Defines for GPU Architecture types (using the SM version to determine - // the # of cores per SM - typedef struct { - int SM; // 0xMm (hexidecimal notation), M = SM Major version, - // and m = SM minor version - int Cores; - } sSMtoCores; - - sSMtoCores nGpuArchCoresPerSM[] = { - {0x30, 192}, - {0x32, 192}, - {0x35, 192}, - {0x37, 192}, - {0x50, 128}, - {0x52, 128}, - {0x53, 128}, - {0x60, 64}, - {0x61, 128}, - {0x62, 128}, - {0x70, 64}, - {0x72, 64}, - {0x75, 64}, - {0x80, 64}, - {0x86, 128}, - {0x87, 128}, - {-1, -1}}; - - int index = 0; - - while (nGpuArchCoresPerSM[index].SM != -1) { - if (nGpuArchCoresPerSM[index].SM == ((major << 4) + minor)) { - return nGpuArchCoresPerSM[index].Cores; - } - - index++; - } - - // If we don't find the values, we default use the previous one - // to run properly - printf( - "MapSMtoCores for SM %d.%d is undefined." - " Default to use %d Cores/SM\n", - major, minor, nGpuArchCoresPerSM[index - 1].Cores); - return nGpuArchCoresPerSM[index - 1].Cores; -} - -inline const char* _ConvertSMVer2ArchName(int major, int minor) { - // Defines for GPU Architecture types (using the SM version to determine - // the GPU Arch name) - typedef struct { - int SM; // 0xMm (hexidecimal notation), M = SM Major version, - // and m = SM minor version - const char* name; - } sSMtoArchName; - - sSMtoArchName nGpuArchNameSM[] = { - {0x30, "Kepler"}, - {0x32, "Kepler"}, - {0x35, "Kepler"}, - {0x37, "Kepler"}, - {0x50, "Maxwell"}, - {0x52, "Maxwell"}, - {0x53, "Maxwell"}, - {0x60, "Pascal"}, - {0x61, "Pascal"}, - {0x62, "Pascal"}, - {0x70, "Volta"}, - {0x72, "Xavier"}, - {0x75, "Turing"}, - {0x80, "Ampere"}, - {0x86, "Ampere"}, - {-1, "Graphics Device"}}; - - int index = 0; - - while (nGpuArchNameSM[index].SM != -1) { - if (nGpuArchNameSM[index].SM == ((major << 4) + minor)) { - return nGpuArchNameSM[index].name; - } - - index++; - } - - // If we don't find the values, we default use the previous one - // to run properly - printf( - "MapSMtoArchName for SM %d.%d is undefined." - " Default to use %s\n", - major, minor, nGpuArchNameSM[index - 1].name); - return nGpuArchNameSM[index - 1].name; -} - // end of GPU Architecture definitions - -#ifdef __CUDA_RUNTIME_H__ -// General GPU Device CUDA Initialization -inline int gpuDeviceInit(int devID) { - int device_count; - checkCudaErrors(cudaGetDeviceCount(&device_count)); - - if (device_count == 0) { - fprintf(stderr, - "gpuDeviceInit() CUDA error: " - "no devices supporting CUDA.\n"); - exit(EXIT_FAILURE); - } - - if (devID < 0) { - devID = 0; - } - - if (devID > device_count - 1) { - fprintf(stderr, "\n"); - fprintf(stderr, ">> %d CUDA capable GPU device(s) detected. <<\n", - device_count); - fprintf(stderr, - ">> gpuDeviceInit (-device=%d) is not a valid" - " GPU device. <<\n", - devID); - fprintf(stderr, "\n"); - return -devID; - } - - int computeMode = -1, major = 0, minor = 0; - checkCudaErrors(cudaDeviceGetAttribute(&computeMode, cudaDevAttrComputeMode, devID)); - checkCudaErrors(cudaDeviceGetAttribute(&major, cudaDevAttrComputeCapabilityMajor, devID)); - checkCudaErrors(cudaDeviceGetAttribute(&minor, cudaDevAttrComputeCapabilityMinor, devID)); - if (computeMode == cudaComputeModeProhibited) { - fprintf(stderr, - "Error: device is running in , no threads can use cudaSetDevice().\n"); - return -1; - } - - if (major < 1) { - fprintf(stderr, "gpuDeviceInit(): GPU device does not support CUDA.\n"); - exit(EXIT_FAILURE); - } - - checkCudaErrors(cudaSetDevice(devID)); - printf("gpuDeviceInit() CUDA Device [%d]: \"%s\n", devID, _ConvertSMVer2ArchName(major, minor)); - - return devID; -} - -// This function returns the best GPU (with maximum GFLOPS) -inline int gpuGetMaxGflopsDeviceId() { - int current_device = 0, sm_per_multiproc = 0; - int max_perf_device = 0; - int device_count = 0; - int devices_prohibited = 0; - - uint64_t max_compute_perf = 0; - checkCudaErrors(cudaGetDeviceCount(&device_count)); - - if (device_count == 0) { - fprintf(stderr, - "gpuGetMaxGflopsDeviceId() CUDA error:" - " no devices supporting CUDA.\n"); - exit(EXIT_FAILURE); - } - - // Find the best CUDA capable GPU device - current_device = 0; - - while (current_device < device_count) { - int computeMode = -1, major = 0, minor = 0; - checkCudaErrors(cudaDeviceGetAttribute(&computeMode, cudaDevAttrComputeMode, current_device)); - checkCudaErrors(cudaDeviceGetAttribute(&major, cudaDevAttrComputeCapabilityMajor, current_device)); - checkCudaErrors(cudaDeviceGetAttribute(&minor, cudaDevAttrComputeCapabilityMinor, current_device)); - - // If this GPU is not running on Compute Mode prohibited, - // then we can add it to the list - if (computeMode != cudaComputeModeProhibited) { - if (major == 9999 && minor == 9999) { - sm_per_multiproc = 1; - } else { - sm_per_multiproc = - _ConvertSMVer2Cores(major, minor); - } - int multiProcessorCount = 0, clockRate = 0; - checkCudaErrors(cudaDeviceGetAttribute(&multiProcessorCount, cudaDevAttrMultiProcessorCount, current_device)); - cudaError_t result = cudaDeviceGetAttribute(&clockRate, cudaDevAttrClockRate, current_device); - if (result != cudaSuccess) { - // If cudaDevAttrClockRate attribute is not supported we - // set clockRate as 1, to consider GPU with most SMs and CUDA Cores. - if(result == cudaErrorInvalidValue) { - clockRate = 1; - } - else { - fprintf(stderr, "CUDA error at %s:%d code=%d(%s) \n", __FILE__, __LINE__, - static_cast(result), _cudaGetErrorEnum(result)); - exit(EXIT_FAILURE); - } - } - uint64_t compute_perf = (uint64_t)multiProcessorCount * sm_per_multiproc * clockRate; - - if (compute_perf > max_compute_perf) { - max_compute_perf = compute_perf; - max_perf_device = current_device; - } - } else { - devices_prohibited++; - } - - ++current_device; - } - - if (devices_prohibited == device_count) { - fprintf(stderr, - "gpuGetMaxGflopsDeviceId() CUDA error:" - " all devices have compute mode prohibited.\n"); - exit(EXIT_FAILURE); - } - - return max_perf_device; -} - -// Initialization code to find the best CUDA Device -inline int findCudaDevice(int argc, const char **argv) { - int devID = 0; - - // If the command-line has a device number specified, use it - if (checkCmdLineFlag(argc, argv, "device")) { - devID = getCmdLineArgumentInt(argc, argv, "device="); - - if (devID < 0) { - printf("Invalid command line parameter\n "); - exit(EXIT_FAILURE); - } else { - devID = gpuDeviceInit(devID); - - if (devID < 0) { - printf("exiting...\n"); - exit(EXIT_FAILURE); - } - } - } else { - // Otherwise pick the device with highest Gflops/s - devID = gpuGetMaxGflopsDeviceId(); - checkCudaErrors(cudaSetDevice(devID)); - int major = 0, minor = 0; - checkCudaErrors(cudaDeviceGetAttribute(&major, cudaDevAttrComputeCapabilityMajor, devID)); - checkCudaErrors(cudaDeviceGetAttribute(&minor, cudaDevAttrComputeCapabilityMinor, devID)); - printf("GPU Device %d: \"%s\" with compute capability %d.%d\n\n", - devID, _ConvertSMVer2ArchName(major, minor), major, minor); - - } - - return devID; -} - -inline int findIntegratedGPU() { - int current_device = 0; - int device_count = 0; - int devices_prohibited = 0; - - checkCudaErrors(cudaGetDeviceCount(&device_count)); - - if (device_count == 0) { - fprintf(stderr, "CUDA error: no devices supporting CUDA.\n"); - exit(EXIT_FAILURE); - } - - // Find the integrated GPU which is compute capable - while (current_device < device_count) { - int computeMode = -1, integrated = -1; - checkCudaErrors(cudaDeviceGetAttribute(&computeMode, cudaDevAttrComputeMode, current_device)); - checkCudaErrors(cudaDeviceGetAttribute(&integrated, cudaDevAttrIntegrated, current_device)); - // If GPU is integrated and is not running on Compute Mode prohibited, - // then cuda can map to GLES resource - if (integrated && (computeMode != cudaComputeModeProhibited)) { - checkCudaErrors(cudaSetDevice(current_device)); - - int major = 0, minor = 0; - checkCudaErrors(cudaDeviceGetAttribute(&major, cudaDevAttrComputeCapabilityMajor, current_device)); - checkCudaErrors(cudaDeviceGetAttribute(&minor, cudaDevAttrComputeCapabilityMinor, current_device)); - printf("GPU Device %d: \"%s\" with compute capability %d.%d\n\n", - current_device, _ConvertSMVer2ArchName(major, minor), major, minor); - - return current_device; - } else { - devices_prohibited++; - } - - current_device++; - } - - if (devices_prohibited == device_count) { - fprintf(stderr, - "CUDA error:" - " No GLES-CUDA Interop capable GPU found.\n"); - exit(EXIT_FAILURE); - } - - return -1; -} - -// General check for CUDA GPU SM Capabilities -inline bool checkCudaCapabilities(int major_version, int minor_version) { - int dev; - int major = 0, minor = 0; - - checkCudaErrors(cudaGetDevice(&dev)); - checkCudaErrors(cudaDeviceGetAttribute(&major, cudaDevAttrComputeCapabilityMajor, dev)); - checkCudaErrors(cudaDeviceGetAttribute(&minor, cudaDevAttrComputeCapabilityMinor, dev)); - - if ((major > major_version) || - (major == major_version && - minor >= minor_version)) { - printf(" Device %d: <%16s >, Compute SM %d.%d detected\n", dev, - _ConvertSMVer2ArchName(major, minor), major, minor); - return true; - } else { - printf( - " No GPU device was found that can support " - "CUDA compute capability %d.%d.\n", - major_version, minor_version); - return false; - } -} -#endif - - // end of CUDA Helper Functions - -#endif // COMMON_HELPER_CUDA_H_ \ No newline at end of file diff --git a/source/source_hsolver/kernels/cuda/helper_cusolver.h b/source/source_hsolver/kernels/cuda/helper_cusolver.h deleted file mode 100644 index 1beca4c6c7..0000000000 --- a/source/source_hsolver/kernels/cuda/helper_cusolver.h +++ /dev/null @@ -1,116 +0,0 @@ -// by zhanghaochong 20240529 -// The reason that I create a new helper file is the header file of helper_cuda.h is tooooo long - -#ifndef W_ABACUS_DEVELOP_ABACUS_DEVELOP_SOURCE_MODULE_HSOLVER_KERNELS_CUDA_HELPER_CUSOLVER_H -#define W_ABACUS_DEVELOP_ABACUS_DEVELOP_SOURCE_MODULE_HSOLVER_KERNELS_CUDA_HELPER_CUSOLVER_H -#ifdef __CUSOLVERMP -#include - -const char* calGetErrorString(calError_t status) -{ - switch (status) - { - case CAL_OK: - return "CAL_OK"; - case CAL_ERROR: - return "CAL_ERROR"; - case CAL_ERROR_INVALID_PARAMETER: - return "CAL_ERROR_INVALID_PARAMETER"; - case CAL_ERROR_INTERNAL: - return "CAL_ERROR_INTERNAL"; - case CAL_ERROR_CUDA: - return "CAL_ERROR_CUDA"; - case CAL_ERROR_UCC: - return "CAL_ERROR_UCC"; - case CAL_ERROR_NOT_SUPPORTED: - return "CAL_ERROR_NOT_SUPPORTED"; - case CAL_ERROR_INPROGRESS: - return "CAL_ERROR_INPROGRESS"; - default: - return "CAL UNKNOWN ERROR"; - } -} - -#define CAL_CHECK(cmd) \ - do \ - { \ - calError_t status = cmd; \ - if (status != CAL_OK) \ - { \ - fprintf(stderr, "ERROR: %s %s %d\n", calGetErrorString(status), __FILE__, __LINE__); \ - abort(); \ - } \ - } while (0) -#endif - -const char* cusolverGetErrorString(cusolverStatus_t status) -{ - switch (status) - { - case CUSOLVER_STATUS_SUCCESS: - return "CUSOLVER_STATUS_SUCCESS"; - case CUSOLVER_STATUS_NOT_INITIALIZED: - return "CUSOLVER_STATUS_NOT_INITIALIZED"; - case CUSOLVER_STATUS_ALLOC_FAILED: - return "CUSOLVER_STATUS_ALLOC_FAILED"; - case CUSOLVER_STATUS_INVALID_VALUE: - return "CUSOLVER_STATUS_INVALID_VALUE"; - case CUSOLVER_STATUS_ARCH_MISMATCH: - return "CUSOLVER_STATUS_ARCH_MISMATCH"; - case CUSOLVER_STATUS_MAPPING_ERROR: - return "CUSOLVER_STATUS_MAPPING_ERROR"; - case CUSOLVER_STATUS_EXECUTION_FAILED: - return "CUSOLVER_STATUS_EXECUTION_FAILED"; - case CUSOLVER_STATUS_INTERNAL_ERROR: - return "CUSOLVER_STATUS_INTERNAL_ERROR"; - case CUSOLVER_STATUS_MATRIX_TYPE_NOT_SUPPORTED: - return "CUSOLVER_STATUS_MATRIX_TYPE_NOT_SUPPORTED"; - case CUSOLVER_STATUS_NOT_SUPPORTED: - return "CUSOLVER_STATUS_NOT_SUPPORTED"; - case CUSOLVER_STATUS_ZERO_PIVOT: - return "CUSOLVER_STATUS_ZERO_PIVOT"; - case CUSOLVER_STATUS_INVALID_LICENSE: - return "CUSOLVER_STATUS_INVALID_LICENSE"; - case CUSOLVER_STATUS_IRS_PARAMS_NOT_INITIALIZED: - return "CUSOLVER_STATUS_IRS_PARAMS_NOT_INITIALIZED"; - case CUSOLVER_STATUS_IRS_PARAMS_INVALID: - return "CUSOLVER_STATUS_IRS_PARAMS_INVALID"; - case CUSOLVER_STATUS_IRS_PARAMS_INVALID_PREC: - return "CUSOLVER_STATUS_IRS_PARAMS_INVALID_PREC"; - case CUSOLVER_STATUS_IRS_PARAMS_INVALID_REFINE: - return "CUSOLVER_STATUS_IRS_PARAMS_INVALID_REFINE"; - case CUSOLVER_STATUS_IRS_PARAMS_INVALID_MAXITER: - return "CUSOLVER_STATUS_IRS_PARAMS_INVALID_MAXITER"; - case CUSOLVER_STATUS_IRS_INTERNAL_ERROR: - return "CUSOLVER_STATUS_IRS_INTERNAL_ERROR"; - case CUSOLVER_STATUS_IRS_NOT_SUPPORTED: - return "CUSOLVER_STATUS_IRS_NOT_SUPPORTED"; - case CUSOLVER_STATUS_IRS_OUT_OF_RANGE: - return "CUSOLVER_STATUS_IRS_OUT_OF_RANGE"; - case CUSOLVER_STATUS_IRS_NRHS_NOT_SUPPORTED_FOR_REFINE_GMRES: - return "CUSOLVER_STATUS_IRS_NRHS_NOT_SUPPORTED_FOR_REFINE_GMRES"; - case CUSOLVER_STATUS_IRS_INFOS_NOT_INITIALIZED: - return "CUSOLVER_STATUS_IRS_INFOS_NOT_INITIALIZED"; - case CUSOLVER_STATUS_IRS_INFOS_NOT_DESTROYED: - return "CUSOLVER_STATUS_IRS_INFOS_NOT_DESTROYED"; - case CUSOLVER_STATUS_IRS_MATRIX_SINGULAR: - return "CUSOLVER_STATUS_IRS_MATRIX_SINGULAR"; - case CUSOLVER_STATUS_INVALID_WORKSPACE: - return "CUSOLVER_STATUS_INVALID_WORKSPACE"; - default: - return "CUSOLVER UNKNOWN ERROR"; - } -} - -#define CUSOLVER_CHECK(cmd) \ - do \ - { \ - cusolverStatus_t status = cmd; \ - if (status != CUSOLVER_STATUS_SUCCESS) \ - { \ - fprintf(stderr, "ERROR: %s %s %d\n", cusolverGetErrorString(status), __FILE__, __LINE__); \ - abort(); \ - } \ - } while (0) - -#endif // W_ABACUS_DEVELOP_ABACUS_DEVELOP_SOURCE_MODULE_HSOLVER_KERNELS_CUDA_HELPER_CUSOLVER_H \ No newline at end of file diff --git a/source/source_hsolver/kernels/cuda/helper_string.h b/source/source_hsolver/kernels/cuda/helper_string.h deleted file mode 100644 index 47fb1ac1fa..0000000000 --- a/source/source_hsolver/kernels/cuda/helper_string.h +++ /dev/null @@ -1,428 +0,0 @@ -/* Copyright (c) 2022, NVIDIA CORPORATION. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * 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. - * * Neither the name of NVIDIA CORPORATION 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 ``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 OWNER 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. - */ - -// These are helper functions for the SDK samples (string parsing, timers, etc) -#ifndef COMMON_HELPER_STRING_H_ -#define COMMON_HELPER_STRING_H_ - -#include -#include -#include -#include - -#if defined(WIN32) || defined(_WIN32) || defined(WIN64) || defined(_WIN64) -#ifndef _CRT_SECURE_NO_DEPRECATE -#define _CRT_SECURE_NO_DEPRECATE -#endif -#ifndef STRCASECMP -#define STRCASECMP _stricmp -#endif -#ifndef STRNCASECMP -#define STRNCASECMP _strnicmp -#endif -#ifndef STRCPY -#define STRCPY(sFilePath, nLength, sPath) strcpy_s(sFilePath, nLength, sPath) -#endif - -#ifndef FOPEN -#define FOPEN(fHandle, filename, mode) fopen_s(&fHandle, filename, mode) -#endif -#ifndef FOPEN_FAIL -#define FOPEN_FAIL(result) (result != 0) -#endif -#ifndef SSCANF -#define SSCANF sscanf_s -#endif -#ifndef SPRINTF -#define SPRINTF sprintf_s -#endif -#else // Linux Includes -#include -#include - -#ifndef STRCASECMP -#define STRCASECMP strcasecmp -#endif -#ifndef STRNCASECMP -#define STRNCASECMP strncasecmp -#endif -#ifndef STRCPY -#define STRCPY(sFilePath, nLength, sPath) strcpy(sFilePath, sPath) -#endif - -#ifndef FOPEN -#define FOPEN(fHandle, filename, mode) (fHandle = fopen(filename, mode)) -#endif -#ifndef FOPEN_FAIL -#define FOPEN_FAIL(result) (result == NULL) -#endif -#ifndef SSCANF -#define SSCANF sscanf -#endif -#ifndef SPRINTF -#define SPRINTF sprintf -#endif -#endif - -#ifndef EXIT_WAIVED -#define EXIT_WAIVED 2 -#endif - -// CUDA Utility Helper Functions -inline int stringRemoveDelimiter(char delimiter, const char *string) { - int string_start = 0; - - while (string[string_start] == delimiter) { - string_start++; - } - - if (string_start >= static_cast(strlen(string) - 1)) { - return 0; - } - - return string_start; -} - -inline int getFileExtension(char *filename, char **extension) { - int string_length = static_cast(strlen(filename)); - - while (filename[string_length--] != '.') { - if (string_length == 0) break; - } - - if (string_length > 0) string_length += 2; - - if (string_length == 0) - *extension = NULL; - else - *extension = &filename[string_length]; - - return string_length; -} - -inline bool checkCmdLineFlag(const int argc, const char **argv, - const char *string_ref) { - bool bFound = false; - - if (argc >= 1) { - for (int i = 1; i < argc; i++) { - int string_start = stringRemoveDelimiter('-', argv[i]); - const char *string_argv = &argv[i][string_start]; - - const char *equal_pos = strchr(string_argv, '='); - int argv_length = static_cast( - equal_pos == 0 ? strlen(string_argv) : equal_pos - string_argv); - - int length = static_cast(strlen(string_ref)); - - if (length == argv_length && - !STRNCASECMP(string_argv, string_ref, length)) { - bFound = true; - continue; - } - } - } - - return bFound; -} - -// This function wraps the CUDA Driver API into a template function -template -inline bool getCmdLineArgumentValue(const int argc, const char **argv, - const char *string_ref, T *value) { - bool bFound = false; - - if (argc >= 1) { - for (int i = 1; i < argc; i++) { - int string_start = stringRemoveDelimiter('-', argv[i]); - const char *string_argv = &argv[i][string_start]; - int length = static_cast(strlen(string_ref)); - - if (!STRNCASECMP(string_argv, string_ref, length)) { - if (length + 1 <= static_cast(strlen(string_argv))) { - int auto_inc = (string_argv[length] == '=') ? 1 : 0; - *value = (T)atoi(&string_argv[length + auto_inc]); - } - - bFound = true; - i = argc; - } - } - } - - return bFound; -} - -inline int getCmdLineArgumentInt(const int argc, const char **argv, - const char *string_ref) { - bool bFound = false; - int value = -1; - - if (argc >= 1) { - for (int i = 1; i < argc; i++) { - int string_start = stringRemoveDelimiter('-', argv[i]); - const char *string_argv = &argv[i][string_start]; - int length = static_cast(strlen(string_ref)); - - if (!STRNCASECMP(string_argv, string_ref, length)) { - if (length + 1 <= static_cast(strlen(string_argv))) { - int auto_inc = (string_argv[length] == '=') ? 1 : 0; - value = atoi(&string_argv[length + auto_inc]); - } else { - value = 0; - } - - bFound = true; - continue; - } - } - } - - if (bFound) { - return value; - } else { - return 0; - } -} - -inline float getCmdLineArgumentFloat(const int argc, const char **argv, - const char *string_ref) { - bool bFound = false; - float value = -1; - - if (argc >= 1) { - for (int i = 1; i < argc; i++) { - int string_start = stringRemoveDelimiter('-', argv[i]); - const char *string_argv = &argv[i][string_start]; - int length = static_cast(strlen(string_ref)); - - if (!STRNCASECMP(string_argv, string_ref, length)) { - if (length + 1 <= static_cast(strlen(string_argv))) { - int auto_inc = (string_argv[length] == '=') ? 1 : 0; - value = static_cast(atof(&string_argv[length + auto_inc])); - } else { - value = 0.f; - } - - bFound = true; - continue; - } - } - } - - if (bFound) { - return value; - } else { - return 0; - } -} - -inline bool getCmdLineArgumentString(const int argc, const char **argv, - const char *string_ref, - char **string_retval) { - bool bFound = false; - - if (argc >= 1) { - for (int i = 1; i < argc; i++) { - int string_start = stringRemoveDelimiter('-', argv[i]); - char *string_argv = const_cast(&argv[i][string_start]); - int length = static_cast(strlen(string_ref)); - - if (!STRNCASECMP(string_argv, string_ref, length)) { - *string_retval = &string_argv[length + 1]; - bFound = true; - continue; - } - } - } - - if (!bFound) { - *string_retval = NULL; - } - - return bFound; -} - -////////////////////////////////////////////////////////////////////////////// -//! Find the path for a file assuming that -//! files are found in the searchPath. -//! -//! @return the path if succeeded, otherwise 0 -//! @param filename name of the file -//! @param executable_path optional absolute path of the executable -////////////////////////////////////////////////////////////////////////////// -inline char *sdkFindFilePath(const char *filename, - const char *executable_path) { - // defines a variable that is replaced with the name of the - // executable - - // Typical relative search paths to locate needed companion files (e.g. sample - // input data, or JIT source files) The origin for the relative search may be - // the .exe file, a .bat file launching an .exe, a browser .exe launching the - // .exe or .bat, etc - const char *searchPath[] = { - "./", // same dir - "./data/", // same dir - - "../../../../Samples//", // up 4 in tree - "../../../Samples//", // up 3 in tree - "../../Samples//", // up 2 in tree - - "../../../../Samples//data/", // up 4 in tree - "../../../Samples//data/", // up 3 in tree - "../../Samples//data/", // up 2 in tree - - "../../../../Samples/0_Introduction//", // up 4 in tree - "../../../Samples/0_Introduction//", // up 3 in tree - "../../Samples/0_Introduction//", // up 2 in tree - - "../../../../Samples/1_Utilities//", // up 4 in tree - "../../../Samples/1_Utilities//", // up 3 in tree - "../../Samples/1_Utilities//", // up 2 in tree - - "../../../../Samples/2_Concepts_and_Techniques//", // up 4 in tree - "../../../Samples/2_Concepts_and_Techniques//", // up 3 in tree - "../../Samples/2_Concepts_and_Techniques//", // up 2 in tree - - "../../../../Samples/3_CUDA_Features//", // up 4 in tree - "../../../Samples/3_CUDA_Features//", // up 3 in tree - "../../Samples/3_CUDA_Features//", // up 2 in tree - - "../../../../Samples/4_CUDA_Libraries//", // up 4 in tree - "../../../Samples/4_CUDA_Libraries//", // up 3 in tree - "../../Samples/4_CUDA_Libraries//", // up 2 in tree - - "../../../../Samples/5_Domain_Specific//", // up 4 in tree - "../../../Samples/5_Domain_Specific//", // up 3 in tree - "../../Samples/5_Domain_Specific//", // up 2 in tree - - "../../../../Samples/6_Performance//", // up 4 in tree - "../../../Samples/6_Performance//", // up 3 in tree - "../../Samples/6_Performance//", // up 2 in tree - - "../../../../Samples/0_Introduction//data/", // up 4 in tree - "../../../Samples/0_Introduction//data/", // up 3 in tree - "../../Samples/0_Introduction//data/", // up 2 in tree - - "../../../../Samples/1_Utilities//data/", // up 4 in tree - "../../../Samples/1_Utilities//data/", // up 3 in tree - "../../Samples/1_Utilities//data/", // up 2 in tree - - "../../../../Samples/2_Concepts_and_Techniques//data/", // up 4 in tree - "../../../Samples/2_Concepts_and_Techniques//data/", // up 3 in tree - "../../Samples/2_Concepts_and_Techniques//data/", // up 2 in tree - - "../../../../Samples/3_CUDA_Features//data/", // up 4 in tree - "../../../Samples/3_CUDA_Features//data/", // up 3 in tree - "../../Samples/3_CUDA_Features//data/", // up 2 in tree - - "../../../../Samples/4_CUDA_Libraries//data/", // up 4 in tree - "../../../Samples/4_CUDA_Libraries//data/", // up 3 in tree - "../../Samples/4_CUDA_Libraries//data/", // up 2 in tree - - "../../../../Samples/5_Domain_Specific//data/", // up 4 in tree - "../../../Samples/5_Domain_Specific//data/", // up 3 in tree - "../../Samples/5_Domain_Specific//data/", // up 2 in tree - - "../../../../Samples/6_Performance//data/", // up 4 in tree - "../../../Samples/6_Performance//data/", // up 3 in tree - "../../Samples/6_Performance//data/", // up 2 in tree - - "../../../../Common/data/", // up 4 in tree - "../../../Common/data/", // up 3 in tree - "../../Common/data/" // up 2 in tree - }; - - // Extract the executable name - std::string executable_name; - - if (executable_path != 0) { - executable_name = std::string(executable_path); - -#if defined(WIN32) || defined(_WIN32) || defined(WIN64) || defined(_WIN64) - // Windows path delimiter - size_t delimiter_pos = executable_name.find_last_of('\\'); - executable_name.erase(0, delimiter_pos + 1); - - if (executable_name.rfind(".exe") != std::string::npos) { - // we strip .exe, only if the .exe is found - executable_name.resize(executable_name.size() - 4); - } - -#else - // Linux & OSX path delimiter - size_t delimiter_pos = executable_name.find_last_of('/'); - executable_name.erase(0, delimiter_pos + 1); -#endif - } - - // Loop over all search paths and return the first hit - for (unsigned int i = 0; i < sizeof(searchPath) / sizeof(char *); ++i) { - std::string path(searchPath[i]); - size_t executable_name_pos = path.find(""); - - // If there is executable_name variable in the searchPath - // replace it with the value - if (executable_name_pos != std::string::npos) { - if (executable_path != 0) { - path.replace(executable_name_pos, strlen(""), - executable_name); - } else { - // Skip this path entry if no executable argument is given - continue; - } - } - -#ifdef _DEBUG - printf("sdkFindFilePath <%s> in %s\n", filename, path.c_str()); -#endif - - // Test if the file exists - path.append(filename); - FILE *fp; - FOPEN(fp, path.c_str(), "rb"); - - if (fp != NULL) { - fclose(fp); - // File found - // returning an allocated array here for backwards compatibility reasons - char *file_path = reinterpret_cast(malloc(path.length() + 1)); - STRCPY(file_path, path.length() + 1, path.c_str()); - return file_path; - } - - if (fp) { - fclose(fp); - } - } - - // File not found - printf("\nerror: sdkFindFilePath: file <%s> not found!\n", filename); - return 0; -} - -#endif // COMMON_HELPER_STRING_H_ \ No newline at end of file diff --git a/source/source_hsolver/kernels/dngvd_op.cpp b/source/source_hsolver/kernels/dngvd_op.cpp deleted file mode 100644 index 66cb3c1233..0000000000 --- a/source/source_hsolver/kernels/dngvd_op.cpp +++ /dev/null @@ -1,341 +0,0 @@ -#include "source_hsolver/kernels/dngvd_op.h" - -#include -#include -#include - -namespace hsolver -{ - -template -struct dngvd_op -{ - using Real = typename GetTypeReal::type; - void operator()(const base_device::DEVICE_CPU* d, - const int nstart, - const int ldh, - const T* hcc, - const T* scc, - Real* eigenvalue, - T* vcc) - { - for (int i = 0; i < nstart * ldh; i++) - { - vcc[i] = hcc[i]; - } - int info = 0; - int lwork = 2 * nstart + nstart * nstart; - T* work = new T[lwork]; - Parallel_Reduce::ZEROS(work, lwork); - - int lrwork = 1 + 5 * nstart + 2 * nstart * nstart; - Real* rwork = new Real[lrwork]; - Parallel_Reduce::ZEROS(rwork, lrwork); - - int liwork = 3 + 5 * nstart; - int* iwork = new int[liwork]; - Parallel_Reduce::ZEROS(iwork, liwork); - - //=========================== - // calculate all eigenvalues - //=========================== - LapackWrapper::xhegvd(1, - 'V', - 'U', - nstart, - vcc, - ldh, - scc, - ldh, - eigenvalue, - work, - lwork, - rwork, - lrwork, - iwork, - liwork, - info); - - if (info != 0) - { - std::cout << "Error: xhegvd failed, linear dependent basis functions\n" - << ", wrong initialization of wavefunction, or wavefunction information loss\n" - << ", output overlap matrix scc.txt to check\n" - << std::endl; - // print scc to file scc.txt - std::ofstream ofs("scc.txt"); - for (int i = 0; i < nstart; i++) - { - for (int j = 0; j < nstart; j++) - { - ofs << scc[i * ldh + j] << " "; - } - ofs << std::endl; - } - ofs.close(); - } - assert(0 == info); - - delete[] work; - delete[] rwork; - delete[] iwork; - } -}; - -template -struct dngv_op -{ - using Real = typename GetTypeReal::type; - void operator()(const base_device::DEVICE_CPU* d, - const int nbase, - const int ldh, - const T* hcc, - T* scc, - Real* eigenvalue, - T* vcc) - { - for (int i = 0; i < nbase * ldh; i++) - { - vcc[i] = hcc[i]; - } - - int info = 0; - - int lwork = 2 * nbase - 1; - T* work = new T[lwork]; - Parallel_Reduce::ZEROS(work, lwork); - - int lrwork = 3 * nbase - 2; - Real* rwork = new Real[lrwork]; - Parallel_Reduce::ZEROS(rwork, lrwork); - - //=========================== - // calculate all eigenvalues - //=========================== - LapackWrapper::xhegv(1, 'V', 'U', nbase, vcc, ldh, scc, ldh, eigenvalue, work, lwork, rwork, info); - - if (info != 0) - { - std::cout << "Error: xhegv failed, linear dependent basis functions\n" - << ", wrong initialization of wavefunction, or wavefunction information loss\n" - << ", output overlap matrix scc.txt to check\n" - << std::endl; - // print scc to file scc.txt - std::ofstream ofs("scc.txt"); - for (int i = 0; i < nbase; i++) - { - for (int j = 0; j < nbase; j++) - { - ofs << scc[i * ldh + j] << " "; - } - ofs << std::endl; - } - ofs.close(); - } - assert(0 == info); - - delete[] work; - delete[] rwork; - } -}; - -template -struct dnevx_op -{ - using Real = typename GetTypeReal::type; - void operator()(const base_device::DEVICE_CPU* /*ctx*/, - const int nstart, - const int ldh, - const T* hcc, // hcc - const int nbands, // nbands - Real* eigenvalue, // eigenvalue - T* vcc) // vcc - { - T* aux = new T[nstart * ldh]; - for (int ii = 0; ii < nstart * ldh; ii++) - { - aux[ii] = hcc[ii]; - } - - int info = 0; - int lwork = -1; - T* work = new T[1]; - Real* rwork = new Real[7 * nstart]; - int* iwork = new int[5 * nstart]; - int* ifail = new int[nstart]; - - // When lwork = -1, the demension of work will be assumed - // Assume the denmension of work by output work[0] - LapackWrapper::xheevx( - 1, // ITYPE = 1: A*x = (lambda)*B*x - 'V', // JOBZ = 'V': Compute eigenvalues and eigenvectors. - 'I', // RANGE = 'I': the IL-th through IU-th eigenvalues will be found. - 'L', // UPLO = 'L': Lower triangles of A and B are stored. - nstart, // N = base - aux, // A is COMPLEX*16 array dimension (LDA, N) - ldh, // LDA = base - 0.0, // Not referenced if RANGE = 'A' or 'I'. - 0.0, // Not referenced if RANGE = 'A' or 'I'. - 1, // IL: If RANGE='I', the index of the smallest eigenvalue to be returned. 1 <= IL <= IU <= N, - nbands, // IU: If RANGE='I', the index of the largest eigenvalue to be returned. 1 <= IL <= IU <= N, - 0.0, // ABSTOL - nbands, // M: The total number of eigenvalues found. 0 <= M <= N. if RANGE = 'I', M = IU-IL+1. - eigenvalue, // W store eigenvalues - vcc, // store eigenvector - ldh, // LDZ: The leading dimension of the array Z. - work, - lwork, - rwork, - iwork, - ifail, - info); - - lwork = int(get_real(work[0])); - delete[] work; - work = new T[lwork]; - - // The A and B storage space is (nstart * ldh), and the data that really participates in the zhegvx - // operation is (nstart * nstart). In this function, the data that A and B participate in the operation will - // be extracted into the new local variables aux and bux (the internal of the function). - // V is the output of the function, the storage space is also (nstart * ldh), and the data size of valid V - // obtained by the zhegvx operation is (nstart * nstart) and stored in zux (internal to the function). When - // the function is output, the data of zux will be mapped to the corresponding position of V. - LapackWrapper::xheevx( - 1, // ITYPE = 1: A*x = (lambda)*B*x - 'V', // JOBZ = 'V': Compute eigenvalues and eigenvectors. - 'I', // RANGE = 'I': the IL-th through IU-th eigenvalues will be found. - 'L', // UPLO = 'L': Lower triangles of A and B are stored. - nstart, // N = base - aux, // A is COMPLEX*16 array dimension (LDA, N) - ldh, // LDA = base - 0.0, // Not referenced if RANGE = 'A' or 'I'. - 0.0, // Not referenced if RANGE = 'A' or 'I'. - 1, // IL: If RANGE='I', the index of the smallest eigenvalue to be returned. 1 <= IL <= IU <= N, - nbands, // IU: If RANGE='I', the index of the largest eigenvalue to be returned. 1 <= IL <= IU <= N, - 0.0, // ABSTOL - nbands, // M: The total number of eigenvalues found. 0 <= M <= N. if RANGE = 'I', M = IU-IL+1. - eigenvalue, // W store eigenvalues - vcc, // store eigenvector - ldh, // LDZ: The leading dimension of the array Z. - work, - lwork, - rwork, - iwork, - ifail, - info); - - delete[] aux; - delete[] work; - delete[] rwork; - delete[] iwork; - delete[] ifail; - - assert(0 == info); - } -}; - -template -struct dngvx_op -{ - using Real = typename GetTypeReal::type; - void operator()(const base_device::DEVICE_CPU* d, - const int nbase, - const int ldh, - T* hcc, - T* scc, - const int m, - Real* eigenvalue, - T* vcc) - { - - int info = 0; - - int mm = m; - - int lwork = -1; - - T* work = new T[1]; - Real* rwork = new Real[7 * nbase]; - int* iwork = new int[5 * nbase]; - int* ifail = new int[nbase]; - - LapackWrapper::xhegvx( - 1, // ITYPE = 1: A*x = (lambda)*B*x - 'V', // JOBZ = 'V': Compute eigenvalues and eigenvectors. - 'I', // RANGE = 'I': the IL-th through IU-th eigenvalues will be found. - 'U', // UPLO = 'L': Lower triangles of A and B are stored. - nbase, // N = base - hcc, // A is COMPLEX*16 array dimension (LDA, N) - ldh, // LDA = base - scc, - ldh, - 0.0, // Not referenced if RANGE = 'A' or 'I'. - 0.0, // Not referenced if RANGE = 'A' or 'I'. - 1, // IL: If RANGE='I', the index of the smallest eigenvalue to be returned. 1 <= IL <= IU <= N, - m, // IU: If RANGE='I', the index of the largest eigenvalue to be returned. 1 <= IL <= IU <= N, - 0.0, // ABSTOL - mm, // M: The total number of eigenvalues found. 0 <= M <= N. if RANGE = 'I', M = IU-IL+1. - eigenvalue, // W store eigenvalues - vcc, // store eigenvector - ldh, // LDZ: The leading dimension of the array Z. - work, - lwork, - rwork, - iwork, - ifail, - info); - - lwork = int(get_real(work[0])); - delete[] work; - work = new T[lwork]; - - LapackWrapper::xhegvx(1, - 'V', - 'I', - 'U', - nbase, - hcc, - ldh, - scc, - ldh, - 0.0, - 0.0, - 1, - m, - 0.0, - mm, - eigenvalue, - vcc, - ldh, - work, - lwork, - rwork, - iwork, - ifail, - info); - - delete[] work; - delete[] rwork; - delete[] iwork; - delete[] ifail; - } -}; - -template struct dngvd_op, base_device::DEVICE_CPU>; -template struct dngvd_op, base_device::DEVICE_CPU>; - -template struct dnevx_op, base_device::DEVICE_CPU>; -template struct dnevx_op, base_device::DEVICE_CPU>; - -template struct dngvx_op, base_device::DEVICE_CPU>; -template struct dngvx_op, base_device::DEVICE_CPU>; - -template struct dngv_op, base_device::DEVICE_CPU>; -template struct dngv_op, base_device::DEVICE_CPU>; -#ifdef __LCAO -template struct dngvd_op; -template struct dnevx_op; -template struct dngvx_op; -template struct dngv_op; -#endif -} // namespace hsolver \ No newline at end of file diff --git a/source/source_hsolver/kernels/dngvd_op.h b/source/source_hsolver/kernels/dngvd_op.h deleted file mode 100644 index c48cd576b5..0000000000 --- a/source/source_hsolver/kernels/dngvd_op.h +++ /dev/null @@ -1,118 +0,0 @@ -// TODO: This is a temperary location for these functions. -// And will be moved to a global module(module base) later. -#ifndef MODULE_HSOLVER_DNGVD_H -#define MODULE_HSOLVER_DNGVD_H - -#include "source_base/macros.h" -#include "source_base/module_external/lapack_wrapper.h" -#include "source_base/parallel_reduce.h" -#include "source_base/module_device/types.h" - -namespace hsolver -{ - -inline double get_real(const std::complex &x) { return x.real(); } - -inline float get_real(const std::complex &x) { return x.real(); } - -inline double get_real(const double &x) { return x; } - -inline float get_real(const float &x) { return x; } - - -template -struct dngvd_op -{ - using Real = typename GetTypeReal::type; - /// @brief DNGVD computes all the eigenvalues and eigenvectors of a complex generalized - /// Hermitian-definite eigenproblem. If eigenvectors are desired, it uses a divide and conquer algorithm. - /// - /// In this op, the CPU version is implemented through the `gvd` interface, and the CUDA version - /// is implemented through the `gvd` interface. - /// API doc: - /// 1. zhegvd: - /// https://netlib.org/lapack/explore-html/df/d9a/group__complex16_h_eeigen_ga74fdf9b5a16c90d8b7a589dec5ca058a.html - /// 2. cusolverDnZhegvd: https://docs.nvidia.com/cuda/cusolver/index.html#cusolverdn-t-sygvd - /// - /// Input Parameters - /// @param d : the type of device - /// @param nstart : the number of cols of the matrix - /// @param ldh : the number of rows of the matrix - /// @param A : the hermitian matrix A in A x=lambda B x (col major) - /// @param B : the overlap matrix B in A x=lambda B x (col major) - /// Output Parameter - /// @param W : calculated eigenvalues - /// @param V : calculated eigenvectors (col major) - void operator()(const Device* d, const int nstart, const int ldh, const T* A, const T* B, Real* W, T* V); -}; - -template -struct dngv_op -{ - using Real = typename GetTypeReal::type; - /// @brief DNGVX computes first m eigenvalues and eigenvectors of a complex generalized - /// Input Parameters - /// @param d : the type of device - /// @param nbase : the number of dim of the matrix - /// @param ldh : the number of dmx of the matrix - /// @param A : the hermitian matrix A in A x=lambda B x (col major) - /// @param B : the overlap matrix B in A x=lambda B x (col major) - /// Output Parameter - /// @param W : calculated eigenvalues - /// @param V : calculated eigenvectors (col major) - void operator()(const Device* d, const int nstart, const int ldh, const T* A, T* B, Real* W, T* V); -}; - -template -struct dngvx_op -{ - using Real = typename GetTypeReal::type; - /// @brief DNGVX computes first m eigenvalues and eigenvectors of a complex generalized - /// Input Parameters - /// @param d : the type of device - /// @param nbase : the number of dim of the matrix - /// @param ldh : the number of dmx of the matrix - /// @param A : the hermitian matrix A in A x=lambda B x (col major) - /// @param B : the overlap matrix B in A x=lambda B x (col major) - /// @param m : the number of eigenpair - /// Output Parameter - /// @param W : calculated eigenvalues - /// @param V : calculated eigenvectors (col major) - void operator()(const Device* d, const int nstart, const int ldh, T* A, T* B, const int m, Real* W, T* V); -}; - -template -struct dnevx_op -{ - using Real = typename GetTypeReal::type; - /// @brief DNEVX computes the first m eigenvalues and their corresponding eigenvectors of - /// a complex generalized Hermitian-definite eigenproblem - /// - /// In this op, the CPU version is implemented through the `evx` interface, and the CUDA version - /// is implemented through the `evd` interface and acquires the first m eigenpairs. - /// API doc: - /// 1. zheevx: - /// https://netlib.org/lapack/explore-html/df/d9a/group__complex16_h_eeigen_gaabef68a9c7b10df7aef8f4fec89fddbe.html - /// 2. cusolverDnZheevd: https://docs.nvidia.com/cuda/cusolver/index.html#cusolverdn-t-syevd - /// - /// Input Parameters - /// @param d : the type of device - /// @param nstart : the number of cols of the matrix - /// @param ldh : the number of rows of the matrix - /// @param A : the hermitian matrix A in A x=lambda B x (row major) - /// Output Parameter - /// @param W : calculated eigenvalues - /// @param V : calculated eigenvectors (row major) - void operator()(const Device* d, const int nstart, const int ldh, const T* A, const int m, Real* W, T* V); -}; - -#if __CUDA || __UT_USE_CUDA || __ROCM || __UT_USE_ROCM - -void createGpuSolverHandle(); -void destroyGpuSolverHandle(); - -#endif - -} // namespace hsolver - -#endif // !MODULE_HSOLVER_DNGVD_H \ No newline at end of file diff --git a/source/source_hsolver/kernels/hegvd_op.cpp b/source/source_hsolver/kernels/hegvd_op.cpp new file mode 100644 index 0000000000..e9ecb10388 --- /dev/null +++ b/source/source_hsolver/kernels/hegvd_op.cpp @@ -0,0 +1,349 @@ +#include "source_hsolver/kernels/hegvd_op.h" +#include "source_base/module_container/base/third_party/lapack.h" + +#include +#include + +namespace lapackConnector = container::lapackConnector; // see "source_base/module_container/base/third_party/lapack.h" + +namespace hsolver +{ +// hegvd and sygvd; dn for dense? +template +struct hegvd_op +{ + using Real = typename GetTypeReal::type; + void operator()(const base_device::DEVICE_CPU* d, + const int nstart, + const int ldh, + const T* hcc, + T* scc, + Real* eigenvalue, + T* vcc) + { + for (int i = 0; i < nstart * ldh; i++) + { + vcc[i] = hcc[i]; + } + int info = 0; + int lwork = 2 * nstart + nstart * nstart; + T* work = new T[lwork]; + Parallel_Reduce::ZEROS(work, lwork); + + int lrwork = 1 + 5 * nstart + 2 * nstart * nstart; + Real* rwork = new Real[lrwork]; + Parallel_Reduce::ZEROS(rwork, lrwork); + + int liwork = 3 + 5 * nstart; + int* iwork = new int[liwork]; + Parallel_Reduce::ZEROS(iwork, liwork); + + //=========================== + // calculate all eigenvalues + //=========================== + lapackConnector::hegvd(1, + 'V', + 'U', + nstart, + vcc, + ldh, + scc, + ldh, + eigenvalue, + work, + lwork, + rwork, + lrwork, + iwork, + liwork, + info); + + if (info != 0) + { + std::cout << "Error: hegvd failed, linear dependent basis functions\n" + << ", wrong initialization of wavefunction, or wavefunction information loss\n" + << ", output overlap matrix scc.txt to check\n" + << std::endl; + // print scc to file scc.txt + std::ofstream ofs("scc.txt"); + for (int i = 0; i < nstart; i++) + { + for (int j = 0; j < nstart; j++) + { + ofs << scc[i * ldh + j] << " "; + } + ofs << std::endl; + } + ofs.close(); + } + assert(0 == info); + + delete[] work; + delete[] rwork; + delete[] iwork; + } +}; + +// template +// struct hegv_op +// { +// using Real = typename GetTypeReal::type; +// void operator()(const base_device::DEVICE_CPU* d, +// const int nbase, +// const int ldh, +// const T* hcc, +// T* scc, +// Real* eigenvalue, +// T* vcc) +// { +// for (int i = 0; i < nbase * ldh; i++) +// { +// vcc[i] = hcc[i]; +// } + +// int info = 0; + +// int lwork = 2 * nbase - 1; +// T* work = new T[lwork]; +// Parallel_Reduce::ZEROS(work, lwork); + +// int lrwork = 3 * nbase - 2; +// Real* rwork = new Real[lrwork]; +// Parallel_Reduce::ZEROS(rwork, lrwork); + +// //=========================== +// // calculate all eigenvalues +// //=========================== +// LapackWrapper::xhegv(1, 'V', 'U', nbase, vcc, ldh, scc, ldh, eigenvalue, work, lwork, rwork, info); + +// if (info != 0) +// { +// std::cout << "Error: xhegv failed, linear dependent basis functions\n" +// << ", wrong initialization of wavefunction, or wavefunction information loss\n" +// << ", output overlap matrix scc.txt to check\n" +// << std::endl; +// // print scc to file scc.txt +// std::ofstream ofs("scc.txt"); +// for (int i = 0; i < nbase; i++) +// { +// for (int j = 0; j < nbase; j++) +// { +// ofs << scc[i * ldh + j] << " "; +// } +// ofs << std::endl; +// } +// ofs.close(); +// } +// assert(0 == info); + +// delete[] work; +// delete[] rwork; +// } +// }; + +// heevx and syevx +/** + * @brief heevx computes the first m eigenvalues and their corresponding eigenvectors of + * a complex generalized Hermitian-definite eigenproblem. + * + * both heevx and syevx are implemented through the `evx` interface of LAPACK. + * wrapped in LapackWrapper::xheevx + */ +template +struct heevx_op +{ + using Real = typename GetTypeReal::type; + void operator()(const base_device::DEVICE_CPU* /*ctx*/, + const int nstart, + const int ldh, + const T* hcc, // hcc + const int nbands, // nbands + Real* eigenvalue, // eigenvalue + T* vcc) // vcc + { + T* aux = new T[nstart * ldh]; + for (int ii = 0; ii < nstart * ldh; ii++) + { + aux[ii] = hcc[ii]; + } + + int info = 0; + int lwork = -1; + T* work = new T[1]; + Real* rwork = new Real[7 * nstart]; + int* iwork = new int[5 * nstart]; + int* ifail = new int[nstart]; + + // When lwork = -1, the demension of work will be assumed + // Assume the denmension of work by output work[0] + lapackConnector::heevx( + 'V', // JOBZ = 'V': Compute eigenvalues and eigenvectors. + 'I', // RANGE = 'I': the IL-th through IU-th eigenvalues will be found. + 'L', // UPLO = 'L': Lower triangles of A and B are stored. + nstart, // N = base + aux, // A is COMPLEX*16 array dimension (LDA, N) + ldh, // LDA = base + 0.0, // Not referenced if RANGE = 'A' or 'I'. + 0.0, // Not referenced if RANGE = 'A' or 'I'. + 1, // IL: If RANGE='I', the index of the smallest eigenvalue to be returned. 1 <= IL <= IU <= N, + nbands, // IU: If RANGE='I', the index of the largest eigenvalue to be returned. 1 <= IL <= IU <= N, + 0.0, // ABSTOL + nbands, // M: The total number of eigenvalues found. 0 <= M <= N. if RANGE = 'I', M = IU-IL+1. + eigenvalue, // W store eigenvalues + vcc, // store eigenvector + ldh, // LDZ: The leading dimension of the array Z. + work, + lwork, + rwork, + iwork, + ifail, + info); + + lwork = int(get_real(work[0])); + delete[] work; + work = new T[lwork]; + + // The A and B storage space is (nstart * ldh), and the data that really participates in the zhegvx + // operation is (nstart * nstart). In this function, the data that A and B participate in the operation will + // be extracted into the new local variables aux and bux (the internal of the function). + // V is the output of the function, the storage space is also (nstart * ldh), and the data size of valid V + // obtained by the zhegvx operation is (nstart * nstart) and stored in zux (internal to the function). When + // the function is output, the data of zux will be mapped to the corresponding position of V. + lapackConnector::heevx( + 'V', // JOBZ = 'V': Compute eigenvalues and eigenvectors. + 'I', // RANGE = 'I': the IL-th through IU-th eigenvalues will be found. + 'L', // UPLO = 'L': Lower triangles of A and B are stored. + nstart, // N = base + aux, // A is COMPLEX*16 array dimension (LDA, N) + ldh, // LDA = base + 0.0, // Not referenced if RANGE = 'A' or 'I'. + 0.0, // Not referenced if RANGE = 'A' or 'I'. + 1, // IL: If RANGE='I', the index of the smallest eigenvalue to be returned. 1 <= IL <= IU <= N, + nbands, // IU: If RANGE='I', the index of the largest eigenvalue to be returned. 1 <= IL <= IU <= N, + 0.0, // ABSTOL + nbands, // M: The total number of eigenvalues found. 0 <= M <= N. if RANGE = 'I', M = IU-IL+1. + eigenvalue, // W store eigenvalues + vcc, // store eigenvector + ldh, // LDZ: The leading dimension of the array Z. + work, + lwork, + rwork, + iwork, + ifail, + info); + + delete[] aux; + delete[] work; + delete[] rwork; + delete[] iwork; + delete[] ifail; + + assert(0 == info); + } +}; + +template +struct hegvx_op +{ + using Real = typename GetTypeReal::type; + void operator()(const base_device::DEVICE_CPU* d, + const int nbase, + const int ldh, + T* hcc, + T* scc, + const int m, + Real* eigenvalue, + T* vcc) + { + + int info = 0; + + int mm = m; + + int lwork = -1; + + T* work = new T[1]; + Real* rwork = new Real[7 * nbase]; + int* iwork = new int[5 * nbase]; + int* ifail = new int[nbase]; + + lapackConnector::hegvx( + 1, // ITYPE = 1: A*x = (lambda)*B*x + 'V', // JOBZ = 'V': Compute eigenvalues and eigenvectors. + 'I', // RANGE = 'I': the IL-th through IU-th eigenvalues will be found. + 'U', // UPLO = 'L': Lower triangles of A and B are stored. + nbase, // N = base + hcc, // A is COMPLEX*16 array dimension (LDA, N) + ldh, // LDA = base + scc, + ldh, + 0.0, // Not referenced if RANGE = 'A' or 'I'. + 0.0, // Not referenced if RANGE = 'A' or 'I'. + 1, // IL: If RANGE='I', the index of the smallest eigenvalue to be returned. 1 <= IL <= IU <= N, + m, // IU: If RANGE='I', the index of the largest eigenvalue to be returned. 1 <= IL <= IU <= N, + 0.0, // ABSTOL + mm, // M: The total number of eigenvalues found. 0 <= M <= N. if RANGE = 'I', M = IU-IL+1. + eigenvalue, // W store eigenvalues + vcc, // store eigenvector + ldh, // LDZ: The leading dimension of the array Z. + work, + lwork, + rwork, + iwork, + ifail, + info); + + lwork = int(get_real(work[0])); + delete[] work; + work = new T[lwork]; + + lapackConnector::hegvx(1, + 'V', + 'I', + 'U', + nbase, + hcc, + ldh, + scc, + ldh, + 0.0, + 0.0, + 1, + m, + 0.0, + mm, + eigenvalue, + vcc, + ldh, + work, + lwork, + rwork, + iwork, + ifail, + info); + + delete[] work; + delete[] rwork; + delete[] iwork; + delete[] ifail; + } +}; + +template struct hegvd_op, base_device::DEVICE_CPU>; +template struct hegvd_op, base_device::DEVICE_CPU>; + +template struct heevx_op, base_device::DEVICE_CPU>; +template struct heevx_op, base_device::DEVICE_CPU>; + +template struct hegvx_op, base_device::DEVICE_CPU>; +template struct hegvx_op, base_device::DEVICE_CPU>; + +// template struct hegv_op, base_device::DEVICE_CPU>; +// template struct hegv_op, base_device::DEVICE_CPU>; +#ifdef __LCAO +template struct hegvd_op; +template struct heevx_op; +template struct hegvx_op; +// template struct hegv_op; +#endif +} // namespace hsolver diff --git a/source/source_hsolver/kernels/hegvd_op.h b/source/source_hsolver/kernels/hegvd_op.h new file mode 100644 index 0000000000..dfe1aaf287 --- /dev/null +++ b/source/source_hsolver/kernels/hegvd_op.h @@ -0,0 +1,140 @@ +/// This is the module for wrapper of +/// DeNse Generalized eigenValue (eXtended) +/// HErmitian / SYmmetric + +// named HEGVD, actually includes HE/SY GV/GVD/GVX + +#ifndef MODULE_HSOLVER_HEGVD_H +#define MODULE_HSOLVER_HEGVD_H + +// Note: +// names follow the same style as standard LAPACK APIs: +// ----------------------------------- +// he stands for Hermitian +// sy stands for Symmetric +// gv stands for Generalized eigenValue problem +// ev stands for EigenValues +// dn stands for dense, maybe, who knows? +// x stands for compute a subset of the eigenvalues and, optionally, +// their corresponding eigenvectors +// d for all, x for selected +// gv: all, gvd: all/devide-and-conquer, x: selected eigenvalues +// ----------------------------------- +// search for docs using the op function name as keywords. + +// TODO: This is a temperary location for these functions. +// And will be moved to a global module(module base) later. + +#include "source_base/macros.h" +#include "source_base/parallel_reduce.h" +#include "source_base/module_device/types.h" + +namespace hsolver +{ + +inline double get_real(const std::complex &x) { return x.real(); } + +inline float get_real(const std::complex &x) { return x.real(); } + +inline double get_real(const double &x) { return x; } + +inline float get_real(const float &x) { return x; } + + +template +struct hegvd_op +{ + using Real = typename GetTypeReal::type; + /// @brief HEGVD computes all the eigenvalues and eigenvectors of a complex generalized + /// Hermitian-definite eigenproblem. If eigenvectors are desired, it uses a divide and conquer algorithm. + /// + /// In this op, the CPU version is implemented through the `gvd` interface, and the CUDA version + /// is implemented through the `gvd` interface. + /// API doc: + /// 1. zhegvd: + /// https://netlib.org/lapack/explore-html/df/d9a/group__complex16_h_eeigen_ga74fdf9b5a16c90d8b7a589dec5ca058a.html + /// 2. cusolverDnZhegvd: https://docs.nvidia.com/cuda/cusolver/index.html#cusolverdn-t-sygvd + /// + /// Input Parameters + /// @param d : the type of device + /// @param nstart : the number of cols of the matrix + /// @param ldh : the number of rows of the matrix + /// @param A : the hermitian matrix A in A x=lambda B x (col major) + /// @param B : the overlap matrix B in A x=lambda B x (col major) + /// Output Parameter + /// @param W : calculated eigenvalues + /// @param V : calculated eigenvectors (col major) + void operator()(const Device* d, const int nstart, const int ldh, const T* A, T* B, Real* W, T* V); +}; + +// template +// struct hegv_op +// { +// using Real = typename GetTypeReal::type; +// /// @brief HEGV computes first m eigenvalues and eigenvectors of a complex generalized +// /// Input Parameters +// /// @param d : the type of device +// /// @param nbase : the number of dim of the matrix +// /// @param ldh : the number of dmx of the matrix +// /// @param A : the hermitian matrix A in A x=lambda B x (col major) +// /// @param B : the overlap matrix B in A x=lambda B x (col major) +// /// Output Parameter +// /// @param W : calculated eigenvalues +// /// @param V : calculated eigenvectors (col major) +// void operator()(const Device* d, const int nstart, const int ldh, const T* A, T* B, Real* W, T* V); +// }; + +template +struct hegvx_op +{ + using Real = typename GetTypeReal::type; + /// @brief HEGVX computes first m eigenvalues and eigenvectors of a complex generalized + /// Input Parameters + /// @param d : the type of device + /// @param nbase : the number of dim of the matrix + /// @param ldh : the number of dmx of the matrix + /// @param A : the hermitian matrix A in A x=lambda B x (col major) + /// @param B : the overlap matrix B in A x=lambda B x (col major) + /// @param m : the number of eigenpair + /// Output Parameter + /// @param W : calculated eigenvalues + /// @param V : calculated eigenvectors (col major) + void operator()(const Device* d, const int nstart, const int ldh, T* A, T* B, const int m, Real* W, T* V); +}; + +template +struct heevx_op +{ + using Real = typename GetTypeReal::type; + /// @brief heevx computes the first m eigenvalues and their corresponding eigenvectors of + /// a complex generalized Hermitian-definite eigenproblem + /// + /// In this op, the CPU version is implemented through the `evx` interface, and the CUDA version + /// is implemented through the `evd` interface and acquires the first m eigenpairs. + /// API doc: + /// 1. zheevx: + /// https://netlib.org/lapack/explore-html/df/d9a/group__complex16_h_eeigen_gaabef68a9c7b10df7aef8f4fec89fddbe.html + /// 2. cusolverDnZheevd: https://docs.nvidia.com/cuda/cusolver/index.html#cusolverdn-t-syevd + /// + /// Input Parameters + /// @param d : the type of device + /// @param ndim : the size of square matrix + /// @param lda : leading dimension of the matrix + /// @param A : the hermitian matrix A in A x=lambda x + /// @param neig : the number of eigenpairs to be calculated + /// Output Parameter + /// @param w: calculated eigenvalues + /// @param z: calculated eigenvectors + void operator()(const Device *d, const int ndim, const int lda, const T *A, const int neig, Real *w, T *z); +}; + +#if __CUDA || __UT_USE_CUDA || __ROCM || __UT_USE_ROCM + +void createGpuSolverHandle(); +void destroyGpuSolverHandle(); + +#endif + +} // namespace hsolver + +#endif // !MODULE_HSOLVER_HEGVD_H \ No newline at end of file diff --git a/source/source_hsolver/kernels/rocm/bpcg_kernel_op.hip.cu b/source/source_hsolver/kernels/rocm/bpcg_kernel_op.hip.cu index 095cd4deff..b7bbeb7494 100644 --- a/source/source_hsolver/kernels/rocm/bpcg_kernel_op.hip.cu +++ b/source/source_hsolver/kernels/rocm/bpcg_kernel_op.hip.cu @@ -182,7 +182,7 @@ __global__ void apply_eigenvalues_kernel( { int m = blockIdx.x; int idx = threadIdx.x + blockIdx.y * blockDim.x; - + if (m < notconv && idx < nbase) { result[m * nbase_x + idx] = eigenvalues[m] * vectors[m * nbase_x + idx]; } @@ -199,7 +199,7 @@ __global__ void precondition_kernel( { int m = blockIdx.x; int i = threadIdx.x + blockIdx.y * blockDim.x; - + if (m < notconv && i < dim) { Real x = abs(precondition[i] - eigenvalues[m]); Real pre = 0.5 * (1.0 + x + sqrt(1 + (x - 1.0) * (x - 1.0))); @@ -218,17 +218,17 @@ __global__ void normalize_kernel( int m = blockIdx.x; int tid = threadIdx.x; __shared__ Real sum[THREAD_PER_BLOCK]; - + sum[tid] = 0.0; - + // Calculate the sum for normalization for (int i = tid; i < dim; i += THREAD_PER_BLOCK) { auto val = psi_iter[(nbase + m) * dim + i]; sum[tid] += (val * thrust::conj(val)).real(); } - + __syncthreads(); - + // Parallel reduction in shared memory for (int s = THREAD_PER_BLOCK/2; s > 0; s >>= 1) { if (tid < s) { @@ -236,20 +236,39 @@ __global__ void normalize_kernel( } __syncthreads(); } - + Real norm = sqrt(sum[0]); - + // Normalize the vector for (int i = tid; i < dim; i += THREAD_PER_BLOCK) { psi_iter[(nbase + m) * dim + i] /= norm; } - + // Store the norm if needed if (tid == 0 && psi_norm != nullptr) { psi_norm[m] = norm; } } +template +__global__ void refresh_hcc_scc_vcc_kernel( + const int n, + T *hcc, + T *scc, + T *vcc, + const int ldh, + const Real *eigenvalue, + const T one) +{ + int i = blockIdx.x * blockDim.x + threadIdx.x; + if (i < n) + { + hcc[i * ldh + i] = eigenvalue[i]; + scc[i * ldh + i] = one; + vcc[i * ldh + i] = one; + } +} + template void line_minimize_with_block_op::operator()(T* grad_out, T* hgrad_out, @@ -306,15 +325,15 @@ void apply_eigenvalues_op::operator()(const int& nba { const int threads_per_block = 256; const int blocks_per_grid_y = (nbase + threads_per_block - 1) / threads_per_block; - + dim3 grid(notconv, blocks_per_grid_y); - + auto vec_complex = reinterpret_cast*>(vectors); auto res_complex = reinterpret_cast*>(result); - + apply_eigenvalues_kernel<<>>( vec_complex, res_complex, eigenvalues, nbase, nbase_x, notconv); - + hipCheckOnDebug(); } @@ -328,14 +347,14 @@ void precondition_op::operator()(const int& dim, { const int threads_per_block = 256; const int blocks_per_grid_y = (dim + threads_per_block - 1) / threads_per_block; - + dim3 grid(notconv, blocks_per_grid_y); - + auto psi_complex = reinterpret_cast*>(psi_iter); - + precondition_kernel<<>>( psi_complex, precondition, eigenvalues, dim, nbase, notconv); - + hipCheckOnDebug(); } @@ -347,10 +366,62 @@ void normalize_op::operator()(const int& dim, Real* psi_norm) { auto psi_complex = reinterpret_cast*>(psi_iter); - + normalize_kernel<<>>( psi_complex, psi_norm, dim, nbase, notconv); - + + hipCheckOnDebug(); +} + +template <> +void refresh_hcc_scc_vcc_op::operator()(const int &n, + double *hcc, + double *scc, + double *vcc, + const int &ldh, + const double *eigenvalue, + const double& one) +{ + int thread = 512; + int block = (n + thread - 1) / thread; + refresh_hcc_scc_vcc_kernel <<>> (n, hcc, scc, vcc, ldh, eigenvalue, one); + + hipCheckOnDebug(); +} + +template <> +void refresh_hcc_scc_vcc_op, base_device::DEVICE_GPU>::operator()(const int &n, + std::complex *hcc, + std::complex *scc, + std::complex *vcc, + const int &ldh, + const float *eigenvalue, + const std::complex& one) +{ + int thread = 512; + int block = (n + thread - 1) / thread; + refresh_hcc_scc_vcc_kernel, float> <<>> (n, reinterpret_cast*>(hcc), + reinterpret_cast*>(scc), reinterpret_cast*>(vcc), ldh, eigenvalue, + thrust::complex(one)); + + hipCheckOnDebug(); +} + +template <> +void refresh_hcc_scc_vcc_op, base_device::DEVICE_GPU>::operator()(const int &n, + std::complex *hcc, + std::complex *scc, + std::complex *vcc, + const int &ldh, + const double *eigenvalue, + const std::complex& one) +{ + int thread = 512; + int block = (n + thread - 1) / thread; + refresh_hcc_scc_vcc_kernel, double> <<>> (n, reinterpret_cast*>(hcc), + reinterpret_cast*>(scc), reinterpret_cast*>(vcc), ldh, eigenvalue, + thrust::complex(one)); + hipCheckOnDebug(); } @@ -367,4 +438,7 @@ template struct precondition_op; template struct normalize_op, base_device::DEVICE_GPU>; template struct normalize_op, base_device::DEVICE_GPU>; template struct normalize_op; +template struct refresh_hcc_scc_vcc_op, base_device::DEVICE_GPU>; +template struct refresh_hcc_scc_vcc_op, base_device::DEVICE_GPU>; +template struct refresh_hcc_scc_vcc_op; } \ No newline at end of file diff --git a/source/source_hsolver/kernels/rocm/dngvd_op.hip.cu b/source/source_hsolver/kernels/rocm/dngvd_op.hip.cu deleted file mode 100644 index a359ccda87..0000000000 --- a/source/source_hsolver/kernels/rocm/dngvd_op.hip.cu +++ /dev/null @@ -1,368 +0,0 @@ -#include "source_hsolver/kernels/dngvd_op.h" - -#include -#include - -namespace hsolver { - -// NOTE: mimicked from ../cuda/dngvd_op.cu for three dngvd_op - -static hipsolverHandle_t hipsolver_H = nullptr; -// Test on DCU platform. When nstart is greater than 234, code on DCU performs better. -const int N_DCU = 234; - -void createGpuSolverHandle() { - if (hipsolver_H == nullptr) - { - hipsolverErrcheck(hipsolverCreate(&hipsolver_H)); - } -} - -void destroyGpuSolverHandle() { - if (hipsolver_H != nullptr) - { - hipsolverErrcheck(hipsolverDestroy(hipsolver_H)); - hipsolver_H = nullptr; - } -} - -#ifdef __LCAO -template <> -void dngvd_op::operator()(const base_device::DEVICE_GPU* ctx, - const int nstart, - const int ldh, - const double* _hcc, - const double* _scc, - double* _eigenvalue, - double* _vcc) -{ - // copied from ../cuda/dngvd_op.cu, "dngvd_op" - assert(nstart == ldh); - - if (nstart > N_DCU){ - hipErrcheck(hipMemcpy(_vcc, _hcc, sizeof(double) * ldh * nstart, hipMemcpyDeviceToDevice)); - // now vcc contains hcc - - // prepare some values for hipsolverDnZhegvd_bufferSize - int * devInfo = nullptr; - int lwork = 0, info_gpu = 0; - double * work = nullptr; - hipErrcheck(hipMalloc((void**)&devInfo, sizeof(int))); - hipsolverFillMode_t uplo = HIPSOLVER_FILL_MODE_UPPER; - - // calculate the sizes needed for pre-allocated buffer. - hipsolverErrcheck(hipsolverDnDsygvd_bufferSize( - hipsolver_H, HIPSOLVER_EIG_TYPE_1, HIPSOLVER_EIG_MODE_VECTOR, uplo, - nstart, - _vcc, ldh, - _scc, ldh, - _eigenvalue, - &lwork)); - - // allocate memery - hipErrcheck(hipMalloc((void**)&work, sizeof(double) * lwork)); - - // compute eigenvalues and eigenvectors. - hipsolverErrcheck(hipsolverDnDsygvd( - hipsolver_H, HIPSOLVER_EIG_TYPE_1, HIPSOLVER_EIG_MODE_VECTOR, uplo, - nstart, - _vcc, ldh, - const_cast(_scc), ldh, - _eigenvalue, - work, lwork, devInfo)); - - hipErrcheck(hipMemcpy(&info_gpu, devInfo, sizeof(int), hipMemcpyDeviceToHost)); - - // free the buffer - hipErrcheck(hipFree(work)); - hipErrcheck(hipFree(devInfo)); - } - // if(fail_info != nullptr) *fail_info = info_gpu; - else{ - std::vector hcc(nstart * nstart, 0.0); - std::vector scc(nstart * nstart, 0.0); - std::vector vcc(nstart * nstart, 0.0); - std::vector eigenvalue(nstart, 0); - hipErrcheck(hipMemcpy(hcc.data(), _hcc, sizeof(double) * hcc.size(), hipMemcpyDeviceToHost)); - hipErrcheck(hipMemcpy(scc.data(), _scc, sizeof(double) * scc.size(), hipMemcpyDeviceToHost)); - base_device::DEVICE_CPU* cpu_ctx = {}; - dngvd_op()(cpu_ctx, - nstart, - ldh, - hcc.data(), - scc.data(), - eigenvalue.data(), - vcc.data()); - hipErrcheck(hipMemcpy(_vcc, vcc.data(), sizeof(double) * vcc.size(), hipMemcpyHostToDevice)); - hipErrcheck(hipMemcpy(_eigenvalue, eigenvalue.data(), sizeof(double) * eigenvalue.size(), hipMemcpyHostToDevice)); - } - - -} -#endif // __LCAO - -template <> -void dngvd_op, base_device::DEVICE_GPU>::operator()(const base_device::DEVICE_GPU* ctx, - const int nstart, - const int ldh, - const std::complex* _hcc, - const std::complex* _scc, - float* _eigenvalue, - std::complex* _vcc) -{ - // copied from ../cuda/dngvd_op.cu, "dngvd_op" - assert(nstart == ldh); - - if (nstart > N_DCU){ - hipErrcheck(hipMemcpy(_vcc, _hcc, sizeof(std::complex) * ldh * nstart, hipMemcpyDeviceToDevice)); - // now vcc contains hcc - - // prepare some values for hipsolverDnZhegvd_bufferSize - int * devInfo = nullptr; - int lwork = 0, info_gpu = 0; - float2 * work = nullptr; - hipErrcheck(hipMalloc((void**)&devInfo, sizeof(int))); - hipsolverFillMode_t uplo = HIPSOLVER_FILL_MODE_UPPER; - - // calculate the sizes needed for pre-allocated buffer. - hipsolverErrcheck(hipsolverDnChegvd_bufferSize( - hipsolver_H, HIPSOLVER_EIG_TYPE_1, HIPSOLVER_EIG_MODE_VECTOR, uplo, - nstart, - reinterpret_cast(_vcc), ldh, - reinterpret_cast(_scc), ldh, - _eigenvalue, - &lwork)); - - // allocate memery - hipErrcheck(hipMalloc((void**)&work, sizeof(float2) * lwork)); - - // compute eigenvalues and eigenvectors. - hipsolverErrcheck(hipsolverDnChegvd( - hipsolver_H, HIPSOLVER_EIG_TYPE_1, HIPSOLVER_EIG_MODE_VECTOR, uplo, - nstart, - reinterpret_cast(_vcc), ldh, - const_cast(reinterpret_cast(_scc)), ldh, - _eigenvalue, - work, lwork, devInfo)); - - hipErrcheck(hipMemcpy(&info_gpu, devInfo, sizeof(int), hipMemcpyDeviceToHost)); - // free the buffer - hipErrcheck(hipFree(work)); - hipErrcheck(hipFree(devInfo)); - } - // if(fail_info != nullptr) *fail_info = info_gpu; - else{ - std::vector> hcc(nstart * nstart, {0, 0}); - std::vector> scc(nstart * nstart, {0, 0}); - std::vector> vcc(nstart * nstart, {0, 0}); - std::vector eigenvalue(nstart, 0); - hipErrcheck(hipMemcpy(hcc.data(), _hcc, sizeof(std::complex) * hcc.size(), hipMemcpyDeviceToHost)); - hipErrcheck(hipMemcpy(scc.data(), _scc, sizeof(std::complex) * scc.size(), hipMemcpyDeviceToHost)); - base_device::DEVICE_CPU* cpu_ctx = {}; - dngvd_op, base_device::DEVICE_CPU>()(cpu_ctx, - nstart, - ldh, - hcc.data(), - scc.data(), - eigenvalue.data(), - vcc.data()); - hipErrcheck(hipMemcpy(_vcc, vcc.data(), sizeof(std::complex) * vcc.size(), hipMemcpyHostToDevice)); - hipErrcheck(hipMemcpy(_eigenvalue, eigenvalue.data(), sizeof(float) * eigenvalue.size(), hipMemcpyHostToDevice)); - } - - -} - -template <> -void dngvd_op, base_device::DEVICE_GPU>::operator()(const base_device::DEVICE_GPU* ctx, - const int nstart, - const int ldh, - const std::complex* _hcc, - const std::complex* _scc, - double* _eigenvalue, - std::complex* _vcc - ) -{ - // copied from ../cuda/dngvd_op.cu, "dngvd_op" - assert(nstart == ldh); - - // save a copy of scc in case the diagonalization fails - if (nstart > N_DCU){ - std::vector> scc(nstart * nstart, {0, 0}); - hipErrcheck(hipMemcpy(scc.data(), _scc, sizeof(std::complex) * scc.size(), hipMemcpyDeviceToHost)); - - hipErrcheck(hipMemcpy(_vcc, _hcc, sizeof(std::complex) * ldh * nstart, hipMemcpyDeviceToDevice)); - - // now vcc contains hcc - - // prepare some values for hipsolverDnZhegvd_bufferSize - int * devInfo = nullptr; - int lwork = 0, info_gpu = 0; - double2 * work = nullptr; - hipErrcheck(hipMalloc((void**)&devInfo, sizeof(int))); - hipsolverFillMode_t uplo = HIPSOLVER_FILL_MODE_UPPER; - - // calculate the sizes needed for pre-allocated buffer. - hipsolverErrcheck(hipsolverDnZhegvd_bufferSize( - hipsolver_H, HIPSOLVER_EIG_TYPE_1, HIPSOLVER_EIG_MODE_VECTOR, uplo, - nstart, - reinterpret_cast(_vcc), ldh, - reinterpret_cast(_scc), ldh, - _eigenvalue, - &lwork)); - - // allocate memery - hipErrcheck(hipMalloc((void**)&work, sizeof(double2) * lwork)); - - // compute eigenvalues and eigenvectors. - hipsolverErrcheck(hipsolverDnZhegvd( - hipsolver_H, HIPSOLVER_EIG_TYPE_1, HIPSOLVER_EIG_MODE_VECTOR, uplo, - nstart, - reinterpret_cast(_vcc), ldh, - const_cast(reinterpret_cast(_scc)), ldh, - _eigenvalue, - work, lwork, devInfo)); - - hipErrcheck(hipMemcpy(&info_gpu, devInfo, sizeof(int), hipMemcpyDeviceToHost)); - // free the buffer - hipErrcheck(hipFree(work)); - hipErrcheck(hipFree(devInfo)); - } - // if(fail_info != nullptr) *fail_info = info_gpu; - else{ - std::vector> hcc(nstart * nstart, {0, 0}); - std::vector> scc(nstart * nstart, {0, 0}); - std::vector> vcc(nstart * nstart, {0, 0}); - std::vector eigenvalue(nstart, 0); - hipErrcheck(hipMemcpy(hcc.data(), _hcc, sizeof(std::complex) * hcc.size(), hipMemcpyDeviceToHost)); - hipErrcheck(hipMemcpy(scc.data(), _scc, sizeof(std::complex) * scc.size(), hipMemcpyDeviceToHost)); - base_device::DEVICE_CPU* cpu_ctx = {}; - dngvd_op, base_device::DEVICE_CPU>()(cpu_ctx, - nstart, - ldh, - hcc.data(), - scc.data(), - eigenvalue.data(), - vcc.data()); - hipErrcheck(hipMemcpy(_vcc, vcc.data(), sizeof(std::complex) * vcc.size(), hipMemcpyHostToDevice)); - hipErrcheck(hipMemcpy(_eigenvalue, eigenvalue.data(), sizeof(double) * eigenvalue.size(), hipMemcpyHostToDevice)); - } - - - - - - - -} - -#ifdef __LCAO -template <> -void dnevx_op::operator()(const base_device::DEVICE_GPU* ctx, - const int nstart, - const int ldh, - const double* _hcc, - const int m, - double* _eigenvalue, - double* _vcc) -{ - std::vector hcc(ldh * ldh, 0.0); - std::vector vcc(ldh * ldh, 0.0); - std::vector eigenvalue(ldh, 0); - hipErrcheck(hipMemcpy(hcc.data(), _hcc, sizeof(double) * hcc.size(), hipMemcpyDeviceToHost)); - base_device::DEVICE_CPU* cpu_ctx = {}; - dnevx_op()(cpu_ctx, nstart, ldh, hcc.data(), m, eigenvalue.data(), vcc.data()); - hipErrcheck(hipMemcpy(_vcc, vcc.data(), sizeof(double) * vcc.size(), hipMemcpyHostToDevice)); - hipErrcheck(hipMemcpy(_eigenvalue, eigenvalue.data(), sizeof(double) * eigenvalue.size(), hipMemcpyHostToDevice)); -} -#endif // __LCAO - -template <> -void dnevx_op, base_device::DEVICE_GPU>::operator()(const base_device::DEVICE_GPU* ctx, - const int nstart, - const int ldh, - const std::complex* _hcc, - const int m, - float* _eigenvalue, - std::complex* _vcc) -{ - std::vector> hcc(ldh * ldh, {0, 0}); - std::vector> vcc(ldh * ldh, {0, 0}); - std::vector eigenvalue(ldh, 0); - hipErrcheck(hipMemcpy(hcc.data(), _hcc, sizeof(std::complex) * hcc.size(), hipMemcpyDeviceToHost)); - base_device::DEVICE_CPU* cpu_ctx = {}; - dnevx_op, base_device::DEVICE_CPU>()(cpu_ctx, - nstart, - ldh, - hcc.data(), - m, - eigenvalue.data(), - vcc.data()); - hipErrcheck(hipMemcpy(_vcc, vcc.data(), sizeof(std::complex) * vcc.size(), hipMemcpyHostToDevice)); - hipErrcheck(hipMemcpy(_eigenvalue, eigenvalue.data(), sizeof(float) * eigenvalue.size(), hipMemcpyHostToDevice)); -} - -template <> -void dnevx_op, base_device::DEVICE_GPU>::operator()(const base_device::DEVICE_GPU* ctx, - const int nstart, - const int ldh, - const std::complex* _hcc, - const int m, - double* _eigenvalue, - std::complex* _vcc) -{ - std::vector> hcc(ldh * ldh, {0, 0}); - std::vector> vcc(ldh * ldh, {0, 0}); - std::vector eigenvalue(ldh, 0); - hipErrcheck(hipMemcpy(hcc.data(), _hcc, sizeof(std::complex) * hcc.size(), hipMemcpyDeviceToHost)); - base_device::DEVICE_CPU* cpu_ctx = {}; - dnevx_op, base_device::DEVICE_CPU>()(cpu_ctx, - nstart, - ldh, - hcc.data(), - m, - eigenvalue.data(), - vcc.data()); - hipErrcheck(hipMemcpy(_vcc, vcc.data(), sizeof(std::complex) * vcc.size(), hipMemcpyHostToDevice)); - hipErrcheck(hipMemcpy(_eigenvalue, eigenvalue.data(), sizeof(double) * eigenvalue.size(), hipMemcpyHostToDevice)); -} - -template <> -void dngvx_op, base_device::DEVICE_GPU>::operator()(const base_device::DEVICE_GPU* d, - const int nbase, - const int ldh, - std::complex* hcc, - std::complex* scc, - const int m, - float* eigenvalue, - std::complex* vcc) -{ -} - -template <> -void dngvx_op, base_device::DEVICE_GPU>::operator()(const base_device::DEVICE_GPU* d, - const int nbase, - const int ldh, - std::complex* hcc, - std::complex* scc, - const int m, - double* eigenvalue, - std::complex* vcc) -{ -} - -#ifdef __LCAO -template <> -void dngvx_op::operator()(const base_device::DEVICE_GPU* d, - const int nbase, - const int ldh, - double* hcc, - double* scc, - const int m, - double* eigenvalue, - double* vcc) -{ -} -#endif // __LCAO - -} // namespace hsolver \ No newline at end of file diff --git a/source/source_hsolver/kernels/rocm/hegvd_op.hip.cu b/source/source_hsolver/kernels/rocm/hegvd_op.hip.cu new file mode 100644 index 0000000000..93b3457af6 --- /dev/null +++ b/source/source_hsolver/kernels/rocm/hegvd_op.hip.cu @@ -0,0 +1,368 @@ +#include "source_hsolver/kernels/hegvd_op.h" + +#include +#include + +namespace hsolver { + +// NOTE: mimicked from ../cuda/hegvd_op.cu for three hegvd_op + +static hipsolverHandle_t hipsolver_H = nullptr; +// Test on DCU platform. When nstart is greater than 234, code on DCU performs better. +const int N_DCU = 234; + +void createGpuSolverHandle() { + if (hipsolver_H == nullptr) + { + hipsolverErrcheck(hipsolverCreate(&hipsolver_H)); + } +} + +void destroyGpuSolverHandle() { + if (hipsolver_H != nullptr) + { + hipsolverErrcheck(hipsolverDestroy(hipsolver_H)); + hipsolver_H = nullptr; + } +} + +#ifdef __LCAO +template <> +void hegvd_op::operator()(const base_device::DEVICE_GPU* ctx, + const int nstart, + const int ldh, + const double* _hcc, + double* _scc, + double* _eigenvalue, + double* _vcc) +{ + // copied from ../cuda/hegvd_op.cu, "hegvd_op" + assert(nstart == ldh); + + if (nstart > N_DCU){ + hipErrcheck(hipMemcpy(_vcc, _hcc, sizeof(double) * ldh * nstart, hipMemcpyDeviceToDevice)); + // now vcc contains hcc + + // prepare some values for hipsolverDnZhegvd_bufferSize + int * devInfo = nullptr; + int lwork = 0, info_gpu = 0; + double * work = nullptr; + hipErrcheck(hipMalloc((void**)&devInfo, sizeof(int))); + hipsolverFillMode_t uplo = HIPSOLVER_FILL_MODE_UPPER; + + // calculate the sizes needed for pre-allocated buffer. + hipsolverErrcheck(hipsolverDnDsygvd_bufferSize( + hipsolver_H, HIPSOLVER_EIG_TYPE_1, HIPSOLVER_EIG_MODE_VECTOR, uplo, + nstart, + _vcc, ldh, + _scc, ldh, + _eigenvalue, + &lwork)); + + // allocate memery + hipErrcheck(hipMalloc((void**)&work, sizeof(double) * lwork)); + + // compute eigenvalues and eigenvectors. + hipsolverErrcheck(hipsolverDnDsygvd( + hipsolver_H, HIPSOLVER_EIG_TYPE_1, HIPSOLVER_EIG_MODE_VECTOR, uplo, + nstart, + _vcc, ldh, + const_cast(_scc), ldh, + _eigenvalue, + work, lwork, devInfo)); + + hipErrcheck(hipMemcpy(&info_gpu, devInfo, sizeof(int), hipMemcpyDeviceToHost)); + + // free the buffer + hipErrcheck(hipFree(work)); + hipErrcheck(hipFree(devInfo)); + } + // if(fail_info != nullptr) *fail_info = info_gpu; + else{ + std::vector hcc(nstart * nstart, 0.0); + std::vector scc(nstart * nstart, 0.0); + std::vector vcc(nstart * nstart, 0.0); + std::vector eigenvalue(nstart, 0); + hipErrcheck(hipMemcpy(hcc.data(), _hcc, sizeof(double) * hcc.size(), hipMemcpyDeviceToHost)); + hipErrcheck(hipMemcpy(scc.data(), _scc, sizeof(double) * scc.size(), hipMemcpyDeviceToHost)); + base_device::DEVICE_CPU* cpu_ctx = {}; + hegvd_op()(cpu_ctx, + nstart, + ldh, + hcc.data(), + scc.data(), + eigenvalue.data(), + vcc.data()); + hipErrcheck(hipMemcpy(_vcc, vcc.data(), sizeof(double) * vcc.size(), hipMemcpyHostToDevice)); + hipErrcheck(hipMemcpy(_eigenvalue, eigenvalue.data(), sizeof(double) * eigenvalue.size(), hipMemcpyHostToDevice)); + } + + +} +#endif // __LCAO + +template <> +void hegvd_op, base_device::DEVICE_GPU>::operator()(const base_device::DEVICE_GPU* ctx, + const int nstart, + const int ldh, + const std::complex* _hcc, + const std::complex* _scc, + float* _eigenvalue, + std::complex* _vcc) +{ + // copied from ../cuda/hegvd_op.cu, "hegvd_op" + assert(nstart == ldh); + + if (nstart > N_DCU){ + hipErrcheck(hipMemcpy(_vcc, _hcc, sizeof(std::complex) * ldh * nstart, hipMemcpyDeviceToDevice)); + // now vcc contains hcc + + // prepare some values for hipsolverDnZhegvd_bufferSize + int * devInfo = nullptr; + int lwork = 0, info_gpu = 0; + float2 * work = nullptr; + hipErrcheck(hipMalloc((void**)&devInfo, sizeof(int))); + hipsolverFillMode_t uplo = HIPSOLVER_FILL_MODE_UPPER; + + // calculate the sizes needed for pre-allocated buffer. + hipsolverErrcheck(hipsolverDnChegvd_bufferSize( + hipsolver_H, HIPSOLVER_EIG_TYPE_1, HIPSOLVER_EIG_MODE_VECTOR, uplo, + nstart, + reinterpret_cast(_vcc), ldh, + reinterpret_cast(_scc), ldh, + _eigenvalue, + &lwork)); + + // allocate memery + hipErrcheck(hipMalloc((void**)&work, sizeof(float2) * lwork)); + + // compute eigenvalues and eigenvectors. + hipsolverErrcheck(hipsolverDnChegvd( + hipsolver_H, HIPSOLVER_EIG_TYPE_1, HIPSOLVER_EIG_MODE_VECTOR, uplo, + nstart, + reinterpret_cast(_vcc), ldh, + const_cast(reinterpret_cast(_scc)), ldh, + _eigenvalue, + work, lwork, devInfo)); + + hipErrcheck(hipMemcpy(&info_gpu, devInfo, sizeof(int), hipMemcpyDeviceToHost)); + // free the buffer + hipErrcheck(hipFree(work)); + hipErrcheck(hipFree(devInfo)); + } + // if(fail_info != nullptr) *fail_info = info_gpu; + else{ + std::vector> hcc(nstart * nstart, {0, 0}); + std::vector> scc(nstart * nstart, {0, 0}); + std::vector> vcc(nstart * nstart, {0, 0}); + std::vector eigenvalue(nstart, 0); + hipErrcheck(hipMemcpy(hcc.data(), _hcc, sizeof(std::complex) * hcc.size(), hipMemcpyDeviceToHost)); + hipErrcheck(hipMemcpy(scc.data(), _scc, sizeof(std::complex) * scc.size(), hipMemcpyDeviceToHost)); + base_device::DEVICE_CPU* cpu_ctx = {}; + hegvd_op, base_device::DEVICE_CPU>()(cpu_ctx, + nstart, + ldh, + hcc.data(), + scc.data(), + eigenvalue.data(), + vcc.data()); + hipErrcheck(hipMemcpy(_vcc, vcc.data(), sizeof(std::complex) * vcc.size(), hipMemcpyHostToDevice)); + hipErrcheck(hipMemcpy(_eigenvalue, eigenvalue.data(), sizeof(float) * eigenvalue.size(), hipMemcpyHostToDevice)); + } + + +} + +template <> +void hegvd_op, base_device::DEVICE_GPU>::operator()(const base_device::DEVICE_GPU* ctx, + const int nstart, + const int ldh, + const std::complex* _hcc, + const std::complex* _scc, + double* _eigenvalue, + std::complex* _vcc + ) +{ + // copied from ../cuda/hegvd_op.cu, "hegvd_op" + // assert(nstart == ldh); + + // save a copy of scc in case the diagonalization fails + if (nstart > N_DCU){ + std::vector> scc(nstart * nstart, {0, 0}); + hipErrcheck(hipMemcpy(scc.data(), _scc, sizeof(std::complex) * scc.size(), hipMemcpyDeviceToHost)); + + hipErrcheck(hipMemcpy(_vcc, _hcc, sizeof(std::complex) * ldh * nstart, hipMemcpyDeviceToDevice)); + + // now vcc contains hcc + + // prepare some values for hipsolverDnZhegvd_bufferSize + int * devInfo = nullptr; + int lwork = 0, info_gpu = 0; + double2 * work = nullptr; + hipErrcheck(hipMalloc((void**)&devInfo, sizeof(int))); + hipsolverFillMode_t uplo = HIPSOLVER_FILL_MODE_UPPER; + + // calculate the sizes needed for pre-allocated buffer. + hipsolverErrcheck(hipsolverDnZhegvd_bufferSize( + hipsolver_H, HIPSOLVER_EIG_TYPE_1, HIPSOLVER_EIG_MODE_VECTOR, uplo, + nstart, + reinterpret_cast(_vcc), ldh, + reinterpret_cast(_scc), ldh, + _eigenvalue, + &lwork)); + + // allocate memery + hipErrcheck(hipMalloc((void**)&work, sizeof(double2) * lwork)); + + // compute eigenvalues and eigenvectors. + hipsolverErrcheck(hipsolverDnZhegvd( + hipsolver_H, HIPSOLVER_EIG_TYPE_1, HIPSOLVER_EIG_MODE_VECTOR, uplo, + nstart, + reinterpret_cast(_vcc), ldh, + const_cast(reinterpret_cast(_scc)), ldh, + _eigenvalue, + work, lwork, devInfo)); + + hipErrcheck(hipMemcpy(&info_gpu, devInfo, sizeof(int), hipMemcpyDeviceToHost)); + // free the buffer + hipErrcheck(hipFree(work)); + hipErrcheck(hipFree(devInfo)); + } + // if(fail_info != nullptr) *fail_info = info_gpu; + else{ + std::vector> hcc(nstart * nstart, {0, 0}); + std::vector> scc(nstart * nstart, {0, 0}); + std::vector> vcc(nstart * nstart, {0, 0}); + std::vector eigenvalue(nstart, 0); + hipErrcheck(hipMemcpy(hcc.data(), _hcc, sizeof(std::complex) * hcc.size(), hipMemcpyDeviceToHost)); + hipErrcheck(hipMemcpy(scc.data(), _scc, sizeof(std::complex) * scc.size(), hipMemcpyDeviceToHost)); + base_device::DEVICE_CPU* cpu_ctx = {}; + hegvd_op, base_device::DEVICE_CPU>()(cpu_ctx, + nstart, + ldh, + hcc.data(), + scc.data(), + eigenvalue.data(), + vcc.data()); + hipErrcheck(hipMemcpy(_vcc, vcc.data(), sizeof(std::complex) * vcc.size(), hipMemcpyHostToDevice)); + hipErrcheck(hipMemcpy(_eigenvalue, eigenvalue.data(), sizeof(double) * eigenvalue.size(), hipMemcpyHostToDevice)); + } + + + + + + + +} + +#ifdef __LCAO +template <> +void heevx_op::operator()(const base_device::DEVICE_GPU* ctx, + const int nstart, + const int ldh, + const double* _hcc, + const int m, + double* _eigenvalue, + double* _vcc) +{ + std::vector hcc(ldh * ldh, 0.0); + std::vector vcc(ldh * ldh, 0.0); + std::vector eigenvalue(ldh, 0); + hipErrcheck(hipMemcpy(hcc.data(), _hcc, sizeof(double) * hcc.size(), hipMemcpyDeviceToHost)); + base_device::DEVICE_CPU* cpu_ctx = {}; + heevx_op()(cpu_ctx, nstart, ldh, hcc.data(), m, eigenvalue.data(), vcc.data()); + hipErrcheck(hipMemcpy(_vcc, vcc.data(), sizeof(double) * vcc.size(), hipMemcpyHostToDevice)); + hipErrcheck(hipMemcpy(_eigenvalue, eigenvalue.data(), sizeof(double) * eigenvalue.size(), hipMemcpyHostToDevice)); +} +#endif // __LCAO + +template <> +void heevx_op, base_device::DEVICE_GPU>::operator()(const base_device::DEVICE_GPU* ctx, + const int nstart, + const int ldh, + const std::complex* _hcc, + const int m, + float* _eigenvalue, + std::complex* _vcc) +{ + std::vector> hcc(ldh * ldh, {0, 0}); + std::vector> vcc(ldh * ldh, {0, 0}); + std::vector eigenvalue(ldh, 0); + hipErrcheck(hipMemcpy(hcc.data(), _hcc, sizeof(std::complex) * hcc.size(), hipMemcpyDeviceToHost)); + base_device::DEVICE_CPU* cpu_ctx = {}; + heevx_op, base_device::DEVICE_CPU>()(cpu_ctx, + nstart, + ldh, + hcc.data(), + m, + eigenvalue.data(), + vcc.data()); + hipErrcheck(hipMemcpy(_vcc, vcc.data(), sizeof(std::complex) * vcc.size(), hipMemcpyHostToDevice)); + hipErrcheck(hipMemcpy(_eigenvalue, eigenvalue.data(), sizeof(float) * eigenvalue.size(), hipMemcpyHostToDevice)); +} + +template <> +void heevx_op, base_device::DEVICE_GPU>::operator()(const base_device::DEVICE_GPU* ctx, + const int nstart, + const int ldh, + const std::complex* _hcc, + const int m, + double* _eigenvalue, + std::complex* _vcc) +{ + std::vector> hcc(ldh * ldh, {0, 0}); + std::vector> vcc(ldh * ldh, {0, 0}); + std::vector eigenvalue(ldh, 0); + hipErrcheck(hipMemcpy(hcc.data(), _hcc, sizeof(std::complex) * hcc.size(), hipMemcpyDeviceToHost)); + base_device::DEVICE_CPU* cpu_ctx = {}; + heevx_op, base_device::DEVICE_CPU>()(cpu_ctx, + nstart, + ldh, + hcc.data(), + m, + eigenvalue.data(), + vcc.data()); + hipErrcheck(hipMemcpy(_vcc, vcc.data(), sizeof(std::complex) * vcc.size(), hipMemcpyHostToDevice)); + hipErrcheck(hipMemcpy(_eigenvalue, eigenvalue.data(), sizeof(double) * eigenvalue.size(), hipMemcpyHostToDevice)); +} + +template <> +void hegvx_op, base_device::DEVICE_GPU>::operator()(const base_device::DEVICE_GPU* d, + const int nbase, + const int ldh, + std::complex* hcc, + std::complex* scc, + const int m, + float* eigenvalue, + std::complex* vcc) +{ +} + +template <> +void hegvx_op, base_device::DEVICE_GPU>::operator()(const base_device::DEVICE_GPU* d, + const int nbase, + const int ldh, + std::complex* hcc, + std::complex* scc, + const int m, + double* eigenvalue, + std::complex* vcc) +{ +} + +#ifdef __LCAO +template <> +void hegvx_op::operator()(const base_device::DEVICE_GPU* d, + const int nbase, + const int ldh, + double* hcc, + double* scc, + const int m, + double* eigenvalue, + double* vcc) +{ +} +#endif // __LCAO + +} // namespace hsolver \ No newline at end of file diff --git a/source/source_hsolver/kernels/test/CMakeLists.txt b/source/source_hsolver/kernels/test/CMakeLists.txt index 6ae7221685..851c30c731 100644 --- a/source/source_hsolver/kernels/test/CMakeLists.txt +++ b/source/source_hsolver/kernels/test/CMakeLists.txt @@ -5,7 +5,7 @@ if(USE_CUDA OR USE_ROCM) AddTest( TARGET MODULE_HSOLVER_KERNELS_Unittests LIBS parameter ${math_libs} base device - SOURCES math_dngvd_test.cpp + SOURCES math_hegvd_test.cpp ) endif() diff --git a/source/source_hsolver/kernels/test/math_dngvd_test.cpp b/source/source_hsolver/kernels/test/math_dngvd_test.cpp deleted file mode 100644 index c5582faec2..0000000000 --- a/source/source_hsolver/kernels/test/math_dngvd_test.cpp +++ /dev/null @@ -1,195 +0,0 @@ -#include "source_base/complexmatrix.h" -#include "source_base/module_device/memory_op.h" -#include "source_hsolver/kernels/dngvd_op.h" -#include "source_base/kernels/math_kernel_op.h" - -#include -#include -#include -#include -#include -#include - -class TestModuleHsolverMathDngvd : public ::testing::Test -{ - protected: - using resize_memory_op_Z = base_device::memory::resize_memory_op, base_device::DEVICE_GPU>; - using delete_memory_op_Z = base_device::memory::delete_memory_op, base_device::DEVICE_GPU>; - using resize_memory_op_D = base_device::memory::resize_memory_op; - using delete_memory_op_D = base_device::memory::delete_memory_op; - // from CPU to GPU - using synchronize_memory_op_C2G_Z = base_device::memory:: - synchronize_memory_op, base_device::DEVICE_GPU, base_device::DEVICE_CPU>; - using synchronize_memory_op_C2G_D - = base_device::memory::synchronize_memory_op; - using synchronize_memory_op_G2C_Z = base_device::memory:: - synchronize_memory_op, base_device::DEVICE_CPU, base_device::DEVICE_GPU>; - using synchronize_memory_op_G2C_D - = base_device::memory::synchronize_memory_op; - - const base_device::DEVICE_CPU* cpu_ctx = {}; - const base_device::DEVICE_GPU* gpu_ctx = {}; - - // prepare A & B in CPU - std::vector> matrix_A = { - {-0.351417, -1.73472}, - {-8.32667, 2.3744}, - {4.16334, 3.64292}, - {5.20417, -3.85976}, - {-8.32667, -2.3744}, - {0.551651, -2.60209}, - {2.08167, 1.9082}, - {-6.93889, 1.04083}, - {4.16334, -3.64292}, - {2.08167, -1.9082}, - {0.551651, -2.25514}, - {-1.31839, 5.20417}, - {5.20417, 3.85976}, - {-6.93889, -1.04083}, - {-1.31839, -5.20417}, - {0.551651, -3.64292} - - // {-4.280e-01,3.084e-17}, {-1.288e-16,9.021e-17}, {5.204e-18,-3.990e-17}, {-5.204e-17,-2.776e-17}, - // {-1.288e-16,-9.021e-17}, {4.574e-01,-8.687e-17}, {-6.939e-18,1.908e-17}, {8.327e-17,-1.041e-17}, - // {5.204e-18,3.990e-17}, {-6.939e-18,-1.908e-17}, {4.574e-01,-5.783e-17},{-6.939e-18,4.163e-17}, - // {-5.204e-17,2.776e-17}, {8.327e-17,1.041e-17}, {-6.939e-18,-4.163e-17}, {4.574e-01,-3.451e-17} - - // {-4.280e-01,3.084e-17}, {-1.288e-16,9.021e-17}, {5.204e-18,-3.990e-17}, {-1.145e-16,2.255e-17}, - // {3.946e-17,-2.949e-17}, {4.574e-01,-8.687e-17}, {2.082e-17,1.908e-17}, {4.163e-17,-4.163e-17}, - // {3.296e-17,-9.454e-17}, {-6.939e-18,-1.908e-17}, {4.574e-01,-5.783e-17},{-1.388e-17,6.939e-18}, - // {-5.204e-17,2.776e-17}, {8.327e-17,1.041e-17}, {-6.939e-18,-4.163e-17}, {4.574e-01,-3.451e-17} - }; - std::vector> matrix_B = { - {1, 0}, - {0, 0}, - {0, 0}, - {0, 0}, - {0, 0}, - {1, 0}, - {0, 0}, - {0, 0}, - {0, 0}, - {0, 0}, - {1, 0}, - {0, 0}, - {0, 0}, - {0, 0}, - {0, 0}, - {1, 0} - // {1.000e+00,0.000e+00}, {-7.069e-17,-3.123e-17}, {-5.204e-17,0.000e+00}, {5.551e-17,-2.082e-17}, - // {-7.069e-17,3.123e-17}, {1.000e+00,0.000e+00}, {1.110e-16,-7.286e-17}, {8.327e-17,-1.110e-16}, - // {-5.204e-17,0.000e+00}, {1.110e-16,7.286e-17}, {1.000e+00,0.000e+00}, {-9.714e-17,2.776e-17}, - // {5.551e-17,2.082e-17}, {8.327e-17,1.110e-16}, {-9.714e-17,-2.776e-17}, {1.000e+00,0.000e+00} - }; - const int matrix_size = 16; - - // prepare W & V in CPU in dngv_op - std::vector W_dngv_op = {0.0, 0.0, 0.0, 0.0}; - std::vector> matrix_V_dngv_op = {{0.0, 0.0}, - {0.0, 0.0}, - {0.0, 0.0}, - {0.0, 0.0}, - {0.0, 0.0}, - {0.0, 0.0}, - {0.0, 0.0}, - {0.0, 0.0}, - {0.0, 0.0}, - {0.0, 0.0}, - {0.0, 0.0}, - {0.0, 0.0}, - {0.0, 0.0}, - {0.0, 0.0}, - {0.0, 0.0}, - {0.0, 0.0}}; - - // prepare W & V in CPU in dngvx_op - std::vector W_DNGVX = {0.0, 0.0}; - std::vector> matrix_V_DNGVX = {{0.0, 0.0}, - {0.0, 0.0}, - {0.0, 0.0}, - {0.0, 0.0}, - {0.0, 0.0}, - {0.0, 0.0}, - {0.0, 0.0}, - {0.0, 0.0}, - {0.0, 0.0}, - {0.0, 0.0}, - {0.0, 0.0}, - {0.0, 0.0}, - {0.0, 0.0}, - {0.0, 0.0}, - {0.0, 0.0}, - {0.0, 0.0}}; -}; - - - -#if __UT_USE_CUDA || __UT_USE_ROCM - -TEST_F(TestModuleHsolverMathDngvd, transpose_gpu) -{ - // prepare transpose in GPU - std::vector> transpose = { - {-0.351417, -1.73472}, - {-8.32667, 2.3744}, - {4.16334, 3.64292}, - {-0.351417, -1.73472}, - {-8.32667, 2.3744}, - {4.16334, 3.64292}, - // {-0.351417,-1.73472}, {-8.32667,2.3744}, {4.16334,3.64292} - }; - std::complex* device_transpose = nullptr; - resize_memory_op_Z()(device_transpose, matrix_size); - synchronize_memory_op_C2G_Z()(device_transpose, transpose.data(), transpose.size()); - - // run - ModuleBase::createGpuBlasHandle(); - ModuleBase::matrixTranspose_op, base_device::DEVICE_GPU>()(2, - 3, - device_transpose, - device_transpose); - ModuleBase::destoryBLAShandle(); - - // copy transpose data from GPU to CPU - std::vector> transpose_result = { - {0.0, 0.0}, - {0.0, 0.0}, - {0.0, 0.0}, - {0.0, 0.0}, - {0.0, 0.0}, - {0.0, 0.0}, - // {0.0, 0.0}, {0.0, 0.0}, {0.0, 0.0} - }; - synchronize_memory_op_G2C_Z()(transpose_result.data(), device_transpose, transpose.size()); - - // std::vector > test_result = { - // {-0.351417,-1.73472}, {-0.351417,-1.73472}, {-0.351417,-1.73472}, - // {-8.32667,2.3744}, {-8.32667,2.3744}, {-8.32667,2.3744}, - // {4.16334,3.64292}, {4.16334,3.64292}, {4.16334,3.64292}, - // }; - std::vector> test_result = { - {-0.351417, -1.73472}, - {-0.351417, -1.73472}, - {-8.32667, 2.3744}, - {-8.32667, 2.3744}, - {4.16334, 3.64292}, - {4.16334, 3.64292}, - }; - - // for (int i = 0; i < 3; i++) - // { - // for (int j = 0; j < 2; j++) - // { - // std::cout << transpose_result[i * 2 + j]; - // } - // std::cout << std::endl; - // } - - for (int i = 0; i < transpose_result.size(); i++) - { - EXPECT_LT(fabs(test_result[i].imag()) - fabs(transpose_result[i].imag()), 1e-8); - EXPECT_LT(fabs(test_result[i].real()) - fabs(transpose_result[i].real()), 1e-8); - } -} - -#endif // __UT_USE_CUDA || __UT_USE_ROCM diff --git a/source/source_hsolver/kernels/test/math_hegvd_test.cpp b/source/source_hsolver/kernels/test/math_hegvd_test.cpp new file mode 100644 index 0000000000..adf2ab95ee --- /dev/null +++ b/source/source_hsolver/kernels/test/math_hegvd_test.cpp @@ -0,0 +1,195 @@ +#include "source_base/complexmatrix.h" +#include "source_base/module_device/memory_op.h" +#include "source_hsolver/kernels/hegvd_op.h" +#include "source_base/kernels/math_kernel_op.h" + +#include +#include +#include +#include +#include +#include + +class TestModuleHsolverMathDngvd : public ::testing::Test +{ + protected: + using resize_memory_op_Z = base_device::memory::resize_memory_op, base_device::DEVICE_GPU>; + using delete_memory_op_Z = base_device::memory::delete_memory_op, base_device::DEVICE_GPU>; + using resize_memory_op_D = base_device::memory::resize_memory_op; + using delete_memory_op_D = base_device::memory::delete_memory_op; + // from CPU to GPU + using synchronize_memory_op_C2G_Z = base_device::memory:: + synchronize_memory_op, base_device::DEVICE_GPU, base_device::DEVICE_CPU>; + using synchronize_memory_op_C2G_D + = base_device::memory::synchronize_memory_op; + using synchronize_memory_op_G2C_Z = base_device::memory:: + synchronize_memory_op, base_device::DEVICE_CPU, base_device::DEVICE_GPU>; + using synchronize_memory_op_G2C_D + = base_device::memory::synchronize_memory_op; + + const base_device::DEVICE_CPU* cpu_ctx = {}; + const base_device::DEVICE_GPU* gpu_ctx = {}; + + // prepare A & B in CPU + std::vector> matrix_A = { + {-0.351417, -1.73472}, + {-8.32667, 2.3744}, + {4.16334, 3.64292}, + {5.20417, -3.85976}, + {-8.32667, -2.3744}, + {0.551651, -2.60209}, + {2.08167, 1.9082}, + {-6.93889, 1.04083}, + {4.16334, -3.64292}, + {2.08167, -1.9082}, + {0.551651, -2.25514}, + {-1.31839, 5.20417}, + {5.20417, 3.85976}, + {-6.93889, -1.04083}, + {-1.31839, -5.20417}, + {0.551651, -3.64292} + + // {-4.280e-01,3.084e-17}, {-1.288e-16,9.021e-17}, {5.204e-18,-3.990e-17}, {-5.204e-17,-2.776e-17}, + // {-1.288e-16,-9.021e-17}, {4.574e-01,-8.687e-17}, {-6.939e-18,1.908e-17}, {8.327e-17,-1.041e-17}, + // {5.204e-18,3.990e-17}, {-6.939e-18,-1.908e-17}, {4.574e-01,-5.783e-17},{-6.939e-18,4.163e-17}, + // {-5.204e-17,2.776e-17}, {8.327e-17,1.041e-17}, {-6.939e-18,-4.163e-17}, {4.574e-01,-3.451e-17} + + // {-4.280e-01,3.084e-17}, {-1.288e-16,9.021e-17}, {5.204e-18,-3.990e-17}, {-1.145e-16,2.255e-17}, + // {3.946e-17,-2.949e-17}, {4.574e-01,-8.687e-17}, {2.082e-17,1.908e-17}, {4.163e-17,-4.163e-17}, + // {3.296e-17,-9.454e-17}, {-6.939e-18,-1.908e-17}, {4.574e-01,-5.783e-17},{-1.388e-17,6.939e-18}, + // {-5.204e-17,2.776e-17}, {8.327e-17,1.041e-17}, {-6.939e-18,-4.163e-17}, {4.574e-01,-3.451e-17} + }; + std::vector> matrix_B = { + {1, 0}, + {0, 0}, + {0, 0}, + {0, 0}, + {0, 0}, + {1, 0}, + {0, 0}, + {0, 0}, + {0, 0}, + {0, 0}, + {1, 0}, + {0, 0}, + {0, 0}, + {0, 0}, + {0, 0}, + {1, 0} + // {1.000e+00,0.000e+00}, {-7.069e-17,-3.123e-17}, {-5.204e-17,0.000e+00}, {5.551e-17,-2.082e-17}, + // {-7.069e-17,3.123e-17}, {1.000e+00,0.000e+00}, {1.110e-16,-7.286e-17}, {8.327e-17,-1.110e-16}, + // {-5.204e-17,0.000e+00}, {1.110e-16,7.286e-17}, {1.000e+00,0.000e+00}, {-9.714e-17,2.776e-17}, + // {5.551e-17,2.082e-17}, {8.327e-17,1.110e-16}, {-9.714e-17,-2.776e-17}, {1.000e+00,0.000e+00} + }; + const int matrix_size = 16; + + // prepare W & V in CPU in dngv_op + std::vector W_dngv_op = {0.0, 0.0, 0.0, 0.0}; + std::vector> matrix_V_dngv_op = {{0.0, 0.0}, + {0.0, 0.0}, + {0.0, 0.0}, + {0.0, 0.0}, + {0.0, 0.0}, + {0.0, 0.0}, + {0.0, 0.0}, + {0.0, 0.0}, + {0.0, 0.0}, + {0.0, 0.0}, + {0.0, 0.0}, + {0.0, 0.0}, + {0.0, 0.0}, + {0.0, 0.0}, + {0.0, 0.0}, + {0.0, 0.0}}; + + // prepare W & V in CPU in dngvx_op + std::vector W_DNGVX = {0.0, 0.0}; + std::vector> matrix_V_DNGVX = {{0.0, 0.0}, + {0.0, 0.0}, + {0.0, 0.0}, + {0.0, 0.0}, + {0.0, 0.0}, + {0.0, 0.0}, + {0.0, 0.0}, + {0.0, 0.0}, + {0.0, 0.0}, + {0.0, 0.0}, + {0.0, 0.0}, + {0.0, 0.0}, + {0.0, 0.0}, + {0.0, 0.0}, + {0.0, 0.0}, + {0.0, 0.0}}; +}; + + + +#if __UT_USE_CUDA || __UT_USE_ROCM + +TEST_F(TestModuleHsolverMathDngvd, transpose_gpu) +{ + // prepare transpose in GPU + std::vector> transpose = { + {-0.351417, -1.73472}, + {-8.32667, 2.3744}, + {4.16334, 3.64292}, + {-0.351417, -1.73472}, + {-8.32667, 2.3744}, + {4.16334, 3.64292}, + // {-0.351417,-1.73472}, {-8.32667,2.3744}, {4.16334,3.64292} + }; + std::complex* device_transpose = nullptr; + resize_memory_op_Z()(device_transpose, matrix_size); + synchronize_memory_op_C2G_Z()(device_transpose, transpose.data(), transpose.size()); + + // run + ModuleBase::createGpuBlasHandle(); + ModuleBase::matrixTranspose_op, base_device::DEVICE_GPU>()(2, + 3, + device_transpose, + device_transpose); + ModuleBase::destoryBLAShandle(); + + // copy transpose data from GPU to CPU + std::vector> transpose_result = { + {0.0, 0.0}, + {0.0, 0.0}, + {0.0, 0.0}, + {0.0, 0.0}, + {0.0, 0.0}, + {0.0, 0.0}, + // {0.0, 0.0}, {0.0, 0.0}, {0.0, 0.0} + }; + synchronize_memory_op_G2C_Z()(transpose_result.data(), device_transpose, transpose.size()); + + // std::vector > test_result = { + // {-0.351417,-1.73472}, {-0.351417,-1.73472}, {-0.351417,-1.73472}, + // {-8.32667,2.3744}, {-8.32667,2.3744}, {-8.32667,2.3744}, + // {4.16334,3.64292}, {4.16334,3.64292}, {4.16334,3.64292}, + // }; + std::vector> test_result = { + {-0.351417, -1.73472}, + {-0.351417, -1.73472}, + {-8.32667, 2.3744}, + {-8.32667, 2.3744}, + {4.16334, 3.64292}, + {4.16334, 3.64292}, + }; + + // for (int i = 0; i < 3; i++) + // { + // for (int j = 0; j < 2; j++) + // { + // std::cout << transpose_result[i * 2 + j]; + // } + // std::cout << std::endl; + // } + + for (int i = 0; i < transpose_result.size(); i++) + { + EXPECT_LT(fabs(test_result[i].imag()) - fabs(transpose_result[i].imag()), 1e-8); + EXPECT_LT(fabs(test_result[i].real()) - fabs(transpose_result[i].real()), 1e-8); + } +} + +#endif // __UT_USE_CUDA || __UT_USE_ROCM diff --git a/source/source_hsolver/module_genelpa/elpa_new.cpp b/source/source_hsolver/module_genelpa/elpa_new.cpp index 3d214d20fd..d045482190 100644 --- a/source/source_hsolver/module_genelpa/elpa_new.cpp +++ b/source/source_hsolver/module_genelpa/elpa_new.cpp @@ -57,7 +57,7 @@ ELPA_Solver::ELPA_Solver(const bool isReal, else kernel_id = read_complex_kernel(); // cout<<"kernel id is inited as "< NEW_ELPA_HANDLE_POOL; - static int total_handle; + static int total_handle = 0; #ifdef _OPENMP int num_threads = omp_get_max_threads(); @@ -270,7 +270,7 @@ int ELPA_Solver::read_cpuflag() int ELPA_Solver::read_real_kernel() { - int kernel_id; + int kernel_id = 0; if (const char* env = getenv("ELPA_DEFAULT_real_kernel")) { @@ -454,7 +454,7 @@ int ELPA_Solver::read_complex_kernel() int ELPA_Solver::allocate_work() { unsigned long nloc = static_cast(narows) * nacols; // local size - unsigned long maxloc; // maximum local size + unsigned long maxloc = 0; // maximum local size MPI_Allreduce(&nloc, &maxloc, 1, MPI_UNSIGNED_LONG, MPI_MAX, comm); maxloc = nloc; @@ -467,7 +467,7 @@ int ELPA_Solver::allocate_work() void ELPA_Solver::timer(int myid, const char function[], const char step[], double& t0) { - double t1; + double t1 = 0.0; if (t0 < 0) // t0 < 0 means this is the init call before the function { t0 = MPI_Wtime(); diff --git a/source/source_hsolver/module_genelpa/elpa_new_complex.cpp b/source/source_hsolver/module_genelpa/elpa_new_complex.cpp index 0c78009522..cf28835942 100644 --- a/source/source_hsolver/module_genelpa/elpa_new_complex.cpp +++ b/source/source_hsolver/module_genelpa/elpa_new_complex.cpp @@ -19,9 +19,9 @@ extern std::map NEW_ELPA_HANDLE_POOL; int ELPA_Solver::eigenvector(std::complex* A, double* EigenValue, std::complex* EigenVector) { - int info; - int allinfo; - double t; + int info = 0; + int allinfo = 0; + double t = 0.0; if((loglevel>0 && myid==0) || loglevel>1) { @@ -42,7 +42,7 @@ int ELPA_Solver::generalized_eigenvector(std::complex* A, std::complex* EigenVector) { int info, allinfo; - double t; + double t = 0.0; if((loglevel>0 && myid==0) || loglevel>1) { @@ -164,7 +164,7 @@ int ELPA_Solver::decomposeRightMatrix(std::complex* B, double* EigenValu { int info=0; int allinfo=0; - double t; + double t = 0.0; // first try cholesky decomposing if(nFull* B, double* EigenValu int ELPA_Solver::composeEigenVector(int DecomposedState, std::complex* B, std::complex* EigenVector) { - double t; + double t = 0.0; if(DecomposedState==1 || DecomposedState==2) { // transform the eigenvectors to original general equation, let U^-1*q, and put to q diff --git a/source/source_hsolver/module_genelpa/elpa_new_real.cpp b/source/source_hsolver/module_genelpa/elpa_new_real.cpp index a780c89f55..cc6d0242bd 100644 --- a/source/source_hsolver/module_genelpa/elpa_new_real.cpp +++ b/source/source_hsolver/module_genelpa/elpa_new_real.cpp @@ -18,8 +18,8 @@ extern std::map NEW_ELPA_HANDLE_POOL; int ELPA_Solver::eigenvector(double* A, double* EigenValue, double* EigenVector) { - int info; - double t; + int info = 0; + double t = 0.0; if (loglevel > 0 && myid == 0) { @@ -41,7 +41,7 @@ int ELPA_Solver::generalized_eigenvector(double* A, double* EigenVector) { int info, allinfo; - double t; + double t = 0.0; if (loglevel > 0 && myid == 0) { @@ -407,7 +407,7 @@ void ELPA_Solver::verify(double* A, double* EigenValue, double* EigenVector, dou maxError = 0; for (int i = 1; i <= nev; ++i) { - double E; + double E = 0.0; ScalapackConnector::dot(nFull, E, R, 1, i, 1, R, 1, i, 1, desc); // printf("myid: %d, i: %d, E: %lf\n", myid, i, E); sumError += E; diff --git a/source/source_hsolver/module_genelpa/utils.cpp b/source/source_hsolver/module_genelpa/utils.cpp index d9e6e74c59..6654c33b9e 100644 --- a/source/source_hsolver/module_genelpa/utils.cpp +++ b/source/source_hsolver/module_genelpa/utils.cpp @@ -25,7 +25,7 @@ void initBlacsGrid(int loglevel, int nprows, npcols; int myprow, mypcol; int nprocs, myid; - int info; + int info = 0; MPI_Comm_size(comm, &nprocs); MPI_Comm_rank(comm, &myid); // set blacs parameters @@ -137,7 +137,7 @@ void loadMatrix(const char FileName[], int nFull, double* a, int* desca, int bla void saveLocalMatrix(const char filePrefix[], int narows, int nacols, double* a) { char FileName[80]; - int myid; + int myid = 0; std::ofstream matrixFile; #ifdef __MPI MPI_Comm_rank(MPI_COMM_WORLD, &myid); diff --git a/source/source_hsolver/module_pexsi/dist_bcd_matrix.cpp b/source/source_hsolver/module_pexsi/dist_bcd_matrix.cpp index ff3f85f32b..93a6dcb5b0 100644 --- a/source/source_hsolver/module_pexsi/dist_bcd_matrix.cpp +++ b/source/source_hsolver/module_pexsi/dist_bcd_matrix.cpp @@ -48,7 +48,7 @@ DistBCDMatrix::DistBCDMatrix(MPI_Comm comm, } // synchronize matrix parameters to all processes, including those are not in bcd group - int myid_in_comm_world; + int myid_in_comm_world = 0; MPI_Comm_rank(MPI_COMM_WORLD, &myid_in_comm_world); if (myid_in_comm_world == 0) { diff --git a/source/source_hsolver/module_pexsi/dist_bcd_matrix.h b/source/source_hsolver/module_pexsi/dist_bcd_matrix.h index c1b5657b67..bea324cacf 100644 --- a/source/source_hsolver/module_pexsi/dist_bcd_matrix.h +++ b/source/source_hsolver/module_pexsi/dist_bcd_matrix.h @@ -75,7 +75,7 @@ class DistBCDMatrix // current process id int myproc; - int* prowpcol2pnum; + int* prowpcol2pnum = nullptr; // the local data layout // 'R' or 'r' for row-major, which is used in C/C++ // 'C' or 'c' for column-major, which is used in Fortran diff --git a/source/source_hsolver/module_pexsi/dist_ccs_matrix.cpp b/source/source_hsolver/module_pexsi/dist_ccs_matrix.cpp index 74391f2fbe..0a73653c8e 100644 --- a/source/source_hsolver/module_pexsi/dist_ccs_matrix.cpp +++ b/source/source_hsolver/module_pexsi/dist_ccs_matrix.cpp @@ -55,7 +55,7 @@ DistCCSMatrix::DistCCSMatrix(MPI_Comm comm_in, int nproc_data_in, int size_in) this->size = size_in; this->nnz = 0; this->nnzLocal = 0; - int myproc; + int myproc = 0; if (comm != MPI_COMM_NULL) { MPI_Comm_size(comm, &nprocs); diff --git a/source/source_hsolver/module_pexsi/dist_ccs_matrix.h b/source/source_hsolver/module_pexsi/dist_ccs_matrix.h index 86bfddb966..b4a25fdd9e 100644 --- a/source/source_hsolver/module_pexsi/dist_ccs_matrix.h +++ b/source/source_hsolver/module_pexsi/dist_ccs_matrix.h @@ -86,8 +86,8 @@ class DistCCSMatrix int firstCol=0; // Array stores the indices to the nonzero row indices in rowptrLocal and nzvalLocal - int* colptrLocal; - int* rowindLocal; + int* colptrLocal = nullptr; + int* rowindLocal = nullptr; // friend class DistMatrixTransformer; }; diff --git a/source/source_hsolver/module_pexsi/dist_matrix_transformer.cpp b/source/source_hsolver/module_pexsi/dist_matrix_transformer.cpp index 313a840e68..43f069c123 100644 --- a/source/source_hsolver/module_pexsi/dist_matrix_transformer.cpp +++ b/source/source_hsolver/module_pexsi/dist_matrix_transformer.cpp @@ -28,8 +28,8 @@ inline int DistMatrixTransformer::MinimumIndexPosition(const bool isFirst, { // usually the minimum index is continuous, so it will be a good idea to // check the one next to the previous index first. - static int pre_position; // previous position in index array of minimum index, - static int pre_process; // the process contains previous index + static int pre_position = 0; // previous position in index array of minimum index, + static int pre_process = 0; // the process contains previous index int minimum_index = INT_MAX; // the minimum index, initial value is a large number which is larger than any other index; @@ -110,7 +110,7 @@ inline void DistMatrixTransformer::buildCCSParameter(const int size, int pre_col = -1; int nnz_now = 0; - int p_mini; + int p_mini = 0; p_mini = MinimumIndexPosition(true, nprocs, &size_process[0], &displacement_process[0], position_index); while (p_mini >= 0) { @@ -146,7 +146,7 @@ inline void DistMatrixTransformer::countMatrixDistribution(int N, double* A, std { for (int i = 0; i < N; ++i) { - int key; + int key = 0; if (fabs(A[i] < 1e-31)) key = -100; else @@ -554,11 +554,11 @@ int DistMatrixTransformer::transformCCStoBCD(DistCCSMatrix& SRC_Matrix, // setup up sender index and receiver index int sender_size = SRC_Matrix.get_nnzlocal(); - int* sender_index; - double* sender_buffer; - int* dst_index; - int* receiver_index; - double* receiver_buffer; + int* sender_index = nullptr; + double* sender_buffer = nullptr; + int* dst_index = nullptr; + int* receiver_index = nullptr; + double* receiver_buffer = nullptr; if (sender_size > 0) { diff --git a/source/source_hsolver/module_pexsi/pexsi_solver.h b/source/source_hsolver/module_pexsi/pexsi_solver.h index b041d13656..922f1b9fb3 100644 --- a/source/source_hsolver/module_pexsi/pexsi_solver.h +++ b/source/source_hsolver/module_pexsi/pexsi_solver.h @@ -130,10 +130,10 @@ class PEXSI_Solver int nb; int nrow; int ncol; - double* h; - double* s; - double* DM; - double* EDM; + double* h = nullptr; + double* s = nullptr; + double* DM = nullptr; + double* EDM = nullptr; double totalEnergyH; double totalEnergyS; double totalFreeEnergy; diff --git a/source/source_hsolver/module_pexsi/simple_pexsi.cpp b/source/source_hsolver/module_pexsi/simple_pexsi.cpp index edf000ecae..255b1019b3 100644 --- a/source/source_hsolver/module_pexsi/simple_pexsi.cpp +++ b/source/source_hsolver/module_pexsi/simple_pexsi.cpp @@ -27,7 +27,7 @@ namespace pexsi { inline void strtolower(char* sa, char* sb) { - char c; + char c = '\0'; int len = strlen(sa); for (int i = 0; i < len; i++) { @@ -172,8 +172,8 @@ void splitNProc2NProwNPcol(const int NPROC, int& nprow, int& npcol) } else { - int flag; - int i; + int flag = 0; + int i = 0; int low = pow(integral_part, 2); int high = pow(integral_part + 1, 2); if ((NPROC - low) >= (high - NPROC)) @@ -218,7 +218,7 @@ int simplePEXSI(MPI_Comm comm_PEXSI, if (comm_2D == MPI_COMM_NULL && comm_PEXSI == MPI_COMM_NULL) return 0; - int myid; + int myid = 0; std::ofstream f_log; if (comm_PEXSI != MPI_COMM_NULL) { @@ -228,15 +228,15 @@ int simplePEXSI(MPI_Comm comm_PEXSI, // set up PEXSI parameter PPEXSIOptions options; PPEXSISetDefaultOptions(&options); - int numProcessPerPole; - double ZERO_Limit; + int numProcessPerPole = 0; + double ZERO_Limit = 0.0; loadPEXSIOption(comm_PEXSI, PexsiOptionFile, options, numProcessPerPole, ZERO_Limit); options.mu0 = mu0; ModuleBase::timer::tick("Diago_LCAO_Matrix", "setup_PEXSI_plan"); PPEXSIPlan plan; - int info; - int outputFileIndex; + int info = 0; + int outputFileIndex = 0; int pexsi_prow, pexsi_pcol; ModuleBase::timer::tick("Diago_LCAO_Matrix", "splitNProc2NProwNPcol"); splitNProc2NProwNPcol(numProcessPerPole, pexsi_prow, pexsi_pcol); @@ -292,11 +292,11 @@ int simplePEXSI(MPI_Comm comm_PEXSI, SnzvalLocal, &info); - double nelec; - double muMinInertia; - double muMaxInertia; - int numTotalPEXSIIter; - int numTotalInertiaIter; // Number of total inertia[out] + double nelec = 0.0; + double muMinInertia = 0.0; + double muMaxInertia = 0.0; + int numTotalPEXSIIter = 0; + int numTotalInertiaIter = 0; // Number of total inertia[out] // LiuXh modify 2021-04-29, add DONE(ofs_running,"xx") for test ModuleBase::timer::tick("Diago_LCAO_Matrix", "PEXSIDFT"); PPEXSIDFTDriver2(plan, // PEXSI plan[in] diff --git a/source/source_hsolver/test/CMakeLists.txt b/source/source_hsolver/test/CMakeLists.txt index e3fa6550fa..1b1529adb4 100644 --- a/source/source_hsolver/test/CMakeLists.txt +++ b/source/source_hsolver/test/CMakeLists.txt @@ -14,7 +14,7 @@ if (ENABLE_MPI) SOURCES diago_bpcg_test.cpp ../diago_bpcg.cpp ../para_linear_transform.cpp ../diago_iter_assist.cpp ../../source_basis/module_pw/test/test_tool.cpp ../../source_hamilt/operator.cpp - ../../source_pw/module_pwdft/operator_pw/operator_pw.cpp + ../../source_pw/module_pwdft/op_pw.cpp ) AddTest( TARGET MODULE_HSOLVER_cg @@ -22,7 +22,7 @@ if (ENABLE_MPI) SOURCES diago_cg_test.cpp ../diago_cg.cpp ../diago_iter_assist.cpp ../diag_const_nums.cpp ../../source_basis/module_pw/test/test_tool.cpp ../../source_hamilt/operator.cpp - ../../source_pw/module_pwdft/operator_pw/operator_pw.cpp + ../../source_pw/module_pwdft/op_pw.cpp ) AddTest( TARGET MODULE_HSOLVER_cg_float @@ -30,7 +30,7 @@ if (ENABLE_MPI) SOURCES diago_cg_float_test.cpp ../diago_cg.cpp ../diago_iter_assist.cpp ../diag_const_nums.cpp ../../source_basis/module_pw/test/test_tool.cpp ../../source_hamilt/operator.cpp - ../../source_pw/module_pwdft/operator_pw/operator_pw.cpp + ../../source_pw/module_pwdft/op_pw.cpp ) AddTest( TARGET MODULE_HSOLVER_dav @@ -38,7 +38,7 @@ if (ENABLE_MPI) SOURCES diago_david_test.cpp ../diago_david.cpp ../diago_iter_assist.cpp ../diag_const_nums.cpp ../../source_basis/module_pw/test/test_tool.cpp ../../source_hamilt/operator.cpp - ../../source_pw/module_pwdft/operator_pw/operator_pw.cpp + ../../source_pw/module_pwdft/op_pw.cpp ) AddTest( TARGET MODULE_HSOLVER_dav_float @@ -46,7 +46,7 @@ if (ENABLE_MPI) SOURCES diago_david_float_test.cpp ../diago_david.cpp ../diago_iter_assist.cpp ../diag_const_nums.cpp ../../source_basis/module_pw/test/test_tool.cpp ../../source_hamilt/operator.cpp - ../../source_pw/module_pwdft/operator_pw/operator_pw.cpp + ../../source_pw/module_pwdft/op_pw.cpp ) if(ENABLE_LCAO) AddTest( @@ -55,7 +55,7 @@ if (ENABLE_MPI) SOURCES diago_cg_float_test.cpp ../diago_cg.cpp ../diago_iter_assist.cpp ../diag_const_nums.cpp ../../source_basis/module_pw/test/test_tool.cpp ../../source_hamilt/operator.cpp - ../../source_pw/module_pwdft/operator_pw/operator_pw.cpp + ../../source_pw/module_pwdft/op_pw.cpp ) AddTest( TARGET MODULE_HSOLVER_dav_real @@ -63,7 +63,7 @@ if (ENABLE_MPI) SOURCES diago_david_real_test.cpp ../diago_david.cpp ../diago_iter_assist.cpp ../diag_const_nums.cpp ../../source_basis/module_pw/test/test_tool.cpp ../../source_hamilt/operator.cpp - ../../source_pw/module_pwdft/operator_pw/operator_pw.cpp + ../../source_pw/module_pwdft/op_pw.cpp ) endif() @@ -77,14 +77,14 @@ if (ENABLE_MPI) TARGET MODULE_HSOLVER_pw LIBS parameter ${math_libs} psi device base container SOURCES test_hsolver_pw.cpp ../hsolver_pw.cpp ../hsolver_lcaopw.cpp ../diago_bpcg.cpp ../diago_dav_subspace.cpp ../diag_const_nums.cpp ../diago_iter_assist.cpp ../para_linear_transform.cpp - ../../source_estate/elecstate_tools.cpp ../../source_estate/occupy.cpp + ../../source_estate/elecstate_tools.cpp ../../source_estate/occupy.cpp ../../source_base/module_fft/fft_bundle.cpp ../../source_base/module_fft/fft_cpu.cpp ) AddTest( TARGET MODULE_HSOLVER_sdft LIBS parameter ${math_libs} psi device base container SOURCES test_hsolver_sdft.cpp ../hsolver_pw_sdft.cpp ../hsolver_pw.cpp ../diago_bpcg.cpp ../diago_dav_subspace.cpp ../diag_const_nums.cpp ../diago_iter_assist.cpp ../para_linear_transform.cpp - ../../source_estate/elecstate_tools.cpp ../../source_estate/occupy.cpp + ../../source_estate/elecstate_tools.cpp ../../source_estate/occupy.cpp ../../source_base/module_fft/fft_bundle.cpp ../../source_base/module_fft/fft_cpu.cpp ) if(ENABLE_LCAO) @@ -92,13 +92,13 @@ if (ENABLE_MPI) AddTest( TARGET MODULE_HSOLVER_LCAO LIBS parameter ${math_libs} ELPA::ELPA base genelpa psi device - SOURCES diago_lcao_test.cpp ../diago_elpa.cpp ../diago_scalapack.cpp + SOURCES diago_lcao_test.cpp ../diago_elpa.cpp ../diago_scalapack.cpp ../diago_lapack.cpp ) else() AddTest( TARGET MODULE_HSOLVER_LCAO LIBS parameter ${math_libs} base psi device - SOURCES diago_lcao_test.cpp ../diago_scalapack.cpp + SOURCES diago_lcao_test.cpp ../diago_scalapack.cpp ../diago_lapack.cpp ) endif() @@ -113,19 +113,12 @@ if (ENABLE_MPI) if (USE_CUDA) AddTest( TARGET MODULE_HSOLVER_LCAO_cusolver - LIBS parameter ${math_libs} base psi device - SOURCES diago_lcao_cusolver_test.cpp ../diago_cusolver.cpp ../diago_scalapack.cpp - ../kernels/dngvd_op.cpp + LIBS parameter ${math_libs} base psi device + SOURCES diago_lcao_cusolver_test.cpp ../diago_cusolver.cpp ../diago_scalapack.cpp + ../kernels/hegvd_op.cpp ../kernels/cuda/diag_cusolver.cu ) - endif() -else() - if(ENABLE_LCAO) - AddTest( - TARGET MODULE_HSOLVER_Lapack - LIBS parameter ${math_libs} base psi device - SOURCES diago_lapack_test.cpp ../diago_lapack.cpp - ) + target_compile_definitions(MODULE_HSOLVER_LCAO_cusolver PRIVATE __CUDA) endif() endif() install(FILES H-KPoints-Si2.dat DESTINATION ${CMAKE_CURRENT_BINARY_DIR}) @@ -153,12 +146,19 @@ install(FILES diago_pexsi_parallel_test.sh DESTINATION ${CMAKE_CURRENT_BINARY_DI install(FILES parallel_k2d_test.sh DESTINATION ${CMAKE_CURRENT_BINARY_DIR}) - -AddTest( - TARGET MODULE_HSOLVER_diago_hs_parallel - LIBS parameter ${math_libs} ELPA::ELPA base device MPI::MPI_CXX genelpa psi - SOURCES test_diago_hs_para.cpp ../diag_hs_para.cpp ../diago_pxxxgvx.cpp ../diago_elpa.cpp ../diago_scalapack.cpp -) +if (USE_ELPA) + AddTest( + TARGET MODULE_HSOLVER_diago_hs_parallel + LIBS parameter ${math_libs} ELPA::ELPA base device MPI::MPI_CXX genelpa psi + SOURCES test_diago_hs_para.cpp ../diag_hs_para.cpp ../diago_pxxxgvx.cpp ../diago_elpa.cpp ../diago_scalapack.cpp + ) +else() + AddTest( + TARGET MODULE_HSOLVER_diago_hs_parallel + LIBS parameter ${math_libs} base device MPI::MPI_CXX psi + SOURCES test_diago_hs_para.cpp ../diag_hs_para.cpp ../diago_pxxxgvx.cpp ../diago_scalapack.cpp + ) +endif() AddTest( TARGET MODULE_HSOLVER_linear_trans diff --git a/source/source_hsolver/test/diago_bpcg_test.cpp b/source/source_hsolver/test/diago_bpcg_test.cpp index 93e1147ccf..962ce72315 100644 --- a/source/source_hsolver/test/diago_bpcg_test.cpp +++ b/source/source_hsolver/test/diago_bpcg_test.cpp @@ -99,7 +99,7 @@ class DiagoBPCGPrepare double *en = new double[npw]; int ik = 1; hamilt::Hamilt>* ha; - ha =new hamilt::HamiltPW>(nullptr, nullptr, nullptr, nullptr,nullptr); + ha =new hamilt::HamiltPW>(nullptr, nullptr, nullptr, nullptr, nullptr, nullptr); int* ngk = new int [1]; //psi::Psi> psi(ngk,ik,nband,npw); psi::Psi> psi; @@ -201,10 +201,11 @@ INSTANTIATE_TEST_SUITE_P(VerifyCG, DiagoBPCGTest, ::testing::Values( // nband, npw, sparsity, reorder, eps, maxiter, threshold - DiagoBPCGPrepare(10, 500, 0, true, 1e-5, 300, 5e-2), - DiagoBPCGPrepare(20, 500, 6, true, 1e-5, 300, 5e-2), - DiagoBPCGPrepare(20, 1000, 8, true, 1e-5, 300, 5e-2), - DiagoBPCGPrepare(40, 1000, 8, true, 1e-6, 300, 5e-2))); + DiagoBPCGPrepare(10, 500, 0, true, 1e-5, 300, 5e-2) + // DiagoBPCGPrepare(20, 500, 6, true, 1e-5, 300, 5e-2) + // DiagoBPCGPrepare(20, 1000, 8, true, 1e-5, 300, 5e-2), + // DiagoBPCGPrepare(40, 1000, 8, true, 1e-6, 300, 5e-2) + )); //DiagoBPCGPrepare(40, 2000, 8, true, 1e-5, 500, 1e-2))); // the last one is passed but time-consumming. @@ -251,7 +252,7 @@ TEST(DiagoBPCGTest, readH) // read Hamilt matrix from file data-H std::vector> hm; std::ifstream ifs; - std::string filename = "H-KPoints-Si64.dat"; + std::string filename = "H-KPoints-Si2.dat"; ifs.open(filename); // open file and check status if (!ifs.is_open()) diff --git a/source/source_hsolver/test/diago_cg_float_test.cpp b/source/source_hsolver/test/diago_cg_float_test.cpp index 60d9a34313..32514c92e3 100644 --- a/source/source_hsolver/test/diago_cg_float_test.cpp +++ b/source/source_hsolver/test/diago_cg_float_test.cpp @@ -108,7 +108,7 @@ class DiagoCGPrepare float *en = new float[npw]; int ik = 1; hamilt::Hamilt>* ha; - ha =new hamilt::HamiltPW>(nullptr, nullptr, nullptr, nullptr,nullptr); + ha =new hamilt::HamiltPW>(nullptr, nullptr, nullptr, nullptr, nullptr, nullptr); psi::Psi> psi; psi.resize(ik,nband,npw); //psi.fix_k(0); @@ -142,7 +142,19 @@ class DiagoCGPrepare // New interface of cg method /**************************************************************/ // warp the subspace_func into a lambda function - auto subspace_func = [ha](const ct::Tensor& psi_in, ct::Tensor& psi_out) { /*do nothing*/ }; + auto subspace_func = [ha](std::complex* psi_in, + std::complex* psi_out, + const int ld_psi, + const int nband, + const bool S_orth) { + auto psi_in_wrapper = psi::Psi>(psi_in, 1, nband, ld_psi, true); + auto psi_out_wrapper = psi::Psi>(psi_out, 1, nband, ld_psi, true); + std::vector eigen(nband, 0.0f); + hsolver::DiagoIterAssist>::diag_subspace(ha, + psi_in_wrapper, + psi_out_wrapper, + eigen.data()); + }; hsolver::DiagoCG> cg( PARAM.input.basis_type, PARAM.input.calculation, @@ -156,46 +168,33 @@ class DiagoCGPrepare float start, end; start = MPI_Wtime(); - auto hpsi_func = [ha](const ct::Tensor& psi_in, ct::Tensor& hpsi_out) { - const auto ndim = psi_in.shape().ndim(); - REQUIRES_OK(ndim <= 2, "dims of psi_in should be less than or equal to 2"); - auto psi_wrapper = psi::Psi>( - psi_in.data>(), 1, - ndim == 1 ? 1 : psi_in.shape().dim_size(0), - ndim == 1 ? psi_in.NumElements() : psi_in.shape().dim_size(1), true); - psi::Range all_bands_range(true, psi_wrapper.get_current_k(), 0, psi_wrapper.get_nbands() - 1); + auto hpsi_func = [ha](std::complex* psi_in, + std::complex* hpsi_out, + const int ld_psi, + const int nvec) { + auto psi_wrapper = psi::Psi>(psi_in, 1, nvec, ld_psi, true); + psi::Range all_bands_range(true, 0, 0, nvec - 1); using hpsi_info = typename hamilt::Operator>::hpsi_info; - hpsi_info info(&psi_wrapper, all_bands_range, hpsi_out.data>()); + hpsi_info info(&psi_wrapper, all_bands_range, hpsi_out); ha->ops->hPsi(info); }; - auto spsi_func = [ha](const ct::Tensor& psi_in, ct::Tensor& spsi_out) { - const auto ndim = psi_in.shape().ndim(); - REQUIRES_OK(ndim <= 2, "dims of psi_in should be less than or equal to 2"); - ha->sPsi(psi_in.data>(), spsi_out.data>(), - ndim == 1 ? psi_in.NumElements() : psi_in.shape().dim_size(1), - ndim == 1 ? psi_in.NumElements() : psi_in.shape().dim_size(1), - ndim == 1 ? 1 : psi_in.shape().dim_size(0)); + auto spsi_func = [ha](std::complex* psi_in, + std::complex* spsi_out, + const int ld_psi, + const int nvec) { + ha->sPsi(psi_in, spsi_out, ld_psi, ld_psi, nvec); }; - auto psi_tensor = ct::TensorMap( - psi_local.get_pointer(), - ct::DataType::DT_COMPLEX, - ct::DeviceType::CpuDevice, - ct::TensorShape({psi_local.get_nbands(), psi_local.get_nbasis()})).slice({0, 0}, {psi_local.get_nbands(), psi_local.get_current_ngk()}); - auto eigen_tensor = ct::TensorMap( - en, - ct::DataType::DT_FLOAT, - ct::DeviceType::CpuDevice, - ct::TensorShape({psi_local.get_nbands()})); - auto prec_tensor = ct::TensorMap( - precondition_local, - ct::DataType::DT_FLOAT, - ct::DeviceType::CpuDevice, - ct::TensorShape({static_cast(psi_local.get_current_ngk())})).slice({0}, {psi_local.get_current_ngk()}); std::vector ethr_band(nband, 1e-5); - cg.diag(hpsi_func, spsi_func, psi_tensor, eigen_tensor, ethr_band, prec_tensor); - // TODO: Double check tensormap's potential problem - ct::TensorMap(psi_local.get_pointer(), psi_tensor, {psi_local.get_nbands(), psi_local.get_nbasis()}).sync(psi_tensor); + cg.diag(hpsi_func, + spsi_func, + psi_local.get_nbasis(), + psi_local.get_nbands(), + psi_local.get_current_ngk(), + psi_local.get_pointer(), + en, + ethr_band, + precondition_local); /**************************************************************/ end = MPI_Wtime(); @@ -239,10 +238,11 @@ INSTANTIATE_TEST_SUITE_P(VerifyCG, DiagoCGFloatTest, ::testing::Values( // nband, npw, sparsity, reorder, eps, maxiter, threshold - DiagoCGPrepare(10, 200, 0, true, 1e-6, 300, 1e-0), - DiagoCGPrepare(10, 200, 6, true, 1e-6, 300, 1e-0), - DiagoCGPrepare(10, 400, 8, true, 1e-6, 300, 1e-0), - DiagoCGPrepare(10, 600, 8, true, 1e-6, 300, 1e-0))); + DiagoCGPrepare(10, 200, 0, true, 1e-6, 300, 1e-0) + // DiagoCGPrepare(10, 200, 6, true, 1e-6, 300, 1e-0) + // DiagoCGPrepare(10, 400, 8, true, 1e-6, 300, 1e-0), + // DiagoCGPrepare(10, 600, 8, true, 1e-6, 300, 1e-0) + )); //DiagoCGPrepare(40, 2000, 8, true, 1e-5, 500, 1e-2))); // the last one is passed but time-consumming. @@ -312,7 +312,7 @@ TEST(DiagoCGFloatTest, readH) // read Hamilt matrix from file data-H std::vector> hm; std::ifstream ifs; - std::string filename = "H-KPoints-Si64.dat"; + std::string filename = "H-KPoints-Si2.dat"; // open file and check status ifs.open(filename); if (!ifs.is_open()) diff --git a/source/source_hsolver/test/diago_cg_real_test.cpp b/source/source_hsolver/test/diago_cg_real_test.cpp index 48e0793fa2..eacb1341eb 100644 --- a/source/source_hsolver/test/diago_cg_real_test.cpp +++ b/source/source_hsolver/test/diago_cg_real_test.cpp @@ -147,7 +147,16 @@ class DiagoCGPrepare // New interface of cg method /**************************************************************/ // warp the subspace_func into a lambda function - auto subspace_func = [ha](const ct::Tensor& psi_in, ct::Tensor& psi_out) { /*do nothing*/ }; + auto subspace_func = [ha](double* psi_in, + double* psi_out, + const int ld_psi, + const int nband, + const bool S_orth) { + auto psi_in_wrapper = psi::Psi(psi_in, 1, nband, ld_psi, true); + auto psi_out_wrapper = psi::Psi(psi_out, 1, nband, ld_psi, true); + std::vector eigen(nband, 0.0); + hsolver::DiagoIterAssist::diag_subspace(ha, psi_in_wrapper, psi_out_wrapper, eigen.data()); + }; hsolver::DiagoCG cg( PARAM.input.basis_type, PARAM.input.calculation, @@ -161,46 +170,33 @@ class DiagoCGPrepare double start, end; start = MPI_Wtime(); - auto hpsi_func = [ha](const ct::Tensor& psi_in, ct::Tensor& hpsi_out) { - const auto ndim = psi_in.shape().ndim(); - REQUIRES_OK(ndim <= 2, "dims of psi_in should be less than or equal to 2"); - auto psi_wrapper = psi::Psi( - psi_in.data(), 1, - ndim == 1 ? 1 : psi_in.shape().dim_size(0), - ndim == 1 ? psi_in.NumElements() : psi_in.shape().dim_size(1), true); - psi::Range all_bands_range(true, psi_wrapper.get_current_k(), 0, psi_wrapper.get_nbands() - 1); + auto hpsi_func = [ha](double* psi_in, + double* hpsi_out, + const int ld_psi, + const int nvec) { + auto psi_wrapper = psi::Psi(psi_in, 1, nvec, ld_psi, true); + psi::Range all_bands_range(true, 0, 0, nvec - 1); using hpsi_info = typename hamilt::Operator::hpsi_info; - hpsi_info info(&psi_wrapper, all_bands_range, hpsi_out.data()); + hpsi_info info(&psi_wrapper, all_bands_range, hpsi_out); ha->ops->hPsi(info); }; - auto spsi_func = [ha](const ct::Tensor& psi_in, ct::Tensor& spsi_out) { - const auto ndim = psi_in.shape().ndim(); - REQUIRES_OK(ndim <= 2, "dims of psi_in should be less than or equal to 2"); - ha->sPsi(psi_in.data(), spsi_out.data(), - ndim == 1 ? psi_in.NumElements() : psi_in.shape().dim_size(1), - ndim == 1 ? psi_in.NumElements() : psi_in.shape().dim_size(1), - ndim == 1 ? 1 : psi_in.shape().dim_size(0)); + auto spsi_func = [ha](double* psi_in, + double* spsi_out, + const int ld_psi, + const int nvec) { + ha->sPsi(psi_in, spsi_out, ld_psi, ld_psi, nvec); }; - auto psi_tensor = ct::TensorMap( - psi_local.get_pointer(), - ct::DataType::DT_DOUBLE, - ct::DeviceType::CpuDevice, - ct::TensorShape({psi_local.get_nbands(), psi_local.get_nbasis()})).slice({0, 0}, {psi_local.get_nbands(), psi_local.get_current_ngk()}); - auto eigen_tensor = ct::TensorMap( - en, - ct::DataType::DT_DOUBLE, - ct::DeviceType::CpuDevice, - ct::TensorShape({psi_local.get_nbands()})); - auto prec_tensor = ct::TensorMap( - precondition_local, - ct::DataType::DT_DOUBLE, - ct::DeviceType::CpuDevice, - ct::TensorShape({static_cast(psi_local.get_current_ngk())})).slice({0}, {psi_local.get_current_ngk()}); std::vector ethr_band(nband, 1e-5); - cg.diag(hpsi_func, spsi_func, psi_tensor, eigen_tensor, ethr_band, prec_tensor); - // TODO: Double check tensormap's potential problem - ct::TensorMap(psi_local.get_pointer(), psi_tensor, {psi_local.get_nbands(), psi_local.get_nbasis()}).sync(psi_tensor); + cg.diag(hpsi_func, + spsi_func, + psi_local.get_nbasis(), + psi_local.get_nbands(), + psi_local.get_current_ngk(), + psi_local.get_pointer(), + en, + ethr_band, + precondition_local); /**************************************************************/ end = MPI_Wtime(); @@ -240,10 +236,11 @@ INSTANTIATE_TEST_SUITE_P(VerifyCG, DiagoCGTest, ::testing::Values( // nband, npw, sparsity, reorder, eps, maxiter, threshold - DiagoCGPrepare(10, 500, 0, true, 1e-5, 300, 1e-3), - DiagoCGPrepare(20, 500, 6, true, 1e-5, 300, 1e-3), - DiagoCGPrepare(20, 1000, 8, true, 1e-5, 300, 1e-3), - DiagoCGPrepare(40, 1000, 8, true, 1e-6, 300, 1e-3))); + DiagoCGPrepare(10, 500, 0, true, 1e-5, 300, 1e-3) + // DiagoCGPrepare(20, 500, 6, true, 1e-5, 300, 1e-3) + // DiagoCGPrepare(20, 1000, 8, true, 1e-5, 300, 1e-3), + // DiagoCGPrepare(40, 1000, 8, true, 1e-6, 300, 1e-3) + )); //DiagoCGPrepare(40, 2000, 8, true, 1e-5, 500, 1e-2))); // the last one is passed but time-consumming. @@ -289,7 +286,7 @@ TEST(DiagoCGTest, readH) // read Hamilt matrix from file data-H std::vector hm; std::ifstream ifs; - std::string filename = "H-GammaOnly-Si64.dat"; + std::string filename = "H-GammaOnly-Si2.dat"; ifs.open(filename); // open file and check status if (!ifs.is_open()) diff --git a/source/source_hsolver/test/diago_cg_test.cpp b/source/source_hsolver/test/diago_cg_test.cpp index 20b115d058..bc373a4d80 100644 --- a/source/source_hsolver/test/diago_cg_test.cpp +++ b/source/source_hsolver/test/diago_cg_test.cpp @@ -104,7 +104,7 @@ class DiagoCGPrepare double *en = new double[npw]; int ik = 1; hamilt::Hamilt>* ha; - ha =new hamilt::HamiltPW>(nullptr, nullptr, nullptr, nullptr,nullptr); + ha =new hamilt::HamiltPW>(nullptr, nullptr, nullptr, nullptr, nullptr, nullptr); psi::Psi> psi; psi.resize(ik,nband,npw); //psi.fix_k(0); @@ -136,7 +136,19 @@ class DiagoCGPrepare // New interface of cg method /**************************************************************/ // warp the subspace_func into a lambda function - auto subspace_func = [ha](const ct::Tensor& psi_in, ct::Tensor& psi_out) { /*do nothing*/ }; + auto subspace_func = [ha](std::complex* psi_in, + std::complex* psi_out, + const int ld_psi, + const int nband, + const bool S_orth) { + auto psi_in_wrapper = psi::Psi>(psi_in, 1, nband, ld_psi, true); + auto psi_out_wrapper = psi::Psi>(psi_out, 1, nband, ld_psi, true); + std::vector eigen(nband, 0.0); + hsolver::DiagoIterAssist>::diag_subspace(ha, + psi_in_wrapper, + psi_out_wrapper, + eigen.data()); + }; hsolver::DiagoCG> cg( PARAM.input.basis_type, PARAM.input.calculation, @@ -150,46 +162,33 @@ class DiagoCGPrepare double start, end; start = MPI_Wtime(); - auto hpsi_func = [ha](const ct::Tensor& psi_in, ct::Tensor& hpsi_out) { - const auto ndim = psi_in.shape().ndim(); - REQUIRES_OK(ndim <= 2, "dims of psi_in should be less than or equal to 2"); - auto psi_wrapper = psi::Psi>( - psi_in.data>(), 1, - ndim == 1 ? 1 : psi_in.shape().dim_size(0), - ndim == 1 ? psi_in.NumElements() : psi_in.shape().dim_size(1), true); - psi::Range all_bands_range(true, psi_wrapper.get_current_k(), 0, psi_wrapper.get_nbands() - 1); + auto hpsi_func = [ha](std::complex* psi_in, + std::complex* hpsi_out, + const int ld_psi, + const int nvec) { + auto psi_wrapper = psi::Psi>(psi_in, 1, nvec, ld_psi, true); + psi::Range all_bands_range(true, 0, 0, nvec - 1); using hpsi_info = typename hamilt::Operator>::hpsi_info; - hpsi_info info(&psi_wrapper, all_bands_range, hpsi_out.data>()); + hpsi_info info(&psi_wrapper, all_bands_range, hpsi_out); ha->ops->hPsi(info); }; - auto spsi_func = [ha](const ct::Tensor& psi_in, ct::Tensor& spsi_out) { - const auto ndim = psi_in.shape().ndim(); - REQUIRES_OK(ndim <= 2, "dims of psi_in should be less than or equal to 2"); - ha->sPsi(psi_in.data>(), spsi_out.data>(), - ndim == 1 ? psi_in.NumElements() : psi_in.shape().dim_size(1), - ndim == 1 ? psi_in.NumElements() : psi_in.shape().dim_size(1), - ndim == 1 ? 1 : psi_in.shape().dim_size(0)); + auto spsi_func = [ha](std::complex* psi_in, + std::complex* spsi_out, + const int ld_psi, + const int nvec) { + ha->sPsi(psi_in, spsi_out, ld_psi, ld_psi, nvec); }; - auto psi_tensor = ct::TensorMap( - psi_local.get_pointer(), - ct::DataType::DT_COMPLEX_DOUBLE, - ct::DeviceType::CpuDevice, - ct::TensorShape({psi_local.get_nbands(), psi_local.get_nbasis()})).slice({0, 0}, {psi_local.get_nbands(), psi_local.get_current_ngk()}); - auto eigen_tensor = ct::TensorMap( - en, - ct::DataType::DT_DOUBLE, - ct::DeviceType::CpuDevice, - ct::TensorShape({psi_local.get_nbands()})); - auto prec_tensor = ct::TensorMap( - precondition_local, - ct::DataType::DT_DOUBLE, - ct::DeviceType::CpuDevice, - ct::TensorShape({static_cast(psi_local.get_current_ngk())})).slice({0}, {psi_local.get_current_ngk()}); std::vector ethr_band(nband, 1e-5); - cg.diag(hpsi_func, spsi_func, psi_tensor, eigen_tensor, ethr_band, prec_tensor); - // TODO: Double check tensormap's potential problem - ct::TensorMap(psi_local.get_pointer(), psi_tensor, {psi_local.get_nbands(), psi_local.get_nbasis()}).sync(psi_tensor); + cg.diag(hpsi_func, + spsi_func, + psi_local.get_nbasis(), + psi_local.get_nbands(), + psi_local.get_current_ngk(), + psi_local.get_pointer(), + en, + ethr_band, + precondition_local); /**************************************************************/ // cg.diag(ha,psi_local,en); @@ -234,10 +233,11 @@ INSTANTIATE_TEST_SUITE_P(VerifyCG, DiagoCGTest, ::testing::Values( // nband, npw, sparsity, reorder, eps, maxiter, threshold - DiagoCGPrepare(10, 500, 0, true, 1e-5, 300, 1e-3), - DiagoCGPrepare(20, 500, 6, true, 1e-5, 300, 1e-3), - DiagoCGPrepare(20, 1000, 8, true, 1e-5, 300, 1e-3), - DiagoCGPrepare(40, 1000, 8, true, 1e-6, 300, 1e-3))); + DiagoCGPrepare(10, 500, 0, true, 1e-5, 300, 1e-3) + // DiagoCGPrepare(20, 500, 6, true, 1e-5, 300, 1e-3) + // DiagoCGPrepare(20, 1000, 8, true, 1e-5, 300, 1e-3), + // DiagoCGPrepare(40, 1000, 8, true, 1e-6, 300, 1e-3) + )); //DiagoCGPrepare(40, 2000, 8, true, 1e-5, 500, 1e-2))); // the last one is passed but time-consumming. @@ -307,7 +307,7 @@ TEST(DiagoCGTest, readH) // read Hamilt matrix from file data-H std::vector> hm; std::ifstream ifs; - std::string filename = "H-KPoints-Si64.dat"; + std::string filename = "H-KPoints-Si2.dat"; ifs.open(filename); // open file and check status if (!ifs.is_open()) diff --git a/source/source_hsolver/test/diago_david_float_test.cpp b/source/source_hsolver/test/diago_david_float_test.cpp index f907f939e4..cba4186617 100644 --- a/source/source_hsolver/test/diago_david_float_test.cpp +++ b/source/source_hsolver/test/diago_david_float_test.cpp @@ -82,7 +82,7 @@ class DiagoDavPrepare //do Diago_David::diag() float* en = new float[npw]; hamilt::Hamilt> *phm; - phm = new hamilt::HamiltPW>(nullptr, nullptr, nullptr, nullptr,nullptr); + phm = new hamilt::HamiltPW>(nullptr, nullptr, nullptr, nullptr, nullptr, nullptr); #ifdef __MPI const hsolver::diag_comm_info comm_info = {MPI_COMM_WORLD, mypnum, nprocs}; @@ -197,7 +197,7 @@ TEST(DiagoDavRealSystemTest,dataH) { std::vector> hmatrix; std::ifstream ifs; - std::string filename = "H-KPoints-Si64.dat"; + std::string filename = "H-KPoints-Si2.dat"; ifs.open(filename); // open file and check status if (!ifs.is_open()) diff --git a/source/source_hsolver/test/diago_david_real_test.cpp b/source/source_hsolver/test/diago_david_real_test.cpp index b8670bc74d..e0f887a573 100644 --- a/source/source_hsolver/test/diago_david_real_test.cpp +++ b/source/source_hsolver/test/diago_david_real_test.cpp @@ -81,7 +81,7 @@ class DiagoDavPrepare //do Diago_David::diag() double* en = new double[npw]; hamilt::Hamilt* phm; - phm = new hamilt::HamiltPW(nullptr, nullptr, nullptr, nullptr,nullptr); + phm = new hamilt::HamiltPW(nullptr, nullptr, nullptr, nullptr, nullptr, nullptr); #ifdef __MPI const hsolver::diag_comm_info comm_info = {MPI_COMM_WORLD, mypnum, nprocs}; @@ -195,7 +195,7 @@ TEST(DiagoDavRealSystemTest, dataH) { std::vector hmatrix; std::ifstream ifs; - std::string filename = "H-GammaOnly-Si64.dat"; + std::string filename = "H-GammaOnly-Si2.dat"; ifs.open(filename); // open file and check status if (!ifs.is_open()) diff --git a/source/source_hsolver/test/diago_david_test.cpp b/source/source_hsolver/test/diago_david_test.cpp index 643eeed4bf..c6472ada4f 100644 --- a/source/source_hsolver/test/diago_david_test.cpp +++ b/source/source_hsolver/test/diago_david_test.cpp @@ -77,14 +77,16 @@ class DiagoDavPrepare { //calculate eigenvalues by LAPACK; double* e_lapack = new double[npw]; - double* ev; - if(mypnum == 0) { lapackEigen(npw, DIAGOTEST::hmatrix, e_lapack,DETAILINFO); -} + double* ev = nullptr; + if(mypnum == 0) + { + lapackEigen(npw, DIAGOTEST::hmatrix, e_lapack,DETAILINFO); + } //do Diago_David::diag() double* en = new double[npw]; hamilt::Hamilt> *phm; - phm = new hamilt::HamiltPW>(nullptr, nullptr, nullptr, nullptr,nullptr); + phm = new hamilt::HamiltPW>(nullptr, nullptr, nullptr, nullptr, nullptr, nullptr); #ifdef __MPI const hsolver::diag_comm_info comm_info = {MPI_COMM_WORLD, mypnum, nprocs}; @@ -199,7 +201,7 @@ TEST(DiagoDavRealSystemTest, dataH) { std::vector> hmatrix; std::ifstream ifs; - std::string filename = "H-KPoints-Si64.dat"; + std::string filename = "H-KPoints-Si2.dat"; ifs.open(filename); // open file and check status if (!ifs.is_open()) diff --git a/source/source_hsolver/test/diago_lcao_cusolver_test.cpp b/source/source_hsolver/test/diago_lcao_cusolver_test.cpp index 1137bf0107..9f340419b7 100644 --- a/source/source_hsolver/test/diago_lcao_cusolver_test.cpp +++ b/source/source_hsolver/test/diago_lcao_cusolver_test.cpp @@ -232,7 +232,9 @@ class DiagoPrepare else if (ks_solver == "cusolver") { hsolver::DiagoCusolver dh; - dh.diag(&hmtest, psi, e_solver.data()); + hamilt::MatrixBlock h_mat, s_mat; + hmtest.matrix(h_mat, s_mat); + dh.diag(h_mat, s_mat, psi, e_solver.data()); } #endif // dh->diag(&hmtest, psi, e_solver.data()); diff --git a/source/source_hsolver/test/diago_lcao_test.cpp b/source/source_hsolver/test/diago_lcao_test.cpp index bbfaad4a1e..d0ed0fdae6 100644 --- a/source/source_hsolver/test/diago_lcao_test.cpp +++ b/source/source_hsolver/test/diago_lcao_test.cpp @@ -1,4 +1,5 @@ #include "source_hsolver/diago_scalapack.h" +#include "source_hsolver/diago_lapack.h" #include "source_hsolver/test/diago_elpa_utils.h" #define private public #include "source_io/module_parameter/parameter.h" @@ -74,6 +75,8 @@ class DiagoPrepare if (ks_solver == "scalapack_gvx") ; // dh = new hsolver::DiagoScalapack; + else if (ks_solver == "lapack") + ; #ifdef __ELPA else if (ks_solver == "genelpa") ; @@ -226,6 +229,11 @@ class DiagoPrepare hsolver::DiagoScalapack dh; dh.diag(&hmtest, psi, e_solver.data()); } + else if (ks_solver == "lapack") + { + hsolver::DiagoLapack la; + la.diag(&hmtest, psi, e_solver.data()); + } #ifdef __ELPA else if (ks_solver == "genelpa") { @@ -294,6 +302,15 @@ TEST_P(DiagoGammaOnlyTest, LCAO) std::stringstream out_info; DiagoPrepare dp = GetParam(); ASSERT_TRUE(dp.produce_HS()); + + // Skip lapack tests in multi-process environment + // LAPACK is a serial solver and cannot work with distributed matrices + if (dp.ks_solver == "lapack" && dp.dsize > 1) + { + GTEST_SKIP() << "Skipping lapack test with " << dp.dsize + << " MPI processes (lapack only supports single process)"; + } + dp.diago(); if (dp.myrank == 0) @@ -316,7 +333,10 @@ INSTANTIATE_TEST_SUITE_P( DiagoPrepare(0, 0, 32, 0, "genelpa", "H-GammaOnly-Si64.dat", "S-GammaOnly-Si64.dat"), #endif DiagoPrepare(0, 0, 1, 0, "scalapack_gvx", "H-GammaOnly-Si2.dat", "S-GammaOnly-Si2.dat"), - DiagoPrepare(0, 0, 32, 0, "scalapack_gvx", "H-GammaOnly-Si64.dat", "S-GammaOnly-Si64.dat"))); + // DiagoPrepare(0, 0, 32, 0, "scalapack_gvx", "H-GammaOnly-Si64.dat", "S-GammaOnly-Si64.dat"), + DiagoPrepare(0, 0, 1, 0, "lapack", "H-GammaOnly-Si2.dat", "S-GammaOnly-Si2.dat") + // DiagoPrepare(0, 0, 32, 0, "lapack", "H-GammaOnly-Si64.dat", "S-GammaOnly-Si64.dat") + )); class DiagoKPointsTest : public ::testing::TestWithParam>> { @@ -326,6 +346,15 @@ TEST_P(DiagoKPointsTest, LCAO) std::stringstream out_info; DiagoPrepare> dp = GetParam(); ASSERT_TRUE(dp.produce_HS()); + + // Skip lapack tests in multi-process environment + // LAPACK is a serial solver and cannot work with distributed matrices + if (dp.ks_solver == "lapack" && dp.dsize > 1) + { + GTEST_SKIP() << "Skipping lapack test with " << dp.dsize + << " MPI processes (lapack only supports single process)"; + } + dp.diago(); if (dp.myrank == 0) @@ -368,9 +397,6 @@ int main(int argc, char** argv) std::cout << "ERROR:some tests are not passed" << std::endl; return result; } - else - { - MPI_Finalize(); - return 0; - } + MPI_Finalize(); + return 0; } diff --git a/source/source_hsolver/test/diago_mock.h b/source/source_hsolver/test/diago_mock.h index ea2c2affaa..75cced8409 100644 --- a/source/source_hsolver/test/diago_mock.h +++ b/source/source_hsolver/test/diago_mock.h @@ -443,7 +443,7 @@ void hamilt::HamiltPW, base_device::DEVICE_CPU>::sPsi(const } //Mock function h_psi -#include "source_pw/module_pwdft/operator_pw/operator_pw.h" +#include "source_pw/module_pwdft/op_pw.h" template class OperatorMock : public hamilt::Operator { @@ -572,7 +572,13 @@ template<> void hamilt::HamiltPW::updateHk(const int ik) return; } -template<> hamilt::HamiltPW::HamiltPW(elecstate::Potential* pot_in, ModulePW::PW_Basis_K* wfc_basis, K_Vectors* pkv, pseudopot_cell_vnl*,const UnitCell*) +template<> hamilt::HamiltPW::HamiltPW( + elecstate::Potential* pot_in, + ModulePW::PW_Basis_K* wfc_basis, + K_Vectors* pkv, + pseudopot_cell_vnl* ppcell, + Plus_U* p_dftu, // mohan add 20251108 + const UnitCell* ucell) { this->ops = new OperatorMock; } @@ -587,7 +593,13 @@ template<> void hamilt::HamiltPW>::updateHk(const int ik) return; } -template<> hamilt::HamiltPW>::HamiltPW(elecstate::Potential* pot_in, ModulePW::PW_Basis_K* wfc_basis, K_Vectors* pkv, pseudopot_cell_vnl*,const UnitCell*) +template<> hamilt::HamiltPW>::HamiltPW( + elecstate::Potential* pot_in, + ModulePW::PW_Basis_K* wfc_basis, + K_Vectors* pkv, + pseudopot_cell_vnl* ppcell, + Plus_U* p_dftu, // mohan add 20251108 + const UnitCell* ucell) { this->ops = new OperatorMock>; } @@ -602,7 +614,13 @@ template<> void hamilt::HamiltPW>::updateHk(const int ik) return; } -template<> hamilt::HamiltPW>::HamiltPW(elecstate::Potential* pot_in, ModulePW::PW_Basis_K* wfc_basis, K_Vectors* pkv, pseudopot_cell_vnl*,const UnitCell*) +template<> hamilt::HamiltPW>::HamiltPW( + elecstate::Potential* pot_in, + ModulePW::PW_Basis_K* wfc_basis, + K_Vectors* pkv, + pseudopot_cell_vnl* ppcell, + Plus_U* p_dftu, // mohan add 20251108 + const UnitCell* ucell) { this->ops = new OperatorMock>; } diff --git a/source/source_hsolver/test/hsolver_pw_sup.h b/source/source_hsolver/test/hsolver_pw_sup.h index 6248d2623a..5f5108c627 100644 --- a/source/source_hsolver/test/hsolver_pw_sup.h +++ b/source/source_hsolver/test/hsolver_pw_sup.h @@ -4,7 +4,6 @@ namespace ModulePW { PW_Basis::PW_Basis(){}; PW_Basis::~PW_Basis(){}; -FFT_Bundle::~FFT_Bundle(){}; void PW_Basis::initgrids( const double lat0_in, // unit length (unit in bohr) const ModuleBase::Matrix3 @@ -69,7 +68,7 @@ template DiagoCG::DiagoCG(const std::string& basis_type, const std::string& calculation, const bool& need_subspace, - const Func& subspace_func, + const SubspaceFunc& subspace_func, const Real& pw_diag_thr, const int& pw_diag_nmax, const int& nproc_in_pool) { @@ -93,27 +92,27 @@ DiagoCG::~DiagoCG() { } template -void DiagoCG::diag(const Func& hpsi_func, - const Func& spsi_func, - ct::Tensor& psi, - ct::Tensor& eigen, - const std::vector& ethr_band, - const ct::Tensor& prec) { - auto n_bands = psi.shape().dim_size(0); - auto n_basis = psi.shape().dim_size(1); - auto psi_pack = psi.accessor(); - auto eigen_pack = eigen.accessor(); +double DiagoCG::diag(const HPsiFunc& hpsi_func, + const SPsiFunc& spsi_func, + const int ld_psi, + const int nband, + const int dim, + T* psi_in, + Real* eigenvalue_in, + const std::vector& ethr_band, + const Real* prec) { // do something - for (int ib = 0; ib < n_bands; ib++) { - eigen_pack[ib] = 0.0; - for (int ig = 0; ig < n_basis; ig++) { - psi_pack[ib][ig] += T(2.0, 0.0); - eigen_pack[ib] += psi_pack[ib][ig].real(); + for (int ib = 0; ib < nband; ib++) { + eigenvalue_in[ib] = 0.0; + T* psi_band = psi_in + static_cast(ib) * static_cast(ld_psi); + for (int ig = 0; ig < ld_psi; ig++) { + psi_band[ig] += T(2.0, 0.0); + eigenvalue_in[ib] += psi_band[ig].real(); } - eigen_pack[ib] /= n_basis; + eigenvalue_in[ib] /= ld_psi; } DiagoIterAssist::avg_iter += 1.0; - return; + return avg_iter_; } template class DiagoCG, base_device::DEVICE_CPU>; @@ -127,7 +126,7 @@ DiagoDavid::DiagoDavid(const Real* precondition_in, const bool use_paw_in, const diag_comm_info& diag_comm_in) : nband(nband_in), dim(dim_in), nbase_x(david_ndim_in * nband_in), david_ndim(david_ndim_in), use_paw(use_paw_in), diag_comm(diag_comm_in) { - this->device = base_device::get_device_type(this->ctx); + this->device = base_device::get_device_type(this->ctx); this->precondition = precondition_in; test_david = 2; diff --git a/source/source_hsolver/test/hsolver_supplementary_mock.h b/source/source_hsolver/test/hsolver_supplementary_mock.h index b6beb9cb2d..87155ecd5a 100644 --- a/source/source_hsolver/test/hsolver_supplementary_mock.h +++ b/source/source_hsolver/test/hsolver_supplementary_mock.h @@ -19,8 +19,7 @@ void ElecState::init_nelec_spin() -void ElecState::init_scf(const int istep, - const UnitCell& ucell, +void ElecState::init_scf(const UnitCell& ucell, const Parallel_Grid& pgrid, const ModuleBase::ComplexMatrix& strucfac, const bool*, @@ -33,7 +32,6 @@ void ElecState::init_scf(const int istep, void ElecState::init_ks(Charge* chg_in, // pointer for class Charge const K_Vectors* klist_in, int nk_in, - ModulePW::PW_Basis* rhopw_in, const ModulePW::PW_Basis_Big* bigpw_in) { return; @@ -45,7 +43,6 @@ ElecStatePW::ElecStatePW(ModulePW::PW_Basis_K* wfc_basis_in, K_Vectors* pkv_in, UnitCell* ucell_in, pseudopot_cell_vnl* ppcell_in, - ModulePW::PW_Basis* rhodpw_in, ModulePW::PW_Basis* rhopw_in, ModulePW::PW_Basis_Big* bigpw_in) : basis(wfc_basis_in) diff --git a/source/source_hsolver/test/test_diago_assist.cpp b/source/source_hsolver/test/test_diago_assist.cpp index 26e6abb454..6398ab47af 100644 --- a/source/source_hsolver/test/test_diago_assist.cpp +++ b/source/source_hsolver/test/test_diago_assist.cpp @@ -27,14 +27,14 @@ class TestDiagoIterAssist : public ::testing::Test std::ofstream temp_ofs; }; -TEST_F(TestDiagoIterAssist, diagH_subspace) +TEST_F(TestDiagoIterAssist, diag_subspace) { - dia_f::diagH_subspace(); - dia_d::diagH_subspace(); + dia_f::diag_subspace(); + dia_d::diag_subspace(); EXPECT_EQ(true); } -TEST_F(TestDiagoIterAssist, diagH_LAPACK) +TEST_F(TestDiagoIterAssist, diag_hegvd) { EXPECT_EQ(true); } diff --git a/source/source_hsolver/test/test_diago_hs_para.cpp b/source/source_hsolver/test/test_diago_hs_para.cpp index 425fd3b238..a32d329fbd 100644 --- a/source/source_hsolver/test/test_diago_hs_para.cpp +++ b/source/source_hsolver/test/test_diago_hs_para.cpp @@ -10,7 +10,7 @@ #include #include "../diag_hs_para.h" -#include "source_hsolver/kernels/dngvd_op.h" +#include "source_hsolver/kernels/hegvd_op.h" template typename std::enable_if::value || std::is_same::value>::type @@ -160,7 +160,9 @@ void test_performance(int lda, int nb, int nbands, MPI_Comm comm,int case_numb, MPI_Comm_size(comm, &nproc); std::vector h_mat, s_mat, wfc, h_psi, s_psi; +#ifdef __ELPA std::vector::type> ekb_elpa(lda); +#endif std::vector::type> ekb_scalap(lda); std::vector::type> ekb_lapack(lda); @@ -176,32 +178,36 @@ void test_performance(int lda, int nb, int nbands, MPI_Comm comm,int case_numb, } // store all the times in a vector +#ifdef __ELPA std::vector time_elpa(case_numb, 0); +#endif std::vector time_scalap(case_numb, 0); std::vector time_lapack(case_numb, 0); if (my_rank == 0) { std::cout << "Random matrix "; } - for (int randomi = 0; randomi < case_numb; ++randomi) + for (int randomi = 0; randomi < case_numb; ++randomi) { - + if (my_rank == 0) { std::cout << randomi << " "; generate_random_hs(lda, randomi, h_mat, s_mat); } - + auto start = std::chrono::high_resolution_clock::now(); + auto end = std::chrono::high_resolution_clock::now(); +#ifdef __ELPA // ELPA MPI_Barrier(comm); - auto start = std::chrono::high_resolution_clock::now(); + start = std::chrono::high_resolution_clock::now(); for (int j=0;j(h_mat.data(), s_mat.data(), lda, nbands,ekb_elpa.data(), wfc.data(), comm, 1, nb); MPI_Barrier(comm); } MPI_Barrier(comm); - auto end = std::chrono::high_resolution_clock::now(); + end = std::chrono::high_resolution_clock::now(); time_elpa[randomi] = std::chrono::duration_cast(end - start).count(); - +#endif // scalapack start = std::chrono::high_resolution_clock::now(); @@ -215,8 +221,8 @@ void test_performance(int lda, int nb, int nbands, MPI_Comm comm,int case_numb, time_scalap[randomi] = std::chrono::duration_cast(end - start).count(); //LApack - if (my_rank == 0) - { + if (my_rank == 0) + { std::vector h_tmp, s_tmp; start = std::chrono::high_resolution_clock::now(); base_device::DEVICE_CPU* ctx = {}; @@ -225,7 +231,7 @@ void test_performance(int lda, int nb, int nbands, MPI_Comm comm,int case_numb, { h_tmp = h_mat; s_tmp = s_mat; - hsolver::dngvx_op()(ctx, + hsolver::hegvx_op()(ctx, lda, lda, h_tmp.data(), @@ -239,26 +245,34 @@ void test_performance(int lda, int nb, int nbands, MPI_Comm comm,int case_numb, //COMPARE EKB for (int i = 0; i < nbands; ++i) { - typename GetTypeReal::type diff_elpa_lapack = std::abs(ekb_elpa[i] - ekb_lapack[i]); typename GetTypeReal::type diff_scalap_lapack = std::abs(ekb_scalap[i] - ekb_lapack[i]); +#ifdef __ELPA + typename GetTypeReal::type diff_elpa_lapack = std::abs(ekb_elpa[i] - ekb_lapack[i]); if (diff_elpa_lapack > 1e-6 || diff_scalap_lapack > 1e-6) +#else + if (diff_scalap_lapack > 1e-6) +#endif { +#ifdef __ELPA std::cout << "eigenvalue " << i << " by ELPA: " << ekb_elpa[i] << std::endl; +#endif std::cout << "eigenvalue " << i << " by Scalapack: " << ekb_scalap[i] << std::endl; std::cout << "eigenvalue " << i << " by Lapack: " << ekb_lapack[i] << std::endl; } } } - MPI_Barrier(comm); + MPI_Barrier(comm); } if (my_rank == 0) { +#ifdef __ELPA std::cout << "\nELPA Time : "; for (int i=0; i < case_numb;i++) {std::cout << time_elpa[i] << " ";} std::cout << std::endl; +#endif std::cout << "scalapack Time: "; for (int i=0; i < case_numb;i++) @@ -271,21 +285,29 @@ void test_performance(int lda, int nb, int nbands, MPI_Comm comm,int case_numb, std::cout << std::endl; // print out the average time and speedup +#ifdef __ELPA double avg_time_elpa = 0; +#endif double avg_time_scalap = 0; double avg_time_lapack = 0; for (int i=0; i < case_numb;i++) { +#ifdef __ELPA avg_time_elpa += time_elpa[i]; +#endif avg_time_scalap += time_scalap[i]; avg_time_lapack += time_lapack[i]; } +#ifdef __ELPA avg_time_elpa /= case_numb; +#endif avg_time_scalap /= case_numb; avg_time_lapack /= case_numb; std::cout << "Average Lapack Time : " << avg_time_lapack << " ms" << std::endl; +#ifdef __ELPA std::cout << "Average ELPA Time : " << avg_time_elpa << " ms, Speedup: " << avg_time_lapack / avg_time_elpa << std::endl; +#endif std::cout << "Average Scalapack Time: " << avg_time_scalap << " ms, Speedup: " << avg_time_lapack / avg_time_scalap << std::endl; } } diff --git a/source/source_hsolver/test/test_hsolver_sdft.cpp b/source/source_hsolver/test/test_hsolver_sdft.cpp index 4118ba7bb7..7ab1464195 100644 --- a/source/source_hsolver/test/test_hsolver_sdft.cpp +++ b/source/source_hsolver/test/test_hsolver_sdft.cpp @@ -262,7 +262,7 @@ namespace ModulePW { class TestHSolverPW_SDFT : public ::testing::Test { public: - TestHSolverPW_SDFT() : stoche(8, 1, 0, 0), elecstate_test(nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr) + TestHSolverPW_SDFT() : stoche(8, 1, 0, 0), elecstate_test(nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr) { } ModulePW::PW_Basis_K pwbk; @@ -408,4 +408,4 @@ int main(int argc, char** argv) return result; } -#endif \ No newline at end of file +#endif diff --git a/source/source_io/CMakeLists.txt b/source/source_io/CMakeLists.txt index 7fb9ff113a..6073f10a7d 100644 --- a/source/source_io/CMakeLists.txt +++ b/source/source_io/CMakeLists.txt @@ -1,109 +1,119 @@ +# Note: Help data is now embedded in Input_Item objects in read_input_item_*.cpp +# The old input_help_data.h generation has been removed. + list(APPEND objects - input_conv.cpp - bessel_basis.cpp - cal_test.cpp - cal_dos.cpp - cal_ldos.cpp - cal_mlkedf_descriptors.cpp - cif_io.cpp - write_dos_pw.cpp - nscf_band.cpp - nscf_fermi_surf.cpp - write_eig_occ.cpp - numerical_basis.cpp - numerical_basis_jyjy.cpp - numerical_descriptor.cpp - output.cpp - print_info.cpp - read_cube.cpp - rhog_io.cpp - read_exit_file.cpp - read_wfc_pw.cpp - read_wf2rho_pw.cpp - restart.cpp - binstream.cpp - write_wfc_pw.cpp - write_pao.cpp - write_cube.cpp - write_elecstat_pot.cpp - write_elf.cpp - write_dipole.cpp - write_mlkedf_descriptors.cpp - td_current_io.cpp - write_libxc_r.cpp - output_log.cpp - para_json.cpp + module_parameter/input_conv.cpp + module_ctrl/ctrl_output_fp.cpp + module_ctrl/ctrl_output_pw.cpp + module_ctrl/ctrl_output_td.cpp + module_bessel/bessel_basis.cpp + module_output/cal_test.cpp + module_dos/cal_dos.cpp + module_dos/cal_ldos.cpp + module_ml/cal_mlkedf_descriptors.cpp + module_output/cif_io.cpp + module_dos/write_dos_pw.cpp + module_energy/write_bands.cpp + module_energy/nscf_fermi_surf.cpp + module_energy/write_eig_occ.cpp + module_bessel/numerical_basis.cpp + module_bessel/numerical_basis_jyjy.cpp + module_bessel/numerical_descriptor.cpp + module_output/output.cpp + module_output/print_info.cpp + module_output/read_cube.cpp + module_chgpot/rhog_io.cpp + module_output/read_exit_file.cpp + module_wf/read_wfc_pw.cpp + module_wf/read_wf2rho_pw.cpp + module_restart/restart.cpp + module_output/binstream.cpp + module_wf/write_wfc_pw.cpp + module_output/write_pao.cpp + module_output/write_cube.cpp + module_chgpot/write_elecstat_pot.cpp + module_elf/write_elf.cpp + module_dipole/write_dipole.cpp + module_chgpot/write_init.cpp + module_ml/write_mlkedf_descriptors.cpp + module_current/td_current_io.cpp + module_current/td_current_io_comm.cpp + module_chgpot/write_libxc_r.cpp + module_output/output_log.cpp + module_json/para_json.cpp parse_args.cpp - orb_io.cpp - filename.cpp + input_help.cpp + module_output/orb_io.cpp + module_output/filename.cpp + module_output/ucell_io.cpp ) list(APPEND objects_advanced - unk_overlap_pw.cpp - berryphase.cpp - to_wannier90.cpp - to_wannier90_pw.cpp - to_wannier90_lcao_in_pw.cpp - to_wannier90_lcao.cpp - fR_overlap.cpp - winput.cpp + module_unk/unk_overlap_pw.cpp + module_unk/berryphase.cpp + module_wannier/to_wannier90.cpp + module_wannier/to_wannier90_pw.cpp + module_wannier/to_wannier90_lcao_in_pw.cpp + module_wannier/to_wannier90_lcao.cpp + module_wannier/fR_overlap.cpp ) if(ENABLE_LCAO) list(APPEND objects - write_dos_lcao.cpp - cal_pdos_gamma.cpp - cal_pdos_multik.cpp - write_orb_info.cpp - write_proj_band_lcao.cpp - get_pchg_lcao.cpp - get_wf_lcao.cpp - read_wfc_nao.cpp - read_wfc_lcao.cpp - write_wfc_nao.cpp - io_dmk.cpp - write_dmr.cpp - sparse_matrix.cpp - file_reader.cpp - csr_reader.cpp - to_qo_kernel.cpp - to_qo_mpi.cpp - to_qo_structures.cpp - output_sk.cpp - output_dmk.cpp - output_mulliken.cpp - io_npz.cpp - cal_pLpR.cpp + module_dos/write_dos_lcao.cpp + module_dos/cal_pdos_gamma.cpp + module_dos/cal_pdos_multik.cpp + module_output/write_orb_info.cpp + module_energy/write_proj_band_lcao.cpp + module_chgpot/get_pchg_lcao.cpp + module_wf/get_wf_lcao.cpp + module_wf/read_wfc_nao.cpp + module_wf/write_wfc_nao.cpp + module_dm/write_dmk.cpp + module_dm/write_dmr.cpp + module_output/sparse_matrix.cpp + module_output/file_reader.cpp + module_output/csr_reader.cpp + module_qo/to_qo_kernel.cpp + module_qo/to_qo_mpi.cpp + module_qo/to_qo_structures.cpp + module_mulliken/output_sk.cpp + module_mulliken/output_dmk.cpp + module_mulliken/output_mulliken.cpp + module_ml/io_npz.cpp + module_hs/cal_pLpR.cpp ) - list(APPEND objects_advanced - unk_overlap_lcao.cpp - write_HS_R.cpp - write_HS_sparse.cpp - single_R_io.cpp - cal_r_overlap_R.cpp - output_mat_sparse.cpp - ctrl_output_lcao.cpp + list(APPEND objects_advanced + module_unk/unk_overlap_lcao.cpp + module_hs/write_HS_R.cpp + module_hs/write_HS_sparse.cpp + module_hs/single_R_io.cpp + module_hs/cal_r_overlap_R.cpp + module_hs/output_mat_sparse.cpp + module_ctrl/ctrl_scf_lcao.cpp + module_ctrl/ctrl_runner_lcao.cpp + module_ctrl/ctrl_iter_lcao.cpp ) endif() add_library( io_input OBJECT - read_input_item_system.cpp - read_input_item_elec_stru.cpp - read_input_item_relax.cpp - read_input_item_md.cpp - read_input_item_ofdft.cpp - read_input_item_sdft.cpp - read_input_item_tddft.cpp - read_input_item_deepks.cpp - read_input_item_model.cpp - read_input_item_postprocess.cpp - read_input_item_exx_dftu.cpp - read_input_item_other.cpp - read_input_item_output.cpp - read_input.cpp - read_set_globalv.cpp + module_parameter/read_input_item_system.cpp + module_parameter/read_input_item_elec_stru.cpp + module_parameter/read_input_item_relax.cpp + module_parameter/read_input_item_md.cpp + module_parameter/read_input_item_ofdft.cpp + module_parameter/read_input_item_sdft.cpp + module_parameter/read_input_item_tddft.cpp + module_parameter/read_input_item_deepks.cpp + module_parameter/read_input_item_model.cpp + module_parameter/read_input_item_postprocess.cpp + module_parameter/read_input_item_exx_dftu.cpp + module_parameter/read_input_item_other.cpp + module_parameter/read_input_item_output.cpp + module_parameter/read_input.cpp + module_parameter/read_set_globalv.cpp ) add_library( @@ -112,6 +122,13 @@ add_library( ${objects} ) +# Include directory for build_info.h (generated at build time) +target_include_directories( + io_basic + PUBLIC + ${CMAKE_BINARY_DIR}/source/source_io +) + add_library( io_advanced OBJECT @@ -131,6 +148,6 @@ endif() if(ENABLE_RAPIDJSON) if(ENABLE_MPI) - add_subdirectory(json_output) + add_subdirectory(module_json) endif() endif() diff --git a/source/source_io/bessel_basis.cpp b/source/source_io/bessel_basis.cpp deleted file mode 100644 index 8c98d3aca0..0000000000 --- a/source/source_io/bessel_basis.cpp +++ /dev/null @@ -1,487 +0,0 @@ -#include "bessel_basis.h" - -#include "source_io/module_parameter/parameter.h" -#include "source_base/math_integral.h" -#include "source_base/math_sphbes.h" -#include "source_base/parallel_common.h" -#include "source_base/timer.h" -#include "source_pw/module_pwdft/global.h" -#include - -Bessel_Basis::Bessel_Basis() -{ - Ecut_number = 0; - Dk = 0.0; -} - -Bessel_Basis::~Bessel_Basis() -{ -} - - -// the function is called in numerical_basis. -void Bessel_Basis::init( - const bool start_from_file, - const double &ecutwfc, - const int &ntype, - const int &lmax_in, - const bool &smooth, - const double &sigma, - const double &rcut_in, - const double &tol_in, - const UnitCell& ucell, - const double &dk, - const double &dr - ) -{ - ModuleBase::TITLE("Bessel_Basis", "init"); - this->Dk = dk; - this->ecut = ecutwfc; - this->rcut = rcut_in; - this->tolerence = tol_in; - this->smooth = smooth; - this->sigma = sigma; - - //---------------------------------------------- - // setup Ecut_number - // ne * pi / rcut = sqrt(ecut) (Rydberg) - //---------------------------------------------- - // this->Ecut_number = static_cast( sqrt( 2.0 * ecut )* rcut/ModuleBase::PI );// hartree - this->Ecut_number = static_cast(sqrt(ecut) * rcut / ModuleBase::PI); // Rydberg Unit. - assert(this->Ecut_number > 0); - - //------------------ - // Making a table - //------------------ - - this->init_TableOne( smooth, sigma, ecutwfc, rcut, dr, Dk, lmax_in, Ecut_number, tolerence); - -//----------------------------------------------- -// for test. -//----------------------------------------------- -// GlobalV::ofs_running << "\n TableOne:"; -// for(int i=0; iallocate_C4(ntype, lmax_in, ucell.nmax, Ecut_number, ucell); - // check tolerence - this->readin_C4("INPUTs", ntype, ecut, rcut, Ecut_number, tolerence, ucell); -#ifdef __MPI - Parallel_Common::bcast_double( C4.ptr, C4.getSize() ); -#endif - this->init_Faln(ntype, lmax_in, ucell.nmax, Ecut_number, ucell); - } - - return; -} - -double Bessel_Basis::Polynomial_Interpolation2 - (const int &l, const int &ie, const double &gnorm)const -{ - const double position = gnorm / this->Dk; - const int iq = static_cast(position); - /* - if(iq >= kmesh-4) - { - std::cout << "\n iq = " << iq; - std::cout << "\n kmesh = " << kmesh; - ModuleBase::QUIT(); - } - */ - assert(iq < kmesh-4); - const double x0 = position - static_cast(iq); - const double x1 = 1.0 - x0; - const double x2 = 2.0 - x0; - const double x3 = 3.0 - x0; - const double y= - this->TableOne(l, ie, iq) * x1 * x2 * x3 / 6.0 + - this->TableOne(l, ie, iq+1) * x0 * x2 * x3 / 2.0 - - this->TableOne(l, ie, iq+2) * x1 * x0 * x3 / 2.0 + - this->TableOne(l, ie, iq+3) * x1 * x2 * x0 / 6.0 ; - return y; -} - -double Bessel_Basis::Polynomial_Interpolation( - const int &it, const int &l, const int &ic, const double &gnorm)const -{ - const double position = gnorm / this->Dk; - const int iq = static_cast(position); - assert(iq < kmesh-4); - const double x0 = position - static_cast(iq); - const double x1 = 1.0 - x0; - const double x2 = 2.0 - x0; - const double x3 = 3.0 - x0; - const double y= - this->Faln(it, l, ic, iq) * x1 * x2 * x3 / 6.0 + - this->Faln(it, l, ic, iq+1) * x0 * x2 * x3 / 2.0 - - this->Faln(it, l, ic, iq+2) * x1 * x0 * x3 / 2.0 + - this->Faln(it, l, ic, iq+3) * x1 * x2 * x0 / 6.0 ; - return y; -} - -void Bessel_Basis::init_Faln( - const int &ntype, - const int &lmax, - const int &nmax, - const int &ecut_number, - const UnitCell& ucell) -{ - ModuleBase::TITLE("Bessel_Basis","init_Faln"); - ModuleBase::timer::tick("Spillage","init_Faln"); - assert( this->kmesh > 0); - - this->Faln.create(ntype, lmax+1, nmax, this->kmesh); - - this->nwfc = 0; - for(int it=0; itkmesh; ik++) - { - this->Faln(it, il, in, ik) += this->C4(it, il, in, ie) * this->TableOne(il, ie, ik); - } - } - nwfc+=2*il+1; - } - } - } - ModuleBase::GlobalFunc::OUT("nwfc = ",nwfc); - - ModuleBase::timer::tick("Spillage","init_Faln"); - return; -} - -// be called in Bessel_Basis::init() -void Bessel_Basis::init_TableOne( - const bool smooth_in, // mohan add 2009-08-28 - const double &sigma_in, // mohan add 2009-08-28 - const double &ecutwfc, - const double &rcut, - const double &dr, - const double &dk, - const int &lmax, - const int &ecut_number, - const double &tolerence) -{ - ModuleBase::TITLE("Bessel_Basis","init_TableOne"); - ModuleBase::timer::tick("Spillage","TableONe"); - // check - assert(ecutwfc > 0.0); - assert(dr > 0.0); - assert(dk > 0.0); - - // init kmesh - this->kmesh = static_cast(sqrt(ecutwfc) / dk) +1 + 4; - if (kmesh % 2 == 0)++kmesh; - ModuleBase::GlobalFunc::OUT(GlobalV::ofs_running, "kmesh",kmesh); - ModuleBase::GlobalFunc::OUT(GlobalV::ofs_running, "dk",dk); - - // init Table One - this->TableOne.create(lmax+1, ecut_number, kmesh); - - // init rmesh - int rmesh = static_cast( rcut / dr ) + 4; - if (rmesh % 2 == 0) ++rmesh; - ModuleBase::GlobalFunc::OUT(GlobalV::ofs_running, "rmesh",rmesh); - ModuleBase::GlobalFunc::OUT(GlobalV::ofs_running, "dr",dr); - - // allocate rmesh and Jlk and eigenvalue of Jlq - // double *r = new double[rmesh]; - // double *rab = new double[rmesh]; - // double *jle = new double[rmesh]; - // double *jlk = new double[rmesh]; - // double *g = new double[rmesh]; // smooth function - // double *function = new double[rmesh]; - // double *en = new double[ecut_number]; - std::vector r(rmesh); - std::vector rab(rmesh); - std::vector jle(rmesh); - std::vector jlk(rmesh); - std::vector g(rmesh); - std::vector function(rmesh); - std::vector en(ecut_number); - - for(int ir=0; ir(ir) * dr; - rab[ir] = dr; - if(smooth_in) - { - g[ir] = 1.0 - std::exp(-( (r[ir]-rcut)*(r[ir]-rcut)/2.0/sigma_in/sigma_in ) ); - } - } - - //caoyu add 2021-3-10 - //=========output .orb format============= - std::stringstream ss; - ss << PARAM.globalv.global_out_dir << "jle.orb"; - std::ofstream ofs(ss.str().c_str()); - ofs << "---------------------------------------------------------------------------"<< std::endl; - ofs << std::setiosflags(std::ios::left) << std::setw(28) << "Energy Cutoff(Ry)" << ecut << std::endl; - ofs << std::setiosflags(std::ios::left) << std::setw(28) << "Radius Cutoff(a.u.)" << rcut << std::endl; - ofs << std::setiosflags(std::ios::left) << std::setw(28) << "Lmax" << lmax << std::endl; - for (int l = 0; l < lmax + 1; l++) - { - switch (l) - { - case 0: - ofs << std::setiosflags(std::ios::left) << std::setw(28) << "Number of Sorbitals-->" << ecut_number << std::endl; - break; - case 1: - ofs << std::setiosflags(std::ios::left) << std::setw(28) << "Number of Porbitals-->" << ecut_number << std::endl; - break; - case 2: - ofs << std::setiosflags(std::ios::left) << std::setw(28) << "Number of Dorbitals-->" << ecut_number << std::endl; - break; - case 3: - ofs << std::setiosflags(std::ios::left) << std::setw(28) << "Number of Forbitals-->" << ecut_number << std::endl; - break; - default: - ofs << std::setiosflags(std::ios::left) << std::setw(28) << "Number of Gorbitals-->" << ecut_number << std::endl; - } - } - ofs << "---------------------------------------------------------------------------"<< std::endl; - ofs << "SUMMARY END" << std::endl << std::endl; - ofs << std::setiosflags(std::ios::left) << std::setw(28) << "Mesh" << rmesh << std::endl; - ofs << std::setiosflags(std::ios::left) << std::setw(28) << "dr" << dr << std::endl ; - //=========output .orb format============= - - // init eigenvalue of Jl - for(int l=0; lTableOne(l, ie, ik) ); - } - - }// end ie - }// end ; - - if (ofs) - { - ofs.close(); //caoyu add 2020-3-10 - } - - // delete[] en; - // delete[] jle; - // delete[] jlk; - // delete[] rab; - // delete[] g; - // delete[] r; - // delete[] function; - ModuleBase::timer::tick("Spillage","TableONe"); - return; -} - -void Bessel_Basis::readin_C4( - const std::string &name, - const int &ntype, - const int &ecut, - const int &rcut, - const int &ecut_number, - const double &tolerence, - const UnitCell& ucell) -{ - ModuleBase::TITLE("Bessel_Basis","readin_C4"); - - if(GlobalV::MY_RANK != 0) return; - - std::ifstream ifs( name.c_str() ); - - if(!ifs) - { - GlobalV::ofs_warning << " File name : " << name << std::endl; - std::string fn = "Cannot find C4 file: " + name; - ModuleBase::WARNING_QUIT("Bessel_Basis::readin_C4",fn); - } - - if (ModuleBase::GlobalFunc::SCAN_BEGIN(ifs, "")) - { - // mohan modify 2009-11-29 - for (int it = 0; it < ntype; it++) - { - std::string filec4; - ifs >> filec4; - for(int il=0; il< ucell.atoms[it].nwl+1; il++) - { - for(int in=0; in< ucell.atoms[it].l_nchi[il]; in++) - { - //for tests - //std::cout << "\n" << std::setw(5) << it << std::setw(5) << il << std::setw(5) << in; - //std::cout << "\n file=" << filec4; - std::ifstream inc4( filec4.c_str() ); - - if(!inc4) - { - GlobalV::ofs_warning << " File name : " << filec4 << std::endl; - ModuleBase::WARNING_QUIT("Bessel_Basis::readin_C4","Can not find file."); - } - - if(ModuleBase::GlobalFunc::SCAN_BEGIN(inc4, "")) - { - double tmp_ecut; - double tmp_rcut; - double tmp_enumber; - double tmp_tolerence; - ModuleBase::GlobalFunc::READ_VALUE( inc4, tmp_ecut); - ModuleBase::GlobalFunc::READ_VALUE( inc4, tmp_rcut); - ModuleBase::GlobalFunc::READ_VALUE( inc4, tmp_enumber); - ModuleBase::GlobalFunc::READ_VALUE( inc4, tmp_tolerence); - assert( tmp_ecut == this->ecut ); - assert( tmp_rcut == this->rcut ); - assert( tmp_enumber == this->Ecut_number); - assert( tmp_tolerence == this->tolerence ); - } - - bool find = false; - if(ModuleBase::GlobalFunc::SCAN_BEGIN(inc4, "")) - { - int total_nchi = 0; - ModuleBase::GlobalFunc::READ_VALUE(inc4, total_nchi); - - for(int ichi=0; ichi> title1 >> title2 >> title3; - - int tmp_type=0, tmp_l=0, tmp_n=0; - inc4 >> tmp_type >> tmp_l >> tmp_n; - //std::cout << "\n Find T=" << tmp_type << " L=" << tmp_l << " N=" << tmp_n; - - if(tmp_l == il && tmp_n == in) - //if(tmp_type == it && tmp_l == il && tmp_n == in) // mohan modify 2009-11-29 - { - find = true; - for(int ie=0; ie> this->C4(it, il, in, ie); - // for tests - //std::cout << "\n" << std::setw(5) << ie << std::setw(25) << this->C4(it, il, in, ie); - } - } - else - { - double no_use_c4 = 0.0; - for(int ie=0; ie> no_use_c4; - } - } - if(find) break; - } - } - if(!find) - { - std::cout << "\n T=" << it << " L=" << il << " N=" << in; - ModuleBase::WARNING_QUIT("Bessel_Basis::readin_C4","Can't find needed c4!"); - } - inc4.close(); - } - } - } - ModuleBase::GlobalFunc::SCAN_END(ifs, ""); - } - ifs.close(); - return; -} - -void Bessel_Basis::allocate_C4( - const int &ntype, - const int &lmax, - const int &nmax, - const int &ecut_number, - const UnitCell& ucell) -{ - ModuleBase::TITLE("Bessel_Basis","allocate_C4"); - - this->C4.create(ntype, lmax+1, nmax, ecut_number); - - for(int it=0; itC4(it, il, in, ie) = 1.0; - } - } - } - } - return; -} diff --git a/source/source_io/bessel_basis.h b/source/source_io/bessel_basis.h deleted file mode 100644 index 4fe1ab015d..0000000000 --- a/source/source_io/bessel_basis.h +++ /dev/null @@ -1,190 +0,0 @@ -//========================================================== -// AUTHOR : mohan -// DATE : 2009-3-29 -// Last Modify : 2021-01-04 -//========================================================== -#ifndef BESSEL_BASIS_H -#define BESSEL_BASIS_H -#include "../source_base/global_function.h" -#include "../source_base/global_variable.h" -#include "../source_base/realarray.h" - -#include "../source_cell/unitcell.h" - -//========================================================== -// CLASS : -// NAME : Bessel_Basis -//========================================================== -class Bessel_Basis -{ -public: - Bessel_Basis(); - ~Bessel_Basis(); - - /// @brief Initialization of Bessel function related matrices. - /// @details Used for a specific group of C4 coefficients. 2021-01-04, mohan added a new input parameter lmax_in, if we only generate numerical atomic orbitals based on spherical Bessel functions, lmax_in = ucell.lmax. However, if we want to generate Spherical Bessel functions (SBF) for descriptor, then the lmax_in is controlled by user. - /// @note This function is called in source_io/numerical_basis.cpp and source_io/numerical_descriptor.cpp - /// @param start_from_file whether read C4 coefficients stored in external files - /// @param ecutwfc cutoff for numerical atomic orbitals - /// @param ntype atom types - /// @param lmax_in maximal angular momentum for numerical orbitals - /// @param smooth whether smooth SBFs when perform integration to calculate value of matrix element of TableOne. For details, see J. Phys.: Condens. Matter 22 (2010) 445501 - /// @param sigma stddev of Gaussian function for smoothing SBFs - /// @param rcut_in cutoff radius for SBFs - /// @param tol_in accurancy control for SBFs - /// @param dk kspace grid - /// @param dr realspace grid - /// @param ucell UnitCell class object, ucell.nmax will be used in this function - void init( - const bool start_from_file, - const double &ecutwfc, - const int &ntype, - const int &lmax_in, - const bool &smooth, - const double &sigma, - const double &rcut_in, - const double &tol_in, - const UnitCell& ucell, - const double &dk = 0.01, - const double &dr = 0.01 - ); - /// @brief return number of SBFs used for one `chi` (see details for more information) - /// @details atomic orbital is constructed always with not only one set of SBFs. For different sets, they are marked with different `chi`(s), similar with concept of contracted GTOs. For one `chi`, it is 'q' the summation index, and q is in SBFs like: j_l(q*r), where l is the order of SBF. - /// @return number of SBFs - const int& get_ecut_number() const { return Ecut_number;} - - /// @brief Cubic spline interpolation for matrix Faln - /// @param it atom type index - /// @param l angular momentum - /// @param ic chi index - /// @param gnorm norm of G+k vector - /// @return interpolated value - double Polynomial_Interpolation(const int &it, const int &l, const int &ic, const double &gnorm)const; - /// @brief Cubic spline interpolation for matrix TableOne - /// @param l angular momentum - /// @param ie q index (see explanation in note of function BesselBasis::get_ecut_number()) - /// @param gnorm norm of G+k vector - /// @return interpolated value - double Polynomial_Interpolation2(const int &l, const int &ie, const double &gnorm)const; - - - /// @brief get energy cutoff, which is used to truncate SBF Jlq. - /// @param - /// @return energy cutoff in Ry - const double &get_ecut() const {return ecut;} - /// @brief cutoff radius of radial SBF Jlq. - /// @param - /// @return cutoff radius in a.u. - const double &get_rcut() const {return rcut;} - - const double &get_tolerence() const {return tolerence;} - - - /// @brief check if SBFs are smoothed (mohan add 2009-08-28) - /// @attention in this case, the Jlq are not the true Jlq. - /// @param - /// @return boolean whether SBFs are smoothed - const bool &get_smooth() const {return smooth;} - /// @brief get sigma the stddev (standard deviation) used in smooth function (Gaussian function) - /// @param - /// @return stddev of smooth function - const double &get_sigma() const {return sigma;} - -private: - /// @brief the most important array to calculate spillage, has dimension (ntype, lmax+1, max_n, nk) - ModuleBase::realArray Faln; - - /// @brief Coefficients to be optimized! - ModuleBase::realArray C4; - - /// @brief matrix whose elements are int{dr r^2 j_l(qr)*j_l(kr)}, has dimension (lmax+1, nq, nk) - ModuleBase::realArray TableOne; - - /// @brief mesh of k vector, k is in j_l(k*r) - int kmesh=0; - /// @brief grid of k - double Dk; - /// @brief number of q vector, q is in j_l(q*r) - int Ecut_number; - /// @brief Cutoff radius (in a.u.) of SBFs, for any SBF j_l(qr), r>=rcut, j_l(q*r) = 0 (if not smoothed) - double rcut=0.0; - /// @brief energy cutoff for determining kmesh and number of SBFs - double ecut=0.0; - double tolerence=0.0; - /// @brief whether smooth SBFs around cutoff radius, resulting in non-zero values. For importance of smooth of SBFs, see J. Phys.: Condens. Matter 22 (2010) 445501, eqn 6. (mohan add 2009-01-18) - bool smooth=false; - /// @brief stddev of smooth function (Gaussian function, centered at rcut) - double sigma=0.0; - - /// @brief Allocate memory for C4 matrix and initialize all elements to one. - /// @param ntype number of atom types - /// @param lmax maximal angular momentum of localized orbitals - /// @param nmax maximal principal quantum number of localized orbitals - /// @param ecut_number number of SBFs - void allocate_C4( - const int &ntype, - const int &lmax, - const int &nmax, - const int &ecut_number, - const UnitCell& ucell - ); - - /// @brief Read C4 from external file. Presently an O(N^2) search algorithm is used. A HTML parser is needed in the future to improve performance. - /// @param name name of external file where C4-stored file information is contained - /// @param ntype number of atom types - /// @param ecut energy cutoff - /// @param rcut cutoff radius - /// @param ecut_number number of SBFs - /// @param tolerence accurancy of SBFs, here only used for consistency check - void readin_C4( - const std::string &name, - const int &ntype, - const int &ecut, - const int &rcut, - const int &ecut_number, - const double &tolerence, - const UnitCell& ucell - ); - - void init_TableOne(); - - /// @brief calculate F_{aln}(it, il, in, ik) = sum_{ie}{C4(it, il, in, ie)*TableOne(il, ie, ik)}, where TableOne is overlap integral between two spherical bessel functions (jle(r) and jlk(r)) - /// @param ntype number of atomtype - /// @param lmax maximal angular momentum - /// @param nmax maximal chi - /// @param ecut_number number of SBFs - void init_Faln( - const int &ntype, - const int &lmax, - const int &nmax, - const int &ecut_number, - const UnitCell& ucell - ); - - /// @brief number of localized wave functions - int nwfc=0; - - /// @brief calculate element value of TableOne matrix - /// @details (be called in Bessel_Basis::init(), used for outputing overlap Q matrix) initialize the table whose matrix element is the result of integral int{dr r^2 jle(r)*jlk(r)}, TableOne has three subscript (l, ie, ik), the first runs over orbitals' angular momentum and ie, ik run over ecut_number and kmesh SBFs - /// @param smooth_in whether jle(r) SBF is smoothed by a Gaussian function - /// @param sigma_in stddev for controlling smearing of Gaussian function for smoothing jle(r) - /// @param ecutwfc planewave kinetic energy cutoff for controlling kspace sampling - /// @param rcut cutoff radius of SBFs - /// @param dr realspace grid - /// @param dk kspace grid - /// @param lmax maximal angular momentum for SBFs - /// @param ecut_number number of SBFs - /// @param tolerence accurancy of SBFs - void init_TableOne( - const bool smooth_in, - const double &sigma_in, - const double &ecut, - const double &rcut, - const double &dr, - const double &dk, - const int &lmax, - const int &ecut_number, - const double &tolerence); -}; - -#endif diff --git a/source/source_io/build_info.h.in b/source/source_io/build_info.h.in new file mode 100644 index 0000000000..b0959240f4 --- /dev/null +++ b/source/source_io/build_info.h.in @@ -0,0 +1,60 @@ +#ifndef SOURCE_IO_BUILD_INFO_H +#define SOURCE_IO_BUILD_INFO_H + +// --- Platform & Environment --- +#define ABACUS_PLATFORM_NAME "@ABACUS_PLATFORM_NAME@" +#define ABACUS_BUILD_TYPE "@ABACUS_BUILD_TYPE@" +#define ABACUS_BUILD_USER "@ABACUS_BUILD_USER@" +#define ABACUS_BUILD_HOST "@ABACUS_BUILD_HOST@" +#define ABACUS_CXX_COMPILER_ID "@ABACUS_CXX_COMPILER_ID@" +#define ABACUS_CXX_COMPILER_PATH "@ABACUS_CXX_COMPILER_PATH@" +#define ABACUS_CXX_COMPILER_VERSION "@ABACUS_CXX_COMPILER_VERSION@" +#define ABACUS_CXX_FLAGS "@ABACUS_CXX_FLAGS@" +#define ABACUS_LINKER_FLAGS "@ABACUS_LINKER_FLAGS@" +#define ABACUS_CUDA_FLAGS "@ABACUS_CUDA_FLAGS@" + +// --- Sanitizers & Debugging --- +#define ABACUS_ASAN_STATUS "@ABACUS_ASAN_STATUS@" +#define ABACUS_DEBUG_SYMBOLS "@ABACUS_DEBUG_SYMBOLS@" + +// --- CMake Configuration Summary --- +#define ABACUS_CMAKE_OPTIONS "@ABACUS_CMAKE_OPTIONS@" +#define ABACUS_CMAKE_FIND_PACKAGES "@ABACUS_CMAKE_FIND_PACKAGES@" + +// --- Parallelism & Communication --- +#define ABACUS_MPI_IMPLEMENTATION "@ABACUS_MPI_IMPLEMENTATION@" +#define ABACUS_MPI_VERSION "@ABACUS_MPI_VERSION@" +#define ABACUS_CUDA_AWARE_MPI "@ABACUS_CUDA_AWARE_MPI@" +#define ABACUS_OPENMP_VERSION "@ABACUS_OPENMP_VERSION@" + +// --- Core Math Libraries --- +#define ABACUS_ELPA_VERSION "@ABACUS_ELPA_VERSION@" +#define ABACUS_MKL_SUPPORT "@ABACUS_MKL_SUPPORT@" +#define ABACUS_LIBXC_VERSION "@ABACUS_LIBXC_VERSION@" +#define ABACUS_FFTW_VERSION "@ABACUS_FFTW_VERSION@" + +// --- Accelerators & Specific Hardware --- +#define ABACUS_CUDA_VERSION "@ABACUS_CUDA_VERSION@" +#define ABACUS_ROCM_VERSION "@ABACUS_ROCM_VERSION@" +#define ABACUS_CUSOLVERMP_VERSION "@ABACUS_CUSOLVERMP_VERSION@" + +// --- Hybrid Functional Libraries --- +#define ABACUS_CEREAL_VERSION "@ABACUS_CEREAL_VERSION@" +#define ABACUS_LIBRI_VERSION "@ABACUS_LIBRI_VERSION@" +#define ABACUS_LIBCOMM_VERSION "@ABACUS_LIBCOMM_VERSION@" + +// --- AI & Machine Learning --- +#define ABACUS_LIBTORCH_VERSION "@ABACUS_LIBTORCH_VERSION@" +#define ABACUS_LIBNPY_VERSION "@ABACUS_LIBNPY_VERSION@" +#define ABACUS_DEEPMD_VERSION "@ABACUS_DEEPMD_VERSION@" +#define ABACUS_NEP_VERSION "@ABACUS_NEP_VERSION@" +#define ABACUS_TENSORFLOW_VERSION "@ABACUS_TENSORFLOW_VERSION@" + +// --- Testing & Other Libraries --- +#define ABACUS_GTEST_VERSION "@ABACUS_GTEST_VERSION@" +#define ABACUS_GOOGLEBENCH_VERSION "@ABACUS_GOOGLEBENCH_VERSION@" +#define ABACUS_RAPIDJSON_VERSION "@ABACUS_RAPIDJSON_VERSION@" +#define ABACUS_PEXSI_VERSION "@ABACUS_PEXSI_VERSION@" +#define ABACUS_CNPY_VERSION "@ABACUS_CNPY_VERSION@" + +#endif // SOURCE_IO_BUILD_INFO_H diff --git a/source/source_io/cal_mlkedf_descriptors.h b/source/source_io/cal_mlkedf_descriptors.h deleted file mode 100644 index 00b2daa722..0000000000 --- a/source/source_io/cal_mlkedf_descriptors.h +++ /dev/null @@ -1,109 +0,0 @@ -#ifndef CAL_MLKEDF_DESCRIPTORS_H -#define CAL_MLKEDF_DESCRIPTORS_H - -#include -#include "source_base/global_function.h" -#include "source_pw/module_pwdft/global.h" -#include "source_io/module_parameter/parameter.h" - -namespace ModuleIO -{ - -/** - * @brief A class to calculate the descriptors for ML KEDF. - * Sun, Liang, and Mohan Chen. Physical Review B 109.11 (2024): 115135. - * Sun, Liang, and Mohan Chen. Electronic Structure 6.4 (2024): 045006. - * @author sunliang on 2025-06-12 - */ -class Cal_MLKEDF_Descriptors -{ -public: - ~Cal_MLKEDF_Descriptors() {} - - void set_para( - const int &nx, - const double &nelec, - const double &tf_weight, - const double &vw_weight, - const double &chi_p, - const double &chi_q, - const std::vector &chi_xi, - const std::vector &chi_pnl, - const std::vector &chi_qnl, - const int &nkernel, - const std::vector &kernel_type, - const std::vector &kernel_scaling, - const std::vector &yukawa_alpha, - const std::vector &kernel_file, - const double &omega, - ModulePW::PW_Basis *pw_rho); - // get input parameters - void getGamma(const double * const *prho, std::vector &rgamma); - void getP(const double * const *prho, ModulePW::PW_Basis *pw_rho, std::vector> &pnablaRho, std::vector &rp); - void getQ(const double * const *prho, ModulePW::PW_Basis *pw_rho, std::vector &rq); - void getGammanl(const int ikernel, std::vector &pgamma, ModulePW::PW_Basis *pw_rho, std::vector &rgammanl); - void getPnl(const int ikernel, std::vector &pp, ModulePW::PW_Basis *pw_rho, std::vector &rpnl); - void getQnl(const int ikernel, std::vector &pq, ModulePW::PW_Basis *pw_rho, std::vector &rqnl); - // new parameters 2023-02-03 - void getXi(std::vector &pgamma, std::vector &pgammanl, std::vector &rxi); - void getTanhXi(const int ikernel, std::vector &pgamma, std::vector &pgammanl, std::vector &rtanhxi); - void getTanhP(std::vector &pp, std::vector &rtanhp); - void getTanhQ(std::vector &pq, std::vector &rtanhq); - void getTanh_Pnl(const int ikernel, std::vector &ppnl, std::vector &rtanh_pnl); - void getTanh_Qnl(const int ikernel, std::vector &pqnl, std::vector &rtanh_qnl); - void getTanhP_nl(const int ikernel, std::vector &ptanhp, ModulePW::PW_Basis *pw_rho, std::vector &rtanhp_nl); - void getTanhQ_nl(const int ikernel, std::vector &ptanhq, ModulePW::PW_Basis *pw_rho, std::vector &rtanhq_nl); - // 2023-03-20 - void getTanhXi_nl(const int ikernel, std::vector &ptanhxi, ModulePW::PW_Basis *pw_rho, std::vector &rtanhxi_nl); - - void getF_KS( - psi::Psi> *psi, - elecstate::ElecState *pelec, - ModulePW::PW_Basis_K *pw_psi, - ModulePW::PW_Basis *pw_rho, - UnitCell& ucell, - const std::vector> &nablaRho, - std::vector &rF, - std::vector &rpauli - ); - // get intermediate variables of V_Pauli - void getNablaRho(const double * const *prho, ModulePW::PW_Basis *pw_rho, std::vector> &rnablaRho); - - // tools - double MLkernel(double eta, double tf_weight, double vw_weight); - double MLkernel_yukawa(double eta, double alpha); - void read_kernel(const std::string &fileName, const double& scaling, ModulePW::PW_Basis *pw_rho, double* kernel_); - void multiKernel(const int ikernel, double *pinput, ModulePW::PW_Basis *pw_rho, double *routput); - void Laplacian(double * pinput, ModulePW::PW_Basis *pw_rho, double * routput); - void divergence(double ** pinput, ModulePW::PW_Basis *pw_rho, double * routput); - - void tanh(std::vector &pinput, std::vector &routput, double chi=1.); - double dtanh(double tanhx, double chi=1.); - - // new parameters 2023-02-13 - std::vector chi_xi = {1.0}; - double chi_p = 1.; - double chi_q = 1.; - std::vector chi_pnl = {1.0}; - std::vector chi_qnl = {1.0}; - - int nx = 0; - double dV = 0.; - double rho0 = 0.; // average rho - double kF = 0.; // Fermi vector kF = (3 pi^2 rho0)^(1/3) - double tkF = 0.; // 2 * kF - // double weightml = 1.; - const double cTF = 3.0/10.0 * std::pow(3*std::pow(M_PI, 2.0), 2.0/3.0) * 2; // 10/3*(3*pi^2)^{2/3}, multiply by 2 to convert unit from Hartree to Ry, finally in Ry*Bohr^(-2) - const double pqcoef = 1.0 / (4.0 * std::pow(3*std::pow(M_PI, 2.0), 2.0/3.0)); // coefficient of p and q - - int nkernel = 1; - std::vector kernel_type = {1}; - std::vector kernel_scaling = {1.0}; - std::vector yukawa_alpha = {1.0}; - std::vector kernel_file = {"none"}; - std::vector> kernel = {}; // kernel[ikernel][ipw] = kernel value for ikernel and ipw -}; - -} // namespace ModuleIO - -#endif \ No newline at end of file diff --git a/source/source_io/csr_reader.cpp b/source/source_io/csr_reader.cpp deleted file mode 100644 index 160cb78a61..0000000000 --- a/source/source_io/csr_reader.cpp +++ /dev/null @@ -1,140 +0,0 @@ -#include "csr_reader.h" - -#include "source_base/tool_quit.h" - -namespace ModuleIO -{ - -// constructor -template -csrFileReader::csrFileReader(const std::string& filename) : FileReader(filename) -{ - parseFile(); -} - -// function to parse file -template -void csrFileReader::parseFile() -{ - // Check if file is open - if (!isOpen()) - { - ModuleBase::WARNING_QUIT("csrFileReader::parseFile", "File is not open"); - } - - std::string tmp_string; - - // Read the step - readLine(); - ss >> tmp_string >> step; - - // Read the matrix dimension - readLine(); - ss >> tmp_string >> tmp_string >> tmp_string >> tmp_string >> matrixDimension; - - // Read the number of R - readLine(); - ss >> tmp_string >> tmp_string >> tmp_string >> tmp_string >> numberOfR; - - // Read the matrices - for (int i = 0; i < numberOfR; i++) - { - std::vector RCoord(3); - int nonZero; - - readLine(); - ss >> RCoord[0] >> RCoord[1] >> RCoord[2] >> nonZero; - RCoordinates.push_back(RCoord); - - std::vector csr_values(nonZero); - std::vector csr_col_ind(nonZero); - std::vector csr_row_ptr(matrixDimension + 1); - - // read CSR values - readLine(); - for (int i = 0; i < nonZero; i++) - { - ss >> csr_values[i]; - } - // read column indices - readLine(); - for (int i = 0; i < nonZero; i++) - { - ss >> csr_col_ind[i]; - } - // read row pointers - readLine(); - for (int i = 0; i < matrixDimension + 1; i++) - { - ss >> csr_row_ptr[i]; - } - - SparseMatrix matrix(matrixDimension, matrixDimension); - matrix.readCSR(csr_values, csr_col_ind, csr_row_ptr); - sparse_matrices.push_back(matrix); - } -} - -// function to get R coordinate -template -std::vector csrFileReader::getRCoordinate(int index) const -{ - if (index < 0 || index >= RCoordinates.size()) - { - ModuleBase::WARNING_QUIT("csrFileReader::getRCoordinate", "Index out of range"); - } - return RCoordinates[index]; -} - -// function to get matrix -template -SparseMatrix csrFileReader::getMatrix(int index) const -{ - if (index < 0 || index >= sparse_matrices.size()) - { - ModuleBase::WARNING_QUIT("csrFileReader::getMatrix", "Index out of range"); - } - return sparse_matrices[index]; -} - -// function to get matrix using R coordinate -template -SparseMatrix csrFileReader::getMatrix(int Rx, int Ry, int Rz) -{ - for (int i = 0; i < RCoordinates.size(); i++) - { - if (RCoordinates[i][0] == Rx && RCoordinates[i][1] == Ry && RCoordinates[i][2] == Rz) - { - return sparse_matrices[i]; - } - } - ModuleBase::WARNING_QUIT("csrFileReader::getMatrix", "R coordinate not found"); -} - -// function to get matrix -template -int csrFileReader::getNumberOfR() const -{ - return numberOfR; -} - -// function to get matrixDimension -template -int csrFileReader::getMatrixDimension() const -{ - return matrixDimension; -} - -// function to get step -template -int csrFileReader::getStep() const -{ - return step; -} - -// T of AtomPair can be double -template class csrFileReader; -// ToDo: T of AtomPair can be std::complex -template class csrFileReader>; - -} // namespace ModuleIO \ No newline at end of file diff --git a/source/source_io/csr_reader.h b/source/source_io/csr_reader.h deleted file mode 100644 index 15adf75427..0000000000 --- a/source/source_io/csr_reader.h +++ /dev/null @@ -1,71 +0,0 @@ -#ifndef CSR_READER_H -#define CSR_READER_H - -#include - -#include "file_reader.h" -#include "sparse_matrix.h" - -namespace ModuleIO -{ - -/** - * @brief Class to read CSR file - * @details This class is used to read CSR file - * the default format is like: - * ``` - * STEP: 0 - * Matrix Dimension of S(R): 4 - * Matrix number of S(R): 2 - * 0 1 1 2 # (0,1,1) is the R coordinate, 2 is the number of non-zero elements - * 4.00e+00 7.00e+00 # non-zero elements - * 3 2 # column indices - * 0 1 2 2 2 # row pointer - * 0 0 0 3 # the second R coordinate and number of non-zero elements - * 5.00e+00 6.00e+00 1.00e+01 - * 2 3 3 - * 0 0 0 2 3 - * ``` - * It will store the R coordinates and sparse matrices as two vectors. - * One can use getter functions to get the R coordinates and sparse matrices, - * and related info including step, matrix dimension, number of R. - */ -template -class csrFileReader : public FileReader -{ - public: - // Constructor - csrFileReader(const std::string& filename); - - // read all matrices of all R coordinates - void parseFile(); - - // get number of R - int getNumberOfR() const; - - // get sparse matrix of a specific R coordinate - SparseMatrix getMatrix(int Rx, int Ry, int Rz); - - // get matrix by using index - SparseMatrix getMatrix(int index) const; - - // get R coordinate using index - std::vector getRCoordinate(int index) const; - - // get step - int getStep() const; - - // get matrix dimension - int getMatrixDimension() const; - - private: - std::vector> RCoordinates; - std::vector> sparse_matrices; - int step; - int matrixDimension; - int numberOfR; -}; - -} // namespace ModuleIO - -#endif // READ_CSR_H \ No newline at end of file diff --git a/source/source_io/ctrl_output_fp.cpp b/source/source_io/ctrl_output_fp.cpp deleted file mode 100644 index 9f0a7edba5..0000000000 --- a/source/source_io/ctrl_output_fp.cpp +++ /dev/null @@ -1,133 +0,0 @@ -#include "source_io/ctrl_output_fp.h" // use ctrl_output_fp() - -namespace ModuleIO -{ - -template -void ctrl_output_fp(UnitCell& ucell, - elecstate::ElecStateLCAO* pelec, - const int istep) -{ - ModuleBase::TITLE("ModuleIO", "ctrl_output_fp"); - ModuleBase::timer::tick("ModuleIO", "ctrl_output_fp"); - - const bool out_app_flag = PARAM.inp.out_app_flag; - const bool gamma_only = PARAM.globalv.gamma_only_local; - const int nspin = PARAM.inp.nspin; - const std::string global_out_dir = PARAM.globalv.global_out_dir; - - // 1) write charge density - if (PARAM.inp.out_chg[0] > 0) - { - for (int is = 0; is < PARAM.inp.nspin; is++) - { - this->pw_rhod->real2recip(this->chr.rho_save[is], this->chr.rhog_save[is]); - std::string fn =PARAM.globalv.global_out_dir + "/chgs" + std::to_string(is + 1) + ".cube"; - ModuleIO::write_vdata_palgrid(Pgrid, - this->chr.rho_save[is], - is, - PARAM.inp.nspin, - istep, - fn, - this->pelec->eferm.get_efval(is), - &(ucell), - PARAM.inp.out_chg[1], - 1); - - if (XC_Functional::get_ked_flag()) - { - fn =PARAM.globalv.global_out_dir + "/taus" + std::to_string(is + 1) + ".cube"; - ModuleIO::write_vdata_palgrid(Pgrid, - this->chr.kin_r_save[is], - is, - PARAM.inp.nspin, - istep, - fn, - this->pelec->eferm.get_efval(is), - &(ucell)); - } - } - } - - - // 2) write potential - if (PARAM.inp.out_pot == 1 || PARAM.inp.out_pot == 3) - { - for (int is = 0; is < PARAM.inp.nspin; is++) - { - std::string fn =PARAM.globalv.global_out_dir + "/pots" + std::to_string(is + 1) + ".cube"; - - ModuleIO::write_vdata_palgrid(Pgrid, - this->pelec->pot->get_effective_v(is), - is, - PARAM.inp.nspin, - istep, - fn, - 0.0, // efermi - &(ucell), - 3, // precision - 0); // out_fermi - } - } - else if (PARAM.inp.out_pot == 2) - { - std::string fn =PARAM.globalv.global_out_dir + "/pot_es.cube"; - ModuleIO::write_elecstat_pot( -#ifdef __MPI - this->pw_big->bz, - this->pw_big->nbz, -#endif - fn, - istep, - this->pw_rhod, - &this->chr, - &(ucell), - this->pelec->pot->get_fixed_v(), - this->solvent); - } - - - // 3) write ELF - if (PARAM.inp.out_elf[0] > 0) - { - this->chr.cal_elf = true; - Symmetry_rho srho; - for (int is = 0; is < PARAM.inp.nspin; is++) - { - srho.begin(is, this->chr, this->pw_rhod, ucell.symm); - } - - std::string out_dir =PARAM.globalv.global_out_dir; - ModuleIO::write_elf( -#ifdef __MPI - this->pw_big->bz, - this->pw_big->nbz, -#endif - out_dir, - istep, - PARAM.inp.nspin, - this->chr.rho, - this->chr.kin_r, - this->pw_rhod, - this->Pgrid, - &(ucell), - PARAM.inp.out_elf[1]); - } - - ModuleBase::timer::tick("ModuleIO", "ctrl_output_fp"); -} - -} // End ModuleIO - - -// For gamma only -template void ModuleIO::ctrl_output_lcao(UnitCell& ucell, - const int istep); - -// For multiple k-points -template void ModuleIO::ctrl_output_lcao, double>(UnitCell& ucell, - const int istep); - -template void ModuleIO::ctrl_output_lcao, std::complex>(UnitCell& ucell, - const int istep); - diff --git a/source/source_io/ctrl_output_fp.h b/source/source_io/ctrl_output_fp.h deleted file mode 100644 index 98a4ad1f6d..0000000000 --- a/source/source_io/ctrl_output_fp.h +++ /dev/null @@ -1,11 +0,0 @@ -#ifndef CTRL_OUTPUT_FP_H -#define CTRL_OUTPUT_FP_H - -namespace ModuleIO -{ - template - void ctrl_output_fp(UnitCell& ucell, - elecstate::ElecStateLCAO* pelec, - const int istep); -} -#endif diff --git a/source/source_io/ctrl_output_lcao.cpp b/source/source_io/ctrl_output_lcao.cpp deleted file mode 100644 index 6a334aa015..0000000000 --- a/source/source_io/ctrl_output_lcao.cpp +++ /dev/null @@ -1,514 +0,0 @@ -#include - -#include "source_estate/elecstate_lcao.h" // use elecstate::ElecState -#include "source_io/ctrl_output_lcao.h" // use ctrl_output_lcao() -#include "source_lcao/hamilt_lcao.h" // use hamilt::HamiltLCAO -#include "source_hamilt/hamilt.h" // use Hamilt - -// functions -#include "source_io/write_dos_lcao.h" // use ModuleIO::write_dos_lcao() -#include "source_io/write_dmr.h" // use ModuleIO::write_dmr() -#include "source_io/io_dmk.h" // use ModuleIO::write_dmk() -#include "source_io/write_HS.h" // use ModuleIO::write_hsk() -#include "source_io/write_wfc_nao.h" // use ModuleIO::write_wfc_nao() -#include "source_io/output_mat_sparse.h" // use ModuleIO::output_mat_sparse() -#include "source_io/output_mulliken.h" // use cal_mag() -#include "source_lcao/module_operator_lcao/ekinetic_new.h" // use hamilt::EkineticNew -#include "source_io/cal_pLpR.h" // use AngularMomentumCalculator() -#include "source_lcao/module_deltaspin/spin_constrain.h" // use spinconstrain::SpinConstrain -#include "source_io/berryphase.h" // use berryphase -#include "source_io/to_wannier90_lcao.h" // use toWannier90_LCAO -#include "source_io/to_wannier90_lcao_in_pw.h" // use toWannier90_LCAO_IN_PW -#ifdef __MLALGO -#include "source_lcao/module_deepks/LCAO_deepks.h" -#include "source_lcao/module_deepks/LCAO_deepks_interface.h" -#endif -#ifdef __EXX -#include "source_lcao/module_ri/Exx_LRI_interface.h" // use EXX codes -#include "source_lcao/module_ri/RPA_LRI.h" // use RPA code -#endif -#include "source_lcao/module_rdmft/rdmft.h" // use RDMFT codes -#include "source_io/to_qo.h" // use toQO - -namespace ModuleIO -{ - -template -void ctrl_output_lcao(UnitCell& ucell, - K_Vectors& kv, - elecstate::ElecStateLCAO* pelec, - Parallel_Orbitals& pv, - Grid_Driver& gd, - psi::Psi* psi, - hamilt::HamiltLCAO* p_hamilt, - TwoCenterBundle &two_center_bundle, - Gint_k &gk, - LCAO_Orbitals &orb, - const ModulePW::PW_Basis_K* pw_wfc, // for berryphase - const ModulePW::PW_Basis* pw_rho, // for berryphase - Grid_Technique >, // for berryphase - const ModulePW::PW_Basis_Big* pw_big, // for Wannier90 - const Structure_Factor& sf, // for Wannier90 - rdmft::RDMFT &rdmft_solver, // for RDMFT -#ifdef __MLALGO - LCAO_Deepks& ld, -#endif -#ifdef __EXX - Exx_LRI_Interface& exd, - Exx_LRI_Interface>& exc, -#endif - const int istep) -{ - ModuleBase::TITLE("ModuleIO", "ctrl_output_lcao"); - ModuleBase::timer::tick("ModuleIO", "ctrl_output_lcao"); - - const bool out_app_flag = PARAM.inp.out_app_flag; - const bool gamma_only = PARAM.globalv.gamma_only_local; - const int nspin = PARAM.inp.nspin; - const std::string global_out_dir = PARAM.globalv.global_out_dir; - - //------------------------------------------------------------------ - // print out density of states (DOS) - //------------------------------------------------------------------ - if (PARAM.inp.out_dos) - { - ModuleIO::write_dos_lcao(psi, - p_hamilt, - pv, - ucell, - kv, - PARAM.inp.nbands, - pelec->eferm, - pelec->ekb, - pelec->wg, - PARAM.inp.dos_edelta_ev, - PARAM.inp.dos_scale, - PARAM.inp.dos_sigma, - out_app_flag, - istep, - GlobalV::ofs_running); - } - - //------------------------------------------------------------------ - //! 1) Output density matrix DM(R) - //------------------------------------------------------------------ - if(PARAM.inp.out_dmr) - { - const auto& dmr_vector = pelec->get_DM()->get_DMR_vector(); - ModuleIO::write_dmr(dmr_vector, pv, out_app_flag, - ucell.get_iat2iwt(), ucell.nat, istep); - } - - //------------------------------------------------------------------ - //! 2) Output density matrix DM(k) - //------------------------------------------------------------------ - if (PARAM.inp.out_dmk) - { - std::vector efermis(nspin == 2 ? 2 : 1); - for (int ispin = 0; ispin < efermis.size(); ispin++) - { - efermis[ispin] = pelec->eferm.get_efval(ispin); - } - const int precision = 3; - ModuleIO::write_dmk(pelec->get_DM()->get_DMK_vector(), - precision, efermis, &(ucell), pv); - } - - //------------------------------------------------------------------ - // 3) Output H(k) and S(k) matrices for each k-point - //------------------------------------------------------------------ - if (PARAM.inp.out_mat_hs[0]) - { - ModuleIO::write_hsk(global_out_dir, - nspin, - kv.get_nks(), - kv.get_nkstot(), - kv.ik2iktot, - kv.isk, - p_hamilt, - pv, - gamma_only, - out_app_flag, - istep, - GlobalV::ofs_running); - } - - //------------------------------------------------------------------ - // 4) Output electronic wavefunctions Psi(k) - //------------------------------------------------------------------ - if (elecstate::ElecStateLCAO::out_wfc_lcao) - { - ModuleIO::write_wfc_nao(elecstate::ElecStateLCAO::out_wfc_lcao, - out_app_flag, - psi[0], - pelec->ekb, - pelec->wg, - kv.kvec_c, - kv.ik2iktot, - kv.get_nkstot(), - pv, - nspin, - istep); - } - - //------------------------------------------------------------------ - //! 5) Output DeePKS information - //------------------------------------------------------------------ -#ifdef __MLALGO - // need control parameter - hamilt::HamiltLCAO* p_ham_deepks = p_hamilt; - std::shared_ptr> ld_shared_ptr(&ld, [](LCAO_Deepks*) {}); - LCAO_Deepks_Interface deepks_interface(ld_shared_ptr); - - deepks_interface.out_deepks_labels(pelec->f_en.etot, - kv.get_nks(), - ucell.nat, - PARAM.globalv.nlocal, - pelec->ekb, - kv.kvec_d, - ucell, - orb, - gd, - &pv, - *psi, - pelec->get_DM(), - p_ham_deepks, - -1, // -1 when called in after scf - true, // no used when after scf - GlobalV::MY_RANK, - GlobalV::ofs_running); -#endif - - //------------------------------------------------------------------ - //! 6) Output matrices, where O can be chosen as - //! H, S, dH, dS, T, r. The format is CSR format. - //------------------------------------------------------------------ - hamilt::Hamilt* p_ham_tk = static_cast*>(p_hamilt); - - ModuleIO::output_mat_sparse(PARAM.inp.out_mat_hs2, - PARAM.inp.out_mat_dh, - PARAM.inp.out_mat_ds, - PARAM.inp.out_mat_t, - PARAM.inp.out_mat_r, - istep, - pelec->pot->get_effective_v(), - pv, - gk, - two_center_bundle, - orb, - ucell, - gd, - kv, - p_ham_tk); - - //------------------------------------------------------------------ - //! 7) Output kinetic matrix - //------------------------------------------------------------------ - if (PARAM.inp.out_mat_tk[0]) - { - hamilt::HS_Matrix_K hsk(&pv, true); - hamilt::HContainer hR(&pv); - hamilt::Operator* ekinetic - = new hamilt::EkineticNew>(&hsk, - kv.kvec_d, - &hR, - &ucell, - orb.cutoffs(), - &gd, - two_center_bundle.kinetic_orb.get()); - - const int nspin_k = (nspin == 2 ? 2 : 1); - for (int ik = 0; ik < kv.get_nks() / nspin_k; ++ik) - { - ekinetic->init(ik); - - const int out_label = 1; // 1: .txt, 2: .dat - - std::string t_fn = ModuleIO::filename_output(global_out_dir, - "tk","nao",ik,kv.ik2iktot, - PARAM.inp.nspin,kv.get_nkstot(), - out_label,out_app_flag, - gamma_only,istep); - - ModuleIO::save_mat(istep, - hsk.get_hk(), - PARAM.globalv.nlocal, - false, // bit - PARAM.inp.out_mat_tk[1], - 1, // true for upper triangle matrix - PARAM.inp.out_app_flag, - t_fn, - pv, - GlobalV::DRANK); - } - - delete ekinetic; - } - - //------------------------------------------------------------------ - //! 8) Output expectation of angular momentum operator - //------------------------------------------------------------------ - if (PARAM.inp.out_mat_l[0]) - { - ModuleIO::AngularMomentumCalculator mylcalculator( - PARAM.inp.orbital_dir, - ucell, - PARAM.inp.search_radius, - PARAM.inp.test_deconstructor, - PARAM.inp.test_grid, - PARAM.inp.test_atom_input, - PARAM.globalv.search_pbc, - &GlobalV::ofs_running, - GlobalV::MY_RANK - ); - mylcalculator.calculate(PARAM.inp.suffix, - global_out_dir, - ucell, - PARAM.inp.out_mat_l[1], - GlobalV::MY_RANK); - } - - //------------------------------------------------------------------ - //! 9) Output Mulliken charge - //------------------------------------------------------------------ - if (PARAM.inp.out_mul) - { - ModuleIO::cal_mag(&pv, - p_hamilt, - kv, - pelec, - two_center_bundle, - orb, - ucell, - gd, - istep, - true); - } - - //------------------------------------------------------------------ - //! 10) Output atomic magnetization by using 'spin_constraint' - //------------------------------------------------------------------ - if (PARAM.inp.sc_mag_switch) - { - spinconstrain::SpinConstrain& sc = spinconstrain::SpinConstrain::getScInstance(); - sc.cal_mi_lcao(istep); - sc.print_Mi(GlobalV::ofs_running); - sc.print_Mag_Force(GlobalV::ofs_running); - } - - //------------------------------------------------------------------ - //! 11) Output Berry phase - //------------------------------------------------------------------ - if (PARAM.inp.calculation == "nscf" && berryphase::berry_phase_flag && ModuleSymmetry::Symmetry::symm_flag != 1) - { - std::cout << FmtCore::format("\n * * * * * *\n << Start %s.\n", "Berry phase calculation"); - berryphase bp(&pv); - bp.lcao_init(ucell, gd, kv, gt, orb); - // additional step before calling macroscopic_polarization - bp.Macroscopic_polarization(ucell, pw_wfc->npwk_max, psi, pw_rho, pw_wfc, kv); - std::cout << FmtCore::format(" >> Finish %s.\n * * * * * *\n", "Berry phase calculation"); - } - - //------------------------------------------------------------------ - //! 12) Wannier90 interface in LCAO basis - // added by jingan in 2018.11.7 - //------------------------------------------------------------------ - if (PARAM.inp.calculation == "nscf" && PARAM.inp.towannier90) - { - std::cout << FmtCore::format("\n * * * * * *\n << Start %s.\n", "Wave function to Wannier90"); - if (PARAM.inp.wannier_method == 1) - { - toWannier90_LCAO_IN_PW wan(PARAM.inp.out_wannier_mmn, - PARAM.inp.out_wannier_amn, - PARAM.inp.out_wannier_unk, - PARAM.inp.out_wannier_eig, - PARAM.inp.out_wannier_wvfn_formatted, - PARAM.inp.nnkpfile, - PARAM.inp.wannier_spin); - wan.set_tpiba_omega(ucell.tpiba, ucell.omega); - wan.calculate(ucell,pelec->ekb,pw_wfc,pw_big, - sf,kv,psi,&pv); - } - else if (PARAM.inp.wannier_method == 2) - { - toWannier90_LCAO wan(PARAM.inp.out_wannier_mmn, - PARAM.inp.out_wannier_amn, - PARAM.inp.out_wannier_unk, - PARAM.inp.out_wannier_eig, - PARAM.inp.out_wannier_wvfn_formatted, - PARAM.inp.nnkpfile, - PARAM.inp.wannier_spin, - orb); - - wan.calculate(ucell, gd, pelec->ekb, kv, *psi, &pv); - } - std::cout << FmtCore::format(" >> Finish %s.\n * * * * * *\n", "Wave function to Wannier90"); - } - - -#ifdef __EXX - //------------------------------------------------------------------ - //! 13) Output Hexx matrix in LCAO basis - // (see `out_chg` in docs/advanced/input_files/input-main.md) - //------------------------------------------------------------------ - if (PARAM.inp.out_chg[0]) - { - if (GlobalC::exx_info.info_global.cal_exx && PARAM.inp.calculation != "nscf") // Peize Lin add if 2022.11.14 - { - const std::string file_name_exx = global_out_dir - + "HexxR" + std::to_string(GlobalV::MY_RANK); - if (GlobalC::exx_info.info_ri.real_number) - { - ModuleIO::write_Hexxs_csr(file_name_exx, ucell, exd.get_Hexxs()); - } - else - { - ModuleIO::write_Hexxs_csr(file_name_exx, ucell, exc.get_Hexxs()); - } - } - } - - //------------------------------------------------------------------ - //! 14) Write RPA information in LCAO basis - //------------------------------------------------------------------ - if (PARAM.inp.rpa) - { - RPA_LRI rpa_lri_double(GlobalC::exx_info.info_ri); - rpa_lri_double.cal_postSCF_exx(*dynamic_cast*>(pelec)->get_DM(), - MPI_COMM_WORLD, - ucell, - kv, - orb); - rpa_lri_double.init(MPI_COMM_WORLD, kv, orb.cutoffs()); - rpa_lri_double.out_for_RPA(ucell, pv, *psi, pelec); - } -#endif - - //------------------------------------------------------------------ - //! 18) Perform RDMFT calculations, added by jghan, 2024-10-17 - //------------------------------------------------------------------ - if (PARAM.inp.rdmft == true) - { - ModuleBase::matrix occ_num(pelec->wg); - for (int ik = 0; ik < occ_num.nr; ++ik) - { - for (int inb = 0; inb < occ_num.nc; ++inb) - { - occ_num(ik, inb) /= kv.wk[ik]; - } - } - rdmft_solver.update_elec(ucell, occ_num, *psi); - - //! initialize the gradients of Etotal with respect to occupation numbers and wfc, - //! and set all elements to 0. - //! dedocc = d E/d Occ_Num - ModuleBase::matrix dedocc(pelec->wg.nr, pelec->wg.nc, true); - - //! dedwfc = d E/d wfc - psi::Psi dedwfc(psi->get_nk(), psi->get_nbands(), psi->get_nbasis(), kv.ngk, true); - dedwfc.zero_out(); - - double etot_rdmft = rdmft_solver.run(dedocc, dedwfc); - } - - //------------------------------------------------------------------ - //! Output quasi orbitals - //------------------------------------------------------------------ - if (PARAM.inp.qo_switch) - { - toQO tqo(PARAM.inp.qo_basis, PARAM.inp.qo_strategy, PARAM.inp.qo_thr, PARAM.inp.qo_screening_coeff); - tqo.initialize(global_out_dir, - PARAM.inp.pseudo_dir, - PARAM.inp.orbital_dir, - &ucell, - kv.kvec_d, - GlobalV::ofs_running, - GlobalV::MY_RANK, - GlobalV::NPROC); - tqo.calculate(); - } - - - ModuleBase::timer::tick("ModuleIO", "ctrl_output_lcao"); -} - -} // End ModuleIO - - -// For gamma only -template void ModuleIO::ctrl_output_lcao(UnitCell& ucell, - K_Vectors& kv, - elecstate::ElecStateLCAO* pelec, - Parallel_Orbitals& pv, - Grid_Driver& gd, - psi::Psi* psi, - hamilt::HamiltLCAO* p_hamilt, - TwoCenterBundle &two_center_bundle, - Gint_k &gk, - LCAO_Orbitals &orb, - const ModulePW::PW_Basis_K* pw_wfc, // for berryphase - const ModulePW::PW_Basis* pw_rho, // for berryphase - Grid_Technique >, // for berryphase - const ModulePW::PW_Basis_Big* pw_big, // for Wannier90 - const Structure_Factor& sf, // for Wannier90 - rdmft::RDMFT &rdmft_solver, // for RDMFT -#ifdef __MLALGO - LCAO_Deepks& ld, -#endif -#ifdef __EXX - Exx_LRI_Interface& exd, - Exx_LRI_Interface>& exc, -#endif - const int istep); - -// For multiple k-points -template void ModuleIO::ctrl_output_lcao, double>(UnitCell& ucell, - K_Vectors& kv, - elecstate::ElecStateLCAO>* pelec, - Parallel_Orbitals& pv, - Grid_Driver& gd, - psi::Psi>* psi, - hamilt::HamiltLCAO, double>* p_hamilt, - TwoCenterBundle &two_center_bundle, - Gint_k &gk, - LCAO_Orbitals &orb, - const ModulePW::PW_Basis_K* pw_wfc, // for berryphase - const ModulePW::PW_Basis* pw_rho, // for berryphase - Grid_Technique >, // for berryphase - const ModulePW::PW_Basis_Big* pw_big, // for Wannier90 - const Structure_Factor& sf, // for Wannier90 - rdmft::RDMFT, double> &rdmft_solver, // for RDMFT -#ifdef __MLALGO - LCAO_Deepks>& ld, -#endif -#ifdef __EXX - Exx_LRI_Interface, double>& exd, - Exx_LRI_Interface, std::complex>& exc, -#endif - const int istep); - -template void ModuleIO::ctrl_output_lcao, std::complex>(UnitCell& ucell, - K_Vectors& kv, - elecstate::ElecStateLCAO>* pelec, - Parallel_Orbitals& pv, - Grid_Driver& gd, - psi::Psi>* psi, - hamilt::HamiltLCAO, std::complex>* p_hamilt, - TwoCenterBundle &two_center_bundle, - Gint_k &gk, - LCAO_Orbitals &orb, - const ModulePW::PW_Basis_K* pw_wfc, // for berryphase - const ModulePW::PW_Basis* pw_rho, // for berryphase - Grid_Technique >, // for berryphase - const ModulePW::PW_Basis_Big* pw_big, // for Wannier90 - const Structure_Factor& sf, // for Wannier90 - rdmft::RDMFT, std::complex> &rdmft_solver, // for RDMFT -#ifdef __MLALGO - LCAO_Deepks>& ld, -#endif -#ifdef __EXX - Exx_LRI_Interface, double>& exd, - Exx_LRI_Interface, std::complex>& exc, -#endif - const int istep); - diff --git a/source/source_io/ctrl_output_lcao.h b/source/source_io/ctrl_output_lcao.h deleted file mode 100644 index d783eb0b3f..0000000000 --- a/source/source_io/ctrl_output_lcao.h +++ /dev/null @@ -1,49 +0,0 @@ -#ifndef CTRL_OUTPUT_LCAO_H -#define CTRL_OUTPUT_LCAO_H - -#include - -#include "source_cell/unitcell.h" // use UnitCell -#include "source_cell/klist.h" // use K_Vectors -#include "source_estate/elecstate_lcao.h" // use elecstate::ElecStateLCAO -#include "source_psi/psi.h" // use Psi -#include "source_lcao/hamilt_lcao.h" // use hamilt::HamiltLCAO -#include "source_basis/module_nao/two_center_bundle.h" // use TwoCenterBundle -#include "source_lcao/module_gint/gint_k.h" // use Gint_k -#include "source_basis/module_pw/pw_basis_k.h" // use ModulePW::PW_Basis_K and ModulePW::PW_Basis -#include "source_pw/module_pwdft/structure_factor.h" // use Structure_Factor -#include "source_lcao/module_rdmft/rdmft.h" // use RDMFT codes -#ifdef __EXX -#include "source_lcao/module_ri/Exx_LRI_interface.h" // use EXX codes -#endif - -namespace ModuleIO -{ - // in principle, we need to add const for all of the variables, mohan note 2025-06-05 - template - void ctrl_output_lcao(UnitCell& ucell, - K_Vectors& kv, - elecstate::ElecStateLCAO* pelec, - Parallel_Orbitals& pv, - Grid_Driver& gd, - psi::Psi* psi, - hamilt::HamiltLCAO* p_hamilt, - TwoCenterBundle &two_center_bundle, - Gint_k &gk, - LCAO_Orbitals &orb, - const ModulePW::PW_Basis_K* pw_wfc, // for berryphase - const ModulePW::PW_Basis* pw_rho, // for berryphase - Grid_Technique >, // for berryphase - const ModulePW::PW_Basis_Big* pw_big, // for Wannier90 - const Structure_Factor& sf, // for Wannier90 - rdmft::RDMFT &rdmft_solver, // for RDMFT -#ifdef __MLALGO - LCAO_Deepks& ld, -#endif -#ifdef __EXX - Exx_LRI_Interface& exd, - Exx_LRI_Interface>& exc, -#endif - const int istep); -} -#endif diff --git a/source/source_io/file_reader.cpp b/source/source_io/file_reader.cpp deleted file mode 100644 index 5f24150518..0000000000 --- a/source/source_io/file_reader.cpp +++ /dev/null @@ -1,50 +0,0 @@ -#include "file_reader.h" - -#include "source_base/tool_quit.h" - -namespace ModuleIO -{ - -// Constructor -FileReader::FileReader(std::string filename) -{ - ifs.open(filename.c_str()); - if (!ifs.is_open()) - { - ModuleBase::WARNING_QUIT("FileReader::FileReader", "Error opening file"); - } -} - -// Destructor -FileReader::~FileReader() -{ - if (ifs.is_open()) - { - ifs.close(); - } -} - -// Function to check if file is open -bool FileReader::isOpen() const -{ - return ifs.is_open(); -} - -// Function to read a line and return string stream -void FileReader::readLine() -{ - // add warning if file is not open - if (!ifs.eof()) - { - std::string line; - std::getline(ifs, line); - ss.clear(); - ss.str(line); - } - else - { - ModuleBase::WARNING_QUIT("FileReader::readLine", "End of file"); - } -} - -} // namespace ModuleIO \ No newline at end of file diff --git a/source/source_io/filename.cpp b/source/source_io/filename.cpp deleted file mode 100644 index d2b22fb084..0000000000 --- a/source/source_io/filename.cpp +++ /dev/null @@ -1,111 +0,0 @@ -#include -#include "filename.h" -#include "source_base/tool_quit.h" - -namespace ModuleIO -{ - -std::string filename_output( - const std::string &directory, - const std::string &property, - const std::string &basis, - const int ik_local, // the ik index within each pool - const std::vector &ik2iktot, - const int nspin, - const int nkstot, - const int out_type, - const bool out_app_flag, - const bool gamma_only, - const int istep) -{ - // output filename = "{PARAM.globalv.global_out_dir}/property{s}{spin index} - // {k(optional)}{k-point index}{g(optional)}{geometry index1}{_basis(nao|pw)} - // + {".txt"/".dat"}" - - std::set valid_properties = {"wf", "chg", "hk", "sk", "tk", "vxc"}; - if (valid_properties.find(property) == valid_properties.end()) - { - ModuleBase::WARNING_QUIT("ModuleIO::filename_output", "unknown property in filename function"); - } - - std::set valid_basis = {"pw", "nao"}; - if (valid_basis.find(basis) == valid_basis.end()) - { - ModuleBase::WARNING_QUIT("ModuleIO::filename_output", "unknown basis in filename function"); - } - - assert(ik_local>=0); - // mohan update 2025.05.07, if KPAR>1, "<" works - assert(ik2iktot.size() <= nkstot); - assert(nspin>0); - - // spin index - int is0 = -1; - // ik0 is the k-point index, starting from 0 - int ik0 = ik2iktot[ik_local]; - - if(nspin == 1) - { - is0 = 1; - } - else if(nspin == 2) - { - const int half_k = nkstot/2; - if(ik0 >= half_k) - { - is0 = 2; - ik0 -= half_k; - } - else - { - is0 = 1; - } - } - else if(nspin==4) - { - is0 = 12; - } - - // spin part - std::string spin_block; - spin_block = "s" + std::to_string(is0); - - // k-point part - std::string kpoint_block; - if(gamma_only) - { - // do nothing; - } - else - { - kpoint_block = "k" + std::to_string(ik0+1); - } - - std::string istep_block - = (istep >= 0 && (!out_app_flag)) - ? "g" + std::to_string(istep + 1) - : ""; // only when istep >= 0 and out_app_flag is false will write each wfc to a separate file - - std::string suffix_block; - if (out_type == 1) - { - suffix_block = ".txt"; - } - else if (out_type == 2) - { - suffix_block = ".dat"; - } - else - { - std::cout << "WARNING: the type of output wave function is not 1 or 2, so 1 is chosen." << std::endl; - suffix_block = ".txt"; - } - - std::string fn_out - = directory + property + spin_block + kpoint_block - + istep_block + "_" + basis + suffix_block; - - return fn_out; -} - -} diff --git a/source/source_io/get_wf_lcao.h b/source/source_io/get_wf_lcao.h deleted file mode 100644 index b182e352bd..0000000000 --- a/source/source_io/get_wf_lcao.h +++ /dev/null @@ -1,126 +0,0 @@ -#ifndef GET_WF_LCAO_H -#define GET_WF_LCAO_H - -#include "source_lcao/module_gint/gint_gamma.h" -#include "source_lcao/module_gint/gint_k.h" -#include "source_estate/elecstate.h" - -class Get_wf_lcao -{ - public: - Get_wf_lcao(const elecstate::ElecState* pes); - ~Get_wf_lcao(); - - /// For gamma_only - void begin(const UnitCell& ucell, - const psi::Psi* psid, - const ModulePW::PW_Basis_K* pw_wfc, - const Parallel_Grid& pgrid, - const Parallel_Orbitals& para_orb, - Gint_Gamma& gg, - const int& out_wfc_pw, - const K_Vectors& kv, - const double nelec, - const std::vector& out_wfc_norm, - const std::vector& out_wfc_re_im, - const int nbands, - const int nspin, - const int nlocal, - const std::string& global_out_dir, - std::ofstream& ofs_running); - - /// tmp, delete after Gint is refactored. - void begin(const UnitCell& ucell, - const psi::Psi* psid, - const ModulePW::PW_Basis_K* pw_wfc, - const Parallel_Grid& pgrid, - const Parallel_Orbitals& para_orb, - Gint_k& gg, - const int& out_wfc_pw, - const K_Vectors& kv, - const double nelec, - const std::vector& out_wfc_norm, - const std::vector& out_wfc_re_im, - const int nbands, - const int nspin, - const int nlocal, - const std::string& global_out_dir, - std::ofstream& ofs_running) - { - throw std::logic_error("gint_k should use with complex psi."); - }; - - /// For multi-k - void begin(const UnitCell& ucell, - const psi::Psi>* psi, - const ModulePW::PW_Basis_K* pw_wfc, - const Parallel_Grid& pgrid, - const Parallel_Orbitals& para_orb, - Gint_k& gk, - const int& out_wfc_pw, - const K_Vectors& kv, - const double nelec, - const std::vector& out_wfc_norm, - const std::vector& out_wfc_re_im, - const int nbands, - const int nspin, - const int nlocal, - const std::string& global_out_dir, - std::ofstream& ofs_running); - - /// tmp, delete after Gint is refactored. - void begin(const UnitCell& ucell, - const psi::Psi>* psi, - const ModulePW::PW_Basis_K* pw_wfc, - const Parallel_Grid& pgrid, - const Parallel_Orbitals& para_orb, - Gint_Gamma& gk, - const int& out_wfc_pw, - const K_Vectors& kv, - const double nelec, - const std::vector& out_wfc_norm, - const std::vector& out_wfc_re_im, - const int nbands, - const int nspin, - const int nlocal, - const std::string& global_out_dir, - std::ofstream& ofs_running) - { - throw std::logic_error("gint_gamma should use with real psi."); - }; - - private: - void prepare_get_wf(std::ofstream& ofs_running); - - void select_bands(const std::vector& out_wfc_kb, const int nbands, const int fermi_band); - - void set_pw_wfc(const ModulePW::PW_Basis_K* pw_wfc, - const int& ik, - const int& ib, - const int& nspin, - const double* const* const rho, - psi::Psi>& wfc_g); - - int globalIndex(int localindex, int nblk, int nprocs, int myproc); - - int localIndex(int globalindex, int nblk, int nprocs, int& myproc); - -#ifdef __MPI - template - int set_wfc_grid(const int naroc[2], - const int nb, - const int dim0, - const int dim1, - const int iprow, - const int ipcol, - const T* in, - T** out, - const std::vector& trace_lo); - template - void wfc_2d_to_grid(const T* wfc_2d, const Parallel_Orbitals& pv, T** wfc_grid, const std::vector& trace_lo); -#endif // __MPI - - std::vector bands_picked_; - const elecstate::ElecState* pes_ = nullptr; -}; -#endif // GET_WF_LCAO_H diff --git a/source/source_io/input_help.cpp b/source/source_io/input_help.cpp new file mode 100644 index 0000000000..60b39793a6 --- /dev/null +++ b/source/source_io/input_help.cpp @@ -0,0 +1,649 @@ +#include "input_help.h" +#include "module_parameter/read_input.h" // For accessing Input_Item documentation +#include +#include +#include +#include +#include +#include + +namespace ModuleIO { + +namespace { +// Constants for display formatting +constexpr size_t MAX_WIDTH = 70; +constexpr size_t INDENT_SIZE = 2; +constexpr size_t LIST_INDENT = 4; +constexpr size_t NESTED_LIST_INDENT = 6; + +/** + * Word-wrap text at specified width with given indentation. + * @param text Text to wrap + * @param width Maximum line width + * @param indent Number of spaces to indent each line + * @param first_indent Number of spaces for the first line (if different) + * @return Word-wrapped text + */ +std::string word_wrap(const std::string& text, size_t width, size_t indent, size_t first_indent) { + if (text.empty()) { + return ""; + } + + std::string result; + std::string indent_str(indent, ' '); + std::string first_indent_str(first_indent, ' '); + size_t col = first_indent; + + std::istringstream iss(text); + std::string word; + bool first = true; + + while (iss >> word) { + if (first) { + result = first_indent_str + word; + col = first_indent + word.length(); + first = false; + } else if (col + 1 + word.length() > width) { + result += "\n" + indent_str + word; + col = indent + word.length(); + } else { + result += " " + word; + col += 1 + word.length(); + } + } + return result; +} + +/** + * Word-wrap with same indent for all lines. + */ +std::string word_wrap(const std::string& text, size_t width, size_t indent) { + return word_wrap(text, width, indent, indent); +} + +/** + * Format a structured description that may contain markers for lists and paragraphs. + * + * Markers: + * \n\n - paragraph break (blank line) + * \n* - top-level list item + * \n * - nested list item + * [NOTE] - note/blockquote + * + * @param desc The description string with embedded markers + * @return Formatted string for terminal display + */ +std::string format_structured_description(const std::string& desc) { + // Check if description contains any structure markers + bool has_structure = (desc.find("\n\n") != std::string::npos || + desc.find("\n*") != std::string::npos || + desc.find("[NOTE]") != std::string::npos); + + if (!has_structure) { + // Simple case: just word-wrap with basic indent + return word_wrap(desc, MAX_WIDTH, INDENT_SIZE); + } + + std::string result; + size_t pos = 0; + std::string current_text; + bool at_line_start = true; // Track if we're at the start of a logical line + + while (pos < desc.length()) { + // Check for paragraph break (\n\n) + if (pos + 1 < desc.length() && desc[pos] == '\n' && desc[pos + 1] == '\n') { + // Flush current text + if (!current_text.empty()) { + if (!result.empty() && result.back() != '\n') { + result += "\n"; + } + result += word_wrap(current_text, MAX_WIDTH, INDENT_SIZE); + current_text.clear(); + } + result += "\n\n"; // Two newlines: one to end current line, one for blank line + pos += 2; + at_line_start = true; + continue; + } + + // Check for nested list item (\n * or at line start with leading spaces and *) + if ((pos + 3 < desc.length() && desc[pos] == '\n' && + desc[pos + 1] == ' ' && desc[pos + 2] == ' ' && desc[pos + 3] == '*') || + (at_line_start && pos + 2 < desc.length() && + desc[pos] == ' ' && desc[pos + 1] == ' ' && desc[pos + 2] == '*')) { + // Flush current text + if (!current_text.empty()) { + if (!result.empty() && result.back() != '\n') { + result += "\n"; + } + result += word_wrap(current_text, MAX_WIDTH, INDENT_SIZE); + current_text.clear(); + } + // Skip the marker + if (desc[pos] == '\n') { + pos += 4; // Skip "\n *" + } else { + pos += 3; // Skip " *" + } + // Skip any whitespace after * + while (pos < desc.length() && desc[pos] == ' ') { + pos++; + } + // Collect list item text until next marker or end + std::string item_text; + while (pos < desc.length()) { + if (desc[pos] == '\n') { + break; // Stop at any newline marker + } + item_text += desc[pos++]; + } + // Format nested list item with deeper indentation (indent=6 for continuation, first_indent=4) + if (!result.empty() && result.back() != '\n') { + result += "\n"; + } + std::string prefix = "- "; + result += word_wrap(prefix + item_text, MAX_WIDTH, NESTED_LIST_INDENT, LIST_INDENT); + at_line_start = false; + continue; + } + + // Check for top-level list item (\n* or * at line start) + if ((pos + 1 < desc.length() && desc[pos] == '\n' && desc[pos + 1] == '*') || + (at_line_start && desc[pos] == '*')) { + // Flush current text + if (!current_text.empty()) { + if (!result.empty() && result.back() != '\n') { + result += "\n"; + } + result += word_wrap(current_text, MAX_WIDTH, INDENT_SIZE); + current_text.clear(); + } + // Skip the marker + if (desc[pos] == '\n') { + pos += 2; // Skip "\n*" + } else { + pos += 1; // Skip "*" + } + // Skip any whitespace after * + while (pos < desc.length() && desc[pos] == ' ') { + pos++; + } + // Collect list item text until next marker or end + std::string item_text; + while (pos < desc.length()) { + if (desc[pos] == '\n') { + break; // Stop at any newline marker + } + item_text += desc[pos++]; + } + // Format list item with " - " prefix (indent=4 for continuation, first_indent=2) + if (!result.empty() && result.back() != '\n') { + result += "\n"; + } + std::string prefix = "- "; + result += word_wrap(prefix + item_text, MAX_WIDTH, LIST_INDENT, INDENT_SIZE); + at_line_start = false; + continue; + } + + // Check for [NOTE] marker + if (pos + 6 <= desc.length() && desc.substr(pos, 6) == "[NOTE]") { + // Flush current text + if (!current_text.empty()) { + if (!result.empty() && result.back() != '\n') { + result += "\n"; + } + result += word_wrap(current_text, MAX_WIDTH, INDENT_SIZE); + current_text.clear(); + } + pos += 6; // Skip "[NOTE]" + // Skip any whitespace after [NOTE] + while (pos < desc.length() && desc[pos] == ' ') { + pos++; + } + // Collect note text until next marker or end + std::string note_text; + while (pos < desc.length()) { + if (desc[pos] == '\n') { + break; // Stop at any newline marker + } + note_text += desc[pos++]; + } + // Format note with "Note: " prefix + if (!result.empty() && result.back() != '\n') { + result += "\n"; + } + result += word_wrap("Note: " + note_text, MAX_WIDTH, INDENT_SIZE + 6, INDENT_SIZE); + at_line_start = false; + continue; + } + + // Regular character - accumulate + at_line_start = false; + current_text += desc[pos++]; + } + + // Flush any remaining text + if (!current_text.empty()) { + if (!result.empty() && result.back() != '\n') { + result += "\n"; + } + result += word_wrap(current_text, MAX_WIDTH, INDENT_SIZE); + } + + return result; +} +} // anonymous namespace + +// ---- YAML serialization helpers (anonymous namespace) ---- +namespace { + +/** + * Emit a string as a YAML literal block scalar (|). + * Each line is prefixed with `indent` spaces. Empty lines are preserved. + */ +void emit_block_scalar(std::ostream& os, const std::string& text, int indent) { + os << "|\n"; + std::string prefix(indent, ' '); + std::istringstream iss(text); + std::string line; + while (std::getline(iss, line)) { + if (line.empty()) { + os << "\n"; + } else { + os << prefix << line << "\n"; + } + } + // If the text doesn't end with a newline, there's nothing extra to emit +} + +/** + * Return the value double-quoted with escaping if it contains + * YAML-special characters, or unquoted if safe. + */ +std::string yaml_quote_if_needed(const std::string& value) { + if (value.empty()) { + return "\"\""; + } + + // Check for YAML boolean keywords (case-insensitive) + std::string lower = value; + std::transform(lower.begin(), lower.end(), lower.begin(), + [](unsigned char c) { return std::tolower(c); }); + if (lower == "true" || lower == "false" || lower == "yes" || lower == "no" + || lower == "on" || lower == "off" || lower == "null" || lower == "~" + || lower == ".inf" || lower == "-.inf" || lower == ".nan") { + return "\"" + value + "\""; + } + + // Quote numeric-looking values so YAML parsers keep them as strings. + // Matches integers (0, -1, 0x1a, 0o17), floats (1.0, -3.14, 1.0e-6), etc. + { + bool all_numeric_chars = true; + for (char c : value) { + if (!std::isdigit(static_cast(c)) + && c != '.' && c != '-' && c != '+' && c != 'e' && c != 'E' + && c != 'x' && c != 'X' && c != 'o' && c != 'O' + && c != 'a' && c != 'b' && c != 'c' && c != 'd' && c != 'f' + && c != 'A' && c != 'B' && c != 'C' && c != 'D' && c != 'F') { + all_numeric_chars = false; + break; + } + } + if (all_numeric_chars) { + return "\"" + value + "\""; + } + } + + // Check for characters that need quoting + bool needs_quoting = false; + for (char c : value) { + if (c == ':' || c == '#' || c == '[' || c == ']' || + c == '{' || c == '}' || c == '\\' || c == '*' || + c == '&' || c == '!' || c == '|' || c == '>' || + c == '\'' || c == '"' || c == '%' || c == '@' || + c == '`' || c == ',' || c == '\n' || c == '\r') { + needs_quoting = true; + break; + } + } + + // Also quote if starts/ends with whitespace or starts with special chars + if (!needs_quoting) { + if (value.front() == ' ' || value.back() == ' ' || + value.front() == '-' || value.front() == '?' || + value.front() == '{' || value.front() == '[') { + needs_quoting = true; + } + } + + if (!needs_quoting) { + return value; + } + + // Double-quote with escaping + std::string result = "\""; + for (char c : value) { + if (c == '"') { + result += "\\\""; + } else if (c == '\\') { + result += "\\\\"; + } else if (c == '\n') { + result += "\\n"; + } else if (c == '\r') { + result += "\\r"; + } else if (c == '\t') { + result += "\\t"; + } else { + result += c; + } + } + result += "\""; + return result; +} + +} // anonymous namespace (YAML helpers) + +// Static member definitions +std::map ParameterHelp::registry_; +std::map ParameterHelp::lowercase_to_actual_; +std::once_flag ParameterHelp::init_flag_; + +void ParameterHelp::initialize() { + std::call_once(init_flag_, build_registry); +} + +void ParameterHelp::build_registry() { + // Create a ReadInput instance to access Input_Item documentation + // Use rank -1 to indicate help-system mode (no MPI operations) + ReadInput reader(-1); + + // Build registry from Input_Item objects + const auto& input_lists = reader.get_input_lists(); + + for (const auto& pair : input_lists) { + const auto& item = pair.second; + ParameterMetadata meta; + meta.name = item.label; + meta.category = item.category; + meta.type = item.type; + meta.description = item.description; + meta.default_value = item.default_value; + meta.unit = item.unit; + meta.availability = item.availability; + + // Pre-compute lowercase name for fast fuzzy matching + meta.name_lowercase = to_lowercase(item.label); + + registry_[meta.name] = meta; + + // Pre-compute lowercase to actual name mapping for O(log n) case-insensitive lookup + lowercase_to_actual_[meta.name_lowercase] = meta.name; + } +} + +bool ParameterHelp::show_parameter_help(const std::string& key, std::ostream& os) { + initialize(); + + // Use optimized case-insensitive lookup + auto it = find_case_insensitive(key); + + if (it == registry_.end()) { + return false; + } + + const auto& meta = it->second; + + // Display formatted help information + os << "\n"; + os << "Parameter: " << meta.name << "\n"; + os << "Type: " << meta.type << "\n"; + + if (!meta.default_value.empty()) { + os << "Default: " << meta.default_value << "\n"; + } + + if (!meta.category.empty()) { + os << "Category: " << meta.category << "\n"; + } + + if (!meta.unit.empty()) { + os << "Unit: " << meta.unit << "\n"; + } + + if (!meta.availability.empty()) { + os << "Availability: " << meta.availability << "\n"; + } + + os << "\nDescription:\n"; + + // Use structured formatting for description + os << format_structured_description(meta.description) << "\n\n"; + + return true; +} + +std::vector ParameterHelp::search_parameters(const std::string& query) { + initialize(); + + std::vector results; + std::string query_lower = to_lowercase(query); + + // Search for parameters with case-insensitive substring match + for (const auto& pair : registry_) { + std::string name_lower = to_lowercase(pair.first); + if (name_lower.find(query_lower) != std::string::npos) { + results.push_back(pair.first); + } + } + + // Sort results alphabetically + std::sort(results.begin(), results.end()); + + return results; +} + +void ParameterHelp::show_general_help(std::ostream& os) { + os << "\n"; + os << "ABACUS - Atomic-orbital Based Ab-initio Computation at UStc\n"; + os << "\n"; + os << "Usage: abacus [options]\n"; + os << " -v, -V, --version Display version information\n"; + os << " -i, -I, --info Display detailed build information\n"; + os << " -h, --help [param] Display help for parameter (or this message)\n"; + os << " -s, --search Search for parameters matching query\n"; + os << " --check-input Check input file syntax and exit\n"; + os << " --generate-parameters-yaml\n"; + os << " Dump all parameter metadata as YAML\n"; + os << "\n"; + os << "Common INPUT parameters:\n"; + os << " calculation - Calculation type (scf, relax, md, nscf, etc.)\n"; + os << " basis_type - Basis set type (pw, lcao)\n"; + os << " ecutwfc - Energy cutoff for wavefunctions (Ry)\n"; + os << " ks_solver - Kohn-Sham solver (cg, dav, genelpa, etc.)\n"; + os << " scf_thr - SCF convergence threshold\n"; + os << " pseudo_dir - Directory containing pseudopotential files\n"; + os << "\n"; + os << "For a complete list of parameters, see documentation at:\n"; + os << "https://abacus.deepmodeling.com/\n"; + os << "\n"; + os << "To search for parameters: abacus -s \n"; + os << "To get help on a parameter: abacus -h \n"; + os << "\n"; +} + +void ParameterHelp::generate_yaml(std::ostream& os) { + // Create a ReadInput instance to access Input_Item documentation + // Use rank -1 to indicate help-system mode (no MPI operations) + ReadInput reader(-1); + + const auto& input_lists = reader.get_input_lists(); + + os << "# Auto-generated by: abacus --generate-parameters-yaml\n"; + os << "# Do not edit manually.\n"; + os << "parameters:\n"; + + for (const auto& pair : input_lists) { + const auto& item = pair.second; + + // Skip items without a category (undocumented internal items) + if (item.category.empty()) { + continue; + } + + os << " - name: " << yaml_quote_if_needed(item.label) << "\n"; + os << " category: " << yaml_quote_if_needed(item.category) << "\n"; + os << " type: " << yaml_quote_if_needed(item.type) << "\n"; + + // Description uses block scalar + os << " description: "; + if (item.description.empty()) { + os << "\"\"\n"; + } else { + emit_block_scalar(os, item.description, 6); + } + + os << " default_value: " << yaml_quote_if_needed(item.default_value) << "\n"; + os << " unit: " << yaml_quote_if_needed(item.unit) << "\n"; + os << " availability: " << yaml_quote_if_needed(item.availability) << "\n"; + } +} + +ParameterMetadata ParameterHelp::get_metadata(const std::string& key) { + initialize(); + + // Use optimized case-insensitive lookup + auto it = find_case_insensitive(key); + + if (it != registry_.end()) { + return it->second; // Return copy + } + + // Return empty metadata to indicate not found + return ParameterMetadata(); +} + +std::string ParameterHelp::to_lowercase(const std::string& str) { + std::string result = str; + std::transform(result.begin(), result.end(), result.begin(), + [](unsigned char c) { return std::tolower(c); }); + return result; +} + +std::map::const_iterator +ParameterHelp::find_case_insensitive(const std::string& key) { + // Try exact match first + auto it = registry_.find(key); + if (it != registry_.end()) { + return it; + } + + // Try case-insensitive match using pre-computed mapping (O(log n)) + std::string key_lower = to_lowercase(key); + auto lower_it = lowercase_to_actual_.find(key_lower); + if (lower_it != lowercase_to_actual_.end()) { + return registry_.find(lower_it->second); + } + + return registry_.end(); +} + +int ParameterHelp::levenshtein_distance(const std::string& s1, const std::string& s2) { + const size_t len1 = s1.size(); + const size_t len2 = s2.size(); + + // Space-optimized algorithm: only need two rows instead of full matrix + // This reduces memory usage from O(m*n) to O(n) + std::vector prev(len2 + 1); + std::vector curr(len2 + 1); + + // Initialize first row + for (size_t j = 0; j <= len2; ++j) { + prev[j] = j; + } + + // Calculate distances row by row + for (size_t i = 1; i <= len1; ++i) { + curr[0] = i; + for (size_t j = 1; j <= len2; ++j) { + int cost = (s1[i-1] == s2[j-1]) ? 0 : 1; + + curr[j] = std::min({ + prev[j] + 1, // deletion + curr[j-1] + 1, // insertion + prev[j-1] + cost // substitution + }); + } + std::swap(prev, curr); + } + + return prev[len2]; +} + +std::vector ParameterHelp::find_similar_parameters(const std::string& query, + int max_suggestions, + int max_distance) { + initialize(); + + // If max_distance is 0, return nothing (exact matches are excluded by design) + if (max_distance == 0) { + return std::vector(); + } + + // Store tuples of (effective_distance, parameter_name) + // Effective distance prioritizes prefix/substring matches over pure edit distance + std::vector> candidates; + + std::string query_lower = to_lowercase(query); + + // Calculate distance for each parameter using pre-computed lowercase names + for (const auto& pair : registry_) { + const auto& meta = pair.second; + const std::string& name_lower = meta.name_lowercase; + + int effective_distance; + + // Priority 1: Exact prefix match (e.g., "relax" matches "relax_new") + // Give these the lowest effective distance (0) + if (name_lower.size() > query_lower.size() && + name_lower.compare(0, query_lower.size(), query_lower) == 0 && + name_lower[query_lower.size()] == '_') { + effective_distance = 0; + } + // Priority 2: Substring match (e.g., "cut" matches "ecutwfc") + // Give these a low effective distance (1) + else if (name_lower.find(query_lower) != std::string::npos) { + effective_distance = 1; + } + // Priority 3: Use Levenshtein distance for fuzzy matching + else { + int distance = levenshtein_distance(query_lower, name_lower); + // Only consider parameters within max_distance + if (distance > max_distance || distance == 0) { + continue; // Skip exact matches (distance 0) and too-distant matches + } + effective_distance = distance + 10; // Add offset to prioritize after prefix/substring + } + + candidates.push_back({effective_distance, pair.first}); + } + + // Sort by effective distance (closest first), then alphabetically + std::sort(candidates.begin(), candidates.end(), + [](const std::pair& a, const std::pair& b) { + if (a.first != b.first) { + return a.first < b.first; + } + return a.second < b.second; + }); + + // Extract parameter names, limit to max_suggestions + std::vector results; + for (size_t i = 0; i < candidates.size() && i < static_cast(max_suggestions); ++i) { + results.push_back(candidates[i].second); + } + + return results; +} + +} // namespace ModuleIO diff --git a/source/source_io/input_help.h b/source/source_io/input_help.h new file mode 100644 index 0000000000..c80eecc3d0 --- /dev/null +++ b/source/source_io/input_help.h @@ -0,0 +1,163 @@ +#ifndef INPUT_HELP_H +#define INPUT_HELP_H + +#include +#include +#include +#include +#include + +namespace ModuleIO { + +/** + * @brief Metadata for a single INPUT parameter + */ +struct ParameterMetadata { + std::string name; + std::string type; + std::string description; + std::string default_value; + std::string category; + std::string unit; // Empty string if no unit + std::string availability; // Empty string if always available + std::string name_lowercase; // Pre-computed lowercase for fast fuzzy matching +}; + +/** + * @brief Help system for ABACUS INPUT parameters + * + * This class provides functionality to search for and display help information + * about INPUT parameters. The parameter data is loaded from auto-generated + * code that parses the documentation at build time. + */ +class ParameterHelp { +public: + /** + * @brief Initialize the help registry from generated data + * + * This function is called automatically on first use. It builds the + * parameter registry from the generated PARAMETER_DATA array. + */ + static void initialize(); + + /** + * @brief Display detailed help for a specific parameter + * + * @param key The parameter name to look up (case-insensitive) + * @param os Output stream to write to (default: std::cout) + * @return true if parameter was found and help was displayed, false otherwise + */ + static bool show_parameter_help(const std::string& key, std::ostream& os = std::cout); + + /** + * @brief Search for parameters matching a query string + * + * Performs case-insensitive substring matching on parameter names. + * + * @param query The search query string + * @return Vector of matching parameter names (sorted alphabetically) + */ + static std::vector search_parameters(const std::string& query); + + /** + * @brief Display general help message + * + * Shows usage information and lists commonly used parameters. + * + * @param os Output stream to write to (default: std::cout) + */ + static void show_general_help(std::ostream& os = std::cout); + + /** + * @brief Generate YAML dump of all parameter metadata + * + * Outputs a YAML document suitable for documentation generation. + * Each parameter includes name, category, type, description, + * default_value, unit, and availability fields. + * + * @param os Output stream to write YAML to (default: std::cout) + */ + static void generate_yaml(std::ostream& os = std::cout); + + /** + * @brief Get metadata for a specific parameter + * + * Returns a copy of the parameter metadata. Check if the returned + * metadata has a non-empty name to verify the parameter was found. + * + * @param key The parameter name to look up (case-insensitive) + * @return ParameterMetadata with empty name if not found, otherwise the parameter metadata + * + * Example: + * auto meta = ParameterHelp::get_metadata("ecutwfc"); + * if (!meta.name.empty()) { + * // Parameter found, use meta.description, etc. + * } + */ + static ParameterMetadata get_metadata(const std::string& key); + + /** + * @brief Find similar parameter names for fuzzy matching + * + * Uses a multi-tier matching strategy to find relevant parameters: + * 1. Prefix matches (e.g., "relax" matches "relax_new") - highest priority + * 2. Substring matches (e.g., "cut" matches "ecutwfc") - medium priority + * 3. Levenshtein distance for typos - lowest priority + * + * This ensures semantic relevance: typing "relax" suggests "relax_method" + * instead of random 5-letter parameters like "nelec". + * + * @param query The parameter name to find similar matches for + * @param max_suggestions Maximum number of suggestions to return (default: 5) + * @param max_distance Maximum edit distance for fuzzy matches (default: 3) + * @return Vector of similar parameter names sorted by relevance + */ + static std::vector find_similar_parameters(const std::string& query, + int max_suggestions = 5, + int max_distance = 3); + +private: + static std::map registry_; + static std::map lowercase_to_actual_; + static std::once_flag init_flag_; + + /** + * @brief Build the registry from generated PARAMETER_DATA + * + * This is called once during initialization to populate the registry + * from the static constexpr data array. Thread-safe via std::call_once. + */ + static void build_registry(); + + /** + * @brief Find parameter with case-insensitive matching + * + * Uses pre-computed lowercase mappings for O(log n) performance. + * + * @param key The parameter name to look up (any case) + * @return Iterator to the parameter in registry_, or registry_.end() if not found + */ + static std::map::const_iterator + find_case_insensitive(const std::string& key); + + /** + * @brief Convert string to lowercase for case-insensitive comparison + */ + static std::string to_lowercase(const std::string& str); + + /** + * @brief Calculate Levenshtein distance between two strings + * + * Returns the minimum number of single-character edits (insertions, + * deletions, or substitutions) required to change one string into another. + * + * @param s1 First string + * @param s2 Second string + * @return Edit distance between the strings + */ + static int levenshtein_distance(const std::string& s1, const std::string& s2); +}; + +} // namespace ModuleIO + +#endif // INPUT_HELP_H diff --git a/source/source_io/input_item.h b/source/source_io/input_item.h deleted file mode 100644 index cfa2ee21f7..0000000000 --- a/source/source_io/input_item.h +++ /dev/null @@ -1,65 +0,0 @@ -#ifndef INPUT_ITEM_H -#define INPUT_ITEM_H -#include -#include -#include -#include -#include - -#include "source_io/module_parameter/parameter.h" -namespace ModuleIO -{ -class Input_Item -{ - public: - Input_Item(){}; - - Input_Item(const std::string& label_in) - { - label = label_in; - } - - Input_Item(const Input_Item& item) - { - label = item.label; - str_values = item.str_values; - final_value.str(item.final_value.str()); - annotation = item.annotation; - read_value = item.read_value; - check_value = item.check_value; - reset_value = item.reset_value; - get_final_value = item.get_final_value; - } - - std::string label; ///< label of the input item - std::vector str_values; ///< string values of the input item - std::stringstream final_value; ///< final value for writing to output INPUT file - - bool is_read() const ///< check if the input item is read - { - return !str_values.empty(); - } - - size_t get_size() const ///< get size of the input item - { - return str_values.size(); - } - - std::string annotation; ///< annotation of the input item - - // ====== !!! These functions are complete. ====== - // ====== !!! Do not add any more functions here. ====== - /// read value function - std::function read_value = [](const Input_Item& item, Parameter& param) {}; - /// check value function - std::function check_value = nullptr; - /// reset this value when some conditions are met - /// e.g. should only reset the value of this item - std::function reset_value = nullptr; - /// get final_value function for output INPUT file - std::function get_final_value = nullptr; - // ====== !!! Do not add any more functions here. ====== -}; - -} // namespace ModuleIO -#endif // INPUT_ITEM_H \ No newline at end of file diff --git a/source/source_io/io_dmk.cpp b/source/source_io/io_dmk.cpp deleted file mode 100644 index 01015e1e15..0000000000 --- a/source/source_io/io_dmk.cpp +++ /dev/null @@ -1,408 +0,0 @@ -#include "source_io/io_dmk.h" - -#include "source_base/parallel_common.h" -#include "source_base/module_external/scalapack_connector.h" -#include "source_base/timer.h" -#include "source_io/module_parameter/parameter.h" - -/* -The format of the DMK file is as follows: -''' - - - - - - ... - ... -Direct - - -... - - -... - - - (fermi energy) - - - -... -''' - - -Example: -''' -sc - 5.29177 - 1 0 0 - 0 1 0 - 0 0 1 - H - 2 -Direct - 0 0 0.933859999999186 - 0 0 0.0661400000008143 - - 1 - -0.0883978533958687 (fermi energy) - 10 10 - - 5.773e-01 3.902e-02 1.661e-02 4.797e-17 -2.255e-17 5.773e-01 3.902e-02 --1.661e-02 -1.461e-17 -4.414e-17 - ... - ''' - */ - -std::string ModuleIO::dmk_gen_fname(const bool gamma_only, const int ispin, const int ik) -{ - if (gamma_only) - { - return std::string("dm") + "s" + std::to_string(ispin + 1) + "_nao.txt"; - } - else - { - // mohan update 2025-05-25, the index of 'ik' should be the correct 'ik' without spin - return std::string("dm") + "s" + std::to_string(ispin + 1) - + "k" + std::to_string(ik + 1) + "_nao.txt"; - } -} - -void ModuleIO::dmk_write_ucell(std::ofstream& ofs, const UnitCell* ucell) -{ - // write the UnitCell information - ofs << ucell->latName << std::endl; - ofs << " " << ucell->lat0 * ModuleBase::BOHR_TO_A << std::endl; - ofs << " " << ucell->latvec.e11 << " " << ucell->latvec.e12 << " " << ucell->latvec.e13 << std::endl; - ofs << " " << ucell->latvec.e21 << " " << ucell->latvec.e22 << " " << ucell->latvec.e23 << std::endl; - ofs << " " << ucell->latvec.e31 << " " << ucell->latvec.e32 << " " << ucell->latvec.e33 << std::endl; - for (int it = 0; it < ucell->ntype; it++) - { - ofs << " " << ucell->atoms[it].label; - } - ofs << std::endl; - for (int it = 0; it < ucell->ntype; it++) - { - ofs << " " << ucell->atoms[it].na; - } - ofs << std::endl; - ofs << "Direct" << std::endl; - for (int it = 0; it < ucell->ntype; it++) - { - Atom* atom = &ucell->atoms[it]; - ofs << std::setprecision(15); - for (int ia = 0; ia < ucell->atoms[it].na; ia++) - { - ofs << " " << atom->taud[ia].x << " " << atom->taud[ia].y << " " << atom->taud[ia].z << std::endl; - } - } -} - -void ModuleIO::dmk_read_ucell(std::ifstream& ifs) -{ - std::string tmp; - for (int i = 0; i < 6; i++) - { - std::getline(ifs, tmp); // latName + lat0 + latvec + atom label - } - std::getline(ifs, tmp); // atom number of each type - - std::istringstream iss(tmp); - int natom = 0; - int total_natom = 0; - while (iss >> natom) - { - total_natom += natom; - } - for (int i = 0; i < total_natom + 1; i++) - { - std::getline(ifs, tmp); // Direct + atom coordinates - } -} - -void ModuleIO::dmk_readData(std::ifstream& ifs, double& data) -{ - ifs >> data; -} - -void ModuleIO::dmk_readData(std::ifstream& ifs, std::complex& data) -{ - std::string complex_str; - ifs >> complex_str; - - size_t comma_pos = complex_str.find(','); - if (complex_str.front() == '(' && complex_str.back() == ')' && comma_pos != std::string::npos) - { - double real = std::stod(complex_str.substr(1, comma_pos - 1)); - double imag = std::stod(complex_str.substr(comma_pos + 1, complex_str.size() - comma_pos - 2)); - data = std::complex(real, imag); - } - else - { - ModuleBase::WARNING_QUIT("ModuleIO::dmk_readData", - "Invalid complex number format: " + complex_str); - } -} - -template -bool ModuleIO::read_dmk(const int nspin, - const int nk, - const Parallel_2D& pv, - const std::string& dmk_dir, - std::vector>& dmk, - std::ofstream &ofs_running) -{ - ModuleBase::TITLE("ModuleIO", "read_dmk"); - ModuleBase::timer::tick("ModuleIO", "read_dmk"); - - int my_rank = 0; -#ifdef __MPI - MPI_Comm_rank(pv.comm(), &my_rank); -#endif - - int nlocal = pv.get_global_row_size(); - bool gamma_only = std::is_same::value; - std::vector> dmk_global(nspin * nk, std::vector(nlocal * nlocal, 0)); - - // write a lambda function to check the consistency of the data - auto check_consistency - = [&](const std::string& fn, const std::string& name, const std::string& value, const int& target) { - if (std::stoi(value) != target) - { - ModuleBase::WARNING("ModuleIO::read_dmk", name + " is not consistent in file < " + fn + " >."); - std::cout << name << " = " << target << ", " << name << " in file = " << value << std::endl; - return false; - } - return true; - }; - - bool read_success = true; - std::string tmp; - if (my_rank == 0) - { - for (int ispin = 0; ispin < nspin; ispin++) - { - for (int ik = 0; ik < nk; ik++) - { - std::string fn = dmk_dir + dmk_gen_fname(gamma_only, ispin, ik); - std::ifstream ifs(fn.c_str()); - - if (!ifs) - { - ofs_running << " Cannot find density matrix file " << fn << " for k-point " << ik+1 << std::endl; - ModuleBase::WARNING("ModuleIO::read_dmk", "Can't open density matrix (k) file < " + fn + " >."); - read_success = false; - break; - } - else - { - ofs_running << " Read density matrix file " << fn << " for k-point " << ik+1 << std::endl; - } - - // read the UnitCell - dmk_read_ucell(ifs); - - ifs >> tmp; // nspin - if (!check_consistency(fn, "nspin", tmp, nspin)) - { - read_success = false; - ifs.close(); - break; - } - ifs >> tmp; - ifs >> tmp; - ifs >> tmp; // fermi energy - ifs >> tmp; // nlocal - if (!check_consistency(fn, "nlocal", tmp, nlocal)) - { - read_success = false; - ifs.close(); - break; - } - ifs >> tmp; // nlocal - if (!check_consistency(fn, "nlocal", tmp, nlocal)) - { - read_success = false; - ifs.close(); - break; - } - - // read the DMK data - for (int i = 0; i < nlocal; ++i) - { - for (int j = 0; j < nlocal; ++j) - { - dmk_readData(ifs, dmk_global[ik + nk * ispin][i * nlocal + j]); - } - } - ifs.close(); - } // ik - if (!read_success) - { - break; - } - } // ispin - } // rank0 - -#ifdef __MPI - MPI_Bcast(&read_success, 1, MPI_C_BOOL, 0, pv.comm()); -#endif - - if (read_success) - { -#ifdef __MPI - // seperate dmk data to each processor with 2D block distribution - dmk.resize(nspin * nk, std::vector(pv.get_row_size() * pv.get_col_size())); - Parallel_2D pv_glb; - pv_glb.set(nlocal, nlocal, nlocal, pv.blacs_ctxt); - for (int ik = 0; ik < nspin * nk; ik++) - { - Cpxgemr2d(nlocal, - nlocal, - dmk_global[ik].data(), - 1, - 1, - pv_glb.desc, - dmk[ik].data(), - 1, - 1, - const_cast(pv.desc), - pv_glb.blacs_ctxt); - } -#else - dmk = dmk_global; -#endif - } - ModuleBase::timer::tick("ModuleIO", "read_dmk"); - return read_success; -} - -template -void ModuleIO::write_dmk(const std::vector>& dmk, - const int precision, - const std::vector& efs, - const UnitCell* ucell, - const Parallel_2D& pv) -{ - ModuleBase::TITLE("ModuleIO", "write_dmk"); - ModuleBase::timer::tick("ModuleIO", "write_dmk"); - - int my_rank = 0; -#ifdef __MPI - MPI_Comm_rank(pv.comm(), &my_rank); -#endif - - bool gamma_only = std::is_same::value; - int nlocal = pv.get_global_row_size(); - int nspin = efs.size(); - int nk = dmk.size() / nspin; - if (nk * nspin != dmk.size()) - { - ModuleBase::WARNING_QUIT("write_dmk", "The size of dmk is not consistent with nspin and nk."); - } - Parallel_2D pv_glb; - - // when nspin == 2, assume the order of K in dmk is K1_up, K2_up, ..., - // K1_down, K2_down, ... - for (int ispin = 0; ispin < nspin; ispin++) - { - for (int ik = 0; ik < nk; ik++) - { - // gather dmk[ik] to dmk_global - std::vector dmk_global(my_rank == 0 ? nlocal * nlocal : 0); -#ifdef __MPI - pv_glb.set(nlocal, nlocal, nlocal, pv.blacs_ctxt); - Cpxgemr2d(nlocal, - nlocal, - const_cast(dmk[ik + nk * ispin].data()), - 1, - 1, - const_cast(pv.desc), - dmk_global.data(), - 1, - 1, - pv_glb.desc, - pv_glb.blacs_ctxt); -#else - dmk_global = dmk[ik + nk * ispin]; -#endif - - if (my_rank == 0) - { - std::string fn = PARAM.globalv.global_out_dir + dmk_gen_fname(gamma_only, ispin, ik); - std::ofstream ofs(fn.c_str()); - - if (!ofs) - { - ModuleBase::WARNING("ModuleIO::write_dmk", "Can't create DENSITY MATRIX File < " + fn + " >."); - continue; - } - else - { -// std::cout << " Write the density matrix to file " << fn << std::endl; - } - - // write the UnitCell information - dmk_write_ucell(ofs, ucell); - - - ofs << "\n " << nspin; // nspin - ofs << "\n " << std::fixed << std::setprecision(5) << efs[ispin] - << " (fermi energy)"; - ofs << "\n " << nlocal << " " << nlocal << std::endl; - - ofs << std::setprecision(precision); - ofs << std::scientific; - for (int i = 0; i < nlocal; ++i) - { - for (int j = 0; j < nlocal; ++j) - { - if (j % 8 == 0) - { - ofs << "\n"; - } - if (std::is_same::value) - { - ofs << " " << dmk_global[i * nlocal + j]; - } - else if (std::is_same, T>::value) - { - ofs << " (" << std::real(dmk_global[i * nlocal + j]) << "," - << std::imag(dmk_global[i * nlocal + j]) << ")"; - } - } - } - ofs.close(); - } // rank0 - } // ik - } // ispin - - ModuleBase::timer::tick("ModuleIO", "write_dmk"); -} - -template bool ModuleIO::read_dmk(const int nspin, - const int nk, - const Parallel_2D& pv, - const std::string& dmk_dir, - std::vector>& dmk, - std::ofstream &ofs); - -template bool ModuleIO::read_dmk>(const int nspin, - const int nk, - const Parallel_2D& pv, - const std::string& dmk_dir, - std::vector>>& dmk, - std::ofstream &ofs); - -template void ModuleIO::write_dmk(const std::vector>& dmk, - const int precision, - const std::vector& efs, - const UnitCell* ucell, - const Parallel_2D& pv); - -template void ModuleIO::write_dmk>(const std::vector>>& dmk, - const int precision, - const std::vector& efs, - const UnitCell* ucell, - const Parallel_2D& pv); diff --git a/source/source_io/io_dmk.h b/source/source_io/io_dmk.h deleted file mode 100644 index 19a0c66323..0000000000 --- a/source/source_io/io_dmk.h +++ /dev/null @@ -1,90 +0,0 @@ -#ifndef DM_IO_H -#define DM_IO_H - -#include "source_base/parallel_2d.h" -#include "source_cell/unitcell.h" - -#include -#include - -namespace ModuleIO { - -/** - * @brief Generates the filename for the DMK file based on the given parameters. - * - * @param gamma_only Whether the calculation is gamma_only. - * @param ispin The index of the spin component. - * @param ik The index of the k-point. - * @return The generated filename. - */ -std::string dmk_gen_fname(const bool gamma_only, const int ispin, const int ik); - -/** - * @brief Writes the unit cell information to a DMK file. - * - * @param ofs The output file stream. - * @param ucell A pointer to the UnitCell object. - */ -void dmk_write_ucell(std::ofstream& ofs, const UnitCell* ucell); - -/** - * @brief Reads the unit cell information lines in a DMK file. - * - * @param ifs The input file stream. - */ -void dmk_read_ucell(std::ifstream& ifs); - -/** - * @brief Read one double from a file. - */ -void dmk_readData(std::ifstream& ifs, double& data); - -/** - * @brief Read one complex double from a file. - */ -void dmk_readData(std::ifstream& ifs, std::complex& data); - -/** - * @brief Reads the DMK data from a file. - * - * @tparam T The type of the DMK data. - * @param nspin The number of spin components. - * @param nk The number of k-points. - * @param pv The Parallel_2D object. Will get the global size and local size - * from it, and seperate the data into different processors accordingly. - * @param dmk_dir The directory path of the DMK file. - * @param dmk A vector to store the DMK data. If use MPI parallel, the data will - * be seperated into different processors based on the Parallel_2D object. - * @return True if the DMK data is successfully read, false otherwise. - */ -template -bool read_dmk(const int nspin, - const int nk, - const Parallel_2D& pv, - const std::string& dmk_dir, - std::vector>& dmk, - std::ofstream &ofs_running); - -/** - * @brief Writes the DMK data to a file. - * - * @tparam T The type of the DMK data. - * @param dmk A vector containing the DMK data. The first dimension is nspin*nk, - * and the second dimension is nlocal*nlocal. DMK is parallel in 2d-block type - * if using MPI. - * @param precision The precision of the output of DMK. - * @param efs A vector containing the Fermi energies, and should have the same - * size as the number of SPIN. - * @param ucell A pointer to the UnitCell object. - * @param pv The Parallel_2D object. The 2d-block parallel information of DMK. - */ -template -void write_dmk(const std::vector>& dmk, - const int precision, - const std::vector& efs, - const UnitCell* ucell, - const Parallel_2D& pv); - -} // namespace ModuleIO - -#endif // IO_DMK_H diff --git a/source/source_io/json_output/readin_info.cpp b/source/source_io/json_output/readin_info.cpp deleted file mode 100644 index 88e400026d..0000000000 --- a/source/source_io/json_output/readin_info.cpp +++ /dev/null @@ -1,16 +0,0 @@ -#include "readin_info.h" -#include "../para_json.h" -#include "abacusjson.h" - - -//Add json objects to init -namespace Json -{ - -#ifdef __RAPIDJSON - - - - -#endif -} // namespace Json \ No newline at end of file diff --git a/source/source_io/json_output/test/CMakeLists.txt b/source/source_io/json_output/test/CMakeLists.txt deleted file mode 100644 index 51bf466cc5..0000000000 --- a/source/source_io/json_output/test/CMakeLists.txt +++ /dev/null @@ -1,11 +0,0 @@ -remove_definitions(-D__MLALGO) -remove_definitions(-D__CUDA) -remove_definitions(-D__ROCM) -remove_definitions(-D__EXX) - -AddTest( - TARGET MODULE_IO_JSON_OUTPUT_TEST - LIBS parameter ${math_libs} base device cell_info - SOURCES para_json_test.cpp ../general_info.cpp ../init_info.cpp ../readin_info.cpp - ../../para_json.cpp ../abacusjson.cpp ../../output.cpp -) \ No newline at end of file diff --git a/source/source_io/module_bessel/bessel_basis.cpp b/source/source_io/module_bessel/bessel_basis.cpp new file mode 100644 index 0000000000..2795fefa25 --- /dev/null +++ b/source/source_io/module_bessel/bessel_basis.cpp @@ -0,0 +1,486 @@ +#include "bessel_basis.h" + +#include "source_io/module_parameter/parameter.h" +#include "source_base/math_integral.h" +#include "source_base/math_sphbes.h" +#include "source_base/parallel_common.h" +#include "source_base/timer.h" +#include + +Bessel_Basis::Bessel_Basis() +{ + Ecut_number = 0; + Dk = 0.0; +} + +Bessel_Basis::~Bessel_Basis() +{ +} + + +// the function is called in numerical_basis. +void Bessel_Basis::init( + const bool start_from_file, + const double &ecutwfc, + const int &ntype, + const int &lmax_in, + const bool &smooth, + const double &sigma, + const double &rcut_in, + const double &tol_in, + const UnitCell& ucell, + const double &dk, + const double &dr + ) +{ + ModuleBase::TITLE("Bessel_Basis", "init"); + this->Dk = dk; + this->ecut = ecutwfc; + this->rcut = rcut_in; + this->tolerence = tol_in; + this->smooth = smooth; + this->sigma = sigma; + + //---------------------------------------------- + // setup Ecut_number + // ne * pi / rcut = sqrt(ecut) (Rydberg) + //---------------------------------------------- + // this->Ecut_number = static_cast( sqrt( 2.0 * ecut )* rcut/ModuleBase::PI );// hartree + this->Ecut_number = static_cast(sqrt(ecut) * rcut / ModuleBase::PI); // Rydberg Unit. + assert(this->Ecut_number > 0); + + //------------------ + // Making a table + //------------------ + + this->init_TableOne( smooth, sigma, ecutwfc, rcut, dr, Dk, lmax_in, Ecut_number, tolerence); + +//----------------------------------------------- +// for test. +//----------------------------------------------- +// GlobalV::ofs_running << "\n TableOne:"; +// for(int i=0; iallocate_C4(ntype, lmax_in, ucell.nmax, Ecut_number, ucell); + // check tolerence + this->readin_C4("INPUTs", ntype, ecut, rcut, Ecut_number, tolerence, ucell); +#ifdef __MPI + Parallel_Common::bcast_double( C4.ptr, C4.getSize() ); +#endif + this->init_Faln(ntype, lmax_in, ucell.nmax, Ecut_number, ucell); + } + + return; +} + +double Bessel_Basis::Polynomial_Interpolation2 + (const int &l, const int &ie, const double &gnorm)const +{ + const double position = gnorm / this->Dk; + const int iq = static_cast(position); + /* + if(iq >= kmesh-4) + { + std::cout << "\n iq = " << iq; + std::cout << "\n kmesh = " << kmesh; + ModuleBase::QUIT(); + } + */ + assert(iq < kmesh-4); + const double x0 = position - static_cast(iq); + const double x1 = 1.0 - x0; + const double x2 = 2.0 - x0; + const double x3 = 3.0 - x0; + const double y= + this->TableOne(l, ie, iq) * x1 * x2 * x3 / 6.0 + + this->TableOne(l, ie, iq+1) * x0 * x2 * x3 / 2.0 - + this->TableOne(l, ie, iq+2) * x1 * x0 * x3 / 2.0 + + this->TableOne(l, ie, iq+3) * x1 * x2 * x0 / 6.0 ; + return y; +} + +double Bessel_Basis::Polynomial_Interpolation( + const int &it, const int &l, const int &ic, const double &gnorm)const +{ + const double position = gnorm / this->Dk; + const int iq = static_cast(position); + assert(iq < kmesh-4); + const double x0 = position - static_cast(iq); + const double x1 = 1.0 - x0; + const double x2 = 2.0 - x0; + const double x3 = 3.0 - x0; + const double y= + this->Faln(it, l, ic, iq) * x1 * x2 * x3 / 6.0 + + this->Faln(it, l, ic, iq+1) * x0 * x2 * x3 / 2.0 - + this->Faln(it, l, ic, iq+2) * x1 * x0 * x3 / 2.0 + + this->Faln(it, l, ic, iq+3) * x1 * x2 * x0 / 6.0 ; + return y; +} + +void Bessel_Basis::init_Faln( + const int &ntype, + const int &lmax, + const int &nmax, + const int &ecut_number, + const UnitCell& ucell) +{ + ModuleBase::TITLE("Bessel_Basis","init_Faln"); + ModuleBase::timer::tick("Spillage","init_Faln"); + assert( this->kmesh > 0); + + this->Faln.create(ntype, lmax+1, nmax, this->kmesh); + + this->nwfc = 0; + for(int it=0; itkmesh; ik++) + { + this->Faln(it, il, in, ik) += this->C4(it, il, in, ie) * this->TableOne(il, ie, ik); + } + } + nwfc+=2*il+1; + } + } + } + ModuleBase::GlobalFunc::OUT("nwfc = ",nwfc); + + ModuleBase::timer::tick("Spillage","init_Faln"); + return; +} + +// be called in Bessel_Basis::init() +void Bessel_Basis::init_TableOne( + const bool smooth_in, // mohan add 2009-08-28 + const double &sigma_in, // mohan add 2009-08-28 + const double &ecutwfc, + const double &rcut, + const double &dr, + const double &dk, + const int &lmax, + const int &ecut_number, + const double &tolerence) +{ + ModuleBase::TITLE("Bessel_Basis","init_TableOne"); + ModuleBase::timer::tick("Spillage","TableONe"); + // check + assert(ecutwfc > 0.0); + assert(dr > 0.0); + assert(dk > 0.0); + + // init kmesh + this->kmesh = static_cast(sqrt(ecutwfc) / dk) +1 + 4; + if (kmesh % 2 == 0)++kmesh; + ModuleBase::GlobalFunc::OUT(GlobalV::ofs_running, "kmesh",kmesh); + ModuleBase::GlobalFunc::OUT(GlobalV::ofs_running, "dk",dk); + + // init Table One + this->TableOne.create(lmax+1, ecut_number, kmesh); + + // init rmesh + int rmesh = static_cast( rcut / dr ) + 4; + if (rmesh % 2 == 0) ++rmesh; + ModuleBase::GlobalFunc::OUT(GlobalV::ofs_running, "rmesh",rmesh); + ModuleBase::GlobalFunc::OUT(GlobalV::ofs_running, "dr",dr); + + // allocate rmesh and Jlk and eigenvalue of Jlq + // double *r = new double[rmesh]; + // double *rab = new double[rmesh]; + // double *jle = new double[rmesh]; + // double *jlk = new double[rmesh]; + // double *g = new double[rmesh]; // smooth function + // double *function = new double[rmesh]; + // double *en = new double[ecut_number]; + std::vector r(rmesh); + std::vector rab(rmesh); + std::vector jle(rmesh); + std::vector jlk(rmesh); + std::vector g(rmesh); + std::vector function(rmesh); + std::vector en(ecut_number); + + for(int ir=0; ir(ir) * dr; + rab[ir] = dr; + if(smooth_in) + { + g[ir] = 1.0 - std::exp(-( (r[ir]-rcut)*(r[ir]-rcut)/2.0/sigma_in/sigma_in ) ); + } + } + + //caoyu add 2021-3-10 + //=========output .orb format============= + std::stringstream ss; + ss << PARAM.globalv.global_out_dir << "jle.orb"; + std::ofstream ofs(ss.str().c_str()); + ofs << "---------------------------------------------------------------------------"<< std::endl; + ofs << std::setiosflags(std::ios::left) << std::setw(28) << "Energy Cutoff(Ry)" << ecut << std::endl; + ofs << std::setiosflags(std::ios::left) << std::setw(28) << "Radius Cutoff(a.u.)" << rcut << std::endl; + ofs << std::setiosflags(std::ios::left) << std::setw(28) << "Lmax" << lmax << std::endl; + for (int l = 0; l < lmax + 1; l++) + { + switch (l) + { + case 0: + ofs << std::setiosflags(std::ios::left) << std::setw(28) << "Number of Sorbitals-->" << ecut_number << std::endl; + break; + case 1: + ofs << std::setiosflags(std::ios::left) << std::setw(28) << "Number of Porbitals-->" << ecut_number << std::endl; + break; + case 2: + ofs << std::setiosflags(std::ios::left) << std::setw(28) << "Number of Dorbitals-->" << ecut_number << std::endl; + break; + case 3: + ofs << std::setiosflags(std::ios::left) << std::setw(28) << "Number of Forbitals-->" << ecut_number << std::endl; + break; + default: + ofs << std::setiosflags(std::ios::left) << std::setw(28) << "Number of Gorbitals-->" << ecut_number << std::endl; + } + } + ofs << "---------------------------------------------------------------------------"<< std::endl; + ofs << "SUMMARY END" << std::endl << std::endl; + ofs << std::setiosflags(std::ios::left) << std::setw(28) << "Mesh" << rmesh << std::endl; + ofs << std::setiosflags(std::ios::left) << std::setw(28) << "dr" << dr << std::endl ; + //=========output .orb format============= + + // init eigenvalue of Jl + for(int l=0; lTableOne(l, ie, ik) ); + } + + }// end ie + }// end ; + + if (ofs) + { + ofs.close(); //caoyu add 2020-3-10 + } + + // delete[] en; + // delete[] jle; + // delete[] jlk; + // delete[] rab; + // delete[] g; + // delete[] r; + // delete[] function; + ModuleBase::timer::tick("Spillage","TableONe"); + return; +} + +void Bessel_Basis::readin_C4( + const std::string &name, + const int &ntype, + const int &ecut, + const int &rcut, + const int &ecut_number, + const double &tolerence, + const UnitCell& ucell) +{ + ModuleBase::TITLE("Bessel_Basis","readin_C4"); + + if(GlobalV::MY_RANK != 0) return; + + std::ifstream ifs( name.c_str() ); + + if(!ifs) + { + GlobalV::ofs_warning << " File name : " << name << std::endl; + std::string fn = "Cannot find C4 file: " + name; + ModuleBase::WARNING_QUIT("Bessel_Basis::readin_C4",fn); + } + + if (ModuleBase::GlobalFunc::SCAN_BEGIN(ifs, "")) + { + // mohan modify 2009-11-29 + for (int it = 0; it < ntype; it++) + { + std::string filec4; + ifs >> filec4; + for(int il=0; il< ucell.atoms[it].nwl+1; il++) + { + for(int in=0; in< ucell.atoms[it].l_nchi[il]; in++) + { + //for tests + //std::cout << "\n" << std::setw(5) << it << std::setw(5) << il << std::setw(5) << in; + //std::cout << "\n file=" << filec4; + std::ifstream inc4( filec4.c_str() ); + + if(!inc4) + { + GlobalV::ofs_warning << " File name : " << filec4 << std::endl; + ModuleBase::WARNING_QUIT("Bessel_Basis::readin_C4","Can not find file."); + } + + if(ModuleBase::GlobalFunc::SCAN_BEGIN(inc4, "")) + { + double tmp_ecut = 0.0; + double tmp_rcut = 0.0; + double tmp_enumber = 0.0; + double tmp_tolerence = 0.0; + ModuleBase::GlobalFunc::READ_VALUE( inc4, tmp_ecut); + ModuleBase::GlobalFunc::READ_VALUE( inc4, tmp_rcut); + ModuleBase::GlobalFunc::READ_VALUE( inc4, tmp_enumber); + ModuleBase::GlobalFunc::READ_VALUE( inc4, tmp_tolerence); + assert( tmp_ecut == this->ecut ); + assert( tmp_rcut == this->rcut ); + assert( tmp_enumber == this->Ecut_number); + assert( tmp_tolerence == this->tolerence ); + } + + bool find = false; + if(ModuleBase::GlobalFunc::SCAN_BEGIN(inc4, "")) + { + int total_nchi = 0; + ModuleBase::GlobalFunc::READ_VALUE(inc4, total_nchi); + + for(int ichi=0; ichi> title1 >> title2 >> title3; + + int tmp_type=0, tmp_l=0, tmp_n=0; + inc4 >> tmp_type >> tmp_l >> tmp_n; + //std::cout << "\n Find T=" << tmp_type << " L=" << tmp_l << " N=" << tmp_n; + + if(tmp_l == il && tmp_n == in) + //if(tmp_type == it && tmp_l == il && tmp_n == in) // mohan modify 2009-11-29 + { + find = true; + for(int ie=0; ie> this->C4(it, il, in, ie); + // for tests + //std::cout << "\n" << std::setw(5) << ie << std::setw(25) << this->C4(it, il, in, ie); + } + } + else + { + double no_use_c4 = 0.0; + for(int ie=0; ie> no_use_c4; + } + } + if(find) break; + } + } + if(!find) + { + std::cout << "\n T=" << it << " L=" << il << " N=" << in; + ModuleBase::WARNING_QUIT("Bessel_Basis::readin_C4","Can't find needed c4!"); + } + inc4.close(); + } + } + } + ModuleBase::GlobalFunc::SCAN_END(ifs, ""); + } + ifs.close(); + return; +} + +void Bessel_Basis::allocate_C4( + const int &ntype, + const int &lmax, + const int &nmax, + const int &ecut_number, + const UnitCell& ucell) +{ + ModuleBase::TITLE("Bessel_Basis","allocate_C4"); + + this->C4.create(ntype, lmax+1, nmax, ecut_number); + + for(int it=0; itC4(it, il, in, ie) = 1.0; + } + } + } + } + return; +} diff --git a/source/source_io/module_bessel/bessel_basis.h b/source/source_io/module_bessel/bessel_basis.h new file mode 100644 index 0000000000..e8307e7625 --- /dev/null +++ b/source/source_io/module_bessel/bessel_basis.h @@ -0,0 +1,190 @@ +//========================================================== +// AUTHOR : mohan +// DATE : 2009-3-29 +// Last Modify : 2021-01-04 +//========================================================== +#ifndef BESSEL_BASIS_H +#define BESSEL_BASIS_H +#include "../../source_base/global_function.h" +#include "../../source_base/global_variable.h" +#include "../../source_base/realarray.h" + +#include "../../source_cell/unitcell.h" + +//========================================================== +// CLASS : +// NAME : Bessel_Basis +//========================================================== +class Bessel_Basis +{ +public: + Bessel_Basis(); + ~Bessel_Basis(); + + /// @brief Initialization of Bessel function related matrices. + /// @details Used for a specific group of C4 coefficients. 2021-01-04, mohan added a new input parameter lmax_in, if we only generate numerical atomic orbitals based on spherical Bessel functions, lmax_in = ucell.lmax. However, if we want to generate Spherical Bessel functions (SBF) for descriptor, then the lmax_in is controlled by user. + /// @note This function is called in source_io/numerical_basis.cpp and source_io/numerical_descriptor.cpp + /// @param start_from_file whether read C4 coefficients stored in external files + /// @param ecutwfc cutoff for numerical atomic orbitals + /// @param ntype atom types + /// @param lmax_in maximal angular momentum for numerical orbitals + /// @param smooth whether smooth SBFs when perform integration to calculate value of matrix element of TableOne. For details, see J. Phys.: Condens. Matter 22 (2010) 445501 + /// @param sigma stddev of Gaussian function for smoothing SBFs + /// @param rcut_in cutoff radius for SBFs + /// @param tol_in accurancy control for SBFs + /// @param dk kspace grid + /// @param dr realspace grid + /// @param ucell UnitCell class object, ucell.nmax will be used in this function + void init( + const bool start_from_file, + const double &ecutwfc, + const int &ntype, + const int &lmax_in, + const bool &smooth, + const double &sigma, + const double &rcut_in, + const double &tol_in, + const UnitCell& ucell, + const double &dk = 0.01, + const double &dr = 0.01 + ); + /// @brief return number of SBFs used for one `chi` (see details for more information) + /// @details atomic orbital is constructed always with not only one set of SBFs. For different sets, they are marked with different `chi`(s), similar with concept of contracted GTOs. For one `chi`, it is 'q' the summation index, and q is in SBFs like: j_l(q*r), where l is the order of SBF. + /// @return number of SBFs + const int& get_ecut_number() const { return Ecut_number;} + + /// @brief Cubic spline interpolation for matrix Faln + /// @param it atom type index + /// @param l angular momentum + /// @param ic chi index + /// @param gnorm norm of G+k vector + /// @return interpolated value + double Polynomial_Interpolation(const int &it, const int &l, const int &ic, const double &gnorm)const; + /// @brief Cubic spline interpolation for matrix TableOne + /// @param l angular momentum + /// @param ie q index (see explanation in note of function BesselBasis::get_ecut_number()) + /// @param gnorm norm of G+k vector + /// @return interpolated value + double Polynomial_Interpolation2(const int &l, const int &ie, const double &gnorm)const; + + + /// @brief get energy cutoff, which is used to truncate SBF Jlq. + /// @param + /// @return energy cutoff in Ry + const double &get_ecut() const {return ecut;} + /// @brief cutoff radius of radial SBF Jlq. + /// @param + /// @return cutoff radius in a.u. + const double &get_rcut() const {return rcut;} + + const double &get_tolerence() const {return tolerence;} + + + /// @brief check if SBFs are smoothed (mohan add 2009-08-28) + /// @attention in this case, the Jlq are not the true Jlq. + /// @param + /// @return boolean whether SBFs are smoothed + const bool &get_smooth() const {return smooth;} + /// @brief get sigma the stddev (standard deviation) used in smooth function (Gaussian function) + /// @param + /// @return stddev of smooth function + const double &get_sigma() const {return sigma;} + +private: + /// @brief the most important array to calculate spillage, has dimension (ntype, lmax+1, max_n, nk) + ModuleBase::realArray Faln; + + /// @brief Coefficients to be optimized! + ModuleBase::realArray C4; + + /// @brief matrix whose elements are int{dr r^2 j_l(qr)*j_l(kr)}, has dimension (lmax+1, nq, nk) + ModuleBase::realArray TableOne; + + /// @brief mesh of k vector, k is in j_l(k*r) + int kmesh=0; + /// @brief grid of k + double Dk; + /// @brief number of q vector, q is in j_l(q*r) + int Ecut_number; + /// @brief Cutoff radius (in a.u.) of SBFs, for any SBF j_l(qr), r>=rcut, j_l(q*r) = 0 (if not smoothed) + double rcut=0.0; + /// @brief energy cutoff for determining kmesh and number of SBFs + double ecut=0.0; + double tolerence=0.0; + /// @brief whether smooth SBFs around cutoff radius, resulting in non-zero values. For importance of smooth of SBFs, see J. Phys.: Condens. Matter 22 (2010) 445501, eqn 6. (mohan add 2009-01-18) + bool smooth=false; + /// @brief stddev of smooth function (Gaussian function, centered at rcut) + double sigma=0.0; + + /// @brief Allocate memory for C4 matrix and initialize all elements to one. + /// @param ntype number of atom types + /// @param lmax maximal angular momentum of localized orbitals + /// @param nmax maximal principal quantum number of localized orbitals + /// @param ecut_number number of SBFs + void allocate_C4( + const int &ntype, + const int &lmax, + const int &nmax, + const int &ecut_number, + const UnitCell& ucell + ); + + /// @brief Read C4 from external file. Presently an O(N^2) search algorithm is used. A HTML parser is needed in the future to improve performance. + /// @param name name of external file where C4-stored file information is contained + /// @param ntype number of atom types + /// @param ecut energy cutoff + /// @param rcut cutoff radius + /// @param ecut_number number of SBFs + /// @param tolerence accurancy of SBFs, here only used for consistency check + void readin_C4( + const std::string &name, + const int &ntype, + const int &ecut, + const int &rcut, + const int &ecut_number, + const double &tolerence, + const UnitCell& ucell + ); + + void init_TableOne(); + + /// @brief calculate F_{aln}(it, il, in, ik) = sum_{ie}{C4(it, il, in, ie)*TableOne(il, ie, ik)}, where TableOne is overlap integral between two spherical bessel functions (jle(r) and jlk(r)) + /// @param ntype number of atomtype + /// @param lmax maximal angular momentum + /// @param nmax maximal chi + /// @param ecut_number number of SBFs + void init_Faln( + const int &ntype, + const int &lmax, + const int &nmax, + const int &ecut_number, + const UnitCell& ucell + ); + + /// @brief number of localized wave functions + int nwfc=0; + + /// @brief calculate element value of TableOne matrix + /// @details (be called in Bessel_Basis::init(), used for outputing overlap Q matrix) initialize the table whose matrix element is the result of integral int{dr r^2 jle(r)*jlk(r)}, TableOne has three subscript (l, ie, ik), the first runs over orbitals' angular momentum and ie, ik run over ecut_number and kmesh SBFs + /// @param smooth_in whether jle(r) SBF is smoothed by a Gaussian function + /// @param sigma_in stddev for controlling smearing of Gaussian function for smoothing jle(r) + /// @param ecutwfc planewave kinetic energy cutoff for controlling kspace sampling + /// @param rcut cutoff radius of SBFs + /// @param dr realspace grid + /// @param dk kspace grid + /// @param lmax maximal angular momentum for SBFs + /// @param ecut_number number of SBFs + /// @param tolerence accurancy of SBFs + void init_TableOne( + const bool smooth_in, + const double &sigma_in, + const double &ecut, + const double &rcut, + const double &dr, + const double &dk, + const int &lmax, + const int &ecut_number, + const double &tolerence); +}; + +#endif diff --git a/source/source_io/module_bessel/numerical_basis.cpp b/source/source_io/module_bessel/numerical_basis.cpp new file mode 100644 index 0000000000..b7b0f050e6 --- /dev/null +++ b/source/source_io/module_bessel/numerical_basis.cpp @@ -0,0 +1,860 @@ +#include "numerical_basis.h" + +#include "source_io/module_parameter/parameter.h" +#include "source_base/constants.h" +#include "source_base/global_variable.h" +#include "source_base/intarray.h" +#include "source_base/math_ylmreal.h" +#include "source_base/parallel_reduce.h" +#include "source_base/timer.h" +#include "source_base/vector3.h" +#include "source_cell/module_symmetry/symmetry.h" +#include "numerical_basis_jyjy.h" + +#include +#include +#include +#include +Numerical_Basis::Numerical_Basis() +{ +} +Numerical_Basis::~Numerical_Basis() +{ +} + +//============================================================ +// MEMBER FUNCTION : +// NAME : init +// DESCRIPTION : Two main functions: +// (1) start_from_file = true; +// Firstly, use check(1) to call bessel_basis.init +// to generate TableOne. +// Secondly readin C4 from file. +// Thirdly generate 3D atomic wfc in G space, put the +// results in psi. +// +// (2) If output overlap Q, start_from_file = false; +// Firstly, use check(0) to call bessel_basis,init +// to generate TableOne +// Secondly output overlap, use psi(evc) and jlq3d. +//============================================================ +// void Numerical_Basis::start_from_file_k(const int& ik, ModuleBase::ComplexMatrix& psi, const Structure_Factor& sf, +// const ModulePW::PW_Basis_K* wfcpw, const UnitCell& ucell) +// { +// ModuleBase::TITLE("Numerical_Basis", "start_from_file_k"); + +// if (!this->init_label) +// { +// // true stands for : start_from_file +// this->bessel_basis.init(true, std::stod(PARAM.inp.bessel_nao_ecut), ucell.ntype, ucell.lmax, +// PARAM.inp.bessel_nao_smooth, PARAM.inp.bessel_nao_sigma, PARAM.globalv.bessel_nao_rcut, +// PARAM.inp.bessel_nao_tolerence, ucell); +// this->mu_index = this->init_mu_index(ucell); +// this->init_label = true; +// } +// this->numerical_atomic_wfc(ik, wfcpw, psi, sf, ucell); +// } + +// The function is called in run_fp.cpp. +void Numerical_Basis::output_overlap(const psi::Psi>& psi, + const Structure_Factor& sf, + const K_Vectors& kv, + const ModulePW::PW_Basis_K* wfcpw, + const UnitCell& ucell, + const int& index) +{ + ModuleBase::TITLE("Numerical_Basis", "output_overlap"); + ModuleBase::GlobalFunc::NEW_PART("Overlap Data For Spillage Minimization"); + const double bessel_nao_rcut = PARAM.inp.bessel_nao_rcuts[index]; + + //--------------------------------------------------------- + // if the numerical_basis hasn't been initialized yet, + // then we initial here. + //--------------------------------------------------------- + if (!this->init_label) + { + // false stands for : 'Faln' is not used. + this->bessel_basis.init(false, std::stod(PARAM.inp.bessel_nao_ecut), ucell.ntype, ucell.lmax, + PARAM.inp.bessel_nao_smooth, PARAM.inp.bessel_nao_sigma, bessel_nao_rcut, + PARAM.inp.bessel_nao_tolerence, ucell); + this->mu_index = this->init_mu_index(ucell); + this->init_label = true; + } + ModuleBase::GlobalFunc::MAKE_DIR(PARAM.inp.spillage_outdir); + for (int derivative_order = 0; derivative_order <= 1; ++derivative_order) // Peize Lin add 2020.04.23 + { + std::ofstream ofs; + std::stringstream ss; + ss << PARAM.inp.spillage_outdir << "/"; + + if (PARAM.inp.bessel_nao_rcuts.size() > 1) + { + ss << "orb_matrix_rcut" << bessel_nao_rcut << "deriv"; + } + else + { + ss << "orb_matrix."; + } // to make it compatible with old version of orbital generation + ss << derivative_order << ".dat"; + + if (GlobalV::MY_RANK == 0) + { + ofs.open(ss.str().c_str()); + } + + // ALLOCATE MEMORY FOR THE OVERLAP MATRIX + // OVERLAP : < J_mu | Psi > + std::vector overlap_Q(kv.get_nks()); + // OVERLAP : < J_mu | J_nu > + std::vector overlap_Sq(kv.get_nks()); + + ModuleBase::GlobalFunc::OUT(GlobalV::ofs_running, "number of k points", kv.get_nks()); + ModuleBase::GlobalFunc::OUT(GlobalV::ofs_running, "number of bands", PARAM.inp.nbands); + ModuleBase::GlobalFunc::OUT(GlobalV::ofs_running, "number of local orbitals", PARAM.globalv.nlocal); + ModuleBase::GlobalFunc::OUT(GlobalV::ofs_running, "number of eigenvalues of Jl(x)", + this->bessel_basis.get_ecut_number()); + + // CALCULATE THE OVERLAP MATRIX + // nks now is the reduced k-points. + for (int ik = 0; ik < kv.get_nks(); ik++) + { + const int npw = kv.ngk[ik]; + GlobalV::ofs_running << " --------------------------------------------------------" << std::endl; + GlobalV::ofs_running << " Print the overlap matrixs Q and S for this kpoint" << std::endl; + GlobalV::ofs_running << std::setw(8) << "ik" << std::setw(8) << "npw" << std::endl; + GlobalV::ofs_running << std::setw(8) << ik + 1 << std::setw(8) << npw << std::endl; + GlobalV::ofs_running << " --------------------------------------------------------" << std::endl; + + // search for all k-points. + psi.fix_k(ik); + overlap_Q[ik] = this->cal_overlap_Q(ik, npw, wfcpw, psi, static_cast(derivative_order), sf, ucell); + ModuleBase::GlobalFunc::DONE(GlobalV::ofs_running, "cal_overlap_Q"); + + // (2) generate Sq matrix if necessary. + if (PARAM.inp.out_spillage == 2) + { +#ifndef __LCAO + // compute in plane-wave basis + overlap_Sq[ik] = this->cal_overlap_Sq(ik, npw, static_cast(derivative_order), sf, wfcpw, ucell); +#else + // compute with two-center integration + assert(derivative_order == 0 || derivative_order == 1); + char type = (derivative_order == 0) ? 'S' : 'T'; + std::vector natom; + std::vector lmax; + std::vector>> tau_cart; + for (int it = 0; it < ucell.ntype; ++it) + { + natom.push_back(ucell.atoms[it].na); + lmax.push_back(ucell.atoms[it].nwl); + tau_cart.emplace_back(); + + for (int ia = 0; ia < ucell.atoms[it].na; ++ia) + { + tau_cart[it].push_back(ucell.atoms[it].tau[ia] * ucell.lat0); + } + } + + overlap_Sq[ik] = NumericalBasis::cal_overlap_Sq( + type, ucell.lmaxmax, this->bessel_basis.get_ecut_number(), bessel_nao_rcut, tau_cart, + ucell.lat0 * ucell.latvec, NumericalBasis::indexgen(natom, lmax)); +#endif + ModuleBase::GlobalFunc::DONE(GlobalV::ofs_running, "cal_overlap_Sq"); + } + } + + const ModuleBase::matrix overlap_V + = this->cal_overlap_V(wfcpw, psi, static_cast(derivative_order), kv, ucell.tpiba); + + // ALTHOUGH THIS FUNCTION NAMES output_overlap, IT ACTUALLY OUTPUTS THE OVERLAP MATRIX HERE +#ifdef __MPI + for (int ik = 0; ik < kv.get_nks(); ik++) + { + Parallel_Reduce::reduce_pool(overlap_Q[ik].ptr, overlap_Q[ik].getSize()); + // Parallel_Reduce::reduce_pool(overlap_Sq[ik].ptr, overlap_Sq[ik].getSize()); + } + Parallel_Reduce::reduce_pool(overlap_V.c, overlap_V.nr * overlap_V.nc); // Peize Lin add 2020.04.23 +#endif + // exception handling following, for FileNotOpenFailure + if (ofs.good()) { + this->output_info(ofs, bessel_basis, kv, ucell); // header of orb_matrix* file + } else { + ModuleBase::WARNING_QUIT("Numerical_Basis", "Failed to open file for writing the overlap matrix."); +} + // because one stage of file io complete, re-check the file status. + if (ofs.good()) { + this->output_k(ofs, kv); // ... + } else { + ModuleBase::WARNING_QUIT("Numerical_Basis", "Failed to write k-points to file."); +} + // because one stage of file io complete, re-check the file status. + if (ofs.good()) { + this->output_overlap_Q(ofs, overlap_Q, kv); // ... + } else { + ModuleBase::WARNING_QUIT("Numerical_Basis", "Failed to write overlap Q to file."); +} + // because one stage of file io complete, re-check the file status. + if (PARAM.inp.out_spillage == 2) + { + // caution: this is the largest matrix to be output, always flush + if (ofs.good()) { + this->output_overlap_Sq(ss.str(), ofs, overlap_Sq, kv); // ... + } else { + ModuleBase::WARNING_QUIT("Numerical_Basis", "Failed to write overlap S to file."); +} + } + // because one stage of file io complete, re-check the file status. + if (ofs.good()) { + this->output_overlap_V(ofs, overlap_V); // ... + // Peize Lin add 2020.04.23 + } else { + ModuleBase::WARNING_QUIT("Numerical_Basis", "Failed to write overlap V to file."); +} + if (GlobalV::MY_RANK == 0) { + ofs.close(); +} + } + return; +} + +ModuleBase::ComplexArray Numerical_Basis::cal_overlap_Q(const int& ik, const int& np, const ModulePW::PW_Basis_K* wfcpw, + const psi::Psi>& psi, + const double derivative_order, const Structure_Factor& sf, + const UnitCell& ucell) const +{ + ModuleBase::TITLE("Numerical_Basis", "cal_overlap_Q"); + ModuleBase::timer::tick("Numerical_Basis", "cal_overlap_Q"); + + GlobalV::ofs_running << " OUTPUT THE OVERLAP BETWEEN SPHERICAL BESSEL FUNCTIONS AND BLOCH WAVE FUNCTIONS" + << std::endl; + GlobalV::ofs_running << " Q = < J_mu, q | Psi_n, k > " << std::endl; + + ModuleBase::ComplexArray overlap_Q(PARAM.inp.nbands, PARAM.globalv.nlocal, this->bessel_basis.get_ecut_number()); + overlap_Q.zero_out(); + + const double normalization = (4 * ModuleBase::PI) / sqrt(ucell.omega); // Peize Lin add normalization 2015-12-29 + + std::vector> gk(np); + for (int ig = 0; ig < np; ig++) + { + gk[ig] = wfcpw->getgpluskcar(ik, ig) * ucell.tpiba; + } + + const std::vector gpow = Numerical_Basis::cal_gpow(gk, derivative_order); + + const ModuleBase::realArray flq = this->cal_flq(gk, ucell.lmax); + + const ModuleBase::matrix ylm = Numerical_Basis::cal_ylm(gk, ucell.lmax); + + GlobalV::ofs_running << "\n " << std::setw(5) << "ik" << std::setw(8) << "Type1" << std::setw(8) << "Atom1" + << std::setw(8) << "L" << std::endl; + + for (int T = 0; T < ucell.ntype; T++) + { + // OUT("T",T); + for (int I = 0; I < ucell.atoms[T].na; I++) + { + // OUT("I",I); + std::complex* sk = sf.get_sk(ik, T, I, wfcpw); + for (int L = 0; L < ucell.atoms[T].nwl + 1; L++) + { + GlobalV::ofs_running << " " << std::setw(5) << ik + 1 << std::setw(8) << ucell.atoms[T].label + << std::setw(8) << I + 1 << std::setw(8) << L << std::endl; + // OUT("l",l); + std::complex lphase + = normalization * pow(ModuleBase::IMAG_UNIT, -L); // Peize Lin add normalization 2015-12-29 + for (int ie = 0; ie < this->bessel_basis.get_ecut_number(); ie++) + { + const int N = 0; + assert(ucell.nmax == 1); + for (int m = 0; m < 2 * L + 1; m++) + { + const int lm = L * L + m; + for (int ib = 0; ib < PARAM.inp.nbands; ib++) + { + std::complex overlap_tmp = ModuleBase::ZERO; + for (int ig = 0; ig < np; ig++) + { + // const std::complex local_tmp = lphase * sk[ig] * + // ylm(lm, ig) * flq[ig]; + const std::complex local_tmp = lphase * sk[ig] * ylm(lm, ig) * flq(L, ie, ig) + * gpow[ig]; // Peize Lin add for dpsi 2020.04.23 + overlap_tmp += conj(local_tmp) * psi(ib, ig); // psi is bloch orbitals + } + overlap_Q(ib, this->mu_index[T](I, L, N, m), ie) = overlap_tmp; + } + } + } // end ie + } // end l + delete[] sk; + sk = nullptr; + } + } + + ModuleBase::timer::tick("Numerical_Basis", "cal_overlap_Q"); + return overlap_Q; +} + +ModuleBase::ComplexArray Numerical_Basis::cal_overlap_Sq(const int& ik, const int& np, const double derivative_order, + const Structure_Factor& sf, const ModulePW::PW_Basis_K* wfcpw, + const UnitCell& ucell) const +{ + ModuleBase::TITLE("Numerical_Basis", "cal_overlap_Sq"); + ModuleBase::timer::tick("Numerical_Basis", "cal_overlap_Sq"); + + GlobalV::ofs_running << " OUTPUT THE OVERLAP BETWEEN SPHERICAL BESSEL FUNCTIONS" << std::endl; + GlobalV::ofs_running << " S = < J_mu,q1 | J_nu,q2 >" << std::endl; + + const int enumber = this->bessel_basis.get_ecut_number(); + ModuleBase::ComplexArray overlap_Sq(PARAM.globalv.nlocal, PARAM.globalv.nlocal, enumber, enumber); + overlap_Sq.zero_out(); + + const double normalization + = (4 * ModuleBase::PI) * (4 * ModuleBase::PI) / ucell.omega; // Peize Lin add normalization 2015-12-29 + + std::vector> gk(np); + for (int ig = 0; ig < np; ig++) { + gk[ig] = wfcpw->getgpluskcar(ik, ig) * ucell.tpiba; +} + + const std::vector gpow = Numerical_Basis::cal_gpow(gk, derivative_order); + + const ModuleBase::realArray flq = this->cal_flq(gk, ucell.lmax); + + const ModuleBase::matrix ylm = Numerical_Basis::cal_ylm(gk, ucell.lmax); + + GlobalV::ofs_running << "\n " << std::setw(5) << "ik" << std::setw(8) << "Type1" << std::setw(8) << "Atom1" + << std::setw(8) << "L1" << std::setw(8) << "Type2" << std::setw(8) << "Atom2" << std::setw(8) + << "L2" << std::endl; + + for (int T1 = 0; T1 < ucell.ntype; T1++) // 1.1 + { + for (int I1 = 0; I1 < ucell.atoms[T1].na; I1++) // 1.2 + { + std::complex* sk1 = sf.get_sk(ik, T1, I1, wfcpw); + for (int T2 = 0; T2 < ucell.ntype; T2++) // 2.1 + { + for (int I2 = 0; I2 < ucell.atoms[T2].na; I2++) // 2.2 + { + std::complex* sk2 = sf.get_sk(ik, T2, I2, wfcpw); + for (int l1 = 0; l1 < ucell.atoms[T1].nwl + 1; l1++) // 1.3 + { + const std::complex lphase1 + = normalization * pow(ModuleBase::IMAG_UNIT, l1); // Peize Lin add normalization 2015-12-29 + for (int l2 = 0; l2 < ucell.atoms[T2].nwl + 1; l2++) // 2.3 + { + GlobalV::ofs_running << " " << std::setw(5) << ik + 1 << std::setw(8) + << ucell.atoms[T1].label << std::setw(8) << I1 + 1 << std::setw(8) + << l1 << std::setw(8) << ucell.atoms[T2].label << std::setw(8) + << I2 + 1 << std::setw(8) << l2 << std::setw(8) << std::endl; + + const std::complex lphase2 = pow(ModuleBase::IMAG_UNIT, l2); + for (int ic1 = 0; ic1 < ucell.nmax; ic1++) // 1.5 + { + for (int ic2 = 0; ic2 < ucell.nmax; ic2++) // 2.5 + { + for (int m1 = 0; m1 < 2 * l1 + 1; m1++) // 1.6 + { + const int lm1 = l1 * l1 + m1; + const int iwt1 = this->mu_index[T1](I1, l1, ic1, m1); + + std::vector> about_ig1(np, std::complex(0.0, 0.0)); + for (int ig = 0; ig < np; ig++) { + about_ig1[ig] = conj(lphase1 * sk1[ig] * ylm(lm1, ig)) + * gpow[ig]; // Peize Lin add for dpsi 2020.04.23 +} + + for (int m2 = 0; m2 < 2 * l2 + 1; m2++) // 2.6 + { + const int lm2 = l2 * l2 + m2; + const int iwt2 = this->mu_index[T2](I2, l2, ic2, m2); + + std::vector> about_ig2(np, + std::complex(0.0, 0.0)); + for (int ig = 0; ig < np; ++ig) { + about_ig2[ig] = lphase2 * sk2[ig] * ylm(lm2, ig) * about_ig1[ig]; +} + + /* same as: + for (int ig=0; ig>()); +} + + BlasConnector::gemm('N', 'T', enumber, enumber, np, 1.0, about_ig3_1.c, np, + about_ig3_2.c, np, 1.0, &overlap_Sq(iwt1, iwt2, 0, 0), + enumber); + } + } + } + } + } + } + delete[] sk2; + sk2 = nullptr; + } + } + delete[] sk1; + sk1 = nullptr; + } + } + + ModuleBase::timer::tick("Numerical_Basis", "cal_overlap_Sq"); + return overlap_Sq; +} + +// Peize Lin add for dpsi 2020.04.23 +ModuleBase::matrix Numerical_Basis::cal_overlap_V(const ModulePW::PW_Basis_K* wfcpw, + const psi::Psi>& psi, + const double derivative_order, const K_Vectors& kv, + const double tpiba) +{ + ModuleBase::matrix overlap_V(kv.get_nks(), PARAM.inp.nbands); + for (int ik = 0; ik < kv.get_nks(); ++ik) + { + std::vector> gk(kv.ngk[ik]); + for (int ig = 0; ig < gk.size(); ig++) { + gk[ig] = wfcpw->getgpluskcar(ik, ig) * tpiba; +} + + const std::vector gpow = Numerical_Basis::cal_gpow(gk, derivative_order); + + for (int ib = 0; ib < PARAM.inp.nbands; ++ib) { + for (int ig = 0; ig < kv.ngk[ik]; ++ig) { + overlap_V(ik, ib) += norm(psi(ik, ib, ig)) * gpow[ig]; +} +} + } + return overlap_V; +} + +ModuleBase::realArray Numerical_Basis::cal_flq(const std::vector>& gk, + const int ucell_lmax) const +{ + const int np = gk.size(); + const int enumber = this->bessel_basis.get_ecut_number(); + + // get flq(G) = \int f(r)jl(G*r) from interpolation table. + ModuleBase::realArray flq(ucell_lmax + 1, enumber, np); + for (int il = 0; il < ucell_lmax + 1; il++) + { + for (int ie = 0; ie < enumber; ie++) + { + for (int ig = 0; ig < np; ig++) + { + flq(il, ie, ig) = this->bessel_basis.Polynomial_Interpolation2(il, ie, gk[ig].norm()); + } + } + } + return flq; +} + +ModuleBase::matrix Numerical_Basis::cal_ylm(const std::vector>& gk, const int ucell_lmax) +{ + const int total_lm = (ucell_lmax + 1) * (ucell_lmax + 1); + ModuleBase::matrix ylm(total_lm, gk.size()); + ModuleBase::YlmReal::Ylm_Real(total_lm, gk.size(), gk.data(), ylm); + return ylm; +} + +std::vector Numerical_Basis::cal_gpow(const std::vector>& gk, + const double derivative_order) +{ + constexpr double thr = 1E-12; + std::vector gpow(gk.size(), 0.0); + for (int ig = 0; ig < gpow.size(); ++ig) + { + if (derivative_order >= 0) + { + gpow[ig] = std::pow(gk[ig].norm2(), derivative_order); + } + else + { + if (gk[ig].norm2() >= thr) { + gpow[ig] = std::pow(gk[ig].norm2(), derivative_order); +} + } + } + return gpow; +} + +std::vector Numerical_Basis::init_mu_index(const UnitCell& ucell) +{ + GlobalV::ofs_running << " Initialize the mu index" << std::endl; + std::vector mu_index_(ucell.ntype); + + int mu = 0; + for (int it = 0; it < ucell.ntype; it++) + { + mu_index_[it].create(ucell.atoms[it].na, ucell.atoms[it].nwl + 1, ucell.nmax, + 2 * (ucell.atoms[it].nwl + 1) + 1); // m ==> 2*l+1 + + mu_index_[it].zero_out(); + + // mohan added 2021-01-03 + GlobalV::ofs_running << "Type " << it + 1 << " number_of_atoms " << ucell.atoms[it].na << " number_of_L " + << ucell.atoms[it].nwl + 1 << " number_of_n " << ucell.nmax << " number_of_m " + << 2 * (ucell.atoms[it].nwl + 1) + 1 << std::endl; + + for (int ia = 0; ia < ucell.atoms[it].na; ia++) + { + for (int l = 0; l < ucell.atoms[it].nwl + 1; l++) + { + for (int n = 0; n < ucell.atoms[it].l_nchi[l]; n++) + { + for (int m = 0; m < 2 * l + 1; m++) + { + mu_index_[it](ia, l, n, m) = mu; + mu++; + } + } + } + } + } + return mu_index_; +} + +void Numerical_Basis::numerical_atomic_wfc(const int& ik, const ModulePW::PW_Basis_K* wfcpw, + ModuleBase::ComplexMatrix& psi, const Structure_Factor& sf, + const UnitCell& ucell) +{ + ModuleBase::TITLE("Numerical_Basis", "numerical_atomic_wfc"); + const int np = wfcpw->npwk[ik]; + std::vector> gk(np); + for (int ig = 0; ig < np; ig++) { + gk[ig] = wfcpw->getgpluskcar(ik, ig); +} + + const int total_lm = (ucell.lmax + 1) * (ucell.lmax + 1); + ModuleBase::matrix ylm(total_lm, np); + ModuleBase::YlmReal::Ylm_Real(total_lm, np, gk.data(), ylm); + + std::vector flq(np); + for (int it = 0; it < ucell.ntype; it++) + { + // OUT("it",it); + for (int ia = 0; ia < ucell.atoms[it].na; ia++) + { + // OUT("ia",ia); + std::complex* sk = sf.get_sk(ik, it, ia, wfcpw); + for (int l = 0; l < ucell.atoms[it].nwl + 1; l++) + { + // OUT("l",l); + std::complex lphase = pow(ModuleBase::IMAG_UNIT, l); + for (int ic = 0; ic < ucell.atoms[it].l_nchi[l]; ic++) + { + // OUT("ic",ic); + for (int ig = 0; ig < np; ig++) + { + flq[ig] = this->bessel_basis.Polynomial_Interpolation(it, l, ic, gk[ig].norm() * ucell.tpiba); + } + + for (int m = 0; m < 2 * l + 1; m++) + { + // OUT("m",m); + const int lm = l * l + m; + for (int ig = 0; ig < np; ig++) + { + psi(this->mu_index[it](ia, l, ic, m), ig) = lphase * sk[ig] * ylm(lm, ig) * flq[ig]; + } + } + } + } + delete[] sk; + sk = nullptr; + } + } +} + +void Numerical_Basis::output_info(std::ofstream& ofs, const Bessel_Basis& bessel_basis, const K_Vectors& kv, + const UnitCell& ucell) +{ + // only print out to the information by the first processor + if (GlobalV::MY_RANK == 0) + { + ofs.precision(10); + ofs << ucell.lat0 << std::endl; + + ofs << ucell.latvec.e11 << " " << ucell.latvec.e12 << " " << ucell.latvec.e13 << std::endl; + ofs << ucell.latvec.e21 << " " << ucell.latvec.e22 << " " << ucell.latvec.e23 << std::endl; + ofs << ucell.latvec.e31 << " " << ucell.latvec.e32 << " " << ucell.latvec.e33 << std::endl; + + ofs << ucell.ntype << " ntype" << std::endl; + for (int it = 0; it < ucell.ntype; it++) + { + ofs << ucell.atoms[it].label << " label" << std::endl; // mohan add 2009-07-23 + ofs << ucell.atoms[it].na << " na" << std::endl; + for (int ia = 0; ia < ucell.atoms[it].na; ia++) + { + ofs << ucell.atoms[it].tau[ia].x << " " << ucell.atoms[it].tau[ia].y << " " << ucell.atoms[it].tau[ia].z + << std::endl; + } + } + // ecutwfc_jlq determine the jlq corresponding to plane wave calculation. + ofs << PARAM.inp.ecutwfc << " ecutwfc" << std::endl; // mohan add 2009-09-08 + + // this parameter determine the total number of jlq. + ofs << bessel_basis.get_ecut() << " ecutwfc_jlq" << std::endl; // mohan modify 2009-09-08 + ofs << bessel_basis.get_rcut() << " rcut_Jlq" << std::endl; + + // mohan add 'smooth' and 'sigma' 2009-08-28 + ofs << bessel_basis.get_smooth() << " smooth" << std::endl; + ofs << bessel_basis.get_sigma() << " sigma" << std::endl; + + ofs << bessel_basis.get_tolerence() << " tolerence" << std::endl; + + ofs << ucell.lmax << " lmax" << std::endl; + } + + ofs << std::scientific; + + ofs << std::setprecision(8); + // NOTICE: ofs_warning << "\n The precison may affect the optimize result."; + + if (GlobalV::MY_RANK == 0) + { + ofs << kv.get_nkstot() << " nks" << std::endl; + ofs << PARAM.inp.nbands << " nbands" << std::endl; + ofs << PARAM.globalv.nlocal << " nwfc" << std::endl; + ofs << bessel_basis.get_ecut_number() << " ne " << std::endl; + } +} + +void Numerical_Basis::output_k(std::ofstream& ofs, const K_Vectors& kv) +{ + // (1) + if (GlobalV::MY_RANK == 0) + { + ofs << ""; + } + + // only half of nkstot should be output in "NSPIN == 2" case, k_up and k_down has same k infomation + int nkstot = kv.get_nkstot(); + + // (2) + for (int ik = 0; ik < nkstot; ik++) + { + double kx, ky, kz, wknow; +#ifdef __MPI + // temprary restrict kpar=1 for NSPIN=2 case for generating_orbitals + int pool = 0; + if (PARAM.inp.nspin != 2) { + pool = kv.para_k.whichpool[ik]; +} + const int iknow = ik - kv.para_k.startk_pool[GlobalV::MY_POOL]; + if (GlobalV::RANK_IN_POOL == 0) + { + if (GlobalV::MY_POOL == 0) + { + if (pool == 0) + { + kx = kv.kvec_c[ik].x; + ky = kv.kvec_c[ik].y; + kz = kv.kvec_c[ik].z; + wknow = kv.wk[ik]; + } + else + { + + int startpro_pool = kv.para_k.get_startpro_pool(pool); + MPI_Status ierror; + MPI_Recv(&kx, 1, MPI_DOUBLE, startpro_pool, ik * 4, MPI_COMM_WORLD, &ierror); + MPI_Recv(&ky, 1, MPI_DOUBLE, startpro_pool, ik * 4 + 1, MPI_COMM_WORLD, &ierror); + MPI_Recv(&kz, 1, MPI_DOUBLE, startpro_pool, ik * 4 + 2, MPI_COMM_WORLD, &ierror); + MPI_Recv(&wknow, 1, MPI_DOUBLE, startpro_pool, ik * 4 + 3, MPI_COMM_WORLD, &ierror); + } + } + else + { + if (GlobalV::MY_POOL == pool) + { + MPI_Send(&kv.kvec_c[iknow].x, 1, MPI_DOUBLE, 0, ik * 4, MPI_COMM_WORLD); + MPI_Send(&kv.kvec_c[iknow].y, 1, MPI_DOUBLE, 0, ik * 4 + 1, MPI_COMM_WORLD); + MPI_Send(&kv.kvec_c[iknow].z, 1, MPI_DOUBLE, 0, ik * 4 + 2, MPI_COMM_WORLD); + MPI_Send(&kv.wk[iknow], 1, MPI_DOUBLE, 0, ik * 4 + 3, MPI_COMM_WORLD); + } + } + } + // this barrier is very important + MPI_Barrier(MPI_COMM_WORLD); +#else + if (GlobalV::MY_RANK == 0) + { + kx = kv.kvec_c[ik].x; + ky = kv.kvec_c[ik].y; + kz = kv.kvec_c[ik].z; + wknow = kv.wk[ik]; + } +#endif + + if (GlobalV::MY_RANK == 0) + { + ofs << "\n" << kx << " " << ky << " " << kz; + ofs << " " << wknow * 0.5; + } + } + + if (GlobalV::MY_RANK == 0) + { + ofs << "\n" << std::endl; + } +} + +void Numerical_Basis::output_overlap_Q(std::ofstream& ofs, const std::vector& overlap_Q, + const K_Vectors& kv) +{ + // (3) + if (GlobalV::MY_RANK == 0) + { + ofs << "\n"; + } + + // (4) + /* + if(GlobalV::MY_RANK==0) + { + // for( int i=0; i 0); + ModuleBase::ComplexArray overlap_Q_k(kv.get_nks(), overlap_Q[0].getBound1(), overlap_Q[0].getBound2(), + overlap_Q[0].getBound3()); + for (int ik = 0; ik < kv.get_nks(); ++ik) + { + std::memcpy(overlap_Q_k.ptr + ik * overlap_Q[ik].getSize(), overlap_Q[ik].ptr, + overlap_Q[ik].getSize() * sizeof(std::complex)); + } + + // only half of nkstot should be output in "NSPIN == 2" case, k_up and k_down has same k infomation + int nkstot = kv.get_nkstot(); + int count = 0; + for (int ik = 0; ik < nkstot; ik++) + { + ModuleBase::ComplexArray Qtmp(overlap_Q[ik].getBound1(), overlap_Q[ik].getBound2(), overlap_Q[ik].getBound3()); + Qtmp.zero_out(); + kv.para_k.pool_collection(Qtmp.ptr, overlap_Q_k, ik); + if (GlobalV::MY_RANK == 0) + { + // ofs << "\n ik=" << ik; + // begin data writing. + const int dim = Qtmp.getSize(); + for (int i = 0; i < dim; i++) + { + if (count % 4 == 0) { + ofs << std::endl; +} + ofs << " " << Qtmp.ptr[i].real() << " " << Qtmp.ptr[i].imag(); + ++count; + } + // end data writing. + } +#ifdef __MPI + MPI_Barrier(MPI_COMM_WORLD); +#endif + } + + // (5) + if (GlobalV::MY_RANK == 0) + { + ofs << "\n" << std::endl; + } +} + +void Numerical_Basis::output_overlap_Sq(const std::string& name, std::ofstream& ofs, + const std::vector& overlap_Sq, const K_Vectors& kv) +{ + if (GlobalV::MY_RANK == 0) + { + ofs << "\n"; + ofs.close(); + } + + // only half of nkstot should be output in "NSPIN == 2" case, k_up and k_down has same k infomation + int ispin = 1; + if (PARAM.inp.nspin == 2) { + ispin = 2; +} + int nkstot = kv.get_nkstot() / ispin; + int count = 0; + for (int is = 0; is < ispin; is++) + { + for (int ik = 0; ik < nkstot; ik++) + { + if (GlobalV::MY_POOL == kv.para_k.whichpool[ik]) + { + if (GlobalV::RANK_IN_POOL == 0) + { + ofs.open(name.c_str(), std::ios::app); + const int ik_now = ik - kv.para_k.startk_pool[GlobalV::MY_POOL] + is * nkstot; + + const int size = overlap_Sq[ik_now].getSize(); + for (int i = 0; i < size; i++) + { + if (count % 2 == 0) { + ofs << std::endl; +} + ofs << " " << overlap_Sq[ik_now].ptr[i].real() << " " << overlap_Sq[ik_now].ptr[i].imag(); + ++count; + } + ofs.flush(); + ofs.close(); + } +#ifdef __MPI + MPI_Barrier(MPI_COMM_WORLD); +#endif + } + else + { +#ifdef __MPI + MPI_Barrier(MPI_COMM_WORLD); +#endif + } + + /* + if(MY_RANK==0) + for(int i=0; i< Sq_real[ik].getSize(); i++) + { + if(i%2==0) ofs << "\n"; + ofs << " " << Sq_real[ik].ptr[i] << " " << Sq_imag[ik].ptr[i]; + } + */ + } + } + if (GlobalV::MY_RANK == 0) + { + ofs.open(name.c_str(), std::ios::app); + ofs << "\n" << std::endl; + } +} + +// Peize Lin add 2020.04.23 +void Numerical_Basis::output_overlap_V(std::ofstream& ofs, const ModuleBase::matrix& overlap_V) +{ + if (GlobalV::MY_RANK == 0) + { + ofs << "\n" << std::endl; + ; + overlap_V.print(ofs); + ofs << "" << std::endl; + } +} diff --git a/source/source_io/module_bessel/numerical_basis.h b/source/source_io/module_bessel/numerical_basis.h new file mode 100644 index 0000000000..d7ffc62ee1 --- /dev/null +++ b/source/source_io/module_bessel/numerical_basis.h @@ -0,0 +1,108 @@ +//========================================================== +// AUTHOR : mohan +// DATE : 2009-4-2 +// Last Modify: 2009-08-28 +//========================================================== +#ifndef NUMERICAL_BASIS_H +#define NUMERICAL_BASIS_H +#include + +#include "bessel_basis.h" +#include "../../source_base/complexarray.h" +#include "../../source_base/complexmatrix.h" +#include "../../source_base/global_function.h" +#include "../../source_base/global_variable.h" +#include "../../source_base/intarray.h" +#include "../../source_base/matrix.h" +#include "../../source_base/vector3.h" +#include "../../source_basis/module_pw/pw_basis_k.h" +#include "../../source_cell/klist.h" +#include "../../source_pw/module_pwdft/structure_factor.h" +#include "../../source_psi/psi.h" +//========================================================== +// CLASS : +// NAME : Numerical_Basis +//========================================================== +class Numerical_Basis +{ + public: + // this is not a good idea to construct the instance. Instead, there are many variables that CAN DEFINE the identity of this instance, + // these parameters should be provided in the constructor. For future refactor, I list them here: + // bessel_nao_*: including ecut, rcut, smearing, sigma, etc. + // a file name: for the function start_from_file_k, if starts from file, can construct a different instance, instead of using the same instance. + Numerical_Basis(); + ~Numerical_Basis(); + + // void start_from_file_k(const int& ik, ModuleBase::ComplexMatrix& psi, const Structure_Factor& sf, const ModulePW::PW_Basis_K* wfcpw, const UnitCell& ucell); + void output_overlap(const psi::Psi>& psi, + const Structure_Factor& sf, + const K_Vectors& kv, + const ModulePW::PW_Basis_K* wfcpw, + const UnitCell& ucell, + const int& index); + + private: + bool init_label = false; + + Bessel_Basis bessel_basis; + + std::vector mu_index; + static std::vector init_mu_index(const UnitCell& ucell); + + void numerical_atomic_wfc(const int& ik, + const ModulePW::PW_Basis_K* wfcpw, + ModuleBase::ComplexMatrix& psi, + const Structure_Factor& sf, + const UnitCell& ucell); + + ModuleBase::ComplexArray cal_overlap_Q(const int& ik, + const int& np, + const ModulePW::PW_Basis_K* wfcpw, + const psi::Psi>& psi, + const double derivative_order, + const Structure_Factor& sf, + const UnitCell& ucell) const; + + // computed in the plane-wave basis + ModuleBase::ComplexArray cal_overlap_Sq(const int& ik, + const int& np, + const double derivative_order, + const Structure_Factor& sf, + const ModulePW::PW_Basis_K* wfcpw, + const UnitCell& ucell) const; + + static ModuleBase::matrix cal_overlap_V(const ModulePW::PW_Basis_K* wfcpw, + const psi::Psi>& psi, + const double derivative_order, + const K_Vectors& kv, + const double tpiba); + + // gk should be in the atomic unit (Bohr) + ModuleBase::realArray cal_flq(const std::vector> &gk, + const int ucell_lmax) const; + + // Ylm does not depend on the magnitude so unit is not important + static ModuleBase::matrix cal_ylm(const std::vector> &gk, + const int ucell_lmax); + + // gk and the returned gpow are both in the atomic unit (Bohr) + static std::vector cal_gpow(const std::vector> &gk, + const double derivative_order); + + static void output_info(std::ofstream& ofs, const Bessel_Basis& bessel_basis, const K_Vectors& kv, const UnitCell& ucell); + + static void output_k(std::ofstream& ofs, const K_Vectors& kv); + + static void output_overlap_Q(std::ofstream& ofs, + const std::vector& overlap_Q, + const K_Vectors& kv); + + static void output_overlap_Sq(const std::string& name, + std::ofstream& ofs, + const std::vector& overlap_Sq, + const K_Vectors& kv); + + static void output_overlap_V(std::ofstream &ofs, const ModuleBase::matrix &overlap_V); +}; + +#endif diff --git a/source/source_io/numerical_basis_jyjy.cpp b/source/source_io/module_bessel/numerical_basis_jyjy.cpp similarity index 99% rename from source/source_io/numerical_basis_jyjy.cpp rename to source/source_io/module_bessel/numerical_basis_jyjy.cpp index 63599e5133..8f6c52880e 100644 --- a/source/source_io/numerical_basis_jyjy.cpp +++ b/source/source_io/module_bessel/numerical_basis_jyjy.cpp @@ -1,4 +1,4 @@ -#include "source_io/numerical_basis_jyjy.h" +#include "numerical_basis_jyjy.h" #include "source_base/matrix3.h" #include "source_base/vector3.h" diff --git a/source/source_io/numerical_basis_jyjy.h b/source/source_io/module_bessel/numerical_basis_jyjy.h similarity index 93% rename from source/source_io/numerical_basis_jyjy.h rename to source/source_io/module_bessel/numerical_basis_jyjy.h index 84296c57af..621e122523 100644 --- a/source/source_io/numerical_basis_jyjy.h +++ b/source/source_io/module_bessel/numerical_basis_jyjy.h @@ -1,9 +1,9 @@ #ifndef NUMERICAL_BASIS_JYJY_H #define NUMERICAL_BASIS_JYJY_H -#include "source_base/complexarray.h" -#include "source_base/matrix3.h" -#include "source_base/vector3.h" +#include "../../source_base/complexarray.h" +#include "../../source_base/matrix3.h" +#include "../../source_base/vector3.h" #include #include diff --git a/source/source_io/numerical_descriptor.cpp b/source/source_io/module_bessel/numerical_descriptor.cpp similarity index 98% rename from source/source_io/numerical_descriptor.cpp rename to source/source_io/module_bessel/numerical_descriptor.cpp index b4810c07dd..6a3004416b 100644 --- a/source/source_io/numerical_descriptor.cpp +++ b/source/source_io/module_bessel/numerical_descriptor.cpp @@ -1,8 +1,6 @@ #include "numerical_descriptor.h" -#include "source_pw/module_pwdft/global.h" #include "source_io/module_parameter/parameter.h" #include "source_cell/module_symmetry/symmetry.h" -#include "winput.h" #include "source_base/math_ylmreal.h" #include "source_base/parallel_reduce.h" #include "source_base/timer.h" @@ -75,8 +73,7 @@ void Numerical_Descriptor::output_descriptor(const UnitCell& ucell, const psi::P //----------------------------------- std::ofstream ofs; std::stringstream ss; - // the parameter 'winput::spillage_outdir' is read from INPUTw. - ss << winput::spillage_outdir << "/" << "descriptor.dat"; + ss << PARAM.inp.spillage_outdir << "/" << "descriptor.dat"; if (GlobalV::MY_RANK==0) { ofs.open(ss.str().c_str()); diff --git a/source/source_io/numerical_descriptor.h b/source/source_io/module_bessel/numerical_descriptor.h similarity index 83% rename from source/source_io/numerical_descriptor.h rename to source/source_io/module_bessel/numerical_descriptor.h index 7c50c616a1..8558779cfd 100644 --- a/source/source_io/numerical_descriptor.h +++ b/source/source_io/module_bessel/numerical_descriptor.h @@ -4,12 +4,12 @@ //========================================================== #ifndef NUMERICAL_DESCRIPTOR_H #define NUMERICAL_DESCRIPTOR_H -#include "../source_base/global_function.h" -#include "../source_base/global_variable.h" -#include "../source_base/intarray.h" -#include "../source_base/complexmatrix.h" +#include "../../source_base/global_function.h" +#include "../../source_base/global_variable.h" +#include "../../source_base/intarray.h" +#include "../../source_base/complexmatrix.h" #include "bessel_basis.h" -#include "source_psi/psi.h" +#include "../../source_psi/psi.h" //========================================================== // CLASS : // NAME : Numerical_Descriptor @@ -32,7 +32,7 @@ class Numerical_Descriptor Bessel_Basis bessel_basis; - ModuleBase::IntArray *mu_index; + ModuleBase::IntArray * mu_index = nullptr; void init_mu_index(const UnitCell& ucell);//mohan added 2021-01-03 // void jlq3d_overlap(ModuleBase::realArray &overlap_Q1, ModuleBase::realArray &overlap_Q2, diff --git a/source/source_io/get_pchg_lcao.cpp b/source/source_io/module_chgpot/get_pchg_lcao.cpp similarity index 93% rename from source/source_io/get_pchg_lcao.cpp rename to source/source_io/module_chgpot/get_pchg_lcao.cpp index e293a51312..0c1b13d3b3 100644 --- a/source/source_io/get_pchg_lcao.cpp +++ b/source/source_io/module_chgpot/get_pchg_lcao.cpp @@ -1,9 +1,9 @@ #include "get_pchg_lcao.h" -#include "source_io/cube_io.h" +#include "source_io/module_output/cube_io.h" #include "source_estate/module_charge/symmetry_rho.h" #include "source_estate/module_dm/cal_dm_psi.h" -#include "source_lcao/module_gint/temp_gint/gint_interface.h" +#include "source_lcao/module_gint/gint_interface.h" Get_pchg_lcao::Get_pchg_lcao(psi::Psi* psi_gamma_in, const Parallel_Orbitals* ParaV_in) : psi_gamma(psi_gamma_in), ParaV(ParaV_in) @@ -20,8 +20,7 @@ Get_pchg_lcao::~Get_pchg_lcao() } // For gamma_only -void Get_pchg_lcao::begin(Gint_Gamma& gg, - double** rho, +void Get_pchg_lcao::begin(double** rho, const ModuleBase::matrix& wg, const std::vector& ef_all_spin, const int rhopw_nrxx, @@ -70,14 +69,7 @@ void Get_pchg_lcao::begin(Gint_Gamma& gg, DM.init_DMR(GridD_in, ucell_in); DM.cal_DMR(); -#ifdef __OLD_GINT - gg.initialize_pvpR(*ucell_in, GridD_in, nspin); - gg.transfer_DM2DtoGrid(DM.get_DMR_vector()); - Gint_inout inout(rho, Gint_Tools::job_type::rho, nspin); - gg.cal_gint(&inout); -#else ModuleGint::cal_gint_rho(DM.get_DMR_vector(), nspin, rho); -#endif // A solution to replace the original implementation of the following code: // pelec->charge->save_rho_before_sum_band(); @@ -99,8 +91,11 @@ void Get_pchg_lcao::begin(Gint_Gamma& gg, // Use a const vector to store efermi for all spins, replace the original implementation: // const double ef_tmp = pelec->eferm.get_efval(is); + const int precision = 6; double ef_spin = ef_all_spin[is]; - ModuleIO::write_vdata_palgrid(pgrid, rho_save[is].data(), is, nspin, 0, ssc.str(), ef_spin, ucell_in); + ModuleIO::write_vdata_palgrid(pgrid, + rho_save[is].data(), is, nspin, 0, + ssc.str(), ef_spin, ucell_in, precision); } } } @@ -109,8 +104,7 @@ void Get_pchg_lcao::begin(Gint_Gamma& gg, } // For multi-k -void Get_pchg_lcao::begin(Gint_k& gk, - double** rho, +void Get_pchg_lcao::begin(double** rho, std::complex** rhog, const ModuleBase::matrix& wg, const std::vector& ef_all_spin, @@ -169,14 +163,7 @@ void Get_pchg_lcao::begin(Gint_k& gk, DM.init_DMR(GridD_in, ucell_in); DM.cal_DMR(ik); -#ifdef __OLD_GINT - gk.initialize_pvpR(*ucell_in, GridD_in, nspin); - gk.transfer_DM2DtoGrid(DM.get_DMR_vector()); - Gint_inout inout(rho, Gint_Tools::job_type::rho, nspin); - gk.cal_gint(&inout); -#else ModuleGint::cal_gint_rho(DM.get_DMR_vector(), nspin, rho); -#endif // Using std::vector to replace the original double** rho_save @@ -196,6 +183,7 @@ void Get_pchg_lcao::begin(Gint_k& gk, ofs_running << " Writing cube file " << ssc.str() << std::endl; double ef_spin = ef_all_spin[is]; + const int precision = 6; ModuleIO::write_vdata_palgrid(pgrid, rho_save[is].data(), is, @@ -203,7 +191,8 @@ void Get_pchg_lcao::begin(Gint_k& gk, 0, ssc.str(), ef_spin, - ucell_in); + ucell_in, + precision); } } } @@ -216,14 +205,7 @@ void Get_pchg_lcao::begin(Gint_k& gk, DM.init_DMR(GridD_in, ucell_in); DM.cal_DMR(); -#ifdef __OLD_GINT - gk.initialize_pvpR(*ucell_in, GridD_in, nspin); - gk.transfer_DM2DtoGrid(DM.get_DMR_vector()); - Gint_inout inout(rho, Gint_Tools::job_type::rho, nspin); - gk.cal_gint(&inout); -#else ModuleGint::cal_gint_rho(DM.get_DMR_vector(), nspin, rho); -#endif // Using std::vector to replace the original double** rho_save std::vector> rho_save(nspin, std::vector(rhopw_nrxx)); @@ -253,6 +235,7 @@ void Get_pchg_lcao::begin(Gint_k& gk, ofs_running << " Writing cube file " << ssc.str() << std::endl; double ef_spin = ef_all_spin[is]; + const int precision = 6; ModuleIO::write_vdata_palgrid(pgrid, rho_save[is].data(), is, @@ -260,7 +243,8 @@ void Get_pchg_lcao::begin(Gint_k& gk, 0, ssc.str(), ef_spin, - ucell_in); + ucell_in, + precision); } } } @@ -431,7 +415,7 @@ void Get_pchg_lcao::idmatrix(const int& ib, if (ib_local >= 0) { - double wg_value; + double wg_value = 0.0; if (if_separate_k) { wg_value = (ib < fermi_band) ? wg_sum_k : wg_sum_k_homo; @@ -483,4 +467,4 @@ void Get_pchg_lcao::prepare_get_pchg(std::ofstream& ofs_running) ofs_running << "\n\n"; ofs_running << std::setprecision(6); -} \ No newline at end of file +} diff --git a/source/source_io/get_pchg_lcao.h b/source/source_io/module_chgpot/get_pchg_lcao.h similarity index 93% rename from source/source_io/get_pchg_lcao.h rename to source/source_io/module_chgpot/get_pchg_lcao.h index 1c34219ade..4b4de152f8 100644 --- a/source/source_io/get_pchg_lcao.h +++ b/source/source_io/module_chgpot/get_pchg_lcao.h @@ -1,8 +1,6 @@ #ifndef GET_PCHG_LCAO_H #define GET_PCHG_LCAO_H -#include "source_lcao/module_gint/gint_gamma.h" -#include "source_lcao/module_gint/gint_k.h" #include "source_cell/klist.h" #include "source_estate/module_dm/density_matrix.h" @@ -22,8 +20,7 @@ class Get_pchg_lcao ~Get_pchg_lcao(); // For gamma_only - void begin(Gint_Gamma& gg, - double** rho, + void begin(double** rho, const ModuleBase::matrix& wg, const std::vector& ef_all_spin, const int rhopw_nrxx, @@ -39,8 +36,7 @@ class Get_pchg_lcao std::ofstream& ofs_running); // For multi-k - void begin(Gint_k& gk, - double** rho, + void begin(double** rho, std::complex** rhog, const ModuleBase::matrix& wg, const std::vector& ef_all_spin, @@ -105,6 +101,6 @@ class Get_pchg_lcao std::vector bands_picked_; psi::Psi* psi_gamma = nullptr; psi::Psi>* psi_k = nullptr; - const Parallel_Orbitals* ParaV; + const Parallel_Orbitals* ParaV = nullptr; }; #endif // GET_PCHG_LCAO_H diff --git a/source/source_io/get_pchg_pw.h b/source/source_io/module_chgpot/get_pchg_pw.h similarity index 99% rename from source/source_io/get_pchg_pw.h rename to source/source_io/module_chgpot/get_pchg_pw.h index 7c2d14fe6a..7609b30eb8 100644 --- a/source/source_io/get_pchg_pw.h +++ b/source/source_io/module_chgpot/get_pchg_pw.h @@ -1,7 +1,8 @@ #ifndef GET_PCHG_PW_H #define GET_PCHG_PW_H -#include "cube_io.h" +#include "source_io/module_output/cube_io.h" +#include "source_estate/module_charge/symmetry_rho.h" namespace ModuleIO { diff --git a/source/source_io/rhog_io.cpp b/source/source_io/module_chgpot/rhog_io.cpp similarity index 99% rename from source/source_io/rhog_io.cpp rename to source/source_io/module_chgpot/rhog_io.cpp index a642a15e31..b1ae0a4892 100644 --- a/source/source_io/rhog_io.cpp +++ b/source/source_io/module_chgpot/rhog_io.cpp @@ -1,4 +1,4 @@ -#include "binstream.h" +#include "source_io/module_output/binstream.h" #include "source_base/global_function.h" #include "source_io/module_parameter/parameter.h" #include "source_base/global_variable.h" diff --git a/source/source_io/rhog_io.h b/source/source_io/module_chgpot/rhog_io.h similarity index 100% rename from source/source_io/rhog_io.h rename to source/source_io/module_chgpot/rhog_io.h diff --git a/source/source_io/write_elecstat_pot.cpp b/source/source_io/module_chgpot/write_elecstat_pot.cpp similarity index 95% rename from source/source_io/write_elecstat_pot.cpp rename to source/source_io/module_chgpot/write_elecstat_pot.cpp index e70ba04525..94b85a9d37 100644 --- a/source/source_io/write_elecstat_pot.cpp +++ b/source/source_io/module_chgpot/write_elecstat_pot.cpp @@ -3,9 +3,8 @@ #include "source_io/module_parameter/parameter.h" #include "source_estate/module_pot/H_Hartree_pw.h" #include "source_estate/module_pot/efield.h" -#include "source_pw/module_pwdft/global.h" -#include "source_io/cube_io.h" -#include "source_io/output_log.h" +#include "source_io/module_output/cube_io.h" +#include "source_io/module_output/output_log.h" #include "write_elecstat_pot.h" namespace ModuleIO @@ -22,7 +21,8 @@ void write_elecstat_pot( const Charge* const chr, const UnitCell* ucell, const double* v_eff, - const surchem& solvent) + const surchem& solvent, + const int precision) { ModuleBase::TITLE("ModuleIO", "write_elecstat_pot"); ModuleBase::timer::tick("ModuleIO", "write_elecstat_pot"); @@ -89,7 +89,6 @@ void write_elecstat_pot( //------------------------------------------- //! Write down the electrostatic potential //------------------------------------------- - int precision = 9; int is = -1; double ef_tmp = 0.0; int out_fermi = 0; diff --git a/source/source_io/write_elecstat_pot.h b/source/source_io/module_chgpot/write_elecstat_pot.h similarity index 79% rename from source/source_io/write_elecstat_pot.h rename to source/source_io/module_chgpot/write_elecstat_pot.h index 76c90bf70d..bee575b95c 100644 --- a/source/source_io/write_elecstat_pot.h +++ b/source/source_io/module_chgpot/write_elecstat_pot.h @@ -18,7 +18,9 @@ namespace ModuleIO /// @param rho_basis /// @param chr /// @param ucell_ -/// @param v_effective_fixed +/// @param v_eff_fixed +/// @param solvent: for solvation model +/// #param precision: output precision void write_elecstat_pot( #ifdef __MPI const int& bz, @@ -29,8 +31,9 @@ void write_elecstat_pot( ModulePW::PW_Basis* rho_basis, const Charge* const chr, const UnitCell* ucell_, - const double* v_effective_fixed, - const surchem& solvent); + const double* v_eff_fixed, + const surchem& solvent, + const int precision); } // namespace ModuleIO diff --git a/source/source_io/module_chgpot/write_init.cpp b/source/source_io/module_chgpot/write_init.cpp new file mode 100644 index 0000000000..8d41e61769 --- /dev/null +++ b/source/source_io/module_chgpot/write_init.cpp @@ -0,0 +1,107 @@ +#include "source_io/module_chgpot/write_init.h" +#include "source_io/module_output/cube_io.h" + +#include +#include + +void ModuleIO::write_chg_init( + const UnitCell& ucell, + const Parallel_Grid ¶_grid, + const Charge &chr, + const elecstate::Efermi &efermi, + const int istep, + const Input_para& inp) +{ + const int nspin = inp.nspin; + assert(nspin == 1 || nspin ==2 || nspin == 4); + + if (inp.out_chg[0] == 2) + { + for (int is = 0; is < nspin; is++) + { + std::stringstream ss; + ss << PARAM.globalv.global_out_dir << "chg"; + + if(nspin==1) + { + ss << "ini.cube"; + } + else if(nspin==2 || nspin==4) + { + ss << "s" << is + 1 << "ini.cube"; + } + + // mohan add 2025-10-18 + double fermi_energy = 0.0; + if(nspin == 1 || nspin ==4) + { + fermi_energy = efermi.ef; + } + else if(nspin == 2) + { + if(is==0) + { + fermi_energy = efermi.ef_up; + } + else if(is==1) + { + fermi_energy = efermi.ef_dw; + } + } + + ModuleIO::write_vdata_palgrid(para_grid, + chr.rho[is], + is, + nspin, + istep, + ss.str(), + fermi_energy, + &(ucell), + inp.out_chg[1]); + } + } + return; +} + + +void ModuleIO::write_pot_init( + const UnitCell& ucell, + const Parallel_Grid ¶_grid, + elecstate::ElecState *pelec, + const int istep, + const Input_para& inp) +{ + //! output total local potential of the initial charge density + const int nspin = inp.nspin; + assert(nspin == 1 || nspin ==2 || nspin == 4); + + if (inp.out_pot[0] == 3) + { + for (int is = 0; is < nspin; is++) + { + std::stringstream ss; + ss << PARAM.globalv.global_out_dir << "pot"; + + if(nspin==1) + { + ss << "ini.cube"; + } + else if(nspin==2 || nspin==4) + { + ss << "s" << is + 1 << "ini.cube"; + } + + ModuleIO::write_vdata_palgrid(para_grid, + pelec->pot->get_eff_v(is), + is, + nspin, + istep, + ss.str(), + 0.0, // efermi + &(ucell), + 11, // precsion + 0); // out_fermi + } + } + +} diff --git a/source/source_io/module_chgpot/write_init.h b/source/source_io/module_chgpot/write_init.h new file mode 100644 index 0000000000..08184931e9 --- /dev/null +++ b/source/source_io/module_chgpot/write_init.h @@ -0,0 +1,31 @@ +#ifndef WRITE_INIT_H +#define WRITE_INIT_H + +#include "source_io/module_parameter/input_parameter.h" // use inp +#include "source_cell/parallel_kpoints.h" // use para_grid +#include "source_estate/module_charge/charge.h" // use chg +#include "source_estate/fp_energy.h" // use efermi +#include "source_estate/elecstate.h" // use pelec + +namespace ModuleIO +{ + +void write_chg_init( + const UnitCell& ucell, + const Parallel_Grid ¶_grid, + const Charge &chr, + const elecstate::Efermi &efermi, + const int istep, + const Input_para& inp); + +void write_pot_init( + const UnitCell& ucell, + const Parallel_Grid ¶_grid, + elecstate::ElecState *pelec, + const int istep, + const Input_para& inp); + +} + + +#endif diff --git a/source/source_io/module_chgpot/write_libxc_r.cpp b/source/source_io/module_chgpot/write_libxc_r.cpp new file mode 100644 index 0000000000..e2a246bacf --- /dev/null +++ b/source/source_io/module_chgpot/write_libxc_r.cpp @@ -0,0 +1,496 @@ +//====================== +// AUTHOR : Peize Lin +// DATE : 2024-09-12 +//====================== + +#ifdef USE_LIBXC + +#include "write_libxc_r.h" +#include "source_hamilt/module_xc/xc_functional.h" +#include "source_hamilt/module_xc/xc_functional_libxc.h" +#include "source_estate/module_charge/charge.h" +#include "source_basis/module_pw/pw_basis_big.h" +#include "source_basis/module_pw/pw_basis.h" +#include "source_io/module_output/cube_io.h" +#include "source_base/global_variable.h" +#include "source_io/module_parameter/parameter.h" +#include "source_base/timer.h" +#include "source_base/tool_title.h" + +#include +#include +#include +#include +#include + +void ModuleIO::write_libxc_r( + const int order, + const std::vector &func_id, + const int &nrxx, // number of real-space grid + const double &omega, // volume of cell + const double tpiba, + const Charge &chr, + const ModulePW::PW_Basis_Big &pw_big, + const ModulePW::PW_Basis &pw_rhod) +{ + ModuleBase::TITLE("ModuleIO","write_libxc_r"); + ModuleBase::timer::tick("ModuleIO","write_libxc_r"); + + const int nspin = + (PARAM.inp.nspin == 1 || ( + PARAM.inp.nspin ==4 && !PARAM.globalv.domag + && !PARAM.globalv.domag_z)) + ? 1 : 2; + + //---------------------------------------------------------- + // xc_func_type is defined in Libxc package + // to understand the usage of xc_func_type, + // use can check on website, for example: + // https://www.tddft.org/programs/libxc/manual/libxc-5.1.x/ + //---------------------------------------------------------- + + std::vector funcs = + XC_Functional_Libxc::init_func( + func_id, + (1==nspin) ? XC_UNPOLARIZED : XC_POLARIZED + ); + + const bool is_gga = [&funcs]() + { + for( xc_func_type &func : funcs ) + { + switch( func.info->family ) + { + case XC_FAMILY_GGA: + case XC_FAMILY_HYB_GGA: + return true; + } + } + return false; + }(); + + // converting rho + std::vector rho; + std::vector amag; + if(1==nspin || 2==PARAM.inp.nspin) + { + rho = XC_Functional_Libxc::convert_rho(nspin, nrxx, &chr); + } + else + { + std::tuple, std::vector> rho_amag = + XC_Functional_Libxc::convert_rho_amag_nspin4(nspin, nrxx, &chr); + rho = std::get<0>(std::move(rho_amag)); + amag = std::get<1>(std::move(rho_amag)); + } + + std::vector sigma; + if(is_gga) + { + const std::vector>> gdr = + XC_Functional_Libxc::cal_gdr(nspin, nrxx, rho, tpiba, &chr); + sigma = XC_Functional_Libxc::convert_sigma(gdr); + } + + std::vector exc; + std::vector vrho; + std::vector vsigma; + std::vector v2rho2; + std::vector v2rhosigma; + std::vector v2sigma2; + std::vector v3rho3; + std::vector v3rho2sigma; + std::vector v3rhosigma2; + std::vector v3sigma3; + std::vector v4rho4; + std::vector v4rho3sigma; + std::vector v4rho2sigma2; + std::vector v4rhosigma3; + std::vector v4sigma4; + // attention: order 4321 don't break + switch( order ) + { + case 4: v4rho4.resize( nrxx * ((1==nspin)?1:5) ); + case 3: v3rho3.resize( nrxx * ((1==nspin)?1:4) ); + case 2: v2rho2.resize( nrxx * ((1==nspin)?1:3) ); + case 1: vrho .resize( nrxx * nspin ); + case 0: exc .resize( nrxx ); + break; + default: throw std::domain_error( + "order =" + std::to_string(order) + + " unfinished in " + std::string(__FILE__) + + " line " + std::to_string(__LINE__)); + break; + } + if(is_gga) + { + switch( order ) + { + case 4: v4rho3sigma .resize( nrxx * ((1==nspin)?1:12) ); + v4rho2sigma2.resize( nrxx * ((1==nspin)?1:15) ); + v4rhosigma3 .resize( nrxx * ((1==nspin)?1:20) ); + v4sigma4 .resize( nrxx * ((1==nspin)?1:15) ); + case 3: v3rho2sigma .resize( nrxx * ((1==nspin)?1:9) ); + v3rhosigma2 .resize( nrxx * ((1==nspin)?1:12) ); + v3sigma3 .resize( nrxx * ((1==nspin)?1:10) ); + case 2: v2rhosigma .resize( nrxx * ((1==nspin)?1:6) ); + v2sigma2 .resize( nrxx * ((1==nspin)?1:6) ); + case 1: vsigma .resize( nrxx * ((1==nspin)?1:3) ); + case 0: break; + default: throw std::domain_error( + "order =" + std::to_string(order) + + " unfinished in " + std::string(__FILE__) + + " line " + std::to_string(__LINE__)); + break; + } + } + + for( xc_func_type &func : funcs ) + { + // jiyy add for threshold + constexpr double rho_threshold = 1E-6; + constexpr double grho_threshold = 1E-10; + + xc_func_set_dens_threshold(&func, rho_threshold); + + // sgn for threshold mask + const std::vector sgn = + XC_Functional_Libxc::cal_sgn( + rho_threshold, grho_threshold, func, nspin, nrxx, rho, sigma); + + // call libxc function + // attention: order 432 don't break + switch( func.info->family ) + { + case XC_FAMILY_LDA: + { + switch( order ) + { + case 4: xc_lda_lxc ( &func, nrxx, rho.data(), v4rho4.data() ); + case 3: xc_lda_kxc ( &func, nrxx, rho.data(), v3rho3.data() ); + case 2: xc_lda_fxc ( &func, nrxx, rho.data(), v2rho2.data() ); + case 1: xc_lda_exc_vxc( &func, nrxx, rho.data(), exc.data(), vrho.data() ); + break; + case 0: xc_lda_exc ( &func, nrxx, rho.data(), exc.data() ); + break; + default: throw std::domain_error( + "order =" + std::to_string(order) + + " unfinished in " + std::string(__FILE__) + + " line " + std::to_string(__LINE__)); + break; + } + break; + } + case XC_FAMILY_GGA: + case XC_FAMILY_HYB_GGA: + { + switch( order ) + { + case 4: xc_gga_lxc ( + &func, nrxx, rho.data(), sigma.data(), + v4rho4.data(), v4rho3sigma.data(), + v4rho2sigma2.data(), v4rhosigma3.data(), + v4sigma4.data() ); + case 3: xc_gga_kxc ( + &func, nrxx, rho.data(), sigma.data(), + v3rho3.data(), v3rho2sigma.data(), + v3rhosigma2.data(), v3sigma3.data() ); + case 2: xc_gga_fxc ( + &func, nrxx, rho.data(), sigma.data(), + v2rho2.data(), v2rhosigma.data(), + v2sigma2.data() ); + case 1: xc_gga_exc_vxc( + &func, nrxx, rho.data(), sigma.data(), + exc.data(), vrho.data(), vsigma.data() ); + break; + case 0: xc_gga_exc ( &func, nrxx, rho.data(), sigma.data(), exc.data() ); + break; + default: throw std::domain_error( + "order =" + std::to_string(order) + + " unfinished in " + std::string(__FILE__) + + " line " + std::to_string(__LINE__)); + break; + } + break; + } + default: + { + throw std::domain_error( + "func.info->family =" + std::to_string(func.info->family) + + " unfinished in " + std::string(__FILE__) + + " line " + std::to_string(__LINE__)); + break; + } + } // end switch( func.info->family ) + } // end for( xc_func_type &func : funcs ) + + auto write_data = [&pw_big, &pw_rhod, nspin]( + const std::string data_name, + const std::vector &data, + const int number_spin) +{ + for(int is=0; is data_cube(nxyz, 0.0); + + // num_z: how many planes on processor 'ip' + std::vector num_z(nproc_in_pool, 0); + for (int iz = 0; iz < nbz; iz++) + { + const int ip = iz % nproc_in_pool; + num_z[ip] += bz; + } + + // start_z: start position of z in + // processor ip. + std::vector start_z(nproc_in_pool, 0); + for (int ip = 1; ip < nproc_in_pool; ip++) + { + start_z[ip] = start_z[ip - 1] + num_z[ip - 1]; + } + + // which_ip: found iz belongs to which ip. + std::vector which_ip(nz, 0); + for (int iz = 0; iz < nz; iz++) + { + for (int ip = 0; ip < nproc_in_pool; ip++) + { + if (iz >= start_z[nproc_in_pool - 1]) + { + which_ip[iz] = nproc_in_pool - 1; + break; + } + else if (iz >= start_z[ip] && iz < start_z[ip + 1]) + { + which_ip[iz] = ip; + break; + } + } + } + + int count = 0; + std::vector zpiece(nxy, 0.0); + + // save the rho one z by one z. + for (int iz = 0; iz < nz; iz++) + { + zpiece.assign(nxy, 0.0); + + // tag must be different for different iz. + const int tag = iz; + MPI_Status ierror; + + // case 1: the first part of rho in processor 0. + if (which_ip[iz] == 0 && rank_in_pool == 0) + { + for (int ixy = 0; ixy < nxy; ixy++) + { + // mohan change to rho_save on 2012-02-10 + // because this can make our next restart calculation lead + // to the same scf_thr as the one saved. + zpiece[ixy] = data[ixy * nplane + (iz - startz_current) * nld]; + } + } + // case 2: > first part rho: send the rho to + // processor 0. + else if (which_ip[iz] == rank_in_pool) + { + for (int ixy = 0; ixy < nxy; ixy++) + { + zpiece[ixy] = data[ixy * nplane + (iz - startz_current) * nld]; + } + MPI_Send(zpiece.data(), nxy, MPI_DOUBLE, 0, tag, POOL_WORLD); + } + + // case 2: > first part rho: processor 0 receive the rho + // from other processors + else if (rank_in_pool == 0) + { + MPI_Recv(zpiece.data(), nxy, MPI_DOUBLE, which_ip[iz], + tag, POOL_WORLD, &ierror); + } + + if (my_rank == 0) + { + /// for cube file + for (int ixy = 0; ixy < nxy; ixy++) + { + data_cube[ixy * nz + iz] = zpiece[ixy]; + } + /// for cube file + } + } // end iz + + // for cube file + if (my_rank == 0) + { + for (int ixy = 0; ixy < nxy; ixy++) + { + for (int iz = 0; iz < nz; iz++) + { + ofs_cube << " " << data_cube[ixy * nz + iz]; + if ((iz % n_data_newline == n_data_newline-1) && (iz != nz - 1)) + { + ofs_cube << "\n"; + } + } + ofs_cube << "\n"; + } + } + /// for cube file + } + MPI_Barrier(MPI_COMM_WORLD); +} + +#else // #ifdef __MPI + +void ModuleIO::write_cube_core( + std::ofstream &ofs_cube, + const double*const data, + const int nxy, + const int nz, + const int n_data_newline) +{ + ModuleBase::TITLE("ModuleIO", "write_cube_core"); + for (int ixy = 0; ixy < nxy; ixy++) + { + for (int iz = 0; iz < nz; iz++) + { + ofs_cube << " " << data[iz * nxy + ixy]; + // ++count_cube; + if ((iz % n_data_newline == n_data_newline-1) && (iz != nz - 1)) + { + ofs_cube << "\n"; + } + } + ofs_cube << "\n"; + } +} + +#endif // #ifdef __MPI + +#endif // USE_LIBXC diff --git a/source/source_io/write_libxc_r.h b/source/source_io/module_chgpot/write_libxc_r.h similarity index 84% rename from source/source_io/write_libxc_r.h rename to source/source_io/module_chgpot/write_libxc_r.h index ad82e68b57..d5464998ea 100644 --- a/source/source_io/write_libxc_r.h +++ b/source/source_io/module_chgpot/write_libxc_r.h @@ -11,9 +11,9 @@ #include #include - class Charge; - namespace ModulePW{ class PW_Basis_Big; } - namespace ModulePW{ class PW_Basis; } +class Charge; +namespace ModulePW{ class PW_Basis_Big; } +namespace ModulePW{ class PW_Basis; } namespace ModuleIO { @@ -51,4 +51,4 @@ namespace ModuleIO #endif // USE_LIBXC -#endif // WRITE_LIBXC_R_H \ No newline at end of file +#endif // WRITE_LIBXC_R_H diff --git a/source/source_io/module_ctrl/ctrl_iter_lcao.cpp b/source/source_io/module_ctrl/ctrl_iter_lcao.cpp new file mode 100644 index 0000000000..9369dca5a1 --- /dev/null +++ b/source/source_io/module_ctrl/ctrl_iter_lcao.cpp @@ -0,0 +1,140 @@ +#include "ctrl_iter_lcao.h" // use ctrl_iter_lcao() + +#ifdef __MLALGO +#include "source_lcao/module_deepks/LCAO_deepks.h" +#include "source_lcao/module_deepks/LCAO_deepks_interface.h" +#endif + +namespace ModuleIO +{ + +template +void ctrl_iter_lcao(UnitCell& ucell, // unit cell * + const Input_para& inp, // input parameters * + K_Vectors& kv, // k points * + elecstate::ElecState* pelec, // electronic info * + elecstate::DensityMatrix& dm, // density matrix, mohan add 2025-11-03 + Parallel_Orbitals& pv, // parallel orbital info * + Grid_Driver& gd, // adjacent atom info * + psi::Psi* psi, // wave functions * + Charge &chr, // charge density * + Charge_Mixing* p_chgmix, // charge mixing * + hamilt::HamiltLCAO* p_hamilt, // hamiltonian * + LCAO_Orbitals &orb, // orbital info * + Setup_DeePKS &deepks, + Exx_NAO &exx_nao, + int &iter, + const int istep, + bool &conv_esolver, + const double &scf_ene_thr) +{ + ModuleBase::TITLE("ModuleIO", "ctrl_iter_lcao"); + ModuleBase::timer::tick("ModuleIO", "ctrl_iter_lcao"); + + // save charge density + // Peize Lin add 2020.04.04 + if (GlobalC::restart.info_save.save_charge) + { + for (int is = 0; is < inp.nspin; ++is) + { + GlobalC::restart.save_disk("charge", is, chr.nrxx, chr.rho[is]); + } + } + +#ifdef __EXX + // save exx matrix + if (inp.calculation != "nscf") + { + if (GlobalC::exx_info.info_global.cal_exx) + { + GlobalC::exx_info.info_ri.real_number ? + exx_nao.exd->exx_iter_finish(kv, ucell, *p_hamilt, *pelec, &dm, + *p_chgmix, scf_ene_thr, iter, istep, conv_esolver) : + exx_nao.exc->exx_iter_finish(kv, ucell, *p_hamilt, *pelec, &dm, + *p_chgmix, scf_ene_thr, iter, istep, conv_esolver); + } + } +#endif + + + // for deepks, output labels during electronic steps (after conv_esolver is renewed) +#ifdef __MLALGO + if (inp.deepks_out_labels >0 && inp.deepks_out_freq_elec) + { + if (iter % inp.deepks_out_freq_elec == 0 ) + { + std::shared_ptr> ld_shared_ptr(&deepks.ld, [](LCAO_Deepks*) {}); + LCAO_Deepks_Interface deepks_interface(ld_shared_ptr); + + deepks_interface.out_deepks_labels(pelec->f_en.etot, kv.get_nks(), + ucell.nat, PARAM.globalv.nlocal, pelec->ekb, kv.kvec_d, + ucell, orb, gd, &pv, *psi, &dm, + p_hamilt, iter, conv_esolver, GlobalV::MY_RANK, GlobalV::ofs_running); + } + } +#endif + + ModuleBase::timer::tick("ModuleIO", "ctrl_iter_lcao"); +} + +// TK: double TR: double +template void ctrl_iter_lcao(UnitCell& ucell, // unit cell * + const Input_para& inp, // input parameters * + K_Vectors& kv, // k points * + elecstate::ElecState* pelec, // electronic info * + elecstate::DensityMatrix& dm, // density matrix, mohan add 2025-11-03 + Parallel_Orbitals& pv, // parallel orbital info * + Grid_Driver& gd, // adjacent atom info * + psi::Psi* psi, // wave functions * + Charge &chr, // charge density * + Charge_Mixing* p_chgmix, // charge mixing * + hamilt::HamiltLCAO* p_hamilt, // hamiltonian * + LCAO_Orbitals &orb, // orbital info * + Setup_DeePKS &deepks, + Exx_NAO &exx_nao, + int &iter, + const int istep, + bool &conv_esolver, + const double &scf_ene_thr); + +// TK: complex TR: double +template void ctrl_iter_lcao, double>(UnitCell& ucell, // unit cell * + const Input_para& inp, // input parameters * + K_Vectors& kv, // k points * + elecstate::ElecState* pelec, // electronic info * + elecstate::DensityMatrix, double>& dm, // density matrix, mohan add 2025-11-03 + Parallel_Orbitals& pv, // parallel orbital info * + Grid_Driver& gd, // adjacent atom info * + psi::Psi>* psi, // wave functions * + Charge &chr, // charge density * + Charge_Mixing* p_chgmix, // charge mixing * + hamilt::HamiltLCAO, double>* p_hamilt, // hamiltonian * + LCAO_Orbitals &orb, // orbital info * + Setup_DeePKS> &deepks, + Exx_NAO> &exx_nao, + int &iter, + const int istep, + bool &conv_esolver, + const double &scf_ene_thr); + +// TK: complex TR: complex +template void ctrl_iter_lcao, std::complex>(UnitCell& ucell, // unit cell * + const Input_para& inp, // input parameters * + K_Vectors& kv, // k points * + elecstate::ElecState* pelec, // electronic info * + elecstate::DensityMatrix, double>& dm, // density matrix, mohan add 2025-11-03 + Parallel_Orbitals& pv, // parallel orbital info * + Grid_Driver& gd, // adjacent atom info * + psi::Psi>* psi, // wave functions * + Charge &chr, // charge density * + Charge_Mixing* p_chgmix, // charge mixing * + hamilt::HamiltLCAO, std::complex>* p_hamilt, // hamiltonian * + LCAO_Orbitals &orb, // orbital info * + Setup_DeePKS> &deepks, + Exx_NAO> &exx_nao, + int &iter, + const int istep, + bool &conv_esolver, + const double &scf_ene_thr); + +} // end ModuleIO diff --git a/source/source_io/module_ctrl/ctrl_iter_lcao.h b/source/source_io/module_ctrl/ctrl_iter_lcao.h new file mode 100644 index 0000000000..64cc0123d2 --- /dev/null +++ b/source/source_io/module_ctrl/ctrl_iter_lcao.h @@ -0,0 +1,39 @@ +#ifndef CTRL_ITER_LCAO_H +#define CTRL_ITER_LCAO_H + +#include "source_cell/unitcell.h" // use UnitCell +#include "source_cell/klist.h" // use K_Vectors +#include "source_estate/elecstate_lcao.h" // use elecstate::ElecStateLCAO +#include "source_psi/psi.h" // use Psi +#include "source_estate/module_charge/charge.h" // use charge +#include "source_estate/module_charge/charge_mixing.h" // use charge mixing +#include "source_lcao/hamilt_lcao.h" // use hamilt::HamiltLCAO +#include "source_lcao/setup_exx.h" // mohan add 20251008 +#include "source_lcao/setup_deepks.h" // mohan add 20251010 +#include "source_io/module_restart/restart.h" + +namespace ModuleIO +{ + +template +void ctrl_iter_lcao(UnitCell& ucell, // unit cell * + const Input_para& inp, // input parameters * + K_Vectors& kv, // k points * + elecstate::ElecState* pelec, // electronic info * + elecstate::DensityMatrix& dm, // density matrix, mohan add 2025-11-03 + Parallel_Orbitals& pv, // parallel orbital info * + Grid_Driver& gd, // adjacent atom info * + psi::Psi* psi, // wave functions * + Charge &chr, // charge density * + Charge_Mixing* p_chgmix, // charge mixing * + hamilt::HamiltLCAO* p_hamilt, // hamiltonian * + LCAO_Orbitals &orb, // orbital info * + Setup_DeePKS &deepks, + Exx_NAO &exx_nao, + int &iter, + const int istep, + bool &conv_esolver, + const double &scf_ene_thr); + +} +#endif diff --git a/source/source_io/module_ctrl/ctrl_output_fp.cpp b/source/source_io/module_ctrl/ctrl_output_fp.cpp new file mode 100644 index 0000000000..11aa950944 --- /dev/null +++ b/source/source_io/module_ctrl/ctrl_output_fp.cpp @@ -0,0 +1,206 @@ +#include "ctrl_output_fp.h" // use ctrl_output_fp() + +#include "../module_output/cube_io.h" // use write_vdata_palgrid +#include "source_estate/module_charge/symmetry_rho.h" // use Symmetry_rho +#include "source_hamilt/module_xc/xc_functional.h" // use XC_Functional +#include "source_io/module_chgpot/write_elecstat_pot.h" // use write_elecstat_pot +#include "source_io/module_elf/write_elf.h" + +#ifdef USE_LIBXC +#include "source_io/module_chgpot/write_libxc_r.h" +#endif + +namespace ModuleIO +{ + +void ctrl_output_fp(UnitCell& ucell, + elecstate::ElecState* pelec, + ModulePW::PW_Basis_Big* pw_big, + ModulePW::PW_Basis* pw_rhod, + Charge& chr, + surchem& solvent, + Parallel_Grid& para_grid, + const int istep) +{ + ModuleBase::TITLE("ModuleIO", "ctrl_output_fp"); + ModuleBase::timer::tick("ModuleIO", "ctrl_output_fp"); + + const bool out_app_flag = PARAM.inp.out_app_flag; + const bool gamma_only = PARAM.globalv.gamma_only_local; + const int nspin = PARAM.inp.nspin; + const std::string global_out_dir = PARAM.globalv.global_out_dir; + + // print out the 'g' index when istep_in != -1 + int istep_in = -1; + if (PARAM.inp.esolver_type != "tddft" && PARAM.inp.out_freq_ion > 0) // default value of out_freq_ion is 0 + { + if (istep % PARAM.inp.out_freq_ion == 0) + { + istep_in = istep; + } + } + else if (PARAM.inp.esolver_type == "tddft" && PARAM.inp.out_freq_td > 0) // default value of out_freq_td is 0 + { + if (istep % PARAM.inp.out_freq_td == 0) + { + istep_in = istep; + } + } + + std::string geom_block; + if (istep_in == -1) + { + // do nothing + } + else if (istep_in >= 0) + { + geom_block = "g" + std::to_string(istep + 1); + } + + // 4) write charge density + if (PARAM.inp.out_chg[0] > 0) + { + for (int is = 0; is < nspin; ++is) + { + pw_rhod->real2recip(chr.rho_save[is], chr.rhog_save[is]); + + std::string fn = PARAM.globalv.global_out_dir + "chg"; + + std::string spin_block; + if (nspin == 2 || nspin == 4) + { + spin_block = "s" + std::to_string(is + 1); + } + else if (nspin == 1) + { + // do nothing + } + + fn += spin_block + geom_block + ".cube"; + + ModuleIO::write_vdata_palgrid(para_grid, + chr.rho_save[is], + is, + nspin, + istep, // change istep_in to istep, mohan 20260222 + fn, + pelec->eferm.get_efval(is), + &(ucell), + PARAM.inp.out_chg[1], + 1); + + if (XC_Functional::get_ked_flag()) + { + fn = PARAM.globalv.global_out_dir + "tau"; + + fn += spin_block + geom_block + ".cube"; + + ModuleIO::write_vdata_palgrid(para_grid, + chr.kin_r_save[is], + is, + nspin, + istep, + fn, + pelec->eferm.get_efval(is), + &(ucell)); + } + } + } + + // 5) write potential + if (PARAM.inp.out_pot[0] == 1 || PARAM.inp.out_pot[0] == 3) + { + for (int is = 0; is < nspin; is++) + { + std::string fn = PARAM.globalv.global_out_dir + "pot"; + + std::string spin_block; + if (nspin == 2 || nspin == 4) + { + spin_block = "s" + std::to_string(is + 1); + } + else if (nspin == 1) + { + // do nothing + } + + fn += spin_block + geom_block + ".cube"; + + ModuleIO::write_vdata_palgrid(para_grid, + pelec->pot->get_eff_v(is), + is, + nspin, + istep_in, + fn, + 0.0, // efermi + &(ucell), + PARAM.inp.out_pot[1], // precision + 0); // out_fermi + } + } + else if (PARAM.inp.out_pot[0] == 2) + { + std::string fn = PARAM.globalv.global_out_dir + "potes"; + fn += geom_block + ".cube"; + + ModuleIO::write_elecstat_pot( +#ifdef __MPI + pw_big->bz, + pw_big->nbz, +#endif + fn, + istep, + pw_rhod, + &chr, + &(ucell), + pelec->pot->get_fixed_v(), + solvent, + PARAM.inp.out_pot[1]); + } + + // 6) write ELF + if (PARAM.inp.out_elf[0] > 0) + { + chr.cal_elf = true; + Symmetry_rho srho; + for (int is = 0; is < nspin; is++) + { + srho.begin(is, chr, pw_rhod, ucell.symm); + } + + std::string out_dir = PARAM.globalv.global_out_dir; + ModuleIO::write_elf( +#ifdef __MPI + pw_big->bz, + pw_big->nbz, +#endif + out_dir, + istep, + nspin, + chr.rho, + chr.kin_r, + pw_rhod, + para_grid, + &(ucell), + PARAM.inp.out_elf[1]); + } + +#ifdef USE_LIBXC + // 7) write xc(r) + if (PARAM.inp.out_xc_r[0] >= 0) + { + ModuleIO::write_libxc_r(PARAM.inp.out_xc_r[0], + XC_Functional::get_func_id(), + pw_rhod->nrxx, // number of real-space grid + ucell.omega, // volume of cell + ucell.tpiba, + chr, + *pw_big, + *pw_rhod); + } +#endif + + ModuleBase::timer::tick("ModuleIO", "ctrl_output_fp"); +} + +} // namespace ModuleIO diff --git a/source/source_io/module_ctrl/ctrl_output_fp.h b/source/source_io/module_ctrl/ctrl_output_fp.h new file mode 100644 index 0000000000..ec9f4e20e7 --- /dev/null +++ b/source/source_io/module_ctrl/ctrl_output_fp.h @@ -0,0 +1,19 @@ +#ifndef CTRL_OUTPUT_FP_H +#define CTRL_OUTPUT_FP_H + +#include "source_estate/elecstate_lcao.h" + +namespace ModuleIO +{ + +void ctrl_output_fp(UnitCell& ucell, + elecstate::ElecState* pelec, + ModulePW::PW_Basis_Big* pw_big, + ModulePW::PW_Basis* pw_rhod, + Charge& chr, + surchem& solvent, + Parallel_Grid& para_grid, + const int istep); + +} +#endif diff --git a/source/source_io/module_ctrl/ctrl_output_pw.cpp b/source/source_io/module_ctrl/ctrl_output_pw.cpp new file mode 100644 index 0000000000..1020e7aef6 --- /dev/null +++ b/source/source_io/module_ctrl/ctrl_output_pw.cpp @@ -0,0 +1,505 @@ +#include "ctrl_output_pw.h" + +#include "../module_wf/write_wfc_pw.h" // use write_wfc_pw +#include "../module_dos/write_dos_pw.h" // use write_dos_pw +#include "../module_wannier/to_wannier90_pw.h" // wannier90 interface +#include "source_pw/module_pwdft/onsite_projector.h" // use projector +#include "../module_bessel/numerical_basis.h" +#include "../module_bessel/numerical_descriptor.h" +#include "../module_dos/cal_ldos.h" +#include "../module_unk/berryphase.h" +#include "source_lcao/module_deltaspin/spin_constrain.h" +#include "source_base/formatter.h" +#include "../module_chgpot/get_pchg_pw.h" +#include "../module_wf/get_wf_pw.h" +#include "source_pw/module_pwdft/elecond.h" + +#ifdef __MLALGO +#include "../module_ml/write_mlkedf_descriptors.h" +#endif + +void ModuleIO::ctrl_iter_pw(const int istep, + const int iter, + const double &conv_esolver, + psi::Psi, base_device::DEVICE_CPU>* psi, + const K_Vectors &kv, + const ModulePW::PW_Basis_K *pw_wfc, + const Input_para& inp) +{ + ModuleBase::TITLE("ModuleIO", "ctrl_iter_pw"); + ModuleBase::timer::tick("ModuleIO", "ctrl_iter_pw"); + //---------------------------------------------------------- + // 3) Print out electronic wavefunctions in pw basis + // we only print information every few ionic steps + //---------------------------------------------------------- + + // if istep_in = -1, istep will not appear in file name + // if iter_in = -1, iter will not appear in file name + int istep_in = -1; + int iter_in = -1; + bool out_wfc_flag = false; + if (inp.out_freq_ion>0) // default value of out_freq_ion is 0 + { + if (istep % inp.out_freq_ion == 0) + { + if(iter % inp.out_freq_elec == 0 || iter == inp.scf_nmax || conv_esolver) + { + istep_in = istep; + iter_in = iter; + out_wfc_flag = true; + } + } + } + else if(iter == inp.scf_nmax || conv_esolver) + { + out_wfc_flag = true; + } + + if (out_wfc_flag) + { + ModuleIO::write_wfc_pw(istep_in, iter_in, + GlobalV::KPAR, + GlobalV::MY_POOL, + GlobalV::MY_RANK, + inp.nbands, + inp.nspin, + PARAM.globalv.npol, + GlobalV::RANK_IN_POOL, + GlobalV::NPROC_IN_POOL, + inp.out_wfc_pw, + inp.ecutwfc, + PARAM.globalv.global_out_dir, + psi[0], + kv, + pw_wfc, + GlobalV::ofs_running); + } + + ModuleBase::timer::tick("ModuleIO", "ctrl_iter_pw"); + return; +} + + +template +void ModuleIO::ctrl_scf_pw(const int istep, + UnitCell& ucell, + elecstate::ElecState* pelec, + const Charge &chr, + const K_Vectors &kv, + const ModulePW::PW_Basis_K *pw_wfc, + const ModulePW::PW_Basis *pw_rho, + const ModulePW::PW_Basis *pw_rhod, + const ModulePW::PW_Basis_Big *pw_big, + Setup_Psi_pw &stp, + const Parallel_Grid ¶_grid, + const Input_para& inp) +{ + ModuleBase::TITLE("ModuleIO", "ctrl_scf_pw"); + ModuleBase::timer::tick("ModuleIO", "ctrl_scf_pw"); + + // Create local ctx for device type deduction + Device* ctx = nullptr; + + // Transfer data from device (GPU) to host (CPU) in pw basis + stp.copy_d2h(); + + //---------------------------------------------------------- + //! 4) Compute density of states (DOS) + //---------------------------------------------------------- + if (inp.out_dos) + { + bool out_dos_tmp = false; + + int istep_in = -1; + + // default value of out_freq_ion is 0 + if(inp.out_freq_ion==0) + { + out_dos_tmp = true; + } + else if (inp.out_freq_ion>0) + { + if (istep % inp.out_freq_ion == 0) + { + out_dos_tmp = true; + istep_in=istep; + } + else + { + out_dos_tmp = false; + } + } + else + { + out_dos_tmp = false; + } + + // the above is only valid for KSDFT, not SDFT + // Needs update in the near future + if (inp.esolver_type == "sdft") + { + out_dos_tmp = false; + } + + if(out_dos_tmp) + { + ModuleIO::write_dos_pw(ucell, + pelec->ekb, + pelec->wg, + kv, + inp.nbands, + istep_in, + pelec->eferm, + inp.dos_edelta_ev, + inp.dos_scale, + inp.dos_sigma, + GlobalV::ofs_running); + } + } + + + //------------------------------------------------------------------ + // 5) calculate band-decomposed (partial) charge density in pw basis + //------------------------------------------------------------------ + if (inp.out_pchg.size() > 0) + { + // update psi_d + stp.update_psi_d(); + + const int nbands = stp.get_nbands(); + const int ngmc = chr.ngmc; + + ModuleIO::get_pchg_pw(inp.out_pchg, + nbands, + inp.nspin, + pw_rhod->nxyz, + ngmc, + &ucell, + stp.template get_psi_d(), + pw_rhod, + pw_wfc, + ctx, + para_grid, + PARAM.globalv.global_out_dir, + inp.if_separate_k, + kv, + GlobalV::KPAR, + GlobalV::MY_POOL, + &chr); + } + + + //------------------------------------------------------------------ + //! 6) calculate Wannier functions in pw basis + //------------------------------------------------------------------ + if (inp.calculation == "nscf" && inp.towannier90) + { + std::cout << FmtCore::format("\n * * * * * *\n << Start %s.\n", "Wannier functions calculation"); + toWannier90_PW wan(inp.out_wannier_mmn, + inp.out_wannier_amn, + inp.out_wannier_unk, + inp.out_wannier_eig, + inp.out_wannier_wvfn_formatted, + inp.nnkpfile, + inp.wannier_spin); + wan.set_tpiba_omega(ucell.tpiba, ucell.omega); + wan.calculate(ucell, pelec->ekb, pw_wfc, pw_big, kv, stp.psi_cpu); + std::cout << FmtCore::format(" >> Finish %s.\n * * * * * *\n", "Wannier functions calculation"); + } + + + //------------------------------------------------------------------ + //! 7) calculate Berry phase polarization in pw basis + //------------------------------------------------------------------ + if (inp.calculation == "nscf" && berryphase::berry_phase_flag && ModuleSymmetry::Symmetry::symm_flag != 1) + { + std::cout << FmtCore::format("\n * * * * * *\n << Start %s.\n", "Berry phase polarization"); + berryphase bp; + bp.Macroscopic_polarization(ucell, pw_wfc->npwk_max, stp.psi_cpu, pw_rho, pw_wfc, kv); + std::cout << FmtCore::format(" >> Finish %s.\n * * * * * *\n", "Berry phase polarization"); + } + + //------------------------------------------------------------------ + // 8) write spin constrian results in pw basis + // spin constrain calculations, write atomic magnetization and magnetic force. + //------------------------------------------------------------------ + if (inp.sc_mag_switch) + { + spinconstrain::SpinConstrain>& sc + = spinconstrain::SpinConstrain>::getScInstance(); + sc.cal_mi_pw(); + sc.print_Mag_Force(GlobalV::ofs_running); + } + + //------------------------------------------------------------------ + // 9) write onsite occupations for charge and magnetizations + //------------------------------------------------------------------ + if (inp.onsite_radius > 0) + { // float type has not been implemented + auto* onsite_p = projectors::OnsiteProjector::get_instance(); + onsite_p->cal_occupations(reinterpret_cast, Device>*>(stp.template get_psi_t()), + pelec->wg); + } + + ModuleBase::timer::tick("ModuleIO", "ctrl_scf_pw"); + return; +} + +template +void ModuleIO::ctrl_runner_pw(UnitCell& ucell, + elecstate::ElecState* pelec, + ModulePW::PW_Basis_K* pw_wfc, + ModulePW::PW_Basis* pw_rho, + ModulePW::PW_Basis* pw_rhod, + Charge &chr, + K_Vectors &kv, + Setup_Psi_pw &stp, + Structure_Factor &sf, + pseudopot_cell_vnl &ppcell, + surchem &solvent, + Parallel_Grid ¶_grid, + const Input_para& inp) +{ + ModuleBase::TITLE("ModuleIO", "ctrl_runner_pw"); + ModuleBase::timer::tick("ModuleIO", "ctrl_runner_pw"); + + // Create local ctx for device type deduction + Device* ctx = nullptr; + + //---------------------------------------------------------- + //! 1) Compute LDOS + //---------------------------------------------------------- + if (inp.out_ldos[0]) + { + ModuleIO::cal_ldos_pw(reinterpret_cast>*>(pelec), + stp.psi_cpu[0], para_grid, ucell); + } + + //---------------------------------------------------------- + //! 2) Calculate the spillage value, + //! which are used to generate numerical atomic orbitals + //---------------------------------------------------------- + if (inp.basis_type == "pw" && inp.out_spillage) + { + // ! Print out overlap matrices + if (inp.out_spillage <= 2) + { + for (int i = 0; i < inp.bessel_nao_rcuts.size(); i++) + { + if (GlobalV::MY_RANK == 0) + { + std::cout << "update value: bessel_nao_rcut <- " << std::fixed << inp.bessel_nao_rcuts[i] + << " a.u." << std::endl; + } + Numerical_Basis numerical_basis; + numerical_basis.output_overlap(stp.psi_cpu[0], sf, kv, pw_wfc, ucell, i); + } + ModuleBase::GlobalFunc::DONE(GlobalV::ofs_running, "BASIS OVERLAP (Q and S) GENERATION."); + } + } + + //---------------------------------------------------------- + //! 3) Print out electronic wave functions in real space + //---------------------------------------------------------- + if (inp.out_wfc_norm.size() > 0 || inp.out_wfc_re_im.size() > 0) + { + stp.update_psi_d(); + + ModuleIO::get_wf_pw(inp.out_wfc_norm, + inp.out_wfc_re_im, + stp.get_nbands(), + inp.nspin, + pw_rhod->nxyz, + &ucell, + stp.template get_psi_d(), + pw_wfc, + ctx, + para_grid, + PARAM.globalv.global_out_dir, + kv, + GlobalV::KPAR, + GlobalV::MY_POOL); + } + + //---------------------------------------------------------- + //! 4) Use Kubo-Greenwood method to compute conductivities + //---------------------------------------------------------- + if (inp.cal_cond) + { + using Real = typename GetTypeReal::type; + EleCond elec_cond(&ucell, &kv, pelec, pw_wfc, stp.template get_psi_t(), &ppcell); + elec_cond.KG(inp.cond_smear, + inp.cond_fwhm, + inp.cond_wcut, + inp.cond_dw, + inp.cond_dt, + inp.cond_nonlocal, + pelec->wg); + } + +#ifdef __MLALGO + //---------------------------------------------------------- + //! 7) generate training data for ML-KEDF + //---------------------------------------------------------- + if (inp.of_ml_gene_data == 1) + { + pelec->pot->update_from_charge(&chr, &ucell); + + ModuleIO::Write_MLKEDF_Descriptors write_mlkedf_desc; + write_mlkedf_desc.cal_tool->set_para(chr.nrxx, + inp.nelec, + inp.of_tf_weight, + inp.of_vw_weight, + inp.of_ml_chi_p, + inp.of_ml_chi_q, + inp.of_ml_chi_xi, + inp.of_ml_chi_pnl, + inp.of_ml_chi_qnl, + inp.of_ml_nkernel, + inp.of_ml_kernel, + inp.of_ml_kernel_scaling, + inp.of_ml_yukawa_alpha, + inp.of_ml_kernel_file, + ucell.omega, + pw_rho); + + write_mlkedf_desc.generateTrainData_KS(PARAM.globalv.global_mlkedf_descriptor_dir, + stp.template get_psi_t(), + pelec, + pw_wfc, + pw_rho, + ucell, + pelec->pot->get_eff_v(0)); + } +#endif + + ModuleBase::timer::tick("ModuleIO", "ctrl_runner_pw"); +} + +// complex + CPU +template void ModuleIO::ctrl_scf_pw, base_device::DEVICE_CPU>( + const int nstep, + UnitCell& ucell, + elecstate::ElecState* pelec, + const Charge &chr, + const K_Vectors &kv, + const ModulePW::PW_Basis_K *pw_wfc, + const ModulePW::PW_Basis *pw_rho, + const ModulePW::PW_Basis *pw_rhod, + const ModulePW::PW_Basis_Big *pw_big, + Setup_Psi_pw &stp, + const Parallel_Grid ¶_grid, + const Input_para& inp); + +// complex + CPU +template void ModuleIO::ctrl_scf_pw, base_device::DEVICE_CPU>( + const int nstep, + UnitCell& ucell, + elecstate::ElecState* pelec, + const Charge &chr, + const K_Vectors &kv, + const ModulePW::PW_Basis_K *pw_wfc, + const ModulePW::PW_Basis *pw_rho, + const ModulePW::PW_Basis *pw_rhod, + const ModulePW::PW_Basis_Big *pw_big, + Setup_Psi_pw &stp, + const Parallel_Grid ¶_grid, + const Input_para& inp); + +#if ((defined __CUDA) || (defined __ROCM)) +// complex + GPU +template void ModuleIO::ctrl_scf_pw, base_device::DEVICE_GPU>( + const int nstep, + UnitCell& ucell, + elecstate::ElecState* pelec, + const Charge &chr, + const K_Vectors &kv, + const ModulePW::PW_Basis_K *pw_wfc, + const ModulePW::PW_Basis *pw_rho, + const ModulePW::PW_Basis *pw_rhod, + const ModulePW::PW_Basis_Big *pw_big, + Setup_Psi_pw &stp, + const Parallel_Grid ¶_grid, + const Input_para& inp); + +// complex + GPU +template void ModuleIO::ctrl_scf_pw, base_device::DEVICE_GPU>( + const int nstep, + UnitCell& ucell, + elecstate::ElecState* pelec, + const Charge &chr, + const K_Vectors &kv, + const ModulePW::PW_Basis_K *pw_wfc, + const ModulePW::PW_Basis *pw_rho, + const ModulePW::PW_Basis *pw_rhod, + const ModulePW::PW_Basis_Big *pw_big, + Setup_Psi_pw &stp, + const Parallel_Grid ¶_grid, + const Input_para& inp); +#endif + +// complex + CPU +template void ModuleIO::ctrl_runner_pw, base_device::DEVICE_CPU>( + UnitCell& ucell, + elecstate::ElecState* pelec, + ModulePW::PW_Basis_K* pw_wfc, + ModulePW::PW_Basis* pw_rho, + ModulePW::PW_Basis* pw_rhod, + Charge &chr, + K_Vectors &kv, + Setup_Psi_pw &stp, + Structure_Factor &sf, + pseudopot_cell_vnl &ppcell, + surchem &solvent, + Parallel_Grid ¶_grid, + const Input_para& inp); + +// complex + CPU +template void ModuleIO::ctrl_runner_pw, base_device::DEVICE_CPU>( + UnitCell& ucell, + elecstate::ElecState* pelec, + ModulePW::PW_Basis_K* pw_wfc, + ModulePW::PW_Basis* pw_rho, + ModulePW::PW_Basis* pw_rhod, + Charge &chr, + K_Vectors &kv, + Setup_Psi_pw &stp, + Structure_Factor &sf, + pseudopot_cell_vnl &ppcell, + surchem &solvent, + Parallel_Grid ¶_grid, + const Input_para& inp); + +#if ((defined __CUDA) || (defined __ROCM)) +// complex + GPU +template void ModuleIO::ctrl_runner_pw, base_device::DEVICE_GPU>( + UnitCell& ucell, + elecstate::ElecState* pelec, + ModulePW::PW_Basis_K* pw_wfc, + ModulePW::PW_Basis* pw_rho, + ModulePW::PW_Basis* pw_rhod, + Charge &chr, + K_Vectors &kv, + Setup_Psi_pw &stp, + Structure_Factor &sf, + pseudopot_cell_vnl &ppcell, + surchem &solvent, + Parallel_Grid ¶_grid, + const Input_para& inp); + +// complex + GPU +template void ModuleIO::ctrl_runner_pw, base_device::DEVICE_GPU>( + UnitCell& ucell, + elecstate::ElecState* pelec, + ModulePW::PW_Basis_K* pw_wfc, + ModulePW::PW_Basis* pw_rho, + ModulePW::PW_Basis* pw_rhod, + Charge &chr, + K_Vectors &kv, + Setup_Psi_pw &stp, + Structure_Factor &sf, + pseudopot_cell_vnl &ppcell, + surchem &solvent, + Parallel_Grid ¶_grid, + const Input_para& inp); +#endif diff --git a/source/source_io/module_ctrl/ctrl_output_pw.h b/source/source_io/module_ctrl/ctrl_output_pw.h new file mode 100644 index 0000000000..00b7509990 --- /dev/null +++ b/source/source_io/module_ctrl/ctrl_output_pw.h @@ -0,0 +1,70 @@ +#ifndef CTRL_OUTPUT_PW_H +#define CTRL_OUTPUT_PW_H + +#include "source_base/module_device/device.h" // use Device +#include "source_psi/psi.h" // define psi +#include "source_estate/elecstate_lcao.h" // use pelec +#include "source_psi/setup_psi_pw.h" // use Setup_Psi class + +namespace ModuleIO +{ + +// print out information in 'iter_finish' in ESolver_KS_PW +void ctrl_iter_pw(const int istep, + const int iter, + const double &conv_esolver, + psi::Psi, base_device::DEVICE_CPU>* psi, + const K_Vectors &kv, + const ModulePW::PW_Basis_K *pw_wfc, + const Input_para& inp); + +// print out information in 'after_scf' in ESolver_KS_PW +template +void ctrl_scf_pw(const int istep, + UnitCell& ucell, + elecstate::ElecState* pelec, + const Charge &chr, + const K_Vectors &kv, + const ModulePW::PW_Basis_K *pw_wfc, + const ModulePW::PW_Basis *pw_rho, + const ModulePW::PW_Basis *pw_rhod, + const ModulePW::PW_Basis_Big *pw_big, + Setup_Psi_pw &stp, + const Parallel_Grid ¶_grid, + const Input_para& inp); + +// print out information in 'after_all_runners' in ESolver_KS_PW +template +void ctrl_runner_pw(UnitCell& ucell, + elecstate::ElecState* pelec, + ModulePW::PW_Basis_K* pw_wfc, + ModulePW::PW_Basis* pw_rho, + ModulePW::PW_Basis* pw_rhod, + Charge &chr, + K_Vectors &kv, + Setup_Psi_pw &stp, + Structure_Factor &sf, + pseudopot_cell_vnl &ppcell, + surchem &solvent, + Parallel_Grid ¶_grid, + const Input_para& inp); + +// print out information in 'after_all_runners' in ESolver_KS_PW (runtime version) +template +void ctrl_runner_pw(UnitCell& ucell, + elecstate::ElecState* pelec, + ModulePW::PW_Basis_K* pw_wfc, + ModulePW::PW_Basis* pw_rho, + ModulePW::PW_Basis* pw_rhod, + Charge &chr, + K_Vectors &kv, + Setup_Psi_pw &stp, + Structure_Factor &sf, + pseudopot_cell_vnl &ppcell, + surchem &solvent, + const base_device::DeviceContext* ctx, + Parallel_Grid ¶_grid, + const Input_para& inp); + +} +#endif diff --git a/source/source_io/module_ctrl/ctrl_output_td.cpp b/source/source_io/module_ctrl/ctrl_output_td.cpp new file mode 100644 index 0000000000..65d0c9ab96 --- /dev/null +++ b/source/source_io/module_ctrl/ctrl_output_td.cpp @@ -0,0 +1,124 @@ +#include "ctrl_output_td.h" + +#include "source_base/parallel_global.h" +#include "source_io/module_dipole/dipole_io.h" +#include "source_io/module_parameter/parameter.h" +#include "source_io/module_current/td_current_io.h" + +namespace ModuleIO +{ + +template +void ctrl_output_td(const UnitCell& ucell, + double** rho_save, + const ModulePW::PW_Basis* rhopw, + const int istep, + const psi::Psi>* psi, + const elecstate::ElecState* pelec, + const K_Vectors& kv, + const TwoCenterIntegrator* intor, + const Parallel_Orbitals* pv, + const LCAO_Orbitals& orb, + const Velocity_op* velocity_mat, + const Grid_Driver& grid, + hamilt::HamiltLCAO, TR>* p_hamilt, + Record_adj& RA, + TD_info* td_p, + const Exx_NAO>& exx_nao + ) +{ + ModuleBase::TITLE("ModuleIO", "ctrl_output_td"); + +#ifdef __LCAO + // (1) Write dipole information + for (int is = 0; is < PARAM.inp.nspin; ++is) + { + if (PARAM.inp.out_dipole == 1) + { + std::stringstream ss_dipole; + ss_dipole << PARAM.globalv.global_out_dir << "dipole_s" << is + 1 << ".txt"; + ModuleIO::write_dipole(ucell, rho_save[is], rhopw, is, istep, ss_dipole.str()); + } + } + + // (2) Write current information + const elecstate::ElecStateLCAO>* pelec_lcao + = dynamic_cast>*>(pelec); + + if (!pelec_lcao) + { + ModuleBase::WARNING_QUIT("ModuleIO::ctrl_output_td", "Failed to cast ElecState to ElecStateLCAO"); + } + + if (TD_info::out_current == 1) + { + if (TD_info::out_current_k) + { + ModuleIO::write_current_eachk(ucell, istep, psi, pelec, kv, intor, pv, orb, velocity_mat, RA); + } + else + { + ModuleIO::write_current(ucell, istep, psi, pelec, kv, intor, pv, orb, velocity_mat, RA); + } + } + else if(TD_info::out_current==2) + { + ModuleIO::write_current(ucell, grid, istep, psi, pelec, kv, pv, orb, td_p->r_calculator, p_hamilt->getSR(), p_hamilt->getHR(), exx_nao); + } + + // (3) Output file for restart + if (PARAM.inp.out_freq_td > 0) // default value of out_freq_td is 0 + { + if (istep % PARAM.inp.out_freq_td == 0) + { + if (td_p != nullptr) + { + td_p->out_restart_info(istep, elecstate::H_TDDFT_pw::At, elecstate::H_TDDFT_pw::At_laststep); + } + else + { + ModuleBase::WARNING_QUIT("ModuleIO::ctrl_output_td", + "TD_info pointer is null, cannot output restart info."); + } + } + } +#endif // __LCAO +} + +template void ctrl_output_td(const UnitCell&, + double**, + const ModulePW::PW_Basis*, + const int, + const psi::Psi>*, + const elecstate::ElecState*, + const K_Vectors&, + const TwoCenterIntegrator*, + const Parallel_Orbitals*, + const LCAO_Orbitals&, + const Velocity_op*, + const Grid_Driver&, + hamilt::HamiltLCAO, double>*, + Record_adj&, + TD_info*, + const Exx_NAO>& + ); + +template void ctrl_output_td>(const UnitCell&, + double**, + const ModulePW::PW_Basis*, + const int, + const psi::Psi>*, + const elecstate::ElecState*, + const K_Vectors&, + const TwoCenterIntegrator*, + const Parallel_Orbitals*, + const LCAO_Orbitals&, + const Velocity_op>*, + const Grid_Driver&, + hamilt::HamiltLCAO, std::complex>*, + Record_adj&, + TD_info*, + const Exx_NAO>& + ); + +} // namespace ModuleIO \ No newline at end of file diff --git a/source/source_io/module_ctrl/ctrl_output_td.h b/source/source_io/module_ctrl/ctrl_output_td.h new file mode 100644 index 0000000000..1b57944d87 --- /dev/null +++ b/source/source_io/module_ctrl/ctrl_output_td.h @@ -0,0 +1,44 @@ +#ifndef CTRL_OUTPUT_TD_H +#define CTRL_OUTPUT_TD_H + +#include "source_basis/module_ao/ORB_read.h" +#include "source_basis/module_ao/parallel_orbitals.h" +#include "source_basis/module_nao/two_center_bundle.h" +#include "source_cell/unitcell.h" +#include "source_estate/elecstate_lcao.h" +#include "source_estate/module_pot/H_TDDFT_pw.h" +#include "source_lcao/module_rt/td_info.h" +#include "source_lcao/module_rt/velocity_op.h" +#include "source_lcao/record_adj.h" +#include "source_psi/psi.h" +#include "source_lcao/hamilt_lcao.h" +#include "source_lcao/setup_exx.h" +#ifdef __EXX +#include +#endif + +namespace ModuleIO +{ + +template +void ctrl_output_td(const UnitCell& ucell, + double** rho_save, + const ModulePW::PW_Basis* rhopw, + const int istep, + const psi::Psi>* psi, + const elecstate::ElecState* pelec, + const K_Vectors& kv, + const TwoCenterIntegrator* intor, + const Parallel_Orbitals* pv, + const LCAO_Orbitals& orb, + const Velocity_op* velocity_mat, + const Grid_Driver& grid, + hamilt::HamiltLCAO, TR>* p_hamilt, + Record_adj& RA, + TD_info* td_p, + const Exx_NAO>& exx_nao + ); + +} // namespace ModuleIO + +#endif // CTRL_OUTPUT_TD_H \ No newline at end of file diff --git a/source/source_io/module_ctrl/ctrl_runner_lcao.cpp b/source/source_io/module_ctrl/ctrl_runner_lcao.cpp new file mode 100644 index 0000000000..902337f35e --- /dev/null +++ b/source/source_io/module_ctrl/ctrl_runner_lcao.cpp @@ -0,0 +1,198 @@ +#include "ctrl_runner_lcao.h" // use ctrl_runner_lcao() + +#include "source_estate/elecstate_lcao.h" // use elecstate::ElecState +#include "source_lcao/hamilt_lcao.h" // use hamilt::HamiltLCAO + +#include "../module_energy/write_proj_band_lcao.h" // projcted band structure +#include "../module_dos/cal_ldos.h" // cal LDOS +#include "../module_energy/write_eband_terms.hpp" +#include "../module_hs/write_vxc.hpp" +#include "../module_hs/write_vxc_r.hpp" + +namespace ModuleIO +{ + +template +void ctrl_runner_lcao(UnitCell& ucell, // unitcell + const Input_para &inp, // input + K_Vectors &kv, // k-point + elecstate::ElecState* pelec,// electronic info + const LCAO_domain::Setup_DM &dmat, // mohan add 2025-11-02 + Parallel_Orbitals &pv, // orbital info + Parallel_Grid &pgrid, // grid info + Grid_Driver &gd, // search for adjacent atoms + psi::Psi* psi, // wave function + Charge &chr, // charge density + hamilt::HamiltLCAO* p_hamilt, // hamiltonian + TwoCenterBundle &two_center_bundle, // use two-center integration + LCAO_Orbitals &orb, // LCAO orbitals + ModulePW::PW_Basis* pw_rho, // charge density + ModulePW::PW_Basis* pw_rhod, // dense charge density + Structure_Factor &sf, // structure factor + ModuleBase::matrix &vloc, // local pseudopotential + Exx_NAO &exx_nao, + surchem &solvent) // solvent model +{ + ModuleBase::TITLE("ModuleIO", "ctrl_runner_lcao"); + ModuleBase::timer::tick("ModuleIO", "ctrl_runner_lcao"); + + // 1) write projected band structure + if (inp.out_proj_band) + { + ModuleIO::write_proj_band_lcao(psi, pv, pelec, kv, ucell, p_hamilt); + } + + // 2) out ldos + if (inp.out_ldos[0]) + { + ModuleIO::Cal_ldos::cal_ldos_lcao(pelec->eferm, chr, dmat, kv, + pelec->ekb, pelec->wg, psi[0], pgrid, ucell); + } + + // 3) print out exchange-correlation potential + if (inp.out_mat_xc) + { + ModuleIO::write_Vxc(inp.nspin, + PARAM.globalv.nlocal, + GlobalV::DRANK, + &pv, + *psi, + ucell, + sf, + solvent, + *pw_rho, + *pw_rhod, + vloc, + chr, + kv, + orb.cutoffs(), + pelec->wg, + gd +#ifdef __EXX + , + exx_nao.exd ? &exx_nao.exd->get_Hexxs() : nullptr, + exx_nao.exc ? &exx_nao.exc->get_Hexxs() : nullptr +#endif + ); + } + + if (inp.out_mat_xc2) + { + ModuleIO::write_Vxc_R(inp.nspin, + &pv, + ucell, + sf, + solvent, + *pw_rho, + *pw_rhod, + vloc, + chr, + kv, + orb.cutoffs(), + gd +#ifdef __EXX + , + exx_nao.exd ? &exx_nao.exd->get_Hexxs() : nullptr, + exx_nao.exc ? &exx_nao.exc->get_Hexxs() : nullptr +#endif + ); + } + + + // write eband terms + if (inp.out_eband_terms) + { + ModuleIO::write_eband_terms(inp.nspin, + PARAM.globalv.nlocal, + GlobalV::DRANK, + &pv, + *psi, + ucell, + sf, + solvent, + *pw_rho, + *pw_rhod, + vloc, + chr, + kv, + pelec->wg, + gd, + orb.cutoffs(), + two_center_bundle +#ifdef __EXX + , + exx_nao.exd ? &exx_nao.exd->get_Hexxs() : nullptr, + exx_nao.exc ? &exx_nao.exc->get_Hexxs() : nullptr +#endif + ); + } + +} + + + + +// TK: double TR: double +template void ctrl_runner_lcao(UnitCell& ucell, // unitcell + const Input_para &inp, // input + K_Vectors &kv, // k-point + elecstate::ElecState* pelec,// electronic info + const LCAO_domain::Setup_DM &dmat, // mohan add 2025-11-02 + Parallel_Orbitals &pv, // orbital info + Parallel_Grid &pgrid, // grid info + Grid_Driver &gd, // search for adjacent atoms + psi::Psi* psi, // wave function + Charge &chr, // charge density + hamilt::HamiltLCAO* p_hamilt, // hamiltonian + TwoCenterBundle &two_center_bundle, // use two-center integration + LCAO_Orbitals &orb, // LCAO orbitals + ModulePW::PW_Basis* pw_rho, // charge density + ModulePW::PW_Basis* pw_rhod, // dense charge density + Structure_Factor &sf, // structure factor + ModuleBase::matrix &vloc, // local pseudopotential + Exx_NAO &exx_nao, + surchem &solvent); // solvent model + +// TK: complex TR: double +template void ctrl_runner_lcao, double>(UnitCell& ucell, // unitcell + const Input_para &inp, // input + K_Vectors &kv, // k-point + elecstate::ElecState* pelec,// electronic info + const LCAO_domain::Setup_DM> &dmat, // mohan add 2025-11-02 + Parallel_Orbitals &pv, // orbital info + Parallel_Grid &pgrid, // grid info + Grid_Driver &gd, // search for adjacent atoms + psi::Psi>* psi, // wave function + Charge &chr, // charge density + hamilt::HamiltLCAO, double>* p_hamilt, // hamiltonian + TwoCenterBundle &two_center_bundle, // use two-center integration + LCAO_Orbitals &orb, // LCAO orbitals + ModulePW::PW_Basis* pw_rho, // charge density + ModulePW::PW_Basis* pw_rhod, // dense charge density + Structure_Factor &sf, // structure factor + ModuleBase::matrix &vloc, // local pseudopotential + Exx_NAO> &exx_nao, + surchem &solvent); // solvent model + +// TK: complex TR: complex +template void ctrl_runner_lcao, std::complex>(UnitCell& ucell, // unitcell + const Input_para &inp, // input + K_Vectors &kv, // k-point + elecstate::ElecState* pelec,// electronic info + const LCAO_domain::Setup_DM> &dmat, // mohan add 2025-11-02 + Parallel_Orbitals &pv, // orbital info + Parallel_Grid &pgrid, // grid info + Grid_Driver &gd, // search for adjacent atoms + psi::Psi>* psi, // wave function + Charge &chr, // charge density + hamilt::HamiltLCAO, std::complex>* p_hamilt, // hamiltonian + TwoCenterBundle &two_center_bundle, // use two-center integration + LCAO_Orbitals &orb, // LCAO orbitals + ModulePW::PW_Basis* pw_rho, // charge density + ModulePW::PW_Basis* pw_rhod, // dense charge density + Structure_Factor &sf, // structure factor + ModuleBase::matrix &vloc, // local pseudopotential + Exx_NAO> &exx_nao, + surchem &solvent); // solvent model + +} // end namespace diff --git a/source/source_io/module_ctrl/ctrl_runner_lcao.h b/source/source_io/module_ctrl/ctrl_runner_lcao.h new file mode 100644 index 0000000000..95c4fe4658 --- /dev/null +++ b/source/source_io/module_ctrl/ctrl_runner_lcao.h @@ -0,0 +1,39 @@ +#ifndef CTRL_RUNNER_LCAO_H +#define CTRL_RUNNER_LCAO_H + +#include "source_cell/unitcell.h" // use UnitCell +#include "source_cell/klist.h" // use K_Vectors +#include "source_estate/elecstate.h" // use elecstate::ElecStateLCAO +#include "source_psi/psi.h" // use Psi +#include "source_lcao/hamilt_lcao.h" // use hamilt::HamiltLCAO +#include "source_basis/module_nao/two_center_bundle.h" // use TwoCenterBundle +#include "source_lcao/setup_exx.h" // for exx, mohan add 20251018 +#include "source_lcao/setup_dm.h" // for density matrix, mohan add 20251103 + +namespace ModuleIO +{ + +template +void ctrl_runner_lcao(UnitCell& ucell, // unitcell + const Input_para &inp, // input + K_Vectors &kv, // k-point + elecstate::ElecState* pelec,// electronic info + const LCAO_domain::Setup_DM &dmat, // mohan add 2025-11-02 + Parallel_Orbitals &pv, // orbital info + Parallel_Grid &pgrid, // grid info + Grid_Driver &gd, // search for adjacent atoms + psi::Psi* psi, // wave function + Charge &chr, // charge density + hamilt::HamiltLCAO* p_hamilt, // hamiltonian + TwoCenterBundle &two_center_bundle, // use two-center integration + LCAO_Orbitals &orb, // LCAO orbitals + ModulePW::PW_Basis* pw_rho, // charge density + ModulePW::PW_Basis* pw_rhod, // dense charge density + Structure_Factor &sf, // structure factor + ModuleBase::matrix &vloc, // local pseudopotential + Exx_NAO &exx_nao, + surchem &solvent); // solvent model + +} + +#endif diff --git a/source/source_io/module_ctrl/ctrl_scf_lcao.cpp b/source/source_io/module_ctrl/ctrl_scf_lcao.cpp new file mode 100644 index 0000000000..3c074fab57 --- /dev/null +++ b/source/source_io/module_ctrl/ctrl_scf_lcao.cpp @@ -0,0 +1,573 @@ +#include "ctrl_scf_lcao.h" // use ctrl_scf_lcao() + +#include "source_estate/elecstate_lcao.h" // use elecstate::ElecState +#include "source_hamilt/hamilt.h" // use Hamilt +#include "source_lcao/hamilt_lcao.h" // use hamilt::HamiltLCAO + +#include + +// functions +#include "../module_unk/berryphase.h" // use berryphase +#include "../module_hs/cal_pLpR.h" // use AngularMomentumCalculator() +#include "source_io/module_hs/output_mat_sparse.h" // use ModuleIO::output_mat_sparse() +#include "../module_mulliken/output_mulliken.h" // use cal_mag() +#include "../module_wannier/to_wannier90_lcao.h" // use toWannier90_LCAO +#include "../module_wannier/to_wannier90_lcao_in_pw.h" // use toWannier90_LCAO_IN_PW +#include "../module_hs/write_HS.h" // use ModuleIO::write_hsk() +#include "../module_dm/write_dmk.h" // use ModuleIO::write_dmk() +#include "../module_dm/write_dmr.h" // use ModuleIO::write_dmr() +#include "../module_dos/write_dos_lcao.h" // use ModuleIO::write_dos_lcao() +#include "../module_wf/write_wfc_nao.h" // use ModuleIO::write_wfc_nao() +#include "source_lcao/module_deltaspin/spin_constrain.h" // use spinconstrain::SpinConstrain +#include "source_lcao/module_operator_lcao/ekinetic.h" // use hamilt::EKinetic +#ifdef __MLALGO +#include "source_lcao/module_deepks/LCAO_deepks.h" +#include "source_lcao/module_deepks/LCAO_deepks_interface.h" +#endif +#ifdef __EXX +#include "source_lcao/module_ri/Exx_LRI_interface.h" // use EXX codes +#include "source_lcao/module_ri/RPA_LRI.h" // use RPA code +#endif +#include "../module_qo/to_qo.h" // use toQO +#include "source_lcao/module_rdmft/rdmft.h" // use RDMFT codes +#include "source_lcao/rho_tau_lcao.h" // mohan add 2025-10-24 +#include "source_lcao/module_operator_lcao/overlap.h" // use hamilt::Overlap for NAMD + +template +void ModuleIO::ctrl_scf_lcao(UnitCell& ucell, + const Input_para& inp, + K_Vectors& kv, + elecstate::ElecState* pelec, + elecstate::DensityMatrix* dm, // mohan add 2025-11-04 + Parallel_Orbitals& pv, + Grid_Driver& gd, + psi::Psi* psi, + hamilt::HamiltLCAO* p_hamilt, + Plus_U& dftu, // mohan add 2025-11-07 + TwoCenterBundle& two_center_bundle, + LCAO_Orbitals& orb, + const ModulePW::PW_Basis_K* pw_wfc, // for berryphase + const ModulePW::PW_Basis* pw_rho, // for berryphase + const ModulePW::PW_Basis_Big* pw_big, // for Wannier90 + const Structure_Factor& sf, // for Wannier90 + rdmft::RDMFT& rdmft_solver, // for RDMFT + Setup_DeePKS& deepks, + Exx_NAO& exx_nao, + const bool conv_esolver, + const bool scf_nmax_flag, + const int istep) +{ + ModuleBase::TITLE("ModuleIO", "ctrl_scf_lcao"); + ModuleBase::timer::tick("ModuleIO", "ctrl_scf_lcao"); + + //***** + // if istep_in = -1, istep will not appear in file name + // if iter_in = -1, iter will not appear in file name + int istep_in = -1; + int iter_in = -1; + bool out_flag = false; + if (PARAM.inp.esolver_type != "tddft" && inp.out_freq_ion > 0) // default value of out_freq_ion is 0 + { + if (istep % inp.out_freq_ion == 0) + { + istep_in = istep; + out_flag = true; + } + } + else if (PARAM.inp.esolver_type == "tddft" && inp.out_freq_td > 0) // default value of out_freq_td is 0 + { + if (istep % inp.out_freq_td == 0) + { + istep_in = istep; + out_flag = true; + } + } + else if (conv_esolver || scf_nmax_flag) // mohan add scf_nmax_flag on 20250921 + { + out_flag = true; + } + + if (!out_flag) + { + return; + } + + //***** + + const bool out_app_flag = inp.out_app_flag; + const bool gamma_only = PARAM.globalv.gamma_only_local; + const int nspin = inp.nspin; + const std::string global_out_dir = PARAM.globalv.global_out_dir; + + //------------------------------------------------------------------ + //! 1) print out density of states (DOS) + //------------------------------------------------------------------ + if (inp.out_dos) + { + ModuleIO::write_dos_lcao(psi, + p_hamilt, + pv, + ucell, + kv, + inp.nbands, + pelec->eferm, + pelec->ekb, + pelec->wg, + inp.dos_edelta_ev, + inp.dos_scale, + inp.dos_sigma, + out_app_flag, + istep, + GlobalV::ofs_running); + } + + //------------------------------------------------------------------ + //! 2) Output density matrix DM(R) + //------------------------------------------------------------------ + if (inp.out_dmr[0]) + { + const int precision = inp.out_dmr[1]; + + ModuleIO::write_dmr(dm->get_DMR_vector(), &ucell, precision, pv, out_app_flag, + ucell.get_iat2iwt(), ucell.nat, istep); + } + + //------------------------------------------------------------------ + //! 3) Output density matrix DM(k) + //------------------------------------------------------------------ + if (inp.out_dmk[0]) + { + std::vector efermis(nspin == 2 ? 2 : 1); + for (int ispin = 0; ispin < efermis.size(); ispin++) + { + efermis[ispin] = pelec->eferm.get_efval(ispin); + } + const int precision = inp.out_dmk[1]; + + ModuleIO::write_dmk(dm->get_DMK_vector(), kv, precision, efermis, &(ucell), pv, istep); + } + + //------------------------------------------------------------------ + // 4) Output H(k) and S(k) matrices for each k-point + //------------------------------------------------------------------ + if (inp.out_mat_hs[0]) + { + ModuleIO::write_hsk(global_out_dir, + nspin, + kv.get_nks(), + kv.get_nkstot(), + kv.ik2iktot, + kv.isk, + p_hamilt, + pv, + gamma_only, + out_app_flag, + istep, + GlobalV::ofs_running); + } + + //------------------------------------------------------------------ + //! 5) Output electronic wavefunctions Psi(k) + //------------------------------------------------------------------ + if (elecstate::ElecStateLCAO::out_wfc_lcao) + { + ModuleIO::write_wfc_nao(elecstate::ElecStateLCAO::out_wfc_lcao, + out_app_flag, + psi[0], + pelec->ekb, + pelec->wg, + kv.kvec_c, + kv.ik2iktot, + kv.get_nkstot(), + pv, + nspin, + istep); + } + + //------------------------------------------------------------------ + //! 6) Output DeePKS information + //------------------------------------------------------------------ +#ifdef __MLALGO + // need control parameter + hamilt::HamiltLCAO* p_ham_deepks = p_hamilt; + std::shared_ptr> ld_shared_ptr(&deepks.ld, [](LCAO_Deepks*) {}); + LCAO_Deepks_Interface deepks_interface(ld_shared_ptr); + + deepks_interface.out_deepks_labels(pelec->f_en.etot, + kv.get_nks(), + ucell.nat, + PARAM.globalv.nlocal, + pelec->ekb, + kv.kvec_d, + ucell, + orb, + gd, + &pv, + *psi, + dm, + p_ham_deepks, + -1, // -1 when called in after scf + true, // no used when after scf + GlobalV::MY_RANK, + GlobalV::ofs_running); +#endif + + //------------------------------------------------------------------ + //! 7) Output matrices, where O can be chosen as + //! H, S, dH, dS, T, r. The format is CSR format. + //------------------------------------------------------------------ + hamilt::Hamilt* p_ham_tk = static_cast*>(p_hamilt); + + ModuleIO::output_mat_sparse(inp.out_mat_hs2, + inp.out_mat_dh, + inp.out_mat_ds, + inp.out_mat_t, + inp.out_mat_r, + istep, + pelec->pot->get_eff_v(), + pv, + two_center_bundle, + orb, + ucell, + gd, + kv, + p_ham_tk, + &dftu); + + //------------------------------------------------------------------ + //! 8) Output kinetic matrix + //------------------------------------------------------------------ + if (inp.out_mat_tk[0]) + { + hamilt::HS_Matrix_K hsk(&pv, true); + hamilt::HContainer hR(&pv); + hamilt::Operator* ekinetic + = new hamilt::EKinetic>(&hsk, + kv.kvec_d, + &hR, + &ucell, + orb.cutoffs(), + &gd, + two_center_bundle.kinetic_orb.get()); + + const int nspin_k = (nspin == 2 ? 2 : 1); + for (int ik = 0; ik < kv.get_nks() / nspin_k; ++ik) + { + ekinetic->init(ik); + + const int out_label = 1; // 1: .txt, 2: .dat + + std::string t_fn = ModuleIO::filename_output(global_out_dir, + "tk", + "nao", + ik, + kv.ik2iktot, + inp.nspin, + kv.get_nkstot(), + out_label, + out_app_flag, + gamma_only, + istep); + + ModuleIO::save_mat(istep, + hsk.get_hk(), + PARAM.globalv.nlocal, + false, // bit + inp.out_mat_tk[1], + 1, // true for upper triangle matrix + inp.out_app_flag, + t_fn, + pv, + GlobalV::DRANK); + } + + delete ekinetic; + } + + //------------------------------------------------------------------ + //! 9) Output expectation of angular momentum operator + //------------------------------------------------------------------ + if (inp.out_mat_l[0]) + { + ModuleIO::AngularMomentumCalculator mylcalculator(inp.orbital_dir, + ucell, + orb.get_rcutmax_Phi(), + inp.test_deconstructor, + inp.test_grid, + inp.test_atom_input, + PARAM.globalv.search_pbc, + &GlobalV::ofs_running, + GlobalV::MY_RANK); + mylcalculator.calculate(inp.suffix, global_out_dir, ucell, inp.out_mat_l[1], GlobalV::MY_RANK); + } + + //------------------------------------------------------------------ + //! 10) Output Mulliken charge + //------------------------------------------------------------------ + if (inp.out_mul) + { + ModuleIO::cal_mag(&pv, + p_hamilt, + kv, + dm, // mohan add 2025-11-04 + two_center_bundle, + orb, + ucell, + gd, + istep, + true); + } + + //------------------------------------------------------------------ + //! 11) Output atomic magnetization by using 'spin_constraint' + //------------------------------------------------------------------ + if (inp.sc_mag_switch) + { + spinconstrain::SpinConstrain& sc = spinconstrain::SpinConstrain::getScInstance(); + sc.cal_mi_lcao(istep); + sc.print_Mi(GlobalV::ofs_running); + sc.print_Mag_Force(GlobalV::ofs_running); + } + + //------------------------------------------------------------------ + //! 12) Output Berry phase + //------------------------------------------------------------------ + if (inp.calculation == "nscf" && berryphase::berry_phase_flag && ModuleSymmetry::Symmetry::symm_flag != 1) + { + std::cout << FmtCore::format("\n * * * * * *\n << Start %s.\n", "Berry phase calculation"); + berryphase bp(&pv); + bp.lcao_init(ucell, gd, kv, orb); + // additional step before calling macroscopic_polarization + bp.Macroscopic_polarization(ucell, pw_wfc->npwk_max, psi, pw_rho, pw_wfc, kv); + std::cout << FmtCore::format(" >> Finish %s.\n * * * * * *\n", "Berry phase calculation"); + } + + //------------------------------------------------------------------ + //! 13) Wannier90 interface in LCAO basis + // added by jingan in 2018.11.7 + //------------------------------------------------------------------ + if (inp.calculation == "nscf" && inp.towannier90) + { + std::cout << FmtCore::format("\n * * * * * *\n << Start %s.\n", "Wave function to Wannier90"); + if (inp.wannier_method == 1) + { + toWannier90_LCAO_IN_PW wan(inp.out_wannier_mmn, + inp.out_wannier_amn, + inp.out_wannier_unk, + inp.out_wannier_eig, + inp.out_wannier_wvfn_formatted, + inp.nnkpfile, + inp.wannier_spin); + wan.set_tpiba_omega(ucell.tpiba, ucell.omega); + wan.calculate(ucell, pelec->ekb, pw_wfc, pw_big, sf, kv, psi, &pv); + } + else if (inp.wannier_method == 2) + { + toWannier90_LCAO wan(inp.out_wannier_mmn, + inp.out_wannier_amn, + inp.out_wannier_unk, + inp.out_wannier_eig, + inp.out_wannier_wvfn_formatted, + inp.nnkpfile, + inp.wannier_spin, + orb); + + wan.calculate(ucell, gd, pelec->ekb, kv, *psi, &pv); + } + std::cout << FmtCore::format(" >> Finish %s.\n * * * * * *\n", "Wave function to Wannier90"); + } + + // 14) calculate the kinetic energy density tau + // mohan add 2025-10-24 + // if (inp.out_elf[0] > 0) + // { + // LCAO_domain::dm2tau(pelec->DM->get_DMR_vector(), inp.nspin, pelec->charge); + // } + +#ifdef __EXX + //------------------------------------------------------------------ + //! 15) Output Hexx matrix in LCAO basis + // (see `out_chg` in docs/advanced/input_files/input-main.md) + //------------------------------------------------------------------ + if (inp.out_chg[0]) + { + if (GlobalC::exx_info.info_global.cal_exx && inp.calculation != "nscf") // Peize Lin add if 2022.11.14 + { + const std::string file_name_exx = global_out_dir + "HexxR" + std::to_string(GlobalV::MY_RANK); + if (GlobalC::exx_info.info_ri.real_number) + { + ModuleIO::write_Hexxs_csr(file_name_exx, ucell, exx_nao.exd->get_Hexxs()); + } + else + { + ModuleIO::write_Hexxs_csr(file_name_exx, ucell, exx_nao.exc->get_Hexxs()); + } + } + } + + //------------------------------------------------------------------ + //! 16) Write RPA information in LCAO basis + //------------------------------------------------------------------ + if (inp.rpa) + { + RPA_LRI rpa_lri_double(GlobalC::exx_info.info_ri); + rpa_lri_double.cal_postSCF_exx(*dm, MPI_COMM_WORLD, ucell, kv, orb); + rpa_lri_double.init(MPI_COMM_WORLD, kv, orb.cutoffs()); + rpa_lri_double.out_for_RPA(ucell, pv, *psi, pelec); + } +#endif + + //------------------------------------------------------------------ + //! 17) Perform RDMFT calculations, added by jghan, 2024-10-17 + //------------------------------------------------------------------ + if (inp.rdmft == true) + { + ModuleBase::matrix occ_num(pelec->wg); + for (int ik = 0; ik < occ_num.nr; ++ik) + { + for (int inb = 0; inb < occ_num.nc; ++inb) + { + occ_num(ik, inb) /= kv.wk[ik]; + } + } + rdmft_solver.update_elec(ucell, occ_num, *psi); + + //! initialize the gradients of Etotal with respect to occupation numbers and wfc, + //! and set all elements to 0. + //! dedocc = d E/d Occ_Num + ModuleBase::matrix dedocc(pelec->wg.nr, pelec->wg.nc, true); + + //! dedwfc = d E/d wfc + psi::Psi dedwfc(psi->get_nk(), psi->get_nbands(), psi->get_nbasis(), kv.ngk, true); + dedwfc.zero_out(); + + double etot_rdmft = rdmft_solver.run(dedocc, dedwfc); + } + + //------------------------------------------------------------------ + //! 17) Output quasi orbitals + //------------------------------------------------------------------ + if (inp.qo_switch) + { + toQO tqo(inp.qo_basis, inp.qo_strategy, inp.qo_thr, inp.qo_screening_coeff); + tqo.initialize(global_out_dir, + inp.pseudo_dir, + inp.orbital_dir, + &ucell, + kv.kvec_d, + GlobalV::ofs_running, + GlobalV::MY_RANK, + GlobalV::NPROC); + tqo.calculate(); + } + + //------------------------------------------------------------------ + //! 18) Calculate and output asynchronous overlap matrix for Hefei-NAMD + //------------------------------------------------------------------ + if (inp.cal_syns && (istep > 0 || inp.init_vel)) + { + ModuleBase::TITLE("ModuleIO", "output_namd_async_overlap"); + ModuleBase::timer::tick("ModuleIO", "output_namd_async_overlap"); + + // Create a new Overlap instance specifically for SR_async calculation + // This allows SR_async to be initialized with velocity-shifted dtau + hamilt::Overlap>* overlap_async = + new hamilt::Overlap>( + nullptr, // hsk_in: not needed for SR_async calculation + kv.kvec_d, + nullptr, // hR_in: not needed for SR_async calculation + nullptr, // SR_in: not needed for SR_async calculation + &ucell, + orb.cutoffs(), + &gd, + two_center_bundle.overlap_orb.get()); + + // Use same precision as DMR output (default 8 if not specified) + const int precision = inp.out_dmr[0] > 0 ? inp.out_dmr[1] : 8; + const Parallel_Orbitals* paraV = p_hamilt->getSR()->get_paraV(); + hamilt::HContainer* SR_async = overlap_async->calculate_SR_async(ucell, PARAM.mdp.md_dt, paraV); + overlap_async->output_SR_async_csr(istep, SR_async, precision); + + // Clean up + delete SR_async; + delete overlap_async; + + ModuleBase::timer::tick("ModuleIO", "output_namd_async_overlap"); + } + + ModuleBase::timer::tick("ModuleIO", "ctrl_scf_lcao"); +} + +// For gamma only +template void ModuleIO::ctrl_scf_lcao( + UnitCell& ucell, + const Input_para& inp, + K_Vectors& kv, + elecstate::ElecState* pelec, + elecstate::DensityMatrix* dm, // mohan add 2025-11-04 + Parallel_Orbitals& pv, + Grid_Driver& gd, + psi::Psi* psi, + hamilt::HamiltLCAO* p_hamilt, + Plus_U& dftu, // mohan add 2025-11-07 + TwoCenterBundle& two_center_bundle, + LCAO_Orbitals& orb, + const ModulePW::PW_Basis_K* pw_wfc, // for berryphase + const ModulePW::PW_Basis* pw_rho, // for berryphase + const ModulePW::PW_Basis_Big* pw_big, // for Wannier90 + const Structure_Factor& sf, // for Wannier90 + rdmft::RDMFT& rdmft_solver, // for RDMFT + Setup_DeePKS& deepks, + Exx_NAO& exx_nao, + const bool conv_esolver, + const bool scf_nmax_flag, + const int istep); + +// For multiple k-points +template void ModuleIO::ctrl_scf_lcao, double>( + UnitCell& ucell, + const Input_para& inp, + K_Vectors& kv, + elecstate::ElecState* pelec, + elecstate::DensityMatrix, double>* dm, // mohan add 2025-11-04 + Parallel_Orbitals& pv, + Grid_Driver& gd, + psi::Psi>* psi, + hamilt::HamiltLCAO, double>* p_hamilt, + Plus_U& dftu, // mohan add 2025-11-07 + TwoCenterBundle& two_center_bundle, + LCAO_Orbitals& orb, + const ModulePW::PW_Basis_K* pw_wfc, // for berryphase + const ModulePW::PW_Basis* pw_rho, // for berryphase + const ModulePW::PW_Basis_Big* pw_big, // for Wannier90 + const Structure_Factor& sf, // for Wannier90 + rdmft::RDMFT, double>& rdmft_solver, // for RDMFT + Setup_DeePKS>& deepks, + Exx_NAO>& exx_nao, + const bool conv_esolver, + const bool scf_nmax_flag, + const int istep); + +template void ModuleIO::ctrl_scf_lcao, std::complex>( + UnitCell& ucell, + const Input_para& inp, + K_Vectors& kv, + elecstate::ElecState* pelec, + elecstate::DensityMatrix, double>* dm, // mohan add 2025-11-04 + Parallel_Orbitals& pv, + Grid_Driver& gd, + psi::Psi>* psi, + hamilt::HamiltLCAO, std::complex>* p_hamilt, + Plus_U& dftu, // mohan add 2025-11-07 + TwoCenterBundle& two_center_bundle, + LCAO_Orbitals& orb, + const ModulePW::PW_Basis_K* pw_wfc, // for berryphase + const ModulePW::PW_Basis* pw_rho, // for berryphase + const ModulePW::PW_Basis_Big* pw_big, // for Wannier90 + const Structure_Factor& sf, // for Wannier90 + rdmft::RDMFT, std::complex>& rdmft_solver, // for RDMFT + Setup_DeePKS>& deepks, + Exx_NAO>& exx_nao, + const bool conv_esolver, + const bool scf_nmax_flag, + const int istep); diff --git a/source/source_io/module_ctrl/ctrl_scf_lcao.h b/source/source_io/module_ctrl/ctrl_scf_lcao.h new file mode 100644 index 0000000000..ae895f0262 --- /dev/null +++ b/source/source_io/module_ctrl/ctrl_scf_lcao.h @@ -0,0 +1,47 @@ +#ifndef CTRL_SCF_LCAO_H +#define CTRL_SCF_LCAO_H + +#include "source_basis/module_nao/two_center_bundle.h" // use TwoCenterBundle +#include "source_basis/module_pw/pw_basis_k.h" // use ModulePW::PW_Basis_K and ModulePW::PW_Basis +#include "source_cell/klist.h" // use K_Vectors +#include "source_cell/unitcell.h" // use UnitCell +#include "source_estate/elecstate.h" // use elecstate::ElecStateLCAO +#include "source_estate/module_dm/density_matrix.h" // mohan add 2025-11-04 +#include "source_lcao/hamilt_lcao.h" // use hamilt::HamiltLCAO +#include "source_lcao/module_dftu/dftu.h" // mohan add 20251107 +#include "source_lcao/module_rdmft/rdmft.h" // use RDMFT codes +#include "source_lcao/setup_deepks.h" // for deepks, mohan add 20251008 +#include "source_lcao/setup_exx.h" // for exx, mohan add 20251008 +#include "source_psi/psi.h" // use Psi +#include "source_pw/module_pwdft/structure_factor.h" // use Structure_Factor + +#include + +namespace ModuleIO +{ +// in principle, we need to add const for all of the variables, mohan note 2025-06-05 +template +void ctrl_scf_lcao(UnitCell& ucell, + const Input_para& inp, + K_Vectors& kv, + elecstate::ElecState* pelec, + elecstate::DensityMatrix* dm, // mohan add 2025-11-04 + Parallel_Orbitals& pv, + Grid_Driver& gd, + psi::Psi* psi, + hamilt::HamiltLCAO* p_hamilt, + Plus_U& dftu, // mohan add 2025-11-07 + TwoCenterBundle& two_center_bundle, + LCAO_Orbitals& orb, + const ModulePW::PW_Basis_K* pw_wfc, // for berryphase + const ModulePW::PW_Basis* pw_rho, // for berryphase + const ModulePW::PW_Basis_Big* pw_big, // for Wannier90 + const Structure_Factor& sf, // for Wannier90 + rdmft::RDMFT& rdmft_solver, // for RDMFT + Setup_DeePKS& deepks, + Exx_NAO& exx_nao, + const bool conv_esolver, + const bool scf_nmax_flag, + const int istep); +} // namespace ModuleIO +#endif diff --git a/source/source_io/td_current_io.cpp b/source/source_io/module_current/td_current_io.cpp similarity index 97% rename from source/source_io/td_current_io.cpp rename to source/source_io/module_current/td_current_io.cpp index 4cf0e56045..75166e368e 100644 --- a/source/source_io/td_current_io.cpp +++ b/source/source_io/module_current/td_current_io.cpp @@ -11,7 +11,6 @@ #include "source_estate/module_pot/H_TDDFT_pw.h" #include "source_lcao/LCAO_domain.h" #include "source_lcao/module_rt/td_info.h" -#include "source_pw/module_pwdft/global.h" #include "source_io/module_parameter/parameter.h" #ifdef __LCAO @@ -180,12 +179,14 @@ void ModuleIO::write_current(const UnitCell& ucell, // write end if (GlobalV::MY_RANK == 0) { - std::string filename = PARAM.globalv.global_out_dir + "current_total.dat"; + std::string filename = PARAM.globalv.global_out_dir + "current_tot.txt"; std::ofstream fout; fout.open(filename, std::ios::app); fout << std::setprecision(16); fout << std::scientific; - fout << istep << " " << current_total[0]/omega << " " << current_total[1]/omega << " " << current_total[2]/omega << std::endl; + fout << istep+1 << " " << current_total[0]/omega + << " " << current_total[1]/omega + << " " << current_total[2]/omega << std::endl; fout.close(); } @@ -559,13 +560,15 @@ void ModuleIO::write_current_eachk(const UnitCell& ucell, // MPI_Reduce(local_current_ik, current_ik, 3, MPI_DOUBLE, MPI_SUM, 0, MPI_COMM_WORLD); if (GlobalV::MY_RANK == 0 && TD_info::out_current_k) { - std::string filename = PARAM.globalv.global_out_dir + "current_spin" + std::to_string(is) + "_ik" - + std::to_string(ik) + ".dat"; + std::string filename = PARAM.globalv.global_out_dir + "current_s" + std::to_string(is) + "k" + + std::to_string(ik+1) + ".txt"; std::ofstream fout; fout.open(filename, std::ios::app); fout << std::setprecision(16); fout << std::scientific; - fout << istep << " " << current_ik[0]/omega << " " << current_ik[1]/omega << " " << current_ik[2]/omega << std::endl; + fout << istep+1 << " " << current_ik[0]/omega + << " " << current_ik[1]/omega + << " " << current_ik[2]/omega << std::endl; fout.close(); } // write end @@ -573,12 +576,14 @@ void ModuleIO::write_current_eachk(const UnitCell& ucell, } // end is if (GlobalV::MY_RANK == 0) { - std::string filename = PARAM.globalv.global_out_dir + "current_total.dat"; + std::string filename = PARAM.globalv.global_out_dir + "current_tot.txt"; std::ofstream fout; fout.open(filename, std::ios::app); fout << std::setprecision(16); fout << std::scientific; - fout << istep << " " << current_total[0]/omega << " " << current_total[1]/omega << " " << current_total[2]/omega << std::endl; + fout << istep+1 << " " << current_total[0]/omega + << " " << current_total[1]/omega + << " " << current_total[2]/omega << std::endl; fout.close(); } diff --git a/source/source_io/module_current/td_current_io.h b/source/source_io/module_current/td_current_io.h new file mode 100644 index 0000000000..9ed7b6a111 --- /dev/null +++ b/source/source_io/module_current/td_current_io.h @@ -0,0 +1,126 @@ +#ifndef TD_CURRENT_IO_H +#define TD_CURRENT_IO_H + +#include "source_basis/module_nao/two_center_bundle.h" +#include "source_estate/elecstate_lcao.h" +#include "source_estate/module_dm/density_matrix.h" +#include "source_psi/psi.h" +#include "source_lcao/module_rt/velocity_op.h" +#include "source_lcao/setup_exx.h" +#ifdef __EXX +#include +#endif + +namespace ModuleIO +{ +#ifdef __LCAO +/// @brief func to output current, only used in tddft +template +void write_current_eachk(const UnitCell& ucell, + const int istep, + const psi::Psi>* psi, + const elecstate::ElecState* pelec, + const K_Vectors& kv, + const TwoCenterIntegrator* intor, + const Parallel_Orbitals* pv, + const LCAO_Orbitals& orb, + const Velocity_op* cal_current, + Record_adj& ra); +template +void write_current(const UnitCell& ucell, + const int istep, + const psi::Psi>* psi, + const elecstate::ElecState* pelec, + const K_Vectors& kv, + const TwoCenterIntegrator* intor, + const Parallel_Orbitals* pv, + const LCAO_Orbitals& orb, + const Velocity_op* cal_current, + Record_adj& ra); +/// @brief func to output current calculated using i[r,H] directly +template +void write_current( + const UnitCell& ucell, + const Grid_Driver& GridD, + const int istep, + const psi::Psi>* psi, + const elecstate::ElecState* pelec, + const K_Vectors& kv, + const Parallel_Orbitals* pv, + const LCAO_Orbitals& orb, + cal_r_overlap_R& r_calculator, + const hamilt::HContainer* sR, + const hamilt::HContainer* hR, + const Exx_NAO>& exx_nao +); +/// @brief calculate sum_n[𝜌_(𝑛𝑘,𝜇𝜈)] for current calculation +void cal_tmp_DM_k(const UnitCell& ucell, + elecstate::DensityMatrix, double>& DM_real, + elecstate::DensityMatrix, double>& DM_imag, + const int ik, + const int nspin, + const int is, + const bool reset = true); + +void cal_tmp_DM(const UnitCell& ucell, + elecstate::DensityMatrix, double>& DM_real, + elecstate::DensityMatrix, double>& DM_imag, + const int nspin); +void set_rR_from_hR(const UnitCell& ucell, + const Grid_Driver& GridD, + const LCAO_Orbitals& orb, + const Parallel_Orbitals* pv, + cal_r_overlap_R& r_calculator, + const hamilt::HContainer>* hR, + ModuleBase::Vector3*>& rR); +template +void sum_HR( + const UnitCell& ucell, + const Parallel_Orbitals& pv, + const K_Vectors& kv, + const hamilt::HContainer* hR, + hamilt::HContainer>* full_hR, + const Exx_NAO>& exx_nao +); + +template +void add_HR(const hamilt::HContainer* hR, hamilt::HContainer* full_hR); + +void init_from_adj(const UnitCell& ucell, + const Grid_Driver& GridD, + const LCAO_Orbitals& orb, + const Parallel_Orbitals* pv, + std::vector& adjs_all, + ModuleBase::Vector3*>& rR); +template +void init_from_hR(const hamilt::HContainer* hR, hamilt::HContainer* aimR); +template +void cal_velocity_basis_k(const UnitCell& ucell, + const LCAO_Orbitals& orb, + const Parallel_Orbitals* pv, + const K_Vectors& kv, + const ModuleBase::Vector3*>& rR, + const hamilt::HContainer& sR, + const hamilt::HContainer>& hR, + std::vector*>>& velocity_basis_k); + +void cal_velocity_matrix(const psi::Psi>* psi, + const Parallel_Orbitals* pv, + const K_Vectors& kv, + const std::vector*>>& velocity_basis_k, + std::vector>& velocity_k); +template +void cal_current_comm_k(const UnitCell& ucell, + const Grid_Driver& GridD, + const LCAO_Orbitals& orb, + const Parallel_Orbitals* pv, + const K_Vectors& kv, + cal_r_overlap_R& r_calculator, + const hamilt::HContainer& sR, + const hamilt::HContainer>& hR, + const psi::Psi>* psi, + const elecstate::ElecState* pelec, + std::vector>& current_k); +#endif // __LCAO +} // namespace ModuleIO +#endif diff --git a/source/source_io/module_current/td_current_io_comm.cpp b/source/source_io/module_current/td_current_io_comm.cpp new file mode 100644 index 0000000000..394a852450 --- /dev/null +++ b/source/source_io/module_current/td_current_io_comm.cpp @@ -0,0 +1,910 @@ +#include "td_current_io.h" +#include "source_base/timer.h" +#include "source_base/global_function.h" +#include "source_base/global_variable.h" +#include "source_io/module_parameter/parameter.h" +#include "source_lcao/module_rt/td_info.h" +#include "source_base/libm/libm.h" +#include "source_base/parallel_reduce.h" +#include "source_base/tool_threading.h" +#include "source_base/vector3.h" +#include "source_estate/module_dm/cal_dm_psi.h" +#include "source_estate/module_pot/H_TDDFT_pw.h" +#include "source_lcao/LCAO_domain.h" +#include "source_base/module_external/lapack_connector.h" +#include "source_base/module_external/scalapack_connector.h" +#include "source_lcao/module_hcontainer/hcontainer_funcs.h" +#include "source_lcao/module_rt/td_folding.h" +#ifdef __EXX +#include "source_lcao/module_operator_lcao/op_exx_lcao.h" +#include "source_lcao/module_ri/Exx_LRI.h" +#endif +#ifdef __LCAO +template +void ModuleIO::init_from_hR(const hamilt::HContainer* hR, hamilt::HContainer* aimR) +{ + ModuleBase::TITLE("ModuleIO", "init_from_hR"); + ModuleBase::timer::tick("ModuleIO", "init_from_hR"); + for (int i = 0; i < hR->size_atom_pairs(); i++) + { + hamilt::AtomPair atom_ij = hR->get_atom_pair(i); + const int iat1 = atom_ij.get_atom_i(); + const int iat2 = atom_ij.get_atom_j(); + for (int iR = 0; iR < atom_ij.get_R_size(); iR++) + { + const ModuleBase::Vector3 r_index = atom_ij.get_R_index(iR); + hamilt::AtomPair atom_ij_ta(iat1, iat2, r_index, hR->get_paraV()); + aimR->insert_pair(atom_ij_ta); + } + } + aimR->allocate(nullptr, true); + + ModuleBase::timer::tick("ModuleIO", "init_from_hR"); +} +void ModuleIO::init_from_adj(const UnitCell& ucell, + const Grid_Driver& GridD, + const LCAO_Orbitals& orb, + const Parallel_Orbitals* pv, + std::vector& adjs_all, + ModuleBase::Vector3*>& rR) +{ + ModuleBase::TITLE("ModuleIOTD_mixing_pot", "init_from_adj"); + ModuleBase::timer::tick("ModuleIO", "init_from_adj"); + + auto orb_cutoff_ = orb.cutoffs(); + adjs_all.clear(); + adjs_all.reserve(ucell.nat); + + for (int iat1 = 0; iat1 < ucell.nat; iat1++) + { + auto tau1 = ucell.get_tau(iat1); + int T1, I1; + ucell.iat2iait(iat1, &I1, &T1); + AdjacentAtomInfo adjs; + GridD.Find_atom(ucell, tau1, T1, I1, &adjs); + std::vector is_adj(adjs.adj_num + 1, false); + for (int ad1 = 0; ad1 < adjs.adj_num + 1; ++ad1) + { + const int T2 = adjs.ntype[ad1]; + const int I2 = adjs.natom[ad1]; + const int iat2 = ucell.itia2iat(T2, I2); + if (pv->get_row_size(iat1) <= 0 || pv->get_col_size(iat2) <= 0) + { + continue; + } + const ModuleBase::Vector3& R_index2 = adjs.box[ad1]; + // choose the real adjacent atoms + // Note: the distance of atoms should less than the cutoff radius, + // When equal, the theoretical value of matrix element is zero, + // but the calculated value is not zero due to the numerical error, which would lead to result changes. + if (ucell.cal_dtau(iat1, iat2, R_index2).norm() * ucell.lat0 + < orb_cutoff_[T1] + orb_cutoff_[T2]) + { + is_adj[ad1] = true; + } + } + filter_adjs(is_adj, adjs); + adjs_all.push_back(adjs); + for (int ad = 0; ad < adjs.adj_num + 1; ++ad) + { + const int T2 = adjs.ntype[ad]; + const int I2 = adjs.natom[ad]; + int iat2 = ucell.itia2iat(T2, I2); + ModuleBase::Vector3& R_index = adjs.box[ad]; + hamilt::AtomPair tmp(iat1, iat2, R_index, pv); + for (size_t i_alpha = 0; i_alpha != 3; ++i_alpha) + { + rR[i_alpha]->insert_pair(tmp); + } + } + } + // allocate the memory of BaseMatrix in HR, and set the new values to zero + for (size_t i_alpha = 0; i_alpha != 3; ++i_alpha) + { + rR[i_alpha]->allocate(nullptr, true); + } + ModuleBase::timer::tick("ModuleIO", "init_from_adj"); +} + +void ModuleIO::set_rR_from_hR(const UnitCell& ucell, + const Grid_Driver& GridD, + const LCAO_Orbitals& orb, + const Parallel_Orbitals* pv, + cal_r_overlap_R& r_calculator, + const hamilt::HContainer>* hR, + ModuleBase::Vector3*>& rR) +{ + ModuleBase::TITLE("ModuleIO", "set_rR_from_hR"); + ModuleBase::timer::tick("ModuleIO", "set_rR_from_hR"); + + // init + std::vector adjs_all; + init_from_adj(ucell, GridD, orb, pv, adjs_all, rR); + + for (int iat1 = 0; iat1 < ucell.nat; iat1++) + { + auto tau1 = ucell.get_tau(iat1); + int T1, I1; + ucell.iat2iait(iat1, &I1, &T1); + AdjacentAtomInfo& adjs = adjs_all[iat1]; + for (int ad = 0; ad < adjs.adj_num + 1; ++ad) + { + const int T2 = adjs.ntype[ad]; + const int I2 = adjs.natom[ad]; + const int iat2 = ucell.itia2iat(T2, I2); + const ModuleBase::Vector3& r_index = adjs.box[ad]; + ModuleBase::Vector3 dtau = ucell.cal_dtau(iat1, iat2, r_index); + + Atom& atom1 = ucell.atoms[T1]; + Atom& atom2 = ucell.atoms[T2]; + const int npol = ucell.get_npol(); + + const int* iw2l1 = atom1.iw2l.data(); + const int* iw2n1 = atom1.iw2n.data(); + const int* iw2m1 = atom1.iw2m.data(); + const int* iw2l2 = atom2.iw2l.data(); + const int* iw2n2 = atom2.iw2n.data(); + const int* iw2m2 = atom2.iw2m.data(); + + auto row_indexes = pv->get_indexes_row(iat1); + auto col_indexes = pv->get_indexes_col(iat2); + + const ModuleBase::Vector3& tau1 = ucell.get_tau(iat1); + // std::cout << "tau1: " << tau1 << " tau2: " << GlobalC::ucell.get_tau(iat2) << " r_index: " << r_index + // << std::endl; + const ModuleBase::Vector3 tau2 = tau1 + dtau; + for (int iw1l = 0; iw1l < row_indexes.size(); iw1l += npol) + { + const int iw1 = row_indexes[iw1l] / npol; + const int L1 = iw2l1[iw1]; + const int N1 = iw2n1[iw1]; + const int m1 = iw2m1[iw1]; + + for (int iw2l = 0; iw2l < col_indexes.size(); iw2l += npol) + { + const int iw2 = col_indexes[iw2l] / npol; + const int L2 = iw2l2[iw2]; + const int N2 = iw2n2[iw2]; + const int m2 = iw2m2[iw2]; + + // std::cout<<"L1: "< tmp_r = r_calculator.get_psi_r_psi(tau1 * ucell.lat0, + T1, + L1, + m1, + N1, + tau2 * ucell.lat0, + T2, + L2, + m2, + N2); + for (size_t i_alpha = 0; i_alpha != 3; ++i_alpha) + { + hamilt::BaseMatrix* HlocR = rR[i_alpha]->find_matrix(iat1, iat2, r_index); + if(HlocR!=nullptr)HlocR->add_element(iw1, iw2, tmp_r[i_alpha]); + // if (i_alpha == 2) + // { + // std::cout << "iw1: " << iw1 << " iw2: " << iw2 << " i_alpha: " << i_alpha + // << " tmp_r: " << tmp_r[i_alpha] << std::endl; + // } + } + } + } + } + } + ModuleBase::TITLE("ModuleIO", "set_rR_from_sR"); +} +template +void ModuleIO::sum_HR( + const UnitCell& ucell, + const Parallel_Orbitals& pv, + const K_Vectors& kv, + const hamilt::HContainer* hR, + hamilt::HContainer>* full_hR, + const Exx_NAO>& exx_nao +) +{ + ModuleBase::TITLE("ModuleIO", "sum_HR"); + ModuleBase::timer::tick("ModuleIO", "sum_HR"); + + // init complex full_hR + init_from_hR(hR, full_hR); +#ifdef __EXX + const bool use_cell_nearest = (ModuleBase::Vector3(std::fmod(kv.get_koffset(0), 1.0), + std::fmod(kv.get_koffset(1), 1.0), + std::fmod(kv.get_koffset(2), 1.0)).norm()< 1e-10); + RI::Cell_Nearest cell_nearest; + // reallocate full_hR for BvK used in EXX + if (GlobalC::exx_info.info_global.cal_exx) + { + const std::array Rs_period = {kv.nmp[0], kv.nmp[1], kv.nmp[2]}; + if (use_cell_nearest) + { + // set cell_nearest + std::map> atoms_pos; + for (int iat = 0; iat < ucell.nat; ++iat) + { + atoms_pos[iat] = RI_Util::Vector3_to_array3( + ucell.atoms[ucell.iat2it[iat]].tau[ucell.iat2ia[iat]]); + } + const std::array, 3> latvec = {RI_Util::Vector3_to_array3(ucell.a1), + RI_Util::Vector3_to_array3(ucell.a2), + RI_Util::Vector3_to_array3(ucell.a3)}; + cell_nearest.init(atoms_pos, latvec, Rs_period); + hamilt::reallocate_hcontainer(ucell.nat, full_hR, Rs_period, &cell_nearest); + } + else + hamilt::reallocate_hcontainer(ucell.nat, full_hR, Rs_period); + } +#endif + // add other hR + add_HR(hR, full_hR); + // add velocity complex hR + if (PARAM.inp.td_stype==1) + { + if (TD_info::td_vel_op == nullptr) + { + ModuleBase::WARNING_QUIT("ModuleIO::write_current", "velocity gauge infos is null!"); + } + const hamilt::HContainer>* velocity_hR = TD_info::td_vel_op->get_velocity_HR_pointer(); + add_HR(velocity_hR, full_hR); + } +#ifdef __EXX + // add HexxR to complex full_hR + if (GlobalC::exx_info.info_global.cal_exx) + { + for (size_t is = 0; is != PARAM.inp.nspin; ++is) + { + if (use_cell_nearest) + RI_2D_Comm::add_HexxR(is, GlobalC::exx_info.info_global.hybrid_alpha, exx_nao.exc->get_Hexxs(), pv, PARAM.globalv.npol, *full_hR, &cell_nearest); + else + RI_2D_Comm::add_HexxR(is, GlobalC::exx_info.info_global.hybrid_alpha, exx_nao.exc->get_Hexxs(), pv, PARAM.globalv.npol, *full_hR, nullptr); + } + } +#endif + + ModuleBase::timer::tick("ModuleIO", "sum_HR"); +} + +template +void ModuleIO::add_HR(const hamilt::HContainer* hR, hamilt::HContainer* full_hR) +{ + ModuleBase::TITLE("ModuleIO", "add_HR"); + ModuleBase::timer::tick("ModuleIO", "add_HR"); + + for (int ipair = 0; ipair < hR->size_atom_pairs(); ++ipair) + { + hamilt::AtomPair atom_ij = hR->get_atom_pair(ipair); + const int iat1 = atom_ij.get_atom_i(); + const int iat2 = atom_ij.get_atom_j(); + // loop R-index + for (int iR = 0; iR < atom_ij.get_R_size(); iR++) + { + const ModuleBase::Vector3 r_index = atom_ij.get_R_index(iR); + hamilt::BaseMatrix* full_HlocR = full_hR->find_matrix(iat1, iat2, r_index.x, r_index.y, r_index.z); + const hamilt::BaseMatrix* HlocR = hR->find_matrix(iat1, iat2, r_index.x, r_index.y, r_index.z); + + if (full_HlocR == nullptr || HlocR == nullptr) + ModuleBase::WARNING_QUIT("ModuleIO::add_HR", "HR cannot be nullptr!"); + + for (int i = 0; i < atom_ij.get_row_size(); ++i) + { + for (int j = 0; j < atom_ij.get_col_size(); ++j) + { + Tadd v = HlocR->get_value(i, j); + full_HlocR->add_element(i, j, Tfull(v)); + } + } + } + } + + ModuleBase::timer::tick("ModuleIO", "add_HR"); +} + +// for molecule, if vacuum size is small, the number of R of Hs is smaller than SR +// which may lead to some errors +template +void ModuleIO::cal_velocity_basis_k(const UnitCell& ucell, + const LCAO_Orbitals& orb, + const Parallel_Orbitals* pv, + const K_Vectors& kv, + const ModuleBase::Vector3*>& rR, + const hamilt::HContainer& sR, + const hamilt::HContainer>& hR, + std::vector*>>& velocity_basis_k) +{ + ModuleBase::TITLE("ModuleIO", "cal_velocity_basis_k"); + ModuleBase::timer::tick("ModuleIO", "cal_velocity_basis_k"); +#ifdef __MPI + const int nlocal = PARAM.globalv.nlocal; + const char N_char = 'N'; + const std::complex one_imag = ModuleBase::IMAG_UNIT; + const std::complex neg_one_imag = ModuleBase::NEG_IMAG_UNIT; + const std::complex one_real = ModuleBase::ONE; + const std::complex neg_one_real = ModuleBase::NEG_ONE; + const std::complex zero_complex = ModuleBase::ZERO; + std::cout<nloc<* hk = new std::complex[pv->nloc]; + std::complex* sk = new std::complex[pv->nloc]; + std::complex* partial_hk = new std::complex[pv->nloc]; + std::complex* partial_sk = new std::complex[pv->nloc]; + std::complex* rk = new std::complex[pv->nloc]; + std::complex* h_is = new std::complex[pv->nloc]; + std::complex* h_is_r = new std::complex[pv->nloc]; + std::complex* r_is = new std::complex[pv->nloc]; + std::complex* r_is_h = new std::complex[pv->nloc]; + std::complex* h_is_ps = new std::complex[pv->nloc]; + + // for (size_t i_alpha = 0; i_alpha != 3; ++i_alpha) + // { + // for (int i = 0; i < hR.size_atom_pairs(); ++i) + // { + // hamilt::AtomPair& tmp = rR[i_alpha]->get_atom_pair(i); + // std::cout<<"cal_velocity_basis_k: "<size_atom_pairs()<<" R_size: + // "< r_index = tmp.get_R_index(ir); + // std::cout<<"r_index: "<nloc); + const int nrow = pv->get_row_size(); + if (elecstate::H_TDDFT_pw::stype == 2) + module_rt::folding_HR_td(ucell, hR, hk, kv.kvec_d[ik], TD_info::cart_At, nrow, 1); + else + hamilt::folding_HR(hR, hk, kv.kvec_d[ik], nrow, 1); + // 1.2 set S(k) + ModuleBase::GlobalFunc::ZEROS(sk, pv->nloc); + if (elecstate::H_TDDFT_pw::stype == 2) + module_rt::folding_HR_td(ucell, sR, sk, kv.kvec_d[ik], TD_info::cart_At, nrow, 1); + else + hamilt::folding_HR(sR, sk, kv.kvec_d[ik], nrow, 1); + // for (int ir = 0; ir < pv->nrow; ir++) + // { + // const int iwt1 = pv->local2global_row(ir); + // const int iat1 = GlobalC::ucell.iwt2iat[iwt1]; + // for (int ic = 0; ic < pv->ncol; ic++) + // { + // const int iwt2 = pv->local2global_col(ic); + // const int iat2 = GlobalC::ucell.iwt2iat[iwt2]; + // const int irc = ic * pv->nrow + ir; + // std::cout << "ik: " << ik << " iat1:" << iat1 << " iat2:" << iat2 << " iwt1: " << iwt1 + // << " iwt2: " << iwt2 << " hk: " << hk[irc] << std::endl; + // } + // } + // 2. set inverse S(k) -> sk will be changed to sk_inv + int* ipiv = new int[pv->nloc]; + int info = 0; + // 2.1 compute ipiv + ScalapackConnector::getrf(nlocal, nlocal, sk, 1, 1, pv->desc, ipiv, &info); + int lwork = -1; + int liwotk = -1; + std::vector> work(1, 0); + std::vector iwork(1, 0); + // 2.2 compute work + ScalapackConnector::getri(nlocal, sk, 1, 1, pv->desc, ipiv, work.data(), &lwork, iwork.data(), &liwotk, &info); + lwork = work[0].real(); + work.resize(lwork, 0); + liwotk = iwork[0]; + iwork.resize(liwotk, 0); + // 2.3 compute inverse matrix of Sk + ScalapackConnector::getri(nlocal, + sk, // return sk^-1 + 1, + 1, + pv->desc, + ipiv, + work.data(), + &lwork, + iwork.data(), + &liwotk, + &info); + delete[] ipiv; + assert(0 == info); + for (size_t i_alpha = 0; i_alpha != 3; ++i_alpha) + { + // 3. set partial_H(k), partial_S(k) and r(k) + // 3.1 set partial_H(k) + ModuleBase::GlobalFunc::ZEROS(partial_hk, pv->nloc); + if (elecstate::H_TDDFT_pw::stype == 2) + module_rt::folding_partial_HR_td(ucell, hR, partial_hk, kv.kvec_d[ik], TD_info::cart_At, i_alpha, nrow, 1); + else + module_rt::folding_partial_HR(ucell, hR, partial_hk, kv.kvec_d[ik], i_alpha, nrow, 1); + // 3.2 set partial S(k) + ModuleBase::GlobalFunc::ZEROS(partial_sk, pv->nloc); + if (elecstate::H_TDDFT_pw::stype == 2) + module_rt::folding_partial_HR_td(ucell, sR, partial_sk, kv.kvec_d[ik], TD_info::cart_At, i_alpha, nrow, 1); + else + module_rt::folding_partial_HR(ucell, sR, partial_sk, kv.kvec_d[ik], i_alpha, nrow, 1); + // if(i_alpha == 2) + // { + // for(int ir=0;ir< pv->nrow; ir++) + // { + // const int iwt1 = pv->local2global_row(ir); + // const int iat1 = GlobalC::ucell.iwt2iat[iwt1]; + // for(int ic=0;ic< pv->ncol; ic++) + // { + // const int iwt2 = pv->local2global_col(ic); + // const int iat2 = GlobalC::ucell.iwt2iat[iwt2]; + // const int irc=ic*pv->nrow + ir; + // std::cout<<"ik: "<nloc); + // folding_rR(rR[i_alpha], partial_sk, rk, pv, kv.kvec_d[ik], nrow, 1); + if (elecstate::H_TDDFT_pw::stype == 2) + module_rt::folding_HR_td(ucell, *rR[i_alpha], rk, kv.kvec_d[ik], TD_info::cart_At, nrow, 1); + else + hamilt::folding_HR(*rR[i_alpha], rk, kv.kvec_d[ik], nrow, 1); // set r(k) + // if (i_alpha == 2) + // { + // std::cout << "ik: " << ik << " i_alpha: " << i_alpha << std::endl; + // for (int ir = 0; ir < pv->nrow; ir++) + // { + // const int iwt1 = pv->local2global_row(ir); + // const int iat1 = GlobalC::ucell.iwt2iat[iwt1]; + // for (int ic = 0; ic < pv->ncol; ic++) + // { + // const int iwt2 = pv->local2global_col(ic); + // const int iat2 = GlobalC::ucell.iwt2iat[iwt2]; + // const int irc = ic * pv->nrow + ir; + // std::cout << " iat1: " << iat1 << " iat2: " << iat2 << " iw1: " << + // GlobalC::ucell.iwt2iw[iwt1] + // << " iw2: " << GlobalC::ucell.iwt2iw[iwt2] << " rk: " << rk[irc] << std::endl; + // } + // } + // } + // 4. calculate <\vu,k|v_a|\mu,k> = partial_Hk + IMAG_UNIT * (Hk * Sk_inv * rk) - IMAG_UNIT * (rk * Sk_inv * + // Hk) - Hk * Sk_inv * partial_Sk + // 4.1.1 Hk * Sk_inv (note 2.) + ModuleBase::GlobalFunc::ZEROS(h_is, pv->nloc); + ScalapackConnector::gemm(N_char, + N_char, + nlocal, + nlocal, + nlocal, + one_real, + hk, + 1, + 1, + pv->desc, + sk, + 1, + 1, + pv->desc, + zero_complex, + h_is, + 1, + 1, + pv->desc); + // 4.1.2 (Hk * Sk_inv) * rk + ModuleBase::GlobalFunc::ZEROS(h_is_r, pv->nloc); + ScalapackConnector::gemm(N_char, + N_char, + nlocal, + nlocal, + nlocal, + one_real, + h_is, + 1, + 1, + pv->desc, + rk, + 1, + 1, + pv->desc, + zero_complex, + h_is_r, + 1, + 1, + pv->desc); + // 4.2.1 rk * Sk_inv (note 2.) + ModuleBase::GlobalFunc::ZEROS(r_is, pv->nloc); + ScalapackConnector::gemm(N_char, + N_char, + nlocal, + nlocal, + nlocal, + one_real, + rk, + 1, + 1, + pv->desc, + sk, + 1, + 1, + pv->desc, + zero_complex, + r_is, + 1, + 1, + pv->desc); + // 4.2.2 (rk * Sk_inv) * Hk + ModuleBase::GlobalFunc::ZEROS(r_is_h, pv->nloc); + ScalapackConnector::gemm(N_char, + N_char, + nlocal, + nlocal, + nlocal, + one_real, + r_is, + 1, + 1, + pv->desc, + hk, + 1, + 1, + pv->desc, + zero_complex, + r_is_h, + 1, + 1, + pv->desc); + // 4.3.1 (Hk * Sk_inv) * partial_Sk + ModuleBase::GlobalFunc::ZEROS(h_is_ps, pv->nloc); + ScalapackConnector::gemm(N_char, + N_char, + nlocal, + nlocal, + nlocal, + one_real, + h_is, + 1, + 1, + pv->desc, + partial_sk, + 1, + 1, + pv->desc, + zero_complex, + h_is_ps, + 1, + 1, + pv->desc); + // 4.4 h_is_r will be changed to partial_Hk + IMAG_UNIT * (Hk * Sk_inv * rk) + ScalapackConnector::geadd('N', + nlocal, + nlocal, + one_real, + partial_hk, + 1, + 1, + pv->desc, + one_imag, + h_is_r, + 1, + 1, + pv->desc); + // 4.5 r_is_h will be changed to h_is_r - IMAG_UNIT * (rk * Sk_inv * Hk) + ScalapackConnector::geadd('N', + nlocal, + nlocal, + one_real, + h_is_r, + 1, + 1, + pv->desc, + neg_one_imag, + r_is_h, + 1, + 1, + pv->desc); + // 4.6 h_is_ps will be changed to r_is_h - Hk * Sk_inv * partial_Sk + ScalapackConnector::geadd('N', + nlocal, + nlocal, + one_real, + r_is_h, + 1, + 1, + pv->desc, + neg_one_real, + h_is_ps, + 1, + 1, + pv->desc); + // 5. copy h_is_ps to velocity_basis_k[ik][i_alpha] + BlasConnector::copy(pv->nloc, h_is_ps, 1, velocity_basis_k[ik][i_alpha], 1); + // if(i_alpha == 2) + // { + // for(int ir=0;ir< pv->nrow; ir++) + // { + // const int iwt1 = pv->local2global_row(ir); + // const int iat1 = GlobalC::ucell.iwt2iat[iwt1]; + // for(int ic=0;ic< pv->ncol; ic++) + // { + // const int iwt2 = pv->local2global_col(ic); + // const int iat2 = GlobalC::ucell.iwt2iat[iwt2]; + // const int irc=ic*pv->nrow + ir; + // std::cout<<"ik: "<>* psi, + const Parallel_Orbitals* pv, + const K_Vectors& kv, + const std::vector*>>& velocity_basis_k, + std::vector>& velocity_k) +{ + ModuleBase::TITLE("ModuleIO", "cal_velocity_matrix"); + ModuleBase::timer::tick("ModuleIO", "cal_velocity_matrix"); +#ifdef __MPI + const char N_char = 'N'; + const char C_char = 'C'; + const std::complex one_real = ModuleBase::ONE; + const std::complex zero_complex = ModuleBase::ZERO; + const double zero_double = 0.0; + const int nlocal = PARAM.globalv.nlocal; + const int nbands = PARAM.inp.nbands; + std::complex* vk_c = new std::complex[pv->ncol_bands * pv->nrow_bands]; // local one + std::complex* v_c = new std::complex[pv->nloc_wfc]; + + for (int ik = 0; ik < kv.get_nks(); ik++) + { + // 1. set C + psi->fix_k(ik); + // 2. set <\Psi_{n,\mu}|v_{\mu,\nu}|\Psi_{m,\nu}> = C^\dagger_{n,\mu} * v_{\mu,\nu} * C_{\nu,m} + for (size_t i_alpha = 0; i_alpha != 3; ++i_alpha) + { + ModuleBase::GlobalFunc::ZEROS(vk_c, pv->ncol_bands * pv->nrow_bands); + ModuleBase::GlobalFunc::ZEROS(v_c, pv->nloc_wfc); + // v_c_{\mu,m} = v_{\mu,\nu} * C_{\nu,m} + ScalapackConnector::gemm(N_char, + N_char, + nlocal, + nbands, + nlocal, + one_real, + velocity_basis_k[ik][i_alpha], + 1, + 1, + pv->desc, + psi[0].get_pointer(), + 1, + 1, + pv->desc_wfc, + zero_complex, + v_c, + 1, + 1, + pv->desc_wfc); + // velocity_k_{n,m} = C^\dagger_{n,\mu} * v_c_{\mu,m} + ScalapackConnector::gemm(C_char, + N_char, + nbands, + nbands, + nlocal, + one_real, + psi[0].get_pointer(), + 1, + 1, + pv->desc_wfc, + v_c, + 1, + 1, + pv->desc_wfc, + zero_complex, + vk_c, + 1, + 1, + pv->desc_Eij); + + for (int ir = 0; ir < PARAM.inp.nbands; ++ir) + { + // const int iwt1 = pv->local2global_row(ir); + // const int iat1 = GlobalC::ucell.iwt2iat[iwt1]; + for (int ic = 0; ic < PARAM.inp.nbands; ++ic) + { + const int irc = ic * pv->nrow + ir; + if (pv->in_this_processor(ir, ic)) + { + // const int iwt2 = pv->local2global_col(ic); + // const int iat2 = GlobalC::ucell.iwt2iat[iwt2]; + velocity_k[ik][i_alpha](ir, ic) = vk_c[irc]; + // if (i_alpha == 0) + // { + // std::cout<<"ik: "< +void ModuleIO::cal_current_comm_k(const UnitCell& ucell, + const Grid_Driver& GridD, + const LCAO_Orbitals& orb, + const Parallel_Orbitals* pv, + const K_Vectors& kv, + cal_r_overlap_R& r_calculator, + const hamilt::HContainer& sR, + const hamilt::HContainer>& hR, + const psi::Psi>* psi, + const elecstate::ElecState* pelec, + std::vector>& current_k) +{ + ModuleBase::TITLE("ModuleIO", "cal_current_exx"); + ModuleBase::timer::tick("ModuleIO", "cal_current_exx"); + + const int nlocal = PARAM.globalv.nlocal; + const int nbands = PARAM.inp.nbands; + // init + ModuleBase::Vector3*> rR(nullptr, nullptr, nullptr); + std::vector*>> velocity_basis_k; + std::vector> velocity_k; + velocity_basis_k.resize(kv.get_nks()); + velocity_k.resize(kv.get_nks()); + for (size_t i_alpha = 0; i_alpha != 3; ++i_alpha) + { + rR[i_alpha] = new hamilt::HContainer(pv); + for (int ik = 0; ik < kv.get_nks(); ik++) + { + velocity_basis_k[ik][i_alpha] = new std::complex[pv->nloc]; + ModuleBase::GlobalFunc::ZEROS(velocity_basis_k[ik][i_alpha], pv->nloc); + velocity_k[ik][i_alpha].create(nbands, nbands); + } + } + // set rR + set_rR_from_hR(ucell, GridD, orb, pv, r_calculator, &hR, rR); + // set velocity_basis_k + cal_velocity_basis_k(ucell, orb, pv, kv, rR, sR, hR, velocity_basis_k); + // set velocity_k + cal_velocity_matrix(psi, pv, kv, velocity_basis_k, velocity_k); + + // sum n and m for current_k + for (size_t ik = 0; ik != kv.get_nks(); ++ik) + for (size_t i_alpha = 0; i_alpha != 3; ++i_alpha) + { + for (size_t ib = 0; ib != PARAM.inp.nbands; ++ib) + current_k[ik][i_alpha] -= pelec->wg(ik, ib) * velocity_k[ik][i_alpha](ib, ib).real() / 2.0; // for unit + } + for (size_t i_alpha = 0; i_alpha < 3; ++i_alpha) + { + delete rR[i_alpha]; + for (int ik = 0; ik < kv.get_nks(); ik++) + delete[] velocity_basis_k[ik][i_alpha]; + } + + ModuleBase::TITLE("ModuleIO", "cal_current_exx"); +} +template +void ModuleIO::write_current( + const UnitCell& ucell, + const Grid_Driver& GridD, + const int istep, + const psi::Psi>* psi, + const elecstate::ElecState* pelec, + const K_Vectors& kv, + const Parallel_Orbitals* pv, + const LCAO_Orbitals& orb, + cal_r_overlap_R& r_calculator, + const hamilt::HContainer* sR, + const hamilt::HContainer* hR, + const Exx_NAO>& exx_nao +) +{ + ModuleBase::TITLE("ModuleIO", "write_current"); + ModuleBase::timer::tick("ModuleIO", "write_current"); + double omega = ucell.omega; + + std::vector> current_k; + hamilt::HContainer>* full_hR; + full_hR = new hamilt::HContainer>(pv); + current_k.resize(kv.get_nks()); + sum_HR(ucell, *pv, kv, hR, full_hR, exx_nao); + cal_current_comm_k(ucell, GridD, orb, pv, kv, r_calculator, *sR, *full_hR, psi, pelec, current_k); + delete full_hR; + + int nspin0 = 1; + if (PARAM.inp.nspin == 2) + { + nspin0 = 2; + } + for (int is = 0; is < nspin0; ++is) + { + for (int ik = 0; ik < kv.get_nks(); ik++) + { + if (is == kv.isk[ik]) + { + if (GlobalV::MY_RANK == 0 && TD_info::out_current_k) + { + std::string filename = PARAM.globalv.global_out_dir + "currents" + std::to_string(is) + + "k" + std::to_string(ik) + "comm.txt"; + std::ofstream fout; + fout.open(filename, std::ios::app); + fout << std::setprecision(16); + fout << std::scientific; + fout << istep << " " << current_k[ik][0] / omega << " " << current_k[ik][1] / omega << " " + << current_k[ik][2] / omega << std::endl; + fout.close(); + } + } + } + } + + ModuleBase::Vector3 current_total; + for (int dir = 0; dir < 3; dir++) + for (int ik = 0; ik < kv.get_nks(); ik++) + current_total[dir] += current_k[ik][dir]; + if (GlobalV::MY_RANK == 0) + { + std::string filename = PARAM.globalv.global_out_dir + "current_tot_comm.txt"; + std::ofstream fout; + fout.open(filename, std::ios::app); + fout << std::setprecision(16); + fout << std::scientific; + fout << istep << " " << current_total[0] / omega << " " << current_total[1] / omega << " " + << current_total[2] / omega << std::endl; + fout.close(); + } + + ModuleBase::timer::tick("ModuleIO", "write_current"); +} +template +void ModuleIO::write_current( + const UnitCell& ucell, + const Grid_Driver& GridD, + const int istep, + const psi::Psi>* psi, + const elecstate::ElecState* pelec, + const K_Vectors& kv, + const Parallel_Orbitals* pv, + const LCAO_Orbitals& orb, + cal_r_overlap_R& r_calculator, + const hamilt::HContainer* sR, + const hamilt::HContainer* hR, + const Exx_NAO>& exx_nao +); + +template +void ModuleIO::write_current>( + const UnitCell& ucell, + const Grid_Driver& GridD, + const int istep, + const psi::Psi>* psi, + const elecstate::ElecState* pelec, + const K_Vectors& kv, + const Parallel_Orbitals* pv, + const LCAO_Orbitals& orb, + cal_r_overlap_R& r_calculator, + const hamilt::HContainer>* sR, + const hamilt::HContainer>* hR, + const Exx_NAO>& exx_nao +); +#endif //__LCAO diff --git a/source/source_io/dipole_io.h b/source/source_io/module_dipole/dipole_io.h similarity index 100% rename from source/source_io/dipole_io.h rename to source/source_io/module_dipole/dipole_io.h diff --git a/source/source_io/write_dipole.cpp b/source/source_io/module_dipole/write_dipole.cpp similarity index 92% rename from source/source_io/write_dipole.cpp rename to source/source_io/module_dipole/write_dipole.cpp index b10a754f44..56448365bf 100644 --- a/source/source_io/write_dipole.cpp +++ b/source/source_io/module_dipole/write_dipole.cpp @@ -1,8 +1,7 @@ #include "source_base/parallel_reduce.h" #include "source_estate/module_charge/charge.h" -#include "source_io/dipole_io.h" +#include "source_io/module_dipole/dipole_io.h" #include "source_lcao/module_rt/evolve_elec.h" -#include "source_pw/module_pwdft/global.h" // fuxiang add 2017-03-15 void ModuleIO::write_dipole(const UnitCell& ucell, @@ -37,9 +36,9 @@ void ModuleIO::write_dipole(const UnitCell& ucell, #ifndef __MPI double dipole_elec_x = 0.0, dipole_elec_y = 0.0, dipole_elec_z = 0.0; - double lat_factor_x = ucell.lat0 * 0.529177 / rhopw->nx; - double lat_factor_y = ucell.lat0 * 0.529177 / rhopw->ny; - double lat_factor_z = ucell.lat0 * 0.529177 / rhopw->nz; + double lat_factor_x = ucell.lat0 * ModuleBase::BOHR_TO_A / rhopw->nx; + double lat_factor_y = ucell.lat0 * ModuleBase::BOHR_TO_A / rhopw->ny; + double lat_factor_z = ucell.lat0 * ModuleBase::BOHR_TO_A / rhopw->nz; for (int k = 0; k < rhopw->nz; k++) { @@ -64,7 +63,7 @@ void ModuleIO::write_dipole(const UnitCell& ucell, Parallel_Reduce::reduce_pool(dipole_elec_y); Parallel_Reduce::reduce_pool(dipole_elec_z); - ofs << istep << " " << dipole_elec_x << " " << dipole_elec_y << dipole_elec_z; + ofs << istep+1 << " " << dipole_elec_x << " " << dipole_elec_y << dipole_elec_z; #else double dipole_elec[3] = {0.0, 0.0, 0.0}; @@ -95,7 +94,7 @@ void ModuleIO::write_dipole(const UnitCell& ucell, ModuleBase::GlobalFunc::OUT(GlobalV::ofs_running, "Electronic dipole moment P_elec_y(t)", dipole_elec[1]); ModuleBase::GlobalFunc::OUT(GlobalV::ofs_running, "Electronic dipole moment P_elec_z(t)", dipole_elec[2]); - ofs << std::setprecision(precision) << istep << " " << dipole_elec[0] << " " << dipole_elec[1] << " " + ofs << std::setprecision(precision) << istep+1 << " " << dipole_elec[0] << " " << dipole_elec[1] << " " << dipole_elec[2] << std::endl; double dipole_ion[3] = {0.0}; diff --git a/source/source_io/module_dm/test/write_dmk_test.cpp b/source/source_io/module_dm/test/write_dmk_test.cpp new file mode 100644 index 0000000000..e0edb2cb41 --- /dev/null +++ b/source/source_io/module_dm/test/write_dmk_test.cpp @@ -0,0 +1,310 @@ +#include "source_io/module_dm/write_dmk.h" + +#define private public +#include "source_io/module_parameter/parameter.h" +#undef private +#include "source_base/global_variable.h" +#include "../../test/prepare_unitcell.h" + +#include "gmock/gmock.h" +#include "gtest/gtest.h" +#include "source_base/module_external/scalapack_connector.h" + +#ifdef __MPI +#include "mpi.h" +#endif + +#ifdef __LCAO +InfoNonlocal::InfoNonlocal() {} +InfoNonlocal::~InfoNonlocal() {} +LCAO_Orbitals::LCAO_Orbitals() {} +LCAO_Orbitals::~LCAO_Orbitals() {} +#endif +Magnetism::Magnetism() { + this->tot_mag = 0.0; + this->abs_mag = 0.0; + this->start_mag = nullptr; +} +Magnetism::~Magnetism() { delete[] this->start_mag; } + +/************************************************ + * unit test of read_dmk and write_dmk + ***********************************************/ + +/** + * - Tested Functions: + * - read_dmk() + * - the function to read density matrix K from file + * - the serial version without MPI + * - write_dmk() + * - the function to write density matrix K to file + * - the serial version without MPI + */ + +void init_pv(int nlocal, Parallel_2D& pv) +{ +#ifdef __MPI + pv.init(nlocal, nlocal, 1, MPI_COMM_WORLD); +#else + pv.set_serial(nlocal, nlocal); +#endif +} + +template +void gen_dmk(std::vector>& dmk, std::vector& efs, int nspin, int nk, int nlocal, Parallel_2D& pv) +{ + int myrank = 0; +#ifdef __MPI + MPI_Comm_rank(MPI_COMM_WORLD, &myrank); +#endif + std::vector> dmk_global(nspin * nk, std::vector(nlocal * nlocal, T(0.0))); + if (myrank == 0) + { + for (int i = 0; i < nspin * nk; i++) + { + for (int j = 0; j < nlocal * nlocal; j++) + { + std::complex value = std::complex(1.0 * i + 0.1 * j, 0.1 * i + 1.0 * j); + dmk_global[i][j] = reinterpret_cast(&value)[0]; + } + } + } +#ifdef __MPI + Parallel_2D pv_global; + pv_global.init(nlocal, nlocal, nlocal, MPI_COMM_WORLD); + dmk.resize(nspin * nk, std::vector(pv.get_local_size(), 0.0)); + for (int i = 0; i < nspin * nk; i++) + { + Cpxgemr2d(nlocal, + nlocal, + dmk_global[i].data(), + 1, + 1, + pv_global.desc, + dmk[i].data(), + 1, + 1, + pv.desc, + pv.blacs_ctxt); + } +#else + dmk = dmk_global; +#endif + + efs.resize(nspin, 0.0); + for (int i = 0; i < nspin; i++) + { + efs[i] = 0.1 * i; + } +} + + +TEST(DMKTest, GenFileName) { + bool gamma_only = true; + int ispin = 0; + int nspin = 2; + int ik = 0; + int istep = 0; + std::string fname = ModuleIO::dmk_gen_fname(gamma_only, ispin, nspin, ik, istep); + EXPECT_EQ(fname, "dms1g1_nao.txt"); + + ispin = 1; + + fname = ModuleIO::dmk_gen_fname(gamma_only, ispin, nspin, ik, istep); + EXPECT_EQ(fname, "dms2g1_nao.txt"); + + ispin = 0; + gamma_only = false; + + fname = ModuleIO::dmk_gen_fname(gamma_only, ispin, nspin, ik, istep); + EXPECT_EQ(fname, "dmk1s1g1_nao.txt"); + + ispin = 1; + ik = 1; + + fname = ModuleIO::dmk_gen_fname(gamma_only, ispin, nspin, ik, istep); + EXPECT_EQ(fname, "dmk2s2g1_nao.txt"); +}; + + +TEST(DMKTest,WriteDMK) { + UnitCell* ucell; + UcellTestPrepare utp = UcellTestLib["Si"]; + ucell = utp.SetUcellInfo(); + + int nspin = 2; + int nk = 1; + int nk_multik = 2; + int nlocal = 20; + std::vector> dmk; + std::vector>> dmk_multik; + Parallel_2D pv; + std::vector efs; + init_pv(nlocal, pv); + + gen_dmk(dmk, efs, nspin, nk, nlocal, pv); + gen_dmk(dmk_multik, efs, nspin, nk_multik, nlocal, pv); + PARAM.sys.global_out_dir = "./"; + + const int istep = -1; + K_Vectors kv; + kv.set_nkstot(1); + kv.set_nkstot_full(1); + kv.set_nks(1); + kv.set_nspin(2); + kv.kvec_c.resize(1); + kv.kvec_c[0].x = 0.0; + kv.kvec_c[0].y = 0.0; + kv.kvec_c[0].z = 0.0; + kv.kvec_d.resize(1); + kv.kvec_d[0].x = 0.0; + kv.kvec_d[0].y = 0.0; + kv.kvec_d[0].z = 0.0; + kv.wk.resize(1); + kv.wk[0] = 1.0; + kv.isk.resize(1); + kv.isk[0] = 0; + kv.kc_done = true; + kv.kd_done = true; + + ModuleIO::write_dmk(dmk, kv, 3, efs, ucell, pv, istep); + ModuleIO::write_dmk(dmk_multik, kv, 3, efs, ucell, pv, istep); + + std::ifstream ifs; + + int pass = 0; + if (GlobalV::MY_RANK == 0) + { + std::string fn = "dms1_nao.txt"; + ifs.open(fn); + std::string str((std::istreambuf_iterator(ifs)), + std::istreambuf_iterator()); + EXPECT_THAT(str, testing::HasSubstr("0 # Fermi energy in Ry")); + EXPECT_THAT(str, testing::HasSubstr("20 # number of localized basis")); + ifs.close(); + + fn = "dms2_nao.txt"; + ifs.open(fn); + str = std::string((std::istreambuf_iterator(ifs)), + std::istreambuf_iterator()); + EXPECT_THAT(str, testing::HasSubstr("0.1 # Fermi energy in Ry")); + EXPECT_THAT(str, testing::HasSubstr("20 # number of localized basis")); + ifs.close(); + + fn = "dmk1s1_nao.txt"; + ifs.open(fn); + str = std::string((std::istreambuf_iterator(ifs)), + std::istreambuf_iterator()); + EXPECT_THAT(str, testing::HasSubstr("0 # Fermi energy in Ry")); + EXPECT_THAT(str, testing::HasSubstr("20 # number of localized basis")); + ifs.close(); + + fn = "dmk2s1_nao.txt"; + ifs.open(fn); + str = std::string((std::istreambuf_iterator(ifs)), + std::istreambuf_iterator()); + EXPECT_THAT(str, testing::HasSubstr("0 # Fermi energy in Ry")); + EXPECT_THAT(str, testing::HasSubstr("20 # number of localized basis")); + ifs.close(); + + fn = "dmk1s2_nao.txt"; + ifs.open(fn); + str = std::string((std::istreambuf_iterator(ifs)), + std::istreambuf_iterator()); + EXPECT_THAT(str, testing::HasSubstr("0.1 # Fermi energy in Ry")); + EXPECT_THAT(str, testing::HasSubstr("20 # number of localized basis")); + ifs.close(); + + fn = "dmk2s2_nao.txt"; + ifs.open(fn); + str = std::string((std::istreambuf_iterator(ifs)), + std::istreambuf_iterator()); + EXPECT_THAT(str, testing::HasSubstr("0.1 # Fermi energy in Ry")); + EXPECT_THAT(str, testing::HasSubstr("20 # number of localized basis")); + ifs.close(); + remove("dms1_nao.txt"); + remove("dms2_nao.txt"); + remove("dmk1s1_nao.txt"); + remove("dmk2s1_nao.txt"); + remove("dmk1s2_nao.txt"); + remove("dmk2s2_nao.txt"); + } + + delete ucell; + // remove the generated files + +}; + +/* +// no function in the main code calls read_dmk??? mohan note 2025-05-25 +TEST(DMKTest, ReadDMK) { + int nlocal = 26; + std::vector> dmk; + std::vector>> dmk_multik; + Parallel_2D pv; + std::vector efs; + PARAM.sys.global_out_dir = "./"; + + init_pv(nlocal, pv); + + std::ofstream ofs_running("running_log.txt"); + + GlobalV::ofs_warning.open("warning.log"); + + K_Vectors kv; + kv.set_nkstot(1); + kv.set_nks(1); + kv.kvec_c.resize(1); + kv.kvec_c[0].x = 0.0; + kv.kvec_c[0].y = 0.0; + kv.kvec_c[0].z = 0.0; + EXPECT_TRUE(ModuleIO::read_dmk(1, 1, kv, pv, "./support/", dmk, ofs_running)); + ModuleIO::read_dmk(1, 1, kv, pv, "./support/", dmk_multik, ofs_running); + EXPECT_TRUE(ModuleIO::read_dmk(1, 1, kv, pv, "./support/", dmk_multik, ofs_running)); + EXPECT_EQ(dmk.size(), 1); + EXPECT_EQ(dmk_multik.size(), 1); + EXPECT_EQ(dmk[0].size(), pv.get_local_size()); + EXPECT_EQ(dmk_multik[0].size(), pv.get_local_size()); + if (GlobalV::MY_RANK == 0) + { + EXPECT_NEAR(dmk[0][0], 3.904e-01, 1e-6); + EXPECT_NEAR(dmk_multik[0][1].real(), -4.479e-03, 1e-6); + EXPECT_NEAR(dmk_multik[0][1].imag(), 3.208e-04, 1e-6); + } + + ofs_running.close(); + GlobalV::ofs_warning.close(); + remove("running_log.txt"); + remove("warning.log"); +} +*/ + + +#ifdef __MPI +int main(int argc, char** argv) +{ + GlobalV::MY_RANK = 0; + + MPI_Init(&argc, &argv); + MPI_Comm_size(MPI_COMM_WORLD, &GlobalV::NPROC); + MPI_Comm_rank(MPI_COMM_WORLD, &GlobalV::MY_RANK); + + testing::InitGoogleTest(&argc, argv); + ::testing::TestEventListeners& listeners = ::testing::UnitTest::GetInstance()->listeners(); + + if (GlobalV::MY_RANK != 0) { + delete listeners.Release(listeners.default_result_printer()); + } + + int result = RUN_ALL_TESTS(); + MPI_Bcast(&result, 1, MPI_INT, 0, MPI_COMM_WORLD); + + if (GlobalV::MY_RANK == 0 && result != 0) + { + std::cout << "ERROR:some tests are not passed" << std::endl; + } + + MPI_Finalize(); + return result; +} +#endif diff --git a/source/source_io/module_dm/write_dmk.cpp b/source/source_io/module_dm/write_dmk.cpp new file mode 100644 index 0000000000..3e454737a9 --- /dev/null +++ b/source/source_io/module_dm/write_dmk.cpp @@ -0,0 +1,354 @@ +#include "source_io/module_dm/write_dmk.h" + +#include "source_base/parallel_common.h" +#include "source_base/module_external/scalapack_connector.h" +#include "source_base/timer.h" +#include "source_io/module_parameter/parameter.h" +#include "source_io/module_output/ucell_io.h" + +std::string ModuleIO::dmk_gen_fname(const bool gamma_only, const int ispin, const int nspin, const int ik, const int istep) +{ + // set istep = -1 if you don't want the 'g' index appears in the file name + assert(istep>=-1); + + // ik should be the correct one + + std::string fname = "dm"; + + if (!gamma_only) + { + fname += "k" + std::to_string(ik + 1); + } + + if (nspin == 2) + { + fname += "s" + std::to_string(ispin + 1); + } + + if( istep >= 0 ) + { + fname += "g" + std::to_string(istep + 1); + } + + fname += "_nao.txt"; + + return fname; +} + + + +void ModuleIO::dmk_readData(std::ifstream& ifs, double& data) +{ + ifs >> data; +} + +void ModuleIO::dmk_readData(std::ifstream& ifs, std::complex& data) +{ + std::string complex_str; + ifs >> complex_str; + + size_t comma_pos = complex_str.find(','); + if (complex_str.front() == '(' && complex_str.back() == ')' && comma_pos != std::string::npos) + { + double real = std::stod(complex_str.substr(1, comma_pos - 1)); + double imag = std::stod(complex_str.substr(comma_pos + 1, complex_str.size() - comma_pos - 2)); + data = std::complex(real, imag); + } + else + { + ModuleBase::WARNING_QUIT("ModuleIO::dmk_readData", + "Invalid complex number format in dmk: " + complex_str); + } +} + +template +bool ModuleIO::read_dmk(const int nspin, + const int nk, + const K_Vectors &kv, + const Parallel_2D& pv, + const std::string& dmk_dir, + std::vector>& dmk, + std::ofstream &ofs_running) +{ + ModuleBase::TITLE("ModuleIO", "read_dmk"); + ModuleBase::timer::tick("ModuleIO", "read_dmk"); + + int my_rank = 0; +#ifdef __MPI + MPI_Comm_rank(pv.comm(), &my_rank); +#endif + + int nlocal = pv.get_global_row_size(); + bool gamma_only = std::is_same::value; + std::vector> dmk_global(nspin * nk, std::vector(nlocal * nlocal, 0)); + + bool read_success = true; + std::string tmp; + if (my_rank == 0) + { + for (int ispin = 0; ispin < nspin; ispin++) + { + for (int ik = 0; ik < nk; ik++) + { + // to read density matrix in k space, remember to delete the step information 'g' + // set istep = -1 if you don't want the 'g' index appears in the file name + const int istep = -1; + std::string fn = dmk_dir + dmk_gen_fname(gamma_only, ispin, nspin, ik, istep); + std::ifstream ifs(fn.c_str()); + + if (!ifs) + { + ofs_running << " Cannot find density matrix file " << fn << " for k-point " << ik+1 << std::endl; + ModuleBase::WARNING("ModuleIO::read_dmk", "Can't open density matrix (k) file < " + fn + " >."); + read_success = false; + break; + } + else + { + ofs_running << " Read density matrix file " << fn << " for k-point " << ik+1 << std::endl; + } + + int spin_tmp = 0; + ModuleBase::GlobalFunc::READ_VALUE(ifs, spin_tmp); + + double fermi_tmp = 0.0; + ModuleBase::GlobalFunc::READ_VALUE(ifs, fermi_tmp); + + int nlocal_tmp = 0; + ModuleBase::GlobalFunc::READ_VALUE(ifs, nlocal_tmp); + + if(nlocal_tmp==nlocal) + { + ofs_running << " number of basis (nlocal) is correct: " << nlocal << std::endl; + } + else + { + ModuleBase::WARNING_QUIT("ModuleIO::read_dmk","nlocal does not match!"); + } + + // read the DMK data + const size_t index_k = ik + nk * ispin; + for (int i = 0; i < nlocal; ++i) + { + const size_t index_i = i * nlocal; + for (int j = 0; j < nlocal; ++j) + { + dmk_readData(ifs, dmk_global[index_k][index_i + j]); + } + } + ifs.close(); + } // ik + if (!read_success) + { + break; + } + } // ispin + } // rank0 + +#ifdef __MPI + MPI_Bcast(&read_success, 1, MPI_C_BOOL, 0, pv.comm()); +#endif + + if (read_success) + { +#ifdef __MPI + // seperate dmk data to each processor with 2D block distribution + dmk.resize(nspin * nk, std::vector(pv.get_row_size() * pv.get_col_size())); + Parallel_2D pv_glb; + pv_glb.set(nlocal, nlocal, nlocal, pv.blacs_ctxt); + for (int ik = 0; ik < nspin * nk; ik++) + { + Cpxgemr2d( + nlocal, + nlocal, + dmk_global[ik].data(), + 1, + 1, + pv_glb.desc, + dmk[ik].data(), + 1, + 1, + const_cast(pv.desc), + pv_glb.blacs_ctxt); + } +#else + dmk = dmk_global; +#endif + } + ModuleBase::timer::tick("ModuleIO", "read_dmk"); + return read_success; +} + +template +void ModuleIO::write_dmk(const std::vector>& dmk, + const K_Vectors &kv, + const int precision, + const std::vector& efs, + const UnitCell* ucell, + const Parallel_2D& pv, + const int istep) +{ + ModuleBase::TITLE("ModuleIO", "write_dmk"); + ModuleBase::timer::tick("ModuleIO", "write_dmk"); + + int my_rank = 0; +#ifdef __MPI + MPI_Comm_rank(pv.comm(), &my_rank); +#endif + + bool gamma_only = std::is_same::value; + const int nlocal = pv.get_global_row_size(); + const int nspin = efs.size(); + assert(nspin > 0); + const int nk = dmk.size() / nspin; + const double dm_thr = 1.0e-16; // mohan set 2025-09-02 + + if (nk * nspin != dmk.size()) + { + ModuleBase::WARNING_QUIT("ModuleIO::write_dmk", "The size of dmk is not consistent with nspin and nk."); + } + + Parallel_2D pv_glb; + + for (int ispin = 0; ispin < nspin; ispin++) + { + for (int ik = 0; ik < nk; ik++) + { + // gather dmk[ik] to dmk_global + std::vector dmk_global(my_rank == 0 ? nlocal * nlocal : 0); +#ifdef __MPI + pv_glb.set(nlocal, nlocal, nlocal, pv.blacs_ctxt); + Cpxgemr2d( + nlocal, + nlocal, + const_cast(dmk[ik + nk * ispin].data()), + 1, + 1, + const_cast(pv.desc), + dmk_global.data(), + 1, + 1, + pv_glb.desc, + pv_glb.blacs_ctxt); +#else + dmk_global = dmk[ik + nk * ispin]; +#endif + + if (my_rank == 0) + { + std::string fn = PARAM.globalv.global_out_dir + + dmk_gen_fname(gamma_only, ispin, nspin, ik, istep); + + std::ofstream ofs(fn.c_str()); + + ofs << " --- Ionic Step " << istep+1 << " ---" << std::endl; + + if (!ofs) + { + ModuleBase::WARNING("ModuleIO::write_dmk", "Can't create DENSITY MATRIX File < " + fn + " >."); + continue; + } + else + { + //std::cout << " Write the density matrix to file " << fn << std::endl; + } + + + // information about density matrix at this k-point + ofs << " " << nspin << " # number of spin directions" << std::endl; + ofs << " " << ispin+1 << " # spin index" << std::endl; + ofs << " " << kv.get_nkstot_full() << " # total k points " << std::endl; + ofs << " " << kv.get_nkstot() << " # total k points after symmetrized (if open) " << std::endl; + ofs << " " << ik+1 << " # k-point index " << std::endl; + ofs << " " << kv.kvec_c[ik].x << " " << kv.kvec_c[ik].y << " " << kv.kvec_c[ik].z + << " # k point coordinate (Cartesian) " << std::endl; + ofs << " " << kv.kvec_d[ik].x << " " << kv.kvec_d[ik].y << " " << kv.kvec_d[ik].z + << " # k point coordinate (direct) " << std::endl; + ofs << " " << kv.wk[ik] << " # weight of this k point" << std::endl; + ofs << " " << efs[ispin] << " # Fermi energy in Ry " << std::endl; + ofs << " " << nlocal << " # number of localized basis " << std::endl; + ofs << " " << nlocal << " " << nlocal << " # size of this matrix " << std::endl; + ofs << std::endl; + + // write ucell + ModuleIO::UcellIO::write_ucell(ofs, ucell); + + ofs << std::fixed; + ofs << std::scientific; + ofs << std::setprecision(precision); + ofs << std::right; + for (int i = 0; i < nlocal; ++i) + { + const size_t ii = i * nlocal; + for (int j = 0; j < nlocal; ++j) + { + if (std::is_same::value) + { + if (j % 8 == 0) + { + ofs << "\n"; + } + ofs << " " << dmk_global[ii + j]; + } + else if (std::is_same, T>::value) + { + if (j % 4 == 0) + { + ofs << "\n"; + } + + double real_v = std::real(dmk_global[ii + j]); + if(std::abs(real_v) < dm_thr) + { + real_v = 0.0; + } + double imag_v = std::imag(dmk_global[ii + j]); + if(std::abs(imag_v) < dm_thr) + { + imag_v = 0.0; + } + + ofs << " (" << real_v << "," << imag_v << ")"; + } + } + } + ofs.close(); + } // rank0 + } // ik + } // ispin + + ModuleBase::timer::tick("ModuleIO", "write_dmk"); +} + +template bool ModuleIO::read_dmk(const int nspin, + const int nk, + const K_Vectors &kv, + const Parallel_2D& pv, + const std::string& dmk_dir, + std::vector>& dmk, + std::ofstream &ofs); + +template bool ModuleIO::read_dmk>(const int nspin, + const int nk, + const K_Vectors &kv, + const Parallel_2D& pv, + const std::string& dmk_dir, + std::vector>>& dmk, + std::ofstream &ofs); + +template void ModuleIO::write_dmk(const std::vector>& dmk, + const K_Vectors &kv, + const int precision, + const std::vector& efs, + const UnitCell* ucell, + const Parallel_2D& pv, + const int istep); + +template void ModuleIO::write_dmk>(const std::vector>>& dmk, + const K_Vectors &kv, + const int precision, + const std::vector& efs, + const UnitCell* ucell, + const Parallel_2D& pv, + const int istep); + diff --git a/source/source_io/module_dm/write_dmk.h b/source/source_io/module_dm/write_dmk.h new file mode 100644 index 0000000000..78a4e5ecce --- /dev/null +++ b/source/source_io/module_dm/write_dmk.h @@ -0,0 +1,81 @@ +#ifndef WRITE_DMK_H +#define WRITE_DMK_H + +#include "source_base/parallel_2d.h" +#include "source_cell/unitcell.h" +#include "source_cell/klist.h" + +#include +#include + +namespace ModuleIO { + +/** + * @brief Generates the filename for the DMK file based on the given parameters. + * + * @param gamma_only Whether the calculation is gamma_only. + * @param ispin The index of the spin component. + * @param ik The index of the k-point. + * @return The generated filename. + */ +std::string dmk_gen_fname(const bool gamma_only, const int ispin, const int nspin, const int ik, const int istep); + +/** + * @brief Read one double from a file. + */ +void dmk_readData(std::ifstream& ifs, double& data); + +/** + * @brief Read one complex double from a file. + */ +void dmk_readData(std::ifstream& ifs, std::complex& data); + +/** + * @brief Reads the DMK data from a file. + * + * @tparam T The type of the DMK data. + * @param nspin The number of spin components. + * @param nk The number of k-points. + * @param k-vector information. + * @param pv The Parallel_2D object. Will get the global size and local size + * from it, and seperate the data into different processors accordingly. + * @param dmk_dir The directory path of the DMK file. + * @param dmk A vector to store the DMK data. If use MPI parallel, the data will + * be seperated into different processors based on the Parallel_2D object. + * @return True if the DMK data is successfully read, false otherwise. + */ +template +bool read_dmk(const int nspin, + const int nk, + const K_Vectors &kv, + const Parallel_2D& pv, + const std::string& dmk_dir, + std::vector>& dmk, + std::ofstream &ofs_running); + +/** + * @brief Writes the DMK data to a file. + * + * @tparam T The type of the DMK data. + * @param dmk A vector containing the DMK data. The first dimension is nspin*nk, + * and the second dimension is nlocal*nlocal. DMK is parallel in 2d-block type + * if using MPI. + * @param k-vector information. + * @param precision The precision of the output of DMK. + * @param efs A vector containing the Fermi energies, and should have the same + * size as the number of SPIN. + * @param ucell A pointer to the UnitCell object. + * @param pv The Parallel_2D object. The 2d-block parallel information of DMK. + */ +template +void write_dmk(const std::vector>& dmk, + const K_Vectors &kv, + const int precision, + const std::vector& efs, + const UnitCell* ucell, + const Parallel_2D& pv, + const int istep); + +} // namespace ModuleIO + +#endif diff --git a/source/source_io/module_dm/write_dmr.cpp b/source/source_io/module_dm/write_dmr.cpp new file mode 100644 index 0000000000..713e5a1188 --- /dev/null +++ b/source/source_io/module_dm/write_dmr.cpp @@ -0,0 +1,118 @@ +#include "write_dmr.h" + +#include "source_io/module_parameter/parameter.h" +#include "source_lcao/module_hcontainer/hcontainer_funcs.h" +#include "source_lcao/module_hcontainer/output_hcontainer.h" +#include "source_io/module_output/ucell_io.h" + +namespace ModuleIO +{ +std::string dmr_gen_fname(const int out_type, const int ispin, const bool append, const int istep) +{ + std::string fname = "dmr.csr"; + if (out_type == 1) + { + if (!append && istep >= 0) + { + // spa stands for sparse + fname = "dmrs" + std::to_string(ispin+1) + "g" + std::to_string(istep + 1) + "_nao.csr"; + } + else + { + fname = "dmrs" + std::to_string(ispin+1) + "_nao.csr"; + } + } + else if (out_type == 2) + { + fname = "dmrs" + std::to_string(ispin+1) + "_nao.npz"; + } + else + { + ModuleBase::WARNING("write_dmr", "the output type of density matrix DM(R) should be csr or npz."); + } + return fname; +} + +void write_dmr_csr(std::string& fname, + const UnitCell *ucell, + const int precision, + hamilt::HContainer* dm_serial, + const int istep, + const int ispin, + const int nspin) +{ + // write the head: ION step number, basis number and R loop number + + std::ofstream ofs; + + // mohan update 2025-05-26 + if(istep<=0) + { + ofs.open(fname); + } + else if(istep>0) + { + ofs.open(fname, std::ios::app); + } + + + ofs << " --- Ionic Step " << istep+1 << " ---" << std::endl; + ofs << " # print density matrix in real space DM(R)" << std::endl; + ofs << " " << nspin << " # number of spin directions" << std::endl; + ofs << " " << ispin+1 << " # spin index" << std::endl; + ofs << " " << dm_serial->get_nbasis() + << " # number of localized basis" << std::endl; + ofs << " " << dm_serial->size_R_loop() + << " # number of Bravais lattice vector R" << std::endl; + ofs << std::endl; + + // write ucell + ModuleIO::UcellIO::write_ucell(ofs, ucell); + ofs << std::endl; + + // write HR_serial to ofs + const double sparse_threshold = 1e-10; + hamilt::Output_HContainer dmr(dm_serial, ofs, sparse_threshold, precision); + dmr.write(); + ofs.close(); +} + +void write_dmr(const std::vector*> dmr, + const UnitCell* ucell, + const int precision, + const Parallel_2D& paraV, + const bool append, + const int* iat2iwt, + const int nat, + const int istep) +{ + const int nspin = dmr.size(); + assert(nspin > 0); + for (int ispin = 0; ispin < nspin; ispin++) + { + const int nbasis = dmr[ispin]->get_nbasis(); + + // gather the parallel matrix to serial matrix +#ifdef __MPI + Parallel_Orbitals serialV; + serialV.init(nbasis, nbasis, nbasis, paraV.comm()); + serialV.set_serial(nbasis, nbasis); + serialV.set_atomic_trace(iat2iwt, nat, nbasis); + hamilt::HContainer dm_serial(&serialV); + hamilt::gatherParallels(*dmr[ispin], &dm_serial, 0); +#else + hamilt::HContainer dm_serial(*dmr[ispin]); +#endif + + if (GlobalV::MY_RANK == 0) + { + // out_type = 1, csr format; + // out_type = 2, npz format (currently not support) + const int out_type = 1; + std::string fname = PARAM.globalv.global_out_dir + dmr_gen_fname(out_type, ispin, append, istep); + write_dmr_csr(fname, ucell, precision, &dm_serial, istep, ispin, nspin); + } + } +} + +} // namespace ModuleIO diff --git a/source/source_io/module_dm/write_dmr.h b/source/source_io/module_dm/write_dmr.h new file mode 100644 index 0000000000..6a2fdf87ba --- /dev/null +++ b/source/source_io/module_dm/write_dmr.h @@ -0,0 +1,68 @@ +#ifndef MODULE_IO_WRITE_DMR_H +#define MODULE_IO_WRITE_DMR_H + +#include "source_basis/module_ao/parallel_orbitals.h" +#include "source_lcao/module_hcontainer/hcontainer.h" +#include "source_cell/unitcell.h" + +#include + +namespace ModuleIO +{ + +/** + * Generates a filename for the DMR output based on the given parameters. + * + * @param out_type The output type. 1: csr, 2: npz. + * @param ispin The spin value, starting from 0. + * @param append A boolean indicating whether append the data to one file or create a new file. + * @param istep The ION step (default: -1), starting from 0. + * @return The generated filename as a string. + */ +std::string dmr_gen_fname(const int out_type, + const int ispin, + const bool append = true, + const int istep = -1); + +/** + * Writes HContainer to a csr file. + * + * @param fname The name of the file to write the CSR representation to. + * @param ucell stands for unitcell + * @param precision Control the ouptut precision + * @param dm_serial A pointer to the Hamiltonian container. + * @param istep The current step number. + */ +void write_dmr_csr(std::string& fname, + const UnitCell *ucell, + const int precision, + hamilt::HContainer* dm_serial, + const int istep, + const int ispin, + const int nspin); + +/** + * Writes DMR to a file. + * + * @param dmr The 2D block parallel matrix representing the density matrix. The first dimension is the spin index. + * @param ucell stands for unitcell + * @param precision Control the output precision + * @param paraV The parallel 2D object. + * @param out_type The output file type. 1: csr, 2: npz. + * @param sparse Whether output the sparse DM. + * @param ispin The spin index, starting from 0. + * @param append Whether to append the data to an existing file or create a new file. The file name is related to this + * flag. + * @param istep The ION step, starting from 0. + */ +void write_dmr(const std::vector*> dmr, + const UnitCell *ucell, + const int precision, + const Parallel_2D& paraV, + const bool append, + const int* iat2iwt, + const int nat, + const int istep); +} // namespace ModuleIO + +#endif diff --git a/source/source_io/cal_dos.cpp b/source/source_io/module_dos/cal_dos.cpp similarity index 94% rename from source/source_io/cal_dos.cpp rename to source/source_io/module_dos/cal_dos.cpp index 78268103e2..2e3e7f869c 100644 --- a/source/source_io/cal_dos.cpp +++ b/source/source_io/module_dos/cal_dos.cpp @@ -7,7 +7,7 @@ #include "source_io/module_parameter/parameter.h" void ModuleIO::prepare_dos(std::ofstream& ofs_running, - const elecstate::efermi &energy_fermi, + const elecstate::Efermi &energy_fermi, const ModuleBase::matrix& ekb, const int nks, const int nbands, @@ -56,8 +56,8 @@ void ModuleIO::prepare_dos(std::ofstream& ofs_running, } #ifdef __MPI - Parallel_Reduce::gather_max_double_all(GlobalV::NPROC, emax); - Parallel_Reduce::gather_min_double_all(GlobalV::NPROC, emin); + Parallel_Reduce::reduce_max(emax); + Parallel_Reduce::reduce_min(emin); #endif emax *= ModuleBase::Ry_to_eV; @@ -90,7 +90,7 @@ void ModuleIO::prepare_dos(std::ofstream& ofs_running, bool ModuleIO::cal_dos(const int& is, // index for spin const std::string& fn, // file name for DOS - const double& de_ev, // delta energy in ev + const double& de_ev, // delta energy in ev const double& emax_ev, // maximal energy in eV const double& emin_ev, // minimal energy in ev. const double& bcoeff, @@ -100,17 +100,24 @@ bool ModuleIO::cal_dos(const int& is, // index for spin const std::vector& isk, // index of spin for each k-point const int& nbands, // number of bands const ModuleBase::matrix& ekb, // energy for each k point and each band - const ModuleBase::matrix& wg // weight of k-points and bands - ) + const ModuleBase::matrix& wg, // weight of k-points and bands + const int istep) // ionic step { ModuleBase::TITLE("ModuleIO", "cal_dos"); std::ofstream ofs_dos; - std::ofstream ofs_smear; if (GlobalV::MY_RANK == 0) { - ofs_dos.open(fn.c_str()); + if(PARAM.inp.out_app_flag==true) + { + ofs_dos.open(fn.c_str(), std::ios::app); + } + else + { + ofs_dos.open(fn.c_str()); + } + ofs_dos << istep+1 << " # ionic step" << std::endl; } std::vector dos; diff --git a/source/source_io/cal_dos.h b/source/source_io/module_dos/cal_dos.h similarity index 78% rename from source/source_io/cal_dos.h rename to source/source_io/module_dos/cal_dos.h index 9df1eb8d0d..c56891f6db 100644 --- a/source/source_io/cal_dos.h +++ b/source/source_io/module_dos/cal_dos.h @@ -9,7 +9,7 @@ namespace ModuleIO { void prepare_dos(std::ofstream& ofs_running, - const elecstate::efermi &energy_fermi, + const elecstate::Efermi &energy_fermi, const ModuleBase::matrix& ekb, const int nks, const int nbands, @@ -24,13 +24,14 @@ namespace ModuleIO const double &emax_ev,// maximal energy in ev. const double &emin_ev,// minimal energy in ev. const double &bcoeff, - const int &nks,//number of k points - const int &nkstot, + const int &nks, //number of k points + const int &nkstot, // total number of k points const std::vector &wk,//weight of k points const std::vector &isk, const int &nbands,// number of bands const ModuleBase::matrix &ekb, //store energy for each k point and each band - const ModuleBase::matrix &wg); //weight of (kpoint,bands)) + const ModuleBase::matrix &wg, //weight of (kpoint,bands)) + const int istep_in); // ionic_step } diff --git a/source/source_io/cal_ldos.cpp b/source/source_io/module_dos/cal_ldos.cpp similarity index 87% rename from source/source_io/cal_ldos.cpp rename to source/source_io/module_dos/cal_ldos.cpp index ec2f00bfc7..4463c4cf03 100644 --- a/source/source_io/cal_ldos.cpp +++ b/source/source_io/module_dos/cal_ldos.cpp @@ -1,9 +1,9 @@ #include "cal_ldos.h" #include "cal_dos.h" -#include "cube_io.h" +#include "../module_output/cube_io.h" #include "source_estate/module_dm/cal_dm_psi.h" -#include "source_lcao/module_gint/temp_gint/gint_interface.h" +#include "source_lcao/module_gint/gint_interface.h" #include @@ -12,10 +12,16 @@ namespace ModuleIO #ifdef __LCAO template -void Cal_ldos::cal_ldos_lcao(const elecstate::ElecStateLCAO* pelec, - const psi::Psi& psi, - const Parallel_Grid& pgrid, - const UnitCell& ucell) +void Cal_ldos::cal_ldos_lcao( + const elecstate::Efermi &eferm, // mohan add 2025-11-02 + const Charge &chr, // mohan add add 2025-11-02 + const LCAO_domain::Setup_DM &dmat, // mohan add 2025-11-02 + const K_Vectors &kv, // k points, mohan add 2025-11-02 + const ModuleBase::matrix &ekb, // mohan add 2025-11-02 + const ModuleBase::matrix &wg, // mohan add 2025-11-02 + const psi::Psi& psi, + const Parallel_Grid& pgrid, + const UnitCell& ucell) { for (int ie = 0; ie < PARAM.inp.stm_bias[2]; ie++) { @@ -25,53 +31,48 @@ void Cal_ldos::cal_ldos_lcao(const elecstate::ElecStateLCAO* pelec, const double emax = en > 0 ? en : 0; // calculate weight (for bands not in the range, weight is zero) - ModuleBase::matrix weight(pelec->ekb.nr, pelec->ekb.nc); - for (int ik = 0; ik < pelec->ekb.nr; ++ik) + ModuleBase::matrix weight(ekb.nr, ekb.nc); + for (int ik = 0; ik < ekb.nr; ++ik) { - const double efermi = pelec->eferm.get_efval(pelec->klist->isk[ik]); + const double efermi = eferm.get_efval(kv.isk[ik]); - for (int ib = 0; ib < pelec->ekb.nc; ib++) + for (int ib = 0; ib < ekb.nc; ib++) { - const double eigenval = (pelec->ekb(ik, ib) - efermi) * ModuleBase::Ry_to_eV; + const double eigenval = (ekb(ik, ib) - efermi) * ModuleBase::Ry_to_eV; if (eigenval >= emin && eigenval <= emax) { - weight(ik, ib) = en > 0 ? pelec->klist->wk[ik] - pelec->wg(ik, ib) : pelec->wg(ik, ib); + weight(ik, ib) = en > 0 ? kv.wk[ik] - wg(ik, ib) : wg(ik, ib); } } } // calculate dm-like for ldos const int nspin_dm = PARAM.inp.nspin == 2 ? 2 : 1; - elecstate::DensityMatrix dm_ldos(pelec->DM->get_paraV_pointer(), + elecstate::DensityMatrix dm_ldos(dmat.dm->get_paraV_pointer(), nspin_dm, - pelec->klist->kvec_d, - pelec->klist->get_nks() / nspin_dm); + kv.kvec_d, + kv.get_nks() / nspin_dm); - elecstate::cal_dm_psi(pelec->DM->get_paraV_pointer(), weight, psi, dm_ldos); - dm_ldos.init_DMR(*(pelec->DM->get_DMR_pointer(1))); + elecstate::cal_dm_psi(dmat.dm->get_paraV_pointer(), weight, psi, dm_ldos); + dm_ldos.init_DMR(*(dmat.dm->get_DMR_pointer(1))); dm_ldos.cal_DMR(); // allocate ldos space - std::vector ldos_space(PARAM.inp.nspin * pelec->charge->nrxx); + std::vector ldos_space(PARAM.inp.nspin * chr.nrxx); double** ldos = new double*[PARAM.inp.nspin]; for (int is = 0; is < PARAM.inp.nspin; ++is) { - ldos[is] = &ldos_space[is * pelec->charge->nrxx]; + ldos[is] = &ldos_space[is * chr.nrxx]; } // calculate ldos -#ifdef __OLD_GINT - ModuleBase::WARNING_QUIT("Cal_ldos::dm2ldos", - "do not support old grid integral, please recompile with __NEW_GINT"); -#else ModuleGint::cal_gint_rho(dm_ldos.get_DMR_vector(), PARAM.inp.nspin, ldos); -#endif // I'm not sure whether ldos should be output for each spin or not // ldos[0] += ldos[1] for nspin_dm == 2 if (nspin_dm == 2) { - BlasConnector::axpy(pelec->charge->nrxx, 1.0, ldos[1], 1, ldos[0], 1); + BlasConnector::axpy(chr.nrxx, 1.0, ldos[1], 1, ldos[0], 1); } // write ldos to cube file diff --git a/source/source_io/cal_ldos.h b/source/source_io/module_dos/cal_ldos.h similarity index 77% rename from source/source_io/cal_ldos.h rename to source/source_io/module_dos/cal_ldos.h index a18ac0f1d0..8a16046b76 100644 --- a/source/source_io/cal_ldos.h +++ b/source/source_io/module_dos/cal_ldos.h @@ -4,6 +4,12 @@ #include "source_estate/elecstate_lcao.h" #include "source_estate/elecstate_pw.h" +#include "source_estate/fp_energy.h" // eferm +#include "source_estate/module_charge/charge.h" // chr +#include "source_lcao/setup_dm.h" // Setup_DM +#include "source_cell/klist.h" // K_Vectors +#include "source_base/matrix.h" // matrix + namespace ModuleIO { template @@ -13,10 +19,17 @@ class Cal_ldos Cal_ldos(){}; ~Cal_ldos(){}; - static void cal_ldos_lcao(const elecstate::ElecStateLCAO* pelec, - const psi::Psi& psi, - const Parallel_Grid& pgrid, - const UnitCell& ucell); + static void cal_ldos_lcao( + const elecstate::Efermi &eferm, // mohan add 2025-11-02 + const Charge &chr, // mohan add add 2025-11-02 + const LCAO_domain::Setup_DM &dmat, // mohan add 2025-11-02 + const K_Vectors &kv, // k points, mohan add 2025-11-02 + const ModuleBase::matrix &ekb, // mohan add 2025-11-02 + const ModuleBase::matrix &wg, // mohan add 2025-11-02 + const psi::Psi& psi, + const Parallel_Grid& pgrid, + const UnitCell& ucell); + }; // namespace Cal_ldos void cal_ldos_pw(const elecstate::ElecStatePW>* pelec, @@ -72,4 +85,4 @@ void trilinear_interpolate(const std::vector>& points, } // namespace ModuleIO -#endif // CAL_LDOS_H \ No newline at end of file +#endif // CAL_LDOS_H diff --git a/source/source_io/cal_pdos_gamma.cpp b/source/source_io/module_dos/cal_pdos_gamma.cpp similarity index 98% rename from source/source_io/cal_pdos_gamma.cpp rename to source/source_io/module_dos/cal_pdos_gamma.cpp index c51519207e..50acad4f26 100644 --- a/source/source_io/cal_pdos_gamma.cpp +++ b/source/source_io/module_dos/cal_pdos_gamma.cpp @@ -1,13 +1,13 @@ #include "cal_pdos_gamma.h" - +#include "source_io/module_parameter/parameter.h" // use PARAM #include "source_base/parallel_reduce.h" #include "source_base/module_external/blas_connector.h" #include "source_base/module_external/scalapack_connector.h" -#include "write_orb_info.h" #include "source_base/global_function.h" #include "source_base/global_variable.h" -#include "source_pw/module_pwdft/global.h" #include "source_lcao/hamilt_lcao.h" +#include "source_io/module_output/write_orb_info.h" + void ModuleIO::cal_pdos( const psi::Psi* psi, diff --git a/source/source_io/cal_pdos_gamma.h b/source/source_io/module_dos/cal_pdos_gamma.h similarity index 100% rename from source/source_io/cal_pdos_gamma.h rename to source/source_io/module_dos/cal_pdos_gamma.h diff --git a/source/source_io/cal_pdos_multik.cpp b/source/source_io/module_dos/cal_pdos_multik.cpp similarity index 98% rename from source/source_io/cal_pdos_multik.cpp rename to source/source_io/module_dos/cal_pdos_multik.cpp index d16b517f3f..b7766b22f4 100644 --- a/source/source_io/cal_pdos_multik.cpp +++ b/source/source_io/module_dos/cal_pdos_multik.cpp @@ -1,12 +1,11 @@ #include "cal_pdos_multik.h" - +#include "source_io/module_parameter/parameter.h" // use PARAM #include "source_base/parallel_reduce.h" #include "source_base/module_external/blas_connector.h" #include "source_base/module_external/scalapack_connector.h" -#include "write_orb_info.h" +#include "source_io/module_output/write_orb_info.h" #include "source_base/global_function.h" #include "source_base/global_variable.h" -#include "source_pw/module_pwdft/global.h" #include "source_lcao/hamilt_lcao.h" void ModuleIO::cal_pdos( diff --git a/source/source_io/cal_pdos_multik.h b/source/source_io/module_dos/cal_pdos_multik.h similarity index 100% rename from source/source_io/cal_pdos_multik.h rename to source/source_io/module_dos/cal_pdos_multik.h diff --git a/source/source_io/write_dos_lcao.cpp b/source/source_io/module_dos/write_dos_lcao.cpp similarity index 93% rename from source/source_io/write_dos_lcao.cpp rename to source/source_io/module_dos/write_dos_lcao.cpp index fc64f4601f..359b22fee4 100644 --- a/source/source_io/write_dos_lcao.cpp +++ b/source/source_io/module_dos/write_dos_lcao.cpp @@ -2,7 +2,7 @@ #include "cal_dos.h" #include "cal_pdos_gamma.h" #include "cal_pdos_multik.h" -#include "nscf_fermi_surf.h" +#include "source_io/module_energy/nscf_fermi_surf.h" #include "source_io/module_parameter/parameter.h" namespace ModuleIO @@ -16,7 +16,7 @@ void write_dos_lcao( const UnitCell& ucell, const K_Vectors& kv, const int nbands, - const elecstate::efermi &energy_fermi, + const elecstate::Efermi &energy_fermi, const ModuleBase::matrix& ekb, const ModuleBase::matrix& wg, const double& dos_edelta_ev, @@ -69,7 +69,8 @@ void write_dos_lcao( kv.isk, nbands, ekb, - wg); + wg, + istep); } @@ -112,7 +113,7 @@ template void write_dos_lcao( const UnitCell& ucell, const K_Vectors& kv, const int nbands, - const elecstate::efermi &energy_fermi, + const elecstate::Efermi &energy_fermi, const ModuleBase::matrix& ekb, const ModuleBase::matrix& wg, const double& dos_edelta_ev, @@ -130,7 +131,7 @@ template void write_dos_lcao( const UnitCell& ucell, const K_Vectors& kv, const int nbands, - const elecstate::efermi &energy_fermi, + const elecstate::Efermi &energy_fermi, const ModuleBase::matrix& ekb, const ModuleBase::matrix& wg, const double& dos_edelta_ev, diff --git a/source/source_io/write_dos_lcao.h b/source/source_io/module_dos/write_dos_lcao.h similarity index 91% rename from source/source_io/write_dos_lcao.h rename to source/source_io/module_dos/write_dos_lcao.h index 73d21a22a4..88b186f3f9 100644 --- a/source/source_io/write_dos_lcao.h +++ b/source/source_io/module_dos/write_dos_lcao.h @@ -6,7 +6,7 @@ #include "source_psi/psi.h" // use psi::Psi #include "source_hamilt/hamilt.h" // use hamilt::Hamilt #include "source_basis/module_ao/parallel_orbitals.h" // use Parallel_Orbitals -#include "source_estate/fp_energy.h" // use elecstate::efermi +#include "source_estate/fp_energy.h" // use elecstate::Efermi namespace ModuleIO @@ -22,7 +22,7 @@ namespace ModuleIO const UnitCell& ucell, // Unit cell information const K_Vectors& kv, // k-point information in Brillouin zone const int nbands, // Number of bands - const elecstate::efermi &energy_fermi, // Fermi energy + const elecstate::Efermi &energy_fermi, // Fermi energy const ModuleBase::matrix& ekb, // Eigenvalues per k-point and band const ModuleBase::matrix& wg, // Weights of eigenvalues const double& dos_edelta_ev, // Delta energy diff --git a/source/source_io/write_dos_pw.cpp b/source/source_io/module_dos/write_dos_pw.cpp similarity index 83% rename from source/source_io/write_dos_pw.cpp rename to source/source_io/module_dos/write_dos_pw.cpp index 177f2551c4..bfcc094d5c 100644 --- a/source/source_io/write_dos_pw.cpp +++ b/source/source_io/module_dos/write_dos_pw.cpp @@ -1,6 +1,6 @@ #include "write_dos_pw.h" #include "cal_dos.h" -#include "nscf_fermi_surf.h" +#include "../module_energy/nscf_fermi_surf.h" #include "source_base/parallel_reduce.h" #include "source_io/module_parameter/parameter.h" @@ -10,7 +10,8 @@ void ModuleIO::write_dos_pw( const ModuleBase::matrix& wg, const K_Vectors& kv, const int nbands, - const elecstate::efermi &energy_fermi, + const int istep_in, + const elecstate::Efermi &energy_fermi, const double& dos_edelta_ev, const double& dos_scale, const double& bcoeff, @@ -36,11 +37,19 @@ void ModuleIO::write_dos_pw( for (int is = 0; is < nspin0; ++is) { // DOS_ispin contains not smoothed dos - std::stringstream ss; - ss << PARAM.globalv.global_out_dir << "doss" << is + 1 << "_pw.txt"; + std::stringstream ss; + ss << PARAM.globalv.global_out_dir << "dos"; - std::stringstream ss1; - ss1 << PARAM.globalv.global_out_dir << "doss" << is + 1 << "s_pw.txt"; + if(nspin0==2) + { + ss << "s" << is + 1; + } + else + { + // do nothing; + } + + ss << ".txt"; ModuleBase::GlobalFunc::OUT(ofs_running, "DOS file", ss.str()); @@ -56,7 +65,8 @@ void ModuleIO::write_dos_pw( kv.isk, nbands, ekb, - wg); + wg, + istep_in); } diff --git a/source/source_io/write_dos_pw.h b/source/source_io/module_dos/write_dos_pw.h similarity index 89% rename from source/source_io/write_dos_pw.h rename to source/source_io/module_dos/write_dos_pw.h index f6ebb398cd..44f507d84e 100644 --- a/source/source_io/write_dos_pw.h +++ b/source/source_io/module_dos/write_dos_pw.h @@ -15,7 +15,8 @@ namespace ModuleIO const ModuleBase::matrix &wg, const K_Vectors& kv, const int nbands, - const elecstate::efermi &energy_fermi, + const int istep_in, + const elecstate::Efermi &energy_fermi, const double &dos_edelta_ev, const double &dos_scale, const double &bcoeff, diff --git a/source/source_io/module_elf/write_elf.cpp b/source/source_io/module_elf/write_elf.cpp new file mode 100644 index 0000000000..347a119099 --- /dev/null +++ b/source/source_io/module_elf/write_elf.cpp @@ -0,0 +1,183 @@ +#include "write_elf.h" +#include "source_io/module_output/cube_io.h" + +namespace ModuleIO +{ +void write_elf( +#ifdef __MPI + const int& bz, + const int& nbz, +#endif + const std::string& out_dir, + const int& istep_in, + const int& nspin, + const double* const* rho, + const double* const* tau, + ModulePW::PW_Basis* rho_basis, + const Parallel_Grid& pgrid, + const UnitCell* ucell_, + const int& precision) +{ + // For nspin = 4, we only calculate the total ELF using the rho_total and tau_total, + // containing in the first channel of rho and tau. + // What's more, we have not introduced the U(1) and SU(2) gauge invariance corrections + // proposed by Desmarais J K, Vignale G, Bencheikh K, et al. Physical Review Letters, 2024, 133(13): 136401, + // where the current density is also included in the ELF calculation. + + int nspin_eff = (nspin == 4) ? 1 : nspin; + + std::vector> elf(nspin_eff, std::vector(rho_basis->nrxx, 0.)); + // 1) calculate the kinetic energy density of vW KEDF + std::vector> tau_vw(nspin_eff, std::vector(rho_basis->nrxx, 0.)); + std::vector phi(rho_basis->nrxx, 0.); // phi = sqrt(rho) + + for (int is = 0; is < nspin_eff; ++is) + { + for (int ir = 0; ir < rho_basis->nrxx; ++ir) + { + phi[ir] = std::sqrt(std::abs(rho[is][ir])); + } + + std::vector> gradient_phi(3, std::vector(rho_basis->nrxx, 0.)); + std::vector> recip_phi(rho_basis->npw, 0.0); + std::vector> recip_gradient_phi(rho_basis->npw, 0.0); + + rho_basis->real2recip(phi.data(), recip_phi.data()); + + std::complex img(0.0, 1.0); + for (int j = 0; j < 3; ++j) + { + for (int ip = 0; ip < rho_basis->npw; ++ip) + { + recip_gradient_phi[ip] = img * rho_basis->gcar[ip][j] * recip_phi[ip] * rho_basis->tpiba; + } + + rho_basis->recip2real(recip_gradient_phi.data(), gradient_phi[j].data()); + + for (int ir = 0; ir < rho_basis->nrxx; ++ir) + { + tau_vw[is][ir] += gradient_phi[j][ir] * gradient_phi[j][ir] / 2. * 2.; // convert Ha to Ry. + } + } + } + + // 2) calculate the kinetic energy density of TF KEDF + std::vector> tau_TF(nspin_eff, std::vector(rho_basis->nrxx, 0.)); + const double c_tf + = 3.0 / 10.0 * std::pow(3 * std::pow(M_PI, 2.0), 2.0 / 3.0) + * 2.0; // 10/3*(3*pi^2)^{2/3}, multiply by 2 to convert unit from Hartree to Ry, finally in Ry*Bohr^(-2) + if (nspin == 1 || nspin == 4) + { + for (int ir = 0; ir < rho_basis->nrxx; ++ir) + { + if (rho[0][ir] > 0.0) + { + tau_TF[0][ir] = c_tf * std::pow(rho[0][ir], 5.0 / 3.0); + } + else + { + tau_TF[0][ir] = 0.0; + } + } + } + else if (nspin == 2) + { + // the spin-scaling law: tau_TF[rho_up, rho_dn] = 1/2 * (tau_TF[2*rho_up] + tau_TF[2*rho_dn]) + for (int is = 0; is < nspin; ++is) + { + for (int ir = 0; ir < rho_basis->nrxx; ++ir) + { + if (rho[is][ir] > 0.0) + { + tau_TF[is][ir] = 0.5 * c_tf * std::pow(2.0 * rho[is][ir], 5.0 / 3.0); + } + else + { + tau_TF[is][ir] = 0.0; + } + } + } + } + + // 3) calculate the enhancement factor F = (tau_KS - tau_vw) / tau_TF, and then ELF = 1 / (1 + F^2) + double eps = 1.0e-5; // suppress the numerical instability in LCAO (Ref: Acta Phys. -Chim. Sin. 2011, 27(12), 2786-2792. doi: 10.3866/PKU.WHXB20112786) + for (int is = 0; is < nspin_eff; ++is) + { + for (int ir = 0; ir < rho_basis->nrxx; ++ir) + { + if (tau_TF[is][ir] > 1.0e-12) + { + elf[is][ir] = (tau[is][ir] - tau_vw[is][ir] + eps) / tau_TF[is][ir]; + elf[is][ir] = 1. / (1. + elf[is][ir] * elf[is][ir]); + } + else + { + elf[is][ir] = 0.0; + } + } + } + + // 4) output the ELF = 1 / (1 + F^2) to cube file + double ef_tmp = 0.0; + int out_fermi = 0; + + if (nspin == 1 || nspin == 4) + { + std::string fn = out_dir + "/elf.cube"; + + int is = -1; + ModuleIO::write_vdata_palgrid(pgrid, + elf[0].data(), + is, + nspin, + istep_in, + fn, + ef_tmp, + ucell_, + precision, + out_fermi); + } + else if (nspin == 2) + { + for (int is = 0; is < nspin; ++is) + { + std::string fn_temp = out_dir + "/elf"; + + fn_temp += std::to_string(is + 1) + ".cube"; + + int ispin = is + 1; + + ModuleIO::write_vdata_palgrid(pgrid, + elf[is].data(), + ispin, + nspin, + istep_in, + fn_temp, + ef_tmp, + ucell_, + precision, + out_fermi); + } + + std::vector elf_tot(rho_basis->nrxx, 0.0); + for (int ir = 0; ir < rho_basis->nrxx; ++ir) + { + elf_tot[ir] = (tau[0][ir] + tau[1][ir] - tau_vw[0][ir] - tau_vw[1][ir]) / (tau_TF[0][ir] + tau_TF[1][ir]); + elf_tot[ir] = 1. / (1. + elf_tot[ir] * elf_tot[ir]); + } + std::string fn = out_dir + "/elf.cube"; + + int is = -1; + ModuleIO::write_vdata_palgrid(pgrid, + elf_tot.data(), + is, + nspin, + istep_in, + fn, + ef_tmp, + ucell_, + precision, + out_fermi); + } +} +} diff --git a/source/source_io/write_elf.h b/source/source_io/module_elf/write_elf.h similarity index 94% rename from source/source_io/write_elf.h rename to source/source_io/module_elf/write_elf.h index 6cc71434f6..23a7e7c379 100644 --- a/source/source_io/write_elf.h +++ b/source/source_io/module_elf/write_elf.h @@ -13,7 +13,7 @@ void write_elf( const int& nbz, #endif const std::string& out_dir, - const int& istep, + const int& istep_in, const int& nspin, const double* const* rho, const double* const* tau, @@ -23,4 +23,4 @@ void write_elf( const int& precision); } -#endif \ No newline at end of file +#endif diff --git a/source/source_io/nscf_fermi_surf.cpp b/source/source_io/module_energy/nscf_fermi_surf.cpp similarity index 100% rename from source/source_io/nscf_fermi_surf.cpp rename to source/source_io/module_energy/nscf_fermi_surf.cpp diff --git a/source/source_io/nscf_fermi_surf.h b/source/source_io/module_energy/nscf_fermi_surf.h similarity index 100% rename from source/source_io/nscf_fermi_surf.h rename to source/source_io/module_energy/nscf_fermi_surf.h diff --git a/source/source_io/module_energy/write_bands.cpp b/source/source_io/module_energy/write_bands.cpp new file mode 100644 index 0000000000..067d50d1f1 --- /dev/null +++ b/source/source_io/module_energy/write_bands.cpp @@ -0,0 +1,180 @@ +#include "write_bands.h" +#include "source_base/global_function.h" +#include "source_base/global_variable.h" +#include "source_base/timer.h" +#include "source_base/tool_title.h" +#include "source_base/formatter.h" +#include "source_io/module_parameter/parameter.h" // mohan add 20250911 + +#ifdef __MPI +#include +#endif + + +void ModuleIO::write_bands(const Input_para& inp, + const ModuleBase::matrix& ekb, + const K_Vectors& kv) +{ + // write band information to band.txt + if (inp.out_band[0]) + { + const int nspin0 = (inp.nspin == 2) ? 2 : 1; + for (int is = 0; is < nspin0; is++) + { + std::stringstream ss; + ss << PARAM.globalv.global_out_dir << "band"; + + if(nspin0==1) + { + // do nothing + } + else if(nspin0==2) + { + ss << "s" << is + 1; + } + + ss << ".txt"; + + const double eshift = 0.0; + nscf_bands(is, ss.str(), inp.nbands, eshift, + inp.out_band[1], // precision + ekb, kv); + } + } +} + + +void ModuleIO::nscf_bands( + const int &is, + const std::string &eig_file, + const int &nband, + const double &fermie, + const int &precision, + const ModuleBase::matrix& ekb, + const K_Vectors& kv) +{ + ModuleBase::TITLE("ModuleIO","nscf_bands"); + ModuleBase::timer::tick("ModuleIO", "nscf_bands"); + + assert(precision>0); + +/* + GlobalV::ofs_running << "\n"; + GlobalV::ofs_running << " >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>" << std::endl; + GlobalV::ofs_running << " | |" << std::endl; + GlobalV::ofs_running << " | #Print out the eigenvalues for each spin# |" << std::endl; + GlobalV::ofs_running << " | |" << std::endl; + GlobalV::ofs_running << " <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<" << std::endl; + GlobalV::ofs_running << "\n"; +*/ + + GlobalV::ofs_running << " Write eigenvalues to file: " << eig_file << std::endl; + + // number of k points without spin; + // nspin = 1,2, nkstot = nkstot_np * nspin; + // nspin = 4, nkstot = nkstot_np + const int nkstot_np = kv.para_k.nkstot_np; + const int nks_np = kv.para_k.nks_np; + + +#ifdef __MPI + if(GlobalV::MY_RANK==0) + { + if(PARAM.inp.out_app_flag==true) + { + // do nothing + } + else + { + std::ofstream ofs(eig_file.c_str()); + ofs.close(); + } + } + + MPI_Barrier(MPI_COMM_WORLD); + std::vector klength; + klength.resize(nkstot_np); + klength[0] = 0.0; + std::vector> kvec_c_global; + kv.para_k.gatherkvec(kv.kvec_c, kvec_c_global); + + for(int ik=0; ik0) + { + auto delta=kvec_c_global[ik]-kvec_c_global[ik-1]; + klength[ik] = klength[ik-1]; + klength[ik] += (kv.kl_segids[ik] == kv.kl_segids[ik-1]) ? delta.norm() : 0.0; + } + //! first find if present kpoint in present pool + if ( GlobalV::MY_POOL == kv.para_k.whichpool[ik] ) + { + //! then get the local kpoint index, which starts definitly from 0 + const int ik_now = ik - kv.para_k.startk_pool[GlobalV::MY_POOL]; + //! if present kpoint corresponds the spin of the present one + assert( kv.isk[ik_now+is*nks_np] == is ); + if ( GlobalV::RANK_IN_POOL == 0) + { + std::ofstream ofs(eig_file.c_str(), std::ios::app); + ofs << FmtCore::format("%4d", ik+1); + int width = precision + 4; + std::string fmtstr = " %." + std::to_string(precision) + "f"; + ofs << FmtCore::format(fmtstr.c_str(), klength[ik]); + for(int ib = 0; ib < nband; ib++) + { + ofs << FmtCore::format(fmtstr.c_str(), (ekb(ik_now+is*nks_np, ib)-fermie) * ModuleBase::Ry_to_eV); + } + ofs << std::endl; + ofs.close(); + } + } + MPI_Barrier(MPI_COMM_WORLD); + } + +#else + std::vector klength; + klength.resize(nkstot_np); + klength[0] = 0.0; + + std::ofstream ofs; + + if(GlobalV::MY_RANK==0) + { + if(PARAM.inp.out_app_flag==true) + { + ofs.open(eig_file.c_str(), std::ios::app); + } + else + { + ofs.open(eig_file.c_str()); + } + } + + for(int ik=0;ik0) + { + auto delta=kv.kvec_c[ik]-kv.kvec_c[ik-1]; + klength[ik] = klength[ik-1]; + klength[ik] += (kv.kl_segids[ik] == kv.kl_segids[ik-1]) ? delta.norm() : 0.0; + } + if( kv.isk[ik] == is) + { + ofs << FmtCore::format("%4d", ik+1); + int width = precision + 4; + std::string fmtstr = " %." + std::to_string(precision) + "f"; + ofs << FmtCore::format(fmtstr.c_str(), klength[ik]); + for(int ibnd = 0; ibnd < nband; ibnd++) + { + ofs << FmtCore::format(fmtstr.c_str(), (ekb(ik, ibnd)-fermie) * ModuleBase::Ry_to_eV); + } + ofs << std::endl; + } + } + + ofs.close(); +#endif + + ModuleBase::timer::tick("ModuleIO", "nscf_band"); + return; +} diff --git a/source/source_io/module_energy/write_bands.h b/source/source_io/module_energy/write_bands.h new file mode 100644 index 0000000000..bc1c6942b9 --- /dev/null +++ b/source/source_io/module_energy/write_bands.h @@ -0,0 +1,37 @@ +#ifndef WRITE_BANDS_H +#define WRITE_BANDS_H + +#include "source_io/module_parameter/input_parameter.h" +#include "source_base/matrix.h" +#include "source_cell/klist.h" +#include "source_cell/parallel_kpoints.h" + +namespace ModuleIO +{ + + +void write_bands(const Input_para& inp, + const ModuleBase::matrix& ekb, + const K_Vectors& kv); + +/** + * @brief calculate the band structure + * + * @param is spin index is = 0 or 1 + * @param out_band_dir directory to save the band structure + * @param nband number of bands + * @param fermie fermi energy + * @param precision precision of the output + * @param ekb eigenvalues of k points and bands + * @param kv klist + */ +void nscf_bands(const int& is, + const std::string &eig_file, + const int& nband, + const double& fermie, + const int& precision, + const ModuleBase::matrix& ekb, + const K_Vectors& kv); +} + +#endif diff --git a/source/source_io/write_eband_terms.hpp b/source/source_io/module_energy/write_eband_terms.hpp similarity index 90% rename from source/source_io/write_eband_terms.hpp rename to source/source_io/module_energy/write_eband_terms.hpp index 0aa48770e0..8732c9c0f8 100644 --- a/source/source_io/write_eband_terms.hpp +++ b/source/source_io/module_energy/write_eband_terms.hpp @@ -1,9 +1,9 @@ #ifndef WRITE_EBAND_TERMS_HPP #define WRITE_EBAND_TERMS_HPP -#include "source_io/write_vxc.hpp" -#include "source_lcao/module_operator_lcao/ekinetic_new.h" -#include "source_lcao/module_operator_lcao/nonlocal_new.h" +#include "source_io/module_hs/write_vxc.hpp" +#include "source_lcao/module_operator_lcao/ekinetic.h" +#include "source_lcao/module_operator_lcao/nonlocal.h" #include "source_basis/module_nao/two_center_bundle.h" namespace ModuleIO @@ -21,8 +21,6 @@ void write_eband_terms(const int nspin, const ModulePW::PW_Basis& rhod_basis, const ModuleBase::matrix& vloc, const Charge& chg, - Gint_Gamma& gint_gamma, // mohan add 2024-04-01 - Gint_k& gint_k, // mohan add 2024-04-01 const K_Vectors& kv, const ModuleBase::matrix& wg, Grid_Driver& gd, @@ -45,10 +43,6 @@ void write_eband_terms(const int nspin, set_para2d_MO(*pv, nbands, p2d); - typename TGint::type* gint = nullptr; - - set_gint_pointer(gint_gamma, gint_k, gint); - auto if_gamma_fix = [](hamilt::HContainer& hR) { if (std::is_same::value) @@ -81,7 +75,7 @@ void write_eband_terms(const int nspin, hamilt::HContainer kinetic_R_ao(pv); if_gamma_fix(kinetic_R_ao); - hamilt::EkineticNew> kinetic_op(&kinetic_k_ao, kv.kvec_d, + hamilt::EKinetic> kinetic_op(&kinetic_k_ao, kv.kvec_d, &kinetic_R_ao, &ucell, orb_cutoff, &gd, two_center_bundle.kinetic_orb.get()); kinetic_op.contributeHR(); @@ -110,7 +104,7 @@ void write_eband_terms(const int nspin, if_gamma_fix(v_pp_local_R_ao); std::vector> e_orb_pp_local; - hamilt::Veff> v_pp_local_op(gint, + hamilt::Veff> v_pp_local_op( &v_pp_local_k_ao, kv.kvec_d, &pot_local, @@ -138,7 +132,7 @@ void write_eband_terms(const int nspin, hamilt::HContainer v_pp_nonlocal_R_ao(pv); if_gamma_fix(v_pp_nonlocal_R_ao); std::vector> e_orb_pp_nonlocal; - hamilt::NonlocalNew> v_pp_nonlocal_op(&v_pp_nonlocal_k_ao, kv.kvec_d, + hamilt::Nonlocal> v_pp_nonlocal_op(&v_pp_nonlocal_k_ao, kv.kvec_d, &v_pp_nonlocal_R_ao, &ucell, orb_cutoff, &gd, two_center_bundle.overlap_orb_beta.get()); v_pp_nonlocal_op.contributeHR(); for (int ik = 0;ik < kv.get_nks();++ik) @@ -167,7 +161,7 @@ void write_eband_terms(const int nspin, std::vector>*> v_hartree_op(nspin0); for (int is = 0; is < nspin0; ++is) { - v_hartree_op[is] = new hamilt::Veff>(gint, + v_hartree_op[is] = new hamilt::Veff>( &v_hartree_k_ao, kv.kvec_d, &pot_hartree, &v_hartree_R_ao[is], &ucell, orb_cutoff, &gd, nspin); v_hartree_op[is]->contributeHR(); } @@ -199,8 +193,6 @@ void write_eband_terms(const int nspin, rhod_basis, vloc, chg, - gint_gamma, - gint_k, kv, orb_cutoff, wg, diff --git a/source/source_io/write_eig_occ.cpp b/source/source_io/module_energy/write_eig_occ.cpp similarity index 90% rename from source/source_io/write_eig_occ.cpp rename to source/source_io/module_energy/write_eig_occ.cpp index 2bea604de0..4b13d885b9 100644 --- a/source/source_io/write_eig_occ.cpp +++ b/source/source_io/module_energy/write_eig_occ.cpp @@ -20,13 +20,6 @@ void ModuleIO::write_eig_iter(const ModuleBase::matrix &ekb,const ModuleBase::ma const int nspin = PARAM.inp.nspin; const int nks = kv.get_nks(); const int nkstot = kv.get_nkstot(); - - std::vector ngk_tot = kv.ngk; - -#ifdef __MPI - MPI_Allreduce(MPI_IN_PLACE, ngk_tot.data(), nks, MPI_INT, MPI_SUM, POOL_WORLD); -#endif - const int nk_fac = nspin == 2 ? 2 : 1; const int nks_np = nks / nk_fac; const int nkstot_np = nkstot / nk_fac; @@ -90,11 +83,14 @@ void ModuleIO::write_eig_iter(const ModuleBase::matrix &ekb,const ModuleBase::ma int source_rank = status.MPI_SOURCE; MPI_Recv(&recv_nbands, 1, MPI_INT, source_rank, 1, MPI_COMM_WORLD, MPI_STATUS_IGNORE); int* recv_ik2iktot = new int[recv_nks_np]; - MPI_Recv(recv_ik2iktot, recv_nks_np, MPI_INT, source_rank, 2, MPI_COMM_WORLD, MPI_STATUS_IGNORE); + MPI_Recv(recv_ik2iktot, recv_nks_np, MPI_INT, source_rank, + 2, MPI_COMM_WORLD, MPI_STATUS_IGNORE); ModuleBase::matrix recv_ekb(recv_nks_np, recv_nbands); - MPI_Recv(recv_ekb.c, recv_nks_np * recv_nbands, MPI_DOUBLE, source_rank, 3, MPI_COMM_WORLD, MPI_STATUS_IGNORE); + MPI_Recv(recv_ekb.c, recv_nks_np * recv_nbands, MPI_DOUBLE, + source_rank, 3, MPI_COMM_WORLD, MPI_STATUS_IGNORE); ModuleBase::matrix recv_wg(recv_nks_np, recv_nbands); - MPI_Recv(recv_wg.c, recv_nks_np * recv_nbands, MPI_DOUBLE, source_rank, 4, MPI_COMM_WORLD, MPI_STATUS_IGNORE); + MPI_Recv(recv_wg.c, recv_nks_np * recv_nbands, MPI_DOUBLE, source_rank, 4, + MPI_COMM_WORLD, MPI_STATUS_IGNORE); // print EIGENVALUES and OCCUPATIONS of received k-points for (int ik = 0; ik < recv_nks_np; ++ik) @@ -158,11 +154,15 @@ void ModuleIO::write_eig_iter(const ModuleBase::matrix &ekb,const ModuleBase::ma ModuleBase::timer::tick("ModuleIO", "write_eig_iter"); } -void ModuleIO::write_eig_file(const ModuleBase::matrix &ekb,const ModuleBase::matrix &wg, const K_Vectors& kv) +void ModuleIO::write_eig_file(const ModuleBase::matrix &ekb, + const ModuleBase::matrix &wg, + const K_Vectors& kv, + const int istep) { ModuleBase::TITLE("ModuleIO","write_eig_file"); ModuleBase::timer::tick("ModuleIO", "write_eig_file"); +/* GlobalV::ofs_running << "\n"; GlobalV::ofs_running << " >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>" << std::endl; GlobalV::ofs_running << " | |" << std::endl; @@ -170,6 +170,7 @@ void ModuleIO::write_eig_file(const ModuleBase::matrix &ekb,const ModuleBase::ma GlobalV::ofs_running << " | |" << std::endl; GlobalV::ofs_running << " <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<" << std::endl; GlobalV::ofs_running << "\n"; +*/ const int nspin = PARAM.inp.nspin; const int nks = kv.get_nks(); @@ -197,26 +198,37 @@ void ModuleIO::write_eig_file(const ModuleBase::matrix &ekb,const ModuleBase::ma { ModuleBase::WARNING_QUIT("ModuleIO::write_eig_file", "Eigenvalues are too large!"); } - std::vector ngk_tot = kv.ngk; - #ifdef __MPI - MPI_Allreduce(MPI_IN_PLACE, ngk_tot.data(), nks, MPI_INT, MPI_SUM, POOL_WORLD); + std::vector send_ngk_tot = kv.ngk; + MPI_Allreduce(send_ngk_tot.data(), ngk_tot.data(), nks, MPI_INT, MPI_SUM, POOL_WORLD); #endif // file name to store eigenvalues - std::string filename = PARAM.globalv.global_out_dir + "eig.txt"; - GlobalV::ofs_running << " Eigenvalues and occupations are in file: " << filename << std::endl; + std::string filename = PARAM.globalv.global_out_dir + "eig_occ.txt"; + + GlobalV::ofs_running << " Write eigenvalues and occupations to file: " << filename << std::endl; if (GlobalV::MY_RANK == 0) { - std::ofstream ofs_eig0(filename.c_str()); // clear eig.txt + std::ofstream ofs_eig0; + + if(PARAM.inp.out_app_flag==true) + { + ofs_eig0.open(filename.c_str(), std::ios::app); + } + else + { + ofs_eig0.open(filename.c_str()); + } + + ofs_eig0 << istep+1 << " # ionic step" << std::endl; ofs_eig0 << " Electronic state energy (eV) and occupations" << std::endl; ofs_eig0 << " Spin number " << nspin << std::endl; ofs_eig0.close(); } - const int nk_fac = nspin == 2 ? 2 : 1; + const int nk_fac = (nspin == 2) ? 2 : 1; const int nks_np = nks / nk_fac; const int nkstot_np = nkstot / nk_fac; const int kpar = GlobalV::KPAR; diff --git a/source/source_io/write_eig_occ.h b/source/source_io/module_energy/write_eig_occ.h similarity index 81% rename from source/source_io/write_eig_occ.h rename to source/source_io/module_energy/write_eig_occ.h index fe1ffca90c..26b7be7394 100644 --- a/source/source_io/write_eig_occ.h +++ b/source/source_io/module_energy/write_eig_occ.h @@ -11,8 +11,9 @@ namespace ModuleIO const K_Vectors& kv); void write_eig_file(const ModuleBase::matrix &ekb, - const ModuleBase::matrix &wg, - const K_Vectors& kv); + const ModuleBase::matrix &wg, + const K_Vectors& kv, + const int istep); } #endif diff --git a/source/source_io/write_proj_band_lcao.cpp b/source/source_io/module_energy/write_proj_band_lcao.cpp similarity index 99% rename from source/source_io/write_proj_band_lcao.cpp rename to source/source_io/module_energy/write_proj_band_lcao.cpp index a01937c5d2..dfcbda0757 100644 --- a/source/source_io/write_proj_band_lcao.cpp +++ b/source/source_io/module_energy/write_proj_band_lcao.cpp @@ -6,7 +6,7 @@ #include "source_base/module_external/scalapack_connector.h" #include "source_base/timer.h" #include "source_cell/module_neighbor/sltk_atom_arrange.h" -#include "write_orb_info.h" +#include "source_io/module_output/write_orb_info.h" #include "source_lcao/hamilt_lcao.h" template<> diff --git a/source/source_io/write_proj_band_lcao.h b/source/source_io/module_energy/write_proj_band_lcao.h similarity index 100% rename from source/source_io/write_proj_band_lcao.h rename to source/source_io/module_energy/write_proj_band_lcao.h diff --git a/source/source_io/cal_pLpR.cpp b/source/source_io/module_hs/cal_pLpR.cpp similarity index 85% rename from source/source_io/cal_pLpR.cpp rename to source/source_io/module_hs/cal_pLpR.cpp index 7c3a5f0eab..e437335ec0 100644 --- a/source/source_io/cal_pLpR.cpp +++ b/source/source_io/module_hs/cal_pLpR.cpp @@ -11,7 +11,7 @@ #include "source_cell/module_neighbor/sltk_grid_driver.h" #include "source_cell/module_neighbor/sltk_atom_arrange.h" #include "source_io/module_parameter/parameter.h" -#include "source_io/cal_pLpR.h" +#include "source_io/module_hs/cal_pLpR.h" #include "source_base/formatter.h" #include "source_base/parallel_common.h" /** @@ -150,12 +150,21 @@ ModuleIO::AngularMomentumCalculator::AngularMomentumCalculator( // for neighbor list search double temp = -1.0; + if (search_radius < rcut_max) + { + *ofs_ << "Find the `search_radius` from the input file being smaller than the \n" + "`rcut_max` of the orbitals.\n" + << "Reset the `search_radius` (" << search_radius << ") " + << "to `rcut_max` ("<< rcut_max << ")." + << std::endl; + // we don't really set, but use std::max to mask :) + } temp = atom_arrange::set_sr_NL(*ofs_, PARAM.inp.out_level, - search_radius, + std::max(search_radius, rcut_max), ucell.infoNL.get_rcutmax_Beta(), PARAM.globalv.gamma_only_local); - temp = std::max(temp, search_radius); + temp = std::max(temp, std::max(search_radius, rcut_max)); this->neighbor_searcher_ = std::unique_ptr(new Grid_Driver(tdestructor, tgrid)); atom_arrange::search(searchpbc, *ofs_, @@ -190,24 +199,29 @@ void ModuleIO::AngularMomentumCalculator::kernel( fmtstr += "%" + std::to_string(precision*2) + "." + std::to_string(precision) + "e\n"; FmtCore fmt(fmtstr); - ModuleBase::Vector3 ri, rj, dr; + // placeholders + std::complex val = 0; + ModuleBase::Vector3 taui; // the origin position + ModuleBase::Vector3 dtau; // the displacement + AdjacentAtomInfo adjinfo; // adjacent atom information carrier for (int it = 0; it < ucell.ntype; it++) { const Atom& atyp_i = ucell.atoms[it]; for (int ia = 0; ia < atyp_i.na; ia++) { - ri = atyp_i.tau[ia]; - neighbor_searcher_->Find_atom(ucell, ri, it, ia); - for (int ia_adj = 0; ia_adj < neighbor_searcher_->getAdjacentNum(); ia_adj++) + taui = ucell.get_tau(ucell.itia2iat(it, ia)); + neighbor_searcher_->Find_atom(ucell, taui, it, ia, &adjinfo); + for (int ia_adj = 0; ia_adj < adjinfo.adj_num + 1; ia_adj++) // "+1" is to include itself { - rj = neighbor_searcher_->getAdjacentTau(ia_adj); - int jt = neighbor_searcher_->getType(ia_adj); + int jt = adjinfo.ntype[ia_adj]; // ityp + int ja = adjinfo.natom[ia_adj]; // iat with in atomtype const Atom& atyp_j = ucell.atoms[jt]; - int ja = neighbor_searcher_->getNatom(ia_adj); - dr = (ri - rj) * ucell.lat0; - const ModuleBase::Vector3 iR = neighbor_searcher_->getBox(ia_adj); - // the two-center-integral + const ModuleBase::Vector3 iR = adjinfo.box[ia_adj]; + dtau = ucell.cal_dtau(ucell.itia2iat(it, ia), + ucell.itia2iat(jt, ja), + iR) * ucell.lat0; // convert to unit of Bohr + // nested loop: calculate the two-center-integral for (int li = 0; li < atyp_i.nwl + 1; li++) { for (int iz = 0; iz < atyp_i.l_nchi[li]; iz++) @@ -220,21 +234,20 @@ void ModuleIO::AngularMomentumCalculator::kernel( { for (int mj = -lj; mj <= lj; mj++) { - std::complex val = 0; if (dir == 'x') { val = cal_LxijR(calculator_, - it, ia, li, iz, mi, jt, ja, lj, jz, mj, dr); + it, ia, li, iz, mi, jt, ja, lj, jz, mj, dtau); } else if (dir == 'y') { val = cal_LyijR(calculator_, - it, ia, li, iz, mi, jt, ja, lj, jz, mj, dr); + it, ia, li, iz, mi, jt, ja, lj, jz, mj, dtau); } else if (dir == 'z') { val = cal_LzijR(calculator_, - it, ia, li, iz, mi, jt, ja, lj, jz, mj, dr); + it, ia, li, iz, mi, jt, ja, lj, jz, mj, dtau); } *ofs << fmt.format( @@ -266,7 +279,7 @@ void ModuleIO::AngularMomentumCalculator::calculate( } std::ofstream ofout; const std::string dir = "xyz"; - const std::string title = "# it ia il iz im iRx iRy iRz jt ja jl jz jm \n" + const std::string title = "# it ia il iz im iRx iRy iRz jt ja jl jz jm Re[] Im[]\n" "# it: atomtype index of the first atom\n" "# ia: atomic index of the first atom within the atomtype\n" "# il: angular momentum index of the first atom\n" @@ -278,7 +291,8 @@ void ModuleIO::AngularMomentumCalculator::calculate( "# jl: angular momentum index of the second atom\n" "# jz: zeta function index of the second atom\n" "# jm: magnetic quantum number of the second atom\n" - "# : the value of the matrix element\n"; + "# Re[], Im[]: the real and imaginary parts " + "of the value of the matrix element\n"; for (char d : dir) { diff --git a/source/source_io/cal_pLpR.h b/source/source_io/module_hs/cal_pLpR.h similarity index 100% rename from source/source_io/cal_pLpR.h rename to source/source_io/module_hs/cal_pLpR.h diff --git a/source/source_io/cal_r_overlap_R.cpp b/source/source_io/module_hs/cal_r_overlap_R.cpp similarity index 98% rename from source/source_io/cal_r_overlap_R.cpp rename to source/source_io/module_hs/cal_r_overlap_R.cpp index f81bf8026f..8ea658c3db 100644 --- a/source/source_io/cal_r_overlap_R.cpp +++ b/source/source_io/module_hs/cal_r_overlap_R.cpp @@ -4,7 +4,6 @@ #include "source_base/parallel_reduce.h" #include "source_base/timer.h" #include "source_cell/module_neighbor/sltk_grid_driver.h" -#include "source_pw/module_pwdft/global.h" #include "source_base/mathzone_add1.h" cal_r_overlap_R::cal_r_overlap_R() @@ -18,19 +17,11 @@ cal_r_overlap_R::~cal_r_overlap_R() void cal_r_overlap_R::initialize_orb_table(const UnitCell& ucell, const LCAO_Orbitals& orb) { - int Lmax_used = 0; - int Lmax = 0; - int exx_lmax = 0; -#ifdef __EXX - exx_lmax = GlobalC::exx_info.info_ri.abfs_Lmax; -#endif - const int ntype = orb.get_ntype(); - int lmax_orb = -1, lmax_beta = -1; + int lmax_orb = -1; for (int it = 0; it < ntype; it++) { lmax_orb = std::max(lmax_orb, orb.Phi[it].getLmax()); - lmax_beta = std::max(lmax_beta, ucell.infoNL.Beta[it].getLmax()); } const double dr = orb.get_dR(); const double dk = orb.get_dk(); @@ -38,13 +29,9 @@ void cal_r_overlap_R::initialize_orb_table(const UnitCell& ucell, int Rmesh = static_cast(orb.get_Rmax() / dr) + 4; Rmesh += 1 - Rmesh % 2; - Center2_Orb::init_Table_Spherical_Bessel(2, - 3, - Lmax_used, - Lmax, - exx_lmax, - lmax_orb, - lmax_beta, + const int Lmax = lmax_orb + 1; + const int Lmax_used = 2 * lmax_orb + 1; + Center2_Orb::init_Table_Spherical_Bessel(Lmax_used, dr, dk, kmesh, diff --git a/source/source_io/cal_r_overlap_R.h b/source/source_io/module_hs/cal_r_overlap_R.h similarity index 98% rename from source/source_io/cal_r_overlap_R.h rename to source/source_io/module_hs/cal_r_overlap_R.h index c56f2b02e9..81d093bfe0 100644 --- a/source/source_io/cal_r_overlap_R.h +++ b/source/source_io/module_hs/cal_r_overlap_R.h @@ -98,6 +98,6 @@ class cal_r_overlap_R std::map>>>> center2_orb21_r_nonlocal; - const Parallel_Orbitals* ParaV; + const Parallel_Orbitals* ParaV = nullptr; }; #endif diff --git a/source/source_io/module_hs/output_mat_sparse.cpp b/source/source_io/module_hs/output_mat_sparse.cpp new file mode 100644 index 0000000000..4f8b04ec29 --- /dev/null +++ b/source/source_io/module_hs/output_mat_sparse.cpp @@ -0,0 +1,115 @@ +#include "output_mat_sparse.h" + +#include "cal_r_overlap_R.h" +#include "source_io/module_hs/write_HS_R.h" + +namespace ModuleIO +{ +template +void output_mat_sparse(const bool& out_mat_hsR, + const bool& out_mat_dh, + const bool& out_mat_ds, + const bool& out_mat_t, + const bool& out_mat_r, + const int& istep, + const ModuleBase::matrix& v_eff, + const Parallel_Orbitals& pv, + const TwoCenterBundle& two_center_bundle, + const LCAO_Orbitals& orb, + UnitCell& ucell, + const Grid_Driver& grid, + const K_Vectors& kv, + hamilt::Hamilt* p_ham, + Plus_U* p_dftu) +{ + LCAO_HS_Arrays HS_Arrays; // store sparse arrays + + //! generate a file containing the Hamiltonian and S(overlap) matrices + if (out_mat_hsR) + { + output_HSR(ucell, istep, pv, HS_Arrays, grid, kv, *p_dftu, p_ham); + } + + //! generate a file containing the kinetic energy matrix + if (out_mat_t) + { + output_TR(istep, ucell, pv, HS_Arrays, grid, two_center_bundle, orb); + } + + //! generate a file containing the derivatives of the Hamiltonian matrix (in Ry/Bohr) + if (out_mat_dh) + { + output_dHR(istep, + v_eff, + ucell, + pv, + HS_Arrays, + grid, // mohan add 2024-04-06 + two_center_bundle, + orb, + kv); // LiuXh add 2019-07-15 + } + //! generate a file containing the derivatives of the overlap matrix (in Ry/Bohr) + if (out_mat_ds) + { + output_dSR(istep, + ucell, + pv, + HS_Arrays, + grid, // mohan add 2024-04-06 + two_center_bundle, + orb, + kv); + } + + // add by jingan for out r_R matrix 2019.8.14 + if (out_mat_r) + { + cal_r_overlap_R r_matrix; + r_matrix.init(ucell, pv, orb); + if (out_mat_hsR) + { + r_matrix.out_rR_other(ucell, istep, HS_Arrays.output_R_coor); + } + else + { + r_matrix.out_rR(ucell, grid, istep); + } + } + + return; +} + +template void output_mat_sparse(const bool& out_mat_hsR, + const bool& out_mat_dh, + const bool& out_mat_ds, + const bool& out_mat_t, + const bool& out_mat_r, + const int& istep, + const ModuleBase::matrix& v_eff, + const Parallel_Orbitals& pv, + const TwoCenterBundle& two_center_bundle, + const LCAO_Orbitals& orb, + UnitCell& ucell, + const Grid_Driver& grid, + const K_Vectors& kv, + hamilt::Hamilt* p_ham, + Plus_U* p_dftu); + +template void output_mat_sparse>(const bool& out_mat_hsR, + const bool& out_mat_dh, + const bool& out_mat_ds, + const bool& out_mat_t, + const bool& out_mat_r, + const int& istep, + const ModuleBase::matrix& v_eff, + const Parallel_Orbitals& pv, + const TwoCenterBundle& two_center_bundle, + const LCAO_Orbitals& orb, + UnitCell& ucell, + const Grid_Driver& grid, + const K_Vectors& kv, + hamilt::Hamilt>* p_ham, + Plus_U* p_dftu); + +} // namespace ModuleIO diff --git a/source/source_io/output_mat_sparse.h b/source/source_io/module_hs/output_mat_sparse.h similarity index 83% rename from source/source_io/output_mat_sparse.h rename to source/source_io/module_hs/output_mat_sparse.h index 065f510214..ec9af7af72 100644 --- a/source/source_io/output_mat_sparse.h +++ b/source/source_io/module_hs/output_mat_sparse.h @@ -5,7 +5,8 @@ #include "source_basis/module_nao/two_center_bundle.h" #include "source_cell/klist.h" #include "source_hamilt/hamilt.h" -#include "source_lcao/module_gint/gint_k.h" +#include "source_cell/module_neighbor/sltk_grid_driver.h" +#include "source_lcao/module_dftu/dftu.h" // mohan add 20251107 namespace ModuleIO { @@ -19,13 +20,13 @@ void output_mat_sparse(const bool& out_mat_hsR, const int& istep, const ModuleBase::matrix& v_eff, const Parallel_Orbitals& pv, - Gint_k& gint_k, // mohan add 2024-04-01 const TwoCenterBundle& two_center_bundle, const LCAO_Orbitals& orb, UnitCell& ucell, const Grid_Driver& grid, // mohan add 2024-04-06 const K_Vectors& kv, - hamilt::Hamilt* p_ham); + hamilt::Hamilt* p_ham, + Plus_U* p_dftu); // mohan add 20251107 } // namespace ModuleIO #endif // OUTPUT_MAT_SPARSE_H diff --git a/source/source_io/single_R_io.cpp b/source/source_io/module_hs/single_R_io.cpp similarity index 90% rename from source/source_io/single_R_io.cpp rename to source/source_io/module_hs/single_R_io.cpp index f2bc24886f..a8e7e3cace 100644 --- a/source/source_io/single_R_io.cpp +++ b/source/source_io/module_hs/single_R_io.cpp @@ -6,12 +6,11 @@ inline void write_data(std::ofstream& ofs, const double& data) { - ofs << " " << std::fixed << std::scientific << std::setprecision(8) << data; + ofs << " " << data; } inline void write_data(std::ofstream& ofs, const std::complex& data) { - ofs << " (" << std::fixed << std::scientific << std::setprecision(8) << data.real() << "," - << std::fixed << std::scientific << std::setprecision(8) << data.imag() << ")"; + ofs << " (" << data.real() << "," << data.imag() << ")"; } template @@ -23,7 +22,7 @@ void ModuleIO::output_single_R(std::ofstream& ofs, const bool& reduce) { T* line = nullptr; - std::vector indptr; + std::vector indptr; indptr.reserve(PARAM.globalv.nlocal + 1); indptr.push_back(0); @@ -68,7 +67,8 @@ void ModuleIO::output_single_R(std::ofstream& ofs, if (!reduce || GlobalV::DRANK == 0) { - int nonzeros_count = 0; + long long nonzeros_count = 0; + ofs << std::fixed << std::scientific << std::setprecision(8); for (int col = 0; col < PARAM.globalv.nlocal; ++col) { if (std::abs(line[col]) > sparse_threshold) @@ -106,7 +106,7 @@ void ModuleIO::output_single_R(std::ofstream& ofs, ifs_tem1.close(); for (auto &i : indptr) { - ofs.write(reinterpret_cast(&i), sizeof(int)); + ofs.write(reinterpret_cast(&i), sizeof(long long)); } } else diff --git a/source/source_io/single_R_io.h b/source/source_io/module_hs/single_R_io.h similarity index 100% rename from source/source_io/single_R_io.h rename to source/source_io/module_hs/single_R_io.h diff --git a/source/source_io/write_HS.h b/source/source_io/module_hs/write_HS.h similarity index 97% rename from source/source_io/write_HS.h rename to source/source_io/module_hs/write_HS.h index dae3f8ef11..43cd65b6d8 100644 --- a/source/source_io/write_HS.h +++ b/source/source_io/module_hs/write_HS.h @@ -7,6 +7,7 @@ //#include "source_base/global_function.h" //#include "source_base/global_variable.h" #include "source_basis/module_ao/parallel_orbitals.h" // use Parallel_Orbitals +#include "source_hamilt/hamilt.h" // mohan add this file 2010-09-10 diff --git a/source/source_io/module_hs/write_HS.hpp b/source/source_io/module_hs/write_HS.hpp new file mode 100644 index 0000000000..d073db4c73 --- /dev/null +++ b/source/source_io/module_hs/write_HS.hpp @@ -0,0 +1,305 @@ +#include "write_HS.h" + +#include "source_io/module_parameter/parameter.h" +#include "source_base/parallel_reduce.h" +#include "source_base/timer.h" +#include "source_cell/module_neighbor/sltk_grid_driver.h" +#include "source_io/module_output/filename.h" // use filename_output function + + +template +void ModuleIO::write_hsk( + const std::string &global_out_dir, + const int nspin, + const int nks, + const int nkstot, + const std::vector &ik2iktot, + const std::vector &isk, + hamilt::Hamilt* p_hamilt, + const Parallel_Orbitals &pv, + const bool gamma_only, + const bool out_app_flag, + const int istep, + std::ofstream &ofs_running) +{ + + ofs_running << " >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>" + ">>>>>>>>>>>>>>>>>>>>>>>>>" << std::endl; + ofs_running << " | " + " |" << std::endl; + ofs_running << " | Write Hamiltonian matrix H(k) or overlap matrix S(k) in numerical |" << std::endl; + ofs_running << " | atomic orbitals at each k-point. |" << std::endl; + ofs_running << " | " + " |" << std::endl; + ofs_running << " >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>" + ">>>>>>>>>>>>>>>>>>>>>>>>>" << std::endl; + ofs_running << "\n WRITE H(k) OR S(k)" << std::endl; + + for (int ik = 0; ik < nks; ++ik) + { + p_hamilt->updateHk(ik); + bool bit = false; // LiuXh, 2017-03-21 + // if set bit = true, there would be error in soc-multi-core + // calculation, noted by zhengdy-soc + + hamilt::MatrixBlock h_mat; + hamilt::MatrixBlock s_mat; + + p_hamilt->matrix(h_mat, s_mat); + + const int out_label=1; // 1: .txt, 2: .dat + + std::string h_fn = ModuleIO::filename_output(global_out_dir, + "hk","nao",ik,ik2iktot,nspin,nkstot, + out_label,out_app_flag,gamma_only,istep); + + ModuleIO::save_mat(istep, + h_mat.p, + PARAM.globalv.nlocal, + bit, + PARAM.inp.out_mat_hs[1], + 1, + out_app_flag, + h_fn, + pv, + GlobalV::DRANK); + + // mohan note 2025-06-02 + // for overlap matrix, the two spin channels yield the same matrix + // so we only need to print matrix from one spin channel. + const int current_spin = isk[ik]; + if(current_spin == 1) + { + continue; + } + + std::string s_fn = ModuleIO::filename_output(global_out_dir, + "sk","nao",ik,ik2iktot,nspin,nkstot, + out_label,out_app_flag,gamma_only,istep); + + ofs_running << " The output filename is " << s_fn << std::endl; + + ModuleIO::save_mat(istep, + s_mat.p, + PARAM.globalv.nlocal, + bit, + PARAM.inp.out_mat_hs[1], + 1, + out_app_flag, + s_fn, + pv, + GlobalV::DRANK); + } // end ik +} + + +// output a square matrix +template +void ModuleIO::save_mat(const int istep, + const T* mat, + const int dim, + const bool bit, + const int precision, + const bool tri, + const bool app, + const std::string& filename, + const Parallel_2D& pv, + const int drank, + const bool reduce) +{ + ModuleBase::TITLE("ModuleIO", "save_mat"); + ModuleBase::timer::tick("ModuleIO", "save_mat"); + + const bool gamma_only = std::is_same::value; + + // write .dat file + if (bit) + { +// write .dat file with MPI +#ifdef __MPI + FILE* out_matrix = nullptr; + + if (drank == 0) + { + out_matrix = fopen(filename.c_str(), "wb"); + fwrite(&dim, sizeof(int), 1, out_matrix); + } + + int ir=0; + int ic=0; + for (int i = 0; i < dim; ++i) + { + T* line = new T[tri ? dim - i : dim]; + ModuleBase::GlobalFunc::ZEROS(line, tri ? dim - i : dim); + + ir = pv.global2local_row(i); + if (ir >= 0) + { + // data collection + for (int j = (tri ? i : 0); j < dim; ++j) + { + ic = pv.global2local_col(j); + if (ic >= 0) + { + int iic; + if (ModuleBase::GlobalFunc::IS_COLUMN_MAJOR_KS_SOLVER(PARAM.inp.ks_solver)) + { + iic = ir + ic * pv.nrow; + } + else + { + iic = ir * pv.ncol + ic; + } + line[tri ? j - i : j] = mat[iic]; + } + } + } + + if (reduce) + { + Parallel_Reduce::reduce_all(line, tri ? dim - i : dim); + } + + if (drank == 0) + { + for (int j = (tri ? i : 0); j < dim; ++j) + { + fwrite(&line[tri ? j - i : j], sizeof(T), 1, out_matrix); + } + } + delete[] line; + + MPI_Barrier(DIAG_WORLD); + } + + if (drank == 0) + { + fclose(out_matrix); + } +// write .dat file without MPI +#else + FILE* out_matrix = fopen(filename.c_str(), "wb"); + + fwrite(&dim, sizeof(int), 1, out_matrix); + + for (int i = 0; i < dim; i++) + { + for (int j = (tri ? i : 0); j < dim; j++) + { + fwrite(&mat[i * dim + j], sizeof(T), 1, out_matrix); + } + } + fclose(out_matrix); +#endif + } // end writing .dat file + else // write .txt file + { + std::ofstream out_matrix; + out_matrix << std::scientific << std::setprecision(precision); +#ifdef __MPI + if (drank == 0) + { + if (app && istep > 0) + { + out_matrix.open(filename.c_str(), std::ofstream::app); + } + else + { + out_matrix.open(filename.c_str()); + } + out_matrix << "#------------------------------------------------------------------------" << std::endl; + out_matrix << "# ionic step " << istep+1 << std::endl; // istep starts from 0 + out_matrix << "# filename " << filename << std::endl; + out_matrix << "# gamma only " << gamma_only << std::endl; + out_matrix << "# rows " << dim << std::endl; + out_matrix << "# columns " << dim << std::endl; + out_matrix << "#------------------------------------------------------------------------" << std::endl; + + } + + int ir=0; + int ic=0; + for (int i = 0; i < dim; i++) + { + T* line = new T[tri ? dim - i : dim]; + ModuleBase::GlobalFunc::ZEROS(line, tri ? dim - i : dim); + + ir = pv.global2local_row(i); + if (ir >= 0) + { + // data collection + for (int j = (tri ? i : 0); j < dim; ++j) + { + ic = pv.global2local_col(j); + if (ic >= 0) + { + int iic=0; + if (ModuleBase::GlobalFunc::IS_COLUMN_MAJOR_KS_SOLVER(PARAM.inp.ks_solver)) + { + iic = ir + ic * pv.nrow; + } + else + { + iic = ir * pv.ncol + ic; + } + line[tri ? j - i : j] = mat[iic]; + } + } + } + + if (reduce) + { + Parallel_Reduce::reduce_all(line, tri ? dim - i : dim); + } + + if (drank == 0) + { + out_matrix << "Row " << i+1 << std::endl; + size_t count = 0; + for (int j = (tri ? i : 0); j < dim; j++) + { + out_matrix << " " << line[tri ? j - i : j]; + ++count; + if(count%8==0) + { + if(j!=dim-1) + { + out_matrix << std::endl; + } + } + } + out_matrix << std::endl; + } + delete[] line; + } + + if (drank == 0) + { + out_matrix.close(); + } +#else + if (app) + { + std::ofstream out_matrix(filename.c_str(), std::ofstream::app); + } + else + { + std::ofstream out_matrix(filename.c_str()); + } + + out_matrix << dim; + out_matrix << std::setprecision(precision); + for (int i = 0; i < dim; i++) + { + for (int j = (tri ? i : 0); j < dim; j++) + { + out_matrix << " " << mat[i * dim + j]; + } + out_matrix << std::endl; + } + out_matrix.close(); +#endif + } + ModuleBase::timer::tick("ModuleIO", "save_mat"); + return; +} diff --git a/source/source_io/module_hs/write_HS_R.cpp b/source/source_io/module_hs/write_HS_R.cpp new file mode 100644 index 0000000000..521d3f5475 --- /dev/null +++ b/source/source_io/module_hs/write_HS_R.cpp @@ -0,0 +1,352 @@ +#include "write_HS_R.h" + +#include "source_base/timer.h" +#include "source_io/module_parameter/parameter.h" +#include "source_lcao/LCAO_HS_arrays.hpp" +#include "source_lcao/spar_dh.h" +#include "source_lcao/spar_hsr.h" +#include "source_lcao/spar_st.h" +#include "write_HS_sparse.h" + +// if 'binary=true', output binary file. +// The 'sparse_thr' is the accuracy of the sparse matrix. +// If the absolute value of the matrix element is less than or equal to the +// 'sparse_thr', it will be ignored. +template +void ModuleIO::output_HSR(const UnitCell& ucell, + const int& istep, + const Parallel_Orbitals& pv, + LCAO_HS_Arrays& HS_Arrays, + const Grid_Driver& grid, // mohan add 2024-04-06 + const K_Vectors& kv, + Plus_U &dftu, // mohan add 20251107 + hamilt::Hamilt* p_ham, +#ifdef __EXX + const std::vector>>>* Hexxd, + const std::vector>>>>* Hexxc, +#endif + const std::string& SR_filename, + const std::string& HR_filename_up, + const std::string HR_filename_down, + const bool& binary, + const double& sparse_thr) +{ + + ModuleBase::TITLE("ModuleIO", "output_HSR"); + ModuleBase::timer::tick("ModuleIO", "output_HSR"); + + GlobalV::ofs_running << " >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>" << std::endl; + GlobalV::ofs_running << " | |" << std::endl; + GlobalV::ofs_running << " | #Print out Hamiltonian matrix H(R) or overlap matrix S(R)# |" << std::endl; + GlobalV::ofs_running << " | Use numerical atomic orbitals basis. Here R is the Bravis lattice |" << std::endl; + GlobalV::ofs_running << " | |" << std::endl; + GlobalV::ofs_running << " >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>" << std::endl; + + const int nspin = PARAM.inp.nspin; + + if (nspin == 1 || nspin == 4) + { + const int spin_now = 0; + // jingan add 2021-6-4, modify 2021-12-2 + sparse_format::cal_HSR(ucell, + dftu, // mohan add 20251107 + pv, + HS_Arrays, + grid, + spin_now, + sparse_thr, + kv.nmp, + p_ham +#ifdef __EXX + , + Hexxd, + Hexxc +#endif + ); + } + else if (nspin == 2) + { + int spin_now = 1; + + // save HR of spin down first (the current spin always be down) + sparse_format::cal_HSR(ucell, + dftu, + pv, + HS_Arrays, + grid, + spin_now, + sparse_thr, + kv.nmp, + p_ham +#ifdef __EXX + , + Hexxd, + Hexxc +#endif + ); + + // cal HR of the spin up + if (PARAM.inp.vl_in_h) + { + const int ik = 0; + p_ham->refresh(); + p_ham->updateHk(ik); + spin_now = 0; + } + + sparse_format::cal_HSR(ucell, + dftu, + pv, + HS_Arrays, + grid, + spin_now, + sparse_thr, + kv.nmp, + p_ham +#ifdef __EXX + , + Hexxd, + Hexxc +#endif + ); + } + + ModuleIO::save_HSR_sparse(istep, pv, HS_Arrays, sparse_thr, binary, SR_filename, HR_filename_up, HR_filename_down); + + sparse_format::destroy_HS_R_sparse(HS_Arrays); + + ModuleBase::timer::tick("ModuleIO", "output_HSR"); + return; +} + +void ModuleIO::output_dSR(const int& istep, + const UnitCell& ucell, + const Parallel_Orbitals& pv, + LCAO_HS_Arrays& HS_Arrays, + const Grid_Driver& grid, // mohan add 2024-04-06 + const TwoCenterBundle& two_center_bundle, + const LCAO_Orbitals& orb, + const K_Vectors& kv, + const bool& binary, + const double& sparse_thr) +{ + ModuleBase::TITLE("ModuleIO", "output_dSR"); + ModuleBase::timer::tick("ModuleIO", "output_dSR"); + + sparse_format::cal_dS(ucell, pv, HS_Arrays, grid, two_center_bundle, orb, sparse_thr); + + // mohan update 2024-04-01 + ModuleIO::save_dH_sparse(istep, pv, HS_Arrays, sparse_thr, binary, "s"); + + sparse_format::destroy_dH_R_sparse(HS_Arrays); + + ModuleBase::timer::tick("ModuleIO", "output_dSR"); + return; +} + +void ModuleIO::output_dHR(const int& istep, + const ModuleBase::matrix& v_eff, + const UnitCell& ucell, + const Parallel_Orbitals& pv, + LCAO_HS_Arrays& HS_Arrays, + const Grid_Driver& grid, // mohan add 2024-04-06 + const TwoCenterBundle& two_center_bundle, + const LCAO_Orbitals& orb, + const K_Vectors& kv, + const bool& binary, + const double& sparse_thr) +{ + ModuleBase::TITLE("ModuleIO", "output_dHR"); + ModuleBase::timer::tick("ModuleIO", "output_dHR"); + + GlobalV::ofs_running << " >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>" << std::endl; + GlobalV::ofs_running << " | |" << std::endl; + GlobalV::ofs_running << " | #Print out dH/dR# |" << std::endl; + GlobalV::ofs_running << " | |" << std::endl; + GlobalV::ofs_running << " >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>" << std::endl; + + const int nspin = PARAM.inp.nspin; + + if (nspin == 1 || nspin == 4) + { + // mohan add 2024-04-01 + const int cspin = 0; + + sparse_format::cal_dH(ucell, pv, HS_Arrays, grid, two_center_bundle, orb, cspin, sparse_thr, v_eff); + } + else if (nspin == 2) + { + for (int cspin = 0; cspin < 2; cspin++) + { + sparse_format::cal_dH(ucell, pv, HS_Arrays, grid, two_center_bundle, orb, cspin, sparse_thr, v_eff); + } + } + // mohan update 2024-04-01 + ModuleIO::save_dH_sparse(istep, pv, HS_Arrays, sparse_thr, binary); + + sparse_format::destroy_dH_R_sparse(HS_Arrays); + + ModuleBase::timer::tick("ModuleIO", "output_dHR"); + return; +} + +template +void ModuleIO::output_SR(Parallel_Orbitals& pv, + const Grid_Driver& grid, + hamilt::Hamilt* p_ham, + const std::string& SR_filename, + const bool& binary, + const double& sparse_thr) +{ + ModuleBase::TITLE("ModuleIO", "output_SR"); + ModuleBase::timer::tick("ModuleIO", "output_SR"); + + GlobalV::ofs_running << " >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>" << std::endl; + GlobalV::ofs_running << " | |" << std::endl; + GlobalV::ofs_running << " | #Print out overlap matrix S(R)# |" << std::endl; + GlobalV::ofs_running << " | |" << std::endl; + GlobalV::ofs_running << " >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>" << std::endl; + + std::cout << " Overlap matrix file is in " << SR_filename << std::endl; + GlobalV::ofs_running << " Overlap matrix file is in " << SR_filename << std::endl; + + LCAO_HS_Arrays HS_Arrays; + + sparse_format::cal_SR(pv, + HS_Arrays.all_R_coor, + HS_Arrays.SR_sparse, + HS_Arrays.SR_soc_sparse, + grid, + sparse_thr, + p_ham); + + const int istep = 0; + + if (PARAM.inp.nspin == 4) + { + ModuleIO::save_sparse(HS_Arrays.SR_soc_sparse, + HS_Arrays.all_R_coor, + sparse_thr, + binary, + SR_filename, + pv, + "S", + istep); + } + else + { + ModuleIO::save_sparse(HS_Arrays.SR_sparse, + HS_Arrays.all_R_coor, + sparse_thr, + binary, + SR_filename, + pv, + "S", + istep); + } + + sparse_format::destroy_HS_R_sparse(HS_Arrays); + + ModuleBase::timer::tick("ModuleIO", "output_SR"); + return; +} + +void ModuleIO::output_TR(const int istep, + const UnitCell& ucell, + const Parallel_Orbitals& pv, + LCAO_HS_Arrays& HS_Arrays, + const Grid_Driver& grid, + const TwoCenterBundle& two_center_bundle, + const LCAO_Orbitals& orb, + const std::string& TR_filename, + const bool& binary, + const double& sparse_thr) +{ + ModuleBase::TITLE("ModuleIO", "output_TR"); + ModuleBase::timer::tick("ModuleIO", "output_TR"); + + GlobalV::ofs_running << " >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>" << std::endl; + GlobalV::ofs_running << " | |" << std::endl; + GlobalV::ofs_running << " | #Print out kinetic energy term matrix T(R)# |" << std::endl; + GlobalV::ofs_running << " | |" << std::endl; + GlobalV::ofs_running << " >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>" << std::endl; + + std::stringstream sst; + if (PARAM.inp.calculation == "md" && !PARAM.inp.out_app_flag) + { + sst << PARAM.globalv.global_matrix_dir << TR_filename << "g" << istep; + GlobalV::ofs_running << " T(R) data are in file: " << sst.str() << std::endl; + } + else + { + sst << PARAM.globalv.global_out_dir << TR_filename; + GlobalV::ofs_running << " T(R) data are in file: " << sst.str() << std::endl; + } + + sparse_format::cal_TR(ucell, pv, HS_Arrays, grid, two_center_bundle, orb, sparse_thr); + + ModuleIO::save_sparse(HS_Arrays.TR_sparse, + HS_Arrays.all_R_coor, + sparse_thr, + binary, + sst.str().c_str(), + pv, + "T", + istep); + + sparse_format::destroy_T_R_sparse(HS_Arrays); + + ModuleBase::timer::tick("ModuleIO", "output_TR"); + return; +} + +template void ModuleIO::output_HSR( + const UnitCell& ucell, + const int& istep, + const Parallel_Orbitals& pv, + LCAO_HS_Arrays& HS_Arrays, + const Grid_Driver& grid, + const K_Vectors& kv, + Plus_U &dftu, // mohan add 20251107 + hamilt::Hamilt* p_ham, +#ifdef __EXX + const std::vector>>>* Hexxd, + const std::vector>>>>* Hexxc, +#endif + const std::string& SR_filename, + const std::string& HR_filename_up, + const std::string HR_filename_down, + const bool& binary, + const double& sparse_thr); + +template void ModuleIO::output_HSR>( + const UnitCell& ucell, + const int& istep, + const Parallel_Orbitals& pv, + LCAO_HS_Arrays& HS_Arrays, + const Grid_Driver& grid, + const K_Vectors& kv, + Plus_U &dftu, // mohan add 20251107 + hamilt::Hamilt>* p_ham, +#ifdef __EXX + const std::vector>>>* Hexxd, + const std::vector>>>>* Hexxc, +#endif + const std::string& SR_filename, + const std::string& HR_filename_up, + const std::string HR_filename_down, + const bool& binary, + const double& sparse_thr); + +template void ModuleIO::output_SR(Parallel_Orbitals& pv, + const Grid_Driver& grid, + hamilt::Hamilt* p_ham, + const std::string& SR_filename, + const bool& binary, + const double& sparse_thr); +template void ModuleIO::output_SR>(Parallel_Orbitals& pv, + const Grid_Driver& grid, + hamilt::Hamilt>* p_ham, + const std::string& SR_filename, + const bool& binary, + const double& sparse_thr); diff --git a/source/source_io/module_hs/write_HS_R.h b/source/source_io/module_hs/write_HS_R.h new file mode 100644 index 0000000000..fcd2dd1172 --- /dev/null +++ b/source/source_io/module_hs/write_HS_R.h @@ -0,0 +1,81 @@ +#ifndef WRITE_HS_R_H +#define WRITE_HS_R_H + +#include "source_base/matrix.h" +#include "source_basis/module_nao/two_center_bundle.h" +#include "source_cell/klist.h" +#include "source_hamilt/hamilt.h" +#include "source_lcao/LCAO_HS_arrays.hpp" +#include "source_lcao/module_dftu/dftu.h" // mohan add 20251107 + +#ifdef __EXX +#include "source_hamilt/module_xc/exx_info.h" // use GlobalC::exx_info +#include "RI/global/Tensor.h" // for RI::Tensor +#endif + +namespace ModuleIO +{ +using TAC = std::pair>; +template +void output_HSR(const UnitCell& ucell, + const int& istep, + const Parallel_Orbitals& pv, + LCAO_HS_Arrays& HS_Arrays, + const Grid_Driver& grid, // mohan add 2024-04-06 + const K_Vectors& kv, + Plus_U &dftu, // mohan add 20251107 + hamilt::Hamilt* p_ham, +#ifdef __EXX + const std::vector>>>* Hexxd = nullptr, + const std::vector>>>>* Hexxc = nullptr, +#endif + const std::string& SR_filename = "srs1_nao.csr", + const std::string& HR_filename_up = "hrs1_nao.csr", + const std::string HR_filename_down = "hrs2_nao.csr", + const bool& binary = false, + const double& sparse_threshold = 1e-10); // LiuXh add 2019-07-15, modify in 2021-12-3 + +void output_dHR(const int& istep, + const ModuleBase::matrix& v_eff, + const UnitCell& ucell, + const Parallel_Orbitals& pv, + LCAO_HS_Arrays& HS_Arrays, + const Grid_Driver& grid, // mohan add 2024-04-06 + const TwoCenterBundle& two_center_bundle, + const LCAO_Orbitals& orb, + const K_Vectors& kv, + const bool& binary = false, + const double& sparse_threshold = 1e-10); + +void output_dSR(const int& istep, + const UnitCell& ucell, + const Parallel_Orbitals& pv, + LCAO_HS_Arrays& HS_Arrays, + const Grid_Driver& grid, // mohan add 2024-04-06 + const TwoCenterBundle& two_center_bundle, + const LCAO_Orbitals& orb, + const K_Vectors& kv, + const bool& binary = false, + const double& sparse_thr = 1e-10); + +void output_TR(const int istep, + const UnitCell& ucell, + const Parallel_Orbitals& pv, + LCAO_HS_Arrays& HS_Arrays, + const Grid_Driver& grid, + const TwoCenterBundle& two_center_bundle, + const LCAO_Orbitals& orb, + const std::string& TR_filename = "trs1_nao.csr", + const bool& binary = false, + const double& sparse_threshold = 1e-10); + +template +void output_SR(Parallel_Orbitals& pv, + const Grid_Driver& grid, + hamilt::Hamilt* p_ham, + const std::string& SR_filename = "srs1_nao.csr", + const bool& binary = false, + const double& sparse_threshold = 1e-10); +} // namespace ModuleIO + +#endif diff --git a/source/source_io/write_HS_sparse.cpp b/source/source_io/module_hs/write_HS_sparse.cpp similarity index 99% rename from source/source_io/write_HS_sparse.cpp rename to source/source_io/module_hs/write_HS_sparse.cpp index 505933ad0d..382ece5a03 100644 --- a/source/source_io/write_HS_sparse.cpp +++ b/source/source_io/module_hs/write_HS_sparse.cpp @@ -4,7 +4,6 @@ #include "source_base/parallel_reduce.h" #include "source_base/timer.h" #include "source_lcao/module_rt/td_info.h" -#include "source_pw/module_pwdft/global.h" #include "single_R_io.h" void ModuleIO::save_HSR_sparse(const int& istep, @@ -716,7 +715,7 @@ void ModuleIO::save_sparse( ModuleBase::timer::tick("ModuleIO", "save_sparse"); int total_R_num = all_R_coor.size(); - std::vector nonzero_num(total_R_num, 0); + std::vector nonzero_num(total_R_num, 0); int count = 0; for (auto& R_coor: all_R_coor) { auto iter = smat.find(R_coor); diff --git a/source/source_io/write_HS_sparse.h b/source/source_io/module_hs/write_HS_sparse.h similarity index 100% rename from source/source_io/write_HS_sparse.h rename to source/source_io/module_hs/write_HS_sparse.h diff --git a/source/source_io/write_vxc.hpp b/source/source_io/module_hs/write_vxc.hpp similarity index 89% rename from source/source_io/write_vxc.hpp rename to source/source_io/module_hs/write_vxc.hpp index 43fd803bb7..52e70e2514 100644 --- a/source/source_io/write_vxc.hpp +++ b/source/source_io/module_hs/write_vxc.hpp @@ -7,26 +7,8 @@ #include "source_lcao/module_operator_lcao/op_dftu_lcao.h" #include "source_lcao/module_operator_lcao/veff_lcao.h" #include "source_psi/psi.h" -#include "source_io/write_HS.h" -#include "source_io/filename.h" // use filename_output function - -#ifndef TGINT_H -#define TGINT_H -template -struct TGint; - -template <> -struct TGint -{ - using type = Gint_Gamma; -}; - -template <> -struct TGint> -{ - using type = Gint_k; -}; -#endif +#include "source_io/module_hs/write_HS.h" +#include "source_io/module_output/filename.h" // use filename_output function namespace ModuleIO { @@ -125,29 +107,6 @@ std::vector orbital_energy(const int ik, const int nbands, const std::ve return e; } -#ifndef SET_GINT_POINTER_H -#define SET_GINT_POINTER_H -// mohan update 2024-04-01 -template -void set_gint_pointer(Gint_Gamma& gint_gamma, Gint_k& gint_k, typename TGint::type*& gint); - -// mohan update 2024-04-01 -template <> -void set_gint_pointer(Gint_Gamma& gint_gamma, Gint_k& gint_k, typename TGint::type*& gint) -{ - gint = &gint_gamma; -} - -// mohan update 2024-04-01 -template <> -void set_gint_pointer>(Gint_Gamma& gint_gamma, - Gint_k& gint_k, - typename TGint>::type*& gint) -{ - gint = &gint_k; -} -#endif - inline void write_orb_energy(const K_Vectors& kv, const int nspin0, const int nbands, const std::vector>& e_orb, @@ -187,8 +146,6 @@ void write_Vxc(const int nspin, const ModulePW::PW_Basis& rhod_basis, const ModuleBase::matrix& vloc, const Charge& chg, - Gint_Gamma& gint_gamma, // mohan add 2024-04-01 - Gint_k& gint_k, // mohan add 2024-04-01 const K_Vectors& kv, const std::vector& orb_cutoff, const ModuleBase::matrix& wg, @@ -227,14 +184,11 @@ void write_Vxc(const int nspin, // 3. allocate operators and contribute HR // op (corresponding to hR) - typename TGint::type* gint = nullptr; - - set_gint_pointer(gint_gamma, gint_k, gint); std::vector>*> vxcs_op_ao(nspin0); for (int is = 0; is < nspin0; ++is) { - vxcs_op_ao[is] = new hamilt::Veff>(gint, + vxcs_op_ao[is] = new hamilt::Veff>( &vxc_k_ao, kv.kvec_d, potxc, &vxcs_R_ao[is], &ucell, orb_cutoff, &gd, nspin); vxcs_op_ao[is]->contributeHR(); @@ -249,7 +203,7 @@ void write_Vxc(const int nspin, &vxcs_R_ao[0],ucell,/*for paraV*/ kv, Hexxd, Hexxc, hamilt::Add_Hexx_Type::k); std::vector> e_orb_exx; // orbital energy (EXX) #endif - hamilt::OperatorDFTU> vdftu_op_ao(&vxc_k_ao, kv.kvec_d, nullptr, kv.isk); + hamilt::OperatorDFTU> vdftu_op_ao(&vxc_k_ao, kv.kvec_d, nullptr, nullptr, kv.isk); // 4. calculate and write the MO-matrix Exc Parallel_2D p2d; diff --git a/source/source_io/write_vxc_lip.hpp b/source/source_io/module_hs/write_vxc_lip.hpp similarity index 98% rename from source/source_io/write_vxc_lip.hpp rename to source/source_io/module_hs/write_vxc_lip.hpp index 3705993022..30a7e043d0 100644 --- a/source/source_io/write_vxc_lip.hpp +++ b/source/source_io/module_hs/write_vxc_lip.hpp @@ -3,13 +3,13 @@ #include "source_io/module_parameter/parameter.h" #include "source_base/parallel_reduce.h" #include "source_base/module_container/base/third_party/blas.h" -#include "source_pw/module_pwdft/operator_pw/veff_pw.h" +#include "source_pw/module_pwdft/op_pw_veff.h" #include "source_psi/psi.h" #include "source_cell/unitcell.h" #include "source_cell/klist.h" #include "source_estate/module_pot/potential_new.h" -#include "source_io/write_HS.h" -#include "source_io/filename.h" // use filename_output function +#include "source_io/module_hs/write_HS.h" +#include "source_io/module_output/filename.h" // use filename_output function #include namespace ModuleIO diff --git a/source/source_io/module_hs/write_vxc_r.hpp b/source/source_io/module_hs/write_vxc_r.hpp new file mode 100644 index 0000000000..04c01d80ca --- /dev/null +++ b/source/source_io/module_hs/write_vxc_r.hpp @@ -0,0 +1,161 @@ +#ifndef __WRITE_VXC_R_H_ +#define __WRITE_VXC_R_H_ +#include "source_io/module_parameter/parameter.h" +#include "source_io/module_hs/write_HS_sparse.h" +#include "source_lcao/module_operator_lcao/op_dftu_lcao.h" +#include "source_lcao/module_operator_lcao/veff_lcao.h" +#include "source_lcao/spar_hsr.h" +#ifdef __EXX +#include "source_lcao/module_operator_lcao/op_exx_lcao.h" +#include "source_lcao/module_ri/RI_2D_Comm.h" +#endif + +namespace ModuleIO +{ +template +std::set> get_R_range(const hamilt::HContainer& hR) +{ + std::set> all_R_coor; + + return all_R_coor; +} + +template +std::map, std::map>> cal_HR_sparse(const hamilt::HContainer& hR, + const double sparse_thr) +{ + std::map, std::map>> target; + sparse_format::cal_HContainer(*hR.get_paraV(), sparse_thr, hR, target); + return target; +} + +/// @brief write the Vxc matrix in KS orbital representation, usefull for GW calculation +/// including terms: local/semi-local XC, EXX, DFTU +template +void write_Vxc_R(const int nspin, + const Parallel_Orbitals* pv, + const UnitCell& ucell, + Structure_Factor& sf, + surchem& solvent, + const ModulePW::PW_Basis& rho_basis, + const ModulePW::PW_Basis& rhod_basis, + const ModuleBase::matrix& vloc, + const Charge& chg, + const K_Vectors& kv, + const std::vector& orb_cutoff, + Grid_Driver& gd, +#ifdef __EXX + const std::vector>>>* const Hexxd, + const std::vector>>>>* const Hexxc, +#endif + const double sparse_thr = 1e-10) +{ + ModuleBase::TITLE("ModuleIO", "write_Vxc_R"); + // 1. real-space xc potential + // ModuleBase::matrix vr_xc(nspin, chg.nrxx); + double etxc = 0.0; + double vtxc = 0.0; + // elecstate::PotXC* potxc(&rho_basis, &etxc, vtxc, nullptr); + // potxc.cal_v_eff(&chg, &ucell, vr_xc); + elecstate::Potential* potxc + = new elecstate::Potential(&rhod_basis, &rho_basis, &ucell, &vloc, &sf, &solvent, &etxc, &vtxc); + std::vector compnents_list = {"xc"}; + potxc->pot_register(compnents_list); + potxc->update_from_charge(&chg, &ucell); + + // 2. allocate H(R) + // (the number of hR: 1 for nspin=1, 4; 2 for nspin=2) + int nspin0 = (nspin == 2) ? 2 : 1; + std::vector> vxcs_R_ao(nspin0, hamilt::HContainer(ucell, pv)); // call move constructor +#ifdef __EXX + std::array Rs_period = {kv.nmp[0], kv.nmp[1], kv.nmp[2]}; + const auto cell_nearest = hamilt::init_cell_nearest(ucell, Rs_period); +#endif + for (int is = 0; is < nspin0; ++is) + { + if (std::is_same::value) + { + vxcs_R_ao[is].fix_gamma(); + } +#ifdef __EXX + if (GlobalC::exx_info.info_global.cal_exx) + { + GlobalC::exx_info.info_ri.real_number + ? hamilt::reallocate_hcontainer(*Hexxd, &vxcs_R_ao[is], &cell_nearest) + : hamilt::reallocate_hcontainer(*Hexxc, &vxcs_R_ao[is], &cell_nearest); + } +#endif + } + + // 3. calculate the Vxc(R) + hamilt::HS_Matrix_K vxc_k_ao(pv, 1); // only hk is needed, sk is skipped + std::vector>*> vxcs_op_ao(nspin0); + for (int is = 0; is < nspin0; ++is) + { + vxcs_op_ao[is] = new hamilt::Veff>(&vxc_k_ao, + kv.kvec_d, + potxc, + &vxcs_R_ao[is], + &ucell, + orb_cutoff, + &gd, + nspin); + vxcs_op_ao[is]->contributeHR(); +#ifdef __EXX + if (GlobalC::exx_info.info_global.cal_exx) + { + GlobalC::exx_info.info_ri.real_number ? RI_2D_Comm::add_HexxR(is, + GlobalC::exx_info.info_global.hybrid_alpha, + *Hexxd, + *pv, + ucell.get_npol(), + vxcs_R_ao[is], + &cell_nearest) + : RI_2D_Comm::add_HexxR(is, + GlobalC::exx_info.info_global.hybrid_alpha, + *Hexxc, + *pv, + ucell.get_npol(), + vxcs_R_ao[is], + &cell_nearest); + } +#endif + } + + // test: fold Vxc(R) and check whether it is equal to Vxc(k) + // for (int ik = 0; ik < kv.get_nks(); ++ik) + // { + // vxc_k_ao.set_zero_hk(); + // dynamic_cast*>(vxcs_op_ao[kv.isk[ik]])->contributeHk(ik); + + // // output Vxc(k) (test) + // const TK* const hk = vxc_k_ao.get_hk(); + // std::cout << "ik=" << ik << ", Vxc(K): " << std::endl; + // for (int i = 0; i < pv->get_row_size(); i++) + // { + // for (int j = 0; j < pv->get_col_size(); j++) + // { + // std::cout << hk[j * pv->get_row_size() + i] << " "; + // } + // std::cout << std::endl; + // } + // } + + // 4. write Vxc(R) in csr format + for (int is = 0; is < nspin0; ++is) + { + std::set> all_R_coor = sparse_format::get_R_range(vxcs_R_ao[is]); + const std::string filename = "Vxc_R_spin" + std::to_string(is); + ModuleIO::save_sparse(cal_HR_sparse(vxcs_R_ao[is], sparse_thr), + all_R_coor, + sparse_thr, + false, // binary + PARAM.globalv.global_out_dir + filename + ".csr", + *pv, + filename, + -1, + true); // all-reduce + } +} +} // namespace ModuleIO +#endif diff --git a/source/source_io/json_output/CMakeLists.txt b/source/source_io/module_json/CMakeLists.txt similarity index 100% rename from source/source_io/json_output/CMakeLists.txt rename to source/source_io/module_json/CMakeLists.txt diff --git a/source/source_io/json_output/abacusjson.cpp b/source/source_io/module_json/abacusjson.cpp similarity index 100% rename from source/source_io/json_output/abacusjson.cpp rename to source/source_io/module_json/abacusjson.cpp diff --git a/source/source_io/json_output/abacusjson.h b/source/source_io/module_json/abacusjson.h similarity index 100% rename from source/source_io/json_output/abacusjson.h rename to source/source_io/module_json/abacusjson.h diff --git a/source/source_io/json_output/general_info.cpp b/source/source_io/module_json/general_info.cpp similarity index 98% rename from source/source_io/json_output/general_info.cpp rename to source/source_io/module_json/general_info.cpp index c57a9c5746..8b45c0f192 100644 --- a/source/source_io/json_output/general_info.cpp +++ b/source/source_io/module_json/general_info.cpp @@ -1,6 +1,6 @@ #include "general_info.h" -#include "../para_json.h" +#include "para_json.h" #include "abacusjson.h" #include "source_base/parallel_global.h" #include "source_main/version.h" @@ -68,4 +68,4 @@ void gen_general_info(const Parameter& param) // AbacusJson::add_Json(end_time_str,false,"general_info", "end_time"); } #endif -} // namespace Json \ No newline at end of file +} // namespace Json diff --git a/source/source_io/json_output/general_info.h b/source/source_io/module_json/general_info.h similarity index 100% rename from source/source_io/json_output/general_info.h rename to source/source_io/module_json/general_info.h diff --git a/source/source_io/json_output/init_info.cpp b/source/source_io/module_json/init_info.cpp similarity index 99% rename from source/source_io/json_output/init_info.cpp rename to source/source_io/module_json/init_info.cpp index 2bcc479659..647df761bb 100644 --- a/source/source_io/json_output/init_info.cpp +++ b/source/source_io/module_json/init_info.cpp @@ -1,7 +1,7 @@ #include "init_info.h" #include "source_io/module_parameter/parameter.h" -#include "../para_json.h" +#include "para_json.h" #include "abacusjson.h" // Add json objects to init @@ -149,4 +149,4 @@ void gen_stru(UnitCell* ucell) } #endif -} // namespace Json \ No newline at end of file +} // namespace Json diff --git a/source/source_io/json_output/init_info.h b/source/source_io/module_json/init_info.h similarity index 100% rename from source/source_io/json_output/init_info.h rename to source/source_io/module_json/init_info.h diff --git a/source/source_io/json_output/json_node.h b/source/source_io/module_json/json_node.h similarity index 100% rename from source/source_io/json_output/json_node.h rename to source/source_io/module_json/json_node.h diff --git a/source/source_io/json_output/output_info.cpp b/source/source_io/module_json/output_info.cpp similarity index 99% rename from source/source_io/json_output/output_info.cpp rename to source/source_io/module_json/output_info.cpp index 4cc9add9de..0789bf67f5 100644 --- a/source/source_io/json_output/output_info.cpp +++ b/source/source_io/module_json/output_info.cpp @@ -1,5 +1,5 @@ #include "output_info.h" -#include "../para_json.h" +#include "para_json.h" #include "source_io/module_parameter/parameter.h" #include "abacusjson.h" @@ -162,4 +162,4 @@ namespace Json } #endif -} // namespace Json \ No newline at end of file +} // namespace Json diff --git a/source/source_io/json_output/output_info.h b/source/source_io/module_json/output_info.h similarity index 100% rename from source/source_io/json_output/output_info.h rename to source/source_io/module_json/output_info.h diff --git a/source/source_io/para_json.cpp b/source/source_io/module_json/para_json.cpp similarity index 88% rename from source/source_io/para_json.cpp rename to source/source_io/module_json/para_json.cpp index 526567429e..f5cdf7be81 100644 --- a/source/source_io/para_json.cpp +++ b/source/source_io/module_json/para_json.cpp @@ -1,18 +1,14 @@ - #include "para_json.h" - #include "source_base/global_variable.h" - #include #include #include #include #ifdef __RAPIDJSON -#include "json_output/abacusjson.h" -#include "json_output/general_info.h" -#include "json_output/init_info.h" -#include "json_output/readin_info.h" - +#include "abacusjson.h" +#include "general_info.h" +#include "init_info.h" +#include "readin_info.h" #endif // __RAPIDJSON namespace Json diff --git a/source/source_io/para_json.h b/source/source_io/module_json/para_json.h similarity index 100% rename from source/source_io/para_json.h rename to source/source_io/module_json/para_json.h diff --git a/source/source_io/module_json/readin_info.cpp b/source/source_io/module_json/readin_info.cpp new file mode 100644 index 0000000000..a150967af8 --- /dev/null +++ b/source/source_io/module_json/readin_info.cpp @@ -0,0 +1,11 @@ +#include "readin_info.h" +#include "para_json.h" +#include "abacusjson.h" + +//Add json objects to init +namespace Json +{ + +#ifdef __RAPIDJSON +#endif +} // namespace Json diff --git a/source/source_io/json_output/readin_info.h b/source/source_io/module_json/readin_info.h similarity index 100% rename from source/source_io/json_output/readin_info.h rename to source/source_io/module_json/readin_info.h diff --git a/source/source_io/module_json/test/CMakeLists.txt b/source/source_io/module_json/test/CMakeLists.txt new file mode 100644 index 0000000000..288009206e --- /dev/null +++ b/source/source_io/module_json/test/CMakeLists.txt @@ -0,0 +1,11 @@ +remove_definitions(-D__MLALGO) +remove_definitions(-D__CUDA) +remove_definitions(-D__ROCM) +remove_definitions(-D__EXX) + +AddTest( + TARGET MODULE_IO_JSON_OUTPUT_TEST + LIBS parameter ${math_libs} base device cell_info + SOURCES para_json_test.cpp ../general_info.cpp ../init_info.cpp ../readin_info.cpp + ../para_json.cpp ../abacusjson.cpp ../../module_output/output.cpp +) diff --git a/source/source_io/json_output/test/para_json_test.cpp b/source/source_io/module_json/test/para_json_test.cpp similarity index 98% rename from source/source_io/json_output/test/para_json_test.cpp rename to source/source_io/module_json/test/para_json_test.cpp index 94a1e5e5dd..1b6a5b71d2 100644 --- a/source/source_io/json_output/test/para_json_test.cpp +++ b/source/source_io/module_json/test/para_json_test.cpp @@ -1,12 +1,13 @@ #include "gtest/gtest.h" + #define private public #define __RAPIDJSON 1 -#include "../abacusjson.h" -#include "../general_info.h" -#include "../init_info.h" -#include "../readin_info.h" +#include "source_io/module_json/abacusjson.h" +#include "source_io/module_json/general_info.h" +#include "source_io/module_json/init_info.h" +#include "source_io/module_json/readin_info.h" #include "source_io/module_parameter/parameter.h" -#include "source_io/para_json.h" +#include "source_io/module_json/para_json.h" #include "source_main/version.h" #undef private /************************************************ diff --git a/source/source_io/cal_mlkedf_descriptors.cpp b/source/source_io/module_ml/cal_mlkedf_descriptors.cpp similarity index 91% rename from source/source_io/cal_mlkedf_descriptors.cpp rename to source/source_io/module_ml/cal_mlkedf_descriptors.cpp index 58e3f8f259..b0b627fec2 100644 --- a/source/source_io/cal_mlkedf_descriptors.cpp +++ b/source/source_io/module_ml/cal_mlkedf_descriptors.cpp @@ -19,7 +19,7 @@ void Cal_MLKEDF_Descriptors::set_para( const std::vector &yukawa_alpha, const std::vector &kernel_file, const double &omega, - ModulePW::PW_Basis *pw_rho + const ModulePW::PW_Basis *pw_rho ) { this->nx = nx; @@ -129,7 +129,7 @@ double Cal_MLKEDF_Descriptors::MLkernel_yukawa(double eta, double alpha) } // Read kernel from file -void Cal_MLKEDF_Descriptors::read_kernel(const std::string &fileName, const double& scaling, ModulePW::PW_Basis *pw_rho, double* kernel_) +void Cal_MLKEDF_Descriptors::read_kernel(const std::string &fileName, const double& scaling, const ModulePW::PW_Basis *pw_rho, double* kernel_) { std::ifstream ifs(fileName.c_str(), std::ios::in); @@ -203,7 +203,7 @@ void Cal_MLKEDF_Descriptors::read_kernel(const std::string &fileName, const doub ModuleBase::GlobalFunc::DONE(GlobalV::ofs_running, "FILL WT KERNEL"); } -void Cal_MLKEDF_Descriptors::multiKernel(const int ikernel, double *pinput, ModulePW::PW_Basis *pw_rho, double *routput) +void Cal_MLKEDF_Descriptors::multiKernel(const int ikernel, double *pinput, const ModulePW::PW_Basis *pw_rho, double *routput) { std::complex *recipOutput = new std::complex[pw_rho->npw]; @@ -217,7 +217,7 @@ void Cal_MLKEDF_Descriptors::multiKernel(const int ikernel, double *pinput, Modu delete[] recipOutput; } -void Cal_MLKEDF_Descriptors::Laplacian(double * pinput, ModulePW::PW_Basis *pw_rho, double * routput) +void Cal_MLKEDF_Descriptors::Laplacian(double * pinput, const ModulePW::PW_Basis *pw_rho, double * routput) { std::complex *recipContainer = new std::complex[pw_rho->npw]; @@ -231,7 +231,7 @@ void Cal_MLKEDF_Descriptors::Laplacian(double * pinput, ModulePW::PW_Basis *pw_r delete[] recipContainer; } -void Cal_MLKEDF_Descriptors::divergence(double ** pinput, ModulePW::PW_Basis *pw_rho, double * routput) +void Cal_MLKEDF_Descriptors::divergence(double ** pinput, const ModulePW::PW_Basis *pw_rho, double * routput) { std::complex *recipContainer = new std::complex[pw_rho->npw]; std::complex img(0.0, 1.0); @@ -270,7 +270,7 @@ void Cal_MLKEDF_Descriptors::getGamma(const double * const *prho, std::vector> &pnablaRho, std::vector &rp) +void Cal_MLKEDF_Descriptors::getP(const double * const *prho, const ModulePW::PW_Basis *pw_rho, std::vector> &pnablaRho, std::vector &rp) { for(int ir = 0; ir < this->nx; ++ir) { @@ -283,7 +283,7 @@ void Cal_MLKEDF_Descriptors::getP(const double * const *prho, ModulePW::PW_Basis } } -void Cal_MLKEDF_Descriptors::getQ(const double * const *prho, ModulePW::PW_Basis *pw_rho, std::vector &rq) +void Cal_MLKEDF_Descriptors::getQ(const double * const *prho, const ModulePW::PW_Basis *pw_rho, std::vector &rq) { // get Laplacian rho std::complex *recipRho = new std::complex[pw_rho->npw]; @@ -302,17 +302,17 @@ void Cal_MLKEDF_Descriptors::getQ(const double * const *prho, ModulePW::PW_Basis delete[] recipRho; } -void Cal_MLKEDF_Descriptors::getGammanl(const int ikernel, std::vector &pgamma, ModulePW::PW_Basis *pw_rho, std::vector &rgammanl) +void Cal_MLKEDF_Descriptors::getGammanl(const int ikernel, std::vector &pgamma, const ModulePW::PW_Basis *pw_rho, std::vector &rgammanl) { this->multiKernel(ikernel, pgamma.data(), pw_rho, rgammanl.data()); } -void Cal_MLKEDF_Descriptors::getPnl(const int ikernel, std::vector &pp, ModulePW::PW_Basis *pw_rho, std::vector &rpnl) +void Cal_MLKEDF_Descriptors::getPnl(const int ikernel, std::vector &pp, const ModulePW::PW_Basis *pw_rho, std::vector &rpnl) { this->multiKernel(ikernel, pp.data(), pw_rho, rpnl.data()); } -void Cal_MLKEDF_Descriptors::getQnl(const int ikernel, std::vector &pq, ModulePW::PW_Basis *pw_rho, std::vector &rqnl) +void Cal_MLKEDF_Descriptors::getQnl(const int ikernel, std::vector &pq, const ModulePW::PW_Basis *pw_rho, std::vector &rqnl) { this->multiKernel(ikernel, pq.data(), pw_rho, rqnl.data()); } @@ -376,19 +376,19 @@ void Cal_MLKEDF_Descriptors::getTanh_Qnl(const int ikernel, std::vector } // tanh(p)_nl -void Cal_MLKEDF_Descriptors::getTanhP_nl(const int ikernel, std::vector &ptanhp, ModulePW::PW_Basis *pw_rho, std::vector &rtanhp_nl) +void Cal_MLKEDF_Descriptors::getTanhP_nl(const int ikernel, std::vector &ptanhp, const ModulePW::PW_Basis *pw_rho, std::vector &rtanhp_nl) { this->multiKernel(ikernel, ptanhp.data(), pw_rho, rtanhp_nl.data()); } // tanh(q)_nl -void Cal_MLKEDF_Descriptors::getTanhQ_nl(const int ikernel, std::vector &ptanhq, ModulePW::PW_Basis *pw_rho, std::vector &rtanhq_nl) +void Cal_MLKEDF_Descriptors::getTanhQ_nl(const int ikernel, std::vector &ptanhq, const ModulePW::PW_Basis *pw_rho, std::vector &rtanhq_nl) { this->multiKernel(ikernel, ptanhq.data(), pw_rho, rtanhq_nl.data()); } // (tanhxi)_nl -void Cal_MLKEDF_Descriptors::getTanhXi_nl(const int ikernel, std::vector &ptanhxi, ModulePW::PW_Basis *pw_rho, std::vector &rtanhxi_nl) +void Cal_MLKEDF_Descriptors::getTanhXi_nl(const int ikernel, std::vector &ptanhxi, const ModulePW::PW_Basis *pw_rho, std::vector &rtanhxi_nl) { this->multiKernel(ikernel, ptanhxi.data(), pw_rho, rtanhxi_nl.data()); } @@ -397,7 +397,7 @@ void Cal_MLKEDF_Descriptors::getF_KS( psi::Psi> *psi, elecstate::ElecState *pelec, ModulePW::PW_Basis_K *pw_psi, - ModulePW::PW_Basis *pw_rho, + const ModulePW::PW_Basis *pw_rho, UnitCell& ucell, const std::vector> &nablaRho, std::vector &rF, @@ -416,7 +416,7 @@ void Cal_MLKEDF_Descriptors::getF_KS( double epsilonM = pelec->ekb(0,0); assert(PARAM.inp.nspin == 1); - base_device::DEVICE_CPU* ctx; + base_device::DEVICE_CPU* ctx = nullptr; // calculate positive definite kinetic energy density for (int ik = 0; ik < psi->get_nk(); ++ik) @@ -497,7 +497,7 @@ void Cal_MLKEDF_Descriptors::getF_KS( } } -void Cal_MLKEDF_Descriptors::getNablaRho(const double * const *prho, ModulePW::PW_Basis *pw_rho, std::vector> &rnablaRho) +void Cal_MLKEDF_Descriptors::getNablaRho(const double * const *prho, const ModulePW::PW_Basis *pw_rho, std::vector> &rnablaRho) { std::complex *recipRho = new std::complex[pw_rho->npw]; std::complex *recipNablaRho = new std::complex[pw_rho->npw]; @@ -517,4 +517,4 @@ void Cal_MLKEDF_Descriptors::getNablaRho(const double * const *prho, ModulePW::P delete[] recipNablaRho; } -} \ No newline at end of file +} diff --git a/source/source_io/module_ml/cal_mlkedf_descriptors.h b/source/source_io/module_ml/cal_mlkedf_descriptors.h new file mode 100644 index 0000000000..9c28763da5 --- /dev/null +++ b/source/source_io/module_ml/cal_mlkedf_descriptors.h @@ -0,0 +1,112 @@ +#ifndef CAL_MLKEDF_DESCRIPTORS_H +#define CAL_MLKEDF_DESCRIPTORS_H + +#include +#include "source_base/global_function.h" +#include "source_io/module_parameter/parameter.h" +#include "source_basis/module_pw/pw_basis.h" +#include "source_cell/unitcell.h" +#include "source_psi/psi.h" +#include "source_estate/elecstate_pw.h" + +namespace ModuleIO +{ + +/** + * @brief A class to calculate the descriptors for ML KEDF. + * Sun, Liang, and Mohan Chen. Physical Review B 109.11 (2024): 115135. + * Sun, Liang, and Mohan Chen. Electronic Structure 6.4 (2024): 045006. + * @author sunliang on 2025-06-12 + */ +class Cal_MLKEDF_Descriptors +{ +public: + ~Cal_MLKEDF_Descriptors() {} + + void set_para( + const int &nx, + const double &nelec, + const double &tf_weight, + const double &vw_weight, + const double &chi_p, + const double &chi_q, + const std::vector &chi_xi, + const std::vector &chi_pnl, + const std::vector &chi_qnl, + const int &nkernel, + const std::vector &kernel_type, + const std::vector &kernel_scaling, + const std::vector &yukawa_alpha, + const std::vector &kernel_file, + const double &omega, + const ModulePW::PW_Basis *pw_rho); + // get input parameters + void getGamma(const double * const *prho, std::vector &rgamma); + void getP(const double * const *prho, const ModulePW::PW_Basis *pw_rho, std::vector> &pnablaRho, std::vector &rp); + void getQ(const double * const *prho, const ModulePW::PW_Basis *pw_rho, std::vector &rq); + void getGammanl(const int ikernel, std::vector &pgamma, const ModulePW::PW_Basis *pw_rho, std::vector &rgammanl); + void getPnl(const int ikernel, std::vector &pp, const ModulePW::PW_Basis *pw_rho, std::vector &rpnl); + void getQnl(const int ikernel, std::vector &pq, const ModulePW::PW_Basis *pw_rho, std::vector &rqnl); + // new parameters 2023-02-03 + void getXi(std::vector &pgamma, std::vector &pgammanl, std::vector &rxi); + void getTanhXi(const int ikernel, std::vector &pgamma, std::vector &pgammanl, std::vector &rtanhxi); + void getTanhP(std::vector &pp, std::vector &rtanhp); + void getTanhQ(std::vector &pq, std::vector &rtanhq); + void getTanh_Pnl(const int ikernel, std::vector &ppnl, std::vector &rtanh_pnl); + void getTanh_Qnl(const int ikernel, std::vector &pqnl, std::vector &rtanh_qnl); + void getTanhP_nl(const int ikernel, std::vector &ptanhp, const ModulePW::PW_Basis *pw_rho, std::vector &rtanhp_nl); + void getTanhQ_nl(const int ikernel, std::vector &ptanhq, const ModulePW::PW_Basis *pw_rho, std::vector &rtanhq_nl); + // 2023-03-20 + void getTanhXi_nl(const int ikernel, std::vector &ptanhxi, const ModulePW::PW_Basis *pw_rho, std::vector &rtanhxi_nl); + + void getF_KS( + psi::Psi> *psi, + elecstate::ElecState *pelec, + ModulePW::PW_Basis_K *pw_psi, + const ModulePW::PW_Basis *pw_rho, + UnitCell& ucell, + const std::vector> &nablaRho, + std::vector &rF, + std::vector &rpauli + ); + // get intermediate variables of V_Pauli + void getNablaRho(const double * const *prho, const ModulePW::PW_Basis *pw_rho, std::vector> &rnablaRho); + + // tools + double MLkernel(double eta, double tf_weight, double vw_weight); + double MLkernel_yukawa(double eta, double alpha); + void read_kernel(const std::string &fileName, const double& scaling, const ModulePW::PW_Basis *pw_rho, double* kernel_); + void multiKernel(const int ikernel, double *pinput, const ModulePW::PW_Basis *pw_rho, double *routput); + void Laplacian(double * pinput, const ModulePW::PW_Basis *pw_rho, double * routput); + void divergence(double ** pinput, const ModulePW::PW_Basis *pw_rho, double * routput); + + void tanh(std::vector &pinput, std::vector &routput, double chi=1.); + double dtanh(double tanhx, double chi=1.); + + // new parameters 2023-02-13 + std::vector chi_xi = {1.0}; + double chi_p = 1.; + double chi_q = 1.; + std::vector chi_pnl = {1.0}; + std::vector chi_qnl = {1.0}; + + int nx = 0; + double dV = 0.; + double rho0 = 0.; // average rho + double kF = 0.; // Fermi vector kF = (3 pi^2 rho0)^(1/3) + double tkF = 0.; // 2 * kF + // double weightml = 1.; + const double cTF = 3.0/10.0 * std::pow(3*std::pow(M_PI, 2.0), 2.0/3.0) * 2; // 10/3*(3*pi^2)^{2/3}, multiply by 2 to convert unit from Hartree to Ry, finally in Ry*Bohr^(-2) + const double pqcoef = 1.0 / (4.0 * std::pow(3*std::pow(M_PI, 2.0), 2.0/3.0)); // coefficient of p and q + + int nkernel = 1; + std::vector kernel_type = {1}; + std::vector kernel_scaling = {1.0}; + std::vector yukawa_alpha = {1.0}; + std::vector kernel_file = {"none"}; + std::vector> kernel = {}; // kernel[ikernel][ipw] = kernel value for ikernel and ipw +}; + +} // namespace ModuleIO + +#endif diff --git a/source/source_io/io_npz.cpp b/source/source_io/module_ml/io_npz.cpp similarity index 100% rename from source/source_io/io_npz.cpp rename to source/source_io/module_ml/io_npz.cpp diff --git a/source/source_io/io_npz.h b/source/source_io/module_ml/io_npz.h similarity index 100% rename from source/source_io/io_npz.h rename to source/source_io/module_ml/io_npz.h diff --git a/source/source_io/write_mlkedf_descriptors.cpp b/source/source_io/module_ml/write_mlkedf_descriptors.cpp similarity index 83% rename from source/source_io/write_mlkedf_descriptors.cpp rename to source/source_io/module_ml/write_mlkedf_descriptors.cpp index b758f7a047..840adfac7f 100644 --- a/source/source_io/write_mlkedf_descriptors.cpp +++ b/source/source_io/module_ml/write_mlkedf_descriptors.cpp @@ -67,6 +67,53 @@ void Write_MLKEDF_Descriptors::generateTrainData_KS( delete ptempRho; } +void Write_MLKEDF_Descriptors::generateTrainData_KS( + const std::string& out_dir, + psi::Psi> *psi, + elecstate::ElecState *pelec, + ModulePW::PW_Basis_K *pw_psi, + ModulePW::PW_Basis *pw_rho, + UnitCell& ucell, + const double* veff +) +{ + psi::Psi, base_device::DEVICE_CPU> psi_double(*psi); + + this->generateTrainData_KS(out_dir, &psi_double, pelec, pw_psi, pw_rho, ucell, veff); +} + +#if ((defined __CUDA) || (defined __ROCM)) +void Write_MLKEDF_Descriptors::generateTrainData_KS( + const std::string& out_dir, + psi::Psi, base_device::DEVICE_GPU>* psi, + elecstate::ElecState *pelec, + ModulePW::PW_Basis_K *pw_psi, + ModulePW::PW_Basis *pw_rho, + UnitCell& ucell, + const double* veff +) +{ + psi::Psi, base_device::DEVICE_CPU> psi_cpu(*psi); + + this->generateTrainData_KS(out_dir, &psi_cpu, pelec, pw_psi, pw_rho, ucell, veff); +} + +void Write_MLKEDF_Descriptors::generateTrainData_KS( + const std::string& dir, + psi::Psi, base_device::DEVICE_GPU>* psi, + elecstate::ElecState *pelec, + ModulePW::PW_Basis_K *pw_psi, + ModulePW::PW_Basis *pw_rho, + UnitCell& ucell, + const double *veff +) +{ + psi::Psi, base_device::DEVICE_CPU> psi_cpu_double(*psi); + + this->generateTrainData_KS(dir, &psi_cpu_double, pelec, pw_psi, pw_rho, ucell, veff); +} +#endif + void Write_MLKEDF_Descriptors::generate_descriptor( const std::string& out_dir, const double * const *prho, diff --git a/source/source_io/module_ml/write_mlkedf_descriptors.h b/source/source_io/module_ml/write_mlkedf_descriptors.h new file mode 100644 index 0000000000..801fc40143 --- /dev/null +++ b/source/source_io/module_ml/write_mlkedf_descriptors.h @@ -0,0 +1,85 @@ +#ifndef Write_MLKEDF_DESCRIPTORS_H +#define Write_MLKEDF_DESCRIPTORS_H + +#ifdef __MLALGO + +#include "cal_mlkedf_descriptors.h" +#include "source_estate/elecstate_pw.h" + +namespace ModuleIO +{ + +class Write_MLKEDF_Descriptors +{ +public: + Write_MLKEDF_Descriptors() { + this->cal_tool = new Cal_MLKEDF_Descriptors(); + } + + ~Write_MLKEDF_Descriptors() { + if (this->cal_tool != nullptr) { + delete this->cal_tool; + this->cal_tool = nullptr; + } + } + + void generateTrainData_KS( + const std::string& out_dir, + psi::Psi> *psi, + elecstate::ElecState *pelec, + ModulePW::PW_Basis_K *pw_psi, + ModulePW::PW_Basis *pw_rho, + UnitCell& ucell, + const double *veff + ); + void generateTrainData_KS( + const std::string& out_dir, + psi::Psi> *psi, + elecstate::ElecState *pelec, + ModulePW::PW_Basis_K *pw_psi, + ModulePW::PW_Basis *pw_rho, + UnitCell& ucell, + const double *veff + ); + +#if ((defined __CUDA) || (defined __ROCM)) + void generateTrainData_KS( + const std::string& dir, + psi::Psi, base_device::DEVICE_GPU>* psi, + elecstate::ElecState *pelec, + ModulePW::PW_Basis_K *pw_psi, + ModulePW::PW_Basis *pw_rho, + UnitCell& ucell, + const double *veff + ); + void generateTrainData_KS( + const std::string& dir, + psi::Psi, base_device::DEVICE_GPU>* psi, + elecstate::ElecState *pelec, + ModulePW::PW_Basis_K *pw_psi, + ModulePW::PW_Basis *pw_rho, + UnitCell& ucell, + const double *veff + ); +#endif + + void generate_descriptor( + const std::string& out_dir, + const double * const *prho, + ModulePW::PW_Basis *pw_rho, + std::vector> &nablaRho + ); + + std::string file_name( + const std::string& out_dir, + std::string parameter, + const int kernel_type, + const double kernel_scaling + ); + + Cal_MLKEDF_Descriptors* cal_tool = nullptr; // pointer to the calculation tool +}; + +} // namespace ModuleIO +#endif +#endif \ No newline at end of file diff --git a/source/source_io/output_dmk.cpp b/source/source_io/module_mulliken/output_dmk.cpp similarity index 89% rename from source/source_io/output_dmk.cpp rename to source/source_io/module_mulliken/output_dmk.cpp index e4b78d3098..c7a5e414d1 100644 --- a/source/source_io/output_dmk.cpp +++ b/source/source_io/module_mulliken/output_dmk.cpp @@ -1,4 +1,4 @@ -#include "source_io/output_dmk.h" +#include "source_io/module_mulliken/output_dmk.h" namespace ModuleIO { diff --git a/source/source_io/module_mulliken/output_dmk.h b/source/source_io/module_mulliken/output_dmk.h new file mode 100644 index 0000000000..f92be1a8fb --- /dev/null +++ b/source/source_io/module_mulliken/output_dmk.h @@ -0,0 +1,30 @@ +#ifndef MODULE_IO_OUTPUT_DMK_H +#define MODULE_IO_OUTPUT_DMK_H +#include "source_basis/module_ao/parallel_orbitals.h" +#include "source_estate/module_dm/density_matrix.h" + +namespace ModuleIO +{ + +template +class Output_DMK +{ + public: + Output_DMK(elecstate::DensityMatrix* p_DM, + Parallel_Orbitals* ParaV, + int nspin, + int nks); + + TK* get_DMK(int ik); + + private: + elecstate::DensityMatrix* p_DM_ = nullptr; + Parallel_Orbitals* ParaV_ = nullptr; + int nks_; + int nspin_; + std::vector DMK; +}; + +} // namespace ModuleIO + +#endif // MODULE_IO_OUTPUT_DMK_H diff --git a/source/source_io/output_mulliken.cpp b/source/source_io/module_mulliken/output_mulliken.cpp similarity index 79% rename from source/source_io/output_mulliken.cpp rename to source/source_io/module_mulliken/output_mulliken.cpp index f5d0c47f65..624bbcd3dc 100644 --- a/source/source_io/output_mulliken.cpp +++ b/source/source_io/module_mulliken/output_mulliken.cpp @@ -1,5 +1,4 @@ -#include "source_io/output_mulliken.h" - +#include "source_io/module_mulliken/output_mulliken.h" #include "source_io/module_parameter/parameter.h" #include "source_base/formatter.h" #include "source_base/name_angular.h" @@ -18,7 +17,8 @@ Output_Mulliken::Output_Mulliken(Output_Sk* output_sk, CellIndex* cell_index, const std::vector& isk, int nspin) - : output_sk_(output_sk), output_dmk_(output_dmk), ParaV_(ParaV), cell_index_(cell_index), isk_(isk), nspin_(nspin) + : output_sk_(output_sk), output_dmk_(output_dmk), + ParaV_(ParaV), cell_index_(cell_index), isk_(isk), nspin_(nspin) { this->set_nspin(nspin); this->set_ParaV(ParaV); @@ -70,20 +70,27 @@ void Output_Mulliken::write_mulliken_nspin1(int istep, { os << std::setprecision(4); /// step info - os << "STEP: " << istep << std::endl; - os << "CALCULATE THE MULLIkEN ANALYSIS FOR EACH ATOM" << std::endl; - os << " Total charge:\t" << tot_chg[0] << std::endl; + os << " --- Ionic Step " << istep+1 << " ---" << std::endl; + os << " Total charge " << tot_chg[0] << std::endl; /// orbital decomposed mulliken populations - FmtCore fmt_of_chg("%20.4f"); - FmtCore fmt_of_label("%-20s"); - FmtCore fmt_of_Z("%20d"); - os << "Decomposed Mulliken populations" << std::endl; + FmtCore fmt_of_chg("%10.4f"); + FmtCore fmt_of_label("%12s"); + FmtCore fmt_of_Z("%2d"); + FmtCore fmt_of_sum("%14s"); + os << " Decomposed Mulliken population analysis for each atom" << std::endl; + os << " l and m from Ylm, z stands for zeta orbital" << std::endl; + os << std::endl; + for (int iat = 0; iat < this->cell_index_->get_nat(); ++iat) { /// header of the table std::string atom_label = this->cell_index_->get_atom_label(iat); - os << FmtCore::format("%-20d", iat) << FmtCore::format("%20s", std::string("Zeta of ") + atom_label) - << FmtCore::format("%20s", std::string("Spin 1")) << std::endl; + os << " ------------------" << std::endl; + os << " Atom " << iat+1 << " is " << atom_label << std::endl; + os << " ------------------" << std::endl; + os << FmtCore::format("%14s", std::string("zeta")) + << FmtCore::format("%10s", std::string("spin1")) << std::endl; + /// loop of L for (int L = 0; L <= this->cell_index_->get_maxL(iat); L++) { @@ -92,7 +99,8 @@ void Output_Mulliken::write_mulliken_nspin1(int istep, { for (int M = 0; M < (2 * L + 1); M++) { - os << fmt_of_label.format(ModuleBase::Name_Angular[L][M]) << fmt_of_Z.format(Z) + os << fmt_of_label.format(ModuleBase::Name_Angular[L][M]) + << fmt_of_Z.format(Z+1) << fmt_of_chg.format(orb_chg[std::vector{iat, 0, L, Z, M}]) << std::endl; } // sum over m @@ -107,20 +115,20 @@ void Output_Mulliken::write_mulliken_nspin1(int istep, } if (L > 0) { - os << fmt_of_label.format(std::string("SUM OVER M")) << std::setw(20) << "" + os << fmt_of_sum.format(std::string(" sum m")) << fmt_of_chg.format(sum_over_m[0]) << std::endl; } } - os << fmt_of_label.format(std::string("SUM OVER M+Zeta")) << std::setw(20) << "" + os << fmt_of_sum.format(std::string(" sum mz")) << fmt_of_chg.format(sum_over_m_and_z[0]) << std::endl; os << std::endl; } - os << fmt_of_label.format(std::string("SUM OVER M+Zeta+L")) << std::setw(20) << "" + os << fmt_of_sum.format(std::string(" sum lmz")) << fmt_of_chg.format(atom_chg[iat][0]) << std::endl; os << std::endl; - os << std::left << std::setw(30) << "Total Charge on atom:" << std::right << std::setw(10) << atom_label + os << std::left << " total charge on atom " << iat+1 << " " << fmt_of_chg.format(atom_chg[iat][0]) << std::endl; - os << std::endl << std::endl; + os << std::endl; } } @@ -133,23 +141,32 @@ void Output_Mulliken::write_mulliken_nspin2(int istep, { os << std::setprecision(4); /// step info - os << "STEP: " << istep << std::endl; - os << "CALCULATE THE MULLIkEN ANALYSIS FOR EACH ATOM" << std::endl; - os << " Total charge of spin " << 1 << ":\t" << tot_chg[0] << std::endl; - os << " Total charge of spin " << 2 << ":\t" << tot_chg[1] << std::endl; - os << " Total charge:\t" << tot_chg[0] + tot_chg[1] << std::endl; + os << " --- Ionic Step " << istep+1 << " ---" << std::endl; + os << " Total charge " << tot_chg[0] + tot_chg[1] << std::endl; + os << " Total charge of spin1 " << tot_chg[0] << std::endl; + os << " Total charge of spin2 " << tot_chg[1] << std::endl; /// orbital decomposed mulliken populations - FmtCore fmt_of_chg("%20.4f"); - FmtCore fmt_of_label("%-20s"); - FmtCore fmt_of_Z("%20d"); - os << "Decomposed Mulliken populations" << std::endl; + FmtCore fmt_of_chg("%10.4f"); + FmtCore fmt_of_label("%12s"); + FmtCore fmt_of_Z("%2d"); + FmtCore fmt_of_sum("%14s"); + os << " Decomposed Mulliken population analysis for each atom" << std::endl; + os << " l and m from Ylm, z stands for zeta orbital" << std::endl; + os << std::endl; + for (int iat = 0; iat < this->cell_index_->get_nat(); ++iat) { /// header of the table std::string atom_label = this->cell_index_->get_atom_label(iat); - os << FmtCore::format("%-20d", iat) << FmtCore::format("%20s", std::string("Zeta of ") + atom_label) - << FmtCore::format("%20s", std::string("Spin 1")) << FmtCore::format("%20s", std::string("Spin 2")) - << FmtCore::format("%20s", std::string("Sum")) << FmtCore::format("%20s", std::string("Diff")) << std::endl; + os << " ------------------" << std::endl; + os << " Atom " << iat+1 << " is " << atom_label << std::endl; + os << " ------------------" << std::endl; + os << FmtCore::format("%14s", std::string("zeta")) + << FmtCore::format("%10s", std::string("spin1")) + << FmtCore::format("%10s", std::string("spin2")) + << FmtCore::format("%10s", std::string("sum")) + << FmtCore::format("%10s", std::string("diff")) << std::endl; + /// loop of L for (int L = 0; L <= this->cell_index_->get_maxL(iat); L++) { @@ -158,7 +175,8 @@ void Output_Mulliken::write_mulliken_nspin2(int istep, { for (int M = 0; M < (2 * L + 1); M++) { - os << fmt_of_label.format(ModuleBase::Name_Angular[L][M]) << fmt_of_Z.format(Z) + os << fmt_of_label.format(ModuleBase::Name_Angular[L][M]) + << fmt_of_Z.format(Z+1) // be careful, Z+1, modified by mohan 2026-02-21 << fmt_of_chg.format(orb_chg[std::vector{iat, 0, L, Z, M}]) << fmt_of_chg.format(orb_chg[std::vector{iat, 1, L, Z, M}]) << fmt_of_chg.format(orb_chg[std::vector{iat, 0, L, Z, M}] @@ -179,28 +197,31 @@ void Output_Mulliken::write_mulliken_nspin2(int istep, } if (L > 0) { - os << fmt_of_label.format(std::string("SUM OVER M")) << std::setw(20) << "" - << fmt_of_chg.format(sum_over_m[0]) << fmt_of_chg.format(sum_over_m[1]) + os << fmt_of_sum.format(std::string(" sum m")) + << fmt_of_chg.format(sum_over_m[0]) + << fmt_of_chg.format(sum_over_m[1]) << fmt_of_chg.format(sum_over_m[0] + sum_over_m[1]) << fmt_of_chg.format(sum_over_m[0] - sum_over_m[1]) << std::endl; } } - os << fmt_of_label.format(std::string("SUM OVER M+Zeta")) << std::setw(20) << "" - << fmt_of_chg.format(sum_over_m_and_z[0]) << fmt_of_chg.format(sum_over_m_and_z[1]) + os << fmt_of_sum.format(std::string(" sum mz")) + << fmt_of_chg.format(sum_over_m_and_z[0]) + << fmt_of_chg.format(sum_over_m_and_z[1]) << fmt_of_chg.format(sum_over_m_and_z[0] + sum_over_m_and_z[1]) << fmt_of_chg.format(sum_over_m_and_z[0] - sum_over_m_and_z[1]) << std::endl; os << std::endl; } - os << fmt_of_label.format(std::string("SUM OVER M+Zeta+L")) << std::setw(20) << "" - << fmt_of_chg.format(atom_chg[iat][0]) << fmt_of_chg.format(atom_chg[iat][1]) + os << fmt_of_sum.format(std::string(" sum lmz")) + << fmt_of_chg.format(atom_chg[iat][0]) + << fmt_of_chg.format(atom_chg[iat][1]) << fmt_of_chg.format(atom_chg[iat][0] + atom_chg[iat][1]) << fmt_of_chg.format(atom_chg[iat][0] - atom_chg[iat][1]) << std::endl; os << std::endl; - os << std::left << std::setw(30) << "Total Charge on atom:" << std::right << std::setw(10) << atom_label + os << std::left << " total charge on atom " << iat+1 << " " << fmt_of_chg.format(atom_chg[iat][0] + atom_chg[iat][1]) << std::endl; - os << std::left << std::setw(30) << "Total Magnetism on atom: " << std::right << std::setw(10) << atom_label + os << std::left << " total magnetism on atom " << iat+1 << " " << fmt_of_chg.format(atom_chg[iat][0] - atom_chg[iat][1]) << std::endl; - os << std::endl << std::endl; + os << std::endl; } } @@ -213,22 +234,30 @@ void Output_Mulliken::write_mulliken_nspin4(int istep, { os << std::setprecision(4); /// step info - os << "STEP: " << istep << std::endl; - os << "CALCULATE THE MULLIkEN ANALYSIS FOR EACH ATOM" << std::endl; - os << " Total charge:\t" << tot_chg[0] << std::endl; + os << " --- Ionic Step " << istep+1 << " ---" << std::endl; + os << " Total charge " << tot_chg[0] << std::endl; /// orbital decomposed mulliken populations - FmtCore fmt_of_chg("%20.4f"); - FmtCore fmt_of_label("%-20s"); - FmtCore fmt_of_Z("%20d"); - os << "Decomposed Mulliken populations" << std::endl; + FmtCore fmt_of_chg("%10.4f"); + FmtCore fmt_of_label("%12s"); + FmtCore fmt_of_Z("%2d"); + FmtCore fmt_of_sum("%14s"); + os << " Decomposed Mulliken population analysis for each atom" << std::endl; + os << " l and m from Ylm, z stands for zeta orbital" << std::endl; + os << std::endl; + for (int iat = 0; iat < this->cell_index_->get_nat(); ++iat) { /// header of the table std::string atom_label = this->cell_index_->get_atom_label(iat); - os << FmtCore::format("%-20d", iat) << FmtCore::format("%20s", std::string("Zeta of ") + atom_label) - << FmtCore::format("%20s", std::string("Spin 1")) << FmtCore::format("%20s", std::string("Spin 2")) - << FmtCore::format("%20s", std::string("Spin 3")) << FmtCore::format("%20s", std::string("Spin 4")) - << std::endl; + os << " ------------------" << std::endl; + os << " Atom " << iat+1 << " is " << atom_label << std::endl; + os << " ------------------" << std::endl; + os << FmtCore::format("%14s", std::string("zeta")) + << FmtCore::format("%10s", std::string("spin1")) + << FmtCore::format("%10s", std::string("spin2")) + << FmtCore::format("%10s", std::string("spin3")) + << FmtCore::format("%10s", std::string("spin4")) << std::endl; + /// loop of L for (int L = 0; L <= this->cell_index_->get_maxL(iat); L++) { @@ -237,7 +266,8 @@ void Output_Mulliken::write_mulliken_nspin4(int istep, { for (int M = 0; M < (2 * L + 1); M++) { - os << fmt_of_label.format(ModuleBase::Name_Angular[L][M]) << fmt_of_Z.format(Z) + os << fmt_of_label.format(ModuleBase::Name_Angular[L][M]) + << fmt_of_Z.format(Z+1) << fmt_of_chg.format(orb_chg[std::vector{iat, 0, L, Z, M}]) << fmt_of_chg.format(orb_chg[std::vector{iat, 1, L, Z, M}]) << fmt_of_chg.format(orb_chg[std::vector{iat, 2, L, Z, M}]) @@ -255,26 +285,33 @@ void Output_Mulliken::write_mulliken_nspin4(int istep, } if (L > 0) { - os << fmt_of_label.format(std::string("SUM OVER M")) << std::setw(20) << "" - << fmt_of_chg.format(sum_over_m[0]) << fmt_of_chg.format(sum_over_m[1]) - << fmt_of_chg.format(sum_over_m[2]) << fmt_of_chg.format(sum_over_m[3]) << std::endl; + os << fmt_of_sum.format(std::string(" sum m")) + << fmt_of_chg.format(sum_over_m[0]) + << fmt_of_chg.format(sum_over_m[1]) + << fmt_of_chg.format(sum_over_m[2]) + << fmt_of_chg.format(sum_over_m[3]) << std::endl; } } - os << fmt_of_label.format(std::string("SUM OVER M+Zeta")) << std::setw(20) << "" - << fmt_of_chg.format(sum_over_m_and_z[0]) << fmt_of_chg.format(sum_over_m_and_z[1]) - << fmt_of_chg.format(sum_over_m_and_z[2]) << fmt_of_chg.format(sum_over_m_and_z[3]) << std::endl; + os << fmt_of_sum.format(std::string(" sum mz")) + << fmt_of_chg.format(sum_over_m_and_z[0]) + << fmt_of_chg.format(sum_over_m_and_z[1]) + << fmt_of_chg.format(sum_over_m_and_z[2]) + << fmt_of_chg.format(sum_over_m_and_z[3]) << std::endl; os << std::endl; } - os << fmt_of_label.format(std::string("SUM OVER M+Zeta+L")) << std::setw(20) << "" - << fmt_of_chg.format(atom_chg[iat][0]) << fmt_of_chg.format(atom_chg[iat][1]) - << fmt_of_chg.format(atom_chg[iat][2]) << fmt_of_chg.format(atom_chg[iat][3]) << std::endl; + os << fmt_of_sum.format(std::string(" sum lmz")) + << fmt_of_chg.format(atom_chg[iat][0]) + << fmt_of_chg.format(atom_chg[iat][1]) + << fmt_of_chg.format(atom_chg[iat][2]) + << fmt_of_chg.format(atom_chg[iat][3]) << std::endl; os << std::endl; - os << std::left << std::setw(30) << "Total Charge on atom:" << std::right << std::setw(10) << atom_label + os << std::left << " total charge on atom " << iat+1 << " " << fmt_of_chg.format(atom_chg[iat][0]) << std::endl; - os << std::left << std::setw(30) << "Total Magnetism on atom: " << std::right << std::setw(10) << atom_label - << fmt_of_chg.format(atom_chg[iat][1]) << fmt_of_chg.format(atom_chg[iat][2]) + os << std::left << " total magnetism on atom " << iat+1 << " " + << fmt_of_chg.format(atom_chg[iat][1]) << " " + << fmt_of_chg.format(atom_chg[iat][2]) << " " << fmt_of_chg.format(atom_chg[iat][3]) << std::endl; - os << std::endl << std::endl; + os << std::endl; } } @@ -547,24 +584,24 @@ void Output_Mulliken>::cal_orbMulP() const char N_char = 'N'; const int one_int = 1; const std::complex one_float = {1.0, 0.0}, zero_float = {0.0, 0.0}; - pzgemm_(&N_char, - &T_char, - &nw, - &nw, - &nw, - &one_float, + ScalapackConnector::gemm(N_char, + T_char, + nw, + nw, + nw, + one_float, p_DMk, - &one_int, - &one_int, + one_int, + one_int, this->ParaV_->desc, p_Sk, - &one_int, - &one_int, + one_int, + one_int, this->ParaV_->desc, - &zero_float, + zero_float, mud.c, - &one_int, - &one_int, + one_int, + one_int, this->ParaV_->desc); this->collect_MW(MecMulP, mud, nw, this->isk_[ik]); #endif @@ -597,24 +634,24 @@ void Output_Mulliken::cal_orbMulP() const char N_char = 'N'; const int one_int = 1; const double one_float = 1.0, zero_float = 0.0; - pdgemm_(&N_char, - &T_char, - &nw, - &nw, - &nw, - &one_float, + ScalapackConnector::gemm(N_char, + T_char, + nw, + nw, + nw, + one_float, p_DMk, - &one_int, - &one_int, + one_int, + one_int, this->ParaV_->desc, p_Sk, - &one_int, - &one_int, + one_int, + one_int, this->ParaV_->desc, - &zero_float, + zero_float, mud.c, - &one_int, - &one_int, + one_int, + one_int, this->ParaV_->desc); if (this->nspin_ == 1 || this->nspin_ == 2) { diff --git a/source/source_io/module_mulliken/output_mulliken.h b/source/source_io/module_mulliken/output_mulliken.h new file mode 100644 index 0000000000..4b58a7a9b8 --- /dev/null +++ b/source/source_io/module_mulliken/output_mulliken.h @@ -0,0 +1,186 @@ +#ifndef OUTPUT_MULLIKEN_H +#define OUTPUT_MULLIKEN_H +#include "source_base/complexmatrix.h" +#include "source_base/matrix.h" +#include "source_basis/module_ao/parallel_orbitals.h" +#include "source_cell/cell_index.h" +#include "source_estate/elecstate_lcao.h" +#include "source_io/module_mulliken/output_dmk.h" +#include "source_io/module_mulliken/output_sk.h" +#include "source_base/formatter.h" +#include "source_lcao/module_operator_lcao/dspin_lcao.h" +#include "source_estate/module_dm/density_matrix.h" // mohan add 2025-11-04 + +#include +#include + +namespace ModuleIO +{ + +/// @brief the output interface to write the Mulliken population charges +template +class Output_Mulliken +{ + public: + /// constructor of Output_Mulliken + Output_Mulliken(Output_Sk* output_sk, + Output_DMK* output_dmk, + Parallel_Orbitals* ParaV, + CellIndex* cell_index, + const std::vector& isk, + int nspin); + /// the outer interface to write the Mulliken population charges + void write(int istep, std::string out_dir); + /// print atom mag to running log file + void print_atom_mag(const std::vector>& atom_chg, std::ostream& os); + /// get total charge + std::vector get_tot_chg(); + /// get atom charge + std::vector> get_atom_chg(); + /// get orbital charge + std::map, double> get_orb_chg(); + /// returun atom_mulliken for updateing STRU file + std::vector> get_atom_mulliken(std::vector>& atom_chg); + + private: + /****************************************************************** + * private functions + *******************************************************************/ + /// write mulliken.txt for the case of nspin=1 + void write_mulliken_nspin1(int istep, + const std::vector& tot_chg, + const std::vector>& atom_chg, + std::map, double> orb_chg, + std::ofstream& os); + /// write mulliken.txt for the case of nspin=2 + void write_mulliken_nspin2(int istep, + const std::vector& tot_chg, + const std::vector>& atom_chg, + std::map, double> orb_chg, + std::ofstream& os); + /// write mulliken.txt for the case of nspin=4 + void write_mulliken_nspin4(int istep, + const std::vector& tot_chg, + const std::vector>& atom_chg, + std::map, double> orb_chg, + std::ofstream& os); + /// set nspin + void set_nspin(int nspin_in); + /// set orbital parallel info + void set_ParaV(Parallel_Orbitals* ParaV_in); + /// collect_mw from matrix multiplication result + void collect_MW(ModuleBase::matrix& MecMulP, const ModuleBase::ComplexMatrix& mud, int nw, int isk); + /// mulliken population = trace(dm*overlap) + void cal_orbMulP(); + + private: + /****************************************************************** + * private variables + *******************************************************************/ + Output_Sk* output_sk_ = nullptr; + Output_DMK* output_dmk_ = nullptr; + Parallel_Orbitals* ParaV_ = nullptr; + CellIndex* cell_index_ = nullptr; + const std::vector& isk_; + int nspin_; + ModuleBase::matrix orbMulP_; +}; + +template +void cal_mag(Parallel_Orbitals* pv, + hamilt::Hamilt* p_ham, + K_Vectors& kv, + elecstate::DensityMatrix* dm, // mohan add 2025-11-04 + const TwoCenterBundle& two_center_bundle, + const LCAO_Orbitals& orb, + UnitCell& ucell, + const Grid_Driver& gd, + const int istep, + const bool print) +{ + // 1) calculate and output Mulliken population charges and magnetic moments + if (PARAM.inp.out_mul) + { + auto cell_index + = CellIndex(ucell.get_atomLabels(), + ucell.get_atomCounts(), ucell.get_lnchiCounts(), PARAM.inp.nspin); + auto out_s_k = ModuleIO::Output_Sk(p_ham, pv, PARAM.inp.nspin, kv.get_nks()); + auto out_dm_k = ModuleIO::Output_DMK(dm, pv, PARAM.inp.nspin, kv.get_nks()); + + auto mulp = ModuleIO::Output_Mulliken(&(out_s_k), + &(out_dm_k), pv, &cell_index, kv.isk, PARAM.inp.nspin); + auto atom_chg = mulp.get_atom_chg(); + /// used in updating mag info in STRU file + ucell.atom_mulliken = mulp.get_atom_mulliken(atom_chg); + if (print && GlobalV::MY_RANK == 0) + { + /// write the Orbital file + cell_index.write_orb_info(PARAM.globalv.global_out_dir); + /// write mulliken.txt + mulp.write(istep, PARAM.globalv.global_out_dir); + /// write atomic mag info in running log file + mulp.print_atom_mag(atom_chg, GlobalV::ofs_running); + } + } + // 2) calculate and output the magnetizations of each atom with projection method + if (PARAM.inp.onsite_radius > 0) + { + std::vector> atom_mag(ucell.nat, std::vector(PARAM.inp.nspin, 0.0)); + std::vector> constrain(ucell.nat, ModuleBase::Vector3(1, 1, 1)); + const hamilt::HContainer* dmr = dm->get_DMR_pointer(1); + std::vector moments; + std::vector mag_x(ucell.nat, 0.0); + std::vector mag_y(ucell.nat, 0.0); + std::vector mag_z(ucell.nat, 0.0); + auto atomLabels = ucell.get_atomLabels(); + + if(PARAM.inp.nspin == 2) + { + auto sc_lambda = new hamilt::DeltaSpin>(nullptr, + kv.kvec_d, + dynamic_cast*>(p_ham)->getHR(), + ucell, + &gd, + two_center_bundle.overlap_orb_onsite.get(), + orb.cutoffs()); + + dm->switch_dmr(2); + moments = sc_lambda->cal_moment(dmr, constrain); + dm->switch_dmr(0); + + delete sc_lambda; + + for(int iat=0;iat, std::complex>>( + nullptr, + kv.kvec_d, + dynamic_cast, std::complex>*>(p_ham)->getHR(), + ucell, + &gd, + two_center_bundle.overlap_orb_onsite.get(), + orb.cutoffs()); + moments = sc_lambda->cal_moment(dmr, constrain); + delete sc_lambda; + + for(int iat=0;iatggecut, rhopw->nx, rhopw->ny, rhopw->nz); const int ngmc = Cal_Test::cal_np(GGT,rhopw->ggecut, rhopw->nx, rhopw->ny, rhopw->nz); -// const int ecut_wfc = INPUT.ecutwfc; -// const int ecut_chg = INPUT.ecutrho; - -// const int ngmw = Cal_Test::cal_np(ecut_wfc, rhopw->nx, rhopw->ny, rhopw->nz); -// const int ngmc = Cal_Test::cal_np(ecut_chg, rhopw->nx, rhopw->ny, rhopw->nz); - std::cout << " number of atoms = " << nat << std::endl; std::cout << " plane wave number for wave functions = " << ngmw << std::endl; std::cout << " plane wave number for chage density = " << ngmc << std::endl; diff --git a/source/source_io/cal_test.h b/source/source_io/module_output/cal_test.h similarity index 100% rename from source/source_io/cal_test.h rename to source/source_io/module_output/cal_test.h diff --git a/source/source_io/cif_io.cpp b/source/source_io/module_output/cif_io.cpp similarity index 99% rename from source/source_io/cif_io.cpp rename to source/source_io/module_output/cif_io.cpp index c06ecb7033..4b9a0e0fea 100644 --- a/source/source_io/cif_io.cpp +++ b/source/source_io/module_output/cif_io.cpp @@ -3,7 +3,7 @@ #include #include #include "source_base/formatter.h" -#include "source_io/cif_io.h" +#include "cif_io.h" #include #include #include "source_base/tool_quit.h" @@ -238,7 +238,7 @@ void bcast_cifmap(std::map>& map, // the m const int rank = 0) // source rank: from which rank to broadcast { #ifdef __MPI - int myrank; + int myrank = 0; MPI_Comm_rank(MPI_COMM_WORLD, &myrank); // use Parallel_Common namespace bcast_int and bcast_string to broadcast the size of map and key, value pairs int size = map.size(); @@ -328,7 +328,7 @@ void ModuleIO::CifParser::write(const std::string& fcif, const std::string& cell_formula_units_z) { #ifdef __MPI // well...very simple... - int myrank; + int myrank = 0; MPI_Comm_rank(MPI_COMM_WORLD, &myrank); if (myrank != rank) // if present rank is not the rank assigned to write the cif file, then return { @@ -402,7 +402,7 @@ void ModuleIO::CifParser::write(const std::string& fcif, const std::string& cell_formula_units_z) { #ifdef __MPI - int myrank; + int myrank = 0; MPI_Comm_rank(MPI_COMM_WORLD, &myrank); if (myrank != rank) // if present rank is not the rank assigned to write the cif file, then return { @@ -429,7 +429,7 @@ void ModuleIO::CifParser::write(const std::string& fcif, const int rank) { #ifdef __MPI - int myrank; + int myrank = 0; MPI_Comm_rank(MPI_COMM_WORLD, &myrank); if (myrank != rank) // if present rank is not the rank assigned to write the cif file, then return { @@ -437,7 +437,7 @@ void ModuleIO::CifParser::write(const std::string& fcif, } #endif std::vector veca, vecb, vecc; - int natom; + int natom = 0; std::vector atom_site_labels; std::vector atom_site_fract_coords; _unpack_ucell(ucell, veca, vecb, vecc, natom, atom_site_labels, atom_site_fract_coords); @@ -468,7 +468,7 @@ void ModuleIO::CifParser::read(const std::string& fcif, // okey for read, cannot just use if rank != 0 then return, because need to broadcast the map out.clear(); #ifdef __MPI - int myrank; + int myrank = 0; MPI_Comm_rank(MPI_COMM_WORLD, &myrank); if (myrank == rank) // only the rank assigned to read the cif file will read the file { diff --git a/source/source_io/cif_io.h b/source/source_io/module_output/cif_io.h similarity index 100% rename from source/source_io/cif_io.h rename to source/source_io/module_output/cif_io.h diff --git a/source/source_io/module_output/csr_reader.cpp b/source/source_io/module_output/csr_reader.cpp new file mode 100644 index 0000000000..4a9c9d7979 --- /dev/null +++ b/source/source_io/module_output/csr_reader.cpp @@ -0,0 +1,204 @@ +#include "csr_reader.h" +#include "source_base/tool_quit.h" + +namespace ModuleIO +{ + +// constructor +template +csrFileReader::csrFileReader(const std::string& filename) : FileReader(filename) +{ + parseFile(); +} + +// function to parse file +template +void csrFileReader::parseFile() +{ + // Check if file is open + if (!isOpen()) + { + ModuleBase::WARNING_QUIT("csrFileReader::parseFile", "File is not open"); + } + + std::string tmp_string; + + // Read the step + readLine(); + ss >> tmp_string >> tmp_string >> tmp_string >> step; + + //std::cout << " step is " << step << std::endl; + // Read the title + readLine(); + // Read the total spin + readLine(); + // Read the spin index + readLine(); + + // Read the matrix dimension + readLine(); + ss >> matrixDimension; + // std::cout << " mat dim is " << matrixDimension << std::endl; + + // Read the number of R + readLine(); + ss >> numberOfR; + // std::cout << " number of R is " << numberOfR << std::endl; + readLine(); + + // Read cell + read_ucell(); + + // Read CSR format + readLine(); + readLine(); + readLine(); + readLine(); + readLine(); + readLine(); + readLine(); + readLine(); + readLine(); // read the last line of CSR format + + // Read the matrices + for (int i = 0; i < numberOfR; i++) + { + // std::cout << " read R " << i+1 << std::endl; + + std::vector RCoord(3); + int nonZero = 0; + + readLine(); + readLine(); + ss >> RCoord[0] >> RCoord[1] >> RCoord[2] >> nonZero; + RCoordinates.push_back(RCoord); + + std::vector csr_values(nonZero); + std::vector csr_col_ind(nonZero); + std::vector csr_row_ptr(matrixDimension + 1); + + // read CSR values + readLine(); + // std::cout << " ss1: " << ss.str() << std::endl; + + readLine(); + size_t count1 = 0; + while (count1 < nonZero) + { + if (ss.eof() || ss.fail()) + { + readLine(); + } + if (ss >> csr_values[count1]) + { + count1++; + } + } + // std::cout << "count1=" << count1 << std::endl; + + // read CSR column indices + readLine(); + // std::cout << " ss2: " << ss.str() << std::endl; + + size_t count2 = 0; + while (count2 < nonZero) + { + if (ss.eof() || ss.fail()) + { + readLine(); + } + if (ss >> csr_col_ind[count2]) + { + count2++; + } + } + // std::cout << "count2=" << count2 << std::endl; + + // read row pointers + readLine(); + // std::cout << " ss3: " << ss.str() << std::endl; + + size_t count3 = 0; + while (count3 < matrixDimension + 1) + { + if (ss.eof() || ss.fail()) + { + readLine(); + } + if (ss >> csr_row_ptr[count3]) + { + count3++; + } + } + // std::cout << "count3=" << count3 << std::endl; + + // create sparse matrix + SparseMatrix matrix(matrixDimension, matrixDimension); + matrix.readCSR(csr_values, csr_col_ind, csr_row_ptr); + sparse_matrices.push_back(matrix); + } +} + +// function to get R coordinate +template +std::vector csrFileReader::getRCoordinate(int index) const +{ + if (index < 0 || index >= RCoordinates.size()) + { + ModuleBase::WARNING_QUIT("csrFileReader::getRCoordinate", "Index out of range"); + } + return RCoordinates[index]; +} + +// function to get matrix +template +SparseMatrix csrFileReader::getMatrix(int index) const +{ + if (index < 0 || index >= sparse_matrices.size()) + { + ModuleBase::WARNING_QUIT("csrFileReader::getMatrix", "Index out of range"); + } + return sparse_matrices[index]; +} + +// function to get matrix using R coordinate +template +SparseMatrix csrFileReader::getMatrix(int Rx, int Ry, int Rz) +{ + for (int i = 0; i < RCoordinates.size(); i++) + { + if (RCoordinates[i][0] == Rx && RCoordinates[i][1] == Ry && RCoordinates[i][2] == Rz) + { + return sparse_matrices[i]; + } + } + ModuleBase::WARNING_QUIT("csrFileReader::getMatrix", "R coordinate not found"); +} + +// function to get matrix +template +int csrFileReader::getNumberOfR() const +{ + return numberOfR; +} + +// function to get matrixDimension +template +int csrFileReader::getMatrixDimension() const +{ + return matrixDimension; +} + +// function to get step +template +int csrFileReader::getStep() const +{ + return step; +} + +// T of AtomPair can be double +template class csrFileReader; +// ToDo: T of AtomPair can be std::complex +template class csrFileReader>; + +} // namespace ModuleIO diff --git a/source/source_io/module_output/csr_reader.h b/source/source_io/module_output/csr_reader.h new file mode 100644 index 0000000000..e71bcf8823 --- /dev/null +++ b/source/source_io/module_output/csr_reader.h @@ -0,0 +1,84 @@ +#ifndef CSR_READER_H +#define CSR_READER_H + +#include + +#include "file_reader.h" +#include "sparse_matrix.h" + +namespace ModuleIO +{ + +/** + * @brief Class to read CSR file + * @details This class is used to read CSR file + * the default format is like: + * ``` + * --- Ionic Step 1 --- + * # print density matrix in real space DM(R) + * 26 # number of localized basis + * 13 # number of Bravais lattice vector R + * + * unitcell_information + * + * #--------------------------------------------------------# + * # CSR format # + * # Outer loop is the number of Bravais lattice vectors. # + * # First line is Bravais lattice vector index Rx, Ry, Rz, # + * # followed by the number of non-zero elements. # + * # Next are three blocks of data. # + * #--------------------------------------------------------# + * + * -1 0 0 507 + * # CSR values + * 6.73361941e-04 -3.97537783e-05 7.92408228e-04 ... + * # CSR column indices + * 0 1 2 ... + * # CSR row pointers + * 0 26 52 ... + * ... + * + * ``` + * It will store the R coordinates and sparse matrices as two vectors. + * One can use getter functions to get the R coordinates and sparse matrices, + * and related info including step, matrix dimension, number of R. + */ +template +class csrFileReader : public FileReader +{ + public: + // Constructor + csrFileReader(const std::string& filename); + + // read all matrices of all R coordinates + void parseFile(); + + // get number of R + int getNumberOfR() const; + + // get sparse matrix of a specific R coordinate + SparseMatrix getMatrix(int Rx, int Ry, int Rz); + + // get matrix by using index + SparseMatrix getMatrix(int index) const; + + // get R coordinate using index + std::vector getRCoordinate(int index) const; + + // get step + int getStep() const; + + // get matrix dimension + int getMatrixDimension() const; + + private: + std::vector> RCoordinates; + std::vector> sparse_matrices; + int step; + int matrixDimension; + int numberOfR; +}; + +} // namespace ModuleIO + +#endif // READ_CSR_H diff --git a/source/source_io/cube_io.h b/source/source_io/module_output/cube_io.h similarity index 100% rename from source/source_io/cube_io.h rename to source/source_io/module_output/cube_io.h diff --git a/source/source_io/module_output/file_reader.cpp b/source/source_io/module_output/file_reader.cpp new file mode 100644 index 0000000000..dd36731652 --- /dev/null +++ b/source/source_io/module_output/file_reader.cpp @@ -0,0 +1,78 @@ +#include "file_reader.h" + +#include "source_base/tool_quit.h" + +namespace ModuleIO +{ + +// Constructor +FileReader::FileReader(std::string filename) +{ + ifs.open(filename.c_str()); + if (!ifs.is_open()) + { + ModuleBase::WARNING_QUIT("FileReader::FileReader", "Error opening file"); + } +} + +// Destructor +FileReader::~FileReader() +{ + if (ifs.is_open()) + { + ifs.close(); + } +} + +// Function to check if file is open +bool FileReader::isOpen() const +{ + return ifs.is_open(); +} + +// Function to read a line and return string stream +void FileReader::readLine() +{ + // add warning if file is not open + if (!ifs.eof()) + { + std::string line; + std::getline(ifs, line); + ss.clear(); + ss.str(line); + } + else + { + ModuleBase::WARNING_QUIT("FileReader::readLine", "End of file"); + } +} + +void FileReader::read_ucell() +{ + if (ifs.eof()) + { + ModuleBase::WARNING_QUIT("FileReader::read_ucell", "End of file"); + } + + std::string tmp; + for (int i = 0; i < 6; i++) + { + std::getline(ifs, tmp); // latName + lat0 + latvec + atom label + } + std::getline(ifs, tmp); // atom number of each type + + std::istringstream iss(tmp); + int natom = 0; + int total_natom = 0; + while (iss >> natom) + { + total_natom += natom; + } + for (int i = 0; i < total_natom + 1; i++) + { + std::getline(ifs, tmp); // Direct + atom coordinates + } +} + + +} // namespace ModuleIO diff --git a/source/source_io/file_reader.h b/source/source_io/module_output/file_reader.h similarity index 93% rename from source/source_io/file_reader.h rename to source/source_io/module_output/file_reader.h index bd2c7481d7..8f484c3969 100644 --- a/source/source_io/file_reader.h +++ b/source/source_io/module_output/file_reader.h @@ -28,6 +28,9 @@ class FileReader // read a line to string stream void readLine(); + // read unitcell + void read_ucell(); + std::stringstream ss; private: @@ -36,4 +39,4 @@ class FileReader } // namespace ModuleIO -#endif \ No newline at end of file +#endif diff --git a/source/source_io/module_output/filename.cpp b/source/source_io/module_output/filename.cpp new file mode 100644 index 0000000000..966da0bc8f --- /dev/null +++ b/source/source_io/module_output/filename.cpp @@ -0,0 +1,131 @@ +#include +#include "source_io/module_output/filename.h" +#include "source_base/tool_quit.h" + +namespace ModuleIO +{ + +std::string filename_output( + const std::string &directory, + const std::string &property, + const std::string &basis, + const int ik_local, // the ik index within each pool + const std::vector &ik2iktot, + const int nspin, + const int nkstot, + const int out_type, + const bool out_app_flag, + const bool gamma_only, + const int istep, + const int iter) +{ + // output filename = "{PARAM.globalv.global_out_dir}/property{s}{spin index} + // {k(optional)}{k-point index}{g(optional)}{geometry index1}{_basis(nao|pw)} + // + {".txt"/".dat"}" + + std::set valid_properties = {"wf", "chg", "hk", "sk", "tk", "vxc"}; + if (valid_properties.find(property) == valid_properties.end()) + { + ModuleBase::WARNING_QUIT("ModuleIO::filename_output", "unknown property in filename function"); + } + + std::set valid_basis = {"pw", "nao"}; + if (valid_basis.find(basis) == valid_basis.end()) + { + ModuleBase::WARNING_QUIT("ModuleIO::filename_output", "unknown basis in filename function"); + } + + assert(ik_local>=0); + // mohan update 2025.05.07, if KPAR>1, "<" works + assert(ik2iktot.size() <= nkstot); + assert(nspin>0); + + // spin index + int is0 = -1; + // ik0 is the k-point index, starting from 0 + int ik0 = ik2iktot[ik_local]; + + // spin part + std::string spin_block; + + // mohan add 2026-01-04, overlap matrix is the same for any spin + if(property != "sk") + { + if(nspin == 1) + { + // do nothing + } + else if(nspin == 2) + { + const int half_k = nkstot/2; + if(ik0 >= half_k) + { + is0 = 2; + ik0 -= half_k; + } + else + { + is0 = 1; + } + spin_block = "s" + std::to_string(is0); + } + else if(nspin==4) + { + is0 = 4; + spin_block = "s" + std::to_string(is0); + } + } + + + // k-point part + std::string kpoint_block; + if(gamma_only) + { + // do nothing; + } + else + { + // mohan add 20250921 + if(property=="hk" || property=="sk" || property=="tk") + { + kpoint_block = std::to_string(ik0+1); + } + else + { + kpoint_block = "k" + std::to_string(ik0+1); + } + } + + std::string istep_block + = (istep >= 0 && (!out_app_flag)) + ? "g" + std::to_string(istep + 1) // istep starts from 0 + : ""; // only when istep >= 0 and out_app_flag is false will write each wfc to a separate file + + std::string iter_block + = (iter >= 0 && (!out_app_flag)) + ? "e" + std::to_string(iter) // iter starts from 1 + : ""; // only when istep >= 0 and out_app_flag is false will write each wfc to a separate file + + std::string suffix_block; + if (out_type == 1) + { + suffix_block = ".txt"; + } + else if (out_type == 2) + { + suffix_block = ".dat"; + } + else + { + std::cout << "WARNING: the type of output wave function is not 1 or 2, so 1 is chosen." << std::endl; + suffix_block = ".txt"; + } + + std::string fn_out + = directory + property + kpoint_block + spin_block + + istep_block + iter_block + "_" + basis + suffix_block; + + return fn_out; +} + +} diff --git a/source/source_io/filename.h b/source/source_io/module_output/filename.h similarity index 87% rename from source/source_io/filename.h rename to source/source_io/module_output/filename.h index 8eba4af71a..895bf29ef0 100644 --- a/source/source_io/filename.h +++ b/source/source_io/module_output/filename.h @@ -19,6 +19,7 @@ namespace ModuleIO * @param out_app_flag: whether to append to existing file. * @param gamma_only: gamma_only algorithm or not. * @param istep: index of the ion step starting from 0. If < 0, the step number is not included in the file name. + * @param iter: index of the electronic step starting from 0. If < 0, the step number is not included in the file name. * @return The generated filename. */ std::string filename_output( @@ -32,7 +33,8 @@ std::string filename_output( const int out_type, const bool out_app_flag, const bool gamma_only, - const int istep=-1); + const int istep=-1, + const int iter=-1); } #endif diff --git a/source/source_io/orb_io.cpp b/source/source_io/module_output/orb_io.cpp similarity index 99% rename from source/source_io/orb_io.cpp rename to source/source_io/module_output/orb_io.cpp index 8a615b9a3c..cd1763e924 100644 --- a/source/source_io/orb_io.cpp +++ b/source/source_io/module_output/orb_io.cpp @@ -1,4 +1,4 @@ -#include "source_io/orb_io.h" +#include "source_io/module_output/orb_io.h" #include "source_base/tool_quit.h" #ifdef __MPI #include "source_base/parallel_common.h" diff --git a/source/source_io/orb_io.h b/source/source_io/module_output/orb_io.h similarity index 100% rename from source/source_io/orb_io.h rename to source/source_io/module_output/orb_io.h diff --git a/source/source_io/module_output/output.cpp b/source/source_io/module_output/output.cpp new file mode 100644 index 0000000000..7512e0bfe2 --- /dev/null +++ b/source/source_io/module_output/output.cpp @@ -0,0 +1,96 @@ +/* output.cpp */ + +#include "output.h" + +void output::printrm(std::ofstream &ofs,const std::string &s, const ModuleBase::matrix &m, const double &limit) +{ + const int b1 = m.nr; + const int b2 = m.nc; + ofs << "\n " << s << " nr=" << b1 << " nc=" << b2 ; + if (b1*b2 == 0) return; + for (int i = 0;i < b1;i++) + { + for (int j = 0;j < b2;j++) + { + if (j % 8 == 0) ofs << "\n "; + + if (std::abs(m(i,j)) > limit) + { + ofs << std::setprecision(6) << std::setw(12) << m(i,j); + } + else + { + ofs << std::setw(12) << "0"; + } + } + } + ofs << std::endl; + return; +} + +void output::printrm(const std::string &s, const ModuleBase::matrix &m, const double &limit) +{ + const int b1 = m.nr; + const int b2 = m.nc; + std::cout << "\n " << s << " nr=" << b1 << " nc=" << b2 ; + if (b1*b2 == 0) return; + + for (int i = 0;i < b1;i++) + { + //std::cout << "\n row=" << i; + for (int j = 0;j < b2;j++) + { + if (j % 8 == 0) std::cout << "\n "; + if (std::abs(m(i,j)) > limit) std::cout << std::setprecision(6) << std::setw(12) << m(i,j); + else std::cout< atom_label; diff --git a/source/source_io/output_log.h b/source/source_io/module_output/output_log.h similarity index 100% rename from source/source_io/output_log.h rename to source/source_io/module_output/output_log.h diff --git a/source/source_io/print_info.cpp b/source/source_io/module_output/print_info.cpp similarity index 87% rename from source/source_io/print_info.cpp rename to source/source_io/module_output/print_info.cpp index 4f46083030..7db14b4638 100644 --- a/source/source_io/print_info.cpp +++ b/source/source_io/module_output/print_info.cpp @@ -7,36 +7,39 @@ namespace ModuleIO { -void setup_parameters(UnitCell& ucell, K_Vectors& kv) +void print_parameters( + const UnitCell& ucell, + K_Vectors& kv, + const Input_para& inp) { - ModuleBase::TITLE("ModuleIO", "setup_parameters"); - - if(PARAM.inp.calculation=="scf" - || PARAM.inp.calculation=="relax" - || PARAM.inp.calculation=="cell-relax" - || PARAM.inp.calculation=="nscf" - || PARAM.inp.calculation=="get_pchg" - || PARAM.inp.calculation=="get_wf" - || PARAM.inp.calculation=="md") + ModuleBase::TITLE("ModuleIO", "print_parameters"); + + if(inp.calculation=="scf" + || inp.calculation=="relax" + || inp.calculation=="cell-relax" + || inp.calculation=="nscf" + || inp.calculation=="get_pchg" + || inp.calculation=="get_wf" + || inp.calculation=="md") { std::cout << " ---------------------------------------------------------" << std::endl; - if(PARAM.inp.calculation=="scf") + if(inp.calculation=="scf") { std::cout << " Self-consistent calculations for electrons" << std::endl; } - else if(PARAM.inp.calculation=="test") + else if(inp.calculation=="test") { std::cout << " Test run" << std::endl; } - if(PARAM.inp.calculation=="relax") + if(inp.calculation=="relax") { std::cout << " Ion relaxation calculations" << std::endl; } - if(PARAM.inp.calculation=="cell-relax") + if(inp.calculation=="cell-relax") { std::cout << " Cell relaxation calculations" << std::endl; } - if(PARAM.inp.calculation=="md") + if(inp.calculation=="md") { std::cout << " Molecular Dynamics simulations" << std::endl; @@ -79,12 +82,12 @@ void setup_parameters(UnitCell& ucell, K_Vectors& kv) << std::setw(12) << "PROCESSORS" << std::setw(12) << "THREADS"; - const bool orbinfo = (PARAM.inp.basis_type=="lcao" || PARAM.inp.basis_type=="lcao_in_pw" - || (PARAM.inp.basis_type=="pw" && PARAM.inp.init_wfc.substr(0, 3) == "nao")); + const bool orbinfo = (inp.basis_type=="lcao" || inp.basis_type=="lcao_in_pw" + || (inp.basis_type=="pw" && inp.init_wfc.substr(0, 3) == "nao")); if (orbinfo) { std::cout << std::setw(12) << "NBASE"; } std::cout << std::endl; - std::cout << " " << std::setw(8) << PARAM.inp.nspin; + std::cout << " " << std::setw(8) << inp.nspin; if(PARAM.globalv.gamma_only_local) { @@ -105,15 +108,15 @@ void setup_parameters(UnitCell& ucell, K_Vectors& kv) std::cout << " ---------------------------------------------------------" << std::endl; - if(PARAM.inp.basis_type == "lcao") + if(inp.basis_type == "lcao") { std::cout << " Use Systematically Improvable Atomic bases" << std::endl; } - else if(PARAM.inp.basis_type == "lcao_in_pw") + else if(inp.basis_type == "lcao_in_pw") { std::cout << " Expand Atomic bases into plane waves" << std::endl; } - else if(PARAM.inp.basis_type == "pw") + else if(inp.basis_type == "pw") { std::cout << " Use plane wave basis" << std::endl; } @@ -384,4 +387,32 @@ void print_screen(const int& stress_step, const int& force_step, const int& iste GlobalV::ofs_running << " ================================================================" << std::endl; } + +void print_kpar(const int &nks, const int &kpar_lcao) +{ + assert(nks>0); + assert(kpar_lcao>0); + + // 15) if kpar is not divisible by nks, print a warning + if (kpar_lcao > 1) + { + if (nks % kpar_lcao != 0) + { + ModuleBase::WARNING("ModuleIO::print_kpar", "nks is not divisible by kpar."); + std::cout << "\n%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%" + "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%" + "%%%%%%%%%%%%%%%%%%%%%%%%%%" + << std::endl; + std::cout << " Warning: nks (" << nks << ") is not divisible by kpar (" + << kpar_lcao << ")." << std::endl; + std::cout << " This may lead to poor load balance. It is strongly suggested to" << std::endl; + std::cout << " set nks to be divisible by kpar, but if this is really what" << std::endl; + std::cout << " you want, please ignore this warning." << std::endl; + std::cout << "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%" + "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%" + "%%%%%%%%%%%%\n"; + } + } +} + } // namespace ModuleIO diff --git a/source/source_io/module_output/print_info.h b/source/source_io/module_output/print_info.h new file mode 100644 index 0000000000..fcdb90704d --- /dev/null +++ b/source/source_io/module_output/print_info.h @@ -0,0 +1,34 @@ +#ifndef PRINT_INFO_H +#define PRINT_INFO_H + +#include "source_base/timer.h" +#include "source_basis/module_pw/pw_basis_k.h" +#include "source_cell/klist.h" +#include "source_cell/unitcell.h" +#include "source_io/module_parameter/input_parameter.h" + +namespace ModuleIO +{ +// print out to screen about the readin parameters +void print_parameters( + const UnitCell& ucell, + K_Vectors& kv, + const Input_para& inp); + +void print_time(time_t& time_start, time_t& time_finish); + +void print_screen(const int& stress_step, const int& force_step, const int& istep); + +//! Print charge density using FFT +void print_rhofft(ModulePW::PW_Basis* pw_rhod, + ModulePW::PW_Basis* pw_rho, + ModulePW::PW_Basis_Big* pw_big, + std::ofstream& ofs); + +void print_wfcfft(const Input_para& inp, ModulePW::PW_Basis_K& pw_wfc, std::ofstream& ofs); + +void print_kpar(const int &nks, const int &kpar_lcao); + +} // namespace ModuleIO + +#endif diff --git a/source/source_io/read_cube.cpp b/source/source_io/module_output/read_cube.cpp similarity index 94% rename from source/source_io/read_cube.cpp rename to source/source_io/module_output/read_cube.cpp index dea1136edd..5553245244 100644 --- a/source/source_io/read_cube.cpp +++ b/source/source_io/module_output/read_cube.cpp @@ -1,4 +1,4 @@ -#include "source_io/cube_io.h" +#include "source_io/module_output/cube_io.h" #include #include "source_pw/module_pwdft/parallel_grid.h" #include // use std::memcpy @@ -51,7 +51,8 @@ bool ModuleIO::read_vdata_palgrid( std::vector data_read; // we've already checked the file existence, so we don't need the returned value here - ModuleIO::read_cube(fn, comment, natom, origin, nx_read, ny_read, nz_read, dx, dy, dz, atom_type, atom_charge, atom_pos, data_read); + ModuleIO::read_cube(fn, comment, natom, origin, nx_read, ny_read, nz_read, + dx, dy, dz, atom_type, atom_charge, atom_pos, data_read); // if mismatch, trilinear interpolate if (nx == nx_read && ny == ny_read && nz == nz_read) @@ -161,14 +162,24 @@ bool ModuleIO::read_cube(const std::string& file, { std::ifstream ifs(file); - if (!ifs) { return false; } + if (!ifs) + { + return false; + } comment.resize(2); - for (auto& c : comment) { std::getline(ifs, c); } + for (auto& c : comment) + { + std::getline(ifs, c); + } ifs >> natom; + origin.resize(3); - for (auto& cp : origin) { ifs >> cp; } + for (auto& cp : origin) + { + ifs >> cp; + } dx.resize(3); dy.resize(3); @@ -187,7 +198,10 @@ bool ModuleIO::read_cube(const std::string& file, const int nxyz = nx * ny * nz; data.resize(nxyz); - for (int i = 0;i < nxyz;++i) { ifs >> data[i]; } + for (int i = 0;i < nxyz;++i) + { + ifs >> data[i]; + } ifs.close(); return true; diff --git a/source/source_io/read_exit_file.cpp b/source/source_io/module_output/read_exit_file.cpp similarity index 100% rename from source/source_io/read_exit_file.cpp rename to source/source_io/module_output/read_exit_file.cpp diff --git a/source/source_io/read_exit_file.h b/source/source_io/module_output/read_exit_file.h similarity index 100% rename from source/source_io/read_exit_file.h rename to source/source_io/module_output/read_exit_file.h diff --git a/source/source_io/sparse_matrix.cpp b/source/source_io/module_output/sparse_matrix.cpp similarity index 86% rename from source/source_io/sparse_matrix.cpp rename to source/source_io/module_output/sparse_matrix.cpp index 779760430a..c6d02495d5 100644 --- a/source/source_io/sparse_matrix.cpp +++ b/source/source_io/module_output/sparse_matrix.cpp @@ -34,15 +34,25 @@ void SparseMatrix::printToCSR(std::ostream& ofs, int precision) std::vector csr_row_ptr; csr_row_ptr.assign(_rows + 1, 0); + ofs << std::scientific << std::setprecision(precision); + // print the CSR values + ofs << " # CSR values"; + size_t count1 = 0; for (const auto &element : elements) { - ofs << " " << std::fixed << std::scientific << std::setprecision(precision) << element.second; + if(count1%6==0) ofs << std::endl; + count1++; + ofs << " " << element.second; } ofs << std::endl; // print the CSR column indices + ofs << " # CSR column indices"; + size_t count2 = 0; for (const auto &element : elements) { + if(count2%16==0) ofs << std::endl; + count2++; ofs << " " << element.first.second; int row = element.first.first; csr_row_ptr[row + 1]++; @@ -56,11 +66,13 @@ void SparseMatrix::printToCSR(std::ostream& ofs, int precision) } // print the CSR row pointers + ofs << " # CSR row pointers"; for (int i = 0; i < csr_row_ptr.size(); i++) { + if(i%16==0) ofs << std::endl; ofs << " " << csr_row_ptr[i]; } - ofs << std::endl; + ofs << std::endl << std::endl; } /** @@ -113,4 +125,4 @@ T SparseMatrix::operator()(int row, int col) const template class SparseMatrix; template class SparseMatrix>; -} // namespace ModuleIO \ No newline at end of file +} // namespace ModuleIO diff --git a/source/source_io/sparse_matrix.h b/source/source_io/module_output/sparse_matrix.h similarity index 100% rename from source/source_io/sparse_matrix.h rename to source/source_io/module_output/sparse_matrix.h diff --git a/source/source_io/module_output/ucell_io.cpp b/source/source_io/module_output/ucell_io.cpp new file mode 100644 index 0000000000..1062e7f373 --- /dev/null +++ b/source/source_io/module_output/ucell_io.cpp @@ -0,0 +1,60 @@ +#include "source_io/module_output/ucell_io.h" +#include "source_base/constants.h" + +#include + +namespace ModuleIO { + +void UcellIO::write_ucell(std::ofstream& ofs, const UnitCell* ucell) +{ + // write the UnitCell information + ofs << " " << ucell->latName << std::endl; + ofs << " " << ucell->lat0 * ModuleBase::BOHR_TO_A << std::endl; + ofs << " " << ucell->latvec.e11 << " " << ucell->latvec.e12 << " " << ucell->latvec.e13 << std::endl; + ofs << " " << ucell->latvec.e21 << " " << ucell->latvec.e22 << " " << ucell->latvec.e23 << std::endl; + ofs << " " << ucell->latvec.e31 << " " << ucell->latvec.e32 << " " << ucell->latvec.e33 << std::endl; + for (int it = 0; it < ucell->ntype; it++) + { + ofs << " " << ucell->atoms[it].label; + } + ofs << std::endl; + for (int it = 0; it < ucell->ntype; it++) + { + ofs << " " << ucell->atoms[it].na; + } + ofs << std::endl; + ofs << " Direct" << std::endl; + for (int it = 0; it < ucell->ntype; it++) + { + Atom* atom = &ucell->atoms[it]; + ofs << std::setprecision(15); + for (int ia = 0; ia < ucell->atoms[it].na; ia++) + { + ofs << " " << atom->taud[ia].x << " " << atom->taud[ia].y << " " << atom->taud[ia].z << std::endl; + } + } +} + +void UcellIO::read_ucell(std::ifstream& ifs) +{ + std::string tmp; + for (int i = 0; i < 6; i++) + { + std::getline(ifs, tmp); // latName + lat0 + latvec + atom label + } + std::getline(ifs, tmp); // atom number of each type + + std::istringstream iss(tmp); + int natom = 0; + int total_natom = 0; + while (iss >> natom) + { + total_natom += natom; + } + for (int i = 0; i < total_natom + 1; i++) + { + std::getline(ifs, tmp); // Direct + atom coordinates + } +} + +} // namespace ModuleIO diff --git a/source/source_io/module_output/ucell_io.h b/source/source_io/module_output/ucell_io.h new file mode 100644 index 0000000000..2441fd17da --- /dev/null +++ b/source/source_io/module_output/ucell_io.h @@ -0,0 +1,36 @@ +#ifndef UCELL_IO_H +#define UCELL_IO_H + +#include "source_cell/unitcell.h" + +#include + +namespace ModuleIO { + +/** + * @brief A class for unit cell I/O operations + * + * This class provides methods to write and read unit cell information + * to/from files, particularly for DMK files. + */ +class UcellIO { +public: + /** + * @brief Writes the unit cell information to a file. + * + * @param ofs The output file stream. + * @param ucell A pointer to the UnitCell object. + */ + static void write_ucell(std::ofstream& ofs, const UnitCell* ucell); + + /** + * @brief Reads the unit cell information lines in a file. + * + * @param ifs The input file stream. + */ + static void read_ucell(std::ifstream& ifs); +}; + +} // namespace ModuleIO + +#endif // UCELL_IO_H diff --git a/source/source_io/write_cube.cpp b/source/source_io/module_output/write_cube.cpp similarity index 92% rename from source/source_io/write_cube.cpp rename to source/source_io/module_output/write_cube.cpp index 99e33e03bf..39c5454d4b 100644 --- a/source/source_io/write_cube.cpp +++ b/source/source_io/module_output/write_cube.cpp @@ -1,7 +1,7 @@ #include "source_base/element_name.h" #include "source_base/parallel_comm.h" #include "source_pw/module_pwdft/parallel_grid.h" -#include "source_io/cube_io.h" +#include "source_io/module_output/cube_io.h" #include "source_io/module_parameter/parameter.h" #include @@ -16,7 +16,7 @@ void ModuleIO::write_vdata_palgrid(const Parallel_Grid& pgrid, const double* const data, const int is, const int nspin, - const int iter, + const int istep, const std::string& fn, const double ef, const UnitCell* const ucell, @@ -64,27 +64,29 @@ void ModuleIO::write_vdata_palgrid(const Parallel_Grid& pgrid, if ((!reduce_all_pool && my_rank == 0) || (reduce_all_pool && rank_in_pool == 0)) { /// output header for cube file - ss << "STEP: " << iter << " Cubefile created from ABACUS. Inner loop is z, followed by y and x" << std::endl; - - ss << nspin << " (nspin) "; ss << std::fixed; ss << std::setprecision(6); + + ss << "Ionic_Step " << istep+1 + << " Cubefile created from ABACUS. Inner loop is z, followed by y and x" << std::endl; + + ss << nspin << " # number of spin directions "; if (out_fermi == 1) { if (PARAM.globalv.two_fermi) { if (is == 0) { - ss << ef << " (fermi energy for spin=1, in Ry)" << std::endl; + ss << ef << " # Fermi energy for spin=1, in Ry" << std::endl; } else if (is == 1) { - ss << ef << " (fermi energy for spin=2, in Ry)" << std::endl; + ss << ef << " # Fermi energy for spin=2, in Ry" << std::endl; } } else { - ss << ef << " (fermi energy, in Ry)" << std::endl; + ss << ef << " # Fermi energy, in Ry" << std::endl; } } else @@ -214,6 +216,9 @@ void ModuleIO::write_cube(const std::string& file, std::ofstream ofs(file); + // mohan add 2025-09-10 + GlobalV::ofs_running << " Write data to file: " << file << std::endl; + for (int i = 0; i < 2; ++i) { ofs << comment[i] << "\n"; diff --git a/source/source_io/write_orb_info.cpp b/source/source_io/module_output/write_orb_info.cpp similarity index 100% rename from source/source_io/write_orb_info.cpp rename to source/source_io/module_output/write_orb_info.cpp diff --git a/source/source_io/write_orb_info.h b/source/source_io/module_output/write_orb_info.h similarity index 100% rename from source/source_io/write_orb_info.h rename to source/source_io/module_output/write_orb_info.h diff --git a/source/source_io/write_pao.cpp b/source/source_io/module_output/write_pao.cpp similarity index 100% rename from source/source_io/write_pao.cpp rename to source/source_io/module_output/write_pao.cpp diff --git a/source/source_io/write_pao.h b/source/source_io/module_output/write_pao.h similarity index 100% rename from source/source_io/write_pao.h rename to source/source_io/module_output/write_pao.h diff --git a/source/source_io/input_conv.cpp b/source/source_io/module_parameter/input_conv.cpp similarity index 96% rename from source/source_io/input_conv.cpp rename to source/source_io/module_parameter/input_conv.cpp index 952ca873d1..c83b46ecd6 100644 --- a/source/source_io/input_conv.cpp +++ b/source/source_io/module_parameter/input_conv.cpp @@ -1,4 +1,4 @@ -#include "source_io/input_conv.h" +#include "input_conv.h" #include "source_base/global_function.h" #include "source_base/global_variable.h" @@ -6,14 +6,15 @@ #include "source_cell/unitcell.h" #include "source_estate/occupy.h" #include "source_hamilt/module_surchem/surchem.h" -#include "source_pw/module_pwdft/global.h" -#include "source_io/berryphase.h" +#include "../module_unk/berryphase.h" #include "source_io/module_parameter/parameter.h" #include "source_relax/ions_move_basic.h" #include "source_relax/lattice_change_basic.h" #include +#include "source_hamilt/module_xc/exx_info.h" // use GlobalC::exx_info +#include "source_hamilt/module_xc/xc_functional.h" // use XC_Functional #ifdef __EXX #include "source_lcao/module_ri/exx_abfs-jle.h" #endif @@ -43,6 +44,12 @@ #include "source_hsolver/hsolver_pw.h" #include "source_md/md_func.h" +#include "source_lcao/module_dftu/dftu.h" // mohan add 20251107 + +#include "source_io/module_restart/restart.h" +#include "source_relax/bfgs_basic.h" +#include "source_relax/ions_move_cg.h" + #ifdef __LCAO std::vector Input_Conv::convert_units(std::string params, double c) { std::vector params_ori; @@ -213,16 +220,16 @@ void Input_Conv::Convert() if (PARAM.inp.dft_plus_u) { - GlobalC::dftu.Yukawa = PARAM.inp.yukawa_potential; - GlobalC::dftu.omc = PARAM.inp.omc; - GlobalC::dftu.orbital_corr = PARAM.inp.orbital_corr; - GlobalC::dftu.uramping = PARAM.globalv.uramping; - GlobalC::dftu.mixing_dftu = PARAM.inp.mixing_dftu; - GlobalC::dftu.U = PARAM.globalv.hubbard_u; - GlobalC::dftu.U0 = PARAM.globalv.hubbard_u; + Plus_U::Yukawa = PARAM.inp.yukawa_potential; + Plus_U::omc = PARAM.inp.omc; + Plus_U::orbital_corr = PARAM.inp.orbital_corr; + Plus_U::uramping = PARAM.globalv.uramping; + Plus_U::mixing_dftu = PARAM.inp.mixing_dftu; + Plus_U::U = PARAM.globalv.hubbard_u; + Plus_U::U0 = PARAM.globalv.hubbard_u; if (PARAM.globalv.uramping > 0.01) { - ModuleBase::GlobalFunc::ZEROS(GlobalC::dftu.U.data(), PARAM.inp.ntype); + ModuleBase::GlobalFunc::ZEROS(Plus_U::U.data(), PARAM.inp.ntype); } } @@ -472,7 +479,9 @@ void Input_Conv::Convert() GlobalC::exx_info.info_ri.V_grad_R_threshold = PARAM.inp.exx_v_grad_r_threshold; GlobalC::exx_info.info_ri.ccp_rmesh_times = std::stod(PARAM.inp.exx_ccp_rmesh_times); GlobalC::exx_info.info_ri.exx_symmetry_realspace = PARAM.inp.exx_symmetry_realspace; + GlobalC::exx_info.info_ri.Cs_inv_thr = PARAM.inp.exx_cs_inv_thr; + GlobalC::exx_info.info_opt_abfs.pca_threshold = PARAM.inp.exx_pca_threshold; GlobalC::exx_info.info_opt_abfs.abfs_Lmax = PARAM.inp.exx_opt_orb_lmax; GlobalC::exx_info.info_opt_abfs.ecut_exx = PARAM.inp.exx_opt_orb_ecut; GlobalC::exx_info.info_opt_abfs.tolerence = PARAM.inp.exx_opt_orb_tolerence; diff --git a/source/source_io/input_conv.h b/source/source_io/module_parameter/input_conv.h similarity index 100% rename from source/source_io/input_conv.h rename to source/source_io/module_parameter/input_conv.h diff --git a/source/source_io/module_parameter/input_item.h b/source/source_io/module_parameter/input_item.h new file mode 100644 index 0000000000..ed07d04f83 --- /dev/null +++ b/source/source_io/module_parameter/input_item.h @@ -0,0 +1,80 @@ +#ifndef INPUT_ITEM_H +#define INPUT_ITEM_H +#include +#include +#include +#include +#include + +#include "source_io/module_parameter/parameter.h" +namespace ModuleIO +{ +class Input_Item +{ + public: + Input_Item(){}; + + Input_Item(const std::string& label_in) + { + label = label_in; + } + + Input_Item(const Input_Item& item) + { + label = item.label; + str_values = item.str_values; + final_value.str(item.final_value.str()); + // Documentation fields + category = item.category; + type = item.type; + description = item.description; + default_value = item.default_value; + unit = item.unit; + availability = item.availability; + annotation = item.annotation; + read_value = item.read_value; + check_value = item.check_value; + reset_value = item.reset_value; + get_final_value = item.get_final_value; + } + + std::string label; ///< label of the input item + std::vector str_values; ///< string values of the input item + std::stringstream final_value; ///< final value for writing to output INPUT file + + // Documentation fields for built-in help system + std::string category; ///< category for grouping (e.g., "System variables") + std::string type; ///< data type ("Integer", "Real", "String", "Boolean") + std::string description; ///< full description (supports multi-line, lists, notes) + std::string default_value; ///< default value as string + std::string unit; ///< unit of measurement (empty if none) + std::string availability; ///< availability conditions (empty if always) + + bool is_read() const ///< check if the input item is read + { + return !str_values.empty(); + } + + size_t get_size() const ///< get size of the input item + { + return str_values.size(); + } + + std::string annotation; ///< brief annotation (kept for backward compatibility) + + // ====== !!! These functions are complete. ====== + // ====== !!! Do not add any more functions here. ====== + /// read value function + std::function read_value = [](const Input_Item& item, Parameter& param) {}; + /// check value function + std::function check_value = nullptr; + /// reset this value when some conditions are met + /// e.g. should only reset the value of this item + std::function reset_value = nullptr; + /// get final_value function for output INPUT file + std::function get_final_value = nullptr; + // ====== !!! Do not add any more functions here. ====== +}; + +} // namespace ModuleIO +#endif // INPUT_ITEM_H \ No newline at end of file diff --git a/source/source_io/module_parameter/input_parameter.h b/source/source_io/module_parameter/input_parameter.h index 2222cd4c19..9a5638ff8b 100644 --- a/source/source_io/module_parameter/input_parameter.h +++ b/source/source_io/module_parameter/input_parameter.h @@ -6,6 +6,7 @@ #include #include + // It stores all input parameters both defined in INPUT file and not defined in // INPUT file struct Input_para @@ -32,7 +33,7 @@ struct Input_para bool cal_stress = false; ///< calculate the stress int kpar = 1; ///< ecch pool is for one k point int bndpar = 1; ///< parallel for stochastic/deterministic bands - std::string latname = "none"; ///< lattice name + std::string latname = "user_defined_lattice"; ///< lattice name double ecutwfc = 0; ///< energy cutoff for wavefunctions double ecutrho = 0; ///< energy cutoff for charge/potential @@ -59,7 +60,6 @@ struct Input_para std::string orbital_dir = ""; ///< directory of orbital file std::string read_file_dir = "auto"; ///< directory of files for reading bool restart_load = false; - std::string wannier_card = "none"; ///< input card for wannier functions. int mem_saver = 0; ///< 1: save psi when nscf calculation. int diago_proc = 0; ///< the number of procs used to diag. mohan add 2012-01-13 int nbspline = -1; ///< the order of B-spline basis(>=0) if it is -1 (default) @@ -68,6 +68,7 @@ struct Input_para std::string device = "auto"; std::string precision = "double"; + bool timer_enable_nvtx = false; // ============== #Parameters (2.Electronic structure) =========================== std::string ks_solver = "default"; ///< xiaohui add 2013-09-01 @@ -82,7 +83,7 @@ struct Input_para bool pseudo_mesh = false; ///< 0: use msh to normalize radial wave functions; 1: ///< use mesh, which is used in QE. int nspin = 1; ///< LDA ; LSDA ; non-linear spin - int pw_diag_nmax = 50; + int pw_diag_nmax = 50; ///< max number of iterations for pw diagonalization double pw_diag_thr = 0.01; ///< used in cg method bool diago_smooth_ethr = false; ///< smooth ethr for iter methods int pw_diag_ndim = 4; ///< dimension of workspace for Davidson diagonalization @@ -123,8 +124,9 @@ struct Input_para bool lspinorb = false; ///< consider the spin-orbit interaction bool noncolin = false; ///< using non-collinear-spin - double soc_lambda = 1.0; ///< The fraction of averaged SOC pseudopotential - ///< is given by (1-soc_lambda) + double soc_lambda = 1.0; ///< The fraction of SOC based on scalar relativity (SR) of the pseudopotential + + int dfthalf_type = 0; ///< DFT-1/2 type, 0:off, 1: shell DFT-1/2 // ============== #Parameters (3.LCAO) =========================== int nb2d = 0; ///< matrix 2d division. @@ -149,7 +151,7 @@ struct Input_para // int bessel_nao_lmax; ///< lmax used in descriptor // ============== #Parameters (4.Relaxation) =========================== - std::string relax_method = "cg"; ///< methods to move_ion: sd, bfgs, cg... + std::vector relax_method = {"cg","1"}; ///< methods to move_ion: sd, bfgs, cg... bool relax_new = true; bool relax = false; ///< allow relaxation along the specific direction double relax_scale_force = 0.5; @@ -246,6 +248,9 @@ struct Input_para std::vector of_ml_chi_qnl = {1.0}; ///< Hyperparameter: tanh_qnl = tanh(chi_qnl * qnl) bool of_ml_local_test = false; ///< Test: read in the density, and output the F and Pauli potential + // ML EXX, temporarily located here, sunliang + bool ml_exx = false; ///< Use ML EXX or not + // ============== #Parameters (7.stochastic DFT) =========================== int method_sto = 2; ///< different methods for sdft, 1: slow, less memory 2: ///< fast, more memory @@ -267,6 +272,8 @@ struct Input_para ///< descriptors for training, wenfei 2022-1-12 int deepks_out_freq_elec = 0; ///< (need libnpy) frequency of electronic iteration to output ///< descriptors and labels, default is 0, which means no output until convergence + std::string deepks_out_base = "none"; ///< (need libnpy) base functional for output files, with dft_functional as target functional + /// default is "none", which means no base functional bool deepks_scf = false; ///< (need libnpy and libtorch) if set to true, a trained model ///< would be needed to calculate V_delta and F_delta int deepks_bandgap = 0; ///< for bandgap label. QO added 2021-12-15 @@ -297,11 +304,10 @@ struct Input_para int propagator = 0; ///< method of propagator int td_stype = 0; ///< type of space domain 0 : length gauge 1: velocity gauge std::string td_ttype = "0"; ///< type of time domain - ///< 0 Gauss type function. - ///< 1 trapezoid type function. - ///< 2 Trigonometric functions, sin^2. - ///< 3 heaviside function. - ///< 4 HHG function. + ///< 0: Gaussian type function. + ///< 1: Trapezoid type function. + ///< 2: Trigonometric functions, sin^2. + ///< 3: Heaviside step function. int td_tstart = 1; int td_tend = 1000; @@ -362,12 +368,12 @@ struct Input_para = {}; ///< the number of basis functions for each atom type used in FHI-aims (for benchmark) // ============== #Parameters (11.Output) =========================== bool out_stru = false; ///< outut stru file each ion step - int out_freq_elec = 0; ///< the frequency of electronic iter to output charge and wavefunction - int out_freq_ion = 0; ///< the frequency ( >= 0 ) of ionic step to output charge density; - ///< 0: output only when ion steps are finished + int out_freq_elec = 0; ///< print information every few electronic steps + int out_freq_ion = 0; ///< print information every few ionic steps + int out_freq_td = 0; ///< print information every few completed electronic iterations in RT-TDDFT std::vector out_chg = {0, 3}; ///< output charge density. 0: no; 1: yes std::vector out_xc_r = {-1, 3}; ///< output xc(r). -1: no; >=0: output the order of xc(r) - int out_pot = 0; ///< yes or no + std::vector out_pot = {0, 8}; ///< output potential int out_wfc_pw = 0; ///< 0: no; 1: txt; 2: dat std::vector out_band = {0, 8}; ///< band calculation pengfei 2014-10-13 int out_dos = 0; ///< dos calculation. mohan add 20090909 @@ -375,9 +381,8 @@ struct Input_para bool out_mul = false; ///< qifeng add 2019-9-10 bool out_proj_band = false; ///< projected band structure calculation jiyy add 2022-05-11 std::string out_level = "ie"; ///< control the output information. - bool out_dmk = false; ///< output density matrix DM(k) - bool out_dmr = false; ///< output density matrix DM(R) - bool out_bandgap = false; ///< QO added for bandgap printing + std::vector out_dmr = {0, 8}; ///< output density matrix in real space DM(R) + std::vector out_dmk = {0, 8}; ///< output density matrix in reciprocal space DM(k) std::vector out_mat_hs = {0, 8}; ///< output H matrix and S matrix in local basis. std::vector out_mat_tk = {0, 8}; ///< output T(k) matrix in local basis. std::vector out_mat_l = {0, 8}; ///< output L matrix in local basis. @@ -389,7 +394,6 @@ struct Input_para ///< KS-orbital representation. bool out_mat_xc2 = false; ///< output exchange-correlation matrix Vxc(R) in NAO representation. bool out_eband_terms = false; ///< output the band energy terms separately - int out_interval = 1; bool out_app_flag = true; ///< whether output r(R), H(R), S(R), T(R), and dH(R) matrices ///< in an append manner during MD liuyu 2023-03-20 int out_ndigits = 8; ///< Assuming 8 digits precision is needed for matrices output @@ -399,7 +403,7 @@ struct Input_para int out_wfc_lcao = 0; ///< output the wave functions in local basis. bool out_dipole = false; ///< output the dipole or not bool out_efield = false; ///< output the efield or not - bool out_current = false; ///< output the current or not + int out_current = 0; ///< output the current or not bool out_current_k = false; ///< output tddft current for all k points bool out_vecpot = false; ///< output the vector potential or not bool restart_save = false; ///< restart //Peize Lin add 2020-04-04 @@ -410,6 +414,8 @@ struct Input_para bool if_separate_k = false; ///< whether to write partial charge for all k-points to individual files or merge them std::vector out_elf = {0, 3}; ///< output the electron localization function (ELF). 0: no; 1: yes std::vector cal_symm_repr = {0, 3}; ///< output the symmetry representation matrix + int out_spillage = 0; ///< output the spillage of the wave function + std::string spillage_outdir = "./"; ///< output directory for spillage // ============== #Parameters (12.Postprocess) =========================== double dos_emin_ev = -15.0; @@ -544,12 +550,13 @@ struct Input_para ///< calculating Columb potential is to that of atomic orbitals int exx_opt_orb_lmax = 0; ///< the maximum l of the spherical Bessel functions for opt ABFs double exx_opt_orb_ecut = 0.0; ///< the cut-off of plane wave expansion for opt ABFs - double exx_opt_orb_tolerence = 0.0; ///< the threshold when solving for the zeros of spherical Bessel + double exx_opt_orb_tolerence = 1E-12; ///< the threshold when solving for the zeros of spherical Bessel ///< functions for opt ABFs bool exx_symmetry_realspace = true; ///< whether to reduce the real-space sector in when using symmetry=1 in EXX calculation double rpa_ccp_rmesh_times = 10.0; ///< how many times larger the radial mesh required for ///< calculating Columb potential is to that of atomic orbitals + double exx_cs_inv_thr = -1; ///< threshold to inverse Vq in abfs for generating Cs bool out_ri_cv = false; ///< Whether to output the coefficient tensor C and ABFs-representation Coulomb matrix V // ============== #Parameters (16.dft+u) ====================== // DFT+U Xin Qu added on 2020-10-29 @@ -652,35 +659,46 @@ struct Input_para // EXX for planewave basis, rhx0820 2025-03-10 bool exxace = true; // exxace, exact exchange for planewave basis, https://doi.org/10.1021/acs.jctc.6b00092 bool exx_gamma_extrapolation = true; // gamma point extrapolation for exx, https://doi.org/10.1103/PhysRevB.79.205114 + std::string exx_thr_type = "density"; // threshold type for exx outer loop, energy or density + double exx_ene_thr = 1e-5; // threshold for exx outer loop when exx_thr_type = energy + double ecutexx = 0.0; // energy cutoff for exx calculation, Ry // ==== #Parameters (23.XC external parameterization) ======== /* * the following two sets of parameters are for the XC parameterization. * The first element should be the LibXC id, to assign the analytical * form of the eXchange and Correlation part of the functional. - * + * * Starting from the second parameter, the parameters are the coefficients * of the functional. For example the M06-L functional, one should refer * to the source file (source code of LibXC) - * + * * src/mgga_x_m06l.c - * + * * the implementation can be found in the file - * + * * src/maple2c/mgga_exc/mgga_x_m06l.c. - * + * * There are 18 parameters for the exchange part, so the whole length of * the xc_exch_ext should be 19. (MGGA_X_M06L, id = 203) - * + * * Likewise, the correlation part can be found in corresponding files. - * + * * PBE functional is used as the default functional for XCPNet. */ // src/gga_x_pbe.c std::vector xc_exch_ext = { - 101, 0.8040, 0.2195149727645171}; + 101, 0.8040, 0.2195149727645171}; // src/gga_c_pbe.c std::vector xc_corr_ext = { - 130, 0.06672455060314922, 0.031090690869654895034, 1.00000}; + 130, 0.06672455060314922, 0.031090690869654895034, 1.00000}; + + // ============== #Parameters (24.td-ofdft) =========================== + bool of_cd = false; ///< add CD potential or not https://doi.org/10.1103/PhysRevB.98.144302 + double of_mCD_alpha = 1.0; /// parameter of modified CD Potential + + // ============== #Parameters (25.uncommon hardware) ================= + int dsp_count = 4; /// the count of dsp hardwares in one node + }; #endif diff --git a/source/source_io/read_input.cpp b/source/source_io/module_parameter/read_input.cpp similarity index 79% rename from source/source_io/read_input.cpp rename to source/source_io/module_parameter/read_input.cpp index c59c31d8c6..4dc09c4c65 100644 --- a/source/source_io/read_input.cpp +++ b/source/source_io/module_parameter/read_input.cpp @@ -1,5 +1,6 @@ #include "read_input.h" + #include #include #include @@ -15,6 +16,10 @@ #include "source_base/tool_quit.h" #include "source_base/tool_title.h" #include "source_base/module_device/device.h" +#include +#include +#include +#include namespace ModuleIO { @@ -69,7 +74,7 @@ std::string to_dir(const std::string& str) return str_dir; } -void read_information(std::ifstream& ifs, std::vector& output, const std::string& delimiters) +void read_information(std::stringstream& ifs, std::vector& output, const std::string& delimiters) { std::string line; getline(ifs, line); @@ -88,10 +93,74 @@ void read_information(std::ifstream& ifs, std::vector& output, cons bool ReadInput::check_mode = false; +bool filter_nonascii_and_comment(std::ifstream& ifs, + std::stringstream& out_ascii_stream) +{ + if (!ifs.is_open()) + { + if (!ifs) return false; + } + + std::streampos old_pos = ifs.tellg(); + ifs.clear(); + ifs.seekg(0, std::ios::beg); + + char c = '\0'; + while (ifs.get(c)) + { + // If comment start, skip until end of line (but keep the newline) + if (c == '#') + { + char d = '\0'; + bool newline_found = false; + while (ifs.get(d)) + { + if (d == '\n' || d == '\r') + { + // preserve line break in output + out_ascii_stream.put('\n'); + // If CRLF, consume the LF after CR (already wrote a single '\n') + if (d == '\r' && ifs.peek() == '\n') + { + ifs.get(d); // consume '\n' + } + newline_found = true; + break; + } + } + if (!newline_found) + { + // reached EOF while skipping comment + break; + } + continue; + } + + unsigned char uc = static_cast(c); + if (uc <= 0x7F) + { + // ASCII character + out_ascii_stream.put(c); + } + else + { + // replace non-ASCII with space character + out_ascii_stream.put(' '); + } + } + + // recover ifstream state and position + ifs.clear(); + ifs.seekg(old_pos, std::ios::beg); + + return true; +} + + ReadInput::ReadInput(const int& rank) { this->rank = rank; - + // add items this->item_system(); this->item_elec_stru(); @@ -101,6 +170,7 @@ ReadInput::ReadInput(const int& rank) this->item_sdft(); this->item_deepks(); this->item_rt_tddft(); + this->item_tdofdft(); this->item_lr_tddft(); this->item_output(); this->item_postprocess(); @@ -113,6 +183,7 @@ ReadInput::ReadInput(const int& rank) void ReadInput::read_parameters(Parameter& param, const std::string& filename_in) { ModuleBase::TITLE("ReadInput", "read_parameters"); + // 1. only rank 0 read the input file if (this->rank == 0) { @@ -153,17 +224,14 @@ void ReadInput::read_parameters(Parameter& param, const std::string& filename_in } } - // 6. check and reset kpar. - // It must be after bcastfunc, and kpar and bndpar are synchronized - // It must be before wirte_txt_input, because kpar is used in write_txt_input - if (param.inp.device == "gpu" && param.inp.basis_type == "pw") + // 6. Initialize GPU device context (unified entry point) + // This must be after bcastfunc to ensure param.inp.device is synchronized across all ranks + // This replaces scattered cudaSetDevice/hipSetDevice calls throughout the codebase + if (param.inp.device == "gpu") { - param.input.kpar = base_device::information::get_device_kpar(param.inp.kpar, param.inp.bndpar); + base_device::DeviceContext::instance().init(); } - - - if (this->check_mode) { std::cout << "----------------------------------------------------------" << std::endl; @@ -196,7 +264,6 @@ void ReadInput::create_directory(const Parameter& param) } // NOTE: "make_dir_out" must be called by all processes!!! // Maybe it is not good, because only rank 0 can create the directory. - #ifndef __SW ModuleBase::Global_File::make_dir_out(param.input.suffix, param.input.calculation, out_dir, @@ -204,14 +271,12 @@ void ReadInput::create_directory(const Parameter& param) this->rank, param.input.mdp.md_restart, param.input.out_alllog); // xiaohui add 2013-09-01 - #endif - const std::string ss = "test -d " + PARAM.inp.read_file_dir; - #ifndef __SW - if (system(ss.c_str())) + //const std::string ss = "test -d " + PARAM.inp.read_file_dir; + struct stat st; + if (stat(PARAM.inp.read_file_dir.c_str(), &st) != 0 || !S_ISDIR(st.st_mode)) { ModuleBase::WARNING_QUIT("ReadInput", "please set right files directory for reading in."); } - #endif return; } @@ -227,32 +292,36 @@ void ReadInput::read_txt_input(Parameter& param, const std::string& filename) { ModuleBase::TITLE("ReadInput", "read_txt_input"); - std::ifstream ifs(filename.c_str(), std::ios::in); + std::stringstream ascii_stream; - if (!ifs) - { - std::cout << " Can't find the INPUT file." << std::endl; - ModuleBase::WARNING_QUIT("Input::Init", "Error during readin parameters.", 1); - } + std::ifstream ifs(filename.c_str(), std::ios::in); - ifs.clear(); - ifs.seekg(0); + if (!ifs) + { + std::cout << " Can't find the INPUT file." << std::endl; + ModuleBase::WARNING_QUIT("Input::Init", "Error during readin parameters.", 1); + } - std::string word; - int ierr = 0; + ifs.clear(); + ifs.seekg(0); - // ifs >> std::setiosflags(ios::uppercase); - ifs.rdstate(); - while (ifs.good()) + filter_nonascii_and_comment(ifs, ascii_stream); + ifs.clear(); + + // file close after reading + + int ierr = 0; + ascii_stream.rdstate(); + while (ascii_stream.good()) { - ifs >> word; - ifs.ignore(150, '\n'); + std::string word; + ascii_stream >> word; + ascii_stream.ignore(150, '\n'); if (word == "INPUT_PARAMETERS") { ierr = 1; break; } - ifs.rdstate(); } if (ierr == 0) @@ -265,14 +334,13 @@ void ReadInput::read_txt_input(Parameter& param, const std::string& filename) "Bad parameter, please check the input parameters in file INPUT", 1); } - ifs.rdstate(); - // the `word1` is moved here and is renamed to improve the code-readability - std::string word_; // temporary variable to store the keyword read-in - while (ifs.good()) + ascii_stream.rdstate(); + while (ascii_stream.good()) { - ifs >> word_; - if (ifs.eof()) { break; } - word = FmtCore::lower(word_); // the lowercase of the keyword + std::string word; // temporary variable to store the keyword read-in + ascii_stream >> word; + if (ascii_stream.eof()) { break; } + word = FmtCore::lower(word); // the lowercase of the keyword auto it = std::find_if(input_lists.begin(), input_lists.end(), [&word](const std::pair& item) { return item.first == word; }); if (it != this->input_lists.end()) // find the keyword @@ -285,7 +353,7 @@ void ReadInput::read_txt_input(Parameter& param, const std::string& filename) ModuleBase::WARNING_QUIT("ReadInput", warningstr); } // qianrui delete '/' 2024-07-10, because path has '/' head. - read_information(ifs, p_item->str_values, "#!"); + read_information(ascii_stream, p_item->str_values, "#!"); } else // otherwise, it should be a comment or an unrecognized parameter { @@ -298,25 +366,24 @@ void ReadInput::read_txt_input(Parameter& param, const std::string& filename) // otherwise, it is a comment. However, ... // but it is not always to be shorter than 150 characters // we can use ignore to skip the rest of the line - ifs.ignore(std::numeric_limits::max(), '\n'); + ascii_stream.ignore(std::numeric_limits::max(), '\n'); } - ifs.rdstate(); - if (ifs.eof()) + ascii_stream.rdstate(); + if (ascii_stream.eof()) { break; } - else if (ifs.bad()) + else if (ascii_stream.bad()) { - std::cout << " Bad input parameters. " << std::endl; - exit(1); + ModuleBase::WARNING_QUIT("Input", + " Bad input parameters. ", 1); } - else if (ifs.fail()) + else if (ascii_stream.fail()) { - std::cout << " word = " << word << std::endl; - std::cout << " Fail to read parameters. " << std::endl; - ifs.clear(); - exit(1); + ascii_stream.clear(); + ModuleBase::WARNING_QUIT("Input", + " fail to read parameters. ", 1); } } @@ -331,8 +398,9 @@ void ReadInput::read_txt_input(Parameter& param, const std::string& filename) for (auto& input_item: this->input_lists) { Input_Item* resetvalue_item = &(input_item.second); - if (resetvalue_item->reset_value != nullptr) { - resetvalue_item->reset_value(*resetvalue_item, param); + if (resetvalue_item->reset_value != nullptr) + { + resetvalue_item->reset_value(*resetvalue_item, param); } } } @@ -487,15 +555,15 @@ void ReadInput::check_ntype(const std::string& fn, int& param_ntype) int ReadInput::current_md_step(const std::string& file_dir) { std::stringstream ssc; - ssc << file_dir << "Restart_md.dat"; + ssc << file_dir << "Restart_md.txt"; std::ifstream file(ssc.str().c_str()); if (!file) { - ModuleBase::WARNING_QUIT("current_md_step", "no Restart_md.dat"); + ModuleBase::WARNING_QUIT("current_md_step", "no Restart_md.txt"); } - int md_step; + int md_step = 0; file >> md_step; file.close(); @@ -504,9 +572,9 @@ int ReadInput::current_md_step(const std::string& file_dir) void ReadInput::add_item(const Input_Item& item) { - // only rank 0 read the input file - // So only rank 0 add the item to the input list - if (this->rank == 0) + // Normally only rank 0 reads the input file + // But rank -1 is used for help system mode where items should also be added + if (this->rank == 0 || this->rank == -1) { this->input_lists.push_back(make_pair(item.label, item)); } diff --git a/source/source_io/read_input.h b/source/source_io/module_parameter/read_input.h similarity index 87% rename from source/source_io/read_input.h rename to source/source_io/module_parameter/read_input.h index 8f1f2e0ec0..12b42a88c8 100644 --- a/source/source_io/read_input.h +++ b/source/source_io/module_parameter/read_input.h @@ -5,6 +5,9 @@ #include "source_io/module_parameter/parameter.h" #include +#include +#include + namespace ModuleIO { @@ -25,6 +28,15 @@ class ReadInput } readvalue_items.clear(); } + + /** + * @brief Get all registered input items (for help system) + * @return Reference to the vector of input items + */ + const std::vector>& get_input_lists() const + { + return input_lists; + } /** * @brief read in parameters from input file * @@ -68,7 +80,7 @@ class ReadInput /** * @brief determine the md step in restart case * - * @param file_dir directory of Restart_md.dat + * @param file_dir directory of Restart_md.txt * @return md step */ int current_md_step(const std::string& file_dir); @@ -108,6 +120,8 @@ class ReadInput // items for real time tddft void item_rt_tddft(); // items for linear response tddft + void item_tdofdft(); + // items for td-ofdft void item_lr_tddft(); // items for output void item_output(); @@ -150,6 +164,13 @@ std::string to_dir(const std::string& str); // return a warning string if the string is not found in the vector std::string nofound_str(std::vector init_chgs, const std::string& str); + +// filter non-ASCII characters from ifstream and output to stringstream +// return true if successful, false otherwise +bool filter_nonascii_and_comment(std::ifstream& ifs, + std::stringstream& out_ascii_stream); + + } // namespace ModuleIO #endif \ No newline at end of file diff --git a/source/source_io/module_parameter/read_input_item_deepks.cpp b/source/source_io/module_parameter/read_input_item_deepks.cpp new file mode 100644 index 0000000000..7f69b58dd5 --- /dev/null +++ b/source/source_io/module_parameter/read_input_item_deepks.cpp @@ -0,0 +1,343 @@ +#include "source_base/constants.h" +#include "source_base/tool_quit.h" +#include "source_io/module_parameter/parameter.h" +#include "read_input.h" +#include "read_input_tool.h" +namespace ModuleIO +{ +void ReadInput::item_deepks() +{ + // NOTE: The order of add_item() calls below determines the parameter order + // in the generated documentation (docs/advanced/input_files/input-main.md). + // Please preserve this ordering when adding new parameters. + { + Input_Item item("deepks_out_labels"); + item.annotation = ">0 compute descriptor for deepks. 1 used during training, 2 used for label production"; + item.category = "DeePKS"; + item.type = "Integer"; + item.description = R"(Print labels and descriptors for DeePKS in OUT.${suffix}. The names of these files start with "deepks". +* 0 : No output. +* 1 : Output intermediate files needed during DeePKS training. +* 2 : Output target labels for label preperation. The label files are named as deepks_.npy or deepks_.csr, where the units and formats are the same as label files .npy or .csr required for training, except that the first dimension (nframes) is excluded. System structrue files are also given in deepks_atom.npy and deepks_box.npy in the unit of Bohr, which means lattice_constant should be set to 1 when training. + +[NOTE] When deepks_out_labels equals 1, the path of a numerical descriptor (an orb file) is needed to be specified under the NUMERICAL_DESCRIPTOR tag in the STRU file. This is not needed when deepks_out_labels equals 2.)"; + item.default_value = "0"; + item.unit = ""; + item.availability = "Numerical atomic orbital basis"; + read_sync_int(input.deepks_out_labels); + this->add_item(item); + } + { + Input_Item item("deepks_out_freq_elec"); + item.annotation = ">0 frequency of electronic iteration to output descriptors and labels for deepks."; + item.category = "DeePKS"; + item.type = "Integer"; + item.description = "When deepks_out_freq_elec is greater than 0, print labels and descriptors for DeePKS in OUT.${suffix}/DeePKS_Labels_Elec per deepks_out_freq_elec electronic iterations, with suffix _e* to distinguish different steps. Often used with deepks_out_labels equals 1."; + item.default_value = "0"; + item.unit = ""; + item.availability = "Numerical atomic orbital basis"; + read_sync_int(input.deepks_out_freq_elec); + item.reset_value = [](const Input_Item& item, Parameter& para) { + if (para.input.deepks_out_freq_elec < 0) + { + para.input.deepks_out_freq_elec = 0; + } + }; + item.check_value = [](const Input_Item& item, const Parameter& para) { + if (para.input.deepks_out_freq_elec > 0 && para.input.deepks_out_base == "none") + { + ModuleBase::WARNING_QUIT("ReadInput", "to use deepks_out_freq_elec, please set deepks_out_base "); + } + }; + this->add_item(item); + } + { + Input_Item item("deepks_out_base"); + item.annotation = "base functional for output files, with dft_functional as target functional"; + item.category = "DeePKS"; + item.type = "String"; + item.description = "Print labels and descriptors calculated by base functional ( determined by deepks_out_base ) and target functional ( determined by dft_functional ) for DeePKS in per deepks_out_freq_elec electronic iterations. The SCF process, labels and descriptors output of the target functional are all consistent with those when the target functional is used alone. The only additional output under this configuration is the labels of the base functional. Often used with deepks_out_labels equals 1."; + item.default_value = "None"; + item.unit = ""; + item.availability = "Numerical atomic orbital basis and deepks_out_freq_elec is greater than 0"; + read_sync_string(input.deepks_out_base); + item.check_value = [](const Input_Item& item, const Parameter& para) { + if (para.input.deepks_out_base != "none" && para.input.deepks_out_labels == 0) + { + ModuleBase::WARNING_QUIT("ReadInput", "to use deepks_out_base, please set deepks_out_labels > 0 "); + } + if (para.input.deepks_out_base != "none" && para.input.deepks_bandgap > 0 ) + { + ModuleBase::WARNING_QUIT("ReadInput", "outputting bandgap labels during electronic steps is not implemented yet "); + } + }; + this->add_item(item); + } + { + Input_Item item("deepks_scf"); + item.annotation = ">0 add V_delta to Hamiltonian"; + item.category = "DeePKS"; + item.type = "Boolean"; + item.description = "perform self-consistent field iteration in DeePKS method" + "\n\n[NOTE] A trained, traced model file is needed."; + item.default_value = "False"; + item.unit = ""; + item.availability = "Numerical atomic orbital basis"; + read_sync_bool(input.deepks_scf); + item.check_value = [](const Input_Item& item, const Parameter& para) { +#ifndef __MLALGO + if (para.input.deepks_scf || para.input.deepks_out_labels || para.input.deepks_bandgap + || para.input.deepks_v_delta) + { + ModuleBase::WARNING_QUIT("Input_conv", "please compile with DeePKS"); + } +#endif + // if (!para.input.deepks_scf && para.input.deepks_out_labels == 1) + // { + // ModuleBase::WARNING_QUIT("Input_conv", "deepks_out_labels = 1 requires deepks_scf = 1"); + // } + }; + this->add_item(item); + } + { + Input_Item item("deepks_equiv"); + item.annotation = "whether to use equivariant version of DeePKS"; + item.category = "DeePKS"; + item.type = "Boolean"; + item.description = "whether to use equivariant version of DeePKS" + "\n\n[NOTE] The equivariant version of DeePKS-kit is still under development, " + "so this feature is currently only intended for internal usage."; + item.default_value = "False"; + item.unit = ""; + item.availability = "Numerical atomic orbital basis"; + read_sync_bool(input.deepks_equiv); + item.reset_value = [](const Input_Item& item, Parameter& para) { + if (para.input.deepks_equiv && para.input.deepks_bandgap) + { + ModuleBase::WARNING_QUIT("ReadInput", "equivariant version of DeePKS is not implemented yet"); + } + }; + this->add_item(item); + } + { + Input_Item item("deepks_model"); + item.annotation = "file dir of traced pytorch model: 'model.ptg"; + item.category = "DeePKS"; + item.type = "String"; + item.description = "the path of the trained, traced neural network model file generated by deepks-kit"; + item.default_value = "None"; + item.unit = ""; + item.availability = "Numerical atomic orbital basis and deepks_scf is true"; + read_sync_string(input.deepks_model); + this->add_item(item); + } + { + Input_Item item("bessel_descriptor_lmax"); + item.annotation = "lmax used in generating spherical bessel functions"; + item.category = "DeePKS"; + item.type = "Integer"; + item.description = "the maximum angular momentum of the Bessel functions generated as the projectors in DeePKS - NOte: To generate such projectors, set calculation type to gen_bessel in ABACUS. See also calculation."; + item.default_value = "2"; + item.unit = ""; + item.availability = "gen_bessel calculation"; + read_sync_int(input.bessel_descriptor_lmax); + this->add_item(item); + } + { + Input_Item item("bessel_descriptor_ecut"); + item.annotation = "energy cutoff for spherical bessel functions(Ry)"; + item.category = "DeePKS"; + item.type = "String"; + item.description = "energy cutoff of Bessel functions"; + item.default_value = "same as ecutwfc"; + item.unit = "Ry"; + item.availability = "gen_bessel calculation"; + read_sync_string(input.bessel_descriptor_ecut); + item.reset_value = [](const Input_Item& item, Parameter& para) { + if (para.input.bessel_descriptor_ecut == "default") + { + para.input.bessel_descriptor_ecut = std::to_string(para.input.ecutwfc); + } + }; + item.check_value = [](const Input_Item& item, const Parameter& para) { + if (std::stod(para.input.bessel_descriptor_ecut) < 0) + { + ModuleBase::WARNING_QUIT("ReadInput", "bessel_descriptor_ecut must >= 0"); + } + }; + this->add_item(item); + } + { + Input_Item item("bessel_descriptor_tolerence"); + item.annotation = "tolerence for spherical bessel root"; + item.category = "DeePKS"; + item.type = "Real"; + item.description = "tolerance for searching the zeros of Bessel functions"; + item.default_value = "1.0e-12"; + item.unit = ""; + item.availability = "gen_bessel calculation"; + read_sync_double(input.bessel_descriptor_tolerence); + this->add_item(item); + } + { + Input_Item item("bessel_descriptor_rcut"); + item.annotation = "radial cutoff for spherical bessel functions(a.u.)"; + item.category = "DeePKS"; + item.type = "Real"; + item.description = "cutoff radius of Bessel functions"; + item.default_value = "6.0"; + item.unit = "Bohr"; + item.availability = "gen_bessel calculation"; + read_sync_double(input.bessel_descriptor_rcut); + item.check_value = [](const Input_Item& item, const Parameter& para) { + if (para.input.bessel_descriptor_rcut < 0) + { + ModuleBase::WARNING_QUIT("ReadInput", "bessel_descriptor_rcut must >= 0"); + } + }; + this->add_item(item); + } + { + Input_Item item("bessel_descriptor_smooth"); + item.annotation = "spherical bessel smooth or not"; + item.category = "DeePKS"; + item.type = "Boolean"; + item.description = "smooth the Bessel functions at radius cutoff"; + item.default_value = "False"; + item.unit = ""; + item.availability = "gen_bessel calculation"; + read_sync_bool(input.bessel_descriptor_smooth); + this->add_item(item); + } + { + Input_Item item("bessel_descriptor_sigma"); + item.annotation = "sphereical bessel smearing_sigma"; + item.category = "DeePKS"; + item.type = "Real"; + item.description = "smooth parameter at the cutoff radius of projectors"; + item.default_value = "0.1"; + item.unit = "Bohr"; + item.availability = "gen_bessel calculation"; + read_sync_double(input.bessel_descriptor_sigma); + this->add_item(item); + } + { + Input_Item item("deepks_bandgap"); + item.annotation = ">0 for bandgap label"; + item.category = "DeePKS"; + item.type = "Integer"; + item.description = R"(include bandgap label for DeePKS training +* 0: Don't include bandgap label +* 1: Include target bandgap label (see deepks_band_range for more details) +* 2: Include multiple bandgap label (see deepks_band_range for more details) +* 3: Used for systems containing H atoms. Here HOMO is defined as the max occupation except H atoms and the bandgap label is the energy between HOMO and (HOMO + 1))"; + item.default_value = "0"; + item.unit = ""; + item.availability = "Numerical atomic orbital basis and deepks_scf is true"; + read_sync_int(input.deepks_bandgap); + item.check_value = [](const Input_Item& item, const Parameter& para) { + if (para.input.deepks_bandgap < 0 || para.input.deepks_bandgap > 3) + { + ModuleBase::WARNING_QUIT("ReadInput", "deepks_bandgap must be integer in [0, 3]"); + } + }; + this->add_item(item); + } + { + Input_Item item("deepks_band_range"); + item.annotation = "(int, int) range of bands for bandgap label"; + item.category = "DeePKS"; + item.type = "Integer*2"; + item.description = R"(The first value should not be larger than the second one and the meaning differs in different cases below +* deepks_bandgap is 1: Bandgap label is the energy between LUMO + deepks_band_range[0] and LUMO + deepks_band_range[1]. If not set, it will calculate energy between HOMO and LUMO states. +* deepks_bandgap is 2: Bandgap labels are energies between HOMO and all states in range [LUMO + deepks_band_range[0], LUMO + deepks_band_range[1]] (Thus there are deepks_band_range[1] - deepks_band_range[0] + 1 bandgaps in total). If HOMO is included in the setting range, it will be ignored since it will always be zero and has no valuable messages (deepks_band_range[1] - deepks_band_range[0] bandgaps in this case). NOTICE: The set range can be greater than, less than, or include the value of HOMO. In the bandgap label, we always calculate the energy of the state in the set range minus the energy of HOMO state, so the bandgap can be negative if the state is lower than HOMO.)"; + item.default_value = "-1 0"; + item.unit = ""; + item.availability = "Numerical atomic orbital basis, deepks_scf is true, and deepks_bandgap is 1 or 2"; + item.read_value = [](const Input_Item& item, Parameter& para) { + para.input.deepks_band_range[0] = std::stod(item.str_values[0]); + para.input.deepks_band_range[1] = std::stod(item.str_values[1]); + }; + sync_intvec(input.deepks_band_range, 2, 0); + item.check_value = [](const Input_Item& item, const Parameter& para) { + if (para.input.deepks_bandgap == 1) + { + if (para.input.deepks_band_range[0] >= para.input.deepks_band_range[1]) + { + ModuleBase::WARNING_QUIT("ReadInput", "deepks_band_range[0] must be smaller than deepks_band_range[1] for deepks_bandgap = 1."); + } + } + else if (para.input.deepks_bandgap == 2) + { + if (para.input.deepks_band_range[0] > para.input.deepks_band_range[1]) + { + ModuleBase::WARNING_QUIT("ReadInput", "deepks_band_range[0] must be no more than deepks_band_range[1] for deepks_bandgap = 2."); + } + } + else + { + if (para.input.deepks_band_range[0] != -1 || para.input.deepks_band_range[1] != 0) + { + ModuleBase::WARNING("ReadInput", "deepks_band_range is used for deepks_bandgap = 1/2. Ignore its setting for other cases."); + } + } + }; + this->add_item(item); + } + { + Input_Item item("deepks_v_delta"); + item.annotation = "!=0 for v_delta/v_delta_R label. when output, 1 for vdpre, 2 for phialpha and grad_evdm (can save memory )" + " -1 for vdrpre, -2 for phialpha_r and gevdm (can save memory)"; + item.category = "DeePKS"; + item.type = "Integer"; + item.description = R"(Include V_delta/V_delta_R (Hamiltonian in k/real space) label for DeePKS training. When deepks_out_labels is true and deepks_v_delta > 0 (k space), ABACUS will output deepks_hbase.npy, deepks_vdelta.npy and deepks_htot.npy(htot=hbase+vdelta). When deepks_out_labels is true and deepks_v_delta < 0 (real space), ABACUS will output deepks_hrtot.csr, deepks_hrdelta.csr. Some more files output for different settings. NOTICE: To match the unit Normally used in DeePKS, the unit of Hamiltonian in k space is Hartree. However, currently in R space the unit is still Ry. +* deepks_v_delta = 1: deepks_vdpre.npy, which is used to calculate V_delta during DeePKS training. +* deepks_v_delta = 2: deepks_phialpha.npy and deepks_gevdm.npy, which can be used to calculate deepks_vdpre.npy. A recommanded method for memory saving. +* deepks_v_delta = -1: deepks_vdrpre.npy, which is used to calculate V_delta_R during DeePKS training. +* deepks_v_delta = -2: deepks_phialpha_r.npy and deepks_gevdm.npy, which can be used to calculate deepks_vdrpre.npy. A recommanded method for memory saving.)"; + item.default_value = "0"; + item.unit = ""; + item.availability = "Numerical atomic orbital basis"; + read_sync_int(input.deepks_v_delta); + item.check_value = [](const Input_Item& item, const Parameter& para) { + if (para.input.deepks_v_delta < -2 || para.input.deepks_v_delta > 2) + { + ModuleBase::WARNING_QUIT("ReadInput", "deepks_v_delta must be integer in [-2, 2]"); + } + }; + this->add_item(item); + } + { + Input_Item item("deepks_out_unittest"); + item.annotation = "if set 1, prints intermediate quantities that shall " + "be used for making unit test"; + item.category = "DeePKS"; + item.type = "Boolean"; + item.description = "generate files for constructing DeePKS unit test" + "\n\n[NOTE] Not relevant when running actual calculations. " + "When set to 1, ABACUS needs to be run with only 1 process."; + item.default_value = "False"; + item.unit = ""; + item.availability = ""; + read_sync_bool(input.deepks_out_unittest); + item.reset_value = [](const Input_Item& item, Parameter& para) { + if (para.input.deepks_out_unittest) + { + para.input.deepks_out_labels = 1; + para.input.deepks_scf = true; + } + }; + item.check_value = [](const Input_Item& item, const Parameter& para) { + if (para.input.deepks_out_unittest) + { + if (para.input.cal_force != 1 || para.input.cal_stress != 1) + { + ModuleBase::WARNING_QUIT("ReadInput", + "force and stress are required in generating deepks unittest"); + } + } + }; + this->add_item(item); + } +} +} // namespace ModuleIO diff --git a/source/source_io/module_parameter/read_input_item_elec_stru.cpp b/source/source_io/module_parameter/read_input_item_elec_stru.cpp new file mode 100644 index 0000000000..0fe7ad35aa --- /dev/null +++ b/source/source_io/module_parameter/read_input_item_elec_stru.cpp @@ -0,0 +1,1408 @@ +#include "source_base/global_function.h" +#include "source_base/tool_quit.h" +#include "read_input.h" +#include "read_input_tool.h" + +namespace ModuleIO +{ +void ReadInput::item_elec_stru() +{ + // NOTE: The order of add_item() calls below determines the parameter order + // in the generated documentation (docs/advanced/input_files/input-main.md). + // Please preserve this ordering when adding new parameters. + { + Input_Item item("basis_type"); + item.annotation = "PW; LCAO in pw; LCAO"; + item.category = "Electronic structure"; + item.type = "String"; + item.description = R"(Choose the basis set. +* pw: Using plane-wave basis set only. +* lcao: Using localized atomic orbital sets. +* lcao_in_pw: Expand the localized atomic set in plane-wave basis, non-self-consistent field calculation not tested.)"; + item.default_value = "pw"; + item.unit = ""; + item.availability = ""; + read_sync_string(input.basis_type); + item.reset_value = [](const Input_Item& item, Parameter& para) { + if (para.input.towannier90) + { + if (para.input.basis_type == "lcao_in_pw") + { + para.input.basis_type = "lcao"; + } + } + }; + item.check_value = [](const Input_Item& item, const Parameter& para) { + const std::vector basis_types = {"pw", "lcao_in_pw", "lcao"}; + if (std::find(basis_types.begin(), basis_types.end(), para.input.basis_type) == basis_types.end()) + { + const std::string warningstr = nofound_str(basis_types, "basis_type"); + ModuleBase::WARNING_QUIT("ReadInput", warningstr); + } + }; + this->add_item(item); + } + // Electronic Structure + { + Input_Item item("ks_solver"); + item.annotation = "cg; dav; lapack; genelpa; elpa; scalapack_gvx; cusolver"; + item.category = "Electronic structure"; + item.type = "String"; + item.description = R"(Choose the diagonalization methods for the Hamiltonian matrix expanded in a certain basis set. + +For plane-wave basis, + +* cg: The conjugate-gradient (CG) method. +* bpcg: The BPCG method, which is a block-parallel Conjugate Gradient (CG) method, typically exhibits higher acceleration in a GPU environment. +* dav: The Davidson algorithm. +* dav_subspace: The Davidson algorithm without orthogonalization operation, this method is the most recommended for efficiency. `pw_diag_ndim` can be set to 2 for this method. + +For numerical atomic orbitals basis, + +* lapack: Use LAPACK to diagonalize the Hamiltonian, only used for serial version +* genelpa: Use GEN-ELPA to diagonalize the Hamiltonian. +* scalapack_gvx: Use Scalapack to diagonalize the Hamiltonian. +* cusolver: Use CUSOLVER to diagonalize the Hamiltonian, at least one GPU is needed. +* cusolvermp: Use CUSOLVER to diagonalize the Hamiltonian, supporting multi-GPU devices. Note that you should set the number of MPI processes equal to the number of GPUs. +* elpa: The ELPA solver supports both CPU and GPU. By setting the `device` to GPU, you can launch the ELPA solver with GPU acceleration (provided that you have installed a GPU-supported version of ELPA, which requires you to manually compile and install ELPA, and the ABACUS should be compiled with -DUSE_ELPA=ON and -DUSE_CUDA=ON). The ELPA solver also supports multi-GPU acceleration. + +If you set ks_solver=`genelpa` for basis_type=`pw`, the program will stop with an error message: + +``text genelpa can not be used with plane wave basis. `` + +Then the user has to correct the input file and restart the calculation.)"; + item.default_value = R"( + - PW basis: cg. + - LCAO basis: + - genelpa (if compiling option `USE_ELPA` has been set) + - lapack (if compiling option `ENABLE_MPI` has not been set) + - scalapack_gvx (if compiling option `USE_ELPA` has not been set and compiling option `ENABLE_MPI` has been set) + - cusolver (if compiling option `USE_CUDA` has been set))"; + item.unit = ""; + item.availability = ""; + read_sync_string(input.ks_solver); + item.reset_value = [](const Input_Item& item, Parameter& para) { + if (para.input.ks_solver == "default") + { + if (para.input.basis_type == "pw") + { + para.input.ks_solver = "cg"; + ModuleBase::GlobalFunc::AUTO_SET("ks_solver", "cg"); + } + else if (para.input.basis_type == "lcao") + { + if (para.input.device == "gpu") + { + para.input.ks_solver = "cusolver"; + ModuleBase::GlobalFunc::AUTO_SET("ks_solver", "cusolver"); + } + else + { +#ifdef __ELPA + para.input.ks_solver = "genelpa"; + ModuleBase::GlobalFunc::AUTO_SET("ks_solver", "genelpa"); +#else +#ifdef __MPI + para.input.ks_solver = "scalapack_gvx"; + ModuleBase::GlobalFunc::AUTO_SET("ks_solver", "scalapack_gvx"); +#else + para.input.ks_solver = "lapack"; + ModuleBase::GlobalFunc::AUTO_SET("ks_solver", "lapack"); +#endif +#endif + } + } + } + if (para.input.towannier90) + { + if (para.input.basis_type == "lcao_in_pw") + { +#ifdef __ELPA + para.input.ks_solver = "genelpa"; +#else +#ifdef __MPI + para.input.ks_solver = "scalapack_gvx"; +#else + para.input.ks_solver = "lapack"; +#endif +#endif + } + }; + }; + item.check_value = [](const Input_Item& item, const Parameter& para) { + const std::string& ks_solver = para.input.ks_solver; + const std::vector pw_solvers = {"cg", "dav", "bpcg", "dav_subspace"}; + const std::vector lcao_solvers = { + "genelpa", + "elpa", + "lapack", + "scalapack_gvx", + "cusolver", + "cusolvermp", + "pexsi", + "cg_in_lcao", + }; + + if (para.input.basis_type == "pw") + { + if (std::find(pw_solvers.begin(), pw_solvers.end(), ks_solver) == pw_solvers.end()) + { + const std::string warningstr = "For PW basis: " + nofound_str(pw_solvers, "ks_solver"); + ModuleBase::WARNING_QUIT("ReadInput", warningstr); + } + } + else if (para.input.basis_type == "lcao") + { + if (std::find(lcao_solvers.begin(), lcao_solvers.end(), ks_solver) == lcao_solvers.end()) + { + const std::string warningstr = "For LCAO basis: " + nofound_str(lcao_solvers, "ks_solver"); + ModuleBase::WARNING_QUIT("ReadInput", warningstr); + } + if (ks_solver == "cg_in_lcao") + { + GlobalV::ofs_warning << "cg_in_lcao is under testing" << std::endl; + } + else if (ks_solver == "genelpa") + { +#ifndef __ELPA + ModuleBase::WARNING_QUIT("Input", + "Can not use genelpa if abacus is not compiled with " + "ELPA. Please change " + "ks_solver to scalapack_gvx."); +#endif + } + else if (ks_solver == "elpa") + { +#ifndef __ELPA + ModuleBase::WARNING_QUIT("Input", + "Can not use elpa if abacus is not compiled with " + "ELPA. Please change " + "ks_solver to scalapack_gvx."); +#endif + } + + else if (ks_solver == "scalapack_gvx") + { +#ifdef __MPI + GlobalV::ofs_warning << "scalapack_gvx is under testing" << std::endl; +#else + ModuleBase::WARNING_QUIT("ReadInput", "scalapack_gvx can not be used for series version."); +#endif + } + else if (ks_solver == "cusolver" || ks_solver == "cusolvermp") + { + std::string warningstr; +#ifndef __MPI + ModuleBase::WARNING_QUIT("ReadInput", "Cusolver can not be used for series version."); +#endif +#ifndef __CUDA + warningstr = "ks_solver is set to " + ks_solver + " but ABACUS is built with CPU only!\n" + + " Please rebuild ABACUS with GPU support or change the ks_solver."; + ModuleBase::WARNING_QUIT("ReadInput", warningstr); +#endif + if( ks_solver == "cusolvermp") + { +#ifndef __CUSOLVERMP + warningstr = "ks_solver is set to cusolvermp, but ABACUS is not built with cusolvermp support\n" + " Please rebuild ABACUS with cusolvermp support or change the ks_solver."; + ModuleBase::WARNING_QUIT("ReadInput", warningstr); +#endif + } + } + else if (ks_solver == "pexsi") + { +#ifdef __PEXSI + GlobalV::ofs_warning << " It's ok to use pexsi." << std::endl; +#else + ModuleBase::WARNING_QUIT("ReadInput", + "Can not use PEXSI if abacus is not compiled with " + "PEXSI. Please change " + "ks_solver to scalapack_gvx."); +#endif + } + } + else if (para.input.basis_type == "lcao_in_pw") + { + if (ks_solver != "lapack") + { + ModuleBase::WARNING_QUIT("ReadInput", "LCAO in plane wave can only done with lapack."); + } + } + }; + this->add_item(item); + } + { + Input_Item item("nbands"); + item.annotation = "number of bands"; + item.category = "Electronic structure"; + item.type = "Integer"; + item.description = "The number of Kohn-Sham orbitals to calculate. It is recommended to setup this value, especially when smearing techniques are utilized, more bands should be included."; + item.default_value = ""; + item.unit = ""; + item.availability = ""; + read_sync_int(input.nbands); + item.check_value = [](const Input_Item& item, const Parameter& para) { + if (para.input.nbands < 0) + { + ModuleBase::WARNING_QUIT("ReadInput", "nbands should be greater than 0."); + } + }; + this->add_item(item); + } + { + Input_Item item("nelec"); + item.annotation = "input number of electrons"; + item.category = "Electronic structure"; + item.type = "Real"; + item.description = R"(* 0.0: The total number of electrons will be calculated by the sum of valence electrons (i.e. assuming neutral system). +* >0.0: this denotes the total number of electrons in the system. Must be less than 2*nbands.)"; + item.default_value = "0.0"; + item.unit = ""; + item.availability = ""; + item.check_value = [](const Input_Item& item, const Parameter& para) { + if (para.input.nelec < 0) + { + ModuleBase::WARNING_QUIT("ReadInput", "nelec should be greater than 0."); + } + if (para.input.nelec > 0 && para.input.nbands > 0 && para.input.nelec > 2 * para.input.nbands) + { + ModuleBase::WARNING_QUIT("ReadInput", "nelec > 2*nbnd , bands not enough!"); + } + }; + read_sync_double(input.nelec); + this->add_item(item); + } + { + Input_Item item("nelec_delta"); + item.annotation = "change in the number of total electrons"; + item.category = "Electronic structure"; + item.type = "Real"; + item.description = "The total number of electrons will be calculated by nelec+nelec_delta."; + item.default_value = "0.0"; + item.unit = ""; + item.availability = ""; + read_sync_double(input.nelec_delta); + this->add_item(item); + } + { + Input_Item item("nupdown"); + item.annotation = "the difference number of electrons between spin-up " + "and spin-down"; + item.category = "Electronic structure"; + item.type = "Real"; + item.description = R"(* 0.0: no constrain apply to system. +* >0.0: The different number of electrons between spin-up and spin-down channels. The range of value must be in [-nelec ~ nelec]. It is one type of constrainted DFT method, two Fermi energies will be calculated.)"; + item.default_value = "0.0"; + item.unit = ""; + item.availability = ""; + item.read_value = [](const Input_Item& item, Parameter& para) { + para.input.nupdown = doublevalue; + para.sys.two_fermi = true; + }; + item.reset_value = [](const Input_Item&, Parameter& para) { + if (para.input.nspin == 1) + { + para.sys.two_fermi = false; + } + }; + item.check_value = [](const Input_Item&, const Parameter& para) { + if (para.input.nspin == 1 && para.input.nupdown != 0.0) + { + ModuleBase::WARNING_QUIT("ReadInput", "nupdown mustn't have a non-zero value for spin-unpolarized calculations."); + } + }; + sync_double(input.nupdown); + add_bool_bcast(sys.two_fermi); + this->add_item(item); + } + { + Input_Item item("dft_functional"); + item.annotation = "exchange correlation functional"; + item.category = "Electronic structure"; + item.type = "String"; + item.description = R"(In our package, the XC functional can either be set explicitly using the dft_functional keyword in INPUT file. If dft_functional is not specified, ABACUS will use the xc functional indicated in the pseudopotential file. On the other hand, if dft_functional is specified, it will overwrite the functional from pseudopotentials and performs calculation with whichever functional the user prefers. We further offer two ways of supplying exchange-correlation functional. The first is using 'short-hand' names. A complete list of 'short-hand' expressions can be found in the source code. Supported density functionals are: +* LDA functionals + * LDA (equivalent with PZ and SLAPZNOGXNOGC), PWLDA +* GGA functionals + * PBE (equivalent with SLAPWPBXPBC), PBESOL, REVPBE, WC, BLYP, BP(referred to BP86), PW91, HCTH, OLYP, BLYP_LR +* meta-GGA functionals + * SCAN (require LIBXC) +* Hybrid functionals + * PBE0, HF + * If LIBXC is available, additional short-hand names of hybrid functionals are supported: HSE(referred to HSE06), B3LYP, LC_PBE, LC_WPBE, LRC_WPBE, LRC_WPBEH, CAM_PBEH, WP22, CWP22, MULLER (equivalent with POWER) +* Hybrid meta-GGA functionals + * SCAN0 (require LIBXC) + +The other way is only available when compiling with LIBXC, and it allows for supplying exchange-correlation functionals as combinations of LIBXC keywords for functional components, joined by a plus sign, for example, dft_functional='LDA_X_1D_EXPONENTIAL+LDA_C_1D_CSC'.)"; + item.default_value = "Used the same as DFT functional as specified in the pseudopotential files."; + item.unit = ""; + item.availability = ""; + read_sync_string(input.dft_functional); + this->add_item(item); + } + { + Input_Item item("xc_temperature"); + item.annotation = "temperature for finite temperature functionals"; + item.category = "Electronic structure"; + item.type = "Real"; + item.description = "Specifies temperature when using temperature-dependent XC functionals (KSDT and so on)."; + item.default_value = "0.0"; + item.unit = "Ry"; + item.availability = ""; + read_sync_double(input.xc_temperature); + this->add_item(item); + } + { + Input_Item item("xc_exch_ext"); + item.annotation = "placeholder for xcpnet exchange functional"; + item.category = "Electronic structure"; + item.type = "Integer followed by Real values"; + item.description = "Customized parameterization on the exchange part of XC functional. The first value should be the LibXC ID of the original functional, and latter values are external parameters. Default values are those of Perdew-Burke-Ernzerhof (PBE) functional. For more information on LibXC ID of functionals, please refer to LibXC. For parameters of functionals of interest, please refer to the source code of LibXC, such as PBE functional interface in LibXC: gga_x_pbe.c." + "\n\n[NOTE] Solely setting this keyword will take no effect on XC functionals. One should also set " + "dft_functional to the corresponding functional to apply the customized parameterization. " + "Presently this feature can only support parameterization on one exchange functional."; + item.default_value = "101 0.8040 0.2195149727645171"; + item.unit = ""; + item.availability = ""; + item.read_value = [](const Input_Item& item, Parameter& para) { + para.input.xc_exch_ext.resize(item.get_size()); + std::transform(item.str_values.begin(), item.str_values.end(), + para.input.xc_exch_ext.begin(), + [](const std::string& str) { return std::stod(str); }); + }; + item.check_value = [](const Input_Item& item, const Parameter& para) { + // at least one value should be set + if (para.input.xc_exch_ext.empty()) + { + ModuleBase::WARNING_QUIT("ReadInput", "xc_exch_ext should not be empty."); + } + // the first value is actually an integer, not a double + const double libxc_id_dbl = para.input.xc_exch_ext[0]; + if (std::abs(libxc_id_dbl - std::round(libxc_id_dbl)) > 1.0e-6) + { + ModuleBase::WARNING_QUIT("ReadInput", + "The first parameter (libxc id) can never be a float number"); + } + // the first value is a positive integer + if (libxc_id_dbl < 0) + { + ModuleBase::WARNING_QUIT("ReadInput", + "The first parameter (libxc id) should be a positive integer"); + } + }; + sync_doublevec(input.xc_exch_ext, + para.input.xc_exch_ext.size(), + 0.0); + this->add_item(item); + } + { + Input_Item item("xc_corr_ext"); + item.annotation = "placeholder for xcpnet exchange functional"; + item.category = "Electronic structure"; + item.type = "Integer followed by Real values"; + item.description = "Customized parameterization on the correlation part of XC functional. The first value should be the LibXC ID of the original functional, and latter values are external parameters. Default values are those of Perdew-Burke-Ernzerhof (PBE) functional. For more information on LibXC ID of functionals, please refer to LibXC. For parameters of functionals of interest, please refer to the source code of LibXC, such as PBE functional interface in LibXC: gga_c_pbe.c." + "\n\n[NOTE] Solely setting this keyword will take no effect on XC functionals. One should also set " + "dft_functional to the corresponding functional to apply the customized parameterization. " + "Presently this feature can only support parameterization on one correlation functional."; + item.default_value = "130 0.06672455060314922 0.031090690869654895034 1.0"; + item.unit = ""; + item.availability = ""; + item.read_value = [](const Input_Item& item, Parameter& para) { + para.input.xc_corr_ext.resize(item.get_size()); + std::transform(item.str_values.begin(), item.str_values.end(), + para.input.xc_corr_ext.begin(), + [](const std::string& str) { return std::stod(str); }); + }; + item.check_value = [](const Input_Item& item, const Parameter& para) { + // at least one value should be set + if (para.input.xc_corr_ext.empty()) + { + ModuleBase::WARNING_QUIT("ReadInput", "xc_corr_ext should not be empty."); + } + // the first value is actually an integer, not a double + const double libxc_id_dbl = para.input.xc_corr_ext[0]; + if (std::abs(libxc_id_dbl - std::round(libxc_id_dbl)) > 1.0e-6) + { + ModuleBase::WARNING_QUIT("ReadInput", + "The first parameter (libxc id) can never be a float number"); + } + // the first value is a positive integer + if (libxc_id_dbl < 0) + { + ModuleBase::WARNING_QUIT("ReadInput", + "The first parameter (libxc id) should be a positive integer"); + } + }; + sync_doublevec(input.xc_corr_ext, + para.input.xc_corr_ext.size(), + 0.0); + this->add_item(item); + } + { + Input_Item item("pseudo_rcut"); + item.annotation = "default #exchange correlation functional"; + item.category = "Electronic structure"; + item.type = "Real"; + item.description = "Cut-off of radial integration for pseudopotentials."; + item.default_value = "15"; + item.unit = "Bohr"; + item.availability = ""; + read_sync_double(input.pseudo_rcut); + this->add_item(item); + } + { + Input_Item item("pseudo_mesh"); + item.annotation = "0: use our own mesh to do radial renormalization; " + "1: use mesh as in QE"; + item.category = "Electronic structure"; + item.type = "Boolean"; + item.description = R"(* 0: Use a mesh for radial integration of pseudopotentials. +* 1: Use the mesh that is consistent with quantum espresso)"; + item.default_value = "0"; + item.unit = ""; + item.availability = ""; + read_sync_bool(input.pseudo_mesh); + this->add_item(item); + } + { + Input_Item item("nspin"); + item.annotation = "1: single spin; 2: up and down spin; 4: noncollinear spin"; + item.category = "Electronic structure"; + item.type = "Integer"; + item.description = R"(The number of spin components of wave functions. +* 1: Spin degeneracy +* 2: Collinear spin polarized. +* 4: For the case of noncollinear polarized, nspin will be automatically set to 4 without being specified by the user.)"; + item.default_value = "1"; + item.unit = ""; + item.availability = ""; + read_sync_int(input.nspin); + item.reset_value = [](const Input_Item& item, Parameter& para) { + if (para.input.noncolin || para.input.lspinorb) + { + para.input.nspin = 4; + } + }; + item.check_value = [](const Input_Item& item, const Parameter& para) { + if (para.input.nspin != 1 && para.input.nspin != 2 && para.input.nspin != 4) + { + ModuleBase::WARNING_QUIT("ReadInput", "nspin should be 1, 2 or 4."); + } + }; + this->add_item(item); + } + { + Input_Item item("smearing_method"); + item.annotation = "type of smearing_method: gauss; fd; fixed; mp; mp2; mv"; + item.category = "Electronic structure"; + item.type = "String"; + item.description = R"(It indicates which occupation and smearing method is used in the calculation. +* fixed: fixed occupations (available for non-coductors only) +* gauss or gaussian: Gaussian smearing method. +* mp: methfessel-paxton smearing method; recommended for metals. +* mp2: 2-nd methfessel-paxton smearing method; recommended for metals. +* mv or cold: marzari-vanderbilt smearing method. +* fd: Fermi-Dirac smearing method: and smearing_sigma below is the temperature (in Ry).)"; + item.default_value = "gauss"; + item.unit = ""; + item.availability = ""; + read_sync_string(input.smearing_method); + item.check_value = [](const Input_Item& item, const Parameter& para) { + const std::vector methods = {"gauss", "gaussian", + "fd", "fermi-dirac", + "fixed", + "mp", "mp2", "mp3" + "marzari-vanderbilt", "cold", "mv"}; + if (std::find(methods.begin(), methods.end(), para.input.smearing_method) == methods.end()) + { + const std::string warningstr = nofound_str(methods, "smearing_method"); + ModuleBase::WARNING_QUIT("ReadInput", warningstr); + } + }; + this->add_item(item); + } + { + Input_Item item("smearing_sigma"); + item.annotation = "energy range for smearing"; + item.category = "Electronic structure"; + item.type = "Real"; + item.description = "Energy range for smearing."; + item.default_value = "0.015"; + item.unit = "Ry"; + item.availability = ""; + read_sync_double(input.smearing_sigma); + this->add_item(item); + } + { + // Energy range for smearing, + //`smearing_sigma` = 1/2 *kB* `smearing_sigma_temp`. + // NOTE: Use 'item' as the variable name for automatic documentation generation. + Input_Item item("smearing_sigma_temp"); + item.category = "Electronic structure"; + item.type = "Real"; + item.description = "Energy range for smearing, smearing_sigma = 1/2 kB smearing_sigma_temp."; + item.default_value = "2 * smearing_sigma / kB."; + item.unit = "K"; + item.availability = ""; + item.read_value + = [](const Input_Item& item, Parameter& para) { para.input.smearing_sigma = 3.166815e-6 * doublevalue; }; + // only to set smearing_sigma, so no need to write to output INPUT file + // or bcast. + this->add_item(item); + } + { + Input_Item item("mixing_type"); + item.annotation = "plain; pulay; broyden"; + item.category = "Electronic structure"; + item.type = "String"; + item.description = R"(Charge mixing methods. +* plain: Just simple mixing. +* pulay: Standard Pulay method. P. Pulay Chemical Physics Letters, (1980) +* broyden: Simplified modified Broyden method. D.D. Johnson Physical Review B (1988) + +In general, the convergence of the Broyden method is slightly faster than that of the Pulay method.)"; + item.default_value = "broyden"; + item.unit = ""; + item.availability = ""; + read_sync_string(input.mixing_mode); + this->add_item(item); + } + { + Input_Item item("mixing_beta"); + item.annotation = "mixing parameter: 0 means no new charge"; + item.category = "Electronic structure"; + item.type = "Real"; + item.description = R"(In general, the formula of charge mixing can be written as rho_new = rho_old + mixing_beta * drho, where rho_new represents the new charge density after charge mixing, rho_old represents the charge density in previous step, drho is obtained through various mixing methods, and mixing_beta is set by this parameter. A lower value of 'mixing_beta' results in less influence of drho on rho_new, making the self-consistent field (SCF) calculation more stable. However, it may require more steps to achieve convergence. We recommend the following options: +* 0.8: nspin=1 +* 0.4: nspin=2 and nspin=4 +* 0: keep charge density unchanged, usually used for restarting with init_chg=file or testing. +* 0.1 or less: if convergence of SCF calculation is difficult to reach, please try 0 < mixing_beta < 0.1. + +Note: For low-dimensional large systems, the setup of mixing_beta=0.1, mixing_ndim=20, and mixing_gg0=1.0 usually works well.)"; + item.default_value = "0.8 for nspin=1, 0.4 for nspin=2 and nspin=4."; + item.unit = ""; + item.availability = ""; + read_sync_double(input.mixing_beta); + item.reset_value = [](const Input_Item& item, Parameter& para) { + if (para.input.mixing_beta < 0.0) + { + if (para.input.nspin == 1) + { + para.input.mixing_beta = 0.8; + } + else if (para.input.nspin == 2) + { + para.input.mixing_beta = 0.4; + para.input.mixing_beta_mag = 1.6; + para.input.mixing_gg0_mag = 0.0; + } + else if (para.input.nspin == 4) // I will add this + { + para.input.mixing_beta = 0.4; + para.input.mixing_beta_mag = 1.6; + para.input.mixing_gg0_mag = 0.0; + } + } + }; + this->add_item(item); + } + { + Input_Item item("mixing_beta_mag"); + item.annotation = "mixing parameter for magnetic density"; + item.category = "Electronic structure"; + item.type = "Real"; + item.description = "Mixing parameter of magnetic density."; + item.default_value = "4*mixing_beta, but the maximum value is 1.6."; + item.unit = ""; + item.availability = ""; + read_sync_double(input.mixing_beta_mag); + item.reset_value = [](const Input_Item& item, Parameter& para) { + if (para.input.mixing_beta_mag < 0.0) + { + if (para.input.nspin == 2 || para.input.nspin == 4) + { + if (para.input.mixing_beta <= 0.4) + { + para.input.mixing_beta_mag = 4 * para.input.mixing_beta; + } + else + { + para.input.mixing_beta_mag = 1.6; // 1.6 can be discussed + } + } + } + }; + this->add_item(item); + } + { + Input_Item item("mixing_ndim"); + item.annotation = "mixing dimension in pulay or broyden"; + item.category = "Electronic structure"; + item.type = "Integer"; + item.description = R"(It indicates the mixing dimensions in Pulay or Broyden. Pulay and Broyden method use the density from previous mixing_ndim steps and do a charge mixing based on this density. + +For systems that are difficult to converge, one could try increasing the value of 'mixing_ndim' to enhance the stability of the self-consistent field (SCF) calculation.)"; + item.default_value = "8"; + item.unit = ""; + item.availability = ""; + read_sync_int(input.mixing_ndim); + this->add_item(item); + } + { + Input_Item item("mixing_restart"); + item.annotation = "threshold to restart mixing during SCF"; + item.category = "Electronic structure"; + item.type = "Real"; + item.description = "If the density difference between input and output drho is smaller than mixing_restart, SCF will restart at next step which means SCF will restart by using output charge density from perivos iteration as input charge density directly, and start a new mixing. Notice that mixing_restart will only take effect once in one SCF."; + item.default_value = "0"; + item.unit = ""; + item.availability = ""; + read_sync_double(input.mixing_restart); + item.reset_value = [](const Input_Item& item, Parameter& para) { + if (para.input.sc_mag_switch == 1) + {// for DeltaSpin calculation, the mixing_restart should be same as sc_scf_thr + if(para.input.sc_scf_thr != 10.0) + { + para.input.mixing_restart = para.input.sc_scf_thr; + } + else + {// no mixing_restart until oscillation happen in PW base + para.input.mixing_restart = para.input.scf_thr / 10.0; + } + } + }; + this->add_item(item); + } + { + Input_Item item("mixing_dmr"); + item.annotation = "whether to mix real-space density matrix"; + item.category = "Electronic structure"; + item.type = "Boolean"; + item.description = "At n-th iteration which is calculated by drhoadd_item(item); + } + { + Input_Item item("mixing_gg0"); + item.annotation = "mixing parameter in kerker"; + item.category = "Electronic structure"; + item.type = "Real"; + item.description = R"(Whether to perfom Kerker scaling for charge density. +* >0: The high frequency wave vectors will be suppressed by multiplying a scaling factor. Setting mixing_gg0 = 1.0 is normally a good starting point. Kerker preconditioner will be automatically turned off if mixing_beta <= 0.1. +* 0: No Kerker scaling is performed. + +For systems that are difficult to converge, particularly metallic systems, enabling Kerker scaling may aid in achieving convergence.)"; + item.default_value = "1.0"; + item.unit = ""; + item.availability = ""; + read_sync_double(input.mixing_gg0); + this->add_item(item); + } + { + Input_Item item("mixing_gg0_mag"); + item.annotation = "mixing parameter in kerker"; + item.category = "Electronic structure"; + item.type = "Real"; + item.description = "Whether to perfom Kerker preconditioner of magnetic density. Note: we do not recommand to open Kerker preconditioner of magnetic density unless the system is too hard to converge."; + item.default_value = "0.0"; + item.unit = ""; + item.availability = ""; + read_sync_double(input.mixing_gg0_mag); + this->add_item(item); + } + { + Input_Item item("mixing_gg0_min"); + item.annotation = "the minimum kerker coefficient"; + item.category = "Electronic structure"; + item.type = "Real"; + item.description = "The minimum kerker coefficient."; + item.default_value = "0.1"; + item.unit = ""; + item.availability = ""; + read_sync_double(input.mixing_gg0_min); + this->add_item(item); + } + { + Input_Item item("mixing_angle"); + item.annotation = "angle mixing parameter for non-colinear calculations"; + item.category = "Electronic structure"; + item.type = "Real"; + item.description = R"(Normal broyden mixing can give the converged result for a given magnetic configuration. If one is not interested in the energies of a given magnetic configuration but wants to determine the ground state by relaxing the magnetic moments' directions, one cannot rely on the standard Broyden mixing algorithm. To enhance the ability to find correct magnetic configuration for non-colinear calculations, ABACUS implements a promising mixing method proposed by J. Phys. Soc. Jpn. 82 (2013) 114706. Here, mixing_angle is the angle mixing parameter. In fact, only mixing_angle=1.0 is implemented currently. +* <=0: Normal broyden mixing +* >0: Angle mixing for the modulus with mixing_angle=1.0)"; + item.default_value = "-10.0"; + item.unit = ""; + item.availability = "Only relevant for non-colinear calculations nspin=4."; + read_sync_double(input.mixing_angle); + this->add_item(item); + } + { + Input_Item item("mixing_tau"); + item.annotation = "whether to mix tau in mGGA calculation"; + item.category = "Electronic structure"; + item.type = "Boolean"; + item.description = R"(Whether to mix the kinetic energy density. +* True: The kinetic energy density will also be mixed. It seems for general cases, SCF converges fine even without this mixing. However, if there is difficulty in converging SCF for meta-GGA, it might be helpful to turn this on. +* False: The kinetic energy density will not be mixed.)"; + item.default_value = "False"; + item.unit = ""; + item.availability = "Only relevant for meta-GGA calculations."; + read_sync_bool(input.mixing_tau); + this->add_item(item); + } + { + Input_Item item("mixing_dftu"); + item.annotation = "whether to mix locale in DFT+U calculation"; + item.category = "Electronic structure"; + item.type = "Boolean"; + item.description = R"(Whether to mix the occupation matrices. +* True: The occupation matrices will also be mixed by plain mixing. From experience this is not very helpful if the +U calculation does not converge. +* False: The occupation matrices will not be mixed.)"; + item.default_value = "False"; + item.unit = ""; + item.availability = "Only relevant for DFT+U calculations."; + read_sync_bool(input.mixing_dftu); + this->add_item(item); + } + { + Input_Item item("gamma_only"); + item.annotation = "Only for localized orbitals set and gamma point. If " + "set to 1, a fast algorithm is used"; + item.category = "Electronic structure"; + item.type = "Boolean"; + item.description = R"(Whether to use gamma_only algorithm. +* 0: more than one k-point is used and the ABACUS is slower compared to the gamma only algorithm. +* 1: ABACUS uses gamma only, the algorithm is faster and you don't need to specify the k-points file. + +Note: If gamma_only is set to 1, the KPT file will be overwritten. So make sure to turn off gamma_only for multi-k calculations.)"; + item.default_value = "0"; + item.unit = ""; + item.availability = "Only used in localized orbitals set"; + read_sync_bool(input.gamma_only); + item.reset_value = [](const Input_Item& item, Parameter& para) { + if (para.input.basis_type == "pw" && para.input.gamma_only) + { + para.input.gamma_only = false; + GlobalV::ofs_warning << " WARNING : gamma_only has not been implemented for pw yet" << std::endl; + GlobalV::ofs_warning << "gamma_only is not supported in the pw model" << std::endl; + GlobalV::ofs_warning << " the INPUT parameter gamma_only has been reset to 0" << std::endl; + GlobalV::ofs_warning << " and a new KPT is generated with gamma point as the only k point"<< std::endl; + GlobalV::ofs_warning << " Auto generating k-points file: " << para.input.kpoint_file << std::endl; + std::ofstream ofs(para.input.kpoint_file.c_str()); + ofs << "K_POINTS" << std::endl; + ofs << "0" << std::endl; + ofs << "Gamma" << std::endl; + ofs << "1 1 1 0 0 0" << std::endl; + ofs.close(); + } + if (para.input.basis_type == "lcao" && para.input.gamma_only) + { + if (para.input.nspin == 4) + { + ModuleBase::WARNING_QUIT("NOTICE", "nspin=4 (soc or noncollinear-spin) does not support gamma\n only calculation"); + } + } + }; + this->add_item(item); + } + { + Input_Item item("scf_nmax"); + item.annotation = "number of electron iterations"; + item.category = "Electronic structure"; + item.type = "Integer"; + item.description = "This variable indicates the maximal iteration number for electronic iterations."; + item.default_value = "100"; + item.unit = ""; + item.availability = ""; + read_sync_int(input.scf_nmax); + item.reset_value = [](const Input_Item& item, Parameter& para) { + if (para.input.calculation == "nscf") + { + para.input.scf_nmax = 1; + } + }; + this->add_item(item); + } + { + Input_Item item("scf_thr"); + item.annotation = "charge density error"; + item.category = "Electronic structure"; + item.type = "Real"; + item.description = "It's the density threshold for electronic iteration. It represents the charge density error between two sequential densities from electronic iterations. Usually for local orbitals, usually 1e-6 may be accurate enough."; + item.default_value = "1.0e-9 (plane-wave basis), or 1.0e-7 (localized atomic orbital basis)."; + item.unit = "Ry if scf_thr_type=1, dimensionless if scf_thr_type=2"; + item.availability = ""; + read_sync_double(input.scf_thr); + item.reset_value = [](const Input_Item& item, Parameter& para) { + if (para.input.scf_thr == -1.0) + { + if (para.input.basis_type == "lcao" || para.input.basis_type == "lcao_in_pw") + { + para.input.scf_thr = 1.0e-7; + } + else if (para.input.basis_type == "pw" && para.input.calculation != "nscf") + { + para.input.scf_thr = 1.0e-9; + } + else if (para.input.basis_type == "pw" && para.input.calculation == "nscf") + { + para.input.scf_thr = 1.0e-6; + // In NSCF calculation, the diagonalization threshold is set + // to 0.1*scf/nelec. In other words, the scf_thr is used to + // control diagonalization convergence threthod in NSCF. In + // this case, the default 1.0e-9 is too strict. renxi + // 20230908 + } + } + }; + this->add_item(item); + } + { + Input_Item item("scf_ene_thr"); + item.annotation = "total energy error threshold"; + item.category = "Electronic structure"; + item.type = "Real"; + item.description = "It's the energy threshold for electronic iteration. It represents the total energy error between two sequential densities from electronic iterations."; + item.default_value = "-1.0. If the user does not set this parameter, it will not take effect."; + item.unit = "eV"; + item.availability = ""; + read_sync_double(input.scf_ene_thr); + this->add_item(item); + } + { + Input_Item item("scf_thr_type"); + item.annotation = "type of the criterion of scf_thr, 1: reci drho for " + "pw, 2: real drho for lcao"; + item.category = "Electronic structure"; + item.type = "Integer"; + item.description = R"(Choose the calculation method of convergence criterion. +* 1: the criterion is defined in reciprocal space, which is used in SCF of PW basis with unit Ry. +* 2: the criterion is defined in real space, where is the number of electron, which is used in SCF of LCAO with unit dimensionless.)"; + item.default_value = "1 (plane-wave basis), or 2 (localized atomic orbital basis)."; + item.unit = ""; + item.availability = ""; + read_sync_int(input.scf_thr_type); + item.reset_value = [](const Input_Item& item, Parameter& para) { + if (para.input.scf_thr_type == -1) + { + if (para.input.basis_type == "lcao" || para.input.basis_type == "lcao_in_pw") + { + para.input.scf_thr_type = 2; + } + else if (para.input.basis_type == "pw") + { + para.input.scf_thr_type = 1; + } + } + }; + this->add_item(item); + } + { + Input_Item item("scf_os_stop"); + item.annotation = "whether to stop scf when oscillation is detected"; + item.category = "Electronic structure"; + item.type = "Boolean"; + item.description = R"(For systems that are difficult to converge, the SCF process may exhibit oscillations in charge density, preventing further progress toward the specified convergence criteria and resulting in continuous oscillation until the maximum number of steps is reached; this greatly wastes computational resources. To address this issue, this function allows ABACUS to terminate the SCF process early upon detecting oscillations, thus reducing subsequent meaningless calculations. The detection of oscillations is based on the slope of the logarithm of historical drho values. To this end, Least Squares Method is used to calculate the slope of the logarithmically taken drho for the previous scf_os_ndim iterations. If the calculated slope is larger than scf_os_thr, stop the SCF. + +* 0: The SCF will continue to run regardless of whether there is oscillation or not. +* 1: If the calculated slope is larger than scf_os_thr, stop the SCF.)"; + item.default_value = "false"; + item.unit = ""; + item.availability = ""; + read_sync_bool(input.scf_os_stop); + this->add_item(item); + } + { + Input_Item item("scf_os_thr"); + item.annotation = "charge density threshold for oscillation"; + item.category = "Electronic structure"; + item.type = "Real"; + item.description = "The slope threshold to determine if the SCF is stuck in a charge density oscillation. If the calculated slope is larger than scf_os_thr, stop the SCF."; + item.default_value = "-0.01"; + item.unit = ""; + item.availability = ""; + read_sync_double(input.scf_os_thr); + item.check_value = [](const Input_Item& item, const Parameter& para) { + if (para.input.scf_os_thr >= 0) + { + ModuleBase::WARNING_QUIT("ReadInput", "scf_os_thr should be negative"); + } + }; + this->add_item(item); + } + { + Input_Item item("scf_os_ndim"); + item.annotation = "number of old iterations used for oscillation detection"; + item.category = "Electronic structure"; + item.type = "Integer"; + item.description = "To determine the number of old iterations' drho used in slope calculations."; + item.default_value = "mixing_ndim"; + item.unit = ""; + item.availability = ""; + read_sync_int(input.scf_os_ndim); + item.reset_value = [](const Input_Item& item, Parameter& para) { + if (para.input.scf_os_ndim <= 0) // default value + { + para.input.scf_os_ndim = para.input.mixing_ndim; + } + }; + this->add_item(item); + } + { + Input_Item item("sc_os_ndim"); + item.annotation = "number of old iterations used for oscillation detection, for Spin-Constrained DFT"; + item.category = "Electronic structure"; + item.type = "Integer"; + item.description = "To determine the number of old iterations to judge oscillation, it occured, more accurate lambda with DeltaSpin method would be calculated, only for PW base."; + item.default_value = "5"; + item.unit = ""; + item.availability = ""; + read_sync_int(input.sc_os_ndim); + this->add_item(item); + } + { + Input_Item item("lspinorb"); + item.annotation = "consider the spin-orbit interaction"; + item.category = "Electronic structure"; + item.type = "Boolean"; + item.description = R"(Whether to consider spin-orbit coupling (SOC) effect in the calculation. +* True: Consider spin-orbit coupling effect. When enabled: + * nspin is automatically set to 4 (noncollinear spin representation) + * Symmetry is automatically disabled (SOC breaks inversion symmetry) + * Requires full-relativistic pseudopotentials with has_so=true in the UPF header +* False: Do not consider spin-orbit coupling effect. +* Common Error: "no soc upf used for lspinorb calculation" - ensure you are using full-relativistic pseudopotentials)"; + item.default_value = "False"; + item.unit = ""; + item.availability = ""; + read_sync_bool(input.lspinorb); + this->add_item(item); + } + { + Input_Item item("noncolin"); + item.annotation = "using non-collinear-spin"; + item.category = "Electronic structure"; + item.type = "Boolean"; + item.description = R"(Whether to allow non-collinear magnetic moments, where magnetization can point in arbitrary directions (x, y, z components) rather than being constrained to the z-axis. +* True: Allow non-collinear polarization. When enabled: + * nspin is automatically set to 4 + * Wave function dimension is doubled (npol=2), and the number of occupied states is doubled + * Charge density has 4 components (Pauli spin matrices) + * Cannot be used with gamma_only=true + * Can be combined with lspinorb=true for SOC effects with non-collinear magnetism +* False: Do not allow non-collinear polarization (magnetization constrained to z-axis). +* Relationship with lspinorb: + * noncolin=0, lspinorb=1: SOC with z-axis magnetism only (for non-magnetic materials with SOC) + * noncolin=1, lspinorb=0: Non-collinear magnetism without SOC + * noncolin=1, lspinorb=1: Both non-collinear magnetism and SOC)"; + item.default_value = "False"; + item.unit = ""; + item.availability = ""; + read_sync_bool(input.noncolin); + this->add_item(item); + } + { + Input_Item item("soc_lambda"); + item.annotation = "The fraction of SOC based on scalar relativity (SR) of the pseudopotential"; + item.category = "Electronic structure"; + item.type = "Real"; + item.description = R"(Modulates the strength of spin-orbit coupling effect. Sometimes, for some real materials, both scalar-relativistic and full-relativistic pseudopotentials cannot describe the exact spin-orbit coupling. Artificial modulation may help in such cases. + +soc_lambda, which has value range [0.0, 1.0], is used to modulate SOC effect: +* soc_lambda 0.0: Scalar-relativistic case (no SOC) +* soc_lambda 1.0: Full-relativistic case (full SOC) +* Intermediate values: Partial-relativistic SOC (interpolation between scalar and full) + +Use case: When experimental or high-level theoretical results suggest that the SOC effect is weaker or stronger than what full-relativistic pseudopotentials predict, you can adjust this parameter to match the target behavior.)"; + item.default_value = "1.0"; + item.unit = ""; + item.availability = "Only works when lspinorb=true"; + read_sync_double(input.soc_lambda); + this->add_item(item); + } + { + Input_Item item("dfthalf_type"); + item.annotation = "DFT-1/2 type, 0:off; 1:shell DFT-1/2"; + item.category = "Electronic structure"; + item.type = "Integer"; + item.description = "DFT-1/2 type:\n* 0: DFT-1/2 is off.\n* 1: Shell DFT-1/2 method is used."; + item.default_value = "0"; + item.unit = ""; + item.availability = ""; + read_sync_int(input.dfthalf_type); + this->add_item(item); + } + { + Input_Item item("pw_diag_thr"); + item.annotation = "threshold for eigenvalues is cg electron iterations"; + item.category = "Plane wave related variables"; + item.type = "Real"; + item.description = "Only used when you use ks_solver = cg/dav/dav_subspace/bpcg. It indicates the threshold for the first electronic iteration, from the second iteration the pw_diag_thr will be updated automatically. For nscf calculations with planewave basis set, pw_diag_thr should be <= 1e-3."; + item.default_value = "0.01"; + item.unit = ""; + item.availability = ""; + read_sync_double(input.pw_diag_thr); + item.reset_value = [](const Input_Item& item, Parameter& para) { + if (para.input.calculation == "get_s" && para.input.basis_type == "pw") + { + if (para.input.pw_diag_thr > 1.0e-3) + { + para.input.pw_diag_thr = 1.0e-5; + } + } + }; + this->add_item(item); + } + { + Input_Item item("diago_smooth_ethr"); + item.annotation = "smooth ethr for iter methods"; + item.category = "Plane wave related variables"; + item.type = "Boolean"; + item.description = "If TRUE, the smooth threshold strategy, which applies a larger threshold (10e-5) for the empty states, will be implemented in the diagonalization methods. (This strategy should not affect total energy, forces, and other ground-state properties, but computational efficiency will be improved.) If FALSE, the smooth threshold strategy will not be applied."; + item.default_value = "false"; + item.unit = ""; + item.availability = ""; + read_sync_bool(input.diago_smooth_ethr); + this->add_item(item); + } + { + Input_Item item("use_k_continuity"); + item.annotation = "whether to use k-point continuity for initializing wave functions"; + item.category = "Plane wave related variables"; + item.type = "Boolean"; + item.description = "If TRUE, the wavefunctions at k-point will be initialized from the converged wavefunctions at the nearest k-point, which can speed up the SCF convergence. Only works for PW basis."; + item.default_value = "false"; + item.unit = ""; + item.availability = "Used only for plane wave basis set."; + read_sync_bool(input.use_k_continuity); + item.check_value = [](const Input_Item& item, const Parameter& para) { + if (para.input.use_k_continuity && para.input.basis_type != "pw") { + ModuleBase::WARNING_QUIT("ReadInput", "use_k_continuity only works for PW basis"); + } + if (para.input.use_k_continuity && para.input.calculation == "nscf") { + ModuleBase::WARNING_QUIT("ReadInput", "use_k_continuity cannot work for NSCF calculation"); + } + if (para.input.use_k_continuity && para.input.nspin == 2) { + ModuleBase::WARNING_QUIT("ReadInput", "use_k_continuity cannot work for spin-polarized calculation"); + } + if (para.input.use_k_continuity && para.input.esolver_type == "sdft") { + ModuleBase::WARNING_QUIT("ReadInput", "use_k_continuity cannot work for SDFT calculation"); + } + }; + this->add_item(item); + } + { + Input_Item item("pw_diag_nmax"); + item.annotation = "max iteration number for cg"; + item.category = "Plane wave related variables"; + item.type = "Integer"; + item.description = "Only useful when you use ks_solver = cg/dav/dav_subspace/bpcg. It indicates the maximal iteration number for cg/david/dav_subspace/bpcg method."; + item.default_value = "50"; + item.unit = ""; + item.availability = "basis_type==pw, ks_solver==cg/dav/dav_subspace/bpcg"; + read_sync_int(input.pw_diag_nmax); + this->add_item(item); + } + { + Input_Item item("pw_diag_ndim"); + item.annotation = "dimension of workspace for Davidson diagonalization"; + item.category = "Plane wave related variables"; + item.type = "Integer"; + item.description = "Only useful when you use ks_solver = dav or ks_solver = dav_subspace. It indicates dimension of workspace(number of wavefunction packets, at least 2 needed) for the Davidson method. A larger value may yield a smaller number of iterations in the algorithm but uses more memory and more CPU time in subspace diagonalization."; + item.default_value = "4"; + item.unit = ""; + item.availability = ""; + read_sync_int(input.pw_diag_ndim); + this->add_item(item); + } + { + Input_Item item("diago_cg_prec"); + item.annotation = "diago_cg_prec"; + item.category = "Plane wave related variables"; + item.type = "Integer"; + item.description = "Preconditioner type for conjugate gradient diagonalization method."; + item.default_value = "1"; + item.unit = ""; + item.availability = ""; + read_sync_int(input.diago_cg_prec); + this->add_item(item); + } + + // LCAO + { + Input_Item item("nb2d"); + item.annotation = "matrix 2d division"; + item.category = "System variables"; + item.type = "Integer"; + item.description = "In LCAO calculations, the Hamiltonian and overlap matrices are distributed across 2D processor grid. This parameter controls the 2D block size for distribution."; + item.default_value = "0"; + item.unit = ""; + item.availability = ""; + read_sync_int(input.nb2d); + item.check_value = [](const Input_Item& item, const Parameter& para) { + if (para.input.nb2d < 0) + { + ModuleBase::WARNING_QUIT("ReadInput", "nb2d should be greater than 0"); + } + }; + this->add_item(item); + } + { + Input_Item item("lmaxmax"); + item.annotation = "maximum of l channels used"; + item.category = "Numerical atomic orbitals related variables"; + item.type = "Integer"; + item.description = "If not equals to 2, then the maximum l channels on LCAO is set to lmaxmax. If 2, then the number of l channels will be read from the LCAO data sets. Normally no input should be supplied for this variable so that it is kept as its default."; + item.default_value = "2."; + item.unit = ""; + item.availability = ""; + read_sync_int(input.lmaxmax); + this->add_item(item); + } + { + Input_Item item("lcao_ecut"); + item.annotation = "energy cutoff for LCAO"; + item.category = "Numerical atomic orbitals related variables"; + item.type = "Real"; + item.description = "Energy cutoff (in Ry) for two-center integrals in LCAO. The two-center integration table are obtained via a k space integral whose upper limit is about sqrt(lcao_ecut)."; + item.default_value = "ecutwfc"; + item.unit = ""; + item.availability = ""; + item.reset_value = [](const Input_Item& item, Parameter& para) { + if (para.input.lcao_ecut == 0 && para.input.basis_type == "lcao") + { + para.input.lcao_ecut = para.input.ecutwfc; + ModuleBase::GlobalFunc::AUTO_SET("lcao_ecut", para.input.ecutwfc); + } + }; + read_sync_double(input.lcao_ecut); + this->add_item(item); + } + { + Input_Item item("lcao_dk"); + item.annotation = "delta k for 1D integration in LCAO"; + item.category = "Numerical atomic orbitals related variables"; + item.type = "Real"; + item.description = "the interval of k points for two-center integrals. The two-center integration table are obtained via a k space integral on a uniform grid with spacing lcao_dk."; + item.default_value = "0.01"; + item.unit = "Bohr"; + item.availability = ""; + read_sync_double(input.lcao_dk); + this->add_item(item); + } + { + Input_Item item("lcao_dr"); + item.annotation = "delta r for 1D integration in LCAO"; + item.category = "Numerical atomic orbitals related variables"; + item.type = "Real"; + item.description = "r spacing of the integration table of two-center integrals."; + item.default_value = "0.01"; + item.unit = "Bohr"; + item.availability = ""; + read_sync_double(input.lcao_dr); + this->add_item(item); + } + { + Input_Item item("lcao_rmax"); + item.annotation = "max R for 1D two-center integration table"; + item.category = "Numerical atomic orbitals related variables"; + item.type = "Real"; + item.description = "Maximum distance for the two-center integration table."; + item.default_value = "30"; + item.unit = "Bohr"; + item.availability = ""; + read_sync_double(input.lcao_rmax); + this->add_item(item); + } + { + Input_Item item("search_radius"); + item.annotation = "input search radius (Bohr)"; + item.category = "Numerical atomic orbitals related variables"; + item.type = "Real"; + item.description = "Searching radius in finding the neighbouring atoms. By default the radius will be automatically determined by the cutoffs of orbitals and nonlocal beta projectors."; + item.default_value = "-1"; + item.unit = "Bohr"; + item.availability = ""; + read_sync_double(input.search_radius); + this->add_item(item); + } + { + Input_Item item("bx"); + item.annotation = "division of an element grid in FFT grid along x"; + item.category = "Numerical atomic orbitals related variables"; + item.type = "Integer"; + item.description = "In the matrix operation of grid integral, bx/by/bz grids (in x, y, z directions) are treated as a whole as a matrix element. A different value will affect the calculation speed. The default is 0, which means abacus will automatically calculate these values."; + item.default_value = "0"; + item.unit = ""; + item.availability = ""; + read_sync_int(input.bx); + item.check_value = [](const Input_Item& item, const Parameter& para) { + if (para.input.bx > 10) + { + ModuleBase::WARNING_QUIT("ReadInput", "bx should be no more than 10"); + } + }; + item.reset_value = [](const Input_Item& item, Parameter& para) { + if (para.input.basis_type == "pw" || para.input.basis_type == "lcao_in_pw" + || para.input.calculation == "get_wf") + { + para.input.bx = 1; + para.input.by = 1; + para.input.bz = 1; + } + }; + this->add_item(item); + } + { + Input_Item item("by"); + item.annotation = "division of an element grid in FFT grid along y"; + item.category = "Numerical atomic orbitals related variables"; + item.type = "Integer"; + item.description = "In the matrix operation of grid integral, bx/by/bz grids (in x, y, z directions) are treated as a whole as a matrix element. A different value will affect the calculation speed. The default is 0, which means abacus will automatically calculate these values."; + item.default_value = "0"; + item.unit = ""; + item.availability = ""; + read_sync_int(input.by); + item.check_value = [](const Input_Item& item, const Parameter& para) { + if (para.input.by > 10) + { + ModuleBase::WARNING_QUIT("ReadInput", "by should be no more than 10"); + } + }; + this->add_item(item); + } + { + Input_Item item("bz"); + item.annotation = "division of an element grid in FFT grid along z"; + item.category = "Numerical atomic orbitals related variables"; + item.type = "Integer"; + item.description = "In the matrix operation of grid integral, bx/by/bz grids (in x, y, z directions) are treated as a whole as a matrix element. A different value will affect the calculation speed. The default is 0, which means abacus will automatically calculate these values."; + item.default_value = "0"; + item.unit = ""; + item.availability = ""; + read_sync_int(input.bz); + item.check_value = [](const Input_Item& item, const Parameter& para) { + if (para.input.bz > 10) + { + ModuleBase::WARNING_QUIT("ReadInput", "bz should be no more than 10"); + } + }; + this->add_item(item); + } + { + Input_Item item("elpa_num_thread"); + item.annotation = "Number of threads need to use in elpa"; + item.category = "Numerical atomic orbitals related variables"; + item.type = "Integer"; + item.description = "Number of threads used in one elpa calculation.\n\nIf the number is below 0 or 0 or beyond the max number of threads, all elpa calculation will be using all mpi threads"; + item.default_value = "-1"; + item.unit = ""; + item.availability = ""; + read_sync_int(input.elpa_num_thread); + this->add_item(item); + } + { + Input_Item item("num_stream"); + item.annotation = "the nstream in compute the LCAO with CUDA"; + item.category = "Numerical atomic orbitals related variables"; + item.type = "Integer"; + item.description = "The number of CUDA streams used in LCAO calculations with GPU acceleration."; + item.default_value = "4"; + item.unit = ""; + item.availability = ""; + read_sync_int(input.nstream); + this->add_item(item); + } + { + Input_Item item("bessel_nao_ecut"); + item.annotation = "energy cutoff for spherical bessel functions(Ry)"; + item.category = "NAOs"; + item.type = "String"; + item.description = "\"Energy cutoff\" (in Ry) of spherical Bessel functions. The number of spherical Bessel functions that constitute the radial parts of NAOs is determined by sqrt(bessel_nao_ecut)*bessel_nao_rcut/."; + item.default_value = "ecutwfc"; + item.unit = ""; + item.availability = ""; + read_sync_string(input.bessel_nao_ecut); + item.reset_value = [](const Input_Item& item, Parameter& para) { + if (para.input.bessel_nao_ecut == "default") + { + para.input.bessel_nao_ecut = std::to_string(para.input.ecutwfc); + } + }; + item.check_value = [](const Input_Item& item, const Parameter& para) { + if (std::stod(para.input.bessel_nao_ecut) < 0) + { + ModuleBase::WARNING_QUIT("ReadInput", "bessel_nao_ecut must >= 0"); + } + }; + this->add_item(item); + } + { + Input_Item item("bessel_nao_tolerence"); + item.annotation = "tolerence for spherical bessel root"; + item.category = "NAOs"; + item.type = "Real"; + item.description = "Tolerance when searching for the zeros of spherical Bessel functions."; + item.default_value = "1.0e-12"; + item.unit = ""; + item.availability = ""; + read_sync_double(input.bessel_nao_tolerence); + this->add_item(item); + } + { + Input_Item item("bessel_nao_rcut"); + item.annotation = "radial cutoff for spherical bessel functions(a.u.)"; + item.category = "NAOs"; + item.type = "Vector of Real (N values)"; + item.description = "Cutoff radius (in Bohr) and the common node of spherical Bessel functions used to construct the NAOs."; + item.default_value = "6.0"; + item.unit = ""; + item.availability = ""; + item.read_value = [](const Input_Item& item, Parameter& para) { + size_t count = item.get_size(); + for (int i = 0; i < count; i++) + { + para.input.bessel_nao_rcuts.push_back(std::stod(item.str_values[i])); + } + }; + item.check_value = [](const Input_Item& item, const Parameter& para) { + for(auto rcut: para.input.bessel_nao_rcuts) + { + if (rcut < 0) + { + ModuleBase::WARNING_QUIT("ReadInput", "bessel_nao_rcut must >= 0"); + } + } + }; + sync_doublevec(input.bessel_nao_rcuts, para.input.bessel_nao_rcuts.size(), 0.0); + this->add_item(item); + } + { + Input_Item item("bessel_nao_smooth"); + item.annotation = "spherical bessel smooth or not"; + item.category = "NAOs"; + item.type = "Boolean"; + item.description = "If True, NAOs will be smoothed near the cutoff radius. See bessel_nao_rcut and bessel_nao_sigma for parameters."; + item.default_value = "True"; + item.unit = ""; + item.availability = ""; + read_sync_bool(input.bessel_nao_smooth); + this->add_item(item); + } + { + Input_Item item("bessel_nao_sigma"); + item.annotation = "spherical bessel smearing_sigma"; + item.category = "NAOs"; + item.type = "Real"; + item.description = "Smoothing range (in Bohr). See also bessel_nao_smooth."; + item.default_value = "0.1"; + item.unit = ""; + item.availability = ""; + read_sync_double(input.bessel_nao_sigma); + this->add_item(item); + } +} +} // namespace ModuleIO diff --git a/source/source_io/module_parameter/read_input_item_exx_dftu.cpp b/source/source_io/module_parameter/read_input_item_exx_dftu.cpp new file mode 100644 index 0000000000..123cbd1805 --- /dev/null +++ b/source/source_io/module_parameter/read_input_item_exx_dftu.cpp @@ -0,0 +1,822 @@ +#include "source_base/constants.h" +#include "source_base/tool_quit.h" +#include "read_input.h" +#include "read_input_tool.h" +namespace ModuleIO +{ +void ReadInput::item_exx() +{ + // NOTE: The order of add_item() calls below determines the parameter order + // in the generated documentation (docs/advanced/input_files/input-main.md). + // Please preserve this ordering when adding new parameters. + // EXX + { + Input_Item item("exx_fock_alpha"); + item.annotation = "fraction of Fock exchange 1/r in hybrid functionals"; + item.category = "Exact Exchange (Common)"; + item.type = "Real"; + item.description = R"(Fraction of full-ranged Fock exchange $1/r$ in range-separated hybrid functionals.)"; + item.default_value = "see hybrid_func_params"; + item.unit = ""; + item.availability = ""; + item.read_value = [](const Input_Item& item, Parameter& para) + { + para.input.exx_fock_alpha = item.str_values; + }; + item.reset_value = [](const Input_Item& item, Parameter& para) + { + if (para.input.exx_fock_alpha.size()==1 && para.input.exx_fock_alpha[0]=="default") + { + std::string& dft_functional = para.input.dft_functional; + std::string dft_functional_lower = dft_functional; + std::transform(dft_functional.begin(), dft_functional.end(), dft_functional_lower.begin(), tolower); + if (dft_functional_lower == "hf" || + dft_functional_lower == "lc_pbe" || dft_functional_lower == "lc_wpbe" || + dft_functional_lower == "lrc_wpbe" || dft_functional_lower == "lrc_wpbeh" || + dft_functional_lower == "muller" || dft_functional_lower == "power" // added by jghan 2024-07-06 + || dft_functional_lower == "wp22" ) + { + para.input.exx_fock_alpha = {"1"}; + } + else if (dft_functional_lower == "pbe0" || dft_functional_lower == "scan0") + { + para.input.exx_fock_alpha = {"0.25"}; + } + else if (dft_functional_lower == "b3lyp") + { + para.input.exx_fock_alpha = {"0.2"}; + } + else if (dft_functional_lower == "cam_pbeh") + { + para.input.exx_fock_alpha = {"0.2"}; + } + else + { // no exx in scf, but will change to non-zero in postprocess like rpa + para.input.exx_fock_alpha = {}; + } + } + }; + sync_stringvec(input.exx_fock_alpha, para.input.exx_fock_alpha.size(), ""); + this->add_item(item); + } + { + Input_Item item("exx_erfc_alpha"); + item.annotation = "fraction of exchange erfc(wr)/r in hybrid functionals"; + item.category = "Exact Exchange (Common)"; + item.type = "Real"; + item.description = R"(Fraction of short-ranged Fock exchange $\mathrm{erfc}(\omega r)/r$ in range-separated hybrid functionals.)"; + item.default_value = "see hybrid_func_params"; + item.unit = ""; + item.availability = ""; + item.read_value = [](const Input_Item& item, Parameter& para) + { + para.input.exx_erfc_alpha = item.str_values; + }; + item.reset_value = [](const Input_Item& item, Parameter& para) + { + if (para.input.exx_erfc_alpha.size()==1 && para.input.exx_erfc_alpha[0]=="default") + { + std::string& dft_functional = para.input.dft_functional; + std::string dft_functional_lower = dft_functional; + std::transform(dft_functional.begin(), dft_functional.end(), dft_functional_lower.begin(), tolower); + if (dft_functional_lower == "hse") + { + para.input.exx_erfc_alpha = {"0.25"}; + } + else if (dft_functional_lower == "lrc_wpbeh") + { + para.input.exx_erfc_alpha = {"-0.8"}; + } + else if (dft_functional_lower == "cam_pbeh") + { + para.input.exx_erfc_alpha = {"0.8"}; + } + else if (dft_functional_lower == "cwp22") + { + para.input.exx_erfc_alpha = {"1"}; + } + else if (dft_functional_lower == "lc_pbe" || dft_functional_lower == "lc_wpbe" || + dft_functional_lower == "lrc_wpbe" || dft_functional_lower == "wp22") + { + para.input.exx_erfc_alpha = {"-1"}; + } + else + { // no exx in scf, but will change to non-zero in postprocess like rpa + para.input.exx_erfc_alpha = {}; + } + } + }; + sync_stringvec(input.exx_erfc_alpha, para.input.exx_erfc_alpha.size(), ""); + this->add_item(item); + } + { + Input_Item item("exx_erfc_omega"); + item.annotation = "range-separation parameter erfc(wr)/r in hybrid functionals"; + item.category = "Exact Exchange (Common)"; + item.type = "Real"; + item.description = R"(Range-separation parameter $\omega$ in the short-ranged Fock term $\mathrm{erfc}(\omega r)/r$.)"; + item.default_value = "see hybrid_func_params"; + item.unit = ""; + item.availability = ""; + item.read_value = [](const Input_Item& item, Parameter& para) + { + para.input.exx_erfc_omega = item.str_values; + }; + item.reset_value = [](const Input_Item& item, Parameter& para) + { + if (para.input.exx_erfc_omega.size()==1 && para.input.exx_erfc_omega[0]=="default") + { + std::string& dft_functional = para.input.dft_functional; + std::string dft_functional_lower = dft_functional; + std::transform(dft_functional.begin(), dft_functional.end(), dft_functional_lower.begin(), tolower); + if (dft_functional_lower == "hse" || dft_functional_lower == "cwp22" || dft_functional_lower == "wp22") + { + para.input.exx_erfc_omega = {"0.11"}; + } + else if (dft_functional_lower == "lc_pbe") + { + para.input.exx_erfc_omega = {"0.33"}; + } + else if (dft_functional_lower == "lc_wpbe") + { + para.input.exx_erfc_omega = {"0.4"}; + } + else if (dft_functional_lower == "lrc_wpbe") + { + para.input.exx_erfc_omega = {"0.3"}; + } + else if (dft_functional_lower == "lrc_wpbeh") + { + para.input.exx_erfc_omega = {"0.2"}; + } + else if (dft_functional_lower == "cam_pbeh") + { + para.input.exx_erfc_omega = {"0.7"}; + } + else + { + para.input.exx_erfc_omega = {}; + } + } + }; + sync_stringvec(input.exx_erfc_omega, para.input.exx_erfc_omega.size(), ""); + this->add_item(item); + } + { + Input_Item item("exx_separate_loop"); + item.annotation = "if 1, a two-step method is employed, else it will " + "start with a GGA-Loop, and then Hybrid-Loop"; + item.category = "Exact Exchange (Common)"; + item.type = "Boolean"; + item.description = R"(There are two types of iterative approaches provided by ABACUS to evaluate Fock exchange. +* False: Start with a GGA-Loop, and then Hybrid-Loop, in which EXX Hamiltonian is updated with electronic iterations. +* True: A two-step method is employed, i.e. in the inner iterations, density matrix is updated, while in the outer iterations, is calculated based on density matrix that converges in the inner iteration.)"; + item.default_value = "True"; + item.unit = ""; + item.availability = ""; + item.reset_value = [](const Input_Item& item, Parameter& para) { + if (para.input.esolver_type == "tddft" && para.input.exx_separate_loop) + { + GlobalV::ofs_running << "For RT-TDDFT with hybrid functionals, only exx_separate_loop = 0 is supported" << std::endl; + para.input.exx_separate_loop = false; + } + }; + read_sync_bool(input.exx_separate_loop); + this->add_item(item); + } + { + Input_Item item("exx_hybrid_step"); + item.annotation = "the maximal electronic iteration number in the " + "evaluation of Fock exchange"; + item.category = "Exact Exchange (Common)"; + item.type = "Integer"; + item.description = "The maximal iteration number of the outer-loop, where the Fock exchange is calculated"; + item.default_value = "100"; + item.unit = ""; + item.availability = "exx_separate_loop==1"; + read_sync_int(input.exx_hybrid_step); + item.check_value = [](const Input_Item& item, const Parameter& para) + { + if (para.input.exx_hybrid_step <= 0) + { + ModuleBase::WARNING_QUIT("ReadInput", "exx_hybrid_step must > 0"); + } + }; + this->add_item(item); + } + { + Input_Item item("exx_mixing_beta"); + item.annotation = "mixing_beta for outer-loop when exx_separate_loop=1"; + item.category = "Exact Exchange (Common)"; + item.type = "Real"; + item.description = "Mixing parameter for densty matrix in each iteration of the outer-loop"; + item.default_value = "1.0"; + item.unit = ""; + item.availability = "exx_separate_loop==1"; + read_sync_double(input.exx_mixing_beta); + this->add_item(item); + } + { + Input_Item item("exx_fock_lambda"); + item.annotation = "used to compensate for divergence points at G=0 in " + "the evaluation of Fock exchange using " + "lcao_in_pw method"; + item.category = "Exact Exchange (LCAO in PW)"; + item.type = "Real"; + item.description = "It is used to compensate for divergence points at G=0 in the evaluation of Fock exchange using lcao_in_pw method."; + item.default_value = "0.3"; + item.unit = ""; + item.availability = "basis_type==lcao_in_pw"; + item.read_value = [](const Input_Item& item, Parameter& para) + { + para.input.exx_fock_lambda = item.str_values; + }; + item.reset_value = [](const Input_Item& item, Parameter& para) + { + if (para.input.exx_fock_lambda.size()==1 && para.input.exx_fock_lambda[0]=="default") + { + para.input.exx_fock_lambda = std::vector(para.input.exx_fock_alpha.size(), "0.3"); + } + }; + sync_stringvec(input.exx_fock_lambda, para.input.exx_fock_lambda.size(), ""); + this->add_item(item); + } + { + Input_Item item("exx_pca_threshold"); + item.annotation = "threshold to screen on-site ABFs in exx"; + item.category = "Exact Exchange (LCAO)"; + item.type = "Real"; + item.description = "To accelerate the evaluation of four-center integrals (), the product of atomic orbitals are expanded in the basis of auxiliary basis functions (ABF): . The size of the ABF (i.e. number of ) is reduced using principal component analysis. When a large PCA threshold is used, the number of ABF will be reduced, hence the calculation becomes faster. However, this comes at the cost of computational accuracy. A relatively safe choice of the value is 1e-4."; + item.default_value = "1E-4"; + item.unit = ""; + item.availability = ""; + read_sync_double(input.exx_pca_threshold); + this->add_item(item); + } + { + Input_Item item("exx_c_threshold"); + item.annotation = "threshold to screen C matrix in exx"; + item.category = "Exact Exchange (LCAO)"; + item.type = "Real"; + item.description = "See also the entry exx_pca_threshold. Smaller components (less than exx_c_threshold) of the matrix are neglected to accelerate calculation. The larger the threshold is, the faster the calculation and the lower the accuracy. A relatively safe choice of the value is 1e-4."; + item.default_value = "1E-4"; + item.unit = ""; + item.availability = ""; + read_sync_double(input.exx_c_threshold); + this->add_item(item); + } + { + Input_Item item("exx_cs_inv_thr"); + item.annotation = "threshold to inverse Vq in abfs for generating Cs"; + item.category = "Exact Exchange (LCAO)"; + item.type = "Real"; + item.description = "By default, the Coulomb matrix inversion required for obtaining LRI coefficients is performed using LU decomposition. However, this approach may suffer from numerical instabilities when a large set of auxiliary basis functions (ABFs) is employed. When exx_cs_inv_thr > 0, the inversion is instead carried out via matrix diagonalization. Eigenvalues smaller than exx_cs_inv_thr are discarded to improve numerical stability. A relatively safe and commonly recommended value is 1e-5."; + item.default_value = "-1"; + item.unit = ""; + item.availability = ""; + read_sync_double(input.exx_cs_inv_thr); + this->add_item(item); + } + { + Input_Item item("exx_v_threshold"); + item.annotation = "threshold to screen C matrix in exx"; + item.category = "Exact Exchange (LCAO)"; + item.type = "Real"; + item.description = "See also the entry exx_pca_threshold. With the approximation , the four-center integral in Fock exchange is expressed as , where is a double-center integral. Smaller values of the V matrix can be truncated to accelerate calculation. The larger the threshold is, the faster the calculation and the lower the accuracy. A relatively safe choice of the value is 0, i.e. no truncation."; + item.default_value = "1E-1"; + item.unit = ""; + item.availability = ""; + read_sync_double(input.exx_v_threshold); + this->add_item(item); + } + { + Input_Item item("exx_dm_threshold"); + item.annotation = "threshold to screen density matrix in exx"; + item.category = "Exact Exchange (LCAO)"; + item.type = "Real"; + item.description = "The Fock exchange can be expressed as where D is the density matrix. Smaller values of the density matrix can be truncated to accelerate calculation. The larger the threshold is, the faster the calculation and the lower the accuracy. A relatively safe choice of the value is 1e-4."; + item.default_value = "1E-4"; + item.unit = ""; + item.availability = ""; + read_sync_double(input.exx_dm_threshold); + this->add_item(item); + } + { + Input_Item item("exx_c_grad_threshold"); + item.annotation = "threshold to screen nabla C matrix in exx"; + item.category = "Exact Exchange (LCAO)"; + item.type = "Real"; + item.description = "See also the entry exx_pca_threshold. is used in force. Smaller components (less than exx_c_grad_threshold) of the matrix are neglected to accelerate calculation. The larger the threshold is, the faster the calculation and the lower the accuracy. A relatively safe choice of the value is 1e-4."; + item.default_value = "1E-4"; + item.unit = ""; + item.availability = ""; + read_sync_double(input.exx_c_grad_threshold); + this->add_item(item); + } + { + Input_Item item("exx_v_grad_threshold"); + item.annotation = "threshold to screen nabla V matrix in exx"; + item.category = "Exact Exchange (LCAO)"; + item.type = "Real"; + item.description = "See also the entry exx_pca_threshold. With the approximation , the four-center integral in Fock exchange is expressed as , where is a double-center integral. is used in force. Smaller values of the V matrix can be truncated to accelerate calculation. The larger the threshold is, the faster the calculation and the lower the accuracy. A relatively safe choice of the value is 0, i.e. no truncation."; + item.default_value = "1E-1"; + item.unit = ""; + item.availability = ""; + read_sync_double(input.exx_v_grad_threshold); + this->add_item(item); + } + { + Input_Item item("exx_c_grad_r_threshold"); + item.annotation = "threshold to screen nabla C * R matrix in exx"; + item.category = "Exact Exchange (LCAO)"; + item.type = "Real"; + item.description = "See also the entry exx_pca_threshold. is used in stress. Smaller components (less than exx_c_grad_r_threshold) of the matrix are neglected to accelerate calculation. The larger the threshold is, the faster the calculation and the lower the accuracy. A relatively safe choice of the value is 1e-4."; + item.default_value = "1E-4"; + item.unit = ""; + item.availability = ""; + read_sync_double(input.exx_c_grad_r_threshold); + this->add_item(item); + } + { + Input_Item item("exx_v_grad_r_threshold"); + item.annotation = "threshold to screen nabla V * R matrix in exx"; + item.category = "Exact Exchange (LCAO)"; + item.type = "Real"; + item.description = "See also the entry exx_pca_threshold. With the approximation , the four-center integral in Fock exchange is expressed as , where is a double-center integral. is used in force and stress. Smaller values of the V matrix can be truncated to accelerate calculation. The larger the threshold is, the faster the calculation and the lower the accuracy. A relatively safe choice of the value is 0, i.e. no truncation."; + item.default_value = "1E-1"; + item.unit = ""; + item.availability = ""; + read_sync_double(input.exx_v_grad_r_threshold); + this->add_item(item); + } + { + Input_Item item("exx_ccp_rmesh_times"); + item.annotation = "how many times larger the radial mesh required for " + "calculating Columb potential is to that " + "of atomic orbitals"; + item.category = "Exact Exchange (LCAO)"; + item.type = "String"; + item.description = "This parameter determines how many times larger the radial mesh required for calculating Columb potential is to that of atomic orbitals. The value should be larger than 0. Reducing this value can effectively increase the speed of self-consistent calculations using hybrid functionals."; + item.default_value = ""; + item.unit = ""; + item.availability = ""; + read_sync_string(input.exx_ccp_rmesh_times); + item.reset_value = [](const Input_Item& item, Parameter& para) { + if (para.input.exx_ccp_rmesh_times == "default") + { // to run through here, the default value of para.input.exx_ccp_rmesh_times should be "default" + std::string& dft_functional = para.input.dft_functional; + std::string dft_functional_lower = dft_functional; + std::transform(dft_functional.begin(), dft_functional.end(), dft_functional_lower.begin(), tolower); + if (dft_functional_lower == "hf" || dft_functional_lower == "pbe0" || dft_functional_lower == "scan0") + { + para.input.exx_ccp_rmesh_times = "5"; + } + else if (dft_functional_lower == "hse") + { + para.input.exx_ccp_rmesh_times = "1.5"; + } + // added by jghan 2024-07-06 + else if (dft_functional_lower == "muller" || dft_functional_lower == "power") + { + para.input.exx_ccp_rmesh_times = "5"; + } + else if (dft_functional_lower == "wp22") + { + para.input.exx_ccp_rmesh_times = "5"; + // exx_ccp_rmesh_times = "1.5"; + } + else if (dft_functional_lower == "cwp22") + { + para.input.exx_ccp_rmesh_times = "1.5"; + } + else + { // no exx in scf + para.input.exx_ccp_rmesh_times = "1"; + } + } + }; + item.check_value = [](const Input_Item& item, const Parameter& para) { + if (std::stod(para.input.exx_ccp_rmesh_times) <=0) + { + ModuleBase::WARNING_QUIT("ReadInput", "exx_ccp_rmesh_times must > 0"); + } + }; + this->add_item(item); + } + { + Input_Item item("exx_opt_orb_lmax"); + item.annotation = "the maximum l of the spherical Bessel functions for opt ABFs"; + item.category = "Exact Exchange (LCAO)"; + item.type = "Integer"; + item.description = "The maximum l of the spherical Bessel functions, when the radial part of opt-ABFs are generated as linear combinations of spherical Bessel functions. A reasonable choice is 2."; + item.default_value = "0"; + item.unit = ""; + item.availability = "calculation==gen_opt_abfs"; + read_sync_int(input.exx_opt_orb_lmax); + this->add_item(item); + } + { + Input_Item item("exx_opt_orb_ecut"); + item.annotation = "the cut-off of plane wave expansion for opt ABFs"; + item.category = "Exact Exchange (LCAO)"; + item.type = "Real"; + item.description = "The cut-off of plane wave expansion, when the plane wave basis is used to optimize the radial ABFs. A reasonable choice is 60."; + item.default_value = "0"; + item.unit = "Ry"; + item.availability = "calculation==gen_opt_abfs"; + read_sync_double(input.exx_opt_orb_ecut); + item.check_value = [](const Input_Item& item, const Parameter& para) { + if (para.input.exx_opt_orb_ecut < 0) + { + ModuleBase::WARNING_QUIT("ReadInput", "exx_opt_orb_ecut must >= 0"); + } + }; + this->add_item(item); + } + { + Input_Item item("exx_opt_orb_tolerence"); + item.annotation = "the threshold when solving for the zeros of " + "spherical Bessel functions for opt ABFs"; + item.category = "Exact Exchange (LCAO)"; + item.type = "Real"; + item.description = "The threshold when solving for the zeros of spherical Bessel functions. A reasonable choice is 1e-12."; + item.default_value = "1E-12"; + item.unit = ""; + item.availability = "calculation==gen_opt_abfs"; + read_sync_double(input.exx_opt_orb_tolerence); + item.check_value = [](const Input_Item& item, const Parameter& para) { + if (para.input.exx_opt_orb_tolerence < 0) + { + ModuleBase::WARNING_QUIT("ReadInput", "exx_opt_orb_tolerence must >= 0"); + } + }; + this->add_item(item); + } + { + Input_Item item("exx_real_number"); + item.annotation = "exx calculated in real or complex"; + item.category = "Exact Exchange (LCAO)"; + item.type = "String"; + item.description = R"(* True: Enforce LibRI to use double data type. +* False: Enforce LibRI to use complex data type. Setting it to True can effectively improve the speed of self-consistent calculations with hybrid functionals.)"; + item.default_value = "depends on the gamma_only option"; + item.unit = ""; + item.availability = ""; + read_sync_string(input.exx_real_number); + item.reset_value = [](const Input_Item& item, Parameter& para) { + if (para.input.exx_real_number == "default") + { // to run through here, the default value of para.input.exx_real_number should be "default" + if (para.input.gamma_only) + { + para.input.exx_real_number = "1"; + } + else + { + para.input.exx_real_number = "0"; + } + } + }; + this->add_item(item); + } + { + Input_Item item("exx_singularity_correction"); + item.annotation = "set the scheme of Coulomb singularity correction"; + item.category = "Exact Exchange (LCAO)"; + item.type = "String"; + item.description = R"(* spencer: see Phys. Rev. B 77, 193110 (2008). +* revised_spencer: see Phys. Rev. Mater. 5, 013807 (2021). Set the scheme of Coulomb singularity correction.)"; + item.default_value = "default"; + item.unit = ""; + item.availability = ""; + read_sync_string(input.exx_singularity_correction); + item.reset_value = [](const Input_Item& item, Parameter& para) { + if (para.input.exx_singularity_correction == "default") + { + std::string& dft_functional = para.input.dft_functional; + std::string dft_functional_lower = dft_functional; + std::transform(dft_functional.begin(), dft_functional.end(), dft_functional_lower.begin(), tolower); + if (dft_functional_lower == "hf" + || dft_functional_lower == "pbe0" || dft_functional_lower == "b3lyp" + || dft_functional_lower == "scan0" + || dft_functional_lower == "muller" || dft_functional_lower == "power" + || dft_functional_lower == "wp22" + || dft_functional_lower == "lc_pbe" + || dft_functional_lower == "lc_wpbe" + || dft_functional_lower == "lrc_wpbe" + || dft_functional_lower == "lrc_wpbeh" + || dft_functional_lower == "cam_pbeh") + { + para.input.exx_singularity_correction = "spencer"; + } + else if (dft_functional_lower == "hse" || dft_functional_lower == "cwp22") + { + para.input.exx_singularity_correction = "limits"; + } + } + }; + this->add_item(item); + } + { + Input_Item item("rpa_ccp_rmesh_times"); + item.annotation = "how many times larger the radial mesh required for " + "calculating Columb potential is to that " + "of atomic orbitals"; + item.category = "Exact Exchange (LCAO)"; + item.type = "Real"; + item.description = "How many times larger the radial mesh required is to that of atomic orbitals in the postprocess calculation of the bare Coulomb matrix for RPA, GW, etc."; + item.default_value = "10"; + item.unit = ""; + item.availability = ""; + read_sync_double(input.rpa_ccp_rmesh_times); + item.check_value = [](const Input_Item& item, const Parameter& para) { + if (para.input.rpa_ccp_rmesh_times < 1) + { + ModuleBase::WARNING_QUIT("ReadInput", "rpa_ccp_rmesh_times must >= 1"); + } + }; + this->add_item(item); + } + { + Input_Item item("exx_symmetry_realspace"); + item.annotation = "whether to reduce real-space sector in Hexx calculation"; + item.category = "Exact Exchange (LCAO)"; + item.type = "Boolean"; + item.description = R"(* False: only rotate k-space density matrix D(k) from irreducible k-points to accelerate diagonalization +* True: rotate both D(k) and Hexx(R) to accelerate both diagonalization and EXX calculation)"; + item.default_value = "True"; + item.unit = ""; + item.availability = "symmetry==1 and exx calculation (dft_fuctional==hse/hf/pbe0/scan0 or rpa==True)"; + read_sync_bool(input.exx_symmetry_realspace); + item.reset_value = [](const Input_Item& item, Parameter& para) { + if (para.input.symmetry != "1") { para.input.exx_symmetry_realspace = false; } + }; + this->add_item(item); + } + { + Input_Item item("out_ri_cv"); + item.annotation = "Whether to output the coefficient tensor C and ABFs-representation Coulomb matrix V"; + item.category = "Exact Exchange (LCAO)"; + item.type = "Boolean"; + item.description = "Whether to output the coefficient tensor C(R) and ABFs-representation Coulomb matrix V(R) for each atom pair and cell in real space."; + item.default_value = "false"; + item.unit = ""; + item.availability = ""; + read_sync_bool(input.out_ri_cv); + this->add_item(item); + } +} +void ReadInput::item_dftu() +{ + // NOTE: The order of add_item() calls below determines the parameter order + // in the generated documentation (docs/advanced/input_files/input-main.md). + // Please preserve this ordering when adding new parameters. + // dft+u + { + Input_Item item("dft_plus_u"); + item.annotation = "DFT+U correction method"; + item.category = "DFT+U correction"; + item.type = "Integer"; + item.description = R"(Determines whether to calculate the plus U correction, which is especially important for correlated electrons. +* 1: Calculate plus U correction with radius-adjustable localized projections (with parameter onsite_radius). +* 2: Calculate plus U correction using first zeta of NAOs as projections (this is old method for testing). +* 0: Do not calculate plus U correction.)"; + item.default_value = "0"; + item.unit = ""; + item.availability = ""; + read_sync_int(input.dft_plus_u); + item.reset_value = [](const Input_Item& item, Parameter& para) { + bool all_minus1 = true; + for (auto& val: para.input.orbital_corr) + { + if (val != -1) + { + all_minus1 = false; + break; + } + } + if (all_minus1) + { + if (para.input.dft_plus_u != 0) + { + para.input.dft_plus_u = 0; + ModuleBase::WARNING("ReadInput", "No atoms are correlated, DFT+U is closed!!!"); + } + } + }; + item.check_value = [](const Input_Item& item, const Parameter& para) { + const Input_para& input = para.input; + if (input.dft_plus_u != 0) + { + if (input.basis_type == "pw" && input.nspin != 4) + { + ModuleBase::WARNING_QUIT("ReadInput", "WRONG ARGUMENTS, only nspin2 with PW base is not supported now"); + } + } + }; + this->add_item(item); + } + { + Input_Item item("dft_plus_dmft"); + item.annotation = "true:DFT+DMFT; false: standard DFT calcullation(default)"; + item.category = "DFT+U correction"; + item.type = "Boolean"; + item.description = "Whether to enable DFT+DMFT calculation. True: DFT+DMFT; False: standard DFT calculation."; + item.default_value = "False"; + item.unit = ""; + item.availability = "basis_type==lcao"; + read_sync_bool(input.dft_plus_dmft); + item.check_value = [](const Input_Item& item, const Parameter& para) { + if (para.input.basis_type != "lcao" && para.input.dft_plus_dmft) + { + ModuleBase::WARNING_QUIT("ReadInput", "DFT+DMFT is only supported for lcao calculation."); + } + }; + this->add_item(item); + } + { + Input_Item item("orbital_corr"); + item.annotation = "which correlated orbitals need corrected ; d:2 " + ",f:3, do not need correction:-1"; + item.category = "DFT+U correction"; + item.type = "Vector of Integer (n values where n is the number of atomic types)"; + item.description = R"(Specifies which orbits need plus U correction for each atom type ( for atom type 1, 2, 3, respectively). +* -1: The plus U correction will not be calculated for this atom. +* 1: For p-electron orbits, the plus U correction is needed. +* 2: For d-electron orbits, the plus U correction is needed. +* 3: For f-electron orbits, the plus U correction is needed.)"; + item.default_value = "-1"; + item.unit = ""; + item.availability = ""; + item.read_value = [](const Input_Item& item, Parameter& para) { + size_t count = item.get_size(); + for (int i = 0; i < count; i++) + { + para.input.orbital_corr.push_back(std::stoi(item.str_values[i])); + } + }; + + item.check_value = [](const Input_Item& item, const Parameter& para) { + if (!item.is_read()) + { + return; + } + if (para.input.orbital_corr.size() != para.input.ntype) + { + ModuleBase::WARNING_QUIT("ReadInput", + "orbital_corr should have the same " + "number of elements as ntype"); + } + for (auto& val: para.input.orbital_corr) + { + if (val < -1 || val > 3) + { + ModuleBase::WARNING_QUIT("ReadInput", "WRONG ARGUMENTS OF orbital_corr"); + } + } + }; + sync_intvec(input.orbital_corr, para.input.ntype, -1); + this->add_item(item); + } + { + Input_Item item("hubbard_u"); + item.annotation = "Hubbard Coulomb interaction parameter U(ev)"; + item.category = "DFT+U correction"; + item.type = "Vector of Real (n values where n is the number of atomic types)"; + item.description = R"(Specifies the Hubbard Coulomb interaction parameter U (eV) in plus U correction, which should be specified for each atom unless the Yukawa potential is used. + +[NOTE] Note: Since only the simplified scheme by Duradev is implemented, the 'U' here is actually U-effective, which is given by Hubbard U minus Hund J.)"; + item.default_value = "0.0"; + item.unit = ""; + item.availability = ""; + item.read_value = [](const Input_Item& item, Parameter& para) { + size_t count = item.get_size(); + for (int i = 0; i < count; i++) + { + para.input.hubbard_u_eV.push_back(std::stod(item.str_values[i])); + para.sys.hubbard_u.push_back(para.input.hubbard_u_eV[i] / ModuleBase::Ry_to_eV); + } + }; + item.check_value = [](const Input_Item& item, const Parameter& para) { + if (!item.is_read()) + { + return; + } + if (para.sys.hubbard_u.size() != para.input.ntype) + { + ModuleBase::WARNING_QUIT("ReadInput", + "hubbard_u should have the same " + "number of elements as ntype"); + } + for (auto& value: para.sys.hubbard_u) + { + if (value < -1.0e-3) + { + ModuleBase::WARNING_QUIT("ReadInput", "WRONG ARGUMENTS OF hubbard_u"); + } + } + }; + sync_doublevec(input.hubbard_u_eV, para.input.ntype, 0.0); + add_doublevec_bcast(sys.hubbard_u, para.input.ntype, 0.0); + this->add_item(item); + } + { + Input_Item item("yukawa_potential"); + item.annotation = "default: false"; + item.category = "DFT+U correction"; + item.type = "Boolean"; + item.description = R"(Determines whether to use the local screen Coulomb potential method to calculate the values of U and J. +* True: hubbard_u does not need to be specified. +* False: hubbard_u does need to be specified.)"; + item.default_value = "False"; + item.unit = ""; + item.availability = ""; + read_sync_bool(input.yukawa_potential); + this->add_item(item); + } + { + Input_Item item("yukawa_lambda"); + item.annotation = "default:0.0"; + item.category = "DFT+U correction"; + item.type = "Real"; + item.description = "The screen length of Yukawa potential. If left to default, the screen length will be calculated as an average of the entire system. It's better to stick to the default setting unless there is a very good reason."; + item.default_value = "Calculated on the fly."; + item.unit = ""; + item.availability = "DFT+U with yukawa_potential = True."; + read_sync_double(input.yukawa_lambda); + this->add_item(item); + } + { + Input_Item item("uramping"); + item.annotation = "increasing U values during SCF"; + item.category = "DFT+U correction"; + item.type = "Real"; + item.description = "Once uramping > 0.15 eV. DFT+U calculations will start SCF with U = 0 eV, namely normal LDA/PBE calculations. Once SCF restarts when drhoadd_item(item); + } + { + Input_Item item("omc"); + item.annotation = "the mode of occupation matrix control"; + item.category = "DFT+U correction"; + item.type = "Integer"; + item.description = R"(The parameter controls the form of occupation matrix control used. +* 0: No occupation matrix control is performed, and the onsite density matrix will be calculated from wavefunctions in each SCF step. +* 1: The first SCF step will use an initial density matrix read from a file named initial_onsite.dm, but for later steps, the onsite density matrix will be updated. +* 2: The same onsite density matrix from initial_onsite.dm will be used throughout the entire calculation. + +[NOTE] The easiest way to create initial_onsite.dm is to run a DFT+U calculation, look for a file named onsite.dm in the OUT.prefix directory, and make replacements there. The format of the file is rather straight-forward.)"; + item.default_value = "0"; + item.unit = ""; + item.availability = ""; + read_sync_int(input.omc); + this->add_item(item); + } + { + Input_Item item("onsite_radius"); + item.annotation = "radius of the sphere for onsite projection (Bohr)"; + item.category = "DFT+U correction"; + item.type = "Real"; + item.description = R"(* The onsite_radius parameter facilitates modulation of the single-zeta portion of numerical atomic orbitals used for DFT+U projections. +* The modulation algorithm applies a smooth truncation to the orbital tail followed by normalization. A representative profile is $f(r)=\frac{1}{2}\left[1+\operatorname{erf}\!\left(\frac{r_c-r}{\sigma}\right)\right]$, where $r_c$ is the cutoff radius and $\sigma=\gamma r_c$ controls smoothness.)"; + item.default_value = "3.0"; + item.unit = "Bohr"; + item.availability = "dft_plus_u is set to 1"; + read_sync_double(input.onsite_radius); + item.reset_value = [](const Input_Item& item, Parameter& para) { + if ((para.input.dft_plus_u == 1 || para.input.sc_mag_switch) && para.input.onsite_radius == 0.0) + { + // autoset onsite_radius to 3.0 as default, this default value comes from the systematic atomic magnetism test + para.input.onsite_radius = 3.0; + } + }; + this->add_item(item); + } +} +} // namespace ModuleIO diff --git a/source/source_io/module_parameter/read_input_item_md.cpp b/source/source_io/module_parameter/read_input_item_md.cpp new file mode 100644 index 0000000000..2cadd8f219 --- /dev/null +++ b/source/source_io/module_parameter/read_input_item_md.cpp @@ -0,0 +1,717 @@ +#include "source_base/tool_quit.h" +#include "read_input.h" +#include "read_input_tool.h" + +namespace ModuleIO +{ +void ReadInput::item_md() +{ + // NOTE: The order of add_item() calls below determines the parameter order + // in the generated documentation (docs/advanced/input_files/input-main.md). + // Please preserve this ordering when adding new parameters. + // 9. Molecular dynamics + { + Input_Item item("md_type"); + item.annotation = "choose ensemble"; + item.category = "Molecular dynamics"; + item.type = "String"; + item.description = R"(Control the algorithm to integrate the equation of motion for molecular dynamics (MD), see md.md in detail. + +* fire: a MD-based relaxation algorithm, named fast inertial relaxation engine. +* nve: NVE ensemble with velocity Verlet algorithm. +* nvt: NVT ensemble, see md_thermostat in detail. +* npt: Nose-Hoover style NPT ensemble, see md_pmode in detail. +* langevin: NVT ensemble with Langevin thermostat, see md_damp in detail. +* msst: MSST method, see msst_direction, msst_vel, msst_qmass, msst_vis, msst_tscale in detail.)"; + item.default_value = "nvt"; + item.unit = ""; + item.availability = ""; + read_sync_string(input.mdp.md_type); + this->add_item(item); + } + { + Input_Item item("md_nstep"); + item.annotation = "md steps"; + item.category = "Molecular dynamics"; + item.type = "Integer"; + item.description = "The total number of molecular dynamics steps."; + item.default_value = "10"; + item.unit = ""; + item.availability = ""; + item.reset_value = [](const Input_Item& item, Parameter& para) { + if (para.input.mdp.md_nstep == 0 && para.input.esolver_type != "tddft") + { + GlobalV::ofs_running << "md_nstep should be set. Autoset md_nstep to 50!" << std::endl; + para.input.mdp.md_nstep = 50; + } + }; + read_sync_int(input.mdp.md_nstep); + this->add_item(item); + } + { + Input_Item item("md_dt"); + item.annotation = "time step"; + item.category = "Molecular dynamics"; + item.type = "Real"; + item.description = "The time step used in molecular dynamics calculations."; + item.default_value = "1.0"; + item.unit = "fs"; + item.availability = ""; + item.check_value = [](const Input_Item& item, const Parameter& para) { + if (para.input.mdp.md_dt < 0) { + ModuleBase::WARNING_QUIT("ReadInput", "time interval of MD calculation should be positive"); +} + }; + item.reset_value = [](const Input_Item& item, Parameter& para) { + if (para.input.td_dt != -1.0) + { + GlobalV::ofs_running << "td_dt exist, set md_dt with td_dt" << std::endl; + para.input.mdp.md_dt = para.input.td_dt * para.input.estep_per_md; + } + }; + read_sync_double(input.mdp.md_dt); + this->add_item(item); + } + { + Input_Item item("md_thermostat"); + item.annotation = "choose thermostat"; + item.category = "Molecular dynamics"; + item.type = "String"; + item.description = R"(Specify the temperature control method used in NVT ensemble. + +* nhc: Nose-Hoover chain, see md_tfreq and md_tchain in detail. +* anderson: Anderson thermostat, see md_nraise in detail. +* berendsen: Berendsen thermostat, see md_nraise in detail. +* rescaling: velocity Rescaling method 1, see md_tolerance in detail. +* rescale_v: velocity Rescaling method 2, see md_nraise in detail.)"; + item.default_value = "nhc"; + item.unit = ""; + item.availability = ""; + read_sync_string(input.mdp.md_thermostat); + this->add_item(item); + } + { + Input_Item item("md_tfirst"); + item.annotation = "temperature first"; + item.category = "Molecular dynamics"; + item.type = "Real"; + item.description = R"(The temperature used in molecular dynamics calculations. + +If md_tfirst is unset or less than zero, init_vel is autoset to be true. If init_vel is true, the initial temperature will be determined by the velocities read from STRU. In this case, if velocities are unspecified in STRU, the initial temperature is set to zero. + +If md_tfirst is set to a positive value and init_vel is true simultaneously, please make sure they are consistent, otherwise abacus will exit immediately. + +Note that md_tlast is only used in NVT/NPT simulations. If md_tlast is unset or less than zero, md_tlast is set to md_tfirst. If md_tlast is set to be different from md_tfirst, ABACUS will automatically change the temperature from md_tfirst to md_tlast.)"; + item.default_value = "No default"; + item.unit = "K"; + item.availability = ""; + read_sync_double(input.mdp.md_tfirst); + this->add_item(item); + } + { + Input_Item item("md_tlast"); + item.annotation = "temperature last"; + item.category = "Molecular dynamics"; + item.type = "Real"; + item.description = R"(The temperature used in molecular dynamics calculations. + +If md_tfirst is unset or less than zero, init_vel is autoset to be true. If init_vel is true, the initial temperature will be determined by the velocities read from STRU. In this case, if velocities are unspecified in STRU, the initial temperature is set to zero. + +If md_tfirst is set to a positive value and init_vel is true simultaneously, please make sure they are consistent, otherwise abacus will exit immediately. + +Note that md_tlast is only used in NVT/NPT simulations. If md_tlast is unset or less than zero, md_tlast is set to md_tfirst. If md_tlast is set to be different from md_tfirst, ABACUS will automatically change the temperature from md_tfirst to md_tlast.)"; + item.default_value = "No default"; + item.unit = "K"; + item.availability = ""; + item.reset_value = [](const Input_Item& item, Parameter& para) { + if (para.mdp.md_tlast < 0) + { + para.input.mdp.md_tlast = para.mdp.md_tfirst; + } + }; + read_sync_double(input.mdp.md_tlast); + this->add_item(item); + } + { + Input_Item item("md_prec_level"); + item.annotation = "precision level for vc-md"; + item.category = "Molecular dynamics"; + item.type = "Integer"; + item.description = R"(Determine the precision level of variable-cell molecular dynamics calculations. +* 0: FFT grids do not change, only G vectors and K vectors are changed due to the change of lattice vector. This level is suitable for cases where the variation of the volume and shape is not large, and the efficiency is relatively higher. +* 2: FFT grids change per step. This level is suitable for cases where the variation of the volume and shape is large, such as the MSST method. However, accuracy comes at the cost of efficiency.)"; + item.default_value = "0"; + item.unit = ""; + item.availability = ""; + item.reset_value = [](const Input_Item& item, Parameter& para) { + if (para.input.calculation != "md") + { + para.input.mdp.md_prec_level = 0; + } + // md_prec_level only used in vc-md liuyu 2023-03-27 + else if (para.input.mdp.md_type != "msst" && para.input.mdp.md_type != "npt") + { + para.input.mdp.md_prec_level = 0; + } + }; + read_sync_int(input.mdp.md_prec_level); + this->add_item(item); + } + { + Input_Item item("md_restart"); + item.annotation = "whether restart"; + item.category = "Molecular dynamics"; + item.type = "Boolean"; + item.description = R"(Control whether to restart molecular dynamics calculations and time-dependent density functional theory calculations. +* True: ABACUS will read in {md_step}, then read in the corresponding STRU_MD_suffix/STRU/ automatically. For tddft, ABACUS will also read in WFC_NAO_K${kpoint} of the last step (You need to set out_wfc_lcao=1 and out_app_flag=0 to obtain this file). +* False: ABACUS will start molecular dynamics calculations normally from the first step.)"; + item.default_value = "False"; + item.unit = ""; + item.availability = ""; + read_sync_bool(input.mdp.md_restart); + this->add_item(item); + } + { + Input_Item item("md_restartfreq"); + item.annotation = "The period to output MD restart information"; + item.category = "Molecular dynamics"; + item.type = "Integer"; + item.description = "The output frequency of OUT.{suffix}/STRIU/, which are used to restart molecular dynamics calculations, see md_restart in detail."; + item.default_value = "5"; + item.unit = ""; + item.availability = ""; + read_sync_int(input.mdp.md_restartfreq); + this->add_item(item); + } + { + Input_Item item("md_dumpfreq"); + item.annotation = "The period to dump MD information"; + item.category = "Molecular dynamics"; + item.type = "Integer"; + item.description = "The output frequency of OUT.${suffix}/MD_dump in molecular dynamics calculations, which including the information of lattices and atoms."; + item.default_value = "1"; + item.unit = ""; + item.availability = ""; + read_sync_int(input.mdp.md_dumpfreq); + this->add_item(item); + } + { + Input_Item item("dump_force"); + item.annotation = "output atomic forces into the file MD_dump or not"; + item.category = "Molecular dynamics"; + item.type = "Boolean"; + item.description = "Whether to output atomic forces into the file OUT.${suffix}/MD_dump."; + item.default_value = "True"; + item.unit = ""; + item.availability = ""; + read_sync_bool(input.mdp.dump_force); + this->add_item(item); + } + { + Input_Item item("dump_vel"); + item.annotation = "output atomic velocities into the file MD_dump or not"; + item.category = "Molecular dynamics"; + item.type = "Boolean"; + item.description = "Whether to output atomic velocities into the file OUT.${suffix}/MD_dump."; + item.default_value = "True"; + item.unit = ""; + item.availability = ""; + read_sync_bool(input.mdp.dump_vel); + this->add_item(item); + } + { + Input_Item item("dump_virial"); + item.annotation = "output lattice virial into the file MD_dump or not"; + item.category = "Molecular dynamics"; + item.type = "Boolean"; + item.description = "Whether to output lattice virials into the file OUT.${suffix}/MD_dump."; + item.default_value = "True"; + item.unit = ""; + item.availability = ""; + read_sync_bool(input.mdp.dump_virial); + this->add_item(item); + } + { + Input_Item item("md_seed"); + item.annotation = "random seed for MD"; + item.category = "Molecular dynamics"; + item.type = "Integer"; + item.description = R"(The random seed to initialize random numbers used in molecular dynamics calculations. +* < 0: No srand() function is called. +* >= 0: The function srand(md_seed) is called.)"; + item.default_value = "-1"; + item.unit = ""; + item.availability = ""; + read_sync_int(input.mdp.md_seed); + this->add_item(item); + } + { + Input_Item item("md_tfreq"); + item.annotation = "oscillation frequency, used to determine qmass of NHC"; + item.category = "Molecular dynamics"; + item.type = "Real"; + item.description = R"(Control the frequency of temperature oscillations during the simulation. If it is too large, the temperature will fluctuate violently; if it is too small, the temperature will take a very long time to equilibrate with the atomic system. + +Note: It is a system-dependent empirical parameter, ranging from 1/(40*md_dt) to 1/(100*md_dt). An improper choice might lead to the failure of jobs.)"; + item.default_value = "1/40/md_dt"; + item.unit = ""; + item.availability = ""; + item.reset_value = [](const Input_Item& item, Parameter& para) { + if (para.input.mdp.md_tfreq == 0 && para.input.calculation == "md") + { + para.input.mdp.md_tfreq = 1.0 / 40 / para.input.mdp.md_dt; + } + }; + read_sync_double(input.mdp.md_tfreq); + this->add_item(item); + } + { + Input_Item item("md_tchain"); + item.annotation = "number of Nose-Hoover chains"; + item.category = "Molecular dynamics"; + item.type = "Integer"; + item.description = "Number of thermostats coupled with the particles in the NVT/NPT ensemble based on the Nose-Hoover style non-Hamiltonian equations of motion."; + item.default_value = "1"; + item.unit = ""; + item.availability = ""; + read_sync_int(input.mdp.md_tchain); + this->add_item(item); + } + { + Input_Item item("md_pmode"); + item.annotation = "NPT ensemble mode: iso, aniso, tri"; + item.category = "Molecular dynamics"; + item.type = "String"; + item.description = R"(Determine the precision level of variable-cell molecular dynamics calculations. +* 0: FFT grids do not change, only G vectors and K vectors are changed due to the change of lattice vector. This level is suitable for cases where the variation of the volume and shape is not large, and the efficiency is relatively higher. +* 2: FFT grids change per step. This level is suitable for cases where the variation of the volume and shape is large, such as the MSST method. However, accuracy comes at the cost of efficiency.)"; + item.default_value = "iso"; + item.unit = ""; + item.availability = ""; + read_sync_string(input.mdp.md_pmode); + this->add_item(item); + } + { + Input_Item item("ref_cell_factor"); + item.annotation = "construct a reference cell bigger than the initial cell"; + item.category = "Molecular dynamics"; + item.type = "Real"; + item.description = "Construct a reference cell bigger than the initial cell. The reference cell has to be large enough so that the lattice vectors of the fluctuating cell do not exceed the reference lattice vectors during MD. Typically, 1.02 ~ 1.10 is sufficient. However, the cell fluctuations depend on the specific system and thermodynamic conditions. So users must test for a proper choice. This parameters should be used in conjunction with erf_ecut, erf_height, and erf_sigma."; + item.default_value = "1.0"; + item.unit = ""; + item.availability = ""; + read_sync_double(input.ref_cell_factor); + this->add_item(item); + } + { + Input_Item item("md_pcouple"); + item.annotation = "whether couple different components: xyz, xy, yz, xz, none"; + item.category = "Molecular dynamics"; + item.type = "String"; + item.description = R"(The coupled lattice vectors will scale proportionally in NPT ensemble based on the Nose-Hoover style non-Hamiltonian equations of motion. +* none: Three lattice vectors scale independently. +* xyz: Lattice vectors x, y, and z scale proportionally. +* xy: Lattice vectors x and y scale proportionally. +* xz: Lattice vectors x and z scale proportionally. +* yz: Lattice vectors y and z scale proportionally.)"; + item.default_value = "none"; + item.unit = ""; + item.availability = ""; + item.reset_value = [](const Input_Item& item, Parameter& para) { + if (para.mdp.md_pmode == "iso") + { + para.input.mdp.md_pcouple = "xyz"; + } + }; + read_sync_string(input.mdp.md_pcouple); + this->add_item(item); + } + { + Input_Item item("md_pfirst"); + item.annotation = "initial target pressure"; + item.category = "Molecular dynamics"; + item.type = "Real"; + item.description = "The target pressure used in NPT ensemble simulations, the default value of md_plast is md_pfirst. If md_plast is set to be different from md_pfirst, ABACUS will automatically change the target pressure from md_pfirst to md_plast."; + item.default_value = "-1.0"; + item.unit = "kbar"; + item.availability = ""; + read_sync_double(input.mdp.md_pfirst); + this->add_item(item); + } + { + Input_Item item("md_plast"); + item.annotation = "final target pressure"; + item.category = "Molecular dynamics"; + item.type = "Real"; + item.description = "The target pressure used in NPT ensemble simulations, the default value of md_plast is md_pfirst. If md_plast is set to be different from md_pfirst, ABACUS will automatically change the target pressure from md_pfirst to md_plast."; + item.default_value = "-1.0"; + item.unit = "kbar"; + item.availability = ""; + item.reset_value = [](const Input_Item& item, Parameter& para) { + if (!item.is_read()) { // no md_plast in INPUT + para.input.mdp.md_plast = para.input.mdp.md_pfirst; +} + }; + read_sync_double(input.mdp.md_plast); + this->add_item(item); + } + { + Input_Item item("md_pfreq"); + item.annotation = "oscillation frequency, used to determine qmass of " + "thermostats coupled with barostat"; + item.category = "Molecular dynamics"; + item.type = "Real"; + item.description = R"(The frequency of pressure oscillations during the NPT ensemble simulation. If it is too large, the pressure will fluctuate violently; if it is too small, the pressure will take a very long time to equilibrate with the atomic system. + +Note: It is a system-dependent empirical parameter. An improper choice might lead to the failure of jobs.)"; + item.default_value = "1/400/md_dt"; + item.unit = ""; + item.availability = ""; + item.reset_value = [](const Input_Item& item, Parameter& para) { + if (para.input.mdp.md_pfreq == 0 && para.input.calculation == "md") + { + para.input.mdp.md_pfreq = 1.0 / 400 / para.input.mdp.md_dt; + } + }; + read_sync_double(input.mdp.md_pfreq); + this->add_item(item); + } + { + Input_Item item("md_pchain"); + item.annotation = "num of thermostats coupled with barostat"; + item.category = "Molecular dynamics"; + item.type = "Integer"; + item.description = "The number of thermostats coupled with the barostat in the NPT ensemble based on the Nose-Hoover style non-Hamiltonian equations of motion."; + item.default_value = "1"; + item.unit = ""; + item.availability = ""; + read_sync_int(input.mdp.md_pchain); + this->add_item(item); + } + { + Input_Item item("lj_rule"); + item.annotation = "combination rules used to construct the parameter matrix for LJ potential"; + item.category = "Molecular dynamics"; + item.type = "Integer"; + item.description = "The Lennard-Jones potential between two atoms equals: $\\sigma_k\\sigma(i,j)$"; + item.default_value = "2"; + item.unit = ""; + item.availability = ""; + item.check_value = [](const Input_Item& item, const Parameter& para) { + if (para.input.esolver_type == "lj" && para.input.mdp.lj_rule != 1 && para.input.mdp.lj_rule != 2) + { + ModuleBase::WARNING_QUIT("ReadInput", "lj_rule must be 1 or 2"); + } + }; + read_sync_int(input.mdp.lj_rule); + this->add_item(item); + } + { + Input_Item item("lj_eshift"); + item.annotation = "whether to use energy shift for LJ potential"; + item.category = "Molecular dynamics"; + item.type = "Boolean"; + item.description = "It True, the LJ potential is shifted by a constant such that it is zero at the cut-off distance."; + item.default_value = "False"; + item.unit = ""; + item.availability = ""; + read_sync_bool(input.mdp.lj_eshift); + this->add_item(item); + } + { + Input_Item item("lj_rcut"); + item.annotation = "cutoff radius of LJ potential"; + item.category = "Molecular dynamics"; + item.type = "Real"; + item.description = "Cut-off radius for Leonard Jones potential, beyond which the interaction will be neglected. It can be a single value, which means that all pairs of atoms types share the same cut-off radius. Otherwise, it should be a multiple-component vector, containing values, see details in lj_rule."; + item.default_value = "No default"; + item.unit = "Angstrom"; + item.availability = ""; + item.read_value = [](const Input_Item& item, Parameter& para) { + size_t count = item.get_size(); + para.input.mdp.lj_rcut.resize(count); + std::transform(begin(item.str_values), + end(item.str_values), + begin(para.input.mdp.lj_rcut), + [](std::string str) { return std::stod(str); }); + }; + item.check_value = [](const Input_Item& item, const Parameter& para) { + if (!item.is_read()) { + return; +} + size_t n_ljrcut = para.input.mdp.lj_rcut.size(); + if (n_ljrcut != 1 && n_ljrcut != para.input.ntype * (para.input.ntype + 1) / 2) + { + ModuleBase::WARNING_QUIT("ReadInput", " the number of lj_rcut should be 1 or ntype(ntype+1)/2 "); + } + for (auto rcut: para.input.mdp.lj_rcut) + { + if (rcut <= 0) + { + ModuleBase::WARNING_QUIT("ReadInput", "lj_rcut must > 0"); + } + } + }; + sync_doublevec(input.mdp.lj_rcut, para.input.mdp.lj_rcut.size(), 0.0); + this->add_item(item); + } + { + Input_Item item("lj_epsilon"); + item.annotation = "the value of epsilon for LJ potential"; + item.category = "Molecular dynamics"; + item.type = "Real"; + item.description = "The vector representing the matrix for Leonard Jones potential. See details in lj_rule."; + item.default_value = "No default"; + item.unit = "eV"; + item.availability = ""; + item.read_value = [](const Input_Item& item, Parameter& para) { + size_t count = item.get_size(); + para.input.mdp.lj_epsilon.resize(count); + std::transform(begin(item.str_values), + end(item.str_values), + begin(para.input.mdp.lj_epsilon), + [](std::string str) { return std::stod(str); }); + }; + item.check_value = [](const Input_Item& item, const Parameter& para) { + if (!item.is_read()) { + return; +} + size_t n_ljepsilon = para.input.mdp.lj_epsilon.size(); + if (n_ljepsilon != para.input.ntype && n_ljepsilon != para.input.ntype * (para.input.ntype + 1) / 2) + { + ModuleBase::WARNING_QUIT("ReadInput", " the number of lj_epsilon should be ntype or ntype(ntype+1)/2 "); + } + }; + sync_doublevec(input.mdp.lj_epsilon, para.input.mdp.lj_epsilon.size(), 0.0); + this->add_item(item); + } + { + Input_Item item("lj_sigma"); + item.annotation = "the value of sigma for LJ potential"; + item.category = "Molecular dynamics"; + item.type = "Real"; + item.description = "The vector representing the matrix for Leonard Jones potential. See details in lj_rule."; + item.default_value = "No default"; + item.unit = "Angstrom"; + item.availability = ""; + item.read_value = [](const Input_Item& item, Parameter& para) { + size_t count = item.get_size(); + para.input.mdp.lj_sigma.resize(count); + std::transform(begin(item.str_values), + end(item.str_values), + begin(para.input.mdp.lj_sigma), + [](std::string str) { return std::stod(str); }); + }; + item.check_value = [](const Input_Item& item, const Parameter& para) { + if (!item.is_read()) { + return; +} + size_t n_ljsigma = para.input.mdp.lj_sigma.size(); + if (n_ljsigma != para.input.ntype && n_ljsigma != para.input.ntype * (para.input.ntype + 1) / 2) + { + ModuleBase::WARNING_QUIT("ReadInput", " the number of lj_sigma should be ntype or ntype(ntype+1)/2 "); + } + }; + sync_doublevec(input.mdp.lj_sigma, para.input.mdp.lj_sigma.size(), 0.0); + this->add_item(item); + } + { + Input_Item item("pot_file"); + item.annotation = "the filename of potential files for CMD such as DP"; + item.category = "Molecular dynamics"; + item.type = "String"; + item.description = "The filename of DP/NEP potential files, see md.md in detail."; + item.default_value = "graph.pb"; + item.unit = ""; + item.availability = ""; + read_sync_string(input.mdp.pot_file); + this->add_item(item); + } + { + Input_Item item("dp_rescaling"); + item.annotation = "rescaling factor for dp potential"; + item.category = "Molecular dynamics"; + item.type = "Real"; + item.description = "Rescaling factor to use a temperature-dependent DP. Energy, stress and force calculated by DP will be multiplied by this factor."; + item.default_value = "1.0"; + item.unit = ""; + item.availability = "esolver_type = dp."; + read_sync_double(input.mdp.dp_rescaling); + this->add_item(item); + } + { + Input_Item item("dp_fparam"); + item.annotation = "the frame parameter for dp potential"; + item.category = "Molecular dynamics"; + item.type = "Real"; + item.description = "The frame parameter for dp potential. The array size is dim_fparam, then all frames are assumed to be provided with the same fparam."; + item.default_value = "{}"; + item.unit = ""; + item.availability = "esolver_type = dp."; + item.read_value = [](const Input_Item& item, Parameter& para) { + size_t count = item.get_size(); + para.input.mdp.dp_fparam.resize(count); + std::transform(begin(item.str_values), + end(item.str_values), + begin(para.input.mdp.dp_fparam), + [](std::string str) { return std::stod(str); }); + }; + sync_doublevec(input.mdp.dp_fparam, para.input.mdp.dp_fparam.size(), 0.0); + this->add_item(item); + } + { + Input_Item item("dp_aparam"); + item.annotation = "the atomic parameter for dp potential"; + item.category = "Molecular dynamics"; + item.type = "Real"; + item.description = "The atomic parameter for dp potential. The array size can be (1) natoms x dim_aparam, then all frames are assumed to be provided with the same aparam; (2) dim_aparam, then all frames and atoms are assumed to be provided with the same aparam."; + item.default_value = "{}"; + item.unit = ""; + item.availability = "esolver_type = dp."; + item.read_value = [](const Input_Item& item, Parameter& para) { + size_t count = item.get_size(); + para.input.mdp.dp_aparam.resize(count); + std::transform(begin(item.str_values), + end(item.str_values), + begin(para.input.mdp.dp_aparam), + [](std::string str) { return std::stod(str); }); + }; + sync_doublevec(input.mdp.dp_aparam, para.input.mdp.dp_aparam.size(), 0.0); + this->add_item(item); + } + { + Input_Item item("msst_direction"); + item.annotation = "the direction of shock wave"; + item.category = "Molecular dynamics"; + item.type = "Integer"; + item.description = R"(The direction of the shock wave in the MSST method. +* 0: x direction +* 1: y direction +* 2: z direction)"; + item.default_value = "2"; + item.unit = ""; + item.availability = ""; + read_sync_int(input.mdp.msst_direction); + this->add_item(item); + } + { + Input_Item item("msst_vel"); + item.annotation = "the velocity of shock wave"; + item.category = "Molecular dynamics"; + item.type = "Real"; + item.description = "The velocity of the shock wave in the MSST method."; + item.default_value = "0.0"; + item.unit = "Angstrom/fs"; + item.availability = ""; + read_sync_double(input.mdp.msst_vel); + this->add_item(item); + } + { + Input_Item item("msst_vis"); + item.annotation = "artificial viscosity"; + item.category = "Molecular dynamics"; + item.type = "Real"; + item.description = "Artificial viscosity in the MSST method."; + item.default_value = "0.0"; + item.unit = "g/(mol*Angstrom*fs)"; + item.availability = ""; + read_sync_double(input.mdp.msst_vis); + this->add_item(item); + } + { + Input_Item item("msst_tscale"); + item.annotation = "reduction in initial temperature"; + item.category = "Molecular dynamics"; + item.type = "Real"; + item.description = "The reduction percentage of the initial temperature used to compress volume in the MSST method."; + item.default_value = "0.01"; + item.unit = ""; + item.availability = ""; + read_sync_double(input.mdp.msst_tscale); + this->add_item(item); + } + { + Input_Item item("msst_qmass"); + item.annotation = "mass of thermostat"; + item.category = "Molecular dynamics"; + item.type = "Real"; + item.description = "Inertia of the extended system variable. You should set a number larger than 0."; + item.default_value = "No default"; + item.unit = ""; + item.availability = ""; + item.check_value = [](const Input_Item& item, const Parameter& para) { + if (para.input.mdp.msst_qmass <= 0) + { + ModuleBase::WARNING_QUIT("ReadInput", "msst_qmass must be greater than 0!"); + } + }; + read_sync_double(input.mdp.msst_qmass); + this->add_item(item); + } + { + Input_Item item("md_damp"); + item.annotation = "damping parameter (time units) used to add force in " + "Langevin method"; + item.category = "Molecular dynamics"; + item.type = "Real"; + item.description = "The damping parameter used to add fictitious force in the Langevin method."; + item.default_value = "1.0"; + item.unit = "fs"; + item.availability = ""; + read_sync_double(input.mdp.md_damp); + this->add_item(item); + } + { + Input_Item item("md_tolerance"); + item.annotation = "tolerance for velocity rescaling (K)"; + item.category = "Molecular dynamics"; + item.type = "Real"; + item.description = "The temperature tolerance for velocity rescaling. Velocities are rescaled if the current and target temperature differ more than md_tolerance."; + item.default_value = "100.0"; + item.unit = "K"; + item.availability = ""; + read_sync_double(input.mdp.md_tolerance); + this->add_item(item); + } + { + Input_Item item("md_nraise"); + item.annotation = "parameters used when md_type=nvt"; + item.category = "Molecular dynamics"; + item.type = "Integer"; + item.description = R"(* Anderson: The "collision frequency" parameter is given as 1/md_nraise. +* Berendsen: The "rise time" parameter is given in units of the time step: tau = md_nraise*md_dt, so md_dt/tau = 1/md_nraise. +* Rescale_v: Every md_nraise steps the current temperature is rescaled to the target temperature.)"; + item.default_value = "1"; + item.unit = ""; + item.availability = ""; + read_sync_int(input.mdp.md_nraise); + this->add_item(item); + } + { + Input_Item item("cal_syns"); + item.annotation = "calculate asynchronous overlap matrix to output for Hefei-NAMD"; + item.category = "Molecular dynamics"; + item.type = "Boolean"; + item.description = "Whether to calculate and output asynchronous overlap matrix for Hefei-NAMD interface. When enabled, calculates by computing overlap between basis functions at atomic positions from previous time step and current time step. The overlap is calculated by shifting atom positions backward by velocity x md_dt. Output file: OUT.*/syns_nao.csr in CSR format." + "\n\n[NOTE] Only works with LCAO basis and molecular dynamics calculations. " + "Requires atomic velocities. Output starts from the second MD step (istep > 0)."; + item.default_value = "False"; + item.unit = ""; + item.availability = ""; + read_sync_bool(input.cal_syns); + this->add_item(item); + } + { + Input_Item item("dmax"); + item.annotation = "maximum displacement of all atoms in one step (bohr)"; + item.category = "Molecular dynamics"; + item.type = "Real"; + item.description = "The maximum displacement of all atoms in one step. This parameter is useful when cal_syns = True."; + item.default_value = "0.01"; + item.unit = "bohr"; + item.availability = ""; + read_sync_double(input.dmax); + this->add_item(item); + } +} +} // namespace ModuleIO diff --git a/source/source_io/module_parameter/read_input_item_model.cpp b/source/source_io/module_parameter/read_input_item_model.cpp new file mode 100644 index 0000000000..e6c69139d9 --- /dev/null +++ b/source/source_io/module_parameter/read_input_item_model.cpp @@ -0,0 +1,623 @@ +#include "source_base/global_function.h" +#include "source_base/tool_quit.h" +#include "read_input.h" +#include "read_input_tool.h" +namespace ModuleIO +{ +void ReadInput::item_model() +{ + // NOTE: The order of add_item() calls below determines the parameter order + // in the generated documentation (docs/advanced/input_files/input-main.md). + // Please preserve this ordering when adding new parameters. + // Electric field and dipole correction + { + Input_Item item("efield_flag"); + item.annotation = "add electric field"; + item.category = "Electric field and dipole correction"; + item.type = "Boolean"; + item.description = R"(Added the electric field. +* True: A saw-like potential simulating an electric field is added to the bare ionic potential. +* False: Not added the electric field.)"; + item.default_value = "False"; + item.unit = ""; + item.availability = ""; + read_sync_bool(input.efield_flag); + this->add_item(item); + } + { + Input_Item item("dip_cor_flag"); + item.annotation = "dipole correction"; + item.category = "Electric field and dipole correction"; + item.type = "Boolean"; + item.description = R"(Added a dipole correction to the bare ionic potential. +* True: A dipole correction is also added to the bare ionic potential. +* False: A dipole correction is not added to the bare ionic potential. + +[NOTE] Note: If you do not want any electric field, the parameter efield_amp should be set to zero. This should ONLY be used in a slab geometry for surface calculations, with the discontinuity FALLING IN THE EMPTY SPACE.)"; + item.default_value = "False"; + item.unit = ""; + item.availability = "With dip_cor_flag = True and efield_flag = True."; + item.check_value = [](const Input_Item& item, const Parameter& para) { + if (para.input.dip_cor_flag && !para.input.efield_flag) + { + ModuleBase::WARNING_QUIT("ReadInput", "dipole correction is not active if efield_flag=false !"); + } + }; + read_sync_bool(input.dip_cor_flag); + this->add_item(item); + } + { + Input_Item item("efield_dir"); + item.annotation = "the direction of the electric field or dipole correction"; + item.category = "Electric field and dipole correction"; + item.type = "Integer"; + item.description = R"(The direction of the electric field or dipole correction is parallel to the reciprocal lattice vector, so the potential is constant in planes defined by FFT grid points, efield_dir can set to 0, 1 or 2. +* 0: parallel to the first reciprocal lattice vector +* 1: parallel to the second reciprocal lattice vector +* 2: parallel to the third reciprocal lattice vector)"; + item.default_value = "2"; + item.unit = ""; + item.availability = "with efield_flag = True."; + item.check_value = [](const Input_Item& item, const Parameter& para) { + if (para.input.gate_flag && para.input.efield_flag && !para.input.dip_cor_flag) + { + ModuleBase::WARNING_QUIT("ReadInput", + "gate field cannot be used with " + "efield if dip_cor_flag=false !"); + } + }; + read_sync_int(input.efield_dir); + this->add_item(item); + } + { + Input_Item item("efield_pos_max"); + item.annotation = "position of the maximum of the saw-like potential " + "along crystal axis efield_dir"; + item.category = "Electric field and dipole correction"; + item.type = "Real"; + item.description = "Position of the maximum of the saw-like potential along crystal axis efield_dir, within the unit cell, 0 <= efield_pos_max < 1."; + item.default_value = "Autoset to center of vacuum - width of vacuum / 20"; + item.unit = ""; + item.availability = "with efield_flag = True."; + read_sync_double(input.efield_pos_max); + this->add_item(item); + } + { + Input_Item item("efield_pos_dec"); + item.annotation = "zone in the unit cell where the saw-like potential decreases"; + item.category = "Electric field and dipole correction"; + item.type = "Real"; + item.description = "Zone in the unit cell where the saw-like potential decreases, 0 < efield_pos_dec < 1."; + item.default_value = "Autoset to width of vacuum / 10"; + item.unit = ""; + item.availability = "with efield_flag = True."; + read_sync_double(input.efield_pos_dec); + this->add_item(item); + } + { + Input_Item item("efield_amp"); + item.annotation = "amplitude of the electric field"; + item.category = "Electric field and dipole correction"; + item.type = "Real"; + item.description = R"(Amplitude of the electric field. The saw-like potential increases with slope efield_amp in the region from efield_pos_max+efield_pos_dec-1) to (efield_pos_max), then decreases until (efield_pos_max+efield_pos_dec), in units of the crystal vector efield_dir. + +[NOTE] Note: The change of slope of this potential must be located in the empty region, or else unphysical forces will result.)"; + item.default_value = "0.0"; + item.unit = "a.u., 1 a.u. = 51.4220632*10^10 V/m."; + item.availability = "with efield_flag = True."; + read_sync_double(input.efield_amp); + this->add_item(item); + } + + // Gate field + { + Input_Item item("gate_flag"); + item.annotation = "compensating charge or not"; + item.category = "Gate field (compensating charge)"; + item.type = "Boolean"; + item.description = R"(Controls the addition of compensating charge by a charged plate for charged cells. +* true: A charged plate is placed at the zgate position to add compensating charge. The direction is determined by efield_dir. +* false: No compensating charge is added.)"; + item.default_value = "false"; + item.unit = ""; + item.availability = ""; + read_sync_bool(input.gate_flag); + this->add_item(item); + } + { + Input_Item item("zgate"); + item.annotation = "position of charged plate"; + item.category = "Gate field (compensating charge)"; + item.type = "Real"; + item.description = "Position of the charged plate in the unit cell"; + item.default_value = "0.5"; + item.unit = "Unit cell size"; + item.availability = ""; + read_sync_double(input.zgate); + this->add_item(item); + } + + { + Input_Item item("block"); + item.annotation = "add a block potential or not"; + item.category = "Gate field (compensating charge)"; + item.type = "Boolean"; + item.description = R"(Controls the addition of a potential barrier to prevent electron spillover. +* true: A potential barrier is added from block_down to block_up with a height of block_height. If dip_cor_flag is set to true, efield_pos_dec is used to smoothly increase and decrease the potential barrier. +* false: No potential barrier is added.)"; + item.default_value = "false"; + item.unit = ""; + item.availability = ""; + read_sync_bool(input.block); + this->add_item(item); + } + { + Input_Item item("block_down"); + item.annotation = "low bound of the block"; + item.category = "Gate field (compensating charge)"; + item.type = "Real"; + item.description = "Lower beginning of the potential barrier"; + item.default_value = "0.45"; + item.unit = "Unit cell size"; + item.availability = ""; + read_sync_double(input.block_down); + this->add_item(item); + } + { + Input_Item item("block_up"); + item.annotation = "high bound of the block"; + item.category = "Gate field (compensating charge)"; + item.type = "Real"; + item.description = "Upper beginning of the potential barrier"; + item.default_value = "0.55"; + item.unit = "Unit cell size"; + item.availability = ""; + read_sync_double(input.block_up); + this->add_item(item); + } + { + Input_Item item("block_height"); + item.annotation = "height of the block"; + item.category = "Gate field (compensating charge)"; + item.type = "Real"; + item.description = "Height of the potential barrier"; + item.default_value = "0.1"; + item.unit = "Rydberg"; + item.availability = ""; + read_sync_double(input.block_height); + this->add_item(item); + } + + // imlicit_solvation + { + Input_Item item("imp_sol"); + item.annotation = "calculate implicit solvation correction or not"; + item.category = "Implicit solvation model"; + item.type = "Boolean"; + item.description = "Calculate implicit solvation correction"; + item.default_value = "False"; + item.unit = ""; + item.availability = ""; + read_sync_bool(input.imp_sol); + this->add_item(item); + } + { + Input_Item item("eb_k"); + item.annotation = "the relative permittivity of the bulk solvent"; + item.category = "Implicit solvation model"; + item.type = "Real"; + item.description = "The relative permittivity of the bulk solvent, 80 for water"; + item.default_value = "80"; + item.unit = ""; + item.availability = "imp_sol is true."; + read_sync_double(input.eb_k); + this->add_item(item); + } + { + Input_Item item("tau"); + item.annotation = "the effective surface tension parameter"; + item.category = "Implicit solvation model"; + item.type = "Real"; + item.description = "The effective surface tension parameter that describes the cavitation, the dispersion, and the repulsion interaction between the solute and the solvent which are not captured by the electrostatic terms"; + item.default_value = "1.0798e-05"; + item.unit = ""; + item.availability = ""; + read_sync_double(input.tau); + this->add_item(item); + } + { + Input_Item item("sigma_k"); + item.annotation = "the width of the diffuse cavity"; + item.category = "Implicit solvation model"; + item.type = "Real"; + item.description = "The width of the diffuse cavity that is implicitly determined by the electronic structure of the solute"; + item.default_value = "0.6"; + item.unit = ""; + item.availability = ""; + read_sync_double(input.sigma_k); + this->add_item(item); + } + { + Input_Item item("nc_k"); + item.annotation = "the cut-off charge density"; + item.category = "Implicit solvation model"; + item.type = "Real"; + item.description = "The value of the electron density at which the dielectric cavity forms"; + item.default_value = "0.00037"; + item.unit = ""; + item.availability = ""; + read_sync_double(input.nc_k); + this->add_item(item); + } + + // vdW Correction + { + Input_Item item("vdw_method"); + item.annotation = "the method of calculating vdw (none ; d2 ; d3_0 ; d3_bj"; + item.category = "vdW correction"; + item.type = "String"; + item.description = R"(Specifies the method used for Van der Waals (VdW) correction. Available options are: +* d2: Grimme's D2 dispersion correction method +* d3_0: Grimme's DFT-D3(0) dispersion correction method (zero-damping) +* d3_bj: Grimme's DFTD3(BJ) dispersion correction method (BJ-damping) +* none: no vdW correction + +[NOTE] ABACUS supports automatic setting of DFT-D3 parameters for common functionals. To benefit from this feature, please specify the parameter dft_functional explicitly, otherwise the autoset procedure will crash. If not satisfied with the built-in parameters, any manual setting on vdw_s6, vdw_s8, vdw_a1 and vdw_a2 will overwrite the automatic values.)"; + item.default_value = "none"; + item.unit = ""; + item.availability = ""; + read_sync_string(input.vdw_method); + this->add_item(item); + } + { + Input_Item item("vdw_s6"); + item.annotation = "scale parameter of d2/d3_0/d3_bj"; + item.category = "vdW correction"; + item.type = "String"; + item.description = "This scale factor is used to optimize the interaction energy deviations in van der Waals (vdW) corrected calculations. The recommended values of this parameter are dependent on the chosen vdW correction method and the DFT functional being used. For DFT-D2, the recommended values are 0.75 (PBE), 1.2 (BLYP), 1.05 (B-P86), 1.0 (TPSS), and 1.05 (B3LYP). If not set, will use values of PBE functional. For DFT-D3, recommended values with different DFT functionals can be found on the here. If not set, will search in ABACUS built-in dataset based on the dft_functional keywords. User set value will overwrite the searched value."; + item.default_value = ""; + item.unit = ""; + item.availability = "vdw_method is set to d2, d3_0, or d3_bj"; + item.reset_value = [](const Input_Item& item, Parameter& para) { + if (para.input.vdw_s6 == "default") + { + if (para.input.vdw_method == "d2") + { + para.input.vdw_s6 = "0.75"; + } + // else if (para.input.vdw_method == "d3_0" || para.input.vdw_method == "d3_bj") + // { + // para.input.vdw_s6 = "1.0"; + // } + } + }; + read_sync_string(input.vdw_s6); + this->add_item(item); + } + { + Input_Item item("vdw_s8"); + item.annotation = "scale parameter of d3_0/d3_bj"; + item.category = "vdW correction"; + item.type = "String"; + item.description = "This scale factor is relevant for D3(0) and D3(BJ) van der Waals (vdW) correction methods. The recommended values of this parameter with different DFT functionals can be found on the webpage. If not set, will search in ABACUS built-in dataset based on the dft_functional keywords. User set value will overwrite the searched value."; + item.default_value = ""; + item.unit = ""; + item.availability = "vdw_method is set to d3_0 or d3_bj"; + item.reset_value = [](const Input_Item& item, Parameter& para) { + // if (para.input.vdw_s8 == "default") + // { + // if (para.input.vdw_method == "d3_0") + // { + // para.input.vdw_s8 = "0.722"; + // } + // else if (para.input.vdw_method == "d3_bj") + // { + // para.input.vdw_s8 = "0.7875"; + // } + // } + }; + read_sync_string(input.vdw_s8); + this->add_item(item); + } + { + Input_Item item("vdw_a1"); + item.annotation = "damping parameter of d3_0/d3_bj"; + item.category = "vdW correction"; + item.type = "String"; + item.description = "This damping function parameter is relevant for D3(0) and D3(BJ) van der Waals (vdW) correction methods. The recommended values of this parameter with different DFT functionals can be found on the webpage. If not set, will search in ABACUS built-in dataset based on the dft_functional keywords. User set value will overwrite the searched value."; + item.default_value = ""; + item.unit = ""; + item.availability = "vdw_method is set to d3_0 or d3_bj"; + item.reset_value = [](const Input_Item& item, Parameter& para) { + // if (para.input.vdw_a1 == "default") + // { + // if (para.input.vdw_method == "d3_0") + // { + // para.input.vdw_a1 = "1.217"; + // } + // else if (para.input.vdw_method == "d3_bj") + // { + // para.input.vdw_a1 = "0.4289"; + // } + // } + }; + read_sync_string(input.vdw_a1); + this->add_item(item); + } + { + Input_Item item("vdw_a2"); + item.annotation = "damping parameter of d3_bj"; + item.category = "vdW correction"; + item.type = "String"; + item.description = "This damping function parameter is only relevant for D3(0) and D3(BJ) van der Waals (vdW) correction methods. The recommended values of this parameter with different DFT functionals can be found on the webpage. If not set, will search in ABACUS built-in dataset based on the dft_functional keywords. User set value will overwrite the searched value."; + item.default_value = ""; + item.unit = ""; + item.availability = "vdw_method is set to d3_0 or d3_bj"; + item.reset_value = [](const Input_Item& item, Parameter& para) { + // if (para.input.vdw_a2 == "default") + // { + // if (para.input.vdw_method == "d3_0") + // { + // para.input.vdw_a2 = "1.0"; + // } + // else if (para.input.vdw_method == "d3_bj") + // { + // para.input.vdw_a2 = "4.4407"; + // } + // } + }; + read_sync_string(input.vdw_a2); + this->add_item(item); + } + { + Input_Item item("vdw_d"); + item.annotation = "damping parameter of d2"; + item.category = "vdW correction"; + item.type = "Real"; + item.description = "Controls the damping rate of the damping function in the DFT-D2 method."; + item.default_value = "20"; + item.unit = ""; + item.availability = "vdw_method is set to d2"; + read_sync_double(input.vdw_d); + this->add_item(item); + } + { + Input_Item item("vdw_abc"); + item.annotation = "third-order term?"; + item.category = "vdW correction"; + item.type = "Boolean"; + item.description = R"(Determines whether three-body terms are calculated for DFT-D3 methods. +* True: ABACUS will calculate the three-body term. +* False: The three-body term is not included.)"; + item.default_value = "False"; + item.unit = ""; + item.availability = "vdw_method is set to d3_0 or d3_bj"; + read_sync_bool(input.vdw_abc); + this->add_item(item); + } + { + Input_Item item("vdw_c6_file"); + item.annotation = "filename of C6"; + item.category = "vdW correction"; + item.type = "String"; + item.description = R"(Specifies the name of the file containing parameters for each element when using the D2 method. If not set, ABACUS uses the default parameters (Jnm6/mol) stored in the program. To manually set the parameters, provide a file containing the parameters. An example is given by: + +H 0.1 Si 9.0 + +Namely, each line contains the element name and the corresponding parameter.)"; + item.default_value = "default"; + item.unit = ""; + item.availability = "vdw_method is set to d2"; + read_sync_string(input.vdw_C6_file); + this->add_item(item); + } + { + Input_Item item("vdw_c6_unit"); + item.annotation = "unit of C6, Jnm6/mol or eVA6"; + item.category = "vdW correction"; + item.type = "String"; + item.description = R"(Specifies the unit of the provided parameters in the D2 method. Available options are: +* Jnm6/mol (J nm^6/mol) +* eVA (eV Angstrom))"; + item.default_value = "Jnm6/mol"; + item.unit = ""; + item.availability = "vdw_C6_file is not default"; + read_sync_string(input.vdw_C6_unit); + item.check_value = [](const Input_Item& item, const Parameter& para) { + if ((para.input.vdw_C6_unit != "Jnm6/mol") && (para.input.vdw_C6_unit != "eVA6")) + { + ModuleBase::WARNING_QUIT("ReadInput", "vdw_C6_unit must be Jnm6/mol or eVA6"); + } + }; + this->add_item(item); + } + { + Input_Item item("vdw_r0_file"); + item.annotation = "filename of R0"; + item.category = "vdW correction"; + item.type = "String"; + item.description = R"(Specifies the name of the file containing parameters for each element when using the D2 method. If not set, ABACUS uses the default parameters (Angstrom) stored in the program. To manually set the parameters, provide a file containing the parameters. An example is given by: + +Li 1.0 Cl 2.0 + +Namely, each line contains the element name and the corresponding parameter.)"; + item.default_value = "default"; + item.unit = ""; + item.availability = "vdw_method is set to d2"; + read_sync_string(input.vdw_R0_file); + this->add_item(item); + } + { + Input_Item item("vdw_r0_unit"); + item.annotation = "unit of R0, A or Bohr"; + item.category = "vdW correction"; + item.type = "String"; + item.description = R"(Specifies the unit for the parameters in the D2 method when manually set by the user. Available options are: +* A (Angstrom) +* Bohr)"; + item.default_value = "A"; + item.unit = ""; + item.availability = "vdw_R0_file is not default"; + read_sync_string(input.vdw_R0_unit); + item.check_value = [](const Input_Item& item, const Parameter& para) { + if ((para.input.vdw_R0_unit != "A") && (para.input.vdw_R0_unit != "Bohr")) + { + ModuleBase::WARNING_QUIT("ReadInput", "vdw_R0_unit must be A or Bohr"); + } + }; + this->add_item(item); + } + { + Input_Item item("vdw_cutoff_type"); + item.annotation = "expression model of periodic structure, radius or period"; + item.category = "vdW correction"; + item.type = "String"; + item.description = R"(Determines the method used for specifying the cutoff radius in periodic systems when applying Van der Waals correction. Available options are: +* radius: The supercell is selected within a sphere centered at the origin with a radius defined by vdw_cutoff_radius. +* period: The extent of the supercell is explicitly specified using the vdw_cutoff_period keyword.)"; + item.default_value = "radius"; + item.unit = ""; + item.availability = ""; + item.check_value = [](const Input_Item& item, const Parameter& para) { + if (para.input.vdw_cutoff_type != "radius" && para.input.vdw_cutoff_type != "period") + { + ModuleBase::WARNING_QUIT("ReadInput", "vdw_cutoff_type must be radius or period"); + } + }; + read_sync_string(input.vdw_cutoff_type); + this->add_item(item); + } + { + Input_Item item("vdw_cutoff_radius"); + item.annotation = "radius cutoff for periodic structure"; + item.category = "vdW correction"; + item.type = "String"; + item.description = "Defines the radius of the cutoff sphere when vdw_cutoff_type is set to radius. The default values depend on the chosen vdw_method."; + item.default_value = ""; + item.unit = "defined by vdw_radius_unit (default Bohr)"; + item.availability = "vdw_cutoff_type is set to radius"; + item.reset_value = [](const Input_Item& item, Parameter& para) { + if (para.input.vdw_cutoff_radius == "default") + { + if (para.input.vdw_method == "d2") + { + para.input.vdw_cutoff_radius = "56.6918"; + } + else if (para.input.vdw_method == "d3_0" || para.input.vdw_method == "d3_bj") + { + para.input.vdw_cutoff_radius = "95"; + } + else + { + para.input.vdw_cutoff_radius = "0"; + } + } + }; + item.check_value = [](const Input_Item& item, const Parameter& para) { + if (std::stod(para.input.vdw_cutoff_radius) <= 0 && para.input.vdw_method != "none") + { + ModuleBase::WARNING_QUIT("ReadInput", "vdw_cutoff_radius <= 0 is not allowd"); + } + }; + read_sync_string(input.vdw_cutoff_radius); + this->add_item(item); + } + { + Input_Item item("vdw_radius_unit"); + item.annotation = "unit of radius cutoff for periodic structure"; + item.category = "vdW correction"; + item.type = "String"; + item.description = R"(Specify the unit of vdw_cutoff_radius. Available options are: +* A(Angstrom) +* Bohr)"; + item.default_value = "Bohr"; + item.unit = ""; + item.availability = "vdw_cutoff_type is set to radius"; + read_sync_string(input.vdw_radius_unit); + item.check_value = [](const Input_Item& item, const Parameter& para) { + if ((para.input.vdw_radius_unit != "A") && (para.input.vdw_radius_unit != "Bohr")) + { + ModuleBase::WARNING_QUIT("ReadInput", "vdw_radius_unit must be A or Bohr"); + } + }; + this->add_item(item); + } + { + Input_Item item("vdw_cutoff_period"); + item.annotation = "periods of periodic structure"; + item.category = "vdW correction"; + item.type = "Integer Integer Integer"; + item.description = "The three integers supplied here explicitly specify the extent of the supercell in the directions of the three basis lattice vectors."; + item.default_value = "3 3 3"; + item.unit = ""; + item.availability = "vdw_cutoff_type is set to period"; + item.read_value = [](const Input_Item& item, Parameter& para) { + size_t count = item.get_size(); + if (count == 3) + { + para.input.vdw_cutoff_period[0] = std::stoi(item.str_values[0]); + para.input.vdw_cutoff_period[1] = std::stoi(item.str_values[1]); + para.input.vdw_cutoff_period[2] = std::stoi(item.str_values[2]); + } + else + { + ModuleBase::WARNING_QUIT("ReadInput", "vdw_cutoff_period should have 3 values"); + } + }; + item.check_value = [](const Input_Item& item, const Parameter& para) { + if (para.input.vdw_cutoff_period[0] <= 0 || para.input.vdw_cutoff_period[1] <= 0 + || para.input.vdw_cutoff_period[2] <= 0) + { + ModuleBase::WARNING_QUIT("ReadInput", "vdw_cutoff_period should be positive"); + } + }; + item.get_final_value = [](Input_Item& item, const Parameter& para) { + item.final_value << para.input.vdw_cutoff_period[0] << " " << para.input.vdw_cutoff_period[1] << " " + << para.input.vdw_cutoff_period[2]; + }; +#ifdef __MPI + bcastfuncs.push_back( + [](Parameter& para) { Parallel_Common::bcast_int((int*)¶.input.vdw_cutoff_period, 3); }); +#endif + this->add_item(item); + } + { + Input_Item item("vdw_cn_thr"); + item.annotation = "radius cutoff for cn"; + item.category = "vdW correction"; + item.type = "Real"; + item.description = "The cutoff radius when calculating coordination numbers."; + item.default_value = "40"; + item.unit = "defined by vdw_cn_thr_unit (default: Bohr)"; + item.availability = "vdw_method is set to d3_0 or d3_bj"; + read_sync_double(input.vdw_cn_thr); + item.check_value = [](const Input_Item& item, const Parameter& para) { + if (para.input.vdw_cn_thr <= 0) + { + ModuleBase::WARNING_QUIT("ReadInput", "vdw_cn_thr <= 0 is not allowd"); + } + }; + this->add_item(item); + } + { + Input_Item item("vdw_cn_thr_unit"); + item.annotation = "unit of cn_thr, Bohr or Angstrom"; + item.category = "vdW correction"; + item.type = "String"; + item.description = R"(Unit of the coordination number cutoff (vdw_cn_thr). Available options are: +* A(Angstrom) +* Bohr)"; + item.default_value = "Bohr"; + item.unit = ""; + item.availability = ""; + read_sync_string(input.vdw_cn_thr_unit); + item.check_value = [](const Input_Item& item, const Parameter& para) { + if ((para.input.vdw_cn_thr_unit != "A") && (para.input.vdw_cn_thr_unit != "Bohr")) + { + ModuleBase::WARNING_QUIT("ReadInput", "vdw_cn_thr_unit must be A or Bohr"); + } + }; + this->add_item(item); + } +} +} // namespace ModuleIO diff --git a/source/source_io/module_parameter/read_input_item_ofdft.cpp b/source/source_io/module_parameter/read_input_item_ofdft.cpp new file mode 100644 index 0000000000..8254a1f1b0 --- /dev/null +++ b/source/source_io/module_parameter/read_input_item_ofdft.cpp @@ -0,0 +1,809 @@ + +#include "source_base/global_function.h" +#include "source_base/tool_quit.h" +#include "read_input.h" +#include "read_input_tool.h" +namespace ModuleIO +{ +void ReadInput::item_ofdft() +{ + // NOTE: The order of add_item() calls below determines the parameter order + // in the generated documentation (docs/advanced/input_files/input-main.md). + // Please preserve this ordering when adding new parameters. + { + Input_Item item("of_kinetic"); + item.annotation = "kinetic energy functional, such as tf, vw, wt"; + item.category = "OFDFT: orbital free density functional theory"; + item.type = "String"; + item.description = R"(Kinetic energy functional type: +* tf: Thomas-Fermi (TF) functional +* vw: von Weizsacker (vW) functional +* tf+: TF + vW functional +* wt: Wang-Teter (WT) functional +* xwm: XWM functional +* lkt: Luo-Karasiev-Trickey (LKT) functional +* ml: Machine learning KEDF +* mpn: MPN KEDF (automatically sets ml parameters) +* cpn5: CPN5 KEDF (automatically sets ml parameters))"; + item.default_value = "wt"; + item.unit = ""; + item.availability = "OFDFT"; + item.check_value = [](const Input_Item& item, const Parameter& para) { +#ifndef __MLALGO + if (para.input.of_kinetic == "ml" || para.input.of_kinetic == "mpn" || para.input.of_kinetic == "cpn5") + { + ModuleBase::WARNING_QUIT("ReadInput", "Error: ML KEDF requires ENABLE_MLALGO option.\n " + "Please enable ENABLE_MLALGO during compilation to use this feature."); + } +#endif + if (para.input.of_kinetic != "tf" && para.input.of_kinetic != "vw" && para.input.of_kinetic != "wt" + && para.input.of_kinetic != "xwm" && para.input.of_kinetic != "lkt" && para.input.of_kinetic != "tf+" + && para.input.of_kinetic != "ml" && para.input.of_kinetic != "mpn" && para.input.of_kinetic != "cpn5") + { + ModuleBase::WARNING_QUIT("ReadInput", "of_kinetic must be tf, vw, tf+, wt, xwm, lkt, ml, mpn, or cpn5"); + } + }; + item.reset_value = [](const Input_Item& item, Parameter& para) { + // Set the default parameters for MPN or CPN5 KEDF + if (para.input.of_kinetic == "mpn") + { + para.input.of_kinetic = "ml"; + + para.input.of_ml_feg = 3; + para.input.of_ml_nkernel = 1; + para.input.of_ml_kernel = {1}; + para.input.of_ml_kernel_scaling = {1.0}; + para.input.of_ml_yukawa_alpha = {1.0}; + para.input.of_ml_gamma = false; + para.input.of_ml_p = false; + para.input.of_ml_q = false; + para.input.of_ml_tanhp = true; + para.input.of_ml_tanhq = false; + para.input.of_ml_chi_p = 0.2; + para.input.of_ml_chi_q = 0.1; + para.input.of_ml_gammanl = {0}; + para.input.of_ml_pnl = {0}; + para.input.of_ml_qnl = {0}; + para.input.of_ml_xi = {0}; + para.input.of_ml_tanhxi = {1}; + para.input.of_ml_tanhxi_nl = {1}; + para.input.of_ml_tanh_pnl = {0}; + para.input.of_ml_tanh_qnl = {0}; + para.input.of_ml_tanhp_nl = {1}; + para.input.of_ml_tanhq_nl = {0}; + para.input.of_ml_chi_xi = {1.0}; + para.input.of_ml_chi_pnl = {0.2}; + para.input.of_ml_chi_qnl = {0.1}; + } + + if (para.input.of_kinetic == "cpn5") + { + para.input.of_kinetic = "ml"; + + para.input.of_ml_feg = 3; + para.input.of_ml_nkernel = 5; + para.input.of_ml_kernel = {1, 1, 1, 1, 1}; + para.input.of_ml_kernel_scaling = {2.0, 1.5, 1.0, 0.75, 0.5}; + para.input.of_ml_yukawa_alpha = {1.0, 1.0, 1.0, 1.0, 1.0}; + para.input.of_ml_gamma = false; + para.input.of_ml_p = false; + para.input.of_ml_q = false; + para.input.of_ml_tanhp = true; + para.input.of_ml_tanhq = false; + para.input.of_ml_chi_p = 0.2; + para.input.of_ml_chi_q = 0.1; + para.input.of_ml_gammanl = {0, 0, 0, 0, 0}; + para.input.of_ml_pnl = {0, 0, 0, 0, 0}; + para.input.of_ml_qnl = {0, 0, 0, 0, 0}; + para.input.of_ml_xi = {0, 0, 0, 0, 0}; + para.input.of_ml_tanhxi = {1, 1, 1, 1, 1}; + para.input.of_ml_tanhxi_nl = {1, 1, 1, 1, 1}; + para.input.of_ml_tanh_pnl = {0, 0, 0, 0, 0}; + para.input.of_ml_tanh_qnl = {0, 0, 0, 0, 0}; + para.input.of_ml_tanhp_nl = {1, 1, 1, 1, 1}; + para.input.of_ml_tanhq_nl = {0, 0, 0, 0, 0}; + para.input.of_ml_chi_xi = {0.6, 0.8, 1.0, 1.5, 3.0}; + para.input.of_ml_chi_pnl = {0.2, 0.2, 0.2, 0.2, 0.2}; + para.input.of_ml_chi_qnl = {0.1, 0.1, 0.1, 0.1, 0.1}; + } + }; + read_sync_string(input.of_kinetic); + this->add_item(item); + } + { + Input_Item item("of_method"); + item.annotation = "optimization method used in OFDFT, including cg1, " + "cg2, tn (default)"; + item.category = "OFDFT: orbital free density functional theory"; + item.type = "String"; + item.description = R"(The optimization method used in OFDFT. +* cg1: Polak-Ribiere. Standard CG algorithm. +* cg2: Hager-Zhang (generally faster than cg1). +* tn: Truncated Newton algorithm.)"; + item.default_value = "tn"; + item.unit = ""; + item.availability = "OFDFT"; + read_sync_string(input.of_method); + this->add_item(item); + } + { + Input_Item item("of_conv"); + item.annotation = "the convergence criterion, potential, energy (default), or both"; + item.category = "OFDFT: orbital free density functional theory"; + item.type = "String"; + item.description = R"(Criterion used to check the convergence of OFDFT. +* energy: Total energy changes less than of_tole. +* potential: The norm of potential is less than of_tolp. +* both: Both energy and potential must satisfy the convergence criterion.)"; + item.default_value = "energy"; + item.unit = ""; + item.availability = "OFDFT"; + read_sync_string(input.of_conv); + this->add_item(item); + } + { + Input_Item item("of_tole"); + item.annotation = "tolerance of the energy change (in Ry) for " + "determining the convergence, default=2e-6 Ry"; + item.category = "OFDFT: orbital free density functional theory"; + item.type = "Real"; + item.description = "Tolerance of the energy change for determining the convergence."; + item.default_value = "2e-6"; + item.unit = "Ry"; + item.availability = "OFDFT"; + read_sync_double(input.of_tole); + this->add_item(item); + } + { + Input_Item item("of_tolp"); + item.annotation = "tolerance of potential for determining the " + "convergence, default=1e-5 in a.u."; + item.category = "OFDFT: orbital free density functional theory"; + item.type = "Real"; + item.description = "Tolerance of potential for determining the convergence."; + item.default_value = "1e-5"; + item.unit = "Ry"; + item.availability = "OFDFT"; + read_sync_double(input.of_tolp); + this->add_item(item); + } + { + Input_Item item("of_tf_weight"); + item.annotation = "weight of TF KEDF"; + item.category = "OFDFT: orbital free density functional theory"; + item.type = "Real"; + item.description = "Weight of TF KEDF (kinetic energy density functional)."; + item.default_value = "1.0"; + item.unit = ""; + item.availability = "OFDFT with of_kinetic=tf, tf+, wt, xwm"; + read_sync_double(input.of_tf_weight); + this->add_item(item); + } + { + Input_Item item("of_vw_weight"); + item.annotation = "weight of vW KEDF"; + item.category = "OFDFT: orbital free density functional theory"; + item.type = "Real"; + item.description = "Weight of vW KEDF (kinetic energy density functional)."; + item.default_value = "1.0"; + item.unit = ""; + item.availability = "OFDFT with of_kinetic=vw, tf+, wt, lkt, xwm"; + read_sync_double(input.of_vw_weight); + this->add_item(item); + } + { + Input_Item item("of_wt_alpha"); + item.annotation = "parameter alpha of WT KEDF"; + item.category = "OFDFT: orbital free density functional theory"; + item.type = "Real"; + item.description = "Parameter alpha of WT KEDF (kinetic energy density functional)."; + item.default_value = ""; + item.unit = ""; + item.availability = "OFDFT with of_kinetic=wt"; + read_sync_double(input.of_wt_alpha); + this->add_item(item); + } + { + Input_Item item("of_wt_beta"); + item.annotation = "parameter beta of WT KEDF"; + item.category = "OFDFT: orbital free density functional theory"; + item.type = "Real"; + item.description = "Parameter beta of WT KEDF (kinetic energy density functional)."; + item.default_value = ""; + item.unit = ""; + item.availability = "OFDFT with of_kinetic=wt"; + read_sync_double(input.of_wt_beta); + this->add_item(item); + } + { + Input_Item item("of_wt_rho0"); + item.annotation = "the average density of system, used in WT KEDF, in Bohr^-3"; + item.category = "OFDFT: orbital free density functional theory"; + item.type = "Real"; + item.description = "The average density of system."; + item.default_value = "0.0"; + item.unit = "Bohr^-3"; + item.availability = "OFDFT with of_kinetic=wt"; + read_sync_double(input.of_wt_rho0); + this->add_item(item); + } + { + Input_Item item("of_hold_rho0"); + item.annotation = "If set to 1, the rho0 will be fixed even if the " + "volume of system has changed, it will be " + "set to 1 automaticly if of_wt_rho0 is not zero"; + item.category = "OFDFT: orbital free density functional theory"; + item.type = "Boolean"; + item.description = R"(Whether to fix the average density rho0. +* True: rho0 will be fixed even if the volume of system has changed, it will be set to True automatically if of_wt_rho0 is not zero. +* False: rho0 will change if volume of system has changed.)"; + item.default_value = "False"; + item.unit = ""; + item.availability = "OFDFT with of_kinetic=wt"; + read_sync_bool(input.of_hold_rho0); + item.reset_value = [](const Input_Item& item, Parameter& para) { + if (para.input.of_wt_rho0 != 0) + { + para.input.of_hold_rho0 = true; // sunliang add 2022-06-17 + } + }; + this->add_item(item); + } + { + Input_Item item("of_lkt_a"); + item.annotation = "parameter a of LKT KEDF"; + item.category = "OFDFT: orbital free density functional theory"; + item.type = "Real"; + item.description = "Parameter a of LKT KEDF (kinetic energy density functional)."; + item.default_value = "1.3"; + item.unit = ""; + item.availability = "OFDFT with of_kinetic=lkt"; + read_sync_double(input.of_lkt_a); + this->add_item(item); + } + { + Input_Item item("of_xwm_rho_ref"); + item.annotation = "The reference density of XWM KEDF"; + item.category = "OFDFT: orbital free density functional theory"; + item.type = "Real"; + item.description = "Reference charge density for XWM kinetic energy functional. If set to 0, the program will use average charge density."; + item.default_value = "0.0"; + item.unit = ""; + item.availability = "OFDFT with of_kinetic=xwm"; + read_sync_double(input.of_xwm_rho_ref); + this->add_item(item); + } + { + Input_Item item("of_xwm_kappa"); + item.annotation = "The parameter kappa of XWM KEDF"; + item.category = "OFDFT: orbital free density functional theory"; + item.type = "Real"; + item.description = "Parameter for XWM kinetic energy functional. See PHYSICAL REVIEW B 100, 205132 (2019) for optimal values."; + item.default_value = "0.0"; + item.unit = ""; + item.availability = "OFDFT with of_kinetic=xwm"; + read_sync_double(input.of_xwm_kappa); + this->add_item(item); + } + { + Input_Item item("of_read_kernel"); + item.annotation = "If set to 1, the kernel of WT KEDF will be filled " + "from file of_kernel_file, not from " + "formula. Only usable for WT KEDF"; + item.category = "OFDFT: orbital free density functional theory"; + item.type = "Boolean"; + item.description = R"(Whether to read in the kernel file. +* True: The kernel of WT KEDF (kinetic energy density functional) will be filled from the file specified by of_kernel_file. +* False: The kernel of WT KEDF (kinetic energy density functional) will be filled from formula.)"; + item.default_value = "False"; + item.unit = ""; + item.availability = "OFDFT with of_kinetic=wt"; + read_sync_bool(input.of_read_kernel); + item.reset_value = [](const Input_Item& item, Parameter& para) { + if (para.input.of_kinetic != "wt") + { + para.input.of_read_kernel = false; // sunliang add 2022-09-12 + } + }; + this->add_item(item); + } + { + Input_Item item("of_kernel_file"); + item.annotation = "The name of WT kernel file."; + item.category = "OFDFT: orbital free density functional theory"; + item.type = "String"; + item.description = "The name of WT kernel file."; + item.default_value = "WTkernel.txt"; + item.unit = ""; + item.availability = "OFDFT with of_read_kernel=True"; + read_sync_string(input.of_kernel_file); + this->add_item(item); + } + { + Input_Item item("of_full_pw"); + item.annotation = "If set to 1, ecut will be ignored when collect " + "planewaves, so that all planewaves will be used"; + item.category = "OFDFT: orbital free density functional theory"; + item.type = "Boolean"; + item.description = R"(Whether to use full planewaves. +* True: Ecut will be ignored while collecting planewaves, so that all planewaves will be used in FFT. +* False: Only use the planewaves inside ecut, the same as KSDFT.)"; + item.default_value = "True"; + item.unit = ""; + item.availability = "OFDFT"; + read_sync_bool(input.of_full_pw); + this->add_item(item); + } + { + Input_Item item("of_full_pw_dim"); + item.annotation = "If of_full_pw = true, dimention of FFT is " + "testricted to be (0) either odd or even; (1) odd " + "only; (2) even only"; + item.category = "OFDFT: orbital free density functional theory"; + item.type = "Integer"; + item.description = R"(Specify the parity of FFT dimensions. +* 0: either odd or even. +* 1: odd only. +* 2: even only. + +Note: Even dimensions may cause slight errors in FFT. It should be ignorable in ofdft calculation, but it may make Cardinal B-spline interpolation unstable, so please set of_full_pw_dim = 1 if nbspline != -1.)"; + item.default_value = "0"; + item.unit = ""; + item.availability = "OFDFT with of_full_pw = True"; + read_sync_int(input.of_full_pw_dim); + item.reset_value = [](const Input_Item& item, Parameter& para) { + if (!para.input.of_full_pw) + { + para.input.of_full_pw_dim = 0; // sunliang add 2022-08-31 + } + }; + this->add_item(item); + } + { + Input_Item item("of_ml_gene_data"); + item.annotation = "Generate training data or not"; + item.category = "ML-KEDF: machine learning based kinetic energy density functional for OFDFT"; + item.type = "Boolean"; + item.description = "Controls the generation of machine learning training data. When enabled, training data in .npy format will be saved in the directory OUT.${suffix}/."; + item.default_value = "False"; + item.unit = ""; + item.availability = "Used only for KSDFT with plane wave basis"; + read_sync_bool(input.of_ml_gene_data); + this->add_item(item); + } + { + Input_Item item("of_ml_device"); + item.annotation = "Run NN on GPU or CPU"; + item.category = "ML-KEDF: machine learning based kinetic energy density functional for OFDFT"; + item.type = "String"; + item.description = R"(Run Neural Network on GPU or CPU. +* cpu: CPU +* gpu: GPU)"; + item.default_value = "cpu"; + item.unit = ""; + item.availability = "OFDFT"; + read_sync_string(input.of_ml_device); + this->add_item(item); + } + { + Input_Item item("of_ml_feg"); + item.annotation = "The Free Electron Gas limit: 0: no, 3: yes"; + item.category = "ML-KEDF: machine learning based kinetic energy density functional for OFDFT"; + item.type = "Integer"; + item.description = R"(The method to incorporate the Free Electron Gas (FEG) limit. +* 0: Do not incorporate the FEG limit. +* 1: Incorporate the FEG limit by translation. +* 3: Incorporate the FEG limit by nonlinear transformation using softplus function.)"; + item.default_value = "0"; + item.unit = ""; + item.availability = "OFDFT"; + read_sync_int(input.of_ml_feg); + this->add_item(item); + } + { + Input_Item item("of_ml_nkernel"); + item.annotation = "Number of kernels"; + item.category = "ML-KEDF: machine learning based kinetic energy density functional for OFDFT"; + item.type = "Integer"; + item.description = "Number of kernel functions."; + item.default_value = "1"; + item.unit = ""; + item.availability = "OFDFT"; + item.reset_value = [](const Input_Item& item, Parameter& para) { + if (para.input.of_ml_nkernel > 0) + { + reset_vector(para.input.of_ml_gammanl, para.input.of_ml_nkernel, 0); + reset_vector(para.input.of_ml_pnl, para.input.of_ml_nkernel, 0); + reset_vector(para.input.of_ml_qnl, para.input.of_ml_nkernel, 0); + reset_vector(para.input.of_ml_xi, para.input.of_ml_nkernel, 0); + reset_vector(para.input.of_ml_tanhxi, para.input.of_ml_nkernel, 0); + reset_vector(para.input.of_ml_tanhxi_nl, para.input.of_ml_nkernel, 0); + reset_vector(para.input.of_ml_tanh_pnl, para.input.of_ml_nkernel, 0); + reset_vector(para.input.of_ml_tanh_qnl, para.input.of_ml_nkernel, 0); + reset_vector(para.input.of_ml_tanhp_nl, para.input.of_ml_nkernel, 0); + reset_vector(para.input.of_ml_tanhq_nl, para.input.of_ml_nkernel, 0); + reset_vector(para.input.of_ml_chi_xi, para.input.of_ml_nkernel, 1.0); + reset_vector(para.input.of_ml_chi_pnl, para.input.of_ml_nkernel, 1.0); + reset_vector(para.input.of_ml_chi_qnl, para.input.of_ml_nkernel, 1.0); + reset_vector(para.input.of_ml_kernel, para.input.of_ml_nkernel, 1); + reset_vector(para.input.of_ml_kernel_scaling, para.input.of_ml_nkernel, 1.0); + reset_vector(para.input.of_ml_yukawa_alpha, para.input.of_ml_nkernel, 1.0); + std::string none = "none"; + reset_vector(para.input.of_ml_kernel_file, para.input.of_ml_nkernel, none); + } + }; + read_sync_int(input.of_ml_nkernel); + this->add_item(item); + } + { + Input_Item item("of_ml_kernel"); + item.annotation = "Type of kernel, 1 for wt, 2 for yukawa, and 3 for TKK"; + item.category = "ML-KEDF: machine learning based kinetic energy density functional for OFDFT"; + item.type = "Vector of Integer"; + item.description = R"(Containing nkernel (see of_ml_nkernel) elements. The i-th element specifies the type of the i-th kernel function. +* 1: Wang-Teter kernel function. +* 2: Modified Yukawa function, and alpha is specified by of_ml_yukawa_alpha. +* 3: Truncated kinetic kernel (TKK), the file containing TKK is specified by of_ml_kernel_file.)"; + item.default_value = "1"; + item.unit = ""; + item.availability = "OFDFT"; + item.read_value = [](const Input_Item& item, Parameter& para) { + parse_expression(item.str_values, para.input.of_ml_kernel); + }; + sync_intvec(input.of_ml_kernel, para.input.of_ml_kernel.size(), 0); + this->add_item(item); + } + { + Input_Item item("of_ml_kernel_scaling"); + item.annotation = "Scaling parameter of kernel, w(r-r') = scaling^3 * w(scaling (r-r'))"; + item.category = "ML-KEDF: machine learning based kinetic energy density functional for OFDFT"; + item.type = "Vector of Real"; + item.description = "Containing nkernel (see of_ml_nkernel) elements. The i-th element specifies the RECIPROCAL of scaling parameter of the i-th kernel function."; + item.default_value = "1.0"; + item.unit = ""; + item.availability = "OFDFT"; + item.read_value = [](const Input_Item& item, Parameter& para) { + parse_expression(item.str_values, para.input.of_ml_kernel_scaling); + }; + sync_doublevec(input.of_ml_kernel_scaling, para.input.of_ml_kernel_scaling.size(), 0); + this->add_item(item); + } + { + Input_Item item("of_ml_yukawa_alpha"); + item.annotation = "Parameter alpha of yukawa kernel"; + item.category = "ML-KEDF: machine learning based kinetic energy density functional for OFDFT"; + item.type = "Vector of Real"; + item.description = "Containing nkernel (see of_ml_nkernel) elements. The i-th element specifies the parameter alpha of i-th kernel function. ONLY used for Yukawa kernel function."; + item.default_value = "1.0"; + item.unit = ""; + item.availability = "OFDFT"; + item.read_value = [](const Input_Item& item, Parameter& para) { + parse_expression(item.str_values, para.input.of_ml_yukawa_alpha); + }; + sync_doublevec(input.of_ml_yukawa_alpha, para.input.of_ml_yukawa_alpha.size(), 0); + this->add_item(item); + } + { + Input_Item item("of_ml_kernel_file"); + item.annotation = "The file of TKK"; + item.category = "ML-KEDF: machine learning based kinetic energy density functional for OFDFT"; + item.type = "Vector of String"; + item.description = "Containing nkernel (see of_ml_nkernel) elements. The i-th element specifies the file containing the i-th kernel function. ONLY used for TKK."; + item.default_value = "none"; + item.unit = ""; + item.availability = "OFDFT"; + item.read_value = [](const Input_Item& item, Parameter& para) { + size_t count = item.get_size(); + for (int i = 0; i < count; i++) + { + para.input.of_ml_kernel_file.push_back(item.str_values[i]); + } + }; + sync_stringvec(input.of_ml_kernel_file, para.input.of_ml_kernel_file.size(), ""); + this->add_item(item); + } + { + Input_Item item("of_ml_gamma"); + item.annotation = "Descriptor: gamma = (rho / rho0)^(1/3)"; + item.category = "ML-KEDF: machine learning based kinetic energy density functional for OFDFT"; + item.type = "Boolean"; + item.description = "Local descriptor: gamma = (rho / rho0)^(1/3)."; + item.default_value = "False"; + item.unit = ""; + item.availability = "OFDFT"; + read_sync_bool(input.of_ml_gamma); + this->add_item(item); + } + { + Input_Item item("of_ml_p"); + item.annotation = "Descriptor: p = |nabla rho|^2 / [2 (3 pi^2)^(1/3) rho^(4/3)]^2"; + item.category = "ML-KEDF: machine learning based kinetic energy density functional for OFDFT"; + item.type = "Boolean"; + item.description = "Semi-local descriptor: p = |nabla rho|^2 / [2 (3 pi^2)^(1/3) rho^(4/3)]^2."; + item.default_value = "False"; + item.unit = ""; + item.availability = "OFDFT"; + read_sync_bool(input.of_ml_p); + this->add_item(item); + } + { + Input_Item item("of_ml_q"); + item.annotation = "Descriptor: q = nabla^2 rho / [4 (3 pi^2)^(2/3) rho^(5/3)]"; + item.category = "ML-KEDF: machine learning based kinetic energy density functional for OFDFT"; + item.type = "Boolean"; + item.description = "Semi-local descriptor: q = nabla^2 rho / [4 (3 pi^2)^(2/3) rho^(5/3)]."; + item.default_value = "False"; + item.unit = ""; + item.availability = "OFDFT"; + read_sync_bool(input.of_ml_q); + this->add_item(item); + } + { + Input_Item item("of_ml_tanhp"); + item.annotation = "Descriptor: tanhp = tanh(chi_p * p)"; + item.category = "ML-KEDF: machine learning based kinetic energy density functional for OFDFT"; + item.type = "Boolean"; + item.description = "Semi-local descriptor: tanhp = tanh(chi_p * p)."; + item.default_value = "False"; + item.unit = ""; + item.availability = "OFDFT"; + read_sync_bool(input.of_ml_tanhp); + this->add_item(item); + } + { + Input_Item item("of_ml_tanhq"); + item.annotation = "Descriptor: tanhq = tanh(chi_q * q)"; + item.category = "ML-KEDF: machine learning based kinetic energy density functional for OFDFT"; + item.type = "Boolean"; + item.description = "Semi-local descriptor: tanhq = tanh(chi_q * q)."; + item.default_value = "False"; + item.unit = ""; + item.availability = "OFDFT"; + read_sync_bool(input.of_ml_tanhq); + this->add_item(item); + } + { + Input_Item item("of_ml_chi_p"); + item.annotation = "Hyperparameter: tanhp = tanh(chi_p * p)"; + item.category = "ML-KEDF: machine learning based kinetic energy density functional for OFDFT"; + item.type = "Real"; + item.description = "Hyperparameter chi_p: tanhp = tanh(chi_p * p)."; + item.default_value = "1.0"; + item.unit = ""; + item.availability = "OFDFT"; + read_sync_double(input.of_ml_chi_p); + this->add_item(item); + } + { + Input_Item item("of_ml_chi_q"); + item.annotation = "Hyperparameter: tanhq = tanh(chi_q * q)"; + item.category = "ML-KEDF: machine learning based kinetic energy density functional for OFDFT"; + item.type = "Real"; + item.description = "Hyperparameter chi_q: tanhq = tanh(chi_q * q)."; + item.default_value = "1.0"; + item.unit = ""; + item.availability = "OFDFT"; + read_sync_double(input.of_ml_chi_q); + this->add_item(item); + } + { + Input_Item item("of_ml_gammanl"); + item.annotation = "Descriptor: gammanl = int{gamma(r') * w(r-r') dr'}"; + item.category = "ML-KEDF: machine learning based kinetic energy density functional for OFDFT"; + item.type = "Vector of Integer"; + item.description = "Containing nkernel (see of_ml_nkernel) elements. The i-th element controls the non-local descriptor gammanl defined by the i-th kernel function."; + item.default_value = "0"; + item.unit = ""; + item.availability = "OFDFT"; + item.read_value = [](const Input_Item& item, Parameter& para) { + parse_expression(item.str_values, para.input.of_ml_gammanl); + }; + sync_intvec(input.of_ml_gammanl, para.input.of_ml_gammanl.size(), 0); + this->add_item(item); + } + { + Input_Item item("of_ml_pnl"); + item.annotation = "Descriptor: pnl = int{p(r') * w(r-r') dr'}"; + item.category = "ML-KEDF: machine learning based kinetic energy density functional for OFDFT"; + item.type = "Vector of Integer"; + item.description = "Containing nkernel (see of_ml_nkernel) elements. The i-th element controls the non-local descriptor pnl defined by the i-th kernel function."; + item.default_value = "0"; + item.unit = ""; + item.availability = "OFDFT"; + item.read_value = [](const Input_Item& item, Parameter& para) { + parse_expression(item.str_values, para.input.of_ml_pnl); + }; + sync_intvec(input.of_ml_pnl, para.input.of_ml_pnl.size(), 0); + this->add_item(item); + } + { + Input_Item item("of_ml_qnl"); + item.annotation = "Descriptor: qnl = int{q(r') * w(r-r') dr'}"; + item.category = "ML-KEDF: machine learning based kinetic energy density functional for OFDFT"; + item.type = "Vector of Integer"; + item.description = "Containing nkernel (see of_ml_nkernel) elements. The i-th element controls the non-local descriptor qnl defined by the i-th kernel function."; + item.default_value = "0"; + item.unit = ""; + item.availability = "OFDFT"; + item.read_value = [](const Input_Item& item, Parameter& para) { + parse_expression(item.str_values, para.input.of_ml_qnl); + }; + sync_intvec(input.of_ml_qnl, para.input.of_ml_qnl.size(), 0); + this->add_item(item); + } + { + Input_Item item("of_ml_xi"); + item.annotation = "Descriptor: xi = int{rho(r')^(1/3) * w(r-r') dr'} / rho^(1/3)"; + item.category = "ML-KEDF: machine learning based kinetic energy density functional for OFDFT"; + item.type = "Vector of Integer"; + item.description = "Containing nkernel (see of_ml_nkernel) elements. The i-th element controls the non-local descriptor xi defined by the i-th kernel function."; + item.default_value = "0"; + item.unit = ""; + item.availability = "OFDFT"; + item.read_value = [](const Input_Item& item, Parameter& para) { + parse_expression(item.str_values, para.input.of_ml_xi); + }; + sync_intvec(input.of_ml_xi, para.input.of_ml_xi.size(), 0); + this->add_item(item); + } + { + Input_Item item("of_ml_tanhxi"); + item.annotation = "Descriptor: tanhxi = tanh(chi_xi * xi)"; + item.category = "ML-KEDF: machine learning based kinetic energy density functional for OFDFT"; + item.type = "Vector of Integer"; + item.description = "Containing nkernel (see of_ml_nkernel) elements. The i-th element controls the non-local descriptor tanhxi defined by the i-th kernel function."; + item.default_value = "0"; + item.unit = ""; + item.availability = "OFDFT"; + item.read_value = [](const Input_Item& item, Parameter& para) { + parse_expression(item.str_values, para.input.of_ml_tanhxi); + }; + sync_intvec(input.of_ml_tanhxi, para.input.of_ml_tanhxi.size(), 0); + this->add_item(item); + } + { + Input_Item item("of_ml_tanhxi_nl"); + item.annotation = "Descriptor: tanhxi_nl = int{tanhxi(r') * w(r-r') dr'}"; + item.category = "ML-KEDF: machine learning based kinetic energy density functional for OFDFT"; + item.type = "Vector of Integer"; + item.description = "Containing nkernel (see of_ml_nkernel) elements. The i-th element controls the non-local descriptor tanhxi_nl defined by the i-th kernel function."; + item.default_value = "0"; + item.unit = ""; + item.availability = "OFDFT"; + item.read_value = [](const Input_Item& item, Parameter& para) { + parse_expression(item.str_values, para.input.of_ml_tanhxi_nl); + }; + sync_intvec(input.of_ml_tanhxi_nl, para.input.of_ml_tanhxi_nl.size(), 0); + this->add_item(item); + } + { + Input_Item item("of_ml_tanh_pnl"); + item.annotation = "Descriptor: tanh_pnl = tanh(chi_pnl * pnl)"; + item.category = "ML-KEDF: machine learning based kinetic energy density functional for OFDFT"; + item.type = "Vector of Integer"; + item.description = "Containing nkernel (see of_ml_nkernel) elements. The i-th element controls the non-local descriptor tanh_pnl defined by the i-th kernel function."; + item.default_value = "0"; + item.unit = ""; + item.availability = "OFDFT"; + item.read_value = [](const Input_Item& item, Parameter& para) { + parse_expression(item.str_values, para.input.of_ml_tanh_pnl); + }; + sync_intvec(input.of_ml_tanh_pnl, para.input.of_ml_tanh_pnl.size(), 0); + this->add_item(item); + } + { + Input_Item item("of_ml_tanh_qnl"); + item.annotation = "Descriptor: tanh_qnl = tanh(chi_qnl * qnl)"; + item.category = "ML-KEDF: machine learning based kinetic energy density functional for OFDFT"; + item.type = "Vector of Integer"; + item.description = "Containing nkernel (see of_ml_nkernel) elements. The i-th element controls the non-local descriptor tanh_qnl defined by the i-th kernel function."; + item.default_value = "0"; + item.unit = ""; + item.availability = "OFDFT"; + item.read_value = [](const Input_Item& item, Parameter& para) { + parse_expression(item.str_values, para.input.of_ml_tanh_qnl); + }; + sync_intvec(input.of_ml_tanh_qnl, para.input.of_ml_tanh_qnl.size(), 0); + this->add_item(item); + } + { + Input_Item item("of_ml_tanhp_nl"); + item.annotation = "Descriptor: tanhp_nl = int{tanhp(r') * w(r-r') dr'}"; + item.category = "ML-KEDF: machine learning based kinetic energy density functional for OFDFT"; + item.type = "Vector of Integer"; + item.description = "Containing nkernel (see of_ml_nkernel) elements. The i-th element controls the non-local descriptor tanhp_nl defined by the i-th kernel function."; + item.default_value = "0"; + item.unit = ""; + item.availability = "OFDFT"; + item.read_value = [](const Input_Item& item, Parameter& para) { + parse_expression(item.str_values, para.input.of_ml_tanhp_nl); + }; + sync_intvec(input.of_ml_tanhp_nl, para.input.of_ml_tanhp_nl.size(), 0); + this->add_item(item); + } + { + Input_Item item("of_ml_tanhq_nl"); + item.annotation = "Descriptor: tanhq_nl = int{tanhq(r') * w(r-r') dr'}"; + item.category = "ML-KEDF: machine learning based kinetic energy density functional for OFDFT"; + item.type = "Vector of Integer"; + item.description = "Containing nkernel (see of_ml_nkernel) elements. The i-th element controls the non-local descriptor tanhq_nl defined by the i-th kernel function."; + item.default_value = "0"; + item.unit = ""; + item.availability = "OFDFT"; + item.read_value = [](const Input_Item& item, Parameter& para) { + parse_expression(item.str_values, para.input.of_ml_tanhq_nl); + }; + sync_intvec(input.of_ml_tanhq_nl, para.input.of_ml_tanhq_nl.size(), 0); + this->add_item(item); + } + { + Input_Item item("of_ml_chi_xi"); + item.annotation = "Hyperparameter: tanhpxi = tanh(chi_xi * xi)"; + item.category = "ML-KEDF: machine learning based kinetic energy density functional for OFDFT"; + item.type = "Vector of Real"; + item.description = "Containing nkernel (see of_ml_nkernel) elements. The i-th element specifies the hyperparameter chi_xi of non-local descriptor tanhxi defined by the i-th kernel function."; + item.default_value = "1.0"; + item.unit = ""; + item.availability = "OFDFT"; + item.read_value = [](const Input_Item& item, Parameter& para) { + parse_expression(item.str_values, para.input.of_ml_chi_xi); + }; + sync_doublevec(input.of_ml_chi_xi, para.input.of_ml_chi_xi.size(), 0); + this->add_item(item); + } + { + Input_Item item("of_ml_chi_pnl"); + item.annotation = "Hyperparameter: tanh_pnl = tanh(chi_pnl * pnl)"; + item.category = "ML-KEDF: machine learning based kinetic energy density functional for OFDFT"; + item.type = "Vector of Real"; + item.description = "Containing nkernel (see of_ml_nkernel) elements. The i-th element specifies the hyperparameter chi_pnl of non-local descriptor tanh_pnl defined by the i-th kernel function."; + item.default_value = "1.0"; + item.unit = ""; + item.availability = "OFDFT"; + item.read_value = [](const Input_Item& item, Parameter& para) { + parse_expression(item.str_values, para.input.of_ml_chi_pnl); + }; + sync_doublevec(input.of_ml_chi_pnl, para.input.of_ml_chi_pnl.size(), 0); + this->add_item(item); + } + { + Input_Item item("of_ml_chi_qnl"); + item.annotation = "Hyperparameter: tanh_qnl = tanh(chi_qnl * qnl)"; + item.category = "ML-KEDF: machine learning based kinetic energy density functional for OFDFT"; + item.type = "Vector of Real"; + item.description = "Containing nkernel (see of_ml_nkernel) elements. The i-th element specifies the hyperparameter chi_qnl of non-local descriptor tanh_qnl defined by the i-th kernel function."; + item.default_value = "1.0"; + item.unit = ""; + item.availability = "OFDFT"; + item.read_value = [](const Input_Item& item, Parameter& para) { + parse_expression(item.str_values, para.input.of_ml_chi_qnl); + }; + sync_doublevec(input.of_ml_chi_qnl, para.input.of_ml_chi_qnl.size(), 0); + this->add_item(item); + } + { + Input_Item item("of_ml_local_test"); + item.annotation = "Test: read in the density, and output the F and Pauli potential"; + item.category = "ML-KEDF: machine learning based kinetic energy density functional for OFDFT"; + item.type = "Boolean"; + item.description = "FOR TEST. Read in the density, and output the F and Pauli potential."; + item.default_value = "False"; + item.unit = ""; + item.availability = "OFDFT"; + read_sync_bool(input.of_ml_local_test); + this->add_item(item); + } + { + Input_Item item("ml_exx"); + item.annotation = "Use ML EXX or not"; + item.category = "ML-KEDF: machine learning based kinetic energy density functional for OFDFT"; + item.type = "Boolean"; + item.description = "Whether to use machine learning based exact exchange (ML-EXX)."; + item.default_value = "False"; + item.unit = ""; + item.availability = ""; + read_sync_bool(input.ml_exx); + this->add_item(item); + } +} +} // namespace ModuleIO \ No newline at end of file diff --git a/source/source_io/module_parameter/read_input_item_other.cpp b/source/source_io/module_parameter/read_input_item_other.cpp new file mode 100644 index 0000000000..1ec1bf255a --- /dev/null +++ b/source/source_io/module_parameter/read_input_item_other.cpp @@ -0,0 +1,956 @@ +#include "source_base/global_function.h" +#include "source_base/tool_quit.h" +#include "read_input.h" +#include "read_input_tool.h" + +#include +#include +#include + +namespace ModuleIO +{ +void ReadInput::item_others() +{ + // NOTE: The order of add_item() calls below determines the parameter order + // in the generated documentation (docs/advanced/input_files/input-main.md). + // Please preserve this ordering when adding new parameters. + // non-collinear spin-constrained + { + Input_Item item("sc_mag_switch"); + item.annotation = "switch to control spin-constrained DFT"; + item.category = "Spin-Constrained DFT"; + item.type = "Boolean"; + item.description = "Switch to control spin-constrained DFT calculation"; + item.default_value = "False"; + item.unit = ""; + item.availability = ""; + read_sync_bool(input.sc_mag_switch); + item.check_value = [](const Input_Item& item, const Parameter& para) { + if (para.input.sc_mag_switch) + { + ModuleBase::WARNING_QUIT("ReadInput", + "This feature is not stable yet and might lead to " + "erroneous results.\n" + " Please wait for the official release version."); + // if (para.input.nspin != 4 && para.input.nspin != 2) + // { + // ModuleBase::WARNING_QUIT("ReadInput", "nspin must be 2 or + // 4 when sc_mag_switch > 0"); + // } + // if (para.input.calculation != "scf") + // { + // ModuleBase::WARNING_QUIT("ReadInput", "calculation must + // be scf when sc_mag_switch > 0"); + // } + // if (para.input.nupdown > 0.0) + // { + // ModuleBase::WARNING_QUIT("ReadInput", "nupdown should not + // be set when sc_mag_switch > 0"); + // } + } + }; + this->add_item(item); + } + { + Input_Item item("decay_grad_switch"); + item.annotation = "switch to control gradient break condition"; + item.category = "Spin-Constrained DFT"; + item.type = "Boolean"; + item.description = "Switch to control gradient break condition in spin-constrained DFT"; + item.default_value = "False"; + item.unit = ""; + item.availability = ""; + read_sync_bool(input.decay_grad_switch); + this->add_item(item); + } + { + Input_Item item("sc_thr"); + item.annotation = "Convergence criterion of spin-constrained iteration (RMS) in uB"; + item.category = "Spin-Constrained DFT"; + item.type = "Real"; + item.description = "Convergence criterion of spin-constrained iteration (RMS) in uB"; + item.default_value = "1.0e-6"; + item.unit = "uB"; + item.availability = "sc_mag_switch is true"; + read_sync_double(input.sc_thr); + item.check_value = [](const Input_Item& item, const Parameter& para) { + if (para.input.sc_thr < 0) + { + ModuleBase::WARNING_QUIT("ReadInput", "sc_thr must >= 0"); + } + }; + this->add_item(item); + } + { + Input_Item item("nsc"); + item.annotation = "Maximal number of spin-constrained iteration"; + item.category = "Spin-Constrained DFT"; + item.type = "Integer"; + item.description = "Maximal number of spin-constrained iteration"; + item.default_value = "100"; + item.unit = ""; + item.availability = "sc_mag_switch is true"; + read_sync_int(input.nsc); + item.check_value = [](const Input_Item& item, const Parameter& para) { + if (para.input.nsc <= 0) + { + ModuleBase::WARNING_QUIT("ReadInput", "nsc must > 0"); + } + }; + this->add_item(item); + } + { + Input_Item item("nsc_min"); + item.annotation = "Minimum number of spin-constrained iteration"; + item.category = "Spin-Constrained DFT"; + item.type = "Integer"; + item.description = "Minimum number of spin-constrained iteration"; + item.default_value = "2"; + item.unit = ""; + item.availability = "sc_mag_switch is true"; + read_sync_int(input.nsc_min); + item.check_value = [](const Input_Item& item, const Parameter& para) { + if (para.input.nsc_min <= 0) + { + ModuleBase::WARNING_QUIT("ReadInput", "nsc_min must > 0"); + } + }; + this->add_item(item); + } + { + Input_Item item("sc_scf_nmin"); + item.annotation = "Minimum number of outer scf loop before " + "initializing lambda loop"; + item.category = "Spin-Constrained DFT"; + item.type = "Integer"; + item.description = "Minimum number of outer scf loop before initializing lambda loop"; + item.default_value = "2"; + item.unit = ""; + item.availability = "sc_mag_switch is true"; + read_sync_int(input.sc_scf_nmin); + item.check_value = [](const Input_Item& item, const Parameter& para) { + if (para.input.sc_scf_nmin < 2) + { + ModuleBase::WARNING_QUIT("ReadInput", "sc_scf_nmin must >= 2"); + } + }; + this->add_item(item); + } + { + Input_Item item("alpha_trial"); + item.annotation = "Initial trial step size for lambda in eV/uB^2"; + item.category = "Spin-Constrained DFT"; + item.type = "Real"; + item.description = "Initial trial step size for lambda in eV/uB^2"; + item.default_value = "0.01"; + item.unit = "eV/uB^2"; + item.availability = "sc_mag_switch is true"; + read_sync_double(input.alpha_trial); + item.check_value = [](const Input_Item& item, const Parameter& para) { + if (para.input.alpha_trial <= 0) + { + ModuleBase::WARNING_QUIT("ReadInput", "alpha_trial must > 0"); + } + }; + this->add_item(item); + } + { + Input_Item item("sccut"); + item.annotation = "Maximal step size for lambda in eV/uB"; + item.category = "Spin-Constrained DFT"; + item.type = "Real"; + item.description = "Maximal step size for lambda in eV/uB"; + item.default_value = "3.0"; + item.unit = "eV/uB"; + item.availability = "sc_mag_switch is true"; + read_sync_double(input.sccut); + item.check_value = [](const Input_Item& item, const Parameter& para) { + if (para.input.sccut <= 0) + { + ModuleBase::WARNING_QUIT("ReadInput", "sccut must > 0"); + } + }; + this->add_item(item); + } + { + Input_Item item("sc_drop_thr"); + item.annotation = "Convergence criterion ratio of lambda iteration in Spin-constrained DFT"; + item.category = "Spin-Constrained DFT"; + item.type = "Real"; + item.description = "Convergence criterion ratio of lambda iteration in Spin-constrained DFT"; + item.default_value = "1.0e-2"; + item.unit = ""; + item.availability = "sc_mag_switch is true"; + read_sync_double(input.sc_drop_thr); + this->add_item(item); + } + { + Input_Item item("sc_scf_thr"); + item.annotation = "Density error threshold for inner loop of spin-constrained SCF"; + item.category = "Spin-Constrained DFT"; + item.type = "Real"; + item.description = "Density error threshold for inner loop of spin-constrained SCF"; + item.default_value = "1.0e-4"; + item.unit = ""; + item.availability = "sc_mag_switch is true"; + read_sync_double(input.sc_scf_thr); + item.check_value = [](const Input_Item& item, const Parameter& para) { + if (para.input.sc_scf_thr <= 0.0) + { + ModuleBase::WARNING_QUIT("ReadInput", "sc_scf_thr must > 0.0"); + } + }; + this->add_item(item); + } + + // Quasiatomic Orbital analysis + { + Input_Item item("qo_switch"); + item.annotation = "switch to control quasiatomic orbital analysis"; + item.category = "Quasiatomic Orbital (QO) analysis"; + item.type = "Boolean"; + item.description = "Whether to let ABACUS output QO analysis required files"; + item.default_value = "False"; + item.unit = ""; + item.availability = ""; + read_sync_bool(input.qo_switch); + this->add_item(item); + } + { + Input_Item item("qo_basis"); + item.annotation = "type of QO basis function: hydrogen: hydrogen-like " + "basis, pswfc: read basis from pseudopotential"; + item.category = "Quasiatomic Orbital (QO) analysis"; + item.type = "String"; + item.description = R"(Type of QO basis function: +* hydrogen: hydrogen-like basis +* pswfc: read basis from pseudopotential +* szv: single-zeta valence basis)"; + item.default_value = "szv"; + item.unit = ""; + item.availability = ""; + read_sync_string(input.qo_basis); + this->add_item(item); + } + { + Input_Item item("qo_strategy"); + item.annotation = "strategy to generate generate radial orbitals"; + item.category = "Quasiatomic Orbital (QO) analysis"; + item.type = "Vector of String (1 or n values where n is the number of atomic types)"; + item.description = "Strategy to generate radial orbitals for QO analysis. For hydrogen: energy-valence, for pswfc and szv: all"; + item.default_value = "for hydrogen: energy-valence, for pswfc and szv: all"; + item.unit = ""; + item.availability = ""; + item.read_value = [](const Input_Item& item, Parameter& para) { + size_t count = item.get_size(); + for (int i = 0; i < count; i++) + { + para.input.qo_strategy.push_back(item.str_values[i]); + } + }; + item.reset_value = [](const Input_Item& item, Parameter& para) { + if (para.input.qo_strategy.size() != para.input.ntype) + { + if (para.input.qo_strategy.size() == 1) + { + para.input.qo_strategy.resize(para.input.ntype, para.input.qo_strategy[0]); + } + else + { + std::string default_strategy; + if (para.input.qo_basis == "hydrogen") + { + default_strategy = "energy-valence"; + } + else if ((para.input.qo_basis == "pswfc") || (para.input.qo_basis == "szv")) + { + default_strategy = "all"; + } + else + { + ModuleBase::WARNING_QUIT("ReadInput", + "When setting default values for qo_strategy, " + "unexpected/unknown " + "qo_basis is found. Please check it."); + } + para.input.qo_strategy.resize(para.input.ntype, default_strategy); + } + } + }; + sync_stringvec(input.qo_strategy, para.input.ntype, "all"); + this->add_item(item); + } + { + Input_Item item("qo_screening_coeff"); + item.annotation = "rescale the shape of radial orbitals"; + item.category = "Quasiatomic Orbital (QO) analysis"; + item.type = "Vector of Real (n values where n is the number of atomic types; 1 value allowed for qo_basis=pswfc)"; + item.description = "The screening coefficient for each atom type to rescale the shape of radial orbitals"; + item.default_value = "0.1"; + item.unit = "Bohr^-1"; + item.availability = ""; + item.read_value = [](const Input_Item& item, Parameter& para) { + size_t count = item.get_size(); + for (int i = 0; i < count; i++) + { + para.input.qo_screening_coeff.push_back(std::stod(item.str_values[i])); + } + }; + item.reset_value = [](const Input_Item& item, Parameter& para) { + if (!item.is_read()) + { + return; + } + if (para.input.qo_screening_coeff.size() != para.input.ntype) + { + if (para.input.qo_basis == "pswfc") + { + double default_screening_coeff + = (para.input.qo_screening_coeff.size() == 1) ? para.input.qo_screening_coeff[0] : 0.1; + para.input.qo_screening_coeff.resize(para.input.ntype, default_screening_coeff); + } + else + { + ModuleBase::WARNING_QUIT("ReadInput", + "qo_screening_coeff should have the same number of " + "elements as ntype"); + } + } + }; + item.check_value = [](const Input_Item& item, const Parameter& para) { + for (auto screen_coeff: para.input.qo_screening_coeff) + { + if (screen_coeff < 0) + { + ModuleBase::WARNING_QUIT("ReadInput", + "screening coefficient must >= 0 " + "to tune the pswfc decay"); + } + if (std::fabs(screen_coeff) < 1e-6) + { + ModuleBase::WARNING_QUIT("ReadInput", + "every low screening coefficient might yield very high " + "computational cost"); + } + } + }; + sync_doublevec(input.qo_screening_coeff, para.input.ntype, 0.1); + this->add_item(item); + } + { + Input_Item item("qo_thr"); + item.annotation = "accuracy for evaluating cutoff radius of QO basis function"; + item.category = "Quasiatomic Orbital (QO) analysis"; + item.type = "Real"; + item.description = "The convergence threshold determining the cutoff of generated orbital. Lower threshold will yield orbital with larger cutoff radius."; + item.default_value = "1.0e-6"; + item.unit = ""; + item.availability = ""; + read_sync_double(input.qo_thr); + item.check_value = [](const Input_Item& item, const Parameter& para) { + if (para.input.qo_thr > 1e-6) + { + ModuleBase::WARNING("ReadInput", + "too high the convergence threshold might " + "yield unacceptable result"); + } + }; + this->add_item(item); + } + + // PEXSI + { + Input_Item item("pexsi_npole"); + item.annotation = "Number of poles in expansion"; + item.category = "PEXSI"; + item.type = "Integer"; + item.description = "The number of poles used in the pole expansion method, should be a even number."; + item.default_value = "40"; + item.unit = ""; + item.availability = ""; + read_sync_int(input.pexsi_npole); + this->add_item(item); + } + { + Input_Item item("pexsi_inertia"); + item.annotation = "Whether inertia counting is used at the very " + "beginning of PEXSI process"; + item.category = "PEXSI"; + item.type = "Boolean"; + item.description = "Whether inertia counting is used at the very beginning."; + item.default_value = "True"; + item.unit = ""; + item.availability = ""; + read_sync_bool(input.pexsi_inertia); + this->add_item(item); + } + { + Input_Item item("pexsi_nmax"); + item.annotation = "Maximum number of PEXSI iterations after each " + "inertia counting procedure"; + item.category = "PEXSI"; + item.type = "Integer"; + item.description = "Maximum number of PEXSI iterations after each inertia counting procedure."; + item.default_value = "80"; + item.unit = ""; + item.availability = ""; + read_sync_int(input.pexsi_nmax); + this->add_item(item); + } + { + Input_Item item("pexsi_comm"); + item.annotation = "Whether to construct PSelInv communication pattern"; + item.category = "PEXSI"; + item.type = "Boolean"; + item.description = "Whether to construct PSelInv communication pattern."; + item.default_value = "True"; + item.unit = ""; + item.availability = ""; + read_sync_bool(input.pexsi_comm); + this->add_item(item); + } + { + Input_Item item("pexsi_storage"); + item.annotation = "Storage space used by the Selected Inversion " + "algorithm for symmetric matrices"; + item.category = "PEXSI"; + item.type = "Boolean"; + item.description = "Whether to use symmetric storage space used by the Selected Inversion algorithm for symmetric matrices."; + item.default_value = "True"; + item.unit = ""; + item.availability = ""; + read_sync_bool(input.pexsi_storage); + this->add_item(item); + } + { + Input_Item item("pexsi_ordering"); + item.annotation = "Ordering strategy for factorization and selected inversion"; + item.category = "PEXSI"; + item.type = "Integer"; + item.description = "Ordering strategy for factorization and selected inversion. 0: Parallel ordering using ParMETIS, 1: Sequential ordering using METIS, 2: Multiple minimum degree ordering"; + item.default_value = "0"; + item.unit = ""; + item.availability = ""; + read_sync_int(input.pexsi_ordering); + this->add_item(item); + } + { + Input_Item item("pexsi_row_ordering"); + item.annotation = "Row permutation strategy for factorization and " + "selected inversion, 0: NoRowPerm, 1: LargeDiag"; + item.category = "PEXSI"; + item.type = "Integer"; + item.description = "Row permutation strategy for factorization and selected inversion, 0: No row permutation, 1: Make the diagonal entry of the matrix larger than the off-diagonal entries."; + item.default_value = "1"; + item.unit = ""; + item.availability = ""; + read_sync_int(input.pexsi_row_ordering); + this->add_item(item); + } + { + Input_Item item("pexsi_nproc"); + item.annotation = "Number of processors for parmetis"; + item.category = "PEXSI"; + item.type = "Integer"; + item.description = "Number of processors for PARMETIS. Only used if pexsi_ordering == 0."; + item.default_value = "1"; + item.unit = ""; + item.availability = ""; + read_sync_int(input.pexsi_nproc); + this->add_item(item); + } + { + Input_Item item("pexsi_symm"); + item.annotation = "Matrix symmetry"; + item.category = "PEXSI"; + item.type = "Boolean"; + item.description = "Whether the matrix is symmetric."; + item.default_value = "True"; + item.unit = ""; + item.availability = ""; + read_sync_bool(input.pexsi_symm); + this->add_item(item); + } + { + Input_Item item("pexsi_trans"); + item.annotation = "Whether to transpose"; + item.category = "PEXSI"; + item.type = "Boolean"; + item.description = "Whether to factorize the transpose of the matrix."; + item.default_value = "False"; + item.unit = ""; + item.availability = ""; + read_sync_bool(input.pexsi_trans); + this->add_item(item); + } + { + Input_Item item("pexsi_method"); + item.annotation = "pole expansion method, 1: Cauchy Contour Integral, " + "2: Moussa optimized method"; + item.category = "PEXSI"; + item.type = "Integer"; + item.description = "The pole expansion method to be used. 1 for Cauchy Contour Integral method, 2 for Moussa optimized method."; + item.default_value = "1"; + item.unit = ""; + item.availability = ""; + read_sync_int(input.pexsi_method); + this->add_item(item); + } + { + Input_Item item("pexsi_nproc_pole"); + item.annotation = "Number of processes used by each pole"; + item.category = "PEXSI"; + item.type = "Integer"; + item.description = "The point parallelizaion of PEXSI. Recommend two points parallelization."; + item.default_value = "1"; + item.unit = ""; + item.availability = ""; + read_sync_int(input.pexsi_nproc_pole); + this->add_item(item); + } + { + Input_Item item("pexsi_temp"); + item.annotation = "Temperature, in the same unit as H"; + item.category = "PEXSI"; + item.type = "Real"; + item.description = "Temperature in Fermi-Dirac distribution, in Ry, should have the same effect as the smearing sigma when smearing method is set to Fermi-Dirac."; + item.default_value = "0.015"; + item.unit = ""; + item.availability = ""; + read_sync_double(input.pexsi_temp); + this->add_item(item); + } + { + Input_Item item("pexsi_gap"); + item.annotation = "Spectral gap"; + item.category = "PEXSI"; + item.type = "Real"; + item.description = "Spectral gap, this can be set to be 0 in most cases."; + item.default_value = "0"; + item.unit = ""; + item.availability = ""; + read_sync_double(input.pexsi_gap); + this->add_item(item); + } + { + Input_Item item("pexsi_delta_e"); + item.annotation = "An upper bound for the spectral radius of S^{-1} H"; + item.category = "PEXSI"; + item.type = "Real"; + item.description = "Upper bound for the spectral radius of S^{-1}H."; + item.default_value = "20"; + item.unit = ""; + item.availability = ""; + read_sync_double(input.pexsi_delta_e); + this->add_item(item); + } + { + Input_Item item("pexsi_mu_lower"); + item.annotation = "Initial guess of lower bound for mu"; + item.category = "PEXSI"; + item.type = "Real"; + item.description = "Initial guess of lower bound for mu."; + item.default_value = "-10"; + item.unit = ""; + item.availability = ""; + read_sync_double(input.pexsi_mu_lower); + this->add_item(item); + } + { + Input_Item item("pexsi_mu_upper"); + item.annotation = "Initial guess of upper bound for mu"; + item.category = "PEXSI"; + item.type = "Real"; + item.description = "Initial guess of upper bound for mu."; + item.default_value = "10"; + item.unit = ""; + item.availability = ""; + read_sync_double(input.pexsi_mu_upper); + this->add_item(item); + } + { + Input_Item item("pexsi_mu"); + item.annotation = "Initial guess for mu (for the solver)"; + item.category = "PEXSI"; + item.type = "Real"; + item.description = "Initial guess for mu (for the solver)."; + item.default_value = "0"; + item.unit = ""; + item.availability = ""; + read_sync_double(input.pexsi_mu); + this->add_item(item); + } + { + Input_Item item("pexsi_mu_thr"); + item.annotation = "Stopping criterion in terms of the chemical " + "potential for the inertia counting procedure"; + item.category = "PEXSI"; + item.type = "Real"; + item.description = "Stopping criterion in terms of the chemical potential for the inertia counting procedure."; + item.default_value = "0.05"; + item.unit = ""; + item.availability = ""; + read_sync_double(input.pexsi_mu_thr); + this->add_item(item); + } + { + Input_Item item("pexsi_mu_expand"); + item.annotation = "If the chemical potential is not in the initial " + "interval, the interval is expanded by " + "muInertiaExpansion"; + item.category = "PEXSI"; + item.type = "Real"; + item.description = "If the chemical potential is not in the initial interval, the interval is expanded by this value."; + item.default_value = "0.3"; + item.unit = ""; + item.availability = ""; + read_sync_double(input.pexsi_mu_expand); + this->add_item(item); + } + { + Input_Item item("pexsi_mu_guard"); + item.annotation = "Safe guard criterion in terms of the chemical potential to " + "reinvoke the inertia counting procedure"; + item.category = "PEXSI"; + item.type = "Real"; + item.description = "Safe guard criterion in terms of the chemical potential to reinvoke the inertia counting procedure."; + item.default_value = "0.2"; + item.unit = ""; + item.availability = ""; + read_sync_double(input.pexsi_mu_guard); + this->add_item(item); + } + { + Input_Item item("pexsi_elec_thr"); + item.annotation = "Stopping criterion of the PEXSI iteration in terms " + "of the number of electrons compared to " + "numElectronExact"; + item.category = "PEXSI"; + item.type = "Real"; + item.description = "Stopping criterion of the PEXSI iteration in terms of the number of electrons compared to numElectronExact."; + item.default_value = "0.001"; + item.unit = ""; + item.availability = ""; + read_sync_double(input.pexsi_elec_thr); + this->add_item(item); + } + { + Input_Item item("pexsi_zero_thr"); + item.annotation = "if the absolute value of matrix element is less " + "than ZERO_Limit, it will be considered as 0"; + item.category = "PEXSI"; + item.type = "Real"; + item.description = "if the absolute value of CCS matrix element is less than this value, it will be considered as zero."; + item.default_value = "1e-10"; + item.unit = ""; + item.availability = ""; + read_sync_double(input.pexsi_zero_thr); + this->add_item(item); + } + + // Only for Test + { + Input_Item item("out_alllog"); + item.annotation = "output information for each processor, when parallel"; + item.category = "Output information"; + item.type = "Boolean"; + item.description = "Whether to print information into individual logs from all ranks in an MPI run.\n* True: Information from each rank will be written into individual files named OUT.{calculation}_{suffix}/running_${calculation}.log."; + item.default_value = "False"; + item.unit = ""; + item.availability = ""; + read_sync_bool(input.out_alllog); + this->add_item(item); + } + { + Input_Item item("nurse"); + item.annotation = "for coders"; + item.category = "Variables useful for debugging"; + item.type = "Integer"; + item.description = "Debugging flag for developers"; + item.default_value = "0"; + item.unit = ""; + item.availability = ""; + read_sync_int(input.nurse); + this->add_item(item); + } + { + Input_Item item("t_in_h"); + item.annotation = "calculate the kinetic energy or not"; + item.category = "Variables useful for debugging"; + item.type = "Boolean"; + item.description = R"(Specify whether to include kinetic term in obtaining the Hamiltonian matrix. +* 0: No. +* 1: Yes.)"; + item.default_value = "1"; + item.unit = ""; + item.availability = ""; + read_sync_bool(input.t_in_h); + this->add_item(item); + } + { + Input_Item item("vl_in_h"); + item.annotation = "calculate the local potential or not"; + item.category = "Variables useful for debugging"; + item.type = "Boolean"; + item.description = R"(Specify whether to include local pseudopotential term in obtaining the Hamiltonian matrix. +* 0: No. +* 1: Yes.)"; + item.default_value = "1"; + item.unit = ""; + item.availability = ""; + read_sync_bool(input.vl_in_h); + this->add_item(item); + } + { + Input_Item item("vnl_in_h"); + item.annotation = "calculate the nonlocal potential or not"; + item.category = "Variables useful for debugging"; + item.type = "Boolean"; + item.description = R"(Specify whether to include non-local pseudopotential term in obtaining the Hamiltonian matrix. +* 0: No. +* 1: Yes.)"; + item.default_value = "1"; + item.unit = ""; + item.availability = ""; + read_sync_bool(input.vnl_in_h); + this->add_item(item); + } + { + Input_Item item("vh_in_h"); + item.annotation = "calculate the hartree potential or not"; + item.category = "Variables useful for debugging"; + item.type = "Boolean"; + item.description = R"(Specify whether to include Hartree potential term in obtaining the Hamiltonian matrix. +* 0: No. +* 1: Yes.)"; + item.default_value = "1"; + item.unit = ""; + item.availability = ""; + read_sync_bool(input.vh_in_h); + this->add_item(item); + } + { + Input_Item item("vion_in_h"); + item.annotation = "calculate the local ionic potential or not"; + item.category = "Variables useful for debugging"; + item.type = "Boolean"; + item.description = R"(Specify whether to include local ionic potential term in obtaining the Hamiltonian matrix. +* 0: No. +* 1: Yes.)"; + item.default_value = "1"; + item.unit = ""; + item.availability = ""; + read_sync_bool(input.vion_in_h); + this->add_item(item); + } + { + Input_Item item("test_force"); + item.annotation = "test the force"; + item.category = "Variables useful for debugging"; + item.type = "Boolean"; + item.description = R"(Specify whether to output the detailed components in forces. +* 0: No. +* 1: Yes.)"; + item.default_value = "0"; + item.unit = ""; + item.availability = ""; + read_sync_bool(input.test_force); + this->add_item(item); + } + { + Input_Item item("test_stress"); + item.annotation = "test the stress"; + item.category = "Variables useful for debugging"; + item.type = "Boolean"; + item.description = R"(Specify whether to output the detailed components in stress. +* 0: No. +* 1: Yes.)"; + item.default_value = "0"; + item.unit = ""; + item.availability = ""; + read_sync_bool(input.test_stress); + this->add_item(item); + } + { + Input_Item item("test_skip_ewald"); + item.annotation = "whether to skip ewald"; + item.category = "Variables useful for debugging"; + item.type = "Boolean"; + item.description = R"(Specify whether to skip the calculation of the ewald energy. +* 0: No. +* 1: Yes.)"; + item.default_value = "0"; + item.unit = ""; + item.availability = ""; + read_sync_bool(input.test_skip_ewald); + this->add_item(item); + } + { + Input_Item item("ri_hartree_benchmark"); + item.annotation = "whether to use the RI approximation for the Hartree term in LR-TDDFT for benchmark (with FHI-aims/ABACUS read-in style)"; + item.category = "Linear Response TDDFT"; + item.type = "String"; + item.description = "Whether to use the RI approximation for the Hartree term in LR-TDDFT for benchmark (with FHI-aims/ABACUS read-in style)"; + item.default_value = "none"; + item.unit = ""; + item.availability = ""; + read_sync_string(input.ri_hartree_benchmark); + this->add_item(item); + } + { + Input_Item item("aims_nbasis"); + item.annotation = "the number of basis functions for each atom type used in FHI-aims (for benchmark)"; + item.category = "Linear Response TDDFT"; + item.type = "A number(ntype) of Integers"; + item.description = "Atomic basis set size for each atom type (with the same order as in STRU) in FHI-aims."; + item.default_value = "{} (empty list, where ABACUS use its own basis set size)"; + item.unit = ""; + item.availability = "ri_hartree_benchmark = aims"; + item.read_value = [](const Input_Item& item, Parameter& para) { + size_t count = item.get_size(); + for (int i = 0; i < count; i++) + { + para.input.aims_nbasis.push_back(std::stod(item.str_values[i])); + } + }; + sync_intvec(input.aims_nbasis, para.input.aims_nbasis.size(), 0); + this->add_item(item); + } + + // RDMFT, added by jghan, 2024-10-16 + { + Input_Item item("rdmft"); + item.annotation = "whether to perform rdmft calculation, default is false"; + item.category = "Reduced Density Matrix Functional Theory"; + item.type = "Boolean"; + item.description = "Whether to perform rdmft calculation (reduced density matrix funcional theory)"; + item.default_value = "false"; + item.unit = ""; + item.availability = ""; + read_sync_bool(input.rdmft); + this->add_item(item); + item.check_value = [](const Input_Item& item, const Parameter& para) { + if (para.input.rdmft && para.input.nspin == 4) + { + ModuleBase::WARNING_QUIT("ReadInput", "rdmft is not available for nspin = 4"); + } + }; + } + { + Input_Item item("rdmft_power_alpha"); + item.annotation = "the alpha parameter of power-functional, g(occ_number) = occ_number^alpha" + " used in exx-type functionals such as muller and power"; + item.category = "Reduced Density Matrix Functional Theory"; + item.type = "Real"; + item.description = "The alpha parameter of power-functional(or other exx-type/hybrid functionals) which used in RDMFT, g(occ_number) = occ_number^alpha"; + item.default_value = "0.656"; + item.unit = ""; + item.availability = ""; + read_sync_double(input.rdmft_power_alpha); + item.reset_value = [](const Input_Item& item, Parameter& para) { + if( para.input.dft_functional == "hf" || para.input.dft_functional == "pbe0" ) + { + para.input.rdmft_power_alpha = 1.0; + } + else if( para.input.dft_functional == "muller" ) + { + para.input.rdmft_power_alpha = 0.5; + } + }; + item.check_value = [](const Input_Item& item, const Parameter& para) { + if( (para.input.rdmft_power_alpha < 0) || (para.input.rdmft_power_alpha > 1) ) + { + ModuleBase::WARNING_QUIT("ReadInput", "rdmft_power_alpha should be greater than 0.0 and less than 1.0"); + } + }; + this->add_item(item); + } + + // EXX PW by rhx0820, 2025-03-10 + { + Input_Item item("exxace"); + item.annotation = "whether to perform ace calculation in exxpw"; + item.category = "Exact Exchange (PW)"; + item.type = "Boolean"; + item.description = R"(Whether to use the ACE method (https://doi.org/10.1021/acs.jctc.6b00092) to accelerate the calculation the Fock exchange matrix. Should be set to true most of the time. +* True: Use the ACE method to calculate the Fock exchange operator. +* False: Use the traditional method to calculate the Fock exchange operator.)"; + item.default_value = "True"; + item.unit = ""; + item.availability = "exx_separate_loop==True."; + read_sync_bool(input.exxace); + this->add_item(item); + } + { + Input_Item item("exx_gamma_extrapolation"); + item.annotation = "whether to perform gamma extrapolation in exxpw"; + item.category = "Exact Exchange (PW)"; + item.type = "Boolean"; + item.description = "Whether to use the gamma point extrapolation method to calculate the Fock exchange operator. See https://doi.org/10.1103/PhysRevB.79.205114 for details. Should be set to true most of the time."; + item.default_value = "True"; + item.unit = ""; + item.availability = ""; + read_sync_bool(input.exx_gamma_extrapolation); + this->add_item(item); + } + { + Input_Item item("ecutexx"); + item.annotation = "energy cutoff for exx calculation, Ry"; + item.category = "Exact Exchange (PW)"; + item.type = "Real"; + item.description = "The energy cutoff for EXX (Fock) exchange operator in plane wave basis calculations. Reducing ecutexx below ecutrho may significantly accelerate EXX computations. This speed improvement comes with a reduced numerical accuracy in the exchange energy calculation."; + item.default_value = "same as ecutrho"; + item.unit = "Ry"; + item.availability = ""; + read_sync_double(input.ecutexx); + item.check_value = [](const Input_Item& item, const Parameter& para) { + if (para.input.ecutexx < 0) + { + ModuleBase::WARNING_QUIT("ReadInput", "ecutexx must >= 0"); + } + }; + this->add_item(item); + } + + { + Input_Item item("exx_thr_type"); + item.annotation = "threshold type for exx outer loop, energy or density"; + item.category = "Exact Exchange (PW)"; + item.type = "String"; + item.description = R"(The type of threshold used to judge whether the outer loop has converged in the separate loop EXX calculation. +* energy: use the change of exact exchange energy to judge convergence. +* density: if the change of charge density difference between two successive outer loop iterations is seen as converged according to scf_thr, then the outer loop is seen as converged.)"; + item.default_value = "density"; + item.unit = ""; + item.availability = ""; + read_sync_string(input.exx_thr_type); + item.check_value = [](const Input_Item& item, const Parameter& para) { + std::string thr_type = para.input.exx_thr_type; + std::transform(thr_type.begin(), thr_type.end(), thr_type.begin(), ::tolower); + if (thr_type != "energy" && thr_type != "density") + { + ModuleBase::WARNING_QUIT("ReadInput", "exx_thr_type should be energy or density"); + } + }; + this->add_item(item); + } + { + Input_Item item("exx_ene_thr"); + item.annotation = "threshold for exx outer loop when exx_thr_type = energy"; + item.category = "Exact Exchange (PW)"; + item.type = "Real"; + item.description = "The threshold for the change of exact exchange energy to judge convergence of the outer loop in the separate loop EXX calculation."; + item.default_value = "1e-5"; + item.unit = "Ry"; + item.availability = "exx_thr_type==energy"; + read_sync_double(input.exx_ene_thr); + item.check_value = [](const Input_Item& item, const Parameter& para) { + if (para.input.exx_ene_thr <= 0) + { + ModuleBase::WARNING_QUIT("ReadInput", "exx_ene_thr must > 0"); + } + }; + this->add_item(item); + } +} +} // namespace ModuleIO diff --git a/source/source_io/module_parameter/read_input_item_output.cpp b/source/source_io/module_parameter/read_input_item_output.cpp new file mode 100644 index 0000000000..4ffd6160cb --- /dev/null +++ b/source/source_io/module_parameter/read_input_item_output.cpp @@ -0,0 +1,1031 @@ +#include "source_base/global_function.h" +#include "source_base/tool_quit.h" +#include "read_input.h" +#include "read_input_tool.h" +namespace ModuleIO +{ +void ReadInput::item_output() +{ + // NOTE: The order of add_item() calls below determines the parameter order + // in the generated documentation (docs/advanced/input_files/input-main.md). + // Please preserve this ordering when adding new parameters. + { + Input_Item item("out_freq_ion"); + item.annotation = "print information every few ionic steps"; + item.category = "Output information"; + item.type = "Integer"; + item.description = "Controls the output interval in ionic steps. When set to a positive integer, information such as charge density, local potential, electrostatic potential, Hamiltonian matrix, overlap matrix, density matrix, and Mulliken population analysis is printed every n ionic steps." + "\n\n[NOTE] In RT-TDDFT calculations, this parameter is inactive; output frequency is instead controlled by out_freq_td."; + item.default_value = "0"; + item.unit = ""; + item.availability = ""; + item.reset_value = [](const Input_Item& item, Parameter& para) { + if (para.input.out_freq_ion <= 0) + { + para.input.out_freq_ion = 0; // 0 means no output of info + } + }; + read_sync_int(input.out_freq_ion); + this->add_item(item); + } + { + Input_Item item("out_freq_td"); + item.annotation = "print information every few completed electronic iterations in RT-TDDFT"; + item.category = "Output information"; + item.type = "Integer"; + item.description = "Controls the output interval in completed electronic evolution steps during RT-TDDFT calculations. When set to a positive integer n, detailed information (see out_freq_ion) is printed every n electron time-evolution steps (i.e., every STEP OF ELECTRON EVOLVE). For example, if you wish to output information once per ionic step, you should set out_freq_td equal to estep_per_md, since one ionic step corresponds to estep_per_md electronic evolution steps." + "\n\n[NOTE] This parameter is only active in RT-TDDFT mode (esolver_type = tddft). It has no effect in ground-state calculations."; + item.default_value = "0"; + item.unit = ""; + item.availability = ""; + item.reset_value = [](const Input_Item& item, Parameter& para) { + if (para.input.out_freq_td <= 0) + { + para.input.out_freq_td = 0; // 0 means no output of info + } + }; + read_sync_int(input.out_freq_td); + this->add_item(item); + } + { + Input_Item item("out_freq_elec"); + item.annotation = "print information every few electronic steps"; + item.category = "Output information"; + item.type = "Integer"; + item.description = "Output the charge density (only binary format, controlled by out_chg), wavefunction (controlled by out_wfc_pw) per out_freq_elec electronic iterations. Note that they are always output when converged or reach the maximum iterations scf_nmax."; + item.default_value = "scf_nmax"; + item.unit = ""; + item.availability = ""; + item.reset_value = [](const Input_Item& item, Parameter& para) { + if (para.input.out_freq_elec <= 0) + { + para.input.out_freq_elec = para.input.scf_nmax; + } + }; + read_sync_int(input.out_freq_elec); + this->add_item(item); + } + { + Input_Item item("out_chg"); + item.annotation = "> 0 output charge density for selected electron steps" + ", second parameter controls the precision, default is 3."; + item.category = "Output information"; + item.type = R"(Integer \[Integer\](optional))"; + item.description = R"(The first integer controls whether to output the charge density on real space grids: +* 1: Output the charge density (in Bohr^-3) on real space grids into the density files in the folder OUT.{suffix} too, which can be read in NSCF calculation. + +In molecular dynamics simulations, the output frequency is controlled by out_freq_ion. + +[NOTE] In the 3.10-LTS version, the file names are SPIN1_CHG.cube and SPIN1_CHG_INI.cube, etc.)"; + item.default_value = "0 3"; + item.unit = ""; + item.availability = ""; + item.read_value = [](const Input_Item& item, Parameter& para) { + const size_t count = item.get_size(); + if (count < 1) ModuleBase::WARNING_QUIT("ReadInput", "out_chg needs at least 1 value"); + para.input.out_chg[0] = std::stoi(item.str_values[0]); + para.input.out_chg[1] = 3; + if (count >= 2) try { para.input.out_chg[1] = std::stoi(item.str_values[1]); } + catch (const std::invalid_argument&) { /* do nothing */ } + catch (const std::out_of_range&) {/* do nothing */} + }; + // reset value in some special case + item.reset_value = [](const Input_Item& item, Parameter& para) { + para.input.out_chg[0] = (para.input.calculation == "get_wf" || para.input.calculation == "get_pchg") + ? 1 + : para.input.out_chg[0]; + }; + sync_intvec(input.out_chg, 2, 0); + this->add_item(item); + } + { + Input_Item item("out_pot"); + item.annotation = "output real space potential (with precision 8)"; + item.category = "Output information"; + item.type = R"(Integer \[Integer\](optional))"; + item.description = R"(* 1: Output the total local potential (i.e., local pseudopotential + Hartree potential + XC potential + external electric field (if exists) + dipole correction potential (if exists) + ...) on real space grids (in Ry) into files in the folder OUT.{suffix}. The files are named as: + * nspin = 1: pots1.cube; + * nspin = 2: pots1.cube and pots2.cube; + * nspin = 4: pots1.cube, pots2.cube, pots3.cube, and pots4.cube +* 2: Output the electrostatic potential on real space grids into OUT.{suffix}/pot_es.cube. The Python script named tools/average_pot/aveElecStatPot.py can be used to calculate the average electrostatic potential along the z-axis and outputs it into ElecStaticPot_AVE. Please note that the total local potential refers to the local component of the self-consistent potential, excluding the non-local pseudopotential. The distinction between the local potential and the electrostatic potential is as follows: local potential = electrostatic potential + XC potential. +* 3: Apart from 1, also output the total local potential of the initial charge density. The files are named as: + * nspin = 1: pots1_ini.cube; + * nspin = 2: pots1_ini.cube and pots2_ini.cube; + * nspin = 4: pots1_ini.cube, pots2_ini.cube, pots3_ini.cube, and pots4_ini.cube + +The optional second integer controls the output precision. If not provided, the default precision is 8. + +In molecular dynamics calculations, the output frequency is controlled by out_freq_ion. + +[NOTE] In the 3.10-LTS version, the file names are SPIN1_POT.cube and SPIN1_POT_INI.cube, etc.)"; + item.default_value = "0"; + item.unit = ""; + item.availability = ""; + item.read_value = [](const Input_Item& item, Parameter& para) { + const size_t count = item.get_size(); + if (count < 1) ModuleBase::WARNING_QUIT("ReadInput", "out_pot needs at least 1 value"); + para.input.out_pot[0] = std::stoi(item.str_values[0]); + para.input.out_pot[1] = 8; + if (count >= 2) try { para.input.out_pot[1] = std::stoi(item.str_values[1]); } + catch (const std::invalid_argument&) { /* do nothing */ } + catch (const std::out_of_range&) {/* do nothing */} + }; + + item.reset_value = [](const Input_Item& item, Parameter& para) { + if (para.input.calculation == "get_wf" || para.input.calculation == "get_pchg") + { + para.input.out_pot[0] = 0; + } + }; + sync_intvec(input.out_pot, 2, 0); + this->add_item(item); + } + { + Input_Item item("out_dmk"); + item.annotation = ">0 output density matrix DM(k) for each k-point"; + item.category = "Output information"; + item.type = R"(Boolean \[Integer\](optional))"; + item.description = R"(Whether to output the density matrix for each k-point into files in the folder OUT.${suffix}. The files are named as: +* For gamma only case: + * nspin = 1 and 4: dm_nao.csr; + * nspin = 2: dms1_nao.csr and dms2_nao.csr for the two spin channels. +* For multi-k points case: + * nspin = 1 and 4: dmk1_nao.csr, dmk2_nao.csr, ...; + * nspin = 2: dmk1s1_nao.csr... and dmk1s2_nao.csr... for the two spin channels. + +[NOTE] In the 3.10-LTS version, the parameter is named out_dm and the file names are SPIN1_DM and SPIN2_DM, etc.)"; + item.default_value = "False"; + item.unit = ""; + item.availability = "Numerical atomic orbital basis"; + item.read_value = [](const Input_Item& item, Parameter& para) { + const size_t count = item.get_size(); + if (count < 1) ModuleBase::WARNING_QUIT("ReadInput", "out_dmk needs at least 1 value"); + para.input.out_dmk[0] = assume_as_boolean(item.str_values[0]); + para.input.out_dmk[1] = 8; + if (count >= 2) try { para.input.out_dmk[1] = std::stoi(item.str_values[1]); } + catch (const std::invalid_argument&) { /* do nothing */ } + catch (const std::out_of_range&) {/* do nothing */} + }; + item.reset_value = [](const Input_Item& item, Parameter& para) { + if (para.input.calculation == "get_wf" || para.input.calculation == "get_pchg") + { + para.input.out_dmk[0] = 0; + } + }; + sync_intvec(input.out_dmk, 2, 0); + this->add_item(item); + } + { + Input_Item item("out_dmr"); + item.annotation = "output density matrix DM(R) with respect to lattice vector R (with precision 8)"; + item.category = "Output information"; + item.type = R"(Boolean \[Integer\](optional))"; + item.description = R"(Whether to output the density matrix with Bravias lattice vector R index into files in the folder OUT.${suffix}. The files are named as dmr{s}{spin index}{g}{geometry index}{_nao} + {".csr"}. Here, 's' refers to spin, where s1 means spin up channel while s2 means spin down channel, and the sparse matrix format 'csr' is mentioned in out_mat_hs2. Finally, if out_app_flag is set to false, the file name contains the optional 'g' index for each ionic step that may have different geometries, and if out_app_flag is set to true, the density matrix with respect to Bravias lattice vector R accumulates during ionic steps: +* nspin = 1: dmrs1_nao.csr; +* nspin = 2: dmrs1_nao.csr and dmrs2_nao.csr for the two spin channels. + +[NOTE] In the 3.10-LTS version, the parameter is named out_dm1, and the file names are data-DMR-sparse_SPIN0.csr and data-DMR-sparse_SPIN1.csr, etc.)"; + item.default_value = "False"; + item.unit = ""; + item.availability = "Numerical atomic orbital basis (multi-k points)"; + item.read_value = [](const Input_Item& item, Parameter& para) { + const size_t count = item.get_size(); + if (count < 1) ModuleBase::WARNING_QUIT("ReadInput", "out_dmr needs at least 1 value"); + para.input.out_dmr[0] = assume_as_boolean(item.str_values[0]); + para.input.out_dmr[1] = 8; + if (count >= 2) try { para.input.out_dmr[1] = std::stoi(item.str_values[1]); } + catch (const std::invalid_argument&) { /* do nothing */ } + catch (const std::out_of_range&) {/* do nothing */} + }; + item.reset_value = [](const Input_Item& item, Parameter& para) { + if (para.input.calculation == "get_wf" || para.input.calculation == "get_pchg") + { + para.input.out_dmr[0] = 0; + } + }; + item.check_value = [](const Input_Item& item, const Parameter& para) { + if (para.sys.gamma_only_local == true && para.input.out_dmr[0]) + { + ModuleBase::WARNING_QUIT("ReadInput", "out_dmr is only valid for multi-k calculation"); + } + }; + + sync_intvec(input.out_dmr, 2, 0); + this->add_item(item); + } + { + Input_Item item("out_wfc_pw"); + item.annotation = "output wave functions"; + item.category = "Output information"; + item.type = "Integer"; + item.description = R"(Whether to output the electronic wavefunction coefficients into files and store them in the folder OUT.${suffix}. The files are named as wf{k}{k-point index}{s}{spin index}{g}{geometry index}{e}{electronic iteration index}{_pw} + {".txt"/".dat"}. Here, the s index refers to spin but the label will not show up for non-spin-polarized calculations, where s1 means spin up channel while s2 means spin down channel, and s4 refers to spinor wave functions that contains both spin channels with spin-orbital coupling or noncollinear calculations enabled. For scf or nscf calculations, g index will not appear, but the g index appears for geometry relaxation and molecular dynamics, where one can use the out_freq_ion command to control. To print out the electroinc wave functions every few SCF iterations, use the out_freq_elec command and the e index will appear in the file name. +* 0: no output +* 1: (txt format) + * non-gamma-only with nspin=1: wfk1_pw.txt, wfk2_pw.txt, ...; + * non-gamma-only with nspin=2: wfk1s1_pw.txt, wfk1s2_pw.txt, wfk2s1_pw.txt, wfk2s2_pw.txt, ...; + * non-gamma-only with nspin=4: wfk1s4_pw.txt, wfk2s4_pw.txt, ...; +* 2: (binary format) + * non-gamma-only with nspin=1: wfk1_pw.dat, wfk2_pw.dat, ...; + * non-gamma-only with nspin=2: wfk1s1_pw.dat, wfk1s2_pw.dat, wfk2s1_pw.dat, wfk2s2_pw.dat, ...; + * non-gamma-only with nspin=4: wfk1s4_pw.dat, wfk2s4_pw.dat, ...; + +[NOTE] In the 3.10-LTS version, the file names are WAVEFUNC1.dat, WAVEFUNC2.dat, etc.)"; + item.default_value = "0"; + item.unit = ""; + item.availability = "Output electronic wave functions in plane wave basis, or transform the real-space electronic wave function into plane wave basis (see get_wf option in calculation with NAO basis)"; + read_sync_int(input.out_wfc_pw); + this->add_item(item); + } + { + Input_Item item("out_wfc_lcao"); + item.annotation = "ouput LCAO wave functions, 0, no output 1: text, 2: binary"; + item.category = "Output information"; + item.type = "Integer"; + item.description = R"(Whether to output the electronic wavefunction coefficients into files and store them in the folder OUT.${suffix}. The files are named as wf{s}{spin index}{k(optional)}{k-point index}{g(optional)}{geometry index1}{_nao} + {".txt"/".dat"}. Here, 's' refers to spin, where s1 means spin up channel while s2 means spin down channel, and 's12' refer to spinor wave functions that contains both spin channels with spin-orbital coupling or noncollinear calculations enabled. In addition, if 'gamma_only' is set to 0, then the optinoal k-point sampling index appears with the k-point index attached to the electronic wave function file names. Finally, if out_app_flag is set to false, the file name contains the optional 'g' index for each ionic step that may have different geometries, and if out_app_flag is set to true, the wave functions accumulate during ionic steps. If the out_app_flag is set to false, a new folder named WFC will be created, and the wave function files will be saved into it. +* 0: no output +* 1: (txt format) + * gamma-only: wfs1_nao.txt or wfs2_nao.txt, ...; + * non-gamma-only: wfs1k1_nao.txt or wfs1k2_nao.txt, ...; +* 2: (binary format) + * gamma-only: wfs1_nao.dat or wfs2_nao.dat, ...; + * non-gamma-only: wfs1k1_nao.dat or wfs1k2_nao.dat, .... + +The corresponding sequence of the orbitals can be seen in Basis Set. + +Also controled by out_freq_ion and out_app_flag. + +[NOTE] In the 3.10-LTS version, the file names are WFC_NAO_GAMMA1_ION1.txt and WFC_NAO_K1_ION1.txt, etc.)"; + item.default_value = "0"; + item.unit = ""; + item.availability = "Numerical atomic orbital basis"; + read_sync_int(input.out_wfc_lcao); + item.reset_value = [](const Input_Item& item, Parameter& para) { + if (para.input.qo_switch) + { + para.input.out_wfc_lcao = 1; + } + }; + item.check_value = [](const Input_Item& item, const Parameter& para) { + if (para.input.out_wfc_lcao < 0 || para.input.out_wfc_lcao > 2) + { + ModuleBase::WARNING_QUIT("ReadInput", "out_wfc_lcao should be 0, 1, or 2"); + } + if (para.input.basis_type != "lcao" && para.input.out_wfc_lcao != 0) + { + ModuleBase::WARNING_QUIT("ReadInput", "out_wfc_lcao is only available for basis_type = lcao"); + } + }; + this->add_item(item); + } + { + Input_Item item("out_dos"); + item.annotation = "output energy and dos"; + item.category = "Output information"; + item.type = "Integer"; + item.description = R"(Whether to output the density of states (DOS). For more information, refer to the dos.md. +* 0: no output +* 1: output the density of states (DOS) + * nspin=1 or 4: doss1g{geom}_{basis}.txt, where geom is the geometry index when cell changes or ions move while basis is either pw or nao. + * nspin=2: doss1g{geom}_{basis}.txt and doss2g{geom}_{basis}.txt for two spin channles. +* 2: (LCAO) output the density of states (DOS) and the projected density of states (PDOS) +* 3: output the Fermi surface file (fermi.bxsf) in BXSF format that can be visualized by XCrySDen)"; + item.default_value = "0"; + item.unit = ""; + item.availability = ""; + read_sync_int(input.out_dos); + item.reset_value = [](const Input_Item& item, Parameter& para) { + if (para.input.calculation == "get_wf" || para.input.calculation == "get_pchg") + { + para.input.out_dos = 0; + } + }; + item.check_value = [](const Input_Item& item, const Parameter& para) { + if (para.input.out_dos == 3 && para.input.symmetry == "1") + { + ModuleBase::WARNING_QUIT("ReadInput", + "symmetry can't be used for out_dos==3(Fermi Surface " + "Plotting) by now."); + } + if (para.input.basis_type == "pw" && para.input.out_dos == 3) + { + ModuleBase::WARNING_QUIT("ReadInput", + "Fermi Surface Plotting not " + "implemented for plane wave now."); + } + }; + this->add_item(item); + } + { + Input_Item item("out_ldos"); + item.annotation = "output mode of local density of states, second parameter controls the precision"; + item.category = "Output information"; + item.type = R"(Integer \[Integer\](optional))"; + item.description = R"(Whether to output the local density of states (LDOS), optionally output precision can be set by a second parameter, default is 3. +* 0: no output +* 1: output the partial charge density for given bias (controlled by stm_bias) in cube file format, which can be used to plot scanning tunneling spectroscopys to mimick STM images using the Python script plot.py. +* 2: output LDOS along a line in real space (controlled by ldos_line). Parameters used to control DOS output are also valid for LDOS. +* 3: output both two LDOS modes above.)"; + item.default_value = "0"; + item.unit = ""; + item.availability = ""; + item.read_value = [](const Input_Item& item, Parameter& para) { + const size_t count = item.get_size(); + if (count != 1 && count != 2) + { + ModuleBase::WARNING_QUIT("ReadInput", "out_ldos should have 1 or 2 values"); + } + para.input.out_ldos[0] = std::stoi(item.str_values[0]); + para.input.out_ldos[1] = (count == 2) ? std::stoi(item.str_values[1]) : 3; + }; + item.check_value = [](const Input_Item& item, const Parameter& para) { + if (para.input.out_ldos[0] < 0 || para.input.out_ldos[0] > 3) + { + ModuleBase::WARNING_QUIT("ReadInput", "out_ldos should be 0, 1, 2 or 3"); + } + }; + sync_intvec(input.out_ldos, 2, 0); + this->add_item(item); + } + { + Input_Item item("out_band"); + item.annotation = "output energy and band structure (with precision 8)"; + item.category = "Output information"; + item.type = R"(Boolean \[Integer\](optional))"; + item.description = R"(Whether to output the eigenvalues of the Hamiltonian matrix (in eV) into the running log during electronic iterations and into a file at the end of calculations. The former can be used with the 'out_freq_elec' parameter while the latter option allows the output precision to be set via a second parameter, with a default value of 8. The output file names are: + * nspin = 1 or 4: eig.txt; + * nspin = 2: eigs1.txt and eigs2.txt; + * For more information, refer to the band.md)"; + item.default_value = "False"; + item.unit = ""; + item.availability = ""; + item.read_value = [](const Input_Item& item, Parameter& para) { + const size_t count = item.get_size(); + if (count != 1 && count != 2) + { + ModuleBase::WARNING_QUIT("ReadInput", "out_band should have 1 or 2 values"); + } + para.input.out_band[0] = assume_as_boolean(item.str_values[0]); + para.input.out_band[1] = (count == 2) ? std::stoi(item.str_values[1]) : 8; + }; + item.reset_value = [](const Input_Item& item, Parameter& para) { + if (para.input.calculation == "get_wf" || para.input.calculation == "get_pchg") + { + para.input.out_band[0] = 0; + } + }; + sync_intvec(input.out_band, 2, 0); + this->add_item(item); + } + { + Input_Item item("out_proj_band"); + item.annotation = "output projected band structure"; + item.category = "Output information"; + item.type = "Boolean"; + item.description = "Whether to output the projected band structure. For more information, refer to the band.md"; + item.default_value = "False"; + item.unit = ""; + item.availability = ""; + read_sync_bool(input.out_proj_band); + item.reset_value = [](const Input_Item& item, Parameter& para) { + if (para.input.calculation == "get_wf" || para.input.calculation == "get_pchg") + { + para.input.out_proj_band = false; + } + }; + item.check_value = [](const Input_Item& item, const Parameter& para) { + if (para.input.basis_type == "pw" && para.input.out_proj_band) + { + ModuleBase::WARNING_QUIT("ReadInput", "out_proj_band is only for lcao"); + } + }; + this->add_item(item); + } + { + Input_Item item("out_stru"); + item.annotation = "output the structure files after each ion step"; + item.category = "Output information"; + item.type = "Boolean"; + item.description = "Whether to output structure files per ionic step in geometry relaxation calculations into OUT.{istep}_D, where ${istep} is the ionic step."; + item.default_value = "False"; + item.unit = ""; + item.availability = ""; + item.reset_value = [](const Input_Item& item, Parameter& para) { + const std::vector offlist = {"nscf", "get_s", "get_pchg", "get_wf"}; + if (std::find(offlist.begin(), offlist.end(), para.input.calculation) != offlist.end()) + { + para.input.out_stru = false; + } + }; + read_sync_bool(input.out_stru); + this->add_item(item); + } + { + Input_Item item("out_level"); + item.annotation = "ie(for electrons); i(for ions);"; + item.category = "Output information"; + item.type = "String"; + item.description = R"(Control the output level of information in OUT.{calculation}.log. +* ie: electronic iteration level, which prints useful information for electronic iterations; +* i: geometry relaxation level, which prints some information for geometry relaxations additionally; +* m: molecular dynamics level, which does not print some information for simplicity.)"; + item.default_value = "ie"; + item.unit = ""; + item.availability = ""; + item.read_value = [](const Input_Item& item, Parameter& para) { + para.input.out_level = strvalue; + para.sys.out_md_control = true; + }; + item.reset_value = [](const Input_Item& item, Parameter& para) { + if (!para.sys.out_md_control && para.input.calculation == "md") + { + para.input.out_level = "m"; // zhengdy add 2019-04-07 + } + }; + sync_string(input.out_level); + add_bool_bcast(sys.out_md_control); + this->add_item(item); + } + { + Input_Item item("out_mat_hs"); + item.annotation = "output H and S matrix (with precision 8)"; + item.category = "Output information"; + item.type = R"(Boolean \[Integer\](optional))"; + item.description = R"(Whether to print the upper triangular part of the Hamiltonian matrices and overlap matrices for each k-point into files in the directory OUT.${suffix}. The second number controls precision. For more information, please refer to hs_matrix.md. Also controled by out_freq_ion and out_app_flag. +* For gamma only case: + * nspin = 1: hks1_nao.txt for the Hamiltonian matrix and sks1_nao.txt for the overlap matrix; + * nspin = 2: hks1_nao.txt and hks2_nao.txt for the Hamiltonian matrix and sks1_nao.txt for the overlap matrix. Note that the code will not output sks2_nao.txt because it is the same as sks1_nao.txt; + * nspin = 4: hks12_nao.txt for the Hamiltonian matrix and sks12_nao.txt for the overlap matrix. +* For multi-k points case: + * nspin = 1: hks1k1_nao.txt for the Hamiltonian matrix at the 1st k-point, and sks1k1_nao.txt for the overlap matrix for the 1st k-point, ...; + * nspin = 2: hks1k1_nao.txt and hks2k1_nao.txt for the two spin channels of the Hamiltonian matrix at the 1st k-point, and sks1k1_nao.txt for the overlap matrix for the 1st k-point. Note that the code will not output sks2k1_nao.txt because it is the same as sks1k1_nao.txt, ...; + * nspin = 4: hks12k1_nao.txt for the Hamiltonian matrix at the 1st k-point, and sks12k1_nao.txt for the overlap matrix for the 1st k-point, ...; + +[NOTE] In the 3.10-LTS version, the file names are data-0-H and data-0-S, etc.)"; + item.default_value = "False 8"; + item.unit = "Ry"; + item.availability = "Numerical atomic orbital basis"; + item.read_value = [](const Input_Item& item, Parameter& para) { + const size_t count = item.get_size(); + if (count < 1) ModuleBase::WARNING_QUIT("ReadInput", "out_mat_hs needs at least 1 value"); + para.input.out_mat_hs[0] = assume_as_boolean(item.str_values[0]); + para.input.out_mat_hs[1] = 8; + if (count >= 2) try { para.input.out_mat_hs[1] = std::stoi(item.str_values[1]); } + catch (const std::invalid_argument&) { /* do nothing */ } + catch (const std::out_of_range&) {/* do nothing */} + }; + // reset value in some special case + item.reset_value = [](const Input_Item& item, Parameter& para) { + if (para.input.qo_switch) + { + para.input.out_mat_hs[0] = 1; // print H(k) and S(k) + } + }; + sync_intvec(input.out_mat_hs, 2, 0); + this->add_item(item); + } + { + Input_Item item("out_mat_hs2"); + item.annotation = "output H(R) and S(R) matrix"; + item.category = "Output information"; + item.type = "Boolean"; + item.description = "Whether to print files containing the Hamiltonian matrix and overlap matrix into files in the directory OUT.${suffix}. For more information, please refer to hs_matrix.md." + "\n\n[NOTE] In the 3.10-LTS version, the file names are data-HR-sparse_SPIN0.csr and data-SR-sparse_SPIN0.csr, etc."; + item.default_value = "False"; + item.unit = "Ry"; + item.availability = "Numerical atomic orbital basis (not gamma-only algorithm)"; + read_sync_bool(input.out_mat_hs2); + item.check_value = [](const Input_Item& item, const Parameter& para) { + if (para.input.out_mat_r && para.sys.gamma_only_local) + { + ModuleBase::WARNING_QUIT("ReadInput", "out_mat_r is not available for gamma only calculations"); + } + }; + this->add_item(item); + } + { + Input_Item item("out_mat_tk"); + item.annotation = "output kinetic matrix of electrons T(k)"; + item.category = "Output information"; + item.type = R"(Boolean \[Integer\](optional))"; + item.description = "Whether to print the upper triangular part of the kinetic matrices for each k-point into OUT.${suffix}/tks1ki_nao.txt, where i is the index of k points. One may optionally provide a second parameter to specify the precision." + "\n\n[NOTE] In the 3.10-LTS version, the file names are data-TR-sparse_SPIN0.csr, etc."; + item.default_value = "False [8]"; + item.unit = "Ry"; + item.availability = "Numerical atomic orbital basis"; + item.read_value = [](const Input_Item& item, Parameter& para) { + const size_t count = item.get_size(); + if (count < 1) ModuleBase::WARNING_QUIT("ReadInput", "out_mat_tk needs at least 1 value"); + para.input.out_mat_tk[0] = assume_as_boolean(item.str_values[0]); + para.input.out_mat_tk[1] = 8; + if (count >= 2) try { para.input.out_mat_tk[1] = std::stoi(item.str_values[1]); } + catch (const std::invalid_argument&) { /* do nothing */ } + catch (const std::out_of_range&) {/* do nothing */} + }; + sync_intvec(input.out_mat_tk, 2, 0); + this->add_item(item); + } + { + Input_Item item("out_mat_r"); + item.annotation = "output r(R) matrix"; + item.category = "Output information"; + item.type = "Boolean"; + item.description = "Whether to print the matrix representation of the position matrix into a file named rr.csr in the directory OUT.${suffix}. If calculation is set to get_s, the position matrix can be obtained without scf iterations. For more information, please refer to position_matrix.md." + "\n\n[NOTE] In the 3.10-LTS version, the file name is data-rR-sparse.csr."; + item.default_value = "False"; + item.unit = "Bohr"; + item.availability = "Numerical atomic orbital basis (not gamma-only algorithm)"; + read_sync_bool(input.out_mat_r); + item.check_value = [](const Input_Item& item, const Parameter& para) { + if ((para.inp.out_mat_r || para.inp.out_mat_hs2 || para.inp.out_mat_t || para.inp.out_mat_dh + || para.inp.dm_to_rho) + && para.sys.gamma_only_local) + { + ModuleBase::WARNING_QUIT("ReadInput", + "output of r(R)/H(R)/S(R)/T(R)/dH(R)/DM(R) is not " + "available for gamma only calculations"); + } + }; + this->add_item(item); + } + { + Input_Item item("out_mat_t"); + item.annotation = "output T(R) matrix"; + item.category = "Output information"; + item.type = "Boolean"; + item.description = "Generate files containing the kinetic energy matrix. The format will be the same as the Hamiltonian matrix and overlap matrix as mentioned in out_mat_hs2. The name of the files will be trs1_nao.csr and so on. Also controled by out_freq_ion and out_app_flag." + "\n\n[NOTE] In the 3.10-LTS version, the file name is data-TR-sparse_SPIN0.csr."; + item.default_value = "False"; + item.unit = "Ry"; + item.availability = "Numerical atomic orbital basis (not gamma-only algorithm)"; + read_sync_bool(input.out_mat_t); + this->add_item(item); + } + { + Input_Item item("out_mat_dh"); + item.annotation = "output of derivative of H(R) matrix"; + item.category = "Output information"; + item.type = "Boolean"; + item.description = "Whether to print files containing the derivatives of the Hamiltonian matrix. The format will be the same as the Hamiltonian matrix and overlap matrix as mentioned in out_mat_hs2. The name of the files will be dhrxs1_nao.csr, dhrys1_nao.csr, dhrzs1_nao.csr and so on. Also controled by out_freq_ion and out_app_flag." + "\n\n[NOTE] In the 3.10-LTS version, the file name is data-dHRx-sparse_SPIN0.csr and so on."; + item.default_value = "False"; + item.unit = "Ry/Bohr"; + item.availability = "Numerical atomic orbital basis (not gamma-only algorithm)"; + read_sync_bool(input.out_mat_dh); + item.check_value = [](const Input_Item& item, const Parameter& para) { + if (para.input.out_mat_dh && para.input.nspin == 4) + { + ModuleBase::WARNING_QUIT("ReadInput", "out_mat_dh is not available for nspin = 4"); + } + }; + this->add_item(item); + } + { + Input_Item item("out_mat_ds"); + item.annotation = "output of derivative of S(R) matrix"; + item.category = "Output information"; + item.type = "Boolean"; + item.description = "Whether to print files containing the derivatives of the overlap matrix. The format will be the same as the overlap matrix as mentioned in out_mat_dh. The name of the files will be dsrxs1.csr and so on. Also controled by out_freq_ion and out_app_flag. This feature can be used with calculation get_s." + "\n\n[NOTE] In the 3.10-LTS version, the file name is data-dSRx-sparse_SPIN0.csr and so on."; + item.default_value = "False"; + item.unit = "Ry/Bohr"; + item.availability = "Numerical atomic orbital basis (not gamma-only algorithm)"; + read_sync_bool(input.out_mat_ds); + item.check_value = [](const Input_Item& item, const Parameter& para) { + if (para.input.out_mat_ds && para.input.nspin == 4) + { + ModuleBase::WARNING_QUIT("ReadInput", "out_mat_ds is not available for nspin = 4"); + } + }; + this->add_item(item); + } + { + Input_Item item("out_mat_xc"); + item.annotation = "output exchange-correlation matrix in KS-orbital representation"; + item.category = "Output information"; + item.type = "Boolean"; + item.description = "Whether to print the upper triangular part of the exchange-correlation matrices in Kohn-Sham orbital representation: for each k point into files in the directory OUT.i_nao.txt, where {suffix}/vxc_out.dat. If EXX is calculated, the local and EXX part of band energy will also be printed in OUT.{suffix}/vxc_exx_out.dat, respectively. All the vxc_out.dat files contains 3 integers (nk, nspin, nband) followed by nk*nspin*nband lines of energy Hartree and eV." + "\n\n[NOTE] In the 3.10-LTS version, the file name is k-$k-Vxc and so on."; + item.default_value = "False"; + item.unit = "Ry"; + item.availability = "Numerical atomic orbital (NAO) and NAO-in-PW basis"; + read_sync_bool(input.out_mat_xc); + this->add_item(item); + } + { + Input_Item item("out_mat_xc2"); + item.annotation = "output exchange-correlation matrix in NAO representation"; + item.category = "Output information"; + item.type = "Boolean"; + item.description = "Whether to print the exchange-correlation matrices in numerical orbital representation: in CSR format in the directory OUT.s." + "\n\n[NOTE] In the 3.10-LTS version, the file name is Vxc_R_spin$s and so on."; + item.default_value = "False"; + item.unit = "Ry"; + item.availability = "Numerical atomic orbital (NAO) basis"; + read_sync_bool(input.out_mat_xc2); + this->add_item(item); + } + { + Input_Item item("out_mat_l"); + item.annotation = "output the expectation values of angular momentum operators"; + item.category = "Output information"; + item.type = R"(Boolean \[Integer\](optional))"; + item.description = "Whether to print the expectation value of the angular momentum operator , , and in the basis of the localized atomic orbitals. The files are named OUT.{suffix}_Lx.dat, OUT.{suffix}_Ly.dat, and OUT.{suffix}_Lz.dat. The second integer controls the precision of the output."; + item.default_value = "False 8"; + item.unit = ""; + item.availability = "Numerical atomic orbital (NAO) basis"; + item.read_value = [](const Input_Item& item, Parameter& para) { + const size_t count = item.get_size(); + if (count < 1) ModuleBase::WARNING_QUIT("ReadInput", "out_mat_l needs at least 1 value"); + para.input.out_mat_l[0] = assume_as_boolean(item.str_values[0]); + para.input.out_mat_l[1] = 8; + if (count >= 2) try { para.input.out_mat_l[1] = std::stoi(item.str_values[1]); } + catch (const std::invalid_argument&) { /* do nothing */ } + catch (const std::out_of_range&) {/* do nothing */} + }; + sync_intvec(input.out_mat_l, 2, 0); + this->add_item(item); + } + { + Input_Item item("out_xc_r"); + item.annotation = "if >=0, output the derivatives of exchange correlation in realspace, second parameter controls the precision"; + item.category = "Output information"; + item.type = R"(Integer \[Integer\](optional))"; + item.description = R"(The first integer controls whether to output the exchange-correlation (in Bohr^-3) on real space grids using Libxc to folder OUT.${suffix}: +* 0: rho, amag, sigma, exc +* 1: vrho, vsigma +* 2: v2rho2, v2rhosigma, v2sigma2 +* 3: v3rho3, v3rho2sigma, v3rhosigma2, v3sigma3 +* 4: v4rho4, v4rho3sigma, v4rho2sigma2, v4rhosigma3, v4sigma4 The meaning of the files is presented in Libxc + +The second integer controls the precision of the charge density output, if not given, will use 3 as default. + +The circle order of the charge density on real space grids is: x is the outer loop, then y and finally z (z is moving fastest).)"; + item.default_value = "-1 3"; + item.unit = ""; + item.availability = ""; + item.read_value = [](const Input_Item& item, Parameter& para) { + const size_t count = item.get_size(); + if (count >= 1) + { + para.input.out_xc_r[0] = std::stoi(item.str_values[0]); + } + if (count >= 2) + { + para.input.out_xc_r[1] = std::stoi(item.str_values[1]); + } + }; + // check value + item.check_value = [](const Input_Item& item, const Parameter& para) { + if (para.input.out_xc_r[0] >= 0) + { +#ifndef USE_LIBXC + ModuleBase::WARNING_QUIT("ReadInput", "INPUT out_xc_r is only aviailable with Libxc"); +#endif + } + }; + sync_intvec(input.out_xc_r, 2, -1); + this->add_item(item); + } + { + Input_Item item("out_eband_terms"); + item.annotation = "output the band energy terms separately"; + item.category = "Output information"; + item.type = "Boolean"; + item.description = "Whether to print the band energy terms separately in the file OUT.{term}_out.dat. The terms include the kinetic, pseudopotential (local + nonlocal), Hartree and exchange-correlation (including exact exchange if calculated)."; + item.default_value = "False"; + item.unit = ""; + item.availability = "Numerical atomic orbital basis"; + read_sync_bool(input.out_eband_terms); + this->add_item(item); + } + { + Input_Item item("out_mul"); + item.annotation = "mulliken charge or not"; + item.category = "Output information"; + item.type = "Boolean"; + item.description = "Whether to print the Mulliken population analysis result into OUT.${suffix}/mulliken.txt. In molecular dynamics calculations, the output frequency is controlled by out_freq_ion."; + item.default_value = "False"; + item.unit = ""; + item.availability = "Numerical atomic orbital basis"; + read_sync_bool(input.out_mul); + item.check_value = [](const Input_Item& item, const Parameter& para) { + if (para.input.basis_type == "pw" && para.input.out_mul) + { + ModuleBase::WARNING_QUIT("ReadInput", "out_mul is only for lcao"); + } + }; + this->add_item(item); + } + { + Input_Item item("out_app_flag"); + item.annotation = "whether output r(R), H(R), S(R), T(R), and dH(R) " + "matrices in an append manner during MD"; + item.category = "Output information"; + item.type = "Boolean"; + item.description = "Whether to output r(R), H(R), S(R), T(R), dH(R), dS(R), and wfc matrices in an append manner during molecular dynamics calculations. Check input parameters out_mat_r, out_mat_hs2, out_mat_t, out_mat_dh, out_mat_hs and out_wfc_lcao for more information."; + item.default_value = "true"; + item.unit = ""; + item.availability = "Numerical atomic orbital basis (not gamma-only algorithm)"; + read_sync_bool(input.out_app_flag); + this->add_item(item); + } + { + Input_Item item("out_ndigits"); + item.annotation = "the length of decimal part of output data"; + item.category = "Output information"; + item.type = "Integer"; + item.description = "Controls the length of decimal part of output data, such as charge density, Hamiltonian matrix, Overlap matrix and so on."; + item.default_value = "8"; + item.unit = ""; + item.availability = "out_mat_hs 1 case presently."; + read_sync_int(input.out_ndigits); + this->add_item(item); + } + { + Input_Item item("out_element_info"); + item.annotation = "output (projected) wavefunction of each element"; + item.category = "Output information"; + item.type = "Boolean"; + item.description = "Whether to print element information into files in the directory OUT.{element_label}, including pseudopotential and orbital information of the element (in atomic Ryberg units)."; + item.default_value = "False"; + item.unit = ""; + item.availability = ""; + read_sync_bool(input.out_element_info); + this->add_item(item); + } + { + Input_Item item("restart_save"); + item.annotation = "print to disk every step for restart"; + item.category = "Output information"; + item.type = "Boolean"; + item.description = R"(Whether to save charge density files per ionic step, which are used to restart calculations. According to the value of read_file_dir: +* auto: These files are saved in folder OUT.{read_file_dir}/restart/. + +If EXX(exact exchange) is calculated (i.e. dft_fuctional==hse/hf/pbe0/scan0 or rpa==True), the Hexx(R) files for each processor will also be saved in the above folder, which can be read in EXX calculation with restart_load==True.)"; + item.default_value = "False"; + item.unit = ""; + item.availability = "Numerical atomic orbital basis"; + read_sync_bool(input.restart_save); + this->add_item(item); + } + { + Input_Item item("rpa"); + item.annotation = "true:generate output files used in rpa calculation; " + "false:(default)"; + item.category = "Output information"; + item.type = "Boolean"; + item.description = "Generate output files used in rpa calculations." + "\n\n[NOTE] If symmetry is set to 1, additional files containing the necessary information for " + "exploiting symmetry in the subsequent rpa calculation will be output: " + "irreducible_sector.txt, symrot_k.txt and symrot_R.txt."; + item.default_value = "False"; + item.unit = ""; + item.availability = ""; + read_sync_bool(input.rpa); + this->add_item(item); + } + { + Input_Item item("out_pchg"); + item.annotation = "specify the bands to be calculated for the partial (band-decomposed) charge densities"; + item.category = "Output information"; + item.type = "String"; + item.description = R"(Specifies the electronic states to calculate the charge densities with state index for, using a space-separated string of 0s and 1s. Each digit in the string corresponds to a state, starting from the first state. A 1 indicates that the charge density should be calculated for that state, while a 0 means the state will be ignored. The parameter allows a compact and flexible notation (similar to ocp_set), for example the syntax 1 4*0 5*1 0 is used to denote the selection of states: 1 means calculate for the first state, 4*0 skips the next four states, 5*1 means calculate for the following five states, and the final 0 skips the next state. It's essential that the total count of states does not exceed the total number of states (nbands); otherwise, it results in an error, and the process exits. The input string must contain only numbers and the asterisk (*) for repetition, ensuring correct format and intention of state selection. The outputs comprise multiple .cube files following the naming convention pchgi[state]s[spin]k[kpoint].cube.)"; + item.default_value = "none"; + item.unit = ""; + item.availability = "For both PW and LCAO. When basis_type = lcao, used when calculation = get_pchg."; + item.read_value + = [](const Input_Item& item, Parameter& para) { parse_expression(item.str_values, para.input.out_pchg); }; + item.get_final_value = [](Input_Item& item, const Parameter& para) { + if (item.is_read()) + { + item.final_value.str(longstring(item.str_values)); + } + }; + add_intvec_bcast(input.out_pchg, para.input.out_pchg.size(), 0); + this->add_item(item); + } + { + Input_Item item("out_wfc_norm"); + item.annotation = "specify the bands to be calculated for the norm of wavefunctions"; + item.category = "Output information"; + item.type = "String"; + item.description = "Specifies the electronic states to calculate the real-space wave function modulus (norm, or known as the envelope function) with state index. The syntax and state selection rules are identical to out_pchg, but the output is the norm of the wave function. The outputs comprise multiple .cube files following the naming convention wfi[state]s[spin]k[kpoint].cube."; + item.default_value = "none"; + item.unit = ""; + item.availability = "For both PW and LCAO. When basis_type = lcao, used when calculation = get_wf."; + item.read_value = [](const Input_Item& item, Parameter& para) { + parse_expression(item.str_values, para.input.out_wfc_norm); + }; + item.get_final_value = [](Input_Item& item, const Parameter& para) { + if (item.is_read()) + { + item.final_value.str(longstring(item.str_values)); + } + }; + add_intvec_bcast(input.out_wfc_norm, para.input.out_wfc_norm.size(), 0); + this->add_item(item); + } + { + Input_Item item("out_wfc_re_im"); + item.annotation = "specify the bands to be calculated for the real and imaginary parts of wavefunctions"; + item.category = "Output information"; + item.type = "String"; + item.description = "Specifies the electronic states to calculate the real and imaginary parts of the wave function with state index. The syntax and state selection rules are identical to out_pchg, but the output contains both the real and imaginary components of the wave function. The outputs comprise multiple .cube files following the naming convention wfi[state]s[spin]k[kpoint][re/im].cube."; + item.default_value = "none"; + item.unit = ""; + item.availability = "For both PW and LCAO. When basis_type = lcao, used when calculation = get_wf."; + item.read_value = [](const Input_Item& item, Parameter& para) { + parse_expression(item.str_values, para.input.out_wfc_re_im); + }; + item.get_final_value = [](Input_Item& item, const Parameter& para) { + if (item.is_read()) + { + item.final_value.str(longstring(item.str_values)); + } + }; + add_intvec_bcast(input.out_wfc_re_im, para.input.out_wfc_re_im.size(), 0); + this->add_item(item); + } + { + Input_Item item("if_separate_k"); + item.annotation = "specify whether to write the partial charge densities for all k-points to individual files " + "or merge them"; + item.category = "Output information"; + item.type = "Boolean"; + item.description = "Specifies whether to write the partial charge densities for all k-points to individual files or merge them. Warning: Enabling symmetry may produce unwanted results due to reduced k-point weights and symmetry operations in real space. Therefore when calculating partial charge densities, if you are not sure what you want exactly, it is strongly recommended to set symmetry = -1. It is noteworthy that your symmetry setting should remain the same as that in the SCF procedure."; + item.default_value = "false"; + item.unit = ""; + item.availability = "For both PW and LCAO. When basis_type = pw, used if out_pchg is set. When basis_type = lcao, used only when calculation = get_pchg and gamma_only = 0."; + read_sync_bool(input.if_separate_k); + this->add_item(item); + } + { + Input_Item item("out_elf"); + item.annotation = "> 0 output electron localization function (ELF) for selected electron steps" + ", second parameter controls the precision, default is 3."; + item.category = "Output information"; + item.type = R"(Integer \[Integer\](optional))"; + item.description = R"(Whether to output the electron localization function (ELF) in the folder `OUT.${suffix}`. The files are named as +* nspin = 1: + * elf.cube: ${\rm{ELF}} = \frac{1}{1+\chi^2}$, $\chi = \frac{\frac{1}{2}\sum_{i}{f_i |\nabla\psi_{i}|^2} - \frac{|\nabla\rho|^2}{8\rho}}{\frac{3}{10}(3\pi^2)^{2/3}\rho^{5/3}}$; +* nspin = 2: + * elf1.cube, elf2.cube: ${\rm{ELF}}_\sigma = \frac{1}{1+\chi_\sigma^2}$, $\chi_\sigma = \frac{\frac{1}{2}\sum_{i}{f_i |\nabla\psi_{i,\sigma}|^2} - \frac{|\nabla\rho_\sigma|^2}{8\rho_\sigma}}{\frac{3}{10}(6\pi^2)^{2/3}\rho_\sigma^{5/3}}$; + * elf.cube: ${\rm{ELF}} = \frac{1}{1+\chi^2}$, $\chi = \frac{\frac{1}{2}\sum_{i,\sigma}{f_i |\nabla\psi_{i,\sigma}|^2} - \sum_{\sigma}{\frac{|\nabla\rho_\sigma|^2}{8\rho_\sigma}}}{\sum_{\sigma}{\frac{3}{10}(6\pi^2)^{2/3}\rho_\sigma^{5/3}}}$; +* nspin = 4 (noncollinear): + * elf.cube: ELF for total charge density, ${\rm{ELF}} = \frac{1}{1+\chi^2}$, $\chi = \frac{\frac{1}{2}\sum_{i}{f_i |\nabla\psi_{i}|^2} - \frac{|\nabla\rho|^2}{8\rho}}{\frac{3}{10}(3\pi^2)^{2/3}\rho^{5/3}}$ + +The second integer controls the precision of the kinetic energy density output, if not given, will use 3 as default. For purpose restarting from this file and other high-precision involved calculation, recommend to use 10. + +In molecular dynamics calculations, the output frequency is controlled by out_freq_ion.)"; + item.default_value = "0 3"; + item.unit = ""; + item.availability = "Only for Kohn-Sham DFT and Orbital Free DFT."; + item.read_value = [](const Input_Item& item, Parameter& para) { + const size_t count = item.get_size(); + if (count >= 1) + { + para.input.out_elf[0] = std::stoi(item.str_values[0]); + } + if (count >= 2) + { + para.input.out_elf[1] = std::stoi(item.str_values[1]); + } + }; + item.check_value = [](const Input_Item& item, const Parameter& para) { + if (para.input.out_elf[0] > 0 && para.input.esolver_type != "ksdft" && para.input.esolver_type != "ofdft") + { + ModuleBase::WARNING_QUIT("ReadInput", "ELF is only aviailable for ksdft and ofdft"); + } + }; + sync_intvec(input.out_elf, 2, 0); + this->add_item(item); + } + { + // refactored from the removal of wannier input file, ISSUE 6469 + Input_Item item("out_spillage"); + item.annotation = "output spillage of wavefunctions. This parameter only accepts 0 or 2."; + item.category = "Output information"; + item.type = "Integer"; + item.description = "This output is only intentively needed by the ABACUS numerical atomic orbital generation workflow. This parameter is used to control whether to output the overlap integrals between truncated spherical Bessel functions (TSBFs) and plane-wave basis expanded wavefunctions (named as OVERLAP_Q), and between TSBFs (named as OVERLAP_Sq), also their first order derivatives. The output files are named starting with orb_matrix. A value of 2 would enable the output."; + item.default_value = "0"; + item.unit = ""; + item.availability = "Only for Kohn-Sham DFT with plane-wave basis."; + read_sync_int(input.out_spillage); + this->add_item(item); + } + { + Input_Item item("out_dipole"); + item.annotation = "output dipole or not"; + item.category = "RT-TDDFT: Real-Time Time-Dependent Density Functional Theory"; + item.type = "Boolean"; + item.description = R"(* True: Output electric dipole moment. +* False: Do not output electric dipole moment.)"; + item.default_value = "False"; + item.unit = ""; + item.availability = ""; + read_sync_bool(input.out_dipole); + this->add_item(item); + } + { + Input_Item item("out_current"); + item.annotation = "output current or not"; + item.category = "RT-TDDFT: Real-Time Time-Dependent Density Functional Theory"; + item.type = "Integer"; + item.description = R"(* 0: Do not output current. +* 1: Output current using the two-center integral, faster. +* 2: Output current using the matrix commutation, more precise.)"; + item.default_value = "0"; + item.unit = ""; + item.availability = ""; + read_sync_int(input.out_current); + this->add_item(item); + } + { + Input_Item item("out_current_k"); + item.annotation = "output current for each k"; + item.category = "RT-TDDFT: Real-Time Time-Dependent Density Functional Theory"; + item.type = "Boolean"; + item.description = R"(* True: Output current for each k-points separately. +* False: Output current in total.)"; + item.default_value = "False"; + item.unit = ""; + item.availability = ""; + read_sync_bool(input.out_current_k); + this->add_item(item); + } + { + Input_Item item("out_efield"); + item.annotation = "output dipole or not"; + item.category = "RT-TDDFT: Real-Time Time-Dependent Density Functional Theory"; + item.type = "Boolean"; + item.description = R"(Whether to output the electric field data to files. When enabled, writes real-time electric field values (unit: V/A) into files named efield_[num].txt, where [num] is the sequential index of the electric field ranges from 0 to N-1 for N configured fields. It is noteworthy that the field type sequence follows td_ttype, while the direction sequence follows td_vext_dire. +* True: Output electric field. +* False: Do not output electric field.)"; + item.default_value = "False"; + item.unit = ""; + item.availability = ""; + read_sync_bool(input.out_efield); + this->add_item(item); + } + { + Input_Item item("out_vecpot"); + item.annotation = "output TDDFT vector potential or not"; + item.category = "RT-TDDFT: Real-Time Time-Dependent Density Functional Theory"; + item.type = "Boolean"; + item.description = R"(Output vector potential or not (unit: a.u.). +* True: Output vector potential into file At.dat. +* False: Do not output vector potential.)"; + item.default_value = "False"; + item.unit = ""; + item.availability = ""; + read_sync_bool(input.out_vecpot); + this->add_item(item); + } + { + // recover the functionality of test_symmetry by introducing a new keyword "out_symm_mat" + // the "out_symm_mat" keyword will be a + Input_Item item("cal_symm_repr"); + item.annotation = "output matrix representation of symmetry operation into running log file" + " > 0 output the matrix representation of symmetry operation " + ", the second parameter controls the precision, default is 3."; + item.category = "System variables"; + item.type = R"(Integer \[Integer\](optional))"; + item.description = "Whether to print the matrix representation of symmetry operation to running log file. If the first value is given as 1, then all matrix representations will be printed. The second optional parameter controls the precision (number of digits) to print, default is 3, which is enough for a quick check."; + item.default_value = "1 3"; + item.unit = ""; + item.availability = ""; + item.read_value = [](const Input_Item& item, Parameter& para) { + const size_t count = item.get_size(); + if (count >= 1) + { + para.input.cal_symm_repr[0] = std::stoi(item.str_values[0]); + } + if (count >= 2) + { + para.input.cal_symm_repr[1] = std::stoi(item.str_values[1]); + } + }; + item.check_value = [](const Input_Item& item, const Parameter& para) { + if (para.input.cal_symm_repr[0] < 0 || para.input.cal_symm_repr[0] > 1) + { + ModuleBase::WARNING_QUIT("ReadInput", "cal_symm_repr should be 0 or 1"); + } + }; + sync_intvec(input.cal_symm_repr, 2, 0); + this->add_item(item); + } + { + // refactored from the removal of wannier input file, ISSUE 6469 + Input_Item item("spillage_outdir"); + item.annotation = "output directory for spillage of wavefunctions."; + item.category = "Input files"; + item.type = "String"; + item.description = "The directory to save the spillage files."; + item.default_value = "\"./\""; + item.unit = ""; + item.availability = "Used only for plane wave basis set."; + read_sync_string(input.spillage_outdir); + this->add_item(item); + } +} +} // namespace ModuleIO diff --git a/source/source_io/module_parameter/read_input_item_postprocess.cpp b/source/source_io/module_parameter/read_input_item_postprocess.cpp new file mode 100644 index 0000000000..b9a6e8f6ba --- /dev/null +++ b/source/source_io/module_parameter/read_input_item_postprocess.cpp @@ -0,0 +1,496 @@ +#include "source_base/global_function.h" +#include "source_base/tool_quit.h" +#include "read_input.h" +#include "read_input_tool.h" +namespace ModuleIO +{ +void ReadInput::item_postprocess() +{ + // NOTE: The order of add_item() calls below determines the parameter order + // in the generated documentation (docs/advanced/input_files/input-main.md). + // Please preserve this ordering when adding new parameters. + { + Input_Item item("dos_edelta_ev"); + item.annotation = "delta energy for dos"; + item.category = "Density of states"; + item.type = "Real"; + item.description = "The step size in writing Density of States (DOS)"; + item.default_value = "0.01"; + item.unit = "eV"; + item.availability = ""; + read_sync_double(input.dos_edelta_ev); + this->add_item(item); + } + { + Input_Item item("dos_sigma"); + item.annotation = "gauss b coefficeinet(default=0.07)"; + item.category = "Density of states"; + item.type = "Real"; + item.description = "The width of the Gaussian factor when obtaining smeared Density of States (DOS)"; + item.default_value = "0.07"; + item.unit = "eV"; + item.availability = ""; + read_sync_double(input.dos_sigma); + this->add_item(item); + } + { + Input_Item item("dos_scale"); + item.annotation = "scale dos range by"; + item.category = "Density of states"; + item.type = "Real"; + item.description = "Defines the energy range of DOS output as (emax-emin)*(1+dos_scale), centered at (emax+emin)/2. This parameter will be used when dos_emin and dos_emax are not set."; + item.default_value = "0.01"; + item.unit = "eV"; + item.availability = ""; + read_sync_double(input.dos_scale); + this->add_item(item); + } + // DOS + { + Input_Item item("dos_emin_ev"); + item.annotation = "minimal range for dos"; + item.category = "Density of states"; + item.type = "Real"; + item.description = R"(The minimal range for Density of States (DOS) +* If set, "dos_scale" will be ignored.)"; + item.default_value = "Minimal eigenenergy of"; + item.unit = "eV"; + item.availability = ""; + item.read_value = [](const Input_Item& item, Parameter& para) { + para.input.dos_emin_ev = doublevalue; + para.sys.dos_setemin = true; + }; + sync_double(input.dos_emin_ev); + add_bool_bcast(sys.dos_setemin); + this->add_item(item); + } + { + Input_Item item("dos_emax_ev"); + item.annotation = "maximal range for dos"; + item.category = "Density of states"; + item.type = "Real"; + item.description = R"(The maximal range for Density of States (DOS) +* If set, "dos_scale" will be ignored.)"; + item.default_value = "Maximal eigenenergy of"; + item.unit = "eV"; + item.availability = ""; + item.read_value = [](const Input_Item& item, Parameter& para) { + para.input.dos_emax_ev = doublevalue; + para.sys.dos_setemax = true; + }; + sync_double(input.dos_emax_ev); + add_bool_bcast(sys.dos_setemax); + this->add_item(item); + } + { + Input_Item item("dos_nche"); + item.annotation = "orders of Chebyshev expansions for dos"; + item.category = "Density of states"; + item.type = "Integer"; + item.description = "The order of Chebyshev expansions when using Stochastic Density Functional Theory (SDFT) to calculate DOS."; + item.default_value = "100"; + item.unit = ""; + item.availability = ""; + read_sync_int(input.dos_nche); + this->add_item(item); + } + { + Input_Item item("stm_bias"); + item.annotation = "bias voltage used to calculate ldos"; + item.category = "Density of states"; + item.type = "Real Real(optional) Integer(optional)"; + item.description = R"(The bias voltage used to calculate local density of states to simulate scanning tunneling microscope, see details in out_ldos. When using three parameters: + +* The first parameter specifies the initial bias voltage value. +* The second parameter defines the voltage increment (step size between consecutive bias values). +* The third parameter determines the total number of voltage points)"; + item.default_value = "1.0"; + item.unit = "V"; + item.availability = ""; + item.read_value = [](const Input_Item& item, Parameter& para) { + const size_t count = item.get_size(); + if (count != 1 && count != 3) + { + ModuleBase::WARNING_QUIT("ReadInput", "stm_bias should have 1 or 3 values"); + } + para.input.stm_bias[0] = std::stod(item.str_values[0]); + para.input.stm_bias[1] = (count == 3) ? std::stod(item.str_values[1]) : 0.1; + para.input.stm_bias[2] = (count == 3) ? std::stod(item.str_values[2]) : 1; + }; + item.check_value = [](const Input_Item& item, const Parameter& para) { + if (para.input.stm_bias[2] <= 0) + { + ModuleBase::WARNING_QUIT("ReadInput", "stm_bias[2] should be greater than 0"); + } + if (para.input.stm_bias[1] == 0) + { + ModuleBase::WARNING_QUIT("ReadInput", "stm_bias[1] should be nonzero"); + } + }; + sync_doublevec(input.stm_bias, 3, 0); + this->add_item(item); + } + { + Input_Item item("ldos_line"); + item.annotation = "start and end point of the line (direct coordinates) and number of points"; + item.category = "Density of states"; + item.type = "Real*6 Integer(optional)"; + item.description = "Specify the path of the three-dimensional space and display LDOS in the form of a two-dimensional color chart, see details in out_ldos. The first three paramenters are the direct coordinates of the start point, the next three paramenters are the direct coordinates of the end point, and the final one is the number of points along the path, whose default is 100."; + item.default_value = "0.0 0.0 0.0 0.0 0.0 1.0 100"; + item.unit = ""; + item.availability = ""; + item.read_value = [](const Input_Item& item, Parameter& para) { + const size_t count = item.get_size(); + if (count != 6 && count != 7) + { + ModuleBase::WARNING_QUIT("ReadInput", "ldos_line should have 6 or 7 values"); + } + for (int i = 0; i < 6; ++i) + { + para.input.ldos_line[i] = std::stod(item.str_values[i]); + } + para.input.ldos_line[6] = (count == 7) ? std::stoi(item.str_values[6]) : 100; + }; + item.check_value = [](const Input_Item& item, const Parameter& para) { + if (para.input.ldos_line[6] <= 0) + { + ModuleBase::WARNING_QUIT("ReadInput", "ldos_line[6] should be greater than 0"); + } + }; + sync_doublevec(input.ldos_line, 7, 0); + this->add_item(item); + } + + // Electronic Conductivity + { + Input_Item item("cal_cond"); + item.annotation = "calculate electronic conductivities"; + item.category = "Electronic conductivities"; + item.type = "Boolean"; + item.description = "Whether to calculate electronic conductivities."; + item.default_value = "False"; + item.unit = ""; + item.availability = "basis_type = pw"; + read_sync_bool(input.cal_cond); + this->add_item(item); + } + { + Input_Item item("cond_che_thr"); + item.annotation = "control the error of Chebyshev expansions for conductivities"; + item.category = "Electronic conductivities"; + item.type = "Real"; + item.description = "Control the error of Chebyshev expansions for conductivities."; + item.default_value = "1e-8"; + item.unit = ""; + item.availability = "esolver_type = sdft"; + read_sync_double(input.cond_che_thr); + this->add_item(item); + } + { + Input_Item item("cond_dw"); + item.annotation = "frequency interval for conductivities"; + item.category = "Electronic conductivities"; + item.type = "Real"; + item.description = "Frequency interval () for frequency-dependent conductivities."; + item.default_value = "0.1"; + item.unit = "eV"; + item.availability = "basis_type = pw"; + read_sync_double(input.cond_dw); + this->add_item(item); + } + { + Input_Item item("cond_wcut"); + item.annotation = "cutoff frequency (omega) for conductivities"; + item.category = "Electronic conductivities"; + item.type = "Real"; + item.description = "Cutoff frequency for frequency-dependent conductivities."; + item.default_value = "10.0"; + item.unit = "eV"; + item.availability = "basis_type = pw"; + read_sync_double(input.cond_wcut); + this->add_item(item); + } + { + Input_Item item("cond_dt"); + item.annotation = "t interval to integrate Onsager coefficiencies"; + item.category = "Electronic conductivities"; + item.type = "Real"; + item.description = "Time interval () to integrate Onsager coefficients."; + item.default_value = "0.02"; + item.unit = "a.u."; + item.availability = "basis_type = pw"; + read_sync_double(input.cond_dt); + this->add_item(item); + } + { + Input_Item item("cond_dtbatch"); + item.annotation = "exp(iH*dt*cond_dtbatch) is expanded with Chebyshev expansion"; + item.category = "Electronic conductivities"; + item.type = "Integer"; + item.description = R"(exp(iH\dt\cond_dtbatch) is expanded with Chebyshev expansion to calculate conductivities. It is faster but costs more memory. +* If cond_dtbatch = 0: Autoset this parameter to make expansion orders larger than 100.)"; + item.default_value = "0"; + item.unit = ""; + item.availability = "esolver_type = sdft"; + read_sync_int(input.cond_dtbatch); + this->add_item(item); + } + { + Input_Item item("cond_smear"); + item.annotation = "Smearing method for conductivities"; + item.category = "Electronic conductivities"; + item.type = "Integer"; + item.description = R"(Smearing method for conductivities +* 1: Gaussian smearing +* 2: Lorentzian smearing)"; + item.default_value = "1"; + item.unit = ""; + item.availability = ""; + read_sync_int(input.cond_smear); + this->add_item(item); + } + { + Input_Item item("cond_fwhm"); + item.annotation = "FWHM for conductivities"; + item.category = "Electronic conductivities"; + item.type = "Real"; + item.description = "FWHM for conductivities. For Gaussian smearing, ; for Lorentzian smearing, ."; + item.default_value = "0.4"; + item.unit = "eV"; + item.availability = "basis_type = pw"; + read_sync_double(input.cond_fwhm); + this->add_item(item); + } + { + Input_Item item("cond_nonlocal"); + item.annotation = "Nonlocal effects for conductivities"; + item.category = "Electronic conductivities"; + item.type = "Boolean"; + item.description = R"(Whether to consider nonlocal potential correction when calculating velocity matrix . +* True: . +* False: .)"; + item.default_value = "True"; + item.unit = ""; + item.availability = "basis_type = pw"; + read_sync_bool(input.cond_nonlocal); + this->add_item(item); + } + + // berry_wannier + { + Input_Item item("berry_phase"); + item.annotation = "calculate berry phase or not"; + item.category = "Berry phase and wannier90 interface"; + item.type = "Boolean"; + item.description = R"(Controls the calculation of Berry phase +* true: Calculate Berry phase. +* false: Do not calculate Berry phase.)"; + item.default_value = "false"; + item.unit = ""; + item.availability = ""; + read_sync_bool(input.berry_phase); + item.check_value = [](const Input_Item& item, const Parameter& para) { + if (para.input.berry_phase) + { + if (para.input.basis_type != "pw" && para.input.basis_type != "lcao") + { + ModuleBase::WARNING_QUIT("ReadInput", + "calculate berry phase, please " + "set basis_type = pw or lcao"); + } + if (para.input.calculation != "nscf") + { + ModuleBase::WARNING_QUIT("ReadInput", "calculate berry phase, please set calculation = nscf"); + } + if (!(para.input.gdir == 1 || para.input.gdir == 2 || para.input.gdir == 3)) + { + ModuleBase::WARNING_QUIT("ReadInput", "calculate berry phase, please set gdir = 1 or 2 or 3"); + } + if (para.input.symmetry != "-1") + { + ModuleBase::WARNING_QUIT("ReadInput", "calculate berry phase, please set symmetry = -1"); + } + } + }; + this->add_item(item); + } + { + Input_Item item("gdir"); + item.annotation = "calculate the polarization in the direction of the " + "lattice vector"; + item.category = "Berry phase and wannier90 interface"; + item.type = "Integer"; + item.description = R"(The direction of the polarization in the lattice vector for Berry phase calculation +* 1: Calculate the polarization in the direction of the lattice vector a_1 defined in the STRU file. +* 2: Calculate the polarization in the direction of the lattice vector a_2 defined in the STRU file. +* 3: Calculate the polarization in the direction of the lattice vector a_3 defined in the STRU file.)"; + item.default_value = "3"; + item.unit = ""; + item.availability = ""; + read_sync_int(input.gdir); + this->add_item(item); + } + { + Input_Item item("towannier90"); + item.annotation = "use wannier90 code interface or not"; + item.category = "Berry phase and wannier90 interface"; + item.type = "Boolean"; + item.description = R"(Controls the generation of files for the Wannier90 code. +* 1: Generate files for the Wannier90 code. +* 0: Do not generate files for the Wannier90 code.)"; + item.default_value = "0"; + item.unit = ""; + item.availability = ""; + read_sync_bool(input.towannier90); + item.check_value = [](const Input_Item& item, const Parameter& para) { + if (para.input.towannier90) + { + if (para.input.calculation != "nscf") + { + ModuleBase::WARNING_QUIT("ReadInput", "to use towannier90, please set calculation = nscf"); + } + if (para.input.nspin == 2) + { + if (para.input.wannier_spin != "up" && para.input.wannier_spin != "down") + { + ModuleBase::WARNING_QUIT("ReadInput", + "to use towannier90, please set wannier_spin = up " + "or down"); + } + } + } + }; + this->add_item(item); + } + { + Input_Item item("nnkpfile"); + item.annotation = "the wannier90 code nnkp file name"; + item.category = "Berry phase and wannier90 interface"; + item.type = "String"; + item.description = "The file name generated when running \"wannier90 -pp ...\" command"; + item.default_value = "seedname.nnkp"; + item.unit = ""; + item.availability = ""; + read_sync_string(input.nnkpfile); + this->add_item(item); + } + { + Input_Item item("wannier_method"); + item.annotation = "different implementation methods under Lcao basis set"; + item.category = "Berry phase and wannier90 interface"; + item.type = "Integer"; + item.description = R"(Only available on LCAO basis, using different methods to generate "\.mmn" file and "\.amn" file. +* 1: Calculated using the lcao_in_pw method, the calculation accuracy can be improved by increasing ecutwfc to maintain consistency with the pw basis set results. +* 2: The overlap between atomic orbitals is calculated using grid integration. The radial grid points are generated using the Gauss-Legendre method, while the spherical grid points are generated using the Lebedev-Laikov method.)"; + item.default_value = "1"; + item.unit = ""; + item.availability = ""; + item.reset_value = [](const Input_Item& item, Parameter& para) { + /* + Developer's notes: on the repair of lcao_in_pw + + lcao_in_pw is a special basis_type, for scf calculation, + it follows workflow of pw, but for nscf the toWannier90 + calculation, the interface is in ESolver_KS_LCAO_elec, + therefore lcao_in_pw for towannier90 calculation follows + lcao. + + In the future lcao_in_pw will have its own ESolver. + + 2023/12/22 use new psi_initializer to expand numerical + atomic orbitals, ykhuang + */ + if (para.input.towannier90 && para.input.basis_type == "lcao_in_pw") + { + para.input.wannier_method = 1; + } + }; + read_sync_int(input.wannier_method); + this->add_item(item); + } + { + Input_Item item("wannier_spin"); + item.annotation = "calculate spin in wannier90 code interface"; + item.category = "Berry phase and wannier90 interface"; + item.type = "String"; + item.description = R"(The spin direction for the Wannier function calculation when nspin is set to 2 +* up: Calculate spin up for the Wannier function. +* down: Calculate spin down for the Wannier function.)"; + item.default_value = "up"; + item.unit = ""; + item.availability = ""; + read_sync_string(input.wannier_spin); + this->add_item(item); + } + { + Input_Item item("out_wannier_mmn"); + item.annotation = "output .mmn file or not"; + item.category = "Berry phase and wannier90 interface"; + item.type = "Boolean"; + item.description = R"(Write the "*.mmn" file or not. +* 0: don't write the "*.mmn" file. +* 1: write the "*.mmn" file.)"; + item.default_value = "1"; + item.unit = ""; + item.availability = ""; + read_sync_bool(input.out_wannier_mmn); + this->add_item(item); + } + { + Input_Item item("out_wannier_amn"); + item.annotation = "output .amn file or not"; + item.category = "Berry phase and wannier90 interface"; + item.type = "Boolean"; + item.description = R"(Write the "*.amn" file or not. +* 0: don't write the "*.amn" file. +* 1: write the "*.amn" file.)"; + item.default_value = "1"; + item.unit = ""; + item.availability = ""; + read_sync_bool(input.out_wannier_amn); + this->add_item(item); + } + { + Input_Item item("out_wannier_eig"); + item.annotation = "output .eig file or not"; + item.category = "Berry phase and wannier90 interface"; + item.type = "Boolean"; + item.description = R"(Write the "*.eig" file or not. +* 0: don't write the "*.eig" file. +* 1: write the "*.eig" file.)"; + item.default_value = "1"; + item.unit = ""; + item.availability = ""; + read_sync_bool(input.out_wannier_eig); + this->add_item(item); + } + { + Input_Item item("out_wannier_unk"); + item.annotation = "output UNK. file or not"; + item.category = "Berry phase and wannier90 interface"; + item.type = "Boolean"; + item.description = R"(Write the "UNK.*" file or not. +* 0: don't write the "UNK.*" file. +* 1: write the "UNK.*" file.)"; + item.default_value = "0"; + item.unit = ""; + item.availability = ""; + read_sync_bool(input.out_wannier_unk); + this->add_item(item); + } + { + Input_Item item("out_wannier_wvfn_formatted"); + item.annotation = "output UNK. file in text format or in binary format"; + item.category = "Berry phase and wannier90 interface"; + item.type = "Boolean"; + item.description = R"(Write the "UNK.*" file in ASCII format or binary format. +* 0: write the "UNK.*" file in binary format. +* 1: write the "UNK.*" file in ASCII format (text file format).)"; + item.default_value = "1"; + item.unit = ""; + item.availability = ""; + read_sync_bool(input.out_wannier_wvfn_formatted); + this->add_item(item); + } +} +} // namespace ModuleIO diff --git a/source/source_io/module_parameter/read_input_item_relax.cpp b/source/source_io/module_parameter/read_input_item_relax.cpp new file mode 100644 index 0000000000..6c06fba889 --- /dev/null +++ b/source/source_io/module_parameter/read_input_item_relax.cpp @@ -0,0 +1,416 @@ +#include "source_base/global_function.h" +#include "source_base/tool_quit.h" +#include "read_input.h" +#include "read_input_tool.h" + +namespace ModuleIO +{ + + +void ReadInput::item_relax() +{ + // NOTE: The order of add_item() calls below determines the parameter order + // in the generated documentation (docs/advanced/input_files/input-main.md). + // Please preserve this ordering when adding new parameters. + { + Input_Item item("relax_method"); + item.annotation = "cg; bfgs; sd; cg; cg_bfgs;"; + item.category = "Geometry relaxation"; + item.type = "Vector of string"; + item.description = R"(The methods to do geometry optimization. The available algorithms depend on the relax_new setting. + +First element (algorithm selection): +* cg: Conjugate gradient (CG) algorithm. Available for both relax_new = True (default, simultaneous optimization) and relax_new = False (nested optimization). See relax_new for implementation details. +* bfgs: Broyden–Fletcher–Goldfarb–Shanno (BFGS) quasi-Newton algorithm. Only available when relax_new = False. +* lbfgs: Limited-memory BFGS algorithm, suitable for large systems. Only available when relax_new = False. +* cg_bfgs: Mixed method starting with CG and switching to BFGS when force convergence reaches relax_cg_thr. Only available when relax_new = False. +* sd: Steepest descent algorithm. Only available when relax_new = False. Not recommended for production use. +* fire: Fast Inertial Relaxation Engine method, a molecular-dynamics-based relaxation algorithm. Use by setting calculation to md and md_type to fire. Ionic velocities must be set in STRU file. See fire for details. + +Second element (BFGS variant, only when first element is bfgs): +* 1: Traditional BFGS that updates the Hessian matrix B and then inverts it. +* 2 or omitted: Default BFGS that directly updates the inverse Hessian (recommended). + +[NOTE] In the 3.10-LTS version, the type of this parameter is std::string. It can be set to "cg", "bfgs", "cg_bfgs", "bfgs_trad", "lbfgs", "sd", "fire".)"; + item.default_value = "cg 1"; + item.unit = ""; + item.availability = ""; + item.read_value = [](const Input_Item& item, Parameter& para) { + if(item.get_size()==1) + { + para.input.relax_method[0] = item.str_values[0]; + para.input.relax_method[1] = "1"; + } + else if(item.get_size()>=2) + { + para.input.relax_method[0] = item.str_values[0]; + para.input.relax_method[1] = item.str_values[1]; + } + }; + item.check_value = [](const Input_Item& item, const Parameter& para) { + const std::vector relax_methods = {"cg", "sd", "cg_bfgs","lbfgs","bfgs"}; + if (std::find(relax_methods.begin(), relax_methods.end(), para.input.relax_method[0]) == relax_methods.end()) { + const std::string warningstr = nofound_str(relax_methods, "relax_method"); + ModuleBase::WARNING_QUIT("ReadInput", warningstr); + } + }; + sync_stringvec(input.relax_method, para.input.relax_method.size(), ""); + this->add_item(item); + + + // Input_Item item("relax_method"); + // item.annotation = "cg; bfgs; sd; cg; cg_bfgs;"; + // read_sync_string(input.relax_method); + // item.check_value = [](const Input_Item& item, const Parameter& para) { + // const std::vector relax_methods = {"cg", "bfgs_old", "sd", "cg_bfgs","bfgs","lbfgs"}; + // if (std::find(relax_methods.begin(),relax_methods.end(), para.input.relax_method)==relax_methods.end()) + // { + // const std::string warningstr = nofound_str(relax_methods, "relax_method"); + // ModuleBase::WARNING_QUIT("ReadInput", warningstr); + // } + // }; + // this->add_item(item); + } + { + Input_Item item("relax_new"); + item.annotation = "whether to use the new relaxation method"; + item.category = "Geometry relaxation"; + item.type = "Boolean"; + item.description = R"(Controls which implementation of geometry relaxation to use. At the end of 2022, a new implementation of the Conjugate Gradient (CG) method was introduced for relax and cell-relax calculations, while the old implementation was kept for backward compatibility. + + +* True (default): Use the new CG implementation with the following features: + * Simultaneous optimization of ionic positions and cell parameters (for cell-relax) + * Line search algorithm for step size determination + * Only CG algorithm is available (relax_method must be cg) + * Supports advanced cell constraints: fixed_axes = "shape", "volume", "a", "b", "c", etc. + * Supports fixed_ibrav to maintain lattice type + * More efficient for variable-cell relaxation + * Step size controlled by relax_scale_force + +- False: Use the old implementation with the following features: + * Nested optimization procedure: ionic positions optimized first, then cell parameters (for cell-relax) + * Multiple algorithms available: cg, bfgs, lbfgs, sd, cg_bfgs + * Limited cell constraints: only fixed_axes = "volume" is supported + * Traditional approach with separate ionic and cell optimization steps)"; + item.default_value = "True"; + item.unit = ""; + item.availability = ""; + read_sync_bool(input.relax_new); + item.reset_value = [](const Input_Item& item, Parameter& para) { + if (para.input.relax_new && para.input.relax_method[0] != "cg") + { + para.input.relax_new = false; + } + }; + this->add_item(item); + } + { + Input_Item item("relax_scale_force"); + item.annotation = "controls the size of the first CG step if relax_new is true"; + item.category = "Geometry relaxation"; + item.type = "Real"; + item.description = "The paramether controls the size of the first conjugate gradient step. A smaller value means the first step along a new CG direction is smaller. This might be helpful for large systems, where it is safer to take a smaller initial step to prevent the collapse of the whole configuration."; + item.default_value = "0.5"; + item.unit = ""; + item.availability = "Only used when relax_new set to True"; + read_sync_double(input.relax_scale_force); + this->add_item(item); + } + { + Input_Item item("relax_nmax"); + item.annotation = "number of ion iteration steps"; + item.category = "Geometry relaxation"; + item.type = "Integer"; + item.description = "The maximal number of ionic iteration steps. If set to 0, the code performs a quick \"dry run\", stopping just after initialization. This is useful to check for input correctness and to have the summary printed."; + item.default_value = "1 for SCF, 50 for relax and cell-relax calcualtions"; + item.unit = ""; + item.availability = ""; + item.reset_value = [](const Input_Item& item, Parameter& para) { + const std::string& calculation = para.input.calculation; + const std::vector singlelist + = {"scf", "nscf", "get_s", "get_pchg", "get_wf", "test_memory", "test_neighbour", "gen_bessel"}; + if (std::find(singlelist.begin(), singlelist.end(), calculation) != singlelist.end()) + { + if (para.input.relax_nmax != 0) + { + para.input.relax_nmax = 1; + } + } + else if (calculation == "relax" || calculation == "cell-relax") + { + if (para.input.relax_nmax < 0) + { + para.input.relax_nmax = 50; + } + } + }; + read_sync_int(input.relax_nmax); + this->add_item(item); + } + { + Input_Item item("relax_cg_thr"); + item.annotation = "threshold for switching from cg to bfgs, unit: eV/Angstrom"; + item.category = "Geometry relaxation"; + item.type = "Real"; + item.description = "When relax_method is set to cg_bfgs, a mixed algorithm of conjugate gradient (CG) and Broyden–Fletcher–Goldfarb–Shanno (BFGS) is used. The ions first move according to the CG method, then switch to the BFGS method when the maximum force on atoms is reduced below this threshold."; + item.default_value = "0.5"; + item.unit = "eV/Angstrom"; + item.availability = "Only used when relax_new = False and relax_method = cg_bfgs"; + read_sync_double(input.relax_cg_thr); + this->add_item(item); + } + { + Input_Item item("force_thr"); + item.annotation = "force threshold, unit: Ry/Bohr"; + item.category = "Geometry relaxation"; + item.type = "Real"; + item.description = "Threshold of the force convergence. The threshold is compared with the largest force among all of the atoms. The recommended value for using atomic orbitals is 0.04 eV/Angstrom (0.0016 Ry/Bohr). The parameter is equivalent to force_thr_ev except for the unit, you can choose either you like."; + item.default_value = "0.001"; + item.unit = "Ry/Bohr (25.7112 eV/Angstrom)"; + item.availability = ""; + // read_sync_double(input.force_thr); + item.read_value = [](const Input_Item& item, Parameter& para) { para.input.force_thr = doublevalue; }; + item.reset_value = [](const Input_Item& item, Parameter& para) { + if (para.input.force_thr == -1 && para.input.force_thr_ev == -1) + { + para.input.force_thr = 1.0e-3; // default value + para.input.force_thr_ev = para.input.force_thr * 13.6058 / 0.529177; + } + else if (para.input.force_thr == -1 && para.input.force_thr_ev != -1) + { + para.input.force_thr = para.input.force_thr_ev / 13.6058 * 0.529177; + } + else + { + // if both force_thr and force_thr_ev are set, use force_thr + ModuleBase::WARNING("ReadInput", "both force_thr and force_thr_ev are set, use force_thr"); + para.input.force_thr_ev = para.input.force_thr * 13.6058 / 0.529177; + } + }; + sync_double(input.force_thr); + this->add_item(item); + } + { + Input_Item item("force_thr_ev"); + item.annotation = "force threshold, unit: eV/Angstrom"; + item.category = "Geometry relaxation"; + item.type = "Real"; + item.description = "Threshold of the force convergence. The threshold is compared with the largest force among all of the atoms. The recommended value for using atomic orbitals is 0.04 eV/Angstrom (0.0016 Ry/Bohr). The parameter is equivalent to force_thr except for the unit. You may choose either you like."; + item.default_value = "0.0257112"; + item.unit = "eV/Angstrom (0.03889 Ry/Bohr)"; + item.availability = ""; + item.read_value = [](const Input_Item& item, Parameter& para) { para.input.force_thr_ev = doublevalue; }; + sync_double(input.force_thr_ev); + this->add_item(item); + } + { + Input_Item item("force_zero_out"); + item.annotation = "force invalid threshold, unit: eV/Angstrom"; + item.category = "Geometry relaxation"; + item.type = "Real"; + item.description = "The atomic forces that are smaller than force_zero_out will be treated as zero."; + item.default_value = "0.0"; + item.unit = "eV/Angstrom"; + item.availability = ""; + read_sync_double(input.force_zero_out); + this->add_item(item); + } + { + Input_Item item("relax_bfgs_w1"); + item.annotation = "wolfe condition 1 for bfgs"; + item.category = "Geometry relaxation"; + item.type = "Real"; + item.description = "Controls the Wolfe condition for the Broyden–Fletcher–Goldfarb–Shanno (BFGS) algorithm used in geometry relaxation. This parameter sets the sufficient decrease condition (c1 in Wolfe conditions). For more information, see Phys. Chem. Chem. Phys., 2000, 2, 2177."; + item.default_value = "0.01"; + item.unit = ""; + item.availability = "Only used when relax_new = False and relax_method is bfgs or cg_bfgs"; + read_sync_double(input.relax_bfgs_w1); + this->add_item(item); + } + { + Input_Item item("relax_bfgs_w2"); + item.annotation = "wolfe condition 2 for bfgs"; + item.category = "Geometry relaxation"; + item.type = "Real"; + item.description = "Controls the Wolfe condition for the Broyden–Fletcher–Goldfarb–Shanno (BFGS) algorithm used in geometry relaxation. This parameter sets the curvature condition (c2 in Wolfe conditions). For more information, see Phys. Chem. Chem. Phys., 2000, 2, 2177."; + item.default_value = "0.5"; + item.unit = ""; + item.availability = "Only used when relax_new = False and relax_method is bfgs or cg_bfgs"; + read_sync_double(input.relax_bfgs_w2); + this->add_item(item); + } + { + Input_Item item("relax_bfgs_rmax"); + item.annotation = "maximal trust radius, unit: Bohr"; + item.category = "Geometry relaxation"; + item.type = "Real"; + item.description = "Maximum allowed total displacement of all atoms during geometry optimization. The sum of atomic displacements can increase during optimization steps but cannot exceed this value."; + item.default_value = "0.8"; + item.unit = "Bohr"; + item.availability = "Only used when relax_new = False and relax_method is bfgs or cg_bfgs"; + read_sync_double(input.relax_bfgs_rmax); + this->add_item(item); + } + { + Input_Item item("relax_bfgs_rmin"); + item.annotation = "minimal trust radius, unit: Bohr"; + item.category = "Geometry relaxation"; + item.type = "Real"; + item.description = "Minimum allowed total displacement of all atoms. When the total atomic displacement falls below this value and force convergence is not achieved, the calculation will terminate. Note: This parameter is not used in the default BFGS algorithm (relax_method = bfgs 2 or bfgs)."; + item.default_value = "1e-5"; + item.unit = "Bohr"; + item.availability = "Only used when relax_new = False and relax_method = bfgs 1 (traditional BFGS)"; + read_sync_double(input.relax_bfgs_rmin); + this->add_item(item); + } + { + Input_Item item("relax_bfgs_init"); + item.annotation = "initial trust radius, unit: Bohr"; + item.category = "Geometry relaxation"; + item.type = "Real"; + item.description = "Initial total displacement of all atoms in the first BFGS step. This sets the scale for the initial movement."; + item.default_value = "0.5"; + item.unit = "Bohr"; + item.availability = "Only used when relax_new = False and relax_method is bfgs or cg_bfgs"; + read_sync_double(input.relax_bfgs_init); + this->add_item(item); + } + { + Input_Item item("stress_thr"); + item.annotation = "stress threshold"; + item.category = "Geometry relaxation"; + item.type = "Real"; + item.description = "The threshold of the stress convergence. The threshold is compared with the largest component of the stress tensor."; + item.default_value = "0.5"; + item.unit = "kbar"; + item.availability = ""; + read_sync_double(input.stress_thr); + this->add_item(item); + } + { + Input_Item item("press1"); + item.annotation = "target pressure, unit: KBar"; + item.category = "Geometry relaxation"; + item.type = "Real"; + item.description = "The external pressures along three axes. Positive input value is taken as compressive stress."; + item.default_value = "0"; + item.unit = "kbar"; + item.availability = ""; + read_sync_double(input.press1); + this->add_item(item); + } + { + Input_Item item("press2"); + item.annotation = "target pressure, unit: KBar"; + item.category = "Geometry relaxation"; + item.type = "Real"; + item.description = "The external pressures along three axes. Positive input value is taken as compressive stress."; + item.default_value = "0"; + item.unit = "kbar"; + item.availability = ""; + read_sync_double(input.press2); + this->add_item(item); + } + { + Input_Item item("press3"); + item.annotation = "target pressure, unit: KBar"; + item.category = "Geometry relaxation"; + item.type = "Real"; + item.description = "The external pressures along three axes. Positive input value is taken as compressive stress."; + item.default_value = "0"; + item.unit = "kbar"; + item.availability = ""; + read_sync_double(input.press3); + this->add_item(item); + } + { + Input_Item item("fixed_axes"); + item.annotation = "which axes are fixed"; + item.category = "Geometry relaxation"; + item.type = "String"; + item.description = R"(Specifies which cell degrees of freedom are fixed during variable-cell relaxation. The available options depend on the relax_new setting: + +When relax_new = True (default), all options are available: +* None: Default; all cell parameters can relax freely +* volume: Relaxation with fixed volume (allows shape changes) +* shape: Fix shape but allow volume changes (hydrostatic pressure only) +* a: Fix the a-axis lattice vector during relaxation +* b: Fix the b-axis lattice vector during relaxation +* c: Fix the c-axis lattice vector during relaxation +* ab: Fix both a and b axes during relaxation +* ac: Fix both a and c axes during relaxation +* bc: Fix both b and c axes during relaxation + +When relax_new = False, all options are now available: +* None: Default; all cell parameters can relax freely +* volume: Relaxation with fixed volume (allows shape changes). Volume is preserved by rescaling the lattice after each update. +* shape: Fix shape but allow volume changes (hydrostatic pressure only). Stress tensor is replaced with isotropic pressure. +* a, b, c, ab, ac, bc: Fix specific lattice vectors. Gradients for fixed vectors are set to zero. + +[NOTE] For VASP users, see the ISIF correspondence table in the geometry optimization documentation. Both implementations now support all constraint types.)"; + item.default_value = "None"; + item.unit = ""; + item.availability = "Only used when calculation is set to cell-relax"; + read_sync_string(input.fixed_axes); + item.check_value = [](const Input_Item& item, const Parameter& para) { + if ((para.input.fixed_axes == "shape" || para.input.fixed_axes == "volume") && !para.input.relax_new) + { + ModuleBase::WARNING_QUIT("ReadInput", "fixed shape and fixed volume only supported for relax_new = 1"); + } + }; + this->add_item(item); + } + { + Input_Item item("fixed_ibrav"); + item.annotation = "whether to preseve lattice type during relaxation"; + item.category = "Geometry relaxation"; + item.type = "Boolean"; + item.description = R"(* True: the lattice type will be preserved during relaxation. The lattice vectors are reconstructed to match the specified Bravais lattice type after each update. +* False: No restrictions are exerted during relaxation in terms of lattice type + +[NOTE] Note: it is possible to use fixed_ibrav with fixed_axes, but please make sure you know what you are doing. For example, if we are doing relaxation of a simple cubic lattice (latname = "sc"), and we use fixed_ibrav along with fixed_axes = "volume", then the cell is never allowed to move and as a result, the relaxation never converges. When both are used, fixed_ibrav is applied first, then fixed_axes = "volume" rescaling is applied.)"; + item.default_value = "False"; + item.unit = ""; + item.availability = "Can be used with both relax_new = True and relax_new = False. A specific latname must be provided."; + read_sync_bool(input.fixed_ibrav); + item.check_value = [](const Input_Item& item, const Parameter& para) { + if (para.input.fixed_ibrav && !para.input.relax_new) + { + ModuleBase::WARNING_QUIT("ReadInput", "fixed_ibrav only available for relax_new = 1"); + } + if (para.input.latname == "none" && para.input.fixed_ibrav) + { + ModuleBase::WARNING_QUIT("ReadInput", "to use fixed_ibrav, latname must be provided"); + } + }; + this->add_item(item); + } + { + Input_Item item("fixed_atoms"); + item.annotation = "whether to preseve direct coordinates of atoms " + "during relaxation"; + item.category = "Geometry relaxation"; + item.type = "Boolean"; + item.description = R"(* True: The direct coordinates of atoms will be preserved during variable-cell relaxation. +* False: No restrictions are exerted on positions of all atoms. However, users can still fix certain components of certain atoms by using the m keyword in STRU file. For the latter option, check the end of this instruction.)"; + item.default_value = "False"; + item.unit = ""; + item.availability = ""; + read_sync_bool(input.fixed_atoms); + item.check_value = [](const Input_Item& item, const Parameter& para) { + if (para.input.fixed_atoms && para.input.calculation == "relax") + { + ModuleBase::WARNING_QUIT("ReadInput", "fixed_atoms is not meant to be used for calculation = relax"); + } + }; + this->add_item(item); + } + { + Input_Item item("relax"); + item.annotation = "allow relaxation along the specific direction"; + read_sync_bool(input.relax); + this->add_item(item); + } +} +} // namespace ModuleIO diff --git a/source/source_io/module_parameter/read_input_item_sdft.cpp b/source/source_io/module_parameter/read_input_item_sdft.cpp new file mode 100644 index 0000000000..b57a2ce797 --- /dev/null +++ b/source/source_io/module_parameter/read_input_item_sdft.cpp @@ -0,0 +1,180 @@ +#include "source_base/global_function.h" +#include "source_base/tool_quit.h" +#include "read_input.h" +#include "read_input_tool.h" + +namespace ModuleIO +{ +void ReadInput::item_sdft() +{ + // NOTE: The order of add_item() calls below determines the parameter order + // in the generated documentation (docs/advanced/input_files/input-main.md). + // Please preserve this ordering when adding new parameters. + { + Input_Item item("method_sto"); + item.annotation = "1: slow and save memory, 2: fast and waste memory"; + item.category = "Electronic structure (SDFT)"; + item.type = "Integer"; + item.description = R"(Different methods to do stochastic DFT +* 1: Calculate twice, this method cost less memory but is slower. +* 2: Calculate once but needs much more memory. This method is much faster. Besides, it calculates with a smaller nche_sto. However, when the memory is not enough, only method 1 can be used. +* other: use 2)"; + item.default_value = "2"; + item.unit = ""; + item.availability = "esolver_type = sdft"; + read_sync_int(input.method_sto); + item.check_value = [](const Input_Item& item, const Parameter& para) { + if (para.input.method_sto != 1 && para.input.method_sto != 2) + { + ModuleBase::WARNING_QUIT("ReadInput", "method_sto should be 1 or 2"); + } + }; + this->add_item(item); + } + { + Input_Item item("nbands_sto"); + item.annotation = "number of stochstic orbitals"; + item.category = "Electronic structure (SDFT)"; + item.type = "Integer or string"; + item.description = R"(The number of stochastic orbitals +* > 0: Perform stochastic DFT. Increasing the number of bands improves accuracy and reduces stochastic errors; To perform mixed stochastic-deterministic DFT, you should set nbands, which represents the number of KS orbitals. +* 0: Perform Kohn-Sham DFT. +* all: All complete basis sets are used to replace stochastic orbitals with the Chebyshev method (CT), resulting in the same results as KSDFT without stochastic errors.)"; + item.default_value = "256"; + item.unit = ""; + item.availability = "esolver_type = sdft"; + item.read_value = [](const Input_Item& item, Parameter& para) { + std::string nbandsto_str = strvalue; + if (nbandsto_str != "all") + { + para.input.nbands_sto = std::stoi(nbandsto_str); + } + else + { + para.input.nbands_sto = 0; + } + }; + item.reset_value = [](const Input_Item& item, Parameter& para) { + // only do it when nbands_sto is set in INPUT + if (item.is_read()) + { + if (strvalue == "0" && para.input.esolver_type == "sdft") + { + para.input.esolver_type = "ksdft"; + ModuleBase::GlobalFunc::AUTO_SET("esolver_type", para.input.esolver_type); + } + } + }; + item.check_value = [](const Input_Item& item, const Parameter& para) { + if (para.input.nbands_sto < 0 || para.input.nbands_sto > 100000) + { + ModuleBase::WARNING_QUIT("ReadInput", "nbands_sto should be in the range of 0 to 100000"); + } + }; + item.get_final_value = [](Input_Item& item, const Parameter& para) { + if (item.str_values.size() == 0) // no nbands_sto in INPUT + { + item.final_value << para.input.nbands_sto; + } + else + { + item.final_value << item.str_values[0]; + } + }; + add_int_bcast(input.nbands_sto); + this->add_item(item); + } + { + Input_Item item("nche_sto"); + item.annotation = "Chebyshev expansion orders"; + item.category = "Electronic structure (SDFT)"; + item.type = "Integer"; + item.description = "Chebyshev expansion orders for stochastic DFT."; + item.default_value = "100"; + item.unit = ""; + item.availability = "esolver_type = sdft"; + read_sync_int(input.nche_sto); + this->add_item(item); + } + { + Input_Item item("emin_sto"); + item.annotation = "trial energy to guess the lower bound of eigen " + "energies of the Hamitonian operator"; + item.category = "Electronic structure (SDFT)"; + item.type = "Real"; + item.description = "Trial energy to guess the lower bound of eigen energies of the Hamiltonian Operator."; + item.default_value = "0.0"; + item.unit = "Ry"; + item.availability = "esolver_type = sdft"; + read_sync_double(input.emin_sto); + this->add_item(item); + } + { + Input_Item item("emax_sto"); + item.annotation = "trial energy to guess the upper bound of eigen " + "energies of the Hamitonian operator"; + item.category = "Electronic structure (SDFT)"; + item.type = "Real"; + item.description = "Trial energy to guess the upper bound of eigen energies of the Hamiltonian Operator."; + item.default_value = "0.0"; + item.unit = "Ry"; + item.availability = "esolver_type = sdft"; + read_sync_double(input.emax_sto); + this->add_item(item); + } + { + Input_Item item("seed_sto"); + item.annotation = "the random seed to generate stochastic orbitals"; + item.category = "Electronic structure (SDFT)"; + item.type = "Integer"; + item.description = R"(The random seed to generate stochastic orbitals. +* >= 0: Stochastic orbitals have the form of exp(i*theta), where theta is a uniform distribution in [0, 2*pi). +* 0: the seed is decided by time(NULL). +* <= -1: Stochastic orbitals have the form of +1 or -1 with equal probability. +* -1: the seed is decided by time(NULL).)"; + item.default_value = "0"; + item.unit = ""; + item.availability = "esolver_type = sdft"; + read_sync_int(input.seed_sto); + this->add_item(item); + } + { + Input_Item item("initsto_ecut"); + item.annotation = "maximum ecut to init stochastic bands"; + item.category = "Electronic structure (SDFT)"; + item.type = "Real"; + item.description = R"(Stochastic wave functions are initialized in a large box generated by "4*initsto_ecut". initsto_ecut should be larger than ecutwfc. In this method, SDFT results are the same when using different cores. Besides, coefficients of the same G are the same when ecutwfc is rising to initsto_ecut. If it is smaller than ecutwfc, it will be turned off.)"; + item.default_value = "0.0"; + item.unit = "Ry"; + item.availability = "esolver_type = sdft"; + read_sync_double(input.initsto_ecut); + this->add_item(item); + } + { + Input_Item item("initsto_freq"); + item.annotation = "frequency to generate new stochastic orbitals when running md"; + item.category = "Electronic structure (SDFT)"; + item.type = "Integer"; + item.description = R"(Frequency (once each initsto_freq steps) to generate new stochastic orbitals when running md. +* positive integer: Update stochastic orbitals +* 0: Never change stochastic orbitals.)"; + item.default_value = "0"; + item.unit = ""; + item.availability = "esolver_type = sdft"; + read_sync_int(input.initsto_freq); + this->add_item(item); + } + { + Input_Item item("npart_sto"); + item.annotation = "Reduce memory when calculating Stochastic DOS"; + item.category = "Electronic structure (SDFT)"; + item.type = "Integer"; + item.description = "Make memory cost to 1/npart_sto times of the previous one when running the post process of SDFT like DOS or conductivities."; + item.default_value = "1"; + item.unit = ""; + item.availability = "method_sto = 2 and out_dos = 1 or cal_cond = True"; + read_sync_int(input.npart_sto); + this->add_item(item); + } +} +} // namespace ModuleIO diff --git a/source/source_io/module_parameter/read_input_item_system.cpp b/source/source_io/module_parameter/read_input_item_system.cpp new file mode 100644 index 0000000000..2bb18f9898 --- /dev/null +++ b/source/source_io/module_parameter/read_input_item_system.cpp @@ -0,0 +1,1187 @@ +#include "source_base/global_function.h" +#include "source_base/tool_quit.h" +#include "read_input.h" +#include "read_input_tool.h" +#include "source_base/module_device/device.h" + +#include +#include + +namespace ModuleIO +{ +// There are some examples: +// Generallly: +// { +// Input_Item item("suffix"); +// item.annotation = "the name of main output directory"; +// read_sync_string(input.suffix); +// this->add_item(item); +// } +// +// Specially: +// { +// Input_Item item("kspacing"); +// item.annotation = "unit in 1/bohr, should be > 0, default is 0 which +// means read KPT file"; +// +// item.read_value = [](const Input_Item& item, Parameter& para) { +// para.input.kspacing[0] = std::stod(item.str_values[0]); +// para.input.kspacing[1] = std::stod(item.str_values[1]); +// para.input.kspacing[2] = std::stod(item.str_values[2]); +// }; +// +// item.reset_value = [](const Input_Item& item, Parameter& para) { +// if(para.input.kspacing[0] <= 0) para.input.kspacing[0] = 1; +// }; +// +// item.check_value = [](const Input_Item& item, const Parameter& para) +// {assert(para.input.kspacing[0]>0);}; +// +// item.get_final_value = [](Input_Item& item, const Parameter& para) { +// item.final_value << para.input.kspacing[0] << " " << +// para.input.kspacing[1] << " " << para.input.kspacing[2]; +// }; +// +// add_doublevec_bcast(&Parameter::PARAMETER, N); +// this->add_item(item); +// } +void ReadInput::item_system() +{ + // NOTE: The order of add_item() calls below determines the parameter order + // in the generated documentation (docs/advanced/input_files/input-main.md). + // Please preserve this ordering when adding new parameters. + { + Input_Item item("suffix"); + item.annotation = "the name of main output directory"; + item.category = "System variables"; + item.type = "String"; + item.description = "In each run, ABACUS will generate a subdirectory in the working directory. " + "This subdirectory contains all the information of the run. " + "The subdirectory name has the format: OUT.suffix, where the suffix is the name you can pick up for your convenience."; + item.default_value = "ABACUS"; + read_sync_string(input.suffix); + this->add_item(item); + } + { + Input_Item item("ntype"); + item.annotation = "atom species number"; + item.category = "System variables"; + item.type = "Integer"; + item.description = "Number of different atom species in the calculation."; + item.default_value = "0"; + // check of ntype is done in check_ntype + read_sync_int(input.ntype); + this->add_item(item); + } + { + Input_Item item("calculation"); + item.annotation = "scf; relax; md; cell-relax; nscf; get_s; get_wf; get_pchg; gen_bessel; gen_opt_abfs; test_memory; test_neighbour"; + item.category = "System variables"; + item.type = "String"; + item.description = R"(Specify the type of calculation. + +* scf: perform self-consistent electronic structure calculations +* nscf: perform non-self-consistent electronic structure calculations. A charge density file is required +* relax: perform structure relaxation calculations, the relax_nmax parameter depicts the maximal number of ionic iterations +* cell-relax: perform cell relaxation calculations +* md: perform molecular dynamics simulations +* get_pchg: obtain partial (band-decomposed) charge densities (for LCAO basis only). See out_pchg for more information +* get_wf: obtain real space wave functions (for LCAO basis only). See out_wfc_norm and out_wfc_re_im for more information +* get_s: obtain the overlap matrix formed by localized orbitals (for LCAO basis with multiple k points). the file name is SR.csr with file format being the same as that generated by out_mat_hs2 +* gen_bessel: generates projectors, i.e., a series of Bessel functions, for the DeePKS method (for LCAO basis only) +* gen_opt_abfs: generate opt-ABFs as discussed in this article +* test_memory: obtain a rough estimation of memory consumption for the calculation +* test_neighbour: obtain information of neighboring atoms (for LCAO basis only), please specify a positive search_radius manually)"; + item.default_value = "scf"; + item.read_value = [](const Input_Item& item, Parameter& para) { + para.input.calculation = strvalue; + std::string& calculation = para.input.calculation; + }; + item.check_value = [](const Input_Item& item, const Parameter& para) { + const std::string& calculation = para.input.calculation; + std::vector callist = {"scf", + "relax", + "md", + "cell-relax", + "nscf", + "get_s", + "get_wf", + "get_pchg", + "gen_bessel", + "gen_opt_abfs", + "test_memory", + "test_neighbour"}; + if (std::find(callist.begin(), callist.end(), calculation) == callist.end()) + { + const std::string warningstr = nofound_str(callist, "calculation"); + ModuleBase::WARNING_QUIT("ReadInput", warningstr); + } + if (calculation == "get_pchg" || calculation == "get_wf") + { + if (para.input.basis_type == "pw") // xiaohui add 2013-09-01 + { + ModuleBase::WARNING_QUIT("ReadInput", + "calculate = get_pchg or get_wf " + "is only availble for LCAO."); + } + } + else if (calculation == "gen_bessel") + { + if (para.input.basis_type != "pw") + { + ModuleBase::WARNING_QUIT("ReadInput", "to generate descriptors, please use pw basis"); + } + } + }; + sync_string(input.calculation); + this->add_item(item); + } + { + Input_Item item("esolver_type"); + item.annotation = "the energy solver: ksdft, sdft, ofdft, tdofdft, tddft, lj, dp, ks-lr, lr"; + item.category = "System variables"; + item.type = "String"; + item.description = R"(Choose the energy solver. +* ksdft: Kohn-Sham density functional theory +* ofdft: orbital-free density functional theory +* tdofdft: time-dependent orbital-free density functional theory +* sdft: stochastic density functional theory +* tddft: real-time time-dependent density functional theory (RT-TDDFT) +* lj: Leonard Jones potential +* dp: DeeP potential +* nep: Neuroevolution Potential +* ks-lr: Kohn-Sham density functional theory + LR-TDDFT (Under Development Feature) +* lr: LR-TDDFT with given KS orbitals (Under Development Feature))"; + item.default_value = "ksdft"; + read_sync_string(input.esolver_type); + item.check_value = [](const Input_Item& item, const Parameter& para) { + const std::vector esolver_types = { "ksdft", "sdft", "ofdft", "tdofdft", "tddft", "lj", "dp", "nep", "lr", "ks-lr" }; + if (std::find(esolver_types.begin(), esolver_types.end(), para.input.esolver_type) == esolver_types.end()) + { + const std::string warningstr = nofound_str(esolver_types, "esolver_type"); + ModuleBase::WARNING_QUIT("ReadInput", warningstr); + } + if (para.input.esolver_type == "dp" || para.input.esolver_type == "nep") + { + if (access(para.input.mdp.pot_file.c_str(), 0) == -1) + { + ModuleBase::WARNING_QUIT("ReadInput", "Can not find `pot_file` !"); + } + } + }; + item.reset_value = [](const Input_Item& item, Parameter& para) { + if (para.input.esolver_type == "lr" && para.input.calculation == "scf") + { // for LR-only calculation based on the ground-state, set calculation to "nscf" + para.input.calculation = "nscf"; + } + }; + this->add_item(item); + } + { + Input_Item item("symmetry"); + item.annotation = "the control of symmetry"; + item.category = "System variables"; + item.type = "String"; + item.description = R"(Takes value 1, 0 or -1. +* -1: No symmetry will be considered. It is recommended to set -1 for non-colinear + soc calculations, where time reversal symmetry is broken sometimes. +* 0: Only time reversal symmetry would be considered in symmetry operations, which implied k point and -k point would be treated as a single k point with twice the weight. +* 1: Symmetry analysis will be performed to determine the type of Bravais lattice and associated symmetry operations. (point groups, space groups, primitive cells, and irreducible k-points) + +[NOTE] When symmetry is enabled (value 1), k-points are reduced to the irreducible Brillouin zone (IBZ). For explicit k-point lists with custom weights (see KPT file), the custom weights are preserved during symmetry reduction. For Monkhorst-Pack grids, uniform weights are used.)"; + item.default_value = "default"; + read_sync_string(input.symmetry); + item.reset_value = [](const Input_Item& item, Parameter& para) { + if (para.input.symmetry == "default") + { + if (para.input.gamma_only || para.input.calculation == "nscf" || para.input.calculation == "get_s" + || para.input.calculation == "get_pchg" || para.input.calculation == "get_wf") + { + para.input.symmetry = "0"; // if md or exx, symmetry will be + // force-set to 0 or -1 later + } + else + { + para.input.symmetry = "1"; + } + } + if (para.input.calculation == "md") + { + para.input.symmetry = "0"; + } + if (para.input.efield_flag) + { + para.input.symmetry = "0"; + } + if (para.input.esolver_type == "tddft") + { + para.input.symmetry = "-1"; + } + if (para.input.qo_switch) + { + para.input.symmetry = "-1"; // disable kpoint reduce + } + if (para.input.berry_phase) + { + para.input.symmetry = "-1"; // disable kpoint reduce + } + }; + this->add_item(item); + } + { + Input_Item item("symmetry_prec"); + item.annotation = "accuracy for symmetry"; + item.category = "System variables"; + item.type = "Real"; + item.description = "The accuracy for symmetry analysis. Typically, the default value is good enough, " + "but if the lattice parameters or atom positions in STRU file are not accurate enough, " + "this value should be enlarged.\n" + "[NOTE] Note: if calculation==cell_relax, this value can be dynamically changed " + "corresponding to the variation of accuracy of the lattice parameters and atom positions " + "during the relaxation."; + item.default_value = "1.0e-6"; + item.unit = "Bohr"; + read_sync_double(input.symmetry_prec); + this->add_item(item); + } + { + Input_Item item("symmetry_autoclose"); + item.annotation = "whether to close symmetry automatically when error " + "occurs in symmetry analysis"; + item.category = "System variables"; + item.type = "Boolean"; + item.description = "Control how to deal with error in symmetry analysis due to inaccurate lattice parameters " + "or atom positions in STRU file, especially useful when calculation==cell-relax\n" + "* False: quit with an error message\n" + "* True: automatically set symmetry to 0 and continue running without symmetry analysis"; + item.default_value = "True"; + item.availability = "symmetry==1"; + read_sync_bool(input.symmetry_autoclose); + this->add_item(item); + } + { + Input_Item item("cal_force"); + item.annotation = "if calculate the force at the end of the electronic iteration"; + item.category = "System variables"; + item.type = "Boolean"; + item.description = "If set to True, calculate the force at the end of the electronic iteration."; + item.default_value = "False"; + item.reset_value = [](const Input_Item& item, Parameter& para) { + std::vector use_force = {"cell-relax", "relax", "md"}; + std::vector not_use_force = {"get_wf", "get_pchg", "get_s"}; + if (std::find(use_force.begin(), use_force.end(), para.input.calculation) != use_force.end()) + { + if (!para.input.cal_force) + { + ModuleBase::GlobalFunc::AUTO_SET("cal_force", "true"); + } + para.input.cal_force = true; + } + else if (std::find(not_use_force.begin(), not_use_force.end(), para.input.calculation) != not_use_force.end()) + { + if (para.input.cal_force) + { + ModuleBase::GlobalFunc::AUTO_SET("cal_force", "false"); + } + para.input.cal_force = false; + } + }; + read_sync_bool(input.cal_force); + this->add_item(item); + } + { + Input_Item item("kpar"); + item.annotation = "devide all processors into kpar groups and k points " + "will be distributed among"; + item.category = "System variables"; + item.type = "Integer"; + item.description = "Divide all processors into kpar groups, and k points will be distributed among each group. " + "The value taken should be less than or equal to the number of k points as well as the number of MPI processes."; + item.default_value = "1"; + read_sync_int(input.kpar); + item.reset_value = [](const Input_Item& item, Parameter& para) { +#ifdef __LCAO + if (para.inp.basis_type == "lcao") + { + para.sys.kpar_lcao = para.inp.kpar; + para.input.kpar = 1; + } +#endif + // GPU + PW: validate kpar against total processors + // Moved from base_device::information::get_device_kpar() +#if defined(__CUDA) || defined(__ROCM) + if (para.input.device == "gpu" && para.input.basis_type == "pw") + { + if (GlobalV::NPROC != para.input.kpar * para.input.bndpar) + { + para.input.kpar = GlobalV::NPROC / para.input.bndpar; + ModuleBase::WARNING("ReadInput", + "kpar is not compatible with the number of processors, auto set kpar value."); + } + } +#endif + }; + item.check_value = [](const Input_Item& item, const Parameter& para) { + if (para.input.basis_type == "lcao" && para.input.kpar > 1) + { + ModuleBase::WARNING("ReadInput", "kpar > 1 has not been supported for lcao calculation."); + } + }; + this->add_item(item); + add_int_bcast(sys.kpar_lcao); + } + { + Input_Item item("bndpar"); + item.annotation = "devide all processors into bndpar groups and bands " + "will be distributed among each group"; + item.category = "System variables"; + item.type = "Integer"; + item.description = "Divide all processors into bndpar groups, and bands (only stochastic orbitals now) " + "will be distributed among each group. It should be larger than 0."; + item.default_value = "1"; + read_sync_int(input.bndpar); + item.reset_value = [](const Input_Item& item, Parameter& para) { + if (para.input.esolver_type != "sdft" && para.input.ks_solver != "bpcg") + { + para.input.bndpar = 1; + } + if (para.input.bndpar > GlobalV::NPROC) + { + para.input.bndpar = GlobalV::NPROC; + } + }; + item.check_value = [](const Input_Item& item, const Parameter& para) { + if (GlobalV::NPROC % para.input.bndpar != 0) + { + ModuleBase::WARNING_QUIT("ReadInput", "The number of processors can not be divided by bndpar"); + } + }; + this->add_item(item); + } + { + Input_Item item("latname"); + item.annotation = "the name of lattice name"; + item.category = "System variables"; + item.type = "String"; + item.description = R"(Specifies the type of Bravias lattice. When set to none, the three lattice vectors are supplied explicitly in STRU file. + +Available options are: +* none: free structure +* sc: simple cubic +* fcc: face-centered cubic +* bcc: body-centered cubic +* hexagonal: hexagonal +* trigonal: trigonal +* st: simple tetragonal +* bct: body-centered tetragonal +* so: orthorhombic +* baco: base-centered orthorhombic +* fco: face-centered orthorhombic +* bco: body-centered orthorhombic +* sm: simple monoclinic +* bacm: base-centered monoclinic +* triclinic: triclinic)"; + item.default_value = "none"; + read_sync_string(input.latname); + this->add_item(item); + } + { + Input_Item item("init_wfc"); + item.annotation = "start wave functions are from 'atomic', " + "'atomic+random', 'random' or"; + item.category = "System variables"; + item.type = "String"; + item.description = R"(The type of the starting wave functions. + +Available options are: +* atomic: from atomic pseudo wave functions. If they are not enough, other wave functions are initialized with random numbers. +* atomic+random: add small random numbers on atomic pseudo-wavefunctions +* file: from binary files wf*.dat, which are output by setting out_wfc_pw to 2. +* random: random numbers +* nao: from numerical atomic orbitals. If they are not enough, other wave functions are initialized with random numbers. +* nao+random: add small random numbers on numerical atomic orbitals + +[NOTE] Only the file option is useful for the lcao basis set, which is mostly used when calculation is set to get_wf and get_pchg.)"; + item.default_value = "atomic"; + item.reset_value = [](const Input_Item& item, Parameter& para) { + if (para.input.calculation == "get_pchg" || para.input.calculation == "get_wf") + { + para.input.init_wfc = "file"; + } + if (para.input.basis_type == "lcao_in_pw") + { + if (para.input.init_wfc != "nao") + { + para.input.init_wfc = "nao"; + GlobalV::ofs_warning << "init_wfc is set to nao when " + "basis_type is lcao_in_pw" + << std::endl; + } + } + }; + read_sync_string(input.init_wfc); + this->add_item(item); + } + { + Input_Item item("init_chg"); + item.annotation = "start charge is from 'atomic' or file"; + item.category = "System variables"; + item.type = "String"; + item.description = R"(This variable is used for both plane wave set and localized orbitals set. It indicates the type of starting density. + +* atomic: the density is starting from the summation of the atomic density of single atoms. +* file: the density will be read in from a binary file charge-density.dat first. If it does not exist, the charge density will be read in from cube files. +* wfc: the density will be calculated by wavefunctions and occupations. +* dm: the density will be calculated by real space density matrix(DMR) of LCAO base. +* hr: the real space Hamiltonian matrix(HR) will be read in from file hrs1_nao.csr in directory read_file_dir. +* auto: Abacus first attempts to read the density from a file; if not found, it defaults to using atomic density.)"; + item.default_value = "atomic"; + read_sync_string(input.init_chg); + item.reset_value = [](const Input_Item& item, Parameter& para) { + if (para.input.calculation == "get_pchg" || para.input.calculation == "get_wf") + { + para.input.init_chg = "atomic"; + } + if (para.input.calculation == "nscf" || para.input.calculation == "get_s") + { + if (para.input.init_chg != "file") + { + ModuleBase::GlobalFunc::AUTO_SET("init_chg", para.input.init_chg); + } + para.input.init_chg = "file"; + } + }; + item.check_value = [](const Input_Item& item, const Parameter& para) { + const std::vector init_chgs = {"atomic", "file", "wfc", "auto", "dm", "hr"}; + if (std::find(init_chgs.begin(), init_chgs.end(), para.input.init_chg) == init_chgs.end()) + { + const std::string warningstr = nofound_str(init_chgs, "init_chg"); + ModuleBase::WARNING_QUIT("ReadInput", warningstr); + } + }; + this->add_item(item); + } + { + Input_Item item("init_vel"); + item.annotation = "read velocity from STRU or not"; + item.category = "System variables"; + item.type = "Boolean"; + item.description = R"(* True: read the atom velocity (atomic unit : 1 a.u. = 21.877 Angstrom/fs) from the atom file (STRU) and determine the initial temperature md_tfirst. If md_tfirst is unset or less than zero, init_vel is autoset to be true. +* False: assign value to atom velocity using Gaussian distributed random numbers.)"; + item.default_value = "False"; + item.reset_value = [](const Input_Item& item, Parameter& para) { + if (para.input.calculation == "md") + { + if (para.input.mdp.md_tfirst < 0 || para.input.mdp.md_restart) + { + para.input.init_vel = true; + } + } + }; + read_sync_bool(input.init_vel); + this->add_item(item); + } + { + Input_Item item("mem_saver"); + item.annotation = "Only for nscf calculations. if set to 1, then a " + "memory saving technique will be used for " + "many k point calculations."; + item.category = "System variables"; + item.type = "Integer"; + item.description = R"(Save memory when performing nscf calculations. +* 0: no memory saving techniques are used. +* 1: a memory saving technique will be used for many k point calculations.)"; + item.default_value = "0"; + item.availability = "Used only for nscf calculations with plane wave basis set."; + read_sync_int(input.mem_saver); + item.reset_value = [](const Input_Item& item, Parameter& para) { + if (para.input.mem_saver == 1) + { + if (para.input.calculation == "scf" || para.input.calculation == "relax") + { + para.input.mem_saver = 0; + ModuleBase::GlobalFunc::AUTO_SET("mem_saver", "0"); + } + } + }; + this->add_item(item); + } + { + Input_Item item("cal_stress"); + item.annotation = "calculate the stress or not"; + item.category = "System variables"; + item.type = "Boolean"; + item.description = "If set to True, calculate the stress at the end of the electronic iteration."; + item.default_value = "False"; + item.reset_value = [](const Input_Item& item, Parameter& para) { + if (para.input.calculation == "md") + { + if (para.input.esolver_type == "lj" || para.input.esolver_type == "dp" + || para.input.mdp.md_type == "msst" || para.input.mdp.md_type == "npt") + { + para.input.cal_stress = true; + } + } + else if (para.input.calculation == "cell-relax") + { + para.input.cal_stress = true; + } + }; + read_sync_bool(input.cal_stress); + this->add_item(item); + } + { + Input_Item item("diago_proc"); + item.annotation = "the number of procs used to do diagonalization"; + item.category = "System variables"; + item.type = "Integer"; + item.description = R"(* 0: it will be set to the number of MPI processes. +* >0: it specifies the number of processes used for carrying out diagonalization. Must be less than or equal to total number of MPI processes.)"; + item.default_value = "0"; + item.availability = "Used only for plane wave basis set."; + read_sync_int(input.diago_proc); + item.reset_value = [](const Input_Item& item, Parameter& para) { + if (para.input.diago_proc > GlobalV::NPROC || para.input.diago_proc <= 0) + { + para.input.diago_proc = GlobalV::NPROC; + } + }; + this->add_item(item); + } + { + Input_Item item("nbspline"); + item.annotation = "the order of B-spline basis"; + item.category = "System variables"; + item.type = "Integer"; + item.description = "If set to a natural number, a Cardinal B-spline interpolation will be used to calculate " + "Structure Factor. nbspline represents the order of B-spline basis and a larger one can get " + "more accurate results but cost more. It is turned off by default."; + item.default_value = "-1"; + read_sync_int(input.nbspline); + this->add_item(item); + } + { + Input_Item item("kspacing"); + item.annotation = "unit in 1/bohr, should be > 0, default is 0 which " + "means read KPT file"; + item.category = "System variables"; + item.type = "Vector of Real (1 or 3 values)"; + item.description = "Set the smallest allowed spacing between k points, unit in 1/bohr. It should be larger than 0.0, " + "and suggest smaller than 0.25. When you have set this value > 0.0, then the KPT file is unnecessary. " + "The default value 0.0 means that ABACUS will read the applied KPT file." + "\n\n[NOTE] If gamma_only is set to be true, kspacing is invalid."; + item.default_value = "0.0"; + item.read_value = [](const Input_Item& item, Parameter& para) { + size_t count = item.get_size(); + if (count == 1) + { + para.input.kspacing[0] = para.input.kspacing[1] = para.input.kspacing[2] = doublevalue; + } + else if (count == 3) + { + para.input.kspacing[0] = std::stod(item.str_values[0]); + para.input.kspacing[1] = std::stod(item.str_values[1]); + para.input.kspacing[2] = std::stod(item.str_values[2]); + } + else + { + ModuleBase::WARNING_QUIT("ReadInput", "kspacing can only accept one or three values."); + } + }; + sync_doublevec(input.kspacing, 3, 0.0); + item.check_value = [](const Input_Item& item, const Parameter& para) { + int kspacing_zero_num = 0; + const std::vector& kspacing = para.input.kspacing; + for (int i = 0; i < 3; i++) + { + if (kspacing[i] < 0.0) + { + ModuleBase::WARNING_QUIT("ReadInput", "kspacing must > 0"); + } + else if (kspacing[i] == 0.0) + { + kspacing_zero_num++; + } + } + if (kspacing_zero_num > 0 && kspacing_zero_num < 3) + { + std::cout << "kspacing: " << kspacing[0] << " " << kspacing[1] << " " << kspacing[2] << std::endl; + ModuleBase::WARNING_QUIT("ReadInput", "kspacing must > 0"); + } + }; + this->add_item(item); + } + { + Input_Item item("min_dist_coef"); + item.annotation = "factor related to the allowed minimum distance " + "between two atoms"; + item.category = "System variables"; + item.type = "Real"; + item.description = "A factor related to the allowed minimum distance between two atoms. At the beginning, " + "ABACUS will check the structure, and if the distance of two atoms is shorter than " + "min_dist_coef*(standard covalent bond length), we think this structure is unreasonable."; + item.default_value = "0.2"; + read_sync_double(input.min_dist_coef); + this->add_item(item); + } + { + Input_Item item("device"); + item.annotation = "the computing device for ABACUS"; + item.category = "System variables"; + item.type = "String"; + item.description = R"(Specifies the computing device for ABACUS. + +Available options are: +* cpu: for CPUs via Intel, AMD, or Other supported CPU devices +* gpu: for GPUs via CUDA or ROCm. + +[NOTE] ks_solver must also be set to the algorithms supported. lcao_in_pw currently does not support gpu.)"; + item.default_value = "cpu"; + read_sync_string(input.device); + item.reset_value = [](const Input_Item& item, Parameter& para) { + para.input.device=base_device::information::get_device_flag( + para.inp.device, para.inp.basis_type); + }; + item.check_value = [](const Input_Item& item, const Parameter& para) { + std::vector avail_list = {"cpu", "gpu"}; + if (std::find(avail_list.begin(), avail_list.end(), para.input.device) == avail_list.end()) + { + const std::string warningstr = nofound_str(avail_list, "device"); + ModuleBase::WARNING_QUIT("ReadInput", warningstr); + } + }; + this->add_item(item); + } + { + Input_Item item("precision"); + item.annotation = "the computing precision for ABACUS"; + item.category = "System variables"; + item.type = "String"; + item.description = R"(Specifies the precision when performing scf calculation. +* single: single precision +* double: double precision)"; + item.default_value = "double"; + item.availability = "Used only for plane wave basis set."; + read_sync_string(input.precision); + item.check_value = [](const Input_Item& item, const Parameter& para) { + std::vector avail_list = {"single", "double"}; + if (std::find(avail_list.begin(), avail_list.end(), para.input.precision) == avail_list.end()) + { + const std::string warningstr = nofound_str(avail_list, "precision"); + ModuleBase::WARNING_QUIT("ReadInput", warningstr); + } + if (para.inp.precision == "single" && para.inp.basis_type == "lcao") + { + ModuleBase::WARNING_QUIT( + "ReadInput", + "Single precision is not supported for NAO basis,\nPlease use double precision for NAO basis.\n"); + } + // cpu single precision is not supported while float_fftw lib is not available + if (para.inp.device == "cpu" && para.inp.precision == "single") + { +#ifndef __ENABLE_FLOAT_FFTW + ModuleBase::WARNING_QUIT( + "ReadInput", + "Single precision with cpu is not supported while float_fftw lib is not available; \ + \n Please recompile with cmake flag \"-DENABLE_FLOAT_FFTW=ON\".\n"); +#endif + } + }; + this->add_item(item); + } + { + Input_Item item("timer_enable_nvtx"); + item.annotation = "enable NVTX labeling for profiling or not"; + item.category = "System variables"; + item.type = "Boolean"; + item.description = R"(Controls whether NVTX profiling labels are emitted by the timer. This feature is only effective on CUDA platforms. + +* True: Enable NVTX profiling labels in the timer. +* False: Disable NVTX profiling labels in the timer.)"; + item.default_value = "False"; + read_sync_bool(input.timer_enable_nvtx); + this->add_item(item); + } + { + Input_Item item("cell_factor"); + item.annotation = "used in the construction of the pseudopotential tables"; + item.category = "System variables"; + item.type = "Real"; + item.description = "Used in the construction of the pseudopotential tables. " + "For cell-relax calculations, this is automatically set to 2.0."; + item.default_value = "1.2"; + read_sync_double(input.cell_factor); + item.reset_value = [](const Input_Item& item, Parameter& para) { + if (para.input.calculation == "cell-relax" && para.input.cell_factor < 2.0) + { + para.input.cell_factor = 2.0; // follows QE + } + }; + this->add_item(item); + } + { + Input_Item item("dm_to_rho"); + item.annotation = "reads dmr in npz format and calculates electron density"; + item.category = "System variables"; + item.type = "Boolean"; + item.description = "Reads density matrix in npz format and calculates electron density."; + item.default_value = "False"; + read_sync_bool(input.dm_to_rho); + item.check_value = [](const Input_Item& item, const Parameter& para) { + if (para.input.dm_to_rho && GlobalV::NPROC > 1) + { + ModuleBase::WARNING_QUIT("ReadInput", "dm_to_rho is not available for parallel calculations"); + } + if (para.input.dm_to_rho && para.inp.gamma_only) + { + ModuleBase::WARNING_QUIT("ReadInput", "dm_to_rho is not available for gamma_only calculations"); + } + if (para.input.dm_to_rho) + { +#ifndef __USECNPY + ModuleBase::WARNING_QUIT("ReadInput", + "to write in npz format, please " + "recompile with -DENABLE_CNPY=1"); +#endif + } + }; + this->add_item(item); + } + { + Input_Item item("chg_extrap"); + item.annotation = "atomic; first-order; second-order; dm:coefficients of SIA"; + item.category = "System variables"; + item.type = "String"; + item.description = "Charge extrapolation method for MD and relaxation calculations."; + item.default_value = "default"; + read_sync_string(input.chg_extrap); + item.reset_value = [](const Input_Item& item, Parameter& para) { + if (para.input.chg_extrap == "default" && para.input.calculation == "md") + { + para.input.chg_extrap = "second-order"; + } + else if (para.input.chg_extrap == "default" + && (para.input.calculation == "relax" || para.input.calculation == "cell-relax")) + { + para.input.chg_extrap = "first-order"; + } + else if (para.input.chg_extrap == "default") + { + para.input.chg_extrap = "atomic"; + } + if (para.input.calculation == "get_wf" || para.input.calculation == "get_pchg") + { + para.input.chg_extrap = "atomic"; + } + }; + this->add_item(item); + } + { + Input_Item item("ecutwfc"); + item.annotation = "energy cutoff for wave functions"; + item.category = "Plane wave related variables"; + item.type = "Real"; + item.description = "Energy cutoff for plane wave functions. Note that even for localized orbitals basis, " + "you still need to setup an energy cutoff for this system. Because our local pseudopotential parts " + "and the related force are calculated from plane wave basis set.\n" + "[NOTE] ecutwfc and ecutrho can be set simultaneously. If only one parameter is set, " + "abacus will automatically set another parameter based on the 4-time relationship."; + item.default_value = "50 for PW basis, 100 for LCAO basis"; + item.unit = "Ry"; + read_sync_double(input.ecutwfc); + item.reset_value = [](const Input_Item& item, Parameter& para) { + if (para.input.ecutwfc == 0) + { // 0 means no input value + if (para.input.ecutrho > 0) + { + para.input.ecutwfc = para.input.ecutrho / 4.0; + } + else if (para.input.basis_type == "lcao") + { + para.input.ecutwfc = 100; + } + else + { + para.input.ecutwfc = 50; + } + } + }; + item.check_value = [](const Input_Item& item, const Parameter& para) { + if (para.input.ecutwfc <= 0) + { + ModuleBase::WARNING_QUIT("ReadInput", "ecutwfc should be positive"); + } + }; + this->add_item(item); + } + { + Input_Item item("ecutrho"); + item.annotation = "energy cutoff for charge density and potential"; + item.category = "Plane wave related variables"; + item.type = "Real"; + item.description = "Energy cutoff for charge density and potential. For norm-conserving pseudopotential " + "you should stick to the default value, you can reduce it by a little but it will introduce noise " + "especially on forces and stress."; + item.default_value = "4*ecutwfc"; + item.unit = "Ry"; + read_sync_double(input.ecutrho); + item.reset_value = [](const Input_Item& item, Parameter& para) { + Input_para& input = para.input; + if (input.ecutrho <= 0.0) + { + input.ecutrho = 4.0 * input.ecutwfc; + } + if (input.nx * input.ny * input.nz == 0 && input.ecutrho / input.ecutwfc > 4 + 1e-8) + { + para.sys.double_grid = true; + } + }; + item.check_value = [](const Input_Item& item, const Parameter& para) { + if (para.input.ecutrho / para.input.ecutwfc < 4 - 1e-8) + { + ModuleBase::WARNING_QUIT("ReadInput", "ecutrho/ecutwfc must >= 4"); + } + if (para.sys.double_grid == true && para.input.basis_type == "lcao") + { + ModuleBase::WARNING_QUIT("ReadInput", "ecutrho/ecutwfc must = 4 for lcao calculation"); + } + }; + this->add_item(item); + } + { + Input_Item item("nx"); + item.annotation = "number of points along x axis for FFT grid"; + item.category = "Plane wave related variables"; + item.type = "Integer"; + item.description = "If set to a positive number, specifies the number of FFT grid points in x direction. " + "If set to 0, the number will be calculated from ecutrho." + "\n\n[NOTE] You must specify all three dimensions (nx, ny, nz) for this setting to be used."; + item.default_value = "0"; + item.read_value = [](const Input_Item& item, Parameter& para) { + para.input.nx = intvalue; + }; + item.check_value = [](const Input_Item& item, const Parameter& para) { + if (para.input.nx * para.input.ny * para.input.nz == 0 && para.input.nx != 0) + { + ModuleBase::WARNING_QUIT("ReadInput", "nx, ny, nz should be all set to non-zero"); + } + }; + sync_int(input.nx); + this->add_item(item); + } + { + Input_Item item("ny"); + item.annotation = "number of points along y axis for FFT grid"; + item.category = "Plane wave related variables"; + item.type = "Integer"; + item.description = "If set to a positive number, specifies the number of FFT grid points in y direction. " + "If set to 0, the number will be calculated from ecutrho." + "\n\n[NOTE] You must specify all three dimensions (nx, ny, nz) for this setting to be used."; + item.default_value = "0"; + item.read_value = [](const Input_Item& item, Parameter& para) { + para.input.ny = intvalue; + }; + item.check_value = [](const Input_Item& item, const Parameter& para) { + if (para.input.nx * para.input.ny * para.input.nz == 0 && para.input.ny != 0) + { + ModuleBase::WARNING_QUIT("ReadInput", "nx, ny, nz should be all set to non-zero"); + } + }; + sync_int(input.ny); + this->add_item(item); + } + { + Input_Item item("nz"); + item.annotation = "number of points along z axis for FFT grid"; + item.category = "Plane wave related variables"; + item.type = "Integer"; + item.description = "If set to a positive number, specifies the number of FFT grid points in z direction. " + "If set to 0, the number will be calculated from ecutrho." + "\n\n[NOTE] You must specify all three dimensions (nx, ny, nz) for this setting to be used."; + item.default_value = "0"; + item.read_value = [](const Input_Item& item, Parameter& para) { + para.input.nz = intvalue; + }; + item.check_value = [](const Input_Item& item, const Parameter& para) { + if (para.input.nx * para.input.ny * para.input.nz == 0 && para.input.nz != 0) + { + ModuleBase::WARNING_QUIT("ReadInput", "nx, ny, nz should be all set to non-zero"); + } + }; + sync_int(input.nz); + this->add_item(item); + } + { + Input_Item item("ndx"); + item.annotation = "number of points along x axis for FFT smooth grid"; + item.category = "Plane wave related variables"; + item.type = "Integer"; + item.description = "If set to a positive number, specifies the number of FFT grid points for the dense part " + "of charge density in x direction. If set to 0, the number will be calculated from ecutwfc." + "\n\n[NOTE] You must specify all three dimensions (ndx, ndy, ndz) for this setting to be used. " + "These parameters must be used combined with nx, ny, nz. " + "If nx, ny, nz are unset, ndx, ndy, ndz are used as nx, ny, nz."; + item.default_value = "0"; + read_sync_int(input.ndx); + item.reset_value = [](const Input_Item& item, Parameter& para) { + if (para.input.ndx > para.input.nx) + { + para.sys.double_grid = true; + } + }; + item.check_value = [](const Input_Item& item, const Parameter& para) { + if (!item.is_read()) + { + return; + } + if (para.input.ndx * para.input.ndy * para.input.ndz == 0 && para.input.ndx != 0) + { + ModuleBase::WARNING_QUIT("ReadInput", "ndx, ndy, ndz should be all set to non-zero"); + } + if (para.input.ndx < para.input.nx) + { + ModuleBase::WARNING_QUIT("ReadInput", "ndx should be greater than or equal to nx"); + } + }; + this->add_item(item); + } + { + Input_Item item("ndy"); + item.annotation = "number of points along y axis for FFT smooth grid"; + item.category = "Plane wave related variables"; + item.type = "Integer"; + item.description = "If set to a positive number, specifies the number of FFT grid points for the dense part " + "of charge density in y direction. If set to 0, the number will be calculated from ecutwfc." + "\n\n[NOTE] You must specify all three dimensions (ndx, ndy, ndz) for this setting to be used. " + "These parameters must be used combined with nx, ny, nz. " + "If nx, ny, nz are unset, ndx, ndy, ndz are used as nx, ny, nz."; + item.default_value = "0"; + read_sync_int(input.ndy); + item.reset_value = [](const Input_Item& item, Parameter& para) { + if (para.input.ndy > para.input.ny) + { + para.sys.double_grid = true; + } + }; + item.check_value = [](const Input_Item& item, const Parameter& para) { + if (!item.is_read()) { + return; +} + if (para.input.ndx * para.input.ndy * para.input.ndz == 0 && para.input.ndy != 0) + { + ModuleBase::WARNING_QUIT("ReadInput", "ndx, ndy, ndz should be all set to non-zero"); + } + if (para.input.ndy < para.input.ny) + { + ModuleBase::WARNING_QUIT("ReadInput", "ndy should be greater than or equal to ny"); + } + }; + this->add_item(item); + } + { + Input_Item item("ndz"); + item.annotation = "number of points along z axis for FFT smooth grid"; + item.category = "Plane wave related variables"; + item.type = "Integer"; + item.description = "If set to a positive number, specifies the number of FFT grid points for the dense part " + "of charge density in z direction. If set to 0, the number will be calculated from ecutwfc." + "\n\n[NOTE] You must specify all three dimensions (ndx, ndy, ndz) for this setting to be used. " + "These parameters must be used combined with nx, ny, nz. " + "If nx, ny, nz are unset, ndx, ndy, ndz are used as nx, ny, nz."; + item.default_value = "0"; + read_sync_int(input.ndz); + item.reset_value = [](const Input_Item& item, Parameter& para) { + if (para.input.ndy > para.input.ny) + { + para.sys.double_grid = true; + } + }; + item.check_value = [](const Input_Item& item, const Parameter& para) { + if (!item.is_read()) { + return; +} + if (para.input.ndx * para.input.ndy * para.input.ndz == 0 && para.input.ndz != 0) + { + ModuleBase::WARNING_QUIT("ReadInput", "ndx, ndy, ndz should be all set to non-zero"); + } + if (para.input.ndz < para.input.nz) + { + ModuleBase::WARNING_QUIT("ReadInput", "ndz should be greater than or equal to nz"); + } + }; + this->add_item(item); + } + { + Input_Item item("pw_seed"); + item.annotation = "random seed for initializing wave functions"; + item.category = "Plane wave related variables"; + item.type = "Integer"; + item.description = "Specify the random seed to initialize wave functions. Only positive integers are available."; + item.default_value = "0"; + item.availability = "Only used for plane wave basis."; + read_sync_int(input.pw_seed); + this->add_item(item); + } + { + Input_Item item("diag_subspace"); + item.annotation = "method of subspace diagonalization in dav_subspace. 0:LaPack; 1:genelpa, 2:scalapack"; + item.category = "Plane wave related variables"; + item.type = "Integer"; + item.description = R"(The method to diagonalize subspace in dav_subspace method. +* 0: by LAPACK +* 1: by GenELPA +* 2: by ScaLAPACK)"; + item.default_value = "0"; + read_sync_int(input.diag_subspace); + this->add_item(item); + } + { + Input_Item item("erf_ecut"); + item.annotation = "the value of the constant energy cutoff"; + item.category = "Plane wave related variables"; + item.type = "Real"; + item.description = "Used in variable-cell molecular dynamics (or in stress calculation). See erf_sigma for details."; + item.default_value = "0.0"; + item.unit = "Ry"; + read_sync_double(input.erf_ecut); + this->add_item(item); + } + { + Input_Item item("fft_mode"); + item.annotation = "mode of FFTW"; + item.category = "Plane wave related variables"; + item.type = "Integer"; + item.description = R"(Set the mode of FFTW. +* 0: FFTW_ESTIMATE +* 1: FFTW_MEASURE +* 2: FFTW_PATIENT +* 3: FFTW_EXHAUSTIVE)"; + item.default_value = "0"; + read_sync_int(input.fft_mode); + this->add_item(item); + } + { + Input_Item item("erf_height"); + item.annotation = "the height of the energy step for reciprocal vectors"; + item.category = "Plane wave related variables"; + item.type = "Real"; + item.description = "Used in variable-cell molecular dynamics (or in stress calculation). See erf_sigma for details."; + item.default_value = "0.0"; + item.unit = "Ry"; + read_sync_double(input.erf_height); + this->add_item(item); + } + { + Input_Item item("erf_sigma"); + item.annotation = "the width of the energy step for reciprocal vectors"; + item.category = "Plane wave related variables"; + item.type = "Real"; + item.description = "In order to recover the accuracy of a constant energy cutoff calculation, the kinetic functional " + "is modified, which is used in variable-cell molecular dynamics (or in stress calculation)."; + item.default_value = "0.1"; + item.unit = "Ry"; + read_sync_double(input.erf_sigma); + this->add_item(item); + } + { + Input_Item item("stru_file"); + item.annotation = "the filename of file containing atom positions"; + item.category = "Input files"; + item.type = "String"; + item.description = "The name of the structure file containing various information about atom species, " + "including pseudopotential files, local orbitals files, cell information, atom positions, " + "and whether atoms should be allowed to move."; + item.default_value = "STRU"; + read_sync_string(input.stru_file); + this->add_item(item); + } + { + Input_Item item("kpoint_file"); + item.annotation = "the name of file containing k points"; + item.category = "Input files"; + item.type = "String"; + item.description = "The name of the k-point file that includes the k-point information of Brillouin zone."; + item.default_value = "KPT"; + read_sync_string(input.kpoint_file); + item.reset_value = [](const Input_Item& item, Parameter& para) { + if (para.input.stru_file == "") + { + GlobalV::ofs_warning << "kpoint_file is set to KPT when stru_file is not set" << std::endl; + para.input.stru_file = "KPT"; + } + }; + this->add_item(item); + } + { + Input_Item item("pseudo_dir"); + item.annotation = "the directory containing pseudo files"; + item.category = "Input files"; + item.type = "String"; + item.description = "The directory of pseudopotential files. This parameter is combined with the " + "pseudopotential filenames in the STRU file to form the complete pseudopotential file paths."; + item.default_value = "\"\""; + item.read_value = [](const Input_Item& item, Parameter& para) { + if(item.get_size() == 0) + { + para.input.pseudo_dir = ""; + } + else + { + para.input.pseudo_dir = to_dir(strvalue); + } + }; + sync_string(input.pseudo_dir); + this->add_item(item); + } + { + Input_Item item("orbital_dir"); + item.annotation = "the directory containing orbital files"; + item.category = "Input files"; + item.type = "String"; + item.description = "The directory to save numerical atomic orbitals. This parameter is combined with " + "orbital filenames in the STRU file to form the complete orbital file paths."; + item.default_value = "\"\""; + item.read_value = [](const Input_Item& item, Parameter& para) { + if(item.get_size() == 0) + { + para.input.orbital_dir = ""; + } + else + { + para.input.orbital_dir = to_dir(strvalue); + } + }; + sync_string(input.orbital_dir); + this->add_item(item); + } + { + Input_Item item("read_file_dir"); + item.annotation = "directory of files for reading"; + item.category = "Input files"; + item.type = "String"; + item.description = "Location of files, such as the electron density (chgs1.cube), required as a starting point."; + item.default_value = "OUT.$suffix"; + read_sync_string(input.read_file_dir); + item.reset_value = [](const Input_Item& item, Parameter& para) { + if (para.input.read_file_dir == "auto") + { + para.input.read_file_dir = "OUT." + para.input.suffix; + } + para.input.read_file_dir = to_dir(para.input.read_file_dir); + }; + this->add_item(item); + } + { + Input_Item item("restart_load"); + item.annotation = "restart from disk"; + item.category = "Input files"; + item.type = "Boolean"; + item.description = "If restart_save is set to true and an electronic iteration is finished, calculations can be " + "restarted from the charge density file, which are saved in the former calculation."; + item.default_value = "False"; + item.availability = "Used only when numerical atomic orbitals are employed as basis set."; + read_sync_bool(input.restart_load); + this->add_item(item); + } +} + +} // namespace ModuleIO diff --git a/source/source_io/module_parameter/read_input_item_tddft.cpp b/source/source_io/module_parameter/read_input_item_tddft.cpp new file mode 100644 index 0000000000..18e8ad3c00 --- /dev/null +++ b/source/source_io/module_parameter/read_input_item_tddft.cpp @@ -0,0 +1,754 @@ +#include "source_base/constants.h" +#include "source_base/tool_quit.h" +#include "read_input.h" +#include "read_input_tool.h" + +namespace ModuleIO +{ +void ReadInput::item_rt_tddft() +{ + // NOTE: The order of add_item() calls below determines the parameter order + // in the generated documentation (docs/advanced/input_files/input-main.md). + // Please preserve this ordering when adding new parameters. + { + Input_Item item("estep_per_md"); + item.annotation = "steps of force change"; + item.category = "RT-TDDFT: Real-Time Time-Dependent Density Functional Theory"; + item.type = "Integer"; + item.description = "The number of electronic propagation steps between two ionic steps."; + item.default_value = "1"; + item.unit = ""; + item.availability = ""; + read_sync_int(input.estep_per_md); + this->add_item(item); + } + // real time TDDFT + { + Input_Item item("td_dt"); + item.annotation = "time step for evolving wavefunction"; + item.category = "RT-TDDFT: Real-Time Time-Dependent Density Functional Theory"; + item.type = "Real"; + item.description = "The time step used in electronic propagation. Setting td_dt will reset the value of md_dt to td_dt * estep_per_md."; + item.default_value = "md_dt / estep_per_md"; + item.unit = "fs"; + item.availability = ""; + item.reset_value = [](const Input_Item& item, Parameter& para) { + if (para.input.td_dt == -1.0) + { + GlobalV::ofs_running << "td_dt don't exist, set td_dt with md_dt" << std::endl; + para.input.td_dt = para.input.mdp.md_dt / para.input.estep_per_md; + } + }; + read_sync_double(input.td_dt); + this->add_item(item); + } + { + Input_Item item("td_edm"); + item.annotation = "the method to calculate the energy density matrix"; + item.category = "RT-TDDFT: Real-Time Time-Dependent Density Functional Theory"; + item.type = "Integer"; + item.description = R"(Method to calculate the energy-density matrix, mainly affects the calculation of force and stress. +* 0: Using the original formula. +* 1: Using the formula for ground state (deprecated). Note that this usually does not hold if wave function is not the eigenstate of the Hamiltonian.)"; + item.default_value = "0"; + item.unit = ""; + item.availability = ""; + read_sync_int(input.td_edm); + this->add_item(item); + } + { + Input_Item item("td_print_eij"); + item.annotation = "print eij or not"; + item.category = "RT-TDDFT: Real-Time Time-Dependent Density Functional Theory"; + item.type = "Real"; + item.description = R"(Controls the printing of Hamiltonian matrix elements. +* < 0: Suppress all output. +* >= 0: Print only elements with either i or j exceeding td_print_eij.)"; + item.default_value = "-1"; + item.unit = "Ry"; + item.availability = ""; + read_sync_double(input.td_print_eij); + this->add_item(item); + } + { + Input_Item item("td_propagator"); + item.annotation = "method of propagator"; + item.category = "RT-TDDFT: Real-Time Time-Dependent Density Functional Theory"; + item.type = "Integer"; + item.description = R"(Methods of electronic propagation. +* 0: Crank-Nicolson, based on matrix inversion. +* 1: 4th-order Taylor expansion of exponential. +* 2: Enforced time-reversal symmetry (ETRS). +* 3: Crank-Nicolson, based on solving linear equation.)"; + item.default_value = "0"; + item.unit = ""; + item.availability = ""; + read_sync_int(input.propagator); + this->add_item(item); + } + { + Input_Item item("td_vext"); + item.annotation = "add extern potential or not"; + item.category = "RT-TDDFT: Real-Time Time-Dependent Density Functional Theory"; + item.type = "Boolean"; + item.description = R"(* True: Add a laser-material interaction (external electric field). +* False: No external electric field.)"; + item.default_value = "False"; + item.unit = ""; + item.availability = ""; + read_sync_bool(input.td_vext); + this->add_item(item); + } + // { + // Input_Item item("td_vext_dire"); + // item.annotation = "extern potential direction"; + // item.read_value = [](const Input_Item& item, Parameter& para) { + // para.input.td_vext_dire = longstring(item.str_values); + // }; + // sync_string(input.td_vext_dire); + // this->add_item(item); + // } + { + Input_Item item("td_vext_dire"); + item.annotation = "extern potential direction"; + item.category = "RT-TDDFT: Real-Time Time-Dependent Density Functional Theory"; + item.type = "String"; + item.description = R"(Specifies the direction(s) of the external electric field when td_vext is enabled. For example, td_vext_dire 1 2 indicates that external electric fields are applied to both the x and y directions simultaneously. Electric field parameters can also be written as strings. For example, td_gauss_phase 0 1.5707963 indicates that the Gaussian type electric fields in the x and y directions have a phase delay of pi/2. +* 1: The external field direction is along the x-axis. +* 2: The external field direction is along the y-axis. +* 3: The external field direction is along the z-axis.)"; + item.default_value = "1"; + item.unit = ""; + item.availability = ""; + item.read_value = [](const Input_Item& item, Parameter& para) { + parse_expression(item.str_values, para.input.td_vext_dire); + }; + item.get_final_value = [](Input_Item& item, const Parameter& para) { + if (item.is_read()) + { + item.final_value.str(longstring(item.str_values)); + } + }; + add_intvec_bcast(input.td_vext_dire, para.input.td_vext_dire.size(), 0); + this->add_item(item); + } + { + Input_Item item("td_stype"); + item.annotation = "type of electric field in space domain"; + item.category = "RT-TDDFT: Real-Time Time-Dependent Density Functional Theory"; + item.type = "Integer"; + item.description = R"(Type of electric field in the space domain, i.e. the gauge of the electric field. +* 0: Length gauge. +* 1: Velocity gauge. +* 2: Hybrid gauge. See J. Chem. Theory Comput. 2025, 21, 3335-3341 for more information.)"; + item.default_value = "0"; + item.unit = ""; + item.availability = ""; + read_sync_int(input.td_stype); + this->add_item(item); + } + { + Input_Item item("td_ttype"); + item.annotation = "type of electric field in time domain"; + item.category = "RT-TDDFT: Real-Time Time-Dependent Density Functional Theory"; + item.type = "String"; + item.description = R"(Type of electric field in the time domain. +* 0: Gaussian type function. +* 1: Trapezoid type function. +* 2: Trigonometric type function. +* 3: Heaviside type function.)"; + item.default_value = "0"; + item.unit = ""; + item.availability = ""; + item.read_value = [](const Input_Item& item, Parameter& para) { + para.input.td_ttype = longstring(item.str_values); + }; + sync_string(input.td_ttype); + this->add_item(item); + } + { + Input_Item item("td_tstart"); + item.annotation = " number of steps where electric field starts"; + item.category = "RT-TDDFT: Real-Time Time-Dependent Density Functional Theory"; + item.type = "Integer"; + item.description = "The initial time step when the time-dependent electric field is activated."; + item.default_value = "1"; + item.unit = ""; + item.availability = ""; + read_sync_int(input.td_tstart); + this->add_item(item); + } + { + Input_Item item("td_tend"); + item.annotation = "number of steps where electric field ends"; + item.category = "RT-TDDFT: Real-Time Time-Dependent Density Functional Theory"; + item.type = "Integer"; + item.description = "The final time step when the time-dependent electric field is deactivated. The field remains active between td_tstart and td_tend."; + item.default_value = "1000"; + item.unit = ""; + item.availability = ""; + read_sync_int(input.td_tend); + this->add_item(item); + } + { + Input_Item item("td_lcut1"); + item.annotation = "cut1 of interval in length gauge"; + item.category = "RT-TDDFT: Real-Time Time-Dependent Density Functional Theory"; + item.type = "Real"; + item.description = "The lower bound of the interval in the length gauge RT-TDDFT, where the coordinate is the fractional coordinate."; + item.default_value = "0.05"; + item.unit = ""; + item.availability = ""; + read_sync_double(input.td_lcut1); + this->add_item(item); + } + { + Input_Item item("td_lcut2"); + item.annotation = "cut2 of interval in length gauge"; + item.category = "RT-TDDFT: Real-Time Time-Dependent Density Functional Theory"; + item.type = "Real"; + item.description = "The upper bound of the interval in the length gauge RT-TDDFT, where the coordinate is the fractional coordinate."; + item.default_value = "0.95"; + item.unit = ""; + item.availability = ""; + read_sync_double(input.td_lcut2); + this->add_item(item); + } + { + Input_Item item("td_gauss_freq"); + item.annotation = "frequency (freq) of Gauss type electric field"; + item.category = "RT-TDDFT: Real-Time Time-Dependent Density Functional Theory"; + item.type = "String"; + item.description = "Frequency of the Gaussian type electric field."; + item.default_value = "22.13"; + item.unit = "1/fs"; + item.availability = ""; + item.read_value = [](const Input_Item& item, Parameter& para) { + para.input.td_gauss_freq = longstring(item.str_values); + }; + sync_string(input.td_gauss_freq); + this->add_item(item); + } + { + Input_Item item("td_gauss_phase"); + item.annotation = "phase of Gauss type electric field"; + item.category = "RT-TDDFT: Real-Time Time-Dependent Density Functional Theory"; + item.type = "String"; + item.description = "Phase of the Gaussian type electric field."; + item.default_value = "0.0"; + item.unit = ""; + item.availability = ""; + item.read_value = [](const Input_Item& item, Parameter& para) { + para.input.td_gauss_phase = longstring(item.str_values); + }; + sync_string(input.td_gauss_phase); + this->add_item(item); + } + { + Input_Item item("td_gauss_sigma"); + item.annotation = "sigma of Gauss type electric field"; + item.category = "RT-TDDFT: Real-Time Time-Dependent Density Functional Theory"; + item.type = "String"; + item.description = "Pulse width (standard deviation) of the Gaussian type electric field."; + item.default_value = "30.0"; + item.unit = "fs"; + item.availability = ""; + item.read_value = [](const Input_Item& item, Parameter& para) { + para.input.td_gauss_sigma = longstring(item.str_values); + }; + sync_string(input.td_gauss_sigma); + this->add_item(item); + } + { + Input_Item item("td_gauss_t0"); + item.annotation = "step number of time center (t0) of Gauss type electric field"; + item.category = "RT-TDDFT: Real-Time Time-Dependent Density Functional Theory"; + item.type = "String"; + item.description = "Step number of the time center of the Gaussian type electric field."; + item.default_value = "100"; + item.unit = ""; + item.availability = ""; + item.read_value = [](const Input_Item& item, Parameter& para) { + para.input.td_gauss_t0 = longstring(item.str_values); + }; + sync_string(input.td_gauss_t0); + this->add_item(item); + } + { + Input_Item item("td_gauss_amp"); + item.annotation = "amplitude of Gauss type electric field"; + item.category = "RT-TDDFT: Real-Time Time-Dependent Density Functional Theory"; + item.type = "String"; + item.description = "Amplitude of the Gaussian type electric field."; + item.default_value = "0.25"; + item.unit = "V/Angstrom"; + item.availability = ""; + item.read_value = [](const Input_Item& item, Parameter& para) { + para.input.td_gauss_amp = longstring(item.str_values); + }; + sync_string(input.td_gauss_amp); + this->add_item(item); + } + { + Input_Item item("td_trape_freq"); + item.annotation = "frequency of Trapezoid type electric field"; + item.category = "RT-TDDFT: Real-Time Time-Dependent Density Functional Theory"; + item.type = "String"; + item.description = "Frequency of the trapezoid type electric field."; + item.default_value = "1.60"; + item.unit = "1/fs"; + item.availability = ""; + item.read_value = [](const Input_Item& item, Parameter& para) { + para.input.td_trape_freq = longstring(item.str_values); + }; + sync_string(input.td_trape_freq); + this->add_item(item); + } + { + Input_Item item("td_trape_phase"); + item.annotation = "phase of Trapezoid type electric field"; + item.category = "RT-TDDFT: Real-Time Time-Dependent Density Functional Theory"; + item.type = "String"; + item.description = "Phase of the trapezoid type electric field."; + item.default_value = "0.0"; + item.unit = ""; + item.availability = ""; + item.read_value = [](const Input_Item& item, Parameter& para) { + para.input.td_trape_phase = longstring(item.str_values); + }; + sync_string(input.td_trape_phase); + this->add_item(item); + } + { + Input_Item item("td_trape_t1"); + item.annotation = "t1 of Trapezoid type electric field"; + item.category = "RT-TDDFT: Real-Time Time-Dependent Density Functional Theory"; + item.type = "String"; + item.description = "Step number of the time interval t1 of the trapezoid type electric field."; + item.default_value = "1875"; + item.unit = ""; + item.availability = ""; + item.read_value = [](const Input_Item& item, Parameter& para) { + para.input.td_trape_t1 = longstring(item.str_values); + }; + sync_string(input.td_trape_t1); + this->add_item(item); + } + { + Input_Item item("td_trape_t2"); + item.annotation = "t2 of Trapezoid type electric field"; + item.category = "RT-TDDFT: Real-Time Time-Dependent Density Functional Theory"; + item.type = "String"; + item.description = "Step number of the time interval t2 of the trapezoid type electric field."; + item.default_value = "5625"; + item.unit = ""; + item.availability = ""; + item.read_value = [](const Input_Item& item, Parameter& para) { + para.input.td_trape_t2 = longstring(item.str_values); + }; + sync_string(input.td_trape_t2); + this->add_item(item); + } + { + Input_Item item("td_trape_t3"); + item.annotation = "t3 of Trapezoid type electric field"; + item.category = "RT-TDDFT: Real-Time Time-Dependent Density Functional Theory"; + item.type = "String"; + item.description = "Step number of the time interval t3 of the trapezoid type electric field."; + item.default_value = "7500"; + item.unit = ""; + item.availability = ""; + item.read_value = [](const Input_Item& item, Parameter& para) { + para.input.td_trape_t3 = longstring(item.str_values); + }; + sync_string(input.td_trape_t3); + this->add_item(item); + } + { + Input_Item item("td_trape_amp"); + item.annotation = "amplitude of Trapezoid type electric field"; + item.category = "RT-TDDFT: Real-Time Time-Dependent Density Functional Theory"; + item.type = "String"; + item.description = "Amplitude of the trapezoid type electric field."; + item.default_value = "2.74"; + item.unit = "V/Angstrom"; + item.availability = ""; + item.read_value = [](const Input_Item& item, Parameter& para) { + para.input.td_trape_amp = longstring(item.str_values); + }; + sync_string(input.td_trape_amp); + this->add_item(item); + } + { + Input_Item item("td_trigo_freq1"); + item.annotation = "frequency 1 of Trigonometric type electric field"; + item.category = "RT-TDDFT: Real-Time Time-Dependent Density Functional Theory"; + item.type = "String"; + item.description = "Frequency 1 of the trigonometric type electric field."; + item.default_value = "1.164656"; + item.unit = "1/fs"; + item.availability = ""; + item.read_value = [](const Input_Item& item, Parameter& para) { + para.input.td_trigo_freq1 = longstring(item.str_values); + }; + sync_string(input.td_trigo_freq1); + this->add_item(item); + } + { + Input_Item item("td_trigo_freq2"); + item.annotation = "frequency 2 of Trigonometric type electric field"; + item.category = "RT-TDDFT: Real-Time Time-Dependent Density Functional Theory"; + item.type = "String"; + item.description = "Frequency 2 of the trigonometric type electric field."; + item.default_value = "0.029116"; + item.unit = "1/fs"; + item.availability = ""; + item.read_value = [](const Input_Item& item, Parameter& para) { + para.input.td_trigo_freq2 = longstring(item.str_values); + }; + sync_string(input.td_trigo_freq2); + this->add_item(item); + } + { + Input_Item item("td_trigo_phase1"); + item.annotation = "phase 1 of Trigonometric type electric field"; + item.category = "RT-TDDFT: Real-Time Time-Dependent Density Functional Theory"; + item.type = "String"; + item.description = "Phase 1 of the trigonometric type electric field."; + item.default_value = "0.0"; + item.unit = ""; + item.availability = ""; + item.read_value = [](const Input_Item& item, Parameter& para) { + para.input.td_trigo_phase1 = longstring(item.str_values); + }; + sync_string(input.td_trigo_phase1); + this->add_item(item); + } + { + Input_Item item("td_trigo_phase2"); + item.annotation = "phase 2 of Trigonometric type electric field"; + item.category = "RT-TDDFT: Real-Time Time-Dependent Density Functional Theory"; + item.type = "String"; + item.description = "Phase 2 of the trigonometric type electric field."; + item.default_value = "0.0"; + item.unit = ""; + item.availability = ""; + item.read_value = [](const Input_Item& item, Parameter& para) { + para.input.td_trigo_phase2 = longstring(item.str_values); + }; + sync_string(input.td_trigo_phase2); + this->add_item(item); + } + { + Input_Item item("td_trigo_amp"); + item.annotation = "amplitude of Trigonometric type electric field"; + item.category = "RT-TDDFT: Real-Time Time-Dependent Density Functional Theory"; + item.type = "String"; + item.description = "Amplitude of the trigonometric type electric field."; + item.default_value = "2.74"; + item.unit = "V/Angstrom"; + item.availability = ""; + item.read_value = [](const Input_Item& item, Parameter& para) { + para.input.td_trigo_amp = longstring(item.str_values); + }; + sync_string(input.td_trigo_amp); + this->add_item(item); + } + { + Input_Item item("td_heavi_t0"); + item.annotation = "t0 of Heaviside type electric field"; + item.category = "RT-TDDFT: Real-Time Time-Dependent Density Functional Theory"; + item.type = "String"; + item.description = "Step number of the switch time of the Heaviside type electric field."; + item.default_value = "100"; + item.unit = ""; + item.availability = ""; + item.read_value = [](const Input_Item& item, Parameter& para) { + para.input.td_heavi_t0 = longstring(item.str_values); + }; + sync_string(input.td_heavi_t0); + this->add_item(item); + } + { + Input_Item item("td_heavi_amp"); + item.annotation = "amplitude of Heaviside type electric field"; + item.category = "RT-TDDFT: Real-Time Time-Dependent Density Functional Theory"; + item.type = "String"; + item.description = "Amplitude of the Heaviside type electric field."; + item.default_value = "1.0"; + item.unit = "V/Angstrom"; + item.availability = ""; + item.read_value = [](const Input_Item& item, Parameter& para) { + para.input.td_heavi_amp = longstring(item.str_values); + }; + sync_string(input.td_heavi_amp); + this->add_item(item); + } + { + Input_Item item("init_vecpot_file"); + item.annotation = "init vector potential through file or not"; + item.category = "RT-TDDFT: Real-Time Time-Dependent Density Functional Theory"; + item.type = "Boolean"; + item.description = R"(Initialize vector potential through file or not. +* True: Initialize vector potential from file At.dat (unit: a.u.). It consists of four columns, representing the step number and vector potential on each direction. +* False: Calculate vector potential by integrating the electric field.)"; + item.default_value = "False"; + item.unit = ""; + item.availability = ""; + read_sync_bool(input.init_vecpot_file); + this->add_item(item); + } + { + Input_Item item("ocp"); + item.annotation = "change occupation or not"; + item.category = "RT-TDDFT: Real-Time Time-Dependent Density Functional Theory"; + item.type = "Boolean"; + item.description = R"(* True: Fixes the band occupations based on the values specified in ocp_set. +* False: Does not fix the band occupations.)"; + item.default_value = "False"; + item.unit = ""; + item.availability = ""; + read_sync_bool(input.ocp); + this->add_item(item); + } + { + Input_Item item("ocp_set"); + item.annotation = "set occupation"; + item.category = "RT-TDDFT: Real-Time Time-Dependent Density Functional Theory"; + item.type = "String"; + item.description = R"(If ocp is set to 1, ocp_set must be provided as a string specifying the occupation numbers for each band across all k-points. The format follows a space-separated pattern, where occupations are assigned sequentially to bands for each k-point. A shorthand notation Nx can be used to repeat a value x for N bands. +* Example: + 1 10*1 0 1 represents occupations for 13 bands, where the 12th band is fully unoccupied (0), and all others are occupied (1). +* For a system with multiple k-points, the occupations must be specified for all k-points, following their order in the output file kpoints (may lead to fractional occupations). +* Incorrect specification of ocp_set could lead to inconsistencies in electron counting, causing the calculation to terminate with an error.)"; + item.default_value = "None"; + item.unit = ""; + item.availability = ""; + item.read_value = [](const Input_Item& item, Parameter& para) { + parse_expression(item.str_values, para.input.ocp_kb); + }; + item.get_final_value = [](Input_Item& item, const Parameter& para) { + if(item.is_read()) + { + item.final_value.str(longstring(item.str_values)); + } + }; + add_doublevec_bcast(input.ocp_kb, para.input.ocp_kb.size(), 0.0); + this->add_item(item); + } + + +} +void ReadInput::item_tdofdft() +{ + // NOTE: The order of add_item() calls below determines the parameter order + // in the generated documentation (docs/advanced/input_files/input-main.md). + // Please preserve this ordering when adding new parameters. + // TD-OFDFT + { + Input_Item item("of_cd"); + item.annotation = "add CD Potential or not"; + item.category = "TDOFDFT: time dependent orbital free density functional theory"; + item.type = "Boolean"; + item.description = R"(Added the current dependent(CD) potential. (https://doi.org/10.1103/PhysRevB.98.144302) +* True: Added the CD potential. +* False: Not added the CD potential.)"; + item.default_value = "False"; + item.unit = ""; + item.availability = "TDOFDFT"; + read_sync_bool(input.of_cd); + this->add_item(item); + } + { + Input_Item item("of_mcd_alpha"); + item.annotation = "parameter of modified CD Potential"; + item.category = "TDOFDFT: time dependent orbital free density functional theory"; + item.type = "Real"; + item.description = "The value of the parameter alpha in modified CD potential method. mCDPotential=alpha*CDPotential (proposed in paper PhysRevB.98.144302)"; + item.default_value = "1.0"; + item.unit = ""; + item.availability = "TDOFDFT"; + read_sync_double(input.of_mCD_alpha); + this->add_item(item); + } +} +void ReadInput::item_lr_tddft() +{ + // NOTE: The order of add_item() calls below determines the parameter order + // in the generated documentation (docs/advanced/input_files/input-main.md). + // Please preserve this ordering when adding new parameters. + { + Input_Item item("xc_kernel"); + item.annotation = "exchange correlation (XC) kernel for LR-TDDFT"; + item.category = "Linear Response TDDFT (Under Development Feature)"; + item.type = "String"; + item.description = "The exchange-correlation kernel used in the calculation. Currently supported: RPA, LDA, PBE, HSE, HF."; + item.default_value = "LDA"; + item.unit = ""; + item.availability = ""; + read_sync_string(input.xc_kernel); + this->add_item(item); + } + { + Input_Item item("lr_init_xc_kernel"); + item.annotation = "The method to initalize the xc kernel"; + item.category = "Linear Response TDDFT (Under Development Feature)"; + item.type = "Vector of String (>=1 values)"; + item.description = R"(The method to initalize the xc kernel. +* "default": Calculate xc kernel from the ground-state charge density. +* "file": Read the xc kernel on grid from the provided files. The following words should be the paths of ".cube" files, where the first 1 (nspin==1) or 3 (nspin==2, namely spin-aa, spin-ab and spin-bb) will be read in. The parameter xc_kernel will be invalid. Now only LDA-type kernel is supported as the potential will be calculated by directly multiplying the transition density. +* "from_charge_file": Calculate fxc from the charge density read from the provided files. The following words should be the paths of ".cube" files, where the first nspin files will be read in.)"; + item.default_value = "\"default\""; + item.unit = ""; + item.availability = ""; + item.read_value = [](const Input_Item& item, Parameter& para) { + size_t count = item.get_size(); + auto& ifxc = para.input.lr_init_xc_kernel; + for (int i = 0; i < count; i++) { ifxc.push_back(item.str_values[i]); } + }; + item.reset_value = [](const Input_Item& item, Parameter& para) { + if (para.input.lr_init_xc_kernel.empty()) { para.input.lr_init_xc_kernel.push_back("default"); } + }; + sync_stringvec(input.lr_init_xc_kernel, para.input.lr_init_xc_kernel.size(), "default"); + this->add_item(item); + } + { + Input_Item item("lr_solver"); + item.annotation = "the eigensolver for LR-TDDFT"; + item.category = "Linear Response TDDFT (Under Development Feature)"; + item.type = "String"; + item.description = R"(The method to solve the Casida equation in LR-TDDFT under Tamm-Dancoff approximation (TDA). +* dav/dav_subspace/cg: Construct and diagonalize the Hamiltonian matrix iteratively with Davidson/Non-ortho-Davidson/CG algorithm. +* lapack: Construct the full matrix and directly diagonalize with LAPACK. +* spectrum: Calculate absorption spectrum only without solving Casida equation.)"; + item.default_value = "dav"; + item.unit = ""; + item.availability = ""; + read_sync_string(input.lr_solver); + this->add_item(item); + } + { + Input_Item item("lr_thr"); + item.annotation = "convergence threshold of the LR-TDDFT eigensolver"; + item.category = "Linear Response TDDFT (Under Development Feature)"; + item.type = "Real"; + item.description = "The convergence threshold of iterative diagonalization solver for LR-TDDFT. It is a pure-math number with the same meaning as pw_diag_thr, but since the Casida equation is a one-shot eigenvalue problem, it is also the convergence threshold of LR-TDDFT."; + item.default_value = "1e-2"; + item.unit = ""; + item.availability = ""; + read_sync_double(input.lr_thr); + this->add_item(item); + } + { + Input_Item item("nocc"); + item.annotation = "the number of occupied orbitals to form the 2-particle basis ( <= nelec/2)"; + item.category = "Linear Response TDDFT (Under Development Feature)"; + item.type = "Integer"; + item.description = R"(The number of occupied orbitals (up to HOMO) used in the LR-TDDFT calculation. +* Note: If the value is illegal ( > nelec/2 or <= 0), it will be autoset to nelec/2.)"; + item.default_value = "nband"; + item.unit = ""; + item.availability = ""; + read_sync_int(input.nocc); + item.reset_value = [](const Input_Item& item, Parameter& para) { + const int nocc_default = std::max(static_cast(para.input.nelec + 1) / 2, para.input.nbands); + if (para.input.nocc <= 0 || para.input.nocc > nocc_default) { para.input.nocc = nocc_default; } + }; + this->add_item(item); + } + { + Input_Item item("nvirt"); + item.annotation = "the number of virtual orbitals to form the 2-particle basis (nocc + nvirt <= nbands)"; + item.category = "Linear Response TDDFT (Under Development Feature)"; + item.type = "Integer"; + item.description = "The number of virtual orbitals (starting from LUMO) used in the LR-TDDFT calculation."; + item.default_value = "1"; + item.unit = ""; + item.availability = ""; + read_sync_int(input.nvirt); + this->add_item(item); + } + // Linear Responce TDDFT + { + Input_Item item("lr_nstates"); + item.annotation = "the number of 2-particle states to be solved"; + item.category = "Linear Response TDDFT (Under Development Feature)"; + item.type = "Integer"; + item.description = "The number of 2-particle states to be solved."; + item.default_value = "0"; + item.unit = ""; + item.availability = ""; + read_sync_int(input.lr_nstates); + this->add_item(item); + } + { + Input_Item item("lr_unrestricted"); + item.annotation = "Whether to use unrestricted construction for LR-TDDFT"; + item.category = "Linear Response TDDFT (Under Development Feature)"; + item.type = "Boolean"; + item.description = R"(Whether to use unrestricted construction for LR-TDDFT (the matrix size will be doubled). +* True: Always use unrestricted LR-TDDFT. +* False: Use unrestricted LR-TDDFT only when the system is open-shell.)"; + item.default_value = "False"; + item.unit = ""; + item.availability = ""; + read_sync_bool(input.lr_unrestricted); + this->add_item(item); + } + { + Input_Item item("abs_wavelen_range"); + item.annotation = "the range of wavelength(nm) to output the absorption spectrum "; + item.category = "Linear Response TDDFT (Under Development Feature)"; + item.type = "Real Real"; + item.description = "The range of the wavelength for the absorption spectrum calculation."; + item.default_value = "0.0 0.0"; + item.unit = "nm"; + item.availability = ""; + item.read_value = [](const Input_Item& item, Parameter& para) { + size_t count = item.get_size(); + for (int i = 0; i < count; i++) + { + para.input.abs_wavelen_range.push_back(std::stod(item.str_values[i])); + } + }; + sync_doublevec(input.abs_wavelen_range, 2, 0.0); + this->add_item(item); + } + { + Input_Item item("out_wfc_lr"); + item.annotation = "whether to output the eigenvectors (excitation amplitudes) in the particle-hole basis"; + item.category = "Linear Response TDDFT (Under Development Feature)"; + item.type = "Boolean"; + item.description = "Whether to output the eigenstates (excitation energy) and eigenvectors (excitation amplitude) of the LR-TDDFT calculation. The output files are OUT.{suffix}/Excitation_Amplitude_${processor_rank}.dat."; + item.default_value = "False"; + item.unit = ""; + item.availability = ""; + read_sync_bool(input.out_wfc_lr); + this->add_item(item); + } + { + Input_Item item("abs_gauge"); + item.annotation = "whether to use length or velocity gauge to calculate the absorption spectrum in LR-TDDFT"; + item.category = "Linear Response TDDFT (Under Development Feature)"; + item.type = "String"; + item.description = "Whether to use length or velocity gauge to calculate the absorption spectrum in LR-TDDFT."; + item.default_value = "length"; + item.unit = ""; + item.availability = ""; + read_sync_string(input.abs_gauge); + this->add_item(item); + } + { + Input_Item item("abs_broadening"); + item.annotation = "the broadening (eta) for LR-TDDFT absorption spectrum"; + item.category = "Linear Response TDDFT (Under Development Feature)"; + item.type = "Real"; + item.description = "The broadening factor for the absorption spectrum calculation."; + item.default_value = "0.01"; + item.unit = ""; + item.availability = ""; + read_sync_double(input.abs_broadening); + this->add_item(item); + } +} +} diff --git a/source/source_io/read_input_tool.h b/source/source_io/module_parameter/read_input_tool.h similarity index 100% rename from source/source_io/read_input_tool.h rename to source/source_io/module_parameter/read_input_tool.h diff --git a/source/source_io/read_set_globalv.cpp b/source/source_io/module_parameter/read_set_globalv.cpp similarity index 91% rename from source/source_io/read_set_globalv.cpp rename to source/source_io/module_parameter/read_set_globalv.cpp index 5237c0647a..94c0095c27 100644 --- a/source/source_io/read_set_globalv.cpp +++ b/source/source_io/module_parameter/read_set_globalv.cpp @@ -1,8 +1,8 @@ +#include "read_input.h" +#include "read_input_tool.h" #include "source_base/global_variable.h" #include "source_base/tool_quit.h" #include "source_io/module_parameter/parameter.h" -#include "read_input.h" -#include "read_input_tool.h" namespace ModuleIO { /// @note Here para.inp has been synchronized of all ranks. @@ -101,7 +101,7 @@ void ReadInput::set_global_dir(const Input_para& inp, System_para& sys) sys.global_mlkedf_descriptor_dir = sys.global_out_dir + "MLKEDF_Descriptors/"; sys.global_mlkedf_descriptor_dir = to_dir(sys.global_mlkedf_descriptor_dir); - /// get the global directory for DeePKS labels during electronic steps + /// get the global directory for DeePKS labels during electronic steps sys.global_deepks_label_elec_dir = sys.global_out_dir + "DeePKS_Labels_Elec/"; sys.global_deepks_label_elec_dir = to_dir(sys.global_deepks_label_elec_dir); @@ -130,17 +130,22 @@ void ReadInput::set_global_dir(const Input_para& inp, System_para& sys) // set the global log file bool out_alllog = inp.out_alllog; + // set the global calculation type + std::string cal_type = inp.calculation; #ifdef __MPI // because log_file is different for each rank, so we need to bcast the out_alllog Parallel_Common::bcast_bool(out_alllog); + // In `ReadInput::read_parameters`, `bcastfunc(param)` is after `set_global_dir`, + // so `cal_type` must be synchronized here manually + Parallel_Common::bcast_string(cal_type); #endif if (out_alllog) { - PARAM.sys.log_file = "running_" + PARAM.inp.calculation + "_" + std::to_string(PARAM.sys.myrank + 1) + ".log"; + PARAM.sys.log_file = "running_" + cal_type + "_" + std::to_string(PARAM.sys.myrank + 1) + ".log"; } else { - PARAM.sys.log_file = "running_" + PARAM.inp.calculation + ".log"; + PARAM.sys.log_file = "running_" + cal_type + ".log"; } #ifdef __MPI Parallel_Common::bcast_string(sys.global_in_card); diff --git a/source/source_io/to_qo.h b/source/source_io/module_qo/to_qo.h similarity index 100% rename from source/source_io/to_qo.h rename to source/source_io/module_qo/to_qo.h diff --git a/source/source_io/to_qo_kernel.cpp b/source/source_io/module_qo/to_qo_kernel.cpp similarity index 99% rename from source/source_io/to_qo_kernel.cpp rename to source/source_io/module_qo/to_qo_kernel.cpp index b16917259a..1c0471b697 100644 --- a/source/source_io/to_qo_kernel.cpp +++ b/source/source_io/module_qo/to_qo_kernel.cpp @@ -1,7 +1,7 @@ #include "source_base/libm/libm.h" #include "source_base/ylm.h" #include "source_basis/module_nao/two_center_integrator.h" -#include "source_io/to_qo.h" +#include "to_qo.h" #ifdef __MPI #include "source_base/parallel_common.h" #endif @@ -598,7 +598,7 @@ void toQO::read_ovlp(const std::string& dir, const int& nrows, const int& ncols, { if (is_R) { - double val; + double val = 0.0; ifs >> val; inum++; if (inum <= nchi_ * nphi_) { diff --git a/source/source_io/to_qo_mpi.cpp b/source/source_io/module_qo/to_qo_mpi.cpp similarity index 94% rename from source/source_io/to_qo_mpi.cpp rename to source/source_io/module_qo/to_qo_mpi.cpp index e8823a3ee5..4628a90f91 100644 --- a/source/source_io/to_qo_mpi.cpp +++ b/source/source_io/module_qo/to_qo_mpi.cpp @@ -1,13 +1,13 @@ -#include "source_io/to_qo.h" +#include "to_qo.h" #ifdef __MPI -#include "../source_base/parallel_common.h" +#include "../../source_base/parallel_common.h" #endif void toQO::bcast_stdvector_ofvector3int(std::vector>& vec, const int rank) { #ifdef __MPI - int dim; + int dim = 0; std::vector vec_1d; if(rank == 0) { @@ -37,7 +37,7 @@ void toQO::bcast_stdvector_ofvector3double(std::vector vec_1d; if(rank == 0) { diff --git a/source/source_io/to_qo_structures.cpp b/source/source_io/module_qo/to_qo_structures.cpp similarity index 99% rename from source/source_io/to_qo_structures.cpp rename to source/source_io/module_qo/to_qo_structures.cpp index 28679baf58..921191c38d 100644 --- a/source/source_io/to_qo_structures.cpp +++ b/source/source_io/module_qo/to_qo_structures.cpp @@ -1,6 +1,6 @@ -#include "source_io/to_qo.h" +#include "to_qo.h" #ifdef __MPI -#include "../source_base/parallel_common.h" +#include "../../source_base/parallel_common.h" #endif void toQO::read_structures(const UnitCell* p_ucell, const std::vector>& kvecs_d, @@ -60,7 +60,7 @@ void toQO::read_structures(const UnitCell* p_ucell, } for(int i = 0; i < nranks; i++) { - int nks_dim; + int nks_dim = 0; if(iproc_ == 0) nks_dim = nks_divided[i].size(); Parallel_Common::bcast_int(nks_dim); if(iproc_ != 0) nks_divided[i].resize(nks_dim); @@ -244,7 +244,7 @@ void toQO::scan_supercell(const int& rank, const int& nranks) } for(int i = 0; i < nranks; i++) { - int nR_dim; + int nR_dim = 0; if(rank == 0) nR_dim = nR_divided[i].size(); Parallel_Common::bcast_int(nR_dim); if(rank != 0) nR_divided[i].resize(nR_dim); diff --git a/source/source_io/restart.cpp b/source/source_io/module_restart/restart.cpp similarity index 96% rename from source/source_io/restart.cpp rename to source/source_io/module_restart/restart.cpp index 1841f3bb37..c960215a2a 100644 --- a/source/source_io/restart.cpp +++ b/source/source_io/module_restart/restart.cpp @@ -42,6 +42,11 @@ bool Restart::write_file2(const std::string& file_name, const void* const ptr, c return true; } +namespace GlobalC +{ +Restart restart; // Peize Lin add 2020.04.04 +} // namespace GlobalC + bool Restart::read_file2(const std::string& file_name, void* const ptr, const size_t size, const bool error_quit) const { const int file = open(file_name.c_str(), O_RDONLY); diff --git a/source/source_io/restart.h b/source/source_io/module_restart/restart.h similarity index 95% rename from source/source_io/restart.h rename to source/source_io/module_restart/restart.h index d3cf0cf2df..8908c9d802 100644 --- a/source/source_io/restart.h +++ b/source/source_io/module_restart/restart.h @@ -55,4 +55,9 @@ class Restart bool read_file2(const std::string& file_name, void* const ptr, const size_t size, const bool error_quit = true) const; }; +namespace GlobalC +{ +extern Restart restart; // Peize Lin add 2020.04.04 +} // namespace GlobalC + #endif diff --git a/source/source_io/restart_exx_csr.h b/source/source_io/module_restart/restart_exx_csr.h similarity index 97% rename from source/source_io/restart_exx_csr.h rename to source/source_io/module_restart/restart_exx_csr.h index 1e259f9933..2900e9237e 100644 --- a/source/source_io/restart_exx_csr.h +++ b/source/source_io/module_restart/restart_exx_csr.h @@ -35,4 +35,4 @@ namespace ModuleIO const UnitCell& ucell); } -#include "source_io/restart_exx_csr.hpp" \ No newline at end of file +#include "restart_exx_csr.hpp" \ No newline at end of file diff --git a/source/source_io/restart_exx_csr.hpp b/source/source_io/module_restart/restart_exx_csr.hpp similarity index 97% rename from source/source_io/restart_exx_csr.hpp rename to source/source_io/module_restart/restart_exx_csr.hpp index 75027faff5..fa373dd6e1 100644 --- a/source/source_io/restart_exx_csr.hpp +++ b/source/source_io/module_restart/restart_exx_csr.hpp @@ -1,8 +1,8 @@ #pragma once -#include "source_io/restart_exx_csr.h" +#include "restart_exx_csr.h" #include "source_cell/unitcell.h" -#include "source_io/csr_reader.h" -#include "source_io/write_HS_sparse.h" +#include "source_io/module_output/csr_reader.h" +#include "source_io/module_hs/write_HS_sparse.h" #include "source_lcao/module_ri/serialization_cereal.h" #include #include diff --git a/source/source_io/berryphase.cpp b/source/source_io/module_unk/berryphase.cpp similarity index 99% rename from source/source_io/berryphase.cpp rename to source/source_io/module_unk/berryphase.cpp index 8d31edec91..04c44a2935 100644 --- a/source/source_io/berryphase.cpp +++ b/source/source_io/module_unk/berryphase.cpp @@ -1,10 +1,9 @@ -#include "berryphase.h" +#include "berryphase.h" #include "source_base/module_external/lapack_connector.h" #include "source_io/module_parameter/parameter.h" #include "source_cell/klist.h" -#include "source_pw/module_pwdft/global.h" bool berryphase::berry_phase_flag = false; @@ -44,11 +43,10 @@ void berryphase::get_occupation_bands() void berryphase::lcao_init(const UnitCell& ucell, const Grid_Driver& gd, const K_Vectors& kv, - const Grid_Technique& grid_tech, const LCAO_Orbitals& orb) { ModuleBase::TITLE("berryphase", "lcao_init"); - lcao_method.init(ucell,grid_tech, kv.get_nkstot(), orb); + lcao_method.init(ucell, kv.get_nkstot(), orb); lcao_method.cal_R_number(ucell, gd); lcao_method.cal_orb_overlap(ucell); return; @@ -217,7 +215,7 @@ void berryphase::set_kpoints(const K_Vectors& kv, const int direction) } } -#include "../source_base/complexmatrix.h" +#include "../../source_base/complexmatrix.h" double berryphase::stringPhase(const UnitCell& ucell, int index_str, int nbands, diff --git a/source/source_io/berryphase.h b/source/source_io/module_unk/berryphase.h similarity index 95% rename from source/source_io/berryphase.h rename to source/source_io/module_unk/berryphase.h index d4befd298d..d7871a028c 100644 --- a/source/source_io/berryphase.h +++ b/source/source_io/module_unk/berryphase.h @@ -4,7 +4,6 @@ #ifdef __LCAO #include "unk_overlap_lcao.h" #endif -//#include "source_basis/module_pw/pw_basis.h" #include "source_basis/module_pw/pw_basis_k.h" #include "source_cell/klist.h" #include "source_psi/psi.h" @@ -25,7 +24,7 @@ class berryphase unkOverlap_pw pw_method; #ifdef __LCAO unkOverlap_lcao lcao_method; - const Parallel_Orbitals* paraV; + const Parallel_Orbitals* paraV = nullptr; #endif int total_string=0; @@ -40,7 +39,6 @@ class berryphase void lcao_init(const UnitCell& ucell, const Grid_Driver& gd, const K_Vectors& kv, - const Grid_Technique& grid_tech, const LCAO_Orbitals& orb); #endif void set_kpoints(const K_Vectors& kv, const int direction); diff --git a/source/source_io/unk_overlap_lcao.cpp b/source/source_io/module_unk/unk_overlap_lcao.cpp similarity index 94% rename from source/source_io/unk_overlap_lcao.cpp rename to source/source_io/module_unk/unk_overlap_lcao.cpp index dbd734f7e2..99726117ff 100644 --- a/source/source_io/unk_overlap_lcao.cpp +++ b/source/source_io/module_unk/unk_overlap_lcao.cpp @@ -1,10 +1,9 @@ #include "unk_overlap_lcao.h" - +#include "source_base/parallel_comm.h" // use POOL_WORLD, etc. #include "source_io/module_parameter/parameter.h" #include "ctime" #include "source_base/module_external/scalapack_connector.h" #include "source_cell/module_neighbor/sltk_grid_driver.h" -#include "source_pw/module_pwdft/global.h" unkOverlap_lcao::unkOverlap_lcao() { @@ -25,24 +24,14 @@ unkOverlap_lcao::~unkOverlap_lcao() } void unkOverlap_lcao::init(const UnitCell& ucell, - const Grid_Technique& gt, const int nkstot, const LCAO_Orbitals& orb) { - - int Lmax_used = 0; - int Lmax = 0; - int exx_lmax = 0; -#ifdef __EXX - exx_lmax = GlobalC::exx_info.info_ri.abfs_Lmax; -#endif - const int ntype = orb.get_ntype(); - int lmax_orb = -1, lmax_beta = -1; + int lmax_orb = -1; for (int it = 0; it < ntype; it++) { lmax_orb = std::max(lmax_orb, orb.Phi[it].getLmax()); - lmax_beta = std::max(lmax_beta, ucell.infoNL.Beta[it].getLmax()); } const double dr = orb.get_dR(); const double dk = orb.get_dk(); @@ -50,13 +39,9 @@ void unkOverlap_lcao::init(const UnitCell& ucell, int Rmesh = static_cast(orb.get_Rmax() / dr) + 4; Rmesh += 1 - Rmesh % 2; - Center2_Orb::init_Table_Spherical_Bessel(2, - 3, - Lmax_used, - Lmax, - exx_lmax, - lmax_orb, - lmax_beta, + const int Lmax = lmax_orb + 1; + const int Lmax_used = 2 * lmax_orb + 1; + Center2_Orb::init_Table_Spherical_Bessel(Lmax_used, dr, dk, kmesh, @@ -111,7 +96,7 @@ void unkOverlap_lcao::init(const UnitCell& ucell, { local_term++; } - int start; + int start = 0; for (int rank = 0; rank < nproc; rank++) { if (rank == myrank) @@ -577,51 +562,51 @@ std::complex unkOverlap_lcao::det_berryphase(const UnitCell& ucell, std::complex alpha = {1.0, 0.0}, beta = {0.0, 0.0}; int one = 1; #ifdef __MPI - pzgemm_(&transa, - &transb, - &occBands, - &nlocal, - &nlocal, - &alpha, + ScalapackConnector::gemm(transa, + transb, + occBands, + nlocal, + nlocal, + alpha, &psi_in[0](ik_L, 0, 0), - &one, - &one, + one, + one, para_orb.desc, midmatrix, - &one, - &one, + one, + one, para_orb.desc, - &beta, + beta, C_matrix, - &one, - &one, + one, + one, para_orb.desc); - pzgemm_(&transb, - &transb, - &occBands, - &occBands, - &nlocal, - &alpha, + ScalapackConnector::gemm(transb, + transb, + occBands, + occBands, + nlocal, + alpha, C_matrix, - &one, - &one, + one, + one, para_orb.desc, &psi_in[0](ik_R, 0, 0), - &one, - &one, + one, + one, para_orb.desc, - &beta, + beta, out_matrix, - &one, - &one, + one, + one, para_orb.desc); assert(para_orb.nrow>0); int* ipiv = new int[para_orb.nrow]; int info = 0; - pzgetrf_(&occBands, &occBands, out_matrix, &one, &one, para_orb.desc, ipiv, &info); + ScalapackConnector::getrf(occBands, occBands, out_matrix, one, one, para_orb.desc, ipiv, &info); for (int i = 0; i < occBands; i++) // global { diff --git a/source/source_io/unk_overlap_lcao.h b/source/source_io/module_unk/unk_overlap_lcao.h similarity index 94% rename from source/source_io/unk_overlap_lcao.h rename to source/source_io/module_unk/unk_overlap_lcao.h index a867a4b0c6..7abc37d337 100644 --- a/source/source_io/unk_overlap_lcao.h +++ b/source/source_io/module_unk/unk_overlap_lcao.h @@ -12,7 +12,7 @@ #include "source_lcao/center2_orb-orb11.h" #include "source_lcao/center2_orb-orb21.h" #include "source_lcao/center2_orb.h" -#include "source_lcao/module_gint/grid_technique.h" +#include "source_cell/module_neighbor/sltk_grid_driver.h" #include #include @@ -48,7 +48,7 @@ class unkOverlap_lcao unkOverlap_lcao(); ~unkOverlap_lcao(); - void init(const UnitCell& ucell, const Grid_Technique& gt, const int nkstot, const LCAO_Orbitals& orb); + void init(const UnitCell& ucell, const int nkstot, const LCAO_Orbitals& orb); int iw2it(const UnitCell& ucell, int iw); int iw2ia(const UnitCell& ucell, int iw); int iw2iL(const UnitCell& ucell, int iw); diff --git a/source/source_io/unk_overlap_pw.cpp b/source/source_io/module_unk/unk_overlap_pw.cpp similarity index 99% rename from source/source_io/unk_overlap_pw.cpp rename to source/source_io/module_unk/unk_overlap_pw.cpp index 0c87b1f6fb..fab9242837 100644 --- a/source/source_io/unk_overlap_pw.cpp +++ b/source/source_io/module_unk/unk_overlap_pw.cpp @@ -1,6 +1,5 @@ #include "unk_overlap_pw.h" - -#include "source_pw/module_pwdft/global.h" +#include "source_base/parallel_comm.h" // use POOL_WORLD, etc. #include "source_io/module_parameter/parameter.h" unkOverlap_pw::unkOverlap_pw() diff --git a/source/source_io/unk_overlap_pw.h b/source/source_io/module_unk/unk_overlap_pw.h similarity index 100% rename from source/source_io/unk_overlap_pw.h rename to source/source_io/module_unk/unk_overlap_pw.h diff --git a/source/source_io/fR_overlap.cpp b/source/source_io/module_wannier/fR_overlap.cpp similarity index 100% rename from source/source_io/fR_overlap.cpp rename to source/source_io/module_wannier/fR_overlap.cpp diff --git a/source/source_io/fR_overlap.h b/source/source_io/module_wannier/fR_overlap.h similarity index 100% rename from source/source_io/fR_overlap.h rename to source/source_io/module_wannier/fR_overlap.h diff --git a/source/source_io/to_wannier90.cpp b/source/source_io/module_wannier/to_wannier90.cpp similarity index 99% rename from source/source_io/to_wannier90.cpp rename to source/source_io/module_wannier/to_wannier90.cpp index 47241c0789..e7a291dcfc 100644 --- a/source/source_io/to_wannier90.cpp +++ b/source/source_io/module_wannier/to_wannier90.cpp @@ -5,7 +5,6 @@ #include "source_base/math_polyint.h" #include "source_base/math_sphbes.h" #include "source_base/math_ylmreal.h" -#include "source_pw/module_pwdft/global.h" toWannier90::toWannier90() { @@ -203,7 +202,7 @@ bool toWannier90::try_read_nnkp(const UnitCell& ucell, const K_Vectors& kv) cal_num_kpts = num_kpts / 2; } - int numkpt_nnkp; + int numkpt_nnkp = 0; ModuleBase::GlobalFunc::READ_VALUE(nnkp_read, numkpt_nnkp); if ((PARAM.inp.nspin == 1 || PARAM.inp.nspin == 4) && numkpt_nnkp != num_kpts) { @@ -434,7 +433,7 @@ bool toWannier90::try_read_nnkp(const UnitCell& ucell, const K_Vectors& kv) { for (int ib = 0; ib < nntot; ib++) { - int ik_nnkp; + int ik_nnkp = 0; nnkp_read >> ik_nnkp; if (ik_nnkp != (ik + 1)) { @@ -514,4 +513,4 @@ bool toWannier90::try_read_nnkp(const UnitCell& ucell, const K_Vectors& kv) } return true; -} \ No newline at end of file +} diff --git a/source/source_io/to_wannier90.h b/source/source_io/module_wannier/to_wannier90.h similarity index 100% rename from source/source_io/to_wannier90.h rename to source/source_io/module_wannier/to_wannier90.h diff --git a/source/source_io/to_wannier90_lcao.cpp b/source/source_io/module_wannier/to_wannier90_lcao.cpp similarity index 97% rename from source/source_io/to_wannier90_lcao.cpp rename to source/source_io/module_wannier/to_wannier90_lcao.cpp index 1388dc6975..8c1b8288d9 100644 --- a/source/source_io/to_wannier90_lcao.cpp +++ b/source/source_io/module_wannier/to_wannier90_lcao.cpp @@ -9,7 +9,6 @@ #include "source_base/parallel_reduce.h" #include "source_base/module_external/scalapack_connector.h" #include "source_lcao/module_hcontainer/atom_pair.h" -#include "source_pw/module_pwdft/global.h" #include #include @@ -265,20 +264,12 @@ void toWannier90_LCAO::out_unk(const psi::Psi>& psi) void toWannier90_LCAO::initialize_orb_table(const UnitCell& ucell) { - int Lmax_used = 0; - int Lmax = 0; - int exx_lmax = 0; -#ifdef __EXX - exx_lmax = GlobalC::exx_info.info_ri.abfs_Lmax; -#endif - #ifdef __LCAO const int ntype = orb_.get_ntype(); - int lmax_orb = -1, lmax_beta = -1; + int lmax_orb = -1; for (int it = 0; it < ntype; it++) { lmax_orb = std::max(lmax_orb, orb_.Phi[it].getLmax()); - lmax_beta = std::max(lmax_beta, ucell.infoNL.Beta[it].getLmax()); } const double dr = orb_.get_dR(); const double dk = orb_.get_dk(); @@ -286,13 +277,9 @@ void toWannier90_LCAO::initialize_orb_table(const UnitCell& ucell) int Rmesh = static_cast(orb_.get_Rmax() / dr) + 4; Rmesh += 1 - Rmesh % 2; - Center2_Orb::init_Table_Spherical_Bessel(2, - 3, - Lmax_used, - Lmax, - exx_lmax, - lmax_orb, - lmax_beta, + const int Lmax = lmax_orb + 1; + const int Lmax_used = 2 * lmax_orb + 1; + Center2_Orb::init_Table_Spherical_Bessel(Lmax_used, dr, dk, kmesh, @@ -435,44 +422,44 @@ void toWannier90_LCAO::unkdotkb(const UnitCell& ucell, ModuleBase::GlobalFunc::ZEROS(out_matrix, nloc); #ifdef __MPI - pzgemm_(&transa, - &transb, - &Bands, - &nlocal, - &nlocal, - &alpha, + ScalapackConnector::gemm(transa, + transb, + Bands, + nlocal, + nlocal, + alpha, &psi_in(ik, 0, 0), - &one, - &one, + one, + one, this->ParaV->desc, midmatrix, - &one, - &one, + one, + one, this->ParaV->desc, - &beta, + beta, C_matrix, - &one, - &one, + one, + one, this->ParaV->desc); - pzgemm_(&transb, - &transb, - &Bands, - &Bands, - &nlocal, - &alpha, + ScalapackConnector::gemm(transb, + transb, + Bands, + Bands, + nlocal, + alpha, C_matrix, - &one, - &one, + one, + one, this->ParaV->desc, &psi_in(ikb, 0, 0), - &one, - &one, + one, + one, this->ParaV->desc, - &beta, + beta, out_matrix, - &one, - &one, + one, + one, this->ParaV->desc); #endif diff --git a/source/source_io/to_wannier90_lcao.h b/source/source_io/module_wannier/to_wannier90_lcao.h similarity index 97% rename from source/source_io/to_wannier90_lcao.h rename to source/source_io/module_wannier/to_wannier90_lcao.h index 50560464e9..b50555c426 100644 --- a/source/source_io/to_wannier90_lcao.h +++ b/source/source_io/module_wannier/to_wannier90_lcao.h @@ -22,9 +22,8 @@ #include "source_lcao/center2_orb-orb21.h" #include "source_lcao/center2_orb.h" #include "source_lcao/wavefunc_in_pw.h" -#include "source_pw/module_pwdft/global.h" #include "source_psi/psi.h" -#include "single_R_io.h" +#include "../module_hs/single_R_io.h" #include "to_wannier90.h" #include @@ -39,7 +38,6 @@ #include "fR_overlap.h" #include "source_base/abfs-vector3_order.h" #include "source_base/math_lebedev_laikov.h" -#include "source_lcao/module_gint/grid_technique.h" #include "source_lcao/module_hcontainer/hcontainer.h" class Coordinate_3D @@ -128,7 +126,7 @@ class toWannier90_LCAO : public toWannier90 std::vector iw2im; std::vector iw2iorb; - const Parallel_Orbitals* ParaV; + const Parallel_Orbitals* ParaV = nullptr; void initialize_orb_table(const UnitCell& ucell); void produce_basis_orb(); diff --git a/source/source_io/to_wannier90_lcao_in_pw.cpp b/source/source_io/module_wannier/to_wannier90_lcao_in_pw.cpp similarity index 97% rename from source/source_io/to_wannier90_lcao_in_pw.cpp rename to source/source_io/module_wannier/to_wannier90_lcao_in_pw.cpp index 1f0019241c..48d3e7ae65 100644 --- a/source/source_io/to_wannier90_lcao_in_pw.cpp +++ b/source/source_io/module_wannier/to_wannier90_lcao_in_pw.cpp @@ -1,15 +1,14 @@ #include "to_wannier90_lcao_in_pw.h" #include "source_io/module_parameter/parameter.h" -#include "source_pw/module_pwdft/global.h" #include "source_base/math_integral.h" #include "source_base/math_polyint.h" #include "source_base/math_sphbes.h" #include "source_base/math_ylmreal.h" #include "source_base/parallel_reduce.h" -#include "binstream.h" +#include "../module_output/binstream.h" -#include "source_psi/psi_initializer_nao.h" +#include "source_psi/psi_init_nao.h" #ifdef __LCAO toWannier90_LCAO_IN_PW::toWannier90_LCAO_IN_PW( const bool &out_wannier_mmn, @@ -45,7 +44,7 @@ void toWannier90_LCAO_IN_PW::calculate( Structure_Factor* sf_ptr = const_cast(&sf); ModulePW::PW_Basis_K* wfcpw_ptr = const_cast(wfcpw); delete this->psi_initer_; - this->psi_initer_ = new psi_initializer_nao>(); + this->psi_initer_ = new psi_init_nao>(); this->psi_initer_->initialize(sf_ptr, wfcpw_ptr, &ucell, &kv, 1, nullptr, GlobalV::MY_RANK); this->psi_initer_->tabulate(); delete this->psi; diff --git a/source/source_io/to_wannier90_lcao_in_pw.h b/source/source_io/module_wannier/to_wannier90_lcao_in_pw.h similarity index 92% rename from source/source_io/to_wannier90_lcao_in_pw.h rename to source/source_io/module_wannier/to_wannier90_lcao_in_pw.h index 94a5e87483..04a2414e9f 100644 --- a/source/source_io/to_wannier90_lcao_in_pw.h +++ b/source/source_io/module_wannier/to_wannier90_lcao_in_pw.h @@ -1,5 +1,5 @@ -#ifndef W_ABACUS_DEVELOP_ABACUS_DEVELOP_SOURCE_MODULE_IO_TO_WANNIER90_LCAO_IN_PW_H -#define W_ABACUS_DEVELOP_ABACUS_DEVELOP_SOURCE_MODULE_IO_TO_WANNIER90_LCAO_IN_PW_H +#ifndef TO_WANNIER90_LCAO_IN_PW_H +#define TO_WANNIER90_LCAO_IN_PW_H #include "source_base/abfs-vector3_order.h" #include "source_base/complexmatrix.h" @@ -16,9 +16,8 @@ #include "source_basis/module_ao/ORB_read.h" #include "source_cell/klist.h" #include "source_cell/module_neighbor/sltk_grid_driver.h" -#include "source_pw/module_pwdft/global.h" #include "source_psi/psi.h" -#include "single_R_io.h" +#include "../module_hs/single_R_io.h" #include "to_wannier90.h" #include "to_wannier90_pw.h" @@ -30,7 +29,6 @@ #ifdef __LCAO #include "source_basis/module_ao/parallel_orbitals.h" -#include "source_lcao/module_gint/grid_technique.h" #include "source_psi/psi_initializer.h" class toWannier90_LCAO_IN_PW : public toWannier90_PW @@ -67,7 +65,7 @@ class toWannier90_LCAO_IN_PW : public toWannier90_PW } protected: - const Parallel_Orbitals* ParaV; + const Parallel_Orbitals* ParaV = nullptr; /// @brief psi initializer for expanding nao in planewave basis psi_initializer>* psi_initer_ = nullptr; diff --git a/source/source_io/to_wannier90_pw.cpp b/source/source_io/module_wannier/to_wannier90_pw.cpp similarity index 99% rename from source/source_io/to_wannier90_pw.cpp rename to source/source_io/module_wannier/to_wannier90_pw.cpp index 9c33cf4976..3f6af1d44e 100644 --- a/source/source_io/to_wannier90_pw.cpp +++ b/source/source_io/module_wannier/to_wannier90_pw.cpp @@ -1,13 +1,13 @@ #include "to_wannier90_pw.h" +#include "source_base/parallel_comm.h" // use POOL_WORLD #include "source_io/module_parameter/parameter.h" -#include "source_pw/module_pwdft/global.h" #include "source_base/math_integral.h" #include "source_base/math_polyint.h" #include "source_base/math_sphbes.h" #include "source_base/math_ylmreal.h" #include "source_base/parallel_reduce.h" -#include "binstream.h" +#include "../module_output/binstream.h" toWannier90_PW::toWannier90_PW( const bool &out_wannier_mmn, diff --git a/source/source_io/to_wannier90_pw.h b/source/source_io/module_wannier/to_wannier90_pw.h similarity index 100% rename from source/source_io/to_wannier90_pw.h rename to source/source_io/module_wannier/to_wannier90_pw.h diff --git a/source/source_io/get_wf_lcao.cpp b/source/source_io/module_wf/get_wf_lcao.cpp similarity index 83% rename from source/source_io/get_wf_lcao.cpp rename to source/source_io/module_wf/get_wf_lcao.cpp index 3d6c58a300..4fd6c9a5f3 100644 --- a/source/source_io/get_wf_lcao.cpp +++ b/source/source_io/module_wf/get_wf_lcao.cpp @@ -1,13 +1,11 @@ #include "get_wf_lcao.h" -#include "source_io/cube_io.h" -#include "source_io/write_wfc_pw.h" +#include "source_io/module_output/cube_io.h" +#include "source_io/module_wf/write_wfc_pw.h" #include "source_base/memory.h" -#ifndef __OLD_GINT -#include "source_lcao/module_gint/temp_gint/gint_env_gamma.h" -#include "source_lcao/module_gint/temp_gint/gint_env_k.h" -#endif +#include "source_lcao/module_gint/gint_env_gamma.h" +#include "source_lcao/module_gint/gint_env_k.h" Get_wf_lcao::Get_wf_lcao(const elecstate::ElecState* pes) { @@ -24,7 +22,6 @@ void Get_wf_lcao::begin(const UnitCell& ucell, const ModulePW::PW_Basis_K* pw_wfc, const Parallel_Grid& pgrid, const Parallel_Orbitals& para_orb, - Gint_Gamma& gg, const int& out_wfc_pw, const K_Vectors& kv, const double nelec, @@ -45,31 +42,12 @@ void Get_wf_lcao::begin(const UnitCell& ucell, prepare_get_wf(ofs_running); -#ifdef __OLD_GINT - // allocate grid wave functions for gamma_only - std::vector wfc_gamma_grid(nspin); - for (int is = 0; is < nspin; ++is) - { - wfc_gamma_grid[is] = new double*[nbands]; - for (int ib = 0; ib < nbands; ++ib) - { - wfc_gamma_grid[is][ib] = new double[gg.gridt->lgd]; - } - } -#endif - // for pw_wfc in G space psi::Psi> psi_g; // if (out_wfc_pw || out_wfc_r) psi_g.resize(nspin, nbands, kv.ngk[0]); -#ifdef __OLD_GINT - const double mem_size = sizeof(double) * double(gg.gridt->lgd) * double(nbands) * double(nspin) / 1024.0 / 1024.0; - ModuleBase::Memory::record("Get_wf_lcao::begin", mem_size); - ModuleBase::GlobalFunc::OUT(GlobalV::ofs_running, "On-the-fly memory consumption (MB)", mem_size); -#endif - // Set this->bands_picked_ this->select_bands(out_wfc_norm, nbands, fermi_band); @@ -77,35 +55,12 @@ void Get_wf_lcao::begin(const UnitCell& ucell, for (int is = 0; is < nspin; ++is) { psid->fix_k(is); -#ifdef __OLD_GINT - #ifdef __MPI - wfc_2d_to_grid(psid->get_pointer(), para_orb, wfc_gamma_grid[is], gg.gridt->trace_lo); - #else - // if not MPI enabled, it is the case psid holds a global matrix. - // use fix_k to switch between different spin channels (actually kpoints, - // because now the same kpoint in different spin channels are treated - // as distinct kpoints) - for (int i = 0; i < nbands; ++i) - { - for (int j = 0; j < nlocal; ++j) - { - wfc_gamma_grid[is][i][j] = psid[0](i, j); - } - } - #endif -#else ModuleGint::Gint_env_gamma gint_env(psid->get_pointer(), ¶_orb, nbands, nlocal, pes_->charge->rho[is]); -#endif for (int ib = 0; ib < nbands; ++ib) { if (bands_picked_[ib]) { - #ifdef __OLD_GINT - ModuleBase::GlobalFunc::ZEROS(pes_->charge->rho[is], pw_wfc->nrxx); - gg.cal_env(wfc_gamma_grid[is][ib], pes_->charge->rho[is], ucell); - #else gint_env.cal_env_band(ib); - #endif pes_->charge->save_rho_before_sum_band(); // pint out information @@ -140,34 +95,12 @@ void Get_wf_lcao::begin(const UnitCell& ucell, for (int is = 0; is < nspin; ++is) { psid->fix_k(is); -#ifdef __OLD_GINT - #ifdef __MPI - wfc_2d_to_grid(psid->get_pointer(), para_orb, wfc_gamma_grid[is], gg.gridt->trace_lo); - #else - // if not MPI enabled, it is the case psid holds a global matrix. use fix_k to switch between - // different spin channels (actually kpoints, because now the same kpoint in different spin channels - // are treated as distinct kpoints) - for (int i = 0; i < nbands; ++i) - { - for (int j = 0; j < nlocal; ++j) - { - wfc_gamma_grid[is][i][j] = psid[0](i, j); - } - } - #endif -#else ModuleGint::Gint_env_gamma gint_env(psid->get_pointer(), ¶_orb, nbands, nlocal, pes_->charge->rho[is]); -#endif for (int ib = 0; ib < nbands; ++ib) { if (bands_picked_[ib]) { -#ifdef __OLD_GINT - ModuleBase::GlobalFunc::ZEROS(pes_->charge->rho[is], pw_wfc->nrxx); - gg.cal_env(wfc_gamma_grid[is][ib], pes_->charge->rho[is], ucell); -#else gint_env.cal_env_band(ib); -#endif pes_->charge->save_rho_before_sum_band(); const double ef_tmp = this->pes_->eferm.get_efval(is); @@ -203,7 +136,10 @@ void Get_wf_lcao::begin(const UnitCell& ucell, } } - ModuleIO::write_wfc_pw(GlobalV::KPAR, + + const int istep = -1; // -1 means ionic iteration number will not appear in file name + const int iter = -1; // -1 means electronic iteration number will not appear in file name + ModuleIO::write_wfc_pw(istep, iter, GlobalV::KPAR, GlobalV::MY_POOL, GlobalV::MY_RANK, nbands, @@ -219,16 +155,6 @@ void Get_wf_lcao::begin(const UnitCell& ucell, pw_wfc, ofs_running); -#ifdef __OLD_GINT - for (int is = 0; is < nspin; ++is) - { - for (int ib = 0; ib < nbands; ++ib) - { - delete[] wfc_gamma_grid[is][ib]; - } - delete[] wfc_gamma_grid[is]; - } -#endif return; } @@ -238,7 +164,6 @@ void Get_wf_lcao::begin(const UnitCell& ucell, const ModulePW::PW_Basis_K* pw_wfc, const Parallel_Grid& pgrid, const Parallel_Orbitals& para_orb, - Gint_k& gk, const int& out_wfc_pw, const K_Vectors& kv, const double nelec, @@ -259,21 +184,6 @@ void Get_wf_lcao::begin(const UnitCell& ucell, // allocate grid wave functions for multi-k const int nks = kv.get_nks(); std::vector**> wfc_k_grid(nks); -#ifdef __OLD_GINT - for (int ik = 0; ik < nks; ++ik) - { - wfc_k_grid[ik] = new std::complex*[nbands]; - for (int ib = 0; ib < nbands; ++ib) - { - wfc_k_grid[ik][ib] = new std::complex[gk.gridt->lgd]; - } - } - - const double mem_size - = sizeof(std::complex) * double(gk.gridt->lgd) * double(nbands) * double(nks) / 1024.0 / 1024.0; - ModuleBase::Memory::record("Get_wf_lcao::begin", mem_size); - ModuleBase::GlobalFunc::OUT(GlobalV::ofs_running, "On-the-fly memory consumption (MB)", mem_size); -#endif // for pw_wfc in G space psi::Psi> psi_g; @@ -292,36 +202,14 @@ void Get_wf_lcao::begin(const UnitCell& ucell, // 2d-to-grid conversion is unified into `wfc_2d_to_grid`. psi->fix_k(ik); -#ifdef __OLD_GINT - #ifdef __MPI // need to deal with NSPIN=4 !!!! - wfc_2d_to_grid(psi->get_pointer(), para_orb, wfc_k_grid[ik], gk.gridt->trace_lo); - #else - for (int i = 0; i < nbands; ++i) - { - for (int j = 0; j < nlocal; ++j) - { - wfc_k_grid[ik][i][j] = psi[0](i, j); - } - } - #endif -#else ModuleGint::Gint_env_k gint_env(psi->get_pointer(), ¶_orb, kv.kvec_c, kv.kvec_d, nbands, nlocal, ik, PARAM.inp.nspin, PARAM.globalv.npol, pes_->charge->rho[ispin]); -#endif for (int ib = 0; ib < nbands; ++ib) { if (bands_picked_[ib]) { -#ifdef __OLD_GINT - ModuleBase::GlobalFunc::ZEROS(pes_->charge->rho[ispin], - pw_wfc->nrxx); // terrible, you make changes on another instance's data??? - - // deal with NSPIN=4 - gk.cal_env_k(ik, wfc_k_grid[ik][ib], pes_->charge->rho[ispin], kv.kvec_c, kv.kvec_d, ucell); -#else gint_env.cal_env_band(ib); -#endif // ik0 is the real k-point index, starting from 0 int ik0 = kv.ik2iktot[ik]; @@ -366,7 +254,9 @@ void Get_wf_lcao::begin(const UnitCell& ucell, } } - ModuleIO::write_wfc_pw(GlobalV::KPAR, + const int istep = -1; // -1 means ionic iteration number will not appear in file name + const int iter = -1; // -1 means electronic iteration number will not appear in file name + ModuleIO::write_wfc_pw(istep, iter, GlobalV::KPAR, GlobalV::MY_POOL, GlobalV::MY_RANK, nbands, @@ -435,16 +325,6 @@ void Get_wf_lcao::begin(const UnitCell& ucell, } } } -#ifdef __OLD_GINT - for (int ik = 0; ik < nks; ++ik) - { - for (int ib = 0; ib < nbands; ++ib) - { - delete[] wfc_k_grid[ik][ib]; - } - delete[] wfc_k_grid[ik]; - } -#endif return; } @@ -600,6 +480,7 @@ template int Get_wf_lcao::set_wfc_grid(const int naroc[2], const double* in, double** out, const std::vector& trace_lo); + template int Get_wf_lcao::set_wfc_grid(const int naroc[2], const int nb, const int dim0, @@ -632,7 +513,7 @@ void Get_wf_lcao::wfc_2d_to_grid(const T* lowf_2d, MPI_Comm_rank(pv.comm(), &rank); // calculate the maximum number of nlocal over all processes in pv.comm() range - long buf_size; + long buf_size = 0; mpi_info = MPI_Reduce(&pv.nloc_wfc, &buf_size, 1, MPI_LONG, MPI_MAX, 0, pv.comm()); mpi_info = MPI_Bcast(&buf_size, 1, MPI_LONG, 0, pv.comm()); // get and then broadcast std::vector lowf_block(buf_size); diff --git a/source/source_io/module_wf/get_wf_lcao.h b/source/source_io/module_wf/get_wf_lcao.h new file mode 100644 index 0000000000..94afb2cb64 --- /dev/null +++ b/source/source_io/module_wf/get_wf_lcao.h @@ -0,0 +1,81 @@ +#ifndef GET_WF_LCAO_H +#define GET_WF_LCAO_H + +#include "source_estate/elecstate.h" +#include "source_basis/module_ao/parallel_orbitals.h" + +class Get_wf_lcao +{ + public: + Get_wf_lcao(const elecstate::ElecState* pes); + ~Get_wf_lcao(); + + /// For gamma_only + void begin(const UnitCell& ucell, + const psi::Psi* psid, + const ModulePW::PW_Basis_K* pw_wfc, + const Parallel_Grid& pgrid, + const Parallel_Orbitals& para_orb, + const int& out_wfc_pw, + const K_Vectors& kv, + const double nelec, + const std::vector& out_wfc_norm, + const std::vector& out_wfc_re_im, + const int nbands, + const int nspin, + const int nlocal, + const std::string& global_out_dir, + std::ofstream& ofs_running); + + /// For multi-k + void begin(const UnitCell& ucell, + const psi::Psi>* psi, + const ModulePW::PW_Basis_K* pw_wfc, + const Parallel_Grid& pgrid, + const Parallel_Orbitals& para_orb, + const int& out_wfc_pw, + const K_Vectors& kv, + const double nelec, + const std::vector& out_wfc_norm, + const std::vector& out_wfc_re_im, + const int nbands, + const int nspin, + const int nlocal, + const std::string& global_out_dir, + std::ofstream& ofs_running); + + private: + void prepare_get_wf(std::ofstream& ofs_running); + + void select_bands(const std::vector& out_wfc_kb, const int nbands, const int fermi_band); + + void set_pw_wfc(const ModulePW::PW_Basis_K* pw_wfc, + const int& ik, + const int& ib, + const int& nspin, + const double* const* const rho, + psi::Psi>& wfc_g); + + int globalIndex(int localindex, int nblk, int nprocs, int myproc); + + int localIndex(int globalindex, int nblk, int nprocs, int& myproc); + +#ifdef __MPI + template + int set_wfc_grid(const int naroc[2], + const int nb, + const int dim0, + const int dim1, + const int iprow, + const int ipcol, + const T* in, + T** out, + const std::vector& trace_lo); + template + void wfc_2d_to_grid(const T* wfc_2d, const Parallel_Orbitals& pv, T** wfc_grid, const std::vector& trace_lo); +#endif // __MPI + + std::vector bands_picked_; + const elecstate::ElecState* pes_ = nullptr; +}; +#endif // GET_WF_LCAO_H diff --git a/source/source_io/get_wf_pw.h b/source/source_io/module_wf/get_wf_pw.h similarity index 100% rename from source/source_io/get_wf_pw.h rename to source/source_io/module_wf/get_wf_pw.h diff --git a/source/source_io/read_wf2rho_pw.cpp b/source/source_io/module_wf/read_wf2rho_pw.cpp similarity index 98% rename from source/source_io/read_wf2rho_pw.cpp rename to source/source_io/module_wf/read_wf2rho_pw.cpp index 1be65a268c..55e5e80822 100644 --- a/source/source_io/read_wf2rho_pw.cpp +++ b/source/source_io/module_wf/read_wf2rho_pw.cpp @@ -2,11 +2,10 @@ #include "read_wfc_pw.h" #include "source_base/timer.h" -#include "source_pw/module_pwdft/global.h" #include "source_estate/module_charge/symmetry_rho.h" #include "source_io/module_parameter/parameter.h" #include "source_estate/kernels/elecstate_op.h" -#include "source_io/filename.h" +#include "source_io/module_output/filename.h" void ModuleIO::read_wf2rho_pw( const ModulePW::PW_Basis_K* pw_wfc, diff --git a/source/source_io/read_wf2rho_pw.h b/source/source_io/module_wf/read_wf2rho_pw.h similarity index 100% rename from source/source_io/read_wf2rho_pw.h rename to source/source_io/module_wf/read_wf2rho_pw.h diff --git a/source/source_io/read_wfc_nao.cpp b/source/source_io/module_wf/read_wfc_nao.cpp similarity index 78% rename from source/source_io/read_wfc_nao.cpp rename to source/source_io/module_wf/read_wfc_nao.cpp index d43ca58486..188f3abe6c 100644 --- a/source/source_io/read_wfc_nao.cpp +++ b/source/source_io/module_wf/read_wfc_nao.cpp @@ -2,11 +2,19 @@ #include "source_base/parallel_common.h" #include "source_base/timer.h" -#include "source_io/write_wfc_nao.h" +#include "source_io/module_wf/write_wfc_nao.h" -#include "write_wfc_nao.h" +#include "source_io/module_wf/write_wfc_nao.h" #include "source_base/module_external/scalapack_connector.h" -#include "source_io/filename.h" +#include "source_io/module_output/filename.h" +#include "source_base/tool_title.h" // use title +#include "source_base/global_function.h" // use READ_VALUE + +// mohan add 2025-10-19 +void ModuleIO::read_wfc_nao_one_data(std::ifstream& ifs, float& data) +{ + ifs >> data; +} void ModuleIO::read_wfc_nao_one_data(std::ifstream& ifs, double& data) { @@ -21,22 +29,31 @@ void ModuleIO::read_wfc_nao_one_data(std::ifstream& ifs, std::complex& d data = std::complex(a, b); } +void ModuleIO::read_wfc_nao_one_data(std::ifstream& ifs, std::complex& data) +{ + float a = 0.0; + float b = 0.0; + ifs >> a >> b; + data = std::complex(a, b); +} + template bool ModuleIO::read_wfc_nao( const std::string& global_readin_dir, const Parallel_Orbitals& ParaV, psi::Psi& psid, - elecstate::ElecState* const pelec, + ModuleBase::matrix& ekb, + ModuleBase::matrix& wg, const std::vector &ik2iktot, const int nkstot, const int nspin, const int skip_band, - const int nstep) + const int istep) { ModuleBase::TITLE("ModuleIO", "read_wfc_nao"); ModuleBase::timer::tick("ModuleIO", "read_wfc_nao"); - const int nk = pelec->ekb.nr; + const int nk = ekb.nr; const bool gamma_only = std::is_same::value; const int out_type = 1; // only support .txt file now @@ -119,8 +136,8 @@ bool ModuleIO::read_wfc_nao( const int ib_read = std::max(i - skip_band, 0); int ib = 0; ModuleBase::GlobalFunc::READ_VALUE(ifs, ib); - ModuleBase::GlobalFunc::READ_VALUE(ifs, pelec->ekb(ik, ib_read)); - ModuleBase::GlobalFunc::READ_VALUE(ifs, pelec->wg(ik, ib_read)); + ModuleBase::GlobalFunc::READ_VALUE(ifs, ekb(ik, ib_read)); + ModuleBase::GlobalFunc::READ_VALUE(ifs, wg(ik, ib_read)); if (i+1 != ib) { error_message << "The band index read in from file do not match the global parameter band index!\n"; @@ -158,12 +175,12 @@ bool ModuleIO::read_wfc_nao( const bool out_app_flag = false; std::stringstream error_message; std::string readin_dir = global_readin_dir; - if(nstep >= 0) + if(istep >= 0) { readin_dir = readin_dir + "WFC/"; } std::string ss = ModuleIO::filename_output(readin_dir,"wf","nao", - ik,ik2iktot,nspin,nkstot,out_type,out_app_flag,gamma_only,nstep); + ik,ik2iktot,nspin,nkstot,out_type,out_app_flag,gamma_only,istep); read_success = read_one_file(ss, error_message, ik, ctot); errors = error_message.str(); @@ -194,8 +211,8 @@ bool ModuleIO::read_wfc_nao( 1, const_cast(ParaV.desc_wfc), pv_glb.blacs_ctxt); - Parallel_Common::bcast_double(&(pelec->ekb(ik, 0)), nbands); - Parallel_Common::bcast_double(&(pelec->wg(ik, 0)), nbands); + Parallel_Common::bcast_double(&ekb(ik, 0), nbands); + Parallel_Common::bcast_double(&wg(ik, 0), nbands); #else BlasConnector::copy(nbands*nlocal, ctot.data(), 1, psid.get_pointer(), 1); #endif @@ -207,19 +224,45 @@ bool ModuleIO::read_wfc_nao( template bool ModuleIO::read_wfc_nao(const std::string& global_readin_dir, const Parallel_Orbitals& ParaV, psi::Psi& psid, - elecstate::ElecState* const pelec, + ModuleBase::matrix& ekb, + ModuleBase::matrix& wg, + const std::vector &ik2iktot, + const int nkstot, + const int nspin, + const int istep, + const int skip_band); + +// mohan add 2025-10-19 +template bool ModuleIO::read_wfc_nao(const std::string& global_readin_dir, + const Parallel_Orbitals& ParaV, + psi::Psi& psid, + ModuleBase::matrix& ekb, + ModuleBase::matrix& wg, const std::vector &ik2iktot, const int nkstot, const int nspin, - const int nstep, + const int istep, const int skip_band); template bool ModuleIO::read_wfc_nao>(const std::string& global_readin_dir, const Parallel_Orbitals& ParaV, psi::Psi>& psid, - elecstate::ElecState* const pelec, + ModuleBase::matrix& ekb, + ModuleBase::matrix& wg, + const std::vector &ik2iktot, + const int nkstot, + const int nspin, + const int istep, + const int skip_band); + +// mohan add 2025-10-19 +template bool ModuleIO::read_wfc_nao>(const std::string& global_readin_dir, + const Parallel_Orbitals& ParaV, + psi::Psi>& psid, + ModuleBase::matrix& ekb, + ModuleBase::matrix& wg, const std::vector &ik2iktot, const int nkstot, const int nspin, - const int nstep, + const int istep, const int skip_band); diff --git a/source/source_io/read_wfc_nao.h b/source/source_io/module_wf/read_wfc_nao.h similarity index 83% rename from source/source_io/read_wfc_nao.h rename to source/source_io/module_wf/read_wfc_nao.h index f1df8a7c6d..4abf06ae00 100644 --- a/source/source_io/read_wfc_nao.h +++ b/source/source_io/module_wf/read_wfc_nao.h @@ -1,9 +1,9 @@ -#ifndef W_ABACUS_DEVELOP_ABACUS_DEVELOP_SOURCE_MODULE_IO_READ_WFC_NAO_H -#define W_ABACUS_DEVELOP_ABACUS_DEVELOP_SOURCE_MODULE_IO_READ_WFC_NAO_H +#ifndef READ_WFC_NAO_H +#define READ_WFC_NAO_H #include "source_basis/module_ao/parallel_orbitals.h" #include "source_psi/psi.h" -#include "source_estate/elecstate.h" +#include "source_base/matrix.h" // mohan add 2010-09-09 namespace ModuleIO @@ -14,6 +14,7 @@ namespace ModuleIO * @param ifs The input file stream to read from. * @param data The variable to store the read data value. */ +void read_wfc_nao_one_data(std::ifstream& ifs, float& data); void read_wfc_nao_one_data(std::ifstream& ifs, double& data); /** @@ -22,6 +23,7 @@ void read_wfc_nao_one_data(std::ifstream& ifs, double& data); * @param ifs The input file stream to read from. * @param data The variable to store the read complex data value. */ +void read_wfc_nao_one_data(std::ifstream& ifs, std::complex& data); void read_wfc_nao_one_data(std::ifstream& ifs, std::complex& data); /** @@ -40,12 +42,13 @@ bool read_wfc_nao( const std::string& global_readin_dir, const Parallel_Orbitals& ParaV, psi::Psi& psid, - elecstate::ElecState* const pelec, + ModuleBase::matrix& ekb, + ModuleBase::matrix& wg, const std::vector &ik2iktot, const int nkstot, const int nspin, const int skip_band = 0, - const int nstep = -1); + const int istep = -1); } // namespace ModuleIO diff --git a/source/source_io/read_wfc_pw.cpp b/source/source_io/module_wf/read_wfc_pw.cpp similarity index 99% rename from source/source_io/read_wfc_pw.cpp rename to source/source_io/module_wf/read_wfc_pw.cpp index 981a0e6211..66b58ae517 100644 --- a/source/source_io/read_wfc_pw.cpp +++ b/source/source_io/module_wf/read_wfc_pw.cpp @@ -1,7 +1,7 @@ #include "read_wfc_pw.h" #include "source_io/module_parameter/parameter.h" -#include "binstream.h" +#include "source_io/module_output/binstream.h" #include "source_base/global_function.h" #include "source_base/global_variable.h" #include "source_base/parallel_common.h" diff --git a/source/source_io/read_wfc_pw.h b/source/source_io/module_wf/read_wfc_pw.h similarity index 100% rename from source/source_io/read_wfc_pw.h rename to source/source_io/module_wf/read_wfc_pw.h diff --git a/source/source_io/write_wfc_nao.cpp b/source/source_io/module_wf/write_wfc_nao.cpp similarity index 99% rename from source/source_io/write_wfc_nao.cpp rename to source/source_io/module_wf/write_wfc_nao.cpp index ccb7e50827..1ea1717c29 100644 --- a/source/source_io/write_wfc_nao.cpp +++ b/source/source_io/module_wf/write_wfc_nao.cpp @@ -8,8 +8,8 @@ #include "source_base/module_external/scalapack_connector.h" #include "source_base/global_variable.h" #include "source_base/global_function.h" -#include "binstream.h" -#include "filename.h" +#include "source_io/module_output/binstream.h" +#include "source_io/module_output/filename.h" namespace ModuleIO { diff --git a/source/source_io/write_wfc_nao.h b/source/source_io/module_wf/write_wfc_nao.h similarity index 100% rename from source/source_io/write_wfc_nao.h rename to source/source_io/module_wf/write_wfc_nao.h diff --git a/source/source_io/write_wfc_pw.cpp b/source/source_io/module_wf/write_wfc_pw.cpp similarity index 97% rename from source/source_io/write_wfc_pw.cpp rename to source/source_io/module_wf/write_wfc_pw.cpp index 5f7a254da4..0a8a7cf912 100644 --- a/source/source_io/write_wfc_pw.cpp +++ b/source/source_io/module_wf/write_wfc_pw.cpp @@ -4,14 +4,16 @@ #include "mpi.h" #endif -#include "binstream.h" +#include "source_io/module_output/binstream.h" #include "source_base/global_variable.h" #include "source_base/parallel_global.h" #include "source_base/tool_title.h" #include "source_io/module_parameter/parameter.h" -#include "source_io/filename.h" +#include "source_io/module_output/filename.h" void ModuleIO::write_wfc_pw( + const int istep, + const int iter, const int kpar, const int my_pool, const int my_rank, @@ -43,7 +45,6 @@ void ModuleIO::write_wfc_pw( bool out_app_flag = false; // need to modify later, mohan 2025-05-17 bool gamma_only = false; // need to modify later, mohan 2025-05-17 - int istep = -1; // need to modify later, mohan 2025-05-17 std::string* wfilename = new std::string[nks]; @@ -55,9 +56,9 @@ void ModuleIO::write_wfc_pw( { std::string fn = filename_output(global_out_dir,"wf","pw", ik_local,kv.ik2iktot,nspin,nkstot, - out_wfc_pw,out_app_flag,gamma_only,istep); + out_wfc_pw,out_app_flag,gamma_only,istep,iter); - ofs_running << " Write G-space wave functions into file " + ofs_running << " Write G-space wave functions to file: " << fn << std::endl; wfilename[ik_local] = fn; diff --git a/source/source_io/write_wfc_pw.h b/source/source_io/module_wf/write_wfc_pw.h similarity index 93% rename from source/source_io/write_wfc_pw.h rename to source/source_io/module_wf/write_wfc_pw.h index b149741f17..7e035bf82c 100644 --- a/source/source_io/write_wfc_pw.h +++ b/source/source_io/module_wf/write_wfc_pw.h @@ -8,6 +8,8 @@ namespace ModuleIO { void write_wfc_pw( + const int istep, + const int iter, const int kpar, const int my_pool, const int my_rank, diff --git a/source/source_io/nscf_band.cpp b/source/source_io/nscf_band.cpp deleted file mode 100644 index b93b09937b..0000000000 --- a/source/source_io/nscf_band.cpp +++ /dev/null @@ -1,119 +0,0 @@ -#include "nscf_band.h" -#include "source_base/global_function.h" -#include "source_base/global_variable.h" -#include "source_base/timer.h" -#include "source_base/tool_title.h" -#include "source_base/formatter.h" - -#ifdef __MPI -#include -#endif - -void ModuleIO::nscf_band( - const int &is, - const std::string &eig_file, - const int &nband, - const double &fermie, - const int &precision, - const ModuleBase::matrix& ekb, - const K_Vectors& kv) -{ - ModuleBase::TITLE("ModuleIO","nscf_band"); - ModuleBase::timer::tick("ModuleIO", "nscf_band"); - - GlobalV::ofs_running << "\n"; - GlobalV::ofs_running << " >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>" << std::endl; - GlobalV::ofs_running << " | |" << std::endl; - GlobalV::ofs_running << " | #Print out the eigenvalues for each spin# |" << std::endl; - GlobalV::ofs_running << " | |" << std::endl; - GlobalV::ofs_running << " <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<" << std::endl; - GlobalV::ofs_running << "\n"; - - GlobalV::ofs_running << " Eigenvalues for plot are in file: " << eig_file << std::endl; - - // number of k points without spin; - // nspin = 1,2, nkstot = nkstot_np * nspin; - // nspin = 4, nkstot = nkstot_np - const int nkstot_np = kv.para_k.nkstot_np; - const int nks_np = kv.para_k.nks_np; - -#ifdef __MPI - if(GlobalV::MY_RANK==0) - { - std::ofstream ofs(eig_file.c_str());//make the file clear!! - ofs.close(); - } - - MPI_Barrier(MPI_COMM_WORLD); - std::vector klength; - klength.resize(nkstot_np); - klength[0] = 0.0; - std::vector> kvec_c_global; - kv.para_k.gatherkvec(kv.kvec_c, kvec_c_global); - - for(int ik=0; ik0) - { - auto delta=kvec_c_global[ik]-kvec_c_global[ik-1]; - klength[ik] = klength[ik-1]; - klength[ik] += (kv.kl_segids[ik] == kv.kl_segids[ik-1]) ? delta.norm() : 0.0; - } - //! first find if present kpoint in present pool - if ( GlobalV::MY_POOL == kv.para_k.whichpool[ik] ) - { - //! then get the local kpoint index, which starts definitly from 0 - const int ik_now = ik - kv.para_k.startk_pool[GlobalV::MY_POOL]; - //! if present kpoint corresponds the spin of the present one - assert( kv.isk[ik_now+is*nks_np] == is ); - if ( GlobalV::RANK_IN_POOL == 0) - { - std::ofstream ofs(eig_file.c_str(), std::ios::app); - ofs << FmtCore::format("%4d", ik+1); - int width = precision + 4; - std::string fmtstr = " %." + std::to_string(precision) + "f"; - ofs << FmtCore::format(fmtstr.c_str(), klength[ik]); - for(int ib = 0; ib < nband; ib++) - { - ofs << FmtCore::format(fmtstr.c_str(), (ekb(ik_now+is*nks_np, ib)-fermie) * ModuleBase::Ry_to_eV); - } - ofs << std::endl; - ofs.close(); - } - } - MPI_Barrier(MPI_COMM_WORLD); - } - -#else - std::vector klength; - klength.resize(nkstot_np); - klength[0] = 0.0; - std::ofstream ofs(eig_file.c_str()); - - for(int ik=0;ik0) - { - auto delta=kv.kvec_c[ik]-kv.kvec_c[ik-1]; - klength[ik] = klength[ik-1]; - klength[ik] += (kv.kl_segids[ik] == kv.kl_segids[ik-1]) ? delta.norm() : 0.0; - } - if( kv.isk[ik] == is) - { - ofs << FmtCore::format("%4d", ik+1); - int width = precision + 4; - std::string fmtstr = " %." + std::to_string(precision) + "f"; - ofs << FmtCore::format(fmtstr.c_str(), klength[ik]); - for(int ibnd = 0; ibnd < nband; ibnd++) - { - ofs << FmtCore::format(fmtstr.c_str(), (ekb(ik, ibnd)-fermie) * ModuleBase::Ry_to_eV); - } - ofs << std::endl; - } - } - ofs.close(); -#endif - - ModuleBase::timer::tick("ModuleIO", "nscf_band"); - return; -} diff --git a/source/source_io/nscf_band.h b/source/source_io/nscf_band.h deleted file mode 100644 index e458a0aba6..0000000000 --- a/source/source_io/nscf_band.h +++ /dev/null @@ -1,29 +0,0 @@ -#ifndef NSCF_BAND_H -#define NSCF_BAND_H -#include "source_base/matrix.h" -#include "source_cell/klist.h" -#include "source_cell/parallel_kpoints.h" - -namespace ModuleIO -{ -/** - * @brief calculate the band structure - * - * @param is spin index is = 0 or 1 - * @param out_band_dir directory to save the band structure - * @param nband number of bands - * @param fermie fermi energy - * @param precision precision of the output - * @param ekb eigenvalues of k points and bands - * @param kv klist - */ -void nscf_band(const int& is, - const std::string &eig_file, - const int& nband, - const double& fermie, - const int& precision, - const ModuleBase::matrix& ekb, - const K_Vectors& kv); -} - -#endif diff --git a/source/source_io/numerical_basis.cpp b/source/source_io/numerical_basis.cpp deleted file mode 100644 index 76c87d8660..0000000000 --- a/source/source_io/numerical_basis.cpp +++ /dev/null @@ -1,863 +0,0 @@ -#include "numerical_basis.h" - -#include "source_io/module_parameter/parameter.h" -#include "source_base/constants.h" -#include "source_base/global_variable.h" -#include "source_base/intarray.h" -#include "source_base/math_ylmreal.h" -#include "source_base/parallel_reduce.h" -#include "source_base/timer.h" -#include "source_base/vector3.h" -#include "source_cell/module_symmetry/symmetry.h" -#include "source_pw/module_pwdft/global.h" -#include "source_io/numerical_basis_jyjy.h" -#include "winput.h" - -#include -#include -#include -#include -Numerical_Basis::Numerical_Basis() -{ -} -Numerical_Basis::~Numerical_Basis() -{ -} - -//============================================================ -// MEMBER FUNCTION : -// NAME : init -// DESCRIPTION : Two main functions: -// (1) start_from_file = true; -// Firstly, use check(1) to call bessel_basis.init -// to generate TableOne. -// Secondly readin C4 from file. -// Thirdly generate 3D atomic wfc in G space, put the -// results in psi. -// -// (2) If output overlap Q, start_from_file = false; -// Firstly, use check(0) to call bessel_basis,init -// to generate TableOne -// Secondly output overlap, use psi(evc) and jlq3d. -//============================================================ -// void Numerical_Basis::start_from_file_k(const int& ik, ModuleBase::ComplexMatrix& psi, const Structure_Factor& sf, -// const ModulePW::PW_Basis_K* wfcpw, const UnitCell& ucell) -// { -// ModuleBase::TITLE("Numerical_Basis", "start_from_file_k"); - -// if (!this->init_label) -// { -// // true stands for : start_from_file -// this->bessel_basis.init(true, std::stod(PARAM.inp.bessel_nao_ecut), ucell.ntype, ucell.lmax, -// PARAM.inp.bessel_nao_smooth, PARAM.inp.bessel_nao_sigma, PARAM.globalv.bessel_nao_rcut, -// PARAM.inp.bessel_nao_tolerence, ucell); -// this->mu_index = this->init_mu_index(ucell); -// this->init_label = true; -// } -// this->numerical_atomic_wfc(ik, wfcpw, psi, sf, ucell); -// } - -// The function is called in run_fp.cpp. -void Numerical_Basis::output_overlap(const psi::Psi>& psi, - const Structure_Factor& sf, - const K_Vectors& kv, - const ModulePW::PW_Basis_K* wfcpw, - const UnitCell& ucell, - const int& index) -{ - ModuleBase::TITLE("Numerical_Basis", "output_overlap"); - ModuleBase::GlobalFunc::NEW_PART("Overlap Data For Spillage Minimization"); - const double bessel_nao_rcut = PARAM.inp.bessel_nao_rcuts[index]; - - //--------------------------------------------------------- - // if the numerical_basis hasn't been initialized yet, - // then we initial here. - //--------------------------------------------------------- - if (!this->init_label) - { - // false stands for : 'Faln' is not used. - this->bessel_basis.init(false, std::stod(PARAM.inp.bessel_nao_ecut), ucell.ntype, ucell.lmax, - PARAM.inp.bessel_nao_smooth, PARAM.inp.bessel_nao_sigma, bessel_nao_rcut, - PARAM.inp.bessel_nao_tolerence, ucell); - this->mu_index = this->init_mu_index(ucell); - this->init_label = true; - } - ModuleBase::GlobalFunc::MAKE_DIR(winput::spillage_outdir); - for (int derivative_order = 0; derivative_order <= 1; ++derivative_order) // Peize Lin add 2020.04.23 - { - std::ofstream ofs; - std::stringstream ss; - // the parameter 'winput::spillage_outdir' is read from INPUTw. - ss << winput::spillage_outdir << "/"; - - if (PARAM.inp.bessel_nao_rcuts.size() > 1) - { - ss << "orb_matrix_rcut" << bessel_nao_rcut << "deriv"; - } - else - { - ss << "orb_matrix."; - } // to make it compatible with old version of orbital generation - ss << derivative_order << ".dat"; - - if (GlobalV::MY_RANK == 0) - { - ofs.open(ss.str().c_str()); - } - - // ALLOCATE MEMORY FOR THE OVERLAP MATRIX - // OVERLAP : < J_mu | Psi > - std::vector overlap_Q(kv.get_nks()); - // OVERLAP : < J_mu | J_nu > - std::vector overlap_Sq(kv.get_nks()); - - ModuleBase::GlobalFunc::OUT(GlobalV::ofs_running, "number of k points", kv.get_nks()); - ModuleBase::GlobalFunc::OUT(GlobalV::ofs_running, "number of bands", PARAM.inp.nbands); - ModuleBase::GlobalFunc::OUT(GlobalV::ofs_running, "number of local orbitals", PARAM.globalv.nlocal); - ModuleBase::GlobalFunc::OUT(GlobalV::ofs_running, "number of eigenvalues of Jl(x)", - this->bessel_basis.get_ecut_number()); - - // CALCULATE THE OVERLAP MATRIX - // nks now is the reduced k-points. - for (int ik = 0; ik < kv.get_nks(); ik++) - { - const int npw = kv.ngk[ik]; - GlobalV::ofs_running << " --------------------------------------------------------" << std::endl; - GlobalV::ofs_running << " Print the overlap matrixs Q and S for this kpoint" << std::endl; - GlobalV::ofs_running << std::setw(8) << "ik" << std::setw(8) << "npw" << std::endl; - GlobalV::ofs_running << std::setw(8) << ik + 1 << std::setw(8) << npw << std::endl; - GlobalV::ofs_running << " --------------------------------------------------------" << std::endl; - - // search for all k-points. - psi.fix_k(ik); - overlap_Q[ik] = this->cal_overlap_Q(ik, npw, wfcpw, psi, static_cast(derivative_order), sf, ucell); - ModuleBase::GlobalFunc::DONE(GlobalV::ofs_running, "cal_overlap_Q"); - - // (2) generate Sq matrix if necessary. - if (winput::out_spillage == 2) - { -#ifndef __LCAO - // compute in plane-wave basis - overlap_Sq[ik] = this->cal_overlap_Sq(ik, npw, static_cast(derivative_order), sf, wfcpw, ucell); -#else - // compute with two-center integration - assert(derivative_order == 0 || derivative_order == 1); - char type = (derivative_order == 0) ? 'S' : 'T'; - std::vector natom; - std::vector lmax; - std::vector>> tau_cart; - for (int it = 0; it < ucell.ntype; ++it) - { - natom.push_back(ucell.atoms[it].na); - lmax.push_back(ucell.atoms[it].nwl); - tau_cart.emplace_back(); - - for (int ia = 0; ia < ucell.atoms[it].na; ++ia) - { - tau_cart[it].push_back(ucell.atoms[it].tau[ia] * ucell.lat0); - } - } - - overlap_Sq[ik] = NumericalBasis::cal_overlap_Sq( - type, ucell.lmaxmax, this->bessel_basis.get_ecut_number(), bessel_nao_rcut, tau_cart, - ucell.lat0 * ucell.latvec, NumericalBasis::indexgen(natom, lmax)); -#endif - ModuleBase::GlobalFunc::DONE(GlobalV::ofs_running, "cal_overlap_Sq"); - } - } - - const ModuleBase::matrix overlap_V - = this->cal_overlap_V(wfcpw, psi, static_cast(derivative_order), kv, ucell.tpiba); - - // ALTHOUGH THIS FUNCTION NAMES output_overlap, IT ACTUALLY OUTPUTS THE OVERLAP MATRIX HERE -#ifdef __MPI - for (int ik = 0; ik < kv.get_nks(); ik++) - { - Parallel_Reduce::reduce_pool(overlap_Q[ik].ptr, overlap_Q[ik].getSize()); - // Parallel_Reduce::reduce_pool(overlap_Sq[ik].ptr, overlap_Sq[ik].getSize()); - } - Parallel_Reduce::reduce_pool(overlap_V.c, overlap_V.nr * overlap_V.nc); // Peize Lin add 2020.04.23 -#endif - // exception handling following, for FileNotOpenFailure - if (ofs.good()) { - this->output_info(ofs, bessel_basis, kv, ucell); // header of orb_matrix* file - } else { - ModuleBase::WARNING_QUIT("Numerical_Basis", "Failed to open file for writing the overlap matrix."); -} - // because one stage of file io complete, re-check the file status. - if (ofs.good()) { - this->output_k(ofs, kv); // ... - } else { - ModuleBase::WARNING_QUIT("Numerical_Basis", "Failed to write k-points to file."); -} - // because one stage of file io complete, re-check the file status. - if (ofs.good()) { - this->output_overlap_Q(ofs, overlap_Q, kv); // ... - } else { - ModuleBase::WARNING_QUIT("Numerical_Basis", "Failed to write overlap Q to file."); -} - // because one stage of file io complete, re-check the file status. - if (winput::out_spillage == 2) - { - // caution: this is the largest matrix to be output, always flush - if (ofs.good()) { - this->output_overlap_Sq(ss.str(), ofs, overlap_Sq, kv); // ... - } else { - ModuleBase::WARNING_QUIT("Numerical_Basis", "Failed to write overlap S to file."); -} - } - // because one stage of file io complete, re-check the file status. - if (ofs.good()) { - this->output_overlap_V(ofs, overlap_V); // ... - // Peize Lin add 2020.04.23 - } else { - ModuleBase::WARNING_QUIT("Numerical_Basis", "Failed to write overlap V to file."); -} - if (GlobalV::MY_RANK == 0) { - ofs.close(); -} - } - return; -} - -ModuleBase::ComplexArray Numerical_Basis::cal_overlap_Q(const int& ik, const int& np, const ModulePW::PW_Basis_K* wfcpw, - const psi::Psi>& psi, - const double derivative_order, const Structure_Factor& sf, - const UnitCell& ucell) const -{ - ModuleBase::TITLE("Numerical_Basis", "cal_overlap_Q"); - ModuleBase::timer::tick("Numerical_Basis", "cal_overlap_Q"); - - GlobalV::ofs_running << " OUTPUT THE OVERLAP BETWEEN SPHERICAL BESSEL FUNCTIONS AND BLOCH WAVE FUNCTIONS" - << std::endl; - GlobalV::ofs_running << " Q = < J_mu, q | Psi_n, k > " << std::endl; - - ModuleBase::ComplexArray overlap_Q(PARAM.inp.nbands, PARAM.globalv.nlocal, this->bessel_basis.get_ecut_number()); - overlap_Q.zero_out(); - - const double normalization = (4 * ModuleBase::PI) / sqrt(ucell.omega); // Peize Lin add normalization 2015-12-29 - - std::vector> gk(np); - for (int ig = 0; ig < np; ig++) - { - gk[ig] = wfcpw->getgpluskcar(ik, ig) * ucell.tpiba; - } - - const std::vector gpow = Numerical_Basis::cal_gpow(gk, derivative_order); - - const ModuleBase::realArray flq = this->cal_flq(gk, ucell.lmax); - - const ModuleBase::matrix ylm = Numerical_Basis::cal_ylm(gk, ucell.lmax); - - GlobalV::ofs_running << "\n " << std::setw(5) << "ik" << std::setw(8) << "Type1" << std::setw(8) << "Atom1" - << std::setw(8) << "L" << std::endl; - - for (int T = 0; T < ucell.ntype; T++) - { - // OUT("T",T); - for (int I = 0; I < ucell.atoms[T].na; I++) - { - // OUT("I",I); - std::complex* sk = sf.get_sk(ik, T, I, wfcpw); - for (int L = 0; L < ucell.atoms[T].nwl + 1; L++) - { - GlobalV::ofs_running << " " << std::setw(5) << ik + 1 << std::setw(8) << ucell.atoms[T].label - << std::setw(8) << I + 1 << std::setw(8) << L << std::endl; - // OUT("l",l); - std::complex lphase - = normalization * pow(ModuleBase::IMAG_UNIT, -L); // Peize Lin add normalization 2015-12-29 - for (int ie = 0; ie < this->bessel_basis.get_ecut_number(); ie++) - { - const int N = 0; - assert(ucell.nmax == 1); - for (int m = 0; m < 2 * L + 1; m++) - { - const int lm = L * L + m; - for (int ib = 0; ib < PARAM.inp.nbands; ib++) - { - std::complex overlap_tmp = ModuleBase::ZERO; - for (int ig = 0; ig < np; ig++) - { - // const std::complex local_tmp = lphase * sk[ig] * - // ylm(lm, ig) * flq[ig]; - const std::complex local_tmp = lphase * sk[ig] * ylm(lm, ig) * flq(L, ie, ig) - * gpow[ig]; // Peize Lin add for dpsi 2020.04.23 - overlap_tmp += conj(local_tmp) * psi(ib, ig); // psi is bloch orbitals - } - overlap_Q(ib, this->mu_index[T](I, L, N, m), ie) = overlap_tmp; - } - } - } // end ie - } // end l - delete[] sk; - sk = nullptr; - } - } - - ModuleBase::timer::tick("Numerical_Basis", "cal_overlap_Q"); - return overlap_Q; -} - -ModuleBase::ComplexArray Numerical_Basis::cal_overlap_Sq(const int& ik, const int& np, const double derivative_order, - const Structure_Factor& sf, const ModulePW::PW_Basis_K* wfcpw, - const UnitCell& ucell) const -{ - ModuleBase::TITLE("Numerical_Basis", "cal_overlap_Sq"); - ModuleBase::timer::tick("Numerical_Basis", "cal_overlap_Sq"); - - GlobalV::ofs_running << " OUTPUT THE OVERLAP BETWEEN SPHERICAL BESSEL FUNCTIONS" << std::endl; - GlobalV::ofs_running << " S = < J_mu,q1 | J_nu,q2 >" << std::endl; - - const int enumber = this->bessel_basis.get_ecut_number(); - ModuleBase::ComplexArray overlap_Sq(PARAM.globalv.nlocal, PARAM.globalv.nlocal, enumber, enumber); - overlap_Sq.zero_out(); - - const double normalization - = (4 * ModuleBase::PI) * (4 * ModuleBase::PI) / ucell.omega; // Peize Lin add normalization 2015-12-29 - - std::vector> gk(np); - for (int ig = 0; ig < np; ig++) { - gk[ig] = wfcpw->getgpluskcar(ik, ig) * ucell.tpiba; -} - - const std::vector gpow = Numerical_Basis::cal_gpow(gk, derivative_order); - - const ModuleBase::realArray flq = this->cal_flq(gk, ucell.lmax); - - const ModuleBase::matrix ylm = Numerical_Basis::cal_ylm(gk, ucell.lmax); - - GlobalV::ofs_running << "\n " << std::setw(5) << "ik" << std::setw(8) << "Type1" << std::setw(8) << "Atom1" - << std::setw(8) << "L1" << std::setw(8) << "Type2" << std::setw(8) << "Atom2" << std::setw(8) - << "L2" << std::endl; - - for (int T1 = 0; T1 < ucell.ntype; T1++) // 1.1 - { - for (int I1 = 0; I1 < ucell.atoms[T1].na; I1++) // 1.2 - { - std::complex* sk1 = sf.get_sk(ik, T1, I1, wfcpw); - for (int T2 = 0; T2 < ucell.ntype; T2++) // 2.1 - { - for (int I2 = 0; I2 < ucell.atoms[T2].na; I2++) // 2.2 - { - std::complex* sk2 = sf.get_sk(ik, T2, I2, wfcpw); - for (int l1 = 0; l1 < ucell.atoms[T1].nwl + 1; l1++) // 1.3 - { - const std::complex lphase1 - = normalization * pow(ModuleBase::IMAG_UNIT, l1); // Peize Lin add normalization 2015-12-29 - for (int l2 = 0; l2 < ucell.atoms[T2].nwl + 1; l2++) // 2.3 - { - GlobalV::ofs_running << " " << std::setw(5) << ik + 1 << std::setw(8) - << ucell.atoms[T1].label << std::setw(8) << I1 + 1 << std::setw(8) - << l1 << std::setw(8) << ucell.atoms[T2].label << std::setw(8) - << I2 + 1 << std::setw(8) << l2 << std::setw(8) << std::endl; - - const std::complex lphase2 = pow(ModuleBase::IMAG_UNIT, l2); - for (int ic1 = 0; ic1 < ucell.nmax; ic1++) // 1.5 - { - for (int ic2 = 0; ic2 < ucell.nmax; ic2++) // 2.5 - { - for (int m1 = 0; m1 < 2 * l1 + 1; m1++) // 1.6 - { - const int lm1 = l1 * l1 + m1; - const int iwt1 = this->mu_index[T1](I1, l1, ic1, m1); - - std::vector> about_ig1(np, std::complex(0.0, 0.0)); - for (int ig = 0; ig < np; ig++) { - about_ig1[ig] = conj(lphase1 * sk1[ig] * ylm(lm1, ig)) - * gpow[ig]; // Peize Lin add for dpsi 2020.04.23 -} - - for (int m2 = 0; m2 < 2 * l2 + 1; m2++) // 2.6 - { - const int lm2 = l2 * l2 + m2; - const int iwt2 = this->mu_index[T2](I2, l2, ic2, m2); - - std::vector> about_ig2(np, - std::complex(0.0, 0.0)); - for (int ig = 0; ig < np; ++ig) { - about_ig2[ig] = lphase2 * sk2[ig] * ylm(lm2, ig) * about_ig1[ig]; -} - - /* same as: - for (int ig=0; ig>()); -} - - BlasConnector::gemm('N', 'T', enumber, enumber, np, 1.0, about_ig3_1.c, np, - about_ig3_2.c, np, 1.0, &overlap_Sq(iwt1, iwt2, 0, 0), - enumber); - } - } - } - } - } - } - delete[] sk2; - sk2 = nullptr; - } - } - delete[] sk1; - sk1 = nullptr; - } - } - - ModuleBase::timer::tick("Numerical_Basis", "cal_overlap_Sq"); - return overlap_Sq; -} - -// Peize Lin add for dpsi 2020.04.23 -ModuleBase::matrix Numerical_Basis::cal_overlap_V(const ModulePW::PW_Basis_K* wfcpw, - const psi::Psi>& psi, - const double derivative_order, const K_Vectors& kv, - const double tpiba) -{ - ModuleBase::matrix overlap_V(kv.get_nks(), PARAM.inp.nbands); - for (int ik = 0; ik < kv.get_nks(); ++ik) - { - std::vector> gk(kv.ngk[ik]); - for (int ig = 0; ig < gk.size(); ig++) { - gk[ig] = wfcpw->getgpluskcar(ik, ig) * tpiba; -} - - const std::vector gpow = Numerical_Basis::cal_gpow(gk, derivative_order); - - for (int ib = 0; ib < PARAM.inp.nbands; ++ib) { - for (int ig = 0; ig < kv.ngk[ik]; ++ig) { - overlap_V(ik, ib) += norm(psi(ik, ib, ig)) * gpow[ig]; -} -} - } - return overlap_V; -} - -ModuleBase::realArray Numerical_Basis::cal_flq(const std::vector>& gk, - const int ucell_lmax) const -{ - const int np = gk.size(); - const int enumber = this->bessel_basis.get_ecut_number(); - - // get flq(G) = \int f(r)jl(G*r) from interpolation table. - ModuleBase::realArray flq(ucell_lmax + 1, enumber, np); - for (int il = 0; il < ucell_lmax + 1; il++) - { - for (int ie = 0; ie < enumber; ie++) - { - for (int ig = 0; ig < np; ig++) - { - flq(il, ie, ig) = this->bessel_basis.Polynomial_Interpolation2(il, ie, gk[ig].norm()); - } - } - } - return flq; -} - -ModuleBase::matrix Numerical_Basis::cal_ylm(const std::vector>& gk, const int ucell_lmax) -{ - const int total_lm = (ucell_lmax + 1) * (ucell_lmax + 1); - ModuleBase::matrix ylm(total_lm, gk.size()); - ModuleBase::YlmReal::Ylm_Real(total_lm, gk.size(), gk.data(), ylm); - return ylm; -} - -std::vector Numerical_Basis::cal_gpow(const std::vector>& gk, - const double derivative_order) -{ - constexpr double thr = 1E-12; - std::vector gpow(gk.size(), 0.0); - for (int ig = 0; ig < gpow.size(); ++ig) - { - if (derivative_order >= 0) - { - gpow[ig] = std::pow(gk[ig].norm2(), derivative_order); - } - else - { - if (gk[ig].norm2() >= thr) { - gpow[ig] = std::pow(gk[ig].norm2(), derivative_order); -} - } - } - return gpow; -} - -std::vector Numerical_Basis::init_mu_index(const UnitCell& ucell) -{ - GlobalV::ofs_running << " Initialize the mu index" << std::endl; - std::vector mu_index_(ucell.ntype); - - int mu = 0; - for (int it = 0; it < ucell.ntype; it++) - { - mu_index_[it].create(ucell.atoms[it].na, ucell.atoms[it].nwl + 1, ucell.nmax, - 2 * (ucell.atoms[it].nwl + 1) + 1); // m ==> 2*l+1 - - mu_index_[it].zero_out(); - - // mohan added 2021-01-03 - GlobalV::ofs_running << "Type " << it + 1 << " number_of_atoms " << ucell.atoms[it].na << " number_of_L " - << ucell.atoms[it].nwl + 1 << " number_of_n " << ucell.nmax << " number_of_m " - << 2 * (ucell.atoms[it].nwl + 1) + 1 << std::endl; - - for (int ia = 0; ia < ucell.atoms[it].na; ia++) - { - for (int l = 0; l < ucell.atoms[it].nwl + 1; l++) - { - for (int n = 0; n < ucell.atoms[it].l_nchi[l]; n++) - { - for (int m = 0; m < 2 * l + 1; m++) - { - mu_index_[it](ia, l, n, m) = mu; - mu++; - } - } - } - } - } - return mu_index_; -} - -void Numerical_Basis::numerical_atomic_wfc(const int& ik, const ModulePW::PW_Basis_K* wfcpw, - ModuleBase::ComplexMatrix& psi, const Structure_Factor& sf, - const UnitCell& ucell) -{ - ModuleBase::TITLE("Numerical_Basis", "numerical_atomic_wfc"); - const int np = wfcpw->npwk[ik]; - std::vector> gk(np); - for (int ig = 0; ig < np; ig++) { - gk[ig] = wfcpw->getgpluskcar(ik, ig); -} - - const int total_lm = (ucell.lmax + 1) * (ucell.lmax + 1); - ModuleBase::matrix ylm(total_lm, np); - ModuleBase::YlmReal::Ylm_Real(total_lm, np, gk.data(), ylm); - - std::vector flq(np); - for (int it = 0; it < ucell.ntype; it++) - { - // OUT("it",it); - for (int ia = 0; ia < ucell.atoms[it].na; ia++) - { - // OUT("ia",ia); - std::complex* sk = sf.get_sk(ik, it, ia, wfcpw); - for (int l = 0; l < ucell.atoms[it].nwl + 1; l++) - { - // OUT("l",l); - std::complex lphase = pow(ModuleBase::IMAG_UNIT, l); - for (int ic = 0; ic < ucell.atoms[it].l_nchi[l]; ic++) - { - // OUT("ic",ic); - for (int ig = 0; ig < np; ig++) - { - flq[ig] = this->bessel_basis.Polynomial_Interpolation(it, l, ic, gk[ig].norm() * ucell.tpiba); - } - - for (int m = 0; m < 2 * l + 1; m++) - { - // OUT("m",m); - const int lm = l * l + m; - for (int ig = 0; ig < np; ig++) - { - psi(this->mu_index[it](ia, l, ic, m), ig) = lphase * sk[ig] * ylm(lm, ig) * flq[ig]; - } - } - } - } - delete[] sk; - sk = nullptr; - } - } -} - -void Numerical_Basis::output_info(std::ofstream& ofs, const Bessel_Basis& bessel_basis, const K_Vectors& kv, - const UnitCell& ucell) -{ - // only print out to the information by the first processor - if (GlobalV::MY_RANK == 0) - { - ofs.precision(10); - ofs << ucell.lat0 << std::endl; - - ofs << ucell.latvec.e11 << " " << ucell.latvec.e12 << " " << ucell.latvec.e13 << std::endl; - ofs << ucell.latvec.e21 << " " << ucell.latvec.e22 << " " << ucell.latvec.e23 << std::endl; - ofs << ucell.latvec.e31 << " " << ucell.latvec.e32 << " " << ucell.latvec.e33 << std::endl; - - ofs << ucell.ntype << " ntype" << std::endl; - for (int it = 0; it < ucell.ntype; it++) - { - ofs << ucell.atoms[it].label << " label" << std::endl; // mohan add 2009-07-23 - ofs << ucell.atoms[it].na << " na" << std::endl; - for (int ia = 0; ia < ucell.atoms[it].na; ia++) - { - ofs << ucell.atoms[it].tau[ia].x << " " << ucell.atoms[it].tau[ia].y << " " << ucell.atoms[it].tau[ia].z - << std::endl; - } - } - // ecutwfc_jlq determine the jlq corresponding to plane wave calculation. - ofs << PARAM.inp.ecutwfc << " ecutwfc" << std::endl; // mohan add 2009-09-08 - - // this parameter determine the total number of jlq. - ofs << bessel_basis.get_ecut() << " ecutwfc_jlq" << std::endl; // mohan modify 2009-09-08 - ofs << bessel_basis.get_rcut() << " rcut_Jlq" << std::endl; - - // mohan add 'smooth' and 'sigma' 2009-08-28 - ofs << bessel_basis.get_smooth() << " smooth" << std::endl; - ofs << bessel_basis.get_sigma() << " sigma" << std::endl; - - ofs << bessel_basis.get_tolerence() << " tolerence" << std::endl; - - ofs << ucell.lmax << " lmax" << std::endl; - } - - ofs << std::scientific; - - ofs << std::setprecision(8); - // NOTICE: ofs_warning << "\n The precison may affect the optimize result."; - - if (GlobalV::MY_RANK == 0) - { - ofs << kv.get_nkstot() << " nks" << std::endl; - ofs << PARAM.inp.nbands << " nbands" << std::endl; - ofs << PARAM.globalv.nlocal << " nwfc" << std::endl; - ofs << bessel_basis.get_ecut_number() << " ne " << std::endl; - } -} - -void Numerical_Basis::output_k(std::ofstream& ofs, const K_Vectors& kv) -{ - // (1) - if (GlobalV::MY_RANK == 0) - { - ofs << ""; - } - - // only half of nkstot should be output in "NSPIN == 2" case, k_up and k_down has same k infomation - int nkstot = kv.get_nkstot(); - - // (2) - for (int ik = 0; ik < nkstot; ik++) - { - double kx, ky, kz, wknow; -#ifdef __MPI - // temprary restrict kpar=1 for NSPIN=2 case for generating_orbitals - int pool = 0; - if (PARAM.inp.nspin != 2) { - pool = kv.para_k.whichpool[ik]; -} - const int iknow = ik - kv.para_k.startk_pool[GlobalV::MY_POOL]; - if (GlobalV::RANK_IN_POOL == 0) - { - if (GlobalV::MY_POOL == 0) - { - if (pool == 0) - { - kx = kv.kvec_c[ik].x; - ky = kv.kvec_c[ik].y; - kz = kv.kvec_c[ik].z; - wknow = kv.wk[ik]; - } - else - { - - int startpro_pool = kv.para_k.get_startpro_pool(pool); - MPI_Status ierror; - MPI_Recv(&kx, 1, MPI_DOUBLE, startpro_pool, ik * 4, MPI_COMM_WORLD, &ierror); - MPI_Recv(&ky, 1, MPI_DOUBLE, startpro_pool, ik * 4 + 1, MPI_COMM_WORLD, &ierror); - MPI_Recv(&kz, 1, MPI_DOUBLE, startpro_pool, ik * 4 + 2, MPI_COMM_WORLD, &ierror); - MPI_Recv(&wknow, 1, MPI_DOUBLE, startpro_pool, ik * 4 + 3, MPI_COMM_WORLD, &ierror); - } - } - else - { - if (GlobalV::MY_POOL == pool) - { - MPI_Send(&kv.kvec_c[iknow].x, 1, MPI_DOUBLE, 0, ik * 4, MPI_COMM_WORLD); - MPI_Send(&kv.kvec_c[iknow].y, 1, MPI_DOUBLE, 0, ik * 4 + 1, MPI_COMM_WORLD); - MPI_Send(&kv.kvec_c[iknow].z, 1, MPI_DOUBLE, 0, ik * 4 + 2, MPI_COMM_WORLD); - MPI_Send(&kv.wk[iknow], 1, MPI_DOUBLE, 0, ik * 4 + 3, MPI_COMM_WORLD); - } - } - } - // this barrier is very important - MPI_Barrier(MPI_COMM_WORLD); -#else - if (GlobalV::MY_RANK == 0) - { - kx = kv.kvec_c[ik].x; - ky = kv.kvec_c[ik].y; - kz = kv.kvec_c[ik].z; - wknow = kv.wk[ik]; - } -#endif - - if (GlobalV::MY_RANK == 0) - { - ofs << "\n" << kx << " " << ky << " " << kz; - ofs << " " << wknow * 0.5; - } - } - - if (GlobalV::MY_RANK == 0) - { - ofs << "\n" << std::endl; - } -} - -void Numerical_Basis::output_overlap_Q(std::ofstream& ofs, const std::vector& overlap_Q, - const K_Vectors& kv) -{ - // (3) - if (GlobalV::MY_RANK == 0) - { - ofs << "\n"; - } - - // (4) - /* - if(GlobalV::MY_RANK==0) - { - // for( int i=0; i 0); - ModuleBase::ComplexArray overlap_Q_k(kv.get_nks(), overlap_Q[0].getBound1(), overlap_Q[0].getBound2(), - overlap_Q[0].getBound3()); - for (int ik = 0; ik < kv.get_nks(); ++ik) - { - std::memcpy(overlap_Q_k.ptr + ik * overlap_Q[ik].getSize(), overlap_Q[ik].ptr, - overlap_Q[ik].getSize() * sizeof(std::complex)); - } - - // only half of nkstot should be output in "NSPIN == 2" case, k_up and k_down has same k infomation - int nkstot = kv.get_nkstot(); - int count = 0; - for (int ik = 0; ik < nkstot; ik++) - { - ModuleBase::ComplexArray Qtmp(overlap_Q[ik].getBound1(), overlap_Q[ik].getBound2(), overlap_Q[ik].getBound3()); - Qtmp.zero_out(); - kv.para_k.pool_collection(Qtmp.ptr, overlap_Q_k, ik); - if (GlobalV::MY_RANK == 0) - { - // ofs << "\n ik=" << ik; - // begin data writing. - const int dim = Qtmp.getSize(); - for (int i = 0; i < dim; i++) - { - if (count % 4 == 0) { - ofs << std::endl; -} - ofs << " " << Qtmp.ptr[i].real() << " " << Qtmp.ptr[i].imag(); - ++count; - } - // end data writing. - } -#ifdef __MPI - MPI_Barrier(MPI_COMM_WORLD); -#endif - } - - // (5) - if (GlobalV::MY_RANK == 0) - { - ofs << "\n" << std::endl; - } -} - -void Numerical_Basis::output_overlap_Sq(const std::string& name, std::ofstream& ofs, - const std::vector& overlap_Sq, const K_Vectors& kv) -{ - if (GlobalV::MY_RANK == 0) - { - ofs << "\n"; - ofs.close(); - } - - // only half of nkstot should be output in "NSPIN == 2" case, k_up and k_down has same k infomation - int ispin = 1; - if (PARAM.inp.nspin == 2) { - ispin = 2; -} - int nkstot = kv.get_nkstot() / ispin; - int count = 0; - for (int is = 0; is < ispin; is++) - { - for (int ik = 0; ik < nkstot; ik++) - { - if (GlobalV::MY_POOL == kv.para_k.whichpool[ik]) - { - if (GlobalV::RANK_IN_POOL == 0) - { - ofs.open(name.c_str(), std::ios::app); - const int ik_now = ik - kv.para_k.startk_pool[GlobalV::MY_POOL] + is * nkstot; - - const int size = overlap_Sq[ik_now].getSize(); - for (int i = 0; i < size; i++) - { - if (count % 2 == 0) { - ofs << std::endl; -} - ofs << " " << overlap_Sq[ik_now].ptr[i].real() << " " << overlap_Sq[ik_now].ptr[i].imag(); - ++count; - } - ofs.flush(); - ofs.close(); - } -#ifdef __MPI - MPI_Barrier(MPI_COMM_WORLD); -#endif - } - else - { -#ifdef __MPI - MPI_Barrier(MPI_COMM_WORLD); -#endif - } - - /* - if(MY_RANK==0) - for(int i=0; i< Sq_real[ik].getSize(); i++) - { - if(i%2==0) ofs << "\n"; - ofs << " " << Sq_real[ik].ptr[i] << " " << Sq_imag[ik].ptr[i]; - } - */ - } - } - if (GlobalV::MY_RANK == 0) - { - ofs.open(name.c_str(), std::ios::app); - ofs << "\n" << std::endl; - } -} - -// Peize Lin add 2020.04.23 -void Numerical_Basis::output_overlap_V(std::ofstream& ofs, const ModuleBase::matrix& overlap_V) -{ - if (GlobalV::MY_RANK == 0) - { - ofs << "\n" << std::endl; - ; - overlap_V.print(ofs); - ofs << "" << std::endl; - } -} diff --git a/source/source_io/numerical_basis.h b/source/source_io/numerical_basis.h deleted file mode 100644 index 7fc6b146c4..0000000000 --- a/source/source_io/numerical_basis.h +++ /dev/null @@ -1,108 +0,0 @@ -//========================================================== -// AUTHOR : mohan -// DATE : 2009-4-2 -// Last Modify: 2009-08-28 -//========================================================== -#ifndef NUMERICAL_BASIS_H -#define NUMERICAL_BASIS_H -#include - -#include "bessel_basis.h" -#include "source_base/complexarray.h" -#include "source_base/complexmatrix.h" -#include "source_base/global_function.h" -#include "source_base/global_variable.h" -#include "source_base/intarray.h" -#include "source_base/matrix.h" -#include "source_base/vector3.h" -#include "source_basis/module_pw/pw_basis_k.h" -#include "source_cell/klist.h" -#include "source_pw/module_pwdft/structure_factor.h" -#include "source_psi/psi.h" -//========================================================== -// CLASS : -// NAME : Numerical_Basis -//========================================================== -class Numerical_Basis -{ - public: - // this is not a good idea to construct the instance. Instead, there are many variables that CAN DEFINE the identity of this instance, - // these parameters should be provided in the constructor. For future refactor, I list them here: - // bessel_nao_*: including ecut, rcut, smearing, sigma, etc. - // a file name: for the function start_from_file_k, if starts from file, can construct a different instance, instead of using the same instance. - Numerical_Basis(); - ~Numerical_Basis(); - - // void start_from_file_k(const int& ik, ModuleBase::ComplexMatrix& psi, const Structure_Factor& sf, const ModulePW::PW_Basis_K* wfcpw, const UnitCell& ucell); - void output_overlap(const psi::Psi>& psi, - const Structure_Factor& sf, - const K_Vectors& kv, - const ModulePW::PW_Basis_K* wfcpw, - const UnitCell& ucell, - const int& index); - - private: - bool init_label = false; - - Bessel_Basis bessel_basis; - - std::vector mu_index; - static std::vector init_mu_index(const UnitCell& ucell); - - void numerical_atomic_wfc(const int& ik, - const ModulePW::PW_Basis_K* wfcpw, - ModuleBase::ComplexMatrix& psi, - const Structure_Factor& sf, - const UnitCell& ucell); - - ModuleBase::ComplexArray cal_overlap_Q(const int& ik, - const int& np, - const ModulePW::PW_Basis_K* wfcpw, - const psi::Psi>& psi, - const double derivative_order, - const Structure_Factor& sf, - const UnitCell& ucell) const; - - // computed in the plane-wave basis - ModuleBase::ComplexArray cal_overlap_Sq(const int& ik, - const int& np, - const double derivative_order, - const Structure_Factor& sf, - const ModulePW::PW_Basis_K* wfcpw, - const UnitCell& ucell) const; - - static ModuleBase::matrix cal_overlap_V(const ModulePW::PW_Basis_K* wfcpw, - const psi::Psi>& psi, - const double derivative_order, - const K_Vectors& kv, - const double tpiba); - - // gk should be in the atomic unit (Bohr) - ModuleBase::realArray cal_flq(const std::vector> &gk, - const int ucell_lmax) const; - - // Ylm does not depend on the magnitude so unit is not important - static ModuleBase::matrix cal_ylm(const std::vector> &gk, - const int ucell_lmax); - - // gk and the returned gpow are both in the atomic unit (Bohr) - static std::vector cal_gpow(const std::vector> &gk, - const double derivative_order); - - static void output_info(std::ofstream& ofs, const Bessel_Basis& bessel_basis, const K_Vectors& kv, const UnitCell& ucell); - - static void output_k(std::ofstream& ofs, const K_Vectors& kv); - - static void output_overlap_Q(std::ofstream& ofs, - const std::vector& overlap_Q, - const K_Vectors& kv); - - static void output_overlap_Sq(const std::string& name, - std::ofstream& ofs, - const std::vector& overlap_Sq, - const K_Vectors& kv); - - static void output_overlap_V(std::ofstream &ofs, const ModuleBase::matrix &overlap_V); -}; - -#endif diff --git a/source/source_io/output.cpp b/source/source_io/output.cpp deleted file mode 100644 index cf6d5eb86f..0000000000 --- a/source/source_io/output.cpp +++ /dev/null @@ -1,288 +0,0 @@ -/* output.cpp */ - -#include "output.h" - -void output::printrm(std::ofstream &ofs,const std::string &s, const ModuleBase::matrix &m, const double &limit) -{ - const int b1 = m.nr; - const int b2 = m.nc; - ofs << "\n " << s << " nr=" << b1 << " nc=" << b2 ; - if (b1*b2 == 0) return; - for (int i = 0;i < b1;i++) - { -// ofs<<"\n row = "< limit) - { - ofs << std::setprecision(6) << std::setw(12) << m(i,j); - } - else - { - ofs << std::setw(12) << "0"; - } - } - } - ofs << std::endl; - return; -} - -void output::printrm(const std::string &s, const ModuleBase::matrix &m, const double &limit) -{ - const int b1 = m.nr; - const int b2 = m.nc; - std::cout << "\n " << s << " nr=" << b1 << " nc=" << b2 ; - if (b1*b2 == 0) return; - - for (int i = 0;i < b1;i++) - { - //std::cout << "\n row=" << i; - for (int j = 0;j < b2;j++) - { -// if (j % 4 == 0) std::cout << "\n "; - if (j % 8 == 0) std::cout << "\n "; -// if (std::abs(m(i,j)) > limit) std::cout << std::setprecision(15) << std::setw(20) << m(i,j); - if (std::abs(m(i,j)) > limit) std::cout << std::setprecision(6) << std::setw(12) << m(i,j); -// else std::cout< limit) ofs<< std::setw(12) << sqrt(norm); - else ofs< limit) std::cout<< std::setw(12) << sqrt(norm); - else std::cout< -class Output_DMK -{ - public: - Output_DMK(elecstate::DensityMatrix* p_DM, Parallel_Orbitals* ParaV, int nspin, int nks); - TK* get_DMK(int ik); - - private: - elecstate::DensityMatrix* p_DM_ = nullptr; - Parallel_Orbitals* ParaV_ = nullptr; - int nks_; - int nspin_; - std::vector DMK; -}; - -} // namespace ModuleIO - -#endif // MODULE_IO_OUTPUT_DMK_H \ No newline at end of file diff --git a/source/source_io/output_mat_sparse.cpp b/source/source_io/output_mat_sparse.cpp deleted file mode 100644 index 12d65edd61..0000000000 --- a/source/source_io/output_mat_sparse.cpp +++ /dev/null @@ -1,104 +0,0 @@ -#include "output_mat_sparse.h" - -#include "source_io/cal_r_overlap_R.h" -#include "source_io/write_HS_R.h" - -namespace ModuleIO -{ - -template <> -void output_mat_sparse(const bool& out_mat_hsR, - const bool& out_mat_dh, - const bool& out_mat_ds, - const bool& out_mat_t, - const bool& out_mat_r, - const int& istep, - const ModuleBase::matrix& v_eff, - const Parallel_Orbitals& pv, - Gint_k& gint_k, - const TwoCenterBundle& two_center_bundle, - const LCAO_Orbitals& orb, - UnitCell& ucell, - const Grid_Driver& grid, - const K_Vectors& kv, - hamilt::Hamilt* p_ham) -{ -} - -template <> -void output_mat_sparse(const bool& out_mat_hsR, - const bool& out_mat_dh, - const bool& out_mat_ds, - const bool& out_mat_t, - const bool& out_mat_r, - const int& istep, - const ModuleBase::matrix& v_eff, - const Parallel_Orbitals& pv, - Gint_k& gint_k, - const TwoCenterBundle& two_center_bundle, - const LCAO_Orbitals& orb, - UnitCell& ucell, - const Grid_Driver& grid, - const K_Vectors& kv, - hamilt::Hamilt>* p_ham) -{ - LCAO_HS_Arrays HS_Arrays; // store sparse arrays - - //! generate a file containing the Hamiltonian and S(overlap) matrices - if (out_mat_hsR) - { - output_HSR(ucell,istep, v_eff, pv, HS_Arrays, grid, kv, p_ham); - } - - //! generate a file containing the kinetic energy matrix - if (out_mat_t) - { - output_TR(istep, ucell, pv, HS_Arrays, grid, two_center_bundle, orb); - } - - //! generate a file containing the derivatives of the Hamiltonian matrix (in Ry/Bohr) - if (out_mat_dh) - { - output_dHR(istep, - v_eff, - gint_k, // mohan add 2024-04-01 - ucell, - pv, - HS_Arrays, - grid, // mohan add 2024-04-06 - two_center_bundle, - orb, - kv); // LiuXh add 2019-07-15 - } - //! generate a file containing the derivatives of the overlap matrix (in Ry/Bohr) - if (out_mat_ds) - { - output_dSR(istep, - ucell, - pv, - HS_Arrays, - grid, // mohan add 2024-04-06 - two_center_bundle, - orb, - kv); - } - - // add by jingan for out r_R matrix 2019.8.14 - if (out_mat_r) - { - cal_r_overlap_R r_matrix; - r_matrix.init(ucell, pv, orb); - if (out_mat_hsR) - { - r_matrix.out_rR_other(ucell,istep, HS_Arrays.output_R_coor); - } - else - { - r_matrix.out_rR(ucell, grid, istep); - } - } - - return; -} - -} // namespace ModuleIO diff --git a/source/source_io/output_mulliken.h b/source/source_io/output_mulliken.h deleted file mode 100644 index b5b73c37cf..0000000000 --- a/source/source_io/output_mulliken.h +++ /dev/null @@ -1,196 +0,0 @@ -#ifndef OUTPUT_MULLIKEN_H -#define OUTPUT_MULLIKEN_H -#include "source_base/complexmatrix.h" -#include "source_base/matrix.h" -#include "source_basis/module_ao/parallel_orbitals.h" -#include "source_cell/cell_index.h" -#include "source_estate/elecstate_lcao.h" -#include "source_io/output_dmk.h" -#include "source_io/output_sk.h" -#include "source_base/formatter.h" -#include "source_lcao/module_operator_lcao/dspin_lcao.h" - -#include -#include - -namespace ModuleIO -{ - -/// @brief the output interface to write the Mulliken population charges -template -class Output_Mulliken -{ - public: - /// constructor of Output_Mulliken - Output_Mulliken(Output_Sk* output_sk, - Output_DMK* output_dmk, - Parallel_Orbitals* ParaV, - CellIndex* cell_index, - const std::vector& isk, - int nspin); - /// the outer interface to write the Mulliken population charges - void write(int istep, std::string out_dir); - /// print atom mag to running log file - void print_atom_mag(const std::vector>& atom_chg, std::ostream& os); - /// get total charge - std::vector get_tot_chg(); - /// get atom charge - std::vector> get_atom_chg(); - /// get orbital charge - std::map, double> get_orb_chg(); - /// returun atom_mulliken for updateing STRU file - std::vector> get_atom_mulliken(std::vector>& atom_chg); - - private: - /****************************************************************** - * private functions - *******************************************************************/ - /// write mulliken.txt for the case of nspin=1 - void write_mulliken_nspin1(int istep, - const std::vector& tot_chg, - const std::vector>& atom_chg, - std::map, double> orb_chg, - std::ofstream& os); - /// write mulliken.txt for the case of nspin=2 - void write_mulliken_nspin2(int istep, - const std::vector& tot_chg, - const std::vector>& atom_chg, - std::map, double> orb_chg, - std::ofstream& os); - /// write mulliken.txt for the case of nspin=4 - void write_mulliken_nspin4(int istep, - const std::vector& tot_chg, - const std::vector>& atom_chg, - std::map, double> orb_chg, - std::ofstream& os); - /// set nspin - void set_nspin(int nspin_in); - /// set orbital parallel info - void set_ParaV(Parallel_Orbitals* ParaV_in); - /// collect_mw from matrix multiplication result - void collect_MW(ModuleBase::matrix& MecMulP, const ModuleBase::ComplexMatrix& mud, int nw, int isk); - /// mulliken population = trace(dm*overlap) - void cal_orbMulP(); - - private: - /****************************************************************** - * private variables - *******************************************************************/ - Output_Sk* output_sk_ = nullptr; - Output_DMK* output_dmk_ = nullptr; - Parallel_Orbitals* ParaV_ = nullptr; - CellIndex* cell_index_ = nullptr; - const std::vector& isk_; - int nspin_; - ModuleBase::matrix orbMulP_; -}; - -template -void cal_mag(Parallel_Orbitals* pv, - hamilt::Hamilt* p_ham, - K_Vectors& kv, - elecstate::ElecState* pelec, - const TwoCenterBundle& two_center_bundle, - const LCAO_Orbitals& orb, - UnitCell& ucell, - const Grid_Driver& gd, - const int istep, - const bool print) -{ - // 1) calculate and output Mulliken population charges and magnetic moments - if (PARAM.inp.out_mul) - { - auto cell_index - = CellIndex(ucell.get_atomLabels(), ucell.get_atomCounts(), ucell.get_lnchiCounts(), PARAM.inp.nspin); - auto out_sk = ModuleIO::Output_Sk(p_ham, pv, PARAM.inp.nspin, kv.get_nks()); - auto out_dmk = ModuleIO::Output_DMK(dynamic_cast*>(pelec)->get_DM(), - pv, - PARAM.inp.nspin, - kv.get_nks()); - auto mulp = ModuleIO::Output_Mulliken(&(out_sk), &(out_dmk), pv, &cell_index, kv.isk, PARAM.inp.nspin); - auto atom_chg = mulp.get_atom_chg(); - /// used in updating mag info in STRU file - ucell.atom_mulliken = mulp.get_atom_mulliken(atom_chg); - if (print && GlobalV::MY_RANK == 0) - { - /// write the Orbital file - cell_index.write_orb_info(PARAM.globalv.global_out_dir); - /// write mulliken.txt - mulp.write(istep, PARAM.globalv.global_out_dir); - /// write atomic mag info in running log file - mulp.print_atom_mag(atom_chg, GlobalV::ofs_running); - } - } - // 2) calculate and output the magnetizations of each atom with projection method - if (PARAM.inp.onsite_radius > 0) - { - std::vector> atom_mag(ucell.nat, std::vector(PARAM.inp.nspin, 0.0)); - std::vector> constrain(ucell.nat, ModuleBase::Vector3(1, 1, 1)); - const hamilt::HContainer* dmr - = dynamic_cast*>(pelec)->get_DM()->get_DMR_pointer(1); - std::vector moments; - std::vector mag_x(ucell.nat, 0.0); - std::vector mag_y(ucell.nat, 0.0); - std::vector mag_z(ucell.nat, 0.0); - auto atomLabels = ucell.get_atomLabels(); - if(PARAM.inp.nspin == 2) - { - auto sc_lambda - = new hamilt::DeltaSpin>(nullptr, - kv.kvec_d, - dynamic_cast*>(p_ham)->getHR(), - ucell, - &gd, - two_center_bundle.overlap_orb_onsite.get(), - orb.cutoffs()); - dynamic_cast*>(pelec)->get_DM()->switch_dmr(2); - moments = sc_lambda->cal_moment(dmr, constrain); - dynamic_cast*>(pelec)->get_DM()->switch_dmr(0); - delete sc_lambda; - //const std::vector title = {"Total Magnetism (uB)", ""}; - //const std::vector fmts = {"%-26s", "%20.10f"}; - //FmtTable table(title, ucell.nat, fmts, {FmtTable::Align::RIGHT, FmtTable::Align::LEFT}); - for(int iat=0;iat, std::complex>>( - nullptr, - kv.kvec_d, - dynamic_cast, std::complex>*>(p_ham)->getHR(), - ucell, - &gd, - two_center_bundle.overlap_orb_onsite.get(), - orb.cutoffs()); - moments = sc_lambda->cal_moment(dmr, constrain); - delete sc_lambda; - //const std::vector title = {"Total Magnetism (uB)", "", "", ""}; - //const std::vector fmts = {"%-26s", "%20.10f", "%20.10f", "%20.10f"}; - //FmtTable table(title, ucell.nat, fmts, {FmtTable::Align::RIGHT, FmtTable::Align::LEFT}); - for(int iat=0;iat #include +#include +#include -#include "source_io/read_input.h" +#include "module_parameter/read_input.h" #include "source_main/version.h" +#if defined(COMMIT_INFO) +#include "commit.h" +#endif + namespace ModuleIO { +/** + * @brief Format description for brief display in search results. + * + * Converts multi-line descriptions with list markers to single-line format: + * - Replaces newlines with spaces + * - Converts * list markers to - + * - Collapses multiple spaces + * - Truncates to max_length characters + */ +static std::string format_brief_description(const std::string& desc, size_t max_length = 60) { + std::string result; + result.reserve(desc.length()); + + bool prev_space = false; + bool at_line_start = true; + + for (size_t i = 0; i < desc.length(); ++i) { + char c = desc[i]; + + if (c == '\n') { + // Replace newline with space (collapse multiple) + if (!prev_space && !result.empty()) { + result += ' '; + prev_space = true; + } + at_line_start = true; + } else if (c == '*' && at_line_start) { + // Convert * list marker to - + result += '-'; + prev_space = false; + at_line_start = false; + } else if (c == ' ' || c == '\t') { + if (!prev_space && !result.empty()) { + result += ' '; + prev_space = true; + } + // Don't clear at_line_start for leading spaces + } else { + result += c; + prev_space = false; + at_line_start = false; + } + } + + // Trim trailing spaces + while (!result.empty() && result.back() == ' ') { + result.pop_back(); + } + + // Truncate if needed + if (result.length() > max_length) { + result = result.substr(0, max_length) + "..."; + } + + return result; +} + +void print_build_info() +{ + const int label_width = 30; + + auto print_section = [](const std::string& title) { + std::cout << std::endl; + std::cout << "----------------- " << title << " -----------------" << std::endl; + }; + + auto print_info = [label_width](const std::string& label, const std::string& value) { + std::cout << std::left << std::setw(label_width) << (label + ":") << " " << value << std::endl; + }; + + // --- 1. Core & Platform Info --- + print_section("ABACUS Core & Platform"); + print_info("ABACUS Version", VERSION); +#if defined(COMMIT) + print_info("Git Commit", COMMIT); +#else + print_info("Git Commit", "N/A"); +#endif + print_info("Target Platform", ABACUS_PLATFORM_NAME); + print_info("Build Type", ABACUS_BUILD_TYPE); + + // --- 2. Build Environment --- + print_section("Build Environment"); + print_info("Built By", ABACUS_BUILD_USER); + print_info("Built On", ABACUS_BUILD_HOST); + print_info("Built At", std::string(__DATE__) + " " + __TIME__); + + // --- 3. Compiler Info --- + print_section("Compiler & Flags"); + print_info("C++ Compiler", std::string(ABACUS_CXX_COMPILER_ID) + " (" + ABACUS_CXX_COMPILER_PATH + ")"); + print_info("C++ Compiler Ver", ABACUS_CXX_COMPILER_VERSION); + print_info("C++ Flags", ABACUS_CXX_FLAGS); + print_info("Linker Flags", ABACUS_LINKER_FLAGS); + print_info("CUDA Flags", ABACUS_CUDA_FLAGS); + + // --- 4. Sanitizers & Debugging --- + print_section("Sanitizers & Debugging"); + print_info("AddressSanitizer", ABACUS_ASAN_STATUS); + print_info("Debug Symbols", ABACUS_DEBUG_SYMBOLS); + + // --- 5. CMake Configuration Summary --- + print_section("CMake Configuration Summary"); + std::cout << ABACUS_CMAKE_OPTIONS << std::endl; + std::cout << std::endl; + std::cout << ABACUS_CMAKE_FIND_PACKAGES << std::endl; + + // --- 6. Parallelism & Communication --- + print_section("Parallelism & Communication"); + print_info("MPI Implementation", ABACUS_MPI_IMPLEMENTATION); + print_info("MPI Version", ABACUS_MPI_VERSION); + print_info("CUDA-aware MPI", ABACUS_CUDA_AWARE_MPI); + print_info("OpenMP Support", ABACUS_OPENMP_VERSION); + + // --- 7. Core Math Libraries --- + print_section("Core Math Libraries"); +#if defined(__LCAO) + print_info("LCAO Algorithm", "yes"); +#else + print_info("LCAO Algorithm", "no"); +#endif + print_info("ELPA Support", ABACUS_ELPA_VERSION); + print_info("MKL Support", ABACUS_MKL_SUPPORT); + print_info("LibXC Support", ABACUS_LIBXC_VERSION); + print_info("FFTW Support", ABACUS_FFTW_VERSION); + + // --- 8. Accelerators & Specific Hardware --- + print_section("Accelerators & Hardware"); + print_info("NVIDIA CUDA Support", ABACUS_CUDA_VERSION); + print_info("AMD ROCm Support", ABACUS_ROCM_VERSION); + print_info("CUSOLVERMP Support", ABACUS_CUSOLVERMP_VERSION); + + // --- 9. Hybrid Functional Libraries --- + print_section("Hybrid Functional Libraries"); + print_info("Cereal Serialization", ABACUS_CEREAL_VERSION); + print_info("LibRI Support", ABACUS_LIBRI_VERSION); + print_info("LibComm Support", ABACUS_LIBCOMM_VERSION); + + // --- 10. AI & Machine Learning --- + print_section("AI & Machine Learning"); + print_info("LibTorch Support", ABACUS_LIBTORCH_VERSION); + print_info("Libnpy Support", ABACUS_LIBNPY_VERSION); + print_info("DeePMD-kit Support", ABACUS_DEEPMD_VERSION); + print_info("NEP Support", ABACUS_NEP_VERSION); + print_info("TensorFlow Support", ABACUS_TENSORFLOW_VERSION); + + // --- 11. Testing & Other Libraries --- + print_section("Testing & Other Libraries"); + print_info("GTest Support", ABACUS_GTEST_VERSION); + print_info("Google Benchmark", ABACUS_GOOGLEBENCH_VERSION); + print_info("RapidJSON Support", ABACUS_RAPIDJSON_VERSION); + print_info("PEXSI Support", ABACUS_PEXSI_VERSION); + print_info("cnpy Support", ABACUS_CNPY_VERSION); + + std::cout << "----------------------------------------------------" << std::endl; + std::cout << std::endl; +} + void parse_args(int argc, char** argv) { for (int i = 1; i < argc; ++i) // Start from 1 to skip the program name @@ -16,7 +181,7 @@ void parse_args(int argc, char** argv) std::string arg = argv[i]; if (arg == "--version" || arg == "-v" || arg == "-V") { -#ifdef VERSION +#if defined(VERSION) const char* version = VERSION; #else const char* version = "unknown"; @@ -24,16 +189,97 @@ void parse_args(int argc, char** argv) std::cout << "ABACUS version " << version << std::endl; std::exit(0); } + else if (arg == "--info" || arg == "-i" || arg == "-I") + { + print_build_info(); + std::exit(0); + } + else if (arg == "-h" || arg == "--help") + { + // Handle -h or -h + if (i + 1 < argc) { + // Next argument exists - check if it's a parameter key + std::string next_arg = argv[i + 1]; + if (!next_arg.empty() && next_arg[0] != '-') { + // Not another flag - treat as parameter key + ParameterHelp::initialize(); + // When parameter is found, output to stdout; when not found, output to stderr + if (!ParameterHelp::show_parameter_help(next_arg, std::cout)) { + std::cerr << "Error: Unknown parameter '" << next_arg << "'" << std::endl; + + // Try to find similar parameters (fuzzy matching) + auto suggestions = ParameterHelp::find_similar_parameters(next_arg, 5, 3); + if (!suggestions.empty()) { + std::cerr << "\nDid you mean one of these?" << std::endl; + for (const auto& suggestion : suggestions) { + std::cerr << " - " << suggestion << std::endl; + } + } + + std::cerr << "\nUse 'abacus -s ' to search for parameters." << std::endl; + std::exit(1); + } + std::exit(0); + } + } + // No argument or next is a flag - show general help + ParameterHelp::show_general_help(); + std::exit(0); + } + else if (arg == "-s" || arg == "--search") + { + // Require search query + if (i + 1 >= argc || argv[i + 1][0] == '-') { + std::cerr << "Error: -s requires a search query" << std::endl; + std::exit(1); + } + + std::string query = argv[++i]; + + // Initialize help system + ParameterHelp::initialize(); + + auto results = ParameterHelp::search_parameters(query); + if (results.empty()) { + std::cerr << "No parameters found matching '" << query << "'" << std::endl; + std::exit(1); + } + + // Display results + std::cout << "\nFound " << results.size() << " parameter(s) matching '" << query << "':\n\n"; + for (const auto& param : results) { + auto metadata = ParameterHelp::get_metadata(param); + std::cout << " " << std::left << std::setw(30) << param; + if (!metadata.name.empty() && !metadata.description.empty()) { + // Format description for brief display + std::string desc = format_brief_description(metadata.description, 60); + std::cout << " - " << desc; + } + std::cout << std::endl; + } + std::cout << "\nUse 'abacus -h ' for detailed help." << std::endl; + std::exit(0); + } + else if (arg == "--generate-parameters-yaml") + { + ParameterHelp::generate_yaml(std::cout); + std::exit(0); + } else if (arg == "--check-input") { ModuleIO::ReadInput::check_mode = true; } else { - std::cerr << "Unknown argument: " << arg << std::endl; + // Error message goes to stderr + std::cerr << "Error: Unknown argument: " << arg << std::endl; + std::cerr << std::endl; + + // Display help information to stderr + ParameterHelp::show_general_help(std::cerr); std::exit(1); } } } -} // namespace ModuleIO \ No newline at end of file +} // namespace ModuleIO diff --git a/source/source_io/parse_args.h b/source/source_io/parse_args.h index c2a246946e..24d99ec5e6 100644 --- a/source/source_io/parse_args.h +++ b/source/source_io/parse_args.h @@ -4,8 +4,10 @@ namespace ModuleIO { /** - * @brief This function reture the version information when using command - * "abacus --version", "abacus -v" or "abacus -V". Otherwise, it does nothing. + * @brief This function returns the version information when using command + * "abacus --version", "abacus -v" or "abacus -V"; returns the compilation + * details when using command "abacus --info", "abacus -i" or "abacus -I"; + * otherwise, it returns usage. * * @param [in] argc (ARGument Count) is an integer variable that stores the number * of command-line arguments passed by the user including the name of the program. @@ -18,6 +20,7 @@ namespace ModuleIO * arguments. */ void parse_args(int argc, char** argv); +void print_build_info(); } // namespace ModuleIO -#endif \ No newline at end of file +#endif diff --git a/source/source_io/print_info.h b/source/source_io/print_info.h deleted file mode 100644 index 78672601c1..0000000000 --- a/source/source_io/print_info.h +++ /dev/null @@ -1,30 +0,0 @@ -//========================================================== -// AUTHOR : mohan -// DATE : 2021-01-30 -//========================================================== -#ifndef PRINT_INFO -#define PRINT_INFO - -#include "source_base/timer.h" -#include "source_basis/module_pw/pw_basis_k.h" -#include "source_cell/klist.h" -#include "source_cell/unitcell.h" -#include "source_io/module_parameter/input_parameter.h" - -namespace ModuleIO -{ - -// print out to screen about the readin parameters -void setup_parameters(UnitCell& ucell, K_Vectors& kv); -void print_time(time_t& time_start, time_t& time_finish); -void print_screen(const int& stress_step, const int& force_step, const int& istep); -//! Print charge density using FFT -void print_rhofft(ModulePW::PW_Basis* pw_rhod, - ModulePW::PW_Basis* pw_rho, - ModulePW::PW_Basis_Big* pw_big, - std::ofstream& ofs); -void print_wfcfft(const Input_para& inp, ModulePW::PW_Basis_K& pw_wfc, std::ofstream& ofs); - -} // namespace ModuleIO - -#endif diff --git a/source/source_io/read_input_item_deepks.cpp b/source/source_io/read_input_item_deepks.cpp deleted file mode 100644 index 15356ab0cf..0000000000 --- a/source/source_io/read_input_item_deepks.cpp +++ /dev/null @@ -1,202 +0,0 @@ -#include "source_base/constants.h" -#include "source_base/tool_quit.h" -#include "source_io/module_parameter/parameter.h" -#include "read_input.h" -#include "read_input_tool.h" -namespace ModuleIO -{ -void ReadInput::item_deepks() -{ - { - Input_Item item("deepks_out_labels"); - item.annotation = ">0 compute descriptor for deepks. 1 used during training, 2 used for label production"; - read_sync_int(input.deepks_out_labels); - this->add_item(item); - } - { - Input_Item item("deepks_out_freq_elec"); - item.annotation = ">0 frequency of electronic iteration to output descriptors and labels for deepks."; - read_sync_int(input.deepks_out_freq_elec); - item.reset_value = [](const Input_Item& item, Parameter& para) { - if (para.input.deepks_out_freq_elec < 0) - { - para.input.deepks_out_freq_elec = 0; - } - }; - this->add_item(item); - } - { - Input_Item item("deepks_scf"); - item.annotation = ">0 add V_delta to Hamiltonian"; - read_sync_bool(input.deepks_scf); - item.check_value = [](const Input_Item& item, const Parameter& para) { -#ifndef __MLALGO - if (para.input.deepks_scf || para.input.deepks_out_labels || para.input.deepks_bandgap - || para.input.deepks_v_delta) - { - ModuleBase::WARNING_QUIT("Input_conv", "please compile with DeePKS"); - } -#endif - // if (!para.input.deepks_scf && para.input.deepks_out_labels == 1) - // { - // ModuleBase::WARNING_QUIT("Input_conv", "deepks_out_labels = 1 requires deepks_scf = 1"); - // } - }; - this->add_item(item); - } - { - Input_Item item("deepks_equiv"); - item.annotation = "whether to use equivariant version of DeePKS"; - read_sync_bool(input.deepks_equiv); - item.reset_value = [](const Input_Item& item, Parameter& para) { - if (para.input.deepks_equiv && para.input.deepks_bandgap) - { - ModuleBase::WARNING_QUIT("ReadInput", "equivariant version of DeePKS is not implemented yet"); - } - }; - this->add_item(item); - } - { - Input_Item item("deepks_bandgap"); - item.annotation = ">0 for bandgap label"; - read_sync_int(input.deepks_bandgap); - item.check_value = [](const Input_Item& item, const Parameter& para) { - if (para.input.deepks_bandgap < 0 || para.input.deepks_bandgap > 3) - { - ModuleBase::WARNING_QUIT("ReadInput", "deepks_bandgap must be integer in [0, 3]"); - } - }; - this->add_item(item); - } - { - Input_Item item("deepks_band_range"); - item.annotation = "(int, int) range of bands for bandgap label"; - item.read_value = [](const Input_Item& item, Parameter& para) { - para.input.deepks_band_range[0] = std::stod(item.str_values[0]); - para.input.deepks_band_range[1] = std::stod(item.str_values[1]); - }; - sync_intvec(input.deepks_band_range, 2, 0); - item.check_value = [](const Input_Item& item, const Parameter& para) { - if (para.input.deepks_bandgap == 1) - { - if (para.input.deepks_band_range[0] >= para.input.deepks_band_range[1]) - { - ModuleBase::WARNING_QUIT("ReadInput", "deepks_band_range[0] must be smaller than deepks_band_range[1] for deepks_bandgap = 1."); - } - } - else if (para.input.deepks_bandgap == 2) - { - if (para.input.deepks_band_range[0] > para.input.deepks_band_range[1]) - { - ModuleBase::WARNING_QUIT("ReadInput", "deepks_band_range[0] must be no more than deepks_band_range[1] for deepks_bandgap = 2."); - } - } - else - { - if (para.input.deepks_band_range[0] != -1 || para.input.deepks_band_range[1] != 0) - { - ModuleBase::WARNING("ReadInput", "deepks_band_range is used for deepks_bandgap = 1/2. Ignore its setting for other cases."); - } - } - }; - this->add_item(item); - } - { - Input_Item item("deepks_v_delta"); - item.annotation = "!=0 for v_delta/v_delta_R label. when output, 1 for vdpre, 2 for phialpha and grad_evdm (can save memory )" - " -1 for vdrpre, -2 for phialpha_r and gevdm (can save memory)"; - read_sync_int(input.deepks_v_delta); - item.check_value = [](const Input_Item& item, const Parameter& para) { - if (para.input.deepks_v_delta < -2 || para.input.deepks_v_delta > 2) - { - ModuleBase::WARNING_QUIT("ReadInput", "deepks_v_delta must be integer in [-2, 2]"); - } - }; - this->add_item(item); - } - { - Input_Item item("deepks_out_unittest"); - item.annotation = "if set 1, prints intermediate quantities that shall " - "be used for making unit test"; - read_sync_bool(input.deepks_out_unittest); - item.reset_value = [](const Input_Item& item, Parameter& para) { - if (para.input.deepks_out_unittest) - { - para.input.deepks_out_labels = 1; - para.input.deepks_scf = true; - } - }; - item.check_value = [](const Input_Item& item, const Parameter& para) { - if (para.input.deepks_out_unittest) - { - if (para.input.cal_force != 1 || para.input.cal_stress != 1) - { - ModuleBase::WARNING_QUIT("ReadInput", - "force and stress are required in generating deepks unittest"); - } - } - }; - this->add_item(item); - } - { - Input_Item item("deepks_model"); - item.annotation = "file dir of traced pytorch model: 'model.ptg"; - read_sync_string(input.deepks_model); - this->add_item(item); - } - { - Input_Item item("bessel_descriptor_lmax"); - item.annotation = "lmax used in generating spherical bessel functions"; - read_sync_int(input.bessel_descriptor_lmax); - this->add_item(item); - } - { - Input_Item item("bessel_descriptor_ecut"); - item.annotation = "energy cutoff for spherical bessel functions(Ry)"; - read_sync_string(input.bessel_descriptor_ecut); - item.reset_value = [](const Input_Item& item, Parameter& para) { - if (para.input.bessel_descriptor_ecut == "default") - { - para.input.bessel_descriptor_ecut = std::to_string(para.input.ecutwfc); - } - }; - item.check_value = [](const Input_Item& item, const Parameter& para) { - if (std::stod(para.input.bessel_descriptor_ecut) < 0) - { - ModuleBase::WARNING_QUIT("ReadInput", "bessel_descriptor_ecut must >= 0"); - } - }; - this->add_item(item); - } - { - Input_Item item("bessel_descriptor_tolerence"); - item.annotation = "tolerence for spherical bessel root"; - read_sync_double(input.bessel_descriptor_tolerence); - this->add_item(item); - } - { - Input_Item item("bessel_descriptor_rcut"); - item.annotation = "radial cutoff for spherical bessel functions(a.u.)"; - read_sync_double(input.bessel_descriptor_rcut); - item.check_value = [](const Input_Item& item, const Parameter& para) { - if (para.input.bessel_descriptor_rcut < 0) - { - ModuleBase::WARNING_QUIT("ReadInput", "bessel_descriptor_rcut must >= 0"); - } - }; - this->add_item(item); - } - { - Input_Item item("bessel_descriptor_smooth"); - item.annotation = "spherical bessel smooth or not"; - read_sync_bool(input.bessel_descriptor_smooth); - this->add_item(item); - } - { - Input_Item item("bessel_descriptor_sigma"); - item.annotation = "sphereical bessel smearing_sigma"; - read_sync_double(input.bessel_descriptor_sigma); - this->add_item(item); - } -} -} // namespace ModuleIO diff --git a/source/source_io/read_input_item_elec_stru.cpp b/source/source_io/read_input_item_elec_stru.cpp deleted file mode 100644 index 8daabfdc0e..0000000000 --- a/source/source_io/read_input_item_elec_stru.cpp +++ /dev/null @@ -1,897 +0,0 @@ -#include "source_base/global_function.h" -#include "source_base/tool_quit.h" -#include "read_input.h" -#include "read_input_tool.h" - -namespace ModuleIO -{ -void ReadInput::item_elec_stru() -{ - // Electronic Structure - { - Input_Item item("ks_solver"); - item.annotation = "cg; dav; lapack; genelpa; elpa; scalapack_gvx; cusolver"; - read_sync_string(input.ks_solver); - item.reset_value = [](const Input_Item& item, Parameter& para) { - if (para.input.ks_solver == "default") - { - if (para.input.basis_type == "pw") - { - para.input.ks_solver = "cg"; - ModuleBase::GlobalFunc::AUTO_SET("ks_solver", "cg"); - } - else if (para.input.basis_type == "lcao") - { - if (para.input.device == "gpu") - { - para.input.ks_solver = "cusolver"; - ModuleBase::GlobalFunc::AUTO_SET("ks_solver", "cusolver"); - } - else - { -#ifdef __ELPA - para.input.ks_solver = "genelpa"; - ModuleBase::GlobalFunc::AUTO_SET("ks_solver", "genelpa"); -#else -#ifdef __MPI - para.input.ks_solver = "scalapack_gvx"; - ModuleBase::GlobalFunc::AUTO_SET("ks_solver", "scalapack_gvx"); -#else - para.input.ks_solver = "lapack"; - ModuleBase::GlobalFunc::AUTO_SET("ks_solver", "lapack"); -#endif -#endif - } - } - } - if (para.input.towannier90) - { - if (para.input.basis_type == "lcao_in_pw") - { -#ifdef __ELPA - para.input.ks_solver = "genelpa"; -#else -#ifdef __MPI - para.input.ks_solver = "scalapack_gvx"; -#else - para.input.ks_solver = "lapack"; -#endif -#endif - } - }; - }; - item.check_value = [](const Input_Item& item, const Parameter& para) { - const std::string& ks_solver = para.input.ks_solver; - const std::vector pw_solvers = {"cg", "dav", "bpcg", "dav_subspace"}; - const std::vector lcao_solvers = { - "genelpa", - "elpa", - "lapack", - "scalapack_gvx", - "cusolver", - "cusolvermp", - "pexsi", - "cg_in_lcao", - }; - - if (para.input.basis_type == "pw") - { - if (std::find(pw_solvers.begin(), pw_solvers.end(), ks_solver) == pw_solvers.end()) - { - const std::string warningstr = "For PW basis: " + nofound_str(pw_solvers, "ks_solver"); - ModuleBase::WARNING_QUIT("ReadInput", warningstr); - } - } - else if (para.input.basis_type == "lcao") - { - if (std::find(lcao_solvers.begin(), lcao_solvers.end(), ks_solver) == lcao_solvers.end()) - { - const std::string warningstr = "For LCAO basis: " + nofound_str(lcao_solvers, "ks_solver"); - ModuleBase::WARNING_QUIT("ReadInput", warningstr); - } - if (ks_solver == "cg_in_lcao") - { - GlobalV::ofs_warning << "cg_in_lcao is under testing" << std::endl; - } - else if (ks_solver == "genelpa") - { -#ifndef __ELPA - ModuleBase::WARNING_QUIT("Input", - "Can not use genelpa if abacus is not compiled with " - "ELPA. Please change " - "ks_solver to scalapack_gvx."); -#endif - } - else if (ks_solver == "elpa") - { -#ifndef __ELPA - ModuleBase::WARNING_QUIT("Input", - "Can not use elpa if abacus is not compiled with " - "ELPA. Please change " - "ks_solver to scalapack_gvx."); -#endif - } - - else if (ks_solver == "scalapack_gvx") - { -#ifdef __MPI - GlobalV::ofs_warning << "scalapack_gvx is under testing" << std::endl; -#else - ModuleBase::WARNING_QUIT("ReadInput", "scalapack_gvx can not be used for series version."); -#endif - } - else if (ks_solver == "cusolver" || ks_solver == "cusolvermp") - { - std::string warningstr; -#ifndef __MPI - ModuleBase::WARNING_QUIT("ReadInput", "Cusolver can not be used for series version."); -#endif -#ifndef __CUDA - warningstr = "ks_solver is set to " + ks_solver + " but ABACUS is built with CPU only!\n" - + " Please rebuild ABACUS with GPU support or change the ks_solver."; - ModuleBase::WARNING_QUIT("ReadInput", warningstr); -#endif - if( ks_solver == "cusolvermp") - { -#ifndef __CUSOLVERMP - warningstr = "ks_solver is set to cusolvermp, but ABACUS is not built with cusolvermp support\n" - " Please rebuild ABACUS with cusolvermp support or change the ks_solver."; - ModuleBase::WARNING_QUIT("ReadInput", warningstr); -#endif - } - } - else if (ks_solver == "pexsi") - { -#ifdef __PEXSI - GlobalV::ofs_warning << " It's ok to use pexsi." << std::endl; -#else - ModuleBase::WARNING_QUIT("ReadInput", - "Can not use PEXSI if abacus is not compiled with " - "PEXSI. Please change " - "ks_solver to scalapack_gvx."); -#endif - } - } - else if (para.input.basis_type == "lcao_in_pw") - { - if (ks_solver != "lapack") - { - ModuleBase::WARNING_QUIT("ReadInput", "LCAO in plane wave can only done with lapack."); - } - } - }; - this->add_item(item); - } - { - Input_Item item("basis_type"); - item.annotation = "PW; LCAO in pw; LCAO"; - read_sync_string(input.basis_type); - item.reset_value = [](const Input_Item& item, Parameter& para) { - if (para.input.towannier90) - { - if (para.input.basis_type == "lcao_in_pw") - { - para.input.basis_type = "lcao"; - } - } - }; - item.check_value = [](const Input_Item& item, const Parameter& para) { - const std::vector basis_types = {"pw", "lcao_in_pw", "lcao"}; - if (std::find(basis_types.begin(), basis_types.end(), para.input.basis_type) == basis_types.end()) - { - const std::string warningstr = nofound_str(basis_types, "basis_type"); - ModuleBase::WARNING_QUIT("ReadInput", warningstr); - } - }; - this->add_item(item); - } - { - Input_Item item("nbands"); - item.annotation = "number of bands"; - read_sync_int(input.nbands); - item.check_value = [](const Input_Item& item, const Parameter& para) { - if (para.input.nbands < 0) - { - ModuleBase::WARNING_QUIT("ReadInput", "nbands should be greater than 0."); - } - }; - this->add_item(item); - } - { - Input_Item item("nelec"); - item.annotation = "input number of electrons"; - item.check_value = [](const Input_Item& item, const Parameter& para) { - if (para.input.nelec < 0) - { - ModuleBase::WARNING_QUIT("ReadInput", "nelec should be greater than 0."); - } - if (para.input.nelec > 0 && para.input.nbands > 0 && para.input.nelec > 2 * para.input.nbands) - { - ModuleBase::WARNING_QUIT("ReadInput", "nelec > 2*nbnd , bands not enough!"); - } - }; - read_sync_double(input.nelec); - this->add_item(item); - } - { - Input_Item item("nelec_delta"); - item.annotation = "change in the number of total electrons"; - read_sync_double(input.nelec_delta); - this->add_item(item); - } - { - Input_Item item("nupdown"); - item.annotation = "the difference number of electrons between spin-up " - "and spin-down"; - item.read_value = [](const Input_Item& item, Parameter& para) { - para.input.nupdown = doublevalue; - para.sys.two_fermi = true; - }; - item.reset_value = [](const Input_Item&, Parameter& para) { - if (para.input.nspin == 1) - { - para.sys.two_fermi = false; - } - }; - item.check_value = [](const Input_Item&, const Parameter& para) { - if (para.input.nspin == 1 && para.input.nupdown != 0.0) - { - ModuleBase::WARNING_QUIT("ReadInput", "nupdown mustn't have a non-zero value for spin-unpolarized calculations."); - } - }; - sync_double(input.nupdown); - add_bool_bcast(sys.two_fermi); - this->add_item(item); - } - { - Input_Item item("dft_functional"); - item.annotation = "exchange correlation functional"; - read_sync_string(input.dft_functional); - this->add_item(item); - } - { - Input_Item item("xc_temperature"); - item.annotation = "temperature for finite temperature functionals"; - read_sync_double(input.xc_temperature); - this->add_item(item); - } - { - Input_Item item("xc_exch_ext"); - item.annotation = "placeholder for xcpnet exchange functional"; - item.read_value = [](const Input_Item& item, Parameter& para) { - para.input.xc_exch_ext.resize(item.get_size()); - std::transform(item.str_values.begin(), item.str_values.end(), - para.input.xc_exch_ext.begin(), - [](const std::string& str) { return std::stod(str); }); - }; - item.check_value = [](const Input_Item& item, const Parameter& para) { - // at least one value should be set - if (para.input.xc_exch_ext.empty()) - { - ModuleBase::WARNING_QUIT("ReadInput", "xc_exch_ext should not be empty."); - } - // the first value is actually an integer, not a double - const double libxc_id_dbl = para.input.xc_exch_ext[0]; - if (std::abs(libxc_id_dbl - std::round(libxc_id_dbl)) > 1.0e-6) - { - ModuleBase::WARNING_QUIT("ReadInput", - "The first parameter (libxc id) can never be a float number"); - } - // the first value is a positive integer - if (libxc_id_dbl < 0) - { - ModuleBase::WARNING_QUIT("ReadInput", - "The first parameter (libxc id) should be a positive integer"); - } - }; - sync_doublevec(input.xc_exch_ext, - para.input.xc_exch_ext.size(), - 0.0); - this->add_item(item); - } - { - Input_Item item("xc_corr_ext"); - item.annotation = "placeholder for xcpnet exchange functional"; - item.read_value = [](const Input_Item& item, Parameter& para) { - para.input.xc_corr_ext.resize(item.get_size()); - std::transform(item.str_values.begin(), item.str_values.end(), - para.input.xc_corr_ext.begin(), - [](const std::string& str) { return std::stod(str); }); - }; - item.check_value = [](const Input_Item& item, const Parameter& para) { - // at least one value should be set - if (para.input.xc_corr_ext.empty()) - { - ModuleBase::WARNING_QUIT("ReadInput", "xc_corr_ext should not be empty."); - } - // the first value is actually an integer, not a double - const double libxc_id_dbl = para.input.xc_corr_ext[0]; - if (std::abs(libxc_id_dbl - std::round(libxc_id_dbl)) > 1.0e-6) - { - ModuleBase::WARNING_QUIT("ReadInput", - "The first parameter (libxc id) can never be a float number"); - } - // the first value is a positive integer - if (libxc_id_dbl < 0) - { - ModuleBase::WARNING_QUIT("ReadInput", - "The first parameter (libxc id) should be a positive integer"); - } - }; - sync_doublevec(input.xc_corr_ext, - para.input.xc_corr_ext.size(), - 0.0); - this->add_item(item); - } - { - Input_Item item("pseudo_rcut"); - item.annotation = "default #exchange correlation functional"; - read_sync_double(input.pseudo_rcut); - this->add_item(item); - } - { - Input_Item item("pseudo_mesh"); - item.annotation = "0: use our own mesh to do radial renormalization; " - "1: use mesh as in QE"; - read_sync_bool(input.pseudo_mesh); - this->add_item(item); - } - { - Input_Item item("nspin"); - item.annotation = "1: single spin; 2: up and down spin; 4: noncollinear spin"; - read_sync_int(input.nspin); - item.reset_value = [](const Input_Item& item, Parameter& para) { - if (para.input.noncolin || para.input.lspinorb) - { - para.input.nspin = 4; - } - }; - item.check_value = [](const Input_Item& item, const Parameter& para) { - if (para.input.nspin != 1 && para.input.nspin != 2 && para.input.nspin != 4) - { - ModuleBase::WARNING_QUIT("ReadInput", "nspin should be 1, 2 or 4."); - } - }; - this->add_item(item); - } - { - Input_Item item("pw_diag_nmax"); - item.annotation = "max iteration number for cg"; - read_sync_int(input.pw_diag_nmax); - this->add_item(item); - } - { - Input_Item item("pw_diag_thr"); - item.annotation = "threshold for eigenvalues is cg electron iterations"; - read_sync_double(input.pw_diag_thr); - item.reset_value = [](const Input_Item& item, Parameter& para) { - if (para.input.calculation == "get_s" && para.input.basis_type == "pw") - { - if (para.input.pw_diag_thr > 1.0e-3) - { - para.input.pw_diag_thr = 1.0e-5; - } - } - }; - this->add_item(item); - } - { - Input_Item item("diago_smooth_ethr"); - item.annotation = "smooth ethr for iter methods"; - read_sync_bool(input.diago_smooth_ethr); - this->add_item(item); - } - { - Input_Item item("use_k_continuity"); - item.annotation = "whether to use k-point continuity for initializing wave functions"; - read_sync_bool(input.use_k_continuity); - item.check_value = [](const Input_Item& item, const Parameter& para) { - if (para.input.use_k_continuity && para.input.basis_type != "pw") { - ModuleBase::WARNING_QUIT("ReadInput", "use_k_continuity only works for PW basis"); - } - if (para.input.use_k_continuity && para.input.calculation == "nscf") { - ModuleBase::WARNING_QUIT("ReadInput", "use_k_continuity cannot work for NSCF calculation"); - } - if (para.input.use_k_continuity && para.input.nspin == 2) { - ModuleBase::WARNING_QUIT("ReadInput", "use_k_continuity cannot work for spin-polarized calculation"); - } - if (para.input.use_k_continuity && para.input.esolver_type == "sdft") { - ModuleBase::WARNING_QUIT("ReadInput", "use_k_continuity cannot work for SDFT calculation"); - } - }; - this->add_item(item); - } - { - Input_Item item("pw_diag_ndim"); - item.annotation = "dimension of workspace for Davidson diagonalization"; - read_sync_int(input.pw_diag_ndim); - this->add_item(item); - } - { - Input_Item item("diago_cg_prec"); - item.annotation = "diago_cg_prec"; - read_sync_int(input.diago_cg_prec); - this->add_item(item); - } - { - Input_Item item("smearing_method"); - item.annotation = "type of smearing_method: gauss; fd; fixed; mp; mp2; mv"; - read_sync_string(input.smearing_method); - item.check_value = [](const Input_Item& item, const Parameter& para) { - const std::vector methods = {"gauss", "gaussian", - "fd", "fermi-dirac", - "fixed", - "mp", "mp2", "mp3" - "marzari-vanderbilt", "cold", "mv"}; - if (std::find(methods.begin(), methods.end(), para.input.smearing_method) == methods.end()) - { - const std::string warningstr = nofound_str(methods, "smearing_method"); - ModuleBase::WARNING_QUIT("ReadInput", warningstr); - } - }; - this->add_item(item); - } - { - Input_Item item("smearing_sigma"); - item.annotation = "energy range for smearing"; - read_sync_double(input.smearing_sigma); - this->add_item(item); - } - { - // Energy range for smearing, - //`smearing_sigma` = 1/2 *kB* `smearing_sigma_temp`. - Input_Item tmp_item("smearing_sigma_temp"); - tmp_item.read_value - = [](const Input_Item& item, Parameter& para) { para.input.smearing_sigma = 3.166815e-6 * doublevalue; }; - // only to set smearing_sigma, so no need to write to output INPUT file - // or bcast. - this->add_item(tmp_item); - } - { - Input_Item item("mixing_type"); - item.annotation = "plain; pulay; broyden"; - read_sync_string(input.mixing_mode); - this->add_item(item); - } - { - Input_Item item("mixing_beta"); - item.annotation = "mixing parameter: 0 means no new charge"; - read_sync_double(input.mixing_beta); - item.reset_value = [](const Input_Item& item, Parameter& para) { - if (para.input.mixing_beta < 0.0) - { - if (para.input.nspin == 1) - { - para.input.mixing_beta = 0.8; - } - else if (para.input.nspin == 2) - { - para.input.mixing_beta = 0.4; - para.input.mixing_beta_mag = 1.6; - para.input.mixing_gg0_mag = 0.0; - } - else if (para.input.nspin == 4) // I will add this - { - para.input.mixing_beta = 0.4; - para.input.mixing_beta_mag = 1.6; - para.input.mixing_gg0_mag = 0.0; - } - } - }; - this->add_item(item); - } - { - Input_Item item("mixing_ndim"); - item.annotation = "mixing dimension in pulay or broyden"; - read_sync_int(input.mixing_ndim); - this->add_item(item); - } - { - Input_Item item("mixing_restart"); - item.annotation = "threshold to restart mixing during SCF"; - read_sync_double(input.mixing_restart); - item.reset_value = [](const Input_Item& item, Parameter& para) { - if (para.input.sc_mag_switch == 1) - {// for DeltaSpin calculation, the mixing_restart should be same as sc_scf_thr - if(para.input.sc_scf_thr != 10.0) - { - para.input.mixing_restart = para.input.sc_scf_thr; - } - else - {// no mixing_restart until oscillation happen in PW base - para.input.mixing_restart = para.input.scf_thr / 10.0; - } - } - }; - this->add_item(item); - } - { - Input_Item item("mixing_gg0"); - item.annotation = "mixing parameter in kerker"; - read_sync_double(input.mixing_gg0); - this->add_item(item); - } - { - Input_Item item("mixing_beta_mag"); - item.annotation = "mixing parameter for magnetic density"; - read_sync_double(input.mixing_beta_mag); - item.reset_value = [](const Input_Item& item, Parameter& para) { - if (para.input.mixing_beta_mag < 0.0) - { - if (para.input.nspin == 2 || para.input.nspin == 4) - { - if (para.input.mixing_beta <= 0.4) - { - para.input.mixing_beta_mag = 4 * para.input.mixing_beta; - } - else - { - para.input.mixing_beta_mag = 1.6; // 1.6 can be discussed - } - } - } - }; - this->add_item(item); - } - { - Input_Item item("mixing_gg0_mag"); - item.annotation = "mixing parameter in kerker"; - read_sync_double(input.mixing_gg0_mag); - this->add_item(item); - } - { - Input_Item item("mixing_gg0_min"); - item.annotation = "the minimum kerker coefficient"; - read_sync_double(input.mixing_gg0_min); - this->add_item(item); - } - { - Input_Item item("mixing_angle"); - item.annotation = "angle mixing parameter for non-colinear calculations"; - read_sync_double(input.mixing_angle); - this->add_item(item); - } - { - Input_Item item("mixing_tau"); - item.annotation = "whether to mix tau in mGGA calculation"; - read_sync_bool(input.mixing_tau); - this->add_item(item); - } - { - Input_Item item("mixing_dftu"); - item.annotation = "whether to mix locale in DFT+U calculation"; - read_sync_bool(input.mixing_dftu); - this->add_item(item); - } - { - Input_Item item("mixing_dmr"); - item.annotation = "whether to mix real-space density matrix"; - read_sync_bool(input.mixing_dmr); - this->add_item(item); - } - { - Input_Item item("gamma_only"); - item.annotation = "Only for localized orbitals set and gamma point. If " - "set to 1, a fast algorithm is used"; - read_sync_bool(input.gamma_only); - item.reset_value = [](const Input_Item& item, Parameter& para) { - if (para.input.basis_type == "pw" && para.input.gamma_only) - { - para.input.gamma_only = false; - GlobalV::ofs_warning << " WARNING : gamma_only has not been implemented for pw yet" << std::endl; - GlobalV::ofs_warning << "gamma_only is not supported in the pw model" << std::endl; - GlobalV::ofs_warning << " the INPUT parameter gamma_only has been reset to 0" << std::endl; - GlobalV::ofs_warning << " and a new KPT is generated with gamma point as the only k point"<< std::endl; - GlobalV::ofs_warning << " Auto generating k-points file: " << para.input.kpoint_file << std::endl; - std::ofstream ofs(para.input.kpoint_file.c_str()); - ofs << "K_POINTS" << std::endl; - ofs << "0" << std::endl; - ofs << "Gamma" << std::endl; - ofs << "1 1 1 0 0 0" << std::endl; - ofs.close(); - } - if (para.input.basis_type == "lcao" && para.input.gamma_only) - { - if (para.input.nspin == 4) - { - ModuleBase::WARNING_QUIT("NOTICE", "nspin=4 (soc or noncollinear-spin) does not support gamma\n only calculation"); - } - } - }; - this->add_item(item); - } - { - Input_Item item("scf_nmax"); - item.annotation = "number of electron iterations"; - read_sync_int(input.scf_nmax); - item.reset_value = [](const Input_Item& item, Parameter& para) { - if (para.input.calculation == "nscf") - { - para.input.scf_nmax = 1; - } - }; - this->add_item(item); - } - { - Input_Item item("scf_thr"); - item.annotation = "charge density error"; - read_sync_double(input.scf_thr); - item.reset_value = [](const Input_Item& item, Parameter& para) { - if (para.input.scf_thr == -1.0) - { - if (para.input.basis_type == "lcao" || para.input.basis_type == "lcao_in_pw") - { - para.input.scf_thr = 1.0e-7; - } - else if (para.input.basis_type == "pw" && para.input.calculation != "nscf") - { - para.input.scf_thr = 1.0e-9; - } - else if (para.input.basis_type == "pw" && para.input.calculation == "nscf") - { - para.input.scf_thr = 1.0e-6; - // In NSCF calculation, the diagonalization threshold is set - // to 0.1*scf/nelec. In other words, the scf_thr is used to - // control diagonalization convergence threthod in NSCF. In - // this case, the default 1.0e-9 is too strict. renxi - // 20230908 - } - } - }; - this->add_item(item); - } - { - Input_Item item("scf_ene_thr"); - item.annotation = "total energy error threshold"; - read_sync_double(input.scf_ene_thr); - this->add_item(item); - } - { - Input_Item item("scf_os_stop"); - item.annotation = "whether to stop scf when oscillation is detected"; - read_sync_bool(input.scf_os_stop); - this->add_item(item); - } - { - Input_Item item("scf_os_thr"); - item.annotation = "charge density threshold for oscillation"; - read_sync_double(input.scf_os_thr); - item.check_value = [](const Input_Item& item, const Parameter& para) { - if (para.input.scf_os_thr >= 0) - { - ModuleBase::WARNING_QUIT("ReadInput", "scf_os_thr should be negative"); - } - }; - this->add_item(item); - } - { - Input_Item item("scf_os_ndim"); - item.annotation = "number of old iterations used for oscillation detection"; - read_sync_int(input.scf_os_ndim); - item.reset_value = [](const Input_Item& item, Parameter& para) { - if (para.input.scf_os_ndim <= 0) // default value - { - para.input.scf_os_ndim = para.input.mixing_ndim; - } - }; - this->add_item(item); - } - { - Input_Item item("sc_os_ndim"); - item.annotation = "number of old iterations used for oscillation detection, for Spin-Constrained DFT"; - read_sync_int(input.sc_os_ndim); - this->add_item(item); - } - { - Input_Item item("scf_thr_type"); - item.annotation = "type of the criterion of scf_thr, 1: reci drho for " - "pw, 2: real drho for lcao"; - read_sync_int(input.scf_thr_type); - item.reset_value = [](const Input_Item& item, Parameter& para) { - if (para.input.scf_thr_type == -1) - { - if (para.input.basis_type == "lcao" || para.input.basis_type == "lcao_in_pw") - { - para.input.scf_thr_type = 2; - } - else if (para.input.basis_type == "pw") - { - para.input.scf_thr_type = 1; - } - } - }; - this->add_item(item); - } - { - Input_Item item("lspinorb"); - item.annotation = "consider the spin-orbit interaction"; - read_sync_bool(input.lspinorb); - this->add_item(item); - } - { - Input_Item item("noncolin"); - item.annotation = "using non-collinear-spin"; - read_sync_bool(input.noncolin); - this->add_item(item); - } - { - Input_Item item("soc_lambda"); - item.annotation = "The fraction of averaged SOC pseudopotential is " - "given by (1-soc_lambda)"; - read_sync_double(input.soc_lambda); - this->add_item(item); - } - - // LCAO - { - Input_Item item("nb2d"); - item.annotation = "matrix 2d division"; - read_sync_int(input.nb2d); - item.check_value = [](const Input_Item& item, const Parameter& para) { - if (para.input.nb2d < 0) - { - ModuleBase::WARNING_QUIT("ReadInput", "nb2d should be greater than 0"); - } - }; - this->add_item(item); - } - { - Input_Item item("lmaxmax"); - item.annotation = "maximum of l channels used"; - read_sync_int(input.lmaxmax); - this->add_item(item); - } - { - Input_Item item("lcao_ecut"); - item.annotation = "energy cutoff for LCAO"; - item.reset_value = [](const Input_Item& item, Parameter& para) { - if (para.input.lcao_ecut == 0 && para.input.basis_type == "lcao") - { - para.input.lcao_ecut = para.input.ecutwfc; - ModuleBase::GlobalFunc::AUTO_SET("lcao_ecut", para.input.ecutwfc); - } - }; - read_sync_double(input.lcao_ecut); - this->add_item(item); - } - { - Input_Item item("lcao_dk"); - item.annotation = "delta k for 1D integration in LCAO"; - read_sync_double(input.lcao_dk); - this->add_item(item); - } - { - Input_Item item("lcao_dr"); - item.annotation = "delta r for 1D integration in LCAO"; - read_sync_double(input.lcao_dr); - this->add_item(item); - } - { - Input_Item item("lcao_rmax"); - item.annotation = "max R for 1D two-center integration table"; - read_sync_double(input.lcao_rmax); - this->add_item(item); - } - { - Input_Item item("search_radius"); - item.annotation = "input search radius (Bohr)"; - read_sync_double(input.search_radius); - this->add_item(item); - } - { - Input_Item item("bx"); - item.annotation = "division of an element grid in FFT grid along x"; - read_sync_int(input.bx); - item.check_value = [](const Input_Item& item, const Parameter& para) { - if (para.input.bx > 10) - { - ModuleBase::WARNING_QUIT("ReadInput", "bx should be no more than 10"); - } - }; - item.reset_value = [](const Input_Item& item, Parameter& para) { - if (para.input.basis_type == "pw" || para.input.basis_type == "lcao_in_pw" - || para.input.calculation == "get_wf") - { - para.input.bx = 1; - para.input.by = 1; - para.input.bz = 1; - } - }; - this->add_item(item); - } - { - Input_Item item("by"); - item.annotation = "division of an element grid in FFT grid along y"; - read_sync_int(input.by); - item.check_value = [](const Input_Item& item, const Parameter& para) { - if (para.input.by > 10) - { - ModuleBase::WARNING_QUIT("ReadInput", "by should be no more than 10"); - } - }; - this->add_item(item); - } - { - Input_Item item("bz"); - item.annotation = "division of an element grid in FFT grid along z"; - read_sync_int(input.bz); - item.check_value = [](const Input_Item& item, const Parameter& para) { - if (para.input.bz > 10) - { - ModuleBase::WARNING_QUIT("ReadInput", "bz should be no more than 10"); - } - }; - this->add_item(item); - } - { - Input_Item item("elpa_num_thread"); - item.annotation = "Number of threads need to use in elpa"; - read_sync_int(input.elpa_num_thread); - this->add_item(item); - } - { - Input_Item item("num_stream"); - item.annotation = "the nstream in compute the LCAO with CUDA"; - read_sync_int(input.nstream); - this->add_item(item); - } - { - Input_Item item("bessel_nao_ecut"); - item.annotation = "energy cutoff for spherical bessel functions(Ry)"; - read_sync_string(input.bessel_nao_ecut); - item.reset_value = [](const Input_Item& item, Parameter& para) { - if (para.input.bessel_nao_ecut == "default") - { - para.input.bessel_nao_ecut = std::to_string(para.input.ecutwfc); - } - }; - item.check_value = [](const Input_Item& item, const Parameter& para) { - if (std::stod(para.input.bessel_nao_ecut) < 0) - { - ModuleBase::WARNING_QUIT("ReadInput", "bessel_nao_ecut must >= 0"); - } - }; - this->add_item(item); - } - { - Input_Item item("bessel_nao_tolerence"); - item.annotation = "tolerence for spherical bessel root"; - read_sync_double(input.bessel_nao_tolerence); - this->add_item(item); - } - { - Input_Item item("bessel_nao_rcut"); - item.annotation = "radial cutoff for spherical bessel functions(a.u.)"; - item.read_value = [](const Input_Item& item, Parameter& para) { - size_t count = item.get_size(); - for (int i = 0; i < count; i++) - { - para.input.bessel_nao_rcuts.push_back(std::stod(item.str_values[i])); - } - }; - item.check_value = [](const Input_Item& item, const Parameter& para) { - for(auto rcut: para.input.bessel_nao_rcuts) - { - if (rcut < 0) - { - ModuleBase::WARNING_QUIT("ReadInput", "bessel_nao_rcut must >= 0"); - } - } - }; - sync_doublevec(input.bessel_nao_rcuts, para.input.bessel_nao_rcuts.size(), 0.0); - this->add_item(item); - } - { - Input_Item item("bessel_nao_smooth"); - item.annotation = "spherical bessel smooth or not"; - read_sync_bool(input.bessel_nao_smooth); - this->add_item(item); - } - { - Input_Item item("bessel_nao_sigma"); - item.annotation = "spherical bessel smearing_sigma"; - read_sync_double(input.bessel_nao_sigma); - this->add_item(item); - } -} -} // namespace ModuleIO diff --git a/source/source_io/read_input_item_exx_dftu.cpp b/source/source_io/read_input_item_exx_dftu.cpp deleted file mode 100644 index 7f9edc633e..0000000000 --- a/source/source_io/read_input_item_exx_dftu.cpp +++ /dev/null @@ -1,583 +0,0 @@ -#include "source_base/constants.h" -#include "source_base/tool_quit.h" -#include "read_input.h" -#include "read_input_tool.h" -namespace ModuleIO -{ -void ReadInput::item_exx() -{ - // EXX - { - Input_Item item("exx_fock_alpha"); - item.annotation = "fraction of Fock exchange 1/r in hybrid functionals"; - item.read_value = [](const Input_Item& item, Parameter& para) - { - para.input.exx_fock_alpha = item.str_values; - }; - item.reset_value = [](const Input_Item& item, Parameter& para) - { - if (para.input.exx_fock_alpha.size()==1 && para.input.exx_fock_alpha[0]=="default") - { - std::string& dft_functional = para.input.dft_functional; - std::string dft_functional_lower = dft_functional; - std::transform(dft_functional.begin(), dft_functional.end(), dft_functional_lower.begin(), tolower); - if (dft_functional_lower == "hf" || - dft_functional_lower == "lc_pbe" || dft_functional_lower == "lc_wpbe" || - dft_functional_lower == "lrc_wpbe" || dft_functional_lower == "lrc_wpbeh" || - dft_functional_lower == "muller" || dft_functional_lower == "power" // added by jghan 2024-07-06 - || dft_functional_lower == "wp22" ) - { - para.input.exx_fock_alpha = {"1"}; - } - else if (dft_functional_lower == "pbe0" || dft_functional_lower == "scan0") - { - para.input.exx_fock_alpha = {"0.25"}; - } - else if (dft_functional_lower == "b3lyp") - { - para.input.exx_fock_alpha = {"0.2"}; - } - else if (dft_functional_lower == "cam_pbeh") - { - para.input.exx_fock_alpha = {"0.2"}; - } - else - { // no exx in scf, but will change to non-zero in postprocess like rpa - para.input.exx_fock_alpha = {}; - } - } - }; - sync_stringvec(input.exx_fock_alpha, para.input.exx_fock_alpha.size(), ""); - this->add_item(item); - } - { - Input_Item item("exx_erfc_alpha"); - item.annotation = "fraction of exchange erfc(wr)/r in hybrid functionals"; - item.read_value = [](const Input_Item& item, Parameter& para) - { - para.input.exx_erfc_alpha = item.str_values; - }; - item.reset_value = [](const Input_Item& item, Parameter& para) - { - if (para.input.exx_erfc_alpha.size()==1 && para.input.exx_erfc_alpha[0]=="default") - { - std::string& dft_functional = para.input.dft_functional; - std::string dft_functional_lower = dft_functional; - std::transform(dft_functional.begin(), dft_functional.end(), dft_functional_lower.begin(), tolower); - if (dft_functional_lower == "hse") - { - para.input.exx_erfc_alpha = {"0.25"}; - } - else if (dft_functional_lower == "lrc_wpbeh") - { - para.input.exx_erfc_alpha = {"-0.8"}; - } - else if (dft_functional_lower == "cam_pbeh") - { - para.input.exx_erfc_alpha = {"0.8"}; - } - else if (dft_functional_lower == "cwp22") - { - para.input.exx_erfc_alpha = {"1"}; - } - else if (dft_functional_lower == "lc_pbe" || dft_functional_lower == "lc_wpbe" || - dft_functional_lower == "lrc_wpbe" || dft_functional_lower == "wp22") - { - para.input.exx_erfc_alpha = {"-1"}; - } - else - { // no exx in scf, but will change to non-zero in postprocess like rpa - para.input.exx_erfc_alpha = {}; - } - } - }; - sync_stringvec(input.exx_erfc_alpha, para.input.exx_erfc_alpha.size(), ""); - this->add_item(item); - } - { - Input_Item item("exx_erfc_omega"); - item.annotation = "range-separation parameter erfc(wr)/r in hybrid functionals"; - item.read_value = [](const Input_Item& item, Parameter& para) - { - para.input.exx_erfc_omega = item.str_values; - }; - item.reset_value = [](const Input_Item& item, Parameter& para) - { - if (para.input.exx_erfc_omega.size()==1 && para.input.exx_erfc_omega[0]=="default") - { - std::string& dft_functional = para.input.dft_functional; - std::string dft_functional_lower = dft_functional; - std::transform(dft_functional.begin(), dft_functional.end(), dft_functional_lower.begin(), tolower); - if (dft_functional_lower == "hse" || dft_functional_lower == "cwp22" || dft_functional_lower == "wp22") - { - para.input.exx_erfc_omega = {"0.11"}; - } - else if (dft_functional_lower == "lc_pbe") - { - para.input.exx_erfc_omega = {"0.33"}; - } - else if (dft_functional_lower == "lc_wpbe") - { - para.input.exx_erfc_omega = {"0.4"}; - } - else if (dft_functional_lower == "lrc_wpbe") - { - para.input.exx_erfc_omega = {"0.3"}; - } - else if (dft_functional_lower == "lrc_wpbeh") - { - para.input.exx_erfc_omega = {"0.2"}; - } - else if (dft_functional_lower == "cam_pbeh") - { - para.input.exx_erfc_omega = {"0.7"}; - } - else - { - para.input.exx_erfc_omega = {}; - } - } - }; - sync_stringvec(input.exx_erfc_omega, para.input.exx_erfc_omega.size(), ""); - this->add_item(item); - } - { - Input_Item item("exx_fock_lambda"); - item.annotation = "used to compensate for divergence points at G=0 in " - "the evaluation of Fock exchange using " - "lcao_in_pw method"; - item.read_value = [](const Input_Item& item, Parameter& para) - { - para.input.exx_fock_lambda = item.str_values; - }; - item.reset_value = [](const Input_Item& item, Parameter& para) - { - if (para.input.exx_fock_lambda.size()==1 && para.input.exx_fock_lambda[0]=="default") - { - para.input.exx_fock_lambda = std::vector(para.input.exx_fock_alpha.size(), "0.3"); - } - }; - sync_stringvec(input.exx_fock_lambda, para.input.exx_fock_lambda.size(), ""); - this->add_item(item); - } - { - Input_Item item("exx_separate_loop"); - item.annotation = "if 1, a two-step method is employed, else it will " - "start with a GGA-Loop, and then Hybrid-Loop"; - read_sync_bool(input.exx_separate_loop); - this->add_item(item); - } - { - Input_Item item("exx_hybrid_step"); - item.annotation = "the maximal electronic iteration number in the " - "evaluation of Fock exchange"; - read_sync_int(input.exx_hybrid_step); - item.check_value = [](const Input_Item& item, const Parameter& para) - { - if (para.input.exx_hybrid_step <= 0) - { - ModuleBase::WARNING_QUIT("ReadInput", "exx_hybrid_step must > 0"); - } - }; - this->add_item(item); - } - { - Input_Item item("exx_mixing_beta"); - item.annotation = "mixing_beta for outer-loop when exx_separate_loop=1"; - read_sync_double(input.exx_mixing_beta); - this->add_item(item); - } - { - Input_Item item("exx_real_number"); - item.annotation = "exx calculated in real or complex"; - read_sync_string(input.exx_real_number); - item.reset_value = [](const Input_Item& item, Parameter& para) { - if (para.input.exx_real_number == "default") - { // to run through here, the default value of para.input.exx_real_number should be "default" - if (para.input.gamma_only) - { - para.input.exx_real_number = "1"; - } - else - { - para.input.exx_real_number = "0"; - } - } - }; - this->add_item(item); - } - { - Input_Item item("exx_singularity_correction"); - item.annotation = "set the scheme of Coulomb singularity correction"; - read_sync_string(input.exx_singularity_correction); - item.reset_value = [](const Input_Item& item, Parameter& para) { - if (para.input.exx_singularity_correction == "default") - { - std::string& dft_functional = para.input.dft_functional; - std::string dft_functional_lower = dft_functional; - std::transform(dft_functional.begin(), dft_functional.end(), dft_functional_lower.begin(), tolower); - if (dft_functional_lower == "hf" - || dft_functional_lower == "pbe0" || dft_functional_lower == "b3lyp" - || dft_functional_lower == "scan0" - || dft_functional_lower == "muller" || dft_functional_lower == "power" - || dft_functional_lower == "wp22" - || dft_functional_lower == "lc_pbe" - || dft_functional_lower == "lc_wpbe" - || dft_functional_lower == "lrc_wpbe" - || dft_functional_lower == "lrc_wpbeh" - || dft_functional_lower == "cam_pbeh") - { - para.input.exx_singularity_correction = "spencer"; - } - else if (dft_functional_lower == "hse" || dft_functional_lower == "cwp22") - { - para.input.exx_singularity_correction = "limits"; - } - } - }; - this->add_item(item); - } - { - Input_Item item("exx_pca_threshold"); - item.annotation = "threshold to screen on-site ABFs in exx"; - read_sync_double(input.exx_pca_threshold); - this->add_item(item); - } - { - Input_Item item("exx_c_threshold"); - item.annotation = "threshold to screen C matrix in exx"; - read_sync_double(input.exx_c_threshold); - this->add_item(item); - } - { - Input_Item item("exx_v_threshold"); - item.annotation = "threshold to screen C matrix in exx"; - read_sync_double(input.exx_v_threshold); - this->add_item(item); - } - { - Input_Item item("exx_dm_threshold"); - item.annotation = "threshold to screen density matrix in exx"; - read_sync_double(input.exx_dm_threshold); - this->add_item(item); - } - { - Input_Item item("exx_c_grad_threshold"); - item.annotation = "threshold to screen nabla C matrix in exx"; - read_sync_double(input.exx_c_grad_threshold); - this->add_item(item); - } - { - Input_Item item("exx_v_grad_threshold"); - item.annotation = "threshold to screen nabla V matrix in exx"; - read_sync_double(input.exx_v_grad_threshold); - this->add_item(item); - } - { - Input_Item item("exx_c_grad_r_threshold"); - item.annotation = "threshold to screen nabla C * R matrix in exx"; - read_sync_double(input.exx_c_grad_r_threshold); - this->add_item(item); - } - { - Input_Item item("exx_v_grad_r_threshold"); - item.annotation = "threshold to screen nabla V * R matrix in exx"; - read_sync_double(input.exx_v_grad_r_threshold); - this->add_item(item); - } - { - Input_Item item("exx_ccp_rmesh_times"); - item.annotation = "how many times larger the radial mesh required for " - "calculating Columb potential is to that " - "of atomic orbitals"; - read_sync_string(input.exx_ccp_rmesh_times); - item.reset_value = [](const Input_Item& item, Parameter& para) { - if (para.input.exx_ccp_rmesh_times == "default") - { // to run through here, the default value of para.input.exx_ccp_rmesh_times should be "default" - std::string& dft_functional = para.input.dft_functional; - std::string dft_functional_lower = dft_functional; - std::transform(dft_functional.begin(), dft_functional.end(), dft_functional_lower.begin(), tolower); - if (dft_functional_lower == "hf" || dft_functional_lower == "pbe0" || dft_functional_lower == "scan0") - { - para.input.exx_ccp_rmesh_times = "5"; - } - else if (dft_functional_lower == "hse") - { - para.input.exx_ccp_rmesh_times = "1.5"; - } - // added by jghan 2024-07-06 - else if (dft_functional_lower == "muller" || dft_functional_lower == "power") - { - para.input.exx_ccp_rmesh_times = "5"; - } - else if (dft_functional_lower == "wp22") - { - para.input.exx_ccp_rmesh_times = "5"; - // exx_ccp_rmesh_times = "1.5"; - } - else if (dft_functional_lower == "cwp22") - { - para.input.exx_ccp_rmesh_times = "1.5"; - } - else - { // no exx in scf - para.input.exx_ccp_rmesh_times = "1"; - } - } - }; - item.check_value = [](const Input_Item& item, const Parameter& para) { - if (std::stod(para.input.exx_ccp_rmesh_times) < 1) - { - ModuleBase::WARNING_QUIT("ReadInput", "exx_ccp_rmesh_times must >= 1"); - } - }; - this->add_item(item); - } - { - Input_Item item("exx_opt_orb_lmax"); - item.annotation = "the maximum l of the spherical Bessel functions for opt ABFs"; - read_sync_int(input.exx_opt_orb_lmax); - item.check_value = [](const Input_Item& item, const Parameter& para) { - if (para.input.exx_opt_orb_lmax < 0) - { - ModuleBase::WARNING_QUIT("ReadInput", "exx_opt_orb_lmax must >= 0"); - } - }; - this->add_item(item); - } - { - Input_Item item("exx_opt_orb_ecut"); - item.annotation = "the cut-off of plane wave expansion for opt ABFs"; - read_sync_double(input.exx_opt_orb_ecut); - item.check_value = [](const Input_Item& item, const Parameter& para) { - if (para.input.exx_opt_orb_ecut < 0) - { - ModuleBase::WARNING_QUIT("ReadInput", "exx_opt_orb_ecut must >= 0"); - } - }; - this->add_item(item); - } - { - Input_Item item("exx_opt_orb_tolerence"); - item.annotation = "the threshold when solving for the zeros of " - "spherical Bessel functions for opt ABFs"; - read_sync_double(input.exx_opt_orb_tolerence); - item.check_value = [](const Input_Item& item, const Parameter& para) { - if (para.input.exx_opt_orb_tolerence < 0) - { - ModuleBase::WARNING_QUIT("ReadInput", "exx_opt_orb_tolerence must >= 0"); - } - }; - this->add_item(item); - } - { - Input_Item item("exx_symmetry_realspace"); - item.annotation = "whether to reduce real-space sector in Hexx calculation"; - read_sync_bool(input.exx_symmetry_realspace); - item.reset_value = [](const Input_Item& item, Parameter& para) { - if (para.input.symmetry != "1") { para.input.exx_symmetry_realspace = false; } - }; - this->add_item(item); - } - { - Input_Item item("rpa_ccp_rmesh_times"); - item.annotation = "how many times larger the radial mesh required for " - "calculating Columb potential is to that " - "of atomic orbitals"; - read_sync_double(input.rpa_ccp_rmesh_times); - item.check_value = [](const Input_Item& item, const Parameter& para) { - if (para.input.rpa_ccp_rmesh_times < 1) - { - ModuleBase::WARNING_QUIT("ReadInput", "rpa_ccp_rmesh_times must >= 1"); - } - }; - this->add_item(item); - } - { - Input_Item item("out_ri_cv"); - item.annotation = "Whether to output the coefficient tensor C and ABFs-representation Coulomb matrix V"; - read_sync_bool(input.out_ri_cv); - this->add_item(item); - } -} -void ReadInput::item_dftu() -{ - // dft+u - { - Input_Item item("dft_plus_u"); - item.annotation = "DFT+U correction method"; - read_sync_int(input.dft_plus_u); - item.reset_value = [](const Input_Item& item, Parameter& para) { - bool all_minus1 = true; - for (auto& val: para.input.orbital_corr) - { - if (val != -1) - { - all_minus1 = false; - break; - } - } - if (all_minus1) - { - if (para.input.dft_plus_u != 0) - { - para.input.dft_plus_u = 0; - ModuleBase::WARNING("ReadInput", "No atoms are correlated, DFT+U is closed!!!"); - } - } - }; - item.check_value = [](const Input_Item& item, const Parameter& para) { - const Input_para& input = para.input; - if (input.dft_plus_u != 0) - { - if (input.basis_type == "pw" && input.nspin != 4) - { - ModuleBase::WARNING_QUIT("ReadInput", "WRONG ARGUMENTS, only nspin2 with PW base is not supported now"); - } - } - }; - this->add_item(item); - } - { - Input_Item item("dft_plus_dmft"); - item.annotation = "true:DFT+DMFT; false: standard DFT calcullation(default)"; - read_sync_bool(input.dft_plus_dmft); - item.check_value = [](const Input_Item& item, const Parameter& para) { - if (para.input.basis_type != "lcao" && para.input.dft_plus_dmft) - { - ModuleBase::WARNING_QUIT("ReadInput", "DFT+DMFT is only supported for lcao calculation."); - } - }; - this->add_item(item); - } - { - Input_Item item("yukawa_lambda"); - item.annotation = "default:0.0"; - read_sync_double(input.yukawa_lambda); - this->add_item(item); - } - { - Input_Item item("yukawa_potential"); - item.annotation = "default: false"; - read_sync_bool(input.yukawa_potential); - this->add_item(item); - } - { - Input_Item item("uramping"); - item.annotation = "increasing U values during SCF"; - item.read_value = [](const Input_Item& item, Parameter& para) { - para.input.uramping_eV = doublevalue; - para.sys.uramping = para.input.uramping_eV / ModuleBase::Ry_to_eV; - }; - item.reset_value = [](const Input_Item& item, Parameter& para) { - bool all_minus1 = true; - for (auto& val: para.input.orbital_corr) - { - if (val != -1) - { - all_minus1 = false; - break; - } - } - if (all_minus1) - { - if (para.sys.uramping != 0.0) - { - para.sys.uramping = 0.0; - ModuleBase::WARNING("ReadInput", "No atoms are correlated, U-ramping is closed!!!"); - } - } - }; - sync_double(input.uramping_eV); - add_double_bcast(sys.uramping); - this->add_item(item); - } - { - Input_Item item("omc"); - item.annotation = "the mode of occupation matrix control"; - read_sync_int(input.omc); - this->add_item(item); - } - { - Input_Item item("onsite_radius"); - item.annotation = "radius of the sphere for onsite projection (Bohr)"; - read_sync_double(input.onsite_radius); - item.reset_value = [](const Input_Item& item, Parameter& para) { - if ((para.input.dft_plus_u == 1 || para.input.sc_mag_switch) && para.input.onsite_radius == 0.0) - { - // autoset onsite_radius to 3.0 as default, this default value comes from the systematic atomic magnetism test - para.input.onsite_radius = 3.0; - } - }; - this->add_item(item); - } - { - Input_Item item("hubbard_u"); - item.annotation = "Hubbard Coulomb interaction parameter U(ev)"; - item.read_value = [](const Input_Item& item, Parameter& para) { - size_t count = item.get_size(); - for (int i = 0; i < count; i++) - { - para.input.hubbard_u_eV.push_back(std::stod(item.str_values[i])); - para.sys.hubbard_u.push_back(para.input.hubbard_u_eV[i] / ModuleBase::Ry_to_eV); - } - }; - item.check_value = [](const Input_Item& item, const Parameter& para) { - if (!item.is_read()) - { - return; - } - if (para.sys.hubbard_u.size() != para.input.ntype) - { - ModuleBase::WARNING_QUIT("ReadInput", - "hubbard_u should have the same " - "number of elements as ntype"); - } - for (auto& value: para.sys.hubbard_u) - { - if (value < -1.0e-3) - { - ModuleBase::WARNING_QUIT("ReadInput", "WRONG ARGUMENTS OF hubbard_u"); - } - } - }; - sync_doublevec(input.hubbard_u_eV, para.input.ntype, 0.0); - add_doublevec_bcast(sys.hubbard_u, para.input.ntype, 0.0); - this->add_item(item); - } - { - Input_Item item("orbital_corr"); - item.annotation = "which correlated orbitals need corrected ; d:2 " - ",f:3, do not need correction:-1"; - item.read_value = [](const Input_Item& item, Parameter& para) { - size_t count = item.get_size(); - for (int i = 0; i < count; i++) - { - para.input.orbital_corr.push_back(std::stoi(item.str_values[i])); - } - }; - - item.check_value = [](const Input_Item& item, const Parameter& para) { - if (!item.is_read()) - { - return; - } - if (para.input.orbital_corr.size() != para.input.ntype) - { - ModuleBase::WARNING_QUIT("ReadInput", - "orbital_corr should have the same " - "number of elements as ntype"); - } - for (auto& val: para.input.orbital_corr) - { - if (val < -1 || val > 3) - { - ModuleBase::WARNING_QUIT("ReadInput", "WRONG ARGUMENTS OF orbital_corr"); - } - } - }; - sync_intvec(input.orbital_corr, para.input.ntype, -1); - this->add_item(item); - } -} -} // namespace ModuleIO diff --git a/source/source_io/read_input_item_md.cpp b/source/source_io/read_input_item_md.cpp deleted file mode 100644 index 4ba795d63a..0000000000 --- a/source/source_io/read_input_item_md.cpp +++ /dev/null @@ -1,413 +0,0 @@ -#include "source_base/tool_quit.h" -#include "read_input.h" -#include "read_input_tool.h" - -namespace ModuleIO -{ -void ReadInput::item_md() -{ - // 9. Molecular dynamics - { - Input_Item item("md_type"); - item.annotation = "choose ensemble"; - read_sync_string(input.mdp.md_type); - this->add_item(item); - } - { - Input_Item item("md_thermostat"); - item.annotation = "choose thermostat"; - read_sync_string(input.mdp.md_thermostat); - this->add_item(item); - } - { - Input_Item item("md_nstep"); - item.annotation = "md steps"; - item.reset_value = [](const Input_Item& item, Parameter& para) { - if (para.input.mdp.md_nstep == 0 && para.input.esolver_type != "tddft") - { - GlobalV::ofs_running << "md_nstep should be set. Autoset md_nstep to 50!" << std::endl; - para.input.mdp.md_nstep = 50; - } - }; - read_sync_int(input.mdp.md_nstep); - this->add_item(item); - } - { - Input_Item item("md_dt"); - item.annotation = "time step"; - item.check_value = [](const Input_Item& item, const Parameter& para) { - if (para.input.mdp.md_dt < 0) { - ModuleBase::WARNING_QUIT("ReadInput", "time interval of MD calculation should be positive"); -} - }; - item.reset_value = [](const Input_Item& item, Parameter& para) { - if (para.input.td_dt != -1.0) - { - GlobalV::ofs_running << "td_dt exist, set md_dt with td_dt" << std::endl; - para.input.mdp.md_dt = para.input.td_dt * para.input.estep_per_md; - } - }; - read_sync_double(input.mdp.md_dt); - this->add_item(item); - } - { - Input_Item item("md_tchain"); - item.annotation = "number of Nose-Hoover chains"; - read_sync_int(input.mdp.md_tchain); - this->add_item(item); - } - { - Input_Item item("md_tfirst"); - item.annotation = "temperature first"; - read_sync_double(input.mdp.md_tfirst); - this->add_item(item); - } - { - Input_Item item("md_tlast"); - item.annotation = "temperature last"; - item.reset_value = [](const Input_Item& item, Parameter& para) { - if (para.mdp.md_tlast < 0) - { - para.input.mdp.md_tlast = para.mdp.md_tfirst; - } - }; - read_sync_double(input.mdp.md_tlast); - this->add_item(item); - } - { - Input_Item item("md_dumpfreq"); - item.annotation = "The period to dump MD information"; - read_sync_int(input.mdp.md_dumpfreq); - this->add_item(item); - } - { - Input_Item item("md_restartfreq"); - item.annotation = "The period to output MD restart information"; - read_sync_int(input.mdp.md_restartfreq); - this->add_item(item); - } - { - Input_Item item("md_seed"); - item.annotation = "random seed for MD"; - read_sync_int(input.mdp.md_seed); - this->add_item(item); - } - { - Input_Item item("md_prec_level"); - item.annotation = "precision level for vc-md"; - item.reset_value = [](const Input_Item& item, Parameter& para) { - if (para.input.calculation != "md") - { - para.input.mdp.md_prec_level = 0; - } - // md_prec_level only used in vc-md liuyu 2023-03-27 - else if (para.input.mdp.md_type != "msst" && para.input.mdp.md_type != "npt") - { - para.input.mdp.md_prec_level = 0; - } - }; - read_sync_int(input.mdp.md_prec_level); - this->add_item(item); - } - { - Input_Item item("ref_cell_factor"); - item.annotation = "construct a reference cell bigger than the initial cell"; - read_sync_double(input.ref_cell_factor); - this->add_item(item); - } - { - Input_Item item("md_restart"); - item.annotation = "whether restart"; - read_sync_bool(input.mdp.md_restart); - this->add_item(item); - } - { - Input_Item item("lj_rule"); - item.annotation = "combination rules used to construct the parameter matrix for LJ potential"; - item.check_value = [](const Input_Item& item, const Parameter& para) { - if (para.input.esolver_type == "lj" && para.input.mdp.lj_rule != 1 && para.input.mdp.lj_rule != 2) - { - ModuleBase::WARNING_QUIT("ReadInput", "lj_rule must be 1 or 2"); - } - }; - read_sync_int(input.mdp.lj_rule); - this->add_item(item); - } - { - Input_Item item("lj_eshift"); - item.annotation = "whether to use energy shift for LJ potential"; - read_sync_bool(input.mdp.lj_eshift); - this->add_item(item); - } - { - Input_Item item("lj_rcut"); - item.annotation = "cutoff radius of LJ potential"; - item.read_value = [](const Input_Item& item, Parameter& para) { - size_t count = item.get_size(); - para.input.mdp.lj_rcut.resize(count); - std::transform(begin(item.str_values), - end(item.str_values), - begin(para.input.mdp.lj_rcut), - [](std::string str) { return std::stod(str); }); - }; - item.check_value = [](const Input_Item& item, const Parameter& para) { - if (!item.is_read()) { - return; -} - size_t n_ljrcut = para.input.mdp.lj_rcut.size(); - if (n_ljrcut != 1 && n_ljrcut != para.input.ntype * (para.input.ntype + 1) / 2) - { - ModuleBase::WARNING_QUIT("ReadInput", " the number of lj_rcut should be 1 or ntype(ntype+1)/2 "); - } - for (auto rcut: para.input.mdp.lj_rcut) - { - if (rcut <= 0) - { - ModuleBase::WARNING_QUIT("ReadInput", "lj_rcut must > 0"); - } - } - }; - sync_doublevec(input.mdp.lj_rcut, para.input.mdp.lj_rcut.size(), 0.0); - this->add_item(item); - } - { - Input_Item item("lj_epsilon"); - item.annotation = "the value of epsilon for LJ potential"; - item.read_value = [](const Input_Item& item, Parameter& para) { - size_t count = item.get_size(); - para.input.mdp.lj_epsilon.resize(count); - std::transform(begin(item.str_values), - end(item.str_values), - begin(para.input.mdp.lj_epsilon), - [](std::string str) { return std::stod(str); }); - }; - item.check_value = [](const Input_Item& item, const Parameter& para) { - if (!item.is_read()) { - return; -} - size_t n_ljepsilon = para.input.mdp.lj_epsilon.size(); - if (n_ljepsilon != para.input.ntype && n_ljepsilon != para.input.ntype * (para.input.ntype + 1) / 2) - { - ModuleBase::WARNING_QUIT("ReadInput", " the number of lj_epsilon should be ntype or ntype(ntype+1)/2 "); - } - }; - sync_doublevec(input.mdp.lj_epsilon, para.input.mdp.lj_epsilon.size(), 0.0); - this->add_item(item); - } - { - Input_Item item("lj_sigma"); - item.annotation = "the value of sigma for LJ potential"; - item.read_value = [](const Input_Item& item, Parameter& para) { - size_t count = item.get_size(); - para.input.mdp.lj_sigma.resize(count); - std::transform(begin(item.str_values), - end(item.str_values), - begin(para.input.mdp.lj_sigma), - [](std::string str) { return std::stod(str); }); - }; - item.check_value = [](const Input_Item& item, const Parameter& para) { - if (!item.is_read()) { - return; -} - size_t n_ljsigma = para.input.mdp.lj_sigma.size(); - if (n_ljsigma != para.input.ntype && n_ljsigma != para.input.ntype * (para.input.ntype + 1) / 2) - { - ModuleBase::WARNING_QUIT("ReadInput", " the number of lj_sigma should be ntype or ntype(ntype+1)/2 "); - } - }; - sync_doublevec(input.mdp.lj_sigma, para.input.mdp.lj_sigma.size(), 0.0); - this->add_item(item); - } - { - Input_Item item("pot_file"); - item.annotation = "the filename of potential files for CMD such as DP"; - read_sync_string(input.mdp.pot_file); - this->add_item(item); - } - { - Input_Item item("dp_rescaling"); - item.annotation = "rescaling factor for dp potential"; - read_sync_double(input.mdp.dp_rescaling); - this->add_item(item); - } - { - Input_Item item("dp_fparam"); - item.annotation = "the frame parameter for dp potential"; - item.read_value = [](const Input_Item& item, Parameter& para) { - size_t count = item.get_size(); - para.input.mdp.dp_fparam.resize(count); - std::transform(begin(item.str_values), - end(item.str_values), - begin(para.input.mdp.dp_fparam), - [](std::string str) { return std::stod(str); }); - }; - sync_doublevec(input.mdp.dp_fparam, para.input.mdp.dp_fparam.size(), 0.0); - this->add_item(item); - } - { - Input_Item item("dp_aparam"); - item.annotation = "the atomic parameter for dp potential"; - item.read_value = [](const Input_Item& item, Parameter& para) { - size_t count = item.get_size(); - para.input.mdp.dp_aparam.resize(count); - std::transform(begin(item.str_values), - end(item.str_values), - begin(para.input.mdp.dp_aparam), - [](std::string str) { return std::stod(str); }); - }; - sync_doublevec(input.mdp.dp_aparam, para.input.mdp.dp_aparam.size(), 0.0); - this->add_item(item); - } - { - Input_Item item("msst_direction"); - item.annotation = "the direction of shock wave"; - read_sync_int(input.mdp.msst_direction); - this->add_item(item); - } - { - Input_Item item("msst_vel"); - item.annotation = "the velocity of shock wave"; - read_sync_double(input.mdp.msst_vel); - this->add_item(item); - } - { - Input_Item item("msst_vis"); - item.annotation = "artificial viscosity"; - read_sync_double(input.mdp.msst_vis); - this->add_item(item); - } - { - Input_Item item("msst_tscale"); - item.annotation = "reduction in initial temperature"; - read_sync_double(input.mdp.msst_tscale); - this->add_item(item); - } - { - Input_Item item("msst_qmass"); - item.annotation = "mass of thermostat"; - item.check_value = [](const Input_Item& item, const Parameter& para) { - if (para.input.mdp.msst_qmass <= 0) - { - ModuleBase::WARNING_QUIT("ReadInput", "msst_qmass must be greater than 0!"); - } - }; - read_sync_double(input.mdp.msst_qmass); - this->add_item(item); - } - { - Input_Item item("md_tfreq"); - item.annotation = "oscillation frequency, used to determine qmass of NHC"; - item.reset_value = [](const Input_Item& item, Parameter& para) { - if (para.input.mdp.md_tfreq == 0 && para.input.calculation == "md") - { - para.input.mdp.md_tfreq = 1.0 / 40 / para.input.mdp.md_dt; - } - }; - read_sync_double(input.mdp.md_tfreq); - this->add_item(item); - } - { - Input_Item item("md_damp"); - item.annotation = "damping parameter (time units) used to add force in " - "Langevin method"; - read_sync_double(input.mdp.md_damp); - this->add_item(item); - } - { - Input_Item item("md_nraise"); - item.annotation = "parameters used when md_type=nvt"; - read_sync_int(input.mdp.md_nraise); - this->add_item(item); - } - { - Input_Item item("cal_syns"); - item.annotation = "calculate asynchronous overlap matrix to output for Hefei-NAMD"; - read_sync_bool(input.cal_syns); - this->add_item(item); - } - { - Input_Item item("dmax"); - item.annotation = "maximum displacement of all atoms in one step (bohr)"; - read_sync_double(input.dmax); - this->add_item(item); - } - { - Input_Item item("md_tolerance"); - item.annotation = "tolerance for velocity rescaling (K)"; - read_sync_double(input.mdp.md_tolerance); - this->add_item(item); - } - { - Input_Item item("md_pmode"); - item.annotation = "NPT ensemble mode: iso, aniso, tri"; - read_sync_string(input.mdp.md_pmode); - this->add_item(item); - } - { - Input_Item item("md_pcouple"); - item.annotation = "whether couple different components: xyz, xy, yz, xz, none"; - item.reset_value = [](const Input_Item& item, Parameter& para) { - if (para.mdp.md_pmode == "iso") - { - para.input.mdp.md_pcouple = "xyz"; - } - }; - read_sync_string(input.mdp.md_pcouple); - this->add_item(item); - } - { - Input_Item item("md_pchain"); - item.annotation = "num of thermostats coupled with barostat"; - read_sync_int(input.mdp.md_pchain); - this->add_item(item); - } - { - Input_Item item("md_pfirst"); - item.annotation = "initial target pressure"; - read_sync_double(input.mdp.md_pfirst); - this->add_item(item); - } - { - Input_Item item("md_plast"); - item.annotation = "final target pressure"; - item.reset_value = [](const Input_Item& item, Parameter& para) { - if (!item.is_read()) { // no md_plast in INPUT - para.input.mdp.md_plast = para.input.mdp.md_pfirst; -} - }; - read_sync_double(input.mdp.md_plast); - this->add_item(item); - } - { - Input_Item item("md_pfreq"); - item.annotation = "oscillation frequency, used to determine qmass of " - "thermostats coupled with barostat"; - item.reset_value = [](const Input_Item& item, Parameter& para) { - if (para.input.mdp.md_pfreq == 0 && para.input.calculation == "md") - { - para.input.mdp.md_pfreq = 1.0 / 400 / para.input.mdp.md_dt; - } - }; - read_sync_double(input.mdp.md_pfreq); - this->add_item(item); - } - { - Input_Item item("dump_force"); - item.annotation = "output atomic forces into the file MD_dump or not"; - read_sync_bool(input.mdp.dump_force); - this->add_item(item); - } - { - Input_Item item("dump_vel"); - item.annotation = "output atomic velocities into the file MD_dump or not"; - read_sync_bool(input.mdp.dump_vel); - this->add_item(item); - } - { - Input_Item item("dump_virial"); - item.annotation = "output lattice virial into the file MD_dump or not"; - read_sync_bool(input.mdp.dump_virial); - this->add_item(item); - } -} -} // namespace ModuleIO diff --git a/source/source_io/read_input_item_model.cpp b/source/source_io/read_input_item_model.cpp deleted file mode 100644 index aa78e84400..0000000000 --- a/source/source_io/read_input_item_model.cpp +++ /dev/null @@ -1,375 +0,0 @@ -#include "source_base/global_function.h" -#include "source_base/tool_quit.h" -#include "read_input.h" -#include "read_input_tool.h" -namespace ModuleIO -{ -void ReadInput::item_model() -{ - // Electric field and dipole correction - { - Input_Item item("efield_flag"); - item.annotation = "add electric field"; - read_sync_bool(input.efield_flag); - this->add_item(item); - } - { - Input_Item item("dip_cor_flag"); - item.annotation = "dipole correction"; - item.check_value = [](const Input_Item& item, const Parameter& para) { - if (para.input.dip_cor_flag && !para.input.efield_flag) - { - ModuleBase::WARNING_QUIT("ReadInput", "dipole correction is not active if efield_flag=false !"); - } - }; - read_sync_bool(input.dip_cor_flag); - this->add_item(item); - } - { - Input_Item item("efield_dir"); - item.annotation = "the direction of the electric field or dipole correction"; - item.check_value = [](const Input_Item& item, const Parameter& para) { - if (para.input.gate_flag && para.input.efield_flag && !para.input.dip_cor_flag) - { - ModuleBase::WARNING_QUIT("ReadInput", - "gate field cannot be used with " - "efield if dip_cor_flag=false !"); - } - }; - read_sync_int(input.efield_dir); - this->add_item(item); - } - { - Input_Item item("efield_pos_max"); - item.annotation = "position of the maximum of the saw-like potential " - "along crystal axis efield_dir"; - read_sync_double(input.efield_pos_max); - this->add_item(item); - } - { - Input_Item item("efield_pos_dec"); - item.annotation = "zone in the unit cell where the saw-like potential decreases"; - read_sync_double(input.efield_pos_dec); - this->add_item(item); - } - { - Input_Item item("efield_amp"); - item.annotation = "amplitude of the electric field"; - read_sync_double(input.efield_amp); - this->add_item(item); - } - - // Gate field - { - Input_Item item("gate_flag"); - item.annotation = "compensating charge or not"; - read_sync_bool(input.gate_flag); - this->add_item(item); - } - { - Input_Item item("zgate"); - item.annotation = "position of charged plate"; - read_sync_double(input.zgate); - this->add_item(item); - } - - { - Input_Item item("block"); - item.annotation = "add a block potential or not"; - read_sync_bool(input.block); - this->add_item(item); - } - { - Input_Item item("block_down"); - item.annotation = "low bound of the block"; - read_sync_double(input.block_down); - this->add_item(item); - } - { - Input_Item item("block_up"); - item.annotation = "high bound of the block"; - read_sync_double(input.block_up); - this->add_item(item); - } - { - Input_Item item("block_height"); - item.annotation = "height of the block"; - read_sync_double(input.block_height); - this->add_item(item); - } - - // imlicit_solvation - { - Input_Item item("imp_sol"); - item.annotation = "calculate implicit solvation correction or not"; - read_sync_bool(input.imp_sol); - this->add_item(item); - } - { - Input_Item item("eb_k"); - item.annotation = "the relative permittivity of the bulk solvent"; - read_sync_double(input.eb_k); - this->add_item(item); - } - { - Input_Item item("tau"); - item.annotation = "the effective surface tension parameter"; - read_sync_double(input.tau); - this->add_item(item); - } - { - Input_Item item("sigma_k"); - item.annotation = "the width of the diffuse cavity"; - read_sync_double(input.sigma_k); - this->add_item(item); - } - { - Input_Item item("nc_k"); - item.annotation = "the cut-off charge density"; - read_sync_double(input.nc_k); - this->add_item(item); - } - - // vdW Correction - { - Input_Item item("vdw_method"); - item.annotation = "the method of calculating vdw (none ; d2 ; d3_0 ; d3_bj"; - read_sync_string(input.vdw_method); - this->add_item(item); - } - { - Input_Item item("vdw_s6"); - item.annotation = "scale parameter of d2/d3_0/d3_bj"; - item.reset_value = [](const Input_Item& item, Parameter& para) { - if (para.input.vdw_s6 == "default") - { - if (para.input.vdw_method == "d2") - { - para.input.vdw_s6 = "0.75"; - } - // else if (para.input.vdw_method == "d3_0" || para.input.vdw_method == "d3_bj") - // { - // para.input.vdw_s6 = "1.0"; - // } - } - }; - read_sync_string(input.vdw_s6); - this->add_item(item); - } - { - Input_Item item("vdw_s8"); - item.annotation = "scale parameter of d3_0/d3_bj"; - item.reset_value = [](const Input_Item& item, Parameter& para) { - // if (para.input.vdw_s8 == "default") - // { - // if (para.input.vdw_method == "d3_0") - // { - // para.input.vdw_s8 = "0.722"; - // } - // else if (para.input.vdw_method == "d3_bj") - // { - // para.input.vdw_s8 = "0.7875"; - // } - // } - }; - read_sync_string(input.vdw_s8); - this->add_item(item); - } - { - Input_Item item("vdw_a1"); - item.annotation = "damping parameter of d3_0/d3_bj"; - item.reset_value = [](const Input_Item& item, Parameter& para) { - // if (para.input.vdw_a1 == "default") - // { - // if (para.input.vdw_method == "d3_0") - // { - // para.input.vdw_a1 = "1.217"; - // } - // else if (para.input.vdw_method == "d3_bj") - // { - // para.input.vdw_a1 = "0.4289"; - // } - // } - }; - read_sync_string(input.vdw_a1); - this->add_item(item); - } - { - Input_Item item("vdw_a2"); - item.annotation = "damping parameter of d3_bj"; - item.reset_value = [](const Input_Item& item, Parameter& para) { - // if (para.input.vdw_a2 == "default") - // { - // if (para.input.vdw_method == "d3_0") - // { - // para.input.vdw_a2 = "1.0"; - // } - // else if (para.input.vdw_method == "d3_bj") - // { - // para.input.vdw_a2 = "4.4407"; - // } - // } - }; - read_sync_string(input.vdw_a2); - this->add_item(item); - } - { - Input_Item item("vdw_d"); - item.annotation = "damping parameter of d2"; - read_sync_double(input.vdw_d); - this->add_item(item); - } - { - Input_Item item("vdw_abc"); - item.annotation = "third-order term?"; - read_sync_bool(input.vdw_abc); - this->add_item(item); - } - { - Input_Item item("vdw_c6_file"); - item.annotation = "filename of C6"; - read_sync_string(input.vdw_C6_file); - this->add_item(item); - } - { - Input_Item item("vdw_c6_unit"); - item.annotation = "unit of C6, Jnm6/mol or eVA6"; - read_sync_string(input.vdw_C6_unit); - item.check_value = [](const Input_Item& item, const Parameter& para) { - if ((para.input.vdw_C6_unit != "Jnm6/mol") && (para.input.vdw_C6_unit != "eVA6")) - { - ModuleBase::WARNING_QUIT("ReadInput", "vdw_C6_unit must be Jnm6/mol or eVA6"); - } - }; - this->add_item(item); - } - { - Input_Item item("vdw_r0_file"); - item.annotation = "filename of R0"; - read_sync_string(input.vdw_R0_file); - this->add_item(item); - } - { - Input_Item item("vdw_r0_unit"); - item.annotation = "unit of R0, A or Bohr"; - read_sync_string(input.vdw_R0_unit); - item.check_value = [](const Input_Item& item, const Parameter& para) { - if ((para.input.vdw_R0_unit != "A") && (para.input.vdw_R0_unit != "Bohr")) - { - ModuleBase::WARNING_QUIT("ReadInput", "vdw_R0_unit must be A or Bohr"); - } - }; - this->add_item(item); - } - { - Input_Item item("vdw_cutoff_type"); - item.annotation = "expression model of periodic structure, radius or period"; - item.check_value = [](const Input_Item& item, const Parameter& para) { - if (para.input.vdw_cutoff_type != "radius" && para.input.vdw_cutoff_type != "period") - { - ModuleBase::WARNING_QUIT("ReadInput", "vdw_cutoff_type must be radius or period"); - } - }; - read_sync_string(input.vdw_cutoff_type); - this->add_item(item); - } - { - Input_Item item("vdw_cutoff_radius"); - item.annotation = "radius cutoff for periodic structure"; - item.reset_value = [](const Input_Item& item, Parameter& para) { - if (para.input.vdw_cutoff_radius == "default") - { - if (para.input.vdw_method == "d2") - { - para.input.vdw_cutoff_radius = "56.6918"; - } - else if (para.input.vdw_method == "d3_0" || para.input.vdw_method == "d3_bj") - { - para.input.vdw_cutoff_radius = "95"; - } - else - { - para.input.vdw_cutoff_radius = "0"; - } - } - }; - item.check_value = [](const Input_Item& item, const Parameter& para) { - if (std::stod(para.input.vdw_cutoff_radius) <= 0 && para.input.vdw_method != "none") - { - ModuleBase::WARNING_QUIT("ReadInput", "vdw_cutoff_radius <= 0 is not allowd"); - } - }; - read_sync_string(input.vdw_cutoff_radius); - this->add_item(item); - } - { - Input_Item item("vdw_radius_unit"); - item.annotation = "unit of radius cutoff for periodic structure"; - read_sync_string(input.vdw_radius_unit); - item.check_value = [](const Input_Item& item, const Parameter& para) { - if ((para.input.vdw_radius_unit != "A") && (para.input.vdw_radius_unit != "Bohr")) - { - ModuleBase::WARNING_QUIT("ReadInput", "vdw_radius_unit must be A or Bohr"); - } - }; - this->add_item(item); - } - { - Input_Item item("vdw_cn_thr"); - item.annotation = "radius cutoff for cn"; - read_sync_double(input.vdw_cn_thr); - item.check_value = [](const Input_Item& item, const Parameter& para) { - if (para.input.vdw_cn_thr <= 0) - { - ModuleBase::WARNING_QUIT("ReadInput", "vdw_cn_thr <= 0 is not allowd"); - } - }; - this->add_item(item); - } - { - Input_Item item("vdw_cn_thr_unit"); - item.annotation = "unit of cn_thr, Bohr or Angstrom"; - read_sync_string(input.vdw_cn_thr_unit); - item.check_value = [](const Input_Item& item, const Parameter& para) { - if ((para.input.vdw_cn_thr_unit != "A") && (para.input.vdw_cn_thr_unit != "Bohr")) - { - ModuleBase::WARNING_QUIT("ReadInput", "vdw_cn_thr_unit must be A or Bohr"); - } - }; - this->add_item(item); - } - { - Input_Item item("vdw_cutoff_period"); - item.annotation = "periods of periodic structure"; - item.read_value = [](const Input_Item& item, Parameter& para) { - size_t count = item.get_size(); - if (count == 3) - { - para.input.vdw_cutoff_period[0] = std::stoi(item.str_values[0]); - para.input.vdw_cutoff_period[1] = std::stoi(item.str_values[1]); - para.input.vdw_cutoff_period[2] = std::stoi(item.str_values[2]); - } - else - { - ModuleBase::WARNING_QUIT("ReadInput", "vdw_cutoff_period should have 3 values"); - } - }; - item.check_value = [](const Input_Item& item, const Parameter& para) { - if (para.input.vdw_cutoff_period[0] <= 0 || para.input.vdw_cutoff_period[1] <= 0 - || para.input.vdw_cutoff_period[2] <= 0) - { - ModuleBase::WARNING_QUIT("ReadInput", "vdw_cutoff_period should be positive"); - } - }; - item.get_final_value = [](Input_Item& item, const Parameter& para) { - item.final_value << para.input.vdw_cutoff_period[0] << " " << para.input.vdw_cutoff_period[1] << " " - << para.input.vdw_cutoff_period[2]; - }; -#ifdef __MPI - bcastfuncs.push_back( - [](Parameter& para) { Parallel_Common::bcast_int((int*)¶.input.vdw_cutoff_period, 3); }); -#endif - this->add_item(item); - } -} -} // namespace ModuleIO \ No newline at end of file diff --git a/source/source_io/read_input_item_ofdft.cpp b/source/source_io/read_input_item_ofdft.cpp deleted file mode 100644 index 794bbc4d30..0000000000 --- a/source/source_io/read_input_item_ofdft.cpp +++ /dev/null @@ -1,477 +0,0 @@ - -#include "source_base/global_function.h" -#include "source_base/tool_quit.h" -#include "read_input.h" -#include "read_input_tool.h" -namespace ModuleIO -{ -void ReadInput::item_ofdft() -{ - { - Input_Item item("of_kinetic"); - item.annotation = "kinetic energy functional, such as tf, vw, wt"; - item.check_value = [](const Input_Item& item, const Parameter& para) { -#ifndef __MLALGO - if (para.input.of_kinetic == "ml" || para.input.of_kinetic == "mpn" || para.input.of_kinetic == "cpn5") - { - ModuleBase::WARNING_QUIT("ReadInput", "ML KEDF is not supported."); - } -#endif - if (para.input.of_kinetic != "tf" && para.input.of_kinetic != "vw" && para.input.of_kinetic != "wt" - && para.input.of_kinetic != "xwm" && para.input.of_kinetic != "lkt" && para.input.of_kinetic != "tf+" - && para.input.of_kinetic != "ml" && para.input.of_kinetic != "mpn" && para.input.of_kinetic != "cpn5") - { - ModuleBase::WARNING_QUIT("ReadInput", "of_kinetic must be tf, vw, tf+, wt, xwm, lkt, ml, mpn, or cpn5"); - } - }; - item.reset_value = [](const Input_Item& item, Parameter& para) { - // Set the default parameters for MPN or CPN5 KEDF - if (para.input.of_kinetic == "mpn") - { - para.input.of_kinetic = "ml"; - - para.input.of_ml_feg = 3; - para.input.of_ml_nkernel = 1; - para.input.of_ml_kernel = {1}; - para.input.of_ml_kernel_scaling = {1.0}; - para.input.of_ml_yukawa_alpha = {1.0}; - para.input.of_ml_gamma = false; - para.input.of_ml_p = false; - para.input.of_ml_q = false; - para.input.of_ml_tanhp = true; - para.input.of_ml_tanhq = false; - para.input.of_ml_chi_p = 0.2; - para.input.of_ml_chi_q = 0.1; - para.input.of_ml_gammanl = {0}; - para.input.of_ml_pnl = {0}; - para.input.of_ml_qnl = {0}; - para.input.of_ml_xi = {0}; - para.input.of_ml_tanhxi = {1}; - para.input.of_ml_tanhxi_nl = {1}; - para.input.of_ml_tanh_pnl = {0}; - para.input.of_ml_tanh_qnl = {0}; - para.input.of_ml_tanhp_nl = {1}; - para.input.of_ml_tanhq_nl = {0}; - para.input.of_ml_chi_xi = {1.0}; - para.input.of_ml_chi_pnl = {0.2}; - para.input.of_ml_chi_qnl = {0.1}; - } - - if (para.input.of_kinetic == "cpn5") - { - para.input.of_kinetic = "ml"; - - para.input.of_ml_feg = 3; - para.input.of_ml_nkernel = 5; - para.input.of_ml_kernel = {1, 1, 1, 1, 1}; - para.input.of_ml_kernel_scaling = {2.0, 1.5, 1.0, 0.75, 0.5}; - para.input.of_ml_yukawa_alpha = {1.0, 1.0, 1.0, 1.0, 1.0}; - para.input.of_ml_gamma = false; - para.input.of_ml_p = false; - para.input.of_ml_q = false; - para.input.of_ml_tanhp = true; - para.input.of_ml_tanhq = false; - para.input.of_ml_chi_p = 0.2; - para.input.of_ml_chi_q = 0.1; - para.input.of_ml_gammanl = {0, 0, 0, 0, 0}; - para.input.of_ml_pnl = {0, 0, 0, 0, 0}; - para.input.of_ml_qnl = {0, 0, 0, 0, 0}; - para.input.of_ml_xi = {0, 0, 0, 0, 0}; - para.input.of_ml_tanhxi = {1, 1, 1, 1, 1}; - para.input.of_ml_tanhxi_nl = {1, 1, 1, 1, 1}; - para.input.of_ml_tanh_pnl = {0, 0, 0, 0, 0}; - para.input.of_ml_tanh_qnl = {0, 0, 0, 0, 0}; - para.input.of_ml_tanhp_nl = {1, 1, 1, 1, 1}; - para.input.of_ml_tanhq_nl = {0, 0, 0, 0, 0}; - para.input.of_ml_chi_xi = {0.6, 0.8, 1.0, 1.5, 3.0}; - para.input.of_ml_chi_pnl = {0.2, 0.2, 0.2, 0.2, 0.2}; - para.input.of_ml_chi_qnl = {0.1, 0.1, 0.1, 0.1, 0.1}; - } - }; - read_sync_string(input.of_kinetic); - this->add_item(item); - } - { - Input_Item item("of_method"); - item.annotation = "optimization method used in OFDFT, including cg1, " - "cg2, tn (default)"; - read_sync_string(input.of_method); - this->add_item(item); - } - { - Input_Item item("of_conv"); - item.annotation = "the convergence criterion, potential, energy (default), or both"; - read_sync_string(input.of_conv); - this->add_item(item); - } - { - Input_Item item("of_tole"); - item.annotation = "tolerance of the energy change (in Ry) for " - "determining the convergence, default=2e-6 Ry"; - read_sync_double(input.of_tole); - this->add_item(item); - } - { - Input_Item item("of_tolp"); - item.annotation = "tolerance of potential for determining the " - "convergence, default=1e-5 in a.u."; - read_sync_double(input.of_tolp); - this->add_item(item); - } - { - Input_Item item("of_tf_weight"); - item.annotation = "weight of TF KEDF"; - read_sync_double(input.of_tf_weight); - this->add_item(item); - } - { - Input_Item item("of_vw_weight"); - item.annotation = "weight of vW KEDF"; - read_sync_double(input.of_vw_weight); - this->add_item(item); - } - { - Input_Item item("of_wt_alpha"); - item.annotation = "parameter alpha of WT KEDF"; - read_sync_double(input.of_wt_alpha); - this->add_item(item); - } - { - Input_Item item("of_wt_beta"); - item.annotation = "parameter beta of WT KEDF"; - read_sync_double(input.of_wt_beta); - this->add_item(item); - } - { - Input_Item item("of_wt_rho0"); - item.annotation = "the average density of system, used in WT KEDF, in Bohr^-3"; - read_sync_double(input.of_wt_rho0); - this->add_item(item); - } - { - Input_Item item("of_hold_rho0"); - item.annotation = "If set to 1, the rho0 will be fixed even if the " - "volume of system has changed, it will be " - "set to 1 automaticly if of_wt_rho0 is not zero"; - read_sync_bool(input.of_hold_rho0); - item.reset_value = [](const Input_Item& item, Parameter& para) { - if (para.input.of_wt_rho0 != 0) - { - para.input.of_hold_rho0 = true; // sunliang add 2022-06-17 - } - }; - this->add_item(item); - } - { - Input_Item item("of_lkt_a"); - item.annotation = "parameter a of LKT KEDF"; - read_sync_double(input.of_lkt_a); - this->add_item(item); - } - { - Input_Item item("of_full_pw"); - item.annotation = "If set to 1, ecut will be ignored when collect " - "planewaves, so that all planewaves will be used"; - read_sync_bool(input.of_full_pw); - this->add_item(item); - } - { - Input_Item item("of_full_pw_dim"); - item.annotation = "If of_full_pw = true, dimention of FFT is " - "testricted to be (0) either odd or even; (1) odd " - "only; (2) even only"; - read_sync_int(input.of_full_pw_dim); - item.reset_value = [](const Input_Item& item, Parameter& para) { - if (!para.input.of_full_pw) - { - para.input.of_full_pw_dim = 0; // sunliang add 2022-08-31 - } - }; - this->add_item(item); - } - { - Input_Item item("of_read_kernel"); - item.annotation = "If set to 1, the kernel of WT KEDF will be filled " - "from file of_kernel_file, not from " - "formula. Only usable for WT KEDF"; - read_sync_bool(input.of_read_kernel); - item.reset_value = [](const Input_Item& item, Parameter& para) { - if (para.input.of_kinetic != "wt") - { - para.input.of_read_kernel = false; // sunliang add 2022-09-12 - } - }; - this->add_item(item); - } - { - Input_Item item("of_kernel_file"); - item.annotation = "The name of WT kernel file."; - read_sync_string(input.of_kernel_file); - this->add_item(item); - } - { - Input_Item item("of_xwm_kappa"); - item.annotation = "The parameter kappa of XWM KEDF"; - read_sync_double(input.of_xwm_kappa); - this->add_item(item); - } - { - Input_Item item("of_xwm_rho_ref"); - item.annotation = "The reference density of XWM KEDF"; - read_sync_double(input.of_xwm_rho_ref); - this->add_item(item); - } - { - Input_Item item("of_ml_gene_data"); - item.annotation = "Generate training data or not"; - read_sync_bool(input.of_ml_gene_data); - this->add_item(item); - } - { - Input_Item item("of_ml_device"); - item.annotation = "Run NN on GPU or CPU"; - read_sync_string(input.of_ml_device); - this->add_item(item); - } - { - Input_Item item("of_ml_feg"); - item.annotation = "The Free Electron Gas limit: 0: no, 3: yes"; - read_sync_int(input.of_ml_feg); - this->add_item(item); - } - { - Input_Item item("of_ml_nkernel"); - item.annotation = "Number of kernels"; - item.reset_value = [](const Input_Item& item, Parameter& para) { - if (para.input.of_ml_nkernel > 0) - { - reset_vector(para.input.of_ml_gammanl, para.input.of_ml_nkernel, 0); - reset_vector(para.input.of_ml_pnl, para.input.of_ml_nkernel, 0); - reset_vector(para.input.of_ml_qnl, para.input.of_ml_nkernel, 0); - reset_vector(para.input.of_ml_xi, para.input.of_ml_nkernel, 0); - reset_vector(para.input.of_ml_tanhxi, para.input.of_ml_nkernel, 0); - reset_vector(para.input.of_ml_tanhxi_nl, para.input.of_ml_nkernel, 0); - reset_vector(para.input.of_ml_tanh_pnl, para.input.of_ml_nkernel, 0); - reset_vector(para.input.of_ml_tanh_qnl, para.input.of_ml_nkernel, 0); - reset_vector(para.input.of_ml_tanhp_nl, para.input.of_ml_nkernel, 0); - reset_vector(para.input.of_ml_tanhq_nl, para.input.of_ml_nkernel, 0); - reset_vector(para.input.of_ml_chi_xi, para.input.of_ml_nkernel, 1.0); - reset_vector(para.input.of_ml_chi_pnl, para.input.of_ml_nkernel, 1.0); - reset_vector(para.input.of_ml_chi_qnl, para.input.of_ml_nkernel, 1.0); - reset_vector(para.input.of_ml_kernel, para.input.of_ml_nkernel, 1); - reset_vector(para.input.of_ml_kernel_scaling, para.input.of_ml_nkernel, 1.0); - reset_vector(para.input.of_ml_yukawa_alpha, para.input.of_ml_nkernel, 1.0); - std::string none = "none"; - reset_vector(para.input.of_ml_kernel_file, para.input.of_ml_nkernel, none); - } - }; - read_sync_int(input.of_ml_nkernel); - this->add_item(item); - } - { - Input_Item item("of_ml_kernel"); - item.annotation = "Type of kernel, 1 for wt, 2 for yukawa, and 3 for TKK"; - item.read_value = [](const Input_Item& item, Parameter& para) { - parse_expression(item.str_values, para.input.of_ml_kernel); - }; - sync_intvec(input.of_ml_kernel, para.input.of_ml_kernel.size(), 0); - this->add_item(item); - } - { - Input_Item item("of_ml_kernel_scaling"); - item.annotation = "Scaling parameter of kernel, w(r-r') = scaling^3 * w(scaling (r-r'))"; - item.read_value = [](const Input_Item& item, Parameter& para) { - parse_expression(item.str_values, para.input.of_ml_kernel_scaling); - }; - sync_doublevec(input.of_ml_kernel_scaling, para.input.of_ml_kernel_scaling.size(), 0); - this->add_item(item); - } - { - Input_Item item("of_ml_yukawa_alpha"); - item.annotation = "Parameter alpha of yukawa kernel"; - item.read_value = [](const Input_Item& item, Parameter& para) { - parse_expression(item.str_values, para.input.of_ml_yukawa_alpha); - }; - sync_doublevec(input.of_ml_yukawa_alpha, para.input.of_ml_yukawa_alpha.size(), 0); - this->add_item(item); - } - { - Input_Item item("of_ml_kernel_file"); - item.annotation = "The file of TKK"; - item.read_value = [](const Input_Item& item, Parameter& para) { - size_t count = item.get_size(); - for (int i = 0; i < count; i++) - { - para.input.of_ml_kernel_file.push_back(item.str_values[i]); - } - }; - sync_stringvec(input.of_ml_kernel_file, para.input.of_ml_kernel_file.size(), ""); - this->add_item(item); - } - { - Input_Item item("of_ml_gamma"); - item.annotation = "Descriptor: gamma = (rho / rho0)^(1/3)"; - read_sync_bool(input.of_ml_gamma); - this->add_item(item); - } - { - Input_Item item("of_ml_p"); - item.annotation = "Descriptor: p = |nabla rho|^2 / [2 (3 pi^2)^(1/3) rho^(4/3)]^2"; - read_sync_bool(input.of_ml_p); - this->add_item(item); - } - { - Input_Item item("of_ml_q"); - item.annotation = "Descriptor: q = nabla^2 rho / [4 (3 pi^2)^(2/3) rho^(5/3)]"; - read_sync_bool(input.of_ml_q); - this->add_item(item); - } - { - Input_Item item("of_ml_tanhp"); - item.annotation = "Descriptor: tanhp = tanh(chi_p * p)"; - read_sync_bool(input.of_ml_tanhp); - this->add_item(item); - } - { - Input_Item item("of_ml_tanhq"); - item.annotation = "Descriptor: tanhq = tanh(chi_q * q)"; - read_sync_bool(input.of_ml_tanhq); - this->add_item(item); - } - { - Input_Item item("of_ml_chi_p"); - item.annotation = "Hyperparameter: tanhp = tanh(chi_p * p)"; - read_sync_double(input.of_ml_chi_p); - this->add_item(item); - } - { - Input_Item item("of_ml_chi_q"); - item.annotation = "Hyperparameter: tanhq = tanh(chi_q * q)"; - read_sync_double(input.of_ml_chi_q); - this->add_item(item); - } - { - Input_Item item("of_ml_gammanl"); - item.annotation = "Descriptor: gammanl = int{gamma(r') * w(r-r') dr'}"; - item.read_value = [](const Input_Item& item, Parameter& para) { - parse_expression(item.str_values, para.input.of_ml_gammanl); - }; - sync_intvec(input.of_ml_gammanl, para.input.of_ml_gammanl.size(), 0); - this->add_item(item); - } - { - Input_Item item("of_ml_pnl"); - item.annotation = "Descriptor: pnl = int{p(r') * w(r-r') dr'}"; - item.read_value = [](const Input_Item& item, Parameter& para) { - parse_expression(item.str_values, para.input.of_ml_pnl); - }; - sync_intvec(input.of_ml_pnl, para.input.of_ml_pnl.size(), 0); - this->add_item(item); - } - { - Input_Item item("of_ml_qnl"); - item.annotation = "Descriptor: qnl = int{q(r') * w(r-r') dr'}"; - item.read_value = [](const Input_Item& item, Parameter& para) { - parse_expression(item.str_values, para.input.of_ml_qnl); - }; - sync_intvec(input.of_ml_qnl, para.input.of_ml_qnl.size(), 0); - this->add_item(item); - } - { - Input_Item item("of_ml_xi"); - item.annotation = "Descriptor: xi = int{rho(r')^(1/3) * w(r-r') dr'} / rho^(1/3)"; - item.read_value = [](const Input_Item& item, Parameter& para) { - parse_expression(item.str_values, para.input.of_ml_xi); - }; - sync_intvec(input.of_ml_xi, para.input.of_ml_xi.size(), 0); - this->add_item(item); - } - { - Input_Item item("of_ml_tanhxi"); - item.annotation = "Descriptor: tanhxi = tanh(chi_xi * xi)"; - item.read_value = [](const Input_Item& item, Parameter& para) { - parse_expression(item.str_values, para.input.of_ml_tanhxi); - }; - sync_intvec(input.of_ml_tanhxi, para.input.of_ml_tanhxi.size(), 0); - this->add_item(item); - } - { - Input_Item item("of_ml_tanhxi_nl"); - item.annotation = "Descriptor: tanhxi_nl = int{tanhxi(r') * w(r-r') dr'}"; - item.read_value = [](const Input_Item& item, Parameter& para) { - parse_expression(item.str_values, para.input.of_ml_tanhxi_nl); - }; - sync_intvec(input.of_ml_tanhxi_nl, para.input.of_ml_tanhxi_nl.size(), 0); - this->add_item(item); - } - { - Input_Item item("of_ml_tanh_pnl"); - item.annotation = "Descriptor: tanh_pnl = tanh(chi_pnl * pnl)"; - item.read_value = [](const Input_Item& item, Parameter& para) { - parse_expression(item.str_values, para.input.of_ml_tanh_pnl); - }; - sync_intvec(input.of_ml_tanh_pnl, para.input.of_ml_tanh_pnl.size(), 0); - this->add_item(item); - } - { - Input_Item item("of_ml_tanh_qnl"); - item.annotation = "Descriptor: tanh_qnl = tanh(chi_qnl * qnl)"; - item.read_value = [](const Input_Item& item, Parameter& para) { - parse_expression(item.str_values, para.input.of_ml_tanh_qnl); - }; - sync_intvec(input.of_ml_tanh_qnl, para.input.of_ml_tanh_qnl.size(), 0); - this->add_item(item); - } - { - Input_Item item("of_ml_tanhp_nl"); - item.annotation = "Descriptor: tanhp_nl = int{tanhp(r') * w(r-r') dr'}"; - item.read_value = [](const Input_Item& item, Parameter& para) { - parse_expression(item.str_values, para.input.of_ml_tanhp_nl); - }; - sync_intvec(input.of_ml_tanhp_nl, para.input.of_ml_tanhp_nl.size(), 0); - this->add_item(item); - } - { - Input_Item item("of_ml_tanhq_nl"); - item.annotation = "Descriptor: tanhq_nl = int{tanhq(r') * w(r-r') dr'}"; - item.read_value = [](const Input_Item& item, Parameter& para) { - parse_expression(item.str_values, para.input.of_ml_tanhq_nl); - }; - sync_intvec(input.of_ml_tanhq_nl, para.input.of_ml_tanhq_nl.size(), 0); - this->add_item(item); - } - { - Input_Item item("of_ml_chi_xi"); - item.annotation = "Hyperparameter: tanhpxi = tanh(chi_xi * xi)"; - item.read_value = [](const Input_Item& item, Parameter& para) { - parse_expression(item.str_values, para.input.of_ml_chi_xi); - }; - sync_doublevec(input.of_ml_chi_xi, para.input.of_ml_chi_xi.size(), 0); - this->add_item(item); - } - { - Input_Item item("of_ml_chi_pnl"); - item.annotation = "Hyperparameter: tanh_pnl = tanh(chi_pnl * pnl)"; - item.read_value = [](const Input_Item& item, Parameter& para) { - parse_expression(item.str_values, para.input.of_ml_chi_pnl); - }; - sync_doublevec(input.of_ml_chi_pnl, para.input.of_ml_chi_pnl.size(), 0); - this->add_item(item); - } - { - Input_Item item("of_ml_chi_qnl"); - item.annotation = "Hyperparameter: tanh_qnl = tanh(chi_qnl * qnl)"; - item.read_value = [](const Input_Item& item, Parameter& para) { - parse_expression(item.str_values, para.input.of_ml_chi_qnl); - }; - sync_doublevec(input.of_ml_chi_qnl, para.input.of_ml_chi_qnl.size(), 0); - this->add_item(item); - } - { - Input_Item item("of_ml_local_test"); - item.annotation = "Test: read in the density, and output the F and Pauli potential"; - read_sync_bool(input.of_ml_local_test); - this->add_item(item); - } -} -} // namespace ModuleIO \ No newline at end of file diff --git a/source/source_io/read_input_item_other.cpp b/source/source_io/read_input_item_other.cpp deleted file mode 100644 index 5694c7b33b..0000000000 --- a/source/source_io/read_input_item_other.cpp +++ /dev/null @@ -1,550 +0,0 @@ -#include "source_base/global_function.h" -#include "source_base/tool_quit.h" -#include "read_input.h" -#include "read_input_tool.h" - -#include -#include -#include - -namespace ModuleIO -{ -void ReadInput::item_others() -{ - // non-collinear spin-constrained - { - Input_Item item("sc_mag_switch"); - item.annotation = "switch to control spin-constrained DFT"; - read_sync_bool(input.sc_mag_switch); - item.check_value = [](const Input_Item& item, const Parameter& para) { - if (para.input.sc_mag_switch) - { - ModuleBase::WARNING_QUIT("ReadInput", - "This feature is not stable yet and might lead to " - "erroneous results.\n" - " Please wait for the official release version."); - // if (para.input.nspin != 4 && para.input.nspin != 2) - // { - // ModuleBase::WARNING_QUIT("ReadInput", "nspin must be 2 or - // 4 when sc_mag_switch > 0"); - // } - // if (para.input.calculation != "scf") - // { - // ModuleBase::WARNING_QUIT("ReadInput", "calculation must - // be scf when sc_mag_switch > 0"); - // } - // if (para.input.nupdown > 0.0) - // { - // ModuleBase::WARNING_QUIT("ReadInput", "nupdown should not - // be set when sc_mag_switch > 0"); - // } - } - }; - this->add_item(item); - } - { - Input_Item item("decay_grad_switch"); - item.annotation = "switch to control gradient break condition"; - read_sync_bool(input.decay_grad_switch); - this->add_item(item); - } - { - Input_Item item("sc_thr"); - item.annotation = "Convergence criterion of spin-constrained iteration (RMS) in uB"; - read_sync_double(input.sc_thr); - item.check_value = [](const Input_Item& item, const Parameter& para) { - if (para.input.sc_thr < 0) - { - ModuleBase::WARNING_QUIT("ReadInput", "sc_thr must >= 0"); - } - }; - this->add_item(item); - } - { - Input_Item item("nsc"); - item.annotation = "Maximal number of spin-constrained iteration"; - read_sync_int(input.nsc); - item.check_value = [](const Input_Item& item, const Parameter& para) { - if (para.input.nsc <= 0) - { - ModuleBase::WARNING_QUIT("ReadInput", "nsc must > 0"); - } - }; - this->add_item(item); - } - { - Input_Item item("nsc_min"); - item.annotation = "Minimum number of spin-constrained iteration"; - read_sync_int(input.nsc_min); - item.check_value = [](const Input_Item& item, const Parameter& para) { - if (para.input.nsc_min <= 0) - { - ModuleBase::WARNING_QUIT("ReadInput", "nsc_min must > 0"); - } - }; - this->add_item(item); - } - { - Input_Item item("sc_scf_nmin"); - item.annotation = "Minimum number of outer scf loop before " - "initializing lambda loop"; - read_sync_int(input.sc_scf_nmin); - item.check_value = [](const Input_Item& item, const Parameter& para) { - if (para.input.sc_scf_nmin < 2) - { - ModuleBase::WARNING_QUIT("ReadInput", "sc_scf_nmin must >= 2"); - } - }; - this->add_item(item); - } - { - Input_Item item("alpha_trial"); - item.annotation = "Initial trial step size for lambda in eV/uB^2"; - read_sync_double(input.alpha_trial); - item.check_value = [](const Input_Item& item, const Parameter& para) { - if (para.input.alpha_trial <= 0) - { - ModuleBase::WARNING_QUIT("ReadInput", "alpha_trial must > 0"); - } - }; - this->add_item(item); - } - { - Input_Item item("sccut"); - item.annotation = "Maximal step size for lambda in eV/uB"; - read_sync_double(input.sccut); - item.check_value = [](const Input_Item& item, const Parameter& para) { - if (para.input.sccut <= 0) - { - ModuleBase::WARNING_QUIT("ReadInput", "sccut must > 0"); - } - }; - this->add_item(item); - } - { - Input_Item item("sc_drop_thr"); - item.annotation = "Convergence criterion ratio of lambda iteration in Spin-constrained DFT"; - read_sync_double(input.sc_drop_thr); - this->add_item(item); - } - { - Input_Item item("sc_scf_thr"); - item.annotation = "Density error threshold for inner loop of spin-constrained SCF"; - read_sync_double(input.sc_scf_thr); - item.check_value = [](const Input_Item& item, const Parameter& para) { - if (para.input.sc_scf_thr <= 0.0) - { - ModuleBase::WARNING_QUIT("ReadInput", "sc_scf_thr must > 0.0"); - } - }; - this->add_item(item); - } - - // Quasiatomic Orbital analysis - { - Input_Item item("qo_switch"); - item.annotation = "switch to control quasiatomic orbital analysis"; - read_sync_bool(input.qo_switch); - this->add_item(item); - } - { - Input_Item item("qo_basis"); - item.annotation = "type of QO basis function: hydrogen: hydrogen-like " - "basis, pswfc: read basis from pseudopotential"; - read_sync_string(input.qo_basis); - this->add_item(item); - } - { - Input_Item item("qo_thr"); - item.annotation = "accuracy for evaluating cutoff radius of QO basis function"; - read_sync_double(input.qo_thr); - item.check_value = [](const Input_Item& item, const Parameter& para) { - if (para.input.qo_thr > 1e-6) - { - ModuleBase::WARNING("ReadInput", - "too high the convergence threshold might " - "yield unacceptable result"); - } - }; - this->add_item(item); - } - { - Input_Item item("qo_strategy"); - item.annotation = "strategy to generate generate radial orbitals"; - item.read_value = [](const Input_Item& item, Parameter& para) { - size_t count = item.get_size(); - for (int i = 0; i < count; i++) - { - para.input.qo_strategy.push_back(item.str_values[i]); - } - }; - item.reset_value = [](const Input_Item& item, Parameter& para) { - if (para.input.qo_strategy.size() != para.input.ntype) - { - if (para.input.qo_strategy.size() == 1) - { - para.input.qo_strategy.resize(para.input.ntype, para.input.qo_strategy[0]); - } - else - { - std::string default_strategy; - if (para.input.qo_basis == "hydrogen") - { - default_strategy = "energy-valence"; - } - else if ((para.input.qo_basis == "pswfc") || (para.input.qo_basis == "szv")) - { - default_strategy = "all"; - } - else - { - ModuleBase::WARNING_QUIT("ReadInput", - "When setting default values for qo_strategy, " - "unexpected/unknown " - "qo_basis is found. Please check it."); - } - para.input.qo_strategy.resize(para.input.ntype, default_strategy); - } - } - }; - sync_stringvec(input.qo_strategy, para.input.ntype, "all"); - this->add_item(item); - } - { - Input_Item item("qo_screening_coeff"); - item.annotation = "rescale the shape of radial orbitals"; - item.read_value = [](const Input_Item& item, Parameter& para) { - size_t count = item.get_size(); - for (int i = 0; i < count; i++) - { - para.input.qo_screening_coeff.push_back(std::stod(item.str_values[i])); - } - }; - item.reset_value = [](const Input_Item& item, Parameter& para) { - if (!item.is_read()) - { - return; - } - if (para.input.qo_screening_coeff.size() != para.input.ntype) - { - if (para.input.qo_basis == "pswfc") - { - double default_screening_coeff - = (para.input.qo_screening_coeff.size() == 1) ? para.input.qo_screening_coeff[0] : 0.1; - para.input.qo_screening_coeff.resize(para.input.ntype, default_screening_coeff); - } - else - { - ModuleBase::WARNING_QUIT("ReadInput", - "qo_screening_coeff should have the same number of " - "elements as ntype"); - } - } - }; - item.check_value = [](const Input_Item& item, const Parameter& para) { - for (auto screen_coeff: para.input.qo_screening_coeff) - { - if (screen_coeff < 0) - { - ModuleBase::WARNING_QUIT("ReadInput", - "screening coefficient must >= 0 " - "to tune the pswfc decay"); - } - if (std::fabs(screen_coeff) < 1e-6) - { - ModuleBase::WARNING_QUIT("ReadInput", - "every low screening coefficient might yield very high " - "computational cost"); - } - } - }; - sync_doublevec(input.qo_screening_coeff, para.input.ntype, 0.1); - this->add_item(item); - } - - // PEXSI - { - Input_Item item("pexsi_npole"); - item.annotation = "Number of poles in expansion"; - read_sync_int(input.pexsi_npole); - this->add_item(item); - } - { - Input_Item item("pexsi_inertia"); - item.annotation = "Whether inertia counting is used at the very " - "beginning of PEXSI process"; - read_sync_bool(input.pexsi_inertia); - this->add_item(item); - } - { - Input_Item item("pexsi_nmax"); - item.annotation = "Maximum number of PEXSI iterations after each " - "inertia counting procedure"; - read_sync_int(input.pexsi_nmax); - this->add_item(item); - } - { - Input_Item item("pexsi_comm"); - item.annotation = "Whether to construct PSelInv communication pattern"; - read_sync_bool(input.pexsi_comm); - this->add_item(item); - } - { - Input_Item item("pexsi_storage"); - item.annotation = "Storage space used by the Selected Inversion " - "algorithm for symmetric matrices"; - read_sync_bool(input.pexsi_storage); - this->add_item(item); - } - { - Input_Item item("pexsi_ordering"); - item.annotation = "Ordering strategy for factorization and selected inversion"; - read_sync_int(input.pexsi_ordering); - this->add_item(item); - } - { - Input_Item item("pexsi_row_ordering"); - item.annotation = "Row permutation strategy for factorization and " - "selected inversion, 0: NoRowPerm, 1: LargeDiag"; - read_sync_int(input.pexsi_row_ordering); - this->add_item(item); - } - { - Input_Item item("pexsi_nproc"); - item.annotation = "Number of processors for parmetis"; - read_sync_int(input.pexsi_nproc); - this->add_item(item); - } - { - Input_Item item("pexsi_symm"); - item.annotation = "Matrix symmetry"; - read_sync_bool(input.pexsi_symm); - this->add_item(item); - } - { - Input_Item item("pexsi_trans"); - item.annotation = "Whether to transpose"; - read_sync_bool(input.pexsi_trans); - this->add_item(item); - } - { - Input_Item item("pexsi_method"); - item.annotation = "pole expansion method, 1: Cauchy Contour Integral, " - "2: Moussa optimized method"; - read_sync_int(input.pexsi_method); - this->add_item(item); - } - { - Input_Item item("pexsi_nproc_pole"); - item.annotation = "Number of processes used by each pole"; - read_sync_int(input.pexsi_nproc_pole); - this->add_item(item); - } - { - Input_Item item("pexsi_temp"); - item.annotation = "Temperature, in the same unit as H"; - read_sync_double(input.pexsi_temp); - this->add_item(item); - } - { - Input_Item item("pexsi_gap"); - item.annotation = "Spectral gap"; - read_sync_double(input.pexsi_gap); - this->add_item(item); - } - { - Input_Item item("pexsi_delta_e"); - item.annotation = "An upper bound for the spectral radius of S^{-1} H"; - read_sync_double(input.pexsi_delta_e); - this->add_item(item); - } - { - Input_Item item("pexsi_mu_lower"); - item.annotation = "Initial guess of lower bound for mu"; - read_sync_double(input.pexsi_mu_lower); - this->add_item(item); - } - { - Input_Item item("pexsi_mu_upper"); - item.annotation = "Initial guess of upper bound for mu"; - read_sync_double(input.pexsi_mu_upper); - this->add_item(item); - } - { - Input_Item item("pexsi_mu"); - item.annotation = "Initial guess for mu (for the solver)"; - read_sync_double(input.pexsi_mu); - this->add_item(item); - } - { - Input_Item item("pexsi_mu_thr"); - item.annotation = "Stopping criterion in terms of the chemical " - "potential for the inertia counting procedure"; - read_sync_double(input.pexsi_mu_thr); - this->add_item(item); - } - { - Input_Item item("pexsi_mu_expand"); - item.annotation = "If the chemical potential is not in the initial " - "interval, the interval is expanded by " - "muInertiaExpansion"; - read_sync_double(input.pexsi_mu_expand); - this->add_item(item); - } - { - Input_Item item("pexsi_mu_guard"); - item.annotation = "Safe guard criterion in terms of the chemical potential to " - "reinvoke the inertia counting procedure"; - read_sync_double(input.pexsi_mu_guard); - this->add_item(item); - } - { - Input_Item item("pexsi_elec_thr"); - item.annotation = "Stopping criterion of the PEXSI iteration in terms " - "of the number of electrons compared to " - "numElectronExact"; - read_sync_double(input.pexsi_elec_thr); - this->add_item(item); - } - { - Input_Item item("pexsi_zero_thr"); - item.annotation = "if the absolute value of matrix element is less " - "than ZERO_Limit, it will be considered as 0"; - read_sync_double(input.pexsi_zero_thr); - this->add_item(item); - } - - // Only for Test - { - Input_Item item("out_alllog"); - item.annotation = "output information for each processor, when parallel"; - read_sync_bool(input.out_alllog); - this->add_item(item); - } - { - Input_Item item("nurse"); - item.annotation = "for coders"; - read_sync_int(input.nurse); - this->add_item(item); - } - { - Input_Item item("t_in_h"); - item.annotation = "calculate the kinetic energy or not"; - read_sync_bool(input.t_in_h); - this->add_item(item); - } - { - Input_Item item("vl_in_h"); - item.annotation = "calculate the local potential or not"; - read_sync_bool(input.vl_in_h); - this->add_item(item); - } - { - Input_Item item("vnl_in_h"); - item.annotation = "calculate the nonlocal potential or not"; - read_sync_bool(input.vnl_in_h); - this->add_item(item); - } - { - Input_Item item("vh_in_h"); - item.annotation = "calculate the hartree potential or not"; - read_sync_bool(input.vh_in_h); - this->add_item(item); - } - { - Input_Item item("vion_in_h"); - item.annotation = "calculate the local ionic potential or not"; - read_sync_bool(input.vion_in_h); - this->add_item(item); - } - { - Input_Item item("test_force"); - item.annotation = "test the force"; - read_sync_bool(input.test_force); - this->add_item(item); - } - { - Input_Item item("test_stress"); - item.annotation = "test the stress"; - read_sync_bool(input.test_stress); - this->add_item(item); - } - { - Input_Item item("test_skip_ewald"); - item.annotation = "whether to skip ewald"; - read_sync_bool(input.test_skip_ewald); - this->add_item(item); - } - { - Input_Item item("ri_hartree_benchmark"); - item.annotation = "whether to use the RI approximation for the Hartree term in LR-TDDFT for benchmark (with FHI-aims/ABACUS read-in style)"; - read_sync_string(input.ri_hartree_benchmark); - this->add_item(item); - } - { - Input_Item item("aims_nbasis"); - item.annotation = "the number of basis functions for each atom type used in FHI-aims (for benchmark)"; - item.read_value = [](const Input_Item& item, Parameter& para) { - size_t count = item.get_size(); - for (int i = 0; i < count; i++) - { - para.input.aims_nbasis.push_back(std::stod(item.str_values[i])); - } - }; - sync_intvec(input.aims_nbasis, para.input.aims_nbasis.size(), 0); - this->add_item(item); - } - - // RDMFT, added by jghan, 2024-10-16 - { - Input_Item item("rdmft"); - item.annotation = "whether to perform rdmft calculation, default is false"; - read_sync_bool(input.rdmft); - this->add_item(item); - item.check_value = [](const Input_Item& item, const Parameter& para) { - if (para.input.rdmft && para.input.nspin == 4) - { - ModuleBase::WARNING_QUIT("ReadInput", "rdmft is not available for nspin = 4"); - } - }; - } - { - Input_Item item("rdmft_power_alpha"); - item.annotation = "the alpha parameter of power-functional, g(occ_number) = occ_number^alpha" - " used in exx-type functionals such as muller and power"; - read_sync_double(input.rdmft_power_alpha); - item.reset_value = [](const Input_Item& item, Parameter& para) { - if( para.input.dft_functional == "hf" || para.input.dft_functional == "pbe0" ) - { - para.input.rdmft_power_alpha = 1.0; - } - else if( para.input.dft_functional == "muller" ) - { - para.input.rdmft_power_alpha = 0.5; - } - }; - item.check_value = [](const Input_Item& item, const Parameter& para) { - if( (para.input.rdmft_power_alpha < 0) || (para.input.rdmft_power_alpha > 1) ) - { - ModuleBase::WARNING_QUIT("ReadInput", "rdmft_power_alpha should be greater than 0.0 and less than 1.0"); - } - }; - this->add_item(item); - } - - // EXX PW by rhx0820, 2025-03-10 - { - Input_Item item("exxace"); - item.annotation = "whether to perform ace calculation in exxpw"; - read_sync_bool(input.exxace); - this->add_item(item); - } - { - Input_Item item("exx_gamma_extrapolation"); - item.annotation = "whether to perform gamma extrapolation in exxpw"; - read_sync_bool(input.exx_gamma_extrapolation); - this->add_item(item); - } - -} -} // namespace ModuleIO \ No newline at end of file diff --git a/source/source_io/read_input_item_output.cpp b/source/source_io/read_input_item_output.cpp deleted file mode 100644 index 09bbb79e66..0000000000 --- a/source/source_io/read_input_item_output.cpp +++ /dev/null @@ -1,576 +0,0 @@ -#include "source_base/global_function.h" -#include "source_base/tool_quit.h" -#include "read_input.h" -#include "read_input_tool.h" -namespace ModuleIO -{ -void ReadInput::item_output() -{ - { - Input_Item item("out_stru"); - item.annotation = "output the structure files after each ion step"; - item.reset_value = [](const Input_Item& item, Parameter& para) { - const std::vector offlist = {"nscf", "get_s", "get_pchg", "get_wf"}; - if (std::find(offlist.begin(), offlist.end(), para.input.calculation) != offlist.end()) - { - para.input.out_stru = false; - } - }; - read_sync_bool(input.out_stru); - this->add_item(item); - } - { - Input_Item item("out_freq_elec"); - item.annotation = "the frequency of electronic iter to output charge density and wavefunction "; - item.reset_value = [](const Input_Item& item, Parameter& para) { - if (para.input.out_freq_elec <= 0) - { - para.input.out_freq_elec = para.input.scf_nmax; - } - }; - read_sync_int(input.out_freq_elec); - this->add_item(item); - } - { - Input_Item item("out_freq_ion"); - item.annotation = "the frequency ( >= 0 ) of ionic step to output " - "charge density and wavefunction. 0: output " - "only when ion steps are finished"; - read_sync_int(input.out_freq_ion); - this->add_item(item); - } - { - Input_Item item("out_chg"); - item.annotation = "> 0 output charge density for selected electron steps" - ", second parameter controls the precision, default is 3."; - item.read_value = [](const Input_Item& item, Parameter& para) { - const size_t count = item.get_size(); - if (count != 1 && count != 2) - { - ModuleBase::WARNING_QUIT("ReadInput", "out_chg should have 1 or 2 values"); - } - para.input.out_chg[0] = (item.str_values[0] == "-1") ? -1 : std::stoi(item.str_values[0]); - para.input.out_chg[1] = (count == 2) ? std::stoi(item.str_values[1]) : 3; - }; - item.reset_value = [](const Input_Item& item, Parameter& para) { - para.input.out_chg[0] = (para.input.calculation == "get_wf" || para.input.calculation == "get_pchg") - ? 1 - : para.input.out_chg[0]; - }; - sync_intvec(input.out_chg, 2, 0); - this->add_item(item); - } - { - Input_Item item("out_pot"); - item.annotation = "output realspace potential"; - item.reset_value = [](const Input_Item& item, Parameter& para) { - if (para.input.calculation == "get_wf" || para.input.calculation == "get_pchg") - { - para.input.out_pot = 0; - } - }; - read_sync_int(input.out_pot); - this->add_item(item); - } - { - Input_Item item("out_wfc_pw"); - item.annotation = "output wave functions"; - read_sync_int(input.out_wfc_pw); - this->add_item(item); - } - { - Input_Item item("out_band"); - item.annotation = "output energy and band structure (with precision 8)"; - item.read_value = [](const Input_Item& item, Parameter& para) { - const size_t count = item.get_size(); - if (count != 1 && count != 2) - { - ModuleBase::WARNING_QUIT("ReadInput", "out_band should have 1 or 2 values"); - } - para.input.out_band[0] = assume_as_boolean(item.str_values[0]); - para.input.out_band[1] = (count == 2) ? std::stoi(item.str_values[1]) : 8; - }; - item.reset_value = [](const Input_Item& item, Parameter& para) { - if (para.input.calculation == "get_wf" || para.input.calculation == "get_pchg") - { - para.input.out_band[0] = 0; - } - }; - sync_intvec(input.out_band, 2, 0); - this->add_item(item); - } - { - Input_Item item("out_dos"); - item.annotation = "output energy and dos"; - read_sync_int(input.out_dos); - item.reset_value = [](const Input_Item& item, Parameter& para) { - if (para.input.calculation == "get_wf" || para.input.calculation == "get_pchg") - { - para.input.out_dos = 0; - } - }; - item.check_value = [](const Input_Item& item, const Parameter& para) { - if (para.input.out_dos == 3 && para.input.symmetry == "1") - { - ModuleBase::WARNING_QUIT("ReadInput", - "symmetry can't be used for out_dos==3(Fermi Surface " - "Plotting) by now."); - } - if (para.input.basis_type == "pw" && para.input.out_dos == 3) - { - ModuleBase::WARNING_QUIT("ReadInput", - "Fermi Surface Plotting not " - "implemented for plane wave now."); - } - }; - this->add_item(item); - } - { - Input_Item item("out_ldos"); - item.annotation = "output mode of local density of states, second parameter controls the precision"; - item.read_value = [](const Input_Item& item, Parameter& para) { - const size_t count = item.get_size(); - if (count != 1 && count != 2) - { - ModuleBase::WARNING_QUIT("ReadInput", "out_ldos should have 1 or 2 values"); - } - para.input.out_ldos[0] = std::stoi(item.str_values[0]); - para.input.out_ldos[1] = (count == 2) ? std::stoi(item.str_values[1]) : 3; - }; - item.check_value = [](const Input_Item& item, const Parameter& para) { - if (para.input.out_ldos[0] < 0 || para.input.out_ldos[0] > 3) - { - ModuleBase::WARNING_QUIT("ReadInput", "out_ldos should be 0, 1, 2 or 3"); - } - }; - sync_intvec(input.out_ldos, 2, 0); - this->add_item(item); - } - { - Input_Item item("out_mul"); - item.annotation = "mulliken charge or not"; - read_sync_bool(input.out_mul); - item.check_value = [](const Input_Item& item, const Parameter& para) { - if (para.input.basis_type == "pw" && para.input.out_mul) - { - ModuleBase::WARNING_QUIT("ReadInput", "out_mul is only for lcao"); - } - }; - this->add_item(item); - } - { - Input_Item item("out_proj_band"); - item.annotation = "output projected band structure"; - read_sync_bool(input.out_proj_band); - item.reset_value = [](const Input_Item& item, Parameter& para) { - if (para.input.calculation == "get_wf" || para.input.calculation == "get_pchg") - { - para.input.out_proj_band = false; - } - }; - item.check_value = [](const Input_Item& item, const Parameter& para) { - if (para.input.basis_type == "pw" && para.input.out_proj_band) - { - ModuleBase::WARNING_QUIT("ReadInput", "out_proj_band is only for lcao"); - } - }; - this->add_item(item); - } - { - Input_Item item("out_level"); - item.annotation = "ie(for electrons); i(for ions);"; - item.read_value = [](const Input_Item& item, Parameter& para) { - para.input.out_level = strvalue; - para.sys.out_md_control = true; - }; - item.reset_value = [](const Input_Item& item, Parameter& para) { - if (!para.sys.out_md_control && para.input.calculation == "md") - { - para.input.out_level = "m"; // zhengdy add 2019-04-07 - } - }; - sync_string(input.out_level); - add_bool_bcast(sys.out_md_control); - this->add_item(item); - } - { - Input_Item item("out_dmk"); - item.annotation = ">0 output density matrix DM(k) for each k-point"; - item.reset_value = [](const Input_Item& item, Parameter& para) { - if (para.input.calculation == "get_pchg" || para.input.calculation == "get_wf") - { - para.input.out_dmk = false; - } - }; - read_sync_bool(input.out_dmk); - this->add_item(item); - } - { - Input_Item item("out_dmr"); - item.annotation = ">0 output density matrix DM(R) with respect to lattice vector R"; - item.reset_value = [](const Input_Item& item, Parameter& para) { - if (para.input.calculation == "get_pchg" || para.input.calculation == "get_wf") - { - para.input.out_dmr = false; - } - }; - item.check_value = [](const Input_Item& item, const Parameter& para) { - if (para.sys.gamma_only_local == true && para.input.out_dmr) - { - ModuleBase::WARNING_QUIT("ReadInput", "out_dmr is only valid for multi-k calculation"); - } - }; - read_sync_bool(input.out_dmr); - this->add_item(item); - } - { - Input_Item item("out_bandgap"); - item.annotation = "if true, print out bandgap"; - read_sync_bool(input.out_bandgap); - this->add_item(item); - } - { - Input_Item item("out_mat_hs"); - item.annotation = "output H and S matrix (with precision 8)"; - item.read_value = [](const Input_Item& item, Parameter& para) { - const size_t count = item.get_size(); - if (count != 1 && count != 2) - { - ModuleBase::WARNING_QUIT("ReadInput", "out_mat_hs should have 1 or 2 values"); - } - para.input.out_mat_hs[0] = assume_as_boolean(item.str_values[0]); - para.input.out_mat_hs[1] = (count == 2) ? std::stoi(item.str_values[1]) : 8; - }; - item.reset_value = [](const Input_Item& item, Parameter& para) { - if (para.input.qo_switch) - { - para.input.out_mat_hs[0] = 1; // print H(k) and S(k) - } - }; - sync_intvec(input.out_mat_hs, 2, 0); - this->add_item(item); - } - { - Input_Item item("out_mat_tk"); - item.annotation = "output T(k)"; - item.read_value = [](const Input_Item& item, Parameter& para) { - const size_t count = item.get_size(); - if (count != 1 && count != 2) - { - ModuleBase::WARNING_QUIT("ReadInput", "out_mat_tk should have 1 or 2 values"); - } - para.input.out_mat_tk[0] = assume_as_boolean(item.str_values[0]); - para.input.out_mat_tk[1] = (count == 2) ? std::stoi(item.str_values[1]) : 8; - }; - sync_intvec(input.out_mat_tk, 2, 0); - this->add_item(item); - } - { - Input_Item item("out_mat_hs2"); - item.annotation = "output H(R) and S(R) matrix"; - read_sync_bool(input.out_mat_hs2); - item.check_value = [](const Input_Item& item, const Parameter& para) { - if (para.input.out_mat_r && para.sys.gamma_only_local) - { - ModuleBase::WARNING_QUIT("ReadInput", "out_mat_r is not available for gamma only calculations"); - } - }; - this->add_item(item); - } - { - Input_Item item("out_mat_l"); - item.annotation = "output the expectation values of angular momentum operators"; - item.read_value = [](const Input_Item& item, Parameter& para) { - const size_t count = item.get_size(); - if (count != 1 && count != 2) - { - ModuleBase::WARNING_QUIT("ReadInput", "out_mat_l should have 1 or 2 values"); - } - para.input.out_mat_l[0] = assume_as_boolean(item.str_values[0]); - para.input.out_mat_l[1] = (count == 2) ? std::stoi(item.str_values[1]) : 8; - }; - sync_intvec(input.out_mat_l, 2, 0); - this->add_item(item); - } - { - Input_Item item("out_mat_dh"); - item.annotation = "output of derivative of H(R) matrix"; - read_sync_bool(input.out_mat_dh); - item.check_value = [](const Input_Item& item, const Parameter& para) { - if (para.input.out_mat_dh && para.input.nspin == 4) - { - ModuleBase::WARNING_QUIT("ReadInput", "out_mat_dh is not available for nspin = 4"); - } - }; - this->add_item(item); - } - { - Input_Item item("out_mat_ds"); - item.annotation = "output of derivative of S(R) matrix"; - read_sync_bool(input.out_mat_ds); - item.check_value = [](const Input_Item& item, const Parameter& para) { - if (para.input.out_mat_ds && para.input.nspin == 4) - { - ModuleBase::WARNING_QUIT("ReadInput", "out_mat_ds is not available for nspin = 4"); - } - }; - this->add_item(item); - } - { - Input_Item item("out_mat_xc"); - item.annotation = "output exchange-correlation matrix in KS-orbital representation"; - read_sync_bool(input.out_mat_xc); - this->add_item(item); - } - { - Input_Item item("out_mat_xc2"); - item.annotation = "output exchange-correlation matrix in NAO representation"; - read_sync_bool(input.out_mat_xc2); - this->add_item(item); - } - { - Input_Item item("out_eband_terms"); - item.annotation = "output the band energy terms separately"; - read_sync_bool(input.out_eband_terms); - this->add_item(item); - } - { - Input_Item item("out_interval"); - item.annotation = "interval for printing H(R) and S(R) matrix during MD"; - read_sync_int(input.out_interval); - item.check_value = [](const Input_Item& item, const Parameter& para) { - if (para.input.out_interval <= 0) - { - ModuleBase::WARNING_QUIT("ReadInput", "out_interval should be larger than 0"); - } - }; - this->add_item(item); - } - { - Input_Item item("out_app_flag"); - item.annotation = "whether output r(R), H(R), S(R), T(R), and dH(R) " - "matrices in an append manner during MD"; - read_sync_bool(input.out_app_flag); - this->add_item(item); - } - { - Input_Item item("out_ndigits"); - item.annotation = "the length of decimal part of output data"; - read_sync_int(input.out_ndigits); - this->add_item(item); - } - { - Input_Item item("out_mat_t"); - item.annotation = "output T(R) matrix"; - read_sync_bool(input.out_mat_t); - this->add_item(item); - } - { - Input_Item item("out_element_info"); - item.annotation = "output (projected) wavefunction of each element"; - read_sync_bool(input.out_element_info); - this->add_item(item); - } - { - Input_Item item("out_mat_r"); - item.annotation = "output r(R) matrix"; - read_sync_bool(input.out_mat_r); - item.check_value = [](const Input_Item& item, const Parameter& para) { - if ((para.inp.out_mat_r || para.inp.out_mat_hs2 || para.inp.out_mat_t || para.inp.out_mat_dh - || para.inp.dm_to_rho) - && para.sys.gamma_only_local) - { - ModuleBase::WARNING_QUIT("ReadInput", - "output of r(R)/H(R)/S(R)/T(R)/dH(R)/DM(R) is not " - "available for gamma only calculations"); - } - }; - this->add_item(item); - } - { - Input_Item item("out_wfc_lcao"); - item.annotation = "ouput LCAO wave functions, 0, no output 1: text, 2: binary"; - read_sync_int(input.out_wfc_lcao); - item.reset_value = [](const Input_Item& item, Parameter& para) { - if (para.input.qo_switch) - { - para.input.out_wfc_lcao = 1; - } - }; - item.check_value = [](const Input_Item& item, const Parameter& para) { - if (para.input.out_wfc_lcao < 0 || para.input.out_wfc_lcao > 2) - { - ModuleBase::WARNING_QUIT("ReadInput", "out_wfc_lcao should be 0, 1, or 2"); - } - if (para.input.basis_type != "lcao" && para.input.out_wfc_lcao != 0) - { - ModuleBase::WARNING_QUIT("ReadInput", "out_wfc_lcao is only available for basis_type = lcao"); - } - }; - this->add_item(item); - } - { - Input_Item item("out_dipole"); - item.annotation = "output dipole or not"; - read_sync_bool(input.out_dipole); - this->add_item(item); - } - { - Input_Item item("out_efield"); - item.annotation = "output dipole or not"; - read_sync_bool(input.out_efield); - this->add_item(item); - } - { - Input_Item item("out_current"); - item.annotation = "output current or not"; - read_sync_bool(input.out_current); - this->add_item(item); - } - { - Input_Item item("out_current_k"); - item.annotation = "output current for each k"; - read_sync_bool(input.out_current_k); - this->add_item(item); - } - { - Input_Item item("out_vecpot"); - item.annotation = "output TDDFT vector potential or not"; - read_sync_bool(input.out_vecpot); - this->add_item(item); - } - { - Input_Item item("restart_save"); - item.annotation = "print to disk every step for restart"; - read_sync_bool(input.restart_save); - this->add_item(item); - } - { - Input_Item item("rpa"); - item.annotation = "true:generate output files used in rpa calculation; " - "false:(default)"; - read_sync_bool(input.rpa); - this->add_item(item); - } - { - Input_Item item("out_pchg"); - item.annotation = "specify the bands to be calculated for the partial (band-decomposed) charge densities"; - item.read_value - = [](const Input_Item& item, Parameter& para) { parse_expression(item.str_values, para.input.out_pchg); }; - item.get_final_value = [](Input_Item& item, const Parameter& para) { - if (item.is_read()) - { - item.final_value.str(longstring(item.str_values)); - } - }; - add_intvec_bcast(input.out_pchg, para.input.out_pchg.size(), 0); - this->add_item(item); - } - { - Input_Item item("out_wfc_norm"); - item.annotation = "specify the bands to be calculated for the norm of wavefunctions"; - item.read_value = [](const Input_Item& item, Parameter& para) { - parse_expression(item.str_values, para.input.out_wfc_norm); - }; - item.get_final_value = [](Input_Item& item, const Parameter& para) { - if (item.is_read()) - { - item.final_value.str(longstring(item.str_values)); - } - }; - add_intvec_bcast(input.out_wfc_norm, para.input.out_wfc_norm.size(), 0); - this->add_item(item); - } - { - Input_Item item("out_wfc_re_im"); - item.annotation = "specify the bands to be calculated for the real and imaginary parts of wavefunctions"; - item.read_value = [](const Input_Item& item, Parameter& para) { - parse_expression(item.str_values, para.input.out_wfc_re_im); - }; - item.get_final_value = [](Input_Item& item, const Parameter& para) { - if (item.is_read()) - { - item.final_value.str(longstring(item.str_values)); - } - }; - add_intvec_bcast(input.out_wfc_re_im, para.input.out_wfc_re_im.size(), 0); - this->add_item(item); - } - { - Input_Item item("out_xc_r"); - item.annotation = "if >=0, output the derivatives of exchange correlation in realspace, second parameter controls the precision"; - item.read_value = [](const Input_Item& item, Parameter& para) { - size_t count = item.get_size(); - std::vector out_xc_r(count); // create a placeholder vector - std::transform(item.str_values.begin(), item.str_values.end(), out_xc_r.begin(), [](std::string s) { return std::stoi(s); }); - // assign non-negative values to para.input.out_xc_r - std::copy(out_xc_r.begin(), out_xc_r.end(), para.input.out_xc_r.begin()); - }; - item.check_value = [](const Input_Item& item, const Parameter& para) { - if (para.input.out_xc_r[0] >= 0) - { -#ifndef USE_LIBXC - ModuleBase::WARNING_QUIT("ReadInput", "INPUT out_xc_r is only aviailable with Libxc"); -#endif - } - }; - sync_intvec(input.out_xc_r, 2, -1); - this->add_item(item); - } - { - Input_Item item("if_separate_k"); - item.annotation = "specify whether to write the partial charge densities for all k-points to individual files " - "or merge them"; - read_sync_bool(input.if_separate_k); - this->add_item(item); - } - { - Input_Item item("out_elf"); - item.annotation = "> 0 output electron localization function (ELF) for selected electron steps" - ", second parameter controls the precision, default is 3."; - item.read_value = [](const Input_Item& item, Parameter& para) { - size_t count = item.get_size(); - std::vector out_elf(count); // create a placeholder vector - std::transform(item.str_values.begin(), item.str_values.end(), out_elf.begin(), [](std::string s) { - return std::stoi(s); - }); - // assign non-negative values to para.input.out_elf - std::copy(out_elf.begin(), out_elf.end(), para.input.out_elf.begin()); - }; - item.check_value = [](const Input_Item& item, const Parameter& para) { - if (para.input.out_elf[0] > 0 && para.input.esolver_type != "ksdft" && para.input.esolver_type != "ofdft") - { - ModuleBase::WARNING_QUIT("ReadInput", "ELF is only aviailable for ksdft and ofdft"); - } - }; - sync_intvec(input.out_elf, 2, 0); - this->add_item(item); - } - { - // recover the functionality of test_symmetry by introducing a new keyword "out_symm_mat" - // the "out_symm_mat" keyword will be a - Input_Item item("cal_symm_repr"); - item.annotation = "output matrix representation of symmetry operation into running log file" - " > 0 output the matrix representation of symmetry operation " - ", the second parameter controls the precision, default is 3."; - item.read_value = [](const Input_Item& item, Parameter& para) { - size_t count = item.get_size(); - std::vector cal_symm_repr(count); // create a placeholder vector - std::transform(item.str_values.begin(), item.str_values.end(), // iterators of 1 - cal_symm_repr.begin(), // iterator of 2 - [](std::string s){ return std::stoi(s); }); // lambda func - // assign non-negative values to para.input.cal_symm_repr - std::copy(cal_symm_repr.begin(), cal_symm_repr.end(), - para.input.cal_symm_repr.begin()); - }; - item.check_value = [](const Input_Item& item, const Parameter& para) { - if (para.input.cal_symm_repr[0] < 0 || para.input.cal_symm_repr[0] > 1) - { - ModuleBase::WARNING_QUIT("ReadInput", "cal_symm_repr should be 0 or 1"); - } - }; - sync_intvec(input.cal_symm_repr, 2, 0); - this->add_item(item); - } -} -} // namespace ModuleIO diff --git a/source/source_io/read_input_item_postprocess.cpp b/source/source_io/read_input_item_postprocess.cpp deleted file mode 100644 index f2ef9bd73b..0000000000 --- a/source/source_io/read_input_item_postprocess.cpp +++ /dev/null @@ -1,293 +0,0 @@ -#include "source_base/global_function.h" -#include "source_base/tool_quit.h" -#include "read_input.h" -#include "read_input_tool.h" -namespace ModuleIO -{ -void ReadInput::item_postprocess() -{ - // DOS - { - Input_Item item("dos_emin_ev"); - item.annotation = "minimal range for dos"; - item.read_value = [](const Input_Item& item, Parameter& para) { - para.input.dos_emin_ev = doublevalue; - para.sys.dos_setemin = true; - }; - sync_double(input.dos_emin_ev); - add_bool_bcast(sys.dos_setemin); - this->add_item(item); - } - { - Input_Item item("dos_emax_ev"); - item.annotation = "maximal range for dos"; - item.read_value = [](const Input_Item& item, Parameter& para) { - para.input.dos_emax_ev = doublevalue; - para.sys.dos_setemax = true; - }; - sync_double(input.dos_emax_ev); - add_bool_bcast(sys.dos_setemax); - this->add_item(item); - } - { - Input_Item item("dos_edelta_ev"); - item.annotation = "delta energy for dos"; - read_sync_double(input.dos_edelta_ev); - this->add_item(item); - } - { - Input_Item item("dos_scale"); - item.annotation = "scale dos range by"; - read_sync_double(input.dos_scale); - this->add_item(item); - } - { - Input_Item item("dos_sigma"); - item.annotation = "gauss b coefficeinet(default=0.07)"; - read_sync_double(input.dos_sigma); - this->add_item(item); - } - { - Input_Item item("dos_nche"); - item.annotation = "orders of Chebyshev expansions for dos"; - read_sync_int(input.dos_nche); - this->add_item(item); - } - { - Input_Item item("stm_bias"); - item.annotation = "bias voltage used to calculate ldos"; - item.read_value = [](const Input_Item& item, Parameter& para) { - const size_t count = item.get_size(); - if (count != 1 && count != 3) - { - ModuleBase::WARNING_QUIT("ReadInput", "stm_bias should have 1 or 3 values"); - } - para.input.stm_bias[0] = std::stod(item.str_values[0]); - para.input.stm_bias[1] = (count == 3) ? std::stod(item.str_values[1]) : 0.1; - para.input.stm_bias[2] = (count == 3) ? std::stod(item.str_values[2]) : 1; - }; - item.check_value = [](const Input_Item& item, const Parameter& para) { - if (para.input.stm_bias[2] <= 0) - { - ModuleBase::WARNING_QUIT("ReadInput", "stm_bias[2] should be greater than 0"); - } - if (para.input.stm_bias[1] == 0) - { - ModuleBase::WARNING_QUIT("ReadInput", "stm_bias[1] should be nonzero"); - } - }; - sync_doublevec(input.stm_bias, 3, 0); - this->add_item(item); - } - { - Input_Item item("ldos_line"); - item.annotation = "start and end point of the line (direct coordinates) and number of points"; - item.read_value = [](const Input_Item& item, Parameter& para) { - const size_t count = item.get_size(); - if (count != 6 && count != 7) - { - ModuleBase::WARNING_QUIT("ReadInput", "ldos_line should have 6 or 7 values"); - } - for (int i = 0; i < 6; ++i) - { - para.input.ldos_line[i] = std::stod(item.str_values[i]); - } - para.input.ldos_line[6] = (count == 7) ? std::stoi(item.str_values[6]) : 100; - }; - item.check_value = [](const Input_Item& item, const Parameter& para) { - if (para.input.ldos_line[6] <= 0) - { - ModuleBase::WARNING_QUIT("ReadInput", "ldos_line[6] should be greater than 0"); - } - }; - sync_doublevec(input.ldos_line, 7, 0); - this->add_item(item); - } - - // Electronic Conductivity - { - Input_Item item("cal_cond"); - item.annotation = "calculate electronic conductivities"; - read_sync_bool(input.cal_cond); - this->add_item(item); - } - { - Input_Item item("cond_che_thr"); - item.annotation = "control the error of Chebyshev expansions for conductivities"; - read_sync_double(input.cond_che_thr); - this->add_item(item); - } - { - Input_Item item("cond_dw"); - item.annotation = "frequency interval for conductivities"; - read_sync_double(input.cond_dw); - this->add_item(item); - } - { - Input_Item item("cond_wcut"); - item.annotation = "cutoff frequency (omega) for conductivities"; - read_sync_double(input.cond_wcut); - this->add_item(item); - } - { - Input_Item item("cond_dt"); - item.annotation = "t interval to integrate Onsager coefficiencies"; - read_sync_double(input.cond_dt); - this->add_item(item); - } - { - Input_Item item("cond_dtbatch"); - item.annotation = "exp(iH*dt*cond_dtbatch) is expanded with Chebyshev expansion"; - read_sync_int(input.cond_dtbatch); - this->add_item(item); - } - { - Input_Item item("cond_smear"); - item.annotation = "Smearing method for conductivities"; - read_sync_int(input.cond_smear); - this->add_item(item); - } - { - Input_Item item("cond_fwhm"); - item.annotation = "FWHM for conductivities"; - read_sync_double(input.cond_fwhm); - this->add_item(item); - } - { - Input_Item item("cond_nonlocal"); - item.annotation = "Nonlocal effects for conductivities"; - read_sync_bool(input.cond_nonlocal); - this->add_item(item); - } - - // berry_wannier - { - Input_Item item("berry_phase"); - item.annotation = "calculate berry phase or not"; - read_sync_bool(input.berry_phase); - item.check_value = [](const Input_Item& item, const Parameter& para) { - if (para.input.berry_phase) - { - if (para.input.basis_type != "pw" && para.input.basis_type != "lcao") - { - ModuleBase::WARNING_QUIT("ReadInput", - "calculate berry phase, please " - "set basis_type = pw or lcao"); - } - if (para.input.calculation != "nscf") - { - ModuleBase::WARNING_QUIT("ReadInput", "calculate berry phase, please set calculation = nscf"); - } - if (!(para.input.gdir == 1 || para.input.gdir == 2 || para.input.gdir == 3)) - { - ModuleBase::WARNING_QUIT("ReadInput", "calculate berry phase, please set gdir = 1 or 2 or 3"); - } - if (para.input.symmetry != "-1") - { - ModuleBase::WARNING_QUIT("ReadInput", "calculate berry phase, please set symmetry = -1"); - } - } - }; - this->add_item(item); - } - { - Input_Item item("gdir"); - item.annotation = "calculate the polarization in the direction of the " - "lattice vector"; - read_sync_int(input.gdir); - this->add_item(item); - } - { - Input_Item item("towannier90"); - item.annotation = "use wannier90 code interface or not"; - read_sync_bool(input.towannier90); - item.check_value = [](const Input_Item& item, const Parameter& para) { - if (para.input.towannier90) - { - if (para.input.calculation != "nscf") - { - ModuleBase::WARNING_QUIT("ReadInput", "to use towannier90, please set calculation = nscf"); - } - if (para.input.nspin == 2) - { - if (para.input.wannier_spin != "up" && para.input.wannier_spin != "down") - { - ModuleBase::WARNING_QUIT("ReadInput", - "to use towannier90, please set wannier_spin = up " - "or down"); - } - } - } - }; - this->add_item(item); - } - { - Input_Item item("nnkpfile"); - item.annotation = "the wannier90 code nnkp file name"; - read_sync_string(input.nnkpfile); - this->add_item(item); - } - { - Input_Item item("wannier_spin"); - item.annotation = "calculate spin in wannier90 code interface"; - read_sync_string(input.wannier_spin); - this->add_item(item); - } - { - Input_Item item("wannier_method"); - item.annotation = "different implementation methods under Lcao basis set"; - item.reset_value = [](const Input_Item& item, Parameter& para) { - /* - Developer's notes: on the repair of lcao_in_pw - - lcao_in_pw is a special basis_type, for scf calculation, - it follows workflow of pw, but for nscf the toWannier90 - calculation, the interface is in ESolver_KS_LCAO_elec, - therefore lcao_in_pw for towannier90 calculation follows - lcao. - - In the future lcao_in_pw will have its own ESolver. - - 2023/12/22 use new psi_initializer to expand numerical - atomic orbitals, ykhuang - */ - if (para.input.towannier90 && para.input.basis_type == "lcao_in_pw") - { - para.input.wannier_method = 1; - } - }; - read_sync_int(input.wannier_method); - this->add_item(item); - } - { - Input_Item item("out_wannier_mmn"); - item.annotation = "output .mmn file or not"; - read_sync_bool(input.out_wannier_mmn); - this->add_item(item); - } - { - Input_Item item("out_wannier_amn"); - item.annotation = "output .amn file or not"; - read_sync_bool(input.out_wannier_amn); - this->add_item(item); - } - { - Input_Item item("out_wannier_unk"); - item.annotation = "output UNK. file or not"; - read_sync_bool(input.out_wannier_unk); - this->add_item(item); - } - { - Input_Item item("out_wannier_eig"); - item.annotation = "output .eig file or not"; - read_sync_bool(input.out_wannier_eig); - this->add_item(item); - } - { - Input_Item item("out_wannier_wvfn_formatted"); - item.annotation = "output UNK. file in text format or in binary format"; - read_sync_bool(input.out_wannier_wvfn_formatted); - this->add_item(item); - } -} -} // namespace ModuleIO \ No newline at end of file diff --git a/source/source_io/read_input_item_relax.cpp b/source/source_io/read_input_item_relax.cpp deleted file mode 100644 index 036252f23b..0000000000 --- a/source/source_io/read_input_item_relax.cpp +++ /dev/null @@ -1,213 +0,0 @@ -#include "source_base/global_function.h" -#include "source_base/tool_quit.h" -#include "read_input.h" -#include "read_input_tool.h" - -namespace ModuleIO -{ -void ReadInput::item_relax() -{ - { - Input_Item item("relax_method"); - item.annotation = "cg; bfgs; sd; cg; cg_bfgs;"; - read_sync_string(input.relax_method); - item.check_value = [](const Input_Item& item, const Parameter& para) { - const std::vector relax_methods = {"cg", "bfgs", "sd", "cg_bfgs","bfgs_trad","lbfgs"}; - if (std::find(relax_methods.begin(),relax_methods.end(), para.input.relax_method)==relax_methods.end()) - { - const std::string warningstr = nofound_str(relax_methods, "relax_method"); - ModuleBase::WARNING_QUIT("ReadInput", warningstr); - } - }; - this->add_item(item); - } - { - Input_Item item("relax_new"); - item.annotation = "whether to use the new relaxation method"; - read_sync_bool(input.relax_new); - item.reset_value = [](const Input_Item& item, Parameter& para) { - if (para.input.relax_new && para.input.relax_method != "cg") - { - para.input.relax_new = false; - } - }; - this->add_item(item); - } - { - Input_Item item("relax"); - item.annotation = "allow relaxation along the specific direction"; - read_sync_bool(input.relax); - this->add_item(item); - } - { - Input_Item item("relax_scale_force"); - item.annotation = "controls the size of the first CG step if relax_new is true"; - read_sync_double(input.relax_scale_force); - this->add_item(item); - } - { - Input_Item item("relax_nmax"); - item.annotation = "number of ion iteration steps"; - item.reset_value = [](const Input_Item& item, Parameter& para) { - const std::string& calculation = para.input.calculation; - const std::vector singlelist - = {"scf", "nscf", "get_s", "get_pchg", "get_wf", "test_memory", "test_neighbour", "gen_bessel"}; - if (std::find(singlelist.begin(), singlelist.end(), calculation) != singlelist.end()) - { - if (para.input.relax_nmax != 0) - { - para.input.relax_nmax = 1; - } - } - else if (calculation == "relax" || calculation == "cell-relax") - { - if (para.input.relax_nmax < 0) - { - para.input.relax_nmax = 50; - } - } - }; - read_sync_int(input.relax_nmax); - this->add_item(item); - } - { - Input_Item item("relax_cg_thr"); - item.annotation = "threshold for switching from cg to bfgs, unit: eV/Angstrom"; - read_sync_double(input.relax_cg_thr); - this->add_item(item); - } - { - Input_Item item("force_thr"); - item.annotation = "force threshold, unit: Ry/Bohr"; - // read_sync_double(input.force_thr); - item.read_value = [](const Input_Item& item, Parameter& para) { para.input.force_thr = doublevalue; }; - item.reset_value = [](const Input_Item& item, Parameter& para) { - if (para.input.force_thr == -1 && para.input.force_thr_ev == -1) - { - para.input.force_thr = 1.0e-3; // default value - para.input.force_thr_ev = para.input.force_thr * 13.6058 / 0.529177; - } - else if (para.input.force_thr == -1 && para.input.force_thr_ev != -1) - { - para.input.force_thr = para.input.force_thr_ev / 13.6058 * 0.529177; - } - else - { - // if both force_thr and force_thr_ev are set, use force_thr - ModuleBase::WARNING("ReadInput", "both force_thr and force_thr_ev are set, use force_thr"); - para.input.force_thr_ev = para.input.force_thr * 13.6058 / 0.529177; - } - }; - sync_double(input.force_thr); - this->add_item(item); - } - { - Input_Item item("force_thr_ev"); - item.annotation = "force threshold, unit: eV/Angstrom"; - item.read_value = [](const Input_Item& item, Parameter& para) { para.input.force_thr_ev = doublevalue; }; - sync_double(input.force_thr_ev); - this->add_item(item); - } - { - Input_Item item("force_zero_out"); - item.annotation = "force invalid threshold, unit: eV/Angstrom"; - read_sync_double(input.force_zero_out); - this->add_item(item); - } - { - Input_Item item("stress_thr"); - item.annotation = "stress threshold"; - read_sync_double(input.stress_thr); - this->add_item(item); - } - { - Input_Item item("press1"); - item.annotation = "target pressure, unit: KBar"; - read_sync_double(input.press1); - this->add_item(item); - } - { - Input_Item item("press2"); - item.annotation = "target pressure, unit: KBar"; - read_sync_double(input.press2); - this->add_item(item); - } - { - Input_Item item("press3"); - item.annotation = "target pressure, unit: KBar"; - read_sync_double(input.press3); - this->add_item(item); - } - { - Input_Item item("relax_bfgs_w1"); - item.annotation = "wolfe condition 1 for bfgs"; - read_sync_double(input.relax_bfgs_w1); - this->add_item(item); - } - { - Input_Item item("relax_bfgs_w2"); - item.annotation = "wolfe condition 2 for bfgs"; - read_sync_double(input.relax_bfgs_w2); - this->add_item(item); - } - { - Input_Item item("relax_bfgs_rmax"); - item.annotation = "maximal trust radius, unit: Bohr"; - read_sync_double(input.relax_bfgs_rmax); - this->add_item(item); - } - { - Input_Item item("relax_bfgs_rmin"); - item.annotation = "minimal trust radius, unit: Bohr"; - read_sync_double(input.relax_bfgs_rmin); - this->add_item(item); - } - { - Input_Item item("relax_bfgs_init"); - item.annotation = "initial trust radius, unit: Bohr"; - read_sync_double(input.relax_bfgs_init); - this->add_item(item); - } - { - Input_Item item("fixed_axes"); - item.annotation = "which axes are fixed"; - read_sync_string(input.fixed_axes); - item.check_value = [](const Input_Item& item, const Parameter& para) { - if ((para.input.fixed_axes == "shape" || para.input.fixed_axes == "volume") && !para.input.relax_new) - { - ModuleBase::WARNING_QUIT("ReadInput", "fixed shape and fixed volume only supported for relax_new = 1"); - } - }; - this->add_item(item); - } - { - Input_Item item("fixed_ibrav"); - item.annotation = "whether to preseve lattice type during relaxation"; - read_sync_bool(input.fixed_ibrav); - item.check_value = [](const Input_Item& item, const Parameter& para) { - if (para.input.fixed_ibrav && !para.input.relax_new) - { - ModuleBase::WARNING_QUIT("ReadInput", "fixed_ibrav only available for relax_new = 1"); - } - if (para.input.latname == "none" && para.input.fixed_ibrav) - { - ModuleBase::WARNING_QUIT("ReadInput", "to use fixed_ibrav, latname must be provided"); - } - }; - this->add_item(item); - } - { - Input_Item item("fixed_atoms"); - item.annotation = "whether to preseve direct coordinates of atoms " - "during relaxation"; - read_sync_bool(input.fixed_atoms); - item.check_value = [](const Input_Item& item, const Parameter& para) { - if (para.input.fixed_atoms && para.input.calculation == "relax") - { - ModuleBase::WARNING_QUIT("ReadInput", "fixed_atoms is not meant to be used for calculation = relax"); - } - }; - this->add_item(item); - } -} -} // namespace ModuleIO diff --git a/source/source_io/read_input_item_sdft.cpp b/source/source_io/read_input_item_sdft.cpp deleted file mode 100644 index d073084a2e..0000000000 --- a/source/source_io/read_input_item_sdft.cpp +++ /dev/null @@ -1,111 +0,0 @@ -#include "source_base/global_function.h" -#include "source_base/tool_quit.h" -#include "read_input.h" -#include "read_input_tool.h" - -namespace ModuleIO -{ -void ReadInput::item_sdft() -{ - { - Input_Item item("method_sto"); - item.annotation = "1: slow and save memory, 2: fast and waste memory"; - read_sync_int(input.method_sto); - item.check_value = [](const Input_Item& item, const Parameter& para) { - if (para.input.method_sto != 1 && para.input.method_sto != 2) - { - ModuleBase::WARNING_QUIT("ReadInput", "method_sto should be 1 or 2"); - } - }; - this->add_item(item); - } - { - Input_Item item("npart_sto"); - item.annotation = "Reduce memory when calculating Stochastic DOS"; - read_sync_int(input.npart_sto); - this->add_item(item); - } - { - Input_Item item("nbands_sto"); - item.annotation = "number of stochstic orbitals"; - item.read_value = [](const Input_Item& item, Parameter& para) { - std::string nbandsto_str = strvalue; - if (nbandsto_str != "all") - { - para.input.nbands_sto = std::stoi(nbandsto_str); - } - else - { - para.input.nbands_sto = 0; - } - }; - item.reset_value = [](const Input_Item& item, Parameter& para) { - // only do it when nbands_sto is set in INPUT - if (item.is_read()) - { - if (strvalue == "0" && para.input.esolver_type == "sdft") - { - para.input.esolver_type = "ksdft"; - ModuleBase::GlobalFunc::AUTO_SET("esolver_type", para.input.esolver_type); - } - } - }; - item.check_value = [](const Input_Item& item, const Parameter& para) { - if (para.input.nbands_sto < 0 || para.input.nbands_sto > 100000) - { - ModuleBase::WARNING_QUIT("ReadInput", "nbands_sto should be in the range of 0 to 100000"); - } - }; - item.get_final_value = [](Input_Item& item, const Parameter& para) { - if (item.str_values.size() == 0) // no nbands_sto in INPUT - { - item.final_value << para.input.nbands_sto; - } - else - { - item.final_value << item.str_values[0]; - } - }; - add_int_bcast(input.nbands_sto); - this->add_item(item); - } - { - Input_Item item("nche_sto"); - item.annotation = "Chebyshev expansion orders"; - read_sync_int(input.nche_sto); - this->add_item(item); - } - { - Input_Item item("emin_sto"); - item.annotation = "trial energy to guess the lower bound of eigen " - "energies of the Hamitonian operator"; - read_sync_double(input.emin_sto); - this->add_item(item); - } - { - Input_Item item("emax_sto"); - item.annotation = "trial energy to guess the upper bound of eigen " - "energies of the Hamitonian operator"; - read_sync_double(input.emax_sto); - this->add_item(item); - } - { - Input_Item item("seed_sto"); - item.annotation = "the random seed to generate stochastic orbitals"; - read_sync_int(input.seed_sto); - this->add_item(item); - } - { - Input_Item item("initsto_ecut"); - item.annotation = "maximum ecut to init stochastic bands"; - read_sync_double(input.initsto_ecut); - this->add_item(item); - } - { - Input_Item item("initsto_freq"); - item.annotation = "frequency to generate new stochastic orbitals when running md"; - read_sync_int(input.initsto_freq); - this->add_item(item); - } -} -} // namespace ModuleIO \ No newline at end of file diff --git a/source/source_io/read_input_item_system.cpp b/source/source_io/read_input_item_system.cpp deleted file mode 100644 index 378d77fcd1..0000000000 --- a/source/source_io/read_input_item_system.cpp +++ /dev/null @@ -1,841 +0,0 @@ -#include "source_base/global_function.h" -#include "source_base/tool_quit.h" -#include "read_input.h" -#include "read_input_tool.h" -#include "source_base/module_device/device.h" - -#include -#include - -namespace ModuleIO -{ -// There are some examples: -// Generallly: -// { -// Input_Item item("suffix"); -// item.annotation = "the name of main output directory"; -// read_sync_string(input.suffix); -// this->add_item(item); -// } -// -// Specially: -// { -// Input_Item item("kspacing"); -// item.annotation = "unit in 1/bohr, should be > 0, default is 0 which -// means read KPT file"; -// -// item.read_value = [](const Input_Item& item, Parameter& para) { -// para.input.kspacing[0] = std::stod(item.str_values[0]); -// para.input.kspacing[1] = std::stod(item.str_values[1]); -// para.input.kspacing[2] = std::stod(item.str_values[2]); -// }; -// -// item.reset_value = [](const Input_Item& item, Parameter& para) { -// if(para.input.kspacing[0] <= 0) para.input.kspacing[0] = 1; -// }; -// -// item.check_value = [](const Input_Item& item, const Parameter& para) -// {assert(para.input.kspacing[0]>0);}; -// -// item.get_final_value = [](Input_Item& item, const Parameter& para) { -// item.final_value << para.input.kspacing[0] << " " << -// para.input.kspacing[1] << " " << para.input.kspacing[2]; -// }; -// -// add_doublevec_bcast(&Parameter::PARAMETER, N); -// this->add_item(item); -// } -void ReadInput::item_system() -{ - { - Input_Item item("suffix"); - item.annotation = "the name of main output directory"; - read_sync_string(input.suffix); - this->add_item(item); - } - { - Input_Item item("ntype"); - item.annotation = "atom species number"; - // check of ntype is done in check_ntype - read_sync_int(input.ntype); - this->add_item(item); - } - { - Input_Item item("calculation"); - item.annotation = "scf; relax; md; cell-relax; nscf; get_s; get_wf; get_pchg; gen_bessel; gen_opt_abfs; test_memory; test_neighbour"; - item.read_value = [](const Input_Item& item, Parameter& para) { - para.input.calculation = strvalue; - std::string& calculation = para.input.calculation; - }; - item.check_value = [](const Input_Item& item, const Parameter& para) { - const std::string& calculation = para.input.calculation; - std::vector callist = {"scf", - "relax", - "md", - "cell-relax", - "nscf", - "get_s", - "get_wf", - "get_pchg", - "gen_bessel", - "gen_opt_abfs", - "test_memory", - "test_neighbour"}; - if (std::find(callist.begin(), callist.end(), calculation) == callist.end()) - { - const std::string warningstr = nofound_str(callist, "calculation"); - ModuleBase::WARNING_QUIT("ReadInput", warningstr); - } - if (calculation == "get_pchg" || calculation == "get_wf") - { - if (para.input.basis_type == "pw") // xiaohui add 2013-09-01 - { - ModuleBase::WARNING_QUIT("ReadInput", - "calculate = get_pchg or get_wf " - "is only availble for LCAO."); - } - } - else if (calculation == "gen_bessel") - { - if (para.input.basis_type != "pw") - { - ModuleBase::WARNING_QUIT("ReadInput", "to generate descriptors, please use pw basis"); - } - } - }; - sync_string(input.calculation); - this->add_item(item); - } - { - Input_Item item("esolver_type"); - item.annotation = "the energy solver: ksdft, sdft, ofdft, tddft, lj, dp, ks-lr, lr"; - read_sync_string(input.esolver_type); - item.check_value = [](const Input_Item& item, const Parameter& para) { - const std::vector esolver_types = { "ksdft", "sdft", "ofdft", "tddft", "lj", "dp", "lr", "ks-lr" }; - if (std::find(esolver_types.begin(), esolver_types.end(), para.input.esolver_type) == esolver_types.end()) - { - const std::string warningstr = nofound_str(esolver_types, "esolver_type"); - ModuleBase::WARNING_QUIT("ReadInput", warningstr); - } - if (para.input.esolver_type == "dp") - { - if (access(para.input.mdp.pot_file.c_str(), 0) == -1) - { - ModuleBase::WARNING_QUIT("ReadInput", "Can not find DP model !"); - } - } - }; - item.reset_value = [](const Input_Item& item, Parameter& para) { - if (para.input.esolver_type == "lr" && para.input.calculation == "scf") - { // for LR-only calculation based on the ground-state, set calculation to "nscf" - para.input.calculation = "nscf"; - } - }; - this->add_item(item); - } - { - Input_Item item("symmetry"); - item.annotation = "the control of symmetry"; - read_sync_string(input.symmetry); - item.reset_value = [](const Input_Item& item, Parameter& para) { - if (para.input.symmetry == "default") - { - if (para.input.gamma_only || para.input.calculation == "nscf" || para.input.calculation == "get_s" - || para.input.calculation == "get_pchg" || para.input.calculation == "get_wf") - { - para.input.symmetry = "0"; // if md or exx, symmetry will be - // force-set to 0 or -1 later - } - else - { - para.input.symmetry = "1"; - } - } - if (para.input.calculation == "md") - { - para.input.symmetry = "0"; - } - if (para.input.efield_flag) - { - para.input.symmetry = "0"; - } - if (para.input.esolver_type == "tddft") - { - para.input.symmetry = "-1"; - } - if (para.input.qo_switch) - { - para.input.symmetry = "-1"; // disable kpoint reduce - } - if (para.input.berry_phase) - { - para.input.symmetry = "-1"; // disable kpoint reduce - } - }; - this->add_item(item); - } - { - Input_Item item("symmetry_prec"); - item.annotation = "accuracy for symmetry"; - read_sync_double(input.symmetry_prec); - this->add_item(item); - } - { - Input_Item item("symmetry_autoclose"); - item.annotation = "whether to close symmetry automatically when error " - "occurs in symmetry analysis"; - read_sync_bool(input.symmetry_autoclose); - this->add_item(item); - } - { - Input_Item item("cal_stress"); - item.annotation = "calculate the stress or not"; - item.reset_value = [](const Input_Item& item, Parameter& para) { - if (para.input.calculation == "md") - { - if (para.input.esolver_type == "lj" || para.input.esolver_type == "dp" - || para.input.mdp.md_type == "msst" || para.input.mdp.md_type == "npt") - { - para.input.cal_stress = true; - } - } - else if (para.input.calculation == "cell-relax") - { - para.input.cal_stress = true; - } - }; - read_sync_bool(input.cal_stress); - this->add_item(item); - } - { - Input_Item item("cal_force"); - item.annotation = "if calculate the force at the end of the electronic iteration"; - item.reset_value = [](const Input_Item& item, Parameter& para) { - std::vector use_force = {"cell-relax", "relax", "md"}; - std::vector not_use_force = {"get_wf", "get_pchg", "get_s"}; - if (std::find(use_force.begin(), use_force.end(), para.input.calculation) != use_force.end()) - { - if (!para.input.cal_force) - { - ModuleBase::GlobalFunc::AUTO_SET("cal_force", "true"); - } - para.input.cal_force = true; - } - else if (std::find(not_use_force.begin(), not_use_force.end(), para.input.calculation) != not_use_force.end()) - { - if (para.input.cal_force) - { - ModuleBase::GlobalFunc::AUTO_SET("cal_force", "false"); - } - para.input.cal_force = false; - } - }; - read_sync_bool(input.cal_force); - this->add_item(item); - } - { - Input_Item item("kpar"); - item.annotation = "devide all processors into kpar groups and k points " - "will be distributed among"; - read_sync_int(input.kpar); - item.reset_value = [](const Input_Item& item, Parameter& para) { -#ifdef __LCAO - if (para.inp.basis_type == "lcao") - { - para.sys.kpar_lcao = para.inp.kpar; - para.input.kpar = 1; - } -#endif - }; - item.check_value = [](const Input_Item& item, const Parameter& para) { - if (para.input.basis_type == "lcao" && para.input.kpar > 1) - { - ModuleBase::WARNING("ReadInput", "kpar > 1 has not been supported for lcao calculation."); - } - }; - this->add_item(item); - add_int_bcast(sys.kpar_lcao); - } - { - Input_Item item("bndpar"); - item.annotation = "devide all processors into bndpar groups and bands " - "will be distributed among each group"; - read_sync_int(input.bndpar); - item.reset_value = [](const Input_Item& item, Parameter& para) { - if (para.input.esolver_type != "sdft" && para.input.ks_solver != "bpcg") - { - para.input.bndpar = 1; - } - if (para.input.bndpar > GlobalV::NPROC) - { - para.input.bndpar = GlobalV::NPROC; - } - }; - item.check_value = [](const Input_Item& item, const Parameter& para) { - if (GlobalV::NPROC % para.input.bndpar != 0) - { - ModuleBase::WARNING_QUIT("ReadInput", "The number of processors can not be divided by bndpar"); - } - }; - this->add_item(item); - } - { - Input_Item item("latname"); - item.annotation = "the name of lattice name"; - read_sync_string(input.latname); - this->add_item(item); - } - { - Input_Item item("ecutwfc"); - item.annotation = "energy cutoff for wave functions"; - read_sync_double(input.ecutwfc); - item.reset_value = [](const Input_Item& item, Parameter& para) { - if (para.input.ecutwfc == 0) - { // 0 means no input value - if (para.input.ecutrho > 0) - { - para.input.ecutwfc = para.input.ecutrho / 4.0; - } - else if (para.input.basis_type == "lcao") - { - para.input.ecutwfc = 100; - } - else - { - para.input.ecutwfc = 50; - } - } - }; - item.check_value = [](const Input_Item& item, const Parameter& para) { - if (para.input.ecutwfc <= 0) - { - ModuleBase::WARNING_QUIT("ReadInput", "ecutwfc should be positive"); - } - }; - this->add_item(item); - } - { - Input_Item item("ecutrho"); - item.annotation = "energy cutoff for charge density and potential"; - read_sync_double(input.ecutrho); - item.reset_value = [](const Input_Item& item, Parameter& para) { - Input_para& input = para.input; - if (input.ecutrho <= 0.0) - { - input.ecutrho = 4.0 * input.ecutwfc; - } - if (input.nx * input.ny * input.nz == 0 && input.ecutrho / input.ecutwfc > 4 + 1e-8) - { - para.sys.double_grid = true; - } - }; - item.check_value = [](const Input_Item& item, const Parameter& para) { - if (para.input.ecutrho / para.input.ecutwfc < 4 - 1e-8) - { - ModuleBase::WARNING_QUIT("ReadInput", "ecutrho/ecutwfc must >= 4"); - } - if (para.sys.double_grid == true && para.input.basis_type == "lcao") - { - ModuleBase::WARNING_QUIT("ReadInput", "ecutrho/ecutwfc must = 4 for lcao calculation"); - } - }; - this->add_item(item); - } - { - Input_Item item("nx"); - item.annotation = "number of points along x axis for FFT grid"; - item.read_value = [](const Input_Item& item, Parameter& para) { - para.input.nx = intvalue; - }; - item.check_value = [](const Input_Item& item, const Parameter& para) { - if (para.input.nx * para.input.ny * para.input.nz == 0 && para.input.nx != 0) - { - ModuleBase::WARNING_QUIT("ReadInput", "nx, ny, nz should be all set to non-zero"); - } - }; - sync_int(input.nx); - this->add_item(item); - } - { - Input_Item item("ny"); - item.annotation = "number of points along y axis for FFT grid"; - item.read_value = [](const Input_Item& item, Parameter& para) { - para.input.ny = intvalue; - }; - item.check_value = [](const Input_Item& item, const Parameter& para) { - if (para.input.nx * para.input.ny * para.input.nz == 0 && para.input.ny != 0) - { - ModuleBase::WARNING_QUIT("ReadInput", "nx, ny, nz should be all set to non-zero"); - } - }; - sync_int(input.ny); - this->add_item(item); - } - { - Input_Item item("nz"); - item.annotation = "number of points along z axis for FFT grid"; - item.read_value = [](const Input_Item& item, Parameter& para) { - para.input.nz = intvalue; - }; - item.check_value = [](const Input_Item& item, const Parameter& para) { - if (para.input.nx * para.input.ny * para.input.nz == 0 && para.input.nz != 0) - { - ModuleBase::WARNING_QUIT("ReadInput", "nx, ny, nz should be all set to non-zero"); - } - }; - sync_int(input.nz); - this->add_item(item); - } - { - Input_Item item("ndx"); - item.annotation = "number of points along x axis for FFT smooth grid"; - read_sync_int(input.ndx); - item.reset_value = [](const Input_Item& item, Parameter& para) { - if (para.input.ndx > para.input.nx) - { - para.sys.double_grid = true; - } - }; - item.check_value = [](const Input_Item& item, const Parameter& para) { - if (!item.is_read()) - { - return; - } - if (para.input.ndx * para.input.ndy * para.input.ndz == 0 && para.input.ndx != 0) - { - ModuleBase::WARNING_QUIT("ReadInput", "ndx, ndy, ndz should be all set to non-zero"); - } - if (para.input.ndx < para.input.nx) - { - ModuleBase::WARNING_QUIT("ReadInput", "ndx should be greater than or equal to nx"); - } - }; - this->add_item(item); - } - { - Input_Item item("ndy"); - item.annotation = "number of points along y axis for FFT smooth grid"; - read_sync_int(input.ndy); - item.reset_value = [](const Input_Item& item, Parameter& para) { - if (para.input.ndy > para.input.ny) - { - para.sys.double_grid = true; - } - }; - item.check_value = [](const Input_Item& item, const Parameter& para) { - if (!item.is_read()) { - return; -} - if (para.input.ndx * para.input.ndy * para.input.ndz == 0 && para.input.ndy != 0) - { - ModuleBase::WARNING_QUIT("ReadInput", "ndx, ndy, ndz should be all set to non-zero"); - } - if (para.input.ndy < para.input.ny) - { - ModuleBase::WARNING_QUIT("ReadInput", "ndy should be greater than or equal to ny"); - } - }; - this->add_item(item); - } - { - Input_Item item("ndz"); - item.annotation = "number of points along z axis for FFT smooth grid"; - read_sync_int(input.ndz); - item.reset_value = [](const Input_Item& item, Parameter& para) { - if (para.input.ndy > para.input.ny) - { - para.sys.double_grid = true; - } - }; - item.check_value = [](const Input_Item& item, const Parameter& para) { - if (!item.is_read()) { - return; -} - if (para.input.ndx * para.input.ndy * para.input.ndz == 0 && para.input.ndz != 0) - { - ModuleBase::WARNING_QUIT("ReadInput", "ndx, ndy, ndz should be all set to non-zero"); - } - if (para.input.ndz < para.input.nz) - { - ModuleBase::WARNING_QUIT("ReadInput", "ndz should be greater than or equal to nz"); - } - }; - this->add_item(item); - } - { - Input_Item item("cell_factor"); - item.annotation = "used in the construction of the pseudopotential tables"; - read_sync_double(input.cell_factor); - item.reset_value = [](const Input_Item& item, Parameter& para) { - if (para.input.calculation == "cell-relax" && para.input.cell_factor < 2.0) - { - para.input.cell_factor = 2.0; // follows QE - } - }; - this->add_item(item); - } - { - Input_Item item("erf_ecut"); - item.annotation = "the value of the constant energy cutoff"; - read_sync_double(input.erf_ecut); - this->add_item(item); - } - { - Input_Item item("erf_height"); - item.annotation = "the height of the energy step for reciprocal vectors"; - read_sync_double(input.erf_height); - this->add_item(item); - } - { - Input_Item item("erf_sigma"); - item.annotation = "the width of the energy step for reciprocal vectors"; - read_sync_double(input.erf_sigma); - this->add_item(item); - } - { - Input_Item item("fft_mode"); - item.annotation = "mode of FFTW"; - read_sync_int(input.fft_mode); - this->add_item(item); - } - { - Input_Item item("diag_subspace"); - item.annotation = "method of subspace diagonalization in dav_subspace. 0:LaPack; 1:genelpa, 2:scalapack"; - read_sync_int(input.diag_subspace); - this->add_item(item); - } - { - Input_Item item("init_wfc"); - item.annotation = "start wave functions are from 'atomic', " - "'atomic+random', 'random' or"; - item.reset_value = [](const Input_Item& item, Parameter& para) { - if (para.input.calculation == "get_pchg" || para.input.calculation == "get_wf") - { - para.input.init_wfc = "file"; - } - if (para.input.basis_type == "lcao_in_pw") - { - if (para.input.init_wfc != "nao") - { - para.input.init_wfc = "nao"; - GlobalV::ofs_warning << "init_wfc is set to nao when " - "basis_type is lcao_in_pw" - << std::endl; - } - } - }; - read_sync_string(input.init_wfc); - this->add_item(item); - } - { - Input_Item item("pw_seed"); - item.annotation = "random seed for initializing wave functions"; - read_sync_int(input.pw_seed); - this->add_item(item); - } - { - Input_Item item("init_chg"); - item.annotation = "start charge is from 'atomic' or file"; - read_sync_string(input.init_chg); - item.reset_value = [](const Input_Item& item, Parameter& para) { - if (para.input.calculation == "get_pchg" || para.input.calculation == "get_wf") - { - para.input.init_chg = "atomic"; - } - if (para.input.calculation == "nscf" || para.input.calculation == "get_s") - { - if (para.input.init_chg != "file") - { - ModuleBase::GlobalFunc::AUTO_SET("init_chg", para.input.init_chg); - } - para.input.init_chg = "file"; - } - }; - item.check_value = [](const Input_Item& item, const Parameter& para) { - const std::vector init_chgs = {"atomic", "file", "wfc", "auto"}; - if (std::find(init_chgs.begin(), init_chgs.end(), para.input.init_chg) == init_chgs.end()) - { - const std::string warningstr = nofound_str(init_chgs, "init_chg"); - ModuleBase::WARNING_QUIT("ReadInput", warningstr); - } - }; - this->add_item(item); - } - { - Input_Item item("dm_to_rho"); - item.annotation = "reads dmr in npz format and calculates electron density"; - read_sync_bool(input.dm_to_rho); - item.check_value = [](const Input_Item& item, const Parameter& para) { - if (para.input.dm_to_rho && GlobalV::NPROC > 1) - { - ModuleBase::WARNING_QUIT("ReadInput", "dm_to_rho is not available for parallel calculations"); - } - if (para.input.dm_to_rho && para.inp.gamma_only) - { - ModuleBase::WARNING_QUIT("ReadInput", "dm_to_rho is not available for gamma_only calculations"); - } - if (para.input.dm_to_rho) - { -#ifndef __USECNPY - ModuleBase::WARNING_QUIT("ReadInput", - "to write in npz format, please " - "recompile with -DENABLE_CNPY=1"); -#endif - } - }; - this->add_item(item); - } - { - Input_Item item("chg_extrap"); - item.annotation = "atomic; first-order; second-order; dm:coefficients of SIA"; - read_sync_string(input.chg_extrap); - item.reset_value = [](const Input_Item& item, Parameter& para) { - if (para.input.chg_extrap == "default" && para.input.calculation == "md") - { - para.input.chg_extrap = "second-order"; - } - else if (para.input.chg_extrap == "default" - && (para.input.calculation == "relax" || para.input.calculation == "cell-relax")) - { - para.input.chg_extrap = "first-order"; - } - else if (para.input.chg_extrap == "default") - { - para.input.chg_extrap = "atomic"; - } - if (para.input.calculation == "get_wf" || para.input.calculation == "get_pchg") - { - para.input.chg_extrap = "atomic"; - } - }; - this->add_item(item); - } - { - Input_Item item("init_vel"); - item.annotation = "read velocity from STRU or not"; - item.reset_value = [](const Input_Item& item, Parameter& para) { - if (para.input.calculation == "md") - { - if (para.input.mdp.md_tfirst < 0 || para.input.mdp.md_restart) - { - para.input.init_vel = true; - } - } - }; - read_sync_bool(input.init_vel); - this->add_item(item); - } - { - Input_Item item("stru_file"); - item.annotation = "the filename of file containing atom positions"; - read_sync_string(input.stru_file); - this->add_item(item); - } - { - Input_Item item("kpoint_file"); - item.annotation = "the name of file containing k points"; - read_sync_string(input.kpoint_file); - item.reset_value = [](const Input_Item& item, Parameter& para) { - if (para.input.stru_file == "") - { - GlobalV::ofs_warning << "kpoint_file is set to KPT when stru_file is not set" << std::endl; - para.input.stru_file = "KPT"; - } - }; - this->add_item(item); - } - { - Input_Item item("pseudo_dir"); - item.annotation = "the directory containing pseudo files"; - item.read_value = [](const Input_Item& item, Parameter& para) { - if(item.get_size() == 0) - { - para.input.pseudo_dir = ""; - } - else - { - para.input.pseudo_dir = to_dir(strvalue); - } - }; - sync_string(input.pseudo_dir); - this->add_item(item); - } - { - Input_Item item("orbital_dir"); - item.annotation = "the directory containing orbital files"; - item.read_value = [](const Input_Item& item, Parameter& para) { - if(item.get_size() == 0) - { - para.input.orbital_dir = ""; - } - else - { - para.input.orbital_dir = to_dir(strvalue); - } - }; - sync_string(input.orbital_dir); - this->add_item(item); - } - { - Input_Item item("read_file_dir"); - item.annotation = "directory of files for reading"; - read_sync_string(input.read_file_dir); - item.reset_value = [](const Input_Item& item, Parameter& para) { - if (para.input.read_file_dir == "auto") - { - para.input.read_file_dir = "OUT." + para.input.suffix; - } - para.input.read_file_dir = to_dir(para.input.read_file_dir); - }; - this->add_item(item); - } - { - Input_Item item("restart_load"); - item.annotation = "restart from disk"; - read_sync_bool(input.restart_load); - this->add_item(item); - } - { - Input_Item item("wannier_card"); - item.annotation = "input card for wannier functions"; - read_sync_string(input.wannier_card); - this->add_item(item); - } - { - Input_Item item("mem_saver"); - item.annotation = "Only for nscf calculations. if set to 1, then a " - "memory saving technique will be used for " - "many k point calculations."; - read_sync_int(input.mem_saver); - item.reset_value = [](const Input_Item& item, Parameter& para) { - if (para.input.mem_saver == 1) - { - if (para.input.calculation == "scf" || para.input.calculation == "relax") - { - para.input.mem_saver = 0; - ModuleBase::GlobalFunc::AUTO_SET("mem_saver", "0"); - } - } - }; - this->add_item(item); - } - { - Input_Item item("diago_proc"); - item.annotation = "the number of procs used to do diagonalization"; - read_sync_int(input.diago_proc); - item.reset_value = [](const Input_Item& item, Parameter& para) { - if (para.input.diago_proc > GlobalV::NPROC || para.input.diago_proc <= 0) - { - para.input.diago_proc = GlobalV::NPROC; - } - }; - this->add_item(item); - } - { - Input_Item item("nbspline"); - item.annotation = "the order of B-spline basis"; - read_sync_int(input.nbspline); - this->add_item(item); - } - { - Input_Item item("kspacing"); - item.annotation = "unit in 1/bohr, should be > 0, default is 0 which " - "means read KPT file"; - item.read_value = [](const Input_Item& item, Parameter& para) { - size_t count = item.get_size(); - if (count == 1) - { - para.input.kspacing[0] = para.input.kspacing[1] = para.input.kspacing[2] = doublevalue; - } - else if (count == 3) - { - para.input.kspacing[0] = std::stod(item.str_values[0]); - para.input.kspacing[1] = std::stod(item.str_values[1]); - para.input.kspacing[2] = std::stod(item.str_values[2]); - } - else - { - ModuleBase::WARNING_QUIT("ReadInput", "kspacing can only accept one or three values."); - } - }; - sync_doublevec(input.kspacing, 3, 0.0); - item.check_value = [](const Input_Item& item, const Parameter& para) { - int kspacing_zero_num = 0; - const std::vector& kspacing = para.input.kspacing; - for (int i = 0; i < 3; i++) - { - if (kspacing[i] < 0.0) - { - ModuleBase::WARNING_QUIT("ReadInput", "kspacing must > 0"); - } - else if (kspacing[i] == 0.0) - { - kspacing_zero_num++; - } - } - if (kspacing_zero_num > 0 && kspacing_zero_num < 3) - { - std::cout << "kspacing: " << kspacing[0] << " " << kspacing[1] << " " << kspacing[2] << std::endl; - ModuleBase::WARNING_QUIT("ReadInput", "kspacing must > 0"); - } - }; - this->add_item(item); - } - { - Input_Item item("min_dist_coef"); - item.annotation = "factor related to the allowed minimum distance " - "between two atoms"; - read_sync_double(input.min_dist_coef); - this->add_item(item); - } - { - Input_Item item("device"); - item.annotation = "the computing device for ABACUS"; - read_sync_string(input.device); - item.reset_value = [](const Input_Item& item, Parameter& para) { - para.input.device=base_device::information::get_device_flag( - para.inp.device, para.inp.basis_type); - }; - item.check_value = [](const Input_Item& item, const Parameter& para) { - std::vector avail_list = {"cpu", "gpu"}; - if (std::find(avail_list.begin(), avail_list.end(), para.input.device) == avail_list.end()) - { - const std::string warningstr = nofound_str(avail_list, "device"); - ModuleBase::WARNING_QUIT("ReadInput", warningstr); - } - }; - this->add_item(item); - } - { - Input_Item item("precision"); - item.annotation = "the computing precision for ABACUS"; - read_sync_string(input.precision); - item.check_value = [](const Input_Item& item, const Parameter& para) { - std::vector avail_list = {"single", "double"}; - if (std::find(avail_list.begin(), avail_list.end(), para.input.precision) == avail_list.end()) - { - const std::string warningstr = nofound_str(avail_list, "precision"); - ModuleBase::WARNING_QUIT("ReadInput", warningstr); - } - if (para.inp.precision == "single" && para.inp.basis_type == "lcao") - { - ModuleBase::WARNING_QUIT( - "ReadInput", - "Single precision is not supported for NAO basis,\nPlease use double precision for NAO basis.\n"); - } - // cpu single precision is not supported while float_fftw lib is not available - if (para.inp.device == "cpu" && para.inp.precision == "single") - { -#ifndef __ENABLE_FLOAT_FFTW - ModuleBase::WARNING_QUIT( - "ReadInput", - "Single precision with cpu is not supported while float_fftw lib is not available; \ - \n Please recompile with cmake flag \"-DENABLE_FLOAT_FFTW=ON\".\n"); -#endif - } - }; - this->add_item(item); - } -} - -} // namespace ModuleIO diff --git a/source/source_io/read_input_item_tddft.cpp b/source/source_io/read_input_item_tddft.cpp deleted file mode 100644 index 89751fd224..0000000000 --- a/source/source_io/read_input_item_tddft.cpp +++ /dev/null @@ -1,404 +0,0 @@ -#include "source_base/constants.h" -#include "source_base/tool_quit.h" -#include "read_input.h" -#include "read_input_tool.h" - -namespace ModuleIO -{ -void ReadInput::item_rt_tddft() -{ - // real time TDDFT - { - Input_Item item("td_dt"); - item.annotation = "time step for evolving wavefunction"; - item.reset_value = [](const Input_Item& item, Parameter& para) { - if (para.input.td_dt == -1.0) - { - GlobalV::ofs_running << "td_dt don't exist, set td_dt with md_dt" << std::endl; - para.input.td_dt = para.input.mdp.md_dt / para.input.estep_per_md; - } - }; - read_sync_double(input.td_dt); - this->add_item(item); - } - { - Input_Item item("estep_per_md"); - item.annotation = "steps of force change"; - read_sync_int(input.estep_per_md); - this->add_item(item); - } - { - Input_Item item("td_vext"); - item.annotation = "add extern potential or not"; - read_sync_bool(input.td_vext); - this->add_item(item); - } - // { - // Input_Item item("td_vext_dire"); - // item.annotation = "extern potential direction"; - // item.read_value = [](const Input_Item& item, Parameter& para) { - // para.input.td_vext_dire = longstring(item.str_values); - // }; - // sync_string(input.td_vext_dire); - // this->add_item(item); - // } - { - Input_Item item("td_vext_dire"); - item.annotation = "extern potential direction"; - item.read_value = [](const Input_Item& item, Parameter& para) { - parse_expression(item.str_values, para.input.td_vext_dire); - }; - item.get_final_value = [](Input_Item& item, const Parameter& para) { - if (item.is_read()) - { - item.final_value.str(longstring(item.str_values)); - } - }; - add_intvec_bcast(input.td_vext_dire, para.input.td_vext_dire.size(), 0); - this->add_item(item); - } - { - Input_Item item("init_vecpot_file"); - item.annotation = "init vector potential through file or not"; - read_sync_bool(input.init_vecpot_file); - this->add_item(item); - } - { - Input_Item item("td_print_eij"); - item.annotation = "print eij or not"; - read_sync_double(input.td_print_eij); - this->add_item(item); - } - { - Input_Item item("td_edm"); - item.annotation = "the method to calculate the energy density matrix"; - read_sync_int(input.td_edm); - this->add_item(item); - } - { - Input_Item item("td_propagator"); - item.annotation = "method of propagator"; - read_sync_int(input.propagator); - this->add_item(item); - } - { - Input_Item item("td_stype"); - item.annotation = "type of electric field in space domain"; - read_sync_int(input.td_stype); - this->add_item(item); - } - { - Input_Item item("td_ttype"); - item.annotation = "type of electric field in time domain"; - item.read_value = [](const Input_Item& item, Parameter& para) { - para.input.td_ttype = longstring(item.str_values); - }; - sync_string(input.td_ttype); - this->add_item(item); - } - { - Input_Item item("td_tstart"); - item.annotation = " number of steps where electric field starts"; - read_sync_int(input.td_tstart); - this->add_item(item); - } - { - Input_Item item("td_tend"); - item.annotation = "number of steps where electric field ends"; - read_sync_int(input.td_tend); - this->add_item(item); - } - { - Input_Item item("td_lcut1"); - item.annotation = "cut1 of interval in length gauge"; - read_sync_double(input.td_lcut1); - this->add_item(item); - } - { - Input_Item item("td_lcut2"); - item.annotation = "cut2 of interval in length gauge"; - read_sync_double(input.td_lcut2); - this->add_item(item); - } - { - Input_Item item("td_gauss_freq"); - item.annotation = "frequency (freq) of Gauss type electric field"; - item.read_value = [](const Input_Item& item, Parameter& para) { - para.input.td_gauss_freq = longstring(item.str_values); - }; - sync_string(input.td_gauss_freq); - this->add_item(item); - } - { - Input_Item item("td_gauss_phase"); - item.annotation = "phase of Gauss type electric field"; - item.read_value = [](const Input_Item& item, Parameter& para) { - para.input.td_gauss_phase = longstring(item.str_values); - }; - sync_string(input.td_gauss_phase); - this->add_item(item); - } - { - Input_Item item("td_gauss_sigma"); - item.annotation = "sigma of Gauss type electric field"; - item.read_value = [](const Input_Item& item, Parameter& para) { - para.input.td_gauss_sigma = longstring(item.str_values); - }; - sync_string(input.td_gauss_sigma); - this->add_item(item); - } - { - Input_Item item("td_gauss_t0"); - item.annotation = "step number of time center (t0) of Gauss type electric field"; - item.read_value = [](const Input_Item& item, Parameter& para) { - para.input.td_gauss_t0 = longstring(item.str_values); - }; - sync_string(input.td_gauss_t0); - this->add_item(item); - } - { - Input_Item item("td_gauss_amp"); - item.annotation = "amplitude of Gauss type electric field"; - item.read_value = [](const Input_Item& item, Parameter& para) { - para.input.td_gauss_amp = longstring(item.str_values); - }; - sync_string(input.td_gauss_amp); - this->add_item(item); - } - { - Input_Item item("td_trape_freq"); - item.annotation = "frequency of Trapezoid type electric field"; - item.read_value = [](const Input_Item& item, Parameter& para) { - para.input.td_trape_freq = longstring(item.str_values); - }; - sync_string(input.td_trape_freq); - this->add_item(item); - } - { - Input_Item item("td_trape_phase"); - item.annotation = "phase of Trapezoid type electric field"; - item.read_value = [](const Input_Item& item, Parameter& para) { - para.input.td_trape_phase = longstring(item.str_values); - }; - sync_string(input.td_trape_phase); - this->add_item(item); - } - { - Input_Item item("td_trape_t1"); - item.annotation = "t1 of Trapezoid type electric field"; - item.read_value = [](const Input_Item& item, Parameter& para) { - para.input.td_trape_t1 = longstring(item.str_values); - }; - sync_string(input.td_trape_t1); - this->add_item(item); - } - { - Input_Item item("td_trape_t2"); - item.annotation = "t2 of Trapezoid type electric field"; - item.read_value = [](const Input_Item& item, Parameter& para) { - para.input.td_trape_t2 = longstring(item.str_values); - }; - sync_string(input.td_trape_t2); - this->add_item(item); - } - { - Input_Item item("td_trape_t3"); - item.annotation = "t3 of Trapezoid type electric field"; - item.read_value = [](const Input_Item& item, Parameter& para) { - para.input.td_trape_t3 = longstring(item.str_values); - }; - sync_string(input.td_trape_t3); - this->add_item(item); - } - { - Input_Item item("td_trape_amp"); - item.annotation = "amplitude of Trapezoid type electric field"; - item.read_value = [](const Input_Item& item, Parameter& para) { - para.input.td_trape_amp = longstring(item.str_values); - }; - sync_string(input.td_trape_amp); - this->add_item(item); - } - { - Input_Item item("td_trigo_freq1"); - item.annotation = "frequency 1 of Trigonometric type electric field"; - item.read_value = [](const Input_Item& item, Parameter& para) { - para.input.td_trigo_freq1 = longstring(item.str_values); - }; - sync_string(input.td_trigo_freq1); - this->add_item(item); - } - { - Input_Item item("td_trigo_freq2"); - item.annotation = "frequency 2 of Trigonometric type electric field"; - item.read_value = [](const Input_Item& item, Parameter& para) { - para.input.td_trigo_freq2 = longstring(item.str_values); - }; - sync_string(input.td_trigo_freq2); - this->add_item(item); - } - { - Input_Item item("td_trigo_phase1"); - item.annotation = "phase 1 of Trigonometric type electric field"; - item.read_value = [](const Input_Item& item, Parameter& para) { - para.input.td_trigo_phase1 = longstring(item.str_values); - }; - sync_string(input.td_trigo_phase1); - this->add_item(item); - } - { - Input_Item item("td_trigo_phase2"); - item.annotation = "phase 2 of Trigonometric type electric field"; - item.read_value = [](const Input_Item& item, Parameter& para) { - para.input.td_trigo_phase2 = longstring(item.str_values); - }; - sync_string(input.td_trigo_phase2); - this->add_item(item); - } - { - Input_Item item("td_trigo_amp"); - item.annotation = "amplitude of Trigonometric type electric field"; - item.read_value = [](const Input_Item& item, Parameter& para) { - para.input.td_trigo_amp = longstring(item.str_values); - }; - sync_string(input.td_trigo_amp); - this->add_item(item); - } - { - Input_Item item("td_heavi_t0"); - item.annotation = "t0 of Heaviside type electric field"; - item.read_value = [](const Input_Item& item, Parameter& para) { - para.input.td_heavi_t0 = longstring(item.str_values); - }; - sync_string(input.td_heavi_t0); - this->add_item(item); - } - { - Input_Item item("td_heavi_amp"); - item.annotation = "amplitude of Heaviside type electric field"; - item.read_value = [](const Input_Item& item, Parameter& para) { - para.input.td_heavi_amp = longstring(item.str_values); - }; - sync_string(input.td_heavi_amp); - this->add_item(item); - } - { - Input_Item item("ocp"); - item.annotation = "change occupation or not"; - read_sync_bool(input.ocp); - this->add_item(item); - } - { - Input_Item item("ocp_set"); - item.annotation = "set occupation"; - item.read_value = [](const Input_Item& item, Parameter& para) { - parse_expression(item.str_values, para.input.ocp_kb); - }; - item.get_final_value = [](Input_Item& item, const Parameter& para) { - if(item.is_read()) - { - item.final_value.str(longstring(item.str_values)); - } - }; - add_doublevec_bcast(input.ocp_kb, para.input.ocp_kb.size(), 0.0); - this->add_item(item); - } - - -} -void ReadInput::item_lr_tddft() -{ - // Linear Responce TDDFT - { - Input_Item item("lr_nstates"); - item.annotation = "the number of 2-particle states to be solved"; - read_sync_int(input.lr_nstates); - this->add_item(item); - } - { - Input_Item item("nocc"); - item.annotation = "the number of occupied orbitals to form the 2-particle basis ( <= nelec/2)"; - read_sync_int(input.nocc); - item.reset_value = [](const Input_Item& item, Parameter& para) { - const int nocc_default = std::max(static_cast(para.input.nelec + 1) / 2, para.input.nbands); - if (para.input.nocc <= 0 || para.input.nocc > nocc_default) { para.input.nocc = nocc_default; } - }; - this->add_item(item); - } - { - Input_Item item("nvirt"); - item.annotation = "the number of virtual orbitals to form the 2-particle basis (nocc + nvirt <= nbands)"; - read_sync_int(input.nvirt); - this->add_item(item); - } - { - Input_Item item("xc_kernel"); - item.annotation = "exchange correlation (XC) kernel for LR-TDDFT"; - read_sync_string(input.xc_kernel); - this->add_item(item); - } - { - Input_Item item("lr_init_xc_kernel"); - item.annotation = "The method to initalize the xc kernel"; - item.read_value = [](const Input_Item& item, Parameter& para) { - size_t count = item.get_size(); - auto& ifxc = para.input.lr_init_xc_kernel; - for (int i = 0; i < count; i++) { ifxc.push_back(item.str_values[i]); } - }; - item.reset_value = [](const Input_Item& item, Parameter& para) { - if (para.input.lr_init_xc_kernel.empty()) { para.input.lr_init_xc_kernel.push_back("default"); } - }; - sync_stringvec(input.lr_init_xc_kernel, para.input.lr_init_xc_kernel.size(), "default"); - this->add_item(item); - } - { - Input_Item item("lr_solver"); - item.annotation = "the eigensolver for LR-TDDFT"; - read_sync_string(input.lr_solver); - this->add_item(item); - } - { - Input_Item item("lr_thr"); - item.annotation = "convergence threshold of the LR-TDDFT eigensolver"; - read_sync_double(input.lr_thr); - this->add_item(item); - } - { - Input_Item item("out_wfc_lr"); - item.annotation = "whether to output the eigenvectors (excitation amplitudes) in the particle-hole basis"; - read_sync_bool(input.out_wfc_lr); - this->add_item(item); - } - { - Input_Item item("lr_unrestricted"); - item.annotation = "Whether to use unrestricted construction for LR-TDDFT"; - read_sync_bool(input.lr_unrestricted); - this->add_item(item); - } - { - Input_Item item("abs_wavelen_range"); - item.annotation = "the range of wavelength(nm) to output the absorption spectrum "; - item.read_value = [](const Input_Item& item, Parameter& para) { - size_t count = item.get_size(); - for (int i = 0; i < count; i++) - { - para.input.abs_wavelen_range.push_back(std::stod(item.str_values[i])); - } - }; - sync_doublevec(input.abs_wavelen_range, 2, 0.0); - this->add_item(item); - } - { - Input_Item item("abs_gauge"); - item.annotation = "whether to use length or velocity gauge to calculate the absorption spectrum in LR-TDDFT"; - read_sync_string(input.abs_gauge); - this->add_item(item); - } - { - Input_Item item("abs_broadening"); - item.annotation = "the broadening (eta) for LR-TDDFT absorption spectrum"; - read_sync_double(input.abs_broadening); - this->add_item(item); - } -} -} diff --git a/source/source_io/read_wfc_lcao.cpp b/source/source_io/read_wfc_lcao.cpp deleted file mode 100644 index 7738979aaa..0000000000 --- a/source/source_io/read_wfc_lcao.cpp +++ /dev/null @@ -1,492 +0,0 @@ -#include "source_io/read_wfc_lcao.h" - -#include "source_base/formatter.h" -#include "source_base/tool_quit.h" - -#include -#include -#include -#include - -#ifdef __MPI -#include "source_base/parallel_common.h" -#endif - -/* -template -void ModuleIO::read_wfc_lcao(const std::string& file, - int& ik, - ModuleBase::Vector3& kvec_c, - int& nbands, - int& nbasis, - std::vector>& lowf, - std::vector& ekb, - std::vector& occ, - double& wk) //<[out] wavefunction coefficients -{ - // assert the T must be double or float - std::ifstream ifs(file.c_str()); - if (!ifs) - { - ModuleBase::WARNING_QUIT("ModuleIO::read_wfc_lcao", "open file failed: " + file); - } - // will use line-by-line parse - std::string line; - bool read_kvec = false; - int iband = 0; - int ilocal = 0; - - wk = 1.0; - while (std::getline(ifs, line)) - { - // remove leading and trailing whitespaces - line = std::regex_replace(line, std::regex("^ +| +$|( ) +"), "$1"); - if (FmtCore::endswith(line, "(index of k points)")) - { - std::vector result = FmtCore::split(line); - ik = std::stoi(result[0]); - read_kvec = true; - continue; - } - if (read_kvec) - { - const std::vector result = FmtCore::split(line); - kvec_c.x = std::stod(result[0]); - kvec_c.y = std::stod(result[1]); - kvec_c.z = std::stod(result[2]); - read_kvec = false; - continue; - } - if (FmtCore::endswith(line, "(number of bands)")) - { - std::vector result = FmtCore::split(line); - nbands = std::stoi(result[0]); - ekb.resize(nbands, 0.0); // initialize ekb - occ.resize(nbands, 0.0); // initialize occ - } - else if (FmtCore::endswith(line, "(number of orbitals)")) - { - std::vector result = FmtCore::split(line); - nbasis = std::stoi(result[0]); - lowf.resize(nbands * nbasis, std::complex(0.0, 0.0)); // initialize lowf - } - else if (FmtCore::endswith(line, "(band)")) - { - std::vector result = FmtCore::split(line); - assert((ilocal == 0) || (ilocal == nbasis)); - iband = std::stoi(result[0]) - 1; - ilocal = 0; // reset ilocal - } - else if (FmtCore::endswith(line, "(Ry)")) - { - std::vector result = FmtCore::split(line); - ekb[iband] = std::stod(result[0]); - } - else if (FmtCore::endswith(line, "(Occupations)")) - { - std::vector result = FmtCore::split(line); - occ[iband] = std::stod(result[0]); - assert(ilocal == 0); - } - else // read wavefunction coefficients - { - const std::vector result = FmtCore::split(line); - // for the case the complex number is written as a b - for (int i = 0; i < result.size(); i += 2) - { - lowf[iband * nbasis + ilocal] = std::complex(std::stod(result[i]), std::stod(result[i + 1])); - ilocal += 1; - } - } - } - assert(lowf.size() == nbands * nbasis); - assert(iband == nbands - 1); - assert(ilocal == nbasis); -} - -// instantiate the template function -template void ModuleIO::read_wfc_lcao(const std::string& file, - int& ik, - ModuleBase::Vector3& kvec_c, - int& nbands, - int& nbasis, - std::vector>& lowf, - std::vector& ekb, - std::vector& occ, - double& wk); - -template void ModuleIO::read_wfc_lcao(const std::string& file, - int& ik, - ModuleBase::Vector3& kvec_c, - int& nbands, - int& nbasis, - std::vector>& lowf, - std::vector& ekb, - std::vector& occ, - double& wk); - -template -void ModuleIO::read_wfc_lcao(const std::string& file, - int& ik, - ModuleBase::Vector3& kvec_c, - int& nbands, - int& nbasis, - std::vector& lowf, - std::vector& ekb, - std::vector& occ, - double& wk) -{ - std::ifstream ifs(file.c_str()); - if (!ifs) - { - ModuleBase::WARNING_QUIT("ModuleIO::read_wfc_lcao", "open file failed: " + file); - } - // will use line-by-line parse - std::string line; - bool read_kvec = false; - int iband = 0; - int ilocal = 0; - - ik = 0; - kvec_c = ModuleBase::Vector3(0.0, 0.0, 0.0); - wk = 1.0; - while (std::getline(ifs, line)) - { - // remove leading and trailing whitespaces - line = std::regex_replace(line, std::regex("^ +| +$|( ) +"), "$1"); - if (read_kvec) - { - const std::vector result = FmtCore::split(line); - kvec_c.x = std::stod(result[0]); - kvec_c.y = std::stod(result[1]); - kvec_c.z = std::stod(result[2]); - read_kvec = false; - continue; - } - if (FmtCore::endswith(line, "(number of bands)")) - { - std::vector result = FmtCore::split(line); - nbands = std::stoi(result[0]); - ekb.resize(nbands, 0.0); // initialize ekb - occ.resize(nbands, 0.0); // initialize occ - } - else if (FmtCore::endswith(line, "(number of orbitals)")) - { - std::vector result = FmtCore::split(line); - nbasis = std::stoi(result[0]); - lowf.resize(nbands * nbasis, 0.0); // initialize lowf - } - else if (FmtCore::endswith(line, "(band)")) - { - std::vector result = FmtCore::split(line); - assert((ilocal == 0) || (ilocal == nbasis)); - iband = std::stoi(result[0]) - 1; - ilocal = 0; // reset ilocal - } - else if (FmtCore::endswith(line, "(Ry)")) - { - std::vector result = FmtCore::split(line); - ekb[iband] = std::stod(result[0]); - } - else if (FmtCore::endswith(line, "(Occupations)")) - { - std::vector result = FmtCore::split(line); - occ[iband] = std::stod(result[0]); - assert(ilocal == 0); - } - else // read wavefunction coefficients - { - const std::vector result = FmtCore::split(line); - for (const auto& token: result) - { - lowf[iband * nbasis + ilocal] = static_cast(std::stod(token)); - ilocal += 1; - } - } - } - assert(lowf.size() == nbands * nbasis); - assert(iband == nbands - 1); - assert(ilocal == nbasis); -} - -// instantiate the template function -template void ModuleIO::read_wfc_lcao(const std::string& file, - int& ik, - ModuleBase::Vector3& kvec_c, - int& nbands, - int& nbasis, - std::vector& lowf, - std::vector& ekb, - std::vector& occ, - double& wk); - -template void ModuleIO::read_wfc_lcao(const std::string& file, - int& ik, - ModuleBase::Vector3& kvec_c, - int& nbands, - int& nbasis, - std::vector& lowf, - std::vector& ekb, - std::vector& occ, - double& wk); - -#ifdef __MPI -template -void ModuleIO::restart_from_file(const std::string& out_dir, // hard-code the file name to be WFC_NAO_K*.txt? - const Parallel_2D& p2d, - const int& nks, - int& nbands, - int& nbasis, - std::vector& lowf_loc, - std::vector& ekb, - std::vector& occ, - std::vector>& kvec_c, - std::vector& wk) -{ - // reset vectors - lowf_loc.clear(); - ekb.clear(); - occ.clear(); - kvec_c.clear(); - wk.clear(); - const bool gamma_only = std::is_same::value || std::is_same::value; - const bool multi_k = std::is_same>::value || std::is_same>::value; - assert(gamma_only || multi_k); - const std::string file_prefix = gamma_only ? "WFC_GAMMA" : "WFC_NAO_K"; - // MPI-related variables init - int iproc=0; - - MPI_Comm_rank(p2d.comm(), &iproc); - // then start - int nbands_ = -1, nbasis_ = -1; - - // in LCAO, nks == nkstot - for (int ik = 0; ik < nks; ik++) - { - // check existence of file - const std::string file = out_dir + "/" + file_prefix + std::to_string(ik + 1) + ".txt"; - std::ifstream ifs(file); - if (!ifs) - { - ModuleBase::WARNING_QUIT("Module_IO::restart_from_file", "open file failed: " + file); - } - - std::vector lowf_glb; - std::vector lowf_loc_k; - std::vector ekb_; - std::vector occ_; - ModuleBase::Vector3 kvec; - double wk_ = 0.0; - - if (iproc == 0) // only one rank is needed to read the global lowf, ekb, ... - { - int ik_ = 0; - read_wfc_lcao(file, ik_, kvec, nbands, nbasis, lowf_glb, ekb_, occ_, wk_); - - assert(ik_ == ik + 1); // check the consistency of ik - assert(nbands == nbands_ || nbands_ == -1); // check the consistency of nbands - assert(nbasis == nbasis_ || nbasis_ == -1); // check the consistency of nbasis - - nbands_ = (nbands_ == -1) ? nbands : nbands_; - nbasis_ = (nbasis_ == -1) ? nbasis : nbasis_; - - ekb.insert(ekb.end(), ekb_.begin(), ekb_.end()); - occ.insert(occ.end(), occ_.begin(), occ_.end()); - wk.push_back(wk_); - kvec_c.push_back(kvec); - } - - MPI_Barrier(p2d.comm()); // wait for finishing the reading task - - // scatter the lowf_glb to lowf_loc - Parallel_2D p2d_glb; - Parallel_Common::bcast_int(nbands); - Parallel_Common::bcast_int(nbasis); - - p2d_glb.init(nbasis, nbands, std::max(nbasis, nbands), p2d.comm()); // in the same comm world - lowf_loc_k.resize(p2d.nrow * p2d.ncol); - - Cpxgemr2d(nbasis, - nbands, - lowf_glb.data(), - 1, - 1, - const_cast(p2d_glb.desc), - lowf_loc_k.data(), - 1, - 1, - const_cast(p2d.desc), - p2d_glb.blacs_ctxt); - // append to the global lowf_loc - lowf_loc.insert(lowf_loc.end(), lowf_loc_k.begin(), lowf_loc_k.end()); - } - assert(lowf_loc.size() == nks * p2d.nrow * p2d.ncol); - // still something to broadcast: ekb, occ, wk and kvec. - if (iproc != 0) - { - ekb.resize(nks * nbands, 0.0); - occ.resize(nks * nbands, 0.0); - wk.resize(nks, 0.0); - kvec_c.resize(nks); - } - Parallel_Common::bcast_double(ekb.data(), nks * nbands); - Parallel_Common::bcast_double(occ.data(), nks * nbands); - Parallel_Common::bcast_double(wk.data(), nks); - // Vector3 is not a trivial datatype, need to be broadcasted element by element - for (int ik = 0; ik < nks; ik++) - { - Parallel_Common::bcast_double(kvec_c[ik].x); - Parallel_Common::bcast_double(kvec_c[ik].y); - Parallel_Common::bcast_double(kvec_c[ik].z); - } -} - - -// instantiate the template function -template void ModuleIO::restart_from_file(const std::string& out_dir, - const Parallel_2D& p2d, - const int& nks, - int& nbands, - int& nbasis, - std::vector& lowf_loc, - std::vector& ekb, - std::vector& occ, - std::vector>& kvec_c, - std::vector& wk); - -template void ModuleIO::restart_from_file(const std::string& out_dir, - const Parallel_2D& p2d, - const int& nks, - int& nbands, - int& nbasis, - std::vector& lowf_loc, - std::vector& ekb, - std::vector& occ, - std::vector>& kvec_c, - std::vector& wk); - -template void ModuleIO::restart_from_file(const std::string& out_dir, - const Parallel_2D& p2d, - const int& nks, - int& nbands, - int& nbasis, - std::vector>& lowf_loc, - std::vector& ekb, - std::vector& occ, - std::vector>& kvec_c, - std::vector& wk); - -template void ModuleIO::restart_from_file(const std::string& out_dir, - const Parallel_2D& p2d, - const int& nks, - int& nbands, - int& nbasis, - std::vector>& lowf_loc, - std::vector& ekb, - std::vector& occ, - std::vector>& kvec_c, - std::vector& wk); -#endif - -template -void ModuleIO::restart_from_file(const std::string& out_dir, // hard-code the file name to be WFC_NAO_K*.txt? - const int& nks, - int& nbands, - int& nbasis, - std::vector& lowf, - std::vector& ekb, - std::vector& occ, - std::vector>& kvec_c, - std::vector& wk) -{ - // reset vectors - lowf.clear(); - ekb.clear(); - occ.clear(); - kvec_c.clear(); - wk.clear(); - const bool gamma_only = std::is_same::value || std::is_same::value; - const bool multi_k = std::is_same>::value || std::is_same>::value; - assert(gamma_only || multi_k); - const std::string file_prefix = gamma_only ? "WFC_GAMMA" : "WFC_NAO_K"; - int nbands_ = -1, nbasis_ = -1; - for (int ik = 0; ik < nks; ik++) - { - // check existence of file - const std::string file = out_dir + "/" + file_prefix + std::to_string(ik + 1) + ".txt"; - const std::ifstream ifs(file); - if (!ifs) - { - ModuleBase::WARNING_QUIT("restart_from_file", "open file failed: " + file); - } - - std::vector lowf_; - std::vector ekb_; - std::vector occ_; - ModuleBase::Vector3 kvec_; - double wk_=0.0; - int ik_=0; - - read_wfc_lcao(file, ik_, kvec_, nbands, nbasis, lowf_, ekb_, occ_, wk_); - - assert(nbands == nbands_ || nbands_ == -1); // check the consistency of nbands - assert(nbasis == nbasis_ || nbasis_ == -1); // check the consistency of nbasis - - nbands_ = (nbands_ == -1) ? nbands : nbands_; - nbasis_ = (nbasis_ == -1) ? nbasis : nbasis_; - - assert(ik_ == ik + 1); // check the consistency of ik - - // append to the global lowf_loc - lowf.insert(lowf.end(), lowf_.begin(), lowf_.end()); - ekb.insert(ekb.end(), ekb_.begin(), ekb_.end()); - occ.insert(occ.end(), occ_.begin(), occ_.end()); - wk.push_back(wk_); - kvec_c.push_back(kvec_); - } - assert(ekb.size() == nks * nbands); - assert(occ.size() == nks * nbands); - assert(lowf.size() == nks * nbands * nbasis); -} - -// instantiate the template function -template void ModuleIO::restart_from_file(const std::string& out_dir, - const int& nks, - int& nbands, - int& nbasis, - std::vector& lowf, - std::vector& ekb, - std::vector& occ, - std::vector>& kvec_c, - std::vector& wk); - -template void ModuleIO::restart_from_file(const std::string& out_dir, - const int& nks, - int& nbands, - int& nbasis, - std::vector& lowf, - std::vector& ekb, - std::vector& occ, - std::vector>& kvec_c, - std::vector& wk); - -template void ModuleIO::restart_from_file(const std::string& out_dir, - const int& nks, - int& nbands, - int& nbasis, - std::vector>& lowf, - std::vector& ekb, - std::vector& occ, - std::vector>& kvec_c, - std::vector& wk); - -template void ModuleIO::restart_from_file(const std::string& out_dir, - const int& nks, - int& nbands, - int& nbasis, - std::vector>& lowf, - std::vector& ekb, - std::vector& occ, - std::vector>& kvec_c, - std::vector& wk); -*/ diff --git a/source/source_io/read_wfc_lcao.h b/source/source_io/read_wfc_lcao.h deleted file mode 100644 index f8f5933310..0000000000 --- a/source/source_io/read_wfc_lcao.h +++ /dev/null @@ -1,87 +0,0 @@ -#ifndef READ_WFC_LCAO_H -#define READ_WFC_LCAO_H - -#include "source_base/vector3.h" -#include -#include -#include - -#ifdef __MPI -#include "source_base/module_external/scalapack_connector.h" -#include "source_base/parallel_2d.h" -#endif - -/** - * @brief This class has two functions: restart psi from the previous calculation, and write psi to the disk. - */ - -namespace ModuleIO -{ -// only when you know why you need the T, you can write function with template parameter, -// otherwise, you should overload the function for different types -// For example in this case, ONLY wfc support to be std::complex and std::complex, -// not ekb, occ, wk and kvec_c. -/** - * @brief Read the wavefunction coefficients from the file (for complex wavefunction coefficients) - * - * @tparam T - * @param file [in] file name - * @param ik [out] the index of k points - * @param kvec_c [out] the k vector in Cartesian coordinates - * @param nbands [out] the number of bands - * @param nbasis [out] the number of orbitals - * @param lowf [out] wavefunction coefficients - * @param ekb [out] eigenvalues - * @param occ [out] occupations - * @param wk [out] weight of k points - */ -/* -template -void read_wfc_lcao(const std::string& file, int& ik, ModuleBase::Vector3& kvec_c, int& nbands, int& nbasis, - std::vector>& lowf, std::vector& ekb, std::vector& occ, - double& wk); - -template -void read_wfc_lcao(const std::string& file, int& ik, ModuleBase::Vector3& kvec_c, int& nbands, int& nbasis, - std::vector& lowf, std::vector& ekb, std::vector& occ, double& wk); -*/ -// the two functions above will return nbands, nbasis, lowf, ekb, occ and wk. -// the lowf is actually lowf_glb, which means the global matrix (ScaLAPACK convention), need to distribute -// to the local matrix (2D-block-cyclic parallel distribution) in the following function. - -//#ifdef __MPI -/** - * @brief Restart the wavefunction coefficients from the file (MPI 2D-BCD version) - * - * @tparam T: datatype of the wavefunction coefficients, can be double, float, std::complex or - * std::complex - * @param out_dir [in] the directory where the wavefunction coefficients are stored - * @param p2d [in] the 2D parallel distribution - * @param nks [in] the number of k points - * @param nbands [out] the number of bands - * @param nbasis [out] the number of orbitals - * @param lowf_loc [out] the local wavefunction coefficients, can be used to construct psi, see constructor No.8 - * @param ekb [out] the eigenvalues - * @param occ [out] the occupations - * @param kvec_c [out] the k vectors in Cartesian coordinates - * @param wk [out] the weight of k points - * - * @warning Cpxgemr2d not implemented yet - */ -/* -template -void restart_from_file(const std::string& out_dir, // hard-code the file name to be LOWF_K_*.txt? - const Parallel_2D& p2d, const int& nks, int& nbands, int& nbasis, std::vector& lowf_loc, - std::vector& ekb, std::vector& occ, - std::vector>& kvec_c, std::vector& wk); -#endif - -// serial version, can always present -template -void restart_from_file(const std::string& out_dir, // hard-code the file name to be LOWF_K_*.txt? - const int& nks, int& nbands, int& nbasis, std::vector& lowf, std::vector& ekb, - std::vector& occ, std::vector>& kvec_c, - std::vector& wk); -*/ -} -#endif diff --git a/source/source_io/td_current_io.h b/source/source_io/td_current_io.h deleted file mode 100644 index 7872858c72..0000000000 --- a/source/source_io/td_current_io.h +++ /dev/null @@ -1,53 +0,0 @@ -#ifndef TD_CURRENT_IO_H -#define TD_CURRENT_IO_H - -#include "source_basis/module_nao/two_center_bundle.h" -#include "source_estate/elecstate_lcao.h" -#include "source_estate/module_dm/density_matrix.h" -#include "source_psi/psi.h" -#include "source_lcao/module_rt/velocity_op.h" - -namespace ModuleIO -{ -#ifdef __LCAO -/// @brief func to output current, only used in tddft -template -void write_current_eachk(const UnitCell& ucell, - const int istep, - const psi::Psi>* psi, - const elecstate::ElecState* pelec, - const K_Vectors& kv, - const TwoCenterIntegrator* intor, - const Parallel_Orbitals* pv, - const LCAO_Orbitals& orb, - const Velocity_op* cal_current, - Record_adj& ra); -template -void write_current(const UnitCell& ucell, - const int istep, - const psi::Psi>* psi, - const elecstate::ElecState* pelec, - const K_Vectors& kv, - const TwoCenterIntegrator* intor, - const Parallel_Orbitals* pv, - const LCAO_Orbitals& orb, - const Velocity_op* cal_current, - Record_adj& ra); - -/// @brief calculate sum_n[𝜌_(𝑛𝑘,𝜇𝜈)] for current calculation -void cal_tmp_DM_k(const UnitCell& ucell, - elecstate::DensityMatrix, double>& DM_real, - elecstate::DensityMatrix, double>& DM_imag, - const int ik, - const int nspin, - const int is, - const bool reset = true); - -void cal_tmp_DM(const UnitCell& ucell, - elecstate::DensityMatrix, double>& DM_real, - elecstate::DensityMatrix, double>& DM_imag, - const int nspin); - -#endif // __LCAO -} // namespace ModuleIO -#endif // W_ABACUS_DEVELOP_ABACUS_DEVELOP_SOURCE_MODULE_IO_TD_CURRENT_IO_H diff --git a/source/source_io/test/CMakeLists.txt b/source/source_io/test/CMakeLists.txt index 25e45fd30d..672827d1d0 100644 --- a/source/source_io/test/CMakeLists.txt +++ b/source/source_io/test/CMakeLists.txt @@ -8,7 +8,7 @@ install(FILES INPUTs DESTINATION ${CMAKE_CURRENT_BINARY_DIR}) AddTest( TARGET MODULE_IO_input_test_para - LIBS parameter ${math_libs} base device io_input + LIBS parameter ${math_libs} base device io_input SOURCES read_input_ptest.cpp ) @@ -19,8 +19,8 @@ add_test(NAME MODULE_IO_input_test_para_4 AddTest( TARGET MODULE_IO_read_exit_file_test - LIBS parameter ${math_libs} base device - SOURCES read_exit_file_test.cpp ../read_exit_file.cpp + LIBS parameter ${math_libs} base device + SOURCES read_exit_file_test.cpp ../module_output/read_exit_file.cpp ) add_test(NAME MODULE_IO_read_exit_file_test_para_4 @@ -28,63 +28,58 @@ add_test(NAME MODULE_IO_read_exit_file_test_para_4 WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} ) -AddTest( - TARGET MODULE_IO_winput_test - LIBS parameter ${math_libs} base device - SOURCES winput_test.cpp ../winput.cpp -) - AddTest( TARGET MODULE_IO_output_test LIBS parameter ${math_libs} base device - SOURCES output_test.cpp ../output.cpp + SOURCES output_test.cpp ../module_output/output.cpp ) AddTest( TARGET MODULE_IO_binstream_test - SOURCES binstream_test.cpp ../binstream.cpp + SOURCES binstream_test.cpp ../module_output/binstream.cpp ) AddTest( TARGET MODULE_IO_write_eig_occ_test - LIBS parameter ${math_libs} base device symmetry - SOURCES write_eig_occ_test.cpp ../write_eig_occ.cpp ../output.cpp ../../source_cell/parallel_kpoints.cpp ../../source_cell/klist.cpp ../../source_cell/k_vector_utils.cpp - ../cif_io.cpp + LIBS parameter ${math_libs} base device symmetry + SOURCES write_eig_occ_test.cpp ../module_energy/write_eig_occ.cpp ../module_output/output.cpp ../../source_cell/parallel_kpoints.cpp ../../source_cell/klist.cpp ../../source_cell/k_vector_utils.cpp + ../module_output/cif_io.cpp ) AddTest( TARGET MODULE_IO_cal_dos LIBS parameter ${math_libs} base device - SOURCES cal_dos_test.cpp ../cal_dos.cpp + SOURCES cal_dos_test.cpp ../module_dos/cal_dos.cpp ) AddTest( TARGET MODULE_IO_write_dos_pw LIBS parameter ${math_libs} base device symmetry - SOURCES write_dos_pw_test.cpp ../cal_dos.cpp ../write_dos_pw.cpp ../output.cpp ../../source_cell/parallel_kpoints.cpp ../../source_cell/klist.cpp ../nscf_fermi_surf.cpp ../../source_cell/k_vector_utils.cpp + SOURCES write_dos_pw_test.cpp ../module_dos/cal_dos.cpp ../module_dos/write_dos_pw.cpp ../module_output/output.cpp ../../source_cell/parallel_kpoints.cpp ../../source_cell/klist.cpp ../module_energy/nscf_fermi_surf.cpp ../../source_cell/k_vector_utils.cpp ) AddTest( TARGET MODULE_IO_print_info - LIBS parameter ${math_libs} base device symmetry cell_info - SOURCES print_info_test.cpp ../print_info.cpp ../output.cpp ../../source_cell/klist.cpp ../../source_cell/parallel_kpoints.cpp ../../source_cell/k_vector_utils.cpp + LIBS parameter ${math_libs} base device symmetry cell_info + SOURCES print_info_test.cpp ../module_output/print_info.cpp ../module_output/output.cpp ../../source_cell/klist.cpp ../../source_cell/parallel_kpoints.cpp ../../source_cell/k_vector_utils.cpp ) AddTest( TARGET MODULE_IO_single_R_test LIBS parameter ${math_libs} - SOURCES single_R_io_test.cpp ../single_R_io.cpp - ../../source_base/global_variable.cpp + SOURCES single_R_io_test.cpp ../module_hs/single_R_io.cpp + ../../source_base/global_variable.cpp ../../source_base/parallel_reduce.cpp ../../source_base/parallel_common.cpp ../../source_base/parallel_global.cpp ../../source_base/parallel_comm.cpp + ../../source_base/tool_quit.cpp ../../source_base/global_file.cpp ../../source_base/global_function.cpp ../../source_base/memory.cpp ../../source_base/timer.cpp ) AddTest( TARGET MODULE_IO_write_wfc_nao LIBS parameter ${math_libs} base psi device - SOURCES write_wfc_nao_test.cpp ../filename.cpp ../write_wfc_nao.cpp ../../source_basis/module_ao/parallel_orbitals.cpp ../binstream.cpp + SOURCES write_wfc_nao_test.cpp ../module_output/filename.cpp ../module_wf/write_wfc_nao.cpp ../../source_basis/module_ao/parallel_orbitals.cpp ../module_output/binstream.cpp ) install(FILES write_wfc_nao_para.sh DESTINATION ${CMAKE_CURRENT_BINARY_DIR}) @@ -96,72 +91,79 @@ add_test(NAME MODULE_IO_write_wfc_nao_para AddTest( TARGET MODULE_IO_write_orb_info - LIBS parameter ${math_libs} base device cell_info - SOURCES write_orb_info_test.cpp ../write_orb_info.cpp ../output.cpp + LIBS parameter ${math_libs} base device cell_info + SOURCES write_orb_info_test.cpp ../module_output/write_orb_info.cpp ../module_output/output.cpp ) AddTest( TARGET MODULE_IO_parse_args - SOURCES parse_args_test.cpp ../parse_args.cpp + LIBS parameter ${math_libs} base device io_input + SOURCES parse_args_test.cpp ../parse_args.cpp ../input_help.cpp +) + +AddTest( + TARGET MODULE_IO_input_help_test + LIBS parameter ${math_libs} base device io_input + SOURCES input_help_test.cpp ../input_help.cpp ) AddTest( TARGET MODULE_IO_bessel_basis_test LIBS parameter ${math_libs} base device - SOURCES bessel_basis_test.cpp ../bessel_basis.cpp + SOURCES bessel_basis_test.cpp ../module_bessel/bessel_basis.cpp ) AddTest( TARGET MODULE_IO_output_log_test - LIBS parameter base ${math_libs} device - SOURCES ../output_log.cpp outputlog_test.cpp ../../source_basis/module_pw/test/test_tool.cpp + LIBS parameter base ${math_libs} device + SOURCES ../module_output/output_log.cpp outputlog_test.cpp ../../source_basis/module_pw/test/test_tool.cpp ) AddTest( TARGET MODULE_IO_sparse_matrix_test LIBS parameter base ${math_libs} device - SOURCES sparse_matrix_test.cpp ../sparse_matrix.cpp + SOURCES sparse_matrix_test.cpp ../module_output/sparse_matrix.cpp ) AddTest( TARGET MODULE_IO_file_reader_test LIBS parameter base ${math_libs} device - SOURCES file_reader_test.cpp ../file_reader.cpp + SOURCES file_reader_test.cpp ../module_output/file_reader.cpp ) AddTest( TARGET MODULE_IO_csr_reader_test LIBS parameter base ${math_libs} device - SOURCES csr_reader_test.cpp ../csr_reader.cpp ../file_reader.cpp ../sparse_matrix.cpp + SOURCES csr_reader_test.cpp ../module_output/csr_reader.cpp ../module_output/file_reader.cpp ../module_output/sparse_matrix.cpp ) AddTest( TARGET MODULE_IO_read_rhog_test LIBS parameter ${math_libs} base device planewave - SOURCES read_rhog_test.cpp ../rhog_io.cpp ../binstream.cpp ../../source_basis/module_pw/test/test_tool.cpp + SOURCES read_rhog_test.cpp ../module_chgpot/rhog_io.cpp ../module_output/binstream.cpp ../../source_basis/module_pw/test/test_tool.cpp ) if(ENABLE_LCAO) AddTest( TARGET MODULE_IO_to_qo_test - LIBS parameter base ${math_libs} device numerical_atomic_orbitals container orb - SOURCES + LIBS parameter base ${math_libs} device numerical_atomic_orbitals container orb + SOURCES to_qo_test.cpp - ../to_qo_kernel.cpp - ../to_qo_mpi.cpp - ../to_qo_structures.cpp + ../module_qo/to_qo_kernel.cpp + ../module_qo/to_qo_mpi.cpp + ../module_qo/to_qo_structures.cpp ../../source_cell/atom_spec.cpp ../../source_cell/parallel_kpoints.cpp ../../source_cell/test/support/mock_unitcell.cpp ../../source_lcao/center2_orb.cpp - ../orb_io.cpp + ../module_output/orb_io.cpp ) endif() AddTest( TARGET MODULE_IO_read_wfc_pw_test LIBS parameter base ${math_libs} device planewave - SOURCES read_wfc_pw_test.cpp ../read_wfc_pw.cpp ../binstream.cpp ../../source_basis/module_pw/test/test_tool.cpp + SOURCES read_wfc_pw_test.cpp ../module_wf/read_wfc_pw.cpp ../module_output/binstream.cpp ../../source_basis/module_pw/test/test_tool.cpp ) add_test(NAME MODULE_IO_read_wfc_pw_test_parallel @@ -172,7 +174,7 @@ add_test(NAME MODULE_IO_read_wfc_pw_test_parallel AddTest( TARGET MODULE_IO_read_wf2rho_pw_test LIBS parameter base ${math_libs} device planewave psi - SOURCES read_wf2rho_pw_test.cpp ../read_wfc_pw.cpp ../read_wf2rho_pw.cpp ../binstream.cpp ../../source_basis/module_pw/test/test_tool.cpp ../../source_estate/module_charge/charge_mpi.cpp ../filename.cpp ../write_wfc_pw.cpp + SOURCES read_wf2rho_pw_test.cpp ../module_wf/read_wfc_pw.cpp ../module_wf/read_wf2rho_pw.cpp ../module_output/binstream.cpp ../../source_basis/module_pw/test/test_tool.cpp ../../source_estate/module_charge/charge_mpi.cpp ../module_output/filename.cpp ../module_wf/write_wfc_pw.cpp ) add_test(NAME MODULE_IO_read_wf2rho_pw_parallel @@ -183,21 +185,21 @@ add_test(NAME MODULE_IO_read_wf2rho_pw_parallel AddTest( TARGET MODULE_IO_numerical_basis_test - LIBS parameter base ${math_libs} device numerical_atomic_orbitals container orb - SOURCES numerical_basis_test.cpp - ../numerical_basis_jyjy.cpp + LIBS parameter base ${math_libs} device numerical_atomic_orbitals container orb + SOURCES numerical_basis_test.cpp + ../module_bessel/numerical_basis_jyjy.cpp ../../source_lcao/center2_orb.cpp - ../orb_io.cpp + ../module_output/orb_io.cpp ) AddTest( TARGET MODULE_IO_mulliken_test LIBS parameter base ${math_libs} device - SOURCES output_mulliken_test.cpp output_mulliken_mock.cpp ../output_mulliken.cpp + SOURCES output_mulliken_test.cpp output_mulliken_mock.cpp ../module_mulliken/output_mulliken.cpp ../../source_cell/cell_index.cpp ../../source_basis/module_ao/parallel_orbitals.cpp - ../orb_io.cpp + ../module_output/orb_io.cpp ) #if(ENABLE_LCAO) @@ -217,7 +219,7 @@ AddTest( AddTest( TARGET MODULE_IO_cif_io_test LIBS parameter base ${math_libs} device - SOURCES cif_io_test.cpp ../cif_io.cpp + SOURCES cif_io_test.cpp ../module_output/cif_io.cpp ) add_test(NAME MODULE_IO_cif_io_test_parallel @@ -228,7 +230,7 @@ add_test(NAME MODULE_IO_cif_io_test_parallel AddTest( TARGET MODULE_IO_orb_io_test LIBS parameter base ${math_libs} device - SOURCES orb_io_test.cpp ../orb_io.cpp + SOURCES orb_io_test.cpp ../module_output/orb_io.cpp ) add_test(NAME MODULE_IO_orb_io_test_parallel @@ -237,21 +239,21 @@ add_test(NAME MODULE_IO_orb_io_test_parallel ) AddTest( - TARGET MODULE_IO_dmk_io - LIBS parameter ${math_libs} base device cell_info - SOURCES io_dmk_test.cpp ../io_dmk.cpp ../output.cpp + TARGET MODULE_IO_write_dmk + LIBS parameter ${math_libs} base device cell_info + SOURCES ../module_dm/test/write_dmk_test.cpp ../module_dm/write_dmk.cpp ../module_output/output.cpp ../module_output/ucell_io.cpp ) add_test( - NAME MODULE_IO_dmk_io_parallel - COMMAND mpirun -np 2 ./MODULE_IO_dmk_io + NAME MODULE_IO_write_dmk_parallel + COMMAND mpirun -np 2 ./MODULE_IO_write_dmk WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} ) AddTest( TARGET MODULE_IO_read_wfc_nao_test LIBS parameter ${math_libs} base device - SOURCES read_wfc_nao_test.cpp ../read_wfc_nao.cpp ../../source_psi/psi.cpp ../../source_basis/module_ao/parallel_orbitals.cpp + SOURCES read_wfc_nao_test.cpp ../module_wf/read_wfc_nao.cpp ../../source_psi/psi.cpp ../../source_basis/module_ao/parallel_orbitals.cpp ) add_test( @@ -264,9 +266,9 @@ if(ENABLE_LCAO) AddTest( TARGET MODULE_IO_cal_pLpR_test LIBS parameter base ${math_libs} device neighbor - SOURCES - cal_pLpR_test.cpp - ../cal_pLpR.cpp + SOURCES + cal_pLpR_test.cpp + ../module_hs/cal_pLpR.cpp ../../source_basis/module_ao/ORB_atomic_lm.cpp ../../source_basis/module_ao/ORB_atomic.cpp ../../source_basis/module_nao/radial_set.cpp @@ -282,3 +284,9 @@ AddTest( ../../source_basis/module_nao/radial_collection.cpp ) endif() + +AddTest( + TARGET MODULE_IO_write_elf_logic_test + SOURCES write_elf_logic_test.cpp +) + diff --git a/source/source_io/test/bessel_basis_test.cpp b/source/source_io/test/bessel_basis_test.cpp index b7de398d8f..6224bf35c0 100644 --- a/source/source_io/test/bessel_basis_test.cpp +++ b/source/source_io/test/bessel_basis_test.cpp @@ -12,7 +12,7 @@ #include -#include "../bessel_basis.h" +#include "../module_bessel/bessel_basis.h" #include "../../source_cell/unitcell.h" #include "../../source_estate/magnetism.h" @@ -95,44 +95,44 @@ std::vector CalculateSphericalBessel(int l, double q, const std::vector< /// @return a vector of q, the q is from j_l(qr) std::vector GetSphericalBesselZeros(int order, int number) { std::map, double> zeros; - + zeros[{0, 1}] = 3.14159; zeros[{0, 2}] = 6.28318; zeros[{0, 3}] = 9.42477; zeros[{0, 4}] = 12.5664; zeros[{0, 5}] = 15.708; zeros[{0, 6}] = 18.8495; zeros[{0, 7}] = 21.9911; zeros[{0, 8}] = 25.1327; zeros[{0, 9}] = 28.2743; zeros[{0, 10}] = 31.4159; - + zeros[{1, 1}] = 4.49341; zeros[{1, 2}] = 7.72525; zeros[{1, 3}] = 10.9041; zeros[{1, 4}] = 14.0662; zeros[{1, 5}] = 17.2208; zeros[{1, 6}] = 20.3713; zeros[{1, 7}] = 23.5181; zeros[{1, 8}] = 26.6617; zeros[{1, 9}] = 29.8029; zeros[{1, 10}] = 32.9425; - + zeros[{2, 1}] = 5.76346; zeros[{2, 2}] = 9.09501; zeros[{2, 3}] = 12.3229; zeros[{2, 4}] = 15.5146; zeros[{2, 5}] = 18.6861; zeros[{2, 6}] = 21.8457; zeros[{2, 7}] = 24.9989; zeros[{2, 8}] = 28.1498; zeros[{2, 9}] = 31.2997; zeros[{2, 10}] = 34.4491; - + zeros[{3, 1}] = 7.01559; zeros[{3, 2}] = 10.4013; zeros[{3, 3}] = 13.5821; zeros[{3, 4}] = 16.7496; zeros[{3, 5}] = 19.9023; zeros[{3, 6}] = 23.0446; zeros[{3, 7}] = 26.1799; zeros[{3, 8}] = 29.3105; zeros[{3, 9}] = 32.4377; zeros[{3, 10}] = 35.5629; - + zeros[{4, 1}] = 8.26356; zeros[{4, 2}] = 11.6209; zeros[{4, 3}] = 14.7965; zeros[{4, 4}] = 17.9598; zeros[{4, 5}] = 21.113; zeros[{4, 6}] = 24.2583; zeros[{4, 7}] = 27.3979; zeros[{4, 8}] = 30.5325; zeros[{4, 9}] = 33.6635; zeros[{4, 10}] = 36.7914; - + zeros[{5, 1}] = 9.51045; zeros[{5, 2}] = 12.8377; zeros[{5, 3}] = 16.0106; zeros[{5, 4}] = 19.1714; zeros[{5, 5}] = 22.3224; zeros[{5, 6}] = 25.4666; zeros[{5, 7}] = 28.6055; zeros[{5, 8}] = 31.7408; zeros[{5, 9}] = 34.873; zeros[{5, 10}] = 38.0025; - + std::vector result; for (int i = 1; i <= number; ++i) { result.push_back(zeros[{order, i}]); } return result; } -/// @brief Get mod of q vector of Spherical Bessel functions, all q satisfy when r=`rcut`, j_l(qr)=0. +/// @brief Get mod of q vector of Spherical Bessel functions, all q satisfy when r=`rcut`, j_l(qr)=0. /// @details first solve the equation j_l(x) = 0, therefore get the table (l, k) -> x, where l is the order of SBF and k is the k-th zero of j_l(x). Then let x = q*rcut, therefore q = x/rcut, return it. /// @attention this function itself is a COMPLETE version, while the function it called GetSphericalBesselZeros may be INCOMPLETE, due to limited support of numerical table. /// @param order the angular momentum of Spherical Bessel functions @@ -268,12 +268,12 @@ std::unordered_map ReadinC4(const std::string &FileName, co else{ for (int indexchi = 0; indexchi < TotalNumChi; indexchi++){ - C4File >> word; - C4File >> word; + C4File >> word; + C4File >> word; C4File >> word; /* skip title1, 2 and 3 */ C4File >> word; std::string key = word; key += " "; - C4File >> word; key += word; key += " "; + C4File >> word; key += word; key += " "; C4File >> word; key += word; key += " "; for (int indexNumBesselFunction = 0; indexNumBesselFunction < NumBesselFunction; indexNumBesselFunction++) @@ -359,6 +359,10 @@ Magnetism::Magnetism() Magnetism::~Magnetism() { } +SepPot::SepPot(){} +SepPot::~SepPot(){} +Sep_Cell::Sep_Cell() noexcept {} +Sep_Cell::~Sep_Cell() noexcept {} #ifdef __LCAO InfoNonlocal::InfoNonlocal() @@ -433,8 +437,8 @@ class TestBesselBasis : public ::testing::Test { int i_Nq = static_cast(sqrt(d_EnergyCutoff)*d_CutoffRadius/M_PI); /* number of SBF is expected to be 1 */ besselBasis.init( - b_TestFaln, d_EnergyCutoff, i_Ntype, i_Lmax, b_Smooth, - d_SmoothSigma, d_CutoffRadius, d_Tolerance, + b_TestFaln, d_EnergyCutoff, i_Ntype, i_Lmax, b_Smooth, + d_SmoothSigma, d_CutoffRadius, d_Tolerance, ucell, d_dk, d_dr ); EXPECT_EQ(besselBasis.get_ecut_number(), i_Nq); @@ -468,8 +472,8 @@ TEST_F(TestBesselBasis, PolynomialInterpolation2Test) { /* therefore the expected dimension of TableOne is 1*1*6 */ besselBasis.init( - b_TestFaln, d_EnergyCutoff, i_Ntype, i_Lmax, b_Smooth, - d_SmoothSigma, d_CutoffRadius, d_Tolerance, + b_TestFaln, d_EnergyCutoff, i_Ntype, i_Lmax, b_Smooth, + d_SmoothSigma, d_CutoffRadius, d_Tolerance, ucell, d_dk, d_dr ); /* gnorm for interpolation */ @@ -483,7 +487,7 @@ TEST_F(TestBesselBasis, PolynomialInterpolation2Test) { double d_x3 = 3.0 - d_x0; std::vector>> vvv_d_TableOne = GenerateTableOne( - b_Smooth, d_SmoothSigma, d_EnergyCutoff, d_CutoffRadius, + b_Smooth, d_SmoothSigma, d_EnergyCutoff, d_CutoffRadius, i_Lmax, d_dr, d_dk ); double d_yExpected = vvv_d_TableOne[0][0][i_position]*d_x1*d_x2*d_x3/6.0+ @@ -517,14 +521,14 @@ TEST_F(TestBesselBasis, PolynomialInterpolationTest) { int i_Nq = static_cast(sqrt(d_EnergyCutoff)*d_CutoffRadius/M_PI); int i_kMesh = static_cast(sqrt(d_EnergyCutoff)/d_dk) + 4 + 1; /* - manipulate Bessel_Basis::init_Faln function + manipulate Bessel_Basis::init_Faln function because for(int it=0; it>> vvv_d_TableOne = GenerateTableOne( - b_Smooth, d_SmoothSigma, d_EnergyCutoff, d_CutoffRadius, + b_Smooth, d_SmoothSigma, d_EnergyCutoff, d_CutoffRadius, i_Lmax, d_dr, d_dk ); std::vector>>> vvvv_d_Faln = GenerateFaln( diff --git a/source/source_io/test/binstream_test.cpp b/source/source_io/test/binstream_test.cpp index c83ea07114..0ecd1d8487 100644 --- a/source/source_io/test/binstream_test.cpp +++ b/source/source_io/test/binstream_test.cpp @@ -12,7 +12,7 @@ * - Close a binary file */ -#include "../binstream.h" +#include "../module_output/binstream.h" class BinstreamTest : public testing::Test { diff --git a/source/source_io/test/cal_dos_test.cpp b/source/source_io/test/cal_dos_test.cpp index 6395563986..cc8448dd27 100644 --- a/source/source_io/test/cal_dos_test.cpp +++ b/source/source_io/test/cal_dos_test.cpp @@ -1,6 +1,6 @@ #include "gtest/gtest.h" #include "gmock/gmock.h" -#include "source_io/cal_dos.h" +#include "source_io/module_dos/cal_dos.h" #include "source_base/global_variable.h" #include #ifdef __MPI @@ -34,6 +34,8 @@ TEST_F(DosTest,Dos) dosp.read_wk(); dosp.read_istate_info(); EXPECT_EQ(dosp.is,0); + + const int istep = 1; ModuleIO::cal_dos(dosp.is, dosp.fa, dosp.de_ev, @@ -46,7 +48,8 @@ TEST_F(DosTest,Dos) dosp.isk, dosp.nbands, dosp.ekb, - dosp.wg); + dosp.wg, + istep); #ifdef __MPI if(GlobalV::MY_RANK==0) @@ -77,6 +80,8 @@ TEST_F(DosTest,DosW1) EXPECT_EQ(dosp.is,0); EXPECT_LE(dosp.de_ev,0); GlobalV::ofs_warning.open("warning1.log"); + + const int istep = 1; EXPECT_NO_THROW(ModuleIO::cal_dos(dosp.is, dosp.fa, dosp.de_ev, @@ -89,7 +94,8 @@ TEST_F(DosTest,DosW1) dosp.isk, dosp.nbands, dosp.ekb, - dosp.wg)); + dosp.wg, + istep)); GlobalV::ofs_warning.close(); #ifdef __MPI if(GlobalV::MY_RANK==0) @@ -117,6 +123,8 @@ TEST_F(DosTest,DosW2) dosp.read_istate_info(); EXPECT_EQ(dosp.is,0); GlobalV::ofs_warning.open("warning2.log"); + + const int istep = 1; EXPECT_NO_THROW(ModuleIO::cal_dos(dosp.is, dosp.fa, dosp.de_ev, @@ -129,7 +137,9 @@ TEST_F(DosTest,DosW2) dosp.isk, dosp.nbands, dosp.ekb, - dosp.wg)); + dosp.wg, + istep)); + GlobalV::ofs_warning.close(); #ifdef __MPI if(GlobalV::MY_RANK==0) diff --git a/source/source_io/test/cal_pLpR_test.cpp b/source/source_io/test/cal_pLpR_test.cpp index 40d5a976cc..2dad5f663d 100644 --- a/source/source_io/test/cal_pLpR_test.cpp +++ b/source/source_io/test/cal_pLpR_test.cpp @@ -4,7 +4,7 @@ #include #include -#include "source_io/cal_pLpR.h" +#include "source_io/module_hs/cal_pLpR.h" #include "source_basis/module_nao/two_center_integrator.h" #include "source_basis/module_nao/radial_collection.h" #include "source_base/spherical_bessel_transformer.h" diff --git a/source/source_io/test/cif_io_test.cpp b/source/source_io/test/cif_io_test.cpp index c8323f4771..5d7a1c2337 100644 --- a/source/source_io/test/cif_io_test.cpp +++ b/source/source_io/test/cif_io_test.cpp @@ -1,5 +1,5 @@ #include -#include "source_io/cif_io.h" +#include "source_io/module_output/cif_io.h" #include #include #include "source_base/formatter.h" diff --git a/source/source_io/test/csr_reader_test.cpp b/source/source_io/test/csr_reader_test.cpp index e42ad335c7..86dd080215 100644 --- a/source/source_io/test/csr_reader_test.cpp +++ b/source/source_io/test/csr_reader_test.cpp @@ -1,4 +1,4 @@ -#include "source_io/csr_reader.h" +#include "source_io/module_output/csr_reader.h" #include "gmock/gmock.h" #include "gtest/gtest.h" @@ -39,7 +39,7 @@ TEST_F(csrFileReaderTest, CsrReader) // Check if file is open EXPECT_TRUE(csr.isOpen()); // get step - EXPECT_EQ(csr.getStep(), 0); + EXPECT_EQ(csr.getStep(), 1); // get matrix dimension EXPECT_EQ(csr.getMatrixDimension(), 4); // get number of R @@ -97,4 +97,4 @@ TEST_F(csrFileReaderTest, CsrReader) EXPECT_DOUBLE_EQ(sparse_matrix(2, 3), 6.0); EXPECT_DOUBLE_EQ(sparse_matrix(3, 3), 10.0); EXPECT_DOUBLE_EQ(sparse_matrix(0, 0), 0.0); -} \ No newline at end of file +} diff --git a/source/source_io/test/file_reader_test.cpp b/source/source_io/test/file_reader_test.cpp index a9479b6d4b..5d132a3a40 100644 --- a/source/source_io/test/file_reader_test.cpp +++ b/source/source_io/test/file_reader_test.cpp @@ -1,4 +1,4 @@ -#include "source_io/file_reader.h" +#include "source_io/module_output/file_reader.h" #include diff --git a/source/source_io/test/for_testing_input_conv.h b/source/source_io/test/for_testing_input_conv.h index 29fcac72d0..4d54e89778 100644 --- a/source/source_io/test/for_testing_input_conv.h +++ b/source/source_io/test/for_testing_input_conv.h @@ -14,11 +14,11 @@ #include "source_lcao/module_dftu/dftu.h" #include "source_lcao/module_rt/evolve_elec.h" #include "source_lcao/module_rt/td_velocity.h" -#include "source_pw/module_pwdft/VNL_in_pw.h" +#include "source_pw/module_pwdft/vnl_pw.h" #include "source_pw/module_pwdft/structure_factor.h" #include "source_hsolver/hsolver_lcao.h" #include "source_io/berryphase.h" -#include "source_io/restart.h" +#include "source_io/module_restart/restart.h" #include "source_md/md_func.h" #include "source_relax/bfgs_basic.h" #include "source_relax/ions_move_basic.h" @@ -30,7 +30,7 @@ #undef private bool berryphase::berry_phase_flag = false; -bool TD_Velocity::out_current; +int TD_Velocity::out_current; bool TD_Velocity::out_current_k; bool TD_Velocity::out_vecpot; bool TD_Velocity::init_vecpot_file; @@ -45,34 +45,24 @@ double elecstate::Efield::efield_pos_max; double elecstate::Efield::efield_pos_dec; double elecstate::Efield::efield_amp; -// parameters of electric field for tddft +// Parameters of electric field for RT-TDDFT -int elecstate::H_TDDFT_pw::stype; // 0 : length gauge 1: velocity gauge +int elecstate::H_TDDFT_pw::stype; std::vector elecstate::H_TDDFT_pw::ttype; -// 0 Gauss type function. -// 1 trapezoid type function. -// 2 Trigonometric functions, sin^2. -// 3 heaviside function. -// 4 HHG function. int elecstate::H_TDDFT_pw::tstart; int elecstate::H_TDDFT_pw::tend; double elecstate::H_TDDFT_pw::dt; double elecstate::H_TDDFT_pw::dt_int; -// space domain parameters - -// length gauge double elecstate::H_TDDFT_pw::lcut1; double elecstate::H_TDDFT_pw::lcut2; -// time domain parameters - bool TD_Velocity::tddft_velocity; bool TD_Velocity::out_mat_R; -// Gauss +// Gaussian int elecstate::H_TDDFT_pw::gauss_count; std::vector elecstate::H_TDDFT_pw::gauss_omega; // time(a.u.)^-1 std::vector elecstate::H_TDDFT_pw::gauss_phase; @@ -81,7 +71,7 @@ std::vector elecstate::H_TDDFT_pw::gauss_t0; std::vector elecstate::H_TDDFT_pw::gauss_amp; // Ry/bohr std::vector elecstate::H_TDDFT_pw::gauss_ncut; -// trapezoid +// Trapezoid int elecstate::H_TDDFT_pw::trape_count; std::vector elecstate::H_TDDFT_pw::trape_omega; // time(a.u.)^-1 std::vector elecstate::H_TDDFT_pw::trape_phase; @@ -196,18 +186,11 @@ void UnitCell::setup(const std::string& latname_in, this->lc[0] = 1; this->lc[1] = 1; this->lc[2] = 1; - if (!PARAM.input.relax_new) { - ModuleBase::WARNING_QUIT( - "Input", - "there are bugs in the old implementation; set relax_new to be " - "1 for fixed_volume relaxation"); - } + // Note: fixed_axes="volume" is now supported with relax_new=false + // (see commit cdc3457f5a8546cda869655c3faabd8b29687aff) } else if (fixed_axes_in == "shape") { - if (!PARAM.input.relax_new) { - ModuleBase::WARNING_QUIT( - "Input", - "set relax_new to be 1 for fixed_shape relaxation"); - } + // Note: fixed_axes="shape" is now supported with relax_new=false + // (see commit cdc3457f5a8546cda869655c3faabd8b29687aff) this->lc[0] = 1; this->lc[1] = 1; this->lc[2] = 1; diff --git a/source/source_io/test/for_testing_klist.h b/source/source_io/test/for_testing_klist.h index 0c764eb00a..8fe875fa58 100644 --- a/source/source_io/test/for_testing_klist.h +++ b/source/source_io/test/for_testing_klist.h @@ -11,10 +11,10 @@ #include "source_cell/setup_nonlocal.h" #include "source_cell/unitcell.h" #include "source_estate/magnetism.h" -#include "source_pw/module_pwdft/VL_in_pw.h" -#include "source_pw/module_pwdft/VNL_in_pw.h" +#include "source_pw/module_pwdft/vl_pw.h" +#include "source_pw/module_pwdft/vnl_pw.h" #include "source_pw/module_pwdft/parallel_grid.h" -#include "source_io/berryphase.h" +#include "source_io/module_unk/berryphase.h" bool berryphase::berry_phase_flag=0; @@ -42,6 +42,10 @@ Soc::~Soc() Fcoef::~Fcoef() { } +SepPot::SepPot(){} +SepPot::~SepPot(){} +Sep_Cell::Sep_Cell() noexcept {} +Sep_Cell::~Sep_Cell() noexcept {} diff --git a/source/source_io/test/input_help_test.cpp b/source/source_io/test/input_help_test.cpp new file mode 100644 index 0000000000..badfd15c9a --- /dev/null +++ b/source/source_io/test/input_help_test.cpp @@ -0,0 +1,406 @@ +#include "gtest/gtest.h" +#include "source_io/input_help.h" +#include +#include + +// RAII helper class to safely redirect std::cout and restore it even if exceptions occur +class ScopedCoutRedirect { +public: + explicit ScopedCoutRedirect(std::streambuf* new_buf) + : old_buf_(std::cout.rdbuf(new_buf)) {} + + ~ScopedCoutRedirect() { + std::cout.rdbuf(old_buf_); + } + + // Prevent copying + ScopedCoutRedirect(const ScopedCoutRedirect&) = delete; + ScopedCoutRedirect& operator=(const ScopedCoutRedirect&) = delete; + +private: + std::streambuf* old_buf_; +}; + +// Test fixture for ParameterHelp tests +class ParameterHelpTest : public testing::Test { +protected: + void SetUp() override { + // Initialize help system before each test + ModuleIO::ParameterHelp::initialize(); + } +}; + +// Test: Initialization works correctly +TEST_F(ParameterHelpTest, Initialization) { + // If we get here, initialize() didn't crash + SUCCEED(); +} + +// Test: Get metadata for known parameter +TEST_F(ParameterHelpTest, GetMetadataKnownParameter) { + auto meta = ModuleIO::ParameterHelp::get_metadata("ecutwfc"); + ASSERT_FALSE(meta.name.empty()); + EXPECT_EQ(meta.name, "ecutwfc"); + EXPECT_EQ(meta.type, "Real"); + EXPECT_FALSE(meta.description.empty()); + EXPECT_FALSE(meta.unit.empty()); + EXPECT_EQ(meta.unit, "Ry"); +} + +// Test: Get metadata for unknown parameter +TEST_F(ParameterHelpTest, GetMetadataUnknownParameter) { + auto meta = ModuleIO::ParameterHelp::get_metadata("nonexistent_parameter_xyz"); + EXPECT_TRUE(meta.name.empty()); +} + +// Test: Show parameter help for known parameter +TEST_F(ParameterHelpTest, ShowParameterHelpKnown) { + std::ostringstream captured; + bool result; + + { + // RAII ensures cout is restored even if an exception is thrown + ScopedCoutRedirect redirect(captured.rdbuf()); + result = ModuleIO::ParameterHelp::show_parameter_help("calculation"); + } + + EXPECT_TRUE(result); + std::string output = captured.str(); + EXPECT_NE(output.find("Parameter: calculation"), std::string::npos); + EXPECT_NE(output.find("Type:"), std::string::npos); + EXPECT_NE(output.find("Description:"), std::string::npos); +} + +// Test: Show parameter help for unknown parameter +TEST_F(ParameterHelpTest, ShowParameterHelpUnknown) { + bool result = ModuleIO::ParameterHelp::show_parameter_help("this_param_does_not_exist"); + EXPECT_FALSE(result); +} + +// Test: Search for parameters (exact match) +TEST_F(ParameterHelpTest, SearchParametersExact) { + auto results = ModuleIO::ParameterHelp::search_parameters("ecutwfc"); + ASSERT_EQ(results.size(), 1); + EXPECT_EQ(results[0], "ecutwfc"); +} + +// Test: Search for parameters (partial match) +TEST_F(ParameterHelpTest, SearchParametersPartial) { + auto results = ModuleIO::ParameterHelp::search_parameters("ecut"); + EXPECT_GT(results.size(), 1); // Should find multiple matches like ecutwfc, ecutrho, etc. + + // Check that results are sorted + for (size_t i = 1; i < results.size(); ++i) { + EXPECT_LT(results[i-1], results[i]); + } +} + +// Test: Search for parameters (case insensitive) +TEST_F(ParameterHelpTest, SearchParametersCaseInsensitive) { + auto results_lower = ModuleIO::ParameterHelp::search_parameters("ecutwfc"); + auto results_upper = ModuleIO::ParameterHelp::search_parameters("ECUTWFC"); + auto results_mixed = ModuleIO::ParameterHelp::search_parameters("EcUtWfC"); + + EXPECT_EQ(results_lower.size(), results_upper.size()); + EXPECT_EQ(results_lower.size(), results_mixed.size()); + EXPECT_EQ(results_lower, results_upper); + EXPECT_EQ(results_lower, results_mixed); +} + +// Test: Search for parameters (no matches) +TEST_F(ParameterHelpTest, SearchParametersNoMatch) { + auto results = ModuleIO::ParameterHelp::search_parameters("xyzabc123notfound"); + EXPECT_EQ(results.size(), 0); +} + +// Test: Show general help +TEST_F(ParameterHelpTest, ShowGeneralHelp) { + std::ostringstream captured; + + { + // RAII ensures cout is restored even if an exception is thrown + ScopedCoutRedirect redirect(captured.rdbuf()); + ModuleIO::ParameterHelp::show_general_help(); + } + + std::string output = captured.str(); + EXPECT_NE(output.find("ABACUS"), std::string::npos); + EXPECT_NE(output.find("Usage:"), std::string::npos); + EXPECT_NE(output.find("-h"), std::string::npos); + EXPECT_NE(output.find("-s"), std::string::npos); + EXPECT_NE(output.find("Common INPUT parameters:"), std::string::npos); +} + +// Test: Verify multiple common parameters exist +TEST_F(ParameterHelpTest, CommonParametersExist) { + std::vector common_params = { + "calculation", "basis_type", "ecutwfc", "ks_solver", + "scf_thr", "pseudo_dir", "nspin", "nbands" + }; + + for (const auto& param : common_params) { + auto meta = ModuleIO::ParameterHelp::get_metadata(param); + EXPECT_FALSE(meta.name.empty()) << "Parameter " << param << " should exist"; + if (!meta.name.empty()) { + EXPECT_EQ(meta.name, param); + } + } +} + +// Test: Verify metadata fields are populated +TEST_F(ParameterHelpTest, MetadataFieldsPopulated) { + auto meta = ModuleIO::ParameterHelp::get_metadata("symmetry_prec"); + ASSERT_FALSE(meta.name.empty()); + + EXPECT_FALSE(meta.name.empty()); + EXPECT_FALSE(meta.type.empty()); + EXPECT_FALSE(meta.description.empty()); + EXPECT_FALSE(meta.default_value.empty()); + EXPECT_FALSE(meta.category.empty()); + + // Unit should be "Bohr" for symmetry_prec + EXPECT_EQ(meta.unit, "Bohr"); +} + +// Test: Case-insensitive parameter lookup +TEST_F(ParameterHelpTest, CaseInsensitiveLookup) { + // Test with different capitalizations + auto meta_lower = ModuleIO::ParameterHelp::get_metadata("ecutwfc"); + auto meta_upper = ModuleIO::ParameterHelp::get_metadata("ECUTWFC"); + auto meta_mixed = ModuleIO::ParameterHelp::get_metadata("EcUtWfC"); + + ASSERT_FALSE(meta_lower.name.empty()); + ASSERT_FALSE(meta_upper.name.empty()); + ASSERT_FALSE(meta_mixed.name.empty()); + + EXPECT_EQ(meta_lower.name, "ecutwfc"); + EXPECT_EQ(meta_upper.name, "ecutwfc"); + EXPECT_EQ(meta_mixed.name, "ecutwfc"); +} + +// Test: Fuzzy matching - single character typo +TEST_F(ParameterHelpTest, FuzzyMatchingSingleCharTypo) { + // Missing 'c' at the end + auto results = ModuleIO::ParameterHelp::find_similar_parameters("ecutwf", 5, 3); + EXPECT_GT(results.size(), 0); + EXPECT_EQ(results[0], "ecutwfc"); // Should be the closest match +} + +// Test: Fuzzy matching - extra character +TEST_F(ParameterHelpTest, FuzzyMatchingExtraChar) { + // Extra 's' at the end + auto results = ModuleIO::ParameterHelp::find_similar_parameters("exx_hybrid_steps", 5, 3); + ASSERT_GT(results.size(), 0); + EXPECT_EQ(results[0], "exx_hybrid_step"); +} + +// Test: Fuzzy matching - swapped characters +TEST_F(ParameterHelpTest, FuzzyMatchingSwappedChars) { + auto results = ModuleIO::ParameterHelp::find_similar_parameters("scf_htr", 5, 3); + EXPECT_GT(results.size(), 0); + // scf_thr should be in the results + bool found = false; + for (const auto& r : results) { + if (r == "scf_thr") { + found = true; + break; + } + } + EXPECT_TRUE(found); +} + +// Test: Fuzzy matching - case insensitive +TEST_F(ParameterHelpTest, FuzzyMatchingCaseInsensitive) { + auto results_lower = ModuleIO::ParameterHelp::find_similar_parameters("ecutwf", 5, 3); + auto results_upper = ModuleIO::ParameterHelp::find_similar_parameters("ECUTWF", 5, 3); + auto results_mixed = ModuleIO::ParameterHelp::find_similar_parameters("EcUtWf", 5, 3); + + EXPECT_EQ(results_lower.size(), results_upper.size()); + EXPECT_EQ(results_lower.size(), results_mixed.size()); + EXPECT_EQ(results_lower, results_upper); + EXPECT_EQ(results_lower, results_mixed); +} + +// Test: Fuzzy matching - multiple suggestions +TEST_F(ParameterHelpTest, FuzzyMatchingMultipleSuggestions) { + auto results = ModuleIO::ParameterHelp::find_similar_parameters("relax_met", 5, 3); + EXPECT_GT(results.size(), 1); // Should find multiple matches + // Results should be sorted by distance (closest first) + // "relax_met" to "relax_new": distance 2 (m->n, t->w) + // "relax_met" to "relax_method": distance 3 (insert h, o, d) + // Note: Actual results depend on which parameters exist in the parameter database +} + +// Test: Fuzzy matching - no close matches +TEST_F(ParameterHelpTest, FuzzyMatchingNoCloseMatches) { + auto results = ModuleIO::ParameterHelp::find_similar_parameters("completely_wrong_parameter_xyz", 5, 3); + EXPECT_EQ(results.size(), 0); // Should find nothing within distance 3 +} + +// Test: Fuzzy matching - max suggestions limit +TEST_F(ParameterHelpTest, FuzzyMatchingMaxSuggestions) { + // Use a parameter that has many similar matches + auto results = ModuleIO::ParameterHelp::find_similar_parameters("md", 3, 2); + EXPECT_LE(results.size(), 3); // Should not exceed max_suggestions +} + +// Test: Fuzzy matching - max distance limit +TEST_F(ParameterHelpTest, FuzzyMatchingMaxDistance) { + // With max_distance=1, should only find very close matches + auto results = ModuleIO::ParameterHelp::find_similar_parameters("ecutwf", 5, 1); + EXPECT_GT(results.size(), 0); + + // With max_distance=0, should find nothing (exact match excluded) + auto results_zero = ModuleIO::ParameterHelp::find_similar_parameters("ecutwfc", 5, 0); + EXPECT_EQ(results_zero.size(), 0); +} + +// Test: Parameter with list items displays with bullets +TEST_F(ParameterHelpTest, ListFormattingDisplayed) { + std::ostringstream captured; + bool result; + + { + ScopedCoutRedirect redirect(captured.rdbuf()); + result = ModuleIO::ParameterHelp::show_parameter_help("calculation"); + } + + EXPECT_TRUE(result); + std::string output = captured.str(); + + // Check that the output contains list item markers + // The calculation parameter has items like "scf:", "nscf:", etc. + EXPECT_NE(output.find("- scf:"), std::string::npos) + << "Expected list item '- scf:' in output:\n" << output; + EXPECT_NE(output.find("- relax:"), std::string::npos) + << "Expected list item '- relax:' in output:\n" << output; +} + +// Test: Lines do not exceed maximum width +TEST_F(ParameterHelpTest, WordWrapMaxWidth) { + std::ostringstream captured; + + { + ScopedCoutRedirect redirect(captured.rdbuf()); + ModuleIO::ParameterHelp::show_parameter_help("calculation"); + } + + std::string output = captured.str(); + std::istringstream iss(output); + std::string line; + + // Check each line is within reasonable width (allowing some margin for list markers) + const size_t max_line_width = 80; // Allow some margin beyond 70 + while (std::getline(iss, line)) { + EXPECT_LE(line.length(), max_line_width) + << "Line exceeds max width: \"" << line << "\""; + } +} + +// Test: esolver_type has list items properly formatted +TEST_F(ParameterHelpTest, EsolverTypeListFormatting) { + std::ostringstream captured; + bool result; + + { + ScopedCoutRedirect redirect(captured.rdbuf()); + result = ModuleIO::ParameterHelp::show_parameter_help("esolver_type"); + } + + EXPECT_TRUE(result); + std::string output = captured.str(); + + // esolver_type has items like "ksdft:", "ofdft:", etc. + EXPECT_NE(output.find("ksdft:"), std::string::npos) + << "Expected 'ksdft:' in output:\n" << output; + EXPECT_NE(output.find("tddft:"), std::string::npos) + << "Expected 'tddft:' in output:\n" << output; +} + +// Test: symmetry parameter displays with list items +TEST_F(ParameterHelpTest, SymmetryListFormatting) { + std::ostringstream captured; + bool result; + + { + ScopedCoutRedirect redirect(captured.rdbuf()); + result = ModuleIO::ParameterHelp::show_parameter_help("symmetry"); + } + + EXPECT_TRUE(result); + std::string output = captured.str(); + + // symmetry has items like "-1:", "0:", "1:" + // These should be preserved in some form + EXPECT_NE(output.find("-1:"), std::string::npos) + << "Expected '-1:' in output:\n" << output; +} + +// Test: Description content is preserved (not truncated) +TEST_F(ParameterHelpTest, DescriptionContentPreserved) { + auto meta = ModuleIO::ParameterHelp::get_metadata("calculation"); + ASSERT_FALSE(meta.name.empty()); + + // The calculation parameter should mention scf, relax, md, etc. + EXPECT_NE(meta.description.find("scf"), std::string::npos) + << "Expected 'scf' in description: " << meta.description; + EXPECT_NE(meta.description.find("relax"), std::string::npos) + << "Expected 'relax' in description: " << meta.description; + EXPECT_NE(meta.description.find("md"), std::string::npos) + << "Expected 'md' in description: " << meta.description; +} + +// Test: generate_yaml() produces valid YAML header +TEST_F(ParameterHelpTest, GenerateYamlHeader) { + std::ostringstream captured; + ModuleIO::ParameterHelp::generate_yaml(captured); + std::string output = captured.str(); + + // Must contain the top-level "parameters:" key + EXPECT_NE(output.find("parameters:"), std::string::npos) + << "YAML output must contain 'parameters:' header"; +} + +// Test: generate_yaml() contains known parameters +TEST_F(ParameterHelpTest, GenerateYamlContainsKnownParams) { + std::ostringstream captured; + ModuleIO::ParameterHelp::generate_yaml(captured); + std::string output = captured.str(); + + EXPECT_NE(output.find("name: ecutwfc"), std::string::npos) + << "YAML output must contain parameter 'ecutwfc'"; + EXPECT_NE(output.find("name: calculation"), std::string::npos) + << "YAML output must contain parameter 'calculation'"; + EXPECT_NE(output.find("name: basis_type"), std::string::npos) + << "YAML output must contain parameter 'basis_type'"; +} + +// Test: generate_yaml() has sufficient parameter count +TEST_F(ParameterHelpTest, GenerateYamlParameterCount) { + std::ostringstream captured; + ModuleIO::ParameterHelp::generate_yaml(captured); + std::string output = captured.str(); + + // Count occurrences of " - name: " which marks each parameter entry + size_t count = 0; + size_t pos = 0; + std::string marker = " - name: "; + while ((pos = output.find(marker, pos)) != std::string::npos) { + ++count; + pos += marker.size(); + } + + EXPECT_GT(count, 400u) + << "YAML output should contain > 400 parameters, found " << count; +} + +// Test: generate_yaml() uses block scalar syntax for descriptions +TEST_F(ParameterHelpTest, GenerateYamlBlockScalar) { + std::ostringstream captured; + ModuleIO::ParameterHelp::generate_yaml(captured); + std::string output = captured.str(); + + // Block scalar markers "description: |" should be present + EXPECT_NE(output.find("description: |"), std::string::npos) + << "YAML output must use block scalar syntax (|) for descriptions"; +} diff --git a/source/source_io/test/io_dmk_test.cpp b/source/source_io/test/io_dmk_test.cpp deleted file mode 100644 index 673185648c..0000000000 --- a/source/source_io/test/io_dmk_test.cpp +++ /dev/null @@ -1,336 +0,0 @@ -#include "source_io/io_dmk.h" - -#define private public -#include "source_io/module_parameter/parameter.h" -#undef private -#include "source_base/global_variable.h" -#include "prepare_unitcell.h" - -#include "gmock/gmock.h" -#include "gtest/gtest.h" -#include "source_base/module_external/scalapack_connector.h" - -#ifdef __MPI -#include "mpi.h" -#endif - -#ifdef __LCAO -InfoNonlocal::InfoNonlocal() {} -InfoNonlocal::~InfoNonlocal() {} -LCAO_Orbitals::LCAO_Orbitals() {} -LCAO_Orbitals::~LCAO_Orbitals() {} -#endif -Magnetism::Magnetism() { - this->tot_mag = 0.0; - this->abs_mag = 0.0; - this->start_mag = nullptr; -} -Magnetism::~Magnetism() { delete[] this->start_mag; } - -/************************************************ - * unit test of read_dmk and write_dmk - ***********************************************/ - -/** - * - Tested Functions: - * - read_dmk() - * - the function to read density matrix K from file - * - the serial version without MPI - * - write_dmk() - * - the function to write density matrix K to file - * - the serial version without MPI - */ - -void init_pv(int nlocal, Parallel_2D& pv) -{ -#ifdef __MPI - pv.init(nlocal, nlocal, 1, MPI_COMM_WORLD); -#else - pv.nrow = nlocal; - pv.ncol = nlocal; -#endif -} - -template -void gen_dmk(std::vector>& dmk, std::vector& efs, int nspin, int nk, int nlocal, Parallel_2D& pv) -{ - int myrank = 0; -#ifdef __MPI - MPI_Comm_rank(MPI_COMM_WORLD, &myrank); -#endif - std::vector> dmk_global(nspin * nk, std::vector(nlocal * nlocal, T(0.0))); - if (myrank == 0) - { - for (int i = 0; i < nspin * nk; i++) - { - for (int j = 0; j < nlocal * nlocal; j++) - { - std::complex value = std::complex(1.0 * i + 0.1 * j, 0.1 * i + 1.0 * j); - dmk_global[i][j] = reinterpret_cast(&value)[0]; - } - } - } -#ifdef __MPI - Parallel_2D pv_global; - pv_global.init(nlocal, nlocal, nlocal, MPI_COMM_WORLD); - dmk.resize(nspin * nk, std::vector(pv.get_local_size(), 0.0)); - for (int i = 0; i < nspin * nk; i++) - { - Cpxgemr2d(nlocal, - nlocal, - dmk_global[i].data(), - 1, - 1, - pv_global.desc, - dmk[i].data(), - 1, - 1, - pv.desc, - pv.blacs_ctxt); - } -#else - dmk = dmk_global; -#endif - - efs.resize(nspin, 0.0); - for (int i = 0; i < nspin; i++) - { - efs[i] = 0.1 * i; - } -} - - -TEST(DMKTest, GenFileName) { - std::string fname = ModuleIO::dmk_gen_fname(true, 0, 0); - EXPECT_EQ(fname, "dms1_nao.txt"); - fname = ModuleIO::dmk_gen_fname(true, 1, 1); - EXPECT_EQ(fname, "dms2_nao.txt"); - - fname = ModuleIO::dmk_gen_fname(false, 0, 0); - EXPECT_EQ(fname, "dms1k1_nao.txt"); - fname = ModuleIO::dmk_gen_fname(false, 1, 1); - EXPECT_EQ(fname, "dms2k2_nao.txt"); -}; - - -TEST(DMKTest,WriteDMK) { - UnitCell* ucell; - UcellTestPrepare utp = UcellTestLib["Si"]; - ucell = utp.SetUcellInfo(); - - int nspin = 2; - int nk = 1; - int nk_multik = 2; - int nlocal = 20; - std::vector> dmk; - std::vector>> dmk_multik; - Parallel_2D pv; - std::vector efs; - init_pv(nlocal, pv); - - gen_dmk(dmk, efs, nspin, nk, nlocal, pv); - gen_dmk(dmk_multik, efs, nspin, nk_multik, nlocal, pv); - PARAM.sys.global_out_dir = "./"; - - ModuleIO::write_dmk(dmk, 3, efs, ucell, pv); - ModuleIO::write_dmk(dmk_multik, 3, efs, ucell, pv); - std::ifstream ifs; - - int pass = 0; - if (GlobalV::MY_RANK == 0) - { - std::string fn = "dms1_nao.txt"; - ifs.open(fn); - std::string str((std::istreambuf_iterator(ifs)), - std::istreambuf_iterator()); - EXPECT_THAT(str, testing::HasSubstr("0.00000 (fermi energy)")); - EXPECT_THAT(str, testing::HasSubstr("20 20")); - EXPECT_THAT( - str, - testing::HasSubstr("0.000e+00 1.000e-01 2.000e-01 3.000e-01 4.000e-01 " - "5.000e-01 6.000e-01 7.000e-01\n")); - EXPECT_THAT( - str, - testing::HasSubstr("8.000e-01 9.000e-01 1.000e+00 1.100e+00 1.200e+00 " - "1.300e+00 1.400e+00 1.500e+00\n")); - EXPECT_THAT( - str, - testing::HasSubstr("1.600e+00 1.700e+00 1.800e+00 1.900e+00\n")); - ifs.close(); - - fn = "dms2_nao.txt"; - ifs.open(fn); - str = std::string((std::istreambuf_iterator(ifs)), - std::istreambuf_iterator()); - EXPECT_THAT(str, testing::HasSubstr("0.10000 (fermi energy)")); - EXPECT_THAT(str, testing::HasSubstr("20 20")); - EXPECT_THAT( - str, - testing::HasSubstr("1.000e+00 1.100e+00 1.200e+00 1.300e+00 1.400e+00 " - "1.500e+00 1.600e+00 1.700e+00\n")); - EXPECT_THAT( - str, - testing::HasSubstr("1.800e+00 1.900e+00 2.000e+00 2.100e+00 2.200e+00 " - "2.300e+00 2.400e+00 2.500e+00\n")); - EXPECT_THAT( - str, - testing::HasSubstr("2.600e+00 2.700e+00 2.800e+00 2.900e+00\n")); - ifs.close(); - - fn = "dms1k1_nao.txt"; - ifs.open(fn); - str = std::string((std::istreambuf_iterator(ifs)), - std::istreambuf_iterator()); - EXPECT_THAT(str, testing::HasSubstr("0.00000 (fermi energy)")); - EXPECT_THAT(str, testing::HasSubstr("20 20")); - EXPECT_THAT( - str, - testing::HasSubstr("(0.000e+00,0.000e+00) (1.000e-01,1.000e+00) (2.000e-01,2.000e+00) " - "(3.000e-01,3.000e+00) (4.000e-01,4.000e+00) (5.000e-01,5.000e+00) " - "(6.000e-01,6.000e+00) (7.000e-01,7.000e+00)\n")); - EXPECT_THAT( - str, - testing::HasSubstr("(8.000e-01,8.000e+00) (9.000e-01,9.000e+00) (1.000e+00,1.000e+01) " - "(1.100e+00,1.100e+01) (1.200e+00,1.200e+01) (1.300e+00,1.300e+01) " - "(1.400e+00,1.400e+01) (1.500e+00,1.500e+01)\n")); - EXPECT_THAT( - str, - testing::HasSubstr("(1.600e+00,1.600e+01) (1.700e+00,1.700e+01) (1.800e+00,1.800e+01) (1.900e+00,1.900e+01)\n")); - ifs.close(); - - fn = "dms1k2_nao.txt"; - ifs.open(fn); - str = std::string((std::istreambuf_iterator(ifs)), - std::istreambuf_iterator()); - EXPECT_THAT(str, testing::HasSubstr("0.00000 (fermi energy)")); - EXPECT_THAT(str, testing::HasSubstr("20 20")); - EXPECT_THAT( - str, - testing::HasSubstr("(1.000e+00,1.000e-01) (1.100e+00,1.100e+00) (1.200e+00,2.100e+00) " - "(1.300e+00,3.100e+00) (1.400e+00,4.100e+00) (1.500e+00,5.100e+00) " - "(1.600e+00,6.100e+00) (1.700e+00,7.100e+00)\n")); - EXPECT_THAT( - str, - testing::HasSubstr("(1.800e+00,8.100e+00) (1.900e+00,9.100e+00) (2.000e+00,1.010e+01) " - "(2.100e+00,1.110e+01) (2.200e+00,1.210e+01) (2.300e+00,1.310e+01) " - "(2.400e+00,1.410e+01) (2.500e+00,1.510e+01)\n")); - EXPECT_THAT( - str, - testing::HasSubstr("(2.600e+00,1.610e+01) (2.700e+00,1.710e+01) (2.800e+00,1.810e+01) (2.900e+00,1.910e+01)\n")); - ifs.close(); - - fn = "dms2k1_nao.txt"; - ifs.open(fn); - str = std::string((std::istreambuf_iterator(ifs)), - std::istreambuf_iterator()); - EXPECT_THAT(str, testing::HasSubstr("0.10000 (fermi energy)")); - EXPECT_THAT(str, testing::HasSubstr("20 20")); - EXPECT_THAT( - str, - testing::HasSubstr("(2.000e+00,2.000e-01) (2.100e+00,1.200e+00) (2.200e+00,2.200e+00) " - "(2.300e+00,3.200e+00) (2.400e+00,4.200e+00) (2.500e+00,5.200e+00) " - "(2.600e+00,6.200e+00) (2.700e+00,7.200e+00)\n")); - EXPECT_THAT( - str, - testing::HasSubstr("(2.800e+00,8.200e+00) (2.900e+00,9.200e+00) (3.000e+00,1.020e+01) " - "(3.100e+00,1.120e+01) (3.200e+00,1.220e+01) (3.300e+00,1.320e+01) " - "(3.400e+00,1.420e+01) (3.500e+00,1.520e+01)\n")); - EXPECT_THAT( - str, - testing::HasSubstr("(3.600e+00,1.620e+01) (3.700e+00,1.720e+01) (3.800e+00,1.820e+01) (3.900e+00,1.920e+01)\n")); - ifs.close(); - - fn = "dms2k2_nao.txt"; - ifs.open(fn); - str = std::string((std::istreambuf_iterator(ifs)), - std::istreambuf_iterator()); - EXPECT_THAT(str, testing::HasSubstr("0.10000 (fermi energy)")); - EXPECT_THAT(str, testing::HasSubstr("20 20")); - EXPECT_THAT( - str, - testing::HasSubstr("(3.000e+00,3.000e-01) (3.100e+00,1.300e+00) (3.200e+00,2.300e+00) " - "(3.300e+00,3.300e+00) (3.400e+00,4.300e+00) (3.500e+00,5.300e+00) " - "(3.600e+00,6.300e+00) (3.700e+00,7.300e+00)\n")); - EXPECT_THAT( - str, - testing::HasSubstr("(3.800e+00,8.300e+00) (3.900e+00,9.300e+00) (4.000e+00,1.030e+01) " - "(4.100e+00,1.130e+01) (4.200e+00,1.230e+01) (4.300e+00,1.330e+01) " - "(4.400e+00,1.430e+01) (4.500e+00,1.530e+01)\n")); - EXPECT_THAT( - str, - testing::HasSubstr("(4.600e+00,1.630e+01) (4.700e+00,1.730e+01) (4.800e+00,1.830e+01) (4.900e+00,1.930e+01)\n")); - ifs.close(); - remove("dms1_nao.txt"); - remove("dms2_nao.txt"); - remove("dms1k1_nao.txt"); - remove("dms1k2_nao.txt"); - remove("dms2k1_nao.txt"); - remove("dms2k2_nao.txt"); - } - - delete ucell; - // remove the generated files - -}; - - -// no function in the main code calls read_dmk??? mohan note 2025-05-25 -TEST(DMKTest, ReadDMK) { - int nlocal = 26; - std::vector> dmk; - std::vector>> dmk_multik; - Parallel_2D pv; - std::vector efs; - PARAM.sys.global_out_dir = "./"; - - init_pv(nlocal, pv); - - std::ofstream ofs_running("running_log.txt"); - - EXPECT_TRUE(ModuleIO::read_dmk(1, 1, pv, "./support/", dmk, ofs_running)); - ModuleIO::read_dmk(1, 1, pv, "./support/", dmk_multik, ofs_running); - EXPECT_TRUE(ModuleIO::read_dmk(1, 1, pv, "./support/", dmk_multik, ofs_running)); - EXPECT_EQ(dmk.size(), 1); - EXPECT_EQ(dmk_multik.size(), 1); - EXPECT_EQ(dmk[0].size(), pv.get_local_size()); - EXPECT_EQ(dmk_multik[0].size(), pv.get_local_size()); - if (GlobalV::MY_RANK == 0) - { - EXPECT_NEAR(dmk[0][0], 3.904e-01, 1e-6); - EXPECT_NEAR(dmk_multik[0][1].real(), -4.479e-03, 1e-6); - EXPECT_NEAR(dmk_multik[0][1].imag(), 3.208e-04, 1e-6); - } - - ofs_running.close(); - remove("running_log.txt"); -} - - -#ifdef __MPI -int main(int argc, char** argv) -{ - GlobalV::MY_RANK = 0; - - MPI_Init(&argc, &argv); - MPI_Comm_size(MPI_COMM_WORLD, &GlobalV::NPROC); - MPI_Comm_rank(MPI_COMM_WORLD, &GlobalV::MY_RANK); - - testing::InitGoogleTest(&argc, argv); - ::testing::TestEventListeners& listeners = ::testing::UnitTest::GetInstance()->listeners(); - - if (GlobalV::MY_RANK != 0) { - delete listeners.Release(listeners.default_result_printer()); - } - - int result = RUN_ALL_TESTS(); - MPI_Bcast(&result, 1, MPI_INT, 0, MPI_COMM_WORLD); - - if (GlobalV::MY_RANK == 0 && result != 0) - { - std::cout << "ERROR:some tests are not passed" << std::endl; - } - - MPI_Finalize(); - return result; -} -#endif diff --git a/source/source_io/test/numerical_basis_test.cpp b/source/source_io/test/numerical_basis_test.cpp index 75f4205cd3..87037c4507 100644 --- a/source/source_io/test/numerical_basis_test.cpp +++ b/source/source_io/test/numerical_basis_test.cpp @@ -1,7 +1,7 @@ #include "source_base/math_sphbes.h" #include "source_base/matrix3.h" #include "source_base/vector3.h" -#include "source_io/numerical_basis_jyjy.h" +#include "source_io/module_bessel/numerical_basis_jyjy.h" #include "gtest/gtest.h" diff --git a/source/source_io/test/orb_io_test.cpp b/source/source_io/test/orb_io_test.cpp index fb26f83850..a17133da67 100644 --- a/source/source_io/test/orb_io_test.cpp +++ b/source/source_io/test/orb_io_test.cpp @@ -1,5 +1,5 @@ #include -#include "source_io/orb_io.h" +#include "source_io/module_output/orb_io.h" #ifdef __MPI #include diff --git a/source/source_io/test/output_mulliken_mock.cpp b/source/source_io/test/output_mulliken_mock.cpp index 66e8cbe814..b83e66b57c 100644 --- a/source/source_io/test/output_mulliken_mock.cpp +++ b/source/source_io/test/output_mulliken_mock.cpp @@ -66,8 +66,8 @@ std::vector read_k(std::string filename, int ik) } // namespace ModuleIO -#include "source_io/output_dmk.h" -#include "source_io/output_sk.h" +#include "source_io/module_mulliken/output_dmk.h" +#include "source_io/module_mulliken/output_sk.h" namespace ModuleIO { diff --git a/source/source_io/test/output_mulliken_test.cpp b/source/source_io/test/output_mulliken_test.cpp index 1abe3614d7..2d4b0800d0 100644 --- a/source/source_io/test/output_mulliken_test.cpp +++ b/source/source_io/test/output_mulliken_test.cpp @@ -1,9 +1,9 @@ -#include "../output_mulliken.h" +#include "../module_mulliken/output_mulliken.h" #include "source_cell/cell_index.h" -#include "source_io/output_dmk.h" -#include "source_io/output_sk.h" +#include "source_io/module_mulliken/output_dmk.h" +#include "source_io/module_mulliken/output_sk.h" #include "gmock/gmock.h" #include "gtest/gtest.h" @@ -41,16 +41,16 @@ TYPED_TEST(OutputMullikenTest, nspin1) this->ncol = 13; this->paraV.init(this->nrow, this->ncol, 1, MPI_COMM_WORLD, 0); auto cell_index = CellIndex(this->atomLabels, this->atomCounts, this->lnchiCounts, 1); - auto out_sk = ModuleIO::Output_Sk(nullptr, &this->paraV, 1, 1); - auto out_dmk = ModuleIO::Output_DMK(nullptr, &this->paraV, 1, 1); - auto mulp = ModuleIO::Output_Mulliken(&(out_sk), &(out_dmk), &(this->paraV), &(cell_index), {0}, 1); + auto out_s_k = ModuleIO::Output_Sk(nullptr, &this->paraV, 1, 1); + auto out_dm_k = ModuleIO::Output_DMK(nullptr, &this->paraV, 1, 1); + auto mulp = ModuleIO::Output_Mulliken(&(out_s_k), &(out_dm_k), &(this->paraV), &(cell_index), {0}, 1); mulp.write(0, "./"); std::vector tot_chg = mulp.get_tot_chg(); EXPECT_NEAR(tot_chg[0], 4.0, 1e-5); std::ifstream ifs("./mulliken.txt"); std::string str((std::istreambuf_iterator(ifs)), std::istreambuf_iterator()); - EXPECT_THAT(str, testing::HasSubstr("Total charge:\t4")); - EXPECT_THAT(str, testing::HasSubstr("Total Charge on atom: Si 4.0000")); + EXPECT_THAT(str, testing::HasSubstr(" Total charge 4")); + EXPECT_THAT(str, testing::HasSubstr("total charge on atom 1 4.0000")); remove("./mulliken.txt"); } @@ -60,20 +60,20 @@ TYPED_TEST(OutputMullikenTest, nspin2) this->ncol = 13; this->paraV.init(this->nrow, this->ncol, 1, MPI_COMM_WORLD, 0); auto cell_index = CellIndex(this->atomLabels, this->atomCounts, this->lnchiCounts, 2); - auto out_sk = ModuleIO::Output_Sk(nullptr, &this->paraV, 2, 1); - auto out_dmk = ModuleIO::Output_DMK(nullptr, &this->paraV, 2, 1); - auto mulp = ModuleIO::Output_Mulliken(&(out_sk), &(out_dmk), &(this->paraV), &(cell_index), {0, 1}, 2); + auto out_s_k = ModuleIO::Output_Sk(nullptr, &this->paraV, 2, 1); + auto out_dm_k = ModuleIO::Output_DMK(nullptr, &this->paraV, 2, 1); + auto mulp = ModuleIO::Output_Mulliken(&(out_s_k), &(out_dm_k), &(this->paraV), &(cell_index), {0, 1}, 2); mulp.write(0, "./"); std::vector tot_chg = mulp.get_tot_chg(); EXPECT_NEAR(tot_chg[0], 3.0, 1e-5); EXPECT_NEAR(tot_chg[1], 1.0, 1e-5); std::ifstream ifs("./mulliken.txt"); std::string str((std::istreambuf_iterator(ifs)), std::istreambuf_iterator()); - EXPECT_THAT(str, testing::HasSubstr("Total charge:\t4")); - EXPECT_THAT(str, testing::HasSubstr("Total charge of spin 1:\t3")); - EXPECT_THAT(str, testing::HasSubstr("Total charge of spin 2:\t1")); - EXPECT_THAT(str, testing::HasSubstr("Total Charge on atom: Si 4.0000")); - EXPECT_THAT(str, testing::HasSubstr("Total Magnetism on atom: Si 2.0000")); + EXPECT_THAT(str, testing::HasSubstr(" Total charge 4")); + EXPECT_THAT(str, testing::HasSubstr(" Total charge of spin1 3")); + EXPECT_THAT(str, testing::HasSubstr(" Total charge of spin2 1")); + EXPECT_THAT(str, testing::HasSubstr("total charge on atom 1 4.0000")); + EXPECT_THAT(str, testing::HasSubstr("total magnetism on atom 1 2.0000")); remove("./mulliken.txt"); } @@ -83,10 +83,10 @@ TYPED_TEST(OutputMullikenTest, nspin4) this->ncol = 26; this->paraV.init(this->nrow, this->ncol, 1, MPI_COMM_WORLD, 0); auto cell_index = CellIndex(this->atomLabels, this->atomCounts, this->lnchiCounts, 4); - auto out_sk = ModuleIO::Output_Sk>(nullptr, &this->paraV, 4, 1); - auto out_dmk = ModuleIO::Output_DMK>(nullptr, &this->paraV, 4, 1); + auto out_s_k = ModuleIO::Output_Sk>(nullptr, &this->paraV, 4, 1); + auto out_dm_k = ModuleIO::Output_DMK>(nullptr, &this->paraV, 4, 1); auto mulp - = ModuleIO::Output_Mulliken>(&(out_sk), &(out_dmk), &(this->paraV), &(cell_index), {0}, 4); + = ModuleIO::Output_Mulliken>(&(out_s_k), &(out_dm_k), &(this->paraV), &(cell_index), {0}, 4); mulp.write(0, "./"); std::vector tot_chg = mulp.get_tot_chg(); EXPECT_NEAR(tot_chg[0], 4.0, 1e-5); @@ -95,12 +95,9 @@ TYPED_TEST(OutputMullikenTest, nspin4) EXPECT_NEAR(tot_chg[3], 2.0, 1e-5); std::ifstream ifs("./mulliken.txt"); std::string str((std::istreambuf_iterator(ifs)), std::istreambuf_iterator()); - EXPECT_THAT(str, testing::HasSubstr("Total charge:\t4")); - EXPECT_THAT(str, testing::HasSubstr("Total Charge on atom: Si 4.0000")); - EXPECT_THAT( - str, - testing::HasSubstr( - "Total Magnetism on atom: Si 0.0000 0.0000 2.0000")); + EXPECT_THAT(str, testing::HasSubstr(" Total charge 4")); + EXPECT_THAT(str, testing::HasSubstr("total charge on atom 1 4.0000")); + EXPECT_THAT(str, testing::HasSubstr("total magnetism on atom 1 0.0000 0.0000 2.0000")); remove("./mulliken.txt"); } @@ -111,8 +108,8 @@ int main(int argc, char** argv) MPI_Init(&argc, &argv); testing::InitGoogleTest(&argc, argv); - int nprocs; - int myrank; + int nprocs=0; + int myrank=0; MPI_Comm_size(MPI_COMM_WORLD, &nprocs); MPI_Comm_rank(MPI_COMM_WORLD, &myrank); @@ -123,4 +120,4 @@ int main(int argc, char** argv) return result; } -#endif \ No newline at end of file +#endif diff --git a/source/source_io/test/output_test.cpp b/source/source_io/test/output_test.cpp index 8ef69c0f68..769898339f 100644 --- a/source/source_io/test/output_test.cpp +++ b/source/source_io/test/output_test.cpp @@ -33,7 +33,7 @@ T* get_simple_array(int num) return rand_array; } -#include "../output.h" +#include "../module_output/output.h" class OutputTest : public testing::Test { diff --git a/source/source_io/test/outputlog_test.cpp b/source/source_io/test/outputlog_test.cpp index 4932596039..2eabec2b9f 100644 --- a/source/source_io/test/outputlog_test.cpp +++ b/source/source_io/test/outputlog_test.cpp @@ -10,7 +10,7 @@ #include "source_base/constants.h" #include "source_base/global_variable.h" -#include "source_io/output_log.h" +#include "source_io/module_output/output_log.h" #ifdef __MPI #include "source_basis/module_pw/test/test_tool.h" @@ -182,6 +182,10 @@ pseudo::pseudo() pseudo::~pseudo() { } +SepPot::SepPot(){} +SepPot::~SepPot(){} +Sep_Cell::Sep_Cell() noexcept {} +Sep_Cell::~Sep_Cell() noexcept {} TEST(OutputVacuumLevelTest, OutputVacuumLevel) { diff --git a/source/source_io/test/parse_args_test.cpp b/source/source_io/test/parse_args_test.cpp index 1ff3c4d543..09b69c74f9 100644 --- a/source/source_io/test/parse_args_test.cpp +++ b/source/source_io/test/parse_args_test.cpp @@ -1,63 +1,284 @@ #include "source_io/parse_args.h" - #include "gtest/gtest.h" -#include "source_io/read_input.h" +#include "source_io/module_parameter/read_input.h" #include "source_main/version.h" -bool ModuleIO::ReadInput::check_mode = false; +// Already deal with Testing.cmake +// #include "build_info.h" + +// This file is modified by ZhouXY-PKU at 2025-12-01 + +// Refresh test status +class ParseArgsTest : public ::testing::Test { +protected: + void SetUp() override { + ModuleIO::ReadInput::check_mode = false; + } +}; -TEST(ParseArgsTest, OutVersionTest) -{ - // Test case 1: no arguments +// Test for no argument +TEST_F(ParseArgsTest, NoArguments) { char arg0[] = "test"; char* argv[] = {arg0}; int argc = 1; + testing::internal::CaptureStdout(); ModuleIO::parse_args(argc, argv); std::string output = testing::internal::GetCapturedStdout(); - EXPECT_EQ("", output); - // No output expected + EXPECT_TRUE(output.empty()) << "Expected no output for no arguments."; +} +// Test for abacus version +TEST_F(ParseArgsTest, VersionFlags) { #ifdef VERSION std::string output_ref = "ABACUS version " + std::string(VERSION) + "\n"; #else std::string output_ref = "ABACUS version unknown\n"; #endif - // Test case 2: --version argument + std::vector version_args = {"--version", "-v", "-V"}; + + for (const auto& arg : version_args) { + char arg0[] = "test"; + std::vector argv = {arg0, const_cast(arg.c_str())}; + int argc = argv.size(); + + testing::internal::CaptureStdout(); + EXPECT_EXIT( + { ModuleIO::parse_args(argc, argv.data()); }, + ::testing::ExitedWithCode(0), + "" + ) << "Failed for argument: " << arg; + + std::string output = testing::internal::GetCapturedStdout(); + EXPECT_EQ(output_ref, output) << "Output mismatch for argument: " << arg; + } +} + +// Test for abacus info +TEST_F(ParseArgsTest, InfoFlags) { + std::vector info_args = {"--info", "-i", "-I"}; + + for (const auto& arg : info_args) { + char arg0[] = "test"; + std::vector argv = {arg0, const_cast(arg.c_str())}; + int argc = argv.size(); + + testing::internal::CaptureStdout(); + EXPECT_EXIT( + { ModuleIO::parse_args(argc, argv.data()); }, + ::testing::ExitedWithCode(0), + "" + ) << "Failed for argument: " << arg; + + std::string output = testing::internal::GetCapturedStdout(); + EXPECT_TRUE(output.find("ABACUS Core") != std::string::npos) + << "Output mismatch for argument: " << arg << "\nCaptured output was: " << output; + } +} + +// Test for unavailable arguments +TEST_F(ParseArgsTest, UnknownArgument) { + char arg0[] = "test"; + char arg1[] = "--nonexistent-option"; + char* argv[] = {arg0, arg1}; + int argc = 2; + + EXPECT_EXIT( + { ModuleIO::parse_args(argc, argv); }, + ::testing::ExitedWithCode(1), + "Usage: abacus" + ) << "Failed for unknown argument test."; +} + +// Test for --check-input +TEST_F(ParseArgsTest, CheckInputFlag) { + char arg0[] = "test"; + char arg1[] = "--check-input"; + char* argv[] = {arg0, arg1}; + int argc = 2; + + ModuleIO::parse_args(argc, argv); + + EXPECT_TRUE(ModuleIO::ReadInput::check_mode); +} + +TEST_F(ParseArgsTest, PriorityVersionOverCheckInput) { + char arg0[] = "test"; char arg1[] = "--version"; - char* argv1[] = {arg0, arg1}; - argc = 2; + char arg2[] = "--check-input"; + char* argv[] = {arg0, arg1, arg2}; + int argc = 3; + + testing::internal::CaptureStdout(); + EXPECT_EXIT( + { ModuleIO::parse_args(argc, argv); }, + ::testing::ExitedWithCode(0), + "" + ); + std::string output = testing::internal::GetCapturedStdout(); + EXPECT_TRUE(output.find("ABACUS version") != std::string::npos) + << "Output did not contain version information.\nCaptured output was: " << output; +} + +// Test for -h without argument (general help) +TEST_F(ParseArgsTest, HelpGeneralShort) { + char arg0[] = "test"; + char arg1[] = "-h"; + char* argv[] = {arg0, arg1}; + int argc = 2; + + testing::internal::CaptureStdout(); + EXPECT_EXIT( + { ModuleIO::parse_args(argc, argv); }, + ::testing::ExitedWithCode(0), + "" + ); + std::string output = testing::internal::GetCapturedStdout(); + EXPECT_TRUE(output.find("ABACUS") != std::string::npos); + EXPECT_TRUE(output.find("Usage:") != std::string::npos); +} + +// Test for --help without argument (general help) +TEST_F(ParseArgsTest, HelpGeneralLong) { + char arg0[] = "test"; + char arg1[] = "--help"; + char* argv[] = {arg0, arg1}; + int argc = 2; + testing::internal::CaptureStdout(); - EXPECT_EXIT(ModuleIO::parse_args(argc, argv1), ::testing::ExitedWithCode(0), ""); - output = testing::internal::GetCapturedStdout(); - EXPECT_EQ(output_ref, output); + EXPECT_EXIT( + { ModuleIO::parse_args(argc, argv); }, + ::testing::ExitedWithCode(0), + "" + ); + std::string output = testing::internal::GetCapturedStdout(); + EXPECT_TRUE(output.find("ABACUS") != std::string::npos); + EXPECT_TRUE(output.find("Usage:") != std::string::npos); +} + +// Test for -h with known parameter +TEST_F(ParseArgsTest, HelpKnownParameter) { + char arg0[] = "test"; + char arg1[] = "-h"; + char arg2[] = "calculation"; + char* argv[] = {arg0, arg1, arg2}; + int argc = 3; - // Test case 3: -v argument - char arg2[] = "-v"; - char* argv2[] = {arg0, arg2}; - argc = 2; testing::internal::CaptureStdout(); - EXPECT_EXIT(ModuleIO::parse_args(argc, argv2), ::testing::ExitedWithCode(0), ""); - output = testing::internal::GetCapturedStdout(); - EXPECT_EQ(output_ref, output); + EXPECT_EXIT( + { ModuleIO::parse_args(argc, argv); }, + ::testing::ExitedWithCode(0), + "" + ); + std::string output = testing::internal::GetCapturedStdout(); + EXPECT_TRUE(output.find("Parameter:") != std::string::npos); + EXPECT_TRUE(output.find("calculation") != std::string::npos); + EXPECT_TRUE(output.find("Type:") != std::string::npos); + EXPECT_TRUE(output.find("Description:") != std::string::npos); +} + +// Test for -h with unknown parameter (should show fuzzy suggestions) +TEST_F(ParseArgsTest, HelpUnknownParameter) { + char arg0[] = "test"; + char arg1[] = "-h"; + char arg2[] = "ecutwf"; // Similar to ecutwfc + char* argv[] = {arg0, arg1, arg2}; + int argc = 3; + + EXPECT_EXIT( + { ModuleIO::parse_args(argc, argv); }, + ::testing::ExitedWithCode(1), + "Unknown parameter.*Did you mean" + ); +} + +// Test for -s with results +TEST_F(ParseArgsTest, SearchWithResults) { + char arg0[] = "test"; + char arg1[] = "-s"; + char arg2[] = "ecut"; // Should match ecutwfc, ecutrho, etc. + char* argv[] = {arg0, arg1, arg2}; + int argc = 3; - // Test case 4: -V argument - char arg3[] = "-V"; - char* argv3[] = {arg0, arg3}; - argc = 2; testing::internal::CaptureStdout(); - EXPECT_EXIT(ModuleIO::parse_args(argc, argv3), ::testing::ExitedWithCode(0), ""); - output = testing::internal::GetCapturedStdout(); - EXPECT_EQ(output_ref, output); + EXPECT_EXIT( + { ModuleIO::parse_args(argc, argv); }, + ::testing::ExitedWithCode(0), + "" + ); + std::string output = testing::internal::GetCapturedStdout(); + EXPECT_TRUE(output.find("Found") != std::string::npos); + EXPECT_TRUE(output.find("parameter(s) matching") != std::string::npos); + EXPECT_TRUE(output.find("ecut") != std::string::npos); } -TEST(ParseArgsTest, CheckInput) -{ +// Test for --search with results +TEST_F(ParseArgsTest, SearchLongWithResults) { char arg0[] = "test"; - char arg1[] = "--check-input"; + char arg1[] = "--search"; + char arg2[] = "basis"; + char* argv[] = {arg0, arg1, arg2}; + int argc = 3; + + testing::internal::CaptureStdout(); + EXPECT_EXIT( + { ModuleIO::parse_args(argc, argv); }, + ::testing::ExitedWithCode(0), + "" + ); + std::string output = testing::internal::GetCapturedStdout(); + EXPECT_TRUE(output.find("Found") != std::string::npos); + EXPECT_TRUE(output.find("parameter(s) matching") != std::string::npos); +} + +// Test for -s with no results +TEST_F(ParseArgsTest, SearchWithNoResults) { + char arg0[] = "test"; + char arg1[] = "-s"; + char arg2[] = "xyzabc123notfound"; + char* argv[] = {arg0, arg1, arg2}; + int argc = 3; + + EXPECT_EXIT( + { ModuleIO::parse_args(argc, argv); }, + ::testing::ExitedWithCode(1), + "No parameters found matching" + ); +} + +// Test for -s without query (error) +TEST_F(ParseArgsTest, SearchWithoutQuery) { + char arg0[] = "test"; + char arg1[] = "-s"; char* argv[] = {arg0, arg1}; int argc = 2; - ModuleIO::parse_args(argc, argv); - EXPECT_TRUE(ModuleIO::ReadInput::check_mode); -} \ No newline at end of file + + EXPECT_EXIT( + { ModuleIO::parse_args(argc, argv); }, + ::testing::ExitedWithCode(1), + "requires a search query" + ); +} + +// Test for -h followed by a flag (should show general help, not treat flag as parameter) +TEST_F(ParseArgsTest, HelpFollowedByFlag) { + char arg0[] = "test"; + char arg1[] = "-h"; + char arg2[] = "--version"; + char* argv[] = {arg0, arg1, arg2}; + int argc = 3; + + testing::internal::CaptureStdout(); + EXPECT_EXIT( + { ModuleIO::parse_args(argc, argv); }, + ::testing::ExitedWithCode(0), + "" + ); + std::string output = testing::internal::GetCapturedStdout(); + EXPECT_TRUE(output.find("Usage:") != std::string::npos); + // Should show general help, not version + EXPECT_TRUE(output.find("ABACUS version") == std::string::npos || + output.find("Usage:") != std::string::npos); +} + diff --git a/source/source_io/test/prepare_unitcell.h b/source/source_io/test/prepare_unitcell.h index e05792a96d..af3cffb383 100644 --- a/source/source_io/test/prepare_unitcell.h +++ b/source/source_io/test/prepare_unitcell.h @@ -98,7 +98,7 @@ class UcellTestPrepare } //lattice info ucell->lat0 = this->lat0; - ucell->lat0_angstrom = ucell->lat0 * 0.529177; + ucell->lat0_angstrom = ucell->lat0 * ModuleBase::BOHR_TO_A; ucell->tpiba = ModuleBase::TWO_PI/ucell->lat0; ucell->tpiba2 = ucell->tpiba * ucell->tpiba; ucell->latvec.e11 = this->latvec[0]; diff --git a/source/source_io/test/print_info_test.cpp b/source/source_io/test/print_info_test.cpp index af10f8fe3d..4e7739ea96 100644 --- a/source/source_io/test/print_info_test.cpp +++ b/source/source_io/test/print_info_test.cpp @@ -5,8 +5,8 @@ #include "source_cell/klist.h" #include "source_cell/parallel_kpoints.h" #include "source_cell/unitcell.h" -#include "source_io/berryphase.h" -#include "source_io/print_info.h" +#include "source_io/module_unk/berryphase.h" +#include "source_io/module_output/print_info.h" #include "prepare_unitcell.h" #undef private #ifdef __LCAO @@ -33,7 +33,7 @@ bool berryphase::berry_phase_flag=false; /** * - Tested Functions: - * - setup_parameters() + * - print_parameters() * - setup calculation parameters */ @@ -73,7 +73,7 @@ TEST_F(PrintInfoTest, SetupParameters) PARAM.sys.gamma_only_local = false; PARAM.input.calculation = cal_type[i]; testing::internal::CaptureStdout(); - EXPECT_NO_THROW(ModuleIO::setup_parameters(*ucell, *kv)); + EXPECT_NO_THROW(ModuleIO::print_parameters(*ucell, *kv, PARAM.input)); output = testing::internal::GetCapturedStdout(); if(PARAM.input.calculation == "scf") { @@ -96,7 +96,7 @@ TEST_F(PrintInfoTest, SetupParameters) { PARAM.input.mdp.md_type = md_types[j]; testing::internal::CaptureStdout(); - EXPECT_NO_THROW(ModuleIO::setup_parameters(*ucell, *kv)); + EXPECT_NO_THROW(ModuleIO::print_parameters(*ucell, *kv, PARAM.input)); output = testing::internal::GetCapturedStdout(); EXPECT_THAT(output,testing::HasSubstr("Molecular Dynamics simulations")); if (PARAM.mdp.md_type == "fire") @@ -131,7 +131,7 @@ TEST_F(PrintInfoTest, SetupParameters) { PARAM.input.basis_type = basis_type[i]; testing::internal::CaptureStdout(); - EXPECT_NO_THROW(ModuleIO::setup_parameters(*ucell, *kv)); + EXPECT_NO_THROW(ModuleIO::print_parameters(*ucell, *kv, PARAM.input)); output = testing::internal::GetCapturedStdout(); if(PARAM.input.basis_type == "lcao") { diff --git a/source/source_io/test/read_exit_file_test.cpp b/source/source_io/test/read_exit_file_test.cpp index b746d70cd5..e12c055576 100644 --- a/source/source_io/test/read_exit_file_test.cpp +++ b/source/source_io/test/read_exit_file_test.cpp @@ -1,5 +1,5 @@ -#include "source_io/read_exit_file.h" -#include "source_io/read_input.h" +#include "source_io/module_output/read_exit_file.h" +#include "source_io/module_parameter/read_input.h" #include "mpi.h" #include "gmock/gmock.h" diff --git a/source/source_io/test/read_input_ptest.cpp b/source/source_io/test/read_input_ptest.cpp index a3a2f5a15a..b723f4362c 100644 --- a/source/source_io/test/read_input_ptest.cpp +++ b/source/source_io/test/read_input_ptest.cpp @@ -4,7 +4,7 @@ #include "gmock/gmock.h" #include "gtest/gtest.h" #include "source_base/tool_quit.h" -#include "source_io/read_input.h" +#include "source_io/module_parameter/read_input.h" #include "source_io/module_parameter/parameter.h" // #ifdef __MPI @@ -41,7 +41,6 @@ TEST_F(InputParaTest, ParaRead) EXPECT_EQ(param.inp.pseudo_dir, "../../PP_ORB/"); EXPECT_EQ(param.inp.orbital_dir, "../../PP_ORB/"); EXPECT_EQ(param.inp.read_file_dir, "OUT.autotest/"); - EXPECT_EQ(param.inp.wannier_card, "none"); EXPECT_EQ(param.inp.latname, "none"); EXPECT_EQ(param.inp.calculation, "scf"); EXPECT_EQ(param.inp.esolver_type, "ksdft"); @@ -115,7 +114,7 @@ TEST_F(InputParaTest, ParaRead) EXPECT_EQ(param.inp.fixed_axes, "None"); EXPECT_FALSE(param.inp.fixed_ibrav); EXPECT_FALSE(param.inp.fixed_atoms); - EXPECT_EQ(param.inp.relax_method, "cg"); + EXPECT_EQ(param.inp.relax_method[0], "cg"); EXPECT_DOUBLE_EQ(param.inp.relax_cg_thr, 0.5); EXPECT_EQ(param.inp.out_level, "ie"); EXPECT_TRUE(param.globalv.out_md_control); @@ -183,18 +182,19 @@ TEST_F(InputParaTest, ParaRead) EXPECT_EQ(param.inp.chg_extrap, "atomic"); EXPECT_EQ(param.inp.out_freq_elec, 50); EXPECT_EQ(param.inp.out_freq_ion, 0); + EXPECT_EQ(param.inp.out_freq_td, 0); EXPECT_EQ(param.inp.out_chg[0], 0); EXPECT_EQ(param.inp.out_chg[1], 3); EXPECT_EQ(param.inp.out_elf[0], 0); EXPECT_EQ(param.inp.out_elf[1], 3); - EXPECT_EQ(param.inp.out_dmk, 0); - EXPECT_EQ(param.inp.out_dmr, 0); + EXPECT_EQ(param.inp.out_dmk[0], 0); + EXPECT_EQ(param.inp.out_dmr[0], 0); EXPECT_EQ(param.inp.deepks_out_labels, 0); EXPECT_EQ(param.inp.deepks_scf, 0); EXPECT_EQ(param.inp.deepks_equiv, 0); EXPECT_EQ(param.inp.deepks_bandgap, 0); EXPECT_EQ(param.inp.deepks_out_unittest, 0); - EXPECT_EQ(param.inp.out_pot, 2); + EXPECT_EQ(param.inp.out_pot[0], 2); EXPECT_EQ(param.inp.out_wfc_pw, 0); EXPECT_EQ(param.inp.out_dos, 0); EXPECT_EQ(param.inp.out_ldos[0], 1); @@ -208,7 +208,6 @@ TEST_F(InputParaTest, ParaRead) EXPECT_FALSE(param.inp.out_mat_xc); EXPECT_FALSE(param.inp.out_mat_xc2); EXPECT_FALSE(param.inp.out_eband_terms); - EXPECT_EQ(param.inp.out_interval, 1); EXPECT_EQ(param.inp.out_app_flag, 0); EXPECT_EQ(param.inp.out_mat_r, 0); EXPECT_FALSE(param.inp.out_wfc_lcao); @@ -297,7 +296,7 @@ TEST_F(InputParaTest, ParaRead) EXPECT_DOUBLE_EQ(param.inp.rpa_ccp_rmesh_times, 10.0); EXPECT_EQ(param.inp.exx_opt_orb_lmax, 0); EXPECT_DOUBLE_EQ(param.inp.exx_opt_orb_ecut, 0.0); - EXPECT_DOUBLE_EQ(param.inp.exx_opt_orb_tolerence, 0.0); + EXPECT_DOUBLE_EQ(param.inp.exx_opt_orb_tolerence, 1E-12); EXPECT_FALSE(param.inp.noncolin); EXPECT_FALSE(param.inp.lspinorb); EXPECT_DOUBLE_EQ(param.inp.soc_lambda, 1.0); @@ -365,6 +364,8 @@ TEST_F(InputParaTest, ParaRead) EXPECT_EQ(param.inp.of_full_pw_dim, 0); EXPECT_FALSE(param.inp.of_read_kernel); EXPECT_EQ(param.inp.of_kernel_file, "WTkernel.txt"); + EXPECT_FALSE(param.inp.of_cd); + EXPECT_DOUBLE_EQ(param.inp.of_mCD_alpha,1.0); EXPECT_DOUBLE_EQ(param.inp.of_xwm_kappa, 1.); EXPECT_DOUBLE_EQ(param.inp.of_xwm_rho_ref, 1.); EXPECT_EQ(param.inp.device, "cpu"); diff --git a/source/source_io/test/read_rhog_test.cpp b/source/source_io/test/read_rhog_test.cpp index 783951d4c0..bb90e3b344 100644 --- a/source/source_io/test/read_rhog_test.cpp +++ b/source/source_io/test/read_rhog_test.cpp @@ -3,7 +3,7 @@ #define private public #include "source_io/module_parameter/parameter.h" #undef private -#include "source_io/rhog_io.h" +#include "source_io/module_chgpot/rhog_io.h" #ifdef __MPI #include "source_basis/module_pw/test/test_tool.h" #include "mpi.h" diff --git a/source/source_io/test/read_wf2rho_pw_test.cpp b/source/source_io/test/read_wf2rho_pw_test.cpp index 53421fbeef..9b1611ae1e 100644 --- a/source/source_io/test/read_wf2rho_pw_test.cpp +++ b/source/source_io/test/read_wf2rho_pw_test.cpp @@ -10,9 +10,9 @@ #include "source_estate/module_charge/symmetry_rho.h" #include "source_hamilt/module_xc/xc_functional.h" #include "source_pw/module_pwdft/parallel_grid.h" -#include "source_io/read_wf2rho_pw.h" -#include "source_io/write_wfc_pw.h" -#include "source_io/filename.h" // mohan add 2025-05-17 +#include "source_io/module_wf/read_wf2rho_pw.h" +#include "source_io/module_wf/write_wfc_pw.h" +#include "source_io/module_output/filename.h" // mohan add 2025-05-17 #include "source_io/module_parameter/parameter.h" #include "source_psi/psi.h" @@ -46,6 +46,10 @@ Magnetism::Magnetism() Magnetism::~Magnetism() { } +SepPot::SepPot(){} +SepPot::~SepPot(){} +Sep_Cell::Sep_Cell() noexcept {} +Sep_Cell::~Sep_Cell() noexcept {} int XC_Functional::func_type = 0; bool XC_Functional::ked_flag = false; @@ -283,16 +287,20 @@ TEST_F(ReadWfcRhoTest, ReadWfcRho) const double ecutwfc = 20; // this is a fake number - ModuleIO::write_wfc_pw( + + const int istep = -1; // -1 means ionic iteration number will not appear in file name + const int iter = -1; // -1 means electronic iteration number will not appear in file name + + ModuleIO::write_wfc_pw(istep, iter, kpar, my_pool, my_rank, nbands, nspin, npol, - GlobalV::RANK_IN_POOL, GlobalV::NPROC_IN_POOL, + GlobalV::RANK_IN_POOL, GlobalV::NPROC_IN_POOL, PARAM.input.out_wfc_pw, ecutwfc, out_dir, *psi, *kv, wfcpw, running_log); - ModuleIO::read_wf2rho_pw(wfcpw, symm, chg, - out_dir, kpar, my_pool, my_rank, + ModuleIO::read_wf2rho_pw(wfcpw, symm, chg, + out_dir, kpar, my_pool, my_rank, GlobalV::NPROC_IN_POOL, GlobalV::RANK_IN_POOL, - nbands, nspin, npol, + nbands, nspin, npol, nkstot, kv->ik2iktot, kv->isk, running_log); // compare the charge density @@ -301,10 +309,10 @@ TEST_F(ReadWfcRhoTest, ReadWfcRho) EXPECT_NEAR(chg.rho[0][ir], chg_ref.rho[0][ir], 1e-8); } - if (GlobalV::NPROC == 1) + if (GlobalV::NPROC == 1) { EXPECT_NEAR(chg.rho[0][0], 8617.076357957576, 1e-8); - } + } else if (GlobalV::NPROC == 4) { const std::vector ref = {8207.849135313403, 35.34776105132742, 8207.849135313403, 35.34776105132742}; diff --git a/source/source_io/test/read_wfc_nao_test.cpp b/source/source_io/test/read_wfc_nao_test.cpp index 703223b20f..d49c7f5834 100644 --- a/source/source_io/test/read_wfc_nao_test.cpp +++ b/source/source_io/test/read_wfc_nao_test.cpp @@ -3,17 +3,9 @@ #define private public #include "source_io/module_parameter/parameter.h" #undef private -#include "source_io/read_wfc_nao.h" +#include "source_io/module_wf/read_wfc_nao.h" #include "source_basis/module_ao/parallel_orbitals.h" -#include "source_io/write_wfc_nao.h" - -//define a mock derived class of class ElecState - -namespace elecstate -{ - const double* ElecState::getRho(int spin) const{return &(this->eferm.ef);}//just for mock -} - +#include "source_io/module_wf/write_wfc_nao.h" namespace ModuleIO { @@ -29,7 +21,8 @@ std::string filename_output( const int out_type, const bool out_app_flag, const bool gamma_only, - const int istep) + const int istep, + const int iter) { return "./support/wfs1_nao.txt"; } @@ -77,19 +70,20 @@ TEST_F(ReadWfcNaoTest,ReadWfcNao) #endif psi::Psi psid; - elecstate::ElecState pelec; - pelec.ekb.create(nks,nbands); - pelec.wg.create(nks,nbands); + ModuleBase::matrix ekb; + ModuleBase::matrix wg; + ekb.create(nks,nbands); + wg.create(nks,nbands); std::vector ik2iktot = {0}; const int nkstot = 1; // Act ModuleIO::read_wfc_nao(PARAM.sys.global_readin_dir, ParaV, psid, - &(pelec), ik2iktot, nkstot, nspin); + ekb, wg, ik2iktot, nkstot, nspin); // Assert - EXPECT_NEAR(pelec.ekb(0,1),0.31482195194888534794941393,1e-5); - EXPECT_NEAR(pelec.wg(0,1),0.0,1e-5); + EXPECT_NEAR(ekb(0,1),0.31482195194888534794941393,1e-5); + EXPECT_NEAR(wg(0,1),0.0,1e-5); if (my_rank == 0) { EXPECT_NEAR(psid(0,0,0),5.3759239842e-01,1e-5); @@ -122,19 +116,20 @@ TEST_F(ReadWfcNaoTest, ReadWfcNaoPart) #endif psi::Psi psid; - elecstate::ElecState pelec; - pelec.ekb.create(nks, nbands); - pelec.wg.create(nks, nbands); + ModuleBase::matrix ekb; + ModuleBase::matrix wg; + ekb.create(nks, nbands); + wg.create(nks, nbands); std::vector ik2iktot = {0}; const int nkstot = 1; // Act ModuleIO::read_wfc_nao(PARAM.sys.global_readin_dir, ParaV, psid, - &(pelec), ik2iktot, nkstot, nspin, skip_band, nstep); + ekb, wg, ik2iktot, nkstot, nspin, skip_band, nstep); // Assert - EXPECT_NEAR(pelec.ekb(0, 1), 7.4141254894954844445464914e-01, 1e-5); + EXPECT_NEAR(ekb(0, 1), 7.4141254894954844445464914e-01, 1e-5); if (my_rank == 0) { EXPECT_NEAR(psid(0, 0, 0), 1.8587183851, 1e-5); diff --git a/source/source_io/test/read_wfc_pw_test.cpp b/source/source_io/test/read_wfc_pw_test.cpp index c008508344..c5602454f9 100644 --- a/source/source_io/test/read_wfc_pw_test.cpp +++ b/source/source_io/test/read_wfc_pw_test.cpp @@ -1,4 +1,4 @@ -#include "source_io/read_wfc_pw.h" +#include "source_io/module_wf/read_wfc_pw.h" #define private public #include "source_io/module_parameter/parameter.h" diff --git a/source/source_io/test/single_R_io_test.cpp b/source/source_io/test/single_R_io_test.cpp index 3b378f8801..735ed7f60c 100644 --- a/source/source_io/test/single_R_io_test.cpp +++ b/source/source_io/test/single_R_io_test.cpp @@ -3,7 +3,7 @@ #define private public #include "source_io/module_parameter/parameter.h" #undef private -#include "source_io/single_R_io.h" +#include "source_io/module_hs/single_R_io.h" #include "source_base/global_variable.h" #include "source_basis/module_ao/parallel_orbitals.h" /************************************************ diff --git a/source/source_io/test/sparse_matrix_test.cpp b/source/source_io/test/sparse_matrix_test.cpp index 4ebecd6d12..20c71f5795 100644 --- a/source/source_io/test/sparse_matrix_test.cpp +++ b/source/source_io/test/sparse_matrix_test.cpp @@ -1,4 +1,4 @@ -#include "source_io/sparse_matrix.h" +#include "source_io/module_output/sparse_matrix.h" #include @@ -118,8 +118,8 @@ TYPED_TEST(SparseMatrixTest, CSR) std::string output = testing::internal::GetCapturedStdout(); if (std::is_same::value) { - EXPECT_THAT(output, - testing::HasSubstr("1.00e+00 2.00e+00 3.00e+00 4.00e+00 5.00e+00 6.00e+00 7.00e+00 8.00e+00")); + EXPECT_THAT(output, testing::HasSubstr("1.00e+00 2.00e+00 3.00e+00 4.00e+00 5.00e+00 6.00e+00")); + EXPECT_THAT(output, testing::HasSubstr("7.00e+00 8.00e+00")); EXPECT_THAT(output, testing::HasSubstr("0 1 1 3 2 3 4 5")); EXPECT_THAT(output, testing::HasSubstr("0 2 4 7 8")); @@ -142,10 +142,8 @@ TYPED_TEST(SparseMatrixTest, CSR) } else if (std::is_same>::value) { - EXPECT_THAT( - output, - testing::HasSubstr("(1.00e+00,0.00e+00) (2.00e+00,0.00e+00) (3.00e+00,0.00e+00) (4.00e+00,0.00e+00) " - "(5.00e+00,0.00e+00) (6.00e+00,0.00e+00) (7.00e+00,0.00e+00) (8.00e+00,0.00e+00)")); + EXPECT_THAT(output, testing::HasSubstr("(1.00e+00,0.00e+00) (2.00e+00,0.00e+00) (3.00e+00,0.00e+00) (4.00e+00,0.00e+00) (5.00e+00,0.00e+00) (6.00e+00,0.00e+00)")); + EXPECT_THAT(output, testing::HasSubstr("(7.00e+00,0.00e+00) (8.00e+00,0.00e+00)")); EXPECT_THAT(output, testing::HasSubstr("0 1 1 3 2 3 4 5")); EXPECT_THAT(output, testing::HasSubstr("0 2 4 7 8")); diff --git a/source/source_io/test/support/INPUT b/source/source_io/test/support/INPUT index 5e70e8ef95..46840bd9da 100644 --- a/source/source_io/test/support/INPUT +++ b/source/source_io/test/support/INPUT @@ -30,15 +30,14 @@ lspinorb 0 #consider the spin-orbit interaction kpar 1 #devide all processors into kpar groups and k points will be distributed among each group bndpar 1 #devide all processors into bndpar groups and bands will be distributed among each group out_freq_elec 0 #the frequency ( >= 0) of electronic iter to output charge density and wavefunction. 0: output only when converged +out_freq_ion 0 #the frequency ( >= 0 ) of ionic step to output charge density and wavefunction. 0: output only when ion steps are finished dft_plus_dmft 0 #true:DFT+DMFT; false: standard DFT calcullation(default) rpa 0 #true:generate output files used in rpa calculation; false:(default) mem_saver 0 #Only for nscf calculations. if set to 1, then a memory saving technique will be used for many k point calculations. diago_proc 4 #the number of procs used to do diagonalization nbspline -1 #the order of B-spline basis -wannier_card none #input card for wannier functions -soc_lambda 1 #The fraction of averaged SOC pseudopotential is given by (1-soc_lambda) +soc_lambda 1 #The fraction of SOC based on scalar relativity (SR) of the pseudopotential cal_force 0 #if calculate the force at the end of the electronic iteration -out_freq_ion 0 #the frequency ( >= 0 ) of ionic step to output charge density and wavefunction. 0: output only when ion steps are finished device cpu #the computing device for ABACUS #Parameters (2.PW) @@ -137,7 +136,6 @@ lcao_dr 0.01 #delta r for 1D integration in LCAO lcao_rmax 30 #max R for 1D two-center integration table out_mat_hs 0 #output H and S matrix out_mat_hs2 0 #output H(R) and S(R) matrix -out_interval 1 #interval for printing H(R) and S(R) matrix during MD out_app_flag 0 #whether output r(R), H(R), S(R), T(R), and dH(R) matrices in an append manner during MD out_element_info 0 #output (projected) wavefunction of each element out_mat_r 0 #output r(R) matrix @@ -292,7 +290,7 @@ exx_v_grad_r_threshold 0 # exx_ccp_rmesh_times default # exx_opt_orb_lmax 0 # exx_opt_orb_ecut 0 # -exx_opt_orb_tolerence 0 # +exx_opt_orb_tolerence 1E-12 # #Parameters (16.tddft) td_vext 0 #add extern potential or not @@ -389,3 +387,7 @@ nsc_min 4 #Minimum number of spin-constrained iteration sc_scf_nmin 4 #Minimum number of outer scf loop before initializing lambda loop alpha_trial 0.02 #Initial trial step size for lambda in eV/uB^2 sccut 4 #Maximal step size for lambda in eV/uB + +#Parameters (23. Time-dependent orbital-free DFT) +of_cd 0 #0: no CD potential; 1: add CD potential +of_mCD_alpha 1.0 # parameter of modified CD potential \ No newline at end of file diff --git a/source/source_io/test/support/SR.csr b/source/source_io/test/support/SR.csr index e86b151277..d6a6e22cdd 100644 --- a/source/source_io/test/support/SR.csr +++ b/source/source_io/test/support/SR.csr @@ -1,11 +1,41 @@ -STEP: 0 -Matrix Dimension of S(R): 4 -Matrix number of S(R): 2 -0 1 1 2 + --- Ionic Step 1 --- + # print overlap matrix in real space S(R) + 1 # number of spin directions + 1 # spin index + 4 # number of localized basis + 2 # number of Bravais lattice vector R + + user_defined_lattice + 10 + 0 0.5 0.5 + 0.5 0 0.5 + 0.5 0.5 0 + Si + 1 + Direct + 0 0.020 0 + + #----------------------------------------------------------------------# + # CSR Format # + # The outer loop corresponds to the number of Bravais lattice vectors. # + # The first line contains the index of the Bravais lattice vector # + # (Rx, Ry, Rz), followed by the number of non-zero elements. # + # The subsequent lines consist of three blocks of data, which are # + # values, column indices, row pointers. # + #----------------------------------------------------------------------# + + 0 1 1 2 + # CSR values 4.00e+00 7.00e+00 + # CSR column indices 3 2 + # CSR row pointers 0 1 2 2 2 -0 0 0 3 + + 0 0 0 3 + # CSR values 5.00e+00 6.00e+00 1.00e+01 + # CSR column indices 2 3 3 + # CSR row pointers 0 0 0 2 3 diff --git a/source/source_io/test/support/dm_nao.txt b/source/source_io/test/support/dm_nao.txt new file mode 100644 index 0000000000..811fa19b2f --- /dev/null +++ b/source/source_io/test/support/dm_nao.txt @@ -0,0 +1,119 @@ + none + 5.39761 + -0.5 0 0.5 + 0 0.5 0.5 + -0.5 0.5 0 + Si + 2 + Direct + 0 0 0 + 0.75 0.75 0.75 + + 1 (nspin) + 0.570336288802337 (fermi energy) + 26 (number of basis) + + 3.904e-01 1.114e-02 5.918e-14 -1.032e-14 -5.650e-14 -2.278e-15 1.049e-14 7.875e-15 + -1.022e-15 -9.243e-15 -4.239e-15 -4.177e-16 1.138e-14 3.904e-01 1.114e-02 -5.087e-14 + 1.542e-14 6.071e-14 7.203e-15 -6.739e-15 -1.848e-15 1.376e-15 -1.259e-14 -5.116e-15 + 4.104e-16 9.615e-15 + 1.114e-02 3.177e-04 -1.789e-14 7.148e-15 1.530e-14 1.672e-15 -3.610e-16 -1.275e-15 + -2.914e-17 2.955e-15 1.296e-15 -1.192e-17 -3.403e-15 1.114e-02 3.177e-04 1.813e-14 + -7.002e-15 -1.518e-14 -1.532e-15 4.680e-16 1.447e-15 3.926e-17 2.860e-15 1.271e-15 + 1.171e-17 -3.453e-15 + 5.918e-14 -1.789e-14 9.507e-01 2.156e-14 7.801e-15 -8.434e-02 -7.786e-15 9.889e-16 + 4.982e-16 2.026e-16 1.354e-15 -3.683e-16 1.810e-01 -4.515e-14 2.281e-14 -9.507e-01 + 4.041e-15 1.074e-14 8.434e-02 1.213e-14 3.510e-15 -3.700e-17 -1.211e-17 6.764e-15 + -1.410e-16 1.810e-01 + -1.032e-14 7.148e-15 2.156e-14 9.507e-01 -1.857e-14 -1.168e-15 -8.434e-02 -6.126e-15 + -3.720e-16 -3.894e-15 1.810e-01 2.484e-16 -3.178e-15 3.136e-14 -4.989e-15 2.147e-14 + -9.507e-01 2.334e-14 9.054e-15 8.434e-02 -4.928e-16 1.386e-15 -2.383e-16 1.810e-01 + -2.432e-15 5.280e-15 + -5.650e-14 1.530e-14 7.801e-15 -1.857e-14 9.507e-01 -1.018e-15 -1.144e-14 -8.434e-02 + 2.907e-15 1.810e-01 -1.369e-15 2.925e-15 1.715e-15 5.904e-14 -1.585e-14 -2.623e-15 + 2.790e-15 -9.507e-01 5.354e-15 3.626e-15 8.434e-02 -2.228e-15 1.810e-01 3.122e-15 + -3.904e-15 2.578e-15 + -2.278e-15 1.672e-15 -8.434e-02 -1.168e-15 -1.018e-15 7.481e-03 6.248e-16 -5.890e-17 + -4.419e-17 -7.980e-17 2.189e-17 3.267e-17 -1.606e-02 6.977e-15 -1.938e-15 8.434e-02 + -1.101e-15 -6.264e-16 -7.481e-03 -1.010e-15 -3.403e-16 3.282e-18 -6.083e-17 -4.581e-16 + 1.251e-17 -1.606e-02 + 1.049e-14 -3.610e-16 -7.786e-15 -8.434e-02 -1.144e-14 6.248e-16 7.481e-03 1.705e-15 + 3.300e-17 -2.147e-15 -1.606e-02 -2.203e-17 -8.368e-16 6.793e-15 7.157e-16 3.970e-15 + 8.434e-02 1.102e-14 -1.324e-15 -7.481e-03 -1.118e-15 -1.230e-16 -2.472e-15 -1.606e-02 + 2.157e-16 -1.587e-15 + 7.875e-15 -1.275e-15 9.889e-16 -6.126e-15 -8.434e-02 -5.890e-17 1.705e-15 7.481e-03 + -2.579e-16 -1.606e-02 -1.359e-15 -2.595e-16 1.679e-16 -2.374e-15 1.487e-15 -1.448e-15 + 7.528e-15 8.434e-02 -3.258e-16 -1.011e-15 -7.481e-03 1.976e-16 -1.606e-02 -1.757e-15 + 3.463e-16 9.162e-17 + -1.022e-15 -2.914e-17 4.982e-16 -3.720e-16 2.907e-15 -4.419e-17 3.300e-17 -2.579e-16 + 1.197e-29 5.534e-16 -7.083e-17 9.747e-30 9.484e-17 -1.022e-15 -2.914e-17 -4.982e-16 + 3.720e-16 -2.907e-15 4.419e-17 -3.300e-17 2.579e-16 -1.098e-29 5.534e-16 -7.083e-17 + -1.213e-29 9.484e-17 + -9.243e-15 2.955e-15 2.026e-16 -3.894e-15 1.810e-01 -7.980e-17 -2.147e-15 -1.606e-02 + 5.534e-16 3.445e-02 -3.283e-16 5.569e-16 8.263e-17 1.275e-14 -2.974e-15 7.852e-16 + 8.854e-16 -1.810e-01 9.054e-16 6.580e-16 1.606e-02 -4.242e-16 3.445e-02 5.254e-16 + -7.433e-16 2.460e-16 + -4.239e-15 1.296e-15 1.354e-15 1.810e-01 -1.369e-15 2.189e-17 -1.606e-02 -1.359e-15 + -7.083e-17 -3.283e-16 3.445e-02 4.728e-17 -1.129e-15 3.696e-15 -1.015e-15 6.837e-15 + -1.810e-01 2.274e-15 1.479e-15 1.606e-02 9.938e-17 2.639e-16 3.691e-16 3.445e-02 + -4.630e-16 4.817e-16 + -4.177e-16 -1.192e-17 -3.683e-16 2.484e-16 2.925e-15 3.267e-17 -2.203e-17 -2.595e-16 + 9.747e-30 5.569e-16 4.728e-17 9.656e-30 -7.012e-17 -4.177e-16 -1.192e-17 3.683e-16 + -2.484e-16 -2.925e-15 -3.267e-17 2.203e-17 2.595e-16 -7.952e-30 5.569e-16 4.728e-17 + -1.303e-29 -7.012e-17 + 1.138e-14 -3.403e-15 1.810e-01 -3.178e-15 1.715e-15 -1.606e-02 -8.368e-16 1.679e-16 + 9.484e-17 8.263e-17 -1.129e-15 -7.012e-17 3.445e-02 -8.483e-15 4.345e-15 -1.810e-01 + 8.052e-15 1.812e-15 1.606e-02 1.663e-15 6.889e-16 -7.043e-18 4.155e-17 -9.801e-17 + -2.685e-17 3.445e-02 + 3.904e-01 1.114e-02 -4.515e-14 3.136e-14 5.904e-14 6.977e-15 6.793e-15 -2.374e-15 + -1.022e-15 1.275e-14 3.696e-15 -4.177e-16 -8.483e-15 3.904e-01 1.114e-02 5.346e-14 + -2.626e-14 -5.482e-14 -2.052e-15 -3.042e-15 8.401e-15 1.376e-15 9.408e-15 2.819e-15 + 4.104e-16 -1.025e-14 + 1.114e-02 3.177e-04 2.281e-14 -4.989e-15 -1.585e-14 -1.938e-15 7.157e-16 1.487e-15 + -2.914e-17 -2.974e-15 -1.015e-15 -1.192e-17 4.345e-15 1.114e-02 3.177e-04 -2.257e-14 + 5.134e-15 1.597e-14 2.079e-15 -6.087e-16 -1.316e-15 3.926e-17 -3.069e-15 -1.040e-15 + 1.171e-17 4.295e-15 + -5.087e-14 1.813e-14 -9.507e-01 2.147e-14 -2.623e-15 8.434e-02 3.970e-15 -1.448e-15 + -4.982e-16 7.852e-16 6.837e-15 3.683e-16 -1.810e-01 5.346e-14 -2.257e-14 9.507e-01 + -4.707e-14 -1.592e-14 -8.434e-02 -8.313e-15 -3.052e-15 3.700e-17 9.999e-16 1.420e-15 + 1.410e-16 -1.810e-01 + 1.542e-14 -7.002e-15 4.041e-15 -9.507e-01 2.790e-15 -1.101e-15 8.434e-02 7.528e-15 + 3.720e-16 8.854e-16 -1.810e-01 -2.484e-16 8.052e-15 -2.626e-14 5.134e-15 -4.707e-14 + 9.507e-01 -7.559e-15 -6.785e-15 -8.434e-02 -9.083e-16 -1.386e-15 -2.770e-15 -1.810e-01 + 2.432e-15 -4.065e-16 + 6.071e-14 -1.518e-14 1.074e-14 2.334e-14 -9.507e-01 -6.264e-16 1.102e-14 8.434e-02 + -2.907e-15 -1.810e-01 2.274e-15 -2.925e-15 1.812e-15 -5.482e-14 1.597e-14 -1.592e-14 + -7.559e-15 9.507e-01 -3.710e-15 -3.203e-15 -8.434e-02 2.228e-15 -1.810e-01 -2.218e-15 + 3.904e-15 9.526e-16 + 7.203e-15 -1.532e-15 8.434e-02 9.054e-15 5.354e-15 -7.481e-03 -1.324e-15 -3.258e-16 + 4.419e-17 9.054e-16 1.479e-15 -3.267e-17 1.606e-02 -2.052e-15 2.079e-15 -8.434e-02 + -6.785e-15 -3.710e-15 7.481e-03 1.710e-15 7.249e-16 -3.282e-18 8.864e-16 1.960e-15 + -1.251e-17 1.606e-02 + -6.739e-15 4.680e-16 1.213e-14 8.434e-02 3.626e-15 -1.010e-15 -7.481e-03 -1.011e-15 + -3.300e-17 6.580e-16 1.606e-02 2.203e-17 1.663e-15 -3.042e-15 -6.087e-16 -8.313e-15 + -8.434e-02 -3.203e-15 1.710e-15 7.481e-03 4.239e-16 1.230e-16 9.834e-16 1.606e-02 + -2.157e-16 2.413e-15 + -1.848e-15 1.447e-15 3.510e-15 -4.928e-16 8.434e-02 -3.403e-16 -1.118e-15 -7.481e-03 + 2.579e-16 1.606e-02 9.938e-17 2.595e-16 6.889e-16 8.401e-15 -1.316e-15 -3.052e-15 + -9.083e-16 -8.434e-02 7.249e-16 4.239e-16 7.481e-03 -1.976e-16 1.606e-02 4.962e-16 + -3.463e-16 7.651e-16 + 1.376e-15 3.926e-17 -3.700e-17 1.386e-15 -2.228e-15 3.282e-18 -1.230e-16 1.976e-16 + -1.098e-29 -4.242e-16 2.639e-16 -7.952e-30 -7.043e-18 1.376e-15 3.926e-17 3.700e-17 + -1.386e-15 2.228e-15 -3.282e-18 1.230e-16 -1.976e-16 1.210e-29 -4.242e-16 2.639e-16 + 7.056e-30 -7.043e-18 + -1.259e-14 2.860e-15 -1.211e-17 -2.383e-16 1.810e-01 -6.083e-17 -2.472e-15 -1.606e-02 + 5.534e-16 3.445e-02 3.691e-16 5.569e-16 4.155e-17 9.408e-15 -3.069e-15 9.999e-16 + -2.770e-15 -1.810e-01 8.864e-16 9.834e-16 1.606e-02 -4.242e-16 3.445e-02 1.223e-15 + -7.433e-16 2.049e-16 + -5.116e-15 1.271e-15 6.764e-15 1.810e-01 3.122e-15 -4.581e-16 -1.606e-02 -1.757e-15 + -7.083e-17 5.254e-16 3.445e-02 4.728e-17 -9.801e-17 2.819e-15 -1.040e-15 1.420e-15 + -1.810e-01 -2.218e-15 1.960e-15 1.606e-02 4.962e-16 2.639e-16 1.223e-15 3.445e-02 + -4.630e-16 1.512e-15 + 4.104e-16 1.171e-17 -1.410e-16 -2.432e-15 -3.904e-15 1.251e-17 2.157e-16 3.463e-16 + -1.213e-29 -7.433e-16 -4.630e-16 -1.303e-29 -2.685e-17 4.104e-16 1.171e-17 1.410e-16 + 2.432e-15 3.904e-15 -1.251e-17 -2.157e-16 -3.463e-16 7.056e-30 -7.433e-16 -4.630e-16 + 2.271e-29 -2.685e-17 + 9.615e-15 -3.453e-15 1.810e-01 5.280e-15 2.578e-15 -1.606e-02 -1.587e-15 9.162e-17 + 9.484e-17 2.460e-16 4.817e-16 -7.012e-17 3.445e-02 -1.025e-14 4.295e-15 -1.810e-01 + -4.065e-16 9.526e-16 1.606e-02 2.413e-15 7.651e-16 -7.043e-18 2.049e-16 1.512e-15 + -2.685e-17 3.445e-02 diff --git a/source/source_io/test/support/dmk1_nao.txt b/source/source_io/test/support/dmk1_nao.txt new file mode 100644 index 0000000000..ff611f7c7e --- /dev/null +++ b/source/source_io/test/support/dmk1_nao.txt @@ -0,0 +1,119 @@ + none + 1 + 2.74242 2.74242 0 + 2.74242 0 2.74242 + 0 2.74242 2.74242 + Si + 2 + Direct + 0 0 0 + 0.25 0.25 0.25 + + 1 (nspin) + 0.47370 (fermi energy) + 26 (number of basis) + + (1.411e-01,0.000e+00) (-4.479e-03,3.208e-04) (-1.892e-02,3.039e-02) (-1.892e-02,3.039e-02) (1.892e-02,-3.039e-02) (-2.049e-03,-5.032e-03) (-2.049e-03,-5.032e-03) (2.049e-03,5.032e-03) + (-6.505e-17,-4.647e-18) (2.931e-03,6.477e-03) (-2.931e-03,-6.477e-03) (-2.100e-16,6.607e-17) (-2.931e-03,-6.477e-03) (-1.319e-02,3.501e-02) (9.561e-03,-5.528e-03) (-3.910e-02,-2.210e-02) + (-3.910e-02,-2.210e-02) (3.910e-02,2.210e-02) (8.654e-04,5.306e-03) (8.654e-04,5.306e-03) (-8.654e-04,-5.306e-03) (-4.228e-18,-5.908e-17) (2.387e-03,7.959e-03) (-2.387e-03,-7.959e-03) + (2.414e-17,-1.120e-16) (-2.387e-03,-7.959e-03) + (-4.479e-03,-3.208e-04) (9.195e-04,0.000e+00) (1.916e-03,-3.586e-03) (1.916e-03,-3.586e-03) (-1.916e-03,3.586e-03) (2.135e-04,4.567e-04) (2.135e-04,4.567e-04) (-2.135e-04,-4.567e-04) + (8.745e-18,3.795e-18) (-2.300e-04,-7.056e-04) (2.300e-04,7.056e-04) (4.757e-17,-2.079e-17) (2.300e-04,7.056e-04) (9.561e-03,-5.528e-03) (-4.169e-04,3.347e-04) (3.255e-03,1.374e-03) + (3.255e-03,1.374e-03) (-3.255e-03,-1.374e-03) (-1.056e-04,-4.964e-04) (-1.056e-04,-4.964e-04) (1.056e-04,4.964e-04) (-3.458e-18,9.195e-18) (-1.504e-04,-6.531e-04) (1.504e-04,6.531e-04) + (9.041e-18,4.286e-17) (1.504e-04,6.531e-04) + (-1.892e-02,-3.039e-02) (1.916e-03,3.586e-03) (9.698e-02,-4.337e-19) (-1.816e-02,0.000e+00) (1.816e-02,-7.954e-16) (-6.302e-03,-3.018e-03) (8.177e-04,4.709e-03) (-8.177e-04,-4.709e-03) + (2.109e-03,-1.254e-03) (-3.513e-03,-6.260e-03) (3.513e-03,6.260e-03) (1.259e-16,-4.158e-17) (-1.438e-02,-4.085e-03) (3.910e-02,2.210e-02) (-3.255e-03,-1.374e-03) (-6.310e-02,-2.161e-02) + (3.424e-02,3.990e-02) (-3.424e-02,-3.990e-02) (8.765e-03,-3.550e-03) (-1.382e-03,-8.205e-04) (1.382e-03,8.205e-04) (1.113e-03,2.186e-03) (-4.284e-03,-2.804e-03) (4.284e-03,2.804e-03) + (-4.082e-17,3.216e-17) (-1.637e-02,1.991e-03) + (-1.892e-02,-3.039e-02) (1.916e-03,3.586e-03) (-1.816e-02,3.469e-18) (9.698e-02,0.000e+00) (1.816e-02,-8.500e-16) (8.177e-04,4.709e-03) (-6.302e-03,-3.018e-03) (-8.177e-04,-4.709e-03) + (-1.055e-03,6.268e-04) (-3.513e-03,-6.260e-03) (-1.438e-02,-4.085e-03) (1.826e-03,-1.086e-03) (3.513e-03,6.260e-03) (3.910e-02,2.210e-02) (-3.255e-03,-1.374e-03) (3.424e-02,3.990e-02) + (-6.310e-02,-2.161e-02) (-3.424e-02,-3.990e-02) (-1.382e-03,-8.205e-04) (8.765e-03,-3.550e-03) (1.382e-03,8.205e-04) (-5.566e-04,-1.093e-03) (-4.284e-03,-2.804e-03) (-1.637e-02,1.991e-03) + (9.641e-04,1.893e-03) (4.284e-03,2.804e-03) + (1.892e-02,3.039e-02) (-1.916e-03,-3.586e-03) (1.816e-02,7.954e-16) (1.816e-02,8.431e-16) (9.698e-02,-8.674e-19) (-8.177e-04,-4.709e-03) (-8.177e-04,-4.709e-03) (-6.302e-03,-3.018e-03) + (1.055e-03,-6.268e-04) (-1.438e-02,-4.085e-03) (-3.513e-03,-6.260e-03) (1.826e-03,-1.086e-03) (-3.513e-03,-6.260e-03) (-3.910e-02,-2.210e-02) (3.255e-03,1.374e-03) (-3.424e-02,-3.990e-02) + (-3.424e-02,-3.990e-02) (-6.310e-02,-2.161e-02) (1.382e-03,8.205e-04) (1.382e-03,8.205e-04) (8.765e-03,-3.550e-03) (5.566e-04,1.093e-03) (-1.637e-02,1.991e-03) (-4.284e-03,-2.804e-03) + (9.641e-04,1.893e-03) (-4.284e-03,-2.804e-03) + (-2.049e-03,5.032e-03) (2.135e-04,-4.567e-04) (-6.302e-03,3.018e-03) (8.177e-04,-4.709e-03) (-8.177e-04,4.709e-03) (9.914e-04,-5.421e-20) (3.256e-05,-4.476e-17) (-3.256e-05,-3.980e-17) + (-4.627e-05,2.191e-04) (1.097e-04,-2.210e-04) (-1.097e-04,2.210e-04) (3.974e-18,-1.249e-17) (1.691e-03,-3.401e-04) (-8.654e-04,-5.306e-03) (1.056e-04,4.964e-04) (8.765e-03,-3.550e-03) + (-1.382e-03,-8.205e-04) (1.382e-03,8.205e-04) (-6.392e-04,4.871e-04) (-1.950e-04,-3.626e-04) (1.950e-04,3.626e-04) (-2.156e-04,-6.047e-05) (-4.245e-05,-5.221e-04) (4.245e-05,5.221e-04) + (1.307e-17,4.747e-18) (1.374e-03,-8.137e-04) + (-2.049e-03,5.032e-03) (2.135e-04,-4.567e-04) (8.177e-04,-4.709e-03) (-6.302e-03,3.018e-03) (-8.177e-04,4.709e-03) (3.256e-05,4.476e-17) (9.914e-04,0.000e+00) (-3.256e-05,-2.742e-17) + (2.313e-05,-1.095e-04) (1.097e-04,-2.210e-04) (1.691e-03,-3.401e-04) (-4.007e-05,1.897e-04) (-1.097e-04,2.210e-04) (-8.654e-04,-5.306e-03) (1.056e-04,4.964e-04) (-1.382e-03,-8.205e-04) + (8.765e-03,-3.550e-03) (1.382e-03,8.205e-04) (-1.950e-04,-3.626e-04) (-6.392e-04,4.871e-04) (1.950e-04,3.626e-04) (1.078e-04,3.023e-05) (-4.245e-05,-5.221e-04) (1.374e-03,-8.137e-04) + (-1.867e-04,-5.237e-05) (4.245e-05,5.221e-04) + (2.049e-03,-5.032e-03) (-2.135e-04,4.567e-04) (-8.177e-04,4.709e-03) (-8.177e-04,4.709e-03) (-6.302e-03,3.018e-03) (-3.256e-05,3.976e-17) (-3.256e-05,2.742e-17) (9.914e-04,-5.421e-20) + (-2.313e-05,1.095e-04) (1.691e-03,-3.401e-04) (1.097e-04,-2.210e-04) (-4.007e-05,1.897e-04) (1.097e-04,-2.210e-04) (8.654e-04,5.306e-03) (-1.056e-04,-4.964e-04) (1.382e-03,8.205e-04) + (1.382e-03,8.205e-04) (8.765e-03,-3.550e-03) (1.950e-04,3.626e-04) (1.950e-04,3.626e-04) (-6.392e-04,4.871e-04) (-1.078e-04,-3.023e-05) (1.374e-03,-8.137e-04) (-4.245e-05,-5.221e-04) + (-1.867e-04,-5.237e-05) (-4.245e-05,-5.221e-04) + (-6.505e-17,4.647e-18) (8.745e-18,-3.795e-18) (2.109e-03,1.254e-03) (-1.055e-03,-6.268e-04) (1.055e-03,6.268e-04) (-4.627e-05,-2.191e-04) (2.313e-05,1.095e-04) (-2.313e-05,-1.095e-04) + (7.842e-05,0.000e+00) (-1.075e-04,-1.921e-04) (1.075e-04,1.921e-04) (2.092e-19,-9.571e-20) (-2.151e-04,-3.843e-04) (4.814e-17,-3.873e-17) (-1.086e-17,6.162e-18) (-1.113e-03,-2.186e-03) + (5.566e-04,1.093e-03) (-5.566e-04,-1.093e-03) (2.156e-04,6.047e-05) (-1.078e-04,-3.023e-05) (1.078e-04,3.023e-05) (-5.119e-06,7.825e-05) (-1.847e-04,-1.199e-04) (1.847e-04,1.199e-04) + (-1.577e-18,-2.256e-18) (-3.694e-04,-2.397e-04) + (2.931e-03,-6.477e-03) (-2.300e-04,7.056e-04) (-3.513e-03,6.260e-03) (-3.513e-03,6.260e-03) (-1.438e-02,4.085e-03) (1.097e-04,2.210e-04) (1.097e-04,2.210e-04) (1.691e-03,3.401e-04) + (-1.075e-04,1.921e-04) (3.174e-03,0.000e+00) (5.354e-04,-9.107e-18) (-1.863e-04,3.328e-04) (5.354e-04,2.602e-18) (2.387e-03,7.959e-03) (-1.504e-04,-6.531e-04) (4.284e-03,2.804e-03) + (4.284e-03,2.804e-03) (1.637e-02,-1.991e-03) (4.245e-05,5.221e-04) (4.245e-05,5.221e-04) (-1.374e-03,8.137e-04) (-1.847e-04,-1.199e-04) (2.872e-03,-1.079e-03) (4.101e-04,-6.505e-04) + (-3.199e-04,-2.076e-04) (4.101e-04,-6.505e-04) + (-2.931e-03,6.477e-03) (2.300e-04,-7.056e-04) (3.513e-03,-6.260e-03) (-1.438e-02,4.085e-03) (-3.513e-03,6.260e-03) (-1.097e-04,-2.210e-04) (1.691e-03,3.401e-04) (1.097e-04,2.210e-04) + (1.075e-04,-1.921e-04) (5.354e-04,9.053e-18) (3.174e-03,0.000e+00) (-1.863e-04,3.328e-04) (-5.354e-04,-4.120e-18) (-2.387e-03,-7.959e-03) (1.504e-04,6.531e-04) (-4.284e-03,-2.804e-03) + (1.637e-02,-1.991e-03) (4.284e-03,2.804e-03) (-4.245e-05,-5.221e-04) (-1.374e-03,8.137e-04) (4.245e-05,5.221e-04) (1.847e-04,1.199e-04) (4.101e-04,-6.505e-04) (2.872e-03,-1.079e-03) + (-3.199e-04,-2.076e-04) (-4.101e-04,6.505e-04) + (-2.100e-16,-6.607e-17) (4.757e-17,2.079e-17) (1.259e-16,4.158e-17) (1.826e-03,1.086e-03) (1.826e-03,1.086e-03) (3.968e-18,1.248e-17) (-4.007e-05,-1.897e-04) (-4.007e-05,-1.897e-04) + (2.126e-19,9.656e-20) (-1.863e-04,-3.328e-04) (-1.863e-04,-3.328e-04) (7.842e-05,0.000e+00) (-8.243e-18,-8.362e-18) (1.701e-16,-3.250e-17) (-5.318e-17,-5.205e-20) (5.719e-18,-5.061e-17) + (-9.641e-04,-1.893e-03) (-9.641e-04,-1.893e-03) (1.792e-17,-6.380e-18) (1.867e-04,5.237e-05) (1.867e-04,5.237e-05) (3.528e-18,1.890e-18) (-3.199e-04,-2.076e-04) (-3.199e-04,-2.076e-04) + (-5.119e-06,7.825e-05) (-1.148e-17,1.884e-18) + (-2.931e-03,6.477e-03) (2.300e-04,-7.056e-04) (-1.438e-02,4.085e-03) (3.513e-03,-6.260e-03) (-3.513e-03,6.260e-03) (1.691e-03,3.401e-04) (-1.097e-04,-2.210e-04) (1.097e-04,2.210e-04) + (-2.151e-04,3.843e-04) (5.354e-04,-2.602e-18) (-5.354e-04,4.228e-18) (-8.243e-18,8.328e-18) (3.174e-03,2.168e-19) (-2.387e-03,-7.959e-03) (1.504e-04,6.531e-04) (1.637e-02,-1.991e-03) + (-4.284e-03,-2.804e-03) (4.284e-03,2.804e-03) (-1.374e-03,8.137e-04) (-4.245e-05,-5.221e-04) (4.245e-05,5.221e-04) (-3.694e-04,-2.397e-04) (4.101e-04,-6.505e-04) (-4.101e-04,6.505e-04) + (-2.439e-19,-5.153e-18) (2.872e-03,-1.079e-03) + (-1.319e-02,-3.501e-02) (9.561e-03,5.528e-03) (3.910e-02,-2.210e-02) (3.910e-02,-2.210e-02) (-3.910e-02,2.210e-02) (-8.654e-04,5.306e-03) (-8.654e-04,5.306e-03) (8.654e-04,-5.306e-03) + (4.814e-17,3.873e-17) (2.387e-03,-7.959e-03) (-2.387e-03,7.959e-03) (1.701e-16,3.250e-17) (-2.387e-03,7.959e-03) (1.411e-01,0.000e+00) (-4.479e-03,-3.208e-04) (1.892e-02,3.039e-02) + (1.892e-02,3.039e-02) (-1.892e-02,-3.039e-02) (2.049e-03,-5.032e-03) (2.049e-03,-5.032e-03) (-2.049e-03,5.032e-03) (-3.863e-17,6.101e-17) (2.931e-03,-6.477e-03) (-2.931e-03,6.477e-03) + (-8.559e-17,7.268e-17) (-2.931e-03,6.477e-03) + (9.561e-03,5.528e-03) (-4.169e-04,-3.347e-04) (-3.255e-03,1.374e-03) (-3.255e-03,1.374e-03) (3.255e-03,-1.374e-03) (1.056e-04,-4.964e-04) (1.056e-04,-4.964e-04) (-1.056e-04,4.964e-04) + (-1.086e-17,-6.162e-18) (-1.504e-04,6.531e-04) (1.504e-04,-6.531e-04) (-5.318e-17,5.205e-20) (1.504e-04,-6.531e-04) (-4.479e-03,3.208e-04) (9.195e-04,0.000e+00) (-1.916e-03,-3.586e-03) + (-1.916e-03,-3.586e-03) (1.916e-03,3.586e-03) (-2.135e-04,4.567e-04) (-2.135e-04,4.567e-04) (2.135e-04,-4.567e-04) (5.893e-18,-1.079e-17) (-2.300e-04,7.056e-04) (2.300e-04,-7.056e-04) + (4.840e-18,-4.135e-17) (2.300e-04,-7.056e-04) + (-3.910e-02,2.210e-02) (3.255e-03,-1.374e-03) (-6.310e-02,2.161e-02) (3.424e-02,-3.990e-02) (-3.424e-02,3.990e-02) (8.765e-03,3.550e-03) (-1.382e-03,8.205e-04) (1.382e-03,-8.205e-04) + (-1.113e-03,2.186e-03) (4.284e-03,-2.804e-03) (-4.284e-03,2.804e-03) (5.719e-18,5.042e-17) (1.637e-02,1.991e-03) (1.892e-02,-3.039e-02) (-1.916e-03,3.586e-03) (9.698e-02,0.000e+00) + (-1.816e-02,-2.741e-16) (1.816e-02,-1.110e-15) (-6.302e-03,3.018e-03) (8.177e-04,-4.709e-03) (-8.177e-04,4.709e-03) (-2.109e-03,-1.254e-03) (3.513e-03,-6.260e-03) (-3.513e-03,6.260e-03) + (-1.428e-17,-2.683e-17) (1.438e-02,-4.085e-03) + (-3.910e-02,2.210e-02) (3.255e-03,-1.374e-03) (3.424e-02,-3.990e-02) (-6.310e-02,2.161e-02) (-3.424e-02,3.990e-02) (-1.382e-03,8.205e-04) (8.765e-03,3.550e-03) (1.382e-03,-8.205e-04) + (5.566e-04,-1.093e-03) (4.284e-03,-2.804e-03) (1.637e-02,1.991e-03) (-9.641e-04,1.893e-03) (-4.284e-03,2.804e-03) (1.892e-02,-3.039e-02) (-1.916e-03,3.586e-03) (-1.816e-02,2.706e-16) + (9.698e-02,0.000e+00) (1.816e-02,-1.428e-15) (8.177e-04,-4.709e-03) (-6.302e-03,3.018e-03) (-8.177e-04,4.709e-03) (1.055e-03,6.268e-04) (3.513e-03,-6.260e-03) (1.438e-02,-4.085e-03) + (-1.826e-03,-1.086e-03) (-3.513e-03,6.260e-03) + (3.910e-02,-2.210e-02) (-3.255e-03,1.374e-03) (-3.424e-02,3.990e-02) (-3.424e-02,3.990e-02) (-6.310e-02,2.161e-02) (1.382e-03,-8.205e-04) (1.382e-03,-8.205e-04) (8.765e-03,3.550e-03) + (-5.566e-04,1.093e-03) (1.637e-02,1.991e-03) (4.284e-03,-2.804e-03) (-9.641e-04,1.893e-03) (4.284e-03,-2.804e-03) (-1.892e-02,3.039e-02) (1.916e-03,-3.586e-03) (1.816e-02,1.105e-15) + (1.816e-02,1.429e-15) (9.698e-02,0.000e+00) (-8.177e-04,4.709e-03) (-8.177e-04,4.709e-03) (-6.302e-03,3.018e-03) (-1.055e-03,-6.268e-04) (1.438e-02,-4.085e-03) (3.513e-03,-6.260e-03) + (-1.826e-03,-1.086e-03) (3.513e-03,-6.260e-03) + (8.654e-04,-5.306e-03) (-1.056e-04,4.964e-04) (8.765e-03,3.550e-03) (-1.382e-03,8.205e-04) (1.382e-03,-8.205e-04) (-6.392e-04,-4.871e-04) (-1.950e-04,3.626e-04) (1.950e-04,-3.626e-04) + (2.156e-04,-6.047e-05) (4.245e-05,-5.221e-04) (-4.245e-05,5.221e-04) (1.792e-17,6.383e-18) (-1.374e-03,-8.137e-04) (2.049e-03,5.032e-03) (-2.135e-04,-4.567e-04) (-6.302e-03,-3.018e-03) + (8.177e-04,4.709e-03) (-8.177e-04,-4.709e-03) (9.914e-04,0.000e+00) (3.256e-05,2.959e-17) (-3.256e-05,3.816e-17) (4.627e-05,2.191e-04) (-1.097e-04,-2.210e-04) (1.097e-04,2.210e-04) + (-7.891e-18,7.295e-18) (-1.691e-03,-3.401e-04) + (8.654e-04,-5.306e-03) (-1.056e-04,4.964e-04) (-1.382e-03,8.205e-04) (8.765e-03,3.550e-03) (1.382e-03,-8.205e-04) (-1.950e-04,3.626e-04) (-6.392e-04,-4.871e-04) (1.950e-04,-3.626e-04) + (-1.078e-04,3.023e-05) (4.245e-05,-5.221e-04) (-1.374e-03,-8.137e-04) (1.867e-04,-5.237e-05) (-4.245e-05,5.221e-04) (2.049e-03,5.032e-03) (-2.135e-04,-4.567e-04) (8.177e-04,4.709e-03) + (-6.302e-03,-3.018e-03) (-8.177e-04,-4.709e-03) (3.256e-05,-2.959e-17) (9.914e-04,0.000e+00) (-3.256e-05,1.271e-16) (-2.313e-05,-1.095e-04) (-1.097e-04,-2.210e-04) (-1.691e-03,-3.401e-04) + (4.007e-05,1.897e-04) (1.097e-04,2.210e-04) + (-8.654e-04,5.306e-03) (1.056e-04,-4.964e-04) (1.382e-03,-8.205e-04) (1.382e-03,-8.205e-04) (8.765e-03,3.550e-03) (1.950e-04,-3.626e-04) (1.950e-04,-3.626e-04) (-6.392e-04,-4.871e-04) + (1.078e-04,-3.023e-05) (-1.374e-03,-8.137e-04) (4.245e-05,-5.221e-04) (1.867e-04,-5.237e-05) (4.245e-05,-5.221e-04) (-2.049e-03,-5.032e-03) (2.135e-04,4.567e-04) (-8.177e-04,-4.709e-03) + (-8.177e-04,-4.709e-03) (-6.302e-03,-3.018e-03) (-3.256e-05,-3.816e-17) (-3.256e-05,-1.271e-16) (9.914e-04,-5.082e-21) (2.313e-05,1.095e-04) (-1.691e-03,-3.401e-04) (-1.097e-04,-2.210e-04) + (4.007e-05,1.897e-04) (-1.097e-04,-2.210e-04) + (-4.228e-18,5.908e-17) (-3.458e-18,-9.195e-18) (1.113e-03,-2.186e-03) (-5.566e-04,1.093e-03) (5.566e-04,-1.093e-03) (-2.156e-04,6.047e-05) (1.078e-04,-3.023e-05) (-1.078e-04,3.023e-05) + (-5.119e-06,-7.825e-05) (-1.847e-04,1.199e-04) (1.847e-04,-1.199e-04) (3.526e-18,-1.895e-18) (-3.694e-04,2.397e-04) (-3.863e-17,-6.101e-17) (5.893e-18,1.079e-17) (-2.109e-03,1.254e-03) + (1.055e-03,-6.268e-04) (-1.055e-03,6.268e-04) (4.627e-05,-2.191e-04) (-2.313e-05,1.095e-04) (2.313e-05,-1.095e-04) (7.842e-05,0.000e+00) (-1.075e-04,1.921e-04) (1.075e-04,-1.921e-04) + (-7.035e-19,5.459e-18) (-2.151e-04,3.843e-04) + (2.387e-03,-7.959e-03) (-1.504e-04,6.531e-04) (-4.284e-03,2.804e-03) (-4.284e-03,2.804e-03) (-1.637e-02,-1.991e-03) (-4.245e-05,5.221e-04) (-4.245e-05,5.221e-04) (1.374e-03,8.137e-04) + (-1.847e-04,1.199e-04) (2.872e-03,1.079e-03) (4.101e-04,6.505e-04) (-3.199e-04,2.076e-04) (4.101e-04,6.505e-04) (2.931e-03,6.477e-03) (-2.300e-04,-7.056e-04) (3.513e-03,6.260e-03) + (3.513e-03,6.260e-03) (1.438e-02,4.085e-03) (-1.097e-04,2.210e-04) (-1.097e-04,2.210e-04) (-1.691e-03,3.401e-04) (-1.075e-04,-1.921e-04) (3.174e-03,0.000e+00) (5.354e-04,1.594e-17) + (-1.863e-04,-3.328e-04) (5.354e-04,3.984e-18) + (-2.387e-03,7.959e-03) (1.504e-04,-6.531e-04) (4.284e-03,-2.804e-03) (-1.637e-02,-1.991e-03) (-4.284e-03,2.804e-03) (4.245e-05,-5.221e-04) (1.374e-03,8.137e-04) (-4.245e-05,5.221e-04) + (1.847e-04,-1.199e-04) (4.101e-04,6.505e-04) (2.872e-03,1.079e-03) (-3.199e-04,2.076e-04) (-4.101e-04,-6.505e-04) (-2.931e-03,-6.477e-03) (2.300e-04,7.056e-04) (-3.513e-03,-6.260e-03) + (1.438e-02,4.085e-03) (3.513e-03,6.260e-03) (1.097e-04,-2.210e-04) (-1.691e-03,3.401e-04) (-1.097e-04,2.210e-04) (1.075e-04,1.921e-04) (5.354e-04,-1.594e-17) (3.174e-03,0.000e+00) + (-1.863e-04,-3.328e-04) (-5.354e-04,1.428e-17) + (2.414e-17,1.120e-16) (9.041e-18,-4.286e-17) (-4.077e-17,-3.203e-17) (9.641e-04,-1.893e-03) (9.641e-04,-1.893e-03) (1.308e-17,-4.740e-18) (-1.867e-04,5.237e-05) (-1.867e-04,5.237e-05) + (-1.572e-18,2.264e-18) (-3.199e-04,2.076e-04) (-3.199e-04,2.076e-04) (-5.119e-06,-7.825e-05) (-2.372e-19,5.130e-18) (-8.559e-17,-7.268e-17) (4.840e-18,4.135e-17) (-1.423e-17,2.686e-17) + (-1.826e-03,1.086e-03) (-1.826e-03,1.086e-03) (-7.891e-18,-7.295e-18) (4.007e-05,-1.897e-04) (4.007e-05,-1.897e-04) (-7.128e-19,-5.457e-18) (-1.863e-04,3.328e-04) (-1.863e-04,3.328e-04) + (7.842e-05,8.470e-22) (8.911e-18,-8.301e-19) + (-2.387e-03,7.959e-03) (1.504e-04,-6.531e-04) (-1.637e-02,-1.991e-03) (4.284e-03,-2.804e-03) (-4.284e-03,2.804e-03) (1.374e-03,8.137e-04) (4.245e-05,-5.221e-04) (-4.245e-05,5.221e-04) + (-3.694e-04,2.397e-04) (4.101e-04,6.505e-04) (-4.101e-04,-6.505e-04) (-1.148e-17,-1.884e-18) (2.872e-03,1.079e-03) (-2.931e-03,-6.477e-03) (2.300e-04,7.056e-04) (1.438e-02,4.085e-03) + (-3.513e-03,-6.260e-03) (3.513e-03,6.260e-03) (-1.691e-03,3.401e-04) (1.097e-04,-2.210e-04) (-1.097e-04,2.210e-04) (-2.151e-04,-3.843e-04) (5.354e-04,-4.093e-18) (-5.354e-04,-1.423e-17) + (8.904e-18,7.971e-19) (3.174e-03,0.000e+00) diff --git a/source/source_io/test/support/dms1_nao.txt b/source/source_io/test/support/dms1_nao.txt deleted file mode 100644 index 8f03975f1e..0000000000 --- a/source/source_io/test/support/dms1_nao.txt +++ /dev/null @@ -1,119 +0,0 @@ -none - 5.39761 - -0.5 0 0.5 - 0 0.5 0.5 - -0.5 0.5 0 - Si - 2 -Direct - 0 0 0 - 0.75 0.75 0.75 - - 1 - 0.570336288802337 (fermi energy) - 26 26 - - 3.904e-01 1.114e-02 5.918e-14 -1.032e-14 -5.650e-14 -2.278e-15 1.049e-14 7.875e-15 - -1.022e-15 -9.243e-15 -4.239e-15 -4.177e-16 1.138e-14 3.904e-01 1.114e-02 -5.087e-14 - 1.542e-14 6.071e-14 7.203e-15 -6.739e-15 -1.848e-15 1.376e-15 -1.259e-14 -5.116e-15 - 4.104e-16 9.615e-15 - 1.114e-02 3.177e-04 -1.789e-14 7.148e-15 1.530e-14 1.672e-15 -3.610e-16 -1.275e-15 - -2.914e-17 2.955e-15 1.296e-15 -1.192e-17 -3.403e-15 1.114e-02 3.177e-04 1.813e-14 - -7.002e-15 -1.518e-14 -1.532e-15 4.680e-16 1.447e-15 3.926e-17 2.860e-15 1.271e-15 - 1.171e-17 -3.453e-15 - 5.918e-14 -1.789e-14 9.507e-01 2.156e-14 7.801e-15 -8.434e-02 -7.786e-15 9.889e-16 - 4.982e-16 2.026e-16 1.354e-15 -3.683e-16 1.810e-01 -4.515e-14 2.281e-14 -9.507e-01 - 4.041e-15 1.074e-14 8.434e-02 1.213e-14 3.510e-15 -3.700e-17 -1.211e-17 6.764e-15 - -1.410e-16 1.810e-01 - -1.032e-14 7.148e-15 2.156e-14 9.507e-01 -1.857e-14 -1.168e-15 -8.434e-02 -6.126e-15 - -3.720e-16 -3.894e-15 1.810e-01 2.484e-16 -3.178e-15 3.136e-14 -4.989e-15 2.147e-14 - -9.507e-01 2.334e-14 9.054e-15 8.434e-02 -4.928e-16 1.386e-15 -2.383e-16 1.810e-01 - -2.432e-15 5.280e-15 - -5.650e-14 1.530e-14 7.801e-15 -1.857e-14 9.507e-01 -1.018e-15 -1.144e-14 -8.434e-02 - 2.907e-15 1.810e-01 -1.369e-15 2.925e-15 1.715e-15 5.904e-14 -1.585e-14 -2.623e-15 - 2.790e-15 -9.507e-01 5.354e-15 3.626e-15 8.434e-02 -2.228e-15 1.810e-01 3.122e-15 - -3.904e-15 2.578e-15 - -2.278e-15 1.672e-15 -8.434e-02 -1.168e-15 -1.018e-15 7.481e-03 6.248e-16 -5.890e-17 - -4.419e-17 -7.980e-17 2.189e-17 3.267e-17 -1.606e-02 6.977e-15 -1.938e-15 8.434e-02 - -1.101e-15 -6.264e-16 -7.481e-03 -1.010e-15 -3.403e-16 3.282e-18 -6.083e-17 -4.581e-16 - 1.251e-17 -1.606e-02 - 1.049e-14 -3.610e-16 -7.786e-15 -8.434e-02 -1.144e-14 6.248e-16 7.481e-03 1.705e-15 - 3.300e-17 -2.147e-15 -1.606e-02 -2.203e-17 -8.368e-16 6.793e-15 7.157e-16 3.970e-15 - 8.434e-02 1.102e-14 -1.324e-15 -7.481e-03 -1.118e-15 -1.230e-16 -2.472e-15 -1.606e-02 - 2.157e-16 -1.587e-15 - 7.875e-15 -1.275e-15 9.889e-16 -6.126e-15 -8.434e-02 -5.890e-17 1.705e-15 7.481e-03 - -2.579e-16 -1.606e-02 -1.359e-15 -2.595e-16 1.679e-16 -2.374e-15 1.487e-15 -1.448e-15 - 7.528e-15 8.434e-02 -3.258e-16 -1.011e-15 -7.481e-03 1.976e-16 -1.606e-02 -1.757e-15 - 3.463e-16 9.162e-17 - -1.022e-15 -2.914e-17 4.982e-16 -3.720e-16 2.907e-15 -4.419e-17 3.300e-17 -2.579e-16 - 1.197e-29 5.534e-16 -7.083e-17 9.747e-30 9.484e-17 -1.022e-15 -2.914e-17 -4.982e-16 - 3.720e-16 -2.907e-15 4.419e-17 -3.300e-17 2.579e-16 -1.098e-29 5.534e-16 -7.083e-17 - -1.213e-29 9.484e-17 - -9.243e-15 2.955e-15 2.026e-16 -3.894e-15 1.810e-01 -7.980e-17 -2.147e-15 -1.606e-02 - 5.534e-16 3.445e-02 -3.283e-16 5.569e-16 8.263e-17 1.275e-14 -2.974e-15 7.852e-16 - 8.854e-16 -1.810e-01 9.054e-16 6.580e-16 1.606e-02 -4.242e-16 3.445e-02 5.254e-16 - -7.433e-16 2.460e-16 - -4.239e-15 1.296e-15 1.354e-15 1.810e-01 -1.369e-15 2.189e-17 -1.606e-02 -1.359e-15 - -7.083e-17 -3.283e-16 3.445e-02 4.728e-17 -1.129e-15 3.696e-15 -1.015e-15 6.837e-15 - -1.810e-01 2.274e-15 1.479e-15 1.606e-02 9.938e-17 2.639e-16 3.691e-16 3.445e-02 - -4.630e-16 4.817e-16 - -4.177e-16 -1.192e-17 -3.683e-16 2.484e-16 2.925e-15 3.267e-17 -2.203e-17 -2.595e-16 - 9.747e-30 5.569e-16 4.728e-17 9.656e-30 -7.012e-17 -4.177e-16 -1.192e-17 3.683e-16 - -2.484e-16 -2.925e-15 -3.267e-17 2.203e-17 2.595e-16 -7.952e-30 5.569e-16 4.728e-17 - -1.303e-29 -7.012e-17 - 1.138e-14 -3.403e-15 1.810e-01 -3.178e-15 1.715e-15 -1.606e-02 -8.368e-16 1.679e-16 - 9.484e-17 8.263e-17 -1.129e-15 -7.012e-17 3.445e-02 -8.483e-15 4.345e-15 -1.810e-01 - 8.052e-15 1.812e-15 1.606e-02 1.663e-15 6.889e-16 -7.043e-18 4.155e-17 -9.801e-17 - -2.685e-17 3.445e-02 - 3.904e-01 1.114e-02 -4.515e-14 3.136e-14 5.904e-14 6.977e-15 6.793e-15 -2.374e-15 - -1.022e-15 1.275e-14 3.696e-15 -4.177e-16 -8.483e-15 3.904e-01 1.114e-02 5.346e-14 - -2.626e-14 -5.482e-14 -2.052e-15 -3.042e-15 8.401e-15 1.376e-15 9.408e-15 2.819e-15 - 4.104e-16 -1.025e-14 - 1.114e-02 3.177e-04 2.281e-14 -4.989e-15 -1.585e-14 -1.938e-15 7.157e-16 1.487e-15 - -2.914e-17 -2.974e-15 -1.015e-15 -1.192e-17 4.345e-15 1.114e-02 3.177e-04 -2.257e-14 - 5.134e-15 1.597e-14 2.079e-15 -6.087e-16 -1.316e-15 3.926e-17 -3.069e-15 -1.040e-15 - 1.171e-17 4.295e-15 - -5.087e-14 1.813e-14 -9.507e-01 2.147e-14 -2.623e-15 8.434e-02 3.970e-15 -1.448e-15 - -4.982e-16 7.852e-16 6.837e-15 3.683e-16 -1.810e-01 5.346e-14 -2.257e-14 9.507e-01 - -4.707e-14 -1.592e-14 -8.434e-02 -8.313e-15 -3.052e-15 3.700e-17 9.999e-16 1.420e-15 - 1.410e-16 -1.810e-01 - 1.542e-14 -7.002e-15 4.041e-15 -9.507e-01 2.790e-15 -1.101e-15 8.434e-02 7.528e-15 - 3.720e-16 8.854e-16 -1.810e-01 -2.484e-16 8.052e-15 -2.626e-14 5.134e-15 -4.707e-14 - 9.507e-01 -7.559e-15 -6.785e-15 -8.434e-02 -9.083e-16 -1.386e-15 -2.770e-15 -1.810e-01 - 2.432e-15 -4.065e-16 - 6.071e-14 -1.518e-14 1.074e-14 2.334e-14 -9.507e-01 -6.264e-16 1.102e-14 8.434e-02 - -2.907e-15 -1.810e-01 2.274e-15 -2.925e-15 1.812e-15 -5.482e-14 1.597e-14 -1.592e-14 - -7.559e-15 9.507e-01 -3.710e-15 -3.203e-15 -8.434e-02 2.228e-15 -1.810e-01 -2.218e-15 - 3.904e-15 9.526e-16 - 7.203e-15 -1.532e-15 8.434e-02 9.054e-15 5.354e-15 -7.481e-03 -1.324e-15 -3.258e-16 - 4.419e-17 9.054e-16 1.479e-15 -3.267e-17 1.606e-02 -2.052e-15 2.079e-15 -8.434e-02 - -6.785e-15 -3.710e-15 7.481e-03 1.710e-15 7.249e-16 -3.282e-18 8.864e-16 1.960e-15 - -1.251e-17 1.606e-02 - -6.739e-15 4.680e-16 1.213e-14 8.434e-02 3.626e-15 -1.010e-15 -7.481e-03 -1.011e-15 - -3.300e-17 6.580e-16 1.606e-02 2.203e-17 1.663e-15 -3.042e-15 -6.087e-16 -8.313e-15 - -8.434e-02 -3.203e-15 1.710e-15 7.481e-03 4.239e-16 1.230e-16 9.834e-16 1.606e-02 - -2.157e-16 2.413e-15 - -1.848e-15 1.447e-15 3.510e-15 -4.928e-16 8.434e-02 -3.403e-16 -1.118e-15 -7.481e-03 - 2.579e-16 1.606e-02 9.938e-17 2.595e-16 6.889e-16 8.401e-15 -1.316e-15 -3.052e-15 - -9.083e-16 -8.434e-02 7.249e-16 4.239e-16 7.481e-03 -1.976e-16 1.606e-02 4.962e-16 - -3.463e-16 7.651e-16 - 1.376e-15 3.926e-17 -3.700e-17 1.386e-15 -2.228e-15 3.282e-18 -1.230e-16 1.976e-16 - -1.098e-29 -4.242e-16 2.639e-16 -7.952e-30 -7.043e-18 1.376e-15 3.926e-17 3.700e-17 - -1.386e-15 2.228e-15 -3.282e-18 1.230e-16 -1.976e-16 1.210e-29 -4.242e-16 2.639e-16 - 7.056e-30 -7.043e-18 - -1.259e-14 2.860e-15 -1.211e-17 -2.383e-16 1.810e-01 -6.083e-17 -2.472e-15 -1.606e-02 - 5.534e-16 3.445e-02 3.691e-16 5.569e-16 4.155e-17 9.408e-15 -3.069e-15 9.999e-16 - -2.770e-15 -1.810e-01 8.864e-16 9.834e-16 1.606e-02 -4.242e-16 3.445e-02 1.223e-15 - -7.433e-16 2.049e-16 - -5.116e-15 1.271e-15 6.764e-15 1.810e-01 3.122e-15 -4.581e-16 -1.606e-02 -1.757e-15 - -7.083e-17 5.254e-16 3.445e-02 4.728e-17 -9.801e-17 2.819e-15 -1.040e-15 1.420e-15 - -1.810e-01 -2.218e-15 1.960e-15 1.606e-02 4.962e-16 2.639e-16 1.223e-15 3.445e-02 - -4.630e-16 1.512e-15 - 4.104e-16 1.171e-17 -1.410e-16 -2.432e-15 -3.904e-15 1.251e-17 2.157e-16 3.463e-16 - -1.213e-29 -7.433e-16 -4.630e-16 -1.303e-29 -2.685e-17 4.104e-16 1.171e-17 1.410e-16 - 2.432e-15 3.904e-15 -1.251e-17 -2.157e-16 -3.463e-16 7.056e-30 -7.433e-16 -4.630e-16 - 2.271e-29 -2.685e-17 - 9.615e-15 -3.453e-15 1.810e-01 5.280e-15 2.578e-15 -1.606e-02 -1.587e-15 9.162e-17 - 9.484e-17 2.460e-16 4.817e-16 -7.012e-17 3.445e-02 -1.025e-14 4.295e-15 -1.810e-01 - -4.065e-16 9.526e-16 1.606e-02 2.413e-15 7.651e-16 -7.043e-18 2.049e-16 1.512e-15 - -2.685e-17 3.445e-02 \ No newline at end of file diff --git a/source/source_io/test/support/dms1k1_nao.txt b/source/source_io/test/support/dms1k1_nao.txt deleted file mode 100644 index 9cacc456e0..0000000000 --- a/source/source_io/test/support/dms1k1_nao.txt +++ /dev/null @@ -1,119 +0,0 @@ -none - 1 - 2.74242 2.74242 0 - 2.74242 0 2.74242 - 0 2.74242 2.74242 - Si - 2 -Direct - 0 0 0 - 0.25 0.25 0.25 - - 1 - 0.47370 (fermi energy) - 26 26 - - (1.411e-01,0.000e+00) (-4.479e-03,3.208e-04) (-1.892e-02,3.039e-02) (-1.892e-02,3.039e-02) (1.892e-02,-3.039e-02) (-2.049e-03,-5.032e-03) (-2.049e-03,-5.032e-03) (2.049e-03,5.032e-03) - (-6.505e-17,-4.647e-18) (2.931e-03,6.477e-03) (-2.931e-03,-6.477e-03) (-2.100e-16,6.607e-17) (-2.931e-03,-6.477e-03) (-1.319e-02,3.501e-02) (9.561e-03,-5.528e-03) (-3.910e-02,-2.210e-02) - (-3.910e-02,-2.210e-02) (3.910e-02,2.210e-02) (8.654e-04,5.306e-03) (8.654e-04,5.306e-03) (-8.654e-04,-5.306e-03) (-4.228e-18,-5.908e-17) (2.387e-03,7.959e-03) (-2.387e-03,-7.959e-03) - (2.414e-17,-1.120e-16) (-2.387e-03,-7.959e-03) - (-4.479e-03,-3.208e-04) (9.195e-04,0.000e+00) (1.916e-03,-3.586e-03) (1.916e-03,-3.586e-03) (-1.916e-03,3.586e-03) (2.135e-04,4.567e-04) (2.135e-04,4.567e-04) (-2.135e-04,-4.567e-04) - (8.745e-18,3.795e-18) (-2.300e-04,-7.056e-04) (2.300e-04,7.056e-04) (4.757e-17,-2.079e-17) (2.300e-04,7.056e-04) (9.561e-03,-5.528e-03) (-4.169e-04,3.347e-04) (3.255e-03,1.374e-03) - (3.255e-03,1.374e-03) (-3.255e-03,-1.374e-03) (-1.056e-04,-4.964e-04) (-1.056e-04,-4.964e-04) (1.056e-04,4.964e-04) (-3.458e-18,9.195e-18) (-1.504e-04,-6.531e-04) (1.504e-04,6.531e-04) - (9.041e-18,4.286e-17) (1.504e-04,6.531e-04) - (-1.892e-02,-3.039e-02) (1.916e-03,3.586e-03) (9.698e-02,-4.337e-19) (-1.816e-02,0.000e+00) (1.816e-02,-7.954e-16) (-6.302e-03,-3.018e-03) (8.177e-04,4.709e-03) (-8.177e-04,-4.709e-03) - (2.109e-03,-1.254e-03) (-3.513e-03,-6.260e-03) (3.513e-03,6.260e-03) (1.259e-16,-4.158e-17) (-1.438e-02,-4.085e-03) (3.910e-02,2.210e-02) (-3.255e-03,-1.374e-03) (-6.310e-02,-2.161e-02) - (3.424e-02,3.990e-02) (-3.424e-02,-3.990e-02) (8.765e-03,-3.550e-03) (-1.382e-03,-8.205e-04) (1.382e-03,8.205e-04) (1.113e-03,2.186e-03) (-4.284e-03,-2.804e-03) (4.284e-03,2.804e-03) - (-4.082e-17,3.216e-17) (-1.637e-02,1.991e-03) - (-1.892e-02,-3.039e-02) (1.916e-03,3.586e-03) (-1.816e-02,3.469e-18) (9.698e-02,0.000e+00) (1.816e-02,-8.500e-16) (8.177e-04,4.709e-03) (-6.302e-03,-3.018e-03) (-8.177e-04,-4.709e-03) - (-1.055e-03,6.268e-04) (-3.513e-03,-6.260e-03) (-1.438e-02,-4.085e-03) (1.826e-03,-1.086e-03) (3.513e-03,6.260e-03) (3.910e-02,2.210e-02) (-3.255e-03,-1.374e-03) (3.424e-02,3.990e-02) - (-6.310e-02,-2.161e-02) (-3.424e-02,-3.990e-02) (-1.382e-03,-8.205e-04) (8.765e-03,-3.550e-03) (1.382e-03,8.205e-04) (-5.566e-04,-1.093e-03) (-4.284e-03,-2.804e-03) (-1.637e-02,1.991e-03) - (9.641e-04,1.893e-03) (4.284e-03,2.804e-03) - (1.892e-02,3.039e-02) (-1.916e-03,-3.586e-03) (1.816e-02,7.954e-16) (1.816e-02,8.431e-16) (9.698e-02,-8.674e-19) (-8.177e-04,-4.709e-03) (-8.177e-04,-4.709e-03) (-6.302e-03,-3.018e-03) - (1.055e-03,-6.268e-04) (-1.438e-02,-4.085e-03) (-3.513e-03,-6.260e-03) (1.826e-03,-1.086e-03) (-3.513e-03,-6.260e-03) (-3.910e-02,-2.210e-02) (3.255e-03,1.374e-03) (-3.424e-02,-3.990e-02) - (-3.424e-02,-3.990e-02) (-6.310e-02,-2.161e-02) (1.382e-03,8.205e-04) (1.382e-03,8.205e-04) (8.765e-03,-3.550e-03) (5.566e-04,1.093e-03) (-1.637e-02,1.991e-03) (-4.284e-03,-2.804e-03) - (9.641e-04,1.893e-03) (-4.284e-03,-2.804e-03) - (-2.049e-03,5.032e-03) (2.135e-04,-4.567e-04) (-6.302e-03,3.018e-03) (8.177e-04,-4.709e-03) (-8.177e-04,4.709e-03) (9.914e-04,-5.421e-20) (3.256e-05,-4.476e-17) (-3.256e-05,-3.980e-17) - (-4.627e-05,2.191e-04) (1.097e-04,-2.210e-04) (-1.097e-04,2.210e-04) (3.974e-18,-1.249e-17) (1.691e-03,-3.401e-04) (-8.654e-04,-5.306e-03) (1.056e-04,4.964e-04) (8.765e-03,-3.550e-03) - (-1.382e-03,-8.205e-04) (1.382e-03,8.205e-04) (-6.392e-04,4.871e-04) (-1.950e-04,-3.626e-04) (1.950e-04,3.626e-04) (-2.156e-04,-6.047e-05) (-4.245e-05,-5.221e-04) (4.245e-05,5.221e-04) - (1.307e-17,4.747e-18) (1.374e-03,-8.137e-04) - (-2.049e-03,5.032e-03) (2.135e-04,-4.567e-04) (8.177e-04,-4.709e-03) (-6.302e-03,3.018e-03) (-8.177e-04,4.709e-03) (3.256e-05,4.476e-17) (9.914e-04,0.000e+00) (-3.256e-05,-2.742e-17) - (2.313e-05,-1.095e-04) (1.097e-04,-2.210e-04) (1.691e-03,-3.401e-04) (-4.007e-05,1.897e-04) (-1.097e-04,2.210e-04) (-8.654e-04,-5.306e-03) (1.056e-04,4.964e-04) (-1.382e-03,-8.205e-04) - (8.765e-03,-3.550e-03) (1.382e-03,8.205e-04) (-1.950e-04,-3.626e-04) (-6.392e-04,4.871e-04) (1.950e-04,3.626e-04) (1.078e-04,3.023e-05) (-4.245e-05,-5.221e-04) (1.374e-03,-8.137e-04) - (-1.867e-04,-5.237e-05) (4.245e-05,5.221e-04) - (2.049e-03,-5.032e-03) (-2.135e-04,4.567e-04) (-8.177e-04,4.709e-03) (-8.177e-04,4.709e-03) (-6.302e-03,3.018e-03) (-3.256e-05,3.976e-17) (-3.256e-05,2.742e-17) (9.914e-04,-5.421e-20) - (-2.313e-05,1.095e-04) (1.691e-03,-3.401e-04) (1.097e-04,-2.210e-04) (-4.007e-05,1.897e-04) (1.097e-04,-2.210e-04) (8.654e-04,5.306e-03) (-1.056e-04,-4.964e-04) (1.382e-03,8.205e-04) - (1.382e-03,8.205e-04) (8.765e-03,-3.550e-03) (1.950e-04,3.626e-04) (1.950e-04,3.626e-04) (-6.392e-04,4.871e-04) (-1.078e-04,-3.023e-05) (1.374e-03,-8.137e-04) (-4.245e-05,-5.221e-04) - (-1.867e-04,-5.237e-05) (-4.245e-05,-5.221e-04) - (-6.505e-17,4.647e-18) (8.745e-18,-3.795e-18) (2.109e-03,1.254e-03) (-1.055e-03,-6.268e-04) (1.055e-03,6.268e-04) (-4.627e-05,-2.191e-04) (2.313e-05,1.095e-04) (-2.313e-05,-1.095e-04) - (7.842e-05,0.000e+00) (-1.075e-04,-1.921e-04) (1.075e-04,1.921e-04) (2.092e-19,-9.571e-20) (-2.151e-04,-3.843e-04) (4.814e-17,-3.873e-17) (-1.086e-17,6.162e-18) (-1.113e-03,-2.186e-03) - (5.566e-04,1.093e-03) (-5.566e-04,-1.093e-03) (2.156e-04,6.047e-05) (-1.078e-04,-3.023e-05) (1.078e-04,3.023e-05) (-5.119e-06,7.825e-05) (-1.847e-04,-1.199e-04) (1.847e-04,1.199e-04) - (-1.577e-18,-2.256e-18) (-3.694e-04,-2.397e-04) - (2.931e-03,-6.477e-03) (-2.300e-04,7.056e-04) (-3.513e-03,6.260e-03) (-3.513e-03,6.260e-03) (-1.438e-02,4.085e-03) (1.097e-04,2.210e-04) (1.097e-04,2.210e-04) (1.691e-03,3.401e-04) - (-1.075e-04,1.921e-04) (3.174e-03,0.000e+00) (5.354e-04,-9.107e-18) (-1.863e-04,3.328e-04) (5.354e-04,2.602e-18) (2.387e-03,7.959e-03) (-1.504e-04,-6.531e-04) (4.284e-03,2.804e-03) - (4.284e-03,2.804e-03) (1.637e-02,-1.991e-03) (4.245e-05,5.221e-04) (4.245e-05,5.221e-04) (-1.374e-03,8.137e-04) (-1.847e-04,-1.199e-04) (2.872e-03,-1.079e-03) (4.101e-04,-6.505e-04) - (-3.199e-04,-2.076e-04) (4.101e-04,-6.505e-04) - (-2.931e-03,6.477e-03) (2.300e-04,-7.056e-04) (3.513e-03,-6.260e-03) (-1.438e-02,4.085e-03) (-3.513e-03,6.260e-03) (-1.097e-04,-2.210e-04) (1.691e-03,3.401e-04) (1.097e-04,2.210e-04) - (1.075e-04,-1.921e-04) (5.354e-04,9.053e-18) (3.174e-03,0.000e+00) (-1.863e-04,3.328e-04) (-5.354e-04,-4.120e-18) (-2.387e-03,-7.959e-03) (1.504e-04,6.531e-04) (-4.284e-03,-2.804e-03) - (1.637e-02,-1.991e-03) (4.284e-03,2.804e-03) (-4.245e-05,-5.221e-04) (-1.374e-03,8.137e-04) (4.245e-05,5.221e-04) (1.847e-04,1.199e-04) (4.101e-04,-6.505e-04) (2.872e-03,-1.079e-03) - (-3.199e-04,-2.076e-04) (-4.101e-04,6.505e-04) - (-2.100e-16,-6.607e-17) (4.757e-17,2.079e-17) (1.259e-16,4.158e-17) (1.826e-03,1.086e-03) (1.826e-03,1.086e-03) (3.968e-18,1.248e-17) (-4.007e-05,-1.897e-04) (-4.007e-05,-1.897e-04) - (2.126e-19,9.656e-20) (-1.863e-04,-3.328e-04) (-1.863e-04,-3.328e-04) (7.842e-05,0.000e+00) (-8.243e-18,-8.362e-18) (1.701e-16,-3.250e-17) (-5.318e-17,-5.205e-20) (5.719e-18,-5.061e-17) - (-9.641e-04,-1.893e-03) (-9.641e-04,-1.893e-03) (1.792e-17,-6.380e-18) (1.867e-04,5.237e-05) (1.867e-04,5.237e-05) (3.528e-18,1.890e-18) (-3.199e-04,-2.076e-04) (-3.199e-04,-2.076e-04) - (-5.119e-06,7.825e-05) (-1.148e-17,1.884e-18) - (-2.931e-03,6.477e-03) (2.300e-04,-7.056e-04) (-1.438e-02,4.085e-03) (3.513e-03,-6.260e-03) (-3.513e-03,6.260e-03) (1.691e-03,3.401e-04) (-1.097e-04,-2.210e-04) (1.097e-04,2.210e-04) - (-2.151e-04,3.843e-04) (5.354e-04,-2.602e-18) (-5.354e-04,4.228e-18) (-8.243e-18,8.328e-18) (3.174e-03,2.168e-19) (-2.387e-03,-7.959e-03) (1.504e-04,6.531e-04) (1.637e-02,-1.991e-03) - (-4.284e-03,-2.804e-03) (4.284e-03,2.804e-03) (-1.374e-03,8.137e-04) (-4.245e-05,-5.221e-04) (4.245e-05,5.221e-04) (-3.694e-04,-2.397e-04) (4.101e-04,-6.505e-04) (-4.101e-04,6.505e-04) - (-2.439e-19,-5.153e-18) (2.872e-03,-1.079e-03) - (-1.319e-02,-3.501e-02) (9.561e-03,5.528e-03) (3.910e-02,-2.210e-02) (3.910e-02,-2.210e-02) (-3.910e-02,2.210e-02) (-8.654e-04,5.306e-03) (-8.654e-04,5.306e-03) (8.654e-04,-5.306e-03) - (4.814e-17,3.873e-17) (2.387e-03,-7.959e-03) (-2.387e-03,7.959e-03) (1.701e-16,3.250e-17) (-2.387e-03,7.959e-03) (1.411e-01,0.000e+00) (-4.479e-03,-3.208e-04) (1.892e-02,3.039e-02) - (1.892e-02,3.039e-02) (-1.892e-02,-3.039e-02) (2.049e-03,-5.032e-03) (2.049e-03,-5.032e-03) (-2.049e-03,5.032e-03) (-3.863e-17,6.101e-17) (2.931e-03,-6.477e-03) (-2.931e-03,6.477e-03) - (-8.559e-17,7.268e-17) (-2.931e-03,6.477e-03) - (9.561e-03,5.528e-03) (-4.169e-04,-3.347e-04) (-3.255e-03,1.374e-03) (-3.255e-03,1.374e-03) (3.255e-03,-1.374e-03) (1.056e-04,-4.964e-04) (1.056e-04,-4.964e-04) (-1.056e-04,4.964e-04) - (-1.086e-17,-6.162e-18) (-1.504e-04,6.531e-04) (1.504e-04,-6.531e-04) (-5.318e-17,5.205e-20) (1.504e-04,-6.531e-04) (-4.479e-03,3.208e-04) (9.195e-04,0.000e+00) (-1.916e-03,-3.586e-03) - (-1.916e-03,-3.586e-03) (1.916e-03,3.586e-03) (-2.135e-04,4.567e-04) (-2.135e-04,4.567e-04) (2.135e-04,-4.567e-04) (5.893e-18,-1.079e-17) (-2.300e-04,7.056e-04) (2.300e-04,-7.056e-04) - (4.840e-18,-4.135e-17) (2.300e-04,-7.056e-04) - (-3.910e-02,2.210e-02) (3.255e-03,-1.374e-03) (-6.310e-02,2.161e-02) (3.424e-02,-3.990e-02) (-3.424e-02,3.990e-02) (8.765e-03,3.550e-03) (-1.382e-03,8.205e-04) (1.382e-03,-8.205e-04) - (-1.113e-03,2.186e-03) (4.284e-03,-2.804e-03) (-4.284e-03,2.804e-03) (5.719e-18,5.042e-17) (1.637e-02,1.991e-03) (1.892e-02,-3.039e-02) (-1.916e-03,3.586e-03) (9.698e-02,0.000e+00) - (-1.816e-02,-2.741e-16) (1.816e-02,-1.110e-15) (-6.302e-03,3.018e-03) (8.177e-04,-4.709e-03) (-8.177e-04,4.709e-03) (-2.109e-03,-1.254e-03) (3.513e-03,-6.260e-03) (-3.513e-03,6.260e-03) - (-1.428e-17,-2.683e-17) (1.438e-02,-4.085e-03) - (-3.910e-02,2.210e-02) (3.255e-03,-1.374e-03) (3.424e-02,-3.990e-02) (-6.310e-02,2.161e-02) (-3.424e-02,3.990e-02) (-1.382e-03,8.205e-04) (8.765e-03,3.550e-03) (1.382e-03,-8.205e-04) - (5.566e-04,-1.093e-03) (4.284e-03,-2.804e-03) (1.637e-02,1.991e-03) (-9.641e-04,1.893e-03) (-4.284e-03,2.804e-03) (1.892e-02,-3.039e-02) (-1.916e-03,3.586e-03) (-1.816e-02,2.706e-16) - (9.698e-02,0.000e+00) (1.816e-02,-1.428e-15) (8.177e-04,-4.709e-03) (-6.302e-03,3.018e-03) (-8.177e-04,4.709e-03) (1.055e-03,6.268e-04) (3.513e-03,-6.260e-03) (1.438e-02,-4.085e-03) - (-1.826e-03,-1.086e-03) (-3.513e-03,6.260e-03) - (3.910e-02,-2.210e-02) (-3.255e-03,1.374e-03) (-3.424e-02,3.990e-02) (-3.424e-02,3.990e-02) (-6.310e-02,2.161e-02) (1.382e-03,-8.205e-04) (1.382e-03,-8.205e-04) (8.765e-03,3.550e-03) - (-5.566e-04,1.093e-03) (1.637e-02,1.991e-03) (4.284e-03,-2.804e-03) (-9.641e-04,1.893e-03) (4.284e-03,-2.804e-03) (-1.892e-02,3.039e-02) (1.916e-03,-3.586e-03) (1.816e-02,1.105e-15) - (1.816e-02,1.429e-15) (9.698e-02,0.000e+00) (-8.177e-04,4.709e-03) (-8.177e-04,4.709e-03) (-6.302e-03,3.018e-03) (-1.055e-03,-6.268e-04) (1.438e-02,-4.085e-03) (3.513e-03,-6.260e-03) - (-1.826e-03,-1.086e-03) (3.513e-03,-6.260e-03) - (8.654e-04,-5.306e-03) (-1.056e-04,4.964e-04) (8.765e-03,3.550e-03) (-1.382e-03,8.205e-04) (1.382e-03,-8.205e-04) (-6.392e-04,-4.871e-04) (-1.950e-04,3.626e-04) (1.950e-04,-3.626e-04) - (2.156e-04,-6.047e-05) (4.245e-05,-5.221e-04) (-4.245e-05,5.221e-04) (1.792e-17,6.383e-18) (-1.374e-03,-8.137e-04) (2.049e-03,5.032e-03) (-2.135e-04,-4.567e-04) (-6.302e-03,-3.018e-03) - (8.177e-04,4.709e-03) (-8.177e-04,-4.709e-03) (9.914e-04,0.000e+00) (3.256e-05,2.959e-17) (-3.256e-05,3.816e-17) (4.627e-05,2.191e-04) (-1.097e-04,-2.210e-04) (1.097e-04,2.210e-04) - (-7.891e-18,7.295e-18) (-1.691e-03,-3.401e-04) - (8.654e-04,-5.306e-03) (-1.056e-04,4.964e-04) (-1.382e-03,8.205e-04) (8.765e-03,3.550e-03) (1.382e-03,-8.205e-04) (-1.950e-04,3.626e-04) (-6.392e-04,-4.871e-04) (1.950e-04,-3.626e-04) - (-1.078e-04,3.023e-05) (4.245e-05,-5.221e-04) (-1.374e-03,-8.137e-04) (1.867e-04,-5.237e-05) (-4.245e-05,5.221e-04) (2.049e-03,5.032e-03) (-2.135e-04,-4.567e-04) (8.177e-04,4.709e-03) - (-6.302e-03,-3.018e-03) (-8.177e-04,-4.709e-03) (3.256e-05,-2.959e-17) (9.914e-04,0.000e+00) (-3.256e-05,1.271e-16) (-2.313e-05,-1.095e-04) (-1.097e-04,-2.210e-04) (-1.691e-03,-3.401e-04) - (4.007e-05,1.897e-04) (1.097e-04,2.210e-04) - (-8.654e-04,5.306e-03) (1.056e-04,-4.964e-04) (1.382e-03,-8.205e-04) (1.382e-03,-8.205e-04) (8.765e-03,3.550e-03) (1.950e-04,-3.626e-04) (1.950e-04,-3.626e-04) (-6.392e-04,-4.871e-04) - (1.078e-04,-3.023e-05) (-1.374e-03,-8.137e-04) (4.245e-05,-5.221e-04) (1.867e-04,-5.237e-05) (4.245e-05,-5.221e-04) (-2.049e-03,-5.032e-03) (2.135e-04,4.567e-04) (-8.177e-04,-4.709e-03) - (-8.177e-04,-4.709e-03) (-6.302e-03,-3.018e-03) (-3.256e-05,-3.816e-17) (-3.256e-05,-1.271e-16) (9.914e-04,-5.082e-21) (2.313e-05,1.095e-04) (-1.691e-03,-3.401e-04) (-1.097e-04,-2.210e-04) - (4.007e-05,1.897e-04) (-1.097e-04,-2.210e-04) - (-4.228e-18,5.908e-17) (-3.458e-18,-9.195e-18) (1.113e-03,-2.186e-03) (-5.566e-04,1.093e-03) (5.566e-04,-1.093e-03) (-2.156e-04,6.047e-05) (1.078e-04,-3.023e-05) (-1.078e-04,3.023e-05) - (-5.119e-06,-7.825e-05) (-1.847e-04,1.199e-04) (1.847e-04,-1.199e-04) (3.526e-18,-1.895e-18) (-3.694e-04,2.397e-04) (-3.863e-17,-6.101e-17) (5.893e-18,1.079e-17) (-2.109e-03,1.254e-03) - (1.055e-03,-6.268e-04) (-1.055e-03,6.268e-04) (4.627e-05,-2.191e-04) (-2.313e-05,1.095e-04) (2.313e-05,-1.095e-04) (7.842e-05,0.000e+00) (-1.075e-04,1.921e-04) (1.075e-04,-1.921e-04) - (-7.035e-19,5.459e-18) (-2.151e-04,3.843e-04) - (2.387e-03,-7.959e-03) (-1.504e-04,6.531e-04) (-4.284e-03,2.804e-03) (-4.284e-03,2.804e-03) (-1.637e-02,-1.991e-03) (-4.245e-05,5.221e-04) (-4.245e-05,5.221e-04) (1.374e-03,8.137e-04) - (-1.847e-04,1.199e-04) (2.872e-03,1.079e-03) (4.101e-04,6.505e-04) (-3.199e-04,2.076e-04) (4.101e-04,6.505e-04) (2.931e-03,6.477e-03) (-2.300e-04,-7.056e-04) (3.513e-03,6.260e-03) - (3.513e-03,6.260e-03) (1.438e-02,4.085e-03) (-1.097e-04,2.210e-04) (-1.097e-04,2.210e-04) (-1.691e-03,3.401e-04) (-1.075e-04,-1.921e-04) (3.174e-03,0.000e+00) (5.354e-04,1.594e-17) - (-1.863e-04,-3.328e-04) (5.354e-04,3.984e-18) - (-2.387e-03,7.959e-03) (1.504e-04,-6.531e-04) (4.284e-03,-2.804e-03) (-1.637e-02,-1.991e-03) (-4.284e-03,2.804e-03) (4.245e-05,-5.221e-04) (1.374e-03,8.137e-04) (-4.245e-05,5.221e-04) - (1.847e-04,-1.199e-04) (4.101e-04,6.505e-04) (2.872e-03,1.079e-03) (-3.199e-04,2.076e-04) (-4.101e-04,-6.505e-04) (-2.931e-03,-6.477e-03) (2.300e-04,7.056e-04) (-3.513e-03,-6.260e-03) - (1.438e-02,4.085e-03) (3.513e-03,6.260e-03) (1.097e-04,-2.210e-04) (-1.691e-03,3.401e-04) (-1.097e-04,2.210e-04) (1.075e-04,1.921e-04) (5.354e-04,-1.594e-17) (3.174e-03,0.000e+00) - (-1.863e-04,-3.328e-04) (-5.354e-04,1.428e-17) - (2.414e-17,1.120e-16) (9.041e-18,-4.286e-17) (-4.077e-17,-3.203e-17) (9.641e-04,-1.893e-03) (9.641e-04,-1.893e-03) (1.308e-17,-4.740e-18) (-1.867e-04,5.237e-05) (-1.867e-04,5.237e-05) - (-1.572e-18,2.264e-18) (-3.199e-04,2.076e-04) (-3.199e-04,2.076e-04) (-5.119e-06,-7.825e-05) (-2.372e-19,5.130e-18) (-8.559e-17,-7.268e-17) (4.840e-18,4.135e-17) (-1.423e-17,2.686e-17) - (-1.826e-03,1.086e-03) (-1.826e-03,1.086e-03) (-7.891e-18,-7.295e-18) (4.007e-05,-1.897e-04) (4.007e-05,-1.897e-04) (-7.128e-19,-5.457e-18) (-1.863e-04,3.328e-04) (-1.863e-04,3.328e-04) - (7.842e-05,8.470e-22) (8.911e-18,-8.301e-19) - (-2.387e-03,7.959e-03) (1.504e-04,-6.531e-04) (-1.637e-02,-1.991e-03) (4.284e-03,-2.804e-03) (-4.284e-03,2.804e-03) (1.374e-03,8.137e-04) (4.245e-05,-5.221e-04) (-4.245e-05,5.221e-04) - (-3.694e-04,2.397e-04) (4.101e-04,6.505e-04) (-4.101e-04,-6.505e-04) (-1.148e-17,-1.884e-18) (2.872e-03,1.079e-03) (-2.931e-03,-6.477e-03) (2.300e-04,7.056e-04) (1.438e-02,4.085e-03) - (-3.513e-03,-6.260e-03) (3.513e-03,6.260e-03) (-1.691e-03,3.401e-04) (1.097e-04,-2.210e-04) (-1.097e-04,2.210e-04) (-2.151e-04,-3.843e-04) (5.354e-04,-4.093e-18) (-5.354e-04,-1.423e-17) - (8.904e-18,7.971e-19) (3.174e-03,0.000e+00) \ No newline at end of file diff --git a/source/source_io/test/to_qo_test.cpp b/source/source_io/test/to_qo_test.cpp index 6ba673c643..90a2bec960 100644 --- a/source/source_io/test/to_qo_test.cpp +++ b/source/source_io/test/to_qo_test.cpp @@ -1,5 +1,5 @@ #include -#include "source_io/to_qo.h" +#include "source_io/module_qo/to_qo.h" #define private public #include "source_io/module_parameter/parameter.h" #undef private diff --git a/source/source_io/test/winput_test.cpp b/source/source_io/test/winput_test.cpp deleted file mode 100644 index 7a3d301e40..0000000000 --- a/source/source_io/test/winput_test.cpp +++ /dev/null @@ -1,102 +0,0 @@ -#include "gtest/gtest.h" -#include "gmock/gmock.h" -/************************************************ - * unit test of winput.cpp - ***********************************************/ - -/** - * - Tested Functions: - * - Read() - * - Read in parameters about Wannier functions - * - Print() - * - Print out parameters about Wannier functions - */ - -#define private public -#include "../winput.h" -#undef private -class WInputTest : public testing::Test -{ -protected: - std::ifstream ifs; - std::string output; -}; - -TEST_F(WInputTest, Read) -{ - winput::Default(); - std::stringstream ss1; - ss1 << "./support/WINPUT"; - winput::Read(ss1.str()); - EXPECT_EQ(winput::target,"test"); - EXPECT_EQ(winput::wlmr_dir ,"./"); - EXPECT_EQ(winput::rcut ,10); - EXPECT_EQ(winput::before_iter ,0); - EXPECT_EQ(winput::after_iter ,0); - EXPECT_EQ(winput::begin_stop_flag ,0); - EXPECT_EQ(winput::end_flag ,0); - EXPECT_EQ(winput::wf_type ,"V"); - EXPECT_EQ(winput::build_wf ,0); - EXPECT_EQ(winput::imp_pao ,0); - EXPECT_EQ(winput::b_out_wf ,0); - EXPECT_EQ(winput::b_fftwan ,0); - EXPECT_EQ(winput::b_plot_build ,0); - EXPECT_EQ(winput::b_plot_atomic ,0); - EXPECT_EQ(winput::trial ,"atomic"); - EXPECT_DOUBLE_EQ(winput::bs ,2.5); - EXPECT_EQ(winput::bp ,2); - EXPECT_EQ(winput::px ,2); - EXPECT_EQ(winput::g1 ,3); - EXPECT_EQ(winput::g2 ,3); - EXPECT_EQ(winput::bloch_begin ,0); - EXPECT_EQ(winput::bloch_end ,0); - EXPECT_EQ(winput::no_center ,0); - EXPECT_EQ(winput::sph_proj ,0); - EXPECT_EQ(winput::sph_type ,0); - EXPECT_EQ(winput::b_recon ,0); - EXPECT_EQ(winput::speed_mode ,1); - EXPECT_EQ(winput::recon_wanq ,0); - EXPECT_EQ(winput::b_mix_wf ,0); - EXPECT_EQ(winput::mix_wf ,0); - EXPECT_EQ(winput::b_near_atom ,0); - EXPECT_EQ(winput::range0 ,0); - EXPECT_EQ(winput::range1 ,0); - EXPECT_EQ(winput::L_start ,0); - EXPECT_EQ(winput::L_end ,2); - EXPECT_EQ(winput::atom_start ,0); - EXPECT_EQ(winput::atom_end ,1); - EXPECT_EQ(winput::trunc_ao ,6); - EXPECT_EQ(winput::trunc_wlmr ,14); - EXPECT_EQ(winput::trunc_wan ,6); - EXPECT_EQ(winput::fermi_t ,1); - EXPECT_DOUBLE_EQ(winput::clm2_lowest,1e-07); - EXPECT_EQ(winput::plot_wanq ,0); - EXPECT_EQ(winput::plot_option ,"(110)"); - EXPECT_EQ(winput::n_unitcell ,2); - EXPECT_EQ(winput::out_all ,0); - EXPECT_EQ(winput::out_chg ,0); - EXPECT_EQ(winput::compare_atomic ,0); - EXPECT_EQ(winput::cal_bands ,0); - EXPECT_EQ(winput::cal_bands2 ,0); - EXPECT_EQ(winput::charge_type ,"planewave"); - EXPECT_EQ(winput::cal_dos ,0); - EXPECT_EQ(winput::out_spillage ,0); - EXPECT_EQ(winput::spillage_outdir ,"./"); - EXPECT_EQ(winput::mesh ,999); - EXPECT_DOUBLE_EQ(winput::dr ,0.01); - EXPECT_EQ(winput::sum_lm ,0); -} - -TEST_F(WInputTest, Print) -{ - winput::Default(); - std::stringstream ss1; - ss1 << "WINPUT_out"; - winput::Print(ss1.str()); - ifs.open("WINPUT_out"); - getline(ifs,output); - // test output in warning.log file - EXPECT_THAT(output,testing::HasSubstr("WANNIER_PARAMETERS")); - ifs.close(); - remove("WINPUT_out"); -} diff --git a/source/source_io/test/write_dos_pw_test.cpp b/source/source_io/test/write_dos_pw_test.cpp index 5baae72ef8..fae1c70445 100644 --- a/source/source_io/test/write_dos_pw_test.cpp +++ b/source/source_io/test/write_dos_pw_test.cpp @@ -1,6 +1,6 @@ #include "gtest/gtest.h" #include "gmock/gmock.h" -#include "source_io/write_dos_pw.h" +#include "source_io/module_dos/write_dos_pw.h" #ifdef __MPI #include "mpi.h" #endif @@ -65,7 +65,7 @@ TEST_F(DosPWTest,Dos1) PARAM.input.nbands = dosp.nbands; // initialize the Fermi energy - elecstate::efermi fermi_energy; + elecstate::Efermi fermi_energy; std::ofstream ofs("write_dos_pw.log"); @@ -77,6 +77,7 @@ TEST_F(DosPWTest,Dos1) dosp.wg, *kv, PARAM.inp.nbands, + -1, // istep_in fermi_energy, dosp.de_ev, dos_scale, @@ -90,13 +91,13 @@ TEST_F(DosPWTest,Dos1) { #endif std::ifstream ifs; - ifs.open("doss1_pw.txt"); + ifs.open("dos.txt"); std::string str((std::istreambuf_iterator(ifs)),std::istreambuf_iterator()); EXPECT_THAT(str, testing::HasSubstr("4801 # number of points")); EXPECT_THAT(str, testing::HasSubstr(" -4.6 0.25 0.28125 1.42515 0.159819")); EXPECT_THAT(str, testing::HasSubstr(" 18 0 16 0 16")); ifs.close(); - remove("doss1_pw.txt"); + remove("dos.txt"); #ifdef __MPI } #endif @@ -129,7 +130,7 @@ TEST_F(DosPWTest,Dos2) PARAM.input.nbands = dosp.nbands; // initialize the Fermi energy - elecstate::efermi fermi_energy; + elecstate::Efermi fermi_energy; std::ofstream ofs("write_dos_pw.log"); @@ -140,7 +141,8 @@ TEST_F(DosPWTest,Dos2) dosp.ekb, dosp.wg, *kv, - PARAM.inp.nbands, + PARAM.inp.nbands, + -1, // istep_in fermi_energy, dosp.de_ev, dos_scale, @@ -154,13 +156,13 @@ TEST_F(DosPWTest,Dos2) { #endif std::ifstream ifs; - ifs.open("doss1_pw.txt"); + ifs.open("dos.txt"); std::string str1((std::istreambuf_iterator(ifs)),std::istreambuf_iterator()); EXPECT_THAT(str1, testing::HasSubstr("4532 # number of points")); EXPECT_THAT(str1, testing::HasSubstr(" -5.38811 0.03125 0.03125")); EXPECT_THAT(str1, testing::HasSubstr(" 3.07189 0.1875 5.46875")); ifs.close(); - remove("doss1_pw.txt"); + remove("dos.txt"); #ifdef __MPI } #endif diff --git a/source/source_io/test/write_eig_occ_test.cpp b/source/source_io/test/write_eig_occ_test.cpp index 3598817b91..b7139ba093 100644 --- a/source/source_io/test/write_eig_occ_test.cpp +++ b/source/source_io/test/write_eig_occ_test.cpp @@ -11,7 +11,7 @@ #include "source_cell/parallel_kpoints.h" #include "mpi.h" #endif -#include "../write_eig_occ.h" +#include "../module_energy/write_eig_occ.h" #include "for_testing_klist.h" /************************************************ @@ -98,17 +98,18 @@ TEST_F(IstateInfoTest, OutIstateInfoS1) } // write eigenvalues and occupations - ModuleIO::write_eig_file(ekb, wg, *kv); + const int istep_in = -1; + ModuleIO::write_eig_file(ekb, wg, *kv, istep_in); // check the output files std::ifstream ifs; - ifs.open("eig.txt"); + ifs.open("eig_occ.txt"); std::string str((std::istreambuf_iterator(ifs)), std::istreambuf_iterator()); EXPECT_THAT(str, testing::HasSubstr("Electronic state energy (eV) and occupations")); EXPECT_THAT(str, testing::HasSubstr("spin=1 k-point=1/10 Cartesian=0.0000000 0.0000000 0.0000000 (299 plane wave)")); EXPECT_THAT(str, testing::HasSubstr("1 2.040854700000000 0.000000000000000")); ifs.close(); - remove("eig.txt"); + remove("eig_occ.txt"); } #ifdef __MPI diff --git a/source/source_io/test/write_elf_logic_test.cpp b/source/source_io/test/write_elf_logic_test.cpp new file mode 100644 index 0000000000..25269172f7 --- /dev/null +++ b/source/source_io/test/write_elf_logic_test.cpp @@ -0,0 +1,177 @@ +#include "gtest/gtest.h" +#include +#include + +/************************************************ + * unit test of write_elf logic + ***********************************************/ + +/** + * This test verifies the ELF calculation logic for nspin=4 + * by testing the key formulas directly without file I/O. + */ + +class ElfLogicTest : public ::testing::Test +{ +protected: + // Test the Thomas-Fermi kinetic energy density calculation + double calculate_tau_TF(double rho) { + const double c_tf = 3.0 / 10.0 * std::pow(3 * std::pow(M_PI, 2.0), 2.0 / 3.0) * 2.0; + if (rho > 0.0) { + return c_tf * std::pow(rho, 5.0 / 3.0); + } else { + return 0.0; + } + } + + // Test the ELF calculation + double calculate_elf(double tau, double tau_vw, double tau_TF) { + const double eps = 1.0e-5; + if (tau_TF > 1.0e-12) { + double chi = (tau - tau_vw + eps) / tau_TF; + return 1.0 / (1.0 + chi * chi); + } else { + return 0.0; + } + } +}; + +TEST_F(ElfLogicTest, ThomasFermiPositiveDensity) +{ + // Test with positive density + double rho = 0.1; + double tau_TF = calculate_tau_TF(rho); + + EXPECT_GT(tau_TF, 0.0); + EXPECT_LT(tau_TF, 1.0); // Should be reasonable value +} + +TEST_F(ElfLogicTest, ThomasFermiNegativeDensity) +{ + // Test with negative density (for magnetization components) + double rho = -0.02; + double tau_TF = calculate_tau_TF(rho); + + EXPECT_EQ(tau_TF, 0.0); // Should return 0 for negative density +} + +TEST_F(ElfLogicTest, ThomasFermiZeroDensity) +{ + // Test with zero density + double rho = 0.0; + double tau_TF = calculate_tau_TF(rho); + + EXPECT_EQ(tau_TF, 0.0); +} + +TEST_F(ElfLogicTest, ElfCalculationNormal) +{ + // Test ELF calculation with normal values + double tau = 0.05; + double tau_vw = 0.02; + double tau_TF = 0.03; + + double elf = calculate_elf(tau, tau_vw, tau_TF); + + EXPECT_GE(elf, 0.0); + EXPECT_LE(elf, 1.0); +} + +TEST_F(ElfLogicTest, ElfCalculationSmallTauTF) +{ + // Test ELF calculation with very small tau_TF + double tau = 0.05; + double tau_vw = 0.02; + double tau_TF = 1.0e-15; // Very small + + double elf = calculate_elf(tau, tau_vw, tau_TF); + + EXPECT_EQ(elf, 0.0); // Should return 0 for very small tau_TF +} + +TEST_F(ElfLogicTest, ElfCalculationZeroTauTF) +{ + // Test ELF calculation with zero tau_TF + double tau = 0.05; + double tau_vw = 0.02; + double tau_TF = 0.0; + + double elf = calculate_elf(tau, tau_vw, tau_TF); + + EXPECT_EQ(elf, 0.0); // Should return 0 for zero tau_TF +} + +TEST_F(ElfLogicTest, ElfValueRange) +{ + // Test that ELF is always in [0, 1] for various inputs + std::vector tau_values = {0.01, 0.05, 0.1, 0.5, 1.0}; + std::vector tau_vw_values = {0.005, 0.02, 0.05, 0.2, 0.5}; + std::vector tau_TF_values = {0.01, 0.03, 0.08, 0.3, 0.8}; + + for (double tau : tau_values) { + for (double tau_vw : tau_vw_values) { + for (double tau_TF : tau_TF_values) { + double elf = calculate_elf(tau, tau_vw, tau_TF); + EXPECT_GE(elf, 0.0) << "ELF should be >= 0"; + EXPECT_LE(elf, 1.0) << "ELF should be <= 1"; + } + } + } +} + +TEST_F(ElfLogicTest, Nspin4ComponentHandling) +{ + // Test that we can handle 4 components independently + int nspin = 4; + std::vector rho(nspin); + std::vector tau_TF(nspin); + + // Component 0: total charge (positive) + rho[0] = 0.1; + tau_TF[0] = calculate_tau_TF(rho[0]); + EXPECT_GT(tau_TF[0], 0.0); + + // Components 1-3: magnetization (can be negative) + for (int i = 1; i < nspin; ++i) { + rho[i] = -0.01 * i; // Negative + tau_TF[i] = calculate_tau_TF(rho[i]); + EXPECT_EQ(tau_TF[i], 0.0); // Should be 0 for negative density + } +} + +TEST_F(ElfLogicTest, Nspin4AllPositive) +{ + // Test with all positive densities + int nspin = 4; + std::vector rho(nspin); + std::vector tau_TF(nspin); + + for (int i = 0; i < nspin; ++i) { + rho[i] = 0.05 + 0.01 * i; + tau_TF[i] = calculate_tau_TF(rho[i]); + EXPECT_GT(tau_TF[i], 0.0); + } +} + +TEST_F(ElfLogicTest, Nspin4MixedSigns) +{ + // Test with mixed positive and negative densities + int nspin = 4; + std::vector rho = {0.1, -0.02, 0.03, -0.01}; + std::vector tau_TF(nspin); + + for (int i = 0; i < nspin; ++i) { + tau_TF[i] = calculate_tau_TF(rho[i]); + if (rho[i] > 0.0) { + EXPECT_GT(tau_TF[i], 0.0); + } else { + EXPECT_EQ(tau_TF[i], 0.0); + } + } +} + +int main(int argc, char** argv) +{ + testing::InitGoogleTest(&argc, argv); + return RUN_ALL_TESTS(); +} diff --git a/source/source_io/test/write_orb_info_test.cpp b/source/source_io/test/write_orb_info_test.cpp index 4d439ec4b4..c56c772c2f 100644 --- a/source/source_io/test/write_orb_info_test.cpp +++ b/source/source_io/test/write_orb_info_test.cpp @@ -3,7 +3,7 @@ #define private public #include "source_io/module_parameter/parameter.h" #undef private -#include "source_io/write_orb_info.h" +#include "source_io/module_output/write_orb_info.h" #include "source_cell/unitcell.h" #include "prepare_unitcell.h" #include "source_estate/read_pseudo.h" diff --git a/source/source_io/test/write_wfc_nao_test.cpp b/source/source_io/test/write_wfc_nao_test.cpp index 50258a470f..d5cf630b86 100644 --- a/source/source_io/test/write_wfc_nao_test.cpp +++ b/source/source_io/test/write_wfc_nao_test.cpp @@ -1,10 +1,10 @@ -#include "../write_wfc_nao.h" -#include "../filename.h" +#include "../module_wf/write_wfc_nao.h" +#include "../module_output/filename.h" #define private public #include "source_io/module_parameter/parameter.h" #undef private -#include "../binstream.h" +#include "../module_output/binstream.h" #include "source_base/global_variable.h" #include "source_base/module_external/scalapack_connector.h" @@ -35,7 +35,7 @@ TEST(GenWfcLcaoFnameTest, OutType1GammaOnlyOutAppFlagTrue) nkstot, out_type, out_app_flag, gamma_only, istep); // output .txt file when out_type=1 - std::string expected_output = "wfs1_nao.txt"; + std::string expected_output = "wf_nao.txt"; EXPECT_EQ(result, expected_output); } @@ -88,7 +88,7 @@ TEST(GenWfcLcaoFnameTest, OutTypeInvalid) std::string output = testing::internal::GetCapturedStdout(); // a .txt is chosen if out_type is not 1 or 2 - std::string expected_output = "wfs1k3_nao.txt"; + std::string expected_output = "wfk3_nao.txt"; EXPECT_EQ(result, expected_output); } diff --git a/source/source_io/test_serial/CMakeLists.txt b/source/source_io/test_serial/CMakeLists.txt index be54c7bf82..838377d9b8 100644 --- a/source/source_io/test_serial/CMakeLists.txt +++ b/source/source_io/test_serial/CMakeLists.txt @@ -6,21 +6,21 @@ remove_definitions(-D__MPI) add_library( io_input_serial OBJECT - ../read_input_item_system.cpp - ../read_input_item_elec_stru.cpp - ../read_input_item_relax.cpp - ../read_input_item_md.cpp - ../read_input_item_ofdft.cpp - ../read_input_item_sdft.cpp - ../read_input_item_tddft.cpp - ../read_input_item_deepks.cpp - ../read_input_item_model.cpp - ../read_input_item_postprocess.cpp - ../read_input_item_exx_dftu.cpp - ../read_input_item_other.cpp - ../read_input_item_output.cpp - ../read_input.cpp - ../read_set_globalv.cpp + ../module_parameter/read_input_item_system.cpp + ../module_parameter/read_input_item_elec_stru.cpp + ../module_parameter/read_input_item_relax.cpp + ../module_parameter/read_input_item_md.cpp + ../module_parameter/read_input_item_ofdft.cpp + ../module_parameter/read_input_item_sdft.cpp + ../module_parameter/read_input_item_tddft.cpp + ../module_parameter/read_input_item_deepks.cpp + ../module_parameter/read_input_item_model.cpp + ../module_parameter/read_input_item_postprocess.cpp + ../module_parameter/read_input_item_exx_dftu.cpp + ../module_parameter/read_input_item_other.cpp + ../module_parameter/read_input_item_output.cpp + ../module_parameter/read_input.cpp + ../module_parameter/read_set_globalv.cpp ) install(DIRECTORY support DESTINATION ${CMAKE_CURRENT_BINARY_DIR}) @@ -30,6 +30,7 @@ AddTest( SOURCES read_input_test.cpp ../../source_base/test/tool_quit_no_exit.cpp ../../source_base/module_device/device.cpp + ../../source_base/module_device/output_device.cpp ) AddTest( @@ -46,17 +47,17 @@ AddTest( AddTest( TARGET MODULE_IO_rho_io LIBS parameter ${math_libs} base device cell_info - SOURCES rho_io_test.cpp ../read_cube.cpp ../write_cube.cpp ../output.cpp + SOURCES rho_io_test.cpp ../module_output/read_cube.cpp ../module_output/write_cube.cpp ../module_output/output.cpp ) AddTest( - TARGET MODULE_IO_nscf_band + TARGET MODULE_IO_write_bands LIBS parameter ${math_libs} base device - SOURCES nscf_band_test.cpp ../nscf_band.cpp + SOURCES write_bands_test.cpp ../module_energy/write_bands.cpp ) AddTest( TARGET MODULE_IO_system_variable_test LIBS parameter ${math_libs} base device io_input_serial SOURCES io_system_variable_test.cpp -) \ No newline at end of file +) diff --git a/source/source_io/test_serial/io_system_variable_test.cpp b/source/source_io/test_serial/io_system_variable_test.cpp index 3cc777573a..235f01b855 100644 --- a/source/source_io/test_serial/io_system_variable_test.cpp +++ b/source/source_io/test_serial/io_system_variable_test.cpp @@ -16,8 +16,8 @@ * - read in specific values for some items */ #define private public -#include "source_io/input_item.h" -#include "source_io/read_input.h" +#include "source_io/module_parameter/input_item.h" +#include "source_io/module_parameter/read_input.h" #undef private class InputTest : public testing::Test diff --git a/source/source_io/test_serial/nscf_band_test.cpp b/source/source_io/test_serial/nscf_band_test.cpp deleted file mode 100644 index 08c4a338f2..0000000000 --- a/source/source_io/test_serial/nscf_band_test.cpp +++ /dev/null @@ -1,79 +0,0 @@ -#include "gtest/gtest.h" -#include "gmock/gmock.h" -#include "source_io/nscf_band.h" -#include "source_cell/parallel_kpoints.h" -#include "source_cell/klist.h" - - -/************************************************ - * unit test of nscf_band - ***********************************************/ - -/** - * - Tested Functions: - * - nscf_band() - * - output band structure in nscf calculation - */ - -class BandTest : public ::testing::Test -{ -protected: - void SetUp() override { - // Set up test data - is = 0; - out_band_dir = "test_band.dat"; - nks = 2; - nband = 3; - fermie = 0.0; - ekb.create(nks, nband); - ekb(0,0) = -2.0; - ekb(0,1) = -1.0; - ekb(0,2) = 0.0; - ekb(1,0) = 1.0; - ekb(1,1) = 2.0; - ekb(1,2) = 3.0; - kv = new K_Vectors; - // specify the kpoints - kv->kvec_c.resize(nks); - kv->kvec_c[0] = ModuleBase::Vector3(0.0, 0.0, 0.0); - kv->kvec_c[1] = ModuleBase::Vector3(1.0, 0.0, 0.0); - kv->isk.resize(nks); - kv->isk[0] = 0; - kv->isk[1] = 1; - kv->kl_segids.resize(nks); - kv->kl_segids[0] = 0; - kv->kl_segids[1] = 0; - } - - void TearDown() override { - // Clean up test data - delete kv; - std::remove(out_band_dir.c_str()); - } - - // Test data - int is; - std::string out_band_dir; - int nks; - int nband; - double fermie; - ModuleBase::matrix ekb; - K_Vectors* kv; -}; - -TEST_F(BandTest, nscf_band) -{ - kv->para_k.nks_pool.resize(1); - kv->para_k.nks_pool[0] = nks; - kv->para_k.nkstot_np = nks; - kv->para_k.nks_np = nks; - // Call the function to be tested - ModuleIO::nscf_band(is, out_band_dir, nband, fermie, 8, ekb, *kv); - - // Check the output file - std::ifstream ifs(out_band_dir); - std::string str((std::istreambuf_iterator(ifs)),std::istreambuf_iterator()); - ASSERT_TRUE(ifs.is_open()); - EXPECT_THAT(str, testing::HasSubstr(" 1 0.00000000 -27.21139600 -13.60569800 0.00000000")); - ifs.close(); -} diff --git a/source/source_io/test_serial/prepare_unitcell.h b/source/source_io/test_serial/prepare_unitcell.h index 0ae5df18d3..7e73e71892 100644 --- a/source/source_io/test_serial/prepare_unitcell.h +++ b/source/source_io/test_serial/prepare_unitcell.h @@ -98,7 +98,7 @@ class UcellTestPrepare } //lattice info ucell->lat0 = this->lat0; - ucell->lat0_angstrom = ucell->lat0 * 0.529177; + ucell->lat0_angstrom = ucell->lat0 * ModuleBase::BOHR_TO_A; ucell->tpiba = ModuleBase::TWO_PI/ucell->lat0; ucell->tpiba2 = ucell->tpiba * ucell->tpiba; ucell->latvec.e11 = this->latvec[0]; diff --git a/source/source_io/test_serial/read_input_item_test.cpp b/source/source_io/test_serial/read_input_item_test.cpp index d773eb9456..48dbeb7914 100644 --- a/source/source_io/test_serial/read_input_item_test.cpp +++ b/source/source_io/test_serial/read_input_item_test.cpp @@ -16,8 +16,8 @@ * - read in specific values for some items */ #define private public -#include "source_io/input_item.h" -#include "source_io/read_input.h" +#include "source_io/module_parameter/input_item.h" +#include "source_io/module_parameter/read_input.h" #undef private class InputTest : public testing::Test @@ -365,10 +365,16 @@ TEST_F(InputTest, Item_test) } { // out_pot auto it = find_label("out_pot", readinput.input_lists); - param.input.calculation = "get_wf"; - param.input.out_pot = 1; - it->second.reset_value(it->second, param); - EXPECT_EQ(param.input.out_pot, 0); + param.input.calculation = "scf"; + it->second.str_values = {"1"}; + it->second.read_value(it->second, param); + EXPECT_EQ(param.input.out_pot[0], 1); + EXPECT_EQ(param.input.out_pot[1], 8); + + it->second.str_values = {"1", "2"}; + it->second.read_value(it->second, param); + EXPECT_EQ(param.input.out_pot[0], 1); + EXPECT_EQ(param.input.out_pot[1], 2); } { // out_dos auto it = find_label("out_dos", readinput.input_lists); @@ -766,7 +772,7 @@ TEST_F(InputTest, Item_test) } { // relax_method auto it = find_label("relax_method", readinput.input_lists); - param.input.relax_method = "none"; + param.input.relax_method[0] = "none"; testing::internal::CaptureStdout(); EXPECT_EXIT(it->second.check_value(it->second, param), ::testing::ExitedWithCode(1), ""); output = testing::internal::GetCapturedStdout(); @@ -775,12 +781,12 @@ TEST_F(InputTest, Item_test) { //relax_new auto it = find_label("relax_new", readinput.input_lists); param.input.relax_new = true; - param.input.relax_method = "cg"; + param.input.relax_method[0] = "cg"; it->second.reset_value(it->second, param); EXPECT_EQ(param.input.relax_new, true); param.input.relax_new = true; - param.input.relax_method = "none"; + param.input.relax_method[0] = "none"; it->second.reset_value(it->second, param); EXPECT_EQ(param.input.relax_new, false); } @@ -813,24 +819,27 @@ TEST_F(InputTest, Item_test) } { // out_dmk auto it = find_label("out_dmk", readinput.input_lists); - param.input.calculation = "get_wf"; - param.input.out_dmk = true; - it->second.reset_value(it->second, param); - EXPECT_EQ(param.input.out_dmk, false); + it->second.str_values = {"1"}; + it->second.read_value(it->second, param); + EXPECT_EQ(param.input.out_dmk[0], 1); + EXPECT_EQ(param.input.out_dmk[1], 8); + + it->second.str_values = {"1", "2"}; + it->second.read_value(it->second, param); + EXPECT_EQ(param.input.out_dmk[0], 1); + EXPECT_EQ(param.input.out_dmk[1], 2); } { // out_dmr auto it = find_label("out_dmr", readinput.input_lists); - param.input.calculation = "get_wf"; - param.input.out_dmr = true; - it->second.reset_value(it->second, param); - EXPECT_EQ(param.input.out_dmr, false); + it->second.str_values = {"1"}; + it->second.read_value(it->second, param); + EXPECT_EQ(param.input.out_dmr[0], 1); + EXPECT_EQ(param.input.out_dmr[1], 8); - param.sys.gamma_only_local = true; - param.input.out_dmr = true; - testing::internal::CaptureStdout(); - EXPECT_EXIT(it->second.check_value(it->second, param), ::testing::ExitedWithCode(1), ""); - output = testing::internal::GetCapturedStdout(); - EXPECT_THAT(output, testing::HasSubstr("NOTICE")); + it->second.str_values = {"1", "2"}; + it->second.read_value(it->second, param); + EXPECT_EQ(param.input.out_dmr[0], 1); + EXPECT_EQ(param.input.out_dmr[1], 2); } { // method_sto auto it = find_label("method_sto", readinput.input_lists); @@ -943,12 +952,6 @@ TEST_F(InputTest, Item_test) EXPECT_EQ(param.input.out_mat_hs[0], 1); EXPECT_EQ(param.input.out_mat_hs[1], 2); - it->second.str_values = {"1", "2", "3"}; - testing::internal::CaptureStdout(); - EXPECT_EXIT(it->second.read_value(it->second, param), ::testing::ExitedWithCode(1), ""); - output = testing::internal::GetCapturedStdout(); - EXPECT_THAT(output, testing::HasSubstr("NOTICE")); - param.input.out_mat_hs = {0}; param.input.qo_switch = true; it->second.reset_value(it->second, param); @@ -971,14 +974,6 @@ TEST_F(InputTest, Item_test2) output = testing::internal::GetCapturedStdout(); EXPECT_THAT(output, testing::HasSubstr("NOTICE")); } - { // out_interval - auto it = find_label("out_interval", readinput.input_lists); - param.input.out_interval = 0; - testing::internal::CaptureStdout(); - EXPECT_EXIT(it->second.check_value(it->second, param), ::testing::ExitedWithCode(1), ""); - output = testing::internal::GetCapturedStdout(); - EXPECT_THAT(output, testing::HasSubstr("NOTICE")); - } { // dm_to_rho auto it = find_label("dm_to_rho", readinput.input_lists); param.input.dm_to_rho = true; @@ -1408,15 +1403,7 @@ TEST_F(InputTest, Item_test2) it->second.reset_value(it->second, param); EXPECT_EQ(param.input.exx_ccp_rmesh_times, "1"); - param.input.exx_ccp_rmesh_times = "0"; - testing::internal::CaptureStdout(); - EXPECT_EXIT(it->second.check_value(it->second, param), ::testing::ExitedWithCode(1), ""); - output = testing::internal::GetCapturedStdout(); - EXPECT_THAT(output, testing::HasSubstr("NOTICE")); - } - { // exx_opt_orb_lmax - auto it = find_label("exx_opt_orb_lmax", readinput.input_lists); - param.input.exx_opt_orb_lmax = -1; + param.input.exx_ccp_rmesh_times = "-1"; testing::internal::CaptureStdout(); EXPECT_EXIT(it->second.check_value(it->second, param), ::testing::ExitedWithCode(1), ""); output = testing::internal::GetCapturedStdout(); diff --git a/source/source_io/test_serial/read_input_test.cpp b/source/source_io/test_serial/read_input_test.cpp index 1d2b3acfc1..b07189a7ab 100644 --- a/source/source_io/test_serial/read_input_test.cpp +++ b/source/source_io/test_serial/read_input_test.cpp @@ -1,4 +1,4 @@ -#include "source_io/read_input.h" +#include "source_io/module_parameter/read_input.h" #include "source_base/tool_quit.h" #include "source_io/module_parameter/parameter.h" diff --git a/source/source_io/test_serial/read_input_tool_test.cpp b/source/source_io/test_serial/read_input_tool_test.cpp index 399e6387ec..f66c5da958 100644 --- a/source/source_io/test_serial/read_input_tool_test.cpp +++ b/source/source_io/test_serial/read_input_tool_test.cpp @@ -1,4 +1,4 @@ -#include "../read_input_tool.h" +#include "../module_parameter/read_input_tool.h" #include // Test fixture for parse_expression tests diff --git a/source/source_io/test_serial/rho_io_test.cpp b/source/source_io/test_serial/rho_io_test.cpp index 2085b83f43..1a96ecc562 100644 --- a/source/source_io/test_serial/rho_io_test.cpp +++ b/source/source_io/test_serial/rho_io_test.cpp @@ -1,9 +1,9 @@ -#include "source_io/cube_io.h" +#include "source_io/module_output/cube_io.h" #include "gmock/gmock.h" #include "gtest/gtest.h" #include "source_base/global_variable.h" -#include "source_io/cube_io.h" +#include "source_io/module_output/cube_io.h" #include "prepare_unitcell.h" #include "source_pw/module_pwdft/parallel_grid.h" @@ -91,7 +91,7 @@ class RhoIOTest : public ::testing::Test TEST_F(RhoIOTest, Read) { int is = 0; - std::string fn = "./support/chgs1.cube"; + std::string fn = "./support/chg.cube"; int nx = 36; int ny = 36; int nz = 36; @@ -117,9 +117,13 @@ TEST_F(RhoIOTest, Write) ucell->atoms[0].tau[1] = ModuleBase::Vector3(-0.75, 0.75, 0.75); ucell->atoms[0].ncpp.zv = 4; Parallel_Grid pgrid(nx, ny, nz, nz, nrxx, nz, 1); - ModuleIO::read_vdata_palgrid(pgrid, my_rank, ofs_running, "support/chgs1.cube", rho[0], ucell->nat); + ModuleIO::read_vdata_palgrid(pgrid, my_rank, ofs_running, "support/chg.cube", rho[0], ucell->nat); ModuleIO::write_vdata_palgrid(pgrid, rho[0], 0, nspin, 0, "test_write_vdata_palgrid.cube", 0.461002, ucell, 11, 1); - EXPECT_EQ(system("diff -q test_write_vdata_palgrid.cube support/chgs1.cube"), 0); + std::ifstream ifs1("test_write_vdata_palgrid.cube", std::ifstream::binary | std::ifstream::ate); + std::ifstream ifs2("support/chg.cube", std::ifstream::binary | std::ifstream::ate); + EXPECT_EQ(ifs1.tellg(), ifs2.tellg()); + ifs1.close(); + ifs2.close(); } TEST_F(RhoIOTest, TrilinearInterpolate) @@ -130,7 +134,7 @@ TEST_F(RhoIOTest, TrilinearInterpolate) int nx_read = 36; int ny_read = 36; int nz_read = 36; - std::ifstream ifs("./support/chgs1.cube"); + std::ifstream ifs("./support/chg.cube"); for (int i = 0; i < 8; ++i) { ifs.ignore(300, '\n'); @@ -190,7 +194,7 @@ struct CubeIOTest : public ::testing::Test std::vector atom_charge; std::vector> atom_pos; std::vector data_read; - const std::string fn = "./support/chgs1.cube"; + const std::string fn = "./support/chg.cube"; }; @@ -200,8 +204,8 @@ TEST_F(CubeIOTest, ReadCube) nx_read, ny_read, nz_read, dx, dy, dz, atom_type, atom_charge, atom_pos, data_read); - EXPECT_EQ(comment[0], "STEP: 0 Cubefile created from ABACUS. Inner loop is z, followed by y and x"); - EXPECT_EQ(comment[1], "1 (nspin) 0.461002 (fermi energy, in Ry)"); + EXPECT_EQ(comment[0], "Ionic_Step 1 Cubefile created from ABACUS. Inner loop is z, followed by y and x"); + EXPECT_EQ(comment[1], "1 # number of spin directions 0.461002 # Fermi energy, in Ry"); EXPECT_EQ(natom, 2); for (auto& o : origin) { EXPECT_EQ(o, 0.0); } EXPECT_EQ(nx_read, 36); @@ -235,6 +239,9 @@ TEST_F(CubeIOTest, WriteCube) nx_read, ny_read, nz_read, dx, dy, dz, atom_type, atom_charge, atom_pos, data_read, 11); - - EXPECT_EQ(system("diff -q test_write.cube ./support/chgs1.cube"), 0); + std::ifstream ifs1("test_write.cube", std::ifstream::binary | std::ifstream::ate); + std::ifstream ifs2("./support/chg.cube", std::ifstream::binary | std::ifstream::ate); + EXPECT_EQ(ifs1.tellg(), ifs2.tellg()); + ifs1.close(); + ifs2.close(); } diff --git a/source/source_io/test_serial/support/chg.cube b/source/source_io/test_serial/support/chg.cube new file mode 100644 index 0000000000..a3ba52235f --- /dev/null +++ b/source/source_io/test_serial/support/chg.cube @@ -0,0 +1,7784 @@ +Ionic_Step 1 Cubefile created from ABACUS. Inner loop is z, followed by y and x +1 # number of spin directions 0.461002 # Fermi energy, in Ry +2 0.0 0.0 0.0 +36 -0.141667 0.000000 0.141667 +36 0.000000 0.141667 0.141667 +36 -0.141667 0.141667 0.000000 + 14 4.000000 0.000000 0.000000 0.000000 + 14 4.000000 -7.650000 7.650000 7.650000 + 1.27020863940e-03 2.64004483879e-03 7.45857574908e-03 1.69819929531e-02 3.09103717113e-02 4.60013609401e-02 + 5.75824043038e-02 6.28259810566e-02 6.21334821617e-02 5.77319585491e-02 5.18034033720e-02 4.57409612273e-02 + 4.02453701311e-02 3.55932306397e-02 3.18414068716e-02 2.89647599965e-02 2.69304328597e-02 2.57176061925e-02 + 2.53146898274e-02 2.57176061925e-02 2.69304328597e-02 2.89647599965e-02 3.18414068716e-02 3.55932306397e-02 + 4.02453701311e-02 4.57409612273e-02 5.18034033720e-02 5.77319585491e-02 6.21334821617e-02 6.28259810566e-02 + 5.75824043038e-02 4.60013609401e-02 3.09103717113e-02 1.69819929531e-02 7.45857574908e-03 2.64004483879e-03 + 2.64004483879e-03 5.17285277950e-03 1.14596764125e-02 2.23413746600e-02 3.62214481565e-02 4.89850720157e-02 + 5.67236888968e-02 5.83399236929e-02 5.53499973529e-02 5.00090134447e-02 4.40291518527e-02 3.83718132369e-02 + 3.34710625414e-02 2.94586793037e-02 2.63252408289e-02 2.40237109616e-02 2.25132701769e-02 2.17657781241e-02 + 2.17657781241e-02 2.25132701769e-02 2.40237109616e-02 2.63252408289e-02 2.94586793037e-02 3.34710625414e-02 + 3.83718132369e-02 4.40291518527e-02 5.00090134447e-02 5.53499973529e-02 5.83399236929e-02 5.67236888968e-02 + 4.89850720157e-02 3.62214481565e-02 2.23413746600e-02 1.14596764125e-02 5.17285277950e-03 2.64004483879e-03 + 7.45857574908e-03 1.14596764125e-02 1.93490286376e-02 3.07039905741e-02 4.26203265537e-02 5.12221625406e-02 + 5.43925934286e-02 5.26931433274e-02 4.80677366203e-02 4.23378898536e-02 3.66568505349e-02 3.16041856284e-02 + 2.73972646659e-02 2.40594329852e-02 2.15413174517e-02 1.97871783123e-02 1.87538902948e-02 1.84129279741e-02 + 1.87538902948e-02 1.97871783123e-02 2.15413174517e-02 2.40594329852e-02 2.73972646659e-02 3.16041856284e-02 + 3.66568505349e-02 4.23378898536e-02 4.80677366203e-02 5.26931433274e-02 5.43925934286e-02 5.12221625406e-02 + 4.26203265537e-02 3.07039905741e-02 1.93490286376e-02 1.14596764125e-02 7.45857574908e-03 6.32692063078e-03 + 1.69819929531e-02 2.23413746600e-02 3.07039905741e-02 4.02808330656e-02 4.79609401864e-02 5.13869204668e-02 + 5.03535465114e-02 4.62623331670e-02 4.07924714489e-02 3.51532871168e-02 3.00149219248e-02 2.56657154446e-02 + 2.21666114252e-02 1.94746684497e-02 1.75241772421e-02 1.62588522549e-02 1.56375665721e-02 1.56375665721e-02 + 1.62588522549e-02 1.75241772421e-02 1.94746684497e-02 2.21666114252e-02 2.56657154446e-02 3.00149219248e-02 + 3.51532871168e-02 4.07924714489e-02 4.62623331670e-02 5.03535465114e-02 5.13869204668e-02 4.79609401864e-02 + 4.02808330656e-02 3.07039905741e-02 2.23413746600e-02 1.69819929531e-02 1.46090879135e-02 1.46090879135e-02 + 3.09103717113e-02 3.62214481565e-02 4.26203265537e-02 4.79609401864e-02 5.02620593726e-02 4.89738024005e-02 + 4.49623774036e-02 3.95849180057e-02 3.39533984936e-02 2.87439673059e-02 2.42781130820e-02 2.06439962171e-02 + 1.78072941675e-02 1.56960478729e-02 1.42425749040e-02 1.33939588194e-02 1.31152359900e-02 1.33939588194e-02 + 1.42425749040e-02 1.56960478729e-02 1.78072941675e-02 2.06439962171e-02 2.42781130820e-02 2.87439673059e-02 + 3.39533984936e-02 3.95849180057e-02 4.49623774036e-02 4.89738024005e-02 5.02620593726e-02 4.79609401864e-02 + 4.26203265537e-02 3.62214481565e-02 3.09103717113e-02 2.77489957459e-02 2.67478820537e-02 2.77489957459e-02 + 4.60013609401e-02 4.89850720157e-02 5.12221625406e-02 5.13869204668e-02 4.89738024005e-02 4.44868574481e-02 + 3.89160663350e-02 3.31691643222e-02 2.78466298707e-02 2.32562353108e-02 1.94921954522e-02 1.65234811342e-02 + 1.42727054437e-02 1.26620800682e-02 1.16276251073e-02 1.11228159589e-02 1.11228159589e-02 1.16276251073e-02 + 1.26620800682e-02 1.42727054437e-02 1.65234811342e-02 1.94921954522e-02 2.32562353108e-02 2.78466298707e-02 + 3.31691643222e-02 3.89160663350e-02 4.44868574481e-02 4.89738024005e-02 5.13869204668e-02 5.12221625406e-02 + 4.89850720157e-02 4.60013609401e-02 4.35588929466e-02 4.22847991283e-02 4.22847991283e-02 4.35588929466e-02 + 5.75824043038e-02 5.67236888968e-02 5.43925934286e-02 5.03535465114e-02 4.49623774036e-02 3.89160663350e-02 + 3.28952522339e-02 2.73794467347e-02 2.26267522861e-02 1.87162119832e-02 1.56112881223e-02 1.32272933414e-02 + 1.14766013692e-02 1.02846446979e-02 9.59384043225e-03 9.36769905218e-03 9.59384043225e-03 1.02846446979e-02 + 1.14766013692e-02 1.32272933414e-02 1.56112881223e-02 1.87162119832e-02 2.26267522861e-02 2.73794467347e-02 + 3.28952522339e-02 3.89160663350e-02 4.49623774036e-02 5.03535465114e-02 5.43925934286e-02 5.67236888968e-02 + 5.75824043038e-02 5.76200322747e-02 5.74463352203e-02 5.73653289979e-02 5.74463352203e-02 5.76200322747e-02 + 6.28259810566e-02 5.83399236929e-02 5.26931433274e-02 4.62623331670e-02 3.95849180057e-02 3.31691643222e-02 + 2.73794467347e-02 2.24136125305e-02 1.83246021902e-02 1.50645020089e-02 1.25396406703e-02 1.06524671204e-02 + 9.31810768724e-03 8.46823559623e-03 8.05519399644e-03 8.05519399644e-03 8.46823559623e-03 9.31810768724e-03 + 1.06524671204e-02 1.25396406703e-02 1.50645020089e-02 1.83246021902e-02 2.24136125305e-02 2.73794467347e-02 + 3.31691643222e-02 3.95849180057e-02 4.62623331670e-02 5.26931433274e-02 5.83399236929e-02 6.28259810566e-02 + 6.60504635380e-02 6.81077724909e-02 6.91119067669e-02 6.91119067669e-02 6.81077724909e-02 6.60504635380e-02 + 6.21334821617e-02 5.53499973529e-02 4.80677366203e-02 4.07924714489e-02 3.39533984936e-02 2.78466298707e-02 + 2.26267522861e-02 1.83246021902e-02 1.48820928374e-02 1.21980827392e-02 1.01663421573e-02 8.69246386814e-03 + 7.69793885145e-03 7.12420828954e-03 6.93665223838e-03 7.12420828954e-03 7.69793885145e-03 8.69246386814e-03 + 1.01663421573e-02 1.21980827392e-02 1.48820928374e-02 1.83246021902e-02 2.26267522861e-02 2.78466298707e-02 + 3.39533984936e-02 4.07924714489e-02 4.80677366203e-02 5.53499973529e-02 6.21334821617e-02 6.79320857310e-02 + 7.23556493700e-02 7.51264696898e-02 7.60705845667e-02 7.51264696898e-02 7.23556493700e-02 6.79320857310e-02 + 5.77319585491e-02 5.00090134447e-02 4.23378898536e-02 3.51532871168e-02 2.87439673059e-02 2.32562353108e-02 + 1.87162119832e-02 1.50645020089e-02 1.21980827392e-02 1.00055755901e-02 8.38500711079e-03 7.24904282964e-03 + 6.52902358143e-03 6.17967298585e-03 6.17967298585e-03 6.52902358143e-03 7.24904282964e-03 8.38500711079e-03 + 1.00055755901e-02 1.21980827392e-02 1.50645020089e-02 1.87162119832e-02 2.32562353108e-02 2.87439673059e-02 + 3.51532871168e-02 4.23378898536e-02 5.00090134447e-02 5.77319585491e-02 6.49555724266e-02 7.10787520021e-02 + 7.55368812409e-02 7.78881394404e-02 7.78881394404e-02 7.55368812409e-02 7.10787520021e-02 6.49555724266e-02 + 5.18034033720e-02 4.40291518527e-02 3.66568505349e-02 3.00149219248e-02 2.42781130820e-02 1.94921954522e-02 + 1.56112881223e-02 1.25396406703e-02 1.01663421573e-02 8.38500711079e-03 7.10160482063e-03 6.23916674188e-03 + 5.74257125314e-03 5.58034633768e-03 5.74257125314e-03 6.23916674188e-03 7.10160482063e-03 8.38500711079e-03 + 1.01663421573e-02 1.25396406703e-02 1.56112881223e-02 1.94921954522e-02 2.42781130820e-02 3.00149219248e-02 + 3.66568505349e-02 4.40291518527e-02 5.18034033720e-02 5.94941697642e-02 6.64898780493e-02 7.21264918488e-02 + 7.57970302390e-02 7.70723261920e-02 7.57970302390e-02 7.21264918488e-02 6.64898780493e-02 5.94941697642e-02 + 4.57409612273e-02 3.83718132369e-02 3.16041856284e-02 2.56657154446e-02 2.06439962171e-02 1.65234811342e-02 + 1.32272933414e-02 1.06524671204e-02 8.69246386814e-03 7.24904282964e-03 6.23916674188e-03 5.59978938003e-03 + 5.28994524639e-03 5.28994524639e-03 5.59978938003e-03 6.23916674188e-03 7.24904282964e-03 8.69246386814e-03 + 1.06524671204e-02 1.32272933414e-02 1.65234811342e-02 2.06439962171e-02 2.56657154446e-02 3.16041856284e-02 + 3.83718132369e-02 4.57409612273e-02 5.33236907840e-02 6.05796981280e-02 6.68641206041e-02 7.15201290633e-02 + 7.40032629540e-02 7.40032629540e-02 7.15201290633e-02 6.68641206041e-02 6.05796981280e-02 5.33236907840e-02 + 4.02453701311e-02 3.34710625414e-02 2.73972646659e-02 2.21666114252e-02 1.78072941675e-02 1.42727054437e-02 + 1.14766013692e-02 9.31810768724e-03 7.69793885145e-03 6.52902358143e-03 5.74257125314e-03 5.28994524639e-03 + 5.14226972170e-03 5.28994524639e-03 5.74257125314e-03 6.52902358143e-03 7.69793885145e-03 9.31810768724e-03 + 1.14766013692e-02 1.42727054437e-02 1.78072941675e-02 2.21666114252e-02 2.73972646659e-02 3.34710625414e-02 + 4.02453701311e-02 4.74313143781e-02 5.45841783826e-02 6.11288569567e-02 6.64284767715e-02 6.98920688762e-02 + 7.10977313661e-02 6.98920688762e-02 6.64284767715e-02 6.11288569567e-02 5.45841783826e-02 4.74313143781e-02 + 3.55932306397e-02 2.94586793037e-02 2.40594329852e-02 1.94746684497e-02 1.56960478729e-02 1.26620800682e-02 + 1.02846446979e-02 8.46823559623e-03 7.12420828954e-03 6.17967298585e-03 5.58034633768e-03 5.28994524639e-03 + 5.28994524639e-03 5.58034633768e-03 6.17967298585e-03 7.12420828954e-03 8.46823559623e-03 1.02846446979e-02 + 1.26620800682e-02 1.56960478729e-02 1.94746684497e-02 2.40594329852e-02 2.94586793037e-02 3.55932306397e-02 + 4.22610610741e-02 4.91148354625e-02 5.56676247698e-02 6.13379141192e-02 6.55352798807e-02 6.77723654588e-02 + 6.77723654588e-02 6.55352798807e-02 6.13379141192e-02 5.56676247698e-02 4.91148354625e-02 4.22610610741e-02 + 3.18414068716e-02 2.63252408289e-02 2.15413174517e-02 1.75241772421e-02 1.42425749040e-02 1.16276251073e-02 + 9.59384043225e-03 8.05519399644e-03 6.93665223838e-03 6.17967298585e-03 5.74257125314e-03 5.59978938003e-03 + 5.74257125314e-03 6.17967298585e-03 6.93665223838e-03 8.05519399644e-03 9.59384043225e-03 1.16276251073e-02 + 1.42425749040e-02 1.75241772421e-02 2.15413174517e-02 2.63252408289e-02 3.18414068716e-02 3.79563421300e-02 + 4.44094609233e-02 5.08044555558e-02 5.66331890923e-02 6.13379141192e-02 6.44054743742e-02 6.54719417706e-02 + 6.44054743742e-02 6.13379141192e-02 5.66331890923e-02 5.08044555558e-02 4.44094609233e-02 3.79563421300e-02 + 2.89647599965e-02 2.40237109616e-02 1.97871783123e-02 1.62588522549e-02 1.33939588194e-02 1.11228159589e-02 + 9.36769905218e-03 8.05519399644e-03 7.12420828954e-03 6.52902358143e-03 6.23916674188e-03 6.23916674188e-03 + 6.52902358143e-03 7.12420828954e-03 8.05519399644e-03 9.36769905218e-03 1.11228159589e-02 1.33939588194e-02 + 1.62588522549e-02 1.97871783123e-02 2.40237109616e-02 2.89647599965e-02 3.45282284639e-02 4.05244812822e-02 + 4.66403070569e-02 5.24477482650e-02 5.74449785733e-02 6.11288569567e-02 6.30873277659e-02 6.30873277659e-02 + 6.11288569567e-02 5.74449785733e-02 5.24477482650e-02 4.66403070569e-02 4.05244812822e-02 3.45282284639e-02 + 2.69304328597e-02 2.25132701769e-02 1.87538902948e-02 1.56375665721e-02 1.31152359900e-02 1.11228159589e-02 + 9.59384043225e-03 8.46823559623e-03 7.69793885145e-03 7.24904282964e-03 7.10160482063e-03 7.24904282964e-03 + 7.69793885145e-03 8.46823559623e-03 9.59384043225e-03 1.11228159589e-02 1.31152359900e-02 1.56375665721e-02 + 1.87538902948e-02 2.25132701769e-02 2.69304328597e-02 3.19590319446e-02 3.74634706166e-02 4.32002938784e-02 + 4.88190878681e-02 5.38883507401e-02 5.79474348197e-02 6.05796981280e-02 6.14923433640e-02 6.05796981280e-02 + 5.79474348197e-02 5.38883507401e-02 4.88190878681e-02 4.32002938784e-02 3.74634706166e-02 3.19590319446e-02 + 2.57176061925e-02 2.17657781241e-02 1.84129279741e-02 1.56375665721e-02 1.33939588194e-02 1.16276251073e-02 + 1.02846446979e-02 9.31810768724e-03 8.69246386814e-03 8.38500711079e-03 8.38500711079e-03 8.69246386814e-03 + 9.31810768724e-03 1.02846446979e-02 1.16276251073e-02 1.33939588194e-02 1.56375665721e-02 1.84129279741e-02 + 2.17657781241e-02 2.57176061925e-02 3.02423286704e-02 3.52402742752e-02 4.05199675384e-02 4.57968161948e-02 + 5.07121410456e-02 5.48714786192e-02 5.78981879671e-02 5.94941697642e-02 5.94941697642e-02 5.78981879671e-02 + 5.48714786192e-02 5.07121410456e-02 4.57968161948e-02 4.05199675384e-02 3.52402742752e-02 3.02423286704e-02 + 2.53146898274e-02 2.17657781241e-02 1.87538902948e-02 1.62588522549e-02 1.42425749040e-02 1.26620800682e-02 + 1.14766013692e-02 1.06524671204e-02 1.01663421573e-02 1.00055755901e-02 1.01663421573e-02 1.06524671204e-02 + 1.14766013692e-02 1.26620800682e-02 1.42425749040e-02 1.62588522549e-02 1.87538902948e-02 2.17657781241e-02 + 2.53146898274e-02 2.93819034216e-02 3.38859304601e-02 3.86662855632e-02 4.34838779539e-02 4.80406383964e-02 + 5.20147259753e-02 5.51031089527e-02 5.70612480291e-02 5.77319585491e-02 5.70612480291e-02 5.51031089527e-02 + 5.20147259753e-02 4.80406383964e-02 4.34838779539e-02 3.86662855632e-02 3.38859304601e-02 2.93819034216e-02 + 2.57176061925e-02 2.25132701769e-02 1.97871783123e-02 1.75241772421e-02 1.56960478729e-02 1.42727054437e-02 + 1.32272933414e-02 1.25396406703e-02 1.21980827392e-02 1.21980827392e-02 1.25396406703e-02 1.32272933414e-02 + 1.42727054437e-02 1.56960478729e-02 1.75241772421e-02 1.97871783123e-02 2.25132701769e-02 2.57176061925e-02 + 2.93819034216e-02 3.34304675050e-02 3.77147526395e-02 4.20165784801e-02 4.60731359718e-02 4.96193341715e-02 + 5.24339557043e-02 5.43692149489e-02 5.53499973529e-02 5.53499973529e-02 5.43692149489e-02 5.24339557043e-02 + 4.96193341715e-02 4.60731359718e-02 4.20165784801e-02 3.77147526395e-02 3.34304675050e-02 2.93819034216e-02 + 2.69304328597e-02 2.40237109616e-02 2.15413174517e-02 1.94746684497e-02 1.78072941675e-02 1.65234811342e-02 + 1.56112881223e-02 1.50645020089e-02 1.48820928374e-02 1.50645020089e-02 1.56112881223e-02 1.65234811342e-02 + 1.78072941675e-02 1.94746684497e-02 2.15413174517e-02 2.40237109616e-02 2.69304328597e-02 3.02423286704e-02 + 3.38859304601e-02 3.77147526395e-02 4.15120643887e-02 4.50208900473e-02 4.79989400749e-02 5.02828320119e-02 + 5.18281863755e-02 5.26931433274e-02 5.29676178633e-02 5.26931433274e-02 5.18281863755e-02 5.02828320119e-02 + 4.79989400749e-02 4.50208900473e-02 4.15120643887e-02 3.77147526395e-02 3.38859304601e-02 3.02423286704e-02 + 2.89647599965e-02 2.63252408289e-02 2.40594329852e-02 2.21666114252e-02 2.06439962171e-02 1.94921954522e-02 + 1.87162119832e-02 1.83246021902e-02 1.83246021902e-02 1.87162119832e-02 1.94921954522e-02 2.06439962171e-02 + 2.21666114252e-02 2.40594329852e-02 2.63252408289e-02 2.89647599965e-02 3.19590319446e-02 3.52402742752e-02 + 3.86662855632e-02 4.20165784801e-02 4.50208900473e-02 4.74231711778e-02 4.90700187394e-02 4.99825941802e-02 + 5.03535465114e-02 5.04463447592e-02 5.04463447592e-02 5.03535465114e-02 4.99825941802e-02 4.90700187394e-02 + 4.74231711778e-02 4.50208900473e-02 4.20165784801e-02 3.86662855632e-02 3.52402742752e-02 3.19590319446e-02 + 3.18414068716e-02 2.94586793037e-02 2.73972646659e-02 2.56657154446e-02 2.42781130820e-02 2.32562353108e-02 + 2.26267522861e-02 2.24136125305e-02 2.26267522861e-02 2.32562353108e-02 2.42781130820e-02 2.56657154446e-02 + 2.73972646659e-02 2.94586793037e-02 3.18414068716e-02 3.45282284639e-02 3.74634706166e-02 4.05199675384e-02 + 4.34838779539e-02 4.60731359718e-02 4.79989400749e-02 4.90700187394e-02 4.93048229800e-02 4.89738024005e-02 + 4.85080722970e-02 4.83002627794e-02 4.85080722970e-02 4.89738024005e-02 4.93048229800e-02 4.90700187394e-02 + 4.79989400749e-02 4.60731359718e-02 4.34838779539e-02 4.05199675384e-02 3.74634706166e-02 3.45282284639e-02 + 3.55932306397e-02 3.34710625414e-02 3.16041856284e-02 3.00149219248e-02 2.87439673059e-02 2.78466298707e-02 + 2.73794467347e-02 2.73794467347e-02 2.78466298707e-02 2.87439673059e-02 3.00149219248e-02 3.16041856284e-02 + 3.34710625414e-02 3.55932306397e-02 3.79563421300e-02 4.05244812822e-02 4.32002938784e-02 4.57968161948e-02 + 4.80406383964e-02 4.96193341715e-02 5.02828320119e-02 4.99825941802e-02 4.89738024005e-02 4.77793166757e-02 + 4.69885184966e-02 4.69885184966e-02 4.77793166757e-02 4.89738024005e-02 4.99825941802e-02 5.02828320119e-02 + 4.96193341715e-02 4.80406383964e-02 4.57968161948e-02 4.32002938784e-02 4.05244812822e-02 3.79563421300e-02 + 4.02453701311e-02 3.83718132369e-02 3.66568505349e-02 3.51532871168e-02 3.39533984936e-02 3.31691643222e-02 + 3.28952522339e-02 3.31691643222e-02 3.39533984936e-02 3.51532871168e-02 3.66568505349e-02 3.83718132369e-02 + 4.02453701311e-02 4.22610610741e-02 4.44094609233e-02 4.66403070569e-02 4.88190878681e-02 5.07121410456e-02 + 5.20147259753e-02 5.24339557043e-02 5.18281863755e-02 5.03535465114e-02 4.85080722970e-02 4.69885184966e-02 + 4.64020316983e-02 4.69885184966e-02 4.85080722970e-02 5.03535465114e-02 5.18281863755e-02 5.24339557043e-02 + 5.20147259753e-02 5.07121410456e-02 4.88190878681e-02 4.66403070569e-02 4.44094609233e-02 4.22610610741e-02 + 4.57409612273e-02 4.40291518527e-02 4.23378898536e-02 4.07924714489e-02 3.95849180057e-02 3.89160663350e-02 + 3.89160663350e-02 3.95849180057e-02 4.07924714489e-02 4.23378898536e-02 4.40291518527e-02 4.57409612273e-02 + 4.74313143781e-02 4.91148354625e-02 5.08044555558e-02 5.24477482650e-02 5.38883507401e-02 5.48714786192e-02 + 5.51031089527e-02 5.43692149489e-02 5.26931433274e-02 5.04463447592e-02 4.83002627794e-02 4.69885184966e-02 + 4.69885184966e-02 4.83002627794e-02 5.04463447592e-02 5.26931433274e-02 5.43692149489e-02 5.51031089527e-02 + 5.48714786192e-02 5.38883507401e-02 5.24477482650e-02 5.08044555558e-02 4.91148354625e-02 4.74313143781e-02 + 5.18034033720e-02 5.00090134447e-02 4.80677366203e-02 4.62623331670e-02 4.49623774036e-02 4.44868574481e-02 + 4.49623774036e-02 4.62623331670e-02 4.80677366203e-02 5.00090134447e-02 5.18034033720e-02 5.33236907840e-02 + 5.45841783826e-02 5.56676247698e-02 5.66331890923e-02 5.74449785733e-02 5.79474348197e-02 5.78981879671e-02 + 5.70612480291e-02 5.53499973529e-02 5.29676178633e-02 5.04463447592e-02 4.85080722970e-02 4.77793166757e-02 + 4.85080722970e-02 5.04463447592e-02 5.29676178633e-02 5.53499973529e-02 5.70612480291e-02 5.78981879671e-02 + 5.79474348197e-02 5.74449785733e-02 5.66331890923e-02 5.56676247698e-02 5.45841783826e-02 5.33236907840e-02 + 5.77319585491e-02 5.53499973529e-02 5.26931433274e-02 5.03535465114e-02 4.89738024005e-02 4.89738024005e-02 + 5.03535465114e-02 5.26931433274e-02 5.53499973529e-02 5.77319585491e-02 5.94941697642e-02 6.05796981280e-02 + 6.11288569567e-02 6.13379141192e-02 6.13379141192e-02 6.11288569567e-02 6.05796981280e-02 5.94941697642e-02 + 5.77319585491e-02 5.53499973529e-02 5.26931433274e-02 5.03535465114e-02 4.89738024005e-02 4.89738024005e-02 + 5.03535465114e-02 5.26931433274e-02 5.53499973529e-02 5.77319585491e-02 5.94941697642e-02 6.05796981280e-02 + 6.11288569567e-02 6.13379141192e-02 6.13379141192e-02 6.11288569567e-02 6.05796981280e-02 5.94941697642e-02 + 6.21334821617e-02 5.83399236929e-02 5.43925934286e-02 5.13869204668e-02 5.02620593726e-02 5.13869204668e-02 + 5.43925934286e-02 5.83399236929e-02 6.21334821617e-02 6.49555724266e-02 6.64898780493e-02 6.68641206041e-02 + 6.64284767715e-02 6.55352798807e-02 6.44054743742e-02 6.30873277659e-02 6.14923433640e-02 5.94941697642e-02 + 5.70612480291e-02 5.43692149489e-02 5.18281863755e-02 4.99825941802e-02 4.93048229800e-02 4.99825941802e-02 + 5.18281863755e-02 5.43692149489e-02 5.70612480291e-02 5.94941697642e-02 6.14923433640e-02 6.30873277659e-02 + 6.44054743742e-02 6.55352798807e-02 6.64284767715e-02 6.68641206041e-02 6.64898780493e-02 6.49555724266e-02 + 6.28259810566e-02 5.67236888968e-02 5.12221625406e-02 4.79609401864e-02 4.79609401864e-02 5.12221625406e-02 + 5.67236888968e-02 6.28259810566e-02 6.79320857310e-02 7.10787520021e-02 7.21264918488e-02 7.15201290633e-02 + 6.98920688762e-02 6.77723654588e-02 6.54719417706e-02 6.30873277659e-02 6.05796981280e-02 5.78981879671e-02 + 5.51031089527e-02 5.24339557043e-02 5.02828320119e-02 4.90700187394e-02 4.90700187394e-02 5.02828320119e-02 + 5.24339557043e-02 5.51031089527e-02 5.78981879671e-02 6.05796981280e-02 6.30873277659e-02 6.54719417706e-02 + 6.77723654588e-02 6.98920688762e-02 7.15201290633e-02 7.21264918488e-02 7.10787520021e-02 6.79320857310e-02 + 5.75824043038e-02 4.89850720157e-02 4.26203265537e-02 4.02808330656e-02 4.26203265537e-02 4.89850720157e-02 + 5.75824043038e-02 6.60504635380e-02 7.23556493700e-02 7.55368812409e-02 7.57970302390e-02 7.40032629540e-02 + 7.10977313661e-02 6.77723654588e-02 6.44054743742e-02 6.11288569567e-02 5.79474348197e-02 5.48714786192e-02 + 5.20147259753e-02 4.96193341715e-02 4.79989400749e-02 4.74231711778e-02 4.79989400749e-02 4.96193341715e-02 + 5.20147259753e-02 5.48714786192e-02 5.79474348197e-02 6.11288569567e-02 6.44054743742e-02 6.77723654588e-02 + 7.10977313661e-02 7.40032629540e-02 7.57970302390e-02 7.55368812409e-02 7.23556493700e-02 6.60504635380e-02 + 4.60013609401e-02 3.62214481565e-02 3.07039905741e-02 3.07039905741e-02 3.62214481565e-02 4.60013609401e-02 + 5.76200322747e-02 6.81077724909e-02 7.51264696898e-02 7.78881394404e-02 7.70723261920e-02 7.40032629540e-02 + 6.98920688762e-02 6.55352798807e-02 6.13379141192e-02 5.74449785733e-02 5.38883507401e-02 5.07121410456e-02 + 4.80406383964e-02 4.60731359718e-02 4.50208900473e-02 4.50208900473e-02 4.60731359718e-02 4.80406383964e-02 + 5.07121410456e-02 5.38883507401e-02 5.74449785733e-02 6.13379141192e-02 6.55352798807e-02 6.98920688762e-02 + 7.40032629540e-02 7.70723261920e-02 7.78881394404e-02 7.51264696898e-02 6.81077724909e-02 5.76200322747e-02 + 3.09103717113e-02 2.23413746600e-02 1.93490286376e-02 2.23413746600e-02 3.09103717113e-02 4.35588929466e-02 + 5.74463352203e-02 6.91119067669e-02 7.60705845667e-02 7.78881394404e-02 7.57970302390e-02 7.15201290633e-02 + 6.64284767715e-02 6.13379141192e-02 5.66331890923e-02 5.24477482650e-02 4.88190878681e-02 4.57968161948e-02 + 4.34838779539e-02 4.20165784801e-02 4.15120643887e-02 4.20165784801e-02 4.34838779539e-02 4.57968161948e-02 + 4.88190878681e-02 5.24477482650e-02 5.66331890923e-02 6.13379141192e-02 6.64284767715e-02 7.15201290633e-02 + 7.57970302390e-02 7.78881394404e-02 7.60705845667e-02 6.91119067669e-02 5.74463352203e-02 4.35588929466e-02 + 1.69819929531e-02 1.14596764125e-02 1.14596764125e-02 1.69819929531e-02 2.77489957459e-02 4.22847991283e-02 + 5.73653289979e-02 6.91119067669e-02 7.51264696898e-02 7.55368812409e-02 7.21264918488e-02 6.68641206041e-02 + 6.11288569567e-02 5.56676247698e-02 5.08044555558e-02 4.66403070569e-02 4.32002938784e-02 4.05199675384e-02 + 3.86662855632e-02 3.77147526395e-02 3.77147526395e-02 3.86662855632e-02 4.05199675384e-02 4.32002938784e-02 + 4.66403070569e-02 5.08044555558e-02 5.56676247698e-02 6.11288569567e-02 6.68641206041e-02 7.21264918488e-02 + 7.55368812409e-02 7.51264696898e-02 6.91119067669e-02 5.73653289979e-02 4.22847991283e-02 2.77489957459e-02 + 7.45857574908e-03 5.17285277950e-03 7.45857574908e-03 1.46090879135e-02 2.67478820537e-02 4.22847991283e-02 + 5.74463352203e-02 6.81077724909e-02 7.23556493700e-02 7.10787520021e-02 6.64898780493e-02 6.05796981280e-02 + 5.45841783826e-02 4.91148354625e-02 4.44094609233e-02 4.05244812822e-02 3.74634706166e-02 3.52402742752e-02 + 3.38859304601e-02 3.34304675050e-02 3.38859304601e-02 3.52402742752e-02 3.74634706166e-02 4.05244812822e-02 + 4.44094609233e-02 4.91148354625e-02 5.45841783826e-02 6.05796981280e-02 6.64898780493e-02 7.10787520021e-02 + 7.23556493700e-02 6.81077724909e-02 5.74463352203e-02 4.22847991283e-02 2.67478820537e-02 1.46090879135e-02 + 2.64004483879e-03 2.64004483879e-03 6.32692063078e-03 1.46090879135e-02 2.77489957459e-02 4.35588929466e-02 + 5.76200322747e-02 6.60504635380e-02 6.79320857310e-02 6.49555724266e-02 5.94941697642e-02 5.33236907840e-02 + 4.74313143781e-02 4.22610610741e-02 3.79563421300e-02 3.45282284639e-02 3.19590319446e-02 3.02423286704e-02 + 2.93819034216e-02 2.93819034216e-02 3.02423286704e-02 3.19590319446e-02 3.45282284639e-02 3.79563421300e-02 + 4.22610610741e-02 4.74313143781e-02 5.33236907840e-02 5.94941697642e-02 6.49555724266e-02 6.79320857310e-02 + 6.60504635380e-02 5.76200322747e-02 4.35588929466e-02 2.77489957459e-02 1.46090879135e-02 6.32692063078e-03 + 2.64004483879e-03 5.17285277950e-03 1.14596764125e-02 2.23413746600e-02 3.62214481565e-02 4.89850720157e-02 + 5.67236888968e-02 5.83399236929e-02 5.53499973529e-02 5.00090134447e-02 4.40291518527e-02 3.83718132369e-02 + 3.34710625414e-02 2.94586793037e-02 2.63252408289e-02 2.40237109616e-02 2.25132701769e-02 2.17657781241e-02 + 2.17657781241e-02 2.25132701769e-02 2.40237109616e-02 2.63252408289e-02 2.94586793037e-02 3.34710625414e-02 + 3.83718132369e-02 4.40291518527e-02 5.00090134447e-02 5.53499973529e-02 5.83399236929e-02 5.67236888968e-02 + 4.89850720157e-02 3.62214481565e-02 2.23413746600e-02 1.14596764125e-02 5.17285277950e-03 2.64004483879e-03 + 5.17285277950e-03 9.05419851032e-03 1.69491736420e-02 2.86292518106e-02 4.11986868029e-02 5.05555186569e-02 + 5.43239294918e-02 5.29676178633e-02 4.84815544672e-02 4.27763236460e-02 3.70689589239e-02 3.19731919657e-02 + 2.77227537368e-02 2.43476957086e-02 2.18005508565e-02 2.00258575799e-02 1.89804120902e-02 1.86354478304e-02 + 1.89804120902e-02 2.00258575799e-02 2.18005508565e-02 2.43476957086e-02 2.77227537368e-02 3.19731919657e-02 + 3.70689589239e-02 4.27763236460e-02 4.84815544672e-02 5.29676178633e-02 5.43239294918e-02 5.05555186569e-02 + 4.11986868029e-02 2.86292518106e-02 1.69491736420e-02 9.05419851032e-03 5.17285277950e-03 4.10298626852e-03 + 1.14596764125e-02 1.69491736420e-02 2.59250062413e-02 3.67025276917e-02 4.58777097769e-02 5.06194135765e-02 + 5.04463447592e-02 4.67810667612e-02 4.14579289512e-02 3.58243136049e-02 3.06330408871e-02 2.62153172241e-02 + 2.26519365039e-02 1.99070659239e-02 1.79167348748e-02 1.66250325509e-02 1.59907282434e-02 1.59907282434e-02 + 1.66250325509e-02 1.79167348748e-02 1.99070659239e-02 2.26519365039e-02 2.62153172241e-02 3.06330408871e-02 + 3.58243136049e-02 4.14579289512e-02 4.67810667612e-02 5.04463447592e-02 5.06194135765e-02 4.58777097769e-02 + 3.67025276917e-02 2.59250062413e-02 1.69491736420e-02 1.14596764125e-02 9.13060134292e-03 9.13060134292e-03 + 2.23413746600e-02 2.86292518106e-02 3.67025276917e-02 4.41366450522e-02 4.83941231678e-02 4.85080722970e-02 + 4.52857661696e-02 4.02540981079e-02 3.47182328687e-02 2.94854041377e-02 2.49511167951e-02 2.12413612776e-02 + 1.83376793613e-02 1.61729889157e-02 1.46810426016e-02 1.38094745262e-02 1.35231772103e-02 1.38094745262e-02 + 1.46810426016e-02 1.61729889157e-02 1.83376793613e-02 2.12413612776e-02 2.49511167951e-02 2.94854041377e-02 + 3.47182328687e-02 4.02540981079e-02 4.52857661696e-02 4.85080722970e-02 4.83941231678e-02 4.41366450522e-02 + 3.67025276917e-02 2.86292518106e-02 2.23413746600e-02 1.87771308641e-02 1.76819501362e-02 1.87771308641e-02 + 3.62214481565e-02 4.11986868029e-02 4.58777097769e-02 4.83941231678e-02 4.77793166757e-02 4.44045560444e-02 + 3.93968315223e-02 3.38709874542e-02 2.85879356046e-02 2.39549635512e-02 2.01220876747e-02 1.70848695603e-02 + 1.47756456624e-02 1.31198380533e-02 1.20550163598e-02 1.15351431719e-02 1.15351431719e-02 1.20550163598e-02 + 1.31198380533e-02 1.47756456624e-02 1.70848695603e-02 2.01220876747e-02 2.39549635512e-02 2.85879356046e-02 + 3.38709874542e-02 3.93968315223e-02 4.44045560444e-02 4.77793166757e-02 4.83941231678e-02 4.58777097769e-02 + 4.11986868029e-02 3.62214481565e-02 3.25101129901e-02 3.06594619284e-02 3.06594619284e-02 3.25101129901e-02 + 4.89850720157e-02 5.05555186569e-02 5.06194135765e-02 4.85080722970e-02 4.44045560444e-02 3.90848689472e-02 + 3.34071767353e-02 2.80098127199e-02 2.32603028496e-02 1.93050944183e-02 1.61434902729e-02 1.37059602390e-02 + 1.19105819676e-02 1.06856809758e-02 9.97511028176e-03 9.74245511371e-03 9.97511028176e-03 1.06856809758e-02 + 1.19105819676e-02 1.37059602390e-02 1.61434902729e-02 1.93050944183e-02 2.32603028496e-02 2.80098127199e-02 + 3.34071767353e-02 3.90848689472e-02 4.44045560444e-02 4.85080722970e-02 5.06194135765e-02 5.05555186569e-02 + 4.89850720157e-02 4.70389926376e-02 4.56222411881e-02 4.51254329663e-02 4.56222411881e-02 4.70389926376e-02 + 5.67236888968e-02 5.43239294918e-02 5.04463447592e-02 4.52857661696e-02 3.93968315223e-02 3.34071767353e-02 + 2.78094015925e-02 2.29016184223e-02 1.88053010662e-02 1.55127511572e-02 1.29494247541e-02 1.10259974674e-02 + 9.66211927865e-03 8.79214216133e-03 8.36917339040e-03 8.36917339040e-03 8.79214216133e-03 9.66211927865e-03 + 1.10259974674e-02 1.29494247541e-02 1.55127511572e-02 1.88053010662e-02 2.29016184223e-02 2.78094015925e-02 + 3.34071767353e-02 3.93968315223e-02 4.52857661696e-02 5.04463447592e-02 5.43239294918e-02 5.67236888968e-02 + 5.79103146750e-02 5.83777841365e-02 5.85232784436e-02 5.85232784436e-02 5.83777841365e-02 5.79103146750e-02 + 5.83399236929e-02 5.29676178633e-02 4.67810667612e-02 4.02540981079e-02 3.38709874542e-02 2.80098127199e-02 + 2.29016184223e-02 1.86367379277e-02 1.51956958667e-02 1.24976141314e-02 1.04460621935e-02 8.95261635749e-03 + 7.94279014126e-03 7.35981258047e-03 7.16922584820e-03 7.35981258047e-03 7.94279014126e-03 8.95261635749e-03 + 1.04460621935e-02 1.24976141314e-02 1.51956958667e-02 1.86367379277e-02 2.29016184223e-02 2.80098127199e-02 + 3.38709874542e-02 4.02540981079e-02 4.67810667612e-02 5.29676178633e-02 5.83399236929e-02 6.25800698666e-02 + 6.55787911247e-02 6.73541476702e-02 6.79419572879e-02 6.73541476702e-02 6.55787911247e-02 6.25800698666e-02 + 5.53499973529e-02 4.84815544672e-02 4.14579289512e-02 3.47182328687e-02 2.85879356046e-02 2.32603028496e-02 + 1.88053010662e-02 1.51956958667e-02 1.23472319177e-02 1.01587603229e-02 8.53524112695e-03 7.39443450458e-03 + 6.67049181789e-03 6.31909087196e-03 6.31909087196e-03 6.67049181789e-03 7.39443450458e-03 8.53524112695e-03 + 1.01587603229e-02 1.23472319177e-02 1.51956958667e-02 1.88053010662e-02 2.32603028496e-02 2.85879356046e-02 + 3.47182328687e-02 4.14579289512e-02 4.84815544672e-02 5.53499973529e-02 6.15702941626e-02 6.66786802062e-02 + 7.03019494995e-02 7.21810172465e-02 7.21810172465e-02 7.03019494995e-02 6.66786802062e-02 6.15702941626e-02 + 5.00090134447e-02 4.27763236460e-02 3.58243136049e-02 2.94854041377e-02 2.39549635512e-02 1.93050944183e-02 + 1.55127511572e-02 1.24976141314e-02 1.01587603229e-02 8.39746782805e-03 7.12561826537e-03 6.26978037715e-03 + 5.77651892440e-03 5.61528193683e-03 5.77651892440e-03 6.26978037715e-03 7.12561826537e-03 8.39746782805e-03 + 1.01587603229e-02 1.24976141314e-02 1.55127511572e-02 1.93050944183e-02 2.39549635512e-02 2.94854041377e-02 + 3.58243136049e-02 4.27763236460e-02 5.00090134447e-02 5.70612480291e-02 6.33842515281e-02 6.84139609392e-02 + 7.16581855164e-02 7.27796836797e-02 7.16581855164e-02 6.84139609392e-02 6.33842515281e-02 5.70612480291e-02 + 4.40291518527e-02 3.70689589239e-02 3.06330408871e-02 2.49511167951e-02 2.01220876747e-02 1.61434902729e-02 + 1.29494247541e-02 1.04460621935e-02 8.53524112695e-03 7.12561826537e-03 6.13840739734e-03 5.51272438194e-03 + 5.20914423543e-03 5.20914423543e-03 5.51272438194e-03 6.13840739734e-03 7.12561826537e-03 8.53524112695e-03 + 1.04460621935e-02 1.29494247541e-02 1.61434902729e-02 2.01220876747e-02 2.49511167951e-02 3.06330408871e-02 + 3.70689589239e-02 4.40291518527e-02 5.11403130173e-02 5.78981879671e-02 6.37149803432e-02 6.80033074139e-02 + 7.02831021338e-02 7.02831021338e-02 6.80033074139e-02 6.37149803432e-02 5.78981879671e-02 5.11403130173e-02 + 3.83718132369e-02 3.19731919657e-02 2.62153172241e-02 2.12413612776e-02 1.70848695603e-02 1.37059602390e-02 + 1.10259974674e-02 8.95261635749e-03 7.39443450458e-03 6.26978037715e-03 5.51272438194e-03 5.07652462266e-03 + 4.93405372394e-03 5.07652462266e-03 5.51272438194e-03 6.26978037715e-03 7.39443450458e-03 8.95261635749e-03 + 1.10259974674e-02 1.37059602390e-02 1.70848695603e-02 2.12413612776e-02 2.62153172241e-02 3.19731919657e-02 + 3.83718132369e-02 4.51323632879e-02 5.18355302331e-02 5.79474348197e-02 6.28828729732e-02 6.61022866145e-02 + 6.72218662363e-02 6.61022866145e-02 6.28828729732e-02 5.79474348197e-02 5.18355302331e-02 4.51323632879e-02 + 3.34710625414e-02 2.77227537368e-02 2.26519365039e-02 1.83376793613e-02 1.47756456624e-02 1.19105819676e-02 + 9.66211927865e-03 7.94279014126e-03 6.67049181789e-03 5.77651892440e-03 5.20914423543e-03 4.93405372394e-03 + 4.93405372394e-03 5.20914423543e-03 5.77651892440e-03 6.67049181789e-03 7.94279014126e-03 9.66211927865e-03 + 1.19105819676e-02 1.47756456624e-02 1.83376793613e-02 2.26519365039e-02 2.77227537368e-02 3.34710625414e-02 + 3.97029159910e-02 4.60913389830e-02 5.21839135623e-02 5.74449785733e-02 6.13334872428e-02 6.34040688222e-02 + 6.34040688222e-02 6.13334872428e-02 5.74449785733e-02 5.21839135623e-02 4.60913389830e-02 3.97029159910e-02 + 2.94586793037e-02 2.43476957086e-02 1.99070659239e-02 1.61729889157e-02 1.31198380533e-02 1.06856809758e-02 + 8.79214216133e-03 7.35981258047e-03 6.31909087196e-03 5.61528193683e-03 5.20914423543e-03 5.07652462266e-03 + 5.20914423543e-03 5.61528193683e-03 6.31909087196e-03 7.35981258047e-03 8.79214216133e-03 1.06856809758e-02 + 1.31198380533e-02 1.61729889157e-02 1.99070659239e-02 2.43476957086e-02 2.94586793037e-02 3.51127517762e-02 + 4.10670403681e-02 4.69561004766e-02 5.23143637463e-02 5.66331890923e-02 5.94462807362e-02 6.04237632524e-02 + 5.94462807362e-02 5.66331890923e-02 5.23143637463e-02 4.69561004766e-02 4.10670403681e-02 3.51127517762e-02 + 2.63252408289e-02 2.18005508565e-02 1.79167348748e-02 1.46810426016e-02 1.20550163598e-02 9.97511028176e-03 + 8.36917339040e-03 7.16922584820e-03 6.31909087196e-03 5.77651892440e-03 5.51272438194e-03 5.51272438194e-03 + 5.77651892440e-03 6.31909087196e-03 7.16922584820e-03 8.36917339040e-03 9.97511028176e-03 1.20550163598e-02 + 1.46810426016e-02 1.79167348748e-02 2.18005508565e-02 2.63252408289e-02 3.14127386696e-02 3.68889471691e-02 + 4.24686468881e-02 4.77625301985e-02 5.23143637463e-02 5.56676247698e-02 5.74494623672e-02 5.74494623672e-02 + 5.56676247698e-02 5.23143637463e-02 4.77625301985e-02 4.24686468881e-02 3.68889471691e-02 3.14127386696e-02 + 2.40237109616e-02 2.00258575799e-02 1.66250325509e-02 1.38094745262e-02 1.15351431719e-02 9.74245511371e-03 + 8.36917339040e-03 7.35981258047e-03 6.67049181789e-03 6.26978037715e-03 6.13840739734e-03 6.26978037715e-03 + 6.67049181789e-03 7.35981258047e-03 8.36917339040e-03 9.74245511371e-03 1.15351431719e-02 1.38094745262e-02 + 1.66250325509e-02 2.00258575799e-02 2.40237109616e-02 2.85763383726e-02 3.35632692529e-02 3.87673596218e-02 + 4.38725463784e-02 4.84855850881e-02 5.21839135623e-02 5.45841783826e-02 5.54167137150e-02 5.45841783826e-02 + 5.21839135623e-02 4.84855850881e-02 4.38725463784e-02 3.87673596218e-02 3.35632692529e-02 2.85763383726e-02 + 2.25132701769e-02 1.89804120902e-02 1.59907282434e-02 1.35231772103e-02 1.15351431719e-02 9.97511028176e-03 + 8.79214216133e-03 7.94279014126e-03 7.39443450458e-03 7.12561826537e-03 7.12561826537e-03 7.39443450458e-03 + 7.94279014126e-03 8.79214216133e-03 9.97511028176e-03 1.15351431719e-02 1.35231772103e-02 1.59907282434e-02 + 1.89804120902e-02 2.25132701769e-02 2.65706573512e-02 3.10717223250e-02 3.58537824974e-02 4.06654278454e-02 + 4.51788789706e-02 4.90231496620e-02 5.18355302331e-02 5.33236907840e-02 5.33236907840e-02 5.18355302331e-02 + 4.90231496620e-02 4.51788789706e-02 4.06654278454e-02 3.58537824974e-02 3.10717223250e-02 2.65706573512e-02 + 2.17657781241e-02 1.86354478304e-02 1.59907282434e-02 1.38094745262e-02 1.20550163598e-02 1.06856809758e-02 + 9.66211927865e-03 8.95261635749e-03 8.53524112695e-03 8.39746782805e-03 8.53524112695e-03 8.95261635749e-03 + 9.66211927865e-03 1.06856809758e-02 1.20550163598e-02 1.38094745262e-02 1.59907282434e-02 1.86354478304e-02 + 2.17657781241e-02 2.53749373622e-02 2.94074293899e-02 3.37399765679e-02 3.81729635435e-02 4.24386109393e-02 + 4.62258246981e-02 4.92182336225e-02 5.11403130173e-02 5.18034033720e-02 5.11403130173e-02 4.92182336225e-02 + 4.62258246981e-02 4.24386109393e-02 3.81729635435e-02 3.37399765679e-02 2.94074293899e-02 2.53749373622e-02 + 2.17657781241e-02 1.89804120902e-02 1.66250325509e-02 1.46810426016e-02 1.31198380533e-02 1.19105819676e-02 + 1.10259974674e-02 1.04460621935e-02 1.01587603229e-02 1.01587603229e-02 1.04460621935e-02 1.10259974674e-02 + 1.19105819676e-02 1.31198380533e-02 1.46810426016e-02 1.66250325509e-02 1.89804120902e-02 2.17657781241e-02 + 2.49776956914e-02 2.85734174953e-02 3.24534608631e-02 3.64535808156e-02 4.03527020822e-02 4.38959177953e-02 + 4.68264624901e-02 4.89192305177e-02 5.00090134447e-02 5.00090134447e-02 4.89192305177e-02 4.68264624901e-02 + 4.38959177953e-02 4.03527020822e-02 3.64535808156e-02 3.24534608631e-02 2.85734174953e-02 2.49776956914e-02 + 2.25132701769e-02 2.00258575799e-02 1.79167348748e-02 1.61729889157e-02 1.47756456624e-02 1.37059602390e-02 + 1.29494247541e-02 1.24976141314e-02 1.23472319177e-02 1.24976141314e-02 1.29494247541e-02 1.37059602390e-02 + 1.47756456624e-02 1.61729889157e-02 1.79167348748e-02 2.00258575799e-02 2.25132701769e-02 2.53749373622e-02 + 2.85734174953e-02 3.20210145144e-02 3.55725175924e-02 3.90350130516e-02 4.21941579647e-02 4.48486167771e-02 + 4.68401774785e-02 4.80677366203e-02 4.84815544672e-02 4.80677366203e-02 4.68401774785e-02 4.48486167771e-02 + 4.21941579647e-02 3.90350130516e-02 3.55725175924e-02 3.20210145144e-02 2.85734174953e-02 2.53749373622e-02 + 2.40237109616e-02 2.18005508565e-02 1.99070659239e-02 1.83376793613e-02 1.70848695603e-02 1.61434902729e-02 + 1.55127511572e-02 1.51956958667e-02 1.51956958667e-02 1.55127511572e-02 1.61434902729e-02 1.70848695603e-02 + 1.83376793613e-02 1.99070659239e-02 2.18005508565e-02 2.40237109616e-02 2.65706573512e-02 2.94074293899e-02 + 3.24534608631e-02 3.55725175924e-02 3.85829474965e-02 4.12888114430e-02 4.35234290368e-02 4.51877782102e-02 + 4.62623331670e-02 4.67810667612e-02 4.67810667612e-02 4.62623331670e-02 4.51877782102e-02 4.35234290368e-02 + 4.12888114430e-02 3.85829474965e-02 3.55725175924e-02 3.24534608631e-02 2.94074293899e-02 2.65706573512e-02 + 2.63252408289e-02 2.43476957086e-02 2.26519365039e-02 2.12413612776e-02 2.01220876747e-02 1.93050944183e-02 + 1.88053010662e-02 1.86367379277e-02 1.88053010662e-02 1.93050944183e-02 2.01220876747e-02 2.12413612776e-02 + 2.26519365039e-02 2.43476957086e-02 2.63252408289e-02 2.85763383726e-02 3.10717223250e-02 3.37399765679e-02 + 3.64535808156e-02 3.90350130516e-02 4.12888114430e-02 4.30547772101e-02 4.42634768270e-02 4.49623774036e-02 + 4.52857661696e-02 4.53738413591e-02 4.52857661696e-02 4.49623774036e-02 4.42634768270e-02 4.30547772101e-02 + 4.12888114430e-02 3.90350130516e-02 3.64535808156e-02 3.37399765679e-02 3.10717223250e-02 2.85763383726e-02 + 2.94586793037e-02 2.77227537368e-02 2.62153172241e-02 2.49511167951e-02 2.39549635512e-02 2.32603028496e-02 + 2.29016184223e-02 2.29016184223e-02 2.32603028496e-02 2.39549635512e-02 2.49511167951e-02 2.62153172241e-02 + 2.77227537368e-02 2.94586793037e-02 3.14127386696e-02 3.35632692529e-02 3.58537824974e-02 3.81729635435e-02 + 4.03527020822e-02 4.21941579647e-02 4.35234290368e-02 4.42634768270e-02 4.44868574481e-02 4.44045560444e-02 + 4.42752514752e-02 4.42752514752e-02 4.44045560444e-02 4.44868574481e-02 4.42634768270e-02 4.35234290368e-02 + 4.21941579647e-02 4.03527020822e-02 3.81729635435e-02 3.58537824974e-02 3.35632692529e-02 3.14127386696e-02 + 3.34710625414e-02 3.19731919657e-02 3.06330408871e-02 2.94854041377e-02 2.85879356046e-02 2.80098127199e-02 + 2.78094015925e-02 2.80098127199e-02 2.85879356046e-02 2.94854041377e-02 3.06330408871e-02 3.19731919657e-02 + 3.34710625414e-02 3.51127517762e-02 3.68889471691e-02 3.87673596218e-02 4.06654278454e-02 4.24386109393e-02 + 4.38959177953e-02 4.48486167771e-02 4.51877782102e-02 4.49623774036e-02 4.44045560444e-02 4.38595264834e-02 + 4.36365698621e-02 4.38595264834e-02 4.44045560444e-02 4.49623774036e-02 4.51877782102e-02 4.48486167771e-02 + 4.38959177953e-02 4.24386109393e-02 4.06654278454e-02 3.87673596218e-02 3.68889471691e-02 3.51127517762e-02 + 3.83718132369e-02 3.70689589239e-02 3.58243136049e-02 3.47182328687e-02 3.38709874542e-02 3.34071767353e-02 + 3.34071767353e-02 3.38709874542e-02 3.47182328687e-02 3.58243136049e-02 3.70689589239e-02 3.83718132369e-02 + 3.97029159910e-02 4.10670403681e-02 4.24686468881e-02 4.38725463784e-02 4.51788789706e-02 4.62258246981e-02 + 4.68264624901e-02 4.68401774785e-02 4.62623331670e-02 4.52857661696e-02 4.42752514752e-02 4.36365698621e-02 + 4.36365698621e-02 4.42752514752e-02 4.52857661696e-02 4.62623331670e-02 4.68401774785e-02 4.68264624901e-02 + 4.62258246981e-02 4.51788789706e-02 4.38725463784e-02 4.24686468881e-02 4.10670403681e-02 3.97029159910e-02 + 4.40291518527e-02 4.27763236460e-02 4.14579289512e-02 4.02540981079e-02 3.93968315223e-02 3.90848689472e-02 + 3.93968315223e-02 4.02540981079e-02 4.14579289512e-02 4.27763236460e-02 4.40291518527e-02 4.51323632879e-02 + 4.60913389830e-02 4.69561004766e-02 4.77625301985e-02 4.84855850881e-02 4.90231496620e-02 4.92182336225e-02 + 4.89192305177e-02 4.80677366203e-02 4.67810667612e-02 4.53738413591e-02 4.42752514752e-02 4.38595264834e-02 + 4.42752514752e-02 4.53738413591e-02 4.67810667612e-02 4.80677366203e-02 4.89192305177e-02 4.92182336225e-02 + 4.90231496620e-02 4.84855850881e-02 4.77625301985e-02 4.69561004766e-02 4.60913389830e-02 4.51323632879e-02 + 5.00090134447e-02 4.84815544672e-02 4.67810667612e-02 4.52857661696e-02 4.44045560444e-02 4.44045560444e-02 + 4.52857661696e-02 4.67810667612e-02 4.84815544672e-02 5.00090134447e-02 5.11403130173e-02 5.18355302331e-02 + 5.21839135623e-02 5.23143637463e-02 5.23143637463e-02 5.21839135623e-02 5.18355302331e-02 5.11403130173e-02 + 5.00090134447e-02 4.84815544672e-02 4.67810667612e-02 4.52857661696e-02 4.44045560444e-02 4.44045560444e-02 + 4.52857661696e-02 4.67810667612e-02 4.84815544672e-02 5.00090134447e-02 5.11403130173e-02 5.18355302331e-02 + 5.21839135623e-02 5.23143637463e-02 5.23143637463e-02 5.21839135623e-02 5.18355302331e-02 5.11403130173e-02 + 5.53499973529e-02 5.29676178633e-02 5.04463447592e-02 4.85080722970e-02 4.77793166757e-02 4.85080722970e-02 + 5.04463447592e-02 5.29676178633e-02 5.53499973529e-02 5.70612480291e-02 5.78981879671e-02 5.79474348197e-02 + 5.74449785733e-02 5.66331890923e-02 5.56676247698e-02 5.45841783826e-02 5.33236907840e-02 5.18034033720e-02 + 5.00090134447e-02 4.80677366203e-02 4.62623331670e-02 4.49623774036e-02 4.44868574481e-02 4.49623774036e-02 + 4.62623331670e-02 4.80677366203e-02 5.00090134447e-02 5.18034033720e-02 5.33236907840e-02 5.45841783826e-02 + 5.56676247698e-02 5.66331890923e-02 5.74449785733e-02 5.79474348197e-02 5.78981879671e-02 5.70612480291e-02 + 5.83399236929e-02 5.43239294918e-02 5.06194135765e-02 4.83941231678e-02 4.83941231678e-02 5.06194135765e-02 + 5.43239294918e-02 5.83399236929e-02 6.15702941626e-02 6.33842515281e-02 6.37149803432e-02 6.28828729732e-02 + 6.13334872428e-02 5.94462807362e-02 5.74494623672e-02 5.54167137150e-02 5.33236907840e-02 5.11403130173e-02 + 4.89192305177e-02 4.68401774785e-02 4.51877782102e-02 4.42634768270e-02 4.42634768270e-02 4.51877782102e-02 + 4.68401774785e-02 4.89192305177e-02 5.11403130173e-02 5.33236907840e-02 5.54167137150e-02 5.74494623672e-02 + 5.94462807362e-02 6.13334872428e-02 6.28828729732e-02 6.37149803432e-02 6.33842515281e-02 6.15702941626e-02 + 5.67236888968e-02 5.05555186569e-02 4.58777097769e-02 4.41366450522e-02 4.58777097769e-02 5.05555186569e-02 + 5.67236888968e-02 6.25800698666e-02 6.66786802062e-02 6.84139609392e-02 6.80033074139e-02 6.61022866145e-02 + 6.34040688222e-02 6.04237632524e-02 5.74494623672e-02 5.45841783826e-02 5.18355302331e-02 4.92182336225e-02 + 4.68264624901e-02 4.48486167771e-02 4.35234290368e-02 4.30547772101e-02 4.35234290368e-02 4.48486167771e-02 + 4.68264624901e-02 4.92182336225e-02 5.18355302331e-02 5.45841783826e-02 5.74494623672e-02 6.04237632524e-02 + 6.34040688222e-02 6.61022866145e-02 6.80033074139e-02 6.84139609392e-02 6.66786802062e-02 6.25800698666e-02 + 4.89850720157e-02 4.11986868029e-02 3.67025276917e-02 3.67025276917e-02 4.11986868029e-02 4.89850720157e-02 + 5.79103146750e-02 6.55787911247e-02 7.03019494995e-02 7.16581855164e-02 7.02831021338e-02 6.72218662363e-02 + 6.34040688222e-02 5.94462807362e-02 5.56676247698e-02 5.21839135623e-02 4.90231496620e-02 4.62258246981e-02 + 4.38959177953e-02 4.21941579647e-02 4.12888114430e-02 4.12888114430e-02 4.21941579647e-02 4.38959177953e-02 + 4.62258246981e-02 4.90231496620e-02 5.21839135623e-02 5.56676247698e-02 5.94462807362e-02 6.34040688222e-02 + 6.72218662363e-02 7.02831021338e-02 7.16581855164e-02 7.03019494995e-02 6.55787911247e-02 5.79103146750e-02 + 3.62214481565e-02 2.86292518106e-02 2.59250062413e-02 2.86292518106e-02 3.62214481565e-02 4.70389926376e-02 + 5.83777841365e-02 6.73541476702e-02 7.21810172465e-02 7.27796836797e-02 7.02831021338e-02 6.61022866145e-02 + 6.13334872428e-02 5.66331890923e-02 5.23143637463e-02 4.84855850881e-02 4.51788789706e-02 4.24386109393e-02 + 4.03527020822e-02 3.90350130516e-02 3.85829474965e-02 3.90350130516e-02 4.03527020822e-02 4.24386109393e-02 + 4.51788789706e-02 4.84855850881e-02 5.23143637463e-02 5.66331890923e-02 6.13334872428e-02 6.61022866145e-02 + 7.02831021338e-02 7.27796836797e-02 7.21810172465e-02 6.73541476702e-02 5.83777841365e-02 4.70389926376e-02 + 2.23413746600e-02 1.69491736420e-02 1.69491736420e-02 2.23413746600e-02 3.25101129901e-02 4.56222411881e-02 + 5.85232784436e-02 6.79419572879e-02 7.21810172465e-02 7.16581855164e-02 6.80033074139e-02 6.28828729732e-02 + 5.74449785733e-02 5.23143637463e-02 4.77625301985e-02 4.38725463784e-02 4.06654278454e-02 3.81729635435e-02 + 3.64535808156e-02 3.55725175924e-02 3.55725175924e-02 3.64535808156e-02 3.81729635435e-02 4.06654278454e-02 + 4.38725463784e-02 4.77625301985e-02 5.23143637463e-02 5.74449785733e-02 6.28828729732e-02 6.80033074139e-02 + 7.16581855164e-02 7.21810172465e-02 6.79419572879e-02 5.85232784436e-02 4.56222411881e-02 3.25101129901e-02 + 1.14596764125e-02 9.05419851032e-03 1.14596764125e-02 1.87771308641e-02 3.06594619284e-02 4.51254329663e-02 + 5.85232784436e-02 6.73541476702e-02 7.03019494995e-02 6.84139609392e-02 6.37149803432e-02 5.79474348197e-02 + 5.21839135623e-02 4.69561004766e-02 4.24686468881e-02 3.87673596218e-02 3.58537824974e-02 3.37399765679e-02 + 3.24534608631e-02 3.20210145144e-02 3.24534608631e-02 3.37399765679e-02 3.58537824974e-02 3.87673596218e-02 + 4.24686468881e-02 4.69561004766e-02 5.21839135623e-02 5.79474348197e-02 6.37149803432e-02 6.84139609392e-02 + 7.03019494995e-02 6.73541476702e-02 5.85232784436e-02 4.51254329663e-02 3.06594619284e-02 1.87771308641e-02 + 5.17285277950e-03 5.17285277950e-03 9.13060134292e-03 1.76819501362e-02 3.06594619284e-02 4.56222411881e-02 + 5.83777841365e-02 6.55787911247e-02 6.66786802062e-02 6.33842515281e-02 5.78981879671e-02 5.18355302331e-02 + 4.60913389830e-02 4.10670403681e-02 3.68889471691e-02 3.35632692529e-02 3.10717223250e-02 2.94074293899e-02 + 2.85734174953e-02 2.85734174953e-02 2.94074293899e-02 3.10717223250e-02 3.35632692529e-02 3.68889471691e-02 + 4.10670403681e-02 4.60913389830e-02 5.18355302331e-02 5.78981879671e-02 6.33842515281e-02 6.66786802062e-02 + 6.55787911247e-02 5.83777841365e-02 4.56222411881e-02 3.06594619284e-02 1.76819501362e-02 9.13060134292e-03 + 2.64004483879e-03 4.10298626852e-03 9.13060134292e-03 1.87771308641e-02 3.25101129901e-02 4.70389926376e-02 + 5.79103146750e-02 6.25800698666e-02 6.15702941626e-02 5.70612480291e-02 5.11403130173e-02 4.51323632879e-02 + 3.97029159910e-02 3.51127517762e-02 3.14127386696e-02 2.85763383726e-02 2.65706573512e-02 2.53749373622e-02 + 2.49776956914e-02 2.53749373622e-02 2.65706573512e-02 2.85763383726e-02 3.14127386696e-02 3.51127517762e-02 + 3.97029159910e-02 4.51323632879e-02 5.11403130173e-02 5.70612480291e-02 6.15702941626e-02 6.25800698666e-02 + 5.79103146750e-02 4.70389926376e-02 3.25101129901e-02 1.87771308641e-02 9.13060134292e-03 4.10298626852e-03 + 7.45857574908e-03 1.14596764125e-02 1.93490286376e-02 3.07039905741e-02 4.26203265537e-02 5.12221625406e-02 + 5.43925934286e-02 5.26931433274e-02 4.80677366203e-02 4.23378898536e-02 3.66568505349e-02 3.16041856284e-02 + 2.73972646659e-02 2.40594329852e-02 2.15413174517e-02 1.97871783123e-02 1.87538902948e-02 1.84129279741e-02 + 1.87538902948e-02 1.97871783123e-02 2.15413174517e-02 2.40594329852e-02 2.73972646659e-02 3.16041856284e-02 + 3.66568505349e-02 4.23378898536e-02 4.80677366203e-02 5.26931433274e-02 5.43925934286e-02 5.12221625406e-02 + 4.26203265537e-02 3.07039905741e-02 1.93490286376e-02 1.14596764125e-02 7.45857574908e-03 6.32692063078e-03 + 1.14596764125e-02 1.69491736420e-02 2.59250062413e-02 3.67025276917e-02 4.58777097769e-02 5.06194135765e-02 + 5.04463447592e-02 4.67810667612e-02 4.14579289512e-02 3.58243136049e-02 3.06330408871e-02 2.62153172241e-02 + 2.26519365039e-02 1.99070659239e-02 1.79167348748e-02 1.66250325509e-02 1.59907282434e-02 1.59907282434e-02 + 1.66250325509e-02 1.79167348748e-02 1.99070659239e-02 2.26519365039e-02 2.62153172241e-02 3.06330408871e-02 + 3.58243136049e-02 4.14579289512e-02 4.67810667612e-02 5.04463447592e-02 5.06194135765e-02 4.58777097769e-02 + 3.67025276917e-02 2.59250062413e-02 1.69491736420e-02 1.14596764125e-02 9.13060134292e-03 9.13060134292e-03 + 1.93490286376e-02 2.59250062413e-02 3.45455630665e-02 4.27064575993e-02 4.76689314688e-02 4.83002627794e-02 + 4.53738413591e-02 4.04742233092e-02 3.49773595797e-02 2.97391273192e-02 2.51823253991e-02 2.14468462049e-02 + 1.85201445811e-02 1.63370205752e-02 1.48317912783e-02 1.39522993746e-02 1.36633879542e-02 1.39522993746e-02 + 1.48317912783e-02 1.63370205752e-02 1.85201445811e-02 2.14468462049e-02 2.51823253991e-02 2.97391273192e-02 + 3.49773595797e-02 4.04742233092e-02 4.53738413591e-02 4.83002627794e-02 4.76689314688e-02 4.27064575993e-02 + 3.45455630665e-02 2.59250062413e-02 1.93490286376e-02 1.56860392578e-02 1.45732066269e-02 1.56860392578e-02 + 3.07039905741e-02 3.67025276917e-02 4.27064575993e-02 4.65545163206e-02 4.69885184966e-02 4.42752514752e-02 + 3.96081166256e-02 3.42208946471e-02 2.89691250092e-02 2.43184216158e-02 2.04512222766e-02 1.73786828448e-02 + 1.50389831834e-02 1.33594815778e-02 1.22786655737e-02 1.17508350709e-02 1.17508350709e-02 1.22786655737e-02 + 1.33594815778e-02 1.50389831834e-02 1.73786828448e-02 2.04512222766e-02 2.43184216158e-02 2.89691250092e-02 + 3.42208946471e-02 3.96081166256e-02 4.42752514752e-02 4.69885184966e-02 4.65545163206e-02 4.27064575993e-02 + 3.67025276917e-02 3.07039905741e-02 2.63856510811e-02 2.42761411551e-02 2.42761411551e-02 2.63856510811e-02 + 4.26203265537e-02 4.58777097769e-02 4.76689314688e-02 4.69885184966e-02 4.38595264834e-02 3.90976289629e-02 + 3.36893635306e-02 2.83925891295e-02 2.36566460915e-02 1.96777557044e-02 1.64818809732e-02 1.40109856905e-02 + 1.21873907787e-02 1.09414577715e-02 1.02181471415e-02 9.98127039361e-03 1.02181471415e-02 1.09414577715e-02 + 1.21873907787e-02 1.40109856905e-02 1.64818809732e-02 1.96777557044e-02 2.36566460915e-02 2.83925891295e-02 + 3.36893635306e-02 3.90976289629e-02 4.38595264834e-02 4.69885184966e-02 4.76689314688e-02 4.58777097769e-02 + 4.26203265537e-02 3.93541671489e-02 3.71417160544e-02 3.63849623957e-02 3.71417160544e-02 3.93541671489e-02 + 5.12221625406e-02 5.06194135765e-02 4.83002627794e-02 4.42752514752e-02 3.90976289629e-02 3.34971688966e-02 + 2.80812943983e-02 2.32368358951e-02 1.91448778653e-02 1.58329883187e-02 1.32437842255e-02 1.12951380995e-02 + 9.91029781221e-03 9.02578945364e-03 8.59555582378e-03 8.59555582378e-03 9.02578945364e-03 9.91029781221e-03 + 1.12951380995e-02 1.32437842255e-02 1.58329883187e-02 1.91448778653e-02 2.32368358951e-02 2.80812943983e-02 + 3.34971688966e-02 3.90976289629e-02 4.42752514752e-02 4.83002627794e-02 5.06194135765e-02 5.12221625406e-02 + 5.07010770424e-02 4.98718618187e-02 4.93308963719e-02 4.93308963719e-02 4.98718618187e-02 5.07010770424e-02 + 5.43925934286e-02 5.04463447592e-02 4.53738413591e-02 3.96081166256e-02 3.36893635306e-02 2.80812943983e-02 + 2.30924993956e-02 1.88720574247e-02 1.54388806266e-02 1.27327884289e-02 1.06671499136e-02 9.15892896774e-03 + 8.13716815266e-03 7.54684340873e-03 7.35383003280e-03 7.54684340873e-03 8.13716815266e-03 9.15892896774e-03 + 1.06671499136e-02 1.27327884289e-02 1.54388806266e-02 1.88720574247e-02 2.30924993956e-02 2.80812943983e-02 + 3.36893635306e-02 3.96081166256e-02 4.53738413591e-02 5.04463447592e-02 5.43925934286e-02 5.70772559013e-02 + 5.86758842735e-02 5.94868177545e-02 5.97323039443e-02 5.94868177545e-02 5.86758842735e-02 5.70772559013e-02 + 5.26931433274e-02 4.67810667612e-02 4.04742233092e-02 3.42208946471e-02 2.83925891295e-02 2.32368358951e-02 + 1.88720574247e-02 1.53065353883e-02 1.24770996440e-02 1.02937156151e-02 8.66817035987e-03 7.52314503521e-03 + 6.79567554150e-03 6.44245195186e-03 6.44245195186e-03 6.79567554150e-03 7.52314503521e-03 8.66817035987e-03 + 1.02937156151e-02 1.24770996440e-02 1.53065353883e-02 1.88720574247e-02 2.32368358951e-02 2.83925891295e-02 + 3.42208946471e-02 4.04742233092e-02 4.67810667612e-02 5.26931433274e-02 5.77843769256e-02 6.17513938278e-02 + 6.44394828494e-02 6.57918464265e-02 6.57918464265e-02 6.44394828494e-02 6.17513938278e-02 5.77843769256e-02 + 4.80677366203e-02 4.14579289512e-02 3.49773595797e-02 2.89691250092e-02 2.36566460915e-02 1.91448778653e-02 + 1.54388806266e-02 1.24770996440e-02 1.01697655067e-02 8.42580807925e-03 7.16308508658e-03 6.31209415558e-03 + 5.82127807001e-03 5.66079261571e-03 5.82127807001e-03 6.31209415558e-03 7.16308508658e-03 8.42580807925e-03 + 1.01697655067e-02 1.24770996440e-02 1.54388806266e-02 1.91448778653e-02 2.36566460915e-02 2.89691250092e-02 + 3.49773595797e-02 4.14579289512e-02 4.80677366203e-02 5.43692149489e-02 5.98878714669e-02 6.41840706496e-02 + 6.69101294891e-02 6.78442738531e-02 6.69101294891e-02 6.41840706496e-02 5.98878714669e-02 5.43692149489e-02 + 4.23378898536e-02 3.58243136049e-02 2.97391273192e-02 2.43184216158e-02 1.96777557044e-02 1.58329883187e-02 + 1.27327884289e-02 1.02937156151e-02 8.42580807925e-03 7.04448483440e-03 6.07562992209e-03 5.46093720174e-03 + 5.16243150929e-03 5.16243150929e-03 5.46093720174e-03 6.07562992209e-03 7.04448483440e-03 8.42580807925e-03 + 1.02937156151e-02 1.27327884289e-02 1.58329883187e-02 1.96777557044e-02 2.43184216158e-02 2.97391273192e-02 + 3.58243136049e-02 4.23378898536e-02 4.89192305177e-02 5.51031089527e-02 6.03694423859e-02 6.42180018992e-02 + 6.62522137956e-02 6.62522137956e-02 6.42180018992e-02 6.03694423859e-02 5.51031089527e-02 4.89192305177e-02 + 3.66568505349e-02 3.06330408871e-02 2.51823253991e-02 2.04512222766e-02 1.64818809732e-02 1.32437842255e-02 + 1.06671499136e-02 8.66817035987e-03 7.16308508658e-03 6.07562992209e-03 5.34296096392e-03 4.92029966810e-03 + 4.78210810048e-03 4.92029966810e-03 5.34296096392e-03 6.07562992209e-03 7.16308508658e-03 8.66817035987e-03 + 1.06671499136e-02 1.32437842255e-02 1.64818809732e-02 2.04512222766e-02 2.51823253991e-02 3.06330408871e-02 + 3.66568505349e-02 4.29832635915e-02 4.92182336225e-02 5.48714786192e-02 5.94150808572e-02 6.23688231248e-02 + 6.33941825467e-02 6.23688231248e-02 5.94150808572e-02 5.48714786192e-02 4.92182336225e-02 4.29832635915e-02 + 3.16041856284e-02 2.62153172241e-02 2.14468462049e-02 1.73786828448e-02 1.40109856905e-02 1.12951380995e-02 + 9.15892896774e-03 7.52314503521e-03 6.31209415558e-03 5.46093720174e-03 4.92029966810e-03 4.65785937656e-03 + 4.65785937656e-03 4.92029966810e-03 5.46093720174e-03 6.31209415558e-03 7.52314503521e-03 9.15892896774e-03 + 1.12951380995e-02 1.40109856905e-02 1.73786828448e-02 2.14468462049e-02 2.62153172241e-02 3.16041856284e-02 + 3.74259862301e-02 4.33721592307e-02 4.90231496620e-02 5.38883507401e-02 5.74762428735e-02 5.93841418824e-02 + 5.93841418824e-02 5.74762428735e-02 5.38883507401e-02 4.90231496620e-02 4.33721592307e-02 3.74259862301e-02 + 2.73972646659e-02 2.26519365039e-02 1.85201445811e-02 1.50389831834e-02 1.21873907787e-02 9.91029781221e-03 + 8.13716815266e-03 6.79567554150e-03 5.82127807001e-03 5.16243150929e-03 4.78210810048e-03 4.65785937656e-03 + 4.78210810048e-03 5.16243150929e-03 5.82127807001e-03 6.79567554150e-03 8.13716815266e-03 9.91029781221e-03 + 1.21873907787e-02 1.50389831834e-02 1.85201445811e-02 2.26519365039e-02 2.73972646659e-02 3.26341221073e-02 + 3.81345549630e-02 4.35604474537e-02 4.84855850881e-02 5.24477482650e-02 5.50251512552e-02 5.59201471811e-02 + 5.50251512552e-02 5.24477482650e-02 4.84855850881e-02 4.35604474537e-02 3.81345549630e-02 3.26341221073e-02 + 2.40594329852e-02 1.99070659239e-02 1.63370205752e-02 1.33594815778e-02 1.09414577715e-02 9.02578945364e-03 + 7.54684340873e-03 6.44245195186e-03 5.66079261571e-03 5.16243150929e-03 4.92029966810e-03 4.92029966810e-03 + 5.16243150929e-03 5.66079261571e-03 6.44245195186e-03 7.54684340873e-03 9.02578945364e-03 1.09414577715e-02 + 1.33594815778e-02 1.63370205752e-02 1.99070659239e-02 2.40594329852e-02 2.87187367840e-02 3.37228748044e-02 + 3.88104397494e-02 4.36277000850e-02 4.77625301985e-02 5.08044555558e-02 5.24194501424e-02 5.24194501424e-02 + 5.08044555558e-02 4.77625301985e-02 4.36277000850e-02 3.88104397494e-02 3.37228748044e-02 2.87187367840e-02 + 2.15413174517e-02 1.79167348748e-02 1.48317912783e-02 1.22786655737e-02 1.02181471415e-02 8.59555582378e-03 + 7.35383003280e-03 6.44245195186e-03 5.82127807001e-03 5.46093720174e-03 5.34296096392e-03 5.46093720174e-03 + 5.82127807001e-03 6.44245195186e-03 7.35383003280e-03 8.59555582378e-03 1.02181471415e-02 1.22786655737e-02 + 1.48317912783e-02 1.79167348748e-02 2.15413174517e-02 2.56635113913e-02 3.01717861136e-02 3.48695445110e-02 + 3.94725484932e-02 4.36277000850e-02 4.69561004766e-02 4.91148354625e-02 4.98633146719e-02 4.91148354625e-02 + 4.69561004766e-02 4.36277000850e-02 3.94725484932e-02 3.48695445110e-02 3.01717861136e-02 2.56635113913e-02 + 1.97871783123e-02 1.66250325509e-02 1.39522993746e-02 1.17508350709e-02 9.98127039361e-03 8.59555582378e-03 + 7.54684340873e-03 6.79567554150e-03 6.31209415558e-03 6.07562992209e-03 6.07562992209e-03 6.31209415558e-03 + 6.79567554150e-03 7.54684340873e-03 8.59555582378e-03 9.98127039361e-03 1.17508350709e-02 1.39522993746e-02 + 1.66250325509e-02 1.97871783123e-02 2.34202555044e-02 2.74512061786e-02 3.17358390207e-02 3.60511821341e-02 + 4.01041807768e-02 4.35604474537e-02 4.60913389830e-02 4.74313143781e-02 4.74313143781e-02 4.60913389830e-02 + 4.35604474537e-02 4.01041807768e-02 3.60511821341e-02 3.17358390207e-02 2.74512061786e-02 2.34202555044e-02 + 1.87538902948e-02 1.59907282434e-02 1.36633879542e-02 1.17508350709e-02 1.02181471415e-02 9.02578945364e-03 + 8.13716815266e-03 7.52314503521e-03 7.16308508658e-03 7.04448483440e-03 7.16308508658e-03 7.52314503521e-03 + 8.13716815266e-03 9.02578945364e-03 1.02181471415e-02 1.17508350709e-02 1.36633879542e-02 1.59907282434e-02 + 1.87538902948e-02 2.19482820950e-02 2.55281844546e-02 2.93901320501e-02 3.33624200108e-02 3.72078996967e-02 + 4.06430475235e-02 4.33721592307e-02 4.51323632879e-02 4.57409612273e-02 4.51323632879e-02 4.33721592307e-02 + 4.06430475235e-02 3.72078996967e-02 3.33624200108e-02 2.93901320501e-02 2.55281844546e-02 2.19482820950e-02 + 1.84129279741e-02 1.59907282434e-02 1.39522993746e-02 1.22786655737e-02 1.09414577715e-02 9.91029781221e-03 + 9.15892896774e-03 8.66817035987e-03 8.42580807925e-03 8.42580807925e-03 8.66817035987e-03 9.15892896774e-03 + 9.91029781221e-03 1.09414577715e-02 1.22786655737e-02 1.39522993746e-02 1.59907282434e-02 1.84129279741e-02 + 2.12198093897e-02 2.43819637041e-02 2.78244998346e-02 3.14154606035e-02 3.49654910486e-02 3.82415861113e-02 + 4.09927131873e-02 4.29832635915e-02 4.40291518527e-02 4.40291518527e-02 4.29832635915e-02 4.09927131873e-02 + 3.82415861113e-02 3.49654910486e-02 3.14154606035e-02 2.78244998346e-02 2.43819637041e-02 2.12198093897e-02 + 1.87538902948e-02 1.66250325509e-02 1.48317912783e-02 1.33594815778e-02 1.21873907787e-02 1.12951380995e-02 + 1.06671499136e-02 1.02937156151e-02 1.01697655067e-02 1.02937156151e-02 1.06671499136e-02 1.12951380995e-02 + 1.21873907787e-02 1.33594815778e-02 1.48317912783e-02 1.66250325509e-02 1.87538902948e-02 2.12198093897e-02 + 2.40011711299e-02 2.70402901784e-02 3.02323588099e-02 3.34242157073e-02 3.64263171972e-02 3.90347179512e-02 + 4.10571769449e-02 4.23378898536e-02 4.27763236460e-02 4.23378898536e-02 4.10571769449e-02 3.90347179512e-02 + 3.64263171972e-02 3.34242157073e-02 3.02323588099e-02 2.70402901784e-02 2.40011711299e-02 2.12198093897e-02 + 1.97871783123e-02 1.79167348748e-02 1.63370205752e-02 1.50389831834e-02 1.40109856905e-02 1.32437842255e-02 + 1.27327884289e-02 1.24770996440e-02 1.24770996440e-02 1.27327884289e-02 1.32437842255e-02 1.40109856905e-02 + 1.50389831834e-02 1.63370205752e-02 1.79167348748e-02 1.97871783123e-02 2.19482820950e-02 2.43819637041e-02 + 2.70402901784e-02 2.98349904445e-02 3.26363277502e-02 3.52857897121e-02 3.76190713504e-02 3.94908104948e-02 + 4.07924714489e-02 4.14579289512e-02 4.14579289512e-02 4.07924714489e-02 3.94908104948e-02 3.76190713504e-02 + 3.52857897121e-02 3.26363277502e-02 2.98349904445e-02 2.70402901784e-02 2.43819637041e-02 2.19482820950e-02 + 2.15413174517e-02 1.99070659239e-02 1.85201445811e-02 1.73786828448e-02 1.64818809732e-02 1.58329883187e-02 + 1.54388806266e-02 1.53065353883e-02 1.54388806266e-02 1.58329883187e-02 1.64818809732e-02 1.73786828448e-02 + 1.85201445811e-02 1.99070659239e-02 2.15413174517e-02 2.34202555044e-02 2.55281844546e-02 2.78244998346e-02 + 3.02323588099e-02 3.26363277502e-02 3.48956024912e-02 3.68707660171e-02 3.84534160516e-02 3.95849180057e-02 + 4.02540981079e-02 4.04742233092e-02 4.02540981079e-02 3.95849180057e-02 3.84534160516e-02 3.68707660171e-02 + 3.48956024912e-02 3.26363277502e-02 3.02323588099e-02 2.78244998346e-02 2.55281844546e-02 2.34202555044e-02 + 2.40594329852e-02 2.26519365039e-02 2.14468462049e-02 2.04512222766e-02 1.96777557044e-02 1.91448778653e-02 + 1.88720574247e-02 1.88720574247e-02 1.91448778653e-02 1.96777557044e-02 2.04512222766e-02 2.14468462049e-02 + 2.26519365039e-02 2.40594329852e-02 2.56635113913e-02 2.74512061786e-02 2.93901320501e-02 3.14154606035e-02 + 3.34242157073e-02 3.52857897121e-02 3.68707660171e-02 3.80886538087e-02 3.89160663350e-02 3.93968315223e-02 + 3.96081166256e-02 3.96081166256e-02 3.93968315223e-02 3.89160663350e-02 3.80886538087e-02 3.68707660171e-02 + 3.52857897121e-02 3.34242157073e-02 3.14154606035e-02 2.93901320501e-02 2.74512061786e-02 2.56635113913e-02 + 2.73972646659e-02 2.62153172241e-02 2.51823253991e-02 2.43184216158e-02 2.36566460915e-02 2.32368358951e-02 + 2.30924993956e-02 2.32368358951e-02 2.36566460915e-02 2.43184216158e-02 2.51823253991e-02 2.62153172241e-02 + 2.73972646659e-02 2.87187367840e-02 3.01717861136e-02 3.17358390207e-02 3.33624200108e-02 3.49654910486e-02 + 3.64263171972e-02 3.76190713504e-02 3.84534160516e-02 3.89160663350e-02 3.90848689472e-02 3.90976289629e-02 + 3.90842281235e-02 3.90976289629e-02 3.90848689472e-02 3.89160663350e-02 3.84534160516e-02 3.76190713504e-02 + 3.64263171972e-02 3.49654910486e-02 3.33624200108e-02 3.17358390207e-02 3.01717861136e-02 2.87187367840e-02 + 3.16041856284e-02 3.06330408871e-02 2.97391273192e-02 2.89691250092e-02 2.83925891295e-02 2.80812943983e-02 + 2.80812943983e-02 2.83925891295e-02 2.89691250092e-02 2.97391273192e-02 3.06330408871e-02 3.16041856284e-02 + 3.26341221073e-02 3.37228748044e-02 3.48695445110e-02 3.60511821341e-02 3.72078996967e-02 3.82415861113e-02 + 3.90347179512e-02 3.94908104948e-02 3.95849180057e-02 3.93968315223e-02 3.90976289629e-02 3.88830541657e-02 + 3.88830541657e-02 3.90976289629e-02 3.93968315223e-02 3.95849180057e-02 3.94908104948e-02 3.90347179512e-02 + 3.82415861113e-02 3.72078996967e-02 3.60511821341e-02 3.48695445110e-02 3.37228748044e-02 3.26341221073e-02 + 3.66568505349e-02 3.58243136049e-02 3.49773595797e-02 3.42208946471e-02 3.36893635306e-02 3.34971688966e-02 + 3.36893635306e-02 3.42208946471e-02 3.49773595797e-02 3.58243136049e-02 3.66568505349e-02 3.74259862301e-02 + 3.81345549630e-02 3.88104397494e-02 3.94725484932e-02 4.01041807768e-02 4.06430475235e-02 4.09927131873e-02 + 4.10571769449e-02 4.07924714489e-02 4.02540981079e-02 3.96081166256e-02 3.90842281235e-02 3.88830541657e-02 + 3.90842281235e-02 3.96081166256e-02 4.02540981079e-02 4.07924714489e-02 4.10571769449e-02 4.09927131873e-02 + 4.06430475235e-02 4.01041807768e-02 3.94725484932e-02 3.88104397494e-02 3.81345549630e-02 3.74259862301e-02 + 4.23378898536e-02 4.14579289512e-02 4.04742233092e-02 3.96081166256e-02 3.90976289629e-02 3.90976289629e-02 + 3.96081166256e-02 4.04742233092e-02 4.14579289512e-02 4.23378898536e-02 4.29832635915e-02 4.33721592307e-02 + 4.35604474537e-02 4.36277000850e-02 4.36277000850e-02 4.35604474537e-02 4.33721592307e-02 4.29832635915e-02 + 4.23378898536e-02 4.14579289512e-02 4.04742233092e-02 3.96081166256e-02 3.90976289629e-02 3.90976289629e-02 + 3.96081166256e-02 4.04742233092e-02 4.14579289512e-02 4.23378898536e-02 4.29832635915e-02 4.33721592307e-02 + 4.35604474537e-02 4.36277000850e-02 4.36277000850e-02 4.35604474537e-02 4.33721592307e-02 4.29832635915e-02 + 4.80677366203e-02 4.67810667612e-02 4.53738413591e-02 4.42752514752e-02 4.38595264834e-02 4.42752514752e-02 + 4.53738413591e-02 4.67810667612e-02 4.80677366203e-02 4.89192305177e-02 4.92182336225e-02 4.90231496620e-02 + 4.84855850881e-02 4.77625301985e-02 4.69561004766e-02 4.60913389830e-02 4.51323632879e-02 4.40291518527e-02 + 4.27763236460e-02 4.14579289512e-02 4.02540981079e-02 3.93968315223e-02 3.90848689472e-02 3.93968315223e-02 + 4.02540981079e-02 4.14579289512e-02 4.27763236460e-02 4.40291518527e-02 4.51323632879e-02 4.60913389830e-02 + 4.69561004766e-02 4.77625301985e-02 4.84855850881e-02 4.90231496620e-02 4.92182336225e-02 4.89192305177e-02 + 5.26931433274e-02 5.04463447592e-02 4.83002627794e-02 4.69885184966e-02 4.69885184966e-02 4.83002627794e-02 + 5.04463447592e-02 5.26931433274e-02 5.43692149489e-02 5.51031089527e-02 5.48714786192e-02 5.38883507401e-02 + 5.24477482650e-02 5.08044555558e-02 4.91148354625e-02 4.74313143781e-02 4.57409612273e-02 4.40291518527e-02 + 4.23378898536e-02 4.07924714489e-02 3.95849180057e-02 3.89160663350e-02 3.89160663350e-02 3.95849180057e-02 + 4.07924714489e-02 4.23378898536e-02 4.40291518527e-02 4.57409612273e-02 4.74313143781e-02 4.91148354625e-02 + 5.08044555558e-02 5.24477482650e-02 5.38883507401e-02 5.48714786192e-02 5.51031089527e-02 5.43692149489e-02 + 5.43925934286e-02 5.06194135765e-02 4.76689314688e-02 4.65545163206e-02 4.76689314688e-02 5.06194135765e-02 + 5.43925934286e-02 5.77843769256e-02 5.98878714669e-02 6.03694423859e-02 5.94150808572e-02 5.74762428735e-02 + 5.50251512552e-02 5.24194501424e-02 4.98633146719e-02 4.74313143781e-02 4.51323632879e-02 4.29832635915e-02 + 4.10571769449e-02 3.94908104948e-02 3.84534160516e-02 3.80886538087e-02 3.84534160516e-02 3.94908104948e-02 + 4.10571769449e-02 4.29832635915e-02 4.51323632879e-02 4.74313143781e-02 4.98633146719e-02 5.24194501424e-02 + 5.50251512552e-02 5.74762428735e-02 5.94150808572e-02 6.03694423859e-02 5.98878714669e-02 5.77843769256e-02 + 5.12221625406e-02 4.58777097769e-02 4.27064575993e-02 4.27064575993e-02 4.58777097769e-02 5.12221625406e-02 + 5.70772559013e-02 6.17513938278e-02 6.41840706496e-02 6.42180018992e-02 6.23688231248e-02 5.93841418824e-02 + 5.59201471811e-02 5.24194501424e-02 4.91148354625e-02 4.60913389830e-02 4.33721592307e-02 4.09927131873e-02 + 3.90347179512e-02 3.76190713504e-02 3.68707660171e-02 3.68707660171e-02 3.76190713504e-02 3.90347179512e-02 + 4.09927131873e-02 4.33721592307e-02 4.60913389830e-02 4.91148354625e-02 5.24194501424e-02 5.59201471811e-02 + 5.93841418824e-02 6.23688231248e-02 6.42180018992e-02 6.41840706496e-02 6.17513938278e-02 5.70772559013e-02 + 4.26203265537e-02 3.67025276917e-02 3.45455630665e-02 3.67025276917e-02 4.26203265537e-02 5.07010770424e-02 + 5.86758842735e-02 6.44394828494e-02 6.69101294891e-02 6.62522137956e-02 6.33941825467e-02 5.93841418824e-02 + 5.50251512552e-02 5.08044555558e-02 4.69561004766e-02 4.35604474537e-02 4.06430475235e-02 3.82415861113e-02 + 3.64263171972e-02 3.52857897121e-02 3.48956024912e-02 3.52857897121e-02 3.64263171972e-02 3.82415861113e-02 + 4.06430475235e-02 4.35604474537e-02 4.69561004766e-02 5.08044555558e-02 5.50251512552e-02 5.93841418824e-02 + 6.33941825467e-02 6.62522137956e-02 6.69101294891e-02 6.44394828494e-02 5.86758842735e-02 5.07010770424e-02 + 3.07039905741e-02 2.59250062413e-02 2.59250062413e-02 3.07039905741e-02 3.93541671489e-02 4.98718618187e-02 + 5.94868177545e-02 6.57918464265e-02 6.78442738531e-02 6.62522137956e-02 6.23688231248e-02 5.74762428735e-02 + 5.24477482650e-02 4.77625301985e-02 4.36277000850e-02 4.01041807768e-02 3.72078996967e-02 3.49654910486e-02 + 3.34242157073e-02 3.26363277502e-02 3.26363277502e-02 3.34242157073e-02 3.49654910486e-02 3.72078996967e-02 + 4.01041807768e-02 4.36277000850e-02 4.77625301985e-02 5.24477482650e-02 5.74762428735e-02 6.23688231248e-02 + 6.62522137956e-02 6.78442738531e-02 6.57918464265e-02 5.94868177545e-02 4.98718618187e-02 3.93541671489e-02 + 1.93490286376e-02 1.69491736420e-02 1.93490286376e-02 2.63856510811e-02 3.71417160544e-02 4.93308963719e-02 + 5.97323039443e-02 6.57918464265e-02 6.69101294891e-02 6.42180018992e-02 5.94150808572e-02 5.38883507401e-02 + 4.84855850881e-02 4.36277000850e-02 3.94725484932e-02 3.60511821341e-02 3.33624200108e-02 3.14154606035e-02 + 3.02323588099e-02 2.98349904445e-02 3.02323588099e-02 3.14154606035e-02 3.33624200108e-02 3.60511821341e-02 + 3.94725484932e-02 4.36277000850e-02 4.84855850881e-02 5.38883507401e-02 5.94150808572e-02 6.42180018992e-02 + 6.69101294891e-02 6.57918464265e-02 5.97323039443e-02 4.93308963719e-02 3.71417160544e-02 2.63856510811e-02 + 1.14596764125e-02 1.14596764125e-02 1.56860392578e-02 2.42761411551e-02 3.63849623957e-02 4.93308963719e-02 + 5.94868177545e-02 6.44394828494e-02 6.41840706496e-02 6.03694423859e-02 5.48714786192e-02 4.90231496620e-02 + 4.35604474537e-02 3.88104397494e-02 3.48695445110e-02 3.17358390207e-02 2.93901320501e-02 2.78244998346e-02 + 2.70402901784e-02 2.70402901784e-02 2.78244998346e-02 2.93901320501e-02 3.17358390207e-02 3.48695445110e-02 + 3.88104397494e-02 4.35604474537e-02 4.90231496620e-02 5.48714786192e-02 6.03694423859e-02 6.41840706496e-02 + 6.44394828494e-02 5.94868177545e-02 4.93308963719e-02 3.63849623957e-02 2.42761411551e-02 1.56860392578e-02 + 7.45857574908e-03 9.13060134292e-03 1.45732066269e-02 2.42761411551e-02 3.71417160544e-02 4.98718618187e-02 + 5.86758842735e-02 6.17513938278e-02 5.98878714669e-02 5.51031089527e-02 4.92182336225e-02 4.33721592307e-02 + 3.81345549630e-02 3.37228748044e-02 3.01717861136e-02 2.74512061786e-02 2.55281844546e-02 2.43819637041e-02 + 2.40011711299e-02 2.43819637041e-02 2.55281844546e-02 2.74512061786e-02 3.01717861136e-02 3.37228748044e-02 + 3.81345549630e-02 4.33721592307e-02 4.92182336225e-02 5.51031089527e-02 5.98878714669e-02 6.17513938278e-02 + 5.86758842735e-02 4.98718618187e-02 3.71417160544e-02 2.42761411551e-02 1.45732066269e-02 9.13060134292e-03 + 6.32692063078e-03 9.13060134292e-03 1.56860392578e-02 2.63856510811e-02 3.93541671489e-02 5.07010770424e-02 + 5.70772559013e-02 5.77843769256e-02 5.43692149489e-02 4.89192305177e-02 4.29832635915e-02 3.74259862301e-02 + 3.26341221073e-02 2.87187367840e-02 2.56635113913e-02 2.34202555044e-02 2.19482820950e-02 2.12198093897e-02 + 2.12198093897e-02 2.19482820950e-02 2.34202555044e-02 2.56635113913e-02 2.87187367840e-02 3.26341221073e-02 + 3.74259862301e-02 4.29832635915e-02 4.89192305177e-02 5.43692149489e-02 5.77843769256e-02 5.70772559013e-02 + 5.07010770424e-02 3.93541671489e-02 2.63856510811e-02 1.56860392578e-02 9.13060134292e-03 6.32692063078e-03 + 1.69819929531e-02 2.23413746600e-02 3.07039905741e-02 4.02808330656e-02 4.79609401864e-02 5.13869204668e-02 + 5.03535465114e-02 4.62623331670e-02 4.07924714489e-02 3.51532871168e-02 3.00149219248e-02 2.56657154446e-02 + 2.21666114252e-02 1.94746684497e-02 1.75241772421e-02 1.62588522549e-02 1.56375665721e-02 1.56375665721e-02 + 1.62588522549e-02 1.75241772421e-02 1.94746684497e-02 2.21666114252e-02 2.56657154446e-02 3.00149219248e-02 + 3.51532871168e-02 4.07924714489e-02 4.62623331670e-02 5.03535465114e-02 5.13869204668e-02 4.79609401864e-02 + 4.02808330656e-02 3.07039905741e-02 2.23413746600e-02 1.69819929531e-02 1.46090879135e-02 1.46090879135e-02 + 2.23413746600e-02 2.86292518106e-02 3.67025276917e-02 4.41366450522e-02 4.83941231678e-02 4.85080722970e-02 + 4.52857661696e-02 4.02540981079e-02 3.47182328687e-02 2.94854041377e-02 2.49511167951e-02 2.12413612776e-02 + 1.83376793613e-02 1.61729889157e-02 1.46810426016e-02 1.38094745262e-02 1.35231772103e-02 1.38094745262e-02 + 1.46810426016e-02 1.61729889157e-02 1.83376793613e-02 2.12413612776e-02 2.49511167951e-02 2.94854041377e-02 + 3.47182328687e-02 4.02540981079e-02 4.52857661696e-02 4.85080722970e-02 4.83941231678e-02 4.41366450522e-02 + 3.67025276917e-02 2.86292518106e-02 2.23413746600e-02 1.87771308641e-02 1.76819501362e-02 1.87771308641e-02 + 3.07039905741e-02 3.67025276917e-02 4.27064575993e-02 4.65545163206e-02 4.69885184966e-02 4.42752514752e-02 + 3.96081166256e-02 3.42208946471e-02 2.89691250092e-02 2.43184216158e-02 2.04512222766e-02 1.73786828448e-02 + 1.50389831834e-02 1.33594815778e-02 1.22786655737e-02 1.17508350709e-02 1.17508350709e-02 1.22786655737e-02 + 1.33594815778e-02 1.50389831834e-02 1.73786828448e-02 2.04512222766e-02 2.43184216158e-02 2.89691250092e-02 + 3.42208946471e-02 3.96081166256e-02 4.42752514752e-02 4.69885184966e-02 4.65545163206e-02 4.27064575993e-02 + 3.67025276917e-02 3.07039905741e-02 2.63856510811e-02 2.42761411551e-02 2.42761411551e-02 2.63856510811e-02 + 4.02808330656e-02 4.41366450522e-02 4.65545163206e-02 4.64020316983e-02 4.36365698621e-02 3.90842281235e-02 + 3.37780927799e-02 2.85205562719e-02 2.37914166767e-02 1.98052910067e-02 1.65980023724e-02 1.41157952825e-02 + 1.22825573408e-02 1.10293847869e-02 1.03016601350e-02 1.00633149755e-02 1.03016601350e-02 1.10293847869e-02 + 1.22825573408e-02 1.41157952825e-02 1.65980023724e-02 1.98052910067e-02 2.37914166767e-02 2.85205562719e-02 + 3.37780927799e-02 3.90842281235e-02 4.36365698621e-02 4.64020316983e-02 4.65545163206e-02 4.41366450522e-02 + 4.02808330656e-02 3.65582592974e-02 3.40771392673e-02 3.32338776264e-02 3.40771392673e-02 3.65582592974e-02 + 4.79609401864e-02 4.83941231678e-02 4.69885184966e-02 4.36365698621e-02 3.88830541657e-02 3.35158471123e-02 + 2.82105864296e-02 2.34067395586e-02 1.93203741197e-02 1.59997599900e-02 1.33976732300e-02 1.14361707830e-02 + 1.00404664762e-02 9.14830218340e-03 8.71419097250e-03 8.71419097250e-03 9.14830218340e-03 1.00404664762e-02 + 1.14361707830e-02 1.33976732300e-02 1.59997599900e-02 1.93203741197e-02 2.34067395586e-02 2.82105864296e-02 + 3.35158471123e-02 3.88830541657e-02 4.36365698621e-02 4.69885184966e-02 4.83941231678e-02 4.79609401864e-02 + 4.64751950426e-02 4.49279278957e-02 4.40123223759e-02 4.40123223759e-02 4.49279278957e-02 4.64751950426e-02 + 5.13869204668e-02 4.85080722970e-02 4.42752514752e-02 3.90842281235e-02 3.35158471123e-02 2.80994006567e-02 + 2.32023283361e-02 1.90175139009e-02 1.55924938344e-02 1.28827341282e-02 1.08088949298e-02 9.29162040305e-03 + 8.26229038338e-03 7.66717366082e-03 7.47255069610e-03 7.66717366082e-03 8.26229038338e-03 9.29162040305e-03 + 1.08088949298e-02 1.28827341282e-02 1.55924938344e-02 1.90175139009e-02 2.32023283361e-02 2.80994006567e-02 + 3.35158471123e-02 3.90842281235e-02 4.42752514752e-02 4.85080722970e-02 5.13869204668e-02 5.29210396854e-02 + 5.34983990182e-02 5.36143814352e-02 5.36149267734e-02 5.36143814352e-02 5.34983990182e-02 5.29210396854e-02 + 5.03535465114e-02 4.52857661696e-02 3.96081166256e-02 3.37780927799e-02 2.82105864296e-02 2.32023283361e-02 + 1.89142861556e-02 1.53857855201e-02 1.25723726562e-02 1.03937663652e-02 8.76725594498e-03 7.61927184895e-03 + 6.88914005847e-03 6.53448601861e-03 6.53448601861e-03 6.88914005847e-03 7.61927184895e-03 8.76725594498e-03 + 1.03937663652e-02 1.25723726562e-02 1.53857855201e-02 1.89142861556e-02 2.32023283361e-02 2.82105864296e-02 + 3.37780927799e-02 3.96081166256e-02 4.52857661696e-02 5.03535465114e-02 5.44475263977e-02 5.74105494947e-02 + 5.92810318582e-02 6.01752681104e-02 6.01752681104e-02 5.92810318582e-02 5.74105494947e-02 5.44475263977e-02 + 4.62623331670e-02 4.02540981079e-02 3.42208946471e-02 2.85205562719e-02 2.34067395586e-02 1.90175139009e-02 + 1.53857855201e-02 1.24686371753e-02 1.01870819285e-02 8.45686847188e-03 7.20097316500e-03 6.35335851926e-03 + 5.86418256271e-03 5.70420021497e-03 5.86418256271e-03 6.35335851926e-03 7.20097316500e-03 8.45686847188e-03 + 1.01870819285e-02 1.24686371753e-02 1.53857855201e-02 1.90175139009e-02 2.34067395586e-02 2.85205562719e-02 + 3.42208946471e-02 4.02540981079e-02 4.62623331670e-02 5.18281863755e-02 5.65511919643e-02 6.01184381094e-02 + 6.23288110708e-02 6.30764730892e-02 6.23288110708e-02 6.01184381094e-02 5.65511919643e-02 5.18281863755e-02 + 4.07924714489e-02 3.47182328687e-02 2.89691250092e-02 2.37914166767e-02 1.93203741197e-02 1.55924938344e-02 + 1.25723726562e-02 1.01870819285e-02 8.35413904759e-03 6.99504538611e-03 6.04016501968e-03 5.43377044817e-03 + 5.13913617973e-03 5.13913617973e-03 5.43377044817e-03 6.04016501968e-03 6.99504538611e-03 8.35413904759e-03 + 1.01870819285e-02 1.25723726562e-02 1.55924938344e-02 1.93203741197e-02 2.37914166767e-02 2.89691250092e-02 + 3.47182328687e-02 4.07924714489e-02 4.68401774785e-02 5.24339557043e-02 5.71251588417e-02 6.05090723285e-02 + 6.22821499923e-02 6.22821499923e-02 6.05090723285e-02 5.71251588417e-02 5.24339557043e-02 4.68401774785e-02 + 3.51532871168e-02 2.94854041377e-02 2.43184216158e-02 1.98052910067e-02 1.59997599900e-02 1.28827341282e-02 + 1.03937663652e-02 8.45686847188e-03 6.99504538611e-03 5.93719631865e-03 5.22371135458e-03 4.81172327806e-03 + 4.67692793169e-03 4.81172327806e-03 5.22371135458e-03 5.93719631865e-03 6.99504538611e-03 8.45686847188e-03 + 1.03937663652e-02 1.28827341282e-02 1.59997599900e-02 1.98052910067e-02 2.43184216158e-02 2.94854041377e-02 + 3.51532871168e-02 4.10571769449e-02 4.68264624901e-02 5.20147259753e-02 5.61547897924e-02 5.88318176265e-02 + 5.97584596222e-02 5.88318176265e-02 5.61547897924e-02 5.20147259753e-02 4.68264624901e-02 4.10571769449e-02 + 3.00149219248e-02 2.49511167951e-02 2.04512222766e-02 1.65980023724e-02 1.33976732300e-02 1.08088949298e-02 + 8.76725594498e-03 7.20097316500e-03 6.04016501968e-03 5.22371135458e-03 4.70458873539e-03 4.45230019628e-03 + 4.45230019628e-03 4.70458873539e-03 5.22371135458e-03 6.04016501968e-03 7.20097316500e-03 8.76725594498e-03 + 1.08088949298e-02 1.33976732300e-02 1.65980023724e-02 2.04512222766e-02 2.49511167951e-02 3.00149219248e-02 + 3.54595415232e-02 4.09927131873e-02 4.62258246981e-02 5.07121410456e-02 5.40097122002e-02 5.57595749637e-02 + 5.57595749637e-02 5.40097122002e-02 5.07121410456e-02 4.62258246981e-02 4.09927131873e-02 3.54595415232e-02 + 2.56657154446e-02 2.12413612776e-02 1.73786828448e-02 1.41157952825e-02 1.14361707830e-02 9.29162040305e-03 + 7.61927184895e-03 6.35335851926e-03 5.43377044817e-03 4.81172327806e-03 4.45230019628e-03 4.33477840900e-03 + 4.45230019628e-03 4.81172327806e-03 5.43377044817e-03 6.35335851926e-03 7.61927184895e-03 9.29162040305e-03 + 1.14361707830e-02 1.41157952825e-02 1.73786828448e-02 2.12413612776e-02 2.56657154446e-02 3.05340710560e-02 + 3.56312088557e-02 4.06430475235e-02 4.51788789706e-02 4.88190878681e-02 5.11831265828e-02 5.20033431247e-02 + 5.11831265828e-02 4.88190878681e-02 4.51788789706e-02 4.06430475235e-02 3.56312088557e-02 3.05340710560e-02 + 2.21666114252e-02 1.83376793613e-02 1.50389831834e-02 1.22825573408e-02 1.00404664762e-02 8.26229038338e-03 + 6.88914005847e-03 5.86418256271e-03 5.13913617973e-03 4.67692793169e-03 4.45230019628e-03 4.45230019628e-03 + 4.67692793169e-03 5.13913617973e-03 5.86418256271e-03 6.88914005847e-03 8.26229038338e-03 1.00404664762e-02 + 1.22825573408e-02 1.50389831834e-02 1.83376793613e-02 2.21666114252e-02 2.64534808200e-02 3.10465495213e-02 + 3.57044700685e-02 4.01041807768e-02 4.38725463784e-02 4.66403070569e-02 4.81082332430e-02 4.81082332430e-02 + 4.66403070569e-02 4.38725463784e-02 4.01041807768e-02 3.57044700685e-02 3.10465495213e-02 2.64534808200e-02 + 1.94746684497e-02 1.61729889157e-02 1.33594815778e-02 1.10293847869e-02 9.14830218340e-03 7.66717366082e-03 + 6.53448601861e-03 5.70420021497e-03 5.13913617973e-03 4.81172327806e-03 4.70458873539e-03 4.81172327806e-03 + 5.13913617973e-03 5.70420021497e-03 6.53448601861e-03 7.66717366082e-03 9.14830218340e-03 1.10293847869e-02 + 1.33594815778e-02 1.61729889157e-02 1.94746684497e-02 2.32231030162e-02 2.73140021666e-02 3.15673758761e-02 + 3.57259716101e-02 3.94725484932e-02 4.24686468881e-02 4.44094609233e-02 4.50819394473e-02 4.44094609233e-02 + 4.24686468881e-02 3.94725484932e-02 3.57259716101e-02 3.15673758761e-02 2.73140021666e-02 2.32231030162e-02 + 1.75241772421e-02 1.46810426016e-02 1.22786655737e-02 1.03016601350e-02 8.71419097250e-03 7.47255069610e-03 + 6.53448601861e-03 5.86418256271e-03 5.43377044817e-03 5.22371135458e-03 5.22371135458e-03 5.43377044817e-03 + 5.86418256271e-03 6.53448601861e-03 7.47255069610e-03 8.71419097250e-03 1.03016601350e-02 1.22786655737e-02 + 1.46810426016e-02 1.75241772421e-02 2.07887392229e-02 2.44059448105e-02 2.82446089484e-02 3.21049723875e-02 + 3.57259716101e-02 3.88104397494e-02 4.10670403681e-02 4.22610610741e-02 4.22610610741e-02 4.10670403681e-02 + 3.88104397494e-02 3.57259716101e-02 3.21049723875e-02 2.82446089484e-02 2.44059448105e-02 2.07887392229e-02 + 1.62588522549e-02 1.38094745262e-02 1.17508350709e-02 1.00633149755e-02 8.71419097250e-03 7.66717366082e-03 + 6.88914005847e-03 6.35335851926e-03 6.04016501968e-03 5.93719631865e-03 6.04016501968e-03 6.35335851926e-03 + 6.88914005847e-03 7.66717366082e-03 8.71419097250e-03 1.00633149755e-02 1.17508350709e-02 1.38094745262e-02 + 1.62588522549e-02 1.90940368490e-02 2.22726314479e-02 2.57019293917e-02 2.92302840650e-02 3.26483588385e-02 + 3.57044700685e-02 3.81345549630e-02 3.97029159910e-02 4.02453701311e-02 3.97029159910e-02 3.81345549630e-02 + 3.57044700685e-02 3.26483588385e-02 2.92302840650e-02 2.57019293917e-02 2.22726314479e-02 1.90940368490e-02 + 1.56375665721e-02 1.35231772103e-02 1.17508350709e-02 1.03016601350e-02 9.14830218340e-03 8.26229038338e-03 + 7.61927184895e-03 7.20097316500e-03 6.99504538611e-03 6.99504538611e-03 7.20097316500e-03 7.61927184895e-03 + 8.26229038338e-03 9.14830218340e-03 1.03016601350e-02 1.17508350709e-02 1.35231772103e-02 1.56375665721e-02 + 1.80960146721e-02 2.08735527936e-02 2.39063871143e-02 2.70818268649e-02 3.02357338101e-02 3.31615306069e-02 + 3.56312088557e-02 3.74259862301e-02 3.83718132369e-02 3.83718132369e-02 3.74259862301e-02 3.56312088557e-02 + 3.31615306069e-02 3.02357338101e-02 2.70818268649e-02 2.39063871143e-02 2.08735527936e-02 1.80960146721e-02 + 1.56375665721e-02 1.38094745262e-02 1.22786655737e-02 1.10293847869e-02 1.00404664762e-02 9.29162040305e-03 + 8.76725594498e-03 8.45686847188e-03 8.35413904759e-03 8.45686847188e-03 8.76725594498e-03 9.29162040305e-03 + 1.00404664762e-02 1.10293847869e-02 1.22786655737e-02 1.38094745262e-02 1.56375665721e-02 1.77666865554e-02 + 2.01812628043e-02 2.28368095394e-02 2.56499234494e-02 2.84935612207e-02 3.12022017908e-02 3.35871770820e-02 + 3.54595415232e-02 3.66568505349e-02 3.70689589239e-02 3.66568505349e-02 3.54595415232e-02 3.35871770820e-02 + 3.12022017908e-02 2.84935612207e-02 2.56499234494e-02 2.28368095394e-02 2.01812628043e-02 1.77666865554e-02 + 1.62588522549e-02 1.46810426016e-02 1.33594815778e-02 1.22825573408e-02 1.14361707830e-02 1.08088949298e-02 + 1.03937663652e-02 1.01870819285e-02 1.01870819285e-02 1.03937663652e-02 1.08088949298e-02 1.14361707830e-02 + 1.22825573408e-02 1.33594815778e-02 1.46810426016e-02 1.62588522549e-02 1.80960146721e-02 2.01812628043e-02 + 2.24815496090e-02 2.49333108373e-02 2.74372089612e-02 2.98615217076e-02 3.20546920774e-02 3.38635928392e-02 + 3.51532871168e-02 3.58243136049e-02 3.58243136049e-02 3.51532871168e-02 3.38635928392e-02 3.20546920774e-02 + 2.98615217076e-02 2.74372089612e-02 2.49333108373e-02 2.24815496090e-02 2.01812628043e-02 1.80960146721e-02 + 1.75241772421e-02 1.61729889157e-02 1.50389831834e-02 1.41157952825e-02 1.33976732300e-02 1.28827341282e-02 + 1.25723726562e-02 1.24686371753e-02 1.25723726562e-02 1.28827341282e-02 1.33976732300e-02 1.41157952825e-02 + 1.50389831834e-02 1.61729889157e-02 1.75241772421e-02 1.90940368490e-02 2.08735527936e-02 2.28368095394e-02 + 2.49333108373e-02 2.70827915169e-02 2.91781605866e-02 3.10978190541e-02 3.27229087590e-02 3.39533984936e-02 + 3.47182328687e-02 3.49773595797e-02 3.47182328687e-02 3.39533984936e-02 3.27229087590e-02 3.10978190541e-02 + 2.91781605866e-02 2.70827915169e-02 2.49333108373e-02 2.28368095394e-02 2.08735527936e-02 1.90940368490e-02 + 1.94746684497e-02 1.83376793613e-02 1.73786828448e-02 1.65980023724e-02 1.59997599900e-02 1.55924938344e-02 + 1.53857855201e-02 1.53857855201e-02 1.55924938344e-02 1.59997599900e-02 1.65980023724e-02 1.73786828448e-02 + 1.83376793613e-02 1.94746684497e-02 2.07887392229e-02 2.22726314479e-02 2.39063871143e-02 2.56499234494e-02 + 2.74372089612e-02 2.91781605866e-02 3.07715106065e-02 3.21243272248e-02 3.31691643222e-02 3.38709874542e-02 + 3.42208946471e-02 3.42208946471e-02 3.38709874542e-02 3.31691643222e-02 3.21243272248e-02 3.07715106065e-02 + 2.91781605866e-02 2.74372089612e-02 2.56499234494e-02 2.39063871143e-02 2.22726314479e-02 2.07887392229e-02 + 2.21666114252e-02 2.12413612776e-02 2.04512222766e-02 1.98052910067e-02 1.93203741197e-02 1.90175139009e-02 + 1.89142861556e-02 1.90175139009e-02 1.93203741197e-02 1.98052910067e-02 2.04512222766e-02 2.12413612776e-02 + 2.21666114252e-02 2.32231030162e-02 2.44059448105e-02 2.57019293917e-02 2.70818268649e-02 2.84935612207e-02 + 2.98615217076e-02 3.10978190541e-02 3.21243272248e-02 3.28952522339e-02 3.34071767353e-02 3.36893635306e-02 + 3.37780927799e-02 3.36893635306e-02 3.34071767353e-02 3.28952522339e-02 3.21243272248e-02 3.10978190541e-02 + 2.98615217076e-02 2.84935612207e-02 2.70818268649e-02 2.57019293917e-02 2.44059448105e-02 2.32231030162e-02 + 2.56657154446e-02 2.49511167951e-02 2.43184216158e-02 2.37914166767e-02 2.34067395586e-02 2.32023283361e-02 + 2.32023283361e-02 2.34067395586e-02 2.37914166767e-02 2.43184216158e-02 2.49511167951e-02 2.56657154446e-02 + 2.64534808200e-02 2.73140021666e-02 2.82446089484e-02 2.92302840650e-02 3.02357338101e-02 3.12022017908e-02 + 3.20546920774e-02 3.27229087590e-02 3.31691643222e-02 3.34071767353e-02 3.34971688966e-02 3.35158471123e-02 + 3.35158471123e-02 3.34971688966e-02 3.34071767353e-02 3.31691643222e-02 3.27229087590e-02 3.20546920774e-02 + 3.12022017908e-02 3.02357338101e-02 2.92302840650e-02 2.82446089484e-02 2.73140021666e-02 2.64534808200e-02 + 3.00149219248e-02 2.94854041377e-02 2.89691250092e-02 2.85205562719e-02 2.82105864296e-02 2.80994006567e-02 + 2.82105864296e-02 2.85205562719e-02 2.89691250092e-02 2.94854041377e-02 3.00149219248e-02 3.05340710560e-02 + 3.10465495213e-02 3.15673758761e-02 3.21049723875e-02 3.26483588385e-02 3.31615306069e-02 3.35871770820e-02 + 3.38635928392e-02 3.39533984936e-02 3.38709874542e-02 3.36893635306e-02 3.35158471123e-02 3.34454153402e-02 + 3.35158471123e-02 3.36893635306e-02 3.38709874542e-02 3.39533984936e-02 3.38635928392e-02 3.35871770820e-02 + 3.31615306069e-02 3.26483588385e-02 3.21049723875e-02 3.15673758761e-02 3.10465495213e-02 3.05340710560e-02 + 3.51532871168e-02 3.47182328687e-02 3.42208946471e-02 3.37780927799e-02 3.35158471123e-02 3.35158471123e-02 + 3.37780927799e-02 3.42208946471e-02 3.47182328687e-02 3.51532871168e-02 3.54595415232e-02 3.56312088557e-02 + 3.57044700685e-02 3.57259716101e-02 3.57259716101e-02 3.57044700685e-02 3.56312088557e-02 3.54595415232e-02 + 3.51532871168e-02 3.47182328687e-02 3.42208946471e-02 3.37780927799e-02 3.35158471123e-02 3.35158471123e-02 + 3.37780927799e-02 3.42208946471e-02 3.47182328687e-02 3.51532871168e-02 3.54595415232e-02 3.56312088557e-02 + 3.57044700685e-02 3.57259716101e-02 3.57259716101e-02 3.57044700685e-02 3.56312088557e-02 3.54595415232e-02 + 4.07924714489e-02 4.02540981079e-02 3.96081166256e-02 3.90842281235e-02 3.88830541657e-02 3.90842281235e-02 + 3.96081166256e-02 4.02540981079e-02 4.07924714489e-02 4.10571769449e-02 4.09927131873e-02 4.06430475235e-02 + 4.01041807768e-02 3.94725484932e-02 3.88104397494e-02 3.81345549630e-02 3.74259862301e-02 3.66568505349e-02 + 3.58243136049e-02 3.49773595797e-02 3.42208946471e-02 3.36893635306e-02 3.34971688966e-02 3.36893635306e-02 + 3.42208946471e-02 3.49773595797e-02 3.58243136049e-02 3.66568505349e-02 3.74259862301e-02 3.81345549630e-02 + 3.88104397494e-02 3.94725484932e-02 4.01041807768e-02 4.06430475235e-02 4.09927131873e-02 4.10571769449e-02 + 4.62623331670e-02 4.52857661696e-02 4.42752514752e-02 4.36365698621e-02 4.36365698621e-02 4.42752514752e-02 + 4.52857661696e-02 4.62623331670e-02 4.68401774785e-02 4.68264624901e-02 4.62258246981e-02 4.51788789706e-02 + 4.38725463784e-02 4.24686468881e-02 4.10670403681e-02 3.97029159910e-02 3.83718132369e-02 3.70689589239e-02 + 3.58243136049e-02 3.47182328687e-02 3.38709874542e-02 3.34071767353e-02 3.34071767353e-02 3.38709874542e-02 + 3.47182328687e-02 3.58243136049e-02 3.70689589239e-02 3.83718132369e-02 3.97029159910e-02 4.10670403681e-02 + 4.24686468881e-02 4.38725463784e-02 4.51788789706e-02 4.62258246981e-02 4.68264624901e-02 4.68401774785e-02 + 5.03535465114e-02 4.85080722970e-02 4.69885184966e-02 4.64020316983e-02 4.69885184966e-02 4.85080722970e-02 + 5.03535465114e-02 5.18281863755e-02 5.24339557043e-02 5.20147259753e-02 5.07121410456e-02 4.88190878681e-02 + 4.66403070569e-02 4.44094609233e-02 4.22610610741e-02 4.02453701311e-02 3.83718132369e-02 3.66568505349e-02 + 3.51532871168e-02 3.39533984936e-02 3.31691643222e-02 3.28952522339e-02 3.31691643222e-02 3.39533984936e-02 + 3.51532871168e-02 3.66568505349e-02 3.83718132369e-02 4.02453701311e-02 4.22610610741e-02 4.44094609233e-02 + 4.66403070569e-02 4.88190878681e-02 5.07121410456e-02 5.20147259753e-02 5.24339557043e-02 5.18281863755e-02 + 5.13869204668e-02 4.83941231678e-02 4.65545163206e-02 4.65545163206e-02 4.83941231678e-02 5.13869204668e-02 + 5.44475263977e-02 5.65511919643e-02 5.71251588417e-02 5.61547897924e-02 5.40097122002e-02 5.11831265828e-02 + 4.81082332430e-02 4.50819394473e-02 4.22610610741e-02 3.97029159910e-02 3.74259862301e-02 3.54595415232e-02 + 3.38635928392e-02 3.27229087590e-02 3.21243272248e-02 3.21243272248e-02 3.27229087590e-02 3.38635928392e-02 + 3.54595415232e-02 3.74259862301e-02 3.97029159910e-02 4.22610610741e-02 4.50819394473e-02 4.81082332430e-02 + 5.11831265828e-02 5.40097122002e-02 5.61547897924e-02 5.71251588417e-02 5.65511919643e-02 5.44475263977e-02 + 4.79609401864e-02 4.41366450522e-02 4.27064575993e-02 4.41366450522e-02 4.79609401864e-02 5.29210396854e-02 + 5.74105494947e-02 6.01184381094e-02 6.05090723285e-02 5.88318176265e-02 5.57595749637e-02 5.20033431247e-02 + 4.81082332430e-02 4.44094609233e-02 4.10670403681e-02 3.81345549630e-02 3.56312088557e-02 3.35871770820e-02 + 3.20546920774e-02 3.10978190541e-02 3.07715106065e-02 3.10978190541e-02 3.20546920774e-02 3.35871770820e-02 + 3.56312088557e-02 3.81345549630e-02 4.10670403681e-02 4.44094609233e-02 4.81082332430e-02 5.20033431247e-02 + 5.57595749637e-02 5.88318176265e-02 6.05090723285e-02 6.01184381094e-02 5.74105494947e-02 5.29210396854e-02 + 4.02808330656e-02 3.67025276917e-02 3.67025276917e-02 4.02808330656e-02 4.64751950426e-02 5.34983990182e-02 + 5.92810318582e-02 6.23288110708e-02 6.22821499923e-02 5.97584596222e-02 5.57595749637e-02 5.11831265828e-02 + 4.66403070569e-02 4.24686468881e-02 3.88104397494e-02 3.57044700685e-02 3.31615306069e-02 3.12022017908e-02 + 2.98615217076e-02 2.91781605866e-02 2.91781605866e-02 2.98615217076e-02 3.12022017908e-02 3.31615306069e-02 + 3.57044700685e-02 3.88104397494e-02 4.24686468881e-02 4.66403070569e-02 5.11831265828e-02 5.57595749637e-02 + 5.97584596222e-02 6.22821499923e-02 6.23288110708e-02 5.92810318582e-02 5.34983990182e-02 4.64751950426e-02 + 3.07039905741e-02 2.86292518106e-02 3.07039905741e-02 3.65582592974e-02 4.49279278957e-02 5.36143814352e-02 + 6.01752681104e-02 6.30764730892e-02 6.22821499923e-02 5.88318176265e-02 5.40097122002e-02 4.88190878681e-02 + 4.38725463784e-02 3.94725484932e-02 3.57259716101e-02 3.26483588385e-02 3.02357338101e-02 2.84935612207e-02 + 2.74372089612e-02 2.70827915169e-02 2.74372089612e-02 2.84935612207e-02 3.02357338101e-02 3.26483588385e-02 + 3.57259716101e-02 3.94725484932e-02 4.38725463784e-02 4.88190878681e-02 5.40097122002e-02 5.88318176265e-02 + 6.22821499923e-02 6.30764730892e-02 6.01752681104e-02 5.36143814352e-02 4.49279278957e-02 3.65582592974e-02 + 2.23413746600e-02 2.23413746600e-02 2.63856510811e-02 3.40771392673e-02 4.40123223759e-02 5.36149267734e-02 + 6.01752681104e-02 6.23288110708e-02 6.05090723285e-02 5.61547897924e-02 5.07121410456e-02 4.51788789706e-02 + 4.01041807768e-02 3.57259716101e-02 3.21049723875e-02 2.92302840650e-02 2.70818268649e-02 2.56499234494e-02 + 2.49333108373e-02 2.49333108373e-02 2.56499234494e-02 2.70818268649e-02 2.92302840650e-02 3.21049723875e-02 + 3.57259716101e-02 4.01041807768e-02 4.51788789706e-02 5.07121410456e-02 5.61547897924e-02 6.05090723285e-02 + 6.23288110708e-02 6.01752681104e-02 5.36149267734e-02 4.40123223759e-02 3.40771392673e-02 2.63856510811e-02 + 1.69819929531e-02 1.87771308641e-02 2.42761411551e-02 3.32338776264e-02 4.40123223759e-02 5.36143814352e-02 + 5.92810318582e-02 6.01184381094e-02 5.71251588417e-02 5.20147259753e-02 4.62258246981e-02 4.06430475235e-02 + 3.57044700685e-02 3.15673758761e-02 2.82446089484e-02 2.57019293917e-02 2.39063871143e-02 2.28368095394e-02 + 2.24815496090e-02 2.28368095394e-02 2.39063871143e-02 2.57019293917e-02 2.82446089484e-02 3.15673758761e-02 + 3.57044700685e-02 4.06430475235e-02 4.62258246981e-02 5.20147259753e-02 5.71251588417e-02 6.01184381094e-02 + 5.92810318582e-02 5.36143814352e-02 4.40123223759e-02 3.32338776264e-02 2.42761411551e-02 1.87771308641e-02 + 1.46090879135e-02 1.76819501362e-02 2.42761411551e-02 3.40771392673e-02 4.49279278957e-02 5.34983990182e-02 + 5.74105494947e-02 5.65511919643e-02 5.24339557043e-02 4.68264624901e-02 4.09927131873e-02 3.56312088557e-02 + 3.10465495213e-02 2.73140021666e-02 2.44059448105e-02 2.22726314479e-02 2.08735527936e-02 2.01812628043e-02 + 2.01812628043e-02 2.08735527936e-02 2.22726314479e-02 2.44059448105e-02 2.73140021666e-02 3.10465495213e-02 + 3.56312088557e-02 4.09927131873e-02 4.68264624901e-02 5.24339557043e-02 5.65511919643e-02 5.74105494947e-02 + 5.34983990182e-02 4.49279278957e-02 3.40771392673e-02 2.42761411551e-02 1.76819501362e-02 1.46090879135e-02 + 1.46090879135e-02 1.87771308641e-02 2.63856510811e-02 3.65582592974e-02 4.64751950426e-02 5.29210396854e-02 + 5.44475263977e-02 5.18281863755e-02 4.68401774785e-02 4.10571769449e-02 3.54595415232e-02 3.05340710560e-02 + 2.64534808200e-02 2.32231030162e-02 2.07887392229e-02 1.90940368490e-02 1.80960146721e-02 1.77666865554e-02 + 1.80960146721e-02 1.90940368490e-02 2.07887392229e-02 2.32231030162e-02 2.64534808200e-02 3.05340710560e-02 + 3.54595415232e-02 4.10571769449e-02 4.68401774785e-02 5.18281863755e-02 5.44475263977e-02 5.29210396854e-02 + 4.64751950426e-02 3.65582592974e-02 2.63856510811e-02 1.87771308641e-02 1.46090879135e-02 1.33581335706e-02 + 3.09103717113e-02 3.62214481565e-02 4.26203265537e-02 4.79609401864e-02 5.02620593726e-02 4.89738024005e-02 + 4.49623774036e-02 3.95849180057e-02 3.39533984936e-02 2.87439673059e-02 2.42781130820e-02 2.06439962171e-02 + 1.78072941675e-02 1.56960478729e-02 1.42425749040e-02 1.33939588194e-02 1.31152359900e-02 1.33939588194e-02 + 1.42425749040e-02 1.56960478729e-02 1.78072941675e-02 2.06439962171e-02 2.42781130820e-02 2.87439673059e-02 + 3.39533984936e-02 3.95849180057e-02 4.49623774036e-02 4.89738024005e-02 5.02620593726e-02 4.79609401864e-02 + 4.26203265537e-02 3.62214481565e-02 3.09103717113e-02 2.77489957459e-02 2.67478820537e-02 2.77489957459e-02 + 3.62214481565e-02 4.11986868029e-02 4.58777097769e-02 4.83941231678e-02 4.77793166757e-02 4.44045560444e-02 + 3.93968315223e-02 3.38709874542e-02 2.85879356046e-02 2.39549635512e-02 2.01220876747e-02 1.70848695603e-02 + 1.47756456624e-02 1.31198380533e-02 1.20550163598e-02 1.15351431719e-02 1.15351431719e-02 1.20550163598e-02 + 1.31198380533e-02 1.47756456624e-02 1.70848695603e-02 2.01220876747e-02 2.39549635512e-02 2.85879356046e-02 + 3.38709874542e-02 3.93968315223e-02 4.44045560444e-02 4.77793166757e-02 4.83941231678e-02 4.58777097769e-02 + 4.11986868029e-02 3.62214481565e-02 3.25101129901e-02 3.06594619284e-02 3.06594619284e-02 3.25101129901e-02 + 4.26203265537e-02 4.58777097769e-02 4.76689314688e-02 4.69885184966e-02 4.38595264834e-02 3.90976289629e-02 + 3.36893635306e-02 2.83925891295e-02 2.36566460915e-02 1.96777557044e-02 1.64818809732e-02 1.40109856905e-02 + 1.21873907787e-02 1.09414577715e-02 1.02181471415e-02 9.98127039361e-03 1.02181471415e-02 1.09414577715e-02 + 1.21873907787e-02 1.40109856905e-02 1.64818809732e-02 1.96777557044e-02 2.36566460915e-02 2.83925891295e-02 + 3.36893635306e-02 3.90976289629e-02 4.38595264834e-02 4.69885184966e-02 4.76689314688e-02 4.58777097769e-02 + 4.26203265537e-02 3.93541671489e-02 3.71417160544e-02 3.63849623957e-02 3.71417160544e-02 3.93541671489e-02 + 4.79609401864e-02 4.83941231678e-02 4.69885184966e-02 4.36365698621e-02 3.88830541657e-02 3.35158471123e-02 + 2.82105864296e-02 2.34067395586e-02 1.93203741197e-02 1.59997599900e-02 1.33976732300e-02 1.14361707830e-02 + 1.00404664762e-02 9.14830218340e-03 8.71419097250e-03 8.71419097250e-03 9.14830218340e-03 1.00404664762e-02 + 1.14361707830e-02 1.33976732300e-02 1.59997599900e-02 1.93203741197e-02 2.34067395586e-02 2.82105864296e-02 + 3.35158471123e-02 3.88830541657e-02 4.36365698621e-02 4.69885184966e-02 4.83941231678e-02 4.79609401864e-02 + 4.64751950426e-02 4.49279278957e-02 4.40123223759e-02 4.40123223759e-02 4.49279278957e-02 4.64751950426e-02 + 5.02620593726e-02 4.77793166757e-02 4.38595264834e-02 3.88830541657e-02 3.34454153402e-02 2.81005086407e-02 + 2.32378434698e-02 1.90666010177e-02 1.56449525655e-02 1.29342051284e-02 1.08577130860e-02 9.33741418467e-03 + 8.30549434438e-03 7.70870330534e-03 7.51351058269e-03 7.70870330534e-03 8.30549434438e-03 9.33741418467e-03 + 1.08577130860e-02 1.29342051284e-02 1.56449525655e-02 1.90666010177e-02 2.32378434698e-02 2.81005086407e-02 + 3.34454153402e-02 3.88830541657e-02 4.38595264834e-02 4.77793166757e-02 5.02620593726e-02 5.13723037105e-02 + 5.15765048907e-02 5.14403532045e-02 5.13523903781e-02 5.14403532045e-02 5.15765048907e-02 5.13723037105e-02 + 4.89738024005e-02 4.44045560444e-02 3.90976289629e-02 3.35158471123e-02 2.81005086407e-02 2.31779027969e-02 + 1.89341271390e-02 1.54267827082e-02 1.26225341258e-02 1.04468583553e-02 8.82009872524e-03 7.67065297497e-03 + 6.93908976898e-03 6.58362639444e-03 6.58362639444e-03 6.93908976898e-03 7.67065297497e-03 8.82009872524e-03 + 1.04468583553e-02 1.26225341258e-02 1.54267827082e-02 1.89341271390e-02 2.31779027969e-02 2.81005086407e-02 + 3.35158471123e-02 3.90976289629e-02 4.44045560444e-02 4.89738024005e-02 5.24797871309e-02 5.48533676650e-02 + 5.62463189889e-02 5.68740665481e-02 5.68740665481e-02 5.62463189889e-02 5.48533676650e-02 5.24797871309e-02 + 4.49623774036e-02 3.93968315223e-02 3.36893635306e-02 2.82105864296e-02 2.32378434698e-02 1.89341271390e-02 + 1.53530693596e-02 1.24657333634e-02 1.02011860999e-02 8.47998103933e-03 7.22847713667e-03 6.38291972351e-03 + 5.89466652251e-03 5.73495116497e-03 5.89466652251e-03 6.38291972351e-03 7.22847713667e-03 8.47998103933e-03 + 1.02011860999e-02 1.24657333634e-02 1.53530693596e-02 1.89341271390e-02 2.32378434698e-02 2.82105864296e-02 + 3.36893635306e-02 3.93968315223e-02 4.49623774036e-02 4.99825941802e-02 5.41129564364e-02 5.71366804742e-02 + 5.89627863020e-02 5.95715936141e-02 5.89627863020e-02 5.71366804742e-02 5.41129564364e-02 4.99825941802e-02 + 3.95849180057e-02 3.38709874542e-02 2.83925891295e-02 2.34067395586e-02 1.90666010177e-02 1.54267827082e-02 + 1.24657333634e-02 1.01194532806e-02 8.31144312544e-03 6.96786738821e-03 6.02253909249e-03 5.42174879265e-03 + 5.12972310883e-03 5.12972310883e-03 5.42174879265e-03 6.02253909249e-03 6.96786738821e-03 8.31144312544e-03 + 1.01194532806e-02 1.24657333634e-02 1.54267827082e-02 1.90666010177e-02 2.34067395586e-02 2.83925891295e-02 + 3.38709874542e-02 3.95849180057e-02 4.51877782102e-02 5.02828320119e-02 5.44829894560e-02 5.74676014035e-02 + 5.90154969276e-02 5.90154969276e-02 5.74676014035e-02 5.44829894560e-02 5.02828320119e-02 4.51877782102e-02 + 3.39533984936e-02 2.85879356046e-02 2.36566460915e-02 1.93203741197e-02 1.56449525655e-02 1.26225341258e-02 + 1.02011860999e-02 8.31144312544e-03 6.88181758770e-03 5.84558656512e-03 5.14599535674e-03 4.74176747355e-03 + 4.60945880297e-03 4.74176747355e-03 5.14599535674e-03 5.84558656512e-03 6.88181758770e-03 8.31144312544e-03 + 1.02011860999e-02 1.26225341258e-02 1.56449525655e-02 1.93203741197e-02 2.36566460915e-02 2.85879356046e-02 + 3.39533984936e-02 3.94908104948e-02 4.48486167771e-02 4.96193341715e-02 5.33923081840e-02 5.58153453540e-02 + 5.66509609539e-02 5.58153453540e-02 5.33923081840e-02 4.96193341715e-02 4.48486167771e-02 3.94908104948e-02 + 2.87439673059e-02 2.39549635512e-02 1.96777557044e-02 1.59997599900e-02 1.29342051284e-02 1.04468583553e-02 + 8.47998103933e-03 6.96786738821e-03 5.84558656512e-03 5.05545032098e-03 4.55262020357e-03 4.30805835198e-03 + 4.30805835198e-03 4.55262020357e-03 5.05545032098e-03 5.84558656512e-03 6.96786738821e-03 8.47998103933e-03 + 1.04468583553e-02 1.29342051284e-02 1.59997599900e-02 1.96777557044e-02 2.39549635512e-02 2.87439673059e-02 + 3.38635928392e-02 3.90347179512e-02 4.38959177953e-02 4.80406383964e-02 5.10737783335e-02 5.26787408684e-02 + 5.26787408684e-02 5.10737783335e-02 4.80406383964e-02 4.38959177953e-02 3.90347179512e-02 3.38635928392e-02 + 2.42781130820e-02 2.01220876747e-02 1.64818809732e-02 1.33976732300e-02 1.08577130860e-02 8.82009872524e-03 + 7.22847713667e-03 6.02253909249e-03 5.14599535674e-03 4.55262020357e-03 4.20942844716e-03 4.09713024865e-03 + 4.20942844716e-03 4.55262020357e-03 5.14599535674e-03 6.02253909249e-03 7.22847713667e-03 8.82009872524e-03 + 1.08577130860e-02 1.33976732300e-02 1.64818809732e-02 2.01220876747e-02 2.42781130820e-02 2.88348357920e-02 + 3.35871770820e-02 3.82415861113e-02 4.24386109393e-02 4.57968161948e-02 4.79731106469e-02 4.87273692032e-02 + 4.79731106469e-02 4.57968161948e-02 4.24386109393e-02 3.82415861113e-02 3.35871770820e-02 2.88348357920e-02 + 2.06439962171e-02 1.70848695603e-02 1.40109856905e-02 1.14361707830e-02 9.33741418467e-03 7.67065297497e-03 + 6.38291972351e-03 5.42174879265e-03 4.74176747355e-03 4.30805835198e-03 4.09713024865e-03 4.09713024865e-03 + 4.30805835198e-03 4.74176747355e-03 5.42174879265e-03 6.38291972351e-03 7.67065297497e-03 9.33741418467e-03 + 1.14361707830e-02 1.40109856905e-02 1.70848695603e-02 2.06439962171e-02 2.46187421852e-02 2.88661050079e-02 + 3.31615306069e-02 3.72078996967e-02 4.06654278454e-02 4.32002938784e-02 4.45431970579e-02 4.45431970579e-02 + 4.32002938784e-02 4.06654278454e-02 3.72078996967e-02 3.31615306069e-02 2.88661050079e-02 2.46187421852e-02 + 1.78072941675e-02 1.47756456624e-02 1.21873907787e-02 1.00404664762e-02 8.30549434438e-03 6.93908976898e-03 + 5.89466652251e-03 5.12972310883e-03 4.60945880297e-03 4.30805835198e-03 4.20942844716e-03 4.30805835198e-03 + 4.60945880297e-03 5.12972310883e-03 5.89466652251e-03 6.93908976898e-03 8.30549434438e-03 1.00404664762e-02 + 1.21873907787e-02 1.47756456624e-02 1.78072941675e-02 2.12421582644e-02 2.49827563157e-02 2.88631293974e-02 + 3.26483588385e-02 3.60511821341e-02 3.87673596218e-02 4.05244812822e-02 4.11328816616e-02 4.05244812822e-02 + 3.87673596218e-02 3.60511821341e-02 3.26483588385e-02 2.88631293974e-02 2.49827563157e-02 2.12421582644e-02 + 1.56960478729e-02 1.31198380533e-02 1.09414577715e-02 9.14830218340e-03 7.70870330534e-03 6.58362639444e-03 + 5.73495116497e-03 5.12972310883e-03 4.74176747355e-03 4.55262020357e-03 4.55262020357e-03 4.74176747355e-03 + 5.12972310883e-03 5.73495116497e-03 6.58362639444e-03 7.70870330534e-03 9.14830218340e-03 1.09414577715e-02 + 1.31198380533e-02 1.56960478729e-02 1.86504890434e-02 2.19185274002e-02 2.53797852965e-02 2.88533907006e-02 + 3.21049723875e-02 3.48695445110e-02 3.68889471691e-02 3.79563421300e-02 3.79563421300e-02 3.68889471691e-02 + 3.48695445110e-02 3.21049723875e-02 2.88533907006e-02 2.53797852965e-02 2.19185274002e-02 1.86504890434e-02 + 1.42425749040e-02 1.20550163598e-02 1.02181471415e-02 8.71419097250e-03 7.51351058269e-03 6.58362639444e-03 + 5.89466652251e-03 5.42174879265e-03 5.14599535674e-03 5.05545032098e-03 5.14599535674e-03 5.42174879265e-03 + 5.89466652251e-03 6.58362639444e-03 7.51351058269e-03 8.71419097250e-03 1.02181471415e-02 1.20550163598e-02 + 1.42425749040e-02 1.67754563001e-02 1.96135589165e-02 2.26718438342e-02 2.58139075627e-02 2.88533907006e-02 + 3.15673758761e-02 3.37228748044e-02 3.51127517762e-02 3.55932306397e-02 3.51127517762e-02 3.37228748044e-02 + 3.15673758761e-02 2.88533907006e-02 2.58139075627e-02 2.26718438342e-02 1.96135589165e-02 1.67754563001e-02 + 1.33939588194e-02 1.15351431719e-02 9.98127039361e-03 8.71419097250e-03 7.70870330534e-03 6.93908976898e-03 + 6.38291972351e-03 6.02253909249e-03 5.84558656512e-03 5.84558656512e-03 6.02253909249e-03 6.38291972351e-03 + 6.93908976898e-03 7.70870330534e-03 8.71419097250e-03 9.98127039361e-03 1.15351431719e-02 1.33939588194e-02 + 1.55601992220e-02 1.80109897723e-02 2.06884779452e-02 2.34923498457e-02 2.62778950395e-02 2.88631293974e-02 + 3.10465495213e-02 3.26341221073e-02 3.34710625414e-02 3.34710625414e-02 3.26341221073e-02 3.10465495213e-02 + 2.88631293974e-02 2.62778950395e-02 2.34923498457e-02 2.06884779452e-02 1.80109897723e-02 1.55601992220e-02 + 1.31152359900e-02 1.15351431719e-02 1.02181471415e-02 9.14830218340e-03 8.30549434438e-03 7.67065297497e-03 + 7.22847713667e-03 6.96786738821e-03 6.88181758770e-03 6.96786738821e-03 7.22847713667e-03 7.67065297497e-03 + 8.30549434438e-03 9.14830218340e-03 1.02181471415e-02 1.15351431719e-02 1.31152359900e-02 1.49636867906e-02 + 1.70678712692e-02 1.93892705934e-02 2.18557815330e-02 2.43576039836e-02 2.67502344749e-02 2.88661050079e-02 + 3.05340710560e-02 3.16041856284e-02 3.19731919657e-02 3.16041856284e-02 3.05340710560e-02 2.88661050079e-02 + 2.67502344749e-02 2.43576039836e-02 2.18557815330e-02 1.93892705934e-02 1.70678712692e-02 1.49636867906e-02 + 1.33939588194e-02 1.20550163598e-02 1.09414577715e-02 1.00404664762e-02 9.33741418467e-03 8.82009872524e-03 + 8.47998103933e-03 8.31144312544e-03 8.31144312544e-03 8.47998103933e-03 8.82009872524e-03 9.33741418467e-03 + 1.00404664762e-02 1.09414577715e-02 1.20550163598e-02 1.33939588194e-02 1.49636867906e-02 1.67567114426e-02 + 1.87467470027e-02 2.08820531014e-02 2.30804654510e-02 2.52298202509e-02 2.71955666447e-02 2.88348357920e-02 + 3.00149219248e-02 3.06330408871e-02 3.06330408871e-02 3.00149219248e-02 2.88348357920e-02 2.71955666447e-02 + 2.52298202509e-02 2.30804654510e-02 2.08820531014e-02 1.87467470027e-02 1.67567114426e-02 1.49636867906e-02 + 1.42425749040e-02 1.31198380533e-02 1.21873907787e-02 1.14361707830e-02 1.08577130860e-02 1.04468583553e-02 + 1.02011860999e-02 1.01194532806e-02 1.02011860999e-02 1.04468583553e-02 1.08577130860e-02 1.14361707830e-02 + 1.21873907787e-02 1.31198380533e-02 1.42425749040e-02 1.55601992220e-02 1.70678712692e-02 1.87467470027e-02 + 2.05587788214e-02 2.24420850452e-02 2.43103322252e-02 2.60582031450e-02 2.75721078901e-02 2.87439673059e-02 + 2.94854041377e-02 2.97391273192e-02 2.94854041377e-02 2.87439673059e-02 2.75721078901e-02 2.60582031450e-02 + 2.43103322252e-02 2.24420850452e-02 2.05587788214e-02 1.87467470027e-02 1.70678712692e-02 1.55601992220e-02 + 1.56960478729e-02 1.47756456624e-02 1.40109856905e-02 1.33976732300e-02 1.29342051284e-02 1.26225341258e-02 + 1.24657333634e-02 1.24657333634e-02 1.26225341258e-02 1.29342051284e-02 1.33976732300e-02 1.40109856905e-02 + 1.47756456624e-02 1.56960478729e-02 1.67754563001e-02 1.80109897723e-02 1.93892705934e-02 2.08820531014e-02 + 2.24420850452e-02 2.40022165572e-02 2.54803066383e-02 2.67889182249e-02 2.78466298707e-02 2.85879356046e-02 + 2.89691250092e-02 2.89691250092e-02 2.85879356046e-02 2.78466298707e-02 2.67889182249e-02 2.54803066383e-02 + 2.40022165572e-02 2.24420850452e-02 2.08820531014e-02 1.93892705934e-02 1.80109897723e-02 1.67754563001e-02 + 1.78072941675e-02 1.70848695603e-02 1.64818809732e-02 1.59997599900e-02 1.56449525655e-02 1.54267827082e-02 + 1.53530693596e-02 1.54267827082e-02 1.56449525655e-02 1.59997599900e-02 1.64818809732e-02 1.70848695603e-02 + 1.78072941675e-02 1.86504890434e-02 1.96135589165e-02 2.06884779452e-02 2.18557815330e-02 2.30804654510e-02 + 2.43103322252e-02 2.54803066383e-02 2.65227612839e-02 2.73794467347e-02 2.80098127199e-02 2.83925891295e-02 + 2.85205562719e-02 2.83925891295e-02 2.80098127199e-02 2.73794467347e-02 2.65227612839e-02 2.54803066383e-02 + 2.43103322252e-02 2.30804654510e-02 2.18557815330e-02 2.06884779452e-02 1.96135589165e-02 1.86504890434e-02 + 2.06439962171e-02 2.01220876747e-02 1.96777557044e-02 1.93203741197e-02 1.90666010177e-02 1.89341271390e-02 + 1.89341271390e-02 1.90666010177e-02 1.93203741197e-02 1.96777557044e-02 2.01220876747e-02 2.06439962171e-02 + 2.12421582644e-02 2.19185274002e-02 2.26718438342e-02 2.34923498457e-02 2.43576039836e-02 2.52298202509e-02 + 2.60582031450e-02 2.67889182249e-02 2.73794467347e-02 2.78094015925e-02 2.80812943983e-02 2.82105864296e-02 + 2.82105864296e-02 2.80812943983e-02 2.78094015925e-02 2.73794467347e-02 2.67889182249e-02 2.60582031450e-02 + 2.52298202509e-02 2.43576039836e-02 2.34923498457e-02 2.26718438342e-02 2.19185274002e-02 2.12421582644e-02 + 2.42781130820e-02 2.39549635512e-02 2.36566460915e-02 2.34067395586e-02 2.32378434698e-02 2.31779027969e-02 + 2.32378434698e-02 2.34067395586e-02 2.36566460915e-02 2.39549635512e-02 2.42781130820e-02 2.46187421852e-02 + 2.49827563157e-02 2.53797852965e-02 2.58139075627e-02 2.62778950395e-02 2.67502344749e-02 2.71955666447e-02 + 2.75721078901e-02 2.78466298707e-02 2.80098127199e-02 2.80812943983e-02 2.80994006567e-02 2.81005086407e-02 + 2.80994006567e-02 2.80812943983e-02 2.80098127199e-02 2.78466298707e-02 2.75721078901e-02 2.71955666447e-02 + 2.67502344749e-02 2.62778950395e-02 2.58139075627e-02 2.53797852965e-02 2.49827563157e-02 2.46187421852e-02 + 2.87439673059e-02 2.85879356046e-02 2.83925891295e-02 2.82105864296e-02 2.81005086407e-02 2.81005086407e-02 + 2.82105864296e-02 2.83925891295e-02 2.85879356046e-02 2.87439673059e-02 2.88348357920e-02 2.88661050079e-02 + 2.88631293974e-02 2.88533907006e-02 2.88533907006e-02 2.88631293974e-02 2.88661050079e-02 2.88348357920e-02 + 2.87439673059e-02 2.85879356046e-02 2.83925891295e-02 2.82105864296e-02 2.81005086407e-02 2.81005086407e-02 + 2.82105864296e-02 2.83925891295e-02 2.85879356046e-02 2.87439673059e-02 2.88348357920e-02 2.88661050079e-02 + 2.88631293974e-02 2.88533907006e-02 2.88533907006e-02 2.88631293974e-02 2.88661050079e-02 2.88348357920e-02 + 3.39533984936e-02 3.38709874542e-02 3.36893635306e-02 3.35158471123e-02 3.34454153402e-02 3.35158471123e-02 + 3.36893635306e-02 3.38709874542e-02 3.39533984936e-02 3.38635928392e-02 3.35871770820e-02 3.31615306069e-02 + 3.26483588385e-02 3.21049723875e-02 3.15673758761e-02 3.10465495213e-02 3.05340710560e-02 3.00149219248e-02 + 2.94854041377e-02 2.89691250092e-02 2.85205562719e-02 2.82105864296e-02 2.80994006567e-02 2.82105864296e-02 + 2.85205562719e-02 2.89691250092e-02 2.94854041377e-02 3.00149219248e-02 3.05340710560e-02 3.10465495213e-02 + 3.15673758761e-02 3.21049723875e-02 3.26483588385e-02 3.31615306069e-02 3.35871770820e-02 3.38635928392e-02 + 3.95849180057e-02 3.93968315223e-02 3.90976289629e-02 3.88830541657e-02 3.88830541657e-02 3.90976289629e-02 + 3.93968315223e-02 3.95849180057e-02 3.94908104948e-02 3.90347179512e-02 3.82415861113e-02 3.72078996967e-02 + 3.60511821341e-02 3.48695445110e-02 3.37228748044e-02 3.26341221073e-02 3.16041856284e-02 3.06330408871e-02 + 2.97391273192e-02 2.89691250092e-02 2.83925891295e-02 2.80812943983e-02 2.80812943983e-02 2.83925891295e-02 + 2.89691250092e-02 2.97391273192e-02 3.06330408871e-02 3.16041856284e-02 3.26341221073e-02 3.37228748044e-02 + 3.48695445110e-02 3.60511821341e-02 3.72078996967e-02 3.82415861113e-02 3.90347179512e-02 3.94908104948e-02 + 4.49623774036e-02 4.44045560444e-02 4.38595264834e-02 4.36365698621e-02 4.38595264834e-02 4.44045560444e-02 + 4.49623774036e-02 4.51877782102e-02 4.48486167771e-02 4.38959177953e-02 4.24386109393e-02 4.06654278454e-02 + 3.87673596218e-02 3.68889471691e-02 3.51127517762e-02 3.34710625414e-02 3.19731919657e-02 3.06330408871e-02 + 2.94854041377e-02 2.85879356046e-02 2.80098127199e-02 2.78094015925e-02 2.80098127199e-02 2.85879356046e-02 + 2.94854041377e-02 3.06330408871e-02 3.19731919657e-02 3.34710625414e-02 3.51127517762e-02 3.68889471691e-02 + 3.87673596218e-02 4.06654278454e-02 4.24386109393e-02 4.38959177953e-02 4.48486167771e-02 4.51877782102e-02 + 4.89738024005e-02 4.77793166757e-02 4.69885184966e-02 4.69885184966e-02 4.77793166757e-02 4.89738024005e-02 + 4.99825941802e-02 5.02828320119e-02 4.96193341715e-02 4.80406383964e-02 4.57968161948e-02 4.32002938784e-02 + 4.05244812822e-02 3.79563421300e-02 3.55932306397e-02 3.34710625414e-02 3.16041856284e-02 3.00149219248e-02 + 2.87439673059e-02 2.78466298707e-02 2.73794467347e-02 2.73794467347e-02 2.78466298707e-02 2.87439673059e-02 + 3.00149219248e-02 3.16041856284e-02 3.34710625414e-02 3.55932306397e-02 3.79563421300e-02 4.05244812822e-02 + 4.32002938784e-02 4.57968161948e-02 4.80406383964e-02 4.96193341715e-02 5.02828320119e-02 4.99825941802e-02 + 5.02620593726e-02 4.83941231678e-02 4.76689314688e-02 4.83941231678e-02 5.02620593726e-02 5.24797871309e-02 + 5.41129564364e-02 5.44829894560e-02 5.33923081840e-02 5.10737783335e-02 4.79731106469e-02 4.45431970579e-02 + 4.11328816616e-02 3.79563421300e-02 3.51127517762e-02 3.26341221073e-02 3.05340710560e-02 2.88348357920e-02 + 2.75721078901e-02 2.67889182249e-02 2.65227612839e-02 2.67889182249e-02 2.75721078901e-02 2.88348357920e-02 + 3.05340710560e-02 3.26341221073e-02 3.51127517762e-02 3.79563421300e-02 4.11328816616e-02 4.45431970579e-02 + 4.79731106469e-02 5.10737783335e-02 5.33923081840e-02 5.44829894560e-02 5.41129564364e-02 5.24797871309e-02 + 4.79609401864e-02 4.58777097769e-02 4.58777097769e-02 4.79609401864e-02 5.13723037105e-02 5.48533676650e-02 + 5.71366804742e-02 5.74676014035e-02 5.58153453540e-02 5.26787408684e-02 4.87273692032e-02 4.45431970579e-02 + 4.05244812822e-02 3.68889471691e-02 3.37228748044e-02 3.10465495213e-02 2.88661050079e-02 2.71955666447e-02 + 2.60582031450e-02 2.54803066383e-02 2.54803066383e-02 2.60582031450e-02 2.71955666447e-02 2.88661050079e-02 + 3.10465495213e-02 3.37228748044e-02 3.68889471691e-02 4.05244812822e-02 4.45431970579e-02 4.87273692032e-02 + 5.26787408684e-02 5.58153453540e-02 5.74676014035e-02 5.71366804742e-02 5.48533676650e-02 5.13723037105e-02 + 4.26203265537e-02 4.11986868029e-02 4.26203265537e-02 4.64751950426e-02 5.15765048907e-02 5.62463189889e-02 + 5.89627863020e-02 5.90154969276e-02 5.66509609539e-02 5.26787408684e-02 4.79731106469e-02 4.32002938784e-02 + 3.87673596218e-02 3.48695445110e-02 3.15673758761e-02 2.88631293974e-02 2.67502344749e-02 2.52298202509e-02 + 2.43103322252e-02 2.40022165572e-02 2.43103322252e-02 2.52298202509e-02 2.67502344749e-02 2.88631293974e-02 + 3.15673758761e-02 3.48695445110e-02 3.87673596218e-02 4.32002938784e-02 4.79731106469e-02 5.26787408684e-02 + 5.66509609539e-02 5.90154969276e-02 5.89627863020e-02 5.62463189889e-02 5.15765048907e-02 4.64751950426e-02 + 3.62214481565e-02 3.62214481565e-02 3.93541671489e-02 4.49279278957e-02 5.14403532045e-02 5.68740665481e-02 + 5.95715936141e-02 5.90154969276e-02 5.58153453540e-02 5.10737783335e-02 4.57968161948e-02 4.06654278454e-02 + 3.60511821341e-02 3.21049723875e-02 2.88533907006e-02 2.62778950395e-02 2.43576039836e-02 2.30804654510e-02 + 2.24420850452e-02 2.24420850452e-02 2.30804654510e-02 2.43576039836e-02 2.62778950395e-02 2.88533907006e-02 + 3.21049723875e-02 3.60511821341e-02 4.06654278454e-02 4.57968161948e-02 5.10737783335e-02 5.58153453540e-02 + 5.90154969276e-02 5.95715936141e-02 5.68740665481e-02 5.14403532045e-02 4.49279278957e-02 3.93541671489e-02 + 3.09103717113e-02 3.25101129901e-02 3.71417160544e-02 4.40123223759e-02 5.13523903781e-02 5.68740665481e-02 + 5.89627863020e-02 5.74676014035e-02 5.33923081840e-02 4.80406383964e-02 4.24386109393e-02 3.72078996967e-02 + 3.26483588385e-02 2.88533907006e-02 2.58139075627e-02 2.34923498457e-02 2.18557815330e-02 2.08820531014e-02 + 2.05587788214e-02 2.08820531014e-02 2.18557815330e-02 2.34923498457e-02 2.58139075627e-02 2.88533907006e-02 + 3.26483588385e-02 3.72078996967e-02 4.24386109393e-02 4.80406383964e-02 5.33923081840e-02 5.74676014035e-02 + 5.89627863020e-02 5.68740665481e-02 5.13523903781e-02 4.40123223759e-02 3.71417160544e-02 3.25101129901e-02 + 2.77489957459e-02 3.06594619284e-02 3.63849623957e-02 4.40123223759e-02 5.14403532045e-02 5.62463189889e-02 + 5.71366804742e-02 5.44829894560e-02 4.96193341715e-02 4.38959177953e-02 3.82415861113e-02 3.31615306069e-02 + 2.88631293974e-02 2.53797852965e-02 2.26718438342e-02 2.06884779452e-02 1.93892705934e-02 1.87467470027e-02 + 1.87467470027e-02 1.93892705934e-02 2.06884779452e-02 2.26718438342e-02 2.53797852965e-02 2.88631293974e-02 + 3.31615306069e-02 3.82415861113e-02 4.38959177953e-02 4.96193341715e-02 5.44829894560e-02 5.71366804742e-02 + 5.62463189889e-02 5.14403532045e-02 4.40123223759e-02 3.63849623957e-02 3.06594619284e-02 2.77489957459e-02 + 2.67478820537e-02 3.06594619284e-02 3.71417160544e-02 4.49279278957e-02 5.15765048907e-02 5.48533676650e-02 + 5.41129564364e-02 5.02828320119e-02 4.48486167771e-02 3.90347179512e-02 3.35871770820e-02 2.88661050079e-02 + 2.49827563157e-02 2.19185274002e-02 1.96135589165e-02 1.80109897723e-02 1.70678712692e-02 1.67567114426e-02 + 1.70678712692e-02 1.80109897723e-02 1.96135589165e-02 2.19185274002e-02 2.49827563157e-02 2.88661050079e-02 + 3.35871770820e-02 3.90347179512e-02 4.48486167771e-02 5.02828320119e-02 5.41129564364e-02 5.48533676650e-02 + 5.15765048907e-02 4.49279278957e-02 3.71417160544e-02 3.06594619284e-02 2.67478820537e-02 2.54935088837e-02 + 2.77489957459e-02 3.25101129901e-02 3.93541671489e-02 4.64751950426e-02 5.13723037105e-02 5.24797871309e-02 + 4.99825941802e-02 4.51877782102e-02 3.94908104948e-02 3.38635928392e-02 2.88348357920e-02 2.46187421852e-02 + 2.12421582644e-02 1.86504890434e-02 1.67754563001e-02 1.55601992220e-02 1.49636867906e-02 1.49636867906e-02 + 1.55601992220e-02 1.67754563001e-02 1.86504890434e-02 2.12421582644e-02 2.46187421852e-02 2.88348357920e-02 + 3.38635928392e-02 3.94908104948e-02 4.51877782102e-02 4.99825941802e-02 5.24797871309e-02 5.13723037105e-02 + 4.64751950426e-02 3.93541671489e-02 3.25101129901e-02 2.77489957459e-02 2.54935088837e-02 2.54935088837e-02 + 4.60013609401e-02 4.89850720157e-02 5.12221625406e-02 5.13869204668e-02 4.89738024005e-02 4.44868574481e-02 + 3.89160663350e-02 3.31691643222e-02 2.78466298707e-02 2.32562353108e-02 1.94921954522e-02 1.65234811342e-02 + 1.42727054437e-02 1.26620800682e-02 1.16276251073e-02 1.11228159589e-02 1.11228159589e-02 1.16276251073e-02 + 1.26620800682e-02 1.42727054437e-02 1.65234811342e-02 1.94921954522e-02 2.32562353108e-02 2.78466298707e-02 + 3.31691643222e-02 3.89160663350e-02 4.44868574481e-02 4.89738024005e-02 5.13869204668e-02 5.12221625406e-02 + 4.89850720157e-02 4.60013609401e-02 4.35588929466e-02 4.22847991283e-02 4.22847991283e-02 4.35588929466e-02 + 4.89850720157e-02 5.05555186569e-02 5.06194135765e-02 4.85080722970e-02 4.44045560444e-02 3.90848689472e-02 + 3.34071767353e-02 2.80098127199e-02 2.32603028496e-02 1.93050944183e-02 1.61434902729e-02 1.37059602390e-02 + 1.19105819676e-02 1.06856809758e-02 9.97511028176e-03 9.74245511371e-03 9.97511028176e-03 1.06856809758e-02 + 1.19105819676e-02 1.37059602390e-02 1.61434902729e-02 1.93050944183e-02 2.32603028496e-02 2.80098127199e-02 + 3.34071767353e-02 3.90848689472e-02 4.44045560444e-02 4.85080722970e-02 5.06194135765e-02 5.05555186569e-02 + 4.89850720157e-02 4.70389926376e-02 4.56222411881e-02 4.51254329663e-02 4.56222411881e-02 4.70389926376e-02 + 5.12221625406e-02 5.06194135765e-02 4.83002627794e-02 4.42752514752e-02 3.90976289629e-02 3.34971688966e-02 + 2.80812943983e-02 2.32368358951e-02 1.91448778653e-02 1.58329883187e-02 1.32437842255e-02 1.12951380995e-02 + 9.91029781221e-03 9.02578945364e-03 8.59555582378e-03 8.59555582378e-03 9.02578945364e-03 9.91029781221e-03 + 1.12951380995e-02 1.32437842255e-02 1.58329883187e-02 1.91448778653e-02 2.32368358951e-02 2.80812943983e-02 + 3.34971688966e-02 3.90976289629e-02 4.42752514752e-02 4.83002627794e-02 5.06194135765e-02 5.12221625406e-02 + 5.07010770424e-02 4.98718618187e-02 4.93308963719e-02 4.93308963719e-02 4.98718618187e-02 5.07010770424e-02 + 5.13869204668e-02 4.85080722970e-02 4.42752514752e-02 3.90842281235e-02 3.35158471123e-02 2.80994006567e-02 + 2.32023283361e-02 1.90175139009e-02 1.55924938344e-02 1.28827341282e-02 1.08088949298e-02 9.29162040305e-03 + 8.26229038338e-03 7.66717366082e-03 7.47255069610e-03 7.66717366082e-03 8.26229038338e-03 9.29162040305e-03 + 1.08088949298e-02 1.28827341282e-02 1.55924938344e-02 1.90175139009e-02 2.32023283361e-02 2.80994006567e-02 + 3.35158471123e-02 3.90842281235e-02 4.42752514752e-02 4.85080722970e-02 5.13869204668e-02 5.29210396854e-02 + 5.34983990182e-02 5.36143814352e-02 5.36149267734e-02 5.36143814352e-02 5.34983990182e-02 5.29210396854e-02 + 4.89738024005e-02 4.44045560444e-02 3.90976289629e-02 3.35158471123e-02 2.81005086407e-02 2.31779027969e-02 + 1.89341271390e-02 1.54267827082e-02 1.26225341258e-02 1.04468583553e-02 8.82009872524e-03 7.67065297497e-03 + 6.93908976898e-03 6.58362639444e-03 6.58362639444e-03 6.93908976898e-03 7.67065297497e-03 8.82009872524e-03 + 1.04468583553e-02 1.26225341258e-02 1.54267827082e-02 1.89341271390e-02 2.31779027969e-02 2.81005086407e-02 + 3.35158471123e-02 3.90976289629e-02 4.44045560444e-02 4.89738024005e-02 5.24797871309e-02 5.48533676650e-02 + 5.62463189889e-02 5.68740665481e-02 5.68740665481e-02 5.62463189889e-02 5.48533676650e-02 5.24797871309e-02 + 4.44868574481e-02 3.90848689472e-02 3.34971688966e-02 2.80994006567e-02 2.31779027969e-02 1.89049688962e-02 + 1.53419303249e-02 1.24650738064e-02 1.02064774226e-02 8.48843476768e-03 7.23847314555e-03 6.39361872594e-03 + 5.90565973456e-03 5.74602373426e-03 5.90565973456e-03 6.39361872594e-03 7.23847314555e-03 8.48843476768e-03 + 1.02064774226e-02 1.24650738064e-02 1.53419303249e-02 1.89049688962e-02 2.31779027969e-02 2.80994006567e-02 + 3.34971688966e-02 3.90848689472e-02 4.44868574481e-02 4.93048229800e-02 5.32152215954e-02 5.60372557288e-02 + 5.77208882781e-02 5.82782465337e-02 5.77208882781e-02 5.60372557288e-02 5.32152215954e-02 4.93048229800e-02 + 3.89160663350e-02 3.34071767353e-02 2.80812943983e-02 2.32023283361e-02 1.89341271390e-02 1.53419303249e-02 + 1.24123312979e-02 1.00865795572e-02 8.29158854156e-03 6.95605972443e-03 6.01563766373e-03 5.41768978229e-03 + 5.12697112440e-03 5.12697112440e-03 5.41768978229e-03 6.01563766373e-03 6.95605972443e-03 8.29158854156e-03 + 1.00865795572e-02 1.24123312979e-02 1.53419303249e-02 1.89341271390e-02 2.32023283361e-02 2.80812943983e-02 + 3.34071767353e-02 3.89160663350e-02 4.42634768270e-02 4.90700187394e-02 5.29846351657e-02 5.57363453523e-02 + 5.71527035674e-02 5.71527035674e-02 5.57363453523e-02 5.29846351657e-02 4.90700187394e-02 4.42634768270e-02 + 3.31691643222e-02 2.80098127199e-02 2.32368358951e-02 1.90175139009e-02 1.54267827082e-02 1.24650738064e-02 + 1.00865795572e-02 8.22635918544e-03 6.81664387654e-03 5.79365065764e-03 5.10253249618e-03 4.70304044562e-03 + 4.57225197605e-03 4.70304044562e-03 5.10253249618e-03 5.79365065764e-03 6.81664387654e-03 8.22635918544e-03 + 1.00865795572e-02 1.24650738064e-02 1.54267827082e-02 1.90175139009e-02 2.32368358951e-02 2.80098127199e-02 + 3.31691643222e-02 3.84534160516e-02 4.35234290368e-02 4.79989400749e-02 5.15101646150e-02 5.37510492057e-02 + 5.45211951056e-02 5.37510492057e-02 5.15101646150e-02 4.79989400749e-02 4.35234290368e-02 3.84534160516e-02 + 2.78466298707e-02 2.32603028496e-02 1.91448778653e-02 1.55924938344e-02 1.26225341258e-02 1.02064774226e-02 + 8.29158854156e-03 6.81664387654e-03 5.72047031573e-03 4.94806264494e-03 4.45623663297e-03 4.21692866215e-03 + 4.21692866215e-03 4.45623663297e-03 4.94806264494e-03 5.72047031573e-03 6.81664387654e-03 8.29158854156e-03 + 1.02064774226e-02 1.26225341258e-02 1.55924938344e-02 1.91448778653e-02 2.32603028496e-02 2.78466298707e-02 + 3.27229087590e-02 3.76190713504e-02 4.21941579647e-02 4.60731359718e-02 4.88987422193e-02 5.03893328752e-02 + 5.03893328752e-02 4.88987422193e-02 4.60731359718e-02 4.21941579647e-02 3.76190713504e-02 3.27229087590e-02 + 2.32562353108e-02 1.93050944183e-02 1.58329883187e-02 1.28827341282e-02 1.04468583553e-02 8.48843476768e-03 + 6.95605972443e-03 5.79365065764e-03 4.94806264494e-03 4.37525079151e-03 4.04374575730e-03 3.93522801758e-03 + 4.04374575730e-03 4.37525079151e-03 4.94806264494e-03 5.79365065764e-03 6.95605972443e-03 8.48843476768e-03 + 1.04468583553e-02 1.28827341282e-02 1.58329883187e-02 1.93050944183e-02 2.32562353108e-02 2.75721078901e-02 + 3.20546920774e-02 3.64263171972e-02 4.03527020822e-02 4.34838779539e-02 4.55081727847e-02 4.62088704848e-02 + 4.55081727847e-02 4.34838779539e-02 4.03527020822e-02 3.64263171972e-02 3.20546920774e-02 2.75721078901e-02 + 1.94921954522e-02 1.61434902729e-02 1.32437842255e-02 1.08088949298e-02 8.82009872524e-03 7.23847314555e-03 + 6.01563766373e-03 5.10253249618e-03 4.45623663297e-03 4.04374575730e-03 3.84302280796e-03 3.84302280796e-03 + 4.04374575730e-03 4.45623663297e-03 5.10253249618e-03 6.01563766373e-03 7.23847314555e-03 8.82009872524e-03 + 1.08088949298e-02 1.32437842255e-02 1.61434902729e-02 1.94921954522e-02 2.32217587400e-02 2.71955666447e-02 + 3.12022017908e-02 3.49654910486e-02 3.81729635435e-02 4.05199675384e-02 4.17618689283e-02 4.17618689283e-02 + 4.05199675384e-02 3.81729635435e-02 3.49654910486e-02 3.12022017908e-02 2.71955666447e-02 2.32217587400e-02 + 1.65234811342e-02 1.37059602390e-02 1.12951380995e-02 9.29162040305e-03 7.67065297497e-03 6.39361872594e-03 + 5.41768978229e-03 4.70304044562e-03 4.21692866215e-03 3.93522801758e-03 3.84302280796e-03 3.93522801758e-03 + 4.21692866215e-03 4.70304044562e-03 5.41768978229e-03 6.39361872594e-03 7.67065297497e-03 9.29162040305e-03 + 1.12951380995e-02 1.37059602390e-02 1.65234811342e-02 1.97084075068e-02 2.31688478126e-02 2.67502344749e-02 + 3.02357338101e-02 3.33624200108e-02 3.58537824974e-02 3.74634706166e-02 3.80204685260e-02 3.74634706166e-02 + 3.58537824974e-02 3.33624200108e-02 3.02357338101e-02 2.67502344749e-02 2.31688478126e-02 1.97084075068e-02 + 1.42727054437e-02 1.19105819676e-02 9.91029781221e-03 8.26229038338e-03 6.93908976898e-03 5.90565973456e-03 + 5.12697112440e-03 4.57225197605e-03 4.21692866215e-03 4.04374575730e-03 4.04374575730e-03 4.21692866215e-03 + 4.57225197605e-03 5.12697112440e-03 5.90565973456e-03 6.93908976898e-03 8.26229038338e-03 9.91029781221e-03 + 1.19105819676e-02 1.42727054437e-02 1.69767793036e-02 1.99620901041e-02 2.31175818882e-02 2.62778950395e-02 + 2.92302840650e-02 3.17358390207e-02 3.35632692529e-02 3.45282284639e-02 3.45282284639e-02 3.35632692529e-02 + 3.17358390207e-02 2.92302840650e-02 2.62778950395e-02 2.31175818882e-02 1.99620901041e-02 1.69767793036e-02 + 1.26620800682e-02 1.06856809758e-02 9.02578945364e-03 7.66717366082e-03 6.58362639444e-03 5.74602373426e-03 + 5.12697112440e-03 4.70304044562e-03 4.45623663297e-03 4.37525079151e-03 4.45623663297e-03 4.70304044562e-03 + 5.12697112440e-03 5.74602373426e-03 6.58362639444e-03 7.66717366082e-03 9.02578945364e-03 1.06856809758e-02 + 1.26620800682e-02 1.49488960464e-02 1.75083321070e-02 2.02621880335e-02 2.30866420056e-02 2.58139075627e-02 + 2.82446089484e-02 3.01717861136e-02 3.14127386696e-02 3.18414068716e-02 3.14127386696e-02 3.01717861136e-02 + 2.82446089484e-02 2.58139075627e-02 2.30866420056e-02 2.02621880335e-02 1.75083321070e-02 1.49488960464e-02 + 1.16276251073e-02 9.97511028176e-03 8.59555582378e-03 7.47255069610e-03 6.58362639444e-03 5.90565973456e-03 + 5.41768978229e-03 5.10253249618e-03 4.94806264494e-03 4.94806264494e-03 5.10253249618e-03 5.41768978229e-03 + 5.90565973456e-03 6.58362639444e-03 7.47255069610e-03 8.59555582378e-03 9.97511028176e-03 1.16276251073e-02 + 1.35553259639e-02 1.57370100687e-02 1.81196807915e-02 2.06126999880e-02 2.30866420056e-02 2.53797852965e-02 + 2.73140021666e-02 2.87187367840e-02 2.94586793037e-02 2.94586793037e-02 2.87187367840e-02 2.73140021666e-02 + 2.53797852965e-02 2.30866420056e-02 2.06126999880e-02 1.81196807915e-02 1.57370100687e-02 1.35553259639e-02 + 1.11228159589e-02 9.74245511371e-03 8.59555582378e-03 7.66717366082e-03 6.93908976898e-03 6.39361872594e-03 + 6.01563766373e-03 5.79365065764e-03 5.72047031573e-03 5.79365065764e-03 6.01563766373e-03 6.39361872594e-03 + 6.93908976898e-03 7.66717366082e-03 8.59555582378e-03 9.74245511371e-03 1.11228159589e-02 1.27424344623e-02 + 1.45906790875e-02 1.66330383744e-02 1.88049742175e-02 2.10090352784e-02 2.31175818882e-02 2.49827563157e-02 + 2.64534808200e-02 2.73972646659e-02 2.77227537368e-02 2.73972646659e-02 2.64534808200e-02 2.49827563157e-02 + 2.31175818882e-02 2.10090352784e-02 1.88049742175e-02 1.66330383744e-02 1.45906790875e-02 1.27424344623e-02 + 1.11228159589e-02 9.97511028176e-03 9.02578945364e-03 8.26229038338e-03 7.67065297497e-03 7.23847314555e-03 + 6.95605972443e-03 6.81664387654e-03 6.81664387654e-03 6.95605972443e-03 7.23847314555e-03 7.67065297497e-03 + 8.26229038338e-03 9.02578945364e-03 9.97511028176e-03 1.11228159589e-02 1.24755048074e-02 1.40283418589e-02 + 1.57591868798e-02 1.76229803621e-02 1.95479913088e-02 2.14361295219e-02 2.31688478126e-02 2.46187421852e-02 + 2.56657154446e-02 2.62153172241e-02 2.62153172241e-02 2.56657154446e-02 2.46187421852e-02 2.31688478126e-02 + 2.14361295219e-02 1.95479913088e-02 1.76229803621e-02 1.57591868798e-02 1.40283418589e-02 1.24755048074e-02 + 1.16276251073e-02 1.06856809758e-02 9.91029781221e-03 9.29162040305e-03 8.82009872524e-03 8.48843476768e-03 + 8.29158854156e-03 8.22635918544e-03 8.29158854156e-03 8.48843476768e-03 8.82009872524e-03 9.29162040305e-03 + 9.91029781221e-03 1.06856809758e-02 1.16276251073e-02 1.27424344623e-02 1.40283418589e-02 1.54709928045e-02 + 1.70389543521e-02 1.86800926235e-02 2.03206914317e-02 2.18687619531e-02 2.32217587400e-02 2.42781130820e-02 + 2.49511167951e-02 2.51823253991e-02 2.49511167951e-02 2.42781130820e-02 2.32217587400e-02 2.18687619531e-02 + 2.03206914317e-02 1.86800926235e-02 1.70389543521e-02 1.54709928045e-02 1.40283418589e-02 1.27424344623e-02 + 1.26620800682e-02 1.19105819676e-02 1.12951380995e-02 1.08088949298e-02 1.04468583553e-02 1.02064774226e-02 + 1.00865795572e-02 1.00865795572e-02 1.02064774226e-02 1.04468583553e-02 1.08088949298e-02 1.12951380995e-02 + 1.19105819676e-02 1.26620800682e-02 1.35553259639e-02 1.45906790875e-02 1.57591868798e-02 1.70389543521e-02 + 1.83921353899e-02 1.97639178277e-02 2.10847229658e-02 2.22755921268e-02 2.32562353108e-02 2.39549635512e-02 + 2.43184216158e-02 2.43184216158e-02 2.39549635512e-02 2.32562353108e-02 2.22755921268e-02 2.10847229658e-02 + 1.97639178277e-02 1.83921353899e-02 1.70389543521e-02 1.57591868798e-02 1.45906790875e-02 1.35553259639e-02 + 1.42727054437e-02 1.37059602390e-02 1.32437842255e-02 1.28827341282e-02 1.26225341258e-02 1.24650738064e-02 + 1.24123312979e-02 1.24650738064e-02 1.26225341258e-02 1.28827341282e-02 1.32437842255e-02 1.37059602390e-02 + 1.42727054437e-02 1.49488960464e-02 1.57370100687e-02 1.66330383744e-02 1.76229803621e-02 1.86800926235e-02 + 1.97639178277e-02 2.08223402545e-02 2.17964249596e-02 2.26267522861e-02 2.32603028496e-02 2.36566460915e-02 + 2.37914166767e-02 2.36566460915e-02 2.32603028496e-02 2.26267522861e-02 2.17964249596e-02 2.08223402545e-02 + 1.97639178277e-02 1.86800926235e-02 1.76229803621e-02 1.66330383744e-02 1.57370100687e-02 1.49488960464e-02 + 1.65234811342e-02 1.61434902729e-02 1.58329883187e-02 1.55924938344e-02 1.54267827082e-02 1.53419303249e-02 + 1.53419303249e-02 1.54267827082e-02 1.55924938344e-02 1.58329883187e-02 1.61434902729e-02 1.65234811342e-02 + 1.69767793036e-02 1.75083321070e-02 1.81196807915e-02 1.88049742175e-02 1.95479913088e-02 2.03206914317e-02 + 2.10847229658e-02 2.17964249596e-02 2.24136125305e-02 2.29016184223e-02 2.32368358951e-02 2.34067395586e-02 + 2.34067395586e-02 2.32368358951e-02 2.29016184223e-02 2.24136125305e-02 2.17964249596e-02 2.10847229658e-02 + 2.03206914317e-02 1.95479913088e-02 1.88049742175e-02 1.81196807915e-02 1.75083321070e-02 1.69767793036e-02 + 1.94921954522e-02 1.93050944183e-02 1.91448778653e-02 1.90175139009e-02 1.89341271390e-02 1.89049688962e-02 + 1.89341271390e-02 1.90175139009e-02 1.91448778653e-02 1.93050944183e-02 1.94921954522e-02 1.97084075068e-02 + 1.99620901041e-02 2.02621880335e-02 2.06126999880e-02 2.10090352784e-02 2.14361295219e-02 2.18687619531e-02 + 2.22755921268e-02 2.26267522861e-02 2.29016184223e-02 2.30924993956e-02 2.32023283361e-02 2.32378434698e-02 + 2.32023283361e-02 2.30924993956e-02 2.29016184223e-02 2.26267522861e-02 2.22755921268e-02 2.18687619531e-02 + 2.14361295219e-02 2.10090352784e-02 2.06126999880e-02 2.02621880335e-02 1.99620901041e-02 1.97084075068e-02 + 2.32562353108e-02 2.32603028496e-02 2.32368358951e-02 2.32023283361e-02 2.31779027969e-02 2.31779027969e-02 + 2.32023283361e-02 2.32368358951e-02 2.32603028496e-02 2.32562353108e-02 2.32217587400e-02 2.31688478126e-02 + 2.31175818882e-02 2.30866420056e-02 2.30866420056e-02 2.31175818882e-02 2.31688478126e-02 2.32217587400e-02 + 2.32562353108e-02 2.32603028496e-02 2.32368358951e-02 2.32023283361e-02 2.31779027969e-02 2.31779027969e-02 + 2.32023283361e-02 2.32368358951e-02 2.32603028496e-02 2.32562353108e-02 2.32217587400e-02 2.31688478126e-02 + 2.31175818882e-02 2.30866420056e-02 2.30866420056e-02 2.31175818882e-02 2.31688478126e-02 2.32217587400e-02 + 2.78466298707e-02 2.80098127199e-02 2.80812943983e-02 2.80994006567e-02 2.81005086407e-02 2.80994006567e-02 + 2.80812943983e-02 2.80098127199e-02 2.78466298707e-02 2.75721078901e-02 2.71955666447e-02 2.67502344749e-02 + 2.62778950395e-02 2.58139075627e-02 2.53797852965e-02 2.49827563157e-02 2.46187421852e-02 2.42781130820e-02 + 2.39549635512e-02 2.36566460915e-02 2.34067395586e-02 2.32378434698e-02 2.31779027969e-02 2.32378434698e-02 + 2.34067395586e-02 2.36566460915e-02 2.39549635512e-02 2.42781130820e-02 2.46187421852e-02 2.49827563157e-02 + 2.53797852965e-02 2.58139075627e-02 2.62778950395e-02 2.67502344749e-02 2.71955666447e-02 2.75721078901e-02 + 3.31691643222e-02 3.34071767353e-02 3.34971688966e-02 3.35158471123e-02 3.35158471123e-02 3.34971688966e-02 + 3.34071767353e-02 3.31691643222e-02 3.27229087590e-02 3.20546920774e-02 3.12022017908e-02 3.02357338101e-02 + 2.92302840650e-02 2.82446089484e-02 2.73140021666e-02 2.64534808200e-02 2.56657154446e-02 2.49511167951e-02 + 2.43184216158e-02 2.37914166767e-02 2.34067395586e-02 2.32023283361e-02 2.32023283361e-02 2.34067395586e-02 + 2.37914166767e-02 2.43184216158e-02 2.49511167951e-02 2.56657154446e-02 2.64534808200e-02 2.73140021666e-02 + 2.82446089484e-02 2.92302840650e-02 3.02357338101e-02 3.12022017908e-02 3.20546920774e-02 3.27229087590e-02 + 3.89160663350e-02 3.90848689472e-02 3.90976289629e-02 3.90842281235e-02 3.90976289629e-02 3.90848689472e-02 + 3.89160663350e-02 3.84534160516e-02 3.76190713504e-02 3.64263171972e-02 3.49654910486e-02 3.33624200108e-02 + 3.17358390207e-02 3.01717861136e-02 2.87187367840e-02 2.73972646659e-02 2.62153172241e-02 2.51823253991e-02 + 2.43184216158e-02 2.36566460915e-02 2.32368358951e-02 2.30924993956e-02 2.32368358951e-02 2.36566460915e-02 + 2.43184216158e-02 2.51823253991e-02 2.62153172241e-02 2.73972646659e-02 2.87187367840e-02 3.01717861136e-02 + 3.17358390207e-02 3.33624200108e-02 3.49654910486e-02 3.64263171972e-02 3.76190713504e-02 3.84534160516e-02 + 4.44868574481e-02 4.44045560444e-02 4.42752514752e-02 4.42752514752e-02 4.44045560444e-02 4.44868574481e-02 + 4.42634768270e-02 4.35234290368e-02 4.21941579647e-02 4.03527020822e-02 3.81729635435e-02 3.58537824974e-02 + 3.35632692529e-02 3.14127386696e-02 2.94586793037e-02 2.77227537368e-02 2.62153172241e-02 2.49511167951e-02 + 2.39549635512e-02 2.32603028496e-02 2.29016184223e-02 2.29016184223e-02 2.32603028496e-02 2.39549635512e-02 + 2.49511167951e-02 2.62153172241e-02 2.77227537368e-02 2.94586793037e-02 3.14127386696e-02 3.35632692529e-02 + 3.58537824974e-02 3.81729635435e-02 4.03527020822e-02 4.21941579647e-02 4.35234290368e-02 4.42634768270e-02 + 4.89738024005e-02 4.85080722970e-02 4.83002627794e-02 4.85080722970e-02 4.89738024005e-02 4.93048229800e-02 + 4.90700187394e-02 4.79989400749e-02 4.60731359718e-02 4.34838779539e-02 4.05199675384e-02 3.74634706166e-02 + 3.45282284639e-02 3.18414068716e-02 2.94586793037e-02 2.73972646659e-02 2.56657154446e-02 2.42781130820e-02 + 2.32562353108e-02 2.26267522861e-02 2.24136125305e-02 2.26267522861e-02 2.32562353108e-02 2.42781130820e-02 + 2.56657154446e-02 2.73972646659e-02 2.94586793037e-02 3.18414068716e-02 3.45282284639e-02 3.74634706166e-02 + 4.05199675384e-02 4.34838779539e-02 4.60731359718e-02 4.79989400749e-02 4.90700187394e-02 4.93048229800e-02 + 5.13869204668e-02 5.06194135765e-02 5.06194135765e-02 5.13869204668e-02 5.24797871309e-02 5.32152215954e-02 + 5.29846351657e-02 5.15101646150e-02 4.88987422193e-02 4.55081727847e-02 4.17618689283e-02 3.80204685260e-02 + 3.45282284639e-02 3.14127386696e-02 2.87187367840e-02 2.64534808200e-02 2.46187421852e-02 2.32217587400e-02 + 2.22755921268e-02 2.17964249596e-02 2.17964249596e-02 2.22755921268e-02 2.32217587400e-02 2.46187421852e-02 + 2.64534808200e-02 2.87187367840e-02 3.14127386696e-02 3.45282284639e-02 3.80204685260e-02 4.17618689283e-02 + 4.55081727847e-02 4.88987422193e-02 5.15101646150e-02 5.29846351657e-02 5.32152215954e-02 5.24797871309e-02 + 5.12221625406e-02 5.05555186569e-02 5.12221625406e-02 5.29210396854e-02 5.48533676650e-02 5.60372557288e-02 + 5.57363453523e-02 5.37510492057e-02 5.03893328752e-02 4.62088704848e-02 4.17618689283e-02 3.74634706166e-02 + 3.35632692529e-02 3.01717861136e-02 2.73140021666e-02 2.49827563157e-02 2.31688478126e-02 2.18687619531e-02 + 2.10847229658e-02 2.08223402545e-02 2.10847229658e-02 2.18687619531e-02 2.31688478126e-02 2.49827563157e-02 + 2.73140021666e-02 3.01717861136e-02 3.35632692529e-02 3.74634706166e-02 4.17618689283e-02 4.62088704848e-02 + 5.03893328752e-02 5.37510492057e-02 5.57363453523e-02 5.60372557288e-02 5.48533676650e-02 5.29210396854e-02 + 4.89850720157e-02 4.89850720157e-02 5.07010770424e-02 5.34983990182e-02 5.62463189889e-02 5.77208882781e-02 + 5.71527035674e-02 5.45211951056e-02 5.03893328752e-02 4.55081727847e-02 4.05199675384e-02 3.58537824974e-02 + 3.17358390207e-02 2.82446089484e-02 2.53797852965e-02 2.31175818882e-02 2.14361295219e-02 2.03206914317e-02 + 1.97639178277e-02 1.97639178277e-02 2.03206914317e-02 2.14361295219e-02 2.31175818882e-02 2.53797852965e-02 + 2.82446089484e-02 3.17358390207e-02 3.58537824974e-02 4.05199675384e-02 4.55081727847e-02 5.03893328752e-02 + 5.45211951056e-02 5.71527035674e-02 5.77208882781e-02 5.62463189889e-02 5.34983990182e-02 5.07010770424e-02 + 4.60013609401e-02 4.70389926376e-02 4.98718618187e-02 5.36143814352e-02 5.68740665481e-02 5.82782465337e-02 + 5.71527035674e-02 5.37510492057e-02 4.88987422193e-02 4.34838779539e-02 3.81729635435e-02 3.33624200108e-02 + 2.92302840650e-02 2.58139075627e-02 2.30866420056e-02 2.10090352784e-02 1.95479913088e-02 1.86800926235e-02 + 1.83921353899e-02 1.86800926235e-02 1.95479913088e-02 2.10090352784e-02 2.30866420056e-02 2.58139075627e-02 + 2.92302840650e-02 3.33624200108e-02 3.81729635435e-02 4.34838779539e-02 4.88987422193e-02 5.37510492057e-02 + 5.71527035674e-02 5.82782465337e-02 5.68740665481e-02 5.36143814352e-02 4.98718618187e-02 4.70389926376e-02 + 4.35588929466e-02 4.56222411881e-02 4.93308963719e-02 5.36149267734e-02 5.68740665481e-02 5.77208882781e-02 + 5.57363453523e-02 5.15101646150e-02 4.60731359718e-02 4.03527020822e-02 3.49654910486e-02 3.02357338101e-02 + 2.62778950395e-02 2.30866420056e-02 2.06126999880e-02 1.88049742175e-02 1.76229803621e-02 1.70389543521e-02 + 1.70389543521e-02 1.76229803621e-02 1.88049742175e-02 2.06126999880e-02 2.30866420056e-02 2.62778950395e-02 + 3.02357338101e-02 3.49654910486e-02 4.03527020822e-02 4.60731359718e-02 5.15101646150e-02 5.57363453523e-02 + 5.77208882781e-02 5.68740665481e-02 5.36149267734e-02 4.93308963719e-02 4.56222411881e-02 4.35588929466e-02 + 4.22847991283e-02 4.51254329663e-02 4.93308963719e-02 5.36143814352e-02 5.62463189889e-02 5.60372557288e-02 + 5.29846351657e-02 4.79989400749e-02 4.21941579647e-02 3.64263171972e-02 3.12022017908e-02 2.67502344749e-02 + 2.31175818882e-02 2.02621880335e-02 1.81196807915e-02 1.66330383744e-02 1.57591868798e-02 1.54709928045e-02 + 1.57591868798e-02 1.66330383744e-02 1.81196807915e-02 2.02621880335e-02 2.31175818882e-02 2.67502344749e-02 + 3.12022017908e-02 3.64263171972e-02 4.21941579647e-02 4.79989400749e-02 5.29846351657e-02 5.60372557288e-02 + 5.62463189889e-02 5.36143814352e-02 4.93308963719e-02 4.51254329663e-02 4.22847991283e-02 4.13123485649e-02 + 4.22847991283e-02 4.56222411881e-02 4.98718618187e-02 5.34983990182e-02 5.48533676650e-02 5.32152215954e-02 + 4.90700187394e-02 4.35234290368e-02 3.76190713504e-02 3.20546920774e-02 2.71955666447e-02 2.31688478126e-02 + 1.99620901041e-02 1.75083321070e-02 1.57370100687e-02 1.45906790875e-02 1.40283418589e-02 1.40283418589e-02 + 1.45906790875e-02 1.57370100687e-02 1.75083321070e-02 1.99620901041e-02 2.31688478126e-02 2.71955666447e-02 + 3.20546920774e-02 3.76190713504e-02 4.35234290368e-02 4.90700187394e-02 5.32152215954e-02 5.48533676650e-02 + 5.34983990182e-02 4.98718618187e-02 4.56222411881e-02 4.22847991283e-02 4.05694134160e-02 4.05694134160e-02 + 4.35588929466e-02 4.70389926376e-02 5.07010770424e-02 5.29210396854e-02 5.24797871309e-02 4.93048229800e-02 + 4.42634768270e-02 3.84534160516e-02 3.27229087590e-02 2.75721078901e-02 2.32217587400e-02 1.97084075068e-02 + 1.69767793036e-02 1.49488960464e-02 1.35553259639e-02 1.27424344623e-02 1.24755048074e-02 1.27424344623e-02 + 1.35553259639e-02 1.49488960464e-02 1.69767793036e-02 1.97084075068e-02 2.32217587400e-02 2.75721078901e-02 + 3.27229087590e-02 3.84534160516e-02 4.42634768270e-02 4.93048229800e-02 5.24797871309e-02 5.29210396854e-02 + 5.07010770424e-02 4.70389926376e-02 4.35588929466e-02 4.13123485649e-02 4.05694134160e-02 4.13123485649e-02 + 5.75824043038e-02 5.67236888968e-02 5.43925934286e-02 5.03535465114e-02 4.49623774036e-02 3.89160663350e-02 + 3.28952522339e-02 2.73794467347e-02 2.26267522861e-02 1.87162119832e-02 1.56112881223e-02 1.32272933414e-02 + 1.14766013692e-02 1.02846446979e-02 9.59384043225e-03 9.36769905218e-03 9.59384043225e-03 1.02846446979e-02 + 1.14766013692e-02 1.32272933414e-02 1.56112881223e-02 1.87162119832e-02 2.26267522861e-02 2.73794467347e-02 + 3.28952522339e-02 3.89160663350e-02 4.49623774036e-02 5.03535465114e-02 5.43925934286e-02 5.67236888968e-02 + 5.75824043038e-02 5.76200322747e-02 5.74463352203e-02 5.73653289979e-02 5.74463352203e-02 5.76200322747e-02 + 5.67236888968e-02 5.43239294918e-02 5.04463447592e-02 4.52857661696e-02 3.93968315223e-02 3.34071767353e-02 + 2.78094015925e-02 2.29016184223e-02 1.88053010662e-02 1.55127511572e-02 1.29494247541e-02 1.10259974674e-02 + 9.66211927865e-03 8.79214216133e-03 8.36917339040e-03 8.36917339040e-03 8.79214216133e-03 9.66211927865e-03 + 1.10259974674e-02 1.29494247541e-02 1.55127511572e-02 1.88053010662e-02 2.29016184223e-02 2.78094015925e-02 + 3.34071767353e-02 3.93968315223e-02 4.52857661696e-02 5.04463447592e-02 5.43239294918e-02 5.67236888968e-02 + 5.79103146750e-02 5.83777841365e-02 5.85232784436e-02 5.85232784436e-02 5.83777841365e-02 5.79103146750e-02 + 5.43925934286e-02 5.04463447592e-02 4.53738413591e-02 3.96081166256e-02 3.36893635306e-02 2.80812943983e-02 + 2.30924993956e-02 1.88720574247e-02 1.54388806266e-02 1.27327884289e-02 1.06671499136e-02 9.15892896774e-03 + 8.13716815266e-03 7.54684340873e-03 7.35383003280e-03 7.54684340873e-03 8.13716815266e-03 9.15892896774e-03 + 1.06671499136e-02 1.27327884289e-02 1.54388806266e-02 1.88720574247e-02 2.30924993956e-02 2.80812943983e-02 + 3.36893635306e-02 3.96081166256e-02 4.53738413591e-02 5.04463447592e-02 5.43925934286e-02 5.70772559013e-02 + 5.86758842735e-02 5.94868177545e-02 5.97323039443e-02 5.94868177545e-02 5.86758842735e-02 5.70772559013e-02 + 5.03535465114e-02 4.52857661696e-02 3.96081166256e-02 3.37780927799e-02 2.82105864296e-02 2.32023283361e-02 + 1.89142861556e-02 1.53857855201e-02 1.25723726562e-02 1.03937663652e-02 8.76725594498e-03 7.61927184895e-03 + 6.88914005847e-03 6.53448601861e-03 6.53448601861e-03 6.88914005847e-03 7.61927184895e-03 8.76725594498e-03 + 1.03937663652e-02 1.25723726562e-02 1.53857855201e-02 1.89142861556e-02 2.32023283361e-02 2.82105864296e-02 + 3.37780927799e-02 3.96081166256e-02 4.52857661696e-02 5.03535465114e-02 5.44475263977e-02 5.74105494947e-02 + 5.92810318582e-02 6.01752681104e-02 6.01752681104e-02 5.92810318582e-02 5.74105494947e-02 5.44475263977e-02 + 4.49623774036e-02 3.93968315223e-02 3.36893635306e-02 2.82105864296e-02 2.32378434698e-02 1.89341271390e-02 + 1.53530693596e-02 1.24657333634e-02 1.02011860999e-02 8.47998103933e-03 7.22847713667e-03 6.38291972351e-03 + 5.89466652251e-03 5.73495116497e-03 5.89466652251e-03 6.38291972351e-03 7.22847713667e-03 8.47998103933e-03 + 1.02011860999e-02 1.24657333634e-02 1.53530693596e-02 1.89341271390e-02 2.32378434698e-02 2.82105864296e-02 + 3.36893635306e-02 3.93968315223e-02 4.49623774036e-02 4.99825941802e-02 5.41129564364e-02 5.71366804742e-02 + 5.89627863020e-02 5.95715936141e-02 5.89627863020e-02 5.71366804742e-02 5.41129564364e-02 4.99825941802e-02 + 3.89160663350e-02 3.34071767353e-02 2.80812943983e-02 2.32023283361e-02 1.89341271390e-02 1.53419303249e-02 + 1.24123312979e-02 1.00865795572e-02 8.29158854156e-03 6.95605972443e-03 6.01563766373e-03 5.41768978229e-03 + 5.12697112440e-03 5.12697112440e-03 5.41768978229e-03 6.01563766373e-03 6.95605972443e-03 8.29158854156e-03 + 1.00865795572e-02 1.24123312979e-02 1.53419303249e-02 1.89341271390e-02 2.32023283361e-02 2.80812943983e-02 + 3.34071767353e-02 3.89160663350e-02 4.42634768270e-02 4.90700187394e-02 5.29846351657e-02 5.57363453523e-02 + 5.71527035674e-02 5.71527035674e-02 5.57363453523e-02 5.29846351657e-02 4.90700187394e-02 4.42634768270e-02 + 3.28952522339e-02 2.78094015925e-02 2.30924993956e-02 1.89142861556e-02 1.53530693596e-02 1.24123312979e-02 + 1.00485204973e-02 8.19834740781e-03 6.79537428806e-03 5.77685140016e-03 5.08859106656e-03 4.69069423954e-03 + 4.56041706509e-03 4.69069423954e-03 5.08859106656e-03 5.77685140016e-03 6.79537428806e-03 8.19834740781e-03 + 1.00485204973e-02 1.24123312979e-02 1.53530693596e-02 1.89142861556e-02 2.30924993956e-02 2.78094015925e-02 + 3.28952522339e-02 3.80886538087e-02 4.30547772101e-02 4.74231711778e-02 5.08390344517e-02 5.30133769166e-02 + 5.37595739225e-02 5.30133769166e-02 5.08390344517e-02 4.74231711778e-02 4.30547772101e-02 3.80886538087e-02 + 2.73794467347e-02 2.29016184223e-02 1.88720574247e-02 1.53857855201e-02 1.24657333634e-02 1.00865795572e-02 + 8.19834740781e-03 6.74228118806e-03 5.65928321674e-03 4.89581524939e-03 4.40955813989e-03 4.17292027232e-03 + 4.17292027232e-03 4.40955813989e-03 4.89581524939e-03 5.65928321674e-03 6.74228118806e-03 8.19834740781e-03 + 1.00865795572e-02 1.24657333634e-02 1.53857855201e-02 1.88720574247e-02 2.29016184223e-02 2.73794467347e-02 + 3.21243272248e-02 3.68707660171e-02 4.12888114430e-02 4.50208900473e-02 4.77311231410e-02 4.91578982971e-02 + 4.91578982971e-02 4.77311231410e-02 4.50208900473e-02 4.12888114430e-02 3.68707660171e-02 3.21243272248e-02 + 2.26267522861e-02 1.88053010662e-02 1.54388806266e-02 1.25723726562e-02 1.02011860999e-02 8.29158854156e-03 + 6.79537428806e-03 5.65928321674e-03 4.83232712929e-03 4.27192322596e-03 3.94752033538e-03 3.84131375804e-03 + 3.94752033538e-03 4.27192322596e-03 4.83232712929e-03 5.65928321674e-03 6.79537428806e-03 8.29158854156e-03 + 1.02011860999e-02 1.25723726562e-02 1.54388806266e-02 1.88053010662e-02 2.26267522861e-02 2.67889182249e-02 + 3.10978190541e-02 3.52857897121e-02 3.90350130516e-02 4.20165784801e-02 4.39402098517e-02 4.46053414397e-02 + 4.39402098517e-02 4.20165784801e-02 3.90350130516e-02 3.52857897121e-02 3.10978190541e-02 2.67889182249e-02 + 1.87162119832e-02 1.55127511572e-02 1.27327884289e-02 1.03937663652e-02 8.47998103933e-03 6.95605972443e-03 + 5.77685140016e-03 4.89581524939e-03 4.27192322596e-03 3.87358926493e-03 3.67971968314e-03 3.67971968314e-03 + 3.87358926493e-03 4.27192322596e-03 4.89581524939e-03 5.77685140016e-03 6.95605972443e-03 8.47998103933e-03 + 1.03937663652e-02 1.27327884289e-02 1.55127511572e-02 1.87162119832e-02 2.22755921268e-02 2.60582031450e-02 + 2.98615217076e-02 3.34242157073e-02 3.64535808156e-02 3.86662855632e-02 3.98358227133e-02 3.98358227133e-02 + 3.86662855632e-02 3.64535808156e-02 3.34242157073e-02 2.98615217076e-02 2.60582031450e-02 2.22755921268e-02 + 1.56112881223e-02 1.29494247541e-02 1.06671499136e-02 8.76725594498e-03 7.22847713667e-03 6.01563766373e-03 + 5.08859106656e-03 4.40955813989e-03 3.94752033538e-03 3.67971968314e-03 3.59206217435e-03 3.67971968314e-03 + 3.94752033538e-03 4.40955813989e-03 5.08859106656e-03 6.01563766373e-03 7.22847713667e-03 8.76725594498e-03 + 1.06671499136e-02 1.29494247541e-02 1.56112881223e-02 1.86137801375e-02 2.18687619531e-02 2.52298202509e-02 + 2.84935612207e-02 3.14154606035e-02 3.37399765679e-02 3.52402742752e-02 3.57591480990e-02 3.52402742752e-02 + 3.37399765679e-02 3.14154606035e-02 2.84935612207e-02 2.52298202509e-02 2.18687619531e-02 1.86137801375e-02 + 1.32272933414e-02 1.10259974674e-02 9.15892896774e-03 7.61927184895e-03 6.38291972351e-03 5.41768978229e-03 + 4.69069423954e-03 4.17292027232e-03 3.84131375804e-03 3.67971968314e-03 3.67971968314e-03 3.84131375804e-03 + 4.17292027232e-03 4.69069423954e-03 5.41768978229e-03 6.38291972351e-03 7.61927184895e-03 9.15892896774e-03 + 1.10259974674e-02 1.32272933414e-02 1.57423428102e-02 1.85132658939e-02 2.14361295219e-02 2.43576039836e-02 + 2.70818268649e-02 2.93901320501e-02 3.10717223250e-02 3.19590319446e-02 3.19590319446e-02 3.10717223250e-02 + 2.93901320501e-02 2.70818268649e-02 2.43576039836e-02 2.14361295219e-02 1.85132658939e-02 1.57423428102e-02 + 1.14766013692e-02 9.66211927865e-03 8.13716815266e-03 6.88914005847e-03 5.89466652251e-03 5.12697112440e-03 + 4.56041706509e-03 4.17292027232e-03 3.94752033538e-03 3.87358926493e-03 3.94752033538e-03 4.17292027232e-03 + 4.56041706509e-03 5.12697112440e-03 5.89466652251e-03 6.88914005847e-03 8.13716815266e-03 9.66211927865e-03 + 1.14766013692e-02 1.35733603577e-02 1.59162612755e-02 1.84326960165e-02 2.10090352784e-02 2.34923498457e-02 + 2.57019293917e-02 2.74512061786e-02 2.85763383726e-02 2.89647599965e-02 2.85763383726e-02 2.74512061786e-02 + 2.57019293917e-02 2.34923498457e-02 2.10090352784e-02 1.84326960165e-02 1.59162612755e-02 1.35733603577e-02 + 1.02846446979e-02 8.79214216133e-03 7.54684340873e-03 6.53448601861e-03 5.73495116497e-03 5.12697112440e-03 + 4.69069423954e-03 4.40955813989e-03 4.27192322596e-03 4.27192322596e-03 4.40955813989e-03 4.69069423954e-03 + 5.12697112440e-03 5.73495116497e-03 6.53448601861e-03 7.54684340873e-03 8.79214216133e-03 1.02846446979e-02 + 1.20255038743e-02 1.39945083398e-02 1.61427916872e-02 1.83878553878e-02 2.06126999880e-02 2.26718438342e-02 + 2.44059448105e-02 2.56635113913e-02 2.63252408289e-02 2.63252408289e-02 2.56635113913e-02 2.44059448105e-02 + 2.26718438342e-02 2.06126999880e-02 1.83878553878e-02 1.61427916872e-02 1.39945083398e-02 1.20255038743e-02 + 9.59384043225e-03 8.36917339040e-03 7.35383003280e-03 6.53448601861e-03 5.89466652251e-03 5.41768978229e-03 + 5.08859106656e-03 4.89581524939e-03 4.83232712929e-03 4.89581524939e-03 5.08859106656e-03 5.41768978229e-03 + 5.89466652251e-03 6.53448601861e-03 7.35383003280e-03 8.36917339040e-03 9.59384043225e-03 1.10330000246e-02 + 1.26769712537e-02 1.44944499034e-02 1.64272283654e-02 1.83878553878e-02 2.02621880335e-02 2.19185274002e-02 + 2.32231030162e-02 2.40594329852e-02 2.43476957086e-02 2.40594329852e-02 2.32231030162e-02 2.19185274002e-02 + 2.02621880335e-02 1.83878553878e-02 1.64272283654e-02 1.44944499034e-02 1.26769712537e-02 1.10330000246e-02 + 9.36769905218e-03 8.36917339040e-03 7.54684340873e-03 6.88914005847e-03 6.38291972351e-03 6.01563766373e-03 + 5.77685140016e-03 5.65928321674e-03 5.65928321674e-03 5.77685140016e-03 6.01563766373e-03 6.38291972351e-03 + 6.88914005847e-03 7.54684340873e-03 8.36917339040e-03 9.36769905218e-03 1.05489279259e-02 1.19093466628e-02 + 1.34297677852e-02 1.50702461704e-02 1.67669692380e-02 1.84326960165e-02 1.99620901041e-02 2.12421582644e-02 + 2.21666114252e-02 2.26519365039e-02 2.26519365039e-02 2.21666114252e-02 2.12421582644e-02 1.99620901041e-02 + 1.84326960165e-02 1.67669692380e-02 1.50702461704e-02 1.34297677852e-02 1.19093466628e-02 1.05489279259e-02 + 9.59384043225e-03 8.79214216133e-03 8.13716815266e-03 7.61927184895e-03 7.22847713667e-03 6.95605972443e-03 + 6.79537428806e-03 6.74228118806e-03 6.79537428806e-03 6.95605972443e-03 7.22847713667e-03 7.61927184895e-03 + 8.13716815266e-03 8.79214216133e-03 9.59384043225e-03 1.05489279259e-02 1.16573532374e-02 1.29079014387e-02 + 1.42737851127e-02 1.57094271493e-02 1.71497889118e-02 1.85132658939e-02 1.97084075068e-02 2.06439962171e-02 + 2.12413612776e-02 2.14468462049e-02 2.12413612776e-02 2.06439962171e-02 1.97084075068e-02 1.85132658939e-02 + 1.71497889118e-02 1.57094271493e-02 1.42737851127e-02 1.29079014387e-02 1.16573532374e-02 1.05489279259e-02 + 1.02846446979e-02 9.66211927865e-03 9.15892896774e-03 8.76725594498e-03 8.47998103933e-03 8.29158854156e-03 + 8.19834740781e-03 8.19834740781e-03 8.29158854156e-03 8.47998103933e-03 8.76725594498e-03 9.15892896774e-03 + 9.66211927865e-03 1.02846446979e-02 1.10330000246e-02 1.19093466628e-02 1.29079014387e-02 1.40112393540e-02 + 1.51874137660e-02 1.63890080671e-02 1.75547637226e-02 1.86137801375e-02 1.94921954522e-02 2.01220876747e-02 + 2.04512222766e-02 2.04512222766e-02 2.01220876747e-02 1.94921954522e-02 1.86137801375e-02 1.75547637226e-02 + 1.63890080671e-02 1.51874137660e-02 1.40112393540e-02 1.29079014387e-02 1.19093466628e-02 1.10330000246e-02 + 1.14766013692e-02 1.10259974674e-02 1.06671499136e-02 1.03937663652e-02 1.02011860999e-02 1.00865795572e-02 + 1.00485204973e-02 1.00865795572e-02 1.02011860999e-02 1.03937663652e-02 1.06671499136e-02 1.10259974674e-02 + 1.14766013692e-02 1.20255038743e-02 1.26769712537e-02 1.34297677852e-02 1.42737851127e-02 1.51874137660e-02 + 1.61367490443e-02 1.70770073925e-02 1.79555609317e-02 1.87162119832e-02 1.93050944183e-02 1.96777557044e-02 + 1.98052910067e-02 1.96777557044e-02 1.93050944183e-02 1.87162119832e-02 1.79555609317e-02 1.70770073925e-02 + 1.61367490443e-02 1.51874137660e-02 1.42737851127e-02 1.34297677852e-02 1.26769712537e-02 1.20255038743e-02 + 1.32272933414e-02 1.29494247541e-02 1.27327884289e-02 1.25723726562e-02 1.24657333634e-02 1.24123312979e-02 + 1.24123312979e-02 1.24657333634e-02 1.25723726562e-02 1.27327884289e-02 1.29494247541e-02 1.32272933414e-02 + 1.35733603577e-02 1.39945083398e-02 1.44944499034e-02 1.50702461704e-02 1.57094271493e-02 1.63890080671e-02 + 1.70770073925e-02 1.77355963866e-02 1.83246021902e-02 1.88053010662e-02 1.91448778653e-02 1.93203741197e-02 + 1.93203741197e-02 1.91448778653e-02 1.88053010662e-02 1.83246021902e-02 1.77355963866e-02 1.70770073925e-02 + 1.63890080671e-02 1.57094271493e-02 1.50702461704e-02 1.44944499034e-02 1.39945083398e-02 1.35733603577e-02 + 1.56112881223e-02 1.55127511572e-02 1.54388806266e-02 1.53857855201e-02 1.53530693596e-02 1.53419303249e-02 + 1.53530693596e-02 1.53857855201e-02 1.54388806266e-02 1.55127511572e-02 1.56112881223e-02 1.57423428102e-02 + 1.59162612755e-02 1.61427916872e-02 1.64272283654e-02 1.67669692380e-02 1.71497889118e-02 1.75547637226e-02 + 1.79555609317e-02 1.83246021902e-02 1.86367379277e-02 1.88720574247e-02 1.90175139009e-02 1.90666010177e-02 + 1.90175139009e-02 1.88720574247e-02 1.86367379277e-02 1.83246021902e-02 1.79555609317e-02 1.75547637226e-02 + 1.71497889118e-02 1.67669692380e-02 1.64272283654e-02 1.61427916872e-02 1.59162612755e-02 1.57423428102e-02 + 1.87162119832e-02 1.88053010662e-02 1.88720574247e-02 1.89142861556e-02 1.89341271390e-02 1.89341271390e-02 + 1.89142861556e-02 1.88720574247e-02 1.88053010662e-02 1.87162119832e-02 1.86137801375e-02 1.85132658939e-02 + 1.84326960165e-02 1.83878553878e-02 1.83878553878e-02 1.84326960165e-02 1.85132658939e-02 1.86137801375e-02 + 1.87162119832e-02 1.88053010662e-02 1.88720574247e-02 1.89142861556e-02 1.89341271390e-02 1.89341271390e-02 + 1.89142861556e-02 1.88720574247e-02 1.88053010662e-02 1.87162119832e-02 1.86137801375e-02 1.85132658939e-02 + 1.84326960165e-02 1.83878553878e-02 1.83878553878e-02 1.84326960165e-02 1.85132658939e-02 1.86137801375e-02 + 2.26267522861e-02 2.29016184223e-02 2.30924993956e-02 2.32023283361e-02 2.32378434698e-02 2.32023283361e-02 + 2.30924993956e-02 2.29016184223e-02 2.26267522861e-02 2.22755921268e-02 2.18687619531e-02 2.14361295219e-02 + 2.10090352784e-02 2.06126999880e-02 2.02621880335e-02 1.99620901041e-02 1.97084075068e-02 1.94921954522e-02 + 1.93050944183e-02 1.91448778653e-02 1.90175139009e-02 1.89341271390e-02 1.89049688962e-02 1.89341271390e-02 + 1.90175139009e-02 1.91448778653e-02 1.93050944183e-02 1.94921954522e-02 1.97084075068e-02 1.99620901041e-02 + 2.02621880335e-02 2.06126999880e-02 2.10090352784e-02 2.14361295219e-02 2.18687619531e-02 2.22755921268e-02 + 2.73794467347e-02 2.78094015925e-02 2.80812943983e-02 2.82105864296e-02 2.82105864296e-02 2.80812943983e-02 + 2.78094015925e-02 2.73794467347e-02 2.67889182249e-02 2.60582031450e-02 2.52298202509e-02 2.43576039836e-02 + 2.34923498457e-02 2.26718438342e-02 2.19185274002e-02 2.12421582644e-02 2.06439962171e-02 2.01220876747e-02 + 1.96777557044e-02 1.93203741197e-02 1.90666010177e-02 1.89341271390e-02 1.89341271390e-02 1.90666010177e-02 + 1.93203741197e-02 1.96777557044e-02 2.01220876747e-02 2.06439962171e-02 2.12421582644e-02 2.19185274002e-02 + 2.26718438342e-02 2.34923498457e-02 2.43576039836e-02 2.52298202509e-02 2.60582031450e-02 2.67889182249e-02 + 3.28952522339e-02 3.34071767353e-02 3.36893635306e-02 3.37780927799e-02 3.36893635306e-02 3.34071767353e-02 + 3.28952522339e-02 3.21243272248e-02 3.10978190541e-02 2.98615217076e-02 2.84935612207e-02 2.70818268649e-02 + 2.57019293917e-02 2.44059448105e-02 2.32231030162e-02 2.21666114252e-02 2.12413612776e-02 2.04512222766e-02 + 1.98052910067e-02 1.93203741197e-02 1.90175139009e-02 1.89142861556e-02 1.90175139009e-02 1.93203741197e-02 + 1.98052910067e-02 2.04512222766e-02 2.12413612776e-02 2.21666114252e-02 2.32231030162e-02 2.44059448105e-02 + 2.57019293917e-02 2.70818268649e-02 2.84935612207e-02 2.98615217076e-02 3.10978190541e-02 3.21243272248e-02 + 3.89160663350e-02 3.93968315223e-02 3.96081166256e-02 3.96081166256e-02 3.93968315223e-02 3.89160663350e-02 + 3.80886538087e-02 3.68707660171e-02 3.52857897121e-02 3.34242157073e-02 3.14154606035e-02 2.93901320501e-02 + 2.74512061786e-02 2.56635113913e-02 2.40594329852e-02 2.26519365039e-02 2.14468462049e-02 2.04512222766e-02 + 1.96777557044e-02 1.91448778653e-02 1.88720574247e-02 1.88720574247e-02 1.91448778653e-02 1.96777557044e-02 + 2.04512222766e-02 2.14468462049e-02 2.26519365039e-02 2.40594329852e-02 2.56635113913e-02 2.74512061786e-02 + 2.93901320501e-02 3.14154606035e-02 3.34242157073e-02 3.52857897121e-02 3.68707660171e-02 3.80886538087e-02 + 4.49623774036e-02 4.52857661696e-02 4.53738413591e-02 4.52857661696e-02 4.49623774036e-02 4.42634768270e-02 + 4.30547772101e-02 4.12888114430e-02 3.90350130516e-02 3.64535808156e-02 3.37399765679e-02 3.10717223250e-02 + 2.85763383726e-02 2.63252408289e-02 2.43476957086e-02 2.26519365039e-02 2.12413612776e-02 2.01220876747e-02 + 1.93050944183e-02 1.88053010662e-02 1.86367379277e-02 1.88053010662e-02 1.93050944183e-02 2.01220876747e-02 + 2.12413612776e-02 2.26519365039e-02 2.43476957086e-02 2.63252408289e-02 2.85763383726e-02 3.10717223250e-02 + 3.37399765679e-02 3.64535808156e-02 3.90350130516e-02 4.12888114430e-02 4.30547772101e-02 4.42634768270e-02 + 5.03535465114e-02 5.04463447592e-02 5.04463447592e-02 5.03535465114e-02 4.99825941802e-02 4.90700187394e-02 + 4.74231711778e-02 4.50208900473e-02 4.20165784801e-02 3.86662855632e-02 3.52402742752e-02 3.19590319446e-02 + 2.89647599965e-02 2.63252408289e-02 2.40594329852e-02 2.21666114252e-02 2.06439962171e-02 1.94921954522e-02 + 1.87162119832e-02 1.83246021902e-02 1.83246021902e-02 1.87162119832e-02 1.94921954522e-02 2.06439962171e-02 + 2.21666114252e-02 2.40594329852e-02 2.63252408289e-02 2.89647599965e-02 3.19590319446e-02 3.52402742752e-02 + 3.86662855632e-02 4.20165784801e-02 4.50208900473e-02 4.74231711778e-02 4.90700187394e-02 4.99825941802e-02 + 5.43925934286e-02 5.43239294918e-02 5.43925934286e-02 5.44475263977e-02 5.41129564364e-02 5.29846351657e-02 + 5.08390344517e-02 4.77311231410e-02 4.39402098517e-02 3.98358227133e-02 3.57591480990e-02 3.19590319446e-02 + 2.85763383726e-02 2.56635113913e-02 2.32231030162e-02 2.12421582644e-02 1.97084075068e-02 1.86137801375e-02 + 1.79555609317e-02 1.77355963866e-02 1.79555609317e-02 1.86137801375e-02 1.97084075068e-02 2.12421582644e-02 + 2.32231030162e-02 2.56635113913e-02 2.85763383726e-02 3.19590319446e-02 3.57591480990e-02 3.98358227133e-02 + 4.39402098517e-02 4.77311231410e-02 5.08390344517e-02 5.29846351657e-02 5.41129564364e-02 5.44475263977e-02 + 5.67236888968e-02 5.67236888968e-02 5.70772559013e-02 5.74105494947e-02 5.71366804742e-02 5.57363453523e-02 + 5.30133769166e-02 4.91578982971e-02 4.46053414397e-02 3.98358227133e-02 3.52402742752e-02 3.10717223250e-02 + 2.74512061786e-02 2.44059448105e-02 2.19185274002e-02 1.99620901041e-02 1.85132658939e-02 1.75547637226e-02 + 1.70770073925e-02 1.70770073925e-02 1.75547637226e-02 1.85132658939e-02 1.99620901041e-02 2.19185274002e-02 + 2.44059448105e-02 2.74512061786e-02 3.10717223250e-02 3.52402742752e-02 3.98358227133e-02 4.46053414397e-02 + 4.91578982971e-02 5.30133769166e-02 5.57363453523e-02 5.71366804742e-02 5.74105494947e-02 5.70772559013e-02 + 5.75824043038e-02 5.79103146750e-02 5.86758842735e-02 5.92810318582e-02 5.89627863020e-02 5.71527035674e-02 + 5.37595739225e-02 4.91578982971e-02 4.39402098517e-02 3.86662855632e-02 3.37399765679e-02 2.93901320501e-02 + 2.57019293917e-02 2.26718438342e-02 2.02621880335e-02 1.84326960165e-02 1.71497889118e-02 1.63890080671e-02 + 1.61367490443e-02 1.63890080671e-02 1.71497889118e-02 1.84326960165e-02 2.02621880335e-02 2.26718438342e-02 + 2.57019293917e-02 2.93901320501e-02 3.37399765679e-02 3.86662855632e-02 4.39402098517e-02 4.91578982971e-02 + 5.37595739225e-02 5.71527035674e-02 5.89627863020e-02 5.92810318582e-02 5.86758842735e-02 5.79103146750e-02 + 5.76200322747e-02 5.83777841365e-02 5.94868177545e-02 6.01752681104e-02 5.95715936141e-02 5.71527035674e-02 + 5.30133769166e-02 4.77311231410e-02 4.20165784801e-02 3.64535808156e-02 3.14154606035e-02 2.70818268649e-02 + 2.34923498457e-02 2.06126999880e-02 1.83878553878e-02 1.67669692380e-02 1.57094271493e-02 1.51874137660e-02 + 1.51874137660e-02 1.57094271493e-02 1.67669692380e-02 1.83878553878e-02 2.06126999880e-02 2.34923498457e-02 + 2.70818268649e-02 3.14154606035e-02 3.64535808156e-02 4.20165784801e-02 4.77311231410e-02 5.30133769166e-02 + 5.71527035674e-02 5.95715936141e-02 6.01752681104e-02 5.94868177545e-02 5.83777841365e-02 5.76200322747e-02 + 5.74463352203e-02 5.85232784436e-02 5.97323039443e-02 6.01752681104e-02 5.89627863020e-02 5.57363453523e-02 + 5.08390344517e-02 4.50208900473e-02 3.90350130516e-02 3.34242157073e-02 2.84935612207e-02 2.43576039836e-02 + 2.10090352784e-02 1.83878553878e-02 1.64272283654e-02 1.50702461704e-02 1.42737851127e-02 1.40112393540e-02 + 1.42737851127e-02 1.50702461704e-02 1.64272283654e-02 1.83878553878e-02 2.10090352784e-02 2.43576039836e-02 + 2.84935612207e-02 3.34242157073e-02 3.90350130516e-02 4.50208900473e-02 5.08390344517e-02 5.57363453523e-02 + 5.89627863020e-02 6.01752681104e-02 5.97323039443e-02 5.85232784436e-02 5.74463352203e-02 5.70355201353e-02 + 5.73653289979e-02 5.85232784436e-02 5.94868177545e-02 5.92810318582e-02 5.71366804742e-02 5.29846351657e-02 + 4.74231711778e-02 4.12888114430e-02 3.52857897121e-02 2.98615217076e-02 2.52298202509e-02 2.14361295219e-02 + 1.84326960165e-02 1.61427916872e-02 1.44944499034e-02 1.34297677852e-02 1.29079014387e-02 1.29079014387e-02 + 1.34297677852e-02 1.44944499034e-02 1.61427916872e-02 1.84326960165e-02 2.14361295219e-02 2.52298202509e-02 + 2.98615217076e-02 3.52857897121e-02 4.12888114430e-02 4.74231711778e-02 5.29846351657e-02 5.71366804742e-02 + 5.92810318582e-02 5.94868177545e-02 5.85232784436e-02 5.73653289979e-02 5.66663226477e-02 5.66663226477e-02 + 5.74463352203e-02 5.83777841365e-02 5.86758842735e-02 5.74105494947e-02 5.41129564364e-02 4.90700187394e-02 + 4.30547772101e-02 3.68707660171e-02 3.10978190541e-02 2.60582031450e-02 2.18687619531e-02 1.85132658939e-02 + 1.59162612755e-02 1.39945083398e-02 1.26769712537e-02 1.19093466628e-02 1.16573532374e-02 1.19093466628e-02 + 1.26769712537e-02 1.39945083398e-02 1.59162612755e-02 1.85132658939e-02 2.18687619531e-02 2.60582031450e-02 + 3.10978190541e-02 3.68707660171e-02 4.30547772101e-02 4.90700187394e-02 5.41129564364e-02 5.74105494947e-02 + 5.86758842735e-02 5.83777841365e-02 5.74463352203e-02 5.66663226477e-02 5.63846435627e-02 5.66663226477e-02 + 5.76200322747e-02 5.79103146750e-02 5.70772559013e-02 5.44475263977e-02 4.99825941802e-02 4.42634768270e-02 + 3.80886538087e-02 3.21243272248e-02 2.67889182249e-02 2.22755921268e-02 1.86137801375e-02 1.57423428102e-02 + 1.35733603577e-02 1.20255038743e-02 1.10330000246e-02 1.05489279259e-02 1.05489279259e-02 1.10330000246e-02 + 1.20255038743e-02 1.35733603577e-02 1.57423428102e-02 1.86137801375e-02 2.22755921268e-02 2.67889182249e-02 + 3.21243272248e-02 3.80886538087e-02 4.42634768270e-02 4.99825941802e-02 5.44475263977e-02 5.70772559013e-02 + 5.79103146750e-02 5.76200322747e-02 5.70355201353e-02 5.66663226477e-02 5.66663226477e-02 5.70355201353e-02 + 6.28259810566e-02 5.83399236929e-02 5.26931433274e-02 4.62623331670e-02 3.95849180057e-02 3.31691643222e-02 + 2.73794467347e-02 2.24136125305e-02 1.83246021902e-02 1.50645020089e-02 1.25396406703e-02 1.06524671204e-02 + 9.31810768724e-03 8.46823559623e-03 8.05519399644e-03 8.05519399644e-03 8.46823559623e-03 9.31810768724e-03 + 1.06524671204e-02 1.25396406703e-02 1.50645020089e-02 1.83246021902e-02 2.24136125305e-02 2.73794467347e-02 + 3.31691643222e-02 3.95849180057e-02 4.62623331670e-02 5.26931433274e-02 5.83399236929e-02 6.28259810566e-02 + 6.60504635380e-02 6.81077724909e-02 6.91119067669e-02 6.91119067669e-02 6.81077724909e-02 6.60504635380e-02 + 5.83399236929e-02 5.29676178633e-02 4.67810667612e-02 4.02540981079e-02 3.38709874542e-02 2.80098127199e-02 + 2.29016184223e-02 1.86367379277e-02 1.51956958667e-02 1.24976141314e-02 1.04460621935e-02 8.95261635749e-03 + 7.94279014126e-03 7.35981258047e-03 7.16922584820e-03 7.35981258047e-03 7.94279014126e-03 8.95261635749e-03 + 1.04460621935e-02 1.24976141314e-02 1.51956958667e-02 1.86367379277e-02 2.29016184223e-02 2.80098127199e-02 + 3.38709874542e-02 4.02540981079e-02 4.67810667612e-02 5.29676178633e-02 5.83399236929e-02 6.25800698666e-02 + 6.55787911247e-02 6.73541476702e-02 6.79419572879e-02 6.73541476702e-02 6.55787911247e-02 6.25800698666e-02 + 5.26931433274e-02 4.67810667612e-02 4.04742233092e-02 3.42208946471e-02 2.83925891295e-02 2.32368358951e-02 + 1.88720574247e-02 1.53065353883e-02 1.24770996440e-02 1.02937156151e-02 8.66817035987e-03 7.52314503521e-03 + 6.79567554150e-03 6.44245195186e-03 6.44245195186e-03 6.79567554150e-03 7.52314503521e-03 8.66817035987e-03 + 1.02937156151e-02 1.24770996440e-02 1.53065353883e-02 1.88720574247e-02 2.32368358951e-02 2.83925891295e-02 + 3.42208946471e-02 4.04742233092e-02 4.67810667612e-02 5.26931433274e-02 5.77843769256e-02 6.17513938278e-02 + 6.44394828494e-02 6.57918464265e-02 6.57918464265e-02 6.44394828494e-02 6.17513938278e-02 5.77843769256e-02 + 4.62623331670e-02 4.02540981079e-02 3.42208946471e-02 2.85205562719e-02 2.34067395586e-02 1.90175139009e-02 + 1.53857855201e-02 1.24686371753e-02 1.01870819285e-02 8.45686847188e-03 7.20097316500e-03 6.35335851926e-03 + 5.86418256271e-03 5.70420021497e-03 5.86418256271e-03 6.35335851926e-03 7.20097316500e-03 8.45686847188e-03 + 1.01870819285e-02 1.24686371753e-02 1.53857855201e-02 1.90175139009e-02 2.34067395586e-02 2.85205562719e-02 + 3.42208946471e-02 4.02540981079e-02 4.62623331670e-02 5.18281863755e-02 5.65511919643e-02 6.01184381094e-02 + 6.23288110708e-02 6.30764730892e-02 6.23288110708e-02 6.01184381094e-02 5.65511919643e-02 5.18281863755e-02 + 3.95849180057e-02 3.38709874542e-02 2.83925891295e-02 2.34067395586e-02 1.90666010177e-02 1.54267827082e-02 + 1.24657333634e-02 1.01194532806e-02 8.31144312544e-03 6.96786738821e-03 6.02253909249e-03 5.42174879265e-03 + 5.12972310883e-03 5.12972310883e-03 5.42174879265e-03 6.02253909249e-03 6.96786738821e-03 8.31144312544e-03 + 1.01194532806e-02 1.24657333634e-02 1.54267827082e-02 1.90666010177e-02 2.34067395586e-02 2.83925891295e-02 + 3.38709874542e-02 3.95849180057e-02 4.51877782102e-02 5.02828320119e-02 5.44829894560e-02 5.74676014035e-02 + 5.90154969276e-02 5.90154969276e-02 5.74676014035e-02 5.44829894560e-02 5.02828320119e-02 4.51877782102e-02 + 3.31691643222e-02 2.80098127199e-02 2.32368358951e-02 1.90175139009e-02 1.54267827082e-02 1.24650738064e-02 + 1.00865795572e-02 8.22635918544e-03 6.81664387654e-03 5.79365065764e-03 5.10253249618e-03 4.70304044562e-03 + 4.57225197605e-03 4.70304044562e-03 5.10253249618e-03 5.79365065764e-03 6.81664387654e-03 8.22635918544e-03 + 1.00865795572e-02 1.24650738064e-02 1.54267827082e-02 1.90175139009e-02 2.32368358951e-02 2.80098127199e-02 + 3.31691643222e-02 3.84534160516e-02 4.35234290368e-02 4.79989400749e-02 5.15101646150e-02 5.37510492057e-02 + 5.45211951056e-02 5.37510492057e-02 5.15101646150e-02 4.79989400749e-02 4.35234290368e-02 3.84534160516e-02 + 2.73794467347e-02 2.29016184223e-02 1.88720574247e-02 1.53857855201e-02 1.24657333634e-02 1.00865795572e-02 + 8.19834740781e-03 6.74228118806e-03 5.65928321674e-03 4.89581524939e-03 4.40955813989e-03 4.17292027232e-03 + 4.17292027232e-03 4.40955813989e-03 4.89581524939e-03 5.65928321674e-03 6.74228118806e-03 8.19834740781e-03 + 1.00865795572e-02 1.24657333634e-02 1.53857855201e-02 1.88720574247e-02 2.29016184223e-02 2.73794467347e-02 + 3.21243272248e-02 3.68707660171e-02 4.12888114430e-02 4.50208900473e-02 4.77311231410e-02 4.91578982971e-02 + 4.91578982971e-02 4.77311231410e-02 4.50208900473e-02 4.12888114430e-02 3.68707660171e-02 3.21243272248e-02 + 2.24136125305e-02 1.86367379277e-02 1.53065353883e-02 1.24686371753e-02 1.01194532806e-02 8.22635918544e-03 + 6.74228118806e-03 5.61497680711e-03 4.79423577304e-03 4.23798561825e-03 3.91597292758e-03 3.81054695208e-03 + 3.91597292758e-03 4.23798561825e-03 4.79423577304e-03 5.61497680711e-03 6.74228118806e-03 8.22635918544e-03 + 1.01194532806e-02 1.24686371753e-02 1.53065353883e-02 1.86367379277e-02 2.24136125305e-02 2.65227612839e-02 + 3.07715106065e-02 3.48956024912e-02 3.85829474965e-02 4.15120643887e-02 4.34003076052e-02 4.40529168852e-02 + 4.34003076052e-02 4.15120643887e-02 3.85829474965e-02 3.48956024912e-02 3.07715106065e-02 2.65227612839e-02 + 1.83246021902e-02 1.51956958667e-02 1.24770996440e-02 1.01870819285e-02 8.31144312544e-03 6.81664387654e-03 + 5.65928321674e-03 4.79423577304e-03 4.18152878343e-03 3.79030883078e-03 3.59990872378e-03 3.59990872378e-03 + 3.79030883078e-03 4.18152878343e-03 4.79423577304e-03 5.65928321674e-03 6.81664387654e-03 8.31144312544e-03 + 1.01870819285e-02 1.24770996440e-02 1.51956958667e-02 1.83246021902e-02 2.17964249596e-02 2.54803066383e-02 + 2.91781605866e-02 3.26363277502e-02 3.55725175924e-02 3.77147526395e-02 3.88462459817e-02 3.88462459817e-02 + 3.77147526395e-02 3.55725175924e-02 3.26363277502e-02 2.91781605866e-02 2.54803066383e-02 2.17964249596e-02 + 1.50645020089e-02 1.24976141314e-02 1.02937156151e-02 8.45686847188e-03 6.96786738821e-03 5.79365065764e-03 + 4.89581524939e-03 4.23798561825e-03 3.79030883078e-03 3.53085792774e-03 3.44594928533e-03 3.53085792774e-03 + 3.79030883078e-03 4.23798561825e-03 4.89581524939e-03 5.79365065764e-03 6.96786738821e-03 8.45686847188e-03 + 1.02937156151e-02 1.24976141314e-02 1.50645020089e-02 1.79555609317e-02 2.10847229658e-02 2.43103322252e-02 + 2.74372089612e-02 3.02323588099e-02 3.24534608631e-02 3.38859304601e-02 3.43811654173e-02 3.38859304601e-02 + 3.24534608631e-02 3.02323588099e-02 2.74372089612e-02 2.43103322252e-02 2.10847229658e-02 1.79555609317e-02 + 1.25396406703e-02 1.04460621935e-02 8.66817035987e-03 7.20097316500e-03 6.02253909249e-03 5.10253249618e-03 + 4.40955813989e-03 3.91597292758e-03 3.59990872378e-03 3.44594928533e-03 3.44594928533e-03 3.59990872378e-03 + 3.91597292758e-03 4.40955813989e-03 5.10253249618e-03 6.02253909249e-03 7.20097316500e-03 8.66817035987e-03 + 1.04460621935e-02 1.25396406703e-02 1.49279448733e-02 1.75547637226e-02 2.03206914317e-02 2.30804654510e-02 + 2.56499234494e-02 2.78244998346e-02 2.94074293899e-02 3.02423286704e-02 3.02423286704e-02 2.94074293899e-02 + 2.78244998346e-02 2.56499234494e-02 2.30804654510e-02 2.03206914317e-02 1.75547637226e-02 1.49279448733e-02 + 1.06524671204e-02 8.95261635749e-03 7.52314503521e-03 6.35335851926e-03 5.42174879265e-03 4.70304044562e-03 + 4.17292027232e-03 3.81054695208e-03 3.59990872378e-03 3.53085792774e-03 3.59990872378e-03 3.81054695208e-03 + 4.17292027232e-03 4.70304044562e-03 5.42174879265e-03 6.35335851926e-03 7.52314503521e-03 8.95261635749e-03 + 1.06524671204e-02 1.26143883181e-02 1.48031251671e-02 1.71497889118e-02 1.95479913088e-02 2.18557815330e-02 + 2.39063871143e-02 2.55281844546e-02 2.65706573512e-02 2.69304328597e-02 2.65706573512e-02 2.55281844546e-02 + 2.39063871143e-02 2.18557815330e-02 1.95479913088e-02 1.71497889118e-02 1.48031251671e-02 1.26143883181e-02 + 9.31810768724e-03 7.94279014126e-03 6.79567554150e-03 5.86418256271e-03 5.12972310883e-03 4.57225197605e-03 + 4.17292027232e-03 3.91597292758e-03 3.79030883078e-03 3.79030883078e-03 3.91597292758e-03 4.17292027232e-03 + 4.57225197605e-03 5.12972310883e-03 5.86418256271e-03 6.79567554150e-03 7.94279014126e-03 9.31810768724e-03 + 1.09215936737e-02 1.27333396536e-02 1.47072813037e-02 1.67669692380e-02 1.88049742175e-02 2.06884779452e-02 + 2.22726314479e-02 2.34202555044e-02 2.40237109616e-02 2.40237109616e-02 2.34202555044e-02 2.22726314479e-02 + 2.06884779452e-02 1.88049742175e-02 1.67669692380e-02 1.47072813037e-02 1.27333396536e-02 1.09215936737e-02 + 8.46823559623e-03 7.35981258047e-03 6.44245195186e-03 5.70420021497e-03 5.12972310883e-03 4.70304044562e-03 + 4.40955813989e-03 4.23798561825e-03 4.18152878343e-03 4.23798561825e-03 4.40955813989e-03 4.70304044562e-03 + 5.12972310883e-03 5.70420021497e-03 6.44245195186e-03 7.35981258047e-03 8.46823559623e-03 9.77183223433e-03 + 1.12609832188e-02 1.29064893850e-02 1.46550533623e-02 1.64272283654e-02 1.81196807915e-02 1.96135589165e-02 + 2.07887392229e-02 2.15413174517e-02 2.18005508565e-02 2.15413174517e-02 2.07887392229e-02 1.96135589165e-02 + 1.81196807915e-02 1.64272283654e-02 1.46550533623e-02 1.29064893850e-02 1.12609832188e-02 9.77183223433e-03 + 8.05519399644e-03 7.16922584820e-03 6.44245195186e-03 5.86418256271e-03 5.42174879265e-03 5.10253249618e-03 + 4.89581524939e-03 4.79423577304e-03 4.79423577304e-03 4.89581524939e-03 5.10253249618e-03 5.42174879265e-03 + 5.86418256271e-03 6.44245195186e-03 7.16922584820e-03 8.05519399644e-03 9.10613117226e-03 1.03186231402e-02 + 1.16751572683e-02 1.31397287366e-02 1.46550533623e-02 1.61427916872e-02 1.75083321070e-02 1.86504890434e-02 + 1.94746684497e-02 1.99070659239e-02 1.99070659239e-02 1.94746684497e-02 1.86504890434e-02 1.75083321070e-02 + 1.61427916872e-02 1.46550533623e-02 1.31397287366e-02 1.16751572683e-02 1.03186231402e-02 9.10613117226e-03 + 8.05519399644e-03 7.35981258047e-03 6.79567554150e-03 6.35335851926e-03 6.02253909249e-03 5.79365065764e-03 + 5.65928321674e-03 5.61497680711e-03 5.65928321674e-03 5.79365065764e-03 6.02253909249e-03 6.35335851926e-03 + 6.79567554150e-03 7.35981258047e-03 8.05519399644e-03 8.88822832040e-03 9.85925299562e-03 1.09586567104e-02 + 1.21629507848e-02 1.34318126710e-02 1.47072813037e-02 1.59162612755e-02 1.69767793036e-02 1.78072941675e-02 + 1.83376793613e-02 1.85201445811e-02 1.83376793613e-02 1.78072941675e-02 1.69767793036e-02 1.59162612755e-02 + 1.47072813037e-02 1.34318126710e-02 1.21629507848e-02 1.09586567104e-02 9.85925299562e-03 8.88822832040e-03 + 8.46823559623e-03 7.94279014126e-03 7.52314503521e-03 7.20097316500e-03 6.96786738821e-03 6.81664387654e-03 + 6.74228118806e-03 6.74228118806e-03 6.81664387654e-03 6.96786738821e-03 7.20097316500e-03 7.52314503521e-03 + 7.94279014126e-03 8.46823559623e-03 9.10613117226e-03 9.85925299562e-03 1.07235056315e-02 1.16845233837e-02 + 1.27148275869e-02 1.37726366090e-02 1.48031251671e-02 1.57423428102e-02 1.65234811342e-02 1.70848695603e-02 + 1.73786828448e-02 1.73786828448e-02 1.70848695603e-02 1.65234811342e-02 1.57423428102e-02 1.48031251671e-02 + 1.37726366090e-02 1.27148275869e-02 1.16845233837e-02 1.07235056315e-02 9.85925299562e-03 9.10613117226e-03 + 9.31810768724e-03 8.95261635749e-03 8.66817035987e-03 8.45686847188e-03 8.31144312544e-03 8.22635918544e-03 + 8.19834740781e-03 8.22635918544e-03 8.31144312544e-03 8.45686847188e-03 8.66817035987e-03 8.95261635749e-03 + 9.31810768724e-03 9.77183223433e-03 1.03186231402e-02 1.09586567104e-02 1.16845233837e-02 1.24785638223e-02 + 1.33116675302e-02 1.41440793855e-02 1.49279448733e-02 1.56112881223e-02 1.61434902729e-02 1.64818809732e-02 + 1.65980023724e-02 1.64818809732e-02 1.61434902729e-02 1.56112881223e-02 1.49279448733e-02 1.41440793855e-02 + 1.33116675302e-02 1.24785638223e-02 1.16845233837e-02 1.09586567104e-02 1.03186231402e-02 9.77183223433e-03 + 1.06524671204e-02 1.04460621935e-02 1.02937156151e-02 1.01870819285e-02 1.01194532806e-02 1.00865795572e-02 + 1.00865795572e-02 1.01194532806e-02 1.01870819285e-02 1.02937156151e-02 1.04460621935e-02 1.06524671204e-02 + 1.09215936737e-02 1.12609832188e-02 1.16751572683e-02 1.21629507848e-02 1.27148275869e-02 1.33116675302e-02 + 1.39256808178e-02 1.45226393383e-02 1.50645020089e-02 1.55127511572e-02 1.58329883187e-02 1.59997599900e-02 + 1.59997599900e-02 1.58329883187e-02 1.55127511572e-02 1.50645020089e-02 1.45226393383e-02 1.39256808178e-02 + 1.33116675302e-02 1.27148275869e-02 1.21629507848e-02 1.16751572683e-02 1.12609832188e-02 1.09215936737e-02 + 1.25396406703e-02 1.24976141314e-02 1.24770996440e-02 1.24686371753e-02 1.24657333634e-02 1.24650738064e-02 + 1.24657333634e-02 1.24686371753e-02 1.24770996440e-02 1.24976141314e-02 1.25396406703e-02 1.26143883181e-02 + 1.27333396536e-02 1.29064893850e-02 1.31397287366e-02 1.34318126710e-02 1.37726366090e-02 1.41440793855e-02 + 1.45226393383e-02 1.48820928374e-02 1.51956958667e-02 1.54388806266e-02 1.55924938344e-02 1.56449525655e-02 + 1.55924938344e-02 1.54388806266e-02 1.51956958667e-02 1.48820928374e-02 1.45226393383e-02 1.41440793855e-02 + 1.37726366090e-02 1.34318126710e-02 1.31397287366e-02 1.29064893850e-02 1.27333396536e-02 1.26143883181e-02 + 1.50645020089e-02 1.51956958667e-02 1.53065353883e-02 1.53857855201e-02 1.54267827082e-02 1.54267827082e-02 + 1.53857855201e-02 1.53065353883e-02 1.51956958667e-02 1.50645020089e-02 1.49279448733e-02 1.48031251671e-02 + 1.47072813037e-02 1.46550533623e-02 1.46550533623e-02 1.47072813037e-02 1.48031251671e-02 1.49279448733e-02 + 1.50645020089e-02 1.51956958667e-02 1.53065353883e-02 1.53857855201e-02 1.54267827082e-02 1.54267827082e-02 + 1.53857855201e-02 1.53065353883e-02 1.51956958667e-02 1.50645020089e-02 1.49279448733e-02 1.48031251671e-02 + 1.47072813037e-02 1.46550533623e-02 1.46550533623e-02 1.47072813037e-02 1.48031251671e-02 1.49279448733e-02 + 1.83246021902e-02 1.86367379277e-02 1.88720574247e-02 1.90175139009e-02 1.90666010177e-02 1.90175139009e-02 + 1.88720574247e-02 1.86367379277e-02 1.83246021902e-02 1.79555609317e-02 1.75547637226e-02 1.71497889118e-02 + 1.67669692380e-02 1.64272283654e-02 1.61427916872e-02 1.59162612755e-02 1.57423428102e-02 1.56112881223e-02 + 1.55127511572e-02 1.54388806266e-02 1.53857855201e-02 1.53530693596e-02 1.53419303249e-02 1.53530693596e-02 + 1.53857855201e-02 1.54388806266e-02 1.55127511572e-02 1.56112881223e-02 1.57423428102e-02 1.59162612755e-02 + 1.61427916872e-02 1.64272283654e-02 1.67669692380e-02 1.71497889118e-02 1.75547637226e-02 1.79555609317e-02 + 2.24136125305e-02 2.29016184223e-02 2.32368358951e-02 2.34067395586e-02 2.34067395586e-02 2.32368358951e-02 + 2.29016184223e-02 2.24136125305e-02 2.17964249596e-02 2.10847229658e-02 2.03206914317e-02 1.95479913088e-02 + 1.88049742175e-02 1.81196807915e-02 1.75083321070e-02 1.69767793036e-02 1.65234811342e-02 1.61434902729e-02 + 1.58329883187e-02 1.55924938344e-02 1.54267827082e-02 1.53419303249e-02 1.53419303249e-02 1.54267827082e-02 + 1.55924938344e-02 1.58329883187e-02 1.61434902729e-02 1.65234811342e-02 1.69767793036e-02 1.75083321070e-02 + 1.81196807915e-02 1.88049742175e-02 1.95479913088e-02 2.03206914317e-02 2.10847229658e-02 2.17964249596e-02 + 2.73794467347e-02 2.80098127199e-02 2.83925891295e-02 2.85205562719e-02 2.83925891295e-02 2.80098127199e-02 + 2.73794467347e-02 2.65227612839e-02 2.54803066383e-02 2.43103322252e-02 2.30804654510e-02 2.18557815330e-02 + 2.06884779452e-02 1.96135589165e-02 1.86504890434e-02 1.78072941675e-02 1.70848695603e-02 1.64818809732e-02 + 1.59997599900e-02 1.56449525655e-02 1.54267827082e-02 1.53530693596e-02 1.54267827082e-02 1.56449525655e-02 + 1.59997599900e-02 1.64818809732e-02 1.70848695603e-02 1.78072941675e-02 1.86504890434e-02 1.96135589165e-02 + 2.06884779452e-02 2.18557815330e-02 2.30804654510e-02 2.43103322252e-02 2.54803066383e-02 2.65227612839e-02 + 3.31691643222e-02 3.38709874542e-02 3.42208946471e-02 3.42208946471e-02 3.38709874542e-02 3.31691643222e-02 + 3.21243272248e-02 3.07715106065e-02 2.91781605866e-02 2.74372089612e-02 2.56499234494e-02 2.39063871143e-02 + 2.22726314479e-02 2.07887392229e-02 1.94746684497e-02 1.83376793613e-02 1.73786828448e-02 1.65980023724e-02 + 1.59997599900e-02 1.55924938344e-02 1.53857855201e-02 1.53857855201e-02 1.55924938344e-02 1.59997599900e-02 + 1.65980023724e-02 1.73786828448e-02 1.83376793613e-02 1.94746684497e-02 2.07887392229e-02 2.22726314479e-02 + 2.39063871143e-02 2.56499234494e-02 2.74372089612e-02 2.91781605866e-02 3.07715106065e-02 3.21243272248e-02 + 3.95849180057e-02 4.02540981079e-02 4.04742233092e-02 4.02540981079e-02 3.95849180057e-02 3.84534160516e-02 + 3.68707660171e-02 3.48956024912e-02 3.26363277502e-02 3.02323588099e-02 2.78244998346e-02 2.55281844546e-02 + 2.34202555044e-02 2.15413174517e-02 1.99070659239e-02 1.85201445811e-02 1.73786828448e-02 1.64818809732e-02 + 1.58329883187e-02 1.54388806266e-02 1.53065353883e-02 1.54388806266e-02 1.58329883187e-02 1.64818809732e-02 + 1.73786828448e-02 1.85201445811e-02 1.99070659239e-02 2.15413174517e-02 2.34202555044e-02 2.55281844546e-02 + 2.78244998346e-02 3.02323588099e-02 3.26363277502e-02 3.48956024912e-02 3.68707660171e-02 3.84534160516e-02 + 4.62623331670e-02 4.67810667612e-02 4.67810667612e-02 4.62623331670e-02 4.51877782102e-02 4.35234290368e-02 + 4.12888114430e-02 3.85829474965e-02 3.55725175924e-02 3.24534608631e-02 2.94074293899e-02 2.65706573512e-02 + 2.40237109616e-02 2.18005508565e-02 1.99070659239e-02 1.83376793613e-02 1.70848695603e-02 1.61434902729e-02 + 1.55127511572e-02 1.51956958667e-02 1.51956958667e-02 1.55127511572e-02 1.61434902729e-02 1.70848695603e-02 + 1.83376793613e-02 1.99070659239e-02 2.18005508565e-02 2.40237109616e-02 2.65706573512e-02 2.94074293899e-02 + 3.24534608631e-02 3.55725175924e-02 3.85829474965e-02 4.12888114430e-02 4.35234290368e-02 4.51877782102e-02 + 5.26931433274e-02 5.29676178633e-02 5.26931433274e-02 5.18281863755e-02 5.02828320119e-02 4.79989400749e-02 + 4.50208900473e-02 4.15120643887e-02 3.77147526395e-02 3.38859304601e-02 3.02423286704e-02 2.69304328597e-02 + 2.40237109616e-02 2.15413174517e-02 1.94746684497e-02 1.78072941675e-02 1.65234811342e-02 1.56112881223e-02 + 1.50645020089e-02 1.48820928374e-02 1.50645020089e-02 1.56112881223e-02 1.65234811342e-02 1.78072941675e-02 + 1.94746684497e-02 2.15413174517e-02 2.40237109616e-02 2.69304328597e-02 3.02423286704e-02 3.38859304601e-02 + 3.77147526395e-02 4.15120643887e-02 4.50208900473e-02 4.79989400749e-02 5.02828320119e-02 5.18281863755e-02 + 5.83399236929e-02 5.83399236929e-02 5.77843769256e-02 5.65511919643e-02 5.44829894560e-02 5.15101646150e-02 + 4.77311231410e-02 4.34003076052e-02 3.88462459817e-02 3.43811654173e-02 3.02423286704e-02 2.65706573512e-02 + 2.34202555044e-02 2.07887392229e-02 1.86504890434e-02 1.69767793036e-02 1.57423428102e-02 1.49279448733e-02 + 1.45226393383e-02 1.45226393383e-02 1.49279448733e-02 1.57423428102e-02 1.69767793036e-02 1.86504890434e-02 + 2.07887392229e-02 2.34202555044e-02 2.65706573512e-02 3.02423286704e-02 3.43811654173e-02 3.88462459817e-02 + 4.34003076052e-02 4.77311231410e-02 5.15101646150e-02 5.44829894560e-02 5.65511919643e-02 5.77843769256e-02 + 6.28259810566e-02 6.25800698666e-02 6.17513938278e-02 6.01184381094e-02 5.74676014035e-02 5.37510492057e-02 + 4.91578982971e-02 4.40529168852e-02 3.88462459817e-02 3.38859304601e-02 2.94074293899e-02 2.55281844546e-02 + 2.22726314479e-02 1.96135589165e-02 1.75083321070e-02 1.59162612755e-02 1.48031251671e-02 1.41440793855e-02 + 1.39256808178e-02 1.41440793855e-02 1.48031251671e-02 1.59162612755e-02 1.75083321070e-02 1.96135589165e-02 + 2.22726314479e-02 2.55281844546e-02 2.94074293899e-02 3.38859304601e-02 3.88462459817e-02 4.40529168852e-02 + 4.91578982971e-02 5.37510492057e-02 5.74676014035e-02 6.01184381094e-02 6.17513938278e-02 6.25800698666e-02 + 6.60504635380e-02 6.55787911247e-02 6.44394828494e-02 6.23288110708e-02 5.90154969276e-02 5.45211951056e-02 + 4.91578982971e-02 4.34003076052e-02 3.77147526395e-02 3.24534608631e-02 2.78244998346e-02 2.39063871143e-02 + 2.06884779452e-02 1.81196807915e-02 1.61427916872e-02 1.47072813037e-02 1.37726366090e-02 1.33116675302e-02 + 1.33116675302e-02 1.37726366090e-02 1.47072813037e-02 1.61427916872e-02 1.81196807915e-02 2.06884779452e-02 + 2.39063871143e-02 2.78244998346e-02 3.24534608631e-02 3.77147526395e-02 4.34003076052e-02 4.91578982971e-02 + 5.45211951056e-02 5.90154969276e-02 6.23288110708e-02 6.44394828494e-02 6.55787911247e-02 6.60504635380e-02 + 6.81077724909e-02 6.73541476702e-02 6.57918464265e-02 6.30764730892e-02 5.90154969276e-02 5.37510492057e-02 + 4.77311231410e-02 4.15120643887e-02 3.55725175924e-02 3.02323588099e-02 2.56499234494e-02 2.18557815330e-02 + 1.88049742175e-02 1.64272283654e-02 1.46550533623e-02 1.34318126710e-02 1.27148275869e-02 1.24785638223e-02 + 1.27148275869e-02 1.34318126710e-02 1.46550533623e-02 1.64272283654e-02 1.88049742175e-02 2.18557815330e-02 + 2.56499234494e-02 3.02323588099e-02 3.55725175924e-02 4.15120643887e-02 4.77311231410e-02 5.37510492057e-02 + 5.90154969276e-02 6.30764730892e-02 6.57918464265e-02 6.73541476702e-02 6.81077724909e-02 6.83266751007e-02 + 6.91119067669e-02 6.79419572879e-02 6.57918464265e-02 6.23288110708e-02 5.74676014035e-02 5.15101646150e-02 + 4.50208900473e-02 3.85829474965e-02 3.26363277502e-02 2.74372089612e-02 2.30804654510e-02 1.95479913088e-02 + 1.67669692380e-02 1.46550533623e-02 1.31397287366e-02 1.21629507848e-02 1.16845233837e-02 1.16845233837e-02 + 1.21629507848e-02 1.31397287366e-02 1.46550533623e-02 1.67669692380e-02 1.95479913088e-02 2.30804654510e-02 + 2.74372089612e-02 3.26363277502e-02 3.85829474965e-02 4.50208900473e-02 5.15101646150e-02 5.74676014035e-02 + 6.23288110708e-02 6.57918464265e-02 6.79419572879e-02 6.91119067669e-02 6.96179820017e-02 6.96179820017e-02 + 6.91119067669e-02 6.73541476702e-02 6.44394828494e-02 6.01184381094e-02 5.44829894560e-02 4.79989400749e-02 + 4.12888114430e-02 3.48956024912e-02 2.91781605866e-02 2.43103322252e-02 2.03206914317e-02 1.71497889118e-02 + 1.47072813037e-02 1.29064893850e-02 1.16751572683e-02 1.09586567104e-02 1.07235056315e-02 1.09586567104e-02 + 1.16751572683e-02 1.29064893850e-02 1.47072813037e-02 1.71497889118e-02 2.03206914317e-02 2.43103322252e-02 + 2.91781605866e-02 3.48956024912e-02 4.12888114430e-02 4.79989400749e-02 5.44829894560e-02 6.01184381094e-02 + 6.44394828494e-02 6.73541476702e-02 6.91119067669e-02 7.00400365127e-02 7.03323963389e-02 7.00400365127e-02 + 6.81077724909e-02 6.55787911247e-02 6.17513938278e-02 5.65511919643e-02 5.02828320119e-02 4.35234290368e-02 + 3.68707660171e-02 3.07715106065e-02 2.54803066383e-02 2.10847229658e-02 1.75547637226e-02 1.48031251671e-02 + 1.27333396536e-02 1.12609832188e-02 1.03186231402e-02 9.85925299562e-03 9.85925299562e-03 1.03186231402e-02 + 1.12609832188e-02 1.27333396536e-02 1.48031251671e-02 1.75547637226e-02 2.10847229658e-02 2.54803066383e-02 + 3.07715106065e-02 3.68707660171e-02 4.35234290368e-02 5.02828320119e-02 5.65511919643e-02 6.17513938278e-02 + 6.55787911247e-02 6.81077724909e-02 6.96179820017e-02 7.03323963389e-02 7.03323963389e-02 6.96179820017e-02 + 6.60504635380e-02 6.25800698666e-02 5.77843769256e-02 5.18281863755e-02 4.51877782102e-02 3.84534160516e-02 + 3.21243272248e-02 2.65227612839e-02 2.17964249596e-02 1.79555609317e-02 1.49279448733e-02 1.26143883181e-02 + 1.09215936737e-02 9.77183223433e-03 9.10613117226e-03 8.88822832040e-03 9.10613117226e-03 9.77183223433e-03 + 1.09215936737e-02 1.26143883181e-02 1.49279448733e-02 1.79555609317e-02 2.17964249596e-02 2.65227612839e-02 + 3.21243272248e-02 3.84534160516e-02 4.51877782102e-02 5.18281863755e-02 5.77843769256e-02 6.25800698666e-02 + 6.60504635380e-02 6.83266751007e-02 6.96179820017e-02 7.00400365127e-02 6.96179820017e-02 6.83266751007e-02 + 6.21334821617e-02 5.53499973529e-02 4.80677366203e-02 4.07924714489e-02 3.39533984936e-02 2.78466298707e-02 + 2.26267522861e-02 1.83246021902e-02 1.48820928374e-02 1.21980827392e-02 1.01663421573e-02 8.69246386814e-03 + 7.69793885145e-03 7.12420828954e-03 6.93665223838e-03 7.12420828954e-03 7.69793885145e-03 8.69246386814e-03 + 1.01663421573e-02 1.21980827392e-02 1.48820928374e-02 1.83246021902e-02 2.26267522861e-02 2.78466298707e-02 + 3.39533984936e-02 4.07924714489e-02 4.80677366203e-02 5.53499973529e-02 6.21334821617e-02 6.79320857310e-02 + 7.23556493700e-02 7.51264696898e-02 7.60705845667e-02 7.51264696898e-02 7.23556493700e-02 6.79320857310e-02 + 5.53499973529e-02 4.84815544672e-02 4.14579289512e-02 3.47182328687e-02 2.85879356046e-02 2.32603028496e-02 + 1.88053010662e-02 1.51956958667e-02 1.23472319177e-02 1.01587603229e-02 8.53524112695e-03 7.39443450458e-03 + 6.67049181789e-03 6.31909087196e-03 6.31909087196e-03 6.67049181789e-03 7.39443450458e-03 8.53524112695e-03 + 1.01587603229e-02 1.23472319177e-02 1.51956958667e-02 1.88053010662e-02 2.32603028496e-02 2.85879356046e-02 + 3.47182328687e-02 4.14579289512e-02 4.84815544672e-02 5.53499973529e-02 6.15702941626e-02 6.66786802062e-02 + 7.03019494995e-02 7.21810172465e-02 7.21810172465e-02 7.03019494995e-02 6.66786802062e-02 6.15702941626e-02 + 4.80677366203e-02 4.14579289512e-02 3.49773595797e-02 2.89691250092e-02 2.36566460915e-02 1.91448778653e-02 + 1.54388806266e-02 1.24770996440e-02 1.01697655067e-02 8.42580807925e-03 7.16308508658e-03 6.31209415558e-03 + 5.82127807001e-03 5.66079261571e-03 5.82127807001e-03 6.31209415558e-03 7.16308508658e-03 8.42580807925e-03 + 1.01697655067e-02 1.24770996440e-02 1.54388806266e-02 1.91448778653e-02 2.36566460915e-02 2.89691250092e-02 + 3.49773595797e-02 4.14579289512e-02 4.80677366203e-02 5.43692149489e-02 5.98878714669e-02 6.41840706496e-02 + 6.69101294891e-02 6.78442738531e-02 6.69101294891e-02 6.41840706496e-02 5.98878714669e-02 5.43692149489e-02 + 4.07924714489e-02 3.47182328687e-02 2.89691250092e-02 2.37914166767e-02 1.93203741197e-02 1.55924938344e-02 + 1.25723726562e-02 1.01870819285e-02 8.35413904759e-03 6.99504538611e-03 6.04016501968e-03 5.43377044817e-03 + 5.13913617973e-03 5.13913617973e-03 5.43377044817e-03 6.04016501968e-03 6.99504538611e-03 8.35413904759e-03 + 1.01870819285e-02 1.25723726562e-02 1.55924938344e-02 1.93203741197e-02 2.37914166767e-02 2.89691250092e-02 + 3.47182328687e-02 4.07924714489e-02 4.68401774785e-02 5.24339557043e-02 5.71251588417e-02 6.05090723285e-02 + 6.22821499923e-02 6.22821499923e-02 6.05090723285e-02 5.71251588417e-02 5.24339557043e-02 4.68401774785e-02 + 3.39533984936e-02 2.85879356046e-02 2.36566460915e-02 1.93203741197e-02 1.56449525655e-02 1.26225341258e-02 + 1.02011860999e-02 8.31144312544e-03 6.88181758770e-03 5.84558656512e-03 5.14599535674e-03 4.74176747355e-03 + 4.60945880297e-03 4.74176747355e-03 5.14599535674e-03 5.84558656512e-03 6.88181758770e-03 8.31144312544e-03 + 1.02011860999e-02 1.26225341258e-02 1.56449525655e-02 1.93203741197e-02 2.36566460915e-02 2.85879356046e-02 + 3.39533984936e-02 3.94908104948e-02 4.48486167771e-02 4.96193341715e-02 5.33923081840e-02 5.58153453540e-02 + 5.66509609539e-02 5.58153453540e-02 5.33923081840e-02 4.96193341715e-02 4.48486167771e-02 3.94908104948e-02 + 2.78466298707e-02 2.32603028496e-02 1.91448778653e-02 1.55924938344e-02 1.26225341258e-02 1.02064774226e-02 + 8.29158854156e-03 6.81664387654e-03 5.72047031573e-03 4.94806264494e-03 4.45623663297e-03 4.21692866215e-03 + 4.21692866215e-03 4.45623663297e-03 4.94806264494e-03 5.72047031573e-03 6.81664387654e-03 8.29158854156e-03 + 1.02064774226e-02 1.26225341258e-02 1.55924938344e-02 1.91448778653e-02 2.32603028496e-02 2.78466298707e-02 + 3.27229087590e-02 3.76190713504e-02 4.21941579647e-02 4.60731359718e-02 4.88987422193e-02 5.03893328752e-02 + 5.03893328752e-02 4.88987422193e-02 4.60731359718e-02 4.21941579647e-02 3.76190713504e-02 3.27229087590e-02 + 2.26267522861e-02 1.88053010662e-02 1.54388806266e-02 1.25723726562e-02 1.02011860999e-02 8.29158854156e-03 + 6.79537428806e-03 5.65928321674e-03 4.83232712929e-03 4.27192322596e-03 3.94752033538e-03 3.84131375804e-03 + 3.94752033538e-03 4.27192322596e-03 4.83232712929e-03 5.65928321674e-03 6.79537428806e-03 8.29158854156e-03 + 1.02011860999e-02 1.25723726562e-02 1.54388806266e-02 1.88053010662e-02 2.26267522861e-02 2.67889182249e-02 + 3.10978190541e-02 3.52857897121e-02 3.90350130516e-02 4.20165784801e-02 4.39402098517e-02 4.46053414397e-02 + 4.39402098517e-02 4.20165784801e-02 3.90350130516e-02 3.52857897121e-02 3.10978190541e-02 2.67889182249e-02 + 1.83246021902e-02 1.51956958667e-02 1.24770996440e-02 1.01870819285e-02 8.31144312544e-03 6.81664387654e-03 + 5.65928321674e-03 4.79423577304e-03 4.18152878343e-03 3.79030883078e-03 3.59990872378e-03 3.59990872378e-03 + 3.79030883078e-03 4.18152878343e-03 4.79423577304e-03 5.65928321674e-03 6.81664387654e-03 8.31144312544e-03 + 1.01870819285e-02 1.24770996440e-02 1.51956958667e-02 1.83246021902e-02 2.17964249596e-02 2.54803066383e-02 + 2.91781605866e-02 3.26363277502e-02 3.55725175924e-02 3.77147526395e-02 3.88462459817e-02 3.88462459817e-02 + 3.77147526395e-02 3.55725175924e-02 3.26363277502e-02 2.91781605866e-02 2.54803066383e-02 2.17964249596e-02 + 1.48820928374e-02 1.23472319177e-02 1.01697655067e-02 8.35413904759e-03 6.88181758770e-03 5.72047031573e-03 + 4.83232712929e-03 4.18152878343e-03 3.73863341678e-03 3.48198055848e-03 3.39799742507e-03 3.48198055848e-03 + 3.73863341678e-03 4.18152878343e-03 4.83232712929e-03 5.72047031573e-03 6.88181758770e-03 8.35413904759e-03 + 1.01697655067e-02 1.23472319177e-02 1.48820928374e-02 1.77355963866e-02 2.08223402545e-02 2.40022165572e-02 + 2.70827915169e-02 2.98349904445e-02 3.20210145144e-02 3.34304675050e-02 3.39176800802e-02 3.34304675050e-02 + 3.20210145144e-02 2.98349904445e-02 2.70827915169e-02 2.40022165572e-02 2.08223402545e-02 1.77355963866e-02 + 1.21980827392e-02 1.01587603229e-02 8.42580807925e-03 6.99504538611e-03 5.84558656512e-03 4.94806264494e-03 + 4.27192322596e-03 3.79030883078e-03 3.48198055848e-03 3.33184951460e-03 3.33184951460e-03 3.48198055848e-03 + 3.79030883078e-03 4.27192322596e-03 4.94806264494e-03 5.84558656512e-03 6.99504538611e-03 8.42580807925e-03 + 1.01587603229e-02 1.21980827392e-02 1.45226393383e-02 1.70770073925e-02 1.97639178277e-02 2.24420850452e-02 + 2.49333108373e-02 2.70402901784e-02 2.85734174953e-02 2.93819034216e-02 2.93819034216e-02 2.85734174953e-02 + 2.70402901784e-02 2.49333108373e-02 2.24420850452e-02 1.97639178277e-02 1.70770073925e-02 1.45226393383e-02 + 1.01663421573e-02 8.53524112695e-03 7.16308508658e-03 6.04016501968e-03 5.14599535674e-03 4.45623663297e-03 + 3.94752033538e-03 3.59990872378e-03 3.39799742507e-03 3.33184951460e-03 3.39799742507e-03 3.59990872378e-03 + 3.94752033538e-03 4.45623663297e-03 5.14599535674e-03 6.04016501968e-03 7.16308508658e-03 8.53524112695e-03 + 1.01663421573e-02 1.20475550421e-02 1.41440793855e-02 1.63890080671e-02 1.86800926235e-02 2.08820531014e-02 + 2.28368095394e-02 2.43819637041e-02 2.53749373622e-02 2.57176061925e-02 2.53749373622e-02 2.43819637041e-02 + 2.28368095394e-02 2.08820531014e-02 1.86800926235e-02 1.63890080671e-02 1.41440793855e-02 1.20475550421e-02 + 8.69246386814e-03 7.39443450458e-03 6.31209415558e-03 5.43377044817e-03 4.74176747355e-03 4.21692866215e-03 + 3.84131375804e-03 3.59990872378e-03 3.48198055848e-03 3.48198055848e-03 3.59990872378e-03 3.84131375804e-03 + 4.21692866215e-03 4.74176747355e-03 5.43377044817e-03 6.31209415558e-03 7.39443450458e-03 8.69246386814e-03 + 1.02054916185e-02 1.19137265332e-02 1.37726366090e-02 1.57094271493e-02 1.76229803621e-02 1.93892705934e-02 + 2.08735527936e-02 2.19482820950e-02 2.25132701769e-02 2.25132701769e-02 2.19482820950e-02 2.08735527936e-02 + 1.93892705934e-02 1.76229803621e-02 1.57094271493e-02 1.37726366090e-02 1.19137265332e-02 1.02054916185e-02 + 7.69793885145e-03 6.67049181789e-03 5.82127807001e-03 5.13913617973e-03 4.60945880297e-03 4.21692866215e-03 + 3.94752033538e-03 3.79030883078e-03 3.73863341678e-03 3.79030883078e-03 3.94752033538e-03 4.21692866215e-03 + 4.60945880297e-03 5.13913617973e-03 5.82127807001e-03 6.67049181789e-03 7.69793885145e-03 8.90705726329e-03 + 1.02881382638e-02 1.18131307076e-02 1.34318126710e-02 1.50702461704e-02 1.66330383744e-02 1.80109897723e-02 + 1.90940368490e-02 1.97871783123e-02 2.00258575799e-02 1.97871783123e-02 1.90940368490e-02 1.80109897723e-02 + 1.66330383744e-02 1.50702461704e-02 1.34318126710e-02 1.18131307076e-02 1.02881382638e-02 8.90705726329e-03 + 7.12420828954e-03 6.31909087196e-03 5.66079261571e-03 5.13913617973e-03 4.74176747355e-03 4.45623663297e-03 + 4.27192322596e-03 4.18152878343e-03 4.18152878343e-03 4.27192322596e-03 4.45623663297e-03 4.74176747355e-03 + 5.13913617973e-03 5.66079261571e-03 6.31909087196e-03 7.12420828954e-03 8.08133005705e-03 9.18679124184e-03 + 1.04238516982e-02 1.17590249893e-02 1.31397287366e-02 1.44944499034e-02 1.57370100687e-02 1.67754563001e-02 + 1.75241772421e-02 1.79167348748e-02 1.79167348748e-02 1.75241772421e-02 1.67754563001e-02 1.57370100687e-02 + 1.44944499034e-02 1.31397287366e-02 1.17590249893e-02 1.04238516982e-02 9.18679124184e-03 8.08133005705e-03 + 6.93665223838e-03 6.31909087196e-03 5.82127807001e-03 5.43377044817e-03 5.14599535674e-03 4.94806264494e-03 + 4.83232712929e-03 4.79423577304e-03 4.83232712929e-03 4.94806264494e-03 5.14599535674e-03 5.43377044817e-03 + 5.82127807001e-03 6.31909087196e-03 6.93665223838e-03 7.68014935330e-03 8.54973346172e-03 9.53627070961e-03 + 1.06181928008e-02 1.17590249893e-02 1.29064893850e-02 1.39945083398e-02 1.49488960464e-02 1.56960478729e-02 + 1.61729889157e-02 1.63370205752e-02 1.61729889157e-02 1.56960478729e-02 1.49488960464e-02 1.39945083398e-02 + 1.29064893850e-02 1.17590249893e-02 1.06181928008e-02 9.53627070961e-03 8.54973346172e-03 7.68014935330e-03 + 7.12420828954e-03 6.67049181789e-03 6.31209415558e-03 6.04016501968e-03 5.84558656512e-03 5.72047031573e-03 + 5.65928321674e-03 5.65928321674e-03 5.72047031573e-03 5.84558656512e-03 6.04016501968e-03 6.31209415558e-03 + 6.67049181789e-03 7.12420828954e-03 7.68014935330e-03 8.34122341388e-03 9.10381322670e-03 9.95507847617e-03 + 1.08706042529e-02 1.18131307076e-02 1.27333396536e-02 1.35733603577e-02 1.42727054437e-02 1.47756456624e-02 + 1.50389831834e-02 1.50389831834e-02 1.47756456624e-02 1.42727054437e-02 1.35733603577e-02 1.27333396536e-02 + 1.18131307076e-02 1.08706042529e-02 9.95507847617e-03 9.10381322670e-03 8.34122341388e-03 7.68014935330e-03 + 7.69793885145e-03 7.39443450458e-03 7.16308508658e-03 6.99504538611e-03 6.88181758770e-03 6.81664387654e-03 + 6.79537428806e-03 6.81664387654e-03 6.88181758770e-03 6.99504538611e-03 7.16308508658e-03 7.39443450458e-03 + 7.69793885145e-03 8.08133005705e-03 8.54973346172e-03 9.10381322670e-03 9.73748464183e-03 1.04356792319e-02 + 1.11729588764e-02 1.19137265332e-02 1.26143883181e-02 1.32272933414e-02 1.37059602390e-02 1.40109856905e-02 + 1.41157952825e-02 1.40109856905e-02 1.37059602390e-02 1.32272933414e-02 1.26143883181e-02 1.19137265332e-02 + 1.11729588764e-02 1.04356792319e-02 9.73748464183e-03 9.10381322670e-03 8.54973346172e-03 8.08133005705e-03 + 8.69246386814e-03 8.53524112695e-03 8.42580807925e-03 8.35413904759e-03 8.31144312544e-03 8.29158854156e-03 + 8.29158854156e-03 8.31144312544e-03 8.35413904759e-03 8.42580807925e-03 8.53524112695e-03 8.69246386814e-03 + 8.90705726329e-03 9.18679124184e-03 9.53627070961e-03 9.95507847617e-03 1.04356792319e-02 1.09620544703e-02 + 1.15097880648e-02 1.20475550421e-02 1.25396406703e-02 1.29494247541e-02 1.32437842255e-02 1.33976732300e-02 + 1.33976732300e-02 1.32437842255e-02 1.29494247541e-02 1.25396406703e-02 1.20475550421e-02 1.15097880648e-02 + 1.09620544703e-02 1.04356792319e-02 9.95507847617e-03 9.53627070961e-03 9.18679124184e-03 8.90705726329e-03 + 1.01663421573e-02 1.01587603229e-02 1.01697655067e-02 1.01870819285e-02 1.02011860999e-02 1.02064774226e-02 + 1.02011860999e-02 1.01870819285e-02 1.01697655067e-02 1.01587603229e-02 1.01663421573e-02 1.02054916185e-02 + 1.02881382638e-02 1.04238516982e-02 1.06181928008e-02 1.08706042529e-02 1.11729588764e-02 1.15097880648e-02 + 1.18598583649e-02 1.21980827392e-02 1.24976141314e-02 1.27327884289e-02 1.28827341282e-02 1.29342051284e-02 + 1.28827341282e-02 1.27327884289e-02 1.24976141314e-02 1.21980827392e-02 1.18598583649e-02 1.15097880648e-02 + 1.11729588764e-02 1.08706042529e-02 1.06181928008e-02 1.04238516982e-02 1.02881382638e-02 1.02054916185e-02 + 1.21980827392e-02 1.23472319177e-02 1.24770996440e-02 1.25723726562e-02 1.26225341258e-02 1.26225341258e-02 + 1.25723726562e-02 1.24770996440e-02 1.23472319177e-02 1.21980827392e-02 1.20475550421e-02 1.19137265332e-02 + 1.18131307076e-02 1.17590249893e-02 1.17590249893e-02 1.18131307076e-02 1.19137265332e-02 1.20475550421e-02 + 1.21980827392e-02 1.23472319177e-02 1.24770996440e-02 1.25723726562e-02 1.26225341258e-02 1.26225341258e-02 + 1.25723726562e-02 1.24770996440e-02 1.23472319177e-02 1.21980827392e-02 1.20475550421e-02 1.19137265332e-02 + 1.18131307076e-02 1.17590249893e-02 1.17590249893e-02 1.18131307076e-02 1.19137265332e-02 1.20475550421e-02 + 1.48820928374e-02 1.51956958667e-02 1.54388806266e-02 1.55924938344e-02 1.56449525655e-02 1.55924938344e-02 + 1.54388806266e-02 1.51956958667e-02 1.48820928374e-02 1.45226393383e-02 1.41440793855e-02 1.37726366090e-02 + 1.34318126710e-02 1.31397287366e-02 1.29064893850e-02 1.27333396536e-02 1.26143883181e-02 1.25396406703e-02 + 1.24976141314e-02 1.24770996440e-02 1.24686371753e-02 1.24657333634e-02 1.24650738064e-02 1.24657333634e-02 + 1.24686371753e-02 1.24770996440e-02 1.24976141314e-02 1.25396406703e-02 1.26143883181e-02 1.27333396536e-02 + 1.29064893850e-02 1.31397287366e-02 1.34318126710e-02 1.37726366090e-02 1.41440793855e-02 1.45226393383e-02 + 1.83246021902e-02 1.88053010662e-02 1.91448778653e-02 1.93203741197e-02 1.93203741197e-02 1.91448778653e-02 + 1.88053010662e-02 1.83246021902e-02 1.77355963866e-02 1.70770073925e-02 1.63890080671e-02 1.57094271493e-02 + 1.50702461704e-02 1.44944499034e-02 1.39945083398e-02 1.35733603577e-02 1.32272933414e-02 1.29494247541e-02 + 1.27327884289e-02 1.25723726562e-02 1.24657333634e-02 1.24123312979e-02 1.24123312979e-02 1.24657333634e-02 + 1.25723726562e-02 1.27327884289e-02 1.29494247541e-02 1.32272933414e-02 1.35733603577e-02 1.39945083398e-02 + 1.44944499034e-02 1.50702461704e-02 1.57094271493e-02 1.63890080671e-02 1.70770073925e-02 1.77355963866e-02 + 2.26267522861e-02 2.32603028496e-02 2.36566460915e-02 2.37914166767e-02 2.36566460915e-02 2.32603028496e-02 + 2.26267522861e-02 2.17964249596e-02 2.08223402545e-02 1.97639178277e-02 1.86800926235e-02 1.76229803621e-02 + 1.66330383744e-02 1.57370100687e-02 1.49488960464e-02 1.42727054437e-02 1.37059602390e-02 1.32437842255e-02 + 1.28827341282e-02 1.26225341258e-02 1.24650738064e-02 1.24123312979e-02 1.24650738064e-02 1.26225341258e-02 + 1.28827341282e-02 1.32437842255e-02 1.37059602390e-02 1.42727054437e-02 1.49488960464e-02 1.57370100687e-02 + 1.66330383744e-02 1.76229803621e-02 1.86800926235e-02 1.97639178277e-02 2.08223402545e-02 2.17964249596e-02 + 2.78466298707e-02 2.85879356046e-02 2.89691250092e-02 2.89691250092e-02 2.85879356046e-02 2.78466298707e-02 + 2.67889182249e-02 2.54803066383e-02 2.40022165572e-02 2.24420850452e-02 2.08820531014e-02 1.93892705934e-02 + 1.80109897723e-02 1.67754563001e-02 1.56960478729e-02 1.47756456624e-02 1.40109856905e-02 1.33976732300e-02 + 1.29342051284e-02 1.26225341258e-02 1.24657333634e-02 1.24657333634e-02 1.26225341258e-02 1.29342051284e-02 + 1.33976732300e-02 1.40109856905e-02 1.47756456624e-02 1.56960478729e-02 1.67754563001e-02 1.80109897723e-02 + 1.93892705934e-02 2.08820531014e-02 2.24420850452e-02 2.40022165572e-02 2.54803066383e-02 2.67889182249e-02 + 3.39533984936e-02 3.47182328687e-02 3.49773595797e-02 3.47182328687e-02 3.39533984936e-02 3.27229087590e-02 + 3.10978190541e-02 2.91781605866e-02 2.70827915169e-02 2.49333108373e-02 2.28368095394e-02 2.08735527936e-02 + 1.90940368490e-02 1.75241772421e-02 1.61729889157e-02 1.50389831834e-02 1.41157952825e-02 1.33976732300e-02 + 1.28827341282e-02 1.25723726562e-02 1.24686371753e-02 1.25723726562e-02 1.28827341282e-02 1.33976732300e-02 + 1.41157952825e-02 1.50389831834e-02 1.61729889157e-02 1.75241772421e-02 1.90940368490e-02 2.08735527936e-02 + 2.28368095394e-02 2.49333108373e-02 2.70827915169e-02 2.91781605866e-02 3.10978190541e-02 3.27229087590e-02 + 4.07924714489e-02 4.14579289512e-02 4.14579289512e-02 4.07924714489e-02 3.94908104948e-02 3.76190713504e-02 + 3.52857897121e-02 3.26363277502e-02 2.98349904445e-02 2.70402901784e-02 2.43819637041e-02 2.19482820950e-02 + 1.97871783123e-02 1.79167348748e-02 1.63370205752e-02 1.50389831834e-02 1.40109856905e-02 1.32437842255e-02 + 1.27327884289e-02 1.24770996440e-02 1.24770996440e-02 1.27327884289e-02 1.32437842255e-02 1.40109856905e-02 + 1.50389831834e-02 1.63370205752e-02 1.79167348748e-02 1.97871783123e-02 2.19482820950e-02 2.43819637041e-02 + 2.70402901784e-02 2.98349904445e-02 3.26363277502e-02 3.52857897121e-02 3.76190713504e-02 3.94908104948e-02 + 4.80677366203e-02 4.84815544672e-02 4.80677366203e-02 4.68401774785e-02 4.48486167771e-02 4.21941579647e-02 + 3.90350130516e-02 3.55725175924e-02 3.20210145144e-02 2.85734174953e-02 2.53749373622e-02 2.25132701769e-02 + 2.00258575799e-02 1.79167348748e-02 1.61729889157e-02 1.47756456624e-02 1.37059602390e-02 1.29494247541e-02 + 1.24976141314e-02 1.23472319177e-02 1.24976141314e-02 1.29494247541e-02 1.37059602390e-02 1.47756456624e-02 + 1.61729889157e-02 1.79167348748e-02 2.00258575799e-02 2.25132701769e-02 2.53749373622e-02 2.85734174953e-02 + 3.20210145144e-02 3.55725175924e-02 3.90350130516e-02 4.21941579647e-02 4.48486167771e-02 4.68401774785e-02 + 5.53499973529e-02 5.53499973529e-02 5.43692149489e-02 5.24339557043e-02 4.96193341715e-02 4.60731359718e-02 + 4.20165784801e-02 3.77147526395e-02 3.34304675050e-02 2.93819034216e-02 2.57176061925e-02 2.25132701769e-02 + 1.97871783123e-02 1.75241772421e-02 1.56960478729e-02 1.42727054437e-02 1.32272933414e-02 1.25396406703e-02 + 1.21980827392e-02 1.21980827392e-02 1.25396406703e-02 1.32272933414e-02 1.42727054437e-02 1.56960478729e-02 + 1.75241772421e-02 1.97871783123e-02 2.25132701769e-02 2.57176061925e-02 2.93819034216e-02 3.34304675050e-02 + 3.77147526395e-02 4.20165784801e-02 4.60731359718e-02 4.96193341715e-02 5.24339557043e-02 5.43692149489e-02 + 6.21334821617e-02 6.15702941626e-02 5.98878714669e-02 5.71251588417e-02 5.33923081840e-02 4.88987422193e-02 + 4.39402098517e-02 3.88462459817e-02 3.39176800802e-02 2.93819034216e-02 2.53749373622e-02 2.19482820950e-02 + 1.90940368490e-02 1.67754563001e-02 1.49488960464e-02 1.35733603577e-02 1.26143883181e-02 1.20475550421e-02 + 1.18598583649e-02 1.20475550421e-02 1.26143883181e-02 1.35733603577e-02 1.49488960464e-02 1.67754563001e-02 + 1.90940368490e-02 2.19482820950e-02 2.53749373622e-02 2.93819034216e-02 3.39176800802e-02 3.88462459817e-02 + 4.39402098517e-02 4.88987422193e-02 5.33923081840e-02 5.71251588417e-02 5.98878714669e-02 6.15702941626e-02 + 6.79320857310e-02 6.66786802062e-02 6.41840706496e-02 6.05090723285e-02 5.58153453540e-02 5.03893328752e-02 + 4.46053414397e-02 3.88462459817e-02 3.34304675050e-02 2.85734174953e-02 2.43819637041e-02 2.08735527936e-02 + 1.80109897723e-02 1.57370100687e-02 1.39945083398e-02 1.27333396536e-02 1.19137265332e-02 1.15097880648e-02 + 1.15097880648e-02 1.19137265332e-02 1.27333396536e-02 1.39945083398e-02 1.57370100687e-02 1.80109897723e-02 + 2.08735527936e-02 2.43819637041e-02 2.85734174953e-02 3.34304675050e-02 3.88462459817e-02 4.46053414397e-02 + 5.03893328752e-02 5.58153453540e-02 6.05090723285e-02 6.41840706496e-02 6.66786802062e-02 6.79320857310e-02 + 7.23556493700e-02 7.03019494995e-02 6.69101294891e-02 6.22821499923e-02 5.66509609539e-02 5.03893328752e-02 + 4.39402098517e-02 3.77147526395e-02 3.20210145144e-02 2.70402901784e-02 2.28368095394e-02 1.93892705934e-02 + 1.66330383744e-02 1.44944499034e-02 1.29064893850e-02 1.18131307076e-02 1.11729588764e-02 1.09620544703e-02 + 1.11729588764e-02 1.18131307076e-02 1.29064893850e-02 1.44944499034e-02 1.66330383744e-02 1.93892705934e-02 + 2.28368095394e-02 2.70402901784e-02 3.20210145144e-02 3.77147526395e-02 4.39402098517e-02 5.03893328752e-02 + 5.66509609539e-02 6.22821499923e-02 6.69101294891e-02 7.03019494995e-02 7.23556493700e-02 7.30418134594e-02 + 7.51264696898e-02 7.21810172465e-02 6.78442738531e-02 6.22821499923e-02 5.58153453540e-02 4.88987422193e-02 + 4.20165784801e-02 3.55725175924e-02 2.98349904445e-02 2.49333108373e-02 2.08820531014e-02 1.76229803621e-02 + 1.50702461704e-02 1.31397287366e-02 1.17590249893e-02 1.08706042529e-02 1.04356792319e-02 1.04356792319e-02 + 1.08706042529e-02 1.17590249893e-02 1.31397287366e-02 1.50702461704e-02 1.76229803621e-02 2.08820531014e-02 + 2.49333108373e-02 2.98349904445e-02 3.55725175924e-02 4.20165784801e-02 4.88987422193e-02 5.58153453540e-02 + 6.22821499923e-02 6.78442738531e-02 7.21810172465e-02 7.51264696898e-02 7.66122811094e-02 7.66122811094e-02 + 7.60705845667e-02 7.21810172465e-02 6.69101294891e-02 6.05090723285e-02 5.33923081840e-02 4.60731359718e-02 + 3.90350130516e-02 3.26363277502e-02 2.70827915169e-02 2.24420850452e-02 1.86800926235e-02 1.57094271493e-02 + 1.34318126710e-02 1.17590249893e-02 1.06181928008e-02 9.95507847617e-03 9.73748464183e-03 9.95507847617e-03 + 1.06181928008e-02 1.17590249893e-02 1.34318126710e-02 1.57094271493e-02 1.86800926235e-02 2.24420850452e-02 + 2.70827915169e-02 3.26363277502e-02 3.90350130516e-02 4.60731359718e-02 5.33923081840e-02 6.05090723285e-02 + 6.69101294891e-02 7.21810172465e-02 7.60705845667e-02 7.84511058955e-02 7.92532152557e-02 7.84511058955e-02 + 7.51264696898e-02 7.03019494995e-02 6.41840706496e-02 5.71251588417e-02 4.96193341715e-02 4.21941579647e-02 + 3.52857897121e-02 2.91781605866e-02 2.40022165572e-02 1.97639178277e-02 1.63890080671e-02 1.37726366090e-02 + 1.18131307076e-02 1.04238516982e-02 9.53627070961e-03 9.10381322670e-03 9.10381322670e-03 9.53627070961e-03 + 1.04238516982e-02 1.18131307076e-02 1.37726366090e-02 1.63890080671e-02 1.97639178277e-02 2.40022165572e-02 + 2.91781605866e-02 3.52857897121e-02 4.21941579647e-02 4.96193341715e-02 5.71251588417e-02 6.41840706496e-02 + 7.03019494995e-02 7.51264696898e-02 7.84511058955e-02 8.01500628124e-02 8.01500628124e-02 7.84511058955e-02 + 7.23556493700e-02 6.66786802062e-02 5.98878714669e-02 5.24339557043e-02 4.48486167771e-02 3.76190713504e-02 + 3.10978190541e-02 2.54803066383e-02 2.08223402545e-02 1.70770073925e-02 1.41440793855e-02 1.19137265332e-02 + 1.02881382638e-02 9.18679124184e-03 8.54973346172e-03 8.34122341388e-03 8.54973346172e-03 9.18679124184e-03 + 1.02881382638e-02 1.19137265332e-02 1.41440793855e-02 1.70770073925e-02 2.08223402545e-02 2.54803066383e-02 + 3.10978190541e-02 3.76190713504e-02 4.48486167771e-02 5.24339557043e-02 5.98878714669e-02 6.66786802062e-02 + 7.23556493700e-02 7.66122811094e-02 7.92532152557e-02 8.01500628124e-02 7.92532152557e-02 7.66122811094e-02 + 6.79320857310e-02 6.15702941626e-02 5.43692149489e-02 4.68401774785e-02 3.94908104948e-02 3.27229087590e-02 + 2.67889182249e-02 2.17964249596e-02 1.77355963866e-02 1.45226393383e-02 1.20475550421e-02 1.02054916185e-02 + 8.90705726329e-03 8.08133005705e-03 7.68014935330e-03 7.68014935330e-03 8.08133005705e-03 8.90705726329e-03 + 1.02054916185e-02 1.20475550421e-02 1.45226393383e-02 1.77355963866e-02 2.17964249596e-02 2.67889182249e-02 + 3.27229087590e-02 3.94908104948e-02 4.68401774785e-02 5.43692149489e-02 6.15702941626e-02 6.79320857310e-02 + 7.30418134594e-02 7.66122811094e-02 7.84511058955e-02 7.84511058955e-02 7.66122811094e-02 7.30418134594e-02 + 5.77319585491e-02 5.00090134447e-02 4.23378898536e-02 3.51532871168e-02 2.87439673059e-02 2.32562353108e-02 + 1.87162119832e-02 1.50645020089e-02 1.21980827392e-02 1.00055755901e-02 8.38500711079e-03 7.24904282964e-03 + 6.52902358143e-03 6.17967298585e-03 6.17967298585e-03 6.52902358143e-03 7.24904282964e-03 8.38500711079e-03 + 1.00055755901e-02 1.21980827392e-02 1.50645020089e-02 1.87162119832e-02 2.32562353108e-02 2.87439673059e-02 + 3.51532871168e-02 4.23378898536e-02 5.00090134447e-02 5.77319585491e-02 6.49555724266e-02 7.10787520021e-02 + 7.55368812409e-02 7.78881394404e-02 7.78881394404e-02 7.55368812409e-02 7.10787520021e-02 6.49555724266e-02 + 5.00090134447e-02 4.27763236460e-02 3.58243136049e-02 2.94854041377e-02 2.39549635512e-02 1.93050944183e-02 + 1.55127511572e-02 1.24976141314e-02 1.01587603229e-02 8.39746782805e-03 7.12561826537e-03 6.26978037715e-03 + 5.77651892440e-03 5.61528193683e-03 5.77651892440e-03 6.26978037715e-03 7.12561826537e-03 8.39746782805e-03 + 1.01587603229e-02 1.24976141314e-02 1.55127511572e-02 1.93050944183e-02 2.39549635512e-02 2.94854041377e-02 + 3.58243136049e-02 4.27763236460e-02 5.00090134447e-02 5.70612480291e-02 6.33842515281e-02 6.84139609392e-02 + 7.16581855164e-02 7.27796836797e-02 7.16581855164e-02 6.84139609392e-02 6.33842515281e-02 5.70612480291e-02 + 4.23378898536e-02 3.58243136049e-02 2.97391273192e-02 2.43184216158e-02 1.96777557044e-02 1.58329883187e-02 + 1.27327884289e-02 1.02937156151e-02 8.42580807925e-03 7.04448483440e-03 6.07562992209e-03 5.46093720174e-03 + 5.16243150929e-03 5.16243150929e-03 5.46093720174e-03 6.07562992209e-03 7.04448483440e-03 8.42580807925e-03 + 1.02937156151e-02 1.27327884289e-02 1.58329883187e-02 1.96777557044e-02 2.43184216158e-02 2.97391273192e-02 + 3.58243136049e-02 4.23378898536e-02 4.89192305177e-02 5.51031089527e-02 6.03694423859e-02 6.42180018992e-02 + 6.62522137956e-02 6.62522137956e-02 6.42180018992e-02 6.03694423859e-02 5.51031089527e-02 4.89192305177e-02 + 3.51532871168e-02 2.94854041377e-02 2.43184216158e-02 1.98052910067e-02 1.59997599900e-02 1.28827341282e-02 + 1.03937663652e-02 8.45686847188e-03 6.99504538611e-03 5.93719631865e-03 5.22371135458e-03 4.81172327806e-03 + 4.67692793169e-03 4.81172327806e-03 5.22371135458e-03 5.93719631865e-03 6.99504538611e-03 8.45686847188e-03 + 1.03937663652e-02 1.28827341282e-02 1.59997599900e-02 1.98052910067e-02 2.43184216158e-02 2.94854041377e-02 + 3.51532871168e-02 4.10571769449e-02 4.68264624901e-02 5.20147259753e-02 5.61547897924e-02 5.88318176265e-02 + 5.97584596222e-02 5.88318176265e-02 5.61547897924e-02 5.20147259753e-02 4.68264624901e-02 4.10571769449e-02 + 2.87439673059e-02 2.39549635512e-02 1.96777557044e-02 1.59997599900e-02 1.29342051284e-02 1.04468583553e-02 + 8.47998103933e-03 6.96786738821e-03 5.84558656512e-03 5.05545032098e-03 4.55262020357e-03 4.30805835198e-03 + 4.30805835198e-03 4.55262020357e-03 5.05545032098e-03 5.84558656512e-03 6.96786738821e-03 8.47998103933e-03 + 1.04468583553e-02 1.29342051284e-02 1.59997599900e-02 1.96777557044e-02 2.39549635512e-02 2.87439673059e-02 + 3.38635928392e-02 3.90347179512e-02 4.38959177953e-02 4.80406383964e-02 5.10737783335e-02 5.26787408684e-02 + 5.26787408684e-02 5.10737783335e-02 4.80406383964e-02 4.38959177953e-02 3.90347179512e-02 3.38635928392e-02 + 2.32562353108e-02 1.93050944183e-02 1.58329883187e-02 1.28827341282e-02 1.04468583553e-02 8.48843476768e-03 + 6.95605972443e-03 5.79365065764e-03 4.94806264494e-03 4.37525079151e-03 4.04374575730e-03 3.93522801758e-03 + 4.04374575730e-03 4.37525079151e-03 4.94806264494e-03 5.79365065764e-03 6.95605972443e-03 8.48843476768e-03 + 1.04468583553e-02 1.28827341282e-02 1.58329883187e-02 1.93050944183e-02 2.32562353108e-02 2.75721078901e-02 + 3.20546920774e-02 3.64263171972e-02 4.03527020822e-02 4.34838779539e-02 4.55081727847e-02 4.62088704848e-02 + 4.55081727847e-02 4.34838779539e-02 4.03527020822e-02 3.64263171972e-02 3.20546920774e-02 2.75721078901e-02 + 1.87162119832e-02 1.55127511572e-02 1.27327884289e-02 1.03937663652e-02 8.47998103933e-03 6.95605972443e-03 + 5.77685140016e-03 4.89581524939e-03 4.27192322596e-03 3.87358926493e-03 3.67971968314e-03 3.67971968314e-03 + 3.87358926493e-03 4.27192322596e-03 4.89581524939e-03 5.77685140016e-03 6.95605972443e-03 8.47998103933e-03 + 1.03937663652e-02 1.27327884289e-02 1.55127511572e-02 1.87162119832e-02 2.22755921268e-02 2.60582031450e-02 + 2.98615217076e-02 3.34242157073e-02 3.64535808156e-02 3.86662855632e-02 3.98358227133e-02 3.98358227133e-02 + 3.86662855632e-02 3.64535808156e-02 3.34242157073e-02 2.98615217076e-02 2.60582031450e-02 2.22755921268e-02 + 1.50645020089e-02 1.24976141314e-02 1.02937156151e-02 8.45686847188e-03 6.96786738821e-03 5.79365065764e-03 + 4.89581524939e-03 4.23798561825e-03 3.79030883078e-03 3.53085792774e-03 3.44594928533e-03 3.53085792774e-03 + 3.79030883078e-03 4.23798561825e-03 4.89581524939e-03 5.79365065764e-03 6.96786738821e-03 8.45686847188e-03 + 1.02937156151e-02 1.24976141314e-02 1.50645020089e-02 1.79555609317e-02 2.10847229658e-02 2.43103322252e-02 + 2.74372089612e-02 3.02323588099e-02 3.24534608631e-02 3.38859304601e-02 3.43811654173e-02 3.38859304601e-02 + 3.24534608631e-02 3.02323588099e-02 2.74372089612e-02 2.43103322252e-02 2.10847229658e-02 1.79555609317e-02 + 1.21980827392e-02 1.01587603229e-02 8.42580807925e-03 6.99504538611e-03 5.84558656512e-03 4.94806264494e-03 + 4.27192322596e-03 3.79030883078e-03 3.48198055848e-03 3.33184951460e-03 3.33184951460e-03 3.48198055848e-03 + 3.79030883078e-03 4.27192322596e-03 4.94806264494e-03 5.84558656512e-03 6.99504538611e-03 8.42580807925e-03 + 1.01587603229e-02 1.21980827392e-02 1.45226393383e-02 1.70770073925e-02 1.97639178277e-02 2.24420850452e-02 + 2.49333108373e-02 2.70402901784e-02 2.85734174953e-02 2.93819034216e-02 2.93819034216e-02 2.85734174953e-02 + 2.70402901784e-02 2.49333108373e-02 2.24420850452e-02 1.97639178277e-02 1.70770073925e-02 1.45226393383e-02 + 1.00055755901e-02 8.39746782805e-03 7.04448483440e-03 5.93719631865e-03 5.05545032098e-03 4.37525079151e-03 + 3.87358926493e-03 3.53085792774e-03 3.33184951460e-03 3.26667178574e-03 3.33184951460e-03 3.53085792774e-03 + 3.87358926493e-03 4.37525079151e-03 5.05545032098e-03 5.93719631865e-03 7.04448483440e-03 8.39746782805e-03 + 1.00055755901e-02 1.18598583649e-02 1.39256808178e-02 1.61367490443e-02 1.83921353899e-02 2.05587788214e-02 + 2.24815496090e-02 2.40011711299e-02 2.49776956914e-02 2.53146898274e-02 2.49776956914e-02 2.40011711299e-02 + 2.24815496090e-02 2.05587788214e-02 1.83921353899e-02 1.61367490443e-02 1.39256808178e-02 1.18598583649e-02 + 8.38500711079e-03 7.12561826537e-03 6.07562992209e-03 5.22371135458e-03 4.55262020357e-03 4.04374575730e-03 + 3.67971968314e-03 3.44594928533e-03 3.33184951460e-03 3.33184951460e-03 3.44594928533e-03 3.67971968314e-03 + 4.04374575730e-03 4.55262020357e-03 5.22371135458e-03 6.07562992209e-03 7.12561826537e-03 8.38500711079e-03 + 9.85294674885e-03 1.15097880648e-02 1.33116675302e-02 1.51874137660e-02 1.70389543521e-02 1.87467470027e-02 + 2.01812628043e-02 2.12198093897e-02 2.17657781241e-02 2.17657781241e-02 2.12198093897e-02 2.01812628043e-02 + 1.87467470027e-02 1.70389543521e-02 1.51874137660e-02 1.33116675302e-02 1.15097880648e-02 9.85294674885e-03 + 7.24904282964e-03 6.26978037715e-03 5.46093720174e-03 4.81172327806e-03 4.30805835198e-03 3.93522801758e-03 + 3.67971968314e-03 3.53085792774e-03 3.48198055848e-03 3.53085792774e-03 3.67971968314e-03 3.93522801758e-03 + 4.30805835198e-03 4.81172327806e-03 5.46093720174e-03 6.26978037715e-03 7.24904282964e-03 8.40200942373e-03 + 9.71912104775e-03 1.11729588764e-02 1.27148275869e-02 1.42737851127e-02 1.57591868798e-02 1.70678712692e-02 + 1.80960146721e-02 1.87538902948e-02 1.89804120902e-02 1.87538902948e-02 1.80960146721e-02 1.70678712692e-02 + 1.57591868798e-02 1.42737851127e-02 1.27148275869e-02 1.11729588764e-02 9.71912104775e-03 8.40200942373e-03 + 6.52902358143e-03 5.77651892440e-03 5.16243150929e-03 4.67692793169e-03 4.30805835198e-03 4.04374575730e-03 + 3.87358926493e-03 3.79030883078e-03 3.79030883078e-03 3.87358926493e-03 4.04374575730e-03 4.30805835198e-03 + 4.67692793169e-03 5.16243150929e-03 5.77651892440e-03 6.52902358143e-03 7.42492384580e-03 8.46060891145e-03 + 9.61987006090e-03 1.08706042529e-02 1.21629507848e-02 1.34297677852e-02 1.45906790875e-02 1.55601992220e-02 + 1.62588522549e-02 1.66250325509e-02 1.66250325509e-02 1.62588522549e-02 1.55601992220e-02 1.45906790875e-02 + 1.34297677852e-02 1.21629507848e-02 1.08706042529e-02 9.61987006090e-03 8.46060891145e-03 7.42492384580e-03 + 6.17967298585e-03 5.61528193683e-03 5.16243150929e-03 4.81172327806e-03 4.55262020357e-03 4.37525079151e-03 + 4.27192322596e-03 4.23798561825e-03 4.27192322596e-03 4.37525079151e-03 4.55262020357e-03 4.81172327806e-03 + 5.16243150929e-03 5.61528193683e-03 6.17967298585e-03 6.86170422323e-03 7.66146344666e-03 8.57007132232e-03 + 9.56702175361e-03 1.06181928008e-02 1.16751572683e-02 1.26769712537e-02 1.35553259639e-02 1.42425749040e-02 + 1.46810426016e-02 1.48317912783e-02 1.46810426016e-02 1.42425749040e-02 1.35553259639e-02 1.26769712537e-02 + 1.16751572683e-02 1.06181928008e-02 9.56702175361e-03 8.57007132232e-03 7.66146344666e-03 6.86170422323e-03 + 6.17967298585e-03 5.77651892440e-03 5.46093720174e-03 5.22371135458e-03 5.05545032098e-03 4.94806264494e-03 + 4.89581524939e-03 4.89581524939e-03 4.94806264494e-03 5.05545032098e-03 5.22371135458e-03 5.46093720174e-03 + 5.77651892440e-03 6.17967298585e-03 6.67761981445e-03 7.27338017313e-03 7.96341795569e-03 8.73551184506e-03 + 9.56702175361e-03 1.04238516982e-02 1.12609832188e-02 1.20255038743e-02 1.26620800682e-02 1.31198380533e-02 + 1.33594815778e-02 1.33594815778e-02 1.31198380533e-02 1.26620800682e-02 1.20255038743e-02 1.12609832188e-02 + 1.04238516982e-02 9.56702175361e-03 8.73551184506e-03 7.96341795569e-03 7.27338017313e-03 6.67761981445e-03 + 6.52902358143e-03 6.26978037715e-03 6.07562992209e-03 5.93719631865e-03 5.84558656512e-03 5.79365065764e-03 + 5.77685140016e-03 5.79365065764e-03 5.84558656512e-03 5.93719631865e-03 6.07562992209e-03 6.26978037715e-03 + 6.52902358143e-03 6.86170422323e-03 7.27338017313e-03 7.76490388909e-03 8.33057919998e-03 8.95658363692e-03 + 9.61987006090e-03 1.02881382638e-02 1.09215936737e-02 1.14766013692e-02 1.19105819676e-02 1.21873907787e-02 + 1.22825573408e-02 1.21873907787e-02 1.19105819676e-02 1.14766013692e-02 1.09215936737e-02 1.02881382638e-02 + 9.61987006090e-03 8.95658363692e-03 8.33057919998e-03 7.76490388909e-03 7.27338017313e-03 6.86170422323e-03 + 7.24904282964e-03 7.12561826537e-03 7.04448483440e-03 6.99504538611e-03 6.96786738821e-03 6.95605972443e-03 + 6.95605972443e-03 6.96786738821e-03 6.99504538611e-03 7.04448483440e-03 7.12561826537e-03 7.24904282964e-03 + 7.42492384580e-03 7.66146344666e-03 7.96341795569e-03 8.33057919998e-03 8.75631776595e-03 9.22648243576e-03 + 9.71912104775e-03 1.02054916185e-02 1.06524671204e-02 1.10259974674e-02 1.12951380995e-02 1.14361707830e-02 + 1.14361707830e-02 1.12951380995e-02 1.10259974674e-02 1.06524671204e-02 1.02054916185e-02 9.71912104775e-03 + 9.22648243576e-03 8.75631776595e-03 8.33057919998e-03 7.96341795569e-03 7.66146344666e-03 7.42492384580e-03 + 8.38500711079e-03 8.39746782805e-03 8.42580807925e-03 8.45686847188e-03 8.47998103933e-03 8.48843476768e-03 + 8.47998103933e-03 8.45686847188e-03 8.42580807925e-03 8.39746782805e-03 8.38500711079e-03 8.40200942373e-03 + 8.46060891145e-03 8.57007132232e-03 8.73551184506e-03 8.95658363692e-03 9.22648243576e-03 9.53173661310e-03 + 9.85294674885e-03 1.01663421573e-02 1.04460621935e-02 1.06671499136e-02 1.08088949298e-02 1.08577130860e-02 + 1.08088949298e-02 1.06671499136e-02 1.04460621935e-02 1.01663421573e-02 9.85294674885e-03 9.53173661310e-03 + 9.22648243576e-03 8.95658363692e-03 8.73551184506e-03 8.57007132232e-03 8.46060891145e-03 8.40200942373e-03 + 1.00055755901e-02 1.01587603229e-02 1.02937156151e-02 1.03937663652e-02 1.04468583553e-02 1.04468583553e-02 + 1.03937663652e-02 1.02937156151e-02 1.01587603229e-02 1.00055755901e-02 9.85294674885e-03 9.71912104775e-03 + 9.61987006090e-03 9.56702175361e-03 9.56702175361e-03 9.61987006090e-03 9.71912104775e-03 9.85294674885e-03 + 1.00055755901e-02 1.01587603229e-02 1.02937156151e-02 1.03937663652e-02 1.04468583553e-02 1.04468583553e-02 + 1.03937663652e-02 1.02937156151e-02 1.01587603229e-02 1.00055755901e-02 9.85294674885e-03 9.71912104775e-03 + 9.61987006090e-03 9.56702175361e-03 9.56702175361e-03 9.61987006090e-03 9.71912104775e-03 9.85294674885e-03 + 1.21980827392e-02 1.24976141314e-02 1.27327884289e-02 1.28827341282e-02 1.29342051284e-02 1.28827341282e-02 + 1.27327884289e-02 1.24976141314e-02 1.21980827392e-02 1.18598583649e-02 1.15097880648e-02 1.11729588764e-02 + 1.08706042529e-02 1.06181928008e-02 1.04238516982e-02 1.02881382638e-02 1.02054916185e-02 1.01663421573e-02 + 1.01587603229e-02 1.01697655067e-02 1.01870819285e-02 1.02011860999e-02 1.02064774226e-02 1.02011860999e-02 + 1.01870819285e-02 1.01697655067e-02 1.01587603229e-02 1.01663421573e-02 1.02054916185e-02 1.02881382638e-02 + 1.04238516982e-02 1.06181928008e-02 1.08706042529e-02 1.11729588764e-02 1.15097880648e-02 1.18598583649e-02 + 1.50645020089e-02 1.55127511572e-02 1.58329883187e-02 1.59997599900e-02 1.59997599900e-02 1.58329883187e-02 + 1.55127511572e-02 1.50645020089e-02 1.45226393383e-02 1.39256808178e-02 1.33116675302e-02 1.27148275869e-02 + 1.21629507848e-02 1.16751572683e-02 1.12609832188e-02 1.09215936737e-02 1.06524671204e-02 1.04460621935e-02 + 1.02937156151e-02 1.01870819285e-02 1.01194532806e-02 1.00865795572e-02 1.00865795572e-02 1.01194532806e-02 + 1.01870819285e-02 1.02937156151e-02 1.04460621935e-02 1.06524671204e-02 1.09215936737e-02 1.12609832188e-02 + 1.16751572683e-02 1.21629507848e-02 1.27148275869e-02 1.33116675302e-02 1.39256808178e-02 1.45226393383e-02 + 1.87162119832e-02 1.93050944183e-02 1.96777557044e-02 1.98052910067e-02 1.96777557044e-02 1.93050944183e-02 + 1.87162119832e-02 1.79555609317e-02 1.70770073925e-02 1.61367490443e-02 1.51874137660e-02 1.42737851127e-02 + 1.34297677852e-02 1.26769712537e-02 1.20255038743e-02 1.14766013692e-02 1.10259974674e-02 1.06671499136e-02 + 1.03937663652e-02 1.02011860999e-02 1.00865795572e-02 1.00485204973e-02 1.00865795572e-02 1.02011860999e-02 + 1.03937663652e-02 1.06671499136e-02 1.10259974674e-02 1.14766013692e-02 1.20255038743e-02 1.26769712537e-02 + 1.34297677852e-02 1.42737851127e-02 1.51874137660e-02 1.61367490443e-02 1.70770073925e-02 1.79555609317e-02 + 2.32562353108e-02 2.39549635512e-02 2.43184216158e-02 2.43184216158e-02 2.39549635512e-02 2.32562353108e-02 + 2.22755921268e-02 2.10847229658e-02 1.97639178277e-02 1.83921353899e-02 1.70389543521e-02 1.57591868798e-02 + 1.45906790875e-02 1.35553259639e-02 1.26620800682e-02 1.19105819676e-02 1.12951380995e-02 1.08088949298e-02 + 1.04468583553e-02 1.02064774226e-02 1.00865795572e-02 1.00865795572e-02 1.02064774226e-02 1.04468583553e-02 + 1.08088949298e-02 1.12951380995e-02 1.19105819676e-02 1.26620800682e-02 1.35553259639e-02 1.45906790875e-02 + 1.57591868798e-02 1.70389543521e-02 1.83921353899e-02 1.97639178277e-02 2.10847229658e-02 2.22755921268e-02 + 2.87439673059e-02 2.94854041377e-02 2.97391273192e-02 2.94854041377e-02 2.87439673059e-02 2.75721078901e-02 + 2.60582031450e-02 2.43103322252e-02 2.24420850452e-02 2.05587788214e-02 1.87467470027e-02 1.70678712692e-02 + 1.55601992220e-02 1.42425749040e-02 1.31198380533e-02 1.21873907787e-02 1.14361707830e-02 1.08577130860e-02 + 1.04468583553e-02 1.02011860999e-02 1.01194532806e-02 1.02011860999e-02 1.04468583553e-02 1.08577130860e-02 + 1.14361707830e-02 1.21873907787e-02 1.31198380533e-02 1.42425749040e-02 1.55601992220e-02 1.70678712692e-02 + 1.87467470027e-02 2.05587788214e-02 2.24420850452e-02 2.43103322252e-02 2.60582031450e-02 2.75721078901e-02 + 3.51532871168e-02 3.58243136049e-02 3.58243136049e-02 3.51532871168e-02 3.38635928392e-02 3.20546920774e-02 + 2.98615217076e-02 2.74372089612e-02 2.49333108373e-02 2.24815496090e-02 2.01812628043e-02 1.80960146721e-02 + 1.62588522549e-02 1.46810426016e-02 1.33594815778e-02 1.22825573408e-02 1.14361707830e-02 1.08088949298e-02 + 1.03937663652e-02 1.01870819285e-02 1.01870819285e-02 1.03937663652e-02 1.08088949298e-02 1.14361707830e-02 + 1.22825573408e-02 1.33594815778e-02 1.46810426016e-02 1.62588522549e-02 1.80960146721e-02 2.01812628043e-02 + 2.24815496090e-02 2.49333108373e-02 2.74372089612e-02 2.98615217076e-02 3.20546920774e-02 3.38635928392e-02 + 4.23378898536e-02 4.27763236460e-02 4.23378898536e-02 4.10571769449e-02 3.90347179512e-02 3.64263171972e-02 + 3.34242157073e-02 3.02323588099e-02 2.70402901784e-02 2.40011711299e-02 2.12198093897e-02 1.87538902948e-02 + 1.66250325509e-02 1.48317912783e-02 1.33594815778e-02 1.21873907787e-02 1.12951380995e-02 1.06671499136e-02 + 1.02937156151e-02 1.01697655067e-02 1.02937156151e-02 1.06671499136e-02 1.12951380995e-02 1.21873907787e-02 + 1.33594815778e-02 1.48317912783e-02 1.66250325509e-02 1.87538902948e-02 2.12198093897e-02 2.40011711299e-02 + 2.70402901784e-02 3.02323588099e-02 3.34242157073e-02 3.64263171972e-02 3.90347179512e-02 4.10571769449e-02 + 5.00090134447e-02 5.00090134447e-02 4.89192305177e-02 4.68264624901e-02 4.38959177953e-02 4.03527020822e-02 + 3.64535808156e-02 3.24534608631e-02 2.85734174953e-02 2.49776956914e-02 2.17657781241e-02 1.89804120902e-02 + 1.66250325509e-02 1.46810426016e-02 1.31198380533e-02 1.19105819676e-02 1.10259974674e-02 1.04460621935e-02 + 1.01587603229e-02 1.01587603229e-02 1.04460621935e-02 1.10259974674e-02 1.19105819676e-02 1.31198380533e-02 + 1.46810426016e-02 1.66250325509e-02 1.89804120902e-02 2.17657781241e-02 2.49776956914e-02 2.85734174953e-02 + 3.24534608631e-02 3.64535808156e-02 4.03527020822e-02 4.38959177953e-02 4.68264624901e-02 4.89192305177e-02 + 5.77319585491e-02 5.70612480291e-02 5.51031089527e-02 5.20147259753e-02 4.80406383964e-02 4.34838779539e-02 + 3.86662855632e-02 3.38859304601e-02 2.93819034216e-02 2.53146898274e-02 2.17657781241e-02 1.87538902948e-02 + 1.62588522549e-02 1.42425749040e-02 1.26620800682e-02 1.14766013692e-02 1.06524671204e-02 1.01663421573e-02 + 1.00055755901e-02 1.01663421573e-02 1.06524671204e-02 1.14766013692e-02 1.26620800682e-02 1.42425749040e-02 + 1.62588522549e-02 1.87538902948e-02 2.17657781241e-02 2.53146898274e-02 2.93819034216e-02 3.38859304601e-02 + 3.86662855632e-02 4.34838779539e-02 4.80406383964e-02 5.20147259753e-02 5.51031089527e-02 5.70612480291e-02 + 6.49555724266e-02 6.33842515281e-02 6.03694423859e-02 5.61547897924e-02 5.10737783335e-02 4.55081727847e-02 + 3.98358227133e-02 3.43811654173e-02 2.93819034216e-02 2.49776956914e-02 2.12198093897e-02 1.80960146721e-02 + 1.55601992220e-02 1.35553259639e-02 1.20255038743e-02 1.09215936737e-02 1.02054916185e-02 9.85294674885e-03 + 9.85294674885e-03 1.02054916185e-02 1.09215936737e-02 1.20255038743e-02 1.35553259639e-02 1.55601992220e-02 + 1.80960146721e-02 2.12198093897e-02 2.49776956914e-02 2.93819034216e-02 3.43811654173e-02 3.98358227133e-02 + 4.55081727847e-02 5.10737783335e-02 5.61547897924e-02 6.03694423859e-02 6.33842515281e-02 6.49555724266e-02 + 7.10787520021e-02 6.84139609392e-02 6.42180018992e-02 5.88318176265e-02 5.26787408684e-02 4.62088704848e-02 + 3.98358227133e-02 3.38859304601e-02 2.85734174953e-02 2.40011711299e-02 2.01812628043e-02 1.70678712692e-02 + 1.45906790875e-02 1.26769712537e-02 1.12609832188e-02 1.02881382638e-02 9.71912104775e-03 9.53173661310e-03 + 9.71912104775e-03 1.02881382638e-02 1.12609832188e-02 1.26769712537e-02 1.45906790875e-02 1.70678712692e-02 + 2.01812628043e-02 2.40011711299e-02 2.85734174953e-02 3.38859304601e-02 3.98358227133e-02 4.62088704848e-02 + 5.26787408684e-02 5.88318176265e-02 6.42180018992e-02 6.84139609392e-02 7.10787520021e-02 7.19923628057e-02 + 7.55368812409e-02 7.16581855164e-02 6.62522137956e-02 5.97584596222e-02 5.26787408684e-02 4.55081727847e-02 + 3.86662855632e-02 3.24534608631e-02 2.70402901784e-02 2.24815496090e-02 1.87467470027e-02 1.57591868798e-02 + 1.34297677852e-02 1.16751572683e-02 1.04238516982e-02 9.61987006090e-03 9.22648243576e-03 9.22648243576e-03 + 9.61987006090e-03 1.04238516982e-02 1.16751572683e-02 1.34297677852e-02 1.57591868798e-02 1.87467470027e-02 + 2.24815496090e-02 2.70402901784e-02 3.24534608631e-02 3.86662855632e-02 4.55081727847e-02 5.26787408684e-02 + 5.97584596222e-02 6.62522137956e-02 7.16581855164e-02 7.55368812409e-02 7.75631573239e-02 7.75631573239e-02 + 7.78881394404e-02 7.27796836797e-02 6.62522137956e-02 5.88318176265e-02 5.10737783335e-02 4.34838779539e-02 + 3.64535808156e-02 3.02323588099e-02 2.49333108373e-02 2.05587788214e-02 1.70389543521e-02 1.42737851127e-02 + 1.21629507848e-02 1.06181928008e-02 9.56702175361e-03 8.95658363692e-03 8.75631776595e-03 8.95658363692e-03 + 9.56702175361e-03 1.06181928008e-02 1.21629507848e-02 1.42737851127e-02 1.70389543521e-02 2.05587788214e-02 + 2.49333108373e-02 3.02323588099e-02 3.64535808156e-02 4.34838779539e-02 5.10737783335e-02 5.88318176265e-02 + 6.62522137956e-02 7.27796836797e-02 7.78881394404e-02 8.11458755837e-02 8.22656900591e-02 8.11458755837e-02 + 7.78881394404e-02 7.16581855164e-02 6.42180018992e-02 5.61547897924e-02 4.80406383964e-02 4.03527020822e-02 + 3.34242157073e-02 2.74372089612e-02 2.24420850452e-02 1.83921353899e-02 1.51874137660e-02 1.27148275869e-02 + 1.08706042529e-02 9.56702175361e-03 8.73551184506e-03 8.33057919998e-03 8.33057919998e-03 8.73551184506e-03 + 9.56702175361e-03 1.08706042529e-02 1.27148275869e-02 1.51874137660e-02 1.83921353899e-02 2.24420850452e-02 + 2.74372089612e-02 3.34242157073e-02 4.03527020822e-02 4.80406383964e-02 5.61547897924e-02 6.42180018992e-02 + 7.16581855164e-02 7.78881394404e-02 8.23828782457e-02 8.47410728024e-02 8.47410728024e-02 8.23828782457e-02 + 7.55368812409e-02 6.84139609392e-02 6.03694423859e-02 5.20147259753e-02 4.38959177953e-02 3.64263171972e-02 + 2.98615217076e-02 2.43103322252e-02 1.97639178277e-02 1.61367490443e-02 1.33116675302e-02 1.11729588764e-02 + 9.61987006090e-03 8.57007132232e-03 7.96341795569e-03 7.76490388909e-03 7.96341795569e-03 8.57007132232e-03 + 9.61987006090e-03 1.11729588764e-02 1.33116675302e-02 1.61367490443e-02 1.97639178277e-02 2.43103322252e-02 + 2.98615217076e-02 3.64263171972e-02 4.38959177953e-02 5.20147259753e-02 6.03694423859e-02 6.84139609392e-02 + 7.55368812409e-02 8.11458755837e-02 8.47410728024e-02 8.59805323971e-02 8.47410728024e-02 8.11458755837e-02 + 7.10787520021e-02 6.33842515281e-02 5.51031089527e-02 4.68264624901e-02 3.90347179512e-02 3.20546920774e-02 + 2.60582031450e-02 2.10847229658e-02 1.70770073925e-02 1.39256808178e-02 1.15097880648e-02 9.71912104775e-03 + 8.46060891145e-03 7.66146344666e-03 7.27338017313e-03 7.27338017313e-03 7.66146344666e-03 8.46060891145e-03 + 9.71912104775e-03 1.15097880648e-02 1.39256808178e-02 1.70770073925e-02 2.10847229658e-02 2.60582031450e-02 + 3.20546920774e-02 3.90347179512e-02 4.68264624901e-02 5.51031089527e-02 6.33842515281e-02 7.10787520021e-02 + 7.75631573239e-02 8.22656900591e-02 8.47410728024e-02 8.47410728024e-02 8.22656900591e-02 7.75631573239e-02 + 6.49555724266e-02 5.70612480291e-02 4.89192305177e-02 4.10571769449e-02 3.38635928392e-02 2.75721078901e-02 + 2.22755921268e-02 1.79555609317e-02 1.45226393383e-02 1.18598583649e-02 9.85294674885e-03 8.40200942373e-03 + 7.42492384580e-03 6.86170422323e-03 6.67761981445e-03 6.86170422323e-03 7.42492384580e-03 8.40200942373e-03 + 9.85294674885e-03 1.18598583649e-02 1.45226393383e-02 1.79555609317e-02 2.22755921268e-02 2.75721078901e-02 + 3.38635928392e-02 4.10571769449e-02 4.89192305177e-02 5.70612480291e-02 6.49555724266e-02 7.19923628057e-02 + 7.75631573239e-02 8.11458755837e-02 8.23828782457e-02 8.11458755837e-02 7.75631573239e-02 7.19923628057e-02 + 5.18034033720e-02 4.40291518527e-02 3.66568505349e-02 3.00149219248e-02 2.42781130820e-02 1.94921954522e-02 + 1.56112881223e-02 1.25396406703e-02 1.01663421573e-02 8.38500711079e-03 7.10160482063e-03 6.23916674188e-03 + 5.74257125314e-03 5.58034633768e-03 5.74257125314e-03 6.23916674188e-03 7.10160482063e-03 8.38500711079e-03 + 1.01663421573e-02 1.25396406703e-02 1.56112881223e-02 1.94921954522e-02 2.42781130820e-02 3.00149219248e-02 + 3.66568505349e-02 4.40291518527e-02 5.18034033720e-02 5.94941697642e-02 6.64898780493e-02 7.21264918488e-02 + 7.57970302390e-02 7.70723261920e-02 7.57970302390e-02 7.21264918488e-02 6.64898780493e-02 5.94941697642e-02 + 4.40291518527e-02 3.70689589239e-02 3.06330408871e-02 2.49511167951e-02 2.01220876747e-02 1.61434902729e-02 + 1.29494247541e-02 1.04460621935e-02 8.53524112695e-03 7.12561826537e-03 6.13840739734e-03 5.51272438194e-03 + 5.20914423543e-03 5.20914423543e-03 5.51272438194e-03 6.13840739734e-03 7.12561826537e-03 8.53524112695e-03 + 1.04460621935e-02 1.29494247541e-02 1.61434902729e-02 2.01220876747e-02 2.49511167951e-02 3.06330408871e-02 + 3.70689589239e-02 4.40291518527e-02 5.11403130173e-02 5.78981879671e-02 6.37149803432e-02 6.80033074139e-02 + 7.02831021338e-02 7.02831021338e-02 6.80033074139e-02 6.37149803432e-02 5.78981879671e-02 5.11403130173e-02 + 3.66568505349e-02 3.06330408871e-02 2.51823253991e-02 2.04512222766e-02 1.64818809732e-02 1.32437842255e-02 + 1.06671499136e-02 8.66817035987e-03 7.16308508658e-03 6.07562992209e-03 5.34296096392e-03 4.92029966810e-03 + 4.78210810048e-03 4.92029966810e-03 5.34296096392e-03 6.07562992209e-03 7.16308508658e-03 8.66817035987e-03 + 1.06671499136e-02 1.32437842255e-02 1.64818809732e-02 2.04512222766e-02 2.51823253991e-02 3.06330408871e-02 + 3.66568505349e-02 4.29832635915e-02 4.92182336225e-02 5.48714786192e-02 5.94150808572e-02 6.23688231248e-02 + 6.33941825467e-02 6.23688231248e-02 5.94150808572e-02 5.48714786192e-02 4.92182336225e-02 4.29832635915e-02 + 3.00149219248e-02 2.49511167951e-02 2.04512222766e-02 1.65980023724e-02 1.33976732300e-02 1.08088949298e-02 + 8.76725594498e-03 7.20097316500e-03 6.04016501968e-03 5.22371135458e-03 4.70458873539e-03 4.45230019628e-03 + 4.45230019628e-03 4.70458873539e-03 5.22371135458e-03 6.04016501968e-03 7.20097316500e-03 8.76725594498e-03 + 1.08088949298e-02 1.33976732300e-02 1.65980023724e-02 2.04512222766e-02 2.49511167951e-02 3.00149219248e-02 + 3.54595415232e-02 4.09927131873e-02 4.62258246981e-02 5.07121410456e-02 5.40097122002e-02 5.57595749637e-02 + 5.57595749637e-02 5.40097122002e-02 5.07121410456e-02 4.62258246981e-02 4.09927131873e-02 3.54595415232e-02 + 2.42781130820e-02 2.01220876747e-02 1.64818809732e-02 1.33976732300e-02 1.08577130860e-02 8.82009872524e-03 + 7.22847713667e-03 6.02253909249e-03 5.14599535674e-03 4.55262020357e-03 4.20942844716e-03 4.09713024865e-03 + 4.20942844716e-03 4.55262020357e-03 5.14599535674e-03 6.02253909249e-03 7.22847713667e-03 8.82009872524e-03 + 1.08577130860e-02 1.33976732300e-02 1.64818809732e-02 2.01220876747e-02 2.42781130820e-02 2.88348357920e-02 + 3.35871770820e-02 3.82415861113e-02 4.24386109393e-02 4.57968161948e-02 4.79731106469e-02 4.87273692032e-02 + 4.79731106469e-02 4.57968161948e-02 4.24386109393e-02 3.82415861113e-02 3.35871770820e-02 2.88348357920e-02 + 1.94921954522e-02 1.61434902729e-02 1.32437842255e-02 1.08088949298e-02 8.82009872524e-03 7.23847314555e-03 + 6.01563766373e-03 5.10253249618e-03 4.45623663297e-03 4.04374575730e-03 3.84302280796e-03 3.84302280796e-03 + 4.04374575730e-03 4.45623663297e-03 5.10253249618e-03 6.01563766373e-03 7.23847314555e-03 8.82009872524e-03 + 1.08088949298e-02 1.32437842255e-02 1.61434902729e-02 1.94921954522e-02 2.32217587400e-02 2.71955666447e-02 + 3.12022017908e-02 3.49654910486e-02 3.81729635435e-02 4.05199675384e-02 4.17618689283e-02 4.17618689283e-02 + 4.05199675384e-02 3.81729635435e-02 3.49654910486e-02 3.12022017908e-02 2.71955666447e-02 2.32217587400e-02 + 1.56112881223e-02 1.29494247541e-02 1.06671499136e-02 8.76725594498e-03 7.22847713667e-03 6.01563766373e-03 + 5.08859106656e-03 4.40955813989e-03 3.94752033538e-03 3.67971968314e-03 3.59206217435e-03 3.67971968314e-03 + 3.94752033538e-03 4.40955813989e-03 5.08859106656e-03 6.01563766373e-03 7.22847713667e-03 8.76725594498e-03 + 1.06671499136e-02 1.29494247541e-02 1.56112881223e-02 1.86137801375e-02 2.18687619531e-02 2.52298202509e-02 + 2.84935612207e-02 3.14154606035e-02 3.37399765679e-02 3.52402742752e-02 3.57591480990e-02 3.52402742752e-02 + 3.37399765679e-02 3.14154606035e-02 2.84935612207e-02 2.52298202509e-02 2.18687619531e-02 1.86137801375e-02 + 1.25396406703e-02 1.04460621935e-02 8.66817035987e-03 7.20097316500e-03 6.02253909249e-03 5.10253249618e-03 + 4.40955813989e-03 3.91597292758e-03 3.59990872378e-03 3.44594928533e-03 3.44594928533e-03 3.59990872378e-03 + 3.91597292758e-03 4.40955813989e-03 5.10253249618e-03 6.02253909249e-03 7.20097316500e-03 8.66817035987e-03 + 1.04460621935e-02 1.25396406703e-02 1.49279448733e-02 1.75547637226e-02 2.03206914317e-02 2.30804654510e-02 + 2.56499234494e-02 2.78244998346e-02 2.94074293899e-02 3.02423286704e-02 3.02423286704e-02 2.94074293899e-02 + 2.78244998346e-02 2.56499234494e-02 2.30804654510e-02 2.03206914317e-02 1.75547637226e-02 1.49279448733e-02 + 1.01663421573e-02 8.53524112695e-03 7.16308508658e-03 6.04016501968e-03 5.14599535674e-03 4.45623663297e-03 + 3.94752033538e-03 3.59990872378e-03 3.39799742507e-03 3.33184951460e-03 3.39799742507e-03 3.59990872378e-03 + 3.94752033538e-03 4.45623663297e-03 5.14599535674e-03 6.04016501968e-03 7.16308508658e-03 8.53524112695e-03 + 1.01663421573e-02 1.20475550421e-02 1.41440793855e-02 1.63890080671e-02 1.86800926235e-02 2.08820531014e-02 + 2.28368095394e-02 2.43819637041e-02 2.53749373622e-02 2.57176061925e-02 2.53749373622e-02 2.43819637041e-02 + 2.28368095394e-02 2.08820531014e-02 1.86800926235e-02 1.63890080671e-02 1.41440793855e-02 1.20475550421e-02 + 8.38500711079e-03 7.12561826537e-03 6.07562992209e-03 5.22371135458e-03 4.55262020357e-03 4.04374575730e-03 + 3.67971968314e-03 3.44594928533e-03 3.33184951460e-03 3.33184951460e-03 3.44594928533e-03 3.67971968314e-03 + 4.04374575730e-03 4.55262020357e-03 5.22371135458e-03 6.07562992209e-03 7.12561826537e-03 8.38500711079e-03 + 9.85294674885e-03 1.15097880648e-02 1.33116675302e-02 1.51874137660e-02 1.70389543521e-02 1.87467470027e-02 + 2.01812628043e-02 2.12198093897e-02 2.17657781241e-02 2.17657781241e-02 2.12198093897e-02 2.01812628043e-02 + 1.87467470027e-02 1.70389543521e-02 1.51874137660e-02 1.33116675302e-02 1.15097880648e-02 9.85294674885e-03 + 7.10160482063e-03 6.13840739734e-03 5.34296096392e-03 4.70458873539e-03 4.20942844716e-03 3.84302280796e-03 + 3.59206217435e-03 3.44594928533e-03 3.39799742507e-03 3.44594928533e-03 3.59206217435e-03 3.84302280796e-03 + 4.20942844716e-03 4.70458873539e-03 5.34296096392e-03 6.13840739734e-03 7.10160482063e-03 8.23585736203e-03 + 9.53173661310e-03 1.09620544703e-02 1.24785638223e-02 1.40112393540e-02 1.54709928045e-02 1.67567114426e-02 + 1.77666865554e-02 1.84129279741e-02 1.86354478304e-02 1.84129279741e-02 1.77666865554e-02 1.67567114426e-02 + 1.54709928045e-02 1.40112393540e-02 1.24785638223e-02 1.09620544703e-02 9.53173661310e-03 8.23585736203e-03 + 6.23916674188e-03 5.51272438194e-03 4.92029966810e-03 4.45230019628e-03 4.09713024865e-03 3.84302280796e-03 + 3.67971968314e-03 3.59990872378e-03 3.59990872378e-03 3.67971968314e-03 3.84302280796e-03 4.09713024865e-03 + 4.45230019628e-03 4.92029966810e-03 5.51272438194e-03 6.23916674188e-03 7.10459522193e-03 8.10563303358e-03 + 9.22648243576e-03 1.04356792319e-02 1.16845233837e-02 1.29079014387e-02 1.40283418589e-02 1.49636867906e-02 + 1.56375665721e-02 1.59907282434e-02 1.59907282434e-02 1.56375665721e-02 1.49636867906e-02 1.40283418589e-02 + 1.29079014387e-02 1.16845233837e-02 1.04356792319e-02 9.22648243576e-03 8.10563303358e-03 7.10459522193e-03 + 5.74257125314e-03 5.20914423543e-03 4.78210810048e-03 4.45230019628e-03 4.20942844716e-03 4.04374575730e-03 + 3.94752033538e-03 3.91597292758e-03 3.94752033538e-03 4.04374575730e-03 4.20942844716e-03 4.45230019628e-03 + 4.78210810048e-03 5.20914423543e-03 5.74257125314e-03 6.38840491477e-03 7.14689010595e-03 8.00955236461e-03 + 8.95658363692e-03 9.95507847617e-03 1.09586567104e-02 1.19093466628e-02 1.27424344623e-02 1.33939588194e-02 + 1.38094745262e-02 1.39522993746e-02 1.38094745262e-02 1.33939588194e-02 1.27424344623e-02 1.19093466628e-02 + 1.09586567104e-02 9.95507847617e-03 8.95658363692e-03 8.00955236461e-03 7.14689010595e-03 6.38840491477e-03 + 5.58034633768e-03 5.20914423543e-03 4.92029966810e-03 4.70458873539e-03 4.55262020357e-03 4.45623663297e-03 + 4.40955813989e-03 4.40955813989e-03 4.45623663297e-03 4.55262020357e-03 4.70458873539e-03 4.92029966810e-03 + 5.20914423543e-03 5.58034633768e-03 6.04118457084e-03 6.59479473082e-03 7.23785699764e-03 7.95863052826e-03 + 8.73551184506e-03 9.53627070961e-03 1.03186231402e-02 1.10330000246e-02 1.16276251073e-02 1.20550163598e-02 + 1.22786655737e-02 1.22786655737e-02 1.20550163598e-02 1.16276251073e-02 1.10330000246e-02 1.03186231402e-02 + 9.53627070961e-03 8.73551184506e-03 7.95863052826e-03 7.23785699764e-03 6.59479473082e-03 6.04118457084e-03 + 5.74257125314e-03 5.51272438194e-03 5.34296096392e-03 5.22371135458e-03 5.14599535674e-03 5.10253249618e-03 + 5.08859106656e-03 5.10253249618e-03 5.14599535674e-03 5.22371135458e-03 5.34296096392e-03 5.51272438194e-03 + 5.74257125314e-03 6.04118457084e-03 6.41444748147e-03 6.86339437793e-03 7.38252390656e-03 7.95863052826e-03 + 8.57007132232e-03 9.18679124184e-03 9.77183223433e-03 1.02846446979e-02 1.06856809758e-02 1.09414577715e-02 + 1.10293847869e-02 1.09414577715e-02 1.06856809758e-02 1.02846446979e-02 9.77183223433e-03 9.18679124184e-03 + 8.57007132232e-03 7.95863052826e-03 7.38252390656e-03 6.86339437793e-03 6.41444748147e-03 6.04118457084e-03 + 6.23916674188e-03 6.13840739734e-03 6.07562992209e-03 6.04016501968e-03 6.02253909249e-03 6.01563766373e-03 + 6.01563766373e-03 6.02253909249e-03 6.04016501968e-03 6.07562992209e-03 6.13840739734e-03 6.23916674188e-03 + 6.38840491477e-03 6.59479473082e-03 6.86339437793e-03 7.19410390186e-03 7.58058258839e-03 8.00955236461e-03 + 8.46060891145e-03 8.90705726329e-03 9.31810768724e-03 9.66211927865e-03 9.91029781221e-03 1.00404664762e-02 + 1.00404664762e-02 9.91029781221e-03 9.66211927865e-03 9.31810768724e-03 8.90705726329e-03 8.46060891145e-03 + 8.00955236461e-03 7.58058258839e-03 7.19410390186e-03 6.86339437793e-03 6.59479473082e-03 6.38840491477e-03 + 7.10160482063e-03 7.12561826537e-03 7.16308508658e-03 7.20097316500e-03 7.22847713667e-03 7.23847314555e-03 + 7.22847713667e-03 7.20097316500e-03 7.16308508658e-03 7.12561826537e-03 7.10160482063e-03 7.10459522193e-03 + 7.14689010595e-03 7.23785699764e-03 7.38252390656e-03 7.58058258839e-03 7.82576853226e-03 8.10563303358e-03 + 8.40200942373e-03 8.69246386814e-03 8.95261635749e-03 9.15892896774e-03 9.29162040305e-03 9.33741418467e-03 + 9.29162040305e-03 9.15892896774e-03 8.95261635749e-03 8.69246386814e-03 8.40200942373e-03 8.10563303358e-03 + 7.82576853226e-03 7.58058258839e-03 7.38252390656e-03 7.23785699764e-03 7.14689010595e-03 7.10459522193e-03 + 8.38500711079e-03 8.53524112695e-03 8.66817035987e-03 8.76725594498e-03 8.82009872524e-03 8.82009872524e-03 + 8.76725594498e-03 8.66817035987e-03 8.53524112695e-03 8.38500711079e-03 8.23585736203e-03 8.10563303358e-03 + 8.00955236461e-03 7.95863052826e-03 7.95863052826e-03 8.00955236461e-03 8.10563303358e-03 8.23585736203e-03 + 8.38500711079e-03 8.53524112695e-03 8.66817035987e-03 8.76725594498e-03 8.82009872524e-03 8.82009872524e-03 + 8.76725594498e-03 8.66817035987e-03 8.53524112695e-03 8.38500711079e-03 8.23585736203e-03 8.10563303358e-03 + 8.00955236461e-03 7.95863052826e-03 7.95863052827e-03 8.00955236461e-03 8.10563303358e-03 8.23585736203e-03 + 1.01663421573e-02 1.04460621935e-02 1.06671499136e-02 1.08088949298e-02 1.08577130860e-02 1.08088949298e-02 + 1.06671499136e-02 1.04460621935e-02 1.01663421573e-02 9.85294674885e-03 9.53173661310e-03 9.22648243576e-03 + 8.95658363692e-03 8.73551184506e-03 8.57007132232e-03 8.46060891145e-03 8.40200942373e-03 8.38500711079e-03 + 8.39746782805e-03 8.42580807925e-03 8.45686847188e-03 8.47998103933e-03 8.48843476768e-03 8.47998103933e-03 + 8.45686847188e-03 8.42580807925e-03 8.39746782805e-03 8.38500711079e-03 8.40200942373e-03 8.46060891145e-03 + 8.57007132232e-03 8.73551184506e-03 8.95658363692e-03 9.22648243576e-03 9.53173661310e-03 9.85294674885e-03 + 1.25396406703e-02 1.29494247541e-02 1.32437842255e-02 1.33976732300e-02 1.33976732300e-02 1.32437842255e-02 + 1.29494247541e-02 1.25396406703e-02 1.20475550421e-02 1.15097880648e-02 1.09620544703e-02 1.04356792319e-02 + 9.95507847617e-03 9.53627070961e-03 9.18679124184e-03 8.90705726329e-03 8.69246386814e-03 8.53524112695e-03 + 8.42580807925e-03 8.35413904759e-03 8.31144312544e-03 8.29158854156e-03 8.29158854156e-03 8.31144312544e-03 + 8.35413904759e-03 8.42580807925e-03 8.53524112695e-03 8.69246386814e-03 8.90705726329e-03 9.18679124184e-03 + 9.53627070961e-03 9.95507847617e-03 1.04356792319e-02 1.09620544703e-02 1.15097880648e-02 1.20475550421e-02 + 1.56112881223e-02 1.61434902729e-02 1.64818809732e-02 1.65980023724e-02 1.64818809732e-02 1.61434902729e-02 + 1.56112881223e-02 1.49279448733e-02 1.41440793855e-02 1.33116675302e-02 1.24785638223e-02 1.16845233837e-02 + 1.09586567104e-02 1.03186231402e-02 9.77183223433e-03 9.31810768724e-03 8.95261635749e-03 8.66817035987e-03 + 8.45686847188e-03 8.31144312544e-03 8.22635918544e-03 8.19834740781e-03 8.22635918544e-03 8.31144312544e-03 + 8.45686847188e-03 8.66817035987e-03 8.95261635749e-03 9.31810768724e-03 9.77183223433e-03 1.03186231402e-02 + 1.09586567104e-02 1.16845233837e-02 1.24785638223e-02 1.33116675302e-02 1.41440793855e-02 1.49279448733e-02 + 1.94921954522e-02 2.01220876747e-02 2.04512222766e-02 2.04512222766e-02 2.01220876747e-02 1.94921954522e-02 + 1.86137801375e-02 1.75547637226e-02 1.63890080671e-02 1.51874137660e-02 1.40112393540e-02 1.29079014387e-02 + 1.19093466628e-02 1.10330000246e-02 1.02846446979e-02 9.66211927865e-03 9.15892896774e-03 8.76725594498e-03 + 8.47998103933e-03 8.29158854156e-03 8.19834740781e-03 8.19834740781e-03 8.29158854156e-03 8.47998103933e-03 + 8.76725594498e-03 9.15892896774e-03 9.66211927865e-03 1.02846446979e-02 1.10330000246e-02 1.19093466628e-02 + 1.29079014387e-02 1.40112393540e-02 1.51874137660e-02 1.63890080671e-02 1.75547637226e-02 1.86137801375e-02 + 2.42781130820e-02 2.49511167951e-02 2.51823253991e-02 2.49511167951e-02 2.42781130820e-02 2.32217587400e-02 + 2.18687619531e-02 2.03206914317e-02 1.86800926235e-02 1.70389543521e-02 1.54709928045e-02 1.40283418589e-02 + 1.27424344623e-02 1.16276251073e-02 1.06856809758e-02 9.91029781221e-03 9.29162040305e-03 8.82009872524e-03 + 8.48843476768e-03 8.29158854156e-03 8.22635918544e-03 8.29158854156e-03 8.48843476768e-03 8.82009872524e-03 + 9.29162040305e-03 9.91029781221e-03 1.06856809758e-02 1.16276251073e-02 1.27424344623e-02 1.40283418589e-02 + 1.54709928045e-02 1.70389543521e-02 1.86800926235e-02 2.03206914317e-02 2.18687619531e-02 2.32217587400e-02 + 3.00149219248e-02 3.06330408871e-02 3.06330408871e-02 3.00149219248e-02 2.88348357920e-02 2.71955666447e-02 + 2.52298202509e-02 2.30804654510e-02 2.08820531014e-02 1.87467470027e-02 1.67567114426e-02 1.49636867906e-02 + 1.33939588194e-02 1.20550163598e-02 1.09414577715e-02 1.00404664762e-02 9.33741418467e-03 8.82009872524e-03 + 8.47998103933e-03 8.31144312544e-03 8.31144312544e-03 8.47998103933e-03 8.82009872524e-03 9.33741418467e-03 + 1.00404664762e-02 1.09414577715e-02 1.20550163598e-02 1.33939588194e-02 1.49636867906e-02 1.67567114426e-02 + 1.87467470027e-02 2.08820531014e-02 2.30804654510e-02 2.52298202509e-02 2.71955666447e-02 2.88348357920e-02 + 3.66568505349e-02 3.70689589239e-02 3.66568505349e-02 3.54595415232e-02 3.35871770820e-02 3.12022017908e-02 + 2.84935612207e-02 2.56499234494e-02 2.28368095394e-02 2.01812628043e-02 1.77666865554e-02 1.56375665721e-02 + 1.38094745262e-02 1.22786655737e-02 1.10293847869e-02 1.00404664762e-02 9.29162040305e-03 8.76725594498e-03 + 8.45686847188e-03 8.35413904759e-03 8.45686847188e-03 8.76725594498e-03 9.29162040305e-03 1.00404664762e-02 + 1.10293847869e-02 1.22786655737e-02 1.38094745262e-02 1.56375665721e-02 1.77666865554e-02 2.01812628043e-02 + 2.28368095394e-02 2.56499234494e-02 2.84935612207e-02 3.12022017908e-02 3.35871770820e-02 3.54595415232e-02 + 4.40291518527e-02 4.40291518527e-02 4.29832635915e-02 4.09927131873e-02 3.82415861113e-02 3.49654910486e-02 + 3.14154606035e-02 2.78244998346e-02 2.43819637041e-02 2.12198093897e-02 1.84129279741e-02 1.59907282434e-02 + 1.39522993746e-02 1.22786655737e-02 1.09414577715e-02 9.91029781221e-03 9.15892896774e-03 8.66817035987e-03 + 8.42580807925e-03 8.42580807925e-03 8.66817035987e-03 9.15892896774e-03 9.91029781221e-03 1.09414577715e-02 + 1.22786655737e-02 1.39522993746e-02 1.59907282434e-02 1.84129279741e-02 2.12198093897e-02 2.43819637041e-02 + 2.78244998346e-02 3.14154606035e-02 3.49654910486e-02 3.82415861113e-02 4.09927131873e-02 4.29832635915e-02 + 5.18034033720e-02 5.11403130173e-02 4.92182336225e-02 4.62258246981e-02 4.24386109393e-02 3.81729635435e-02 + 3.37399765679e-02 2.94074293899e-02 2.53749373622e-02 2.17657781241e-02 1.86354478304e-02 1.59907282434e-02 + 1.38094745262e-02 1.20550163598e-02 1.06856809758e-02 9.66211927865e-03 8.95261635749e-03 8.53524112695e-03 + 8.39746782805e-03 8.53524112695e-03 8.95261635749e-03 9.66211927865e-03 1.06856809758e-02 1.20550163598e-02 + 1.38094745262e-02 1.59907282434e-02 1.86354478304e-02 2.17657781241e-02 2.53749373622e-02 2.94074293899e-02 + 3.37399765679e-02 3.81729635435e-02 4.24386109393e-02 4.62258246981e-02 4.92182336225e-02 5.11403130173e-02 + 5.94941697642e-02 5.78981879671e-02 5.48714786192e-02 5.07121410456e-02 4.57968161948e-02 4.05199675384e-02 + 3.52402742752e-02 3.02423286704e-02 2.57176061925e-02 2.17657781241e-02 1.84129279741e-02 1.56375665721e-02 + 1.33939588194e-02 1.16276251073e-02 1.02846446979e-02 9.31810768724e-03 8.69246386814e-03 8.38500711079e-03 + 8.38500711079e-03 8.69246386814e-03 9.31810768724e-03 1.02846446979e-02 1.16276251073e-02 1.33939588194e-02 + 1.56375665721e-02 1.84129279741e-02 2.17657781241e-02 2.57176061925e-02 3.02423286704e-02 3.52402742752e-02 + 4.05199675384e-02 4.57968161948e-02 5.07121410456e-02 5.48714786192e-02 5.78981879671e-02 5.94941697642e-02 + 6.64898780493e-02 6.37149803432e-02 5.94150808572e-02 5.40097122002e-02 4.79731106469e-02 4.17618689283e-02 + 3.57591480990e-02 3.02423286704e-02 2.53749373622e-02 2.12198093897e-02 1.77666865554e-02 1.49636867906e-02 + 1.27424344623e-02 1.10330000246e-02 9.77183223433e-03 8.90705726329e-03 8.40200942373e-03 8.23585736203e-03 + 8.40200942373e-03 8.90705726329e-03 9.77183223433e-03 1.10330000246e-02 1.27424344623e-02 1.49636867906e-02 + 1.77666865554e-02 2.12198093897e-02 2.53749373622e-02 3.02423286704e-02 3.57591480990e-02 4.17618689283e-02 + 4.79731106469e-02 5.40097122002e-02 5.94150808572e-02 6.37149803432e-02 6.64898780493e-02 6.74494907981e-02 + 7.21264918488e-02 6.80033074139e-02 6.23688231248e-02 5.57595749637e-02 4.87273692032e-02 4.17618689283e-02 + 3.52402742752e-02 2.94074293899e-02 2.43819637041e-02 2.01812628043e-02 1.67567114426e-02 1.40283418589e-02 + 1.19093466628e-02 1.03186231402e-02 9.18679124184e-03 8.46060891145e-03 8.10563303358e-03 8.10563303358e-03 + 8.46060891145e-03 9.18679124184e-03 1.03186231402e-02 1.19093466628e-02 1.40283418589e-02 1.67567114426e-02 + 2.01812628043e-02 2.43819637041e-02 2.94074293899e-02 3.52402742752e-02 4.17618689283e-02 4.87273692032e-02 + 5.57595749637e-02 6.23688231248e-02 6.80033074139e-02 7.21264918488e-02 7.43082663472e-02 7.43082663472e-02 + 7.57970302390e-02 7.02831021338e-02 6.33941825467e-02 5.57595749637e-02 4.79731106469e-02 4.05199675384e-02 + 3.37399765679e-02 2.78244998346e-02 2.28368095394e-02 1.87467470027e-02 1.54709928045e-02 1.29079014387e-02 + 1.09586567104e-02 9.53627070961e-03 8.57007132232e-03 8.00955236461e-03 7.82576853226e-03 8.00955236461e-03 + 8.57007132232e-03 9.53627070961e-03 1.09586567104e-02 1.29079014387e-02 1.54709928045e-02 1.87467470027e-02 + 2.28368095394e-02 2.78244998346e-02 3.37399765679e-02 4.05199675384e-02 4.79731106469e-02 5.57595749637e-02 + 6.33941825467e-02 7.02831021338e-02 7.57970302390e-02 7.93709590427e-02 8.06097207709e-02 7.93709590427e-02 + 7.70723261920e-02 7.02831021338e-02 6.23688231248e-02 5.40097122002e-02 4.57968161948e-02 3.81729635435e-02 + 3.14154606035e-02 2.56499234494e-02 2.08820531014e-02 1.70389543521e-02 1.40112393540e-02 1.16845233837e-02 + 9.95507847617e-03 8.73551184506e-03 7.95863052826e-03 7.58058258839e-03 7.58058258839e-03 7.95863052826e-03 + 8.73551184506e-03 9.95507847617e-03 1.16845233837e-02 1.40112393540e-02 1.70389543521e-02 2.08820531014e-02 + 2.56499234494e-02 3.14154606035e-02 3.81729635435e-02 4.57968161948e-02 5.40097122002e-02 6.23688231248e-02 + 7.02831021338e-02 7.70723261920e-02 8.20645507484e-02 8.47143937707e-02 8.47143937707e-02 8.20645507484e-02 + 7.57970302390e-02 6.80033074139e-02 5.94150808572e-02 5.07121410456e-02 4.24386109393e-02 3.49654910486e-02 + 2.84935612207e-02 2.30804654510e-02 1.86800926235e-02 1.51874137660e-02 1.24785638223e-02 1.04356792319e-02 + 8.95658363692e-03 7.95863052826e-03 7.38252390656e-03 7.19410390186e-03 7.38252390656e-03 7.95863052826e-03 + 8.95658363692e-03 1.04356792319e-02 1.24785638223e-02 1.51874137660e-02 1.86800926235e-02 2.30804654510e-02 + 2.84935612207e-02 3.49654910486e-02 4.24386109393e-02 5.07121410456e-02 5.94150808572e-02 6.80033074139e-02 + 7.57970302390e-02 8.20645507484e-02 8.61408122915e-02 8.75562567048e-02 8.61408122915e-02 8.20645507484e-02 + 7.21264918488e-02 6.37149803432e-02 5.48714786192e-02 4.62258246981e-02 3.82415861113e-02 3.12022017908e-02 + 2.52298202509e-02 2.03206914317e-02 1.63890080671e-02 1.33116675302e-02 1.09620544703e-02 9.22648243576e-03 + 8.00955236461e-03 7.23785699764e-03 6.86339437793e-03 6.86339437793e-03 7.23785699764e-03 8.00955236461e-03 + 9.22648243576e-03 1.09620544703e-02 1.33116675302e-02 1.63890080671e-02 2.03206914317e-02 2.52298202509e-02 + 3.12022017908e-02 3.82415861113e-02 4.62258246981e-02 5.48714786192e-02 6.37149803432e-02 7.21264918488e-02 + 7.93709590427e-02 8.47143937707e-02 8.75562567048e-02 8.75562567048e-02 8.47143937707e-02 7.93709590427e-02 + 6.64898780493e-02 5.78981879671e-02 4.92182336225e-02 4.09927131873e-02 3.35871770820e-02 2.71955666447e-02 + 2.18687619531e-02 1.75547637226e-02 1.41440793855e-02 1.15097880648e-02 9.53173661310e-03 8.10563303358e-03 + 7.14689010595e-03 6.59479473082e-03 6.41444748147e-03 6.59479473082e-03 7.14689010595e-03 8.10563303358e-03 + 9.53173661310e-03 1.15097880648e-02 1.41440793855e-02 1.75547637226e-02 2.18687619531e-02 2.71955666447e-02 + 3.35871770820e-02 4.09927131873e-02 4.92182336225e-02 5.78981879671e-02 6.64898780493e-02 7.43082663472e-02 + 8.06097207709e-02 8.47143937707e-02 8.61408122915e-02 8.47143937707e-02 8.06097207709e-02 7.43082663472e-02 + 5.94941697642e-02 5.11403130173e-02 4.29832635915e-02 3.54595415232e-02 2.88348357920e-02 2.32217587400e-02 + 1.86137801375e-02 1.49279448733e-02 1.20475550421e-02 9.85294674885e-03 8.23585736203e-03 7.10459522193e-03 + 6.38840491477e-03 6.04118457084e-03 6.04118457084e-03 6.38840491477e-03 7.10459522193e-03 8.23585736203e-03 + 9.85294674885e-03 1.20475550421e-02 1.49279448733e-02 1.86137801375e-02 2.32217587400e-02 2.88348357920e-02 + 3.54595415232e-02 4.29832635915e-02 5.11403130173e-02 5.94941697642e-02 6.74494907981e-02 7.43082663472e-02 + 7.93709590427e-02 8.20645507484e-02 8.20645507484e-02 7.93709590427e-02 7.43082663472e-02 6.74494907981e-02 + 4.57409612273e-02 3.83718132369e-02 3.16041856284e-02 2.56657154446e-02 2.06439962171e-02 1.65234811342e-02 + 1.32272933414e-02 1.06524671204e-02 8.69246386814e-03 7.24904282964e-03 6.23916674188e-03 5.59978938003e-03 + 5.28994524639e-03 5.28994524639e-03 5.59978938003e-03 6.23916674188e-03 7.24904282964e-03 8.69246386814e-03 + 1.06524671204e-02 1.32272933414e-02 1.65234811342e-02 2.06439962171e-02 2.56657154446e-02 3.16041856284e-02 + 3.83718132369e-02 4.57409612273e-02 5.33236907840e-02 6.05796981280e-02 6.68641206041e-02 7.15201290633e-02 + 7.40032629540e-02 7.40032629540e-02 7.15201290633e-02 6.68641206041e-02 6.05796981280e-02 5.33236907840e-02 + 3.83718132369e-02 3.19731919657e-02 2.62153172241e-02 2.12413612776e-02 1.70848695603e-02 1.37059602390e-02 + 1.10259974674e-02 8.95261635749e-03 7.39443450458e-03 6.26978037715e-03 5.51272438194e-03 5.07652462266e-03 + 4.93405372394e-03 5.07652462266e-03 5.51272438194e-03 6.26978037715e-03 7.39443450458e-03 8.95261635749e-03 + 1.10259974674e-02 1.37059602390e-02 1.70848695603e-02 2.12413612776e-02 2.62153172241e-02 3.19731919657e-02 + 3.83718132369e-02 4.51323632879e-02 5.18355302331e-02 5.79474348197e-02 6.28828729732e-02 6.61022866145e-02 + 6.72218662363e-02 6.61022866145e-02 6.28828729732e-02 5.79474348197e-02 5.18355302331e-02 4.51323632879e-02 + 3.16041856284e-02 2.62153172241e-02 2.14468462049e-02 1.73786828448e-02 1.40109856905e-02 1.12951380995e-02 + 9.15892896774e-03 7.52314503521e-03 6.31209415558e-03 5.46093720174e-03 4.92029966810e-03 4.65785937656e-03 + 4.65785937656e-03 4.92029966810e-03 5.46093720174e-03 6.31209415558e-03 7.52314503521e-03 9.15892896774e-03 + 1.12951380995e-02 1.40109856905e-02 1.73786828448e-02 2.14468462049e-02 2.62153172241e-02 3.16041856284e-02 + 3.74259862301e-02 4.33721592307e-02 4.90231496620e-02 5.38883507401e-02 5.74762428735e-02 5.93841418824e-02 + 5.93841418824e-02 5.74762428735e-02 5.38883507401e-02 4.90231496620e-02 4.33721592307e-02 3.74259862301e-02 + 2.56657154446e-02 2.12413612776e-02 1.73786828448e-02 1.41157952825e-02 1.14361707830e-02 9.29162040305e-03 + 7.61927184895e-03 6.35335851926e-03 5.43377044817e-03 4.81172327806e-03 4.45230019628e-03 4.33477840900e-03 + 4.45230019628e-03 4.81172327806e-03 5.43377044817e-03 6.35335851926e-03 7.61927184895e-03 9.29162040305e-03 + 1.14361707830e-02 1.41157952825e-02 1.73786828448e-02 2.12413612776e-02 2.56657154446e-02 3.05340710560e-02 + 3.56312088557e-02 4.06430475235e-02 4.51788789706e-02 4.88190878681e-02 5.11831265828e-02 5.20033431247e-02 + 5.11831265828e-02 4.88190878681e-02 4.51788789706e-02 4.06430475235e-02 3.56312088557e-02 3.05340710560e-02 + 2.06439962171e-02 1.70848695603e-02 1.40109856905e-02 1.14361707830e-02 9.33741418467e-03 7.67065297497e-03 + 6.38291972351e-03 5.42174879265e-03 4.74176747355e-03 4.30805835198e-03 4.09713024865e-03 4.09713024865e-03 + 4.30805835198e-03 4.74176747355e-03 5.42174879265e-03 6.38291972351e-03 7.67065297497e-03 9.33741418467e-03 + 1.14361707830e-02 1.40109856905e-02 1.70848695603e-02 2.06439962171e-02 2.46187421852e-02 2.88661050079e-02 + 3.31615306069e-02 3.72078996967e-02 4.06654278454e-02 4.32002938784e-02 4.45431970579e-02 4.45431970579e-02 + 4.32002938784e-02 4.06654278454e-02 3.72078996967e-02 3.31615306069e-02 2.88661050079e-02 2.46187421852e-02 + 1.65234811342e-02 1.37059602390e-02 1.12951380995e-02 9.29162040305e-03 7.67065297497e-03 6.39361872594e-03 + 5.41768978229e-03 4.70304044562e-03 4.21692866215e-03 3.93522801758e-03 3.84302280796e-03 3.93522801758e-03 + 4.21692866215e-03 4.70304044562e-03 5.41768978229e-03 6.39361872594e-03 7.67065297497e-03 9.29162040305e-03 + 1.12951380995e-02 1.37059602390e-02 1.65234811342e-02 1.97084075068e-02 2.31688478126e-02 2.67502344749e-02 + 3.02357338101e-02 3.33624200108e-02 3.58537824974e-02 3.74634706166e-02 3.80204685260e-02 3.74634706166e-02 + 3.58537824974e-02 3.33624200108e-02 3.02357338101e-02 2.67502344749e-02 2.31688478126e-02 1.97084075068e-02 + 1.32272933414e-02 1.10259974674e-02 9.15892896774e-03 7.61927184895e-03 6.38291972351e-03 5.41768978229e-03 + 4.69069423954e-03 4.17292027232e-03 3.84131375804e-03 3.67971968314e-03 3.67971968314e-03 3.84131375804e-03 + 4.17292027232e-03 4.69069423954e-03 5.41768978229e-03 6.38291972351e-03 7.61927184895e-03 9.15892896774e-03 + 1.10259974674e-02 1.32272933414e-02 1.57423428102e-02 1.85132658939e-02 2.14361295219e-02 2.43576039836e-02 + 2.70818268649e-02 2.93901320501e-02 3.10717223250e-02 3.19590319446e-02 3.19590319446e-02 3.10717223250e-02 + 2.93901320501e-02 2.70818268649e-02 2.43576039836e-02 2.14361295219e-02 1.85132658939e-02 1.57423428102e-02 + 1.06524671204e-02 8.95261635749e-03 7.52314503521e-03 6.35335851926e-03 5.42174879265e-03 4.70304044562e-03 + 4.17292027232e-03 3.81054695208e-03 3.59990872378e-03 3.53085792774e-03 3.59990872378e-03 3.81054695208e-03 + 4.17292027232e-03 4.70304044562e-03 5.42174879265e-03 6.35335851926e-03 7.52314503521e-03 8.95261635749e-03 + 1.06524671204e-02 1.26143883181e-02 1.48031251671e-02 1.71497889118e-02 1.95479913088e-02 2.18557815330e-02 + 2.39063871143e-02 2.55281844546e-02 2.65706573512e-02 2.69304328597e-02 2.65706573512e-02 2.55281844546e-02 + 2.39063871143e-02 2.18557815330e-02 1.95479913088e-02 1.71497889118e-02 1.48031251671e-02 1.26143883181e-02 + 8.69246386814e-03 7.39443450458e-03 6.31209415558e-03 5.43377044817e-03 4.74176747355e-03 4.21692866215e-03 + 3.84131375804e-03 3.59990872378e-03 3.48198055848e-03 3.48198055848e-03 3.59990872378e-03 3.84131375804e-03 + 4.21692866215e-03 4.74176747355e-03 5.43377044817e-03 6.31209415558e-03 7.39443450458e-03 8.69246386814e-03 + 1.02054916185e-02 1.19137265332e-02 1.37726366090e-02 1.57094271493e-02 1.76229803621e-02 1.93892705934e-02 + 2.08735527936e-02 2.19482820950e-02 2.25132701769e-02 2.25132701769e-02 2.19482820950e-02 2.08735527936e-02 + 1.93892705934e-02 1.76229803621e-02 1.57094271493e-02 1.37726366090e-02 1.19137265332e-02 1.02054916185e-02 + 7.24904282964e-03 6.26978037715e-03 5.46093720174e-03 4.81172327806e-03 4.30805835198e-03 3.93522801758e-03 + 3.67971968314e-03 3.53085792774e-03 3.48198055848e-03 3.53085792774e-03 3.67971968314e-03 3.93522801758e-03 + 4.30805835198e-03 4.81172327806e-03 5.46093720174e-03 6.26978037715e-03 7.24904282964e-03 8.40200942373e-03 + 9.71912104775e-03 1.11729588764e-02 1.27148275869e-02 1.42737851127e-02 1.57591868798e-02 1.70678712692e-02 + 1.80960146721e-02 1.87538902948e-02 1.89804120902e-02 1.87538902948e-02 1.80960146721e-02 1.70678712692e-02 + 1.57591868798e-02 1.42737851127e-02 1.27148275869e-02 1.11729588764e-02 9.71912104775e-03 8.40200942373e-03 + 6.23916674188e-03 5.51272438194e-03 4.92029966810e-03 4.45230019628e-03 4.09713024865e-03 3.84302280796e-03 + 3.67971968314e-03 3.59990872378e-03 3.59990872378e-03 3.67971968314e-03 3.84302280796e-03 4.09713024865e-03 + 4.45230019628e-03 4.92029966810e-03 5.51272438194e-03 6.23916674188e-03 7.10459522193e-03 8.10563303358e-03 + 9.22648243576e-03 1.04356792319e-02 1.16845233837e-02 1.29079014387e-02 1.40283418589e-02 1.49636867906e-02 + 1.56375665721e-02 1.59907282434e-02 1.59907282434e-02 1.56375665721e-02 1.49636867906e-02 1.40283418589e-02 + 1.29079014387e-02 1.16845233837e-02 1.04356792319e-02 9.22648243576e-03 8.10563303358e-03 7.10459522193e-03 + 5.59978938003e-03 5.07652462266e-03 4.65785937656e-03 4.33477840900e-03 4.09713024865e-03 3.93522801758e-03 + 3.84131375804e-03 3.81054695208e-03 3.84131375804e-03 3.93522801758e-03 4.09713024865e-03 4.33477840900e-03 + 4.65785937656e-03 5.07652462266e-03 5.59978938003e-03 6.23361812745e-03 6.97836085285e-03 7.82576853226e-03 + 8.75631776595e-03 9.73748464183e-03 1.07235056315e-02 1.16573532374e-02 1.24755048074e-02 1.31152359900e-02 + 1.35231772103e-02 1.36633879542e-02 1.35231772103e-02 1.31152359900e-02 1.24755048074e-02 1.16573532374e-02 + 1.07235056315e-02 9.73748464183e-03 8.75631776595e-03 7.82576853226e-03 6.97836085285e-03 6.23361812745e-03 + 5.28994524639e-03 4.93405372394e-03 4.65785937656e-03 4.45230019628e-03 4.30805835198e-03 4.21692866215e-03 + 4.17292027232e-03 4.17292027232e-03 4.21692866215e-03 4.30805835198e-03 4.45230019628e-03 4.65785937656e-03 + 4.93405372394e-03 5.28994524639e-03 5.73268604942e-03 6.26545793635e-03 6.88519888788e-03 7.58058258839e-03 + 8.33057919998e-03 9.10381322670e-03 9.85925299562e-03 1.05489279259e-02 1.11228159589e-02 1.15351431719e-02 + 1.17508350709e-02 1.17508350709e-02 1.15351431719e-02 1.11228159589e-02 1.05489279259e-02 9.85925299562e-03 + 9.10381322670e-03 8.33057919998e-03 7.58058258839e-03 6.88519888788e-03 6.26545793635e-03 5.73268604942e-03 + 5.28994524639e-03 5.07652462266e-03 4.92029966810e-03 4.81172327806e-03 4.74176747355e-03 4.70304044562e-03 + 4.69069423954e-03 4.70304044562e-03 4.74176747355e-03 4.81172327806e-03 4.92029966810e-03 5.07652462266e-03 + 5.28994524639e-03 5.56920678348e-03 5.92021996667e-03 6.34416762186e-03 6.83583874198e-03 7.38252390656e-03 + 7.96341795569e-03 8.54973346172e-03 9.10613117226e-03 9.59384043225e-03 9.97511028176e-03 1.02181471415e-02 + 1.03016601350e-02 1.02181471415e-02 9.97511028176e-03 9.59384043225e-03 9.10613117226e-03 8.54973346172e-03 + 7.96341795569e-03 7.38252390656e-03 6.83583874198e-03 6.34416762186e-03 5.92021996667e-03 5.56920678348e-03 + 5.59978938003e-03 5.51272438194e-03 5.46093720174e-03 5.43377044817e-03 5.42174879265e-03 5.41768978229e-03 + 5.41768978229e-03 5.42174879265e-03 5.43377044817e-03 5.46093720174e-03 5.51272438194e-03 5.59978938003e-03 + 5.73268604942e-03 5.92021996667e-03 6.16759269815e-03 6.47483593539e-03 6.83583874198e-03 7.23785699764e-03 + 7.66146344666e-03 8.08133005705e-03 8.46823559623e-03 8.79214216133e-03 9.02578945364e-03 9.14830218340e-03 + 9.14830218340e-03 9.02578945364e-03 8.79214216133e-03 8.46823559623e-03 8.08133005705e-03 7.66146344666e-03 + 7.23785699764e-03 6.83583874198e-03 6.47483593539e-03 6.16759269815e-03 5.92021996667e-03 5.73268604942e-03 + 6.23916674188e-03 6.26978037715e-03 6.31209415558e-03 6.35335851926e-03 6.38291972351e-03 6.39361872594e-03 + 6.38291972351e-03 6.35335851926e-03 6.31209415558e-03 6.26978037715e-03 6.23916674188e-03 6.23361812745e-03 + 6.26545793635e-03 6.34416762186e-03 6.47483593539e-03 6.65719946009e-03 6.88519888788e-03 7.14689010595e-03 + 7.42492384580e-03 7.69793885145e-03 7.94279014126e-03 8.13716815266e-03 8.26229038338e-03 8.30549434438e-03 + 8.26229038338e-03 8.13716815266e-03 7.94279014126e-03 7.69793885145e-03 7.42492384580e-03 7.14689010595e-03 + 6.88519888788e-03 6.65719946009e-03 6.47483593539e-03 6.34416762186e-03 6.26545793635e-03 6.23361812745e-03 + 7.24904282964e-03 7.39443450458e-03 7.52314503521e-03 7.61927184895e-03 7.67065297497e-03 7.67065297497e-03 + 7.61927184895e-03 7.52314503521e-03 7.39443450458e-03 7.24904282964e-03 7.10459522193e-03 6.97836085285e-03 + 6.88519888788e-03 6.83583874198e-03 6.83583874198e-03 6.88519888788e-03 6.97836085285e-03 7.10459522193e-03 + 7.24904282964e-03 7.39443450458e-03 7.52314503521e-03 7.61927184895e-03 7.67065297497e-03 7.67065297497e-03 + 7.61927184895e-03 7.52314503521e-03 7.39443450458e-03 7.24904282964e-03 7.10459522193e-03 6.97836085285e-03 + 6.88519888788e-03 6.83583874198e-03 6.83583874198e-03 6.88519888788e-03 6.97836085285e-03 7.10459522193e-03 + 8.69246386814e-03 8.95261635749e-03 9.15892896774e-03 9.29162040305e-03 9.33741418467e-03 9.29162040305e-03 + 9.15892896774e-03 8.95261635749e-03 8.69246386814e-03 8.40200942373e-03 8.10563303358e-03 7.82576853226e-03 + 7.58058258839e-03 7.38252390656e-03 7.23785699764e-03 7.14689010595e-03 7.10459522193e-03 7.10160482063e-03 + 7.12561826537e-03 7.16308508658e-03 7.20097316500e-03 7.22847713667e-03 7.23847314555e-03 7.22847713667e-03 + 7.20097316500e-03 7.16308508658e-03 7.12561826537e-03 7.10160482063e-03 7.10459522193e-03 7.14689010595e-03 + 7.23785699764e-03 7.38252390656e-03 7.58058258839e-03 7.82576853226e-03 8.10563303358e-03 8.40200942373e-03 + 1.06524671204e-02 1.10259974674e-02 1.12951380995e-02 1.14361707830e-02 1.14361707830e-02 1.12951380995e-02 + 1.10259974674e-02 1.06524671204e-02 1.02054916185e-02 9.71912104775e-03 9.22648243576e-03 8.75631776595e-03 + 8.33057919998e-03 7.96341795569e-03 7.66146344666e-03 7.42492384580e-03 7.24904282964e-03 7.12561826537e-03 + 7.04448483440e-03 6.99504538611e-03 6.96786738821e-03 6.95605972443e-03 6.95605972443e-03 6.96786738821e-03 + 6.99504538611e-03 7.04448483440e-03 7.12561826537e-03 7.24904282964e-03 7.42492384580e-03 7.66146344666e-03 + 7.96341795569e-03 8.33057919998e-03 8.75631776595e-03 9.22648243576e-03 9.71912104775e-03 1.02054916185e-02 + 1.32272933414e-02 1.37059602390e-02 1.40109856905e-02 1.41157952825e-02 1.40109856905e-02 1.37059602390e-02 + 1.32272933414e-02 1.26143883181e-02 1.19137265332e-02 1.11729588764e-02 1.04356792319e-02 9.73748464183e-03 + 9.10381322670e-03 8.54973346172e-03 8.08133005705e-03 7.69793885145e-03 7.39443450458e-03 7.16308508658e-03 + 6.99504538611e-03 6.88181758770e-03 6.81664387654e-03 6.79537428806e-03 6.81664387654e-03 6.88181758770e-03 + 6.99504538611e-03 7.16308508658e-03 7.39443450458e-03 7.69793885145e-03 8.08133005705e-03 8.54973346172e-03 + 9.10381322670e-03 9.73748464183e-03 1.04356792319e-02 1.11729588764e-02 1.19137265332e-02 1.26143883181e-02 + 1.65234811342e-02 1.70848695603e-02 1.73786828448e-02 1.73786828448e-02 1.70848695603e-02 1.65234811342e-02 + 1.57423428102e-02 1.48031251671e-02 1.37726366090e-02 1.27148275869e-02 1.16845233837e-02 1.07235056315e-02 + 9.85925299562e-03 9.10613117226e-03 8.46823559623e-03 7.94279014126e-03 7.52314503521e-03 7.20097316500e-03 + 6.96786738821e-03 6.81664387654e-03 6.74228118806e-03 6.74228118806e-03 6.81664387654e-03 6.96786738821e-03 + 7.20097316500e-03 7.52314503521e-03 7.94279014126e-03 8.46823559623e-03 9.10613117226e-03 9.85925299562e-03 + 1.07235056315e-02 1.16845233837e-02 1.27148275869e-02 1.37726366090e-02 1.48031251671e-02 1.57423428102e-02 + 2.06439962171e-02 2.12413612776e-02 2.14468462049e-02 2.12413612776e-02 2.06439962171e-02 1.97084075068e-02 + 1.85132658939e-02 1.71497889118e-02 1.57094271493e-02 1.42737851127e-02 1.29079014387e-02 1.16573532374e-02 + 1.05489279259e-02 9.59384043225e-03 8.79214216133e-03 8.13716815266e-03 7.61927184895e-03 7.22847713667e-03 + 6.95605972443e-03 6.79537428806e-03 6.74228118806e-03 6.79537428806e-03 6.95605972443e-03 7.22847713667e-03 + 7.61927184895e-03 8.13716815266e-03 8.79214216133e-03 9.59384043225e-03 1.05489279259e-02 1.16573532374e-02 + 1.29079014387e-02 1.42737851127e-02 1.57094271493e-02 1.71497889118e-02 1.85132658939e-02 1.97084075068e-02 + 2.56657154446e-02 2.62153172241e-02 2.62153172241e-02 2.56657154446e-02 2.46187421852e-02 2.31688478126e-02 + 2.14361295219e-02 1.95479913088e-02 1.76229803621e-02 1.57591868798e-02 1.40283418589e-02 1.24755048074e-02 + 1.11228159589e-02 9.97511028176e-03 9.02578945364e-03 8.26229038338e-03 7.67065297497e-03 7.23847314555e-03 + 6.95605972443e-03 6.81664387654e-03 6.81664387654e-03 6.95605972443e-03 7.23847314555e-03 7.67065297497e-03 + 8.26229038338e-03 9.02578945364e-03 9.97511028176e-03 1.11228159589e-02 1.24755048074e-02 1.40283418589e-02 + 1.57591868798e-02 1.76229803621e-02 1.95479913088e-02 2.14361295219e-02 2.31688478126e-02 2.46187421852e-02 + 3.16041856284e-02 3.19731919657e-02 3.16041856284e-02 3.05340710560e-02 2.88661050079e-02 2.67502344749e-02 + 2.43576039836e-02 2.18557815330e-02 1.93892705934e-02 1.70678712692e-02 1.49636867906e-02 1.31152359900e-02 + 1.15351431719e-02 1.02181471415e-02 9.14830218340e-03 8.30549434438e-03 7.67065297497e-03 7.22847713667e-03 + 6.96786738821e-03 6.88181758770e-03 6.96786738821e-03 7.22847713667e-03 7.67065297497e-03 8.30549434438e-03 + 9.14830218340e-03 1.02181471415e-02 1.15351431719e-02 1.31152359900e-02 1.49636867906e-02 1.70678712692e-02 + 1.93892705934e-02 2.18557815330e-02 2.43576039836e-02 2.67502344749e-02 2.88661050079e-02 3.05340710560e-02 + 3.83718132369e-02 3.83718132369e-02 3.74259862301e-02 3.56312088557e-02 3.31615306069e-02 3.02357338101e-02 + 2.70818268649e-02 2.39063871143e-02 2.08735527936e-02 1.80960146721e-02 1.56375665721e-02 1.35231772103e-02 + 1.17508350709e-02 1.03016601350e-02 9.14830218340e-03 8.26229038338e-03 7.61927184895e-03 7.20097316500e-03 + 6.99504538611e-03 6.99504538611e-03 7.20097316500e-03 7.61927184895e-03 8.26229038338e-03 9.14830218340e-03 + 1.03016601350e-02 1.17508350709e-02 1.35231772103e-02 1.56375665721e-02 1.80960146721e-02 2.08735527936e-02 + 2.39063871143e-02 2.70818268649e-02 3.02357338101e-02 3.31615306069e-02 3.56312088557e-02 3.74259862301e-02 + 4.57409612273e-02 4.51323632879e-02 4.33721592307e-02 4.06430475235e-02 3.72078996967e-02 3.33624200108e-02 + 2.93901320501e-02 2.55281844546e-02 2.19482820950e-02 1.87538902948e-02 1.59907282434e-02 1.36633879542e-02 + 1.17508350709e-02 1.02181471415e-02 9.02578945364e-03 8.13716815266e-03 7.52314503521e-03 7.16308508658e-03 + 7.04448483440e-03 7.16308508658e-03 7.52314503521e-03 8.13716815266e-03 9.02578945364e-03 1.02181471415e-02 + 1.17508350709e-02 1.36633879542e-02 1.59907282434e-02 1.87538902948e-02 2.19482820950e-02 2.55281844546e-02 + 2.93901320501e-02 3.33624200108e-02 3.72078996967e-02 4.06430475235e-02 4.33721592307e-02 4.51323632879e-02 + 5.33236907840e-02 5.18355302331e-02 4.90231496620e-02 4.51788789706e-02 4.06654278454e-02 3.58537824974e-02 + 3.10717223250e-02 2.65706573512e-02 2.25132701769e-02 1.89804120902e-02 1.59907282434e-02 1.35231772103e-02 + 1.15351431719e-02 9.97511028176e-03 8.79214216133e-03 7.94279014126e-03 7.39443450458e-03 7.12561826537e-03 + 7.12561826537e-03 7.39443450458e-03 7.94279014126e-03 8.79214216133e-03 9.97511028176e-03 1.15351431719e-02 + 1.35231772103e-02 1.59907282434e-02 1.89804120902e-02 2.25132701769e-02 2.65706573512e-02 3.10717223250e-02 + 3.58537824974e-02 4.06654278454e-02 4.51788789706e-02 4.90231496620e-02 5.18355302331e-02 5.33236907840e-02 + 6.05796981280e-02 5.79474348197e-02 5.38883507401e-02 4.88190878681e-02 4.32002938784e-02 3.74634706166e-02 + 3.19590319446e-02 2.69304328597e-02 2.25132701769e-02 1.87538902948e-02 1.56375665721e-02 1.31152359900e-02 + 1.11228159589e-02 9.59384043225e-03 8.46823559623e-03 7.69793885145e-03 7.24904282964e-03 7.10160482063e-03 + 7.24904282964e-03 7.69793885145e-03 8.46823559623e-03 9.59384043225e-03 1.11228159589e-02 1.31152359900e-02 + 1.56375665721e-02 1.87538902948e-02 2.25132701769e-02 2.69304328597e-02 3.19590319446e-02 3.74634706166e-02 + 4.32002938784e-02 4.88190878681e-02 5.38883507401e-02 5.79474348197e-02 6.05796981280e-02 6.14923433640e-02 + 6.68641206041e-02 6.28828729732e-02 5.74762428735e-02 5.11831265828e-02 4.45431970579e-02 3.80204685260e-02 + 3.19590319446e-02 2.65706573512e-02 2.19482820950e-02 1.80960146721e-02 1.49636867906e-02 1.24755048074e-02 + 1.05489279259e-02 9.10613117226e-03 8.08133005705e-03 7.42492384580e-03 7.10459522193e-03 7.10459522193e-03 + 7.42492384580e-03 8.08133005705e-03 9.10613117226e-03 1.05489279259e-02 1.24755048074e-02 1.49636867906e-02 + 1.80960146721e-02 2.19482820950e-02 2.65706573512e-02 3.19590319446e-02 3.80204685260e-02 4.45431970579e-02 + 5.11831265828e-02 5.74762428735e-02 6.28828729732e-02 6.68641206041e-02 6.89793219251e-02 6.89793219251e-02 + 7.15201290633e-02 6.61022866145e-02 5.93841418824e-02 5.20033431247e-02 4.45431970579e-02 3.74634706166e-02 + 3.10717223250e-02 2.55281844546e-02 2.08735527936e-02 1.70678712692e-02 1.40283418589e-02 1.16573532374e-02 + 9.85925299562e-03 8.54973346172e-03 7.66146344666e-03 7.14689010595e-03 6.97836085285e-03 7.14689010595e-03 + 7.66146344666e-03 8.54973346172e-03 9.85925299562e-03 1.16573532374e-02 1.40283418589e-02 1.70678712692e-02 + 2.08735527936e-02 2.55281844546e-02 3.10717223250e-02 3.74634706166e-02 4.45431970579e-02 5.20033431247e-02 + 5.93841418824e-02 6.61022866145e-02 7.15201290633e-02 7.50510418428e-02 7.62783857555e-02 7.50510418428e-02 + 7.40032629540e-02 6.72218662363e-02 5.93841418824e-02 5.11831265828e-02 4.32002938784e-02 3.58537824974e-02 + 2.93901320501e-02 2.39063871143e-02 1.93892705934e-02 1.57591868798e-02 1.29079014387e-02 1.07235056315e-02 + 9.10381322670e-03 7.96341795569e-03 7.23785699764e-03 6.88519888788e-03 6.88519888788e-03 7.23785699764e-03 + 7.96341795569e-03 9.10381322670e-03 1.07235056315e-02 1.29079014387e-02 1.57591868798e-02 1.93892705934e-02 + 2.39063871143e-02 2.93901320501e-02 3.58537824974e-02 4.32002938784e-02 5.11831265828e-02 5.93841418824e-02 + 6.72218662363e-02 7.40032629540e-02 7.90236437036e-02 8.16998180862e-02 8.16998180862e-02 7.90236437036e-02 + 7.40032629540e-02 6.61022866145e-02 5.74762428735e-02 4.88190878681e-02 4.06654278454e-02 3.33624200108e-02 + 2.70818268649e-02 2.18557815330e-02 1.76229803621e-02 1.42737851127e-02 1.16845233837e-02 9.73748464183e-03 + 8.33057919998e-03 7.38252390656e-03 6.83583874198e-03 6.65719946009e-03 6.83583874198e-03 7.38252390656e-03 + 8.33057919998e-03 9.73748464183e-03 1.16845233837e-02 1.42737851127e-02 1.76229803621e-02 2.18557815330e-02 + 2.70818268649e-02 3.33624200108e-02 4.06654278454e-02 4.88190878681e-02 5.74762428735e-02 6.61022866145e-02 + 7.40032629540e-02 8.04073084192e-02 8.45957298814e-02 8.60542685404e-02 8.45957298814e-02 8.04073084192e-02 + 7.15201290633e-02 6.28828729732e-02 5.38883507401e-02 4.51788789706e-02 3.72078996967e-02 3.02357338101e-02 + 2.43576039836e-02 1.95479913088e-02 1.57094271493e-02 1.27148275869e-02 1.04356792319e-02 8.75631776595e-03 + 7.58058258839e-03 6.83583874198e-03 6.47483593539e-03 6.47483593539e-03 6.83583874198e-03 7.58058258839e-03 + 8.75631776595e-03 1.04356792319e-02 1.27148275869e-02 1.57094271493e-02 1.95479913088e-02 2.43576039836e-02 + 3.02357338101e-02 3.72078996967e-02 4.51788789706e-02 5.38883507401e-02 6.28828729732e-02 7.15201290633e-02 + 7.90236437036e-02 8.45957298814e-02 8.75716967614e-02 8.75716967614e-02 8.45957298814e-02 7.90236437036e-02 + 6.68641206041e-02 5.79474348197e-02 4.90231496620e-02 4.06430475235e-02 3.31615306069e-02 2.67502344749e-02 + 2.14361295219e-02 1.71497889118e-02 1.37726366090e-02 1.11729588764e-02 9.22648243576e-03 7.82576853226e-03 + 6.88519888788e-03 6.34416762186e-03 6.16759269815e-03 6.34416762186e-03 6.88519888788e-03 7.82576853226e-03 + 9.22648243576e-03 1.11729588764e-02 1.37726366090e-02 1.71497889118e-02 2.14361295219e-02 2.67502344749e-02 + 3.31615306069e-02 4.06430475235e-02 4.90231496620e-02 5.79474348197e-02 6.68641206041e-02 7.50510418428e-02 + 8.16998180862e-02 8.60542685404e-02 8.75716967614e-02 8.60542685404e-02 8.16998180862e-02 7.50510418428e-02 + 6.05796981280e-02 5.18355302331e-02 4.33721592307e-02 3.56312088557e-02 2.88661050079e-02 2.31688478126e-02 + 1.85132658939e-02 1.48031251671e-02 1.19137265332e-02 9.71912104775e-03 8.10563303358e-03 6.97836085285e-03 + 6.26545793635e-03 5.92021996667e-03 5.92021996667e-03 6.26545793635e-03 6.97836085285e-03 8.10563303358e-03 + 9.71912104775e-03 1.19137265332e-02 1.48031251671e-02 1.85132658939e-02 2.31688478126e-02 2.88661050079e-02 + 3.56312088557e-02 4.33721592307e-02 5.18355302331e-02 6.05796981280e-02 6.89793219251e-02 7.62783857555e-02 + 8.16998180862e-02 8.45957298814e-02 8.45957298814e-02 8.16998180862e-02 7.62783857555e-02 6.89793219251e-02 + 5.33236907840e-02 4.51323632879e-02 3.74259862301e-02 3.05340710560e-02 2.46187421852e-02 1.97084075068e-02 + 1.57423428102e-02 1.26143883181e-02 1.02054916185e-02 8.40200942373e-03 7.10459522193e-03 6.23361812745e-03 + 5.73268604942e-03 5.56920678348e-03 5.73268604942e-03 6.23361812745e-03 7.10459522193e-03 8.40200942373e-03 + 1.02054916185e-02 1.26143883181e-02 1.57423428102e-02 1.97084075068e-02 2.46187421852e-02 3.05340710560e-02 + 3.74259862301e-02 4.51323632879e-02 5.33236907840e-02 6.14923433640e-02 6.89793219251e-02 7.50510418428e-02 + 7.90236437036e-02 8.04073084192e-02 7.90236437036e-02 7.50510418428e-02 6.89793219251e-02 6.14923433640e-02 + 4.02453701311e-02 3.34710625414e-02 2.73972646659e-02 2.21666114252e-02 1.78072941675e-02 1.42727054437e-02 + 1.14766013692e-02 9.31810768724e-03 7.69793885145e-03 6.52902358143e-03 5.74257125314e-03 5.28994524639e-03 + 5.14226972170e-03 5.28994524639e-03 5.74257125314e-03 6.52902358143e-03 7.69793885145e-03 9.31810768724e-03 + 1.14766013692e-02 1.42727054437e-02 1.78072941675e-02 2.21666114252e-02 2.73972646659e-02 3.34710625414e-02 + 4.02453701311e-02 4.74313143781e-02 5.45841783826e-02 6.11288569567e-02 6.64284767715e-02 6.98920688762e-02 + 7.10977313661e-02 6.98920688762e-02 6.64284767715e-02 6.11288569567e-02 5.45841783826e-02 4.74313143781e-02 + 3.34710625414e-02 2.77227537368e-02 2.26519365039e-02 1.83376793613e-02 1.47756456624e-02 1.19105819676e-02 + 9.66211927865e-03 7.94279014126e-03 6.67049181789e-03 5.77651892440e-03 5.20914423543e-03 4.93405372394e-03 + 4.93405372394e-03 5.20914423543e-03 5.77651892440e-03 6.67049181789e-03 7.94279014126e-03 9.66211927865e-03 + 1.19105819676e-02 1.47756456624e-02 1.83376793613e-02 2.26519365039e-02 2.77227537368e-02 3.34710625414e-02 + 3.97029159910e-02 4.60913389830e-02 5.21839135623e-02 5.74449785733e-02 6.13334872428e-02 6.34040688222e-02 + 6.34040688222e-02 6.13334872428e-02 5.74449785733e-02 5.21839135623e-02 4.60913389830e-02 3.97029159910e-02 + 2.73972646659e-02 2.26519365039e-02 1.85201445811e-02 1.50389831834e-02 1.21873907787e-02 9.91029781221e-03 + 8.13716815266e-03 6.79567554150e-03 5.82127807001e-03 5.16243150929e-03 4.78210810048e-03 4.65785937656e-03 + 4.78210810048e-03 5.16243150929e-03 5.82127807001e-03 6.79567554150e-03 8.13716815266e-03 9.91029781221e-03 + 1.21873907787e-02 1.50389831834e-02 1.85201445811e-02 2.26519365039e-02 2.73972646659e-02 3.26341221073e-02 + 3.81345549630e-02 4.35604474537e-02 4.84855850881e-02 5.24477482650e-02 5.50251512552e-02 5.59201471811e-02 + 5.50251512552e-02 5.24477482650e-02 4.84855850881e-02 4.35604474537e-02 3.81345549630e-02 3.26341221073e-02 + 2.21666114252e-02 1.83376793613e-02 1.50389831834e-02 1.22825573408e-02 1.00404664762e-02 8.26229038338e-03 + 6.88914005847e-03 5.86418256271e-03 5.13913617973e-03 4.67692793169e-03 4.45230019628e-03 4.45230019628e-03 + 4.67692793169e-03 5.13913617973e-03 5.86418256271e-03 6.88914005847e-03 8.26229038338e-03 1.00404664762e-02 + 1.22825573408e-02 1.50389831834e-02 1.83376793613e-02 2.21666114252e-02 2.64534808200e-02 3.10465495213e-02 + 3.57044700685e-02 4.01041807768e-02 4.38725463784e-02 4.66403070569e-02 4.81082332430e-02 4.81082332430e-02 + 4.66403070569e-02 4.38725463784e-02 4.01041807768e-02 3.57044700685e-02 3.10465495213e-02 2.64534808200e-02 + 1.78072941675e-02 1.47756456624e-02 1.21873907787e-02 1.00404664762e-02 8.30549434438e-03 6.93908976898e-03 + 5.89466652251e-03 5.12972310883e-03 4.60945880297e-03 4.30805835198e-03 4.20942844716e-03 4.30805835198e-03 + 4.60945880297e-03 5.12972310883e-03 5.89466652251e-03 6.93908976898e-03 8.30549434438e-03 1.00404664762e-02 + 1.21873907787e-02 1.47756456624e-02 1.78072941675e-02 2.12421582644e-02 2.49827563157e-02 2.88631293974e-02 + 3.26483588385e-02 3.60511821341e-02 3.87673596218e-02 4.05244812822e-02 4.11328816616e-02 4.05244812822e-02 + 3.87673596218e-02 3.60511821341e-02 3.26483588385e-02 2.88631293974e-02 2.49827563157e-02 2.12421582644e-02 + 1.42727054437e-02 1.19105819676e-02 9.91029781221e-03 8.26229038338e-03 6.93908976898e-03 5.90565973456e-03 + 5.12697112440e-03 4.57225197605e-03 4.21692866215e-03 4.04374575730e-03 4.04374575730e-03 4.21692866215e-03 + 4.57225197605e-03 5.12697112440e-03 5.90565973456e-03 6.93908976898e-03 8.26229038338e-03 9.91029781221e-03 + 1.19105819676e-02 1.42727054437e-02 1.69767793036e-02 1.99620901041e-02 2.31175818882e-02 2.62778950395e-02 + 2.92302840650e-02 3.17358390207e-02 3.35632692529e-02 3.45282284639e-02 3.45282284639e-02 3.35632692529e-02 + 3.17358390207e-02 2.92302840650e-02 2.62778950395e-02 2.31175818882e-02 1.99620901041e-02 1.69767793036e-02 + 1.14766013692e-02 9.66211927865e-03 8.13716815266e-03 6.88914005847e-03 5.89466652251e-03 5.12697112440e-03 + 4.56041706509e-03 4.17292027232e-03 3.94752033538e-03 3.87358926493e-03 3.94752033538e-03 4.17292027232e-03 + 4.56041706509e-03 5.12697112440e-03 5.89466652251e-03 6.88914005847e-03 8.13716815266e-03 9.66211927865e-03 + 1.14766013692e-02 1.35733603577e-02 1.59162612755e-02 1.84326960165e-02 2.10090352784e-02 2.34923498457e-02 + 2.57019293917e-02 2.74512061786e-02 2.85763383726e-02 2.89647599965e-02 2.85763383726e-02 2.74512061786e-02 + 2.57019293917e-02 2.34923498457e-02 2.10090352784e-02 1.84326960165e-02 1.59162612755e-02 1.35733603577e-02 + 9.31810768724e-03 7.94279014126e-03 6.79567554150e-03 5.86418256271e-03 5.12972310883e-03 4.57225197605e-03 + 4.17292027232e-03 3.91597292758e-03 3.79030883078e-03 3.79030883078e-03 3.91597292758e-03 4.17292027232e-03 + 4.57225197605e-03 5.12972310883e-03 5.86418256271e-03 6.79567554150e-03 7.94279014126e-03 9.31810768724e-03 + 1.09215936737e-02 1.27333396536e-02 1.47072813037e-02 1.67669692380e-02 1.88049742175e-02 2.06884779452e-02 + 2.22726314479e-02 2.34202555044e-02 2.40237109616e-02 2.40237109616e-02 2.34202555044e-02 2.22726314479e-02 + 2.06884779452e-02 1.88049742175e-02 1.67669692380e-02 1.47072813037e-02 1.27333396536e-02 1.09215936737e-02 + 7.69793885145e-03 6.67049181789e-03 5.82127807001e-03 5.13913617973e-03 4.60945880297e-03 4.21692866215e-03 + 3.94752033538e-03 3.79030883078e-03 3.73863341678e-03 3.79030883078e-03 3.94752033538e-03 4.21692866215e-03 + 4.60945880297e-03 5.13913617973e-03 5.82127807001e-03 6.67049181789e-03 7.69793885145e-03 8.90705726329e-03 + 1.02881382638e-02 1.18131307076e-02 1.34318126710e-02 1.50702461704e-02 1.66330383744e-02 1.80109897723e-02 + 1.90940368490e-02 1.97871783123e-02 2.00258575799e-02 1.97871783123e-02 1.90940368490e-02 1.80109897723e-02 + 1.66330383744e-02 1.50702461704e-02 1.34318126710e-02 1.18131307076e-02 1.02881382638e-02 8.90705726329e-03 + 6.52902358143e-03 5.77651892440e-03 5.16243150929e-03 4.67692793169e-03 4.30805835198e-03 4.04374575730e-03 + 3.87358926493e-03 3.79030883078e-03 3.79030883078e-03 3.87358926493e-03 4.04374575730e-03 4.30805835198e-03 + 4.67692793169e-03 5.16243150929e-03 5.77651892440e-03 6.52902358143e-03 7.42492384580e-03 8.46060891145e-03 + 9.61987006090e-03 1.08706042529e-02 1.21629507848e-02 1.34297677852e-02 1.45906790875e-02 1.55601992220e-02 + 1.62588522549e-02 1.66250325509e-02 1.66250325509e-02 1.62588522549e-02 1.55601992220e-02 1.45906790875e-02 + 1.34297677852e-02 1.21629507848e-02 1.08706042529e-02 9.61987006090e-03 8.46060891145e-03 7.42492384580e-03 + 5.74257125314e-03 5.20914423543e-03 4.78210810048e-03 4.45230019628e-03 4.20942844716e-03 4.04374575730e-03 + 3.94752033538e-03 3.91597292758e-03 3.94752033538e-03 4.04374575730e-03 4.20942844716e-03 4.45230019628e-03 + 4.78210810048e-03 5.20914423543e-03 5.74257125314e-03 6.38840491477e-03 7.14689010595e-03 8.00955236461e-03 + 8.95658363692e-03 9.95507847617e-03 1.09586567104e-02 1.19093466628e-02 1.27424344623e-02 1.33939588194e-02 + 1.38094745262e-02 1.39522993746e-02 1.38094745262e-02 1.33939588194e-02 1.27424344623e-02 1.19093466628e-02 + 1.09586567104e-02 9.95507847617e-03 8.95658363692e-03 8.00955236461e-03 7.14689010595e-03 6.38840491477e-03 + 5.28994524639e-03 4.93405372394e-03 4.65785937656e-03 4.45230019628e-03 4.30805835198e-03 4.21692866215e-03 + 4.17292027232e-03 4.17292027232e-03 4.21692866215e-03 4.30805835198e-03 4.45230019628e-03 4.65785937656e-03 + 4.93405372394e-03 5.28994524639e-03 5.73268604942e-03 6.26545793635e-03 6.88519888788e-03 7.58058258839e-03 + 8.33057919998e-03 9.10381322670e-03 9.85925299562e-03 1.05489279259e-02 1.11228159589e-02 1.15351431719e-02 + 1.17508350709e-02 1.17508350709e-02 1.15351431719e-02 1.11228159589e-02 1.05489279259e-02 9.85925299562e-03 + 9.10381322670e-03 8.33057919998e-03 7.58058258839e-03 6.88519888788e-03 6.26545793635e-03 5.73268604942e-03 + 5.14226972170e-03 4.93405372394e-03 4.78210810048e-03 4.67692793169e-03 4.60945880297e-03 4.57225197605e-03 + 4.56041706509e-03 4.57225197605e-03 4.60945880297e-03 4.67692793169e-03 4.78210810048e-03 4.93405372394e-03 + 5.14226972170e-03 5.41531278039e-03 5.75903981319e-03 6.17468606834e-03 6.65719946009e-03 7.19410390186e-03 + 7.76490388909e-03 8.34122341388e-03 8.88822832040e-03 9.36769905218e-03 9.74245511371e-03 9.98127039361e-03 + 1.00633149755e-02 9.98127039361e-03 9.74245511371e-03 9.36769905218e-03 8.88822832040e-03 8.34122341388e-03 + 7.76490388909e-03 7.19410390186e-03 6.65719946009e-03 6.17468606834e-03 5.75903981319e-03 5.41531278039e-03 + 5.28994524639e-03 5.20914423543e-03 5.16243150929e-03 5.13913617973e-03 5.12972310883e-03 5.12697112440e-03 + 5.12697112440e-03 5.12972310883e-03 5.13913617973e-03 5.16243150929e-03 5.20914423543e-03 5.28994524639e-03 + 5.41531278039e-03 5.59394004869e-03 5.83098728503e-03 6.12657930585e-03 6.47483593539e-03 6.86339437793e-03 + 7.27338017313e-03 7.68014935330e-03 8.05519399644e-03 8.36917339040e-03 8.59555582378e-03 8.71419097250e-03 + 8.71419097250e-03 8.59555582378e-03 8.36917339040e-03 8.05519399644e-03 7.68014935330e-03 7.27338017313e-03 + 6.86339437793e-03 6.47483593539e-03 6.12657930585e-03 5.83098728503e-03 5.59394004869e-03 5.41531278039e-03 + 5.74257125314e-03 5.77651892440e-03 5.82127807001e-03 5.86418256271e-03 5.89466652251e-03 5.90565973456e-03 + 5.89466652251e-03 5.86418256271e-03 5.82127807001e-03 5.77651892440e-03 5.74257125314e-03 5.73268604942e-03 + 5.75903981319e-03 5.83098728503e-03 5.95356833121e-03 6.12657930585e-03 6.34416762186e-03 6.59479473082e-03 + 6.86170422323e-03 7.12420828954e-03 7.35981258047e-03 7.54684340873e-03 7.66717366082e-03 7.70870330534e-03 + 7.66717366082e-03 7.54684340873e-03 7.35981258047e-03 7.12420828954e-03 6.86170422323e-03 6.59479473082e-03 + 6.34416762186e-03 6.12657930585e-03 5.95356833121e-03 5.83098728503e-03 5.75903981319e-03 5.73268604942e-03 + 6.52902358143e-03 6.67049181789e-03 6.79567554150e-03 6.88914005847e-03 6.93908976898e-03 6.93908976898e-03 + 6.88914005847e-03 6.79567554150e-03 6.67049181789e-03 6.52902358143e-03 6.38840491477e-03 6.26545793635e-03 + 6.17468606834e-03 6.12657930585e-03 6.12657930585e-03 6.17468606834e-03 6.26545793635e-03 6.38840491477e-03 + 6.52902358143e-03 6.67049181789e-03 6.79567554150e-03 6.88914005847e-03 6.93908976898e-03 6.93908976898e-03 + 6.88914005847e-03 6.79567554150e-03 6.67049181789e-03 6.52902358143e-03 6.38840491477e-03 6.26545793635e-03 + 6.17468606834e-03 6.12657930585e-03 6.12657930585e-03 6.17468606834e-03 6.26545793635e-03 6.38840491477e-03 + 7.69793885145e-03 7.94279014126e-03 8.13716815266e-03 8.26229038338e-03 8.30549434438e-03 8.26229038338e-03 + 8.13716815266e-03 7.94279014126e-03 7.69793885145e-03 7.42492384580e-03 7.14689010595e-03 6.88519888788e-03 + 6.65719946009e-03 6.47483593539e-03 6.34416762186e-03 6.26545793635e-03 6.23361812745e-03 6.23916674188e-03 + 6.26978037715e-03 6.31209415558e-03 6.35335851926e-03 6.38291972351e-03 6.39361872594e-03 6.38291972351e-03 + 6.35335851926e-03 6.31209415558e-03 6.26978037715e-03 6.23916674188e-03 6.23361812745e-03 6.26545793635e-03 + 6.34416762186e-03 6.47483593539e-03 6.65719946009e-03 6.88519888788e-03 7.14689010595e-03 7.42492384580e-03 + 9.31810768724e-03 9.66211927865e-03 9.91029781221e-03 1.00404664762e-02 1.00404664762e-02 9.91029781221e-03 + 9.66211927865e-03 9.31810768724e-03 8.90705726329e-03 8.46060891145e-03 8.00955236461e-03 7.58058258839e-03 + 7.19410390186e-03 6.86339437793e-03 6.59479473082e-03 6.38840491477e-03 6.23916674188e-03 6.13840739734e-03 + 6.07562992209e-03 6.04016501968e-03 6.02253909249e-03 6.01563766373e-03 6.01563766373e-03 6.02253909249e-03 + 6.04016501968e-03 6.07562992209e-03 6.13840739734e-03 6.23916674188e-03 6.38840491477e-03 6.59479473082e-03 + 6.86339437793e-03 7.19410390186e-03 7.58058258839e-03 8.00955236461e-03 8.46060891145e-03 8.90705726329e-03 + 1.14766013692e-02 1.19105819676e-02 1.21873907787e-02 1.22825573408e-02 1.21873907787e-02 1.19105819676e-02 + 1.14766013692e-02 1.09215936737e-02 1.02881382638e-02 9.61987006090e-03 8.95658363692e-03 8.33057919998e-03 + 7.76490388909e-03 7.27338017313e-03 6.86170422323e-03 6.52902358143e-03 6.26978037715e-03 6.07562992209e-03 + 5.93719631865e-03 5.84558656512e-03 5.79365065764e-03 5.77685140016e-03 5.79365065764e-03 5.84558656512e-03 + 5.93719631865e-03 6.07562992209e-03 6.26978037715e-03 6.52902358143e-03 6.86170422323e-03 7.27338017313e-03 + 7.76490388909e-03 8.33057919998e-03 8.95658363692e-03 9.61987006090e-03 1.02881382638e-02 1.09215936737e-02 + 1.42727054437e-02 1.47756456624e-02 1.50389831834e-02 1.50389831834e-02 1.47756456624e-02 1.42727054437e-02 + 1.35733603577e-02 1.27333396536e-02 1.18131307076e-02 1.08706042529e-02 9.95507847617e-03 9.10381322670e-03 + 8.34122341388e-03 7.68014935330e-03 7.12420828954e-03 6.67049181789e-03 6.31209415558e-03 6.04016501968e-03 + 5.84558656512e-03 5.72047031573e-03 5.65928321674e-03 5.65928321674e-03 5.72047031573e-03 5.84558656512e-03 + 6.04016501968e-03 6.31209415558e-03 6.67049181789e-03 7.12420828954e-03 7.68014935330e-03 8.34122341388e-03 + 9.10381322670e-03 9.95507847617e-03 1.08706042529e-02 1.18131307076e-02 1.27333396536e-02 1.35733603577e-02 + 1.78072941675e-02 1.83376793613e-02 1.85201445811e-02 1.83376793613e-02 1.78072941675e-02 1.69767793036e-02 + 1.59162612755e-02 1.47072813037e-02 1.34318126710e-02 1.21629507848e-02 1.09586567104e-02 9.85925299562e-03 + 8.88822832040e-03 8.05519399644e-03 7.35981258047e-03 6.79567554150e-03 6.35335851926e-03 6.02253909249e-03 + 5.79365065764e-03 5.65928321674e-03 5.61497680711e-03 5.65928321674e-03 5.79365065764e-03 6.02253909249e-03 + 6.35335851926e-03 6.79567554150e-03 7.35981258047e-03 8.05519399644e-03 8.88822832040e-03 9.85925299562e-03 + 1.09586567104e-02 1.21629507848e-02 1.34318126710e-02 1.47072813037e-02 1.59162612755e-02 1.69767793036e-02 + 2.21666114252e-02 2.26519365039e-02 2.26519365039e-02 2.21666114252e-02 2.12421582644e-02 1.99620901041e-02 + 1.84326960165e-02 1.67669692380e-02 1.50702461704e-02 1.34297677852e-02 1.19093466628e-02 1.05489279259e-02 + 9.36769905218e-03 8.36917339040e-03 7.54684340873e-03 6.88914005847e-03 6.38291972351e-03 6.01563766373e-03 + 5.77685140016e-03 5.65928321674e-03 5.65928321674e-03 5.77685140016e-03 6.01563766373e-03 6.38291972351e-03 + 6.88914005847e-03 7.54684340873e-03 8.36917339040e-03 9.36769905218e-03 1.05489279259e-02 1.19093466628e-02 + 1.34297677852e-02 1.50702461704e-02 1.67669692380e-02 1.84326960165e-02 1.99620901041e-02 2.12421582644e-02 + 2.73972646659e-02 2.77227537368e-02 2.73972646659e-02 2.64534808200e-02 2.49827563157e-02 2.31175818882e-02 + 2.10090352784e-02 1.88049742175e-02 1.66330383744e-02 1.45906790875e-02 1.27424344623e-02 1.11228159589e-02 + 9.74245511371e-03 8.59555582378e-03 7.66717366082e-03 6.93908976898e-03 6.39361872594e-03 6.01563766373e-03 + 5.79365065764e-03 5.72047031573e-03 5.79365065764e-03 6.01563766373e-03 6.39361872594e-03 6.93908976898e-03 + 7.66717366082e-03 8.59555582378e-03 9.74245511371e-03 1.11228159589e-02 1.27424344623e-02 1.45906790875e-02 + 1.66330383744e-02 1.88049742175e-02 2.10090352784e-02 2.31175818882e-02 2.49827563157e-02 2.64534808200e-02 + 3.34710625414e-02 3.34710625414e-02 3.26341221073e-02 3.10465495213e-02 2.88631293974e-02 2.62778950395e-02 + 2.34923498457e-02 2.06884779452e-02 1.80109897723e-02 1.55601992220e-02 1.33939588194e-02 1.15351431719e-02 + 9.98127039361e-03 8.71419097250e-03 7.70870330534e-03 6.93908976898e-03 6.38291972351e-03 6.02253909249e-03 + 5.84558656512e-03 5.84558656512e-03 6.02253909249e-03 6.38291972351e-03 6.93908976898e-03 7.70870330534e-03 + 8.71419097250e-03 9.98127039361e-03 1.15351431719e-02 1.33939588194e-02 1.55601992220e-02 1.80109897723e-02 + 2.06884779452e-02 2.34923498457e-02 2.62778950395e-02 2.88631293974e-02 3.10465495213e-02 3.26341221073e-02 + 4.02453701311e-02 3.97029159910e-02 3.81345549630e-02 3.57044700685e-02 3.26483588385e-02 2.92302840650e-02 + 2.57019293917e-02 2.22726314479e-02 1.90940368490e-02 1.62588522549e-02 1.38094745262e-02 1.17508350709e-02 + 1.00633149755e-02 8.71419097250e-03 7.66717366082e-03 6.88914005847e-03 6.35335851926e-03 6.04016501968e-03 + 5.93719631865e-03 6.04016501968e-03 6.35335851926e-03 6.88914005847e-03 7.66717366082e-03 8.71419097250e-03 + 1.00633149755e-02 1.17508350709e-02 1.38094745262e-02 1.62588522549e-02 1.90940368490e-02 2.22726314479e-02 + 2.57019293917e-02 2.92302840650e-02 3.26483588385e-02 3.57044700685e-02 3.81345549630e-02 3.97029159910e-02 + 4.74313143781e-02 4.60913389830e-02 4.35604474537e-02 4.01041807768e-02 3.60511821341e-02 3.17358390207e-02 + 2.74512061786e-02 2.34202555044e-02 1.97871783123e-02 1.66250325509e-02 1.39522993746e-02 1.17508350709e-02 + 9.98127039361e-03 8.59555582378e-03 7.54684340873e-03 6.79567554150e-03 6.31209415558e-03 6.07562992209e-03 + 6.07562992209e-03 6.31209415558e-03 6.79567554150e-03 7.54684340873e-03 8.59555582378e-03 9.98127039361e-03 + 1.17508350709e-02 1.39522993746e-02 1.66250325509e-02 1.97871783123e-02 2.34202555044e-02 2.74512061786e-02 + 3.17358390207e-02 3.60511821341e-02 4.01041807768e-02 4.35604474537e-02 4.60913389830e-02 4.74313143781e-02 + 5.45841783826e-02 5.21839135623e-02 4.84855850881e-02 4.38725463784e-02 3.87673596218e-02 3.35632692529e-02 + 2.85763383726e-02 2.40237109616e-02 2.00258575799e-02 1.66250325509e-02 1.38094745262e-02 1.15351431719e-02 + 9.74245511371e-03 8.36917339040e-03 7.35981258047e-03 6.67049181789e-03 6.26978037715e-03 6.13840739734e-03 + 6.26978037715e-03 6.67049181789e-03 7.35981258047e-03 8.36917339040e-03 9.74245511371e-03 1.15351431719e-02 + 1.38094745262e-02 1.66250325509e-02 2.00258575799e-02 2.40237109616e-02 2.85763383726e-02 3.35632692529e-02 + 3.87673596218e-02 4.38725463784e-02 4.84855850881e-02 5.21839135623e-02 5.45841783826e-02 5.54167137150e-02 + 6.11288569567e-02 5.74449785733e-02 5.24477482650e-02 4.66403070569e-02 4.05244812822e-02 3.45282284639e-02 + 2.89647599965e-02 2.40237109616e-02 1.97871783123e-02 1.62588522549e-02 1.33939588194e-02 1.11228159589e-02 + 9.36769905218e-03 8.05519399644e-03 7.12420828954e-03 6.52902358143e-03 6.23916674188e-03 6.23916674188e-03 + 6.52902358143e-03 7.12420828954e-03 8.05519399644e-03 9.36769905218e-03 1.11228159589e-02 1.33939588194e-02 + 1.62588522549e-02 1.97871783123e-02 2.40237109616e-02 2.89647599965e-02 3.45282284639e-02 4.05244812822e-02 + 4.66403070569e-02 5.24477482650e-02 5.74449785733e-02 6.11288569567e-02 6.30873277659e-02 6.30873277659e-02 + 6.64284767715e-02 6.13334872428e-02 5.50251512552e-02 4.81082332430e-02 4.11328816616e-02 3.45282284639e-02 + 2.85763383726e-02 2.34202555044e-02 1.90940368490e-02 1.55601992220e-02 1.27424344623e-02 1.05489279259e-02 + 8.88822832040e-03 7.68014935330e-03 6.86170422323e-03 6.38840491477e-03 6.23361812745e-03 6.38840491477e-03 + 6.86170422323e-03 7.68014935330e-03 8.88822832040e-03 1.05489279259e-02 1.27424344623e-02 1.55601992220e-02 + 1.90940368490e-02 2.34202555044e-02 2.85763383726e-02 3.45282284639e-02 4.11328816616e-02 4.81082332430e-02 + 5.50251512552e-02 6.13334872428e-02 6.64284767715e-02 6.97522426294e-02 7.09081350393e-02 6.97522426294e-02 + 6.98920688762e-02 6.34040688222e-02 5.59201471811e-02 4.81082332430e-02 4.05244812822e-02 3.35632692529e-02 + 2.74512061786e-02 2.22726314479e-02 1.80109897723e-02 1.45906790875e-02 1.19093466628e-02 9.85925299562e-03 + 8.34122341388e-03 7.27338017313e-03 6.59479473082e-03 6.26545793635e-03 6.26545793635e-03 6.59479473082e-03 + 7.27338017313e-03 8.34122341388e-03 9.85925299562e-03 1.19093466628e-02 1.45906790875e-02 1.80109897723e-02 + 2.22726314479e-02 2.74512061786e-02 3.35632692529e-02 4.05244812822e-02 4.81082332430e-02 5.59201471811e-02 + 6.34040688222e-02 6.98920688762e-02 7.47020608958e-02 7.72682499914e-02 7.72682499914e-02 7.47020608958e-02 + 7.10977313661e-02 6.34040688222e-02 5.50251512552e-02 4.66403070569e-02 3.87673596218e-02 3.17358390207e-02 + 2.57019293917e-02 2.06884779452e-02 1.66330383744e-02 1.34297677852e-02 1.09586567104e-02 9.10381322670e-03 + 7.76490388909e-03 6.86339437793e-03 6.34416762186e-03 6.17468606834e-03 6.34416762186e-03 6.86339437793e-03 + 7.76490388909e-03 9.10381322670e-03 1.09586567104e-02 1.34297677852e-02 1.66330383744e-02 2.06884779452e-02 + 2.57019293917e-02 3.17358390207e-02 3.87673596218e-02 4.66403070569e-02 5.50251512552e-02 6.34040688222e-02 + 7.10977313661e-02 7.73458021392e-02 8.14375530661e-02 8.28633557769e-02 8.14375530661e-02 7.73458021392e-02 + 6.98920688762e-02 6.13334872428e-02 5.24477482650e-02 4.38725463784e-02 3.60511821341e-02 2.92302840650e-02 + 2.34923498457e-02 1.88049742175e-02 1.50702461704e-02 1.21629507848e-02 9.95507847617e-03 8.33057919998e-03 + 7.19410390186e-03 6.47483593539e-03 6.12657930585e-03 6.12657930585e-03 6.47483593539e-03 7.19410390186e-03 + 8.33057919998e-03 9.95507847617e-03 1.21629507848e-02 1.50702461704e-02 1.88049742175e-02 2.34923498457e-02 + 2.92302840650e-02 3.60511821341e-02 4.38725463784e-02 5.24477482650e-02 6.13334872428e-02 6.98920688762e-02 + 7.73458021392e-02 8.28911486673e-02 8.58561529560e-02 8.58561529560e-02 8.28911486673e-02 7.73458021392e-02 + 6.64284767715e-02 5.74449785733e-02 4.84855850881e-02 4.01041807768e-02 3.26483588385e-02 2.62778950395e-02 + 2.10090352784e-02 1.67669692380e-02 1.34318126710e-02 1.08706042529e-02 8.95658363692e-03 7.58058258839e-03 + 6.65719946009e-03 6.12657930585e-03 5.95356833121e-03 6.12657930585e-03 6.65719946009e-03 7.58058258839e-03 + 8.95658363692e-03 1.08706042529e-02 1.34318126710e-02 1.67669692380e-02 2.10090352784e-02 2.62778950395e-02 + 3.26483588385e-02 4.01041807768e-02 4.84855850881e-02 5.74449785733e-02 6.64284767715e-02 7.47020608958e-02 + 8.14375530661e-02 8.58561529560e-02 8.73972293003e-02 8.58561529560e-02 8.14375530661e-02 7.47020608958e-02 + 6.11288569567e-02 5.21839135623e-02 4.35604474537e-02 3.57044700685e-02 2.88631293974e-02 2.31175818882e-02 + 1.84326960165e-02 1.47072813037e-02 1.18131307076e-02 9.61987006090e-03 8.00955236461e-03 6.88519888788e-03 + 6.17468606834e-03 5.83098728503e-03 5.83098728503e-03 6.17468606834e-03 6.88519888788e-03 8.00955236461e-03 + 9.61987006090e-03 1.18131307076e-02 1.47072813037e-02 1.84326960165e-02 2.31175818882e-02 2.88631293974e-02 + 3.57044700685e-02 4.35604474537e-02 5.21839135623e-02 6.11288569567e-02 6.97522426294e-02 7.72682499914e-02 + 8.28633557769e-02 8.58561529560e-02 8.58561529560e-02 8.28633557769e-02 7.72682499914e-02 6.97522426294e-02 + 5.45841783826e-02 4.60913389830e-02 3.81345549630e-02 3.10465495213e-02 2.49827563157e-02 1.99620901041e-02 + 1.59162612755e-02 1.27333396536e-02 1.02881382638e-02 8.46060891145e-03 7.14689010595e-03 6.26545793635e-03 + 5.75903981319e-03 5.59394004869e-03 5.75903981319e-03 6.26545793635e-03 7.14689010595e-03 8.46060891145e-03 + 1.02881382638e-02 1.27333396536e-02 1.59162612755e-02 1.99620901041e-02 2.49827563157e-02 3.10465495213e-02 + 3.81345549630e-02 4.60913389830e-02 5.45841783826e-02 6.30873277659e-02 7.09081350393e-02 7.72682499914e-02 + 8.14375530661e-02 8.28911486673e-02 8.14375530661e-02 7.72682499914e-02 7.09081350393e-02 6.30873277659e-02 + 4.74313143781e-02 3.97029159910e-02 3.26341221073e-02 2.64534808200e-02 2.12421582644e-02 1.69767793036e-02 + 1.35733603577e-02 1.09215936737e-02 8.90705726329e-03 7.42492384580e-03 6.38840491477e-03 5.73268604942e-03 + 5.41531278039e-03 5.41531278039e-03 5.73268604942e-03 6.38840491477e-03 7.42492384580e-03 8.90705726329e-03 + 1.09215936737e-02 1.35733603577e-02 1.69767793036e-02 2.12421582644e-02 2.64534808200e-02 3.26341221073e-02 + 3.97029159910e-02 4.74313143781e-02 5.54167137150e-02 6.30873277659e-02 6.97522426294e-02 7.47020608958e-02 + 7.73458021392e-02 7.73458021392e-02 7.47020608958e-02 6.97522426294e-02 6.30873277659e-02 5.54167137150e-02 + 3.55932306397e-02 2.94586793037e-02 2.40594329852e-02 1.94746684497e-02 1.56960478729e-02 1.26620800682e-02 + 1.02846446979e-02 8.46823559623e-03 7.12420828954e-03 6.17967298585e-03 5.58034633768e-03 5.28994524639e-03 + 5.28994524639e-03 5.58034633768e-03 6.17967298585e-03 7.12420828954e-03 8.46823559623e-03 1.02846446979e-02 + 1.26620800682e-02 1.56960478729e-02 1.94746684497e-02 2.40594329852e-02 2.94586793037e-02 3.55932306397e-02 + 4.22610610741e-02 4.91148354625e-02 5.56676247698e-02 6.13379141192e-02 6.55352798807e-02 6.77723654588e-02 + 6.77723654588e-02 6.55352798807e-02 6.13379141192e-02 5.56676247698e-02 4.91148354625e-02 4.22610610741e-02 + 2.94586793037e-02 2.43476957086e-02 1.99070659239e-02 1.61729889157e-02 1.31198380533e-02 1.06856809758e-02 + 8.79214216133e-03 7.35981258047e-03 6.31909087196e-03 5.61528193683e-03 5.20914423543e-03 5.07652462266e-03 + 5.20914423543e-03 5.61528193683e-03 6.31909087196e-03 7.35981258047e-03 8.79214216133e-03 1.06856809758e-02 + 1.31198380533e-02 1.61729889157e-02 1.99070659239e-02 2.43476957086e-02 2.94586793037e-02 3.51127517762e-02 + 4.10670403681e-02 4.69561004766e-02 5.23143637463e-02 5.66331890923e-02 5.94462807362e-02 6.04237632524e-02 + 5.94462807362e-02 5.66331890923e-02 5.23143637463e-02 4.69561004766e-02 4.10670403681e-02 3.51127517762e-02 + 2.40594329852e-02 1.99070659239e-02 1.63370205752e-02 1.33594815778e-02 1.09414577715e-02 9.02578945364e-03 + 7.54684340873e-03 6.44245195186e-03 5.66079261571e-03 5.16243150929e-03 4.92029966810e-03 4.92029966810e-03 + 5.16243150929e-03 5.66079261571e-03 6.44245195186e-03 7.54684340873e-03 9.02578945364e-03 1.09414577715e-02 + 1.33594815778e-02 1.63370205752e-02 1.99070659239e-02 2.40594329852e-02 2.87187367840e-02 3.37228748044e-02 + 3.88104397494e-02 4.36277000850e-02 4.77625301985e-02 5.08044555558e-02 5.24194501424e-02 5.24194501424e-02 + 5.08044555558e-02 4.77625301985e-02 4.36277000850e-02 3.88104397494e-02 3.37228748044e-02 2.87187367840e-02 + 1.94746684497e-02 1.61729889157e-02 1.33594815778e-02 1.10293847869e-02 9.14830218340e-03 7.66717366082e-03 + 6.53448601861e-03 5.70420021497e-03 5.13913617973e-03 4.81172327806e-03 4.70458873539e-03 4.81172327806e-03 + 5.13913617973e-03 5.70420021497e-03 6.53448601861e-03 7.66717366082e-03 9.14830218340e-03 1.10293847869e-02 + 1.33594815778e-02 1.61729889157e-02 1.94746684497e-02 2.32231030162e-02 2.73140021666e-02 3.15673758761e-02 + 3.57259716101e-02 3.94725484932e-02 4.24686468881e-02 4.44094609233e-02 4.50819394473e-02 4.44094609233e-02 + 4.24686468881e-02 3.94725484932e-02 3.57259716101e-02 3.15673758761e-02 2.73140021666e-02 2.32231030162e-02 + 1.56960478729e-02 1.31198380533e-02 1.09414577715e-02 9.14830218340e-03 7.70870330534e-03 6.58362639444e-03 + 5.73495116497e-03 5.12972310883e-03 4.74176747355e-03 4.55262020357e-03 4.55262020357e-03 4.74176747355e-03 + 5.12972310883e-03 5.73495116497e-03 6.58362639444e-03 7.70870330534e-03 9.14830218340e-03 1.09414577715e-02 + 1.31198380533e-02 1.56960478729e-02 1.86504890434e-02 2.19185274002e-02 2.53797852965e-02 2.88533907006e-02 + 3.21049723875e-02 3.48695445110e-02 3.68889471691e-02 3.79563421300e-02 3.79563421300e-02 3.68889471691e-02 + 3.48695445110e-02 3.21049723875e-02 2.88533907006e-02 2.53797852965e-02 2.19185274002e-02 1.86504890434e-02 + 1.26620800682e-02 1.06856809758e-02 9.02578945364e-03 7.66717366082e-03 6.58362639444e-03 5.74602373426e-03 + 5.12697112440e-03 4.70304044562e-03 4.45623663297e-03 4.37525079151e-03 4.45623663297e-03 4.70304044562e-03 + 5.12697112440e-03 5.74602373426e-03 6.58362639444e-03 7.66717366082e-03 9.02578945364e-03 1.06856809758e-02 + 1.26620800682e-02 1.49488960464e-02 1.75083321070e-02 2.02621880335e-02 2.30866420056e-02 2.58139075627e-02 + 2.82446089484e-02 3.01717861136e-02 3.14127386696e-02 3.18414068716e-02 3.14127386696e-02 3.01717861136e-02 + 2.82446089484e-02 2.58139075627e-02 2.30866420056e-02 2.02621880335e-02 1.75083321070e-02 1.49488960464e-02 + 1.02846446979e-02 8.79214216133e-03 7.54684340873e-03 6.53448601861e-03 5.73495116497e-03 5.12697112440e-03 + 4.69069423954e-03 4.40955813989e-03 4.27192322596e-03 4.27192322596e-03 4.40955813989e-03 4.69069423954e-03 + 5.12697112440e-03 5.73495116497e-03 6.53448601861e-03 7.54684340873e-03 8.79214216133e-03 1.02846446979e-02 + 1.20255038743e-02 1.39945083398e-02 1.61427916872e-02 1.83878553878e-02 2.06126999880e-02 2.26718438342e-02 + 2.44059448105e-02 2.56635113913e-02 2.63252408289e-02 2.63252408289e-02 2.56635113913e-02 2.44059448105e-02 + 2.26718438342e-02 2.06126999880e-02 1.83878553878e-02 1.61427916872e-02 1.39945083398e-02 1.20255038743e-02 + 8.46823559623e-03 7.35981258047e-03 6.44245195186e-03 5.70420021497e-03 5.12972310883e-03 4.70304044562e-03 + 4.40955813989e-03 4.23798561825e-03 4.18152878343e-03 4.23798561825e-03 4.40955813989e-03 4.70304044562e-03 + 5.12972310883e-03 5.70420021497e-03 6.44245195186e-03 7.35981258047e-03 8.46823559623e-03 9.77183223433e-03 + 1.12609832188e-02 1.29064893850e-02 1.46550533623e-02 1.64272283654e-02 1.81196807915e-02 1.96135589165e-02 + 2.07887392229e-02 2.15413174517e-02 2.18005508565e-02 2.15413174517e-02 2.07887392229e-02 1.96135589165e-02 + 1.81196807915e-02 1.64272283654e-02 1.46550533623e-02 1.29064893850e-02 1.12609832188e-02 9.77183223433e-03 + 7.12420828954e-03 6.31909087196e-03 5.66079261571e-03 5.13913617973e-03 4.74176747355e-03 4.45623663297e-03 + 4.27192322596e-03 4.18152878343e-03 4.18152878343e-03 4.27192322596e-03 4.45623663297e-03 4.74176747355e-03 + 5.13913617973e-03 5.66079261571e-03 6.31909087196e-03 7.12420828954e-03 8.08133005705e-03 9.18679124184e-03 + 1.04238516982e-02 1.17590249893e-02 1.31397287366e-02 1.44944499034e-02 1.57370100687e-02 1.67754563001e-02 + 1.75241772421e-02 1.79167348748e-02 1.79167348748e-02 1.75241772421e-02 1.67754563001e-02 1.57370100687e-02 + 1.44944499034e-02 1.31397287366e-02 1.17590249893e-02 1.04238516982e-02 9.18679124184e-03 8.08133005705e-03 + 6.17967298585e-03 5.61528193683e-03 5.16243150929e-03 4.81172327806e-03 4.55262020357e-03 4.37525079151e-03 + 4.27192322596e-03 4.23798561825e-03 4.27192322596e-03 4.37525079151e-03 4.55262020357e-03 4.81172327806e-03 + 5.16243150929e-03 5.61528193683e-03 6.17967298585e-03 6.86170422323e-03 7.66146344666e-03 8.57007132232e-03 + 9.56702175361e-03 1.06181928008e-02 1.16751572683e-02 1.26769712537e-02 1.35553259639e-02 1.42425749040e-02 + 1.46810426016e-02 1.48317912783e-02 1.46810426016e-02 1.42425749040e-02 1.35553259639e-02 1.26769712537e-02 + 1.16751572683e-02 1.06181928008e-02 9.56702175361e-03 8.57007132232e-03 7.66146344666e-03 6.86170422323e-03 + 5.58034633768e-03 5.20914423543e-03 4.92029966810e-03 4.70458873539e-03 4.55262020357e-03 4.45623663297e-03 + 4.40955813989e-03 4.40955813989e-03 4.45623663297e-03 4.55262020357e-03 4.70458873539e-03 4.92029966810e-03 + 5.20914423543e-03 5.58034633768e-03 6.04118457084e-03 6.59479473082e-03 7.23785699764e-03 7.95863052826e-03 + 8.73551184506e-03 9.53627070961e-03 1.03186231402e-02 1.10330000246e-02 1.16276251073e-02 1.20550163598e-02 + 1.22786655737e-02 1.22786655737e-02 1.20550163598e-02 1.16276251073e-02 1.10330000246e-02 1.03186231402e-02 + 9.53627070961e-03 8.73551184506e-03 7.95863052826e-03 7.23785699764e-03 6.59479473082e-03 6.04118457084e-03 + 5.28994524639e-03 5.07652462266e-03 4.92029966810e-03 4.81172327806e-03 4.74176747355e-03 4.70304044562e-03 + 4.69069423954e-03 4.70304044562e-03 4.74176747355e-03 4.81172327806e-03 4.92029966810e-03 5.07652462266e-03 + 5.28994524639e-03 5.56920678348e-03 5.92021996667e-03 6.34416762186e-03 6.83583874198e-03 7.38252390656e-03 + 7.96341795569e-03 8.54973346172e-03 9.10613117226e-03 9.59384043225e-03 9.97511028176e-03 1.02181471415e-02 + 1.03016601350e-02 1.02181471415e-02 9.97511028176e-03 9.59384043225e-03 9.10613117226e-03 8.54973346172e-03 + 7.96341795569e-03 7.38252390656e-03 6.83583874198e-03 6.34416762186e-03 5.92021996667e-03 5.56920678348e-03 + 5.28994524639e-03 5.20914423543e-03 5.16243150929e-03 5.13913617973e-03 5.12972310883e-03 5.12697112440e-03 + 5.12697112440e-03 5.12972310883e-03 5.13913617973e-03 5.16243150929e-03 5.20914423543e-03 5.28994524639e-03 + 5.41531278039e-03 5.59394004869e-03 5.83098728503e-03 6.12657930585e-03 6.47483593539e-03 6.86339437793e-03 + 7.27338017313e-03 7.68014935330e-03 8.05519399644e-03 8.36917339040e-03 8.59555582378e-03 8.71419097250e-03 + 8.71419097250e-03 8.59555582378e-03 8.36917339040e-03 8.05519399644e-03 7.68014935330e-03 7.27338017313e-03 + 6.86339437793e-03 6.47483593539e-03 6.12657930585e-03 5.83098728503e-03 5.59394004869e-03 5.41531278039e-03 + 5.58034633768e-03 5.61528193683e-03 5.66079261571e-03 5.70420021497e-03 5.73495116497e-03 5.74602373426e-03 + 5.73495116497e-03 5.70420021497e-03 5.66079261571e-03 5.61528193683e-03 5.58034633768e-03 5.56920678348e-03 + 5.59394004869e-03 5.66378434823e-03 5.78371930190e-03 5.95356833121e-03 6.16759269815e-03 6.41444748147e-03 + 6.67761981445e-03 6.93665223838e-03 7.16922584820e-03 7.35383003280e-03 7.47255069610e-03 7.51351058269e-03 + 7.47255069610e-03 7.35383003280e-03 7.16922584820e-03 6.93665223838e-03 6.67761981445e-03 6.41444748147e-03 + 6.16759269815e-03 5.95356833121e-03 5.78371930190e-03 5.66378434823e-03 5.59394004869e-03 5.56920678348e-03 + 6.17967298585e-03 6.31909087196e-03 6.44245195186e-03 6.53448601861e-03 6.58362639444e-03 6.58362639444e-03 + 6.53448601861e-03 6.44245195186e-03 6.31909087196e-03 6.17967298585e-03 6.04118457084e-03 5.92021996667e-03 + 5.83098728503e-03 5.78371930190e-03 5.78371930190e-03 5.83098728503e-03 5.92021996667e-03 6.04118457084e-03 + 6.17967298585e-03 6.31909087196e-03 6.44245195186e-03 6.53448601861e-03 6.58362639444e-03 6.58362639444e-03 + 6.53448601861e-03 6.44245195186e-03 6.31909087196e-03 6.17967298585e-03 6.04118457084e-03 5.92021996667e-03 + 5.83098728503e-03 5.78371930190e-03 5.78371930190e-03 5.83098728503e-03 5.92021996667e-03 6.04118457084e-03 + 7.12420828954e-03 7.35981258047e-03 7.54684340873e-03 7.66717366082e-03 7.70870330534e-03 7.66717366082e-03 + 7.54684340873e-03 7.35981258047e-03 7.12420828954e-03 6.86170422323e-03 6.59479473082e-03 6.34416762186e-03 + 6.12657930585e-03 5.95356833121e-03 5.83098728503e-03 5.75903981319e-03 5.73268604942e-03 5.74257125314e-03 + 5.77651892440e-03 5.82127807001e-03 5.86418256271e-03 5.89466652251e-03 5.90565973456e-03 5.89466652251e-03 + 5.86418256271e-03 5.82127807001e-03 5.77651892440e-03 5.74257125314e-03 5.73268604942e-03 5.75903981319e-03 + 5.83098728503e-03 5.95356833121e-03 6.12657930585e-03 6.34416762186e-03 6.59479473082e-03 6.86170422323e-03 + 8.46823559623e-03 8.79214216133e-03 9.02578945364e-03 9.14830218340e-03 9.14830218340e-03 9.02578945364e-03 + 8.79214216133e-03 8.46823559623e-03 8.08133005705e-03 7.66146344666e-03 7.23785699764e-03 6.83583874198e-03 + 6.47483593539e-03 6.16759269815e-03 5.92021996667e-03 5.73268604942e-03 5.59978938003e-03 5.51272438194e-03 + 5.46093720174e-03 5.43377044817e-03 5.42174879265e-03 5.41768978229e-03 5.41768978229e-03 5.42174879265e-03 + 5.43377044817e-03 5.46093720174e-03 5.51272438194e-03 5.59978938003e-03 5.73268604942e-03 5.92021996667e-03 + 6.16759269815e-03 6.47483593539e-03 6.83583874198e-03 7.23785699764e-03 7.66146344666e-03 8.08133005705e-03 + 1.02846446979e-02 1.06856809758e-02 1.09414577715e-02 1.10293847869e-02 1.09414577715e-02 1.06856809758e-02 + 1.02846446979e-02 9.77183223433e-03 9.18679124184e-03 8.57007132232e-03 7.95863052826e-03 7.38252390656e-03 + 6.86339437793e-03 6.41444748147e-03 6.04118457084e-03 5.74257125314e-03 5.51272438194e-03 5.34296096392e-03 + 5.22371135458e-03 5.14599535674e-03 5.10253249618e-03 5.08859106656e-03 5.10253249618e-03 5.14599535674e-03 + 5.22371135458e-03 5.34296096392e-03 5.51272438194e-03 5.74257125314e-03 6.04118457084e-03 6.41444748147e-03 + 6.86339437793e-03 7.38252390656e-03 7.95863052826e-03 8.57007132232e-03 9.18679124184e-03 9.77183223433e-03 + 1.26620800682e-02 1.31198380533e-02 1.33594815778e-02 1.33594815778e-02 1.31198380533e-02 1.26620800682e-02 + 1.20255038743e-02 1.12609832188e-02 1.04238516982e-02 9.56702175361e-03 8.73551184506e-03 7.96341795569e-03 + 7.27338017313e-03 6.67761981445e-03 6.17967298585e-03 5.77651892440e-03 5.46093720174e-03 5.22371135458e-03 + 5.05545032098e-03 4.94806264494e-03 4.89581524939e-03 4.89581524939e-03 4.94806264494e-03 5.05545032098e-03 + 5.22371135458e-03 5.46093720174e-03 5.77651892440e-03 6.17967298585e-03 6.67761981445e-03 7.27338017313e-03 + 7.96341795569e-03 8.73551184506e-03 9.56702175361e-03 1.04238516982e-02 1.12609832188e-02 1.20255038743e-02 + 1.56960478729e-02 1.61729889157e-02 1.63370205752e-02 1.61729889157e-02 1.56960478729e-02 1.49488960464e-02 + 1.39945083398e-02 1.29064893850e-02 1.17590249893e-02 1.06181928008e-02 9.53627070961e-03 8.54973346172e-03 + 7.68014935330e-03 6.93665223838e-03 6.31909087196e-03 5.82127807001e-03 5.43377044817e-03 5.14599535674e-03 + 4.94806264494e-03 4.83232712929e-03 4.79423577304e-03 4.83232712929e-03 4.94806264494e-03 5.14599535674e-03 + 5.43377044817e-03 5.82127807001e-03 6.31909087196e-03 6.93665223838e-03 7.68014935330e-03 8.54973346172e-03 + 9.53627070961e-03 1.06181928008e-02 1.17590249893e-02 1.29064893850e-02 1.39945083398e-02 1.49488960464e-02 + 1.94746684497e-02 1.99070659239e-02 1.99070659239e-02 1.94746684497e-02 1.86504890434e-02 1.75083321070e-02 + 1.61427916872e-02 1.46550533623e-02 1.31397287366e-02 1.16751572683e-02 1.03186231402e-02 9.10613117226e-03 + 8.05519399644e-03 7.16922584820e-03 6.44245195186e-03 5.86418256271e-03 5.42174879265e-03 5.10253249618e-03 + 4.89581524939e-03 4.79423577304e-03 4.79423577304e-03 4.89581524939e-03 5.10253249618e-03 5.42174879265e-03 + 5.86418256271e-03 6.44245195186e-03 7.16922584820e-03 8.05519399644e-03 9.10613117226e-03 1.03186231402e-02 + 1.16751572683e-02 1.31397287366e-02 1.46550533623e-02 1.61427916872e-02 1.75083321070e-02 1.86504890434e-02 + 2.40594329852e-02 2.43476957086e-02 2.40594329852e-02 2.32231030162e-02 2.19185274002e-02 2.02621880335e-02 + 1.83878553878e-02 1.64272283654e-02 1.44944499034e-02 1.26769712537e-02 1.10330000246e-02 9.59384043225e-03 + 8.36917339040e-03 7.35383003280e-03 6.53448601861e-03 5.89466652251e-03 5.41768978229e-03 5.08859106656e-03 + 4.89581524939e-03 4.83232712929e-03 4.89581524939e-03 5.08859106656e-03 5.41768978229e-03 5.89466652251e-03 + 6.53448601861e-03 7.35383003280e-03 8.36917339040e-03 9.59384043225e-03 1.10330000246e-02 1.26769712537e-02 + 1.44944499034e-02 1.64272283654e-02 1.83878553878e-02 2.02621880335e-02 2.19185274002e-02 2.32231030162e-02 + 2.94586793037e-02 2.94586793037e-02 2.87187367840e-02 2.73140021666e-02 2.53797852965e-02 2.30866420056e-02 + 2.06126999880e-02 1.81196807915e-02 1.57370100687e-02 1.35553259639e-02 1.16276251073e-02 9.97511028176e-03 + 8.59555582378e-03 7.47255069610e-03 6.58362639444e-03 5.90565973456e-03 5.41768978229e-03 5.10253249618e-03 + 4.94806264494e-03 4.94806264494e-03 5.10253249618e-03 5.41768978229e-03 5.90565973456e-03 6.58362639444e-03 + 7.47255069610e-03 8.59555582378e-03 9.97511028176e-03 1.16276251073e-02 1.35553259639e-02 1.57370100687e-02 + 1.81196807915e-02 2.06126999880e-02 2.30866420056e-02 2.53797852965e-02 2.73140021666e-02 2.87187367840e-02 + 3.55932306397e-02 3.51127517762e-02 3.37228748044e-02 3.15673758761e-02 2.88533907006e-02 2.58139075627e-02 + 2.26718438342e-02 1.96135589165e-02 1.67754563001e-02 1.42425749040e-02 1.20550163598e-02 1.02181471415e-02 + 8.71419097250e-03 7.51351058269e-03 6.58362639444e-03 5.89466652251e-03 5.42174879265e-03 5.14599535674e-03 + 5.05545032098e-03 5.14599535674e-03 5.42174879265e-03 5.89466652251e-03 6.58362639444e-03 7.51351058269e-03 + 8.71419097250e-03 1.02181471415e-02 1.20550163598e-02 1.42425749040e-02 1.67754563001e-02 1.96135589165e-02 + 2.26718438342e-02 2.58139075627e-02 2.88533907006e-02 3.15673758761e-02 3.37228748044e-02 3.51127517762e-02 + 4.22610610741e-02 4.10670403681e-02 3.88104397494e-02 3.57259716101e-02 3.21049723875e-02 2.82446089484e-02 + 2.44059448105e-02 2.07887392229e-02 1.75241772421e-02 1.46810426016e-02 1.22786655737e-02 1.03016601350e-02 + 8.71419097250e-03 7.47255069610e-03 6.53448601861e-03 5.86418256271e-03 5.43377044817e-03 5.22371135458e-03 + 5.22371135458e-03 5.43377044817e-03 5.86418256271e-03 6.53448601861e-03 7.47255069610e-03 8.71419097250e-03 + 1.03016601350e-02 1.22786655737e-02 1.46810426016e-02 1.75241772421e-02 2.07887392229e-02 2.44059448105e-02 + 2.82446089484e-02 3.21049723875e-02 3.57259716101e-02 3.88104397494e-02 4.10670403681e-02 4.22610610741e-02 + 4.91148354625e-02 4.69561004766e-02 4.36277000850e-02 3.94725484932e-02 3.48695445110e-02 3.01717861136e-02 + 2.56635113913e-02 2.15413174517e-02 1.79167348748e-02 1.48317912783e-02 1.22786655737e-02 1.02181471415e-02 + 8.59555582378e-03 7.35383003280e-03 6.44245195186e-03 5.82127807001e-03 5.46093720174e-03 5.34296096392e-03 + 5.46093720174e-03 5.82127807001e-03 6.44245195186e-03 7.35383003280e-03 8.59555582378e-03 1.02181471415e-02 + 1.22786655737e-02 1.48317912783e-02 1.79167348748e-02 2.15413174517e-02 2.56635113913e-02 3.01717861136e-02 + 3.48695445110e-02 3.94725484932e-02 4.36277000850e-02 4.69561004766e-02 4.91148354625e-02 4.98633146719e-02 + 5.56676247698e-02 5.23143637463e-02 4.77625301985e-02 4.24686468881e-02 3.68889471691e-02 3.14127386696e-02 + 2.63252408289e-02 2.18005508565e-02 1.79167348748e-02 1.46810426016e-02 1.20550163598e-02 9.97511028176e-03 + 8.36917339040e-03 7.16922584820e-03 6.31909087196e-03 5.77651892440e-03 5.51272438194e-03 5.51272438194e-03 + 5.77651892440e-03 6.31909087196e-03 7.16922584820e-03 8.36917339040e-03 9.97511028176e-03 1.20550163598e-02 + 1.46810426016e-02 1.79167348748e-02 2.18005508565e-02 2.63252408289e-02 3.14127386696e-02 3.68889471691e-02 + 4.24686468881e-02 4.77625301985e-02 5.23143637463e-02 5.56676247698e-02 5.74494623672e-02 5.74494623672e-02 + 6.13379141192e-02 5.66331890923e-02 5.08044555558e-02 4.44094609233e-02 3.79563421300e-02 3.18414068716e-02 + 2.63252408289e-02 2.15413174517e-02 1.75241772421e-02 1.42425749040e-02 1.16276251073e-02 9.59384043225e-03 + 8.05519399644e-03 6.93665223838e-03 6.17967298585e-03 5.74257125314e-03 5.59978938003e-03 5.74257125314e-03 + 6.17967298585e-03 6.93665223838e-03 8.05519399644e-03 9.59384043225e-03 1.16276251073e-02 1.42425749040e-02 + 1.75241772421e-02 2.15413174517e-02 2.63252408289e-02 3.18414068716e-02 3.79563421300e-02 4.44094609233e-02 + 5.08044555558e-02 5.66331890923e-02 6.13379141192e-02 6.44054743742e-02 6.54719417706e-02 6.44054743742e-02 + 6.55352798807e-02 5.94462807362e-02 5.24194501424e-02 4.50819394473e-02 3.79563421300e-02 3.14127386696e-02 + 2.56635113913e-02 2.07887392229e-02 1.67754563001e-02 1.35553259639e-02 1.10330000246e-02 9.10613117226e-03 + 7.68014935330e-03 6.67761981445e-03 6.04118457084e-03 5.73268604942e-03 5.73268604942e-03 6.04118457084e-03 + 6.67761981445e-03 7.68014935330e-03 9.10613117226e-03 1.10330000246e-02 1.35553259639e-02 1.67754563001e-02 + 2.07887392229e-02 2.56635113913e-02 3.14127386696e-02 3.79563421300e-02 4.50819394473e-02 5.24194501424e-02 + 5.94462807362e-02 6.55352798807e-02 7.00474085615e-02 7.24538631804e-02 7.24538631804e-02 7.00474085615e-02 + 6.77723654588e-02 6.04237632524e-02 5.24194501424e-02 4.44094609233e-02 3.68889471691e-02 3.01717861136e-02 + 2.44059448105e-02 1.96135589165e-02 1.57370100687e-02 1.26769712537e-02 1.03186231402e-02 8.54973346172e-03 + 7.27338017313e-03 6.41444748147e-03 5.92021996667e-03 5.75903981319e-03 5.92021996667e-03 6.41444748147e-03 + 7.27338017313e-03 8.54973346172e-03 1.03186231402e-02 1.26769712537e-02 1.57370100687e-02 1.96135589165e-02 + 2.44059448105e-02 3.01717861136e-02 3.68889471691e-02 4.44094609233e-02 5.24194501424e-02 6.04237632524e-02 + 6.77723654588e-02 7.37387049341e-02 7.76449689484e-02 7.90059272690e-02 7.76449689484e-02 7.37387049341e-02 + 6.77723654588e-02 5.94462807362e-02 5.08044555558e-02 4.24686468881e-02 3.48695445110e-02 2.82446089484e-02 + 2.26718438342e-02 1.81196807915e-02 1.44944499034e-02 1.16751572683e-02 9.53627070961e-03 7.96341795569e-03 + 6.86339437793e-03 6.16759269815e-03 5.83098728503e-03 5.83098728503e-03 6.16759269815e-03 6.86339437793e-03 + 7.96341795569e-03 9.53627070961e-03 1.16751572683e-02 1.44944499034e-02 1.81196807915e-02 2.26718438342e-02 + 2.82446089484e-02 3.48695445110e-02 4.24686468881e-02 5.08044555558e-02 5.94462807362e-02 6.77723654588e-02 + 7.50243106749e-02 8.04193974336e-02 8.33038946145e-02 8.33038946145e-02 8.04193974336e-02 7.50243106749e-02 + 6.55352798807e-02 5.66331890923e-02 4.77625301985e-02 3.94725484932e-02 3.21049723875e-02 2.58139075627e-02 + 2.06126999880e-02 1.64272283654e-02 1.31397287366e-02 1.06181928008e-02 8.73551184506e-03 7.38252390656e-03 + 6.47483593539e-03 5.95356833121e-03 5.78371930190e-03 5.95356833121e-03 6.47483593539e-03 7.38252390656e-03 + 8.73551184506e-03 1.06181928008e-02 1.31397287366e-02 1.64272283654e-02 2.06126999880e-02 2.58139075627e-02 + 3.21049723875e-02 3.94725484932e-02 4.77625301985e-02 5.66331890923e-02 6.55352798807e-02 7.37387049341e-02 + 8.04193974336e-02 8.48028174918e-02 8.63317298438e-02 8.48028174918e-02 8.04193974336e-02 7.37387049341e-02 + 6.13379141192e-02 5.23143637463e-02 4.36277000850e-02 3.57259716101e-02 2.88533907006e-02 2.30866420056e-02 + 1.83878553878e-02 1.46550533623e-02 1.17590249893e-02 9.56702175361e-03 7.95863052826e-03 6.83583874198e-03 + 6.12657930585e-03 5.78371930190e-03 5.78371930190e-03 6.12657930585e-03 6.83583874198e-03 7.95863052826e-03 + 9.56702175361e-03 1.17590249893e-02 1.46550533623e-02 1.83878553878e-02 2.30866420056e-02 2.88533907006e-02 + 3.57259716101e-02 4.36277000850e-02 5.23143637463e-02 6.13379141192e-02 7.00474085615e-02 7.76449689484e-02 + 8.33038946145e-02 8.63317298438e-02 8.63317298438e-02 8.33038946145e-02 7.76449689484e-02 7.00474085615e-02 + 5.56676247698e-02 4.69561004766e-02 3.88104397494e-02 3.15673758761e-02 2.53797852965e-02 2.02621880335e-02 + 1.61427916872e-02 1.29064893850e-02 1.04238516982e-02 8.57007132232e-03 7.23785699764e-03 6.34416762186e-03 + 5.83098728503e-03 5.66378434823e-03 5.83098728503e-03 6.34416762186e-03 7.23785699764e-03 8.57007132232e-03 + 1.04238516982e-02 1.29064893850e-02 1.61427916872e-02 2.02621880335e-02 2.53797852965e-02 3.15673758761e-02 + 3.88104397494e-02 4.69561004766e-02 5.56676247698e-02 6.44054743742e-02 7.24538631804e-02 7.90059272690e-02 + 8.33038946145e-02 8.48028174918e-02 8.33038946145e-02 7.90059272690e-02 7.24538631804e-02 6.44054743742e-02 + 4.91148354625e-02 4.10670403681e-02 3.37228748044e-02 2.73140021666e-02 2.19185274002e-02 1.75083321070e-02 + 1.39945083398e-02 1.12609832188e-02 9.18679124184e-03 7.66146344666e-03 6.59479473082e-03 5.92021996667e-03 + 5.59394004869e-03 5.59394004869e-03 5.92021996667e-03 6.59479473082e-03 7.66146344666e-03 9.18679124184e-03 + 1.12609832188e-02 1.39945083398e-02 1.75083321070e-02 2.19185274002e-02 2.73140021666e-02 3.37228748044e-02 + 4.10670403681e-02 4.91148354625e-02 5.74494623672e-02 6.54719417706e-02 7.24538631804e-02 7.76449689484e-02 + 8.04193974336e-02 8.04193974336e-02 7.76449689484e-02 7.24538631804e-02 6.54719417706e-02 5.74494623672e-02 + 4.22610610741e-02 3.51127517762e-02 2.87187367840e-02 2.32231030162e-02 1.86504890434e-02 1.49488960464e-02 + 1.20255038743e-02 9.77183223433e-03 8.08133005705e-03 6.86170422323e-03 6.04118457084e-03 5.56920678348e-03 + 5.41531278039e-03 5.56920678348e-03 6.04118457084e-03 6.86170422323e-03 8.08133005705e-03 9.77183223433e-03 + 1.20255038743e-02 1.49488960464e-02 1.86504890434e-02 2.32231030162e-02 2.87187367840e-02 3.51127517762e-02 + 4.22610610741e-02 4.98633146719e-02 5.74494623672e-02 6.44054743742e-02 7.00474085615e-02 7.37387049341e-02 + 7.50243106749e-02 7.37387049341e-02 7.00474085615e-02 6.44054743742e-02 5.74494623672e-02 4.98633146719e-02 + 3.18414068716e-02 2.63252408289e-02 2.15413174517e-02 1.75241772421e-02 1.42425749040e-02 1.16276251073e-02 + 9.59384043225e-03 8.05519399644e-03 6.93665223838e-03 6.17967298585e-03 5.74257125314e-03 5.59978938003e-03 + 5.74257125314e-03 6.17967298585e-03 6.93665223838e-03 8.05519399644e-03 9.59384043225e-03 1.16276251073e-02 + 1.42425749040e-02 1.75241772421e-02 2.15413174517e-02 2.63252408289e-02 3.18414068716e-02 3.79563421300e-02 + 4.44094609233e-02 5.08044555558e-02 5.66331890923e-02 6.13379141192e-02 6.44054743742e-02 6.54719417706e-02 + 6.44054743742e-02 6.13379141192e-02 5.66331890923e-02 5.08044555558e-02 4.44094609233e-02 3.79563421300e-02 + 2.63252408289e-02 2.18005508565e-02 1.79167348748e-02 1.46810426016e-02 1.20550163598e-02 9.97511028176e-03 + 8.36917339040e-03 7.16922584820e-03 6.31909087196e-03 5.77651892440e-03 5.51272438194e-03 5.51272438194e-03 + 5.77651892440e-03 6.31909087196e-03 7.16922584820e-03 8.36917339040e-03 9.97511028176e-03 1.20550163598e-02 + 1.46810426016e-02 1.79167348748e-02 2.18005508565e-02 2.63252408289e-02 3.14127386696e-02 3.68889471691e-02 + 4.24686468881e-02 4.77625301985e-02 5.23143637463e-02 5.56676247698e-02 5.74494623672e-02 5.74494623672e-02 + 5.56676247698e-02 5.23143637463e-02 4.77625301985e-02 4.24686468881e-02 3.68889471691e-02 3.14127386696e-02 + 2.15413174517e-02 1.79167348748e-02 1.48317912783e-02 1.22786655737e-02 1.02181471415e-02 8.59555582378e-03 + 7.35383003280e-03 6.44245195186e-03 5.82127807001e-03 5.46093720174e-03 5.34296096392e-03 5.46093720174e-03 + 5.82127807001e-03 6.44245195186e-03 7.35383003280e-03 8.59555582378e-03 1.02181471415e-02 1.22786655737e-02 + 1.48317912783e-02 1.79167348748e-02 2.15413174517e-02 2.56635113913e-02 3.01717861136e-02 3.48695445110e-02 + 3.94725484932e-02 4.36277000850e-02 4.69561004766e-02 4.91148354625e-02 4.98633146719e-02 4.91148354625e-02 + 4.69561004766e-02 4.36277000850e-02 3.94725484932e-02 3.48695445110e-02 3.01717861136e-02 2.56635113913e-02 + 1.75241772421e-02 1.46810426016e-02 1.22786655737e-02 1.03016601350e-02 8.71419097250e-03 7.47255069610e-03 + 6.53448601861e-03 5.86418256271e-03 5.43377044817e-03 5.22371135458e-03 5.22371135458e-03 5.43377044817e-03 + 5.86418256271e-03 6.53448601861e-03 7.47255069610e-03 8.71419097250e-03 1.03016601350e-02 1.22786655737e-02 + 1.46810426016e-02 1.75241772421e-02 2.07887392229e-02 2.44059448105e-02 2.82446089484e-02 3.21049723875e-02 + 3.57259716101e-02 3.88104397494e-02 4.10670403681e-02 4.22610610741e-02 4.22610610741e-02 4.10670403681e-02 + 3.88104397494e-02 3.57259716101e-02 3.21049723875e-02 2.82446089484e-02 2.44059448105e-02 2.07887392229e-02 + 1.42425749040e-02 1.20550163598e-02 1.02181471415e-02 8.71419097250e-03 7.51351058269e-03 6.58362639444e-03 + 5.89466652251e-03 5.42174879265e-03 5.14599535674e-03 5.05545032098e-03 5.14599535674e-03 5.42174879265e-03 + 5.89466652251e-03 6.58362639444e-03 7.51351058269e-03 8.71419097250e-03 1.02181471415e-02 1.20550163598e-02 + 1.42425749040e-02 1.67754563001e-02 1.96135589165e-02 2.26718438342e-02 2.58139075627e-02 2.88533907006e-02 + 3.15673758761e-02 3.37228748044e-02 3.51127517762e-02 3.55932306397e-02 3.51127517762e-02 3.37228748044e-02 + 3.15673758761e-02 2.88533907006e-02 2.58139075627e-02 2.26718438342e-02 1.96135589165e-02 1.67754563001e-02 + 1.16276251073e-02 9.97511028176e-03 8.59555582378e-03 7.47255069610e-03 6.58362639444e-03 5.90565973456e-03 + 5.41768978229e-03 5.10253249618e-03 4.94806264494e-03 4.94806264494e-03 5.10253249618e-03 5.41768978229e-03 + 5.90565973456e-03 6.58362639444e-03 7.47255069610e-03 8.59555582378e-03 9.97511028176e-03 1.16276251073e-02 + 1.35553259639e-02 1.57370100687e-02 1.81196807915e-02 2.06126999880e-02 2.30866420056e-02 2.53797852965e-02 + 2.73140021666e-02 2.87187367840e-02 2.94586793037e-02 2.94586793037e-02 2.87187367840e-02 2.73140021666e-02 + 2.53797852965e-02 2.30866420056e-02 2.06126999880e-02 1.81196807915e-02 1.57370100687e-02 1.35553259639e-02 + 9.59384043225e-03 8.36917339040e-03 7.35383003280e-03 6.53448601861e-03 5.89466652251e-03 5.41768978229e-03 + 5.08859106656e-03 4.89581524939e-03 4.83232712929e-03 4.89581524939e-03 5.08859106656e-03 5.41768978229e-03 + 5.89466652251e-03 6.53448601861e-03 7.35383003280e-03 8.36917339040e-03 9.59384043225e-03 1.10330000246e-02 + 1.26769712537e-02 1.44944499034e-02 1.64272283654e-02 1.83878553878e-02 2.02621880335e-02 2.19185274002e-02 + 2.32231030162e-02 2.40594329852e-02 2.43476957086e-02 2.40594329852e-02 2.32231030162e-02 2.19185274002e-02 + 2.02621880335e-02 1.83878553878e-02 1.64272283654e-02 1.44944499034e-02 1.26769712537e-02 1.10330000246e-02 + 8.05519399644e-03 7.16922584820e-03 6.44245195186e-03 5.86418256271e-03 5.42174879265e-03 5.10253249618e-03 + 4.89581524939e-03 4.79423577304e-03 4.79423577304e-03 4.89581524939e-03 5.10253249618e-03 5.42174879265e-03 + 5.86418256271e-03 6.44245195186e-03 7.16922584820e-03 8.05519399644e-03 9.10613117226e-03 1.03186231402e-02 + 1.16751572683e-02 1.31397287366e-02 1.46550533623e-02 1.61427916872e-02 1.75083321070e-02 1.86504890434e-02 + 1.94746684497e-02 1.99070659239e-02 1.99070659239e-02 1.94746684497e-02 1.86504890434e-02 1.75083321070e-02 + 1.61427916872e-02 1.46550533623e-02 1.31397287366e-02 1.16751572683e-02 1.03186231402e-02 9.10613117226e-03 + 6.93665223838e-03 6.31909087196e-03 5.82127807001e-03 5.43377044817e-03 5.14599535674e-03 4.94806264494e-03 + 4.83232712929e-03 4.79423577304e-03 4.83232712929e-03 4.94806264494e-03 5.14599535674e-03 5.43377044817e-03 + 5.82127807001e-03 6.31909087196e-03 6.93665223838e-03 7.68014935330e-03 8.54973346172e-03 9.53627070961e-03 + 1.06181928008e-02 1.17590249893e-02 1.29064893850e-02 1.39945083398e-02 1.49488960464e-02 1.56960478729e-02 + 1.61729889157e-02 1.63370205752e-02 1.61729889157e-02 1.56960478729e-02 1.49488960464e-02 1.39945083398e-02 + 1.29064893850e-02 1.17590249893e-02 1.06181928008e-02 9.53627070961e-03 8.54973346172e-03 7.68014935330e-03 + 6.17967298585e-03 5.77651892440e-03 5.46093720174e-03 5.22371135458e-03 5.05545032098e-03 4.94806264494e-03 + 4.89581524939e-03 4.89581524939e-03 4.94806264494e-03 5.05545032098e-03 5.22371135458e-03 5.46093720174e-03 + 5.77651892440e-03 6.17967298585e-03 6.67761981445e-03 7.27338017313e-03 7.96341795569e-03 8.73551184506e-03 + 9.56702175361e-03 1.04238516982e-02 1.12609832188e-02 1.20255038743e-02 1.26620800682e-02 1.31198380533e-02 + 1.33594815778e-02 1.33594815778e-02 1.31198380533e-02 1.26620800682e-02 1.20255038743e-02 1.12609832188e-02 + 1.04238516982e-02 9.56702175361e-03 8.73551184506e-03 7.96341795569e-03 7.27338017313e-03 6.67761981445e-03 + 5.74257125314e-03 5.51272438194e-03 5.34296096392e-03 5.22371135458e-03 5.14599535674e-03 5.10253249618e-03 + 5.08859106656e-03 5.10253249618e-03 5.14599535674e-03 5.22371135458e-03 5.34296096392e-03 5.51272438194e-03 + 5.74257125314e-03 6.04118457084e-03 6.41444748147e-03 6.86339437793e-03 7.38252390656e-03 7.95863052826e-03 + 8.57007132232e-03 9.18679124184e-03 9.77183223433e-03 1.02846446979e-02 1.06856809758e-02 1.09414577715e-02 + 1.10293847869e-02 1.09414577715e-02 1.06856809758e-02 1.02846446979e-02 9.77183223433e-03 9.18679124184e-03 + 8.57007132232e-03 7.95863052826e-03 7.38252390656e-03 6.86339437793e-03 6.41444748147e-03 6.04118457084e-03 + 5.59978938003e-03 5.51272438194e-03 5.46093720174e-03 5.43377044817e-03 5.42174879265e-03 5.41768978229e-03 + 5.41768978229e-03 5.42174879265e-03 5.43377044817e-03 5.46093720174e-03 5.51272438194e-03 5.59978938003e-03 + 5.73268604942e-03 5.92021996667e-03 6.16759269815e-03 6.47483593539e-03 6.83583874198e-03 7.23785699764e-03 + 7.66146344666e-03 8.08133005705e-03 8.46823559623e-03 8.79214216133e-03 9.02578945364e-03 9.14830218340e-03 + 9.14830218340e-03 9.02578945364e-03 8.79214216133e-03 8.46823559623e-03 8.08133005705e-03 7.66146344666e-03 + 7.23785699764e-03 6.83583874198e-03 6.47483593539e-03 6.16759269815e-03 5.92021996667e-03 5.73268604942e-03 + 5.74257125314e-03 5.77651892440e-03 5.82127807001e-03 5.86418256271e-03 5.89466652251e-03 5.90565973456e-03 + 5.89466652251e-03 5.86418256271e-03 5.82127807001e-03 5.77651892440e-03 5.74257125314e-03 5.73268604942e-03 + 5.75903981319e-03 5.83098728503e-03 5.95356833121e-03 6.12657930585e-03 6.34416762186e-03 6.59479473082e-03 + 6.86170422323e-03 7.12420828954e-03 7.35981258047e-03 7.54684340873e-03 7.66717366082e-03 7.70870330534e-03 + 7.66717366082e-03 7.54684340873e-03 7.35981258047e-03 7.12420828954e-03 6.86170422323e-03 6.59479473082e-03 + 6.34416762186e-03 6.12657930585e-03 5.95356833121e-03 5.83098728503e-03 5.75903981319e-03 5.73268604942e-03 + 6.17967298585e-03 6.31909087196e-03 6.44245195186e-03 6.53448601861e-03 6.58362639444e-03 6.58362639444e-03 + 6.53448601861e-03 6.44245195186e-03 6.31909087196e-03 6.17967298585e-03 6.04118457084e-03 5.92021996667e-03 + 5.83098728503e-03 5.78371930190e-03 5.78371930190e-03 5.83098728503e-03 5.92021996667e-03 6.04118457084e-03 + 6.17967298585e-03 6.31909087196e-03 6.44245195186e-03 6.53448601861e-03 6.58362639444e-03 6.58362639444e-03 + 6.53448601861e-03 6.44245195186e-03 6.31909087196e-03 6.17967298585e-03 6.04118457084e-03 5.92021996667e-03 + 5.83098728503e-03 5.78371930190e-03 5.78371930190e-03 5.83098728503e-03 5.92021996667e-03 6.04118457084e-03 + 6.93665223838e-03 7.16922584820e-03 7.35383003280e-03 7.47255069610e-03 7.51351058269e-03 7.47255069610e-03 + 7.35383003280e-03 7.16922584820e-03 6.93665223838e-03 6.67761981445e-03 6.41444748147e-03 6.16759269815e-03 + 5.95356833121e-03 5.78371930190e-03 5.66378434823e-03 5.59394004869e-03 5.56920678348e-03 5.58034633768e-03 + 5.61528193683e-03 5.66079261571e-03 5.70420021497e-03 5.73495116497e-03 5.74602373426e-03 5.73495116497e-03 + 5.70420021497e-03 5.66079261571e-03 5.61528193683e-03 5.58034633768e-03 5.56920678348e-03 5.59394004869e-03 + 5.66378434823e-03 5.78371930190e-03 5.95356833121e-03 6.16759269815e-03 6.41444748147e-03 6.67761981445e-03 + 8.05519399644e-03 8.36917339040e-03 8.59555582378e-03 8.71419097250e-03 8.71419097250e-03 8.59555582378e-03 + 8.36917339040e-03 8.05519399644e-03 7.68014935330e-03 7.27338017313e-03 6.86339437793e-03 6.47483593539e-03 + 6.12657930585e-03 5.83098728503e-03 5.59394004869e-03 5.41531278039e-03 5.28994524639e-03 5.20914423543e-03 + 5.16243150929e-03 5.13913617973e-03 5.12972310883e-03 5.12697112440e-03 5.12697112440e-03 5.12972310883e-03 + 5.13913617973e-03 5.16243150929e-03 5.20914423543e-03 5.28994524639e-03 5.41531278039e-03 5.59394004869e-03 + 5.83098728503e-03 6.12657930585e-03 6.47483593539e-03 6.86339437793e-03 7.27338017313e-03 7.68014935330e-03 + 9.59384043225e-03 9.97511028176e-03 1.02181471415e-02 1.03016601350e-02 1.02181471415e-02 9.97511028176e-03 + 9.59384043225e-03 9.10613117226e-03 8.54973346172e-03 7.96341795569e-03 7.38252390656e-03 6.83583874198e-03 + 6.34416762186e-03 5.92021996667e-03 5.56920678348e-03 5.28994524639e-03 5.07652462266e-03 4.92029966810e-03 + 4.81172327806e-03 4.74176747355e-03 4.70304044562e-03 4.69069423954e-03 4.70304044562e-03 4.74176747355e-03 + 4.81172327806e-03 4.92029966810e-03 5.07652462266e-03 5.28994524639e-03 5.56920678348e-03 5.92021996667e-03 + 6.34416762186e-03 6.83583874198e-03 7.38252390656e-03 7.96341795569e-03 8.54973346172e-03 9.10613117226e-03 + 1.16276251073e-02 1.20550163598e-02 1.22786655737e-02 1.22786655737e-02 1.20550163598e-02 1.16276251073e-02 + 1.10330000246e-02 1.03186231402e-02 9.53627070961e-03 8.73551184506e-03 7.95863052826e-03 7.23785699764e-03 + 6.59479473082e-03 6.04118457084e-03 5.58034633768e-03 5.20914423543e-03 4.92029966810e-03 4.70458873539e-03 + 4.55262020357e-03 4.45623663297e-03 4.40955813989e-03 4.40955813989e-03 4.45623663297e-03 4.55262020357e-03 + 4.70458873539e-03 4.92029966810e-03 5.20914423543e-03 5.58034633768e-03 6.04118457084e-03 6.59479473082e-03 + 7.23785699764e-03 7.95863052826e-03 8.73551184506e-03 9.53627070961e-03 1.03186231402e-02 1.10330000246e-02 + 1.42425749040e-02 1.46810426016e-02 1.48317912783e-02 1.46810426016e-02 1.42425749040e-02 1.35553259639e-02 + 1.26769712537e-02 1.16751572683e-02 1.06181928008e-02 9.56702175361e-03 8.57007132232e-03 7.66146344666e-03 + 6.86170422323e-03 6.17967298585e-03 5.61528193683e-03 5.16243150929e-03 4.81172327806e-03 4.55262020357e-03 + 4.37525079151e-03 4.27192322596e-03 4.23798561825e-03 4.27192322596e-03 4.37525079151e-03 4.55262020357e-03 + 4.81172327806e-03 5.16243150929e-03 5.61528193683e-03 6.17967298585e-03 6.86170422323e-03 7.66146344666e-03 + 8.57007132232e-03 9.56702175361e-03 1.06181928008e-02 1.16751572683e-02 1.26769712537e-02 1.35553259639e-02 + 1.75241772421e-02 1.79167348748e-02 1.79167348748e-02 1.75241772421e-02 1.67754563001e-02 1.57370100687e-02 + 1.44944499034e-02 1.31397287366e-02 1.17590249893e-02 1.04238516982e-02 9.18679124184e-03 8.08133005705e-03 + 7.12420828954e-03 6.31909087196e-03 5.66079261571e-03 5.13913617973e-03 4.74176747355e-03 4.45623663297e-03 + 4.27192322596e-03 4.18152878343e-03 4.18152878343e-03 4.27192322596e-03 4.45623663297e-03 4.74176747355e-03 + 5.13913617973e-03 5.66079261571e-03 6.31909087196e-03 7.12420828954e-03 8.08133005705e-03 9.18679124184e-03 + 1.04238516982e-02 1.17590249893e-02 1.31397287366e-02 1.44944499034e-02 1.57370100687e-02 1.67754563001e-02 + 2.15413174517e-02 2.18005508565e-02 2.15413174517e-02 2.07887392229e-02 1.96135589165e-02 1.81196807915e-02 + 1.64272283654e-02 1.46550533623e-02 1.29064893850e-02 1.12609832188e-02 9.77183223433e-03 8.46823559623e-03 + 7.35981258047e-03 6.44245195186e-03 5.70420021497e-03 5.12972310883e-03 4.70304044562e-03 4.40955813989e-03 + 4.23798561825e-03 4.18152878343e-03 4.23798561825e-03 4.40955813989e-03 4.70304044562e-03 5.12972310883e-03 + 5.70420021497e-03 6.44245195186e-03 7.35981258047e-03 8.46823559623e-03 9.77183223433e-03 1.12609832188e-02 + 1.29064893850e-02 1.46550533623e-02 1.64272283654e-02 1.81196807915e-02 1.96135589165e-02 2.07887392229e-02 + 2.63252408289e-02 2.63252408289e-02 2.56635113913e-02 2.44059448105e-02 2.26718438342e-02 2.06126999880e-02 + 1.83878553878e-02 1.61427916872e-02 1.39945083398e-02 1.20255038743e-02 1.02846446979e-02 8.79214216133e-03 + 7.54684340873e-03 6.53448601861e-03 5.73495116497e-03 5.12697112440e-03 4.69069423954e-03 4.40955813989e-03 + 4.27192322596e-03 4.27192322596e-03 4.40955813989e-03 4.69069423954e-03 5.12697112440e-03 5.73495116497e-03 + 6.53448601861e-03 7.54684340873e-03 8.79214216133e-03 1.02846446979e-02 1.20255038743e-02 1.39945083398e-02 + 1.61427916872e-02 1.83878553878e-02 2.06126999880e-02 2.26718438342e-02 2.44059448105e-02 2.56635113913e-02 + 3.18414068716e-02 3.14127386696e-02 3.01717861136e-02 2.82446089484e-02 2.58139075627e-02 2.30866420056e-02 + 2.02621880335e-02 1.75083321070e-02 1.49488960464e-02 1.26620800682e-02 1.06856809758e-02 9.02578945364e-03 + 7.66717366082e-03 6.58362639444e-03 5.74602373426e-03 5.12697112440e-03 4.70304044562e-03 4.45623663297e-03 + 4.37525079151e-03 4.45623663297e-03 4.70304044562e-03 5.12697112440e-03 5.74602373426e-03 6.58362639444e-03 + 7.66717366082e-03 9.02578945364e-03 1.06856809758e-02 1.26620800682e-02 1.49488960464e-02 1.75083321070e-02 + 2.02621880335e-02 2.30866420056e-02 2.58139075627e-02 2.82446089484e-02 3.01717861136e-02 3.14127386696e-02 + 3.79563421300e-02 3.68889471691e-02 3.48695445110e-02 3.21049723875e-02 2.88533907006e-02 2.53797852965e-02 + 2.19185274002e-02 1.86504890434e-02 1.56960478729e-02 1.31198380533e-02 1.09414577715e-02 9.14830218340e-03 + 7.70870330534e-03 6.58362639444e-03 5.73495116497e-03 5.12972310883e-03 4.74176747355e-03 4.55262020357e-03 + 4.55262020357e-03 4.74176747355e-03 5.12972310883e-03 5.73495116497e-03 6.58362639444e-03 7.70870330534e-03 + 9.14830218340e-03 1.09414577715e-02 1.31198380533e-02 1.56960478729e-02 1.86504890434e-02 2.19185274002e-02 + 2.53797852965e-02 2.88533907006e-02 3.21049723875e-02 3.48695445110e-02 3.68889471691e-02 3.79563421300e-02 + 4.44094609233e-02 4.24686468881e-02 3.94725484932e-02 3.57259716101e-02 3.15673758761e-02 2.73140021666e-02 + 2.32231030162e-02 1.94746684497e-02 1.61729889157e-02 1.33594815778e-02 1.10293847869e-02 9.14830218340e-03 + 7.66717366082e-03 6.53448601861e-03 5.70420021497e-03 5.13913617973e-03 4.81172327806e-03 4.70458873539e-03 + 4.81172327806e-03 5.13913617973e-03 5.70420021497e-03 6.53448601861e-03 7.66717366082e-03 9.14830218340e-03 + 1.10293847869e-02 1.33594815778e-02 1.61729889157e-02 1.94746684497e-02 2.32231030162e-02 2.73140021666e-02 + 3.15673758761e-02 3.57259716101e-02 3.94725484932e-02 4.24686468881e-02 4.44094609233e-02 4.50819394473e-02 + 5.08044555558e-02 4.77625301985e-02 4.36277000850e-02 3.88104397494e-02 3.37228748044e-02 2.87187367840e-02 + 2.40594329852e-02 1.99070659239e-02 1.63370205752e-02 1.33594815778e-02 1.09414577715e-02 9.02578945364e-03 + 7.54684340873e-03 6.44245195186e-03 5.66079261571e-03 5.16243150929e-03 4.92029966810e-03 4.92029966810e-03 + 5.16243150929e-03 5.66079261571e-03 6.44245195186e-03 7.54684340873e-03 9.02578945364e-03 1.09414577715e-02 + 1.33594815778e-02 1.63370205752e-02 1.99070659239e-02 2.40594329852e-02 2.87187367840e-02 3.37228748044e-02 + 3.88104397494e-02 4.36277000850e-02 4.77625301985e-02 5.08044555558e-02 5.24194501424e-02 5.24194501424e-02 + 5.66331890923e-02 5.23143637463e-02 4.69561004766e-02 4.10670403681e-02 3.51127517762e-02 2.94586793037e-02 + 2.43476957086e-02 1.99070659239e-02 1.61729889157e-02 1.31198380533e-02 1.06856809758e-02 8.79214216133e-03 + 7.35981258047e-03 6.31909087196e-03 5.61528193683e-03 5.20914423543e-03 5.07652462266e-03 5.20914423543e-03 + 5.61528193683e-03 6.31909087196e-03 7.35981258047e-03 8.79214216133e-03 1.06856809758e-02 1.31198380533e-02 + 1.61729889157e-02 1.99070659239e-02 2.43476957086e-02 2.94586793037e-02 3.51127517762e-02 4.10670403681e-02 + 4.69561004766e-02 5.23143637463e-02 5.66331890923e-02 5.94462807362e-02 6.04237632524e-02 5.94462807362e-02 + 6.13379141192e-02 5.56676247698e-02 4.91148354625e-02 4.22610610741e-02 3.55932306397e-02 2.94586793037e-02 + 2.40594329852e-02 1.94746684497e-02 1.56960478729e-02 1.26620800682e-02 1.02846446979e-02 8.46823559623e-03 + 7.12420828954e-03 6.17967298585e-03 5.58034633768e-03 5.28994524639e-03 5.28994524639e-03 5.58034633768e-03 + 6.17967298585e-03 7.12420828954e-03 8.46823559623e-03 1.02846446979e-02 1.26620800682e-02 1.56960478729e-02 + 1.94746684497e-02 2.40594329852e-02 2.94586793037e-02 3.55932306397e-02 4.22610610741e-02 4.91148354625e-02 + 5.56676247698e-02 6.13379141192e-02 6.55352798807e-02 6.77723654588e-02 6.77723654588e-02 6.55352798807e-02 + 6.44054743742e-02 5.74494623672e-02 4.98633146719e-02 4.22610610741e-02 3.51127517762e-02 2.87187367840e-02 + 2.32231030162e-02 1.86504890434e-02 1.49488960464e-02 1.20255038743e-02 9.77183223433e-03 8.08133005705e-03 + 6.86170422323e-03 6.04118457084e-03 5.56920678348e-03 5.41531278039e-03 5.56920678348e-03 6.04118457084e-03 + 6.86170422323e-03 8.08133005705e-03 9.77183223433e-03 1.20255038743e-02 1.49488960464e-02 1.86504890434e-02 + 2.32231030162e-02 2.87187367840e-02 3.51127517762e-02 4.22610610741e-02 4.98633146719e-02 5.74494623672e-02 + 6.44054743742e-02 7.00474085615e-02 7.37387049341e-02 7.50243106749e-02 7.37387049341e-02 7.00474085615e-02 + 6.54719417706e-02 5.74494623672e-02 4.91148354625e-02 4.10670403681e-02 3.37228748044e-02 2.73140021666e-02 + 2.19185274002e-02 1.75083321070e-02 1.39945083398e-02 1.12609832188e-02 9.18679124184e-03 7.66146344666e-03 + 6.59479473082e-03 5.92021996667e-03 5.59394004869e-03 5.59394004869e-03 5.92021996667e-03 6.59479473082e-03 + 7.66146344666e-03 9.18679124184e-03 1.12609832188e-02 1.39945083398e-02 1.75083321070e-02 2.19185274002e-02 + 2.73140021666e-02 3.37228748044e-02 4.10670403681e-02 4.91148354625e-02 5.74494623672e-02 6.54719417706e-02 + 7.24538631804e-02 7.76449689484e-02 8.04193974336e-02 8.04193974336e-02 7.76449689484e-02 7.24538631804e-02 + 6.44054743742e-02 5.56676247698e-02 4.69561004766e-02 3.88104397494e-02 3.15673758761e-02 2.53797852965e-02 + 2.02621880335e-02 1.61427916872e-02 1.29064893850e-02 1.04238516982e-02 8.57007132232e-03 7.23785699764e-03 + 6.34416762186e-03 5.83098728503e-03 5.66378434823e-03 5.83098728503e-03 6.34416762186e-03 7.23785699764e-03 + 8.57007132232e-03 1.04238516982e-02 1.29064893850e-02 1.61427916872e-02 2.02621880335e-02 2.53797852965e-02 + 3.15673758761e-02 3.88104397494e-02 4.69561004766e-02 5.56676247698e-02 6.44054743742e-02 7.24538631804e-02 + 7.90059272690e-02 8.33038946145e-02 8.48028174918e-02 8.33038946145e-02 7.90059272690e-02 7.24538631804e-02 + 6.13379141192e-02 5.23143637463e-02 4.36277000850e-02 3.57259716101e-02 2.88533907006e-02 2.30866420056e-02 + 1.83878553878e-02 1.46550533623e-02 1.17590249893e-02 9.56702175361e-03 7.95863052826e-03 6.83583874198e-03 + 6.12657930585e-03 5.78371930190e-03 5.78371930190e-03 6.12657930585e-03 6.83583874198e-03 7.95863052826e-03 + 9.56702175361e-03 1.17590249893e-02 1.46550533623e-02 1.83878553878e-02 2.30866420056e-02 2.88533907006e-02 + 3.57259716101e-02 4.36277000850e-02 5.23143637463e-02 6.13379141192e-02 7.00474085615e-02 7.76449689484e-02 + 8.33038946145e-02 8.63317298438e-02 8.63317298438e-02 8.33038946145e-02 7.76449689484e-02 7.00474085615e-02 + 5.66331890923e-02 4.77625301985e-02 3.94725484932e-02 3.21049723875e-02 2.58139075627e-02 2.06126999880e-02 + 1.64272283654e-02 1.31397287366e-02 1.06181928008e-02 8.73551184506e-03 7.38252390656e-03 6.47483593539e-03 + 5.95356833121e-03 5.78371930190e-03 5.95356833121e-03 6.47483593539e-03 7.38252390656e-03 8.73551184506e-03 + 1.06181928008e-02 1.31397287366e-02 1.64272283654e-02 2.06126999880e-02 2.58139075627e-02 3.21049723875e-02 + 3.94725484932e-02 4.77625301985e-02 5.66331890923e-02 6.55352798807e-02 7.37387049341e-02 8.04193974336e-02 + 8.48028174918e-02 8.63317298438e-02 8.48028174918e-02 8.04193974336e-02 7.37387049341e-02 6.55352798807e-02 + 5.08044555558e-02 4.24686468881e-02 3.48695445110e-02 2.82446089484e-02 2.26718438342e-02 1.81196807915e-02 + 1.44944499034e-02 1.16751572683e-02 9.53627070961e-03 7.96341795569e-03 6.86339437793e-03 6.16759269815e-03 + 5.83098728503e-03 5.83098728503e-03 6.16759269815e-03 6.86339437793e-03 7.96341795569e-03 9.53627070961e-03 + 1.16751572683e-02 1.44944499034e-02 1.81196807915e-02 2.26718438342e-02 2.82446089484e-02 3.48695445110e-02 + 4.24686468881e-02 5.08044555558e-02 5.94462807362e-02 6.77723654588e-02 7.50243106749e-02 8.04193974336e-02 + 8.33038946145e-02 8.33038946145e-02 8.04193974336e-02 7.50243106749e-02 6.77723654588e-02 5.94462807362e-02 + 4.44094609233e-02 3.68889471691e-02 3.01717861136e-02 2.44059448105e-02 1.96135589165e-02 1.57370100687e-02 + 1.26769712537e-02 1.03186231402e-02 8.54973346172e-03 7.27338017313e-03 6.41444748147e-03 5.92021996667e-03 + 5.75903981319e-03 5.92021996667e-03 6.41444748147e-03 7.27338017313e-03 8.54973346172e-03 1.03186231402e-02 + 1.26769712537e-02 1.57370100687e-02 1.96135589165e-02 2.44059448105e-02 3.01717861136e-02 3.68889471691e-02 + 4.44094609233e-02 5.24194501424e-02 6.04237632524e-02 6.77723654588e-02 7.37387049341e-02 7.76449689484e-02 + 7.90059272690e-02 7.76449689484e-02 7.37387049341e-02 6.77723654588e-02 6.04237632524e-02 5.24194501424e-02 + 3.79563421300e-02 3.14127386696e-02 2.56635113913e-02 2.07887392229e-02 1.67754563001e-02 1.35553259639e-02 + 1.10330000246e-02 9.10613117226e-03 7.68014935330e-03 6.67761981445e-03 6.04118457084e-03 5.73268604942e-03 + 5.73268604942e-03 6.04118457084e-03 6.67761981445e-03 7.68014935330e-03 9.10613117226e-03 1.10330000246e-02 + 1.35553259639e-02 1.67754563001e-02 2.07887392229e-02 2.56635113913e-02 3.14127386696e-02 3.79563421300e-02 + 4.50819394473e-02 5.24194501424e-02 5.94462807362e-02 6.55352798807e-02 7.00474085615e-02 7.24538631804e-02 + 7.24538631804e-02 7.00474085615e-02 6.55352798807e-02 5.94462807362e-02 5.24194501424e-02 4.50819394473e-02 + 2.89647599965e-02 2.40237109616e-02 1.97871783123e-02 1.62588522549e-02 1.33939588194e-02 1.11228159589e-02 + 9.36769905218e-03 8.05519399644e-03 7.12420828954e-03 6.52902358143e-03 6.23916674188e-03 6.23916674188e-03 + 6.52902358143e-03 7.12420828954e-03 8.05519399644e-03 9.36769905218e-03 1.11228159589e-02 1.33939588194e-02 + 1.62588522549e-02 1.97871783123e-02 2.40237109616e-02 2.89647599965e-02 3.45282284639e-02 4.05244812822e-02 + 4.66403070569e-02 5.24477482650e-02 5.74449785733e-02 6.11288569567e-02 6.30873277659e-02 6.30873277659e-02 + 6.11288569567e-02 5.74449785733e-02 5.24477482650e-02 4.66403070569e-02 4.05244812822e-02 3.45282284639e-02 + 2.40237109616e-02 2.00258575799e-02 1.66250325509e-02 1.38094745262e-02 1.15351431719e-02 9.74245511371e-03 + 8.36917339040e-03 7.35981258047e-03 6.67049181789e-03 6.26978037715e-03 6.13840739734e-03 6.26978037715e-03 + 6.67049181789e-03 7.35981258047e-03 8.36917339040e-03 9.74245511371e-03 1.15351431719e-02 1.38094745262e-02 + 1.66250325509e-02 2.00258575799e-02 2.40237109616e-02 2.85763383726e-02 3.35632692529e-02 3.87673596218e-02 + 4.38725463784e-02 4.84855850881e-02 5.21839135623e-02 5.45841783826e-02 5.54167137150e-02 5.45841783826e-02 + 5.21839135623e-02 4.84855850881e-02 4.38725463784e-02 3.87673596218e-02 3.35632692529e-02 2.85763383726e-02 + 1.97871783123e-02 1.66250325509e-02 1.39522993746e-02 1.17508350709e-02 9.98127039361e-03 8.59555582378e-03 + 7.54684340873e-03 6.79567554150e-03 6.31209415558e-03 6.07562992209e-03 6.07562992209e-03 6.31209415558e-03 + 6.79567554150e-03 7.54684340873e-03 8.59555582378e-03 9.98127039361e-03 1.17508350709e-02 1.39522993746e-02 + 1.66250325509e-02 1.97871783123e-02 2.34202555044e-02 2.74512061786e-02 3.17358390207e-02 3.60511821341e-02 + 4.01041807768e-02 4.35604474537e-02 4.60913389830e-02 4.74313143781e-02 4.74313143781e-02 4.60913389830e-02 + 4.35604474537e-02 4.01041807768e-02 3.60511821341e-02 3.17358390207e-02 2.74512061786e-02 2.34202555044e-02 + 1.62588522549e-02 1.38094745262e-02 1.17508350709e-02 1.00633149755e-02 8.71419097250e-03 7.66717366082e-03 + 6.88914005847e-03 6.35335851926e-03 6.04016501968e-03 5.93719631865e-03 6.04016501968e-03 6.35335851926e-03 + 6.88914005847e-03 7.66717366082e-03 8.71419097250e-03 1.00633149755e-02 1.17508350709e-02 1.38094745262e-02 + 1.62588522549e-02 1.90940368490e-02 2.22726314479e-02 2.57019293917e-02 2.92302840650e-02 3.26483588385e-02 + 3.57044700685e-02 3.81345549630e-02 3.97029159910e-02 4.02453701311e-02 3.97029159910e-02 3.81345549630e-02 + 3.57044700685e-02 3.26483588385e-02 2.92302840650e-02 2.57019293917e-02 2.22726314479e-02 1.90940368490e-02 + 1.33939588194e-02 1.15351431719e-02 9.98127039361e-03 8.71419097250e-03 7.70870330534e-03 6.93908976898e-03 + 6.38291972351e-03 6.02253909249e-03 5.84558656512e-03 5.84558656512e-03 6.02253909249e-03 6.38291972351e-03 + 6.93908976898e-03 7.70870330534e-03 8.71419097250e-03 9.98127039361e-03 1.15351431719e-02 1.33939588194e-02 + 1.55601992220e-02 1.80109897723e-02 2.06884779452e-02 2.34923498457e-02 2.62778950395e-02 2.88631293974e-02 + 3.10465495213e-02 3.26341221073e-02 3.34710625414e-02 3.34710625414e-02 3.26341221073e-02 3.10465495213e-02 + 2.88631293974e-02 2.62778950395e-02 2.34923498457e-02 2.06884779452e-02 1.80109897723e-02 1.55601992220e-02 + 1.11228159589e-02 9.74245511371e-03 8.59555582378e-03 7.66717366082e-03 6.93908976898e-03 6.39361872594e-03 + 6.01563766373e-03 5.79365065764e-03 5.72047031573e-03 5.79365065764e-03 6.01563766373e-03 6.39361872594e-03 + 6.93908976898e-03 7.66717366082e-03 8.59555582378e-03 9.74245511371e-03 1.11228159589e-02 1.27424344623e-02 + 1.45906790875e-02 1.66330383744e-02 1.88049742175e-02 2.10090352784e-02 2.31175818882e-02 2.49827563157e-02 + 2.64534808200e-02 2.73972646659e-02 2.77227537368e-02 2.73972646659e-02 2.64534808200e-02 2.49827563157e-02 + 2.31175818882e-02 2.10090352784e-02 1.88049742175e-02 1.66330383744e-02 1.45906790875e-02 1.27424344623e-02 + 9.36769905218e-03 8.36917339040e-03 7.54684340873e-03 6.88914005847e-03 6.38291972351e-03 6.01563766373e-03 + 5.77685140016e-03 5.65928321674e-03 5.65928321674e-03 5.77685140016e-03 6.01563766373e-03 6.38291972351e-03 + 6.88914005847e-03 7.54684340873e-03 8.36917339040e-03 9.36769905218e-03 1.05489279259e-02 1.19093466628e-02 + 1.34297677852e-02 1.50702461704e-02 1.67669692380e-02 1.84326960165e-02 1.99620901041e-02 2.12421582644e-02 + 2.21666114252e-02 2.26519365039e-02 2.26519365039e-02 2.21666114252e-02 2.12421582644e-02 1.99620901041e-02 + 1.84326960165e-02 1.67669692380e-02 1.50702461704e-02 1.34297677852e-02 1.19093466628e-02 1.05489279259e-02 + 8.05519399644e-03 7.35981258047e-03 6.79567554150e-03 6.35335851926e-03 6.02253909249e-03 5.79365065764e-03 + 5.65928321674e-03 5.61497680711e-03 5.65928321674e-03 5.79365065764e-03 6.02253909249e-03 6.35335851926e-03 + 6.79567554150e-03 7.35981258047e-03 8.05519399644e-03 8.88822832040e-03 9.85925299562e-03 1.09586567104e-02 + 1.21629507848e-02 1.34318126710e-02 1.47072813037e-02 1.59162612755e-02 1.69767793036e-02 1.78072941675e-02 + 1.83376793613e-02 1.85201445811e-02 1.83376793613e-02 1.78072941675e-02 1.69767793036e-02 1.59162612755e-02 + 1.47072813037e-02 1.34318126710e-02 1.21629507848e-02 1.09586567104e-02 9.85925299562e-03 8.88822832040e-03 + 7.12420828954e-03 6.67049181789e-03 6.31209415558e-03 6.04016501968e-03 5.84558656512e-03 5.72047031573e-03 + 5.65928321674e-03 5.65928321674e-03 5.72047031573e-03 5.84558656512e-03 6.04016501968e-03 6.31209415558e-03 + 6.67049181789e-03 7.12420828954e-03 7.68014935330e-03 8.34122341388e-03 9.10381322670e-03 9.95507847617e-03 + 1.08706042529e-02 1.18131307076e-02 1.27333396536e-02 1.35733603577e-02 1.42727054437e-02 1.47756456624e-02 + 1.50389831834e-02 1.50389831834e-02 1.47756456624e-02 1.42727054437e-02 1.35733603577e-02 1.27333396536e-02 + 1.18131307076e-02 1.08706042529e-02 9.95507847617e-03 9.10381322670e-03 8.34122341388e-03 7.68014935330e-03 + 6.52902358143e-03 6.26978037715e-03 6.07562992209e-03 5.93719631865e-03 5.84558656512e-03 5.79365065764e-03 + 5.77685140016e-03 5.79365065764e-03 5.84558656512e-03 5.93719631865e-03 6.07562992209e-03 6.26978037715e-03 + 6.52902358143e-03 6.86170422323e-03 7.27338017313e-03 7.76490388909e-03 8.33057919998e-03 8.95658363692e-03 + 9.61987006090e-03 1.02881382638e-02 1.09215936737e-02 1.14766013692e-02 1.19105819676e-02 1.21873907787e-02 + 1.22825573408e-02 1.21873907787e-02 1.19105819676e-02 1.14766013692e-02 1.09215936737e-02 1.02881382638e-02 + 9.61987006090e-03 8.95658363692e-03 8.33057919998e-03 7.76490388909e-03 7.27338017313e-03 6.86170422323e-03 + 6.23916674188e-03 6.13840739734e-03 6.07562992209e-03 6.04016501968e-03 6.02253909249e-03 6.01563766373e-03 + 6.01563766373e-03 6.02253909249e-03 6.04016501968e-03 6.07562992209e-03 6.13840739734e-03 6.23916674188e-03 + 6.38840491477e-03 6.59479473082e-03 6.86339437793e-03 7.19410390186e-03 7.58058258839e-03 8.00955236461e-03 + 8.46060891145e-03 8.90705726329e-03 9.31810768724e-03 9.66211927865e-03 9.91029781221e-03 1.00404664762e-02 + 1.00404664762e-02 9.91029781221e-03 9.66211927865e-03 9.31810768724e-03 8.90705726329e-03 8.46060891145e-03 + 8.00955236461e-03 7.58058258839e-03 7.19410390186e-03 6.86339437793e-03 6.59479473082e-03 6.38840491477e-03 + 6.23916674188e-03 6.26978037715e-03 6.31209415558e-03 6.35335851926e-03 6.38291972351e-03 6.39361872594e-03 + 6.38291972351e-03 6.35335851926e-03 6.31209415558e-03 6.26978037715e-03 6.23916674188e-03 6.23361812745e-03 + 6.26545793635e-03 6.34416762186e-03 6.47483593539e-03 6.65719946009e-03 6.88519888788e-03 7.14689010595e-03 + 7.42492384580e-03 7.69793885145e-03 7.94279014126e-03 8.13716815266e-03 8.26229038338e-03 8.30549434438e-03 + 8.26229038338e-03 8.13716815266e-03 7.94279014126e-03 7.69793885145e-03 7.42492384580e-03 7.14689010595e-03 + 6.88519888788e-03 6.65719946009e-03 6.47483593539e-03 6.34416762186e-03 6.26545793635e-03 6.23361812745e-03 + 6.52902358143e-03 6.67049181789e-03 6.79567554150e-03 6.88914005847e-03 6.93908976898e-03 6.93908976898e-03 + 6.88914005847e-03 6.79567554150e-03 6.67049181789e-03 6.52902358143e-03 6.38840491477e-03 6.26545793635e-03 + 6.17468606834e-03 6.12657930585e-03 6.12657930585e-03 6.17468606834e-03 6.26545793635e-03 6.38840491477e-03 + 6.52902358143e-03 6.67049181789e-03 6.79567554150e-03 6.88914005847e-03 6.93908976898e-03 6.93908976898e-03 + 6.88914005847e-03 6.79567554150e-03 6.67049181789e-03 6.52902358143e-03 6.38840491477e-03 6.26545793635e-03 + 6.17468606834e-03 6.12657930585e-03 6.12657930585e-03 6.17468606834e-03 6.26545793635e-03 6.38840491477e-03 + 7.12420828954e-03 7.35981258047e-03 7.54684340873e-03 7.66717366082e-03 7.70870330534e-03 7.66717366082e-03 + 7.54684340873e-03 7.35981258047e-03 7.12420828954e-03 6.86170422323e-03 6.59479473082e-03 6.34416762186e-03 + 6.12657930585e-03 5.95356833121e-03 5.83098728503e-03 5.75903981319e-03 5.73268604942e-03 5.74257125314e-03 + 5.77651892440e-03 5.82127807001e-03 5.86418256271e-03 5.89466652251e-03 5.90565973456e-03 5.89466652251e-03 + 5.86418256271e-03 5.82127807001e-03 5.77651892440e-03 5.74257125314e-03 5.73268604942e-03 5.75903981319e-03 + 5.83098728503e-03 5.95356833121e-03 6.12657930585e-03 6.34416762186e-03 6.59479473082e-03 6.86170422323e-03 + 8.05519399644e-03 8.36917339040e-03 8.59555582378e-03 8.71419097250e-03 8.71419097250e-03 8.59555582378e-03 + 8.36917339040e-03 8.05519399644e-03 7.68014935330e-03 7.27338017313e-03 6.86339437793e-03 6.47483593539e-03 + 6.12657930585e-03 5.83098728503e-03 5.59394004869e-03 5.41531278039e-03 5.28994524639e-03 5.20914423543e-03 + 5.16243150929e-03 5.13913617973e-03 5.12972310883e-03 5.12697112440e-03 5.12697112440e-03 5.12972310883e-03 + 5.13913617973e-03 5.16243150929e-03 5.20914423543e-03 5.28994524639e-03 5.41531278039e-03 5.59394004869e-03 + 5.83098728503e-03 6.12657930585e-03 6.47483593539e-03 6.86339437793e-03 7.27338017313e-03 7.68014935330e-03 + 9.36769905218e-03 9.74245511371e-03 9.98127039361e-03 1.00633149755e-02 9.98127039361e-03 9.74245511371e-03 + 9.36769905218e-03 8.88822832040e-03 8.34122341388e-03 7.76490388909e-03 7.19410390186e-03 6.65719946009e-03 + 6.17468606834e-03 5.75903981319e-03 5.41531278039e-03 5.14226972170e-03 4.93405372394e-03 4.78210810048e-03 + 4.67692793169e-03 4.60945880297e-03 4.57225197605e-03 4.56041706509e-03 4.57225197605e-03 4.60945880297e-03 + 4.67692793169e-03 4.78210810048e-03 4.93405372394e-03 5.14226972170e-03 5.41531278039e-03 5.75903981319e-03 + 6.17468606834e-03 6.65719946009e-03 7.19410390186e-03 7.76490388909e-03 8.34122341388e-03 8.88822832040e-03 + 1.11228159589e-02 1.15351431719e-02 1.17508350709e-02 1.17508350709e-02 1.15351431719e-02 1.11228159589e-02 + 1.05489279259e-02 9.85925299562e-03 9.10381322670e-03 8.33057919998e-03 7.58058258839e-03 6.88519888788e-03 + 6.26545793635e-03 5.73268604942e-03 5.28994524639e-03 4.93405372394e-03 4.65785937656e-03 4.45230019628e-03 + 4.30805835198e-03 4.21692866215e-03 4.17292027232e-03 4.17292027232e-03 4.21692866215e-03 4.30805835198e-03 + 4.45230019628e-03 4.65785937656e-03 4.93405372394e-03 5.28994524639e-03 5.73268604942e-03 6.26545793635e-03 + 6.88519888788e-03 7.58058258839e-03 8.33057919998e-03 9.10381322670e-03 9.85925299562e-03 1.05489279259e-02 + 1.33939588194e-02 1.38094745262e-02 1.39522993746e-02 1.38094745262e-02 1.33939588194e-02 1.27424344623e-02 + 1.19093466628e-02 1.09586567104e-02 9.95507847617e-03 8.95658363692e-03 8.00955236461e-03 7.14689010595e-03 + 6.38840491477e-03 5.74257125314e-03 5.20914423543e-03 4.78210810048e-03 4.45230019628e-03 4.20942844716e-03 + 4.04374575730e-03 3.94752033538e-03 3.91597292758e-03 3.94752033538e-03 4.04374575730e-03 4.20942844716e-03 + 4.45230019628e-03 4.78210810048e-03 5.20914423543e-03 5.74257125314e-03 6.38840491477e-03 7.14689010595e-03 + 8.00955236461e-03 8.95658363692e-03 9.95507847617e-03 1.09586567104e-02 1.19093466628e-02 1.27424344623e-02 + 1.62588522549e-02 1.66250325509e-02 1.66250325509e-02 1.62588522549e-02 1.55601992220e-02 1.45906790875e-02 + 1.34297677852e-02 1.21629507848e-02 1.08706042529e-02 9.61987006090e-03 8.46060891145e-03 7.42492384580e-03 + 6.52902358143e-03 5.77651892440e-03 5.16243150929e-03 4.67692793169e-03 4.30805835198e-03 4.04374575730e-03 + 3.87358926493e-03 3.79030883078e-03 3.79030883078e-03 3.87358926493e-03 4.04374575730e-03 4.30805835198e-03 + 4.67692793169e-03 5.16243150929e-03 5.77651892440e-03 6.52902358143e-03 7.42492384580e-03 8.46060891145e-03 + 9.61987006090e-03 1.08706042529e-02 1.21629507848e-02 1.34297677852e-02 1.45906790875e-02 1.55601992220e-02 + 1.97871783123e-02 2.00258575799e-02 1.97871783123e-02 1.90940368490e-02 1.80109897723e-02 1.66330383744e-02 + 1.50702461704e-02 1.34318126710e-02 1.18131307076e-02 1.02881382638e-02 8.90705726329e-03 7.69793885145e-03 + 6.67049181789e-03 5.82127807001e-03 5.13913617973e-03 4.60945880297e-03 4.21692866215e-03 3.94752033538e-03 + 3.79030883078e-03 3.73863341678e-03 3.79030883078e-03 3.94752033538e-03 4.21692866215e-03 4.60945880297e-03 + 5.13913617973e-03 5.82127807001e-03 6.67049181789e-03 7.69793885145e-03 8.90705726329e-03 1.02881382638e-02 + 1.18131307076e-02 1.34318126710e-02 1.50702461704e-02 1.66330383744e-02 1.80109897723e-02 1.90940368490e-02 + 2.40237109616e-02 2.40237109616e-02 2.34202555044e-02 2.22726314479e-02 2.06884779452e-02 1.88049742175e-02 + 1.67669692380e-02 1.47072813037e-02 1.27333396536e-02 1.09215936737e-02 9.31810768724e-03 7.94279014126e-03 + 6.79567554150e-03 5.86418256271e-03 5.12972310883e-03 4.57225197605e-03 4.17292027232e-03 3.91597292758e-03 + 3.79030883078e-03 3.79030883078e-03 3.91597292758e-03 4.17292027232e-03 4.57225197605e-03 5.12972310883e-03 + 5.86418256271e-03 6.79567554150e-03 7.94279014126e-03 9.31810768724e-03 1.09215936737e-02 1.27333396536e-02 + 1.47072813037e-02 1.67669692380e-02 1.88049742175e-02 2.06884779452e-02 2.22726314479e-02 2.34202555044e-02 + 2.89647599965e-02 2.85763383726e-02 2.74512061786e-02 2.57019293917e-02 2.34923498457e-02 2.10090352784e-02 + 1.84326960165e-02 1.59162612755e-02 1.35733603577e-02 1.14766013692e-02 9.66211927865e-03 8.13716815266e-03 + 6.88914005847e-03 5.89466652251e-03 5.12697112440e-03 4.56041706509e-03 4.17292027232e-03 3.94752033538e-03 + 3.87358926493e-03 3.94752033538e-03 4.17292027232e-03 4.56041706509e-03 5.12697112440e-03 5.89466652251e-03 + 6.88914005847e-03 8.13716815266e-03 9.66211927865e-03 1.14766013692e-02 1.35733603577e-02 1.59162612755e-02 + 1.84326960165e-02 2.10090352784e-02 2.34923498457e-02 2.57019293917e-02 2.74512061786e-02 2.85763383726e-02 + 3.45282284639e-02 3.35632692529e-02 3.17358390207e-02 2.92302840650e-02 2.62778950395e-02 2.31175818882e-02 + 1.99620901041e-02 1.69767793036e-02 1.42727054437e-02 1.19105819676e-02 9.91029781221e-03 8.26229038338e-03 + 6.93908976898e-03 5.90565973456e-03 5.12697112440e-03 4.57225197605e-03 4.21692866215e-03 4.04374575730e-03 + 4.04374575730e-03 4.21692866215e-03 4.57225197605e-03 5.12697112440e-03 5.90565973456e-03 6.93908976898e-03 + 8.26229038338e-03 9.91029781221e-03 1.19105819676e-02 1.42727054437e-02 1.69767793036e-02 1.99620901041e-02 + 2.31175818882e-02 2.62778950395e-02 2.92302840650e-02 3.17358390207e-02 3.35632692529e-02 3.45282284639e-02 + 4.05244812822e-02 3.87673596218e-02 3.60511821341e-02 3.26483588385e-02 2.88631293974e-02 2.49827563157e-02 + 2.12421582644e-02 1.78072941675e-02 1.47756456624e-02 1.21873907787e-02 1.00404664762e-02 8.30549434438e-03 + 6.93908976898e-03 5.89466652251e-03 5.12972310883e-03 4.60945880297e-03 4.30805835198e-03 4.20942844716e-03 + 4.30805835198e-03 4.60945880297e-03 5.12972310883e-03 5.89466652251e-03 6.93908976898e-03 8.30549434438e-03 + 1.00404664762e-02 1.21873907787e-02 1.47756456624e-02 1.78072941675e-02 2.12421582644e-02 2.49827563157e-02 + 2.88631293974e-02 3.26483588385e-02 3.60511821341e-02 3.87673596218e-02 4.05244812822e-02 4.11328816616e-02 + 4.66403070569e-02 4.38725463784e-02 4.01041807768e-02 3.57044700685e-02 3.10465495213e-02 2.64534808200e-02 + 2.21666114252e-02 1.83376793613e-02 1.50389831834e-02 1.22825573408e-02 1.00404664762e-02 8.26229038338e-03 + 6.88914005847e-03 5.86418256271e-03 5.13913617973e-03 4.67692793169e-03 4.45230019628e-03 4.45230019628e-03 + 4.67692793169e-03 5.13913617973e-03 5.86418256271e-03 6.88914005847e-03 8.26229038338e-03 1.00404664762e-02 + 1.22825573408e-02 1.50389831834e-02 1.83376793613e-02 2.21666114252e-02 2.64534808200e-02 3.10465495213e-02 + 3.57044700685e-02 4.01041807768e-02 4.38725463784e-02 4.66403070569e-02 4.81082332430e-02 4.81082332430e-02 + 5.24477482650e-02 4.84855850881e-02 4.35604474537e-02 3.81345549630e-02 3.26341221073e-02 2.73972646659e-02 + 2.26519365039e-02 1.85201445811e-02 1.50389831834e-02 1.21873907787e-02 9.91029781221e-03 8.13716815266e-03 + 6.79567554150e-03 5.82127807001e-03 5.16243150929e-03 4.78210810048e-03 4.65785937656e-03 4.78210810048e-03 + 5.16243150929e-03 5.82127807001e-03 6.79567554150e-03 8.13716815266e-03 9.91029781221e-03 1.21873907787e-02 + 1.50389831834e-02 1.85201445811e-02 2.26519365039e-02 2.73972646659e-02 3.26341221073e-02 3.81345549630e-02 + 4.35604474537e-02 4.84855850881e-02 5.24477482650e-02 5.50251512552e-02 5.59201471811e-02 5.50251512552e-02 + 5.74449785733e-02 5.21839135623e-02 4.60913389830e-02 3.97029159910e-02 3.34710625414e-02 2.77227537368e-02 + 2.26519365039e-02 1.83376793613e-02 1.47756456624e-02 1.19105819676e-02 9.66211927865e-03 7.94279014126e-03 + 6.67049181789e-03 5.77651892440e-03 5.20914423543e-03 4.93405372394e-03 4.93405372394e-03 5.20914423543e-03 + 5.77651892440e-03 6.67049181789e-03 7.94279014126e-03 9.66211927865e-03 1.19105819676e-02 1.47756456624e-02 + 1.83376793613e-02 2.26519365039e-02 2.77227537368e-02 3.34710625414e-02 3.97029159910e-02 4.60913389830e-02 + 5.21839135623e-02 5.74449785733e-02 6.13334872428e-02 6.34040688222e-02 6.34040688222e-02 6.13334872428e-02 + 6.11288569567e-02 5.45841783826e-02 4.74313143781e-02 4.02453701311e-02 3.34710625414e-02 2.73972646659e-02 + 2.21666114252e-02 1.78072941675e-02 1.42727054437e-02 1.14766013692e-02 9.31810768724e-03 7.69793885145e-03 + 6.52902358143e-03 5.74257125314e-03 5.28994524639e-03 5.14226972170e-03 5.28994524639e-03 5.74257125314e-03 + 6.52902358143e-03 7.69793885145e-03 9.31810768724e-03 1.14766013692e-02 1.42727054437e-02 1.78072941675e-02 + 2.21666114252e-02 2.73972646659e-02 3.34710625414e-02 4.02453701311e-02 4.74313143781e-02 5.45841783826e-02 + 6.11288569567e-02 6.64284767715e-02 6.98920688762e-02 7.10977313661e-02 6.98920688762e-02 6.64284767715e-02 + 6.30873277659e-02 5.54167137150e-02 4.74313143781e-02 3.97029159910e-02 3.26341221073e-02 2.64534808200e-02 + 2.12421582644e-02 1.69767793036e-02 1.35733603577e-02 1.09215936737e-02 8.90705726329e-03 7.42492384580e-03 + 6.38840491477e-03 5.73268604942e-03 5.41531278039e-03 5.41531278039e-03 5.73268604942e-03 6.38840491477e-03 + 7.42492384580e-03 8.90705726329e-03 1.09215936737e-02 1.35733603577e-02 1.69767793036e-02 2.12421582644e-02 + 2.64534808200e-02 3.26341221073e-02 3.97029159910e-02 4.74313143781e-02 5.54167137150e-02 6.30873277659e-02 + 6.97522426294e-02 7.47020608958e-02 7.73458021392e-02 7.73458021392e-02 7.47020608958e-02 6.97522426294e-02 + 6.30873277659e-02 5.45841783826e-02 4.60913389830e-02 3.81345549630e-02 3.10465495213e-02 2.49827563157e-02 + 1.99620901041e-02 1.59162612755e-02 1.27333396536e-02 1.02881382638e-02 8.46060891145e-03 7.14689010595e-03 + 6.26545793635e-03 5.75903981319e-03 5.59394004869e-03 5.75903981319e-03 6.26545793635e-03 7.14689010595e-03 + 8.46060891145e-03 1.02881382638e-02 1.27333396536e-02 1.59162612755e-02 1.99620901041e-02 2.49827563157e-02 + 3.10465495213e-02 3.81345549630e-02 4.60913389830e-02 5.45841783826e-02 6.30873277659e-02 7.09081350393e-02 + 7.72682499914e-02 8.14375530661e-02 8.28911486673e-02 8.14375530661e-02 7.72682499914e-02 7.09081350393e-02 + 6.11288569567e-02 5.21839135623e-02 4.35604474537e-02 3.57044700685e-02 2.88631293974e-02 2.31175818882e-02 + 1.84326960165e-02 1.47072813037e-02 1.18131307076e-02 9.61987006090e-03 8.00955236461e-03 6.88519888788e-03 + 6.17468606834e-03 5.83098728503e-03 5.83098728503e-03 6.17468606834e-03 6.88519888788e-03 8.00955236461e-03 + 9.61987006090e-03 1.18131307076e-02 1.47072813037e-02 1.84326960165e-02 2.31175818882e-02 2.88631293974e-02 + 3.57044700685e-02 4.35604474537e-02 5.21839135623e-02 6.11288569567e-02 6.97522426294e-02 7.72682499914e-02 + 8.28633557769e-02 8.58561529560e-02 8.58561529560e-02 8.28633557769e-02 7.72682499914e-02 6.97522426294e-02 + 5.74449785733e-02 4.84855850881e-02 4.01041807768e-02 3.26483588385e-02 2.62778950395e-02 2.10090352784e-02 + 1.67669692380e-02 1.34318126710e-02 1.08706042529e-02 8.95658363692e-03 7.58058258839e-03 6.65719946009e-03 + 6.12657930585e-03 5.95356833121e-03 6.12657930585e-03 6.65719946009e-03 7.58058258839e-03 8.95658363692e-03 + 1.08706042529e-02 1.34318126710e-02 1.67669692380e-02 2.10090352784e-02 2.62778950395e-02 3.26483588385e-02 + 4.01041807768e-02 4.84855850881e-02 5.74449785733e-02 6.64284767715e-02 7.47020608958e-02 8.14375530661e-02 + 8.58561529560e-02 8.73972293003e-02 8.58561529560e-02 8.14375530661e-02 7.47020608958e-02 6.64284767715e-02 + 5.24477482650e-02 4.38725463784e-02 3.60511821341e-02 2.92302840650e-02 2.34923498457e-02 1.88049742175e-02 + 1.50702461704e-02 1.21629507848e-02 9.95507847617e-03 8.33057919998e-03 7.19410390186e-03 6.47483593539e-03 + 6.12657930585e-03 6.12657930585e-03 6.47483593539e-03 7.19410390186e-03 8.33057919998e-03 9.95507847617e-03 + 1.21629507848e-02 1.50702461704e-02 1.88049742175e-02 2.34923498457e-02 2.92302840650e-02 3.60511821341e-02 + 4.38725463784e-02 5.24477482650e-02 6.13334872428e-02 6.98920688762e-02 7.73458021392e-02 8.28911486673e-02 + 8.58561529560e-02 8.58561529560e-02 8.28911486673e-02 7.73458021392e-02 6.98920688762e-02 6.13334872428e-02 + 4.66403070569e-02 3.87673596218e-02 3.17358390207e-02 2.57019293917e-02 2.06884779452e-02 1.66330383744e-02 + 1.34297677852e-02 1.09586567104e-02 9.10381322670e-03 7.76490388909e-03 6.86339437793e-03 6.34416762186e-03 + 6.17468606834e-03 6.34416762186e-03 6.86339437793e-03 7.76490388909e-03 9.10381322670e-03 1.09586567104e-02 + 1.34297677852e-02 1.66330383744e-02 2.06884779452e-02 2.57019293917e-02 3.17358390207e-02 3.87673596218e-02 + 4.66403070569e-02 5.50251512552e-02 6.34040688222e-02 7.10977313661e-02 7.73458021392e-02 8.14375530661e-02 + 8.28633557769e-02 8.14375530661e-02 7.73458021392e-02 7.10977313661e-02 6.34040688222e-02 5.50251512552e-02 + 4.05244812822e-02 3.35632692529e-02 2.74512061786e-02 2.22726314479e-02 1.80109897723e-02 1.45906790875e-02 + 1.19093466628e-02 9.85925299562e-03 8.34122341388e-03 7.27338017313e-03 6.59479473082e-03 6.26545793635e-03 + 6.26545793635e-03 6.59479473082e-03 7.27338017313e-03 8.34122341388e-03 9.85925299562e-03 1.19093466628e-02 + 1.45906790875e-02 1.80109897723e-02 2.22726314479e-02 2.74512061786e-02 3.35632692529e-02 4.05244812822e-02 + 4.81082332430e-02 5.59201471811e-02 6.34040688222e-02 6.98920688762e-02 7.47020608958e-02 7.72682499914e-02 + 7.72682499914e-02 7.47020608958e-02 6.98920688762e-02 6.34040688222e-02 5.59201471811e-02 4.81082332430e-02 + 3.45282284639e-02 2.85763383726e-02 2.34202555044e-02 1.90940368490e-02 1.55601992220e-02 1.27424344623e-02 + 1.05489279259e-02 8.88822832040e-03 7.68014935330e-03 6.86170422323e-03 6.38840491477e-03 6.23361812745e-03 + 6.38840491477e-03 6.86170422323e-03 7.68014935330e-03 8.88822832040e-03 1.05489279259e-02 1.27424344623e-02 + 1.55601992220e-02 1.90940368490e-02 2.34202555044e-02 2.85763383726e-02 3.45282284639e-02 4.11328816616e-02 + 4.81082332430e-02 5.50251512552e-02 6.13334872428e-02 6.64284767715e-02 6.97522426294e-02 7.09081350393e-02 + 6.97522426294e-02 6.64284767715e-02 6.13334872428e-02 5.50251512552e-02 4.81082332430e-02 4.11328816616e-02 + 2.69304328597e-02 2.25132701769e-02 1.87538902948e-02 1.56375665721e-02 1.31152359900e-02 1.11228159589e-02 + 9.59384043225e-03 8.46823559623e-03 7.69793885145e-03 7.24904282964e-03 7.10160482063e-03 7.24904282964e-03 + 7.69793885145e-03 8.46823559623e-03 9.59384043225e-03 1.11228159589e-02 1.31152359900e-02 1.56375665721e-02 + 1.87538902948e-02 2.25132701769e-02 2.69304328597e-02 3.19590319446e-02 3.74634706166e-02 4.32002938784e-02 + 4.88190878681e-02 5.38883507401e-02 5.79474348197e-02 6.05796981280e-02 6.14923433640e-02 6.05796981280e-02 + 5.79474348197e-02 5.38883507401e-02 4.88190878681e-02 4.32002938784e-02 3.74634706166e-02 3.19590319446e-02 + 2.25132701769e-02 1.89804120902e-02 1.59907282434e-02 1.35231772103e-02 1.15351431719e-02 9.97511028176e-03 + 8.79214216133e-03 7.94279014126e-03 7.39443450458e-03 7.12561826537e-03 7.12561826537e-03 7.39443450458e-03 + 7.94279014126e-03 8.79214216133e-03 9.97511028176e-03 1.15351431719e-02 1.35231772103e-02 1.59907282434e-02 + 1.89804120902e-02 2.25132701769e-02 2.65706573512e-02 3.10717223250e-02 3.58537824974e-02 4.06654278454e-02 + 4.51788789706e-02 4.90231496620e-02 5.18355302331e-02 5.33236907840e-02 5.33236907840e-02 5.18355302331e-02 + 4.90231496620e-02 4.51788789706e-02 4.06654278454e-02 3.58537824974e-02 3.10717223250e-02 2.65706573512e-02 + 1.87538902948e-02 1.59907282434e-02 1.36633879542e-02 1.17508350709e-02 1.02181471415e-02 9.02578945364e-03 + 8.13716815266e-03 7.52314503521e-03 7.16308508658e-03 7.04448483440e-03 7.16308508658e-03 7.52314503521e-03 + 8.13716815266e-03 9.02578945364e-03 1.02181471415e-02 1.17508350709e-02 1.36633879542e-02 1.59907282434e-02 + 1.87538902948e-02 2.19482820950e-02 2.55281844546e-02 2.93901320501e-02 3.33624200108e-02 3.72078996967e-02 + 4.06430475235e-02 4.33721592307e-02 4.51323632879e-02 4.57409612273e-02 4.51323632879e-02 4.33721592307e-02 + 4.06430475235e-02 3.72078996967e-02 3.33624200108e-02 2.93901320501e-02 2.55281844546e-02 2.19482820950e-02 + 1.56375665721e-02 1.35231772103e-02 1.17508350709e-02 1.03016601350e-02 9.14830218340e-03 8.26229038338e-03 + 7.61927184895e-03 7.20097316500e-03 6.99504538611e-03 6.99504538611e-03 7.20097316500e-03 7.61927184895e-03 + 8.26229038338e-03 9.14830218340e-03 1.03016601350e-02 1.17508350709e-02 1.35231772103e-02 1.56375665721e-02 + 1.80960146721e-02 2.08735527936e-02 2.39063871143e-02 2.70818268649e-02 3.02357338101e-02 3.31615306069e-02 + 3.56312088557e-02 3.74259862301e-02 3.83718132369e-02 3.83718132369e-02 3.74259862301e-02 3.56312088557e-02 + 3.31615306069e-02 3.02357338101e-02 2.70818268649e-02 2.39063871143e-02 2.08735527936e-02 1.80960146721e-02 + 1.31152359900e-02 1.15351431719e-02 1.02181471415e-02 9.14830218340e-03 8.30549434438e-03 7.67065297497e-03 + 7.22847713667e-03 6.96786738821e-03 6.88181758770e-03 6.96786738821e-03 7.22847713667e-03 7.67065297497e-03 + 8.30549434438e-03 9.14830218340e-03 1.02181471415e-02 1.15351431719e-02 1.31152359900e-02 1.49636867906e-02 + 1.70678712692e-02 1.93892705934e-02 2.18557815330e-02 2.43576039836e-02 2.67502344749e-02 2.88661050079e-02 + 3.05340710560e-02 3.16041856284e-02 3.19731919657e-02 3.16041856284e-02 3.05340710560e-02 2.88661050079e-02 + 2.67502344749e-02 2.43576039836e-02 2.18557815330e-02 1.93892705934e-02 1.70678712692e-02 1.49636867906e-02 + 1.11228159589e-02 9.97511028176e-03 9.02578945364e-03 8.26229038338e-03 7.67065297497e-03 7.23847314555e-03 + 6.95605972443e-03 6.81664387654e-03 6.81664387654e-03 6.95605972443e-03 7.23847314555e-03 7.67065297497e-03 + 8.26229038338e-03 9.02578945364e-03 9.97511028176e-03 1.11228159589e-02 1.24755048074e-02 1.40283418589e-02 + 1.57591868798e-02 1.76229803621e-02 1.95479913088e-02 2.14361295219e-02 2.31688478126e-02 2.46187421852e-02 + 2.56657154446e-02 2.62153172241e-02 2.62153172241e-02 2.56657154446e-02 2.46187421852e-02 2.31688478126e-02 + 2.14361295219e-02 1.95479913088e-02 1.76229803621e-02 1.57591868798e-02 1.40283418589e-02 1.24755048074e-02 + 9.59384043225e-03 8.79214216133e-03 8.13716815266e-03 7.61927184895e-03 7.22847713667e-03 6.95605972443e-03 + 6.79537428806e-03 6.74228118806e-03 6.79537428806e-03 6.95605972443e-03 7.22847713667e-03 7.61927184895e-03 + 8.13716815266e-03 8.79214216133e-03 9.59384043225e-03 1.05489279259e-02 1.16573532374e-02 1.29079014387e-02 + 1.42737851127e-02 1.57094271493e-02 1.71497889118e-02 1.85132658939e-02 1.97084075068e-02 2.06439962171e-02 + 2.12413612776e-02 2.14468462049e-02 2.12413612776e-02 2.06439962171e-02 1.97084075068e-02 1.85132658939e-02 + 1.71497889118e-02 1.57094271493e-02 1.42737851127e-02 1.29079014387e-02 1.16573532374e-02 1.05489279259e-02 + 8.46823559623e-03 7.94279014126e-03 7.52314503521e-03 7.20097316500e-03 6.96786738821e-03 6.81664387654e-03 + 6.74228118806e-03 6.74228118806e-03 6.81664387654e-03 6.96786738821e-03 7.20097316500e-03 7.52314503521e-03 + 7.94279014126e-03 8.46823559623e-03 9.10613117226e-03 9.85925299562e-03 1.07235056315e-02 1.16845233837e-02 + 1.27148275869e-02 1.37726366090e-02 1.48031251671e-02 1.57423428102e-02 1.65234811342e-02 1.70848695603e-02 + 1.73786828448e-02 1.73786828448e-02 1.70848695603e-02 1.65234811342e-02 1.57423428102e-02 1.48031251671e-02 + 1.37726366090e-02 1.27148275869e-02 1.16845233837e-02 1.07235056315e-02 9.85925299562e-03 9.10613117226e-03 + 7.69793885145e-03 7.39443450458e-03 7.16308508658e-03 6.99504538611e-03 6.88181758770e-03 6.81664387654e-03 + 6.79537428806e-03 6.81664387654e-03 6.88181758770e-03 6.99504538611e-03 7.16308508658e-03 7.39443450458e-03 + 7.69793885145e-03 8.08133005705e-03 8.54973346172e-03 9.10381322670e-03 9.73748464183e-03 1.04356792319e-02 + 1.11729588764e-02 1.19137265332e-02 1.26143883181e-02 1.32272933414e-02 1.37059602390e-02 1.40109856905e-02 + 1.41157952825e-02 1.40109856905e-02 1.37059602390e-02 1.32272933414e-02 1.26143883181e-02 1.19137265332e-02 + 1.11729588764e-02 1.04356792319e-02 9.73748464183e-03 9.10381322670e-03 8.54973346172e-03 8.08133005705e-03 + 7.24904282964e-03 7.12561826537e-03 7.04448483440e-03 6.99504538611e-03 6.96786738821e-03 6.95605972443e-03 + 6.95605972443e-03 6.96786738821e-03 6.99504538611e-03 7.04448483440e-03 7.12561826537e-03 7.24904282964e-03 + 7.42492384580e-03 7.66146344666e-03 7.96341795569e-03 8.33057919998e-03 8.75631776595e-03 9.22648243576e-03 + 9.71912104775e-03 1.02054916185e-02 1.06524671204e-02 1.10259974674e-02 1.12951380995e-02 1.14361707830e-02 + 1.14361707830e-02 1.12951380995e-02 1.10259974674e-02 1.06524671204e-02 1.02054916185e-02 9.71912104775e-03 + 9.22648243576e-03 8.75631776595e-03 8.33057919998e-03 7.96341795569e-03 7.66146344666e-03 7.42492384580e-03 + 7.10160482063e-03 7.12561826537e-03 7.16308508658e-03 7.20097316500e-03 7.22847713667e-03 7.23847314555e-03 + 7.22847713667e-03 7.20097316500e-03 7.16308508658e-03 7.12561826537e-03 7.10160482063e-03 7.10459522193e-03 + 7.14689010595e-03 7.23785699764e-03 7.38252390656e-03 7.58058258839e-03 7.82576853226e-03 8.10563303358e-03 + 8.40200942373e-03 8.69246386814e-03 8.95261635749e-03 9.15892896774e-03 9.29162040305e-03 9.33741418467e-03 + 9.29162040305e-03 9.15892896774e-03 8.95261635749e-03 8.69246386814e-03 8.40200942373e-03 8.10563303358e-03 + 7.82576853226e-03 7.58058258839e-03 7.38252390656e-03 7.23785699764e-03 7.14689010595e-03 7.10459522193e-03 + 7.24904282964e-03 7.39443450458e-03 7.52314503521e-03 7.61927184895e-03 7.67065297497e-03 7.67065297497e-03 + 7.61927184895e-03 7.52314503521e-03 7.39443450458e-03 7.24904282964e-03 7.10459522193e-03 6.97836085285e-03 + 6.88519888788e-03 6.83583874198e-03 6.83583874198e-03 6.88519888788e-03 6.97836085285e-03 7.10459522193e-03 + 7.24904282964e-03 7.39443450458e-03 7.52314503521e-03 7.61927184895e-03 7.67065297497e-03 7.67065297497e-03 + 7.61927184895e-03 7.52314503521e-03 7.39443450458e-03 7.24904282964e-03 7.10459522193e-03 6.97836085285e-03 + 6.88519888788e-03 6.83583874198e-03 6.83583874198e-03 6.88519888788e-03 6.97836085285e-03 7.10459522193e-03 + 7.69793885145e-03 7.94279014126e-03 8.13716815266e-03 8.26229038338e-03 8.30549434438e-03 8.26229038338e-03 + 8.13716815266e-03 7.94279014126e-03 7.69793885145e-03 7.42492384580e-03 7.14689010595e-03 6.88519888788e-03 + 6.65719946009e-03 6.47483593539e-03 6.34416762186e-03 6.26545793635e-03 6.23361812745e-03 6.23916674188e-03 + 6.26978037715e-03 6.31209415558e-03 6.35335851926e-03 6.38291972351e-03 6.39361872594e-03 6.38291972351e-03 + 6.35335851926e-03 6.31209415558e-03 6.26978037715e-03 6.23916674188e-03 6.23361812745e-03 6.26545793635e-03 + 6.34416762186e-03 6.47483593539e-03 6.65719946009e-03 6.88519888788e-03 7.14689010595e-03 7.42492384580e-03 + 8.46823559623e-03 8.79214216133e-03 9.02578945364e-03 9.14830218340e-03 9.14830218340e-03 9.02578945364e-03 + 8.79214216133e-03 8.46823559623e-03 8.08133005705e-03 7.66146344666e-03 7.23785699764e-03 6.83583874198e-03 + 6.47483593539e-03 6.16759269815e-03 5.92021996667e-03 5.73268604942e-03 5.59978938003e-03 5.51272438194e-03 + 5.46093720174e-03 5.43377044817e-03 5.42174879265e-03 5.41768978229e-03 5.41768978229e-03 5.42174879265e-03 + 5.43377044817e-03 5.46093720174e-03 5.51272438194e-03 5.59978938003e-03 5.73268604942e-03 5.92021996667e-03 + 6.16759269815e-03 6.47483593539e-03 6.83583874198e-03 7.23785699764e-03 7.66146344666e-03 8.08133005705e-03 + 9.59384043225e-03 9.97511028176e-03 1.02181471415e-02 1.03016601350e-02 1.02181471415e-02 9.97511028176e-03 + 9.59384043225e-03 9.10613117226e-03 8.54973346172e-03 7.96341795569e-03 7.38252390656e-03 6.83583874198e-03 + 6.34416762186e-03 5.92021996667e-03 5.56920678348e-03 5.28994524639e-03 5.07652462266e-03 4.92029966810e-03 + 4.81172327806e-03 4.74176747355e-03 4.70304044562e-03 4.69069423954e-03 4.70304044562e-03 4.74176747355e-03 + 4.81172327806e-03 4.92029966810e-03 5.07652462266e-03 5.28994524639e-03 5.56920678348e-03 5.92021996667e-03 + 6.34416762186e-03 6.83583874198e-03 7.38252390656e-03 7.96341795569e-03 8.54973346172e-03 9.10613117226e-03 + 1.11228159589e-02 1.15351431719e-02 1.17508350709e-02 1.17508350709e-02 1.15351431719e-02 1.11228159589e-02 + 1.05489279259e-02 9.85925299562e-03 9.10381322670e-03 8.33057919998e-03 7.58058258839e-03 6.88519888788e-03 + 6.26545793635e-03 5.73268604942e-03 5.28994524639e-03 4.93405372394e-03 4.65785937656e-03 4.45230019628e-03 + 4.30805835198e-03 4.21692866215e-03 4.17292027232e-03 4.17292027232e-03 4.21692866215e-03 4.30805835198e-03 + 4.45230019628e-03 4.65785937656e-03 4.93405372394e-03 5.28994524639e-03 5.73268604942e-03 6.26545793635e-03 + 6.88519888788e-03 7.58058258839e-03 8.33057919998e-03 9.10381322670e-03 9.85925299562e-03 1.05489279259e-02 + 1.31152359900e-02 1.35231772103e-02 1.36633879542e-02 1.35231772103e-02 1.31152359900e-02 1.24755048074e-02 + 1.16573532374e-02 1.07235056315e-02 9.73748464183e-03 8.75631776595e-03 7.82576853226e-03 6.97836085285e-03 + 6.23361812745e-03 5.59978938003e-03 5.07652462266e-03 4.65785937656e-03 4.33477840900e-03 4.09713024865e-03 + 3.93522801758e-03 3.84131375804e-03 3.81054695208e-03 3.84131375804e-03 3.93522801758e-03 4.09713024865e-03 + 4.33477840900e-03 4.65785937656e-03 5.07652462266e-03 5.59978938003e-03 6.23361812745e-03 6.97836085285e-03 + 7.82576853226e-03 8.75631776595e-03 9.73748464183e-03 1.07235056315e-02 1.16573532374e-02 1.24755048074e-02 + 1.56375665721e-02 1.59907282434e-02 1.59907282434e-02 1.56375665721e-02 1.49636867906e-02 1.40283418589e-02 + 1.29079014387e-02 1.16845233837e-02 1.04356792319e-02 9.22648243576e-03 8.10563303358e-03 7.10459522193e-03 + 6.23916674188e-03 5.51272438194e-03 4.92029966810e-03 4.45230019628e-03 4.09713024865e-03 3.84302280796e-03 + 3.67971968314e-03 3.59990872378e-03 3.59990872378e-03 3.67971968314e-03 3.84302280796e-03 4.09713024865e-03 + 4.45230019628e-03 4.92029966810e-03 5.51272438194e-03 6.23916674188e-03 7.10459522193e-03 8.10563303358e-03 + 9.22648243576e-03 1.04356792319e-02 1.16845233837e-02 1.29079014387e-02 1.40283418589e-02 1.49636867906e-02 + 1.87538902948e-02 1.89804120902e-02 1.87538902948e-02 1.80960146721e-02 1.70678712692e-02 1.57591868798e-02 + 1.42737851127e-02 1.27148275869e-02 1.11729588764e-02 9.71912104775e-03 8.40200942373e-03 7.24904282964e-03 + 6.26978037715e-03 5.46093720174e-03 4.81172327806e-03 4.30805835198e-03 3.93522801758e-03 3.67971968314e-03 + 3.53085792774e-03 3.48198055848e-03 3.53085792774e-03 3.67971968314e-03 3.93522801758e-03 4.30805835198e-03 + 4.81172327806e-03 5.46093720174e-03 6.26978037715e-03 7.24904282964e-03 8.40200942373e-03 9.71912104775e-03 + 1.11729588764e-02 1.27148275869e-02 1.42737851127e-02 1.57591868798e-02 1.70678712692e-02 1.80960146721e-02 + 2.25132701769e-02 2.25132701769e-02 2.19482820950e-02 2.08735527936e-02 1.93892705934e-02 1.76229803621e-02 + 1.57094271493e-02 1.37726366090e-02 1.19137265332e-02 1.02054916185e-02 8.69246386814e-03 7.39443450458e-03 + 6.31209415558e-03 5.43377044817e-03 4.74176747355e-03 4.21692866215e-03 3.84131375804e-03 3.59990872378e-03 + 3.48198055848e-03 3.48198055848e-03 3.59990872378e-03 3.84131375804e-03 4.21692866215e-03 4.74176747355e-03 + 5.43377044817e-03 6.31209415558e-03 7.39443450458e-03 8.69246386814e-03 1.02054916185e-02 1.19137265332e-02 + 1.37726366090e-02 1.57094271493e-02 1.76229803621e-02 1.93892705934e-02 2.08735527936e-02 2.19482820950e-02 + 2.69304328597e-02 2.65706573512e-02 2.55281844546e-02 2.39063871143e-02 2.18557815330e-02 1.95479913088e-02 + 1.71497889118e-02 1.48031251671e-02 1.26143883181e-02 1.06524671204e-02 8.95261635749e-03 7.52314503521e-03 + 6.35335851926e-03 5.42174879265e-03 4.70304044562e-03 4.17292027232e-03 3.81054695208e-03 3.59990872378e-03 + 3.53085792774e-03 3.59990872378e-03 3.81054695208e-03 4.17292027232e-03 4.70304044562e-03 5.42174879265e-03 + 6.35335851926e-03 7.52314503521e-03 8.95261635749e-03 1.06524671204e-02 1.26143883181e-02 1.48031251671e-02 + 1.71497889118e-02 1.95479913088e-02 2.18557815330e-02 2.39063871143e-02 2.55281844546e-02 2.65706573512e-02 + 3.19590319446e-02 3.10717223250e-02 2.93901320501e-02 2.70818268649e-02 2.43576039836e-02 2.14361295219e-02 + 1.85132658939e-02 1.57423428102e-02 1.32272933414e-02 1.10259974674e-02 9.15892896774e-03 7.61927184895e-03 + 6.38291972351e-03 5.41768978229e-03 4.69069423954e-03 4.17292027232e-03 3.84131375804e-03 3.67971968314e-03 + 3.67971968314e-03 3.84131375804e-03 4.17292027232e-03 4.69069423954e-03 5.41768978229e-03 6.38291972351e-03 + 7.61927184895e-03 9.15892896774e-03 1.10259974674e-02 1.32272933414e-02 1.57423428102e-02 1.85132658939e-02 + 2.14361295219e-02 2.43576039836e-02 2.70818268649e-02 2.93901320501e-02 3.10717223250e-02 3.19590319446e-02 + 3.74634706166e-02 3.58537824974e-02 3.33624200108e-02 3.02357338101e-02 2.67502344749e-02 2.31688478126e-02 + 1.97084075068e-02 1.65234811342e-02 1.37059602390e-02 1.12951380995e-02 9.29162040305e-03 7.67065297497e-03 + 6.39361872594e-03 5.41768978229e-03 4.70304044562e-03 4.21692866215e-03 3.93522801758e-03 3.84302280796e-03 + 3.93522801758e-03 4.21692866215e-03 4.70304044562e-03 5.41768978229e-03 6.39361872594e-03 7.67065297497e-03 + 9.29162040305e-03 1.12951380995e-02 1.37059602390e-02 1.65234811342e-02 1.97084075068e-02 2.31688478126e-02 + 2.67502344749e-02 3.02357338101e-02 3.33624200108e-02 3.58537824974e-02 3.74634706166e-02 3.80204685260e-02 + 4.32002938784e-02 4.06654278454e-02 3.72078996967e-02 3.31615306069e-02 2.88661050079e-02 2.46187421852e-02 + 2.06439962171e-02 1.70848695603e-02 1.40109856905e-02 1.14361707830e-02 9.33741418467e-03 7.67065297497e-03 + 6.38291972351e-03 5.42174879265e-03 4.74176747355e-03 4.30805835198e-03 4.09713024865e-03 4.09713024865e-03 + 4.30805835198e-03 4.74176747355e-03 5.42174879265e-03 6.38291972351e-03 7.67065297497e-03 9.33741418467e-03 + 1.14361707830e-02 1.40109856905e-02 1.70848695603e-02 2.06439962171e-02 2.46187421852e-02 2.88661050079e-02 + 3.31615306069e-02 3.72078996967e-02 4.06654278454e-02 4.32002938784e-02 4.45431970579e-02 4.45431970579e-02 + 4.88190878681e-02 4.51788789706e-02 4.06430475235e-02 3.56312088557e-02 3.05340710560e-02 2.56657154446e-02 + 2.12413612776e-02 1.73786828448e-02 1.41157952825e-02 1.14361707830e-02 9.29162040305e-03 7.61927184895e-03 + 6.35335851926e-03 5.43377044817e-03 4.81172327806e-03 4.45230019628e-03 4.33477840900e-03 4.45230019628e-03 + 4.81172327806e-03 5.43377044817e-03 6.35335851926e-03 7.61927184895e-03 9.29162040305e-03 1.14361707830e-02 + 1.41157952825e-02 1.73786828448e-02 2.12413612776e-02 2.56657154446e-02 3.05340710560e-02 3.56312088557e-02 + 4.06430475235e-02 4.51788789706e-02 4.88190878681e-02 5.11831265828e-02 5.20033431247e-02 5.11831265828e-02 + 5.38883507401e-02 4.90231496620e-02 4.33721592307e-02 3.74259862301e-02 3.16041856284e-02 2.62153172241e-02 + 2.14468462049e-02 1.73786828448e-02 1.40109856905e-02 1.12951380995e-02 9.15892896774e-03 7.52314503521e-03 + 6.31209415558e-03 5.46093720174e-03 4.92029966810e-03 4.65785937656e-03 4.65785937656e-03 4.92029966810e-03 + 5.46093720174e-03 6.31209415558e-03 7.52314503521e-03 9.15892896774e-03 1.12951380995e-02 1.40109856905e-02 + 1.73786828448e-02 2.14468462049e-02 2.62153172241e-02 3.16041856284e-02 3.74259862301e-02 4.33721592307e-02 + 4.90231496620e-02 5.38883507401e-02 5.74762428735e-02 5.93841418824e-02 5.93841418824e-02 5.74762428735e-02 + 5.79474348197e-02 5.18355302331e-02 4.51323632879e-02 3.83718132369e-02 3.19731919657e-02 2.62153172241e-02 + 2.12413612776e-02 1.70848695603e-02 1.37059602390e-02 1.10259974674e-02 8.95261635749e-03 7.39443450458e-03 + 6.26978037715e-03 5.51272438194e-03 5.07652462266e-03 4.93405372394e-03 5.07652462266e-03 5.51272438194e-03 + 6.26978037715e-03 7.39443450458e-03 8.95261635749e-03 1.10259974674e-02 1.37059602390e-02 1.70848695603e-02 + 2.12413612776e-02 2.62153172241e-02 3.19731919657e-02 3.83718132369e-02 4.51323632879e-02 5.18355302331e-02 + 5.79474348197e-02 6.28828729732e-02 6.61022866145e-02 6.72218662363e-02 6.61022866145e-02 6.28828729732e-02 + 6.05796981280e-02 5.33236907840e-02 4.57409612273e-02 3.83718132369e-02 3.16041856284e-02 2.56657154446e-02 + 2.06439962171e-02 1.65234811342e-02 1.32272933414e-02 1.06524671204e-02 8.69246386814e-03 7.24904282964e-03 + 6.23916674188e-03 5.59978938003e-03 5.28994524639e-03 5.28994524639e-03 5.59978938003e-03 6.23916674188e-03 + 7.24904282964e-03 8.69246386814e-03 1.06524671204e-02 1.32272933414e-02 1.65234811342e-02 2.06439962171e-02 + 2.56657154446e-02 3.16041856284e-02 3.83718132369e-02 4.57409612273e-02 5.33236907840e-02 6.05796981280e-02 + 6.68641206041e-02 7.15201290633e-02 7.40032629540e-02 7.40032629540e-02 7.15201290633e-02 6.68641206041e-02 + 6.14923433640e-02 5.33236907840e-02 4.51323632879e-02 3.74259862301e-02 3.05340710560e-02 2.46187421852e-02 + 1.97084075068e-02 1.57423428102e-02 1.26143883181e-02 1.02054916185e-02 8.40200942373e-03 7.10459522193e-03 + 6.23361812745e-03 5.73268604942e-03 5.56920678348e-03 5.73268604942e-03 6.23361812745e-03 7.10459522193e-03 + 8.40200942373e-03 1.02054916185e-02 1.26143883181e-02 1.57423428102e-02 1.97084075068e-02 2.46187421852e-02 + 3.05340710560e-02 3.74259862301e-02 4.51323632879e-02 5.33236907840e-02 6.14923433640e-02 6.89793219251e-02 + 7.50510418428e-02 7.90236437036e-02 8.04073084192e-02 7.90236437036e-02 7.50510418428e-02 6.89793219251e-02 + 6.05796981280e-02 5.18355302331e-02 4.33721592307e-02 3.56312088557e-02 2.88661050079e-02 2.31688478126e-02 + 1.85132658939e-02 1.48031251671e-02 1.19137265332e-02 9.71912104775e-03 8.10563303358e-03 6.97836085285e-03 + 6.26545793635e-03 5.92021996667e-03 5.92021996667e-03 6.26545793635e-03 6.97836085285e-03 8.10563303358e-03 + 9.71912104775e-03 1.19137265332e-02 1.48031251671e-02 1.85132658939e-02 2.31688478126e-02 2.88661050079e-02 + 3.56312088557e-02 4.33721592307e-02 5.18355302331e-02 6.05796981280e-02 6.89793219251e-02 7.62783857555e-02 + 8.16998180862e-02 8.45957298814e-02 8.45957298814e-02 8.16998180862e-02 7.62783857555e-02 6.89793219251e-02 + 5.79474348197e-02 4.90231496620e-02 4.06430475235e-02 3.31615306069e-02 2.67502344749e-02 2.14361295219e-02 + 1.71497889118e-02 1.37726366090e-02 1.11729588764e-02 9.22648243576e-03 7.82576853226e-03 6.88519888788e-03 + 6.34416762186e-03 6.16759269815e-03 6.34416762186e-03 6.88519888788e-03 7.82576853226e-03 9.22648243576e-03 + 1.11729588764e-02 1.37726366090e-02 1.71497889118e-02 2.14361295219e-02 2.67502344749e-02 3.31615306069e-02 + 4.06430475235e-02 4.90231496620e-02 5.79474348197e-02 6.68641206041e-02 7.50510418428e-02 8.16998180862e-02 + 8.60542685404e-02 8.75716967614e-02 8.60542685404e-02 8.16998180862e-02 7.50510418428e-02 6.68641206041e-02 + 5.38883507401e-02 4.51788789706e-02 3.72078996967e-02 3.02357338101e-02 2.43576039836e-02 1.95479913088e-02 + 1.57094271493e-02 1.27148275869e-02 1.04356792319e-02 8.75631776595e-03 7.58058258839e-03 6.83583874198e-03 + 6.47483593539e-03 6.47483593539e-03 6.83583874198e-03 7.58058258839e-03 8.75631776595e-03 1.04356792319e-02 + 1.27148275869e-02 1.57094271493e-02 1.95479913088e-02 2.43576039836e-02 3.02357338101e-02 3.72078996967e-02 + 4.51788789706e-02 5.38883507401e-02 6.28828729732e-02 7.15201290633e-02 7.90236437036e-02 8.45957298814e-02 + 8.75716967614e-02 8.75716967614e-02 8.45957298814e-02 7.90236437036e-02 7.15201290633e-02 6.28828729732e-02 + 4.88190878681e-02 4.06654278454e-02 3.33624200108e-02 2.70818268649e-02 2.18557815330e-02 1.76229803621e-02 + 1.42737851127e-02 1.16845233837e-02 9.73748464183e-03 8.33057919998e-03 7.38252390656e-03 6.83583874198e-03 + 6.65719946009e-03 6.83583874198e-03 7.38252390656e-03 8.33057919998e-03 9.73748464183e-03 1.16845233837e-02 + 1.42737851127e-02 1.76229803621e-02 2.18557815330e-02 2.70818268649e-02 3.33624200108e-02 4.06654278454e-02 + 4.88190878681e-02 5.74762428735e-02 6.61022866145e-02 7.40032629540e-02 8.04073084192e-02 8.45957298814e-02 + 8.60542685404e-02 8.45957298814e-02 8.04073084192e-02 7.40032629540e-02 6.61022866145e-02 5.74762428735e-02 + 4.32002938784e-02 3.58537824974e-02 2.93901320501e-02 2.39063871143e-02 1.93892705934e-02 1.57591868798e-02 + 1.29079014387e-02 1.07235056315e-02 9.10381322670e-03 7.96341795569e-03 7.23785699764e-03 6.88519888788e-03 + 6.88519888788e-03 7.23785699764e-03 7.96341795569e-03 9.10381322670e-03 1.07235056315e-02 1.29079014387e-02 + 1.57591868798e-02 1.93892705934e-02 2.39063871143e-02 2.93901320501e-02 3.58537824974e-02 4.32002938784e-02 + 5.11831265828e-02 5.93841418824e-02 6.72218662363e-02 7.40032629540e-02 7.90236437036e-02 8.16998180862e-02 + 8.16998180862e-02 7.90236437036e-02 7.40032629540e-02 6.72218662363e-02 5.93841418824e-02 5.11831265828e-02 + 3.74634706166e-02 3.10717223250e-02 2.55281844546e-02 2.08735527936e-02 1.70678712692e-02 1.40283418589e-02 + 1.16573532374e-02 9.85925299562e-03 8.54973346172e-03 7.66146344666e-03 7.14689010595e-03 6.97836085285e-03 + 7.14689010595e-03 7.66146344666e-03 8.54973346172e-03 9.85925299562e-03 1.16573532374e-02 1.40283418589e-02 + 1.70678712692e-02 2.08735527936e-02 2.55281844546e-02 3.10717223250e-02 3.74634706166e-02 4.45431970579e-02 + 5.20033431247e-02 5.93841418824e-02 6.61022866145e-02 7.15201290633e-02 7.50510418428e-02 7.62783857555e-02 + 7.50510418428e-02 7.15201290633e-02 6.61022866145e-02 5.93841418824e-02 5.20033431247e-02 4.45431970579e-02 + 3.19590319446e-02 2.65706573512e-02 2.19482820950e-02 1.80960146721e-02 1.49636867906e-02 1.24755048074e-02 + 1.05489279259e-02 9.10613117226e-03 8.08133005705e-03 7.42492384580e-03 7.10459522193e-03 7.10459522193e-03 + 7.42492384580e-03 8.08133005705e-03 9.10613117226e-03 1.05489279259e-02 1.24755048074e-02 1.49636867906e-02 + 1.80960146721e-02 2.19482820950e-02 2.65706573512e-02 3.19590319446e-02 3.80204685260e-02 4.45431970579e-02 + 5.11831265828e-02 5.74762428735e-02 6.28828729732e-02 6.68641206041e-02 6.89793219251e-02 6.89793219251e-02 + 6.68641206041e-02 6.28828729732e-02 5.74762428735e-02 5.11831265828e-02 4.45431970579e-02 3.80204685260e-02 + 2.57176061925e-02 2.17657781241e-02 1.84129279741e-02 1.56375665721e-02 1.33939588194e-02 1.16276251073e-02 + 1.02846446979e-02 9.31810768724e-03 8.69246386814e-03 8.38500711079e-03 8.38500711079e-03 8.69246386814e-03 + 9.31810768724e-03 1.02846446979e-02 1.16276251073e-02 1.33939588194e-02 1.56375665721e-02 1.84129279741e-02 + 2.17657781241e-02 2.57176061925e-02 3.02423286704e-02 3.52402742752e-02 4.05199675384e-02 4.57968161948e-02 + 5.07121410456e-02 5.48714786192e-02 5.78981879671e-02 5.94941697642e-02 5.94941697642e-02 5.78981879671e-02 + 5.48714786192e-02 5.07121410456e-02 4.57968161948e-02 4.05199675384e-02 3.52402742752e-02 3.02423286704e-02 + 2.17657781241e-02 1.86354478304e-02 1.59907282434e-02 1.38094745262e-02 1.20550163598e-02 1.06856809758e-02 + 9.66211927865e-03 8.95261635749e-03 8.53524112695e-03 8.39746782805e-03 8.53524112695e-03 8.95261635749e-03 + 9.66211927865e-03 1.06856809758e-02 1.20550163598e-02 1.38094745262e-02 1.59907282434e-02 1.86354478304e-02 + 2.17657781241e-02 2.53749373622e-02 2.94074293899e-02 3.37399765679e-02 3.81729635435e-02 4.24386109393e-02 + 4.62258246981e-02 4.92182336225e-02 5.11403130173e-02 5.18034033720e-02 5.11403130173e-02 4.92182336225e-02 + 4.62258246981e-02 4.24386109393e-02 3.81729635435e-02 3.37399765679e-02 2.94074293899e-02 2.53749373622e-02 + 1.84129279741e-02 1.59907282434e-02 1.39522993746e-02 1.22786655737e-02 1.09414577715e-02 9.91029781221e-03 + 9.15892896774e-03 8.66817035987e-03 8.42580807925e-03 8.42580807925e-03 8.66817035987e-03 9.15892896774e-03 + 9.91029781221e-03 1.09414577715e-02 1.22786655737e-02 1.39522993746e-02 1.59907282434e-02 1.84129279741e-02 + 2.12198093897e-02 2.43819637041e-02 2.78244998346e-02 3.14154606035e-02 3.49654910486e-02 3.82415861113e-02 + 4.09927131873e-02 4.29832635915e-02 4.40291518527e-02 4.40291518527e-02 4.29832635915e-02 4.09927131873e-02 + 3.82415861113e-02 3.49654910486e-02 3.14154606035e-02 2.78244998346e-02 2.43819637041e-02 2.12198093897e-02 + 1.56375665721e-02 1.38094745262e-02 1.22786655737e-02 1.10293847869e-02 1.00404664762e-02 9.29162040305e-03 + 8.76725594498e-03 8.45686847188e-03 8.35413904759e-03 8.45686847188e-03 8.76725594498e-03 9.29162040305e-03 + 1.00404664762e-02 1.10293847869e-02 1.22786655737e-02 1.38094745262e-02 1.56375665721e-02 1.77666865554e-02 + 2.01812628043e-02 2.28368095394e-02 2.56499234494e-02 2.84935612207e-02 3.12022017908e-02 3.35871770820e-02 + 3.54595415232e-02 3.66568505349e-02 3.70689589239e-02 3.66568505349e-02 3.54595415232e-02 3.35871770820e-02 + 3.12022017908e-02 2.84935612207e-02 2.56499234494e-02 2.28368095394e-02 2.01812628043e-02 1.77666865554e-02 + 1.33939588194e-02 1.20550163598e-02 1.09414577715e-02 1.00404664762e-02 9.33741418467e-03 8.82009872524e-03 + 8.47998103933e-03 8.31144312544e-03 8.31144312544e-03 8.47998103933e-03 8.82009872524e-03 9.33741418467e-03 + 1.00404664762e-02 1.09414577715e-02 1.20550163598e-02 1.33939588194e-02 1.49636867906e-02 1.67567114426e-02 + 1.87467470027e-02 2.08820531014e-02 2.30804654510e-02 2.52298202509e-02 2.71955666447e-02 2.88348357920e-02 + 3.00149219248e-02 3.06330408871e-02 3.06330408871e-02 3.00149219248e-02 2.88348357920e-02 2.71955666447e-02 + 2.52298202509e-02 2.30804654510e-02 2.08820531014e-02 1.87467470027e-02 1.67567114426e-02 1.49636867906e-02 + 1.16276251073e-02 1.06856809758e-02 9.91029781221e-03 9.29162040305e-03 8.82009872524e-03 8.48843476768e-03 + 8.29158854156e-03 8.22635918544e-03 8.29158854156e-03 8.48843476768e-03 8.82009872524e-03 9.29162040305e-03 + 9.91029781221e-03 1.06856809758e-02 1.16276251073e-02 1.27424344623e-02 1.40283418589e-02 1.54709928045e-02 + 1.70389543521e-02 1.86800926235e-02 2.03206914317e-02 2.18687619531e-02 2.32217587400e-02 2.42781130820e-02 + 2.49511167951e-02 2.51823253991e-02 2.49511167951e-02 2.42781130820e-02 2.32217587400e-02 2.18687619531e-02 + 2.03206914317e-02 1.86800926235e-02 1.70389543521e-02 1.54709928045e-02 1.40283418589e-02 1.27424344623e-02 + 1.02846446979e-02 9.66211927865e-03 9.15892896774e-03 8.76725594498e-03 8.47998103933e-03 8.29158854156e-03 + 8.19834740781e-03 8.19834740781e-03 8.29158854156e-03 8.47998103933e-03 8.76725594498e-03 9.15892896774e-03 + 9.66211927865e-03 1.02846446979e-02 1.10330000246e-02 1.19093466628e-02 1.29079014387e-02 1.40112393540e-02 + 1.51874137660e-02 1.63890080671e-02 1.75547637226e-02 1.86137801375e-02 1.94921954522e-02 2.01220876747e-02 + 2.04512222766e-02 2.04512222766e-02 2.01220876747e-02 1.94921954522e-02 1.86137801375e-02 1.75547637226e-02 + 1.63890080671e-02 1.51874137660e-02 1.40112393540e-02 1.29079014387e-02 1.19093466628e-02 1.10330000246e-02 + 9.31810768724e-03 8.95261635749e-03 8.66817035987e-03 8.45686847188e-03 8.31144312544e-03 8.22635918544e-03 + 8.19834740781e-03 8.22635918544e-03 8.31144312544e-03 8.45686847188e-03 8.66817035987e-03 8.95261635749e-03 + 9.31810768724e-03 9.77183223433e-03 1.03186231402e-02 1.09586567104e-02 1.16845233837e-02 1.24785638223e-02 + 1.33116675302e-02 1.41440793855e-02 1.49279448733e-02 1.56112881223e-02 1.61434902729e-02 1.64818809732e-02 + 1.65980023724e-02 1.64818809732e-02 1.61434902729e-02 1.56112881223e-02 1.49279448733e-02 1.41440793855e-02 + 1.33116675302e-02 1.24785638223e-02 1.16845233837e-02 1.09586567104e-02 1.03186231402e-02 9.77183223433e-03 + 8.69246386814e-03 8.53524112695e-03 8.42580807925e-03 8.35413904759e-03 8.31144312544e-03 8.29158854156e-03 + 8.29158854156e-03 8.31144312544e-03 8.35413904759e-03 8.42580807925e-03 8.53524112695e-03 8.69246386814e-03 + 8.90705726329e-03 9.18679124184e-03 9.53627070961e-03 9.95507847617e-03 1.04356792319e-02 1.09620544703e-02 + 1.15097880648e-02 1.20475550421e-02 1.25396406703e-02 1.29494247541e-02 1.32437842255e-02 1.33976732300e-02 + 1.33976732300e-02 1.32437842255e-02 1.29494247541e-02 1.25396406703e-02 1.20475550421e-02 1.15097880648e-02 + 1.09620544703e-02 1.04356792319e-02 9.95507847617e-03 9.53627070961e-03 9.18679124184e-03 8.90705726329e-03 + 8.38500711079e-03 8.39746782805e-03 8.42580807925e-03 8.45686847188e-03 8.47998103933e-03 8.48843476768e-03 + 8.47998103933e-03 8.45686847188e-03 8.42580807925e-03 8.39746782805e-03 8.38500711079e-03 8.40200942373e-03 + 8.46060891145e-03 8.57007132232e-03 8.73551184506e-03 8.95658363692e-03 9.22648243576e-03 9.53173661310e-03 + 9.85294674885e-03 1.01663421573e-02 1.04460621935e-02 1.06671499136e-02 1.08088949298e-02 1.08577130860e-02 + 1.08088949298e-02 1.06671499136e-02 1.04460621935e-02 1.01663421573e-02 9.85294674885e-03 9.53173661310e-03 + 9.22648243576e-03 8.95658363692e-03 8.73551184506e-03 8.57007132232e-03 8.46060891145e-03 8.40200942373e-03 + 8.38500711079e-03 8.53524112695e-03 8.66817035987e-03 8.76725594498e-03 8.82009872524e-03 8.82009872524e-03 + 8.76725594498e-03 8.66817035987e-03 8.53524112695e-03 8.38500711079e-03 8.23585736203e-03 8.10563303358e-03 + 8.00955236461e-03 7.95863052826e-03 7.95863052826e-03 8.00955236461e-03 8.10563303358e-03 8.23585736203e-03 + 8.38500711079e-03 8.53524112695e-03 8.66817035987e-03 8.76725594498e-03 8.82009872524e-03 8.82009872524e-03 + 8.76725594498e-03 8.66817035987e-03 8.53524112695e-03 8.38500711079e-03 8.23585736203e-03 8.10563303358e-03 + 8.00955236461e-03 7.95863052826e-03 7.95863052826e-03 8.00955236461e-03 8.10563303358e-03 8.23585736203e-03 + 8.69246386814e-03 8.95261635749e-03 9.15892896774e-03 9.29162040305e-03 9.33741418467e-03 9.29162040305e-03 + 9.15892896774e-03 8.95261635749e-03 8.69246386814e-03 8.40200942373e-03 8.10563303358e-03 7.82576853226e-03 + 7.58058258839e-03 7.38252390656e-03 7.23785699764e-03 7.14689010595e-03 7.10459522193e-03 7.10160482063e-03 + 7.12561826537e-03 7.16308508658e-03 7.20097316500e-03 7.22847713667e-03 7.23847314555e-03 7.22847713667e-03 + 7.20097316500e-03 7.16308508658e-03 7.12561826537e-03 7.10160482063e-03 7.10459522193e-03 7.14689010595e-03 + 7.23785699764e-03 7.38252390656e-03 7.58058258839e-03 7.82576853226e-03 8.10563303358e-03 8.40200942373e-03 + 9.31810768724e-03 9.66211927865e-03 9.91029781221e-03 1.00404664762e-02 1.00404664762e-02 9.91029781221e-03 + 9.66211927865e-03 9.31810768724e-03 8.90705726329e-03 8.46060891145e-03 8.00955236461e-03 7.58058258839e-03 + 7.19410390186e-03 6.86339437793e-03 6.59479473082e-03 6.38840491477e-03 6.23916674188e-03 6.13840739734e-03 + 6.07562992209e-03 6.04016501968e-03 6.02253909249e-03 6.01563766373e-03 6.01563766373e-03 6.02253909249e-03 + 6.04016501968e-03 6.07562992209e-03 6.13840739734e-03 6.23916674188e-03 6.38840491477e-03 6.59479473082e-03 + 6.86339437793e-03 7.19410390186e-03 7.58058258839e-03 8.00955236461e-03 8.46060891145e-03 8.90705726329e-03 + 1.02846446979e-02 1.06856809758e-02 1.09414577715e-02 1.10293847869e-02 1.09414577715e-02 1.06856809758e-02 + 1.02846446979e-02 9.77183223433e-03 9.18679124184e-03 8.57007132232e-03 7.95863052826e-03 7.38252390656e-03 + 6.86339437793e-03 6.41444748147e-03 6.04118457084e-03 5.74257125314e-03 5.51272438194e-03 5.34296096392e-03 + 5.22371135458e-03 5.14599535674e-03 5.10253249618e-03 5.08859106656e-03 5.10253249618e-03 5.14599535674e-03 + 5.22371135458e-03 5.34296096392e-03 5.51272438194e-03 5.74257125314e-03 6.04118457084e-03 6.41444748147e-03 + 6.86339437793e-03 7.38252390656e-03 7.95863052826e-03 8.57007132232e-03 9.18679124184e-03 9.77183223433e-03 + 1.16276251073e-02 1.20550163598e-02 1.22786655737e-02 1.22786655737e-02 1.20550163598e-02 1.16276251073e-02 + 1.10330000246e-02 1.03186231402e-02 9.53627070961e-03 8.73551184506e-03 7.95863052826e-03 7.23785699764e-03 + 6.59479473082e-03 6.04118457084e-03 5.58034633768e-03 5.20914423543e-03 4.92029966810e-03 4.70458873539e-03 + 4.55262020357e-03 4.45623663297e-03 4.40955813989e-03 4.40955813989e-03 4.45623663297e-03 4.55262020357e-03 + 4.70458873539e-03 4.92029966810e-03 5.20914423543e-03 5.58034633768e-03 6.04118457084e-03 6.59479473082e-03 + 7.23785699764e-03 7.95863052826e-03 8.73551184506e-03 9.53627070961e-03 1.03186231402e-02 1.10330000246e-02 + 1.33939588194e-02 1.38094745262e-02 1.39522993746e-02 1.38094745262e-02 1.33939588194e-02 1.27424344623e-02 + 1.19093466628e-02 1.09586567104e-02 9.95507847617e-03 8.95658363692e-03 8.00955236461e-03 7.14689010595e-03 + 6.38840491477e-03 5.74257125314e-03 5.20914423543e-03 4.78210810048e-03 4.45230019628e-03 4.20942844716e-03 + 4.04374575730e-03 3.94752033538e-03 3.91597292758e-03 3.94752033538e-03 4.04374575730e-03 4.20942844716e-03 + 4.45230019628e-03 4.78210810048e-03 5.20914423543e-03 5.74257125314e-03 6.38840491477e-03 7.14689010595e-03 + 8.00955236461e-03 8.95658363692e-03 9.95507847617e-03 1.09586567104e-02 1.19093466628e-02 1.27424344623e-02 + 1.56375665721e-02 1.59907282434e-02 1.59907282434e-02 1.56375665721e-02 1.49636867906e-02 1.40283418589e-02 + 1.29079014387e-02 1.16845233837e-02 1.04356792319e-02 9.22648243576e-03 8.10563303358e-03 7.10459522193e-03 + 6.23916674188e-03 5.51272438194e-03 4.92029966810e-03 4.45230019628e-03 4.09713024865e-03 3.84302280796e-03 + 3.67971968314e-03 3.59990872378e-03 3.59990872378e-03 3.67971968314e-03 3.84302280796e-03 4.09713024865e-03 + 4.45230019628e-03 4.92029966810e-03 5.51272438194e-03 6.23916674188e-03 7.10459522193e-03 8.10563303358e-03 + 9.22648243576e-03 1.04356792319e-02 1.16845233837e-02 1.29079014387e-02 1.40283418589e-02 1.49636867906e-02 + 1.84129279741e-02 1.86354478304e-02 1.84129279741e-02 1.77666865554e-02 1.67567114426e-02 1.54709928045e-02 + 1.40112393540e-02 1.24785638223e-02 1.09620544703e-02 9.53173661310e-03 8.23585736203e-03 7.10160482063e-03 + 6.13840739734e-03 5.34296096392e-03 4.70458873539e-03 4.20942844716e-03 3.84302280796e-03 3.59206217435e-03 + 3.44594928533e-03 3.39799742507e-03 3.44594928533e-03 3.59206217435e-03 3.84302280796e-03 4.20942844716e-03 + 4.70458873539e-03 5.34296096392e-03 6.13840739734e-03 7.10160482063e-03 8.23585736203e-03 9.53173661310e-03 + 1.09620544703e-02 1.24785638223e-02 1.40112393540e-02 1.54709928045e-02 1.67567114426e-02 1.77666865554e-02 + 2.17657781241e-02 2.17657781241e-02 2.12198093897e-02 2.01812628043e-02 1.87467470027e-02 1.70389543521e-02 + 1.51874137660e-02 1.33116675302e-02 1.15097880648e-02 9.85294674885e-03 8.38500711079e-03 7.12561826537e-03 + 6.07562992209e-03 5.22371135458e-03 4.55262020357e-03 4.04374575730e-03 3.67971968314e-03 3.44594928533e-03 + 3.33184951460e-03 3.33184951460e-03 3.44594928533e-03 3.67971968314e-03 4.04374575730e-03 4.55262020357e-03 + 5.22371135458e-03 6.07562992209e-03 7.12561826537e-03 8.38500711079e-03 9.85294674885e-03 1.15097880648e-02 + 1.33116675302e-02 1.51874137660e-02 1.70389543521e-02 1.87467470027e-02 2.01812628043e-02 2.12198093897e-02 + 2.57176061925e-02 2.53749373622e-02 2.43819637041e-02 2.28368095394e-02 2.08820531014e-02 1.86800926235e-02 + 1.63890080671e-02 1.41440793855e-02 1.20475550421e-02 1.01663421573e-02 8.53524112695e-03 7.16308508658e-03 + 6.04016501968e-03 5.14599535674e-03 4.45623663297e-03 3.94752033538e-03 3.59990872378e-03 3.39799742507e-03 + 3.33184951460e-03 3.39799742507e-03 3.59990872378e-03 3.94752033538e-03 4.45623663297e-03 5.14599535674e-03 + 6.04016501968e-03 7.16308508658e-03 8.53524112695e-03 1.01663421573e-02 1.20475550421e-02 1.41440793855e-02 + 1.63890080671e-02 1.86800926235e-02 2.08820531014e-02 2.28368095394e-02 2.43819637041e-02 2.53749373622e-02 + 3.02423286704e-02 2.94074293899e-02 2.78244998346e-02 2.56499234494e-02 2.30804654510e-02 2.03206914317e-02 + 1.75547637226e-02 1.49279448733e-02 1.25396406703e-02 1.04460621935e-02 8.66817035987e-03 7.20097316500e-03 + 6.02253909249e-03 5.10253249618e-03 4.40955813989e-03 3.91597292758e-03 3.59990872378e-03 3.44594928533e-03 + 3.44594928533e-03 3.59990872378e-03 3.91597292758e-03 4.40955813989e-03 5.10253249618e-03 6.02253909249e-03 + 7.20097316500e-03 8.66817035987e-03 1.04460621935e-02 1.25396406703e-02 1.49279448733e-02 1.75547637226e-02 + 2.03206914317e-02 2.30804654510e-02 2.56499234494e-02 2.78244998346e-02 2.94074293899e-02 3.02423286704e-02 + 3.52402742752e-02 3.37399765679e-02 3.14154606035e-02 2.84935612207e-02 2.52298202509e-02 2.18687619531e-02 + 1.86137801375e-02 1.56112881223e-02 1.29494247541e-02 1.06671499136e-02 8.76725594498e-03 7.22847713667e-03 + 6.01563766373e-03 5.08859106656e-03 4.40955813989e-03 3.94752033538e-03 3.67971968314e-03 3.59206217435e-03 + 3.67971968314e-03 3.94752033538e-03 4.40955813989e-03 5.08859106656e-03 6.01563766373e-03 7.22847713667e-03 + 8.76725594498e-03 1.06671499136e-02 1.29494247541e-02 1.56112881223e-02 1.86137801375e-02 2.18687619531e-02 + 2.52298202509e-02 2.84935612207e-02 3.14154606035e-02 3.37399765679e-02 3.52402742752e-02 3.57591480990e-02 + 4.05199675384e-02 3.81729635435e-02 3.49654910486e-02 3.12022017908e-02 2.71955666447e-02 2.32217587400e-02 + 1.94921954522e-02 1.61434902729e-02 1.32437842255e-02 1.08088949298e-02 8.82009872524e-03 7.23847314555e-03 + 6.01563766373e-03 5.10253249618e-03 4.45623663297e-03 4.04374575730e-03 3.84302280796e-03 3.84302280796e-03 + 4.04374575730e-03 4.45623663297e-03 5.10253249618e-03 6.01563766373e-03 7.23847314555e-03 8.82009872524e-03 + 1.08088949298e-02 1.32437842255e-02 1.61434902729e-02 1.94921954522e-02 2.32217587400e-02 2.71955666447e-02 + 3.12022017908e-02 3.49654910486e-02 3.81729635435e-02 4.05199675384e-02 4.17618689283e-02 4.17618689283e-02 + 4.57968161948e-02 4.24386109393e-02 3.82415861113e-02 3.35871770820e-02 2.88348357920e-02 2.42781130820e-02 + 2.01220876747e-02 1.64818809732e-02 1.33976732300e-02 1.08577130860e-02 8.82009872524e-03 7.22847713667e-03 + 6.02253909249e-03 5.14599535674e-03 4.55262020357e-03 4.20942844716e-03 4.09713024865e-03 4.20942844716e-03 + 4.55262020357e-03 5.14599535674e-03 6.02253909249e-03 7.22847713667e-03 8.82009872524e-03 1.08577130860e-02 + 1.33976732300e-02 1.64818809732e-02 2.01220876747e-02 2.42781130820e-02 2.88348357920e-02 3.35871770820e-02 + 3.82415861113e-02 4.24386109393e-02 4.57968161948e-02 4.79731106469e-02 4.87273692032e-02 4.79731106469e-02 + 5.07121410456e-02 4.62258246981e-02 4.09927131873e-02 3.54595415232e-02 3.00149219248e-02 2.49511167951e-02 + 2.04512222766e-02 1.65980023724e-02 1.33976732300e-02 1.08088949298e-02 8.76725594498e-03 7.20097316500e-03 + 6.04016501968e-03 5.22371135458e-03 4.70458873539e-03 4.45230019628e-03 4.45230019628e-03 4.70458873539e-03 + 5.22371135458e-03 6.04016501968e-03 7.20097316500e-03 8.76725594498e-03 1.08088949298e-02 1.33976732300e-02 + 1.65980023724e-02 2.04512222766e-02 2.49511167951e-02 3.00149219248e-02 3.54595415232e-02 4.09927131873e-02 + 4.62258246981e-02 5.07121410456e-02 5.40097122002e-02 5.57595749637e-02 5.57595749637e-02 5.40097122002e-02 + 5.48714786192e-02 4.92182336225e-02 4.29832635915e-02 3.66568505349e-02 3.06330408871e-02 2.51823253991e-02 + 2.04512222766e-02 1.64818809732e-02 1.32437842255e-02 1.06671499136e-02 8.66817035987e-03 7.16308508658e-03 + 6.07562992209e-03 5.34296096392e-03 4.92029966810e-03 4.78210810048e-03 4.92029966810e-03 5.34296096392e-03 + 6.07562992209e-03 7.16308508658e-03 8.66817035987e-03 1.06671499136e-02 1.32437842255e-02 1.64818809732e-02 + 2.04512222766e-02 2.51823253991e-02 3.06330408871e-02 3.66568505349e-02 4.29832635915e-02 4.92182336225e-02 + 5.48714786192e-02 5.94150808572e-02 6.23688231248e-02 6.33941825467e-02 6.23688231248e-02 5.94150808572e-02 + 5.78981879671e-02 5.11403130173e-02 4.40291518527e-02 3.70689589239e-02 3.06330408871e-02 2.49511167951e-02 + 2.01220876747e-02 1.61434902729e-02 1.29494247541e-02 1.04460621935e-02 8.53524112695e-03 7.12561826537e-03 + 6.13840739734e-03 5.51272438194e-03 5.20914423543e-03 5.20914423543e-03 5.51272438194e-03 6.13840739734e-03 + 7.12561826537e-03 8.53524112695e-03 1.04460621935e-02 1.29494247541e-02 1.61434902729e-02 2.01220876747e-02 + 2.49511167951e-02 3.06330408871e-02 3.70689589239e-02 4.40291518527e-02 5.11403130173e-02 5.78981879671e-02 + 6.37149803432e-02 6.80033074139e-02 7.02831021338e-02 7.02831021338e-02 6.80033074139e-02 6.37149803432e-02 + 5.94941697642e-02 5.18034033720e-02 4.40291518527e-02 3.66568505349e-02 3.00149219248e-02 2.42781130820e-02 + 1.94921954522e-02 1.56112881223e-02 1.25396406703e-02 1.01663421573e-02 8.38500711079e-03 7.10160482063e-03 + 6.23916674188e-03 5.74257125314e-03 5.58034633768e-03 5.74257125314e-03 6.23916674188e-03 7.10160482063e-03 + 8.38500711079e-03 1.01663421573e-02 1.25396406703e-02 1.56112881223e-02 1.94921954522e-02 2.42781130820e-02 + 3.00149219248e-02 3.66568505349e-02 4.40291518527e-02 5.18034033720e-02 5.94941697642e-02 6.64898780493e-02 + 7.21264918488e-02 7.57970302390e-02 7.70723261920e-02 7.57970302390e-02 7.21264918488e-02 6.64898780493e-02 + 5.94941697642e-02 5.11403130173e-02 4.29832635915e-02 3.54595415232e-02 2.88348357920e-02 2.32217587400e-02 + 1.86137801375e-02 1.49279448733e-02 1.20475550421e-02 9.85294674885e-03 8.23585736203e-03 7.10459522193e-03 + 6.38840491477e-03 6.04118457084e-03 6.04118457084e-03 6.38840491477e-03 7.10459522193e-03 8.23585736203e-03 + 9.85294674885e-03 1.20475550421e-02 1.49279448733e-02 1.86137801375e-02 2.32217587400e-02 2.88348357920e-02 + 3.54595415232e-02 4.29832635915e-02 5.11403130173e-02 5.94941697642e-02 6.74494907981e-02 7.43082663472e-02 + 7.93709590427e-02 8.20645507484e-02 8.20645507484e-02 7.93709590427e-02 7.43082663472e-02 6.74494907981e-02 + 5.78981879671e-02 4.92182336225e-02 4.09927131873e-02 3.35871770820e-02 2.71955666447e-02 2.18687619531e-02 + 1.75547637226e-02 1.41440793855e-02 1.15097880648e-02 9.53173661310e-03 8.10563303358e-03 7.14689010595e-03 + 6.59479473082e-03 6.41444748147e-03 6.59479473082e-03 7.14689010595e-03 8.10563303358e-03 9.53173661310e-03 + 1.15097880648e-02 1.41440793855e-02 1.75547637226e-02 2.18687619531e-02 2.71955666447e-02 3.35871770820e-02 + 4.09927131873e-02 4.92182336225e-02 5.78981879671e-02 6.64898780493e-02 7.43082663472e-02 8.06097207709e-02 + 8.47143937707e-02 8.61408122915e-02 8.47143937707e-02 8.06097207709e-02 7.43082663472e-02 6.64898780493e-02 + 5.48714786192e-02 4.62258246981e-02 3.82415861113e-02 3.12022017908e-02 2.52298202509e-02 2.03206914317e-02 + 1.63890080671e-02 1.33116675302e-02 1.09620544703e-02 9.22648243576e-03 8.00955236461e-03 7.23785699764e-03 + 6.86339437793e-03 6.86339437793e-03 7.23785699764e-03 8.00955236461e-03 9.22648243576e-03 1.09620544703e-02 + 1.33116675302e-02 1.63890080671e-02 2.03206914317e-02 2.52298202509e-02 3.12022017908e-02 3.82415861113e-02 + 4.62258246981e-02 5.48714786192e-02 6.37149803432e-02 7.21264918488e-02 7.93709590427e-02 8.47143937707e-02 + 8.75562567048e-02 8.75562567048e-02 8.47143937707e-02 7.93709590427e-02 7.21264918488e-02 6.37149803432e-02 + 5.07121410456e-02 4.24386109393e-02 3.49654910486e-02 2.84935612207e-02 2.30804654510e-02 1.86800926235e-02 + 1.51874137660e-02 1.24785638223e-02 1.04356792319e-02 8.95658363692e-03 7.95863052826e-03 7.38252390656e-03 + 7.19410390186e-03 7.38252390656e-03 7.95863052826e-03 8.95658363692e-03 1.04356792319e-02 1.24785638223e-02 + 1.51874137660e-02 1.86800926235e-02 2.30804654510e-02 2.84935612207e-02 3.49654910486e-02 4.24386109393e-02 + 5.07121410456e-02 5.94150808572e-02 6.80033074139e-02 7.57970302390e-02 8.20645507484e-02 8.61408122915e-02 + 8.75562567048e-02 8.61408122915e-02 8.20645507484e-02 7.57970302390e-02 6.80033074139e-02 5.94150808572e-02 + 4.57968161948e-02 3.81729635435e-02 3.14154606035e-02 2.56499234494e-02 2.08820531014e-02 1.70389543521e-02 + 1.40112393540e-02 1.16845233837e-02 9.95507847617e-03 8.73551184506e-03 7.95863052826e-03 7.58058258839e-03 + 7.58058258839e-03 7.95863052826e-03 8.73551184506e-03 9.95507847617e-03 1.16845233837e-02 1.40112393540e-02 + 1.70389543521e-02 2.08820531014e-02 2.56499234494e-02 3.14154606035e-02 3.81729635435e-02 4.57968161948e-02 + 5.40097122002e-02 6.23688231248e-02 7.02831021338e-02 7.70723261920e-02 8.20645507484e-02 8.47143937707e-02 + 8.47143937707e-02 8.20645507484e-02 7.70723261920e-02 7.02831021338e-02 6.23688231248e-02 5.40097122002e-02 + 4.05199675384e-02 3.37399765679e-02 2.78244998346e-02 2.28368095394e-02 1.87467470027e-02 1.54709928045e-02 + 1.29079014387e-02 1.09586567104e-02 9.53627070961e-03 8.57007132232e-03 8.00955236461e-03 7.82576853226e-03 + 8.00955236461e-03 8.57007132232e-03 9.53627070961e-03 1.09586567104e-02 1.29079014387e-02 1.54709928045e-02 + 1.87467470027e-02 2.28368095394e-02 2.78244998346e-02 3.37399765679e-02 4.05199675384e-02 4.79731106469e-02 + 5.57595749637e-02 6.33941825467e-02 7.02831021338e-02 7.57970302390e-02 7.93709590427e-02 8.06097207709e-02 + 7.93709590427e-02 7.57970302390e-02 7.02831021338e-02 6.33941825467e-02 5.57595749637e-02 4.79731106469e-02 + 3.52402742752e-02 2.94074293899e-02 2.43819637041e-02 2.01812628043e-02 1.67567114426e-02 1.40283418589e-02 + 1.19093466628e-02 1.03186231402e-02 9.18679124184e-03 8.46060891145e-03 8.10563303358e-03 8.10563303358e-03 + 8.46060891145e-03 9.18679124184e-03 1.03186231402e-02 1.19093466628e-02 1.40283418589e-02 1.67567114426e-02 + 2.01812628043e-02 2.43819637041e-02 2.94074293899e-02 3.52402742752e-02 4.17618689283e-02 4.87273692032e-02 + 5.57595749637e-02 6.23688231248e-02 6.80033074139e-02 7.21264918488e-02 7.43082663472e-02 7.43082663472e-02 + 7.21264918488e-02 6.80033074139e-02 6.23688231248e-02 5.57595749637e-02 4.87273692032e-02 4.17618689283e-02 + 3.02423286704e-02 2.53749373622e-02 2.12198093897e-02 1.77666865554e-02 1.49636867906e-02 1.27424344623e-02 + 1.10330000246e-02 9.77183223433e-03 8.90705726329e-03 8.40200942373e-03 8.23585736203e-03 8.40200942373e-03 + 8.90705726329e-03 9.77183223433e-03 1.10330000246e-02 1.27424344623e-02 1.49636867906e-02 1.77666865554e-02 + 2.12198093897e-02 2.53749373622e-02 3.02423286704e-02 3.57591480990e-02 4.17618689283e-02 4.79731106469e-02 + 5.40097122002e-02 5.94150808572e-02 6.37149803432e-02 6.64898780493e-02 6.74494907981e-02 6.64898780493e-02 + 6.37149803432e-02 5.94150808572e-02 5.40097122002e-02 4.79731106469e-02 4.17618689283e-02 3.57591480990e-02 + 2.53146898274e-02 2.17657781241e-02 1.87538902948e-02 1.62588522549e-02 1.42425749040e-02 1.26620800682e-02 + 1.14766013692e-02 1.06524671204e-02 1.01663421573e-02 1.00055755901e-02 1.01663421573e-02 1.06524671204e-02 + 1.14766013692e-02 1.26620800682e-02 1.42425749040e-02 1.62588522549e-02 1.87538902948e-02 2.17657781241e-02 + 2.53146898274e-02 2.93819034216e-02 3.38859304601e-02 3.86662855632e-02 4.34838779539e-02 4.80406383964e-02 + 5.20147259753e-02 5.51031089527e-02 5.70612480291e-02 5.77319585491e-02 5.70612480291e-02 5.51031089527e-02 + 5.20147259753e-02 4.80406383964e-02 4.34838779539e-02 3.86662855632e-02 3.38859304601e-02 2.93819034216e-02 + 2.17657781241e-02 1.89804120902e-02 1.66250325509e-02 1.46810426016e-02 1.31198380533e-02 1.19105819676e-02 + 1.10259974674e-02 1.04460621935e-02 1.01587603229e-02 1.01587603229e-02 1.04460621935e-02 1.10259974674e-02 + 1.19105819676e-02 1.31198380533e-02 1.46810426016e-02 1.66250325509e-02 1.89804120902e-02 2.17657781241e-02 + 2.49776956914e-02 2.85734174953e-02 3.24534608631e-02 3.64535808156e-02 4.03527020822e-02 4.38959177953e-02 + 4.68264624901e-02 4.89192305177e-02 5.00090134447e-02 5.00090134447e-02 4.89192305177e-02 4.68264624901e-02 + 4.38959177953e-02 4.03527020822e-02 3.64535808156e-02 3.24534608631e-02 2.85734174953e-02 2.49776956914e-02 + 1.87538902948e-02 1.66250325509e-02 1.48317912783e-02 1.33594815778e-02 1.21873907787e-02 1.12951380995e-02 + 1.06671499136e-02 1.02937156151e-02 1.01697655067e-02 1.02937156151e-02 1.06671499136e-02 1.12951380995e-02 + 1.21873907787e-02 1.33594815778e-02 1.48317912783e-02 1.66250325509e-02 1.87538902948e-02 2.12198093897e-02 + 2.40011711299e-02 2.70402901784e-02 3.02323588099e-02 3.34242157073e-02 3.64263171972e-02 3.90347179512e-02 + 4.10571769449e-02 4.23378898536e-02 4.27763236460e-02 4.23378898536e-02 4.10571769449e-02 3.90347179512e-02 + 3.64263171972e-02 3.34242157073e-02 3.02323588099e-02 2.70402901784e-02 2.40011711299e-02 2.12198093897e-02 + 1.62588522549e-02 1.46810426016e-02 1.33594815778e-02 1.22825573408e-02 1.14361707830e-02 1.08088949298e-02 + 1.03937663652e-02 1.01870819285e-02 1.01870819285e-02 1.03937663652e-02 1.08088949298e-02 1.14361707830e-02 + 1.22825573408e-02 1.33594815778e-02 1.46810426016e-02 1.62588522549e-02 1.80960146721e-02 2.01812628043e-02 + 2.24815496090e-02 2.49333108373e-02 2.74372089612e-02 2.98615217076e-02 3.20546920774e-02 3.38635928392e-02 + 3.51532871168e-02 3.58243136049e-02 3.58243136049e-02 3.51532871168e-02 3.38635928392e-02 3.20546920774e-02 + 2.98615217076e-02 2.74372089612e-02 2.49333108373e-02 2.24815496090e-02 2.01812628043e-02 1.80960146721e-02 + 1.42425749040e-02 1.31198380533e-02 1.21873907787e-02 1.14361707830e-02 1.08577130860e-02 1.04468583553e-02 + 1.02011860999e-02 1.01194532806e-02 1.02011860999e-02 1.04468583553e-02 1.08577130860e-02 1.14361707830e-02 + 1.21873907787e-02 1.31198380533e-02 1.42425749040e-02 1.55601992220e-02 1.70678712692e-02 1.87467470027e-02 + 2.05587788214e-02 2.24420850452e-02 2.43103322252e-02 2.60582031450e-02 2.75721078901e-02 2.87439673059e-02 + 2.94854041377e-02 2.97391273192e-02 2.94854041377e-02 2.87439673059e-02 2.75721078901e-02 2.60582031450e-02 + 2.43103322252e-02 2.24420850452e-02 2.05587788214e-02 1.87467470027e-02 1.70678712692e-02 1.55601992220e-02 + 1.26620800682e-02 1.19105819676e-02 1.12951380995e-02 1.08088949298e-02 1.04468583553e-02 1.02064774226e-02 + 1.00865795572e-02 1.00865795572e-02 1.02064774226e-02 1.04468583553e-02 1.08088949298e-02 1.12951380995e-02 + 1.19105819676e-02 1.26620800682e-02 1.35553259639e-02 1.45906790875e-02 1.57591868798e-02 1.70389543521e-02 + 1.83921353899e-02 1.97639178277e-02 2.10847229658e-02 2.22755921268e-02 2.32562353108e-02 2.39549635512e-02 + 2.43184216158e-02 2.43184216158e-02 2.39549635512e-02 2.32562353108e-02 2.22755921268e-02 2.10847229658e-02 + 1.97639178277e-02 1.83921353899e-02 1.70389543521e-02 1.57591868798e-02 1.45906790875e-02 1.35553259639e-02 + 1.14766013692e-02 1.10259974674e-02 1.06671499136e-02 1.03937663652e-02 1.02011860999e-02 1.00865795572e-02 + 1.00485204973e-02 1.00865795572e-02 1.02011860999e-02 1.03937663652e-02 1.06671499136e-02 1.10259974674e-02 + 1.14766013692e-02 1.20255038743e-02 1.26769712537e-02 1.34297677852e-02 1.42737851127e-02 1.51874137660e-02 + 1.61367490443e-02 1.70770073925e-02 1.79555609317e-02 1.87162119832e-02 1.93050944183e-02 1.96777557044e-02 + 1.98052910067e-02 1.96777557044e-02 1.93050944183e-02 1.87162119832e-02 1.79555609317e-02 1.70770073925e-02 + 1.61367490443e-02 1.51874137660e-02 1.42737851127e-02 1.34297677852e-02 1.26769712537e-02 1.20255038743e-02 + 1.06524671204e-02 1.04460621935e-02 1.02937156151e-02 1.01870819285e-02 1.01194532806e-02 1.00865795572e-02 + 1.00865795572e-02 1.01194532806e-02 1.01870819285e-02 1.02937156151e-02 1.04460621935e-02 1.06524671204e-02 + 1.09215936737e-02 1.12609832188e-02 1.16751572683e-02 1.21629507848e-02 1.27148275869e-02 1.33116675302e-02 + 1.39256808178e-02 1.45226393383e-02 1.50645020089e-02 1.55127511572e-02 1.58329883187e-02 1.59997599900e-02 + 1.59997599900e-02 1.58329883187e-02 1.55127511572e-02 1.50645020089e-02 1.45226393383e-02 1.39256808178e-02 + 1.33116675302e-02 1.27148275869e-02 1.21629507848e-02 1.16751572683e-02 1.12609832188e-02 1.09215936737e-02 + 1.01663421573e-02 1.01587603229e-02 1.01697655067e-02 1.01870819285e-02 1.02011860999e-02 1.02064774226e-02 + 1.02011860999e-02 1.01870819285e-02 1.01697655067e-02 1.01587603229e-02 1.01663421573e-02 1.02054916185e-02 + 1.02881382638e-02 1.04238516982e-02 1.06181928008e-02 1.08706042529e-02 1.11729588764e-02 1.15097880648e-02 + 1.18598583649e-02 1.21980827392e-02 1.24976141314e-02 1.27327884289e-02 1.28827341282e-02 1.29342051284e-02 + 1.28827341282e-02 1.27327884289e-02 1.24976141314e-02 1.21980827392e-02 1.18598583649e-02 1.15097880648e-02 + 1.11729588764e-02 1.08706042529e-02 1.06181928008e-02 1.04238516982e-02 1.02881382638e-02 1.02054916185e-02 + 1.00055755901e-02 1.01587603229e-02 1.02937156151e-02 1.03937663652e-02 1.04468583553e-02 1.04468583553e-02 + 1.03937663652e-02 1.02937156151e-02 1.01587603229e-02 1.00055755901e-02 9.85294674885e-03 9.71912104775e-03 + 9.61987006090e-03 9.56702175361e-03 9.56702175361e-03 9.61987006090e-03 9.71912104775e-03 9.85294674885e-03 + 1.00055755901e-02 1.01587603229e-02 1.02937156151e-02 1.03937663652e-02 1.04468583553e-02 1.04468583553e-02 + 1.03937663652e-02 1.02937156151e-02 1.01587603229e-02 1.00055755901e-02 9.85294674885e-03 9.71912104775e-03 + 9.61987006090e-03 9.56702175361e-03 9.56702175361e-03 9.61987006090e-03 9.71912104775e-03 9.85294674885e-03 + 1.01663421573e-02 1.04460621935e-02 1.06671499136e-02 1.08088949298e-02 1.08577130860e-02 1.08088949298e-02 + 1.06671499136e-02 1.04460621935e-02 1.01663421573e-02 9.85294674885e-03 9.53173661310e-03 9.22648243576e-03 + 8.95658363692e-03 8.73551184506e-03 8.57007132232e-03 8.46060891145e-03 8.40200942373e-03 8.38500711079e-03 + 8.39746782805e-03 8.42580807925e-03 8.45686847188e-03 8.47998103933e-03 8.48843476768e-03 8.47998103933e-03 + 8.45686847188e-03 8.42580807925e-03 8.39746782805e-03 8.38500711079e-03 8.40200942373e-03 8.46060891145e-03 + 8.57007132232e-03 8.73551184506e-03 8.95658363692e-03 9.22648243576e-03 9.53173661310e-03 9.85294674885e-03 + 1.06524671204e-02 1.10259974674e-02 1.12951380995e-02 1.14361707830e-02 1.14361707830e-02 1.12951380995e-02 + 1.10259974674e-02 1.06524671204e-02 1.02054916185e-02 9.71912104775e-03 9.22648243576e-03 8.75631776595e-03 + 8.33057919998e-03 7.96341795569e-03 7.66146344666e-03 7.42492384580e-03 7.24904282964e-03 7.12561826537e-03 + 7.04448483440e-03 6.99504538611e-03 6.96786738821e-03 6.95605972443e-03 6.95605972443e-03 6.96786738821e-03 + 6.99504538611e-03 7.04448483440e-03 7.12561826537e-03 7.24904282964e-03 7.42492384580e-03 7.66146344666e-03 + 7.96341795569e-03 8.33057919998e-03 8.75631776595e-03 9.22648243576e-03 9.71912104775e-03 1.02054916185e-02 + 1.14766013692e-02 1.19105819676e-02 1.21873907787e-02 1.22825573408e-02 1.21873907787e-02 1.19105819676e-02 + 1.14766013692e-02 1.09215936737e-02 1.02881382638e-02 9.61987006090e-03 8.95658363692e-03 8.33057919998e-03 + 7.76490388909e-03 7.27338017313e-03 6.86170422323e-03 6.52902358143e-03 6.26978037715e-03 6.07562992209e-03 + 5.93719631865e-03 5.84558656512e-03 5.79365065764e-03 5.77685140016e-03 5.79365065764e-03 5.84558656512e-03 + 5.93719631865e-03 6.07562992209e-03 6.26978037715e-03 6.52902358143e-03 6.86170422323e-03 7.27338017313e-03 + 7.76490388909e-03 8.33057919998e-03 8.95658363692e-03 9.61987006090e-03 1.02881382638e-02 1.09215936737e-02 + 1.26620800682e-02 1.31198380533e-02 1.33594815778e-02 1.33594815778e-02 1.31198380533e-02 1.26620800682e-02 + 1.20255038743e-02 1.12609832188e-02 1.04238516982e-02 9.56702175361e-03 8.73551184506e-03 7.96341795569e-03 + 7.27338017313e-03 6.67761981445e-03 6.17967298585e-03 5.77651892440e-03 5.46093720174e-03 5.22371135458e-03 + 5.05545032098e-03 4.94806264494e-03 4.89581524939e-03 4.89581524939e-03 4.94806264494e-03 5.05545032098e-03 + 5.22371135458e-03 5.46093720174e-03 5.77651892440e-03 6.17967298585e-03 6.67761981445e-03 7.27338017313e-03 + 7.96341795569e-03 8.73551184506e-03 9.56702175361e-03 1.04238516982e-02 1.12609832188e-02 1.20255038743e-02 + 1.42425749040e-02 1.46810426016e-02 1.48317912783e-02 1.46810426016e-02 1.42425749040e-02 1.35553259639e-02 + 1.26769712537e-02 1.16751572683e-02 1.06181928008e-02 9.56702175361e-03 8.57007132232e-03 7.66146344666e-03 + 6.86170422323e-03 6.17967298585e-03 5.61528193683e-03 5.16243150929e-03 4.81172327806e-03 4.55262020357e-03 + 4.37525079151e-03 4.27192322596e-03 4.23798561825e-03 4.27192322596e-03 4.37525079151e-03 4.55262020357e-03 + 4.81172327806e-03 5.16243150929e-03 5.61528193683e-03 6.17967298585e-03 6.86170422323e-03 7.66146344666e-03 + 8.57007132232e-03 9.56702175361e-03 1.06181928008e-02 1.16751572683e-02 1.26769712537e-02 1.35553259639e-02 + 1.62588522549e-02 1.66250325509e-02 1.66250325509e-02 1.62588522549e-02 1.55601992220e-02 1.45906790875e-02 + 1.34297677852e-02 1.21629507848e-02 1.08706042529e-02 9.61987006090e-03 8.46060891145e-03 7.42492384580e-03 + 6.52902358143e-03 5.77651892440e-03 5.16243150929e-03 4.67692793169e-03 4.30805835198e-03 4.04374575730e-03 + 3.87358926493e-03 3.79030883078e-03 3.79030883078e-03 3.87358926493e-03 4.04374575730e-03 4.30805835198e-03 + 4.67692793169e-03 5.16243150929e-03 5.77651892440e-03 6.52902358143e-03 7.42492384580e-03 8.46060891145e-03 + 9.61987006090e-03 1.08706042529e-02 1.21629507848e-02 1.34297677852e-02 1.45906790875e-02 1.55601992220e-02 + 1.87538902948e-02 1.89804120902e-02 1.87538902948e-02 1.80960146721e-02 1.70678712692e-02 1.57591868798e-02 + 1.42737851127e-02 1.27148275869e-02 1.11729588764e-02 9.71912104775e-03 8.40200942373e-03 7.24904282964e-03 + 6.26978037715e-03 5.46093720174e-03 4.81172327806e-03 4.30805835198e-03 3.93522801758e-03 3.67971968314e-03 + 3.53085792774e-03 3.48198055848e-03 3.53085792774e-03 3.67971968314e-03 3.93522801758e-03 4.30805835198e-03 + 4.81172327806e-03 5.46093720174e-03 6.26978037715e-03 7.24904282964e-03 8.40200942373e-03 9.71912104775e-03 + 1.11729588764e-02 1.27148275869e-02 1.42737851127e-02 1.57591868798e-02 1.70678712692e-02 1.80960146721e-02 + 2.17657781241e-02 2.17657781241e-02 2.12198093897e-02 2.01812628043e-02 1.87467470027e-02 1.70389543521e-02 + 1.51874137660e-02 1.33116675302e-02 1.15097880648e-02 9.85294674885e-03 8.38500711079e-03 7.12561826537e-03 + 6.07562992209e-03 5.22371135458e-03 4.55262020357e-03 4.04374575730e-03 3.67971968314e-03 3.44594928533e-03 + 3.33184951460e-03 3.33184951460e-03 3.44594928533e-03 3.67971968314e-03 4.04374575730e-03 4.55262020357e-03 + 5.22371135458e-03 6.07562992209e-03 7.12561826537e-03 8.38500711079e-03 9.85294674885e-03 1.15097880648e-02 + 1.33116675302e-02 1.51874137660e-02 1.70389543521e-02 1.87467470027e-02 2.01812628043e-02 2.12198093897e-02 + 2.53146898274e-02 2.49776956914e-02 2.40011711299e-02 2.24815496090e-02 2.05587788214e-02 1.83921353899e-02 + 1.61367490443e-02 1.39256808178e-02 1.18598583649e-02 1.00055755901e-02 8.39746782805e-03 7.04448483440e-03 + 5.93719631865e-03 5.05545032098e-03 4.37525079151e-03 3.87358926493e-03 3.53085792774e-03 3.33184951460e-03 + 3.26667178574e-03 3.33184951460e-03 3.53085792774e-03 3.87358926493e-03 4.37525079151e-03 5.05545032098e-03 + 5.93719631865e-03 7.04448483440e-03 8.39746782805e-03 1.00055755901e-02 1.18598583649e-02 1.39256808178e-02 + 1.61367490443e-02 1.83921353899e-02 2.05587788214e-02 2.24815496090e-02 2.40011711299e-02 2.49776956914e-02 + 2.93819034216e-02 2.85734174953e-02 2.70402901784e-02 2.49333108373e-02 2.24420850452e-02 1.97639178277e-02 + 1.70770073925e-02 1.45226393383e-02 1.21980827392e-02 1.01587603229e-02 8.42580807925e-03 6.99504538611e-03 + 5.84558656512e-03 4.94806264494e-03 4.27192322596e-03 3.79030883078e-03 3.48198055848e-03 3.33184951460e-03 + 3.33184951460e-03 3.48198055848e-03 3.79030883078e-03 4.27192322596e-03 4.94806264494e-03 5.84558656512e-03 + 6.99504538611e-03 8.42580807925e-03 1.01587603229e-02 1.21980827392e-02 1.45226393383e-02 1.70770073925e-02 + 1.97639178277e-02 2.24420850452e-02 2.49333108373e-02 2.70402901784e-02 2.85734174953e-02 2.93819034216e-02 + 3.38859304601e-02 3.24534608631e-02 3.02323588099e-02 2.74372089612e-02 2.43103322252e-02 2.10847229658e-02 + 1.79555609317e-02 1.50645020089e-02 1.24976141314e-02 1.02937156151e-02 8.45686847188e-03 6.96786738821e-03 + 5.79365065764e-03 4.89581524939e-03 4.23798561825e-03 3.79030883078e-03 3.53085792774e-03 3.44594928533e-03 + 3.53085792774e-03 3.79030883078e-03 4.23798561825e-03 4.89581524939e-03 5.79365065764e-03 6.96786738821e-03 + 8.45686847188e-03 1.02937156151e-02 1.24976141314e-02 1.50645020089e-02 1.79555609317e-02 2.10847229658e-02 + 2.43103322252e-02 2.74372089612e-02 3.02323588099e-02 3.24534608631e-02 3.38859304601e-02 3.43811654173e-02 + 3.86662855632e-02 3.64535808156e-02 3.34242157073e-02 2.98615217076e-02 2.60582031450e-02 2.22755921268e-02 + 1.87162119832e-02 1.55127511572e-02 1.27327884289e-02 1.03937663652e-02 8.47998103933e-03 6.95605972443e-03 + 5.77685140016e-03 4.89581524939e-03 4.27192322596e-03 3.87358926493e-03 3.67971968314e-03 3.67971968314e-03 + 3.87358926493e-03 4.27192322596e-03 4.89581524939e-03 5.77685140016e-03 6.95605972443e-03 8.47998103933e-03 + 1.03937663652e-02 1.27327884289e-02 1.55127511572e-02 1.87162119832e-02 2.22755921268e-02 2.60582031450e-02 + 2.98615217076e-02 3.34242157073e-02 3.64535808156e-02 3.86662855632e-02 3.98358227133e-02 3.98358227133e-02 + 4.34838779539e-02 4.03527020822e-02 3.64263171972e-02 3.20546920774e-02 2.75721078901e-02 2.32562353108e-02 + 1.93050944183e-02 1.58329883187e-02 1.28827341282e-02 1.04468583553e-02 8.48843476768e-03 6.95605972443e-03 + 5.79365065764e-03 4.94806264494e-03 4.37525079151e-03 4.04374575730e-03 3.93522801758e-03 4.04374575730e-03 + 4.37525079151e-03 4.94806264494e-03 5.79365065764e-03 6.95605972443e-03 8.48843476768e-03 1.04468583553e-02 + 1.28827341282e-02 1.58329883187e-02 1.93050944183e-02 2.32562353108e-02 2.75721078901e-02 3.20546920774e-02 + 3.64263171972e-02 4.03527020822e-02 4.34838779539e-02 4.55081727847e-02 4.62088704848e-02 4.55081727847e-02 + 4.80406383964e-02 4.38959177953e-02 3.90347179512e-02 3.38635928392e-02 2.87439673059e-02 2.39549635512e-02 + 1.96777557044e-02 1.59997599900e-02 1.29342051284e-02 1.04468583553e-02 8.47998103933e-03 6.96786738821e-03 + 5.84558656512e-03 5.05545032098e-03 4.55262020357e-03 4.30805835198e-03 4.30805835198e-03 4.55262020357e-03 + 5.05545032098e-03 5.84558656512e-03 6.96786738821e-03 8.47998103933e-03 1.04468583553e-02 1.29342051284e-02 + 1.59997599900e-02 1.96777557044e-02 2.39549635512e-02 2.87439673059e-02 3.38635928392e-02 3.90347179512e-02 + 4.38959177953e-02 4.80406383964e-02 5.10737783335e-02 5.26787408684e-02 5.26787408684e-02 5.10737783335e-02 + 5.20147259753e-02 4.68264624901e-02 4.10571769449e-02 3.51532871168e-02 2.94854041377e-02 2.43184216158e-02 + 1.98052910067e-02 1.59997599900e-02 1.28827341282e-02 1.03937663652e-02 8.45686847188e-03 6.99504538611e-03 + 5.93719631865e-03 5.22371135458e-03 4.81172327806e-03 4.67692793169e-03 4.81172327806e-03 5.22371135458e-03 + 5.93719631865e-03 6.99504538611e-03 8.45686847188e-03 1.03937663652e-02 1.28827341282e-02 1.59997599900e-02 + 1.98052910067e-02 2.43184216158e-02 2.94854041377e-02 3.51532871168e-02 4.10571769449e-02 4.68264624901e-02 + 5.20147259753e-02 5.61547897924e-02 5.88318176265e-02 5.97584596222e-02 5.88318176265e-02 5.61547897924e-02 + 5.51031089527e-02 4.89192305177e-02 4.23378898536e-02 3.58243136049e-02 2.97391273192e-02 2.43184216158e-02 + 1.96777557044e-02 1.58329883187e-02 1.27327884289e-02 1.02937156151e-02 8.42580807925e-03 7.04448483440e-03 + 6.07562992209e-03 5.46093720174e-03 5.16243150929e-03 5.16243150929e-03 5.46093720174e-03 6.07562992209e-03 + 7.04448483440e-03 8.42580807925e-03 1.02937156151e-02 1.27327884289e-02 1.58329883187e-02 1.96777557044e-02 + 2.43184216158e-02 2.97391273192e-02 3.58243136049e-02 4.23378898536e-02 4.89192305177e-02 5.51031089527e-02 + 6.03694423859e-02 6.42180018992e-02 6.62522137956e-02 6.62522137956e-02 6.42180018992e-02 6.03694423859e-02 + 5.70612480291e-02 5.00090134447e-02 4.27763236460e-02 3.58243136049e-02 2.94854041377e-02 2.39549635512e-02 + 1.93050944183e-02 1.55127511572e-02 1.24976141314e-02 1.01587603229e-02 8.39746782805e-03 7.12561826537e-03 + 6.26978037715e-03 5.77651892440e-03 5.61528193683e-03 5.77651892440e-03 6.26978037715e-03 7.12561826537e-03 + 8.39746782805e-03 1.01587603229e-02 1.24976141314e-02 1.55127511572e-02 1.93050944183e-02 2.39549635512e-02 + 2.94854041377e-02 3.58243136049e-02 4.27763236460e-02 5.00090134447e-02 5.70612480291e-02 6.33842515281e-02 + 6.84139609392e-02 7.16581855164e-02 7.27796836797e-02 7.16581855164e-02 6.84139609392e-02 6.33842515281e-02 + 5.77319585491e-02 5.00090134447e-02 4.23378898536e-02 3.51532871168e-02 2.87439673059e-02 2.32562353108e-02 + 1.87162119832e-02 1.50645020089e-02 1.21980827392e-02 1.00055755901e-02 8.38500711079e-03 7.24904282964e-03 + 6.52902358143e-03 6.17967298585e-03 6.17967298585e-03 6.52902358143e-03 7.24904282964e-03 8.38500711079e-03 + 1.00055755901e-02 1.21980827392e-02 1.50645020089e-02 1.87162119832e-02 2.32562353108e-02 2.87439673059e-02 + 3.51532871168e-02 4.23378898536e-02 5.00090134447e-02 5.77319585491e-02 6.49555724266e-02 7.10787520021e-02 + 7.55368812409e-02 7.78881394404e-02 7.78881394404e-02 7.55368812409e-02 7.10787520021e-02 6.49555724266e-02 + 5.70612480291e-02 4.89192305177e-02 4.10571769449e-02 3.38635928392e-02 2.75721078901e-02 2.22755921268e-02 + 1.79555609317e-02 1.45226393383e-02 1.18598583649e-02 9.85294674885e-03 8.40200942373e-03 7.42492384580e-03 + 6.86170422323e-03 6.67761981445e-03 6.86170422323e-03 7.42492384580e-03 8.40200942373e-03 9.85294674885e-03 + 1.18598583649e-02 1.45226393383e-02 1.79555609317e-02 2.22755921268e-02 2.75721078901e-02 3.38635928392e-02 + 4.10571769449e-02 4.89192305177e-02 5.70612480291e-02 6.49555724266e-02 7.19923628057e-02 7.75631573239e-02 + 8.11458755837e-02 8.23828782457e-02 8.11458755837e-02 7.75631573239e-02 7.19923628057e-02 6.49555724266e-02 + 5.51031089527e-02 4.68264624901e-02 3.90347179512e-02 3.20546920774e-02 2.60582031450e-02 2.10847229658e-02 + 1.70770073925e-02 1.39256808178e-02 1.15097880648e-02 9.71912104775e-03 8.46060891145e-03 7.66146344666e-03 + 7.27338017313e-03 7.27338017313e-03 7.66146344666e-03 8.46060891145e-03 9.71912104775e-03 1.15097880648e-02 + 1.39256808178e-02 1.70770073925e-02 2.10847229658e-02 2.60582031450e-02 3.20546920774e-02 3.90347179512e-02 + 4.68264624901e-02 5.51031089527e-02 6.33842515281e-02 7.10787520021e-02 7.75631573239e-02 8.22656900591e-02 + 8.47410728024e-02 8.47410728024e-02 8.22656900591e-02 7.75631573239e-02 7.10787520021e-02 6.33842515281e-02 + 5.20147259753e-02 4.38959177953e-02 3.64263171972e-02 2.98615217076e-02 2.43103322252e-02 1.97639178277e-02 + 1.61367490443e-02 1.33116675302e-02 1.11729588764e-02 9.61987006090e-03 8.57007132232e-03 7.96341795569e-03 + 7.76490388909e-03 7.96341795569e-03 8.57007132232e-03 9.61987006090e-03 1.11729588764e-02 1.33116675302e-02 + 1.61367490443e-02 1.97639178277e-02 2.43103322252e-02 2.98615217076e-02 3.64263171972e-02 4.38959177953e-02 + 5.20147259753e-02 6.03694423859e-02 6.84139609392e-02 7.55368812409e-02 8.11458755837e-02 8.47410728024e-02 + 8.59805323971e-02 8.47410728024e-02 8.11458755837e-02 7.55368812409e-02 6.84139609392e-02 6.03694423859e-02 + 4.80406383964e-02 4.03527020822e-02 3.34242157073e-02 2.74372089612e-02 2.24420850452e-02 1.83921353899e-02 + 1.51874137660e-02 1.27148275869e-02 1.08706042529e-02 9.56702175361e-03 8.73551184506e-03 8.33057919998e-03 + 8.33057919998e-03 8.73551184506e-03 9.56702175361e-03 1.08706042529e-02 1.27148275869e-02 1.51874137660e-02 + 1.83921353899e-02 2.24420850452e-02 2.74372089612e-02 3.34242157073e-02 4.03527020822e-02 4.80406383964e-02 + 5.61547897924e-02 6.42180018992e-02 7.16581855164e-02 7.78881394404e-02 8.23828782457e-02 8.47410728024e-02 + 8.47410728024e-02 8.23828782457e-02 7.78881394404e-02 7.16581855164e-02 6.42180018992e-02 5.61547897924e-02 + 4.34838779539e-02 3.64535808156e-02 3.02323588099e-02 2.49333108373e-02 2.05587788214e-02 1.70389543521e-02 + 1.42737851127e-02 1.21629507848e-02 1.06181928008e-02 9.56702175361e-03 8.95658363692e-03 8.75631776595e-03 + 8.95658363692e-03 9.56702175361e-03 1.06181928008e-02 1.21629507848e-02 1.42737851127e-02 1.70389543521e-02 + 2.05587788214e-02 2.49333108373e-02 3.02323588099e-02 3.64535808156e-02 4.34838779539e-02 5.10737783335e-02 + 5.88318176265e-02 6.62522137956e-02 7.27796836797e-02 7.78881394404e-02 8.11458755837e-02 8.22656900591e-02 + 8.11458755837e-02 7.78881394404e-02 7.27796836797e-02 6.62522137956e-02 5.88318176265e-02 5.10737783335e-02 + 3.86662855632e-02 3.24534608631e-02 2.70402901784e-02 2.24815496090e-02 1.87467470027e-02 1.57591868798e-02 + 1.34297677852e-02 1.16751572683e-02 1.04238516982e-02 9.61987006090e-03 9.22648243576e-03 9.22648243576e-03 + 9.61987006090e-03 1.04238516982e-02 1.16751572683e-02 1.34297677852e-02 1.57591868798e-02 1.87467470027e-02 + 2.24815496090e-02 2.70402901784e-02 3.24534608631e-02 3.86662855632e-02 4.55081727847e-02 5.26787408684e-02 + 5.97584596222e-02 6.62522137956e-02 7.16581855164e-02 7.55368812409e-02 7.75631573239e-02 7.75631573239e-02 + 7.55368812409e-02 7.16581855164e-02 6.62522137956e-02 5.97584596222e-02 5.26787408684e-02 4.55081727847e-02 + 3.38859304601e-02 2.85734174953e-02 2.40011711299e-02 2.01812628043e-02 1.70678712692e-02 1.45906790875e-02 + 1.26769712537e-02 1.12609832188e-02 1.02881382638e-02 9.71912104775e-03 9.53173661310e-03 9.71912104775e-03 + 1.02881382638e-02 1.12609832188e-02 1.26769712537e-02 1.45906790875e-02 1.70678712692e-02 2.01812628043e-02 + 2.40011711299e-02 2.85734174953e-02 3.38859304601e-02 3.98358227133e-02 4.62088704848e-02 5.26787408684e-02 + 5.88318176265e-02 6.42180018992e-02 6.84139609392e-02 7.10787520021e-02 7.19923628057e-02 7.10787520021e-02 + 6.84139609392e-02 6.42180018992e-02 5.88318176265e-02 5.26787408684e-02 4.62088704848e-02 3.98358227133e-02 + 2.93819034216e-02 2.49776956914e-02 2.12198093897e-02 1.80960146721e-02 1.55601992220e-02 1.35553259639e-02 + 1.20255038743e-02 1.09215936737e-02 1.02054916185e-02 9.85294674885e-03 9.85294674885e-03 1.02054916185e-02 + 1.09215936737e-02 1.20255038743e-02 1.35553259639e-02 1.55601992220e-02 1.80960146721e-02 2.12198093897e-02 + 2.49776956914e-02 2.93819034216e-02 3.43811654173e-02 3.98358227133e-02 4.55081727847e-02 5.10737783335e-02 + 5.61547897924e-02 6.03694423859e-02 6.33842515281e-02 6.49555724266e-02 6.49555724266e-02 6.33842515281e-02 + 6.03694423859e-02 5.61547897924e-02 5.10737783335e-02 4.55081727847e-02 3.98358227133e-02 3.43811654173e-02 + 2.57176061925e-02 2.25132701769e-02 1.97871783123e-02 1.75241772421e-02 1.56960478729e-02 1.42727054437e-02 + 1.32272933414e-02 1.25396406703e-02 1.21980827392e-02 1.21980827392e-02 1.25396406703e-02 1.32272933414e-02 + 1.42727054437e-02 1.56960478729e-02 1.75241772421e-02 1.97871783123e-02 2.25132701769e-02 2.57176061925e-02 + 2.93819034216e-02 3.34304675050e-02 3.77147526395e-02 4.20165784801e-02 4.60731359718e-02 4.96193341715e-02 + 5.24339557043e-02 5.43692149489e-02 5.53499973529e-02 5.53499973529e-02 5.43692149489e-02 5.24339557043e-02 + 4.96193341715e-02 4.60731359718e-02 4.20165784801e-02 3.77147526395e-02 3.34304675050e-02 2.93819034216e-02 + 2.25132701769e-02 2.00258575799e-02 1.79167348748e-02 1.61729889157e-02 1.47756456624e-02 1.37059602390e-02 + 1.29494247541e-02 1.24976141314e-02 1.23472319177e-02 1.24976141314e-02 1.29494247541e-02 1.37059602390e-02 + 1.47756456624e-02 1.61729889157e-02 1.79167348748e-02 2.00258575799e-02 2.25132701769e-02 2.53749373622e-02 + 2.85734174953e-02 3.20210145144e-02 3.55725175924e-02 3.90350130516e-02 4.21941579647e-02 4.48486167771e-02 + 4.68401774785e-02 4.80677366203e-02 4.84815544672e-02 4.80677366203e-02 4.68401774785e-02 4.48486167771e-02 + 4.21941579647e-02 3.90350130516e-02 3.55725175924e-02 3.20210145144e-02 2.85734174953e-02 2.53749373622e-02 + 1.97871783123e-02 1.79167348748e-02 1.63370205752e-02 1.50389831834e-02 1.40109856905e-02 1.32437842255e-02 + 1.27327884289e-02 1.24770996440e-02 1.24770996440e-02 1.27327884289e-02 1.32437842255e-02 1.40109856905e-02 + 1.50389831834e-02 1.63370205752e-02 1.79167348748e-02 1.97871783123e-02 2.19482820950e-02 2.43819637041e-02 + 2.70402901784e-02 2.98349904445e-02 3.26363277502e-02 3.52857897121e-02 3.76190713504e-02 3.94908104948e-02 + 4.07924714489e-02 4.14579289512e-02 4.14579289512e-02 4.07924714489e-02 3.94908104948e-02 3.76190713504e-02 + 3.52857897121e-02 3.26363277502e-02 2.98349904445e-02 2.70402901784e-02 2.43819637041e-02 2.19482820950e-02 + 1.75241772421e-02 1.61729889157e-02 1.50389831834e-02 1.41157952825e-02 1.33976732300e-02 1.28827341282e-02 + 1.25723726562e-02 1.24686371753e-02 1.25723726562e-02 1.28827341282e-02 1.33976732300e-02 1.41157952825e-02 + 1.50389831834e-02 1.61729889157e-02 1.75241772421e-02 1.90940368490e-02 2.08735527936e-02 2.28368095394e-02 + 2.49333108373e-02 2.70827915169e-02 2.91781605866e-02 3.10978190541e-02 3.27229087590e-02 3.39533984936e-02 + 3.47182328687e-02 3.49773595797e-02 3.47182328687e-02 3.39533984936e-02 3.27229087590e-02 3.10978190541e-02 + 2.91781605866e-02 2.70827915169e-02 2.49333108373e-02 2.28368095394e-02 2.08735527936e-02 1.90940368490e-02 + 1.56960478729e-02 1.47756456624e-02 1.40109856905e-02 1.33976732300e-02 1.29342051284e-02 1.26225341258e-02 + 1.24657333634e-02 1.24657333634e-02 1.26225341258e-02 1.29342051284e-02 1.33976732300e-02 1.40109856905e-02 + 1.47756456624e-02 1.56960478729e-02 1.67754563001e-02 1.80109897723e-02 1.93892705934e-02 2.08820531014e-02 + 2.24420850452e-02 2.40022165572e-02 2.54803066383e-02 2.67889182249e-02 2.78466298707e-02 2.85879356046e-02 + 2.89691250092e-02 2.89691250092e-02 2.85879356046e-02 2.78466298707e-02 2.67889182249e-02 2.54803066383e-02 + 2.40022165572e-02 2.24420850452e-02 2.08820531014e-02 1.93892705934e-02 1.80109897723e-02 1.67754563001e-02 + 1.42727054437e-02 1.37059602390e-02 1.32437842255e-02 1.28827341282e-02 1.26225341258e-02 1.24650738064e-02 + 1.24123312979e-02 1.24650738064e-02 1.26225341258e-02 1.28827341282e-02 1.32437842255e-02 1.37059602390e-02 + 1.42727054437e-02 1.49488960464e-02 1.57370100687e-02 1.66330383744e-02 1.76229803621e-02 1.86800926235e-02 + 1.97639178277e-02 2.08223402545e-02 2.17964249596e-02 2.26267522861e-02 2.32603028496e-02 2.36566460915e-02 + 2.37914166767e-02 2.36566460915e-02 2.32603028496e-02 2.26267522861e-02 2.17964249596e-02 2.08223402545e-02 + 1.97639178277e-02 1.86800926235e-02 1.76229803621e-02 1.66330383744e-02 1.57370100687e-02 1.49488960464e-02 + 1.32272933414e-02 1.29494247541e-02 1.27327884289e-02 1.25723726562e-02 1.24657333634e-02 1.24123312979e-02 + 1.24123312979e-02 1.24657333634e-02 1.25723726562e-02 1.27327884289e-02 1.29494247541e-02 1.32272933414e-02 + 1.35733603577e-02 1.39945083398e-02 1.44944499034e-02 1.50702461704e-02 1.57094271493e-02 1.63890080671e-02 + 1.70770073925e-02 1.77355963866e-02 1.83246021902e-02 1.88053010662e-02 1.91448778653e-02 1.93203741197e-02 + 1.93203741197e-02 1.91448778653e-02 1.88053010662e-02 1.83246021902e-02 1.77355963866e-02 1.70770073925e-02 + 1.63890080671e-02 1.57094271493e-02 1.50702461704e-02 1.44944499034e-02 1.39945083398e-02 1.35733603577e-02 + 1.25396406703e-02 1.24976141314e-02 1.24770996440e-02 1.24686371753e-02 1.24657333634e-02 1.24650738064e-02 + 1.24657333634e-02 1.24686371753e-02 1.24770996440e-02 1.24976141314e-02 1.25396406703e-02 1.26143883181e-02 + 1.27333396536e-02 1.29064893850e-02 1.31397287366e-02 1.34318126710e-02 1.37726366090e-02 1.41440793855e-02 + 1.45226393383e-02 1.48820928374e-02 1.51956958667e-02 1.54388806266e-02 1.55924938344e-02 1.56449525655e-02 + 1.55924938344e-02 1.54388806266e-02 1.51956958667e-02 1.48820928374e-02 1.45226393383e-02 1.41440793855e-02 + 1.37726366090e-02 1.34318126710e-02 1.31397287366e-02 1.29064893850e-02 1.27333396536e-02 1.26143883181e-02 + 1.21980827392e-02 1.23472319177e-02 1.24770996440e-02 1.25723726562e-02 1.26225341258e-02 1.26225341258e-02 + 1.25723726562e-02 1.24770996440e-02 1.23472319177e-02 1.21980827392e-02 1.20475550421e-02 1.19137265332e-02 + 1.18131307076e-02 1.17590249893e-02 1.17590249893e-02 1.18131307076e-02 1.19137265332e-02 1.20475550421e-02 + 1.21980827392e-02 1.23472319177e-02 1.24770996440e-02 1.25723726562e-02 1.26225341258e-02 1.26225341258e-02 + 1.25723726562e-02 1.24770996440e-02 1.23472319177e-02 1.21980827392e-02 1.20475550421e-02 1.19137265332e-02 + 1.18131307076e-02 1.17590249893e-02 1.17590249893e-02 1.18131307076e-02 1.19137265332e-02 1.20475550421e-02 + 1.21980827392e-02 1.24976141314e-02 1.27327884289e-02 1.28827341282e-02 1.29342051284e-02 1.28827341282e-02 + 1.27327884289e-02 1.24976141314e-02 1.21980827392e-02 1.18598583649e-02 1.15097880648e-02 1.11729588764e-02 + 1.08706042529e-02 1.06181928008e-02 1.04238516982e-02 1.02881382638e-02 1.02054916185e-02 1.01663421573e-02 + 1.01587603229e-02 1.01697655067e-02 1.01870819285e-02 1.02011860999e-02 1.02064774226e-02 1.02011860999e-02 + 1.01870819285e-02 1.01697655067e-02 1.01587603229e-02 1.01663421573e-02 1.02054916185e-02 1.02881382638e-02 + 1.04238516982e-02 1.06181928008e-02 1.08706042529e-02 1.11729588764e-02 1.15097880648e-02 1.18598583649e-02 + 1.25396406703e-02 1.29494247541e-02 1.32437842255e-02 1.33976732300e-02 1.33976732300e-02 1.32437842255e-02 + 1.29494247541e-02 1.25396406703e-02 1.20475550421e-02 1.15097880648e-02 1.09620544703e-02 1.04356792319e-02 + 9.95507847617e-03 9.53627070961e-03 9.18679124184e-03 8.90705726329e-03 8.69246386814e-03 8.53524112695e-03 + 8.42580807925e-03 8.35413904759e-03 8.31144312544e-03 8.29158854156e-03 8.29158854156e-03 8.31144312544e-03 + 8.35413904759e-03 8.42580807925e-03 8.53524112695e-03 8.69246386814e-03 8.90705726329e-03 9.18679124184e-03 + 9.53627070961e-03 9.95507847617e-03 1.04356792319e-02 1.09620544703e-02 1.15097880648e-02 1.20475550421e-02 + 1.32272933414e-02 1.37059602390e-02 1.40109856905e-02 1.41157952825e-02 1.40109856905e-02 1.37059602390e-02 + 1.32272933414e-02 1.26143883181e-02 1.19137265332e-02 1.11729588764e-02 1.04356792319e-02 9.73748464183e-03 + 9.10381322670e-03 8.54973346172e-03 8.08133005705e-03 7.69793885145e-03 7.39443450458e-03 7.16308508658e-03 + 6.99504538611e-03 6.88181758770e-03 6.81664387654e-03 6.79537428806e-03 6.81664387654e-03 6.88181758770e-03 + 6.99504538611e-03 7.16308508658e-03 7.39443450458e-03 7.69793885145e-03 8.08133005705e-03 8.54973346172e-03 + 9.10381322670e-03 9.73748464183e-03 1.04356792319e-02 1.11729588764e-02 1.19137265332e-02 1.26143883181e-02 + 1.42727054437e-02 1.47756456624e-02 1.50389831834e-02 1.50389831834e-02 1.47756456624e-02 1.42727054437e-02 + 1.35733603577e-02 1.27333396536e-02 1.18131307076e-02 1.08706042529e-02 9.95507847617e-03 9.10381322670e-03 + 8.34122341388e-03 7.68014935330e-03 7.12420828954e-03 6.67049181789e-03 6.31209415558e-03 6.04016501968e-03 + 5.84558656512e-03 5.72047031573e-03 5.65928321674e-03 5.65928321674e-03 5.72047031573e-03 5.84558656512e-03 + 6.04016501968e-03 6.31209415558e-03 6.67049181789e-03 7.12420828954e-03 7.68014935330e-03 8.34122341388e-03 + 9.10381322670e-03 9.95507847617e-03 1.08706042529e-02 1.18131307076e-02 1.27333396536e-02 1.35733603577e-02 + 1.56960478729e-02 1.61729889157e-02 1.63370205752e-02 1.61729889157e-02 1.56960478729e-02 1.49488960464e-02 + 1.39945083398e-02 1.29064893850e-02 1.17590249893e-02 1.06181928008e-02 9.53627070961e-03 8.54973346172e-03 + 7.68014935330e-03 6.93665223838e-03 6.31909087196e-03 5.82127807001e-03 5.43377044817e-03 5.14599535674e-03 + 4.94806264494e-03 4.83232712929e-03 4.79423577304e-03 4.83232712929e-03 4.94806264494e-03 5.14599535674e-03 + 5.43377044817e-03 5.82127807001e-03 6.31909087196e-03 6.93665223838e-03 7.68014935330e-03 8.54973346172e-03 + 9.53627070961e-03 1.06181928008e-02 1.17590249893e-02 1.29064893850e-02 1.39945083398e-02 1.49488960464e-02 + 1.75241772421e-02 1.79167348748e-02 1.79167348748e-02 1.75241772421e-02 1.67754563001e-02 1.57370100687e-02 + 1.44944499034e-02 1.31397287366e-02 1.17590249893e-02 1.04238516982e-02 9.18679124184e-03 8.08133005705e-03 + 7.12420828954e-03 6.31909087196e-03 5.66079261571e-03 5.13913617973e-03 4.74176747355e-03 4.45623663297e-03 + 4.27192322596e-03 4.18152878343e-03 4.18152878343e-03 4.27192322596e-03 4.45623663297e-03 4.74176747355e-03 + 5.13913617973e-03 5.66079261571e-03 6.31909087196e-03 7.12420828954e-03 8.08133005705e-03 9.18679124184e-03 + 1.04238516982e-02 1.17590249893e-02 1.31397287366e-02 1.44944499034e-02 1.57370100687e-02 1.67754563001e-02 + 1.97871783123e-02 2.00258575799e-02 1.97871783123e-02 1.90940368490e-02 1.80109897723e-02 1.66330383744e-02 + 1.50702461704e-02 1.34318126710e-02 1.18131307076e-02 1.02881382638e-02 8.90705726329e-03 7.69793885145e-03 + 6.67049181789e-03 5.82127807001e-03 5.13913617973e-03 4.60945880297e-03 4.21692866215e-03 3.94752033538e-03 + 3.79030883078e-03 3.73863341678e-03 3.79030883078e-03 3.94752033538e-03 4.21692866215e-03 4.60945880297e-03 + 5.13913617973e-03 5.82127807001e-03 6.67049181789e-03 7.69793885145e-03 8.90705726329e-03 1.02881382638e-02 + 1.18131307076e-02 1.34318126710e-02 1.50702461704e-02 1.66330383744e-02 1.80109897723e-02 1.90940368490e-02 + 2.25132701769e-02 2.25132701769e-02 2.19482820950e-02 2.08735527936e-02 1.93892705934e-02 1.76229803621e-02 + 1.57094271493e-02 1.37726366090e-02 1.19137265332e-02 1.02054916185e-02 8.69246386814e-03 7.39443450458e-03 + 6.31209415558e-03 5.43377044817e-03 4.74176747355e-03 4.21692866215e-03 3.84131375804e-03 3.59990872378e-03 + 3.48198055848e-03 3.48198055848e-03 3.59990872378e-03 3.84131375804e-03 4.21692866215e-03 4.74176747355e-03 + 5.43377044817e-03 6.31209415558e-03 7.39443450458e-03 8.69246386814e-03 1.02054916185e-02 1.19137265332e-02 + 1.37726366090e-02 1.57094271493e-02 1.76229803621e-02 1.93892705934e-02 2.08735527936e-02 2.19482820950e-02 + 2.57176061925e-02 2.53749373622e-02 2.43819637041e-02 2.28368095394e-02 2.08820531014e-02 1.86800926235e-02 + 1.63890080671e-02 1.41440793855e-02 1.20475550421e-02 1.01663421573e-02 8.53524112695e-03 7.16308508658e-03 + 6.04016501968e-03 5.14599535674e-03 4.45623663297e-03 3.94752033538e-03 3.59990872378e-03 3.39799742507e-03 + 3.33184951460e-03 3.39799742507e-03 3.59990872378e-03 3.94752033538e-03 4.45623663297e-03 5.14599535674e-03 + 6.04016501968e-03 7.16308508658e-03 8.53524112695e-03 1.01663421573e-02 1.20475550421e-02 1.41440793855e-02 + 1.63890080671e-02 1.86800926235e-02 2.08820531014e-02 2.28368095394e-02 2.43819637041e-02 2.53749373622e-02 + 2.93819034216e-02 2.85734174953e-02 2.70402901784e-02 2.49333108373e-02 2.24420850452e-02 1.97639178277e-02 + 1.70770073925e-02 1.45226393383e-02 1.21980827392e-02 1.01587603229e-02 8.42580807925e-03 6.99504538611e-03 + 5.84558656512e-03 4.94806264494e-03 4.27192322596e-03 3.79030883078e-03 3.48198055848e-03 3.33184951460e-03 + 3.33184951460e-03 3.48198055848e-03 3.79030883078e-03 4.27192322596e-03 4.94806264494e-03 5.84558656512e-03 + 6.99504538611e-03 8.42580807925e-03 1.01587603229e-02 1.21980827392e-02 1.45226393383e-02 1.70770073925e-02 + 1.97639178277e-02 2.24420850452e-02 2.49333108373e-02 2.70402901784e-02 2.85734174953e-02 2.93819034216e-02 + 3.34304675050e-02 3.20210145144e-02 2.98349904445e-02 2.70827915169e-02 2.40022165572e-02 2.08223402545e-02 + 1.77355963866e-02 1.48820928374e-02 1.23472319177e-02 1.01697655067e-02 8.35413904759e-03 6.88181758770e-03 + 5.72047031573e-03 4.83232712929e-03 4.18152878343e-03 3.73863341678e-03 3.48198055848e-03 3.39799742507e-03 + 3.48198055848e-03 3.73863341678e-03 4.18152878343e-03 4.83232712929e-03 5.72047031573e-03 6.88181758770e-03 + 8.35413904759e-03 1.01697655067e-02 1.23472319177e-02 1.48820928374e-02 1.77355963866e-02 2.08223402545e-02 + 2.40022165572e-02 2.70827915169e-02 2.98349904445e-02 3.20210145144e-02 3.34304675050e-02 3.39176800802e-02 + 3.77147526395e-02 3.55725175924e-02 3.26363277502e-02 2.91781605866e-02 2.54803066383e-02 2.17964249596e-02 + 1.83246021902e-02 1.51956958667e-02 1.24770996440e-02 1.01870819285e-02 8.31144312544e-03 6.81664387654e-03 + 5.65928321674e-03 4.79423577304e-03 4.18152878343e-03 3.79030883078e-03 3.59990872378e-03 3.59990872378e-03 + 3.79030883078e-03 4.18152878343e-03 4.79423577304e-03 5.65928321674e-03 6.81664387654e-03 8.31144312544e-03 + 1.01870819285e-02 1.24770996440e-02 1.51956958667e-02 1.83246021902e-02 2.17964249596e-02 2.54803066383e-02 + 2.91781605866e-02 3.26363277502e-02 3.55725175924e-02 3.77147526395e-02 3.88462459817e-02 3.88462459817e-02 + 4.20165784801e-02 3.90350130516e-02 3.52857897121e-02 3.10978190541e-02 2.67889182249e-02 2.26267522861e-02 + 1.88053010662e-02 1.54388806266e-02 1.25723726562e-02 1.02011860999e-02 8.29158854156e-03 6.79537428806e-03 + 5.65928321674e-03 4.83232712929e-03 4.27192322596e-03 3.94752033538e-03 3.84131375804e-03 3.94752033538e-03 + 4.27192322596e-03 4.83232712929e-03 5.65928321674e-03 6.79537428806e-03 8.29158854156e-03 1.02011860999e-02 + 1.25723726562e-02 1.54388806266e-02 1.88053010662e-02 2.26267522861e-02 2.67889182249e-02 3.10978190541e-02 + 3.52857897121e-02 3.90350130516e-02 4.20165784801e-02 4.39402098517e-02 4.46053414397e-02 4.39402098517e-02 + 4.60731359718e-02 4.21941579647e-02 3.76190713504e-02 3.27229087590e-02 2.78466298707e-02 2.32603028496e-02 + 1.91448778653e-02 1.55924938344e-02 1.26225341258e-02 1.02064774226e-02 8.29158854156e-03 6.81664387654e-03 + 5.72047031573e-03 4.94806264494e-03 4.45623663297e-03 4.21692866215e-03 4.21692866215e-03 4.45623663297e-03 + 4.94806264494e-03 5.72047031573e-03 6.81664387654e-03 8.29158854156e-03 1.02064774226e-02 1.26225341258e-02 + 1.55924938344e-02 1.91448778653e-02 2.32603028496e-02 2.78466298707e-02 3.27229087590e-02 3.76190713504e-02 + 4.21941579647e-02 4.60731359718e-02 4.88987422193e-02 5.03893328752e-02 5.03893328752e-02 4.88987422193e-02 + 4.96193341715e-02 4.48486167771e-02 3.94908104948e-02 3.39533984936e-02 2.85879356046e-02 2.36566460915e-02 + 1.93203741197e-02 1.56449525655e-02 1.26225341258e-02 1.02011860999e-02 8.31144312544e-03 6.88181758770e-03 + 5.84558656512e-03 5.14599535674e-03 4.74176747355e-03 4.60945880297e-03 4.74176747355e-03 5.14599535674e-03 + 5.84558656512e-03 6.88181758770e-03 8.31144312544e-03 1.02011860999e-02 1.26225341258e-02 1.56449525655e-02 + 1.93203741197e-02 2.36566460915e-02 2.85879356046e-02 3.39533984936e-02 3.94908104948e-02 4.48486167771e-02 + 4.96193341715e-02 5.33923081840e-02 5.58153453540e-02 5.66509609539e-02 5.58153453540e-02 5.33923081840e-02 + 5.24339557043e-02 4.68401774785e-02 4.07924714489e-02 3.47182328687e-02 2.89691250092e-02 2.37914166767e-02 + 1.93203741197e-02 1.55924938344e-02 1.25723726562e-02 1.01870819285e-02 8.35413904759e-03 6.99504538611e-03 + 6.04016501968e-03 5.43377044817e-03 5.13913617973e-03 5.13913617973e-03 5.43377044817e-03 6.04016501968e-03 + 6.99504538611e-03 8.35413904759e-03 1.01870819285e-02 1.25723726562e-02 1.55924938344e-02 1.93203741197e-02 + 2.37914166767e-02 2.89691250092e-02 3.47182328687e-02 4.07924714489e-02 4.68401774785e-02 5.24339557043e-02 + 5.71251588417e-02 6.05090723285e-02 6.22821499923e-02 6.22821499923e-02 6.05090723285e-02 5.71251588417e-02 + 5.43692149489e-02 4.80677366203e-02 4.14579289512e-02 3.49773595797e-02 2.89691250092e-02 2.36566460915e-02 + 1.91448778653e-02 1.54388806266e-02 1.24770996440e-02 1.01697655067e-02 8.42580807925e-03 7.16308508658e-03 + 6.31209415558e-03 5.82127807001e-03 5.66079261571e-03 5.82127807001e-03 6.31209415558e-03 7.16308508658e-03 + 8.42580807925e-03 1.01697655067e-02 1.24770996440e-02 1.54388806266e-02 1.91448778653e-02 2.36566460915e-02 + 2.89691250092e-02 3.49773595797e-02 4.14579289512e-02 4.80677366203e-02 5.43692149489e-02 5.98878714669e-02 + 6.41840706496e-02 6.69101294891e-02 6.78442738531e-02 6.69101294891e-02 6.41840706496e-02 5.98878714669e-02 + 5.53499973529e-02 4.84815544672e-02 4.14579289512e-02 3.47182328687e-02 2.85879356046e-02 2.32603028496e-02 + 1.88053010662e-02 1.51956958667e-02 1.23472319177e-02 1.01587603229e-02 8.53524112695e-03 7.39443450458e-03 + 6.67049181789e-03 6.31909087196e-03 6.31909087196e-03 6.67049181789e-03 7.39443450458e-03 8.53524112695e-03 + 1.01587603229e-02 1.23472319177e-02 1.51956958667e-02 1.88053010662e-02 2.32603028496e-02 2.85879356046e-02 + 3.47182328687e-02 4.14579289512e-02 4.84815544672e-02 5.53499973529e-02 6.15702941626e-02 6.66786802062e-02 + 7.03019494995e-02 7.21810172465e-02 7.21810172465e-02 7.03019494995e-02 6.66786802062e-02 6.15702941626e-02 + 5.53499973529e-02 4.80677366203e-02 4.07924714489e-02 3.39533984936e-02 2.78466298707e-02 2.26267522861e-02 + 1.83246021902e-02 1.48820928374e-02 1.21980827392e-02 1.01663421573e-02 8.69246386814e-03 7.69793885145e-03 + 7.12420828954e-03 6.93665223838e-03 7.12420828954e-03 7.69793885145e-03 8.69246386814e-03 1.01663421573e-02 + 1.21980827392e-02 1.48820928374e-02 1.83246021902e-02 2.26267522861e-02 2.78466298707e-02 3.39533984936e-02 + 4.07924714489e-02 4.80677366203e-02 5.53499973529e-02 6.21334821617e-02 6.79320857310e-02 7.23556493700e-02 + 7.51264696898e-02 7.60705845667e-02 7.51264696898e-02 7.23556493700e-02 6.79320857310e-02 6.21334821617e-02 + 5.43692149489e-02 4.68401774785e-02 3.94908104948e-02 3.27229087590e-02 2.67889182249e-02 2.17964249596e-02 + 1.77355963866e-02 1.45226393383e-02 1.20475550421e-02 1.02054916185e-02 8.90705726329e-03 8.08133005705e-03 + 7.68014935330e-03 7.68014935330e-03 8.08133005705e-03 8.90705726329e-03 1.02054916185e-02 1.20475550421e-02 + 1.45226393383e-02 1.77355963866e-02 2.17964249596e-02 2.67889182249e-02 3.27229087590e-02 3.94908104948e-02 + 4.68401774785e-02 5.43692149489e-02 6.15702941626e-02 6.79320857310e-02 7.30418134594e-02 7.66122811094e-02 + 7.84511058955e-02 7.84511058955e-02 7.66122811094e-02 7.30418134594e-02 6.79320857310e-02 6.15702941626e-02 + 5.24339557043e-02 4.48486167771e-02 3.76190713504e-02 3.10978190541e-02 2.54803066383e-02 2.08223402545e-02 + 1.70770073925e-02 1.41440793855e-02 1.19137265332e-02 1.02881382638e-02 9.18679124184e-03 8.54973346172e-03 + 8.34122341388e-03 8.54973346172e-03 9.18679124184e-03 1.02881382638e-02 1.19137265332e-02 1.41440793855e-02 + 1.70770073925e-02 2.08223402545e-02 2.54803066383e-02 3.10978190541e-02 3.76190713504e-02 4.48486167771e-02 + 5.24339557043e-02 5.98878714669e-02 6.66786802062e-02 7.23556493700e-02 7.66122811094e-02 7.92532152557e-02 + 8.01500628124e-02 7.92532152557e-02 7.66122811094e-02 7.23556493700e-02 6.66786802062e-02 5.98878714669e-02 + 4.96193341715e-02 4.21941579647e-02 3.52857897121e-02 2.91781605866e-02 2.40022165572e-02 1.97639178277e-02 + 1.63890080671e-02 1.37726366090e-02 1.18131307076e-02 1.04238516982e-02 9.53627070961e-03 9.10381322670e-03 + 9.10381322670e-03 9.53627070961e-03 1.04238516982e-02 1.18131307076e-02 1.37726366090e-02 1.63890080671e-02 + 1.97639178277e-02 2.40022165572e-02 2.91781605866e-02 3.52857897121e-02 4.21941579647e-02 4.96193341715e-02 + 5.71251588417e-02 6.41840706496e-02 7.03019494995e-02 7.51264696898e-02 7.84511058955e-02 8.01500628124e-02 + 8.01500628124e-02 7.84511058955e-02 7.51264696898e-02 7.03019494995e-02 6.41840706496e-02 5.71251588417e-02 + 4.60731359718e-02 3.90350130516e-02 3.26363277502e-02 2.70827915169e-02 2.24420850452e-02 1.86800926235e-02 + 1.57094271493e-02 1.34318126710e-02 1.17590249893e-02 1.06181928008e-02 9.95507847617e-03 9.73748464183e-03 + 9.95507847617e-03 1.06181928008e-02 1.17590249893e-02 1.34318126710e-02 1.57094271493e-02 1.86800926235e-02 + 2.24420850452e-02 2.70827915169e-02 3.26363277502e-02 3.90350130516e-02 4.60731359718e-02 5.33923081840e-02 + 6.05090723285e-02 6.69101294891e-02 7.21810172465e-02 7.60705845667e-02 7.84511058955e-02 7.92532152557e-02 + 7.84511058955e-02 7.60705845667e-02 7.21810172465e-02 6.69101294891e-02 6.05090723285e-02 5.33923081840e-02 + 4.20165784801e-02 3.55725175924e-02 2.98349904445e-02 2.49333108373e-02 2.08820531014e-02 1.76229803621e-02 + 1.50702461704e-02 1.31397287366e-02 1.17590249893e-02 1.08706042529e-02 1.04356792319e-02 1.04356792319e-02 + 1.08706042529e-02 1.17590249893e-02 1.31397287366e-02 1.50702461704e-02 1.76229803621e-02 2.08820531014e-02 + 2.49333108373e-02 2.98349904445e-02 3.55725175924e-02 4.20165784801e-02 4.88987422193e-02 5.58153453540e-02 + 6.22821499923e-02 6.78442738531e-02 7.21810172465e-02 7.51264696898e-02 7.66122811094e-02 7.66122811094e-02 + 7.51264696898e-02 7.21810172465e-02 6.78442738531e-02 6.22821499923e-02 5.58153453540e-02 4.88987422193e-02 + 3.77147526395e-02 3.20210145144e-02 2.70402901784e-02 2.28368095394e-02 1.93892705934e-02 1.66330383744e-02 + 1.44944499034e-02 1.29064893850e-02 1.18131307076e-02 1.11729588764e-02 1.09620544703e-02 1.11729588764e-02 + 1.18131307076e-02 1.29064893850e-02 1.44944499034e-02 1.66330383744e-02 1.93892705934e-02 2.28368095394e-02 + 2.70402901784e-02 3.20210145144e-02 3.77147526395e-02 4.39402098517e-02 5.03893328752e-02 5.66509609539e-02 + 6.22821499923e-02 6.69101294891e-02 7.03019494995e-02 7.23556493700e-02 7.30418134594e-02 7.23556493700e-02 + 7.03019494995e-02 6.69101294891e-02 6.22821499923e-02 5.66509609539e-02 5.03893328752e-02 4.39402098517e-02 + 3.34304675050e-02 2.85734174953e-02 2.43819637041e-02 2.08735527936e-02 1.80109897723e-02 1.57370100687e-02 + 1.39945083398e-02 1.27333396536e-02 1.19137265332e-02 1.15097880648e-02 1.15097880648e-02 1.19137265332e-02 + 1.27333396536e-02 1.39945083398e-02 1.57370100687e-02 1.80109897723e-02 2.08735527936e-02 2.43819637041e-02 + 2.85734174953e-02 3.34304675050e-02 3.88462459817e-02 4.46053414397e-02 5.03893328752e-02 5.58153453540e-02 + 6.05090723285e-02 6.41840706496e-02 6.66786802062e-02 6.79320857310e-02 6.79320857310e-02 6.66786802062e-02 + 6.41840706496e-02 6.05090723285e-02 5.58153453540e-02 5.03893328752e-02 4.46053414397e-02 3.88462459817e-02 + 2.93819034216e-02 2.53749373622e-02 2.19482820950e-02 1.90940368490e-02 1.67754563001e-02 1.49488960464e-02 + 1.35733603577e-02 1.26143883181e-02 1.20475550421e-02 1.18598583649e-02 1.20475550421e-02 1.26143883181e-02 + 1.35733603577e-02 1.49488960464e-02 1.67754563001e-02 1.90940368490e-02 2.19482820950e-02 2.53749373622e-02 + 2.93819034216e-02 3.39176800802e-02 3.88462459817e-02 4.39402098517e-02 4.88987422193e-02 5.33923081840e-02 + 5.71251588417e-02 5.98878714669e-02 6.15702941626e-02 6.21334821617e-02 6.15702941626e-02 5.98878714669e-02 + 5.71251588417e-02 5.33923081840e-02 4.88987422193e-02 4.39402098517e-02 3.88462459817e-02 3.39176800802e-02 + 2.69304328597e-02 2.40237109616e-02 2.15413174517e-02 1.94746684497e-02 1.78072941675e-02 1.65234811342e-02 + 1.56112881223e-02 1.50645020089e-02 1.48820928374e-02 1.50645020089e-02 1.56112881223e-02 1.65234811342e-02 + 1.78072941675e-02 1.94746684497e-02 2.15413174517e-02 2.40237109616e-02 2.69304328597e-02 3.02423286704e-02 + 3.38859304601e-02 3.77147526395e-02 4.15120643887e-02 4.50208900473e-02 4.79989400749e-02 5.02828320119e-02 + 5.18281863755e-02 5.26931433274e-02 5.29676178633e-02 5.26931433274e-02 5.18281863755e-02 5.02828320119e-02 + 4.79989400749e-02 4.50208900473e-02 4.15120643887e-02 3.77147526395e-02 3.38859304601e-02 3.02423286704e-02 + 2.40237109616e-02 2.18005508565e-02 1.99070659239e-02 1.83376793613e-02 1.70848695603e-02 1.61434902729e-02 + 1.55127511572e-02 1.51956958667e-02 1.51956958667e-02 1.55127511572e-02 1.61434902729e-02 1.70848695603e-02 + 1.83376793613e-02 1.99070659239e-02 2.18005508565e-02 2.40237109616e-02 2.65706573512e-02 2.94074293899e-02 + 3.24534608631e-02 3.55725175924e-02 3.85829474965e-02 4.12888114430e-02 4.35234290368e-02 4.51877782102e-02 + 4.62623331670e-02 4.67810667612e-02 4.67810667612e-02 4.62623331670e-02 4.51877782102e-02 4.35234290368e-02 + 4.12888114430e-02 3.85829474965e-02 3.55725175924e-02 3.24534608631e-02 2.94074293899e-02 2.65706573512e-02 + 2.15413174517e-02 1.99070659239e-02 1.85201445811e-02 1.73786828448e-02 1.64818809732e-02 1.58329883187e-02 + 1.54388806266e-02 1.53065353883e-02 1.54388806266e-02 1.58329883187e-02 1.64818809732e-02 1.73786828448e-02 + 1.85201445811e-02 1.99070659239e-02 2.15413174517e-02 2.34202555044e-02 2.55281844546e-02 2.78244998346e-02 + 3.02323588099e-02 3.26363277502e-02 3.48956024912e-02 3.68707660171e-02 3.84534160516e-02 3.95849180057e-02 + 4.02540981079e-02 4.04742233092e-02 4.02540981079e-02 3.95849180057e-02 3.84534160516e-02 3.68707660171e-02 + 3.48956024912e-02 3.26363277502e-02 3.02323588099e-02 2.78244998346e-02 2.55281844546e-02 2.34202555044e-02 + 1.94746684497e-02 1.83376793613e-02 1.73786828448e-02 1.65980023724e-02 1.59997599900e-02 1.55924938344e-02 + 1.53857855201e-02 1.53857855201e-02 1.55924938344e-02 1.59997599900e-02 1.65980023724e-02 1.73786828448e-02 + 1.83376793613e-02 1.94746684497e-02 2.07887392229e-02 2.22726314479e-02 2.39063871143e-02 2.56499234494e-02 + 2.74372089612e-02 2.91781605866e-02 3.07715106065e-02 3.21243272248e-02 3.31691643222e-02 3.38709874542e-02 + 3.42208946471e-02 3.42208946471e-02 3.38709874542e-02 3.31691643222e-02 3.21243272248e-02 3.07715106065e-02 + 2.91781605866e-02 2.74372089612e-02 2.56499234494e-02 2.39063871143e-02 2.22726314479e-02 2.07887392229e-02 + 1.78072941675e-02 1.70848695603e-02 1.64818809732e-02 1.59997599900e-02 1.56449525655e-02 1.54267827082e-02 + 1.53530693596e-02 1.54267827082e-02 1.56449525655e-02 1.59997599900e-02 1.64818809732e-02 1.70848695603e-02 + 1.78072941675e-02 1.86504890434e-02 1.96135589165e-02 2.06884779452e-02 2.18557815330e-02 2.30804654510e-02 + 2.43103322252e-02 2.54803066383e-02 2.65227612839e-02 2.73794467347e-02 2.80098127199e-02 2.83925891295e-02 + 2.85205562719e-02 2.83925891295e-02 2.80098127199e-02 2.73794467347e-02 2.65227612839e-02 2.54803066383e-02 + 2.43103322252e-02 2.30804654510e-02 2.18557815330e-02 2.06884779452e-02 1.96135589165e-02 1.86504890434e-02 + 1.65234811342e-02 1.61434902729e-02 1.58329883187e-02 1.55924938344e-02 1.54267827082e-02 1.53419303249e-02 + 1.53419303249e-02 1.54267827082e-02 1.55924938344e-02 1.58329883187e-02 1.61434902729e-02 1.65234811342e-02 + 1.69767793036e-02 1.75083321070e-02 1.81196807915e-02 1.88049742175e-02 1.95479913088e-02 2.03206914317e-02 + 2.10847229658e-02 2.17964249596e-02 2.24136125305e-02 2.29016184223e-02 2.32368358951e-02 2.34067395586e-02 + 2.34067395586e-02 2.32368358951e-02 2.29016184223e-02 2.24136125305e-02 2.17964249596e-02 2.10847229658e-02 + 2.03206914317e-02 1.95479913088e-02 1.88049742175e-02 1.81196807915e-02 1.75083321070e-02 1.69767793036e-02 + 1.56112881223e-02 1.55127511572e-02 1.54388806266e-02 1.53857855201e-02 1.53530693596e-02 1.53419303249e-02 + 1.53530693596e-02 1.53857855201e-02 1.54388806266e-02 1.55127511572e-02 1.56112881223e-02 1.57423428102e-02 + 1.59162612755e-02 1.61427916872e-02 1.64272283654e-02 1.67669692380e-02 1.71497889118e-02 1.75547637226e-02 + 1.79555609317e-02 1.83246021902e-02 1.86367379277e-02 1.88720574247e-02 1.90175139009e-02 1.90666010177e-02 + 1.90175139009e-02 1.88720574247e-02 1.86367379277e-02 1.83246021902e-02 1.79555609317e-02 1.75547637226e-02 + 1.71497889118e-02 1.67669692380e-02 1.64272283654e-02 1.61427916872e-02 1.59162612755e-02 1.57423428102e-02 + 1.50645020089e-02 1.51956958667e-02 1.53065353883e-02 1.53857855201e-02 1.54267827082e-02 1.54267827082e-02 + 1.53857855201e-02 1.53065353883e-02 1.51956958667e-02 1.50645020089e-02 1.49279448733e-02 1.48031251671e-02 + 1.47072813037e-02 1.46550533623e-02 1.46550533623e-02 1.47072813037e-02 1.48031251671e-02 1.49279448733e-02 + 1.50645020089e-02 1.51956958667e-02 1.53065353883e-02 1.53857855201e-02 1.54267827082e-02 1.54267827082e-02 + 1.53857855201e-02 1.53065353883e-02 1.51956958667e-02 1.50645020089e-02 1.49279448733e-02 1.48031251671e-02 + 1.47072813037e-02 1.46550533623e-02 1.46550533623e-02 1.47072813037e-02 1.48031251671e-02 1.49279448733e-02 + 1.48820928374e-02 1.51956958667e-02 1.54388806266e-02 1.55924938344e-02 1.56449525655e-02 1.55924938344e-02 + 1.54388806266e-02 1.51956958667e-02 1.48820928374e-02 1.45226393383e-02 1.41440793855e-02 1.37726366090e-02 + 1.34318126710e-02 1.31397287366e-02 1.29064893850e-02 1.27333396536e-02 1.26143883181e-02 1.25396406703e-02 + 1.24976141314e-02 1.24770996440e-02 1.24686371753e-02 1.24657333634e-02 1.24650738064e-02 1.24657333634e-02 + 1.24686371753e-02 1.24770996440e-02 1.24976141314e-02 1.25396406703e-02 1.26143883181e-02 1.27333396536e-02 + 1.29064893850e-02 1.31397287366e-02 1.34318126710e-02 1.37726366090e-02 1.41440793855e-02 1.45226393383e-02 + 1.50645020089e-02 1.55127511572e-02 1.58329883187e-02 1.59997599900e-02 1.59997599900e-02 1.58329883187e-02 + 1.55127511572e-02 1.50645020089e-02 1.45226393383e-02 1.39256808178e-02 1.33116675302e-02 1.27148275869e-02 + 1.21629507848e-02 1.16751572683e-02 1.12609832188e-02 1.09215936737e-02 1.06524671204e-02 1.04460621935e-02 + 1.02937156151e-02 1.01870819285e-02 1.01194532806e-02 1.00865795572e-02 1.00865795572e-02 1.01194532806e-02 + 1.01870819285e-02 1.02937156151e-02 1.04460621935e-02 1.06524671204e-02 1.09215936737e-02 1.12609832188e-02 + 1.16751572683e-02 1.21629507848e-02 1.27148275869e-02 1.33116675302e-02 1.39256808178e-02 1.45226393383e-02 + 1.56112881223e-02 1.61434902729e-02 1.64818809732e-02 1.65980023724e-02 1.64818809732e-02 1.61434902729e-02 + 1.56112881223e-02 1.49279448733e-02 1.41440793855e-02 1.33116675302e-02 1.24785638223e-02 1.16845233837e-02 + 1.09586567104e-02 1.03186231402e-02 9.77183223433e-03 9.31810768724e-03 8.95261635749e-03 8.66817035987e-03 + 8.45686847188e-03 8.31144312544e-03 8.22635918544e-03 8.19834740781e-03 8.22635918544e-03 8.31144312544e-03 + 8.45686847188e-03 8.66817035987e-03 8.95261635749e-03 9.31810768724e-03 9.77183223433e-03 1.03186231402e-02 + 1.09586567104e-02 1.16845233837e-02 1.24785638223e-02 1.33116675302e-02 1.41440793855e-02 1.49279448733e-02 + 1.65234811342e-02 1.70848695603e-02 1.73786828448e-02 1.73786828448e-02 1.70848695603e-02 1.65234811342e-02 + 1.57423428102e-02 1.48031251671e-02 1.37726366090e-02 1.27148275869e-02 1.16845233837e-02 1.07235056315e-02 + 9.85925299562e-03 9.10613117226e-03 8.46823559623e-03 7.94279014126e-03 7.52314503521e-03 7.20097316500e-03 + 6.96786738821e-03 6.81664387654e-03 6.74228118806e-03 6.74228118806e-03 6.81664387654e-03 6.96786738821e-03 + 7.20097316500e-03 7.52314503521e-03 7.94279014126e-03 8.46823559623e-03 9.10613117226e-03 9.85925299562e-03 + 1.07235056315e-02 1.16845233837e-02 1.27148275869e-02 1.37726366090e-02 1.48031251671e-02 1.57423428102e-02 + 1.78072941675e-02 1.83376793613e-02 1.85201445811e-02 1.83376793613e-02 1.78072941675e-02 1.69767793036e-02 + 1.59162612755e-02 1.47072813037e-02 1.34318126710e-02 1.21629507848e-02 1.09586567104e-02 9.85925299562e-03 + 8.88822832040e-03 8.05519399644e-03 7.35981258047e-03 6.79567554150e-03 6.35335851926e-03 6.02253909249e-03 + 5.79365065764e-03 5.65928321674e-03 5.61497680711e-03 5.65928321674e-03 5.79365065764e-03 6.02253909249e-03 + 6.35335851926e-03 6.79567554150e-03 7.35981258047e-03 8.05519399644e-03 8.88822832040e-03 9.85925299562e-03 + 1.09586567104e-02 1.21629507848e-02 1.34318126710e-02 1.47072813037e-02 1.59162612755e-02 1.69767793036e-02 + 1.94746684497e-02 1.99070659239e-02 1.99070659239e-02 1.94746684497e-02 1.86504890434e-02 1.75083321070e-02 + 1.61427916872e-02 1.46550533623e-02 1.31397287366e-02 1.16751572683e-02 1.03186231402e-02 9.10613117226e-03 + 8.05519399644e-03 7.16922584820e-03 6.44245195186e-03 5.86418256271e-03 5.42174879265e-03 5.10253249618e-03 + 4.89581524939e-03 4.79423577304e-03 4.79423577304e-03 4.89581524939e-03 5.10253249618e-03 5.42174879265e-03 + 5.86418256271e-03 6.44245195186e-03 7.16922584820e-03 8.05519399644e-03 9.10613117226e-03 1.03186231402e-02 + 1.16751572683e-02 1.31397287366e-02 1.46550533623e-02 1.61427916872e-02 1.75083321070e-02 1.86504890434e-02 + 2.15413174517e-02 2.18005508565e-02 2.15413174517e-02 2.07887392229e-02 1.96135589165e-02 1.81196807915e-02 + 1.64272283654e-02 1.46550533623e-02 1.29064893850e-02 1.12609832188e-02 9.77183223433e-03 8.46823559623e-03 + 7.35981258047e-03 6.44245195186e-03 5.70420021497e-03 5.12972310883e-03 4.70304044562e-03 4.40955813989e-03 + 4.23798561825e-03 4.18152878343e-03 4.23798561825e-03 4.40955813989e-03 4.70304044562e-03 5.12972310883e-03 + 5.70420021497e-03 6.44245195186e-03 7.35981258047e-03 8.46823559623e-03 9.77183223433e-03 1.12609832188e-02 + 1.29064893850e-02 1.46550533623e-02 1.64272283654e-02 1.81196807915e-02 1.96135589165e-02 2.07887392229e-02 + 2.40237109616e-02 2.40237109616e-02 2.34202555044e-02 2.22726314479e-02 2.06884779452e-02 1.88049742175e-02 + 1.67669692380e-02 1.47072813037e-02 1.27333396536e-02 1.09215936737e-02 9.31810768724e-03 7.94279014126e-03 + 6.79567554150e-03 5.86418256271e-03 5.12972310883e-03 4.57225197605e-03 4.17292027232e-03 3.91597292758e-03 + 3.79030883078e-03 3.79030883078e-03 3.91597292758e-03 4.17292027232e-03 4.57225197605e-03 5.12972310883e-03 + 5.86418256271e-03 6.79567554150e-03 7.94279014126e-03 9.31810768724e-03 1.09215936737e-02 1.27333396536e-02 + 1.47072813037e-02 1.67669692380e-02 1.88049742175e-02 2.06884779452e-02 2.22726314479e-02 2.34202555044e-02 + 2.69304328597e-02 2.65706573512e-02 2.55281844546e-02 2.39063871143e-02 2.18557815330e-02 1.95479913088e-02 + 1.71497889118e-02 1.48031251671e-02 1.26143883181e-02 1.06524671204e-02 8.95261635749e-03 7.52314503521e-03 + 6.35335851926e-03 5.42174879265e-03 4.70304044562e-03 4.17292027232e-03 3.81054695208e-03 3.59990872378e-03 + 3.53085792774e-03 3.59990872378e-03 3.81054695208e-03 4.17292027232e-03 4.70304044562e-03 5.42174879265e-03 + 6.35335851926e-03 7.52314503521e-03 8.95261635749e-03 1.06524671204e-02 1.26143883181e-02 1.48031251671e-02 + 1.71497889118e-02 1.95479913088e-02 2.18557815330e-02 2.39063871143e-02 2.55281844546e-02 2.65706573512e-02 + 3.02423286704e-02 2.94074293899e-02 2.78244998346e-02 2.56499234494e-02 2.30804654510e-02 2.03206914317e-02 + 1.75547637226e-02 1.49279448733e-02 1.25396406703e-02 1.04460621935e-02 8.66817035987e-03 7.20097316500e-03 + 6.02253909249e-03 5.10253249618e-03 4.40955813989e-03 3.91597292758e-03 3.59990872378e-03 3.44594928533e-03 + 3.44594928533e-03 3.59990872378e-03 3.91597292758e-03 4.40955813989e-03 5.10253249618e-03 6.02253909249e-03 + 7.20097316500e-03 8.66817035987e-03 1.04460621935e-02 1.25396406703e-02 1.49279448733e-02 1.75547637226e-02 + 2.03206914317e-02 2.30804654510e-02 2.56499234494e-02 2.78244998346e-02 2.94074293899e-02 3.02423286704e-02 + 3.38859304601e-02 3.24534608631e-02 3.02323588099e-02 2.74372089612e-02 2.43103322252e-02 2.10847229658e-02 + 1.79555609317e-02 1.50645020089e-02 1.24976141314e-02 1.02937156151e-02 8.45686847188e-03 6.96786738821e-03 + 5.79365065764e-03 4.89581524939e-03 4.23798561825e-03 3.79030883078e-03 3.53085792774e-03 3.44594928533e-03 + 3.53085792774e-03 3.79030883078e-03 4.23798561825e-03 4.89581524939e-03 5.79365065764e-03 6.96786738821e-03 + 8.45686847188e-03 1.02937156151e-02 1.24976141314e-02 1.50645020089e-02 1.79555609317e-02 2.10847229658e-02 + 2.43103322252e-02 2.74372089612e-02 3.02323588099e-02 3.24534608631e-02 3.38859304601e-02 3.43811654173e-02 + 3.77147526395e-02 3.55725175924e-02 3.26363277502e-02 2.91781605866e-02 2.54803066383e-02 2.17964249596e-02 + 1.83246021902e-02 1.51956958667e-02 1.24770996440e-02 1.01870819285e-02 8.31144312544e-03 6.81664387654e-03 + 5.65928321674e-03 4.79423577304e-03 4.18152878343e-03 3.79030883078e-03 3.59990872378e-03 3.59990872378e-03 + 3.79030883078e-03 4.18152878343e-03 4.79423577304e-03 5.65928321674e-03 6.81664387654e-03 8.31144312544e-03 + 1.01870819285e-02 1.24770996440e-02 1.51956958667e-02 1.83246021902e-02 2.17964249596e-02 2.54803066383e-02 + 2.91781605866e-02 3.26363277502e-02 3.55725175924e-02 3.77147526395e-02 3.88462459817e-02 3.88462459817e-02 + 4.15120643887e-02 3.85829474965e-02 3.48956024912e-02 3.07715106065e-02 2.65227612839e-02 2.24136125305e-02 + 1.86367379277e-02 1.53065353883e-02 1.24686371753e-02 1.01194532806e-02 8.22635918544e-03 6.74228118806e-03 + 5.61497680711e-03 4.79423577304e-03 4.23798561825e-03 3.91597292758e-03 3.81054695208e-03 3.91597292758e-03 + 4.23798561825e-03 4.79423577304e-03 5.61497680711e-03 6.74228118806e-03 8.22635918544e-03 1.01194532806e-02 + 1.24686371753e-02 1.53065353883e-02 1.86367379277e-02 2.24136125305e-02 2.65227612839e-02 3.07715106065e-02 + 3.48956024912e-02 3.85829474965e-02 4.15120643887e-02 4.34003076052e-02 4.40529168852e-02 4.34003076052e-02 + 4.50208900473e-02 4.12888114430e-02 3.68707660171e-02 3.21243272248e-02 2.73794467347e-02 2.29016184223e-02 + 1.88720574247e-02 1.53857855201e-02 1.24657333634e-02 1.00865795572e-02 8.19834740781e-03 6.74228118806e-03 + 5.65928321674e-03 4.89581524939e-03 4.40955813989e-03 4.17292027232e-03 4.17292027232e-03 4.40955813989e-03 + 4.89581524939e-03 5.65928321674e-03 6.74228118806e-03 8.19834740781e-03 1.00865795572e-02 1.24657333634e-02 + 1.53857855201e-02 1.88720574247e-02 2.29016184223e-02 2.73794467347e-02 3.21243272248e-02 3.68707660171e-02 + 4.12888114430e-02 4.50208900473e-02 4.77311231410e-02 4.91578982971e-02 4.91578982971e-02 4.77311231410e-02 + 4.79989400749e-02 4.35234290368e-02 3.84534160516e-02 3.31691643222e-02 2.80098127199e-02 2.32368358951e-02 + 1.90175139009e-02 1.54267827082e-02 1.24650738064e-02 1.00865795572e-02 8.22635918544e-03 6.81664387654e-03 + 5.79365065764e-03 5.10253249618e-03 4.70304044562e-03 4.57225197605e-03 4.70304044562e-03 5.10253249618e-03 + 5.79365065764e-03 6.81664387654e-03 8.22635918544e-03 1.00865795572e-02 1.24650738064e-02 1.54267827082e-02 + 1.90175139009e-02 2.32368358951e-02 2.80098127199e-02 3.31691643222e-02 3.84534160516e-02 4.35234290368e-02 + 4.79989400749e-02 5.15101646150e-02 5.37510492057e-02 5.45211951056e-02 5.37510492057e-02 5.15101646150e-02 + 5.02828320119e-02 4.51877782102e-02 3.95849180057e-02 3.38709874542e-02 2.83925891295e-02 2.34067395586e-02 + 1.90666010177e-02 1.54267827082e-02 1.24657333634e-02 1.01194532806e-02 8.31144312544e-03 6.96786738821e-03 + 6.02253909249e-03 5.42174879265e-03 5.12972310883e-03 5.12972310883e-03 5.42174879265e-03 6.02253909249e-03 + 6.96786738821e-03 8.31144312544e-03 1.01194532806e-02 1.24657333634e-02 1.54267827082e-02 1.90666010177e-02 + 2.34067395586e-02 2.83925891295e-02 3.38709874542e-02 3.95849180057e-02 4.51877782102e-02 5.02828320119e-02 + 5.44829894560e-02 5.74676014035e-02 5.90154969276e-02 5.90154969276e-02 5.74676014035e-02 5.44829894560e-02 + 5.18281863755e-02 4.62623331670e-02 4.02540981079e-02 3.42208946471e-02 2.85205562719e-02 2.34067395586e-02 + 1.90175139009e-02 1.53857855201e-02 1.24686371753e-02 1.01870819285e-02 8.45686847188e-03 7.20097316500e-03 + 6.35335851926e-03 5.86418256271e-03 5.70420021497e-03 5.86418256271e-03 6.35335851926e-03 7.20097316500e-03 + 8.45686847188e-03 1.01870819285e-02 1.24686371753e-02 1.53857855201e-02 1.90175139009e-02 2.34067395586e-02 + 2.85205562719e-02 3.42208946471e-02 4.02540981079e-02 4.62623331670e-02 5.18281863755e-02 5.65511919643e-02 + 6.01184381094e-02 6.23288110708e-02 6.30764730892e-02 6.23288110708e-02 6.01184381094e-02 5.65511919643e-02 + 5.26931433274e-02 4.67810667612e-02 4.04742233092e-02 3.42208946471e-02 2.83925891295e-02 2.32368358951e-02 + 1.88720574247e-02 1.53065353883e-02 1.24770996440e-02 1.02937156151e-02 8.66817035987e-03 7.52314503521e-03 + 6.79567554150e-03 6.44245195186e-03 6.44245195186e-03 6.79567554150e-03 7.52314503521e-03 8.66817035987e-03 + 1.02937156151e-02 1.24770996440e-02 1.53065353883e-02 1.88720574247e-02 2.32368358951e-02 2.83925891295e-02 + 3.42208946471e-02 4.04742233092e-02 4.67810667612e-02 5.26931433274e-02 5.77843769256e-02 6.17513938278e-02 + 6.44394828494e-02 6.57918464265e-02 6.57918464265e-02 6.44394828494e-02 6.17513938278e-02 5.77843769256e-02 + 5.29676178633e-02 4.67810667612e-02 4.02540981079e-02 3.38709874542e-02 2.80098127199e-02 2.29016184223e-02 + 1.86367379277e-02 1.51956958667e-02 1.24976141314e-02 1.04460621935e-02 8.95261635749e-03 7.94279014126e-03 + 7.35981258047e-03 7.16922584820e-03 7.35981258047e-03 7.94279014126e-03 8.95261635749e-03 1.04460621935e-02 + 1.24976141314e-02 1.51956958667e-02 1.86367379277e-02 2.29016184223e-02 2.80098127199e-02 3.38709874542e-02 + 4.02540981079e-02 4.67810667612e-02 5.29676178633e-02 5.83399236929e-02 6.25800698666e-02 6.55787911247e-02 + 6.73541476702e-02 6.79419572879e-02 6.73541476702e-02 6.55787911247e-02 6.25800698666e-02 5.83399236929e-02 + 5.26931433274e-02 4.62623331670e-02 3.95849180057e-02 3.31691643222e-02 2.73794467347e-02 2.24136125305e-02 + 1.83246021902e-02 1.50645020089e-02 1.25396406703e-02 1.06524671204e-02 9.31810768724e-03 8.46823559623e-03 + 8.05519399644e-03 8.05519399644e-03 8.46823559623e-03 9.31810768724e-03 1.06524671204e-02 1.25396406703e-02 + 1.50645020089e-02 1.83246021902e-02 2.24136125305e-02 2.73794467347e-02 3.31691643222e-02 3.95849180057e-02 + 4.62623331670e-02 5.26931433274e-02 5.83399236929e-02 6.28259810566e-02 6.60504635380e-02 6.81077724909e-02 + 6.91119067669e-02 6.91119067669e-02 6.81077724909e-02 6.60504635380e-02 6.28259810566e-02 5.83399236929e-02 + 5.18281863755e-02 4.51877782102e-02 3.84534160516e-02 3.21243272248e-02 2.65227612839e-02 2.17964249596e-02 + 1.79555609317e-02 1.49279448733e-02 1.26143883181e-02 1.09215936737e-02 9.77183223433e-03 9.10613117226e-03 + 8.88822832040e-03 9.10613117226e-03 9.77183223433e-03 1.09215936737e-02 1.26143883181e-02 1.49279448733e-02 + 1.79555609317e-02 2.17964249596e-02 2.65227612839e-02 3.21243272248e-02 3.84534160516e-02 4.51877782102e-02 + 5.18281863755e-02 5.77843769256e-02 6.25800698666e-02 6.60504635380e-02 6.83266751007e-02 6.96179820017e-02 + 7.00400365127e-02 6.96179820017e-02 6.83266751007e-02 6.60504635380e-02 6.25800698666e-02 5.77843769256e-02 + 5.02828320119e-02 4.35234290368e-02 3.68707660171e-02 3.07715106065e-02 2.54803066383e-02 2.10847229658e-02 + 1.75547637226e-02 1.48031251671e-02 1.27333396536e-02 1.12609832188e-02 1.03186231402e-02 9.85925299562e-03 + 9.85925299562e-03 1.03186231402e-02 1.12609832188e-02 1.27333396536e-02 1.48031251671e-02 1.75547637226e-02 + 2.10847229658e-02 2.54803066383e-02 3.07715106065e-02 3.68707660171e-02 4.35234290368e-02 5.02828320119e-02 + 5.65511919643e-02 6.17513938278e-02 6.55787911247e-02 6.81077724909e-02 6.96179820017e-02 7.03323963389e-02 + 7.03323963389e-02 6.96179820017e-02 6.81077724909e-02 6.55787911247e-02 6.17513938278e-02 5.65511919643e-02 + 4.79989400749e-02 4.12888114430e-02 3.48956024912e-02 2.91781605866e-02 2.43103322252e-02 2.03206914317e-02 + 1.71497889118e-02 1.47072813037e-02 1.29064893850e-02 1.16751572683e-02 1.09586567104e-02 1.07235056315e-02 + 1.09586567104e-02 1.16751572683e-02 1.29064893850e-02 1.47072813037e-02 1.71497889118e-02 2.03206914317e-02 + 2.43103322252e-02 2.91781605866e-02 3.48956024912e-02 4.12888114430e-02 4.79989400749e-02 5.44829894560e-02 + 6.01184381094e-02 6.44394828494e-02 6.73541476702e-02 6.91119067669e-02 7.00400365127e-02 7.03323963389e-02 + 7.00400365127e-02 6.91119067669e-02 6.73541476702e-02 6.44394828494e-02 6.01184381094e-02 5.44829894560e-02 + 4.50208900473e-02 3.85829474965e-02 3.26363277502e-02 2.74372089612e-02 2.30804654510e-02 1.95479913088e-02 + 1.67669692380e-02 1.46550533623e-02 1.31397287366e-02 1.21629507848e-02 1.16845233837e-02 1.16845233837e-02 + 1.21629507848e-02 1.31397287366e-02 1.46550533623e-02 1.67669692380e-02 1.95479913088e-02 2.30804654510e-02 + 2.74372089612e-02 3.26363277502e-02 3.85829474965e-02 4.50208900473e-02 5.15101646150e-02 5.74676014035e-02 + 6.23288110708e-02 6.57918464265e-02 6.79419572879e-02 6.91119067669e-02 6.96179820017e-02 6.96179820017e-02 + 6.91119067669e-02 6.79419572879e-02 6.57918464265e-02 6.23288110708e-02 5.74676014035e-02 5.15101646150e-02 + 4.15120643887e-02 3.55725175924e-02 3.02323588099e-02 2.56499234494e-02 2.18557815330e-02 1.88049742175e-02 + 1.64272283654e-02 1.46550533623e-02 1.34318126710e-02 1.27148275869e-02 1.24785638223e-02 1.27148275869e-02 + 1.34318126710e-02 1.46550533623e-02 1.64272283654e-02 1.88049742175e-02 2.18557815330e-02 2.56499234494e-02 + 3.02323588099e-02 3.55725175924e-02 4.15120643887e-02 4.77311231410e-02 5.37510492057e-02 5.90154969276e-02 + 6.30764730892e-02 6.57918464265e-02 6.73541476702e-02 6.81077724909e-02 6.83266751007e-02 6.81077724909e-02 + 6.73541476702e-02 6.57918464265e-02 6.30764730892e-02 5.90154969276e-02 5.37510492057e-02 4.77311231410e-02 + 3.77147526395e-02 3.24534608631e-02 2.78244998346e-02 2.39063871143e-02 2.06884779452e-02 1.81196807915e-02 + 1.61427916872e-02 1.47072813037e-02 1.37726366090e-02 1.33116675302e-02 1.33116675302e-02 1.37726366090e-02 + 1.47072813037e-02 1.61427916872e-02 1.81196807915e-02 2.06884779452e-02 2.39063871143e-02 2.78244998346e-02 + 3.24534608631e-02 3.77147526395e-02 4.34003076052e-02 4.91578982971e-02 5.45211951056e-02 5.90154969276e-02 + 6.23288110708e-02 6.44394828494e-02 6.55787911247e-02 6.60504635380e-02 6.60504635380e-02 6.55787911247e-02 + 6.44394828494e-02 6.23288110708e-02 5.90154969276e-02 5.45211951056e-02 4.91578982971e-02 4.34003076052e-02 + 3.38859304601e-02 2.94074293899e-02 2.55281844546e-02 2.22726314479e-02 1.96135589165e-02 1.75083321070e-02 + 1.59162612755e-02 1.48031251671e-02 1.41440793855e-02 1.39256808178e-02 1.41440793855e-02 1.48031251671e-02 + 1.59162612755e-02 1.75083321070e-02 1.96135589165e-02 2.22726314479e-02 2.55281844546e-02 2.94074293899e-02 + 3.38859304601e-02 3.88462459817e-02 4.40529168852e-02 4.91578982971e-02 5.37510492057e-02 5.74676014035e-02 + 6.01184381094e-02 6.17513938278e-02 6.25800698666e-02 6.28259810566e-02 6.25800698666e-02 6.17513938278e-02 + 6.01184381094e-02 5.74676014035e-02 5.37510492057e-02 4.91578982971e-02 4.40529168852e-02 3.88462459817e-02 + 3.02423286704e-02 2.65706573512e-02 2.34202555044e-02 2.07887392229e-02 1.86504890434e-02 1.69767793036e-02 + 1.57423428102e-02 1.49279448733e-02 1.45226393383e-02 1.45226393383e-02 1.49279448733e-02 1.57423428102e-02 + 1.69767793036e-02 1.86504890434e-02 2.07887392229e-02 2.34202555044e-02 2.65706573512e-02 3.02423286704e-02 + 3.43811654173e-02 3.88462459817e-02 4.34003076052e-02 4.77311231410e-02 5.15101646150e-02 5.44829894560e-02 + 5.65511919643e-02 5.77843769256e-02 5.83399236929e-02 5.83399236929e-02 5.77843769256e-02 5.65511919643e-02 + 5.44829894560e-02 5.15101646150e-02 4.77311231410e-02 4.34003076052e-02 3.88462459817e-02 3.43811654173e-02 + 2.89647599965e-02 2.63252408289e-02 2.40594329852e-02 2.21666114252e-02 2.06439962171e-02 1.94921954522e-02 + 1.87162119832e-02 1.83246021902e-02 1.83246021902e-02 1.87162119832e-02 1.94921954522e-02 2.06439962171e-02 + 2.21666114252e-02 2.40594329852e-02 2.63252408289e-02 2.89647599965e-02 3.19590319446e-02 3.52402742752e-02 + 3.86662855632e-02 4.20165784801e-02 4.50208900473e-02 4.74231711778e-02 4.90700187394e-02 4.99825941802e-02 + 5.03535465114e-02 5.04463447592e-02 5.04463447592e-02 5.03535465114e-02 4.99825941802e-02 4.90700187394e-02 + 4.74231711778e-02 4.50208900473e-02 4.20165784801e-02 3.86662855632e-02 3.52402742752e-02 3.19590319446e-02 + 2.63252408289e-02 2.43476957086e-02 2.26519365039e-02 2.12413612776e-02 2.01220876747e-02 1.93050944183e-02 + 1.88053010662e-02 1.86367379277e-02 1.88053010662e-02 1.93050944183e-02 2.01220876747e-02 2.12413612776e-02 + 2.26519365039e-02 2.43476957086e-02 2.63252408289e-02 2.85763383726e-02 3.10717223250e-02 3.37399765679e-02 + 3.64535808156e-02 3.90350130516e-02 4.12888114430e-02 4.30547772101e-02 4.42634768270e-02 4.49623774036e-02 + 4.52857661696e-02 4.53738413591e-02 4.52857661696e-02 4.49623774036e-02 4.42634768270e-02 4.30547772101e-02 + 4.12888114430e-02 3.90350130516e-02 3.64535808156e-02 3.37399765679e-02 3.10717223250e-02 2.85763383726e-02 + 2.40594329852e-02 2.26519365039e-02 2.14468462049e-02 2.04512222766e-02 1.96777557044e-02 1.91448778653e-02 + 1.88720574247e-02 1.88720574247e-02 1.91448778653e-02 1.96777557044e-02 2.04512222766e-02 2.14468462049e-02 + 2.26519365039e-02 2.40594329852e-02 2.56635113913e-02 2.74512061786e-02 2.93901320501e-02 3.14154606035e-02 + 3.34242157073e-02 3.52857897121e-02 3.68707660171e-02 3.80886538087e-02 3.89160663350e-02 3.93968315223e-02 + 3.96081166256e-02 3.96081166256e-02 3.93968315223e-02 3.89160663350e-02 3.80886538087e-02 3.68707660171e-02 + 3.52857897121e-02 3.34242157073e-02 3.14154606035e-02 2.93901320501e-02 2.74512061786e-02 2.56635113913e-02 + 2.21666114252e-02 2.12413612776e-02 2.04512222766e-02 1.98052910067e-02 1.93203741197e-02 1.90175139009e-02 + 1.89142861556e-02 1.90175139009e-02 1.93203741197e-02 1.98052910067e-02 2.04512222766e-02 2.12413612776e-02 + 2.21666114252e-02 2.32231030162e-02 2.44059448105e-02 2.57019293917e-02 2.70818268649e-02 2.84935612207e-02 + 2.98615217076e-02 3.10978190541e-02 3.21243272248e-02 3.28952522339e-02 3.34071767353e-02 3.36893635306e-02 + 3.37780927799e-02 3.36893635306e-02 3.34071767353e-02 3.28952522339e-02 3.21243272248e-02 3.10978190541e-02 + 2.98615217076e-02 2.84935612207e-02 2.70818268649e-02 2.57019293917e-02 2.44059448105e-02 2.32231030162e-02 + 2.06439962171e-02 2.01220876747e-02 1.96777557044e-02 1.93203741197e-02 1.90666010177e-02 1.89341271390e-02 + 1.89341271390e-02 1.90666010177e-02 1.93203741197e-02 1.96777557044e-02 2.01220876747e-02 2.06439962171e-02 + 2.12421582644e-02 2.19185274002e-02 2.26718438342e-02 2.34923498457e-02 2.43576039836e-02 2.52298202509e-02 + 2.60582031450e-02 2.67889182249e-02 2.73794467347e-02 2.78094015925e-02 2.80812943983e-02 2.82105864296e-02 + 2.82105864296e-02 2.80812943983e-02 2.78094015925e-02 2.73794467347e-02 2.67889182249e-02 2.60582031450e-02 + 2.52298202509e-02 2.43576039836e-02 2.34923498457e-02 2.26718438342e-02 2.19185274002e-02 2.12421582644e-02 + 1.94921954522e-02 1.93050944183e-02 1.91448778653e-02 1.90175139009e-02 1.89341271390e-02 1.89049688962e-02 + 1.89341271390e-02 1.90175139009e-02 1.91448778653e-02 1.93050944183e-02 1.94921954522e-02 1.97084075068e-02 + 1.99620901041e-02 2.02621880335e-02 2.06126999880e-02 2.10090352784e-02 2.14361295219e-02 2.18687619531e-02 + 2.22755921268e-02 2.26267522861e-02 2.29016184223e-02 2.30924993956e-02 2.32023283361e-02 2.32378434698e-02 + 2.32023283361e-02 2.30924993956e-02 2.29016184223e-02 2.26267522861e-02 2.22755921268e-02 2.18687619531e-02 + 2.14361295219e-02 2.10090352784e-02 2.06126999880e-02 2.02621880335e-02 1.99620901041e-02 1.97084075068e-02 + 1.87162119832e-02 1.88053010662e-02 1.88720574247e-02 1.89142861556e-02 1.89341271390e-02 1.89341271390e-02 + 1.89142861556e-02 1.88720574247e-02 1.88053010662e-02 1.87162119832e-02 1.86137801375e-02 1.85132658939e-02 + 1.84326960165e-02 1.83878553878e-02 1.83878553878e-02 1.84326960165e-02 1.85132658939e-02 1.86137801375e-02 + 1.87162119832e-02 1.88053010662e-02 1.88720574247e-02 1.89142861556e-02 1.89341271390e-02 1.89341271390e-02 + 1.89142861556e-02 1.88720574247e-02 1.88053010662e-02 1.87162119832e-02 1.86137801375e-02 1.85132658939e-02 + 1.84326960165e-02 1.83878553878e-02 1.83878553878e-02 1.84326960165e-02 1.85132658939e-02 1.86137801375e-02 + 1.83246021902e-02 1.86367379277e-02 1.88720574247e-02 1.90175139009e-02 1.90666010177e-02 1.90175139009e-02 + 1.88720574247e-02 1.86367379277e-02 1.83246021902e-02 1.79555609317e-02 1.75547637226e-02 1.71497889118e-02 + 1.67669692380e-02 1.64272283654e-02 1.61427916872e-02 1.59162612755e-02 1.57423428102e-02 1.56112881223e-02 + 1.55127511572e-02 1.54388806266e-02 1.53857855201e-02 1.53530693596e-02 1.53419303249e-02 1.53530693596e-02 + 1.53857855201e-02 1.54388806266e-02 1.55127511572e-02 1.56112881223e-02 1.57423428102e-02 1.59162612755e-02 + 1.61427916872e-02 1.64272283654e-02 1.67669692380e-02 1.71497889118e-02 1.75547637226e-02 1.79555609317e-02 + 1.83246021902e-02 1.88053010662e-02 1.91448778653e-02 1.93203741197e-02 1.93203741197e-02 1.91448778653e-02 + 1.88053010662e-02 1.83246021902e-02 1.77355963866e-02 1.70770073925e-02 1.63890080671e-02 1.57094271493e-02 + 1.50702461704e-02 1.44944499034e-02 1.39945083398e-02 1.35733603577e-02 1.32272933414e-02 1.29494247541e-02 + 1.27327884289e-02 1.25723726562e-02 1.24657333634e-02 1.24123312979e-02 1.24123312979e-02 1.24657333634e-02 + 1.25723726562e-02 1.27327884289e-02 1.29494247541e-02 1.32272933414e-02 1.35733603577e-02 1.39945083398e-02 + 1.44944499034e-02 1.50702461704e-02 1.57094271493e-02 1.63890080671e-02 1.70770073925e-02 1.77355963866e-02 + 1.87162119832e-02 1.93050944183e-02 1.96777557044e-02 1.98052910067e-02 1.96777557044e-02 1.93050944183e-02 + 1.87162119832e-02 1.79555609317e-02 1.70770073925e-02 1.61367490443e-02 1.51874137660e-02 1.42737851127e-02 + 1.34297677852e-02 1.26769712537e-02 1.20255038743e-02 1.14766013692e-02 1.10259974674e-02 1.06671499136e-02 + 1.03937663652e-02 1.02011860999e-02 1.00865795572e-02 1.00485204973e-02 1.00865795572e-02 1.02011860999e-02 + 1.03937663652e-02 1.06671499136e-02 1.10259974674e-02 1.14766013692e-02 1.20255038743e-02 1.26769712537e-02 + 1.34297677852e-02 1.42737851127e-02 1.51874137660e-02 1.61367490443e-02 1.70770073925e-02 1.79555609317e-02 + 1.94921954522e-02 2.01220876747e-02 2.04512222766e-02 2.04512222766e-02 2.01220876747e-02 1.94921954522e-02 + 1.86137801375e-02 1.75547637226e-02 1.63890080671e-02 1.51874137660e-02 1.40112393540e-02 1.29079014387e-02 + 1.19093466628e-02 1.10330000246e-02 1.02846446979e-02 9.66211927865e-03 9.15892896774e-03 8.76725594498e-03 + 8.47998103933e-03 8.29158854156e-03 8.19834740781e-03 8.19834740781e-03 8.29158854156e-03 8.47998103933e-03 + 8.76725594498e-03 9.15892896774e-03 9.66211927865e-03 1.02846446979e-02 1.10330000246e-02 1.19093466628e-02 + 1.29079014387e-02 1.40112393540e-02 1.51874137660e-02 1.63890080671e-02 1.75547637226e-02 1.86137801375e-02 + 2.06439962171e-02 2.12413612776e-02 2.14468462049e-02 2.12413612776e-02 2.06439962171e-02 1.97084075068e-02 + 1.85132658939e-02 1.71497889118e-02 1.57094271493e-02 1.42737851127e-02 1.29079014387e-02 1.16573532374e-02 + 1.05489279259e-02 9.59384043225e-03 8.79214216133e-03 8.13716815266e-03 7.61927184895e-03 7.22847713667e-03 + 6.95605972443e-03 6.79537428806e-03 6.74228118806e-03 6.79537428806e-03 6.95605972443e-03 7.22847713667e-03 + 7.61927184895e-03 8.13716815266e-03 8.79214216133e-03 9.59384043225e-03 1.05489279259e-02 1.16573532374e-02 + 1.29079014387e-02 1.42737851127e-02 1.57094271493e-02 1.71497889118e-02 1.85132658939e-02 1.97084075068e-02 + 2.21666114252e-02 2.26519365039e-02 2.26519365039e-02 2.21666114252e-02 2.12421582644e-02 1.99620901041e-02 + 1.84326960165e-02 1.67669692380e-02 1.50702461704e-02 1.34297677852e-02 1.19093466628e-02 1.05489279259e-02 + 9.36769905218e-03 8.36917339040e-03 7.54684340873e-03 6.88914005847e-03 6.38291972351e-03 6.01563766373e-03 + 5.77685140016e-03 5.65928321674e-03 5.65928321674e-03 5.77685140016e-03 6.01563766373e-03 6.38291972351e-03 + 6.88914005847e-03 7.54684340873e-03 8.36917339040e-03 9.36769905218e-03 1.05489279259e-02 1.19093466628e-02 + 1.34297677852e-02 1.50702461704e-02 1.67669692380e-02 1.84326960165e-02 1.99620901041e-02 2.12421582644e-02 + 2.40594329852e-02 2.43476957086e-02 2.40594329852e-02 2.32231030162e-02 2.19185274002e-02 2.02621880335e-02 + 1.83878553878e-02 1.64272283654e-02 1.44944499034e-02 1.26769712537e-02 1.10330000246e-02 9.59384043225e-03 + 8.36917339040e-03 7.35383003280e-03 6.53448601861e-03 5.89466652251e-03 5.41768978229e-03 5.08859106656e-03 + 4.89581524939e-03 4.83232712929e-03 4.89581524939e-03 5.08859106656e-03 5.41768978229e-03 5.89466652251e-03 + 6.53448601861e-03 7.35383003280e-03 8.36917339040e-03 9.59384043225e-03 1.10330000246e-02 1.26769712537e-02 + 1.44944499034e-02 1.64272283654e-02 1.83878553878e-02 2.02621880335e-02 2.19185274002e-02 2.32231030162e-02 + 2.63252408289e-02 2.63252408289e-02 2.56635113913e-02 2.44059448105e-02 2.26718438342e-02 2.06126999880e-02 + 1.83878553878e-02 1.61427916872e-02 1.39945083398e-02 1.20255038743e-02 1.02846446979e-02 8.79214216133e-03 + 7.54684340873e-03 6.53448601861e-03 5.73495116497e-03 5.12697112440e-03 4.69069423954e-03 4.40955813989e-03 + 4.27192322596e-03 4.27192322596e-03 4.40955813989e-03 4.69069423954e-03 5.12697112440e-03 5.73495116497e-03 + 6.53448601861e-03 7.54684340873e-03 8.79214216133e-03 1.02846446979e-02 1.20255038743e-02 1.39945083398e-02 + 1.61427916872e-02 1.83878553878e-02 2.06126999880e-02 2.26718438342e-02 2.44059448105e-02 2.56635113913e-02 + 2.89647599965e-02 2.85763383726e-02 2.74512061786e-02 2.57019293917e-02 2.34923498457e-02 2.10090352784e-02 + 1.84326960165e-02 1.59162612755e-02 1.35733603577e-02 1.14766013692e-02 9.66211927865e-03 8.13716815266e-03 + 6.88914005847e-03 5.89466652251e-03 5.12697112440e-03 4.56041706509e-03 4.17292027232e-03 3.94752033538e-03 + 3.87358926493e-03 3.94752033538e-03 4.17292027232e-03 4.56041706509e-03 5.12697112440e-03 5.89466652251e-03 + 6.88914005847e-03 8.13716815266e-03 9.66211927865e-03 1.14766013692e-02 1.35733603577e-02 1.59162612755e-02 + 1.84326960165e-02 2.10090352784e-02 2.34923498457e-02 2.57019293917e-02 2.74512061786e-02 2.85763383726e-02 + 3.19590319446e-02 3.10717223250e-02 2.93901320501e-02 2.70818268649e-02 2.43576039836e-02 2.14361295219e-02 + 1.85132658939e-02 1.57423428102e-02 1.32272933414e-02 1.10259974674e-02 9.15892896774e-03 7.61927184895e-03 + 6.38291972351e-03 5.41768978229e-03 4.69069423954e-03 4.17292027232e-03 3.84131375804e-03 3.67971968314e-03 + 3.67971968314e-03 3.84131375804e-03 4.17292027232e-03 4.69069423954e-03 5.41768978229e-03 6.38291972351e-03 + 7.61927184895e-03 9.15892896774e-03 1.10259974674e-02 1.32272933414e-02 1.57423428102e-02 1.85132658939e-02 + 2.14361295219e-02 2.43576039836e-02 2.70818268649e-02 2.93901320501e-02 3.10717223250e-02 3.19590319446e-02 + 3.52402742752e-02 3.37399765679e-02 3.14154606035e-02 2.84935612207e-02 2.52298202509e-02 2.18687619531e-02 + 1.86137801375e-02 1.56112881223e-02 1.29494247541e-02 1.06671499136e-02 8.76725594498e-03 7.22847713667e-03 + 6.01563766373e-03 5.08859106656e-03 4.40955813989e-03 3.94752033538e-03 3.67971968314e-03 3.59206217435e-03 + 3.67971968314e-03 3.94752033538e-03 4.40955813989e-03 5.08859106656e-03 6.01563766373e-03 7.22847713667e-03 + 8.76725594498e-03 1.06671499136e-02 1.29494247541e-02 1.56112881223e-02 1.86137801375e-02 2.18687619531e-02 + 2.52298202509e-02 2.84935612207e-02 3.14154606035e-02 3.37399765679e-02 3.52402742752e-02 3.57591480990e-02 + 3.86662855632e-02 3.64535808156e-02 3.34242157073e-02 2.98615217076e-02 2.60582031450e-02 2.22755921268e-02 + 1.87162119832e-02 1.55127511572e-02 1.27327884289e-02 1.03937663652e-02 8.47998103933e-03 6.95605972443e-03 + 5.77685140016e-03 4.89581524939e-03 4.27192322596e-03 3.87358926493e-03 3.67971968314e-03 3.67971968314e-03 + 3.87358926493e-03 4.27192322596e-03 4.89581524939e-03 5.77685140016e-03 6.95605972443e-03 8.47998103933e-03 + 1.03937663652e-02 1.27327884289e-02 1.55127511572e-02 1.87162119832e-02 2.22755921268e-02 2.60582031450e-02 + 2.98615217076e-02 3.34242157073e-02 3.64535808156e-02 3.86662855632e-02 3.98358227133e-02 3.98358227133e-02 + 4.20165784801e-02 3.90350130516e-02 3.52857897121e-02 3.10978190541e-02 2.67889182249e-02 2.26267522861e-02 + 1.88053010662e-02 1.54388806266e-02 1.25723726562e-02 1.02011860999e-02 8.29158854156e-03 6.79537428806e-03 + 5.65928321674e-03 4.83232712929e-03 4.27192322596e-03 3.94752033538e-03 3.84131375804e-03 3.94752033538e-03 + 4.27192322596e-03 4.83232712929e-03 5.65928321674e-03 6.79537428806e-03 8.29158854156e-03 1.02011860999e-02 + 1.25723726562e-02 1.54388806266e-02 1.88053010662e-02 2.26267522861e-02 2.67889182249e-02 3.10978190541e-02 + 3.52857897121e-02 3.90350130516e-02 4.20165784801e-02 4.39402098517e-02 4.46053414397e-02 4.39402098517e-02 + 4.50208900473e-02 4.12888114430e-02 3.68707660171e-02 3.21243272248e-02 2.73794467347e-02 2.29016184223e-02 + 1.88720574247e-02 1.53857855201e-02 1.24657333634e-02 1.00865795572e-02 8.19834740781e-03 6.74228118806e-03 + 5.65928321674e-03 4.89581524939e-03 4.40955813989e-03 4.17292027232e-03 4.17292027232e-03 4.40955813989e-03 + 4.89581524939e-03 5.65928321674e-03 6.74228118806e-03 8.19834740781e-03 1.00865795572e-02 1.24657333634e-02 + 1.53857855201e-02 1.88720574247e-02 2.29016184223e-02 2.73794467347e-02 3.21243272248e-02 3.68707660171e-02 + 4.12888114430e-02 4.50208900473e-02 4.77311231410e-02 4.91578982971e-02 4.91578982971e-02 4.77311231410e-02 + 4.74231711778e-02 4.30547772101e-02 3.80886538087e-02 3.28952522339e-02 2.78094015925e-02 2.30924993956e-02 + 1.89142861556e-02 1.53530693596e-02 1.24123312979e-02 1.00485204973e-02 8.19834740781e-03 6.79537428806e-03 + 5.77685140016e-03 5.08859106656e-03 4.69069423954e-03 4.56041706509e-03 4.69069423954e-03 5.08859106656e-03 + 5.77685140016e-03 6.79537428806e-03 8.19834740781e-03 1.00485204973e-02 1.24123312979e-02 1.53530693596e-02 + 1.89142861556e-02 2.30924993956e-02 2.78094015925e-02 3.28952522339e-02 3.80886538087e-02 4.30547772101e-02 + 4.74231711778e-02 5.08390344517e-02 5.30133769166e-02 5.37595739225e-02 5.30133769166e-02 5.08390344517e-02 + 4.90700187394e-02 4.42634768270e-02 3.89160663350e-02 3.34071767353e-02 2.80812943983e-02 2.32023283361e-02 + 1.89341271390e-02 1.53419303249e-02 1.24123312979e-02 1.00865795572e-02 8.29158854156e-03 6.95605972443e-03 + 6.01563766373e-03 5.41768978229e-03 5.12697112440e-03 5.12697112440e-03 5.41768978229e-03 6.01563766373e-03 + 6.95605972443e-03 8.29158854156e-03 1.00865795572e-02 1.24123312979e-02 1.53419303249e-02 1.89341271390e-02 + 2.32023283361e-02 2.80812943983e-02 3.34071767353e-02 3.89160663350e-02 4.42634768270e-02 4.90700187394e-02 + 5.29846351657e-02 5.57363453523e-02 5.71527035674e-02 5.71527035674e-02 5.57363453523e-02 5.29846351657e-02 + 4.99825941802e-02 4.49623774036e-02 3.93968315223e-02 3.36893635306e-02 2.82105864296e-02 2.32378434698e-02 + 1.89341271390e-02 1.53530693596e-02 1.24657333634e-02 1.02011860999e-02 8.47998103933e-03 7.22847713667e-03 + 6.38291972351e-03 5.89466652251e-03 5.73495116497e-03 5.89466652251e-03 6.38291972351e-03 7.22847713667e-03 + 8.47998103933e-03 1.02011860999e-02 1.24657333634e-02 1.53530693596e-02 1.89341271390e-02 2.32378434698e-02 + 2.82105864296e-02 3.36893635306e-02 3.93968315223e-02 4.49623774036e-02 4.99825941802e-02 5.41129564364e-02 + 5.71366804742e-02 5.89627863020e-02 5.95715936141e-02 5.89627863020e-02 5.71366804742e-02 5.41129564364e-02 + 5.03535465114e-02 4.52857661696e-02 3.96081166256e-02 3.37780927799e-02 2.82105864296e-02 2.32023283361e-02 + 1.89142861556e-02 1.53857855201e-02 1.25723726562e-02 1.03937663652e-02 8.76725594498e-03 7.61927184895e-03 + 6.88914005847e-03 6.53448601861e-03 6.53448601861e-03 6.88914005847e-03 7.61927184895e-03 8.76725594498e-03 + 1.03937663652e-02 1.25723726562e-02 1.53857855201e-02 1.89142861556e-02 2.32023283361e-02 2.82105864296e-02 + 3.37780927799e-02 3.96081166256e-02 4.52857661696e-02 5.03535465114e-02 5.44475263977e-02 5.74105494947e-02 + 5.92810318582e-02 6.01752681104e-02 6.01752681104e-02 5.92810318582e-02 5.74105494947e-02 5.44475263977e-02 + 5.04463447592e-02 4.53738413591e-02 3.96081166256e-02 3.36893635306e-02 2.80812943983e-02 2.30924993956e-02 + 1.88720574247e-02 1.54388806266e-02 1.27327884289e-02 1.06671499136e-02 9.15892896774e-03 8.13716815266e-03 + 7.54684340873e-03 7.35383003280e-03 7.54684340873e-03 8.13716815266e-03 9.15892896774e-03 1.06671499136e-02 + 1.27327884289e-02 1.54388806266e-02 1.88720574247e-02 2.30924993956e-02 2.80812943983e-02 3.36893635306e-02 + 3.96081166256e-02 4.53738413591e-02 5.04463447592e-02 5.43925934286e-02 5.70772559013e-02 5.86758842735e-02 + 5.94868177545e-02 5.97323039443e-02 5.94868177545e-02 5.86758842735e-02 5.70772559013e-02 5.43925934286e-02 + 5.04463447592e-02 4.52857661696e-02 3.93968315223e-02 3.34071767353e-02 2.78094015925e-02 2.29016184223e-02 + 1.88053010662e-02 1.55127511572e-02 1.29494247541e-02 1.10259974674e-02 9.66211927865e-03 8.79214216133e-03 + 8.36917339040e-03 8.36917339040e-03 8.79214216133e-03 9.66211927865e-03 1.10259974674e-02 1.29494247541e-02 + 1.55127511572e-02 1.88053010662e-02 2.29016184223e-02 2.78094015925e-02 3.34071767353e-02 3.93968315223e-02 + 4.52857661696e-02 5.04463447592e-02 5.43239294918e-02 5.67236888968e-02 5.79103146750e-02 5.83777841365e-02 + 5.85232784436e-02 5.85232784436e-02 5.83777841365e-02 5.79103146750e-02 5.67236888968e-02 5.43239294918e-02 + 5.03535465114e-02 4.49623774036e-02 3.89160663350e-02 3.28952522339e-02 2.73794467347e-02 2.26267522861e-02 + 1.87162119832e-02 1.56112881223e-02 1.32272933414e-02 1.14766013692e-02 1.02846446979e-02 9.59384043225e-03 + 9.36769905218e-03 9.59384043225e-03 1.02846446979e-02 1.14766013692e-02 1.32272933414e-02 1.56112881223e-02 + 1.87162119832e-02 2.26267522861e-02 2.73794467347e-02 3.28952522339e-02 3.89160663350e-02 4.49623774036e-02 + 5.03535465114e-02 5.43925934286e-02 5.67236888968e-02 5.75824043038e-02 5.76200322747e-02 5.74463352203e-02 + 5.73653289979e-02 5.74463352203e-02 5.76200322747e-02 5.75824043038e-02 5.67236888968e-02 5.43925934286e-02 + 4.99825941802e-02 4.42634768270e-02 3.80886538087e-02 3.21243272248e-02 2.67889182249e-02 2.22755921268e-02 + 1.86137801375e-02 1.57423428102e-02 1.35733603577e-02 1.20255038743e-02 1.10330000246e-02 1.05489279259e-02 + 1.05489279259e-02 1.10330000246e-02 1.20255038743e-02 1.35733603577e-02 1.57423428102e-02 1.86137801375e-02 + 2.22755921268e-02 2.67889182249e-02 3.21243272248e-02 3.80886538087e-02 4.42634768270e-02 4.99825941802e-02 + 5.44475263977e-02 5.70772559013e-02 5.79103146750e-02 5.76200322747e-02 5.70355201353e-02 5.66663226477e-02 + 5.66663226477e-02 5.70355201353e-02 5.76200322747e-02 5.79103146750e-02 5.70772559013e-02 5.44475263977e-02 + 4.90700187394e-02 4.30547772101e-02 3.68707660171e-02 3.10978190541e-02 2.60582031450e-02 2.18687619531e-02 + 1.85132658939e-02 1.59162612755e-02 1.39945083398e-02 1.26769712537e-02 1.19093466628e-02 1.16573532374e-02 + 1.19093466628e-02 1.26769712537e-02 1.39945083398e-02 1.59162612755e-02 1.85132658939e-02 2.18687619531e-02 + 2.60582031450e-02 3.10978190541e-02 3.68707660171e-02 4.30547772101e-02 4.90700187394e-02 5.41129564364e-02 + 5.74105494947e-02 5.86758842735e-02 5.83777841365e-02 5.74463352203e-02 5.66663226477e-02 5.63846435627e-02 + 5.66663226477e-02 5.74463352203e-02 5.83777841365e-02 5.86758842735e-02 5.74105494947e-02 5.41129564364e-02 + 4.74231711778e-02 4.12888114430e-02 3.52857897121e-02 2.98615217076e-02 2.52298202509e-02 2.14361295219e-02 + 1.84326960165e-02 1.61427916872e-02 1.44944499034e-02 1.34297677852e-02 1.29079014387e-02 1.29079014387e-02 + 1.34297677852e-02 1.44944499034e-02 1.61427916872e-02 1.84326960165e-02 2.14361295219e-02 2.52298202509e-02 + 2.98615217076e-02 3.52857897121e-02 4.12888114430e-02 4.74231711778e-02 5.29846351657e-02 5.71366804742e-02 + 5.92810318582e-02 5.94868177545e-02 5.85232784436e-02 5.73653289979e-02 5.66663226477e-02 5.66663226477e-02 + 5.73653289979e-02 5.85232784436e-02 5.94868177545e-02 5.92810318582e-02 5.71366804742e-02 5.29846351657e-02 + 4.50208900473e-02 3.90350130516e-02 3.34242157073e-02 2.84935612207e-02 2.43576039836e-02 2.10090352784e-02 + 1.83878553878e-02 1.64272283654e-02 1.50702461704e-02 1.42737851127e-02 1.40112393540e-02 1.42737851127e-02 + 1.50702461704e-02 1.64272283654e-02 1.83878553878e-02 2.10090352784e-02 2.43576039836e-02 2.84935612207e-02 + 3.34242157073e-02 3.90350130516e-02 4.50208900473e-02 5.08390344517e-02 5.57363453523e-02 5.89627863020e-02 + 6.01752681104e-02 5.97323039443e-02 5.85232784436e-02 5.74463352203e-02 5.70355201353e-02 5.74463352203e-02 + 5.85232784436e-02 5.97323039443e-02 6.01752681104e-02 5.89627863020e-02 5.57363453523e-02 5.08390344517e-02 + 4.20165784801e-02 3.64535808156e-02 3.14154606035e-02 2.70818268649e-02 2.34923498457e-02 2.06126999880e-02 + 1.83878553878e-02 1.67669692380e-02 1.57094271493e-02 1.51874137660e-02 1.51874137660e-02 1.57094271493e-02 + 1.67669692380e-02 1.83878553878e-02 2.06126999880e-02 2.34923498457e-02 2.70818268649e-02 3.14154606035e-02 + 3.64535808156e-02 4.20165784801e-02 4.77311231410e-02 5.30133769166e-02 5.71527035674e-02 5.95715936141e-02 + 6.01752681104e-02 5.94868177545e-02 5.83777841365e-02 5.76200322747e-02 5.76200322747e-02 5.83777841365e-02 + 5.94868177545e-02 6.01752681104e-02 5.95715936141e-02 5.71527035674e-02 5.30133769166e-02 4.77311231410e-02 + 3.86662855632e-02 3.37399765679e-02 2.93901320501e-02 2.57019293917e-02 2.26718438342e-02 2.02621880335e-02 + 1.84326960165e-02 1.71497889118e-02 1.63890080671e-02 1.61367490443e-02 1.63890080671e-02 1.71497889118e-02 + 1.84326960165e-02 2.02621880335e-02 2.26718438342e-02 2.57019293917e-02 2.93901320501e-02 3.37399765679e-02 + 3.86662855632e-02 4.39402098517e-02 4.91578982971e-02 5.37595739225e-02 5.71527035674e-02 5.89627863020e-02 + 5.92810318582e-02 5.86758842735e-02 5.79103146750e-02 5.75824043038e-02 5.79103146750e-02 5.86758842735e-02 + 5.92810318582e-02 5.89627863020e-02 5.71527035674e-02 5.37595739225e-02 4.91578982971e-02 4.39402098517e-02 + 3.52402742752e-02 3.10717223250e-02 2.74512061786e-02 2.44059448105e-02 2.19185274002e-02 1.99620901041e-02 + 1.85132658939e-02 1.75547637226e-02 1.70770073925e-02 1.70770073925e-02 1.75547637226e-02 1.85132658939e-02 + 1.99620901041e-02 2.19185274002e-02 2.44059448105e-02 2.74512061786e-02 3.10717223250e-02 3.52402742752e-02 + 3.98358227133e-02 4.46053414397e-02 4.91578982971e-02 5.30133769166e-02 5.57363453523e-02 5.71366804742e-02 + 5.74105494947e-02 5.70772559013e-02 5.67236888968e-02 5.67236888968e-02 5.70772559013e-02 5.74105494947e-02 + 5.71366804742e-02 5.57363453523e-02 5.30133769166e-02 4.91578982971e-02 4.46053414397e-02 3.98358227133e-02 + 3.19590319446e-02 2.85763383726e-02 2.56635113913e-02 2.32231030162e-02 2.12421582644e-02 1.97084075068e-02 + 1.86137801375e-02 1.79555609317e-02 1.77355963866e-02 1.79555609317e-02 1.86137801375e-02 1.97084075068e-02 + 2.12421582644e-02 2.32231030162e-02 2.56635113913e-02 2.85763383726e-02 3.19590319446e-02 3.57591480990e-02 + 3.98358227133e-02 4.39402098517e-02 4.77311231410e-02 5.08390344517e-02 5.29846351657e-02 5.41129564364e-02 + 5.44475263977e-02 5.43925934286e-02 5.43239294918e-02 5.43925934286e-02 5.44475263977e-02 5.41129564364e-02 + 5.29846351657e-02 5.08390344517e-02 4.77311231410e-02 4.39402098517e-02 3.98358227133e-02 3.57591480990e-02 + 3.18414068716e-02 2.94586793037e-02 2.73972646659e-02 2.56657154446e-02 2.42781130820e-02 2.32562353108e-02 + 2.26267522861e-02 2.24136125305e-02 2.26267522861e-02 2.32562353108e-02 2.42781130820e-02 2.56657154446e-02 + 2.73972646659e-02 2.94586793037e-02 3.18414068716e-02 3.45282284639e-02 3.74634706166e-02 4.05199675384e-02 + 4.34838779539e-02 4.60731359718e-02 4.79989400749e-02 4.90700187394e-02 4.93048229800e-02 4.89738024005e-02 + 4.85080722970e-02 4.83002627794e-02 4.85080722970e-02 4.89738024005e-02 4.93048229800e-02 4.90700187394e-02 + 4.79989400749e-02 4.60731359718e-02 4.34838779539e-02 4.05199675384e-02 3.74634706166e-02 3.45282284639e-02 + 2.94586793037e-02 2.77227537368e-02 2.62153172241e-02 2.49511167951e-02 2.39549635512e-02 2.32603028496e-02 + 2.29016184223e-02 2.29016184223e-02 2.32603028496e-02 2.39549635512e-02 2.49511167951e-02 2.62153172241e-02 + 2.77227537368e-02 2.94586793037e-02 3.14127386696e-02 3.35632692529e-02 3.58537824974e-02 3.81729635435e-02 + 4.03527020822e-02 4.21941579647e-02 4.35234290368e-02 4.42634768270e-02 4.44868574481e-02 4.44045560444e-02 + 4.42752514752e-02 4.42752514752e-02 4.44045560444e-02 4.44868574481e-02 4.42634768270e-02 4.35234290368e-02 + 4.21941579647e-02 4.03527020822e-02 3.81729635435e-02 3.58537824974e-02 3.35632692529e-02 3.14127386696e-02 + 2.73972646659e-02 2.62153172241e-02 2.51823253991e-02 2.43184216158e-02 2.36566460915e-02 2.32368358951e-02 + 2.30924993956e-02 2.32368358951e-02 2.36566460915e-02 2.43184216158e-02 2.51823253991e-02 2.62153172241e-02 + 2.73972646659e-02 2.87187367840e-02 3.01717861136e-02 3.17358390207e-02 3.33624200108e-02 3.49654910486e-02 + 3.64263171972e-02 3.76190713504e-02 3.84534160516e-02 3.89160663350e-02 3.90848689472e-02 3.90976289629e-02 + 3.90842281235e-02 3.90976289629e-02 3.90848689472e-02 3.89160663350e-02 3.84534160516e-02 3.76190713504e-02 + 3.64263171972e-02 3.49654910486e-02 3.33624200108e-02 3.17358390207e-02 3.01717861136e-02 2.87187367840e-02 + 2.56657154446e-02 2.49511167951e-02 2.43184216158e-02 2.37914166767e-02 2.34067395586e-02 2.32023283361e-02 + 2.32023283361e-02 2.34067395586e-02 2.37914166767e-02 2.43184216158e-02 2.49511167951e-02 2.56657154446e-02 + 2.64534808200e-02 2.73140021666e-02 2.82446089484e-02 2.92302840650e-02 3.02357338101e-02 3.12022017908e-02 + 3.20546920774e-02 3.27229087590e-02 3.31691643222e-02 3.34071767353e-02 3.34971688966e-02 3.35158471123e-02 + 3.35158471123e-02 3.34971688966e-02 3.34071767353e-02 3.31691643222e-02 3.27229087590e-02 3.20546920774e-02 + 3.12022017908e-02 3.02357338101e-02 2.92302840650e-02 2.82446089484e-02 2.73140021666e-02 2.64534808200e-02 + 2.42781130820e-02 2.39549635512e-02 2.36566460915e-02 2.34067395586e-02 2.32378434698e-02 2.31779027969e-02 + 2.32378434698e-02 2.34067395586e-02 2.36566460915e-02 2.39549635512e-02 2.42781130820e-02 2.46187421852e-02 + 2.49827563157e-02 2.53797852965e-02 2.58139075627e-02 2.62778950395e-02 2.67502344749e-02 2.71955666447e-02 + 2.75721078901e-02 2.78466298707e-02 2.80098127199e-02 2.80812943983e-02 2.80994006567e-02 2.81005086407e-02 + 2.80994006567e-02 2.80812943983e-02 2.80098127199e-02 2.78466298707e-02 2.75721078901e-02 2.71955666447e-02 + 2.67502344749e-02 2.62778950395e-02 2.58139075627e-02 2.53797852965e-02 2.49827563157e-02 2.46187421852e-02 + 2.32562353108e-02 2.32603028496e-02 2.32368358951e-02 2.32023283361e-02 2.31779027969e-02 2.31779027969e-02 + 2.32023283361e-02 2.32368358951e-02 2.32603028496e-02 2.32562353108e-02 2.32217587400e-02 2.31688478126e-02 + 2.31175818882e-02 2.30866420056e-02 2.30866420056e-02 2.31175818882e-02 2.31688478126e-02 2.32217587400e-02 + 2.32562353108e-02 2.32603028496e-02 2.32368358951e-02 2.32023283361e-02 2.31779027969e-02 2.31779027969e-02 + 2.32023283361e-02 2.32368358951e-02 2.32603028496e-02 2.32562353108e-02 2.32217587400e-02 2.31688478126e-02 + 2.31175818882e-02 2.30866420056e-02 2.30866420056e-02 2.31175818882e-02 2.31688478126e-02 2.32217587400e-02 + 2.26267522861e-02 2.29016184223e-02 2.30924993956e-02 2.32023283361e-02 2.32378434698e-02 2.32023283361e-02 + 2.30924993956e-02 2.29016184223e-02 2.26267522861e-02 2.22755921268e-02 2.18687619531e-02 2.14361295219e-02 + 2.10090352784e-02 2.06126999880e-02 2.02621880335e-02 1.99620901041e-02 1.97084075068e-02 1.94921954522e-02 + 1.93050944183e-02 1.91448778653e-02 1.90175139009e-02 1.89341271390e-02 1.89049688962e-02 1.89341271390e-02 + 1.90175139009e-02 1.91448778653e-02 1.93050944183e-02 1.94921954522e-02 1.97084075068e-02 1.99620901041e-02 + 2.02621880335e-02 2.06126999880e-02 2.10090352784e-02 2.14361295219e-02 2.18687619531e-02 2.22755921268e-02 + 2.24136125305e-02 2.29016184223e-02 2.32368358951e-02 2.34067395586e-02 2.34067395586e-02 2.32368358951e-02 + 2.29016184223e-02 2.24136125305e-02 2.17964249596e-02 2.10847229658e-02 2.03206914317e-02 1.95479913088e-02 + 1.88049742175e-02 1.81196807915e-02 1.75083321070e-02 1.69767793036e-02 1.65234811342e-02 1.61434902729e-02 + 1.58329883187e-02 1.55924938344e-02 1.54267827082e-02 1.53419303249e-02 1.53419303249e-02 1.54267827082e-02 + 1.55924938344e-02 1.58329883187e-02 1.61434902729e-02 1.65234811342e-02 1.69767793036e-02 1.75083321070e-02 + 1.81196807915e-02 1.88049742175e-02 1.95479913088e-02 2.03206914317e-02 2.10847229658e-02 2.17964249596e-02 + 2.26267522861e-02 2.32603028496e-02 2.36566460915e-02 2.37914166767e-02 2.36566460915e-02 2.32603028496e-02 + 2.26267522861e-02 2.17964249596e-02 2.08223402545e-02 1.97639178277e-02 1.86800926235e-02 1.76229803621e-02 + 1.66330383744e-02 1.57370100687e-02 1.49488960464e-02 1.42727054437e-02 1.37059602390e-02 1.32437842255e-02 + 1.28827341282e-02 1.26225341258e-02 1.24650738064e-02 1.24123312979e-02 1.24650738064e-02 1.26225341258e-02 + 1.28827341282e-02 1.32437842255e-02 1.37059602390e-02 1.42727054437e-02 1.49488960464e-02 1.57370100687e-02 + 1.66330383744e-02 1.76229803621e-02 1.86800926235e-02 1.97639178277e-02 2.08223402545e-02 2.17964249596e-02 + 2.32562353108e-02 2.39549635512e-02 2.43184216158e-02 2.43184216158e-02 2.39549635512e-02 2.32562353108e-02 + 2.22755921268e-02 2.10847229658e-02 1.97639178277e-02 1.83921353899e-02 1.70389543521e-02 1.57591868798e-02 + 1.45906790875e-02 1.35553259639e-02 1.26620800682e-02 1.19105819676e-02 1.12951380995e-02 1.08088949298e-02 + 1.04468583553e-02 1.02064774226e-02 1.00865795572e-02 1.00865795572e-02 1.02064774226e-02 1.04468583553e-02 + 1.08088949298e-02 1.12951380995e-02 1.19105819676e-02 1.26620800682e-02 1.35553259639e-02 1.45906790875e-02 + 1.57591868798e-02 1.70389543521e-02 1.83921353899e-02 1.97639178277e-02 2.10847229658e-02 2.22755921268e-02 + 2.42781130820e-02 2.49511167951e-02 2.51823253991e-02 2.49511167951e-02 2.42781130820e-02 2.32217587400e-02 + 2.18687619531e-02 2.03206914317e-02 1.86800926235e-02 1.70389543521e-02 1.54709928045e-02 1.40283418589e-02 + 1.27424344623e-02 1.16276251073e-02 1.06856809758e-02 9.91029781221e-03 9.29162040305e-03 8.82009872524e-03 + 8.48843476768e-03 8.29158854156e-03 8.22635918544e-03 8.29158854156e-03 8.48843476768e-03 8.82009872524e-03 + 9.29162040305e-03 9.91029781221e-03 1.06856809758e-02 1.16276251073e-02 1.27424344623e-02 1.40283418589e-02 + 1.54709928045e-02 1.70389543521e-02 1.86800926235e-02 2.03206914317e-02 2.18687619531e-02 2.32217587400e-02 + 2.56657154446e-02 2.62153172241e-02 2.62153172241e-02 2.56657154446e-02 2.46187421852e-02 2.31688478126e-02 + 2.14361295219e-02 1.95479913088e-02 1.76229803621e-02 1.57591868798e-02 1.40283418589e-02 1.24755048074e-02 + 1.11228159589e-02 9.97511028176e-03 9.02578945364e-03 8.26229038338e-03 7.67065297497e-03 7.23847314555e-03 + 6.95605972443e-03 6.81664387654e-03 6.81664387654e-03 6.95605972443e-03 7.23847314555e-03 7.67065297497e-03 + 8.26229038338e-03 9.02578945364e-03 9.97511028176e-03 1.11228159589e-02 1.24755048074e-02 1.40283418589e-02 + 1.57591868798e-02 1.76229803621e-02 1.95479913088e-02 2.14361295219e-02 2.31688478126e-02 2.46187421852e-02 + 2.73972646659e-02 2.77227537368e-02 2.73972646659e-02 2.64534808200e-02 2.49827563157e-02 2.31175818882e-02 + 2.10090352784e-02 1.88049742175e-02 1.66330383744e-02 1.45906790875e-02 1.27424344623e-02 1.11228159589e-02 + 9.74245511371e-03 8.59555582378e-03 7.66717366082e-03 6.93908976898e-03 6.39361872594e-03 6.01563766373e-03 + 5.79365065764e-03 5.72047031573e-03 5.79365065764e-03 6.01563766373e-03 6.39361872594e-03 6.93908976898e-03 + 7.66717366082e-03 8.59555582378e-03 9.74245511371e-03 1.11228159589e-02 1.27424344623e-02 1.45906790875e-02 + 1.66330383744e-02 1.88049742175e-02 2.10090352784e-02 2.31175818882e-02 2.49827563157e-02 2.64534808200e-02 + 2.94586793037e-02 2.94586793037e-02 2.87187367840e-02 2.73140021666e-02 2.53797852965e-02 2.30866420056e-02 + 2.06126999880e-02 1.81196807915e-02 1.57370100687e-02 1.35553259639e-02 1.16276251073e-02 9.97511028176e-03 + 8.59555582378e-03 7.47255069610e-03 6.58362639444e-03 5.90565973456e-03 5.41768978229e-03 5.10253249618e-03 + 4.94806264494e-03 4.94806264494e-03 5.10253249618e-03 5.41768978229e-03 5.90565973456e-03 6.58362639444e-03 + 7.47255069610e-03 8.59555582378e-03 9.97511028176e-03 1.16276251073e-02 1.35553259639e-02 1.57370100687e-02 + 1.81196807915e-02 2.06126999880e-02 2.30866420056e-02 2.53797852965e-02 2.73140021666e-02 2.87187367840e-02 + 3.18414068716e-02 3.14127386696e-02 3.01717861136e-02 2.82446089484e-02 2.58139075627e-02 2.30866420056e-02 + 2.02621880335e-02 1.75083321070e-02 1.49488960464e-02 1.26620800682e-02 1.06856809758e-02 9.02578945364e-03 + 7.66717366082e-03 6.58362639444e-03 5.74602373426e-03 5.12697112440e-03 4.70304044562e-03 4.45623663297e-03 + 4.37525079151e-03 4.45623663297e-03 4.70304044562e-03 5.12697112440e-03 5.74602373426e-03 6.58362639444e-03 + 7.66717366082e-03 9.02578945364e-03 1.06856809758e-02 1.26620800682e-02 1.49488960464e-02 1.75083321070e-02 + 2.02621880335e-02 2.30866420056e-02 2.58139075627e-02 2.82446089484e-02 3.01717861136e-02 3.14127386696e-02 + 3.45282284639e-02 3.35632692529e-02 3.17358390207e-02 2.92302840650e-02 2.62778950395e-02 2.31175818882e-02 + 1.99620901041e-02 1.69767793036e-02 1.42727054437e-02 1.19105819676e-02 9.91029781221e-03 8.26229038338e-03 + 6.93908976898e-03 5.90565973456e-03 5.12697112440e-03 4.57225197605e-03 4.21692866215e-03 4.04374575730e-03 + 4.04374575730e-03 4.21692866215e-03 4.57225197605e-03 5.12697112440e-03 5.90565973456e-03 6.93908976898e-03 + 8.26229038338e-03 9.91029781221e-03 1.19105819676e-02 1.42727054437e-02 1.69767793036e-02 1.99620901041e-02 + 2.31175818882e-02 2.62778950395e-02 2.92302840650e-02 3.17358390207e-02 3.35632692529e-02 3.45282284639e-02 + 3.74634706166e-02 3.58537824974e-02 3.33624200108e-02 3.02357338101e-02 2.67502344749e-02 2.31688478126e-02 + 1.97084075068e-02 1.65234811342e-02 1.37059602390e-02 1.12951380995e-02 9.29162040305e-03 7.67065297497e-03 + 6.39361872594e-03 5.41768978229e-03 4.70304044562e-03 4.21692866215e-03 3.93522801758e-03 3.84302280796e-03 + 3.93522801758e-03 4.21692866215e-03 4.70304044562e-03 5.41768978229e-03 6.39361872594e-03 7.67065297497e-03 + 9.29162040305e-03 1.12951380995e-02 1.37059602390e-02 1.65234811342e-02 1.97084075068e-02 2.31688478126e-02 + 2.67502344749e-02 3.02357338101e-02 3.33624200108e-02 3.58537824974e-02 3.74634706166e-02 3.80204685260e-02 + 4.05199675384e-02 3.81729635435e-02 3.49654910486e-02 3.12022017908e-02 2.71955666447e-02 2.32217587400e-02 + 1.94921954522e-02 1.61434902729e-02 1.32437842255e-02 1.08088949298e-02 8.82009872524e-03 7.23847314555e-03 + 6.01563766373e-03 5.10253249618e-03 4.45623663297e-03 4.04374575730e-03 3.84302280796e-03 3.84302280796e-03 + 4.04374575730e-03 4.45623663297e-03 5.10253249618e-03 6.01563766373e-03 7.23847314555e-03 8.82009872524e-03 + 1.08088949298e-02 1.32437842255e-02 1.61434902729e-02 1.94921954522e-02 2.32217587400e-02 2.71955666447e-02 + 3.12022017908e-02 3.49654910486e-02 3.81729635435e-02 4.05199675384e-02 4.17618689283e-02 4.17618689283e-02 + 4.34838779539e-02 4.03527020822e-02 3.64263171972e-02 3.20546920774e-02 2.75721078901e-02 2.32562353108e-02 + 1.93050944183e-02 1.58329883187e-02 1.28827341282e-02 1.04468583553e-02 8.48843476768e-03 6.95605972443e-03 + 5.79365065764e-03 4.94806264494e-03 4.37525079151e-03 4.04374575730e-03 3.93522801758e-03 4.04374575730e-03 + 4.37525079151e-03 4.94806264494e-03 5.79365065764e-03 6.95605972443e-03 8.48843476768e-03 1.04468583553e-02 + 1.28827341282e-02 1.58329883187e-02 1.93050944183e-02 2.32562353108e-02 2.75721078901e-02 3.20546920774e-02 + 3.64263171972e-02 4.03527020822e-02 4.34838779539e-02 4.55081727847e-02 4.62088704848e-02 4.55081727847e-02 + 4.60731359718e-02 4.21941579647e-02 3.76190713504e-02 3.27229087590e-02 2.78466298707e-02 2.32603028496e-02 + 1.91448778653e-02 1.55924938344e-02 1.26225341258e-02 1.02064774226e-02 8.29158854156e-03 6.81664387654e-03 + 5.72047031573e-03 4.94806264494e-03 4.45623663297e-03 4.21692866215e-03 4.21692866215e-03 4.45623663297e-03 + 4.94806264494e-03 5.72047031573e-03 6.81664387654e-03 8.29158854156e-03 1.02064774226e-02 1.26225341258e-02 + 1.55924938344e-02 1.91448778653e-02 2.32603028496e-02 2.78466298707e-02 3.27229087590e-02 3.76190713504e-02 + 4.21941579647e-02 4.60731359718e-02 4.88987422193e-02 5.03893328752e-02 5.03893328752e-02 4.88987422193e-02 + 4.79989400749e-02 4.35234290368e-02 3.84534160516e-02 3.31691643222e-02 2.80098127199e-02 2.32368358951e-02 + 1.90175139009e-02 1.54267827082e-02 1.24650738064e-02 1.00865795572e-02 8.22635918544e-03 6.81664387654e-03 + 5.79365065764e-03 5.10253249618e-03 4.70304044562e-03 4.57225197605e-03 4.70304044562e-03 5.10253249618e-03 + 5.79365065764e-03 6.81664387654e-03 8.22635918544e-03 1.00865795572e-02 1.24650738064e-02 1.54267827082e-02 + 1.90175139009e-02 2.32368358951e-02 2.80098127199e-02 3.31691643222e-02 3.84534160516e-02 4.35234290368e-02 + 4.79989400749e-02 5.15101646150e-02 5.37510492057e-02 5.45211951056e-02 5.37510492057e-02 5.15101646150e-02 + 4.90700187394e-02 4.42634768270e-02 3.89160663350e-02 3.34071767353e-02 2.80812943983e-02 2.32023283361e-02 + 1.89341271390e-02 1.53419303249e-02 1.24123312979e-02 1.00865795572e-02 8.29158854156e-03 6.95605972443e-03 + 6.01563766373e-03 5.41768978229e-03 5.12697112440e-03 5.12697112440e-03 5.41768978229e-03 6.01563766373e-03 + 6.95605972443e-03 8.29158854156e-03 1.00865795572e-02 1.24123312979e-02 1.53419303249e-02 1.89341271390e-02 + 2.32023283361e-02 2.80812943983e-02 3.34071767353e-02 3.89160663350e-02 4.42634768270e-02 4.90700187394e-02 + 5.29846351657e-02 5.57363453523e-02 5.71527035674e-02 5.71527035674e-02 5.57363453523e-02 5.29846351657e-02 + 4.93048229800e-02 4.44868574481e-02 3.90848689472e-02 3.34971688966e-02 2.80994006567e-02 2.31779027969e-02 + 1.89049688962e-02 1.53419303249e-02 1.24650738064e-02 1.02064774226e-02 8.48843476768e-03 7.23847314555e-03 + 6.39361872594e-03 5.90565973456e-03 5.74602373426e-03 5.90565973456e-03 6.39361872594e-03 7.23847314555e-03 + 8.48843476768e-03 1.02064774226e-02 1.24650738064e-02 1.53419303249e-02 1.89049688962e-02 2.31779027969e-02 + 2.80994006567e-02 3.34971688966e-02 3.90848689472e-02 4.44868574481e-02 4.93048229800e-02 5.32152215954e-02 + 5.60372557288e-02 5.77208882781e-02 5.82782465337e-02 5.77208882781e-02 5.60372557288e-02 5.32152215954e-02 + 4.89738024005e-02 4.44045560444e-02 3.90976289629e-02 3.35158471123e-02 2.81005086407e-02 2.31779027969e-02 + 1.89341271390e-02 1.54267827082e-02 1.26225341258e-02 1.04468583553e-02 8.82009872524e-03 7.67065297497e-03 + 6.93908976898e-03 6.58362639444e-03 6.58362639444e-03 6.93908976898e-03 7.67065297497e-03 8.82009872524e-03 + 1.04468583553e-02 1.26225341258e-02 1.54267827082e-02 1.89341271390e-02 2.31779027969e-02 2.81005086407e-02 + 3.35158471123e-02 3.90976289629e-02 4.44045560444e-02 4.89738024005e-02 5.24797871309e-02 5.48533676650e-02 + 5.62463189889e-02 5.68740665481e-02 5.68740665481e-02 5.62463189889e-02 5.48533676650e-02 5.24797871309e-02 + 4.85080722970e-02 4.42752514752e-02 3.90842281235e-02 3.35158471123e-02 2.80994006567e-02 2.32023283361e-02 + 1.90175139009e-02 1.55924938344e-02 1.28827341282e-02 1.08088949298e-02 9.29162040305e-03 8.26229038338e-03 + 7.66717366082e-03 7.47255069610e-03 7.66717366082e-03 8.26229038338e-03 9.29162040305e-03 1.08088949298e-02 + 1.28827341282e-02 1.55924938344e-02 1.90175139009e-02 2.32023283361e-02 2.80994006567e-02 3.35158471123e-02 + 3.90842281235e-02 4.42752514752e-02 4.85080722970e-02 5.13869204668e-02 5.29210396854e-02 5.34983990182e-02 + 5.36143814352e-02 5.36149267734e-02 5.36143814352e-02 5.34983990182e-02 5.29210396854e-02 5.13869204668e-02 + 4.83002627794e-02 4.42752514752e-02 3.90976289629e-02 3.34971688966e-02 2.80812943983e-02 2.32368358951e-02 + 1.91448778653e-02 1.58329883187e-02 1.32437842255e-02 1.12951380995e-02 9.91029781221e-03 9.02578945364e-03 + 8.59555582378e-03 8.59555582378e-03 9.02578945364e-03 9.91029781221e-03 1.12951380995e-02 1.32437842255e-02 + 1.58329883187e-02 1.91448778653e-02 2.32368358951e-02 2.80812943983e-02 3.34971688966e-02 3.90976289629e-02 + 4.42752514752e-02 4.83002627794e-02 5.06194135765e-02 5.12221625406e-02 5.07010770424e-02 4.98718618187e-02 + 4.93308963719e-02 4.93308963719e-02 4.98718618187e-02 5.07010770424e-02 5.12221625406e-02 5.06194135765e-02 + 4.85080722970e-02 4.44045560444e-02 3.90848689472e-02 3.34071767353e-02 2.80098127199e-02 2.32603028496e-02 + 1.93050944183e-02 1.61434902729e-02 1.37059602390e-02 1.19105819676e-02 1.06856809758e-02 9.97511028176e-03 + 9.74245511371e-03 9.97511028176e-03 1.06856809758e-02 1.19105819676e-02 1.37059602390e-02 1.61434902729e-02 + 1.93050944183e-02 2.32603028496e-02 2.80098127199e-02 3.34071767353e-02 3.90848689472e-02 4.44045560444e-02 + 4.85080722970e-02 5.06194135765e-02 5.05555186569e-02 4.89850720157e-02 4.70389926376e-02 4.56222411881e-02 + 4.51254329663e-02 4.56222411881e-02 4.70389926376e-02 4.89850720157e-02 5.05555186569e-02 5.06194135765e-02 + 4.89738024005e-02 4.44868574481e-02 3.89160663350e-02 3.31691643222e-02 2.78466298707e-02 2.32562353108e-02 + 1.94921954522e-02 1.65234811342e-02 1.42727054437e-02 1.26620800682e-02 1.16276251073e-02 1.11228159589e-02 + 1.11228159589e-02 1.16276251073e-02 1.26620800682e-02 1.42727054437e-02 1.65234811342e-02 1.94921954522e-02 + 2.32562353108e-02 2.78466298707e-02 3.31691643222e-02 3.89160663350e-02 4.44868574481e-02 4.89738024005e-02 + 5.13869204668e-02 5.12221625406e-02 4.89850720157e-02 4.60013609401e-02 4.35588929466e-02 4.22847991283e-02 + 4.22847991283e-02 4.35588929466e-02 4.60013609401e-02 4.89850720157e-02 5.12221625406e-02 5.13869204668e-02 + 4.93048229800e-02 4.42634768270e-02 3.84534160516e-02 3.27229087590e-02 2.75721078901e-02 2.32217587400e-02 + 1.97084075068e-02 1.69767793036e-02 1.49488960464e-02 1.35553259639e-02 1.27424344623e-02 1.24755048074e-02 + 1.27424344623e-02 1.35553259639e-02 1.49488960464e-02 1.69767793036e-02 1.97084075068e-02 2.32217587400e-02 + 2.75721078901e-02 3.27229087590e-02 3.84534160516e-02 4.42634768270e-02 4.93048229800e-02 5.24797871309e-02 + 5.29210396854e-02 5.07010770424e-02 4.70389926376e-02 4.35588929466e-02 4.13123485649e-02 4.05694134160e-02 + 4.13123485649e-02 4.35588929466e-02 4.70389926376e-02 5.07010770424e-02 5.29210396854e-02 5.24797871309e-02 + 4.90700187394e-02 4.35234290368e-02 3.76190713504e-02 3.20546920774e-02 2.71955666447e-02 2.31688478126e-02 + 1.99620901041e-02 1.75083321070e-02 1.57370100687e-02 1.45906790875e-02 1.40283418589e-02 1.40283418589e-02 + 1.45906790875e-02 1.57370100687e-02 1.75083321070e-02 1.99620901041e-02 2.31688478126e-02 2.71955666447e-02 + 3.20546920774e-02 3.76190713504e-02 4.35234290368e-02 4.90700187394e-02 5.32152215954e-02 5.48533676650e-02 + 5.34983990182e-02 4.98718618187e-02 4.56222411881e-02 4.22847991283e-02 4.05694134160e-02 4.05694134160e-02 + 4.22847991283e-02 4.56222411881e-02 4.98718618187e-02 5.34983990182e-02 5.48533676650e-02 5.32152215954e-02 + 4.79989400749e-02 4.21941579647e-02 3.64263171972e-02 3.12022017908e-02 2.67502344749e-02 2.31175818882e-02 + 2.02621880335e-02 1.81196807915e-02 1.66330383744e-02 1.57591868798e-02 1.54709928045e-02 1.57591868798e-02 + 1.66330383744e-02 1.81196807915e-02 2.02621880335e-02 2.31175818882e-02 2.67502344749e-02 3.12022017908e-02 + 3.64263171972e-02 4.21941579647e-02 4.79989400749e-02 5.29846351657e-02 5.60372557288e-02 5.62463189889e-02 + 5.36143814352e-02 4.93308963719e-02 4.51254329663e-02 4.22847991283e-02 4.13123485649e-02 4.22847991283e-02 + 4.51254329663e-02 4.93308963719e-02 5.36143814352e-02 5.62463189889e-02 5.60372557288e-02 5.29846351657e-02 + 4.60731359718e-02 4.03527020822e-02 3.49654910486e-02 3.02357338101e-02 2.62778950395e-02 2.30866420056e-02 + 2.06126999880e-02 1.88049742175e-02 1.76229803621e-02 1.70389543521e-02 1.70389543521e-02 1.76229803621e-02 + 1.88049742175e-02 2.06126999880e-02 2.30866420056e-02 2.62778950395e-02 3.02357338101e-02 3.49654910486e-02 + 4.03527020822e-02 4.60731359718e-02 5.15101646150e-02 5.57363453523e-02 5.77208882781e-02 5.68740665481e-02 + 5.36149267734e-02 4.93308963719e-02 4.56222411881e-02 4.35588929466e-02 4.35588929466e-02 4.56222411881e-02 + 4.93308963719e-02 5.36149267734e-02 5.68740665481e-02 5.77208882781e-02 5.57363453523e-02 5.15101646150e-02 + 4.34838779539e-02 3.81729635435e-02 3.33624200108e-02 2.92302840650e-02 2.58139075627e-02 2.30866420056e-02 + 2.10090352784e-02 1.95479913088e-02 1.86800926235e-02 1.83921353899e-02 1.86800926235e-02 1.95479913088e-02 + 2.10090352784e-02 2.30866420056e-02 2.58139075627e-02 2.92302840650e-02 3.33624200108e-02 3.81729635435e-02 + 4.34838779539e-02 4.88987422193e-02 5.37510492057e-02 5.71527035674e-02 5.82782465337e-02 5.68740665481e-02 + 5.36143814352e-02 4.98718618187e-02 4.70389926376e-02 4.60013609401e-02 4.70389926376e-02 4.98718618187e-02 + 5.36143814352e-02 5.68740665481e-02 5.82782465337e-02 5.71527035674e-02 5.37510492057e-02 4.88987422193e-02 + 4.05199675384e-02 3.58537824974e-02 3.17358390207e-02 2.82446089484e-02 2.53797852965e-02 2.31175818882e-02 + 2.14361295219e-02 2.03206914317e-02 1.97639178277e-02 1.97639178277e-02 2.03206914317e-02 2.14361295219e-02 + 2.31175818882e-02 2.53797852965e-02 2.82446089484e-02 3.17358390207e-02 3.58537824974e-02 4.05199675384e-02 + 4.55081727847e-02 5.03893328752e-02 5.45211951056e-02 5.71527035674e-02 5.77208882781e-02 5.62463189889e-02 + 5.34983990182e-02 5.07010770424e-02 4.89850720157e-02 4.89850720157e-02 5.07010770424e-02 5.34983990182e-02 + 5.62463189889e-02 5.77208882781e-02 5.71527035674e-02 5.45211951056e-02 5.03893328752e-02 4.55081727847e-02 + 3.74634706166e-02 3.35632692529e-02 3.01717861136e-02 2.73140021666e-02 2.49827563157e-02 2.31688478126e-02 + 2.18687619531e-02 2.10847229658e-02 2.08223402545e-02 2.10847229658e-02 2.18687619531e-02 2.31688478126e-02 + 2.49827563157e-02 2.73140021666e-02 3.01717861136e-02 3.35632692529e-02 3.74634706166e-02 4.17618689283e-02 + 4.62088704848e-02 5.03893328752e-02 5.37510492057e-02 5.57363453523e-02 5.60372557288e-02 5.48533676650e-02 + 5.29210396854e-02 5.12221625406e-02 5.05555186569e-02 5.12221625406e-02 5.29210396854e-02 5.48533676650e-02 + 5.60372557288e-02 5.57363453523e-02 5.37510492057e-02 5.03893328752e-02 4.62088704848e-02 4.17618689283e-02 + 3.45282284639e-02 3.14127386696e-02 2.87187367840e-02 2.64534808200e-02 2.46187421852e-02 2.32217587400e-02 + 2.22755921268e-02 2.17964249596e-02 2.17964249596e-02 2.22755921268e-02 2.32217587400e-02 2.46187421852e-02 + 2.64534808200e-02 2.87187367840e-02 3.14127386696e-02 3.45282284639e-02 3.80204685260e-02 4.17618689283e-02 + 4.55081727847e-02 4.88987422193e-02 5.15101646150e-02 5.29846351657e-02 5.32152215954e-02 5.24797871309e-02 + 5.13869204668e-02 5.06194135765e-02 5.06194135765e-02 5.13869204668e-02 5.24797871309e-02 5.32152215954e-02 + 5.29846351657e-02 5.15101646150e-02 4.88987422193e-02 4.55081727847e-02 4.17618689283e-02 3.80204685260e-02 + 3.55932306397e-02 3.34710625414e-02 3.16041856284e-02 3.00149219248e-02 2.87439673059e-02 2.78466298707e-02 + 2.73794467347e-02 2.73794467347e-02 2.78466298707e-02 2.87439673059e-02 3.00149219248e-02 3.16041856284e-02 + 3.34710625414e-02 3.55932306397e-02 3.79563421300e-02 4.05244812822e-02 4.32002938784e-02 4.57968161948e-02 + 4.80406383964e-02 4.96193341715e-02 5.02828320119e-02 4.99825941802e-02 4.89738024005e-02 4.77793166757e-02 + 4.69885184966e-02 4.69885184966e-02 4.77793166757e-02 4.89738024005e-02 4.99825941802e-02 5.02828320119e-02 + 4.96193341715e-02 4.80406383964e-02 4.57968161948e-02 4.32002938784e-02 4.05244812822e-02 3.79563421300e-02 + 3.34710625414e-02 3.19731919657e-02 3.06330408871e-02 2.94854041377e-02 2.85879356046e-02 2.80098127199e-02 + 2.78094015925e-02 2.80098127199e-02 2.85879356046e-02 2.94854041377e-02 3.06330408871e-02 3.19731919657e-02 + 3.34710625414e-02 3.51127517762e-02 3.68889471691e-02 3.87673596218e-02 4.06654278454e-02 4.24386109393e-02 + 4.38959177953e-02 4.48486167771e-02 4.51877782102e-02 4.49623774036e-02 4.44045560444e-02 4.38595264834e-02 + 4.36365698621e-02 4.38595264834e-02 4.44045560444e-02 4.49623774036e-02 4.51877782102e-02 4.48486167771e-02 + 4.38959177953e-02 4.24386109393e-02 4.06654278454e-02 3.87673596218e-02 3.68889471691e-02 3.51127517762e-02 + 3.16041856284e-02 3.06330408871e-02 2.97391273192e-02 2.89691250092e-02 2.83925891295e-02 2.80812943983e-02 + 2.80812943983e-02 2.83925891295e-02 2.89691250092e-02 2.97391273192e-02 3.06330408871e-02 3.16041856284e-02 + 3.26341221073e-02 3.37228748044e-02 3.48695445110e-02 3.60511821341e-02 3.72078996967e-02 3.82415861113e-02 + 3.90347179512e-02 3.94908104948e-02 3.95849180057e-02 3.93968315223e-02 3.90976289629e-02 3.88830541657e-02 + 3.88830541657e-02 3.90976289629e-02 3.93968315223e-02 3.95849180057e-02 3.94908104948e-02 3.90347179512e-02 + 3.82415861113e-02 3.72078996967e-02 3.60511821341e-02 3.48695445110e-02 3.37228748044e-02 3.26341221073e-02 + 3.00149219248e-02 2.94854041377e-02 2.89691250092e-02 2.85205562719e-02 2.82105864296e-02 2.80994006567e-02 + 2.82105864296e-02 2.85205562719e-02 2.89691250092e-02 2.94854041377e-02 3.00149219248e-02 3.05340710560e-02 + 3.10465495213e-02 3.15673758761e-02 3.21049723875e-02 3.26483588385e-02 3.31615306069e-02 3.35871770820e-02 + 3.38635928392e-02 3.39533984936e-02 3.38709874542e-02 3.36893635306e-02 3.35158471123e-02 3.34454153402e-02 + 3.35158471123e-02 3.36893635306e-02 3.38709874542e-02 3.39533984936e-02 3.38635928392e-02 3.35871770820e-02 + 3.31615306069e-02 3.26483588385e-02 3.21049723875e-02 3.15673758761e-02 3.10465495213e-02 3.05340710560e-02 + 2.87439673059e-02 2.85879356046e-02 2.83925891295e-02 2.82105864296e-02 2.81005086407e-02 2.81005086407e-02 + 2.82105864296e-02 2.83925891295e-02 2.85879356046e-02 2.87439673059e-02 2.88348357920e-02 2.88661050079e-02 + 2.88631293974e-02 2.88533907006e-02 2.88533907006e-02 2.88631293974e-02 2.88661050079e-02 2.88348357920e-02 + 2.87439673059e-02 2.85879356046e-02 2.83925891295e-02 2.82105864296e-02 2.81005086407e-02 2.81005086407e-02 + 2.82105864296e-02 2.83925891295e-02 2.85879356046e-02 2.87439673059e-02 2.88348357920e-02 2.88661050079e-02 + 2.88631293974e-02 2.88533907006e-02 2.88533907006e-02 2.88631293974e-02 2.88661050079e-02 2.88348357920e-02 + 2.78466298707e-02 2.80098127199e-02 2.80812943983e-02 2.80994006567e-02 2.81005086407e-02 2.80994006567e-02 + 2.80812943983e-02 2.80098127199e-02 2.78466298707e-02 2.75721078901e-02 2.71955666447e-02 2.67502344749e-02 + 2.62778950395e-02 2.58139075627e-02 2.53797852965e-02 2.49827563157e-02 2.46187421852e-02 2.42781130820e-02 + 2.39549635512e-02 2.36566460915e-02 2.34067395586e-02 2.32378434698e-02 2.31779027969e-02 2.32378434698e-02 + 2.34067395586e-02 2.36566460915e-02 2.39549635512e-02 2.42781130820e-02 2.46187421852e-02 2.49827563157e-02 + 2.53797852965e-02 2.58139075627e-02 2.62778950395e-02 2.67502344749e-02 2.71955666447e-02 2.75721078901e-02 + 2.73794467347e-02 2.78094015925e-02 2.80812943983e-02 2.82105864296e-02 2.82105864296e-02 2.80812943983e-02 + 2.78094015925e-02 2.73794467347e-02 2.67889182249e-02 2.60582031450e-02 2.52298202509e-02 2.43576039836e-02 + 2.34923498457e-02 2.26718438342e-02 2.19185274002e-02 2.12421582644e-02 2.06439962171e-02 2.01220876747e-02 + 1.96777557044e-02 1.93203741197e-02 1.90666010177e-02 1.89341271390e-02 1.89341271390e-02 1.90666010177e-02 + 1.93203741197e-02 1.96777557044e-02 2.01220876747e-02 2.06439962171e-02 2.12421582644e-02 2.19185274002e-02 + 2.26718438342e-02 2.34923498457e-02 2.43576039836e-02 2.52298202509e-02 2.60582031450e-02 2.67889182249e-02 + 2.73794467347e-02 2.80098127199e-02 2.83925891295e-02 2.85205562719e-02 2.83925891295e-02 2.80098127199e-02 + 2.73794467347e-02 2.65227612839e-02 2.54803066383e-02 2.43103322252e-02 2.30804654510e-02 2.18557815330e-02 + 2.06884779452e-02 1.96135589165e-02 1.86504890434e-02 1.78072941675e-02 1.70848695603e-02 1.64818809732e-02 + 1.59997599900e-02 1.56449525655e-02 1.54267827082e-02 1.53530693596e-02 1.54267827082e-02 1.56449525655e-02 + 1.59997599900e-02 1.64818809732e-02 1.70848695603e-02 1.78072941675e-02 1.86504890434e-02 1.96135589165e-02 + 2.06884779452e-02 2.18557815330e-02 2.30804654510e-02 2.43103322252e-02 2.54803066383e-02 2.65227612839e-02 + 2.78466298707e-02 2.85879356046e-02 2.89691250092e-02 2.89691250092e-02 2.85879356046e-02 2.78466298707e-02 + 2.67889182249e-02 2.54803066383e-02 2.40022165572e-02 2.24420850452e-02 2.08820531014e-02 1.93892705934e-02 + 1.80109897723e-02 1.67754563001e-02 1.56960478729e-02 1.47756456624e-02 1.40109856905e-02 1.33976732300e-02 + 1.29342051284e-02 1.26225341258e-02 1.24657333634e-02 1.24657333634e-02 1.26225341258e-02 1.29342051284e-02 + 1.33976732300e-02 1.40109856905e-02 1.47756456624e-02 1.56960478729e-02 1.67754563001e-02 1.80109897723e-02 + 1.93892705934e-02 2.08820531014e-02 2.24420850452e-02 2.40022165572e-02 2.54803066383e-02 2.67889182249e-02 + 2.87439673059e-02 2.94854041377e-02 2.97391273192e-02 2.94854041377e-02 2.87439673059e-02 2.75721078901e-02 + 2.60582031450e-02 2.43103322252e-02 2.24420850452e-02 2.05587788214e-02 1.87467470027e-02 1.70678712692e-02 + 1.55601992220e-02 1.42425749040e-02 1.31198380533e-02 1.21873907787e-02 1.14361707830e-02 1.08577130860e-02 + 1.04468583553e-02 1.02011860999e-02 1.01194532806e-02 1.02011860999e-02 1.04468583553e-02 1.08577130860e-02 + 1.14361707830e-02 1.21873907787e-02 1.31198380533e-02 1.42425749040e-02 1.55601992220e-02 1.70678712692e-02 + 1.87467470027e-02 2.05587788214e-02 2.24420850452e-02 2.43103322252e-02 2.60582031450e-02 2.75721078901e-02 + 3.00149219248e-02 3.06330408871e-02 3.06330408871e-02 3.00149219248e-02 2.88348357920e-02 2.71955666447e-02 + 2.52298202509e-02 2.30804654510e-02 2.08820531014e-02 1.87467470027e-02 1.67567114426e-02 1.49636867906e-02 + 1.33939588194e-02 1.20550163598e-02 1.09414577715e-02 1.00404664762e-02 9.33741418467e-03 8.82009872524e-03 + 8.47998103933e-03 8.31144312544e-03 8.31144312544e-03 8.47998103933e-03 8.82009872524e-03 9.33741418467e-03 + 1.00404664762e-02 1.09414577715e-02 1.20550163598e-02 1.33939588194e-02 1.49636867906e-02 1.67567114426e-02 + 1.87467470027e-02 2.08820531014e-02 2.30804654510e-02 2.52298202509e-02 2.71955666447e-02 2.88348357920e-02 + 3.16041856284e-02 3.19731919657e-02 3.16041856284e-02 3.05340710560e-02 2.88661050079e-02 2.67502344749e-02 + 2.43576039836e-02 2.18557815330e-02 1.93892705934e-02 1.70678712692e-02 1.49636867906e-02 1.31152359900e-02 + 1.15351431719e-02 1.02181471415e-02 9.14830218340e-03 8.30549434438e-03 7.67065297497e-03 7.22847713667e-03 + 6.96786738821e-03 6.88181758770e-03 6.96786738821e-03 7.22847713667e-03 7.67065297497e-03 8.30549434438e-03 + 9.14830218340e-03 1.02181471415e-02 1.15351431719e-02 1.31152359900e-02 1.49636867906e-02 1.70678712692e-02 + 1.93892705934e-02 2.18557815330e-02 2.43576039836e-02 2.67502344749e-02 2.88661050079e-02 3.05340710560e-02 + 3.34710625414e-02 3.34710625414e-02 3.26341221073e-02 3.10465495213e-02 2.88631293974e-02 2.62778950395e-02 + 2.34923498457e-02 2.06884779452e-02 1.80109897723e-02 1.55601992220e-02 1.33939588194e-02 1.15351431719e-02 + 9.98127039361e-03 8.71419097250e-03 7.70870330534e-03 6.93908976898e-03 6.38291972351e-03 6.02253909249e-03 + 5.84558656512e-03 5.84558656512e-03 6.02253909249e-03 6.38291972351e-03 6.93908976898e-03 7.70870330534e-03 + 8.71419097250e-03 9.98127039361e-03 1.15351431719e-02 1.33939588194e-02 1.55601992220e-02 1.80109897723e-02 + 2.06884779452e-02 2.34923498457e-02 2.62778950395e-02 2.88631293974e-02 3.10465495213e-02 3.26341221073e-02 + 3.55932306397e-02 3.51127517762e-02 3.37228748044e-02 3.15673758761e-02 2.88533907006e-02 2.58139075627e-02 + 2.26718438342e-02 1.96135589165e-02 1.67754563001e-02 1.42425749040e-02 1.20550163598e-02 1.02181471415e-02 + 8.71419097250e-03 7.51351058269e-03 6.58362639444e-03 5.89466652251e-03 5.42174879265e-03 5.14599535674e-03 + 5.05545032098e-03 5.14599535674e-03 5.42174879265e-03 5.89466652251e-03 6.58362639444e-03 7.51351058269e-03 + 8.71419097250e-03 1.02181471415e-02 1.20550163598e-02 1.42425749040e-02 1.67754563001e-02 1.96135589165e-02 + 2.26718438342e-02 2.58139075627e-02 2.88533907006e-02 3.15673758761e-02 3.37228748044e-02 3.51127517762e-02 + 3.79563421300e-02 3.68889471691e-02 3.48695445110e-02 3.21049723875e-02 2.88533907006e-02 2.53797852965e-02 + 2.19185274002e-02 1.86504890434e-02 1.56960478729e-02 1.31198380533e-02 1.09414577715e-02 9.14830218340e-03 + 7.70870330534e-03 6.58362639444e-03 5.73495116497e-03 5.12972310883e-03 4.74176747355e-03 4.55262020357e-03 + 4.55262020357e-03 4.74176747355e-03 5.12972310883e-03 5.73495116497e-03 6.58362639444e-03 7.70870330534e-03 + 9.14830218340e-03 1.09414577715e-02 1.31198380533e-02 1.56960478729e-02 1.86504890434e-02 2.19185274002e-02 + 2.53797852965e-02 2.88533907006e-02 3.21049723875e-02 3.48695445110e-02 3.68889471691e-02 3.79563421300e-02 + 4.05244812822e-02 3.87673596218e-02 3.60511821341e-02 3.26483588385e-02 2.88631293974e-02 2.49827563157e-02 + 2.12421582644e-02 1.78072941675e-02 1.47756456624e-02 1.21873907787e-02 1.00404664762e-02 8.30549434438e-03 + 6.93908976898e-03 5.89466652251e-03 5.12972310883e-03 4.60945880297e-03 4.30805835198e-03 4.20942844716e-03 + 4.30805835198e-03 4.60945880297e-03 5.12972310883e-03 5.89466652251e-03 6.93908976898e-03 8.30549434438e-03 + 1.00404664762e-02 1.21873907787e-02 1.47756456624e-02 1.78072941675e-02 2.12421582644e-02 2.49827563157e-02 + 2.88631293974e-02 3.26483588385e-02 3.60511821341e-02 3.87673596218e-02 4.05244812822e-02 4.11328816616e-02 + 4.32002938784e-02 4.06654278454e-02 3.72078996967e-02 3.31615306069e-02 2.88661050079e-02 2.46187421852e-02 + 2.06439962171e-02 1.70848695603e-02 1.40109856905e-02 1.14361707830e-02 9.33741418467e-03 7.67065297497e-03 + 6.38291972351e-03 5.42174879265e-03 4.74176747355e-03 4.30805835198e-03 4.09713024865e-03 4.09713024865e-03 + 4.30805835198e-03 4.74176747355e-03 5.42174879265e-03 6.38291972351e-03 7.67065297497e-03 9.33741418467e-03 + 1.14361707830e-02 1.40109856905e-02 1.70848695603e-02 2.06439962171e-02 2.46187421852e-02 2.88661050079e-02 + 3.31615306069e-02 3.72078996967e-02 4.06654278454e-02 4.32002938784e-02 4.45431970579e-02 4.45431970579e-02 + 4.57968161948e-02 4.24386109393e-02 3.82415861113e-02 3.35871770820e-02 2.88348357920e-02 2.42781130820e-02 + 2.01220876747e-02 1.64818809732e-02 1.33976732300e-02 1.08577130860e-02 8.82009872524e-03 7.22847713667e-03 + 6.02253909249e-03 5.14599535674e-03 4.55262020357e-03 4.20942844716e-03 4.09713024865e-03 4.20942844716e-03 + 4.55262020357e-03 5.14599535674e-03 6.02253909249e-03 7.22847713667e-03 8.82009872524e-03 1.08577130860e-02 + 1.33976732300e-02 1.64818809732e-02 2.01220876747e-02 2.42781130820e-02 2.88348357920e-02 3.35871770820e-02 + 3.82415861113e-02 4.24386109393e-02 4.57968161948e-02 4.79731106469e-02 4.87273692032e-02 4.79731106469e-02 + 4.80406383964e-02 4.38959177953e-02 3.90347179512e-02 3.38635928392e-02 2.87439673059e-02 2.39549635512e-02 + 1.96777557044e-02 1.59997599900e-02 1.29342051284e-02 1.04468583553e-02 8.47998103933e-03 6.96786738821e-03 + 5.84558656512e-03 5.05545032098e-03 4.55262020357e-03 4.30805835198e-03 4.30805835198e-03 4.55262020357e-03 + 5.05545032098e-03 5.84558656512e-03 6.96786738821e-03 8.47998103933e-03 1.04468583553e-02 1.29342051284e-02 + 1.59997599900e-02 1.96777557044e-02 2.39549635512e-02 2.87439673059e-02 3.38635928392e-02 3.90347179512e-02 + 4.38959177953e-02 4.80406383964e-02 5.10737783335e-02 5.26787408684e-02 5.26787408684e-02 5.10737783335e-02 + 4.96193341715e-02 4.48486167771e-02 3.94908104948e-02 3.39533984936e-02 2.85879356046e-02 2.36566460915e-02 + 1.93203741197e-02 1.56449525655e-02 1.26225341258e-02 1.02011860999e-02 8.31144312544e-03 6.88181758770e-03 + 5.84558656512e-03 5.14599535674e-03 4.74176747355e-03 4.60945880297e-03 4.74176747355e-03 5.14599535674e-03 + 5.84558656512e-03 6.88181758770e-03 8.31144312544e-03 1.02011860999e-02 1.26225341258e-02 1.56449525655e-02 + 1.93203741197e-02 2.36566460915e-02 2.85879356046e-02 3.39533984936e-02 3.94908104948e-02 4.48486167771e-02 + 4.96193341715e-02 5.33923081840e-02 5.58153453540e-02 5.66509609539e-02 5.58153453540e-02 5.33923081840e-02 + 5.02828320119e-02 4.51877782102e-02 3.95849180057e-02 3.38709874542e-02 2.83925891295e-02 2.34067395586e-02 + 1.90666010177e-02 1.54267827082e-02 1.24657333634e-02 1.01194532806e-02 8.31144312544e-03 6.96786738821e-03 + 6.02253909249e-03 5.42174879265e-03 5.12972310883e-03 5.12972310883e-03 5.42174879265e-03 6.02253909249e-03 + 6.96786738821e-03 8.31144312544e-03 1.01194532806e-02 1.24657333634e-02 1.54267827082e-02 1.90666010177e-02 + 2.34067395586e-02 2.83925891295e-02 3.38709874542e-02 3.95849180057e-02 4.51877782102e-02 5.02828320119e-02 + 5.44829894560e-02 5.74676014035e-02 5.90154969276e-02 5.90154969276e-02 5.74676014035e-02 5.44829894560e-02 + 4.99825941802e-02 4.49623774036e-02 3.93968315223e-02 3.36893635306e-02 2.82105864296e-02 2.32378434698e-02 + 1.89341271390e-02 1.53530693596e-02 1.24657333634e-02 1.02011860999e-02 8.47998103933e-03 7.22847713667e-03 + 6.38291972351e-03 5.89466652251e-03 5.73495116497e-03 5.89466652251e-03 6.38291972351e-03 7.22847713667e-03 + 8.47998103933e-03 1.02011860999e-02 1.24657333634e-02 1.53530693596e-02 1.89341271390e-02 2.32378434698e-02 + 2.82105864296e-02 3.36893635306e-02 3.93968315223e-02 4.49623774036e-02 4.99825941802e-02 5.41129564364e-02 + 5.71366804742e-02 5.89627863020e-02 5.95715936141e-02 5.89627863020e-02 5.71366804742e-02 5.41129564364e-02 + 4.89738024005e-02 4.44045560444e-02 3.90976289629e-02 3.35158471123e-02 2.81005086407e-02 2.31779027969e-02 + 1.89341271390e-02 1.54267827082e-02 1.26225341258e-02 1.04468583553e-02 8.82009872524e-03 7.67065297497e-03 + 6.93908976898e-03 6.58362639444e-03 6.58362639444e-03 6.93908976898e-03 7.67065297497e-03 8.82009872524e-03 + 1.04468583553e-02 1.26225341258e-02 1.54267827082e-02 1.89341271390e-02 2.31779027969e-02 2.81005086407e-02 + 3.35158471123e-02 3.90976289629e-02 4.44045560444e-02 4.89738024005e-02 5.24797871309e-02 5.48533676650e-02 + 5.62463189889e-02 5.68740665481e-02 5.68740665481e-02 5.62463189889e-02 5.48533676650e-02 5.24797871309e-02 + 4.77793166757e-02 4.38595264834e-02 3.88830541657e-02 3.34454153402e-02 2.81005086407e-02 2.32378434698e-02 + 1.90666010177e-02 1.56449525655e-02 1.29342051284e-02 1.08577130860e-02 9.33741418467e-03 8.30549434438e-03 + 7.70870330534e-03 7.51351058269e-03 7.70870330534e-03 8.30549434438e-03 9.33741418467e-03 1.08577130860e-02 + 1.29342051284e-02 1.56449525655e-02 1.90666010177e-02 2.32378434698e-02 2.81005086407e-02 3.34454153402e-02 + 3.88830541657e-02 4.38595264834e-02 4.77793166757e-02 5.02620593726e-02 5.13723037105e-02 5.15765048907e-02 + 5.14403532045e-02 5.13523903781e-02 5.14403532045e-02 5.15765048907e-02 5.13723037105e-02 5.02620593726e-02 + 4.69885184966e-02 4.36365698621e-02 3.88830541657e-02 3.35158471123e-02 2.82105864296e-02 2.34067395586e-02 + 1.93203741197e-02 1.59997599900e-02 1.33976732300e-02 1.14361707830e-02 1.00404664762e-02 9.14830218340e-03 + 8.71419097250e-03 8.71419097250e-03 9.14830218340e-03 1.00404664762e-02 1.14361707830e-02 1.33976732300e-02 + 1.59997599900e-02 1.93203741197e-02 2.34067395586e-02 2.82105864296e-02 3.35158471123e-02 3.88830541657e-02 + 4.36365698621e-02 4.69885184966e-02 4.83941231678e-02 4.79609401864e-02 4.64751950426e-02 4.49279278957e-02 + 4.40123223759e-02 4.40123223759e-02 4.49279278957e-02 4.64751950426e-02 4.79609401864e-02 4.83941231678e-02 + 4.69885184966e-02 4.38595264834e-02 3.90976289629e-02 3.36893635306e-02 2.83925891295e-02 2.36566460915e-02 + 1.96777557044e-02 1.64818809732e-02 1.40109856905e-02 1.21873907787e-02 1.09414577715e-02 1.02181471415e-02 + 9.98127039361e-03 1.02181471415e-02 1.09414577715e-02 1.21873907787e-02 1.40109856905e-02 1.64818809732e-02 + 1.96777557044e-02 2.36566460915e-02 2.83925891295e-02 3.36893635306e-02 3.90976289629e-02 4.38595264834e-02 + 4.69885184966e-02 4.76689314688e-02 4.58777097769e-02 4.26203265537e-02 3.93541671489e-02 3.71417160544e-02 + 3.63849623957e-02 3.71417160544e-02 3.93541671489e-02 4.26203265537e-02 4.58777097769e-02 4.76689314688e-02 + 4.77793166757e-02 4.44045560444e-02 3.93968315223e-02 3.38709874542e-02 2.85879356046e-02 2.39549635512e-02 + 2.01220876747e-02 1.70848695603e-02 1.47756456624e-02 1.31198380533e-02 1.20550163598e-02 1.15351431719e-02 + 1.15351431719e-02 1.20550163598e-02 1.31198380533e-02 1.47756456624e-02 1.70848695603e-02 2.01220876747e-02 + 2.39549635512e-02 2.85879356046e-02 3.38709874542e-02 3.93968315223e-02 4.44045560444e-02 4.77793166757e-02 + 4.83941231678e-02 4.58777097769e-02 4.11986868029e-02 3.62214481565e-02 3.25101129901e-02 3.06594619284e-02 + 3.06594619284e-02 3.25101129901e-02 3.62214481565e-02 4.11986868029e-02 4.58777097769e-02 4.83941231678e-02 + 4.89738024005e-02 4.49623774036e-02 3.95849180057e-02 3.39533984936e-02 2.87439673059e-02 2.42781130820e-02 + 2.06439962171e-02 1.78072941675e-02 1.56960478729e-02 1.42425749040e-02 1.33939588194e-02 1.31152359900e-02 + 1.33939588194e-02 1.42425749040e-02 1.56960478729e-02 1.78072941675e-02 2.06439962171e-02 2.42781130820e-02 + 2.87439673059e-02 3.39533984936e-02 3.95849180057e-02 4.49623774036e-02 4.89738024005e-02 5.02620593726e-02 + 4.79609401864e-02 4.26203265537e-02 3.62214481565e-02 3.09103717113e-02 2.77489957459e-02 2.67478820537e-02 + 2.77489957459e-02 3.09103717113e-02 3.62214481565e-02 4.26203265537e-02 4.79609401864e-02 5.02620593726e-02 + 4.99825941802e-02 4.51877782102e-02 3.94908104948e-02 3.38635928392e-02 2.88348357920e-02 2.46187421852e-02 + 2.12421582644e-02 1.86504890434e-02 1.67754563001e-02 1.55601992220e-02 1.49636867906e-02 1.49636867906e-02 + 1.55601992220e-02 1.67754563001e-02 1.86504890434e-02 2.12421582644e-02 2.46187421852e-02 2.88348357920e-02 + 3.38635928392e-02 3.94908104948e-02 4.51877782102e-02 4.99825941802e-02 5.24797871309e-02 5.13723037105e-02 + 4.64751950426e-02 3.93541671489e-02 3.25101129901e-02 2.77489957459e-02 2.54935088837e-02 2.54935088837e-02 + 2.77489957459e-02 3.25101129901e-02 3.93541671489e-02 4.64751950426e-02 5.13723037105e-02 5.24797871309e-02 + 5.02828320119e-02 4.48486167771e-02 3.90347179512e-02 3.35871770820e-02 2.88661050079e-02 2.49827563157e-02 + 2.19185274002e-02 1.96135589165e-02 1.80109897723e-02 1.70678712692e-02 1.67567114426e-02 1.70678712692e-02 + 1.80109897723e-02 1.96135589165e-02 2.19185274002e-02 2.49827563157e-02 2.88661050079e-02 3.35871770820e-02 + 3.90347179512e-02 4.48486167771e-02 5.02828320119e-02 5.41129564364e-02 5.48533676650e-02 5.15765048907e-02 + 4.49279278957e-02 3.71417160544e-02 3.06594619284e-02 2.67478820537e-02 2.54935088837e-02 2.67478820537e-02 + 3.06594619284e-02 3.71417160544e-02 4.49279278957e-02 5.15765048907e-02 5.48533676650e-02 5.41129564364e-02 + 4.96193341715e-02 4.38959177953e-02 3.82415861113e-02 3.31615306069e-02 2.88631293974e-02 2.53797852965e-02 + 2.26718438342e-02 2.06884779452e-02 1.93892705934e-02 1.87467470027e-02 1.87467470027e-02 1.93892705934e-02 + 2.06884779452e-02 2.26718438342e-02 2.53797852965e-02 2.88631293974e-02 3.31615306069e-02 3.82415861113e-02 + 4.38959177953e-02 4.96193341715e-02 5.44829894560e-02 5.71366804742e-02 5.62463189889e-02 5.14403532045e-02 + 4.40123223759e-02 3.63849623957e-02 3.06594619284e-02 2.77489957459e-02 2.77489957459e-02 3.06594619284e-02 + 3.63849623957e-02 4.40123223759e-02 5.14403532045e-02 5.62463189889e-02 5.71366804742e-02 5.44829894560e-02 + 4.80406383964e-02 4.24386109393e-02 3.72078996967e-02 3.26483588385e-02 2.88533907006e-02 2.58139075627e-02 + 2.34923498457e-02 2.18557815330e-02 2.08820531014e-02 2.05587788214e-02 2.08820531014e-02 2.18557815330e-02 + 2.34923498457e-02 2.58139075627e-02 2.88533907006e-02 3.26483588385e-02 3.72078996967e-02 4.24386109393e-02 + 4.80406383964e-02 5.33923081840e-02 5.74676014035e-02 5.89627863020e-02 5.68740665481e-02 5.13523903781e-02 + 4.40123223759e-02 3.71417160544e-02 3.25101129901e-02 3.09103717113e-02 3.25101129901e-02 3.71417160544e-02 + 4.40123223759e-02 5.13523903781e-02 5.68740665481e-02 5.89627863020e-02 5.74676014035e-02 5.33923081840e-02 + 4.57968161948e-02 4.06654278454e-02 3.60511821341e-02 3.21049723875e-02 2.88533907006e-02 2.62778950395e-02 + 2.43576039836e-02 2.30804654510e-02 2.24420850452e-02 2.24420850452e-02 2.30804654510e-02 2.43576039836e-02 + 2.62778950395e-02 2.88533907006e-02 3.21049723875e-02 3.60511821341e-02 4.06654278454e-02 4.57968161948e-02 + 5.10737783335e-02 5.58153453540e-02 5.90154969276e-02 5.95715936141e-02 5.68740665481e-02 5.14403532045e-02 + 4.49279278957e-02 3.93541671489e-02 3.62214481565e-02 3.62214481565e-02 3.93541671489e-02 4.49279278957e-02 + 5.14403532045e-02 5.68740665481e-02 5.95715936141e-02 5.90154969276e-02 5.58153453540e-02 5.10737783335e-02 + 4.32002938784e-02 3.87673596218e-02 3.48695445110e-02 3.15673758761e-02 2.88631293974e-02 2.67502344749e-02 + 2.52298202509e-02 2.43103322252e-02 2.40022165572e-02 2.43103322252e-02 2.52298202509e-02 2.67502344749e-02 + 2.88631293974e-02 3.15673758761e-02 3.48695445110e-02 3.87673596218e-02 4.32002938784e-02 4.79731106469e-02 + 5.26787408684e-02 5.66509609539e-02 5.90154969276e-02 5.89627863020e-02 5.62463189889e-02 5.15765048907e-02 + 4.64751950426e-02 4.26203265537e-02 4.11986868029e-02 4.26203265537e-02 4.64751950426e-02 5.15765048907e-02 + 5.62463189889e-02 5.89627863020e-02 5.90154969276e-02 5.66509609539e-02 5.26787408684e-02 4.79731106469e-02 + 4.05244812822e-02 3.68889471691e-02 3.37228748044e-02 3.10465495213e-02 2.88661050079e-02 2.71955666447e-02 + 2.60582031450e-02 2.54803066383e-02 2.54803066383e-02 2.60582031450e-02 2.71955666447e-02 2.88661050079e-02 + 3.10465495213e-02 3.37228748044e-02 3.68889471691e-02 4.05244812822e-02 4.45431970579e-02 4.87273692032e-02 + 5.26787408684e-02 5.58153453540e-02 5.74676014035e-02 5.71366804742e-02 5.48533676650e-02 5.13723037105e-02 + 4.79609401864e-02 4.58777097769e-02 4.58777097769e-02 4.79609401864e-02 5.13723037105e-02 5.48533676650e-02 + 5.71366804742e-02 5.74676014035e-02 5.58153453540e-02 5.26787408684e-02 4.87273692032e-02 4.45431970579e-02 + 3.79563421300e-02 3.51127517762e-02 3.26341221073e-02 3.05340710560e-02 2.88348357920e-02 2.75721078901e-02 + 2.67889182249e-02 2.65227612839e-02 2.67889182249e-02 2.75721078901e-02 2.88348357920e-02 3.05340710560e-02 + 3.26341221073e-02 3.51127517762e-02 3.79563421300e-02 4.11328816616e-02 4.45431970579e-02 4.79731106469e-02 + 5.10737783335e-02 5.33923081840e-02 5.44829894560e-02 5.41129564364e-02 5.24797871309e-02 5.02620593726e-02 + 4.83941231678e-02 4.76689314688e-02 4.83941231678e-02 5.02620593726e-02 5.24797871309e-02 5.41129564364e-02 + 5.44829894560e-02 5.33923081840e-02 5.10737783335e-02 4.79731106469e-02 4.45431970579e-02 4.11328816616e-02 + 4.02453701311e-02 3.83718132369e-02 3.66568505349e-02 3.51532871168e-02 3.39533984936e-02 3.31691643222e-02 + 3.28952522339e-02 3.31691643222e-02 3.39533984936e-02 3.51532871168e-02 3.66568505349e-02 3.83718132369e-02 + 4.02453701311e-02 4.22610610741e-02 4.44094609233e-02 4.66403070569e-02 4.88190878681e-02 5.07121410456e-02 + 5.20147259753e-02 5.24339557043e-02 5.18281863755e-02 5.03535465114e-02 4.85080722970e-02 4.69885184966e-02 + 4.64020316983e-02 4.69885184966e-02 4.85080722970e-02 5.03535465114e-02 5.18281863755e-02 5.24339557043e-02 + 5.20147259753e-02 5.07121410456e-02 4.88190878681e-02 4.66403070569e-02 4.44094609233e-02 4.22610610741e-02 + 3.83718132369e-02 3.70689589239e-02 3.58243136049e-02 3.47182328687e-02 3.38709874542e-02 3.34071767353e-02 + 3.34071767353e-02 3.38709874542e-02 3.47182328687e-02 3.58243136049e-02 3.70689589239e-02 3.83718132369e-02 + 3.97029159910e-02 4.10670403681e-02 4.24686468881e-02 4.38725463784e-02 4.51788789706e-02 4.62258246981e-02 + 4.68264624901e-02 4.68401774785e-02 4.62623331670e-02 4.52857661696e-02 4.42752514752e-02 4.36365698621e-02 + 4.36365698621e-02 4.42752514752e-02 4.52857661696e-02 4.62623331670e-02 4.68401774785e-02 4.68264624901e-02 + 4.62258246981e-02 4.51788789706e-02 4.38725463784e-02 4.24686468881e-02 4.10670403681e-02 3.97029159910e-02 + 3.66568505349e-02 3.58243136049e-02 3.49773595797e-02 3.42208946471e-02 3.36893635306e-02 3.34971688966e-02 + 3.36893635306e-02 3.42208946471e-02 3.49773595797e-02 3.58243136049e-02 3.66568505349e-02 3.74259862301e-02 + 3.81345549630e-02 3.88104397494e-02 3.94725484932e-02 4.01041807768e-02 4.06430475235e-02 4.09927131873e-02 + 4.10571769449e-02 4.07924714489e-02 4.02540981079e-02 3.96081166256e-02 3.90842281235e-02 3.88830541657e-02 + 3.90842281235e-02 3.96081166256e-02 4.02540981079e-02 4.07924714489e-02 4.10571769449e-02 4.09927131873e-02 + 4.06430475235e-02 4.01041807768e-02 3.94725484932e-02 3.88104397494e-02 3.81345549630e-02 3.74259862301e-02 + 3.51532871168e-02 3.47182328687e-02 3.42208946471e-02 3.37780927799e-02 3.35158471123e-02 3.35158471123e-02 + 3.37780927799e-02 3.42208946471e-02 3.47182328687e-02 3.51532871168e-02 3.54595415232e-02 3.56312088557e-02 + 3.57044700685e-02 3.57259716101e-02 3.57259716101e-02 3.57044700685e-02 3.56312088557e-02 3.54595415232e-02 + 3.51532871168e-02 3.47182328687e-02 3.42208946471e-02 3.37780927799e-02 3.35158471123e-02 3.35158471123e-02 + 3.37780927799e-02 3.42208946471e-02 3.47182328687e-02 3.51532871168e-02 3.54595415232e-02 3.56312088557e-02 + 3.57044700685e-02 3.57259716101e-02 3.57259716101e-02 3.57044700685e-02 3.56312088557e-02 3.54595415232e-02 + 3.39533984936e-02 3.38709874542e-02 3.36893635306e-02 3.35158471123e-02 3.34454153402e-02 3.35158471123e-02 + 3.36893635306e-02 3.38709874542e-02 3.39533984936e-02 3.38635928392e-02 3.35871770820e-02 3.31615306069e-02 + 3.26483588385e-02 3.21049723875e-02 3.15673758761e-02 3.10465495213e-02 3.05340710560e-02 3.00149219248e-02 + 2.94854041377e-02 2.89691250092e-02 2.85205562719e-02 2.82105864296e-02 2.80994006567e-02 2.82105864296e-02 + 2.85205562719e-02 2.89691250092e-02 2.94854041377e-02 3.00149219248e-02 3.05340710560e-02 3.10465495213e-02 + 3.15673758761e-02 3.21049723875e-02 3.26483588385e-02 3.31615306069e-02 3.35871770820e-02 3.38635928392e-02 + 3.31691643222e-02 3.34071767353e-02 3.34971688966e-02 3.35158471123e-02 3.35158471123e-02 3.34971688966e-02 + 3.34071767353e-02 3.31691643222e-02 3.27229087590e-02 3.20546920774e-02 3.12022017908e-02 3.02357338101e-02 + 2.92302840650e-02 2.82446089484e-02 2.73140021666e-02 2.64534808200e-02 2.56657154446e-02 2.49511167951e-02 + 2.43184216158e-02 2.37914166767e-02 2.34067395586e-02 2.32023283361e-02 2.32023283361e-02 2.34067395586e-02 + 2.37914166767e-02 2.43184216158e-02 2.49511167951e-02 2.56657154446e-02 2.64534808200e-02 2.73140021666e-02 + 2.82446089484e-02 2.92302840650e-02 3.02357338101e-02 3.12022017908e-02 3.20546920774e-02 3.27229087590e-02 + 3.28952522339e-02 3.34071767353e-02 3.36893635306e-02 3.37780927799e-02 3.36893635306e-02 3.34071767353e-02 + 3.28952522339e-02 3.21243272248e-02 3.10978190541e-02 2.98615217076e-02 2.84935612207e-02 2.70818268649e-02 + 2.57019293917e-02 2.44059448105e-02 2.32231030162e-02 2.21666114252e-02 2.12413612776e-02 2.04512222766e-02 + 1.98052910067e-02 1.93203741197e-02 1.90175139009e-02 1.89142861556e-02 1.90175139009e-02 1.93203741197e-02 + 1.98052910067e-02 2.04512222766e-02 2.12413612776e-02 2.21666114252e-02 2.32231030162e-02 2.44059448105e-02 + 2.57019293917e-02 2.70818268649e-02 2.84935612207e-02 2.98615217076e-02 3.10978190541e-02 3.21243272248e-02 + 3.31691643222e-02 3.38709874542e-02 3.42208946471e-02 3.42208946471e-02 3.38709874542e-02 3.31691643222e-02 + 3.21243272248e-02 3.07715106065e-02 2.91781605866e-02 2.74372089612e-02 2.56499234494e-02 2.39063871143e-02 + 2.22726314479e-02 2.07887392229e-02 1.94746684497e-02 1.83376793613e-02 1.73786828448e-02 1.65980023724e-02 + 1.59997599900e-02 1.55924938344e-02 1.53857855201e-02 1.53857855201e-02 1.55924938344e-02 1.59997599900e-02 + 1.65980023724e-02 1.73786828448e-02 1.83376793613e-02 1.94746684497e-02 2.07887392229e-02 2.22726314479e-02 + 2.39063871143e-02 2.56499234494e-02 2.74372089612e-02 2.91781605866e-02 3.07715106065e-02 3.21243272248e-02 + 3.39533984936e-02 3.47182328687e-02 3.49773595797e-02 3.47182328687e-02 3.39533984936e-02 3.27229087590e-02 + 3.10978190541e-02 2.91781605866e-02 2.70827915169e-02 2.49333108373e-02 2.28368095394e-02 2.08735527936e-02 + 1.90940368490e-02 1.75241772421e-02 1.61729889157e-02 1.50389831834e-02 1.41157952825e-02 1.33976732300e-02 + 1.28827341282e-02 1.25723726562e-02 1.24686371753e-02 1.25723726562e-02 1.28827341282e-02 1.33976732300e-02 + 1.41157952825e-02 1.50389831834e-02 1.61729889157e-02 1.75241772421e-02 1.90940368490e-02 2.08735527936e-02 + 2.28368095394e-02 2.49333108373e-02 2.70827915169e-02 2.91781605866e-02 3.10978190541e-02 3.27229087590e-02 + 3.51532871168e-02 3.58243136049e-02 3.58243136049e-02 3.51532871168e-02 3.38635928392e-02 3.20546920774e-02 + 2.98615217076e-02 2.74372089612e-02 2.49333108373e-02 2.24815496090e-02 2.01812628043e-02 1.80960146721e-02 + 1.62588522549e-02 1.46810426016e-02 1.33594815778e-02 1.22825573408e-02 1.14361707830e-02 1.08088949298e-02 + 1.03937663652e-02 1.01870819285e-02 1.01870819285e-02 1.03937663652e-02 1.08088949298e-02 1.14361707830e-02 + 1.22825573408e-02 1.33594815778e-02 1.46810426016e-02 1.62588522549e-02 1.80960146721e-02 2.01812628043e-02 + 2.24815496090e-02 2.49333108373e-02 2.74372089612e-02 2.98615217076e-02 3.20546920774e-02 3.38635928392e-02 + 3.66568505349e-02 3.70689589239e-02 3.66568505349e-02 3.54595415232e-02 3.35871770820e-02 3.12022017908e-02 + 2.84935612207e-02 2.56499234494e-02 2.28368095394e-02 2.01812628043e-02 1.77666865554e-02 1.56375665721e-02 + 1.38094745262e-02 1.22786655737e-02 1.10293847869e-02 1.00404664762e-02 9.29162040305e-03 8.76725594498e-03 + 8.45686847188e-03 8.35413904759e-03 8.45686847188e-03 8.76725594498e-03 9.29162040305e-03 1.00404664762e-02 + 1.10293847869e-02 1.22786655737e-02 1.38094745262e-02 1.56375665721e-02 1.77666865554e-02 2.01812628043e-02 + 2.28368095394e-02 2.56499234494e-02 2.84935612207e-02 3.12022017908e-02 3.35871770820e-02 3.54595415232e-02 + 3.83718132369e-02 3.83718132369e-02 3.74259862301e-02 3.56312088557e-02 3.31615306069e-02 3.02357338101e-02 + 2.70818268649e-02 2.39063871143e-02 2.08735527936e-02 1.80960146721e-02 1.56375665721e-02 1.35231772103e-02 + 1.17508350709e-02 1.03016601350e-02 9.14830218340e-03 8.26229038338e-03 7.61927184895e-03 7.20097316500e-03 + 6.99504538611e-03 6.99504538611e-03 7.20097316500e-03 7.61927184895e-03 8.26229038338e-03 9.14830218340e-03 + 1.03016601350e-02 1.17508350709e-02 1.35231772103e-02 1.56375665721e-02 1.80960146721e-02 2.08735527936e-02 + 2.39063871143e-02 2.70818268649e-02 3.02357338101e-02 3.31615306069e-02 3.56312088557e-02 3.74259862301e-02 + 4.02453701311e-02 3.97029159910e-02 3.81345549630e-02 3.57044700685e-02 3.26483588385e-02 2.92302840650e-02 + 2.57019293917e-02 2.22726314479e-02 1.90940368490e-02 1.62588522549e-02 1.38094745262e-02 1.17508350709e-02 + 1.00633149755e-02 8.71419097250e-03 7.66717366082e-03 6.88914005847e-03 6.35335851926e-03 6.04016501968e-03 + 5.93719631865e-03 6.04016501968e-03 6.35335851926e-03 6.88914005847e-03 7.66717366082e-03 8.71419097250e-03 + 1.00633149755e-02 1.17508350709e-02 1.38094745262e-02 1.62588522549e-02 1.90940368490e-02 2.22726314479e-02 + 2.57019293917e-02 2.92302840650e-02 3.26483588385e-02 3.57044700685e-02 3.81345549630e-02 3.97029159910e-02 + 4.22610610741e-02 4.10670403681e-02 3.88104397494e-02 3.57259716101e-02 3.21049723875e-02 2.82446089484e-02 + 2.44059448105e-02 2.07887392229e-02 1.75241772421e-02 1.46810426016e-02 1.22786655737e-02 1.03016601350e-02 + 8.71419097250e-03 7.47255069610e-03 6.53448601861e-03 5.86418256271e-03 5.43377044817e-03 5.22371135458e-03 + 5.22371135458e-03 5.43377044817e-03 5.86418256271e-03 6.53448601861e-03 7.47255069610e-03 8.71419097250e-03 + 1.03016601350e-02 1.22786655737e-02 1.46810426016e-02 1.75241772421e-02 2.07887392229e-02 2.44059448105e-02 + 2.82446089484e-02 3.21049723875e-02 3.57259716101e-02 3.88104397494e-02 4.10670403681e-02 4.22610610741e-02 + 4.44094609233e-02 4.24686468881e-02 3.94725484932e-02 3.57259716101e-02 3.15673758761e-02 2.73140021666e-02 + 2.32231030162e-02 1.94746684497e-02 1.61729889157e-02 1.33594815778e-02 1.10293847869e-02 9.14830218340e-03 + 7.66717366082e-03 6.53448601861e-03 5.70420021497e-03 5.13913617973e-03 4.81172327806e-03 4.70458873539e-03 + 4.81172327806e-03 5.13913617973e-03 5.70420021497e-03 6.53448601861e-03 7.66717366082e-03 9.14830218340e-03 + 1.10293847869e-02 1.33594815778e-02 1.61729889157e-02 1.94746684497e-02 2.32231030162e-02 2.73140021666e-02 + 3.15673758761e-02 3.57259716101e-02 3.94725484932e-02 4.24686468881e-02 4.44094609233e-02 4.50819394473e-02 + 4.66403070569e-02 4.38725463784e-02 4.01041807768e-02 3.57044700685e-02 3.10465495213e-02 2.64534808200e-02 + 2.21666114252e-02 1.83376793613e-02 1.50389831834e-02 1.22825573408e-02 1.00404664762e-02 8.26229038338e-03 + 6.88914005847e-03 5.86418256271e-03 5.13913617973e-03 4.67692793169e-03 4.45230019628e-03 4.45230019628e-03 + 4.67692793169e-03 5.13913617973e-03 5.86418256271e-03 6.88914005847e-03 8.26229038338e-03 1.00404664762e-02 + 1.22825573408e-02 1.50389831834e-02 1.83376793613e-02 2.21666114252e-02 2.64534808200e-02 3.10465495213e-02 + 3.57044700685e-02 4.01041807768e-02 4.38725463784e-02 4.66403070569e-02 4.81082332430e-02 4.81082332430e-02 + 4.88190878681e-02 4.51788789706e-02 4.06430475235e-02 3.56312088557e-02 3.05340710560e-02 2.56657154446e-02 + 2.12413612776e-02 1.73786828448e-02 1.41157952825e-02 1.14361707830e-02 9.29162040305e-03 7.61927184895e-03 + 6.35335851926e-03 5.43377044817e-03 4.81172327806e-03 4.45230019628e-03 4.33477840900e-03 4.45230019628e-03 + 4.81172327806e-03 5.43377044817e-03 6.35335851926e-03 7.61927184895e-03 9.29162040305e-03 1.14361707830e-02 + 1.41157952825e-02 1.73786828448e-02 2.12413612776e-02 2.56657154446e-02 3.05340710560e-02 3.56312088557e-02 + 4.06430475235e-02 4.51788789706e-02 4.88190878681e-02 5.11831265828e-02 5.20033431247e-02 5.11831265828e-02 + 5.07121410456e-02 4.62258246981e-02 4.09927131873e-02 3.54595415232e-02 3.00149219248e-02 2.49511167951e-02 + 2.04512222766e-02 1.65980023724e-02 1.33976732300e-02 1.08088949298e-02 8.76725594498e-03 7.20097316500e-03 + 6.04016501968e-03 5.22371135458e-03 4.70458873539e-03 4.45230019628e-03 4.45230019628e-03 4.70458873539e-03 + 5.22371135458e-03 6.04016501968e-03 7.20097316500e-03 8.76725594498e-03 1.08088949298e-02 1.33976732300e-02 + 1.65980023724e-02 2.04512222766e-02 2.49511167951e-02 3.00149219248e-02 3.54595415232e-02 4.09927131873e-02 + 4.62258246981e-02 5.07121410456e-02 5.40097122002e-02 5.57595749637e-02 5.57595749637e-02 5.40097122002e-02 + 5.20147259753e-02 4.68264624901e-02 4.10571769449e-02 3.51532871168e-02 2.94854041377e-02 2.43184216158e-02 + 1.98052910067e-02 1.59997599900e-02 1.28827341282e-02 1.03937663652e-02 8.45686847188e-03 6.99504538611e-03 + 5.93719631865e-03 5.22371135458e-03 4.81172327806e-03 4.67692793169e-03 4.81172327806e-03 5.22371135458e-03 + 5.93719631865e-03 6.99504538611e-03 8.45686847188e-03 1.03937663652e-02 1.28827341282e-02 1.59997599900e-02 + 1.98052910067e-02 2.43184216158e-02 2.94854041377e-02 3.51532871168e-02 4.10571769449e-02 4.68264624901e-02 + 5.20147259753e-02 5.61547897924e-02 5.88318176265e-02 5.97584596222e-02 5.88318176265e-02 5.61547897924e-02 + 5.24339557043e-02 4.68401774785e-02 4.07924714489e-02 3.47182328687e-02 2.89691250092e-02 2.37914166767e-02 + 1.93203741197e-02 1.55924938344e-02 1.25723726562e-02 1.01870819285e-02 8.35413904759e-03 6.99504538611e-03 + 6.04016501968e-03 5.43377044817e-03 5.13913617973e-03 5.13913617973e-03 5.43377044817e-03 6.04016501968e-03 + 6.99504538611e-03 8.35413904759e-03 1.01870819285e-02 1.25723726562e-02 1.55924938344e-02 1.93203741197e-02 + 2.37914166767e-02 2.89691250092e-02 3.47182328687e-02 4.07924714489e-02 4.68401774785e-02 5.24339557043e-02 + 5.71251588417e-02 6.05090723285e-02 6.22821499923e-02 6.22821499923e-02 6.05090723285e-02 5.71251588417e-02 + 5.18281863755e-02 4.62623331670e-02 4.02540981079e-02 3.42208946471e-02 2.85205562719e-02 2.34067395586e-02 + 1.90175139009e-02 1.53857855201e-02 1.24686371753e-02 1.01870819285e-02 8.45686847188e-03 7.20097316500e-03 + 6.35335851926e-03 5.86418256271e-03 5.70420021497e-03 5.86418256271e-03 6.35335851926e-03 7.20097316500e-03 + 8.45686847188e-03 1.01870819285e-02 1.24686371753e-02 1.53857855201e-02 1.90175139009e-02 2.34067395586e-02 + 2.85205562719e-02 3.42208946471e-02 4.02540981079e-02 4.62623331670e-02 5.18281863755e-02 5.65511919643e-02 + 6.01184381094e-02 6.23288110708e-02 6.30764730892e-02 6.23288110708e-02 6.01184381094e-02 5.65511919643e-02 + 5.03535465114e-02 4.52857661696e-02 3.96081166256e-02 3.37780927799e-02 2.82105864296e-02 2.32023283361e-02 + 1.89142861556e-02 1.53857855201e-02 1.25723726562e-02 1.03937663652e-02 8.76725594498e-03 7.61927184895e-03 + 6.88914005847e-03 6.53448601861e-03 6.53448601861e-03 6.88914005847e-03 7.61927184895e-03 8.76725594498e-03 + 1.03937663652e-02 1.25723726562e-02 1.53857855201e-02 1.89142861556e-02 2.32023283361e-02 2.82105864296e-02 + 3.37780927799e-02 3.96081166256e-02 4.52857661696e-02 5.03535465114e-02 5.44475263977e-02 5.74105494947e-02 + 5.92810318582e-02 6.01752681104e-02 6.01752681104e-02 5.92810318582e-02 5.74105494947e-02 5.44475263977e-02 + 4.85080722970e-02 4.42752514752e-02 3.90842281235e-02 3.35158471123e-02 2.80994006567e-02 2.32023283361e-02 + 1.90175139009e-02 1.55924938344e-02 1.28827341282e-02 1.08088949298e-02 9.29162040305e-03 8.26229038338e-03 + 7.66717366082e-03 7.47255069610e-03 7.66717366082e-03 8.26229038338e-03 9.29162040305e-03 1.08088949298e-02 + 1.28827341282e-02 1.55924938344e-02 1.90175139009e-02 2.32023283361e-02 2.80994006567e-02 3.35158471123e-02 + 3.90842281235e-02 4.42752514752e-02 4.85080722970e-02 5.13869204668e-02 5.29210396854e-02 5.34983990182e-02 + 5.36143814352e-02 5.36149267734e-02 5.36143814352e-02 5.34983990182e-02 5.29210396854e-02 5.13869204668e-02 + 4.69885184966e-02 4.36365698621e-02 3.88830541657e-02 3.35158471123e-02 2.82105864296e-02 2.34067395586e-02 + 1.93203741197e-02 1.59997599900e-02 1.33976732300e-02 1.14361707830e-02 1.00404664762e-02 9.14830218340e-03 + 8.71419097250e-03 8.71419097250e-03 9.14830218340e-03 1.00404664762e-02 1.14361707830e-02 1.33976732300e-02 + 1.59997599900e-02 1.93203741197e-02 2.34067395586e-02 2.82105864296e-02 3.35158471123e-02 3.88830541657e-02 + 4.36365698621e-02 4.69885184966e-02 4.83941231678e-02 4.79609401864e-02 4.64751950426e-02 4.49279278957e-02 + 4.40123223759e-02 4.40123223759e-02 4.49279278957e-02 4.64751950426e-02 4.79609401864e-02 4.83941231678e-02 + 4.64020316983e-02 4.36365698621e-02 3.90842281235e-02 3.37780927799e-02 2.85205562719e-02 2.37914166767e-02 + 1.98052910067e-02 1.65980023724e-02 1.41157952825e-02 1.22825573408e-02 1.10293847869e-02 1.03016601350e-02 + 1.00633149755e-02 1.03016601350e-02 1.10293847869e-02 1.22825573408e-02 1.41157952825e-02 1.65980023724e-02 + 1.98052910067e-02 2.37914166767e-02 2.85205562719e-02 3.37780927799e-02 3.90842281235e-02 4.36365698621e-02 + 4.64020316983e-02 4.65545163206e-02 4.41366450522e-02 4.02808330656e-02 3.65582592974e-02 3.40771392673e-02 + 3.32338776264e-02 3.40771392673e-02 3.65582592974e-02 4.02808330656e-02 4.41366450522e-02 4.65545163206e-02 + 4.69885184966e-02 4.42752514752e-02 3.96081166256e-02 3.42208946471e-02 2.89691250092e-02 2.43184216158e-02 + 2.04512222766e-02 1.73786828448e-02 1.50389831834e-02 1.33594815778e-02 1.22786655737e-02 1.17508350709e-02 + 1.17508350709e-02 1.22786655737e-02 1.33594815778e-02 1.50389831834e-02 1.73786828448e-02 2.04512222766e-02 + 2.43184216158e-02 2.89691250092e-02 3.42208946471e-02 3.96081166256e-02 4.42752514752e-02 4.69885184966e-02 + 4.65545163206e-02 4.27064575993e-02 3.67025276917e-02 3.07039905741e-02 2.63856510811e-02 2.42761411551e-02 + 2.42761411551e-02 2.63856510811e-02 3.07039905741e-02 3.67025276917e-02 4.27064575993e-02 4.65545163206e-02 + 4.85080722970e-02 4.52857661696e-02 4.02540981079e-02 3.47182328687e-02 2.94854041377e-02 2.49511167951e-02 + 2.12413612776e-02 1.83376793613e-02 1.61729889157e-02 1.46810426016e-02 1.38094745262e-02 1.35231772103e-02 + 1.38094745262e-02 1.46810426016e-02 1.61729889157e-02 1.83376793613e-02 2.12413612776e-02 2.49511167951e-02 + 2.94854041377e-02 3.47182328687e-02 4.02540981079e-02 4.52857661696e-02 4.85080722970e-02 4.83941231678e-02 + 4.41366450522e-02 3.67025276917e-02 2.86292518106e-02 2.23413746600e-02 1.87771308641e-02 1.76819501362e-02 + 1.87771308641e-02 2.23413746600e-02 2.86292518106e-02 3.67025276917e-02 4.41366450522e-02 4.83941231678e-02 + 5.03535465114e-02 4.62623331670e-02 4.07924714489e-02 3.51532871168e-02 3.00149219248e-02 2.56657154446e-02 + 2.21666114252e-02 1.94746684497e-02 1.75241772421e-02 1.62588522549e-02 1.56375665721e-02 1.56375665721e-02 + 1.62588522549e-02 1.75241772421e-02 1.94746684497e-02 2.21666114252e-02 2.56657154446e-02 3.00149219248e-02 + 3.51532871168e-02 4.07924714489e-02 4.62623331670e-02 5.03535465114e-02 5.13869204668e-02 4.79609401864e-02 + 4.02808330656e-02 3.07039905741e-02 2.23413746600e-02 1.69819929531e-02 1.46090879135e-02 1.46090879135e-02 + 1.69819929531e-02 2.23413746600e-02 3.07039905741e-02 4.02808330656e-02 4.79609401864e-02 5.13869204668e-02 + 5.18281863755e-02 4.68401774785e-02 4.10571769449e-02 3.54595415232e-02 3.05340710560e-02 2.64534808200e-02 + 2.32231030162e-02 2.07887392229e-02 1.90940368490e-02 1.80960146721e-02 1.77666865554e-02 1.80960146721e-02 + 1.90940368490e-02 2.07887392229e-02 2.32231030162e-02 2.64534808200e-02 3.05340710560e-02 3.54595415232e-02 + 4.10571769449e-02 4.68401774785e-02 5.18281863755e-02 5.44475263977e-02 5.29210396854e-02 4.64751950426e-02 + 3.65582592974e-02 2.63856510811e-02 1.87771308641e-02 1.46090879135e-02 1.33581335706e-02 1.46090879135e-02 + 1.87771308641e-02 2.63856510811e-02 3.65582592974e-02 4.64751950426e-02 5.29210396854e-02 5.44475263977e-02 + 5.24339557043e-02 4.68264624901e-02 4.09927131873e-02 3.56312088557e-02 3.10465495213e-02 2.73140021666e-02 + 2.44059448105e-02 2.22726314479e-02 2.08735527936e-02 2.01812628043e-02 2.01812628043e-02 2.08735527936e-02 + 2.22726314479e-02 2.44059448105e-02 2.73140021666e-02 3.10465495213e-02 3.56312088557e-02 4.09927131873e-02 + 4.68264624901e-02 5.24339557043e-02 5.65511919643e-02 5.74105494947e-02 5.34983990182e-02 4.49279278957e-02 + 3.40771392673e-02 2.42761411551e-02 1.76819501362e-02 1.46090879135e-02 1.46090879135e-02 1.76819501362e-02 + 2.42761411551e-02 3.40771392673e-02 4.49279278957e-02 5.34983990182e-02 5.74105494947e-02 5.65511919643e-02 + 5.20147259753e-02 4.62258246981e-02 4.06430475235e-02 3.57044700685e-02 3.15673758761e-02 2.82446089484e-02 + 2.57019293917e-02 2.39063871143e-02 2.28368095394e-02 2.24815496090e-02 2.28368095394e-02 2.39063871143e-02 + 2.57019293917e-02 2.82446089484e-02 3.15673758761e-02 3.57044700685e-02 4.06430475235e-02 4.62258246981e-02 + 5.20147259753e-02 5.71251588417e-02 6.01184381094e-02 5.92810318582e-02 5.36143814352e-02 4.40123223759e-02 + 3.32338776264e-02 2.42761411551e-02 1.87771308641e-02 1.69819929531e-02 1.87771308641e-02 2.42761411551e-02 + 3.32338776264e-02 4.40123223759e-02 5.36143814352e-02 5.92810318582e-02 6.01184381094e-02 5.71251588417e-02 + 5.07121410456e-02 4.51788789706e-02 4.01041807768e-02 3.57259716101e-02 3.21049723875e-02 2.92302840650e-02 + 2.70818268649e-02 2.56499234494e-02 2.49333108373e-02 2.49333108373e-02 2.56499234494e-02 2.70818268649e-02 + 2.92302840650e-02 3.21049723875e-02 3.57259716101e-02 4.01041807768e-02 4.51788789706e-02 5.07121410456e-02 + 5.61547897924e-02 6.05090723285e-02 6.23288110708e-02 6.01752681104e-02 5.36149267734e-02 4.40123223759e-02 + 3.40771392673e-02 2.63856510811e-02 2.23413746600e-02 2.23413746600e-02 2.63856510811e-02 3.40771392673e-02 + 4.40123223759e-02 5.36149267734e-02 6.01752681104e-02 6.23288110708e-02 6.05090723285e-02 5.61547897924e-02 + 4.88190878681e-02 4.38725463784e-02 3.94725484932e-02 3.57259716101e-02 3.26483588385e-02 3.02357338101e-02 + 2.84935612207e-02 2.74372089612e-02 2.70827915169e-02 2.74372089612e-02 2.84935612207e-02 3.02357338101e-02 + 3.26483588385e-02 3.57259716101e-02 3.94725484932e-02 4.38725463784e-02 4.88190878681e-02 5.40097122002e-02 + 5.88318176265e-02 6.22821499923e-02 6.30764730892e-02 6.01752681104e-02 5.36143814352e-02 4.49279278957e-02 + 3.65582592974e-02 3.07039905741e-02 2.86292518106e-02 3.07039905741e-02 3.65582592974e-02 4.49279278957e-02 + 5.36143814352e-02 6.01752681104e-02 6.30764730892e-02 6.22821499923e-02 5.88318176265e-02 5.40097122002e-02 + 4.66403070569e-02 4.24686468881e-02 3.88104397494e-02 3.57044700685e-02 3.31615306069e-02 3.12022017908e-02 + 2.98615217076e-02 2.91781605866e-02 2.91781605866e-02 2.98615217076e-02 3.12022017908e-02 3.31615306069e-02 + 3.57044700685e-02 3.88104397494e-02 4.24686468881e-02 4.66403070569e-02 5.11831265828e-02 5.57595749637e-02 + 5.97584596222e-02 6.22821499923e-02 6.23288110708e-02 5.92810318582e-02 5.34983990182e-02 4.64751950426e-02 + 4.02808330656e-02 3.67025276917e-02 3.67025276917e-02 4.02808330656e-02 4.64751950426e-02 5.34983990182e-02 + 5.92810318582e-02 6.23288110708e-02 6.22821499923e-02 5.97584596222e-02 5.57595749637e-02 5.11831265828e-02 + 4.44094609233e-02 4.10670403681e-02 3.81345549630e-02 3.56312088557e-02 3.35871770820e-02 3.20546920774e-02 + 3.10978190541e-02 3.07715106065e-02 3.10978190541e-02 3.20546920774e-02 3.35871770820e-02 3.56312088557e-02 + 3.81345549630e-02 4.10670403681e-02 4.44094609233e-02 4.81082332430e-02 5.20033431247e-02 5.57595749637e-02 + 5.88318176265e-02 6.05090723285e-02 6.01184381094e-02 5.74105494947e-02 5.29210396854e-02 4.79609401864e-02 + 4.41366450522e-02 4.27064575993e-02 4.41366450522e-02 4.79609401864e-02 5.29210396854e-02 5.74105494947e-02 + 6.01184381094e-02 6.05090723285e-02 5.88318176265e-02 5.57595749637e-02 5.20033431247e-02 4.81082332430e-02 + 4.22610610741e-02 3.97029159910e-02 3.74259862301e-02 3.54595415232e-02 3.38635928392e-02 3.27229087590e-02 + 3.21243272248e-02 3.21243272248e-02 3.27229087590e-02 3.38635928392e-02 3.54595415232e-02 3.74259862301e-02 + 3.97029159910e-02 4.22610610741e-02 4.50819394473e-02 4.81082332430e-02 5.11831265828e-02 5.40097122002e-02 + 5.61547897924e-02 5.71251588417e-02 5.65511919643e-02 5.44475263977e-02 5.13869204668e-02 4.83941231678e-02 + 4.65545163206e-02 4.65545163206e-02 4.83941231678e-02 5.13869204668e-02 5.44475263977e-02 5.65511919643e-02 + 5.71251588417e-02 5.61547897924e-02 5.40097122002e-02 5.11831265828e-02 4.81082332430e-02 4.50819394473e-02 + 4.57409612273e-02 4.40291518527e-02 4.23378898536e-02 4.07924714489e-02 3.95849180057e-02 3.89160663350e-02 + 3.89160663350e-02 3.95849180057e-02 4.07924714489e-02 4.23378898536e-02 4.40291518527e-02 4.57409612273e-02 + 4.74313143781e-02 4.91148354625e-02 5.08044555558e-02 5.24477482650e-02 5.38883507401e-02 5.48714786192e-02 + 5.51031089527e-02 5.43692149489e-02 5.26931433274e-02 5.04463447592e-02 4.83002627794e-02 4.69885184966e-02 + 4.69885184966e-02 4.83002627794e-02 5.04463447592e-02 5.26931433274e-02 5.43692149489e-02 5.51031089527e-02 + 5.48714786192e-02 5.38883507401e-02 5.24477482650e-02 5.08044555558e-02 4.91148354625e-02 4.74313143781e-02 + 4.40291518527e-02 4.27763236460e-02 4.14579289512e-02 4.02540981079e-02 3.93968315223e-02 3.90848689472e-02 + 3.93968315223e-02 4.02540981079e-02 4.14579289512e-02 4.27763236460e-02 4.40291518527e-02 4.51323632879e-02 + 4.60913389830e-02 4.69561004766e-02 4.77625301985e-02 4.84855850881e-02 4.90231496620e-02 4.92182336225e-02 + 4.89192305177e-02 4.80677366203e-02 4.67810667612e-02 4.53738413591e-02 4.42752514752e-02 4.38595264834e-02 + 4.42752514752e-02 4.53738413591e-02 4.67810667612e-02 4.80677366203e-02 4.89192305177e-02 4.92182336225e-02 + 4.90231496620e-02 4.84855850881e-02 4.77625301985e-02 4.69561004766e-02 4.60913389830e-02 4.51323632879e-02 + 4.23378898536e-02 4.14579289512e-02 4.04742233092e-02 3.96081166256e-02 3.90976289629e-02 3.90976289629e-02 + 3.96081166256e-02 4.04742233092e-02 4.14579289512e-02 4.23378898536e-02 4.29832635915e-02 4.33721592307e-02 + 4.35604474537e-02 4.36277000850e-02 4.36277000850e-02 4.35604474537e-02 4.33721592307e-02 4.29832635915e-02 + 4.23378898536e-02 4.14579289512e-02 4.04742233092e-02 3.96081166256e-02 3.90976289629e-02 3.90976289629e-02 + 3.96081166256e-02 4.04742233092e-02 4.14579289512e-02 4.23378898536e-02 4.29832635915e-02 4.33721592307e-02 + 4.35604474537e-02 4.36277000850e-02 4.36277000850e-02 4.35604474537e-02 4.33721592307e-02 4.29832635915e-02 + 4.07924714489e-02 4.02540981079e-02 3.96081166256e-02 3.90842281235e-02 3.88830541657e-02 3.90842281235e-02 + 3.96081166256e-02 4.02540981079e-02 4.07924714489e-02 4.10571769449e-02 4.09927131873e-02 4.06430475235e-02 + 4.01041807768e-02 3.94725484932e-02 3.88104397494e-02 3.81345549630e-02 3.74259862301e-02 3.66568505349e-02 + 3.58243136049e-02 3.49773595797e-02 3.42208946471e-02 3.36893635306e-02 3.34971688966e-02 3.36893635306e-02 + 3.42208946471e-02 3.49773595797e-02 3.58243136049e-02 3.66568505349e-02 3.74259862301e-02 3.81345549630e-02 + 3.88104397494e-02 3.94725484932e-02 4.01041807768e-02 4.06430475235e-02 4.09927131873e-02 4.10571769449e-02 + 3.95849180057e-02 3.93968315223e-02 3.90976289629e-02 3.88830541657e-02 3.88830541657e-02 3.90976289629e-02 + 3.93968315223e-02 3.95849180057e-02 3.94908104948e-02 3.90347179512e-02 3.82415861113e-02 3.72078996967e-02 + 3.60511821341e-02 3.48695445110e-02 3.37228748044e-02 3.26341221073e-02 3.16041856284e-02 3.06330408871e-02 + 2.97391273192e-02 2.89691250092e-02 2.83925891295e-02 2.80812943983e-02 2.80812943983e-02 2.83925891295e-02 + 2.89691250092e-02 2.97391273192e-02 3.06330408871e-02 3.16041856284e-02 3.26341221073e-02 3.37228748044e-02 + 3.48695445110e-02 3.60511821341e-02 3.72078996967e-02 3.82415861113e-02 3.90347179512e-02 3.94908104948e-02 + 3.89160663350e-02 3.90848689472e-02 3.90976289629e-02 3.90842281235e-02 3.90976289629e-02 3.90848689472e-02 + 3.89160663350e-02 3.84534160516e-02 3.76190713504e-02 3.64263171972e-02 3.49654910486e-02 3.33624200108e-02 + 3.17358390207e-02 3.01717861136e-02 2.87187367840e-02 2.73972646659e-02 2.62153172241e-02 2.51823253991e-02 + 2.43184216158e-02 2.36566460915e-02 2.32368358951e-02 2.30924993956e-02 2.32368358951e-02 2.36566460915e-02 + 2.43184216158e-02 2.51823253991e-02 2.62153172241e-02 2.73972646659e-02 2.87187367840e-02 3.01717861136e-02 + 3.17358390207e-02 3.33624200108e-02 3.49654910486e-02 3.64263171972e-02 3.76190713504e-02 3.84534160516e-02 + 3.89160663350e-02 3.93968315223e-02 3.96081166256e-02 3.96081166256e-02 3.93968315223e-02 3.89160663350e-02 + 3.80886538087e-02 3.68707660171e-02 3.52857897121e-02 3.34242157073e-02 3.14154606035e-02 2.93901320501e-02 + 2.74512061786e-02 2.56635113913e-02 2.40594329852e-02 2.26519365039e-02 2.14468462049e-02 2.04512222766e-02 + 1.96777557044e-02 1.91448778653e-02 1.88720574247e-02 1.88720574247e-02 1.91448778653e-02 1.96777557044e-02 + 2.04512222766e-02 2.14468462049e-02 2.26519365039e-02 2.40594329852e-02 2.56635113913e-02 2.74512061786e-02 + 2.93901320501e-02 3.14154606035e-02 3.34242157073e-02 3.52857897121e-02 3.68707660171e-02 3.80886538087e-02 + 3.95849180057e-02 4.02540981079e-02 4.04742233092e-02 4.02540981079e-02 3.95849180057e-02 3.84534160516e-02 + 3.68707660171e-02 3.48956024912e-02 3.26363277502e-02 3.02323588099e-02 2.78244998346e-02 2.55281844546e-02 + 2.34202555044e-02 2.15413174517e-02 1.99070659239e-02 1.85201445811e-02 1.73786828448e-02 1.64818809732e-02 + 1.58329883187e-02 1.54388806266e-02 1.53065353883e-02 1.54388806266e-02 1.58329883187e-02 1.64818809732e-02 + 1.73786828448e-02 1.85201445811e-02 1.99070659239e-02 2.15413174517e-02 2.34202555044e-02 2.55281844546e-02 + 2.78244998346e-02 3.02323588099e-02 3.26363277502e-02 3.48956024912e-02 3.68707660171e-02 3.84534160516e-02 + 4.07924714489e-02 4.14579289512e-02 4.14579289512e-02 4.07924714489e-02 3.94908104948e-02 3.76190713504e-02 + 3.52857897121e-02 3.26363277502e-02 2.98349904445e-02 2.70402901784e-02 2.43819637041e-02 2.19482820950e-02 + 1.97871783123e-02 1.79167348748e-02 1.63370205752e-02 1.50389831834e-02 1.40109856905e-02 1.32437842255e-02 + 1.27327884289e-02 1.24770996440e-02 1.24770996440e-02 1.27327884289e-02 1.32437842255e-02 1.40109856905e-02 + 1.50389831834e-02 1.63370205752e-02 1.79167348748e-02 1.97871783123e-02 2.19482820950e-02 2.43819637041e-02 + 2.70402901784e-02 2.98349904445e-02 3.26363277502e-02 3.52857897121e-02 3.76190713504e-02 3.94908104948e-02 + 4.23378898536e-02 4.27763236460e-02 4.23378898536e-02 4.10571769449e-02 3.90347179512e-02 3.64263171972e-02 + 3.34242157073e-02 3.02323588099e-02 2.70402901784e-02 2.40011711299e-02 2.12198093897e-02 1.87538902948e-02 + 1.66250325509e-02 1.48317912783e-02 1.33594815778e-02 1.21873907787e-02 1.12951380995e-02 1.06671499136e-02 + 1.02937156151e-02 1.01697655067e-02 1.02937156151e-02 1.06671499136e-02 1.12951380995e-02 1.21873907787e-02 + 1.33594815778e-02 1.48317912783e-02 1.66250325509e-02 1.87538902948e-02 2.12198093897e-02 2.40011711299e-02 + 2.70402901784e-02 3.02323588099e-02 3.34242157073e-02 3.64263171972e-02 3.90347179512e-02 4.10571769449e-02 + 4.40291518527e-02 4.40291518527e-02 4.29832635915e-02 4.09927131873e-02 3.82415861113e-02 3.49654910486e-02 + 3.14154606035e-02 2.78244998346e-02 2.43819637041e-02 2.12198093897e-02 1.84129279741e-02 1.59907282434e-02 + 1.39522993746e-02 1.22786655737e-02 1.09414577715e-02 9.91029781221e-03 9.15892896774e-03 8.66817035987e-03 + 8.42580807925e-03 8.42580807925e-03 8.66817035987e-03 9.15892896774e-03 9.91029781221e-03 1.09414577715e-02 + 1.22786655737e-02 1.39522993746e-02 1.59907282434e-02 1.84129279741e-02 2.12198093897e-02 2.43819637041e-02 + 2.78244998346e-02 3.14154606035e-02 3.49654910486e-02 3.82415861113e-02 4.09927131873e-02 4.29832635915e-02 + 4.57409612273e-02 4.51323632879e-02 4.33721592307e-02 4.06430475235e-02 3.72078996967e-02 3.33624200108e-02 + 2.93901320501e-02 2.55281844546e-02 2.19482820950e-02 1.87538902948e-02 1.59907282434e-02 1.36633879542e-02 + 1.17508350709e-02 1.02181471415e-02 9.02578945364e-03 8.13716815266e-03 7.52314503521e-03 7.16308508658e-03 + 7.04448483440e-03 7.16308508658e-03 7.52314503521e-03 8.13716815266e-03 9.02578945364e-03 1.02181471415e-02 + 1.17508350709e-02 1.36633879542e-02 1.59907282434e-02 1.87538902948e-02 2.19482820950e-02 2.55281844546e-02 + 2.93901320501e-02 3.33624200108e-02 3.72078996967e-02 4.06430475235e-02 4.33721592307e-02 4.51323632879e-02 + 4.74313143781e-02 4.60913389830e-02 4.35604474537e-02 4.01041807768e-02 3.60511821341e-02 3.17358390207e-02 + 2.74512061786e-02 2.34202555044e-02 1.97871783123e-02 1.66250325509e-02 1.39522993746e-02 1.17508350709e-02 + 9.98127039361e-03 8.59555582378e-03 7.54684340873e-03 6.79567554150e-03 6.31209415558e-03 6.07562992209e-03 + 6.07562992209e-03 6.31209415558e-03 6.79567554150e-03 7.54684340873e-03 8.59555582378e-03 9.98127039361e-03 + 1.17508350709e-02 1.39522993746e-02 1.66250325509e-02 1.97871783123e-02 2.34202555044e-02 2.74512061786e-02 + 3.17358390207e-02 3.60511821341e-02 4.01041807768e-02 4.35604474537e-02 4.60913389830e-02 4.74313143781e-02 + 4.91148354625e-02 4.69561004766e-02 4.36277000850e-02 3.94725484932e-02 3.48695445110e-02 3.01717861136e-02 + 2.56635113913e-02 2.15413174517e-02 1.79167348748e-02 1.48317912783e-02 1.22786655737e-02 1.02181471415e-02 + 8.59555582378e-03 7.35383003280e-03 6.44245195186e-03 5.82127807001e-03 5.46093720174e-03 5.34296096392e-03 + 5.46093720174e-03 5.82127807001e-03 6.44245195186e-03 7.35383003280e-03 8.59555582378e-03 1.02181471415e-02 + 1.22786655737e-02 1.48317912783e-02 1.79167348748e-02 2.15413174517e-02 2.56635113913e-02 3.01717861136e-02 + 3.48695445110e-02 3.94725484932e-02 4.36277000850e-02 4.69561004766e-02 4.91148354625e-02 4.98633146719e-02 + 5.08044555558e-02 4.77625301985e-02 4.36277000850e-02 3.88104397494e-02 3.37228748044e-02 2.87187367840e-02 + 2.40594329852e-02 1.99070659239e-02 1.63370205752e-02 1.33594815778e-02 1.09414577715e-02 9.02578945364e-03 + 7.54684340873e-03 6.44245195186e-03 5.66079261571e-03 5.16243150929e-03 4.92029966810e-03 4.92029966810e-03 + 5.16243150929e-03 5.66079261571e-03 6.44245195186e-03 7.54684340873e-03 9.02578945364e-03 1.09414577715e-02 + 1.33594815778e-02 1.63370205752e-02 1.99070659239e-02 2.40594329852e-02 2.87187367840e-02 3.37228748044e-02 + 3.88104397494e-02 4.36277000850e-02 4.77625301985e-02 5.08044555558e-02 5.24194501424e-02 5.24194501424e-02 + 5.24477482650e-02 4.84855850881e-02 4.35604474537e-02 3.81345549630e-02 3.26341221073e-02 2.73972646659e-02 + 2.26519365039e-02 1.85201445811e-02 1.50389831834e-02 1.21873907787e-02 9.91029781221e-03 8.13716815266e-03 + 6.79567554150e-03 5.82127807001e-03 5.16243150929e-03 4.78210810048e-03 4.65785937656e-03 4.78210810048e-03 + 5.16243150929e-03 5.82127807001e-03 6.79567554150e-03 8.13716815266e-03 9.91029781221e-03 1.21873907787e-02 + 1.50389831834e-02 1.85201445811e-02 2.26519365039e-02 2.73972646659e-02 3.26341221073e-02 3.81345549630e-02 + 4.35604474537e-02 4.84855850881e-02 5.24477482650e-02 5.50251512552e-02 5.59201471811e-02 5.50251512552e-02 + 5.38883507401e-02 4.90231496620e-02 4.33721592307e-02 3.74259862301e-02 3.16041856284e-02 2.62153172241e-02 + 2.14468462049e-02 1.73786828448e-02 1.40109856905e-02 1.12951380995e-02 9.15892896774e-03 7.52314503521e-03 + 6.31209415558e-03 5.46093720174e-03 4.92029966810e-03 4.65785937656e-03 4.65785937656e-03 4.92029966810e-03 + 5.46093720174e-03 6.31209415558e-03 7.52314503521e-03 9.15892896774e-03 1.12951380995e-02 1.40109856905e-02 + 1.73786828448e-02 2.14468462049e-02 2.62153172241e-02 3.16041856284e-02 3.74259862301e-02 4.33721592307e-02 + 4.90231496620e-02 5.38883507401e-02 5.74762428735e-02 5.93841418824e-02 5.93841418824e-02 5.74762428735e-02 + 5.48714786192e-02 4.92182336225e-02 4.29832635915e-02 3.66568505349e-02 3.06330408871e-02 2.51823253991e-02 + 2.04512222766e-02 1.64818809732e-02 1.32437842255e-02 1.06671499136e-02 8.66817035987e-03 7.16308508658e-03 + 6.07562992209e-03 5.34296096392e-03 4.92029966810e-03 4.78210810048e-03 4.92029966810e-03 5.34296096392e-03 + 6.07562992209e-03 7.16308508658e-03 8.66817035987e-03 1.06671499136e-02 1.32437842255e-02 1.64818809732e-02 + 2.04512222766e-02 2.51823253991e-02 3.06330408871e-02 3.66568505349e-02 4.29832635915e-02 4.92182336225e-02 + 5.48714786192e-02 5.94150808572e-02 6.23688231248e-02 6.33941825467e-02 6.23688231248e-02 5.94150808572e-02 + 5.51031089527e-02 4.89192305177e-02 4.23378898536e-02 3.58243136049e-02 2.97391273192e-02 2.43184216158e-02 + 1.96777557044e-02 1.58329883187e-02 1.27327884289e-02 1.02937156151e-02 8.42580807925e-03 7.04448483440e-03 + 6.07562992209e-03 5.46093720174e-03 5.16243150929e-03 5.16243150929e-03 5.46093720174e-03 6.07562992209e-03 + 7.04448483440e-03 8.42580807925e-03 1.02937156151e-02 1.27327884289e-02 1.58329883187e-02 1.96777557044e-02 + 2.43184216158e-02 2.97391273192e-02 3.58243136049e-02 4.23378898536e-02 4.89192305177e-02 5.51031089527e-02 + 6.03694423859e-02 6.42180018992e-02 6.62522137956e-02 6.62522137956e-02 6.42180018992e-02 6.03694423859e-02 + 5.43692149489e-02 4.80677366203e-02 4.14579289512e-02 3.49773595797e-02 2.89691250092e-02 2.36566460915e-02 + 1.91448778653e-02 1.54388806266e-02 1.24770996440e-02 1.01697655067e-02 8.42580807925e-03 7.16308508658e-03 + 6.31209415558e-03 5.82127807001e-03 5.66079261571e-03 5.82127807001e-03 6.31209415558e-03 7.16308508658e-03 + 8.42580807925e-03 1.01697655067e-02 1.24770996440e-02 1.54388806266e-02 1.91448778653e-02 2.36566460915e-02 + 2.89691250092e-02 3.49773595797e-02 4.14579289512e-02 4.80677366203e-02 5.43692149489e-02 5.98878714669e-02 + 6.41840706496e-02 6.69101294891e-02 6.78442738531e-02 6.69101294891e-02 6.41840706496e-02 5.98878714669e-02 + 5.26931433274e-02 4.67810667612e-02 4.04742233092e-02 3.42208946471e-02 2.83925891295e-02 2.32368358951e-02 + 1.88720574247e-02 1.53065353883e-02 1.24770996440e-02 1.02937156151e-02 8.66817035987e-03 7.52314503521e-03 + 6.79567554150e-03 6.44245195186e-03 6.44245195186e-03 6.79567554150e-03 7.52314503521e-03 8.66817035987e-03 + 1.02937156151e-02 1.24770996440e-02 1.53065353883e-02 1.88720574247e-02 2.32368358951e-02 2.83925891295e-02 + 3.42208946471e-02 4.04742233092e-02 4.67810667612e-02 5.26931433274e-02 5.77843769256e-02 6.17513938278e-02 + 6.44394828494e-02 6.57918464265e-02 6.57918464265e-02 6.44394828494e-02 6.17513938278e-02 5.77843769256e-02 + 5.04463447592e-02 4.53738413591e-02 3.96081166256e-02 3.36893635306e-02 2.80812943983e-02 2.30924993956e-02 + 1.88720574247e-02 1.54388806266e-02 1.27327884289e-02 1.06671499136e-02 9.15892896774e-03 8.13716815266e-03 + 7.54684340873e-03 7.35383003280e-03 7.54684340873e-03 8.13716815266e-03 9.15892896774e-03 1.06671499136e-02 + 1.27327884289e-02 1.54388806266e-02 1.88720574247e-02 2.30924993956e-02 2.80812943983e-02 3.36893635306e-02 + 3.96081166256e-02 4.53738413591e-02 5.04463447592e-02 5.43925934286e-02 5.70772559013e-02 5.86758842735e-02 + 5.94868177545e-02 5.97323039443e-02 5.94868177545e-02 5.86758842735e-02 5.70772559013e-02 5.43925934286e-02 + 4.83002627794e-02 4.42752514752e-02 3.90976289629e-02 3.34971688966e-02 2.80812943983e-02 2.32368358951e-02 + 1.91448778653e-02 1.58329883187e-02 1.32437842255e-02 1.12951380995e-02 9.91029781221e-03 9.02578945364e-03 + 8.59555582378e-03 8.59555582378e-03 9.02578945364e-03 9.91029781221e-03 1.12951380995e-02 1.32437842255e-02 + 1.58329883187e-02 1.91448778653e-02 2.32368358951e-02 2.80812943983e-02 3.34971688966e-02 3.90976289629e-02 + 4.42752514752e-02 4.83002627794e-02 5.06194135765e-02 5.12221625406e-02 5.07010770424e-02 4.98718618187e-02 + 4.93308963719e-02 4.93308963719e-02 4.98718618187e-02 5.07010770424e-02 5.12221625406e-02 5.06194135765e-02 + 4.69885184966e-02 4.38595264834e-02 3.90976289629e-02 3.36893635306e-02 2.83925891295e-02 2.36566460915e-02 + 1.96777557044e-02 1.64818809732e-02 1.40109856905e-02 1.21873907787e-02 1.09414577715e-02 1.02181471415e-02 + 9.98127039361e-03 1.02181471415e-02 1.09414577715e-02 1.21873907787e-02 1.40109856905e-02 1.64818809732e-02 + 1.96777557044e-02 2.36566460915e-02 2.83925891295e-02 3.36893635306e-02 3.90976289629e-02 4.38595264834e-02 + 4.69885184966e-02 4.76689314688e-02 4.58777097769e-02 4.26203265537e-02 3.93541671489e-02 3.71417160544e-02 + 3.63849623957e-02 3.71417160544e-02 3.93541671489e-02 4.26203265537e-02 4.58777097769e-02 4.76689314688e-02 + 4.69885184966e-02 4.42752514752e-02 3.96081166256e-02 3.42208946471e-02 2.89691250092e-02 2.43184216158e-02 + 2.04512222766e-02 1.73786828448e-02 1.50389831834e-02 1.33594815778e-02 1.22786655737e-02 1.17508350709e-02 + 1.17508350709e-02 1.22786655737e-02 1.33594815778e-02 1.50389831834e-02 1.73786828448e-02 2.04512222766e-02 + 2.43184216158e-02 2.89691250092e-02 3.42208946471e-02 3.96081166256e-02 4.42752514752e-02 4.69885184966e-02 + 4.65545163206e-02 4.27064575993e-02 3.67025276917e-02 3.07039905741e-02 2.63856510811e-02 2.42761411551e-02 + 2.42761411551e-02 2.63856510811e-02 3.07039905741e-02 3.67025276917e-02 4.27064575993e-02 4.65545163206e-02 + 4.83002627794e-02 4.53738413591e-02 4.04742233092e-02 3.49773595797e-02 2.97391273192e-02 2.51823253991e-02 + 2.14468462049e-02 1.85201445811e-02 1.63370205752e-02 1.48317912783e-02 1.39522993746e-02 1.36633879542e-02 + 1.39522993746e-02 1.48317912783e-02 1.63370205752e-02 1.85201445811e-02 2.14468462049e-02 2.51823253991e-02 + 2.97391273192e-02 3.49773595797e-02 4.04742233092e-02 4.53738413591e-02 4.83002627794e-02 4.76689314688e-02 + 4.27064575993e-02 3.45455630665e-02 2.59250062413e-02 1.93490286376e-02 1.56860392578e-02 1.45732066269e-02 + 1.56860392578e-02 1.93490286376e-02 2.59250062413e-02 3.45455630665e-02 4.27064575993e-02 4.76689314688e-02 + 5.04463447592e-02 4.67810667612e-02 4.14579289512e-02 3.58243136049e-02 3.06330408871e-02 2.62153172241e-02 + 2.26519365039e-02 1.99070659239e-02 1.79167348748e-02 1.66250325509e-02 1.59907282434e-02 1.59907282434e-02 + 1.66250325509e-02 1.79167348748e-02 1.99070659239e-02 2.26519365039e-02 2.62153172241e-02 3.06330408871e-02 + 3.58243136049e-02 4.14579289512e-02 4.67810667612e-02 5.04463447592e-02 5.06194135765e-02 4.58777097769e-02 + 3.67025276917e-02 2.59250062413e-02 1.69491736420e-02 1.14596764125e-02 9.13060134292e-03 9.13060134292e-03 + 1.14596764125e-02 1.69491736420e-02 2.59250062413e-02 3.67025276917e-02 4.58777097769e-02 5.06194135765e-02 + 5.26931433274e-02 4.80677366203e-02 4.23378898536e-02 3.66568505349e-02 3.16041856284e-02 2.73972646659e-02 + 2.40594329852e-02 2.15413174517e-02 1.97871783123e-02 1.87538902948e-02 1.84129279741e-02 1.87538902948e-02 + 1.97871783123e-02 2.15413174517e-02 2.40594329852e-02 2.73972646659e-02 3.16041856284e-02 3.66568505349e-02 + 4.23378898536e-02 4.80677366203e-02 5.26931433274e-02 5.43925934286e-02 5.12221625406e-02 4.26203265537e-02 + 3.07039905741e-02 1.93490286376e-02 1.14596764125e-02 7.45857574908e-03 6.32692063078e-03 7.45857574908e-03 + 1.14596764125e-02 1.93490286376e-02 3.07039905741e-02 4.26203265537e-02 5.12221625406e-02 5.43925934286e-02 + 5.43692149489e-02 4.89192305177e-02 4.29832635915e-02 3.74259862301e-02 3.26341221073e-02 2.87187367840e-02 + 2.56635113913e-02 2.34202555044e-02 2.19482820950e-02 2.12198093897e-02 2.12198093897e-02 2.19482820950e-02 + 2.34202555044e-02 2.56635113913e-02 2.87187367840e-02 3.26341221073e-02 3.74259862301e-02 4.29832635915e-02 + 4.89192305177e-02 5.43692149489e-02 5.77843769256e-02 5.70772559013e-02 5.07010770424e-02 3.93541671489e-02 + 2.63856510811e-02 1.56860392578e-02 9.13060134292e-03 6.32692063078e-03 6.32692063078e-03 9.13060134292e-03 + 1.56860392578e-02 2.63856510811e-02 3.93541671489e-02 5.07010770424e-02 5.70772559013e-02 5.77843769256e-02 + 5.51031089527e-02 4.92182336225e-02 4.33721592307e-02 3.81345549630e-02 3.37228748044e-02 3.01717861136e-02 + 2.74512061786e-02 2.55281844546e-02 2.43819637041e-02 2.40011711299e-02 2.43819637041e-02 2.55281844546e-02 + 2.74512061786e-02 3.01717861136e-02 3.37228748044e-02 3.81345549630e-02 4.33721592307e-02 4.92182336225e-02 + 5.51031089527e-02 5.98878714669e-02 6.17513938278e-02 5.86758842735e-02 4.98718618187e-02 3.71417160544e-02 + 2.42761411551e-02 1.45732066269e-02 9.13060134292e-03 7.45857574908e-03 9.13060134292e-03 1.45732066269e-02 + 2.42761411551e-02 3.71417160544e-02 4.98718618187e-02 5.86758842735e-02 6.17513938278e-02 5.98878714669e-02 + 5.48714786192e-02 4.90231496620e-02 4.35604474537e-02 3.88104397494e-02 3.48695445110e-02 3.17358390207e-02 + 2.93901320501e-02 2.78244998346e-02 2.70402901784e-02 2.70402901784e-02 2.78244998346e-02 2.93901320501e-02 + 3.17358390207e-02 3.48695445110e-02 3.88104397494e-02 4.35604474537e-02 4.90231496620e-02 5.48714786192e-02 + 6.03694423859e-02 6.41840706496e-02 6.44394828494e-02 5.94868177545e-02 4.93308963719e-02 3.63849623957e-02 + 2.42761411551e-02 1.56860392578e-02 1.14596764125e-02 1.14596764125e-02 1.56860392578e-02 2.42761411551e-02 + 3.63849623957e-02 4.93308963719e-02 5.94868177545e-02 6.44394828494e-02 6.41840706496e-02 6.03694423859e-02 + 5.38883507401e-02 4.84855850881e-02 4.36277000850e-02 3.94725484932e-02 3.60511821341e-02 3.33624200108e-02 + 3.14154606035e-02 3.02323588099e-02 2.98349904445e-02 3.02323588099e-02 3.14154606035e-02 3.33624200108e-02 + 3.60511821341e-02 3.94725484932e-02 4.36277000850e-02 4.84855850881e-02 5.38883507401e-02 5.94150808572e-02 + 6.42180018992e-02 6.69101294891e-02 6.57918464265e-02 5.97323039443e-02 4.93308963719e-02 3.71417160544e-02 + 2.63856510811e-02 1.93490286376e-02 1.69491736420e-02 1.93490286376e-02 2.63856510811e-02 3.71417160544e-02 + 4.93308963719e-02 5.97323039443e-02 6.57918464265e-02 6.69101294891e-02 6.42180018992e-02 5.94150808572e-02 + 5.24477482650e-02 4.77625301985e-02 4.36277000850e-02 4.01041807768e-02 3.72078996967e-02 3.49654910486e-02 + 3.34242157073e-02 3.26363277502e-02 3.26363277502e-02 3.34242157073e-02 3.49654910486e-02 3.72078996967e-02 + 4.01041807768e-02 4.36277000850e-02 4.77625301985e-02 5.24477482650e-02 5.74762428735e-02 6.23688231248e-02 + 6.62522137956e-02 6.78442738531e-02 6.57918464265e-02 5.94868177545e-02 4.98718618187e-02 3.93541671489e-02 + 3.07039905741e-02 2.59250062413e-02 2.59250062413e-02 3.07039905741e-02 3.93541671489e-02 4.98718618187e-02 + 5.94868177545e-02 6.57918464265e-02 6.78442738531e-02 6.62522137956e-02 6.23688231248e-02 5.74762428735e-02 + 5.08044555558e-02 4.69561004766e-02 4.35604474537e-02 4.06430475235e-02 3.82415861113e-02 3.64263171972e-02 + 3.52857897121e-02 3.48956024912e-02 3.52857897121e-02 3.64263171972e-02 3.82415861113e-02 4.06430475235e-02 + 4.35604474537e-02 4.69561004766e-02 5.08044555558e-02 5.50251512552e-02 5.93841418824e-02 6.33941825467e-02 + 6.62522137956e-02 6.69101294891e-02 6.44394828494e-02 5.86758842735e-02 5.07010770424e-02 4.26203265537e-02 + 3.67025276917e-02 3.45455630665e-02 3.67025276917e-02 4.26203265537e-02 5.07010770424e-02 5.86758842735e-02 + 6.44394828494e-02 6.69101294891e-02 6.62522137956e-02 6.33941825467e-02 5.93841418824e-02 5.50251512552e-02 + 4.91148354625e-02 4.60913389830e-02 4.33721592307e-02 4.09927131873e-02 3.90347179512e-02 3.76190713504e-02 + 3.68707660171e-02 3.68707660171e-02 3.76190713504e-02 3.90347179512e-02 4.09927131873e-02 4.33721592307e-02 + 4.60913389830e-02 4.91148354625e-02 5.24194501424e-02 5.59201471811e-02 5.93841418824e-02 6.23688231248e-02 + 6.42180018992e-02 6.41840706496e-02 6.17513938278e-02 5.70772559013e-02 5.12221625406e-02 4.58777097769e-02 + 4.27064575993e-02 4.27064575993e-02 4.58777097769e-02 5.12221625406e-02 5.70772559013e-02 6.17513938278e-02 + 6.41840706496e-02 6.42180018992e-02 6.23688231248e-02 5.93841418824e-02 5.59201471811e-02 5.24194501424e-02 + 4.74313143781e-02 4.51323632879e-02 4.29832635915e-02 4.10571769449e-02 3.94908104948e-02 3.84534160516e-02 + 3.80886538087e-02 3.84534160516e-02 3.94908104948e-02 4.10571769449e-02 4.29832635915e-02 4.51323632879e-02 + 4.74313143781e-02 4.98633146719e-02 5.24194501424e-02 5.50251512552e-02 5.74762428735e-02 5.94150808572e-02 + 6.03694423859e-02 5.98878714669e-02 5.77843769256e-02 5.43925934286e-02 5.06194135765e-02 4.76689314688e-02 + 4.65545163206e-02 4.76689314688e-02 5.06194135765e-02 5.43925934286e-02 5.77843769256e-02 5.98878714669e-02 + 6.03694423859e-02 5.94150808572e-02 5.74762428735e-02 5.50251512552e-02 5.24194501424e-02 4.98633146719e-02 + 5.18034033720e-02 5.00090134447e-02 4.80677366203e-02 4.62623331670e-02 4.49623774036e-02 4.44868574481e-02 + 4.49623774036e-02 4.62623331670e-02 4.80677366203e-02 5.00090134447e-02 5.18034033720e-02 5.33236907840e-02 + 5.45841783826e-02 5.56676247698e-02 5.66331890923e-02 5.74449785733e-02 5.79474348197e-02 5.78981879671e-02 + 5.70612480291e-02 5.53499973529e-02 5.29676178633e-02 5.04463447592e-02 4.85080722970e-02 4.77793166757e-02 + 4.85080722970e-02 5.04463447592e-02 5.29676178633e-02 5.53499973529e-02 5.70612480291e-02 5.78981879671e-02 + 5.79474348197e-02 5.74449785733e-02 5.66331890923e-02 5.56676247698e-02 5.45841783826e-02 5.33236907840e-02 + 5.00090134447e-02 4.84815544672e-02 4.67810667612e-02 4.52857661696e-02 4.44045560444e-02 4.44045560444e-02 + 4.52857661696e-02 4.67810667612e-02 4.84815544672e-02 5.00090134447e-02 5.11403130173e-02 5.18355302331e-02 + 5.21839135623e-02 5.23143637463e-02 5.23143637463e-02 5.21839135623e-02 5.18355302331e-02 5.11403130173e-02 + 5.00090134447e-02 4.84815544672e-02 4.67810667612e-02 4.52857661696e-02 4.44045560444e-02 4.44045560444e-02 + 4.52857661696e-02 4.67810667612e-02 4.84815544672e-02 5.00090134447e-02 5.11403130173e-02 5.18355302331e-02 + 5.21839135623e-02 5.23143637463e-02 5.23143637463e-02 5.21839135623e-02 5.18355302331e-02 5.11403130173e-02 + 4.80677366203e-02 4.67810667612e-02 4.53738413591e-02 4.42752514752e-02 4.38595264834e-02 4.42752514752e-02 + 4.53738413591e-02 4.67810667612e-02 4.80677366203e-02 4.89192305177e-02 4.92182336225e-02 4.90231496620e-02 + 4.84855850881e-02 4.77625301985e-02 4.69561004766e-02 4.60913389830e-02 4.51323632879e-02 4.40291518527e-02 + 4.27763236460e-02 4.14579289512e-02 4.02540981079e-02 3.93968315223e-02 3.90848689472e-02 3.93968315223e-02 + 4.02540981079e-02 4.14579289512e-02 4.27763236460e-02 4.40291518527e-02 4.51323632879e-02 4.60913389830e-02 + 4.69561004766e-02 4.77625301985e-02 4.84855850881e-02 4.90231496620e-02 4.92182336225e-02 4.89192305177e-02 + 4.62623331670e-02 4.52857661696e-02 4.42752514752e-02 4.36365698621e-02 4.36365698621e-02 4.42752514752e-02 + 4.52857661696e-02 4.62623331670e-02 4.68401774785e-02 4.68264624901e-02 4.62258246981e-02 4.51788789706e-02 + 4.38725463784e-02 4.24686468881e-02 4.10670403681e-02 3.97029159910e-02 3.83718132369e-02 3.70689589239e-02 + 3.58243136049e-02 3.47182328687e-02 3.38709874542e-02 3.34071767353e-02 3.34071767353e-02 3.38709874542e-02 + 3.47182328687e-02 3.58243136049e-02 3.70689589239e-02 3.83718132369e-02 3.97029159910e-02 4.10670403681e-02 + 4.24686468881e-02 4.38725463784e-02 4.51788789706e-02 4.62258246981e-02 4.68264624901e-02 4.68401774785e-02 + 4.49623774036e-02 4.44045560444e-02 4.38595264834e-02 4.36365698621e-02 4.38595264834e-02 4.44045560444e-02 + 4.49623774036e-02 4.51877782102e-02 4.48486167771e-02 4.38959177953e-02 4.24386109393e-02 4.06654278454e-02 + 3.87673596218e-02 3.68889471691e-02 3.51127517762e-02 3.34710625414e-02 3.19731919657e-02 3.06330408871e-02 + 2.94854041377e-02 2.85879356046e-02 2.80098127199e-02 2.78094015925e-02 2.80098127199e-02 2.85879356046e-02 + 2.94854041377e-02 3.06330408871e-02 3.19731919657e-02 3.34710625414e-02 3.51127517762e-02 3.68889471691e-02 + 3.87673596218e-02 4.06654278454e-02 4.24386109393e-02 4.38959177953e-02 4.48486167771e-02 4.51877782102e-02 + 4.44868574481e-02 4.44045560444e-02 4.42752514752e-02 4.42752514752e-02 4.44045560444e-02 4.44868574481e-02 + 4.42634768270e-02 4.35234290368e-02 4.21941579647e-02 4.03527020822e-02 3.81729635435e-02 3.58537824974e-02 + 3.35632692529e-02 3.14127386696e-02 2.94586793037e-02 2.77227537368e-02 2.62153172241e-02 2.49511167951e-02 + 2.39549635512e-02 2.32603028496e-02 2.29016184223e-02 2.29016184223e-02 2.32603028496e-02 2.39549635512e-02 + 2.49511167951e-02 2.62153172241e-02 2.77227537368e-02 2.94586793037e-02 3.14127386696e-02 3.35632692529e-02 + 3.58537824974e-02 3.81729635435e-02 4.03527020822e-02 4.21941579647e-02 4.35234290368e-02 4.42634768270e-02 + 4.49623774036e-02 4.52857661696e-02 4.53738413591e-02 4.52857661696e-02 4.49623774036e-02 4.42634768270e-02 + 4.30547772101e-02 4.12888114430e-02 3.90350130516e-02 3.64535808156e-02 3.37399765679e-02 3.10717223250e-02 + 2.85763383726e-02 2.63252408289e-02 2.43476957086e-02 2.26519365039e-02 2.12413612776e-02 2.01220876747e-02 + 1.93050944183e-02 1.88053010662e-02 1.86367379277e-02 1.88053010662e-02 1.93050944183e-02 2.01220876747e-02 + 2.12413612776e-02 2.26519365039e-02 2.43476957086e-02 2.63252408289e-02 2.85763383726e-02 3.10717223250e-02 + 3.37399765679e-02 3.64535808156e-02 3.90350130516e-02 4.12888114430e-02 4.30547772101e-02 4.42634768270e-02 + 4.62623331670e-02 4.67810667612e-02 4.67810667612e-02 4.62623331670e-02 4.51877782102e-02 4.35234290368e-02 + 4.12888114430e-02 3.85829474965e-02 3.55725175924e-02 3.24534608631e-02 2.94074293899e-02 2.65706573512e-02 + 2.40237109616e-02 2.18005508565e-02 1.99070659239e-02 1.83376793613e-02 1.70848695603e-02 1.61434902729e-02 + 1.55127511572e-02 1.51956958667e-02 1.51956958667e-02 1.55127511572e-02 1.61434902729e-02 1.70848695603e-02 + 1.83376793613e-02 1.99070659239e-02 2.18005508565e-02 2.40237109616e-02 2.65706573512e-02 2.94074293899e-02 + 3.24534608631e-02 3.55725175924e-02 3.85829474965e-02 4.12888114430e-02 4.35234290368e-02 4.51877782102e-02 + 4.80677366203e-02 4.84815544672e-02 4.80677366203e-02 4.68401774785e-02 4.48486167771e-02 4.21941579647e-02 + 3.90350130516e-02 3.55725175924e-02 3.20210145144e-02 2.85734174953e-02 2.53749373622e-02 2.25132701769e-02 + 2.00258575799e-02 1.79167348748e-02 1.61729889157e-02 1.47756456624e-02 1.37059602390e-02 1.29494247541e-02 + 1.24976141314e-02 1.23472319177e-02 1.24976141314e-02 1.29494247541e-02 1.37059602390e-02 1.47756456624e-02 + 1.61729889157e-02 1.79167348748e-02 2.00258575799e-02 2.25132701769e-02 2.53749373622e-02 2.85734174953e-02 + 3.20210145144e-02 3.55725175924e-02 3.90350130516e-02 4.21941579647e-02 4.48486167771e-02 4.68401774785e-02 + 5.00090134447e-02 5.00090134447e-02 4.89192305177e-02 4.68264624901e-02 4.38959177953e-02 4.03527020822e-02 + 3.64535808156e-02 3.24534608631e-02 2.85734174953e-02 2.49776956914e-02 2.17657781241e-02 1.89804120902e-02 + 1.66250325509e-02 1.46810426016e-02 1.31198380533e-02 1.19105819676e-02 1.10259974674e-02 1.04460621935e-02 + 1.01587603229e-02 1.01587603229e-02 1.04460621935e-02 1.10259974674e-02 1.19105819676e-02 1.31198380533e-02 + 1.46810426016e-02 1.66250325509e-02 1.89804120902e-02 2.17657781241e-02 2.49776956914e-02 2.85734174953e-02 + 3.24534608631e-02 3.64535808156e-02 4.03527020822e-02 4.38959177953e-02 4.68264624901e-02 4.89192305177e-02 + 5.18034033720e-02 5.11403130173e-02 4.92182336225e-02 4.62258246981e-02 4.24386109393e-02 3.81729635435e-02 + 3.37399765679e-02 2.94074293899e-02 2.53749373622e-02 2.17657781241e-02 1.86354478304e-02 1.59907282434e-02 + 1.38094745262e-02 1.20550163598e-02 1.06856809758e-02 9.66211927865e-03 8.95261635749e-03 8.53524112695e-03 + 8.39746782805e-03 8.53524112695e-03 8.95261635749e-03 9.66211927865e-03 1.06856809758e-02 1.20550163598e-02 + 1.38094745262e-02 1.59907282434e-02 1.86354478304e-02 2.17657781241e-02 2.53749373622e-02 2.94074293899e-02 + 3.37399765679e-02 3.81729635435e-02 4.24386109393e-02 4.62258246981e-02 4.92182336225e-02 5.11403130173e-02 + 5.33236907840e-02 5.18355302331e-02 4.90231496620e-02 4.51788789706e-02 4.06654278454e-02 3.58537824974e-02 + 3.10717223250e-02 2.65706573512e-02 2.25132701769e-02 1.89804120902e-02 1.59907282434e-02 1.35231772103e-02 + 1.15351431719e-02 9.97511028176e-03 8.79214216133e-03 7.94279014126e-03 7.39443450458e-03 7.12561826537e-03 + 7.12561826537e-03 7.39443450458e-03 7.94279014126e-03 8.79214216133e-03 9.97511028176e-03 1.15351431719e-02 + 1.35231772103e-02 1.59907282434e-02 1.89804120902e-02 2.25132701769e-02 2.65706573512e-02 3.10717223250e-02 + 3.58537824974e-02 4.06654278454e-02 4.51788789706e-02 4.90231496620e-02 5.18355302331e-02 5.33236907840e-02 + 5.45841783826e-02 5.21839135623e-02 4.84855850881e-02 4.38725463784e-02 3.87673596218e-02 3.35632692529e-02 + 2.85763383726e-02 2.40237109616e-02 2.00258575799e-02 1.66250325509e-02 1.38094745262e-02 1.15351431719e-02 + 9.74245511371e-03 8.36917339040e-03 7.35981258047e-03 6.67049181789e-03 6.26978037715e-03 6.13840739734e-03 + 6.26978037715e-03 6.67049181789e-03 7.35981258047e-03 8.36917339040e-03 9.74245511371e-03 1.15351431719e-02 + 1.38094745262e-02 1.66250325509e-02 2.00258575799e-02 2.40237109616e-02 2.85763383726e-02 3.35632692529e-02 + 3.87673596218e-02 4.38725463784e-02 4.84855850881e-02 5.21839135623e-02 5.45841783826e-02 5.54167137150e-02 + 5.56676247698e-02 5.23143637463e-02 4.77625301985e-02 4.24686468881e-02 3.68889471691e-02 3.14127386696e-02 + 2.63252408289e-02 2.18005508565e-02 1.79167348748e-02 1.46810426016e-02 1.20550163598e-02 9.97511028176e-03 + 8.36917339040e-03 7.16922584820e-03 6.31909087196e-03 5.77651892440e-03 5.51272438194e-03 5.51272438194e-03 + 5.77651892440e-03 6.31909087196e-03 7.16922584820e-03 8.36917339040e-03 9.97511028176e-03 1.20550163598e-02 + 1.46810426016e-02 1.79167348748e-02 2.18005508565e-02 2.63252408289e-02 3.14127386696e-02 3.68889471691e-02 + 4.24686468881e-02 4.77625301985e-02 5.23143637463e-02 5.56676247698e-02 5.74494623672e-02 5.74494623672e-02 + 5.66331890923e-02 5.23143637463e-02 4.69561004766e-02 4.10670403681e-02 3.51127517762e-02 2.94586793037e-02 + 2.43476957086e-02 1.99070659239e-02 1.61729889157e-02 1.31198380533e-02 1.06856809758e-02 8.79214216133e-03 + 7.35981258047e-03 6.31909087196e-03 5.61528193683e-03 5.20914423543e-03 5.07652462266e-03 5.20914423543e-03 + 5.61528193683e-03 6.31909087196e-03 7.35981258047e-03 8.79214216133e-03 1.06856809758e-02 1.31198380533e-02 + 1.61729889157e-02 1.99070659239e-02 2.43476957086e-02 2.94586793037e-02 3.51127517762e-02 4.10670403681e-02 + 4.69561004766e-02 5.23143637463e-02 5.66331890923e-02 5.94462807362e-02 6.04237632524e-02 5.94462807362e-02 + 5.74449785733e-02 5.21839135623e-02 4.60913389830e-02 3.97029159910e-02 3.34710625414e-02 2.77227537368e-02 + 2.26519365039e-02 1.83376793613e-02 1.47756456624e-02 1.19105819676e-02 9.66211927865e-03 7.94279014126e-03 + 6.67049181789e-03 5.77651892440e-03 5.20914423543e-03 4.93405372394e-03 4.93405372394e-03 5.20914423543e-03 + 5.77651892440e-03 6.67049181789e-03 7.94279014126e-03 9.66211927865e-03 1.19105819676e-02 1.47756456624e-02 + 1.83376793613e-02 2.26519365039e-02 2.77227537368e-02 3.34710625414e-02 3.97029159910e-02 4.60913389830e-02 + 5.21839135623e-02 5.74449785733e-02 6.13334872428e-02 6.34040688222e-02 6.34040688222e-02 6.13334872428e-02 + 5.79474348197e-02 5.18355302331e-02 4.51323632879e-02 3.83718132369e-02 3.19731919657e-02 2.62153172241e-02 + 2.12413612776e-02 1.70848695603e-02 1.37059602390e-02 1.10259974674e-02 8.95261635749e-03 7.39443450458e-03 + 6.26978037715e-03 5.51272438194e-03 5.07652462266e-03 4.93405372394e-03 5.07652462266e-03 5.51272438194e-03 + 6.26978037715e-03 7.39443450458e-03 8.95261635749e-03 1.10259974674e-02 1.37059602390e-02 1.70848695603e-02 + 2.12413612776e-02 2.62153172241e-02 3.19731919657e-02 3.83718132369e-02 4.51323632879e-02 5.18355302331e-02 + 5.79474348197e-02 6.28828729732e-02 6.61022866145e-02 6.72218662363e-02 6.61022866145e-02 6.28828729732e-02 + 5.78981879671e-02 5.11403130173e-02 4.40291518527e-02 3.70689589239e-02 3.06330408871e-02 2.49511167951e-02 + 2.01220876747e-02 1.61434902729e-02 1.29494247541e-02 1.04460621935e-02 8.53524112695e-03 7.12561826537e-03 + 6.13840739734e-03 5.51272438194e-03 5.20914423543e-03 5.20914423543e-03 5.51272438194e-03 6.13840739734e-03 + 7.12561826537e-03 8.53524112695e-03 1.04460621935e-02 1.29494247541e-02 1.61434902729e-02 2.01220876747e-02 + 2.49511167951e-02 3.06330408871e-02 3.70689589239e-02 4.40291518527e-02 5.11403130173e-02 5.78981879671e-02 + 6.37149803432e-02 6.80033074139e-02 7.02831021338e-02 7.02831021338e-02 6.80033074139e-02 6.37149803432e-02 + 5.70612480291e-02 5.00090134447e-02 4.27763236460e-02 3.58243136049e-02 2.94854041377e-02 2.39549635512e-02 + 1.93050944183e-02 1.55127511572e-02 1.24976141314e-02 1.01587603229e-02 8.39746782805e-03 7.12561826537e-03 + 6.26978037715e-03 5.77651892440e-03 5.61528193683e-03 5.77651892440e-03 6.26978037715e-03 7.12561826537e-03 + 8.39746782805e-03 1.01587603229e-02 1.24976141314e-02 1.55127511572e-02 1.93050944183e-02 2.39549635512e-02 + 2.94854041377e-02 3.58243136049e-02 4.27763236460e-02 5.00090134447e-02 5.70612480291e-02 6.33842515281e-02 + 6.84139609392e-02 7.16581855164e-02 7.27796836797e-02 7.16581855164e-02 6.84139609392e-02 6.33842515281e-02 + 5.53499973529e-02 4.84815544672e-02 4.14579289512e-02 3.47182328687e-02 2.85879356046e-02 2.32603028496e-02 + 1.88053010662e-02 1.51956958667e-02 1.23472319177e-02 1.01587603229e-02 8.53524112695e-03 7.39443450458e-03 + 6.67049181789e-03 6.31909087196e-03 6.31909087196e-03 6.67049181789e-03 7.39443450458e-03 8.53524112695e-03 + 1.01587603229e-02 1.23472319177e-02 1.51956958667e-02 1.88053010662e-02 2.32603028496e-02 2.85879356046e-02 + 3.47182328687e-02 4.14579289512e-02 4.84815544672e-02 5.53499973529e-02 6.15702941626e-02 6.66786802062e-02 + 7.03019494995e-02 7.21810172465e-02 7.21810172465e-02 7.03019494995e-02 6.66786802062e-02 6.15702941626e-02 + 5.29676178633e-02 4.67810667612e-02 4.02540981079e-02 3.38709874542e-02 2.80098127199e-02 2.29016184223e-02 + 1.86367379277e-02 1.51956958667e-02 1.24976141314e-02 1.04460621935e-02 8.95261635749e-03 7.94279014126e-03 + 7.35981258047e-03 7.16922584820e-03 7.35981258047e-03 7.94279014126e-03 8.95261635749e-03 1.04460621935e-02 + 1.24976141314e-02 1.51956958667e-02 1.86367379277e-02 2.29016184223e-02 2.80098127199e-02 3.38709874542e-02 + 4.02540981079e-02 4.67810667612e-02 5.29676178633e-02 5.83399236929e-02 6.25800698666e-02 6.55787911247e-02 + 6.73541476702e-02 6.79419572879e-02 6.73541476702e-02 6.55787911247e-02 6.25800698666e-02 5.83399236929e-02 + 5.04463447592e-02 4.52857661696e-02 3.93968315223e-02 3.34071767353e-02 2.78094015925e-02 2.29016184223e-02 + 1.88053010662e-02 1.55127511572e-02 1.29494247541e-02 1.10259974674e-02 9.66211927865e-03 8.79214216133e-03 + 8.36917339040e-03 8.36917339040e-03 8.79214216133e-03 9.66211927865e-03 1.10259974674e-02 1.29494247541e-02 + 1.55127511572e-02 1.88053010662e-02 2.29016184223e-02 2.78094015925e-02 3.34071767353e-02 3.93968315223e-02 + 4.52857661696e-02 5.04463447592e-02 5.43239294918e-02 5.67236888968e-02 5.79103146750e-02 5.83777841365e-02 + 5.85232784436e-02 5.85232784436e-02 5.83777841365e-02 5.79103146750e-02 5.67236888968e-02 5.43239294918e-02 + 4.85080722970e-02 4.44045560444e-02 3.90848689472e-02 3.34071767353e-02 2.80098127199e-02 2.32603028496e-02 + 1.93050944183e-02 1.61434902729e-02 1.37059602390e-02 1.19105819676e-02 1.06856809758e-02 9.97511028176e-03 + 9.74245511371e-03 9.97511028176e-03 1.06856809758e-02 1.19105819676e-02 1.37059602390e-02 1.61434902729e-02 + 1.93050944183e-02 2.32603028496e-02 2.80098127199e-02 3.34071767353e-02 3.90848689472e-02 4.44045560444e-02 + 4.85080722970e-02 5.06194135765e-02 5.05555186569e-02 4.89850720157e-02 4.70389926376e-02 4.56222411881e-02 + 4.51254329663e-02 4.56222411881e-02 4.70389926376e-02 4.89850720157e-02 5.05555186569e-02 5.06194135765e-02 + 4.77793166757e-02 4.44045560444e-02 3.93968315223e-02 3.38709874542e-02 2.85879356046e-02 2.39549635512e-02 + 2.01220876747e-02 1.70848695603e-02 1.47756456624e-02 1.31198380533e-02 1.20550163598e-02 1.15351431719e-02 + 1.15351431719e-02 1.20550163598e-02 1.31198380533e-02 1.47756456624e-02 1.70848695603e-02 2.01220876747e-02 + 2.39549635512e-02 2.85879356046e-02 3.38709874542e-02 3.93968315223e-02 4.44045560444e-02 4.77793166757e-02 + 4.83941231678e-02 4.58777097769e-02 4.11986868029e-02 3.62214481565e-02 3.25101129901e-02 3.06594619284e-02 + 3.06594619284e-02 3.25101129901e-02 3.62214481565e-02 4.11986868029e-02 4.58777097769e-02 4.83941231678e-02 + 4.85080722970e-02 4.52857661696e-02 4.02540981079e-02 3.47182328687e-02 2.94854041377e-02 2.49511167951e-02 + 2.12413612776e-02 1.83376793613e-02 1.61729889157e-02 1.46810426016e-02 1.38094745262e-02 1.35231772103e-02 + 1.38094745262e-02 1.46810426016e-02 1.61729889157e-02 1.83376793613e-02 2.12413612776e-02 2.49511167951e-02 + 2.94854041377e-02 3.47182328687e-02 4.02540981079e-02 4.52857661696e-02 4.85080722970e-02 4.83941231678e-02 + 4.41366450522e-02 3.67025276917e-02 2.86292518106e-02 2.23413746600e-02 1.87771308641e-02 1.76819501362e-02 + 1.87771308641e-02 2.23413746600e-02 2.86292518106e-02 3.67025276917e-02 4.41366450522e-02 4.83941231678e-02 + 5.04463447592e-02 4.67810667612e-02 4.14579289512e-02 3.58243136049e-02 3.06330408871e-02 2.62153172241e-02 + 2.26519365039e-02 1.99070659239e-02 1.79167348748e-02 1.66250325509e-02 1.59907282434e-02 1.59907282434e-02 + 1.66250325509e-02 1.79167348748e-02 1.99070659239e-02 2.26519365039e-02 2.62153172241e-02 3.06330408871e-02 + 3.58243136049e-02 4.14579289512e-02 4.67810667612e-02 5.04463447592e-02 5.06194135765e-02 4.58777097769e-02 + 3.67025276917e-02 2.59250062413e-02 1.69491736420e-02 1.14596764125e-02 9.13060134292e-03 9.13060134292e-03 + 1.14596764125e-02 1.69491736420e-02 2.59250062413e-02 3.67025276917e-02 4.58777097769e-02 5.06194135765e-02 + 5.29676178633e-02 4.84815544672e-02 4.27763236460e-02 3.70689589239e-02 3.19731919657e-02 2.77227537368e-02 + 2.43476957086e-02 2.18005508565e-02 2.00258575799e-02 1.89804120902e-02 1.86354478304e-02 1.89804120902e-02 + 2.00258575799e-02 2.18005508565e-02 2.43476957086e-02 2.77227537368e-02 3.19731919657e-02 3.70689589239e-02 + 4.27763236460e-02 4.84815544672e-02 5.29676178633e-02 5.43239294918e-02 5.05555186569e-02 4.11986868029e-02 + 2.86292518106e-02 1.69491736420e-02 9.05419851032e-03 5.17285277950e-03 4.10298626852e-03 5.17285277950e-03 + 9.05419851032e-03 1.69491736420e-02 2.86292518106e-02 4.11986868029e-02 5.05555186569e-02 5.43239294918e-02 + 5.53499973529e-02 5.00090134447e-02 4.40291518527e-02 3.83718132369e-02 3.34710625414e-02 2.94586793037e-02 + 2.63252408289e-02 2.40237109616e-02 2.25132701769e-02 2.17657781241e-02 2.17657781241e-02 2.25132701769e-02 + 2.40237109616e-02 2.63252408289e-02 2.94586793037e-02 3.34710625414e-02 3.83718132369e-02 4.40291518527e-02 + 5.00090134447e-02 5.53499973529e-02 5.83399236929e-02 5.67236888968e-02 4.89850720157e-02 3.62214481565e-02 + 2.23413746600e-02 1.14596764125e-02 5.17285277950e-03 2.64004483879e-03 2.64004483879e-03 5.17285277950e-03 + 1.14596764125e-02 2.23413746600e-02 3.62214481565e-02 4.89850720157e-02 5.67236888968e-02 5.83399236929e-02 + 5.70612480291e-02 5.11403130173e-02 4.51323632879e-02 3.97029159910e-02 3.51127517762e-02 3.14127386696e-02 + 2.85763383726e-02 2.65706573512e-02 2.53749373622e-02 2.49776956914e-02 2.53749373622e-02 2.65706573512e-02 + 2.85763383726e-02 3.14127386696e-02 3.51127517762e-02 3.97029159910e-02 4.51323632879e-02 5.11403130173e-02 + 5.70612480291e-02 6.15702941626e-02 6.25800698666e-02 5.79103146750e-02 4.70389926376e-02 3.25101129901e-02 + 1.87771308641e-02 9.13060134292e-03 4.10298626852e-03 2.64004483879e-03 4.10298626852e-03 9.13060134292e-03 + 1.87771308641e-02 3.25101129901e-02 4.70389926376e-02 5.79103146750e-02 6.25800698666e-02 6.15702941626e-02 + 5.78981879671e-02 5.18355302331e-02 4.60913389830e-02 4.10670403681e-02 3.68889471691e-02 3.35632692529e-02 + 3.10717223250e-02 2.94074293899e-02 2.85734174953e-02 2.85734174953e-02 2.94074293899e-02 3.10717223250e-02 + 3.35632692529e-02 3.68889471691e-02 4.10670403681e-02 4.60913389830e-02 5.18355302331e-02 5.78981879671e-02 + 6.33842515281e-02 6.66786802062e-02 6.55787911247e-02 5.83777841365e-02 4.56222411881e-02 3.06594619284e-02 + 1.76819501362e-02 9.13060134292e-03 5.17285277950e-03 5.17285277950e-03 9.13060134292e-03 1.76819501362e-02 + 3.06594619284e-02 4.56222411881e-02 5.83777841365e-02 6.55787911247e-02 6.66786802062e-02 6.33842515281e-02 + 5.79474348197e-02 5.21839135623e-02 4.69561004766e-02 4.24686468881e-02 3.87673596218e-02 3.58537824974e-02 + 3.37399765679e-02 3.24534608631e-02 3.20210145144e-02 3.24534608631e-02 3.37399765679e-02 3.58537824974e-02 + 3.87673596218e-02 4.24686468881e-02 4.69561004766e-02 5.21839135623e-02 5.79474348197e-02 6.37149803432e-02 + 6.84139609392e-02 7.03019494995e-02 6.73541476702e-02 5.85232784436e-02 4.51254329663e-02 3.06594619284e-02 + 1.87771308641e-02 1.14596764125e-02 9.05419851032e-03 1.14596764125e-02 1.87771308641e-02 3.06594619284e-02 + 4.51254329663e-02 5.85232784436e-02 6.73541476702e-02 7.03019494995e-02 6.84139609392e-02 6.37149803432e-02 + 5.74449785733e-02 5.23143637463e-02 4.77625301985e-02 4.38725463784e-02 4.06654278454e-02 3.81729635435e-02 + 3.64535808156e-02 3.55725175924e-02 3.55725175924e-02 3.64535808156e-02 3.81729635435e-02 4.06654278454e-02 + 4.38725463784e-02 4.77625301985e-02 5.23143637463e-02 5.74449785733e-02 6.28828729732e-02 6.80033074139e-02 + 7.16581855164e-02 7.21810172465e-02 6.79419572879e-02 5.85232784436e-02 4.56222411881e-02 3.25101129901e-02 + 2.23413746600e-02 1.69491736420e-02 1.69491736420e-02 2.23413746600e-02 3.25101129901e-02 4.56222411881e-02 + 5.85232784436e-02 6.79419572879e-02 7.21810172465e-02 7.16581855164e-02 6.80033074139e-02 6.28828729732e-02 + 5.66331890923e-02 5.23143637463e-02 4.84855850881e-02 4.51788789706e-02 4.24386109393e-02 4.03527020822e-02 + 3.90350130516e-02 3.85829474965e-02 3.90350130516e-02 4.03527020822e-02 4.24386109393e-02 4.51788789706e-02 + 4.84855850881e-02 5.23143637463e-02 5.66331890923e-02 6.13334872428e-02 6.61022866145e-02 7.02831021338e-02 + 7.27796836797e-02 7.21810172465e-02 6.73541476702e-02 5.83777841365e-02 4.70389926376e-02 3.62214481565e-02 + 2.86292518106e-02 2.59250062413e-02 2.86292518106e-02 3.62214481565e-02 4.70389926376e-02 5.83777841365e-02 + 6.73541476702e-02 7.21810172465e-02 7.27796836797e-02 7.02831021338e-02 6.61022866145e-02 6.13334872428e-02 + 5.56676247698e-02 5.21839135623e-02 4.90231496620e-02 4.62258246981e-02 4.38959177953e-02 4.21941579647e-02 + 4.12888114430e-02 4.12888114430e-02 4.21941579647e-02 4.38959177953e-02 4.62258246981e-02 4.90231496620e-02 + 5.21839135623e-02 5.56676247698e-02 5.94462807362e-02 6.34040688222e-02 6.72218662363e-02 7.02831021338e-02 + 7.16581855164e-02 7.03019494995e-02 6.55787911247e-02 5.79103146750e-02 4.89850720157e-02 4.11986868029e-02 + 3.67025276917e-02 3.67025276917e-02 4.11986868029e-02 4.89850720157e-02 5.79103146750e-02 6.55787911247e-02 + 7.03019494995e-02 7.16581855164e-02 7.02831021338e-02 6.72218662363e-02 6.34040688222e-02 5.94462807362e-02 + 5.45841783826e-02 5.18355302331e-02 4.92182336225e-02 4.68264624901e-02 4.48486167771e-02 4.35234290368e-02 + 4.30547772101e-02 4.35234290368e-02 4.48486167771e-02 4.68264624901e-02 4.92182336225e-02 5.18355302331e-02 + 5.45841783826e-02 5.74494623672e-02 6.04237632524e-02 6.34040688222e-02 6.61022866145e-02 6.80033074139e-02 + 6.84139609392e-02 6.66786802062e-02 6.25800698666e-02 5.67236888968e-02 5.05555186569e-02 4.58777097769e-02 + 4.41366450522e-02 4.58777097769e-02 5.05555186569e-02 5.67236888968e-02 6.25800698666e-02 6.66786802062e-02 + 6.84139609392e-02 6.80033074139e-02 6.61022866145e-02 6.34040688222e-02 6.04237632524e-02 5.74494623672e-02 + 5.33236907840e-02 5.11403130173e-02 4.89192305177e-02 4.68401774785e-02 4.51877782102e-02 4.42634768270e-02 + 4.42634768270e-02 4.51877782102e-02 4.68401774785e-02 4.89192305177e-02 5.11403130173e-02 5.33236907840e-02 + 5.54167137150e-02 5.74494623672e-02 5.94462807362e-02 6.13334872428e-02 6.28828729732e-02 6.37149803432e-02 + 6.33842515281e-02 6.15702941626e-02 5.83399236929e-02 5.43239294918e-02 5.06194135765e-02 4.83941231678e-02 + 4.83941231678e-02 5.06194135765e-02 5.43239294918e-02 5.83399236929e-02 6.15702941626e-02 6.33842515281e-02 + 6.37149803432e-02 6.28828729732e-02 6.13334872428e-02 5.94462807362e-02 5.74494623672e-02 5.54167137150e-02 + 5.77319585491e-02 5.53499973529e-02 5.26931433274e-02 5.03535465114e-02 4.89738024005e-02 4.89738024005e-02 + 5.03535465114e-02 5.26931433274e-02 5.53499973529e-02 5.77319585491e-02 5.94941697642e-02 6.05796981280e-02 + 6.11288569567e-02 6.13379141192e-02 6.13379141192e-02 6.11288569567e-02 6.05796981280e-02 5.94941697642e-02 + 5.77319585491e-02 5.53499973529e-02 5.26931433274e-02 5.03535465114e-02 4.89738024005e-02 4.89738024005e-02 + 5.03535465114e-02 5.26931433274e-02 5.53499973529e-02 5.77319585491e-02 5.94941697642e-02 6.05796981280e-02 + 6.11288569567e-02 6.13379141192e-02 6.13379141192e-02 6.11288569567e-02 6.05796981280e-02 5.94941697642e-02 + 5.53499973529e-02 5.29676178633e-02 5.04463447592e-02 4.85080722970e-02 4.77793166757e-02 4.85080722970e-02 + 5.04463447592e-02 5.29676178633e-02 5.53499973529e-02 5.70612480291e-02 5.78981879671e-02 5.79474348197e-02 + 5.74449785733e-02 5.66331890923e-02 5.56676247698e-02 5.45841783826e-02 5.33236907840e-02 5.18034033720e-02 + 5.00090134447e-02 4.80677366203e-02 4.62623331670e-02 4.49623774036e-02 4.44868574481e-02 4.49623774036e-02 + 4.62623331670e-02 4.80677366203e-02 5.00090134447e-02 5.18034033720e-02 5.33236907840e-02 5.45841783826e-02 + 5.56676247698e-02 5.66331890923e-02 5.74449785733e-02 5.79474348197e-02 5.78981879671e-02 5.70612480291e-02 + 5.26931433274e-02 5.04463447592e-02 4.83002627794e-02 4.69885184966e-02 4.69885184966e-02 4.83002627794e-02 + 5.04463447592e-02 5.26931433274e-02 5.43692149489e-02 5.51031089527e-02 5.48714786192e-02 5.38883507401e-02 + 5.24477482650e-02 5.08044555558e-02 4.91148354625e-02 4.74313143781e-02 4.57409612273e-02 4.40291518527e-02 + 4.23378898536e-02 4.07924714489e-02 3.95849180057e-02 3.89160663350e-02 3.89160663350e-02 3.95849180057e-02 + 4.07924714489e-02 4.23378898536e-02 4.40291518527e-02 4.57409612273e-02 4.74313143781e-02 4.91148354625e-02 + 5.08044555558e-02 5.24477482650e-02 5.38883507401e-02 5.48714786192e-02 5.51031089527e-02 5.43692149489e-02 + 5.03535465114e-02 4.85080722970e-02 4.69885184966e-02 4.64020316983e-02 4.69885184966e-02 4.85080722970e-02 + 5.03535465114e-02 5.18281863755e-02 5.24339557043e-02 5.20147259753e-02 5.07121410456e-02 4.88190878681e-02 + 4.66403070569e-02 4.44094609233e-02 4.22610610741e-02 4.02453701311e-02 3.83718132369e-02 3.66568505349e-02 + 3.51532871168e-02 3.39533984936e-02 3.31691643222e-02 3.28952522339e-02 3.31691643222e-02 3.39533984936e-02 + 3.51532871168e-02 3.66568505349e-02 3.83718132369e-02 4.02453701311e-02 4.22610610741e-02 4.44094609233e-02 + 4.66403070569e-02 4.88190878681e-02 5.07121410456e-02 5.20147259753e-02 5.24339557043e-02 5.18281863755e-02 + 4.89738024005e-02 4.77793166757e-02 4.69885184966e-02 4.69885184966e-02 4.77793166757e-02 4.89738024005e-02 + 4.99825941802e-02 5.02828320119e-02 4.96193341715e-02 4.80406383964e-02 4.57968161948e-02 4.32002938784e-02 + 4.05244812822e-02 3.79563421300e-02 3.55932306397e-02 3.34710625414e-02 3.16041856284e-02 3.00149219248e-02 + 2.87439673059e-02 2.78466298707e-02 2.73794467347e-02 2.73794467347e-02 2.78466298707e-02 2.87439673059e-02 + 3.00149219248e-02 3.16041856284e-02 3.34710625414e-02 3.55932306397e-02 3.79563421300e-02 4.05244812822e-02 + 4.32002938784e-02 4.57968161948e-02 4.80406383964e-02 4.96193341715e-02 5.02828320119e-02 4.99825941802e-02 + 4.89738024005e-02 4.85080722970e-02 4.83002627794e-02 4.85080722970e-02 4.89738024005e-02 4.93048229800e-02 + 4.90700187394e-02 4.79989400749e-02 4.60731359718e-02 4.34838779539e-02 4.05199675384e-02 3.74634706166e-02 + 3.45282284639e-02 3.18414068716e-02 2.94586793037e-02 2.73972646659e-02 2.56657154446e-02 2.42781130820e-02 + 2.32562353108e-02 2.26267522861e-02 2.24136125305e-02 2.26267522861e-02 2.32562353108e-02 2.42781130820e-02 + 2.56657154446e-02 2.73972646659e-02 2.94586793037e-02 3.18414068716e-02 3.45282284639e-02 3.74634706166e-02 + 4.05199675384e-02 4.34838779539e-02 4.60731359718e-02 4.79989400749e-02 4.90700187394e-02 4.93048229800e-02 + 5.03535465114e-02 5.04463447592e-02 5.04463447592e-02 5.03535465114e-02 4.99825941802e-02 4.90700187394e-02 + 4.74231711778e-02 4.50208900473e-02 4.20165784801e-02 3.86662855632e-02 3.52402742752e-02 3.19590319446e-02 + 2.89647599965e-02 2.63252408289e-02 2.40594329852e-02 2.21666114252e-02 2.06439962171e-02 1.94921954522e-02 + 1.87162119832e-02 1.83246021902e-02 1.83246021902e-02 1.87162119832e-02 1.94921954522e-02 2.06439962171e-02 + 2.21666114252e-02 2.40594329852e-02 2.63252408289e-02 2.89647599965e-02 3.19590319446e-02 3.52402742752e-02 + 3.86662855632e-02 4.20165784801e-02 4.50208900473e-02 4.74231711778e-02 4.90700187394e-02 4.99825941802e-02 + 5.26931433274e-02 5.29676178633e-02 5.26931433274e-02 5.18281863755e-02 5.02828320119e-02 4.79989400749e-02 + 4.50208900473e-02 4.15120643887e-02 3.77147526395e-02 3.38859304601e-02 3.02423286704e-02 2.69304328597e-02 + 2.40237109616e-02 2.15413174517e-02 1.94746684497e-02 1.78072941675e-02 1.65234811342e-02 1.56112881223e-02 + 1.50645020089e-02 1.48820928374e-02 1.50645020089e-02 1.56112881223e-02 1.65234811342e-02 1.78072941675e-02 + 1.94746684497e-02 2.15413174517e-02 2.40237109616e-02 2.69304328597e-02 3.02423286704e-02 3.38859304601e-02 + 3.77147526395e-02 4.15120643887e-02 4.50208900473e-02 4.79989400749e-02 5.02828320119e-02 5.18281863755e-02 + 5.53499973529e-02 5.53499973529e-02 5.43692149489e-02 5.24339557043e-02 4.96193341715e-02 4.60731359718e-02 + 4.20165784801e-02 3.77147526395e-02 3.34304675050e-02 2.93819034216e-02 2.57176061925e-02 2.25132701769e-02 + 1.97871783123e-02 1.75241772421e-02 1.56960478729e-02 1.42727054437e-02 1.32272933414e-02 1.25396406703e-02 + 1.21980827392e-02 1.21980827392e-02 1.25396406703e-02 1.32272933414e-02 1.42727054437e-02 1.56960478729e-02 + 1.75241772421e-02 1.97871783123e-02 2.25132701769e-02 2.57176061925e-02 2.93819034216e-02 3.34304675050e-02 + 3.77147526395e-02 4.20165784801e-02 4.60731359718e-02 4.96193341715e-02 5.24339557043e-02 5.43692149489e-02 + 5.77319585491e-02 5.70612480291e-02 5.51031089527e-02 5.20147259753e-02 4.80406383964e-02 4.34838779539e-02 + 3.86662855632e-02 3.38859304601e-02 2.93819034216e-02 2.53146898274e-02 2.17657781241e-02 1.87538902948e-02 + 1.62588522549e-02 1.42425749040e-02 1.26620800682e-02 1.14766013692e-02 1.06524671204e-02 1.01663421573e-02 + 1.00055755901e-02 1.01663421573e-02 1.06524671204e-02 1.14766013692e-02 1.26620800682e-02 1.42425749040e-02 + 1.62588522549e-02 1.87538902948e-02 2.17657781241e-02 2.53146898274e-02 2.93819034216e-02 3.38859304601e-02 + 3.86662855632e-02 4.34838779539e-02 4.80406383964e-02 5.20147259753e-02 5.51031089527e-02 5.70612480291e-02 + 5.94941697642e-02 5.78981879671e-02 5.48714786192e-02 5.07121410456e-02 4.57968161948e-02 4.05199675384e-02 + 3.52402742752e-02 3.02423286704e-02 2.57176061925e-02 2.17657781241e-02 1.84129279741e-02 1.56375665721e-02 + 1.33939588194e-02 1.16276251073e-02 1.02846446979e-02 9.31810768724e-03 8.69246386814e-03 8.38500711079e-03 + 8.38500711079e-03 8.69246386814e-03 9.31810768724e-03 1.02846446979e-02 1.16276251073e-02 1.33939588194e-02 + 1.56375665721e-02 1.84129279741e-02 2.17657781241e-02 2.57176061925e-02 3.02423286704e-02 3.52402742752e-02 + 4.05199675384e-02 4.57968161948e-02 5.07121410456e-02 5.48714786192e-02 5.78981879671e-02 5.94941697642e-02 + 6.05796981280e-02 5.79474348197e-02 5.38883507401e-02 4.88190878681e-02 4.32002938784e-02 3.74634706166e-02 + 3.19590319446e-02 2.69304328597e-02 2.25132701769e-02 1.87538902948e-02 1.56375665721e-02 1.31152359900e-02 + 1.11228159589e-02 9.59384043225e-03 8.46823559623e-03 7.69793885145e-03 7.24904282964e-03 7.10160482063e-03 + 7.24904282964e-03 7.69793885145e-03 8.46823559623e-03 9.59384043225e-03 1.11228159589e-02 1.31152359900e-02 + 1.56375665721e-02 1.87538902948e-02 2.25132701769e-02 2.69304328597e-02 3.19590319446e-02 3.74634706166e-02 + 4.32002938784e-02 4.88190878681e-02 5.38883507401e-02 5.79474348197e-02 6.05796981280e-02 6.14923433640e-02 + 6.11288569567e-02 5.74449785733e-02 5.24477482650e-02 4.66403070569e-02 4.05244812822e-02 3.45282284639e-02 + 2.89647599965e-02 2.40237109616e-02 1.97871783123e-02 1.62588522549e-02 1.33939588194e-02 1.11228159589e-02 + 9.36769905218e-03 8.05519399644e-03 7.12420828954e-03 6.52902358143e-03 6.23916674188e-03 6.23916674188e-03 + 6.52902358143e-03 7.12420828954e-03 8.05519399644e-03 9.36769905218e-03 1.11228159589e-02 1.33939588194e-02 + 1.62588522549e-02 1.97871783123e-02 2.40237109616e-02 2.89647599965e-02 3.45282284639e-02 4.05244812822e-02 + 4.66403070569e-02 5.24477482650e-02 5.74449785733e-02 6.11288569567e-02 6.30873277659e-02 6.30873277659e-02 + 6.13379141192e-02 5.66331890923e-02 5.08044555558e-02 4.44094609233e-02 3.79563421300e-02 3.18414068716e-02 + 2.63252408289e-02 2.15413174517e-02 1.75241772421e-02 1.42425749040e-02 1.16276251073e-02 9.59384043225e-03 + 8.05519399644e-03 6.93665223838e-03 6.17967298585e-03 5.74257125314e-03 5.59978938003e-03 5.74257125314e-03 + 6.17967298585e-03 6.93665223838e-03 8.05519399644e-03 9.59384043225e-03 1.16276251073e-02 1.42425749040e-02 + 1.75241772421e-02 2.15413174517e-02 2.63252408289e-02 3.18414068716e-02 3.79563421300e-02 4.44094609233e-02 + 5.08044555558e-02 5.66331890923e-02 6.13379141192e-02 6.44054743742e-02 6.54719417706e-02 6.44054743742e-02 + 6.13379141192e-02 5.56676247698e-02 4.91148354625e-02 4.22610610741e-02 3.55932306397e-02 2.94586793037e-02 + 2.40594329852e-02 1.94746684497e-02 1.56960478729e-02 1.26620800682e-02 1.02846446979e-02 8.46823559623e-03 + 7.12420828954e-03 6.17967298585e-03 5.58034633768e-03 5.28994524639e-03 5.28994524639e-03 5.58034633768e-03 + 6.17967298585e-03 7.12420828954e-03 8.46823559623e-03 1.02846446979e-02 1.26620800682e-02 1.56960478729e-02 + 1.94746684497e-02 2.40594329852e-02 2.94586793037e-02 3.55932306397e-02 4.22610610741e-02 4.91148354625e-02 + 5.56676247698e-02 6.13379141192e-02 6.55352798807e-02 6.77723654588e-02 6.77723654588e-02 6.55352798807e-02 + 6.11288569567e-02 5.45841783826e-02 4.74313143781e-02 4.02453701311e-02 3.34710625414e-02 2.73972646659e-02 + 2.21666114252e-02 1.78072941675e-02 1.42727054437e-02 1.14766013692e-02 9.31810768724e-03 7.69793885145e-03 + 6.52902358143e-03 5.74257125314e-03 5.28994524639e-03 5.14226972170e-03 5.28994524639e-03 5.74257125314e-03 + 6.52902358143e-03 7.69793885145e-03 9.31810768724e-03 1.14766013692e-02 1.42727054437e-02 1.78072941675e-02 + 2.21666114252e-02 2.73972646659e-02 3.34710625414e-02 4.02453701311e-02 4.74313143781e-02 5.45841783826e-02 + 6.11288569567e-02 6.64284767715e-02 6.98920688762e-02 7.10977313661e-02 6.98920688762e-02 6.64284767715e-02 + 6.05796981280e-02 5.33236907840e-02 4.57409612273e-02 3.83718132369e-02 3.16041856284e-02 2.56657154446e-02 + 2.06439962171e-02 1.65234811342e-02 1.32272933414e-02 1.06524671204e-02 8.69246386814e-03 7.24904282964e-03 + 6.23916674188e-03 5.59978938003e-03 5.28994524639e-03 5.28994524639e-03 5.59978938003e-03 6.23916674188e-03 + 7.24904282964e-03 8.69246386814e-03 1.06524671204e-02 1.32272933414e-02 1.65234811342e-02 2.06439962171e-02 + 2.56657154446e-02 3.16041856284e-02 3.83718132369e-02 4.57409612273e-02 5.33236907840e-02 6.05796981280e-02 + 6.68641206041e-02 7.15201290633e-02 7.40032629540e-02 7.40032629540e-02 7.15201290633e-02 6.68641206041e-02 + 5.94941697642e-02 5.18034033720e-02 4.40291518527e-02 3.66568505349e-02 3.00149219248e-02 2.42781130820e-02 + 1.94921954522e-02 1.56112881223e-02 1.25396406703e-02 1.01663421573e-02 8.38500711079e-03 7.10160482063e-03 + 6.23916674188e-03 5.74257125314e-03 5.58034633768e-03 5.74257125314e-03 6.23916674188e-03 7.10160482063e-03 + 8.38500711079e-03 1.01663421573e-02 1.25396406703e-02 1.56112881223e-02 1.94921954522e-02 2.42781130820e-02 + 3.00149219248e-02 3.66568505349e-02 4.40291518527e-02 5.18034033720e-02 5.94941697642e-02 6.64898780493e-02 + 7.21264918488e-02 7.57970302390e-02 7.70723261920e-02 7.57970302390e-02 7.21264918488e-02 6.64898780493e-02 + 5.77319585491e-02 5.00090134447e-02 4.23378898536e-02 3.51532871168e-02 2.87439673059e-02 2.32562353108e-02 + 1.87162119832e-02 1.50645020089e-02 1.21980827392e-02 1.00055755901e-02 8.38500711079e-03 7.24904282964e-03 + 6.52902358143e-03 6.17967298585e-03 6.17967298585e-03 6.52902358143e-03 7.24904282964e-03 8.38500711079e-03 + 1.00055755901e-02 1.21980827392e-02 1.50645020089e-02 1.87162119832e-02 2.32562353108e-02 2.87439673059e-02 + 3.51532871168e-02 4.23378898536e-02 5.00090134447e-02 5.77319585491e-02 6.49555724266e-02 7.10787520021e-02 + 7.55368812409e-02 7.78881394404e-02 7.78881394404e-02 7.55368812409e-02 7.10787520021e-02 6.49555724266e-02 + 5.53499973529e-02 4.80677366203e-02 4.07924714489e-02 3.39533984936e-02 2.78466298707e-02 2.26267522861e-02 + 1.83246021902e-02 1.48820928374e-02 1.21980827392e-02 1.01663421573e-02 8.69246386814e-03 7.69793885145e-03 + 7.12420828954e-03 6.93665223838e-03 7.12420828954e-03 7.69793885145e-03 8.69246386814e-03 1.01663421573e-02 + 1.21980827392e-02 1.48820928374e-02 1.83246021902e-02 2.26267522861e-02 2.78466298707e-02 3.39533984936e-02 + 4.07924714489e-02 4.80677366203e-02 5.53499973529e-02 6.21334821617e-02 6.79320857310e-02 7.23556493700e-02 + 7.51264696898e-02 7.60705845667e-02 7.51264696898e-02 7.23556493700e-02 6.79320857310e-02 6.21334821617e-02 + 5.26931433274e-02 4.62623331670e-02 3.95849180057e-02 3.31691643222e-02 2.73794467347e-02 2.24136125305e-02 + 1.83246021902e-02 1.50645020089e-02 1.25396406703e-02 1.06524671204e-02 9.31810768724e-03 8.46823559623e-03 + 8.05519399644e-03 8.05519399644e-03 8.46823559623e-03 9.31810768724e-03 1.06524671204e-02 1.25396406703e-02 + 1.50645020089e-02 1.83246021902e-02 2.24136125305e-02 2.73794467347e-02 3.31691643222e-02 3.95849180057e-02 + 4.62623331670e-02 5.26931433274e-02 5.83399236929e-02 6.28259810566e-02 6.60504635380e-02 6.81077724909e-02 + 6.91119067669e-02 6.91119067669e-02 6.81077724909e-02 6.60504635380e-02 6.28259810566e-02 5.83399236929e-02 + 5.03535465114e-02 4.49623774036e-02 3.89160663350e-02 3.28952522339e-02 2.73794467347e-02 2.26267522861e-02 + 1.87162119832e-02 1.56112881223e-02 1.32272933414e-02 1.14766013692e-02 1.02846446979e-02 9.59384043225e-03 + 9.36769905218e-03 9.59384043225e-03 1.02846446979e-02 1.14766013692e-02 1.32272933414e-02 1.56112881223e-02 + 1.87162119832e-02 2.26267522861e-02 2.73794467347e-02 3.28952522339e-02 3.89160663350e-02 4.49623774036e-02 + 5.03535465114e-02 5.43925934286e-02 5.67236888968e-02 5.75824043038e-02 5.76200322747e-02 5.74463352203e-02 + 5.73653289979e-02 5.74463352203e-02 5.76200322747e-02 5.75824043038e-02 5.67236888968e-02 5.43925934286e-02 + 4.89738024005e-02 4.44868574481e-02 3.89160663350e-02 3.31691643222e-02 2.78466298707e-02 2.32562353108e-02 + 1.94921954522e-02 1.65234811342e-02 1.42727054437e-02 1.26620800682e-02 1.16276251073e-02 1.11228159589e-02 + 1.11228159589e-02 1.16276251073e-02 1.26620800682e-02 1.42727054437e-02 1.65234811342e-02 1.94921954522e-02 + 2.32562353108e-02 2.78466298707e-02 3.31691643222e-02 3.89160663350e-02 4.44868574481e-02 4.89738024005e-02 + 5.13869204668e-02 5.12221625406e-02 4.89850720157e-02 4.60013609401e-02 4.35588929466e-02 4.22847991283e-02 + 4.22847991283e-02 4.35588929466e-02 4.60013609401e-02 4.89850720157e-02 5.12221625406e-02 5.13869204668e-02 + 4.89738024005e-02 4.49623774036e-02 3.95849180057e-02 3.39533984936e-02 2.87439673059e-02 2.42781130820e-02 + 2.06439962171e-02 1.78072941675e-02 1.56960478729e-02 1.42425749040e-02 1.33939588194e-02 1.31152359900e-02 + 1.33939588194e-02 1.42425749040e-02 1.56960478729e-02 1.78072941675e-02 2.06439962171e-02 2.42781130820e-02 + 2.87439673059e-02 3.39533984936e-02 3.95849180057e-02 4.49623774036e-02 4.89738024005e-02 5.02620593726e-02 + 4.79609401864e-02 4.26203265537e-02 3.62214481565e-02 3.09103717113e-02 2.77489957459e-02 2.67478820537e-02 + 2.77489957459e-02 3.09103717113e-02 3.62214481565e-02 4.26203265537e-02 4.79609401864e-02 5.02620593726e-02 + 5.03535465114e-02 4.62623331670e-02 4.07924714489e-02 3.51532871168e-02 3.00149219248e-02 2.56657154446e-02 + 2.21666114252e-02 1.94746684497e-02 1.75241772421e-02 1.62588522549e-02 1.56375665721e-02 1.56375665721e-02 + 1.62588522549e-02 1.75241772421e-02 1.94746684497e-02 2.21666114252e-02 2.56657154446e-02 3.00149219248e-02 + 3.51532871168e-02 4.07924714489e-02 4.62623331670e-02 5.03535465114e-02 5.13869204668e-02 4.79609401864e-02 + 4.02808330656e-02 3.07039905741e-02 2.23413746600e-02 1.69819929531e-02 1.46090879135e-02 1.46090879135e-02 + 1.69819929531e-02 2.23413746600e-02 3.07039905741e-02 4.02808330656e-02 4.79609401864e-02 5.13869204668e-02 + 5.26931433274e-02 4.80677366203e-02 4.23378898536e-02 3.66568505349e-02 3.16041856284e-02 2.73972646659e-02 + 2.40594329852e-02 2.15413174517e-02 1.97871783123e-02 1.87538902948e-02 1.84129279741e-02 1.87538902948e-02 + 1.97871783123e-02 2.15413174517e-02 2.40594329852e-02 2.73972646659e-02 3.16041856284e-02 3.66568505349e-02 + 4.23378898536e-02 4.80677366203e-02 5.26931433274e-02 5.43925934286e-02 5.12221625406e-02 4.26203265537e-02 + 3.07039905741e-02 1.93490286376e-02 1.14596764125e-02 7.45857574908e-03 6.32692063078e-03 7.45857574908e-03 + 1.14596764125e-02 1.93490286376e-02 3.07039905741e-02 4.26203265537e-02 5.12221625406e-02 5.43925934286e-02 + 5.53499973529e-02 5.00090134447e-02 4.40291518527e-02 3.83718132369e-02 3.34710625414e-02 2.94586793037e-02 + 2.63252408289e-02 2.40237109616e-02 2.25132701769e-02 2.17657781241e-02 2.17657781241e-02 2.25132701769e-02 + 2.40237109616e-02 2.63252408289e-02 2.94586793037e-02 3.34710625414e-02 3.83718132369e-02 4.40291518527e-02 + 5.00090134447e-02 5.53499973529e-02 5.83399236929e-02 5.67236888968e-02 4.89850720157e-02 3.62214481565e-02 + 2.23413746600e-02 1.14596764125e-02 5.17285277950e-03 2.64004483879e-03 2.64004483879e-03 5.17285277950e-03 + 1.14596764125e-02 2.23413746600e-02 3.62214481565e-02 4.89850720157e-02 5.67236888968e-02 5.83399236929e-02 + 5.77319585491e-02 5.18034033720e-02 4.57409612273e-02 4.02453701311e-02 3.55932306397e-02 3.18414068716e-02 + 2.89647599965e-02 2.69304328597e-02 2.57176061925e-02 2.53146898274e-02 2.57176061925e-02 2.69304328597e-02 + 2.89647599965e-02 3.18414068716e-02 3.55932306397e-02 4.02453701311e-02 4.57409612273e-02 5.18034033720e-02 + 5.77319585491e-02 6.21334821617e-02 6.28259810566e-02 5.75824043038e-02 4.60013609401e-02 3.09103717113e-02 + 1.69819929531e-02 7.45857574908e-03 2.64004483879e-03 1.27020863940e-03 2.64004483879e-03 7.45857574908e-03 + 1.69819929531e-02 3.09103717113e-02 4.60013609401e-02 5.75824043038e-02 6.28259810566e-02 6.21334821617e-02 + 5.94941697642e-02 5.33236907840e-02 4.74313143781e-02 4.22610610741e-02 3.79563421300e-02 3.45282284639e-02 + 3.19590319446e-02 3.02423286704e-02 2.93819034216e-02 2.93819034216e-02 3.02423286704e-02 3.19590319446e-02 + 3.45282284639e-02 3.79563421300e-02 4.22610610741e-02 4.74313143781e-02 5.33236907840e-02 5.94941697642e-02 + 6.49555724266e-02 6.79320857310e-02 6.60504635380e-02 5.76200322747e-02 4.35588929466e-02 2.77489957459e-02 + 1.46090879135e-02 6.32692063078e-03 2.64004483879e-03 2.64004483879e-03 6.32692063078e-03 1.46090879135e-02 + 2.77489957459e-02 4.35588929466e-02 5.76200322747e-02 6.60504635380e-02 6.79320857310e-02 6.49555724266e-02 + 6.05796981280e-02 5.45841783826e-02 4.91148354625e-02 4.44094609233e-02 4.05244812822e-02 3.74634706166e-02 + 3.52402742752e-02 3.38859304601e-02 3.34304675050e-02 3.38859304601e-02 3.52402742752e-02 3.74634706166e-02 + 4.05244812822e-02 4.44094609233e-02 4.91148354625e-02 5.45841783826e-02 6.05796981280e-02 6.64898780493e-02 + 7.10787520021e-02 7.23556493700e-02 6.81077724909e-02 5.74463352203e-02 4.22847991283e-02 2.67478820537e-02 + 1.46090879135e-02 7.45857574908e-03 5.17285277950e-03 7.45857574908e-03 1.46090879135e-02 2.67478820537e-02 + 4.22847991283e-02 5.74463352203e-02 6.81077724909e-02 7.23556493700e-02 7.10787520021e-02 6.64898780493e-02 + 6.11288569567e-02 5.56676247698e-02 5.08044555558e-02 4.66403070569e-02 4.32002938784e-02 4.05199675384e-02 + 3.86662855632e-02 3.77147526395e-02 3.77147526395e-02 3.86662855632e-02 4.05199675384e-02 4.32002938784e-02 + 4.66403070569e-02 5.08044555558e-02 5.56676247698e-02 6.11288569567e-02 6.68641206041e-02 7.21264918488e-02 + 7.55368812409e-02 7.51264696898e-02 6.91119067669e-02 5.73653289979e-02 4.22847991283e-02 2.77489957459e-02 + 1.69819929531e-02 1.14596764125e-02 1.14596764125e-02 1.69819929531e-02 2.77489957459e-02 4.22847991283e-02 + 5.73653289979e-02 6.91119067669e-02 7.51264696898e-02 7.55368812409e-02 7.21264918488e-02 6.68641206041e-02 + 6.13379141192e-02 5.66331890923e-02 5.24477482650e-02 4.88190878681e-02 4.57968161948e-02 4.34838779539e-02 + 4.20165784801e-02 4.15120643887e-02 4.20165784801e-02 4.34838779539e-02 4.57968161948e-02 4.88190878681e-02 + 5.24477482650e-02 5.66331890923e-02 6.13379141192e-02 6.64284767715e-02 7.15201290633e-02 7.57970302390e-02 + 7.78881394404e-02 7.60705845667e-02 6.91119067669e-02 5.74463352203e-02 4.35588929466e-02 3.09103717113e-02 + 2.23413746600e-02 1.93490286376e-02 2.23413746600e-02 3.09103717113e-02 4.35588929466e-02 5.74463352203e-02 + 6.91119067669e-02 7.60705845667e-02 7.78881394404e-02 7.57970302390e-02 7.15201290633e-02 6.64284767715e-02 + 6.13379141192e-02 5.74449785733e-02 5.38883507401e-02 5.07121410456e-02 4.80406383964e-02 4.60731359718e-02 + 4.50208900473e-02 4.50208900473e-02 4.60731359718e-02 4.80406383964e-02 5.07121410456e-02 5.38883507401e-02 + 5.74449785733e-02 6.13379141192e-02 6.55352798807e-02 6.98920688762e-02 7.40032629540e-02 7.70723261920e-02 + 7.78881394404e-02 7.51264696898e-02 6.81077724909e-02 5.76200322747e-02 4.60013609401e-02 3.62214481565e-02 + 3.07039905741e-02 3.07039905741e-02 3.62214481565e-02 4.60013609401e-02 5.76200322747e-02 6.81077724909e-02 + 7.51264696898e-02 7.78881394404e-02 7.70723261920e-02 7.40032629540e-02 6.98920688762e-02 6.55352798807e-02 + 6.11288569567e-02 5.79474348197e-02 5.48714786192e-02 5.20147259753e-02 4.96193341715e-02 4.79989400749e-02 + 4.74231711778e-02 4.79989400749e-02 4.96193341715e-02 5.20147259753e-02 5.48714786192e-02 5.79474348197e-02 + 6.11288569567e-02 6.44054743742e-02 6.77723654588e-02 7.10977313661e-02 7.40032629540e-02 7.57970302390e-02 + 7.55368812409e-02 7.23556493700e-02 6.60504635380e-02 5.75824043038e-02 4.89850720157e-02 4.26203265537e-02 + 4.02808330656e-02 4.26203265537e-02 4.89850720157e-02 5.75824043038e-02 6.60504635380e-02 7.23556493700e-02 + 7.55368812409e-02 7.57970302390e-02 7.40032629540e-02 7.10977313661e-02 6.77723654588e-02 6.44054743742e-02 + 6.05796981280e-02 5.78981879671e-02 5.51031089527e-02 5.24339557043e-02 5.02828320119e-02 4.90700187394e-02 + 4.90700187394e-02 5.02828320119e-02 5.24339557043e-02 5.51031089527e-02 5.78981879671e-02 6.05796981280e-02 + 6.30873277659e-02 6.54719417706e-02 6.77723654588e-02 6.98920688762e-02 7.15201290633e-02 7.21264918488e-02 + 7.10787520021e-02 6.79320857310e-02 6.28259810566e-02 5.67236888968e-02 5.12221625406e-02 4.79609401864e-02 + 4.79609401864e-02 5.12221625406e-02 5.67236888968e-02 6.28259810566e-02 6.79320857310e-02 7.10787520021e-02 + 7.21264918488e-02 7.15201290633e-02 6.98920688762e-02 6.77723654588e-02 6.54719417706e-02 6.30873277659e-02 + 5.94941697642e-02 5.70612480291e-02 5.43692149489e-02 5.18281863755e-02 4.99825941802e-02 4.93048229800e-02 + 4.99825941802e-02 5.18281863755e-02 5.43692149489e-02 5.70612480291e-02 5.94941697642e-02 6.14923433640e-02 + 6.30873277659e-02 6.44054743742e-02 6.55352798807e-02 6.64284767715e-02 6.68641206041e-02 6.64898780493e-02 + 6.49555724266e-02 6.21334821617e-02 5.83399236929e-02 5.43925934286e-02 5.13869204668e-02 5.02620593726e-02 + 5.13869204668e-02 5.43925934286e-02 5.83399236929e-02 6.21334821617e-02 6.49555724266e-02 6.64898780493e-02 + 6.68641206041e-02 6.64284767715e-02 6.55352798807e-02 6.44054743742e-02 6.30873277659e-02 6.14923433640e-02 + 6.21334821617e-02 5.83399236929e-02 5.43925934286e-02 5.13869204668e-02 5.02620593726e-02 5.13869204668e-02 + 5.43925934286e-02 5.83399236929e-02 6.21334821617e-02 6.49555724266e-02 6.64898780493e-02 6.68641206041e-02 + 6.64284767715e-02 6.55352798807e-02 6.44054743742e-02 6.30873277659e-02 6.14923433640e-02 5.94941697642e-02 + 5.70612480291e-02 5.43692149489e-02 5.18281863755e-02 4.99825941802e-02 4.93048229800e-02 4.99825941802e-02 + 5.18281863755e-02 5.43692149489e-02 5.70612480291e-02 5.94941697642e-02 6.14923433640e-02 6.30873277659e-02 + 6.44054743742e-02 6.55352798807e-02 6.64284767715e-02 6.68641206041e-02 6.64898780493e-02 6.49555724266e-02 + 5.83399236929e-02 5.43239294918e-02 5.06194135765e-02 4.83941231678e-02 4.83941231678e-02 5.06194135765e-02 + 5.43239294918e-02 5.83399236929e-02 6.15702941626e-02 6.33842515281e-02 6.37149803432e-02 6.28828729732e-02 + 6.13334872428e-02 5.94462807362e-02 5.74494623672e-02 5.54167137150e-02 5.33236907840e-02 5.11403130173e-02 + 4.89192305177e-02 4.68401774785e-02 4.51877782102e-02 4.42634768270e-02 4.42634768270e-02 4.51877782102e-02 + 4.68401774785e-02 4.89192305177e-02 5.11403130173e-02 5.33236907840e-02 5.54167137150e-02 5.74494623672e-02 + 5.94462807362e-02 6.13334872428e-02 6.28828729732e-02 6.37149803432e-02 6.33842515281e-02 6.15702941626e-02 + 5.43925934286e-02 5.06194135765e-02 4.76689314688e-02 4.65545163206e-02 4.76689314688e-02 5.06194135765e-02 + 5.43925934286e-02 5.77843769256e-02 5.98878714669e-02 6.03694423859e-02 5.94150808572e-02 5.74762428735e-02 + 5.50251512552e-02 5.24194501424e-02 4.98633146719e-02 4.74313143781e-02 4.51323632879e-02 4.29832635915e-02 + 4.10571769449e-02 3.94908104948e-02 3.84534160516e-02 3.80886538087e-02 3.84534160516e-02 3.94908104948e-02 + 4.10571769449e-02 4.29832635915e-02 4.51323632879e-02 4.74313143781e-02 4.98633146719e-02 5.24194501424e-02 + 5.50251512552e-02 5.74762428735e-02 5.94150808572e-02 6.03694423859e-02 5.98878714669e-02 5.77843769256e-02 + 5.13869204668e-02 4.83941231678e-02 4.65545163206e-02 4.65545163206e-02 4.83941231678e-02 5.13869204668e-02 + 5.44475263977e-02 5.65511919643e-02 5.71251588417e-02 5.61547897924e-02 5.40097122002e-02 5.11831265828e-02 + 4.81082332430e-02 4.50819394473e-02 4.22610610741e-02 3.97029159910e-02 3.74259862301e-02 3.54595415232e-02 + 3.38635928392e-02 3.27229087590e-02 3.21243272248e-02 3.21243272248e-02 3.27229087590e-02 3.38635928392e-02 + 3.54595415232e-02 3.74259862301e-02 3.97029159910e-02 4.22610610741e-02 4.50819394473e-02 4.81082332430e-02 + 5.11831265828e-02 5.40097122002e-02 5.61547897924e-02 5.71251588417e-02 5.65511919643e-02 5.44475263977e-02 + 5.02620593726e-02 4.83941231678e-02 4.76689314688e-02 4.83941231678e-02 5.02620593726e-02 5.24797871309e-02 + 5.41129564364e-02 5.44829894560e-02 5.33923081840e-02 5.10737783335e-02 4.79731106469e-02 4.45431970579e-02 + 4.11328816616e-02 3.79563421300e-02 3.51127517762e-02 3.26341221073e-02 3.05340710560e-02 2.88348357920e-02 + 2.75721078901e-02 2.67889182249e-02 2.65227612839e-02 2.67889182249e-02 2.75721078901e-02 2.88348357920e-02 + 3.05340710560e-02 3.26341221073e-02 3.51127517762e-02 3.79563421300e-02 4.11328816616e-02 4.45431970579e-02 + 4.79731106469e-02 5.10737783335e-02 5.33923081840e-02 5.44829894560e-02 5.41129564364e-02 5.24797871309e-02 + 5.13869204668e-02 5.06194135765e-02 5.06194135765e-02 5.13869204668e-02 5.24797871309e-02 5.32152215954e-02 + 5.29846351657e-02 5.15101646150e-02 4.88987422193e-02 4.55081727847e-02 4.17618689283e-02 3.80204685260e-02 + 3.45282284639e-02 3.14127386696e-02 2.87187367840e-02 2.64534808200e-02 2.46187421852e-02 2.32217587400e-02 + 2.22755921268e-02 2.17964249596e-02 2.17964249596e-02 2.22755921268e-02 2.32217587400e-02 2.46187421852e-02 + 2.64534808200e-02 2.87187367840e-02 3.14127386696e-02 3.45282284639e-02 3.80204685260e-02 4.17618689283e-02 + 4.55081727847e-02 4.88987422193e-02 5.15101646150e-02 5.29846351657e-02 5.32152215954e-02 5.24797871309e-02 + 5.43925934286e-02 5.43239294918e-02 5.43925934286e-02 5.44475263977e-02 5.41129564364e-02 5.29846351657e-02 + 5.08390344517e-02 4.77311231410e-02 4.39402098517e-02 3.98358227133e-02 3.57591480990e-02 3.19590319446e-02 + 2.85763383726e-02 2.56635113913e-02 2.32231030162e-02 2.12421582644e-02 1.97084075068e-02 1.86137801375e-02 + 1.79555609317e-02 1.77355963866e-02 1.79555609317e-02 1.86137801375e-02 1.97084075068e-02 2.12421582644e-02 + 2.32231030162e-02 2.56635113913e-02 2.85763383726e-02 3.19590319446e-02 3.57591480990e-02 3.98358227133e-02 + 4.39402098517e-02 4.77311231410e-02 5.08390344517e-02 5.29846351657e-02 5.41129564364e-02 5.44475263977e-02 + 5.83399236929e-02 5.83399236929e-02 5.77843769256e-02 5.65511919643e-02 5.44829894560e-02 5.15101646150e-02 + 4.77311231410e-02 4.34003076052e-02 3.88462459817e-02 3.43811654173e-02 3.02423286704e-02 2.65706573512e-02 + 2.34202555044e-02 2.07887392229e-02 1.86504890434e-02 1.69767793036e-02 1.57423428102e-02 1.49279448733e-02 + 1.45226393383e-02 1.45226393383e-02 1.49279448733e-02 1.57423428102e-02 1.69767793036e-02 1.86504890434e-02 + 2.07887392229e-02 2.34202555044e-02 2.65706573512e-02 3.02423286704e-02 3.43811654173e-02 3.88462459817e-02 + 4.34003076052e-02 4.77311231410e-02 5.15101646150e-02 5.44829894560e-02 5.65511919643e-02 5.77843769256e-02 + 6.21334821617e-02 6.15702941626e-02 5.98878714669e-02 5.71251588417e-02 5.33923081840e-02 4.88987422193e-02 + 4.39402098517e-02 3.88462459817e-02 3.39176800802e-02 2.93819034216e-02 2.53749373622e-02 2.19482820950e-02 + 1.90940368490e-02 1.67754563001e-02 1.49488960464e-02 1.35733603577e-02 1.26143883181e-02 1.20475550421e-02 + 1.18598583649e-02 1.20475550421e-02 1.26143883181e-02 1.35733603577e-02 1.49488960464e-02 1.67754563001e-02 + 1.90940368490e-02 2.19482820950e-02 2.53749373622e-02 2.93819034216e-02 3.39176800802e-02 3.88462459817e-02 + 4.39402098517e-02 4.88987422193e-02 5.33923081840e-02 5.71251588417e-02 5.98878714669e-02 6.15702941626e-02 + 6.49555724266e-02 6.33842515281e-02 6.03694423859e-02 5.61547897924e-02 5.10737783335e-02 4.55081727847e-02 + 3.98358227133e-02 3.43811654173e-02 2.93819034216e-02 2.49776956914e-02 2.12198093897e-02 1.80960146721e-02 + 1.55601992220e-02 1.35553259639e-02 1.20255038743e-02 1.09215936737e-02 1.02054916185e-02 9.85294674885e-03 + 9.85294674885e-03 1.02054916185e-02 1.09215936737e-02 1.20255038743e-02 1.35553259639e-02 1.55601992220e-02 + 1.80960146721e-02 2.12198093897e-02 2.49776956914e-02 2.93819034216e-02 3.43811654173e-02 3.98358227133e-02 + 4.55081727847e-02 5.10737783335e-02 5.61547897924e-02 6.03694423859e-02 6.33842515281e-02 6.49555724266e-02 + 6.64898780493e-02 6.37149803432e-02 5.94150808572e-02 5.40097122002e-02 4.79731106469e-02 4.17618689283e-02 + 3.57591480990e-02 3.02423286704e-02 2.53749373622e-02 2.12198093897e-02 1.77666865554e-02 1.49636867906e-02 + 1.27424344623e-02 1.10330000246e-02 9.77183223433e-03 8.90705726329e-03 8.40200942373e-03 8.23585736203e-03 + 8.40200942373e-03 8.90705726329e-03 9.77183223433e-03 1.10330000246e-02 1.27424344623e-02 1.49636867906e-02 + 1.77666865554e-02 2.12198093897e-02 2.53749373622e-02 3.02423286704e-02 3.57591480990e-02 4.17618689283e-02 + 4.79731106469e-02 5.40097122002e-02 5.94150808572e-02 6.37149803432e-02 6.64898780493e-02 6.74494907981e-02 + 6.68641206041e-02 6.28828729732e-02 5.74762428735e-02 5.11831265828e-02 4.45431970579e-02 3.80204685260e-02 + 3.19590319446e-02 2.65706573512e-02 2.19482820950e-02 1.80960146721e-02 1.49636867906e-02 1.24755048074e-02 + 1.05489279259e-02 9.10613117226e-03 8.08133005705e-03 7.42492384580e-03 7.10459522193e-03 7.10459522193e-03 + 7.42492384580e-03 8.08133005705e-03 9.10613117226e-03 1.05489279259e-02 1.24755048074e-02 1.49636867906e-02 + 1.80960146721e-02 2.19482820950e-02 2.65706573512e-02 3.19590319446e-02 3.80204685260e-02 4.45431970579e-02 + 5.11831265828e-02 5.74762428735e-02 6.28828729732e-02 6.68641206041e-02 6.89793219251e-02 6.89793219251e-02 + 6.64284767715e-02 6.13334872428e-02 5.50251512552e-02 4.81082332430e-02 4.11328816616e-02 3.45282284639e-02 + 2.85763383726e-02 2.34202555044e-02 1.90940368490e-02 1.55601992220e-02 1.27424344623e-02 1.05489279259e-02 + 8.88822832040e-03 7.68014935330e-03 6.86170422323e-03 6.38840491477e-03 6.23361812745e-03 6.38840491477e-03 + 6.86170422323e-03 7.68014935330e-03 8.88822832040e-03 1.05489279259e-02 1.27424344623e-02 1.55601992220e-02 + 1.90940368490e-02 2.34202555044e-02 2.85763383726e-02 3.45282284639e-02 4.11328816616e-02 4.81082332430e-02 + 5.50251512552e-02 6.13334872428e-02 6.64284767715e-02 6.97522426294e-02 7.09081350393e-02 6.97522426294e-02 + 6.55352798807e-02 5.94462807362e-02 5.24194501424e-02 4.50819394473e-02 3.79563421300e-02 3.14127386696e-02 + 2.56635113913e-02 2.07887392229e-02 1.67754563001e-02 1.35553259639e-02 1.10330000246e-02 9.10613117226e-03 + 7.68014935330e-03 6.67761981445e-03 6.04118457084e-03 5.73268604942e-03 5.73268604942e-03 6.04118457084e-03 + 6.67761981445e-03 7.68014935330e-03 9.10613117226e-03 1.10330000246e-02 1.35553259639e-02 1.67754563001e-02 + 2.07887392229e-02 2.56635113913e-02 3.14127386696e-02 3.79563421300e-02 4.50819394473e-02 5.24194501424e-02 + 5.94462807362e-02 6.55352798807e-02 7.00474085615e-02 7.24538631804e-02 7.24538631804e-02 7.00474085615e-02 + 6.44054743742e-02 5.74494623672e-02 4.98633146719e-02 4.22610610741e-02 3.51127517762e-02 2.87187367840e-02 + 2.32231030162e-02 1.86504890434e-02 1.49488960464e-02 1.20255038743e-02 9.77183223433e-03 8.08133005705e-03 + 6.86170422323e-03 6.04118457084e-03 5.56920678348e-03 5.41531278039e-03 5.56920678348e-03 6.04118457084e-03 + 6.86170422323e-03 8.08133005705e-03 9.77183223433e-03 1.20255038743e-02 1.49488960464e-02 1.86504890434e-02 + 2.32231030162e-02 2.87187367840e-02 3.51127517762e-02 4.22610610741e-02 4.98633146719e-02 5.74494623672e-02 + 6.44054743742e-02 7.00474085615e-02 7.37387049341e-02 7.50243106749e-02 7.37387049341e-02 7.00474085615e-02 + 6.30873277659e-02 5.54167137150e-02 4.74313143781e-02 3.97029159910e-02 3.26341221073e-02 2.64534808200e-02 + 2.12421582644e-02 1.69767793036e-02 1.35733603577e-02 1.09215936737e-02 8.90705726329e-03 7.42492384580e-03 + 6.38840491477e-03 5.73268604942e-03 5.41531278039e-03 5.41531278039e-03 5.73268604942e-03 6.38840491477e-03 + 7.42492384580e-03 8.90705726329e-03 1.09215936737e-02 1.35733603577e-02 1.69767793036e-02 2.12421582644e-02 + 2.64534808200e-02 3.26341221073e-02 3.97029159910e-02 4.74313143781e-02 5.54167137150e-02 6.30873277659e-02 + 6.97522426294e-02 7.47020608958e-02 7.73458021392e-02 7.73458021392e-02 7.47020608958e-02 6.97522426294e-02 + 6.14923433640e-02 5.33236907840e-02 4.51323632879e-02 3.74259862301e-02 3.05340710560e-02 2.46187421852e-02 + 1.97084075068e-02 1.57423428102e-02 1.26143883181e-02 1.02054916185e-02 8.40200942373e-03 7.10459522193e-03 + 6.23361812745e-03 5.73268604942e-03 5.56920678348e-03 5.73268604942e-03 6.23361812745e-03 7.10459522193e-03 + 8.40200942373e-03 1.02054916185e-02 1.26143883181e-02 1.57423428102e-02 1.97084075068e-02 2.46187421852e-02 + 3.05340710560e-02 3.74259862301e-02 4.51323632879e-02 5.33236907840e-02 6.14923433640e-02 6.89793219251e-02 + 7.50510418428e-02 7.90236437036e-02 8.04073084192e-02 7.90236437036e-02 7.50510418428e-02 6.89793219251e-02 + 5.94941697642e-02 5.11403130173e-02 4.29832635915e-02 3.54595415232e-02 2.88348357920e-02 2.32217587400e-02 + 1.86137801375e-02 1.49279448733e-02 1.20475550421e-02 9.85294674885e-03 8.23585736203e-03 7.10459522193e-03 + 6.38840491477e-03 6.04118457084e-03 6.04118457084e-03 6.38840491477e-03 7.10459522193e-03 8.23585736203e-03 + 9.85294674885e-03 1.20475550421e-02 1.49279448733e-02 1.86137801375e-02 2.32217587400e-02 2.88348357920e-02 + 3.54595415232e-02 4.29832635915e-02 5.11403130173e-02 5.94941697642e-02 6.74494907981e-02 7.43082663472e-02 + 7.93709590427e-02 8.20645507484e-02 8.20645507484e-02 7.93709590427e-02 7.43082663472e-02 6.74494907981e-02 + 5.70612480291e-02 4.89192305177e-02 4.10571769449e-02 3.38635928392e-02 2.75721078901e-02 2.22755921268e-02 + 1.79555609317e-02 1.45226393383e-02 1.18598583649e-02 9.85294674885e-03 8.40200942373e-03 7.42492384580e-03 + 6.86170422323e-03 6.67761981445e-03 6.86170422323e-03 7.42492384580e-03 8.40200942373e-03 9.85294674885e-03 + 1.18598583649e-02 1.45226393383e-02 1.79555609317e-02 2.22755921268e-02 2.75721078901e-02 3.38635928392e-02 + 4.10571769449e-02 4.89192305177e-02 5.70612480291e-02 6.49555724266e-02 7.19923628057e-02 7.75631573239e-02 + 8.11458755837e-02 8.23828782457e-02 8.11458755837e-02 7.75631573239e-02 7.19923628057e-02 6.49555724266e-02 + 5.43692149489e-02 4.68401774785e-02 3.94908104948e-02 3.27229087590e-02 2.67889182249e-02 2.17964249596e-02 + 1.77355963866e-02 1.45226393383e-02 1.20475550421e-02 1.02054916185e-02 8.90705726329e-03 8.08133005705e-03 + 7.68014935330e-03 7.68014935330e-03 8.08133005705e-03 8.90705726329e-03 1.02054916185e-02 1.20475550421e-02 + 1.45226393383e-02 1.77355963866e-02 2.17964249596e-02 2.67889182249e-02 3.27229087590e-02 3.94908104948e-02 + 4.68401774785e-02 5.43692149489e-02 6.15702941626e-02 6.79320857310e-02 7.30418134594e-02 7.66122811094e-02 + 7.84511058955e-02 7.84511058955e-02 7.66122811094e-02 7.30418134594e-02 6.79320857310e-02 6.15702941626e-02 + 5.18281863755e-02 4.51877782102e-02 3.84534160516e-02 3.21243272248e-02 2.65227612839e-02 2.17964249596e-02 + 1.79555609317e-02 1.49279448733e-02 1.26143883181e-02 1.09215936737e-02 9.77183223433e-03 9.10613117226e-03 + 8.88822832040e-03 9.10613117226e-03 9.77183223433e-03 1.09215936737e-02 1.26143883181e-02 1.49279448733e-02 + 1.79555609317e-02 2.17964249596e-02 2.65227612839e-02 3.21243272248e-02 3.84534160516e-02 4.51877782102e-02 + 5.18281863755e-02 5.77843769256e-02 6.25800698666e-02 6.60504635380e-02 6.83266751007e-02 6.96179820017e-02 + 7.00400365127e-02 6.96179820017e-02 6.83266751007e-02 6.60504635380e-02 6.25800698666e-02 5.77843769256e-02 + 4.99825941802e-02 4.42634768270e-02 3.80886538087e-02 3.21243272248e-02 2.67889182249e-02 2.22755921268e-02 + 1.86137801375e-02 1.57423428102e-02 1.35733603577e-02 1.20255038743e-02 1.10330000246e-02 1.05489279259e-02 + 1.05489279259e-02 1.10330000246e-02 1.20255038743e-02 1.35733603577e-02 1.57423428102e-02 1.86137801375e-02 + 2.22755921268e-02 2.67889182249e-02 3.21243272248e-02 3.80886538087e-02 4.42634768270e-02 4.99825941802e-02 + 5.44475263977e-02 5.70772559013e-02 5.79103146750e-02 5.76200322747e-02 5.70355201353e-02 5.66663226477e-02 + 5.66663226477e-02 5.70355201353e-02 5.76200322747e-02 5.79103146750e-02 5.70772559013e-02 5.44475263977e-02 + 4.93048229800e-02 4.42634768270e-02 3.84534160516e-02 3.27229087590e-02 2.75721078901e-02 2.32217587400e-02 + 1.97084075068e-02 1.69767793036e-02 1.49488960464e-02 1.35553259639e-02 1.27424344623e-02 1.24755048074e-02 + 1.27424344623e-02 1.35553259639e-02 1.49488960464e-02 1.69767793036e-02 1.97084075068e-02 2.32217587400e-02 + 2.75721078901e-02 3.27229087590e-02 3.84534160516e-02 4.42634768270e-02 4.93048229800e-02 5.24797871309e-02 + 5.29210396854e-02 5.07010770424e-02 4.70389926376e-02 4.35588929466e-02 4.13123485649e-02 4.05694134160e-02 + 4.13123485649e-02 4.35588929466e-02 4.70389926376e-02 5.07010770424e-02 5.29210396854e-02 5.24797871309e-02 + 4.99825941802e-02 4.51877782102e-02 3.94908104948e-02 3.38635928392e-02 2.88348357920e-02 2.46187421852e-02 + 2.12421582644e-02 1.86504890434e-02 1.67754563001e-02 1.55601992220e-02 1.49636867906e-02 1.49636867906e-02 + 1.55601992220e-02 1.67754563001e-02 1.86504890434e-02 2.12421582644e-02 2.46187421852e-02 2.88348357920e-02 + 3.38635928392e-02 3.94908104948e-02 4.51877782102e-02 4.99825941802e-02 5.24797871309e-02 5.13723037105e-02 + 4.64751950426e-02 3.93541671489e-02 3.25101129901e-02 2.77489957459e-02 2.54935088837e-02 2.54935088837e-02 + 2.77489957459e-02 3.25101129901e-02 3.93541671489e-02 4.64751950426e-02 5.13723037105e-02 5.24797871309e-02 + 5.18281863755e-02 4.68401774785e-02 4.10571769449e-02 3.54595415232e-02 3.05340710560e-02 2.64534808200e-02 + 2.32231030162e-02 2.07887392229e-02 1.90940368490e-02 1.80960146721e-02 1.77666865554e-02 1.80960146721e-02 + 1.90940368490e-02 2.07887392229e-02 2.32231030162e-02 2.64534808200e-02 3.05340710560e-02 3.54595415232e-02 + 4.10571769449e-02 4.68401774785e-02 5.18281863755e-02 5.44475263977e-02 5.29210396854e-02 4.64751950426e-02 + 3.65582592974e-02 2.63856510811e-02 1.87771308641e-02 1.46090879135e-02 1.33581335706e-02 1.46090879135e-02 + 1.87771308641e-02 2.63856510811e-02 3.65582592974e-02 4.64751950426e-02 5.29210396854e-02 5.44475263977e-02 + 5.43692149489e-02 4.89192305177e-02 4.29832635915e-02 3.74259862301e-02 3.26341221073e-02 2.87187367840e-02 + 2.56635113913e-02 2.34202555044e-02 2.19482820950e-02 2.12198093897e-02 2.12198093897e-02 2.19482820950e-02 + 2.34202555044e-02 2.56635113913e-02 2.87187367840e-02 3.26341221073e-02 3.74259862301e-02 4.29832635915e-02 + 4.89192305177e-02 5.43692149489e-02 5.77843769256e-02 5.70772559013e-02 5.07010770424e-02 3.93541671489e-02 + 2.63856510811e-02 1.56860392578e-02 9.13060134292e-03 6.32692063078e-03 6.32692063078e-03 9.13060134292e-03 + 1.56860392578e-02 2.63856510811e-02 3.93541671489e-02 5.07010770424e-02 5.70772559013e-02 5.77843769256e-02 + 5.70612480291e-02 5.11403130173e-02 4.51323632879e-02 3.97029159910e-02 3.51127517762e-02 3.14127386696e-02 + 2.85763383726e-02 2.65706573512e-02 2.53749373622e-02 2.49776956914e-02 2.53749373622e-02 2.65706573512e-02 + 2.85763383726e-02 3.14127386696e-02 3.51127517762e-02 3.97029159910e-02 4.51323632879e-02 5.11403130173e-02 + 5.70612480291e-02 6.15702941626e-02 6.25800698666e-02 5.79103146750e-02 4.70389926376e-02 3.25101129901e-02 + 1.87771308641e-02 9.13060134292e-03 4.10298626852e-03 2.64004483879e-03 4.10298626852e-03 9.13060134292e-03 + 1.87771308641e-02 3.25101129901e-02 4.70389926376e-02 5.79103146750e-02 6.25800698666e-02 6.15702941626e-02 + 5.94941697642e-02 5.33236907840e-02 4.74313143781e-02 4.22610610741e-02 3.79563421300e-02 3.45282284639e-02 + 3.19590319446e-02 3.02423286704e-02 2.93819034216e-02 2.93819034216e-02 3.02423286704e-02 3.19590319446e-02 + 3.45282284639e-02 3.79563421300e-02 4.22610610741e-02 4.74313143781e-02 5.33236907840e-02 5.94941697642e-02 + 6.49555724266e-02 6.79320857310e-02 6.60504635380e-02 5.76200322747e-02 4.35588929466e-02 2.77489957459e-02 + 1.46090879135e-02 6.32692063078e-03 2.64004483879e-03 2.64004483879e-03 6.32692063078e-03 1.46090879135e-02 + 2.77489957459e-02 4.35588929466e-02 5.76200322747e-02 6.60504635380e-02 6.79320857310e-02 6.49555724266e-02 + 6.14923433640e-02 5.54167137150e-02 4.98633146719e-02 4.50819394473e-02 4.11328816616e-02 3.80204685260e-02 + 3.57591480990e-02 3.43811654173e-02 3.39176800802e-02 3.43811654173e-02 3.57591480990e-02 3.80204685260e-02 + 4.11328816616e-02 4.50819394473e-02 4.98633146719e-02 5.54167137150e-02 6.14923433640e-02 6.74494907981e-02 + 7.19923628057e-02 7.30418134594e-02 6.83266751007e-02 5.70355201353e-02 4.13123485649e-02 2.54935088837e-02 + 1.33581335706e-02 6.32692063078e-03 4.10298626852e-03 6.32692063078e-03 1.33581335706e-02 2.54935088837e-02 + 4.13123485649e-02 5.70355201353e-02 6.83266751007e-02 7.30418134594e-02 7.19923628057e-02 6.74494907981e-02 + 6.30873277659e-02 5.74494623672e-02 5.24194501424e-02 4.81082332430e-02 4.45431970579e-02 4.17618689283e-02 + 3.98358227133e-02 3.88462459817e-02 3.88462459817e-02 3.98358227133e-02 4.17618689283e-02 4.45431970579e-02 + 4.81082332430e-02 5.24194501424e-02 5.74494623672e-02 6.30873277659e-02 6.89793219251e-02 7.43082663472e-02 + 7.75631573239e-02 7.66122811094e-02 6.96179820017e-02 5.66663226477e-02 4.05694134160e-02 2.54935088837e-02 + 1.46090879135e-02 9.13060134292e-03 9.13060134292e-03 1.46090879135e-02 2.54935088837e-02 4.05694134160e-02 + 5.66663226477e-02 6.96179820017e-02 7.66122811094e-02 7.75631573239e-02 7.43082663472e-02 6.89793219251e-02 + 6.44054743742e-02 5.94462807362e-02 5.50251512552e-02 5.11831265828e-02 4.79731106469e-02 4.55081727847e-02 + 4.39402098517e-02 4.34003076052e-02 4.39402098517e-02 4.55081727847e-02 4.79731106469e-02 5.11831265828e-02 + 5.50251512552e-02 5.94462807362e-02 6.44054743742e-02 6.97522426294e-02 7.50510418428e-02 7.93709590427e-02 + 8.11458755837e-02 7.84511058955e-02 7.00400365127e-02 5.66663226477e-02 4.13123485649e-02 2.77489957459e-02 + 1.87771308641e-02 1.56860392578e-02 1.87771308641e-02 2.77489957459e-02 4.13123485649e-02 5.66663226477e-02 + 7.00400365127e-02 7.84511058955e-02 8.11458755837e-02 7.93709590427e-02 7.50510418428e-02 6.97522426294e-02 + 6.55352798807e-02 6.13334872428e-02 5.74762428735e-02 5.40097122002e-02 5.10737783335e-02 4.88987422193e-02 + 4.77311231410e-02 4.77311231410e-02 4.88987422193e-02 5.10737783335e-02 5.40097122002e-02 5.74762428735e-02 + 6.13334872428e-02 6.55352798807e-02 7.00474085615e-02 7.47020608958e-02 7.90236437036e-02 8.20645507484e-02 + 8.23828782457e-02 7.84511058955e-02 6.96179820017e-02 5.70355201353e-02 4.35588929466e-02 3.25101129901e-02 + 2.63856510811e-02 2.63856510811e-02 3.25101129901e-02 4.35588929466e-02 5.70355201353e-02 6.96179820017e-02 + 7.84511058955e-02 8.23828782457e-02 8.20645507484e-02 7.90236437036e-02 7.47020608958e-02 7.00474085615e-02 + 6.64284767715e-02 6.28828729732e-02 5.94150808572e-02 5.61547897924e-02 5.33923081840e-02 5.15101646150e-02 + 5.08390344517e-02 5.15101646150e-02 5.33923081840e-02 5.61547897924e-02 5.94150808572e-02 6.28828729732e-02 + 6.64284767715e-02 7.00474085615e-02 7.37387049341e-02 7.73458021392e-02 8.04073084192e-02 8.20645507484e-02 + 8.11458755837e-02 7.66122811094e-02 6.83266751007e-02 5.76200322747e-02 4.70389926376e-02 3.93541671489e-02 + 3.65582592974e-02 3.93541671489e-02 4.70389926376e-02 5.76200322747e-02 6.83266751007e-02 7.66122811094e-02 + 8.11458755837e-02 8.20645507484e-02 8.04073084192e-02 7.73458021392e-02 7.37387049341e-02 7.00474085615e-02 + 6.68641206041e-02 6.37149803432e-02 6.03694423859e-02 5.71251588417e-02 5.44829894560e-02 5.29846351657e-02 + 5.29846351657e-02 5.44829894560e-02 5.71251588417e-02 6.03694423859e-02 6.37149803432e-02 6.68641206041e-02 + 6.97522426294e-02 7.24538631804e-02 7.50243106749e-02 7.73458021392e-02 7.90236437036e-02 7.93709590427e-02 + 7.75631573239e-02 7.30418134594e-02 6.60504635380e-02 5.79103146750e-02 5.07010770424e-02 4.64751950426e-02 + 4.64751950426e-02 5.07010770424e-02 5.79103146750e-02 6.60504635380e-02 7.30418134594e-02 7.75631573239e-02 + 7.93709590427e-02 7.90236437036e-02 7.73458021392e-02 7.50243106749e-02 7.24538631804e-02 6.97522426294e-02 + 6.64898780493e-02 6.33842515281e-02 5.98878714669e-02 5.65511919643e-02 5.41129564364e-02 5.32152215954e-02 + 5.41129564364e-02 5.65511919643e-02 5.98878714669e-02 6.33842515281e-02 6.64898780493e-02 6.89793219251e-02 + 7.09081350393e-02 7.24538631804e-02 7.37387049341e-02 7.47020608958e-02 7.50510418428e-02 7.43082663472e-02 + 7.19923628057e-02 6.79320857310e-02 6.25800698666e-02 5.70772559013e-02 5.29210396854e-02 5.13723037105e-02 + 5.29210396854e-02 5.70772559013e-02 6.25800698666e-02 6.79320857310e-02 7.19923628057e-02 7.43082663472e-02 + 7.50510418428e-02 7.47020608958e-02 7.37387049341e-02 7.24538631804e-02 7.09081350393e-02 6.89793219251e-02 + 6.49555724266e-02 6.15702941626e-02 5.77843769256e-02 5.44475263977e-02 5.24797871309e-02 5.24797871309e-02 + 5.44475263977e-02 5.77843769256e-02 6.15702941626e-02 6.49555724266e-02 6.74494907981e-02 6.89793219251e-02 + 6.97522426294e-02 7.00474085615e-02 7.00474085615e-02 6.97522426294e-02 6.89793219251e-02 6.74494907981e-02 + 6.49555724266e-02 6.15702941626e-02 5.77843769256e-02 5.44475263977e-02 5.24797871309e-02 5.24797871309e-02 + 5.44475263977e-02 5.77843769256e-02 6.15702941626e-02 6.49555724266e-02 6.74494907981e-02 6.89793219251e-02 + 6.97522426294e-02 7.00474085615e-02 7.00474085615e-02 6.97522426294e-02 6.89793219251e-02 6.74494907981e-02 + 6.28259810566e-02 5.67236888968e-02 5.12221625406e-02 4.79609401864e-02 4.79609401864e-02 5.12221625406e-02 + 5.67236888968e-02 6.28259810566e-02 6.79320857310e-02 7.10787520021e-02 7.21264918488e-02 7.15201290633e-02 + 6.98920688762e-02 6.77723654588e-02 6.54719417706e-02 6.30873277659e-02 6.05796981280e-02 5.78981879671e-02 + 5.51031089527e-02 5.24339557043e-02 5.02828320119e-02 4.90700187394e-02 4.90700187394e-02 5.02828320119e-02 + 5.24339557043e-02 5.51031089527e-02 5.78981879671e-02 6.05796981280e-02 6.30873277659e-02 6.54719417706e-02 + 6.77723654588e-02 6.98920688762e-02 7.15201290633e-02 7.21264918488e-02 7.10787520021e-02 6.79320857310e-02 + 5.67236888968e-02 5.05555186569e-02 4.58777097769e-02 4.41366450522e-02 4.58777097769e-02 5.05555186569e-02 + 5.67236888968e-02 6.25800698666e-02 6.66786802062e-02 6.84139609392e-02 6.80033074139e-02 6.61022866145e-02 + 6.34040688222e-02 6.04237632524e-02 5.74494623672e-02 5.45841783826e-02 5.18355302331e-02 4.92182336225e-02 + 4.68264624901e-02 4.48486167771e-02 4.35234290368e-02 4.30547772101e-02 4.35234290368e-02 4.48486167771e-02 + 4.68264624901e-02 4.92182336225e-02 5.18355302331e-02 5.45841783826e-02 5.74494623672e-02 6.04237632524e-02 + 6.34040688222e-02 6.61022866145e-02 6.80033074139e-02 6.84139609392e-02 6.66786802062e-02 6.25800698666e-02 + 5.12221625406e-02 4.58777097769e-02 4.27064575993e-02 4.27064575993e-02 4.58777097769e-02 5.12221625406e-02 + 5.70772559013e-02 6.17513938278e-02 6.41840706496e-02 6.42180018992e-02 6.23688231248e-02 5.93841418824e-02 + 5.59201471811e-02 5.24194501424e-02 4.91148354625e-02 4.60913389830e-02 4.33721592307e-02 4.09927131873e-02 + 3.90347179512e-02 3.76190713504e-02 3.68707660171e-02 3.68707660171e-02 3.76190713504e-02 3.90347179512e-02 + 4.09927131873e-02 4.33721592307e-02 4.60913389830e-02 4.91148354625e-02 5.24194501424e-02 5.59201471811e-02 + 5.93841418824e-02 6.23688231248e-02 6.42180018992e-02 6.41840706496e-02 6.17513938278e-02 5.70772559013e-02 + 4.79609401864e-02 4.41366450522e-02 4.27064575993e-02 4.41366450522e-02 4.79609401864e-02 5.29210396854e-02 + 5.74105494947e-02 6.01184381094e-02 6.05090723285e-02 5.88318176265e-02 5.57595749637e-02 5.20033431247e-02 + 4.81082332430e-02 4.44094609233e-02 4.10670403681e-02 3.81345549630e-02 3.56312088557e-02 3.35871770820e-02 + 3.20546920774e-02 3.10978190541e-02 3.07715106065e-02 3.10978190541e-02 3.20546920774e-02 3.35871770820e-02 + 3.56312088557e-02 3.81345549630e-02 4.10670403681e-02 4.44094609233e-02 4.81082332430e-02 5.20033431247e-02 + 5.57595749637e-02 5.88318176265e-02 6.05090723285e-02 6.01184381094e-02 5.74105494947e-02 5.29210396854e-02 + 4.79609401864e-02 4.58777097769e-02 4.58777097769e-02 4.79609401864e-02 5.13723037105e-02 5.48533676650e-02 + 5.71366804742e-02 5.74676014035e-02 5.58153453540e-02 5.26787408684e-02 4.87273692032e-02 4.45431970579e-02 + 4.05244812822e-02 3.68889471691e-02 3.37228748044e-02 3.10465495213e-02 2.88661050079e-02 2.71955666447e-02 + 2.60582031450e-02 2.54803066383e-02 2.54803066383e-02 2.60582031450e-02 2.71955666447e-02 2.88661050079e-02 + 3.10465495213e-02 3.37228748044e-02 3.68889471691e-02 4.05244812822e-02 4.45431970579e-02 4.87273692032e-02 + 5.26787408684e-02 5.58153453540e-02 5.74676014035e-02 5.71366804742e-02 5.48533676650e-02 5.13723037105e-02 + 5.12221625406e-02 5.05555186569e-02 5.12221625406e-02 5.29210396854e-02 5.48533676650e-02 5.60372557288e-02 + 5.57363453523e-02 5.37510492057e-02 5.03893328752e-02 4.62088704848e-02 4.17618689283e-02 3.74634706166e-02 + 3.35632692529e-02 3.01717861136e-02 2.73140021666e-02 2.49827563157e-02 2.31688478126e-02 2.18687619531e-02 + 2.10847229658e-02 2.08223402545e-02 2.10847229658e-02 2.18687619531e-02 2.31688478126e-02 2.49827563157e-02 + 2.73140021666e-02 3.01717861136e-02 3.35632692529e-02 3.74634706166e-02 4.17618689283e-02 4.62088704848e-02 + 5.03893328752e-02 5.37510492057e-02 5.57363453523e-02 5.60372557288e-02 5.48533676650e-02 5.29210396854e-02 + 5.67236888968e-02 5.67236888968e-02 5.70772559013e-02 5.74105494947e-02 5.71366804742e-02 5.57363453523e-02 + 5.30133769166e-02 4.91578982971e-02 4.46053414397e-02 3.98358227133e-02 3.52402742752e-02 3.10717223250e-02 + 2.74512061786e-02 2.44059448105e-02 2.19185274002e-02 1.99620901041e-02 1.85132658939e-02 1.75547637226e-02 + 1.70770073925e-02 1.70770073925e-02 1.75547637226e-02 1.85132658939e-02 1.99620901041e-02 2.19185274002e-02 + 2.44059448105e-02 2.74512061786e-02 3.10717223250e-02 3.52402742752e-02 3.98358227133e-02 4.46053414397e-02 + 4.91578982971e-02 5.30133769166e-02 5.57363453523e-02 5.71366804742e-02 5.74105494947e-02 5.70772559013e-02 + 6.28259810566e-02 6.25800698666e-02 6.17513938278e-02 6.01184381094e-02 5.74676014035e-02 5.37510492057e-02 + 4.91578982971e-02 4.40529168852e-02 3.88462459817e-02 3.38859304601e-02 2.94074293899e-02 2.55281844546e-02 + 2.22726314479e-02 1.96135589165e-02 1.75083321070e-02 1.59162612755e-02 1.48031251671e-02 1.41440793855e-02 + 1.39256808178e-02 1.41440793855e-02 1.48031251671e-02 1.59162612755e-02 1.75083321070e-02 1.96135589165e-02 + 2.22726314479e-02 2.55281844546e-02 2.94074293899e-02 3.38859304601e-02 3.88462459817e-02 4.40529168852e-02 + 4.91578982971e-02 5.37510492057e-02 5.74676014035e-02 6.01184381094e-02 6.17513938278e-02 6.25800698666e-02 + 6.79320857310e-02 6.66786802062e-02 6.41840706496e-02 6.05090723285e-02 5.58153453540e-02 5.03893328752e-02 + 4.46053414397e-02 3.88462459817e-02 3.34304675050e-02 2.85734174953e-02 2.43819637041e-02 2.08735527936e-02 + 1.80109897723e-02 1.57370100687e-02 1.39945083398e-02 1.27333396536e-02 1.19137265332e-02 1.15097880648e-02 + 1.15097880648e-02 1.19137265332e-02 1.27333396536e-02 1.39945083398e-02 1.57370100687e-02 1.80109897723e-02 + 2.08735527936e-02 2.43819637041e-02 2.85734174953e-02 3.34304675050e-02 3.88462459817e-02 4.46053414397e-02 + 5.03893328752e-02 5.58153453540e-02 6.05090723285e-02 6.41840706496e-02 6.66786802062e-02 6.79320857310e-02 + 7.10787520021e-02 6.84139609392e-02 6.42180018992e-02 5.88318176265e-02 5.26787408684e-02 4.62088704848e-02 + 3.98358227133e-02 3.38859304601e-02 2.85734174953e-02 2.40011711299e-02 2.01812628043e-02 1.70678712692e-02 + 1.45906790875e-02 1.26769712537e-02 1.12609832188e-02 1.02881382638e-02 9.71912104775e-03 9.53173661310e-03 + 9.71912104775e-03 1.02881382638e-02 1.12609832188e-02 1.26769712537e-02 1.45906790875e-02 1.70678712692e-02 + 2.01812628043e-02 2.40011711299e-02 2.85734174953e-02 3.38859304601e-02 3.98358227133e-02 4.62088704848e-02 + 5.26787408684e-02 5.88318176265e-02 6.42180018992e-02 6.84139609392e-02 7.10787520021e-02 7.19923628057e-02 + 7.21264918488e-02 6.80033074139e-02 6.23688231248e-02 5.57595749637e-02 4.87273692032e-02 4.17618689283e-02 + 3.52402742752e-02 2.94074293899e-02 2.43819637041e-02 2.01812628043e-02 1.67567114426e-02 1.40283418589e-02 + 1.19093466628e-02 1.03186231402e-02 9.18679124184e-03 8.46060891145e-03 8.10563303358e-03 8.10563303358e-03 + 8.46060891145e-03 9.18679124184e-03 1.03186231402e-02 1.19093466628e-02 1.40283418589e-02 1.67567114426e-02 + 2.01812628043e-02 2.43819637041e-02 2.94074293899e-02 3.52402742752e-02 4.17618689283e-02 4.87273692032e-02 + 5.57595749637e-02 6.23688231248e-02 6.80033074139e-02 7.21264918488e-02 7.43082663472e-02 7.43082663472e-02 + 7.15201290633e-02 6.61022866145e-02 5.93841418824e-02 5.20033431247e-02 4.45431970579e-02 3.74634706166e-02 + 3.10717223250e-02 2.55281844546e-02 2.08735527936e-02 1.70678712692e-02 1.40283418589e-02 1.16573532374e-02 + 9.85925299562e-03 8.54973346172e-03 7.66146344666e-03 7.14689010595e-03 6.97836085285e-03 7.14689010595e-03 + 7.66146344666e-03 8.54973346172e-03 9.85925299562e-03 1.16573532374e-02 1.40283418589e-02 1.70678712692e-02 + 2.08735527936e-02 2.55281844546e-02 3.10717223250e-02 3.74634706166e-02 4.45431970579e-02 5.20033431247e-02 + 5.93841418824e-02 6.61022866145e-02 7.15201290633e-02 7.50510418428e-02 7.62783857555e-02 7.50510418428e-02 + 6.98920688762e-02 6.34040688222e-02 5.59201471811e-02 4.81082332430e-02 4.05244812822e-02 3.35632692529e-02 + 2.74512061786e-02 2.22726314479e-02 1.80109897723e-02 1.45906790875e-02 1.19093466628e-02 9.85925299562e-03 + 8.34122341388e-03 7.27338017313e-03 6.59479473082e-03 6.26545793635e-03 6.26545793635e-03 6.59479473082e-03 + 7.27338017313e-03 8.34122341388e-03 9.85925299562e-03 1.19093466628e-02 1.45906790875e-02 1.80109897723e-02 + 2.22726314479e-02 2.74512061786e-02 3.35632692529e-02 4.05244812822e-02 4.81082332430e-02 5.59201471811e-02 + 6.34040688222e-02 6.98920688762e-02 7.47020608958e-02 7.72682499914e-02 7.72682499914e-02 7.47020608958e-02 + 6.77723654588e-02 6.04237632524e-02 5.24194501424e-02 4.44094609233e-02 3.68889471691e-02 3.01717861136e-02 + 2.44059448105e-02 1.96135589165e-02 1.57370100687e-02 1.26769712537e-02 1.03186231402e-02 8.54973346172e-03 + 7.27338017313e-03 6.41444748147e-03 5.92021996667e-03 5.75903981319e-03 5.92021996667e-03 6.41444748147e-03 + 7.27338017313e-03 8.54973346172e-03 1.03186231402e-02 1.26769712537e-02 1.57370100687e-02 1.96135589165e-02 + 2.44059448105e-02 3.01717861136e-02 3.68889471691e-02 4.44094609233e-02 5.24194501424e-02 6.04237632524e-02 + 6.77723654588e-02 7.37387049341e-02 7.76449689484e-02 7.90059272690e-02 7.76449689484e-02 7.37387049341e-02 + 6.54719417706e-02 5.74494623672e-02 4.91148354625e-02 4.10670403681e-02 3.37228748044e-02 2.73140021666e-02 + 2.19185274002e-02 1.75083321070e-02 1.39945083398e-02 1.12609832188e-02 9.18679124184e-03 7.66146344666e-03 + 6.59479473082e-03 5.92021996667e-03 5.59394004869e-03 5.59394004869e-03 5.92021996667e-03 6.59479473082e-03 + 7.66146344666e-03 9.18679124184e-03 1.12609832188e-02 1.39945083398e-02 1.75083321070e-02 2.19185274002e-02 + 2.73140021666e-02 3.37228748044e-02 4.10670403681e-02 4.91148354625e-02 5.74494623672e-02 6.54719417706e-02 + 7.24538631804e-02 7.76449689484e-02 8.04193974336e-02 8.04193974336e-02 7.76449689484e-02 7.24538631804e-02 + 6.30873277659e-02 5.45841783826e-02 4.60913389830e-02 3.81345549630e-02 3.10465495213e-02 2.49827563157e-02 + 1.99620901041e-02 1.59162612755e-02 1.27333396536e-02 1.02881382638e-02 8.46060891145e-03 7.14689010595e-03 + 6.26545793635e-03 5.75903981319e-03 5.59394004869e-03 5.75903981319e-03 6.26545793635e-03 7.14689010595e-03 + 8.46060891145e-03 1.02881382638e-02 1.27333396536e-02 1.59162612755e-02 1.99620901041e-02 2.49827563157e-02 + 3.10465495213e-02 3.81345549630e-02 4.60913389830e-02 5.45841783826e-02 6.30873277659e-02 7.09081350393e-02 + 7.72682499914e-02 8.14375530661e-02 8.28911486673e-02 8.14375530661e-02 7.72682499914e-02 7.09081350393e-02 + 6.05796981280e-02 5.18355302331e-02 4.33721592307e-02 3.56312088557e-02 2.88661050079e-02 2.31688478126e-02 + 1.85132658939e-02 1.48031251671e-02 1.19137265332e-02 9.71912104775e-03 8.10563303358e-03 6.97836085285e-03 + 6.26545793635e-03 5.92021996667e-03 5.92021996667e-03 6.26545793635e-03 6.97836085285e-03 8.10563303358e-03 + 9.71912104775e-03 1.19137265332e-02 1.48031251671e-02 1.85132658939e-02 2.31688478126e-02 2.88661050079e-02 + 3.56312088557e-02 4.33721592307e-02 5.18355302331e-02 6.05796981280e-02 6.89793219251e-02 7.62783857555e-02 + 8.16998180862e-02 8.45957298814e-02 8.45957298814e-02 8.16998180862e-02 7.62783857555e-02 6.89793219251e-02 + 5.78981879671e-02 4.92182336225e-02 4.09927131873e-02 3.35871770820e-02 2.71955666447e-02 2.18687619531e-02 + 1.75547637226e-02 1.41440793855e-02 1.15097880648e-02 9.53173661310e-03 8.10563303358e-03 7.14689010595e-03 + 6.59479473082e-03 6.41444748147e-03 6.59479473082e-03 7.14689010595e-03 8.10563303358e-03 9.53173661310e-03 + 1.15097880648e-02 1.41440793855e-02 1.75547637226e-02 2.18687619531e-02 2.71955666447e-02 3.35871770820e-02 + 4.09927131873e-02 4.92182336225e-02 5.78981879671e-02 6.64898780493e-02 7.43082663472e-02 8.06097207709e-02 + 8.47143937707e-02 8.61408122915e-02 8.47143937707e-02 8.06097207709e-02 7.43082663472e-02 6.64898780493e-02 + 5.51031089527e-02 4.68264624901e-02 3.90347179512e-02 3.20546920774e-02 2.60582031450e-02 2.10847229658e-02 + 1.70770073925e-02 1.39256808178e-02 1.15097880648e-02 9.71912104775e-03 8.46060891145e-03 7.66146344666e-03 + 7.27338017313e-03 7.27338017313e-03 7.66146344666e-03 8.46060891145e-03 9.71912104775e-03 1.15097880648e-02 + 1.39256808178e-02 1.70770073925e-02 2.10847229658e-02 2.60582031450e-02 3.20546920774e-02 3.90347179512e-02 + 4.68264624901e-02 5.51031089527e-02 6.33842515281e-02 7.10787520021e-02 7.75631573239e-02 8.22656900591e-02 + 8.47410728024e-02 8.47410728024e-02 8.22656900591e-02 7.75631573239e-02 7.10787520021e-02 6.33842515281e-02 + 5.24339557043e-02 4.48486167771e-02 3.76190713504e-02 3.10978190541e-02 2.54803066383e-02 2.08223402545e-02 + 1.70770073925e-02 1.41440793855e-02 1.19137265332e-02 1.02881382638e-02 9.18679124184e-03 8.54973346172e-03 + 8.34122341388e-03 8.54973346172e-03 9.18679124184e-03 1.02881382638e-02 1.19137265332e-02 1.41440793855e-02 + 1.70770073925e-02 2.08223402545e-02 2.54803066383e-02 3.10978190541e-02 3.76190713504e-02 4.48486167771e-02 + 5.24339557043e-02 5.98878714669e-02 6.66786802062e-02 7.23556493700e-02 7.66122811094e-02 7.92532152557e-02 + 8.01500628124e-02 7.92532152557e-02 7.66122811094e-02 7.23556493700e-02 6.66786802062e-02 5.98878714669e-02 + 5.02828320119e-02 4.35234290368e-02 3.68707660171e-02 3.07715106065e-02 2.54803066383e-02 2.10847229658e-02 + 1.75547637226e-02 1.48031251671e-02 1.27333396536e-02 1.12609832188e-02 1.03186231402e-02 9.85925299562e-03 + 9.85925299562e-03 1.03186231402e-02 1.12609832188e-02 1.27333396536e-02 1.48031251671e-02 1.75547637226e-02 + 2.10847229658e-02 2.54803066383e-02 3.07715106065e-02 3.68707660171e-02 4.35234290368e-02 5.02828320119e-02 + 5.65511919643e-02 6.17513938278e-02 6.55787911247e-02 6.81077724909e-02 6.96179820017e-02 7.03323963389e-02 + 7.03323963389e-02 6.96179820017e-02 6.81077724909e-02 6.55787911247e-02 6.17513938278e-02 5.65511919643e-02 + 4.90700187394e-02 4.30547772101e-02 3.68707660171e-02 3.10978190541e-02 2.60582031450e-02 2.18687619531e-02 + 1.85132658939e-02 1.59162612755e-02 1.39945083398e-02 1.26769712537e-02 1.19093466628e-02 1.16573532374e-02 + 1.19093466628e-02 1.26769712537e-02 1.39945083398e-02 1.59162612755e-02 1.85132658939e-02 2.18687619531e-02 + 2.60582031450e-02 3.10978190541e-02 3.68707660171e-02 4.30547772101e-02 4.90700187394e-02 5.41129564364e-02 + 5.74105494947e-02 5.86758842735e-02 5.83777841365e-02 5.74463352203e-02 5.66663226477e-02 5.63846435627e-02 + 5.66663226477e-02 5.74463352203e-02 5.83777841365e-02 5.86758842735e-02 5.74105494947e-02 5.41129564364e-02 + 4.90700187394e-02 4.35234290368e-02 3.76190713504e-02 3.20546920774e-02 2.71955666447e-02 2.31688478126e-02 + 1.99620901041e-02 1.75083321070e-02 1.57370100687e-02 1.45906790875e-02 1.40283418589e-02 1.40283418589e-02 + 1.45906790875e-02 1.57370100687e-02 1.75083321070e-02 1.99620901041e-02 2.31688478126e-02 2.71955666447e-02 + 3.20546920774e-02 3.76190713504e-02 4.35234290368e-02 4.90700187394e-02 5.32152215954e-02 5.48533676650e-02 + 5.34983990182e-02 4.98718618187e-02 4.56222411881e-02 4.22847991283e-02 4.05694134160e-02 4.05694134160e-02 + 4.22847991283e-02 4.56222411881e-02 4.98718618187e-02 5.34983990182e-02 5.48533676650e-02 5.32152215954e-02 + 5.02828320119e-02 4.48486167771e-02 3.90347179512e-02 3.35871770820e-02 2.88661050079e-02 2.49827563157e-02 + 2.19185274002e-02 1.96135589165e-02 1.80109897723e-02 1.70678712692e-02 1.67567114426e-02 1.70678712692e-02 + 1.80109897723e-02 1.96135589165e-02 2.19185274002e-02 2.49827563157e-02 2.88661050079e-02 3.35871770820e-02 + 3.90347179512e-02 4.48486167771e-02 5.02828320119e-02 5.41129564364e-02 5.48533676650e-02 5.15765048907e-02 + 4.49279278957e-02 3.71417160544e-02 3.06594619284e-02 2.67478820537e-02 2.54935088837e-02 2.67478820537e-02 + 3.06594619284e-02 3.71417160544e-02 4.49279278957e-02 5.15765048907e-02 5.48533676650e-02 5.41129564364e-02 + 5.24339557043e-02 4.68264624901e-02 4.09927131873e-02 3.56312088557e-02 3.10465495213e-02 2.73140021666e-02 + 2.44059448105e-02 2.22726314479e-02 2.08735527936e-02 2.01812628043e-02 2.01812628043e-02 2.08735527936e-02 + 2.22726314479e-02 2.44059448105e-02 2.73140021666e-02 3.10465495213e-02 3.56312088557e-02 4.09927131873e-02 + 4.68264624901e-02 5.24339557043e-02 5.65511919643e-02 5.74105494947e-02 5.34983990182e-02 4.49279278957e-02 + 3.40771392673e-02 2.42761411551e-02 1.76819501362e-02 1.46090879135e-02 1.46090879135e-02 1.76819501362e-02 + 2.42761411551e-02 3.40771392673e-02 4.49279278957e-02 5.34983990182e-02 5.74105494947e-02 5.65511919643e-02 + 5.51031089527e-02 4.92182336225e-02 4.33721592307e-02 3.81345549630e-02 3.37228748044e-02 3.01717861136e-02 + 2.74512061786e-02 2.55281844546e-02 2.43819637041e-02 2.40011711299e-02 2.43819637041e-02 2.55281844546e-02 + 2.74512061786e-02 3.01717861136e-02 3.37228748044e-02 3.81345549630e-02 4.33721592307e-02 4.92182336225e-02 + 5.51031089527e-02 5.98878714669e-02 6.17513938278e-02 5.86758842735e-02 4.98718618187e-02 3.71417160544e-02 + 2.42761411551e-02 1.45732066269e-02 9.13060134292e-03 7.45857574908e-03 9.13060134292e-03 1.45732066269e-02 + 2.42761411551e-02 3.71417160544e-02 4.98718618187e-02 5.86758842735e-02 6.17513938278e-02 5.98878714669e-02 + 5.78981879671e-02 5.18355302331e-02 4.60913389830e-02 4.10670403681e-02 3.68889471691e-02 3.35632692529e-02 + 3.10717223250e-02 2.94074293899e-02 2.85734174953e-02 2.85734174953e-02 2.94074293899e-02 3.10717223250e-02 + 3.35632692529e-02 3.68889471691e-02 4.10670403681e-02 4.60913389830e-02 5.18355302331e-02 5.78981879671e-02 + 6.33842515281e-02 6.66786802062e-02 6.55787911247e-02 5.83777841365e-02 4.56222411881e-02 3.06594619284e-02 + 1.76819501362e-02 9.13060134292e-03 5.17285277950e-03 5.17285277950e-03 9.13060134292e-03 1.76819501362e-02 + 3.06594619284e-02 4.56222411881e-02 5.83777841365e-02 6.55787911247e-02 6.66786802062e-02 6.33842515281e-02 + 6.05796981280e-02 5.45841783826e-02 4.91148354625e-02 4.44094609233e-02 4.05244812822e-02 3.74634706166e-02 + 3.52402742752e-02 3.38859304601e-02 3.34304675050e-02 3.38859304601e-02 3.52402742752e-02 3.74634706166e-02 + 4.05244812822e-02 4.44094609233e-02 4.91148354625e-02 5.45841783826e-02 6.05796981280e-02 6.64898780493e-02 + 7.10787520021e-02 7.23556493700e-02 6.81077724909e-02 5.74463352203e-02 4.22847991283e-02 2.67478820537e-02 + 1.46090879135e-02 7.45857574908e-03 5.17285277950e-03 7.45857574908e-03 1.46090879135e-02 2.67478820537e-02 + 4.22847991283e-02 5.74463352203e-02 6.81077724909e-02 7.23556493700e-02 7.10787520021e-02 6.64898780493e-02 + 6.30873277659e-02 5.74494623672e-02 5.24194501424e-02 4.81082332430e-02 4.45431970579e-02 4.17618689283e-02 + 3.98358227133e-02 3.88462459817e-02 3.88462459817e-02 3.98358227133e-02 4.17618689283e-02 4.45431970579e-02 + 4.81082332430e-02 5.24194501424e-02 5.74494623672e-02 6.30873277659e-02 6.89793219251e-02 7.43082663472e-02 + 7.75631573239e-02 7.66122811094e-02 6.96179820017e-02 5.66663226477e-02 4.05694134160e-02 2.54935088837e-02 + 1.46090879135e-02 9.13060134292e-03 9.13060134292e-03 1.46090879135e-02 2.54935088837e-02 4.05694134160e-02 + 5.66663226477e-02 6.96179820017e-02 7.66122811094e-02 7.75631573239e-02 7.43082663472e-02 6.89793219251e-02 + 6.54719417706e-02 6.04237632524e-02 5.59201471811e-02 5.20033431247e-02 4.87273692032e-02 4.62088704848e-02 + 4.46053414397e-02 4.40529168852e-02 4.46053414397e-02 4.62088704848e-02 4.87273692032e-02 5.20033431247e-02 + 5.59201471811e-02 6.04237632524e-02 6.54719417706e-02 7.09081350393e-02 7.62783857555e-02 8.06097207709e-02 + 8.22656900591e-02 7.92532152557e-02 7.03323963389e-02 5.63846435627e-02 4.05694134160e-02 2.67478820537e-02 + 1.76819501362e-02 1.45732066269e-02 1.76819501362e-02 2.67478820537e-02 4.05694134160e-02 5.63846435627e-02 + 7.03323963389e-02 7.92532152557e-02 8.22656900591e-02 8.06097207709e-02 7.62783857555e-02 7.09081350393e-02 + 6.77723654588e-02 6.34040688222e-02 5.93841418824e-02 5.57595749637e-02 5.26787408684e-02 5.03893328752e-02 + 4.91578982971e-02 4.91578982971e-02 5.03893328752e-02 5.26787408684e-02 5.57595749637e-02 5.93841418824e-02 + 6.34040688222e-02 6.77723654588e-02 7.24538631804e-02 7.72682499914e-02 8.16998180862e-02 8.47143937707e-02 + 8.47410728024e-02 8.01500628124e-02 7.03323963389e-02 5.66663226477e-02 4.22847991283e-02 3.06594619284e-02 + 2.42761411551e-02 2.42761411551e-02 3.06594619284e-02 4.22847991283e-02 5.66663226477e-02 7.03323963389e-02 + 8.01500628124e-02 8.47410728024e-02 8.47143937707e-02 8.16998180862e-02 7.72682499914e-02 7.24538631804e-02 + 6.98920688762e-02 6.61022866145e-02 6.23688231248e-02 5.88318176265e-02 5.58153453540e-02 5.37510492057e-02 + 5.30133769166e-02 5.37510492057e-02 5.58153453540e-02 5.88318176265e-02 6.23688231248e-02 6.61022866145e-02 + 6.98920688762e-02 7.37387049341e-02 7.76449689484e-02 8.14375530661e-02 8.45957298814e-02 8.61408122915e-02 + 8.47410728024e-02 7.92532152557e-02 6.96179820017e-02 5.74463352203e-02 4.56222411881e-02 3.71417160544e-02 + 3.40771392673e-02 3.71417160544e-02 4.56222411881e-02 5.74463352203e-02 6.96179820017e-02 7.92532152557e-02 + 8.47410728024e-02 8.61408122915e-02 8.45957298814e-02 8.14375530661e-02 7.76449689484e-02 7.37387049341e-02 + 7.15201290633e-02 6.80033074139e-02 6.42180018992e-02 6.05090723285e-02 5.74676014035e-02 5.57363453523e-02 + 5.57363453523e-02 5.74676014035e-02 6.05090723285e-02 6.42180018992e-02 6.80033074139e-02 7.15201290633e-02 + 7.47020608958e-02 7.76449689484e-02 8.04193974336e-02 8.28911486673e-02 8.45957298814e-02 8.47143937707e-02 + 8.22656900591e-02 7.66122811094e-02 6.81077724909e-02 5.83777841365e-02 4.98718618187e-02 4.49279278957e-02 + 4.49279278957e-02 4.98718618187e-02 5.83777841365e-02 6.81077724909e-02 7.66122811094e-02 8.22656900591e-02 + 8.47143937707e-02 8.45957298814e-02 8.28911486673e-02 8.04193974336e-02 7.76449689484e-02 7.47020608958e-02 + 7.21264918488e-02 6.84139609392e-02 6.41840706496e-02 6.01184381094e-02 5.71366804742e-02 5.60372557288e-02 + 5.71366804742e-02 6.01184381094e-02 6.41840706496e-02 6.84139609392e-02 7.21264918488e-02 7.50510418428e-02 + 7.72682499914e-02 7.90059272690e-02 8.04193974336e-02 8.14375530661e-02 8.16998180862e-02 8.06097207709e-02 + 7.75631573239e-02 7.23556493700e-02 6.55787911247e-02 5.86758842735e-02 5.34983990182e-02 5.15765048907e-02 + 5.34983990182e-02 5.86758842735e-02 6.55787911247e-02 7.23556493700e-02 7.75631573239e-02 8.06097207709e-02 + 8.16998180862e-02 8.14375530661e-02 8.04193974336e-02 7.90059272690e-02 7.72682499914e-02 7.50510418428e-02 + 7.10787520021e-02 6.66786802062e-02 6.17513938278e-02 5.74105494947e-02 5.48533676650e-02 5.48533676650e-02 + 5.74105494947e-02 6.17513938278e-02 6.66786802062e-02 7.10787520021e-02 7.43082663472e-02 7.62783857555e-02 + 7.72682499914e-02 7.76449689484e-02 7.76449689484e-02 7.72682499914e-02 7.62783857555e-02 7.43082663472e-02 + 7.10787520021e-02 6.66786802062e-02 6.17513938278e-02 5.74105494947e-02 5.48533676650e-02 5.48533676650e-02 + 5.74105494947e-02 6.17513938278e-02 6.66786802062e-02 7.10787520021e-02 7.43082663472e-02 7.62783857555e-02 + 7.72682499914e-02 7.76449689484e-02 7.76449689484e-02 7.72682499914e-02 7.62783857555e-02 7.43082663472e-02 + 6.79320857310e-02 6.25800698666e-02 5.70772559013e-02 5.29210396854e-02 5.13723037105e-02 5.29210396854e-02 + 5.70772559013e-02 6.25800698666e-02 6.79320857310e-02 7.19923628057e-02 7.43082663472e-02 7.50510418428e-02 + 7.47020608958e-02 7.37387049341e-02 7.24538631804e-02 7.09081350393e-02 6.89793219251e-02 6.64898780493e-02 + 6.33842515281e-02 5.98878714669e-02 5.65511919643e-02 5.41129564364e-02 5.32152215954e-02 5.41129564364e-02 + 5.65511919643e-02 5.98878714669e-02 6.33842515281e-02 6.64898780493e-02 6.89793219251e-02 7.09081350393e-02 + 7.24538631804e-02 7.37387049341e-02 7.47020608958e-02 7.50510418428e-02 7.43082663472e-02 7.19923628057e-02 + 5.75824043038e-02 4.89850720157e-02 4.26203265537e-02 4.02808330656e-02 4.26203265537e-02 4.89850720157e-02 + 5.75824043038e-02 6.60504635380e-02 7.23556493700e-02 7.55368812409e-02 7.57970302390e-02 7.40032629540e-02 + 7.10977313661e-02 6.77723654588e-02 6.44054743742e-02 6.11288569567e-02 5.79474348197e-02 5.48714786192e-02 + 5.20147259753e-02 4.96193341715e-02 4.79989400749e-02 4.74231711778e-02 4.79989400749e-02 4.96193341715e-02 + 5.20147259753e-02 5.48714786192e-02 5.79474348197e-02 6.11288569567e-02 6.44054743742e-02 6.77723654588e-02 + 7.10977313661e-02 7.40032629540e-02 7.57970302390e-02 7.55368812409e-02 7.23556493700e-02 6.60504635380e-02 + 4.89850720157e-02 4.11986868029e-02 3.67025276917e-02 3.67025276917e-02 4.11986868029e-02 4.89850720157e-02 + 5.79103146750e-02 6.55787911247e-02 7.03019494995e-02 7.16581855164e-02 7.02831021338e-02 6.72218662363e-02 + 6.34040688222e-02 5.94462807362e-02 5.56676247698e-02 5.21839135623e-02 4.90231496620e-02 4.62258246981e-02 + 4.38959177953e-02 4.21941579647e-02 4.12888114430e-02 4.12888114430e-02 4.21941579647e-02 4.38959177953e-02 + 4.62258246981e-02 4.90231496620e-02 5.21839135623e-02 5.56676247698e-02 5.94462807362e-02 6.34040688222e-02 + 6.72218662363e-02 7.02831021338e-02 7.16581855164e-02 7.03019494995e-02 6.55787911247e-02 5.79103146750e-02 + 4.26203265537e-02 3.67025276917e-02 3.45455630665e-02 3.67025276917e-02 4.26203265537e-02 5.07010770424e-02 + 5.86758842735e-02 6.44394828494e-02 6.69101294891e-02 6.62522137956e-02 6.33941825467e-02 5.93841418824e-02 + 5.50251512552e-02 5.08044555558e-02 4.69561004766e-02 4.35604474537e-02 4.06430475235e-02 3.82415861113e-02 + 3.64263171972e-02 3.52857897121e-02 3.48956024912e-02 3.52857897121e-02 3.64263171972e-02 3.82415861113e-02 + 4.06430475235e-02 4.35604474537e-02 4.69561004766e-02 5.08044555558e-02 5.50251512552e-02 5.93841418824e-02 + 6.33941825467e-02 6.62522137956e-02 6.69101294891e-02 6.44394828494e-02 5.86758842735e-02 5.07010770424e-02 + 4.02808330656e-02 3.67025276917e-02 3.67025276917e-02 4.02808330656e-02 4.64751950426e-02 5.34983990182e-02 + 5.92810318582e-02 6.23288110708e-02 6.22821499923e-02 5.97584596222e-02 5.57595749637e-02 5.11831265828e-02 + 4.66403070569e-02 4.24686468881e-02 3.88104397494e-02 3.57044700685e-02 3.31615306069e-02 3.12022017908e-02 + 2.98615217076e-02 2.91781605866e-02 2.91781605866e-02 2.98615217076e-02 3.12022017908e-02 3.31615306069e-02 + 3.57044700685e-02 3.88104397494e-02 4.24686468881e-02 4.66403070569e-02 5.11831265828e-02 5.57595749637e-02 + 5.97584596222e-02 6.22821499923e-02 6.23288110708e-02 5.92810318582e-02 5.34983990182e-02 4.64751950426e-02 + 4.26203265537e-02 4.11986868029e-02 4.26203265537e-02 4.64751950426e-02 5.15765048907e-02 5.62463189889e-02 + 5.89627863020e-02 5.90154969276e-02 5.66509609539e-02 5.26787408684e-02 4.79731106469e-02 4.32002938784e-02 + 3.87673596218e-02 3.48695445110e-02 3.15673758761e-02 2.88631293974e-02 2.67502344749e-02 2.52298202509e-02 + 2.43103322252e-02 2.40022165572e-02 2.43103322252e-02 2.52298202509e-02 2.67502344749e-02 2.88631293974e-02 + 3.15673758761e-02 3.48695445110e-02 3.87673596218e-02 4.32002938784e-02 4.79731106469e-02 5.26787408684e-02 + 5.66509609539e-02 5.90154969276e-02 5.89627863020e-02 5.62463189889e-02 5.15765048907e-02 4.64751950426e-02 + 4.89850720157e-02 4.89850720157e-02 5.07010770424e-02 5.34983990182e-02 5.62463189889e-02 5.77208882781e-02 + 5.71527035674e-02 5.45211951056e-02 5.03893328752e-02 4.55081727847e-02 4.05199675384e-02 3.58537824974e-02 + 3.17358390207e-02 2.82446089484e-02 2.53797852965e-02 2.31175818882e-02 2.14361295219e-02 2.03206914317e-02 + 1.97639178277e-02 1.97639178277e-02 2.03206914317e-02 2.14361295219e-02 2.31175818882e-02 2.53797852965e-02 + 2.82446089484e-02 3.17358390207e-02 3.58537824974e-02 4.05199675384e-02 4.55081727847e-02 5.03893328752e-02 + 5.45211951056e-02 5.71527035674e-02 5.77208882781e-02 5.62463189889e-02 5.34983990182e-02 5.07010770424e-02 + 5.75824043038e-02 5.79103146750e-02 5.86758842735e-02 5.92810318582e-02 5.89627863020e-02 5.71527035674e-02 + 5.37595739225e-02 4.91578982971e-02 4.39402098517e-02 3.86662855632e-02 3.37399765679e-02 2.93901320501e-02 + 2.57019293917e-02 2.26718438342e-02 2.02621880335e-02 1.84326960165e-02 1.71497889118e-02 1.63890080671e-02 + 1.61367490443e-02 1.63890080671e-02 1.71497889118e-02 1.84326960165e-02 2.02621880335e-02 2.26718438342e-02 + 2.57019293917e-02 2.93901320501e-02 3.37399765679e-02 3.86662855632e-02 4.39402098517e-02 4.91578982971e-02 + 5.37595739225e-02 5.71527035674e-02 5.89627863020e-02 5.92810318582e-02 5.86758842735e-02 5.79103146750e-02 + 6.60504635380e-02 6.55787911247e-02 6.44394828494e-02 6.23288110708e-02 5.90154969276e-02 5.45211951056e-02 + 4.91578982971e-02 4.34003076052e-02 3.77147526395e-02 3.24534608631e-02 2.78244998346e-02 2.39063871143e-02 + 2.06884779452e-02 1.81196807915e-02 1.61427916872e-02 1.47072813037e-02 1.37726366090e-02 1.33116675302e-02 + 1.33116675302e-02 1.37726366090e-02 1.47072813037e-02 1.61427916872e-02 1.81196807915e-02 2.06884779452e-02 + 2.39063871143e-02 2.78244998346e-02 3.24534608631e-02 3.77147526395e-02 4.34003076052e-02 4.91578982971e-02 + 5.45211951056e-02 5.90154969276e-02 6.23288110708e-02 6.44394828494e-02 6.55787911247e-02 6.60504635380e-02 + 7.23556493700e-02 7.03019494995e-02 6.69101294891e-02 6.22821499923e-02 5.66509609539e-02 5.03893328752e-02 + 4.39402098517e-02 3.77147526395e-02 3.20210145144e-02 2.70402901784e-02 2.28368095394e-02 1.93892705934e-02 + 1.66330383744e-02 1.44944499034e-02 1.29064893850e-02 1.18131307076e-02 1.11729588764e-02 1.09620544703e-02 + 1.11729588764e-02 1.18131307076e-02 1.29064893850e-02 1.44944499034e-02 1.66330383744e-02 1.93892705934e-02 + 2.28368095394e-02 2.70402901784e-02 3.20210145144e-02 3.77147526395e-02 4.39402098517e-02 5.03893328752e-02 + 5.66509609539e-02 6.22821499923e-02 6.69101294891e-02 7.03019494995e-02 7.23556493700e-02 7.30418134594e-02 + 7.55368812409e-02 7.16581855164e-02 6.62522137956e-02 5.97584596222e-02 5.26787408684e-02 4.55081727847e-02 + 3.86662855632e-02 3.24534608631e-02 2.70402901784e-02 2.24815496090e-02 1.87467470027e-02 1.57591868798e-02 + 1.34297677852e-02 1.16751572683e-02 1.04238516982e-02 9.61987006090e-03 9.22648243576e-03 9.22648243576e-03 + 9.61987006090e-03 1.04238516982e-02 1.16751572683e-02 1.34297677852e-02 1.57591868798e-02 1.87467470027e-02 + 2.24815496090e-02 2.70402901784e-02 3.24534608631e-02 3.86662855632e-02 4.55081727847e-02 5.26787408684e-02 + 5.97584596222e-02 6.62522137956e-02 7.16581855164e-02 7.55368812409e-02 7.75631573239e-02 7.75631573239e-02 + 7.57970302390e-02 7.02831021338e-02 6.33941825467e-02 5.57595749637e-02 4.79731106469e-02 4.05199675384e-02 + 3.37399765679e-02 2.78244998346e-02 2.28368095394e-02 1.87467470027e-02 1.54709928045e-02 1.29079014387e-02 + 1.09586567104e-02 9.53627070961e-03 8.57007132232e-03 8.00955236461e-03 7.82576853226e-03 8.00955236461e-03 + 8.57007132232e-03 9.53627070961e-03 1.09586567104e-02 1.29079014387e-02 1.54709928045e-02 1.87467470027e-02 + 2.28368095394e-02 2.78244998346e-02 3.37399765679e-02 4.05199675384e-02 4.79731106469e-02 5.57595749637e-02 + 6.33941825467e-02 7.02831021338e-02 7.57970302390e-02 7.93709590427e-02 8.06097207709e-02 7.93709590427e-02 + 7.40032629540e-02 6.72218662363e-02 5.93841418824e-02 5.11831265828e-02 4.32002938784e-02 3.58537824974e-02 + 2.93901320501e-02 2.39063871143e-02 1.93892705934e-02 1.57591868798e-02 1.29079014387e-02 1.07235056315e-02 + 9.10381322670e-03 7.96341795569e-03 7.23785699764e-03 6.88519888788e-03 6.88519888788e-03 7.23785699764e-03 + 7.96341795569e-03 9.10381322670e-03 1.07235056315e-02 1.29079014387e-02 1.57591868798e-02 1.93892705934e-02 + 2.39063871143e-02 2.93901320501e-02 3.58537824974e-02 4.32002938784e-02 5.11831265828e-02 5.93841418824e-02 + 6.72218662363e-02 7.40032629540e-02 7.90236437036e-02 8.16998180862e-02 8.16998180862e-02 7.90236437036e-02 + 7.10977313661e-02 6.34040688222e-02 5.50251512552e-02 4.66403070569e-02 3.87673596218e-02 3.17358390207e-02 + 2.57019293917e-02 2.06884779452e-02 1.66330383744e-02 1.34297677852e-02 1.09586567104e-02 9.10381322670e-03 + 7.76490388909e-03 6.86339437793e-03 6.34416762186e-03 6.17468606834e-03 6.34416762186e-03 6.86339437793e-03 + 7.76490388909e-03 9.10381322670e-03 1.09586567104e-02 1.34297677852e-02 1.66330383744e-02 2.06884779452e-02 + 2.57019293917e-02 3.17358390207e-02 3.87673596218e-02 4.66403070569e-02 5.50251512552e-02 6.34040688222e-02 + 7.10977313661e-02 7.73458021392e-02 8.14375530661e-02 8.28633557769e-02 8.14375530661e-02 7.73458021392e-02 + 6.77723654588e-02 5.94462807362e-02 5.08044555558e-02 4.24686468881e-02 3.48695445110e-02 2.82446089484e-02 + 2.26718438342e-02 1.81196807915e-02 1.44944499034e-02 1.16751572683e-02 9.53627070961e-03 7.96341795569e-03 + 6.86339437793e-03 6.16759269815e-03 5.83098728503e-03 5.83098728503e-03 6.16759269815e-03 6.86339437793e-03 + 7.96341795569e-03 9.53627070961e-03 1.16751572683e-02 1.44944499034e-02 1.81196807915e-02 2.26718438342e-02 + 2.82446089484e-02 3.48695445110e-02 4.24686468881e-02 5.08044555558e-02 5.94462807362e-02 6.77723654588e-02 + 7.50243106749e-02 8.04193974336e-02 8.33038946145e-02 8.33038946145e-02 8.04193974336e-02 7.50243106749e-02 + 6.44054743742e-02 5.56676247698e-02 4.69561004766e-02 3.88104397494e-02 3.15673758761e-02 2.53797852965e-02 + 2.02621880335e-02 1.61427916872e-02 1.29064893850e-02 1.04238516982e-02 8.57007132232e-03 7.23785699764e-03 + 6.34416762186e-03 5.83098728503e-03 5.66378434823e-03 5.83098728503e-03 6.34416762186e-03 7.23785699764e-03 + 8.57007132232e-03 1.04238516982e-02 1.29064893850e-02 1.61427916872e-02 2.02621880335e-02 2.53797852965e-02 + 3.15673758761e-02 3.88104397494e-02 4.69561004766e-02 5.56676247698e-02 6.44054743742e-02 7.24538631804e-02 + 7.90059272690e-02 8.33038946145e-02 8.48028174918e-02 8.33038946145e-02 7.90059272690e-02 7.24538631804e-02 + 6.11288569567e-02 5.21839135623e-02 4.35604474537e-02 3.57044700685e-02 2.88631293974e-02 2.31175818882e-02 + 1.84326960165e-02 1.47072813037e-02 1.18131307076e-02 9.61987006090e-03 8.00955236461e-03 6.88519888788e-03 + 6.17468606834e-03 5.83098728503e-03 5.83098728503e-03 6.17468606834e-03 6.88519888788e-03 8.00955236461e-03 + 9.61987006090e-03 1.18131307076e-02 1.47072813037e-02 1.84326960165e-02 2.31175818882e-02 2.88631293974e-02 + 3.57044700685e-02 4.35604474537e-02 5.21839135623e-02 6.11288569567e-02 6.97522426294e-02 7.72682499914e-02 + 8.28633557769e-02 8.58561529560e-02 8.58561529560e-02 8.28633557769e-02 7.72682499914e-02 6.97522426294e-02 + 5.79474348197e-02 4.90231496620e-02 4.06430475235e-02 3.31615306069e-02 2.67502344749e-02 2.14361295219e-02 + 1.71497889118e-02 1.37726366090e-02 1.11729588764e-02 9.22648243576e-03 7.82576853226e-03 6.88519888788e-03 + 6.34416762186e-03 6.16759269815e-03 6.34416762186e-03 6.88519888788e-03 7.82576853226e-03 9.22648243576e-03 + 1.11729588764e-02 1.37726366090e-02 1.71497889118e-02 2.14361295219e-02 2.67502344749e-02 3.31615306069e-02 + 4.06430475235e-02 4.90231496620e-02 5.79474348197e-02 6.68641206041e-02 7.50510418428e-02 8.16998180862e-02 + 8.60542685404e-02 8.75716967614e-02 8.60542685404e-02 8.16998180862e-02 7.50510418428e-02 6.68641206041e-02 + 5.48714786192e-02 4.62258246981e-02 3.82415861113e-02 3.12022017908e-02 2.52298202509e-02 2.03206914317e-02 + 1.63890080671e-02 1.33116675302e-02 1.09620544703e-02 9.22648243576e-03 8.00955236461e-03 7.23785699764e-03 + 6.86339437793e-03 6.86339437793e-03 7.23785699764e-03 8.00955236461e-03 9.22648243576e-03 1.09620544703e-02 + 1.33116675302e-02 1.63890080671e-02 2.03206914317e-02 2.52298202509e-02 3.12022017908e-02 3.82415861113e-02 + 4.62258246981e-02 5.48714786192e-02 6.37149803432e-02 7.21264918488e-02 7.93709590427e-02 8.47143937707e-02 + 8.75562567048e-02 8.75562567048e-02 8.47143937707e-02 7.93709590427e-02 7.21264918488e-02 6.37149803432e-02 + 5.20147259753e-02 4.38959177953e-02 3.64263171972e-02 2.98615217076e-02 2.43103322252e-02 1.97639178277e-02 + 1.61367490443e-02 1.33116675302e-02 1.11729588764e-02 9.61987006090e-03 8.57007132232e-03 7.96341795569e-03 + 7.76490388909e-03 7.96341795569e-03 8.57007132232e-03 9.61987006090e-03 1.11729588764e-02 1.33116675302e-02 + 1.61367490443e-02 1.97639178277e-02 2.43103322252e-02 2.98615217076e-02 3.64263171972e-02 4.38959177953e-02 + 5.20147259753e-02 6.03694423859e-02 6.84139609392e-02 7.55368812409e-02 8.11458755837e-02 8.47410728024e-02 + 8.59805323971e-02 8.47410728024e-02 8.11458755837e-02 7.55368812409e-02 6.84139609392e-02 6.03694423859e-02 + 4.96193341715e-02 4.21941579647e-02 3.52857897121e-02 2.91781605866e-02 2.40022165572e-02 1.97639178277e-02 + 1.63890080671e-02 1.37726366090e-02 1.18131307076e-02 1.04238516982e-02 9.53627070961e-03 9.10381322670e-03 + 9.10381322670e-03 9.53627070961e-03 1.04238516982e-02 1.18131307076e-02 1.37726366090e-02 1.63890080671e-02 + 1.97639178277e-02 2.40022165572e-02 2.91781605866e-02 3.52857897121e-02 4.21941579647e-02 4.96193341715e-02 + 5.71251588417e-02 6.41840706496e-02 7.03019494995e-02 7.51264696898e-02 7.84511058955e-02 8.01500628124e-02 + 8.01500628124e-02 7.84511058955e-02 7.51264696898e-02 7.03019494995e-02 6.41840706496e-02 5.71251588417e-02 + 4.79989400749e-02 4.12888114430e-02 3.48956024912e-02 2.91781605866e-02 2.43103322252e-02 2.03206914317e-02 + 1.71497889118e-02 1.47072813037e-02 1.29064893850e-02 1.16751572683e-02 1.09586567104e-02 1.07235056315e-02 + 1.09586567104e-02 1.16751572683e-02 1.29064893850e-02 1.47072813037e-02 1.71497889118e-02 2.03206914317e-02 + 2.43103322252e-02 2.91781605866e-02 3.48956024912e-02 4.12888114430e-02 4.79989400749e-02 5.44829894560e-02 + 6.01184381094e-02 6.44394828494e-02 6.73541476702e-02 6.91119067669e-02 7.00400365127e-02 7.03323963389e-02 + 7.00400365127e-02 6.91119067669e-02 6.73541476702e-02 6.44394828494e-02 6.01184381094e-02 5.44829894560e-02 + 4.74231711778e-02 4.12888114430e-02 3.52857897121e-02 2.98615217076e-02 2.52298202509e-02 2.14361295219e-02 + 1.84326960165e-02 1.61427916872e-02 1.44944499034e-02 1.34297677852e-02 1.29079014387e-02 1.29079014387e-02 + 1.34297677852e-02 1.44944499034e-02 1.61427916872e-02 1.84326960165e-02 2.14361295219e-02 2.52298202509e-02 + 2.98615217076e-02 3.52857897121e-02 4.12888114430e-02 4.74231711778e-02 5.29846351657e-02 5.71366804742e-02 + 5.92810318582e-02 5.94868177545e-02 5.85232784436e-02 5.73653289979e-02 5.66663226477e-02 5.66663226477e-02 + 5.73653289979e-02 5.85232784436e-02 5.94868177545e-02 5.92810318582e-02 5.71366804742e-02 5.29846351657e-02 + 4.79989400749e-02 4.21941579647e-02 3.64263171972e-02 3.12022017908e-02 2.67502344749e-02 2.31175818882e-02 + 2.02621880335e-02 1.81196807915e-02 1.66330383744e-02 1.57591868798e-02 1.54709928045e-02 1.57591868798e-02 + 1.66330383744e-02 1.81196807915e-02 2.02621880335e-02 2.31175818882e-02 2.67502344749e-02 3.12022017908e-02 + 3.64263171972e-02 4.21941579647e-02 4.79989400749e-02 5.29846351657e-02 5.60372557288e-02 5.62463189889e-02 + 5.36143814352e-02 4.93308963719e-02 4.51254329663e-02 4.22847991283e-02 4.13123485649e-02 4.22847991283e-02 + 4.51254329663e-02 4.93308963719e-02 5.36143814352e-02 5.62463189889e-02 5.60372557288e-02 5.29846351657e-02 + 4.96193341715e-02 4.38959177953e-02 3.82415861113e-02 3.31615306069e-02 2.88631293974e-02 2.53797852965e-02 + 2.26718438342e-02 2.06884779452e-02 1.93892705934e-02 1.87467470027e-02 1.87467470027e-02 1.93892705934e-02 + 2.06884779452e-02 2.26718438342e-02 2.53797852965e-02 2.88631293974e-02 3.31615306069e-02 3.82415861113e-02 + 4.38959177953e-02 4.96193341715e-02 5.44829894560e-02 5.71366804742e-02 5.62463189889e-02 5.14403532045e-02 + 4.40123223759e-02 3.63849623957e-02 3.06594619284e-02 2.77489957459e-02 2.77489957459e-02 3.06594619284e-02 + 3.63849623957e-02 4.40123223759e-02 5.14403532045e-02 5.62463189889e-02 5.71366804742e-02 5.44829894560e-02 + 5.20147259753e-02 4.62258246981e-02 4.06430475235e-02 3.57044700685e-02 3.15673758761e-02 2.82446089484e-02 + 2.57019293917e-02 2.39063871143e-02 2.28368095394e-02 2.24815496090e-02 2.28368095394e-02 2.39063871143e-02 + 2.57019293917e-02 2.82446089484e-02 3.15673758761e-02 3.57044700685e-02 4.06430475235e-02 4.62258246981e-02 + 5.20147259753e-02 5.71251588417e-02 6.01184381094e-02 5.92810318582e-02 5.36143814352e-02 4.40123223759e-02 + 3.32338776264e-02 2.42761411551e-02 1.87771308641e-02 1.69819929531e-02 1.87771308641e-02 2.42761411551e-02 + 3.32338776264e-02 4.40123223759e-02 5.36143814352e-02 5.92810318582e-02 6.01184381094e-02 5.71251588417e-02 + 5.48714786192e-02 4.90231496620e-02 4.35604474537e-02 3.88104397494e-02 3.48695445110e-02 3.17358390207e-02 + 2.93901320501e-02 2.78244998346e-02 2.70402901784e-02 2.70402901784e-02 2.78244998346e-02 2.93901320501e-02 + 3.17358390207e-02 3.48695445110e-02 3.88104397494e-02 4.35604474537e-02 4.90231496620e-02 5.48714786192e-02 + 6.03694423859e-02 6.41840706496e-02 6.44394828494e-02 5.94868177545e-02 4.93308963719e-02 3.63849623957e-02 + 2.42761411551e-02 1.56860392578e-02 1.14596764125e-02 1.14596764125e-02 1.56860392578e-02 2.42761411551e-02 + 3.63849623957e-02 4.93308963719e-02 5.94868177545e-02 6.44394828494e-02 6.41840706496e-02 6.03694423859e-02 + 5.79474348197e-02 5.21839135623e-02 4.69561004766e-02 4.24686468881e-02 3.87673596218e-02 3.58537824974e-02 + 3.37399765679e-02 3.24534608631e-02 3.20210145144e-02 3.24534608631e-02 3.37399765679e-02 3.58537824974e-02 + 3.87673596218e-02 4.24686468881e-02 4.69561004766e-02 5.21839135623e-02 5.79474348197e-02 6.37149803432e-02 + 6.84139609392e-02 7.03019494995e-02 6.73541476702e-02 5.85232784436e-02 4.51254329663e-02 3.06594619284e-02 + 1.87771308641e-02 1.14596764125e-02 9.05419851032e-03 1.14596764125e-02 1.87771308641e-02 3.06594619284e-02 + 4.51254329663e-02 5.85232784436e-02 6.73541476702e-02 7.03019494995e-02 6.84139609392e-02 6.37149803432e-02 + 6.11288569567e-02 5.56676247698e-02 5.08044555558e-02 4.66403070569e-02 4.32002938784e-02 4.05199675384e-02 + 3.86662855632e-02 3.77147526395e-02 3.77147526395e-02 3.86662855632e-02 4.05199675384e-02 4.32002938784e-02 + 4.66403070569e-02 5.08044555558e-02 5.56676247698e-02 6.11288569567e-02 6.68641206041e-02 7.21264918488e-02 + 7.55368812409e-02 7.51264696898e-02 6.91119067669e-02 5.73653289979e-02 4.22847991283e-02 2.77489957459e-02 + 1.69819929531e-02 1.14596764125e-02 1.14596764125e-02 1.69819929531e-02 2.77489957459e-02 4.22847991283e-02 + 5.73653289979e-02 6.91119067669e-02 7.51264696898e-02 7.55368812409e-02 7.21264918488e-02 6.68641206041e-02 + 6.44054743742e-02 5.94462807362e-02 5.50251512552e-02 5.11831265828e-02 4.79731106469e-02 4.55081727847e-02 + 4.39402098517e-02 4.34003076052e-02 4.39402098517e-02 4.55081727847e-02 4.79731106469e-02 5.11831265828e-02 + 5.50251512552e-02 5.94462807362e-02 6.44054743742e-02 6.97522426294e-02 7.50510418428e-02 7.93709590427e-02 + 8.11458755837e-02 7.84511058955e-02 7.00400365127e-02 5.66663226477e-02 4.13123485649e-02 2.77489957459e-02 + 1.87771308641e-02 1.56860392578e-02 1.87771308641e-02 2.77489957459e-02 4.13123485649e-02 5.66663226477e-02 + 7.00400365127e-02 7.84511058955e-02 8.11458755837e-02 7.93709590427e-02 7.50510418428e-02 6.97522426294e-02 + 6.77723654588e-02 6.34040688222e-02 5.93841418824e-02 5.57595749637e-02 5.26787408684e-02 5.03893328752e-02 + 4.91578982971e-02 4.91578982971e-02 5.03893328752e-02 5.26787408684e-02 5.57595749637e-02 5.93841418824e-02 + 6.34040688222e-02 6.77723654588e-02 7.24538631804e-02 7.72682499914e-02 8.16998180862e-02 8.47143937707e-02 + 8.47410728024e-02 8.01500628124e-02 7.03323963389e-02 5.66663226477e-02 4.22847991283e-02 3.06594619284e-02 + 2.42761411551e-02 2.42761411551e-02 3.06594619284e-02 4.22847991283e-02 5.66663226477e-02 7.03323963389e-02 + 8.01500628124e-02 8.47410728024e-02 8.47143937707e-02 8.16998180862e-02 7.72682499914e-02 7.24538631804e-02 + 7.10977313661e-02 6.72218662363e-02 6.33941825467e-02 5.97584596222e-02 5.66509609539e-02 5.45211951056e-02 + 5.37595739225e-02 5.45211951056e-02 5.66509609539e-02 5.97584596222e-02 6.33941825467e-02 6.72218662363e-02 + 7.10977313661e-02 7.50243106749e-02 7.90059272690e-02 8.28633557769e-02 8.60542685404e-02 8.75562567048e-02 + 8.59805323971e-02 8.01500628124e-02 7.00400365127e-02 5.73653289979e-02 4.51254329663e-02 3.63849623957e-02 + 3.32338776264e-02 3.63849623957e-02 4.51254329663e-02 5.73653289979e-02 7.00400365127e-02 8.01500628124e-02 + 8.59805323971e-02 8.75562567048e-02 8.60542685404e-02 8.28633557769e-02 7.90059272690e-02 7.50243106749e-02 + 7.40032629540e-02 7.02831021338e-02 6.62522137956e-02 6.22821499923e-02 5.90154969276e-02 5.71527035674e-02 + 5.71527035674e-02 5.90154969276e-02 6.22821499923e-02 6.62522137956e-02 7.02831021338e-02 7.40032629540e-02 + 7.73458021392e-02 8.04193974336e-02 8.33038946145e-02 8.58561529560e-02 8.75716967614e-02 8.75562567048e-02 + 8.47410728024e-02 7.84511058955e-02 6.91119067669e-02 5.85232784436e-02 4.93308963719e-02 4.40123223759e-02 + 4.40123223759e-02 4.93308963719e-02 5.85232784436e-02 6.91119067669e-02 7.84511058955e-02 8.47410728024e-02 + 8.75562567048e-02 8.75716967614e-02 8.58561529560e-02 8.33038946145e-02 8.04193974336e-02 7.73458021392e-02 + 7.57970302390e-02 7.16581855164e-02 6.69101294891e-02 6.23288110708e-02 5.89627863020e-02 5.77208882781e-02 + 5.89627863020e-02 6.23288110708e-02 6.69101294891e-02 7.16581855164e-02 7.57970302390e-02 7.90236437036e-02 + 8.14375530661e-02 8.33038946145e-02 8.48028174918e-02 8.58561529560e-02 8.60542685404e-02 8.47143937707e-02 + 8.11458755837e-02 7.51264696898e-02 6.73541476702e-02 5.94868177545e-02 5.36143814352e-02 5.14403532045e-02 + 5.36143814352e-02 5.94868177545e-02 6.73541476702e-02 7.51264696898e-02 8.11458755837e-02 8.47143937707e-02 + 8.60542685404e-02 8.58561529560e-02 8.48028174918e-02 8.33038946145e-02 8.14375530661e-02 7.90236437036e-02 + 7.55368812409e-02 7.03019494995e-02 6.44394828494e-02 5.92810318582e-02 5.62463189889e-02 5.62463189889e-02 + 5.92810318582e-02 6.44394828494e-02 7.03019494995e-02 7.55368812409e-02 7.93709590427e-02 8.16998180862e-02 + 8.28633557769e-02 8.33038946145e-02 8.33038946145e-02 8.28633557769e-02 8.16998180862e-02 7.93709590427e-02 + 7.55368812409e-02 7.03019494995e-02 6.44394828494e-02 5.92810318582e-02 5.62463189889e-02 5.62463189889e-02 + 5.92810318582e-02 6.44394828494e-02 7.03019494995e-02 7.55368812409e-02 7.93709590427e-02 8.16998180862e-02 + 8.28633557769e-02 8.33038946145e-02 8.33038946145e-02 8.28633557769e-02 8.16998180862e-02 7.93709590427e-02 + 7.23556493700e-02 6.55787911247e-02 5.86758842735e-02 5.34983990182e-02 5.15765048907e-02 5.34983990182e-02 + 5.86758842735e-02 6.55787911247e-02 7.23556493700e-02 7.75631573239e-02 8.06097207709e-02 8.16998180862e-02 + 8.14375530661e-02 8.04193974336e-02 7.90059272690e-02 7.72682499914e-02 7.50510418428e-02 7.21264918488e-02 + 6.84139609392e-02 6.41840706496e-02 6.01184381094e-02 5.71366804742e-02 5.60372557288e-02 5.71366804742e-02 + 6.01184381094e-02 6.41840706496e-02 6.84139609392e-02 7.21264918488e-02 7.50510418428e-02 7.72682499914e-02 + 7.90059272690e-02 8.04193974336e-02 8.14375530661e-02 8.16998180862e-02 8.06097207709e-02 7.75631573239e-02 + 6.60504635380e-02 5.79103146750e-02 5.07010770424e-02 4.64751950426e-02 4.64751950426e-02 5.07010770424e-02 + 5.79103146750e-02 6.60504635380e-02 7.30418134594e-02 7.75631573239e-02 7.93709590427e-02 7.90236437036e-02 + 7.73458021392e-02 7.50243106749e-02 7.24538631804e-02 6.97522426294e-02 6.68641206041e-02 6.37149803432e-02 + 6.03694423859e-02 5.71251588417e-02 5.44829894560e-02 5.29846351657e-02 5.29846351657e-02 5.44829894560e-02 + 5.71251588417e-02 6.03694423859e-02 6.37149803432e-02 6.68641206041e-02 6.97522426294e-02 7.24538631804e-02 + 7.50243106749e-02 7.73458021392e-02 7.90236437036e-02 7.93709590427e-02 7.75631573239e-02 7.30418134594e-02 + 4.60013609401e-02 3.62214481565e-02 3.07039905741e-02 3.07039905741e-02 3.62214481565e-02 4.60013609401e-02 + 5.76200322747e-02 6.81077724909e-02 7.51264696898e-02 7.78881394404e-02 7.70723261920e-02 7.40032629540e-02 + 6.98920688762e-02 6.55352798807e-02 6.13379141192e-02 5.74449785733e-02 5.38883507401e-02 5.07121410456e-02 + 4.80406383964e-02 4.60731359718e-02 4.50208900473e-02 4.50208900473e-02 4.60731359718e-02 4.80406383964e-02 + 5.07121410456e-02 5.38883507401e-02 5.74449785733e-02 6.13379141192e-02 6.55352798807e-02 6.98920688762e-02 + 7.40032629540e-02 7.70723261920e-02 7.78881394404e-02 7.51264696898e-02 6.81077724909e-02 5.76200322747e-02 + 3.62214481565e-02 2.86292518106e-02 2.59250062413e-02 2.86292518106e-02 3.62214481565e-02 4.70389926376e-02 + 5.83777841365e-02 6.73541476702e-02 7.21810172465e-02 7.27796836797e-02 7.02831021338e-02 6.61022866145e-02 + 6.13334872428e-02 5.66331890923e-02 5.23143637463e-02 4.84855850881e-02 4.51788789706e-02 4.24386109393e-02 + 4.03527020822e-02 3.90350130516e-02 3.85829474965e-02 3.90350130516e-02 4.03527020822e-02 4.24386109393e-02 + 4.51788789706e-02 4.84855850881e-02 5.23143637463e-02 5.66331890923e-02 6.13334872428e-02 6.61022866145e-02 + 7.02831021338e-02 7.27796836797e-02 7.21810172465e-02 6.73541476702e-02 5.83777841365e-02 4.70389926376e-02 + 3.07039905741e-02 2.59250062413e-02 2.59250062413e-02 3.07039905741e-02 3.93541671489e-02 4.98718618187e-02 + 5.94868177545e-02 6.57918464265e-02 6.78442738531e-02 6.62522137956e-02 6.23688231248e-02 5.74762428735e-02 + 5.24477482650e-02 4.77625301985e-02 4.36277000850e-02 4.01041807768e-02 3.72078996967e-02 3.49654910486e-02 + 3.34242157073e-02 3.26363277502e-02 3.26363277502e-02 3.34242157073e-02 3.49654910486e-02 3.72078996967e-02 + 4.01041807768e-02 4.36277000850e-02 4.77625301985e-02 5.24477482650e-02 5.74762428735e-02 6.23688231248e-02 + 6.62522137956e-02 6.78442738531e-02 6.57918464265e-02 5.94868177545e-02 4.98718618187e-02 3.93541671489e-02 + 3.07039905741e-02 2.86292518106e-02 3.07039905741e-02 3.65582592974e-02 4.49279278957e-02 5.36143814352e-02 + 6.01752681104e-02 6.30764730892e-02 6.22821499923e-02 5.88318176265e-02 5.40097122002e-02 4.88190878681e-02 + 4.38725463784e-02 3.94725484932e-02 3.57259716101e-02 3.26483588385e-02 3.02357338101e-02 2.84935612207e-02 + 2.74372089612e-02 2.70827915169e-02 2.74372089612e-02 2.84935612207e-02 3.02357338101e-02 3.26483588385e-02 + 3.57259716101e-02 3.94725484932e-02 4.38725463784e-02 4.88190878681e-02 5.40097122002e-02 5.88318176265e-02 + 6.22821499923e-02 6.30764730892e-02 6.01752681104e-02 5.36143814352e-02 4.49279278957e-02 3.65582592974e-02 + 3.62214481565e-02 3.62214481565e-02 3.93541671489e-02 4.49279278957e-02 5.14403532045e-02 5.68740665481e-02 + 5.95715936141e-02 5.90154969276e-02 5.58153453540e-02 5.10737783335e-02 4.57968161948e-02 4.06654278454e-02 + 3.60511821341e-02 3.21049723875e-02 2.88533907006e-02 2.62778950395e-02 2.43576039836e-02 2.30804654510e-02 + 2.24420850452e-02 2.24420850452e-02 2.30804654510e-02 2.43576039836e-02 2.62778950395e-02 2.88533907006e-02 + 3.21049723875e-02 3.60511821341e-02 4.06654278454e-02 4.57968161948e-02 5.10737783335e-02 5.58153453540e-02 + 5.90154969276e-02 5.95715936141e-02 5.68740665481e-02 5.14403532045e-02 4.49279278957e-02 3.93541671489e-02 + 4.60013609401e-02 4.70389926376e-02 4.98718618187e-02 5.36143814352e-02 5.68740665481e-02 5.82782465337e-02 + 5.71527035674e-02 5.37510492057e-02 4.88987422193e-02 4.34838779539e-02 3.81729635435e-02 3.33624200108e-02 + 2.92302840650e-02 2.58139075627e-02 2.30866420056e-02 2.10090352784e-02 1.95479913088e-02 1.86800926235e-02 + 1.83921353899e-02 1.86800926235e-02 1.95479913088e-02 2.10090352784e-02 2.30866420056e-02 2.58139075627e-02 + 2.92302840650e-02 3.33624200108e-02 3.81729635435e-02 4.34838779539e-02 4.88987422193e-02 5.37510492057e-02 + 5.71527035674e-02 5.82782465337e-02 5.68740665481e-02 5.36143814352e-02 4.98718618187e-02 4.70389926376e-02 + 5.76200322747e-02 5.83777841365e-02 5.94868177545e-02 6.01752681104e-02 5.95715936141e-02 5.71527035674e-02 + 5.30133769166e-02 4.77311231410e-02 4.20165784801e-02 3.64535808156e-02 3.14154606035e-02 2.70818268649e-02 + 2.34923498457e-02 2.06126999880e-02 1.83878553878e-02 1.67669692380e-02 1.57094271493e-02 1.51874137660e-02 + 1.51874137660e-02 1.57094271493e-02 1.67669692380e-02 1.83878553878e-02 2.06126999880e-02 2.34923498457e-02 + 2.70818268649e-02 3.14154606035e-02 3.64535808156e-02 4.20165784801e-02 4.77311231410e-02 5.30133769166e-02 + 5.71527035674e-02 5.95715936141e-02 6.01752681104e-02 5.94868177545e-02 5.83777841365e-02 5.76200322747e-02 + 6.81077724909e-02 6.73541476702e-02 6.57918464265e-02 6.30764730892e-02 5.90154969276e-02 5.37510492057e-02 + 4.77311231410e-02 4.15120643887e-02 3.55725175924e-02 3.02323588099e-02 2.56499234494e-02 2.18557815330e-02 + 1.88049742175e-02 1.64272283654e-02 1.46550533623e-02 1.34318126710e-02 1.27148275869e-02 1.24785638223e-02 + 1.27148275869e-02 1.34318126710e-02 1.46550533623e-02 1.64272283654e-02 1.88049742175e-02 2.18557815330e-02 + 2.56499234494e-02 3.02323588099e-02 3.55725175924e-02 4.15120643887e-02 4.77311231410e-02 5.37510492057e-02 + 5.90154969276e-02 6.30764730892e-02 6.57918464265e-02 6.73541476702e-02 6.81077724909e-02 6.83266751007e-02 + 7.51264696898e-02 7.21810172465e-02 6.78442738531e-02 6.22821499923e-02 5.58153453540e-02 4.88987422193e-02 + 4.20165784801e-02 3.55725175924e-02 2.98349904445e-02 2.49333108373e-02 2.08820531014e-02 1.76229803621e-02 + 1.50702461704e-02 1.31397287366e-02 1.17590249893e-02 1.08706042529e-02 1.04356792319e-02 1.04356792319e-02 + 1.08706042529e-02 1.17590249893e-02 1.31397287366e-02 1.50702461704e-02 1.76229803621e-02 2.08820531014e-02 + 2.49333108373e-02 2.98349904445e-02 3.55725175924e-02 4.20165784801e-02 4.88987422193e-02 5.58153453540e-02 + 6.22821499923e-02 6.78442738531e-02 7.21810172465e-02 7.51264696898e-02 7.66122811094e-02 7.66122811094e-02 + 7.78881394404e-02 7.27796836797e-02 6.62522137956e-02 5.88318176265e-02 5.10737783335e-02 4.34838779539e-02 + 3.64535808156e-02 3.02323588099e-02 2.49333108373e-02 2.05587788214e-02 1.70389543521e-02 1.42737851127e-02 + 1.21629507848e-02 1.06181928008e-02 9.56702175361e-03 8.95658363692e-03 8.75631776595e-03 8.95658363692e-03 + 9.56702175361e-03 1.06181928008e-02 1.21629507848e-02 1.42737851127e-02 1.70389543521e-02 2.05587788214e-02 + 2.49333108373e-02 3.02323588099e-02 3.64535808156e-02 4.34838779539e-02 5.10737783335e-02 5.88318176265e-02 + 6.62522137956e-02 7.27796836797e-02 7.78881394404e-02 8.11458755837e-02 8.22656900591e-02 8.11458755837e-02 + 7.70723261920e-02 7.02831021338e-02 6.23688231248e-02 5.40097122002e-02 4.57968161948e-02 3.81729635435e-02 + 3.14154606035e-02 2.56499234494e-02 2.08820531014e-02 1.70389543521e-02 1.40112393540e-02 1.16845233837e-02 + 9.95507847617e-03 8.73551184506e-03 7.95863052826e-03 7.58058258839e-03 7.58058258839e-03 7.95863052826e-03 + 8.73551184506e-03 9.95507847617e-03 1.16845233837e-02 1.40112393540e-02 1.70389543521e-02 2.08820531014e-02 + 2.56499234494e-02 3.14154606035e-02 3.81729635435e-02 4.57968161948e-02 5.40097122002e-02 6.23688231248e-02 + 7.02831021338e-02 7.70723261920e-02 8.20645507484e-02 8.47143937707e-02 8.47143937707e-02 8.20645507484e-02 + 7.40032629540e-02 6.61022866145e-02 5.74762428735e-02 4.88190878681e-02 4.06654278454e-02 3.33624200108e-02 + 2.70818268649e-02 2.18557815330e-02 1.76229803621e-02 1.42737851127e-02 1.16845233837e-02 9.73748464183e-03 + 8.33057919998e-03 7.38252390656e-03 6.83583874198e-03 6.65719946009e-03 6.83583874198e-03 7.38252390656e-03 + 8.33057919998e-03 9.73748464183e-03 1.16845233837e-02 1.42737851127e-02 1.76229803621e-02 2.18557815330e-02 + 2.70818268649e-02 3.33624200108e-02 4.06654278454e-02 4.88190878681e-02 5.74762428735e-02 6.61022866145e-02 + 7.40032629540e-02 8.04073084192e-02 8.45957298814e-02 8.60542685404e-02 8.45957298814e-02 8.04073084192e-02 + 6.98920688762e-02 6.13334872428e-02 5.24477482650e-02 4.38725463784e-02 3.60511821341e-02 2.92302840650e-02 + 2.34923498457e-02 1.88049742175e-02 1.50702461704e-02 1.21629507848e-02 9.95507847617e-03 8.33057919998e-03 + 7.19410390186e-03 6.47483593539e-03 6.12657930585e-03 6.12657930585e-03 6.47483593539e-03 7.19410390186e-03 + 8.33057919998e-03 9.95507847617e-03 1.21629507848e-02 1.50702461704e-02 1.88049742175e-02 2.34923498457e-02 + 2.92302840650e-02 3.60511821341e-02 4.38725463784e-02 5.24477482650e-02 6.13334872428e-02 6.98920688762e-02 + 7.73458021392e-02 8.28911486673e-02 8.58561529560e-02 8.58561529560e-02 8.28911486673e-02 7.73458021392e-02 + 6.55352798807e-02 5.66331890923e-02 4.77625301985e-02 3.94725484932e-02 3.21049723875e-02 2.58139075627e-02 + 2.06126999880e-02 1.64272283654e-02 1.31397287366e-02 1.06181928008e-02 8.73551184506e-03 7.38252390656e-03 + 6.47483593539e-03 5.95356833121e-03 5.78371930190e-03 5.95356833121e-03 6.47483593539e-03 7.38252390656e-03 + 8.73551184506e-03 1.06181928008e-02 1.31397287366e-02 1.64272283654e-02 2.06126999880e-02 2.58139075627e-02 + 3.21049723875e-02 3.94725484932e-02 4.77625301985e-02 5.66331890923e-02 6.55352798807e-02 7.37387049341e-02 + 8.04193974336e-02 8.48028174918e-02 8.63317298438e-02 8.48028174918e-02 8.04193974336e-02 7.37387049341e-02 + 6.13379141192e-02 5.23143637463e-02 4.36277000850e-02 3.57259716101e-02 2.88533907006e-02 2.30866420056e-02 + 1.83878553878e-02 1.46550533623e-02 1.17590249893e-02 9.56702175361e-03 7.95863052826e-03 6.83583874198e-03 + 6.12657930585e-03 5.78371930190e-03 5.78371930190e-03 6.12657930585e-03 6.83583874198e-03 7.95863052826e-03 + 9.56702175361e-03 1.17590249893e-02 1.46550533623e-02 1.83878553878e-02 2.30866420056e-02 2.88533907006e-02 + 3.57259716101e-02 4.36277000850e-02 5.23143637463e-02 6.13379141192e-02 7.00474085615e-02 7.76449689484e-02 + 8.33038946145e-02 8.63317298438e-02 8.63317298438e-02 8.33038946145e-02 7.76449689484e-02 7.00474085615e-02 + 5.74449785733e-02 4.84855850881e-02 4.01041807768e-02 3.26483588385e-02 2.62778950395e-02 2.10090352784e-02 + 1.67669692380e-02 1.34318126710e-02 1.08706042529e-02 8.95658363692e-03 7.58058258839e-03 6.65719946009e-03 + 6.12657930585e-03 5.95356833121e-03 6.12657930585e-03 6.65719946009e-03 7.58058258839e-03 8.95658363692e-03 + 1.08706042529e-02 1.34318126710e-02 1.67669692380e-02 2.10090352784e-02 2.62778950395e-02 3.26483588385e-02 + 4.01041807768e-02 4.84855850881e-02 5.74449785733e-02 6.64284767715e-02 7.47020608958e-02 8.14375530661e-02 + 8.58561529560e-02 8.73972293003e-02 8.58561529560e-02 8.14375530661e-02 7.47020608958e-02 6.64284767715e-02 + 5.38883507401e-02 4.51788789706e-02 3.72078996967e-02 3.02357338101e-02 2.43576039836e-02 1.95479913088e-02 + 1.57094271493e-02 1.27148275869e-02 1.04356792319e-02 8.75631776595e-03 7.58058258839e-03 6.83583874198e-03 + 6.47483593539e-03 6.47483593539e-03 6.83583874198e-03 7.58058258839e-03 8.75631776595e-03 1.04356792319e-02 + 1.27148275869e-02 1.57094271493e-02 1.95479913088e-02 2.43576039836e-02 3.02357338101e-02 3.72078996967e-02 + 4.51788789706e-02 5.38883507401e-02 6.28828729732e-02 7.15201290633e-02 7.90236437036e-02 8.45957298814e-02 + 8.75716967614e-02 8.75716967614e-02 8.45957298814e-02 7.90236437036e-02 7.15201290633e-02 6.28828729732e-02 + 5.07121410456e-02 4.24386109393e-02 3.49654910486e-02 2.84935612207e-02 2.30804654510e-02 1.86800926235e-02 + 1.51874137660e-02 1.24785638223e-02 1.04356792319e-02 8.95658363692e-03 7.95863052826e-03 7.38252390656e-03 + 7.19410390186e-03 7.38252390656e-03 7.95863052826e-03 8.95658363692e-03 1.04356792319e-02 1.24785638223e-02 + 1.51874137660e-02 1.86800926235e-02 2.30804654510e-02 2.84935612207e-02 3.49654910486e-02 4.24386109393e-02 + 5.07121410456e-02 5.94150808572e-02 6.80033074139e-02 7.57970302390e-02 8.20645507484e-02 8.61408122915e-02 + 8.75562567048e-02 8.61408122915e-02 8.20645507484e-02 7.57970302390e-02 6.80033074139e-02 5.94150808572e-02 + 4.80406383964e-02 4.03527020822e-02 3.34242157073e-02 2.74372089612e-02 2.24420850452e-02 1.83921353899e-02 + 1.51874137660e-02 1.27148275869e-02 1.08706042529e-02 9.56702175361e-03 8.73551184506e-03 8.33057919998e-03 + 8.33057919998e-03 8.73551184506e-03 9.56702175361e-03 1.08706042529e-02 1.27148275869e-02 1.51874137660e-02 + 1.83921353899e-02 2.24420850452e-02 2.74372089612e-02 3.34242157073e-02 4.03527020822e-02 4.80406383964e-02 + 5.61547897924e-02 6.42180018992e-02 7.16581855164e-02 7.78881394404e-02 8.23828782457e-02 8.47410728024e-02 + 8.47410728024e-02 8.23828782457e-02 7.78881394404e-02 7.16581855164e-02 6.42180018992e-02 5.61547897924e-02 + 4.60731359718e-02 3.90350130516e-02 3.26363277502e-02 2.70827915169e-02 2.24420850452e-02 1.86800926235e-02 + 1.57094271493e-02 1.34318126710e-02 1.17590249893e-02 1.06181928008e-02 9.95507847617e-03 9.73748464183e-03 + 9.95507847617e-03 1.06181928008e-02 1.17590249893e-02 1.34318126710e-02 1.57094271493e-02 1.86800926235e-02 + 2.24420850452e-02 2.70827915169e-02 3.26363277502e-02 3.90350130516e-02 4.60731359718e-02 5.33923081840e-02 + 6.05090723285e-02 6.69101294891e-02 7.21810172465e-02 7.60705845667e-02 7.84511058955e-02 7.92532152557e-02 + 7.84511058955e-02 7.60705845667e-02 7.21810172465e-02 6.69101294891e-02 6.05090723285e-02 5.33923081840e-02 + 4.50208900473e-02 3.85829474965e-02 3.26363277502e-02 2.74372089612e-02 2.30804654510e-02 1.95479913088e-02 + 1.67669692380e-02 1.46550533623e-02 1.31397287366e-02 1.21629507848e-02 1.16845233837e-02 1.16845233837e-02 + 1.21629507848e-02 1.31397287366e-02 1.46550533623e-02 1.67669692380e-02 1.95479913088e-02 2.30804654510e-02 + 2.74372089612e-02 3.26363277502e-02 3.85829474965e-02 4.50208900473e-02 5.15101646150e-02 5.74676014035e-02 + 6.23288110708e-02 6.57918464265e-02 6.79419572879e-02 6.91119067669e-02 6.96179820017e-02 6.96179820017e-02 + 6.91119067669e-02 6.79419572879e-02 6.57918464265e-02 6.23288110708e-02 5.74676014035e-02 5.15101646150e-02 + 4.50208900473e-02 3.90350130516e-02 3.34242157073e-02 2.84935612207e-02 2.43576039836e-02 2.10090352784e-02 + 1.83878553878e-02 1.64272283654e-02 1.50702461704e-02 1.42737851127e-02 1.40112393540e-02 1.42737851127e-02 + 1.50702461704e-02 1.64272283654e-02 1.83878553878e-02 2.10090352784e-02 2.43576039836e-02 2.84935612207e-02 + 3.34242157073e-02 3.90350130516e-02 4.50208900473e-02 5.08390344517e-02 5.57363453523e-02 5.89627863020e-02 + 6.01752681104e-02 5.97323039443e-02 5.85232784436e-02 5.74463352203e-02 5.70355201353e-02 5.74463352203e-02 + 5.85232784436e-02 5.97323039443e-02 6.01752681104e-02 5.89627863020e-02 5.57363453523e-02 5.08390344517e-02 + 4.60731359718e-02 4.03527020822e-02 3.49654910486e-02 3.02357338101e-02 2.62778950395e-02 2.30866420056e-02 + 2.06126999880e-02 1.88049742175e-02 1.76229803621e-02 1.70389543521e-02 1.70389543521e-02 1.76229803621e-02 + 1.88049742175e-02 2.06126999880e-02 2.30866420056e-02 2.62778950395e-02 3.02357338101e-02 3.49654910486e-02 + 4.03527020822e-02 4.60731359718e-02 5.15101646150e-02 5.57363453523e-02 5.77208882781e-02 5.68740665481e-02 + 5.36149267734e-02 4.93308963719e-02 4.56222411881e-02 4.35588929466e-02 4.35588929466e-02 4.56222411881e-02 + 4.93308963719e-02 5.36149267734e-02 5.68740665481e-02 5.77208882781e-02 5.57363453523e-02 5.15101646150e-02 + 4.80406383964e-02 4.24386109393e-02 3.72078996967e-02 3.26483588385e-02 2.88533907006e-02 2.58139075627e-02 + 2.34923498457e-02 2.18557815330e-02 2.08820531014e-02 2.05587788214e-02 2.08820531014e-02 2.18557815330e-02 + 2.34923498457e-02 2.58139075627e-02 2.88533907006e-02 3.26483588385e-02 3.72078996967e-02 4.24386109393e-02 + 4.80406383964e-02 5.33923081840e-02 5.74676014035e-02 5.89627863020e-02 5.68740665481e-02 5.13523903781e-02 + 4.40123223759e-02 3.71417160544e-02 3.25101129901e-02 3.09103717113e-02 3.25101129901e-02 3.71417160544e-02 + 4.40123223759e-02 5.13523903781e-02 5.68740665481e-02 5.89627863020e-02 5.74676014035e-02 5.33923081840e-02 + 5.07121410456e-02 4.51788789706e-02 4.01041807768e-02 3.57259716101e-02 3.21049723875e-02 2.92302840650e-02 + 2.70818268649e-02 2.56499234494e-02 2.49333108373e-02 2.49333108373e-02 2.56499234494e-02 2.70818268649e-02 + 2.92302840650e-02 3.21049723875e-02 3.57259716101e-02 4.01041807768e-02 4.51788789706e-02 5.07121410456e-02 + 5.61547897924e-02 6.05090723285e-02 6.23288110708e-02 6.01752681104e-02 5.36149267734e-02 4.40123223759e-02 + 3.40771392673e-02 2.63856510811e-02 2.23413746600e-02 2.23413746600e-02 2.63856510811e-02 3.40771392673e-02 + 4.40123223759e-02 5.36149267734e-02 6.01752681104e-02 6.23288110708e-02 6.05090723285e-02 5.61547897924e-02 + 5.38883507401e-02 4.84855850881e-02 4.36277000850e-02 3.94725484932e-02 3.60511821341e-02 3.33624200108e-02 + 3.14154606035e-02 3.02323588099e-02 2.98349904445e-02 3.02323588099e-02 3.14154606035e-02 3.33624200108e-02 + 3.60511821341e-02 3.94725484932e-02 4.36277000850e-02 4.84855850881e-02 5.38883507401e-02 5.94150808572e-02 + 6.42180018992e-02 6.69101294891e-02 6.57918464265e-02 5.97323039443e-02 4.93308963719e-02 3.71417160544e-02 + 2.63856510811e-02 1.93490286376e-02 1.69491736420e-02 1.93490286376e-02 2.63856510811e-02 3.71417160544e-02 + 4.93308963719e-02 5.97323039443e-02 6.57918464265e-02 6.69101294891e-02 6.42180018992e-02 5.94150808572e-02 + 5.74449785733e-02 5.23143637463e-02 4.77625301985e-02 4.38725463784e-02 4.06654278454e-02 3.81729635435e-02 + 3.64535808156e-02 3.55725175924e-02 3.55725175924e-02 3.64535808156e-02 3.81729635435e-02 4.06654278454e-02 + 4.38725463784e-02 4.77625301985e-02 5.23143637463e-02 5.74449785733e-02 6.28828729732e-02 6.80033074139e-02 + 7.16581855164e-02 7.21810172465e-02 6.79419572879e-02 5.85232784436e-02 4.56222411881e-02 3.25101129901e-02 + 2.23413746600e-02 1.69491736420e-02 1.69491736420e-02 2.23413746600e-02 3.25101129901e-02 4.56222411881e-02 + 5.85232784436e-02 6.79419572879e-02 7.21810172465e-02 7.16581855164e-02 6.80033074139e-02 6.28828729732e-02 + 6.13379141192e-02 5.66331890923e-02 5.24477482650e-02 4.88190878681e-02 4.57968161948e-02 4.34838779539e-02 + 4.20165784801e-02 4.15120643887e-02 4.20165784801e-02 4.34838779539e-02 4.57968161948e-02 4.88190878681e-02 + 5.24477482650e-02 5.66331890923e-02 6.13379141192e-02 6.64284767715e-02 7.15201290633e-02 7.57970302390e-02 + 7.78881394404e-02 7.60705845667e-02 6.91119067669e-02 5.74463352203e-02 4.35588929466e-02 3.09103717113e-02 + 2.23413746600e-02 1.93490286376e-02 2.23413746600e-02 3.09103717113e-02 4.35588929466e-02 5.74463352203e-02 + 6.91119067669e-02 7.60705845667e-02 7.78881394404e-02 7.57970302390e-02 7.15201290633e-02 6.64284767715e-02 + 6.55352798807e-02 6.13334872428e-02 5.74762428735e-02 5.40097122002e-02 5.10737783335e-02 4.88987422193e-02 + 4.77311231410e-02 4.77311231410e-02 4.88987422193e-02 5.10737783335e-02 5.40097122002e-02 5.74762428735e-02 + 6.13334872428e-02 6.55352798807e-02 7.00474085615e-02 7.47020608958e-02 7.90236437036e-02 8.20645507484e-02 + 8.23828782457e-02 7.84511058955e-02 6.96179820017e-02 5.70355201353e-02 4.35588929466e-02 3.25101129901e-02 + 2.63856510811e-02 2.63856510811e-02 3.25101129901e-02 4.35588929466e-02 5.70355201353e-02 6.96179820017e-02 + 7.84511058955e-02 8.23828782457e-02 8.20645507484e-02 7.90236437036e-02 7.47020608958e-02 7.00474085615e-02 + 6.98920688762e-02 6.61022866145e-02 6.23688231248e-02 5.88318176265e-02 5.58153453540e-02 5.37510492057e-02 + 5.30133769166e-02 5.37510492057e-02 5.58153453540e-02 5.88318176265e-02 6.23688231248e-02 6.61022866145e-02 + 6.98920688762e-02 7.37387049341e-02 7.76449689484e-02 8.14375530661e-02 8.45957298814e-02 8.61408122915e-02 + 8.47410728024e-02 7.92532152557e-02 6.96179820017e-02 5.74463352203e-02 4.56222411881e-02 3.71417160544e-02 + 3.40771392673e-02 3.71417160544e-02 4.56222411881e-02 5.74463352203e-02 6.96179820017e-02 7.92532152557e-02 + 8.47410728024e-02 8.61408122915e-02 8.45957298814e-02 8.14375530661e-02 7.76449689484e-02 7.37387049341e-02 + 7.40032629540e-02 7.02831021338e-02 6.62522137956e-02 6.22821499923e-02 5.90154969276e-02 5.71527035674e-02 + 5.71527035674e-02 5.90154969276e-02 6.22821499923e-02 6.62522137956e-02 7.02831021338e-02 7.40032629540e-02 + 7.73458021392e-02 8.04193974336e-02 8.33038946145e-02 8.58561529560e-02 8.75716967614e-02 8.75562567048e-02 + 8.47410728024e-02 7.84511058955e-02 6.91119067669e-02 5.85232784436e-02 4.93308963719e-02 4.40123223759e-02 + 4.40123223759e-02 4.93308963719e-02 5.85232784436e-02 6.91119067669e-02 7.84511058955e-02 8.47410728024e-02 + 8.75562567048e-02 8.75716967614e-02 8.58561529560e-02 8.33038946145e-02 8.04193974336e-02 7.73458021392e-02 + 7.70723261920e-02 7.27796836797e-02 6.78442738531e-02 6.30764730892e-02 5.95715936141e-02 5.82782465337e-02 + 5.95715936141e-02 6.30764730892e-02 6.78442738531e-02 7.27796836797e-02 7.70723261920e-02 8.04073084192e-02 + 8.28911486673e-02 8.48028174918e-02 8.63317298438e-02 8.73972293003e-02 8.75716967614e-02 8.61408122915e-02 + 8.23828782457e-02 7.60705845667e-02 6.79419572879e-02 5.97323039443e-02 5.36149267734e-02 5.13523903781e-02 + 5.36149267734e-02 5.97323039443e-02 6.79419572879e-02 7.60705845667e-02 8.23828782457e-02 8.61408122915e-02 + 8.75716967614e-02 8.73972293003e-02 8.63317298438e-02 8.48028174918e-02 8.28911486673e-02 8.04073084192e-02 + 7.78881394404e-02 7.21810172465e-02 6.57918464265e-02 6.01752681104e-02 5.68740665481e-02 5.68740665481e-02 + 6.01752681104e-02 6.57918464265e-02 7.21810172465e-02 7.78881394404e-02 8.20645507484e-02 8.45957298814e-02 + 8.58561529560e-02 8.63317298438e-02 8.63317298438e-02 8.58561529560e-02 8.45957298814e-02 8.20645507484e-02 + 7.78881394404e-02 7.21810172465e-02 6.57918464265e-02 6.01752681104e-02 5.68740665481e-02 5.68740665481e-02 + 6.01752681104e-02 6.57918464265e-02 7.21810172465e-02 7.78881394404e-02 8.20645507484e-02 8.45957298814e-02 + 8.58561529560e-02 8.63317298438e-02 8.63317298438e-02 8.58561529560e-02 8.45957298814e-02 8.20645507484e-02 + 7.51264696898e-02 6.73541476702e-02 5.94868177545e-02 5.36143814352e-02 5.14403532045e-02 5.36143814352e-02 + 5.94868177545e-02 6.73541476702e-02 7.51264696898e-02 8.11458755837e-02 8.47143937707e-02 8.60542685404e-02 + 8.58561529560e-02 8.48028174918e-02 8.33038946145e-02 8.14375530661e-02 7.90236437036e-02 7.57970302390e-02 + 7.16581855164e-02 6.69101294891e-02 6.23288110708e-02 5.89627863020e-02 5.77208882781e-02 5.89627863020e-02 + 6.23288110708e-02 6.69101294891e-02 7.16581855164e-02 7.57970302390e-02 7.90236437036e-02 8.14375530661e-02 + 8.33038946145e-02 8.48028174918e-02 8.58561529560e-02 8.60542685404e-02 8.47143937707e-02 8.11458755837e-02 + 6.81077724909e-02 5.83777841365e-02 4.98718618187e-02 4.49279278957e-02 4.49279278957e-02 4.98718618187e-02 + 5.83777841365e-02 6.81077724909e-02 7.66122811094e-02 8.22656900591e-02 8.47143937707e-02 8.45957298814e-02 + 8.28911486673e-02 8.04193974336e-02 7.76449689484e-02 7.47020608958e-02 7.15201290633e-02 6.80033074139e-02 + 6.42180018992e-02 6.05090723285e-02 5.74676014035e-02 5.57363453523e-02 5.57363453523e-02 5.74676014035e-02 + 6.05090723285e-02 6.42180018992e-02 6.80033074139e-02 7.15201290633e-02 7.47020608958e-02 7.76449689484e-02 + 8.04193974336e-02 8.28911486673e-02 8.45957298814e-02 8.47143937707e-02 8.22656900591e-02 7.66122811094e-02 + 5.76200322747e-02 4.70389926376e-02 3.93541671489e-02 3.65582592974e-02 3.93541671489e-02 4.70389926376e-02 + 5.76200322747e-02 6.83266751007e-02 7.66122811094e-02 8.11458755837e-02 8.20645507484e-02 8.04073084192e-02 + 7.73458021392e-02 7.37387049341e-02 7.00474085615e-02 6.64284767715e-02 6.28828729732e-02 5.94150808572e-02 + 5.61547897924e-02 5.33923081840e-02 5.15101646150e-02 5.08390344517e-02 5.15101646150e-02 5.33923081840e-02 + 5.61547897924e-02 5.94150808572e-02 6.28828729732e-02 6.64284767715e-02 7.00474085615e-02 7.37387049341e-02 + 7.73458021392e-02 8.04073084192e-02 8.20645507484e-02 8.11458755837e-02 7.66122811094e-02 6.83266751007e-02 + 3.09103717113e-02 2.23413746600e-02 1.93490286376e-02 2.23413746600e-02 3.09103717113e-02 4.35588929466e-02 + 5.74463352203e-02 6.91119067669e-02 7.60705845667e-02 7.78881394404e-02 7.57970302390e-02 7.15201290633e-02 + 6.64284767715e-02 6.13379141192e-02 5.66331890923e-02 5.24477482650e-02 4.88190878681e-02 4.57968161948e-02 + 4.34838779539e-02 4.20165784801e-02 4.15120643887e-02 4.20165784801e-02 4.34838779539e-02 4.57968161948e-02 + 4.88190878681e-02 5.24477482650e-02 5.66331890923e-02 6.13379141192e-02 6.64284767715e-02 7.15201290633e-02 + 7.57970302390e-02 7.78881394404e-02 7.60705845667e-02 6.91119067669e-02 5.74463352203e-02 4.35588929466e-02 + 2.23413746600e-02 1.69491736420e-02 1.69491736420e-02 2.23413746600e-02 3.25101129901e-02 4.56222411881e-02 + 5.85232784436e-02 6.79419572879e-02 7.21810172465e-02 7.16581855164e-02 6.80033074139e-02 6.28828729732e-02 + 5.74449785733e-02 5.23143637463e-02 4.77625301985e-02 4.38725463784e-02 4.06654278454e-02 3.81729635435e-02 + 3.64535808156e-02 3.55725175924e-02 3.55725175924e-02 3.64535808156e-02 3.81729635435e-02 4.06654278454e-02 + 4.38725463784e-02 4.77625301985e-02 5.23143637463e-02 5.74449785733e-02 6.28828729732e-02 6.80033074139e-02 + 7.16581855164e-02 7.21810172465e-02 6.79419572879e-02 5.85232784436e-02 4.56222411881e-02 3.25101129901e-02 + 1.93490286376e-02 1.69491736420e-02 1.93490286376e-02 2.63856510811e-02 3.71417160544e-02 4.93308963719e-02 + 5.97323039443e-02 6.57918464265e-02 6.69101294891e-02 6.42180018992e-02 5.94150808572e-02 5.38883507401e-02 + 4.84855850881e-02 4.36277000850e-02 3.94725484932e-02 3.60511821341e-02 3.33624200108e-02 3.14154606035e-02 + 3.02323588099e-02 2.98349904445e-02 3.02323588099e-02 3.14154606035e-02 3.33624200108e-02 3.60511821341e-02 + 3.94725484932e-02 4.36277000850e-02 4.84855850881e-02 5.38883507401e-02 5.94150808572e-02 6.42180018992e-02 + 6.69101294891e-02 6.57918464265e-02 5.97323039443e-02 4.93308963719e-02 3.71417160544e-02 2.63856510811e-02 + 2.23413746600e-02 2.23413746600e-02 2.63856510811e-02 3.40771392673e-02 4.40123223759e-02 5.36149267734e-02 + 6.01752681104e-02 6.23288110708e-02 6.05090723285e-02 5.61547897924e-02 5.07121410456e-02 4.51788789706e-02 + 4.01041807768e-02 3.57259716101e-02 3.21049723875e-02 2.92302840650e-02 2.70818268649e-02 2.56499234494e-02 + 2.49333108373e-02 2.49333108373e-02 2.56499234494e-02 2.70818268649e-02 2.92302840650e-02 3.21049723875e-02 + 3.57259716101e-02 4.01041807768e-02 4.51788789706e-02 5.07121410456e-02 5.61547897924e-02 6.05090723285e-02 + 6.23288110708e-02 6.01752681104e-02 5.36149267734e-02 4.40123223759e-02 3.40771392673e-02 2.63856510811e-02 + 3.09103717113e-02 3.25101129901e-02 3.71417160544e-02 4.40123223759e-02 5.13523903781e-02 5.68740665481e-02 + 5.89627863020e-02 5.74676014035e-02 5.33923081840e-02 4.80406383964e-02 4.24386109393e-02 3.72078996967e-02 + 3.26483588385e-02 2.88533907006e-02 2.58139075627e-02 2.34923498457e-02 2.18557815330e-02 2.08820531014e-02 + 2.05587788214e-02 2.08820531014e-02 2.18557815330e-02 2.34923498457e-02 2.58139075627e-02 2.88533907006e-02 + 3.26483588385e-02 3.72078996967e-02 4.24386109393e-02 4.80406383964e-02 5.33923081840e-02 5.74676014035e-02 + 5.89627863020e-02 5.68740665481e-02 5.13523903781e-02 4.40123223759e-02 3.71417160544e-02 3.25101129901e-02 + 4.35588929466e-02 4.56222411881e-02 4.93308963719e-02 5.36149267734e-02 5.68740665481e-02 5.77208882781e-02 + 5.57363453523e-02 5.15101646150e-02 4.60731359718e-02 4.03527020822e-02 3.49654910486e-02 3.02357338101e-02 + 2.62778950395e-02 2.30866420056e-02 2.06126999880e-02 1.88049742175e-02 1.76229803621e-02 1.70389543521e-02 + 1.70389543521e-02 1.76229803621e-02 1.88049742175e-02 2.06126999880e-02 2.30866420056e-02 2.62778950395e-02 + 3.02357338101e-02 3.49654910486e-02 4.03527020822e-02 4.60731359718e-02 5.15101646150e-02 5.57363453523e-02 + 5.77208882781e-02 5.68740665481e-02 5.36149267734e-02 4.93308963719e-02 4.56222411881e-02 4.35588929466e-02 + 5.74463352203e-02 5.85232784436e-02 5.97323039443e-02 6.01752681104e-02 5.89627863020e-02 5.57363453523e-02 + 5.08390344517e-02 4.50208900473e-02 3.90350130516e-02 3.34242157073e-02 2.84935612207e-02 2.43576039836e-02 + 2.10090352784e-02 1.83878553878e-02 1.64272283654e-02 1.50702461704e-02 1.42737851127e-02 1.40112393540e-02 + 1.42737851127e-02 1.50702461704e-02 1.64272283654e-02 1.83878553878e-02 2.10090352784e-02 2.43576039836e-02 + 2.84935612207e-02 3.34242157073e-02 3.90350130516e-02 4.50208900473e-02 5.08390344517e-02 5.57363453523e-02 + 5.89627863020e-02 6.01752681104e-02 5.97323039443e-02 5.85232784436e-02 5.74463352203e-02 5.70355201353e-02 + 6.91119067669e-02 6.79419572879e-02 6.57918464265e-02 6.23288110708e-02 5.74676014035e-02 5.15101646150e-02 + 4.50208900473e-02 3.85829474965e-02 3.26363277502e-02 2.74372089612e-02 2.30804654510e-02 1.95479913088e-02 + 1.67669692380e-02 1.46550533623e-02 1.31397287366e-02 1.21629507848e-02 1.16845233837e-02 1.16845233837e-02 + 1.21629507848e-02 1.31397287366e-02 1.46550533623e-02 1.67669692380e-02 1.95479913088e-02 2.30804654510e-02 + 2.74372089612e-02 3.26363277502e-02 3.85829474965e-02 4.50208900473e-02 5.15101646150e-02 5.74676014035e-02 + 6.23288110708e-02 6.57918464265e-02 6.79419572879e-02 6.91119067669e-02 6.96179820017e-02 6.96179820017e-02 + 7.60705845667e-02 7.21810172465e-02 6.69101294891e-02 6.05090723285e-02 5.33923081840e-02 4.60731359718e-02 + 3.90350130516e-02 3.26363277502e-02 2.70827915169e-02 2.24420850452e-02 1.86800926235e-02 1.57094271493e-02 + 1.34318126710e-02 1.17590249893e-02 1.06181928008e-02 9.95507847617e-03 9.73748464183e-03 9.95507847617e-03 + 1.06181928008e-02 1.17590249893e-02 1.34318126710e-02 1.57094271493e-02 1.86800926235e-02 2.24420850452e-02 + 2.70827915169e-02 3.26363277502e-02 3.90350130516e-02 4.60731359718e-02 5.33923081840e-02 6.05090723285e-02 + 6.69101294891e-02 7.21810172465e-02 7.60705845667e-02 7.84511058955e-02 7.92532152557e-02 7.84511058955e-02 + 7.78881394404e-02 7.16581855164e-02 6.42180018992e-02 5.61547897924e-02 4.80406383964e-02 4.03527020822e-02 + 3.34242157073e-02 2.74372089612e-02 2.24420850452e-02 1.83921353899e-02 1.51874137660e-02 1.27148275869e-02 + 1.08706042529e-02 9.56702175361e-03 8.73551184506e-03 8.33057919998e-03 8.33057919998e-03 8.73551184506e-03 + 9.56702175361e-03 1.08706042529e-02 1.27148275869e-02 1.51874137660e-02 1.83921353899e-02 2.24420850452e-02 + 2.74372089612e-02 3.34242157073e-02 4.03527020822e-02 4.80406383964e-02 5.61547897924e-02 6.42180018992e-02 + 7.16581855164e-02 7.78881394404e-02 8.23828782457e-02 8.47410728024e-02 8.47410728024e-02 8.23828782457e-02 + 7.57970302390e-02 6.80033074139e-02 5.94150808572e-02 5.07121410456e-02 4.24386109393e-02 3.49654910486e-02 + 2.84935612207e-02 2.30804654510e-02 1.86800926235e-02 1.51874137660e-02 1.24785638223e-02 1.04356792319e-02 + 8.95658363692e-03 7.95863052826e-03 7.38252390656e-03 7.19410390186e-03 7.38252390656e-03 7.95863052826e-03 + 8.95658363692e-03 1.04356792319e-02 1.24785638223e-02 1.51874137660e-02 1.86800926235e-02 2.30804654510e-02 + 2.84935612207e-02 3.49654910486e-02 4.24386109393e-02 5.07121410456e-02 5.94150808572e-02 6.80033074139e-02 + 7.57970302390e-02 8.20645507484e-02 8.61408122915e-02 8.75562567048e-02 8.61408122915e-02 8.20645507484e-02 + 7.15201290633e-02 6.28828729732e-02 5.38883507401e-02 4.51788789706e-02 3.72078996967e-02 3.02357338101e-02 + 2.43576039836e-02 1.95479913088e-02 1.57094271493e-02 1.27148275869e-02 1.04356792319e-02 8.75631776595e-03 + 7.58058258839e-03 6.83583874198e-03 6.47483593539e-03 6.47483593539e-03 6.83583874198e-03 7.58058258839e-03 + 8.75631776595e-03 1.04356792319e-02 1.27148275869e-02 1.57094271493e-02 1.95479913088e-02 2.43576039836e-02 + 3.02357338101e-02 3.72078996967e-02 4.51788789706e-02 5.38883507401e-02 6.28828729732e-02 7.15201290633e-02 + 7.90236437036e-02 8.45957298814e-02 8.75716967614e-02 8.75716967614e-02 8.45957298814e-02 7.90236437036e-02 + 6.64284767715e-02 5.74449785733e-02 4.84855850881e-02 4.01041807768e-02 3.26483588385e-02 2.62778950395e-02 + 2.10090352784e-02 1.67669692380e-02 1.34318126710e-02 1.08706042529e-02 8.95658363692e-03 7.58058258839e-03 + 6.65719946009e-03 6.12657930585e-03 5.95356833121e-03 6.12657930585e-03 6.65719946009e-03 7.58058258839e-03 + 8.95658363692e-03 1.08706042529e-02 1.34318126710e-02 1.67669692380e-02 2.10090352784e-02 2.62778950395e-02 + 3.26483588385e-02 4.01041807768e-02 4.84855850881e-02 5.74449785733e-02 6.64284767715e-02 7.47020608958e-02 + 8.14375530661e-02 8.58561529560e-02 8.73972293003e-02 8.58561529560e-02 8.14375530661e-02 7.47020608958e-02 + 6.13379141192e-02 5.23143637463e-02 4.36277000850e-02 3.57259716101e-02 2.88533907006e-02 2.30866420056e-02 + 1.83878553878e-02 1.46550533623e-02 1.17590249893e-02 9.56702175361e-03 7.95863052827e-03 6.83583874198e-03 + 6.12657930585e-03 5.78371930190e-03 5.78371930190e-03 6.12657930585e-03 6.83583874198e-03 7.95863052826e-03 + 9.56702175361e-03 1.17590249893e-02 1.46550533623e-02 1.83878553878e-02 2.30866420056e-02 2.88533907006e-02 + 3.57259716101e-02 4.36277000850e-02 5.23143637463e-02 6.13379141192e-02 7.00474085615e-02 7.76449689484e-02 + 8.33038946145e-02 8.63317298438e-02 8.63317298438e-02 8.33038946145e-02 7.76449689484e-02 7.00474085615e-02 + 5.66331890923e-02 4.77625301985e-02 3.94725484932e-02 3.21049723875e-02 2.58139075627e-02 2.06126999880e-02 + 1.64272283654e-02 1.31397287366e-02 1.06181928008e-02 8.73551184506e-03 7.38252390656e-03 6.47483593539e-03 + 5.95356833121e-03 5.78371930190e-03 5.95356833121e-03 6.47483593539e-03 7.38252390656e-03 8.73551184506e-03 + 1.06181928008e-02 1.31397287366e-02 1.64272283654e-02 2.06126999880e-02 2.58139075627e-02 3.21049723875e-02 + 3.94725484932e-02 4.77625301985e-02 5.66331890923e-02 6.55352798807e-02 7.37387049341e-02 8.04193974336e-02 + 8.48028174918e-02 8.63317298438e-02 8.48028174918e-02 8.04193974336e-02 7.37387049341e-02 6.55352798807e-02 + 5.24477482650e-02 4.38725463784e-02 3.60511821341e-02 2.92302840650e-02 2.34923498457e-02 1.88049742175e-02 + 1.50702461704e-02 1.21629507848e-02 9.95507847617e-03 8.33057919998e-03 7.19410390186e-03 6.47483593539e-03 + 6.12657930585e-03 6.12657930585e-03 6.47483593539e-03 7.19410390186e-03 8.33057919998e-03 9.95507847617e-03 + 1.21629507848e-02 1.50702461704e-02 1.88049742175e-02 2.34923498457e-02 2.92302840650e-02 3.60511821341e-02 + 4.38725463784e-02 5.24477482650e-02 6.13334872428e-02 6.98920688762e-02 7.73458021392e-02 8.28911486673e-02 + 8.58561529560e-02 8.58561529560e-02 8.28911486673e-02 7.73458021392e-02 6.98920688762e-02 6.13334872428e-02 + 4.88190878681e-02 4.06654278454e-02 3.33624200108e-02 2.70818268649e-02 2.18557815330e-02 1.76229803621e-02 + 1.42737851127e-02 1.16845233837e-02 9.73748464183e-03 8.33057919998e-03 7.38252390656e-03 6.83583874198e-03 + 6.65719946009e-03 6.83583874198e-03 7.38252390656e-03 8.33057919998e-03 9.73748464183e-03 1.16845233837e-02 + 1.42737851127e-02 1.76229803621e-02 2.18557815330e-02 2.70818268649e-02 3.33624200108e-02 4.06654278454e-02 + 4.88190878681e-02 5.74762428735e-02 6.61022866145e-02 7.40032629540e-02 8.04073084192e-02 8.45957298814e-02 + 8.60542685404e-02 8.45957298814e-02 8.04073084192e-02 7.40032629540e-02 6.61022866145e-02 5.74762428735e-02 + 4.57968161948e-02 3.81729635435e-02 3.14154606035e-02 2.56499234494e-02 2.08820531014e-02 1.70389543521e-02 + 1.40112393540e-02 1.16845233837e-02 9.95507847617e-03 8.73551184506e-03 7.95863052826e-03 7.58058258839e-03 + 7.58058258839e-03 7.95863052826e-03 8.73551184506e-03 9.95507847617e-03 1.16845233837e-02 1.40112393540e-02 + 1.70389543521e-02 2.08820531014e-02 2.56499234494e-02 3.14154606035e-02 3.81729635435e-02 4.57968161948e-02 + 5.40097122002e-02 6.23688231248e-02 7.02831021338e-02 7.70723261920e-02 8.20645507484e-02 8.47143937707e-02 + 8.47143937707e-02 8.20645507484e-02 7.70723261920e-02 7.02831021338e-02 6.23688231248e-02 5.40097122002e-02 + 4.34838779539e-02 3.64535808156e-02 3.02323588099e-02 2.49333108373e-02 2.05587788214e-02 1.70389543521e-02 + 1.42737851127e-02 1.21629507848e-02 1.06181928008e-02 9.56702175361e-03 8.95658363692e-03 8.75631776595e-03 + 8.95658363692e-03 9.56702175361e-03 1.06181928008e-02 1.21629507848e-02 1.42737851127e-02 1.70389543521e-02 + 2.05587788214e-02 2.49333108373e-02 3.02323588099e-02 3.64535808156e-02 4.34838779539e-02 5.10737783335e-02 + 5.88318176265e-02 6.62522137956e-02 7.27796836797e-02 7.78881394404e-02 8.11458755837e-02 8.22656900591e-02 + 8.11458755837e-02 7.78881394404e-02 7.27796836797e-02 6.62522137956e-02 5.88318176265e-02 5.10737783335e-02 + 4.20165784801e-02 3.55725175924e-02 2.98349904445e-02 2.49333108373e-02 2.08820531014e-02 1.76229803621e-02 + 1.50702461704e-02 1.31397287366e-02 1.17590249893e-02 1.08706042529e-02 1.04356792319e-02 1.04356792319e-02 + 1.08706042529e-02 1.17590249893e-02 1.31397287366e-02 1.50702461704e-02 1.76229803621e-02 2.08820531014e-02 + 2.49333108373e-02 2.98349904445e-02 3.55725175924e-02 4.20165784801e-02 4.88987422193e-02 5.58153453540e-02 + 6.22821499923e-02 6.78442738531e-02 7.21810172465e-02 7.51264696898e-02 7.66122811094e-02 7.66122811094e-02 + 7.51264696898e-02 7.21810172465e-02 6.78442738531e-02 6.22821499923e-02 5.58153453540e-02 4.88987422193e-02 + 4.15120643887e-02 3.55725175924e-02 3.02323588099e-02 2.56499234494e-02 2.18557815330e-02 1.88049742175e-02 + 1.64272283654e-02 1.46550533623e-02 1.34318126710e-02 1.27148275869e-02 1.24785638223e-02 1.27148275869e-02 + 1.34318126710e-02 1.46550533623e-02 1.64272283654e-02 1.88049742175e-02 2.18557815330e-02 2.56499234494e-02 + 3.02323588099e-02 3.55725175924e-02 4.15120643887e-02 4.77311231410e-02 5.37510492057e-02 5.90154969276e-02 + 6.30764730892e-02 6.57918464265e-02 6.73541476702e-02 6.81077724909e-02 6.83266751007e-02 6.81077724909e-02 + 6.73541476702e-02 6.57918464265e-02 6.30764730892e-02 5.90154969276e-02 5.37510492057e-02 4.77311231410e-02 + 4.20165784801e-02 3.64535808156e-02 3.14154606035e-02 2.70818268649e-02 2.34923498457e-02 2.06126999880e-02 + 1.83878553878e-02 1.67669692380e-02 1.57094271493e-02 1.51874137660e-02 1.51874137660e-02 1.57094271493e-02 + 1.67669692380e-02 1.83878553878e-02 2.06126999880e-02 2.34923498457e-02 2.70818268649e-02 3.14154606035e-02 + 3.64535808156e-02 4.20165784801e-02 4.77311231410e-02 5.30133769166e-02 5.71527035674e-02 5.95715936141e-02 + 6.01752681104e-02 5.94868177545e-02 5.83777841365e-02 5.76200322747e-02 5.76200322747e-02 5.83777841365e-02 + 5.94868177545e-02 6.01752681104e-02 5.95715936141e-02 5.71527035674e-02 5.30133769166e-02 4.77311231410e-02 + 4.34838779539e-02 3.81729635435e-02 3.33624200108e-02 2.92302840650e-02 2.58139075627e-02 2.30866420056e-02 + 2.10090352784e-02 1.95479913088e-02 1.86800926235e-02 1.83921353899e-02 1.86800926235e-02 1.95479913088e-02 + 2.10090352784e-02 2.30866420056e-02 2.58139075627e-02 2.92302840650e-02 3.33624200108e-02 3.81729635435e-02 + 4.34838779539e-02 4.88987422193e-02 5.37510492057e-02 5.71527035674e-02 5.82782465337e-02 5.68740665481e-02 + 5.36143814352e-02 4.98718618187e-02 4.70389926376e-02 4.60013609401e-02 4.70389926376e-02 4.98718618187e-02 + 5.36143814352e-02 5.68740665481e-02 5.82782465337e-02 5.71527035674e-02 5.37510492057e-02 4.88987422193e-02 + 4.57968161948e-02 4.06654278454e-02 3.60511821341e-02 3.21049723875e-02 2.88533907006e-02 2.62778950395e-02 + 2.43576039836e-02 2.30804654510e-02 2.24420850452e-02 2.24420850452e-02 2.30804654510e-02 2.43576039836e-02 + 2.62778950395e-02 2.88533907006e-02 3.21049723875e-02 3.60511821341e-02 4.06654278454e-02 4.57968161948e-02 + 5.10737783335e-02 5.58153453540e-02 5.90154969276e-02 5.95715936141e-02 5.68740665481e-02 5.14403532045e-02 + 4.49279278957e-02 3.93541671489e-02 3.62214481565e-02 3.62214481565e-02 3.93541671489e-02 4.49279278957e-02 + 5.14403532045e-02 5.68740665481e-02 5.95715936141e-02 5.90154969276e-02 5.58153453540e-02 5.10737783335e-02 + 4.88190878681e-02 4.38725463784e-02 3.94725484932e-02 3.57259716101e-02 3.26483588385e-02 3.02357338101e-02 + 2.84935612207e-02 2.74372089612e-02 2.70827915169e-02 2.74372089612e-02 2.84935612207e-02 3.02357338101e-02 + 3.26483588385e-02 3.57259716101e-02 3.94725484932e-02 4.38725463784e-02 4.88190878681e-02 5.40097122002e-02 + 5.88318176265e-02 6.22821499923e-02 6.30764730892e-02 6.01752681104e-02 5.36143814352e-02 4.49279278957e-02 + 3.65582592974e-02 3.07039905741e-02 2.86292518106e-02 3.07039905741e-02 3.65582592974e-02 4.49279278957e-02 + 5.36143814352e-02 6.01752681104e-02 6.30764730892e-02 6.22821499923e-02 5.88318176265e-02 5.40097122002e-02 + 5.24477482650e-02 4.77625301985e-02 4.36277000850e-02 4.01041807768e-02 3.72078996967e-02 3.49654910486e-02 + 3.34242157073e-02 3.26363277502e-02 3.26363277502e-02 3.34242157073e-02 3.49654910486e-02 3.72078996967e-02 + 4.01041807768e-02 4.36277000850e-02 4.77625301985e-02 5.24477482650e-02 5.74762428735e-02 6.23688231248e-02 + 6.62522137956e-02 6.78442738531e-02 6.57918464265e-02 5.94868177545e-02 4.98718618187e-02 3.93541671489e-02 + 3.07039905741e-02 2.59250062413e-02 2.59250062413e-02 3.07039905741e-02 3.93541671489e-02 4.98718618187e-02 + 5.94868177545e-02 6.57918464265e-02 6.78442738531e-02 6.62522137956e-02 6.23688231248e-02 5.74762428735e-02 + 5.66331890923e-02 5.23143637463e-02 4.84855850881e-02 4.51788789706e-02 4.24386109393e-02 4.03527020822e-02 + 3.90350130516e-02 3.85829474965e-02 3.90350130516e-02 4.03527020822e-02 4.24386109393e-02 4.51788789706e-02 + 4.84855850881e-02 5.23143637463e-02 5.66331890923e-02 6.13334872428e-02 6.61022866145e-02 7.02831021338e-02 + 7.27796836797e-02 7.21810172465e-02 6.73541476702e-02 5.83777841365e-02 4.70389926376e-02 3.62214481565e-02 + 2.86292518106e-02 2.59250062413e-02 2.86292518106e-02 3.62214481565e-02 4.70389926376e-02 5.83777841365e-02 + 6.73541476702e-02 7.21810172465e-02 7.27796836797e-02 7.02831021338e-02 6.61022866145e-02 6.13334872428e-02 + 6.13379141192e-02 5.74449785733e-02 5.38883507401e-02 5.07121410456e-02 4.80406383964e-02 4.60731359718e-02 + 4.50208900473e-02 4.50208900473e-02 4.60731359718e-02 4.80406383964e-02 5.07121410456e-02 5.38883507401e-02 + 5.74449785733e-02 6.13379141192e-02 6.55352798807e-02 6.98920688762e-02 7.40032629540e-02 7.70723261920e-02 + 7.78881394404e-02 7.51264696898e-02 6.81077724909e-02 5.76200322747e-02 4.60013609401e-02 3.62214481565e-02 + 3.07039905741e-02 3.07039905741e-02 3.62214481565e-02 4.60013609401e-02 5.76200322747e-02 6.81077724909e-02 + 7.51264696898e-02 7.78881394404e-02 7.70723261920e-02 7.40032629540e-02 6.98920688762e-02 6.55352798807e-02 + 6.64284767715e-02 6.28828729732e-02 5.94150808572e-02 5.61547897924e-02 5.33923081840e-02 5.15101646150e-02 + 5.08390344517e-02 5.15101646150e-02 5.33923081840e-02 5.61547897924e-02 5.94150808572e-02 6.28828729732e-02 + 6.64284767715e-02 7.00474085615e-02 7.37387049341e-02 7.73458021392e-02 8.04073084192e-02 8.20645507484e-02 + 8.11458755837e-02 7.66122811094e-02 6.83266751007e-02 5.76200322747e-02 4.70389926376e-02 3.93541671489e-02 + 3.65582592974e-02 3.93541671489e-02 4.70389926376e-02 5.76200322747e-02 6.83266751007e-02 7.66122811094e-02 + 8.11458755837e-02 8.20645507484e-02 8.04073084192e-02 7.73458021392e-02 7.37387049341e-02 7.00474085615e-02 + 7.15201290633e-02 6.80033074139e-02 6.42180018992e-02 6.05090723285e-02 5.74676014035e-02 5.57363453523e-02 + 5.57363453523e-02 5.74676014035e-02 6.05090723285e-02 6.42180018992e-02 6.80033074139e-02 7.15201290633e-02 + 7.47020608958e-02 7.76449689484e-02 8.04193974336e-02 8.28911486673e-02 8.45957298814e-02 8.47143937707e-02 + 8.22656900591e-02 7.66122811094e-02 6.81077724909e-02 5.83777841365e-02 4.98718618187e-02 4.49279278957e-02 + 4.49279278957e-02 4.98718618187e-02 5.83777841365e-02 6.81077724909e-02 7.66122811094e-02 8.22656900591e-02 + 8.47143937707e-02 8.45957298814e-02 8.28911486673e-02 8.04193974336e-02 7.76449689484e-02 7.47020608958e-02 + 7.57970302390e-02 7.16581855164e-02 6.69101294891e-02 6.23288110708e-02 5.89627863020e-02 5.77208882781e-02 + 5.89627863020e-02 6.23288110708e-02 6.69101294891e-02 7.16581855164e-02 7.57970302390e-02 7.90236437036e-02 + 8.14375530661e-02 8.33038946145e-02 8.48028174918e-02 8.58561529560e-02 8.60542685404e-02 8.47143937707e-02 + 8.11458755837e-02 7.51264696898e-02 6.73541476702e-02 5.94868177545e-02 5.36143814352e-02 5.14403532045e-02 + 5.36143814352e-02 5.94868177545e-02 6.73541476702e-02 7.51264696898e-02 8.11458755837e-02 8.47143937707e-02 + 8.60542685404e-02 8.58561529560e-02 8.48028174918e-02 8.33038946145e-02 8.14375530661e-02 7.90236437036e-02 + 7.78881394404e-02 7.21810172465e-02 6.57918464265e-02 6.01752681104e-02 5.68740665481e-02 5.68740665481e-02 + 6.01752681104e-02 6.57918464265e-02 7.21810172465e-02 7.78881394404e-02 8.20645507484e-02 8.45957298814e-02 + 8.58561529560e-02 8.63317298438e-02 8.63317298438e-02 8.58561529560e-02 8.45957298814e-02 8.20645507484e-02 + 7.78881394404e-02 7.21810172465e-02 6.57918464265e-02 6.01752681104e-02 5.68740665481e-02 5.68740665481e-02 + 6.01752681104e-02 6.57918464265e-02 7.21810172465e-02 7.78881394404e-02 8.20645507484e-02 8.45957298814e-02 + 8.58561529560e-02 8.63317298438e-02 8.63317298438e-02 8.58561529560e-02 8.45957298814e-02 8.20645507484e-02 + 7.60705845667e-02 6.79419572879e-02 5.97323039443e-02 5.36149267734e-02 5.13523903781e-02 5.36149267734e-02 + 5.97323039443e-02 6.79419572879e-02 7.60705845667e-02 8.23828782457e-02 8.61408122915e-02 8.75716967614e-02 + 8.73972293003e-02 8.63317298438e-02 8.48028174918e-02 8.28911486673e-02 8.04073084192e-02 7.70723261920e-02 + 7.27796836797e-02 6.78442738531e-02 6.30764730892e-02 5.95715936141e-02 5.82782465337e-02 5.95715936141e-02 + 6.30764730892e-02 6.78442738531e-02 7.27796836797e-02 7.70723261920e-02 8.04073084192e-02 8.28911486673e-02 + 8.48028174918e-02 8.63317298438e-02 8.73972293003e-02 8.75716967614e-02 8.61408122915e-02 8.23828782457e-02 + 6.91119067669e-02 5.85232784436e-02 4.93308963719e-02 4.40123223759e-02 4.40123223759e-02 4.93308963719e-02 + 5.85232784436e-02 6.91119067669e-02 7.84511058955e-02 8.47410728024e-02 8.75562567048e-02 8.75716967614e-02 + 8.58561529560e-02 8.33038946145e-02 8.04193974336e-02 7.73458021392e-02 7.40032629540e-02 7.02831021338e-02 + 6.62522137956e-02 6.22821499923e-02 5.90154969276e-02 5.71527035674e-02 5.71527035674e-02 5.90154969276e-02 + 6.22821499923e-02 6.62522137956e-02 7.02831021338e-02 7.40032629540e-02 7.73458021392e-02 8.04193974336e-02 + 8.33038946145e-02 8.58561529560e-02 8.75716967614e-02 8.75562567048e-02 8.47410728024e-02 7.84511058955e-02 + 5.74463352203e-02 4.56222411881e-02 3.71417160544e-02 3.40771392673e-02 3.71417160544e-02 4.56222411881e-02 + 5.74463352203e-02 6.96179820017e-02 7.92532152557e-02 8.47410728024e-02 8.61408122915e-02 8.45957298814e-02 + 8.14375530661e-02 7.76449689484e-02 7.37387049341e-02 6.98920688762e-02 6.61022866145e-02 6.23688231248e-02 + 5.88318176265e-02 5.58153453540e-02 5.37510492057e-02 5.30133769166e-02 5.37510492057e-02 5.58153453540e-02 + 5.88318176265e-02 6.23688231248e-02 6.61022866145e-02 6.98920688762e-02 7.37387049341e-02 7.76449689484e-02 + 8.14375530661e-02 8.45957298814e-02 8.61408122915e-02 8.47410728024e-02 7.92532152557e-02 6.96179820017e-02 + 4.35588929466e-02 3.25101129901e-02 2.63856510811e-02 2.63856510811e-02 3.25101129901e-02 4.35588929466e-02 + 5.70355201353e-02 6.96179820017e-02 7.84511058955e-02 8.23828782457e-02 8.20645507484e-02 7.90236437036e-02 + 7.47020608958e-02 7.00474085615e-02 6.55352798807e-02 6.13334872428e-02 5.74762428735e-02 5.40097122002e-02 + 5.10737783335e-02 4.88987422193e-02 4.77311231410e-02 4.77311231410e-02 4.88987422193e-02 5.10737783335e-02 + 5.40097122002e-02 5.74762428735e-02 6.13334872428e-02 6.55352798807e-02 7.00474085615e-02 7.47020608958e-02 + 7.90236437036e-02 8.20645507484e-02 8.23828782457e-02 7.84511058955e-02 6.96179820017e-02 5.70355201353e-02 + 1.69819929531e-02 1.14596764125e-02 1.14596764125e-02 1.69819929531e-02 2.77489957459e-02 4.22847991283e-02 + 5.73653289979e-02 6.91119067669e-02 7.51264696898e-02 7.55368812409e-02 7.21264918488e-02 6.68641206041e-02 + 6.11288569567e-02 5.56676247698e-02 5.08044555558e-02 4.66403070569e-02 4.32002938784e-02 4.05199675384e-02 + 3.86662855632e-02 3.77147526395e-02 3.77147526395e-02 3.86662855632e-02 4.05199675384e-02 4.32002938784e-02 + 4.66403070569e-02 5.08044555558e-02 5.56676247698e-02 6.11288569567e-02 6.68641206041e-02 7.21264918488e-02 + 7.55368812409e-02 7.51264696898e-02 6.91119067669e-02 5.73653289979e-02 4.22847991283e-02 2.77489957459e-02 + 1.14596764125e-02 9.05419851032e-03 1.14596764125e-02 1.87771308641e-02 3.06594619284e-02 4.51254329663e-02 + 5.85232784436e-02 6.73541476702e-02 7.03019494995e-02 6.84139609392e-02 6.37149803432e-02 5.79474348197e-02 + 5.21839135623e-02 4.69561004766e-02 4.24686468881e-02 3.87673596218e-02 3.58537824974e-02 3.37399765679e-02 + 3.24534608631e-02 3.20210145144e-02 3.24534608631e-02 3.37399765679e-02 3.58537824974e-02 3.87673596218e-02 + 4.24686468881e-02 4.69561004766e-02 5.21839135623e-02 5.79474348197e-02 6.37149803432e-02 6.84139609392e-02 + 7.03019494995e-02 6.73541476702e-02 5.85232784436e-02 4.51254329663e-02 3.06594619284e-02 1.87771308641e-02 + 1.14596764125e-02 1.14596764125e-02 1.56860392578e-02 2.42761411551e-02 3.63849623957e-02 4.93308963719e-02 + 5.94868177545e-02 6.44394828494e-02 6.41840706496e-02 6.03694423859e-02 5.48714786192e-02 4.90231496620e-02 + 4.35604474537e-02 3.88104397494e-02 3.48695445110e-02 3.17358390207e-02 2.93901320501e-02 2.78244998346e-02 + 2.70402901784e-02 2.70402901784e-02 2.78244998346e-02 2.93901320501e-02 3.17358390207e-02 3.48695445110e-02 + 3.88104397494e-02 4.35604474537e-02 4.90231496620e-02 5.48714786192e-02 6.03694423859e-02 6.41840706496e-02 + 6.44394828494e-02 5.94868177545e-02 4.93308963719e-02 3.63849623957e-02 2.42761411551e-02 1.56860392578e-02 + 1.69819929531e-02 1.87771308641e-02 2.42761411551e-02 3.32338776264e-02 4.40123223759e-02 5.36143814352e-02 + 5.92810318582e-02 6.01184381094e-02 5.71251588417e-02 5.20147259753e-02 4.62258246981e-02 4.06430475235e-02 + 3.57044700685e-02 3.15673758761e-02 2.82446089484e-02 2.57019293917e-02 2.39063871143e-02 2.28368095394e-02 + 2.24815496090e-02 2.28368095394e-02 2.39063871143e-02 2.57019293917e-02 2.82446089484e-02 3.15673758761e-02 + 3.57044700685e-02 4.06430475235e-02 4.62258246981e-02 5.20147259753e-02 5.71251588417e-02 6.01184381094e-02 + 5.92810318582e-02 5.36143814352e-02 4.40123223759e-02 3.32338776264e-02 2.42761411551e-02 1.87771308641e-02 + 2.77489957459e-02 3.06594619284e-02 3.63849623957e-02 4.40123223759e-02 5.14403532045e-02 5.62463189889e-02 + 5.71366804742e-02 5.44829894560e-02 4.96193341715e-02 4.38959177953e-02 3.82415861113e-02 3.31615306069e-02 + 2.88631293974e-02 2.53797852965e-02 2.26718438342e-02 2.06884779452e-02 1.93892705934e-02 1.87467470027e-02 + 1.87467470027e-02 1.93892705934e-02 2.06884779452e-02 2.26718438342e-02 2.53797852965e-02 2.88631293974e-02 + 3.31615306069e-02 3.82415861113e-02 4.38959177953e-02 4.96193341715e-02 5.44829894560e-02 5.71366804742e-02 + 5.62463189889e-02 5.14403532045e-02 4.40123223759e-02 3.63849623957e-02 3.06594619284e-02 2.77489957459e-02 + 4.22847991283e-02 4.51254329663e-02 4.93308963719e-02 5.36143814352e-02 5.62463189889e-02 5.60372557288e-02 + 5.29846351657e-02 4.79989400749e-02 4.21941579647e-02 3.64263171972e-02 3.12022017908e-02 2.67502344749e-02 + 2.31175818882e-02 2.02621880335e-02 1.81196807915e-02 1.66330383744e-02 1.57591868798e-02 1.54709928045e-02 + 1.57591868798e-02 1.66330383744e-02 1.81196807915e-02 2.02621880335e-02 2.31175818882e-02 2.67502344749e-02 + 3.12022017908e-02 3.64263171972e-02 4.21941579647e-02 4.79989400749e-02 5.29846351657e-02 5.60372557288e-02 + 5.62463189889e-02 5.36143814352e-02 4.93308963719e-02 4.51254329663e-02 4.22847991283e-02 4.13123485649e-02 + 5.73653289979e-02 5.85232784436e-02 5.94868177545e-02 5.92810318582e-02 5.71366804742e-02 5.29846351657e-02 + 4.74231711778e-02 4.12888114430e-02 3.52857897121e-02 2.98615217076e-02 2.52298202509e-02 2.14361295219e-02 + 1.84326960165e-02 1.61427916872e-02 1.44944499034e-02 1.34297677852e-02 1.29079014387e-02 1.29079014387e-02 + 1.34297677852e-02 1.44944499034e-02 1.61427916872e-02 1.84326960165e-02 2.14361295219e-02 2.52298202509e-02 + 2.98615217076e-02 3.52857897121e-02 4.12888114430e-02 4.74231711778e-02 5.29846351657e-02 5.71366804742e-02 + 5.92810318582e-02 5.94868177545e-02 5.85232784436e-02 5.73653289979e-02 5.66663226477e-02 5.66663226477e-02 + 6.91119067669e-02 6.73541476702e-02 6.44394828494e-02 6.01184381094e-02 5.44829894560e-02 4.79989400749e-02 + 4.12888114430e-02 3.48956024912e-02 2.91781605866e-02 2.43103322252e-02 2.03206914317e-02 1.71497889118e-02 + 1.47072813037e-02 1.29064893850e-02 1.16751572683e-02 1.09586567104e-02 1.07235056315e-02 1.09586567104e-02 + 1.16751572683e-02 1.29064893850e-02 1.47072813037e-02 1.71497889118e-02 2.03206914317e-02 2.43103322252e-02 + 2.91781605866e-02 3.48956024912e-02 4.12888114430e-02 4.79989400749e-02 5.44829894560e-02 6.01184381094e-02 + 6.44394828494e-02 6.73541476702e-02 6.91119067669e-02 7.00400365127e-02 7.03323963389e-02 7.00400365127e-02 + 7.51264696898e-02 7.03019494995e-02 6.41840706496e-02 5.71251588417e-02 4.96193341715e-02 4.21941579647e-02 + 3.52857897121e-02 2.91781605866e-02 2.40022165572e-02 1.97639178277e-02 1.63890080671e-02 1.37726366090e-02 + 1.18131307076e-02 1.04238516982e-02 9.53627070961e-03 9.10381322670e-03 9.10381322670e-03 9.53627070961e-03 + 1.04238516982e-02 1.18131307076e-02 1.37726366090e-02 1.63890080671e-02 1.97639178277e-02 2.40022165572e-02 + 2.91781605866e-02 3.52857897121e-02 4.21941579647e-02 4.96193341715e-02 5.71251588417e-02 6.41840706496e-02 + 7.03019494995e-02 7.51264696898e-02 7.84511058955e-02 8.01500628124e-02 8.01500628124e-02 7.84511058955e-02 + 7.55368812409e-02 6.84139609392e-02 6.03694423859e-02 5.20147259753e-02 4.38959177953e-02 3.64263171972e-02 + 2.98615217076e-02 2.43103322252e-02 1.97639178277e-02 1.61367490443e-02 1.33116675302e-02 1.11729588764e-02 + 9.61987006090e-03 8.57007132232e-03 7.96341795569e-03 7.76490388909e-03 7.96341795569e-03 8.57007132232e-03 + 9.61987006090e-03 1.11729588764e-02 1.33116675302e-02 1.61367490443e-02 1.97639178277e-02 2.43103322252e-02 + 2.98615217076e-02 3.64263171972e-02 4.38959177953e-02 5.20147259753e-02 6.03694423859e-02 6.84139609392e-02 + 7.55368812409e-02 8.11458755837e-02 8.47410728024e-02 8.59805323971e-02 8.47410728024e-02 8.11458755837e-02 + 7.21264918488e-02 6.37149803432e-02 5.48714786192e-02 4.62258246981e-02 3.82415861113e-02 3.12022017908e-02 + 2.52298202509e-02 2.03206914317e-02 1.63890080671e-02 1.33116675302e-02 1.09620544703e-02 9.22648243576e-03 + 8.00955236461e-03 7.23785699764e-03 6.86339437793e-03 6.86339437793e-03 7.23785699764e-03 8.00955236461e-03 + 9.22648243576e-03 1.09620544703e-02 1.33116675302e-02 1.63890080671e-02 2.03206914317e-02 2.52298202509e-02 + 3.12022017908e-02 3.82415861113e-02 4.62258246981e-02 5.48714786192e-02 6.37149803432e-02 7.21264918488e-02 + 7.93709590427e-02 8.47143937707e-02 8.75562567048e-02 8.75562567048e-02 8.47143937707e-02 7.93709590427e-02 + 6.68641206041e-02 5.79474348197e-02 4.90231496620e-02 4.06430475235e-02 3.31615306069e-02 2.67502344749e-02 + 2.14361295219e-02 1.71497889118e-02 1.37726366090e-02 1.11729588764e-02 9.22648243576e-03 7.82576853226e-03 + 6.88519888788e-03 6.34416762186e-03 6.16759269815e-03 6.34416762186e-03 6.88519888788e-03 7.82576853226e-03 + 9.22648243576e-03 1.11729588764e-02 1.37726366090e-02 1.71497889118e-02 2.14361295219e-02 2.67502344749e-02 + 3.31615306069e-02 4.06430475235e-02 4.90231496620e-02 5.79474348197e-02 6.68641206041e-02 7.50510418428e-02 + 8.16998180862e-02 8.60542685404e-02 8.75716967614e-02 8.60542685404e-02 8.16998180862e-02 7.50510418428e-02 + 6.11288569567e-02 5.21839135623e-02 4.35604474537e-02 3.57044700685e-02 2.88631293974e-02 2.31175818882e-02 + 1.84326960165e-02 1.47072813037e-02 1.18131307076e-02 9.61987006090e-03 8.00955236461e-03 6.88519888788e-03 + 6.17468606834e-03 5.83098728503e-03 5.83098728503e-03 6.17468606834e-03 6.88519888788e-03 8.00955236461e-03 + 9.61987006090e-03 1.18131307076e-02 1.47072813037e-02 1.84326960165e-02 2.31175818882e-02 2.88631293974e-02 + 3.57044700685e-02 4.35604474537e-02 5.21839135623e-02 6.11288569567e-02 6.97522426294e-02 7.72682499914e-02 + 8.28633557769e-02 8.58561529560e-02 8.58561529560e-02 8.28633557769e-02 7.72682499914e-02 6.97522426294e-02 + 5.56676247698e-02 4.69561004766e-02 3.88104397494e-02 3.15673758761e-02 2.53797852965e-02 2.02621880335e-02 + 1.61427916872e-02 1.29064893850e-02 1.04238516982e-02 8.57007132232e-03 7.23785699764e-03 6.34416762186e-03 + 5.83098728503e-03 5.66378434823e-03 5.83098728503e-03 6.34416762186e-03 7.23785699764e-03 8.57007132232e-03 + 1.04238516982e-02 1.29064893850e-02 1.61427916872e-02 2.02621880335e-02 2.53797852965e-02 3.15673758761e-02 + 3.88104397494e-02 4.69561004766e-02 5.56676247698e-02 6.44054743742e-02 7.24538631804e-02 7.90059272690e-02 + 8.33038946145e-02 8.48028174918e-02 8.33038946145e-02 7.90059272690e-02 7.24538631804e-02 6.44054743742e-02 + 5.08044555558e-02 4.24686468881e-02 3.48695445110e-02 2.82446089484e-02 2.26718438342e-02 1.81196807915e-02 + 1.44944499034e-02 1.16751572683e-02 9.53627070961e-03 7.96341795569e-03 6.86339437793e-03 6.16759269815e-03 + 5.83098728503e-03 5.83098728503e-03 6.16759269815e-03 6.86339437793e-03 7.96341795569e-03 9.53627070961e-03 + 1.16751572683e-02 1.44944499034e-02 1.81196807915e-02 2.26718438342e-02 2.82446089484e-02 3.48695445110e-02 + 4.24686468881e-02 5.08044555558e-02 5.94462807362e-02 6.77723654588e-02 7.50243106749e-02 8.04193974336e-02 + 8.33038946145e-02 8.33038946145e-02 8.04193974336e-02 7.50243106749e-02 6.77723654588e-02 5.94462807362e-02 + 4.66403070569e-02 3.87673596218e-02 3.17358390207e-02 2.57019293917e-02 2.06884779452e-02 1.66330383744e-02 + 1.34297677852e-02 1.09586567104e-02 9.10381322670e-03 7.76490388909e-03 6.86339437793e-03 6.34416762186e-03 + 6.17468606834e-03 6.34416762186e-03 6.86339437793e-03 7.76490388909e-03 9.10381322670e-03 1.09586567104e-02 + 1.34297677852e-02 1.66330383744e-02 2.06884779452e-02 2.57019293917e-02 3.17358390207e-02 3.87673596218e-02 + 4.66403070569e-02 5.50251512552e-02 6.34040688222e-02 7.10977313661e-02 7.73458021392e-02 8.14375530661e-02 + 8.28633557769e-02 8.14375530661e-02 7.73458021392e-02 7.10977313661e-02 6.34040688222e-02 5.50251512552e-02 + 4.32002938784e-02 3.58537824974e-02 2.93901320501e-02 2.39063871143e-02 1.93892705934e-02 1.57591868798e-02 + 1.29079014387e-02 1.07235056315e-02 9.10381322670e-03 7.96341795569e-03 7.23785699764e-03 6.88519888788e-03 + 6.88519888788e-03 7.23785699764e-03 7.96341795569e-03 9.10381322670e-03 1.07235056315e-02 1.29079014387e-02 + 1.57591868798e-02 1.93892705934e-02 2.39063871143e-02 2.93901320501e-02 3.58537824974e-02 4.32002938784e-02 + 5.11831265828e-02 5.93841418824e-02 6.72218662363e-02 7.40032629540e-02 7.90236437036e-02 8.16998180862e-02 + 8.16998180862e-02 7.90236437036e-02 7.40032629540e-02 6.72218662363e-02 5.93841418824e-02 5.11831265828e-02 + 4.05199675384e-02 3.37399765679e-02 2.78244998346e-02 2.28368095394e-02 1.87467470027e-02 1.54709928045e-02 + 1.29079014387e-02 1.09586567104e-02 9.53627070961e-03 8.57007132232e-03 8.00955236461e-03 7.82576853226e-03 + 8.00955236461e-03 8.57007132232e-03 9.53627070961e-03 1.09586567104e-02 1.29079014387e-02 1.54709928045e-02 + 1.87467470027e-02 2.28368095394e-02 2.78244998346e-02 3.37399765679e-02 4.05199675384e-02 4.79731106469e-02 + 5.57595749637e-02 6.33941825467e-02 7.02831021338e-02 7.57970302390e-02 7.93709590427e-02 8.06097207709e-02 + 7.93709590427e-02 7.57970302390e-02 7.02831021338e-02 6.33941825467e-02 5.57595749637e-02 4.79731106469e-02 + 3.86662855632e-02 3.24534608631e-02 2.70402901784e-02 2.24815496090e-02 1.87467470027e-02 1.57591868798e-02 + 1.34297677852e-02 1.16751572683e-02 1.04238516982e-02 9.61987006090e-03 9.22648243576e-03 9.22648243576e-03 + 9.61987006090e-03 1.04238516982e-02 1.16751572683e-02 1.34297677852e-02 1.57591868798e-02 1.87467470027e-02 + 2.24815496090e-02 2.70402901784e-02 3.24534608631e-02 3.86662855632e-02 4.55081727847e-02 5.26787408684e-02 + 5.97584596222e-02 6.62522137956e-02 7.16581855164e-02 7.55368812409e-02 7.75631573239e-02 7.75631573239e-02 + 7.55368812409e-02 7.16581855164e-02 6.62522137956e-02 5.97584596222e-02 5.26787408684e-02 4.55081727847e-02 + 3.77147526395e-02 3.20210145144e-02 2.70402901784e-02 2.28368095394e-02 1.93892705934e-02 1.66330383744e-02 + 1.44944499034e-02 1.29064893850e-02 1.18131307076e-02 1.11729588764e-02 1.09620544703e-02 1.11729588764e-02 + 1.18131307076e-02 1.29064893850e-02 1.44944499034e-02 1.66330383744e-02 1.93892705934e-02 2.28368095394e-02 + 2.70402901784e-02 3.20210145144e-02 3.77147526395e-02 4.39402098517e-02 5.03893328752e-02 5.66509609539e-02 + 6.22821499923e-02 6.69101294891e-02 7.03019494995e-02 7.23556493700e-02 7.30418134594e-02 7.23556493700e-02 + 7.03019494995e-02 6.69101294891e-02 6.22821499923e-02 5.66509609539e-02 5.03893328752e-02 4.39402098517e-02 + 3.77147526395e-02 3.24534608631e-02 2.78244998346e-02 2.39063871143e-02 2.06884779452e-02 1.81196807915e-02 + 1.61427916872e-02 1.47072813037e-02 1.37726366090e-02 1.33116675302e-02 1.33116675302e-02 1.37726366090e-02 + 1.47072813037e-02 1.61427916872e-02 1.81196807915e-02 2.06884779452e-02 2.39063871143e-02 2.78244998346e-02 + 3.24534608631e-02 3.77147526395e-02 4.34003076052e-02 4.91578982971e-02 5.45211951056e-02 5.90154969276e-02 + 6.23288110708e-02 6.44394828494e-02 6.55787911247e-02 6.60504635380e-02 6.60504635380e-02 6.55787911247e-02 + 6.44394828494e-02 6.23288110708e-02 5.90154969276e-02 5.45211951056e-02 4.91578982971e-02 4.34003076052e-02 + 3.86662855632e-02 3.37399765679e-02 2.93901320501e-02 2.57019293917e-02 2.26718438342e-02 2.02621880335e-02 + 1.84326960165e-02 1.71497889118e-02 1.63890080671e-02 1.61367490443e-02 1.63890080671e-02 1.71497889118e-02 + 1.84326960165e-02 2.02621880335e-02 2.26718438342e-02 2.57019293917e-02 2.93901320501e-02 3.37399765679e-02 + 3.86662855632e-02 4.39402098517e-02 4.91578982971e-02 5.37595739225e-02 5.71527035674e-02 5.89627863020e-02 + 5.92810318582e-02 5.86758842735e-02 5.79103146750e-02 5.75824043038e-02 5.79103146750e-02 5.86758842735e-02 + 5.92810318582e-02 5.89627863020e-02 5.71527035674e-02 5.37595739225e-02 4.91578982971e-02 4.39402098517e-02 + 4.05199675384e-02 3.58537824974e-02 3.17358390207e-02 2.82446089484e-02 2.53797852965e-02 2.31175818882e-02 + 2.14361295219e-02 2.03206914317e-02 1.97639178277e-02 1.97639178277e-02 2.03206914317e-02 2.14361295219e-02 + 2.31175818882e-02 2.53797852965e-02 2.82446089484e-02 3.17358390207e-02 3.58537824974e-02 4.05199675384e-02 + 4.55081727847e-02 5.03893328752e-02 5.45211951056e-02 5.71527035674e-02 5.77208882781e-02 5.62463189889e-02 + 5.34983990182e-02 5.07010770424e-02 4.89850720157e-02 4.89850720157e-02 5.07010770424e-02 5.34983990182e-02 + 5.62463189889e-02 5.77208882781e-02 5.71527035674e-02 5.45211951056e-02 5.03893328752e-02 4.55081727847e-02 + 4.32002938784e-02 3.87673596218e-02 3.48695445110e-02 3.15673758761e-02 2.88631293974e-02 2.67502344749e-02 + 2.52298202509e-02 2.43103322252e-02 2.40022165572e-02 2.43103322252e-02 2.52298202509e-02 2.67502344749e-02 + 2.88631293974e-02 3.15673758761e-02 3.48695445110e-02 3.87673596218e-02 4.32002938784e-02 4.79731106469e-02 + 5.26787408684e-02 5.66509609539e-02 5.90154969276e-02 5.89627863020e-02 5.62463189889e-02 5.15765048907e-02 + 4.64751950426e-02 4.26203265537e-02 4.11986868029e-02 4.26203265537e-02 4.64751950426e-02 5.15765048907e-02 + 5.62463189889e-02 5.89627863020e-02 5.90154969276e-02 5.66509609539e-02 5.26787408684e-02 4.79731106469e-02 + 4.66403070569e-02 4.24686468881e-02 3.88104397494e-02 3.57044700685e-02 3.31615306069e-02 3.12022017908e-02 + 2.98615217076e-02 2.91781605866e-02 2.91781605866e-02 2.98615217076e-02 3.12022017908e-02 3.31615306069e-02 + 3.57044700685e-02 3.88104397494e-02 4.24686468881e-02 4.66403070569e-02 5.11831265828e-02 5.57595749637e-02 + 5.97584596222e-02 6.22821499923e-02 6.23288110708e-02 5.92810318582e-02 5.34983990182e-02 4.64751950426e-02 + 4.02808330656e-02 3.67025276917e-02 3.67025276917e-02 4.02808330656e-02 4.64751950426e-02 5.34983990182e-02 + 5.92810318582e-02 6.23288110708e-02 6.22821499923e-02 5.97584596222e-02 5.57595749637e-02 5.11831265828e-02 + 5.08044555558e-02 4.69561004766e-02 4.35604474537e-02 4.06430475235e-02 3.82415861113e-02 3.64263171972e-02 + 3.52857897121e-02 3.48956024912e-02 3.52857897121e-02 3.64263171972e-02 3.82415861113e-02 4.06430475235e-02 + 4.35604474537e-02 4.69561004766e-02 5.08044555558e-02 5.50251512552e-02 5.93841418824e-02 6.33941825467e-02 + 6.62522137956e-02 6.69101294891e-02 6.44394828494e-02 5.86758842735e-02 5.07010770424e-02 4.26203265537e-02 + 3.67025276917e-02 3.45455630665e-02 3.67025276917e-02 4.26203265537e-02 5.07010770424e-02 5.86758842735e-02 + 6.44394828494e-02 6.69101294891e-02 6.62522137956e-02 6.33941825467e-02 5.93841418824e-02 5.50251512552e-02 + 5.56676247698e-02 5.21839135623e-02 4.90231496620e-02 4.62258246981e-02 4.38959177953e-02 4.21941579647e-02 + 4.12888114430e-02 4.12888114430e-02 4.21941579647e-02 4.38959177953e-02 4.62258246981e-02 4.90231496620e-02 + 5.21839135623e-02 5.56676247698e-02 5.94462807362e-02 6.34040688222e-02 6.72218662363e-02 7.02831021338e-02 + 7.16581855164e-02 7.03019494995e-02 6.55787911247e-02 5.79103146750e-02 4.89850720157e-02 4.11986868029e-02 + 3.67025276917e-02 3.67025276917e-02 4.11986868029e-02 4.89850720157e-02 5.79103146750e-02 6.55787911247e-02 + 7.03019494995e-02 7.16581855164e-02 7.02831021338e-02 6.72218662363e-02 6.34040688222e-02 5.94462807362e-02 + 6.11288569567e-02 5.79474348197e-02 5.48714786192e-02 5.20147259753e-02 4.96193341715e-02 4.79989400749e-02 + 4.74231711778e-02 4.79989400749e-02 4.96193341715e-02 5.20147259753e-02 5.48714786192e-02 5.79474348197e-02 + 6.11288569567e-02 6.44054743742e-02 6.77723654588e-02 7.10977313661e-02 7.40032629540e-02 7.57970302390e-02 + 7.55368812409e-02 7.23556493700e-02 6.60504635380e-02 5.75824043038e-02 4.89850720157e-02 4.26203265537e-02 + 4.02808330656e-02 4.26203265537e-02 4.89850720157e-02 5.75824043038e-02 6.60504635380e-02 7.23556493700e-02 + 7.55368812409e-02 7.57970302390e-02 7.40032629540e-02 7.10977313661e-02 6.77723654588e-02 6.44054743742e-02 + 6.68641206041e-02 6.37149803432e-02 6.03694423859e-02 5.71251588417e-02 5.44829894560e-02 5.29846351657e-02 + 5.29846351657e-02 5.44829894560e-02 5.71251588417e-02 6.03694423859e-02 6.37149803432e-02 6.68641206041e-02 + 6.97522426294e-02 7.24538631804e-02 7.50243106749e-02 7.73458021392e-02 7.90236437036e-02 7.93709590427e-02 + 7.75631573239e-02 7.30418134594e-02 6.60504635380e-02 5.79103146750e-02 5.07010770424e-02 4.64751950426e-02 + 4.64751950426e-02 5.07010770424e-02 5.79103146750e-02 6.60504635380e-02 7.30418134594e-02 7.75631573239e-02 + 7.93709590427e-02 7.90236437036e-02 7.73458021392e-02 7.50243106749e-02 7.24538631804e-02 6.97522426294e-02 + 7.21264918488e-02 6.84139609392e-02 6.41840706496e-02 6.01184381094e-02 5.71366804742e-02 5.60372557288e-02 + 5.71366804742e-02 6.01184381094e-02 6.41840706496e-02 6.84139609392e-02 7.21264918488e-02 7.50510418428e-02 + 7.72682499914e-02 7.90059272690e-02 8.04193974336e-02 8.14375530661e-02 8.16998180862e-02 8.06097207709e-02 + 7.75631573239e-02 7.23556493700e-02 6.55787911247e-02 5.86758842735e-02 5.34983990182e-02 5.15765048907e-02 + 5.34983990182e-02 5.86758842735e-02 6.55787911247e-02 7.23556493700e-02 7.75631573239e-02 8.06097207709e-02 + 8.16998180862e-02 8.14375530661e-02 8.04193974336e-02 7.90059272690e-02 7.72682499914e-02 7.50510418428e-02 + 7.55368812409e-02 7.03019494995e-02 6.44394828494e-02 5.92810318582e-02 5.62463189889e-02 5.62463189889e-02 + 5.92810318582e-02 6.44394828494e-02 7.03019494995e-02 7.55368812409e-02 7.93709590427e-02 8.16998180862e-02 + 8.28633557769e-02 8.33038946145e-02 8.33038946145e-02 8.28633557769e-02 8.16998180862e-02 7.93709590427e-02 + 7.55368812409e-02 7.03019494995e-02 6.44394828494e-02 5.92810318582e-02 5.62463189889e-02 5.62463189889e-02 + 5.92810318582e-02 6.44394828494e-02 7.03019494995e-02 7.55368812409e-02 7.93709590427e-02 8.16998180862e-02 + 8.28633557769e-02 8.33038946145e-02 8.33038946145e-02 8.28633557769e-02 8.16998180862e-02 7.93709590427e-02 + 7.51264696898e-02 6.73541476702e-02 5.94868177545e-02 5.36143814352e-02 5.14403532045e-02 5.36143814352e-02 + 5.94868177545e-02 6.73541476702e-02 7.51264696898e-02 8.11458755837e-02 8.47143937707e-02 8.60542685404e-02 + 8.58561529560e-02 8.48028174918e-02 8.33038946145e-02 8.14375530661e-02 7.90236437036e-02 7.57970302390e-02 + 7.16581855164e-02 6.69101294891e-02 6.23288110708e-02 5.89627863020e-02 5.77208882781e-02 5.89627863020e-02 + 6.23288110708e-02 6.69101294891e-02 7.16581855164e-02 7.57970302390e-02 7.90236437036e-02 8.14375530661e-02 + 8.33038946145e-02 8.48028174918e-02 8.58561529560e-02 8.60542685404e-02 8.47143937707e-02 8.11458755837e-02 + 6.91119067669e-02 5.85232784436e-02 4.93308963719e-02 4.40123223759e-02 4.40123223759e-02 4.93308963719e-02 + 5.85232784436e-02 6.91119067669e-02 7.84511058955e-02 8.47410728024e-02 8.75562567048e-02 8.75716967614e-02 + 8.58561529560e-02 8.33038946145e-02 8.04193974336e-02 7.73458021392e-02 7.40032629540e-02 7.02831021338e-02 + 6.62522137956e-02 6.22821499923e-02 5.90154969276e-02 5.71527035674e-02 5.71527035674e-02 5.90154969276e-02 + 6.22821499923e-02 6.62522137956e-02 7.02831021338e-02 7.40032629540e-02 7.73458021392e-02 8.04193974336e-02 + 8.33038946145e-02 8.58561529560e-02 8.75716967614e-02 8.75562567048e-02 8.47410728024e-02 7.84511058955e-02 + 5.73653289979e-02 4.51254329663e-02 3.63849623957e-02 3.32338776264e-02 3.63849623957e-02 4.51254329663e-02 + 5.73653289979e-02 7.00400365127e-02 8.01500628124e-02 8.59805323971e-02 8.75562567048e-02 8.60542685404e-02 + 8.28633557769e-02 7.90059272690e-02 7.50243106749e-02 7.10977313661e-02 6.72218662363e-02 6.33941825467e-02 + 5.97584596222e-02 5.66509609539e-02 5.45211951056e-02 5.37595739225e-02 5.45211951056e-02 5.66509609539e-02 + 5.97584596222e-02 6.33941825467e-02 6.72218662363e-02 7.10977313661e-02 7.50243106749e-02 7.90059272690e-02 + 8.28633557769e-02 8.60542685404e-02 8.75562567048e-02 8.59805323971e-02 8.01500628124e-02 7.00400365127e-02 + 4.22847991283e-02 3.06594619284e-02 2.42761411551e-02 2.42761411551e-02 3.06594619284e-02 4.22847991283e-02 + 5.66663226477e-02 7.03323963389e-02 8.01500628124e-02 8.47410728024e-02 8.47143937707e-02 8.16998180862e-02 + 7.72682499914e-02 7.24538631804e-02 6.77723654588e-02 6.34040688222e-02 5.93841418824e-02 5.57595749637e-02 + 5.26787408684e-02 5.03893328752e-02 4.91578982971e-02 4.91578982971e-02 5.03893328752e-02 5.26787408684e-02 + 5.57595749637e-02 5.93841418824e-02 6.34040688222e-02 6.77723654588e-02 7.24538631804e-02 7.72682499914e-02 + 8.16998180862e-02 8.47143937707e-02 8.47410728024e-02 8.01500628124e-02 7.03323963389e-02 5.66663226477e-02 + 2.77489957459e-02 1.87771308641e-02 1.56860392578e-02 1.87771308641e-02 2.77489957459e-02 4.13123485649e-02 + 5.66663226477e-02 7.00400365127e-02 7.84511058955e-02 8.11458755837e-02 7.93709590427e-02 7.50510418428e-02 + 6.97522426294e-02 6.44054743742e-02 5.94462807362e-02 5.50251512552e-02 5.11831265828e-02 4.79731106469e-02 + 4.55081727847e-02 4.39402098517e-02 4.34003076052e-02 4.39402098517e-02 4.55081727847e-02 4.79731106469e-02 + 5.11831265828e-02 5.50251512552e-02 5.94462807362e-02 6.44054743742e-02 6.97522426294e-02 7.50510418428e-02 + 7.93709590427e-02 8.11458755837e-02 7.84511058955e-02 7.00400365127e-02 5.66663226477e-02 4.13123485649e-02 + 7.45857574908e-03 5.17285277950e-03 7.45857574908e-03 1.46090879135e-02 2.67478820537e-02 4.22847991283e-02 + 5.74463352203e-02 6.81077724909e-02 7.23556493700e-02 7.10787520021e-02 6.64898780493e-02 6.05796981280e-02 + 5.45841783826e-02 4.91148354625e-02 4.44094609233e-02 4.05244812822e-02 3.74634706166e-02 3.52402742752e-02 + 3.38859304601e-02 3.34304675050e-02 3.38859304601e-02 3.52402742752e-02 3.74634706166e-02 4.05244812822e-02 + 4.44094609233e-02 4.91148354625e-02 5.45841783826e-02 6.05796981280e-02 6.64898780493e-02 7.10787520021e-02 + 7.23556493700e-02 6.81077724909e-02 5.74463352203e-02 4.22847991283e-02 2.67478820537e-02 1.46090879135e-02 + 5.17285277950e-03 5.17285277950e-03 9.13060134292e-03 1.76819501362e-02 3.06594619284e-02 4.56222411881e-02 + 5.83777841365e-02 6.55787911247e-02 6.66786802062e-02 6.33842515281e-02 5.78981879671e-02 5.18355302331e-02 + 4.60913389830e-02 4.10670403681e-02 3.68889471691e-02 3.35632692529e-02 3.10717223250e-02 2.94074293899e-02 + 2.85734174953e-02 2.85734174953e-02 2.94074293899e-02 3.10717223250e-02 3.35632692529e-02 3.68889471691e-02 + 4.10670403681e-02 4.60913389830e-02 5.18355302331e-02 5.78981879671e-02 6.33842515281e-02 6.66786802062e-02 + 6.55787911247e-02 5.83777841365e-02 4.56222411881e-02 3.06594619284e-02 1.76819501362e-02 9.13060134292e-03 + 7.45857574908e-03 9.13060134292e-03 1.45732066269e-02 2.42761411551e-02 3.71417160544e-02 4.98718618187e-02 + 5.86758842735e-02 6.17513938278e-02 5.98878714669e-02 5.51031089527e-02 4.92182336225e-02 4.33721592307e-02 + 3.81345549630e-02 3.37228748044e-02 3.01717861136e-02 2.74512061786e-02 2.55281844546e-02 2.43819637041e-02 + 2.40011711299e-02 2.43819637041e-02 2.55281844546e-02 2.74512061786e-02 3.01717861136e-02 3.37228748044e-02 + 3.81345549630e-02 4.33721592307e-02 4.92182336225e-02 5.51031089527e-02 5.98878714669e-02 6.17513938278e-02 + 5.86758842735e-02 4.98718618187e-02 3.71417160544e-02 2.42761411551e-02 1.45732066269e-02 9.13060134292e-03 + 1.46090879135e-02 1.76819501362e-02 2.42761411551e-02 3.40771392673e-02 4.49279278957e-02 5.34983990182e-02 + 5.74105494947e-02 5.65511919643e-02 5.24339557043e-02 4.68264624901e-02 4.09927131873e-02 3.56312088557e-02 + 3.10465495213e-02 2.73140021666e-02 2.44059448105e-02 2.22726314479e-02 2.08735527936e-02 2.01812628043e-02 + 2.01812628043e-02 2.08735527936e-02 2.22726314479e-02 2.44059448105e-02 2.73140021666e-02 3.10465495213e-02 + 3.56312088557e-02 4.09927131873e-02 4.68264624901e-02 5.24339557043e-02 5.65511919643e-02 5.74105494947e-02 + 5.34983990182e-02 4.49279278957e-02 3.40771392673e-02 2.42761411551e-02 1.76819501362e-02 1.46090879135e-02 + 2.67478820537e-02 3.06594619284e-02 3.71417160544e-02 4.49279278957e-02 5.15765048907e-02 5.48533676650e-02 + 5.41129564364e-02 5.02828320119e-02 4.48486167771e-02 3.90347179512e-02 3.35871770820e-02 2.88661050079e-02 + 2.49827563157e-02 2.19185274002e-02 1.96135589165e-02 1.80109897723e-02 1.70678712692e-02 1.67567114426e-02 + 1.70678712692e-02 1.80109897723e-02 1.96135589165e-02 2.19185274002e-02 2.49827563157e-02 2.88661050079e-02 + 3.35871770820e-02 3.90347179512e-02 4.48486167771e-02 5.02828320119e-02 5.41129564364e-02 5.48533676650e-02 + 5.15765048907e-02 4.49279278957e-02 3.71417160544e-02 3.06594619284e-02 2.67478820537e-02 2.54935088837e-02 + 4.22847991283e-02 4.56222411881e-02 4.98718618187e-02 5.34983990182e-02 5.48533676650e-02 5.32152215954e-02 + 4.90700187394e-02 4.35234290368e-02 3.76190713504e-02 3.20546920774e-02 2.71955666447e-02 2.31688478126e-02 + 1.99620901041e-02 1.75083321070e-02 1.57370100687e-02 1.45906790875e-02 1.40283418589e-02 1.40283418589e-02 + 1.45906790875e-02 1.57370100687e-02 1.75083321070e-02 1.99620901041e-02 2.31688478126e-02 2.71955666447e-02 + 3.20546920774e-02 3.76190713504e-02 4.35234290368e-02 4.90700187394e-02 5.32152215954e-02 5.48533676650e-02 + 5.34983990182e-02 4.98718618187e-02 4.56222411881e-02 4.22847991283e-02 4.05694134160e-02 4.05694134160e-02 + 5.74463352203e-02 5.83777841365e-02 5.86758842735e-02 5.74105494947e-02 5.41129564364e-02 4.90700187394e-02 + 4.30547772101e-02 3.68707660171e-02 3.10978190541e-02 2.60582031450e-02 2.18687619531e-02 1.85132658939e-02 + 1.59162612755e-02 1.39945083398e-02 1.26769712537e-02 1.19093466628e-02 1.16573532374e-02 1.19093466628e-02 + 1.26769712537e-02 1.39945083398e-02 1.59162612755e-02 1.85132658939e-02 2.18687619531e-02 2.60582031450e-02 + 3.10978190541e-02 3.68707660171e-02 4.30547772101e-02 4.90700187394e-02 5.41129564364e-02 5.74105494947e-02 + 5.86758842735e-02 5.83777841365e-02 5.74463352203e-02 5.66663226477e-02 5.63846435627e-02 5.66663226477e-02 + 6.81077724909e-02 6.55787911247e-02 6.17513938278e-02 5.65511919643e-02 5.02828320119e-02 4.35234290368e-02 + 3.68707660171e-02 3.07715106065e-02 2.54803066383e-02 2.10847229658e-02 1.75547637226e-02 1.48031251671e-02 + 1.27333396536e-02 1.12609832188e-02 1.03186231402e-02 9.85925299562e-03 9.85925299562e-03 1.03186231402e-02 + 1.12609832188e-02 1.27333396536e-02 1.48031251671e-02 1.75547637226e-02 2.10847229658e-02 2.54803066383e-02 + 3.07715106065e-02 3.68707660171e-02 4.35234290368e-02 5.02828320119e-02 5.65511919643e-02 6.17513938278e-02 + 6.55787911247e-02 6.81077724909e-02 6.96179820017e-02 7.03323963389e-02 7.03323963389e-02 6.96179820017e-02 + 7.23556493700e-02 6.66786802062e-02 5.98878714669e-02 5.24339557043e-02 4.48486167771e-02 3.76190713504e-02 + 3.10978190541e-02 2.54803066383e-02 2.08223402545e-02 1.70770073925e-02 1.41440793855e-02 1.19137265332e-02 + 1.02881382638e-02 9.18679124184e-03 8.54973346172e-03 8.34122341388e-03 8.54973346172e-03 9.18679124184e-03 + 1.02881382638e-02 1.19137265332e-02 1.41440793855e-02 1.70770073925e-02 2.08223402545e-02 2.54803066383e-02 + 3.10978190541e-02 3.76190713504e-02 4.48486167771e-02 5.24339557043e-02 5.98878714669e-02 6.66786802062e-02 + 7.23556493700e-02 7.66122811094e-02 7.92532152557e-02 8.01500628124e-02 7.92532152557e-02 7.66122811094e-02 + 7.10787520021e-02 6.33842515281e-02 5.51031089527e-02 4.68264624901e-02 3.90347179512e-02 3.20546920774e-02 + 2.60582031450e-02 2.10847229658e-02 1.70770073925e-02 1.39256808178e-02 1.15097880648e-02 9.71912104775e-03 + 8.46060891145e-03 7.66146344666e-03 7.27338017313e-03 7.27338017313e-03 7.66146344666e-03 8.46060891145e-03 + 9.71912104775e-03 1.15097880648e-02 1.39256808178e-02 1.70770073925e-02 2.10847229658e-02 2.60582031450e-02 + 3.20546920774e-02 3.90347179512e-02 4.68264624901e-02 5.51031089527e-02 6.33842515281e-02 7.10787520021e-02 + 7.75631573239e-02 8.22656900591e-02 8.47410728024e-02 8.47410728024e-02 8.22656900591e-02 7.75631573239e-02 + 6.64898780493e-02 5.78981879671e-02 4.92182336225e-02 4.09927131873e-02 3.35871770820e-02 2.71955666447e-02 + 2.18687619531e-02 1.75547637226e-02 1.41440793855e-02 1.15097880648e-02 9.53173661310e-03 8.10563303358e-03 + 7.14689010595e-03 6.59479473082e-03 6.41444748147e-03 6.59479473082e-03 7.14689010595e-03 8.10563303358e-03 + 9.53173661310e-03 1.15097880648e-02 1.41440793855e-02 1.75547637226e-02 2.18687619531e-02 2.71955666447e-02 + 3.35871770820e-02 4.09927131873e-02 4.92182336225e-02 5.78981879671e-02 6.64898780493e-02 7.43082663472e-02 + 8.06097207709e-02 8.47143937707e-02 8.61408122915e-02 8.47143937707e-02 8.06097207709e-02 7.43082663472e-02 + 6.05796981280e-02 5.18355302331e-02 4.33721592307e-02 3.56312088557e-02 2.88661050079e-02 2.31688478126e-02 + 1.85132658939e-02 1.48031251671e-02 1.19137265332e-02 9.71912104775e-03 8.10563303358e-03 6.97836085285e-03 + 6.26545793635e-03 5.92021996667e-03 5.92021996667e-03 6.26545793635e-03 6.97836085285e-03 8.10563303358e-03 + 9.71912104775e-03 1.19137265332e-02 1.48031251671e-02 1.85132658939e-02 2.31688478126e-02 2.88661050079e-02 + 3.56312088557e-02 4.33721592307e-02 5.18355302331e-02 6.05796981280e-02 6.89793219251e-02 7.62783857555e-02 + 8.16998180862e-02 8.45957298814e-02 8.45957298814e-02 8.16998180862e-02 7.62783857555e-02 6.89793219251e-02 + 5.45841783826e-02 4.60913389830e-02 3.81345549630e-02 3.10465495213e-02 2.49827563157e-02 1.99620901041e-02 + 1.59162612755e-02 1.27333396536e-02 1.02881382638e-02 8.46060891145e-03 7.14689010595e-03 6.26545793635e-03 + 5.75903981319e-03 5.59394004869e-03 5.75903981319e-03 6.26545793635e-03 7.14689010595e-03 8.46060891145e-03 + 1.02881382638e-02 1.27333396536e-02 1.59162612755e-02 1.99620901041e-02 2.49827563157e-02 3.10465495213e-02 + 3.81345549630e-02 4.60913389830e-02 5.45841783826e-02 6.30873277659e-02 7.09081350393e-02 7.72682499914e-02 + 8.14375530661e-02 8.28911486673e-02 8.14375530661e-02 7.72682499914e-02 7.09081350393e-02 6.30873277659e-02 + 4.91148354625e-02 4.10670403681e-02 3.37228748044e-02 2.73140021666e-02 2.19185274002e-02 1.75083321070e-02 + 1.39945083398e-02 1.12609832188e-02 9.18679124184e-03 7.66146344666e-03 6.59479473082e-03 5.92021996667e-03 + 5.59394004869e-03 5.59394004869e-03 5.92021996667e-03 6.59479473082e-03 7.66146344666e-03 9.18679124184e-03 + 1.12609832188e-02 1.39945083398e-02 1.75083321070e-02 2.19185274002e-02 2.73140021666e-02 3.37228748044e-02 + 4.10670403681e-02 4.91148354625e-02 5.74494623672e-02 6.54719417706e-02 7.24538631804e-02 7.76449689484e-02 + 8.04193974336e-02 8.04193974336e-02 7.76449689484e-02 7.24538631804e-02 6.54719417706e-02 5.74494623672e-02 + 4.44094609233e-02 3.68889471691e-02 3.01717861136e-02 2.44059448105e-02 1.96135589165e-02 1.57370100687e-02 + 1.26769712537e-02 1.03186231402e-02 8.54973346172e-03 7.27338017313e-03 6.41444748147e-03 5.92021996667e-03 + 5.75903981319e-03 5.92021996667e-03 6.41444748147e-03 7.27338017313e-03 8.54973346172e-03 1.03186231402e-02 + 1.26769712537e-02 1.57370100687e-02 1.96135589165e-02 2.44059448105e-02 3.01717861136e-02 3.68889471691e-02 + 4.44094609233e-02 5.24194501424e-02 6.04237632524e-02 6.77723654588e-02 7.37387049341e-02 7.76449689484e-02 + 7.90059272690e-02 7.76449689484e-02 7.37387049341e-02 6.77723654588e-02 6.04237632524e-02 5.24194501424e-02 + 4.05244812822e-02 3.35632692529e-02 2.74512061786e-02 2.22726314479e-02 1.80109897723e-02 1.45906790875e-02 + 1.19093466628e-02 9.85925299562e-03 8.34122341388e-03 7.27338017313e-03 6.59479473082e-03 6.26545793635e-03 + 6.26545793635e-03 6.59479473082e-03 7.27338017313e-03 8.34122341388e-03 9.85925299562e-03 1.19093466628e-02 + 1.45906790875e-02 1.80109897723e-02 2.22726314479e-02 2.74512061786e-02 3.35632692529e-02 4.05244812822e-02 + 4.81082332430e-02 5.59201471811e-02 6.34040688222e-02 6.98920688762e-02 7.47020608958e-02 7.72682499914e-02 + 7.72682499914e-02 7.47020608958e-02 6.98920688762e-02 6.34040688222e-02 5.59201471811e-02 4.81082332430e-02 + 3.74634706166e-02 3.10717223250e-02 2.55281844546e-02 2.08735527936e-02 1.70678712692e-02 1.40283418589e-02 + 1.16573532374e-02 9.85925299562e-03 8.54973346172e-03 7.66146344666e-03 7.14689010595e-03 6.97836085285e-03 + 7.14689010595e-03 7.66146344666e-03 8.54973346172e-03 9.85925299562e-03 1.16573532374e-02 1.40283418589e-02 + 1.70678712692e-02 2.08735527936e-02 2.55281844546e-02 3.10717223250e-02 3.74634706166e-02 4.45431970579e-02 + 5.20033431247e-02 5.93841418824e-02 6.61022866145e-02 7.15201290633e-02 7.50510418428e-02 7.62783857555e-02 + 7.50510418428e-02 7.15201290633e-02 6.61022866145e-02 5.93841418824e-02 5.20033431247e-02 4.45431970579e-02 + 3.52402742752e-02 2.94074293899e-02 2.43819637041e-02 2.01812628043e-02 1.67567114426e-02 1.40283418589e-02 + 1.19093466628e-02 1.03186231402e-02 9.18679124184e-03 8.46060891145e-03 8.10563303358e-03 8.10563303358e-03 + 8.46060891145e-03 9.18679124184e-03 1.03186231402e-02 1.19093466628e-02 1.40283418589e-02 1.67567114426e-02 + 2.01812628043e-02 2.43819637041e-02 2.94074293899e-02 3.52402742752e-02 4.17618689283e-02 4.87273692032e-02 + 5.57595749637e-02 6.23688231248e-02 6.80033074139e-02 7.21264918488e-02 7.43082663472e-02 7.43082663472e-02 + 7.21264918488e-02 6.80033074139e-02 6.23688231248e-02 5.57595749637e-02 4.87273692032e-02 4.17618689283e-02 + 3.38859304601e-02 2.85734174953e-02 2.40011711299e-02 2.01812628043e-02 1.70678712692e-02 1.45906790875e-02 + 1.26769712537e-02 1.12609832188e-02 1.02881382638e-02 9.71912104775e-03 9.53173661310e-03 9.71912104775e-03 + 1.02881382638e-02 1.12609832188e-02 1.26769712537e-02 1.45906790875e-02 1.70678712692e-02 2.01812628043e-02 + 2.40011711299e-02 2.85734174953e-02 3.38859304601e-02 3.98358227133e-02 4.62088704848e-02 5.26787408684e-02 + 5.88318176265e-02 6.42180018992e-02 6.84139609392e-02 7.10787520021e-02 7.19923628057e-02 7.10787520021e-02 + 6.84139609392e-02 6.42180018992e-02 5.88318176265e-02 5.26787408684e-02 4.62088704848e-02 3.98358227133e-02 + 3.34304675050e-02 2.85734174953e-02 2.43819637041e-02 2.08735527936e-02 1.80109897723e-02 1.57370100687e-02 + 1.39945083398e-02 1.27333396536e-02 1.19137265332e-02 1.15097880648e-02 1.15097880648e-02 1.19137265332e-02 + 1.27333396536e-02 1.39945083398e-02 1.57370100687e-02 1.80109897723e-02 2.08735527936e-02 2.43819637041e-02 + 2.85734174953e-02 3.34304675050e-02 3.88462459817e-02 4.46053414397e-02 5.03893328752e-02 5.58153453540e-02 + 6.05090723285e-02 6.41840706496e-02 6.66786802062e-02 6.79320857310e-02 6.79320857310e-02 6.66786802062e-02 + 6.41840706496e-02 6.05090723285e-02 5.58153453540e-02 5.03893328752e-02 4.46053414397e-02 3.88462459817e-02 + 3.38859304601e-02 2.94074293899e-02 2.55281844546e-02 2.22726314479e-02 1.96135589165e-02 1.75083321070e-02 + 1.59162612755e-02 1.48031251671e-02 1.41440793855e-02 1.39256808178e-02 1.41440793855e-02 1.48031251671e-02 + 1.59162612755e-02 1.75083321070e-02 1.96135589165e-02 2.22726314479e-02 2.55281844546e-02 2.94074293899e-02 + 3.38859304601e-02 3.88462459817e-02 4.40529168852e-02 4.91578982971e-02 5.37510492057e-02 5.74676014035e-02 + 6.01184381094e-02 6.17513938278e-02 6.25800698666e-02 6.28259810566e-02 6.25800698666e-02 6.17513938278e-02 + 6.01184381094e-02 5.74676014035e-02 5.37510492057e-02 4.91578982971e-02 4.40529168852e-02 3.88462459817e-02 + 3.52402742752e-02 3.10717223250e-02 2.74512061786e-02 2.44059448105e-02 2.19185274002e-02 1.99620901041e-02 + 1.85132658939e-02 1.75547637226e-02 1.70770073925e-02 1.70770073925e-02 1.75547637226e-02 1.85132658939e-02 + 1.99620901041e-02 2.19185274002e-02 2.44059448105e-02 2.74512061786e-02 3.10717223250e-02 3.52402742752e-02 + 3.98358227133e-02 4.46053414397e-02 4.91578982971e-02 5.30133769166e-02 5.57363453523e-02 5.71366804742e-02 + 5.74105494947e-02 5.70772559013e-02 5.67236888968e-02 5.67236888968e-02 5.70772559013e-02 5.74105494947e-02 + 5.71366804742e-02 5.57363453523e-02 5.30133769166e-02 4.91578982971e-02 4.46053414397e-02 3.98358227133e-02 + 3.74634706166e-02 3.35632692529e-02 3.01717861136e-02 2.73140021666e-02 2.49827563157e-02 2.31688478126e-02 + 2.18687619531e-02 2.10847229658e-02 2.08223402545e-02 2.10847229658e-02 2.18687619531e-02 2.31688478126e-02 + 2.49827563157e-02 2.73140021666e-02 3.01717861136e-02 3.35632692529e-02 3.74634706166e-02 4.17618689283e-02 + 4.62088704848e-02 5.03893328752e-02 5.37510492057e-02 5.57363453523e-02 5.60372557288e-02 5.48533676650e-02 + 5.29210396854e-02 5.12221625406e-02 5.05555186569e-02 5.12221625406e-02 5.29210396854e-02 5.48533676650e-02 + 5.60372557288e-02 5.57363453523e-02 5.37510492057e-02 5.03893328752e-02 4.62088704848e-02 4.17618689283e-02 + 4.05244812822e-02 3.68889471691e-02 3.37228748044e-02 3.10465495213e-02 2.88661050079e-02 2.71955666447e-02 + 2.60582031450e-02 2.54803066383e-02 2.54803066383e-02 2.60582031450e-02 2.71955666447e-02 2.88661050079e-02 + 3.10465495213e-02 3.37228748044e-02 3.68889471691e-02 4.05244812822e-02 4.45431970579e-02 4.87273692032e-02 + 5.26787408684e-02 5.58153453540e-02 5.74676014035e-02 5.71366804742e-02 5.48533676650e-02 5.13723037105e-02 + 4.79609401864e-02 4.58777097769e-02 4.58777097769e-02 4.79609401864e-02 5.13723037105e-02 5.48533676650e-02 + 5.71366804742e-02 5.74676014035e-02 5.58153453540e-02 5.26787408684e-02 4.87273692032e-02 4.45431970579e-02 + 4.44094609233e-02 4.10670403681e-02 3.81345549630e-02 3.56312088557e-02 3.35871770820e-02 3.20546920774e-02 + 3.10978190541e-02 3.07715106065e-02 3.10978190541e-02 3.20546920774e-02 3.35871770820e-02 3.56312088557e-02 + 3.81345549630e-02 4.10670403681e-02 4.44094609233e-02 4.81082332430e-02 5.20033431247e-02 5.57595749637e-02 + 5.88318176265e-02 6.05090723285e-02 6.01184381094e-02 5.74105494947e-02 5.29210396854e-02 4.79609401864e-02 + 4.41366450522e-02 4.27064575993e-02 4.41366450522e-02 4.79609401864e-02 5.29210396854e-02 5.74105494947e-02 + 6.01184381094e-02 6.05090723285e-02 5.88318176265e-02 5.57595749637e-02 5.20033431247e-02 4.81082332430e-02 + 4.91148354625e-02 4.60913389830e-02 4.33721592307e-02 4.09927131873e-02 3.90347179512e-02 3.76190713504e-02 + 3.68707660171e-02 3.68707660171e-02 3.76190713504e-02 3.90347179512e-02 4.09927131873e-02 4.33721592307e-02 + 4.60913389830e-02 4.91148354625e-02 5.24194501424e-02 5.59201471811e-02 5.93841418824e-02 6.23688231248e-02 + 6.42180018992e-02 6.41840706496e-02 6.17513938278e-02 5.70772559013e-02 5.12221625406e-02 4.58777097769e-02 + 4.27064575993e-02 4.27064575993e-02 4.58777097769e-02 5.12221625406e-02 5.70772559013e-02 6.17513938278e-02 + 6.41840706496e-02 6.42180018992e-02 6.23688231248e-02 5.93841418824e-02 5.59201471811e-02 5.24194501424e-02 + 5.45841783826e-02 5.18355302331e-02 4.92182336225e-02 4.68264624901e-02 4.48486167771e-02 4.35234290368e-02 + 4.30547772101e-02 4.35234290368e-02 4.48486167771e-02 4.68264624901e-02 4.92182336225e-02 5.18355302331e-02 + 5.45841783826e-02 5.74494623672e-02 6.04237632524e-02 6.34040688222e-02 6.61022866145e-02 6.80033074139e-02 + 6.84139609392e-02 6.66786802062e-02 6.25800698666e-02 5.67236888968e-02 5.05555186569e-02 4.58777097769e-02 + 4.41366450522e-02 4.58777097769e-02 5.05555186569e-02 5.67236888968e-02 6.25800698666e-02 6.66786802062e-02 + 6.84139609392e-02 6.80033074139e-02 6.61022866145e-02 6.34040688222e-02 6.04237632524e-02 5.74494623672e-02 + 6.05796981280e-02 5.78981879671e-02 5.51031089527e-02 5.24339557043e-02 5.02828320119e-02 4.90700187394e-02 + 4.90700187394e-02 5.02828320119e-02 5.24339557043e-02 5.51031089527e-02 5.78981879671e-02 6.05796981280e-02 + 6.30873277659e-02 6.54719417706e-02 6.77723654588e-02 6.98920688762e-02 7.15201290633e-02 7.21264918488e-02 + 7.10787520021e-02 6.79320857310e-02 6.28259810566e-02 5.67236888968e-02 5.12221625406e-02 4.79609401864e-02 + 4.79609401864e-02 5.12221625406e-02 5.67236888968e-02 6.28259810566e-02 6.79320857310e-02 7.10787520021e-02 + 7.21264918488e-02 7.15201290633e-02 6.98920688762e-02 6.77723654588e-02 6.54719417706e-02 6.30873277659e-02 + 6.64898780493e-02 6.33842515281e-02 5.98878714669e-02 5.65511919643e-02 5.41129564364e-02 5.32152215954e-02 + 5.41129564364e-02 5.65511919643e-02 5.98878714669e-02 6.33842515281e-02 6.64898780493e-02 6.89793219251e-02 + 7.09081350393e-02 7.24538631804e-02 7.37387049341e-02 7.47020608958e-02 7.50510418428e-02 7.43082663472e-02 + 7.19923628057e-02 6.79320857310e-02 6.25800698666e-02 5.70772559013e-02 5.29210396854e-02 5.13723037105e-02 + 5.29210396854e-02 5.70772559013e-02 6.25800698666e-02 6.79320857310e-02 7.19923628057e-02 7.43082663472e-02 + 7.50510418428e-02 7.47020608958e-02 7.37387049341e-02 7.24538631804e-02 7.09081350393e-02 6.89793219251e-02 + 7.10787520021e-02 6.66786802062e-02 6.17513938278e-02 5.74105494947e-02 5.48533676650e-02 5.48533676650e-02 + 5.74105494947e-02 6.17513938278e-02 6.66786802062e-02 7.10787520021e-02 7.43082663472e-02 7.62783857555e-02 + 7.72682499914e-02 7.76449689484e-02 7.76449689484e-02 7.72682499914e-02 7.62783857555e-02 7.43082663472e-02 + 7.10787520021e-02 6.66786802062e-02 6.17513938278e-02 5.74105494947e-02 5.48533676650e-02 5.48533676650e-02 + 5.74105494947e-02 6.17513938278e-02 6.66786802062e-02 7.10787520021e-02 7.43082663472e-02 7.62783857555e-02 + 7.72682499914e-02 7.76449689484e-02 7.76449689484e-02 7.72682499914e-02 7.62783857555e-02 7.43082663472e-02 + 7.23556493700e-02 6.55787911247e-02 5.86758842735e-02 5.34983990182e-02 5.15765048907e-02 5.34983990182e-02 + 5.86758842735e-02 6.55787911247e-02 7.23556493700e-02 7.75631573239e-02 8.06097207709e-02 8.16998180862e-02 + 8.14375530661e-02 8.04193974336e-02 7.90059272690e-02 7.72682499914e-02 7.50510418428e-02 7.21264918488e-02 + 6.84139609392e-02 6.41840706496e-02 6.01184381094e-02 5.71366804742e-02 5.60372557288e-02 5.71366804742e-02 + 6.01184381094e-02 6.41840706496e-02 6.84139609392e-02 7.21264918488e-02 7.50510418428e-02 7.72682499914e-02 + 7.90059272690e-02 8.04193974336e-02 8.14375530661e-02 8.16998180862e-02 8.06097207709e-02 7.75631573239e-02 + 6.81077724909e-02 5.83777841365e-02 4.98718618187e-02 4.49279278957e-02 4.49279278957e-02 4.98718618187e-02 + 5.83777841365e-02 6.81077724909e-02 7.66122811094e-02 8.22656900591e-02 8.47143937707e-02 8.45957298814e-02 + 8.28911486673e-02 8.04193974336e-02 7.76449689484e-02 7.47020608958e-02 7.15201290633e-02 6.80033074139e-02 + 6.42180018992e-02 6.05090723285e-02 5.74676014035e-02 5.57363453523e-02 5.57363453523e-02 5.74676014035e-02 + 6.05090723285e-02 6.42180018992e-02 6.80033074139e-02 7.15201290633e-02 7.47020608958e-02 7.76449689484e-02 + 8.04193974336e-02 8.28911486673e-02 8.45957298814e-02 8.47143937707e-02 8.22656900591e-02 7.66122811094e-02 + 5.74463352203e-02 4.56222411881e-02 3.71417160544e-02 3.40771392673e-02 3.71417160544e-02 4.56222411881e-02 + 5.74463352203e-02 6.96179820017e-02 7.92532152557e-02 8.47410728024e-02 8.61408122915e-02 8.45957298814e-02 + 8.14375530661e-02 7.76449689484e-02 7.37387049341e-02 6.98920688762e-02 6.61022866145e-02 6.23688231248e-02 + 5.88318176265e-02 5.58153453540e-02 5.37510492057e-02 5.30133769166e-02 5.37510492057e-02 5.58153453540e-02 + 5.88318176265e-02 6.23688231248e-02 6.61022866145e-02 6.98920688762e-02 7.37387049341e-02 7.76449689484e-02 + 8.14375530661e-02 8.45957298814e-02 8.61408122915e-02 8.47410728024e-02 7.92532152557e-02 6.96179820017e-02 + 4.22847991283e-02 3.06594619284e-02 2.42761411551e-02 2.42761411551e-02 3.06594619284e-02 4.22847991283e-02 + 5.66663226477e-02 7.03323963389e-02 8.01500628124e-02 8.47410728024e-02 8.47143937707e-02 8.16998180862e-02 + 7.72682499914e-02 7.24538631804e-02 6.77723654588e-02 6.34040688222e-02 5.93841418824e-02 5.57595749637e-02 + 5.26787408684e-02 5.03893328752e-02 4.91578982971e-02 4.91578982971e-02 5.03893328752e-02 5.26787408684e-02 + 5.57595749637e-02 5.93841418824e-02 6.34040688222e-02 6.77723654588e-02 7.24538631804e-02 7.72682499914e-02 + 8.16998180862e-02 8.47143937707e-02 8.47410728024e-02 8.01500628124e-02 7.03323963389e-02 5.66663226477e-02 + 2.67478820537e-02 1.76819501362e-02 1.45732066269e-02 1.76819501362e-02 2.67478820537e-02 4.05694134160e-02 + 5.63846435627e-02 7.03323963389e-02 7.92532152557e-02 8.22656900591e-02 8.06097207709e-02 7.62783857555e-02 + 7.09081350393e-02 6.54719417706e-02 6.04237632524e-02 5.59201471811e-02 5.20033431247e-02 4.87273692032e-02 + 4.62088704848e-02 4.46053414397e-02 4.40529168852e-02 4.46053414397e-02 4.62088704848e-02 4.87273692032e-02 + 5.20033431247e-02 5.59201471811e-02 6.04237632524e-02 6.54719417706e-02 7.09081350393e-02 7.62783857555e-02 + 8.06097207709e-02 8.22656900591e-02 7.92532152557e-02 7.03323963389e-02 5.63846435627e-02 4.05694134160e-02 + 1.46090879135e-02 9.13060134292e-03 9.13060134292e-03 1.46090879135e-02 2.54935088837e-02 4.05694134160e-02 + 5.66663226477e-02 6.96179820017e-02 7.66122811094e-02 7.75631573239e-02 7.43082663472e-02 6.89793219251e-02 + 6.30873277659e-02 5.74494623672e-02 5.24194501424e-02 4.81082332430e-02 4.45431970579e-02 4.17618689283e-02 + 3.98358227133e-02 3.88462459817e-02 3.88462459817e-02 3.98358227133e-02 4.17618689283e-02 4.45431970579e-02 + 4.81082332430e-02 5.24194501424e-02 5.74494623672e-02 6.30873277659e-02 6.89793219251e-02 7.43082663472e-02 + 7.75631573239e-02 7.66122811094e-02 6.96179820017e-02 5.66663226477e-02 4.05694134160e-02 2.54935088837e-02 + 2.64004483879e-03 2.64004483879e-03 6.32692063078e-03 1.46090879135e-02 2.77489957459e-02 4.35588929466e-02 + 5.76200322747e-02 6.60504635380e-02 6.79320857310e-02 6.49555724266e-02 5.94941697642e-02 5.33236907840e-02 + 4.74313143781e-02 4.22610610741e-02 3.79563421300e-02 3.45282284639e-02 3.19590319446e-02 3.02423286704e-02 + 2.93819034216e-02 2.93819034216e-02 3.02423286704e-02 3.19590319446e-02 3.45282284639e-02 3.79563421300e-02 + 4.22610610741e-02 4.74313143781e-02 5.33236907840e-02 5.94941697642e-02 6.49555724266e-02 6.79320857310e-02 + 6.60504635380e-02 5.76200322747e-02 4.35588929466e-02 2.77489957459e-02 1.46090879135e-02 6.32692063078e-03 + 2.64004483879e-03 4.10298626852e-03 9.13060134292e-03 1.87771308641e-02 3.25101129901e-02 4.70389926376e-02 + 5.79103146750e-02 6.25800698666e-02 6.15702941626e-02 5.70612480291e-02 5.11403130173e-02 4.51323632879e-02 + 3.97029159910e-02 3.51127517762e-02 3.14127386696e-02 2.85763383726e-02 2.65706573512e-02 2.53749373622e-02 + 2.49776956914e-02 2.53749373622e-02 2.65706573512e-02 2.85763383726e-02 3.14127386696e-02 3.51127517762e-02 + 3.97029159910e-02 4.51323632879e-02 5.11403130173e-02 5.70612480291e-02 6.15702941626e-02 6.25800698666e-02 + 5.79103146750e-02 4.70389926376e-02 3.25101129901e-02 1.87771308641e-02 9.13060134292e-03 4.10298626852e-03 + 6.32692063078e-03 9.13060134292e-03 1.56860392578e-02 2.63856510811e-02 3.93541671489e-02 5.07010770424e-02 + 5.70772559013e-02 5.77843769256e-02 5.43692149489e-02 4.89192305177e-02 4.29832635915e-02 3.74259862301e-02 + 3.26341221073e-02 2.87187367840e-02 2.56635113913e-02 2.34202555044e-02 2.19482820950e-02 2.12198093897e-02 + 2.12198093897e-02 2.19482820950e-02 2.34202555044e-02 2.56635113913e-02 2.87187367840e-02 3.26341221073e-02 + 3.74259862301e-02 4.29832635915e-02 4.89192305177e-02 5.43692149489e-02 5.77843769256e-02 5.70772559013e-02 + 5.07010770424e-02 3.93541671489e-02 2.63856510811e-02 1.56860392578e-02 9.13060134292e-03 6.32692063078e-03 + 1.46090879135e-02 1.87771308641e-02 2.63856510811e-02 3.65582592974e-02 4.64751950426e-02 5.29210396854e-02 + 5.44475263977e-02 5.18281863755e-02 4.68401774785e-02 4.10571769449e-02 3.54595415232e-02 3.05340710560e-02 + 2.64534808200e-02 2.32231030162e-02 2.07887392229e-02 1.90940368490e-02 1.80960146721e-02 1.77666865554e-02 + 1.80960146721e-02 1.90940368490e-02 2.07887392229e-02 2.32231030162e-02 2.64534808200e-02 3.05340710560e-02 + 3.54595415232e-02 4.10571769449e-02 4.68401774785e-02 5.18281863755e-02 5.44475263977e-02 5.29210396854e-02 + 4.64751950426e-02 3.65582592974e-02 2.63856510811e-02 1.87771308641e-02 1.46090879135e-02 1.33581335706e-02 + 2.77489957459e-02 3.25101129901e-02 3.93541671489e-02 4.64751950426e-02 5.13723037105e-02 5.24797871309e-02 + 4.99825941802e-02 4.51877782102e-02 3.94908104948e-02 3.38635928392e-02 2.88348357920e-02 2.46187421852e-02 + 2.12421582644e-02 1.86504890434e-02 1.67754563001e-02 1.55601992220e-02 1.49636867906e-02 1.49636867906e-02 + 1.55601992220e-02 1.67754563001e-02 1.86504890434e-02 2.12421582644e-02 2.46187421852e-02 2.88348357920e-02 + 3.38635928392e-02 3.94908104948e-02 4.51877782102e-02 4.99825941802e-02 5.24797871309e-02 5.13723037105e-02 + 4.64751950426e-02 3.93541671489e-02 3.25101129901e-02 2.77489957459e-02 2.54935088837e-02 2.54935088837e-02 + 4.35588929466e-02 4.70389926376e-02 5.07010770424e-02 5.29210396854e-02 5.24797871309e-02 4.93048229800e-02 + 4.42634768270e-02 3.84534160516e-02 3.27229087590e-02 2.75721078901e-02 2.32217587400e-02 1.97084075068e-02 + 1.69767793036e-02 1.49488960464e-02 1.35553259639e-02 1.27424344623e-02 1.24755048074e-02 1.27424344623e-02 + 1.35553259639e-02 1.49488960464e-02 1.69767793036e-02 1.97084075068e-02 2.32217587400e-02 2.75721078901e-02 + 3.27229087590e-02 3.84534160516e-02 4.42634768270e-02 4.93048229800e-02 5.24797871309e-02 5.29210396854e-02 + 5.07010770424e-02 4.70389926376e-02 4.35588929466e-02 4.13123485649e-02 4.05694134160e-02 4.13123485649e-02 + 5.76200322747e-02 5.79103146750e-02 5.70772559013e-02 5.44475263977e-02 4.99825941802e-02 4.42634768270e-02 + 3.80886538087e-02 3.21243272248e-02 2.67889182249e-02 2.22755921268e-02 1.86137801375e-02 1.57423428102e-02 + 1.35733603577e-02 1.20255038743e-02 1.10330000246e-02 1.05489279259e-02 1.05489279259e-02 1.10330000246e-02 + 1.20255038743e-02 1.35733603577e-02 1.57423428102e-02 1.86137801375e-02 2.22755921268e-02 2.67889182249e-02 + 3.21243272248e-02 3.80886538087e-02 4.42634768270e-02 4.99825941802e-02 5.44475263977e-02 5.70772559013e-02 + 5.79103146750e-02 5.76200322747e-02 5.70355201353e-02 5.66663226477e-02 5.66663226477e-02 5.70355201353e-02 + 6.60504635380e-02 6.25800698666e-02 5.77843769256e-02 5.18281863755e-02 4.51877782102e-02 3.84534160516e-02 + 3.21243272248e-02 2.65227612839e-02 2.17964249596e-02 1.79555609317e-02 1.49279448733e-02 1.26143883181e-02 + 1.09215936737e-02 9.77183223433e-03 9.10613117226e-03 8.88822832040e-03 9.10613117226e-03 9.77183223433e-03 + 1.09215936737e-02 1.26143883181e-02 1.49279448733e-02 1.79555609317e-02 2.17964249596e-02 2.65227612839e-02 + 3.21243272248e-02 3.84534160516e-02 4.51877782102e-02 5.18281863755e-02 5.77843769256e-02 6.25800698666e-02 + 6.60504635380e-02 6.83266751007e-02 6.96179820017e-02 7.00400365127e-02 6.96179820017e-02 6.83266751007e-02 + 6.79320857310e-02 6.15702941626e-02 5.43692149489e-02 4.68401774785e-02 3.94908104948e-02 3.27229087590e-02 + 2.67889182249e-02 2.17964249596e-02 1.77355963866e-02 1.45226393383e-02 1.20475550421e-02 1.02054916185e-02 + 8.90705726329e-03 8.08133005705e-03 7.68014935330e-03 7.68014935330e-03 8.08133005705e-03 8.90705726329e-03 + 1.02054916185e-02 1.20475550421e-02 1.45226393383e-02 1.77355963866e-02 2.17964249596e-02 2.67889182249e-02 + 3.27229087590e-02 3.94908104948e-02 4.68401774785e-02 5.43692149489e-02 6.15702941626e-02 6.79320857310e-02 + 7.30418134594e-02 7.66122811094e-02 7.84511058955e-02 7.84511058955e-02 7.66122811094e-02 7.30418134594e-02 + 6.49555724266e-02 5.70612480291e-02 4.89192305177e-02 4.10571769449e-02 3.38635928392e-02 2.75721078901e-02 + 2.22755921268e-02 1.79555609317e-02 1.45226393383e-02 1.18598583649e-02 9.85294674885e-03 8.40200942373e-03 + 7.42492384580e-03 6.86170422323e-03 6.67761981445e-03 6.86170422323e-03 7.42492384580e-03 8.40200942373e-03 + 9.85294674885e-03 1.18598583649e-02 1.45226393383e-02 1.79555609317e-02 2.22755921268e-02 2.75721078901e-02 + 3.38635928392e-02 4.10571769449e-02 4.89192305177e-02 5.70612480291e-02 6.49555724266e-02 7.19923628057e-02 + 7.75631573239e-02 8.11458755837e-02 8.23828782457e-02 8.11458755837e-02 7.75631573239e-02 7.19923628057e-02 + 5.94941697642e-02 5.11403130173e-02 4.29832635915e-02 3.54595415232e-02 2.88348357920e-02 2.32217587400e-02 + 1.86137801375e-02 1.49279448733e-02 1.20475550421e-02 9.85294674885e-03 8.23585736203e-03 7.10459522193e-03 + 6.38840491477e-03 6.04118457084e-03 6.04118457084e-03 6.38840491477e-03 7.10459522193e-03 8.23585736203e-03 + 9.85294674885e-03 1.20475550421e-02 1.49279448733e-02 1.86137801375e-02 2.32217587400e-02 2.88348357920e-02 + 3.54595415232e-02 4.29832635915e-02 5.11403130173e-02 5.94941697642e-02 6.74494907981e-02 7.43082663472e-02 + 7.93709590427e-02 8.20645507484e-02 8.20645507484e-02 7.93709590427e-02 7.43082663472e-02 6.74494907981e-02 + 5.33236907840e-02 4.51323632879e-02 3.74259862301e-02 3.05340710560e-02 2.46187421852e-02 1.97084075068e-02 + 1.57423428102e-02 1.26143883181e-02 1.02054916185e-02 8.40200942373e-03 7.10459522193e-03 6.23361812745e-03 + 5.73268604942e-03 5.56920678348e-03 5.73268604942e-03 6.23361812745e-03 7.10459522193e-03 8.40200942373e-03 + 1.02054916185e-02 1.26143883181e-02 1.57423428102e-02 1.97084075068e-02 2.46187421852e-02 3.05340710560e-02 + 3.74259862301e-02 4.51323632879e-02 5.33236907840e-02 6.14923433640e-02 6.89793219251e-02 7.50510418428e-02 + 7.90236437036e-02 8.04073084192e-02 7.90236437036e-02 7.50510418428e-02 6.89793219251e-02 6.14923433640e-02 + 4.74313143781e-02 3.97029159910e-02 3.26341221073e-02 2.64534808200e-02 2.12421582644e-02 1.69767793036e-02 + 1.35733603577e-02 1.09215936737e-02 8.90705726329e-03 7.42492384580e-03 6.38840491477e-03 5.73268604942e-03 + 5.41531278039e-03 5.41531278039e-03 5.73268604942e-03 6.38840491477e-03 7.42492384580e-03 8.90705726329e-03 + 1.09215936737e-02 1.35733603577e-02 1.69767793036e-02 2.12421582644e-02 2.64534808200e-02 3.26341221073e-02 + 3.97029159910e-02 4.74313143781e-02 5.54167137150e-02 6.30873277659e-02 6.97522426294e-02 7.47020608958e-02 + 7.73458021392e-02 7.73458021392e-02 7.47020608958e-02 6.97522426294e-02 6.30873277659e-02 5.54167137150e-02 + 4.22610610741e-02 3.51127517762e-02 2.87187367840e-02 2.32231030162e-02 1.86504890434e-02 1.49488960464e-02 + 1.20255038743e-02 9.77183223433e-03 8.08133005705e-03 6.86170422323e-03 6.04118457084e-03 5.56920678348e-03 + 5.41531278039e-03 5.56920678348e-03 6.04118457084e-03 6.86170422323e-03 8.08133005705e-03 9.77183223433e-03 + 1.20255038743e-02 1.49488960464e-02 1.86504890434e-02 2.32231030162e-02 2.87187367840e-02 3.51127517762e-02 + 4.22610610741e-02 4.98633146719e-02 5.74494623672e-02 6.44054743742e-02 7.00474085615e-02 7.37387049341e-02 + 7.50243106749e-02 7.37387049341e-02 7.00474085615e-02 6.44054743742e-02 5.74494623672e-02 4.98633146719e-02 + 3.79563421300e-02 3.14127386696e-02 2.56635113913e-02 2.07887392229e-02 1.67754563001e-02 1.35553259639e-02 + 1.10330000246e-02 9.10613117226e-03 7.68014935330e-03 6.67761981445e-03 6.04118457084e-03 5.73268604942e-03 + 5.73268604942e-03 6.04118457084e-03 6.67761981445e-03 7.68014935330e-03 9.10613117226e-03 1.10330000246e-02 + 1.35553259639e-02 1.67754563001e-02 2.07887392229e-02 2.56635113913e-02 3.14127386696e-02 3.79563421300e-02 + 4.50819394473e-02 5.24194501424e-02 5.94462807362e-02 6.55352798807e-02 7.00474085615e-02 7.24538631804e-02 + 7.24538631804e-02 7.00474085615e-02 6.55352798807e-02 5.94462807362e-02 5.24194501424e-02 4.50819394473e-02 + 3.45282284639e-02 2.85763383726e-02 2.34202555044e-02 1.90940368490e-02 1.55601992220e-02 1.27424344623e-02 + 1.05489279259e-02 8.88822832040e-03 7.68014935330e-03 6.86170422323e-03 6.38840491477e-03 6.23361812745e-03 + 6.38840491477e-03 6.86170422323e-03 7.68014935330e-03 8.88822832040e-03 1.05489279259e-02 1.27424344623e-02 + 1.55601992220e-02 1.90940368490e-02 2.34202555044e-02 2.85763383726e-02 3.45282284639e-02 4.11328816616e-02 + 4.81082332430e-02 5.50251512552e-02 6.13334872428e-02 6.64284767715e-02 6.97522426294e-02 7.09081350393e-02 + 6.97522426294e-02 6.64284767715e-02 6.13334872428e-02 5.50251512552e-02 4.81082332430e-02 4.11328816616e-02 + 3.19590319446e-02 2.65706573512e-02 2.19482820950e-02 1.80960146721e-02 1.49636867906e-02 1.24755048074e-02 + 1.05489279259e-02 9.10613117226e-03 8.08133005705e-03 7.42492384580e-03 7.10459522193e-03 7.10459522193e-03 + 7.42492384580e-03 8.08133005705e-03 9.10613117226e-03 1.05489279259e-02 1.24755048074e-02 1.49636867906e-02 + 1.80960146721e-02 2.19482820950e-02 2.65706573512e-02 3.19590319446e-02 3.80204685260e-02 4.45431970579e-02 + 5.11831265828e-02 5.74762428735e-02 6.28828729732e-02 6.68641206041e-02 6.89793219251e-02 6.89793219251e-02 + 6.68641206041e-02 6.28828729732e-02 5.74762428735e-02 5.11831265828e-02 4.45431970579e-02 3.80204685260e-02 + 3.02423286704e-02 2.53749373622e-02 2.12198093897e-02 1.77666865554e-02 1.49636867906e-02 1.27424344623e-02 + 1.10330000246e-02 9.77183223433e-03 8.90705726329e-03 8.40200942373e-03 8.23585736203e-03 8.40200942373e-03 + 8.90705726329e-03 9.77183223433e-03 1.10330000246e-02 1.27424344623e-02 1.49636867906e-02 1.77666865554e-02 + 2.12198093897e-02 2.53749373622e-02 3.02423286704e-02 3.57591480990e-02 4.17618689283e-02 4.79731106469e-02 + 5.40097122002e-02 5.94150808572e-02 6.37149803432e-02 6.64898780493e-02 6.74494907981e-02 6.64898780493e-02 + 6.37149803432e-02 5.94150808572e-02 5.40097122002e-02 4.79731106469e-02 4.17618689283e-02 3.57591480990e-02 + 2.93819034216e-02 2.49776956914e-02 2.12198093897e-02 1.80960146721e-02 1.55601992220e-02 1.35553259639e-02 + 1.20255038743e-02 1.09215936737e-02 1.02054916185e-02 9.85294674885e-03 9.85294674885e-03 1.02054916185e-02 + 1.09215936737e-02 1.20255038743e-02 1.35553259639e-02 1.55601992220e-02 1.80960146721e-02 2.12198093897e-02 + 2.49776956914e-02 2.93819034216e-02 3.43811654173e-02 3.98358227133e-02 4.55081727847e-02 5.10737783335e-02 + 5.61547897924e-02 6.03694423859e-02 6.33842515281e-02 6.49555724266e-02 6.49555724266e-02 6.33842515281e-02 + 6.03694423859e-02 5.61547897924e-02 5.10737783335e-02 4.55081727847e-02 3.98358227133e-02 3.43811654173e-02 + 2.93819034216e-02 2.53749373622e-02 2.19482820950e-02 1.90940368490e-02 1.67754563001e-02 1.49488960464e-02 + 1.35733603577e-02 1.26143883181e-02 1.20475550421e-02 1.18598583649e-02 1.20475550421e-02 1.26143883181e-02 + 1.35733603577e-02 1.49488960464e-02 1.67754563001e-02 1.90940368490e-02 2.19482820950e-02 2.53749373622e-02 + 2.93819034216e-02 3.39176800802e-02 3.88462459817e-02 4.39402098517e-02 4.88987422193e-02 5.33923081840e-02 + 5.71251588417e-02 5.98878714669e-02 6.15702941626e-02 6.21334821617e-02 6.15702941626e-02 5.98878714669e-02 + 5.71251588417e-02 5.33923081840e-02 4.88987422193e-02 4.39402098517e-02 3.88462459817e-02 3.39176800802e-02 + 3.02423286704e-02 2.65706573512e-02 2.34202555044e-02 2.07887392229e-02 1.86504890434e-02 1.69767793036e-02 + 1.57423428102e-02 1.49279448733e-02 1.45226393383e-02 1.45226393383e-02 1.49279448733e-02 1.57423428102e-02 + 1.69767793036e-02 1.86504890434e-02 2.07887392229e-02 2.34202555044e-02 2.65706573512e-02 3.02423286704e-02 + 3.43811654173e-02 3.88462459817e-02 4.34003076052e-02 4.77311231410e-02 5.15101646150e-02 5.44829894560e-02 + 5.65511919643e-02 5.77843769256e-02 5.83399236929e-02 5.83399236929e-02 5.77843769256e-02 5.65511919643e-02 + 5.44829894560e-02 5.15101646150e-02 4.77311231410e-02 4.34003076052e-02 3.88462459817e-02 3.43811654173e-02 + 3.19590319446e-02 2.85763383726e-02 2.56635113913e-02 2.32231030162e-02 2.12421582644e-02 1.97084075068e-02 + 1.86137801375e-02 1.79555609317e-02 1.77355963866e-02 1.79555609317e-02 1.86137801375e-02 1.97084075068e-02 + 2.12421582644e-02 2.32231030162e-02 2.56635113913e-02 2.85763383726e-02 3.19590319446e-02 3.57591480990e-02 + 3.98358227133e-02 4.39402098517e-02 4.77311231410e-02 5.08390344517e-02 5.29846351657e-02 5.41129564364e-02 + 5.44475263977e-02 5.43925934286e-02 5.43239294918e-02 5.43925934286e-02 5.44475263977e-02 5.41129564364e-02 + 5.29846351657e-02 5.08390344517e-02 4.77311231410e-02 4.39402098517e-02 3.98358227133e-02 3.57591480990e-02 + 3.45282284639e-02 3.14127386696e-02 2.87187367840e-02 2.64534808200e-02 2.46187421852e-02 2.32217587400e-02 + 2.22755921268e-02 2.17964249596e-02 2.17964249596e-02 2.22755921268e-02 2.32217587400e-02 2.46187421852e-02 + 2.64534808200e-02 2.87187367840e-02 3.14127386696e-02 3.45282284639e-02 3.80204685260e-02 4.17618689283e-02 + 4.55081727847e-02 4.88987422193e-02 5.15101646150e-02 5.29846351657e-02 5.32152215954e-02 5.24797871309e-02 + 5.13869204668e-02 5.06194135765e-02 5.06194135765e-02 5.13869204668e-02 5.24797871309e-02 5.32152215954e-02 + 5.29846351657e-02 5.15101646150e-02 4.88987422193e-02 4.55081727847e-02 4.17618689283e-02 3.80204685260e-02 + 3.79563421300e-02 3.51127517762e-02 3.26341221073e-02 3.05340710560e-02 2.88348357920e-02 2.75721078901e-02 + 2.67889182249e-02 2.65227612839e-02 2.67889182249e-02 2.75721078901e-02 2.88348357920e-02 3.05340710560e-02 + 3.26341221073e-02 3.51127517762e-02 3.79563421300e-02 4.11328816616e-02 4.45431970579e-02 4.79731106469e-02 + 5.10737783335e-02 5.33923081840e-02 5.44829894560e-02 5.41129564364e-02 5.24797871309e-02 5.02620593726e-02 + 4.83941231678e-02 4.76689314688e-02 4.83941231678e-02 5.02620593726e-02 5.24797871309e-02 5.41129564364e-02 + 5.44829894560e-02 5.33923081840e-02 5.10737783335e-02 4.79731106469e-02 4.45431970579e-02 4.11328816616e-02 + 4.22610610741e-02 3.97029159910e-02 3.74259862301e-02 3.54595415232e-02 3.38635928392e-02 3.27229087590e-02 + 3.21243272248e-02 3.21243272248e-02 3.27229087590e-02 3.38635928392e-02 3.54595415232e-02 3.74259862301e-02 + 3.97029159910e-02 4.22610610741e-02 4.50819394473e-02 4.81082332430e-02 5.11831265828e-02 5.40097122002e-02 + 5.61547897924e-02 5.71251588417e-02 5.65511919643e-02 5.44475263977e-02 5.13869204668e-02 4.83941231678e-02 + 4.65545163206e-02 4.65545163206e-02 4.83941231678e-02 5.13869204668e-02 5.44475263977e-02 5.65511919643e-02 + 5.71251588417e-02 5.61547897924e-02 5.40097122002e-02 5.11831265828e-02 4.81082332430e-02 4.50819394473e-02 + 4.74313143781e-02 4.51323632879e-02 4.29832635915e-02 4.10571769449e-02 3.94908104948e-02 3.84534160516e-02 + 3.80886538087e-02 3.84534160516e-02 3.94908104948e-02 4.10571769449e-02 4.29832635915e-02 4.51323632879e-02 + 4.74313143781e-02 4.98633146719e-02 5.24194501424e-02 5.50251512552e-02 5.74762428735e-02 5.94150808572e-02 + 6.03694423859e-02 5.98878714669e-02 5.77843769256e-02 5.43925934286e-02 5.06194135765e-02 4.76689314688e-02 + 4.65545163206e-02 4.76689314688e-02 5.06194135765e-02 5.43925934286e-02 5.77843769256e-02 5.98878714669e-02 + 6.03694423859e-02 5.94150808572e-02 5.74762428735e-02 5.50251512552e-02 5.24194501424e-02 4.98633146719e-02 + 5.33236907840e-02 5.11403130173e-02 4.89192305177e-02 4.68401774785e-02 4.51877782102e-02 4.42634768270e-02 + 4.42634768270e-02 4.51877782102e-02 4.68401774785e-02 4.89192305177e-02 5.11403130173e-02 5.33236907840e-02 + 5.54167137150e-02 5.74494623672e-02 5.94462807362e-02 6.13334872428e-02 6.28828729732e-02 6.37149803432e-02 + 6.33842515281e-02 6.15702941626e-02 5.83399236929e-02 5.43239294918e-02 5.06194135765e-02 4.83941231678e-02 + 4.83941231678e-02 5.06194135765e-02 5.43239294918e-02 5.83399236929e-02 6.15702941626e-02 6.33842515281e-02 + 6.37149803432e-02 6.28828729732e-02 6.13334872428e-02 5.94462807362e-02 5.74494623672e-02 5.54167137150e-02 + 5.94941697642e-02 5.70612480291e-02 5.43692149489e-02 5.18281863755e-02 4.99825941802e-02 4.93048229800e-02 + 4.99825941802e-02 5.18281863755e-02 5.43692149489e-02 5.70612480291e-02 5.94941697642e-02 6.14923433640e-02 + 6.30873277659e-02 6.44054743742e-02 6.55352798807e-02 6.64284767715e-02 6.68641206041e-02 6.64898780493e-02 + 6.49555724266e-02 6.21334821617e-02 5.83399236929e-02 5.43925934286e-02 5.13869204668e-02 5.02620593726e-02 + 5.13869204668e-02 5.43925934286e-02 5.83399236929e-02 6.21334821617e-02 6.49555724266e-02 6.64898780493e-02 + 6.68641206041e-02 6.64284767715e-02 6.55352798807e-02 6.44054743742e-02 6.30873277659e-02 6.14923433640e-02 + 6.49555724266e-02 6.15702941626e-02 5.77843769256e-02 5.44475263977e-02 5.24797871309e-02 5.24797871309e-02 + 5.44475263977e-02 5.77843769256e-02 6.15702941626e-02 6.49555724266e-02 6.74494907981e-02 6.89793219251e-02 + 6.97522426294e-02 7.00474085615e-02 7.00474085615e-02 6.97522426294e-02 6.89793219251e-02 6.74494907981e-02 + 6.49555724266e-02 6.15702941626e-02 5.77843769256e-02 5.44475263977e-02 5.24797871309e-02 5.24797871309e-02 + 5.44475263977e-02 5.77843769256e-02 6.15702941626e-02 6.49555724266e-02 6.74494907981e-02 6.89793219251e-02 + 6.97522426294e-02 7.00474085615e-02 7.00474085615e-02 6.97522426294e-02 6.89793219251e-02 6.74494907981e-02 + 6.79320857310e-02 6.25800698666e-02 5.70772559013e-02 5.29210396854e-02 5.13723037105e-02 5.29210396854e-02 + 5.70772559013e-02 6.25800698666e-02 6.79320857310e-02 7.19923628057e-02 7.43082663472e-02 7.50510418428e-02 + 7.47020608958e-02 7.37387049341e-02 7.24538631804e-02 7.09081350393e-02 6.89793219251e-02 6.64898780493e-02 + 6.33842515281e-02 5.98878714669e-02 5.65511919643e-02 5.41129564364e-02 5.32152215954e-02 5.41129564364e-02 + 5.65511919643e-02 5.98878714669e-02 6.33842515281e-02 6.64898780493e-02 6.89793219251e-02 7.09081350393e-02 + 7.24538631804e-02 7.37387049341e-02 7.47020608958e-02 7.50510418428e-02 7.43082663472e-02 7.19923628057e-02 + 6.60504635380e-02 5.79103146750e-02 5.07010770424e-02 4.64751950426e-02 4.64751950426e-02 5.07010770424e-02 + 5.79103146750e-02 6.60504635380e-02 7.30418134594e-02 7.75631573239e-02 7.93709590427e-02 7.90236437036e-02 + 7.73458021392e-02 7.50243106749e-02 7.24538631804e-02 6.97522426294e-02 6.68641206041e-02 6.37149803432e-02 + 6.03694423859e-02 5.71251588417e-02 5.44829894560e-02 5.29846351657e-02 5.29846351657e-02 5.44829894560e-02 + 5.71251588417e-02 6.03694423859e-02 6.37149803432e-02 6.68641206041e-02 6.97522426294e-02 7.24538631804e-02 + 7.50243106749e-02 7.73458021392e-02 7.90236437036e-02 7.93709590427e-02 7.75631573239e-02 7.30418134594e-02 + 5.76200322747e-02 4.70389926376e-02 3.93541671489e-02 3.65582592974e-02 3.93541671489e-02 4.70389926376e-02 + 5.76200322747e-02 6.83266751007e-02 7.66122811094e-02 8.11458755837e-02 8.20645507484e-02 8.04073084192e-02 + 7.73458021392e-02 7.37387049341e-02 7.00474085615e-02 6.64284767715e-02 6.28828729732e-02 5.94150808572e-02 + 5.61547897924e-02 5.33923081840e-02 5.15101646150e-02 5.08390344517e-02 5.15101646150e-02 5.33923081840e-02 + 5.61547897924e-02 5.94150808572e-02 6.28828729732e-02 6.64284767715e-02 7.00474085615e-02 7.37387049341e-02 + 7.73458021392e-02 8.04073084192e-02 8.20645507484e-02 8.11458755837e-02 7.66122811094e-02 6.83266751007e-02 + 4.35588929466e-02 3.25101129901e-02 2.63856510811e-02 2.63856510811e-02 3.25101129901e-02 4.35588929466e-02 + 5.70355201353e-02 6.96179820017e-02 7.84511058955e-02 8.23828782457e-02 8.20645507484e-02 7.90236437036e-02 + 7.47020608958e-02 7.00474085615e-02 6.55352798807e-02 6.13334872428e-02 5.74762428735e-02 5.40097122002e-02 + 5.10737783335e-02 4.88987422193e-02 4.77311231410e-02 4.77311231410e-02 4.88987422193e-02 5.10737783335e-02 + 5.40097122002e-02 5.74762428735e-02 6.13334872428e-02 6.55352798807e-02 7.00474085615e-02 7.47020608958e-02 + 7.90236437036e-02 8.20645507484e-02 8.23828782457e-02 7.84511058955e-02 6.96179820017e-02 5.70355201353e-02 + 2.77489957459e-02 1.87771308641e-02 1.56860392578e-02 1.87771308641e-02 2.77489957459e-02 4.13123485649e-02 + 5.66663226477e-02 7.00400365127e-02 7.84511058955e-02 8.11458755837e-02 7.93709590427e-02 7.50510418428e-02 + 6.97522426294e-02 6.44054743742e-02 5.94462807362e-02 5.50251512552e-02 5.11831265828e-02 4.79731106469e-02 + 4.55081727847e-02 4.39402098517e-02 4.34003076052e-02 4.39402098517e-02 4.55081727847e-02 4.79731106469e-02 + 5.11831265828e-02 5.50251512552e-02 5.94462807362e-02 6.44054743742e-02 6.97522426294e-02 7.50510418428e-02 + 7.93709590427e-02 8.11458755837e-02 7.84511058955e-02 7.00400365127e-02 5.66663226477e-02 4.13123485649e-02 + 1.46090879135e-02 9.13060134292e-03 9.13060134292e-03 1.46090879135e-02 2.54935088837e-02 4.05694134160e-02 + 5.66663226477e-02 6.96179820017e-02 7.66122811094e-02 7.75631573239e-02 7.43082663472e-02 6.89793219251e-02 + 6.30873277659e-02 5.74494623672e-02 5.24194501424e-02 4.81082332430e-02 4.45431970579e-02 4.17618689283e-02 + 3.98358227133e-02 3.88462459817e-02 3.88462459817e-02 3.98358227133e-02 4.17618689283e-02 4.45431970579e-02 + 4.81082332430e-02 5.24194501424e-02 5.74494623672e-02 6.30873277659e-02 6.89793219251e-02 7.43082663472e-02 + 7.75631573239e-02 7.66122811094e-02 6.96179820017e-02 5.66663226477e-02 4.05694134160e-02 2.54935088837e-02 + 6.32692063078e-03 4.10298626852e-03 6.32692063078e-03 1.33581335706e-02 2.54935088837e-02 4.13123485649e-02 + 5.70355201353e-02 6.83266751007e-02 7.30418134594e-02 7.19923628057e-02 6.74494907981e-02 6.14923433640e-02 + 5.54167137150e-02 4.98633146719e-02 4.50819394473e-02 4.11328816616e-02 3.80204685260e-02 3.57591480990e-02 + 3.43811654173e-02 3.39176800802e-02 3.43811654173e-02 3.57591480990e-02 3.80204685260e-02 4.11328816616e-02 + 4.50819394473e-02 4.98633146719e-02 5.54167137150e-02 6.14923433640e-02 6.74494907981e-02 7.19923628057e-02 + 7.30418134594e-02 6.83266751007e-02 5.70355201353e-02 4.13123485649e-02 2.54935088837e-02 1.33581335706e-02 diff --git a/source/source_io/test_serial/support/chgs1.cube b/source/source_io/test_serial/support/chgs1.cube deleted file mode 100644 index 6aa8d9205c..0000000000 --- a/source/source_io/test_serial/support/chgs1.cube +++ /dev/null @@ -1,7784 +0,0 @@ -STEP: 0 Cubefile created from ABACUS. Inner loop is z, followed by y and x -1 (nspin) 0.461002 (fermi energy, in Ry) -2 0.0 0.0 0.0 -36 -0.141667 0.000000 0.141667 -36 0.000000 0.141667 0.141667 -36 -0.141667 0.141667 0.000000 - 14 4.000000 0.000000 0.000000 0.000000 - 14 4.000000 -7.650000 7.650000 7.650000 - 1.27020863940e-03 2.64004483879e-03 7.45857574908e-03 1.69819929531e-02 3.09103717113e-02 4.60013609401e-02 - 5.75824043038e-02 6.28259810566e-02 6.21334821617e-02 5.77319585491e-02 5.18034033720e-02 4.57409612273e-02 - 4.02453701311e-02 3.55932306397e-02 3.18414068716e-02 2.89647599965e-02 2.69304328597e-02 2.57176061925e-02 - 2.53146898274e-02 2.57176061925e-02 2.69304328597e-02 2.89647599965e-02 3.18414068716e-02 3.55932306397e-02 - 4.02453701311e-02 4.57409612273e-02 5.18034033720e-02 5.77319585491e-02 6.21334821617e-02 6.28259810566e-02 - 5.75824043038e-02 4.60013609401e-02 3.09103717113e-02 1.69819929531e-02 7.45857574908e-03 2.64004483879e-03 - 2.64004483879e-03 5.17285277950e-03 1.14596764125e-02 2.23413746600e-02 3.62214481565e-02 4.89850720157e-02 - 5.67236888968e-02 5.83399236929e-02 5.53499973529e-02 5.00090134447e-02 4.40291518527e-02 3.83718132369e-02 - 3.34710625414e-02 2.94586793037e-02 2.63252408289e-02 2.40237109616e-02 2.25132701769e-02 2.17657781241e-02 - 2.17657781241e-02 2.25132701769e-02 2.40237109616e-02 2.63252408289e-02 2.94586793037e-02 3.34710625414e-02 - 3.83718132369e-02 4.40291518527e-02 5.00090134447e-02 5.53499973529e-02 5.83399236929e-02 5.67236888968e-02 - 4.89850720157e-02 3.62214481565e-02 2.23413746600e-02 1.14596764125e-02 5.17285277950e-03 2.64004483879e-03 - 7.45857574908e-03 1.14596764125e-02 1.93490286376e-02 3.07039905741e-02 4.26203265537e-02 5.12221625406e-02 - 5.43925934286e-02 5.26931433274e-02 4.80677366203e-02 4.23378898536e-02 3.66568505349e-02 3.16041856284e-02 - 2.73972646659e-02 2.40594329852e-02 2.15413174517e-02 1.97871783123e-02 1.87538902948e-02 1.84129279741e-02 - 1.87538902948e-02 1.97871783123e-02 2.15413174517e-02 2.40594329852e-02 2.73972646659e-02 3.16041856284e-02 - 3.66568505349e-02 4.23378898536e-02 4.80677366203e-02 5.26931433274e-02 5.43925934286e-02 5.12221625406e-02 - 4.26203265537e-02 3.07039905741e-02 1.93490286376e-02 1.14596764125e-02 7.45857574908e-03 6.32692063078e-03 - 1.69819929531e-02 2.23413746600e-02 3.07039905741e-02 4.02808330656e-02 4.79609401864e-02 5.13869204668e-02 - 5.03535465114e-02 4.62623331670e-02 4.07924714489e-02 3.51532871168e-02 3.00149219248e-02 2.56657154446e-02 - 2.21666114252e-02 1.94746684497e-02 1.75241772421e-02 1.62588522549e-02 1.56375665721e-02 1.56375665721e-02 - 1.62588522549e-02 1.75241772421e-02 1.94746684497e-02 2.21666114252e-02 2.56657154446e-02 3.00149219248e-02 - 3.51532871168e-02 4.07924714489e-02 4.62623331670e-02 5.03535465114e-02 5.13869204668e-02 4.79609401864e-02 - 4.02808330656e-02 3.07039905741e-02 2.23413746600e-02 1.69819929531e-02 1.46090879135e-02 1.46090879135e-02 - 3.09103717113e-02 3.62214481565e-02 4.26203265537e-02 4.79609401864e-02 5.02620593726e-02 4.89738024005e-02 - 4.49623774036e-02 3.95849180057e-02 3.39533984936e-02 2.87439673059e-02 2.42781130820e-02 2.06439962171e-02 - 1.78072941675e-02 1.56960478729e-02 1.42425749040e-02 1.33939588194e-02 1.31152359900e-02 1.33939588194e-02 - 1.42425749040e-02 1.56960478729e-02 1.78072941675e-02 2.06439962171e-02 2.42781130820e-02 2.87439673059e-02 - 3.39533984936e-02 3.95849180057e-02 4.49623774036e-02 4.89738024005e-02 5.02620593726e-02 4.79609401864e-02 - 4.26203265537e-02 3.62214481565e-02 3.09103717113e-02 2.77489957459e-02 2.67478820537e-02 2.77489957459e-02 - 4.60013609401e-02 4.89850720157e-02 5.12221625406e-02 5.13869204668e-02 4.89738024005e-02 4.44868574481e-02 - 3.89160663350e-02 3.31691643222e-02 2.78466298707e-02 2.32562353108e-02 1.94921954522e-02 1.65234811342e-02 - 1.42727054437e-02 1.26620800682e-02 1.16276251073e-02 1.11228159589e-02 1.11228159589e-02 1.16276251073e-02 - 1.26620800682e-02 1.42727054437e-02 1.65234811342e-02 1.94921954522e-02 2.32562353108e-02 2.78466298707e-02 - 3.31691643222e-02 3.89160663350e-02 4.44868574481e-02 4.89738024005e-02 5.13869204668e-02 5.12221625406e-02 - 4.89850720157e-02 4.60013609401e-02 4.35588929466e-02 4.22847991283e-02 4.22847991283e-02 4.35588929466e-02 - 5.75824043038e-02 5.67236888968e-02 5.43925934286e-02 5.03535465114e-02 4.49623774036e-02 3.89160663350e-02 - 3.28952522339e-02 2.73794467347e-02 2.26267522861e-02 1.87162119832e-02 1.56112881223e-02 1.32272933414e-02 - 1.14766013692e-02 1.02846446979e-02 9.59384043225e-03 9.36769905218e-03 9.59384043225e-03 1.02846446979e-02 - 1.14766013692e-02 1.32272933414e-02 1.56112881223e-02 1.87162119832e-02 2.26267522861e-02 2.73794467347e-02 - 3.28952522339e-02 3.89160663350e-02 4.49623774036e-02 5.03535465114e-02 5.43925934286e-02 5.67236888968e-02 - 5.75824043038e-02 5.76200322747e-02 5.74463352203e-02 5.73653289979e-02 5.74463352203e-02 5.76200322747e-02 - 6.28259810566e-02 5.83399236929e-02 5.26931433274e-02 4.62623331670e-02 3.95849180057e-02 3.31691643222e-02 - 2.73794467347e-02 2.24136125305e-02 1.83246021902e-02 1.50645020089e-02 1.25396406703e-02 1.06524671204e-02 - 9.31810768724e-03 8.46823559623e-03 8.05519399644e-03 8.05519399644e-03 8.46823559623e-03 9.31810768724e-03 - 1.06524671204e-02 1.25396406703e-02 1.50645020089e-02 1.83246021902e-02 2.24136125305e-02 2.73794467347e-02 - 3.31691643222e-02 3.95849180057e-02 4.62623331670e-02 5.26931433274e-02 5.83399236929e-02 6.28259810566e-02 - 6.60504635380e-02 6.81077724909e-02 6.91119067669e-02 6.91119067669e-02 6.81077724909e-02 6.60504635380e-02 - 6.21334821617e-02 5.53499973529e-02 4.80677366203e-02 4.07924714489e-02 3.39533984936e-02 2.78466298707e-02 - 2.26267522861e-02 1.83246021902e-02 1.48820928374e-02 1.21980827392e-02 1.01663421573e-02 8.69246386814e-03 - 7.69793885145e-03 7.12420828954e-03 6.93665223838e-03 7.12420828954e-03 7.69793885145e-03 8.69246386814e-03 - 1.01663421573e-02 1.21980827392e-02 1.48820928374e-02 1.83246021902e-02 2.26267522861e-02 2.78466298707e-02 - 3.39533984936e-02 4.07924714489e-02 4.80677366203e-02 5.53499973529e-02 6.21334821617e-02 6.79320857310e-02 - 7.23556493700e-02 7.51264696898e-02 7.60705845667e-02 7.51264696898e-02 7.23556493700e-02 6.79320857310e-02 - 5.77319585491e-02 5.00090134447e-02 4.23378898536e-02 3.51532871168e-02 2.87439673059e-02 2.32562353108e-02 - 1.87162119832e-02 1.50645020089e-02 1.21980827392e-02 1.00055755901e-02 8.38500711079e-03 7.24904282964e-03 - 6.52902358143e-03 6.17967298585e-03 6.17967298585e-03 6.52902358143e-03 7.24904282964e-03 8.38500711079e-03 - 1.00055755901e-02 1.21980827392e-02 1.50645020089e-02 1.87162119832e-02 2.32562353108e-02 2.87439673059e-02 - 3.51532871168e-02 4.23378898536e-02 5.00090134447e-02 5.77319585491e-02 6.49555724266e-02 7.10787520021e-02 - 7.55368812409e-02 7.78881394404e-02 7.78881394404e-02 7.55368812409e-02 7.10787520021e-02 6.49555724266e-02 - 5.18034033720e-02 4.40291518527e-02 3.66568505349e-02 3.00149219248e-02 2.42781130820e-02 1.94921954522e-02 - 1.56112881223e-02 1.25396406703e-02 1.01663421573e-02 8.38500711079e-03 7.10160482063e-03 6.23916674188e-03 - 5.74257125314e-03 5.58034633768e-03 5.74257125314e-03 6.23916674188e-03 7.10160482063e-03 8.38500711079e-03 - 1.01663421573e-02 1.25396406703e-02 1.56112881223e-02 1.94921954522e-02 2.42781130820e-02 3.00149219248e-02 - 3.66568505349e-02 4.40291518527e-02 5.18034033720e-02 5.94941697642e-02 6.64898780493e-02 7.21264918488e-02 - 7.57970302390e-02 7.70723261920e-02 7.57970302390e-02 7.21264918488e-02 6.64898780493e-02 5.94941697642e-02 - 4.57409612273e-02 3.83718132369e-02 3.16041856284e-02 2.56657154446e-02 2.06439962171e-02 1.65234811342e-02 - 1.32272933414e-02 1.06524671204e-02 8.69246386814e-03 7.24904282964e-03 6.23916674188e-03 5.59978938003e-03 - 5.28994524639e-03 5.28994524639e-03 5.59978938003e-03 6.23916674188e-03 7.24904282964e-03 8.69246386814e-03 - 1.06524671204e-02 1.32272933414e-02 1.65234811342e-02 2.06439962171e-02 2.56657154446e-02 3.16041856284e-02 - 3.83718132369e-02 4.57409612273e-02 5.33236907840e-02 6.05796981280e-02 6.68641206041e-02 7.15201290633e-02 - 7.40032629540e-02 7.40032629540e-02 7.15201290633e-02 6.68641206041e-02 6.05796981280e-02 5.33236907840e-02 - 4.02453701311e-02 3.34710625414e-02 2.73972646659e-02 2.21666114252e-02 1.78072941675e-02 1.42727054437e-02 - 1.14766013692e-02 9.31810768724e-03 7.69793885145e-03 6.52902358143e-03 5.74257125314e-03 5.28994524639e-03 - 5.14226972170e-03 5.28994524639e-03 5.74257125314e-03 6.52902358143e-03 7.69793885145e-03 9.31810768724e-03 - 1.14766013692e-02 1.42727054437e-02 1.78072941675e-02 2.21666114252e-02 2.73972646659e-02 3.34710625414e-02 - 4.02453701311e-02 4.74313143781e-02 5.45841783826e-02 6.11288569567e-02 6.64284767715e-02 6.98920688762e-02 - 7.10977313661e-02 6.98920688762e-02 6.64284767715e-02 6.11288569567e-02 5.45841783826e-02 4.74313143781e-02 - 3.55932306397e-02 2.94586793037e-02 2.40594329852e-02 1.94746684497e-02 1.56960478729e-02 1.26620800682e-02 - 1.02846446979e-02 8.46823559623e-03 7.12420828954e-03 6.17967298585e-03 5.58034633768e-03 5.28994524639e-03 - 5.28994524639e-03 5.58034633768e-03 6.17967298585e-03 7.12420828954e-03 8.46823559623e-03 1.02846446979e-02 - 1.26620800682e-02 1.56960478729e-02 1.94746684497e-02 2.40594329852e-02 2.94586793037e-02 3.55932306397e-02 - 4.22610610741e-02 4.91148354625e-02 5.56676247698e-02 6.13379141192e-02 6.55352798807e-02 6.77723654588e-02 - 6.77723654588e-02 6.55352798807e-02 6.13379141192e-02 5.56676247698e-02 4.91148354625e-02 4.22610610741e-02 - 3.18414068716e-02 2.63252408289e-02 2.15413174517e-02 1.75241772421e-02 1.42425749040e-02 1.16276251073e-02 - 9.59384043225e-03 8.05519399644e-03 6.93665223838e-03 6.17967298585e-03 5.74257125314e-03 5.59978938003e-03 - 5.74257125314e-03 6.17967298585e-03 6.93665223838e-03 8.05519399644e-03 9.59384043225e-03 1.16276251073e-02 - 1.42425749040e-02 1.75241772421e-02 2.15413174517e-02 2.63252408289e-02 3.18414068716e-02 3.79563421300e-02 - 4.44094609233e-02 5.08044555558e-02 5.66331890923e-02 6.13379141192e-02 6.44054743742e-02 6.54719417706e-02 - 6.44054743742e-02 6.13379141192e-02 5.66331890923e-02 5.08044555558e-02 4.44094609233e-02 3.79563421300e-02 - 2.89647599965e-02 2.40237109616e-02 1.97871783123e-02 1.62588522549e-02 1.33939588194e-02 1.11228159589e-02 - 9.36769905218e-03 8.05519399644e-03 7.12420828954e-03 6.52902358143e-03 6.23916674188e-03 6.23916674188e-03 - 6.52902358143e-03 7.12420828954e-03 8.05519399644e-03 9.36769905218e-03 1.11228159589e-02 1.33939588194e-02 - 1.62588522549e-02 1.97871783123e-02 2.40237109616e-02 2.89647599965e-02 3.45282284639e-02 4.05244812822e-02 - 4.66403070569e-02 5.24477482650e-02 5.74449785733e-02 6.11288569567e-02 6.30873277659e-02 6.30873277659e-02 - 6.11288569567e-02 5.74449785733e-02 5.24477482650e-02 4.66403070569e-02 4.05244812822e-02 3.45282284639e-02 - 2.69304328597e-02 2.25132701769e-02 1.87538902948e-02 1.56375665721e-02 1.31152359900e-02 1.11228159589e-02 - 9.59384043225e-03 8.46823559623e-03 7.69793885145e-03 7.24904282964e-03 7.10160482063e-03 7.24904282964e-03 - 7.69793885145e-03 8.46823559623e-03 9.59384043225e-03 1.11228159589e-02 1.31152359900e-02 1.56375665721e-02 - 1.87538902948e-02 2.25132701769e-02 2.69304328597e-02 3.19590319446e-02 3.74634706166e-02 4.32002938784e-02 - 4.88190878681e-02 5.38883507401e-02 5.79474348197e-02 6.05796981280e-02 6.14923433640e-02 6.05796981280e-02 - 5.79474348197e-02 5.38883507401e-02 4.88190878681e-02 4.32002938784e-02 3.74634706166e-02 3.19590319446e-02 - 2.57176061925e-02 2.17657781241e-02 1.84129279741e-02 1.56375665721e-02 1.33939588194e-02 1.16276251073e-02 - 1.02846446979e-02 9.31810768724e-03 8.69246386814e-03 8.38500711079e-03 8.38500711079e-03 8.69246386814e-03 - 9.31810768724e-03 1.02846446979e-02 1.16276251073e-02 1.33939588194e-02 1.56375665721e-02 1.84129279741e-02 - 2.17657781241e-02 2.57176061925e-02 3.02423286704e-02 3.52402742752e-02 4.05199675384e-02 4.57968161948e-02 - 5.07121410456e-02 5.48714786192e-02 5.78981879671e-02 5.94941697642e-02 5.94941697642e-02 5.78981879671e-02 - 5.48714786192e-02 5.07121410456e-02 4.57968161948e-02 4.05199675384e-02 3.52402742752e-02 3.02423286704e-02 - 2.53146898274e-02 2.17657781241e-02 1.87538902948e-02 1.62588522549e-02 1.42425749040e-02 1.26620800682e-02 - 1.14766013692e-02 1.06524671204e-02 1.01663421573e-02 1.00055755901e-02 1.01663421573e-02 1.06524671204e-02 - 1.14766013692e-02 1.26620800682e-02 1.42425749040e-02 1.62588522549e-02 1.87538902948e-02 2.17657781241e-02 - 2.53146898274e-02 2.93819034216e-02 3.38859304601e-02 3.86662855632e-02 4.34838779539e-02 4.80406383964e-02 - 5.20147259753e-02 5.51031089527e-02 5.70612480291e-02 5.77319585491e-02 5.70612480291e-02 5.51031089527e-02 - 5.20147259753e-02 4.80406383964e-02 4.34838779539e-02 3.86662855632e-02 3.38859304601e-02 2.93819034216e-02 - 2.57176061925e-02 2.25132701769e-02 1.97871783123e-02 1.75241772421e-02 1.56960478729e-02 1.42727054437e-02 - 1.32272933414e-02 1.25396406703e-02 1.21980827392e-02 1.21980827392e-02 1.25396406703e-02 1.32272933414e-02 - 1.42727054437e-02 1.56960478729e-02 1.75241772421e-02 1.97871783123e-02 2.25132701769e-02 2.57176061925e-02 - 2.93819034216e-02 3.34304675050e-02 3.77147526395e-02 4.20165784801e-02 4.60731359718e-02 4.96193341715e-02 - 5.24339557043e-02 5.43692149489e-02 5.53499973529e-02 5.53499973529e-02 5.43692149489e-02 5.24339557043e-02 - 4.96193341715e-02 4.60731359718e-02 4.20165784801e-02 3.77147526395e-02 3.34304675050e-02 2.93819034216e-02 - 2.69304328597e-02 2.40237109616e-02 2.15413174517e-02 1.94746684497e-02 1.78072941675e-02 1.65234811342e-02 - 1.56112881223e-02 1.50645020089e-02 1.48820928374e-02 1.50645020089e-02 1.56112881223e-02 1.65234811342e-02 - 1.78072941675e-02 1.94746684497e-02 2.15413174517e-02 2.40237109616e-02 2.69304328597e-02 3.02423286704e-02 - 3.38859304601e-02 3.77147526395e-02 4.15120643887e-02 4.50208900473e-02 4.79989400749e-02 5.02828320119e-02 - 5.18281863755e-02 5.26931433274e-02 5.29676178633e-02 5.26931433274e-02 5.18281863755e-02 5.02828320119e-02 - 4.79989400749e-02 4.50208900473e-02 4.15120643887e-02 3.77147526395e-02 3.38859304601e-02 3.02423286704e-02 - 2.89647599965e-02 2.63252408289e-02 2.40594329852e-02 2.21666114252e-02 2.06439962171e-02 1.94921954522e-02 - 1.87162119832e-02 1.83246021902e-02 1.83246021902e-02 1.87162119832e-02 1.94921954522e-02 2.06439962171e-02 - 2.21666114252e-02 2.40594329852e-02 2.63252408289e-02 2.89647599965e-02 3.19590319446e-02 3.52402742752e-02 - 3.86662855632e-02 4.20165784801e-02 4.50208900473e-02 4.74231711778e-02 4.90700187394e-02 4.99825941802e-02 - 5.03535465114e-02 5.04463447592e-02 5.04463447592e-02 5.03535465114e-02 4.99825941802e-02 4.90700187394e-02 - 4.74231711778e-02 4.50208900473e-02 4.20165784801e-02 3.86662855632e-02 3.52402742752e-02 3.19590319446e-02 - 3.18414068716e-02 2.94586793037e-02 2.73972646659e-02 2.56657154446e-02 2.42781130820e-02 2.32562353108e-02 - 2.26267522861e-02 2.24136125305e-02 2.26267522861e-02 2.32562353108e-02 2.42781130820e-02 2.56657154446e-02 - 2.73972646659e-02 2.94586793037e-02 3.18414068716e-02 3.45282284639e-02 3.74634706166e-02 4.05199675384e-02 - 4.34838779539e-02 4.60731359718e-02 4.79989400749e-02 4.90700187394e-02 4.93048229800e-02 4.89738024005e-02 - 4.85080722970e-02 4.83002627794e-02 4.85080722970e-02 4.89738024005e-02 4.93048229800e-02 4.90700187394e-02 - 4.79989400749e-02 4.60731359718e-02 4.34838779539e-02 4.05199675384e-02 3.74634706166e-02 3.45282284639e-02 - 3.55932306397e-02 3.34710625414e-02 3.16041856284e-02 3.00149219248e-02 2.87439673059e-02 2.78466298707e-02 - 2.73794467347e-02 2.73794467347e-02 2.78466298707e-02 2.87439673059e-02 3.00149219248e-02 3.16041856284e-02 - 3.34710625414e-02 3.55932306397e-02 3.79563421300e-02 4.05244812822e-02 4.32002938784e-02 4.57968161948e-02 - 4.80406383964e-02 4.96193341715e-02 5.02828320119e-02 4.99825941802e-02 4.89738024005e-02 4.77793166757e-02 - 4.69885184966e-02 4.69885184966e-02 4.77793166757e-02 4.89738024005e-02 4.99825941802e-02 5.02828320119e-02 - 4.96193341715e-02 4.80406383964e-02 4.57968161948e-02 4.32002938784e-02 4.05244812822e-02 3.79563421300e-02 - 4.02453701311e-02 3.83718132369e-02 3.66568505349e-02 3.51532871168e-02 3.39533984936e-02 3.31691643222e-02 - 3.28952522339e-02 3.31691643222e-02 3.39533984936e-02 3.51532871168e-02 3.66568505349e-02 3.83718132369e-02 - 4.02453701311e-02 4.22610610741e-02 4.44094609233e-02 4.66403070569e-02 4.88190878681e-02 5.07121410456e-02 - 5.20147259753e-02 5.24339557043e-02 5.18281863755e-02 5.03535465114e-02 4.85080722970e-02 4.69885184966e-02 - 4.64020316983e-02 4.69885184966e-02 4.85080722970e-02 5.03535465114e-02 5.18281863755e-02 5.24339557043e-02 - 5.20147259753e-02 5.07121410456e-02 4.88190878681e-02 4.66403070569e-02 4.44094609233e-02 4.22610610741e-02 - 4.57409612273e-02 4.40291518527e-02 4.23378898536e-02 4.07924714489e-02 3.95849180057e-02 3.89160663350e-02 - 3.89160663350e-02 3.95849180057e-02 4.07924714489e-02 4.23378898536e-02 4.40291518527e-02 4.57409612273e-02 - 4.74313143781e-02 4.91148354625e-02 5.08044555558e-02 5.24477482650e-02 5.38883507401e-02 5.48714786192e-02 - 5.51031089527e-02 5.43692149489e-02 5.26931433274e-02 5.04463447592e-02 4.83002627794e-02 4.69885184966e-02 - 4.69885184966e-02 4.83002627794e-02 5.04463447592e-02 5.26931433274e-02 5.43692149489e-02 5.51031089527e-02 - 5.48714786192e-02 5.38883507401e-02 5.24477482650e-02 5.08044555558e-02 4.91148354625e-02 4.74313143781e-02 - 5.18034033720e-02 5.00090134447e-02 4.80677366203e-02 4.62623331670e-02 4.49623774036e-02 4.44868574481e-02 - 4.49623774036e-02 4.62623331670e-02 4.80677366203e-02 5.00090134447e-02 5.18034033720e-02 5.33236907840e-02 - 5.45841783826e-02 5.56676247698e-02 5.66331890923e-02 5.74449785733e-02 5.79474348197e-02 5.78981879671e-02 - 5.70612480291e-02 5.53499973529e-02 5.29676178633e-02 5.04463447592e-02 4.85080722970e-02 4.77793166757e-02 - 4.85080722970e-02 5.04463447592e-02 5.29676178633e-02 5.53499973529e-02 5.70612480291e-02 5.78981879671e-02 - 5.79474348197e-02 5.74449785733e-02 5.66331890923e-02 5.56676247698e-02 5.45841783826e-02 5.33236907840e-02 - 5.77319585491e-02 5.53499973529e-02 5.26931433274e-02 5.03535465114e-02 4.89738024005e-02 4.89738024005e-02 - 5.03535465114e-02 5.26931433274e-02 5.53499973529e-02 5.77319585491e-02 5.94941697642e-02 6.05796981280e-02 - 6.11288569567e-02 6.13379141192e-02 6.13379141192e-02 6.11288569567e-02 6.05796981280e-02 5.94941697642e-02 - 5.77319585491e-02 5.53499973529e-02 5.26931433274e-02 5.03535465114e-02 4.89738024005e-02 4.89738024005e-02 - 5.03535465114e-02 5.26931433274e-02 5.53499973529e-02 5.77319585491e-02 5.94941697642e-02 6.05796981280e-02 - 6.11288569567e-02 6.13379141192e-02 6.13379141192e-02 6.11288569567e-02 6.05796981280e-02 5.94941697642e-02 - 6.21334821617e-02 5.83399236929e-02 5.43925934286e-02 5.13869204668e-02 5.02620593726e-02 5.13869204668e-02 - 5.43925934286e-02 5.83399236929e-02 6.21334821617e-02 6.49555724266e-02 6.64898780493e-02 6.68641206041e-02 - 6.64284767715e-02 6.55352798807e-02 6.44054743742e-02 6.30873277659e-02 6.14923433640e-02 5.94941697642e-02 - 5.70612480291e-02 5.43692149489e-02 5.18281863755e-02 4.99825941802e-02 4.93048229800e-02 4.99825941802e-02 - 5.18281863755e-02 5.43692149489e-02 5.70612480291e-02 5.94941697642e-02 6.14923433640e-02 6.30873277659e-02 - 6.44054743742e-02 6.55352798807e-02 6.64284767715e-02 6.68641206041e-02 6.64898780493e-02 6.49555724266e-02 - 6.28259810566e-02 5.67236888968e-02 5.12221625406e-02 4.79609401864e-02 4.79609401864e-02 5.12221625406e-02 - 5.67236888968e-02 6.28259810566e-02 6.79320857310e-02 7.10787520021e-02 7.21264918488e-02 7.15201290633e-02 - 6.98920688762e-02 6.77723654588e-02 6.54719417706e-02 6.30873277659e-02 6.05796981280e-02 5.78981879671e-02 - 5.51031089527e-02 5.24339557043e-02 5.02828320119e-02 4.90700187394e-02 4.90700187394e-02 5.02828320119e-02 - 5.24339557043e-02 5.51031089527e-02 5.78981879671e-02 6.05796981280e-02 6.30873277659e-02 6.54719417706e-02 - 6.77723654588e-02 6.98920688762e-02 7.15201290633e-02 7.21264918488e-02 7.10787520021e-02 6.79320857310e-02 - 5.75824043038e-02 4.89850720157e-02 4.26203265537e-02 4.02808330656e-02 4.26203265537e-02 4.89850720157e-02 - 5.75824043038e-02 6.60504635380e-02 7.23556493700e-02 7.55368812409e-02 7.57970302390e-02 7.40032629540e-02 - 7.10977313661e-02 6.77723654588e-02 6.44054743742e-02 6.11288569567e-02 5.79474348197e-02 5.48714786192e-02 - 5.20147259753e-02 4.96193341715e-02 4.79989400749e-02 4.74231711778e-02 4.79989400749e-02 4.96193341715e-02 - 5.20147259753e-02 5.48714786192e-02 5.79474348197e-02 6.11288569567e-02 6.44054743742e-02 6.77723654588e-02 - 7.10977313661e-02 7.40032629540e-02 7.57970302390e-02 7.55368812409e-02 7.23556493700e-02 6.60504635380e-02 - 4.60013609401e-02 3.62214481565e-02 3.07039905741e-02 3.07039905741e-02 3.62214481565e-02 4.60013609401e-02 - 5.76200322747e-02 6.81077724909e-02 7.51264696898e-02 7.78881394404e-02 7.70723261920e-02 7.40032629540e-02 - 6.98920688762e-02 6.55352798807e-02 6.13379141192e-02 5.74449785733e-02 5.38883507401e-02 5.07121410456e-02 - 4.80406383964e-02 4.60731359718e-02 4.50208900473e-02 4.50208900473e-02 4.60731359718e-02 4.80406383964e-02 - 5.07121410456e-02 5.38883507401e-02 5.74449785733e-02 6.13379141192e-02 6.55352798807e-02 6.98920688762e-02 - 7.40032629540e-02 7.70723261920e-02 7.78881394404e-02 7.51264696898e-02 6.81077724909e-02 5.76200322747e-02 - 3.09103717113e-02 2.23413746600e-02 1.93490286376e-02 2.23413746600e-02 3.09103717113e-02 4.35588929466e-02 - 5.74463352203e-02 6.91119067669e-02 7.60705845667e-02 7.78881394404e-02 7.57970302390e-02 7.15201290633e-02 - 6.64284767715e-02 6.13379141192e-02 5.66331890923e-02 5.24477482650e-02 4.88190878681e-02 4.57968161948e-02 - 4.34838779539e-02 4.20165784801e-02 4.15120643887e-02 4.20165784801e-02 4.34838779539e-02 4.57968161948e-02 - 4.88190878681e-02 5.24477482650e-02 5.66331890923e-02 6.13379141192e-02 6.64284767715e-02 7.15201290633e-02 - 7.57970302390e-02 7.78881394404e-02 7.60705845667e-02 6.91119067669e-02 5.74463352203e-02 4.35588929466e-02 - 1.69819929531e-02 1.14596764125e-02 1.14596764125e-02 1.69819929531e-02 2.77489957459e-02 4.22847991283e-02 - 5.73653289979e-02 6.91119067669e-02 7.51264696898e-02 7.55368812409e-02 7.21264918488e-02 6.68641206041e-02 - 6.11288569567e-02 5.56676247698e-02 5.08044555558e-02 4.66403070569e-02 4.32002938784e-02 4.05199675384e-02 - 3.86662855632e-02 3.77147526395e-02 3.77147526395e-02 3.86662855632e-02 4.05199675384e-02 4.32002938784e-02 - 4.66403070569e-02 5.08044555558e-02 5.56676247698e-02 6.11288569567e-02 6.68641206041e-02 7.21264918488e-02 - 7.55368812409e-02 7.51264696898e-02 6.91119067669e-02 5.73653289979e-02 4.22847991283e-02 2.77489957459e-02 - 7.45857574908e-03 5.17285277950e-03 7.45857574908e-03 1.46090879135e-02 2.67478820537e-02 4.22847991283e-02 - 5.74463352203e-02 6.81077724909e-02 7.23556493700e-02 7.10787520021e-02 6.64898780493e-02 6.05796981280e-02 - 5.45841783826e-02 4.91148354625e-02 4.44094609233e-02 4.05244812822e-02 3.74634706166e-02 3.52402742752e-02 - 3.38859304601e-02 3.34304675050e-02 3.38859304601e-02 3.52402742752e-02 3.74634706166e-02 4.05244812822e-02 - 4.44094609233e-02 4.91148354625e-02 5.45841783826e-02 6.05796981280e-02 6.64898780493e-02 7.10787520021e-02 - 7.23556493700e-02 6.81077724909e-02 5.74463352203e-02 4.22847991283e-02 2.67478820537e-02 1.46090879135e-02 - 2.64004483879e-03 2.64004483879e-03 6.32692063078e-03 1.46090879135e-02 2.77489957459e-02 4.35588929466e-02 - 5.76200322747e-02 6.60504635380e-02 6.79320857310e-02 6.49555724266e-02 5.94941697642e-02 5.33236907840e-02 - 4.74313143781e-02 4.22610610741e-02 3.79563421300e-02 3.45282284639e-02 3.19590319446e-02 3.02423286704e-02 - 2.93819034216e-02 2.93819034216e-02 3.02423286704e-02 3.19590319446e-02 3.45282284639e-02 3.79563421300e-02 - 4.22610610741e-02 4.74313143781e-02 5.33236907840e-02 5.94941697642e-02 6.49555724266e-02 6.79320857310e-02 - 6.60504635380e-02 5.76200322747e-02 4.35588929466e-02 2.77489957459e-02 1.46090879135e-02 6.32692063078e-03 - 2.64004483879e-03 5.17285277950e-03 1.14596764125e-02 2.23413746600e-02 3.62214481565e-02 4.89850720157e-02 - 5.67236888968e-02 5.83399236929e-02 5.53499973529e-02 5.00090134447e-02 4.40291518527e-02 3.83718132369e-02 - 3.34710625414e-02 2.94586793037e-02 2.63252408289e-02 2.40237109616e-02 2.25132701769e-02 2.17657781241e-02 - 2.17657781241e-02 2.25132701769e-02 2.40237109616e-02 2.63252408289e-02 2.94586793037e-02 3.34710625414e-02 - 3.83718132369e-02 4.40291518527e-02 5.00090134447e-02 5.53499973529e-02 5.83399236929e-02 5.67236888968e-02 - 4.89850720157e-02 3.62214481565e-02 2.23413746600e-02 1.14596764125e-02 5.17285277950e-03 2.64004483879e-03 - 5.17285277950e-03 9.05419851032e-03 1.69491736420e-02 2.86292518106e-02 4.11986868029e-02 5.05555186569e-02 - 5.43239294918e-02 5.29676178633e-02 4.84815544672e-02 4.27763236460e-02 3.70689589239e-02 3.19731919657e-02 - 2.77227537368e-02 2.43476957086e-02 2.18005508565e-02 2.00258575799e-02 1.89804120902e-02 1.86354478304e-02 - 1.89804120902e-02 2.00258575799e-02 2.18005508565e-02 2.43476957086e-02 2.77227537368e-02 3.19731919657e-02 - 3.70689589239e-02 4.27763236460e-02 4.84815544672e-02 5.29676178633e-02 5.43239294918e-02 5.05555186569e-02 - 4.11986868029e-02 2.86292518106e-02 1.69491736420e-02 9.05419851032e-03 5.17285277950e-03 4.10298626852e-03 - 1.14596764125e-02 1.69491736420e-02 2.59250062413e-02 3.67025276917e-02 4.58777097769e-02 5.06194135765e-02 - 5.04463447592e-02 4.67810667612e-02 4.14579289512e-02 3.58243136049e-02 3.06330408871e-02 2.62153172241e-02 - 2.26519365039e-02 1.99070659239e-02 1.79167348748e-02 1.66250325509e-02 1.59907282434e-02 1.59907282434e-02 - 1.66250325509e-02 1.79167348748e-02 1.99070659239e-02 2.26519365039e-02 2.62153172241e-02 3.06330408871e-02 - 3.58243136049e-02 4.14579289512e-02 4.67810667612e-02 5.04463447592e-02 5.06194135765e-02 4.58777097769e-02 - 3.67025276917e-02 2.59250062413e-02 1.69491736420e-02 1.14596764125e-02 9.13060134292e-03 9.13060134292e-03 - 2.23413746600e-02 2.86292518106e-02 3.67025276917e-02 4.41366450522e-02 4.83941231678e-02 4.85080722970e-02 - 4.52857661696e-02 4.02540981079e-02 3.47182328687e-02 2.94854041377e-02 2.49511167951e-02 2.12413612776e-02 - 1.83376793613e-02 1.61729889157e-02 1.46810426016e-02 1.38094745262e-02 1.35231772103e-02 1.38094745262e-02 - 1.46810426016e-02 1.61729889157e-02 1.83376793613e-02 2.12413612776e-02 2.49511167951e-02 2.94854041377e-02 - 3.47182328687e-02 4.02540981079e-02 4.52857661696e-02 4.85080722970e-02 4.83941231678e-02 4.41366450522e-02 - 3.67025276917e-02 2.86292518106e-02 2.23413746600e-02 1.87771308641e-02 1.76819501362e-02 1.87771308641e-02 - 3.62214481565e-02 4.11986868029e-02 4.58777097769e-02 4.83941231678e-02 4.77793166757e-02 4.44045560444e-02 - 3.93968315223e-02 3.38709874542e-02 2.85879356046e-02 2.39549635512e-02 2.01220876747e-02 1.70848695603e-02 - 1.47756456624e-02 1.31198380533e-02 1.20550163598e-02 1.15351431719e-02 1.15351431719e-02 1.20550163598e-02 - 1.31198380533e-02 1.47756456624e-02 1.70848695603e-02 2.01220876747e-02 2.39549635512e-02 2.85879356046e-02 - 3.38709874542e-02 3.93968315223e-02 4.44045560444e-02 4.77793166757e-02 4.83941231678e-02 4.58777097769e-02 - 4.11986868029e-02 3.62214481565e-02 3.25101129901e-02 3.06594619284e-02 3.06594619284e-02 3.25101129901e-02 - 4.89850720157e-02 5.05555186569e-02 5.06194135765e-02 4.85080722970e-02 4.44045560444e-02 3.90848689472e-02 - 3.34071767353e-02 2.80098127199e-02 2.32603028496e-02 1.93050944183e-02 1.61434902729e-02 1.37059602390e-02 - 1.19105819676e-02 1.06856809758e-02 9.97511028176e-03 9.74245511371e-03 9.97511028176e-03 1.06856809758e-02 - 1.19105819676e-02 1.37059602390e-02 1.61434902729e-02 1.93050944183e-02 2.32603028496e-02 2.80098127199e-02 - 3.34071767353e-02 3.90848689472e-02 4.44045560444e-02 4.85080722970e-02 5.06194135765e-02 5.05555186569e-02 - 4.89850720157e-02 4.70389926376e-02 4.56222411881e-02 4.51254329663e-02 4.56222411881e-02 4.70389926376e-02 - 5.67236888968e-02 5.43239294918e-02 5.04463447592e-02 4.52857661696e-02 3.93968315223e-02 3.34071767353e-02 - 2.78094015925e-02 2.29016184223e-02 1.88053010662e-02 1.55127511572e-02 1.29494247541e-02 1.10259974674e-02 - 9.66211927865e-03 8.79214216133e-03 8.36917339040e-03 8.36917339040e-03 8.79214216133e-03 9.66211927865e-03 - 1.10259974674e-02 1.29494247541e-02 1.55127511572e-02 1.88053010662e-02 2.29016184223e-02 2.78094015925e-02 - 3.34071767353e-02 3.93968315223e-02 4.52857661696e-02 5.04463447592e-02 5.43239294918e-02 5.67236888968e-02 - 5.79103146750e-02 5.83777841365e-02 5.85232784436e-02 5.85232784436e-02 5.83777841365e-02 5.79103146750e-02 - 5.83399236929e-02 5.29676178633e-02 4.67810667612e-02 4.02540981079e-02 3.38709874542e-02 2.80098127199e-02 - 2.29016184223e-02 1.86367379277e-02 1.51956958667e-02 1.24976141314e-02 1.04460621935e-02 8.95261635749e-03 - 7.94279014126e-03 7.35981258047e-03 7.16922584820e-03 7.35981258047e-03 7.94279014126e-03 8.95261635749e-03 - 1.04460621935e-02 1.24976141314e-02 1.51956958667e-02 1.86367379277e-02 2.29016184223e-02 2.80098127199e-02 - 3.38709874542e-02 4.02540981079e-02 4.67810667612e-02 5.29676178633e-02 5.83399236929e-02 6.25800698666e-02 - 6.55787911247e-02 6.73541476702e-02 6.79419572879e-02 6.73541476702e-02 6.55787911247e-02 6.25800698666e-02 - 5.53499973529e-02 4.84815544672e-02 4.14579289512e-02 3.47182328687e-02 2.85879356046e-02 2.32603028496e-02 - 1.88053010662e-02 1.51956958667e-02 1.23472319177e-02 1.01587603229e-02 8.53524112695e-03 7.39443450458e-03 - 6.67049181789e-03 6.31909087196e-03 6.31909087196e-03 6.67049181789e-03 7.39443450458e-03 8.53524112695e-03 - 1.01587603229e-02 1.23472319177e-02 1.51956958667e-02 1.88053010662e-02 2.32603028496e-02 2.85879356046e-02 - 3.47182328687e-02 4.14579289512e-02 4.84815544672e-02 5.53499973529e-02 6.15702941626e-02 6.66786802062e-02 - 7.03019494995e-02 7.21810172465e-02 7.21810172465e-02 7.03019494995e-02 6.66786802062e-02 6.15702941626e-02 - 5.00090134447e-02 4.27763236460e-02 3.58243136049e-02 2.94854041377e-02 2.39549635512e-02 1.93050944183e-02 - 1.55127511572e-02 1.24976141314e-02 1.01587603229e-02 8.39746782805e-03 7.12561826537e-03 6.26978037715e-03 - 5.77651892440e-03 5.61528193683e-03 5.77651892440e-03 6.26978037715e-03 7.12561826537e-03 8.39746782805e-03 - 1.01587603229e-02 1.24976141314e-02 1.55127511572e-02 1.93050944183e-02 2.39549635512e-02 2.94854041377e-02 - 3.58243136049e-02 4.27763236460e-02 5.00090134447e-02 5.70612480291e-02 6.33842515281e-02 6.84139609392e-02 - 7.16581855164e-02 7.27796836797e-02 7.16581855164e-02 6.84139609392e-02 6.33842515281e-02 5.70612480291e-02 - 4.40291518527e-02 3.70689589239e-02 3.06330408871e-02 2.49511167951e-02 2.01220876747e-02 1.61434902729e-02 - 1.29494247541e-02 1.04460621935e-02 8.53524112695e-03 7.12561826537e-03 6.13840739734e-03 5.51272438194e-03 - 5.20914423543e-03 5.20914423543e-03 5.51272438194e-03 6.13840739734e-03 7.12561826537e-03 8.53524112695e-03 - 1.04460621935e-02 1.29494247541e-02 1.61434902729e-02 2.01220876747e-02 2.49511167951e-02 3.06330408871e-02 - 3.70689589239e-02 4.40291518527e-02 5.11403130173e-02 5.78981879671e-02 6.37149803432e-02 6.80033074139e-02 - 7.02831021338e-02 7.02831021338e-02 6.80033074139e-02 6.37149803432e-02 5.78981879671e-02 5.11403130173e-02 - 3.83718132369e-02 3.19731919657e-02 2.62153172241e-02 2.12413612776e-02 1.70848695603e-02 1.37059602390e-02 - 1.10259974674e-02 8.95261635749e-03 7.39443450458e-03 6.26978037715e-03 5.51272438194e-03 5.07652462266e-03 - 4.93405372394e-03 5.07652462266e-03 5.51272438194e-03 6.26978037715e-03 7.39443450458e-03 8.95261635749e-03 - 1.10259974674e-02 1.37059602390e-02 1.70848695603e-02 2.12413612776e-02 2.62153172241e-02 3.19731919657e-02 - 3.83718132369e-02 4.51323632879e-02 5.18355302331e-02 5.79474348197e-02 6.28828729732e-02 6.61022866145e-02 - 6.72218662363e-02 6.61022866145e-02 6.28828729732e-02 5.79474348197e-02 5.18355302331e-02 4.51323632879e-02 - 3.34710625414e-02 2.77227537368e-02 2.26519365039e-02 1.83376793613e-02 1.47756456624e-02 1.19105819676e-02 - 9.66211927865e-03 7.94279014126e-03 6.67049181789e-03 5.77651892440e-03 5.20914423543e-03 4.93405372394e-03 - 4.93405372394e-03 5.20914423543e-03 5.77651892440e-03 6.67049181789e-03 7.94279014126e-03 9.66211927865e-03 - 1.19105819676e-02 1.47756456624e-02 1.83376793613e-02 2.26519365039e-02 2.77227537368e-02 3.34710625414e-02 - 3.97029159910e-02 4.60913389830e-02 5.21839135623e-02 5.74449785733e-02 6.13334872428e-02 6.34040688222e-02 - 6.34040688222e-02 6.13334872428e-02 5.74449785733e-02 5.21839135623e-02 4.60913389830e-02 3.97029159910e-02 - 2.94586793037e-02 2.43476957086e-02 1.99070659239e-02 1.61729889157e-02 1.31198380533e-02 1.06856809758e-02 - 8.79214216133e-03 7.35981258047e-03 6.31909087196e-03 5.61528193683e-03 5.20914423543e-03 5.07652462266e-03 - 5.20914423543e-03 5.61528193683e-03 6.31909087196e-03 7.35981258047e-03 8.79214216133e-03 1.06856809758e-02 - 1.31198380533e-02 1.61729889157e-02 1.99070659239e-02 2.43476957086e-02 2.94586793037e-02 3.51127517762e-02 - 4.10670403681e-02 4.69561004766e-02 5.23143637463e-02 5.66331890923e-02 5.94462807362e-02 6.04237632524e-02 - 5.94462807362e-02 5.66331890923e-02 5.23143637463e-02 4.69561004766e-02 4.10670403681e-02 3.51127517762e-02 - 2.63252408289e-02 2.18005508565e-02 1.79167348748e-02 1.46810426016e-02 1.20550163598e-02 9.97511028176e-03 - 8.36917339040e-03 7.16922584820e-03 6.31909087196e-03 5.77651892440e-03 5.51272438194e-03 5.51272438194e-03 - 5.77651892440e-03 6.31909087196e-03 7.16922584820e-03 8.36917339040e-03 9.97511028176e-03 1.20550163598e-02 - 1.46810426016e-02 1.79167348748e-02 2.18005508565e-02 2.63252408289e-02 3.14127386696e-02 3.68889471691e-02 - 4.24686468881e-02 4.77625301985e-02 5.23143637463e-02 5.56676247698e-02 5.74494623672e-02 5.74494623672e-02 - 5.56676247698e-02 5.23143637463e-02 4.77625301985e-02 4.24686468881e-02 3.68889471691e-02 3.14127386696e-02 - 2.40237109616e-02 2.00258575799e-02 1.66250325509e-02 1.38094745262e-02 1.15351431719e-02 9.74245511371e-03 - 8.36917339040e-03 7.35981258047e-03 6.67049181789e-03 6.26978037715e-03 6.13840739734e-03 6.26978037715e-03 - 6.67049181789e-03 7.35981258047e-03 8.36917339040e-03 9.74245511371e-03 1.15351431719e-02 1.38094745262e-02 - 1.66250325509e-02 2.00258575799e-02 2.40237109616e-02 2.85763383726e-02 3.35632692529e-02 3.87673596218e-02 - 4.38725463784e-02 4.84855850881e-02 5.21839135623e-02 5.45841783826e-02 5.54167137150e-02 5.45841783826e-02 - 5.21839135623e-02 4.84855850881e-02 4.38725463784e-02 3.87673596218e-02 3.35632692529e-02 2.85763383726e-02 - 2.25132701769e-02 1.89804120902e-02 1.59907282434e-02 1.35231772103e-02 1.15351431719e-02 9.97511028176e-03 - 8.79214216133e-03 7.94279014126e-03 7.39443450458e-03 7.12561826537e-03 7.12561826537e-03 7.39443450458e-03 - 7.94279014126e-03 8.79214216133e-03 9.97511028176e-03 1.15351431719e-02 1.35231772103e-02 1.59907282434e-02 - 1.89804120902e-02 2.25132701769e-02 2.65706573512e-02 3.10717223250e-02 3.58537824974e-02 4.06654278454e-02 - 4.51788789706e-02 4.90231496620e-02 5.18355302331e-02 5.33236907840e-02 5.33236907840e-02 5.18355302331e-02 - 4.90231496620e-02 4.51788789706e-02 4.06654278454e-02 3.58537824974e-02 3.10717223250e-02 2.65706573512e-02 - 2.17657781241e-02 1.86354478304e-02 1.59907282434e-02 1.38094745262e-02 1.20550163598e-02 1.06856809758e-02 - 9.66211927865e-03 8.95261635749e-03 8.53524112695e-03 8.39746782805e-03 8.53524112695e-03 8.95261635749e-03 - 9.66211927865e-03 1.06856809758e-02 1.20550163598e-02 1.38094745262e-02 1.59907282434e-02 1.86354478304e-02 - 2.17657781241e-02 2.53749373622e-02 2.94074293899e-02 3.37399765679e-02 3.81729635435e-02 4.24386109393e-02 - 4.62258246981e-02 4.92182336225e-02 5.11403130173e-02 5.18034033720e-02 5.11403130173e-02 4.92182336225e-02 - 4.62258246981e-02 4.24386109393e-02 3.81729635435e-02 3.37399765679e-02 2.94074293899e-02 2.53749373622e-02 - 2.17657781241e-02 1.89804120902e-02 1.66250325509e-02 1.46810426016e-02 1.31198380533e-02 1.19105819676e-02 - 1.10259974674e-02 1.04460621935e-02 1.01587603229e-02 1.01587603229e-02 1.04460621935e-02 1.10259974674e-02 - 1.19105819676e-02 1.31198380533e-02 1.46810426016e-02 1.66250325509e-02 1.89804120902e-02 2.17657781241e-02 - 2.49776956914e-02 2.85734174953e-02 3.24534608631e-02 3.64535808156e-02 4.03527020822e-02 4.38959177953e-02 - 4.68264624901e-02 4.89192305177e-02 5.00090134447e-02 5.00090134447e-02 4.89192305177e-02 4.68264624901e-02 - 4.38959177953e-02 4.03527020822e-02 3.64535808156e-02 3.24534608631e-02 2.85734174953e-02 2.49776956914e-02 - 2.25132701769e-02 2.00258575799e-02 1.79167348748e-02 1.61729889157e-02 1.47756456624e-02 1.37059602390e-02 - 1.29494247541e-02 1.24976141314e-02 1.23472319177e-02 1.24976141314e-02 1.29494247541e-02 1.37059602390e-02 - 1.47756456624e-02 1.61729889157e-02 1.79167348748e-02 2.00258575799e-02 2.25132701769e-02 2.53749373622e-02 - 2.85734174953e-02 3.20210145144e-02 3.55725175924e-02 3.90350130516e-02 4.21941579647e-02 4.48486167771e-02 - 4.68401774785e-02 4.80677366203e-02 4.84815544672e-02 4.80677366203e-02 4.68401774785e-02 4.48486167771e-02 - 4.21941579647e-02 3.90350130516e-02 3.55725175924e-02 3.20210145144e-02 2.85734174953e-02 2.53749373622e-02 - 2.40237109616e-02 2.18005508565e-02 1.99070659239e-02 1.83376793613e-02 1.70848695603e-02 1.61434902729e-02 - 1.55127511572e-02 1.51956958667e-02 1.51956958667e-02 1.55127511572e-02 1.61434902729e-02 1.70848695603e-02 - 1.83376793613e-02 1.99070659239e-02 2.18005508565e-02 2.40237109616e-02 2.65706573512e-02 2.94074293899e-02 - 3.24534608631e-02 3.55725175924e-02 3.85829474965e-02 4.12888114430e-02 4.35234290368e-02 4.51877782102e-02 - 4.62623331670e-02 4.67810667612e-02 4.67810667612e-02 4.62623331670e-02 4.51877782102e-02 4.35234290368e-02 - 4.12888114430e-02 3.85829474965e-02 3.55725175924e-02 3.24534608631e-02 2.94074293899e-02 2.65706573512e-02 - 2.63252408289e-02 2.43476957086e-02 2.26519365039e-02 2.12413612776e-02 2.01220876747e-02 1.93050944183e-02 - 1.88053010662e-02 1.86367379277e-02 1.88053010662e-02 1.93050944183e-02 2.01220876747e-02 2.12413612776e-02 - 2.26519365039e-02 2.43476957086e-02 2.63252408289e-02 2.85763383726e-02 3.10717223250e-02 3.37399765679e-02 - 3.64535808156e-02 3.90350130516e-02 4.12888114430e-02 4.30547772101e-02 4.42634768270e-02 4.49623774036e-02 - 4.52857661696e-02 4.53738413591e-02 4.52857661696e-02 4.49623774036e-02 4.42634768270e-02 4.30547772101e-02 - 4.12888114430e-02 3.90350130516e-02 3.64535808156e-02 3.37399765679e-02 3.10717223250e-02 2.85763383726e-02 - 2.94586793037e-02 2.77227537368e-02 2.62153172241e-02 2.49511167951e-02 2.39549635512e-02 2.32603028496e-02 - 2.29016184223e-02 2.29016184223e-02 2.32603028496e-02 2.39549635512e-02 2.49511167951e-02 2.62153172241e-02 - 2.77227537368e-02 2.94586793037e-02 3.14127386696e-02 3.35632692529e-02 3.58537824974e-02 3.81729635435e-02 - 4.03527020822e-02 4.21941579647e-02 4.35234290368e-02 4.42634768270e-02 4.44868574481e-02 4.44045560444e-02 - 4.42752514752e-02 4.42752514752e-02 4.44045560444e-02 4.44868574481e-02 4.42634768270e-02 4.35234290368e-02 - 4.21941579647e-02 4.03527020822e-02 3.81729635435e-02 3.58537824974e-02 3.35632692529e-02 3.14127386696e-02 - 3.34710625414e-02 3.19731919657e-02 3.06330408871e-02 2.94854041377e-02 2.85879356046e-02 2.80098127199e-02 - 2.78094015925e-02 2.80098127199e-02 2.85879356046e-02 2.94854041377e-02 3.06330408871e-02 3.19731919657e-02 - 3.34710625414e-02 3.51127517762e-02 3.68889471691e-02 3.87673596218e-02 4.06654278454e-02 4.24386109393e-02 - 4.38959177953e-02 4.48486167771e-02 4.51877782102e-02 4.49623774036e-02 4.44045560444e-02 4.38595264834e-02 - 4.36365698621e-02 4.38595264834e-02 4.44045560444e-02 4.49623774036e-02 4.51877782102e-02 4.48486167771e-02 - 4.38959177953e-02 4.24386109393e-02 4.06654278454e-02 3.87673596218e-02 3.68889471691e-02 3.51127517762e-02 - 3.83718132369e-02 3.70689589239e-02 3.58243136049e-02 3.47182328687e-02 3.38709874542e-02 3.34071767353e-02 - 3.34071767353e-02 3.38709874542e-02 3.47182328687e-02 3.58243136049e-02 3.70689589239e-02 3.83718132369e-02 - 3.97029159910e-02 4.10670403681e-02 4.24686468881e-02 4.38725463784e-02 4.51788789706e-02 4.62258246981e-02 - 4.68264624901e-02 4.68401774785e-02 4.62623331670e-02 4.52857661696e-02 4.42752514752e-02 4.36365698621e-02 - 4.36365698621e-02 4.42752514752e-02 4.52857661696e-02 4.62623331670e-02 4.68401774785e-02 4.68264624901e-02 - 4.62258246981e-02 4.51788789706e-02 4.38725463784e-02 4.24686468881e-02 4.10670403681e-02 3.97029159910e-02 - 4.40291518527e-02 4.27763236460e-02 4.14579289512e-02 4.02540981079e-02 3.93968315223e-02 3.90848689472e-02 - 3.93968315223e-02 4.02540981079e-02 4.14579289512e-02 4.27763236460e-02 4.40291518527e-02 4.51323632879e-02 - 4.60913389830e-02 4.69561004766e-02 4.77625301985e-02 4.84855850881e-02 4.90231496620e-02 4.92182336225e-02 - 4.89192305177e-02 4.80677366203e-02 4.67810667612e-02 4.53738413591e-02 4.42752514752e-02 4.38595264834e-02 - 4.42752514752e-02 4.53738413591e-02 4.67810667612e-02 4.80677366203e-02 4.89192305177e-02 4.92182336225e-02 - 4.90231496620e-02 4.84855850881e-02 4.77625301985e-02 4.69561004766e-02 4.60913389830e-02 4.51323632879e-02 - 5.00090134447e-02 4.84815544672e-02 4.67810667612e-02 4.52857661696e-02 4.44045560444e-02 4.44045560444e-02 - 4.52857661696e-02 4.67810667612e-02 4.84815544672e-02 5.00090134447e-02 5.11403130173e-02 5.18355302331e-02 - 5.21839135623e-02 5.23143637463e-02 5.23143637463e-02 5.21839135623e-02 5.18355302331e-02 5.11403130173e-02 - 5.00090134447e-02 4.84815544672e-02 4.67810667612e-02 4.52857661696e-02 4.44045560444e-02 4.44045560444e-02 - 4.52857661696e-02 4.67810667612e-02 4.84815544672e-02 5.00090134447e-02 5.11403130173e-02 5.18355302331e-02 - 5.21839135623e-02 5.23143637463e-02 5.23143637463e-02 5.21839135623e-02 5.18355302331e-02 5.11403130173e-02 - 5.53499973529e-02 5.29676178633e-02 5.04463447592e-02 4.85080722970e-02 4.77793166757e-02 4.85080722970e-02 - 5.04463447592e-02 5.29676178633e-02 5.53499973529e-02 5.70612480291e-02 5.78981879671e-02 5.79474348197e-02 - 5.74449785733e-02 5.66331890923e-02 5.56676247698e-02 5.45841783826e-02 5.33236907840e-02 5.18034033720e-02 - 5.00090134447e-02 4.80677366203e-02 4.62623331670e-02 4.49623774036e-02 4.44868574481e-02 4.49623774036e-02 - 4.62623331670e-02 4.80677366203e-02 5.00090134447e-02 5.18034033720e-02 5.33236907840e-02 5.45841783826e-02 - 5.56676247698e-02 5.66331890923e-02 5.74449785733e-02 5.79474348197e-02 5.78981879671e-02 5.70612480291e-02 - 5.83399236929e-02 5.43239294918e-02 5.06194135765e-02 4.83941231678e-02 4.83941231678e-02 5.06194135765e-02 - 5.43239294918e-02 5.83399236929e-02 6.15702941626e-02 6.33842515281e-02 6.37149803432e-02 6.28828729732e-02 - 6.13334872428e-02 5.94462807362e-02 5.74494623672e-02 5.54167137150e-02 5.33236907840e-02 5.11403130173e-02 - 4.89192305177e-02 4.68401774785e-02 4.51877782102e-02 4.42634768270e-02 4.42634768270e-02 4.51877782102e-02 - 4.68401774785e-02 4.89192305177e-02 5.11403130173e-02 5.33236907840e-02 5.54167137150e-02 5.74494623672e-02 - 5.94462807362e-02 6.13334872428e-02 6.28828729732e-02 6.37149803432e-02 6.33842515281e-02 6.15702941626e-02 - 5.67236888968e-02 5.05555186569e-02 4.58777097769e-02 4.41366450522e-02 4.58777097769e-02 5.05555186569e-02 - 5.67236888968e-02 6.25800698666e-02 6.66786802062e-02 6.84139609392e-02 6.80033074139e-02 6.61022866145e-02 - 6.34040688222e-02 6.04237632524e-02 5.74494623672e-02 5.45841783826e-02 5.18355302331e-02 4.92182336225e-02 - 4.68264624901e-02 4.48486167771e-02 4.35234290368e-02 4.30547772101e-02 4.35234290368e-02 4.48486167771e-02 - 4.68264624901e-02 4.92182336225e-02 5.18355302331e-02 5.45841783826e-02 5.74494623672e-02 6.04237632524e-02 - 6.34040688222e-02 6.61022866145e-02 6.80033074139e-02 6.84139609392e-02 6.66786802062e-02 6.25800698666e-02 - 4.89850720157e-02 4.11986868029e-02 3.67025276917e-02 3.67025276917e-02 4.11986868029e-02 4.89850720157e-02 - 5.79103146750e-02 6.55787911247e-02 7.03019494995e-02 7.16581855164e-02 7.02831021338e-02 6.72218662363e-02 - 6.34040688222e-02 5.94462807362e-02 5.56676247698e-02 5.21839135623e-02 4.90231496620e-02 4.62258246981e-02 - 4.38959177953e-02 4.21941579647e-02 4.12888114430e-02 4.12888114430e-02 4.21941579647e-02 4.38959177953e-02 - 4.62258246981e-02 4.90231496620e-02 5.21839135623e-02 5.56676247698e-02 5.94462807362e-02 6.34040688222e-02 - 6.72218662363e-02 7.02831021338e-02 7.16581855164e-02 7.03019494995e-02 6.55787911247e-02 5.79103146750e-02 - 3.62214481565e-02 2.86292518106e-02 2.59250062413e-02 2.86292518106e-02 3.62214481565e-02 4.70389926376e-02 - 5.83777841365e-02 6.73541476702e-02 7.21810172465e-02 7.27796836797e-02 7.02831021338e-02 6.61022866145e-02 - 6.13334872428e-02 5.66331890923e-02 5.23143637463e-02 4.84855850881e-02 4.51788789706e-02 4.24386109393e-02 - 4.03527020822e-02 3.90350130516e-02 3.85829474965e-02 3.90350130516e-02 4.03527020822e-02 4.24386109393e-02 - 4.51788789706e-02 4.84855850881e-02 5.23143637463e-02 5.66331890923e-02 6.13334872428e-02 6.61022866145e-02 - 7.02831021338e-02 7.27796836797e-02 7.21810172465e-02 6.73541476702e-02 5.83777841365e-02 4.70389926376e-02 - 2.23413746600e-02 1.69491736420e-02 1.69491736420e-02 2.23413746600e-02 3.25101129901e-02 4.56222411881e-02 - 5.85232784436e-02 6.79419572879e-02 7.21810172465e-02 7.16581855164e-02 6.80033074139e-02 6.28828729732e-02 - 5.74449785733e-02 5.23143637463e-02 4.77625301985e-02 4.38725463784e-02 4.06654278454e-02 3.81729635435e-02 - 3.64535808156e-02 3.55725175924e-02 3.55725175924e-02 3.64535808156e-02 3.81729635435e-02 4.06654278454e-02 - 4.38725463784e-02 4.77625301985e-02 5.23143637463e-02 5.74449785733e-02 6.28828729732e-02 6.80033074139e-02 - 7.16581855164e-02 7.21810172465e-02 6.79419572879e-02 5.85232784436e-02 4.56222411881e-02 3.25101129901e-02 - 1.14596764125e-02 9.05419851032e-03 1.14596764125e-02 1.87771308641e-02 3.06594619284e-02 4.51254329663e-02 - 5.85232784436e-02 6.73541476702e-02 7.03019494995e-02 6.84139609392e-02 6.37149803432e-02 5.79474348197e-02 - 5.21839135623e-02 4.69561004766e-02 4.24686468881e-02 3.87673596218e-02 3.58537824974e-02 3.37399765679e-02 - 3.24534608631e-02 3.20210145144e-02 3.24534608631e-02 3.37399765679e-02 3.58537824974e-02 3.87673596218e-02 - 4.24686468881e-02 4.69561004766e-02 5.21839135623e-02 5.79474348197e-02 6.37149803432e-02 6.84139609392e-02 - 7.03019494995e-02 6.73541476702e-02 5.85232784436e-02 4.51254329663e-02 3.06594619284e-02 1.87771308641e-02 - 5.17285277950e-03 5.17285277950e-03 9.13060134292e-03 1.76819501362e-02 3.06594619284e-02 4.56222411881e-02 - 5.83777841365e-02 6.55787911247e-02 6.66786802062e-02 6.33842515281e-02 5.78981879671e-02 5.18355302331e-02 - 4.60913389830e-02 4.10670403681e-02 3.68889471691e-02 3.35632692529e-02 3.10717223250e-02 2.94074293899e-02 - 2.85734174953e-02 2.85734174953e-02 2.94074293899e-02 3.10717223250e-02 3.35632692529e-02 3.68889471691e-02 - 4.10670403681e-02 4.60913389830e-02 5.18355302331e-02 5.78981879671e-02 6.33842515281e-02 6.66786802062e-02 - 6.55787911247e-02 5.83777841365e-02 4.56222411881e-02 3.06594619284e-02 1.76819501362e-02 9.13060134292e-03 - 2.64004483879e-03 4.10298626852e-03 9.13060134292e-03 1.87771308641e-02 3.25101129901e-02 4.70389926376e-02 - 5.79103146750e-02 6.25800698666e-02 6.15702941626e-02 5.70612480291e-02 5.11403130173e-02 4.51323632879e-02 - 3.97029159910e-02 3.51127517762e-02 3.14127386696e-02 2.85763383726e-02 2.65706573512e-02 2.53749373622e-02 - 2.49776956914e-02 2.53749373622e-02 2.65706573512e-02 2.85763383726e-02 3.14127386696e-02 3.51127517762e-02 - 3.97029159910e-02 4.51323632879e-02 5.11403130173e-02 5.70612480291e-02 6.15702941626e-02 6.25800698666e-02 - 5.79103146750e-02 4.70389926376e-02 3.25101129901e-02 1.87771308641e-02 9.13060134292e-03 4.10298626852e-03 - 7.45857574908e-03 1.14596764125e-02 1.93490286376e-02 3.07039905741e-02 4.26203265537e-02 5.12221625406e-02 - 5.43925934286e-02 5.26931433274e-02 4.80677366203e-02 4.23378898536e-02 3.66568505349e-02 3.16041856284e-02 - 2.73972646659e-02 2.40594329852e-02 2.15413174517e-02 1.97871783123e-02 1.87538902948e-02 1.84129279741e-02 - 1.87538902948e-02 1.97871783123e-02 2.15413174517e-02 2.40594329852e-02 2.73972646659e-02 3.16041856284e-02 - 3.66568505349e-02 4.23378898536e-02 4.80677366203e-02 5.26931433274e-02 5.43925934286e-02 5.12221625406e-02 - 4.26203265537e-02 3.07039905741e-02 1.93490286376e-02 1.14596764125e-02 7.45857574908e-03 6.32692063078e-03 - 1.14596764125e-02 1.69491736420e-02 2.59250062413e-02 3.67025276917e-02 4.58777097769e-02 5.06194135765e-02 - 5.04463447592e-02 4.67810667612e-02 4.14579289512e-02 3.58243136049e-02 3.06330408871e-02 2.62153172241e-02 - 2.26519365039e-02 1.99070659239e-02 1.79167348748e-02 1.66250325509e-02 1.59907282434e-02 1.59907282434e-02 - 1.66250325509e-02 1.79167348748e-02 1.99070659239e-02 2.26519365039e-02 2.62153172241e-02 3.06330408871e-02 - 3.58243136049e-02 4.14579289512e-02 4.67810667612e-02 5.04463447592e-02 5.06194135765e-02 4.58777097769e-02 - 3.67025276917e-02 2.59250062413e-02 1.69491736420e-02 1.14596764125e-02 9.13060134292e-03 9.13060134292e-03 - 1.93490286376e-02 2.59250062413e-02 3.45455630665e-02 4.27064575993e-02 4.76689314688e-02 4.83002627794e-02 - 4.53738413591e-02 4.04742233092e-02 3.49773595797e-02 2.97391273192e-02 2.51823253991e-02 2.14468462049e-02 - 1.85201445811e-02 1.63370205752e-02 1.48317912783e-02 1.39522993746e-02 1.36633879542e-02 1.39522993746e-02 - 1.48317912783e-02 1.63370205752e-02 1.85201445811e-02 2.14468462049e-02 2.51823253991e-02 2.97391273192e-02 - 3.49773595797e-02 4.04742233092e-02 4.53738413591e-02 4.83002627794e-02 4.76689314688e-02 4.27064575993e-02 - 3.45455630665e-02 2.59250062413e-02 1.93490286376e-02 1.56860392578e-02 1.45732066269e-02 1.56860392578e-02 - 3.07039905741e-02 3.67025276917e-02 4.27064575993e-02 4.65545163206e-02 4.69885184966e-02 4.42752514752e-02 - 3.96081166256e-02 3.42208946471e-02 2.89691250092e-02 2.43184216158e-02 2.04512222766e-02 1.73786828448e-02 - 1.50389831834e-02 1.33594815778e-02 1.22786655737e-02 1.17508350709e-02 1.17508350709e-02 1.22786655737e-02 - 1.33594815778e-02 1.50389831834e-02 1.73786828448e-02 2.04512222766e-02 2.43184216158e-02 2.89691250092e-02 - 3.42208946471e-02 3.96081166256e-02 4.42752514752e-02 4.69885184966e-02 4.65545163206e-02 4.27064575993e-02 - 3.67025276917e-02 3.07039905741e-02 2.63856510811e-02 2.42761411551e-02 2.42761411551e-02 2.63856510811e-02 - 4.26203265537e-02 4.58777097769e-02 4.76689314688e-02 4.69885184966e-02 4.38595264834e-02 3.90976289629e-02 - 3.36893635306e-02 2.83925891295e-02 2.36566460915e-02 1.96777557044e-02 1.64818809732e-02 1.40109856905e-02 - 1.21873907787e-02 1.09414577715e-02 1.02181471415e-02 9.98127039361e-03 1.02181471415e-02 1.09414577715e-02 - 1.21873907787e-02 1.40109856905e-02 1.64818809732e-02 1.96777557044e-02 2.36566460915e-02 2.83925891295e-02 - 3.36893635306e-02 3.90976289629e-02 4.38595264834e-02 4.69885184966e-02 4.76689314688e-02 4.58777097769e-02 - 4.26203265537e-02 3.93541671489e-02 3.71417160544e-02 3.63849623957e-02 3.71417160544e-02 3.93541671489e-02 - 5.12221625406e-02 5.06194135765e-02 4.83002627794e-02 4.42752514752e-02 3.90976289629e-02 3.34971688966e-02 - 2.80812943983e-02 2.32368358951e-02 1.91448778653e-02 1.58329883187e-02 1.32437842255e-02 1.12951380995e-02 - 9.91029781221e-03 9.02578945364e-03 8.59555582378e-03 8.59555582378e-03 9.02578945364e-03 9.91029781221e-03 - 1.12951380995e-02 1.32437842255e-02 1.58329883187e-02 1.91448778653e-02 2.32368358951e-02 2.80812943983e-02 - 3.34971688966e-02 3.90976289629e-02 4.42752514752e-02 4.83002627794e-02 5.06194135765e-02 5.12221625406e-02 - 5.07010770424e-02 4.98718618187e-02 4.93308963719e-02 4.93308963719e-02 4.98718618187e-02 5.07010770424e-02 - 5.43925934286e-02 5.04463447592e-02 4.53738413591e-02 3.96081166256e-02 3.36893635306e-02 2.80812943983e-02 - 2.30924993956e-02 1.88720574247e-02 1.54388806266e-02 1.27327884289e-02 1.06671499136e-02 9.15892896774e-03 - 8.13716815266e-03 7.54684340873e-03 7.35383003280e-03 7.54684340873e-03 8.13716815266e-03 9.15892896774e-03 - 1.06671499136e-02 1.27327884289e-02 1.54388806266e-02 1.88720574247e-02 2.30924993956e-02 2.80812943983e-02 - 3.36893635306e-02 3.96081166256e-02 4.53738413591e-02 5.04463447592e-02 5.43925934286e-02 5.70772559013e-02 - 5.86758842735e-02 5.94868177545e-02 5.97323039443e-02 5.94868177545e-02 5.86758842735e-02 5.70772559013e-02 - 5.26931433274e-02 4.67810667612e-02 4.04742233092e-02 3.42208946471e-02 2.83925891295e-02 2.32368358951e-02 - 1.88720574247e-02 1.53065353883e-02 1.24770996440e-02 1.02937156151e-02 8.66817035987e-03 7.52314503521e-03 - 6.79567554150e-03 6.44245195186e-03 6.44245195186e-03 6.79567554150e-03 7.52314503521e-03 8.66817035987e-03 - 1.02937156151e-02 1.24770996440e-02 1.53065353883e-02 1.88720574247e-02 2.32368358951e-02 2.83925891295e-02 - 3.42208946471e-02 4.04742233092e-02 4.67810667612e-02 5.26931433274e-02 5.77843769256e-02 6.17513938278e-02 - 6.44394828494e-02 6.57918464265e-02 6.57918464265e-02 6.44394828494e-02 6.17513938278e-02 5.77843769256e-02 - 4.80677366203e-02 4.14579289512e-02 3.49773595797e-02 2.89691250092e-02 2.36566460915e-02 1.91448778653e-02 - 1.54388806266e-02 1.24770996440e-02 1.01697655067e-02 8.42580807925e-03 7.16308508658e-03 6.31209415558e-03 - 5.82127807001e-03 5.66079261571e-03 5.82127807001e-03 6.31209415558e-03 7.16308508658e-03 8.42580807925e-03 - 1.01697655067e-02 1.24770996440e-02 1.54388806266e-02 1.91448778653e-02 2.36566460915e-02 2.89691250092e-02 - 3.49773595797e-02 4.14579289512e-02 4.80677366203e-02 5.43692149489e-02 5.98878714669e-02 6.41840706496e-02 - 6.69101294891e-02 6.78442738531e-02 6.69101294891e-02 6.41840706496e-02 5.98878714669e-02 5.43692149489e-02 - 4.23378898536e-02 3.58243136049e-02 2.97391273192e-02 2.43184216158e-02 1.96777557044e-02 1.58329883187e-02 - 1.27327884289e-02 1.02937156151e-02 8.42580807925e-03 7.04448483440e-03 6.07562992209e-03 5.46093720174e-03 - 5.16243150929e-03 5.16243150929e-03 5.46093720174e-03 6.07562992209e-03 7.04448483440e-03 8.42580807925e-03 - 1.02937156151e-02 1.27327884289e-02 1.58329883187e-02 1.96777557044e-02 2.43184216158e-02 2.97391273192e-02 - 3.58243136049e-02 4.23378898536e-02 4.89192305177e-02 5.51031089527e-02 6.03694423859e-02 6.42180018992e-02 - 6.62522137956e-02 6.62522137956e-02 6.42180018992e-02 6.03694423859e-02 5.51031089527e-02 4.89192305177e-02 - 3.66568505349e-02 3.06330408871e-02 2.51823253991e-02 2.04512222766e-02 1.64818809732e-02 1.32437842255e-02 - 1.06671499136e-02 8.66817035987e-03 7.16308508658e-03 6.07562992209e-03 5.34296096392e-03 4.92029966810e-03 - 4.78210810048e-03 4.92029966810e-03 5.34296096392e-03 6.07562992209e-03 7.16308508658e-03 8.66817035987e-03 - 1.06671499136e-02 1.32437842255e-02 1.64818809732e-02 2.04512222766e-02 2.51823253991e-02 3.06330408871e-02 - 3.66568505349e-02 4.29832635915e-02 4.92182336225e-02 5.48714786192e-02 5.94150808572e-02 6.23688231248e-02 - 6.33941825467e-02 6.23688231248e-02 5.94150808572e-02 5.48714786192e-02 4.92182336225e-02 4.29832635915e-02 - 3.16041856284e-02 2.62153172241e-02 2.14468462049e-02 1.73786828448e-02 1.40109856905e-02 1.12951380995e-02 - 9.15892896774e-03 7.52314503521e-03 6.31209415558e-03 5.46093720174e-03 4.92029966810e-03 4.65785937656e-03 - 4.65785937656e-03 4.92029966810e-03 5.46093720174e-03 6.31209415558e-03 7.52314503521e-03 9.15892896774e-03 - 1.12951380995e-02 1.40109856905e-02 1.73786828448e-02 2.14468462049e-02 2.62153172241e-02 3.16041856284e-02 - 3.74259862301e-02 4.33721592307e-02 4.90231496620e-02 5.38883507401e-02 5.74762428735e-02 5.93841418824e-02 - 5.93841418824e-02 5.74762428735e-02 5.38883507401e-02 4.90231496620e-02 4.33721592307e-02 3.74259862301e-02 - 2.73972646659e-02 2.26519365039e-02 1.85201445811e-02 1.50389831834e-02 1.21873907787e-02 9.91029781221e-03 - 8.13716815266e-03 6.79567554150e-03 5.82127807001e-03 5.16243150929e-03 4.78210810048e-03 4.65785937656e-03 - 4.78210810048e-03 5.16243150929e-03 5.82127807001e-03 6.79567554150e-03 8.13716815266e-03 9.91029781221e-03 - 1.21873907787e-02 1.50389831834e-02 1.85201445811e-02 2.26519365039e-02 2.73972646659e-02 3.26341221073e-02 - 3.81345549630e-02 4.35604474537e-02 4.84855850881e-02 5.24477482650e-02 5.50251512552e-02 5.59201471811e-02 - 5.50251512552e-02 5.24477482650e-02 4.84855850881e-02 4.35604474537e-02 3.81345549630e-02 3.26341221073e-02 - 2.40594329852e-02 1.99070659239e-02 1.63370205752e-02 1.33594815778e-02 1.09414577715e-02 9.02578945364e-03 - 7.54684340873e-03 6.44245195186e-03 5.66079261571e-03 5.16243150929e-03 4.92029966810e-03 4.92029966810e-03 - 5.16243150929e-03 5.66079261571e-03 6.44245195186e-03 7.54684340873e-03 9.02578945364e-03 1.09414577715e-02 - 1.33594815778e-02 1.63370205752e-02 1.99070659239e-02 2.40594329852e-02 2.87187367840e-02 3.37228748044e-02 - 3.88104397494e-02 4.36277000850e-02 4.77625301985e-02 5.08044555558e-02 5.24194501424e-02 5.24194501424e-02 - 5.08044555558e-02 4.77625301985e-02 4.36277000850e-02 3.88104397494e-02 3.37228748044e-02 2.87187367840e-02 - 2.15413174517e-02 1.79167348748e-02 1.48317912783e-02 1.22786655737e-02 1.02181471415e-02 8.59555582378e-03 - 7.35383003280e-03 6.44245195186e-03 5.82127807001e-03 5.46093720174e-03 5.34296096392e-03 5.46093720174e-03 - 5.82127807001e-03 6.44245195186e-03 7.35383003280e-03 8.59555582378e-03 1.02181471415e-02 1.22786655737e-02 - 1.48317912783e-02 1.79167348748e-02 2.15413174517e-02 2.56635113913e-02 3.01717861136e-02 3.48695445110e-02 - 3.94725484932e-02 4.36277000850e-02 4.69561004766e-02 4.91148354625e-02 4.98633146719e-02 4.91148354625e-02 - 4.69561004766e-02 4.36277000850e-02 3.94725484932e-02 3.48695445110e-02 3.01717861136e-02 2.56635113913e-02 - 1.97871783123e-02 1.66250325509e-02 1.39522993746e-02 1.17508350709e-02 9.98127039361e-03 8.59555582378e-03 - 7.54684340873e-03 6.79567554150e-03 6.31209415558e-03 6.07562992209e-03 6.07562992209e-03 6.31209415558e-03 - 6.79567554150e-03 7.54684340873e-03 8.59555582378e-03 9.98127039361e-03 1.17508350709e-02 1.39522993746e-02 - 1.66250325509e-02 1.97871783123e-02 2.34202555044e-02 2.74512061786e-02 3.17358390207e-02 3.60511821341e-02 - 4.01041807768e-02 4.35604474537e-02 4.60913389830e-02 4.74313143781e-02 4.74313143781e-02 4.60913389830e-02 - 4.35604474537e-02 4.01041807768e-02 3.60511821341e-02 3.17358390207e-02 2.74512061786e-02 2.34202555044e-02 - 1.87538902948e-02 1.59907282434e-02 1.36633879542e-02 1.17508350709e-02 1.02181471415e-02 9.02578945364e-03 - 8.13716815266e-03 7.52314503521e-03 7.16308508658e-03 7.04448483440e-03 7.16308508658e-03 7.52314503521e-03 - 8.13716815266e-03 9.02578945364e-03 1.02181471415e-02 1.17508350709e-02 1.36633879542e-02 1.59907282434e-02 - 1.87538902948e-02 2.19482820950e-02 2.55281844546e-02 2.93901320501e-02 3.33624200108e-02 3.72078996967e-02 - 4.06430475235e-02 4.33721592307e-02 4.51323632879e-02 4.57409612273e-02 4.51323632879e-02 4.33721592307e-02 - 4.06430475235e-02 3.72078996967e-02 3.33624200108e-02 2.93901320501e-02 2.55281844546e-02 2.19482820950e-02 - 1.84129279741e-02 1.59907282434e-02 1.39522993746e-02 1.22786655737e-02 1.09414577715e-02 9.91029781221e-03 - 9.15892896774e-03 8.66817035987e-03 8.42580807925e-03 8.42580807925e-03 8.66817035987e-03 9.15892896774e-03 - 9.91029781221e-03 1.09414577715e-02 1.22786655737e-02 1.39522993746e-02 1.59907282434e-02 1.84129279741e-02 - 2.12198093897e-02 2.43819637041e-02 2.78244998346e-02 3.14154606035e-02 3.49654910486e-02 3.82415861113e-02 - 4.09927131873e-02 4.29832635915e-02 4.40291518527e-02 4.40291518527e-02 4.29832635915e-02 4.09927131873e-02 - 3.82415861113e-02 3.49654910486e-02 3.14154606035e-02 2.78244998346e-02 2.43819637041e-02 2.12198093897e-02 - 1.87538902948e-02 1.66250325509e-02 1.48317912783e-02 1.33594815778e-02 1.21873907787e-02 1.12951380995e-02 - 1.06671499136e-02 1.02937156151e-02 1.01697655067e-02 1.02937156151e-02 1.06671499136e-02 1.12951380995e-02 - 1.21873907787e-02 1.33594815778e-02 1.48317912783e-02 1.66250325509e-02 1.87538902948e-02 2.12198093897e-02 - 2.40011711299e-02 2.70402901784e-02 3.02323588099e-02 3.34242157073e-02 3.64263171972e-02 3.90347179512e-02 - 4.10571769449e-02 4.23378898536e-02 4.27763236460e-02 4.23378898536e-02 4.10571769449e-02 3.90347179512e-02 - 3.64263171972e-02 3.34242157073e-02 3.02323588099e-02 2.70402901784e-02 2.40011711299e-02 2.12198093897e-02 - 1.97871783123e-02 1.79167348748e-02 1.63370205752e-02 1.50389831834e-02 1.40109856905e-02 1.32437842255e-02 - 1.27327884289e-02 1.24770996440e-02 1.24770996440e-02 1.27327884289e-02 1.32437842255e-02 1.40109856905e-02 - 1.50389831834e-02 1.63370205752e-02 1.79167348748e-02 1.97871783123e-02 2.19482820950e-02 2.43819637041e-02 - 2.70402901784e-02 2.98349904445e-02 3.26363277502e-02 3.52857897121e-02 3.76190713504e-02 3.94908104948e-02 - 4.07924714489e-02 4.14579289512e-02 4.14579289512e-02 4.07924714489e-02 3.94908104948e-02 3.76190713504e-02 - 3.52857897121e-02 3.26363277502e-02 2.98349904445e-02 2.70402901784e-02 2.43819637041e-02 2.19482820950e-02 - 2.15413174517e-02 1.99070659239e-02 1.85201445811e-02 1.73786828448e-02 1.64818809732e-02 1.58329883187e-02 - 1.54388806266e-02 1.53065353883e-02 1.54388806266e-02 1.58329883187e-02 1.64818809732e-02 1.73786828448e-02 - 1.85201445811e-02 1.99070659239e-02 2.15413174517e-02 2.34202555044e-02 2.55281844546e-02 2.78244998346e-02 - 3.02323588099e-02 3.26363277502e-02 3.48956024912e-02 3.68707660171e-02 3.84534160516e-02 3.95849180057e-02 - 4.02540981079e-02 4.04742233092e-02 4.02540981079e-02 3.95849180057e-02 3.84534160516e-02 3.68707660171e-02 - 3.48956024912e-02 3.26363277502e-02 3.02323588099e-02 2.78244998346e-02 2.55281844546e-02 2.34202555044e-02 - 2.40594329852e-02 2.26519365039e-02 2.14468462049e-02 2.04512222766e-02 1.96777557044e-02 1.91448778653e-02 - 1.88720574247e-02 1.88720574247e-02 1.91448778653e-02 1.96777557044e-02 2.04512222766e-02 2.14468462049e-02 - 2.26519365039e-02 2.40594329852e-02 2.56635113913e-02 2.74512061786e-02 2.93901320501e-02 3.14154606035e-02 - 3.34242157073e-02 3.52857897121e-02 3.68707660171e-02 3.80886538087e-02 3.89160663350e-02 3.93968315223e-02 - 3.96081166256e-02 3.96081166256e-02 3.93968315223e-02 3.89160663350e-02 3.80886538087e-02 3.68707660171e-02 - 3.52857897121e-02 3.34242157073e-02 3.14154606035e-02 2.93901320501e-02 2.74512061786e-02 2.56635113913e-02 - 2.73972646659e-02 2.62153172241e-02 2.51823253991e-02 2.43184216158e-02 2.36566460915e-02 2.32368358951e-02 - 2.30924993956e-02 2.32368358951e-02 2.36566460915e-02 2.43184216158e-02 2.51823253991e-02 2.62153172241e-02 - 2.73972646659e-02 2.87187367840e-02 3.01717861136e-02 3.17358390207e-02 3.33624200108e-02 3.49654910486e-02 - 3.64263171972e-02 3.76190713504e-02 3.84534160516e-02 3.89160663350e-02 3.90848689472e-02 3.90976289629e-02 - 3.90842281235e-02 3.90976289629e-02 3.90848689472e-02 3.89160663350e-02 3.84534160516e-02 3.76190713504e-02 - 3.64263171972e-02 3.49654910486e-02 3.33624200108e-02 3.17358390207e-02 3.01717861136e-02 2.87187367840e-02 - 3.16041856284e-02 3.06330408871e-02 2.97391273192e-02 2.89691250092e-02 2.83925891295e-02 2.80812943983e-02 - 2.80812943983e-02 2.83925891295e-02 2.89691250092e-02 2.97391273192e-02 3.06330408871e-02 3.16041856284e-02 - 3.26341221073e-02 3.37228748044e-02 3.48695445110e-02 3.60511821341e-02 3.72078996967e-02 3.82415861113e-02 - 3.90347179512e-02 3.94908104948e-02 3.95849180057e-02 3.93968315223e-02 3.90976289629e-02 3.88830541657e-02 - 3.88830541657e-02 3.90976289629e-02 3.93968315223e-02 3.95849180057e-02 3.94908104948e-02 3.90347179512e-02 - 3.82415861113e-02 3.72078996967e-02 3.60511821341e-02 3.48695445110e-02 3.37228748044e-02 3.26341221073e-02 - 3.66568505349e-02 3.58243136049e-02 3.49773595797e-02 3.42208946471e-02 3.36893635306e-02 3.34971688966e-02 - 3.36893635306e-02 3.42208946471e-02 3.49773595797e-02 3.58243136049e-02 3.66568505349e-02 3.74259862301e-02 - 3.81345549630e-02 3.88104397494e-02 3.94725484932e-02 4.01041807768e-02 4.06430475235e-02 4.09927131873e-02 - 4.10571769449e-02 4.07924714489e-02 4.02540981079e-02 3.96081166256e-02 3.90842281235e-02 3.88830541657e-02 - 3.90842281235e-02 3.96081166256e-02 4.02540981079e-02 4.07924714489e-02 4.10571769449e-02 4.09927131873e-02 - 4.06430475235e-02 4.01041807768e-02 3.94725484932e-02 3.88104397494e-02 3.81345549630e-02 3.74259862301e-02 - 4.23378898536e-02 4.14579289512e-02 4.04742233092e-02 3.96081166256e-02 3.90976289629e-02 3.90976289629e-02 - 3.96081166256e-02 4.04742233092e-02 4.14579289512e-02 4.23378898536e-02 4.29832635915e-02 4.33721592307e-02 - 4.35604474537e-02 4.36277000850e-02 4.36277000850e-02 4.35604474537e-02 4.33721592307e-02 4.29832635915e-02 - 4.23378898536e-02 4.14579289512e-02 4.04742233092e-02 3.96081166256e-02 3.90976289629e-02 3.90976289629e-02 - 3.96081166256e-02 4.04742233092e-02 4.14579289512e-02 4.23378898536e-02 4.29832635915e-02 4.33721592307e-02 - 4.35604474537e-02 4.36277000850e-02 4.36277000850e-02 4.35604474537e-02 4.33721592307e-02 4.29832635915e-02 - 4.80677366203e-02 4.67810667612e-02 4.53738413591e-02 4.42752514752e-02 4.38595264834e-02 4.42752514752e-02 - 4.53738413591e-02 4.67810667612e-02 4.80677366203e-02 4.89192305177e-02 4.92182336225e-02 4.90231496620e-02 - 4.84855850881e-02 4.77625301985e-02 4.69561004766e-02 4.60913389830e-02 4.51323632879e-02 4.40291518527e-02 - 4.27763236460e-02 4.14579289512e-02 4.02540981079e-02 3.93968315223e-02 3.90848689472e-02 3.93968315223e-02 - 4.02540981079e-02 4.14579289512e-02 4.27763236460e-02 4.40291518527e-02 4.51323632879e-02 4.60913389830e-02 - 4.69561004766e-02 4.77625301985e-02 4.84855850881e-02 4.90231496620e-02 4.92182336225e-02 4.89192305177e-02 - 5.26931433274e-02 5.04463447592e-02 4.83002627794e-02 4.69885184966e-02 4.69885184966e-02 4.83002627794e-02 - 5.04463447592e-02 5.26931433274e-02 5.43692149489e-02 5.51031089527e-02 5.48714786192e-02 5.38883507401e-02 - 5.24477482650e-02 5.08044555558e-02 4.91148354625e-02 4.74313143781e-02 4.57409612273e-02 4.40291518527e-02 - 4.23378898536e-02 4.07924714489e-02 3.95849180057e-02 3.89160663350e-02 3.89160663350e-02 3.95849180057e-02 - 4.07924714489e-02 4.23378898536e-02 4.40291518527e-02 4.57409612273e-02 4.74313143781e-02 4.91148354625e-02 - 5.08044555558e-02 5.24477482650e-02 5.38883507401e-02 5.48714786192e-02 5.51031089527e-02 5.43692149489e-02 - 5.43925934286e-02 5.06194135765e-02 4.76689314688e-02 4.65545163206e-02 4.76689314688e-02 5.06194135765e-02 - 5.43925934286e-02 5.77843769256e-02 5.98878714669e-02 6.03694423859e-02 5.94150808572e-02 5.74762428735e-02 - 5.50251512552e-02 5.24194501424e-02 4.98633146719e-02 4.74313143781e-02 4.51323632879e-02 4.29832635915e-02 - 4.10571769449e-02 3.94908104948e-02 3.84534160516e-02 3.80886538087e-02 3.84534160516e-02 3.94908104948e-02 - 4.10571769449e-02 4.29832635915e-02 4.51323632879e-02 4.74313143781e-02 4.98633146719e-02 5.24194501424e-02 - 5.50251512552e-02 5.74762428735e-02 5.94150808572e-02 6.03694423859e-02 5.98878714669e-02 5.77843769256e-02 - 5.12221625406e-02 4.58777097769e-02 4.27064575993e-02 4.27064575993e-02 4.58777097769e-02 5.12221625406e-02 - 5.70772559013e-02 6.17513938278e-02 6.41840706496e-02 6.42180018992e-02 6.23688231248e-02 5.93841418824e-02 - 5.59201471811e-02 5.24194501424e-02 4.91148354625e-02 4.60913389830e-02 4.33721592307e-02 4.09927131873e-02 - 3.90347179512e-02 3.76190713504e-02 3.68707660171e-02 3.68707660171e-02 3.76190713504e-02 3.90347179512e-02 - 4.09927131873e-02 4.33721592307e-02 4.60913389830e-02 4.91148354625e-02 5.24194501424e-02 5.59201471811e-02 - 5.93841418824e-02 6.23688231248e-02 6.42180018992e-02 6.41840706496e-02 6.17513938278e-02 5.70772559013e-02 - 4.26203265537e-02 3.67025276917e-02 3.45455630665e-02 3.67025276917e-02 4.26203265537e-02 5.07010770424e-02 - 5.86758842735e-02 6.44394828494e-02 6.69101294891e-02 6.62522137956e-02 6.33941825467e-02 5.93841418824e-02 - 5.50251512552e-02 5.08044555558e-02 4.69561004766e-02 4.35604474537e-02 4.06430475235e-02 3.82415861113e-02 - 3.64263171972e-02 3.52857897121e-02 3.48956024912e-02 3.52857897121e-02 3.64263171972e-02 3.82415861113e-02 - 4.06430475235e-02 4.35604474537e-02 4.69561004766e-02 5.08044555558e-02 5.50251512552e-02 5.93841418824e-02 - 6.33941825467e-02 6.62522137956e-02 6.69101294891e-02 6.44394828494e-02 5.86758842735e-02 5.07010770424e-02 - 3.07039905741e-02 2.59250062413e-02 2.59250062413e-02 3.07039905741e-02 3.93541671489e-02 4.98718618187e-02 - 5.94868177545e-02 6.57918464265e-02 6.78442738531e-02 6.62522137956e-02 6.23688231248e-02 5.74762428735e-02 - 5.24477482650e-02 4.77625301985e-02 4.36277000850e-02 4.01041807768e-02 3.72078996967e-02 3.49654910486e-02 - 3.34242157073e-02 3.26363277502e-02 3.26363277502e-02 3.34242157073e-02 3.49654910486e-02 3.72078996967e-02 - 4.01041807768e-02 4.36277000850e-02 4.77625301985e-02 5.24477482650e-02 5.74762428735e-02 6.23688231248e-02 - 6.62522137956e-02 6.78442738531e-02 6.57918464265e-02 5.94868177545e-02 4.98718618187e-02 3.93541671489e-02 - 1.93490286376e-02 1.69491736420e-02 1.93490286376e-02 2.63856510811e-02 3.71417160544e-02 4.93308963719e-02 - 5.97323039443e-02 6.57918464265e-02 6.69101294891e-02 6.42180018992e-02 5.94150808572e-02 5.38883507401e-02 - 4.84855850881e-02 4.36277000850e-02 3.94725484932e-02 3.60511821341e-02 3.33624200108e-02 3.14154606035e-02 - 3.02323588099e-02 2.98349904445e-02 3.02323588099e-02 3.14154606035e-02 3.33624200108e-02 3.60511821341e-02 - 3.94725484932e-02 4.36277000850e-02 4.84855850881e-02 5.38883507401e-02 5.94150808572e-02 6.42180018992e-02 - 6.69101294891e-02 6.57918464265e-02 5.97323039443e-02 4.93308963719e-02 3.71417160544e-02 2.63856510811e-02 - 1.14596764125e-02 1.14596764125e-02 1.56860392578e-02 2.42761411551e-02 3.63849623957e-02 4.93308963719e-02 - 5.94868177545e-02 6.44394828494e-02 6.41840706496e-02 6.03694423859e-02 5.48714786192e-02 4.90231496620e-02 - 4.35604474537e-02 3.88104397494e-02 3.48695445110e-02 3.17358390207e-02 2.93901320501e-02 2.78244998346e-02 - 2.70402901784e-02 2.70402901784e-02 2.78244998346e-02 2.93901320501e-02 3.17358390207e-02 3.48695445110e-02 - 3.88104397494e-02 4.35604474537e-02 4.90231496620e-02 5.48714786192e-02 6.03694423859e-02 6.41840706496e-02 - 6.44394828494e-02 5.94868177545e-02 4.93308963719e-02 3.63849623957e-02 2.42761411551e-02 1.56860392578e-02 - 7.45857574908e-03 9.13060134292e-03 1.45732066269e-02 2.42761411551e-02 3.71417160544e-02 4.98718618187e-02 - 5.86758842735e-02 6.17513938278e-02 5.98878714669e-02 5.51031089527e-02 4.92182336225e-02 4.33721592307e-02 - 3.81345549630e-02 3.37228748044e-02 3.01717861136e-02 2.74512061786e-02 2.55281844546e-02 2.43819637041e-02 - 2.40011711299e-02 2.43819637041e-02 2.55281844546e-02 2.74512061786e-02 3.01717861136e-02 3.37228748044e-02 - 3.81345549630e-02 4.33721592307e-02 4.92182336225e-02 5.51031089527e-02 5.98878714669e-02 6.17513938278e-02 - 5.86758842735e-02 4.98718618187e-02 3.71417160544e-02 2.42761411551e-02 1.45732066269e-02 9.13060134292e-03 - 6.32692063078e-03 9.13060134292e-03 1.56860392578e-02 2.63856510811e-02 3.93541671489e-02 5.07010770424e-02 - 5.70772559013e-02 5.77843769256e-02 5.43692149489e-02 4.89192305177e-02 4.29832635915e-02 3.74259862301e-02 - 3.26341221073e-02 2.87187367840e-02 2.56635113913e-02 2.34202555044e-02 2.19482820950e-02 2.12198093897e-02 - 2.12198093897e-02 2.19482820950e-02 2.34202555044e-02 2.56635113913e-02 2.87187367840e-02 3.26341221073e-02 - 3.74259862301e-02 4.29832635915e-02 4.89192305177e-02 5.43692149489e-02 5.77843769256e-02 5.70772559013e-02 - 5.07010770424e-02 3.93541671489e-02 2.63856510811e-02 1.56860392578e-02 9.13060134292e-03 6.32692063078e-03 - 1.69819929531e-02 2.23413746600e-02 3.07039905741e-02 4.02808330656e-02 4.79609401864e-02 5.13869204668e-02 - 5.03535465114e-02 4.62623331670e-02 4.07924714489e-02 3.51532871168e-02 3.00149219248e-02 2.56657154446e-02 - 2.21666114252e-02 1.94746684497e-02 1.75241772421e-02 1.62588522549e-02 1.56375665721e-02 1.56375665721e-02 - 1.62588522549e-02 1.75241772421e-02 1.94746684497e-02 2.21666114252e-02 2.56657154446e-02 3.00149219248e-02 - 3.51532871168e-02 4.07924714489e-02 4.62623331670e-02 5.03535465114e-02 5.13869204668e-02 4.79609401864e-02 - 4.02808330656e-02 3.07039905741e-02 2.23413746600e-02 1.69819929531e-02 1.46090879135e-02 1.46090879135e-02 - 2.23413746600e-02 2.86292518106e-02 3.67025276917e-02 4.41366450522e-02 4.83941231678e-02 4.85080722970e-02 - 4.52857661696e-02 4.02540981079e-02 3.47182328687e-02 2.94854041377e-02 2.49511167951e-02 2.12413612776e-02 - 1.83376793613e-02 1.61729889157e-02 1.46810426016e-02 1.38094745262e-02 1.35231772103e-02 1.38094745262e-02 - 1.46810426016e-02 1.61729889157e-02 1.83376793613e-02 2.12413612776e-02 2.49511167951e-02 2.94854041377e-02 - 3.47182328687e-02 4.02540981079e-02 4.52857661696e-02 4.85080722970e-02 4.83941231678e-02 4.41366450522e-02 - 3.67025276917e-02 2.86292518106e-02 2.23413746600e-02 1.87771308641e-02 1.76819501362e-02 1.87771308641e-02 - 3.07039905741e-02 3.67025276917e-02 4.27064575993e-02 4.65545163206e-02 4.69885184966e-02 4.42752514752e-02 - 3.96081166256e-02 3.42208946471e-02 2.89691250092e-02 2.43184216158e-02 2.04512222766e-02 1.73786828448e-02 - 1.50389831834e-02 1.33594815778e-02 1.22786655737e-02 1.17508350709e-02 1.17508350709e-02 1.22786655737e-02 - 1.33594815778e-02 1.50389831834e-02 1.73786828448e-02 2.04512222766e-02 2.43184216158e-02 2.89691250092e-02 - 3.42208946471e-02 3.96081166256e-02 4.42752514752e-02 4.69885184966e-02 4.65545163206e-02 4.27064575993e-02 - 3.67025276917e-02 3.07039905741e-02 2.63856510811e-02 2.42761411551e-02 2.42761411551e-02 2.63856510811e-02 - 4.02808330656e-02 4.41366450522e-02 4.65545163206e-02 4.64020316983e-02 4.36365698621e-02 3.90842281235e-02 - 3.37780927799e-02 2.85205562719e-02 2.37914166767e-02 1.98052910067e-02 1.65980023724e-02 1.41157952825e-02 - 1.22825573408e-02 1.10293847869e-02 1.03016601350e-02 1.00633149755e-02 1.03016601350e-02 1.10293847869e-02 - 1.22825573408e-02 1.41157952825e-02 1.65980023724e-02 1.98052910067e-02 2.37914166767e-02 2.85205562719e-02 - 3.37780927799e-02 3.90842281235e-02 4.36365698621e-02 4.64020316983e-02 4.65545163206e-02 4.41366450522e-02 - 4.02808330656e-02 3.65582592974e-02 3.40771392673e-02 3.32338776264e-02 3.40771392673e-02 3.65582592974e-02 - 4.79609401864e-02 4.83941231678e-02 4.69885184966e-02 4.36365698621e-02 3.88830541657e-02 3.35158471123e-02 - 2.82105864296e-02 2.34067395586e-02 1.93203741197e-02 1.59997599900e-02 1.33976732300e-02 1.14361707830e-02 - 1.00404664762e-02 9.14830218340e-03 8.71419097250e-03 8.71419097250e-03 9.14830218340e-03 1.00404664762e-02 - 1.14361707830e-02 1.33976732300e-02 1.59997599900e-02 1.93203741197e-02 2.34067395586e-02 2.82105864296e-02 - 3.35158471123e-02 3.88830541657e-02 4.36365698621e-02 4.69885184966e-02 4.83941231678e-02 4.79609401864e-02 - 4.64751950426e-02 4.49279278957e-02 4.40123223759e-02 4.40123223759e-02 4.49279278957e-02 4.64751950426e-02 - 5.13869204668e-02 4.85080722970e-02 4.42752514752e-02 3.90842281235e-02 3.35158471123e-02 2.80994006567e-02 - 2.32023283361e-02 1.90175139009e-02 1.55924938344e-02 1.28827341282e-02 1.08088949298e-02 9.29162040305e-03 - 8.26229038338e-03 7.66717366082e-03 7.47255069610e-03 7.66717366082e-03 8.26229038338e-03 9.29162040305e-03 - 1.08088949298e-02 1.28827341282e-02 1.55924938344e-02 1.90175139009e-02 2.32023283361e-02 2.80994006567e-02 - 3.35158471123e-02 3.90842281235e-02 4.42752514752e-02 4.85080722970e-02 5.13869204668e-02 5.29210396854e-02 - 5.34983990182e-02 5.36143814352e-02 5.36149267734e-02 5.36143814352e-02 5.34983990182e-02 5.29210396854e-02 - 5.03535465114e-02 4.52857661696e-02 3.96081166256e-02 3.37780927799e-02 2.82105864296e-02 2.32023283361e-02 - 1.89142861556e-02 1.53857855201e-02 1.25723726562e-02 1.03937663652e-02 8.76725594498e-03 7.61927184895e-03 - 6.88914005847e-03 6.53448601861e-03 6.53448601861e-03 6.88914005847e-03 7.61927184895e-03 8.76725594498e-03 - 1.03937663652e-02 1.25723726562e-02 1.53857855201e-02 1.89142861556e-02 2.32023283361e-02 2.82105864296e-02 - 3.37780927799e-02 3.96081166256e-02 4.52857661696e-02 5.03535465114e-02 5.44475263977e-02 5.74105494947e-02 - 5.92810318582e-02 6.01752681104e-02 6.01752681104e-02 5.92810318582e-02 5.74105494947e-02 5.44475263977e-02 - 4.62623331670e-02 4.02540981079e-02 3.42208946471e-02 2.85205562719e-02 2.34067395586e-02 1.90175139009e-02 - 1.53857855201e-02 1.24686371753e-02 1.01870819285e-02 8.45686847188e-03 7.20097316500e-03 6.35335851926e-03 - 5.86418256271e-03 5.70420021497e-03 5.86418256271e-03 6.35335851926e-03 7.20097316500e-03 8.45686847188e-03 - 1.01870819285e-02 1.24686371753e-02 1.53857855201e-02 1.90175139009e-02 2.34067395586e-02 2.85205562719e-02 - 3.42208946471e-02 4.02540981079e-02 4.62623331670e-02 5.18281863755e-02 5.65511919643e-02 6.01184381094e-02 - 6.23288110708e-02 6.30764730892e-02 6.23288110708e-02 6.01184381094e-02 5.65511919643e-02 5.18281863755e-02 - 4.07924714489e-02 3.47182328687e-02 2.89691250092e-02 2.37914166767e-02 1.93203741197e-02 1.55924938344e-02 - 1.25723726562e-02 1.01870819285e-02 8.35413904759e-03 6.99504538611e-03 6.04016501968e-03 5.43377044817e-03 - 5.13913617973e-03 5.13913617973e-03 5.43377044817e-03 6.04016501968e-03 6.99504538611e-03 8.35413904759e-03 - 1.01870819285e-02 1.25723726562e-02 1.55924938344e-02 1.93203741197e-02 2.37914166767e-02 2.89691250092e-02 - 3.47182328687e-02 4.07924714489e-02 4.68401774785e-02 5.24339557043e-02 5.71251588417e-02 6.05090723285e-02 - 6.22821499923e-02 6.22821499923e-02 6.05090723285e-02 5.71251588417e-02 5.24339557043e-02 4.68401774785e-02 - 3.51532871168e-02 2.94854041377e-02 2.43184216158e-02 1.98052910067e-02 1.59997599900e-02 1.28827341282e-02 - 1.03937663652e-02 8.45686847188e-03 6.99504538611e-03 5.93719631865e-03 5.22371135458e-03 4.81172327806e-03 - 4.67692793169e-03 4.81172327806e-03 5.22371135458e-03 5.93719631865e-03 6.99504538611e-03 8.45686847188e-03 - 1.03937663652e-02 1.28827341282e-02 1.59997599900e-02 1.98052910067e-02 2.43184216158e-02 2.94854041377e-02 - 3.51532871168e-02 4.10571769449e-02 4.68264624901e-02 5.20147259753e-02 5.61547897924e-02 5.88318176265e-02 - 5.97584596222e-02 5.88318176265e-02 5.61547897924e-02 5.20147259753e-02 4.68264624901e-02 4.10571769449e-02 - 3.00149219248e-02 2.49511167951e-02 2.04512222766e-02 1.65980023724e-02 1.33976732300e-02 1.08088949298e-02 - 8.76725594498e-03 7.20097316500e-03 6.04016501968e-03 5.22371135458e-03 4.70458873539e-03 4.45230019628e-03 - 4.45230019628e-03 4.70458873539e-03 5.22371135458e-03 6.04016501968e-03 7.20097316500e-03 8.76725594498e-03 - 1.08088949298e-02 1.33976732300e-02 1.65980023724e-02 2.04512222766e-02 2.49511167951e-02 3.00149219248e-02 - 3.54595415232e-02 4.09927131873e-02 4.62258246981e-02 5.07121410456e-02 5.40097122002e-02 5.57595749637e-02 - 5.57595749637e-02 5.40097122002e-02 5.07121410456e-02 4.62258246981e-02 4.09927131873e-02 3.54595415232e-02 - 2.56657154446e-02 2.12413612776e-02 1.73786828448e-02 1.41157952825e-02 1.14361707830e-02 9.29162040305e-03 - 7.61927184895e-03 6.35335851926e-03 5.43377044817e-03 4.81172327806e-03 4.45230019628e-03 4.33477840900e-03 - 4.45230019628e-03 4.81172327806e-03 5.43377044817e-03 6.35335851926e-03 7.61927184895e-03 9.29162040305e-03 - 1.14361707830e-02 1.41157952825e-02 1.73786828448e-02 2.12413612776e-02 2.56657154446e-02 3.05340710560e-02 - 3.56312088557e-02 4.06430475235e-02 4.51788789706e-02 4.88190878681e-02 5.11831265828e-02 5.20033431247e-02 - 5.11831265828e-02 4.88190878681e-02 4.51788789706e-02 4.06430475235e-02 3.56312088557e-02 3.05340710560e-02 - 2.21666114252e-02 1.83376793613e-02 1.50389831834e-02 1.22825573408e-02 1.00404664762e-02 8.26229038338e-03 - 6.88914005847e-03 5.86418256271e-03 5.13913617973e-03 4.67692793169e-03 4.45230019628e-03 4.45230019628e-03 - 4.67692793169e-03 5.13913617973e-03 5.86418256271e-03 6.88914005847e-03 8.26229038338e-03 1.00404664762e-02 - 1.22825573408e-02 1.50389831834e-02 1.83376793613e-02 2.21666114252e-02 2.64534808200e-02 3.10465495213e-02 - 3.57044700685e-02 4.01041807768e-02 4.38725463784e-02 4.66403070569e-02 4.81082332430e-02 4.81082332430e-02 - 4.66403070569e-02 4.38725463784e-02 4.01041807768e-02 3.57044700685e-02 3.10465495213e-02 2.64534808200e-02 - 1.94746684497e-02 1.61729889157e-02 1.33594815778e-02 1.10293847869e-02 9.14830218340e-03 7.66717366082e-03 - 6.53448601861e-03 5.70420021497e-03 5.13913617973e-03 4.81172327806e-03 4.70458873539e-03 4.81172327806e-03 - 5.13913617973e-03 5.70420021497e-03 6.53448601861e-03 7.66717366082e-03 9.14830218340e-03 1.10293847869e-02 - 1.33594815778e-02 1.61729889157e-02 1.94746684497e-02 2.32231030162e-02 2.73140021666e-02 3.15673758761e-02 - 3.57259716101e-02 3.94725484932e-02 4.24686468881e-02 4.44094609233e-02 4.50819394473e-02 4.44094609233e-02 - 4.24686468881e-02 3.94725484932e-02 3.57259716101e-02 3.15673758761e-02 2.73140021666e-02 2.32231030162e-02 - 1.75241772421e-02 1.46810426016e-02 1.22786655737e-02 1.03016601350e-02 8.71419097250e-03 7.47255069610e-03 - 6.53448601861e-03 5.86418256271e-03 5.43377044817e-03 5.22371135458e-03 5.22371135458e-03 5.43377044817e-03 - 5.86418256271e-03 6.53448601861e-03 7.47255069610e-03 8.71419097250e-03 1.03016601350e-02 1.22786655737e-02 - 1.46810426016e-02 1.75241772421e-02 2.07887392229e-02 2.44059448105e-02 2.82446089484e-02 3.21049723875e-02 - 3.57259716101e-02 3.88104397494e-02 4.10670403681e-02 4.22610610741e-02 4.22610610741e-02 4.10670403681e-02 - 3.88104397494e-02 3.57259716101e-02 3.21049723875e-02 2.82446089484e-02 2.44059448105e-02 2.07887392229e-02 - 1.62588522549e-02 1.38094745262e-02 1.17508350709e-02 1.00633149755e-02 8.71419097250e-03 7.66717366082e-03 - 6.88914005847e-03 6.35335851926e-03 6.04016501968e-03 5.93719631865e-03 6.04016501968e-03 6.35335851926e-03 - 6.88914005847e-03 7.66717366082e-03 8.71419097250e-03 1.00633149755e-02 1.17508350709e-02 1.38094745262e-02 - 1.62588522549e-02 1.90940368490e-02 2.22726314479e-02 2.57019293917e-02 2.92302840650e-02 3.26483588385e-02 - 3.57044700685e-02 3.81345549630e-02 3.97029159910e-02 4.02453701311e-02 3.97029159910e-02 3.81345549630e-02 - 3.57044700685e-02 3.26483588385e-02 2.92302840650e-02 2.57019293917e-02 2.22726314479e-02 1.90940368490e-02 - 1.56375665721e-02 1.35231772103e-02 1.17508350709e-02 1.03016601350e-02 9.14830218340e-03 8.26229038338e-03 - 7.61927184895e-03 7.20097316500e-03 6.99504538611e-03 6.99504538611e-03 7.20097316500e-03 7.61927184895e-03 - 8.26229038338e-03 9.14830218340e-03 1.03016601350e-02 1.17508350709e-02 1.35231772103e-02 1.56375665721e-02 - 1.80960146721e-02 2.08735527936e-02 2.39063871143e-02 2.70818268649e-02 3.02357338101e-02 3.31615306069e-02 - 3.56312088557e-02 3.74259862301e-02 3.83718132369e-02 3.83718132369e-02 3.74259862301e-02 3.56312088557e-02 - 3.31615306069e-02 3.02357338101e-02 2.70818268649e-02 2.39063871143e-02 2.08735527936e-02 1.80960146721e-02 - 1.56375665721e-02 1.38094745262e-02 1.22786655737e-02 1.10293847869e-02 1.00404664762e-02 9.29162040305e-03 - 8.76725594498e-03 8.45686847188e-03 8.35413904759e-03 8.45686847188e-03 8.76725594498e-03 9.29162040305e-03 - 1.00404664762e-02 1.10293847869e-02 1.22786655737e-02 1.38094745262e-02 1.56375665721e-02 1.77666865554e-02 - 2.01812628043e-02 2.28368095394e-02 2.56499234494e-02 2.84935612207e-02 3.12022017908e-02 3.35871770820e-02 - 3.54595415232e-02 3.66568505349e-02 3.70689589239e-02 3.66568505349e-02 3.54595415232e-02 3.35871770820e-02 - 3.12022017908e-02 2.84935612207e-02 2.56499234494e-02 2.28368095394e-02 2.01812628043e-02 1.77666865554e-02 - 1.62588522549e-02 1.46810426016e-02 1.33594815778e-02 1.22825573408e-02 1.14361707830e-02 1.08088949298e-02 - 1.03937663652e-02 1.01870819285e-02 1.01870819285e-02 1.03937663652e-02 1.08088949298e-02 1.14361707830e-02 - 1.22825573408e-02 1.33594815778e-02 1.46810426016e-02 1.62588522549e-02 1.80960146721e-02 2.01812628043e-02 - 2.24815496090e-02 2.49333108373e-02 2.74372089612e-02 2.98615217076e-02 3.20546920774e-02 3.38635928392e-02 - 3.51532871168e-02 3.58243136049e-02 3.58243136049e-02 3.51532871168e-02 3.38635928392e-02 3.20546920774e-02 - 2.98615217076e-02 2.74372089612e-02 2.49333108373e-02 2.24815496090e-02 2.01812628043e-02 1.80960146721e-02 - 1.75241772421e-02 1.61729889157e-02 1.50389831834e-02 1.41157952825e-02 1.33976732300e-02 1.28827341282e-02 - 1.25723726562e-02 1.24686371753e-02 1.25723726562e-02 1.28827341282e-02 1.33976732300e-02 1.41157952825e-02 - 1.50389831834e-02 1.61729889157e-02 1.75241772421e-02 1.90940368490e-02 2.08735527936e-02 2.28368095394e-02 - 2.49333108373e-02 2.70827915169e-02 2.91781605866e-02 3.10978190541e-02 3.27229087590e-02 3.39533984936e-02 - 3.47182328687e-02 3.49773595797e-02 3.47182328687e-02 3.39533984936e-02 3.27229087590e-02 3.10978190541e-02 - 2.91781605866e-02 2.70827915169e-02 2.49333108373e-02 2.28368095394e-02 2.08735527936e-02 1.90940368490e-02 - 1.94746684497e-02 1.83376793613e-02 1.73786828448e-02 1.65980023724e-02 1.59997599900e-02 1.55924938344e-02 - 1.53857855201e-02 1.53857855201e-02 1.55924938344e-02 1.59997599900e-02 1.65980023724e-02 1.73786828448e-02 - 1.83376793613e-02 1.94746684497e-02 2.07887392229e-02 2.22726314479e-02 2.39063871143e-02 2.56499234494e-02 - 2.74372089612e-02 2.91781605866e-02 3.07715106065e-02 3.21243272248e-02 3.31691643222e-02 3.38709874542e-02 - 3.42208946471e-02 3.42208946471e-02 3.38709874542e-02 3.31691643222e-02 3.21243272248e-02 3.07715106065e-02 - 2.91781605866e-02 2.74372089612e-02 2.56499234494e-02 2.39063871143e-02 2.22726314479e-02 2.07887392229e-02 - 2.21666114252e-02 2.12413612776e-02 2.04512222766e-02 1.98052910067e-02 1.93203741197e-02 1.90175139009e-02 - 1.89142861556e-02 1.90175139009e-02 1.93203741197e-02 1.98052910067e-02 2.04512222766e-02 2.12413612776e-02 - 2.21666114252e-02 2.32231030162e-02 2.44059448105e-02 2.57019293917e-02 2.70818268649e-02 2.84935612207e-02 - 2.98615217076e-02 3.10978190541e-02 3.21243272248e-02 3.28952522339e-02 3.34071767353e-02 3.36893635306e-02 - 3.37780927799e-02 3.36893635306e-02 3.34071767353e-02 3.28952522339e-02 3.21243272248e-02 3.10978190541e-02 - 2.98615217076e-02 2.84935612207e-02 2.70818268649e-02 2.57019293917e-02 2.44059448105e-02 2.32231030162e-02 - 2.56657154446e-02 2.49511167951e-02 2.43184216158e-02 2.37914166767e-02 2.34067395586e-02 2.32023283361e-02 - 2.32023283361e-02 2.34067395586e-02 2.37914166767e-02 2.43184216158e-02 2.49511167951e-02 2.56657154446e-02 - 2.64534808200e-02 2.73140021666e-02 2.82446089484e-02 2.92302840650e-02 3.02357338101e-02 3.12022017908e-02 - 3.20546920774e-02 3.27229087590e-02 3.31691643222e-02 3.34071767353e-02 3.34971688966e-02 3.35158471123e-02 - 3.35158471123e-02 3.34971688966e-02 3.34071767353e-02 3.31691643222e-02 3.27229087590e-02 3.20546920774e-02 - 3.12022017908e-02 3.02357338101e-02 2.92302840650e-02 2.82446089484e-02 2.73140021666e-02 2.64534808200e-02 - 3.00149219248e-02 2.94854041377e-02 2.89691250092e-02 2.85205562719e-02 2.82105864296e-02 2.80994006567e-02 - 2.82105864296e-02 2.85205562719e-02 2.89691250092e-02 2.94854041377e-02 3.00149219248e-02 3.05340710560e-02 - 3.10465495213e-02 3.15673758761e-02 3.21049723875e-02 3.26483588385e-02 3.31615306069e-02 3.35871770820e-02 - 3.38635928392e-02 3.39533984936e-02 3.38709874542e-02 3.36893635306e-02 3.35158471123e-02 3.34454153402e-02 - 3.35158471123e-02 3.36893635306e-02 3.38709874542e-02 3.39533984936e-02 3.38635928392e-02 3.35871770820e-02 - 3.31615306069e-02 3.26483588385e-02 3.21049723875e-02 3.15673758761e-02 3.10465495213e-02 3.05340710560e-02 - 3.51532871168e-02 3.47182328687e-02 3.42208946471e-02 3.37780927799e-02 3.35158471123e-02 3.35158471123e-02 - 3.37780927799e-02 3.42208946471e-02 3.47182328687e-02 3.51532871168e-02 3.54595415232e-02 3.56312088557e-02 - 3.57044700685e-02 3.57259716101e-02 3.57259716101e-02 3.57044700685e-02 3.56312088557e-02 3.54595415232e-02 - 3.51532871168e-02 3.47182328687e-02 3.42208946471e-02 3.37780927799e-02 3.35158471123e-02 3.35158471123e-02 - 3.37780927799e-02 3.42208946471e-02 3.47182328687e-02 3.51532871168e-02 3.54595415232e-02 3.56312088557e-02 - 3.57044700685e-02 3.57259716101e-02 3.57259716101e-02 3.57044700685e-02 3.56312088557e-02 3.54595415232e-02 - 4.07924714489e-02 4.02540981079e-02 3.96081166256e-02 3.90842281235e-02 3.88830541657e-02 3.90842281235e-02 - 3.96081166256e-02 4.02540981079e-02 4.07924714489e-02 4.10571769449e-02 4.09927131873e-02 4.06430475235e-02 - 4.01041807768e-02 3.94725484932e-02 3.88104397494e-02 3.81345549630e-02 3.74259862301e-02 3.66568505349e-02 - 3.58243136049e-02 3.49773595797e-02 3.42208946471e-02 3.36893635306e-02 3.34971688966e-02 3.36893635306e-02 - 3.42208946471e-02 3.49773595797e-02 3.58243136049e-02 3.66568505349e-02 3.74259862301e-02 3.81345549630e-02 - 3.88104397494e-02 3.94725484932e-02 4.01041807768e-02 4.06430475235e-02 4.09927131873e-02 4.10571769449e-02 - 4.62623331670e-02 4.52857661696e-02 4.42752514752e-02 4.36365698621e-02 4.36365698621e-02 4.42752514752e-02 - 4.52857661696e-02 4.62623331670e-02 4.68401774785e-02 4.68264624901e-02 4.62258246981e-02 4.51788789706e-02 - 4.38725463784e-02 4.24686468881e-02 4.10670403681e-02 3.97029159910e-02 3.83718132369e-02 3.70689589239e-02 - 3.58243136049e-02 3.47182328687e-02 3.38709874542e-02 3.34071767353e-02 3.34071767353e-02 3.38709874542e-02 - 3.47182328687e-02 3.58243136049e-02 3.70689589239e-02 3.83718132369e-02 3.97029159910e-02 4.10670403681e-02 - 4.24686468881e-02 4.38725463784e-02 4.51788789706e-02 4.62258246981e-02 4.68264624901e-02 4.68401774785e-02 - 5.03535465114e-02 4.85080722970e-02 4.69885184966e-02 4.64020316983e-02 4.69885184966e-02 4.85080722970e-02 - 5.03535465114e-02 5.18281863755e-02 5.24339557043e-02 5.20147259753e-02 5.07121410456e-02 4.88190878681e-02 - 4.66403070569e-02 4.44094609233e-02 4.22610610741e-02 4.02453701311e-02 3.83718132369e-02 3.66568505349e-02 - 3.51532871168e-02 3.39533984936e-02 3.31691643222e-02 3.28952522339e-02 3.31691643222e-02 3.39533984936e-02 - 3.51532871168e-02 3.66568505349e-02 3.83718132369e-02 4.02453701311e-02 4.22610610741e-02 4.44094609233e-02 - 4.66403070569e-02 4.88190878681e-02 5.07121410456e-02 5.20147259753e-02 5.24339557043e-02 5.18281863755e-02 - 5.13869204668e-02 4.83941231678e-02 4.65545163206e-02 4.65545163206e-02 4.83941231678e-02 5.13869204668e-02 - 5.44475263977e-02 5.65511919643e-02 5.71251588417e-02 5.61547897924e-02 5.40097122002e-02 5.11831265828e-02 - 4.81082332430e-02 4.50819394473e-02 4.22610610741e-02 3.97029159910e-02 3.74259862301e-02 3.54595415232e-02 - 3.38635928392e-02 3.27229087590e-02 3.21243272248e-02 3.21243272248e-02 3.27229087590e-02 3.38635928392e-02 - 3.54595415232e-02 3.74259862301e-02 3.97029159910e-02 4.22610610741e-02 4.50819394473e-02 4.81082332430e-02 - 5.11831265828e-02 5.40097122002e-02 5.61547897924e-02 5.71251588417e-02 5.65511919643e-02 5.44475263977e-02 - 4.79609401864e-02 4.41366450522e-02 4.27064575993e-02 4.41366450522e-02 4.79609401864e-02 5.29210396854e-02 - 5.74105494947e-02 6.01184381094e-02 6.05090723285e-02 5.88318176265e-02 5.57595749637e-02 5.20033431247e-02 - 4.81082332430e-02 4.44094609233e-02 4.10670403681e-02 3.81345549630e-02 3.56312088557e-02 3.35871770820e-02 - 3.20546920774e-02 3.10978190541e-02 3.07715106065e-02 3.10978190541e-02 3.20546920774e-02 3.35871770820e-02 - 3.56312088557e-02 3.81345549630e-02 4.10670403681e-02 4.44094609233e-02 4.81082332430e-02 5.20033431247e-02 - 5.57595749637e-02 5.88318176265e-02 6.05090723285e-02 6.01184381094e-02 5.74105494947e-02 5.29210396854e-02 - 4.02808330656e-02 3.67025276917e-02 3.67025276917e-02 4.02808330656e-02 4.64751950426e-02 5.34983990182e-02 - 5.92810318582e-02 6.23288110708e-02 6.22821499923e-02 5.97584596222e-02 5.57595749637e-02 5.11831265828e-02 - 4.66403070569e-02 4.24686468881e-02 3.88104397494e-02 3.57044700685e-02 3.31615306069e-02 3.12022017908e-02 - 2.98615217076e-02 2.91781605866e-02 2.91781605866e-02 2.98615217076e-02 3.12022017908e-02 3.31615306069e-02 - 3.57044700685e-02 3.88104397494e-02 4.24686468881e-02 4.66403070569e-02 5.11831265828e-02 5.57595749637e-02 - 5.97584596222e-02 6.22821499923e-02 6.23288110708e-02 5.92810318582e-02 5.34983990182e-02 4.64751950426e-02 - 3.07039905741e-02 2.86292518106e-02 3.07039905741e-02 3.65582592974e-02 4.49279278957e-02 5.36143814352e-02 - 6.01752681104e-02 6.30764730892e-02 6.22821499923e-02 5.88318176265e-02 5.40097122002e-02 4.88190878681e-02 - 4.38725463784e-02 3.94725484932e-02 3.57259716101e-02 3.26483588385e-02 3.02357338101e-02 2.84935612207e-02 - 2.74372089612e-02 2.70827915169e-02 2.74372089612e-02 2.84935612207e-02 3.02357338101e-02 3.26483588385e-02 - 3.57259716101e-02 3.94725484932e-02 4.38725463784e-02 4.88190878681e-02 5.40097122002e-02 5.88318176265e-02 - 6.22821499923e-02 6.30764730892e-02 6.01752681104e-02 5.36143814352e-02 4.49279278957e-02 3.65582592974e-02 - 2.23413746600e-02 2.23413746600e-02 2.63856510811e-02 3.40771392673e-02 4.40123223759e-02 5.36149267734e-02 - 6.01752681104e-02 6.23288110708e-02 6.05090723285e-02 5.61547897924e-02 5.07121410456e-02 4.51788789706e-02 - 4.01041807768e-02 3.57259716101e-02 3.21049723875e-02 2.92302840650e-02 2.70818268649e-02 2.56499234494e-02 - 2.49333108373e-02 2.49333108373e-02 2.56499234494e-02 2.70818268649e-02 2.92302840650e-02 3.21049723875e-02 - 3.57259716101e-02 4.01041807768e-02 4.51788789706e-02 5.07121410456e-02 5.61547897924e-02 6.05090723285e-02 - 6.23288110708e-02 6.01752681104e-02 5.36149267734e-02 4.40123223759e-02 3.40771392673e-02 2.63856510811e-02 - 1.69819929531e-02 1.87771308641e-02 2.42761411551e-02 3.32338776264e-02 4.40123223759e-02 5.36143814352e-02 - 5.92810318582e-02 6.01184381094e-02 5.71251588417e-02 5.20147259753e-02 4.62258246981e-02 4.06430475235e-02 - 3.57044700685e-02 3.15673758761e-02 2.82446089484e-02 2.57019293917e-02 2.39063871143e-02 2.28368095394e-02 - 2.24815496090e-02 2.28368095394e-02 2.39063871143e-02 2.57019293917e-02 2.82446089484e-02 3.15673758761e-02 - 3.57044700685e-02 4.06430475235e-02 4.62258246981e-02 5.20147259753e-02 5.71251588417e-02 6.01184381094e-02 - 5.92810318582e-02 5.36143814352e-02 4.40123223759e-02 3.32338776264e-02 2.42761411551e-02 1.87771308641e-02 - 1.46090879135e-02 1.76819501362e-02 2.42761411551e-02 3.40771392673e-02 4.49279278957e-02 5.34983990182e-02 - 5.74105494947e-02 5.65511919643e-02 5.24339557043e-02 4.68264624901e-02 4.09927131873e-02 3.56312088557e-02 - 3.10465495213e-02 2.73140021666e-02 2.44059448105e-02 2.22726314479e-02 2.08735527936e-02 2.01812628043e-02 - 2.01812628043e-02 2.08735527936e-02 2.22726314479e-02 2.44059448105e-02 2.73140021666e-02 3.10465495213e-02 - 3.56312088557e-02 4.09927131873e-02 4.68264624901e-02 5.24339557043e-02 5.65511919643e-02 5.74105494947e-02 - 5.34983990182e-02 4.49279278957e-02 3.40771392673e-02 2.42761411551e-02 1.76819501362e-02 1.46090879135e-02 - 1.46090879135e-02 1.87771308641e-02 2.63856510811e-02 3.65582592974e-02 4.64751950426e-02 5.29210396854e-02 - 5.44475263977e-02 5.18281863755e-02 4.68401774785e-02 4.10571769449e-02 3.54595415232e-02 3.05340710560e-02 - 2.64534808200e-02 2.32231030162e-02 2.07887392229e-02 1.90940368490e-02 1.80960146721e-02 1.77666865554e-02 - 1.80960146721e-02 1.90940368490e-02 2.07887392229e-02 2.32231030162e-02 2.64534808200e-02 3.05340710560e-02 - 3.54595415232e-02 4.10571769449e-02 4.68401774785e-02 5.18281863755e-02 5.44475263977e-02 5.29210396854e-02 - 4.64751950426e-02 3.65582592974e-02 2.63856510811e-02 1.87771308641e-02 1.46090879135e-02 1.33581335706e-02 - 3.09103717113e-02 3.62214481565e-02 4.26203265537e-02 4.79609401864e-02 5.02620593726e-02 4.89738024005e-02 - 4.49623774036e-02 3.95849180057e-02 3.39533984936e-02 2.87439673059e-02 2.42781130820e-02 2.06439962171e-02 - 1.78072941675e-02 1.56960478729e-02 1.42425749040e-02 1.33939588194e-02 1.31152359900e-02 1.33939588194e-02 - 1.42425749040e-02 1.56960478729e-02 1.78072941675e-02 2.06439962171e-02 2.42781130820e-02 2.87439673059e-02 - 3.39533984936e-02 3.95849180057e-02 4.49623774036e-02 4.89738024005e-02 5.02620593726e-02 4.79609401864e-02 - 4.26203265537e-02 3.62214481565e-02 3.09103717113e-02 2.77489957459e-02 2.67478820537e-02 2.77489957459e-02 - 3.62214481565e-02 4.11986868029e-02 4.58777097769e-02 4.83941231678e-02 4.77793166757e-02 4.44045560444e-02 - 3.93968315223e-02 3.38709874542e-02 2.85879356046e-02 2.39549635512e-02 2.01220876747e-02 1.70848695603e-02 - 1.47756456624e-02 1.31198380533e-02 1.20550163598e-02 1.15351431719e-02 1.15351431719e-02 1.20550163598e-02 - 1.31198380533e-02 1.47756456624e-02 1.70848695603e-02 2.01220876747e-02 2.39549635512e-02 2.85879356046e-02 - 3.38709874542e-02 3.93968315223e-02 4.44045560444e-02 4.77793166757e-02 4.83941231678e-02 4.58777097769e-02 - 4.11986868029e-02 3.62214481565e-02 3.25101129901e-02 3.06594619284e-02 3.06594619284e-02 3.25101129901e-02 - 4.26203265537e-02 4.58777097769e-02 4.76689314688e-02 4.69885184966e-02 4.38595264834e-02 3.90976289629e-02 - 3.36893635306e-02 2.83925891295e-02 2.36566460915e-02 1.96777557044e-02 1.64818809732e-02 1.40109856905e-02 - 1.21873907787e-02 1.09414577715e-02 1.02181471415e-02 9.98127039361e-03 1.02181471415e-02 1.09414577715e-02 - 1.21873907787e-02 1.40109856905e-02 1.64818809732e-02 1.96777557044e-02 2.36566460915e-02 2.83925891295e-02 - 3.36893635306e-02 3.90976289629e-02 4.38595264834e-02 4.69885184966e-02 4.76689314688e-02 4.58777097769e-02 - 4.26203265537e-02 3.93541671489e-02 3.71417160544e-02 3.63849623957e-02 3.71417160544e-02 3.93541671489e-02 - 4.79609401864e-02 4.83941231678e-02 4.69885184966e-02 4.36365698621e-02 3.88830541657e-02 3.35158471123e-02 - 2.82105864296e-02 2.34067395586e-02 1.93203741197e-02 1.59997599900e-02 1.33976732300e-02 1.14361707830e-02 - 1.00404664762e-02 9.14830218340e-03 8.71419097250e-03 8.71419097250e-03 9.14830218340e-03 1.00404664762e-02 - 1.14361707830e-02 1.33976732300e-02 1.59997599900e-02 1.93203741197e-02 2.34067395586e-02 2.82105864296e-02 - 3.35158471123e-02 3.88830541657e-02 4.36365698621e-02 4.69885184966e-02 4.83941231678e-02 4.79609401864e-02 - 4.64751950426e-02 4.49279278957e-02 4.40123223759e-02 4.40123223759e-02 4.49279278957e-02 4.64751950426e-02 - 5.02620593726e-02 4.77793166757e-02 4.38595264834e-02 3.88830541657e-02 3.34454153402e-02 2.81005086407e-02 - 2.32378434698e-02 1.90666010177e-02 1.56449525655e-02 1.29342051284e-02 1.08577130860e-02 9.33741418467e-03 - 8.30549434438e-03 7.70870330534e-03 7.51351058269e-03 7.70870330534e-03 8.30549434438e-03 9.33741418467e-03 - 1.08577130860e-02 1.29342051284e-02 1.56449525655e-02 1.90666010177e-02 2.32378434698e-02 2.81005086407e-02 - 3.34454153402e-02 3.88830541657e-02 4.38595264834e-02 4.77793166757e-02 5.02620593726e-02 5.13723037105e-02 - 5.15765048907e-02 5.14403532045e-02 5.13523903781e-02 5.14403532045e-02 5.15765048907e-02 5.13723037105e-02 - 4.89738024005e-02 4.44045560444e-02 3.90976289629e-02 3.35158471123e-02 2.81005086407e-02 2.31779027969e-02 - 1.89341271390e-02 1.54267827082e-02 1.26225341258e-02 1.04468583553e-02 8.82009872524e-03 7.67065297497e-03 - 6.93908976898e-03 6.58362639444e-03 6.58362639444e-03 6.93908976898e-03 7.67065297497e-03 8.82009872524e-03 - 1.04468583553e-02 1.26225341258e-02 1.54267827082e-02 1.89341271390e-02 2.31779027969e-02 2.81005086407e-02 - 3.35158471123e-02 3.90976289629e-02 4.44045560444e-02 4.89738024005e-02 5.24797871309e-02 5.48533676650e-02 - 5.62463189889e-02 5.68740665481e-02 5.68740665481e-02 5.62463189889e-02 5.48533676650e-02 5.24797871309e-02 - 4.49623774036e-02 3.93968315223e-02 3.36893635306e-02 2.82105864296e-02 2.32378434698e-02 1.89341271390e-02 - 1.53530693596e-02 1.24657333634e-02 1.02011860999e-02 8.47998103933e-03 7.22847713667e-03 6.38291972351e-03 - 5.89466652251e-03 5.73495116497e-03 5.89466652251e-03 6.38291972351e-03 7.22847713667e-03 8.47998103933e-03 - 1.02011860999e-02 1.24657333634e-02 1.53530693596e-02 1.89341271390e-02 2.32378434698e-02 2.82105864296e-02 - 3.36893635306e-02 3.93968315223e-02 4.49623774036e-02 4.99825941802e-02 5.41129564364e-02 5.71366804742e-02 - 5.89627863020e-02 5.95715936141e-02 5.89627863020e-02 5.71366804742e-02 5.41129564364e-02 4.99825941802e-02 - 3.95849180057e-02 3.38709874542e-02 2.83925891295e-02 2.34067395586e-02 1.90666010177e-02 1.54267827082e-02 - 1.24657333634e-02 1.01194532806e-02 8.31144312544e-03 6.96786738821e-03 6.02253909249e-03 5.42174879265e-03 - 5.12972310883e-03 5.12972310883e-03 5.42174879265e-03 6.02253909249e-03 6.96786738821e-03 8.31144312544e-03 - 1.01194532806e-02 1.24657333634e-02 1.54267827082e-02 1.90666010177e-02 2.34067395586e-02 2.83925891295e-02 - 3.38709874542e-02 3.95849180057e-02 4.51877782102e-02 5.02828320119e-02 5.44829894560e-02 5.74676014035e-02 - 5.90154969276e-02 5.90154969276e-02 5.74676014035e-02 5.44829894560e-02 5.02828320119e-02 4.51877782102e-02 - 3.39533984936e-02 2.85879356046e-02 2.36566460915e-02 1.93203741197e-02 1.56449525655e-02 1.26225341258e-02 - 1.02011860999e-02 8.31144312544e-03 6.88181758770e-03 5.84558656512e-03 5.14599535674e-03 4.74176747355e-03 - 4.60945880297e-03 4.74176747355e-03 5.14599535674e-03 5.84558656512e-03 6.88181758770e-03 8.31144312544e-03 - 1.02011860999e-02 1.26225341258e-02 1.56449525655e-02 1.93203741197e-02 2.36566460915e-02 2.85879356046e-02 - 3.39533984936e-02 3.94908104948e-02 4.48486167771e-02 4.96193341715e-02 5.33923081840e-02 5.58153453540e-02 - 5.66509609539e-02 5.58153453540e-02 5.33923081840e-02 4.96193341715e-02 4.48486167771e-02 3.94908104948e-02 - 2.87439673059e-02 2.39549635512e-02 1.96777557044e-02 1.59997599900e-02 1.29342051284e-02 1.04468583553e-02 - 8.47998103933e-03 6.96786738821e-03 5.84558656512e-03 5.05545032098e-03 4.55262020357e-03 4.30805835198e-03 - 4.30805835198e-03 4.55262020357e-03 5.05545032098e-03 5.84558656512e-03 6.96786738821e-03 8.47998103933e-03 - 1.04468583553e-02 1.29342051284e-02 1.59997599900e-02 1.96777557044e-02 2.39549635512e-02 2.87439673059e-02 - 3.38635928392e-02 3.90347179512e-02 4.38959177953e-02 4.80406383964e-02 5.10737783335e-02 5.26787408684e-02 - 5.26787408684e-02 5.10737783335e-02 4.80406383964e-02 4.38959177953e-02 3.90347179512e-02 3.38635928392e-02 - 2.42781130820e-02 2.01220876747e-02 1.64818809732e-02 1.33976732300e-02 1.08577130860e-02 8.82009872524e-03 - 7.22847713667e-03 6.02253909249e-03 5.14599535674e-03 4.55262020357e-03 4.20942844716e-03 4.09713024865e-03 - 4.20942844716e-03 4.55262020357e-03 5.14599535674e-03 6.02253909249e-03 7.22847713667e-03 8.82009872524e-03 - 1.08577130860e-02 1.33976732300e-02 1.64818809732e-02 2.01220876747e-02 2.42781130820e-02 2.88348357920e-02 - 3.35871770820e-02 3.82415861113e-02 4.24386109393e-02 4.57968161948e-02 4.79731106469e-02 4.87273692032e-02 - 4.79731106469e-02 4.57968161948e-02 4.24386109393e-02 3.82415861113e-02 3.35871770820e-02 2.88348357920e-02 - 2.06439962171e-02 1.70848695603e-02 1.40109856905e-02 1.14361707830e-02 9.33741418467e-03 7.67065297497e-03 - 6.38291972351e-03 5.42174879265e-03 4.74176747355e-03 4.30805835198e-03 4.09713024865e-03 4.09713024865e-03 - 4.30805835198e-03 4.74176747355e-03 5.42174879265e-03 6.38291972351e-03 7.67065297497e-03 9.33741418467e-03 - 1.14361707830e-02 1.40109856905e-02 1.70848695603e-02 2.06439962171e-02 2.46187421852e-02 2.88661050079e-02 - 3.31615306069e-02 3.72078996967e-02 4.06654278454e-02 4.32002938784e-02 4.45431970579e-02 4.45431970579e-02 - 4.32002938784e-02 4.06654278454e-02 3.72078996967e-02 3.31615306069e-02 2.88661050079e-02 2.46187421852e-02 - 1.78072941675e-02 1.47756456624e-02 1.21873907787e-02 1.00404664762e-02 8.30549434438e-03 6.93908976898e-03 - 5.89466652251e-03 5.12972310883e-03 4.60945880297e-03 4.30805835198e-03 4.20942844716e-03 4.30805835198e-03 - 4.60945880297e-03 5.12972310883e-03 5.89466652251e-03 6.93908976898e-03 8.30549434438e-03 1.00404664762e-02 - 1.21873907787e-02 1.47756456624e-02 1.78072941675e-02 2.12421582644e-02 2.49827563157e-02 2.88631293974e-02 - 3.26483588385e-02 3.60511821341e-02 3.87673596218e-02 4.05244812822e-02 4.11328816616e-02 4.05244812822e-02 - 3.87673596218e-02 3.60511821341e-02 3.26483588385e-02 2.88631293974e-02 2.49827563157e-02 2.12421582644e-02 - 1.56960478729e-02 1.31198380533e-02 1.09414577715e-02 9.14830218340e-03 7.70870330534e-03 6.58362639444e-03 - 5.73495116497e-03 5.12972310883e-03 4.74176747355e-03 4.55262020357e-03 4.55262020357e-03 4.74176747355e-03 - 5.12972310883e-03 5.73495116497e-03 6.58362639444e-03 7.70870330534e-03 9.14830218340e-03 1.09414577715e-02 - 1.31198380533e-02 1.56960478729e-02 1.86504890434e-02 2.19185274002e-02 2.53797852965e-02 2.88533907006e-02 - 3.21049723875e-02 3.48695445110e-02 3.68889471691e-02 3.79563421300e-02 3.79563421300e-02 3.68889471691e-02 - 3.48695445110e-02 3.21049723875e-02 2.88533907006e-02 2.53797852965e-02 2.19185274002e-02 1.86504890434e-02 - 1.42425749040e-02 1.20550163598e-02 1.02181471415e-02 8.71419097250e-03 7.51351058269e-03 6.58362639444e-03 - 5.89466652251e-03 5.42174879265e-03 5.14599535674e-03 5.05545032098e-03 5.14599535674e-03 5.42174879265e-03 - 5.89466652251e-03 6.58362639444e-03 7.51351058269e-03 8.71419097250e-03 1.02181471415e-02 1.20550163598e-02 - 1.42425749040e-02 1.67754563001e-02 1.96135589165e-02 2.26718438342e-02 2.58139075627e-02 2.88533907006e-02 - 3.15673758761e-02 3.37228748044e-02 3.51127517762e-02 3.55932306397e-02 3.51127517762e-02 3.37228748044e-02 - 3.15673758761e-02 2.88533907006e-02 2.58139075627e-02 2.26718438342e-02 1.96135589165e-02 1.67754563001e-02 - 1.33939588194e-02 1.15351431719e-02 9.98127039361e-03 8.71419097250e-03 7.70870330534e-03 6.93908976898e-03 - 6.38291972351e-03 6.02253909249e-03 5.84558656512e-03 5.84558656512e-03 6.02253909249e-03 6.38291972351e-03 - 6.93908976898e-03 7.70870330534e-03 8.71419097250e-03 9.98127039361e-03 1.15351431719e-02 1.33939588194e-02 - 1.55601992220e-02 1.80109897723e-02 2.06884779452e-02 2.34923498457e-02 2.62778950395e-02 2.88631293974e-02 - 3.10465495213e-02 3.26341221073e-02 3.34710625414e-02 3.34710625414e-02 3.26341221073e-02 3.10465495213e-02 - 2.88631293974e-02 2.62778950395e-02 2.34923498457e-02 2.06884779452e-02 1.80109897723e-02 1.55601992220e-02 - 1.31152359900e-02 1.15351431719e-02 1.02181471415e-02 9.14830218340e-03 8.30549434438e-03 7.67065297497e-03 - 7.22847713667e-03 6.96786738821e-03 6.88181758770e-03 6.96786738821e-03 7.22847713667e-03 7.67065297497e-03 - 8.30549434438e-03 9.14830218340e-03 1.02181471415e-02 1.15351431719e-02 1.31152359900e-02 1.49636867906e-02 - 1.70678712692e-02 1.93892705934e-02 2.18557815330e-02 2.43576039836e-02 2.67502344749e-02 2.88661050079e-02 - 3.05340710560e-02 3.16041856284e-02 3.19731919657e-02 3.16041856284e-02 3.05340710560e-02 2.88661050079e-02 - 2.67502344749e-02 2.43576039836e-02 2.18557815330e-02 1.93892705934e-02 1.70678712692e-02 1.49636867906e-02 - 1.33939588194e-02 1.20550163598e-02 1.09414577715e-02 1.00404664762e-02 9.33741418467e-03 8.82009872524e-03 - 8.47998103933e-03 8.31144312544e-03 8.31144312544e-03 8.47998103933e-03 8.82009872524e-03 9.33741418467e-03 - 1.00404664762e-02 1.09414577715e-02 1.20550163598e-02 1.33939588194e-02 1.49636867906e-02 1.67567114426e-02 - 1.87467470027e-02 2.08820531014e-02 2.30804654510e-02 2.52298202509e-02 2.71955666447e-02 2.88348357920e-02 - 3.00149219248e-02 3.06330408871e-02 3.06330408871e-02 3.00149219248e-02 2.88348357920e-02 2.71955666447e-02 - 2.52298202509e-02 2.30804654510e-02 2.08820531014e-02 1.87467470027e-02 1.67567114426e-02 1.49636867906e-02 - 1.42425749040e-02 1.31198380533e-02 1.21873907787e-02 1.14361707830e-02 1.08577130860e-02 1.04468583553e-02 - 1.02011860999e-02 1.01194532806e-02 1.02011860999e-02 1.04468583553e-02 1.08577130860e-02 1.14361707830e-02 - 1.21873907787e-02 1.31198380533e-02 1.42425749040e-02 1.55601992220e-02 1.70678712692e-02 1.87467470027e-02 - 2.05587788214e-02 2.24420850452e-02 2.43103322252e-02 2.60582031450e-02 2.75721078901e-02 2.87439673059e-02 - 2.94854041377e-02 2.97391273192e-02 2.94854041377e-02 2.87439673059e-02 2.75721078901e-02 2.60582031450e-02 - 2.43103322252e-02 2.24420850452e-02 2.05587788214e-02 1.87467470027e-02 1.70678712692e-02 1.55601992220e-02 - 1.56960478729e-02 1.47756456624e-02 1.40109856905e-02 1.33976732300e-02 1.29342051284e-02 1.26225341258e-02 - 1.24657333634e-02 1.24657333634e-02 1.26225341258e-02 1.29342051284e-02 1.33976732300e-02 1.40109856905e-02 - 1.47756456624e-02 1.56960478729e-02 1.67754563001e-02 1.80109897723e-02 1.93892705934e-02 2.08820531014e-02 - 2.24420850452e-02 2.40022165572e-02 2.54803066383e-02 2.67889182249e-02 2.78466298707e-02 2.85879356046e-02 - 2.89691250092e-02 2.89691250092e-02 2.85879356046e-02 2.78466298707e-02 2.67889182249e-02 2.54803066383e-02 - 2.40022165572e-02 2.24420850452e-02 2.08820531014e-02 1.93892705934e-02 1.80109897723e-02 1.67754563001e-02 - 1.78072941675e-02 1.70848695603e-02 1.64818809732e-02 1.59997599900e-02 1.56449525655e-02 1.54267827082e-02 - 1.53530693596e-02 1.54267827082e-02 1.56449525655e-02 1.59997599900e-02 1.64818809732e-02 1.70848695603e-02 - 1.78072941675e-02 1.86504890434e-02 1.96135589165e-02 2.06884779452e-02 2.18557815330e-02 2.30804654510e-02 - 2.43103322252e-02 2.54803066383e-02 2.65227612839e-02 2.73794467347e-02 2.80098127199e-02 2.83925891295e-02 - 2.85205562719e-02 2.83925891295e-02 2.80098127199e-02 2.73794467347e-02 2.65227612839e-02 2.54803066383e-02 - 2.43103322252e-02 2.30804654510e-02 2.18557815330e-02 2.06884779452e-02 1.96135589165e-02 1.86504890434e-02 - 2.06439962171e-02 2.01220876747e-02 1.96777557044e-02 1.93203741197e-02 1.90666010177e-02 1.89341271390e-02 - 1.89341271390e-02 1.90666010177e-02 1.93203741197e-02 1.96777557044e-02 2.01220876747e-02 2.06439962171e-02 - 2.12421582644e-02 2.19185274002e-02 2.26718438342e-02 2.34923498457e-02 2.43576039836e-02 2.52298202509e-02 - 2.60582031450e-02 2.67889182249e-02 2.73794467347e-02 2.78094015925e-02 2.80812943983e-02 2.82105864296e-02 - 2.82105864296e-02 2.80812943983e-02 2.78094015925e-02 2.73794467347e-02 2.67889182249e-02 2.60582031450e-02 - 2.52298202509e-02 2.43576039836e-02 2.34923498457e-02 2.26718438342e-02 2.19185274002e-02 2.12421582644e-02 - 2.42781130820e-02 2.39549635512e-02 2.36566460915e-02 2.34067395586e-02 2.32378434698e-02 2.31779027969e-02 - 2.32378434698e-02 2.34067395586e-02 2.36566460915e-02 2.39549635512e-02 2.42781130820e-02 2.46187421852e-02 - 2.49827563157e-02 2.53797852965e-02 2.58139075627e-02 2.62778950395e-02 2.67502344749e-02 2.71955666447e-02 - 2.75721078901e-02 2.78466298707e-02 2.80098127199e-02 2.80812943983e-02 2.80994006567e-02 2.81005086407e-02 - 2.80994006567e-02 2.80812943983e-02 2.80098127199e-02 2.78466298707e-02 2.75721078901e-02 2.71955666447e-02 - 2.67502344749e-02 2.62778950395e-02 2.58139075627e-02 2.53797852965e-02 2.49827563157e-02 2.46187421852e-02 - 2.87439673059e-02 2.85879356046e-02 2.83925891295e-02 2.82105864296e-02 2.81005086407e-02 2.81005086407e-02 - 2.82105864296e-02 2.83925891295e-02 2.85879356046e-02 2.87439673059e-02 2.88348357920e-02 2.88661050079e-02 - 2.88631293974e-02 2.88533907006e-02 2.88533907006e-02 2.88631293974e-02 2.88661050079e-02 2.88348357920e-02 - 2.87439673059e-02 2.85879356046e-02 2.83925891295e-02 2.82105864296e-02 2.81005086407e-02 2.81005086407e-02 - 2.82105864296e-02 2.83925891295e-02 2.85879356046e-02 2.87439673059e-02 2.88348357920e-02 2.88661050079e-02 - 2.88631293974e-02 2.88533907006e-02 2.88533907006e-02 2.88631293974e-02 2.88661050079e-02 2.88348357920e-02 - 3.39533984936e-02 3.38709874542e-02 3.36893635306e-02 3.35158471123e-02 3.34454153402e-02 3.35158471123e-02 - 3.36893635306e-02 3.38709874542e-02 3.39533984936e-02 3.38635928392e-02 3.35871770820e-02 3.31615306069e-02 - 3.26483588385e-02 3.21049723875e-02 3.15673758761e-02 3.10465495213e-02 3.05340710560e-02 3.00149219248e-02 - 2.94854041377e-02 2.89691250092e-02 2.85205562719e-02 2.82105864296e-02 2.80994006567e-02 2.82105864296e-02 - 2.85205562719e-02 2.89691250092e-02 2.94854041377e-02 3.00149219248e-02 3.05340710560e-02 3.10465495213e-02 - 3.15673758761e-02 3.21049723875e-02 3.26483588385e-02 3.31615306069e-02 3.35871770820e-02 3.38635928392e-02 - 3.95849180057e-02 3.93968315223e-02 3.90976289629e-02 3.88830541657e-02 3.88830541657e-02 3.90976289629e-02 - 3.93968315223e-02 3.95849180057e-02 3.94908104948e-02 3.90347179512e-02 3.82415861113e-02 3.72078996967e-02 - 3.60511821341e-02 3.48695445110e-02 3.37228748044e-02 3.26341221073e-02 3.16041856284e-02 3.06330408871e-02 - 2.97391273192e-02 2.89691250092e-02 2.83925891295e-02 2.80812943983e-02 2.80812943983e-02 2.83925891295e-02 - 2.89691250092e-02 2.97391273192e-02 3.06330408871e-02 3.16041856284e-02 3.26341221073e-02 3.37228748044e-02 - 3.48695445110e-02 3.60511821341e-02 3.72078996967e-02 3.82415861113e-02 3.90347179512e-02 3.94908104948e-02 - 4.49623774036e-02 4.44045560444e-02 4.38595264834e-02 4.36365698621e-02 4.38595264834e-02 4.44045560444e-02 - 4.49623774036e-02 4.51877782102e-02 4.48486167771e-02 4.38959177953e-02 4.24386109393e-02 4.06654278454e-02 - 3.87673596218e-02 3.68889471691e-02 3.51127517762e-02 3.34710625414e-02 3.19731919657e-02 3.06330408871e-02 - 2.94854041377e-02 2.85879356046e-02 2.80098127199e-02 2.78094015925e-02 2.80098127199e-02 2.85879356046e-02 - 2.94854041377e-02 3.06330408871e-02 3.19731919657e-02 3.34710625414e-02 3.51127517762e-02 3.68889471691e-02 - 3.87673596218e-02 4.06654278454e-02 4.24386109393e-02 4.38959177953e-02 4.48486167771e-02 4.51877782102e-02 - 4.89738024005e-02 4.77793166757e-02 4.69885184966e-02 4.69885184966e-02 4.77793166757e-02 4.89738024005e-02 - 4.99825941802e-02 5.02828320119e-02 4.96193341715e-02 4.80406383964e-02 4.57968161948e-02 4.32002938784e-02 - 4.05244812822e-02 3.79563421300e-02 3.55932306397e-02 3.34710625414e-02 3.16041856284e-02 3.00149219248e-02 - 2.87439673059e-02 2.78466298707e-02 2.73794467347e-02 2.73794467347e-02 2.78466298707e-02 2.87439673059e-02 - 3.00149219248e-02 3.16041856284e-02 3.34710625414e-02 3.55932306397e-02 3.79563421300e-02 4.05244812822e-02 - 4.32002938784e-02 4.57968161948e-02 4.80406383964e-02 4.96193341715e-02 5.02828320119e-02 4.99825941802e-02 - 5.02620593726e-02 4.83941231678e-02 4.76689314688e-02 4.83941231678e-02 5.02620593726e-02 5.24797871309e-02 - 5.41129564364e-02 5.44829894560e-02 5.33923081840e-02 5.10737783335e-02 4.79731106469e-02 4.45431970579e-02 - 4.11328816616e-02 3.79563421300e-02 3.51127517762e-02 3.26341221073e-02 3.05340710560e-02 2.88348357920e-02 - 2.75721078901e-02 2.67889182249e-02 2.65227612839e-02 2.67889182249e-02 2.75721078901e-02 2.88348357920e-02 - 3.05340710560e-02 3.26341221073e-02 3.51127517762e-02 3.79563421300e-02 4.11328816616e-02 4.45431970579e-02 - 4.79731106469e-02 5.10737783335e-02 5.33923081840e-02 5.44829894560e-02 5.41129564364e-02 5.24797871309e-02 - 4.79609401864e-02 4.58777097769e-02 4.58777097769e-02 4.79609401864e-02 5.13723037105e-02 5.48533676650e-02 - 5.71366804742e-02 5.74676014035e-02 5.58153453540e-02 5.26787408684e-02 4.87273692032e-02 4.45431970579e-02 - 4.05244812822e-02 3.68889471691e-02 3.37228748044e-02 3.10465495213e-02 2.88661050079e-02 2.71955666447e-02 - 2.60582031450e-02 2.54803066383e-02 2.54803066383e-02 2.60582031450e-02 2.71955666447e-02 2.88661050079e-02 - 3.10465495213e-02 3.37228748044e-02 3.68889471691e-02 4.05244812822e-02 4.45431970579e-02 4.87273692032e-02 - 5.26787408684e-02 5.58153453540e-02 5.74676014035e-02 5.71366804742e-02 5.48533676650e-02 5.13723037105e-02 - 4.26203265537e-02 4.11986868029e-02 4.26203265537e-02 4.64751950426e-02 5.15765048907e-02 5.62463189889e-02 - 5.89627863020e-02 5.90154969276e-02 5.66509609539e-02 5.26787408684e-02 4.79731106469e-02 4.32002938784e-02 - 3.87673596218e-02 3.48695445110e-02 3.15673758761e-02 2.88631293974e-02 2.67502344749e-02 2.52298202509e-02 - 2.43103322252e-02 2.40022165572e-02 2.43103322252e-02 2.52298202509e-02 2.67502344749e-02 2.88631293974e-02 - 3.15673758761e-02 3.48695445110e-02 3.87673596218e-02 4.32002938784e-02 4.79731106469e-02 5.26787408684e-02 - 5.66509609539e-02 5.90154969276e-02 5.89627863020e-02 5.62463189889e-02 5.15765048907e-02 4.64751950426e-02 - 3.62214481565e-02 3.62214481565e-02 3.93541671489e-02 4.49279278957e-02 5.14403532045e-02 5.68740665481e-02 - 5.95715936141e-02 5.90154969276e-02 5.58153453540e-02 5.10737783335e-02 4.57968161948e-02 4.06654278454e-02 - 3.60511821341e-02 3.21049723875e-02 2.88533907006e-02 2.62778950395e-02 2.43576039836e-02 2.30804654510e-02 - 2.24420850452e-02 2.24420850452e-02 2.30804654510e-02 2.43576039836e-02 2.62778950395e-02 2.88533907006e-02 - 3.21049723875e-02 3.60511821341e-02 4.06654278454e-02 4.57968161948e-02 5.10737783335e-02 5.58153453540e-02 - 5.90154969276e-02 5.95715936141e-02 5.68740665481e-02 5.14403532045e-02 4.49279278957e-02 3.93541671489e-02 - 3.09103717113e-02 3.25101129901e-02 3.71417160544e-02 4.40123223759e-02 5.13523903781e-02 5.68740665481e-02 - 5.89627863020e-02 5.74676014035e-02 5.33923081840e-02 4.80406383964e-02 4.24386109393e-02 3.72078996967e-02 - 3.26483588385e-02 2.88533907006e-02 2.58139075627e-02 2.34923498457e-02 2.18557815330e-02 2.08820531014e-02 - 2.05587788214e-02 2.08820531014e-02 2.18557815330e-02 2.34923498457e-02 2.58139075627e-02 2.88533907006e-02 - 3.26483588385e-02 3.72078996967e-02 4.24386109393e-02 4.80406383964e-02 5.33923081840e-02 5.74676014035e-02 - 5.89627863020e-02 5.68740665481e-02 5.13523903781e-02 4.40123223759e-02 3.71417160544e-02 3.25101129901e-02 - 2.77489957459e-02 3.06594619284e-02 3.63849623957e-02 4.40123223759e-02 5.14403532045e-02 5.62463189889e-02 - 5.71366804742e-02 5.44829894560e-02 4.96193341715e-02 4.38959177953e-02 3.82415861113e-02 3.31615306069e-02 - 2.88631293974e-02 2.53797852965e-02 2.26718438342e-02 2.06884779452e-02 1.93892705934e-02 1.87467470027e-02 - 1.87467470027e-02 1.93892705934e-02 2.06884779452e-02 2.26718438342e-02 2.53797852965e-02 2.88631293974e-02 - 3.31615306069e-02 3.82415861113e-02 4.38959177953e-02 4.96193341715e-02 5.44829894560e-02 5.71366804742e-02 - 5.62463189889e-02 5.14403532045e-02 4.40123223759e-02 3.63849623957e-02 3.06594619284e-02 2.77489957459e-02 - 2.67478820537e-02 3.06594619284e-02 3.71417160544e-02 4.49279278957e-02 5.15765048907e-02 5.48533676650e-02 - 5.41129564364e-02 5.02828320119e-02 4.48486167771e-02 3.90347179512e-02 3.35871770820e-02 2.88661050079e-02 - 2.49827563157e-02 2.19185274002e-02 1.96135589165e-02 1.80109897723e-02 1.70678712692e-02 1.67567114426e-02 - 1.70678712692e-02 1.80109897723e-02 1.96135589165e-02 2.19185274002e-02 2.49827563157e-02 2.88661050079e-02 - 3.35871770820e-02 3.90347179512e-02 4.48486167771e-02 5.02828320119e-02 5.41129564364e-02 5.48533676650e-02 - 5.15765048907e-02 4.49279278957e-02 3.71417160544e-02 3.06594619284e-02 2.67478820537e-02 2.54935088837e-02 - 2.77489957459e-02 3.25101129901e-02 3.93541671489e-02 4.64751950426e-02 5.13723037105e-02 5.24797871309e-02 - 4.99825941802e-02 4.51877782102e-02 3.94908104948e-02 3.38635928392e-02 2.88348357920e-02 2.46187421852e-02 - 2.12421582644e-02 1.86504890434e-02 1.67754563001e-02 1.55601992220e-02 1.49636867906e-02 1.49636867906e-02 - 1.55601992220e-02 1.67754563001e-02 1.86504890434e-02 2.12421582644e-02 2.46187421852e-02 2.88348357920e-02 - 3.38635928392e-02 3.94908104948e-02 4.51877782102e-02 4.99825941802e-02 5.24797871309e-02 5.13723037105e-02 - 4.64751950426e-02 3.93541671489e-02 3.25101129901e-02 2.77489957459e-02 2.54935088837e-02 2.54935088837e-02 - 4.60013609401e-02 4.89850720157e-02 5.12221625406e-02 5.13869204668e-02 4.89738024005e-02 4.44868574481e-02 - 3.89160663350e-02 3.31691643222e-02 2.78466298707e-02 2.32562353108e-02 1.94921954522e-02 1.65234811342e-02 - 1.42727054437e-02 1.26620800682e-02 1.16276251073e-02 1.11228159589e-02 1.11228159589e-02 1.16276251073e-02 - 1.26620800682e-02 1.42727054437e-02 1.65234811342e-02 1.94921954522e-02 2.32562353108e-02 2.78466298707e-02 - 3.31691643222e-02 3.89160663350e-02 4.44868574481e-02 4.89738024005e-02 5.13869204668e-02 5.12221625406e-02 - 4.89850720157e-02 4.60013609401e-02 4.35588929466e-02 4.22847991283e-02 4.22847991283e-02 4.35588929466e-02 - 4.89850720157e-02 5.05555186569e-02 5.06194135765e-02 4.85080722970e-02 4.44045560444e-02 3.90848689472e-02 - 3.34071767353e-02 2.80098127199e-02 2.32603028496e-02 1.93050944183e-02 1.61434902729e-02 1.37059602390e-02 - 1.19105819676e-02 1.06856809758e-02 9.97511028176e-03 9.74245511371e-03 9.97511028176e-03 1.06856809758e-02 - 1.19105819676e-02 1.37059602390e-02 1.61434902729e-02 1.93050944183e-02 2.32603028496e-02 2.80098127199e-02 - 3.34071767353e-02 3.90848689472e-02 4.44045560444e-02 4.85080722970e-02 5.06194135765e-02 5.05555186569e-02 - 4.89850720157e-02 4.70389926376e-02 4.56222411881e-02 4.51254329663e-02 4.56222411881e-02 4.70389926376e-02 - 5.12221625406e-02 5.06194135765e-02 4.83002627794e-02 4.42752514752e-02 3.90976289629e-02 3.34971688966e-02 - 2.80812943983e-02 2.32368358951e-02 1.91448778653e-02 1.58329883187e-02 1.32437842255e-02 1.12951380995e-02 - 9.91029781221e-03 9.02578945364e-03 8.59555582378e-03 8.59555582378e-03 9.02578945364e-03 9.91029781221e-03 - 1.12951380995e-02 1.32437842255e-02 1.58329883187e-02 1.91448778653e-02 2.32368358951e-02 2.80812943983e-02 - 3.34971688966e-02 3.90976289629e-02 4.42752514752e-02 4.83002627794e-02 5.06194135765e-02 5.12221625406e-02 - 5.07010770424e-02 4.98718618187e-02 4.93308963719e-02 4.93308963719e-02 4.98718618187e-02 5.07010770424e-02 - 5.13869204668e-02 4.85080722970e-02 4.42752514752e-02 3.90842281235e-02 3.35158471123e-02 2.80994006567e-02 - 2.32023283361e-02 1.90175139009e-02 1.55924938344e-02 1.28827341282e-02 1.08088949298e-02 9.29162040305e-03 - 8.26229038338e-03 7.66717366082e-03 7.47255069610e-03 7.66717366082e-03 8.26229038338e-03 9.29162040305e-03 - 1.08088949298e-02 1.28827341282e-02 1.55924938344e-02 1.90175139009e-02 2.32023283361e-02 2.80994006567e-02 - 3.35158471123e-02 3.90842281235e-02 4.42752514752e-02 4.85080722970e-02 5.13869204668e-02 5.29210396854e-02 - 5.34983990182e-02 5.36143814352e-02 5.36149267734e-02 5.36143814352e-02 5.34983990182e-02 5.29210396854e-02 - 4.89738024005e-02 4.44045560444e-02 3.90976289629e-02 3.35158471123e-02 2.81005086407e-02 2.31779027969e-02 - 1.89341271390e-02 1.54267827082e-02 1.26225341258e-02 1.04468583553e-02 8.82009872524e-03 7.67065297497e-03 - 6.93908976898e-03 6.58362639444e-03 6.58362639444e-03 6.93908976898e-03 7.67065297497e-03 8.82009872524e-03 - 1.04468583553e-02 1.26225341258e-02 1.54267827082e-02 1.89341271390e-02 2.31779027969e-02 2.81005086407e-02 - 3.35158471123e-02 3.90976289629e-02 4.44045560444e-02 4.89738024005e-02 5.24797871309e-02 5.48533676650e-02 - 5.62463189889e-02 5.68740665481e-02 5.68740665481e-02 5.62463189889e-02 5.48533676650e-02 5.24797871309e-02 - 4.44868574481e-02 3.90848689472e-02 3.34971688966e-02 2.80994006567e-02 2.31779027969e-02 1.89049688962e-02 - 1.53419303249e-02 1.24650738064e-02 1.02064774226e-02 8.48843476768e-03 7.23847314555e-03 6.39361872594e-03 - 5.90565973456e-03 5.74602373426e-03 5.90565973456e-03 6.39361872594e-03 7.23847314555e-03 8.48843476768e-03 - 1.02064774226e-02 1.24650738064e-02 1.53419303249e-02 1.89049688962e-02 2.31779027969e-02 2.80994006567e-02 - 3.34971688966e-02 3.90848689472e-02 4.44868574481e-02 4.93048229800e-02 5.32152215954e-02 5.60372557288e-02 - 5.77208882781e-02 5.82782465337e-02 5.77208882781e-02 5.60372557288e-02 5.32152215954e-02 4.93048229800e-02 - 3.89160663350e-02 3.34071767353e-02 2.80812943983e-02 2.32023283361e-02 1.89341271390e-02 1.53419303249e-02 - 1.24123312979e-02 1.00865795572e-02 8.29158854156e-03 6.95605972443e-03 6.01563766373e-03 5.41768978229e-03 - 5.12697112440e-03 5.12697112440e-03 5.41768978229e-03 6.01563766373e-03 6.95605972443e-03 8.29158854156e-03 - 1.00865795572e-02 1.24123312979e-02 1.53419303249e-02 1.89341271390e-02 2.32023283361e-02 2.80812943983e-02 - 3.34071767353e-02 3.89160663350e-02 4.42634768270e-02 4.90700187394e-02 5.29846351657e-02 5.57363453523e-02 - 5.71527035674e-02 5.71527035674e-02 5.57363453523e-02 5.29846351657e-02 4.90700187394e-02 4.42634768270e-02 - 3.31691643222e-02 2.80098127199e-02 2.32368358951e-02 1.90175139009e-02 1.54267827082e-02 1.24650738064e-02 - 1.00865795572e-02 8.22635918544e-03 6.81664387654e-03 5.79365065764e-03 5.10253249618e-03 4.70304044562e-03 - 4.57225197605e-03 4.70304044562e-03 5.10253249618e-03 5.79365065764e-03 6.81664387654e-03 8.22635918544e-03 - 1.00865795572e-02 1.24650738064e-02 1.54267827082e-02 1.90175139009e-02 2.32368358951e-02 2.80098127199e-02 - 3.31691643222e-02 3.84534160516e-02 4.35234290368e-02 4.79989400749e-02 5.15101646150e-02 5.37510492057e-02 - 5.45211951056e-02 5.37510492057e-02 5.15101646150e-02 4.79989400749e-02 4.35234290368e-02 3.84534160516e-02 - 2.78466298707e-02 2.32603028496e-02 1.91448778653e-02 1.55924938344e-02 1.26225341258e-02 1.02064774226e-02 - 8.29158854156e-03 6.81664387654e-03 5.72047031573e-03 4.94806264494e-03 4.45623663297e-03 4.21692866215e-03 - 4.21692866215e-03 4.45623663297e-03 4.94806264494e-03 5.72047031573e-03 6.81664387654e-03 8.29158854156e-03 - 1.02064774226e-02 1.26225341258e-02 1.55924938344e-02 1.91448778653e-02 2.32603028496e-02 2.78466298707e-02 - 3.27229087590e-02 3.76190713504e-02 4.21941579647e-02 4.60731359718e-02 4.88987422193e-02 5.03893328752e-02 - 5.03893328752e-02 4.88987422193e-02 4.60731359718e-02 4.21941579647e-02 3.76190713504e-02 3.27229087590e-02 - 2.32562353108e-02 1.93050944183e-02 1.58329883187e-02 1.28827341282e-02 1.04468583553e-02 8.48843476768e-03 - 6.95605972443e-03 5.79365065764e-03 4.94806264494e-03 4.37525079151e-03 4.04374575730e-03 3.93522801758e-03 - 4.04374575730e-03 4.37525079151e-03 4.94806264494e-03 5.79365065764e-03 6.95605972443e-03 8.48843476768e-03 - 1.04468583553e-02 1.28827341282e-02 1.58329883187e-02 1.93050944183e-02 2.32562353108e-02 2.75721078901e-02 - 3.20546920774e-02 3.64263171972e-02 4.03527020822e-02 4.34838779539e-02 4.55081727847e-02 4.62088704848e-02 - 4.55081727847e-02 4.34838779539e-02 4.03527020822e-02 3.64263171972e-02 3.20546920774e-02 2.75721078901e-02 - 1.94921954522e-02 1.61434902729e-02 1.32437842255e-02 1.08088949298e-02 8.82009872524e-03 7.23847314555e-03 - 6.01563766373e-03 5.10253249618e-03 4.45623663297e-03 4.04374575730e-03 3.84302280796e-03 3.84302280796e-03 - 4.04374575730e-03 4.45623663297e-03 5.10253249618e-03 6.01563766373e-03 7.23847314555e-03 8.82009872524e-03 - 1.08088949298e-02 1.32437842255e-02 1.61434902729e-02 1.94921954522e-02 2.32217587400e-02 2.71955666447e-02 - 3.12022017908e-02 3.49654910486e-02 3.81729635435e-02 4.05199675384e-02 4.17618689283e-02 4.17618689283e-02 - 4.05199675384e-02 3.81729635435e-02 3.49654910486e-02 3.12022017908e-02 2.71955666447e-02 2.32217587400e-02 - 1.65234811342e-02 1.37059602390e-02 1.12951380995e-02 9.29162040305e-03 7.67065297497e-03 6.39361872594e-03 - 5.41768978229e-03 4.70304044562e-03 4.21692866215e-03 3.93522801758e-03 3.84302280796e-03 3.93522801758e-03 - 4.21692866215e-03 4.70304044562e-03 5.41768978229e-03 6.39361872594e-03 7.67065297497e-03 9.29162040305e-03 - 1.12951380995e-02 1.37059602390e-02 1.65234811342e-02 1.97084075068e-02 2.31688478126e-02 2.67502344749e-02 - 3.02357338101e-02 3.33624200108e-02 3.58537824974e-02 3.74634706166e-02 3.80204685260e-02 3.74634706166e-02 - 3.58537824974e-02 3.33624200108e-02 3.02357338101e-02 2.67502344749e-02 2.31688478126e-02 1.97084075068e-02 - 1.42727054437e-02 1.19105819676e-02 9.91029781221e-03 8.26229038338e-03 6.93908976898e-03 5.90565973456e-03 - 5.12697112440e-03 4.57225197605e-03 4.21692866215e-03 4.04374575730e-03 4.04374575730e-03 4.21692866215e-03 - 4.57225197605e-03 5.12697112440e-03 5.90565973456e-03 6.93908976898e-03 8.26229038338e-03 9.91029781221e-03 - 1.19105819676e-02 1.42727054437e-02 1.69767793036e-02 1.99620901041e-02 2.31175818882e-02 2.62778950395e-02 - 2.92302840650e-02 3.17358390207e-02 3.35632692529e-02 3.45282284639e-02 3.45282284639e-02 3.35632692529e-02 - 3.17358390207e-02 2.92302840650e-02 2.62778950395e-02 2.31175818882e-02 1.99620901041e-02 1.69767793036e-02 - 1.26620800682e-02 1.06856809758e-02 9.02578945364e-03 7.66717366082e-03 6.58362639444e-03 5.74602373426e-03 - 5.12697112440e-03 4.70304044562e-03 4.45623663297e-03 4.37525079151e-03 4.45623663297e-03 4.70304044562e-03 - 5.12697112440e-03 5.74602373426e-03 6.58362639444e-03 7.66717366082e-03 9.02578945364e-03 1.06856809758e-02 - 1.26620800682e-02 1.49488960464e-02 1.75083321070e-02 2.02621880335e-02 2.30866420056e-02 2.58139075627e-02 - 2.82446089484e-02 3.01717861136e-02 3.14127386696e-02 3.18414068716e-02 3.14127386696e-02 3.01717861136e-02 - 2.82446089484e-02 2.58139075627e-02 2.30866420056e-02 2.02621880335e-02 1.75083321070e-02 1.49488960464e-02 - 1.16276251073e-02 9.97511028176e-03 8.59555582378e-03 7.47255069610e-03 6.58362639444e-03 5.90565973456e-03 - 5.41768978229e-03 5.10253249618e-03 4.94806264494e-03 4.94806264494e-03 5.10253249618e-03 5.41768978229e-03 - 5.90565973456e-03 6.58362639444e-03 7.47255069610e-03 8.59555582378e-03 9.97511028176e-03 1.16276251073e-02 - 1.35553259639e-02 1.57370100687e-02 1.81196807915e-02 2.06126999880e-02 2.30866420056e-02 2.53797852965e-02 - 2.73140021666e-02 2.87187367840e-02 2.94586793037e-02 2.94586793037e-02 2.87187367840e-02 2.73140021666e-02 - 2.53797852965e-02 2.30866420056e-02 2.06126999880e-02 1.81196807915e-02 1.57370100687e-02 1.35553259639e-02 - 1.11228159589e-02 9.74245511371e-03 8.59555582378e-03 7.66717366082e-03 6.93908976898e-03 6.39361872594e-03 - 6.01563766373e-03 5.79365065764e-03 5.72047031573e-03 5.79365065764e-03 6.01563766373e-03 6.39361872594e-03 - 6.93908976898e-03 7.66717366082e-03 8.59555582378e-03 9.74245511371e-03 1.11228159589e-02 1.27424344623e-02 - 1.45906790875e-02 1.66330383744e-02 1.88049742175e-02 2.10090352784e-02 2.31175818882e-02 2.49827563157e-02 - 2.64534808200e-02 2.73972646659e-02 2.77227537368e-02 2.73972646659e-02 2.64534808200e-02 2.49827563157e-02 - 2.31175818882e-02 2.10090352784e-02 1.88049742175e-02 1.66330383744e-02 1.45906790875e-02 1.27424344623e-02 - 1.11228159589e-02 9.97511028176e-03 9.02578945364e-03 8.26229038338e-03 7.67065297497e-03 7.23847314555e-03 - 6.95605972443e-03 6.81664387654e-03 6.81664387654e-03 6.95605972443e-03 7.23847314555e-03 7.67065297497e-03 - 8.26229038338e-03 9.02578945364e-03 9.97511028176e-03 1.11228159589e-02 1.24755048074e-02 1.40283418589e-02 - 1.57591868798e-02 1.76229803621e-02 1.95479913088e-02 2.14361295219e-02 2.31688478126e-02 2.46187421852e-02 - 2.56657154446e-02 2.62153172241e-02 2.62153172241e-02 2.56657154446e-02 2.46187421852e-02 2.31688478126e-02 - 2.14361295219e-02 1.95479913088e-02 1.76229803621e-02 1.57591868798e-02 1.40283418589e-02 1.24755048074e-02 - 1.16276251073e-02 1.06856809758e-02 9.91029781221e-03 9.29162040305e-03 8.82009872524e-03 8.48843476768e-03 - 8.29158854156e-03 8.22635918544e-03 8.29158854156e-03 8.48843476768e-03 8.82009872524e-03 9.29162040305e-03 - 9.91029781221e-03 1.06856809758e-02 1.16276251073e-02 1.27424344623e-02 1.40283418589e-02 1.54709928045e-02 - 1.70389543521e-02 1.86800926235e-02 2.03206914317e-02 2.18687619531e-02 2.32217587400e-02 2.42781130820e-02 - 2.49511167951e-02 2.51823253991e-02 2.49511167951e-02 2.42781130820e-02 2.32217587400e-02 2.18687619531e-02 - 2.03206914317e-02 1.86800926235e-02 1.70389543521e-02 1.54709928045e-02 1.40283418589e-02 1.27424344623e-02 - 1.26620800682e-02 1.19105819676e-02 1.12951380995e-02 1.08088949298e-02 1.04468583553e-02 1.02064774226e-02 - 1.00865795572e-02 1.00865795572e-02 1.02064774226e-02 1.04468583553e-02 1.08088949298e-02 1.12951380995e-02 - 1.19105819676e-02 1.26620800682e-02 1.35553259639e-02 1.45906790875e-02 1.57591868798e-02 1.70389543521e-02 - 1.83921353899e-02 1.97639178277e-02 2.10847229658e-02 2.22755921268e-02 2.32562353108e-02 2.39549635512e-02 - 2.43184216158e-02 2.43184216158e-02 2.39549635512e-02 2.32562353108e-02 2.22755921268e-02 2.10847229658e-02 - 1.97639178277e-02 1.83921353899e-02 1.70389543521e-02 1.57591868798e-02 1.45906790875e-02 1.35553259639e-02 - 1.42727054437e-02 1.37059602390e-02 1.32437842255e-02 1.28827341282e-02 1.26225341258e-02 1.24650738064e-02 - 1.24123312979e-02 1.24650738064e-02 1.26225341258e-02 1.28827341282e-02 1.32437842255e-02 1.37059602390e-02 - 1.42727054437e-02 1.49488960464e-02 1.57370100687e-02 1.66330383744e-02 1.76229803621e-02 1.86800926235e-02 - 1.97639178277e-02 2.08223402545e-02 2.17964249596e-02 2.26267522861e-02 2.32603028496e-02 2.36566460915e-02 - 2.37914166767e-02 2.36566460915e-02 2.32603028496e-02 2.26267522861e-02 2.17964249596e-02 2.08223402545e-02 - 1.97639178277e-02 1.86800926235e-02 1.76229803621e-02 1.66330383744e-02 1.57370100687e-02 1.49488960464e-02 - 1.65234811342e-02 1.61434902729e-02 1.58329883187e-02 1.55924938344e-02 1.54267827082e-02 1.53419303249e-02 - 1.53419303249e-02 1.54267827082e-02 1.55924938344e-02 1.58329883187e-02 1.61434902729e-02 1.65234811342e-02 - 1.69767793036e-02 1.75083321070e-02 1.81196807915e-02 1.88049742175e-02 1.95479913088e-02 2.03206914317e-02 - 2.10847229658e-02 2.17964249596e-02 2.24136125305e-02 2.29016184223e-02 2.32368358951e-02 2.34067395586e-02 - 2.34067395586e-02 2.32368358951e-02 2.29016184223e-02 2.24136125305e-02 2.17964249596e-02 2.10847229658e-02 - 2.03206914317e-02 1.95479913088e-02 1.88049742175e-02 1.81196807915e-02 1.75083321070e-02 1.69767793036e-02 - 1.94921954522e-02 1.93050944183e-02 1.91448778653e-02 1.90175139009e-02 1.89341271390e-02 1.89049688962e-02 - 1.89341271390e-02 1.90175139009e-02 1.91448778653e-02 1.93050944183e-02 1.94921954522e-02 1.97084075068e-02 - 1.99620901041e-02 2.02621880335e-02 2.06126999880e-02 2.10090352784e-02 2.14361295219e-02 2.18687619531e-02 - 2.22755921268e-02 2.26267522861e-02 2.29016184223e-02 2.30924993956e-02 2.32023283361e-02 2.32378434698e-02 - 2.32023283361e-02 2.30924993956e-02 2.29016184223e-02 2.26267522861e-02 2.22755921268e-02 2.18687619531e-02 - 2.14361295219e-02 2.10090352784e-02 2.06126999880e-02 2.02621880335e-02 1.99620901041e-02 1.97084075068e-02 - 2.32562353108e-02 2.32603028496e-02 2.32368358951e-02 2.32023283361e-02 2.31779027969e-02 2.31779027969e-02 - 2.32023283361e-02 2.32368358951e-02 2.32603028496e-02 2.32562353108e-02 2.32217587400e-02 2.31688478126e-02 - 2.31175818882e-02 2.30866420056e-02 2.30866420056e-02 2.31175818882e-02 2.31688478126e-02 2.32217587400e-02 - 2.32562353108e-02 2.32603028496e-02 2.32368358951e-02 2.32023283361e-02 2.31779027969e-02 2.31779027969e-02 - 2.32023283361e-02 2.32368358951e-02 2.32603028496e-02 2.32562353108e-02 2.32217587400e-02 2.31688478126e-02 - 2.31175818882e-02 2.30866420056e-02 2.30866420056e-02 2.31175818882e-02 2.31688478126e-02 2.32217587400e-02 - 2.78466298707e-02 2.80098127199e-02 2.80812943983e-02 2.80994006567e-02 2.81005086407e-02 2.80994006567e-02 - 2.80812943983e-02 2.80098127199e-02 2.78466298707e-02 2.75721078901e-02 2.71955666447e-02 2.67502344749e-02 - 2.62778950395e-02 2.58139075627e-02 2.53797852965e-02 2.49827563157e-02 2.46187421852e-02 2.42781130820e-02 - 2.39549635512e-02 2.36566460915e-02 2.34067395586e-02 2.32378434698e-02 2.31779027969e-02 2.32378434698e-02 - 2.34067395586e-02 2.36566460915e-02 2.39549635512e-02 2.42781130820e-02 2.46187421852e-02 2.49827563157e-02 - 2.53797852965e-02 2.58139075627e-02 2.62778950395e-02 2.67502344749e-02 2.71955666447e-02 2.75721078901e-02 - 3.31691643222e-02 3.34071767353e-02 3.34971688966e-02 3.35158471123e-02 3.35158471123e-02 3.34971688966e-02 - 3.34071767353e-02 3.31691643222e-02 3.27229087590e-02 3.20546920774e-02 3.12022017908e-02 3.02357338101e-02 - 2.92302840650e-02 2.82446089484e-02 2.73140021666e-02 2.64534808200e-02 2.56657154446e-02 2.49511167951e-02 - 2.43184216158e-02 2.37914166767e-02 2.34067395586e-02 2.32023283361e-02 2.32023283361e-02 2.34067395586e-02 - 2.37914166767e-02 2.43184216158e-02 2.49511167951e-02 2.56657154446e-02 2.64534808200e-02 2.73140021666e-02 - 2.82446089484e-02 2.92302840650e-02 3.02357338101e-02 3.12022017908e-02 3.20546920774e-02 3.27229087590e-02 - 3.89160663350e-02 3.90848689472e-02 3.90976289629e-02 3.90842281235e-02 3.90976289629e-02 3.90848689472e-02 - 3.89160663350e-02 3.84534160516e-02 3.76190713504e-02 3.64263171972e-02 3.49654910486e-02 3.33624200108e-02 - 3.17358390207e-02 3.01717861136e-02 2.87187367840e-02 2.73972646659e-02 2.62153172241e-02 2.51823253991e-02 - 2.43184216158e-02 2.36566460915e-02 2.32368358951e-02 2.30924993956e-02 2.32368358951e-02 2.36566460915e-02 - 2.43184216158e-02 2.51823253991e-02 2.62153172241e-02 2.73972646659e-02 2.87187367840e-02 3.01717861136e-02 - 3.17358390207e-02 3.33624200108e-02 3.49654910486e-02 3.64263171972e-02 3.76190713504e-02 3.84534160516e-02 - 4.44868574481e-02 4.44045560444e-02 4.42752514752e-02 4.42752514752e-02 4.44045560444e-02 4.44868574481e-02 - 4.42634768270e-02 4.35234290368e-02 4.21941579647e-02 4.03527020822e-02 3.81729635435e-02 3.58537824974e-02 - 3.35632692529e-02 3.14127386696e-02 2.94586793037e-02 2.77227537368e-02 2.62153172241e-02 2.49511167951e-02 - 2.39549635512e-02 2.32603028496e-02 2.29016184223e-02 2.29016184223e-02 2.32603028496e-02 2.39549635512e-02 - 2.49511167951e-02 2.62153172241e-02 2.77227537368e-02 2.94586793037e-02 3.14127386696e-02 3.35632692529e-02 - 3.58537824974e-02 3.81729635435e-02 4.03527020822e-02 4.21941579647e-02 4.35234290368e-02 4.42634768270e-02 - 4.89738024005e-02 4.85080722970e-02 4.83002627794e-02 4.85080722970e-02 4.89738024005e-02 4.93048229800e-02 - 4.90700187394e-02 4.79989400749e-02 4.60731359718e-02 4.34838779539e-02 4.05199675384e-02 3.74634706166e-02 - 3.45282284639e-02 3.18414068716e-02 2.94586793037e-02 2.73972646659e-02 2.56657154446e-02 2.42781130820e-02 - 2.32562353108e-02 2.26267522861e-02 2.24136125305e-02 2.26267522861e-02 2.32562353108e-02 2.42781130820e-02 - 2.56657154446e-02 2.73972646659e-02 2.94586793037e-02 3.18414068716e-02 3.45282284639e-02 3.74634706166e-02 - 4.05199675384e-02 4.34838779539e-02 4.60731359718e-02 4.79989400749e-02 4.90700187394e-02 4.93048229800e-02 - 5.13869204668e-02 5.06194135765e-02 5.06194135765e-02 5.13869204668e-02 5.24797871309e-02 5.32152215954e-02 - 5.29846351657e-02 5.15101646150e-02 4.88987422193e-02 4.55081727847e-02 4.17618689283e-02 3.80204685260e-02 - 3.45282284639e-02 3.14127386696e-02 2.87187367840e-02 2.64534808200e-02 2.46187421852e-02 2.32217587400e-02 - 2.22755921268e-02 2.17964249596e-02 2.17964249596e-02 2.22755921268e-02 2.32217587400e-02 2.46187421852e-02 - 2.64534808200e-02 2.87187367840e-02 3.14127386696e-02 3.45282284639e-02 3.80204685260e-02 4.17618689283e-02 - 4.55081727847e-02 4.88987422193e-02 5.15101646150e-02 5.29846351657e-02 5.32152215954e-02 5.24797871309e-02 - 5.12221625406e-02 5.05555186569e-02 5.12221625406e-02 5.29210396854e-02 5.48533676650e-02 5.60372557288e-02 - 5.57363453523e-02 5.37510492057e-02 5.03893328752e-02 4.62088704848e-02 4.17618689283e-02 3.74634706166e-02 - 3.35632692529e-02 3.01717861136e-02 2.73140021666e-02 2.49827563157e-02 2.31688478126e-02 2.18687619531e-02 - 2.10847229658e-02 2.08223402545e-02 2.10847229658e-02 2.18687619531e-02 2.31688478126e-02 2.49827563157e-02 - 2.73140021666e-02 3.01717861136e-02 3.35632692529e-02 3.74634706166e-02 4.17618689283e-02 4.62088704848e-02 - 5.03893328752e-02 5.37510492057e-02 5.57363453523e-02 5.60372557288e-02 5.48533676650e-02 5.29210396854e-02 - 4.89850720157e-02 4.89850720157e-02 5.07010770424e-02 5.34983990182e-02 5.62463189889e-02 5.77208882781e-02 - 5.71527035674e-02 5.45211951056e-02 5.03893328752e-02 4.55081727847e-02 4.05199675384e-02 3.58537824974e-02 - 3.17358390207e-02 2.82446089484e-02 2.53797852965e-02 2.31175818882e-02 2.14361295219e-02 2.03206914317e-02 - 1.97639178277e-02 1.97639178277e-02 2.03206914317e-02 2.14361295219e-02 2.31175818882e-02 2.53797852965e-02 - 2.82446089484e-02 3.17358390207e-02 3.58537824974e-02 4.05199675384e-02 4.55081727847e-02 5.03893328752e-02 - 5.45211951056e-02 5.71527035674e-02 5.77208882781e-02 5.62463189889e-02 5.34983990182e-02 5.07010770424e-02 - 4.60013609401e-02 4.70389926376e-02 4.98718618187e-02 5.36143814352e-02 5.68740665481e-02 5.82782465337e-02 - 5.71527035674e-02 5.37510492057e-02 4.88987422193e-02 4.34838779539e-02 3.81729635435e-02 3.33624200108e-02 - 2.92302840650e-02 2.58139075627e-02 2.30866420056e-02 2.10090352784e-02 1.95479913088e-02 1.86800926235e-02 - 1.83921353899e-02 1.86800926235e-02 1.95479913088e-02 2.10090352784e-02 2.30866420056e-02 2.58139075627e-02 - 2.92302840650e-02 3.33624200108e-02 3.81729635435e-02 4.34838779539e-02 4.88987422193e-02 5.37510492057e-02 - 5.71527035674e-02 5.82782465337e-02 5.68740665481e-02 5.36143814352e-02 4.98718618187e-02 4.70389926376e-02 - 4.35588929466e-02 4.56222411881e-02 4.93308963719e-02 5.36149267734e-02 5.68740665481e-02 5.77208882781e-02 - 5.57363453523e-02 5.15101646150e-02 4.60731359718e-02 4.03527020822e-02 3.49654910486e-02 3.02357338101e-02 - 2.62778950395e-02 2.30866420056e-02 2.06126999880e-02 1.88049742175e-02 1.76229803621e-02 1.70389543521e-02 - 1.70389543521e-02 1.76229803621e-02 1.88049742175e-02 2.06126999880e-02 2.30866420056e-02 2.62778950395e-02 - 3.02357338101e-02 3.49654910486e-02 4.03527020822e-02 4.60731359718e-02 5.15101646150e-02 5.57363453523e-02 - 5.77208882781e-02 5.68740665481e-02 5.36149267734e-02 4.93308963719e-02 4.56222411881e-02 4.35588929466e-02 - 4.22847991283e-02 4.51254329663e-02 4.93308963719e-02 5.36143814352e-02 5.62463189889e-02 5.60372557288e-02 - 5.29846351657e-02 4.79989400749e-02 4.21941579647e-02 3.64263171972e-02 3.12022017908e-02 2.67502344749e-02 - 2.31175818882e-02 2.02621880335e-02 1.81196807915e-02 1.66330383744e-02 1.57591868798e-02 1.54709928045e-02 - 1.57591868798e-02 1.66330383744e-02 1.81196807915e-02 2.02621880335e-02 2.31175818882e-02 2.67502344749e-02 - 3.12022017908e-02 3.64263171972e-02 4.21941579647e-02 4.79989400749e-02 5.29846351657e-02 5.60372557288e-02 - 5.62463189889e-02 5.36143814352e-02 4.93308963719e-02 4.51254329663e-02 4.22847991283e-02 4.13123485649e-02 - 4.22847991283e-02 4.56222411881e-02 4.98718618187e-02 5.34983990182e-02 5.48533676650e-02 5.32152215954e-02 - 4.90700187394e-02 4.35234290368e-02 3.76190713504e-02 3.20546920774e-02 2.71955666447e-02 2.31688478126e-02 - 1.99620901041e-02 1.75083321070e-02 1.57370100687e-02 1.45906790875e-02 1.40283418589e-02 1.40283418589e-02 - 1.45906790875e-02 1.57370100687e-02 1.75083321070e-02 1.99620901041e-02 2.31688478126e-02 2.71955666447e-02 - 3.20546920774e-02 3.76190713504e-02 4.35234290368e-02 4.90700187394e-02 5.32152215954e-02 5.48533676650e-02 - 5.34983990182e-02 4.98718618187e-02 4.56222411881e-02 4.22847991283e-02 4.05694134160e-02 4.05694134160e-02 - 4.35588929466e-02 4.70389926376e-02 5.07010770424e-02 5.29210396854e-02 5.24797871309e-02 4.93048229800e-02 - 4.42634768270e-02 3.84534160516e-02 3.27229087590e-02 2.75721078901e-02 2.32217587400e-02 1.97084075068e-02 - 1.69767793036e-02 1.49488960464e-02 1.35553259639e-02 1.27424344623e-02 1.24755048074e-02 1.27424344623e-02 - 1.35553259639e-02 1.49488960464e-02 1.69767793036e-02 1.97084075068e-02 2.32217587400e-02 2.75721078901e-02 - 3.27229087590e-02 3.84534160516e-02 4.42634768270e-02 4.93048229800e-02 5.24797871309e-02 5.29210396854e-02 - 5.07010770424e-02 4.70389926376e-02 4.35588929466e-02 4.13123485649e-02 4.05694134160e-02 4.13123485649e-02 - 5.75824043038e-02 5.67236888968e-02 5.43925934286e-02 5.03535465114e-02 4.49623774036e-02 3.89160663350e-02 - 3.28952522339e-02 2.73794467347e-02 2.26267522861e-02 1.87162119832e-02 1.56112881223e-02 1.32272933414e-02 - 1.14766013692e-02 1.02846446979e-02 9.59384043225e-03 9.36769905218e-03 9.59384043225e-03 1.02846446979e-02 - 1.14766013692e-02 1.32272933414e-02 1.56112881223e-02 1.87162119832e-02 2.26267522861e-02 2.73794467347e-02 - 3.28952522339e-02 3.89160663350e-02 4.49623774036e-02 5.03535465114e-02 5.43925934286e-02 5.67236888968e-02 - 5.75824043038e-02 5.76200322747e-02 5.74463352203e-02 5.73653289979e-02 5.74463352203e-02 5.76200322747e-02 - 5.67236888968e-02 5.43239294918e-02 5.04463447592e-02 4.52857661696e-02 3.93968315223e-02 3.34071767353e-02 - 2.78094015925e-02 2.29016184223e-02 1.88053010662e-02 1.55127511572e-02 1.29494247541e-02 1.10259974674e-02 - 9.66211927865e-03 8.79214216133e-03 8.36917339040e-03 8.36917339040e-03 8.79214216133e-03 9.66211927865e-03 - 1.10259974674e-02 1.29494247541e-02 1.55127511572e-02 1.88053010662e-02 2.29016184223e-02 2.78094015925e-02 - 3.34071767353e-02 3.93968315223e-02 4.52857661696e-02 5.04463447592e-02 5.43239294918e-02 5.67236888968e-02 - 5.79103146750e-02 5.83777841365e-02 5.85232784436e-02 5.85232784436e-02 5.83777841365e-02 5.79103146750e-02 - 5.43925934286e-02 5.04463447592e-02 4.53738413591e-02 3.96081166256e-02 3.36893635306e-02 2.80812943983e-02 - 2.30924993956e-02 1.88720574247e-02 1.54388806266e-02 1.27327884289e-02 1.06671499136e-02 9.15892896774e-03 - 8.13716815266e-03 7.54684340873e-03 7.35383003280e-03 7.54684340873e-03 8.13716815266e-03 9.15892896774e-03 - 1.06671499136e-02 1.27327884289e-02 1.54388806266e-02 1.88720574247e-02 2.30924993956e-02 2.80812943983e-02 - 3.36893635306e-02 3.96081166256e-02 4.53738413591e-02 5.04463447592e-02 5.43925934286e-02 5.70772559013e-02 - 5.86758842735e-02 5.94868177545e-02 5.97323039443e-02 5.94868177545e-02 5.86758842735e-02 5.70772559013e-02 - 5.03535465114e-02 4.52857661696e-02 3.96081166256e-02 3.37780927799e-02 2.82105864296e-02 2.32023283361e-02 - 1.89142861556e-02 1.53857855201e-02 1.25723726562e-02 1.03937663652e-02 8.76725594498e-03 7.61927184895e-03 - 6.88914005847e-03 6.53448601861e-03 6.53448601861e-03 6.88914005847e-03 7.61927184895e-03 8.76725594498e-03 - 1.03937663652e-02 1.25723726562e-02 1.53857855201e-02 1.89142861556e-02 2.32023283361e-02 2.82105864296e-02 - 3.37780927799e-02 3.96081166256e-02 4.52857661696e-02 5.03535465114e-02 5.44475263977e-02 5.74105494947e-02 - 5.92810318582e-02 6.01752681104e-02 6.01752681104e-02 5.92810318582e-02 5.74105494947e-02 5.44475263977e-02 - 4.49623774036e-02 3.93968315223e-02 3.36893635306e-02 2.82105864296e-02 2.32378434698e-02 1.89341271390e-02 - 1.53530693596e-02 1.24657333634e-02 1.02011860999e-02 8.47998103933e-03 7.22847713667e-03 6.38291972351e-03 - 5.89466652251e-03 5.73495116497e-03 5.89466652251e-03 6.38291972351e-03 7.22847713667e-03 8.47998103933e-03 - 1.02011860999e-02 1.24657333634e-02 1.53530693596e-02 1.89341271390e-02 2.32378434698e-02 2.82105864296e-02 - 3.36893635306e-02 3.93968315223e-02 4.49623774036e-02 4.99825941802e-02 5.41129564364e-02 5.71366804742e-02 - 5.89627863020e-02 5.95715936141e-02 5.89627863020e-02 5.71366804742e-02 5.41129564364e-02 4.99825941802e-02 - 3.89160663350e-02 3.34071767353e-02 2.80812943983e-02 2.32023283361e-02 1.89341271390e-02 1.53419303249e-02 - 1.24123312979e-02 1.00865795572e-02 8.29158854156e-03 6.95605972443e-03 6.01563766373e-03 5.41768978229e-03 - 5.12697112440e-03 5.12697112440e-03 5.41768978229e-03 6.01563766373e-03 6.95605972443e-03 8.29158854156e-03 - 1.00865795572e-02 1.24123312979e-02 1.53419303249e-02 1.89341271390e-02 2.32023283361e-02 2.80812943983e-02 - 3.34071767353e-02 3.89160663350e-02 4.42634768270e-02 4.90700187394e-02 5.29846351657e-02 5.57363453523e-02 - 5.71527035674e-02 5.71527035674e-02 5.57363453523e-02 5.29846351657e-02 4.90700187394e-02 4.42634768270e-02 - 3.28952522339e-02 2.78094015925e-02 2.30924993956e-02 1.89142861556e-02 1.53530693596e-02 1.24123312979e-02 - 1.00485204973e-02 8.19834740781e-03 6.79537428806e-03 5.77685140016e-03 5.08859106656e-03 4.69069423954e-03 - 4.56041706509e-03 4.69069423954e-03 5.08859106656e-03 5.77685140016e-03 6.79537428806e-03 8.19834740781e-03 - 1.00485204973e-02 1.24123312979e-02 1.53530693596e-02 1.89142861556e-02 2.30924993956e-02 2.78094015925e-02 - 3.28952522339e-02 3.80886538087e-02 4.30547772101e-02 4.74231711778e-02 5.08390344517e-02 5.30133769166e-02 - 5.37595739225e-02 5.30133769166e-02 5.08390344517e-02 4.74231711778e-02 4.30547772101e-02 3.80886538087e-02 - 2.73794467347e-02 2.29016184223e-02 1.88720574247e-02 1.53857855201e-02 1.24657333634e-02 1.00865795572e-02 - 8.19834740781e-03 6.74228118806e-03 5.65928321674e-03 4.89581524939e-03 4.40955813989e-03 4.17292027232e-03 - 4.17292027232e-03 4.40955813989e-03 4.89581524939e-03 5.65928321674e-03 6.74228118806e-03 8.19834740781e-03 - 1.00865795572e-02 1.24657333634e-02 1.53857855201e-02 1.88720574247e-02 2.29016184223e-02 2.73794467347e-02 - 3.21243272248e-02 3.68707660171e-02 4.12888114430e-02 4.50208900473e-02 4.77311231410e-02 4.91578982971e-02 - 4.91578982971e-02 4.77311231410e-02 4.50208900473e-02 4.12888114430e-02 3.68707660171e-02 3.21243272248e-02 - 2.26267522861e-02 1.88053010662e-02 1.54388806266e-02 1.25723726562e-02 1.02011860999e-02 8.29158854156e-03 - 6.79537428806e-03 5.65928321674e-03 4.83232712929e-03 4.27192322596e-03 3.94752033538e-03 3.84131375804e-03 - 3.94752033538e-03 4.27192322596e-03 4.83232712929e-03 5.65928321674e-03 6.79537428806e-03 8.29158854156e-03 - 1.02011860999e-02 1.25723726562e-02 1.54388806266e-02 1.88053010662e-02 2.26267522861e-02 2.67889182249e-02 - 3.10978190541e-02 3.52857897121e-02 3.90350130516e-02 4.20165784801e-02 4.39402098517e-02 4.46053414397e-02 - 4.39402098517e-02 4.20165784801e-02 3.90350130516e-02 3.52857897121e-02 3.10978190541e-02 2.67889182249e-02 - 1.87162119832e-02 1.55127511572e-02 1.27327884289e-02 1.03937663652e-02 8.47998103933e-03 6.95605972443e-03 - 5.77685140016e-03 4.89581524939e-03 4.27192322596e-03 3.87358926493e-03 3.67971968314e-03 3.67971968314e-03 - 3.87358926493e-03 4.27192322596e-03 4.89581524939e-03 5.77685140016e-03 6.95605972443e-03 8.47998103933e-03 - 1.03937663652e-02 1.27327884289e-02 1.55127511572e-02 1.87162119832e-02 2.22755921268e-02 2.60582031450e-02 - 2.98615217076e-02 3.34242157073e-02 3.64535808156e-02 3.86662855632e-02 3.98358227133e-02 3.98358227133e-02 - 3.86662855632e-02 3.64535808156e-02 3.34242157073e-02 2.98615217076e-02 2.60582031450e-02 2.22755921268e-02 - 1.56112881223e-02 1.29494247541e-02 1.06671499136e-02 8.76725594498e-03 7.22847713667e-03 6.01563766373e-03 - 5.08859106656e-03 4.40955813989e-03 3.94752033538e-03 3.67971968314e-03 3.59206217435e-03 3.67971968314e-03 - 3.94752033538e-03 4.40955813989e-03 5.08859106656e-03 6.01563766373e-03 7.22847713667e-03 8.76725594498e-03 - 1.06671499136e-02 1.29494247541e-02 1.56112881223e-02 1.86137801375e-02 2.18687619531e-02 2.52298202509e-02 - 2.84935612207e-02 3.14154606035e-02 3.37399765679e-02 3.52402742752e-02 3.57591480990e-02 3.52402742752e-02 - 3.37399765679e-02 3.14154606035e-02 2.84935612207e-02 2.52298202509e-02 2.18687619531e-02 1.86137801375e-02 - 1.32272933414e-02 1.10259974674e-02 9.15892896774e-03 7.61927184895e-03 6.38291972351e-03 5.41768978229e-03 - 4.69069423954e-03 4.17292027232e-03 3.84131375804e-03 3.67971968314e-03 3.67971968314e-03 3.84131375804e-03 - 4.17292027232e-03 4.69069423954e-03 5.41768978229e-03 6.38291972351e-03 7.61927184895e-03 9.15892896774e-03 - 1.10259974674e-02 1.32272933414e-02 1.57423428102e-02 1.85132658939e-02 2.14361295219e-02 2.43576039836e-02 - 2.70818268649e-02 2.93901320501e-02 3.10717223250e-02 3.19590319446e-02 3.19590319446e-02 3.10717223250e-02 - 2.93901320501e-02 2.70818268649e-02 2.43576039836e-02 2.14361295219e-02 1.85132658939e-02 1.57423428102e-02 - 1.14766013692e-02 9.66211927865e-03 8.13716815266e-03 6.88914005847e-03 5.89466652251e-03 5.12697112440e-03 - 4.56041706509e-03 4.17292027232e-03 3.94752033538e-03 3.87358926493e-03 3.94752033538e-03 4.17292027232e-03 - 4.56041706509e-03 5.12697112440e-03 5.89466652251e-03 6.88914005847e-03 8.13716815266e-03 9.66211927865e-03 - 1.14766013692e-02 1.35733603577e-02 1.59162612755e-02 1.84326960165e-02 2.10090352784e-02 2.34923498457e-02 - 2.57019293917e-02 2.74512061786e-02 2.85763383726e-02 2.89647599965e-02 2.85763383726e-02 2.74512061786e-02 - 2.57019293917e-02 2.34923498457e-02 2.10090352784e-02 1.84326960165e-02 1.59162612755e-02 1.35733603577e-02 - 1.02846446979e-02 8.79214216133e-03 7.54684340873e-03 6.53448601861e-03 5.73495116497e-03 5.12697112440e-03 - 4.69069423954e-03 4.40955813989e-03 4.27192322596e-03 4.27192322596e-03 4.40955813989e-03 4.69069423954e-03 - 5.12697112440e-03 5.73495116497e-03 6.53448601861e-03 7.54684340873e-03 8.79214216133e-03 1.02846446979e-02 - 1.20255038743e-02 1.39945083398e-02 1.61427916872e-02 1.83878553878e-02 2.06126999880e-02 2.26718438342e-02 - 2.44059448105e-02 2.56635113913e-02 2.63252408289e-02 2.63252408289e-02 2.56635113913e-02 2.44059448105e-02 - 2.26718438342e-02 2.06126999880e-02 1.83878553878e-02 1.61427916872e-02 1.39945083398e-02 1.20255038743e-02 - 9.59384043225e-03 8.36917339040e-03 7.35383003280e-03 6.53448601861e-03 5.89466652251e-03 5.41768978229e-03 - 5.08859106656e-03 4.89581524939e-03 4.83232712929e-03 4.89581524939e-03 5.08859106656e-03 5.41768978229e-03 - 5.89466652251e-03 6.53448601861e-03 7.35383003280e-03 8.36917339040e-03 9.59384043225e-03 1.10330000246e-02 - 1.26769712537e-02 1.44944499034e-02 1.64272283654e-02 1.83878553878e-02 2.02621880335e-02 2.19185274002e-02 - 2.32231030162e-02 2.40594329852e-02 2.43476957086e-02 2.40594329852e-02 2.32231030162e-02 2.19185274002e-02 - 2.02621880335e-02 1.83878553878e-02 1.64272283654e-02 1.44944499034e-02 1.26769712537e-02 1.10330000246e-02 - 9.36769905218e-03 8.36917339040e-03 7.54684340873e-03 6.88914005847e-03 6.38291972351e-03 6.01563766373e-03 - 5.77685140016e-03 5.65928321674e-03 5.65928321674e-03 5.77685140016e-03 6.01563766373e-03 6.38291972351e-03 - 6.88914005847e-03 7.54684340873e-03 8.36917339040e-03 9.36769905218e-03 1.05489279259e-02 1.19093466628e-02 - 1.34297677852e-02 1.50702461704e-02 1.67669692380e-02 1.84326960165e-02 1.99620901041e-02 2.12421582644e-02 - 2.21666114252e-02 2.26519365039e-02 2.26519365039e-02 2.21666114252e-02 2.12421582644e-02 1.99620901041e-02 - 1.84326960165e-02 1.67669692380e-02 1.50702461704e-02 1.34297677852e-02 1.19093466628e-02 1.05489279259e-02 - 9.59384043225e-03 8.79214216133e-03 8.13716815266e-03 7.61927184895e-03 7.22847713667e-03 6.95605972443e-03 - 6.79537428806e-03 6.74228118806e-03 6.79537428806e-03 6.95605972443e-03 7.22847713667e-03 7.61927184895e-03 - 8.13716815266e-03 8.79214216133e-03 9.59384043225e-03 1.05489279259e-02 1.16573532374e-02 1.29079014387e-02 - 1.42737851127e-02 1.57094271493e-02 1.71497889118e-02 1.85132658939e-02 1.97084075068e-02 2.06439962171e-02 - 2.12413612776e-02 2.14468462049e-02 2.12413612776e-02 2.06439962171e-02 1.97084075068e-02 1.85132658939e-02 - 1.71497889118e-02 1.57094271493e-02 1.42737851127e-02 1.29079014387e-02 1.16573532374e-02 1.05489279259e-02 - 1.02846446979e-02 9.66211927865e-03 9.15892896774e-03 8.76725594498e-03 8.47998103933e-03 8.29158854156e-03 - 8.19834740781e-03 8.19834740781e-03 8.29158854156e-03 8.47998103933e-03 8.76725594498e-03 9.15892896774e-03 - 9.66211927865e-03 1.02846446979e-02 1.10330000246e-02 1.19093466628e-02 1.29079014387e-02 1.40112393540e-02 - 1.51874137660e-02 1.63890080671e-02 1.75547637226e-02 1.86137801375e-02 1.94921954522e-02 2.01220876747e-02 - 2.04512222766e-02 2.04512222766e-02 2.01220876747e-02 1.94921954522e-02 1.86137801375e-02 1.75547637226e-02 - 1.63890080671e-02 1.51874137660e-02 1.40112393540e-02 1.29079014387e-02 1.19093466628e-02 1.10330000246e-02 - 1.14766013692e-02 1.10259974674e-02 1.06671499136e-02 1.03937663652e-02 1.02011860999e-02 1.00865795572e-02 - 1.00485204973e-02 1.00865795572e-02 1.02011860999e-02 1.03937663652e-02 1.06671499136e-02 1.10259974674e-02 - 1.14766013692e-02 1.20255038743e-02 1.26769712537e-02 1.34297677852e-02 1.42737851127e-02 1.51874137660e-02 - 1.61367490443e-02 1.70770073925e-02 1.79555609317e-02 1.87162119832e-02 1.93050944183e-02 1.96777557044e-02 - 1.98052910067e-02 1.96777557044e-02 1.93050944183e-02 1.87162119832e-02 1.79555609317e-02 1.70770073925e-02 - 1.61367490443e-02 1.51874137660e-02 1.42737851127e-02 1.34297677852e-02 1.26769712537e-02 1.20255038743e-02 - 1.32272933414e-02 1.29494247541e-02 1.27327884289e-02 1.25723726562e-02 1.24657333634e-02 1.24123312979e-02 - 1.24123312979e-02 1.24657333634e-02 1.25723726562e-02 1.27327884289e-02 1.29494247541e-02 1.32272933414e-02 - 1.35733603577e-02 1.39945083398e-02 1.44944499034e-02 1.50702461704e-02 1.57094271493e-02 1.63890080671e-02 - 1.70770073925e-02 1.77355963866e-02 1.83246021902e-02 1.88053010662e-02 1.91448778653e-02 1.93203741197e-02 - 1.93203741197e-02 1.91448778653e-02 1.88053010662e-02 1.83246021902e-02 1.77355963866e-02 1.70770073925e-02 - 1.63890080671e-02 1.57094271493e-02 1.50702461704e-02 1.44944499034e-02 1.39945083398e-02 1.35733603577e-02 - 1.56112881223e-02 1.55127511572e-02 1.54388806266e-02 1.53857855201e-02 1.53530693596e-02 1.53419303249e-02 - 1.53530693596e-02 1.53857855201e-02 1.54388806266e-02 1.55127511572e-02 1.56112881223e-02 1.57423428102e-02 - 1.59162612755e-02 1.61427916872e-02 1.64272283654e-02 1.67669692380e-02 1.71497889118e-02 1.75547637226e-02 - 1.79555609317e-02 1.83246021902e-02 1.86367379277e-02 1.88720574247e-02 1.90175139009e-02 1.90666010177e-02 - 1.90175139009e-02 1.88720574247e-02 1.86367379277e-02 1.83246021902e-02 1.79555609317e-02 1.75547637226e-02 - 1.71497889118e-02 1.67669692380e-02 1.64272283654e-02 1.61427916872e-02 1.59162612755e-02 1.57423428102e-02 - 1.87162119832e-02 1.88053010662e-02 1.88720574247e-02 1.89142861556e-02 1.89341271390e-02 1.89341271390e-02 - 1.89142861556e-02 1.88720574247e-02 1.88053010662e-02 1.87162119832e-02 1.86137801375e-02 1.85132658939e-02 - 1.84326960165e-02 1.83878553878e-02 1.83878553878e-02 1.84326960165e-02 1.85132658939e-02 1.86137801375e-02 - 1.87162119832e-02 1.88053010662e-02 1.88720574247e-02 1.89142861556e-02 1.89341271390e-02 1.89341271390e-02 - 1.89142861556e-02 1.88720574247e-02 1.88053010662e-02 1.87162119832e-02 1.86137801375e-02 1.85132658939e-02 - 1.84326960165e-02 1.83878553878e-02 1.83878553878e-02 1.84326960165e-02 1.85132658939e-02 1.86137801375e-02 - 2.26267522861e-02 2.29016184223e-02 2.30924993956e-02 2.32023283361e-02 2.32378434698e-02 2.32023283361e-02 - 2.30924993956e-02 2.29016184223e-02 2.26267522861e-02 2.22755921268e-02 2.18687619531e-02 2.14361295219e-02 - 2.10090352784e-02 2.06126999880e-02 2.02621880335e-02 1.99620901041e-02 1.97084075068e-02 1.94921954522e-02 - 1.93050944183e-02 1.91448778653e-02 1.90175139009e-02 1.89341271390e-02 1.89049688962e-02 1.89341271390e-02 - 1.90175139009e-02 1.91448778653e-02 1.93050944183e-02 1.94921954522e-02 1.97084075068e-02 1.99620901041e-02 - 2.02621880335e-02 2.06126999880e-02 2.10090352784e-02 2.14361295219e-02 2.18687619531e-02 2.22755921268e-02 - 2.73794467347e-02 2.78094015925e-02 2.80812943983e-02 2.82105864296e-02 2.82105864296e-02 2.80812943983e-02 - 2.78094015925e-02 2.73794467347e-02 2.67889182249e-02 2.60582031450e-02 2.52298202509e-02 2.43576039836e-02 - 2.34923498457e-02 2.26718438342e-02 2.19185274002e-02 2.12421582644e-02 2.06439962171e-02 2.01220876747e-02 - 1.96777557044e-02 1.93203741197e-02 1.90666010177e-02 1.89341271390e-02 1.89341271390e-02 1.90666010177e-02 - 1.93203741197e-02 1.96777557044e-02 2.01220876747e-02 2.06439962171e-02 2.12421582644e-02 2.19185274002e-02 - 2.26718438342e-02 2.34923498457e-02 2.43576039836e-02 2.52298202509e-02 2.60582031450e-02 2.67889182249e-02 - 3.28952522339e-02 3.34071767353e-02 3.36893635306e-02 3.37780927799e-02 3.36893635306e-02 3.34071767353e-02 - 3.28952522339e-02 3.21243272248e-02 3.10978190541e-02 2.98615217076e-02 2.84935612207e-02 2.70818268649e-02 - 2.57019293917e-02 2.44059448105e-02 2.32231030162e-02 2.21666114252e-02 2.12413612776e-02 2.04512222766e-02 - 1.98052910067e-02 1.93203741197e-02 1.90175139009e-02 1.89142861556e-02 1.90175139009e-02 1.93203741197e-02 - 1.98052910067e-02 2.04512222766e-02 2.12413612776e-02 2.21666114252e-02 2.32231030162e-02 2.44059448105e-02 - 2.57019293917e-02 2.70818268649e-02 2.84935612207e-02 2.98615217076e-02 3.10978190541e-02 3.21243272248e-02 - 3.89160663350e-02 3.93968315223e-02 3.96081166256e-02 3.96081166256e-02 3.93968315223e-02 3.89160663350e-02 - 3.80886538087e-02 3.68707660171e-02 3.52857897121e-02 3.34242157073e-02 3.14154606035e-02 2.93901320501e-02 - 2.74512061786e-02 2.56635113913e-02 2.40594329852e-02 2.26519365039e-02 2.14468462049e-02 2.04512222766e-02 - 1.96777557044e-02 1.91448778653e-02 1.88720574247e-02 1.88720574247e-02 1.91448778653e-02 1.96777557044e-02 - 2.04512222766e-02 2.14468462049e-02 2.26519365039e-02 2.40594329852e-02 2.56635113913e-02 2.74512061786e-02 - 2.93901320501e-02 3.14154606035e-02 3.34242157073e-02 3.52857897121e-02 3.68707660171e-02 3.80886538087e-02 - 4.49623774036e-02 4.52857661696e-02 4.53738413591e-02 4.52857661696e-02 4.49623774036e-02 4.42634768270e-02 - 4.30547772101e-02 4.12888114430e-02 3.90350130516e-02 3.64535808156e-02 3.37399765679e-02 3.10717223250e-02 - 2.85763383726e-02 2.63252408289e-02 2.43476957086e-02 2.26519365039e-02 2.12413612776e-02 2.01220876747e-02 - 1.93050944183e-02 1.88053010662e-02 1.86367379277e-02 1.88053010662e-02 1.93050944183e-02 2.01220876747e-02 - 2.12413612776e-02 2.26519365039e-02 2.43476957086e-02 2.63252408289e-02 2.85763383726e-02 3.10717223250e-02 - 3.37399765679e-02 3.64535808156e-02 3.90350130516e-02 4.12888114430e-02 4.30547772101e-02 4.42634768270e-02 - 5.03535465114e-02 5.04463447592e-02 5.04463447592e-02 5.03535465114e-02 4.99825941802e-02 4.90700187394e-02 - 4.74231711778e-02 4.50208900473e-02 4.20165784801e-02 3.86662855632e-02 3.52402742752e-02 3.19590319446e-02 - 2.89647599965e-02 2.63252408289e-02 2.40594329852e-02 2.21666114252e-02 2.06439962171e-02 1.94921954522e-02 - 1.87162119832e-02 1.83246021902e-02 1.83246021902e-02 1.87162119832e-02 1.94921954522e-02 2.06439962171e-02 - 2.21666114252e-02 2.40594329852e-02 2.63252408289e-02 2.89647599965e-02 3.19590319446e-02 3.52402742752e-02 - 3.86662855632e-02 4.20165784801e-02 4.50208900473e-02 4.74231711778e-02 4.90700187394e-02 4.99825941802e-02 - 5.43925934286e-02 5.43239294918e-02 5.43925934286e-02 5.44475263977e-02 5.41129564364e-02 5.29846351657e-02 - 5.08390344517e-02 4.77311231410e-02 4.39402098517e-02 3.98358227133e-02 3.57591480990e-02 3.19590319446e-02 - 2.85763383726e-02 2.56635113913e-02 2.32231030162e-02 2.12421582644e-02 1.97084075068e-02 1.86137801375e-02 - 1.79555609317e-02 1.77355963866e-02 1.79555609317e-02 1.86137801375e-02 1.97084075068e-02 2.12421582644e-02 - 2.32231030162e-02 2.56635113913e-02 2.85763383726e-02 3.19590319446e-02 3.57591480990e-02 3.98358227133e-02 - 4.39402098517e-02 4.77311231410e-02 5.08390344517e-02 5.29846351657e-02 5.41129564364e-02 5.44475263977e-02 - 5.67236888968e-02 5.67236888968e-02 5.70772559013e-02 5.74105494947e-02 5.71366804742e-02 5.57363453523e-02 - 5.30133769166e-02 4.91578982971e-02 4.46053414397e-02 3.98358227133e-02 3.52402742752e-02 3.10717223250e-02 - 2.74512061786e-02 2.44059448105e-02 2.19185274002e-02 1.99620901041e-02 1.85132658939e-02 1.75547637226e-02 - 1.70770073925e-02 1.70770073925e-02 1.75547637226e-02 1.85132658939e-02 1.99620901041e-02 2.19185274002e-02 - 2.44059448105e-02 2.74512061786e-02 3.10717223250e-02 3.52402742752e-02 3.98358227133e-02 4.46053414397e-02 - 4.91578982971e-02 5.30133769166e-02 5.57363453523e-02 5.71366804742e-02 5.74105494947e-02 5.70772559013e-02 - 5.75824043038e-02 5.79103146750e-02 5.86758842735e-02 5.92810318582e-02 5.89627863020e-02 5.71527035674e-02 - 5.37595739225e-02 4.91578982971e-02 4.39402098517e-02 3.86662855632e-02 3.37399765679e-02 2.93901320501e-02 - 2.57019293917e-02 2.26718438342e-02 2.02621880335e-02 1.84326960165e-02 1.71497889118e-02 1.63890080671e-02 - 1.61367490443e-02 1.63890080671e-02 1.71497889118e-02 1.84326960165e-02 2.02621880335e-02 2.26718438342e-02 - 2.57019293917e-02 2.93901320501e-02 3.37399765679e-02 3.86662855632e-02 4.39402098517e-02 4.91578982971e-02 - 5.37595739225e-02 5.71527035674e-02 5.89627863020e-02 5.92810318582e-02 5.86758842735e-02 5.79103146750e-02 - 5.76200322747e-02 5.83777841365e-02 5.94868177545e-02 6.01752681104e-02 5.95715936141e-02 5.71527035674e-02 - 5.30133769166e-02 4.77311231410e-02 4.20165784801e-02 3.64535808156e-02 3.14154606035e-02 2.70818268649e-02 - 2.34923498457e-02 2.06126999880e-02 1.83878553878e-02 1.67669692380e-02 1.57094271493e-02 1.51874137660e-02 - 1.51874137660e-02 1.57094271493e-02 1.67669692380e-02 1.83878553878e-02 2.06126999880e-02 2.34923498457e-02 - 2.70818268649e-02 3.14154606035e-02 3.64535808156e-02 4.20165784801e-02 4.77311231410e-02 5.30133769166e-02 - 5.71527035674e-02 5.95715936141e-02 6.01752681104e-02 5.94868177545e-02 5.83777841365e-02 5.76200322747e-02 - 5.74463352203e-02 5.85232784436e-02 5.97323039443e-02 6.01752681104e-02 5.89627863020e-02 5.57363453523e-02 - 5.08390344517e-02 4.50208900473e-02 3.90350130516e-02 3.34242157073e-02 2.84935612207e-02 2.43576039836e-02 - 2.10090352784e-02 1.83878553878e-02 1.64272283654e-02 1.50702461704e-02 1.42737851127e-02 1.40112393540e-02 - 1.42737851127e-02 1.50702461704e-02 1.64272283654e-02 1.83878553878e-02 2.10090352784e-02 2.43576039836e-02 - 2.84935612207e-02 3.34242157073e-02 3.90350130516e-02 4.50208900473e-02 5.08390344517e-02 5.57363453523e-02 - 5.89627863020e-02 6.01752681104e-02 5.97323039443e-02 5.85232784436e-02 5.74463352203e-02 5.70355201353e-02 - 5.73653289979e-02 5.85232784436e-02 5.94868177545e-02 5.92810318582e-02 5.71366804742e-02 5.29846351657e-02 - 4.74231711778e-02 4.12888114430e-02 3.52857897121e-02 2.98615217076e-02 2.52298202509e-02 2.14361295219e-02 - 1.84326960165e-02 1.61427916872e-02 1.44944499034e-02 1.34297677852e-02 1.29079014387e-02 1.29079014387e-02 - 1.34297677852e-02 1.44944499034e-02 1.61427916872e-02 1.84326960165e-02 2.14361295219e-02 2.52298202509e-02 - 2.98615217076e-02 3.52857897121e-02 4.12888114430e-02 4.74231711778e-02 5.29846351657e-02 5.71366804742e-02 - 5.92810318582e-02 5.94868177545e-02 5.85232784436e-02 5.73653289979e-02 5.66663226477e-02 5.66663226477e-02 - 5.74463352203e-02 5.83777841365e-02 5.86758842735e-02 5.74105494947e-02 5.41129564364e-02 4.90700187394e-02 - 4.30547772101e-02 3.68707660171e-02 3.10978190541e-02 2.60582031450e-02 2.18687619531e-02 1.85132658939e-02 - 1.59162612755e-02 1.39945083398e-02 1.26769712537e-02 1.19093466628e-02 1.16573532374e-02 1.19093466628e-02 - 1.26769712537e-02 1.39945083398e-02 1.59162612755e-02 1.85132658939e-02 2.18687619531e-02 2.60582031450e-02 - 3.10978190541e-02 3.68707660171e-02 4.30547772101e-02 4.90700187394e-02 5.41129564364e-02 5.74105494947e-02 - 5.86758842735e-02 5.83777841365e-02 5.74463352203e-02 5.66663226477e-02 5.63846435627e-02 5.66663226477e-02 - 5.76200322747e-02 5.79103146750e-02 5.70772559013e-02 5.44475263977e-02 4.99825941802e-02 4.42634768270e-02 - 3.80886538087e-02 3.21243272248e-02 2.67889182249e-02 2.22755921268e-02 1.86137801375e-02 1.57423428102e-02 - 1.35733603577e-02 1.20255038743e-02 1.10330000246e-02 1.05489279259e-02 1.05489279259e-02 1.10330000246e-02 - 1.20255038743e-02 1.35733603577e-02 1.57423428102e-02 1.86137801375e-02 2.22755921268e-02 2.67889182249e-02 - 3.21243272248e-02 3.80886538087e-02 4.42634768270e-02 4.99825941802e-02 5.44475263977e-02 5.70772559013e-02 - 5.79103146750e-02 5.76200322747e-02 5.70355201353e-02 5.66663226477e-02 5.66663226477e-02 5.70355201353e-02 - 6.28259810566e-02 5.83399236929e-02 5.26931433274e-02 4.62623331670e-02 3.95849180057e-02 3.31691643222e-02 - 2.73794467347e-02 2.24136125305e-02 1.83246021902e-02 1.50645020089e-02 1.25396406703e-02 1.06524671204e-02 - 9.31810768724e-03 8.46823559623e-03 8.05519399644e-03 8.05519399644e-03 8.46823559623e-03 9.31810768724e-03 - 1.06524671204e-02 1.25396406703e-02 1.50645020089e-02 1.83246021902e-02 2.24136125305e-02 2.73794467347e-02 - 3.31691643222e-02 3.95849180057e-02 4.62623331670e-02 5.26931433274e-02 5.83399236929e-02 6.28259810566e-02 - 6.60504635380e-02 6.81077724909e-02 6.91119067669e-02 6.91119067669e-02 6.81077724909e-02 6.60504635380e-02 - 5.83399236929e-02 5.29676178633e-02 4.67810667612e-02 4.02540981079e-02 3.38709874542e-02 2.80098127199e-02 - 2.29016184223e-02 1.86367379277e-02 1.51956958667e-02 1.24976141314e-02 1.04460621935e-02 8.95261635749e-03 - 7.94279014126e-03 7.35981258047e-03 7.16922584820e-03 7.35981258047e-03 7.94279014126e-03 8.95261635749e-03 - 1.04460621935e-02 1.24976141314e-02 1.51956958667e-02 1.86367379277e-02 2.29016184223e-02 2.80098127199e-02 - 3.38709874542e-02 4.02540981079e-02 4.67810667612e-02 5.29676178633e-02 5.83399236929e-02 6.25800698666e-02 - 6.55787911247e-02 6.73541476702e-02 6.79419572879e-02 6.73541476702e-02 6.55787911247e-02 6.25800698666e-02 - 5.26931433274e-02 4.67810667612e-02 4.04742233092e-02 3.42208946471e-02 2.83925891295e-02 2.32368358951e-02 - 1.88720574247e-02 1.53065353883e-02 1.24770996440e-02 1.02937156151e-02 8.66817035987e-03 7.52314503521e-03 - 6.79567554150e-03 6.44245195186e-03 6.44245195186e-03 6.79567554150e-03 7.52314503521e-03 8.66817035987e-03 - 1.02937156151e-02 1.24770996440e-02 1.53065353883e-02 1.88720574247e-02 2.32368358951e-02 2.83925891295e-02 - 3.42208946471e-02 4.04742233092e-02 4.67810667612e-02 5.26931433274e-02 5.77843769256e-02 6.17513938278e-02 - 6.44394828494e-02 6.57918464265e-02 6.57918464265e-02 6.44394828494e-02 6.17513938278e-02 5.77843769256e-02 - 4.62623331670e-02 4.02540981079e-02 3.42208946471e-02 2.85205562719e-02 2.34067395586e-02 1.90175139009e-02 - 1.53857855201e-02 1.24686371753e-02 1.01870819285e-02 8.45686847188e-03 7.20097316500e-03 6.35335851926e-03 - 5.86418256271e-03 5.70420021497e-03 5.86418256271e-03 6.35335851926e-03 7.20097316500e-03 8.45686847188e-03 - 1.01870819285e-02 1.24686371753e-02 1.53857855201e-02 1.90175139009e-02 2.34067395586e-02 2.85205562719e-02 - 3.42208946471e-02 4.02540981079e-02 4.62623331670e-02 5.18281863755e-02 5.65511919643e-02 6.01184381094e-02 - 6.23288110708e-02 6.30764730892e-02 6.23288110708e-02 6.01184381094e-02 5.65511919643e-02 5.18281863755e-02 - 3.95849180057e-02 3.38709874542e-02 2.83925891295e-02 2.34067395586e-02 1.90666010177e-02 1.54267827082e-02 - 1.24657333634e-02 1.01194532806e-02 8.31144312544e-03 6.96786738821e-03 6.02253909249e-03 5.42174879265e-03 - 5.12972310883e-03 5.12972310883e-03 5.42174879265e-03 6.02253909249e-03 6.96786738821e-03 8.31144312544e-03 - 1.01194532806e-02 1.24657333634e-02 1.54267827082e-02 1.90666010177e-02 2.34067395586e-02 2.83925891295e-02 - 3.38709874542e-02 3.95849180057e-02 4.51877782102e-02 5.02828320119e-02 5.44829894560e-02 5.74676014035e-02 - 5.90154969276e-02 5.90154969276e-02 5.74676014035e-02 5.44829894560e-02 5.02828320119e-02 4.51877782102e-02 - 3.31691643222e-02 2.80098127199e-02 2.32368358951e-02 1.90175139009e-02 1.54267827082e-02 1.24650738064e-02 - 1.00865795572e-02 8.22635918544e-03 6.81664387654e-03 5.79365065764e-03 5.10253249618e-03 4.70304044562e-03 - 4.57225197605e-03 4.70304044562e-03 5.10253249618e-03 5.79365065764e-03 6.81664387654e-03 8.22635918544e-03 - 1.00865795572e-02 1.24650738064e-02 1.54267827082e-02 1.90175139009e-02 2.32368358951e-02 2.80098127199e-02 - 3.31691643222e-02 3.84534160516e-02 4.35234290368e-02 4.79989400749e-02 5.15101646150e-02 5.37510492057e-02 - 5.45211951056e-02 5.37510492057e-02 5.15101646150e-02 4.79989400749e-02 4.35234290368e-02 3.84534160516e-02 - 2.73794467347e-02 2.29016184223e-02 1.88720574247e-02 1.53857855201e-02 1.24657333634e-02 1.00865795572e-02 - 8.19834740781e-03 6.74228118806e-03 5.65928321674e-03 4.89581524939e-03 4.40955813989e-03 4.17292027232e-03 - 4.17292027232e-03 4.40955813989e-03 4.89581524939e-03 5.65928321674e-03 6.74228118806e-03 8.19834740781e-03 - 1.00865795572e-02 1.24657333634e-02 1.53857855201e-02 1.88720574247e-02 2.29016184223e-02 2.73794467347e-02 - 3.21243272248e-02 3.68707660171e-02 4.12888114430e-02 4.50208900473e-02 4.77311231410e-02 4.91578982971e-02 - 4.91578982971e-02 4.77311231410e-02 4.50208900473e-02 4.12888114430e-02 3.68707660171e-02 3.21243272248e-02 - 2.24136125305e-02 1.86367379277e-02 1.53065353883e-02 1.24686371753e-02 1.01194532806e-02 8.22635918544e-03 - 6.74228118806e-03 5.61497680711e-03 4.79423577304e-03 4.23798561825e-03 3.91597292758e-03 3.81054695208e-03 - 3.91597292758e-03 4.23798561825e-03 4.79423577304e-03 5.61497680711e-03 6.74228118806e-03 8.22635918544e-03 - 1.01194532806e-02 1.24686371753e-02 1.53065353883e-02 1.86367379277e-02 2.24136125305e-02 2.65227612839e-02 - 3.07715106065e-02 3.48956024912e-02 3.85829474965e-02 4.15120643887e-02 4.34003076052e-02 4.40529168852e-02 - 4.34003076052e-02 4.15120643887e-02 3.85829474965e-02 3.48956024912e-02 3.07715106065e-02 2.65227612839e-02 - 1.83246021902e-02 1.51956958667e-02 1.24770996440e-02 1.01870819285e-02 8.31144312544e-03 6.81664387654e-03 - 5.65928321674e-03 4.79423577304e-03 4.18152878343e-03 3.79030883078e-03 3.59990872378e-03 3.59990872378e-03 - 3.79030883078e-03 4.18152878343e-03 4.79423577304e-03 5.65928321674e-03 6.81664387654e-03 8.31144312544e-03 - 1.01870819285e-02 1.24770996440e-02 1.51956958667e-02 1.83246021902e-02 2.17964249596e-02 2.54803066383e-02 - 2.91781605866e-02 3.26363277502e-02 3.55725175924e-02 3.77147526395e-02 3.88462459817e-02 3.88462459817e-02 - 3.77147526395e-02 3.55725175924e-02 3.26363277502e-02 2.91781605866e-02 2.54803066383e-02 2.17964249596e-02 - 1.50645020089e-02 1.24976141314e-02 1.02937156151e-02 8.45686847188e-03 6.96786738821e-03 5.79365065764e-03 - 4.89581524939e-03 4.23798561825e-03 3.79030883078e-03 3.53085792774e-03 3.44594928533e-03 3.53085792774e-03 - 3.79030883078e-03 4.23798561825e-03 4.89581524939e-03 5.79365065764e-03 6.96786738821e-03 8.45686847188e-03 - 1.02937156151e-02 1.24976141314e-02 1.50645020089e-02 1.79555609317e-02 2.10847229658e-02 2.43103322252e-02 - 2.74372089612e-02 3.02323588099e-02 3.24534608631e-02 3.38859304601e-02 3.43811654173e-02 3.38859304601e-02 - 3.24534608631e-02 3.02323588099e-02 2.74372089612e-02 2.43103322252e-02 2.10847229658e-02 1.79555609317e-02 - 1.25396406703e-02 1.04460621935e-02 8.66817035987e-03 7.20097316500e-03 6.02253909249e-03 5.10253249618e-03 - 4.40955813989e-03 3.91597292758e-03 3.59990872378e-03 3.44594928533e-03 3.44594928533e-03 3.59990872378e-03 - 3.91597292758e-03 4.40955813989e-03 5.10253249618e-03 6.02253909249e-03 7.20097316500e-03 8.66817035987e-03 - 1.04460621935e-02 1.25396406703e-02 1.49279448733e-02 1.75547637226e-02 2.03206914317e-02 2.30804654510e-02 - 2.56499234494e-02 2.78244998346e-02 2.94074293899e-02 3.02423286704e-02 3.02423286704e-02 2.94074293899e-02 - 2.78244998346e-02 2.56499234494e-02 2.30804654510e-02 2.03206914317e-02 1.75547637226e-02 1.49279448733e-02 - 1.06524671204e-02 8.95261635749e-03 7.52314503521e-03 6.35335851926e-03 5.42174879265e-03 4.70304044562e-03 - 4.17292027232e-03 3.81054695208e-03 3.59990872378e-03 3.53085792774e-03 3.59990872378e-03 3.81054695208e-03 - 4.17292027232e-03 4.70304044562e-03 5.42174879265e-03 6.35335851926e-03 7.52314503521e-03 8.95261635749e-03 - 1.06524671204e-02 1.26143883181e-02 1.48031251671e-02 1.71497889118e-02 1.95479913088e-02 2.18557815330e-02 - 2.39063871143e-02 2.55281844546e-02 2.65706573512e-02 2.69304328597e-02 2.65706573512e-02 2.55281844546e-02 - 2.39063871143e-02 2.18557815330e-02 1.95479913088e-02 1.71497889118e-02 1.48031251671e-02 1.26143883181e-02 - 9.31810768724e-03 7.94279014126e-03 6.79567554150e-03 5.86418256271e-03 5.12972310883e-03 4.57225197605e-03 - 4.17292027232e-03 3.91597292758e-03 3.79030883078e-03 3.79030883078e-03 3.91597292758e-03 4.17292027232e-03 - 4.57225197605e-03 5.12972310883e-03 5.86418256271e-03 6.79567554150e-03 7.94279014126e-03 9.31810768724e-03 - 1.09215936737e-02 1.27333396536e-02 1.47072813037e-02 1.67669692380e-02 1.88049742175e-02 2.06884779452e-02 - 2.22726314479e-02 2.34202555044e-02 2.40237109616e-02 2.40237109616e-02 2.34202555044e-02 2.22726314479e-02 - 2.06884779452e-02 1.88049742175e-02 1.67669692380e-02 1.47072813037e-02 1.27333396536e-02 1.09215936737e-02 - 8.46823559623e-03 7.35981258047e-03 6.44245195186e-03 5.70420021497e-03 5.12972310883e-03 4.70304044562e-03 - 4.40955813989e-03 4.23798561825e-03 4.18152878343e-03 4.23798561825e-03 4.40955813989e-03 4.70304044562e-03 - 5.12972310883e-03 5.70420021497e-03 6.44245195186e-03 7.35981258047e-03 8.46823559623e-03 9.77183223433e-03 - 1.12609832188e-02 1.29064893850e-02 1.46550533623e-02 1.64272283654e-02 1.81196807915e-02 1.96135589165e-02 - 2.07887392229e-02 2.15413174517e-02 2.18005508565e-02 2.15413174517e-02 2.07887392229e-02 1.96135589165e-02 - 1.81196807915e-02 1.64272283654e-02 1.46550533623e-02 1.29064893850e-02 1.12609832188e-02 9.77183223433e-03 - 8.05519399644e-03 7.16922584820e-03 6.44245195186e-03 5.86418256271e-03 5.42174879265e-03 5.10253249618e-03 - 4.89581524939e-03 4.79423577304e-03 4.79423577304e-03 4.89581524939e-03 5.10253249618e-03 5.42174879265e-03 - 5.86418256271e-03 6.44245195186e-03 7.16922584820e-03 8.05519399644e-03 9.10613117226e-03 1.03186231402e-02 - 1.16751572683e-02 1.31397287366e-02 1.46550533623e-02 1.61427916872e-02 1.75083321070e-02 1.86504890434e-02 - 1.94746684497e-02 1.99070659239e-02 1.99070659239e-02 1.94746684497e-02 1.86504890434e-02 1.75083321070e-02 - 1.61427916872e-02 1.46550533623e-02 1.31397287366e-02 1.16751572683e-02 1.03186231402e-02 9.10613117226e-03 - 8.05519399644e-03 7.35981258047e-03 6.79567554150e-03 6.35335851926e-03 6.02253909249e-03 5.79365065764e-03 - 5.65928321674e-03 5.61497680711e-03 5.65928321674e-03 5.79365065764e-03 6.02253909249e-03 6.35335851926e-03 - 6.79567554150e-03 7.35981258047e-03 8.05519399644e-03 8.88822832040e-03 9.85925299562e-03 1.09586567104e-02 - 1.21629507848e-02 1.34318126710e-02 1.47072813037e-02 1.59162612755e-02 1.69767793036e-02 1.78072941675e-02 - 1.83376793613e-02 1.85201445811e-02 1.83376793613e-02 1.78072941675e-02 1.69767793036e-02 1.59162612755e-02 - 1.47072813037e-02 1.34318126710e-02 1.21629507848e-02 1.09586567104e-02 9.85925299562e-03 8.88822832040e-03 - 8.46823559623e-03 7.94279014126e-03 7.52314503521e-03 7.20097316500e-03 6.96786738821e-03 6.81664387654e-03 - 6.74228118806e-03 6.74228118806e-03 6.81664387654e-03 6.96786738821e-03 7.20097316500e-03 7.52314503521e-03 - 7.94279014126e-03 8.46823559623e-03 9.10613117226e-03 9.85925299562e-03 1.07235056315e-02 1.16845233837e-02 - 1.27148275869e-02 1.37726366090e-02 1.48031251671e-02 1.57423428102e-02 1.65234811342e-02 1.70848695603e-02 - 1.73786828448e-02 1.73786828448e-02 1.70848695603e-02 1.65234811342e-02 1.57423428102e-02 1.48031251671e-02 - 1.37726366090e-02 1.27148275869e-02 1.16845233837e-02 1.07235056315e-02 9.85925299562e-03 9.10613117226e-03 - 9.31810768724e-03 8.95261635749e-03 8.66817035987e-03 8.45686847188e-03 8.31144312544e-03 8.22635918544e-03 - 8.19834740781e-03 8.22635918544e-03 8.31144312544e-03 8.45686847188e-03 8.66817035987e-03 8.95261635749e-03 - 9.31810768724e-03 9.77183223433e-03 1.03186231402e-02 1.09586567104e-02 1.16845233837e-02 1.24785638223e-02 - 1.33116675302e-02 1.41440793855e-02 1.49279448733e-02 1.56112881223e-02 1.61434902729e-02 1.64818809732e-02 - 1.65980023724e-02 1.64818809732e-02 1.61434902729e-02 1.56112881223e-02 1.49279448733e-02 1.41440793855e-02 - 1.33116675302e-02 1.24785638223e-02 1.16845233837e-02 1.09586567104e-02 1.03186231402e-02 9.77183223433e-03 - 1.06524671204e-02 1.04460621935e-02 1.02937156151e-02 1.01870819285e-02 1.01194532806e-02 1.00865795572e-02 - 1.00865795572e-02 1.01194532806e-02 1.01870819285e-02 1.02937156151e-02 1.04460621935e-02 1.06524671204e-02 - 1.09215936737e-02 1.12609832188e-02 1.16751572683e-02 1.21629507848e-02 1.27148275869e-02 1.33116675302e-02 - 1.39256808178e-02 1.45226393383e-02 1.50645020089e-02 1.55127511572e-02 1.58329883187e-02 1.59997599900e-02 - 1.59997599900e-02 1.58329883187e-02 1.55127511572e-02 1.50645020089e-02 1.45226393383e-02 1.39256808178e-02 - 1.33116675302e-02 1.27148275869e-02 1.21629507848e-02 1.16751572683e-02 1.12609832188e-02 1.09215936737e-02 - 1.25396406703e-02 1.24976141314e-02 1.24770996440e-02 1.24686371753e-02 1.24657333634e-02 1.24650738064e-02 - 1.24657333634e-02 1.24686371753e-02 1.24770996440e-02 1.24976141314e-02 1.25396406703e-02 1.26143883181e-02 - 1.27333396536e-02 1.29064893850e-02 1.31397287366e-02 1.34318126710e-02 1.37726366090e-02 1.41440793855e-02 - 1.45226393383e-02 1.48820928374e-02 1.51956958667e-02 1.54388806266e-02 1.55924938344e-02 1.56449525655e-02 - 1.55924938344e-02 1.54388806266e-02 1.51956958667e-02 1.48820928374e-02 1.45226393383e-02 1.41440793855e-02 - 1.37726366090e-02 1.34318126710e-02 1.31397287366e-02 1.29064893850e-02 1.27333396536e-02 1.26143883181e-02 - 1.50645020089e-02 1.51956958667e-02 1.53065353883e-02 1.53857855201e-02 1.54267827082e-02 1.54267827082e-02 - 1.53857855201e-02 1.53065353883e-02 1.51956958667e-02 1.50645020089e-02 1.49279448733e-02 1.48031251671e-02 - 1.47072813037e-02 1.46550533623e-02 1.46550533623e-02 1.47072813037e-02 1.48031251671e-02 1.49279448733e-02 - 1.50645020089e-02 1.51956958667e-02 1.53065353883e-02 1.53857855201e-02 1.54267827082e-02 1.54267827082e-02 - 1.53857855201e-02 1.53065353883e-02 1.51956958667e-02 1.50645020089e-02 1.49279448733e-02 1.48031251671e-02 - 1.47072813037e-02 1.46550533623e-02 1.46550533623e-02 1.47072813037e-02 1.48031251671e-02 1.49279448733e-02 - 1.83246021902e-02 1.86367379277e-02 1.88720574247e-02 1.90175139009e-02 1.90666010177e-02 1.90175139009e-02 - 1.88720574247e-02 1.86367379277e-02 1.83246021902e-02 1.79555609317e-02 1.75547637226e-02 1.71497889118e-02 - 1.67669692380e-02 1.64272283654e-02 1.61427916872e-02 1.59162612755e-02 1.57423428102e-02 1.56112881223e-02 - 1.55127511572e-02 1.54388806266e-02 1.53857855201e-02 1.53530693596e-02 1.53419303249e-02 1.53530693596e-02 - 1.53857855201e-02 1.54388806266e-02 1.55127511572e-02 1.56112881223e-02 1.57423428102e-02 1.59162612755e-02 - 1.61427916872e-02 1.64272283654e-02 1.67669692380e-02 1.71497889118e-02 1.75547637226e-02 1.79555609317e-02 - 2.24136125305e-02 2.29016184223e-02 2.32368358951e-02 2.34067395586e-02 2.34067395586e-02 2.32368358951e-02 - 2.29016184223e-02 2.24136125305e-02 2.17964249596e-02 2.10847229658e-02 2.03206914317e-02 1.95479913088e-02 - 1.88049742175e-02 1.81196807915e-02 1.75083321070e-02 1.69767793036e-02 1.65234811342e-02 1.61434902729e-02 - 1.58329883187e-02 1.55924938344e-02 1.54267827082e-02 1.53419303249e-02 1.53419303249e-02 1.54267827082e-02 - 1.55924938344e-02 1.58329883187e-02 1.61434902729e-02 1.65234811342e-02 1.69767793036e-02 1.75083321070e-02 - 1.81196807915e-02 1.88049742175e-02 1.95479913088e-02 2.03206914317e-02 2.10847229658e-02 2.17964249596e-02 - 2.73794467347e-02 2.80098127199e-02 2.83925891295e-02 2.85205562719e-02 2.83925891295e-02 2.80098127199e-02 - 2.73794467347e-02 2.65227612839e-02 2.54803066383e-02 2.43103322252e-02 2.30804654510e-02 2.18557815330e-02 - 2.06884779452e-02 1.96135589165e-02 1.86504890434e-02 1.78072941675e-02 1.70848695603e-02 1.64818809732e-02 - 1.59997599900e-02 1.56449525655e-02 1.54267827082e-02 1.53530693596e-02 1.54267827082e-02 1.56449525655e-02 - 1.59997599900e-02 1.64818809732e-02 1.70848695603e-02 1.78072941675e-02 1.86504890434e-02 1.96135589165e-02 - 2.06884779452e-02 2.18557815330e-02 2.30804654510e-02 2.43103322252e-02 2.54803066383e-02 2.65227612839e-02 - 3.31691643222e-02 3.38709874542e-02 3.42208946471e-02 3.42208946471e-02 3.38709874542e-02 3.31691643222e-02 - 3.21243272248e-02 3.07715106065e-02 2.91781605866e-02 2.74372089612e-02 2.56499234494e-02 2.39063871143e-02 - 2.22726314479e-02 2.07887392229e-02 1.94746684497e-02 1.83376793613e-02 1.73786828448e-02 1.65980023724e-02 - 1.59997599900e-02 1.55924938344e-02 1.53857855201e-02 1.53857855201e-02 1.55924938344e-02 1.59997599900e-02 - 1.65980023724e-02 1.73786828448e-02 1.83376793613e-02 1.94746684497e-02 2.07887392229e-02 2.22726314479e-02 - 2.39063871143e-02 2.56499234494e-02 2.74372089612e-02 2.91781605866e-02 3.07715106065e-02 3.21243272248e-02 - 3.95849180057e-02 4.02540981079e-02 4.04742233092e-02 4.02540981079e-02 3.95849180057e-02 3.84534160516e-02 - 3.68707660171e-02 3.48956024912e-02 3.26363277502e-02 3.02323588099e-02 2.78244998346e-02 2.55281844546e-02 - 2.34202555044e-02 2.15413174517e-02 1.99070659239e-02 1.85201445811e-02 1.73786828448e-02 1.64818809732e-02 - 1.58329883187e-02 1.54388806266e-02 1.53065353883e-02 1.54388806266e-02 1.58329883187e-02 1.64818809732e-02 - 1.73786828448e-02 1.85201445811e-02 1.99070659239e-02 2.15413174517e-02 2.34202555044e-02 2.55281844546e-02 - 2.78244998346e-02 3.02323588099e-02 3.26363277502e-02 3.48956024912e-02 3.68707660171e-02 3.84534160516e-02 - 4.62623331670e-02 4.67810667612e-02 4.67810667612e-02 4.62623331670e-02 4.51877782102e-02 4.35234290368e-02 - 4.12888114430e-02 3.85829474965e-02 3.55725175924e-02 3.24534608631e-02 2.94074293899e-02 2.65706573512e-02 - 2.40237109616e-02 2.18005508565e-02 1.99070659239e-02 1.83376793613e-02 1.70848695603e-02 1.61434902729e-02 - 1.55127511572e-02 1.51956958667e-02 1.51956958667e-02 1.55127511572e-02 1.61434902729e-02 1.70848695603e-02 - 1.83376793613e-02 1.99070659239e-02 2.18005508565e-02 2.40237109616e-02 2.65706573512e-02 2.94074293899e-02 - 3.24534608631e-02 3.55725175924e-02 3.85829474965e-02 4.12888114430e-02 4.35234290368e-02 4.51877782102e-02 - 5.26931433274e-02 5.29676178633e-02 5.26931433274e-02 5.18281863755e-02 5.02828320119e-02 4.79989400749e-02 - 4.50208900473e-02 4.15120643887e-02 3.77147526395e-02 3.38859304601e-02 3.02423286704e-02 2.69304328597e-02 - 2.40237109616e-02 2.15413174517e-02 1.94746684497e-02 1.78072941675e-02 1.65234811342e-02 1.56112881223e-02 - 1.50645020089e-02 1.48820928374e-02 1.50645020089e-02 1.56112881223e-02 1.65234811342e-02 1.78072941675e-02 - 1.94746684497e-02 2.15413174517e-02 2.40237109616e-02 2.69304328597e-02 3.02423286704e-02 3.38859304601e-02 - 3.77147526395e-02 4.15120643887e-02 4.50208900473e-02 4.79989400749e-02 5.02828320119e-02 5.18281863755e-02 - 5.83399236929e-02 5.83399236929e-02 5.77843769256e-02 5.65511919643e-02 5.44829894560e-02 5.15101646150e-02 - 4.77311231410e-02 4.34003076052e-02 3.88462459817e-02 3.43811654173e-02 3.02423286704e-02 2.65706573512e-02 - 2.34202555044e-02 2.07887392229e-02 1.86504890434e-02 1.69767793036e-02 1.57423428102e-02 1.49279448733e-02 - 1.45226393383e-02 1.45226393383e-02 1.49279448733e-02 1.57423428102e-02 1.69767793036e-02 1.86504890434e-02 - 2.07887392229e-02 2.34202555044e-02 2.65706573512e-02 3.02423286704e-02 3.43811654173e-02 3.88462459817e-02 - 4.34003076052e-02 4.77311231410e-02 5.15101646150e-02 5.44829894560e-02 5.65511919643e-02 5.77843769256e-02 - 6.28259810566e-02 6.25800698666e-02 6.17513938278e-02 6.01184381094e-02 5.74676014035e-02 5.37510492057e-02 - 4.91578982971e-02 4.40529168852e-02 3.88462459817e-02 3.38859304601e-02 2.94074293899e-02 2.55281844546e-02 - 2.22726314479e-02 1.96135589165e-02 1.75083321070e-02 1.59162612755e-02 1.48031251671e-02 1.41440793855e-02 - 1.39256808178e-02 1.41440793855e-02 1.48031251671e-02 1.59162612755e-02 1.75083321070e-02 1.96135589165e-02 - 2.22726314479e-02 2.55281844546e-02 2.94074293899e-02 3.38859304601e-02 3.88462459817e-02 4.40529168852e-02 - 4.91578982971e-02 5.37510492057e-02 5.74676014035e-02 6.01184381094e-02 6.17513938278e-02 6.25800698666e-02 - 6.60504635380e-02 6.55787911247e-02 6.44394828494e-02 6.23288110708e-02 5.90154969276e-02 5.45211951056e-02 - 4.91578982971e-02 4.34003076052e-02 3.77147526395e-02 3.24534608631e-02 2.78244998346e-02 2.39063871143e-02 - 2.06884779452e-02 1.81196807915e-02 1.61427916872e-02 1.47072813037e-02 1.37726366090e-02 1.33116675302e-02 - 1.33116675302e-02 1.37726366090e-02 1.47072813037e-02 1.61427916872e-02 1.81196807915e-02 2.06884779452e-02 - 2.39063871143e-02 2.78244998346e-02 3.24534608631e-02 3.77147526395e-02 4.34003076052e-02 4.91578982971e-02 - 5.45211951056e-02 5.90154969276e-02 6.23288110708e-02 6.44394828494e-02 6.55787911247e-02 6.60504635380e-02 - 6.81077724909e-02 6.73541476702e-02 6.57918464265e-02 6.30764730892e-02 5.90154969276e-02 5.37510492057e-02 - 4.77311231410e-02 4.15120643887e-02 3.55725175924e-02 3.02323588099e-02 2.56499234494e-02 2.18557815330e-02 - 1.88049742175e-02 1.64272283654e-02 1.46550533623e-02 1.34318126710e-02 1.27148275869e-02 1.24785638223e-02 - 1.27148275869e-02 1.34318126710e-02 1.46550533623e-02 1.64272283654e-02 1.88049742175e-02 2.18557815330e-02 - 2.56499234494e-02 3.02323588099e-02 3.55725175924e-02 4.15120643887e-02 4.77311231410e-02 5.37510492057e-02 - 5.90154969276e-02 6.30764730892e-02 6.57918464265e-02 6.73541476702e-02 6.81077724909e-02 6.83266751007e-02 - 6.91119067669e-02 6.79419572879e-02 6.57918464265e-02 6.23288110708e-02 5.74676014035e-02 5.15101646150e-02 - 4.50208900473e-02 3.85829474965e-02 3.26363277502e-02 2.74372089612e-02 2.30804654510e-02 1.95479913088e-02 - 1.67669692380e-02 1.46550533623e-02 1.31397287366e-02 1.21629507848e-02 1.16845233837e-02 1.16845233837e-02 - 1.21629507848e-02 1.31397287366e-02 1.46550533623e-02 1.67669692380e-02 1.95479913088e-02 2.30804654510e-02 - 2.74372089612e-02 3.26363277502e-02 3.85829474965e-02 4.50208900473e-02 5.15101646150e-02 5.74676014035e-02 - 6.23288110708e-02 6.57918464265e-02 6.79419572879e-02 6.91119067669e-02 6.96179820017e-02 6.96179820017e-02 - 6.91119067669e-02 6.73541476702e-02 6.44394828494e-02 6.01184381094e-02 5.44829894560e-02 4.79989400749e-02 - 4.12888114430e-02 3.48956024912e-02 2.91781605866e-02 2.43103322252e-02 2.03206914317e-02 1.71497889118e-02 - 1.47072813037e-02 1.29064893850e-02 1.16751572683e-02 1.09586567104e-02 1.07235056315e-02 1.09586567104e-02 - 1.16751572683e-02 1.29064893850e-02 1.47072813037e-02 1.71497889118e-02 2.03206914317e-02 2.43103322252e-02 - 2.91781605866e-02 3.48956024912e-02 4.12888114430e-02 4.79989400749e-02 5.44829894560e-02 6.01184381094e-02 - 6.44394828494e-02 6.73541476702e-02 6.91119067669e-02 7.00400365127e-02 7.03323963389e-02 7.00400365127e-02 - 6.81077724909e-02 6.55787911247e-02 6.17513938278e-02 5.65511919643e-02 5.02828320119e-02 4.35234290368e-02 - 3.68707660171e-02 3.07715106065e-02 2.54803066383e-02 2.10847229658e-02 1.75547637226e-02 1.48031251671e-02 - 1.27333396536e-02 1.12609832188e-02 1.03186231402e-02 9.85925299562e-03 9.85925299562e-03 1.03186231402e-02 - 1.12609832188e-02 1.27333396536e-02 1.48031251671e-02 1.75547637226e-02 2.10847229658e-02 2.54803066383e-02 - 3.07715106065e-02 3.68707660171e-02 4.35234290368e-02 5.02828320119e-02 5.65511919643e-02 6.17513938278e-02 - 6.55787911247e-02 6.81077724909e-02 6.96179820017e-02 7.03323963389e-02 7.03323963389e-02 6.96179820017e-02 - 6.60504635380e-02 6.25800698666e-02 5.77843769256e-02 5.18281863755e-02 4.51877782102e-02 3.84534160516e-02 - 3.21243272248e-02 2.65227612839e-02 2.17964249596e-02 1.79555609317e-02 1.49279448733e-02 1.26143883181e-02 - 1.09215936737e-02 9.77183223433e-03 9.10613117226e-03 8.88822832040e-03 9.10613117226e-03 9.77183223433e-03 - 1.09215936737e-02 1.26143883181e-02 1.49279448733e-02 1.79555609317e-02 2.17964249596e-02 2.65227612839e-02 - 3.21243272248e-02 3.84534160516e-02 4.51877782102e-02 5.18281863755e-02 5.77843769256e-02 6.25800698666e-02 - 6.60504635380e-02 6.83266751007e-02 6.96179820017e-02 7.00400365127e-02 6.96179820017e-02 6.83266751007e-02 - 6.21334821617e-02 5.53499973529e-02 4.80677366203e-02 4.07924714489e-02 3.39533984936e-02 2.78466298707e-02 - 2.26267522861e-02 1.83246021902e-02 1.48820928374e-02 1.21980827392e-02 1.01663421573e-02 8.69246386814e-03 - 7.69793885145e-03 7.12420828954e-03 6.93665223838e-03 7.12420828954e-03 7.69793885145e-03 8.69246386814e-03 - 1.01663421573e-02 1.21980827392e-02 1.48820928374e-02 1.83246021902e-02 2.26267522861e-02 2.78466298707e-02 - 3.39533984936e-02 4.07924714489e-02 4.80677366203e-02 5.53499973529e-02 6.21334821617e-02 6.79320857310e-02 - 7.23556493700e-02 7.51264696898e-02 7.60705845667e-02 7.51264696898e-02 7.23556493700e-02 6.79320857310e-02 - 5.53499973529e-02 4.84815544672e-02 4.14579289512e-02 3.47182328687e-02 2.85879356046e-02 2.32603028496e-02 - 1.88053010662e-02 1.51956958667e-02 1.23472319177e-02 1.01587603229e-02 8.53524112695e-03 7.39443450458e-03 - 6.67049181789e-03 6.31909087196e-03 6.31909087196e-03 6.67049181789e-03 7.39443450458e-03 8.53524112695e-03 - 1.01587603229e-02 1.23472319177e-02 1.51956958667e-02 1.88053010662e-02 2.32603028496e-02 2.85879356046e-02 - 3.47182328687e-02 4.14579289512e-02 4.84815544672e-02 5.53499973529e-02 6.15702941626e-02 6.66786802062e-02 - 7.03019494995e-02 7.21810172465e-02 7.21810172465e-02 7.03019494995e-02 6.66786802062e-02 6.15702941626e-02 - 4.80677366203e-02 4.14579289512e-02 3.49773595797e-02 2.89691250092e-02 2.36566460915e-02 1.91448778653e-02 - 1.54388806266e-02 1.24770996440e-02 1.01697655067e-02 8.42580807925e-03 7.16308508658e-03 6.31209415558e-03 - 5.82127807001e-03 5.66079261571e-03 5.82127807001e-03 6.31209415558e-03 7.16308508658e-03 8.42580807925e-03 - 1.01697655067e-02 1.24770996440e-02 1.54388806266e-02 1.91448778653e-02 2.36566460915e-02 2.89691250092e-02 - 3.49773595797e-02 4.14579289512e-02 4.80677366203e-02 5.43692149489e-02 5.98878714669e-02 6.41840706496e-02 - 6.69101294891e-02 6.78442738531e-02 6.69101294891e-02 6.41840706496e-02 5.98878714669e-02 5.43692149489e-02 - 4.07924714489e-02 3.47182328687e-02 2.89691250092e-02 2.37914166767e-02 1.93203741197e-02 1.55924938344e-02 - 1.25723726562e-02 1.01870819285e-02 8.35413904759e-03 6.99504538611e-03 6.04016501968e-03 5.43377044817e-03 - 5.13913617973e-03 5.13913617973e-03 5.43377044817e-03 6.04016501968e-03 6.99504538611e-03 8.35413904759e-03 - 1.01870819285e-02 1.25723726562e-02 1.55924938344e-02 1.93203741197e-02 2.37914166767e-02 2.89691250092e-02 - 3.47182328687e-02 4.07924714489e-02 4.68401774785e-02 5.24339557043e-02 5.71251588417e-02 6.05090723285e-02 - 6.22821499923e-02 6.22821499923e-02 6.05090723285e-02 5.71251588417e-02 5.24339557043e-02 4.68401774785e-02 - 3.39533984936e-02 2.85879356046e-02 2.36566460915e-02 1.93203741197e-02 1.56449525655e-02 1.26225341258e-02 - 1.02011860999e-02 8.31144312544e-03 6.88181758770e-03 5.84558656512e-03 5.14599535674e-03 4.74176747355e-03 - 4.60945880297e-03 4.74176747355e-03 5.14599535674e-03 5.84558656512e-03 6.88181758770e-03 8.31144312544e-03 - 1.02011860999e-02 1.26225341258e-02 1.56449525655e-02 1.93203741197e-02 2.36566460915e-02 2.85879356046e-02 - 3.39533984936e-02 3.94908104948e-02 4.48486167771e-02 4.96193341715e-02 5.33923081840e-02 5.58153453540e-02 - 5.66509609539e-02 5.58153453540e-02 5.33923081840e-02 4.96193341715e-02 4.48486167771e-02 3.94908104948e-02 - 2.78466298707e-02 2.32603028496e-02 1.91448778653e-02 1.55924938344e-02 1.26225341258e-02 1.02064774226e-02 - 8.29158854156e-03 6.81664387654e-03 5.72047031573e-03 4.94806264494e-03 4.45623663297e-03 4.21692866215e-03 - 4.21692866215e-03 4.45623663297e-03 4.94806264494e-03 5.72047031573e-03 6.81664387654e-03 8.29158854156e-03 - 1.02064774226e-02 1.26225341258e-02 1.55924938344e-02 1.91448778653e-02 2.32603028496e-02 2.78466298707e-02 - 3.27229087590e-02 3.76190713504e-02 4.21941579647e-02 4.60731359718e-02 4.88987422193e-02 5.03893328752e-02 - 5.03893328752e-02 4.88987422193e-02 4.60731359718e-02 4.21941579647e-02 3.76190713504e-02 3.27229087590e-02 - 2.26267522861e-02 1.88053010662e-02 1.54388806266e-02 1.25723726562e-02 1.02011860999e-02 8.29158854156e-03 - 6.79537428806e-03 5.65928321674e-03 4.83232712929e-03 4.27192322596e-03 3.94752033538e-03 3.84131375804e-03 - 3.94752033538e-03 4.27192322596e-03 4.83232712929e-03 5.65928321674e-03 6.79537428806e-03 8.29158854156e-03 - 1.02011860999e-02 1.25723726562e-02 1.54388806266e-02 1.88053010662e-02 2.26267522861e-02 2.67889182249e-02 - 3.10978190541e-02 3.52857897121e-02 3.90350130516e-02 4.20165784801e-02 4.39402098517e-02 4.46053414397e-02 - 4.39402098517e-02 4.20165784801e-02 3.90350130516e-02 3.52857897121e-02 3.10978190541e-02 2.67889182249e-02 - 1.83246021902e-02 1.51956958667e-02 1.24770996440e-02 1.01870819285e-02 8.31144312544e-03 6.81664387654e-03 - 5.65928321674e-03 4.79423577304e-03 4.18152878343e-03 3.79030883078e-03 3.59990872378e-03 3.59990872378e-03 - 3.79030883078e-03 4.18152878343e-03 4.79423577304e-03 5.65928321674e-03 6.81664387654e-03 8.31144312544e-03 - 1.01870819285e-02 1.24770996440e-02 1.51956958667e-02 1.83246021902e-02 2.17964249596e-02 2.54803066383e-02 - 2.91781605866e-02 3.26363277502e-02 3.55725175924e-02 3.77147526395e-02 3.88462459817e-02 3.88462459817e-02 - 3.77147526395e-02 3.55725175924e-02 3.26363277502e-02 2.91781605866e-02 2.54803066383e-02 2.17964249596e-02 - 1.48820928374e-02 1.23472319177e-02 1.01697655067e-02 8.35413904759e-03 6.88181758770e-03 5.72047031573e-03 - 4.83232712929e-03 4.18152878343e-03 3.73863341678e-03 3.48198055848e-03 3.39799742507e-03 3.48198055848e-03 - 3.73863341678e-03 4.18152878343e-03 4.83232712929e-03 5.72047031573e-03 6.88181758770e-03 8.35413904759e-03 - 1.01697655067e-02 1.23472319177e-02 1.48820928374e-02 1.77355963866e-02 2.08223402545e-02 2.40022165572e-02 - 2.70827915169e-02 2.98349904445e-02 3.20210145144e-02 3.34304675050e-02 3.39176800802e-02 3.34304675050e-02 - 3.20210145144e-02 2.98349904445e-02 2.70827915169e-02 2.40022165572e-02 2.08223402545e-02 1.77355963866e-02 - 1.21980827392e-02 1.01587603229e-02 8.42580807925e-03 6.99504538611e-03 5.84558656512e-03 4.94806264494e-03 - 4.27192322596e-03 3.79030883078e-03 3.48198055848e-03 3.33184951460e-03 3.33184951460e-03 3.48198055848e-03 - 3.79030883078e-03 4.27192322596e-03 4.94806264494e-03 5.84558656512e-03 6.99504538611e-03 8.42580807925e-03 - 1.01587603229e-02 1.21980827392e-02 1.45226393383e-02 1.70770073925e-02 1.97639178277e-02 2.24420850452e-02 - 2.49333108373e-02 2.70402901784e-02 2.85734174953e-02 2.93819034216e-02 2.93819034216e-02 2.85734174953e-02 - 2.70402901784e-02 2.49333108373e-02 2.24420850452e-02 1.97639178277e-02 1.70770073925e-02 1.45226393383e-02 - 1.01663421573e-02 8.53524112695e-03 7.16308508658e-03 6.04016501968e-03 5.14599535674e-03 4.45623663297e-03 - 3.94752033538e-03 3.59990872378e-03 3.39799742507e-03 3.33184951460e-03 3.39799742507e-03 3.59990872378e-03 - 3.94752033538e-03 4.45623663297e-03 5.14599535674e-03 6.04016501968e-03 7.16308508658e-03 8.53524112695e-03 - 1.01663421573e-02 1.20475550421e-02 1.41440793855e-02 1.63890080671e-02 1.86800926235e-02 2.08820531014e-02 - 2.28368095394e-02 2.43819637041e-02 2.53749373622e-02 2.57176061925e-02 2.53749373622e-02 2.43819637041e-02 - 2.28368095394e-02 2.08820531014e-02 1.86800926235e-02 1.63890080671e-02 1.41440793855e-02 1.20475550421e-02 - 8.69246386814e-03 7.39443450458e-03 6.31209415558e-03 5.43377044817e-03 4.74176747355e-03 4.21692866215e-03 - 3.84131375804e-03 3.59990872378e-03 3.48198055848e-03 3.48198055848e-03 3.59990872378e-03 3.84131375804e-03 - 4.21692866215e-03 4.74176747355e-03 5.43377044817e-03 6.31209415558e-03 7.39443450458e-03 8.69246386814e-03 - 1.02054916185e-02 1.19137265332e-02 1.37726366090e-02 1.57094271493e-02 1.76229803621e-02 1.93892705934e-02 - 2.08735527936e-02 2.19482820950e-02 2.25132701769e-02 2.25132701769e-02 2.19482820950e-02 2.08735527936e-02 - 1.93892705934e-02 1.76229803621e-02 1.57094271493e-02 1.37726366090e-02 1.19137265332e-02 1.02054916185e-02 - 7.69793885145e-03 6.67049181789e-03 5.82127807001e-03 5.13913617973e-03 4.60945880297e-03 4.21692866215e-03 - 3.94752033538e-03 3.79030883078e-03 3.73863341678e-03 3.79030883078e-03 3.94752033538e-03 4.21692866215e-03 - 4.60945880297e-03 5.13913617973e-03 5.82127807001e-03 6.67049181789e-03 7.69793885145e-03 8.90705726329e-03 - 1.02881382638e-02 1.18131307076e-02 1.34318126710e-02 1.50702461704e-02 1.66330383744e-02 1.80109897723e-02 - 1.90940368490e-02 1.97871783123e-02 2.00258575799e-02 1.97871783123e-02 1.90940368490e-02 1.80109897723e-02 - 1.66330383744e-02 1.50702461704e-02 1.34318126710e-02 1.18131307076e-02 1.02881382638e-02 8.90705726329e-03 - 7.12420828954e-03 6.31909087196e-03 5.66079261571e-03 5.13913617973e-03 4.74176747355e-03 4.45623663297e-03 - 4.27192322596e-03 4.18152878343e-03 4.18152878343e-03 4.27192322596e-03 4.45623663297e-03 4.74176747355e-03 - 5.13913617973e-03 5.66079261571e-03 6.31909087196e-03 7.12420828954e-03 8.08133005705e-03 9.18679124184e-03 - 1.04238516982e-02 1.17590249893e-02 1.31397287366e-02 1.44944499034e-02 1.57370100687e-02 1.67754563001e-02 - 1.75241772421e-02 1.79167348748e-02 1.79167348748e-02 1.75241772421e-02 1.67754563001e-02 1.57370100687e-02 - 1.44944499034e-02 1.31397287366e-02 1.17590249893e-02 1.04238516982e-02 9.18679124184e-03 8.08133005705e-03 - 6.93665223838e-03 6.31909087196e-03 5.82127807001e-03 5.43377044817e-03 5.14599535674e-03 4.94806264494e-03 - 4.83232712929e-03 4.79423577304e-03 4.83232712929e-03 4.94806264494e-03 5.14599535674e-03 5.43377044817e-03 - 5.82127807001e-03 6.31909087196e-03 6.93665223838e-03 7.68014935330e-03 8.54973346172e-03 9.53627070961e-03 - 1.06181928008e-02 1.17590249893e-02 1.29064893850e-02 1.39945083398e-02 1.49488960464e-02 1.56960478729e-02 - 1.61729889157e-02 1.63370205752e-02 1.61729889157e-02 1.56960478729e-02 1.49488960464e-02 1.39945083398e-02 - 1.29064893850e-02 1.17590249893e-02 1.06181928008e-02 9.53627070961e-03 8.54973346172e-03 7.68014935330e-03 - 7.12420828954e-03 6.67049181789e-03 6.31209415558e-03 6.04016501968e-03 5.84558656512e-03 5.72047031573e-03 - 5.65928321674e-03 5.65928321674e-03 5.72047031573e-03 5.84558656512e-03 6.04016501968e-03 6.31209415558e-03 - 6.67049181789e-03 7.12420828954e-03 7.68014935330e-03 8.34122341388e-03 9.10381322670e-03 9.95507847617e-03 - 1.08706042529e-02 1.18131307076e-02 1.27333396536e-02 1.35733603577e-02 1.42727054437e-02 1.47756456624e-02 - 1.50389831834e-02 1.50389831834e-02 1.47756456624e-02 1.42727054437e-02 1.35733603577e-02 1.27333396536e-02 - 1.18131307076e-02 1.08706042529e-02 9.95507847617e-03 9.10381322670e-03 8.34122341388e-03 7.68014935330e-03 - 7.69793885145e-03 7.39443450458e-03 7.16308508658e-03 6.99504538611e-03 6.88181758770e-03 6.81664387654e-03 - 6.79537428806e-03 6.81664387654e-03 6.88181758770e-03 6.99504538611e-03 7.16308508658e-03 7.39443450458e-03 - 7.69793885145e-03 8.08133005705e-03 8.54973346172e-03 9.10381322670e-03 9.73748464183e-03 1.04356792319e-02 - 1.11729588764e-02 1.19137265332e-02 1.26143883181e-02 1.32272933414e-02 1.37059602390e-02 1.40109856905e-02 - 1.41157952825e-02 1.40109856905e-02 1.37059602390e-02 1.32272933414e-02 1.26143883181e-02 1.19137265332e-02 - 1.11729588764e-02 1.04356792319e-02 9.73748464183e-03 9.10381322670e-03 8.54973346172e-03 8.08133005705e-03 - 8.69246386814e-03 8.53524112695e-03 8.42580807925e-03 8.35413904759e-03 8.31144312544e-03 8.29158854156e-03 - 8.29158854156e-03 8.31144312544e-03 8.35413904759e-03 8.42580807925e-03 8.53524112695e-03 8.69246386814e-03 - 8.90705726329e-03 9.18679124184e-03 9.53627070961e-03 9.95507847617e-03 1.04356792319e-02 1.09620544703e-02 - 1.15097880648e-02 1.20475550421e-02 1.25396406703e-02 1.29494247541e-02 1.32437842255e-02 1.33976732300e-02 - 1.33976732300e-02 1.32437842255e-02 1.29494247541e-02 1.25396406703e-02 1.20475550421e-02 1.15097880648e-02 - 1.09620544703e-02 1.04356792319e-02 9.95507847617e-03 9.53627070961e-03 9.18679124184e-03 8.90705726329e-03 - 1.01663421573e-02 1.01587603229e-02 1.01697655067e-02 1.01870819285e-02 1.02011860999e-02 1.02064774226e-02 - 1.02011860999e-02 1.01870819285e-02 1.01697655067e-02 1.01587603229e-02 1.01663421573e-02 1.02054916185e-02 - 1.02881382638e-02 1.04238516982e-02 1.06181928008e-02 1.08706042529e-02 1.11729588764e-02 1.15097880648e-02 - 1.18598583649e-02 1.21980827392e-02 1.24976141314e-02 1.27327884289e-02 1.28827341282e-02 1.29342051284e-02 - 1.28827341282e-02 1.27327884289e-02 1.24976141314e-02 1.21980827392e-02 1.18598583649e-02 1.15097880648e-02 - 1.11729588764e-02 1.08706042529e-02 1.06181928008e-02 1.04238516982e-02 1.02881382638e-02 1.02054916185e-02 - 1.21980827392e-02 1.23472319177e-02 1.24770996440e-02 1.25723726562e-02 1.26225341258e-02 1.26225341258e-02 - 1.25723726562e-02 1.24770996440e-02 1.23472319177e-02 1.21980827392e-02 1.20475550421e-02 1.19137265332e-02 - 1.18131307076e-02 1.17590249893e-02 1.17590249893e-02 1.18131307076e-02 1.19137265332e-02 1.20475550421e-02 - 1.21980827392e-02 1.23472319177e-02 1.24770996440e-02 1.25723726562e-02 1.26225341258e-02 1.26225341258e-02 - 1.25723726562e-02 1.24770996440e-02 1.23472319177e-02 1.21980827392e-02 1.20475550421e-02 1.19137265332e-02 - 1.18131307076e-02 1.17590249893e-02 1.17590249893e-02 1.18131307076e-02 1.19137265332e-02 1.20475550421e-02 - 1.48820928374e-02 1.51956958667e-02 1.54388806266e-02 1.55924938344e-02 1.56449525655e-02 1.55924938344e-02 - 1.54388806266e-02 1.51956958667e-02 1.48820928374e-02 1.45226393383e-02 1.41440793855e-02 1.37726366090e-02 - 1.34318126710e-02 1.31397287366e-02 1.29064893850e-02 1.27333396536e-02 1.26143883181e-02 1.25396406703e-02 - 1.24976141314e-02 1.24770996440e-02 1.24686371753e-02 1.24657333634e-02 1.24650738064e-02 1.24657333634e-02 - 1.24686371753e-02 1.24770996440e-02 1.24976141314e-02 1.25396406703e-02 1.26143883181e-02 1.27333396536e-02 - 1.29064893850e-02 1.31397287366e-02 1.34318126710e-02 1.37726366090e-02 1.41440793855e-02 1.45226393383e-02 - 1.83246021902e-02 1.88053010662e-02 1.91448778653e-02 1.93203741197e-02 1.93203741197e-02 1.91448778653e-02 - 1.88053010662e-02 1.83246021902e-02 1.77355963866e-02 1.70770073925e-02 1.63890080671e-02 1.57094271493e-02 - 1.50702461704e-02 1.44944499034e-02 1.39945083398e-02 1.35733603577e-02 1.32272933414e-02 1.29494247541e-02 - 1.27327884289e-02 1.25723726562e-02 1.24657333634e-02 1.24123312979e-02 1.24123312979e-02 1.24657333634e-02 - 1.25723726562e-02 1.27327884289e-02 1.29494247541e-02 1.32272933414e-02 1.35733603577e-02 1.39945083398e-02 - 1.44944499034e-02 1.50702461704e-02 1.57094271493e-02 1.63890080671e-02 1.70770073925e-02 1.77355963866e-02 - 2.26267522861e-02 2.32603028496e-02 2.36566460915e-02 2.37914166767e-02 2.36566460915e-02 2.32603028496e-02 - 2.26267522861e-02 2.17964249596e-02 2.08223402545e-02 1.97639178277e-02 1.86800926235e-02 1.76229803621e-02 - 1.66330383744e-02 1.57370100687e-02 1.49488960464e-02 1.42727054437e-02 1.37059602390e-02 1.32437842255e-02 - 1.28827341282e-02 1.26225341258e-02 1.24650738064e-02 1.24123312979e-02 1.24650738064e-02 1.26225341258e-02 - 1.28827341282e-02 1.32437842255e-02 1.37059602390e-02 1.42727054437e-02 1.49488960464e-02 1.57370100687e-02 - 1.66330383744e-02 1.76229803621e-02 1.86800926235e-02 1.97639178277e-02 2.08223402545e-02 2.17964249596e-02 - 2.78466298707e-02 2.85879356046e-02 2.89691250092e-02 2.89691250092e-02 2.85879356046e-02 2.78466298707e-02 - 2.67889182249e-02 2.54803066383e-02 2.40022165572e-02 2.24420850452e-02 2.08820531014e-02 1.93892705934e-02 - 1.80109897723e-02 1.67754563001e-02 1.56960478729e-02 1.47756456624e-02 1.40109856905e-02 1.33976732300e-02 - 1.29342051284e-02 1.26225341258e-02 1.24657333634e-02 1.24657333634e-02 1.26225341258e-02 1.29342051284e-02 - 1.33976732300e-02 1.40109856905e-02 1.47756456624e-02 1.56960478729e-02 1.67754563001e-02 1.80109897723e-02 - 1.93892705934e-02 2.08820531014e-02 2.24420850452e-02 2.40022165572e-02 2.54803066383e-02 2.67889182249e-02 - 3.39533984936e-02 3.47182328687e-02 3.49773595797e-02 3.47182328687e-02 3.39533984936e-02 3.27229087590e-02 - 3.10978190541e-02 2.91781605866e-02 2.70827915169e-02 2.49333108373e-02 2.28368095394e-02 2.08735527936e-02 - 1.90940368490e-02 1.75241772421e-02 1.61729889157e-02 1.50389831834e-02 1.41157952825e-02 1.33976732300e-02 - 1.28827341282e-02 1.25723726562e-02 1.24686371753e-02 1.25723726562e-02 1.28827341282e-02 1.33976732300e-02 - 1.41157952825e-02 1.50389831834e-02 1.61729889157e-02 1.75241772421e-02 1.90940368490e-02 2.08735527936e-02 - 2.28368095394e-02 2.49333108373e-02 2.70827915169e-02 2.91781605866e-02 3.10978190541e-02 3.27229087590e-02 - 4.07924714489e-02 4.14579289512e-02 4.14579289512e-02 4.07924714489e-02 3.94908104948e-02 3.76190713504e-02 - 3.52857897121e-02 3.26363277502e-02 2.98349904445e-02 2.70402901784e-02 2.43819637041e-02 2.19482820950e-02 - 1.97871783123e-02 1.79167348748e-02 1.63370205752e-02 1.50389831834e-02 1.40109856905e-02 1.32437842255e-02 - 1.27327884289e-02 1.24770996440e-02 1.24770996440e-02 1.27327884289e-02 1.32437842255e-02 1.40109856905e-02 - 1.50389831834e-02 1.63370205752e-02 1.79167348748e-02 1.97871783123e-02 2.19482820950e-02 2.43819637041e-02 - 2.70402901784e-02 2.98349904445e-02 3.26363277502e-02 3.52857897121e-02 3.76190713504e-02 3.94908104948e-02 - 4.80677366203e-02 4.84815544672e-02 4.80677366203e-02 4.68401774785e-02 4.48486167771e-02 4.21941579647e-02 - 3.90350130516e-02 3.55725175924e-02 3.20210145144e-02 2.85734174953e-02 2.53749373622e-02 2.25132701769e-02 - 2.00258575799e-02 1.79167348748e-02 1.61729889157e-02 1.47756456624e-02 1.37059602390e-02 1.29494247541e-02 - 1.24976141314e-02 1.23472319177e-02 1.24976141314e-02 1.29494247541e-02 1.37059602390e-02 1.47756456624e-02 - 1.61729889157e-02 1.79167348748e-02 2.00258575799e-02 2.25132701769e-02 2.53749373622e-02 2.85734174953e-02 - 3.20210145144e-02 3.55725175924e-02 3.90350130516e-02 4.21941579647e-02 4.48486167771e-02 4.68401774785e-02 - 5.53499973529e-02 5.53499973529e-02 5.43692149489e-02 5.24339557043e-02 4.96193341715e-02 4.60731359718e-02 - 4.20165784801e-02 3.77147526395e-02 3.34304675050e-02 2.93819034216e-02 2.57176061925e-02 2.25132701769e-02 - 1.97871783123e-02 1.75241772421e-02 1.56960478729e-02 1.42727054437e-02 1.32272933414e-02 1.25396406703e-02 - 1.21980827392e-02 1.21980827392e-02 1.25396406703e-02 1.32272933414e-02 1.42727054437e-02 1.56960478729e-02 - 1.75241772421e-02 1.97871783123e-02 2.25132701769e-02 2.57176061925e-02 2.93819034216e-02 3.34304675050e-02 - 3.77147526395e-02 4.20165784801e-02 4.60731359718e-02 4.96193341715e-02 5.24339557043e-02 5.43692149489e-02 - 6.21334821617e-02 6.15702941626e-02 5.98878714669e-02 5.71251588417e-02 5.33923081840e-02 4.88987422193e-02 - 4.39402098517e-02 3.88462459817e-02 3.39176800802e-02 2.93819034216e-02 2.53749373622e-02 2.19482820950e-02 - 1.90940368490e-02 1.67754563001e-02 1.49488960464e-02 1.35733603577e-02 1.26143883181e-02 1.20475550421e-02 - 1.18598583649e-02 1.20475550421e-02 1.26143883181e-02 1.35733603577e-02 1.49488960464e-02 1.67754563001e-02 - 1.90940368490e-02 2.19482820950e-02 2.53749373622e-02 2.93819034216e-02 3.39176800802e-02 3.88462459817e-02 - 4.39402098517e-02 4.88987422193e-02 5.33923081840e-02 5.71251588417e-02 5.98878714669e-02 6.15702941626e-02 - 6.79320857310e-02 6.66786802062e-02 6.41840706496e-02 6.05090723285e-02 5.58153453540e-02 5.03893328752e-02 - 4.46053414397e-02 3.88462459817e-02 3.34304675050e-02 2.85734174953e-02 2.43819637041e-02 2.08735527936e-02 - 1.80109897723e-02 1.57370100687e-02 1.39945083398e-02 1.27333396536e-02 1.19137265332e-02 1.15097880648e-02 - 1.15097880648e-02 1.19137265332e-02 1.27333396536e-02 1.39945083398e-02 1.57370100687e-02 1.80109897723e-02 - 2.08735527936e-02 2.43819637041e-02 2.85734174953e-02 3.34304675050e-02 3.88462459817e-02 4.46053414397e-02 - 5.03893328752e-02 5.58153453540e-02 6.05090723285e-02 6.41840706496e-02 6.66786802062e-02 6.79320857310e-02 - 7.23556493700e-02 7.03019494995e-02 6.69101294891e-02 6.22821499923e-02 5.66509609539e-02 5.03893328752e-02 - 4.39402098517e-02 3.77147526395e-02 3.20210145144e-02 2.70402901784e-02 2.28368095394e-02 1.93892705934e-02 - 1.66330383744e-02 1.44944499034e-02 1.29064893850e-02 1.18131307076e-02 1.11729588764e-02 1.09620544703e-02 - 1.11729588764e-02 1.18131307076e-02 1.29064893850e-02 1.44944499034e-02 1.66330383744e-02 1.93892705934e-02 - 2.28368095394e-02 2.70402901784e-02 3.20210145144e-02 3.77147526395e-02 4.39402098517e-02 5.03893328752e-02 - 5.66509609539e-02 6.22821499923e-02 6.69101294891e-02 7.03019494995e-02 7.23556493700e-02 7.30418134594e-02 - 7.51264696898e-02 7.21810172465e-02 6.78442738531e-02 6.22821499923e-02 5.58153453540e-02 4.88987422193e-02 - 4.20165784801e-02 3.55725175924e-02 2.98349904445e-02 2.49333108373e-02 2.08820531014e-02 1.76229803621e-02 - 1.50702461704e-02 1.31397287366e-02 1.17590249893e-02 1.08706042529e-02 1.04356792319e-02 1.04356792319e-02 - 1.08706042529e-02 1.17590249893e-02 1.31397287366e-02 1.50702461704e-02 1.76229803621e-02 2.08820531014e-02 - 2.49333108373e-02 2.98349904445e-02 3.55725175924e-02 4.20165784801e-02 4.88987422193e-02 5.58153453540e-02 - 6.22821499923e-02 6.78442738531e-02 7.21810172465e-02 7.51264696898e-02 7.66122811094e-02 7.66122811094e-02 - 7.60705845667e-02 7.21810172465e-02 6.69101294891e-02 6.05090723285e-02 5.33923081840e-02 4.60731359718e-02 - 3.90350130516e-02 3.26363277502e-02 2.70827915169e-02 2.24420850452e-02 1.86800926235e-02 1.57094271493e-02 - 1.34318126710e-02 1.17590249893e-02 1.06181928008e-02 9.95507847617e-03 9.73748464183e-03 9.95507847617e-03 - 1.06181928008e-02 1.17590249893e-02 1.34318126710e-02 1.57094271493e-02 1.86800926235e-02 2.24420850452e-02 - 2.70827915169e-02 3.26363277502e-02 3.90350130516e-02 4.60731359718e-02 5.33923081840e-02 6.05090723285e-02 - 6.69101294891e-02 7.21810172465e-02 7.60705845667e-02 7.84511058955e-02 7.92532152557e-02 7.84511058955e-02 - 7.51264696898e-02 7.03019494995e-02 6.41840706496e-02 5.71251588417e-02 4.96193341715e-02 4.21941579647e-02 - 3.52857897121e-02 2.91781605866e-02 2.40022165572e-02 1.97639178277e-02 1.63890080671e-02 1.37726366090e-02 - 1.18131307076e-02 1.04238516982e-02 9.53627070961e-03 9.10381322670e-03 9.10381322670e-03 9.53627070961e-03 - 1.04238516982e-02 1.18131307076e-02 1.37726366090e-02 1.63890080671e-02 1.97639178277e-02 2.40022165572e-02 - 2.91781605866e-02 3.52857897121e-02 4.21941579647e-02 4.96193341715e-02 5.71251588417e-02 6.41840706496e-02 - 7.03019494995e-02 7.51264696898e-02 7.84511058955e-02 8.01500628124e-02 8.01500628124e-02 7.84511058955e-02 - 7.23556493700e-02 6.66786802062e-02 5.98878714669e-02 5.24339557043e-02 4.48486167771e-02 3.76190713504e-02 - 3.10978190541e-02 2.54803066383e-02 2.08223402545e-02 1.70770073925e-02 1.41440793855e-02 1.19137265332e-02 - 1.02881382638e-02 9.18679124184e-03 8.54973346172e-03 8.34122341388e-03 8.54973346172e-03 9.18679124184e-03 - 1.02881382638e-02 1.19137265332e-02 1.41440793855e-02 1.70770073925e-02 2.08223402545e-02 2.54803066383e-02 - 3.10978190541e-02 3.76190713504e-02 4.48486167771e-02 5.24339557043e-02 5.98878714669e-02 6.66786802062e-02 - 7.23556493700e-02 7.66122811094e-02 7.92532152557e-02 8.01500628124e-02 7.92532152557e-02 7.66122811094e-02 - 6.79320857310e-02 6.15702941626e-02 5.43692149489e-02 4.68401774785e-02 3.94908104948e-02 3.27229087590e-02 - 2.67889182249e-02 2.17964249596e-02 1.77355963866e-02 1.45226393383e-02 1.20475550421e-02 1.02054916185e-02 - 8.90705726329e-03 8.08133005705e-03 7.68014935330e-03 7.68014935330e-03 8.08133005705e-03 8.90705726329e-03 - 1.02054916185e-02 1.20475550421e-02 1.45226393383e-02 1.77355963866e-02 2.17964249596e-02 2.67889182249e-02 - 3.27229087590e-02 3.94908104948e-02 4.68401774785e-02 5.43692149489e-02 6.15702941626e-02 6.79320857310e-02 - 7.30418134594e-02 7.66122811094e-02 7.84511058955e-02 7.84511058955e-02 7.66122811094e-02 7.30418134594e-02 - 5.77319585491e-02 5.00090134447e-02 4.23378898536e-02 3.51532871168e-02 2.87439673059e-02 2.32562353108e-02 - 1.87162119832e-02 1.50645020089e-02 1.21980827392e-02 1.00055755901e-02 8.38500711079e-03 7.24904282964e-03 - 6.52902358143e-03 6.17967298585e-03 6.17967298585e-03 6.52902358143e-03 7.24904282964e-03 8.38500711079e-03 - 1.00055755901e-02 1.21980827392e-02 1.50645020089e-02 1.87162119832e-02 2.32562353108e-02 2.87439673059e-02 - 3.51532871168e-02 4.23378898536e-02 5.00090134447e-02 5.77319585491e-02 6.49555724266e-02 7.10787520021e-02 - 7.55368812409e-02 7.78881394404e-02 7.78881394404e-02 7.55368812409e-02 7.10787520021e-02 6.49555724266e-02 - 5.00090134447e-02 4.27763236460e-02 3.58243136049e-02 2.94854041377e-02 2.39549635512e-02 1.93050944183e-02 - 1.55127511572e-02 1.24976141314e-02 1.01587603229e-02 8.39746782805e-03 7.12561826537e-03 6.26978037715e-03 - 5.77651892440e-03 5.61528193683e-03 5.77651892440e-03 6.26978037715e-03 7.12561826537e-03 8.39746782805e-03 - 1.01587603229e-02 1.24976141314e-02 1.55127511572e-02 1.93050944183e-02 2.39549635512e-02 2.94854041377e-02 - 3.58243136049e-02 4.27763236460e-02 5.00090134447e-02 5.70612480291e-02 6.33842515281e-02 6.84139609392e-02 - 7.16581855164e-02 7.27796836797e-02 7.16581855164e-02 6.84139609392e-02 6.33842515281e-02 5.70612480291e-02 - 4.23378898536e-02 3.58243136049e-02 2.97391273192e-02 2.43184216158e-02 1.96777557044e-02 1.58329883187e-02 - 1.27327884289e-02 1.02937156151e-02 8.42580807925e-03 7.04448483440e-03 6.07562992209e-03 5.46093720174e-03 - 5.16243150929e-03 5.16243150929e-03 5.46093720174e-03 6.07562992209e-03 7.04448483440e-03 8.42580807925e-03 - 1.02937156151e-02 1.27327884289e-02 1.58329883187e-02 1.96777557044e-02 2.43184216158e-02 2.97391273192e-02 - 3.58243136049e-02 4.23378898536e-02 4.89192305177e-02 5.51031089527e-02 6.03694423859e-02 6.42180018992e-02 - 6.62522137956e-02 6.62522137956e-02 6.42180018992e-02 6.03694423859e-02 5.51031089527e-02 4.89192305177e-02 - 3.51532871168e-02 2.94854041377e-02 2.43184216158e-02 1.98052910067e-02 1.59997599900e-02 1.28827341282e-02 - 1.03937663652e-02 8.45686847188e-03 6.99504538611e-03 5.93719631865e-03 5.22371135458e-03 4.81172327806e-03 - 4.67692793169e-03 4.81172327806e-03 5.22371135458e-03 5.93719631865e-03 6.99504538611e-03 8.45686847188e-03 - 1.03937663652e-02 1.28827341282e-02 1.59997599900e-02 1.98052910067e-02 2.43184216158e-02 2.94854041377e-02 - 3.51532871168e-02 4.10571769449e-02 4.68264624901e-02 5.20147259753e-02 5.61547897924e-02 5.88318176265e-02 - 5.97584596222e-02 5.88318176265e-02 5.61547897924e-02 5.20147259753e-02 4.68264624901e-02 4.10571769449e-02 - 2.87439673059e-02 2.39549635512e-02 1.96777557044e-02 1.59997599900e-02 1.29342051284e-02 1.04468583553e-02 - 8.47998103933e-03 6.96786738821e-03 5.84558656512e-03 5.05545032098e-03 4.55262020357e-03 4.30805835198e-03 - 4.30805835198e-03 4.55262020357e-03 5.05545032098e-03 5.84558656512e-03 6.96786738821e-03 8.47998103933e-03 - 1.04468583553e-02 1.29342051284e-02 1.59997599900e-02 1.96777557044e-02 2.39549635512e-02 2.87439673059e-02 - 3.38635928392e-02 3.90347179512e-02 4.38959177953e-02 4.80406383964e-02 5.10737783335e-02 5.26787408684e-02 - 5.26787408684e-02 5.10737783335e-02 4.80406383964e-02 4.38959177953e-02 3.90347179512e-02 3.38635928392e-02 - 2.32562353108e-02 1.93050944183e-02 1.58329883187e-02 1.28827341282e-02 1.04468583553e-02 8.48843476768e-03 - 6.95605972443e-03 5.79365065764e-03 4.94806264494e-03 4.37525079151e-03 4.04374575730e-03 3.93522801758e-03 - 4.04374575730e-03 4.37525079151e-03 4.94806264494e-03 5.79365065764e-03 6.95605972443e-03 8.48843476768e-03 - 1.04468583553e-02 1.28827341282e-02 1.58329883187e-02 1.93050944183e-02 2.32562353108e-02 2.75721078901e-02 - 3.20546920774e-02 3.64263171972e-02 4.03527020822e-02 4.34838779539e-02 4.55081727847e-02 4.62088704848e-02 - 4.55081727847e-02 4.34838779539e-02 4.03527020822e-02 3.64263171972e-02 3.20546920774e-02 2.75721078901e-02 - 1.87162119832e-02 1.55127511572e-02 1.27327884289e-02 1.03937663652e-02 8.47998103933e-03 6.95605972443e-03 - 5.77685140016e-03 4.89581524939e-03 4.27192322596e-03 3.87358926493e-03 3.67971968314e-03 3.67971968314e-03 - 3.87358926493e-03 4.27192322596e-03 4.89581524939e-03 5.77685140016e-03 6.95605972443e-03 8.47998103933e-03 - 1.03937663652e-02 1.27327884289e-02 1.55127511572e-02 1.87162119832e-02 2.22755921268e-02 2.60582031450e-02 - 2.98615217076e-02 3.34242157073e-02 3.64535808156e-02 3.86662855632e-02 3.98358227133e-02 3.98358227133e-02 - 3.86662855632e-02 3.64535808156e-02 3.34242157073e-02 2.98615217076e-02 2.60582031450e-02 2.22755921268e-02 - 1.50645020089e-02 1.24976141314e-02 1.02937156151e-02 8.45686847188e-03 6.96786738821e-03 5.79365065764e-03 - 4.89581524939e-03 4.23798561825e-03 3.79030883078e-03 3.53085792774e-03 3.44594928533e-03 3.53085792774e-03 - 3.79030883078e-03 4.23798561825e-03 4.89581524939e-03 5.79365065764e-03 6.96786738821e-03 8.45686847188e-03 - 1.02937156151e-02 1.24976141314e-02 1.50645020089e-02 1.79555609317e-02 2.10847229658e-02 2.43103322252e-02 - 2.74372089612e-02 3.02323588099e-02 3.24534608631e-02 3.38859304601e-02 3.43811654173e-02 3.38859304601e-02 - 3.24534608631e-02 3.02323588099e-02 2.74372089612e-02 2.43103322252e-02 2.10847229658e-02 1.79555609317e-02 - 1.21980827392e-02 1.01587603229e-02 8.42580807925e-03 6.99504538611e-03 5.84558656512e-03 4.94806264494e-03 - 4.27192322596e-03 3.79030883078e-03 3.48198055848e-03 3.33184951460e-03 3.33184951460e-03 3.48198055848e-03 - 3.79030883078e-03 4.27192322596e-03 4.94806264494e-03 5.84558656512e-03 6.99504538611e-03 8.42580807925e-03 - 1.01587603229e-02 1.21980827392e-02 1.45226393383e-02 1.70770073925e-02 1.97639178277e-02 2.24420850452e-02 - 2.49333108373e-02 2.70402901784e-02 2.85734174953e-02 2.93819034216e-02 2.93819034216e-02 2.85734174953e-02 - 2.70402901784e-02 2.49333108373e-02 2.24420850452e-02 1.97639178277e-02 1.70770073925e-02 1.45226393383e-02 - 1.00055755901e-02 8.39746782805e-03 7.04448483440e-03 5.93719631865e-03 5.05545032098e-03 4.37525079151e-03 - 3.87358926493e-03 3.53085792774e-03 3.33184951460e-03 3.26667178574e-03 3.33184951460e-03 3.53085792774e-03 - 3.87358926493e-03 4.37525079151e-03 5.05545032098e-03 5.93719631865e-03 7.04448483440e-03 8.39746782805e-03 - 1.00055755901e-02 1.18598583649e-02 1.39256808178e-02 1.61367490443e-02 1.83921353899e-02 2.05587788214e-02 - 2.24815496090e-02 2.40011711299e-02 2.49776956914e-02 2.53146898274e-02 2.49776956914e-02 2.40011711299e-02 - 2.24815496090e-02 2.05587788214e-02 1.83921353899e-02 1.61367490443e-02 1.39256808178e-02 1.18598583649e-02 - 8.38500711079e-03 7.12561826537e-03 6.07562992209e-03 5.22371135458e-03 4.55262020357e-03 4.04374575730e-03 - 3.67971968314e-03 3.44594928533e-03 3.33184951460e-03 3.33184951460e-03 3.44594928533e-03 3.67971968314e-03 - 4.04374575730e-03 4.55262020357e-03 5.22371135458e-03 6.07562992209e-03 7.12561826537e-03 8.38500711079e-03 - 9.85294674885e-03 1.15097880648e-02 1.33116675302e-02 1.51874137660e-02 1.70389543521e-02 1.87467470027e-02 - 2.01812628043e-02 2.12198093897e-02 2.17657781241e-02 2.17657781241e-02 2.12198093897e-02 2.01812628043e-02 - 1.87467470027e-02 1.70389543521e-02 1.51874137660e-02 1.33116675302e-02 1.15097880648e-02 9.85294674885e-03 - 7.24904282964e-03 6.26978037715e-03 5.46093720174e-03 4.81172327806e-03 4.30805835198e-03 3.93522801758e-03 - 3.67971968314e-03 3.53085792774e-03 3.48198055848e-03 3.53085792774e-03 3.67971968314e-03 3.93522801758e-03 - 4.30805835198e-03 4.81172327806e-03 5.46093720174e-03 6.26978037715e-03 7.24904282964e-03 8.40200942373e-03 - 9.71912104775e-03 1.11729588764e-02 1.27148275869e-02 1.42737851127e-02 1.57591868798e-02 1.70678712692e-02 - 1.80960146721e-02 1.87538902948e-02 1.89804120902e-02 1.87538902948e-02 1.80960146721e-02 1.70678712692e-02 - 1.57591868798e-02 1.42737851127e-02 1.27148275869e-02 1.11729588764e-02 9.71912104775e-03 8.40200942373e-03 - 6.52902358143e-03 5.77651892440e-03 5.16243150929e-03 4.67692793169e-03 4.30805835198e-03 4.04374575730e-03 - 3.87358926493e-03 3.79030883078e-03 3.79030883078e-03 3.87358926493e-03 4.04374575730e-03 4.30805835198e-03 - 4.67692793169e-03 5.16243150929e-03 5.77651892440e-03 6.52902358143e-03 7.42492384580e-03 8.46060891145e-03 - 9.61987006090e-03 1.08706042529e-02 1.21629507848e-02 1.34297677852e-02 1.45906790875e-02 1.55601992220e-02 - 1.62588522549e-02 1.66250325509e-02 1.66250325509e-02 1.62588522549e-02 1.55601992220e-02 1.45906790875e-02 - 1.34297677852e-02 1.21629507848e-02 1.08706042529e-02 9.61987006090e-03 8.46060891145e-03 7.42492384580e-03 - 6.17967298585e-03 5.61528193683e-03 5.16243150929e-03 4.81172327806e-03 4.55262020357e-03 4.37525079151e-03 - 4.27192322596e-03 4.23798561825e-03 4.27192322596e-03 4.37525079151e-03 4.55262020357e-03 4.81172327806e-03 - 5.16243150929e-03 5.61528193683e-03 6.17967298585e-03 6.86170422323e-03 7.66146344666e-03 8.57007132232e-03 - 9.56702175361e-03 1.06181928008e-02 1.16751572683e-02 1.26769712537e-02 1.35553259639e-02 1.42425749040e-02 - 1.46810426016e-02 1.48317912783e-02 1.46810426016e-02 1.42425749040e-02 1.35553259639e-02 1.26769712537e-02 - 1.16751572683e-02 1.06181928008e-02 9.56702175361e-03 8.57007132232e-03 7.66146344666e-03 6.86170422323e-03 - 6.17967298585e-03 5.77651892440e-03 5.46093720174e-03 5.22371135458e-03 5.05545032098e-03 4.94806264494e-03 - 4.89581524939e-03 4.89581524939e-03 4.94806264494e-03 5.05545032098e-03 5.22371135458e-03 5.46093720174e-03 - 5.77651892440e-03 6.17967298585e-03 6.67761981445e-03 7.27338017313e-03 7.96341795569e-03 8.73551184506e-03 - 9.56702175361e-03 1.04238516982e-02 1.12609832188e-02 1.20255038743e-02 1.26620800682e-02 1.31198380533e-02 - 1.33594815778e-02 1.33594815778e-02 1.31198380533e-02 1.26620800682e-02 1.20255038743e-02 1.12609832188e-02 - 1.04238516982e-02 9.56702175361e-03 8.73551184506e-03 7.96341795569e-03 7.27338017313e-03 6.67761981445e-03 - 6.52902358143e-03 6.26978037715e-03 6.07562992209e-03 5.93719631865e-03 5.84558656512e-03 5.79365065764e-03 - 5.77685140016e-03 5.79365065764e-03 5.84558656512e-03 5.93719631865e-03 6.07562992209e-03 6.26978037715e-03 - 6.52902358143e-03 6.86170422323e-03 7.27338017313e-03 7.76490388909e-03 8.33057919998e-03 8.95658363692e-03 - 9.61987006090e-03 1.02881382638e-02 1.09215936737e-02 1.14766013692e-02 1.19105819676e-02 1.21873907787e-02 - 1.22825573408e-02 1.21873907787e-02 1.19105819676e-02 1.14766013692e-02 1.09215936737e-02 1.02881382638e-02 - 9.61987006090e-03 8.95658363692e-03 8.33057919998e-03 7.76490388909e-03 7.27338017313e-03 6.86170422323e-03 - 7.24904282964e-03 7.12561826537e-03 7.04448483440e-03 6.99504538611e-03 6.96786738821e-03 6.95605972443e-03 - 6.95605972443e-03 6.96786738821e-03 6.99504538611e-03 7.04448483440e-03 7.12561826537e-03 7.24904282964e-03 - 7.42492384580e-03 7.66146344666e-03 7.96341795569e-03 8.33057919998e-03 8.75631776595e-03 9.22648243576e-03 - 9.71912104775e-03 1.02054916185e-02 1.06524671204e-02 1.10259974674e-02 1.12951380995e-02 1.14361707830e-02 - 1.14361707830e-02 1.12951380995e-02 1.10259974674e-02 1.06524671204e-02 1.02054916185e-02 9.71912104775e-03 - 9.22648243576e-03 8.75631776595e-03 8.33057919998e-03 7.96341795569e-03 7.66146344666e-03 7.42492384580e-03 - 8.38500711079e-03 8.39746782805e-03 8.42580807925e-03 8.45686847188e-03 8.47998103933e-03 8.48843476768e-03 - 8.47998103933e-03 8.45686847188e-03 8.42580807925e-03 8.39746782805e-03 8.38500711079e-03 8.40200942373e-03 - 8.46060891145e-03 8.57007132232e-03 8.73551184506e-03 8.95658363692e-03 9.22648243576e-03 9.53173661310e-03 - 9.85294674885e-03 1.01663421573e-02 1.04460621935e-02 1.06671499136e-02 1.08088949298e-02 1.08577130860e-02 - 1.08088949298e-02 1.06671499136e-02 1.04460621935e-02 1.01663421573e-02 9.85294674885e-03 9.53173661310e-03 - 9.22648243576e-03 8.95658363692e-03 8.73551184506e-03 8.57007132232e-03 8.46060891145e-03 8.40200942373e-03 - 1.00055755901e-02 1.01587603229e-02 1.02937156151e-02 1.03937663652e-02 1.04468583553e-02 1.04468583553e-02 - 1.03937663652e-02 1.02937156151e-02 1.01587603229e-02 1.00055755901e-02 9.85294674885e-03 9.71912104775e-03 - 9.61987006090e-03 9.56702175361e-03 9.56702175361e-03 9.61987006090e-03 9.71912104775e-03 9.85294674885e-03 - 1.00055755901e-02 1.01587603229e-02 1.02937156151e-02 1.03937663652e-02 1.04468583553e-02 1.04468583553e-02 - 1.03937663652e-02 1.02937156151e-02 1.01587603229e-02 1.00055755901e-02 9.85294674885e-03 9.71912104775e-03 - 9.61987006090e-03 9.56702175361e-03 9.56702175361e-03 9.61987006090e-03 9.71912104775e-03 9.85294674885e-03 - 1.21980827392e-02 1.24976141314e-02 1.27327884289e-02 1.28827341282e-02 1.29342051284e-02 1.28827341282e-02 - 1.27327884289e-02 1.24976141314e-02 1.21980827392e-02 1.18598583649e-02 1.15097880648e-02 1.11729588764e-02 - 1.08706042529e-02 1.06181928008e-02 1.04238516982e-02 1.02881382638e-02 1.02054916185e-02 1.01663421573e-02 - 1.01587603229e-02 1.01697655067e-02 1.01870819285e-02 1.02011860999e-02 1.02064774226e-02 1.02011860999e-02 - 1.01870819285e-02 1.01697655067e-02 1.01587603229e-02 1.01663421573e-02 1.02054916185e-02 1.02881382638e-02 - 1.04238516982e-02 1.06181928008e-02 1.08706042529e-02 1.11729588764e-02 1.15097880648e-02 1.18598583649e-02 - 1.50645020089e-02 1.55127511572e-02 1.58329883187e-02 1.59997599900e-02 1.59997599900e-02 1.58329883187e-02 - 1.55127511572e-02 1.50645020089e-02 1.45226393383e-02 1.39256808178e-02 1.33116675302e-02 1.27148275869e-02 - 1.21629507848e-02 1.16751572683e-02 1.12609832188e-02 1.09215936737e-02 1.06524671204e-02 1.04460621935e-02 - 1.02937156151e-02 1.01870819285e-02 1.01194532806e-02 1.00865795572e-02 1.00865795572e-02 1.01194532806e-02 - 1.01870819285e-02 1.02937156151e-02 1.04460621935e-02 1.06524671204e-02 1.09215936737e-02 1.12609832188e-02 - 1.16751572683e-02 1.21629507848e-02 1.27148275869e-02 1.33116675302e-02 1.39256808178e-02 1.45226393383e-02 - 1.87162119832e-02 1.93050944183e-02 1.96777557044e-02 1.98052910067e-02 1.96777557044e-02 1.93050944183e-02 - 1.87162119832e-02 1.79555609317e-02 1.70770073925e-02 1.61367490443e-02 1.51874137660e-02 1.42737851127e-02 - 1.34297677852e-02 1.26769712537e-02 1.20255038743e-02 1.14766013692e-02 1.10259974674e-02 1.06671499136e-02 - 1.03937663652e-02 1.02011860999e-02 1.00865795572e-02 1.00485204973e-02 1.00865795572e-02 1.02011860999e-02 - 1.03937663652e-02 1.06671499136e-02 1.10259974674e-02 1.14766013692e-02 1.20255038743e-02 1.26769712537e-02 - 1.34297677852e-02 1.42737851127e-02 1.51874137660e-02 1.61367490443e-02 1.70770073925e-02 1.79555609317e-02 - 2.32562353108e-02 2.39549635512e-02 2.43184216158e-02 2.43184216158e-02 2.39549635512e-02 2.32562353108e-02 - 2.22755921268e-02 2.10847229658e-02 1.97639178277e-02 1.83921353899e-02 1.70389543521e-02 1.57591868798e-02 - 1.45906790875e-02 1.35553259639e-02 1.26620800682e-02 1.19105819676e-02 1.12951380995e-02 1.08088949298e-02 - 1.04468583553e-02 1.02064774226e-02 1.00865795572e-02 1.00865795572e-02 1.02064774226e-02 1.04468583553e-02 - 1.08088949298e-02 1.12951380995e-02 1.19105819676e-02 1.26620800682e-02 1.35553259639e-02 1.45906790875e-02 - 1.57591868798e-02 1.70389543521e-02 1.83921353899e-02 1.97639178277e-02 2.10847229658e-02 2.22755921268e-02 - 2.87439673059e-02 2.94854041377e-02 2.97391273192e-02 2.94854041377e-02 2.87439673059e-02 2.75721078901e-02 - 2.60582031450e-02 2.43103322252e-02 2.24420850452e-02 2.05587788214e-02 1.87467470027e-02 1.70678712692e-02 - 1.55601992220e-02 1.42425749040e-02 1.31198380533e-02 1.21873907787e-02 1.14361707830e-02 1.08577130860e-02 - 1.04468583553e-02 1.02011860999e-02 1.01194532806e-02 1.02011860999e-02 1.04468583553e-02 1.08577130860e-02 - 1.14361707830e-02 1.21873907787e-02 1.31198380533e-02 1.42425749040e-02 1.55601992220e-02 1.70678712692e-02 - 1.87467470027e-02 2.05587788214e-02 2.24420850452e-02 2.43103322252e-02 2.60582031450e-02 2.75721078901e-02 - 3.51532871168e-02 3.58243136049e-02 3.58243136049e-02 3.51532871168e-02 3.38635928392e-02 3.20546920774e-02 - 2.98615217076e-02 2.74372089612e-02 2.49333108373e-02 2.24815496090e-02 2.01812628043e-02 1.80960146721e-02 - 1.62588522549e-02 1.46810426016e-02 1.33594815778e-02 1.22825573408e-02 1.14361707830e-02 1.08088949298e-02 - 1.03937663652e-02 1.01870819285e-02 1.01870819285e-02 1.03937663652e-02 1.08088949298e-02 1.14361707830e-02 - 1.22825573408e-02 1.33594815778e-02 1.46810426016e-02 1.62588522549e-02 1.80960146721e-02 2.01812628043e-02 - 2.24815496090e-02 2.49333108373e-02 2.74372089612e-02 2.98615217076e-02 3.20546920774e-02 3.38635928392e-02 - 4.23378898536e-02 4.27763236460e-02 4.23378898536e-02 4.10571769449e-02 3.90347179512e-02 3.64263171972e-02 - 3.34242157073e-02 3.02323588099e-02 2.70402901784e-02 2.40011711299e-02 2.12198093897e-02 1.87538902948e-02 - 1.66250325509e-02 1.48317912783e-02 1.33594815778e-02 1.21873907787e-02 1.12951380995e-02 1.06671499136e-02 - 1.02937156151e-02 1.01697655067e-02 1.02937156151e-02 1.06671499136e-02 1.12951380995e-02 1.21873907787e-02 - 1.33594815778e-02 1.48317912783e-02 1.66250325509e-02 1.87538902948e-02 2.12198093897e-02 2.40011711299e-02 - 2.70402901784e-02 3.02323588099e-02 3.34242157073e-02 3.64263171972e-02 3.90347179512e-02 4.10571769449e-02 - 5.00090134447e-02 5.00090134447e-02 4.89192305177e-02 4.68264624901e-02 4.38959177953e-02 4.03527020822e-02 - 3.64535808156e-02 3.24534608631e-02 2.85734174953e-02 2.49776956914e-02 2.17657781241e-02 1.89804120902e-02 - 1.66250325509e-02 1.46810426016e-02 1.31198380533e-02 1.19105819676e-02 1.10259974674e-02 1.04460621935e-02 - 1.01587603229e-02 1.01587603229e-02 1.04460621935e-02 1.10259974674e-02 1.19105819676e-02 1.31198380533e-02 - 1.46810426016e-02 1.66250325509e-02 1.89804120902e-02 2.17657781241e-02 2.49776956914e-02 2.85734174953e-02 - 3.24534608631e-02 3.64535808156e-02 4.03527020822e-02 4.38959177953e-02 4.68264624901e-02 4.89192305177e-02 - 5.77319585491e-02 5.70612480291e-02 5.51031089527e-02 5.20147259753e-02 4.80406383964e-02 4.34838779539e-02 - 3.86662855632e-02 3.38859304601e-02 2.93819034216e-02 2.53146898274e-02 2.17657781241e-02 1.87538902948e-02 - 1.62588522549e-02 1.42425749040e-02 1.26620800682e-02 1.14766013692e-02 1.06524671204e-02 1.01663421573e-02 - 1.00055755901e-02 1.01663421573e-02 1.06524671204e-02 1.14766013692e-02 1.26620800682e-02 1.42425749040e-02 - 1.62588522549e-02 1.87538902948e-02 2.17657781241e-02 2.53146898274e-02 2.93819034216e-02 3.38859304601e-02 - 3.86662855632e-02 4.34838779539e-02 4.80406383964e-02 5.20147259753e-02 5.51031089527e-02 5.70612480291e-02 - 6.49555724266e-02 6.33842515281e-02 6.03694423859e-02 5.61547897924e-02 5.10737783335e-02 4.55081727847e-02 - 3.98358227133e-02 3.43811654173e-02 2.93819034216e-02 2.49776956914e-02 2.12198093897e-02 1.80960146721e-02 - 1.55601992220e-02 1.35553259639e-02 1.20255038743e-02 1.09215936737e-02 1.02054916185e-02 9.85294674885e-03 - 9.85294674885e-03 1.02054916185e-02 1.09215936737e-02 1.20255038743e-02 1.35553259639e-02 1.55601992220e-02 - 1.80960146721e-02 2.12198093897e-02 2.49776956914e-02 2.93819034216e-02 3.43811654173e-02 3.98358227133e-02 - 4.55081727847e-02 5.10737783335e-02 5.61547897924e-02 6.03694423859e-02 6.33842515281e-02 6.49555724266e-02 - 7.10787520021e-02 6.84139609392e-02 6.42180018992e-02 5.88318176265e-02 5.26787408684e-02 4.62088704848e-02 - 3.98358227133e-02 3.38859304601e-02 2.85734174953e-02 2.40011711299e-02 2.01812628043e-02 1.70678712692e-02 - 1.45906790875e-02 1.26769712537e-02 1.12609832188e-02 1.02881382638e-02 9.71912104775e-03 9.53173661310e-03 - 9.71912104775e-03 1.02881382638e-02 1.12609832188e-02 1.26769712537e-02 1.45906790875e-02 1.70678712692e-02 - 2.01812628043e-02 2.40011711299e-02 2.85734174953e-02 3.38859304601e-02 3.98358227133e-02 4.62088704848e-02 - 5.26787408684e-02 5.88318176265e-02 6.42180018992e-02 6.84139609392e-02 7.10787520021e-02 7.19923628057e-02 - 7.55368812409e-02 7.16581855164e-02 6.62522137956e-02 5.97584596222e-02 5.26787408684e-02 4.55081727847e-02 - 3.86662855632e-02 3.24534608631e-02 2.70402901784e-02 2.24815496090e-02 1.87467470027e-02 1.57591868798e-02 - 1.34297677852e-02 1.16751572683e-02 1.04238516982e-02 9.61987006090e-03 9.22648243576e-03 9.22648243576e-03 - 9.61987006090e-03 1.04238516982e-02 1.16751572683e-02 1.34297677852e-02 1.57591868798e-02 1.87467470027e-02 - 2.24815496090e-02 2.70402901784e-02 3.24534608631e-02 3.86662855632e-02 4.55081727847e-02 5.26787408684e-02 - 5.97584596222e-02 6.62522137956e-02 7.16581855164e-02 7.55368812409e-02 7.75631573239e-02 7.75631573239e-02 - 7.78881394404e-02 7.27796836797e-02 6.62522137956e-02 5.88318176265e-02 5.10737783335e-02 4.34838779539e-02 - 3.64535808156e-02 3.02323588099e-02 2.49333108373e-02 2.05587788214e-02 1.70389543521e-02 1.42737851127e-02 - 1.21629507848e-02 1.06181928008e-02 9.56702175361e-03 8.95658363692e-03 8.75631776595e-03 8.95658363692e-03 - 9.56702175361e-03 1.06181928008e-02 1.21629507848e-02 1.42737851127e-02 1.70389543521e-02 2.05587788214e-02 - 2.49333108373e-02 3.02323588099e-02 3.64535808156e-02 4.34838779539e-02 5.10737783335e-02 5.88318176265e-02 - 6.62522137956e-02 7.27796836797e-02 7.78881394404e-02 8.11458755837e-02 8.22656900591e-02 8.11458755837e-02 - 7.78881394404e-02 7.16581855164e-02 6.42180018992e-02 5.61547897924e-02 4.80406383964e-02 4.03527020822e-02 - 3.34242157073e-02 2.74372089612e-02 2.24420850452e-02 1.83921353899e-02 1.51874137660e-02 1.27148275869e-02 - 1.08706042529e-02 9.56702175361e-03 8.73551184506e-03 8.33057919998e-03 8.33057919998e-03 8.73551184506e-03 - 9.56702175361e-03 1.08706042529e-02 1.27148275869e-02 1.51874137660e-02 1.83921353899e-02 2.24420850452e-02 - 2.74372089612e-02 3.34242157073e-02 4.03527020822e-02 4.80406383964e-02 5.61547897924e-02 6.42180018992e-02 - 7.16581855164e-02 7.78881394404e-02 8.23828782457e-02 8.47410728024e-02 8.47410728024e-02 8.23828782457e-02 - 7.55368812409e-02 6.84139609392e-02 6.03694423859e-02 5.20147259753e-02 4.38959177953e-02 3.64263171972e-02 - 2.98615217076e-02 2.43103322252e-02 1.97639178277e-02 1.61367490443e-02 1.33116675302e-02 1.11729588764e-02 - 9.61987006090e-03 8.57007132232e-03 7.96341795569e-03 7.76490388909e-03 7.96341795569e-03 8.57007132232e-03 - 9.61987006090e-03 1.11729588764e-02 1.33116675302e-02 1.61367490443e-02 1.97639178277e-02 2.43103322252e-02 - 2.98615217076e-02 3.64263171972e-02 4.38959177953e-02 5.20147259753e-02 6.03694423859e-02 6.84139609392e-02 - 7.55368812409e-02 8.11458755837e-02 8.47410728024e-02 8.59805323971e-02 8.47410728024e-02 8.11458755837e-02 - 7.10787520021e-02 6.33842515281e-02 5.51031089527e-02 4.68264624901e-02 3.90347179512e-02 3.20546920774e-02 - 2.60582031450e-02 2.10847229658e-02 1.70770073925e-02 1.39256808178e-02 1.15097880648e-02 9.71912104775e-03 - 8.46060891145e-03 7.66146344666e-03 7.27338017313e-03 7.27338017313e-03 7.66146344666e-03 8.46060891145e-03 - 9.71912104775e-03 1.15097880648e-02 1.39256808178e-02 1.70770073925e-02 2.10847229658e-02 2.60582031450e-02 - 3.20546920774e-02 3.90347179512e-02 4.68264624901e-02 5.51031089527e-02 6.33842515281e-02 7.10787520021e-02 - 7.75631573239e-02 8.22656900591e-02 8.47410728024e-02 8.47410728024e-02 8.22656900591e-02 7.75631573239e-02 - 6.49555724266e-02 5.70612480291e-02 4.89192305177e-02 4.10571769449e-02 3.38635928392e-02 2.75721078901e-02 - 2.22755921268e-02 1.79555609317e-02 1.45226393383e-02 1.18598583649e-02 9.85294674885e-03 8.40200942373e-03 - 7.42492384580e-03 6.86170422323e-03 6.67761981445e-03 6.86170422323e-03 7.42492384580e-03 8.40200942373e-03 - 9.85294674885e-03 1.18598583649e-02 1.45226393383e-02 1.79555609317e-02 2.22755921268e-02 2.75721078901e-02 - 3.38635928392e-02 4.10571769449e-02 4.89192305177e-02 5.70612480291e-02 6.49555724266e-02 7.19923628057e-02 - 7.75631573239e-02 8.11458755837e-02 8.23828782457e-02 8.11458755837e-02 7.75631573239e-02 7.19923628057e-02 - 5.18034033720e-02 4.40291518527e-02 3.66568505349e-02 3.00149219248e-02 2.42781130820e-02 1.94921954522e-02 - 1.56112881223e-02 1.25396406703e-02 1.01663421573e-02 8.38500711079e-03 7.10160482063e-03 6.23916674188e-03 - 5.74257125314e-03 5.58034633768e-03 5.74257125314e-03 6.23916674188e-03 7.10160482063e-03 8.38500711079e-03 - 1.01663421573e-02 1.25396406703e-02 1.56112881223e-02 1.94921954522e-02 2.42781130820e-02 3.00149219248e-02 - 3.66568505349e-02 4.40291518527e-02 5.18034033720e-02 5.94941697642e-02 6.64898780493e-02 7.21264918488e-02 - 7.57970302390e-02 7.70723261920e-02 7.57970302390e-02 7.21264918488e-02 6.64898780493e-02 5.94941697642e-02 - 4.40291518527e-02 3.70689589239e-02 3.06330408871e-02 2.49511167951e-02 2.01220876747e-02 1.61434902729e-02 - 1.29494247541e-02 1.04460621935e-02 8.53524112695e-03 7.12561826537e-03 6.13840739734e-03 5.51272438194e-03 - 5.20914423543e-03 5.20914423543e-03 5.51272438194e-03 6.13840739734e-03 7.12561826537e-03 8.53524112695e-03 - 1.04460621935e-02 1.29494247541e-02 1.61434902729e-02 2.01220876747e-02 2.49511167951e-02 3.06330408871e-02 - 3.70689589239e-02 4.40291518527e-02 5.11403130173e-02 5.78981879671e-02 6.37149803432e-02 6.80033074139e-02 - 7.02831021338e-02 7.02831021338e-02 6.80033074139e-02 6.37149803432e-02 5.78981879671e-02 5.11403130173e-02 - 3.66568505349e-02 3.06330408871e-02 2.51823253991e-02 2.04512222766e-02 1.64818809732e-02 1.32437842255e-02 - 1.06671499136e-02 8.66817035987e-03 7.16308508658e-03 6.07562992209e-03 5.34296096392e-03 4.92029966810e-03 - 4.78210810048e-03 4.92029966810e-03 5.34296096392e-03 6.07562992209e-03 7.16308508658e-03 8.66817035987e-03 - 1.06671499136e-02 1.32437842255e-02 1.64818809732e-02 2.04512222766e-02 2.51823253991e-02 3.06330408871e-02 - 3.66568505349e-02 4.29832635915e-02 4.92182336225e-02 5.48714786192e-02 5.94150808572e-02 6.23688231248e-02 - 6.33941825467e-02 6.23688231248e-02 5.94150808572e-02 5.48714786192e-02 4.92182336225e-02 4.29832635915e-02 - 3.00149219248e-02 2.49511167951e-02 2.04512222766e-02 1.65980023724e-02 1.33976732300e-02 1.08088949298e-02 - 8.76725594498e-03 7.20097316500e-03 6.04016501968e-03 5.22371135458e-03 4.70458873539e-03 4.45230019628e-03 - 4.45230019628e-03 4.70458873539e-03 5.22371135458e-03 6.04016501968e-03 7.20097316500e-03 8.76725594498e-03 - 1.08088949298e-02 1.33976732300e-02 1.65980023724e-02 2.04512222766e-02 2.49511167951e-02 3.00149219248e-02 - 3.54595415232e-02 4.09927131873e-02 4.62258246981e-02 5.07121410456e-02 5.40097122002e-02 5.57595749637e-02 - 5.57595749637e-02 5.40097122002e-02 5.07121410456e-02 4.62258246981e-02 4.09927131873e-02 3.54595415232e-02 - 2.42781130820e-02 2.01220876747e-02 1.64818809732e-02 1.33976732300e-02 1.08577130860e-02 8.82009872524e-03 - 7.22847713667e-03 6.02253909249e-03 5.14599535674e-03 4.55262020357e-03 4.20942844716e-03 4.09713024865e-03 - 4.20942844716e-03 4.55262020357e-03 5.14599535674e-03 6.02253909249e-03 7.22847713667e-03 8.82009872524e-03 - 1.08577130860e-02 1.33976732300e-02 1.64818809732e-02 2.01220876747e-02 2.42781130820e-02 2.88348357920e-02 - 3.35871770820e-02 3.82415861113e-02 4.24386109393e-02 4.57968161948e-02 4.79731106469e-02 4.87273692032e-02 - 4.79731106469e-02 4.57968161948e-02 4.24386109393e-02 3.82415861113e-02 3.35871770820e-02 2.88348357920e-02 - 1.94921954522e-02 1.61434902729e-02 1.32437842255e-02 1.08088949298e-02 8.82009872524e-03 7.23847314555e-03 - 6.01563766373e-03 5.10253249618e-03 4.45623663297e-03 4.04374575730e-03 3.84302280796e-03 3.84302280796e-03 - 4.04374575730e-03 4.45623663297e-03 5.10253249618e-03 6.01563766373e-03 7.23847314555e-03 8.82009872524e-03 - 1.08088949298e-02 1.32437842255e-02 1.61434902729e-02 1.94921954522e-02 2.32217587400e-02 2.71955666447e-02 - 3.12022017908e-02 3.49654910486e-02 3.81729635435e-02 4.05199675384e-02 4.17618689283e-02 4.17618689283e-02 - 4.05199675384e-02 3.81729635435e-02 3.49654910486e-02 3.12022017908e-02 2.71955666447e-02 2.32217587400e-02 - 1.56112881223e-02 1.29494247541e-02 1.06671499136e-02 8.76725594498e-03 7.22847713667e-03 6.01563766373e-03 - 5.08859106656e-03 4.40955813989e-03 3.94752033538e-03 3.67971968314e-03 3.59206217435e-03 3.67971968314e-03 - 3.94752033538e-03 4.40955813989e-03 5.08859106656e-03 6.01563766373e-03 7.22847713667e-03 8.76725594498e-03 - 1.06671499136e-02 1.29494247541e-02 1.56112881223e-02 1.86137801375e-02 2.18687619531e-02 2.52298202509e-02 - 2.84935612207e-02 3.14154606035e-02 3.37399765679e-02 3.52402742752e-02 3.57591480990e-02 3.52402742752e-02 - 3.37399765679e-02 3.14154606035e-02 2.84935612207e-02 2.52298202509e-02 2.18687619531e-02 1.86137801375e-02 - 1.25396406703e-02 1.04460621935e-02 8.66817035987e-03 7.20097316500e-03 6.02253909249e-03 5.10253249618e-03 - 4.40955813989e-03 3.91597292758e-03 3.59990872378e-03 3.44594928533e-03 3.44594928533e-03 3.59990872378e-03 - 3.91597292758e-03 4.40955813989e-03 5.10253249618e-03 6.02253909249e-03 7.20097316500e-03 8.66817035987e-03 - 1.04460621935e-02 1.25396406703e-02 1.49279448733e-02 1.75547637226e-02 2.03206914317e-02 2.30804654510e-02 - 2.56499234494e-02 2.78244998346e-02 2.94074293899e-02 3.02423286704e-02 3.02423286704e-02 2.94074293899e-02 - 2.78244998346e-02 2.56499234494e-02 2.30804654510e-02 2.03206914317e-02 1.75547637226e-02 1.49279448733e-02 - 1.01663421573e-02 8.53524112695e-03 7.16308508658e-03 6.04016501968e-03 5.14599535674e-03 4.45623663297e-03 - 3.94752033538e-03 3.59990872378e-03 3.39799742507e-03 3.33184951460e-03 3.39799742507e-03 3.59990872378e-03 - 3.94752033538e-03 4.45623663297e-03 5.14599535674e-03 6.04016501968e-03 7.16308508658e-03 8.53524112695e-03 - 1.01663421573e-02 1.20475550421e-02 1.41440793855e-02 1.63890080671e-02 1.86800926235e-02 2.08820531014e-02 - 2.28368095394e-02 2.43819637041e-02 2.53749373622e-02 2.57176061925e-02 2.53749373622e-02 2.43819637041e-02 - 2.28368095394e-02 2.08820531014e-02 1.86800926235e-02 1.63890080671e-02 1.41440793855e-02 1.20475550421e-02 - 8.38500711079e-03 7.12561826537e-03 6.07562992209e-03 5.22371135458e-03 4.55262020357e-03 4.04374575730e-03 - 3.67971968314e-03 3.44594928533e-03 3.33184951460e-03 3.33184951460e-03 3.44594928533e-03 3.67971968314e-03 - 4.04374575730e-03 4.55262020357e-03 5.22371135458e-03 6.07562992209e-03 7.12561826537e-03 8.38500711079e-03 - 9.85294674885e-03 1.15097880648e-02 1.33116675302e-02 1.51874137660e-02 1.70389543521e-02 1.87467470027e-02 - 2.01812628043e-02 2.12198093897e-02 2.17657781241e-02 2.17657781241e-02 2.12198093897e-02 2.01812628043e-02 - 1.87467470027e-02 1.70389543521e-02 1.51874137660e-02 1.33116675302e-02 1.15097880648e-02 9.85294674885e-03 - 7.10160482063e-03 6.13840739734e-03 5.34296096392e-03 4.70458873539e-03 4.20942844716e-03 3.84302280796e-03 - 3.59206217435e-03 3.44594928533e-03 3.39799742507e-03 3.44594928533e-03 3.59206217435e-03 3.84302280796e-03 - 4.20942844716e-03 4.70458873539e-03 5.34296096392e-03 6.13840739734e-03 7.10160482063e-03 8.23585736203e-03 - 9.53173661310e-03 1.09620544703e-02 1.24785638223e-02 1.40112393540e-02 1.54709928045e-02 1.67567114426e-02 - 1.77666865554e-02 1.84129279741e-02 1.86354478304e-02 1.84129279741e-02 1.77666865554e-02 1.67567114426e-02 - 1.54709928045e-02 1.40112393540e-02 1.24785638223e-02 1.09620544703e-02 9.53173661310e-03 8.23585736203e-03 - 6.23916674188e-03 5.51272438194e-03 4.92029966810e-03 4.45230019628e-03 4.09713024865e-03 3.84302280796e-03 - 3.67971968314e-03 3.59990872378e-03 3.59990872378e-03 3.67971968314e-03 3.84302280796e-03 4.09713024865e-03 - 4.45230019628e-03 4.92029966810e-03 5.51272438194e-03 6.23916674188e-03 7.10459522193e-03 8.10563303358e-03 - 9.22648243576e-03 1.04356792319e-02 1.16845233837e-02 1.29079014387e-02 1.40283418589e-02 1.49636867906e-02 - 1.56375665721e-02 1.59907282434e-02 1.59907282434e-02 1.56375665721e-02 1.49636867906e-02 1.40283418589e-02 - 1.29079014387e-02 1.16845233837e-02 1.04356792319e-02 9.22648243576e-03 8.10563303358e-03 7.10459522193e-03 - 5.74257125314e-03 5.20914423543e-03 4.78210810048e-03 4.45230019628e-03 4.20942844716e-03 4.04374575730e-03 - 3.94752033538e-03 3.91597292758e-03 3.94752033538e-03 4.04374575730e-03 4.20942844716e-03 4.45230019628e-03 - 4.78210810048e-03 5.20914423543e-03 5.74257125314e-03 6.38840491477e-03 7.14689010595e-03 8.00955236461e-03 - 8.95658363692e-03 9.95507847617e-03 1.09586567104e-02 1.19093466628e-02 1.27424344623e-02 1.33939588194e-02 - 1.38094745262e-02 1.39522993746e-02 1.38094745262e-02 1.33939588194e-02 1.27424344623e-02 1.19093466628e-02 - 1.09586567104e-02 9.95507847617e-03 8.95658363692e-03 8.00955236461e-03 7.14689010595e-03 6.38840491477e-03 - 5.58034633768e-03 5.20914423543e-03 4.92029966810e-03 4.70458873539e-03 4.55262020357e-03 4.45623663297e-03 - 4.40955813989e-03 4.40955813989e-03 4.45623663297e-03 4.55262020357e-03 4.70458873539e-03 4.92029966810e-03 - 5.20914423543e-03 5.58034633768e-03 6.04118457084e-03 6.59479473082e-03 7.23785699764e-03 7.95863052826e-03 - 8.73551184506e-03 9.53627070961e-03 1.03186231402e-02 1.10330000246e-02 1.16276251073e-02 1.20550163598e-02 - 1.22786655737e-02 1.22786655737e-02 1.20550163598e-02 1.16276251073e-02 1.10330000246e-02 1.03186231402e-02 - 9.53627070961e-03 8.73551184506e-03 7.95863052826e-03 7.23785699764e-03 6.59479473082e-03 6.04118457084e-03 - 5.74257125314e-03 5.51272438194e-03 5.34296096392e-03 5.22371135458e-03 5.14599535674e-03 5.10253249618e-03 - 5.08859106656e-03 5.10253249618e-03 5.14599535674e-03 5.22371135458e-03 5.34296096392e-03 5.51272438194e-03 - 5.74257125314e-03 6.04118457084e-03 6.41444748147e-03 6.86339437793e-03 7.38252390656e-03 7.95863052826e-03 - 8.57007132232e-03 9.18679124184e-03 9.77183223433e-03 1.02846446979e-02 1.06856809758e-02 1.09414577715e-02 - 1.10293847869e-02 1.09414577715e-02 1.06856809758e-02 1.02846446979e-02 9.77183223433e-03 9.18679124184e-03 - 8.57007132232e-03 7.95863052826e-03 7.38252390656e-03 6.86339437793e-03 6.41444748147e-03 6.04118457084e-03 - 6.23916674188e-03 6.13840739734e-03 6.07562992209e-03 6.04016501968e-03 6.02253909249e-03 6.01563766373e-03 - 6.01563766373e-03 6.02253909249e-03 6.04016501968e-03 6.07562992209e-03 6.13840739734e-03 6.23916674188e-03 - 6.38840491477e-03 6.59479473082e-03 6.86339437793e-03 7.19410390186e-03 7.58058258839e-03 8.00955236461e-03 - 8.46060891145e-03 8.90705726329e-03 9.31810768724e-03 9.66211927865e-03 9.91029781221e-03 1.00404664762e-02 - 1.00404664762e-02 9.91029781221e-03 9.66211927865e-03 9.31810768724e-03 8.90705726329e-03 8.46060891145e-03 - 8.00955236461e-03 7.58058258839e-03 7.19410390186e-03 6.86339437793e-03 6.59479473082e-03 6.38840491477e-03 - 7.10160482063e-03 7.12561826537e-03 7.16308508658e-03 7.20097316500e-03 7.22847713667e-03 7.23847314555e-03 - 7.22847713667e-03 7.20097316500e-03 7.16308508658e-03 7.12561826537e-03 7.10160482063e-03 7.10459522193e-03 - 7.14689010595e-03 7.23785699764e-03 7.38252390656e-03 7.58058258839e-03 7.82576853226e-03 8.10563303358e-03 - 8.40200942373e-03 8.69246386814e-03 8.95261635749e-03 9.15892896774e-03 9.29162040305e-03 9.33741418467e-03 - 9.29162040305e-03 9.15892896774e-03 8.95261635749e-03 8.69246386814e-03 8.40200942373e-03 8.10563303358e-03 - 7.82576853226e-03 7.58058258839e-03 7.38252390656e-03 7.23785699764e-03 7.14689010595e-03 7.10459522193e-03 - 8.38500711079e-03 8.53524112695e-03 8.66817035987e-03 8.76725594498e-03 8.82009872524e-03 8.82009872524e-03 - 8.76725594498e-03 8.66817035987e-03 8.53524112695e-03 8.38500711079e-03 8.23585736203e-03 8.10563303358e-03 - 8.00955236461e-03 7.95863052826e-03 7.95863052826e-03 8.00955236461e-03 8.10563303358e-03 8.23585736203e-03 - 8.38500711079e-03 8.53524112695e-03 8.66817035987e-03 8.76725594498e-03 8.82009872524e-03 8.82009872524e-03 - 8.76725594498e-03 8.66817035987e-03 8.53524112695e-03 8.38500711079e-03 8.23585736203e-03 8.10563303358e-03 - 8.00955236461e-03 7.95863052826e-03 7.95863052827e-03 8.00955236461e-03 8.10563303358e-03 8.23585736203e-03 - 1.01663421573e-02 1.04460621935e-02 1.06671499136e-02 1.08088949298e-02 1.08577130860e-02 1.08088949298e-02 - 1.06671499136e-02 1.04460621935e-02 1.01663421573e-02 9.85294674885e-03 9.53173661310e-03 9.22648243576e-03 - 8.95658363692e-03 8.73551184506e-03 8.57007132232e-03 8.46060891145e-03 8.40200942373e-03 8.38500711079e-03 - 8.39746782805e-03 8.42580807925e-03 8.45686847188e-03 8.47998103933e-03 8.48843476768e-03 8.47998103933e-03 - 8.45686847188e-03 8.42580807925e-03 8.39746782805e-03 8.38500711079e-03 8.40200942373e-03 8.46060891145e-03 - 8.57007132232e-03 8.73551184506e-03 8.95658363692e-03 9.22648243576e-03 9.53173661310e-03 9.85294674885e-03 - 1.25396406703e-02 1.29494247541e-02 1.32437842255e-02 1.33976732300e-02 1.33976732300e-02 1.32437842255e-02 - 1.29494247541e-02 1.25396406703e-02 1.20475550421e-02 1.15097880648e-02 1.09620544703e-02 1.04356792319e-02 - 9.95507847617e-03 9.53627070961e-03 9.18679124184e-03 8.90705726329e-03 8.69246386814e-03 8.53524112695e-03 - 8.42580807925e-03 8.35413904759e-03 8.31144312544e-03 8.29158854156e-03 8.29158854156e-03 8.31144312544e-03 - 8.35413904759e-03 8.42580807925e-03 8.53524112695e-03 8.69246386814e-03 8.90705726329e-03 9.18679124184e-03 - 9.53627070961e-03 9.95507847617e-03 1.04356792319e-02 1.09620544703e-02 1.15097880648e-02 1.20475550421e-02 - 1.56112881223e-02 1.61434902729e-02 1.64818809732e-02 1.65980023724e-02 1.64818809732e-02 1.61434902729e-02 - 1.56112881223e-02 1.49279448733e-02 1.41440793855e-02 1.33116675302e-02 1.24785638223e-02 1.16845233837e-02 - 1.09586567104e-02 1.03186231402e-02 9.77183223433e-03 9.31810768724e-03 8.95261635749e-03 8.66817035987e-03 - 8.45686847188e-03 8.31144312544e-03 8.22635918544e-03 8.19834740781e-03 8.22635918544e-03 8.31144312544e-03 - 8.45686847188e-03 8.66817035987e-03 8.95261635749e-03 9.31810768724e-03 9.77183223433e-03 1.03186231402e-02 - 1.09586567104e-02 1.16845233837e-02 1.24785638223e-02 1.33116675302e-02 1.41440793855e-02 1.49279448733e-02 - 1.94921954522e-02 2.01220876747e-02 2.04512222766e-02 2.04512222766e-02 2.01220876747e-02 1.94921954522e-02 - 1.86137801375e-02 1.75547637226e-02 1.63890080671e-02 1.51874137660e-02 1.40112393540e-02 1.29079014387e-02 - 1.19093466628e-02 1.10330000246e-02 1.02846446979e-02 9.66211927865e-03 9.15892896774e-03 8.76725594498e-03 - 8.47998103933e-03 8.29158854156e-03 8.19834740781e-03 8.19834740781e-03 8.29158854156e-03 8.47998103933e-03 - 8.76725594498e-03 9.15892896774e-03 9.66211927865e-03 1.02846446979e-02 1.10330000246e-02 1.19093466628e-02 - 1.29079014387e-02 1.40112393540e-02 1.51874137660e-02 1.63890080671e-02 1.75547637226e-02 1.86137801375e-02 - 2.42781130820e-02 2.49511167951e-02 2.51823253991e-02 2.49511167951e-02 2.42781130820e-02 2.32217587400e-02 - 2.18687619531e-02 2.03206914317e-02 1.86800926235e-02 1.70389543521e-02 1.54709928045e-02 1.40283418589e-02 - 1.27424344623e-02 1.16276251073e-02 1.06856809758e-02 9.91029781221e-03 9.29162040305e-03 8.82009872524e-03 - 8.48843476768e-03 8.29158854156e-03 8.22635918544e-03 8.29158854156e-03 8.48843476768e-03 8.82009872524e-03 - 9.29162040305e-03 9.91029781221e-03 1.06856809758e-02 1.16276251073e-02 1.27424344623e-02 1.40283418589e-02 - 1.54709928045e-02 1.70389543521e-02 1.86800926235e-02 2.03206914317e-02 2.18687619531e-02 2.32217587400e-02 - 3.00149219248e-02 3.06330408871e-02 3.06330408871e-02 3.00149219248e-02 2.88348357920e-02 2.71955666447e-02 - 2.52298202509e-02 2.30804654510e-02 2.08820531014e-02 1.87467470027e-02 1.67567114426e-02 1.49636867906e-02 - 1.33939588194e-02 1.20550163598e-02 1.09414577715e-02 1.00404664762e-02 9.33741418467e-03 8.82009872524e-03 - 8.47998103933e-03 8.31144312544e-03 8.31144312544e-03 8.47998103933e-03 8.82009872524e-03 9.33741418467e-03 - 1.00404664762e-02 1.09414577715e-02 1.20550163598e-02 1.33939588194e-02 1.49636867906e-02 1.67567114426e-02 - 1.87467470027e-02 2.08820531014e-02 2.30804654510e-02 2.52298202509e-02 2.71955666447e-02 2.88348357920e-02 - 3.66568505349e-02 3.70689589239e-02 3.66568505349e-02 3.54595415232e-02 3.35871770820e-02 3.12022017908e-02 - 2.84935612207e-02 2.56499234494e-02 2.28368095394e-02 2.01812628043e-02 1.77666865554e-02 1.56375665721e-02 - 1.38094745262e-02 1.22786655737e-02 1.10293847869e-02 1.00404664762e-02 9.29162040305e-03 8.76725594498e-03 - 8.45686847188e-03 8.35413904759e-03 8.45686847188e-03 8.76725594498e-03 9.29162040305e-03 1.00404664762e-02 - 1.10293847869e-02 1.22786655737e-02 1.38094745262e-02 1.56375665721e-02 1.77666865554e-02 2.01812628043e-02 - 2.28368095394e-02 2.56499234494e-02 2.84935612207e-02 3.12022017908e-02 3.35871770820e-02 3.54595415232e-02 - 4.40291518527e-02 4.40291518527e-02 4.29832635915e-02 4.09927131873e-02 3.82415861113e-02 3.49654910486e-02 - 3.14154606035e-02 2.78244998346e-02 2.43819637041e-02 2.12198093897e-02 1.84129279741e-02 1.59907282434e-02 - 1.39522993746e-02 1.22786655737e-02 1.09414577715e-02 9.91029781221e-03 9.15892896774e-03 8.66817035987e-03 - 8.42580807925e-03 8.42580807925e-03 8.66817035987e-03 9.15892896774e-03 9.91029781221e-03 1.09414577715e-02 - 1.22786655737e-02 1.39522993746e-02 1.59907282434e-02 1.84129279741e-02 2.12198093897e-02 2.43819637041e-02 - 2.78244998346e-02 3.14154606035e-02 3.49654910486e-02 3.82415861113e-02 4.09927131873e-02 4.29832635915e-02 - 5.18034033720e-02 5.11403130173e-02 4.92182336225e-02 4.62258246981e-02 4.24386109393e-02 3.81729635435e-02 - 3.37399765679e-02 2.94074293899e-02 2.53749373622e-02 2.17657781241e-02 1.86354478304e-02 1.59907282434e-02 - 1.38094745262e-02 1.20550163598e-02 1.06856809758e-02 9.66211927865e-03 8.95261635749e-03 8.53524112695e-03 - 8.39746782805e-03 8.53524112695e-03 8.95261635749e-03 9.66211927865e-03 1.06856809758e-02 1.20550163598e-02 - 1.38094745262e-02 1.59907282434e-02 1.86354478304e-02 2.17657781241e-02 2.53749373622e-02 2.94074293899e-02 - 3.37399765679e-02 3.81729635435e-02 4.24386109393e-02 4.62258246981e-02 4.92182336225e-02 5.11403130173e-02 - 5.94941697642e-02 5.78981879671e-02 5.48714786192e-02 5.07121410456e-02 4.57968161948e-02 4.05199675384e-02 - 3.52402742752e-02 3.02423286704e-02 2.57176061925e-02 2.17657781241e-02 1.84129279741e-02 1.56375665721e-02 - 1.33939588194e-02 1.16276251073e-02 1.02846446979e-02 9.31810768724e-03 8.69246386814e-03 8.38500711079e-03 - 8.38500711079e-03 8.69246386814e-03 9.31810768724e-03 1.02846446979e-02 1.16276251073e-02 1.33939588194e-02 - 1.56375665721e-02 1.84129279741e-02 2.17657781241e-02 2.57176061925e-02 3.02423286704e-02 3.52402742752e-02 - 4.05199675384e-02 4.57968161948e-02 5.07121410456e-02 5.48714786192e-02 5.78981879671e-02 5.94941697642e-02 - 6.64898780493e-02 6.37149803432e-02 5.94150808572e-02 5.40097122002e-02 4.79731106469e-02 4.17618689283e-02 - 3.57591480990e-02 3.02423286704e-02 2.53749373622e-02 2.12198093897e-02 1.77666865554e-02 1.49636867906e-02 - 1.27424344623e-02 1.10330000246e-02 9.77183223433e-03 8.90705726329e-03 8.40200942373e-03 8.23585736203e-03 - 8.40200942373e-03 8.90705726329e-03 9.77183223433e-03 1.10330000246e-02 1.27424344623e-02 1.49636867906e-02 - 1.77666865554e-02 2.12198093897e-02 2.53749373622e-02 3.02423286704e-02 3.57591480990e-02 4.17618689283e-02 - 4.79731106469e-02 5.40097122002e-02 5.94150808572e-02 6.37149803432e-02 6.64898780493e-02 6.74494907981e-02 - 7.21264918488e-02 6.80033074139e-02 6.23688231248e-02 5.57595749637e-02 4.87273692032e-02 4.17618689283e-02 - 3.52402742752e-02 2.94074293899e-02 2.43819637041e-02 2.01812628043e-02 1.67567114426e-02 1.40283418589e-02 - 1.19093466628e-02 1.03186231402e-02 9.18679124184e-03 8.46060891145e-03 8.10563303358e-03 8.10563303358e-03 - 8.46060891145e-03 9.18679124184e-03 1.03186231402e-02 1.19093466628e-02 1.40283418589e-02 1.67567114426e-02 - 2.01812628043e-02 2.43819637041e-02 2.94074293899e-02 3.52402742752e-02 4.17618689283e-02 4.87273692032e-02 - 5.57595749637e-02 6.23688231248e-02 6.80033074139e-02 7.21264918488e-02 7.43082663472e-02 7.43082663472e-02 - 7.57970302390e-02 7.02831021338e-02 6.33941825467e-02 5.57595749637e-02 4.79731106469e-02 4.05199675384e-02 - 3.37399765679e-02 2.78244998346e-02 2.28368095394e-02 1.87467470027e-02 1.54709928045e-02 1.29079014387e-02 - 1.09586567104e-02 9.53627070961e-03 8.57007132232e-03 8.00955236461e-03 7.82576853226e-03 8.00955236461e-03 - 8.57007132232e-03 9.53627070961e-03 1.09586567104e-02 1.29079014387e-02 1.54709928045e-02 1.87467470027e-02 - 2.28368095394e-02 2.78244998346e-02 3.37399765679e-02 4.05199675384e-02 4.79731106469e-02 5.57595749637e-02 - 6.33941825467e-02 7.02831021338e-02 7.57970302390e-02 7.93709590427e-02 8.06097207709e-02 7.93709590427e-02 - 7.70723261920e-02 7.02831021338e-02 6.23688231248e-02 5.40097122002e-02 4.57968161948e-02 3.81729635435e-02 - 3.14154606035e-02 2.56499234494e-02 2.08820531014e-02 1.70389543521e-02 1.40112393540e-02 1.16845233837e-02 - 9.95507847617e-03 8.73551184506e-03 7.95863052826e-03 7.58058258839e-03 7.58058258839e-03 7.95863052826e-03 - 8.73551184506e-03 9.95507847617e-03 1.16845233837e-02 1.40112393540e-02 1.70389543521e-02 2.08820531014e-02 - 2.56499234494e-02 3.14154606035e-02 3.81729635435e-02 4.57968161948e-02 5.40097122002e-02 6.23688231248e-02 - 7.02831021338e-02 7.70723261920e-02 8.20645507484e-02 8.47143937707e-02 8.47143937707e-02 8.20645507484e-02 - 7.57970302390e-02 6.80033074139e-02 5.94150808572e-02 5.07121410456e-02 4.24386109393e-02 3.49654910486e-02 - 2.84935612207e-02 2.30804654510e-02 1.86800926235e-02 1.51874137660e-02 1.24785638223e-02 1.04356792319e-02 - 8.95658363692e-03 7.95863052826e-03 7.38252390656e-03 7.19410390186e-03 7.38252390656e-03 7.95863052826e-03 - 8.95658363692e-03 1.04356792319e-02 1.24785638223e-02 1.51874137660e-02 1.86800926235e-02 2.30804654510e-02 - 2.84935612207e-02 3.49654910486e-02 4.24386109393e-02 5.07121410456e-02 5.94150808572e-02 6.80033074139e-02 - 7.57970302390e-02 8.20645507484e-02 8.61408122915e-02 8.75562567048e-02 8.61408122915e-02 8.20645507484e-02 - 7.21264918488e-02 6.37149803432e-02 5.48714786192e-02 4.62258246981e-02 3.82415861113e-02 3.12022017908e-02 - 2.52298202509e-02 2.03206914317e-02 1.63890080671e-02 1.33116675302e-02 1.09620544703e-02 9.22648243576e-03 - 8.00955236461e-03 7.23785699764e-03 6.86339437793e-03 6.86339437793e-03 7.23785699764e-03 8.00955236461e-03 - 9.22648243576e-03 1.09620544703e-02 1.33116675302e-02 1.63890080671e-02 2.03206914317e-02 2.52298202509e-02 - 3.12022017908e-02 3.82415861113e-02 4.62258246981e-02 5.48714786192e-02 6.37149803432e-02 7.21264918488e-02 - 7.93709590427e-02 8.47143937707e-02 8.75562567048e-02 8.75562567048e-02 8.47143937707e-02 7.93709590427e-02 - 6.64898780493e-02 5.78981879671e-02 4.92182336225e-02 4.09927131873e-02 3.35871770820e-02 2.71955666447e-02 - 2.18687619531e-02 1.75547637226e-02 1.41440793855e-02 1.15097880648e-02 9.53173661310e-03 8.10563303358e-03 - 7.14689010595e-03 6.59479473082e-03 6.41444748147e-03 6.59479473082e-03 7.14689010595e-03 8.10563303358e-03 - 9.53173661310e-03 1.15097880648e-02 1.41440793855e-02 1.75547637226e-02 2.18687619531e-02 2.71955666447e-02 - 3.35871770820e-02 4.09927131873e-02 4.92182336225e-02 5.78981879671e-02 6.64898780493e-02 7.43082663472e-02 - 8.06097207709e-02 8.47143937707e-02 8.61408122915e-02 8.47143937707e-02 8.06097207709e-02 7.43082663472e-02 - 5.94941697642e-02 5.11403130173e-02 4.29832635915e-02 3.54595415232e-02 2.88348357920e-02 2.32217587400e-02 - 1.86137801375e-02 1.49279448733e-02 1.20475550421e-02 9.85294674885e-03 8.23585736203e-03 7.10459522193e-03 - 6.38840491477e-03 6.04118457084e-03 6.04118457084e-03 6.38840491477e-03 7.10459522193e-03 8.23585736203e-03 - 9.85294674885e-03 1.20475550421e-02 1.49279448733e-02 1.86137801375e-02 2.32217587400e-02 2.88348357920e-02 - 3.54595415232e-02 4.29832635915e-02 5.11403130173e-02 5.94941697642e-02 6.74494907981e-02 7.43082663472e-02 - 7.93709590427e-02 8.20645507484e-02 8.20645507484e-02 7.93709590427e-02 7.43082663472e-02 6.74494907981e-02 - 4.57409612273e-02 3.83718132369e-02 3.16041856284e-02 2.56657154446e-02 2.06439962171e-02 1.65234811342e-02 - 1.32272933414e-02 1.06524671204e-02 8.69246386814e-03 7.24904282964e-03 6.23916674188e-03 5.59978938003e-03 - 5.28994524639e-03 5.28994524639e-03 5.59978938003e-03 6.23916674188e-03 7.24904282964e-03 8.69246386814e-03 - 1.06524671204e-02 1.32272933414e-02 1.65234811342e-02 2.06439962171e-02 2.56657154446e-02 3.16041856284e-02 - 3.83718132369e-02 4.57409612273e-02 5.33236907840e-02 6.05796981280e-02 6.68641206041e-02 7.15201290633e-02 - 7.40032629540e-02 7.40032629540e-02 7.15201290633e-02 6.68641206041e-02 6.05796981280e-02 5.33236907840e-02 - 3.83718132369e-02 3.19731919657e-02 2.62153172241e-02 2.12413612776e-02 1.70848695603e-02 1.37059602390e-02 - 1.10259974674e-02 8.95261635749e-03 7.39443450458e-03 6.26978037715e-03 5.51272438194e-03 5.07652462266e-03 - 4.93405372394e-03 5.07652462266e-03 5.51272438194e-03 6.26978037715e-03 7.39443450458e-03 8.95261635749e-03 - 1.10259974674e-02 1.37059602390e-02 1.70848695603e-02 2.12413612776e-02 2.62153172241e-02 3.19731919657e-02 - 3.83718132369e-02 4.51323632879e-02 5.18355302331e-02 5.79474348197e-02 6.28828729732e-02 6.61022866145e-02 - 6.72218662363e-02 6.61022866145e-02 6.28828729732e-02 5.79474348197e-02 5.18355302331e-02 4.51323632879e-02 - 3.16041856284e-02 2.62153172241e-02 2.14468462049e-02 1.73786828448e-02 1.40109856905e-02 1.12951380995e-02 - 9.15892896774e-03 7.52314503521e-03 6.31209415558e-03 5.46093720174e-03 4.92029966810e-03 4.65785937656e-03 - 4.65785937656e-03 4.92029966810e-03 5.46093720174e-03 6.31209415558e-03 7.52314503521e-03 9.15892896774e-03 - 1.12951380995e-02 1.40109856905e-02 1.73786828448e-02 2.14468462049e-02 2.62153172241e-02 3.16041856284e-02 - 3.74259862301e-02 4.33721592307e-02 4.90231496620e-02 5.38883507401e-02 5.74762428735e-02 5.93841418824e-02 - 5.93841418824e-02 5.74762428735e-02 5.38883507401e-02 4.90231496620e-02 4.33721592307e-02 3.74259862301e-02 - 2.56657154446e-02 2.12413612776e-02 1.73786828448e-02 1.41157952825e-02 1.14361707830e-02 9.29162040305e-03 - 7.61927184895e-03 6.35335851926e-03 5.43377044817e-03 4.81172327806e-03 4.45230019628e-03 4.33477840900e-03 - 4.45230019628e-03 4.81172327806e-03 5.43377044817e-03 6.35335851926e-03 7.61927184895e-03 9.29162040305e-03 - 1.14361707830e-02 1.41157952825e-02 1.73786828448e-02 2.12413612776e-02 2.56657154446e-02 3.05340710560e-02 - 3.56312088557e-02 4.06430475235e-02 4.51788789706e-02 4.88190878681e-02 5.11831265828e-02 5.20033431247e-02 - 5.11831265828e-02 4.88190878681e-02 4.51788789706e-02 4.06430475235e-02 3.56312088557e-02 3.05340710560e-02 - 2.06439962171e-02 1.70848695603e-02 1.40109856905e-02 1.14361707830e-02 9.33741418467e-03 7.67065297497e-03 - 6.38291972351e-03 5.42174879265e-03 4.74176747355e-03 4.30805835198e-03 4.09713024865e-03 4.09713024865e-03 - 4.30805835198e-03 4.74176747355e-03 5.42174879265e-03 6.38291972351e-03 7.67065297497e-03 9.33741418467e-03 - 1.14361707830e-02 1.40109856905e-02 1.70848695603e-02 2.06439962171e-02 2.46187421852e-02 2.88661050079e-02 - 3.31615306069e-02 3.72078996967e-02 4.06654278454e-02 4.32002938784e-02 4.45431970579e-02 4.45431970579e-02 - 4.32002938784e-02 4.06654278454e-02 3.72078996967e-02 3.31615306069e-02 2.88661050079e-02 2.46187421852e-02 - 1.65234811342e-02 1.37059602390e-02 1.12951380995e-02 9.29162040305e-03 7.67065297497e-03 6.39361872594e-03 - 5.41768978229e-03 4.70304044562e-03 4.21692866215e-03 3.93522801758e-03 3.84302280796e-03 3.93522801758e-03 - 4.21692866215e-03 4.70304044562e-03 5.41768978229e-03 6.39361872594e-03 7.67065297497e-03 9.29162040305e-03 - 1.12951380995e-02 1.37059602390e-02 1.65234811342e-02 1.97084075068e-02 2.31688478126e-02 2.67502344749e-02 - 3.02357338101e-02 3.33624200108e-02 3.58537824974e-02 3.74634706166e-02 3.80204685260e-02 3.74634706166e-02 - 3.58537824974e-02 3.33624200108e-02 3.02357338101e-02 2.67502344749e-02 2.31688478126e-02 1.97084075068e-02 - 1.32272933414e-02 1.10259974674e-02 9.15892896774e-03 7.61927184895e-03 6.38291972351e-03 5.41768978229e-03 - 4.69069423954e-03 4.17292027232e-03 3.84131375804e-03 3.67971968314e-03 3.67971968314e-03 3.84131375804e-03 - 4.17292027232e-03 4.69069423954e-03 5.41768978229e-03 6.38291972351e-03 7.61927184895e-03 9.15892896774e-03 - 1.10259974674e-02 1.32272933414e-02 1.57423428102e-02 1.85132658939e-02 2.14361295219e-02 2.43576039836e-02 - 2.70818268649e-02 2.93901320501e-02 3.10717223250e-02 3.19590319446e-02 3.19590319446e-02 3.10717223250e-02 - 2.93901320501e-02 2.70818268649e-02 2.43576039836e-02 2.14361295219e-02 1.85132658939e-02 1.57423428102e-02 - 1.06524671204e-02 8.95261635749e-03 7.52314503521e-03 6.35335851926e-03 5.42174879265e-03 4.70304044562e-03 - 4.17292027232e-03 3.81054695208e-03 3.59990872378e-03 3.53085792774e-03 3.59990872378e-03 3.81054695208e-03 - 4.17292027232e-03 4.70304044562e-03 5.42174879265e-03 6.35335851926e-03 7.52314503521e-03 8.95261635749e-03 - 1.06524671204e-02 1.26143883181e-02 1.48031251671e-02 1.71497889118e-02 1.95479913088e-02 2.18557815330e-02 - 2.39063871143e-02 2.55281844546e-02 2.65706573512e-02 2.69304328597e-02 2.65706573512e-02 2.55281844546e-02 - 2.39063871143e-02 2.18557815330e-02 1.95479913088e-02 1.71497889118e-02 1.48031251671e-02 1.26143883181e-02 - 8.69246386814e-03 7.39443450458e-03 6.31209415558e-03 5.43377044817e-03 4.74176747355e-03 4.21692866215e-03 - 3.84131375804e-03 3.59990872378e-03 3.48198055848e-03 3.48198055848e-03 3.59990872378e-03 3.84131375804e-03 - 4.21692866215e-03 4.74176747355e-03 5.43377044817e-03 6.31209415558e-03 7.39443450458e-03 8.69246386814e-03 - 1.02054916185e-02 1.19137265332e-02 1.37726366090e-02 1.57094271493e-02 1.76229803621e-02 1.93892705934e-02 - 2.08735527936e-02 2.19482820950e-02 2.25132701769e-02 2.25132701769e-02 2.19482820950e-02 2.08735527936e-02 - 1.93892705934e-02 1.76229803621e-02 1.57094271493e-02 1.37726366090e-02 1.19137265332e-02 1.02054916185e-02 - 7.24904282964e-03 6.26978037715e-03 5.46093720174e-03 4.81172327806e-03 4.30805835198e-03 3.93522801758e-03 - 3.67971968314e-03 3.53085792774e-03 3.48198055848e-03 3.53085792774e-03 3.67971968314e-03 3.93522801758e-03 - 4.30805835198e-03 4.81172327806e-03 5.46093720174e-03 6.26978037715e-03 7.24904282964e-03 8.40200942373e-03 - 9.71912104775e-03 1.11729588764e-02 1.27148275869e-02 1.42737851127e-02 1.57591868798e-02 1.70678712692e-02 - 1.80960146721e-02 1.87538902948e-02 1.89804120902e-02 1.87538902948e-02 1.80960146721e-02 1.70678712692e-02 - 1.57591868798e-02 1.42737851127e-02 1.27148275869e-02 1.11729588764e-02 9.71912104775e-03 8.40200942373e-03 - 6.23916674188e-03 5.51272438194e-03 4.92029966810e-03 4.45230019628e-03 4.09713024865e-03 3.84302280796e-03 - 3.67971968314e-03 3.59990872378e-03 3.59990872378e-03 3.67971968314e-03 3.84302280796e-03 4.09713024865e-03 - 4.45230019628e-03 4.92029966810e-03 5.51272438194e-03 6.23916674188e-03 7.10459522193e-03 8.10563303358e-03 - 9.22648243576e-03 1.04356792319e-02 1.16845233837e-02 1.29079014387e-02 1.40283418589e-02 1.49636867906e-02 - 1.56375665721e-02 1.59907282434e-02 1.59907282434e-02 1.56375665721e-02 1.49636867906e-02 1.40283418589e-02 - 1.29079014387e-02 1.16845233837e-02 1.04356792319e-02 9.22648243576e-03 8.10563303358e-03 7.10459522193e-03 - 5.59978938003e-03 5.07652462266e-03 4.65785937656e-03 4.33477840900e-03 4.09713024865e-03 3.93522801758e-03 - 3.84131375804e-03 3.81054695208e-03 3.84131375804e-03 3.93522801758e-03 4.09713024865e-03 4.33477840900e-03 - 4.65785937656e-03 5.07652462266e-03 5.59978938003e-03 6.23361812745e-03 6.97836085285e-03 7.82576853226e-03 - 8.75631776595e-03 9.73748464183e-03 1.07235056315e-02 1.16573532374e-02 1.24755048074e-02 1.31152359900e-02 - 1.35231772103e-02 1.36633879542e-02 1.35231772103e-02 1.31152359900e-02 1.24755048074e-02 1.16573532374e-02 - 1.07235056315e-02 9.73748464183e-03 8.75631776595e-03 7.82576853226e-03 6.97836085285e-03 6.23361812745e-03 - 5.28994524639e-03 4.93405372394e-03 4.65785937656e-03 4.45230019628e-03 4.30805835198e-03 4.21692866215e-03 - 4.17292027232e-03 4.17292027232e-03 4.21692866215e-03 4.30805835198e-03 4.45230019628e-03 4.65785937656e-03 - 4.93405372394e-03 5.28994524639e-03 5.73268604942e-03 6.26545793635e-03 6.88519888788e-03 7.58058258839e-03 - 8.33057919998e-03 9.10381322670e-03 9.85925299562e-03 1.05489279259e-02 1.11228159589e-02 1.15351431719e-02 - 1.17508350709e-02 1.17508350709e-02 1.15351431719e-02 1.11228159589e-02 1.05489279259e-02 9.85925299562e-03 - 9.10381322670e-03 8.33057919998e-03 7.58058258839e-03 6.88519888788e-03 6.26545793635e-03 5.73268604942e-03 - 5.28994524639e-03 5.07652462266e-03 4.92029966810e-03 4.81172327806e-03 4.74176747355e-03 4.70304044562e-03 - 4.69069423954e-03 4.70304044562e-03 4.74176747355e-03 4.81172327806e-03 4.92029966810e-03 5.07652462266e-03 - 5.28994524639e-03 5.56920678348e-03 5.92021996667e-03 6.34416762186e-03 6.83583874198e-03 7.38252390656e-03 - 7.96341795569e-03 8.54973346172e-03 9.10613117226e-03 9.59384043225e-03 9.97511028176e-03 1.02181471415e-02 - 1.03016601350e-02 1.02181471415e-02 9.97511028176e-03 9.59384043225e-03 9.10613117226e-03 8.54973346172e-03 - 7.96341795569e-03 7.38252390656e-03 6.83583874198e-03 6.34416762186e-03 5.92021996667e-03 5.56920678348e-03 - 5.59978938003e-03 5.51272438194e-03 5.46093720174e-03 5.43377044817e-03 5.42174879265e-03 5.41768978229e-03 - 5.41768978229e-03 5.42174879265e-03 5.43377044817e-03 5.46093720174e-03 5.51272438194e-03 5.59978938003e-03 - 5.73268604942e-03 5.92021996667e-03 6.16759269815e-03 6.47483593539e-03 6.83583874198e-03 7.23785699764e-03 - 7.66146344666e-03 8.08133005705e-03 8.46823559623e-03 8.79214216133e-03 9.02578945364e-03 9.14830218340e-03 - 9.14830218340e-03 9.02578945364e-03 8.79214216133e-03 8.46823559623e-03 8.08133005705e-03 7.66146344666e-03 - 7.23785699764e-03 6.83583874198e-03 6.47483593539e-03 6.16759269815e-03 5.92021996667e-03 5.73268604942e-03 - 6.23916674188e-03 6.26978037715e-03 6.31209415558e-03 6.35335851926e-03 6.38291972351e-03 6.39361872594e-03 - 6.38291972351e-03 6.35335851926e-03 6.31209415558e-03 6.26978037715e-03 6.23916674188e-03 6.23361812745e-03 - 6.26545793635e-03 6.34416762186e-03 6.47483593539e-03 6.65719946009e-03 6.88519888788e-03 7.14689010595e-03 - 7.42492384580e-03 7.69793885145e-03 7.94279014126e-03 8.13716815266e-03 8.26229038338e-03 8.30549434438e-03 - 8.26229038338e-03 8.13716815266e-03 7.94279014126e-03 7.69793885145e-03 7.42492384580e-03 7.14689010595e-03 - 6.88519888788e-03 6.65719946009e-03 6.47483593539e-03 6.34416762186e-03 6.26545793635e-03 6.23361812745e-03 - 7.24904282964e-03 7.39443450458e-03 7.52314503521e-03 7.61927184895e-03 7.67065297497e-03 7.67065297497e-03 - 7.61927184895e-03 7.52314503521e-03 7.39443450458e-03 7.24904282964e-03 7.10459522193e-03 6.97836085285e-03 - 6.88519888788e-03 6.83583874198e-03 6.83583874198e-03 6.88519888788e-03 6.97836085285e-03 7.10459522193e-03 - 7.24904282964e-03 7.39443450458e-03 7.52314503521e-03 7.61927184895e-03 7.67065297497e-03 7.67065297497e-03 - 7.61927184895e-03 7.52314503521e-03 7.39443450458e-03 7.24904282964e-03 7.10459522193e-03 6.97836085285e-03 - 6.88519888788e-03 6.83583874198e-03 6.83583874198e-03 6.88519888788e-03 6.97836085285e-03 7.10459522193e-03 - 8.69246386814e-03 8.95261635749e-03 9.15892896774e-03 9.29162040305e-03 9.33741418467e-03 9.29162040305e-03 - 9.15892896774e-03 8.95261635749e-03 8.69246386814e-03 8.40200942373e-03 8.10563303358e-03 7.82576853226e-03 - 7.58058258839e-03 7.38252390656e-03 7.23785699764e-03 7.14689010595e-03 7.10459522193e-03 7.10160482063e-03 - 7.12561826537e-03 7.16308508658e-03 7.20097316500e-03 7.22847713667e-03 7.23847314555e-03 7.22847713667e-03 - 7.20097316500e-03 7.16308508658e-03 7.12561826537e-03 7.10160482063e-03 7.10459522193e-03 7.14689010595e-03 - 7.23785699764e-03 7.38252390656e-03 7.58058258839e-03 7.82576853226e-03 8.10563303358e-03 8.40200942373e-03 - 1.06524671204e-02 1.10259974674e-02 1.12951380995e-02 1.14361707830e-02 1.14361707830e-02 1.12951380995e-02 - 1.10259974674e-02 1.06524671204e-02 1.02054916185e-02 9.71912104775e-03 9.22648243576e-03 8.75631776595e-03 - 8.33057919998e-03 7.96341795569e-03 7.66146344666e-03 7.42492384580e-03 7.24904282964e-03 7.12561826537e-03 - 7.04448483440e-03 6.99504538611e-03 6.96786738821e-03 6.95605972443e-03 6.95605972443e-03 6.96786738821e-03 - 6.99504538611e-03 7.04448483440e-03 7.12561826537e-03 7.24904282964e-03 7.42492384580e-03 7.66146344666e-03 - 7.96341795569e-03 8.33057919998e-03 8.75631776595e-03 9.22648243576e-03 9.71912104775e-03 1.02054916185e-02 - 1.32272933414e-02 1.37059602390e-02 1.40109856905e-02 1.41157952825e-02 1.40109856905e-02 1.37059602390e-02 - 1.32272933414e-02 1.26143883181e-02 1.19137265332e-02 1.11729588764e-02 1.04356792319e-02 9.73748464183e-03 - 9.10381322670e-03 8.54973346172e-03 8.08133005705e-03 7.69793885145e-03 7.39443450458e-03 7.16308508658e-03 - 6.99504538611e-03 6.88181758770e-03 6.81664387654e-03 6.79537428806e-03 6.81664387654e-03 6.88181758770e-03 - 6.99504538611e-03 7.16308508658e-03 7.39443450458e-03 7.69793885145e-03 8.08133005705e-03 8.54973346172e-03 - 9.10381322670e-03 9.73748464183e-03 1.04356792319e-02 1.11729588764e-02 1.19137265332e-02 1.26143883181e-02 - 1.65234811342e-02 1.70848695603e-02 1.73786828448e-02 1.73786828448e-02 1.70848695603e-02 1.65234811342e-02 - 1.57423428102e-02 1.48031251671e-02 1.37726366090e-02 1.27148275869e-02 1.16845233837e-02 1.07235056315e-02 - 9.85925299562e-03 9.10613117226e-03 8.46823559623e-03 7.94279014126e-03 7.52314503521e-03 7.20097316500e-03 - 6.96786738821e-03 6.81664387654e-03 6.74228118806e-03 6.74228118806e-03 6.81664387654e-03 6.96786738821e-03 - 7.20097316500e-03 7.52314503521e-03 7.94279014126e-03 8.46823559623e-03 9.10613117226e-03 9.85925299562e-03 - 1.07235056315e-02 1.16845233837e-02 1.27148275869e-02 1.37726366090e-02 1.48031251671e-02 1.57423428102e-02 - 2.06439962171e-02 2.12413612776e-02 2.14468462049e-02 2.12413612776e-02 2.06439962171e-02 1.97084075068e-02 - 1.85132658939e-02 1.71497889118e-02 1.57094271493e-02 1.42737851127e-02 1.29079014387e-02 1.16573532374e-02 - 1.05489279259e-02 9.59384043225e-03 8.79214216133e-03 8.13716815266e-03 7.61927184895e-03 7.22847713667e-03 - 6.95605972443e-03 6.79537428806e-03 6.74228118806e-03 6.79537428806e-03 6.95605972443e-03 7.22847713667e-03 - 7.61927184895e-03 8.13716815266e-03 8.79214216133e-03 9.59384043225e-03 1.05489279259e-02 1.16573532374e-02 - 1.29079014387e-02 1.42737851127e-02 1.57094271493e-02 1.71497889118e-02 1.85132658939e-02 1.97084075068e-02 - 2.56657154446e-02 2.62153172241e-02 2.62153172241e-02 2.56657154446e-02 2.46187421852e-02 2.31688478126e-02 - 2.14361295219e-02 1.95479913088e-02 1.76229803621e-02 1.57591868798e-02 1.40283418589e-02 1.24755048074e-02 - 1.11228159589e-02 9.97511028176e-03 9.02578945364e-03 8.26229038338e-03 7.67065297497e-03 7.23847314555e-03 - 6.95605972443e-03 6.81664387654e-03 6.81664387654e-03 6.95605972443e-03 7.23847314555e-03 7.67065297497e-03 - 8.26229038338e-03 9.02578945364e-03 9.97511028176e-03 1.11228159589e-02 1.24755048074e-02 1.40283418589e-02 - 1.57591868798e-02 1.76229803621e-02 1.95479913088e-02 2.14361295219e-02 2.31688478126e-02 2.46187421852e-02 - 3.16041856284e-02 3.19731919657e-02 3.16041856284e-02 3.05340710560e-02 2.88661050079e-02 2.67502344749e-02 - 2.43576039836e-02 2.18557815330e-02 1.93892705934e-02 1.70678712692e-02 1.49636867906e-02 1.31152359900e-02 - 1.15351431719e-02 1.02181471415e-02 9.14830218340e-03 8.30549434438e-03 7.67065297497e-03 7.22847713667e-03 - 6.96786738821e-03 6.88181758770e-03 6.96786738821e-03 7.22847713667e-03 7.67065297497e-03 8.30549434438e-03 - 9.14830218340e-03 1.02181471415e-02 1.15351431719e-02 1.31152359900e-02 1.49636867906e-02 1.70678712692e-02 - 1.93892705934e-02 2.18557815330e-02 2.43576039836e-02 2.67502344749e-02 2.88661050079e-02 3.05340710560e-02 - 3.83718132369e-02 3.83718132369e-02 3.74259862301e-02 3.56312088557e-02 3.31615306069e-02 3.02357338101e-02 - 2.70818268649e-02 2.39063871143e-02 2.08735527936e-02 1.80960146721e-02 1.56375665721e-02 1.35231772103e-02 - 1.17508350709e-02 1.03016601350e-02 9.14830218340e-03 8.26229038338e-03 7.61927184895e-03 7.20097316500e-03 - 6.99504538611e-03 6.99504538611e-03 7.20097316500e-03 7.61927184895e-03 8.26229038338e-03 9.14830218340e-03 - 1.03016601350e-02 1.17508350709e-02 1.35231772103e-02 1.56375665721e-02 1.80960146721e-02 2.08735527936e-02 - 2.39063871143e-02 2.70818268649e-02 3.02357338101e-02 3.31615306069e-02 3.56312088557e-02 3.74259862301e-02 - 4.57409612273e-02 4.51323632879e-02 4.33721592307e-02 4.06430475235e-02 3.72078996967e-02 3.33624200108e-02 - 2.93901320501e-02 2.55281844546e-02 2.19482820950e-02 1.87538902948e-02 1.59907282434e-02 1.36633879542e-02 - 1.17508350709e-02 1.02181471415e-02 9.02578945364e-03 8.13716815266e-03 7.52314503521e-03 7.16308508658e-03 - 7.04448483440e-03 7.16308508658e-03 7.52314503521e-03 8.13716815266e-03 9.02578945364e-03 1.02181471415e-02 - 1.17508350709e-02 1.36633879542e-02 1.59907282434e-02 1.87538902948e-02 2.19482820950e-02 2.55281844546e-02 - 2.93901320501e-02 3.33624200108e-02 3.72078996967e-02 4.06430475235e-02 4.33721592307e-02 4.51323632879e-02 - 5.33236907840e-02 5.18355302331e-02 4.90231496620e-02 4.51788789706e-02 4.06654278454e-02 3.58537824974e-02 - 3.10717223250e-02 2.65706573512e-02 2.25132701769e-02 1.89804120902e-02 1.59907282434e-02 1.35231772103e-02 - 1.15351431719e-02 9.97511028176e-03 8.79214216133e-03 7.94279014126e-03 7.39443450458e-03 7.12561826537e-03 - 7.12561826537e-03 7.39443450458e-03 7.94279014126e-03 8.79214216133e-03 9.97511028176e-03 1.15351431719e-02 - 1.35231772103e-02 1.59907282434e-02 1.89804120902e-02 2.25132701769e-02 2.65706573512e-02 3.10717223250e-02 - 3.58537824974e-02 4.06654278454e-02 4.51788789706e-02 4.90231496620e-02 5.18355302331e-02 5.33236907840e-02 - 6.05796981280e-02 5.79474348197e-02 5.38883507401e-02 4.88190878681e-02 4.32002938784e-02 3.74634706166e-02 - 3.19590319446e-02 2.69304328597e-02 2.25132701769e-02 1.87538902948e-02 1.56375665721e-02 1.31152359900e-02 - 1.11228159589e-02 9.59384043225e-03 8.46823559623e-03 7.69793885145e-03 7.24904282964e-03 7.10160482063e-03 - 7.24904282964e-03 7.69793885145e-03 8.46823559623e-03 9.59384043225e-03 1.11228159589e-02 1.31152359900e-02 - 1.56375665721e-02 1.87538902948e-02 2.25132701769e-02 2.69304328597e-02 3.19590319446e-02 3.74634706166e-02 - 4.32002938784e-02 4.88190878681e-02 5.38883507401e-02 5.79474348197e-02 6.05796981280e-02 6.14923433640e-02 - 6.68641206041e-02 6.28828729732e-02 5.74762428735e-02 5.11831265828e-02 4.45431970579e-02 3.80204685260e-02 - 3.19590319446e-02 2.65706573512e-02 2.19482820950e-02 1.80960146721e-02 1.49636867906e-02 1.24755048074e-02 - 1.05489279259e-02 9.10613117226e-03 8.08133005705e-03 7.42492384580e-03 7.10459522193e-03 7.10459522193e-03 - 7.42492384580e-03 8.08133005705e-03 9.10613117226e-03 1.05489279259e-02 1.24755048074e-02 1.49636867906e-02 - 1.80960146721e-02 2.19482820950e-02 2.65706573512e-02 3.19590319446e-02 3.80204685260e-02 4.45431970579e-02 - 5.11831265828e-02 5.74762428735e-02 6.28828729732e-02 6.68641206041e-02 6.89793219251e-02 6.89793219251e-02 - 7.15201290633e-02 6.61022866145e-02 5.93841418824e-02 5.20033431247e-02 4.45431970579e-02 3.74634706166e-02 - 3.10717223250e-02 2.55281844546e-02 2.08735527936e-02 1.70678712692e-02 1.40283418589e-02 1.16573532374e-02 - 9.85925299562e-03 8.54973346172e-03 7.66146344666e-03 7.14689010595e-03 6.97836085285e-03 7.14689010595e-03 - 7.66146344666e-03 8.54973346172e-03 9.85925299562e-03 1.16573532374e-02 1.40283418589e-02 1.70678712692e-02 - 2.08735527936e-02 2.55281844546e-02 3.10717223250e-02 3.74634706166e-02 4.45431970579e-02 5.20033431247e-02 - 5.93841418824e-02 6.61022866145e-02 7.15201290633e-02 7.50510418428e-02 7.62783857555e-02 7.50510418428e-02 - 7.40032629540e-02 6.72218662363e-02 5.93841418824e-02 5.11831265828e-02 4.32002938784e-02 3.58537824974e-02 - 2.93901320501e-02 2.39063871143e-02 1.93892705934e-02 1.57591868798e-02 1.29079014387e-02 1.07235056315e-02 - 9.10381322670e-03 7.96341795569e-03 7.23785699764e-03 6.88519888788e-03 6.88519888788e-03 7.23785699764e-03 - 7.96341795569e-03 9.10381322670e-03 1.07235056315e-02 1.29079014387e-02 1.57591868798e-02 1.93892705934e-02 - 2.39063871143e-02 2.93901320501e-02 3.58537824974e-02 4.32002938784e-02 5.11831265828e-02 5.93841418824e-02 - 6.72218662363e-02 7.40032629540e-02 7.90236437036e-02 8.16998180862e-02 8.16998180862e-02 7.90236437036e-02 - 7.40032629540e-02 6.61022866145e-02 5.74762428735e-02 4.88190878681e-02 4.06654278454e-02 3.33624200108e-02 - 2.70818268649e-02 2.18557815330e-02 1.76229803621e-02 1.42737851127e-02 1.16845233837e-02 9.73748464183e-03 - 8.33057919998e-03 7.38252390656e-03 6.83583874198e-03 6.65719946009e-03 6.83583874198e-03 7.38252390656e-03 - 8.33057919998e-03 9.73748464183e-03 1.16845233837e-02 1.42737851127e-02 1.76229803621e-02 2.18557815330e-02 - 2.70818268649e-02 3.33624200108e-02 4.06654278454e-02 4.88190878681e-02 5.74762428735e-02 6.61022866145e-02 - 7.40032629540e-02 8.04073084192e-02 8.45957298814e-02 8.60542685404e-02 8.45957298814e-02 8.04073084192e-02 - 7.15201290633e-02 6.28828729732e-02 5.38883507401e-02 4.51788789706e-02 3.72078996967e-02 3.02357338101e-02 - 2.43576039836e-02 1.95479913088e-02 1.57094271493e-02 1.27148275869e-02 1.04356792319e-02 8.75631776595e-03 - 7.58058258839e-03 6.83583874198e-03 6.47483593539e-03 6.47483593539e-03 6.83583874198e-03 7.58058258839e-03 - 8.75631776595e-03 1.04356792319e-02 1.27148275869e-02 1.57094271493e-02 1.95479913088e-02 2.43576039836e-02 - 3.02357338101e-02 3.72078996967e-02 4.51788789706e-02 5.38883507401e-02 6.28828729732e-02 7.15201290633e-02 - 7.90236437036e-02 8.45957298814e-02 8.75716967614e-02 8.75716967614e-02 8.45957298814e-02 7.90236437036e-02 - 6.68641206041e-02 5.79474348197e-02 4.90231496620e-02 4.06430475235e-02 3.31615306069e-02 2.67502344749e-02 - 2.14361295219e-02 1.71497889118e-02 1.37726366090e-02 1.11729588764e-02 9.22648243576e-03 7.82576853226e-03 - 6.88519888788e-03 6.34416762186e-03 6.16759269815e-03 6.34416762186e-03 6.88519888788e-03 7.82576853226e-03 - 9.22648243576e-03 1.11729588764e-02 1.37726366090e-02 1.71497889118e-02 2.14361295219e-02 2.67502344749e-02 - 3.31615306069e-02 4.06430475235e-02 4.90231496620e-02 5.79474348197e-02 6.68641206041e-02 7.50510418428e-02 - 8.16998180862e-02 8.60542685404e-02 8.75716967614e-02 8.60542685404e-02 8.16998180862e-02 7.50510418428e-02 - 6.05796981280e-02 5.18355302331e-02 4.33721592307e-02 3.56312088557e-02 2.88661050079e-02 2.31688478126e-02 - 1.85132658939e-02 1.48031251671e-02 1.19137265332e-02 9.71912104775e-03 8.10563303358e-03 6.97836085285e-03 - 6.26545793635e-03 5.92021996667e-03 5.92021996667e-03 6.26545793635e-03 6.97836085285e-03 8.10563303358e-03 - 9.71912104775e-03 1.19137265332e-02 1.48031251671e-02 1.85132658939e-02 2.31688478126e-02 2.88661050079e-02 - 3.56312088557e-02 4.33721592307e-02 5.18355302331e-02 6.05796981280e-02 6.89793219251e-02 7.62783857555e-02 - 8.16998180862e-02 8.45957298814e-02 8.45957298814e-02 8.16998180862e-02 7.62783857555e-02 6.89793219251e-02 - 5.33236907840e-02 4.51323632879e-02 3.74259862301e-02 3.05340710560e-02 2.46187421852e-02 1.97084075068e-02 - 1.57423428102e-02 1.26143883181e-02 1.02054916185e-02 8.40200942373e-03 7.10459522193e-03 6.23361812745e-03 - 5.73268604942e-03 5.56920678348e-03 5.73268604942e-03 6.23361812745e-03 7.10459522193e-03 8.40200942373e-03 - 1.02054916185e-02 1.26143883181e-02 1.57423428102e-02 1.97084075068e-02 2.46187421852e-02 3.05340710560e-02 - 3.74259862301e-02 4.51323632879e-02 5.33236907840e-02 6.14923433640e-02 6.89793219251e-02 7.50510418428e-02 - 7.90236437036e-02 8.04073084192e-02 7.90236437036e-02 7.50510418428e-02 6.89793219251e-02 6.14923433640e-02 - 4.02453701311e-02 3.34710625414e-02 2.73972646659e-02 2.21666114252e-02 1.78072941675e-02 1.42727054437e-02 - 1.14766013692e-02 9.31810768724e-03 7.69793885145e-03 6.52902358143e-03 5.74257125314e-03 5.28994524639e-03 - 5.14226972170e-03 5.28994524639e-03 5.74257125314e-03 6.52902358143e-03 7.69793885145e-03 9.31810768724e-03 - 1.14766013692e-02 1.42727054437e-02 1.78072941675e-02 2.21666114252e-02 2.73972646659e-02 3.34710625414e-02 - 4.02453701311e-02 4.74313143781e-02 5.45841783826e-02 6.11288569567e-02 6.64284767715e-02 6.98920688762e-02 - 7.10977313661e-02 6.98920688762e-02 6.64284767715e-02 6.11288569567e-02 5.45841783826e-02 4.74313143781e-02 - 3.34710625414e-02 2.77227537368e-02 2.26519365039e-02 1.83376793613e-02 1.47756456624e-02 1.19105819676e-02 - 9.66211927865e-03 7.94279014126e-03 6.67049181789e-03 5.77651892440e-03 5.20914423543e-03 4.93405372394e-03 - 4.93405372394e-03 5.20914423543e-03 5.77651892440e-03 6.67049181789e-03 7.94279014126e-03 9.66211927865e-03 - 1.19105819676e-02 1.47756456624e-02 1.83376793613e-02 2.26519365039e-02 2.77227537368e-02 3.34710625414e-02 - 3.97029159910e-02 4.60913389830e-02 5.21839135623e-02 5.74449785733e-02 6.13334872428e-02 6.34040688222e-02 - 6.34040688222e-02 6.13334872428e-02 5.74449785733e-02 5.21839135623e-02 4.60913389830e-02 3.97029159910e-02 - 2.73972646659e-02 2.26519365039e-02 1.85201445811e-02 1.50389831834e-02 1.21873907787e-02 9.91029781221e-03 - 8.13716815266e-03 6.79567554150e-03 5.82127807001e-03 5.16243150929e-03 4.78210810048e-03 4.65785937656e-03 - 4.78210810048e-03 5.16243150929e-03 5.82127807001e-03 6.79567554150e-03 8.13716815266e-03 9.91029781221e-03 - 1.21873907787e-02 1.50389831834e-02 1.85201445811e-02 2.26519365039e-02 2.73972646659e-02 3.26341221073e-02 - 3.81345549630e-02 4.35604474537e-02 4.84855850881e-02 5.24477482650e-02 5.50251512552e-02 5.59201471811e-02 - 5.50251512552e-02 5.24477482650e-02 4.84855850881e-02 4.35604474537e-02 3.81345549630e-02 3.26341221073e-02 - 2.21666114252e-02 1.83376793613e-02 1.50389831834e-02 1.22825573408e-02 1.00404664762e-02 8.26229038338e-03 - 6.88914005847e-03 5.86418256271e-03 5.13913617973e-03 4.67692793169e-03 4.45230019628e-03 4.45230019628e-03 - 4.67692793169e-03 5.13913617973e-03 5.86418256271e-03 6.88914005847e-03 8.26229038338e-03 1.00404664762e-02 - 1.22825573408e-02 1.50389831834e-02 1.83376793613e-02 2.21666114252e-02 2.64534808200e-02 3.10465495213e-02 - 3.57044700685e-02 4.01041807768e-02 4.38725463784e-02 4.66403070569e-02 4.81082332430e-02 4.81082332430e-02 - 4.66403070569e-02 4.38725463784e-02 4.01041807768e-02 3.57044700685e-02 3.10465495213e-02 2.64534808200e-02 - 1.78072941675e-02 1.47756456624e-02 1.21873907787e-02 1.00404664762e-02 8.30549434438e-03 6.93908976898e-03 - 5.89466652251e-03 5.12972310883e-03 4.60945880297e-03 4.30805835198e-03 4.20942844716e-03 4.30805835198e-03 - 4.60945880297e-03 5.12972310883e-03 5.89466652251e-03 6.93908976898e-03 8.30549434438e-03 1.00404664762e-02 - 1.21873907787e-02 1.47756456624e-02 1.78072941675e-02 2.12421582644e-02 2.49827563157e-02 2.88631293974e-02 - 3.26483588385e-02 3.60511821341e-02 3.87673596218e-02 4.05244812822e-02 4.11328816616e-02 4.05244812822e-02 - 3.87673596218e-02 3.60511821341e-02 3.26483588385e-02 2.88631293974e-02 2.49827563157e-02 2.12421582644e-02 - 1.42727054437e-02 1.19105819676e-02 9.91029781221e-03 8.26229038338e-03 6.93908976898e-03 5.90565973456e-03 - 5.12697112440e-03 4.57225197605e-03 4.21692866215e-03 4.04374575730e-03 4.04374575730e-03 4.21692866215e-03 - 4.57225197605e-03 5.12697112440e-03 5.90565973456e-03 6.93908976898e-03 8.26229038338e-03 9.91029781221e-03 - 1.19105819676e-02 1.42727054437e-02 1.69767793036e-02 1.99620901041e-02 2.31175818882e-02 2.62778950395e-02 - 2.92302840650e-02 3.17358390207e-02 3.35632692529e-02 3.45282284639e-02 3.45282284639e-02 3.35632692529e-02 - 3.17358390207e-02 2.92302840650e-02 2.62778950395e-02 2.31175818882e-02 1.99620901041e-02 1.69767793036e-02 - 1.14766013692e-02 9.66211927865e-03 8.13716815266e-03 6.88914005847e-03 5.89466652251e-03 5.12697112440e-03 - 4.56041706509e-03 4.17292027232e-03 3.94752033538e-03 3.87358926493e-03 3.94752033538e-03 4.17292027232e-03 - 4.56041706509e-03 5.12697112440e-03 5.89466652251e-03 6.88914005847e-03 8.13716815266e-03 9.66211927865e-03 - 1.14766013692e-02 1.35733603577e-02 1.59162612755e-02 1.84326960165e-02 2.10090352784e-02 2.34923498457e-02 - 2.57019293917e-02 2.74512061786e-02 2.85763383726e-02 2.89647599965e-02 2.85763383726e-02 2.74512061786e-02 - 2.57019293917e-02 2.34923498457e-02 2.10090352784e-02 1.84326960165e-02 1.59162612755e-02 1.35733603577e-02 - 9.31810768724e-03 7.94279014126e-03 6.79567554150e-03 5.86418256271e-03 5.12972310883e-03 4.57225197605e-03 - 4.17292027232e-03 3.91597292758e-03 3.79030883078e-03 3.79030883078e-03 3.91597292758e-03 4.17292027232e-03 - 4.57225197605e-03 5.12972310883e-03 5.86418256271e-03 6.79567554150e-03 7.94279014126e-03 9.31810768724e-03 - 1.09215936737e-02 1.27333396536e-02 1.47072813037e-02 1.67669692380e-02 1.88049742175e-02 2.06884779452e-02 - 2.22726314479e-02 2.34202555044e-02 2.40237109616e-02 2.40237109616e-02 2.34202555044e-02 2.22726314479e-02 - 2.06884779452e-02 1.88049742175e-02 1.67669692380e-02 1.47072813037e-02 1.27333396536e-02 1.09215936737e-02 - 7.69793885145e-03 6.67049181789e-03 5.82127807001e-03 5.13913617973e-03 4.60945880297e-03 4.21692866215e-03 - 3.94752033538e-03 3.79030883078e-03 3.73863341678e-03 3.79030883078e-03 3.94752033538e-03 4.21692866215e-03 - 4.60945880297e-03 5.13913617973e-03 5.82127807001e-03 6.67049181789e-03 7.69793885145e-03 8.90705726329e-03 - 1.02881382638e-02 1.18131307076e-02 1.34318126710e-02 1.50702461704e-02 1.66330383744e-02 1.80109897723e-02 - 1.90940368490e-02 1.97871783123e-02 2.00258575799e-02 1.97871783123e-02 1.90940368490e-02 1.80109897723e-02 - 1.66330383744e-02 1.50702461704e-02 1.34318126710e-02 1.18131307076e-02 1.02881382638e-02 8.90705726329e-03 - 6.52902358143e-03 5.77651892440e-03 5.16243150929e-03 4.67692793169e-03 4.30805835198e-03 4.04374575730e-03 - 3.87358926493e-03 3.79030883078e-03 3.79030883078e-03 3.87358926493e-03 4.04374575730e-03 4.30805835198e-03 - 4.67692793169e-03 5.16243150929e-03 5.77651892440e-03 6.52902358143e-03 7.42492384580e-03 8.46060891145e-03 - 9.61987006090e-03 1.08706042529e-02 1.21629507848e-02 1.34297677852e-02 1.45906790875e-02 1.55601992220e-02 - 1.62588522549e-02 1.66250325509e-02 1.66250325509e-02 1.62588522549e-02 1.55601992220e-02 1.45906790875e-02 - 1.34297677852e-02 1.21629507848e-02 1.08706042529e-02 9.61987006090e-03 8.46060891145e-03 7.42492384580e-03 - 5.74257125314e-03 5.20914423543e-03 4.78210810048e-03 4.45230019628e-03 4.20942844716e-03 4.04374575730e-03 - 3.94752033538e-03 3.91597292758e-03 3.94752033538e-03 4.04374575730e-03 4.20942844716e-03 4.45230019628e-03 - 4.78210810048e-03 5.20914423543e-03 5.74257125314e-03 6.38840491477e-03 7.14689010595e-03 8.00955236461e-03 - 8.95658363692e-03 9.95507847617e-03 1.09586567104e-02 1.19093466628e-02 1.27424344623e-02 1.33939588194e-02 - 1.38094745262e-02 1.39522993746e-02 1.38094745262e-02 1.33939588194e-02 1.27424344623e-02 1.19093466628e-02 - 1.09586567104e-02 9.95507847617e-03 8.95658363692e-03 8.00955236461e-03 7.14689010595e-03 6.38840491477e-03 - 5.28994524639e-03 4.93405372394e-03 4.65785937656e-03 4.45230019628e-03 4.30805835198e-03 4.21692866215e-03 - 4.17292027232e-03 4.17292027232e-03 4.21692866215e-03 4.30805835198e-03 4.45230019628e-03 4.65785937656e-03 - 4.93405372394e-03 5.28994524639e-03 5.73268604942e-03 6.26545793635e-03 6.88519888788e-03 7.58058258839e-03 - 8.33057919998e-03 9.10381322670e-03 9.85925299562e-03 1.05489279259e-02 1.11228159589e-02 1.15351431719e-02 - 1.17508350709e-02 1.17508350709e-02 1.15351431719e-02 1.11228159589e-02 1.05489279259e-02 9.85925299562e-03 - 9.10381322670e-03 8.33057919998e-03 7.58058258839e-03 6.88519888788e-03 6.26545793635e-03 5.73268604942e-03 - 5.14226972170e-03 4.93405372394e-03 4.78210810048e-03 4.67692793169e-03 4.60945880297e-03 4.57225197605e-03 - 4.56041706509e-03 4.57225197605e-03 4.60945880297e-03 4.67692793169e-03 4.78210810048e-03 4.93405372394e-03 - 5.14226972170e-03 5.41531278039e-03 5.75903981319e-03 6.17468606834e-03 6.65719946009e-03 7.19410390186e-03 - 7.76490388909e-03 8.34122341388e-03 8.88822832040e-03 9.36769905218e-03 9.74245511371e-03 9.98127039361e-03 - 1.00633149755e-02 9.98127039361e-03 9.74245511371e-03 9.36769905218e-03 8.88822832040e-03 8.34122341388e-03 - 7.76490388909e-03 7.19410390186e-03 6.65719946009e-03 6.17468606834e-03 5.75903981319e-03 5.41531278039e-03 - 5.28994524639e-03 5.20914423543e-03 5.16243150929e-03 5.13913617973e-03 5.12972310883e-03 5.12697112440e-03 - 5.12697112440e-03 5.12972310883e-03 5.13913617973e-03 5.16243150929e-03 5.20914423543e-03 5.28994524639e-03 - 5.41531278039e-03 5.59394004869e-03 5.83098728503e-03 6.12657930585e-03 6.47483593539e-03 6.86339437793e-03 - 7.27338017313e-03 7.68014935330e-03 8.05519399644e-03 8.36917339040e-03 8.59555582378e-03 8.71419097250e-03 - 8.71419097250e-03 8.59555582378e-03 8.36917339040e-03 8.05519399644e-03 7.68014935330e-03 7.27338017313e-03 - 6.86339437793e-03 6.47483593539e-03 6.12657930585e-03 5.83098728503e-03 5.59394004869e-03 5.41531278039e-03 - 5.74257125314e-03 5.77651892440e-03 5.82127807001e-03 5.86418256271e-03 5.89466652251e-03 5.90565973456e-03 - 5.89466652251e-03 5.86418256271e-03 5.82127807001e-03 5.77651892440e-03 5.74257125314e-03 5.73268604942e-03 - 5.75903981319e-03 5.83098728503e-03 5.95356833121e-03 6.12657930585e-03 6.34416762186e-03 6.59479473082e-03 - 6.86170422323e-03 7.12420828954e-03 7.35981258047e-03 7.54684340873e-03 7.66717366082e-03 7.70870330534e-03 - 7.66717366082e-03 7.54684340873e-03 7.35981258047e-03 7.12420828954e-03 6.86170422323e-03 6.59479473082e-03 - 6.34416762186e-03 6.12657930585e-03 5.95356833121e-03 5.83098728503e-03 5.75903981319e-03 5.73268604942e-03 - 6.52902358143e-03 6.67049181789e-03 6.79567554150e-03 6.88914005847e-03 6.93908976898e-03 6.93908976898e-03 - 6.88914005847e-03 6.79567554150e-03 6.67049181789e-03 6.52902358143e-03 6.38840491477e-03 6.26545793635e-03 - 6.17468606834e-03 6.12657930585e-03 6.12657930585e-03 6.17468606834e-03 6.26545793635e-03 6.38840491477e-03 - 6.52902358143e-03 6.67049181789e-03 6.79567554150e-03 6.88914005847e-03 6.93908976898e-03 6.93908976898e-03 - 6.88914005847e-03 6.79567554150e-03 6.67049181789e-03 6.52902358143e-03 6.38840491477e-03 6.26545793635e-03 - 6.17468606834e-03 6.12657930585e-03 6.12657930585e-03 6.17468606834e-03 6.26545793635e-03 6.38840491477e-03 - 7.69793885145e-03 7.94279014126e-03 8.13716815266e-03 8.26229038338e-03 8.30549434438e-03 8.26229038338e-03 - 8.13716815266e-03 7.94279014126e-03 7.69793885145e-03 7.42492384580e-03 7.14689010595e-03 6.88519888788e-03 - 6.65719946009e-03 6.47483593539e-03 6.34416762186e-03 6.26545793635e-03 6.23361812745e-03 6.23916674188e-03 - 6.26978037715e-03 6.31209415558e-03 6.35335851926e-03 6.38291972351e-03 6.39361872594e-03 6.38291972351e-03 - 6.35335851926e-03 6.31209415558e-03 6.26978037715e-03 6.23916674188e-03 6.23361812745e-03 6.26545793635e-03 - 6.34416762186e-03 6.47483593539e-03 6.65719946009e-03 6.88519888788e-03 7.14689010595e-03 7.42492384580e-03 - 9.31810768724e-03 9.66211927865e-03 9.91029781221e-03 1.00404664762e-02 1.00404664762e-02 9.91029781221e-03 - 9.66211927865e-03 9.31810768724e-03 8.90705726329e-03 8.46060891145e-03 8.00955236461e-03 7.58058258839e-03 - 7.19410390186e-03 6.86339437793e-03 6.59479473082e-03 6.38840491477e-03 6.23916674188e-03 6.13840739734e-03 - 6.07562992209e-03 6.04016501968e-03 6.02253909249e-03 6.01563766373e-03 6.01563766373e-03 6.02253909249e-03 - 6.04016501968e-03 6.07562992209e-03 6.13840739734e-03 6.23916674188e-03 6.38840491477e-03 6.59479473082e-03 - 6.86339437793e-03 7.19410390186e-03 7.58058258839e-03 8.00955236461e-03 8.46060891145e-03 8.90705726329e-03 - 1.14766013692e-02 1.19105819676e-02 1.21873907787e-02 1.22825573408e-02 1.21873907787e-02 1.19105819676e-02 - 1.14766013692e-02 1.09215936737e-02 1.02881382638e-02 9.61987006090e-03 8.95658363692e-03 8.33057919998e-03 - 7.76490388909e-03 7.27338017313e-03 6.86170422323e-03 6.52902358143e-03 6.26978037715e-03 6.07562992209e-03 - 5.93719631865e-03 5.84558656512e-03 5.79365065764e-03 5.77685140016e-03 5.79365065764e-03 5.84558656512e-03 - 5.93719631865e-03 6.07562992209e-03 6.26978037715e-03 6.52902358143e-03 6.86170422323e-03 7.27338017313e-03 - 7.76490388909e-03 8.33057919998e-03 8.95658363692e-03 9.61987006090e-03 1.02881382638e-02 1.09215936737e-02 - 1.42727054437e-02 1.47756456624e-02 1.50389831834e-02 1.50389831834e-02 1.47756456624e-02 1.42727054437e-02 - 1.35733603577e-02 1.27333396536e-02 1.18131307076e-02 1.08706042529e-02 9.95507847617e-03 9.10381322670e-03 - 8.34122341388e-03 7.68014935330e-03 7.12420828954e-03 6.67049181789e-03 6.31209415558e-03 6.04016501968e-03 - 5.84558656512e-03 5.72047031573e-03 5.65928321674e-03 5.65928321674e-03 5.72047031573e-03 5.84558656512e-03 - 6.04016501968e-03 6.31209415558e-03 6.67049181789e-03 7.12420828954e-03 7.68014935330e-03 8.34122341388e-03 - 9.10381322670e-03 9.95507847617e-03 1.08706042529e-02 1.18131307076e-02 1.27333396536e-02 1.35733603577e-02 - 1.78072941675e-02 1.83376793613e-02 1.85201445811e-02 1.83376793613e-02 1.78072941675e-02 1.69767793036e-02 - 1.59162612755e-02 1.47072813037e-02 1.34318126710e-02 1.21629507848e-02 1.09586567104e-02 9.85925299562e-03 - 8.88822832040e-03 8.05519399644e-03 7.35981258047e-03 6.79567554150e-03 6.35335851926e-03 6.02253909249e-03 - 5.79365065764e-03 5.65928321674e-03 5.61497680711e-03 5.65928321674e-03 5.79365065764e-03 6.02253909249e-03 - 6.35335851926e-03 6.79567554150e-03 7.35981258047e-03 8.05519399644e-03 8.88822832040e-03 9.85925299562e-03 - 1.09586567104e-02 1.21629507848e-02 1.34318126710e-02 1.47072813037e-02 1.59162612755e-02 1.69767793036e-02 - 2.21666114252e-02 2.26519365039e-02 2.26519365039e-02 2.21666114252e-02 2.12421582644e-02 1.99620901041e-02 - 1.84326960165e-02 1.67669692380e-02 1.50702461704e-02 1.34297677852e-02 1.19093466628e-02 1.05489279259e-02 - 9.36769905218e-03 8.36917339040e-03 7.54684340873e-03 6.88914005847e-03 6.38291972351e-03 6.01563766373e-03 - 5.77685140016e-03 5.65928321674e-03 5.65928321674e-03 5.77685140016e-03 6.01563766373e-03 6.38291972351e-03 - 6.88914005847e-03 7.54684340873e-03 8.36917339040e-03 9.36769905218e-03 1.05489279259e-02 1.19093466628e-02 - 1.34297677852e-02 1.50702461704e-02 1.67669692380e-02 1.84326960165e-02 1.99620901041e-02 2.12421582644e-02 - 2.73972646659e-02 2.77227537368e-02 2.73972646659e-02 2.64534808200e-02 2.49827563157e-02 2.31175818882e-02 - 2.10090352784e-02 1.88049742175e-02 1.66330383744e-02 1.45906790875e-02 1.27424344623e-02 1.11228159589e-02 - 9.74245511371e-03 8.59555582378e-03 7.66717366082e-03 6.93908976898e-03 6.39361872594e-03 6.01563766373e-03 - 5.79365065764e-03 5.72047031573e-03 5.79365065764e-03 6.01563766373e-03 6.39361872594e-03 6.93908976898e-03 - 7.66717366082e-03 8.59555582378e-03 9.74245511371e-03 1.11228159589e-02 1.27424344623e-02 1.45906790875e-02 - 1.66330383744e-02 1.88049742175e-02 2.10090352784e-02 2.31175818882e-02 2.49827563157e-02 2.64534808200e-02 - 3.34710625414e-02 3.34710625414e-02 3.26341221073e-02 3.10465495213e-02 2.88631293974e-02 2.62778950395e-02 - 2.34923498457e-02 2.06884779452e-02 1.80109897723e-02 1.55601992220e-02 1.33939588194e-02 1.15351431719e-02 - 9.98127039361e-03 8.71419097250e-03 7.70870330534e-03 6.93908976898e-03 6.38291972351e-03 6.02253909249e-03 - 5.84558656512e-03 5.84558656512e-03 6.02253909249e-03 6.38291972351e-03 6.93908976898e-03 7.70870330534e-03 - 8.71419097250e-03 9.98127039361e-03 1.15351431719e-02 1.33939588194e-02 1.55601992220e-02 1.80109897723e-02 - 2.06884779452e-02 2.34923498457e-02 2.62778950395e-02 2.88631293974e-02 3.10465495213e-02 3.26341221073e-02 - 4.02453701311e-02 3.97029159910e-02 3.81345549630e-02 3.57044700685e-02 3.26483588385e-02 2.92302840650e-02 - 2.57019293917e-02 2.22726314479e-02 1.90940368490e-02 1.62588522549e-02 1.38094745262e-02 1.17508350709e-02 - 1.00633149755e-02 8.71419097250e-03 7.66717366082e-03 6.88914005847e-03 6.35335851926e-03 6.04016501968e-03 - 5.93719631865e-03 6.04016501968e-03 6.35335851926e-03 6.88914005847e-03 7.66717366082e-03 8.71419097250e-03 - 1.00633149755e-02 1.17508350709e-02 1.38094745262e-02 1.62588522549e-02 1.90940368490e-02 2.22726314479e-02 - 2.57019293917e-02 2.92302840650e-02 3.26483588385e-02 3.57044700685e-02 3.81345549630e-02 3.97029159910e-02 - 4.74313143781e-02 4.60913389830e-02 4.35604474537e-02 4.01041807768e-02 3.60511821341e-02 3.17358390207e-02 - 2.74512061786e-02 2.34202555044e-02 1.97871783123e-02 1.66250325509e-02 1.39522993746e-02 1.17508350709e-02 - 9.98127039361e-03 8.59555582378e-03 7.54684340873e-03 6.79567554150e-03 6.31209415558e-03 6.07562992209e-03 - 6.07562992209e-03 6.31209415558e-03 6.79567554150e-03 7.54684340873e-03 8.59555582378e-03 9.98127039361e-03 - 1.17508350709e-02 1.39522993746e-02 1.66250325509e-02 1.97871783123e-02 2.34202555044e-02 2.74512061786e-02 - 3.17358390207e-02 3.60511821341e-02 4.01041807768e-02 4.35604474537e-02 4.60913389830e-02 4.74313143781e-02 - 5.45841783826e-02 5.21839135623e-02 4.84855850881e-02 4.38725463784e-02 3.87673596218e-02 3.35632692529e-02 - 2.85763383726e-02 2.40237109616e-02 2.00258575799e-02 1.66250325509e-02 1.38094745262e-02 1.15351431719e-02 - 9.74245511371e-03 8.36917339040e-03 7.35981258047e-03 6.67049181789e-03 6.26978037715e-03 6.13840739734e-03 - 6.26978037715e-03 6.67049181789e-03 7.35981258047e-03 8.36917339040e-03 9.74245511371e-03 1.15351431719e-02 - 1.38094745262e-02 1.66250325509e-02 2.00258575799e-02 2.40237109616e-02 2.85763383726e-02 3.35632692529e-02 - 3.87673596218e-02 4.38725463784e-02 4.84855850881e-02 5.21839135623e-02 5.45841783826e-02 5.54167137150e-02 - 6.11288569567e-02 5.74449785733e-02 5.24477482650e-02 4.66403070569e-02 4.05244812822e-02 3.45282284639e-02 - 2.89647599965e-02 2.40237109616e-02 1.97871783123e-02 1.62588522549e-02 1.33939588194e-02 1.11228159589e-02 - 9.36769905218e-03 8.05519399644e-03 7.12420828954e-03 6.52902358143e-03 6.23916674188e-03 6.23916674188e-03 - 6.52902358143e-03 7.12420828954e-03 8.05519399644e-03 9.36769905218e-03 1.11228159589e-02 1.33939588194e-02 - 1.62588522549e-02 1.97871783123e-02 2.40237109616e-02 2.89647599965e-02 3.45282284639e-02 4.05244812822e-02 - 4.66403070569e-02 5.24477482650e-02 5.74449785733e-02 6.11288569567e-02 6.30873277659e-02 6.30873277659e-02 - 6.64284767715e-02 6.13334872428e-02 5.50251512552e-02 4.81082332430e-02 4.11328816616e-02 3.45282284639e-02 - 2.85763383726e-02 2.34202555044e-02 1.90940368490e-02 1.55601992220e-02 1.27424344623e-02 1.05489279259e-02 - 8.88822832040e-03 7.68014935330e-03 6.86170422323e-03 6.38840491477e-03 6.23361812745e-03 6.38840491477e-03 - 6.86170422323e-03 7.68014935330e-03 8.88822832040e-03 1.05489279259e-02 1.27424344623e-02 1.55601992220e-02 - 1.90940368490e-02 2.34202555044e-02 2.85763383726e-02 3.45282284639e-02 4.11328816616e-02 4.81082332430e-02 - 5.50251512552e-02 6.13334872428e-02 6.64284767715e-02 6.97522426294e-02 7.09081350393e-02 6.97522426294e-02 - 6.98920688762e-02 6.34040688222e-02 5.59201471811e-02 4.81082332430e-02 4.05244812822e-02 3.35632692529e-02 - 2.74512061786e-02 2.22726314479e-02 1.80109897723e-02 1.45906790875e-02 1.19093466628e-02 9.85925299562e-03 - 8.34122341388e-03 7.27338017313e-03 6.59479473082e-03 6.26545793635e-03 6.26545793635e-03 6.59479473082e-03 - 7.27338017313e-03 8.34122341388e-03 9.85925299562e-03 1.19093466628e-02 1.45906790875e-02 1.80109897723e-02 - 2.22726314479e-02 2.74512061786e-02 3.35632692529e-02 4.05244812822e-02 4.81082332430e-02 5.59201471811e-02 - 6.34040688222e-02 6.98920688762e-02 7.47020608958e-02 7.72682499914e-02 7.72682499914e-02 7.47020608958e-02 - 7.10977313661e-02 6.34040688222e-02 5.50251512552e-02 4.66403070569e-02 3.87673596218e-02 3.17358390207e-02 - 2.57019293917e-02 2.06884779452e-02 1.66330383744e-02 1.34297677852e-02 1.09586567104e-02 9.10381322670e-03 - 7.76490388909e-03 6.86339437793e-03 6.34416762186e-03 6.17468606834e-03 6.34416762186e-03 6.86339437793e-03 - 7.76490388909e-03 9.10381322670e-03 1.09586567104e-02 1.34297677852e-02 1.66330383744e-02 2.06884779452e-02 - 2.57019293917e-02 3.17358390207e-02 3.87673596218e-02 4.66403070569e-02 5.50251512552e-02 6.34040688222e-02 - 7.10977313661e-02 7.73458021392e-02 8.14375530661e-02 8.28633557769e-02 8.14375530661e-02 7.73458021392e-02 - 6.98920688762e-02 6.13334872428e-02 5.24477482650e-02 4.38725463784e-02 3.60511821341e-02 2.92302840650e-02 - 2.34923498457e-02 1.88049742175e-02 1.50702461704e-02 1.21629507848e-02 9.95507847617e-03 8.33057919998e-03 - 7.19410390186e-03 6.47483593539e-03 6.12657930585e-03 6.12657930585e-03 6.47483593539e-03 7.19410390186e-03 - 8.33057919998e-03 9.95507847617e-03 1.21629507848e-02 1.50702461704e-02 1.88049742175e-02 2.34923498457e-02 - 2.92302840650e-02 3.60511821341e-02 4.38725463784e-02 5.24477482650e-02 6.13334872428e-02 6.98920688762e-02 - 7.73458021392e-02 8.28911486673e-02 8.58561529560e-02 8.58561529560e-02 8.28911486673e-02 7.73458021392e-02 - 6.64284767715e-02 5.74449785733e-02 4.84855850881e-02 4.01041807768e-02 3.26483588385e-02 2.62778950395e-02 - 2.10090352784e-02 1.67669692380e-02 1.34318126710e-02 1.08706042529e-02 8.95658363692e-03 7.58058258839e-03 - 6.65719946009e-03 6.12657930585e-03 5.95356833121e-03 6.12657930585e-03 6.65719946009e-03 7.58058258839e-03 - 8.95658363692e-03 1.08706042529e-02 1.34318126710e-02 1.67669692380e-02 2.10090352784e-02 2.62778950395e-02 - 3.26483588385e-02 4.01041807768e-02 4.84855850881e-02 5.74449785733e-02 6.64284767715e-02 7.47020608958e-02 - 8.14375530661e-02 8.58561529560e-02 8.73972293003e-02 8.58561529560e-02 8.14375530661e-02 7.47020608958e-02 - 6.11288569567e-02 5.21839135623e-02 4.35604474537e-02 3.57044700685e-02 2.88631293974e-02 2.31175818882e-02 - 1.84326960165e-02 1.47072813037e-02 1.18131307076e-02 9.61987006090e-03 8.00955236461e-03 6.88519888788e-03 - 6.17468606834e-03 5.83098728503e-03 5.83098728503e-03 6.17468606834e-03 6.88519888788e-03 8.00955236461e-03 - 9.61987006090e-03 1.18131307076e-02 1.47072813037e-02 1.84326960165e-02 2.31175818882e-02 2.88631293974e-02 - 3.57044700685e-02 4.35604474537e-02 5.21839135623e-02 6.11288569567e-02 6.97522426294e-02 7.72682499914e-02 - 8.28633557769e-02 8.58561529560e-02 8.58561529560e-02 8.28633557769e-02 7.72682499914e-02 6.97522426294e-02 - 5.45841783826e-02 4.60913389830e-02 3.81345549630e-02 3.10465495213e-02 2.49827563157e-02 1.99620901041e-02 - 1.59162612755e-02 1.27333396536e-02 1.02881382638e-02 8.46060891145e-03 7.14689010595e-03 6.26545793635e-03 - 5.75903981319e-03 5.59394004869e-03 5.75903981319e-03 6.26545793635e-03 7.14689010595e-03 8.46060891145e-03 - 1.02881382638e-02 1.27333396536e-02 1.59162612755e-02 1.99620901041e-02 2.49827563157e-02 3.10465495213e-02 - 3.81345549630e-02 4.60913389830e-02 5.45841783826e-02 6.30873277659e-02 7.09081350393e-02 7.72682499914e-02 - 8.14375530661e-02 8.28911486673e-02 8.14375530661e-02 7.72682499914e-02 7.09081350393e-02 6.30873277659e-02 - 4.74313143781e-02 3.97029159910e-02 3.26341221073e-02 2.64534808200e-02 2.12421582644e-02 1.69767793036e-02 - 1.35733603577e-02 1.09215936737e-02 8.90705726329e-03 7.42492384580e-03 6.38840491477e-03 5.73268604942e-03 - 5.41531278039e-03 5.41531278039e-03 5.73268604942e-03 6.38840491477e-03 7.42492384580e-03 8.90705726329e-03 - 1.09215936737e-02 1.35733603577e-02 1.69767793036e-02 2.12421582644e-02 2.64534808200e-02 3.26341221073e-02 - 3.97029159910e-02 4.74313143781e-02 5.54167137150e-02 6.30873277659e-02 6.97522426294e-02 7.47020608958e-02 - 7.73458021392e-02 7.73458021392e-02 7.47020608958e-02 6.97522426294e-02 6.30873277659e-02 5.54167137150e-02 - 3.55932306397e-02 2.94586793037e-02 2.40594329852e-02 1.94746684497e-02 1.56960478729e-02 1.26620800682e-02 - 1.02846446979e-02 8.46823559623e-03 7.12420828954e-03 6.17967298585e-03 5.58034633768e-03 5.28994524639e-03 - 5.28994524639e-03 5.58034633768e-03 6.17967298585e-03 7.12420828954e-03 8.46823559623e-03 1.02846446979e-02 - 1.26620800682e-02 1.56960478729e-02 1.94746684497e-02 2.40594329852e-02 2.94586793037e-02 3.55932306397e-02 - 4.22610610741e-02 4.91148354625e-02 5.56676247698e-02 6.13379141192e-02 6.55352798807e-02 6.77723654588e-02 - 6.77723654588e-02 6.55352798807e-02 6.13379141192e-02 5.56676247698e-02 4.91148354625e-02 4.22610610741e-02 - 2.94586793037e-02 2.43476957086e-02 1.99070659239e-02 1.61729889157e-02 1.31198380533e-02 1.06856809758e-02 - 8.79214216133e-03 7.35981258047e-03 6.31909087196e-03 5.61528193683e-03 5.20914423543e-03 5.07652462266e-03 - 5.20914423543e-03 5.61528193683e-03 6.31909087196e-03 7.35981258047e-03 8.79214216133e-03 1.06856809758e-02 - 1.31198380533e-02 1.61729889157e-02 1.99070659239e-02 2.43476957086e-02 2.94586793037e-02 3.51127517762e-02 - 4.10670403681e-02 4.69561004766e-02 5.23143637463e-02 5.66331890923e-02 5.94462807362e-02 6.04237632524e-02 - 5.94462807362e-02 5.66331890923e-02 5.23143637463e-02 4.69561004766e-02 4.10670403681e-02 3.51127517762e-02 - 2.40594329852e-02 1.99070659239e-02 1.63370205752e-02 1.33594815778e-02 1.09414577715e-02 9.02578945364e-03 - 7.54684340873e-03 6.44245195186e-03 5.66079261571e-03 5.16243150929e-03 4.92029966810e-03 4.92029966810e-03 - 5.16243150929e-03 5.66079261571e-03 6.44245195186e-03 7.54684340873e-03 9.02578945364e-03 1.09414577715e-02 - 1.33594815778e-02 1.63370205752e-02 1.99070659239e-02 2.40594329852e-02 2.87187367840e-02 3.37228748044e-02 - 3.88104397494e-02 4.36277000850e-02 4.77625301985e-02 5.08044555558e-02 5.24194501424e-02 5.24194501424e-02 - 5.08044555558e-02 4.77625301985e-02 4.36277000850e-02 3.88104397494e-02 3.37228748044e-02 2.87187367840e-02 - 1.94746684497e-02 1.61729889157e-02 1.33594815778e-02 1.10293847869e-02 9.14830218340e-03 7.66717366082e-03 - 6.53448601861e-03 5.70420021497e-03 5.13913617973e-03 4.81172327806e-03 4.70458873539e-03 4.81172327806e-03 - 5.13913617973e-03 5.70420021497e-03 6.53448601861e-03 7.66717366082e-03 9.14830218340e-03 1.10293847869e-02 - 1.33594815778e-02 1.61729889157e-02 1.94746684497e-02 2.32231030162e-02 2.73140021666e-02 3.15673758761e-02 - 3.57259716101e-02 3.94725484932e-02 4.24686468881e-02 4.44094609233e-02 4.50819394473e-02 4.44094609233e-02 - 4.24686468881e-02 3.94725484932e-02 3.57259716101e-02 3.15673758761e-02 2.73140021666e-02 2.32231030162e-02 - 1.56960478729e-02 1.31198380533e-02 1.09414577715e-02 9.14830218340e-03 7.70870330534e-03 6.58362639444e-03 - 5.73495116497e-03 5.12972310883e-03 4.74176747355e-03 4.55262020357e-03 4.55262020357e-03 4.74176747355e-03 - 5.12972310883e-03 5.73495116497e-03 6.58362639444e-03 7.70870330534e-03 9.14830218340e-03 1.09414577715e-02 - 1.31198380533e-02 1.56960478729e-02 1.86504890434e-02 2.19185274002e-02 2.53797852965e-02 2.88533907006e-02 - 3.21049723875e-02 3.48695445110e-02 3.68889471691e-02 3.79563421300e-02 3.79563421300e-02 3.68889471691e-02 - 3.48695445110e-02 3.21049723875e-02 2.88533907006e-02 2.53797852965e-02 2.19185274002e-02 1.86504890434e-02 - 1.26620800682e-02 1.06856809758e-02 9.02578945364e-03 7.66717366082e-03 6.58362639444e-03 5.74602373426e-03 - 5.12697112440e-03 4.70304044562e-03 4.45623663297e-03 4.37525079151e-03 4.45623663297e-03 4.70304044562e-03 - 5.12697112440e-03 5.74602373426e-03 6.58362639444e-03 7.66717366082e-03 9.02578945364e-03 1.06856809758e-02 - 1.26620800682e-02 1.49488960464e-02 1.75083321070e-02 2.02621880335e-02 2.30866420056e-02 2.58139075627e-02 - 2.82446089484e-02 3.01717861136e-02 3.14127386696e-02 3.18414068716e-02 3.14127386696e-02 3.01717861136e-02 - 2.82446089484e-02 2.58139075627e-02 2.30866420056e-02 2.02621880335e-02 1.75083321070e-02 1.49488960464e-02 - 1.02846446979e-02 8.79214216133e-03 7.54684340873e-03 6.53448601861e-03 5.73495116497e-03 5.12697112440e-03 - 4.69069423954e-03 4.40955813989e-03 4.27192322596e-03 4.27192322596e-03 4.40955813989e-03 4.69069423954e-03 - 5.12697112440e-03 5.73495116497e-03 6.53448601861e-03 7.54684340873e-03 8.79214216133e-03 1.02846446979e-02 - 1.20255038743e-02 1.39945083398e-02 1.61427916872e-02 1.83878553878e-02 2.06126999880e-02 2.26718438342e-02 - 2.44059448105e-02 2.56635113913e-02 2.63252408289e-02 2.63252408289e-02 2.56635113913e-02 2.44059448105e-02 - 2.26718438342e-02 2.06126999880e-02 1.83878553878e-02 1.61427916872e-02 1.39945083398e-02 1.20255038743e-02 - 8.46823559623e-03 7.35981258047e-03 6.44245195186e-03 5.70420021497e-03 5.12972310883e-03 4.70304044562e-03 - 4.40955813989e-03 4.23798561825e-03 4.18152878343e-03 4.23798561825e-03 4.40955813989e-03 4.70304044562e-03 - 5.12972310883e-03 5.70420021497e-03 6.44245195186e-03 7.35981258047e-03 8.46823559623e-03 9.77183223433e-03 - 1.12609832188e-02 1.29064893850e-02 1.46550533623e-02 1.64272283654e-02 1.81196807915e-02 1.96135589165e-02 - 2.07887392229e-02 2.15413174517e-02 2.18005508565e-02 2.15413174517e-02 2.07887392229e-02 1.96135589165e-02 - 1.81196807915e-02 1.64272283654e-02 1.46550533623e-02 1.29064893850e-02 1.12609832188e-02 9.77183223433e-03 - 7.12420828954e-03 6.31909087196e-03 5.66079261571e-03 5.13913617973e-03 4.74176747355e-03 4.45623663297e-03 - 4.27192322596e-03 4.18152878343e-03 4.18152878343e-03 4.27192322596e-03 4.45623663297e-03 4.74176747355e-03 - 5.13913617973e-03 5.66079261571e-03 6.31909087196e-03 7.12420828954e-03 8.08133005705e-03 9.18679124184e-03 - 1.04238516982e-02 1.17590249893e-02 1.31397287366e-02 1.44944499034e-02 1.57370100687e-02 1.67754563001e-02 - 1.75241772421e-02 1.79167348748e-02 1.79167348748e-02 1.75241772421e-02 1.67754563001e-02 1.57370100687e-02 - 1.44944499034e-02 1.31397287366e-02 1.17590249893e-02 1.04238516982e-02 9.18679124184e-03 8.08133005705e-03 - 6.17967298585e-03 5.61528193683e-03 5.16243150929e-03 4.81172327806e-03 4.55262020357e-03 4.37525079151e-03 - 4.27192322596e-03 4.23798561825e-03 4.27192322596e-03 4.37525079151e-03 4.55262020357e-03 4.81172327806e-03 - 5.16243150929e-03 5.61528193683e-03 6.17967298585e-03 6.86170422323e-03 7.66146344666e-03 8.57007132232e-03 - 9.56702175361e-03 1.06181928008e-02 1.16751572683e-02 1.26769712537e-02 1.35553259639e-02 1.42425749040e-02 - 1.46810426016e-02 1.48317912783e-02 1.46810426016e-02 1.42425749040e-02 1.35553259639e-02 1.26769712537e-02 - 1.16751572683e-02 1.06181928008e-02 9.56702175361e-03 8.57007132232e-03 7.66146344666e-03 6.86170422323e-03 - 5.58034633768e-03 5.20914423543e-03 4.92029966810e-03 4.70458873539e-03 4.55262020357e-03 4.45623663297e-03 - 4.40955813989e-03 4.40955813989e-03 4.45623663297e-03 4.55262020357e-03 4.70458873539e-03 4.92029966810e-03 - 5.20914423543e-03 5.58034633768e-03 6.04118457084e-03 6.59479473082e-03 7.23785699764e-03 7.95863052826e-03 - 8.73551184506e-03 9.53627070961e-03 1.03186231402e-02 1.10330000246e-02 1.16276251073e-02 1.20550163598e-02 - 1.22786655737e-02 1.22786655737e-02 1.20550163598e-02 1.16276251073e-02 1.10330000246e-02 1.03186231402e-02 - 9.53627070961e-03 8.73551184506e-03 7.95863052826e-03 7.23785699764e-03 6.59479473082e-03 6.04118457084e-03 - 5.28994524639e-03 5.07652462266e-03 4.92029966810e-03 4.81172327806e-03 4.74176747355e-03 4.70304044562e-03 - 4.69069423954e-03 4.70304044562e-03 4.74176747355e-03 4.81172327806e-03 4.92029966810e-03 5.07652462266e-03 - 5.28994524639e-03 5.56920678348e-03 5.92021996667e-03 6.34416762186e-03 6.83583874198e-03 7.38252390656e-03 - 7.96341795569e-03 8.54973346172e-03 9.10613117226e-03 9.59384043225e-03 9.97511028176e-03 1.02181471415e-02 - 1.03016601350e-02 1.02181471415e-02 9.97511028176e-03 9.59384043225e-03 9.10613117226e-03 8.54973346172e-03 - 7.96341795569e-03 7.38252390656e-03 6.83583874198e-03 6.34416762186e-03 5.92021996667e-03 5.56920678348e-03 - 5.28994524639e-03 5.20914423543e-03 5.16243150929e-03 5.13913617973e-03 5.12972310883e-03 5.12697112440e-03 - 5.12697112440e-03 5.12972310883e-03 5.13913617973e-03 5.16243150929e-03 5.20914423543e-03 5.28994524639e-03 - 5.41531278039e-03 5.59394004869e-03 5.83098728503e-03 6.12657930585e-03 6.47483593539e-03 6.86339437793e-03 - 7.27338017313e-03 7.68014935330e-03 8.05519399644e-03 8.36917339040e-03 8.59555582378e-03 8.71419097250e-03 - 8.71419097250e-03 8.59555582378e-03 8.36917339040e-03 8.05519399644e-03 7.68014935330e-03 7.27338017313e-03 - 6.86339437793e-03 6.47483593539e-03 6.12657930585e-03 5.83098728503e-03 5.59394004869e-03 5.41531278039e-03 - 5.58034633768e-03 5.61528193683e-03 5.66079261571e-03 5.70420021497e-03 5.73495116497e-03 5.74602373426e-03 - 5.73495116497e-03 5.70420021497e-03 5.66079261571e-03 5.61528193683e-03 5.58034633768e-03 5.56920678348e-03 - 5.59394004869e-03 5.66378434823e-03 5.78371930190e-03 5.95356833121e-03 6.16759269815e-03 6.41444748147e-03 - 6.67761981445e-03 6.93665223838e-03 7.16922584820e-03 7.35383003280e-03 7.47255069610e-03 7.51351058269e-03 - 7.47255069610e-03 7.35383003280e-03 7.16922584820e-03 6.93665223838e-03 6.67761981445e-03 6.41444748147e-03 - 6.16759269815e-03 5.95356833121e-03 5.78371930190e-03 5.66378434823e-03 5.59394004869e-03 5.56920678348e-03 - 6.17967298585e-03 6.31909087196e-03 6.44245195186e-03 6.53448601861e-03 6.58362639444e-03 6.58362639444e-03 - 6.53448601861e-03 6.44245195186e-03 6.31909087196e-03 6.17967298585e-03 6.04118457084e-03 5.92021996667e-03 - 5.83098728503e-03 5.78371930190e-03 5.78371930190e-03 5.83098728503e-03 5.92021996667e-03 6.04118457084e-03 - 6.17967298585e-03 6.31909087196e-03 6.44245195186e-03 6.53448601861e-03 6.58362639444e-03 6.58362639444e-03 - 6.53448601861e-03 6.44245195186e-03 6.31909087196e-03 6.17967298585e-03 6.04118457084e-03 5.92021996667e-03 - 5.83098728503e-03 5.78371930190e-03 5.78371930190e-03 5.83098728503e-03 5.92021996667e-03 6.04118457084e-03 - 7.12420828954e-03 7.35981258047e-03 7.54684340873e-03 7.66717366082e-03 7.70870330534e-03 7.66717366082e-03 - 7.54684340873e-03 7.35981258047e-03 7.12420828954e-03 6.86170422323e-03 6.59479473082e-03 6.34416762186e-03 - 6.12657930585e-03 5.95356833121e-03 5.83098728503e-03 5.75903981319e-03 5.73268604942e-03 5.74257125314e-03 - 5.77651892440e-03 5.82127807001e-03 5.86418256271e-03 5.89466652251e-03 5.90565973456e-03 5.89466652251e-03 - 5.86418256271e-03 5.82127807001e-03 5.77651892440e-03 5.74257125314e-03 5.73268604942e-03 5.75903981319e-03 - 5.83098728503e-03 5.95356833121e-03 6.12657930585e-03 6.34416762186e-03 6.59479473082e-03 6.86170422323e-03 - 8.46823559623e-03 8.79214216133e-03 9.02578945364e-03 9.14830218340e-03 9.14830218340e-03 9.02578945364e-03 - 8.79214216133e-03 8.46823559623e-03 8.08133005705e-03 7.66146344666e-03 7.23785699764e-03 6.83583874198e-03 - 6.47483593539e-03 6.16759269815e-03 5.92021996667e-03 5.73268604942e-03 5.59978938003e-03 5.51272438194e-03 - 5.46093720174e-03 5.43377044817e-03 5.42174879265e-03 5.41768978229e-03 5.41768978229e-03 5.42174879265e-03 - 5.43377044817e-03 5.46093720174e-03 5.51272438194e-03 5.59978938003e-03 5.73268604942e-03 5.92021996667e-03 - 6.16759269815e-03 6.47483593539e-03 6.83583874198e-03 7.23785699764e-03 7.66146344666e-03 8.08133005705e-03 - 1.02846446979e-02 1.06856809758e-02 1.09414577715e-02 1.10293847869e-02 1.09414577715e-02 1.06856809758e-02 - 1.02846446979e-02 9.77183223433e-03 9.18679124184e-03 8.57007132232e-03 7.95863052826e-03 7.38252390656e-03 - 6.86339437793e-03 6.41444748147e-03 6.04118457084e-03 5.74257125314e-03 5.51272438194e-03 5.34296096392e-03 - 5.22371135458e-03 5.14599535674e-03 5.10253249618e-03 5.08859106656e-03 5.10253249618e-03 5.14599535674e-03 - 5.22371135458e-03 5.34296096392e-03 5.51272438194e-03 5.74257125314e-03 6.04118457084e-03 6.41444748147e-03 - 6.86339437793e-03 7.38252390656e-03 7.95863052826e-03 8.57007132232e-03 9.18679124184e-03 9.77183223433e-03 - 1.26620800682e-02 1.31198380533e-02 1.33594815778e-02 1.33594815778e-02 1.31198380533e-02 1.26620800682e-02 - 1.20255038743e-02 1.12609832188e-02 1.04238516982e-02 9.56702175361e-03 8.73551184506e-03 7.96341795569e-03 - 7.27338017313e-03 6.67761981445e-03 6.17967298585e-03 5.77651892440e-03 5.46093720174e-03 5.22371135458e-03 - 5.05545032098e-03 4.94806264494e-03 4.89581524939e-03 4.89581524939e-03 4.94806264494e-03 5.05545032098e-03 - 5.22371135458e-03 5.46093720174e-03 5.77651892440e-03 6.17967298585e-03 6.67761981445e-03 7.27338017313e-03 - 7.96341795569e-03 8.73551184506e-03 9.56702175361e-03 1.04238516982e-02 1.12609832188e-02 1.20255038743e-02 - 1.56960478729e-02 1.61729889157e-02 1.63370205752e-02 1.61729889157e-02 1.56960478729e-02 1.49488960464e-02 - 1.39945083398e-02 1.29064893850e-02 1.17590249893e-02 1.06181928008e-02 9.53627070961e-03 8.54973346172e-03 - 7.68014935330e-03 6.93665223838e-03 6.31909087196e-03 5.82127807001e-03 5.43377044817e-03 5.14599535674e-03 - 4.94806264494e-03 4.83232712929e-03 4.79423577304e-03 4.83232712929e-03 4.94806264494e-03 5.14599535674e-03 - 5.43377044817e-03 5.82127807001e-03 6.31909087196e-03 6.93665223838e-03 7.68014935330e-03 8.54973346172e-03 - 9.53627070961e-03 1.06181928008e-02 1.17590249893e-02 1.29064893850e-02 1.39945083398e-02 1.49488960464e-02 - 1.94746684497e-02 1.99070659239e-02 1.99070659239e-02 1.94746684497e-02 1.86504890434e-02 1.75083321070e-02 - 1.61427916872e-02 1.46550533623e-02 1.31397287366e-02 1.16751572683e-02 1.03186231402e-02 9.10613117226e-03 - 8.05519399644e-03 7.16922584820e-03 6.44245195186e-03 5.86418256271e-03 5.42174879265e-03 5.10253249618e-03 - 4.89581524939e-03 4.79423577304e-03 4.79423577304e-03 4.89581524939e-03 5.10253249618e-03 5.42174879265e-03 - 5.86418256271e-03 6.44245195186e-03 7.16922584820e-03 8.05519399644e-03 9.10613117226e-03 1.03186231402e-02 - 1.16751572683e-02 1.31397287366e-02 1.46550533623e-02 1.61427916872e-02 1.75083321070e-02 1.86504890434e-02 - 2.40594329852e-02 2.43476957086e-02 2.40594329852e-02 2.32231030162e-02 2.19185274002e-02 2.02621880335e-02 - 1.83878553878e-02 1.64272283654e-02 1.44944499034e-02 1.26769712537e-02 1.10330000246e-02 9.59384043225e-03 - 8.36917339040e-03 7.35383003280e-03 6.53448601861e-03 5.89466652251e-03 5.41768978229e-03 5.08859106656e-03 - 4.89581524939e-03 4.83232712929e-03 4.89581524939e-03 5.08859106656e-03 5.41768978229e-03 5.89466652251e-03 - 6.53448601861e-03 7.35383003280e-03 8.36917339040e-03 9.59384043225e-03 1.10330000246e-02 1.26769712537e-02 - 1.44944499034e-02 1.64272283654e-02 1.83878553878e-02 2.02621880335e-02 2.19185274002e-02 2.32231030162e-02 - 2.94586793037e-02 2.94586793037e-02 2.87187367840e-02 2.73140021666e-02 2.53797852965e-02 2.30866420056e-02 - 2.06126999880e-02 1.81196807915e-02 1.57370100687e-02 1.35553259639e-02 1.16276251073e-02 9.97511028176e-03 - 8.59555582378e-03 7.47255069610e-03 6.58362639444e-03 5.90565973456e-03 5.41768978229e-03 5.10253249618e-03 - 4.94806264494e-03 4.94806264494e-03 5.10253249618e-03 5.41768978229e-03 5.90565973456e-03 6.58362639444e-03 - 7.47255069610e-03 8.59555582378e-03 9.97511028176e-03 1.16276251073e-02 1.35553259639e-02 1.57370100687e-02 - 1.81196807915e-02 2.06126999880e-02 2.30866420056e-02 2.53797852965e-02 2.73140021666e-02 2.87187367840e-02 - 3.55932306397e-02 3.51127517762e-02 3.37228748044e-02 3.15673758761e-02 2.88533907006e-02 2.58139075627e-02 - 2.26718438342e-02 1.96135589165e-02 1.67754563001e-02 1.42425749040e-02 1.20550163598e-02 1.02181471415e-02 - 8.71419097250e-03 7.51351058269e-03 6.58362639444e-03 5.89466652251e-03 5.42174879265e-03 5.14599535674e-03 - 5.05545032098e-03 5.14599535674e-03 5.42174879265e-03 5.89466652251e-03 6.58362639444e-03 7.51351058269e-03 - 8.71419097250e-03 1.02181471415e-02 1.20550163598e-02 1.42425749040e-02 1.67754563001e-02 1.96135589165e-02 - 2.26718438342e-02 2.58139075627e-02 2.88533907006e-02 3.15673758761e-02 3.37228748044e-02 3.51127517762e-02 - 4.22610610741e-02 4.10670403681e-02 3.88104397494e-02 3.57259716101e-02 3.21049723875e-02 2.82446089484e-02 - 2.44059448105e-02 2.07887392229e-02 1.75241772421e-02 1.46810426016e-02 1.22786655737e-02 1.03016601350e-02 - 8.71419097250e-03 7.47255069610e-03 6.53448601861e-03 5.86418256271e-03 5.43377044817e-03 5.22371135458e-03 - 5.22371135458e-03 5.43377044817e-03 5.86418256271e-03 6.53448601861e-03 7.47255069610e-03 8.71419097250e-03 - 1.03016601350e-02 1.22786655737e-02 1.46810426016e-02 1.75241772421e-02 2.07887392229e-02 2.44059448105e-02 - 2.82446089484e-02 3.21049723875e-02 3.57259716101e-02 3.88104397494e-02 4.10670403681e-02 4.22610610741e-02 - 4.91148354625e-02 4.69561004766e-02 4.36277000850e-02 3.94725484932e-02 3.48695445110e-02 3.01717861136e-02 - 2.56635113913e-02 2.15413174517e-02 1.79167348748e-02 1.48317912783e-02 1.22786655737e-02 1.02181471415e-02 - 8.59555582378e-03 7.35383003280e-03 6.44245195186e-03 5.82127807001e-03 5.46093720174e-03 5.34296096392e-03 - 5.46093720174e-03 5.82127807001e-03 6.44245195186e-03 7.35383003280e-03 8.59555582378e-03 1.02181471415e-02 - 1.22786655737e-02 1.48317912783e-02 1.79167348748e-02 2.15413174517e-02 2.56635113913e-02 3.01717861136e-02 - 3.48695445110e-02 3.94725484932e-02 4.36277000850e-02 4.69561004766e-02 4.91148354625e-02 4.98633146719e-02 - 5.56676247698e-02 5.23143637463e-02 4.77625301985e-02 4.24686468881e-02 3.68889471691e-02 3.14127386696e-02 - 2.63252408289e-02 2.18005508565e-02 1.79167348748e-02 1.46810426016e-02 1.20550163598e-02 9.97511028176e-03 - 8.36917339040e-03 7.16922584820e-03 6.31909087196e-03 5.77651892440e-03 5.51272438194e-03 5.51272438194e-03 - 5.77651892440e-03 6.31909087196e-03 7.16922584820e-03 8.36917339040e-03 9.97511028176e-03 1.20550163598e-02 - 1.46810426016e-02 1.79167348748e-02 2.18005508565e-02 2.63252408289e-02 3.14127386696e-02 3.68889471691e-02 - 4.24686468881e-02 4.77625301985e-02 5.23143637463e-02 5.56676247698e-02 5.74494623672e-02 5.74494623672e-02 - 6.13379141192e-02 5.66331890923e-02 5.08044555558e-02 4.44094609233e-02 3.79563421300e-02 3.18414068716e-02 - 2.63252408289e-02 2.15413174517e-02 1.75241772421e-02 1.42425749040e-02 1.16276251073e-02 9.59384043225e-03 - 8.05519399644e-03 6.93665223838e-03 6.17967298585e-03 5.74257125314e-03 5.59978938003e-03 5.74257125314e-03 - 6.17967298585e-03 6.93665223838e-03 8.05519399644e-03 9.59384043225e-03 1.16276251073e-02 1.42425749040e-02 - 1.75241772421e-02 2.15413174517e-02 2.63252408289e-02 3.18414068716e-02 3.79563421300e-02 4.44094609233e-02 - 5.08044555558e-02 5.66331890923e-02 6.13379141192e-02 6.44054743742e-02 6.54719417706e-02 6.44054743742e-02 - 6.55352798807e-02 5.94462807362e-02 5.24194501424e-02 4.50819394473e-02 3.79563421300e-02 3.14127386696e-02 - 2.56635113913e-02 2.07887392229e-02 1.67754563001e-02 1.35553259639e-02 1.10330000246e-02 9.10613117226e-03 - 7.68014935330e-03 6.67761981445e-03 6.04118457084e-03 5.73268604942e-03 5.73268604942e-03 6.04118457084e-03 - 6.67761981445e-03 7.68014935330e-03 9.10613117226e-03 1.10330000246e-02 1.35553259639e-02 1.67754563001e-02 - 2.07887392229e-02 2.56635113913e-02 3.14127386696e-02 3.79563421300e-02 4.50819394473e-02 5.24194501424e-02 - 5.94462807362e-02 6.55352798807e-02 7.00474085615e-02 7.24538631804e-02 7.24538631804e-02 7.00474085615e-02 - 6.77723654588e-02 6.04237632524e-02 5.24194501424e-02 4.44094609233e-02 3.68889471691e-02 3.01717861136e-02 - 2.44059448105e-02 1.96135589165e-02 1.57370100687e-02 1.26769712537e-02 1.03186231402e-02 8.54973346172e-03 - 7.27338017313e-03 6.41444748147e-03 5.92021996667e-03 5.75903981319e-03 5.92021996667e-03 6.41444748147e-03 - 7.27338017313e-03 8.54973346172e-03 1.03186231402e-02 1.26769712537e-02 1.57370100687e-02 1.96135589165e-02 - 2.44059448105e-02 3.01717861136e-02 3.68889471691e-02 4.44094609233e-02 5.24194501424e-02 6.04237632524e-02 - 6.77723654588e-02 7.37387049341e-02 7.76449689484e-02 7.90059272690e-02 7.76449689484e-02 7.37387049341e-02 - 6.77723654588e-02 5.94462807362e-02 5.08044555558e-02 4.24686468881e-02 3.48695445110e-02 2.82446089484e-02 - 2.26718438342e-02 1.81196807915e-02 1.44944499034e-02 1.16751572683e-02 9.53627070961e-03 7.96341795569e-03 - 6.86339437793e-03 6.16759269815e-03 5.83098728503e-03 5.83098728503e-03 6.16759269815e-03 6.86339437793e-03 - 7.96341795569e-03 9.53627070961e-03 1.16751572683e-02 1.44944499034e-02 1.81196807915e-02 2.26718438342e-02 - 2.82446089484e-02 3.48695445110e-02 4.24686468881e-02 5.08044555558e-02 5.94462807362e-02 6.77723654588e-02 - 7.50243106749e-02 8.04193974336e-02 8.33038946145e-02 8.33038946145e-02 8.04193974336e-02 7.50243106749e-02 - 6.55352798807e-02 5.66331890923e-02 4.77625301985e-02 3.94725484932e-02 3.21049723875e-02 2.58139075627e-02 - 2.06126999880e-02 1.64272283654e-02 1.31397287366e-02 1.06181928008e-02 8.73551184506e-03 7.38252390656e-03 - 6.47483593539e-03 5.95356833121e-03 5.78371930190e-03 5.95356833121e-03 6.47483593539e-03 7.38252390656e-03 - 8.73551184506e-03 1.06181928008e-02 1.31397287366e-02 1.64272283654e-02 2.06126999880e-02 2.58139075627e-02 - 3.21049723875e-02 3.94725484932e-02 4.77625301985e-02 5.66331890923e-02 6.55352798807e-02 7.37387049341e-02 - 8.04193974336e-02 8.48028174918e-02 8.63317298438e-02 8.48028174918e-02 8.04193974336e-02 7.37387049341e-02 - 6.13379141192e-02 5.23143637463e-02 4.36277000850e-02 3.57259716101e-02 2.88533907006e-02 2.30866420056e-02 - 1.83878553878e-02 1.46550533623e-02 1.17590249893e-02 9.56702175361e-03 7.95863052826e-03 6.83583874198e-03 - 6.12657930585e-03 5.78371930190e-03 5.78371930190e-03 6.12657930585e-03 6.83583874198e-03 7.95863052826e-03 - 9.56702175361e-03 1.17590249893e-02 1.46550533623e-02 1.83878553878e-02 2.30866420056e-02 2.88533907006e-02 - 3.57259716101e-02 4.36277000850e-02 5.23143637463e-02 6.13379141192e-02 7.00474085615e-02 7.76449689484e-02 - 8.33038946145e-02 8.63317298438e-02 8.63317298438e-02 8.33038946145e-02 7.76449689484e-02 7.00474085615e-02 - 5.56676247698e-02 4.69561004766e-02 3.88104397494e-02 3.15673758761e-02 2.53797852965e-02 2.02621880335e-02 - 1.61427916872e-02 1.29064893850e-02 1.04238516982e-02 8.57007132232e-03 7.23785699764e-03 6.34416762186e-03 - 5.83098728503e-03 5.66378434823e-03 5.83098728503e-03 6.34416762186e-03 7.23785699764e-03 8.57007132232e-03 - 1.04238516982e-02 1.29064893850e-02 1.61427916872e-02 2.02621880335e-02 2.53797852965e-02 3.15673758761e-02 - 3.88104397494e-02 4.69561004766e-02 5.56676247698e-02 6.44054743742e-02 7.24538631804e-02 7.90059272690e-02 - 8.33038946145e-02 8.48028174918e-02 8.33038946145e-02 7.90059272690e-02 7.24538631804e-02 6.44054743742e-02 - 4.91148354625e-02 4.10670403681e-02 3.37228748044e-02 2.73140021666e-02 2.19185274002e-02 1.75083321070e-02 - 1.39945083398e-02 1.12609832188e-02 9.18679124184e-03 7.66146344666e-03 6.59479473082e-03 5.92021996667e-03 - 5.59394004869e-03 5.59394004869e-03 5.92021996667e-03 6.59479473082e-03 7.66146344666e-03 9.18679124184e-03 - 1.12609832188e-02 1.39945083398e-02 1.75083321070e-02 2.19185274002e-02 2.73140021666e-02 3.37228748044e-02 - 4.10670403681e-02 4.91148354625e-02 5.74494623672e-02 6.54719417706e-02 7.24538631804e-02 7.76449689484e-02 - 8.04193974336e-02 8.04193974336e-02 7.76449689484e-02 7.24538631804e-02 6.54719417706e-02 5.74494623672e-02 - 4.22610610741e-02 3.51127517762e-02 2.87187367840e-02 2.32231030162e-02 1.86504890434e-02 1.49488960464e-02 - 1.20255038743e-02 9.77183223433e-03 8.08133005705e-03 6.86170422323e-03 6.04118457084e-03 5.56920678348e-03 - 5.41531278039e-03 5.56920678348e-03 6.04118457084e-03 6.86170422323e-03 8.08133005705e-03 9.77183223433e-03 - 1.20255038743e-02 1.49488960464e-02 1.86504890434e-02 2.32231030162e-02 2.87187367840e-02 3.51127517762e-02 - 4.22610610741e-02 4.98633146719e-02 5.74494623672e-02 6.44054743742e-02 7.00474085615e-02 7.37387049341e-02 - 7.50243106749e-02 7.37387049341e-02 7.00474085615e-02 6.44054743742e-02 5.74494623672e-02 4.98633146719e-02 - 3.18414068716e-02 2.63252408289e-02 2.15413174517e-02 1.75241772421e-02 1.42425749040e-02 1.16276251073e-02 - 9.59384043225e-03 8.05519399644e-03 6.93665223838e-03 6.17967298585e-03 5.74257125314e-03 5.59978938003e-03 - 5.74257125314e-03 6.17967298585e-03 6.93665223838e-03 8.05519399644e-03 9.59384043225e-03 1.16276251073e-02 - 1.42425749040e-02 1.75241772421e-02 2.15413174517e-02 2.63252408289e-02 3.18414068716e-02 3.79563421300e-02 - 4.44094609233e-02 5.08044555558e-02 5.66331890923e-02 6.13379141192e-02 6.44054743742e-02 6.54719417706e-02 - 6.44054743742e-02 6.13379141192e-02 5.66331890923e-02 5.08044555558e-02 4.44094609233e-02 3.79563421300e-02 - 2.63252408289e-02 2.18005508565e-02 1.79167348748e-02 1.46810426016e-02 1.20550163598e-02 9.97511028176e-03 - 8.36917339040e-03 7.16922584820e-03 6.31909087196e-03 5.77651892440e-03 5.51272438194e-03 5.51272438194e-03 - 5.77651892440e-03 6.31909087196e-03 7.16922584820e-03 8.36917339040e-03 9.97511028176e-03 1.20550163598e-02 - 1.46810426016e-02 1.79167348748e-02 2.18005508565e-02 2.63252408289e-02 3.14127386696e-02 3.68889471691e-02 - 4.24686468881e-02 4.77625301985e-02 5.23143637463e-02 5.56676247698e-02 5.74494623672e-02 5.74494623672e-02 - 5.56676247698e-02 5.23143637463e-02 4.77625301985e-02 4.24686468881e-02 3.68889471691e-02 3.14127386696e-02 - 2.15413174517e-02 1.79167348748e-02 1.48317912783e-02 1.22786655737e-02 1.02181471415e-02 8.59555582378e-03 - 7.35383003280e-03 6.44245195186e-03 5.82127807001e-03 5.46093720174e-03 5.34296096392e-03 5.46093720174e-03 - 5.82127807001e-03 6.44245195186e-03 7.35383003280e-03 8.59555582378e-03 1.02181471415e-02 1.22786655737e-02 - 1.48317912783e-02 1.79167348748e-02 2.15413174517e-02 2.56635113913e-02 3.01717861136e-02 3.48695445110e-02 - 3.94725484932e-02 4.36277000850e-02 4.69561004766e-02 4.91148354625e-02 4.98633146719e-02 4.91148354625e-02 - 4.69561004766e-02 4.36277000850e-02 3.94725484932e-02 3.48695445110e-02 3.01717861136e-02 2.56635113913e-02 - 1.75241772421e-02 1.46810426016e-02 1.22786655737e-02 1.03016601350e-02 8.71419097250e-03 7.47255069610e-03 - 6.53448601861e-03 5.86418256271e-03 5.43377044817e-03 5.22371135458e-03 5.22371135458e-03 5.43377044817e-03 - 5.86418256271e-03 6.53448601861e-03 7.47255069610e-03 8.71419097250e-03 1.03016601350e-02 1.22786655737e-02 - 1.46810426016e-02 1.75241772421e-02 2.07887392229e-02 2.44059448105e-02 2.82446089484e-02 3.21049723875e-02 - 3.57259716101e-02 3.88104397494e-02 4.10670403681e-02 4.22610610741e-02 4.22610610741e-02 4.10670403681e-02 - 3.88104397494e-02 3.57259716101e-02 3.21049723875e-02 2.82446089484e-02 2.44059448105e-02 2.07887392229e-02 - 1.42425749040e-02 1.20550163598e-02 1.02181471415e-02 8.71419097250e-03 7.51351058269e-03 6.58362639444e-03 - 5.89466652251e-03 5.42174879265e-03 5.14599535674e-03 5.05545032098e-03 5.14599535674e-03 5.42174879265e-03 - 5.89466652251e-03 6.58362639444e-03 7.51351058269e-03 8.71419097250e-03 1.02181471415e-02 1.20550163598e-02 - 1.42425749040e-02 1.67754563001e-02 1.96135589165e-02 2.26718438342e-02 2.58139075627e-02 2.88533907006e-02 - 3.15673758761e-02 3.37228748044e-02 3.51127517762e-02 3.55932306397e-02 3.51127517762e-02 3.37228748044e-02 - 3.15673758761e-02 2.88533907006e-02 2.58139075627e-02 2.26718438342e-02 1.96135589165e-02 1.67754563001e-02 - 1.16276251073e-02 9.97511028176e-03 8.59555582378e-03 7.47255069610e-03 6.58362639444e-03 5.90565973456e-03 - 5.41768978229e-03 5.10253249618e-03 4.94806264494e-03 4.94806264494e-03 5.10253249618e-03 5.41768978229e-03 - 5.90565973456e-03 6.58362639444e-03 7.47255069610e-03 8.59555582378e-03 9.97511028176e-03 1.16276251073e-02 - 1.35553259639e-02 1.57370100687e-02 1.81196807915e-02 2.06126999880e-02 2.30866420056e-02 2.53797852965e-02 - 2.73140021666e-02 2.87187367840e-02 2.94586793037e-02 2.94586793037e-02 2.87187367840e-02 2.73140021666e-02 - 2.53797852965e-02 2.30866420056e-02 2.06126999880e-02 1.81196807915e-02 1.57370100687e-02 1.35553259639e-02 - 9.59384043225e-03 8.36917339040e-03 7.35383003280e-03 6.53448601861e-03 5.89466652251e-03 5.41768978229e-03 - 5.08859106656e-03 4.89581524939e-03 4.83232712929e-03 4.89581524939e-03 5.08859106656e-03 5.41768978229e-03 - 5.89466652251e-03 6.53448601861e-03 7.35383003280e-03 8.36917339040e-03 9.59384043225e-03 1.10330000246e-02 - 1.26769712537e-02 1.44944499034e-02 1.64272283654e-02 1.83878553878e-02 2.02621880335e-02 2.19185274002e-02 - 2.32231030162e-02 2.40594329852e-02 2.43476957086e-02 2.40594329852e-02 2.32231030162e-02 2.19185274002e-02 - 2.02621880335e-02 1.83878553878e-02 1.64272283654e-02 1.44944499034e-02 1.26769712537e-02 1.10330000246e-02 - 8.05519399644e-03 7.16922584820e-03 6.44245195186e-03 5.86418256271e-03 5.42174879265e-03 5.10253249618e-03 - 4.89581524939e-03 4.79423577304e-03 4.79423577304e-03 4.89581524939e-03 5.10253249618e-03 5.42174879265e-03 - 5.86418256271e-03 6.44245195186e-03 7.16922584820e-03 8.05519399644e-03 9.10613117226e-03 1.03186231402e-02 - 1.16751572683e-02 1.31397287366e-02 1.46550533623e-02 1.61427916872e-02 1.75083321070e-02 1.86504890434e-02 - 1.94746684497e-02 1.99070659239e-02 1.99070659239e-02 1.94746684497e-02 1.86504890434e-02 1.75083321070e-02 - 1.61427916872e-02 1.46550533623e-02 1.31397287366e-02 1.16751572683e-02 1.03186231402e-02 9.10613117226e-03 - 6.93665223838e-03 6.31909087196e-03 5.82127807001e-03 5.43377044817e-03 5.14599535674e-03 4.94806264494e-03 - 4.83232712929e-03 4.79423577304e-03 4.83232712929e-03 4.94806264494e-03 5.14599535674e-03 5.43377044817e-03 - 5.82127807001e-03 6.31909087196e-03 6.93665223838e-03 7.68014935330e-03 8.54973346172e-03 9.53627070961e-03 - 1.06181928008e-02 1.17590249893e-02 1.29064893850e-02 1.39945083398e-02 1.49488960464e-02 1.56960478729e-02 - 1.61729889157e-02 1.63370205752e-02 1.61729889157e-02 1.56960478729e-02 1.49488960464e-02 1.39945083398e-02 - 1.29064893850e-02 1.17590249893e-02 1.06181928008e-02 9.53627070961e-03 8.54973346172e-03 7.68014935330e-03 - 6.17967298585e-03 5.77651892440e-03 5.46093720174e-03 5.22371135458e-03 5.05545032098e-03 4.94806264494e-03 - 4.89581524939e-03 4.89581524939e-03 4.94806264494e-03 5.05545032098e-03 5.22371135458e-03 5.46093720174e-03 - 5.77651892440e-03 6.17967298585e-03 6.67761981445e-03 7.27338017313e-03 7.96341795569e-03 8.73551184506e-03 - 9.56702175361e-03 1.04238516982e-02 1.12609832188e-02 1.20255038743e-02 1.26620800682e-02 1.31198380533e-02 - 1.33594815778e-02 1.33594815778e-02 1.31198380533e-02 1.26620800682e-02 1.20255038743e-02 1.12609832188e-02 - 1.04238516982e-02 9.56702175361e-03 8.73551184506e-03 7.96341795569e-03 7.27338017313e-03 6.67761981445e-03 - 5.74257125314e-03 5.51272438194e-03 5.34296096392e-03 5.22371135458e-03 5.14599535674e-03 5.10253249618e-03 - 5.08859106656e-03 5.10253249618e-03 5.14599535674e-03 5.22371135458e-03 5.34296096392e-03 5.51272438194e-03 - 5.74257125314e-03 6.04118457084e-03 6.41444748147e-03 6.86339437793e-03 7.38252390656e-03 7.95863052826e-03 - 8.57007132232e-03 9.18679124184e-03 9.77183223433e-03 1.02846446979e-02 1.06856809758e-02 1.09414577715e-02 - 1.10293847869e-02 1.09414577715e-02 1.06856809758e-02 1.02846446979e-02 9.77183223433e-03 9.18679124184e-03 - 8.57007132232e-03 7.95863052826e-03 7.38252390656e-03 6.86339437793e-03 6.41444748147e-03 6.04118457084e-03 - 5.59978938003e-03 5.51272438194e-03 5.46093720174e-03 5.43377044817e-03 5.42174879265e-03 5.41768978229e-03 - 5.41768978229e-03 5.42174879265e-03 5.43377044817e-03 5.46093720174e-03 5.51272438194e-03 5.59978938003e-03 - 5.73268604942e-03 5.92021996667e-03 6.16759269815e-03 6.47483593539e-03 6.83583874198e-03 7.23785699764e-03 - 7.66146344666e-03 8.08133005705e-03 8.46823559623e-03 8.79214216133e-03 9.02578945364e-03 9.14830218340e-03 - 9.14830218340e-03 9.02578945364e-03 8.79214216133e-03 8.46823559623e-03 8.08133005705e-03 7.66146344666e-03 - 7.23785699764e-03 6.83583874198e-03 6.47483593539e-03 6.16759269815e-03 5.92021996667e-03 5.73268604942e-03 - 5.74257125314e-03 5.77651892440e-03 5.82127807001e-03 5.86418256271e-03 5.89466652251e-03 5.90565973456e-03 - 5.89466652251e-03 5.86418256271e-03 5.82127807001e-03 5.77651892440e-03 5.74257125314e-03 5.73268604942e-03 - 5.75903981319e-03 5.83098728503e-03 5.95356833121e-03 6.12657930585e-03 6.34416762186e-03 6.59479473082e-03 - 6.86170422323e-03 7.12420828954e-03 7.35981258047e-03 7.54684340873e-03 7.66717366082e-03 7.70870330534e-03 - 7.66717366082e-03 7.54684340873e-03 7.35981258047e-03 7.12420828954e-03 6.86170422323e-03 6.59479473082e-03 - 6.34416762186e-03 6.12657930585e-03 5.95356833121e-03 5.83098728503e-03 5.75903981319e-03 5.73268604942e-03 - 6.17967298585e-03 6.31909087196e-03 6.44245195186e-03 6.53448601861e-03 6.58362639444e-03 6.58362639444e-03 - 6.53448601861e-03 6.44245195186e-03 6.31909087196e-03 6.17967298585e-03 6.04118457084e-03 5.92021996667e-03 - 5.83098728503e-03 5.78371930190e-03 5.78371930190e-03 5.83098728503e-03 5.92021996667e-03 6.04118457084e-03 - 6.17967298585e-03 6.31909087196e-03 6.44245195186e-03 6.53448601861e-03 6.58362639444e-03 6.58362639444e-03 - 6.53448601861e-03 6.44245195186e-03 6.31909087196e-03 6.17967298585e-03 6.04118457084e-03 5.92021996667e-03 - 5.83098728503e-03 5.78371930190e-03 5.78371930190e-03 5.83098728503e-03 5.92021996667e-03 6.04118457084e-03 - 6.93665223838e-03 7.16922584820e-03 7.35383003280e-03 7.47255069610e-03 7.51351058269e-03 7.47255069610e-03 - 7.35383003280e-03 7.16922584820e-03 6.93665223838e-03 6.67761981445e-03 6.41444748147e-03 6.16759269815e-03 - 5.95356833121e-03 5.78371930190e-03 5.66378434823e-03 5.59394004869e-03 5.56920678348e-03 5.58034633768e-03 - 5.61528193683e-03 5.66079261571e-03 5.70420021497e-03 5.73495116497e-03 5.74602373426e-03 5.73495116497e-03 - 5.70420021497e-03 5.66079261571e-03 5.61528193683e-03 5.58034633768e-03 5.56920678348e-03 5.59394004869e-03 - 5.66378434823e-03 5.78371930190e-03 5.95356833121e-03 6.16759269815e-03 6.41444748147e-03 6.67761981445e-03 - 8.05519399644e-03 8.36917339040e-03 8.59555582378e-03 8.71419097250e-03 8.71419097250e-03 8.59555582378e-03 - 8.36917339040e-03 8.05519399644e-03 7.68014935330e-03 7.27338017313e-03 6.86339437793e-03 6.47483593539e-03 - 6.12657930585e-03 5.83098728503e-03 5.59394004869e-03 5.41531278039e-03 5.28994524639e-03 5.20914423543e-03 - 5.16243150929e-03 5.13913617973e-03 5.12972310883e-03 5.12697112440e-03 5.12697112440e-03 5.12972310883e-03 - 5.13913617973e-03 5.16243150929e-03 5.20914423543e-03 5.28994524639e-03 5.41531278039e-03 5.59394004869e-03 - 5.83098728503e-03 6.12657930585e-03 6.47483593539e-03 6.86339437793e-03 7.27338017313e-03 7.68014935330e-03 - 9.59384043225e-03 9.97511028176e-03 1.02181471415e-02 1.03016601350e-02 1.02181471415e-02 9.97511028176e-03 - 9.59384043225e-03 9.10613117226e-03 8.54973346172e-03 7.96341795569e-03 7.38252390656e-03 6.83583874198e-03 - 6.34416762186e-03 5.92021996667e-03 5.56920678348e-03 5.28994524639e-03 5.07652462266e-03 4.92029966810e-03 - 4.81172327806e-03 4.74176747355e-03 4.70304044562e-03 4.69069423954e-03 4.70304044562e-03 4.74176747355e-03 - 4.81172327806e-03 4.92029966810e-03 5.07652462266e-03 5.28994524639e-03 5.56920678348e-03 5.92021996667e-03 - 6.34416762186e-03 6.83583874198e-03 7.38252390656e-03 7.96341795569e-03 8.54973346172e-03 9.10613117226e-03 - 1.16276251073e-02 1.20550163598e-02 1.22786655737e-02 1.22786655737e-02 1.20550163598e-02 1.16276251073e-02 - 1.10330000246e-02 1.03186231402e-02 9.53627070961e-03 8.73551184506e-03 7.95863052826e-03 7.23785699764e-03 - 6.59479473082e-03 6.04118457084e-03 5.58034633768e-03 5.20914423543e-03 4.92029966810e-03 4.70458873539e-03 - 4.55262020357e-03 4.45623663297e-03 4.40955813989e-03 4.40955813989e-03 4.45623663297e-03 4.55262020357e-03 - 4.70458873539e-03 4.92029966810e-03 5.20914423543e-03 5.58034633768e-03 6.04118457084e-03 6.59479473082e-03 - 7.23785699764e-03 7.95863052826e-03 8.73551184506e-03 9.53627070961e-03 1.03186231402e-02 1.10330000246e-02 - 1.42425749040e-02 1.46810426016e-02 1.48317912783e-02 1.46810426016e-02 1.42425749040e-02 1.35553259639e-02 - 1.26769712537e-02 1.16751572683e-02 1.06181928008e-02 9.56702175361e-03 8.57007132232e-03 7.66146344666e-03 - 6.86170422323e-03 6.17967298585e-03 5.61528193683e-03 5.16243150929e-03 4.81172327806e-03 4.55262020357e-03 - 4.37525079151e-03 4.27192322596e-03 4.23798561825e-03 4.27192322596e-03 4.37525079151e-03 4.55262020357e-03 - 4.81172327806e-03 5.16243150929e-03 5.61528193683e-03 6.17967298585e-03 6.86170422323e-03 7.66146344666e-03 - 8.57007132232e-03 9.56702175361e-03 1.06181928008e-02 1.16751572683e-02 1.26769712537e-02 1.35553259639e-02 - 1.75241772421e-02 1.79167348748e-02 1.79167348748e-02 1.75241772421e-02 1.67754563001e-02 1.57370100687e-02 - 1.44944499034e-02 1.31397287366e-02 1.17590249893e-02 1.04238516982e-02 9.18679124184e-03 8.08133005705e-03 - 7.12420828954e-03 6.31909087196e-03 5.66079261571e-03 5.13913617973e-03 4.74176747355e-03 4.45623663297e-03 - 4.27192322596e-03 4.18152878343e-03 4.18152878343e-03 4.27192322596e-03 4.45623663297e-03 4.74176747355e-03 - 5.13913617973e-03 5.66079261571e-03 6.31909087196e-03 7.12420828954e-03 8.08133005705e-03 9.18679124184e-03 - 1.04238516982e-02 1.17590249893e-02 1.31397287366e-02 1.44944499034e-02 1.57370100687e-02 1.67754563001e-02 - 2.15413174517e-02 2.18005508565e-02 2.15413174517e-02 2.07887392229e-02 1.96135589165e-02 1.81196807915e-02 - 1.64272283654e-02 1.46550533623e-02 1.29064893850e-02 1.12609832188e-02 9.77183223433e-03 8.46823559623e-03 - 7.35981258047e-03 6.44245195186e-03 5.70420021497e-03 5.12972310883e-03 4.70304044562e-03 4.40955813989e-03 - 4.23798561825e-03 4.18152878343e-03 4.23798561825e-03 4.40955813989e-03 4.70304044562e-03 5.12972310883e-03 - 5.70420021497e-03 6.44245195186e-03 7.35981258047e-03 8.46823559623e-03 9.77183223433e-03 1.12609832188e-02 - 1.29064893850e-02 1.46550533623e-02 1.64272283654e-02 1.81196807915e-02 1.96135589165e-02 2.07887392229e-02 - 2.63252408289e-02 2.63252408289e-02 2.56635113913e-02 2.44059448105e-02 2.26718438342e-02 2.06126999880e-02 - 1.83878553878e-02 1.61427916872e-02 1.39945083398e-02 1.20255038743e-02 1.02846446979e-02 8.79214216133e-03 - 7.54684340873e-03 6.53448601861e-03 5.73495116497e-03 5.12697112440e-03 4.69069423954e-03 4.40955813989e-03 - 4.27192322596e-03 4.27192322596e-03 4.40955813989e-03 4.69069423954e-03 5.12697112440e-03 5.73495116497e-03 - 6.53448601861e-03 7.54684340873e-03 8.79214216133e-03 1.02846446979e-02 1.20255038743e-02 1.39945083398e-02 - 1.61427916872e-02 1.83878553878e-02 2.06126999880e-02 2.26718438342e-02 2.44059448105e-02 2.56635113913e-02 - 3.18414068716e-02 3.14127386696e-02 3.01717861136e-02 2.82446089484e-02 2.58139075627e-02 2.30866420056e-02 - 2.02621880335e-02 1.75083321070e-02 1.49488960464e-02 1.26620800682e-02 1.06856809758e-02 9.02578945364e-03 - 7.66717366082e-03 6.58362639444e-03 5.74602373426e-03 5.12697112440e-03 4.70304044562e-03 4.45623663297e-03 - 4.37525079151e-03 4.45623663297e-03 4.70304044562e-03 5.12697112440e-03 5.74602373426e-03 6.58362639444e-03 - 7.66717366082e-03 9.02578945364e-03 1.06856809758e-02 1.26620800682e-02 1.49488960464e-02 1.75083321070e-02 - 2.02621880335e-02 2.30866420056e-02 2.58139075627e-02 2.82446089484e-02 3.01717861136e-02 3.14127386696e-02 - 3.79563421300e-02 3.68889471691e-02 3.48695445110e-02 3.21049723875e-02 2.88533907006e-02 2.53797852965e-02 - 2.19185274002e-02 1.86504890434e-02 1.56960478729e-02 1.31198380533e-02 1.09414577715e-02 9.14830218340e-03 - 7.70870330534e-03 6.58362639444e-03 5.73495116497e-03 5.12972310883e-03 4.74176747355e-03 4.55262020357e-03 - 4.55262020357e-03 4.74176747355e-03 5.12972310883e-03 5.73495116497e-03 6.58362639444e-03 7.70870330534e-03 - 9.14830218340e-03 1.09414577715e-02 1.31198380533e-02 1.56960478729e-02 1.86504890434e-02 2.19185274002e-02 - 2.53797852965e-02 2.88533907006e-02 3.21049723875e-02 3.48695445110e-02 3.68889471691e-02 3.79563421300e-02 - 4.44094609233e-02 4.24686468881e-02 3.94725484932e-02 3.57259716101e-02 3.15673758761e-02 2.73140021666e-02 - 2.32231030162e-02 1.94746684497e-02 1.61729889157e-02 1.33594815778e-02 1.10293847869e-02 9.14830218340e-03 - 7.66717366082e-03 6.53448601861e-03 5.70420021497e-03 5.13913617973e-03 4.81172327806e-03 4.70458873539e-03 - 4.81172327806e-03 5.13913617973e-03 5.70420021497e-03 6.53448601861e-03 7.66717366082e-03 9.14830218340e-03 - 1.10293847869e-02 1.33594815778e-02 1.61729889157e-02 1.94746684497e-02 2.32231030162e-02 2.73140021666e-02 - 3.15673758761e-02 3.57259716101e-02 3.94725484932e-02 4.24686468881e-02 4.44094609233e-02 4.50819394473e-02 - 5.08044555558e-02 4.77625301985e-02 4.36277000850e-02 3.88104397494e-02 3.37228748044e-02 2.87187367840e-02 - 2.40594329852e-02 1.99070659239e-02 1.63370205752e-02 1.33594815778e-02 1.09414577715e-02 9.02578945364e-03 - 7.54684340873e-03 6.44245195186e-03 5.66079261571e-03 5.16243150929e-03 4.92029966810e-03 4.92029966810e-03 - 5.16243150929e-03 5.66079261571e-03 6.44245195186e-03 7.54684340873e-03 9.02578945364e-03 1.09414577715e-02 - 1.33594815778e-02 1.63370205752e-02 1.99070659239e-02 2.40594329852e-02 2.87187367840e-02 3.37228748044e-02 - 3.88104397494e-02 4.36277000850e-02 4.77625301985e-02 5.08044555558e-02 5.24194501424e-02 5.24194501424e-02 - 5.66331890923e-02 5.23143637463e-02 4.69561004766e-02 4.10670403681e-02 3.51127517762e-02 2.94586793037e-02 - 2.43476957086e-02 1.99070659239e-02 1.61729889157e-02 1.31198380533e-02 1.06856809758e-02 8.79214216133e-03 - 7.35981258047e-03 6.31909087196e-03 5.61528193683e-03 5.20914423543e-03 5.07652462266e-03 5.20914423543e-03 - 5.61528193683e-03 6.31909087196e-03 7.35981258047e-03 8.79214216133e-03 1.06856809758e-02 1.31198380533e-02 - 1.61729889157e-02 1.99070659239e-02 2.43476957086e-02 2.94586793037e-02 3.51127517762e-02 4.10670403681e-02 - 4.69561004766e-02 5.23143637463e-02 5.66331890923e-02 5.94462807362e-02 6.04237632524e-02 5.94462807362e-02 - 6.13379141192e-02 5.56676247698e-02 4.91148354625e-02 4.22610610741e-02 3.55932306397e-02 2.94586793037e-02 - 2.40594329852e-02 1.94746684497e-02 1.56960478729e-02 1.26620800682e-02 1.02846446979e-02 8.46823559623e-03 - 7.12420828954e-03 6.17967298585e-03 5.58034633768e-03 5.28994524639e-03 5.28994524639e-03 5.58034633768e-03 - 6.17967298585e-03 7.12420828954e-03 8.46823559623e-03 1.02846446979e-02 1.26620800682e-02 1.56960478729e-02 - 1.94746684497e-02 2.40594329852e-02 2.94586793037e-02 3.55932306397e-02 4.22610610741e-02 4.91148354625e-02 - 5.56676247698e-02 6.13379141192e-02 6.55352798807e-02 6.77723654588e-02 6.77723654588e-02 6.55352798807e-02 - 6.44054743742e-02 5.74494623672e-02 4.98633146719e-02 4.22610610741e-02 3.51127517762e-02 2.87187367840e-02 - 2.32231030162e-02 1.86504890434e-02 1.49488960464e-02 1.20255038743e-02 9.77183223433e-03 8.08133005705e-03 - 6.86170422323e-03 6.04118457084e-03 5.56920678348e-03 5.41531278039e-03 5.56920678348e-03 6.04118457084e-03 - 6.86170422323e-03 8.08133005705e-03 9.77183223433e-03 1.20255038743e-02 1.49488960464e-02 1.86504890434e-02 - 2.32231030162e-02 2.87187367840e-02 3.51127517762e-02 4.22610610741e-02 4.98633146719e-02 5.74494623672e-02 - 6.44054743742e-02 7.00474085615e-02 7.37387049341e-02 7.50243106749e-02 7.37387049341e-02 7.00474085615e-02 - 6.54719417706e-02 5.74494623672e-02 4.91148354625e-02 4.10670403681e-02 3.37228748044e-02 2.73140021666e-02 - 2.19185274002e-02 1.75083321070e-02 1.39945083398e-02 1.12609832188e-02 9.18679124184e-03 7.66146344666e-03 - 6.59479473082e-03 5.92021996667e-03 5.59394004869e-03 5.59394004869e-03 5.92021996667e-03 6.59479473082e-03 - 7.66146344666e-03 9.18679124184e-03 1.12609832188e-02 1.39945083398e-02 1.75083321070e-02 2.19185274002e-02 - 2.73140021666e-02 3.37228748044e-02 4.10670403681e-02 4.91148354625e-02 5.74494623672e-02 6.54719417706e-02 - 7.24538631804e-02 7.76449689484e-02 8.04193974336e-02 8.04193974336e-02 7.76449689484e-02 7.24538631804e-02 - 6.44054743742e-02 5.56676247698e-02 4.69561004766e-02 3.88104397494e-02 3.15673758761e-02 2.53797852965e-02 - 2.02621880335e-02 1.61427916872e-02 1.29064893850e-02 1.04238516982e-02 8.57007132232e-03 7.23785699764e-03 - 6.34416762186e-03 5.83098728503e-03 5.66378434823e-03 5.83098728503e-03 6.34416762186e-03 7.23785699764e-03 - 8.57007132232e-03 1.04238516982e-02 1.29064893850e-02 1.61427916872e-02 2.02621880335e-02 2.53797852965e-02 - 3.15673758761e-02 3.88104397494e-02 4.69561004766e-02 5.56676247698e-02 6.44054743742e-02 7.24538631804e-02 - 7.90059272690e-02 8.33038946145e-02 8.48028174918e-02 8.33038946145e-02 7.90059272690e-02 7.24538631804e-02 - 6.13379141192e-02 5.23143637463e-02 4.36277000850e-02 3.57259716101e-02 2.88533907006e-02 2.30866420056e-02 - 1.83878553878e-02 1.46550533623e-02 1.17590249893e-02 9.56702175361e-03 7.95863052826e-03 6.83583874198e-03 - 6.12657930585e-03 5.78371930190e-03 5.78371930190e-03 6.12657930585e-03 6.83583874198e-03 7.95863052826e-03 - 9.56702175361e-03 1.17590249893e-02 1.46550533623e-02 1.83878553878e-02 2.30866420056e-02 2.88533907006e-02 - 3.57259716101e-02 4.36277000850e-02 5.23143637463e-02 6.13379141192e-02 7.00474085615e-02 7.76449689484e-02 - 8.33038946145e-02 8.63317298438e-02 8.63317298438e-02 8.33038946145e-02 7.76449689484e-02 7.00474085615e-02 - 5.66331890923e-02 4.77625301985e-02 3.94725484932e-02 3.21049723875e-02 2.58139075627e-02 2.06126999880e-02 - 1.64272283654e-02 1.31397287366e-02 1.06181928008e-02 8.73551184506e-03 7.38252390656e-03 6.47483593539e-03 - 5.95356833121e-03 5.78371930190e-03 5.95356833121e-03 6.47483593539e-03 7.38252390656e-03 8.73551184506e-03 - 1.06181928008e-02 1.31397287366e-02 1.64272283654e-02 2.06126999880e-02 2.58139075627e-02 3.21049723875e-02 - 3.94725484932e-02 4.77625301985e-02 5.66331890923e-02 6.55352798807e-02 7.37387049341e-02 8.04193974336e-02 - 8.48028174918e-02 8.63317298438e-02 8.48028174918e-02 8.04193974336e-02 7.37387049341e-02 6.55352798807e-02 - 5.08044555558e-02 4.24686468881e-02 3.48695445110e-02 2.82446089484e-02 2.26718438342e-02 1.81196807915e-02 - 1.44944499034e-02 1.16751572683e-02 9.53627070961e-03 7.96341795569e-03 6.86339437793e-03 6.16759269815e-03 - 5.83098728503e-03 5.83098728503e-03 6.16759269815e-03 6.86339437793e-03 7.96341795569e-03 9.53627070961e-03 - 1.16751572683e-02 1.44944499034e-02 1.81196807915e-02 2.26718438342e-02 2.82446089484e-02 3.48695445110e-02 - 4.24686468881e-02 5.08044555558e-02 5.94462807362e-02 6.77723654588e-02 7.50243106749e-02 8.04193974336e-02 - 8.33038946145e-02 8.33038946145e-02 8.04193974336e-02 7.50243106749e-02 6.77723654588e-02 5.94462807362e-02 - 4.44094609233e-02 3.68889471691e-02 3.01717861136e-02 2.44059448105e-02 1.96135589165e-02 1.57370100687e-02 - 1.26769712537e-02 1.03186231402e-02 8.54973346172e-03 7.27338017313e-03 6.41444748147e-03 5.92021996667e-03 - 5.75903981319e-03 5.92021996667e-03 6.41444748147e-03 7.27338017313e-03 8.54973346172e-03 1.03186231402e-02 - 1.26769712537e-02 1.57370100687e-02 1.96135589165e-02 2.44059448105e-02 3.01717861136e-02 3.68889471691e-02 - 4.44094609233e-02 5.24194501424e-02 6.04237632524e-02 6.77723654588e-02 7.37387049341e-02 7.76449689484e-02 - 7.90059272690e-02 7.76449689484e-02 7.37387049341e-02 6.77723654588e-02 6.04237632524e-02 5.24194501424e-02 - 3.79563421300e-02 3.14127386696e-02 2.56635113913e-02 2.07887392229e-02 1.67754563001e-02 1.35553259639e-02 - 1.10330000246e-02 9.10613117226e-03 7.68014935330e-03 6.67761981445e-03 6.04118457084e-03 5.73268604942e-03 - 5.73268604942e-03 6.04118457084e-03 6.67761981445e-03 7.68014935330e-03 9.10613117226e-03 1.10330000246e-02 - 1.35553259639e-02 1.67754563001e-02 2.07887392229e-02 2.56635113913e-02 3.14127386696e-02 3.79563421300e-02 - 4.50819394473e-02 5.24194501424e-02 5.94462807362e-02 6.55352798807e-02 7.00474085615e-02 7.24538631804e-02 - 7.24538631804e-02 7.00474085615e-02 6.55352798807e-02 5.94462807362e-02 5.24194501424e-02 4.50819394473e-02 - 2.89647599965e-02 2.40237109616e-02 1.97871783123e-02 1.62588522549e-02 1.33939588194e-02 1.11228159589e-02 - 9.36769905218e-03 8.05519399644e-03 7.12420828954e-03 6.52902358143e-03 6.23916674188e-03 6.23916674188e-03 - 6.52902358143e-03 7.12420828954e-03 8.05519399644e-03 9.36769905218e-03 1.11228159589e-02 1.33939588194e-02 - 1.62588522549e-02 1.97871783123e-02 2.40237109616e-02 2.89647599965e-02 3.45282284639e-02 4.05244812822e-02 - 4.66403070569e-02 5.24477482650e-02 5.74449785733e-02 6.11288569567e-02 6.30873277659e-02 6.30873277659e-02 - 6.11288569567e-02 5.74449785733e-02 5.24477482650e-02 4.66403070569e-02 4.05244812822e-02 3.45282284639e-02 - 2.40237109616e-02 2.00258575799e-02 1.66250325509e-02 1.38094745262e-02 1.15351431719e-02 9.74245511371e-03 - 8.36917339040e-03 7.35981258047e-03 6.67049181789e-03 6.26978037715e-03 6.13840739734e-03 6.26978037715e-03 - 6.67049181789e-03 7.35981258047e-03 8.36917339040e-03 9.74245511371e-03 1.15351431719e-02 1.38094745262e-02 - 1.66250325509e-02 2.00258575799e-02 2.40237109616e-02 2.85763383726e-02 3.35632692529e-02 3.87673596218e-02 - 4.38725463784e-02 4.84855850881e-02 5.21839135623e-02 5.45841783826e-02 5.54167137150e-02 5.45841783826e-02 - 5.21839135623e-02 4.84855850881e-02 4.38725463784e-02 3.87673596218e-02 3.35632692529e-02 2.85763383726e-02 - 1.97871783123e-02 1.66250325509e-02 1.39522993746e-02 1.17508350709e-02 9.98127039361e-03 8.59555582378e-03 - 7.54684340873e-03 6.79567554150e-03 6.31209415558e-03 6.07562992209e-03 6.07562992209e-03 6.31209415558e-03 - 6.79567554150e-03 7.54684340873e-03 8.59555582378e-03 9.98127039361e-03 1.17508350709e-02 1.39522993746e-02 - 1.66250325509e-02 1.97871783123e-02 2.34202555044e-02 2.74512061786e-02 3.17358390207e-02 3.60511821341e-02 - 4.01041807768e-02 4.35604474537e-02 4.60913389830e-02 4.74313143781e-02 4.74313143781e-02 4.60913389830e-02 - 4.35604474537e-02 4.01041807768e-02 3.60511821341e-02 3.17358390207e-02 2.74512061786e-02 2.34202555044e-02 - 1.62588522549e-02 1.38094745262e-02 1.17508350709e-02 1.00633149755e-02 8.71419097250e-03 7.66717366082e-03 - 6.88914005847e-03 6.35335851926e-03 6.04016501968e-03 5.93719631865e-03 6.04016501968e-03 6.35335851926e-03 - 6.88914005847e-03 7.66717366082e-03 8.71419097250e-03 1.00633149755e-02 1.17508350709e-02 1.38094745262e-02 - 1.62588522549e-02 1.90940368490e-02 2.22726314479e-02 2.57019293917e-02 2.92302840650e-02 3.26483588385e-02 - 3.57044700685e-02 3.81345549630e-02 3.97029159910e-02 4.02453701311e-02 3.97029159910e-02 3.81345549630e-02 - 3.57044700685e-02 3.26483588385e-02 2.92302840650e-02 2.57019293917e-02 2.22726314479e-02 1.90940368490e-02 - 1.33939588194e-02 1.15351431719e-02 9.98127039361e-03 8.71419097250e-03 7.70870330534e-03 6.93908976898e-03 - 6.38291972351e-03 6.02253909249e-03 5.84558656512e-03 5.84558656512e-03 6.02253909249e-03 6.38291972351e-03 - 6.93908976898e-03 7.70870330534e-03 8.71419097250e-03 9.98127039361e-03 1.15351431719e-02 1.33939588194e-02 - 1.55601992220e-02 1.80109897723e-02 2.06884779452e-02 2.34923498457e-02 2.62778950395e-02 2.88631293974e-02 - 3.10465495213e-02 3.26341221073e-02 3.34710625414e-02 3.34710625414e-02 3.26341221073e-02 3.10465495213e-02 - 2.88631293974e-02 2.62778950395e-02 2.34923498457e-02 2.06884779452e-02 1.80109897723e-02 1.55601992220e-02 - 1.11228159589e-02 9.74245511371e-03 8.59555582378e-03 7.66717366082e-03 6.93908976898e-03 6.39361872594e-03 - 6.01563766373e-03 5.79365065764e-03 5.72047031573e-03 5.79365065764e-03 6.01563766373e-03 6.39361872594e-03 - 6.93908976898e-03 7.66717366082e-03 8.59555582378e-03 9.74245511371e-03 1.11228159589e-02 1.27424344623e-02 - 1.45906790875e-02 1.66330383744e-02 1.88049742175e-02 2.10090352784e-02 2.31175818882e-02 2.49827563157e-02 - 2.64534808200e-02 2.73972646659e-02 2.77227537368e-02 2.73972646659e-02 2.64534808200e-02 2.49827563157e-02 - 2.31175818882e-02 2.10090352784e-02 1.88049742175e-02 1.66330383744e-02 1.45906790875e-02 1.27424344623e-02 - 9.36769905218e-03 8.36917339040e-03 7.54684340873e-03 6.88914005847e-03 6.38291972351e-03 6.01563766373e-03 - 5.77685140016e-03 5.65928321674e-03 5.65928321674e-03 5.77685140016e-03 6.01563766373e-03 6.38291972351e-03 - 6.88914005847e-03 7.54684340873e-03 8.36917339040e-03 9.36769905218e-03 1.05489279259e-02 1.19093466628e-02 - 1.34297677852e-02 1.50702461704e-02 1.67669692380e-02 1.84326960165e-02 1.99620901041e-02 2.12421582644e-02 - 2.21666114252e-02 2.26519365039e-02 2.26519365039e-02 2.21666114252e-02 2.12421582644e-02 1.99620901041e-02 - 1.84326960165e-02 1.67669692380e-02 1.50702461704e-02 1.34297677852e-02 1.19093466628e-02 1.05489279259e-02 - 8.05519399644e-03 7.35981258047e-03 6.79567554150e-03 6.35335851926e-03 6.02253909249e-03 5.79365065764e-03 - 5.65928321674e-03 5.61497680711e-03 5.65928321674e-03 5.79365065764e-03 6.02253909249e-03 6.35335851926e-03 - 6.79567554150e-03 7.35981258047e-03 8.05519399644e-03 8.88822832040e-03 9.85925299562e-03 1.09586567104e-02 - 1.21629507848e-02 1.34318126710e-02 1.47072813037e-02 1.59162612755e-02 1.69767793036e-02 1.78072941675e-02 - 1.83376793613e-02 1.85201445811e-02 1.83376793613e-02 1.78072941675e-02 1.69767793036e-02 1.59162612755e-02 - 1.47072813037e-02 1.34318126710e-02 1.21629507848e-02 1.09586567104e-02 9.85925299562e-03 8.88822832040e-03 - 7.12420828954e-03 6.67049181789e-03 6.31209415558e-03 6.04016501968e-03 5.84558656512e-03 5.72047031573e-03 - 5.65928321674e-03 5.65928321674e-03 5.72047031573e-03 5.84558656512e-03 6.04016501968e-03 6.31209415558e-03 - 6.67049181789e-03 7.12420828954e-03 7.68014935330e-03 8.34122341388e-03 9.10381322670e-03 9.95507847617e-03 - 1.08706042529e-02 1.18131307076e-02 1.27333396536e-02 1.35733603577e-02 1.42727054437e-02 1.47756456624e-02 - 1.50389831834e-02 1.50389831834e-02 1.47756456624e-02 1.42727054437e-02 1.35733603577e-02 1.27333396536e-02 - 1.18131307076e-02 1.08706042529e-02 9.95507847617e-03 9.10381322670e-03 8.34122341388e-03 7.68014935330e-03 - 6.52902358143e-03 6.26978037715e-03 6.07562992209e-03 5.93719631865e-03 5.84558656512e-03 5.79365065764e-03 - 5.77685140016e-03 5.79365065764e-03 5.84558656512e-03 5.93719631865e-03 6.07562992209e-03 6.26978037715e-03 - 6.52902358143e-03 6.86170422323e-03 7.27338017313e-03 7.76490388909e-03 8.33057919998e-03 8.95658363692e-03 - 9.61987006090e-03 1.02881382638e-02 1.09215936737e-02 1.14766013692e-02 1.19105819676e-02 1.21873907787e-02 - 1.22825573408e-02 1.21873907787e-02 1.19105819676e-02 1.14766013692e-02 1.09215936737e-02 1.02881382638e-02 - 9.61987006090e-03 8.95658363692e-03 8.33057919998e-03 7.76490388909e-03 7.27338017313e-03 6.86170422323e-03 - 6.23916674188e-03 6.13840739734e-03 6.07562992209e-03 6.04016501968e-03 6.02253909249e-03 6.01563766373e-03 - 6.01563766373e-03 6.02253909249e-03 6.04016501968e-03 6.07562992209e-03 6.13840739734e-03 6.23916674188e-03 - 6.38840491477e-03 6.59479473082e-03 6.86339437793e-03 7.19410390186e-03 7.58058258839e-03 8.00955236461e-03 - 8.46060891145e-03 8.90705726329e-03 9.31810768724e-03 9.66211927865e-03 9.91029781221e-03 1.00404664762e-02 - 1.00404664762e-02 9.91029781221e-03 9.66211927865e-03 9.31810768724e-03 8.90705726329e-03 8.46060891145e-03 - 8.00955236461e-03 7.58058258839e-03 7.19410390186e-03 6.86339437793e-03 6.59479473082e-03 6.38840491477e-03 - 6.23916674188e-03 6.26978037715e-03 6.31209415558e-03 6.35335851926e-03 6.38291972351e-03 6.39361872594e-03 - 6.38291972351e-03 6.35335851926e-03 6.31209415558e-03 6.26978037715e-03 6.23916674188e-03 6.23361812745e-03 - 6.26545793635e-03 6.34416762186e-03 6.47483593539e-03 6.65719946009e-03 6.88519888788e-03 7.14689010595e-03 - 7.42492384580e-03 7.69793885145e-03 7.94279014126e-03 8.13716815266e-03 8.26229038338e-03 8.30549434438e-03 - 8.26229038338e-03 8.13716815266e-03 7.94279014126e-03 7.69793885145e-03 7.42492384580e-03 7.14689010595e-03 - 6.88519888788e-03 6.65719946009e-03 6.47483593539e-03 6.34416762186e-03 6.26545793635e-03 6.23361812745e-03 - 6.52902358143e-03 6.67049181789e-03 6.79567554150e-03 6.88914005847e-03 6.93908976898e-03 6.93908976898e-03 - 6.88914005847e-03 6.79567554150e-03 6.67049181789e-03 6.52902358143e-03 6.38840491477e-03 6.26545793635e-03 - 6.17468606834e-03 6.12657930585e-03 6.12657930585e-03 6.17468606834e-03 6.26545793635e-03 6.38840491477e-03 - 6.52902358143e-03 6.67049181789e-03 6.79567554150e-03 6.88914005847e-03 6.93908976898e-03 6.93908976898e-03 - 6.88914005847e-03 6.79567554150e-03 6.67049181789e-03 6.52902358143e-03 6.38840491477e-03 6.26545793635e-03 - 6.17468606834e-03 6.12657930585e-03 6.12657930585e-03 6.17468606834e-03 6.26545793635e-03 6.38840491477e-03 - 7.12420828954e-03 7.35981258047e-03 7.54684340873e-03 7.66717366082e-03 7.70870330534e-03 7.66717366082e-03 - 7.54684340873e-03 7.35981258047e-03 7.12420828954e-03 6.86170422323e-03 6.59479473082e-03 6.34416762186e-03 - 6.12657930585e-03 5.95356833121e-03 5.83098728503e-03 5.75903981319e-03 5.73268604942e-03 5.74257125314e-03 - 5.77651892440e-03 5.82127807001e-03 5.86418256271e-03 5.89466652251e-03 5.90565973456e-03 5.89466652251e-03 - 5.86418256271e-03 5.82127807001e-03 5.77651892440e-03 5.74257125314e-03 5.73268604942e-03 5.75903981319e-03 - 5.83098728503e-03 5.95356833121e-03 6.12657930585e-03 6.34416762186e-03 6.59479473082e-03 6.86170422323e-03 - 8.05519399644e-03 8.36917339040e-03 8.59555582378e-03 8.71419097250e-03 8.71419097250e-03 8.59555582378e-03 - 8.36917339040e-03 8.05519399644e-03 7.68014935330e-03 7.27338017313e-03 6.86339437793e-03 6.47483593539e-03 - 6.12657930585e-03 5.83098728503e-03 5.59394004869e-03 5.41531278039e-03 5.28994524639e-03 5.20914423543e-03 - 5.16243150929e-03 5.13913617973e-03 5.12972310883e-03 5.12697112440e-03 5.12697112440e-03 5.12972310883e-03 - 5.13913617973e-03 5.16243150929e-03 5.20914423543e-03 5.28994524639e-03 5.41531278039e-03 5.59394004869e-03 - 5.83098728503e-03 6.12657930585e-03 6.47483593539e-03 6.86339437793e-03 7.27338017313e-03 7.68014935330e-03 - 9.36769905218e-03 9.74245511371e-03 9.98127039361e-03 1.00633149755e-02 9.98127039361e-03 9.74245511371e-03 - 9.36769905218e-03 8.88822832040e-03 8.34122341388e-03 7.76490388909e-03 7.19410390186e-03 6.65719946009e-03 - 6.17468606834e-03 5.75903981319e-03 5.41531278039e-03 5.14226972170e-03 4.93405372394e-03 4.78210810048e-03 - 4.67692793169e-03 4.60945880297e-03 4.57225197605e-03 4.56041706509e-03 4.57225197605e-03 4.60945880297e-03 - 4.67692793169e-03 4.78210810048e-03 4.93405372394e-03 5.14226972170e-03 5.41531278039e-03 5.75903981319e-03 - 6.17468606834e-03 6.65719946009e-03 7.19410390186e-03 7.76490388909e-03 8.34122341388e-03 8.88822832040e-03 - 1.11228159589e-02 1.15351431719e-02 1.17508350709e-02 1.17508350709e-02 1.15351431719e-02 1.11228159589e-02 - 1.05489279259e-02 9.85925299562e-03 9.10381322670e-03 8.33057919998e-03 7.58058258839e-03 6.88519888788e-03 - 6.26545793635e-03 5.73268604942e-03 5.28994524639e-03 4.93405372394e-03 4.65785937656e-03 4.45230019628e-03 - 4.30805835198e-03 4.21692866215e-03 4.17292027232e-03 4.17292027232e-03 4.21692866215e-03 4.30805835198e-03 - 4.45230019628e-03 4.65785937656e-03 4.93405372394e-03 5.28994524639e-03 5.73268604942e-03 6.26545793635e-03 - 6.88519888788e-03 7.58058258839e-03 8.33057919998e-03 9.10381322670e-03 9.85925299562e-03 1.05489279259e-02 - 1.33939588194e-02 1.38094745262e-02 1.39522993746e-02 1.38094745262e-02 1.33939588194e-02 1.27424344623e-02 - 1.19093466628e-02 1.09586567104e-02 9.95507847617e-03 8.95658363692e-03 8.00955236461e-03 7.14689010595e-03 - 6.38840491477e-03 5.74257125314e-03 5.20914423543e-03 4.78210810048e-03 4.45230019628e-03 4.20942844716e-03 - 4.04374575730e-03 3.94752033538e-03 3.91597292758e-03 3.94752033538e-03 4.04374575730e-03 4.20942844716e-03 - 4.45230019628e-03 4.78210810048e-03 5.20914423543e-03 5.74257125314e-03 6.38840491477e-03 7.14689010595e-03 - 8.00955236461e-03 8.95658363692e-03 9.95507847617e-03 1.09586567104e-02 1.19093466628e-02 1.27424344623e-02 - 1.62588522549e-02 1.66250325509e-02 1.66250325509e-02 1.62588522549e-02 1.55601992220e-02 1.45906790875e-02 - 1.34297677852e-02 1.21629507848e-02 1.08706042529e-02 9.61987006090e-03 8.46060891145e-03 7.42492384580e-03 - 6.52902358143e-03 5.77651892440e-03 5.16243150929e-03 4.67692793169e-03 4.30805835198e-03 4.04374575730e-03 - 3.87358926493e-03 3.79030883078e-03 3.79030883078e-03 3.87358926493e-03 4.04374575730e-03 4.30805835198e-03 - 4.67692793169e-03 5.16243150929e-03 5.77651892440e-03 6.52902358143e-03 7.42492384580e-03 8.46060891145e-03 - 9.61987006090e-03 1.08706042529e-02 1.21629507848e-02 1.34297677852e-02 1.45906790875e-02 1.55601992220e-02 - 1.97871783123e-02 2.00258575799e-02 1.97871783123e-02 1.90940368490e-02 1.80109897723e-02 1.66330383744e-02 - 1.50702461704e-02 1.34318126710e-02 1.18131307076e-02 1.02881382638e-02 8.90705726329e-03 7.69793885145e-03 - 6.67049181789e-03 5.82127807001e-03 5.13913617973e-03 4.60945880297e-03 4.21692866215e-03 3.94752033538e-03 - 3.79030883078e-03 3.73863341678e-03 3.79030883078e-03 3.94752033538e-03 4.21692866215e-03 4.60945880297e-03 - 5.13913617973e-03 5.82127807001e-03 6.67049181789e-03 7.69793885145e-03 8.90705726329e-03 1.02881382638e-02 - 1.18131307076e-02 1.34318126710e-02 1.50702461704e-02 1.66330383744e-02 1.80109897723e-02 1.90940368490e-02 - 2.40237109616e-02 2.40237109616e-02 2.34202555044e-02 2.22726314479e-02 2.06884779452e-02 1.88049742175e-02 - 1.67669692380e-02 1.47072813037e-02 1.27333396536e-02 1.09215936737e-02 9.31810768724e-03 7.94279014126e-03 - 6.79567554150e-03 5.86418256271e-03 5.12972310883e-03 4.57225197605e-03 4.17292027232e-03 3.91597292758e-03 - 3.79030883078e-03 3.79030883078e-03 3.91597292758e-03 4.17292027232e-03 4.57225197605e-03 5.12972310883e-03 - 5.86418256271e-03 6.79567554150e-03 7.94279014126e-03 9.31810768724e-03 1.09215936737e-02 1.27333396536e-02 - 1.47072813037e-02 1.67669692380e-02 1.88049742175e-02 2.06884779452e-02 2.22726314479e-02 2.34202555044e-02 - 2.89647599965e-02 2.85763383726e-02 2.74512061786e-02 2.57019293917e-02 2.34923498457e-02 2.10090352784e-02 - 1.84326960165e-02 1.59162612755e-02 1.35733603577e-02 1.14766013692e-02 9.66211927865e-03 8.13716815266e-03 - 6.88914005847e-03 5.89466652251e-03 5.12697112440e-03 4.56041706509e-03 4.17292027232e-03 3.94752033538e-03 - 3.87358926493e-03 3.94752033538e-03 4.17292027232e-03 4.56041706509e-03 5.12697112440e-03 5.89466652251e-03 - 6.88914005847e-03 8.13716815266e-03 9.66211927865e-03 1.14766013692e-02 1.35733603577e-02 1.59162612755e-02 - 1.84326960165e-02 2.10090352784e-02 2.34923498457e-02 2.57019293917e-02 2.74512061786e-02 2.85763383726e-02 - 3.45282284639e-02 3.35632692529e-02 3.17358390207e-02 2.92302840650e-02 2.62778950395e-02 2.31175818882e-02 - 1.99620901041e-02 1.69767793036e-02 1.42727054437e-02 1.19105819676e-02 9.91029781221e-03 8.26229038338e-03 - 6.93908976898e-03 5.90565973456e-03 5.12697112440e-03 4.57225197605e-03 4.21692866215e-03 4.04374575730e-03 - 4.04374575730e-03 4.21692866215e-03 4.57225197605e-03 5.12697112440e-03 5.90565973456e-03 6.93908976898e-03 - 8.26229038338e-03 9.91029781221e-03 1.19105819676e-02 1.42727054437e-02 1.69767793036e-02 1.99620901041e-02 - 2.31175818882e-02 2.62778950395e-02 2.92302840650e-02 3.17358390207e-02 3.35632692529e-02 3.45282284639e-02 - 4.05244812822e-02 3.87673596218e-02 3.60511821341e-02 3.26483588385e-02 2.88631293974e-02 2.49827563157e-02 - 2.12421582644e-02 1.78072941675e-02 1.47756456624e-02 1.21873907787e-02 1.00404664762e-02 8.30549434438e-03 - 6.93908976898e-03 5.89466652251e-03 5.12972310883e-03 4.60945880297e-03 4.30805835198e-03 4.20942844716e-03 - 4.30805835198e-03 4.60945880297e-03 5.12972310883e-03 5.89466652251e-03 6.93908976898e-03 8.30549434438e-03 - 1.00404664762e-02 1.21873907787e-02 1.47756456624e-02 1.78072941675e-02 2.12421582644e-02 2.49827563157e-02 - 2.88631293974e-02 3.26483588385e-02 3.60511821341e-02 3.87673596218e-02 4.05244812822e-02 4.11328816616e-02 - 4.66403070569e-02 4.38725463784e-02 4.01041807768e-02 3.57044700685e-02 3.10465495213e-02 2.64534808200e-02 - 2.21666114252e-02 1.83376793613e-02 1.50389831834e-02 1.22825573408e-02 1.00404664762e-02 8.26229038338e-03 - 6.88914005847e-03 5.86418256271e-03 5.13913617973e-03 4.67692793169e-03 4.45230019628e-03 4.45230019628e-03 - 4.67692793169e-03 5.13913617973e-03 5.86418256271e-03 6.88914005847e-03 8.26229038338e-03 1.00404664762e-02 - 1.22825573408e-02 1.50389831834e-02 1.83376793613e-02 2.21666114252e-02 2.64534808200e-02 3.10465495213e-02 - 3.57044700685e-02 4.01041807768e-02 4.38725463784e-02 4.66403070569e-02 4.81082332430e-02 4.81082332430e-02 - 5.24477482650e-02 4.84855850881e-02 4.35604474537e-02 3.81345549630e-02 3.26341221073e-02 2.73972646659e-02 - 2.26519365039e-02 1.85201445811e-02 1.50389831834e-02 1.21873907787e-02 9.91029781221e-03 8.13716815266e-03 - 6.79567554150e-03 5.82127807001e-03 5.16243150929e-03 4.78210810048e-03 4.65785937656e-03 4.78210810048e-03 - 5.16243150929e-03 5.82127807001e-03 6.79567554150e-03 8.13716815266e-03 9.91029781221e-03 1.21873907787e-02 - 1.50389831834e-02 1.85201445811e-02 2.26519365039e-02 2.73972646659e-02 3.26341221073e-02 3.81345549630e-02 - 4.35604474537e-02 4.84855850881e-02 5.24477482650e-02 5.50251512552e-02 5.59201471811e-02 5.50251512552e-02 - 5.74449785733e-02 5.21839135623e-02 4.60913389830e-02 3.97029159910e-02 3.34710625414e-02 2.77227537368e-02 - 2.26519365039e-02 1.83376793613e-02 1.47756456624e-02 1.19105819676e-02 9.66211927865e-03 7.94279014126e-03 - 6.67049181789e-03 5.77651892440e-03 5.20914423543e-03 4.93405372394e-03 4.93405372394e-03 5.20914423543e-03 - 5.77651892440e-03 6.67049181789e-03 7.94279014126e-03 9.66211927865e-03 1.19105819676e-02 1.47756456624e-02 - 1.83376793613e-02 2.26519365039e-02 2.77227537368e-02 3.34710625414e-02 3.97029159910e-02 4.60913389830e-02 - 5.21839135623e-02 5.74449785733e-02 6.13334872428e-02 6.34040688222e-02 6.34040688222e-02 6.13334872428e-02 - 6.11288569567e-02 5.45841783826e-02 4.74313143781e-02 4.02453701311e-02 3.34710625414e-02 2.73972646659e-02 - 2.21666114252e-02 1.78072941675e-02 1.42727054437e-02 1.14766013692e-02 9.31810768724e-03 7.69793885145e-03 - 6.52902358143e-03 5.74257125314e-03 5.28994524639e-03 5.14226972170e-03 5.28994524639e-03 5.74257125314e-03 - 6.52902358143e-03 7.69793885145e-03 9.31810768724e-03 1.14766013692e-02 1.42727054437e-02 1.78072941675e-02 - 2.21666114252e-02 2.73972646659e-02 3.34710625414e-02 4.02453701311e-02 4.74313143781e-02 5.45841783826e-02 - 6.11288569567e-02 6.64284767715e-02 6.98920688762e-02 7.10977313661e-02 6.98920688762e-02 6.64284767715e-02 - 6.30873277659e-02 5.54167137150e-02 4.74313143781e-02 3.97029159910e-02 3.26341221073e-02 2.64534808200e-02 - 2.12421582644e-02 1.69767793036e-02 1.35733603577e-02 1.09215936737e-02 8.90705726329e-03 7.42492384580e-03 - 6.38840491477e-03 5.73268604942e-03 5.41531278039e-03 5.41531278039e-03 5.73268604942e-03 6.38840491477e-03 - 7.42492384580e-03 8.90705726329e-03 1.09215936737e-02 1.35733603577e-02 1.69767793036e-02 2.12421582644e-02 - 2.64534808200e-02 3.26341221073e-02 3.97029159910e-02 4.74313143781e-02 5.54167137150e-02 6.30873277659e-02 - 6.97522426294e-02 7.47020608958e-02 7.73458021392e-02 7.73458021392e-02 7.47020608958e-02 6.97522426294e-02 - 6.30873277659e-02 5.45841783826e-02 4.60913389830e-02 3.81345549630e-02 3.10465495213e-02 2.49827563157e-02 - 1.99620901041e-02 1.59162612755e-02 1.27333396536e-02 1.02881382638e-02 8.46060891145e-03 7.14689010595e-03 - 6.26545793635e-03 5.75903981319e-03 5.59394004869e-03 5.75903981319e-03 6.26545793635e-03 7.14689010595e-03 - 8.46060891145e-03 1.02881382638e-02 1.27333396536e-02 1.59162612755e-02 1.99620901041e-02 2.49827563157e-02 - 3.10465495213e-02 3.81345549630e-02 4.60913389830e-02 5.45841783826e-02 6.30873277659e-02 7.09081350393e-02 - 7.72682499914e-02 8.14375530661e-02 8.28911486673e-02 8.14375530661e-02 7.72682499914e-02 7.09081350393e-02 - 6.11288569567e-02 5.21839135623e-02 4.35604474537e-02 3.57044700685e-02 2.88631293974e-02 2.31175818882e-02 - 1.84326960165e-02 1.47072813037e-02 1.18131307076e-02 9.61987006090e-03 8.00955236461e-03 6.88519888788e-03 - 6.17468606834e-03 5.83098728503e-03 5.83098728503e-03 6.17468606834e-03 6.88519888788e-03 8.00955236461e-03 - 9.61987006090e-03 1.18131307076e-02 1.47072813037e-02 1.84326960165e-02 2.31175818882e-02 2.88631293974e-02 - 3.57044700685e-02 4.35604474537e-02 5.21839135623e-02 6.11288569567e-02 6.97522426294e-02 7.72682499914e-02 - 8.28633557769e-02 8.58561529560e-02 8.58561529560e-02 8.28633557769e-02 7.72682499914e-02 6.97522426294e-02 - 5.74449785733e-02 4.84855850881e-02 4.01041807768e-02 3.26483588385e-02 2.62778950395e-02 2.10090352784e-02 - 1.67669692380e-02 1.34318126710e-02 1.08706042529e-02 8.95658363692e-03 7.58058258839e-03 6.65719946009e-03 - 6.12657930585e-03 5.95356833121e-03 6.12657930585e-03 6.65719946009e-03 7.58058258839e-03 8.95658363692e-03 - 1.08706042529e-02 1.34318126710e-02 1.67669692380e-02 2.10090352784e-02 2.62778950395e-02 3.26483588385e-02 - 4.01041807768e-02 4.84855850881e-02 5.74449785733e-02 6.64284767715e-02 7.47020608958e-02 8.14375530661e-02 - 8.58561529560e-02 8.73972293003e-02 8.58561529560e-02 8.14375530661e-02 7.47020608958e-02 6.64284767715e-02 - 5.24477482650e-02 4.38725463784e-02 3.60511821341e-02 2.92302840650e-02 2.34923498457e-02 1.88049742175e-02 - 1.50702461704e-02 1.21629507848e-02 9.95507847617e-03 8.33057919998e-03 7.19410390186e-03 6.47483593539e-03 - 6.12657930585e-03 6.12657930585e-03 6.47483593539e-03 7.19410390186e-03 8.33057919998e-03 9.95507847617e-03 - 1.21629507848e-02 1.50702461704e-02 1.88049742175e-02 2.34923498457e-02 2.92302840650e-02 3.60511821341e-02 - 4.38725463784e-02 5.24477482650e-02 6.13334872428e-02 6.98920688762e-02 7.73458021392e-02 8.28911486673e-02 - 8.58561529560e-02 8.58561529560e-02 8.28911486673e-02 7.73458021392e-02 6.98920688762e-02 6.13334872428e-02 - 4.66403070569e-02 3.87673596218e-02 3.17358390207e-02 2.57019293917e-02 2.06884779452e-02 1.66330383744e-02 - 1.34297677852e-02 1.09586567104e-02 9.10381322670e-03 7.76490388909e-03 6.86339437793e-03 6.34416762186e-03 - 6.17468606834e-03 6.34416762186e-03 6.86339437793e-03 7.76490388909e-03 9.10381322670e-03 1.09586567104e-02 - 1.34297677852e-02 1.66330383744e-02 2.06884779452e-02 2.57019293917e-02 3.17358390207e-02 3.87673596218e-02 - 4.66403070569e-02 5.50251512552e-02 6.34040688222e-02 7.10977313661e-02 7.73458021392e-02 8.14375530661e-02 - 8.28633557769e-02 8.14375530661e-02 7.73458021392e-02 7.10977313661e-02 6.34040688222e-02 5.50251512552e-02 - 4.05244812822e-02 3.35632692529e-02 2.74512061786e-02 2.22726314479e-02 1.80109897723e-02 1.45906790875e-02 - 1.19093466628e-02 9.85925299562e-03 8.34122341388e-03 7.27338017313e-03 6.59479473082e-03 6.26545793635e-03 - 6.26545793635e-03 6.59479473082e-03 7.27338017313e-03 8.34122341388e-03 9.85925299562e-03 1.19093466628e-02 - 1.45906790875e-02 1.80109897723e-02 2.22726314479e-02 2.74512061786e-02 3.35632692529e-02 4.05244812822e-02 - 4.81082332430e-02 5.59201471811e-02 6.34040688222e-02 6.98920688762e-02 7.47020608958e-02 7.72682499914e-02 - 7.72682499914e-02 7.47020608958e-02 6.98920688762e-02 6.34040688222e-02 5.59201471811e-02 4.81082332430e-02 - 3.45282284639e-02 2.85763383726e-02 2.34202555044e-02 1.90940368490e-02 1.55601992220e-02 1.27424344623e-02 - 1.05489279259e-02 8.88822832040e-03 7.68014935330e-03 6.86170422323e-03 6.38840491477e-03 6.23361812745e-03 - 6.38840491477e-03 6.86170422323e-03 7.68014935330e-03 8.88822832040e-03 1.05489279259e-02 1.27424344623e-02 - 1.55601992220e-02 1.90940368490e-02 2.34202555044e-02 2.85763383726e-02 3.45282284639e-02 4.11328816616e-02 - 4.81082332430e-02 5.50251512552e-02 6.13334872428e-02 6.64284767715e-02 6.97522426294e-02 7.09081350393e-02 - 6.97522426294e-02 6.64284767715e-02 6.13334872428e-02 5.50251512552e-02 4.81082332430e-02 4.11328816616e-02 - 2.69304328597e-02 2.25132701769e-02 1.87538902948e-02 1.56375665721e-02 1.31152359900e-02 1.11228159589e-02 - 9.59384043225e-03 8.46823559623e-03 7.69793885145e-03 7.24904282964e-03 7.10160482063e-03 7.24904282964e-03 - 7.69793885145e-03 8.46823559623e-03 9.59384043225e-03 1.11228159589e-02 1.31152359900e-02 1.56375665721e-02 - 1.87538902948e-02 2.25132701769e-02 2.69304328597e-02 3.19590319446e-02 3.74634706166e-02 4.32002938784e-02 - 4.88190878681e-02 5.38883507401e-02 5.79474348197e-02 6.05796981280e-02 6.14923433640e-02 6.05796981280e-02 - 5.79474348197e-02 5.38883507401e-02 4.88190878681e-02 4.32002938784e-02 3.74634706166e-02 3.19590319446e-02 - 2.25132701769e-02 1.89804120902e-02 1.59907282434e-02 1.35231772103e-02 1.15351431719e-02 9.97511028176e-03 - 8.79214216133e-03 7.94279014126e-03 7.39443450458e-03 7.12561826537e-03 7.12561826537e-03 7.39443450458e-03 - 7.94279014126e-03 8.79214216133e-03 9.97511028176e-03 1.15351431719e-02 1.35231772103e-02 1.59907282434e-02 - 1.89804120902e-02 2.25132701769e-02 2.65706573512e-02 3.10717223250e-02 3.58537824974e-02 4.06654278454e-02 - 4.51788789706e-02 4.90231496620e-02 5.18355302331e-02 5.33236907840e-02 5.33236907840e-02 5.18355302331e-02 - 4.90231496620e-02 4.51788789706e-02 4.06654278454e-02 3.58537824974e-02 3.10717223250e-02 2.65706573512e-02 - 1.87538902948e-02 1.59907282434e-02 1.36633879542e-02 1.17508350709e-02 1.02181471415e-02 9.02578945364e-03 - 8.13716815266e-03 7.52314503521e-03 7.16308508658e-03 7.04448483440e-03 7.16308508658e-03 7.52314503521e-03 - 8.13716815266e-03 9.02578945364e-03 1.02181471415e-02 1.17508350709e-02 1.36633879542e-02 1.59907282434e-02 - 1.87538902948e-02 2.19482820950e-02 2.55281844546e-02 2.93901320501e-02 3.33624200108e-02 3.72078996967e-02 - 4.06430475235e-02 4.33721592307e-02 4.51323632879e-02 4.57409612273e-02 4.51323632879e-02 4.33721592307e-02 - 4.06430475235e-02 3.72078996967e-02 3.33624200108e-02 2.93901320501e-02 2.55281844546e-02 2.19482820950e-02 - 1.56375665721e-02 1.35231772103e-02 1.17508350709e-02 1.03016601350e-02 9.14830218340e-03 8.26229038338e-03 - 7.61927184895e-03 7.20097316500e-03 6.99504538611e-03 6.99504538611e-03 7.20097316500e-03 7.61927184895e-03 - 8.26229038338e-03 9.14830218340e-03 1.03016601350e-02 1.17508350709e-02 1.35231772103e-02 1.56375665721e-02 - 1.80960146721e-02 2.08735527936e-02 2.39063871143e-02 2.70818268649e-02 3.02357338101e-02 3.31615306069e-02 - 3.56312088557e-02 3.74259862301e-02 3.83718132369e-02 3.83718132369e-02 3.74259862301e-02 3.56312088557e-02 - 3.31615306069e-02 3.02357338101e-02 2.70818268649e-02 2.39063871143e-02 2.08735527936e-02 1.80960146721e-02 - 1.31152359900e-02 1.15351431719e-02 1.02181471415e-02 9.14830218340e-03 8.30549434438e-03 7.67065297497e-03 - 7.22847713667e-03 6.96786738821e-03 6.88181758770e-03 6.96786738821e-03 7.22847713667e-03 7.67065297497e-03 - 8.30549434438e-03 9.14830218340e-03 1.02181471415e-02 1.15351431719e-02 1.31152359900e-02 1.49636867906e-02 - 1.70678712692e-02 1.93892705934e-02 2.18557815330e-02 2.43576039836e-02 2.67502344749e-02 2.88661050079e-02 - 3.05340710560e-02 3.16041856284e-02 3.19731919657e-02 3.16041856284e-02 3.05340710560e-02 2.88661050079e-02 - 2.67502344749e-02 2.43576039836e-02 2.18557815330e-02 1.93892705934e-02 1.70678712692e-02 1.49636867906e-02 - 1.11228159589e-02 9.97511028176e-03 9.02578945364e-03 8.26229038338e-03 7.67065297497e-03 7.23847314555e-03 - 6.95605972443e-03 6.81664387654e-03 6.81664387654e-03 6.95605972443e-03 7.23847314555e-03 7.67065297497e-03 - 8.26229038338e-03 9.02578945364e-03 9.97511028176e-03 1.11228159589e-02 1.24755048074e-02 1.40283418589e-02 - 1.57591868798e-02 1.76229803621e-02 1.95479913088e-02 2.14361295219e-02 2.31688478126e-02 2.46187421852e-02 - 2.56657154446e-02 2.62153172241e-02 2.62153172241e-02 2.56657154446e-02 2.46187421852e-02 2.31688478126e-02 - 2.14361295219e-02 1.95479913088e-02 1.76229803621e-02 1.57591868798e-02 1.40283418589e-02 1.24755048074e-02 - 9.59384043225e-03 8.79214216133e-03 8.13716815266e-03 7.61927184895e-03 7.22847713667e-03 6.95605972443e-03 - 6.79537428806e-03 6.74228118806e-03 6.79537428806e-03 6.95605972443e-03 7.22847713667e-03 7.61927184895e-03 - 8.13716815266e-03 8.79214216133e-03 9.59384043225e-03 1.05489279259e-02 1.16573532374e-02 1.29079014387e-02 - 1.42737851127e-02 1.57094271493e-02 1.71497889118e-02 1.85132658939e-02 1.97084075068e-02 2.06439962171e-02 - 2.12413612776e-02 2.14468462049e-02 2.12413612776e-02 2.06439962171e-02 1.97084075068e-02 1.85132658939e-02 - 1.71497889118e-02 1.57094271493e-02 1.42737851127e-02 1.29079014387e-02 1.16573532374e-02 1.05489279259e-02 - 8.46823559623e-03 7.94279014126e-03 7.52314503521e-03 7.20097316500e-03 6.96786738821e-03 6.81664387654e-03 - 6.74228118806e-03 6.74228118806e-03 6.81664387654e-03 6.96786738821e-03 7.20097316500e-03 7.52314503521e-03 - 7.94279014126e-03 8.46823559623e-03 9.10613117226e-03 9.85925299562e-03 1.07235056315e-02 1.16845233837e-02 - 1.27148275869e-02 1.37726366090e-02 1.48031251671e-02 1.57423428102e-02 1.65234811342e-02 1.70848695603e-02 - 1.73786828448e-02 1.73786828448e-02 1.70848695603e-02 1.65234811342e-02 1.57423428102e-02 1.48031251671e-02 - 1.37726366090e-02 1.27148275869e-02 1.16845233837e-02 1.07235056315e-02 9.85925299562e-03 9.10613117226e-03 - 7.69793885145e-03 7.39443450458e-03 7.16308508658e-03 6.99504538611e-03 6.88181758770e-03 6.81664387654e-03 - 6.79537428806e-03 6.81664387654e-03 6.88181758770e-03 6.99504538611e-03 7.16308508658e-03 7.39443450458e-03 - 7.69793885145e-03 8.08133005705e-03 8.54973346172e-03 9.10381322670e-03 9.73748464183e-03 1.04356792319e-02 - 1.11729588764e-02 1.19137265332e-02 1.26143883181e-02 1.32272933414e-02 1.37059602390e-02 1.40109856905e-02 - 1.41157952825e-02 1.40109856905e-02 1.37059602390e-02 1.32272933414e-02 1.26143883181e-02 1.19137265332e-02 - 1.11729588764e-02 1.04356792319e-02 9.73748464183e-03 9.10381322670e-03 8.54973346172e-03 8.08133005705e-03 - 7.24904282964e-03 7.12561826537e-03 7.04448483440e-03 6.99504538611e-03 6.96786738821e-03 6.95605972443e-03 - 6.95605972443e-03 6.96786738821e-03 6.99504538611e-03 7.04448483440e-03 7.12561826537e-03 7.24904282964e-03 - 7.42492384580e-03 7.66146344666e-03 7.96341795569e-03 8.33057919998e-03 8.75631776595e-03 9.22648243576e-03 - 9.71912104775e-03 1.02054916185e-02 1.06524671204e-02 1.10259974674e-02 1.12951380995e-02 1.14361707830e-02 - 1.14361707830e-02 1.12951380995e-02 1.10259974674e-02 1.06524671204e-02 1.02054916185e-02 9.71912104775e-03 - 9.22648243576e-03 8.75631776595e-03 8.33057919998e-03 7.96341795569e-03 7.66146344666e-03 7.42492384580e-03 - 7.10160482063e-03 7.12561826537e-03 7.16308508658e-03 7.20097316500e-03 7.22847713667e-03 7.23847314555e-03 - 7.22847713667e-03 7.20097316500e-03 7.16308508658e-03 7.12561826537e-03 7.10160482063e-03 7.10459522193e-03 - 7.14689010595e-03 7.23785699764e-03 7.38252390656e-03 7.58058258839e-03 7.82576853226e-03 8.10563303358e-03 - 8.40200942373e-03 8.69246386814e-03 8.95261635749e-03 9.15892896774e-03 9.29162040305e-03 9.33741418467e-03 - 9.29162040305e-03 9.15892896774e-03 8.95261635749e-03 8.69246386814e-03 8.40200942373e-03 8.10563303358e-03 - 7.82576853226e-03 7.58058258839e-03 7.38252390656e-03 7.23785699764e-03 7.14689010595e-03 7.10459522193e-03 - 7.24904282964e-03 7.39443450458e-03 7.52314503521e-03 7.61927184895e-03 7.67065297497e-03 7.67065297497e-03 - 7.61927184895e-03 7.52314503521e-03 7.39443450458e-03 7.24904282964e-03 7.10459522193e-03 6.97836085285e-03 - 6.88519888788e-03 6.83583874198e-03 6.83583874198e-03 6.88519888788e-03 6.97836085285e-03 7.10459522193e-03 - 7.24904282964e-03 7.39443450458e-03 7.52314503521e-03 7.61927184895e-03 7.67065297497e-03 7.67065297497e-03 - 7.61927184895e-03 7.52314503521e-03 7.39443450458e-03 7.24904282964e-03 7.10459522193e-03 6.97836085285e-03 - 6.88519888788e-03 6.83583874198e-03 6.83583874198e-03 6.88519888788e-03 6.97836085285e-03 7.10459522193e-03 - 7.69793885145e-03 7.94279014126e-03 8.13716815266e-03 8.26229038338e-03 8.30549434438e-03 8.26229038338e-03 - 8.13716815266e-03 7.94279014126e-03 7.69793885145e-03 7.42492384580e-03 7.14689010595e-03 6.88519888788e-03 - 6.65719946009e-03 6.47483593539e-03 6.34416762186e-03 6.26545793635e-03 6.23361812745e-03 6.23916674188e-03 - 6.26978037715e-03 6.31209415558e-03 6.35335851926e-03 6.38291972351e-03 6.39361872594e-03 6.38291972351e-03 - 6.35335851926e-03 6.31209415558e-03 6.26978037715e-03 6.23916674188e-03 6.23361812745e-03 6.26545793635e-03 - 6.34416762186e-03 6.47483593539e-03 6.65719946009e-03 6.88519888788e-03 7.14689010595e-03 7.42492384580e-03 - 8.46823559623e-03 8.79214216133e-03 9.02578945364e-03 9.14830218340e-03 9.14830218340e-03 9.02578945364e-03 - 8.79214216133e-03 8.46823559623e-03 8.08133005705e-03 7.66146344666e-03 7.23785699764e-03 6.83583874198e-03 - 6.47483593539e-03 6.16759269815e-03 5.92021996667e-03 5.73268604942e-03 5.59978938003e-03 5.51272438194e-03 - 5.46093720174e-03 5.43377044817e-03 5.42174879265e-03 5.41768978229e-03 5.41768978229e-03 5.42174879265e-03 - 5.43377044817e-03 5.46093720174e-03 5.51272438194e-03 5.59978938003e-03 5.73268604942e-03 5.92021996667e-03 - 6.16759269815e-03 6.47483593539e-03 6.83583874198e-03 7.23785699764e-03 7.66146344666e-03 8.08133005705e-03 - 9.59384043225e-03 9.97511028176e-03 1.02181471415e-02 1.03016601350e-02 1.02181471415e-02 9.97511028176e-03 - 9.59384043225e-03 9.10613117226e-03 8.54973346172e-03 7.96341795569e-03 7.38252390656e-03 6.83583874198e-03 - 6.34416762186e-03 5.92021996667e-03 5.56920678348e-03 5.28994524639e-03 5.07652462266e-03 4.92029966810e-03 - 4.81172327806e-03 4.74176747355e-03 4.70304044562e-03 4.69069423954e-03 4.70304044562e-03 4.74176747355e-03 - 4.81172327806e-03 4.92029966810e-03 5.07652462266e-03 5.28994524639e-03 5.56920678348e-03 5.92021996667e-03 - 6.34416762186e-03 6.83583874198e-03 7.38252390656e-03 7.96341795569e-03 8.54973346172e-03 9.10613117226e-03 - 1.11228159589e-02 1.15351431719e-02 1.17508350709e-02 1.17508350709e-02 1.15351431719e-02 1.11228159589e-02 - 1.05489279259e-02 9.85925299562e-03 9.10381322670e-03 8.33057919998e-03 7.58058258839e-03 6.88519888788e-03 - 6.26545793635e-03 5.73268604942e-03 5.28994524639e-03 4.93405372394e-03 4.65785937656e-03 4.45230019628e-03 - 4.30805835198e-03 4.21692866215e-03 4.17292027232e-03 4.17292027232e-03 4.21692866215e-03 4.30805835198e-03 - 4.45230019628e-03 4.65785937656e-03 4.93405372394e-03 5.28994524639e-03 5.73268604942e-03 6.26545793635e-03 - 6.88519888788e-03 7.58058258839e-03 8.33057919998e-03 9.10381322670e-03 9.85925299562e-03 1.05489279259e-02 - 1.31152359900e-02 1.35231772103e-02 1.36633879542e-02 1.35231772103e-02 1.31152359900e-02 1.24755048074e-02 - 1.16573532374e-02 1.07235056315e-02 9.73748464183e-03 8.75631776595e-03 7.82576853226e-03 6.97836085285e-03 - 6.23361812745e-03 5.59978938003e-03 5.07652462266e-03 4.65785937656e-03 4.33477840900e-03 4.09713024865e-03 - 3.93522801758e-03 3.84131375804e-03 3.81054695208e-03 3.84131375804e-03 3.93522801758e-03 4.09713024865e-03 - 4.33477840900e-03 4.65785937656e-03 5.07652462266e-03 5.59978938003e-03 6.23361812745e-03 6.97836085285e-03 - 7.82576853226e-03 8.75631776595e-03 9.73748464183e-03 1.07235056315e-02 1.16573532374e-02 1.24755048074e-02 - 1.56375665721e-02 1.59907282434e-02 1.59907282434e-02 1.56375665721e-02 1.49636867906e-02 1.40283418589e-02 - 1.29079014387e-02 1.16845233837e-02 1.04356792319e-02 9.22648243576e-03 8.10563303358e-03 7.10459522193e-03 - 6.23916674188e-03 5.51272438194e-03 4.92029966810e-03 4.45230019628e-03 4.09713024865e-03 3.84302280796e-03 - 3.67971968314e-03 3.59990872378e-03 3.59990872378e-03 3.67971968314e-03 3.84302280796e-03 4.09713024865e-03 - 4.45230019628e-03 4.92029966810e-03 5.51272438194e-03 6.23916674188e-03 7.10459522193e-03 8.10563303358e-03 - 9.22648243576e-03 1.04356792319e-02 1.16845233837e-02 1.29079014387e-02 1.40283418589e-02 1.49636867906e-02 - 1.87538902948e-02 1.89804120902e-02 1.87538902948e-02 1.80960146721e-02 1.70678712692e-02 1.57591868798e-02 - 1.42737851127e-02 1.27148275869e-02 1.11729588764e-02 9.71912104775e-03 8.40200942373e-03 7.24904282964e-03 - 6.26978037715e-03 5.46093720174e-03 4.81172327806e-03 4.30805835198e-03 3.93522801758e-03 3.67971968314e-03 - 3.53085792774e-03 3.48198055848e-03 3.53085792774e-03 3.67971968314e-03 3.93522801758e-03 4.30805835198e-03 - 4.81172327806e-03 5.46093720174e-03 6.26978037715e-03 7.24904282964e-03 8.40200942373e-03 9.71912104775e-03 - 1.11729588764e-02 1.27148275869e-02 1.42737851127e-02 1.57591868798e-02 1.70678712692e-02 1.80960146721e-02 - 2.25132701769e-02 2.25132701769e-02 2.19482820950e-02 2.08735527936e-02 1.93892705934e-02 1.76229803621e-02 - 1.57094271493e-02 1.37726366090e-02 1.19137265332e-02 1.02054916185e-02 8.69246386814e-03 7.39443450458e-03 - 6.31209415558e-03 5.43377044817e-03 4.74176747355e-03 4.21692866215e-03 3.84131375804e-03 3.59990872378e-03 - 3.48198055848e-03 3.48198055848e-03 3.59990872378e-03 3.84131375804e-03 4.21692866215e-03 4.74176747355e-03 - 5.43377044817e-03 6.31209415558e-03 7.39443450458e-03 8.69246386814e-03 1.02054916185e-02 1.19137265332e-02 - 1.37726366090e-02 1.57094271493e-02 1.76229803621e-02 1.93892705934e-02 2.08735527936e-02 2.19482820950e-02 - 2.69304328597e-02 2.65706573512e-02 2.55281844546e-02 2.39063871143e-02 2.18557815330e-02 1.95479913088e-02 - 1.71497889118e-02 1.48031251671e-02 1.26143883181e-02 1.06524671204e-02 8.95261635749e-03 7.52314503521e-03 - 6.35335851926e-03 5.42174879265e-03 4.70304044562e-03 4.17292027232e-03 3.81054695208e-03 3.59990872378e-03 - 3.53085792774e-03 3.59990872378e-03 3.81054695208e-03 4.17292027232e-03 4.70304044562e-03 5.42174879265e-03 - 6.35335851926e-03 7.52314503521e-03 8.95261635749e-03 1.06524671204e-02 1.26143883181e-02 1.48031251671e-02 - 1.71497889118e-02 1.95479913088e-02 2.18557815330e-02 2.39063871143e-02 2.55281844546e-02 2.65706573512e-02 - 3.19590319446e-02 3.10717223250e-02 2.93901320501e-02 2.70818268649e-02 2.43576039836e-02 2.14361295219e-02 - 1.85132658939e-02 1.57423428102e-02 1.32272933414e-02 1.10259974674e-02 9.15892896774e-03 7.61927184895e-03 - 6.38291972351e-03 5.41768978229e-03 4.69069423954e-03 4.17292027232e-03 3.84131375804e-03 3.67971968314e-03 - 3.67971968314e-03 3.84131375804e-03 4.17292027232e-03 4.69069423954e-03 5.41768978229e-03 6.38291972351e-03 - 7.61927184895e-03 9.15892896774e-03 1.10259974674e-02 1.32272933414e-02 1.57423428102e-02 1.85132658939e-02 - 2.14361295219e-02 2.43576039836e-02 2.70818268649e-02 2.93901320501e-02 3.10717223250e-02 3.19590319446e-02 - 3.74634706166e-02 3.58537824974e-02 3.33624200108e-02 3.02357338101e-02 2.67502344749e-02 2.31688478126e-02 - 1.97084075068e-02 1.65234811342e-02 1.37059602390e-02 1.12951380995e-02 9.29162040305e-03 7.67065297497e-03 - 6.39361872594e-03 5.41768978229e-03 4.70304044562e-03 4.21692866215e-03 3.93522801758e-03 3.84302280796e-03 - 3.93522801758e-03 4.21692866215e-03 4.70304044562e-03 5.41768978229e-03 6.39361872594e-03 7.67065297497e-03 - 9.29162040305e-03 1.12951380995e-02 1.37059602390e-02 1.65234811342e-02 1.97084075068e-02 2.31688478126e-02 - 2.67502344749e-02 3.02357338101e-02 3.33624200108e-02 3.58537824974e-02 3.74634706166e-02 3.80204685260e-02 - 4.32002938784e-02 4.06654278454e-02 3.72078996967e-02 3.31615306069e-02 2.88661050079e-02 2.46187421852e-02 - 2.06439962171e-02 1.70848695603e-02 1.40109856905e-02 1.14361707830e-02 9.33741418467e-03 7.67065297497e-03 - 6.38291972351e-03 5.42174879265e-03 4.74176747355e-03 4.30805835198e-03 4.09713024865e-03 4.09713024865e-03 - 4.30805835198e-03 4.74176747355e-03 5.42174879265e-03 6.38291972351e-03 7.67065297497e-03 9.33741418467e-03 - 1.14361707830e-02 1.40109856905e-02 1.70848695603e-02 2.06439962171e-02 2.46187421852e-02 2.88661050079e-02 - 3.31615306069e-02 3.72078996967e-02 4.06654278454e-02 4.32002938784e-02 4.45431970579e-02 4.45431970579e-02 - 4.88190878681e-02 4.51788789706e-02 4.06430475235e-02 3.56312088557e-02 3.05340710560e-02 2.56657154446e-02 - 2.12413612776e-02 1.73786828448e-02 1.41157952825e-02 1.14361707830e-02 9.29162040305e-03 7.61927184895e-03 - 6.35335851926e-03 5.43377044817e-03 4.81172327806e-03 4.45230019628e-03 4.33477840900e-03 4.45230019628e-03 - 4.81172327806e-03 5.43377044817e-03 6.35335851926e-03 7.61927184895e-03 9.29162040305e-03 1.14361707830e-02 - 1.41157952825e-02 1.73786828448e-02 2.12413612776e-02 2.56657154446e-02 3.05340710560e-02 3.56312088557e-02 - 4.06430475235e-02 4.51788789706e-02 4.88190878681e-02 5.11831265828e-02 5.20033431247e-02 5.11831265828e-02 - 5.38883507401e-02 4.90231496620e-02 4.33721592307e-02 3.74259862301e-02 3.16041856284e-02 2.62153172241e-02 - 2.14468462049e-02 1.73786828448e-02 1.40109856905e-02 1.12951380995e-02 9.15892896774e-03 7.52314503521e-03 - 6.31209415558e-03 5.46093720174e-03 4.92029966810e-03 4.65785937656e-03 4.65785937656e-03 4.92029966810e-03 - 5.46093720174e-03 6.31209415558e-03 7.52314503521e-03 9.15892896774e-03 1.12951380995e-02 1.40109856905e-02 - 1.73786828448e-02 2.14468462049e-02 2.62153172241e-02 3.16041856284e-02 3.74259862301e-02 4.33721592307e-02 - 4.90231496620e-02 5.38883507401e-02 5.74762428735e-02 5.93841418824e-02 5.93841418824e-02 5.74762428735e-02 - 5.79474348197e-02 5.18355302331e-02 4.51323632879e-02 3.83718132369e-02 3.19731919657e-02 2.62153172241e-02 - 2.12413612776e-02 1.70848695603e-02 1.37059602390e-02 1.10259974674e-02 8.95261635749e-03 7.39443450458e-03 - 6.26978037715e-03 5.51272438194e-03 5.07652462266e-03 4.93405372394e-03 5.07652462266e-03 5.51272438194e-03 - 6.26978037715e-03 7.39443450458e-03 8.95261635749e-03 1.10259974674e-02 1.37059602390e-02 1.70848695603e-02 - 2.12413612776e-02 2.62153172241e-02 3.19731919657e-02 3.83718132369e-02 4.51323632879e-02 5.18355302331e-02 - 5.79474348197e-02 6.28828729732e-02 6.61022866145e-02 6.72218662363e-02 6.61022866145e-02 6.28828729732e-02 - 6.05796981280e-02 5.33236907840e-02 4.57409612273e-02 3.83718132369e-02 3.16041856284e-02 2.56657154446e-02 - 2.06439962171e-02 1.65234811342e-02 1.32272933414e-02 1.06524671204e-02 8.69246386814e-03 7.24904282964e-03 - 6.23916674188e-03 5.59978938003e-03 5.28994524639e-03 5.28994524639e-03 5.59978938003e-03 6.23916674188e-03 - 7.24904282964e-03 8.69246386814e-03 1.06524671204e-02 1.32272933414e-02 1.65234811342e-02 2.06439962171e-02 - 2.56657154446e-02 3.16041856284e-02 3.83718132369e-02 4.57409612273e-02 5.33236907840e-02 6.05796981280e-02 - 6.68641206041e-02 7.15201290633e-02 7.40032629540e-02 7.40032629540e-02 7.15201290633e-02 6.68641206041e-02 - 6.14923433640e-02 5.33236907840e-02 4.51323632879e-02 3.74259862301e-02 3.05340710560e-02 2.46187421852e-02 - 1.97084075068e-02 1.57423428102e-02 1.26143883181e-02 1.02054916185e-02 8.40200942373e-03 7.10459522193e-03 - 6.23361812745e-03 5.73268604942e-03 5.56920678348e-03 5.73268604942e-03 6.23361812745e-03 7.10459522193e-03 - 8.40200942373e-03 1.02054916185e-02 1.26143883181e-02 1.57423428102e-02 1.97084075068e-02 2.46187421852e-02 - 3.05340710560e-02 3.74259862301e-02 4.51323632879e-02 5.33236907840e-02 6.14923433640e-02 6.89793219251e-02 - 7.50510418428e-02 7.90236437036e-02 8.04073084192e-02 7.90236437036e-02 7.50510418428e-02 6.89793219251e-02 - 6.05796981280e-02 5.18355302331e-02 4.33721592307e-02 3.56312088557e-02 2.88661050079e-02 2.31688478126e-02 - 1.85132658939e-02 1.48031251671e-02 1.19137265332e-02 9.71912104775e-03 8.10563303358e-03 6.97836085285e-03 - 6.26545793635e-03 5.92021996667e-03 5.92021996667e-03 6.26545793635e-03 6.97836085285e-03 8.10563303358e-03 - 9.71912104775e-03 1.19137265332e-02 1.48031251671e-02 1.85132658939e-02 2.31688478126e-02 2.88661050079e-02 - 3.56312088557e-02 4.33721592307e-02 5.18355302331e-02 6.05796981280e-02 6.89793219251e-02 7.62783857555e-02 - 8.16998180862e-02 8.45957298814e-02 8.45957298814e-02 8.16998180862e-02 7.62783857555e-02 6.89793219251e-02 - 5.79474348197e-02 4.90231496620e-02 4.06430475235e-02 3.31615306069e-02 2.67502344749e-02 2.14361295219e-02 - 1.71497889118e-02 1.37726366090e-02 1.11729588764e-02 9.22648243576e-03 7.82576853226e-03 6.88519888788e-03 - 6.34416762186e-03 6.16759269815e-03 6.34416762186e-03 6.88519888788e-03 7.82576853226e-03 9.22648243576e-03 - 1.11729588764e-02 1.37726366090e-02 1.71497889118e-02 2.14361295219e-02 2.67502344749e-02 3.31615306069e-02 - 4.06430475235e-02 4.90231496620e-02 5.79474348197e-02 6.68641206041e-02 7.50510418428e-02 8.16998180862e-02 - 8.60542685404e-02 8.75716967614e-02 8.60542685404e-02 8.16998180862e-02 7.50510418428e-02 6.68641206041e-02 - 5.38883507401e-02 4.51788789706e-02 3.72078996967e-02 3.02357338101e-02 2.43576039836e-02 1.95479913088e-02 - 1.57094271493e-02 1.27148275869e-02 1.04356792319e-02 8.75631776595e-03 7.58058258839e-03 6.83583874198e-03 - 6.47483593539e-03 6.47483593539e-03 6.83583874198e-03 7.58058258839e-03 8.75631776595e-03 1.04356792319e-02 - 1.27148275869e-02 1.57094271493e-02 1.95479913088e-02 2.43576039836e-02 3.02357338101e-02 3.72078996967e-02 - 4.51788789706e-02 5.38883507401e-02 6.28828729732e-02 7.15201290633e-02 7.90236437036e-02 8.45957298814e-02 - 8.75716967614e-02 8.75716967614e-02 8.45957298814e-02 7.90236437036e-02 7.15201290633e-02 6.28828729732e-02 - 4.88190878681e-02 4.06654278454e-02 3.33624200108e-02 2.70818268649e-02 2.18557815330e-02 1.76229803621e-02 - 1.42737851127e-02 1.16845233837e-02 9.73748464183e-03 8.33057919998e-03 7.38252390656e-03 6.83583874198e-03 - 6.65719946009e-03 6.83583874198e-03 7.38252390656e-03 8.33057919998e-03 9.73748464183e-03 1.16845233837e-02 - 1.42737851127e-02 1.76229803621e-02 2.18557815330e-02 2.70818268649e-02 3.33624200108e-02 4.06654278454e-02 - 4.88190878681e-02 5.74762428735e-02 6.61022866145e-02 7.40032629540e-02 8.04073084192e-02 8.45957298814e-02 - 8.60542685404e-02 8.45957298814e-02 8.04073084192e-02 7.40032629540e-02 6.61022866145e-02 5.74762428735e-02 - 4.32002938784e-02 3.58537824974e-02 2.93901320501e-02 2.39063871143e-02 1.93892705934e-02 1.57591868798e-02 - 1.29079014387e-02 1.07235056315e-02 9.10381322670e-03 7.96341795569e-03 7.23785699764e-03 6.88519888788e-03 - 6.88519888788e-03 7.23785699764e-03 7.96341795569e-03 9.10381322670e-03 1.07235056315e-02 1.29079014387e-02 - 1.57591868798e-02 1.93892705934e-02 2.39063871143e-02 2.93901320501e-02 3.58537824974e-02 4.32002938784e-02 - 5.11831265828e-02 5.93841418824e-02 6.72218662363e-02 7.40032629540e-02 7.90236437036e-02 8.16998180862e-02 - 8.16998180862e-02 7.90236437036e-02 7.40032629540e-02 6.72218662363e-02 5.93841418824e-02 5.11831265828e-02 - 3.74634706166e-02 3.10717223250e-02 2.55281844546e-02 2.08735527936e-02 1.70678712692e-02 1.40283418589e-02 - 1.16573532374e-02 9.85925299562e-03 8.54973346172e-03 7.66146344666e-03 7.14689010595e-03 6.97836085285e-03 - 7.14689010595e-03 7.66146344666e-03 8.54973346172e-03 9.85925299562e-03 1.16573532374e-02 1.40283418589e-02 - 1.70678712692e-02 2.08735527936e-02 2.55281844546e-02 3.10717223250e-02 3.74634706166e-02 4.45431970579e-02 - 5.20033431247e-02 5.93841418824e-02 6.61022866145e-02 7.15201290633e-02 7.50510418428e-02 7.62783857555e-02 - 7.50510418428e-02 7.15201290633e-02 6.61022866145e-02 5.93841418824e-02 5.20033431247e-02 4.45431970579e-02 - 3.19590319446e-02 2.65706573512e-02 2.19482820950e-02 1.80960146721e-02 1.49636867906e-02 1.24755048074e-02 - 1.05489279259e-02 9.10613117226e-03 8.08133005705e-03 7.42492384580e-03 7.10459522193e-03 7.10459522193e-03 - 7.42492384580e-03 8.08133005705e-03 9.10613117226e-03 1.05489279259e-02 1.24755048074e-02 1.49636867906e-02 - 1.80960146721e-02 2.19482820950e-02 2.65706573512e-02 3.19590319446e-02 3.80204685260e-02 4.45431970579e-02 - 5.11831265828e-02 5.74762428735e-02 6.28828729732e-02 6.68641206041e-02 6.89793219251e-02 6.89793219251e-02 - 6.68641206041e-02 6.28828729732e-02 5.74762428735e-02 5.11831265828e-02 4.45431970579e-02 3.80204685260e-02 - 2.57176061925e-02 2.17657781241e-02 1.84129279741e-02 1.56375665721e-02 1.33939588194e-02 1.16276251073e-02 - 1.02846446979e-02 9.31810768724e-03 8.69246386814e-03 8.38500711079e-03 8.38500711079e-03 8.69246386814e-03 - 9.31810768724e-03 1.02846446979e-02 1.16276251073e-02 1.33939588194e-02 1.56375665721e-02 1.84129279741e-02 - 2.17657781241e-02 2.57176061925e-02 3.02423286704e-02 3.52402742752e-02 4.05199675384e-02 4.57968161948e-02 - 5.07121410456e-02 5.48714786192e-02 5.78981879671e-02 5.94941697642e-02 5.94941697642e-02 5.78981879671e-02 - 5.48714786192e-02 5.07121410456e-02 4.57968161948e-02 4.05199675384e-02 3.52402742752e-02 3.02423286704e-02 - 2.17657781241e-02 1.86354478304e-02 1.59907282434e-02 1.38094745262e-02 1.20550163598e-02 1.06856809758e-02 - 9.66211927865e-03 8.95261635749e-03 8.53524112695e-03 8.39746782805e-03 8.53524112695e-03 8.95261635749e-03 - 9.66211927865e-03 1.06856809758e-02 1.20550163598e-02 1.38094745262e-02 1.59907282434e-02 1.86354478304e-02 - 2.17657781241e-02 2.53749373622e-02 2.94074293899e-02 3.37399765679e-02 3.81729635435e-02 4.24386109393e-02 - 4.62258246981e-02 4.92182336225e-02 5.11403130173e-02 5.18034033720e-02 5.11403130173e-02 4.92182336225e-02 - 4.62258246981e-02 4.24386109393e-02 3.81729635435e-02 3.37399765679e-02 2.94074293899e-02 2.53749373622e-02 - 1.84129279741e-02 1.59907282434e-02 1.39522993746e-02 1.22786655737e-02 1.09414577715e-02 9.91029781221e-03 - 9.15892896774e-03 8.66817035987e-03 8.42580807925e-03 8.42580807925e-03 8.66817035987e-03 9.15892896774e-03 - 9.91029781221e-03 1.09414577715e-02 1.22786655737e-02 1.39522993746e-02 1.59907282434e-02 1.84129279741e-02 - 2.12198093897e-02 2.43819637041e-02 2.78244998346e-02 3.14154606035e-02 3.49654910486e-02 3.82415861113e-02 - 4.09927131873e-02 4.29832635915e-02 4.40291518527e-02 4.40291518527e-02 4.29832635915e-02 4.09927131873e-02 - 3.82415861113e-02 3.49654910486e-02 3.14154606035e-02 2.78244998346e-02 2.43819637041e-02 2.12198093897e-02 - 1.56375665721e-02 1.38094745262e-02 1.22786655737e-02 1.10293847869e-02 1.00404664762e-02 9.29162040305e-03 - 8.76725594498e-03 8.45686847188e-03 8.35413904759e-03 8.45686847188e-03 8.76725594498e-03 9.29162040305e-03 - 1.00404664762e-02 1.10293847869e-02 1.22786655737e-02 1.38094745262e-02 1.56375665721e-02 1.77666865554e-02 - 2.01812628043e-02 2.28368095394e-02 2.56499234494e-02 2.84935612207e-02 3.12022017908e-02 3.35871770820e-02 - 3.54595415232e-02 3.66568505349e-02 3.70689589239e-02 3.66568505349e-02 3.54595415232e-02 3.35871770820e-02 - 3.12022017908e-02 2.84935612207e-02 2.56499234494e-02 2.28368095394e-02 2.01812628043e-02 1.77666865554e-02 - 1.33939588194e-02 1.20550163598e-02 1.09414577715e-02 1.00404664762e-02 9.33741418467e-03 8.82009872524e-03 - 8.47998103933e-03 8.31144312544e-03 8.31144312544e-03 8.47998103933e-03 8.82009872524e-03 9.33741418467e-03 - 1.00404664762e-02 1.09414577715e-02 1.20550163598e-02 1.33939588194e-02 1.49636867906e-02 1.67567114426e-02 - 1.87467470027e-02 2.08820531014e-02 2.30804654510e-02 2.52298202509e-02 2.71955666447e-02 2.88348357920e-02 - 3.00149219248e-02 3.06330408871e-02 3.06330408871e-02 3.00149219248e-02 2.88348357920e-02 2.71955666447e-02 - 2.52298202509e-02 2.30804654510e-02 2.08820531014e-02 1.87467470027e-02 1.67567114426e-02 1.49636867906e-02 - 1.16276251073e-02 1.06856809758e-02 9.91029781221e-03 9.29162040305e-03 8.82009872524e-03 8.48843476768e-03 - 8.29158854156e-03 8.22635918544e-03 8.29158854156e-03 8.48843476768e-03 8.82009872524e-03 9.29162040305e-03 - 9.91029781221e-03 1.06856809758e-02 1.16276251073e-02 1.27424344623e-02 1.40283418589e-02 1.54709928045e-02 - 1.70389543521e-02 1.86800926235e-02 2.03206914317e-02 2.18687619531e-02 2.32217587400e-02 2.42781130820e-02 - 2.49511167951e-02 2.51823253991e-02 2.49511167951e-02 2.42781130820e-02 2.32217587400e-02 2.18687619531e-02 - 2.03206914317e-02 1.86800926235e-02 1.70389543521e-02 1.54709928045e-02 1.40283418589e-02 1.27424344623e-02 - 1.02846446979e-02 9.66211927865e-03 9.15892896774e-03 8.76725594498e-03 8.47998103933e-03 8.29158854156e-03 - 8.19834740781e-03 8.19834740781e-03 8.29158854156e-03 8.47998103933e-03 8.76725594498e-03 9.15892896774e-03 - 9.66211927865e-03 1.02846446979e-02 1.10330000246e-02 1.19093466628e-02 1.29079014387e-02 1.40112393540e-02 - 1.51874137660e-02 1.63890080671e-02 1.75547637226e-02 1.86137801375e-02 1.94921954522e-02 2.01220876747e-02 - 2.04512222766e-02 2.04512222766e-02 2.01220876747e-02 1.94921954522e-02 1.86137801375e-02 1.75547637226e-02 - 1.63890080671e-02 1.51874137660e-02 1.40112393540e-02 1.29079014387e-02 1.19093466628e-02 1.10330000246e-02 - 9.31810768724e-03 8.95261635749e-03 8.66817035987e-03 8.45686847188e-03 8.31144312544e-03 8.22635918544e-03 - 8.19834740781e-03 8.22635918544e-03 8.31144312544e-03 8.45686847188e-03 8.66817035987e-03 8.95261635749e-03 - 9.31810768724e-03 9.77183223433e-03 1.03186231402e-02 1.09586567104e-02 1.16845233837e-02 1.24785638223e-02 - 1.33116675302e-02 1.41440793855e-02 1.49279448733e-02 1.56112881223e-02 1.61434902729e-02 1.64818809732e-02 - 1.65980023724e-02 1.64818809732e-02 1.61434902729e-02 1.56112881223e-02 1.49279448733e-02 1.41440793855e-02 - 1.33116675302e-02 1.24785638223e-02 1.16845233837e-02 1.09586567104e-02 1.03186231402e-02 9.77183223433e-03 - 8.69246386814e-03 8.53524112695e-03 8.42580807925e-03 8.35413904759e-03 8.31144312544e-03 8.29158854156e-03 - 8.29158854156e-03 8.31144312544e-03 8.35413904759e-03 8.42580807925e-03 8.53524112695e-03 8.69246386814e-03 - 8.90705726329e-03 9.18679124184e-03 9.53627070961e-03 9.95507847617e-03 1.04356792319e-02 1.09620544703e-02 - 1.15097880648e-02 1.20475550421e-02 1.25396406703e-02 1.29494247541e-02 1.32437842255e-02 1.33976732300e-02 - 1.33976732300e-02 1.32437842255e-02 1.29494247541e-02 1.25396406703e-02 1.20475550421e-02 1.15097880648e-02 - 1.09620544703e-02 1.04356792319e-02 9.95507847617e-03 9.53627070961e-03 9.18679124184e-03 8.90705726329e-03 - 8.38500711079e-03 8.39746782805e-03 8.42580807925e-03 8.45686847188e-03 8.47998103933e-03 8.48843476768e-03 - 8.47998103933e-03 8.45686847188e-03 8.42580807925e-03 8.39746782805e-03 8.38500711079e-03 8.40200942373e-03 - 8.46060891145e-03 8.57007132232e-03 8.73551184506e-03 8.95658363692e-03 9.22648243576e-03 9.53173661310e-03 - 9.85294674885e-03 1.01663421573e-02 1.04460621935e-02 1.06671499136e-02 1.08088949298e-02 1.08577130860e-02 - 1.08088949298e-02 1.06671499136e-02 1.04460621935e-02 1.01663421573e-02 9.85294674885e-03 9.53173661310e-03 - 9.22648243576e-03 8.95658363692e-03 8.73551184506e-03 8.57007132232e-03 8.46060891145e-03 8.40200942373e-03 - 8.38500711079e-03 8.53524112695e-03 8.66817035987e-03 8.76725594498e-03 8.82009872524e-03 8.82009872524e-03 - 8.76725594498e-03 8.66817035987e-03 8.53524112695e-03 8.38500711079e-03 8.23585736203e-03 8.10563303358e-03 - 8.00955236461e-03 7.95863052826e-03 7.95863052826e-03 8.00955236461e-03 8.10563303358e-03 8.23585736203e-03 - 8.38500711079e-03 8.53524112695e-03 8.66817035987e-03 8.76725594498e-03 8.82009872524e-03 8.82009872524e-03 - 8.76725594498e-03 8.66817035987e-03 8.53524112695e-03 8.38500711079e-03 8.23585736203e-03 8.10563303358e-03 - 8.00955236461e-03 7.95863052826e-03 7.95863052826e-03 8.00955236461e-03 8.10563303358e-03 8.23585736203e-03 - 8.69246386814e-03 8.95261635749e-03 9.15892896774e-03 9.29162040305e-03 9.33741418467e-03 9.29162040305e-03 - 9.15892896774e-03 8.95261635749e-03 8.69246386814e-03 8.40200942373e-03 8.10563303358e-03 7.82576853226e-03 - 7.58058258839e-03 7.38252390656e-03 7.23785699764e-03 7.14689010595e-03 7.10459522193e-03 7.10160482063e-03 - 7.12561826537e-03 7.16308508658e-03 7.20097316500e-03 7.22847713667e-03 7.23847314555e-03 7.22847713667e-03 - 7.20097316500e-03 7.16308508658e-03 7.12561826537e-03 7.10160482063e-03 7.10459522193e-03 7.14689010595e-03 - 7.23785699764e-03 7.38252390656e-03 7.58058258839e-03 7.82576853226e-03 8.10563303358e-03 8.40200942373e-03 - 9.31810768724e-03 9.66211927865e-03 9.91029781221e-03 1.00404664762e-02 1.00404664762e-02 9.91029781221e-03 - 9.66211927865e-03 9.31810768724e-03 8.90705726329e-03 8.46060891145e-03 8.00955236461e-03 7.58058258839e-03 - 7.19410390186e-03 6.86339437793e-03 6.59479473082e-03 6.38840491477e-03 6.23916674188e-03 6.13840739734e-03 - 6.07562992209e-03 6.04016501968e-03 6.02253909249e-03 6.01563766373e-03 6.01563766373e-03 6.02253909249e-03 - 6.04016501968e-03 6.07562992209e-03 6.13840739734e-03 6.23916674188e-03 6.38840491477e-03 6.59479473082e-03 - 6.86339437793e-03 7.19410390186e-03 7.58058258839e-03 8.00955236461e-03 8.46060891145e-03 8.90705726329e-03 - 1.02846446979e-02 1.06856809758e-02 1.09414577715e-02 1.10293847869e-02 1.09414577715e-02 1.06856809758e-02 - 1.02846446979e-02 9.77183223433e-03 9.18679124184e-03 8.57007132232e-03 7.95863052826e-03 7.38252390656e-03 - 6.86339437793e-03 6.41444748147e-03 6.04118457084e-03 5.74257125314e-03 5.51272438194e-03 5.34296096392e-03 - 5.22371135458e-03 5.14599535674e-03 5.10253249618e-03 5.08859106656e-03 5.10253249618e-03 5.14599535674e-03 - 5.22371135458e-03 5.34296096392e-03 5.51272438194e-03 5.74257125314e-03 6.04118457084e-03 6.41444748147e-03 - 6.86339437793e-03 7.38252390656e-03 7.95863052826e-03 8.57007132232e-03 9.18679124184e-03 9.77183223433e-03 - 1.16276251073e-02 1.20550163598e-02 1.22786655737e-02 1.22786655737e-02 1.20550163598e-02 1.16276251073e-02 - 1.10330000246e-02 1.03186231402e-02 9.53627070961e-03 8.73551184506e-03 7.95863052826e-03 7.23785699764e-03 - 6.59479473082e-03 6.04118457084e-03 5.58034633768e-03 5.20914423543e-03 4.92029966810e-03 4.70458873539e-03 - 4.55262020357e-03 4.45623663297e-03 4.40955813989e-03 4.40955813989e-03 4.45623663297e-03 4.55262020357e-03 - 4.70458873539e-03 4.92029966810e-03 5.20914423543e-03 5.58034633768e-03 6.04118457084e-03 6.59479473082e-03 - 7.23785699764e-03 7.95863052826e-03 8.73551184506e-03 9.53627070961e-03 1.03186231402e-02 1.10330000246e-02 - 1.33939588194e-02 1.38094745262e-02 1.39522993746e-02 1.38094745262e-02 1.33939588194e-02 1.27424344623e-02 - 1.19093466628e-02 1.09586567104e-02 9.95507847617e-03 8.95658363692e-03 8.00955236461e-03 7.14689010595e-03 - 6.38840491477e-03 5.74257125314e-03 5.20914423543e-03 4.78210810048e-03 4.45230019628e-03 4.20942844716e-03 - 4.04374575730e-03 3.94752033538e-03 3.91597292758e-03 3.94752033538e-03 4.04374575730e-03 4.20942844716e-03 - 4.45230019628e-03 4.78210810048e-03 5.20914423543e-03 5.74257125314e-03 6.38840491477e-03 7.14689010595e-03 - 8.00955236461e-03 8.95658363692e-03 9.95507847617e-03 1.09586567104e-02 1.19093466628e-02 1.27424344623e-02 - 1.56375665721e-02 1.59907282434e-02 1.59907282434e-02 1.56375665721e-02 1.49636867906e-02 1.40283418589e-02 - 1.29079014387e-02 1.16845233837e-02 1.04356792319e-02 9.22648243576e-03 8.10563303358e-03 7.10459522193e-03 - 6.23916674188e-03 5.51272438194e-03 4.92029966810e-03 4.45230019628e-03 4.09713024865e-03 3.84302280796e-03 - 3.67971968314e-03 3.59990872378e-03 3.59990872378e-03 3.67971968314e-03 3.84302280796e-03 4.09713024865e-03 - 4.45230019628e-03 4.92029966810e-03 5.51272438194e-03 6.23916674188e-03 7.10459522193e-03 8.10563303358e-03 - 9.22648243576e-03 1.04356792319e-02 1.16845233837e-02 1.29079014387e-02 1.40283418589e-02 1.49636867906e-02 - 1.84129279741e-02 1.86354478304e-02 1.84129279741e-02 1.77666865554e-02 1.67567114426e-02 1.54709928045e-02 - 1.40112393540e-02 1.24785638223e-02 1.09620544703e-02 9.53173661310e-03 8.23585736203e-03 7.10160482063e-03 - 6.13840739734e-03 5.34296096392e-03 4.70458873539e-03 4.20942844716e-03 3.84302280796e-03 3.59206217435e-03 - 3.44594928533e-03 3.39799742507e-03 3.44594928533e-03 3.59206217435e-03 3.84302280796e-03 4.20942844716e-03 - 4.70458873539e-03 5.34296096392e-03 6.13840739734e-03 7.10160482063e-03 8.23585736203e-03 9.53173661310e-03 - 1.09620544703e-02 1.24785638223e-02 1.40112393540e-02 1.54709928045e-02 1.67567114426e-02 1.77666865554e-02 - 2.17657781241e-02 2.17657781241e-02 2.12198093897e-02 2.01812628043e-02 1.87467470027e-02 1.70389543521e-02 - 1.51874137660e-02 1.33116675302e-02 1.15097880648e-02 9.85294674885e-03 8.38500711079e-03 7.12561826537e-03 - 6.07562992209e-03 5.22371135458e-03 4.55262020357e-03 4.04374575730e-03 3.67971968314e-03 3.44594928533e-03 - 3.33184951460e-03 3.33184951460e-03 3.44594928533e-03 3.67971968314e-03 4.04374575730e-03 4.55262020357e-03 - 5.22371135458e-03 6.07562992209e-03 7.12561826537e-03 8.38500711079e-03 9.85294674885e-03 1.15097880648e-02 - 1.33116675302e-02 1.51874137660e-02 1.70389543521e-02 1.87467470027e-02 2.01812628043e-02 2.12198093897e-02 - 2.57176061925e-02 2.53749373622e-02 2.43819637041e-02 2.28368095394e-02 2.08820531014e-02 1.86800926235e-02 - 1.63890080671e-02 1.41440793855e-02 1.20475550421e-02 1.01663421573e-02 8.53524112695e-03 7.16308508658e-03 - 6.04016501968e-03 5.14599535674e-03 4.45623663297e-03 3.94752033538e-03 3.59990872378e-03 3.39799742507e-03 - 3.33184951460e-03 3.39799742507e-03 3.59990872378e-03 3.94752033538e-03 4.45623663297e-03 5.14599535674e-03 - 6.04016501968e-03 7.16308508658e-03 8.53524112695e-03 1.01663421573e-02 1.20475550421e-02 1.41440793855e-02 - 1.63890080671e-02 1.86800926235e-02 2.08820531014e-02 2.28368095394e-02 2.43819637041e-02 2.53749373622e-02 - 3.02423286704e-02 2.94074293899e-02 2.78244998346e-02 2.56499234494e-02 2.30804654510e-02 2.03206914317e-02 - 1.75547637226e-02 1.49279448733e-02 1.25396406703e-02 1.04460621935e-02 8.66817035987e-03 7.20097316500e-03 - 6.02253909249e-03 5.10253249618e-03 4.40955813989e-03 3.91597292758e-03 3.59990872378e-03 3.44594928533e-03 - 3.44594928533e-03 3.59990872378e-03 3.91597292758e-03 4.40955813989e-03 5.10253249618e-03 6.02253909249e-03 - 7.20097316500e-03 8.66817035987e-03 1.04460621935e-02 1.25396406703e-02 1.49279448733e-02 1.75547637226e-02 - 2.03206914317e-02 2.30804654510e-02 2.56499234494e-02 2.78244998346e-02 2.94074293899e-02 3.02423286704e-02 - 3.52402742752e-02 3.37399765679e-02 3.14154606035e-02 2.84935612207e-02 2.52298202509e-02 2.18687619531e-02 - 1.86137801375e-02 1.56112881223e-02 1.29494247541e-02 1.06671499136e-02 8.76725594498e-03 7.22847713667e-03 - 6.01563766373e-03 5.08859106656e-03 4.40955813989e-03 3.94752033538e-03 3.67971968314e-03 3.59206217435e-03 - 3.67971968314e-03 3.94752033538e-03 4.40955813989e-03 5.08859106656e-03 6.01563766373e-03 7.22847713667e-03 - 8.76725594498e-03 1.06671499136e-02 1.29494247541e-02 1.56112881223e-02 1.86137801375e-02 2.18687619531e-02 - 2.52298202509e-02 2.84935612207e-02 3.14154606035e-02 3.37399765679e-02 3.52402742752e-02 3.57591480990e-02 - 4.05199675384e-02 3.81729635435e-02 3.49654910486e-02 3.12022017908e-02 2.71955666447e-02 2.32217587400e-02 - 1.94921954522e-02 1.61434902729e-02 1.32437842255e-02 1.08088949298e-02 8.82009872524e-03 7.23847314555e-03 - 6.01563766373e-03 5.10253249618e-03 4.45623663297e-03 4.04374575730e-03 3.84302280796e-03 3.84302280796e-03 - 4.04374575730e-03 4.45623663297e-03 5.10253249618e-03 6.01563766373e-03 7.23847314555e-03 8.82009872524e-03 - 1.08088949298e-02 1.32437842255e-02 1.61434902729e-02 1.94921954522e-02 2.32217587400e-02 2.71955666447e-02 - 3.12022017908e-02 3.49654910486e-02 3.81729635435e-02 4.05199675384e-02 4.17618689283e-02 4.17618689283e-02 - 4.57968161948e-02 4.24386109393e-02 3.82415861113e-02 3.35871770820e-02 2.88348357920e-02 2.42781130820e-02 - 2.01220876747e-02 1.64818809732e-02 1.33976732300e-02 1.08577130860e-02 8.82009872524e-03 7.22847713667e-03 - 6.02253909249e-03 5.14599535674e-03 4.55262020357e-03 4.20942844716e-03 4.09713024865e-03 4.20942844716e-03 - 4.55262020357e-03 5.14599535674e-03 6.02253909249e-03 7.22847713667e-03 8.82009872524e-03 1.08577130860e-02 - 1.33976732300e-02 1.64818809732e-02 2.01220876747e-02 2.42781130820e-02 2.88348357920e-02 3.35871770820e-02 - 3.82415861113e-02 4.24386109393e-02 4.57968161948e-02 4.79731106469e-02 4.87273692032e-02 4.79731106469e-02 - 5.07121410456e-02 4.62258246981e-02 4.09927131873e-02 3.54595415232e-02 3.00149219248e-02 2.49511167951e-02 - 2.04512222766e-02 1.65980023724e-02 1.33976732300e-02 1.08088949298e-02 8.76725594498e-03 7.20097316500e-03 - 6.04016501968e-03 5.22371135458e-03 4.70458873539e-03 4.45230019628e-03 4.45230019628e-03 4.70458873539e-03 - 5.22371135458e-03 6.04016501968e-03 7.20097316500e-03 8.76725594498e-03 1.08088949298e-02 1.33976732300e-02 - 1.65980023724e-02 2.04512222766e-02 2.49511167951e-02 3.00149219248e-02 3.54595415232e-02 4.09927131873e-02 - 4.62258246981e-02 5.07121410456e-02 5.40097122002e-02 5.57595749637e-02 5.57595749637e-02 5.40097122002e-02 - 5.48714786192e-02 4.92182336225e-02 4.29832635915e-02 3.66568505349e-02 3.06330408871e-02 2.51823253991e-02 - 2.04512222766e-02 1.64818809732e-02 1.32437842255e-02 1.06671499136e-02 8.66817035987e-03 7.16308508658e-03 - 6.07562992209e-03 5.34296096392e-03 4.92029966810e-03 4.78210810048e-03 4.92029966810e-03 5.34296096392e-03 - 6.07562992209e-03 7.16308508658e-03 8.66817035987e-03 1.06671499136e-02 1.32437842255e-02 1.64818809732e-02 - 2.04512222766e-02 2.51823253991e-02 3.06330408871e-02 3.66568505349e-02 4.29832635915e-02 4.92182336225e-02 - 5.48714786192e-02 5.94150808572e-02 6.23688231248e-02 6.33941825467e-02 6.23688231248e-02 5.94150808572e-02 - 5.78981879671e-02 5.11403130173e-02 4.40291518527e-02 3.70689589239e-02 3.06330408871e-02 2.49511167951e-02 - 2.01220876747e-02 1.61434902729e-02 1.29494247541e-02 1.04460621935e-02 8.53524112695e-03 7.12561826537e-03 - 6.13840739734e-03 5.51272438194e-03 5.20914423543e-03 5.20914423543e-03 5.51272438194e-03 6.13840739734e-03 - 7.12561826537e-03 8.53524112695e-03 1.04460621935e-02 1.29494247541e-02 1.61434902729e-02 2.01220876747e-02 - 2.49511167951e-02 3.06330408871e-02 3.70689589239e-02 4.40291518527e-02 5.11403130173e-02 5.78981879671e-02 - 6.37149803432e-02 6.80033074139e-02 7.02831021338e-02 7.02831021338e-02 6.80033074139e-02 6.37149803432e-02 - 5.94941697642e-02 5.18034033720e-02 4.40291518527e-02 3.66568505349e-02 3.00149219248e-02 2.42781130820e-02 - 1.94921954522e-02 1.56112881223e-02 1.25396406703e-02 1.01663421573e-02 8.38500711079e-03 7.10160482063e-03 - 6.23916674188e-03 5.74257125314e-03 5.58034633768e-03 5.74257125314e-03 6.23916674188e-03 7.10160482063e-03 - 8.38500711079e-03 1.01663421573e-02 1.25396406703e-02 1.56112881223e-02 1.94921954522e-02 2.42781130820e-02 - 3.00149219248e-02 3.66568505349e-02 4.40291518527e-02 5.18034033720e-02 5.94941697642e-02 6.64898780493e-02 - 7.21264918488e-02 7.57970302390e-02 7.70723261920e-02 7.57970302390e-02 7.21264918488e-02 6.64898780493e-02 - 5.94941697642e-02 5.11403130173e-02 4.29832635915e-02 3.54595415232e-02 2.88348357920e-02 2.32217587400e-02 - 1.86137801375e-02 1.49279448733e-02 1.20475550421e-02 9.85294674885e-03 8.23585736203e-03 7.10459522193e-03 - 6.38840491477e-03 6.04118457084e-03 6.04118457084e-03 6.38840491477e-03 7.10459522193e-03 8.23585736203e-03 - 9.85294674885e-03 1.20475550421e-02 1.49279448733e-02 1.86137801375e-02 2.32217587400e-02 2.88348357920e-02 - 3.54595415232e-02 4.29832635915e-02 5.11403130173e-02 5.94941697642e-02 6.74494907981e-02 7.43082663472e-02 - 7.93709590427e-02 8.20645507484e-02 8.20645507484e-02 7.93709590427e-02 7.43082663472e-02 6.74494907981e-02 - 5.78981879671e-02 4.92182336225e-02 4.09927131873e-02 3.35871770820e-02 2.71955666447e-02 2.18687619531e-02 - 1.75547637226e-02 1.41440793855e-02 1.15097880648e-02 9.53173661310e-03 8.10563303358e-03 7.14689010595e-03 - 6.59479473082e-03 6.41444748147e-03 6.59479473082e-03 7.14689010595e-03 8.10563303358e-03 9.53173661310e-03 - 1.15097880648e-02 1.41440793855e-02 1.75547637226e-02 2.18687619531e-02 2.71955666447e-02 3.35871770820e-02 - 4.09927131873e-02 4.92182336225e-02 5.78981879671e-02 6.64898780493e-02 7.43082663472e-02 8.06097207709e-02 - 8.47143937707e-02 8.61408122915e-02 8.47143937707e-02 8.06097207709e-02 7.43082663472e-02 6.64898780493e-02 - 5.48714786192e-02 4.62258246981e-02 3.82415861113e-02 3.12022017908e-02 2.52298202509e-02 2.03206914317e-02 - 1.63890080671e-02 1.33116675302e-02 1.09620544703e-02 9.22648243576e-03 8.00955236461e-03 7.23785699764e-03 - 6.86339437793e-03 6.86339437793e-03 7.23785699764e-03 8.00955236461e-03 9.22648243576e-03 1.09620544703e-02 - 1.33116675302e-02 1.63890080671e-02 2.03206914317e-02 2.52298202509e-02 3.12022017908e-02 3.82415861113e-02 - 4.62258246981e-02 5.48714786192e-02 6.37149803432e-02 7.21264918488e-02 7.93709590427e-02 8.47143937707e-02 - 8.75562567048e-02 8.75562567048e-02 8.47143937707e-02 7.93709590427e-02 7.21264918488e-02 6.37149803432e-02 - 5.07121410456e-02 4.24386109393e-02 3.49654910486e-02 2.84935612207e-02 2.30804654510e-02 1.86800926235e-02 - 1.51874137660e-02 1.24785638223e-02 1.04356792319e-02 8.95658363692e-03 7.95863052826e-03 7.38252390656e-03 - 7.19410390186e-03 7.38252390656e-03 7.95863052826e-03 8.95658363692e-03 1.04356792319e-02 1.24785638223e-02 - 1.51874137660e-02 1.86800926235e-02 2.30804654510e-02 2.84935612207e-02 3.49654910486e-02 4.24386109393e-02 - 5.07121410456e-02 5.94150808572e-02 6.80033074139e-02 7.57970302390e-02 8.20645507484e-02 8.61408122915e-02 - 8.75562567048e-02 8.61408122915e-02 8.20645507484e-02 7.57970302390e-02 6.80033074139e-02 5.94150808572e-02 - 4.57968161948e-02 3.81729635435e-02 3.14154606035e-02 2.56499234494e-02 2.08820531014e-02 1.70389543521e-02 - 1.40112393540e-02 1.16845233837e-02 9.95507847617e-03 8.73551184506e-03 7.95863052826e-03 7.58058258839e-03 - 7.58058258839e-03 7.95863052826e-03 8.73551184506e-03 9.95507847617e-03 1.16845233837e-02 1.40112393540e-02 - 1.70389543521e-02 2.08820531014e-02 2.56499234494e-02 3.14154606035e-02 3.81729635435e-02 4.57968161948e-02 - 5.40097122002e-02 6.23688231248e-02 7.02831021338e-02 7.70723261920e-02 8.20645507484e-02 8.47143937707e-02 - 8.47143937707e-02 8.20645507484e-02 7.70723261920e-02 7.02831021338e-02 6.23688231248e-02 5.40097122002e-02 - 4.05199675384e-02 3.37399765679e-02 2.78244998346e-02 2.28368095394e-02 1.87467470027e-02 1.54709928045e-02 - 1.29079014387e-02 1.09586567104e-02 9.53627070961e-03 8.57007132232e-03 8.00955236461e-03 7.82576853226e-03 - 8.00955236461e-03 8.57007132232e-03 9.53627070961e-03 1.09586567104e-02 1.29079014387e-02 1.54709928045e-02 - 1.87467470027e-02 2.28368095394e-02 2.78244998346e-02 3.37399765679e-02 4.05199675384e-02 4.79731106469e-02 - 5.57595749637e-02 6.33941825467e-02 7.02831021338e-02 7.57970302390e-02 7.93709590427e-02 8.06097207709e-02 - 7.93709590427e-02 7.57970302390e-02 7.02831021338e-02 6.33941825467e-02 5.57595749637e-02 4.79731106469e-02 - 3.52402742752e-02 2.94074293899e-02 2.43819637041e-02 2.01812628043e-02 1.67567114426e-02 1.40283418589e-02 - 1.19093466628e-02 1.03186231402e-02 9.18679124184e-03 8.46060891145e-03 8.10563303358e-03 8.10563303358e-03 - 8.46060891145e-03 9.18679124184e-03 1.03186231402e-02 1.19093466628e-02 1.40283418589e-02 1.67567114426e-02 - 2.01812628043e-02 2.43819637041e-02 2.94074293899e-02 3.52402742752e-02 4.17618689283e-02 4.87273692032e-02 - 5.57595749637e-02 6.23688231248e-02 6.80033074139e-02 7.21264918488e-02 7.43082663472e-02 7.43082663472e-02 - 7.21264918488e-02 6.80033074139e-02 6.23688231248e-02 5.57595749637e-02 4.87273692032e-02 4.17618689283e-02 - 3.02423286704e-02 2.53749373622e-02 2.12198093897e-02 1.77666865554e-02 1.49636867906e-02 1.27424344623e-02 - 1.10330000246e-02 9.77183223433e-03 8.90705726329e-03 8.40200942373e-03 8.23585736203e-03 8.40200942373e-03 - 8.90705726329e-03 9.77183223433e-03 1.10330000246e-02 1.27424344623e-02 1.49636867906e-02 1.77666865554e-02 - 2.12198093897e-02 2.53749373622e-02 3.02423286704e-02 3.57591480990e-02 4.17618689283e-02 4.79731106469e-02 - 5.40097122002e-02 5.94150808572e-02 6.37149803432e-02 6.64898780493e-02 6.74494907981e-02 6.64898780493e-02 - 6.37149803432e-02 5.94150808572e-02 5.40097122002e-02 4.79731106469e-02 4.17618689283e-02 3.57591480990e-02 - 2.53146898274e-02 2.17657781241e-02 1.87538902948e-02 1.62588522549e-02 1.42425749040e-02 1.26620800682e-02 - 1.14766013692e-02 1.06524671204e-02 1.01663421573e-02 1.00055755901e-02 1.01663421573e-02 1.06524671204e-02 - 1.14766013692e-02 1.26620800682e-02 1.42425749040e-02 1.62588522549e-02 1.87538902948e-02 2.17657781241e-02 - 2.53146898274e-02 2.93819034216e-02 3.38859304601e-02 3.86662855632e-02 4.34838779539e-02 4.80406383964e-02 - 5.20147259753e-02 5.51031089527e-02 5.70612480291e-02 5.77319585491e-02 5.70612480291e-02 5.51031089527e-02 - 5.20147259753e-02 4.80406383964e-02 4.34838779539e-02 3.86662855632e-02 3.38859304601e-02 2.93819034216e-02 - 2.17657781241e-02 1.89804120902e-02 1.66250325509e-02 1.46810426016e-02 1.31198380533e-02 1.19105819676e-02 - 1.10259974674e-02 1.04460621935e-02 1.01587603229e-02 1.01587603229e-02 1.04460621935e-02 1.10259974674e-02 - 1.19105819676e-02 1.31198380533e-02 1.46810426016e-02 1.66250325509e-02 1.89804120902e-02 2.17657781241e-02 - 2.49776956914e-02 2.85734174953e-02 3.24534608631e-02 3.64535808156e-02 4.03527020822e-02 4.38959177953e-02 - 4.68264624901e-02 4.89192305177e-02 5.00090134447e-02 5.00090134447e-02 4.89192305177e-02 4.68264624901e-02 - 4.38959177953e-02 4.03527020822e-02 3.64535808156e-02 3.24534608631e-02 2.85734174953e-02 2.49776956914e-02 - 1.87538902948e-02 1.66250325509e-02 1.48317912783e-02 1.33594815778e-02 1.21873907787e-02 1.12951380995e-02 - 1.06671499136e-02 1.02937156151e-02 1.01697655067e-02 1.02937156151e-02 1.06671499136e-02 1.12951380995e-02 - 1.21873907787e-02 1.33594815778e-02 1.48317912783e-02 1.66250325509e-02 1.87538902948e-02 2.12198093897e-02 - 2.40011711299e-02 2.70402901784e-02 3.02323588099e-02 3.34242157073e-02 3.64263171972e-02 3.90347179512e-02 - 4.10571769449e-02 4.23378898536e-02 4.27763236460e-02 4.23378898536e-02 4.10571769449e-02 3.90347179512e-02 - 3.64263171972e-02 3.34242157073e-02 3.02323588099e-02 2.70402901784e-02 2.40011711299e-02 2.12198093897e-02 - 1.62588522549e-02 1.46810426016e-02 1.33594815778e-02 1.22825573408e-02 1.14361707830e-02 1.08088949298e-02 - 1.03937663652e-02 1.01870819285e-02 1.01870819285e-02 1.03937663652e-02 1.08088949298e-02 1.14361707830e-02 - 1.22825573408e-02 1.33594815778e-02 1.46810426016e-02 1.62588522549e-02 1.80960146721e-02 2.01812628043e-02 - 2.24815496090e-02 2.49333108373e-02 2.74372089612e-02 2.98615217076e-02 3.20546920774e-02 3.38635928392e-02 - 3.51532871168e-02 3.58243136049e-02 3.58243136049e-02 3.51532871168e-02 3.38635928392e-02 3.20546920774e-02 - 2.98615217076e-02 2.74372089612e-02 2.49333108373e-02 2.24815496090e-02 2.01812628043e-02 1.80960146721e-02 - 1.42425749040e-02 1.31198380533e-02 1.21873907787e-02 1.14361707830e-02 1.08577130860e-02 1.04468583553e-02 - 1.02011860999e-02 1.01194532806e-02 1.02011860999e-02 1.04468583553e-02 1.08577130860e-02 1.14361707830e-02 - 1.21873907787e-02 1.31198380533e-02 1.42425749040e-02 1.55601992220e-02 1.70678712692e-02 1.87467470027e-02 - 2.05587788214e-02 2.24420850452e-02 2.43103322252e-02 2.60582031450e-02 2.75721078901e-02 2.87439673059e-02 - 2.94854041377e-02 2.97391273192e-02 2.94854041377e-02 2.87439673059e-02 2.75721078901e-02 2.60582031450e-02 - 2.43103322252e-02 2.24420850452e-02 2.05587788214e-02 1.87467470027e-02 1.70678712692e-02 1.55601992220e-02 - 1.26620800682e-02 1.19105819676e-02 1.12951380995e-02 1.08088949298e-02 1.04468583553e-02 1.02064774226e-02 - 1.00865795572e-02 1.00865795572e-02 1.02064774226e-02 1.04468583553e-02 1.08088949298e-02 1.12951380995e-02 - 1.19105819676e-02 1.26620800682e-02 1.35553259639e-02 1.45906790875e-02 1.57591868798e-02 1.70389543521e-02 - 1.83921353899e-02 1.97639178277e-02 2.10847229658e-02 2.22755921268e-02 2.32562353108e-02 2.39549635512e-02 - 2.43184216158e-02 2.43184216158e-02 2.39549635512e-02 2.32562353108e-02 2.22755921268e-02 2.10847229658e-02 - 1.97639178277e-02 1.83921353899e-02 1.70389543521e-02 1.57591868798e-02 1.45906790875e-02 1.35553259639e-02 - 1.14766013692e-02 1.10259974674e-02 1.06671499136e-02 1.03937663652e-02 1.02011860999e-02 1.00865795572e-02 - 1.00485204973e-02 1.00865795572e-02 1.02011860999e-02 1.03937663652e-02 1.06671499136e-02 1.10259974674e-02 - 1.14766013692e-02 1.20255038743e-02 1.26769712537e-02 1.34297677852e-02 1.42737851127e-02 1.51874137660e-02 - 1.61367490443e-02 1.70770073925e-02 1.79555609317e-02 1.87162119832e-02 1.93050944183e-02 1.96777557044e-02 - 1.98052910067e-02 1.96777557044e-02 1.93050944183e-02 1.87162119832e-02 1.79555609317e-02 1.70770073925e-02 - 1.61367490443e-02 1.51874137660e-02 1.42737851127e-02 1.34297677852e-02 1.26769712537e-02 1.20255038743e-02 - 1.06524671204e-02 1.04460621935e-02 1.02937156151e-02 1.01870819285e-02 1.01194532806e-02 1.00865795572e-02 - 1.00865795572e-02 1.01194532806e-02 1.01870819285e-02 1.02937156151e-02 1.04460621935e-02 1.06524671204e-02 - 1.09215936737e-02 1.12609832188e-02 1.16751572683e-02 1.21629507848e-02 1.27148275869e-02 1.33116675302e-02 - 1.39256808178e-02 1.45226393383e-02 1.50645020089e-02 1.55127511572e-02 1.58329883187e-02 1.59997599900e-02 - 1.59997599900e-02 1.58329883187e-02 1.55127511572e-02 1.50645020089e-02 1.45226393383e-02 1.39256808178e-02 - 1.33116675302e-02 1.27148275869e-02 1.21629507848e-02 1.16751572683e-02 1.12609832188e-02 1.09215936737e-02 - 1.01663421573e-02 1.01587603229e-02 1.01697655067e-02 1.01870819285e-02 1.02011860999e-02 1.02064774226e-02 - 1.02011860999e-02 1.01870819285e-02 1.01697655067e-02 1.01587603229e-02 1.01663421573e-02 1.02054916185e-02 - 1.02881382638e-02 1.04238516982e-02 1.06181928008e-02 1.08706042529e-02 1.11729588764e-02 1.15097880648e-02 - 1.18598583649e-02 1.21980827392e-02 1.24976141314e-02 1.27327884289e-02 1.28827341282e-02 1.29342051284e-02 - 1.28827341282e-02 1.27327884289e-02 1.24976141314e-02 1.21980827392e-02 1.18598583649e-02 1.15097880648e-02 - 1.11729588764e-02 1.08706042529e-02 1.06181928008e-02 1.04238516982e-02 1.02881382638e-02 1.02054916185e-02 - 1.00055755901e-02 1.01587603229e-02 1.02937156151e-02 1.03937663652e-02 1.04468583553e-02 1.04468583553e-02 - 1.03937663652e-02 1.02937156151e-02 1.01587603229e-02 1.00055755901e-02 9.85294674885e-03 9.71912104775e-03 - 9.61987006090e-03 9.56702175361e-03 9.56702175361e-03 9.61987006090e-03 9.71912104775e-03 9.85294674885e-03 - 1.00055755901e-02 1.01587603229e-02 1.02937156151e-02 1.03937663652e-02 1.04468583553e-02 1.04468583553e-02 - 1.03937663652e-02 1.02937156151e-02 1.01587603229e-02 1.00055755901e-02 9.85294674885e-03 9.71912104775e-03 - 9.61987006090e-03 9.56702175361e-03 9.56702175361e-03 9.61987006090e-03 9.71912104775e-03 9.85294674885e-03 - 1.01663421573e-02 1.04460621935e-02 1.06671499136e-02 1.08088949298e-02 1.08577130860e-02 1.08088949298e-02 - 1.06671499136e-02 1.04460621935e-02 1.01663421573e-02 9.85294674885e-03 9.53173661310e-03 9.22648243576e-03 - 8.95658363692e-03 8.73551184506e-03 8.57007132232e-03 8.46060891145e-03 8.40200942373e-03 8.38500711079e-03 - 8.39746782805e-03 8.42580807925e-03 8.45686847188e-03 8.47998103933e-03 8.48843476768e-03 8.47998103933e-03 - 8.45686847188e-03 8.42580807925e-03 8.39746782805e-03 8.38500711079e-03 8.40200942373e-03 8.46060891145e-03 - 8.57007132232e-03 8.73551184506e-03 8.95658363692e-03 9.22648243576e-03 9.53173661310e-03 9.85294674885e-03 - 1.06524671204e-02 1.10259974674e-02 1.12951380995e-02 1.14361707830e-02 1.14361707830e-02 1.12951380995e-02 - 1.10259974674e-02 1.06524671204e-02 1.02054916185e-02 9.71912104775e-03 9.22648243576e-03 8.75631776595e-03 - 8.33057919998e-03 7.96341795569e-03 7.66146344666e-03 7.42492384580e-03 7.24904282964e-03 7.12561826537e-03 - 7.04448483440e-03 6.99504538611e-03 6.96786738821e-03 6.95605972443e-03 6.95605972443e-03 6.96786738821e-03 - 6.99504538611e-03 7.04448483440e-03 7.12561826537e-03 7.24904282964e-03 7.42492384580e-03 7.66146344666e-03 - 7.96341795569e-03 8.33057919998e-03 8.75631776595e-03 9.22648243576e-03 9.71912104775e-03 1.02054916185e-02 - 1.14766013692e-02 1.19105819676e-02 1.21873907787e-02 1.22825573408e-02 1.21873907787e-02 1.19105819676e-02 - 1.14766013692e-02 1.09215936737e-02 1.02881382638e-02 9.61987006090e-03 8.95658363692e-03 8.33057919998e-03 - 7.76490388909e-03 7.27338017313e-03 6.86170422323e-03 6.52902358143e-03 6.26978037715e-03 6.07562992209e-03 - 5.93719631865e-03 5.84558656512e-03 5.79365065764e-03 5.77685140016e-03 5.79365065764e-03 5.84558656512e-03 - 5.93719631865e-03 6.07562992209e-03 6.26978037715e-03 6.52902358143e-03 6.86170422323e-03 7.27338017313e-03 - 7.76490388909e-03 8.33057919998e-03 8.95658363692e-03 9.61987006090e-03 1.02881382638e-02 1.09215936737e-02 - 1.26620800682e-02 1.31198380533e-02 1.33594815778e-02 1.33594815778e-02 1.31198380533e-02 1.26620800682e-02 - 1.20255038743e-02 1.12609832188e-02 1.04238516982e-02 9.56702175361e-03 8.73551184506e-03 7.96341795569e-03 - 7.27338017313e-03 6.67761981445e-03 6.17967298585e-03 5.77651892440e-03 5.46093720174e-03 5.22371135458e-03 - 5.05545032098e-03 4.94806264494e-03 4.89581524939e-03 4.89581524939e-03 4.94806264494e-03 5.05545032098e-03 - 5.22371135458e-03 5.46093720174e-03 5.77651892440e-03 6.17967298585e-03 6.67761981445e-03 7.27338017313e-03 - 7.96341795569e-03 8.73551184506e-03 9.56702175361e-03 1.04238516982e-02 1.12609832188e-02 1.20255038743e-02 - 1.42425749040e-02 1.46810426016e-02 1.48317912783e-02 1.46810426016e-02 1.42425749040e-02 1.35553259639e-02 - 1.26769712537e-02 1.16751572683e-02 1.06181928008e-02 9.56702175361e-03 8.57007132232e-03 7.66146344666e-03 - 6.86170422323e-03 6.17967298585e-03 5.61528193683e-03 5.16243150929e-03 4.81172327806e-03 4.55262020357e-03 - 4.37525079151e-03 4.27192322596e-03 4.23798561825e-03 4.27192322596e-03 4.37525079151e-03 4.55262020357e-03 - 4.81172327806e-03 5.16243150929e-03 5.61528193683e-03 6.17967298585e-03 6.86170422323e-03 7.66146344666e-03 - 8.57007132232e-03 9.56702175361e-03 1.06181928008e-02 1.16751572683e-02 1.26769712537e-02 1.35553259639e-02 - 1.62588522549e-02 1.66250325509e-02 1.66250325509e-02 1.62588522549e-02 1.55601992220e-02 1.45906790875e-02 - 1.34297677852e-02 1.21629507848e-02 1.08706042529e-02 9.61987006090e-03 8.46060891145e-03 7.42492384580e-03 - 6.52902358143e-03 5.77651892440e-03 5.16243150929e-03 4.67692793169e-03 4.30805835198e-03 4.04374575730e-03 - 3.87358926493e-03 3.79030883078e-03 3.79030883078e-03 3.87358926493e-03 4.04374575730e-03 4.30805835198e-03 - 4.67692793169e-03 5.16243150929e-03 5.77651892440e-03 6.52902358143e-03 7.42492384580e-03 8.46060891145e-03 - 9.61987006090e-03 1.08706042529e-02 1.21629507848e-02 1.34297677852e-02 1.45906790875e-02 1.55601992220e-02 - 1.87538902948e-02 1.89804120902e-02 1.87538902948e-02 1.80960146721e-02 1.70678712692e-02 1.57591868798e-02 - 1.42737851127e-02 1.27148275869e-02 1.11729588764e-02 9.71912104775e-03 8.40200942373e-03 7.24904282964e-03 - 6.26978037715e-03 5.46093720174e-03 4.81172327806e-03 4.30805835198e-03 3.93522801758e-03 3.67971968314e-03 - 3.53085792774e-03 3.48198055848e-03 3.53085792774e-03 3.67971968314e-03 3.93522801758e-03 4.30805835198e-03 - 4.81172327806e-03 5.46093720174e-03 6.26978037715e-03 7.24904282964e-03 8.40200942373e-03 9.71912104775e-03 - 1.11729588764e-02 1.27148275869e-02 1.42737851127e-02 1.57591868798e-02 1.70678712692e-02 1.80960146721e-02 - 2.17657781241e-02 2.17657781241e-02 2.12198093897e-02 2.01812628043e-02 1.87467470027e-02 1.70389543521e-02 - 1.51874137660e-02 1.33116675302e-02 1.15097880648e-02 9.85294674885e-03 8.38500711079e-03 7.12561826537e-03 - 6.07562992209e-03 5.22371135458e-03 4.55262020357e-03 4.04374575730e-03 3.67971968314e-03 3.44594928533e-03 - 3.33184951460e-03 3.33184951460e-03 3.44594928533e-03 3.67971968314e-03 4.04374575730e-03 4.55262020357e-03 - 5.22371135458e-03 6.07562992209e-03 7.12561826537e-03 8.38500711079e-03 9.85294674885e-03 1.15097880648e-02 - 1.33116675302e-02 1.51874137660e-02 1.70389543521e-02 1.87467470027e-02 2.01812628043e-02 2.12198093897e-02 - 2.53146898274e-02 2.49776956914e-02 2.40011711299e-02 2.24815496090e-02 2.05587788214e-02 1.83921353899e-02 - 1.61367490443e-02 1.39256808178e-02 1.18598583649e-02 1.00055755901e-02 8.39746782805e-03 7.04448483440e-03 - 5.93719631865e-03 5.05545032098e-03 4.37525079151e-03 3.87358926493e-03 3.53085792774e-03 3.33184951460e-03 - 3.26667178574e-03 3.33184951460e-03 3.53085792774e-03 3.87358926493e-03 4.37525079151e-03 5.05545032098e-03 - 5.93719631865e-03 7.04448483440e-03 8.39746782805e-03 1.00055755901e-02 1.18598583649e-02 1.39256808178e-02 - 1.61367490443e-02 1.83921353899e-02 2.05587788214e-02 2.24815496090e-02 2.40011711299e-02 2.49776956914e-02 - 2.93819034216e-02 2.85734174953e-02 2.70402901784e-02 2.49333108373e-02 2.24420850452e-02 1.97639178277e-02 - 1.70770073925e-02 1.45226393383e-02 1.21980827392e-02 1.01587603229e-02 8.42580807925e-03 6.99504538611e-03 - 5.84558656512e-03 4.94806264494e-03 4.27192322596e-03 3.79030883078e-03 3.48198055848e-03 3.33184951460e-03 - 3.33184951460e-03 3.48198055848e-03 3.79030883078e-03 4.27192322596e-03 4.94806264494e-03 5.84558656512e-03 - 6.99504538611e-03 8.42580807925e-03 1.01587603229e-02 1.21980827392e-02 1.45226393383e-02 1.70770073925e-02 - 1.97639178277e-02 2.24420850452e-02 2.49333108373e-02 2.70402901784e-02 2.85734174953e-02 2.93819034216e-02 - 3.38859304601e-02 3.24534608631e-02 3.02323588099e-02 2.74372089612e-02 2.43103322252e-02 2.10847229658e-02 - 1.79555609317e-02 1.50645020089e-02 1.24976141314e-02 1.02937156151e-02 8.45686847188e-03 6.96786738821e-03 - 5.79365065764e-03 4.89581524939e-03 4.23798561825e-03 3.79030883078e-03 3.53085792774e-03 3.44594928533e-03 - 3.53085792774e-03 3.79030883078e-03 4.23798561825e-03 4.89581524939e-03 5.79365065764e-03 6.96786738821e-03 - 8.45686847188e-03 1.02937156151e-02 1.24976141314e-02 1.50645020089e-02 1.79555609317e-02 2.10847229658e-02 - 2.43103322252e-02 2.74372089612e-02 3.02323588099e-02 3.24534608631e-02 3.38859304601e-02 3.43811654173e-02 - 3.86662855632e-02 3.64535808156e-02 3.34242157073e-02 2.98615217076e-02 2.60582031450e-02 2.22755921268e-02 - 1.87162119832e-02 1.55127511572e-02 1.27327884289e-02 1.03937663652e-02 8.47998103933e-03 6.95605972443e-03 - 5.77685140016e-03 4.89581524939e-03 4.27192322596e-03 3.87358926493e-03 3.67971968314e-03 3.67971968314e-03 - 3.87358926493e-03 4.27192322596e-03 4.89581524939e-03 5.77685140016e-03 6.95605972443e-03 8.47998103933e-03 - 1.03937663652e-02 1.27327884289e-02 1.55127511572e-02 1.87162119832e-02 2.22755921268e-02 2.60582031450e-02 - 2.98615217076e-02 3.34242157073e-02 3.64535808156e-02 3.86662855632e-02 3.98358227133e-02 3.98358227133e-02 - 4.34838779539e-02 4.03527020822e-02 3.64263171972e-02 3.20546920774e-02 2.75721078901e-02 2.32562353108e-02 - 1.93050944183e-02 1.58329883187e-02 1.28827341282e-02 1.04468583553e-02 8.48843476768e-03 6.95605972443e-03 - 5.79365065764e-03 4.94806264494e-03 4.37525079151e-03 4.04374575730e-03 3.93522801758e-03 4.04374575730e-03 - 4.37525079151e-03 4.94806264494e-03 5.79365065764e-03 6.95605972443e-03 8.48843476768e-03 1.04468583553e-02 - 1.28827341282e-02 1.58329883187e-02 1.93050944183e-02 2.32562353108e-02 2.75721078901e-02 3.20546920774e-02 - 3.64263171972e-02 4.03527020822e-02 4.34838779539e-02 4.55081727847e-02 4.62088704848e-02 4.55081727847e-02 - 4.80406383964e-02 4.38959177953e-02 3.90347179512e-02 3.38635928392e-02 2.87439673059e-02 2.39549635512e-02 - 1.96777557044e-02 1.59997599900e-02 1.29342051284e-02 1.04468583553e-02 8.47998103933e-03 6.96786738821e-03 - 5.84558656512e-03 5.05545032098e-03 4.55262020357e-03 4.30805835198e-03 4.30805835198e-03 4.55262020357e-03 - 5.05545032098e-03 5.84558656512e-03 6.96786738821e-03 8.47998103933e-03 1.04468583553e-02 1.29342051284e-02 - 1.59997599900e-02 1.96777557044e-02 2.39549635512e-02 2.87439673059e-02 3.38635928392e-02 3.90347179512e-02 - 4.38959177953e-02 4.80406383964e-02 5.10737783335e-02 5.26787408684e-02 5.26787408684e-02 5.10737783335e-02 - 5.20147259753e-02 4.68264624901e-02 4.10571769449e-02 3.51532871168e-02 2.94854041377e-02 2.43184216158e-02 - 1.98052910067e-02 1.59997599900e-02 1.28827341282e-02 1.03937663652e-02 8.45686847188e-03 6.99504538611e-03 - 5.93719631865e-03 5.22371135458e-03 4.81172327806e-03 4.67692793169e-03 4.81172327806e-03 5.22371135458e-03 - 5.93719631865e-03 6.99504538611e-03 8.45686847188e-03 1.03937663652e-02 1.28827341282e-02 1.59997599900e-02 - 1.98052910067e-02 2.43184216158e-02 2.94854041377e-02 3.51532871168e-02 4.10571769449e-02 4.68264624901e-02 - 5.20147259753e-02 5.61547897924e-02 5.88318176265e-02 5.97584596222e-02 5.88318176265e-02 5.61547897924e-02 - 5.51031089527e-02 4.89192305177e-02 4.23378898536e-02 3.58243136049e-02 2.97391273192e-02 2.43184216158e-02 - 1.96777557044e-02 1.58329883187e-02 1.27327884289e-02 1.02937156151e-02 8.42580807925e-03 7.04448483440e-03 - 6.07562992209e-03 5.46093720174e-03 5.16243150929e-03 5.16243150929e-03 5.46093720174e-03 6.07562992209e-03 - 7.04448483440e-03 8.42580807925e-03 1.02937156151e-02 1.27327884289e-02 1.58329883187e-02 1.96777557044e-02 - 2.43184216158e-02 2.97391273192e-02 3.58243136049e-02 4.23378898536e-02 4.89192305177e-02 5.51031089527e-02 - 6.03694423859e-02 6.42180018992e-02 6.62522137956e-02 6.62522137956e-02 6.42180018992e-02 6.03694423859e-02 - 5.70612480291e-02 5.00090134447e-02 4.27763236460e-02 3.58243136049e-02 2.94854041377e-02 2.39549635512e-02 - 1.93050944183e-02 1.55127511572e-02 1.24976141314e-02 1.01587603229e-02 8.39746782805e-03 7.12561826537e-03 - 6.26978037715e-03 5.77651892440e-03 5.61528193683e-03 5.77651892440e-03 6.26978037715e-03 7.12561826537e-03 - 8.39746782805e-03 1.01587603229e-02 1.24976141314e-02 1.55127511572e-02 1.93050944183e-02 2.39549635512e-02 - 2.94854041377e-02 3.58243136049e-02 4.27763236460e-02 5.00090134447e-02 5.70612480291e-02 6.33842515281e-02 - 6.84139609392e-02 7.16581855164e-02 7.27796836797e-02 7.16581855164e-02 6.84139609392e-02 6.33842515281e-02 - 5.77319585491e-02 5.00090134447e-02 4.23378898536e-02 3.51532871168e-02 2.87439673059e-02 2.32562353108e-02 - 1.87162119832e-02 1.50645020089e-02 1.21980827392e-02 1.00055755901e-02 8.38500711079e-03 7.24904282964e-03 - 6.52902358143e-03 6.17967298585e-03 6.17967298585e-03 6.52902358143e-03 7.24904282964e-03 8.38500711079e-03 - 1.00055755901e-02 1.21980827392e-02 1.50645020089e-02 1.87162119832e-02 2.32562353108e-02 2.87439673059e-02 - 3.51532871168e-02 4.23378898536e-02 5.00090134447e-02 5.77319585491e-02 6.49555724266e-02 7.10787520021e-02 - 7.55368812409e-02 7.78881394404e-02 7.78881394404e-02 7.55368812409e-02 7.10787520021e-02 6.49555724266e-02 - 5.70612480291e-02 4.89192305177e-02 4.10571769449e-02 3.38635928392e-02 2.75721078901e-02 2.22755921268e-02 - 1.79555609317e-02 1.45226393383e-02 1.18598583649e-02 9.85294674885e-03 8.40200942373e-03 7.42492384580e-03 - 6.86170422323e-03 6.67761981445e-03 6.86170422323e-03 7.42492384580e-03 8.40200942373e-03 9.85294674885e-03 - 1.18598583649e-02 1.45226393383e-02 1.79555609317e-02 2.22755921268e-02 2.75721078901e-02 3.38635928392e-02 - 4.10571769449e-02 4.89192305177e-02 5.70612480291e-02 6.49555724266e-02 7.19923628057e-02 7.75631573239e-02 - 8.11458755837e-02 8.23828782457e-02 8.11458755837e-02 7.75631573239e-02 7.19923628057e-02 6.49555724266e-02 - 5.51031089527e-02 4.68264624901e-02 3.90347179512e-02 3.20546920774e-02 2.60582031450e-02 2.10847229658e-02 - 1.70770073925e-02 1.39256808178e-02 1.15097880648e-02 9.71912104775e-03 8.46060891145e-03 7.66146344666e-03 - 7.27338017313e-03 7.27338017313e-03 7.66146344666e-03 8.46060891145e-03 9.71912104775e-03 1.15097880648e-02 - 1.39256808178e-02 1.70770073925e-02 2.10847229658e-02 2.60582031450e-02 3.20546920774e-02 3.90347179512e-02 - 4.68264624901e-02 5.51031089527e-02 6.33842515281e-02 7.10787520021e-02 7.75631573239e-02 8.22656900591e-02 - 8.47410728024e-02 8.47410728024e-02 8.22656900591e-02 7.75631573239e-02 7.10787520021e-02 6.33842515281e-02 - 5.20147259753e-02 4.38959177953e-02 3.64263171972e-02 2.98615217076e-02 2.43103322252e-02 1.97639178277e-02 - 1.61367490443e-02 1.33116675302e-02 1.11729588764e-02 9.61987006090e-03 8.57007132232e-03 7.96341795569e-03 - 7.76490388909e-03 7.96341795569e-03 8.57007132232e-03 9.61987006090e-03 1.11729588764e-02 1.33116675302e-02 - 1.61367490443e-02 1.97639178277e-02 2.43103322252e-02 2.98615217076e-02 3.64263171972e-02 4.38959177953e-02 - 5.20147259753e-02 6.03694423859e-02 6.84139609392e-02 7.55368812409e-02 8.11458755837e-02 8.47410728024e-02 - 8.59805323971e-02 8.47410728024e-02 8.11458755837e-02 7.55368812409e-02 6.84139609392e-02 6.03694423859e-02 - 4.80406383964e-02 4.03527020822e-02 3.34242157073e-02 2.74372089612e-02 2.24420850452e-02 1.83921353899e-02 - 1.51874137660e-02 1.27148275869e-02 1.08706042529e-02 9.56702175361e-03 8.73551184506e-03 8.33057919998e-03 - 8.33057919998e-03 8.73551184506e-03 9.56702175361e-03 1.08706042529e-02 1.27148275869e-02 1.51874137660e-02 - 1.83921353899e-02 2.24420850452e-02 2.74372089612e-02 3.34242157073e-02 4.03527020822e-02 4.80406383964e-02 - 5.61547897924e-02 6.42180018992e-02 7.16581855164e-02 7.78881394404e-02 8.23828782457e-02 8.47410728024e-02 - 8.47410728024e-02 8.23828782457e-02 7.78881394404e-02 7.16581855164e-02 6.42180018992e-02 5.61547897924e-02 - 4.34838779539e-02 3.64535808156e-02 3.02323588099e-02 2.49333108373e-02 2.05587788214e-02 1.70389543521e-02 - 1.42737851127e-02 1.21629507848e-02 1.06181928008e-02 9.56702175361e-03 8.95658363692e-03 8.75631776595e-03 - 8.95658363692e-03 9.56702175361e-03 1.06181928008e-02 1.21629507848e-02 1.42737851127e-02 1.70389543521e-02 - 2.05587788214e-02 2.49333108373e-02 3.02323588099e-02 3.64535808156e-02 4.34838779539e-02 5.10737783335e-02 - 5.88318176265e-02 6.62522137956e-02 7.27796836797e-02 7.78881394404e-02 8.11458755837e-02 8.22656900591e-02 - 8.11458755837e-02 7.78881394404e-02 7.27796836797e-02 6.62522137956e-02 5.88318176265e-02 5.10737783335e-02 - 3.86662855632e-02 3.24534608631e-02 2.70402901784e-02 2.24815496090e-02 1.87467470027e-02 1.57591868798e-02 - 1.34297677852e-02 1.16751572683e-02 1.04238516982e-02 9.61987006090e-03 9.22648243576e-03 9.22648243576e-03 - 9.61987006090e-03 1.04238516982e-02 1.16751572683e-02 1.34297677852e-02 1.57591868798e-02 1.87467470027e-02 - 2.24815496090e-02 2.70402901784e-02 3.24534608631e-02 3.86662855632e-02 4.55081727847e-02 5.26787408684e-02 - 5.97584596222e-02 6.62522137956e-02 7.16581855164e-02 7.55368812409e-02 7.75631573239e-02 7.75631573239e-02 - 7.55368812409e-02 7.16581855164e-02 6.62522137956e-02 5.97584596222e-02 5.26787408684e-02 4.55081727847e-02 - 3.38859304601e-02 2.85734174953e-02 2.40011711299e-02 2.01812628043e-02 1.70678712692e-02 1.45906790875e-02 - 1.26769712537e-02 1.12609832188e-02 1.02881382638e-02 9.71912104775e-03 9.53173661310e-03 9.71912104775e-03 - 1.02881382638e-02 1.12609832188e-02 1.26769712537e-02 1.45906790875e-02 1.70678712692e-02 2.01812628043e-02 - 2.40011711299e-02 2.85734174953e-02 3.38859304601e-02 3.98358227133e-02 4.62088704848e-02 5.26787408684e-02 - 5.88318176265e-02 6.42180018992e-02 6.84139609392e-02 7.10787520021e-02 7.19923628057e-02 7.10787520021e-02 - 6.84139609392e-02 6.42180018992e-02 5.88318176265e-02 5.26787408684e-02 4.62088704848e-02 3.98358227133e-02 - 2.93819034216e-02 2.49776956914e-02 2.12198093897e-02 1.80960146721e-02 1.55601992220e-02 1.35553259639e-02 - 1.20255038743e-02 1.09215936737e-02 1.02054916185e-02 9.85294674885e-03 9.85294674885e-03 1.02054916185e-02 - 1.09215936737e-02 1.20255038743e-02 1.35553259639e-02 1.55601992220e-02 1.80960146721e-02 2.12198093897e-02 - 2.49776956914e-02 2.93819034216e-02 3.43811654173e-02 3.98358227133e-02 4.55081727847e-02 5.10737783335e-02 - 5.61547897924e-02 6.03694423859e-02 6.33842515281e-02 6.49555724266e-02 6.49555724266e-02 6.33842515281e-02 - 6.03694423859e-02 5.61547897924e-02 5.10737783335e-02 4.55081727847e-02 3.98358227133e-02 3.43811654173e-02 - 2.57176061925e-02 2.25132701769e-02 1.97871783123e-02 1.75241772421e-02 1.56960478729e-02 1.42727054437e-02 - 1.32272933414e-02 1.25396406703e-02 1.21980827392e-02 1.21980827392e-02 1.25396406703e-02 1.32272933414e-02 - 1.42727054437e-02 1.56960478729e-02 1.75241772421e-02 1.97871783123e-02 2.25132701769e-02 2.57176061925e-02 - 2.93819034216e-02 3.34304675050e-02 3.77147526395e-02 4.20165784801e-02 4.60731359718e-02 4.96193341715e-02 - 5.24339557043e-02 5.43692149489e-02 5.53499973529e-02 5.53499973529e-02 5.43692149489e-02 5.24339557043e-02 - 4.96193341715e-02 4.60731359718e-02 4.20165784801e-02 3.77147526395e-02 3.34304675050e-02 2.93819034216e-02 - 2.25132701769e-02 2.00258575799e-02 1.79167348748e-02 1.61729889157e-02 1.47756456624e-02 1.37059602390e-02 - 1.29494247541e-02 1.24976141314e-02 1.23472319177e-02 1.24976141314e-02 1.29494247541e-02 1.37059602390e-02 - 1.47756456624e-02 1.61729889157e-02 1.79167348748e-02 2.00258575799e-02 2.25132701769e-02 2.53749373622e-02 - 2.85734174953e-02 3.20210145144e-02 3.55725175924e-02 3.90350130516e-02 4.21941579647e-02 4.48486167771e-02 - 4.68401774785e-02 4.80677366203e-02 4.84815544672e-02 4.80677366203e-02 4.68401774785e-02 4.48486167771e-02 - 4.21941579647e-02 3.90350130516e-02 3.55725175924e-02 3.20210145144e-02 2.85734174953e-02 2.53749373622e-02 - 1.97871783123e-02 1.79167348748e-02 1.63370205752e-02 1.50389831834e-02 1.40109856905e-02 1.32437842255e-02 - 1.27327884289e-02 1.24770996440e-02 1.24770996440e-02 1.27327884289e-02 1.32437842255e-02 1.40109856905e-02 - 1.50389831834e-02 1.63370205752e-02 1.79167348748e-02 1.97871783123e-02 2.19482820950e-02 2.43819637041e-02 - 2.70402901784e-02 2.98349904445e-02 3.26363277502e-02 3.52857897121e-02 3.76190713504e-02 3.94908104948e-02 - 4.07924714489e-02 4.14579289512e-02 4.14579289512e-02 4.07924714489e-02 3.94908104948e-02 3.76190713504e-02 - 3.52857897121e-02 3.26363277502e-02 2.98349904445e-02 2.70402901784e-02 2.43819637041e-02 2.19482820950e-02 - 1.75241772421e-02 1.61729889157e-02 1.50389831834e-02 1.41157952825e-02 1.33976732300e-02 1.28827341282e-02 - 1.25723726562e-02 1.24686371753e-02 1.25723726562e-02 1.28827341282e-02 1.33976732300e-02 1.41157952825e-02 - 1.50389831834e-02 1.61729889157e-02 1.75241772421e-02 1.90940368490e-02 2.08735527936e-02 2.28368095394e-02 - 2.49333108373e-02 2.70827915169e-02 2.91781605866e-02 3.10978190541e-02 3.27229087590e-02 3.39533984936e-02 - 3.47182328687e-02 3.49773595797e-02 3.47182328687e-02 3.39533984936e-02 3.27229087590e-02 3.10978190541e-02 - 2.91781605866e-02 2.70827915169e-02 2.49333108373e-02 2.28368095394e-02 2.08735527936e-02 1.90940368490e-02 - 1.56960478729e-02 1.47756456624e-02 1.40109856905e-02 1.33976732300e-02 1.29342051284e-02 1.26225341258e-02 - 1.24657333634e-02 1.24657333634e-02 1.26225341258e-02 1.29342051284e-02 1.33976732300e-02 1.40109856905e-02 - 1.47756456624e-02 1.56960478729e-02 1.67754563001e-02 1.80109897723e-02 1.93892705934e-02 2.08820531014e-02 - 2.24420850452e-02 2.40022165572e-02 2.54803066383e-02 2.67889182249e-02 2.78466298707e-02 2.85879356046e-02 - 2.89691250092e-02 2.89691250092e-02 2.85879356046e-02 2.78466298707e-02 2.67889182249e-02 2.54803066383e-02 - 2.40022165572e-02 2.24420850452e-02 2.08820531014e-02 1.93892705934e-02 1.80109897723e-02 1.67754563001e-02 - 1.42727054437e-02 1.37059602390e-02 1.32437842255e-02 1.28827341282e-02 1.26225341258e-02 1.24650738064e-02 - 1.24123312979e-02 1.24650738064e-02 1.26225341258e-02 1.28827341282e-02 1.32437842255e-02 1.37059602390e-02 - 1.42727054437e-02 1.49488960464e-02 1.57370100687e-02 1.66330383744e-02 1.76229803621e-02 1.86800926235e-02 - 1.97639178277e-02 2.08223402545e-02 2.17964249596e-02 2.26267522861e-02 2.32603028496e-02 2.36566460915e-02 - 2.37914166767e-02 2.36566460915e-02 2.32603028496e-02 2.26267522861e-02 2.17964249596e-02 2.08223402545e-02 - 1.97639178277e-02 1.86800926235e-02 1.76229803621e-02 1.66330383744e-02 1.57370100687e-02 1.49488960464e-02 - 1.32272933414e-02 1.29494247541e-02 1.27327884289e-02 1.25723726562e-02 1.24657333634e-02 1.24123312979e-02 - 1.24123312979e-02 1.24657333634e-02 1.25723726562e-02 1.27327884289e-02 1.29494247541e-02 1.32272933414e-02 - 1.35733603577e-02 1.39945083398e-02 1.44944499034e-02 1.50702461704e-02 1.57094271493e-02 1.63890080671e-02 - 1.70770073925e-02 1.77355963866e-02 1.83246021902e-02 1.88053010662e-02 1.91448778653e-02 1.93203741197e-02 - 1.93203741197e-02 1.91448778653e-02 1.88053010662e-02 1.83246021902e-02 1.77355963866e-02 1.70770073925e-02 - 1.63890080671e-02 1.57094271493e-02 1.50702461704e-02 1.44944499034e-02 1.39945083398e-02 1.35733603577e-02 - 1.25396406703e-02 1.24976141314e-02 1.24770996440e-02 1.24686371753e-02 1.24657333634e-02 1.24650738064e-02 - 1.24657333634e-02 1.24686371753e-02 1.24770996440e-02 1.24976141314e-02 1.25396406703e-02 1.26143883181e-02 - 1.27333396536e-02 1.29064893850e-02 1.31397287366e-02 1.34318126710e-02 1.37726366090e-02 1.41440793855e-02 - 1.45226393383e-02 1.48820928374e-02 1.51956958667e-02 1.54388806266e-02 1.55924938344e-02 1.56449525655e-02 - 1.55924938344e-02 1.54388806266e-02 1.51956958667e-02 1.48820928374e-02 1.45226393383e-02 1.41440793855e-02 - 1.37726366090e-02 1.34318126710e-02 1.31397287366e-02 1.29064893850e-02 1.27333396536e-02 1.26143883181e-02 - 1.21980827392e-02 1.23472319177e-02 1.24770996440e-02 1.25723726562e-02 1.26225341258e-02 1.26225341258e-02 - 1.25723726562e-02 1.24770996440e-02 1.23472319177e-02 1.21980827392e-02 1.20475550421e-02 1.19137265332e-02 - 1.18131307076e-02 1.17590249893e-02 1.17590249893e-02 1.18131307076e-02 1.19137265332e-02 1.20475550421e-02 - 1.21980827392e-02 1.23472319177e-02 1.24770996440e-02 1.25723726562e-02 1.26225341258e-02 1.26225341258e-02 - 1.25723726562e-02 1.24770996440e-02 1.23472319177e-02 1.21980827392e-02 1.20475550421e-02 1.19137265332e-02 - 1.18131307076e-02 1.17590249893e-02 1.17590249893e-02 1.18131307076e-02 1.19137265332e-02 1.20475550421e-02 - 1.21980827392e-02 1.24976141314e-02 1.27327884289e-02 1.28827341282e-02 1.29342051284e-02 1.28827341282e-02 - 1.27327884289e-02 1.24976141314e-02 1.21980827392e-02 1.18598583649e-02 1.15097880648e-02 1.11729588764e-02 - 1.08706042529e-02 1.06181928008e-02 1.04238516982e-02 1.02881382638e-02 1.02054916185e-02 1.01663421573e-02 - 1.01587603229e-02 1.01697655067e-02 1.01870819285e-02 1.02011860999e-02 1.02064774226e-02 1.02011860999e-02 - 1.01870819285e-02 1.01697655067e-02 1.01587603229e-02 1.01663421573e-02 1.02054916185e-02 1.02881382638e-02 - 1.04238516982e-02 1.06181928008e-02 1.08706042529e-02 1.11729588764e-02 1.15097880648e-02 1.18598583649e-02 - 1.25396406703e-02 1.29494247541e-02 1.32437842255e-02 1.33976732300e-02 1.33976732300e-02 1.32437842255e-02 - 1.29494247541e-02 1.25396406703e-02 1.20475550421e-02 1.15097880648e-02 1.09620544703e-02 1.04356792319e-02 - 9.95507847617e-03 9.53627070961e-03 9.18679124184e-03 8.90705726329e-03 8.69246386814e-03 8.53524112695e-03 - 8.42580807925e-03 8.35413904759e-03 8.31144312544e-03 8.29158854156e-03 8.29158854156e-03 8.31144312544e-03 - 8.35413904759e-03 8.42580807925e-03 8.53524112695e-03 8.69246386814e-03 8.90705726329e-03 9.18679124184e-03 - 9.53627070961e-03 9.95507847617e-03 1.04356792319e-02 1.09620544703e-02 1.15097880648e-02 1.20475550421e-02 - 1.32272933414e-02 1.37059602390e-02 1.40109856905e-02 1.41157952825e-02 1.40109856905e-02 1.37059602390e-02 - 1.32272933414e-02 1.26143883181e-02 1.19137265332e-02 1.11729588764e-02 1.04356792319e-02 9.73748464183e-03 - 9.10381322670e-03 8.54973346172e-03 8.08133005705e-03 7.69793885145e-03 7.39443450458e-03 7.16308508658e-03 - 6.99504538611e-03 6.88181758770e-03 6.81664387654e-03 6.79537428806e-03 6.81664387654e-03 6.88181758770e-03 - 6.99504538611e-03 7.16308508658e-03 7.39443450458e-03 7.69793885145e-03 8.08133005705e-03 8.54973346172e-03 - 9.10381322670e-03 9.73748464183e-03 1.04356792319e-02 1.11729588764e-02 1.19137265332e-02 1.26143883181e-02 - 1.42727054437e-02 1.47756456624e-02 1.50389831834e-02 1.50389831834e-02 1.47756456624e-02 1.42727054437e-02 - 1.35733603577e-02 1.27333396536e-02 1.18131307076e-02 1.08706042529e-02 9.95507847617e-03 9.10381322670e-03 - 8.34122341388e-03 7.68014935330e-03 7.12420828954e-03 6.67049181789e-03 6.31209415558e-03 6.04016501968e-03 - 5.84558656512e-03 5.72047031573e-03 5.65928321674e-03 5.65928321674e-03 5.72047031573e-03 5.84558656512e-03 - 6.04016501968e-03 6.31209415558e-03 6.67049181789e-03 7.12420828954e-03 7.68014935330e-03 8.34122341388e-03 - 9.10381322670e-03 9.95507847617e-03 1.08706042529e-02 1.18131307076e-02 1.27333396536e-02 1.35733603577e-02 - 1.56960478729e-02 1.61729889157e-02 1.63370205752e-02 1.61729889157e-02 1.56960478729e-02 1.49488960464e-02 - 1.39945083398e-02 1.29064893850e-02 1.17590249893e-02 1.06181928008e-02 9.53627070961e-03 8.54973346172e-03 - 7.68014935330e-03 6.93665223838e-03 6.31909087196e-03 5.82127807001e-03 5.43377044817e-03 5.14599535674e-03 - 4.94806264494e-03 4.83232712929e-03 4.79423577304e-03 4.83232712929e-03 4.94806264494e-03 5.14599535674e-03 - 5.43377044817e-03 5.82127807001e-03 6.31909087196e-03 6.93665223838e-03 7.68014935330e-03 8.54973346172e-03 - 9.53627070961e-03 1.06181928008e-02 1.17590249893e-02 1.29064893850e-02 1.39945083398e-02 1.49488960464e-02 - 1.75241772421e-02 1.79167348748e-02 1.79167348748e-02 1.75241772421e-02 1.67754563001e-02 1.57370100687e-02 - 1.44944499034e-02 1.31397287366e-02 1.17590249893e-02 1.04238516982e-02 9.18679124184e-03 8.08133005705e-03 - 7.12420828954e-03 6.31909087196e-03 5.66079261571e-03 5.13913617973e-03 4.74176747355e-03 4.45623663297e-03 - 4.27192322596e-03 4.18152878343e-03 4.18152878343e-03 4.27192322596e-03 4.45623663297e-03 4.74176747355e-03 - 5.13913617973e-03 5.66079261571e-03 6.31909087196e-03 7.12420828954e-03 8.08133005705e-03 9.18679124184e-03 - 1.04238516982e-02 1.17590249893e-02 1.31397287366e-02 1.44944499034e-02 1.57370100687e-02 1.67754563001e-02 - 1.97871783123e-02 2.00258575799e-02 1.97871783123e-02 1.90940368490e-02 1.80109897723e-02 1.66330383744e-02 - 1.50702461704e-02 1.34318126710e-02 1.18131307076e-02 1.02881382638e-02 8.90705726329e-03 7.69793885145e-03 - 6.67049181789e-03 5.82127807001e-03 5.13913617973e-03 4.60945880297e-03 4.21692866215e-03 3.94752033538e-03 - 3.79030883078e-03 3.73863341678e-03 3.79030883078e-03 3.94752033538e-03 4.21692866215e-03 4.60945880297e-03 - 5.13913617973e-03 5.82127807001e-03 6.67049181789e-03 7.69793885145e-03 8.90705726329e-03 1.02881382638e-02 - 1.18131307076e-02 1.34318126710e-02 1.50702461704e-02 1.66330383744e-02 1.80109897723e-02 1.90940368490e-02 - 2.25132701769e-02 2.25132701769e-02 2.19482820950e-02 2.08735527936e-02 1.93892705934e-02 1.76229803621e-02 - 1.57094271493e-02 1.37726366090e-02 1.19137265332e-02 1.02054916185e-02 8.69246386814e-03 7.39443450458e-03 - 6.31209415558e-03 5.43377044817e-03 4.74176747355e-03 4.21692866215e-03 3.84131375804e-03 3.59990872378e-03 - 3.48198055848e-03 3.48198055848e-03 3.59990872378e-03 3.84131375804e-03 4.21692866215e-03 4.74176747355e-03 - 5.43377044817e-03 6.31209415558e-03 7.39443450458e-03 8.69246386814e-03 1.02054916185e-02 1.19137265332e-02 - 1.37726366090e-02 1.57094271493e-02 1.76229803621e-02 1.93892705934e-02 2.08735527936e-02 2.19482820950e-02 - 2.57176061925e-02 2.53749373622e-02 2.43819637041e-02 2.28368095394e-02 2.08820531014e-02 1.86800926235e-02 - 1.63890080671e-02 1.41440793855e-02 1.20475550421e-02 1.01663421573e-02 8.53524112695e-03 7.16308508658e-03 - 6.04016501968e-03 5.14599535674e-03 4.45623663297e-03 3.94752033538e-03 3.59990872378e-03 3.39799742507e-03 - 3.33184951460e-03 3.39799742507e-03 3.59990872378e-03 3.94752033538e-03 4.45623663297e-03 5.14599535674e-03 - 6.04016501968e-03 7.16308508658e-03 8.53524112695e-03 1.01663421573e-02 1.20475550421e-02 1.41440793855e-02 - 1.63890080671e-02 1.86800926235e-02 2.08820531014e-02 2.28368095394e-02 2.43819637041e-02 2.53749373622e-02 - 2.93819034216e-02 2.85734174953e-02 2.70402901784e-02 2.49333108373e-02 2.24420850452e-02 1.97639178277e-02 - 1.70770073925e-02 1.45226393383e-02 1.21980827392e-02 1.01587603229e-02 8.42580807925e-03 6.99504538611e-03 - 5.84558656512e-03 4.94806264494e-03 4.27192322596e-03 3.79030883078e-03 3.48198055848e-03 3.33184951460e-03 - 3.33184951460e-03 3.48198055848e-03 3.79030883078e-03 4.27192322596e-03 4.94806264494e-03 5.84558656512e-03 - 6.99504538611e-03 8.42580807925e-03 1.01587603229e-02 1.21980827392e-02 1.45226393383e-02 1.70770073925e-02 - 1.97639178277e-02 2.24420850452e-02 2.49333108373e-02 2.70402901784e-02 2.85734174953e-02 2.93819034216e-02 - 3.34304675050e-02 3.20210145144e-02 2.98349904445e-02 2.70827915169e-02 2.40022165572e-02 2.08223402545e-02 - 1.77355963866e-02 1.48820928374e-02 1.23472319177e-02 1.01697655067e-02 8.35413904759e-03 6.88181758770e-03 - 5.72047031573e-03 4.83232712929e-03 4.18152878343e-03 3.73863341678e-03 3.48198055848e-03 3.39799742507e-03 - 3.48198055848e-03 3.73863341678e-03 4.18152878343e-03 4.83232712929e-03 5.72047031573e-03 6.88181758770e-03 - 8.35413904759e-03 1.01697655067e-02 1.23472319177e-02 1.48820928374e-02 1.77355963866e-02 2.08223402545e-02 - 2.40022165572e-02 2.70827915169e-02 2.98349904445e-02 3.20210145144e-02 3.34304675050e-02 3.39176800802e-02 - 3.77147526395e-02 3.55725175924e-02 3.26363277502e-02 2.91781605866e-02 2.54803066383e-02 2.17964249596e-02 - 1.83246021902e-02 1.51956958667e-02 1.24770996440e-02 1.01870819285e-02 8.31144312544e-03 6.81664387654e-03 - 5.65928321674e-03 4.79423577304e-03 4.18152878343e-03 3.79030883078e-03 3.59990872378e-03 3.59990872378e-03 - 3.79030883078e-03 4.18152878343e-03 4.79423577304e-03 5.65928321674e-03 6.81664387654e-03 8.31144312544e-03 - 1.01870819285e-02 1.24770996440e-02 1.51956958667e-02 1.83246021902e-02 2.17964249596e-02 2.54803066383e-02 - 2.91781605866e-02 3.26363277502e-02 3.55725175924e-02 3.77147526395e-02 3.88462459817e-02 3.88462459817e-02 - 4.20165784801e-02 3.90350130516e-02 3.52857897121e-02 3.10978190541e-02 2.67889182249e-02 2.26267522861e-02 - 1.88053010662e-02 1.54388806266e-02 1.25723726562e-02 1.02011860999e-02 8.29158854156e-03 6.79537428806e-03 - 5.65928321674e-03 4.83232712929e-03 4.27192322596e-03 3.94752033538e-03 3.84131375804e-03 3.94752033538e-03 - 4.27192322596e-03 4.83232712929e-03 5.65928321674e-03 6.79537428806e-03 8.29158854156e-03 1.02011860999e-02 - 1.25723726562e-02 1.54388806266e-02 1.88053010662e-02 2.26267522861e-02 2.67889182249e-02 3.10978190541e-02 - 3.52857897121e-02 3.90350130516e-02 4.20165784801e-02 4.39402098517e-02 4.46053414397e-02 4.39402098517e-02 - 4.60731359718e-02 4.21941579647e-02 3.76190713504e-02 3.27229087590e-02 2.78466298707e-02 2.32603028496e-02 - 1.91448778653e-02 1.55924938344e-02 1.26225341258e-02 1.02064774226e-02 8.29158854156e-03 6.81664387654e-03 - 5.72047031573e-03 4.94806264494e-03 4.45623663297e-03 4.21692866215e-03 4.21692866215e-03 4.45623663297e-03 - 4.94806264494e-03 5.72047031573e-03 6.81664387654e-03 8.29158854156e-03 1.02064774226e-02 1.26225341258e-02 - 1.55924938344e-02 1.91448778653e-02 2.32603028496e-02 2.78466298707e-02 3.27229087590e-02 3.76190713504e-02 - 4.21941579647e-02 4.60731359718e-02 4.88987422193e-02 5.03893328752e-02 5.03893328752e-02 4.88987422193e-02 - 4.96193341715e-02 4.48486167771e-02 3.94908104948e-02 3.39533984936e-02 2.85879356046e-02 2.36566460915e-02 - 1.93203741197e-02 1.56449525655e-02 1.26225341258e-02 1.02011860999e-02 8.31144312544e-03 6.88181758770e-03 - 5.84558656512e-03 5.14599535674e-03 4.74176747355e-03 4.60945880297e-03 4.74176747355e-03 5.14599535674e-03 - 5.84558656512e-03 6.88181758770e-03 8.31144312544e-03 1.02011860999e-02 1.26225341258e-02 1.56449525655e-02 - 1.93203741197e-02 2.36566460915e-02 2.85879356046e-02 3.39533984936e-02 3.94908104948e-02 4.48486167771e-02 - 4.96193341715e-02 5.33923081840e-02 5.58153453540e-02 5.66509609539e-02 5.58153453540e-02 5.33923081840e-02 - 5.24339557043e-02 4.68401774785e-02 4.07924714489e-02 3.47182328687e-02 2.89691250092e-02 2.37914166767e-02 - 1.93203741197e-02 1.55924938344e-02 1.25723726562e-02 1.01870819285e-02 8.35413904759e-03 6.99504538611e-03 - 6.04016501968e-03 5.43377044817e-03 5.13913617973e-03 5.13913617973e-03 5.43377044817e-03 6.04016501968e-03 - 6.99504538611e-03 8.35413904759e-03 1.01870819285e-02 1.25723726562e-02 1.55924938344e-02 1.93203741197e-02 - 2.37914166767e-02 2.89691250092e-02 3.47182328687e-02 4.07924714489e-02 4.68401774785e-02 5.24339557043e-02 - 5.71251588417e-02 6.05090723285e-02 6.22821499923e-02 6.22821499923e-02 6.05090723285e-02 5.71251588417e-02 - 5.43692149489e-02 4.80677366203e-02 4.14579289512e-02 3.49773595797e-02 2.89691250092e-02 2.36566460915e-02 - 1.91448778653e-02 1.54388806266e-02 1.24770996440e-02 1.01697655067e-02 8.42580807925e-03 7.16308508658e-03 - 6.31209415558e-03 5.82127807001e-03 5.66079261571e-03 5.82127807001e-03 6.31209415558e-03 7.16308508658e-03 - 8.42580807925e-03 1.01697655067e-02 1.24770996440e-02 1.54388806266e-02 1.91448778653e-02 2.36566460915e-02 - 2.89691250092e-02 3.49773595797e-02 4.14579289512e-02 4.80677366203e-02 5.43692149489e-02 5.98878714669e-02 - 6.41840706496e-02 6.69101294891e-02 6.78442738531e-02 6.69101294891e-02 6.41840706496e-02 5.98878714669e-02 - 5.53499973529e-02 4.84815544672e-02 4.14579289512e-02 3.47182328687e-02 2.85879356046e-02 2.32603028496e-02 - 1.88053010662e-02 1.51956958667e-02 1.23472319177e-02 1.01587603229e-02 8.53524112695e-03 7.39443450458e-03 - 6.67049181789e-03 6.31909087196e-03 6.31909087196e-03 6.67049181789e-03 7.39443450458e-03 8.53524112695e-03 - 1.01587603229e-02 1.23472319177e-02 1.51956958667e-02 1.88053010662e-02 2.32603028496e-02 2.85879356046e-02 - 3.47182328687e-02 4.14579289512e-02 4.84815544672e-02 5.53499973529e-02 6.15702941626e-02 6.66786802062e-02 - 7.03019494995e-02 7.21810172465e-02 7.21810172465e-02 7.03019494995e-02 6.66786802062e-02 6.15702941626e-02 - 5.53499973529e-02 4.80677366203e-02 4.07924714489e-02 3.39533984936e-02 2.78466298707e-02 2.26267522861e-02 - 1.83246021902e-02 1.48820928374e-02 1.21980827392e-02 1.01663421573e-02 8.69246386814e-03 7.69793885145e-03 - 7.12420828954e-03 6.93665223838e-03 7.12420828954e-03 7.69793885145e-03 8.69246386814e-03 1.01663421573e-02 - 1.21980827392e-02 1.48820928374e-02 1.83246021902e-02 2.26267522861e-02 2.78466298707e-02 3.39533984936e-02 - 4.07924714489e-02 4.80677366203e-02 5.53499973529e-02 6.21334821617e-02 6.79320857310e-02 7.23556493700e-02 - 7.51264696898e-02 7.60705845667e-02 7.51264696898e-02 7.23556493700e-02 6.79320857310e-02 6.21334821617e-02 - 5.43692149489e-02 4.68401774785e-02 3.94908104948e-02 3.27229087590e-02 2.67889182249e-02 2.17964249596e-02 - 1.77355963866e-02 1.45226393383e-02 1.20475550421e-02 1.02054916185e-02 8.90705726329e-03 8.08133005705e-03 - 7.68014935330e-03 7.68014935330e-03 8.08133005705e-03 8.90705726329e-03 1.02054916185e-02 1.20475550421e-02 - 1.45226393383e-02 1.77355963866e-02 2.17964249596e-02 2.67889182249e-02 3.27229087590e-02 3.94908104948e-02 - 4.68401774785e-02 5.43692149489e-02 6.15702941626e-02 6.79320857310e-02 7.30418134594e-02 7.66122811094e-02 - 7.84511058955e-02 7.84511058955e-02 7.66122811094e-02 7.30418134594e-02 6.79320857310e-02 6.15702941626e-02 - 5.24339557043e-02 4.48486167771e-02 3.76190713504e-02 3.10978190541e-02 2.54803066383e-02 2.08223402545e-02 - 1.70770073925e-02 1.41440793855e-02 1.19137265332e-02 1.02881382638e-02 9.18679124184e-03 8.54973346172e-03 - 8.34122341388e-03 8.54973346172e-03 9.18679124184e-03 1.02881382638e-02 1.19137265332e-02 1.41440793855e-02 - 1.70770073925e-02 2.08223402545e-02 2.54803066383e-02 3.10978190541e-02 3.76190713504e-02 4.48486167771e-02 - 5.24339557043e-02 5.98878714669e-02 6.66786802062e-02 7.23556493700e-02 7.66122811094e-02 7.92532152557e-02 - 8.01500628124e-02 7.92532152557e-02 7.66122811094e-02 7.23556493700e-02 6.66786802062e-02 5.98878714669e-02 - 4.96193341715e-02 4.21941579647e-02 3.52857897121e-02 2.91781605866e-02 2.40022165572e-02 1.97639178277e-02 - 1.63890080671e-02 1.37726366090e-02 1.18131307076e-02 1.04238516982e-02 9.53627070961e-03 9.10381322670e-03 - 9.10381322670e-03 9.53627070961e-03 1.04238516982e-02 1.18131307076e-02 1.37726366090e-02 1.63890080671e-02 - 1.97639178277e-02 2.40022165572e-02 2.91781605866e-02 3.52857897121e-02 4.21941579647e-02 4.96193341715e-02 - 5.71251588417e-02 6.41840706496e-02 7.03019494995e-02 7.51264696898e-02 7.84511058955e-02 8.01500628124e-02 - 8.01500628124e-02 7.84511058955e-02 7.51264696898e-02 7.03019494995e-02 6.41840706496e-02 5.71251588417e-02 - 4.60731359718e-02 3.90350130516e-02 3.26363277502e-02 2.70827915169e-02 2.24420850452e-02 1.86800926235e-02 - 1.57094271493e-02 1.34318126710e-02 1.17590249893e-02 1.06181928008e-02 9.95507847617e-03 9.73748464183e-03 - 9.95507847617e-03 1.06181928008e-02 1.17590249893e-02 1.34318126710e-02 1.57094271493e-02 1.86800926235e-02 - 2.24420850452e-02 2.70827915169e-02 3.26363277502e-02 3.90350130516e-02 4.60731359718e-02 5.33923081840e-02 - 6.05090723285e-02 6.69101294891e-02 7.21810172465e-02 7.60705845667e-02 7.84511058955e-02 7.92532152557e-02 - 7.84511058955e-02 7.60705845667e-02 7.21810172465e-02 6.69101294891e-02 6.05090723285e-02 5.33923081840e-02 - 4.20165784801e-02 3.55725175924e-02 2.98349904445e-02 2.49333108373e-02 2.08820531014e-02 1.76229803621e-02 - 1.50702461704e-02 1.31397287366e-02 1.17590249893e-02 1.08706042529e-02 1.04356792319e-02 1.04356792319e-02 - 1.08706042529e-02 1.17590249893e-02 1.31397287366e-02 1.50702461704e-02 1.76229803621e-02 2.08820531014e-02 - 2.49333108373e-02 2.98349904445e-02 3.55725175924e-02 4.20165784801e-02 4.88987422193e-02 5.58153453540e-02 - 6.22821499923e-02 6.78442738531e-02 7.21810172465e-02 7.51264696898e-02 7.66122811094e-02 7.66122811094e-02 - 7.51264696898e-02 7.21810172465e-02 6.78442738531e-02 6.22821499923e-02 5.58153453540e-02 4.88987422193e-02 - 3.77147526395e-02 3.20210145144e-02 2.70402901784e-02 2.28368095394e-02 1.93892705934e-02 1.66330383744e-02 - 1.44944499034e-02 1.29064893850e-02 1.18131307076e-02 1.11729588764e-02 1.09620544703e-02 1.11729588764e-02 - 1.18131307076e-02 1.29064893850e-02 1.44944499034e-02 1.66330383744e-02 1.93892705934e-02 2.28368095394e-02 - 2.70402901784e-02 3.20210145144e-02 3.77147526395e-02 4.39402098517e-02 5.03893328752e-02 5.66509609539e-02 - 6.22821499923e-02 6.69101294891e-02 7.03019494995e-02 7.23556493700e-02 7.30418134594e-02 7.23556493700e-02 - 7.03019494995e-02 6.69101294891e-02 6.22821499923e-02 5.66509609539e-02 5.03893328752e-02 4.39402098517e-02 - 3.34304675050e-02 2.85734174953e-02 2.43819637041e-02 2.08735527936e-02 1.80109897723e-02 1.57370100687e-02 - 1.39945083398e-02 1.27333396536e-02 1.19137265332e-02 1.15097880648e-02 1.15097880648e-02 1.19137265332e-02 - 1.27333396536e-02 1.39945083398e-02 1.57370100687e-02 1.80109897723e-02 2.08735527936e-02 2.43819637041e-02 - 2.85734174953e-02 3.34304675050e-02 3.88462459817e-02 4.46053414397e-02 5.03893328752e-02 5.58153453540e-02 - 6.05090723285e-02 6.41840706496e-02 6.66786802062e-02 6.79320857310e-02 6.79320857310e-02 6.66786802062e-02 - 6.41840706496e-02 6.05090723285e-02 5.58153453540e-02 5.03893328752e-02 4.46053414397e-02 3.88462459817e-02 - 2.93819034216e-02 2.53749373622e-02 2.19482820950e-02 1.90940368490e-02 1.67754563001e-02 1.49488960464e-02 - 1.35733603577e-02 1.26143883181e-02 1.20475550421e-02 1.18598583649e-02 1.20475550421e-02 1.26143883181e-02 - 1.35733603577e-02 1.49488960464e-02 1.67754563001e-02 1.90940368490e-02 2.19482820950e-02 2.53749373622e-02 - 2.93819034216e-02 3.39176800802e-02 3.88462459817e-02 4.39402098517e-02 4.88987422193e-02 5.33923081840e-02 - 5.71251588417e-02 5.98878714669e-02 6.15702941626e-02 6.21334821617e-02 6.15702941626e-02 5.98878714669e-02 - 5.71251588417e-02 5.33923081840e-02 4.88987422193e-02 4.39402098517e-02 3.88462459817e-02 3.39176800802e-02 - 2.69304328597e-02 2.40237109616e-02 2.15413174517e-02 1.94746684497e-02 1.78072941675e-02 1.65234811342e-02 - 1.56112881223e-02 1.50645020089e-02 1.48820928374e-02 1.50645020089e-02 1.56112881223e-02 1.65234811342e-02 - 1.78072941675e-02 1.94746684497e-02 2.15413174517e-02 2.40237109616e-02 2.69304328597e-02 3.02423286704e-02 - 3.38859304601e-02 3.77147526395e-02 4.15120643887e-02 4.50208900473e-02 4.79989400749e-02 5.02828320119e-02 - 5.18281863755e-02 5.26931433274e-02 5.29676178633e-02 5.26931433274e-02 5.18281863755e-02 5.02828320119e-02 - 4.79989400749e-02 4.50208900473e-02 4.15120643887e-02 3.77147526395e-02 3.38859304601e-02 3.02423286704e-02 - 2.40237109616e-02 2.18005508565e-02 1.99070659239e-02 1.83376793613e-02 1.70848695603e-02 1.61434902729e-02 - 1.55127511572e-02 1.51956958667e-02 1.51956958667e-02 1.55127511572e-02 1.61434902729e-02 1.70848695603e-02 - 1.83376793613e-02 1.99070659239e-02 2.18005508565e-02 2.40237109616e-02 2.65706573512e-02 2.94074293899e-02 - 3.24534608631e-02 3.55725175924e-02 3.85829474965e-02 4.12888114430e-02 4.35234290368e-02 4.51877782102e-02 - 4.62623331670e-02 4.67810667612e-02 4.67810667612e-02 4.62623331670e-02 4.51877782102e-02 4.35234290368e-02 - 4.12888114430e-02 3.85829474965e-02 3.55725175924e-02 3.24534608631e-02 2.94074293899e-02 2.65706573512e-02 - 2.15413174517e-02 1.99070659239e-02 1.85201445811e-02 1.73786828448e-02 1.64818809732e-02 1.58329883187e-02 - 1.54388806266e-02 1.53065353883e-02 1.54388806266e-02 1.58329883187e-02 1.64818809732e-02 1.73786828448e-02 - 1.85201445811e-02 1.99070659239e-02 2.15413174517e-02 2.34202555044e-02 2.55281844546e-02 2.78244998346e-02 - 3.02323588099e-02 3.26363277502e-02 3.48956024912e-02 3.68707660171e-02 3.84534160516e-02 3.95849180057e-02 - 4.02540981079e-02 4.04742233092e-02 4.02540981079e-02 3.95849180057e-02 3.84534160516e-02 3.68707660171e-02 - 3.48956024912e-02 3.26363277502e-02 3.02323588099e-02 2.78244998346e-02 2.55281844546e-02 2.34202555044e-02 - 1.94746684497e-02 1.83376793613e-02 1.73786828448e-02 1.65980023724e-02 1.59997599900e-02 1.55924938344e-02 - 1.53857855201e-02 1.53857855201e-02 1.55924938344e-02 1.59997599900e-02 1.65980023724e-02 1.73786828448e-02 - 1.83376793613e-02 1.94746684497e-02 2.07887392229e-02 2.22726314479e-02 2.39063871143e-02 2.56499234494e-02 - 2.74372089612e-02 2.91781605866e-02 3.07715106065e-02 3.21243272248e-02 3.31691643222e-02 3.38709874542e-02 - 3.42208946471e-02 3.42208946471e-02 3.38709874542e-02 3.31691643222e-02 3.21243272248e-02 3.07715106065e-02 - 2.91781605866e-02 2.74372089612e-02 2.56499234494e-02 2.39063871143e-02 2.22726314479e-02 2.07887392229e-02 - 1.78072941675e-02 1.70848695603e-02 1.64818809732e-02 1.59997599900e-02 1.56449525655e-02 1.54267827082e-02 - 1.53530693596e-02 1.54267827082e-02 1.56449525655e-02 1.59997599900e-02 1.64818809732e-02 1.70848695603e-02 - 1.78072941675e-02 1.86504890434e-02 1.96135589165e-02 2.06884779452e-02 2.18557815330e-02 2.30804654510e-02 - 2.43103322252e-02 2.54803066383e-02 2.65227612839e-02 2.73794467347e-02 2.80098127199e-02 2.83925891295e-02 - 2.85205562719e-02 2.83925891295e-02 2.80098127199e-02 2.73794467347e-02 2.65227612839e-02 2.54803066383e-02 - 2.43103322252e-02 2.30804654510e-02 2.18557815330e-02 2.06884779452e-02 1.96135589165e-02 1.86504890434e-02 - 1.65234811342e-02 1.61434902729e-02 1.58329883187e-02 1.55924938344e-02 1.54267827082e-02 1.53419303249e-02 - 1.53419303249e-02 1.54267827082e-02 1.55924938344e-02 1.58329883187e-02 1.61434902729e-02 1.65234811342e-02 - 1.69767793036e-02 1.75083321070e-02 1.81196807915e-02 1.88049742175e-02 1.95479913088e-02 2.03206914317e-02 - 2.10847229658e-02 2.17964249596e-02 2.24136125305e-02 2.29016184223e-02 2.32368358951e-02 2.34067395586e-02 - 2.34067395586e-02 2.32368358951e-02 2.29016184223e-02 2.24136125305e-02 2.17964249596e-02 2.10847229658e-02 - 2.03206914317e-02 1.95479913088e-02 1.88049742175e-02 1.81196807915e-02 1.75083321070e-02 1.69767793036e-02 - 1.56112881223e-02 1.55127511572e-02 1.54388806266e-02 1.53857855201e-02 1.53530693596e-02 1.53419303249e-02 - 1.53530693596e-02 1.53857855201e-02 1.54388806266e-02 1.55127511572e-02 1.56112881223e-02 1.57423428102e-02 - 1.59162612755e-02 1.61427916872e-02 1.64272283654e-02 1.67669692380e-02 1.71497889118e-02 1.75547637226e-02 - 1.79555609317e-02 1.83246021902e-02 1.86367379277e-02 1.88720574247e-02 1.90175139009e-02 1.90666010177e-02 - 1.90175139009e-02 1.88720574247e-02 1.86367379277e-02 1.83246021902e-02 1.79555609317e-02 1.75547637226e-02 - 1.71497889118e-02 1.67669692380e-02 1.64272283654e-02 1.61427916872e-02 1.59162612755e-02 1.57423428102e-02 - 1.50645020089e-02 1.51956958667e-02 1.53065353883e-02 1.53857855201e-02 1.54267827082e-02 1.54267827082e-02 - 1.53857855201e-02 1.53065353883e-02 1.51956958667e-02 1.50645020089e-02 1.49279448733e-02 1.48031251671e-02 - 1.47072813037e-02 1.46550533623e-02 1.46550533623e-02 1.47072813037e-02 1.48031251671e-02 1.49279448733e-02 - 1.50645020089e-02 1.51956958667e-02 1.53065353883e-02 1.53857855201e-02 1.54267827082e-02 1.54267827082e-02 - 1.53857855201e-02 1.53065353883e-02 1.51956958667e-02 1.50645020089e-02 1.49279448733e-02 1.48031251671e-02 - 1.47072813037e-02 1.46550533623e-02 1.46550533623e-02 1.47072813037e-02 1.48031251671e-02 1.49279448733e-02 - 1.48820928374e-02 1.51956958667e-02 1.54388806266e-02 1.55924938344e-02 1.56449525655e-02 1.55924938344e-02 - 1.54388806266e-02 1.51956958667e-02 1.48820928374e-02 1.45226393383e-02 1.41440793855e-02 1.37726366090e-02 - 1.34318126710e-02 1.31397287366e-02 1.29064893850e-02 1.27333396536e-02 1.26143883181e-02 1.25396406703e-02 - 1.24976141314e-02 1.24770996440e-02 1.24686371753e-02 1.24657333634e-02 1.24650738064e-02 1.24657333634e-02 - 1.24686371753e-02 1.24770996440e-02 1.24976141314e-02 1.25396406703e-02 1.26143883181e-02 1.27333396536e-02 - 1.29064893850e-02 1.31397287366e-02 1.34318126710e-02 1.37726366090e-02 1.41440793855e-02 1.45226393383e-02 - 1.50645020089e-02 1.55127511572e-02 1.58329883187e-02 1.59997599900e-02 1.59997599900e-02 1.58329883187e-02 - 1.55127511572e-02 1.50645020089e-02 1.45226393383e-02 1.39256808178e-02 1.33116675302e-02 1.27148275869e-02 - 1.21629507848e-02 1.16751572683e-02 1.12609832188e-02 1.09215936737e-02 1.06524671204e-02 1.04460621935e-02 - 1.02937156151e-02 1.01870819285e-02 1.01194532806e-02 1.00865795572e-02 1.00865795572e-02 1.01194532806e-02 - 1.01870819285e-02 1.02937156151e-02 1.04460621935e-02 1.06524671204e-02 1.09215936737e-02 1.12609832188e-02 - 1.16751572683e-02 1.21629507848e-02 1.27148275869e-02 1.33116675302e-02 1.39256808178e-02 1.45226393383e-02 - 1.56112881223e-02 1.61434902729e-02 1.64818809732e-02 1.65980023724e-02 1.64818809732e-02 1.61434902729e-02 - 1.56112881223e-02 1.49279448733e-02 1.41440793855e-02 1.33116675302e-02 1.24785638223e-02 1.16845233837e-02 - 1.09586567104e-02 1.03186231402e-02 9.77183223433e-03 9.31810768724e-03 8.95261635749e-03 8.66817035987e-03 - 8.45686847188e-03 8.31144312544e-03 8.22635918544e-03 8.19834740781e-03 8.22635918544e-03 8.31144312544e-03 - 8.45686847188e-03 8.66817035987e-03 8.95261635749e-03 9.31810768724e-03 9.77183223433e-03 1.03186231402e-02 - 1.09586567104e-02 1.16845233837e-02 1.24785638223e-02 1.33116675302e-02 1.41440793855e-02 1.49279448733e-02 - 1.65234811342e-02 1.70848695603e-02 1.73786828448e-02 1.73786828448e-02 1.70848695603e-02 1.65234811342e-02 - 1.57423428102e-02 1.48031251671e-02 1.37726366090e-02 1.27148275869e-02 1.16845233837e-02 1.07235056315e-02 - 9.85925299562e-03 9.10613117226e-03 8.46823559623e-03 7.94279014126e-03 7.52314503521e-03 7.20097316500e-03 - 6.96786738821e-03 6.81664387654e-03 6.74228118806e-03 6.74228118806e-03 6.81664387654e-03 6.96786738821e-03 - 7.20097316500e-03 7.52314503521e-03 7.94279014126e-03 8.46823559623e-03 9.10613117226e-03 9.85925299562e-03 - 1.07235056315e-02 1.16845233837e-02 1.27148275869e-02 1.37726366090e-02 1.48031251671e-02 1.57423428102e-02 - 1.78072941675e-02 1.83376793613e-02 1.85201445811e-02 1.83376793613e-02 1.78072941675e-02 1.69767793036e-02 - 1.59162612755e-02 1.47072813037e-02 1.34318126710e-02 1.21629507848e-02 1.09586567104e-02 9.85925299562e-03 - 8.88822832040e-03 8.05519399644e-03 7.35981258047e-03 6.79567554150e-03 6.35335851926e-03 6.02253909249e-03 - 5.79365065764e-03 5.65928321674e-03 5.61497680711e-03 5.65928321674e-03 5.79365065764e-03 6.02253909249e-03 - 6.35335851926e-03 6.79567554150e-03 7.35981258047e-03 8.05519399644e-03 8.88822832040e-03 9.85925299562e-03 - 1.09586567104e-02 1.21629507848e-02 1.34318126710e-02 1.47072813037e-02 1.59162612755e-02 1.69767793036e-02 - 1.94746684497e-02 1.99070659239e-02 1.99070659239e-02 1.94746684497e-02 1.86504890434e-02 1.75083321070e-02 - 1.61427916872e-02 1.46550533623e-02 1.31397287366e-02 1.16751572683e-02 1.03186231402e-02 9.10613117226e-03 - 8.05519399644e-03 7.16922584820e-03 6.44245195186e-03 5.86418256271e-03 5.42174879265e-03 5.10253249618e-03 - 4.89581524939e-03 4.79423577304e-03 4.79423577304e-03 4.89581524939e-03 5.10253249618e-03 5.42174879265e-03 - 5.86418256271e-03 6.44245195186e-03 7.16922584820e-03 8.05519399644e-03 9.10613117226e-03 1.03186231402e-02 - 1.16751572683e-02 1.31397287366e-02 1.46550533623e-02 1.61427916872e-02 1.75083321070e-02 1.86504890434e-02 - 2.15413174517e-02 2.18005508565e-02 2.15413174517e-02 2.07887392229e-02 1.96135589165e-02 1.81196807915e-02 - 1.64272283654e-02 1.46550533623e-02 1.29064893850e-02 1.12609832188e-02 9.77183223433e-03 8.46823559623e-03 - 7.35981258047e-03 6.44245195186e-03 5.70420021497e-03 5.12972310883e-03 4.70304044562e-03 4.40955813989e-03 - 4.23798561825e-03 4.18152878343e-03 4.23798561825e-03 4.40955813989e-03 4.70304044562e-03 5.12972310883e-03 - 5.70420021497e-03 6.44245195186e-03 7.35981258047e-03 8.46823559623e-03 9.77183223433e-03 1.12609832188e-02 - 1.29064893850e-02 1.46550533623e-02 1.64272283654e-02 1.81196807915e-02 1.96135589165e-02 2.07887392229e-02 - 2.40237109616e-02 2.40237109616e-02 2.34202555044e-02 2.22726314479e-02 2.06884779452e-02 1.88049742175e-02 - 1.67669692380e-02 1.47072813037e-02 1.27333396536e-02 1.09215936737e-02 9.31810768724e-03 7.94279014126e-03 - 6.79567554150e-03 5.86418256271e-03 5.12972310883e-03 4.57225197605e-03 4.17292027232e-03 3.91597292758e-03 - 3.79030883078e-03 3.79030883078e-03 3.91597292758e-03 4.17292027232e-03 4.57225197605e-03 5.12972310883e-03 - 5.86418256271e-03 6.79567554150e-03 7.94279014126e-03 9.31810768724e-03 1.09215936737e-02 1.27333396536e-02 - 1.47072813037e-02 1.67669692380e-02 1.88049742175e-02 2.06884779452e-02 2.22726314479e-02 2.34202555044e-02 - 2.69304328597e-02 2.65706573512e-02 2.55281844546e-02 2.39063871143e-02 2.18557815330e-02 1.95479913088e-02 - 1.71497889118e-02 1.48031251671e-02 1.26143883181e-02 1.06524671204e-02 8.95261635749e-03 7.52314503521e-03 - 6.35335851926e-03 5.42174879265e-03 4.70304044562e-03 4.17292027232e-03 3.81054695208e-03 3.59990872378e-03 - 3.53085792774e-03 3.59990872378e-03 3.81054695208e-03 4.17292027232e-03 4.70304044562e-03 5.42174879265e-03 - 6.35335851926e-03 7.52314503521e-03 8.95261635749e-03 1.06524671204e-02 1.26143883181e-02 1.48031251671e-02 - 1.71497889118e-02 1.95479913088e-02 2.18557815330e-02 2.39063871143e-02 2.55281844546e-02 2.65706573512e-02 - 3.02423286704e-02 2.94074293899e-02 2.78244998346e-02 2.56499234494e-02 2.30804654510e-02 2.03206914317e-02 - 1.75547637226e-02 1.49279448733e-02 1.25396406703e-02 1.04460621935e-02 8.66817035987e-03 7.20097316500e-03 - 6.02253909249e-03 5.10253249618e-03 4.40955813989e-03 3.91597292758e-03 3.59990872378e-03 3.44594928533e-03 - 3.44594928533e-03 3.59990872378e-03 3.91597292758e-03 4.40955813989e-03 5.10253249618e-03 6.02253909249e-03 - 7.20097316500e-03 8.66817035987e-03 1.04460621935e-02 1.25396406703e-02 1.49279448733e-02 1.75547637226e-02 - 2.03206914317e-02 2.30804654510e-02 2.56499234494e-02 2.78244998346e-02 2.94074293899e-02 3.02423286704e-02 - 3.38859304601e-02 3.24534608631e-02 3.02323588099e-02 2.74372089612e-02 2.43103322252e-02 2.10847229658e-02 - 1.79555609317e-02 1.50645020089e-02 1.24976141314e-02 1.02937156151e-02 8.45686847188e-03 6.96786738821e-03 - 5.79365065764e-03 4.89581524939e-03 4.23798561825e-03 3.79030883078e-03 3.53085792774e-03 3.44594928533e-03 - 3.53085792774e-03 3.79030883078e-03 4.23798561825e-03 4.89581524939e-03 5.79365065764e-03 6.96786738821e-03 - 8.45686847188e-03 1.02937156151e-02 1.24976141314e-02 1.50645020089e-02 1.79555609317e-02 2.10847229658e-02 - 2.43103322252e-02 2.74372089612e-02 3.02323588099e-02 3.24534608631e-02 3.38859304601e-02 3.43811654173e-02 - 3.77147526395e-02 3.55725175924e-02 3.26363277502e-02 2.91781605866e-02 2.54803066383e-02 2.17964249596e-02 - 1.83246021902e-02 1.51956958667e-02 1.24770996440e-02 1.01870819285e-02 8.31144312544e-03 6.81664387654e-03 - 5.65928321674e-03 4.79423577304e-03 4.18152878343e-03 3.79030883078e-03 3.59990872378e-03 3.59990872378e-03 - 3.79030883078e-03 4.18152878343e-03 4.79423577304e-03 5.65928321674e-03 6.81664387654e-03 8.31144312544e-03 - 1.01870819285e-02 1.24770996440e-02 1.51956958667e-02 1.83246021902e-02 2.17964249596e-02 2.54803066383e-02 - 2.91781605866e-02 3.26363277502e-02 3.55725175924e-02 3.77147526395e-02 3.88462459817e-02 3.88462459817e-02 - 4.15120643887e-02 3.85829474965e-02 3.48956024912e-02 3.07715106065e-02 2.65227612839e-02 2.24136125305e-02 - 1.86367379277e-02 1.53065353883e-02 1.24686371753e-02 1.01194532806e-02 8.22635918544e-03 6.74228118806e-03 - 5.61497680711e-03 4.79423577304e-03 4.23798561825e-03 3.91597292758e-03 3.81054695208e-03 3.91597292758e-03 - 4.23798561825e-03 4.79423577304e-03 5.61497680711e-03 6.74228118806e-03 8.22635918544e-03 1.01194532806e-02 - 1.24686371753e-02 1.53065353883e-02 1.86367379277e-02 2.24136125305e-02 2.65227612839e-02 3.07715106065e-02 - 3.48956024912e-02 3.85829474965e-02 4.15120643887e-02 4.34003076052e-02 4.40529168852e-02 4.34003076052e-02 - 4.50208900473e-02 4.12888114430e-02 3.68707660171e-02 3.21243272248e-02 2.73794467347e-02 2.29016184223e-02 - 1.88720574247e-02 1.53857855201e-02 1.24657333634e-02 1.00865795572e-02 8.19834740781e-03 6.74228118806e-03 - 5.65928321674e-03 4.89581524939e-03 4.40955813989e-03 4.17292027232e-03 4.17292027232e-03 4.40955813989e-03 - 4.89581524939e-03 5.65928321674e-03 6.74228118806e-03 8.19834740781e-03 1.00865795572e-02 1.24657333634e-02 - 1.53857855201e-02 1.88720574247e-02 2.29016184223e-02 2.73794467347e-02 3.21243272248e-02 3.68707660171e-02 - 4.12888114430e-02 4.50208900473e-02 4.77311231410e-02 4.91578982971e-02 4.91578982971e-02 4.77311231410e-02 - 4.79989400749e-02 4.35234290368e-02 3.84534160516e-02 3.31691643222e-02 2.80098127199e-02 2.32368358951e-02 - 1.90175139009e-02 1.54267827082e-02 1.24650738064e-02 1.00865795572e-02 8.22635918544e-03 6.81664387654e-03 - 5.79365065764e-03 5.10253249618e-03 4.70304044562e-03 4.57225197605e-03 4.70304044562e-03 5.10253249618e-03 - 5.79365065764e-03 6.81664387654e-03 8.22635918544e-03 1.00865795572e-02 1.24650738064e-02 1.54267827082e-02 - 1.90175139009e-02 2.32368358951e-02 2.80098127199e-02 3.31691643222e-02 3.84534160516e-02 4.35234290368e-02 - 4.79989400749e-02 5.15101646150e-02 5.37510492057e-02 5.45211951056e-02 5.37510492057e-02 5.15101646150e-02 - 5.02828320119e-02 4.51877782102e-02 3.95849180057e-02 3.38709874542e-02 2.83925891295e-02 2.34067395586e-02 - 1.90666010177e-02 1.54267827082e-02 1.24657333634e-02 1.01194532806e-02 8.31144312544e-03 6.96786738821e-03 - 6.02253909249e-03 5.42174879265e-03 5.12972310883e-03 5.12972310883e-03 5.42174879265e-03 6.02253909249e-03 - 6.96786738821e-03 8.31144312544e-03 1.01194532806e-02 1.24657333634e-02 1.54267827082e-02 1.90666010177e-02 - 2.34067395586e-02 2.83925891295e-02 3.38709874542e-02 3.95849180057e-02 4.51877782102e-02 5.02828320119e-02 - 5.44829894560e-02 5.74676014035e-02 5.90154969276e-02 5.90154969276e-02 5.74676014035e-02 5.44829894560e-02 - 5.18281863755e-02 4.62623331670e-02 4.02540981079e-02 3.42208946471e-02 2.85205562719e-02 2.34067395586e-02 - 1.90175139009e-02 1.53857855201e-02 1.24686371753e-02 1.01870819285e-02 8.45686847188e-03 7.20097316500e-03 - 6.35335851926e-03 5.86418256271e-03 5.70420021497e-03 5.86418256271e-03 6.35335851926e-03 7.20097316500e-03 - 8.45686847188e-03 1.01870819285e-02 1.24686371753e-02 1.53857855201e-02 1.90175139009e-02 2.34067395586e-02 - 2.85205562719e-02 3.42208946471e-02 4.02540981079e-02 4.62623331670e-02 5.18281863755e-02 5.65511919643e-02 - 6.01184381094e-02 6.23288110708e-02 6.30764730892e-02 6.23288110708e-02 6.01184381094e-02 5.65511919643e-02 - 5.26931433274e-02 4.67810667612e-02 4.04742233092e-02 3.42208946471e-02 2.83925891295e-02 2.32368358951e-02 - 1.88720574247e-02 1.53065353883e-02 1.24770996440e-02 1.02937156151e-02 8.66817035987e-03 7.52314503521e-03 - 6.79567554150e-03 6.44245195186e-03 6.44245195186e-03 6.79567554150e-03 7.52314503521e-03 8.66817035987e-03 - 1.02937156151e-02 1.24770996440e-02 1.53065353883e-02 1.88720574247e-02 2.32368358951e-02 2.83925891295e-02 - 3.42208946471e-02 4.04742233092e-02 4.67810667612e-02 5.26931433274e-02 5.77843769256e-02 6.17513938278e-02 - 6.44394828494e-02 6.57918464265e-02 6.57918464265e-02 6.44394828494e-02 6.17513938278e-02 5.77843769256e-02 - 5.29676178633e-02 4.67810667612e-02 4.02540981079e-02 3.38709874542e-02 2.80098127199e-02 2.29016184223e-02 - 1.86367379277e-02 1.51956958667e-02 1.24976141314e-02 1.04460621935e-02 8.95261635749e-03 7.94279014126e-03 - 7.35981258047e-03 7.16922584820e-03 7.35981258047e-03 7.94279014126e-03 8.95261635749e-03 1.04460621935e-02 - 1.24976141314e-02 1.51956958667e-02 1.86367379277e-02 2.29016184223e-02 2.80098127199e-02 3.38709874542e-02 - 4.02540981079e-02 4.67810667612e-02 5.29676178633e-02 5.83399236929e-02 6.25800698666e-02 6.55787911247e-02 - 6.73541476702e-02 6.79419572879e-02 6.73541476702e-02 6.55787911247e-02 6.25800698666e-02 5.83399236929e-02 - 5.26931433274e-02 4.62623331670e-02 3.95849180057e-02 3.31691643222e-02 2.73794467347e-02 2.24136125305e-02 - 1.83246021902e-02 1.50645020089e-02 1.25396406703e-02 1.06524671204e-02 9.31810768724e-03 8.46823559623e-03 - 8.05519399644e-03 8.05519399644e-03 8.46823559623e-03 9.31810768724e-03 1.06524671204e-02 1.25396406703e-02 - 1.50645020089e-02 1.83246021902e-02 2.24136125305e-02 2.73794467347e-02 3.31691643222e-02 3.95849180057e-02 - 4.62623331670e-02 5.26931433274e-02 5.83399236929e-02 6.28259810566e-02 6.60504635380e-02 6.81077724909e-02 - 6.91119067669e-02 6.91119067669e-02 6.81077724909e-02 6.60504635380e-02 6.28259810566e-02 5.83399236929e-02 - 5.18281863755e-02 4.51877782102e-02 3.84534160516e-02 3.21243272248e-02 2.65227612839e-02 2.17964249596e-02 - 1.79555609317e-02 1.49279448733e-02 1.26143883181e-02 1.09215936737e-02 9.77183223433e-03 9.10613117226e-03 - 8.88822832040e-03 9.10613117226e-03 9.77183223433e-03 1.09215936737e-02 1.26143883181e-02 1.49279448733e-02 - 1.79555609317e-02 2.17964249596e-02 2.65227612839e-02 3.21243272248e-02 3.84534160516e-02 4.51877782102e-02 - 5.18281863755e-02 5.77843769256e-02 6.25800698666e-02 6.60504635380e-02 6.83266751007e-02 6.96179820017e-02 - 7.00400365127e-02 6.96179820017e-02 6.83266751007e-02 6.60504635380e-02 6.25800698666e-02 5.77843769256e-02 - 5.02828320119e-02 4.35234290368e-02 3.68707660171e-02 3.07715106065e-02 2.54803066383e-02 2.10847229658e-02 - 1.75547637226e-02 1.48031251671e-02 1.27333396536e-02 1.12609832188e-02 1.03186231402e-02 9.85925299562e-03 - 9.85925299562e-03 1.03186231402e-02 1.12609832188e-02 1.27333396536e-02 1.48031251671e-02 1.75547637226e-02 - 2.10847229658e-02 2.54803066383e-02 3.07715106065e-02 3.68707660171e-02 4.35234290368e-02 5.02828320119e-02 - 5.65511919643e-02 6.17513938278e-02 6.55787911247e-02 6.81077724909e-02 6.96179820017e-02 7.03323963389e-02 - 7.03323963389e-02 6.96179820017e-02 6.81077724909e-02 6.55787911247e-02 6.17513938278e-02 5.65511919643e-02 - 4.79989400749e-02 4.12888114430e-02 3.48956024912e-02 2.91781605866e-02 2.43103322252e-02 2.03206914317e-02 - 1.71497889118e-02 1.47072813037e-02 1.29064893850e-02 1.16751572683e-02 1.09586567104e-02 1.07235056315e-02 - 1.09586567104e-02 1.16751572683e-02 1.29064893850e-02 1.47072813037e-02 1.71497889118e-02 2.03206914317e-02 - 2.43103322252e-02 2.91781605866e-02 3.48956024912e-02 4.12888114430e-02 4.79989400749e-02 5.44829894560e-02 - 6.01184381094e-02 6.44394828494e-02 6.73541476702e-02 6.91119067669e-02 7.00400365127e-02 7.03323963389e-02 - 7.00400365127e-02 6.91119067669e-02 6.73541476702e-02 6.44394828494e-02 6.01184381094e-02 5.44829894560e-02 - 4.50208900473e-02 3.85829474965e-02 3.26363277502e-02 2.74372089612e-02 2.30804654510e-02 1.95479913088e-02 - 1.67669692380e-02 1.46550533623e-02 1.31397287366e-02 1.21629507848e-02 1.16845233837e-02 1.16845233837e-02 - 1.21629507848e-02 1.31397287366e-02 1.46550533623e-02 1.67669692380e-02 1.95479913088e-02 2.30804654510e-02 - 2.74372089612e-02 3.26363277502e-02 3.85829474965e-02 4.50208900473e-02 5.15101646150e-02 5.74676014035e-02 - 6.23288110708e-02 6.57918464265e-02 6.79419572879e-02 6.91119067669e-02 6.96179820017e-02 6.96179820017e-02 - 6.91119067669e-02 6.79419572879e-02 6.57918464265e-02 6.23288110708e-02 5.74676014035e-02 5.15101646150e-02 - 4.15120643887e-02 3.55725175924e-02 3.02323588099e-02 2.56499234494e-02 2.18557815330e-02 1.88049742175e-02 - 1.64272283654e-02 1.46550533623e-02 1.34318126710e-02 1.27148275869e-02 1.24785638223e-02 1.27148275869e-02 - 1.34318126710e-02 1.46550533623e-02 1.64272283654e-02 1.88049742175e-02 2.18557815330e-02 2.56499234494e-02 - 3.02323588099e-02 3.55725175924e-02 4.15120643887e-02 4.77311231410e-02 5.37510492057e-02 5.90154969276e-02 - 6.30764730892e-02 6.57918464265e-02 6.73541476702e-02 6.81077724909e-02 6.83266751007e-02 6.81077724909e-02 - 6.73541476702e-02 6.57918464265e-02 6.30764730892e-02 5.90154969276e-02 5.37510492057e-02 4.77311231410e-02 - 3.77147526395e-02 3.24534608631e-02 2.78244998346e-02 2.39063871143e-02 2.06884779452e-02 1.81196807915e-02 - 1.61427916872e-02 1.47072813037e-02 1.37726366090e-02 1.33116675302e-02 1.33116675302e-02 1.37726366090e-02 - 1.47072813037e-02 1.61427916872e-02 1.81196807915e-02 2.06884779452e-02 2.39063871143e-02 2.78244998346e-02 - 3.24534608631e-02 3.77147526395e-02 4.34003076052e-02 4.91578982971e-02 5.45211951056e-02 5.90154969276e-02 - 6.23288110708e-02 6.44394828494e-02 6.55787911247e-02 6.60504635380e-02 6.60504635380e-02 6.55787911247e-02 - 6.44394828494e-02 6.23288110708e-02 5.90154969276e-02 5.45211951056e-02 4.91578982971e-02 4.34003076052e-02 - 3.38859304601e-02 2.94074293899e-02 2.55281844546e-02 2.22726314479e-02 1.96135589165e-02 1.75083321070e-02 - 1.59162612755e-02 1.48031251671e-02 1.41440793855e-02 1.39256808178e-02 1.41440793855e-02 1.48031251671e-02 - 1.59162612755e-02 1.75083321070e-02 1.96135589165e-02 2.22726314479e-02 2.55281844546e-02 2.94074293899e-02 - 3.38859304601e-02 3.88462459817e-02 4.40529168852e-02 4.91578982971e-02 5.37510492057e-02 5.74676014035e-02 - 6.01184381094e-02 6.17513938278e-02 6.25800698666e-02 6.28259810566e-02 6.25800698666e-02 6.17513938278e-02 - 6.01184381094e-02 5.74676014035e-02 5.37510492057e-02 4.91578982971e-02 4.40529168852e-02 3.88462459817e-02 - 3.02423286704e-02 2.65706573512e-02 2.34202555044e-02 2.07887392229e-02 1.86504890434e-02 1.69767793036e-02 - 1.57423428102e-02 1.49279448733e-02 1.45226393383e-02 1.45226393383e-02 1.49279448733e-02 1.57423428102e-02 - 1.69767793036e-02 1.86504890434e-02 2.07887392229e-02 2.34202555044e-02 2.65706573512e-02 3.02423286704e-02 - 3.43811654173e-02 3.88462459817e-02 4.34003076052e-02 4.77311231410e-02 5.15101646150e-02 5.44829894560e-02 - 5.65511919643e-02 5.77843769256e-02 5.83399236929e-02 5.83399236929e-02 5.77843769256e-02 5.65511919643e-02 - 5.44829894560e-02 5.15101646150e-02 4.77311231410e-02 4.34003076052e-02 3.88462459817e-02 3.43811654173e-02 - 2.89647599965e-02 2.63252408289e-02 2.40594329852e-02 2.21666114252e-02 2.06439962171e-02 1.94921954522e-02 - 1.87162119832e-02 1.83246021902e-02 1.83246021902e-02 1.87162119832e-02 1.94921954522e-02 2.06439962171e-02 - 2.21666114252e-02 2.40594329852e-02 2.63252408289e-02 2.89647599965e-02 3.19590319446e-02 3.52402742752e-02 - 3.86662855632e-02 4.20165784801e-02 4.50208900473e-02 4.74231711778e-02 4.90700187394e-02 4.99825941802e-02 - 5.03535465114e-02 5.04463447592e-02 5.04463447592e-02 5.03535465114e-02 4.99825941802e-02 4.90700187394e-02 - 4.74231711778e-02 4.50208900473e-02 4.20165784801e-02 3.86662855632e-02 3.52402742752e-02 3.19590319446e-02 - 2.63252408289e-02 2.43476957086e-02 2.26519365039e-02 2.12413612776e-02 2.01220876747e-02 1.93050944183e-02 - 1.88053010662e-02 1.86367379277e-02 1.88053010662e-02 1.93050944183e-02 2.01220876747e-02 2.12413612776e-02 - 2.26519365039e-02 2.43476957086e-02 2.63252408289e-02 2.85763383726e-02 3.10717223250e-02 3.37399765679e-02 - 3.64535808156e-02 3.90350130516e-02 4.12888114430e-02 4.30547772101e-02 4.42634768270e-02 4.49623774036e-02 - 4.52857661696e-02 4.53738413591e-02 4.52857661696e-02 4.49623774036e-02 4.42634768270e-02 4.30547772101e-02 - 4.12888114430e-02 3.90350130516e-02 3.64535808156e-02 3.37399765679e-02 3.10717223250e-02 2.85763383726e-02 - 2.40594329852e-02 2.26519365039e-02 2.14468462049e-02 2.04512222766e-02 1.96777557044e-02 1.91448778653e-02 - 1.88720574247e-02 1.88720574247e-02 1.91448778653e-02 1.96777557044e-02 2.04512222766e-02 2.14468462049e-02 - 2.26519365039e-02 2.40594329852e-02 2.56635113913e-02 2.74512061786e-02 2.93901320501e-02 3.14154606035e-02 - 3.34242157073e-02 3.52857897121e-02 3.68707660171e-02 3.80886538087e-02 3.89160663350e-02 3.93968315223e-02 - 3.96081166256e-02 3.96081166256e-02 3.93968315223e-02 3.89160663350e-02 3.80886538087e-02 3.68707660171e-02 - 3.52857897121e-02 3.34242157073e-02 3.14154606035e-02 2.93901320501e-02 2.74512061786e-02 2.56635113913e-02 - 2.21666114252e-02 2.12413612776e-02 2.04512222766e-02 1.98052910067e-02 1.93203741197e-02 1.90175139009e-02 - 1.89142861556e-02 1.90175139009e-02 1.93203741197e-02 1.98052910067e-02 2.04512222766e-02 2.12413612776e-02 - 2.21666114252e-02 2.32231030162e-02 2.44059448105e-02 2.57019293917e-02 2.70818268649e-02 2.84935612207e-02 - 2.98615217076e-02 3.10978190541e-02 3.21243272248e-02 3.28952522339e-02 3.34071767353e-02 3.36893635306e-02 - 3.37780927799e-02 3.36893635306e-02 3.34071767353e-02 3.28952522339e-02 3.21243272248e-02 3.10978190541e-02 - 2.98615217076e-02 2.84935612207e-02 2.70818268649e-02 2.57019293917e-02 2.44059448105e-02 2.32231030162e-02 - 2.06439962171e-02 2.01220876747e-02 1.96777557044e-02 1.93203741197e-02 1.90666010177e-02 1.89341271390e-02 - 1.89341271390e-02 1.90666010177e-02 1.93203741197e-02 1.96777557044e-02 2.01220876747e-02 2.06439962171e-02 - 2.12421582644e-02 2.19185274002e-02 2.26718438342e-02 2.34923498457e-02 2.43576039836e-02 2.52298202509e-02 - 2.60582031450e-02 2.67889182249e-02 2.73794467347e-02 2.78094015925e-02 2.80812943983e-02 2.82105864296e-02 - 2.82105864296e-02 2.80812943983e-02 2.78094015925e-02 2.73794467347e-02 2.67889182249e-02 2.60582031450e-02 - 2.52298202509e-02 2.43576039836e-02 2.34923498457e-02 2.26718438342e-02 2.19185274002e-02 2.12421582644e-02 - 1.94921954522e-02 1.93050944183e-02 1.91448778653e-02 1.90175139009e-02 1.89341271390e-02 1.89049688962e-02 - 1.89341271390e-02 1.90175139009e-02 1.91448778653e-02 1.93050944183e-02 1.94921954522e-02 1.97084075068e-02 - 1.99620901041e-02 2.02621880335e-02 2.06126999880e-02 2.10090352784e-02 2.14361295219e-02 2.18687619531e-02 - 2.22755921268e-02 2.26267522861e-02 2.29016184223e-02 2.30924993956e-02 2.32023283361e-02 2.32378434698e-02 - 2.32023283361e-02 2.30924993956e-02 2.29016184223e-02 2.26267522861e-02 2.22755921268e-02 2.18687619531e-02 - 2.14361295219e-02 2.10090352784e-02 2.06126999880e-02 2.02621880335e-02 1.99620901041e-02 1.97084075068e-02 - 1.87162119832e-02 1.88053010662e-02 1.88720574247e-02 1.89142861556e-02 1.89341271390e-02 1.89341271390e-02 - 1.89142861556e-02 1.88720574247e-02 1.88053010662e-02 1.87162119832e-02 1.86137801375e-02 1.85132658939e-02 - 1.84326960165e-02 1.83878553878e-02 1.83878553878e-02 1.84326960165e-02 1.85132658939e-02 1.86137801375e-02 - 1.87162119832e-02 1.88053010662e-02 1.88720574247e-02 1.89142861556e-02 1.89341271390e-02 1.89341271390e-02 - 1.89142861556e-02 1.88720574247e-02 1.88053010662e-02 1.87162119832e-02 1.86137801375e-02 1.85132658939e-02 - 1.84326960165e-02 1.83878553878e-02 1.83878553878e-02 1.84326960165e-02 1.85132658939e-02 1.86137801375e-02 - 1.83246021902e-02 1.86367379277e-02 1.88720574247e-02 1.90175139009e-02 1.90666010177e-02 1.90175139009e-02 - 1.88720574247e-02 1.86367379277e-02 1.83246021902e-02 1.79555609317e-02 1.75547637226e-02 1.71497889118e-02 - 1.67669692380e-02 1.64272283654e-02 1.61427916872e-02 1.59162612755e-02 1.57423428102e-02 1.56112881223e-02 - 1.55127511572e-02 1.54388806266e-02 1.53857855201e-02 1.53530693596e-02 1.53419303249e-02 1.53530693596e-02 - 1.53857855201e-02 1.54388806266e-02 1.55127511572e-02 1.56112881223e-02 1.57423428102e-02 1.59162612755e-02 - 1.61427916872e-02 1.64272283654e-02 1.67669692380e-02 1.71497889118e-02 1.75547637226e-02 1.79555609317e-02 - 1.83246021902e-02 1.88053010662e-02 1.91448778653e-02 1.93203741197e-02 1.93203741197e-02 1.91448778653e-02 - 1.88053010662e-02 1.83246021902e-02 1.77355963866e-02 1.70770073925e-02 1.63890080671e-02 1.57094271493e-02 - 1.50702461704e-02 1.44944499034e-02 1.39945083398e-02 1.35733603577e-02 1.32272933414e-02 1.29494247541e-02 - 1.27327884289e-02 1.25723726562e-02 1.24657333634e-02 1.24123312979e-02 1.24123312979e-02 1.24657333634e-02 - 1.25723726562e-02 1.27327884289e-02 1.29494247541e-02 1.32272933414e-02 1.35733603577e-02 1.39945083398e-02 - 1.44944499034e-02 1.50702461704e-02 1.57094271493e-02 1.63890080671e-02 1.70770073925e-02 1.77355963866e-02 - 1.87162119832e-02 1.93050944183e-02 1.96777557044e-02 1.98052910067e-02 1.96777557044e-02 1.93050944183e-02 - 1.87162119832e-02 1.79555609317e-02 1.70770073925e-02 1.61367490443e-02 1.51874137660e-02 1.42737851127e-02 - 1.34297677852e-02 1.26769712537e-02 1.20255038743e-02 1.14766013692e-02 1.10259974674e-02 1.06671499136e-02 - 1.03937663652e-02 1.02011860999e-02 1.00865795572e-02 1.00485204973e-02 1.00865795572e-02 1.02011860999e-02 - 1.03937663652e-02 1.06671499136e-02 1.10259974674e-02 1.14766013692e-02 1.20255038743e-02 1.26769712537e-02 - 1.34297677852e-02 1.42737851127e-02 1.51874137660e-02 1.61367490443e-02 1.70770073925e-02 1.79555609317e-02 - 1.94921954522e-02 2.01220876747e-02 2.04512222766e-02 2.04512222766e-02 2.01220876747e-02 1.94921954522e-02 - 1.86137801375e-02 1.75547637226e-02 1.63890080671e-02 1.51874137660e-02 1.40112393540e-02 1.29079014387e-02 - 1.19093466628e-02 1.10330000246e-02 1.02846446979e-02 9.66211927865e-03 9.15892896774e-03 8.76725594498e-03 - 8.47998103933e-03 8.29158854156e-03 8.19834740781e-03 8.19834740781e-03 8.29158854156e-03 8.47998103933e-03 - 8.76725594498e-03 9.15892896774e-03 9.66211927865e-03 1.02846446979e-02 1.10330000246e-02 1.19093466628e-02 - 1.29079014387e-02 1.40112393540e-02 1.51874137660e-02 1.63890080671e-02 1.75547637226e-02 1.86137801375e-02 - 2.06439962171e-02 2.12413612776e-02 2.14468462049e-02 2.12413612776e-02 2.06439962171e-02 1.97084075068e-02 - 1.85132658939e-02 1.71497889118e-02 1.57094271493e-02 1.42737851127e-02 1.29079014387e-02 1.16573532374e-02 - 1.05489279259e-02 9.59384043225e-03 8.79214216133e-03 8.13716815266e-03 7.61927184895e-03 7.22847713667e-03 - 6.95605972443e-03 6.79537428806e-03 6.74228118806e-03 6.79537428806e-03 6.95605972443e-03 7.22847713667e-03 - 7.61927184895e-03 8.13716815266e-03 8.79214216133e-03 9.59384043225e-03 1.05489279259e-02 1.16573532374e-02 - 1.29079014387e-02 1.42737851127e-02 1.57094271493e-02 1.71497889118e-02 1.85132658939e-02 1.97084075068e-02 - 2.21666114252e-02 2.26519365039e-02 2.26519365039e-02 2.21666114252e-02 2.12421582644e-02 1.99620901041e-02 - 1.84326960165e-02 1.67669692380e-02 1.50702461704e-02 1.34297677852e-02 1.19093466628e-02 1.05489279259e-02 - 9.36769905218e-03 8.36917339040e-03 7.54684340873e-03 6.88914005847e-03 6.38291972351e-03 6.01563766373e-03 - 5.77685140016e-03 5.65928321674e-03 5.65928321674e-03 5.77685140016e-03 6.01563766373e-03 6.38291972351e-03 - 6.88914005847e-03 7.54684340873e-03 8.36917339040e-03 9.36769905218e-03 1.05489279259e-02 1.19093466628e-02 - 1.34297677852e-02 1.50702461704e-02 1.67669692380e-02 1.84326960165e-02 1.99620901041e-02 2.12421582644e-02 - 2.40594329852e-02 2.43476957086e-02 2.40594329852e-02 2.32231030162e-02 2.19185274002e-02 2.02621880335e-02 - 1.83878553878e-02 1.64272283654e-02 1.44944499034e-02 1.26769712537e-02 1.10330000246e-02 9.59384043225e-03 - 8.36917339040e-03 7.35383003280e-03 6.53448601861e-03 5.89466652251e-03 5.41768978229e-03 5.08859106656e-03 - 4.89581524939e-03 4.83232712929e-03 4.89581524939e-03 5.08859106656e-03 5.41768978229e-03 5.89466652251e-03 - 6.53448601861e-03 7.35383003280e-03 8.36917339040e-03 9.59384043225e-03 1.10330000246e-02 1.26769712537e-02 - 1.44944499034e-02 1.64272283654e-02 1.83878553878e-02 2.02621880335e-02 2.19185274002e-02 2.32231030162e-02 - 2.63252408289e-02 2.63252408289e-02 2.56635113913e-02 2.44059448105e-02 2.26718438342e-02 2.06126999880e-02 - 1.83878553878e-02 1.61427916872e-02 1.39945083398e-02 1.20255038743e-02 1.02846446979e-02 8.79214216133e-03 - 7.54684340873e-03 6.53448601861e-03 5.73495116497e-03 5.12697112440e-03 4.69069423954e-03 4.40955813989e-03 - 4.27192322596e-03 4.27192322596e-03 4.40955813989e-03 4.69069423954e-03 5.12697112440e-03 5.73495116497e-03 - 6.53448601861e-03 7.54684340873e-03 8.79214216133e-03 1.02846446979e-02 1.20255038743e-02 1.39945083398e-02 - 1.61427916872e-02 1.83878553878e-02 2.06126999880e-02 2.26718438342e-02 2.44059448105e-02 2.56635113913e-02 - 2.89647599965e-02 2.85763383726e-02 2.74512061786e-02 2.57019293917e-02 2.34923498457e-02 2.10090352784e-02 - 1.84326960165e-02 1.59162612755e-02 1.35733603577e-02 1.14766013692e-02 9.66211927865e-03 8.13716815266e-03 - 6.88914005847e-03 5.89466652251e-03 5.12697112440e-03 4.56041706509e-03 4.17292027232e-03 3.94752033538e-03 - 3.87358926493e-03 3.94752033538e-03 4.17292027232e-03 4.56041706509e-03 5.12697112440e-03 5.89466652251e-03 - 6.88914005847e-03 8.13716815266e-03 9.66211927865e-03 1.14766013692e-02 1.35733603577e-02 1.59162612755e-02 - 1.84326960165e-02 2.10090352784e-02 2.34923498457e-02 2.57019293917e-02 2.74512061786e-02 2.85763383726e-02 - 3.19590319446e-02 3.10717223250e-02 2.93901320501e-02 2.70818268649e-02 2.43576039836e-02 2.14361295219e-02 - 1.85132658939e-02 1.57423428102e-02 1.32272933414e-02 1.10259974674e-02 9.15892896774e-03 7.61927184895e-03 - 6.38291972351e-03 5.41768978229e-03 4.69069423954e-03 4.17292027232e-03 3.84131375804e-03 3.67971968314e-03 - 3.67971968314e-03 3.84131375804e-03 4.17292027232e-03 4.69069423954e-03 5.41768978229e-03 6.38291972351e-03 - 7.61927184895e-03 9.15892896774e-03 1.10259974674e-02 1.32272933414e-02 1.57423428102e-02 1.85132658939e-02 - 2.14361295219e-02 2.43576039836e-02 2.70818268649e-02 2.93901320501e-02 3.10717223250e-02 3.19590319446e-02 - 3.52402742752e-02 3.37399765679e-02 3.14154606035e-02 2.84935612207e-02 2.52298202509e-02 2.18687619531e-02 - 1.86137801375e-02 1.56112881223e-02 1.29494247541e-02 1.06671499136e-02 8.76725594498e-03 7.22847713667e-03 - 6.01563766373e-03 5.08859106656e-03 4.40955813989e-03 3.94752033538e-03 3.67971968314e-03 3.59206217435e-03 - 3.67971968314e-03 3.94752033538e-03 4.40955813989e-03 5.08859106656e-03 6.01563766373e-03 7.22847713667e-03 - 8.76725594498e-03 1.06671499136e-02 1.29494247541e-02 1.56112881223e-02 1.86137801375e-02 2.18687619531e-02 - 2.52298202509e-02 2.84935612207e-02 3.14154606035e-02 3.37399765679e-02 3.52402742752e-02 3.57591480990e-02 - 3.86662855632e-02 3.64535808156e-02 3.34242157073e-02 2.98615217076e-02 2.60582031450e-02 2.22755921268e-02 - 1.87162119832e-02 1.55127511572e-02 1.27327884289e-02 1.03937663652e-02 8.47998103933e-03 6.95605972443e-03 - 5.77685140016e-03 4.89581524939e-03 4.27192322596e-03 3.87358926493e-03 3.67971968314e-03 3.67971968314e-03 - 3.87358926493e-03 4.27192322596e-03 4.89581524939e-03 5.77685140016e-03 6.95605972443e-03 8.47998103933e-03 - 1.03937663652e-02 1.27327884289e-02 1.55127511572e-02 1.87162119832e-02 2.22755921268e-02 2.60582031450e-02 - 2.98615217076e-02 3.34242157073e-02 3.64535808156e-02 3.86662855632e-02 3.98358227133e-02 3.98358227133e-02 - 4.20165784801e-02 3.90350130516e-02 3.52857897121e-02 3.10978190541e-02 2.67889182249e-02 2.26267522861e-02 - 1.88053010662e-02 1.54388806266e-02 1.25723726562e-02 1.02011860999e-02 8.29158854156e-03 6.79537428806e-03 - 5.65928321674e-03 4.83232712929e-03 4.27192322596e-03 3.94752033538e-03 3.84131375804e-03 3.94752033538e-03 - 4.27192322596e-03 4.83232712929e-03 5.65928321674e-03 6.79537428806e-03 8.29158854156e-03 1.02011860999e-02 - 1.25723726562e-02 1.54388806266e-02 1.88053010662e-02 2.26267522861e-02 2.67889182249e-02 3.10978190541e-02 - 3.52857897121e-02 3.90350130516e-02 4.20165784801e-02 4.39402098517e-02 4.46053414397e-02 4.39402098517e-02 - 4.50208900473e-02 4.12888114430e-02 3.68707660171e-02 3.21243272248e-02 2.73794467347e-02 2.29016184223e-02 - 1.88720574247e-02 1.53857855201e-02 1.24657333634e-02 1.00865795572e-02 8.19834740781e-03 6.74228118806e-03 - 5.65928321674e-03 4.89581524939e-03 4.40955813989e-03 4.17292027232e-03 4.17292027232e-03 4.40955813989e-03 - 4.89581524939e-03 5.65928321674e-03 6.74228118806e-03 8.19834740781e-03 1.00865795572e-02 1.24657333634e-02 - 1.53857855201e-02 1.88720574247e-02 2.29016184223e-02 2.73794467347e-02 3.21243272248e-02 3.68707660171e-02 - 4.12888114430e-02 4.50208900473e-02 4.77311231410e-02 4.91578982971e-02 4.91578982971e-02 4.77311231410e-02 - 4.74231711778e-02 4.30547772101e-02 3.80886538087e-02 3.28952522339e-02 2.78094015925e-02 2.30924993956e-02 - 1.89142861556e-02 1.53530693596e-02 1.24123312979e-02 1.00485204973e-02 8.19834740781e-03 6.79537428806e-03 - 5.77685140016e-03 5.08859106656e-03 4.69069423954e-03 4.56041706509e-03 4.69069423954e-03 5.08859106656e-03 - 5.77685140016e-03 6.79537428806e-03 8.19834740781e-03 1.00485204973e-02 1.24123312979e-02 1.53530693596e-02 - 1.89142861556e-02 2.30924993956e-02 2.78094015925e-02 3.28952522339e-02 3.80886538087e-02 4.30547772101e-02 - 4.74231711778e-02 5.08390344517e-02 5.30133769166e-02 5.37595739225e-02 5.30133769166e-02 5.08390344517e-02 - 4.90700187394e-02 4.42634768270e-02 3.89160663350e-02 3.34071767353e-02 2.80812943983e-02 2.32023283361e-02 - 1.89341271390e-02 1.53419303249e-02 1.24123312979e-02 1.00865795572e-02 8.29158854156e-03 6.95605972443e-03 - 6.01563766373e-03 5.41768978229e-03 5.12697112440e-03 5.12697112440e-03 5.41768978229e-03 6.01563766373e-03 - 6.95605972443e-03 8.29158854156e-03 1.00865795572e-02 1.24123312979e-02 1.53419303249e-02 1.89341271390e-02 - 2.32023283361e-02 2.80812943983e-02 3.34071767353e-02 3.89160663350e-02 4.42634768270e-02 4.90700187394e-02 - 5.29846351657e-02 5.57363453523e-02 5.71527035674e-02 5.71527035674e-02 5.57363453523e-02 5.29846351657e-02 - 4.99825941802e-02 4.49623774036e-02 3.93968315223e-02 3.36893635306e-02 2.82105864296e-02 2.32378434698e-02 - 1.89341271390e-02 1.53530693596e-02 1.24657333634e-02 1.02011860999e-02 8.47998103933e-03 7.22847713667e-03 - 6.38291972351e-03 5.89466652251e-03 5.73495116497e-03 5.89466652251e-03 6.38291972351e-03 7.22847713667e-03 - 8.47998103933e-03 1.02011860999e-02 1.24657333634e-02 1.53530693596e-02 1.89341271390e-02 2.32378434698e-02 - 2.82105864296e-02 3.36893635306e-02 3.93968315223e-02 4.49623774036e-02 4.99825941802e-02 5.41129564364e-02 - 5.71366804742e-02 5.89627863020e-02 5.95715936141e-02 5.89627863020e-02 5.71366804742e-02 5.41129564364e-02 - 5.03535465114e-02 4.52857661696e-02 3.96081166256e-02 3.37780927799e-02 2.82105864296e-02 2.32023283361e-02 - 1.89142861556e-02 1.53857855201e-02 1.25723726562e-02 1.03937663652e-02 8.76725594498e-03 7.61927184895e-03 - 6.88914005847e-03 6.53448601861e-03 6.53448601861e-03 6.88914005847e-03 7.61927184895e-03 8.76725594498e-03 - 1.03937663652e-02 1.25723726562e-02 1.53857855201e-02 1.89142861556e-02 2.32023283361e-02 2.82105864296e-02 - 3.37780927799e-02 3.96081166256e-02 4.52857661696e-02 5.03535465114e-02 5.44475263977e-02 5.74105494947e-02 - 5.92810318582e-02 6.01752681104e-02 6.01752681104e-02 5.92810318582e-02 5.74105494947e-02 5.44475263977e-02 - 5.04463447592e-02 4.53738413591e-02 3.96081166256e-02 3.36893635306e-02 2.80812943983e-02 2.30924993956e-02 - 1.88720574247e-02 1.54388806266e-02 1.27327884289e-02 1.06671499136e-02 9.15892896774e-03 8.13716815266e-03 - 7.54684340873e-03 7.35383003280e-03 7.54684340873e-03 8.13716815266e-03 9.15892896774e-03 1.06671499136e-02 - 1.27327884289e-02 1.54388806266e-02 1.88720574247e-02 2.30924993956e-02 2.80812943983e-02 3.36893635306e-02 - 3.96081166256e-02 4.53738413591e-02 5.04463447592e-02 5.43925934286e-02 5.70772559013e-02 5.86758842735e-02 - 5.94868177545e-02 5.97323039443e-02 5.94868177545e-02 5.86758842735e-02 5.70772559013e-02 5.43925934286e-02 - 5.04463447592e-02 4.52857661696e-02 3.93968315223e-02 3.34071767353e-02 2.78094015925e-02 2.29016184223e-02 - 1.88053010662e-02 1.55127511572e-02 1.29494247541e-02 1.10259974674e-02 9.66211927865e-03 8.79214216133e-03 - 8.36917339040e-03 8.36917339040e-03 8.79214216133e-03 9.66211927865e-03 1.10259974674e-02 1.29494247541e-02 - 1.55127511572e-02 1.88053010662e-02 2.29016184223e-02 2.78094015925e-02 3.34071767353e-02 3.93968315223e-02 - 4.52857661696e-02 5.04463447592e-02 5.43239294918e-02 5.67236888968e-02 5.79103146750e-02 5.83777841365e-02 - 5.85232784436e-02 5.85232784436e-02 5.83777841365e-02 5.79103146750e-02 5.67236888968e-02 5.43239294918e-02 - 5.03535465114e-02 4.49623774036e-02 3.89160663350e-02 3.28952522339e-02 2.73794467347e-02 2.26267522861e-02 - 1.87162119832e-02 1.56112881223e-02 1.32272933414e-02 1.14766013692e-02 1.02846446979e-02 9.59384043225e-03 - 9.36769905218e-03 9.59384043225e-03 1.02846446979e-02 1.14766013692e-02 1.32272933414e-02 1.56112881223e-02 - 1.87162119832e-02 2.26267522861e-02 2.73794467347e-02 3.28952522339e-02 3.89160663350e-02 4.49623774036e-02 - 5.03535465114e-02 5.43925934286e-02 5.67236888968e-02 5.75824043038e-02 5.76200322747e-02 5.74463352203e-02 - 5.73653289979e-02 5.74463352203e-02 5.76200322747e-02 5.75824043038e-02 5.67236888968e-02 5.43925934286e-02 - 4.99825941802e-02 4.42634768270e-02 3.80886538087e-02 3.21243272248e-02 2.67889182249e-02 2.22755921268e-02 - 1.86137801375e-02 1.57423428102e-02 1.35733603577e-02 1.20255038743e-02 1.10330000246e-02 1.05489279259e-02 - 1.05489279259e-02 1.10330000246e-02 1.20255038743e-02 1.35733603577e-02 1.57423428102e-02 1.86137801375e-02 - 2.22755921268e-02 2.67889182249e-02 3.21243272248e-02 3.80886538087e-02 4.42634768270e-02 4.99825941802e-02 - 5.44475263977e-02 5.70772559013e-02 5.79103146750e-02 5.76200322747e-02 5.70355201353e-02 5.66663226477e-02 - 5.66663226477e-02 5.70355201353e-02 5.76200322747e-02 5.79103146750e-02 5.70772559013e-02 5.44475263977e-02 - 4.90700187394e-02 4.30547772101e-02 3.68707660171e-02 3.10978190541e-02 2.60582031450e-02 2.18687619531e-02 - 1.85132658939e-02 1.59162612755e-02 1.39945083398e-02 1.26769712537e-02 1.19093466628e-02 1.16573532374e-02 - 1.19093466628e-02 1.26769712537e-02 1.39945083398e-02 1.59162612755e-02 1.85132658939e-02 2.18687619531e-02 - 2.60582031450e-02 3.10978190541e-02 3.68707660171e-02 4.30547772101e-02 4.90700187394e-02 5.41129564364e-02 - 5.74105494947e-02 5.86758842735e-02 5.83777841365e-02 5.74463352203e-02 5.66663226477e-02 5.63846435627e-02 - 5.66663226477e-02 5.74463352203e-02 5.83777841365e-02 5.86758842735e-02 5.74105494947e-02 5.41129564364e-02 - 4.74231711778e-02 4.12888114430e-02 3.52857897121e-02 2.98615217076e-02 2.52298202509e-02 2.14361295219e-02 - 1.84326960165e-02 1.61427916872e-02 1.44944499034e-02 1.34297677852e-02 1.29079014387e-02 1.29079014387e-02 - 1.34297677852e-02 1.44944499034e-02 1.61427916872e-02 1.84326960165e-02 2.14361295219e-02 2.52298202509e-02 - 2.98615217076e-02 3.52857897121e-02 4.12888114430e-02 4.74231711778e-02 5.29846351657e-02 5.71366804742e-02 - 5.92810318582e-02 5.94868177545e-02 5.85232784436e-02 5.73653289979e-02 5.66663226477e-02 5.66663226477e-02 - 5.73653289979e-02 5.85232784436e-02 5.94868177545e-02 5.92810318582e-02 5.71366804742e-02 5.29846351657e-02 - 4.50208900473e-02 3.90350130516e-02 3.34242157073e-02 2.84935612207e-02 2.43576039836e-02 2.10090352784e-02 - 1.83878553878e-02 1.64272283654e-02 1.50702461704e-02 1.42737851127e-02 1.40112393540e-02 1.42737851127e-02 - 1.50702461704e-02 1.64272283654e-02 1.83878553878e-02 2.10090352784e-02 2.43576039836e-02 2.84935612207e-02 - 3.34242157073e-02 3.90350130516e-02 4.50208900473e-02 5.08390344517e-02 5.57363453523e-02 5.89627863020e-02 - 6.01752681104e-02 5.97323039443e-02 5.85232784436e-02 5.74463352203e-02 5.70355201353e-02 5.74463352203e-02 - 5.85232784436e-02 5.97323039443e-02 6.01752681104e-02 5.89627863020e-02 5.57363453523e-02 5.08390344517e-02 - 4.20165784801e-02 3.64535808156e-02 3.14154606035e-02 2.70818268649e-02 2.34923498457e-02 2.06126999880e-02 - 1.83878553878e-02 1.67669692380e-02 1.57094271493e-02 1.51874137660e-02 1.51874137660e-02 1.57094271493e-02 - 1.67669692380e-02 1.83878553878e-02 2.06126999880e-02 2.34923498457e-02 2.70818268649e-02 3.14154606035e-02 - 3.64535808156e-02 4.20165784801e-02 4.77311231410e-02 5.30133769166e-02 5.71527035674e-02 5.95715936141e-02 - 6.01752681104e-02 5.94868177545e-02 5.83777841365e-02 5.76200322747e-02 5.76200322747e-02 5.83777841365e-02 - 5.94868177545e-02 6.01752681104e-02 5.95715936141e-02 5.71527035674e-02 5.30133769166e-02 4.77311231410e-02 - 3.86662855632e-02 3.37399765679e-02 2.93901320501e-02 2.57019293917e-02 2.26718438342e-02 2.02621880335e-02 - 1.84326960165e-02 1.71497889118e-02 1.63890080671e-02 1.61367490443e-02 1.63890080671e-02 1.71497889118e-02 - 1.84326960165e-02 2.02621880335e-02 2.26718438342e-02 2.57019293917e-02 2.93901320501e-02 3.37399765679e-02 - 3.86662855632e-02 4.39402098517e-02 4.91578982971e-02 5.37595739225e-02 5.71527035674e-02 5.89627863020e-02 - 5.92810318582e-02 5.86758842735e-02 5.79103146750e-02 5.75824043038e-02 5.79103146750e-02 5.86758842735e-02 - 5.92810318582e-02 5.89627863020e-02 5.71527035674e-02 5.37595739225e-02 4.91578982971e-02 4.39402098517e-02 - 3.52402742752e-02 3.10717223250e-02 2.74512061786e-02 2.44059448105e-02 2.19185274002e-02 1.99620901041e-02 - 1.85132658939e-02 1.75547637226e-02 1.70770073925e-02 1.70770073925e-02 1.75547637226e-02 1.85132658939e-02 - 1.99620901041e-02 2.19185274002e-02 2.44059448105e-02 2.74512061786e-02 3.10717223250e-02 3.52402742752e-02 - 3.98358227133e-02 4.46053414397e-02 4.91578982971e-02 5.30133769166e-02 5.57363453523e-02 5.71366804742e-02 - 5.74105494947e-02 5.70772559013e-02 5.67236888968e-02 5.67236888968e-02 5.70772559013e-02 5.74105494947e-02 - 5.71366804742e-02 5.57363453523e-02 5.30133769166e-02 4.91578982971e-02 4.46053414397e-02 3.98358227133e-02 - 3.19590319446e-02 2.85763383726e-02 2.56635113913e-02 2.32231030162e-02 2.12421582644e-02 1.97084075068e-02 - 1.86137801375e-02 1.79555609317e-02 1.77355963866e-02 1.79555609317e-02 1.86137801375e-02 1.97084075068e-02 - 2.12421582644e-02 2.32231030162e-02 2.56635113913e-02 2.85763383726e-02 3.19590319446e-02 3.57591480990e-02 - 3.98358227133e-02 4.39402098517e-02 4.77311231410e-02 5.08390344517e-02 5.29846351657e-02 5.41129564364e-02 - 5.44475263977e-02 5.43925934286e-02 5.43239294918e-02 5.43925934286e-02 5.44475263977e-02 5.41129564364e-02 - 5.29846351657e-02 5.08390344517e-02 4.77311231410e-02 4.39402098517e-02 3.98358227133e-02 3.57591480990e-02 - 3.18414068716e-02 2.94586793037e-02 2.73972646659e-02 2.56657154446e-02 2.42781130820e-02 2.32562353108e-02 - 2.26267522861e-02 2.24136125305e-02 2.26267522861e-02 2.32562353108e-02 2.42781130820e-02 2.56657154446e-02 - 2.73972646659e-02 2.94586793037e-02 3.18414068716e-02 3.45282284639e-02 3.74634706166e-02 4.05199675384e-02 - 4.34838779539e-02 4.60731359718e-02 4.79989400749e-02 4.90700187394e-02 4.93048229800e-02 4.89738024005e-02 - 4.85080722970e-02 4.83002627794e-02 4.85080722970e-02 4.89738024005e-02 4.93048229800e-02 4.90700187394e-02 - 4.79989400749e-02 4.60731359718e-02 4.34838779539e-02 4.05199675384e-02 3.74634706166e-02 3.45282284639e-02 - 2.94586793037e-02 2.77227537368e-02 2.62153172241e-02 2.49511167951e-02 2.39549635512e-02 2.32603028496e-02 - 2.29016184223e-02 2.29016184223e-02 2.32603028496e-02 2.39549635512e-02 2.49511167951e-02 2.62153172241e-02 - 2.77227537368e-02 2.94586793037e-02 3.14127386696e-02 3.35632692529e-02 3.58537824974e-02 3.81729635435e-02 - 4.03527020822e-02 4.21941579647e-02 4.35234290368e-02 4.42634768270e-02 4.44868574481e-02 4.44045560444e-02 - 4.42752514752e-02 4.42752514752e-02 4.44045560444e-02 4.44868574481e-02 4.42634768270e-02 4.35234290368e-02 - 4.21941579647e-02 4.03527020822e-02 3.81729635435e-02 3.58537824974e-02 3.35632692529e-02 3.14127386696e-02 - 2.73972646659e-02 2.62153172241e-02 2.51823253991e-02 2.43184216158e-02 2.36566460915e-02 2.32368358951e-02 - 2.30924993956e-02 2.32368358951e-02 2.36566460915e-02 2.43184216158e-02 2.51823253991e-02 2.62153172241e-02 - 2.73972646659e-02 2.87187367840e-02 3.01717861136e-02 3.17358390207e-02 3.33624200108e-02 3.49654910486e-02 - 3.64263171972e-02 3.76190713504e-02 3.84534160516e-02 3.89160663350e-02 3.90848689472e-02 3.90976289629e-02 - 3.90842281235e-02 3.90976289629e-02 3.90848689472e-02 3.89160663350e-02 3.84534160516e-02 3.76190713504e-02 - 3.64263171972e-02 3.49654910486e-02 3.33624200108e-02 3.17358390207e-02 3.01717861136e-02 2.87187367840e-02 - 2.56657154446e-02 2.49511167951e-02 2.43184216158e-02 2.37914166767e-02 2.34067395586e-02 2.32023283361e-02 - 2.32023283361e-02 2.34067395586e-02 2.37914166767e-02 2.43184216158e-02 2.49511167951e-02 2.56657154446e-02 - 2.64534808200e-02 2.73140021666e-02 2.82446089484e-02 2.92302840650e-02 3.02357338101e-02 3.12022017908e-02 - 3.20546920774e-02 3.27229087590e-02 3.31691643222e-02 3.34071767353e-02 3.34971688966e-02 3.35158471123e-02 - 3.35158471123e-02 3.34971688966e-02 3.34071767353e-02 3.31691643222e-02 3.27229087590e-02 3.20546920774e-02 - 3.12022017908e-02 3.02357338101e-02 2.92302840650e-02 2.82446089484e-02 2.73140021666e-02 2.64534808200e-02 - 2.42781130820e-02 2.39549635512e-02 2.36566460915e-02 2.34067395586e-02 2.32378434698e-02 2.31779027969e-02 - 2.32378434698e-02 2.34067395586e-02 2.36566460915e-02 2.39549635512e-02 2.42781130820e-02 2.46187421852e-02 - 2.49827563157e-02 2.53797852965e-02 2.58139075627e-02 2.62778950395e-02 2.67502344749e-02 2.71955666447e-02 - 2.75721078901e-02 2.78466298707e-02 2.80098127199e-02 2.80812943983e-02 2.80994006567e-02 2.81005086407e-02 - 2.80994006567e-02 2.80812943983e-02 2.80098127199e-02 2.78466298707e-02 2.75721078901e-02 2.71955666447e-02 - 2.67502344749e-02 2.62778950395e-02 2.58139075627e-02 2.53797852965e-02 2.49827563157e-02 2.46187421852e-02 - 2.32562353108e-02 2.32603028496e-02 2.32368358951e-02 2.32023283361e-02 2.31779027969e-02 2.31779027969e-02 - 2.32023283361e-02 2.32368358951e-02 2.32603028496e-02 2.32562353108e-02 2.32217587400e-02 2.31688478126e-02 - 2.31175818882e-02 2.30866420056e-02 2.30866420056e-02 2.31175818882e-02 2.31688478126e-02 2.32217587400e-02 - 2.32562353108e-02 2.32603028496e-02 2.32368358951e-02 2.32023283361e-02 2.31779027969e-02 2.31779027969e-02 - 2.32023283361e-02 2.32368358951e-02 2.32603028496e-02 2.32562353108e-02 2.32217587400e-02 2.31688478126e-02 - 2.31175818882e-02 2.30866420056e-02 2.30866420056e-02 2.31175818882e-02 2.31688478126e-02 2.32217587400e-02 - 2.26267522861e-02 2.29016184223e-02 2.30924993956e-02 2.32023283361e-02 2.32378434698e-02 2.32023283361e-02 - 2.30924993956e-02 2.29016184223e-02 2.26267522861e-02 2.22755921268e-02 2.18687619531e-02 2.14361295219e-02 - 2.10090352784e-02 2.06126999880e-02 2.02621880335e-02 1.99620901041e-02 1.97084075068e-02 1.94921954522e-02 - 1.93050944183e-02 1.91448778653e-02 1.90175139009e-02 1.89341271390e-02 1.89049688962e-02 1.89341271390e-02 - 1.90175139009e-02 1.91448778653e-02 1.93050944183e-02 1.94921954522e-02 1.97084075068e-02 1.99620901041e-02 - 2.02621880335e-02 2.06126999880e-02 2.10090352784e-02 2.14361295219e-02 2.18687619531e-02 2.22755921268e-02 - 2.24136125305e-02 2.29016184223e-02 2.32368358951e-02 2.34067395586e-02 2.34067395586e-02 2.32368358951e-02 - 2.29016184223e-02 2.24136125305e-02 2.17964249596e-02 2.10847229658e-02 2.03206914317e-02 1.95479913088e-02 - 1.88049742175e-02 1.81196807915e-02 1.75083321070e-02 1.69767793036e-02 1.65234811342e-02 1.61434902729e-02 - 1.58329883187e-02 1.55924938344e-02 1.54267827082e-02 1.53419303249e-02 1.53419303249e-02 1.54267827082e-02 - 1.55924938344e-02 1.58329883187e-02 1.61434902729e-02 1.65234811342e-02 1.69767793036e-02 1.75083321070e-02 - 1.81196807915e-02 1.88049742175e-02 1.95479913088e-02 2.03206914317e-02 2.10847229658e-02 2.17964249596e-02 - 2.26267522861e-02 2.32603028496e-02 2.36566460915e-02 2.37914166767e-02 2.36566460915e-02 2.32603028496e-02 - 2.26267522861e-02 2.17964249596e-02 2.08223402545e-02 1.97639178277e-02 1.86800926235e-02 1.76229803621e-02 - 1.66330383744e-02 1.57370100687e-02 1.49488960464e-02 1.42727054437e-02 1.37059602390e-02 1.32437842255e-02 - 1.28827341282e-02 1.26225341258e-02 1.24650738064e-02 1.24123312979e-02 1.24650738064e-02 1.26225341258e-02 - 1.28827341282e-02 1.32437842255e-02 1.37059602390e-02 1.42727054437e-02 1.49488960464e-02 1.57370100687e-02 - 1.66330383744e-02 1.76229803621e-02 1.86800926235e-02 1.97639178277e-02 2.08223402545e-02 2.17964249596e-02 - 2.32562353108e-02 2.39549635512e-02 2.43184216158e-02 2.43184216158e-02 2.39549635512e-02 2.32562353108e-02 - 2.22755921268e-02 2.10847229658e-02 1.97639178277e-02 1.83921353899e-02 1.70389543521e-02 1.57591868798e-02 - 1.45906790875e-02 1.35553259639e-02 1.26620800682e-02 1.19105819676e-02 1.12951380995e-02 1.08088949298e-02 - 1.04468583553e-02 1.02064774226e-02 1.00865795572e-02 1.00865795572e-02 1.02064774226e-02 1.04468583553e-02 - 1.08088949298e-02 1.12951380995e-02 1.19105819676e-02 1.26620800682e-02 1.35553259639e-02 1.45906790875e-02 - 1.57591868798e-02 1.70389543521e-02 1.83921353899e-02 1.97639178277e-02 2.10847229658e-02 2.22755921268e-02 - 2.42781130820e-02 2.49511167951e-02 2.51823253991e-02 2.49511167951e-02 2.42781130820e-02 2.32217587400e-02 - 2.18687619531e-02 2.03206914317e-02 1.86800926235e-02 1.70389543521e-02 1.54709928045e-02 1.40283418589e-02 - 1.27424344623e-02 1.16276251073e-02 1.06856809758e-02 9.91029781221e-03 9.29162040305e-03 8.82009872524e-03 - 8.48843476768e-03 8.29158854156e-03 8.22635918544e-03 8.29158854156e-03 8.48843476768e-03 8.82009872524e-03 - 9.29162040305e-03 9.91029781221e-03 1.06856809758e-02 1.16276251073e-02 1.27424344623e-02 1.40283418589e-02 - 1.54709928045e-02 1.70389543521e-02 1.86800926235e-02 2.03206914317e-02 2.18687619531e-02 2.32217587400e-02 - 2.56657154446e-02 2.62153172241e-02 2.62153172241e-02 2.56657154446e-02 2.46187421852e-02 2.31688478126e-02 - 2.14361295219e-02 1.95479913088e-02 1.76229803621e-02 1.57591868798e-02 1.40283418589e-02 1.24755048074e-02 - 1.11228159589e-02 9.97511028176e-03 9.02578945364e-03 8.26229038338e-03 7.67065297497e-03 7.23847314555e-03 - 6.95605972443e-03 6.81664387654e-03 6.81664387654e-03 6.95605972443e-03 7.23847314555e-03 7.67065297497e-03 - 8.26229038338e-03 9.02578945364e-03 9.97511028176e-03 1.11228159589e-02 1.24755048074e-02 1.40283418589e-02 - 1.57591868798e-02 1.76229803621e-02 1.95479913088e-02 2.14361295219e-02 2.31688478126e-02 2.46187421852e-02 - 2.73972646659e-02 2.77227537368e-02 2.73972646659e-02 2.64534808200e-02 2.49827563157e-02 2.31175818882e-02 - 2.10090352784e-02 1.88049742175e-02 1.66330383744e-02 1.45906790875e-02 1.27424344623e-02 1.11228159589e-02 - 9.74245511371e-03 8.59555582378e-03 7.66717366082e-03 6.93908976898e-03 6.39361872594e-03 6.01563766373e-03 - 5.79365065764e-03 5.72047031573e-03 5.79365065764e-03 6.01563766373e-03 6.39361872594e-03 6.93908976898e-03 - 7.66717366082e-03 8.59555582378e-03 9.74245511371e-03 1.11228159589e-02 1.27424344623e-02 1.45906790875e-02 - 1.66330383744e-02 1.88049742175e-02 2.10090352784e-02 2.31175818882e-02 2.49827563157e-02 2.64534808200e-02 - 2.94586793037e-02 2.94586793037e-02 2.87187367840e-02 2.73140021666e-02 2.53797852965e-02 2.30866420056e-02 - 2.06126999880e-02 1.81196807915e-02 1.57370100687e-02 1.35553259639e-02 1.16276251073e-02 9.97511028176e-03 - 8.59555582378e-03 7.47255069610e-03 6.58362639444e-03 5.90565973456e-03 5.41768978229e-03 5.10253249618e-03 - 4.94806264494e-03 4.94806264494e-03 5.10253249618e-03 5.41768978229e-03 5.90565973456e-03 6.58362639444e-03 - 7.47255069610e-03 8.59555582378e-03 9.97511028176e-03 1.16276251073e-02 1.35553259639e-02 1.57370100687e-02 - 1.81196807915e-02 2.06126999880e-02 2.30866420056e-02 2.53797852965e-02 2.73140021666e-02 2.87187367840e-02 - 3.18414068716e-02 3.14127386696e-02 3.01717861136e-02 2.82446089484e-02 2.58139075627e-02 2.30866420056e-02 - 2.02621880335e-02 1.75083321070e-02 1.49488960464e-02 1.26620800682e-02 1.06856809758e-02 9.02578945364e-03 - 7.66717366082e-03 6.58362639444e-03 5.74602373426e-03 5.12697112440e-03 4.70304044562e-03 4.45623663297e-03 - 4.37525079151e-03 4.45623663297e-03 4.70304044562e-03 5.12697112440e-03 5.74602373426e-03 6.58362639444e-03 - 7.66717366082e-03 9.02578945364e-03 1.06856809758e-02 1.26620800682e-02 1.49488960464e-02 1.75083321070e-02 - 2.02621880335e-02 2.30866420056e-02 2.58139075627e-02 2.82446089484e-02 3.01717861136e-02 3.14127386696e-02 - 3.45282284639e-02 3.35632692529e-02 3.17358390207e-02 2.92302840650e-02 2.62778950395e-02 2.31175818882e-02 - 1.99620901041e-02 1.69767793036e-02 1.42727054437e-02 1.19105819676e-02 9.91029781221e-03 8.26229038338e-03 - 6.93908976898e-03 5.90565973456e-03 5.12697112440e-03 4.57225197605e-03 4.21692866215e-03 4.04374575730e-03 - 4.04374575730e-03 4.21692866215e-03 4.57225197605e-03 5.12697112440e-03 5.90565973456e-03 6.93908976898e-03 - 8.26229038338e-03 9.91029781221e-03 1.19105819676e-02 1.42727054437e-02 1.69767793036e-02 1.99620901041e-02 - 2.31175818882e-02 2.62778950395e-02 2.92302840650e-02 3.17358390207e-02 3.35632692529e-02 3.45282284639e-02 - 3.74634706166e-02 3.58537824974e-02 3.33624200108e-02 3.02357338101e-02 2.67502344749e-02 2.31688478126e-02 - 1.97084075068e-02 1.65234811342e-02 1.37059602390e-02 1.12951380995e-02 9.29162040305e-03 7.67065297497e-03 - 6.39361872594e-03 5.41768978229e-03 4.70304044562e-03 4.21692866215e-03 3.93522801758e-03 3.84302280796e-03 - 3.93522801758e-03 4.21692866215e-03 4.70304044562e-03 5.41768978229e-03 6.39361872594e-03 7.67065297497e-03 - 9.29162040305e-03 1.12951380995e-02 1.37059602390e-02 1.65234811342e-02 1.97084075068e-02 2.31688478126e-02 - 2.67502344749e-02 3.02357338101e-02 3.33624200108e-02 3.58537824974e-02 3.74634706166e-02 3.80204685260e-02 - 4.05199675384e-02 3.81729635435e-02 3.49654910486e-02 3.12022017908e-02 2.71955666447e-02 2.32217587400e-02 - 1.94921954522e-02 1.61434902729e-02 1.32437842255e-02 1.08088949298e-02 8.82009872524e-03 7.23847314555e-03 - 6.01563766373e-03 5.10253249618e-03 4.45623663297e-03 4.04374575730e-03 3.84302280796e-03 3.84302280796e-03 - 4.04374575730e-03 4.45623663297e-03 5.10253249618e-03 6.01563766373e-03 7.23847314555e-03 8.82009872524e-03 - 1.08088949298e-02 1.32437842255e-02 1.61434902729e-02 1.94921954522e-02 2.32217587400e-02 2.71955666447e-02 - 3.12022017908e-02 3.49654910486e-02 3.81729635435e-02 4.05199675384e-02 4.17618689283e-02 4.17618689283e-02 - 4.34838779539e-02 4.03527020822e-02 3.64263171972e-02 3.20546920774e-02 2.75721078901e-02 2.32562353108e-02 - 1.93050944183e-02 1.58329883187e-02 1.28827341282e-02 1.04468583553e-02 8.48843476768e-03 6.95605972443e-03 - 5.79365065764e-03 4.94806264494e-03 4.37525079151e-03 4.04374575730e-03 3.93522801758e-03 4.04374575730e-03 - 4.37525079151e-03 4.94806264494e-03 5.79365065764e-03 6.95605972443e-03 8.48843476768e-03 1.04468583553e-02 - 1.28827341282e-02 1.58329883187e-02 1.93050944183e-02 2.32562353108e-02 2.75721078901e-02 3.20546920774e-02 - 3.64263171972e-02 4.03527020822e-02 4.34838779539e-02 4.55081727847e-02 4.62088704848e-02 4.55081727847e-02 - 4.60731359718e-02 4.21941579647e-02 3.76190713504e-02 3.27229087590e-02 2.78466298707e-02 2.32603028496e-02 - 1.91448778653e-02 1.55924938344e-02 1.26225341258e-02 1.02064774226e-02 8.29158854156e-03 6.81664387654e-03 - 5.72047031573e-03 4.94806264494e-03 4.45623663297e-03 4.21692866215e-03 4.21692866215e-03 4.45623663297e-03 - 4.94806264494e-03 5.72047031573e-03 6.81664387654e-03 8.29158854156e-03 1.02064774226e-02 1.26225341258e-02 - 1.55924938344e-02 1.91448778653e-02 2.32603028496e-02 2.78466298707e-02 3.27229087590e-02 3.76190713504e-02 - 4.21941579647e-02 4.60731359718e-02 4.88987422193e-02 5.03893328752e-02 5.03893328752e-02 4.88987422193e-02 - 4.79989400749e-02 4.35234290368e-02 3.84534160516e-02 3.31691643222e-02 2.80098127199e-02 2.32368358951e-02 - 1.90175139009e-02 1.54267827082e-02 1.24650738064e-02 1.00865795572e-02 8.22635918544e-03 6.81664387654e-03 - 5.79365065764e-03 5.10253249618e-03 4.70304044562e-03 4.57225197605e-03 4.70304044562e-03 5.10253249618e-03 - 5.79365065764e-03 6.81664387654e-03 8.22635918544e-03 1.00865795572e-02 1.24650738064e-02 1.54267827082e-02 - 1.90175139009e-02 2.32368358951e-02 2.80098127199e-02 3.31691643222e-02 3.84534160516e-02 4.35234290368e-02 - 4.79989400749e-02 5.15101646150e-02 5.37510492057e-02 5.45211951056e-02 5.37510492057e-02 5.15101646150e-02 - 4.90700187394e-02 4.42634768270e-02 3.89160663350e-02 3.34071767353e-02 2.80812943983e-02 2.32023283361e-02 - 1.89341271390e-02 1.53419303249e-02 1.24123312979e-02 1.00865795572e-02 8.29158854156e-03 6.95605972443e-03 - 6.01563766373e-03 5.41768978229e-03 5.12697112440e-03 5.12697112440e-03 5.41768978229e-03 6.01563766373e-03 - 6.95605972443e-03 8.29158854156e-03 1.00865795572e-02 1.24123312979e-02 1.53419303249e-02 1.89341271390e-02 - 2.32023283361e-02 2.80812943983e-02 3.34071767353e-02 3.89160663350e-02 4.42634768270e-02 4.90700187394e-02 - 5.29846351657e-02 5.57363453523e-02 5.71527035674e-02 5.71527035674e-02 5.57363453523e-02 5.29846351657e-02 - 4.93048229800e-02 4.44868574481e-02 3.90848689472e-02 3.34971688966e-02 2.80994006567e-02 2.31779027969e-02 - 1.89049688962e-02 1.53419303249e-02 1.24650738064e-02 1.02064774226e-02 8.48843476768e-03 7.23847314555e-03 - 6.39361872594e-03 5.90565973456e-03 5.74602373426e-03 5.90565973456e-03 6.39361872594e-03 7.23847314555e-03 - 8.48843476768e-03 1.02064774226e-02 1.24650738064e-02 1.53419303249e-02 1.89049688962e-02 2.31779027969e-02 - 2.80994006567e-02 3.34971688966e-02 3.90848689472e-02 4.44868574481e-02 4.93048229800e-02 5.32152215954e-02 - 5.60372557288e-02 5.77208882781e-02 5.82782465337e-02 5.77208882781e-02 5.60372557288e-02 5.32152215954e-02 - 4.89738024005e-02 4.44045560444e-02 3.90976289629e-02 3.35158471123e-02 2.81005086407e-02 2.31779027969e-02 - 1.89341271390e-02 1.54267827082e-02 1.26225341258e-02 1.04468583553e-02 8.82009872524e-03 7.67065297497e-03 - 6.93908976898e-03 6.58362639444e-03 6.58362639444e-03 6.93908976898e-03 7.67065297497e-03 8.82009872524e-03 - 1.04468583553e-02 1.26225341258e-02 1.54267827082e-02 1.89341271390e-02 2.31779027969e-02 2.81005086407e-02 - 3.35158471123e-02 3.90976289629e-02 4.44045560444e-02 4.89738024005e-02 5.24797871309e-02 5.48533676650e-02 - 5.62463189889e-02 5.68740665481e-02 5.68740665481e-02 5.62463189889e-02 5.48533676650e-02 5.24797871309e-02 - 4.85080722970e-02 4.42752514752e-02 3.90842281235e-02 3.35158471123e-02 2.80994006567e-02 2.32023283361e-02 - 1.90175139009e-02 1.55924938344e-02 1.28827341282e-02 1.08088949298e-02 9.29162040305e-03 8.26229038338e-03 - 7.66717366082e-03 7.47255069610e-03 7.66717366082e-03 8.26229038338e-03 9.29162040305e-03 1.08088949298e-02 - 1.28827341282e-02 1.55924938344e-02 1.90175139009e-02 2.32023283361e-02 2.80994006567e-02 3.35158471123e-02 - 3.90842281235e-02 4.42752514752e-02 4.85080722970e-02 5.13869204668e-02 5.29210396854e-02 5.34983990182e-02 - 5.36143814352e-02 5.36149267734e-02 5.36143814352e-02 5.34983990182e-02 5.29210396854e-02 5.13869204668e-02 - 4.83002627794e-02 4.42752514752e-02 3.90976289629e-02 3.34971688966e-02 2.80812943983e-02 2.32368358951e-02 - 1.91448778653e-02 1.58329883187e-02 1.32437842255e-02 1.12951380995e-02 9.91029781221e-03 9.02578945364e-03 - 8.59555582378e-03 8.59555582378e-03 9.02578945364e-03 9.91029781221e-03 1.12951380995e-02 1.32437842255e-02 - 1.58329883187e-02 1.91448778653e-02 2.32368358951e-02 2.80812943983e-02 3.34971688966e-02 3.90976289629e-02 - 4.42752514752e-02 4.83002627794e-02 5.06194135765e-02 5.12221625406e-02 5.07010770424e-02 4.98718618187e-02 - 4.93308963719e-02 4.93308963719e-02 4.98718618187e-02 5.07010770424e-02 5.12221625406e-02 5.06194135765e-02 - 4.85080722970e-02 4.44045560444e-02 3.90848689472e-02 3.34071767353e-02 2.80098127199e-02 2.32603028496e-02 - 1.93050944183e-02 1.61434902729e-02 1.37059602390e-02 1.19105819676e-02 1.06856809758e-02 9.97511028176e-03 - 9.74245511371e-03 9.97511028176e-03 1.06856809758e-02 1.19105819676e-02 1.37059602390e-02 1.61434902729e-02 - 1.93050944183e-02 2.32603028496e-02 2.80098127199e-02 3.34071767353e-02 3.90848689472e-02 4.44045560444e-02 - 4.85080722970e-02 5.06194135765e-02 5.05555186569e-02 4.89850720157e-02 4.70389926376e-02 4.56222411881e-02 - 4.51254329663e-02 4.56222411881e-02 4.70389926376e-02 4.89850720157e-02 5.05555186569e-02 5.06194135765e-02 - 4.89738024005e-02 4.44868574481e-02 3.89160663350e-02 3.31691643222e-02 2.78466298707e-02 2.32562353108e-02 - 1.94921954522e-02 1.65234811342e-02 1.42727054437e-02 1.26620800682e-02 1.16276251073e-02 1.11228159589e-02 - 1.11228159589e-02 1.16276251073e-02 1.26620800682e-02 1.42727054437e-02 1.65234811342e-02 1.94921954522e-02 - 2.32562353108e-02 2.78466298707e-02 3.31691643222e-02 3.89160663350e-02 4.44868574481e-02 4.89738024005e-02 - 5.13869204668e-02 5.12221625406e-02 4.89850720157e-02 4.60013609401e-02 4.35588929466e-02 4.22847991283e-02 - 4.22847991283e-02 4.35588929466e-02 4.60013609401e-02 4.89850720157e-02 5.12221625406e-02 5.13869204668e-02 - 4.93048229800e-02 4.42634768270e-02 3.84534160516e-02 3.27229087590e-02 2.75721078901e-02 2.32217587400e-02 - 1.97084075068e-02 1.69767793036e-02 1.49488960464e-02 1.35553259639e-02 1.27424344623e-02 1.24755048074e-02 - 1.27424344623e-02 1.35553259639e-02 1.49488960464e-02 1.69767793036e-02 1.97084075068e-02 2.32217587400e-02 - 2.75721078901e-02 3.27229087590e-02 3.84534160516e-02 4.42634768270e-02 4.93048229800e-02 5.24797871309e-02 - 5.29210396854e-02 5.07010770424e-02 4.70389926376e-02 4.35588929466e-02 4.13123485649e-02 4.05694134160e-02 - 4.13123485649e-02 4.35588929466e-02 4.70389926376e-02 5.07010770424e-02 5.29210396854e-02 5.24797871309e-02 - 4.90700187394e-02 4.35234290368e-02 3.76190713504e-02 3.20546920774e-02 2.71955666447e-02 2.31688478126e-02 - 1.99620901041e-02 1.75083321070e-02 1.57370100687e-02 1.45906790875e-02 1.40283418589e-02 1.40283418589e-02 - 1.45906790875e-02 1.57370100687e-02 1.75083321070e-02 1.99620901041e-02 2.31688478126e-02 2.71955666447e-02 - 3.20546920774e-02 3.76190713504e-02 4.35234290368e-02 4.90700187394e-02 5.32152215954e-02 5.48533676650e-02 - 5.34983990182e-02 4.98718618187e-02 4.56222411881e-02 4.22847991283e-02 4.05694134160e-02 4.05694134160e-02 - 4.22847991283e-02 4.56222411881e-02 4.98718618187e-02 5.34983990182e-02 5.48533676650e-02 5.32152215954e-02 - 4.79989400749e-02 4.21941579647e-02 3.64263171972e-02 3.12022017908e-02 2.67502344749e-02 2.31175818882e-02 - 2.02621880335e-02 1.81196807915e-02 1.66330383744e-02 1.57591868798e-02 1.54709928045e-02 1.57591868798e-02 - 1.66330383744e-02 1.81196807915e-02 2.02621880335e-02 2.31175818882e-02 2.67502344749e-02 3.12022017908e-02 - 3.64263171972e-02 4.21941579647e-02 4.79989400749e-02 5.29846351657e-02 5.60372557288e-02 5.62463189889e-02 - 5.36143814352e-02 4.93308963719e-02 4.51254329663e-02 4.22847991283e-02 4.13123485649e-02 4.22847991283e-02 - 4.51254329663e-02 4.93308963719e-02 5.36143814352e-02 5.62463189889e-02 5.60372557288e-02 5.29846351657e-02 - 4.60731359718e-02 4.03527020822e-02 3.49654910486e-02 3.02357338101e-02 2.62778950395e-02 2.30866420056e-02 - 2.06126999880e-02 1.88049742175e-02 1.76229803621e-02 1.70389543521e-02 1.70389543521e-02 1.76229803621e-02 - 1.88049742175e-02 2.06126999880e-02 2.30866420056e-02 2.62778950395e-02 3.02357338101e-02 3.49654910486e-02 - 4.03527020822e-02 4.60731359718e-02 5.15101646150e-02 5.57363453523e-02 5.77208882781e-02 5.68740665481e-02 - 5.36149267734e-02 4.93308963719e-02 4.56222411881e-02 4.35588929466e-02 4.35588929466e-02 4.56222411881e-02 - 4.93308963719e-02 5.36149267734e-02 5.68740665481e-02 5.77208882781e-02 5.57363453523e-02 5.15101646150e-02 - 4.34838779539e-02 3.81729635435e-02 3.33624200108e-02 2.92302840650e-02 2.58139075627e-02 2.30866420056e-02 - 2.10090352784e-02 1.95479913088e-02 1.86800926235e-02 1.83921353899e-02 1.86800926235e-02 1.95479913088e-02 - 2.10090352784e-02 2.30866420056e-02 2.58139075627e-02 2.92302840650e-02 3.33624200108e-02 3.81729635435e-02 - 4.34838779539e-02 4.88987422193e-02 5.37510492057e-02 5.71527035674e-02 5.82782465337e-02 5.68740665481e-02 - 5.36143814352e-02 4.98718618187e-02 4.70389926376e-02 4.60013609401e-02 4.70389926376e-02 4.98718618187e-02 - 5.36143814352e-02 5.68740665481e-02 5.82782465337e-02 5.71527035674e-02 5.37510492057e-02 4.88987422193e-02 - 4.05199675384e-02 3.58537824974e-02 3.17358390207e-02 2.82446089484e-02 2.53797852965e-02 2.31175818882e-02 - 2.14361295219e-02 2.03206914317e-02 1.97639178277e-02 1.97639178277e-02 2.03206914317e-02 2.14361295219e-02 - 2.31175818882e-02 2.53797852965e-02 2.82446089484e-02 3.17358390207e-02 3.58537824974e-02 4.05199675384e-02 - 4.55081727847e-02 5.03893328752e-02 5.45211951056e-02 5.71527035674e-02 5.77208882781e-02 5.62463189889e-02 - 5.34983990182e-02 5.07010770424e-02 4.89850720157e-02 4.89850720157e-02 5.07010770424e-02 5.34983990182e-02 - 5.62463189889e-02 5.77208882781e-02 5.71527035674e-02 5.45211951056e-02 5.03893328752e-02 4.55081727847e-02 - 3.74634706166e-02 3.35632692529e-02 3.01717861136e-02 2.73140021666e-02 2.49827563157e-02 2.31688478126e-02 - 2.18687619531e-02 2.10847229658e-02 2.08223402545e-02 2.10847229658e-02 2.18687619531e-02 2.31688478126e-02 - 2.49827563157e-02 2.73140021666e-02 3.01717861136e-02 3.35632692529e-02 3.74634706166e-02 4.17618689283e-02 - 4.62088704848e-02 5.03893328752e-02 5.37510492057e-02 5.57363453523e-02 5.60372557288e-02 5.48533676650e-02 - 5.29210396854e-02 5.12221625406e-02 5.05555186569e-02 5.12221625406e-02 5.29210396854e-02 5.48533676650e-02 - 5.60372557288e-02 5.57363453523e-02 5.37510492057e-02 5.03893328752e-02 4.62088704848e-02 4.17618689283e-02 - 3.45282284639e-02 3.14127386696e-02 2.87187367840e-02 2.64534808200e-02 2.46187421852e-02 2.32217587400e-02 - 2.22755921268e-02 2.17964249596e-02 2.17964249596e-02 2.22755921268e-02 2.32217587400e-02 2.46187421852e-02 - 2.64534808200e-02 2.87187367840e-02 3.14127386696e-02 3.45282284639e-02 3.80204685260e-02 4.17618689283e-02 - 4.55081727847e-02 4.88987422193e-02 5.15101646150e-02 5.29846351657e-02 5.32152215954e-02 5.24797871309e-02 - 5.13869204668e-02 5.06194135765e-02 5.06194135765e-02 5.13869204668e-02 5.24797871309e-02 5.32152215954e-02 - 5.29846351657e-02 5.15101646150e-02 4.88987422193e-02 4.55081727847e-02 4.17618689283e-02 3.80204685260e-02 - 3.55932306397e-02 3.34710625414e-02 3.16041856284e-02 3.00149219248e-02 2.87439673059e-02 2.78466298707e-02 - 2.73794467347e-02 2.73794467347e-02 2.78466298707e-02 2.87439673059e-02 3.00149219248e-02 3.16041856284e-02 - 3.34710625414e-02 3.55932306397e-02 3.79563421300e-02 4.05244812822e-02 4.32002938784e-02 4.57968161948e-02 - 4.80406383964e-02 4.96193341715e-02 5.02828320119e-02 4.99825941802e-02 4.89738024005e-02 4.77793166757e-02 - 4.69885184966e-02 4.69885184966e-02 4.77793166757e-02 4.89738024005e-02 4.99825941802e-02 5.02828320119e-02 - 4.96193341715e-02 4.80406383964e-02 4.57968161948e-02 4.32002938784e-02 4.05244812822e-02 3.79563421300e-02 - 3.34710625414e-02 3.19731919657e-02 3.06330408871e-02 2.94854041377e-02 2.85879356046e-02 2.80098127199e-02 - 2.78094015925e-02 2.80098127199e-02 2.85879356046e-02 2.94854041377e-02 3.06330408871e-02 3.19731919657e-02 - 3.34710625414e-02 3.51127517762e-02 3.68889471691e-02 3.87673596218e-02 4.06654278454e-02 4.24386109393e-02 - 4.38959177953e-02 4.48486167771e-02 4.51877782102e-02 4.49623774036e-02 4.44045560444e-02 4.38595264834e-02 - 4.36365698621e-02 4.38595264834e-02 4.44045560444e-02 4.49623774036e-02 4.51877782102e-02 4.48486167771e-02 - 4.38959177953e-02 4.24386109393e-02 4.06654278454e-02 3.87673596218e-02 3.68889471691e-02 3.51127517762e-02 - 3.16041856284e-02 3.06330408871e-02 2.97391273192e-02 2.89691250092e-02 2.83925891295e-02 2.80812943983e-02 - 2.80812943983e-02 2.83925891295e-02 2.89691250092e-02 2.97391273192e-02 3.06330408871e-02 3.16041856284e-02 - 3.26341221073e-02 3.37228748044e-02 3.48695445110e-02 3.60511821341e-02 3.72078996967e-02 3.82415861113e-02 - 3.90347179512e-02 3.94908104948e-02 3.95849180057e-02 3.93968315223e-02 3.90976289629e-02 3.88830541657e-02 - 3.88830541657e-02 3.90976289629e-02 3.93968315223e-02 3.95849180057e-02 3.94908104948e-02 3.90347179512e-02 - 3.82415861113e-02 3.72078996967e-02 3.60511821341e-02 3.48695445110e-02 3.37228748044e-02 3.26341221073e-02 - 3.00149219248e-02 2.94854041377e-02 2.89691250092e-02 2.85205562719e-02 2.82105864296e-02 2.80994006567e-02 - 2.82105864296e-02 2.85205562719e-02 2.89691250092e-02 2.94854041377e-02 3.00149219248e-02 3.05340710560e-02 - 3.10465495213e-02 3.15673758761e-02 3.21049723875e-02 3.26483588385e-02 3.31615306069e-02 3.35871770820e-02 - 3.38635928392e-02 3.39533984936e-02 3.38709874542e-02 3.36893635306e-02 3.35158471123e-02 3.34454153402e-02 - 3.35158471123e-02 3.36893635306e-02 3.38709874542e-02 3.39533984936e-02 3.38635928392e-02 3.35871770820e-02 - 3.31615306069e-02 3.26483588385e-02 3.21049723875e-02 3.15673758761e-02 3.10465495213e-02 3.05340710560e-02 - 2.87439673059e-02 2.85879356046e-02 2.83925891295e-02 2.82105864296e-02 2.81005086407e-02 2.81005086407e-02 - 2.82105864296e-02 2.83925891295e-02 2.85879356046e-02 2.87439673059e-02 2.88348357920e-02 2.88661050079e-02 - 2.88631293974e-02 2.88533907006e-02 2.88533907006e-02 2.88631293974e-02 2.88661050079e-02 2.88348357920e-02 - 2.87439673059e-02 2.85879356046e-02 2.83925891295e-02 2.82105864296e-02 2.81005086407e-02 2.81005086407e-02 - 2.82105864296e-02 2.83925891295e-02 2.85879356046e-02 2.87439673059e-02 2.88348357920e-02 2.88661050079e-02 - 2.88631293974e-02 2.88533907006e-02 2.88533907006e-02 2.88631293974e-02 2.88661050079e-02 2.88348357920e-02 - 2.78466298707e-02 2.80098127199e-02 2.80812943983e-02 2.80994006567e-02 2.81005086407e-02 2.80994006567e-02 - 2.80812943983e-02 2.80098127199e-02 2.78466298707e-02 2.75721078901e-02 2.71955666447e-02 2.67502344749e-02 - 2.62778950395e-02 2.58139075627e-02 2.53797852965e-02 2.49827563157e-02 2.46187421852e-02 2.42781130820e-02 - 2.39549635512e-02 2.36566460915e-02 2.34067395586e-02 2.32378434698e-02 2.31779027969e-02 2.32378434698e-02 - 2.34067395586e-02 2.36566460915e-02 2.39549635512e-02 2.42781130820e-02 2.46187421852e-02 2.49827563157e-02 - 2.53797852965e-02 2.58139075627e-02 2.62778950395e-02 2.67502344749e-02 2.71955666447e-02 2.75721078901e-02 - 2.73794467347e-02 2.78094015925e-02 2.80812943983e-02 2.82105864296e-02 2.82105864296e-02 2.80812943983e-02 - 2.78094015925e-02 2.73794467347e-02 2.67889182249e-02 2.60582031450e-02 2.52298202509e-02 2.43576039836e-02 - 2.34923498457e-02 2.26718438342e-02 2.19185274002e-02 2.12421582644e-02 2.06439962171e-02 2.01220876747e-02 - 1.96777557044e-02 1.93203741197e-02 1.90666010177e-02 1.89341271390e-02 1.89341271390e-02 1.90666010177e-02 - 1.93203741197e-02 1.96777557044e-02 2.01220876747e-02 2.06439962171e-02 2.12421582644e-02 2.19185274002e-02 - 2.26718438342e-02 2.34923498457e-02 2.43576039836e-02 2.52298202509e-02 2.60582031450e-02 2.67889182249e-02 - 2.73794467347e-02 2.80098127199e-02 2.83925891295e-02 2.85205562719e-02 2.83925891295e-02 2.80098127199e-02 - 2.73794467347e-02 2.65227612839e-02 2.54803066383e-02 2.43103322252e-02 2.30804654510e-02 2.18557815330e-02 - 2.06884779452e-02 1.96135589165e-02 1.86504890434e-02 1.78072941675e-02 1.70848695603e-02 1.64818809732e-02 - 1.59997599900e-02 1.56449525655e-02 1.54267827082e-02 1.53530693596e-02 1.54267827082e-02 1.56449525655e-02 - 1.59997599900e-02 1.64818809732e-02 1.70848695603e-02 1.78072941675e-02 1.86504890434e-02 1.96135589165e-02 - 2.06884779452e-02 2.18557815330e-02 2.30804654510e-02 2.43103322252e-02 2.54803066383e-02 2.65227612839e-02 - 2.78466298707e-02 2.85879356046e-02 2.89691250092e-02 2.89691250092e-02 2.85879356046e-02 2.78466298707e-02 - 2.67889182249e-02 2.54803066383e-02 2.40022165572e-02 2.24420850452e-02 2.08820531014e-02 1.93892705934e-02 - 1.80109897723e-02 1.67754563001e-02 1.56960478729e-02 1.47756456624e-02 1.40109856905e-02 1.33976732300e-02 - 1.29342051284e-02 1.26225341258e-02 1.24657333634e-02 1.24657333634e-02 1.26225341258e-02 1.29342051284e-02 - 1.33976732300e-02 1.40109856905e-02 1.47756456624e-02 1.56960478729e-02 1.67754563001e-02 1.80109897723e-02 - 1.93892705934e-02 2.08820531014e-02 2.24420850452e-02 2.40022165572e-02 2.54803066383e-02 2.67889182249e-02 - 2.87439673059e-02 2.94854041377e-02 2.97391273192e-02 2.94854041377e-02 2.87439673059e-02 2.75721078901e-02 - 2.60582031450e-02 2.43103322252e-02 2.24420850452e-02 2.05587788214e-02 1.87467470027e-02 1.70678712692e-02 - 1.55601992220e-02 1.42425749040e-02 1.31198380533e-02 1.21873907787e-02 1.14361707830e-02 1.08577130860e-02 - 1.04468583553e-02 1.02011860999e-02 1.01194532806e-02 1.02011860999e-02 1.04468583553e-02 1.08577130860e-02 - 1.14361707830e-02 1.21873907787e-02 1.31198380533e-02 1.42425749040e-02 1.55601992220e-02 1.70678712692e-02 - 1.87467470027e-02 2.05587788214e-02 2.24420850452e-02 2.43103322252e-02 2.60582031450e-02 2.75721078901e-02 - 3.00149219248e-02 3.06330408871e-02 3.06330408871e-02 3.00149219248e-02 2.88348357920e-02 2.71955666447e-02 - 2.52298202509e-02 2.30804654510e-02 2.08820531014e-02 1.87467470027e-02 1.67567114426e-02 1.49636867906e-02 - 1.33939588194e-02 1.20550163598e-02 1.09414577715e-02 1.00404664762e-02 9.33741418467e-03 8.82009872524e-03 - 8.47998103933e-03 8.31144312544e-03 8.31144312544e-03 8.47998103933e-03 8.82009872524e-03 9.33741418467e-03 - 1.00404664762e-02 1.09414577715e-02 1.20550163598e-02 1.33939588194e-02 1.49636867906e-02 1.67567114426e-02 - 1.87467470027e-02 2.08820531014e-02 2.30804654510e-02 2.52298202509e-02 2.71955666447e-02 2.88348357920e-02 - 3.16041856284e-02 3.19731919657e-02 3.16041856284e-02 3.05340710560e-02 2.88661050079e-02 2.67502344749e-02 - 2.43576039836e-02 2.18557815330e-02 1.93892705934e-02 1.70678712692e-02 1.49636867906e-02 1.31152359900e-02 - 1.15351431719e-02 1.02181471415e-02 9.14830218340e-03 8.30549434438e-03 7.67065297497e-03 7.22847713667e-03 - 6.96786738821e-03 6.88181758770e-03 6.96786738821e-03 7.22847713667e-03 7.67065297497e-03 8.30549434438e-03 - 9.14830218340e-03 1.02181471415e-02 1.15351431719e-02 1.31152359900e-02 1.49636867906e-02 1.70678712692e-02 - 1.93892705934e-02 2.18557815330e-02 2.43576039836e-02 2.67502344749e-02 2.88661050079e-02 3.05340710560e-02 - 3.34710625414e-02 3.34710625414e-02 3.26341221073e-02 3.10465495213e-02 2.88631293974e-02 2.62778950395e-02 - 2.34923498457e-02 2.06884779452e-02 1.80109897723e-02 1.55601992220e-02 1.33939588194e-02 1.15351431719e-02 - 9.98127039361e-03 8.71419097250e-03 7.70870330534e-03 6.93908976898e-03 6.38291972351e-03 6.02253909249e-03 - 5.84558656512e-03 5.84558656512e-03 6.02253909249e-03 6.38291972351e-03 6.93908976898e-03 7.70870330534e-03 - 8.71419097250e-03 9.98127039361e-03 1.15351431719e-02 1.33939588194e-02 1.55601992220e-02 1.80109897723e-02 - 2.06884779452e-02 2.34923498457e-02 2.62778950395e-02 2.88631293974e-02 3.10465495213e-02 3.26341221073e-02 - 3.55932306397e-02 3.51127517762e-02 3.37228748044e-02 3.15673758761e-02 2.88533907006e-02 2.58139075627e-02 - 2.26718438342e-02 1.96135589165e-02 1.67754563001e-02 1.42425749040e-02 1.20550163598e-02 1.02181471415e-02 - 8.71419097250e-03 7.51351058269e-03 6.58362639444e-03 5.89466652251e-03 5.42174879265e-03 5.14599535674e-03 - 5.05545032098e-03 5.14599535674e-03 5.42174879265e-03 5.89466652251e-03 6.58362639444e-03 7.51351058269e-03 - 8.71419097250e-03 1.02181471415e-02 1.20550163598e-02 1.42425749040e-02 1.67754563001e-02 1.96135589165e-02 - 2.26718438342e-02 2.58139075627e-02 2.88533907006e-02 3.15673758761e-02 3.37228748044e-02 3.51127517762e-02 - 3.79563421300e-02 3.68889471691e-02 3.48695445110e-02 3.21049723875e-02 2.88533907006e-02 2.53797852965e-02 - 2.19185274002e-02 1.86504890434e-02 1.56960478729e-02 1.31198380533e-02 1.09414577715e-02 9.14830218340e-03 - 7.70870330534e-03 6.58362639444e-03 5.73495116497e-03 5.12972310883e-03 4.74176747355e-03 4.55262020357e-03 - 4.55262020357e-03 4.74176747355e-03 5.12972310883e-03 5.73495116497e-03 6.58362639444e-03 7.70870330534e-03 - 9.14830218340e-03 1.09414577715e-02 1.31198380533e-02 1.56960478729e-02 1.86504890434e-02 2.19185274002e-02 - 2.53797852965e-02 2.88533907006e-02 3.21049723875e-02 3.48695445110e-02 3.68889471691e-02 3.79563421300e-02 - 4.05244812822e-02 3.87673596218e-02 3.60511821341e-02 3.26483588385e-02 2.88631293974e-02 2.49827563157e-02 - 2.12421582644e-02 1.78072941675e-02 1.47756456624e-02 1.21873907787e-02 1.00404664762e-02 8.30549434438e-03 - 6.93908976898e-03 5.89466652251e-03 5.12972310883e-03 4.60945880297e-03 4.30805835198e-03 4.20942844716e-03 - 4.30805835198e-03 4.60945880297e-03 5.12972310883e-03 5.89466652251e-03 6.93908976898e-03 8.30549434438e-03 - 1.00404664762e-02 1.21873907787e-02 1.47756456624e-02 1.78072941675e-02 2.12421582644e-02 2.49827563157e-02 - 2.88631293974e-02 3.26483588385e-02 3.60511821341e-02 3.87673596218e-02 4.05244812822e-02 4.11328816616e-02 - 4.32002938784e-02 4.06654278454e-02 3.72078996967e-02 3.31615306069e-02 2.88661050079e-02 2.46187421852e-02 - 2.06439962171e-02 1.70848695603e-02 1.40109856905e-02 1.14361707830e-02 9.33741418467e-03 7.67065297497e-03 - 6.38291972351e-03 5.42174879265e-03 4.74176747355e-03 4.30805835198e-03 4.09713024865e-03 4.09713024865e-03 - 4.30805835198e-03 4.74176747355e-03 5.42174879265e-03 6.38291972351e-03 7.67065297497e-03 9.33741418467e-03 - 1.14361707830e-02 1.40109856905e-02 1.70848695603e-02 2.06439962171e-02 2.46187421852e-02 2.88661050079e-02 - 3.31615306069e-02 3.72078996967e-02 4.06654278454e-02 4.32002938784e-02 4.45431970579e-02 4.45431970579e-02 - 4.57968161948e-02 4.24386109393e-02 3.82415861113e-02 3.35871770820e-02 2.88348357920e-02 2.42781130820e-02 - 2.01220876747e-02 1.64818809732e-02 1.33976732300e-02 1.08577130860e-02 8.82009872524e-03 7.22847713667e-03 - 6.02253909249e-03 5.14599535674e-03 4.55262020357e-03 4.20942844716e-03 4.09713024865e-03 4.20942844716e-03 - 4.55262020357e-03 5.14599535674e-03 6.02253909249e-03 7.22847713667e-03 8.82009872524e-03 1.08577130860e-02 - 1.33976732300e-02 1.64818809732e-02 2.01220876747e-02 2.42781130820e-02 2.88348357920e-02 3.35871770820e-02 - 3.82415861113e-02 4.24386109393e-02 4.57968161948e-02 4.79731106469e-02 4.87273692032e-02 4.79731106469e-02 - 4.80406383964e-02 4.38959177953e-02 3.90347179512e-02 3.38635928392e-02 2.87439673059e-02 2.39549635512e-02 - 1.96777557044e-02 1.59997599900e-02 1.29342051284e-02 1.04468583553e-02 8.47998103933e-03 6.96786738821e-03 - 5.84558656512e-03 5.05545032098e-03 4.55262020357e-03 4.30805835198e-03 4.30805835198e-03 4.55262020357e-03 - 5.05545032098e-03 5.84558656512e-03 6.96786738821e-03 8.47998103933e-03 1.04468583553e-02 1.29342051284e-02 - 1.59997599900e-02 1.96777557044e-02 2.39549635512e-02 2.87439673059e-02 3.38635928392e-02 3.90347179512e-02 - 4.38959177953e-02 4.80406383964e-02 5.10737783335e-02 5.26787408684e-02 5.26787408684e-02 5.10737783335e-02 - 4.96193341715e-02 4.48486167771e-02 3.94908104948e-02 3.39533984936e-02 2.85879356046e-02 2.36566460915e-02 - 1.93203741197e-02 1.56449525655e-02 1.26225341258e-02 1.02011860999e-02 8.31144312544e-03 6.88181758770e-03 - 5.84558656512e-03 5.14599535674e-03 4.74176747355e-03 4.60945880297e-03 4.74176747355e-03 5.14599535674e-03 - 5.84558656512e-03 6.88181758770e-03 8.31144312544e-03 1.02011860999e-02 1.26225341258e-02 1.56449525655e-02 - 1.93203741197e-02 2.36566460915e-02 2.85879356046e-02 3.39533984936e-02 3.94908104948e-02 4.48486167771e-02 - 4.96193341715e-02 5.33923081840e-02 5.58153453540e-02 5.66509609539e-02 5.58153453540e-02 5.33923081840e-02 - 5.02828320119e-02 4.51877782102e-02 3.95849180057e-02 3.38709874542e-02 2.83925891295e-02 2.34067395586e-02 - 1.90666010177e-02 1.54267827082e-02 1.24657333634e-02 1.01194532806e-02 8.31144312544e-03 6.96786738821e-03 - 6.02253909249e-03 5.42174879265e-03 5.12972310883e-03 5.12972310883e-03 5.42174879265e-03 6.02253909249e-03 - 6.96786738821e-03 8.31144312544e-03 1.01194532806e-02 1.24657333634e-02 1.54267827082e-02 1.90666010177e-02 - 2.34067395586e-02 2.83925891295e-02 3.38709874542e-02 3.95849180057e-02 4.51877782102e-02 5.02828320119e-02 - 5.44829894560e-02 5.74676014035e-02 5.90154969276e-02 5.90154969276e-02 5.74676014035e-02 5.44829894560e-02 - 4.99825941802e-02 4.49623774036e-02 3.93968315223e-02 3.36893635306e-02 2.82105864296e-02 2.32378434698e-02 - 1.89341271390e-02 1.53530693596e-02 1.24657333634e-02 1.02011860999e-02 8.47998103933e-03 7.22847713667e-03 - 6.38291972351e-03 5.89466652251e-03 5.73495116497e-03 5.89466652251e-03 6.38291972351e-03 7.22847713667e-03 - 8.47998103933e-03 1.02011860999e-02 1.24657333634e-02 1.53530693596e-02 1.89341271390e-02 2.32378434698e-02 - 2.82105864296e-02 3.36893635306e-02 3.93968315223e-02 4.49623774036e-02 4.99825941802e-02 5.41129564364e-02 - 5.71366804742e-02 5.89627863020e-02 5.95715936141e-02 5.89627863020e-02 5.71366804742e-02 5.41129564364e-02 - 4.89738024005e-02 4.44045560444e-02 3.90976289629e-02 3.35158471123e-02 2.81005086407e-02 2.31779027969e-02 - 1.89341271390e-02 1.54267827082e-02 1.26225341258e-02 1.04468583553e-02 8.82009872524e-03 7.67065297497e-03 - 6.93908976898e-03 6.58362639444e-03 6.58362639444e-03 6.93908976898e-03 7.67065297497e-03 8.82009872524e-03 - 1.04468583553e-02 1.26225341258e-02 1.54267827082e-02 1.89341271390e-02 2.31779027969e-02 2.81005086407e-02 - 3.35158471123e-02 3.90976289629e-02 4.44045560444e-02 4.89738024005e-02 5.24797871309e-02 5.48533676650e-02 - 5.62463189889e-02 5.68740665481e-02 5.68740665481e-02 5.62463189889e-02 5.48533676650e-02 5.24797871309e-02 - 4.77793166757e-02 4.38595264834e-02 3.88830541657e-02 3.34454153402e-02 2.81005086407e-02 2.32378434698e-02 - 1.90666010177e-02 1.56449525655e-02 1.29342051284e-02 1.08577130860e-02 9.33741418467e-03 8.30549434438e-03 - 7.70870330534e-03 7.51351058269e-03 7.70870330534e-03 8.30549434438e-03 9.33741418467e-03 1.08577130860e-02 - 1.29342051284e-02 1.56449525655e-02 1.90666010177e-02 2.32378434698e-02 2.81005086407e-02 3.34454153402e-02 - 3.88830541657e-02 4.38595264834e-02 4.77793166757e-02 5.02620593726e-02 5.13723037105e-02 5.15765048907e-02 - 5.14403532045e-02 5.13523903781e-02 5.14403532045e-02 5.15765048907e-02 5.13723037105e-02 5.02620593726e-02 - 4.69885184966e-02 4.36365698621e-02 3.88830541657e-02 3.35158471123e-02 2.82105864296e-02 2.34067395586e-02 - 1.93203741197e-02 1.59997599900e-02 1.33976732300e-02 1.14361707830e-02 1.00404664762e-02 9.14830218340e-03 - 8.71419097250e-03 8.71419097250e-03 9.14830218340e-03 1.00404664762e-02 1.14361707830e-02 1.33976732300e-02 - 1.59997599900e-02 1.93203741197e-02 2.34067395586e-02 2.82105864296e-02 3.35158471123e-02 3.88830541657e-02 - 4.36365698621e-02 4.69885184966e-02 4.83941231678e-02 4.79609401864e-02 4.64751950426e-02 4.49279278957e-02 - 4.40123223759e-02 4.40123223759e-02 4.49279278957e-02 4.64751950426e-02 4.79609401864e-02 4.83941231678e-02 - 4.69885184966e-02 4.38595264834e-02 3.90976289629e-02 3.36893635306e-02 2.83925891295e-02 2.36566460915e-02 - 1.96777557044e-02 1.64818809732e-02 1.40109856905e-02 1.21873907787e-02 1.09414577715e-02 1.02181471415e-02 - 9.98127039361e-03 1.02181471415e-02 1.09414577715e-02 1.21873907787e-02 1.40109856905e-02 1.64818809732e-02 - 1.96777557044e-02 2.36566460915e-02 2.83925891295e-02 3.36893635306e-02 3.90976289629e-02 4.38595264834e-02 - 4.69885184966e-02 4.76689314688e-02 4.58777097769e-02 4.26203265537e-02 3.93541671489e-02 3.71417160544e-02 - 3.63849623957e-02 3.71417160544e-02 3.93541671489e-02 4.26203265537e-02 4.58777097769e-02 4.76689314688e-02 - 4.77793166757e-02 4.44045560444e-02 3.93968315223e-02 3.38709874542e-02 2.85879356046e-02 2.39549635512e-02 - 2.01220876747e-02 1.70848695603e-02 1.47756456624e-02 1.31198380533e-02 1.20550163598e-02 1.15351431719e-02 - 1.15351431719e-02 1.20550163598e-02 1.31198380533e-02 1.47756456624e-02 1.70848695603e-02 2.01220876747e-02 - 2.39549635512e-02 2.85879356046e-02 3.38709874542e-02 3.93968315223e-02 4.44045560444e-02 4.77793166757e-02 - 4.83941231678e-02 4.58777097769e-02 4.11986868029e-02 3.62214481565e-02 3.25101129901e-02 3.06594619284e-02 - 3.06594619284e-02 3.25101129901e-02 3.62214481565e-02 4.11986868029e-02 4.58777097769e-02 4.83941231678e-02 - 4.89738024005e-02 4.49623774036e-02 3.95849180057e-02 3.39533984936e-02 2.87439673059e-02 2.42781130820e-02 - 2.06439962171e-02 1.78072941675e-02 1.56960478729e-02 1.42425749040e-02 1.33939588194e-02 1.31152359900e-02 - 1.33939588194e-02 1.42425749040e-02 1.56960478729e-02 1.78072941675e-02 2.06439962171e-02 2.42781130820e-02 - 2.87439673059e-02 3.39533984936e-02 3.95849180057e-02 4.49623774036e-02 4.89738024005e-02 5.02620593726e-02 - 4.79609401864e-02 4.26203265537e-02 3.62214481565e-02 3.09103717113e-02 2.77489957459e-02 2.67478820537e-02 - 2.77489957459e-02 3.09103717113e-02 3.62214481565e-02 4.26203265537e-02 4.79609401864e-02 5.02620593726e-02 - 4.99825941802e-02 4.51877782102e-02 3.94908104948e-02 3.38635928392e-02 2.88348357920e-02 2.46187421852e-02 - 2.12421582644e-02 1.86504890434e-02 1.67754563001e-02 1.55601992220e-02 1.49636867906e-02 1.49636867906e-02 - 1.55601992220e-02 1.67754563001e-02 1.86504890434e-02 2.12421582644e-02 2.46187421852e-02 2.88348357920e-02 - 3.38635928392e-02 3.94908104948e-02 4.51877782102e-02 4.99825941802e-02 5.24797871309e-02 5.13723037105e-02 - 4.64751950426e-02 3.93541671489e-02 3.25101129901e-02 2.77489957459e-02 2.54935088837e-02 2.54935088837e-02 - 2.77489957459e-02 3.25101129901e-02 3.93541671489e-02 4.64751950426e-02 5.13723037105e-02 5.24797871309e-02 - 5.02828320119e-02 4.48486167771e-02 3.90347179512e-02 3.35871770820e-02 2.88661050079e-02 2.49827563157e-02 - 2.19185274002e-02 1.96135589165e-02 1.80109897723e-02 1.70678712692e-02 1.67567114426e-02 1.70678712692e-02 - 1.80109897723e-02 1.96135589165e-02 2.19185274002e-02 2.49827563157e-02 2.88661050079e-02 3.35871770820e-02 - 3.90347179512e-02 4.48486167771e-02 5.02828320119e-02 5.41129564364e-02 5.48533676650e-02 5.15765048907e-02 - 4.49279278957e-02 3.71417160544e-02 3.06594619284e-02 2.67478820537e-02 2.54935088837e-02 2.67478820537e-02 - 3.06594619284e-02 3.71417160544e-02 4.49279278957e-02 5.15765048907e-02 5.48533676650e-02 5.41129564364e-02 - 4.96193341715e-02 4.38959177953e-02 3.82415861113e-02 3.31615306069e-02 2.88631293974e-02 2.53797852965e-02 - 2.26718438342e-02 2.06884779452e-02 1.93892705934e-02 1.87467470027e-02 1.87467470027e-02 1.93892705934e-02 - 2.06884779452e-02 2.26718438342e-02 2.53797852965e-02 2.88631293974e-02 3.31615306069e-02 3.82415861113e-02 - 4.38959177953e-02 4.96193341715e-02 5.44829894560e-02 5.71366804742e-02 5.62463189889e-02 5.14403532045e-02 - 4.40123223759e-02 3.63849623957e-02 3.06594619284e-02 2.77489957459e-02 2.77489957459e-02 3.06594619284e-02 - 3.63849623957e-02 4.40123223759e-02 5.14403532045e-02 5.62463189889e-02 5.71366804742e-02 5.44829894560e-02 - 4.80406383964e-02 4.24386109393e-02 3.72078996967e-02 3.26483588385e-02 2.88533907006e-02 2.58139075627e-02 - 2.34923498457e-02 2.18557815330e-02 2.08820531014e-02 2.05587788214e-02 2.08820531014e-02 2.18557815330e-02 - 2.34923498457e-02 2.58139075627e-02 2.88533907006e-02 3.26483588385e-02 3.72078996967e-02 4.24386109393e-02 - 4.80406383964e-02 5.33923081840e-02 5.74676014035e-02 5.89627863020e-02 5.68740665481e-02 5.13523903781e-02 - 4.40123223759e-02 3.71417160544e-02 3.25101129901e-02 3.09103717113e-02 3.25101129901e-02 3.71417160544e-02 - 4.40123223759e-02 5.13523903781e-02 5.68740665481e-02 5.89627863020e-02 5.74676014035e-02 5.33923081840e-02 - 4.57968161948e-02 4.06654278454e-02 3.60511821341e-02 3.21049723875e-02 2.88533907006e-02 2.62778950395e-02 - 2.43576039836e-02 2.30804654510e-02 2.24420850452e-02 2.24420850452e-02 2.30804654510e-02 2.43576039836e-02 - 2.62778950395e-02 2.88533907006e-02 3.21049723875e-02 3.60511821341e-02 4.06654278454e-02 4.57968161948e-02 - 5.10737783335e-02 5.58153453540e-02 5.90154969276e-02 5.95715936141e-02 5.68740665481e-02 5.14403532045e-02 - 4.49279278957e-02 3.93541671489e-02 3.62214481565e-02 3.62214481565e-02 3.93541671489e-02 4.49279278957e-02 - 5.14403532045e-02 5.68740665481e-02 5.95715936141e-02 5.90154969276e-02 5.58153453540e-02 5.10737783335e-02 - 4.32002938784e-02 3.87673596218e-02 3.48695445110e-02 3.15673758761e-02 2.88631293974e-02 2.67502344749e-02 - 2.52298202509e-02 2.43103322252e-02 2.40022165572e-02 2.43103322252e-02 2.52298202509e-02 2.67502344749e-02 - 2.88631293974e-02 3.15673758761e-02 3.48695445110e-02 3.87673596218e-02 4.32002938784e-02 4.79731106469e-02 - 5.26787408684e-02 5.66509609539e-02 5.90154969276e-02 5.89627863020e-02 5.62463189889e-02 5.15765048907e-02 - 4.64751950426e-02 4.26203265537e-02 4.11986868029e-02 4.26203265537e-02 4.64751950426e-02 5.15765048907e-02 - 5.62463189889e-02 5.89627863020e-02 5.90154969276e-02 5.66509609539e-02 5.26787408684e-02 4.79731106469e-02 - 4.05244812822e-02 3.68889471691e-02 3.37228748044e-02 3.10465495213e-02 2.88661050079e-02 2.71955666447e-02 - 2.60582031450e-02 2.54803066383e-02 2.54803066383e-02 2.60582031450e-02 2.71955666447e-02 2.88661050079e-02 - 3.10465495213e-02 3.37228748044e-02 3.68889471691e-02 4.05244812822e-02 4.45431970579e-02 4.87273692032e-02 - 5.26787408684e-02 5.58153453540e-02 5.74676014035e-02 5.71366804742e-02 5.48533676650e-02 5.13723037105e-02 - 4.79609401864e-02 4.58777097769e-02 4.58777097769e-02 4.79609401864e-02 5.13723037105e-02 5.48533676650e-02 - 5.71366804742e-02 5.74676014035e-02 5.58153453540e-02 5.26787408684e-02 4.87273692032e-02 4.45431970579e-02 - 3.79563421300e-02 3.51127517762e-02 3.26341221073e-02 3.05340710560e-02 2.88348357920e-02 2.75721078901e-02 - 2.67889182249e-02 2.65227612839e-02 2.67889182249e-02 2.75721078901e-02 2.88348357920e-02 3.05340710560e-02 - 3.26341221073e-02 3.51127517762e-02 3.79563421300e-02 4.11328816616e-02 4.45431970579e-02 4.79731106469e-02 - 5.10737783335e-02 5.33923081840e-02 5.44829894560e-02 5.41129564364e-02 5.24797871309e-02 5.02620593726e-02 - 4.83941231678e-02 4.76689314688e-02 4.83941231678e-02 5.02620593726e-02 5.24797871309e-02 5.41129564364e-02 - 5.44829894560e-02 5.33923081840e-02 5.10737783335e-02 4.79731106469e-02 4.45431970579e-02 4.11328816616e-02 - 4.02453701311e-02 3.83718132369e-02 3.66568505349e-02 3.51532871168e-02 3.39533984936e-02 3.31691643222e-02 - 3.28952522339e-02 3.31691643222e-02 3.39533984936e-02 3.51532871168e-02 3.66568505349e-02 3.83718132369e-02 - 4.02453701311e-02 4.22610610741e-02 4.44094609233e-02 4.66403070569e-02 4.88190878681e-02 5.07121410456e-02 - 5.20147259753e-02 5.24339557043e-02 5.18281863755e-02 5.03535465114e-02 4.85080722970e-02 4.69885184966e-02 - 4.64020316983e-02 4.69885184966e-02 4.85080722970e-02 5.03535465114e-02 5.18281863755e-02 5.24339557043e-02 - 5.20147259753e-02 5.07121410456e-02 4.88190878681e-02 4.66403070569e-02 4.44094609233e-02 4.22610610741e-02 - 3.83718132369e-02 3.70689589239e-02 3.58243136049e-02 3.47182328687e-02 3.38709874542e-02 3.34071767353e-02 - 3.34071767353e-02 3.38709874542e-02 3.47182328687e-02 3.58243136049e-02 3.70689589239e-02 3.83718132369e-02 - 3.97029159910e-02 4.10670403681e-02 4.24686468881e-02 4.38725463784e-02 4.51788789706e-02 4.62258246981e-02 - 4.68264624901e-02 4.68401774785e-02 4.62623331670e-02 4.52857661696e-02 4.42752514752e-02 4.36365698621e-02 - 4.36365698621e-02 4.42752514752e-02 4.52857661696e-02 4.62623331670e-02 4.68401774785e-02 4.68264624901e-02 - 4.62258246981e-02 4.51788789706e-02 4.38725463784e-02 4.24686468881e-02 4.10670403681e-02 3.97029159910e-02 - 3.66568505349e-02 3.58243136049e-02 3.49773595797e-02 3.42208946471e-02 3.36893635306e-02 3.34971688966e-02 - 3.36893635306e-02 3.42208946471e-02 3.49773595797e-02 3.58243136049e-02 3.66568505349e-02 3.74259862301e-02 - 3.81345549630e-02 3.88104397494e-02 3.94725484932e-02 4.01041807768e-02 4.06430475235e-02 4.09927131873e-02 - 4.10571769449e-02 4.07924714489e-02 4.02540981079e-02 3.96081166256e-02 3.90842281235e-02 3.88830541657e-02 - 3.90842281235e-02 3.96081166256e-02 4.02540981079e-02 4.07924714489e-02 4.10571769449e-02 4.09927131873e-02 - 4.06430475235e-02 4.01041807768e-02 3.94725484932e-02 3.88104397494e-02 3.81345549630e-02 3.74259862301e-02 - 3.51532871168e-02 3.47182328687e-02 3.42208946471e-02 3.37780927799e-02 3.35158471123e-02 3.35158471123e-02 - 3.37780927799e-02 3.42208946471e-02 3.47182328687e-02 3.51532871168e-02 3.54595415232e-02 3.56312088557e-02 - 3.57044700685e-02 3.57259716101e-02 3.57259716101e-02 3.57044700685e-02 3.56312088557e-02 3.54595415232e-02 - 3.51532871168e-02 3.47182328687e-02 3.42208946471e-02 3.37780927799e-02 3.35158471123e-02 3.35158471123e-02 - 3.37780927799e-02 3.42208946471e-02 3.47182328687e-02 3.51532871168e-02 3.54595415232e-02 3.56312088557e-02 - 3.57044700685e-02 3.57259716101e-02 3.57259716101e-02 3.57044700685e-02 3.56312088557e-02 3.54595415232e-02 - 3.39533984936e-02 3.38709874542e-02 3.36893635306e-02 3.35158471123e-02 3.34454153402e-02 3.35158471123e-02 - 3.36893635306e-02 3.38709874542e-02 3.39533984936e-02 3.38635928392e-02 3.35871770820e-02 3.31615306069e-02 - 3.26483588385e-02 3.21049723875e-02 3.15673758761e-02 3.10465495213e-02 3.05340710560e-02 3.00149219248e-02 - 2.94854041377e-02 2.89691250092e-02 2.85205562719e-02 2.82105864296e-02 2.80994006567e-02 2.82105864296e-02 - 2.85205562719e-02 2.89691250092e-02 2.94854041377e-02 3.00149219248e-02 3.05340710560e-02 3.10465495213e-02 - 3.15673758761e-02 3.21049723875e-02 3.26483588385e-02 3.31615306069e-02 3.35871770820e-02 3.38635928392e-02 - 3.31691643222e-02 3.34071767353e-02 3.34971688966e-02 3.35158471123e-02 3.35158471123e-02 3.34971688966e-02 - 3.34071767353e-02 3.31691643222e-02 3.27229087590e-02 3.20546920774e-02 3.12022017908e-02 3.02357338101e-02 - 2.92302840650e-02 2.82446089484e-02 2.73140021666e-02 2.64534808200e-02 2.56657154446e-02 2.49511167951e-02 - 2.43184216158e-02 2.37914166767e-02 2.34067395586e-02 2.32023283361e-02 2.32023283361e-02 2.34067395586e-02 - 2.37914166767e-02 2.43184216158e-02 2.49511167951e-02 2.56657154446e-02 2.64534808200e-02 2.73140021666e-02 - 2.82446089484e-02 2.92302840650e-02 3.02357338101e-02 3.12022017908e-02 3.20546920774e-02 3.27229087590e-02 - 3.28952522339e-02 3.34071767353e-02 3.36893635306e-02 3.37780927799e-02 3.36893635306e-02 3.34071767353e-02 - 3.28952522339e-02 3.21243272248e-02 3.10978190541e-02 2.98615217076e-02 2.84935612207e-02 2.70818268649e-02 - 2.57019293917e-02 2.44059448105e-02 2.32231030162e-02 2.21666114252e-02 2.12413612776e-02 2.04512222766e-02 - 1.98052910067e-02 1.93203741197e-02 1.90175139009e-02 1.89142861556e-02 1.90175139009e-02 1.93203741197e-02 - 1.98052910067e-02 2.04512222766e-02 2.12413612776e-02 2.21666114252e-02 2.32231030162e-02 2.44059448105e-02 - 2.57019293917e-02 2.70818268649e-02 2.84935612207e-02 2.98615217076e-02 3.10978190541e-02 3.21243272248e-02 - 3.31691643222e-02 3.38709874542e-02 3.42208946471e-02 3.42208946471e-02 3.38709874542e-02 3.31691643222e-02 - 3.21243272248e-02 3.07715106065e-02 2.91781605866e-02 2.74372089612e-02 2.56499234494e-02 2.39063871143e-02 - 2.22726314479e-02 2.07887392229e-02 1.94746684497e-02 1.83376793613e-02 1.73786828448e-02 1.65980023724e-02 - 1.59997599900e-02 1.55924938344e-02 1.53857855201e-02 1.53857855201e-02 1.55924938344e-02 1.59997599900e-02 - 1.65980023724e-02 1.73786828448e-02 1.83376793613e-02 1.94746684497e-02 2.07887392229e-02 2.22726314479e-02 - 2.39063871143e-02 2.56499234494e-02 2.74372089612e-02 2.91781605866e-02 3.07715106065e-02 3.21243272248e-02 - 3.39533984936e-02 3.47182328687e-02 3.49773595797e-02 3.47182328687e-02 3.39533984936e-02 3.27229087590e-02 - 3.10978190541e-02 2.91781605866e-02 2.70827915169e-02 2.49333108373e-02 2.28368095394e-02 2.08735527936e-02 - 1.90940368490e-02 1.75241772421e-02 1.61729889157e-02 1.50389831834e-02 1.41157952825e-02 1.33976732300e-02 - 1.28827341282e-02 1.25723726562e-02 1.24686371753e-02 1.25723726562e-02 1.28827341282e-02 1.33976732300e-02 - 1.41157952825e-02 1.50389831834e-02 1.61729889157e-02 1.75241772421e-02 1.90940368490e-02 2.08735527936e-02 - 2.28368095394e-02 2.49333108373e-02 2.70827915169e-02 2.91781605866e-02 3.10978190541e-02 3.27229087590e-02 - 3.51532871168e-02 3.58243136049e-02 3.58243136049e-02 3.51532871168e-02 3.38635928392e-02 3.20546920774e-02 - 2.98615217076e-02 2.74372089612e-02 2.49333108373e-02 2.24815496090e-02 2.01812628043e-02 1.80960146721e-02 - 1.62588522549e-02 1.46810426016e-02 1.33594815778e-02 1.22825573408e-02 1.14361707830e-02 1.08088949298e-02 - 1.03937663652e-02 1.01870819285e-02 1.01870819285e-02 1.03937663652e-02 1.08088949298e-02 1.14361707830e-02 - 1.22825573408e-02 1.33594815778e-02 1.46810426016e-02 1.62588522549e-02 1.80960146721e-02 2.01812628043e-02 - 2.24815496090e-02 2.49333108373e-02 2.74372089612e-02 2.98615217076e-02 3.20546920774e-02 3.38635928392e-02 - 3.66568505349e-02 3.70689589239e-02 3.66568505349e-02 3.54595415232e-02 3.35871770820e-02 3.12022017908e-02 - 2.84935612207e-02 2.56499234494e-02 2.28368095394e-02 2.01812628043e-02 1.77666865554e-02 1.56375665721e-02 - 1.38094745262e-02 1.22786655737e-02 1.10293847869e-02 1.00404664762e-02 9.29162040305e-03 8.76725594498e-03 - 8.45686847188e-03 8.35413904759e-03 8.45686847188e-03 8.76725594498e-03 9.29162040305e-03 1.00404664762e-02 - 1.10293847869e-02 1.22786655737e-02 1.38094745262e-02 1.56375665721e-02 1.77666865554e-02 2.01812628043e-02 - 2.28368095394e-02 2.56499234494e-02 2.84935612207e-02 3.12022017908e-02 3.35871770820e-02 3.54595415232e-02 - 3.83718132369e-02 3.83718132369e-02 3.74259862301e-02 3.56312088557e-02 3.31615306069e-02 3.02357338101e-02 - 2.70818268649e-02 2.39063871143e-02 2.08735527936e-02 1.80960146721e-02 1.56375665721e-02 1.35231772103e-02 - 1.17508350709e-02 1.03016601350e-02 9.14830218340e-03 8.26229038338e-03 7.61927184895e-03 7.20097316500e-03 - 6.99504538611e-03 6.99504538611e-03 7.20097316500e-03 7.61927184895e-03 8.26229038338e-03 9.14830218340e-03 - 1.03016601350e-02 1.17508350709e-02 1.35231772103e-02 1.56375665721e-02 1.80960146721e-02 2.08735527936e-02 - 2.39063871143e-02 2.70818268649e-02 3.02357338101e-02 3.31615306069e-02 3.56312088557e-02 3.74259862301e-02 - 4.02453701311e-02 3.97029159910e-02 3.81345549630e-02 3.57044700685e-02 3.26483588385e-02 2.92302840650e-02 - 2.57019293917e-02 2.22726314479e-02 1.90940368490e-02 1.62588522549e-02 1.38094745262e-02 1.17508350709e-02 - 1.00633149755e-02 8.71419097250e-03 7.66717366082e-03 6.88914005847e-03 6.35335851926e-03 6.04016501968e-03 - 5.93719631865e-03 6.04016501968e-03 6.35335851926e-03 6.88914005847e-03 7.66717366082e-03 8.71419097250e-03 - 1.00633149755e-02 1.17508350709e-02 1.38094745262e-02 1.62588522549e-02 1.90940368490e-02 2.22726314479e-02 - 2.57019293917e-02 2.92302840650e-02 3.26483588385e-02 3.57044700685e-02 3.81345549630e-02 3.97029159910e-02 - 4.22610610741e-02 4.10670403681e-02 3.88104397494e-02 3.57259716101e-02 3.21049723875e-02 2.82446089484e-02 - 2.44059448105e-02 2.07887392229e-02 1.75241772421e-02 1.46810426016e-02 1.22786655737e-02 1.03016601350e-02 - 8.71419097250e-03 7.47255069610e-03 6.53448601861e-03 5.86418256271e-03 5.43377044817e-03 5.22371135458e-03 - 5.22371135458e-03 5.43377044817e-03 5.86418256271e-03 6.53448601861e-03 7.47255069610e-03 8.71419097250e-03 - 1.03016601350e-02 1.22786655737e-02 1.46810426016e-02 1.75241772421e-02 2.07887392229e-02 2.44059448105e-02 - 2.82446089484e-02 3.21049723875e-02 3.57259716101e-02 3.88104397494e-02 4.10670403681e-02 4.22610610741e-02 - 4.44094609233e-02 4.24686468881e-02 3.94725484932e-02 3.57259716101e-02 3.15673758761e-02 2.73140021666e-02 - 2.32231030162e-02 1.94746684497e-02 1.61729889157e-02 1.33594815778e-02 1.10293847869e-02 9.14830218340e-03 - 7.66717366082e-03 6.53448601861e-03 5.70420021497e-03 5.13913617973e-03 4.81172327806e-03 4.70458873539e-03 - 4.81172327806e-03 5.13913617973e-03 5.70420021497e-03 6.53448601861e-03 7.66717366082e-03 9.14830218340e-03 - 1.10293847869e-02 1.33594815778e-02 1.61729889157e-02 1.94746684497e-02 2.32231030162e-02 2.73140021666e-02 - 3.15673758761e-02 3.57259716101e-02 3.94725484932e-02 4.24686468881e-02 4.44094609233e-02 4.50819394473e-02 - 4.66403070569e-02 4.38725463784e-02 4.01041807768e-02 3.57044700685e-02 3.10465495213e-02 2.64534808200e-02 - 2.21666114252e-02 1.83376793613e-02 1.50389831834e-02 1.22825573408e-02 1.00404664762e-02 8.26229038338e-03 - 6.88914005847e-03 5.86418256271e-03 5.13913617973e-03 4.67692793169e-03 4.45230019628e-03 4.45230019628e-03 - 4.67692793169e-03 5.13913617973e-03 5.86418256271e-03 6.88914005847e-03 8.26229038338e-03 1.00404664762e-02 - 1.22825573408e-02 1.50389831834e-02 1.83376793613e-02 2.21666114252e-02 2.64534808200e-02 3.10465495213e-02 - 3.57044700685e-02 4.01041807768e-02 4.38725463784e-02 4.66403070569e-02 4.81082332430e-02 4.81082332430e-02 - 4.88190878681e-02 4.51788789706e-02 4.06430475235e-02 3.56312088557e-02 3.05340710560e-02 2.56657154446e-02 - 2.12413612776e-02 1.73786828448e-02 1.41157952825e-02 1.14361707830e-02 9.29162040305e-03 7.61927184895e-03 - 6.35335851926e-03 5.43377044817e-03 4.81172327806e-03 4.45230019628e-03 4.33477840900e-03 4.45230019628e-03 - 4.81172327806e-03 5.43377044817e-03 6.35335851926e-03 7.61927184895e-03 9.29162040305e-03 1.14361707830e-02 - 1.41157952825e-02 1.73786828448e-02 2.12413612776e-02 2.56657154446e-02 3.05340710560e-02 3.56312088557e-02 - 4.06430475235e-02 4.51788789706e-02 4.88190878681e-02 5.11831265828e-02 5.20033431247e-02 5.11831265828e-02 - 5.07121410456e-02 4.62258246981e-02 4.09927131873e-02 3.54595415232e-02 3.00149219248e-02 2.49511167951e-02 - 2.04512222766e-02 1.65980023724e-02 1.33976732300e-02 1.08088949298e-02 8.76725594498e-03 7.20097316500e-03 - 6.04016501968e-03 5.22371135458e-03 4.70458873539e-03 4.45230019628e-03 4.45230019628e-03 4.70458873539e-03 - 5.22371135458e-03 6.04016501968e-03 7.20097316500e-03 8.76725594498e-03 1.08088949298e-02 1.33976732300e-02 - 1.65980023724e-02 2.04512222766e-02 2.49511167951e-02 3.00149219248e-02 3.54595415232e-02 4.09927131873e-02 - 4.62258246981e-02 5.07121410456e-02 5.40097122002e-02 5.57595749637e-02 5.57595749637e-02 5.40097122002e-02 - 5.20147259753e-02 4.68264624901e-02 4.10571769449e-02 3.51532871168e-02 2.94854041377e-02 2.43184216158e-02 - 1.98052910067e-02 1.59997599900e-02 1.28827341282e-02 1.03937663652e-02 8.45686847188e-03 6.99504538611e-03 - 5.93719631865e-03 5.22371135458e-03 4.81172327806e-03 4.67692793169e-03 4.81172327806e-03 5.22371135458e-03 - 5.93719631865e-03 6.99504538611e-03 8.45686847188e-03 1.03937663652e-02 1.28827341282e-02 1.59997599900e-02 - 1.98052910067e-02 2.43184216158e-02 2.94854041377e-02 3.51532871168e-02 4.10571769449e-02 4.68264624901e-02 - 5.20147259753e-02 5.61547897924e-02 5.88318176265e-02 5.97584596222e-02 5.88318176265e-02 5.61547897924e-02 - 5.24339557043e-02 4.68401774785e-02 4.07924714489e-02 3.47182328687e-02 2.89691250092e-02 2.37914166767e-02 - 1.93203741197e-02 1.55924938344e-02 1.25723726562e-02 1.01870819285e-02 8.35413904759e-03 6.99504538611e-03 - 6.04016501968e-03 5.43377044817e-03 5.13913617973e-03 5.13913617973e-03 5.43377044817e-03 6.04016501968e-03 - 6.99504538611e-03 8.35413904759e-03 1.01870819285e-02 1.25723726562e-02 1.55924938344e-02 1.93203741197e-02 - 2.37914166767e-02 2.89691250092e-02 3.47182328687e-02 4.07924714489e-02 4.68401774785e-02 5.24339557043e-02 - 5.71251588417e-02 6.05090723285e-02 6.22821499923e-02 6.22821499923e-02 6.05090723285e-02 5.71251588417e-02 - 5.18281863755e-02 4.62623331670e-02 4.02540981079e-02 3.42208946471e-02 2.85205562719e-02 2.34067395586e-02 - 1.90175139009e-02 1.53857855201e-02 1.24686371753e-02 1.01870819285e-02 8.45686847188e-03 7.20097316500e-03 - 6.35335851926e-03 5.86418256271e-03 5.70420021497e-03 5.86418256271e-03 6.35335851926e-03 7.20097316500e-03 - 8.45686847188e-03 1.01870819285e-02 1.24686371753e-02 1.53857855201e-02 1.90175139009e-02 2.34067395586e-02 - 2.85205562719e-02 3.42208946471e-02 4.02540981079e-02 4.62623331670e-02 5.18281863755e-02 5.65511919643e-02 - 6.01184381094e-02 6.23288110708e-02 6.30764730892e-02 6.23288110708e-02 6.01184381094e-02 5.65511919643e-02 - 5.03535465114e-02 4.52857661696e-02 3.96081166256e-02 3.37780927799e-02 2.82105864296e-02 2.32023283361e-02 - 1.89142861556e-02 1.53857855201e-02 1.25723726562e-02 1.03937663652e-02 8.76725594498e-03 7.61927184895e-03 - 6.88914005847e-03 6.53448601861e-03 6.53448601861e-03 6.88914005847e-03 7.61927184895e-03 8.76725594498e-03 - 1.03937663652e-02 1.25723726562e-02 1.53857855201e-02 1.89142861556e-02 2.32023283361e-02 2.82105864296e-02 - 3.37780927799e-02 3.96081166256e-02 4.52857661696e-02 5.03535465114e-02 5.44475263977e-02 5.74105494947e-02 - 5.92810318582e-02 6.01752681104e-02 6.01752681104e-02 5.92810318582e-02 5.74105494947e-02 5.44475263977e-02 - 4.85080722970e-02 4.42752514752e-02 3.90842281235e-02 3.35158471123e-02 2.80994006567e-02 2.32023283361e-02 - 1.90175139009e-02 1.55924938344e-02 1.28827341282e-02 1.08088949298e-02 9.29162040305e-03 8.26229038338e-03 - 7.66717366082e-03 7.47255069610e-03 7.66717366082e-03 8.26229038338e-03 9.29162040305e-03 1.08088949298e-02 - 1.28827341282e-02 1.55924938344e-02 1.90175139009e-02 2.32023283361e-02 2.80994006567e-02 3.35158471123e-02 - 3.90842281235e-02 4.42752514752e-02 4.85080722970e-02 5.13869204668e-02 5.29210396854e-02 5.34983990182e-02 - 5.36143814352e-02 5.36149267734e-02 5.36143814352e-02 5.34983990182e-02 5.29210396854e-02 5.13869204668e-02 - 4.69885184966e-02 4.36365698621e-02 3.88830541657e-02 3.35158471123e-02 2.82105864296e-02 2.34067395586e-02 - 1.93203741197e-02 1.59997599900e-02 1.33976732300e-02 1.14361707830e-02 1.00404664762e-02 9.14830218340e-03 - 8.71419097250e-03 8.71419097250e-03 9.14830218340e-03 1.00404664762e-02 1.14361707830e-02 1.33976732300e-02 - 1.59997599900e-02 1.93203741197e-02 2.34067395586e-02 2.82105864296e-02 3.35158471123e-02 3.88830541657e-02 - 4.36365698621e-02 4.69885184966e-02 4.83941231678e-02 4.79609401864e-02 4.64751950426e-02 4.49279278957e-02 - 4.40123223759e-02 4.40123223759e-02 4.49279278957e-02 4.64751950426e-02 4.79609401864e-02 4.83941231678e-02 - 4.64020316983e-02 4.36365698621e-02 3.90842281235e-02 3.37780927799e-02 2.85205562719e-02 2.37914166767e-02 - 1.98052910067e-02 1.65980023724e-02 1.41157952825e-02 1.22825573408e-02 1.10293847869e-02 1.03016601350e-02 - 1.00633149755e-02 1.03016601350e-02 1.10293847869e-02 1.22825573408e-02 1.41157952825e-02 1.65980023724e-02 - 1.98052910067e-02 2.37914166767e-02 2.85205562719e-02 3.37780927799e-02 3.90842281235e-02 4.36365698621e-02 - 4.64020316983e-02 4.65545163206e-02 4.41366450522e-02 4.02808330656e-02 3.65582592974e-02 3.40771392673e-02 - 3.32338776264e-02 3.40771392673e-02 3.65582592974e-02 4.02808330656e-02 4.41366450522e-02 4.65545163206e-02 - 4.69885184966e-02 4.42752514752e-02 3.96081166256e-02 3.42208946471e-02 2.89691250092e-02 2.43184216158e-02 - 2.04512222766e-02 1.73786828448e-02 1.50389831834e-02 1.33594815778e-02 1.22786655737e-02 1.17508350709e-02 - 1.17508350709e-02 1.22786655737e-02 1.33594815778e-02 1.50389831834e-02 1.73786828448e-02 2.04512222766e-02 - 2.43184216158e-02 2.89691250092e-02 3.42208946471e-02 3.96081166256e-02 4.42752514752e-02 4.69885184966e-02 - 4.65545163206e-02 4.27064575993e-02 3.67025276917e-02 3.07039905741e-02 2.63856510811e-02 2.42761411551e-02 - 2.42761411551e-02 2.63856510811e-02 3.07039905741e-02 3.67025276917e-02 4.27064575993e-02 4.65545163206e-02 - 4.85080722970e-02 4.52857661696e-02 4.02540981079e-02 3.47182328687e-02 2.94854041377e-02 2.49511167951e-02 - 2.12413612776e-02 1.83376793613e-02 1.61729889157e-02 1.46810426016e-02 1.38094745262e-02 1.35231772103e-02 - 1.38094745262e-02 1.46810426016e-02 1.61729889157e-02 1.83376793613e-02 2.12413612776e-02 2.49511167951e-02 - 2.94854041377e-02 3.47182328687e-02 4.02540981079e-02 4.52857661696e-02 4.85080722970e-02 4.83941231678e-02 - 4.41366450522e-02 3.67025276917e-02 2.86292518106e-02 2.23413746600e-02 1.87771308641e-02 1.76819501362e-02 - 1.87771308641e-02 2.23413746600e-02 2.86292518106e-02 3.67025276917e-02 4.41366450522e-02 4.83941231678e-02 - 5.03535465114e-02 4.62623331670e-02 4.07924714489e-02 3.51532871168e-02 3.00149219248e-02 2.56657154446e-02 - 2.21666114252e-02 1.94746684497e-02 1.75241772421e-02 1.62588522549e-02 1.56375665721e-02 1.56375665721e-02 - 1.62588522549e-02 1.75241772421e-02 1.94746684497e-02 2.21666114252e-02 2.56657154446e-02 3.00149219248e-02 - 3.51532871168e-02 4.07924714489e-02 4.62623331670e-02 5.03535465114e-02 5.13869204668e-02 4.79609401864e-02 - 4.02808330656e-02 3.07039905741e-02 2.23413746600e-02 1.69819929531e-02 1.46090879135e-02 1.46090879135e-02 - 1.69819929531e-02 2.23413746600e-02 3.07039905741e-02 4.02808330656e-02 4.79609401864e-02 5.13869204668e-02 - 5.18281863755e-02 4.68401774785e-02 4.10571769449e-02 3.54595415232e-02 3.05340710560e-02 2.64534808200e-02 - 2.32231030162e-02 2.07887392229e-02 1.90940368490e-02 1.80960146721e-02 1.77666865554e-02 1.80960146721e-02 - 1.90940368490e-02 2.07887392229e-02 2.32231030162e-02 2.64534808200e-02 3.05340710560e-02 3.54595415232e-02 - 4.10571769449e-02 4.68401774785e-02 5.18281863755e-02 5.44475263977e-02 5.29210396854e-02 4.64751950426e-02 - 3.65582592974e-02 2.63856510811e-02 1.87771308641e-02 1.46090879135e-02 1.33581335706e-02 1.46090879135e-02 - 1.87771308641e-02 2.63856510811e-02 3.65582592974e-02 4.64751950426e-02 5.29210396854e-02 5.44475263977e-02 - 5.24339557043e-02 4.68264624901e-02 4.09927131873e-02 3.56312088557e-02 3.10465495213e-02 2.73140021666e-02 - 2.44059448105e-02 2.22726314479e-02 2.08735527936e-02 2.01812628043e-02 2.01812628043e-02 2.08735527936e-02 - 2.22726314479e-02 2.44059448105e-02 2.73140021666e-02 3.10465495213e-02 3.56312088557e-02 4.09927131873e-02 - 4.68264624901e-02 5.24339557043e-02 5.65511919643e-02 5.74105494947e-02 5.34983990182e-02 4.49279278957e-02 - 3.40771392673e-02 2.42761411551e-02 1.76819501362e-02 1.46090879135e-02 1.46090879135e-02 1.76819501362e-02 - 2.42761411551e-02 3.40771392673e-02 4.49279278957e-02 5.34983990182e-02 5.74105494947e-02 5.65511919643e-02 - 5.20147259753e-02 4.62258246981e-02 4.06430475235e-02 3.57044700685e-02 3.15673758761e-02 2.82446089484e-02 - 2.57019293917e-02 2.39063871143e-02 2.28368095394e-02 2.24815496090e-02 2.28368095394e-02 2.39063871143e-02 - 2.57019293917e-02 2.82446089484e-02 3.15673758761e-02 3.57044700685e-02 4.06430475235e-02 4.62258246981e-02 - 5.20147259753e-02 5.71251588417e-02 6.01184381094e-02 5.92810318582e-02 5.36143814352e-02 4.40123223759e-02 - 3.32338776264e-02 2.42761411551e-02 1.87771308641e-02 1.69819929531e-02 1.87771308641e-02 2.42761411551e-02 - 3.32338776264e-02 4.40123223759e-02 5.36143814352e-02 5.92810318582e-02 6.01184381094e-02 5.71251588417e-02 - 5.07121410456e-02 4.51788789706e-02 4.01041807768e-02 3.57259716101e-02 3.21049723875e-02 2.92302840650e-02 - 2.70818268649e-02 2.56499234494e-02 2.49333108373e-02 2.49333108373e-02 2.56499234494e-02 2.70818268649e-02 - 2.92302840650e-02 3.21049723875e-02 3.57259716101e-02 4.01041807768e-02 4.51788789706e-02 5.07121410456e-02 - 5.61547897924e-02 6.05090723285e-02 6.23288110708e-02 6.01752681104e-02 5.36149267734e-02 4.40123223759e-02 - 3.40771392673e-02 2.63856510811e-02 2.23413746600e-02 2.23413746600e-02 2.63856510811e-02 3.40771392673e-02 - 4.40123223759e-02 5.36149267734e-02 6.01752681104e-02 6.23288110708e-02 6.05090723285e-02 5.61547897924e-02 - 4.88190878681e-02 4.38725463784e-02 3.94725484932e-02 3.57259716101e-02 3.26483588385e-02 3.02357338101e-02 - 2.84935612207e-02 2.74372089612e-02 2.70827915169e-02 2.74372089612e-02 2.84935612207e-02 3.02357338101e-02 - 3.26483588385e-02 3.57259716101e-02 3.94725484932e-02 4.38725463784e-02 4.88190878681e-02 5.40097122002e-02 - 5.88318176265e-02 6.22821499923e-02 6.30764730892e-02 6.01752681104e-02 5.36143814352e-02 4.49279278957e-02 - 3.65582592974e-02 3.07039905741e-02 2.86292518106e-02 3.07039905741e-02 3.65582592974e-02 4.49279278957e-02 - 5.36143814352e-02 6.01752681104e-02 6.30764730892e-02 6.22821499923e-02 5.88318176265e-02 5.40097122002e-02 - 4.66403070569e-02 4.24686468881e-02 3.88104397494e-02 3.57044700685e-02 3.31615306069e-02 3.12022017908e-02 - 2.98615217076e-02 2.91781605866e-02 2.91781605866e-02 2.98615217076e-02 3.12022017908e-02 3.31615306069e-02 - 3.57044700685e-02 3.88104397494e-02 4.24686468881e-02 4.66403070569e-02 5.11831265828e-02 5.57595749637e-02 - 5.97584596222e-02 6.22821499923e-02 6.23288110708e-02 5.92810318582e-02 5.34983990182e-02 4.64751950426e-02 - 4.02808330656e-02 3.67025276917e-02 3.67025276917e-02 4.02808330656e-02 4.64751950426e-02 5.34983990182e-02 - 5.92810318582e-02 6.23288110708e-02 6.22821499923e-02 5.97584596222e-02 5.57595749637e-02 5.11831265828e-02 - 4.44094609233e-02 4.10670403681e-02 3.81345549630e-02 3.56312088557e-02 3.35871770820e-02 3.20546920774e-02 - 3.10978190541e-02 3.07715106065e-02 3.10978190541e-02 3.20546920774e-02 3.35871770820e-02 3.56312088557e-02 - 3.81345549630e-02 4.10670403681e-02 4.44094609233e-02 4.81082332430e-02 5.20033431247e-02 5.57595749637e-02 - 5.88318176265e-02 6.05090723285e-02 6.01184381094e-02 5.74105494947e-02 5.29210396854e-02 4.79609401864e-02 - 4.41366450522e-02 4.27064575993e-02 4.41366450522e-02 4.79609401864e-02 5.29210396854e-02 5.74105494947e-02 - 6.01184381094e-02 6.05090723285e-02 5.88318176265e-02 5.57595749637e-02 5.20033431247e-02 4.81082332430e-02 - 4.22610610741e-02 3.97029159910e-02 3.74259862301e-02 3.54595415232e-02 3.38635928392e-02 3.27229087590e-02 - 3.21243272248e-02 3.21243272248e-02 3.27229087590e-02 3.38635928392e-02 3.54595415232e-02 3.74259862301e-02 - 3.97029159910e-02 4.22610610741e-02 4.50819394473e-02 4.81082332430e-02 5.11831265828e-02 5.40097122002e-02 - 5.61547897924e-02 5.71251588417e-02 5.65511919643e-02 5.44475263977e-02 5.13869204668e-02 4.83941231678e-02 - 4.65545163206e-02 4.65545163206e-02 4.83941231678e-02 5.13869204668e-02 5.44475263977e-02 5.65511919643e-02 - 5.71251588417e-02 5.61547897924e-02 5.40097122002e-02 5.11831265828e-02 4.81082332430e-02 4.50819394473e-02 - 4.57409612273e-02 4.40291518527e-02 4.23378898536e-02 4.07924714489e-02 3.95849180057e-02 3.89160663350e-02 - 3.89160663350e-02 3.95849180057e-02 4.07924714489e-02 4.23378898536e-02 4.40291518527e-02 4.57409612273e-02 - 4.74313143781e-02 4.91148354625e-02 5.08044555558e-02 5.24477482650e-02 5.38883507401e-02 5.48714786192e-02 - 5.51031089527e-02 5.43692149489e-02 5.26931433274e-02 5.04463447592e-02 4.83002627794e-02 4.69885184966e-02 - 4.69885184966e-02 4.83002627794e-02 5.04463447592e-02 5.26931433274e-02 5.43692149489e-02 5.51031089527e-02 - 5.48714786192e-02 5.38883507401e-02 5.24477482650e-02 5.08044555558e-02 4.91148354625e-02 4.74313143781e-02 - 4.40291518527e-02 4.27763236460e-02 4.14579289512e-02 4.02540981079e-02 3.93968315223e-02 3.90848689472e-02 - 3.93968315223e-02 4.02540981079e-02 4.14579289512e-02 4.27763236460e-02 4.40291518527e-02 4.51323632879e-02 - 4.60913389830e-02 4.69561004766e-02 4.77625301985e-02 4.84855850881e-02 4.90231496620e-02 4.92182336225e-02 - 4.89192305177e-02 4.80677366203e-02 4.67810667612e-02 4.53738413591e-02 4.42752514752e-02 4.38595264834e-02 - 4.42752514752e-02 4.53738413591e-02 4.67810667612e-02 4.80677366203e-02 4.89192305177e-02 4.92182336225e-02 - 4.90231496620e-02 4.84855850881e-02 4.77625301985e-02 4.69561004766e-02 4.60913389830e-02 4.51323632879e-02 - 4.23378898536e-02 4.14579289512e-02 4.04742233092e-02 3.96081166256e-02 3.90976289629e-02 3.90976289629e-02 - 3.96081166256e-02 4.04742233092e-02 4.14579289512e-02 4.23378898536e-02 4.29832635915e-02 4.33721592307e-02 - 4.35604474537e-02 4.36277000850e-02 4.36277000850e-02 4.35604474537e-02 4.33721592307e-02 4.29832635915e-02 - 4.23378898536e-02 4.14579289512e-02 4.04742233092e-02 3.96081166256e-02 3.90976289629e-02 3.90976289629e-02 - 3.96081166256e-02 4.04742233092e-02 4.14579289512e-02 4.23378898536e-02 4.29832635915e-02 4.33721592307e-02 - 4.35604474537e-02 4.36277000850e-02 4.36277000850e-02 4.35604474537e-02 4.33721592307e-02 4.29832635915e-02 - 4.07924714489e-02 4.02540981079e-02 3.96081166256e-02 3.90842281235e-02 3.88830541657e-02 3.90842281235e-02 - 3.96081166256e-02 4.02540981079e-02 4.07924714489e-02 4.10571769449e-02 4.09927131873e-02 4.06430475235e-02 - 4.01041807768e-02 3.94725484932e-02 3.88104397494e-02 3.81345549630e-02 3.74259862301e-02 3.66568505349e-02 - 3.58243136049e-02 3.49773595797e-02 3.42208946471e-02 3.36893635306e-02 3.34971688966e-02 3.36893635306e-02 - 3.42208946471e-02 3.49773595797e-02 3.58243136049e-02 3.66568505349e-02 3.74259862301e-02 3.81345549630e-02 - 3.88104397494e-02 3.94725484932e-02 4.01041807768e-02 4.06430475235e-02 4.09927131873e-02 4.10571769449e-02 - 3.95849180057e-02 3.93968315223e-02 3.90976289629e-02 3.88830541657e-02 3.88830541657e-02 3.90976289629e-02 - 3.93968315223e-02 3.95849180057e-02 3.94908104948e-02 3.90347179512e-02 3.82415861113e-02 3.72078996967e-02 - 3.60511821341e-02 3.48695445110e-02 3.37228748044e-02 3.26341221073e-02 3.16041856284e-02 3.06330408871e-02 - 2.97391273192e-02 2.89691250092e-02 2.83925891295e-02 2.80812943983e-02 2.80812943983e-02 2.83925891295e-02 - 2.89691250092e-02 2.97391273192e-02 3.06330408871e-02 3.16041856284e-02 3.26341221073e-02 3.37228748044e-02 - 3.48695445110e-02 3.60511821341e-02 3.72078996967e-02 3.82415861113e-02 3.90347179512e-02 3.94908104948e-02 - 3.89160663350e-02 3.90848689472e-02 3.90976289629e-02 3.90842281235e-02 3.90976289629e-02 3.90848689472e-02 - 3.89160663350e-02 3.84534160516e-02 3.76190713504e-02 3.64263171972e-02 3.49654910486e-02 3.33624200108e-02 - 3.17358390207e-02 3.01717861136e-02 2.87187367840e-02 2.73972646659e-02 2.62153172241e-02 2.51823253991e-02 - 2.43184216158e-02 2.36566460915e-02 2.32368358951e-02 2.30924993956e-02 2.32368358951e-02 2.36566460915e-02 - 2.43184216158e-02 2.51823253991e-02 2.62153172241e-02 2.73972646659e-02 2.87187367840e-02 3.01717861136e-02 - 3.17358390207e-02 3.33624200108e-02 3.49654910486e-02 3.64263171972e-02 3.76190713504e-02 3.84534160516e-02 - 3.89160663350e-02 3.93968315223e-02 3.96081166256e-02 3.96081166256e-02 3.93968315223e-02 3.89160663350e-02 - 3.80886538087e-02 3.68707660171e-02 3.52857897121e-02 3.34242157073e-02 3.14154606035e-02 2.93901320501e-02 - 2.74512061786e-02 2.56635113913e-02 2.40594329852e-02 2.26519365039e-02 2.14468462049e-02 2.04512222766e-02 - 1.96777557044e-02 1.91448778653e-02 1.88720574247e-02 1.88720574247e-02 1.91448778653e-02 1.96777557044e-02 - 2.04512222766e-02 2.14468462049e-02 2.26519365039e-02 2.40594329852e-02 2.56635113913e-02 2.74512061786e-02 - 2.93901320501e-02 3.14154606035e-02 3.34242157073e-02 3.52857897121e-02 3.68707660171e-02 3.80886538087e-02 - 3.95849180057e-02 4.02540981079e-02 4.04742233092e-02 4.02540981079e-02 3.95849180057e-02 3.84534160516e-02 - 3.68707660171e-02 3.48956024912e-02 3.26363277502e-02 3.02323588099e-02 2.78244998346e-02 2.55281844546e-02 - 2.34202555044e-02 2.15413174517e-02 1.99070659239e-02 1.85201445811e-02 1.73786828448e-02 1.64818809732e-02 - 1.58329883187e-02 1.54388806266e-02 1.53065353883e-02 1.54388806266e-02 1.58329883187e-02 1.64818809732e-02 - 1.73786828448e-02 1.85201445811e-02 1.99070659239e-02 2.15413174517e-02 2.34202555044e-02 2.55281844546e-02 - 2.78244998346e-02 3.02323588099e-02 3.26363277502e-02 3.48956024912e-02 3.68707660171e-02 3.84534160516e-02 - 4.07924714489e-02 4.14579289512e-02 4.14579289512e-02 4.07924714489e-02 3.94908104948e-02 3.76190713504e-02 - 3.52857897121e-02 3.26363277502e-02 2.98349904445e-02 2.70402901784e-02 2.43819637041e-02 2.19482820950e-02 - 1.97871783123e-02 1.79167348748e-02 1.63370205752e-02 1.50389831834e-02 1.40109856905e-02 1.32437842255e-02 - 1.27327884289e-02 1.24770996440e-02 1.24770996440e-02 1.27327884289e-02 1.32437842255e-02 1.40109856905e-02 - 1.50389831834e-02 1.63370205752e-02 1.79167348748e-02 1.97871783123e-02 2.19482820950e-02 2.43819637041e-02 - 2.70402901784e-02 2.98349904445e-02 3.26363277502e-02 3.52857897121e-02 3.76190713504e-02 3.94908104948e-02 - 4.23378898536e-02 4.27763236460e-02 4.23378898536e-02 4.10571769449e-02 3.90347179512e-02 3.64263171972e-02 - 3.34242157073e-02 3.02323588099e-02 2.70402901784e-02 2.40011711299e-02 2.12198093897e-02 1.87538902948e-02 - 1.66250325509e-02 1.48317912783e-02 1.33594815778e-02 1.21873907787e-02 1.12951380995e-02 1.06671499136e-02 - 1.02937156151e-02 1.01697655067e-02 1.02937156151e-02 1.06671499136e-02 1.12951380995e-02 1.21873907787e-02 - 1.33594815778e-02 1.48317912783e-02 1.66250325509e-02 1.87538902948e-02 2.12198093897e-02 2.40011711299e-02 - 2.70402901784e-02 3.02323588099e-02 3.34242157073e-02 3.64263171972e-02 3.90347179512e-02 4.10571769449e-02 - 4.40291518527e-02 4.40291518527e-02 4.29832635915e-02 4.09927131873e-02 3.82415861113e-02 3.49654910486e-02 - 3.14154606035e-02 2.78244998346e-02 2.43819637041e-02 2.12198093897e-02 1.84129279741e-02 1.59907282434e-02 - 1.39522993746e-02 1.22786655737e-02 1.09414577715e-02 9.91029781221e-03 9.15892896774e-03 8.66817035987e-03 - 8.42580807925e-03 8.42580807925e-03 8.66817035987e-03 9.15892896774e-03 9.91029781221e-03 1.09414577715e-02 - 1.22786655737e-02 1.39522993746e-02 1.59907282434e-02 1.84129279741e-02 2.12198093897e-02 2.43819637041e-02 - 2.78244998346e-02 3.14154606035e-02 3.49654910486e-02 3.82415861113e-02 4.09927131873e-02 4.29832635915e-02 - 4.57409612273e-02 4.51323632879e-02 4.33721592307e-02 4.06430475235e-02 3.72078996967e-02 3.33624200108e-02 - 2.93901320501e-02 2.55281844546e-02 2.19482820950e-02 1.87538902948e-02 1.59907282434e-02 1.36633879542e-02 - 1.17508350709e-02 1.02181471415e-02 9.02578945364e-03 8.13716815266e-03 7.52314503521e-03 7.16308508658e-03 - 7.04448483440e-03 7.16308508658e-03 7.52314503521e-03 8.13716815266e-03 9.02578945364e-03 1.02181471415e-02 - 1.17508350709e-02 1.36633879542e-02 1.59907282434e-02 1.87538902948e-02 2.19482820950e-02 2.55281844546e-02 - 2.93901320501e-02 3.33624200108e-02 3.72078996967e-02 4.06430475235e-02 4.33721592307e-02 4.51323632879e-02 - 4.74313143781e-02 4.60913389830e-02 4.35604474537e-02 4.01041807768e-02 3.60511821341e-02 3.17358390207e-02 - 2.74512061786e-02 2.34202555044e-02 1.97871783123e-02 1.66250325509e-02 1.39522993746e-02 1.17508350709e-02 - 9.98127039361e-03 8.59555582378e-03 7.54684340873e-03 6.79567554150e-03 6.31209415558e-03 6.07562992209e-03 - 6.07562992209e-03 6.31209415558e-03 6.79567554150e-03 7.54684340873e-03 8.59555582378e-03 9.98127039361e-03 - 1.17508350709e-02 1.39522993746e-02 1.66250325509e-02 1.97871783123e-02 2.34202555044e-02 2.74512061786e-02 - 3.17358390207e-02 3.60511821341e-02 4.01041807768e-02 4.35604474537e-02 4.60913389830e-02 4.74313143781e-02 - 4.91148354625e-02 4.69561004766e-02 4.36277000850e-02 3.94725484932e-02 3.48695445110e-02 3.01717861136e-02 - 2.56635113913e-02 2.15413174517e-02 1.79167348748e-02 1.48317912783e-02 1.22786655737e-02 1.02181471415e-02 - 8.59555582378e-03 7.35383003280e-03 6.44245195186e-03 5.82127807001e-03 5.46093720174e-03 5.34296096392e-03 - 5.46093720174e-03 5.82127807001e-03 6.44245195186e-03 7.35383003280e-03 8.59555582378e-03 1.02181471415e-02 - 1.22786655737e-02 1.48317912783e-02 1.79167348748e-02 2.15413174517e-02 2.56635113913e-02 3.01717861136e-02 - 3.48695445110e-02 3.94725484932e-02 4.36277000850e-02 4.69561004766e-02 4.91148354625e-02 4.98633146719e-02 - 5.08044555558e-02 4.77625301985e-02 4.36277000850e-02 3.88104397494e-02 3.37228748044e-02 2.87187367840e-02 - 2.40594329852e-02 1.99070659239e-02 1.63370205752e-02 1.33594815778e-02 1.09414577715e-02 9.02578945364e-03 - 7.54684340873e-03 6.44245195186e-03 5.66079261571e-03 5.16243150929e-03 4.92029966810e-03 4.92029966810e-03 - 5.16243150929e-03 5.66079261571e-03 6.44245195186e-03 7.54684340873e-03 9.02578945364e-03 1.09414577715e-02 - 1.33594815778e-02 1.63370205752e-02 1.99070659239e-02 2.40594329852e-02 2.87187367840e-02 3.37228748044e-02 - 3.88104397494e-02 4.36277000850e-02 4.77625301985e-02 5.08044555558e-02 5.24194501424e-02 5.24194501424e-02 - 5.24477482650e-02 4.84855850881e-02 4.35604474537e-02 3.81345549630e-02 3.26341221073e-02 2.73972646659e-02 - 2.26519365039e-02 1.85201445811e-02 1.50389831834e-02 1.21873907787e-02 9.91029781221e-03 8.13716815266e-03 - 6.79567554150e-03 5.82127807001e-03 5.16243150929e-03 4.78210810048e-03 4.65785937656e-03 4.78210810048e-03 - 5.16243150929e-03 5.82127807001e-03 6.79567554150e-03 8.13716815266e-03 9.91029781221e-03 1.21873907787e-02 - 1.50389831834e-02 1.85201445811e-02 2.26519365039e-02 2.73972646659e-02 3.26341221073e-02 3.81345549630e-02 - 4.35604474537e-02 4.84855850881e-02 5.24477482650e-02 5.50251512552e-02 5.59201471811e-02 5.50251512552e-02 - 5.38883507401e-02 4.90231496620e-02 4.33721592307e-02 3.74259862301e-02 3.16041856284e-02 2.62153172241e-02 - 2.14468462049e-02 1.73786828448e-02 1.40109856905e-02 1.12951380995e-02 9.15892896774e-03 7.52314503521e-03 - 6.31209415558e-03 5.46093720174e-03 4.92029966810e-03 4.65785937656e-03 4.65785937656e-03 4.92029966810e-03 - 5.46093720174e-03 6.31209415558e-03 7.52314503521e-03 9.15892896774e-03 1.12951380995e-02 1.40109856905e-02 - 1.73786828448e-02 2.14468462049e-02 2.62153172241e-02 3.16041856284e-02 3.74259862301e-02 4.33721592307e-02 - 4.90231496620e-02 5.38883507401e-02 5.74762428735e-02 5.93841418824e-02 5.93841418824e-02 5.74762428735e-02 - 5.48714786192e-02 4.92182336225e-02 4.29832635915e-02 3.66568505349e-02 3.06330408871e-02 2.51823253991e-02 - 2.04512222766e-02 1.64818809732e-02 1.32437842255e-02 1.06671499136e-02 8.66817035987e-03 7.16308508658e-03 - 6.07562992209e-03 5.34296096392e-03 4.92029966810e-03 4.78210810048e-03 4.92029966810e-03 5.34296096392e-03 - 6.07562992209e-03 7.16308508658e-03 8.66817035987e-03 1.06671499136e-02 1.32437842255e-02 1.64818809732e-02 - 2.04512222766e-02 2.51823253991e-02 3.06330408871e-02 3.66568505349e-02 4.29832635915e-02 4.92182336225e-02 - 5.48714786192e-02 5.94150808572e-02 6.23688231248e-02 6.33941825467e-02 6.23688231248e-02 5.94150808572e-02 - 5.51031089527e-02 4.89192305177e-02 4.23378898536e-02 3.58243136049e-02 2.97391273192e-02 2.43184216158e-02 - 1.96777557044e-02 1.58329883187e-02 1.27327884289e-02 1.02937156151e-02 8.42580807925e-03 7.04448483440e-03 - 6.07562992209e-03 5.46093720174e-03 5.16243150929e-03 5.16243150929e-03 5.46093720174e-03 6.07562992209e-03 - 7.04448483440e-03 8.42580807925e-03 1.02937156151e-02 1.27327884289e-02 1.58329883187e-02 1.96777557044e-02 - 2.43184216158e-02 2.97391273192e-02 3.58243136049e-02 4.23378898536e-02 4.89192305177e-02 5.51031089527e-02 - 6.03694423859e-02 6.42180018992e-02 6.62522137956e-02 6.62522137956e-02 6.42180018992e-02 6.03694423859e-02 - 5.43692149489e-02 4.80677366203e-02 4.14579289512e-02 3.49773595797e-02 2.89691250092e-02 2.36566460915e-02 - 1.91448778653e-02 1.54388806266e-02 1.24770996440e-02 1.01697655067e-02 8.42580807925e-03 7.16308508658e-03 - 6.31209415558e-03 5.82127807001e-03 5.66079261571e-03 5.82127807001e-03 6.31209415558e-03 7.16308508658e-03 - 8.42580807925e-03 1.01697655067e-02 1.24770996440e-02 1.54388806266e-02 1.91448778653e-02 2.36566460915e-02 - 2.89691250092e-02 3.49773595797e-02 4.14579289512e-02 4.80677366203e-02 5.43692149489e-02 5.98878714669e-02 - 6.41840706496e-02 6.69101294891e-02 6.78442738531e-02 6.69101294891e-02 6.41840706496e-02 5.98878714669e-02 - 5.26931433274e-02 4.67810667612e-02 4.04742233092e-02 3.42208946471e-02 2.83925891295e-02 2.32368358951e-02 - 1.88720574247e-02 1.53065353883e-02 1.24770996440e-02 1.02937156151e-02 8.66817035987e-03 7.52314503521e-03 - 6.79567554150e-03 6.44245195186e-03 6.44245195186e-03 6.79567554150e-03 7.52314503521e-03 8.66817035987e-03 - 1.02937156151e-02 1.24770996440e-02 1.53065353883e-02 1.88720574247e-02 2.32368358951e-02 2.83925891295e-02 - 3.42208946471e-02 4.04742233092e-02 4.67810667612e-02 5.26931433274e-02 5.77843769256e-02 6.17513938278e-02 - 6.44394828494e-02 6.57918464265e-02 6.57918464265e-02 6.44394828494e-02 6.17513938278e-02 5.77843769256e-02 - 5.04463447592e-02 4.53738413591e-02 3.96081166256e-02 3.36893635306e-02 2.80812943983e-02 2.30924993956e-02 - 1.88720574247e-02 1.54388806266e-02 1.27327884289e-02 1.06671499136e-02 9.15892896774e-03 8.13716815266e-03 - 7.54684340873e-03 7.35383003280e-03 7.54684340873e-03 8.13716815266e-03 9.15892896774e-03 1.06671499136e-02 - 1.27327884289e-02 1.54388806266e-02 1.88720574247e-02 2.30924993956e-02 2.80812943983e-02 3.36893635306e-02 - 3.96081166256e-02 4.53738413591e-02 5.04463447592e-02 5.43925934286e-02 5.70772559013e-02 5.86758842735e-02 - 5.94868177545e-02 5.97323039443e-02 5.94868177545e-02 5.86758842735e-02 5.70772559013e-02 5.43925934286e-02 - 4.83002627794e-02 4.42752514752e-02 3.90976289629e-02 3.34971688966e-02 2.80812943983e-02 2.32368358951e-02 - 1.91448778653e-02 1.58329883187e-02 1.32437842255e-02 1.12951380995e-02 9.91029781221e-03 9.02578945364e-03 - 8.59555582378e-03 8.59555582378e-03 9.02578945364e-03 9.91029781221e-03 1.12951380995e-02 1.32437842255e-02 - 1.58329883187e-02 1.91448778653e-02 2.32368358951e-02 2.80812943983e-02 3.34971688966e-02 3.90976289629e-02 - 4.42752514752e-02 4.83002627794e-02 5.06194135765e-02 5.12221625406e-02 5.07010770424e-02 4.98718618187e-02 - 4.93308963719e-02 4.93308963719e-02 4.98718618187e-02 5.07010770424e-02 5.12221625406e-02 5.06194135765e-02 - 4.69885184966e-02 4.38595264834e-02 3.90976289629e-02 3.36893635306e-02 2.83925891295e-02 2.36566460915e-02 - 1.96777557044e-02 1.64818809732e-02 1.40109856905e-02 1.21873907787e-02 1.09414577715e-02 1.02181471415e-02 - 9.98127039361e-03 1.02181471415e-02 1.09414577715e-02 1.21873907787e-02 1.40109856905e-02 1.64818809732e-02 - 1.96777557044e-02 2.36566460915e-02 2.83925891295e-02 3.36893635306e-02 3.90976289629e-02 4.38595264834e-02 - 4.69885184966e-02 4.76689314688e-02 4.58777097769e-02 4.26203265537e-02 3.93541671489e-02 3.71417160544e-02 - 3.63849623957e-02 3.71417160544e-02 3.93541671489e-02 4.26203265537e-02 4.58777097769e-02 4.76689314688e-02 - 4.69885184966e-02 4.42752514752e-02 3.96081166256e-02 3.42208946471e-02 2.89691250092e-02 2.43184216158e-02 - 2.04512222766e-02 1.73786828448e-02 1.50389831834e-02 1.33594815778e-02 1.22786655737e-02 1.17508350709e-02 - 1.17508350709e-02 1.22786655737e-02 1.33594815778e-02 1.50389831834e-02 1.73786828448e-02 2.04512222766e-02 - 2.43184216158e-02 2.89691250092e-02 3.42208946471e-02 3.96081166256e-02 4.42752514752e-02 4.69885184966e-02 - 4.65545163206e-02 4.27064575993e-02 3.67025276917e-02 3.07039905741e-02 2.63856510811e-02 2.42761411551e-02 - 2.42761411551e-02 2.63856510811e-02 3.07039905741e-02 3.67025276917e-02 4.27064575993e-02 4.65545163206e-02 - 4.83002627794e-02 4.53738413591e-02 4.04742233092e-02 3.49773595797e-02 2.97391273192e-02 2.51823253991e-02 - 2.14468462049e-02 1.85201445811e-02 1.63370205752e-02 1.48317912783e-02 1.39522993746e-02 1.36633879542e-02 - 1.39522993746e-02 1.48317912783e-02 1.63370205752e-02 1.85201445811e-02 2.14468462049e-02 2.51823253991e-02 - 2.97391273192e-02 3.49773595797e-02 4.04742233092e-02 4.53738413591e-02 4.83002627794e-02 4.76689314688e-02 - 4.27064575993e-02 3.45455630665e-02 2.59250062413e-02 1.93490286376e-02 1.56860392578e-02 1.45732066269e-02 - 1.56860392578e-02 1.93490286376e-02 2.59250062413e-02 3.45455630665e-02 4.27064575993e-02 4.76689314688e-02 - 5.04463447592e-02 4.67810667612e-02 4.14579289512e-02 3.58243136049e-02 3.06330408871e-02 2.62153172241e-02 - 2.26519365039e-02 1.99070659239e-02 1.79167348748e-02 1.66250325509e-02 1.59907282434e-02 1.59907282434e-02 - 1.66250325509e-02 1.79167348748e-02 1.99070659239e-02 2.26519365039e-02 2.62153172241e-02 3.06330408871e-02 - 3.58243136049e-02 4.14579289512e-02 4.67810667612e-02 5.04463447592e-02 5.06194135765e-02 4.58777097769e-02 - 3.67025276917e-02 2.59250062413e-02 1.69491736420e-02 1.14596764125e-02 9.13060134292e-03 9.13060134292e-03 - 1.14596764125e-02 1.69491736420e-02 2.59250062413e-02 3.67025276917e-02 4.58777097769e-02 5.06194135765e-02 - 5.26931433274e-02 4.80677366203e-02 4.23378898536e-02 3.66568505349e-02 3.16041856284e-02 2.73972646659e-02 - 2.40594329852e-02 2.15413174517e-02 1.97871783123e-02 1.87538902948e-02 1.84129279741e-02 1.87538902948e-02 - 1.97871783123e-02 2.15413174517e-02 2.40594329852e-02 2.73972646659e-02 3.16041856284e-02 3.66568505349e-02 - 4.23378898536e-02 4.80677366203e-02 5.26931433274e-02 5.43925934286e-02 5.12221625406e-02 4.26203265537e-02 - 3.07039905741e-02 1.93490286376e-02 1.14596764125e-02 7.45857574908e-03 6.32692063078e-03 7.45857574908e-03 - 1.14596764125e-02 1.93490286376e-02 3.07039905741e-02 4.26203265537e-02 5.12221625406e-02 5.43925934286e-02 - 5.43692149489e-02 4.89192305177e-02 4.29832635915e-02 3.74259862301e-02 3.26341221073e-02 2.87187367840e-02 - 2.56635113913e-02 2.34202555044e-02 2.19482820950e-02 2.12198093897e-02 2.12198093897e-02 2.19482820950e-02 - 2.34202555044e-02 2.56635113913e-02 2.87187367840e-02 3.26341221073e-02 3.74259862301e-02 4.29832635915e-02 - 4.89192305177e-02 5.43692149489e-02 5.77843769256e-02 5.70772559013e-02 5.07010770424e-02 3.93541671489e-02 - 2.63856510811e-02 1.56860392578e-02 9.13060134292e-03 6.32692063078e-03 6.32692063078e-03 9.13060134292e-03 - 1.56860392578e-02 2.63856510811e-02 3.93541671489e-02 5.07010770424e-02 5.70772559013e-02 5.77843769256e-02 - 5.51031089527e-02 4.92182336225e-02 4.33721592307e-02 3.81345549630e-02 3.37228748044e-02 3.01717861136e-02 - 2.74512061786e-02 2.55281844546e-02 2.43819637041e-02 2.40011711299e-02 2.43819637041e-02 2.55281844546e-02 - 2.74512061786e-02 3.01717861136e-02 3.37228748044e-02 3.81345549630e-02 4.33721592307e-02 4.92182336225e-02 - 5.51031089527e-02 5.98878714669e-02 6.17513938278e-02 5.86758842735e-02 4.98718618187e-02 3.71417160544e-02 - 2.42761411551e-02 1.45732066269e-02 9.13060134292e-03 7.45857574908e-03 9.13060134292e-03 1.45732066269e-02 - 2.42761411551e-02 3.71417160544e-02 4.98718618187e-02 5.86758842735e-02 6.17513938278e-02 5.98878714669e-02 - 5.48714786192e-02 4.90231496620e-02 4.35604474537e-02 3.88104397494e-02 3.48695445110e-02 3.17358390207e-02 - 2.93901320501e-02 2.78244998346e-02 2.70402901784e-02 2.70402901784e-02 2.78244998346e-02 2.93901320501e-02 - 3.17358390207e-02 3.48695445110e-02 3.88104397494e-02 4.35604474537e-02 4.90231496620e-02 5.48714786192e-02 - 6.03694423859e-02 6.41840706496e-02 6.44394828494e-02 5.94868177545e-02 4.93308963719e-02 3.63849623957e-02 - 2.42761411551e-02 1.56860392578e-02 1.14596764125e-02 1.14596764125e-02 1.56860392578e-02 2.42761411551e-02 - 3.63849623957e-02 4.93308963719e-02 5.94868177545e-02 6.44394828494e-02 6.41840706496e-02 6.03694423859e-02 - 5.38883507401e-02 4.84855850881e-02 4.36277000850e-02 3.94725484932e-02 3.60511821341e-02 3.33624200108e-02 - 3.14154606035e-02 3.02323588099e-02 2.98349904445e-02 3.02323588099e-02 3.14154606035e-02 3.33624200108e-02 - 3.60511821341e-02 3.94725484932e-02 4.36277000850e-02 4.84855850881e-02 5.38883507401e-02 5.94150808572e-02 - 6.42180018992e-02 6.69101294891e-02 6.57918464265e-02 5.97323039443e-02 4.93308963719e-02 3.71417160544e-02 - 2.63856510811e-02 1.93490286376e-02 1.69491736420e-02 1.93490286376e-02 2.63856510811e-02 3.71417160544e-02 - 4.93308963719e-02 5.97323039443e-02 6.57918464265e-02 6.69101294891e-02 6.42180018992e-02 5.94150808572e-02 - 5.24477482650e-02 4.77625301985e-02 4.36277000850e-02 4.01041807768e-02 3.72078996967e-02 3.49654910486e-02 - 3.34242157073e-02 3.26363277502e-02 3.26363277502e-02 3.34242157073e-02 3.49654910486e-02 3.72078996967e-02 - 4.01041807768e-02 4.36277000850e-02 4.77625301985e-02 5.24477482650e-02 5.74762428735e-02 6.23688231248e-02 - 6.62522137956e-02 6.78442738531e-02 6.57918464265e-02 5.94868177545e-02 4.98718618187e-02 3.93541671489e-02 - 3.07039905741e-02 2.59250062413e-02 2.59250062413e-02 3.07039905741e-02 3.93541671489e-02 4.98718618187e-02 - 5.94868177545e-02 6.57918464265e-02 6.78442738531e-02 6.62522137956e-02 6.23688231248e-02 5.74762428735e-02 - 5.08044555558e-02 4.69561004766e-02 4.35604474537e-02 4.06430475235e-02 3.82415861113e-02 3.64263171972e-02 - 3.52857897121e-02 3.48956024912e-02 3.52857897121e-02 3.64263171972e-02 3.82415861113e-02 4.06430475235e-02 - 4.35604474537e-02 4.69561004766e-02 5.08044555558e-02 5.50251512552e-02 5.93841418824e-02 6.33941825467e-02 - 6.62522137956e-02 6.69101294891e-02 6.44394828494e-02 5.86758842735e-02 5.07010770424e-02 4.26203265537e-02 - 3.67025276917e-02 3.45455630665e-02 3.67025276917e-02 4.26203265537e-02 5.07010770424e-02 5.86758842735e-02 - 6.44394828494e-02 6.69101294891e-02 6.62522137956e-02 6.33941825467e-02 5.93841418824e-02 5.50251512552e-02 - 4.91148354625e-02 4.60913389830e-02 4.33721592307e-02 4.09927131873e-02 3.90347179512e-02 3.76190713504e-02 - 3.68707660171e-02 3.68707660171e-02 3.76190713504e-02 3.90347179512e-02 4.09927131873e-02 4.33721592307e-02 - 4.60913389830e-02 4.91148354625e-02 5.24194501424e-02 5.59201471811e-02 5.93841418824e-02 6.23688231248e-02 - 6.42180018992e-02 6.41840706496e-02 6.17513938278e-02 5.70772559013e-02 5.12221625406e-02 4.58777097769e-02 - 4.27064575993e-02 4.27064575993e-02 4.58777097769e-02 5.12221625406e-02 5.70772559013e-02 6.17513938278e-02 - 6.41840706496e-02 6.42180018992e-02 6.23688231248e-02 5.93841418824e-02 5.59201471811e-02 5.24194501424e-02 - 4.74313143781e-02 4.51323632879e-02 4.29832635915e-02 4.10571769449e-02 3.94908104948e-02 3.84534160516e-02 - 3.80886538087e-02 3.84534160516e-02 3.94908104948e-02 4.10571769449e-02 4.29832635915e-02 4.51323632879e-02 - 4.74313143781e-02 4.98633146719e-02 5.24194501424e-02 5.50251512552e-02 5.74762428735e-02 5.94150808572e-02 - 6.03694423859e-02 5.98878714669e-02 5.77843769256e-02 5.43925934286e-02 5.06194135765e-02 4.76689314688e-02 - 4.65545163206e-02 4.76689314688e-02 5.06194135765e-02 5.43925934286e-02 5.77843769256e-02 5.98878714669e-02 - 6.03694423859e-02 5.94150808572e-02 5.74762428735e-02 5.50251512552e-02 5.24194501424e-02 4.98633146719e-02 - 5.18034033720e-02 5.00090134447e-02 4.80677366203e-02 4.62623331670e-02 4.49623774036e-02 4.44868574481e-02 - 4.49623774036e-02 4.62623331670e-02 4.80677366203e-02 5.00090134447e-02 5.18034033720e-02 5.33236907840e-02 - 5.45841783826e-02 5.56676247698e-02 5.66331890923e-02 5.74449785733e-02 5.79474348197e-02 5.78981879671e-02 - 5.70612480291e-02 5.53499973529e-02 5.29676178633e-02 5.04463447592e-02 4.85080722970e-02 4.77793166757e-02 - 4.85080722970e-02 5.04463447592e-02 5.29676178633e-02 5.53499973529e-02 5.70612480291e-02 5.78981879671e-02 - 5.79474348197e-02 5.74449785733e-02 5.66331890923e-02 5.56676247698e-02 5.45841783826e-02 5.33236907840e-02 - 5.00090134447e-02 4.84815544672e-02 4.67810667612e-02 4.52857661696e-02 4.44045560444e-02 4.44045560444e-02 - 4.52857661696e-02 4.67810667612e-02 4.84815544672e-02 5.00090134447e-02 5.11403130173e-02 5.18355302331e-02 - 5.21839135623e-02 5.23143637463e-02 5.23143637463e-02 5.21839135623e-02 5.18355302331e-02 5.11403130173e-02 - 5.00090134447e-02 4.84815544672e-02 4.67810667612e-02 4.52857661696e-02 4.44045560444e-02 4.44045560444e-02 - 4.52857661696e-02 4.67810667612e-02 4.84815544672e-02 5.00090134447e-02 5.11403130173e-02 5.18355302331e-02 - 5.21839135623e-02 5.23143637463e-02 5.23143637463e-02 5.21839135623e-02 5.18355302331e-02 5.11403130173e-02 - 4.80677366203e-02 4.67810667612e-02 4.53738413591e-02 4.42752514752e-02 4.38595264834e-02 4.42752514752e-02 - 4.53738413591e-02 4.67810667612e-02 4.80677366203e-02 4.89192305177e-02 4.92182336225e-02 4.90231496620e-02 - 4.84855850881e-02 4.77625301985e-02 4.69561004766e-02 4.60913389830e-02 4.51323632879e-02 4.40291518527e-02 - 4.27763236460e-02 4.14579289512e-02 4.02540981079e-02 3.93968315223e-02 3.90848689472e-02 3.93968315223e-02 - 4.02540981079e-02 4.14579289512e-02 4.27763236460e-02 4.40291518527e-02 4.51323632879e-02 4.60913389830e-02 - 4.69561004766e-02 4.77625301985e-02 4.84855850881e-02 4.90231496620e-02 4.92182336225e-02 4.89192305177e-02 - 4.62623331670e-02 4.52857661696e-02 4.42752514752e-02 4.36365698621e-02 4.36365698621e-02 4.42752514752e-02 - 4.52857661696e-02 4.62623331670e-02 4.68401774785e-02 4.68264624901e-02 4.62258246981e-02 4.51788789706e-02 - 4.38725463784e-02 4.24686468881e-02 4.10670403681e-02 3.97029159910e-02 3.83718132369e-02 3.70689589239e-02 - 3.58243136049e-02 3.47182328687e-02 3.38709874542e-02 3.34071767353e-02 3.34071767353e-02 3.38709874542e-02 - 3.47182328687e-02 3.58243136049e-02 3.70689589239e-02 3.83718132369e-02 3.97029159910e-02 4.10670403681e-02 - 4.24686468881e-02 4.38725463784e-02 4.51788789706e-02 4.62258246981e-02 4.68264624901e-02 4.68401774785e-02 - 4.49623774036e-02 4.44045560444e-02 4.38595264834e-02 4.36365698621e-02 4.38595264834e-02 4.44045560444e-02 - 4.49623774036e-02 4.51877782102e-02 4.48486167771e-02 4.38959177953e-02 4.24386109393e-02 4.06654278454e-02 - 3.87673596218e-02 3.68889471691e-02 3.51127517762e-02 3.34710625414e-02 3.19731919657e-02 3.06330408871e-02 - 2.94854041377e-02 2.85879356046e-02 2.80098127199e-02 2.78094015925e-02 2.80098127199e-02 2.85879356046e-02 - 2.94854041377e-02 3.06330408871e-02 3.19731919657e-02 3.34710625414e-02 3.51127517762e-02 3.68889471691e-02 - 3.87673596218e-02 4.06654278454e-02 4.24386109393e-02 4.38959177953e-02 4.48486167771e-02 4.51877782102e-02 - 4.44868574481e-02 4.44045560444e-02 4.42752514752e-02 4.42752514752e-02 4.44045560444e-02 4.44868574481e-02 - 4.42634768270e-02 4.35234290368e-02 4.21941579647e-02 4.03527020822e-02 3.81729635435e-02 3.58537824974e-02 - 3.35632692529e-02 3.14127386696e-02 2.94586793037e-02 2.77227537368e-02 2.62153172241e-02 2.49511167951e-02 - 2.39549635512e-02 2.32603028496e-02 2.29016184223e-02 2.29016184223e-02 2.32603028496e-02 2.39549635512e-02 - 2.49511167951e-02 2.62153172241e-02 2.77227537368e-02 2.94586793037e-02 3.14127386696e-02 3.35632692529e-02 - 3.58537824974e-02 3.81729635435e-02 4.03527020822e-02 4.21941579647e-02 4.35234290368e-02 4.42634768270e-02 - 4.49623774036e-02 4.52857661696e-02 4.53738413591e-02 4.52857661696e-02 4.49623774036e-02 4.42634768270e-02 - 4.30547772101e-02 4.12888114430e-02 3.90350130516e-02 3.64535808156e-02 3.37399765679e-02 3.10717223250e-02 - 2.85763383726e-02 2.63252408289e-02 2.43476957086e-02 2.26519365039e-02 2.12413612776e-02 2.01220876747e-02 - 1.93050944183e-02 1.88053010662e-02 1.86367379277e-02 1.88053010662e-02 1.93050944183e-02 2.01220876747e-02 - 2.12413612776e-02 2.26519365039e-02 2.43476957086e-02 2.63252408289e-02 2.85763383726e-02 3.10717223250e-02 - 3.37399765679e-02 3.64535808156e-02 3.90350130516e-02 4.12888114430e-02 4.30547772101e-02 4.42634768270e-02 - 4.62623331670e-02 4.67810667612e-02 4.67810667612e-02 4.62623331670e-02 4.51877782102e-02 4.35234290368e-02 - 4.12888114430e-02 3.85829474965e-02 3.55725175924e-02 3.24534608631e-02 2.94074293899e-02 2.65706573512e-02 - 2.40237109616e-02 2.18005508565e-02 1.99070659239e-02 1.83376793613e-02 1.70848695603e-02 1.61434902729e-02 - 1.55127511572e-02 1.51956958667e-02 1.51956958667e-02 1.55127511572e-02 1.61434902729e-02 1.70848695603e-02 - 1.83376793613e-02 1.99070659239e-02 2.18005508565e-02 2.40237109616e-02 2.65706573512e-02 2.94074293899e-02 - 3.24534608631e-02 3.55725175924e-02 3.85829474965e-02 4.12888114430e-02 4.35234290368e-02 4.51877782102e-02 - 4.80677366203e-02 4.84815544672e-02 4.80677366203e-02 4.68401774785e-02 4.48486167771e-02 4.21941579647e-02 - 3.90350130516e-02 3.55725175924e-02 3.20210145144e-02 2.85734174953e-02 2.53749373622e-02 2.25132701769e-02 - 2.00258575799e-02 1.79167348748e-02 1.61729889157e-02 1.47756456624e-02 1.37059602390e-02 1.29494247541e-02 - 1.24976141314e-02 1.23472319177e-02 1.24976141314e-02 1.29494247541e-02 1.37059602390e-02 1.47756456624e-02 - 1.61729889157e-02 1.79167348748e-02 2.00258575799e-02 2.25132701769e-02 2.53749373622e-02 2.85734174953e-02 - 3.20210145144e-02 3.55725175924e-02 3.90350130516e-02 4.21941579647e-02 4.48486167771e-02 4.68401774785e-02 - 5.00090134447e-02 5.00090134447e-02 4.89192305177e-02 4.68264624901e-02 4.38959177953e-02 4.03527020822e-02 - 3.64535808156e-02 3.24534608631e-02 2.85734174953e-02 2.49776956914e-02 2.17657781241e-02 1.89804120902e-02 - 1.66250325509e-02 1.46810426016e-02 1.31198380533e-02 1.19105819676e-02 1.10259974674e-02 1.04460621935e-02 - 1.01587603229e-02 1.01587603229e-02 1.04460621935e-02 1.10259974674e-02 1.19105819676e-02 1.31198380533e-02 - 1.46810426016e-02 1.66250325509e-02 1.89804120902e-02 2.17657781241e-02 2.49776956914e-02 2.85734174953e-02 - 3.24534608631e-02 3.64535808156e-02 4.03527020822e-02 4.38959177953e-02 4.68264624901e-02 4.89192305177e-02 - 5.18034033720e-02 5.11403130173e-02 4.92182336225e-02 4.62258246981e-02 4.24386109393e-02 3.81729635435e-02 - 3.37399765679e-02 2.94074293899e-02 2.53749373622e-02 2.17657781241e-02 1.86354478304e-02 1.59907282434e-02 - 1.38094745262e-02 1.20550163598e-02 1.06856809758e-02 9.66211927865e-03 8.95261635749e-03 8.53524112695e-03 - 8.39746782805e-03 8.53524112695e-03 8.95261635749e-03 9.66211927865e-03 1.06856809758e-02 1.20550163598e-02 - 1.38094745262e-02 1.59907282434e-02 1.86354478304e-02 2.17657781241e-02 2.53749373622e-02 2.94074293899e-02 - 3.37399765679e-02 3.81729635435e-02 4.24386109393e-02 4.62258246981e-02 4.92182336225e-02 5.11403130173e-02 - 5.33236907840e-02 5.18355302331e-02 4.90231496620e-02 4.51788789706e-02 4.06654278454e-02 3.58537824974e-02 - 3.10717223250e-02 2.65706573512e-02 2.25132701769e-02 1.89804120902e-02 1.59907282434e-02 1.35231772103e-02 - 1.15351431719e-02 9.97511028176e-03 8.79214216133e-03 7.94279014126e-03 7.39443450458e-03 7.12561826537e-03 - 7.12561826537e-03 7.39443450458e-03 7.94279014126e-03 8.79214216133e-03 9.97511028176e-03 1.15351431719e-02 - 1.35231772103e-02 1.59907282434e-02 1.89804120902e-02 2.25132701769e-02 2.65706573512e-02 3.10717223250e-02 - 3.58537824974e-02 4.06654278454e-02 4.51788789706e-02 4.90231496620e-02 5.18355302331e-02 5.33236907840e-02 - 5.45841783826e-02 5.21839135623e-02 4.84855850881e-02 4.38725463784e-02 3.87673596218e-02 3.35632692529e-02 - 2.85763383726e-02 2.40237109616e-02 2.00258575799e-02 1.66250325509e-02 1.38094745262e-02 1.15351431719e-02 - 9.74245511371e-03 8.36917339040e-03 7.35981258047e-03 6.67049181789e-03 6.26978037715e-03 6.13840739734e-03 - 6.26978037715e-03 6.67049181789e-03 7.35981258047e-03 8.36917339040e-03 9.74245511371e-03 1.15351431719e-02 - 1.38094745262e-02 1.66250325509e-02 2.00258575799e-02 2.40237109616e-02 2.85763383726e-02 3.35632692529e-02 - 3.87673596218e-02 4.38725463784e-02 4.84855850881e-02 5.21839135623e-02 5.45841783826e-02 5.54167137150e-02 - 5.56676247698e-02 5.23143637463e-02 4.77625301985e-02 4.24686468881e-02 3.68889471691e-02 3.14127386696e-02 - 2.63252408289e-02 2.18005508565e-02 1.79167348748e-02 1.46810426016e-02 1.20550163598e-02 9.97511028176e-03 - 8.36917339040e-03 7.16922584820e-03 6.31909087196e-03 5.77651892440e-03 5.51272438194e-03 5.51272438194e-03 - 5.77651892440e-03 6.31909087196e-03 7.16922584820e-03 8.36917339040e-03 9.97511028176e-03 1.20550163598e-02 - 1.46810426016e-02 1.79167348748e-02 2.18005508565e-02 2.63252408289e-02 3.14127386696e-02 3.68889471691e-02 - 4.24686468881e-02 4.77625301985e-02 5.23143637463e-02 5.56676247698e-02 5.74494623672e-02 5.74494623672e-02 - 5.66331890923e-02 5.23143637463e-02 4.69561004766e-02 4.10670403681e-02 3.51127517762e-02 2.94586793037e-02 - 2.43476957086e-02 1.99070659239e-02 1.61729889157e-02 1.31198380533e-02 1.06856809758e-02 8.79214216133e-03 - 7.35981258047e-03 6.31909087196e-03 5.61528193683e-03 5.20914423543e-03 5.07652462266e-03 5.20914423543e-03 - 5.61528193683e-03 6.31909087196e-03 7.35981258047e-03 8.79214216133e-03 1.06856809758e-02 1.31198380533e-02 - 1.61729889157e-02 1.99070659239e-02 2.43476957086e-02 2.94586793037e-02 3.51127517762e-02 4.10670403681e-02 - 4.69561004766e-02 5.23143637463e-02 5.66331890923e-02 5.94462807362e-02 6.04237632524e-02 5.94462807362e-02 - 5.74449785733e-02 5.21839135623e-02 4.60913389830e-02 3.97029159910e-02 3.34710625414e-02 2.77227537368e-02 - 2.26519365039e-02 1.83376793613e-02 1.47756456624e-02 1.19105819676e-02 9.66211927865e-03 7.94279014126e-03 - 6.67049181789e-03 5.77651892440e-03 5.20914423543e-03 4.93405372394e-03 4.93405372394e-03 5.20914423543e-03 - 5.77651892440e-03 6.67049181789e-03 7.94279014126e-03 9.66211927865e-03 1.19105819676e-02 1.47756456624e-02 - 1.83376793613e-02 2.26519365039e-02 2.77227537368e-02 3.34710625414e-02 3.97029159910e-02 4.60913389830e-02 - 5.21839135623e-02 5.74449785733e-02 6.13334872428e-02 6.34040688222e-02 6.34040688222e-02 6.13334872428e-02 - 5.79474348197e-02 5.18355302331e-02 4.51323632879e-02 3.83718132369e-02 3.19731919657e-02 2.62153172241e-02 - 2.12413612776e-02 1.70848695603e-02 1.37059602390e-02 1.10259974674e-02 8.95261635749e-03 7.39443450458e-03 - 6.26978037715e-03 5.51272438194e-03 5.07652462266e-03 4.93405372394e-03 5.07652462266e-03 5.51272438194e-03 - 6.26978037715e-03 7.39443450458e-03 8.95261635749e-03 1.10259974674e-02 1.37059602390e-02 1.70848695603e-02 - 2.12413612776e-02 2.62153172241e-02 3.19731919657e-02 3.83718132369e-02 4.51323632879e-02 5.18355302331e-02 - 5.79474348197e-02 6.28828729732e-02 6.61022866145e-02 6.72218662363e-02 6.61022866145e-02 6.28828729732e-02 - 5.78981879671e-02 5.11403130173e-02 4.40291518527e-02 3.70689589239e-02 3.06330408871e-02 2.49511167951e-02 - 2.01220876747e-02 1.61434902729e-02 1.29494247541e-02 1.04460621935e-02 8.53524112695e-03 7.12561826537e-03 - 6.13840739734e-03 5.51272438194e-03 5.20914423543e-03 5.20914423543e-03 5.51272438194e-03 6.13840739734e-03 - 7.12561826537e-03 8.53524112695e-03 1.04460621935e-02 1.29494247541e-02 1.61434902729e-02 2.01220876747e-02 - 2.49511167951e-02 3.06330408871e-02 3.70689589239e-02 4.40291518527e-02 5.11403130173e-02 5.78981879671e-02 - 6.37149803432e-02 6.80033074139e-02 7.02831021338e-02 7.02831021338e-02 6.80033074139e-02 6.37149803432e-02 - 5.70612480291e-02 5.00090134447e-02 4.27763236460e-02 3.58243136049e-02 2.94854041377e-02 2.39549635512e-02 - 1.93050944183e-02 1.55127511572e-02 1.24976141314e-02 1.01587603229e-02 8.39746782805e-03 7.12561826537e-03 - 6.26978037715e-03 5.77651892440e-03 5.61528193683e-03 5.77651892440e-03 6.26978037715e-03 7.12561826537e-03 - 8.39746782805e-03 1.01587603229e-02 1.24976141314e-02 1.55127511572e-02 1.93050944183e-02 2.39549635512e-02 - 2.94854041377e-02 3.58243136049e-02 4.27763236460e-02 5.00090134447e-02 5.70612480291e-02 6.33842515281e-02 - 6.84139609392e-02 7.16581855164e-02 7.27796836797e-02 7.16581855164e-02 6.84139609392e-02 6.33842515281e-02 - 5.53499973529e-02 4.84815544672e-02 4.14579289512e-02 3.47182328687e-02 2.85879356046e-02 2.32603028496e-02 - 1.88053010662e-02 1.51956958667e-02 1.23472319177e-02 1.01587603229e-02 8.53524112695e-03 7.39443450458e-03 - 6.67049181789e-03 6.31909087196e-03 6.31909087196e-03 6.67049181789e-03 7.39443450458e-03 8.53524112695e-03 - 1.01587603229e-02 1.23472319177e-02 1.51956958667e-02 1.88053010662e-02 2.32603028496e-02 2.85879356046e-02 - 3.47182328687e-02 4.14579289512e-02 4.84815544672e-02 5.53499973529e-02 6.15702941626e-02 6.66786802062e-02 - 7.03019494995e-02 7.21810172465e-02 7.21810172465e-02 7.03019494995e-02 6.66786802062e-02 6.15702941626e-02 - 5.29676178633e-02 4.67810667612e-02 4.02540981079e-02 3.38709874542e-02 2.80098127199e-02 2.29016184223e-02 - 1.86367379277e-02 1.51956958667e-02 1.24976141314e-02 1.04460621935e-02 8.95261635749e-03 7.94279014126e-03 - 7.35981258047e-03 7.16922584820e-03 7.35981258047e-03 7.94279014126e-03 8.95261635749e-03 1.04460621935e-02 - 1.24976141314e-02 1.51956958667e-02 1.86367379277e-02 2.29016184223e-02 2.80098127199e-02 3.38709874542e-02 - 4.02540981079e-02 4.67810667612e-02 5.29676178633e-02 5.83399236929e-02 6.25800698666e-02 6.55787911247e-02 - 6.73541476702e-02 6.79419572879e-02 6.73541476702e-02 6.55787911247e-02 6.25800698666e-02 5.83399236929e-02 - 5.04463447592e-02 4.52857661696e-02 3.93968315223e-02 3.34071767353e-02 2.78094015925e-02 2.29016184223e-02 - 1.88053010662e-02 1.55127511572e-02 1.29494247541e-02 1.10259974674e-02 9.66211927865e-03 8.79214216133e-03 - 8.36917339040e-03 8.36917339040e-03 8.79214216133e-03 9.66211927865e-03 1.10259974674e-02 1.29494247541e-02 - 1.55127511572e-02 1.88053010662e-02 2.29016184223e-02 2.78094015925e-02 3.34071767353e-02 3.93968315223e-02 - 4.52857661696e-02 5.04463447592e-02 5.43239294918e-02 5.67236888968e-02 5.79103146750e-02 5.83777841365e-02 - 5.85232784436e-02 5.85232784436e-02 5.83777841365e-02 5.79103146750e-02 5.67236888968e-02 5.43239294918e-02 - 4.85080722970e-02 4.44045560444e-02 3.90848689472e-02 3.34071767353e-02 2.80098127199e-02 2.32603028496e-02 - 1.93050944183e-02 1.61434902729e-02 1.37059602390e-02 1.19105819676e-02 1.06856809758e-02 9.97511028176e-03 - 9.74245511371e-03 9.97511028176e-03 1.06856809758e-02 1.19105819676e-02 1.37059602390e-02 1.61434902729e-02 - 1.93050944183e-02 2.32603028496e-02 2.80098127199e-02 3.34071767353e-02 3.90848689472e-02 4.44045560444e-02 - 4.85080722970e-02 5.06194135765e-02 5.05555186569e-02 4.89850720157e-02 4.70389926376e-02 4.56222411881e-02 - 4.51254329663e-02 4.56222411881e-02 4.70389926376e-02 4.89850720157e-02 5.05555186569e-02 5.06194135765e-02 - 4.77793166757e-02 4.44045560444e-02 3.93968315223e-02 3.38709874542e-02 2.85879356046e-02 2.39549635512e-02 - 2.01220876747e-02 1.70848695603e-02 1.47756456624e-02 1.31198380533e-02 1.20550163598e-02 1.15351431719e-02 - 1.15351431719e-02 1.20550163598e-02 1.31198380533e-02 1.47756456624e-02 1.70848695603e-02 2.01220876747e-02 - 2.39549635512e-02 2.85879356046e-02 3.38709874542e-02 3.93968315223e-02 4.44045560444e-02 4.77793166757e-02 - 4.83941231678e-02 4.58777097769e-02 4.11986868029e-02 3.62214481565e-02 3.25101129901e-02 3.06594619284e-02 - 3.06594619284e-02 3.25101129901e-02 3.62214481565e-02 4.11986868029e-02 4.58777097769e-02 4.83941231678e-02 - 4.85080722970e-02 4.52857661696e-02 4.02540981079e-02 3.47182328687e-02 2.94854041377e-02 2.49511167951e-02 - 2.12413612776e-02 1.83376793613e-02 1.61729889157e-02 1.46810426016e-02 1.38094745262e-02 1.35231772103e-02 - 1.38094745262e-02 1.46810426016e-02 1.61729889157e-02 1.83376793613e-02 2.12413612776e-02 2.49511167951e-02 - 2.94854041377e-02 3.47182328687e-02 4.02540981079e-02 4.52857661696e-02 4.85080722970e-02 4.83941231678e-02 - 4.41366450522e-02 3.67025276917e-02 2.86292518106e-02 2.23413746600e-02 1.87771308641e-02 1.76819501362e-02 - 1.87771308641e-02 2.23413746600e-02 2.86292518106e-02 3.67025276917e-02 4.41366450522e-02 4.83941231678e-02 - 5.04463447592e-02 4.67810667612e-02 4.14579289512e-02 3.58243136049e-02 3.06330408871e-02 2.62153172241e-02 - 2.26519365039e-02 1.99070659239e-02 1.79167348748e-02 1.66250325509e-02 1.59907282434e-02 1.59907282434e-02 - 1.66250325509e-02 1.79167348748e-02 1.99070659239e-02 2.26519365039e-02 2.62153172241e-02 3.06330408871e-02 - 3.58243136049e-02 4.14579289512e-02 4.67810667612e-02 5.04463447592e-02 5.06194135765e-02 4.58777097769e-02 - 3.67025276917e-02 2.59250062413e-02 1.69491736420e-02 1.14596764125e-02 9.13060134292e-03 9.13060134292e-03 - 1.14596764125e-02 1.69491736420e-02 2.59250062413e-02 3.67025276917e-02 4.58777097769e-02 5.06194135765e-02 - 5.29676178633e-02 4.84815544672e-02 4.27763236460e-02 3.70689589239e-02 3.19731919657e-02 2.77227537368e-02 - 2.43476957086e-02 2.18005508565e-02 2.00258575799e-02 1.89804120902e-02 1.86354478304e-02 1.89804120902e-02 - 2.00258575799e-02 2.18005508565e-02 2.43476957086e-02 2.77227537368e-02 3.19731919657e-02 3.70689589239e-02 - 4.27763236460e-02 4.84815544672e-02 5.29676178633e-02 5.43239294918e-02 5.05555186569e-02 4.11986868029e-02 - 2.86292518106e-02 1.69491736420e-02 9.05419851032e-03 5.17285277950e-03 4.10298626852e-03 5.17285277950e-03 - 9.05419851032e-03 1.69491736420e-02 2.86292518106e-02 4.11986868029e-02 5.05555186569e-02 5.43239294918e-02 - 5.53499973529e-02 5.00090134447e-02 4.40291518527e-02 3.83718132369e-02 3.34710625414e-02 2.94586793037e-02 - 2.63252408289e-02 2.40237109616e-02 2.25132701769e-02 2.17657781241e-02 2.17657781241e-02 2.25132701769e-02 - 2.40237109616e-02 2.63252408289e-02 2.94586793037e-02 3.34710625414e-02 3.83718132369e-02 4.40291518527e-02 - 5.00090134447e-02 5.53499973529e-02 5.83399236929e-02 5.67236888968e-02 4.89850720157e-02 3.62214481565e-02 - 2.23413746600e-02 1.14596764125e-02 5.17285277950e-03 2.64004483879e-03 2.64004483879e-03 5.17285277950e-03 - 1.14596764125e-02 2.23413746600e-02 3.62214481565e-02 4.89850720157e-02 5.67236888968e-02 5.83399236929e-02 - 5.70612480291e-02 5.11403130173e-02 4.51323632879e-02 3.97029159910e-02 3.51127517762e-02 3.14127386696e-02 - 2.85763383726e-02 2.65706573512e-02 2.53749373622e-02 2.49776956914e-02 2.53749373622e-02 2.65706573512e-02 - 2.85763383726e-02 3.14127386696e-02 3.51127517762e-02 3.97029159910e-02 4.51323632879e-02 5.11403130173e-02 - 5.70612480291e-02 6.15702941626e-02 6.25800698666e-02 5.79103146750e-02 4.70389926376e-02 3.25101129901e-02 - 1.87771308641e-02 9.13060134292e-03 4.10298626852e-03 2.64004483879e-03 4.10298626852e-03 9.13060134292e-03 - 1.87771308641e-02 3.25101129901e-02 4.70389926376e-02 5.79103146750e-02 6.25800698666e-02 6.15702941626e-02 - 5.78981879671e-02 5.18355302331e-02 4.60913389830e-02 4.10670403681e-02 3.68889471691e-02 3.35632692529e-02 - 3.10717223250e-02 2.94074293899e-02 2.85734174953e-02 2.85734174953e-02 2.94074293899e-02 3.10717223250e-02 - 3.35632692529e-02 3.68889471691e-02 4.10670403681e-02 4.60913389830e-02 5.18355302331e-02 5.78981879671e-02 - 6.33842515281e-02 6.66786802062e-02 6.55787911247e-02 5.83777841365e-02 4.56222411881e-02 3.06594619284e-02 - 1.76819501362e-02 9.13060134292e-03 5.17285277950e-03 5.17285277950e-03 9.13060134292e-03 1.76819501362e-02 - 3.06594619284e-02 4.56222411881e-02 5.83777841365e-02 6.55787911247e-02 6.66786802062e-02 6.33842515281e-02 - 5.79474348197e-02 5.21839135623e-02 4.69561004766e-02 4.24686468881e-02 3.87673596218e-02 3.58537824974e-02 - 3.37399765679e-02 3.24534608631e-02 3.20210145144e-02 3.24534608631e-02 3.37399765679e-02 3.58537824974e-02 - 3.87673596218e-02 4.24686468881e-02 4.69561004766e-02 5.21839135623e-02 5.79474348197e-02 6.37149803432e-02 - 6.84139609392e-02 7.03019494995e-02 6.73541476702e-02 5.85232784436e-02 4.51254329663e-02 3.06594619284e-02 - 1.87771308641e-02 1.14596764125e-02 9.05419851032e-03 1.14596764125e-02 1.87771308641e-02 3.06594619284e-02 - 4.51254329663e-02 5.85232784436e-02 6.73541476702e-02 7.03019494995e-02 6.84139609392e-02 6.37149803432e-02 - 5.74449785733e-02 5.23143637463e-02 4.77625301985e-02 4.38725463784e-02 4.06654278454e-02 3.81729635435e-02 - 3.64535808156e-02 3.55725175924e-02 3.55725175924e-02 3.64535808156e-02 3.81729635435e-02 4.06654278454e-02 - 4.38725463784e-02 4.77625301985e-02 5.23143637463e-02 5.74449785733e-02 6.28828729732e-02 6.80033074139e-02 - 7.16581855164e-02 7.21810172465e-02 6.79419572879e-02 5.85232784436e-02 4.56222411881e-02 3.25101129901e-02 - 2.23413746600e-02 1.69491736420e-02 1.69491736420e-02 2.23413746600e-02 3.25101129901e-02 4.56222411881e-02 - 5.85232784436e-02 6.79419572879e-02 7.21810172465e-02 7.16581855164e-02 6.80033074139e-02 6.28828729732e-02 - 5.66331890923e-02 5.23143637463e-02 4.84855850881e-02 4.51788789706e-02 4.24386109393e-02 4.03527020822e-02 - 3.90350130516e-02 3.85829474965e-02 3.90350130516e-02 4.03527020822e-02 4.24386109393e-02 4.51788789706e-02 - 4.84855850881e-02 5.23143637463e-02 5.66331890923e-02 6.13334872428e-02 6.61022866145e-02 7.02831021338e-02 - 7.27796836797e-02 7.21810172465e-02 6.73541476702e-02 5.83777841365e-02 4.70389926376e-02 3.62214481565e-02 - 2.86292518106e-02 2.59250062413e-02 2.86292518106e-02 3.62214481565e-02 4.70389926376e-02 5.83777841365e-02 - 6.73541476702e-02 7.21810172465e-02 7.27796836797e-02 7.02831021338e-02 6.61022866145e-02 6.13334872428e-02 - 5.56676247698e-02 5.21839135623e-02 4.90231496620e-02 4.62258246981e-02 4.38959177953e-02 4.21941579647e-02 - 4.12888114430e-02 4.12888114430e-02 4.21941579647e-02 4.38959177953e-02 4.62258246981e-02 4.90231496620e-02 - 5.21839135623e-02 5.56676247698e-02 5.94462807362e-02 6.34040688222e-02 6.72218662363e-02 7.02831021338e-02 - 7.16581855164e-02 7.03019494995e-02 6.55787911247e-02 5.79103146750e-02 4.89850720157e-02 4.11986868029e-02 - 3.67025276917e-02 3.67025276917e-02 4.11986868029e-02 4.89850720157e-02 5.79103146750e-02 6.55787911247e-02 - 7.03019494995e-02 7.16581855164e-02 7.02831021338e-02 6.72218662363e-02 6.34040688222e-02 5.94462807362e-02 - 5.45841783826e-02 5.18355302331e-02 4.92182336225e-02 4.68264624901e-02 4.48486167771e-02 4.35234290368e-02 - 4.30547772101e-02 4.35234290368e-02 4.48486167771e-02 4.68264624901e-02 4.92182336225e-02 5.18355302331e-02 - 5.45841783826e-02 5.74494623672e-02 6.04237632524e-02 6.34040688222e-02 6.61022866145e-02 6.80033074139e-02 - 6.84139609392e-02 6.66786802062e-02 6.25800698666e-02 5.67236888968e-02 5.05555186569e-02 4.58777097769e-02 - 4.41366450522e-02 4.58777097769e-02 5.05555186569e-02 5.67236888968e-02 6.25800698666e-02 6.66786802062e-02 - 6.84139609392e-02 6.80033074139e-02 6.61022866145e-02 6.34040688222e-02 6.04237632524e-02 5.74494623672e-02 - 5.33236907840e-02 5.11403130173e-02 4.89192305177e-02 4.68401774785e-02 4.51877782102e-02 4.42634768270e-02 - 4.42634768270e-02 4.51877782102e-02 4.68401774785e-02 4.89192305177e-02 5.11403130173e-02 5.33236907840e-02 - 5.54167137150e-02 5.74494623672e-02 5.94462807362e-02 6.13334872428e-02 6.28828729732e-02 6.37149803432e-02 - 6.33842515281e-02 6.15702941626e-02 5.83399236929e-02 5.43239294918e-02 5.06194135765e-02 4.83941231678e-02 - 4.83941231678e-02 5.06194135765e-02 5.43239294918e-02 5.83399236929e-02 6.15702941626e-02 6.33842515281e-02 - 6.37149803432e-02 6.28828729732e-02 6.13334872428e-02 5.94462807362e-02 5.74494623672e-02 5.54167137150e-02 - 5.77319585491e-02 5.53499973529e-02 5.26931433274e-02 5.03535465114e-02 4.89738024005e-02 4.89738024005e-02 - 5.03535465114e-02 5.26931433274e-02 5.53499973529e-02 5.77319585491e-02 5.94941697642e-02 6.05796981280e-02 - 6.11288569567e-02 6.13379141192e-02 6.13379141192e-02 6.11288569567e-02 6.05796981280e-02 5.94941697642e-02 - 5.77319585491e-02 5.53499973529e-02 5.26931433274e-02 5.03535465114e-02 4.89738024005e-02 4.89738024005e-02 - 5.03535465114e-02 5.26931433274e-02 5.53499973529e-02 5.77319585491e-02 5.94941697642e-02 6.05796981280e-02 - 6.11288569567e-02 6.13379141192e-02 6.13379141192e-02 6.11288569567e-02 6.05796981280e-02 5.94941697642e-02 - 5.53499973529e-02 5.29676178633e-02 5.04463447592e-02 4.85080722970e-02 4.77793166757e-02 4.85080722970e-02 - 5.04463447592e-02 5.29676178633e-02 5.53499973529e-02 5.70612480291e-02 5.78981879671e-02 5.79474348197e-02 - 5.74449785733e-02 5.66331890923e-02 5.56676247698e-02 5.45841783826e-02 5.33236907840e-02 5.18034033720e-02 - 5.00090134447e-02 4.80677366203e-02 4.62623331670e-02 4.49623774036e-02 4.44868574481e-02 4.49623774036e-02 - 4.62623331670e-02 4.80677366203e-02 5.00090134447e-02 5.18034033720e-02 5.33236907840e-02 5.45841783826e-02 - 5.56676247698e-02 5.66331890923e-02 5.74449785733e-02 5.79474348197e-02 5.78981879671e-02 5.70612480291e-02 - 5.26931433274e-02 5.04463447592e-02 4.83002627794e-02 4.69885184966e-02 4.69885184966e-02 4.83002627794e-02 - 5.04463447592e-02 5.26931433274e-02 5.43692149489e-02 5.51031089527e-02 5.48714786192e-02 5.38883507401e-02 - 5.24477482650e-02 5.08044555558e-02 4.91148354625e-02 4.74313143781e-02 4.57409612273e-02 4.40291518527e-02 - 4.23378898536e-02 4.07924714489e-02 3.95849180057e-02 3.89160663350e-02 3.89160663350e-02 3.95849180057e-02 - 4.07924714489e-02 4.23378898536e-02 4.40291518527e-02 4.57409612273e-02 4.74313143781e-02 4.91148354625e-02 - 5.08044555558e-02 5.24477482650e-02 5.38883507401e-02 5.48714786192e-02 5.51031089527e-02 5.43692149489e-02 - 5.03535465114e-02 4.85080722970e-02 4.69885184966e-02 4.64020316983e-02 4.69885184966e-02 4.85080722970e-02 - 5.03535465114e-02 5.18281863755e-02 5.24339557043e-02 5.20147259753e-02 5.07121410456e-02 4.88190878681e-02 - 4.66403070569e-02 4.44094609233e-02 4.22610610741e-02 4.02453701311e-02 3.83718132369e-02 3.66568505349e-02 - 3.51532871168e-02 3.39533984936e-02 3.31691643222e-02 3.28952522339e-02 3.31691643222e-02 3.39533984936e-02 - 3.51532871168e-02 3.66568505349e-02 3.83718132369e-02 4.02453701311e-02 4.22610610741e-02 4.44094609233e-02 - 4.66403070569e-02 4.88190878681e-02 5.07121410456e-02 5.20147259753e-02 5.24339557043e-02 5.18281863755e-02 - 4.89738024005e-02 4.77793166757e-02 4.69885184966e-02 4.69885184966e-02 4.77793166757e-02 4.89738024005e-02 - 4.99825941802e-02 5.02828320119e-02 4.96193341715e-02 4.80406383964e-02 4.57968161948e-02 4.32002938784e-02 - 4.05244812822e-02 3.79563421300e-02 3.55932306397e-02 3.34710625414e-02 3.16041856284e-02 3.00149219248e-02 - 2.87439673059e-02 2.78466298707e-02 2.73794467347e-02 2.73794467347e-02 2.78466298707e-02 2.87439673059e-02 - 3.00149219248e-02 3.16041856284e-02 3.34710625414e-02 3.55932306397e-02 3.79563421300e-02 4.05244812822e-02 - 4.32002938784e-02 4.57968161948e-02 4.80406383964e-02 4.96193341715e-02 5.02828320119e-02 4.99825941802e-02 - 4.89738024005e-02 4.85080722970e-02 4.83002627794e-02 4.85080722970e-02 4.89738024005e-02 4.93048229800e-02 - 4.90700187394e-02 4.79989400749e-02 4.60731359718e-02 4.34838779539e-02 4.05199675384e-02 3.74634706166e-02 - 3.45282284639e-02 3.18414068716e-02 2.94586793037e-02 2.73972646659e-02 2.56657154446e-02 2.42781130820e-02 - 2.32562353108e-02 2.26267522861e-02 2.24136125305e-02 2.26267522861e-02 2.32562353108e-02 2.42781130820e-02 - 2.56657154446e-02 2.73972646659e-02 2.94586793037e-02 3.18414068716e-02 3.45282284639e-02 3.74634706166e-02 - 4.05199675384e-02 4.34838779539e-02 4.60731359718e-02 4.79989400749e-02 4.90700187394e-02 4.93048229800e-02 - 5.03535465114e-02 5.04463447592e-02 5.04463447592e-02 5.03535465114e-02 4.99825941802e-02 4.90700187394e-02 - 4.74231711778e-02 4.50208900473e-02 4.20165784801e-02 3.86662855632e-02 3.52402742752e-02 3.19590319446e-02 - 2.89647599965e-02 2.63252408289e-02 2.40594329852e-02 2.21666114252e-02 2.06439962171e-02 1.94921954522e-02 - 1.87162119832e-02 1.83246021902e-02 1.83246021902e-02 1.87162119832e-02 1.94921954522e-02 2.06439962171e-02 - 2.21666114252e-02 2.40594329852e-02 2.63252408289e-02 2.89647599965e-02 3.19590319446e-02 3.52402742752e-02 - 3.86662855632e-02 4.20165784801e-02 4.50208900473e-02 4.74231711778e-02 4.90700187394e-02 4.99825941802e-02 - 5.26931433274e-02 5.29676178633e-02 5.26931433274e-02 5.18281863755e-02 5.02828320119e-02 4.79989400749e-02 - 4.50208900473e-02 4.15120643887e-02 3.77147526395e-02 3.38859304601e-02 3.02423286704e-02 2.69304328597e-02 - 2.40237109616e-02 2.15413174517e-02 1.94746684497e-02 1.78072941675e-02 1.65234811342e-02 1.56112881223e-02 - 1.50645020089e-02 1.48820928374e-02 1.50645020089e-02 1.56112881223e-02 1.65234811342e-02 1.78072941675e-02 - 1.94746684497e-02 2.15413174517e-02 2.40237109616e-02 2.69304328597e-02 3.02423286704e-02 3.38859304601e-02 - 3.77147526395e-02 4.15120643887e-02 4.50208900473e-02 4.79989400749e-02 5.02828320119e-02 5.18281863755e-02 - 5.53499973529e-02 5.53499973529e-02 5.43692149489e-02 5.24339557043e-02 4.96193341715e-02 4.60731359718e-02 - 4.20165784801e-02 3.77147526395e-02 3.34304675050e-02 2.93819034216e-02 2.57176061925e-02 2.25132701769e-02 - 1.97871783123e-02 1.75241772421e-02 1.56960478729e-02 1.42727054437e-02 1.32272933414e-02 1.25396406703e-02 - 1.21980827392e-02 1.21980827392e-02 1.25396406703e-02 1.32272933414e-02 1.42727054437e-02 1.56960478729e-02 - 1.75241772421e-02 1.97871783123e-02 2.25132701769e-02 2.57176061925e-02 2.93819034216e-02 3.34304675050e-02 - 3.77147526395e-02 4.20165784801e-02 4.60731359718e-02 4.96193341715e-02 5.24339557043e-02 5.43692149489e-02 - 5.77319585491e-02 5.70612480291e-02 5.51031089527e-02 5.20147259753e-02 4.80406383964e-02 4.34838779539e-02 - 3.86662855632e-02 3.38859304601e-02 2.93819034216e-02 2.53146898274e-02 2.17657781241e-02 1.87538902948e-02 - 1.62588522549e-02 1.42425749040e-02 1.26620800682e-02 1.14766013692e-02 1.06524671204e-02 1.01663421573e-02 - 1.00055755901e-02 1.01663421573e-02 1.06524671204e-02 1.14766013692e-02 1.26620800682e-02 1.42425749040e-02 - 1.62588522549e-02 1.87538902948e-02 2.17657781241e-02 2.53146898274e-02 2.93819034216e-02 3.38859304601e-02 - 3.86662855632e-02 4.34838779539e-02 4.80406383964e-02 5.20147259753e-02 5.51031089527e-02 5.70612480291e-02 - 5.94941697642e-02 5.78981879671e-02 5.48714786192e-02 5.07121410456e-02 4.57968161948e-02 4.05199675384e-02 - 3.52402742752e-02 3.02423286704e-02 2.57176061925e-02 2.17657781241e-02 1.84129279741e-02 1.56375665721e-02 - 1.33939588194e-02 1.16276251073e-02 1.02846446979e-02 9.31810768724e-03 8.69246386814e-03 8.38500711079e-03 - 8.38500711079e-03 8.69246386814e-03 9.31810768724e-03 1.02846446979e-02 1.16276251073e-02 1.33939588194e-02 - 1.56375665721e-02 1.84129279741e-02 2.17657781241e-02 2.57176061925e-02 3.02423286704e-02 3.52402742752e-02 - 4.05199675384e-02 4.57968161948e-02 5.07121410456e-02 5.48714786192e-02 5.78981879671e-02 5.94941697642e-02 - 6.05796981280e-02 5.79474348197e-02 5.38883507401e-02 4.88190878681e-02 4.32002938784e-02 3.74634706166e-02 - 3.19590319446e-02 2.69304328597e-02 2.25132701769e-02 1.87538902948e-02 1.56375665721e-02 1.31152359900e-02 - 1.11228159589e-02 9.59384043225e-03 8.46823559623e-03 7.69793885145e-03 7.24904282964e-03 7.10160482063e-03 - 7.24904282964e-03 7.69793885145e-03 8.46823559623e-03 9.59384043225e-03 1.11228159589e-02 1.31152359900e-02 - 1.56375665721e-02 1.87538902948e-02 2.25132701769e-02 2.69304328597e-02 3.19590319446e-02 3.74634706166e-02 - 4.32002938784e-02 4.88190878681e-02 5.38883507401e-02 5.79474348197e-02 6.05796981280e-02 6.14923433640e-02 - 6.11288569567e-02 5.74449785733e-02 5.24477482650e-02 4.66403070569e-02 4.05244812822e-02 3.45282284639e-02 - 2.89647599965e-02 2.40237109616e-02 1.97871783123e-02 1.62588522549e-02 1.33939588194e-02 1.11228159589e-02 - 9.36769905218e-03 8.05519399644e-03 7.12420828954e-03 6.52902358143e-03 6.23916674188e-03 6.23916674188e-03 - 6.52902358143e-03 7.12420828954e-03 8.05519399644e-03 9.36769905218e-03 1.11228159589e-02 1.33939588194e-02 - 1.62588522549e-02 1.97871783123e-02 2.40237109616e-02 2.89647599965e-02 3.45282284639e-02 4.05244812822e-02 - 4.66403070569e-02 5.24477482650e-02 5.74449785733e-02 6.11288569567e-02 6.30873277659e-02 6.30873277659e-02 - 6.13379141192e-02 5.66331890923e-02 5.08044555558e-02 4.44094609233e-02 3.79563421300e-02 3.18414068716e-02 - 2.63252408289e-02 2.15413174517e-02 1.75241772421e-02 1.42425749040e-02 1.16276251073e-02 9.59384043225e-03 - 8.05519399644e-03 6.93665223838e-03 6.17967298585e-03 5.74257125314e-03 5.59978938003e-03 5.74257125314e-03 - 6.17967298585e-03 6.93665223838e-03 8.05519399644e-03 9.59384043225e-03 1.16276251073e-02 1.42425749040e-02 - 1.75241772421e-02 2.15413174517e-02 2.63252408289e-02 3.18414068716e-02 3.79563421300e-02 4.44094609233e-02 - 5.08044555558e-02 5.66331890923e-02 6.13379141192e-02 6.44054743742e-02 6.54719417706e-02 6.44054743742e-02 - 6.13379141192e-02 5.56676247698e-02 4.91148354625e-02 4.22610610741e-02 3.55932306397e-02 2.94586793037e-02 - 2.40594329852e-02 1.94746684497e-02 1.56960478729e-02 1.26620800682e-02 1.02846446979e-02 8.46823559623e-03 - 7.12420828954e-03 6.17967298585e-03 5.58034633768e-03 5.28994524639e-03 5.28994524639e-03 5.58034633768e-03 - 6.17967298585e-03 7.12420828954e-03 8.46823559623e-03 1.02846446979e-02 1.26620800682e-02 1.56960478729e-02 - 1.94746684497e-02 2.40594329852e-02 2.94586793037e-02 3.55932306397e-02 4.22610610741e-02 4.91148354625e-02 - 5.56676247698e-02 6.13379141192e-02 6.55352798807e-02 6.77723654588e-02 6.77723654588e-02 6.55352798807e-02 - 6.11288569567e-02 5.45841783826e-02 4.74313143781e-02 4.02453701311e-02 3.34710625414e-02 2.73972646659e-02 - 2.21666114252e-02 1.78072941675e-02 1.42727054437e-02 1.14766013692e-02 9.31810768724e-03 7.69793885145e-03 - 6.52902358143e-03 5.74257125314e-03 5.28994524639e-03 5.14226972170e-03 5.28994524639e-03 5.74257125314e-03 - 6.52902358143e-03 7.69793885145e-03 9.31810768724e-03 1.14766013692e-02 1.42727054437e-02 1.78072941675e-02 - 2.21666114252e-02 2.73972646659e-02 3.34710625414e-02 4.02453701311e-02 4.74313143781e-02 5.45841783826e-02 - 6.11288569567e-02 6.64284767715e-02 6.98920688762e-02 7.10977313661e-02 6.98920688762e-02 6.64284767715e-02 - 6.05796981280e-02 5.33236907840e-02 4.57409612273e-02 3.83718132369e-02 3.16041856284e-02 2.56657154446e-02 - 2.06439962171e-02 1.65234811342e-02 1.32272933414e-02 1.06524671204e-02 8.69246386814e-03 7.24904282964e-03 - 6.23916674188e-03 5.59978938003e-03 5.28994524639e-03 5.28994524639e-03 5.59978938003e-03 6.23916674188e-03 - 7.24904282964e-03 8.69246386814e-03 1.06524671204e-02 1.32272933414e-02 1.65234811342e-02 2.06439962171e-02 - 2.56657154446e-02 3.16041856284e-02 3.83718132369e-02 4.57409612273e-02 5.33236907840e-02 6.05796981280e-02 - 6.68641206041e-02 7.15201290633e-02 7.40032629540e-02 7.40032629540e-02 7.15201290633e-02 6.68641206041e-02 - 5.94941697642e-02 5.18034033720e-02 4.40291518527e-02 3.66568505349e-02 3.00149219248e-02 2.42781130820e-02 - 1.94921954522e-02 1.56112881223e-02 1.25396406703e-02 1.01663421573e-02 8.38500711079e-03 7.10160482063e-03 - 6.23916674188e-03 5.74257125314e-03 5.58034633768e-03 5.74257125314e-03 6.23916674188e-03 7.10160482063e-03 - 8.38500711079e-03 1.01663421573e-02 1.25396406703e-02 1.56112881223e-02 1.94921954522e-02 2.42781130820e-02 - 3.00149219248e-02 3.66568505349e-02 4.40291518527e-02 5.18034033720e-02 5.94941697642e-02 6.64898780493e-02 - 7.21264918488e-02 7.57970302390e-02 7.70723261920e-02 7.57970302390e-02 7.21264918488e-02 6.64898780493e-02 - 5.77319585491e-02 5.00090134447e-02 4.23378898536e-02 3.51532871168e-02 2.87439673059e-02 2.32562353108e-02 - 1.87162119832e-02 1.50645020089e-02 1.21980827392e-02 1.00055755901e-02 8.38500711079e-03 7.24904282964e-03 - 6.52902358143e-03 6.17967298585e-03 6.17967298585e-03 6.52902358143e-03 7.24904282964e-03 8.38500711079e-03 - 1.00055755901e-02 1.21980827392e-02 1.50645020089e-02 1.87162119832e-02 2.32562353108e-02 2.87439673059e-02 - 3.51532871168e-02 4.23378898536e-02 5.00090134447e-02 5.77319585491e-02 6.49555724266e-02 7.10787520021e-02 - 7.55368812409e-02 7.78881394404e-02 7.78881394404e-02 7.55368812409e-02 7.10787520021e-02 6.49555724266e-02 - 5.53499973529e-02 4.80677366203e-02 4.07924714489e-02 3.39533984936e-02 2.78466298707e-02 2.26267522861e-02 - 1.83246021902e-02 1.48820928374e-02 1.21980827392e-02 1.01663421573e-02 8.69246386814e-03 7.69793885145e-03 - 7.12420828954e-03 6.93665223838e-03 7.12420828954e-03 7.69793885145e-03 8.69246386814e-03 1.01663421573e-02 - 1.21980827392e-02 1.48820928374e-02 1.83246021902e-02 2.26267522861e-02 2.78466298707e-02 3.39533984936e-02 - 4.07924714489e-02 4.80677366203e-02 5.53499973529e-02 6.21334821617e-02 6.79320857310e-02 7.23556493700e-02 - 7.51264696898e-02 7.60705845667e-02 7.51264696898e-02 7.23556493700e-02 6.79320857310e-02 6.21334821617e-02 - 5.26931433274e-02 4.62623331670e-02 3.95849180057e-02 3.31691643222e-02 2.73794467347e-02 2.24136125305e-02 - 1.83246021902e-02 1.50645020089e-02 1.25396406703e-02 1.06524671204e-02 9.31810768724e-03 8.46823559623e-03 - 8.05519399644e-03 8.05519399644e-03 8.46823559623e-03 9.31810768724e-03 1.06524671204e-02 1.25396406703e-02 - 1.50645020089e-02 1.83246021902e-02 2.24136125305e-02 2.73794467347e-02 3.31691643222e-02 3.95849180057e-02 - 4.62623331670e-02 5.26931433274e-02 5.83399236929e-02 6.28259810566e-02 6.60504635380e-02 6.81077724909e-02 - 6.91119067669e-02 6.91119067669e-02 6.81077724909e-02 6.60504635380e-02 6.28259810566e-02 5.83399236929e-02 - 5.03535465114e-02 4.49623774036e-02 3.89160663350e-02 3.28952522339e-02 2.73794467347e-02 2.26267522861e-02 - 1.87162119832e-02 1.56112881223e-02 1.32272933414e-02 1.14766013692e-02 1.02846446979e-02 9.59384043225e-03 - 9.36769905218e-03 9.59384043225e-03 1.02846446979e-02 1.14766013692e-02 1.32272933414e-02 1.56112881223e-02 - 1.87162119832e-02 2.26267522861e-02 2.73794467347e-02 3.28952522339e-02 3.89160663350e-02 4.49623774036e-02 - 5.03535465114e-02 5.43925934286e-02 5.67236888968e-02 5.75824043038e-02 5.76200322747e-02 5.74463352203e-02 - 5.73653289979e-02 5.74463352203e-02 5.76200322747e-02 5.75824043038e-02 5.67236888968e-02 5.43925934286e-02 - 4.89738024005e-02 4.44868574481e-02 3.89160663350e-02 3.31691643222e-02 2.78466298707e-02 2.32562353108e-02 - 1.94921954522e-02 1.65234811342e-02 1.42727054437e-02 1.26620800682e-02 1.16276251073e-02 1.11228159589e-02 - 1.11228159589e-02 1.16276251073e-02 1.26620800682e-02 1.42727054437e-02 1.65234811342e-02 1.94921954522e-02 - 2.32562353108e-02 2.78466298707e-02 3.31691643222e-02 3.89160663350e-02 4.44868574481e-02 4.89738024005e-02 - 5.13869204668e-02 5.12221625406e-02 4.89850720157e-02 4.60013609401e-02 4.35588929466e-02 4.22847991283e-02 - 4.22847991283e-02 4.35588929466e-02 4.60013609401e-02 4.89850720157e-02 5.12221625406e-02 5.13869204668e-02 - 4.89738024005e-02 4.49623774036e-02 3.95849180057e-02 3.39533984936e-02 2.87439673059e-02 2.42781130820e-02 - 2.06439962171e-02 1.78072941675e-02 1.56960478729e-02 1.42425749040e-02 1.33939588194e-02 1.31152359900e-02 - 1.33939588194e-02 1.42425749040e-02 1.56960478729e-02 1.78072941675e-02 2.06439962171e-02 2.42781130820e-02 - 2.87439673059e-02 3.39533984936e-02 3.95849180057e-02 4.49623774036e-02 4.89738024005e-02 5.02620593726e-02 - 4.79609401864e-02 4.26203265537e-02 3.62214481565e-02 3.09103717113e-02 2.77489957459e-02 2.67478820537e-02 - 2.77489957459e-02 3.09103717113e-02 3.62214481565e-02 4.26203265537e-02 4.79609401864e-02 5.02620593726e-02 - 5.03535465114e-02 4.62623331670e-02 4.07924714489e-02 3.51532871168e-02 3.00149219248e-02 2.56657154446e-02 - 2.21666114252e-02 1.94746684497e-02 1.75241772421e-02 1.62588522549e-02 1.56375665721e-02 1.56375665721e-02 - 1.62588522549e-02 1.75241772421e-02 1.94746684497e-02 2.21666114252e-02 2.56657154446e-02 3.00149219248e-02 - 3.51532871168e-02 4.07924714489e-02 4.62623331670e-02 5.03535465114e-02 5.13869204668e-02 4.79609401864e-02 - 4.02808330656e-02 3.07039905741e-02 2.23413746600e-02 1.69819929531e-02 1.46090879135e-02 1.46090879135e-02 - 1.69819929531e-02 2.23413746600e-02 3.07039905741e-02 4.02808330656e-02 4.79609401864e-02 5.13869204668e-02 - 5.26931433274e-02 4.80677366203e-02 4.23378898536e-02 3.66568505349e-02 3.16041856284e-02 2.73972646659e-02 - 2.40594329852e-02 2.15413174517e-02 1.97871783123e-02 1.87538902948e-02 1.84129279741e-02 1.87538902948e-02 - 1.97871783123e-02 2.15413174517e-02 2.40594329852e-02 2.73972646659e-02 3.16041856284e-02 3.66568505349e-02 - 4.23378898536e-02 4.80677366203e-02 5.26931433274e-02 5.43925934286e-02 5.12221625406e-02 4.26203265537e-02 - 3.07039905741e-02 1.93490286376e-02 1.14596764125e-02 7.45857574908e-03 6.32692063078e-03 7.45857574908e-03 - 1.14596764125e-02 1.93490286376e-02 3.07039905741e-02 4.26203265537e-02 5.12221625406e-02 5.43925934286e-02 - 5.53499973529e-02 5.00090134447e-02 4.40291518527e-02 3.83718132369e-02 3.34710625414e-02 2.94586793037e-02 - 2.63252408289e-02 2.40237109616e-02 2.25132701769e-02 2.17657781241e-02 2.17657781241e-02 2.25132701769e-02 - 2.40237109616e-02 2.63252408289e-02 2.94586793037e-02 3.34710625414e-02 3.83718132369e-02 4.40291518527e-02 - 5.00090134447e-02 5.53499973529e-02 5.83399236929e-02 5.67236888968e-02 4.89850720157e-02 3.62214481565e-02 - 2.23413746600e-02 1.14596764125e-02 5.17285277950e-03 2.64004483879e-03 2.64004483879e-03 5.17285277950e-03 - 1.14596764125e-02 2.23413746600e-02 3.62214481565e-02 4.89850720157e-02 5.67236888968e-02 5.83399236929e-02 - 5.77319585491e-02 5.18034033720e-02 4.57409612273e-02 4.02453701311e-02 3.55932306397e-02 3.18414068716e-02 - 2.89647599965e-02 2.69304328597e-02 2.57176061925e-02 2.53146898274e-02 2.57176061925e-02 2.69304328597e-02 - 2.89647599965e-02 3.18414068716e-02 3.55932306397e-02 4.02453701311e-02 4.57409612273e-02 5.18034033720e-02 - 5.77319585491e-02 6.21334821617e-02 6.28259810566e-02 5.75824043038e-02 4.60013609401e-02 3.09103717113e-02 - 1.69819929531e-02 7.45857574908e-03 2.64004483879e-03 1.27020863940e-03 2.64004483879e-03 7.45857574908e-03 - 1.69819929531e-02 3.09103717113e-02 4.60013609401e-02 5.75824043038e-02 6.28259810566e-02 6.21334821617e-02 - 5.94941697642e-02 5.33236907840e-02 4.74313143781e-02 4.22610610741e-02 3.79563421300e-02 3.45282284639e-02 - 3.19590319446e-02 3.02423286704e-02 2.93819034216e-02 2.93819034216e-02 3.02423286704e-02 3.19590319446e-02 - 3.45282284639e-02 3.79563421300e-02 4.22610610741e-02 4.74313143781e-02 5.33236907840e-02 5.94941697642e-02 - 6.49555724266e-02 6.79320857310e-02 6.60504635380e-02 5.76200322747e-02 4.35588929466e-02 2.77489957459e-02 - 1.46090879135e-02 6.32692063078e-03 2.64004483879e-03 2.64004483879e-03 6.32692063078e-03 1.46090879135e-02 - 2.77489957459e-02 4.35588929466e-02 5.76200322747e-02 6.60504635380e-02 6.79320857310e-02 6.49555724266e-02 - 6.05796981280e-02 5.45841783826e-02 4.91148354625e-02 4.44094609233e-02 4.05244812822e-02 3.74634706166e-02 - 3.52402742752e-02 3.38859304601e-02 3.34304675050e-02 3.38859304601e-02 3.52402742752e-02 3.74634706166e-02 - 4.05244812822e-02 4.44094609233e-02 4.91148354625e-02 5.45841783826e-02 6.05796981280e-02 6.64898780493e-02 - 7.10787520021e-02 7.23556493700e-02 6.81077724909e-02 5.74463352203e-02 4.22847991283e-02 2.67478820537e-02 - 1.46090879135e-02 7.45857574908e-03 5.17285277950e-03 7.45857574908e-03 1.46090879135e-02 2.67478820537e-02 - 4.22847991283e-02 5.74463352203e-02 6.81077724909e-02 7.23556493700e-02 7.10787520021e-02 6.64898780493e-02 - 6.11288569567e-02 5.56676247698e-02 5.08044555558e-02 4.66403070569e-02 4.32002938784e-02 4.05199675384e-02 - 3.86662855632e-02 3.77147526395e-02 3.77147526395e-02 3.86662855632e-02 4.05199675384e-02 4.32002938784e-02 - 4.66403070569e-02 5.08044555558e-02 5.56676247698e-02 6.11288569567e-02 6.68641206041e-02 7.21264918488e-02 - 7.55368812409e-02 7.51264696898e-02 6.91119067669e-02 5.73653289979e-02 4.22847991283e-02 2.77489957459e-02 - 1.69819929531e-02 1.14596764125e-02 1.14596764125e-02 1.69819929531e-02 2.77489957459e-02 4.22847991283e-02 - 5.73653289979e-02 6.91119067669e-02 7.51264696898e-02 7.55368812409e-02 7.21264918488e-02 6.68641206041e-02 - 6.13379141192e-02 5.66331890923e-02 5.24477482650e-02 4.88190878681e-02 4.57968161948e-02 4.34838779539e-02 - 4.20165784801e-02 4.15120643887e-02 4.20165784801e-02 4.34838779539e-02 4.57968161948e-02 4.88190878681e-02 - 5.24477482650e-02 5.66331890923e-02 6.13379141192e-02 6.64284767715e-02 7.15201290633e-02 7.57970302390e-02 - 7.78881394404e-02 7.60705845667e-02 6.91119067669e-02 5.74463352203e-02 4.35588929466e-02 3.09103717113e-02 - 2.23413746600e-02 1.93490286376e-02 2.23413746600e-02 3.09103717113e-02 4.35588929466e-02 5.74463352203e-02 - 6.91119067669e-02 7.60705845667e-02 7.78881394404e-02 7.57970302390e-02 7.15201290633e-02 6.64284767715e-02 - 6.13379141192e-02 5.74449785733e-02 5.38883507401e-02 5.07121410456e-02 4.80406383964e-02 4.60731359718e-02 - 4.50208900473e-02 4.50208900473e-02 4.60731359718e-02 4.80406383964e-02 5.07121410456e-02 5.38883507401e-02 - 5.74449785733e-02 6.13379141192e-02 6.55352798807e-02 6.98920688762e-02 7.40032629540e-02 7.70723261920e-02 - 7.78881394404e-02 7.51264696898e-02 6.81077724909e-02 5.76200322747e-02 4.60013609401e-02 3.62214481565e-02 - 3.07039905741e-02 3.07039905741e-02 3.62214481565e-02 4.60013609401e-02 5.76200322747e-02 6.81077724909e-02 - 7.51264696898e-02 7.78881394404e-02 7.70723261920e-02 7.40032629540e-02 6.98920688762e-02 6.55352798807e-02 - 6.11288569567e-02 5.79474348197e-02 5.48714786192e-02 5.20147259753e-02 4.96193341715e-02 4.79989400749e-02 - 4.74231711778e-02 4.79989400749e-02 4.96193341715e-02 5.20147259753e-02 5.48714786192e-02 5.79474348197e-02 - 6.11288569567e-02 6.44054743742e-02 6.77723654588e-02 7.10977313661e-02 7.40032629540e-02 7.57970302390e-02 - 7.55368812409e-02 7.23556493700e-02 6.60504635380e-02 5.75824043038e-02 4.89850720157e-02 4.26203265537e-02 - 4.02808330656e-02 4.26203265537e-02 4.89850720157e-02 5.75824043038e-02 6.60504635380e-02 7.23556493700e-02 - 7.55368812409e-02 7.57970302390e-02 7.40032629540e-02 7.10977313661e-02 6.77723654588e-02 6.44054743742e-02 - 6.05796981280e-02 5.78981879671e-02 5.51031089527e-02 5.24339557043e-02 5.02828320119e-02 4.90700187394e-02 - 4.90700187394e-02 5.02828320119e-02 5.24339557043e-02 5.51031089527e-02 5.78981879671e-02 6.05796981280e-02 - 6.30873277659e-02 6.54719417706e-02 6.77723654588e-02 6.98920688762e-02 7.15201290633e-02 7.21264918488e-02 - 7.10787520021e-02 6.79320857310e-02 6.28259810566e-02 5.67236888968e-02 5.12221625406e-02 4.79609401864e-02 - 4.79609401864e-02 5.12221625406e-02 5.67236888968e-02 6.28259810566e-02 6.79320857310e-02 7.10787520021e-02 - 7.21264918488e-02 7.15201290633e-02 6.98920688762e-02 6.77723654588e-02 6.54719417706e-02 6.30873277659e-02 - 5.94941697642e-02 5.70612480291e-02 5.43692149489e-02 5.18281863755e-02 4.99825941802e-02 4.93048229800e-02 - 4.99825941802e-02 5.18281863755e-02 5.43692149489e-02 5.70612480291e-02 5.94941697642e-02 6.14923433640e-02 - 6.30873277659e-02 6.44054743742e-02 6.55352798807e-02 6.64284767715e-02 6.68641206041e-02 6.64898780493e-02 - 6.49555724266e-02 6.21334821617e-02 5.83399236929e-02 5.43925934286e-02 5.13869204668e-02 5.02620593726e-02 - 5.13869204668e-02 5.43925934286e-02 5.83399236929e-02 6.21334821617e-02 6.49555724266e-02 6.64898780493e-02 - 6.68641206041e-02 6.64284767715e-02 6.55352798807e-02 6.44054743742e-02 6.30873277659e-02 6.14923433640e-02 - 6.21334821617e-02 5.83399236929e-02 5.43925934286e-02 5.13869204668e-02 5.02620593726e-02 5.13869204668e-02 - 5.43925934286e-02 5.83399236929e-02 6.21334821617e-02 6.49555724266e-02 6.64898780493e-02 6.68641206041e-02 - 6.64284767715e-02 6.55352798807e-02 6.44054743742e-02 6.30873277659e-02 6.14923433640e-02 5.94941697642e-02 - 5.70612480291e-02 5.43692149489e-02 5.18281863755e-02 4.99825941802e-02 4.93048229800e-02 4.99825941802e-02 - 5.18281863755e-02 5.43692149489e-02 5.70612480291e-02 5.94941697642e-02 6.14923433640e-02 6.30873277659e-02 - 6.44054743742e-02 6.55352798807e-02 6.64284767715e-02 6.68641206041e-02 6.64898780493e-02 6.49555724266e-02 - 5.83399236929e-02 5.43239294918e-02 5.06194135765e-02 4.83941231678e-02 4.83941231678e-02 5.06194135765e-02 - 5.43239294918e-02 5.83399236929e-02 6.15702941626e-02 6.33842515281e-02 6.37149803432e-02 6.28828729732e-02 - 6.13334872428e-02 5.94462807362e-02 5.74494623672e-02 5.54167137150e-02 5.33236907840e-02 5.11403130173e-02 - 4.89192305177e-02 4.68401774785e-02 4.51877782102e-02 4.42634768270e-02 4.42634768270e-02 4.51877782102e-02 - 4.68401774785e-02 4.89192305177e-02 5.11403130173e-02 5.33236907840e-02 5.54167137150e-02 5.74494623672e-02 - 5.94462807362e-02 6.13334872428e-02 6.28828729732e-02 6.37149803432e-02 6.33842515281e-02 6.15702941626e-02 - 5.43925934286e-02 5.06194135765e-02 4.76689314688e-02 4.65545163206e-02 4.76689314688e-02 5.06194135765e-02 - 5.43925934286e-02 5.77843769256e-02 5.98878714669e-02 6.03694423859e-02 5.94150808572e-02 5.74762428735e-02 - 5.50251512552e-02 5.24194501424e-02 4.98633146719e-02 4.74313143781e-02 4.51323632879e-02 4.29832635915e-02 - 4.10571769449e-02 3.94908104948e-02 3.84534160516e-02 3.80886538087e-02 3.84534160516e-02 3.94908104948e-02 - 4.10571769449e-02 4.29832635915e-02 4.51323632879e-02 4.74313143781e-02 4.98633146719e-02 5.24194501424e-02 - 5.50251512552e-02 5.74762428735e-02 5.94150808572e-02 6.03694423859e-02 5.98878714669e-02 5.77843769256e-02 - 5.13869204668e-02 4.83941231678e-02 4.65545163206e-02 4.65545163206e-02 4.83941231678e-02 5.13869204668e-02 - 5.44475263977e-02 5.65511919643e-02 5.71251588417e-02 5.61547897924e-02 5.40097122002e-02 5.11831265828e-02 - 4.81082332430e-02 4.50819394473e-02 4.22610610741e-02 3.97029159910e-02 3.74259862301e-02 3.54595415232e-02 - 3.38635928392e-02 3.27229087590e-02 3.21243272248e-02 3.21243272248e-02 3.27229087590e-02 3.38635928392e-02 - 3.54595415232e-02 3.74259862301e-02 3.97029159910e-02 4.22610610741e-02 4.50819394473e-02 4.81082332430e-02 - 5.11831265828e-02 5.40097122002e-02 5.61547897924e-02 5.71251588417e-02 5.65511919643e-02 5.44475263977e-02 - 5.02620593726e-02 4.83941231678e-02 4.76689314688e-02 4.83941231678e-02 5.02620593726e-02 5.24797871309e-02 - 5.41129564364e-02 5.44829894560e-02 5.33923081840e-02 5.10737783335e-02 4.79731106469e-02 4.45431970579e-02 - 4.11328816616e-02 3.79563421300e-02 3.51127517762e-02 3.26341221073e-02 3.05340710560e-02 2.88348357920e-02 - 2.75721078901e-02 2.67889182249e-02 2.65227612839e-02 2.67889182249e-02 2.75721078901e-02 2.88348357920e-02 - 3.05340710560e-02 3.26341221073e-02 3.51127517762e-02 3.79563421300e-02 4.11328816616e-02 4.45431970579e-02 - 4.79731106469e-02 5.10737783335e-02 5.33923081840e-02 5.44829894560e-02 5.41129564364e-02 5.24797871309e-02 - 5.13869204668e-02 5.06194135765e-02 5.06194135765e-02 5.13869204668e-02 5.24797871309e-02 5.32152215954e-02 - 5.29846351657e-02 5.15101646150e-02 4.88987422193e-02 4.55081727847e-02 4.17618689283e-02 3.80204685260e-02 - 3.45282284639e-02 3.14127386696e-02 2.87187367840e-02 2.64534808200e-02 2.46187421852e-02 2.32217587400e-02 - 2.22755921268e-02 2.17964249596e-02 2.17964249596e-02 2.22755921268e-02 2.32217587400e-02 2.46187421852e-02 - 2.64534808200e-02 2.87187367840e-02 3.14127386696e-02 3.45282284639e-02 3.80204685260e-02 4.17618689283e-02 - 4.55081727847e-02 4.88987422193e-02 5.15101646150e-02 5.29846351657e-02 5.32152215954e-02 5.24797871309e-02 - 5.43925934286e-02 5.43239294918e-02 5.43925934286e-02 5.44475263977e-02 5.41129564364e-02 5.29846351657e-02 - 5.08390344517e-02 4.77311231410e-02 4.39402098517e-02 3.98358227133e-02 3.57591480990e-02 3.19590319446e-02 - 2.85763383726e-02 2.56635113913e-02 2.32231030162e-02 2.12421582644e-02 1.97084075068e-02 1.86137801375e-02 - 1.79555609317e-02 1.77355963866e-02 1.79555609317e-02 1.86137801375e-02 1.97084075068e-02 2.12421582644e-02 - 2.32231030162e-02 2.56635113913e-02 2.85763383726e-02 3.19590319446e-02 3.57591480990e-02 3.98358227133e-02 - 4.39402098517e-02 4.77311231410e-02 5.08390344517e-02 5.29846351657e-02 5.41129564364e-02 5.44475263977e-02 - 5.83399236929e-02 5.83399236929e-02 5.77843769256e-02 5.65511919643e-02 5.44829894560e-02 5.15101646150e-02 - 4.77311231410e-02 4.34003076052e-02 3.88462459817e-02 3.43811654173e-02 3.02423286704e-02 2.65706573512e-02 - 2.34202555044e-02 2.07887392229e-02 1.86504890434e-02 1.69767793036e-02 1.57423428102e-02 1.49279448733e-02 - 1.45226393383e-02 1.45226393383e-02 1.49279448733e-02 1.57423428102e-02 1.69767793036e-02 1.86504890434e-02 - 2.07887392229e-02 2.34202555044e-02 2.65706573512e-02 3.02423286704e-02 3.43811654173e-02 3.88462459817e-02 - 4.34003076052e-02 4.77311231410e-02 5.15101646150e-02 5.44829894560e-02 5.65511919643e-02 5.77843769256e-02 - 6.21334821617e-02 6.15702941626e-02 5.98878714669e-02 5.71251588417e-02 5.33923081840e-02 4.88987422193e-02 - 4.39402098517e-02 3.88462459817e-02 3.39176800802e-02 2.93819034216e-02 2.53749373622e-02 2.19482820950e-02 - 1.90940368490e-02 1.67754563001e-02 1.49488960464e-02 1.35733603577e-02 1.26143883181e-02 1.20475550421e-02 - 1.18598583649e-02 1.20475550421e-02 1.26143883181e-02 1.35733603577e-02 1.49488960464e-02 1.67754563001e-02 - 1.90940368490e-02 2.19482820950e-02 2.53749373622e-02 2.93819034216e-02 3.39176800802e-02 3.88462459817e-02 - 4.39402098517e-02 4.88987422193e-02 5.33923081840e-02 5.71251588417e-02 5.98878714669e-02 6.15702941626e-02 - 6.49555724266e-02 6.33842515281e-02 6.03694423859e-02 5.61547897924e-02 5.10737783335e-02 4.55081727847e-02 - 3.98358227133e-02 3.43811654173e-02 2.93819034216e-02 2.49776956914e-02 2.12198093897e-02 1.80960146721e-02 - 1.55601992220e-02 1.35553259639e-02 1.20255038743e-02 1.09215936737e-02 1.02054916185e-02 9.85294674885e-03 - 9.85294674885e-03 1.02054916185e-02 1.09215936737e-02 1.20255038743e-02 1.35553259639e-02 1.55601992220e-02 - 1.80960146721e-02 2.12198093897e-02 2.49776956914e-02 2.93819034216e-02 3.43811654173e-02 3.98358227133e-02 - 4.55081727847e-02 5.10737783335e-02 5.61547897924e-02 6.03694423859e-02 6.33842515281e-02 6.49555724266e-02 - 6.64898780493e-02 6.37149803432e-02 5.94150808572e-02 5.40097122002e-02 4.79731106469e-02 4.17618689283e-02 - 3.57591480990e-02 3.02423286704e-02 2.53749373622e-02 2.12198093897e-02 1.77666865554e-02 1.49636867906e-02 - 1.27424344623e-02 1.10330000246e-02 9.77183223433e-03 8.90705726329e-03 8.40200942373e-03 8.23585736203e-03 - 8.40200942373e-03 8.90705726329e-03 9.77183223433e-03 1.10330000246e-02 1.27424344623e-02 1.49636867906e-02 - 1.77666865554e-02 2.12198093897e-02 2.53749373622e-02 3.02423286704e-02 3.57591480990e-02 4.17618689283e-02 - 4.79731106469e-02 5.40097122002e-02 5.94150808572e-02 6.37149803432e-02 6.64898780493e-02 6.74494907981e-02 - 6.68641206041e-02 6.28828729732e-02 5.74762428735e-02 5.11831265828e-02 4.45431970579e-02 3.80204685260e-02 - 3.19590319446e-02 2.65706573512e-02 2.19482820950e-02 1.80960146721e-02 1.49636867906e-02 1.24755048074e-02 - 1.05489279259e-02 9.10613117226e-03 8.08133005705e-03 7.42492384580e-03 7.10459522193e-03 7.10459522193e-03 - 7.42492384580e-03 8.08133005705e-03 9.10613117226e-03 1.05489279259e-02 1.24755048074e-02 1.49636867906e-02 - 1.80960146721e-02 2.19482820950e-02 2.65706573512e-02 3.19590319446e-02 3.80204685260e-02 4.45431970579e-02 - 5.11831265828e-02 5.74762428735e-02 6.28828729732e-02 6.68641206041e-02 6.89793219251e-02 6.89793219251e-02 - 6.64284767715e-02 6.13334872428e-02 5.50251512552e-02 4.81082332430e-02 4.11328816616e-02 3.45282284639e-02 - 2.85763383726e-02 2.34202555044e-02 1.90940368490e-02 1.55601992220e-02 1.27424344623e-02 1.05489279259e-02 - 8.88822832040e-03 7.68014935330e-03 6.86170422323e-03 6.38840491477e-03 6.23361812745e-03 6.38840491477e-03 - 6.86170422323e-03 7.68014935330e-03 8.88822832040e-03 1.05489279259e-02 1.27424344623e-02 1.55601992220e-02 - 1.90940368490e-02 2.34202555044e-02 2.85763383726e-02 3.45282284639e-02 4.11328816616e-02 4.81082332430e-02 - 5.50251512552e-02 6.13334872428e-02 6.64284767715e-02 6.97522426294e-02 7.09081350393e-02 6.97522426294e-02 - 6.55352798807e-02 5.94462807362e-02 5.24194501424e-02 4.50819394473e-02 3.79563421300e-02 3.14127386696e-02 - 2.56635113913e-02 2.07887392229e-02 1.67754563001e-02 1.35553259639e-02 1.10330000246e-02 9.10613117226e-03 - 7.68014935330e-03 6.67761981445e-03 6.04118457084e-03 5.73268604942e-03 5.73268604942e-03 6.04118457084e-03 - 6.67761981445e-03 7.68014935330e-03 9.10613117226e-03 1.10330000246e-02 1.35553259639e-02 1.67754563001e-02 - 2.07887392229e-02 2.56635113913e-02 3.14127386696e-02 3.79563421300e-02 4.50819394473e-02 5.24194501424e-02 - 5.94462807362e-02 6.55352798807e-02 7.00474085615e-02 7.24538631804e-02 7.24538631804e-02 7.00474085615e-02 - 6.44054743742e-02 5.74494623672e-02 4.98633146719e-02 4.22610610741e-02 3.51127517762e-02 2.87187367840e-02 - 2.32231030162e-02 1.86504890434e-02 1.49488960464e-02 1.20255038743e-02 9.77183223433e-03 8.08133005705e-03 - 6.86170422323e-03 6.04118457084e-03 5.56920678348e-03 5.41531278039e-03 5.56920678348e-03 6.04118457084e-03 - 6.86170422323e-03 8.08133005705e-03 9.77183223433e-03 1.20255038743e-02 1.49488960464e-02 1.86504890434e-02 - 2.32231030162e-02 2.87187367840e-02 3.51127517762e-02 4.22610610741e-02 4.98633146719e-02 5.74494623672e-02 - 6.44054743742e-02 7.00474085615e-02 7.37387049341e-02 7.50243106749e-02 7.37387049341e-02 7.00474085615e-02 - 6.30873277659e-02 5.54167137150e-02 4.74313143781e-02 3.97029159910e-02 3.26341221073e-02 2.64534808200e-02 - 2.12421582644e-02 1.69767793036e-02 1.35733603577e-02 1.09215936737e-02 8.90705726329e-03 7.42492384580e-03 - 6.38840491477e-03 5.73268604942e-03 5.41531278039e-03 5.41531278039e-03 5.73268604942e-03 6.38840491477e-03 - 7.42492384580e-03 8.90705726329e-03 1.09215936737e-02 1.35733603577e-02 1.69767793036e-02 2.12421582644e-02 - 2.64534808200e-02 3.26341221073e-02 3.97029159910e-02 4.74313143781e-02 5.54167137150e-02 6.30873277659e-02 - 6.97522426294e-02 7.47020608958e-02 7.73458021392e-02 7.73458021392e-02 7.47020608958e-02 6.97522426294e-02 - 6.14923433640e-02 5.33236907840e-02 4.51323632879e-02 3.74259862301e-02 3.05340710560e-02 2.46187421852e-02 - 1.97084075068e-02 1.57423428102e-02 1.26143883181e-02 1.02054916185e-02 8.40200942373e-03 7.10459522193e-03 - 6.23361812745e-03 5.73268604942e-03 5.56920678348e-03 5.73268604942e-03 6.23361812745e-03 7.10459522193e-03 - 8.40200942373e-03 1.02054916185e-02 1.26143883181e-02 1.57423428102e-02 1.97084075068e-02 2.46187421852e-02 - 3.05340710560e-02 3.74259862301e-02 4.51323632879e-02 5.33236907840e-02 6.14923433640e-02 6.89793219251e-02 - 7.50510418428e-02 7.90236437036e-02 8.04073084192e-02 7.90236437036e-02 7.50510418428e-02 6.89793219251e-02 - 5.94941697642e-02 5.11403130173e-02 4.29832635915e-02 3.54595415232e-02 2.88348357920e-02 2.32217587400e-02 - 1.86137801375e-02 1.49279448733e-02 1.20475550421e-02 9.85294674885e-03 8.23585736203e-03 7.10459522193e-03 - 6.38840491477e-03 6.04118457084e-03 6.04118457084e-03 6.38840491477e-03 7.10459522193e-03 8.23585736203e-03 - 9.85294674885e-03 1.20475550421e-02 1.49279448733e-02 1.86137801375e-02 2.32217587400e-02 2.88348357920e-02 - 3.54595415232e-02 4.29832635915e-02 5.11403130173e-02 5.94941697642e-02 6.74494907981e-02 7.43082663472e-02 - 7.93709590427e-02 8.20645507484e-02 8.20645507484e-02 7.93709590427e-02 7.43082663472e-02 6.74494907981e-02 - 5.70612480291e-02 4.89192305177e-02 4.10571769449e-02 3.38635928392e-02 2.75721078901e-02 2.22755921268e-02 - 1.79555609317e-02 1.45226393383e-02 1.18598583649e-02 9.85294674885e-03 8.40200942373e-03 7.42492384580e-03 - 6.86170422323e-03 6.67761981445e-03 6.86170422323e-03 7.42492384580e-03 8.40200942373e-03 9.85294674885e-03 - 1.18598583649e-02 1.45226393383e-02 1.79555609317e-02 2.22755921268e-02 2.75721078901e-02 3.38635928392e-02 - 4.10571769449e-02 4.89192305177e-02 5.70612480291e-02 6.49555724266e-02 7.19923628057e-02 7.75631573239e-02 - 8.11458755837e-02 8.23828782457e-02 8.11458755837e-02 7.75631573239e-02 7.19923628057e-02 6.49555724266e-02 - 5.43692149489e-02 4.68401774785e-02 3.94908104948e-02 3.27229087590e-02 2.67889182249e-02 2.17964249596e-02 - 1.77355963866e-02 1.45226393383e-02 1.20475550421e-02 1.02054916185e-02 8.90705726329e-03 8.08133005705e-03 - 7.68014935330e-03 7.68014935330e-03 8.08133005705e-03 8.90705726329e-03 1.02054916185e-02 1.20475550421e-02 - 1.45226393383e-02 1.77355963866e-02 2.17964249596e-02 2.67889182249e-02 3.27229087590e-02 3.94908104948e-02 - 4.68401774785e-02 5.43692149489e-02 6.15702941626e-02 6.79320857310e-02 7.30418134594e-02 7.66122811094e-02 - 7.84511058955e-02 7.84511058955e-02 7.66122811094e-02 7.30418134594e-02 6.79320857310e-02 6.15702941626e-02 - 5.18281863755e-02 4.51877782102e-02 3.84534160516e-02 3.21243272248e-02 2.65227612839e-02 2.17964249596e-02 - 1.79555609317e-02 1.49279448733e-02 1.26143883181e-02 1.09215936737e-02 9.77183223433e-03 9.10613117226e-03 - 8.88822832040e-03 9.10613117226e-03 9.77183223433e-03 1.09215936737e-02 1.26143883181e-02 1.49279448733e-02 - 1.79555609317e-02 2.17964249596e-02 2.65227612839e-02 3.21243272248e-02 3.84534160516e-02 4.51877782102e-02 - 5.18281863755e-02 5.77843769256e-02 6.25800698666e-02 6.60504635380e-02 6.83266751007e-02 6.96179820017e-02 - 7.00400365127e-02 6.96179820017e-02 6.83266751007e-02 6.60504635380e-02 6.25800698666e-02 5.77843769256e-02 - 4.99825941802e-02 4.42634768270e-02 3.80886538087e-02 3.21243272248e-02 2.67889182249e-02 2.22755921268e-02 - 1.86137801375e-02 1.57423428102e-02 1.35733603577e-02 1.20255038743e-02 1.10330000246e-02 1.05489279259e-02 - 1.05489279259e-02 1.10330000246e-02 1.20255038743e-02 1.35733603577e-02 1.57423428102e-02 1.86137801375e-02 - 2.22755921268e-02 2.67889182249e-02 3.21243272248e-02 3.80886538087e-02 4.42634768270e-02 4.99825941802e-02 - 5.44475263977e-02 5.70772559013e-02 5.79103146750e-02 5.76200322747e-02 5.70355201353e-02 5.66663226477e-02 - 5.66663226477e-02 5.70355201353e-02 5.76200322747e-02 5.79103146750e-02 5.70772559013e-02 5.44475263977e-02 - 4.93048229800e-02 4.42634768270e-02 3.84534160516e-02 3.27229087590e-02 2.75721078901e-02 2.32217587400e-02 - 1.97084075068e-02 1.69767793036e-02 1.49488960464e-02 1.35553259639e-02 1.27424344623e-02 1.24755048074e-02 - 1.27424344623e-02 1.35553259639e-02 1.49488960464e-02 1.69767793036e-02 1.97084075068e-02 2.32217587400e-02 - 2.75721078901e-02 3.27229087590e-02 3.84534160516e-02 4.42634768270e-02 4.93048229800e-02 5.24797871309e-02 - 5.29210396854e-02 5.07010770424e-02 4.70389926376e-02 4.35588929466e-02 4.13123485649e-02 4.05694134160e-02 - 4.13123485649e-02 4.35588929466e-02 4.70389926376e-02 5.07010770424e-02 5.29210396854e-02 5.24797871309e-02 - 4.99825941802e-02 4.51877782102e-02 3.94908104948e-02 3.38635928392e-02 2.88348357920e-02 2.46187421852e-02 - 2.12421582644e-02 1.86504890434e-02 1.67754563001e-02 1.55601992220e-02 1.49636867906e-02 1.49636867906e-02 - 1.55601992220e-02 1.67754563001e-02 1.86504890434e-02 2.12421582644e-02 2.46187421852e-02 2.88348357920e-02 - 3.38635928392e-02 3.94908104948e-02 4.51877782102e-02 4.99825941802e-02 5.24797871309e-02 5.13723037105e-02 - 4.64751950426e-02 3.93541671489e-02 3.25101129901e-02 2.77489957459e-02 2.54935088837e-02 2.54935088837e-02 - 2.77489957459e-02 3.25101129901e-02 3.93541671489e-02 4.64751950426e-02 5.13723037105e-02 5.24797871309e-02 - 5.18281863755e-02 4.68401774785e-02 4.10571769449e-02 3.54595415232e-02 3.05340710560e-02 2.64534808200e-02 - 2.32231030162e-02 2.07887392229e-02 1.90940368490e-02 1.80960146721e-02 1.77666865554e-02 1.80960146721e-02 - 1.90940368490e-02 2.07887392229e-02 2.32231030162e-02 2.64534808200e-02 3.05340710560e-02 3.54595415232e-02 - 4.10571769449e-02 4.68401774785e-02 5.18281863755e-02 5.44475263977e-02 5.29210396854e-02 4.64751950426e-02 - 3.65582592974e-02 2.63856510811e-02 1.87771308641e-02 1.46090879135e-02 1.33581335706e-02 1.46090879135e-02 - 1.87771308641e-02 2.63856510811e-02 3.65582592974e-02 4.64751950426e-02 5.29210396854e-02 5.44475263977e-02 - 5.43692149489e-02 4.89192305177e-02 4.29832635915e-02 3.74259862301e-02 3.26341221073e-02 2.87187367840e-02 - 2.56635113913e-02 2.34202555044e-02 2.19482820950e-02 2.12198093897e-02 2.12198093897e-02 2.19482820950e-02 - 2.34202555044e-02 2.56635113913e-02 2.87187367840e-02 3.26341221073e-02 3.74259862301e-02 4.29832635915e-02 - 4.89192305177e-02 5.43692149489e-02 5.77843769256e-02 5.70772559013e-02 5.07010770424e-02 3.93541671489e-02 - 2.63856510811e-02 1.56860392578e-02 9.13060134292e-03 6.32692063078e-03 6.32692063078e-03 9.13060134292e-03 - 1.56860392578e-02 2.63856510811e-02 3.93541671489e-02 5.07010770424e-02 5.70772559013e-02 5.77843769256e-02 - 5.70612480291e-02 5.11403130173e-02 4.51323632879e-02 3.97029159910e-02 3.51127517762e-02 3.14127386696e-02 - 2.85763383726e-02 2.65706573512e-02 2.53749373622e-02 2.49776956914e-02 2.53749373622e-02 2.65706573512e-02 - 2.85763383726e-02 3.14127386696e-02 3.51127517762e-02 3.97029159910e-02 4.51323632879e-02 5.11403130173e-02 - 5.70612480291e-02 6.15702941626e-02 6.25800698666e-02 5.79103146750e-02 4.70389926376e-02 3.25101129901e-02 - 1.87771308641e-02 9.13060134292e-03 4.10298626852e-03 2.64004483879e-03 4.10298626852e-03 9.13060134292e-03 - 1.87771308641e-02 3.25101129901e-02 4.70389926376e-02 5.79103146750e-02 6.25800698666e-02 6.15702941626e-02 - 5.94941697642e-02 5.33236907840e-02 4.74313143781e-02 4.22610610741e-02 3.79563421300e-02 3.45282284639e-02 - 3.19590319446e-02 3.02423286704e-02 2.93819034216e-02 2.93819034216e-02 3.02423286704e-02 3.19590319446e-02 - 3.45282284639e-02 3.79563421300e-02 4.22610610741e-02 4.74313143781e-02 5.33236907840e-02 5.94941697642e-02 - 6.49555724266e-02 6.79320857310e-02 6.60504635380e-02 5.76200322747e-02 4.35588929466e-02 2.77489957459e-02 - 1.46090879135e-02 6.32692063078e-03 2.64004483879e-03 2.64004483879e-03 6.32692063078e-03 1.46090879135e-02 - 2.77489957459e-02 4.35588929466e-02 5.76200322747e-02 6.60504635380e-02 6.79320857310e-02 6.49555724266e-02 - 6.14923433640e-02 5.54167137150e-02 4.98633146719e-02 4.50819394473e-02 4.11328816616e-02 3.80204685260e-02 - 3.57591480990e-02 3.43811654173e-02 3.39176800802e-02 3.43811654173e-02 3.57591480990e-02 3.80204685260e-02 - 4.11328816616e-02 4.50819394473e-02 4.98633146719e-02 5.54167137150e-02 6.14923433640e-02 6.74494907981e-02 - 7.19923628057e-02 7.30418134594e-02 6.83266751007e-02 5.70355201353e-02 4.13123485649e-02 2.54935088837e-02 - 1.33581335706e-02 6.32692063078e-03 4.10298626852e-03 6.32692063078e-03 1.33581335706e-02 2.54935088837e-02 - 4.13123485649e-02 5.70355201353e-02 6.83266751007e-02 7.30418134594e-02 7.19923628057e-02 6.74494907981e-02 - 6.30873277659e-02 5.74494623672e-02 5.24194501424e-02 4.81082332430e-02 4.45431970579e-02 4.17618689283e-02 - 3.98358227133e-02 3.88462459817e-02 3.88462459817e-02 3.98358227133e-02 4.17618689283e-02 4.45431970579e-02 - 4.81082332430e-02 5.24194501424e-02 5.74494623672e-02 6.30873277659e-02 6.89793219251e-02 7.43082663472e-02 - 7.75631573239e-02 7.66122811094e-02 6.96179820017e-02 5.66663226477e-02 4.05694134160e-02 2.54935088837e-02 - 1.46090879135e-02 9.13060134292e-03 9.13060134292e-03 1.46090879135e-02 2.54935088837e-02 4.05694134160e-02 - 5.66663226477e-02 6.96179820017e-02 7.66122811094e-02 7.75631573239e-02 7.43082663472e-02 6.89793219251e-02 - 6.44054743742e-02 5.94462807362e-02 5.50251512552e-02 5.11831265828e-02 4.79731106469e-02 4.55081727847e-02 - 4.39402098517e-02 4.34003076052e-02 4.39402098517e-02 4.55081727847e-02 4.79731106469e-02 5.11831265828e-02 - 5.50251512552e-02 5.94462807362e-02 6.44054743742e-02 6.97522426294e-02 7.50510418428e-02 7.93709590427e-02 - 8.11458755837e-02 7.84511058955e-02 7.00400365127e-02 5.66663226477e-02 4.13123485649e-02 2.77489957459e-02 - 1.87771308641e-02 1.56860392578e-02 1.87771308641e-02 2.77489957459e-02 4.13123485649e-02 5.66663226477e-02 - 7.00400365127e-02 7.84511058955e-02 8.11458755837e-02 7.93709590427e-02 7.50510418428e-02 6.97522426294e-02 - 6.55352798807e-02 6.13334872428e-02 5.74762428735e-02 5.40097122002e-02 5.10737783335e-02 4.88987422193e-02 - 4.77311231410e-02 4.77311231410e-02 4.88987422193e-02 5.10737783335e-02 5.40097122002e-02 5.74762428735e-02 - 6.13334872428e-02 6.55352798807e-02 7.00474085615e-02 7.47020608958e-02 7.90236437036e-02 8.20645507484e-02 - 8.23828782457e-02 7.84511058955e-02 6.96179820017e-02 5.70355201353e-02 4.35588929466e-02 3.25101129901e-02 - 2.63856510811e-02 2.63856510811e-02 3.25101129901e-02 4.35588929466e-02 5.70355201353e-02 6.96179820017e-02 - 7.84511058955e-02 8.23828782457e-02 8.20645507484e-02 7.90236437036e-02 7.47020608958e-02 7.00474085615e-02 - 6.64284767715e-02 6.28828729732e-02 5.94150808572e-02 5.61547897924e-02 5.33923081840e-02 5.15101646150e-02 - 5.08390344517e-02 5.15101646150e-02 5.33923081840e-02 5.61547897924e-02 5.94150808572e-02 6.28828729732e-02 - 6.64284767715e-02 7.00474085615e-02 7.37387049341e-02 7.73458021392e-02 8.04073084192e-02 8.20645507484e-02 - 8.11458755837e-02 7.66122811094e-02 6.83266751007e-02 5.76200322747e-02 4.70389926376e-02 3.93541671489e-02 - 3.65582592974e-02 3.93541671489e-02 4.70389926376e-02 5.76200322747e-02 6.83266751007e-02 7.66122811094e-02 - 8.11458755837e-02 8.20645507484e-02 8.04073084192e-02 7.73458021392e-02 7.37387049341e-02 7.00474085615e-02 - 6.68641206041e-02 6.37149803432e-02 6.03694423859e-02 5.71251588417e-02 5.44829894560e-02 5.29846351657e-02 - 5.29846351657e-02 5.44829894560e-02 5.71251588417e-02 6.03694423859e-02 6.37149803432e-02 6.68641206041e-02 - 6.97522426294e-02 7.24538631804e-02 7.50243106749e-02 7.73458021392e-02 7.90236437036e-02 7.93709590427e-02 - 7.75631573239e-02 7.30418134594e-02 6.60504635380e-02 5.79103146750e-02 5.07010770424e-02 4.64751950426e-02 - 4.64751950426e-02 5.07010770424e-02 5.79103146750e-02 6.60504635380e-02 7.30418134594e-02 7.75631573239e-02 - 7.93709590427e-02 7.90236437036e-02 7.73458021392e-02 7.50243106749e-02 7.24538631804e-02 6.97522426294e-02 - 6.64898780493e-02 6.33842515281e-02 5.98878714669e-02 5.65511919643e-02 5.41129564364e-02 5.32152215954e-02 - 5.41129564364e-02 5.65511919643e-02 5.98878714669e-02 6.33842515281e-02 6.64898780493e-02 6.89793219251e-02 - 7.09081350393e-02 7.24538631804e-02 7.37387049341e-02 7.47020608958e-02 7.50510418428e-02 7.43082663472e-02 - 7.19923628057e-02 6.79320857310e-02 6.25800698666e-02 5.70772559013e-02 5.29210396854e-02 5.13723037105e-02 - 5.29210396854e-02 5.70772559013e-02 6.25800698666e-02 6.79320857310e-02 7.19923628057e-02 7.43082663472e-02 - 7.50510418428e-02 7.47020608958e-02 7.37387049341e-02 7.24538631804e-02 7.09081350393e-02 6.89793219251e-02 - 6.49555724266e-02 6.15702941626e-02 5.77843769256e-02 5.44475263977e-02 5.24797871309e-02 5.24797871309e-02 - 5.44475263977e-02 5.77843769256e-02 6.15702941626e-02 6.49555724266e-02 6.74494907981e-02 6.89793219251e-02 - 6.97522426294e-02 7.00474085615e-02 7.00474085615e-02 6.97522426294e-02 6.89793219251e-02 6.74494907981e-02 - 6.49555724266e-02 6.15702941626e-02 5.77843769256e-02 5.44475263977e-02 5.24797871309e-02 5.24797871309e-02 - 5.44475263977e-02 5.77843769256e-02 6.15702941626e-02 6.49555724266e-02 6.74494907981e-02 6.89793219251e-02 - 6.97522426294e-02 7.00474085615e-02 7.00474085615e-02 6.97522426294e-02 6.89793219251e-02 6.74494907981e-02 - 6.28259810566e-02 5.67236888968e-02 5.12221625406e-02 4.79609401864e-02 4.79609401864e-02 5.12221625406e-02 - 5.67236888968e-02 6.28259810566e-02 6.79320857310e-02 7.10787520021e-02 7.21264918488e-02 7.15201290633e-02 - 6.98920688762e-02 6.77723654588e-02 6.54719417706e-02 6.30873277659e-02 6.05796981280e-02 5.78981879671e-02 - 5.51031089527e-02 5.24339557043e-02 5.02828320119e-02 4.90700187394e-02 4.90700187394e-02 5.02828320119e-02 - 5.24339557043e-02 5.51031089527e-02 5.78981879671e-02 6.05796981280e-02 6.30873277659e-02 6.54719417706e-02 - 6.77723654588e-02 6.98920688762e-02 7.15201290633e-02 7.21264918488e-02 7.10787520021e-02 6.79320857310e-02 - 5.67236888968e-02 5.05555186569e-02 4.58777097769e-02 4.41366450522e-02 4.58777097769e-02 5.05555186569e-02 - 5.67236888968e-02 6.25800698666e-02 6.66786802062e-02 6.84139609392e-02 6.80033074139e-02 6.61022866145e-02 - 6.34040688222e-02 6.04237632524e-02 5.74494623672e-02 5.45841783826e-02 5.18355302331e-02 4.92182336225e-02 - 4.68264624901e-02 4.48486167771e-02 4.35234290368e-02 4.30547772101e-02 4.35234290368e-02 4.48486167771e-02 - 4.68264624901e-02 4.92182336225e-02 5.18355302331e-02 5.45841783826e-02 5.74494623672e-02 6.04237632524e-02 - 6.34040688222e-02 6.61022866145e-02 6.80033074139e-02 6.84139609392e-02 6.66786802062e-02 6.25800698666e-02 - 5.12221625406e-02 4.58777097769e-02 4.27064575993e-02 4.27064575993e-02 4.58777097769e-02 5.12221625406e-02 - 5.70772559013e-02 6.17513938278e-02 6.41840706496e-02 6.42180018992e-02 6.23688231248e-02 5.93841418824e-02 - 5.59201471811e-02 5.24194501424e-02 4.91148354625e-02 4.60913389830e-02 4.33721592307e-02 4.09927131873e-02 - 3.90347179512e-02 3.76190713504e-02 3.68707660171e-02 3.68707660171e-02 3.76190713504e-02 3.90347179512e-02 - 4.09927131873e-02 4.33721592307e-02 4.60913389830e-02 4.91148354625e-02 5.24194501424e-02 5.59201471811e-02 - 5.93841418824e-02 6.23688231248e-02 6.42180018992e-02 6.41840706496e-02 6.17513938278e-02 5.70772559013e-02 - 4.79609401864e-02 4.41366450522e-02 4.27064575993e-02 4.41366450522e-02 4.79609401864e-02 5.29210396854e-02 - 5.74105494947e-02 6.01184381094e-02 6.05090723285e-02 5.88318176265e-02 5.57595749637e-02 5.20033431247e-02 - 4.81082332430e-02 4.44094609233e-02 4.10670403681e-02 3.81345549630e-02 3.56312088557e-02 3.35871770820e-02 - 3.20546920774e-02 3.10978190541e-02 3.07715106065e-02 3.10978190541e-02 3.20546920774e-02 3.35871770820e-02 - 3.56312088557e-02 3.81345549630e-02 4.10670403681e-02 4.44094609233e-02 4.81082332430e-02 5.20033431247e-02 - 5.57595749637e-02 5.88318176265e-02 6.05090723285e-02 6.01184381094e-02 5.74105494947e-02 5.29210396854e-02 - 4.79609401864e-02 4.58777097769e-02 4.58777097769e-02 4.79609401864e-02 5.13723037105e-02 5.48533676650e-02 - 5.71366804742e-02 5.74676014035e-02 5.58153453540e-02 5.26787408684e-02 4.87273692032e-02 4.45431970579e-02 - 4.05244812822e-02 3.68889471691e-02 3.37228748044e-02 3.10465495213e-02 2.88661050079e-02 2.71955666447e-02 - 2.60582031450e-02 2.54803066383e-02 2.54803066383e-02 2.60582031450e-02 2.71955666447e-02 2.88661050079e-02 - 3.10465495213e-02 3.37228748044e-02 3.68889471691e-02 4.05244812822e-02 4.45431970579e-02 4.87273692032e-02 - 5.26787408684e-02 5.58153453540e-02 5.74676014035e-02 5.71366804742e-02 5.48533676650e-02 5.13723037105e-02 - 5.12221625406e-02 5.05555186569e-02 5.12221625406e-02 5.29210396854e-02 5.48533676650e-02 5.60372557288e-02 - 5.57363453523e-02 5.37510492057e-02 5.03893328752e-02 4.62088704848e-02 4.17618689283e-02 3.74634706166e-02 - 3.35632692529e-02 3.01717861136e-02 2.73140021666e-02 2.49827563157e-02 2.31688478126e-02 2.18687619531e-02 - 2.10847229658e-02 2.08223402545e-02 2.10847229658e-02 2.18687619531e-02 2.31688478126e-02 2.49827563157e-02 - 2.73140021666e-02 3.01717861136e-02 3.35632692529e-02 3.74634706166e-02 4.17618689283e-02 4.62088704848e-02 - 5.03893328752e-02 5.37510492057e-02 5.57363453523e-02 5.60372557288e-02 5.48533676650e-02 5.29210396854e-02 - 5.67236888968e-02 5.67236888968e-02 5.70772559013e-02 5.74105494947e-02 5.71366804742e-02 5.57363453523e-02 - 5.30133769166e-02 4.91578982971e-02 4.46053414397e-02 3.98358227133e-02 3.52402742752e-02 3.10717223250e-02 - 2.74512061786e-02 2.44059448105e-02 2.19185274002e-02 1.99620901041e-02 1.85132658939e-02 1.75547637226e-02 - 1.70770073925e-02 1.70770073925e-02 1.75547637226e-02 1.85132658939e-02 1.99620901041e-02 2.19185274002e-02 - 2.44059448105e-02 2.74512061786e-02 3.10717223250e-02 3.52402742752e-02 3.98358227133e-02 4.46053414397e-02 - 4.91578982971e-02 5.30133769166e-02 5.57363453523e-02 5.71366804742e-02 5.74105494947e-02 5.70772559013e-02 - 6.28259810566e-02 6.25800698666e-02 6.17513938278e-02 6.01184381094e-02 5.74676014035e-02 5.37510492057e-02 - 4.91578982971e-02 4.40529168852e-02 3.88462459817e-02 3.38859304601e-02 2.94074293899e-02 2.55281844546e-02 - 2.22726314479e-02 1.96135589165e-02 1.75083321070e-02 1.59162612755e-02 1.48031251671e-02 1.41440793855e-02 - 1.39256808178e-02 1.41440793855e-02 1.48031251671e-02 1.59162612755e-02 1.75083321070e-02 1.96135589165e-02 - 2.22726314479e-02 2.55281844546e-02 2.94074293899e-02 3.38859304601e-02 3.88462459817e-02 4.40529168852e-02 - 4.91578982971e-02 5.37510492057e-02 5.74676014035e-02 6.01184381094e-02 6.17513938278e-02 6.25800698666e-02 - 6.79320857310e-02 6.66786802062e-02 6.41840706496e-02 6.05090723285e-02 5.58153453540e-02 5.03893328752e-02 - 4.46053414397e-02 3.88462459817e-02 3.34304675050e-02 2.85734174953e-02 2.43819637041e-02 2.08735527936e-02 - 1.80109897723e-02 1.57370100687e-02 1.39945083398e-02 1.27333396536e-02 1.19137265332e-02 1.15097880648e-02 - 1.15097880648e-02 1.19137265332e-02 1.27333396536e-02 1.39945083398e-02 1.57370100687e-02 1.80109897723e-02 - 2.08735527936e-02 2.43819637041e-02 2.85734174953e-02 3.34304675050e-02 3.88462459817e-02 4.46053414397e-02 - 5.03893328752e-02 5.58153453540e-02 6.05090723285e-02 6.41840706496e-02 6.66786802062e-02 6.79320857310e-02 - 7.10787520021e-02 6.84139609392e-02 6.42180018992e-02 5.88318176265e-02 5.26787408684e-02 4.62088704848e-02 - 3.98358227133e-02 3.38859304601e-02 2.85734174953e-02 2.40011711299e-02 2.01812628043e-02 1.70678712692e-02 - 1.45906790875e-02 1.26769712537e-02 1.12609832188e-02 1.02881382638e-02 9.71912104775e-03 9.53173661310e-03 - 9.71912104775e-03 1.02881382638e-02 1.12609832188e-02 1.26769712537e-02 1.45906790875e-02 1.70678712692e-02 - 2.01812628043e-02 2.40011711299e-02 2.85734174953e-02 3.38859304601e-02 3.98358227133e-02 4.62088704848e-02 - 5.26787408684e-02 5.88318176265e-02 6.42180018992e-02 6.84139609392e-02 7.10787520021e-02 7.19923628057e-02 - 7.21264918488e-02 6.80033074139e-02 6.23688231248e-02 5.57595749637e-02 4.87273692032e-02 4.17618689283e-02 - 3.52402742752e-02 2.94074293899e-02 2.43819637041e-02 2.01812628043e-02 1.67567114426e-02 1.40283418589e-02 - 1.19093466628e-02 1.03186231402e-02 9.18679124184e-03 8.46060891145e-03 8.10563303358e-03 8.10563303358e-03 - 8.46060891145e-03 9.18679124184e-03 1.03186231402e-02 1.19093466628e-02 1.40283418589e-02 1.67567114426e-02 - 2.01812628043e-02 2.43819637041e-02 2.94074293899e-02 3.52402742752e-02 4.17618689283e-02 4.87273692032e-02 - 5.57595749637e-02 6.23688231248e-02 6.80033074139e-02 7.21264918488e-02 7.43082663472e-02 7.43082663472e-02 - 7.15201290633e-02 6.61022866145e-02 5.93841418824e-02 5.20033431247e-02 4.45431970579e-02 3.74634706166e-02 - 3.10717223250e-02 2.55281844546e-02 2.08735527936e-02 1.70678712692e-02 1.40283418589e-02 1.16573532374e-02 - 9.85925299562e-03 8.54973346172e-03 7.66146344666e-03 7.14689010595e-03 6.97836085285e-03 7.14689010595e-03 - 7.66146344666e-03 8.54973346172e-03 9.85925299562e-03 1.16573532374e-02 1.40283418589e-02 1.70678712692e-02 - 2.08735527936e-02 2.55281844546e-02 3.10717223250e-02 3.74634706166e-02 4.45431970579e-02 5.20033431247e-02 - 5.93841418824e-02 6.61022866145e-02 7.15201290633e-02 7.50510418428e-02 7.62783857555e-02 7.50510418428e-02 - 6.98920688762e-02 6.34040688222e-02 5.59201471811e-02 4.81082332430e-02 4.05244812822e-02 3.35632692529e-02 - 2.74512061786e-02 2.22726314479e-02 1.80109897723e-02 1.45906790875e-02 1.19093466628e-02 9.85925299562e-03 - 8.34122341388e-03 7.27338017313e-03 6.59479473082e-03 6.26545793635e-03 6.26545793635e-03 6.59479473082e-03 - 7.27338017313e-03 8.34122341388e-03 9.85925299562e-03 1.19093466628e-02 1.45906790875e-02 1.80109897723e-02 - 2.22726314479e-02 2.74512061786e-02 3.35632692529e-02 4.05244812822e-02 4.81082332430e-02 5.59201471811e-02 - 6.34040688222e-02 6.98920688762e-02 7.47020608958e-02 7.72682499914e-02 7.72682499914e-02 7.47020608958e-02 - 6.77723654588e-02 6.04237632524e-02 5.24194501424e-02 4.44094609233e-02 3.68889471691e-02 3.01717861136e-02 - 2.44059448105e-02 1.96135589165e-02 1.57370100687e-02 1.26769712537e-02 1.03186231402e-02 8.54973346172e-03 - 7.27338017313e-03 6.41444748147e-03 5.92021996667e-03 5.75903981319e-03 5.92021996667e-03 6.41444748147e-03 - 7.27338017313e-03 8.54973346172e-03 1.03186231402e-02 1.26769712537e-02 1.57370100687e-02 1.96135589165e-02 - 2.44059448105e-02 3.01717861136e-02 3.68889471691e-02 4.44094609233e-02 5.24194501424e-02 6.04237632524e-02 - 6.77723654588e-02 7.37387049341e-02 7.76449689484e-02 7.90059272690e-02 7.76449689484e-02 7.37387049341e-02 - 6.54719417706e-02 5.74494623672e-02 4.91148354625e-02 4.10670403681e-02 3.37228748044e-02 2.73140021666e-02 - 2.19185274002e-02 1.75083321070e-02 1.39945083398e-02 1.12609832188e-02 9.18679124184e-03 7.66146344666e-03 - 6.59479473082e-03 5.92021996667e-03 5.59394004869e-03 5.59394004869e-03 5.92021996667e-03 6.59479473082e-03 - 7.66146344666e-03 9.18679124184e-03 1.12609832188e-02 1.39945083398e-02 1.75083321070e-02 2.19185274002e-02 - 2.73140021666e-02 3.37228748044e-02 4.10670403681e-02 4.91148354625e-02 5.74494623672e-02 6.54719417706e-02 - 7.24538631804e-02 7.76449689484e-02 8.04193974336e-02 8.04193974336e-02 7.76449689484e-02 7.24538631804e-02 - 6.30873277659e-02 5.45841783826e-02 4.60913389830e-02 3.81345549630e-02 3.10465495213e-02 2.49827563157e-02 - 1.99620901041e-02 1.59162612755e-02 1.27333396536e-02 1.02881382638e-02 8.46060891145e-03 7.14689010595e-03 - 6.26545793635e-03 5.75903981319e-03 5.59394004869e-03 5.75903981319e-03 6.26545793635e-03 7.14689010595e-03 - 8.46060891145e-03 1.02881382638e-02 1.27333396536e-02 1.59162612755e-02 1.99620901041e-02 2.49827563157e-02 - 3.10465495213e-02 3.81345549630e-02 4.60913389830e-02 5.45841783826e-02 6.30873277659e-02 7.09081350393e-02 - 7.72682499914e-02 8.14375530661e-02 8.28911486673e-02 8.14375530661e-02 7.72682499914e-02 7.09081350393e-02 - 6.05796981280e-02 5.18355302331e-02 4.33721592307e-02 3.56312088557e-02 2.88661050079e-02 2.31688478126e-02 - 1.85132658939e-02 1.48031251671e-02 1.19137265332e-02 9.71912104775e-03 8.10563303358e-03 6.97836085285e-03 - 6.26545793635e-03 5.92021996667e-03 5.92021996667e-03 6.26545793635e-03 6.97836085285e-03 8.10563303358e-03 - 9.71912104775e-03 1.19137265332e-02 1.48031251671e-02 1.85132658939e-02 2.31688478126e-02 2.88661050079e-02 - 3.56312088557e-02 4.33721592307e-02 5.18355302331e-02 6.05796981280e-02 6.89793219251e-02 7.62783857555e-02 - 8.16998180862e-02 8.45957298814e-02 8.45957298814e-02 8.16998180862e-02 7.62783857555e-02 6.89793219251e-02 - 5.78981879671e-02 4.92182336225e-02 4.09927131873e-02 3.35871770820e-02 2.71955666447e-02 2.18687619531e-02 - 1.75547637226e-02 1.41440793855e-02 1.15097880648e-02 9.53173661310e-03 8.10563303358e-03 7.14689010595e-03 - 6.59479473082e-03 6.41444748147e-03 6.59479473082e-03 7.14689010595e-03 8.10563303358e-03 9.53173661310e-03 - 1.15097880648e-02 1.41440793855e-02 1.75547637226e-02 2.18687619531e-02 2.71955666447e-02 3.35871770820e-02 - 4.09927131873e-02 4.92182336225e-02 5.78981879671e-02 6.64898780493e-02 7.43082663472e-02 8.06097207709e-02 - 8.47143937707e-02 8.61408122915e-02 8.47143937707e-02 8.06097207709e-02 7.43082663472e-02 6.64898780493e-02 - 5.51031089527e-02 4.68264624901e-02 3.90347179512e-02 3.20546920774e-02 2.60582031450e-02 2.10847229658e-02 - 1.70770073925e-02 1.39256808178e-02 1.15097880648e-02 9.71912104775e-03 8.46060891145e-03 7.66146344666e-03 - 7.27338017313e-03 7.27338017313e-03 7.66146344666e-03 8.46060891145e-03 9.71912104775e-03 1.15097880648e-02 - 1.39256808178e-02 1.70770073925e-02 2.10847229658e-02 2.60582031450e-02 3.20546920774e-02 3.90347179512e-02 - 4.68264624901e-02 5.51031089527e-02 6.33842515281e-02 7.10787520021e-02 7.75631573239e-02 8.22656900591e-02 - 8.47410728024e-02 8.47410728024e-02 8.22656900591e-02 7.75631573239e-02 7.10787520021e-02 6.33842515281e-02 - 5.24339557043e-02 4.48486167771e-02 3.76190713504e-02 3.10978190541e-02 2.54803066383e-02 2.08223402545e-02 - 1.70770073925e-02 1.41440793855e-02 1.19137265332e-02 1.02881382638e-02 9.18679124184e-03 8.54973346172e-03 - 8.34122341388e-03 8.54973346172e-03 9.18679124184e-03 1.02881382638e-02 1.19137265332e-02 1.41440793855e-02 - 1.70770073925e-02 2.08223402545e-02 2.54803066383e-02 3.10978190541e-02 3.76190713504e-02 4.48486167771e-02 - 5.24339557043e-02 5.98878714669e-02 6.66786802062e-02 7.23556493700e-02 7.66122811094e-02 7.92532152557e-02 - 8.01500628124e-02 7.92532152557e-02 7.66122811094e-02 7.23556493700e-02 6.66786802062e-02 5.98878714669e-02 - 5.02828320119e-02 4.35234290368e-02 3.68707660171e-02 3.07715106065e-02 2.54803066383e-02 2.10847229658e-02 - 1.75547637226e-02 1.48031251671e-02 1.27333396536e-02 1.12609832188e-02 1.03186231402e-02 9.85925299562e-03 - 9.85925299562e-03 1.03186231402e-02 1.12609832188e-02 1.27333396536e-02 1.48031251671e-02 1.75547637226e-02 - 2.10847229658e-02 2.54803066383e-02 3.07715106065e-02 3.68707660171e-02 4.35234290368e-02 5.02828320119e-02 - 5.65511919643e-02 6.17513938278e-02 6.55787911247e-02 6.81077724909e-02 6.96179820017e-02 7.03323963389e-02 - 7.03323963389e-02 6.96179820017e-02 6.81077724909e-02 6.55787911247e-02 6.17513938278e-02 5.65511919643e-02 - 4.90700187394e-02 4.30547772101e-02 3.68707660171e-02 3.10978190541e-02 2.60582031450e-02 2.18687619531e-02 - 1.85132658939e-02 1.59162612755e-02 1.39945083398e-02 1.26769712537e-02 1.19093466628e-02 1.16573532374e-02 - 1.19093466628e-02 1.26769712537e-02 1.39945083398e-02 1.59162612755e-02 1.85132658939e-02 2.18687619531e-02 - 2.60582031450e-02 3.10978190541e-02 3.68707660171e-02 4.30547772101e-02 4.90700187394e-02 5.41129564364e-02 - 5.74105494947e-02 5.86758842735e-02 5.83777841365e-02 5.74463352203e-02 5.66663226477e-02 5.63846435627e-02 - 5.66663226477e-02 5.74463352203e-02 5.83777841365e-02 5.86758842735e-02 5.74105494947e-02 5.41129564364e-02 - 4.90700187394e-02 4.35234290368e-02 3.76190713504e-02 3.20546920774e-02 2.71955666447e-02 2.31688478126e-02 - 1.99620901041e-02 1.75083321070e-02 1.57370100687e-02 1.45906790875e-02 1.40283418589e-02 1.40283418589e-02 - 1.45906790875e-02 1.57370100687e-02 1.75083321070e-02 1.99620901041e-02 2.31688478126e-02 2.71955666447e-02 - 3.20546920774e-02 3.76190713504e-02 4.35234290368e-02 4.90700187394e-02 5.32152215954e-02 5.48533676650e-02 - 5.34983990182e-02 4.98718618187e-02 4.56222411881e-02 4.22847991283e-02 4.05694134160e-02 4.05694134160e-02 - 4.22847991283e-02 4.56222411881e-02 4.98718618187e-02 5.34983990182e-02 5.48533676650e-02 5.32152215954e-02 - 5.02828320119e-02 4.48486167771e-02 3.90347179512e-02 3.35871770820e-02 2.88661050079e-02 2.49827563157e-02 - 2.19185274002e-02 1.96135589165e-02 1.80109897723e-02 1.70678712692e-02 1.67567114426e-02 1.70678712692e-02 - 1.80109897723e-02 1.96135589165e-02 2.19185274002e-02 2.49827563157e-02 2.88661050079e-02 3.35871770820e-02 - 3.90347179512e-02 4.48486167771e-02 5.02828320119e-02 5.41129564364e-02 5.48533676650e-02 5.15765048907e-02 - 4.49279278957e-02 3.71417160544e-02 3.06594619284e-02 2.67478820537e-02 2.54935088837e-02 2.67478820537e-02 - 3.06594619284e-02 3.71417160544e-02 4.49279278957e-02 5.15765048907e-02 5.48533676650e-02 5.41129564364e-02 - 5.24339557043e-02 4.68264624901e-02 4.09927131873e-02 3.56312088557e-02 3.10465495213e-02 2.73140021666e-02 - 2.44059448105e-02 2.22726314479e-02 2.08735527936e-02 2.01812628043e-02 2.01812628043e-02 2.08735527936e-02 - 2.22726314479e-02 2.44059448105e-02 2.73140021666e-02 3.10465495213e-02 3.56312088557e-02 4.09927131873e-02 - 4.68264624901e-02 5.24339557043e-02 5.65511919643e-02 5.74105494947e-02 5.34983990182e-02 4.49279278957e-02 - 3.40771392673e-02 2.42761411551e-02 1.76819501362e-02 1.46090879135e-02 1.46090879135e-02 1.76819501362e-02 - 2.42761411551e-02 3.40771392673e-02 4.49279278957e-02 5.34983990182e-02 5.74105494947e-02 5.65511919643e-02 - 5.51031089527e-02 4.92182336225e-02 4.33721592307e-02 3.81345549630e-02 3.37228748044e-02 3.01717861136e-02 - 2.74512061786e-02 2.55281844546e-02 2.43819637041e-02 2.40011711299e-02 2.43819637041e-02 2.55281844546e-02 - 2.74512061786e-02 3.01717861136e-02 3.37228748044e-02 3.81345549630e-02 4.33721592307e-02 4.92182336225e-02 - 5.51031089527e-02 5.98878714669e-02 6.17513938278e-02 5.86758842735e-02 4.98718618187e-02 3.71417160544e-02 - 2.42761411551e-02 1.45732066269e-02 9.13060134292e-03 7.45857574908e-03 9.13060134292e-03 1.45732066269e-02 - 2.42761411551e-02 3.71417160544e-02 4.98718618187e-02 5.86758842735e-02 6.17513938278e-02 5.98878714669e-02 - 5.78981879671e-02 5.18355302331e-02 4.60913389830e-02 4.10670403681e-02 3.68889471691e-02 3.35632692529e-02 - 3.10717223250e-02 2.94074293899e-02 2.85734174953e-02 2.85734174953e-02 2.94074293899e-02 3.10717223250e-02 - 3.35632692529e-02 3.68889471691e-02 4.10670403681e-02 4.60913389830e-02 5.18355302331e-02 5.78981879671e-02 - 6.33842515281e-02 6.66786802062e-02 6.55787911247e-02 5.83777841365e-02 4.56222411881e-02 3.06594619284e-02 - 1.76819501362e-02 9.13060134292e-03 5.17285277950e-03 5.17285277950e-03 9.13060134292e-03 1.76819501362e-02 - 3.06594619284e-02 4.56222411881e-02 5.83777841365e-02 6.55787911247e-02 6.66786802062e-02 6.33842515281e-02 - 6.05796981280e-02 5.45841783826e-02 4.91148354625e-02 4.44094609233e-02 4.05244812822e-02 3.74634706166e-02 - 3.52402742752e-02 3.38859304601e-02 3.34304675050e-02 3.38859304601e-02 3.52402742752e-02 3.74634706166e-02 - 4.05244812822e-02 4.44094609233e-02 4.91148354625e-02 5.45841783826e-02 6.05796981280e-02 6.64898780493e-02 - 7.10787520021e-02 7.23556493700e-02 6.81077724909e-02 5.74463352203e-02 4.22847991283e-02 2.67478820537e-02 - 1.46090879135e-02 7.45857574908e-03 5.17285277950e-03 7.45857574908e-03 1.46090879135e-02 2.67478820537e-02 - 4.22847991283e-02 5.74463352203e-02 6.81077724909e-02 7.23556493700e-02 7.10787520021e-02 6.64898780493e-02 - 6.30873277659e-02 5.74494623672e-02 5.24194501424e-02 4.81082332430e-02 4.45431970579e-02 4.17618689283e-02 - 3.98358227133e-02 3.88462459817e-02 3.88462459817e-02 3.98358227133e-02 4.17618689283e-02 4.45431970579e-02 - 4.81082332430e-02 5.24194501424e-02 5.74494623672e-02 6.30873277659e-02 6.89793219251e-02 7.43082663472e-02 - 7.75631573239e-02 7.66122811094e-02 6.96179820017e-02 5.66663226477e-02 4.05694134160e-02 2.54935088837e-02 - 1.46090879135e-02 9.13060134292e-03 9.13060134292e-03 1.46090879135e-02 2.54935088837e-02 4.05694134160e-02 - 5.66663226477e-02 6.96179820017e-02 7.66122811094e-02 7.75631573239e-02 7.43082663472e-02 6.89793219251e-02 - 6.54719417706e-02 6.04237632524e-02 5.59201471811e-02 5.20033431247e-02 4.87273692032e-02 4.62088704848e-02 - 4.46053414397e-02 4.40529168852e-02 4.46053414397e-02 4.62088704848e-02 4.87273692032e-02 5.20033431247e-02 - 5.59201471811e-02 6.04237632524e-02 6.54719417706e-02 7.09081350393e-02 7.62783857555e-02 8.06097207709e-02 - 8.22656900591e-02 7.92532152557e-02 7.03323963389e-02 5.63846435627e-02 4.05694134160e-02 2.67478820537e-02 - 1.76819501362e-02 1.45732066269e-02 1.76819501362e-02 2.67478820537e-02 4.05694134160e-02 5.63846435627e-02 - 7.03323963389e-02 7.92532152557e-02 8.22656900591e-02 8.06097207709e-02 7.62783857555e-02 7.09081350393e-02 - 6.77723654588e-02 6.34040688222e-02 5.93841418824e-02 5.57595749637e-02 5.26787408684e-02 5.03893328752e-02 - 4.91578982971e-02 4.91578982971e-02 5.03893328752e-02 5.26787408684e-02 5.57595749637e-02 5.93841418824e-02 - 6.34040688222e-02 6.77723654588e-02 7.24538631804e-02 7.72682499914e-02 8.16998180862e-02 8.47143937707e-02 - 8.47410728024e-02 8.01500628124e-02 7.03323963389e-02 5.66663226477e-02 4.22847991283e-02 3.06594619284e-02 - 2.42761411551e-02 2.42761411551e-02 3.06594619284e-02 4.22847991283e-02 5.66663226477e-02 7.03323963389e-02 - 8.01500628124e-02 8.47410728024e-02 8.47143937707e-02 8.16998180862e-02 7.72682499914e-02 7.24538631804e-02 - 6.98920688762e-02 6.61022866145e-02 6.23688231248e-02 5.88318176265e-02 5.58153453540e-02 5.37510492057e-02 - 5.30133769166e-02 5.37510492057e-02 5.58153453540e-02 5.88318176265e-02 6.23688231248e-02 6.61022866145e-02 - 6.98920688762e-02 7.37387049341e-02 7.76449689484e-02 8.14375530661e-02 8.45957298814e-02 8.61408122915e-02 - 8.47410728024e-02 7.92532152557e-02 6.96179820017e-02 5.74463352203e-02 4.56222411881e-02 3.71417160544e-02 - 3.40771392673e-02 3.71417160544e-02 4.56222411881e-02 5.74463352203e-02 6.96179820017e-02 7.92532152557e-02 - 8.47410728024e-02 8.61408122915e-02 8.45957298814e-02 8.14375530661e-02 7.76449689484e-02 7.37387049341e-02 - 7.15201290633e-02 6.80033074139e-02 6.42180018992e-02 6.05090723285e-02 5.74676014035e-02 5.57363453523e-02 - 5.57363453523e-02 5.74676014035e-02 6.05090723285e-02 6.42180018992e-02 6.80033074139e-02 7.15201290633e-02 - 7.47020608958e-02 7.76449689484e-02 8.04193974336e-02 8.28911486673e-02 8.45957298814e-02 8.47143937707e-02 - 8.22656900591e-02 7.66122811094e-02 6.81077724909e-02 5.83777841365e-02 4.98718618187e-02 4.49279278957e-02 - 4.49279278957e-02 4.98718618187e-02 5.83777841365e-02 6.81077724909e-02 7.66122811094e-02 8.22656900591e-02 - 8.47143937707e-02 8.45957298814e-02 8.28911486673e-02 8.04193974336e-02 7.76449689484e-02 7.47020608958e-02 - 7.21264918488e-02 6.84139609392e-02 6.41840706496e-02 6.01184381094e-02 5.71366804742e-02 5.60372557288e-02 - 5.71366804742e-02 6.01184381094e-02 6.41840706496e-02 6.84139609392e-02 7.21264918488e-02 7.50510418428e-02 - 7.72682499914e-02 7.90059272690e-02 8.04193974336e-02 8.14375530661e-02 8.16998180862e-02 8.06097207709e-02 - 7.75631573239e-02 7.23556493700e-02 6.55787911247e-02 5.86758842735e-02 5.34983990182e-02 5.15765048907e-02 - 5.34983990182e-02 5.86758842735e-02 6.55787911247e-02 7.23556493700e-02 7.75631573239e-02 8.06097207709e-02 - 8.16998180862e-02 8.14375530661e-02 8.04193974336e-02 7.90059272690e-02 7.72682499914e-02 7.50510418428e-02 - 7.10787520021e-02 6.66786802062e-02 6.17513938278e-02 5.74105494947e-02 5.48533676650e-02 5.48533676650e-02 - 5.74105494947e-02 6.17513938278e-02 6.66786802062e-02 7.10787520021e-02 7.43082663472e-02 7.62783857555e-02 - 7.72682499914e-02 7.76449689484e-02 7.76449689484e-02 7.72682499914e-02 7.62783857555e-02 7.43082663472e-02 - 7.10787520021e-02 6.66786802062e-02 6.17513938278e-02 5.74105494947e-02 5.48533676650e-02 5.48533676650e-02 - 5.74105494947e-02 6.17513938278e-02 6.66786802062e-02 7.10787520021e-02 7.43082663472e-02 7.62783857555e-02 - 7.72682499914e-02 7.76449689484e-02 7.76449689484e-02 7.72682499914e-02 7.62783857555e-02 7.43082663472e-02 - 6.79320857310e-02 6.25800698666e-02 5.70772559013e-02 5.29210396854e-02 5.13723037105e-02 5.29210396854e-02 - 5.70772559013e-02 6.25800698666e-02 6.79320857310e-02 7.19923628057e-02 7.43082663472e-02 7.50510418428e-02 - 7.47020608958e-02 7.37387049341e-02 7.24538631804e-02 7.09081350393e-02 6.89793219251e-02 6.64898780493e-02 - 6.33842515281e-02 5.98878714669e-02 5.65511919643e-02 5.41129564364e-02 5.32152215954e-02 5.41129564364e-02 - 5.65511919643e-02 5.98878714669e-02 6.33842515281e-02 6.64898780493e-02 6.89793219251e-02 7.09081350393e-02 - 7.24538631804e-02 7.37387049341e-02 7.47020608958e-02 7.50510418428e-02 7.43082663472e-02 7.19923628057e-02 - 5.75824043038e-02 4.89850720157e-02 4.26203265537e-02 4.02808330656e-02 4.26203265537e-02 4.89850720157e-02 - 5.75824043038e-02 6.60504635380e-02 7.23556493700e-02 7.55368812409e-02 7.57970302390e-02 7.40032629540e-02 - 7.10977313661e-02 6.77723654588e-02 6.44054743742e-02 6.11288569567e-02 5.79474348197e-02 5.48714786192e-02 - 5.20147259753e-02 4.96193341715e-02 4.79989400749e-02 4.74231711778e-02 4.79989400749e-02 4.96193341715e-02 - 5.20147259753e-02 5.48714786192e-02 5.79474348197e-02 6.11288569567e-02 6.44054743742e-02 6.77723654588e-02 - 7.10977313661e-02 7.40032629540e-02 7.57970302390e-02 7.55368812409e-02 7.23556493700e-02 6.60504635380e-02 - 4.89850720157e-02 4.11986868029e-02 3.67025276917e-02 3.67025276917e-02 4.11986868029e-02 4.89850720157e-02 - 5.79103146750e-02 6.55787911247e-02 7.03019494995e-02 7.16581855164e-02 7.02831021338e-02 6.72218662363e-02 - 6.34040688222e-02 5.94462807362e-02 5.56676247698e-02 5.21839135623e-02 4.90231496620e-02 4.62258246981e-02 - 4.38959177953e-02 4.21941579647e-02 4.12888114430e-02 4.12888114430e-02 4.21941579647e-02 4.38959177953e-02 - 4.62258246981e-02 4.90231496620e-02 5.21839135623e-02 5.56676247698e-02 5.94462807362e-02 6.34040688222e-02 - 6.72218662363e-02 7.02831021338e-02 7.16581855164e-02 7.03019494995e-02 6.55787911247e-02 5.79103146750e-02 - 4.26203265537e-02 3.67025276917e-02 3.45455630665e-02 3.67025276917e-02 4.26203265537e-02 5.07010770424e-02 - 5.86758842735e-02 6.44394828494e-02 6.69101294891e-02 6.62522137956e-02 6.33941825467e-02 5.93841418824e-02 - 5.50251512552e-02 5.08044555558e-02 4.69561004766e-02 4.35604474537e-02 4.06430475235e-02 3.82415861113e-02 - 3.64263171972e-02 3.52857897121e-02 3.48956024912e-02 3.52857897121e-02 3.64263171972e-02 3.82415861113e-02 - 4.06430475235e-02 4.35604474537e-02 4.69561004766e-02 5.08044555558e-02 5.50251512552e-02 5.93841418824e-02 - 6.33941825467e-02 6.62522137956e-02 6.69101294891e-02 6.44394828494e-02 5.86758842735e-02 5.07010770424e-02 - 4.02808330656e-02 3.67025276917e-02 3.67025276917e-02 4.02808330656e-02 4.64751950426e-02 5.34983990182e-02 - 5.92810318582e-02 6.23288110708e-02 6.22821499923e-02 5.97584596222e-02 5.57595749637e-02 5.11831265828e-02 - 4.66403070569e-02 4.24686468881e-02 3.88104397494e-02 3.57044700685e-02 3.31615306069e-02 3.12022017908e-02 - 2.98615217076e-02 2.91781605866e-02 2.91781605866e-02 2.98615217076e-02 3.12022017908e-02 3.31615306069e-02 - 3.57044700685e-02 3.88104397494e-02 4.24686468881e-02 4.66403070569e-02 5.11831265828e-02 5.57595749637e-02 - 5.97584596222e-02 6.22821499923e-02 6.23288110708e-02 5.92810318582e-02 5.34983990182e-02 4.64751950426e-02 - 4.26203265537e-02 4.11986868029e-02 4.26203265537e-02 4.64751950426e-02 5.15765048907e-02 5.62463189889e-02 - 5.89627863020e-02 5.90154969276e-02 5.66509609539e-02 5.26787408684e-02 4.79731106469e-02 4.32002938784e-02 - 3.87673596218e-02 3.48695445110e-02 3.15673758761e-02 2.88631293974e-02 2.67502344749e-02 2.52298202509e-02 - 2.43103322252e-02 2.40022165572e-02 2.43103322252e-02 2.52298202509e-02 2.67502344749e-02 2.88631293974e-02 - 3.15673758761e-02 3.48695445110e-02 3.87673596218e-02 4.32002938784e-02 4.79731106469e-02 5.26787408684e-02 - 5.66509609539e-02 5.90154969276e-02 5.89627863020e-02 5.62463189889e-02 5.15765048907e-02 4.64751950426e-02 - 4.89850720157e-02 4.89850720157e-02 5.07010770424e-02 5.34983990182e-02 5.62463189889e-02 5.77208882781e-02 - 5.71527035674e-02 5.45211951056e-02 5.03893328752e-02 4.55081727847e-02 4.05199675384e-02 3.58537824974e-02 - 3.17358390207e-02 2.82446089484e-02 2.53797852965e-02 2.31175818882e-02 2.14361295219e-02 2.03206914317e-02 - 1.97639178277e-02 1.97639178277e-02 2.03206914317e-02 2.14361295219e-02 2.31175818882e-02 2.53797852965e-02 - 2.82446089484e-02 3.17358390207e-02 3.58537824974e-02 4.05199675384e-02 4.55081727847e-02 5.03893328752e-02 - 5.45211951056e-02 5.71527035674e-02 5.77208882781e-02 5.62463189889e-02 5.34983990182e-02 5.07010770424e-02 - 5.75824043038e-02 5.79103146750e-02 5.86758842735e-02 5.92810318582e-02 5.89627863020e-02 5.71527035674e-02 - 5.37595739225e-02 4.91578982971e-02 4.39402098517e-02 3.86662855632e-02 3.37399765679e-02 2.93901320501e-02 - 2.57019293917e-02 2.26718438342e-02 2.02621880335e-02 1.84326960165e-02 1.71497889118e-02 1.63890080671e-02 - 1.61367490443e-02 1.63890080671e-02 1.71497889118e-02 1.84326960165e-02 2.02621880335e-02 2.26718438342e-02 - 2.57019293917e-02 2.93901320501e-02 3.37399765679e-02 3.86662855632e-02 4.39402098517e-02 4.91578982971e-02 - 5.37595739225e-02 5.71527035674e-02 5.89627863020e-02 5.92810318582e-02 5.86758842735e-02 5.79103146750e-02 - 6.60504635380e-02 6.55787911247e-02 6.44394828494e-02 6.23288110708e-02 5.90154969276e-02 5.45211951056e-02 - 4.91578982971e-02 4.34003076052e-02 3.77147526395e-02 3.24534608631e-02 2.78244998346e-02 2.39063871143e-02 - 2.06884779452e-02 1.81196807915e-02 1.61427916872e-02 1.47072813037e-02 1.37726366090e-02 1.33116675302e-02 - 1.33116675302e-02 1.37726366090e-02 1.47072813037e-02 1.61427916872e-02 1.81196807915e-02 2.06884779452e-02 - 2.39063871143e-02 2.78244998346e-02 3.24534608631e-02 3.77147526395e-02 4.34003076052e-02 4.91578982971e-02 - 5.45211951056e-02 5.90154969276e-02 6.23288110708e-02 6.44394828494e-02 6.55787911247e-02 6.60504635380e-02 - 7.23556493700e-02 7.03019494995e-02 6.69101294891e-02 6.22821499923e-02 5.66509609539e-02 5.03893328752e-02 - 4.39402098517e-02 3.77147526395e-02 3.20210145144e-02 2.70402901784e-02 2.28368095394e-02 1.93892705934e-02 - 1.66330383744e-02 1.44944499034e-02 1.29064893850e-02 1.18131307076e-02 1.11729588764e-02 1.09620544703e-02 - 1.11729588764e-02 1.18131307076e-02 1.29064893850e-02 1.44944499034e-02 1.66330383744e-02 1.93892705934e-02 - 2.28368095394e-02 2.70402901784e-02 3.20210145144e-02 3.77147526395e-02 4.39402098517e-02 5.03893328752e-02 - 5.66509609539e-02 6.22821499923e-02 6.69101294891e-02 7.03019494995e-02 7.23556493700e-02 7.30418134594e-02 - 7.55368812409e-02 7.16581855164e-02 6.62522137956e-02 5.97584596222e-02 5.26787408684e-02 4.55081727847e-02 - 3.86662855632e-02 3.24534608631e-02 2.70402901784e-02 2.24815496090e-02 1.87467470027e-02 1.57591868798e-02 - 1.34297677852e-02 1.16751572683e-02 1.04238516982e-02 9.61987006090e-03 9.22648243576e-03 9.22648243576e-03 - 9.61987006090e-03 1.04238516982e-02 1.16751572683e-02 1.34297677852e-02 1.57591868798e-02 1.87467470027e-02 - 2.24815496090e-02 2.70402901784e-02 3.24534608631e-02 3.86662855632e-02 4.55081727847e-02 5.26787408684e-02 - 5.97584596222e-02 6.62522137956e-02 7.16581855164e-02 7.55368812409e-02 7.75631573239e-02 7.75631573239e-02 - 7.57970302390e-02 7.02831021338e-02 6.33941825467e-02 5.57595749637e-02 4.79731106469e-02 4.05199675384e-02 - 3.37399765679e-02 2.78244998346e-02 2.28368095394e-02 1.87467470027e-02 1.54709928045e-02 1.29079014387e-02 - 1.09586567104e-02 9.53627070961e-03 8.57007132232e-03 8.00955236461e-03 7.82576853226e-03 8.00955236461e-03 - 8.57007132232e-03 9.53627070961e-03 1.09586567104e-02 1.29079014387e-02 1.54709928045e-02 1.87467470027e-02 - 2.28368095394e-02 2.78244998346e-02 3.37399765679e-02 4.05199675384e-02 4.79731106469e-02 5.57595749637e-02 - 6.33941825467e-02 7.02831021338e-02 7.57970302390e-02 7.93709590427e-02 8.06097207709e-02 7.93709590427e-02 - 7.40032629540e-02 6.72218662363e-02 5.93841418824e-02 5.11831265828e-02 4.32002938784e-02 3.58537824974e-02 - 2.93901320501e-02 2.39063871143e-02 1.93892705934e-02 1.57591868798e-02 1.29079014387e-02 1.07235056315e-02 - 9.10381322670e-03 7.96341795569e-03 7.23785699764e-03 6.88519888788e-03 6.88519888788e-03 7.23785699764e-03 - 7.96341795569e-03 9.10381322670e-03 1.07235056315e-02 1.29079014387e-02 1.57591868798e-02 1.93892705934e-02 - 2.39063871143e-02 2.93901320501e-02 3.58537824974e-02 4.32002938784e-02 5.11831265828e-02 5.93841418824e-02 - 6.72218662363e-02 7.40032629540e-02 7.90236437036e-02 8.16998180862e-02 8.16998180862e-02 7.90236437036e-02 - 7.10977313661e-02 6.34040688222e-02 5.50251512552e-02 4.66403070569e-02 3.87673596218e-02 3.17358390207e-02 - 2.57019293917e-02 2.06884779452e-02 1.66330383744e-02 1.34297677852e-02 1.09586567104e-02 9.10381322670e-03 - 7.76490388909e-03 6.86339437793e-03 6.34416762186e-03 6.17468606834e-03 6.34416762186e-03 6.86339437793e-03 - 7.76490388909e-03 9.10381322670e-03 1.09586567104e-02 1.34297677852e-02 1.66330383744e-02 2.06884779452e-02 - 2.57019293917e-02 3.17358390207e-02 3.87673596218e-02 4.66403070569e-02 5.50251512552e-02 6.34040688222e-02 - 7.10977313661e-02 7.73458021392e-02 8.14375530661e-02 8.28633557769e-02 8.14375530661e-02 7.73458021392e-02 - 6.77723654588e-02 5.94462807362e-02 5.08044555558e-02 4.24686468881e-02 3.48695445110e-02 2.82446089484e-02 - 2.26718438342e-02 1.81196807915e-02 1.44944499034e-02 1.16751572683e-02 9.53627070961e-03 7.96341795569e-03 - 6.86339437793e-03 6.16759269815e-03 5.83098728503e-03 5.83098728503e-03 6.16759269815e-03 6.86339437793e-03 - 7.96341795569e-03 9.53627070961e-03 1.16751572683e-02 1.44944499034e-02 1.81196807915e-02 2.26718438342e-02 - 2.82446089484e-02 3.48695445110e-02 4.24686468881e-02 5.08044555558e-02 5.94462807362e-02 6.77723654588e-02 - 7.50243106749e-02 8.04193974336e-02 8.33038946145e-02 8.33038946145e-02 8.04193974336e-02 7.50243106749e-02 - 6.44054743742e-02 5.56676247698e-02 4.69561004766e-02 3.88104397494e-02 3.15673758761e-02 2.53797852965e-02 - 2.02621880335e-02 1.61427916872e-02 1.29064893850e-02 1.04238516982e-02 8.57007132232e-03 7.23785699764e-03 - 6.34416762186e-03 5.83098728503e-03 5.66378434823e-03 5.83098728503e-03 6.34416762186e-03 7.23785699764e-03 - 8.57007132232e-03 1.04238516982e-02 1.29064893850e-02 1.61427916872e-02 2.02621880335e-02 2.53797852965e-02 - 3.15673758761e-02 3.88104397494e-02 4.69561004766e-02 5.56676247698e-02 6.44054743742e-02 7.24538631804e-02 - 7.90059272690e-02 8.33038946145e-02 8.48028174918e-02 8.33038946145e-02 7.90059272690e-02 7.24538631804e-02 - 6.11288569567e-02 5.21839135623e-02 4.35604474537e-02 3.57044700685e-02 2.88631293974e-02 2.31175818882e-02 - 1.84326960165e-02 1.47072813037e-02 1.18131307076e-02 9.61987006090e-03 8.00955236461e-03 6.88519888788e-03 - 6.17468606834e-03 5.83098728503e-03 5.83098728503e-03 6.17468606834e-03 6.88519888788e-03 8.00955236461e-03 - 9.61987006090e-03 1.18131307076e-02 1.47072813037e-02 1.84326960165e-02 2.31175818882e-02 2.88631293974e-02 - 3.57044700685e-02 4.35604474537e-02 5.21839135623e-02 6.11288569567e-02 6.97522426294e-02 7.72682499914e-02 - 8.28633557769e-02 8.58561529560e-02 8.58561529560e-02 8.28633557769e-02 7.72682499914e-02 6.97522426294e-02 - 5.79474348197e-02 4.90231496620e-02 4.06430475235e-02 3.31615306069e-02 2.67502344749e-02 2.14361295219e-02 - 1.71497889118e-02 1.37726366090e-02 1.11729588764e-02 9.22648243576e-03 7.82576853226e-03 6.88519888788e-03 - 6.34416762186e-03 6.16759269815e-03 6.34416762186e-03 6.88519888788e-03 7.82576853226e-03 9.22648243576e-03 - 1.11729588764e-02 1.37726366090e-02 1.71497889118e-02 2.14361295219e-02 2.67502344749e-02 3.31615306069e-02 - 4.06430475235e-02 4.90231496620e-02 5.79474348197e-02 6.68641206041e-02 7.50510418428e-02 8.16998180862e-02 - 8.60542685404e-02 8.75716967614e-02 8.60542685404e-02 8.16998180862e-02 7.50510418428e-02 6.68641206041e-02 - 5.48714786192e-02 4.62258246981e-02 3.82415861113e-02 3.12022017908e-02 2.52298202509e-02 2.03206914317e-02 - 1.63890080671e-02 1.33116675302e-02 1.09620544703e-02 9.22648243576e-03 8.00955236461e-03 7.23785699764e-03 - 6.86339437793e-03 6.86339437793e-03 7.23785699764e-03 8.00955236461e-03 9.22648243576e-03 1.09620544703e-02 - 1.33116675302e-02 1.63890080671e-02 2.03206914317e-02 2.52298202509e-02 3.12022017908e-02 3.82415861113e-02 - 4.62258246981e-02 5.48714786192e-02 6.37149803432e-02 7.21264918488e-02 7.93709590427e-02 8.47143937707e-02 - 8.75562567048e-02 8.75562567048e-02 8.47143937707e-02 7.93709590427e-02 7.21264918488e-02 6.37149803432e-02 - 5.20147259753e-02 4.38959177953e-02 3.64263171972e-02 2.98615217076e-02 2.43103322252e-02 1.97639178277e-02 - 1.61367490443e-02 1.33116675302e-02 1.11729588764e-02 9.61987006090e-03 8.57007132232e-03 7.96341795569e-03 - 7.76490388909e-03 7.96341795569e-03 8.57007132232e-03 9.61987006090e-03 1.11729588764e-02 1.33116675302e-02 - 1.61367490443e-02 1.97639178277e-02 2.43103322252e-02 2.98615217076e-02 3.64263171972e-02 4.38959177953e-02 - 5.20147259753e-02 6.03694423859e-02 6.84139609392e-02 7.55368812409e-02 8.11458755837e-02 8.47410728024e-02 - 8.59805323971e-02 8.47410728024e-02 8.11458755837e-02 7.55368812409e-02 6.84139609392e-02 6.03694423859e-02 - 4.96193341715e-02 4.21941579647e-02 3.52857897121e-02 2.91781605866e-02 2.40022165572e-02 1.97639178277e-02 - 1.63890080671e-02 1.37726366090e-02 1.18131307076e-02 1.04238516982e-02 9.53627070961e-03 9.10381322670e-03 - 9.10381322670e-03 9.53627070961e-03 1.04238516982e-02 1.18131307076e-02 1.37726366090e-02 1.63890080671e-02 - 1.97639178277e-02 2.40022165572e-02 2.91781605866e-02 3.52857897121e-02 4.21941579647e-02 4.96193341715e-02 - 5.71251588417e-02 6.41840706496e-02 7.03019494995e-02 7.51264696898e-02 7.84511058955e-02 8.01500628124e-02 - 8.01500628124e-02 7.84511058955e-02 7.51264696898e-02 7.03019494995e-02 6.41840706496e-02 5.71251588417e-02 - 4.79989400749e-02 4.12888114430e-02 3.48956024912e-02 2.91781605866e-02 2.43103322252e-02 2.03206914317e-02 - 1.71497889118e-02 1.47072813037e-02 1.29064893850e-02 1.16751572683e-02 1.09586567104e-02 1.07235056315e-02 - 1.09586567104e-02 1.16751572683e-02 1.29064893850e-02 1.47072813037e-02 1.71497889118e-02 2.03206914317e-02 - 2.43103322252e-02 2.91781605866e-02 3.48956024912e-02 4.12888114430e-02 4.79989400749e-02 5.44829894560e-02 - 6.01184381094e-02 6.44394828494e-02 6.73541476702e-02 6.91119067669e-02 7.00400365127e-02 7.03323963389e-02 - 7.00400365127e-02 6.91119067669e-02 6.73541476702e-02 6.44394828494e-02 6.01184381094e-02 5.44829894560e-02 - 4.74231711778e-02 4.12888114430e-02 3.52857897121e-02 2.98615217076e-02 2.52298202509e-02 2.14361295219e-02 - 1.84326960165e-02 1.61427916872e-02 1.44944499034e-02 1.34297677852e-02 1.29079014387e-02 1.29079014387e-02 - 1.34297677852e-02 1.44944499034e-02 1.61427916872e-02 1.84326960165e-02 2.14361295219e-02 2.52298202509e-02 - 2.98615217076e-02 3.52857897121e-02 4.12888114430e-02 4.74231711778e-02 5.29846351657e-02 5.71366804742e-02 - 5.92810318582e-02 5.94868177545e-02 5.85232784436e-02 5.73653289979e-02 5.66663226477e-02 5.66663226477e-02 - 5.73653289979e-02 5.85232784436e-02 5.94868177545e-02 5.92810318582e-02 5.71366804742e-02 5.29846351657e-02 - 4.79989400749e-02 4.21941579647e-02 3.64263171972e-02 3.12022017908e-02 2.67502344749e-02 2.31175818882e-02 - 2.02621880335e-02 1.81196807915e-02 1.66330383744e-02 1.57591868798e-02 1.54709928045e-02 1.57591868798e-02 - 1.66330383744e-02 1.81196807915e-02 2.02621880335e-02 2.31175818882e-02 2.67502344749e-02 3.12022017908e-02 - 3.64263171972e-02 4.21941579647e-02 4.79989400749e-02 5.29846351657e-02 5.60372557288e-02 5.62463189889e-02 - 5.36143814352e-02 4.93308963719e-02 4.51254329663e-02 4.22847991283e-02 4.13123485649e-02 4.22847991283e-02 - 4.51254329663e-02 4.93308963719e-02 5.36143814352e-02 5.62463189889e-02 5.60372557288e-02 5.29846351657e-02 - 4.96193341715e-02 4.38959177953e-02 3.82415861113e-02 3.31615306069e-02 2.88631293974e-02 2.53797852965e-02 - 2.26718438342e-02 2.06884779452e-02 1.93892705934e-02 1.87467470027e-02 1.87467470027e-02 1.93892705934e-02 - 2.06884779452e-02 2.26718438342e-02 2.53797852965e-02 2.88631293974e-02 3.31615306069e-02 3.82415861113e-02 - 4.38959177953e-02 4.96193341715e-02 5.44829894560e-02 5.71366804742e-02 5.62463189889e-02 5.14403532045e-02 - 4.40123223759e-02 3.63849623957e-02 3.06594619284e-02 2.77489957459e-02 2.77489957459e-02 3.06594619284e-02 - 3.63849623957e-02 4.40123223759e-02 5.14403532045e-02 5.62463189889e-02 5.71366804742e-02 5.44829894560e-02 - 5.20147259753e-02 4.62258246981e-02 4.06430475235e-02 3.57044700685e-02 3.15673758761e-02 2.82446089484e-02 - 2.57019293917e-02 2.39063871143e-02 2.28368095394e-02 2.24815496090e-02 2.28368095394e-02 2.39063871143e-02 - 2.57019293917e-02 2.82446089484e-02 3.15673758761e-02 3.57044700685e-02 4.06430475235e-02 4.62258246981e-02 - 5.20147259753e-02 5.71251588417e-02 6.01184381094e-02 5.92810318582e-02 5.36143814352e-02 4.40123223759e-02 - 3.32338776264e-02 2.42761411551e-02 1.87771308641e-02 1.69819929531e-02 1.87771308641e-02 2.42761411551e-02 - 3.32338776264e-02 4.40123223759e-02 5.36143814352e-02 5.92810318582e-02 6.01184381094e-02 5.71251588417e-02 - 5.48714786192e-02 4.90231496620e-02 4.35604474537e-02 3.88104397494e-02 3.48695445110e-02 3.17358390207e-02 - 2.93901320501e-02 2.78244998346e-02 2.70402901784e-02 2.70402901784e-02 2.78244998346e-02 2.93901320501e-02 - 3.17358390207e-02 3.48695445110e-02 3.88104397494e-02 4.35604474537e-02 4.90231496620e-02 5.48714786192e-02 - 6.03694423859e-02 6.41840706496e-02 6.44394828494e-02 5.94868177545e-02 4.93308963719e-02 3.63849623957e-02 - 2.42761411551e-02 1.56860392578e-02 1.14596764125e-02 1.14596764125e-02 1.56860392578e-02 2.42761411551e-02 - 3.63849623957e-02 4.93308963719e-02 5.94868177545e-02 6.44394828494e-02 6.41840706496e-02 6.03694423859e-02 - 5.79474348197e-02 5.21839135623e-02 4.69561004766e-02 4.24686468881e-02 3.87673596218e-02 3.58537824974e-02 - 3.37399765679e-02 3.24534608631e-02 3.20210145144e-02 3.24534608631e-02 3.37399765679e-02 3.58537824974e-02 - 3.87673596218e-02 4.24686468881e-02 4.69561004766e-02 5.21839135623e-02 5.79474348197e-02 6.37149803432e-02 - 6.84139609392e-02 7.03019494995e-02 6.73541476702e-02 5.85232784436e-02 4.51254329663e-02 3.06594619284e-02 - 1.87771308641e-02 1.14596764125e-02 9.05419851032e-03 1.14596764125e-02 1.87771308641e-02 3.06594619284e-02 - 4.51254329663e-02 5.85232784436e-02 6.73541476702e-02 7.03019494995e-02 6.84139609392e-02 6.37149803432e-02 - 6.11288569567e-02 5.56676247698e-02 5.08044555558e-02 4.66403070569e-02 4.32002938784e-02 4.05199675384e-02 - 3.86662855632e-02 3.77147526395e-02 3.77147526395e-02 3.86662855632e-02 4.05199675384e-02 4.32002938784e-02 - 4.66403070569e-02 5.08044555558e-02 5.56676247698e-02 6.11288569567e-02 6.68641206041e-02 7.21264918488e-02 - 7.55368812409e-02 7.51264696898e-02 6.91119067669e-02 5.73653289979e-02 4.22847991283e-02 2.77489957459e-02 - 1.69819929531e-02 1.14596764125e-02 1.14596764125e-02 1.69819929531e-02 2.77489957459e-02 4.22847991283e-02 - 5.73653289979e-02 6.91119067669e-02 7.51264696898e-02 7.55368812409e-02 7.21264918488e-02 6.68641206041e-02 - 6.44054743742e-02 5.94462807362e-02 5.50251512552e-02 5.11831265828e-02 4.79731106469e-02 4.55081727847e-02 - 4.39402098517e-02 4.34003076052e-02 4.39402098517e-02 4.55081727847e-02 4.79731106469e-02 5.11831265828e-02 - 5.50251512552e-02 5.94462807362e-02 6.44054743742e-02 6.97522426294e-02 7.50510418428e-02 7.93709590427e-02 - 8.11458755837e-02 7.84511058955e-02 7.00400365127e-02 5.66663226477e-02 4.13123485649e-02 2.77489957459e-02 - 1.87771308641e-02 1.56860392578e-02 1.87771308641e-02 2.77489957459e-02 4.13123485649e-02 5.66663226477e-02 - 7.00400365127e-02 7.84511058955e-02 8.11458755837e-02 7.93709590427e-02 7.50510418428e-02 6.97522426294e-02 - 6.77723654588e-02 6.34040688222e-02 5.93841418824e-02 5.57595749637e-02 5.26787408684e-02 5.03893328752e-02 - 4.91578982971e-02 4.91578982971e-02 5.03893328752e-02 5.26787408684e-02 5.57595749637e-02 5.93841418824e-02 - 6.34040688222e-02 6.77723654588e-02 7.24538631804e-02 7.72682499914e-02 8.16998180862e-02 8.47143937707e-02 - 8.47410728024e-02 8.01500628124e-02 7.03323963389e-02 5.66663226477e-02 4.22847991283e-02 3.06594619284e-02 - 2.42761411551e-02 2.42761411551e-02 3.06594619284e-02 4.22847991283e-02 5.66663226477e-02 7.03323963389e-02 - 8.01500628124e-02 8.47410728024e-02 8.47143937707e-02 8.16998180862e-02 7.72682499914e-02 7.24538631804e-02 - 7.10977313661e-02 6.72218662363e-02 6.33941825467e-02 5.97584596222e-02 5.66509609539e-02 5.45211951056e-02 - 5.37595739225e-02 5.45211951056e-02 5.66509609539e-02 5.97584596222e-02 6.33941825467e-02 6.72218662363e-02 - 7.10977313661e-02 7.50243106749e-02 7.90059272690e-02 8.28633557769e-02 8.60542685404e-02 8.75562567048e-02 - 8.59805323971e-02 8.01500628124e-02 7.00400365127e-02 5.73653289979e-02 4.51254329663e-02 3.63849623957e-02 - 3.32338776264e-02 3.63849623957e-02 4.51254329663e-02 5.73653289979e-02 7.00400365127e-02 8.01500628124e-02 - 8.59805323971e-02 8.75562567048e-02 8.60542685404e-02 8.28633557769e-02 7.90059272690e-02 7.50243106749e-02 - 7.40032629540e-02 7.02831021338e-02 6.62522137956e-02 6.22821499923e-02 5.90154969276e-02 5.71527035674e-02 - 5.71527035674e-02 5.90154969276e-02 6.22821499923e-02 6.62522137956e-02 7.02831021338e-02 7.40032629540e-02 - 7.73458021392e-02 8.04193974336e-02 8.33038946145e-02 8.58561529560e-02 8.75716967614e-02 8.75562567048e-02 - 8.47410728024e-02 7.84511058955e-02 6.91119067669e-02 5.85232784436e-02 4.93308963719e-02 4.40123223759e-02 - 4.40123223759e-02 4.93308963719e-02 5.85232784436e-02 6.91119067669e-02 7.84511058955e-02 8.47410728024e-02 - 8.75562567048e-02 8.75716967614e-02 8.58561529560e-02 8.33038946145e-02 8.04193974336e-02 7.73458021392e-02 - 7.57970302390e-02 7.16581855164e-02 6.69101294891e-02 6.23288110708e-02 5.89627863020e-02 5.77208882781e-02 - 5.89627863020e-02 6.23288110708e-02 6.69101294891e-02 7.16581855164e-02 7.57970302390e-02 7.90236437036e-02 - 8.14375530661e-02 8.33038946145e-02 8.48028174918e-02 8.58561529560e-02 8.60542685404e-02 8.47143937707e-02 - 8.11458755837e-02 7.51264696898e-02 6.73541476702e-02 5.94868177545e-02 5.36143814352e-02 5.14403532045e-02 - 5.36143814352e-02 5.94868177545e-02 6.73541476702e-02 7.51264696898e-02 8.11458755837e-02 8.47143937707e-02 - 8.60542685404e-02 8.58561529560e-02 8.48028174918e-02 8.33038946145e-02 8.14375530661e-02 7.90236437036e-02 - 7.55368812409e-02 7.03019494995e-02 6.44394828494e-02 5.92810318582e-02 5.62463189889e-02 5.62463189889e-02 - 5.92810318582e-02 6.44394828494e-02 7.03019494995e-02 7.55368812409e-02 7.93709590427e-02 8.16998180862e-02 - 8.28633557769e-02 8.33038946145e-02 8.33038946145e-02 8.28633557769e-02 8.16998180862e-02 7.93709590427e-02 - 7.55368812409e-02 7.03019494995e-02 6.44394828494e-02 5.92810318582e-02 5.62463189889e-02 5.62463189889e-02 - 5.92810318582e-02 6.44394828494e-02 7.03019494995e-02 7.55368812409e-02 7.93709590427e-02 8.16998180862e-02 - 8.28633557769e-02 8.33038946145e-02 8.33038946145e-02 8.28633557769e-02 8.16998180862e-02 7.93709590427e-02 - 7.23556493700e-02 6.55787911247e-02 5.86758842735e-02 5.34983990182e-02 5.15765048907e-02 5.34983990182e-02 - 5.86758842735e-02 6.55787911247e-02 7.23556493700e-02 7.75631573239e-02 8.06097207709e-02 8.16998180862e-02 - 8.14375530661e-02 8.04193974336e-02 7.90059272690e-02 7.72682499914e-02 7.50510418428e-02 7.21264918488e-02 - 6.84139609392e-02 6.41840706496e-02 6.01184381094e-02 5.71366804742e-02 5.60372557288e-02 5.71366804742e-02 - 6.01184381094e-02 6.41840706496e-02 6.84139609392e-02 7.21264918488e-02 7.50510418428e-02 7.72682499914e-02 - 7.90059272690e-02 8.04193974336e-02 8.14375530661e-02 8.16998180862e-02 8.06097207709e-02 7.75631573239e-02 - 6.60504635380e-02 5.79103146750e-02 5.07010770424e-02 4.64751950426e-02 4.64751950426e-02 5.07010770424e-02 - 5.79103146750e-02 6.60504635380e-02 7.30418134594e-02 7.75631573239e-02 7.93709590427e-02 7.90236437036e-02 - 7.73458021392e-02 7.50243106749e-02 7.24538631804e-02 6.97522426294e-02 6.68641206041e-02 6.37149803432e-02 - 6.03694423859e-02 5.71251588417e-02 5.44829894560e-02 5.29846351657e-02 5.29846351657e-02 5.44829894560e-02 - 5.71251588417e-02 6.03694423859e-02 6.37149803432e-02 6.68641206041e-02 6.97522426294e-02 7.24538631804e-02 - 7.50243106749e-02 7.73458021392e-02 7.90236437036e-02 7.93709590427e-02 7.75631573239e-02 7.30418134594e-02 - 4.60013609401e-02 3.62214481565e-02 3.07039905741e-02 3.07039905741e-02 3.62214481565e-02 4.60013609401e-02 - 5.76200322747e-02 6.81077724909e-02 7.51264696898e-02 7.78881394404e-02 7.70723261920e-02 7.40032629540e-02 - 6.98920688762e-02 6.55352798807e-02 6.13379141192e-02 5.74449785733e-02 5.38883507401e-02 5.07121410456e-02 - 4.80406383964e-02 4.60731359718e-02 4.50208900473e-02 4.50208900473e-02 4.60731359718e-02 4.80406383964e-02 - 5.07121410456e-02 5.38883507401e-02 5.74449785733e-02 6.13379141192e-02 6.55352798807e-02 6.98920688762e-02 - 7.40032629540e-02 7.70723261920e-02 7.78881394404e-02 7.51264696898e-02 6.81077724909e-02 5.76200322747e-02 - 3.62214481565e-02 2.86292518106e-02 2.59250062413e-02 2.86292518106e-02 3.62214481565e-02 4.70389926376e-02 - 5.83777841365e-02 6.73541476702e-02 7.21810172465e-02 7.27796836797e-02 7.02831021338e-02 6.61022866145e-02 - 6.13334872428e-02 5.66331890923e-02 5.23143637463e-02 4.84855850881e-02 4.51788789706e-02 4.24386109393e-02 - 4.03527020822e-02 3.90350130516e-02 3.85829474965e-02 3.90350130516e-02 4.03527020822e-02 4.24386109393e-02 - 4.51788789706e-02 4.84855850881e-02 5.23143637463e-02 5.66331890923e-02 6.13334872428e-02 6.61022866145e-02 - 7.02831021338e-02 7.27796836797e-02 7.21810172465e-02 6.73541476702e-02 5.83777841365e-02 4.70389926376e-02 - 3.07039905741e-02 2.59250062413e-02 2.59250062413e-02 3.07039905741e-02 3.93541671489e-02 4.98718618187e-02 - 5.94868177545e-02 6.57918464265e-02 6.78442738531e-02 6.62522137956e-02 6.23688231248e-02 5.74762428735e-02 - 5.24477482650e-02 4.77625301985e-02 4.36277000850e-02 4.01041807768e-02 3.72078996967e-02 3.49654910486e-02 - 3.34242157073e-02 3.26363277502e-02 3.26363277502e-02 3.34242157073e-02 3.49654910486e-02 3.72078996967e-02 - 4.01041807768e-02 4.36277000850e-02 4.77625301985e-02 5.24477482650e-02 5.74762428735e-02 6.23688231248e-02 - 6.62522137956e-02 6.78442738531e-02 6.57918464265e-02 5.94868177545e-02 4.98718618187e-02 3.93541671489e-02 - 3.07039905741e-02 2.86292518106e-02 3.07039905741e-02 3.65582592974e-02 4.49279278957e-02 5.36143814352e-02 - 6.01752681104e-02 6.30764730892e-02 6.22821499923e-02 5.88318176265e-02 5.40097122002e-02 4.88190878681e-02 - 4.38725463784e-02 3.94725484932e-02 3.57259716101e-02 3.26483588385e-02 3.02357338101e-02 2.84935612207e-02 - 2.74372089612e-02 2.70827915169e-02 2.74372089612e-02 2.84935612207e-02 3.02357338101e-02 3.26483588385e-02 - 3.57259716101e-02 3.94725484932e-02 4.38725463784e-02 4.88190878681e-02 5.40097122002e-02 5.88318176265e-02 - 6.22821499923e-02 6.30764730892e-02 6.01752681104e-02 5.36143814352e-02 4.49279278957e-02 3.65582592974e-02 - 3.62214481565e-02 3.62214481565e-02 3.93541671489e-02 4.49279278957e-02 5.14403532045e-02 5.68740665481e-02 - 5.95715936141e-02 5.90154969276e-02 5.58153453540e-02 5.10737783335e-02 4.57968161948e-02 4.06654278454e-02 - 3.60511821341e-02 3.21049723875e-02 2.88533907006e-02 2.62778950395e-02 2.43576039836e-02 2.30804654510e-02 - 2.24420850452e-02 2.24420850452e-02 2.30804654510e-02 2.43576039836e-02 2.62778950395e-02 2.88533907006e-02 - 3.21049723875e-02 3.60511821341e-02 4.06654278454e-02 4.57968161948e-02 5.10737783335e-02 5.58153453540e-02 - 5.90154969276e-02 5.95715936141e-02 5.68740665481e-02 5.14403532045e-02 4.49279278957e-02 3.93541671489e-02 - 4.60013609401e-02 4.70389926376e-02 4.98718618187e-02 5.36143814352e-02 5.68740665481e-02 5.82782465337e-02 - 5.71527035674e-02 5.37510492057e-02 4.88987422193e-02 4.34838779539e-02 3.81729635435e-02 3.33624200108e-02 - 2.92302840650e-02 2.58139075627e-02 2.30866420056e-02 2.10090352784e-02 1.95479913088e-02 1.86800926235e-02 - 1.83921353899e-02 1.86800926235e-02 1.95479913088e-02 2.10090352784e-02 2.30866420056e-02 2.58139075627e-02 - 2.92302840650e-02 3.33624200108e-02 3.81729635435e-02 4.34838779539e-02 4.88987422193e-02 5.37510492057e-02 - 5.71527035674e-02 5.82782465337e-02 5.68740665481e-02 5.36143814352e-02 4.98718618187e-02 4.70389926376e-02 - 5.76200322747e-02 5.83777841365e-02 5.94868177545e-02 6.01752681104e-02 5.95715936141e-02 5.71527035674e-02 - 5.30133769166e-02 4.77311231410e-02 4.20165784801e-02 3.64535808156e-02 3.14154606035e-02 2.70818268649e-02 - 2.34923498457e-02 2.06126999880e-02 1.83878553878e-02 1.67669692380e-02 1.57094271493e-02 1.51874137660e-02 - 1.51874137660e-02 1.57094271493e-02 1.67669692380e-02 1.83878553878e-02 2.06126999880e-02 2.34923498457e-02 - 2.70818268649e-02 3.14154606035e-02 3.64535808156e-02 4.20165784801e-02 4.77311231410e-02 5.30133769166e-02 - 5.71527035674e-02 5.95715936141e-02 6.01752681104e-02 5.94868177545e-02 5.83777841365e-02 5.76200322747e-02 - 6.81077724909e-02 6.73541476702e-02 6.57918464265e-02 6.30764730892e-02 5.90154969276e-02 5.37510492057e-02 - 4.77311231410e-02 4.15120643887e-02 3.55725175924e-02 3.02323588099e-02 2.56499234494e-02 2.18557815330e-02 - 1.88049742175e-02 1.64272283654e-02 1.46550533623e-02 1.34318126710e-02 1.27148275869e-02 1.24785638223e-02 - 1.27148275869e-02 1.34318126710e-02 1.46550533623e-02 1.64272283654e-02 1.88049742175e-02 2.18557815330e-02 - 2.56499234494e-02 3.02323588099e-02 3.55725175924e-02 4.15120643887e-02 4.77311231410e-02 5.37510492057e-02 - 5.90154969276e-02 6.30764730892e-02 6.57918464265e-02 6.73541476702e-02 6.81077724909e-02 6.83266751007e-02 - 7.51264696898e-02 7.21810172465e-02 6.78442738531e-02 6.22821499923e-02 5.58153453540e-02 4.88987422193e-02 - 4.20165784801e-02 3.55725175924e-02 2.98349904445e-02 2.49333108373e-02 2.08820531014e-02 1.76229803621e-02 - 1.50702461704e-02 1.31397287366e-02 1.17590249893e-02 1.08706042529e-02 1.04356792319e-02 1.04356792319e-02 - 1.08706042529e-02 1.17590249893e-02 1.31397287366e-02 1.50702461704e-02 1.76229803621e-02 2.08820531014e-02 - 2.49333108373e-02 2.98349904445e-02 3.55725175924e-02 4.20165784801e-02 4.88987422193e-02 5.58153453540e-02 - 6.22821499923e-02 6.78442738531e-02 7.21810172465e-02 7.51264696898e-02 7.66122811094e-02 7.66122811094e-02 - 7.78881394404e-02 7.27796836797e-02 6.62522137956e-02 5.88318176265e-02 5.10737783335e-02 4.34838779539e-02 - 3.64535808156e-02 3.02323588099e-02 2.49333108373e-02 2.05587788214e-02 1.70389543521e-02 1.42737851127e-02 - 1.21629507848e-02 1.06181928008e-02 9.56702175361e-03 8.95658363692e-03 8.75631776595e-03 8.95658363692e-03 - 9.56702175361e-03 1.06181928008e-02 1.21629507848e-02 1.42737851127e-02 1.70389543521e-02 2.05587788214e-02 - 2.49333108373e-02 3.02323588099e-02 3.64535808156e-02 4.34838779539e-02 5.10737783335e-02 5.88318176265e-02 - 6.62522137956e-02 7.27796836797e-02 7.78881394404e-02 8.11458755837e-02 8.22656900591e-02 8.11458755837e-02 - 7.70723261920e-02 7.02831021338e-02 6.23688231248e-02 5.40097122002e-02 4.57968161948e-02 3.81729635435e-02 - 3.14154606035e-02 2.56499234494e-02 2.08820531014e-02 1.70389543521e-02 1.40112393540e-02 1.16845233837e-02 - 9.95507847617e-03 8.73551184506e-03 7.95863052826e-03 7.58058258839e-03 7.58058258839e-03 7.95863052826e-03 - 8.73551184506e-03 9.95507847617e-03 1.16845233837e-02 1.40112393540e-02 1.70389543521e-02 2.08820531014e-02 - 2.56499234494e-02 3.14154606035e-02 3.81729635435e-02 4.57968161948e-02 5.40097122002e-02 6.23688231248e-02 - 7.02831021338e-02 7.70723261920e-02 8.20645507484e-02 8.47143937707e-02 8.47143937707e-02 8.20645507484e-02 - 7.40032629540e-02 6.61022866145e-02 5.74762428735e-02 4.88190878681e-02 4.06654278454e-02 3.33624200108e-02 - 2.70818268649e-02 2.18557815330e-02 1.76229803621e-02 1.42737851127e-02 1.16845233837e-02 9.73748464183e-03 - 8.33057919998e-03 7.38252390656e-03 6.83583874198e-03 6.65719946009e-03 6.83583874198e-03 7.38252390656e-03 - 8.33057919998e-03 9.73748464183e-03 1.16845233837e-02 1.42737851127e-02 1.76229803621e-02 2.18557815330e-02 - 2.70818268649e-02 3.33624200108e-02 4.06654278454e-02 4.88190878681e-02 5.74762428735e-02 6.61022866145e-02 - 7.40032629540e-02 8.04073084192e-02 8.45957298814e-02 8.60542685404e-02 8.45957298814e-02 8.04073084192e-02 - 6.98920688762e-02 6.13334872428e-02 5.24477482650e-02 4.38725463784e-02 3.60511821341e-02 2.92302840650e-02 - 2.34923498457e-02 1.88049742175e-02 1.50702461704e-02 1.21629507848e-02 9.95507847617e-03 8.33057919998e-03 - 7.19410390186e-03 6.47483593539e-03 6.12657930585e-03 6.12657930585e-03 6.47483593539e-03 7.19410390186e-03 - 8.33057919998e-03 9.95507847617e-03 1.21629507848e-02 1.50702461704e-02 1.88049742175e-02 2.34923498457e-02 - 2.92302840650e-02 3.60511821341e-02 4.38725463784e-02 5.24477482650e-02 6.13334872428e-02 6.98920688762e-02 - 7.73458021392e-02 8.28911486673e-02 8.58561529560e-02 8.58561529560e-02 8.28911486673e-02 7.73458021392e-02 - 6.55352798807e-02 5.66331890923e-02 4.77625301985e-02 3.94725484932e-02 3.21049723875e-02 2.58139075627e-02 - 2.06126999880e-02 1.64272283654e-02 1.31397287366e-02 1.06181928008e-02 8.73551184506e-03 7.38252390656e-03 - 6.47483593539e-03 5.95356833121e-03 5.78371930190e-03 5.95356833121e-03 6.47483593539e-03 7.38252390656e-03 - 8.73551184506e-03 1.06181928008e-02 1.31397287366e-02 1.64272283654e-02 2.06126999880e-02 2.58139075627e-02 - 3.21049723875e-02 3.94725484932e-02 4.77625301985e-02 5.66331890923e-02 6.55352798807e-02 7.37387049341e-02 - 8.04193974336e-02 8.48028174918e-02 8.63317298438e-02 8.48028174918e-02 8.04193974336e-02 7.37387049341e-02 - 6.13379141192e-02 5.23143637463e-02 4.36277000850e-02 3.57259716101e-02 2.88533907006e-02 2.30866420056e-02 - 1.83878553878e-02 1.46550533623e-02 1.17590249893e-02 9.56702175361e-03 7.95863052826e-03 6.83583874198e-03 - 6.12657930585e-03 5.78371930190e-03 5.78371930190e-03 6.12657930585e-03 6.83583874198e-03 7.95863052826e-03 - 9.56702175361e-03 1.17590249893e-02 1.46550533623e-02 1.83878553878e-02 2.30866420056e-02 2.88533907006e-02 - 3.57259716101e-02 4.36277000850e-02 5.23143637463e-02 6.13379141192e-02 7.00474085615e-02 7.76449689484e-02 - 8.33038946145e-02 8.63317298438e-02 8.63317298438e-02 8.33038946145e-02 7.76449689484e-02 7.00474085615e-02 - 5.74449785733e-02 4.84855850881e-02 4.01041807768e-02 3.26483588385e-02 2.62778950395e-02 2.10090352784e-02 - 1.67669692380e-02 1.34318126710e-02 1.08706042529e-02 8.95658363692e-03 7.58058258839e-03 6.65719946009e-03 - 6.12657930585e-03 5.95356833121e-03 6.12657930585e-03 6.65719946009e-03 7.58058258839e-03 8.95658363692e-03 - 1.08706042529e-02 1.34318126710e-02 1.67669692380e-02 2.10090352784e-02 2.62778950395e-02 3.26483588385e-02 - 4.01041807768e-02 4.84855850881e-02 5.74449785733e-02 6.64284767715e-02 7.47020608958e-02 8.14375530661e-02 - 8.58561529560e-02 8.73972293003e-02 8.58561529560e-02 8.14375530661e-02 7.47020608958e-02 6.64284767715e-02 - 5.38883507401e-02 4.51788789706e-02 3.72078996967e-02 3.02357338101e-02 2.43576039836e-02 1.95479913088e-02 - 1.57094271493e-02 1.27148275869e-02 1.04356792319e-02 8.75631776595e-03 7.58058258839e-03 6.83583874198e-03 - 6.47483593539e-03 6.47483593539e-03 6.83583874198e-03 7.58058258839e-03 8.75631776595e-03 1.04356792319e-02 - 1.27148275869e-02 1.57094271493e-02 1.95479913088e-02 2.43576039836e-02 3.02357338101e-02 3.72078996967e-02 - 4.51788789706e-02 5.38883507401e-02 6.28828729732e-02 7.15201290633e-02 7.90236437036e-02 8.45957298814e-02 - 8.75716967614e-02 8.75716967614e-02 8.45957298814e-02 7.90236437036e-02 7.15201290633e-02 6.28828729732e-02 - 5.07121410456e-02 4.24386109393e-02 3.49654910486e-02 2.84935612207e-02 2.30804654510e-02 1.86800926235e-02 - 1.51874137660e-02 1.24785638223e-02 1.04356792319e-02 8.95658363692e-03 7.95863052826e-03 7.38252390656e-03 - 7.19410390186e-03 7.38252390656e-03 7.95863052826e-03 8.95658363692e-03 1.04356792319e-02 1.24785638223e-02 - 1.51874137660e-02 1.86800926235e-02 2.30804654510e-02 2.84935612207e-02 3.49654910486e-02 4.24386109393e-02 - 5.07121410456e-02 5.94150808572e-02 6.80033074139e-02 7.57970302390e-02 8.20645507484e-02 8.61408122915e-02 - 8.75562567048e-02 8.61408122915e-02 8.20645507484e-02 7.57970302390e-02 6.80033074139e-02 5.94150808572e-02 - 4.80406383964e-02 4.03527020822e-02 3.34242157073e-02 2.74372089612e-02 2.24420850452e-02 1.83921353899e-02 - 1.51874137660e-02 1.27148275869e-02 1.08706042529e-02 9.56702175361e-03 8.73551184506e-03 8.33057919998e-03 - 8.33057919998e-03 8.73551184506e-03 9.56702175361e-03 1.08706042529e-02 1.27148275869e-02 1.51874137660e-02 - 1.83921353899e-02 2.24420850452e-02 2.74372089612e-02 3.34242157073e-02 4.03527020822e-02 4.80406383964e-02 - 5.61547897924e-02 6.42180018992e-02 7.16581855164e-02 7.78881394404e-02 8.23828782457e-02 8.47410728024e-02 - 8.47410728024e-02 8.23828782457e-02 7.78881394404e-02 7.16581855164e-02 6.42180018992e-02 5.61547897924e-02 - 4.60731359718e-02 3.90350130516e-02 3.26363277502e-02 2.70827915169e-02 2.24420850452e-02 1.86800926235e-02 - 1.57094271493e-02 1.34318126710e-02 1.17590249893e-02 1.06181928008e-02 9.95507847617e-03 9.73748464183e-03 - 9.95507847617e-03 1.06181928008e-02 1.17590249893e-02 1.34318126710e-02 1.57094271493e-02 1.86800926235e-02 - 2.24420850452e-02 2.70827915169e-02 3.26363277502e-02 3.90350130516e-02 4.60731359718e-02 5.33923081840e-02 - 6.05090723285e-02 6.69101294891e-02 7.21810172465e-02 7.60705845667e-02 7.84511058955e-02 7.92532152557e-02 - 7.84511058955e-02 7.60705845667e-02 7.21810172465e-02 6.69101294891e-02 6.05090723285e-02 5.33923081840e-02 - 4.50208900473e-02 3.85829474965e-02 3.26363277502e-02 2.74372089612e-02 2.30804654510e-02 1.95479913088e-02 - 1.67669692380e-02 1.46550533623e-02 1.31397287366e-02 1.21629507848e-02 1.16845233837e-02 1.16845233837e-02 - 1.21629507848e-02 1.31397287366e-02 1.46550533623e-02 1.67669692380e-02 1.95479913088e-02 2.30804654510e-02 - 2.74372089612e-02 3.26363277502e-02 3.85829474965e-02 4.50208900473e-02 5.15101646150e-02 5.74676014035e-02 - 6.23288110708e-02 6.57918464265e-02 6.79419572879e-02 6.91119067669e-02 6.96179820017e-02 6.96179820017e-02 - 6.91119067669e-02 6.79419572879e-02 6.57918464265e-02 6.23288110708e-02 5.74676014035e-02 5.15101646150e-02 - 4.50208900473e-02 3.90350130516e-02 3.34242157073e-02 2.84935612207e-02 2.43576039836e-02 2.10090352784e-02 - 1.83878553878e-02 1.64272283654e-02 1.50702461704e-02 1.42737851127e-02 1.40112393540e-02 1.42737851127e-02 - 1.50702461704e-02 1.64272283654e-02 1.83878553878e-02 2.10090352784e-02 2.43576039836e-02 2.84935612207e-02 - 3.34242157073e-02 3.90350130516e-02 4.50208900473e-02 5.08390344517e-02 5.57363453523e-02 5.89627863020e-02 - 6.01752681104e-02 5.97323039443e-02 5.85232784436e-02 5.74463352203e-02 5.70355201353e-02 5.74463352203e-02 - 5.85232784436e-02 5.97323039443e-02 6.01752681104e-02 5.89627863020e-02 5.57363453523e-02 5.08390344517e-02 - 4.60731359718e-02 4.03527020822e-02 3.49654910486e-02 3.02357338101e-02 2.62778950395e-02 2.30866420056e-02 - 2.06126999880e-02 1.88049742175e-02 1.76229803621e-02 1.70389543521e-02 1.70389543521e-02 1.76229803621e-02 - 1.88049742175e-02 2.06126999880e-02 2.30866420056e-02 2.62778950395e-02 3.02357338101e-02 3.49654910486e-02 - 4.03527020822e-02 4.60731359718e-02 5.15101646150e-02 5.57363453523e-02 5.77208882781e-02 5.68740665481e-02 - 5.36149267734e-02 4.93308963719e-02 4.56222411881e-02 4.35588929466e-02 4.35588929466e-02 4.56222411881e-02 - 4.93308963719e-02 5.36149267734e-02 5.68740665481e-02 5.77208882781e-02 5.57363453523e-02 5.15101646150e-02 - 4.80406383964e-02 4.24386109393e-02 3.72078996967e-02 3.26483588385e-02 2.88533907006e-02 2.58139075627e-02 - 2.34923498457e-02 2.18557815330e-02 2.08820531014e-02 2.05587788214e-02 2.08820531014e-02 2.18557815330e-02 - 2.34923498457e-02 2.58139075627e-02 2.88533907006e-02 3.26483588385e-02 3.72078996967e-02 4.24386109393e-02 - 4.80406383964e-02 5.33923081840e-02 5.74676014035e-02 5.89627863020e-02 5.68740665481e-02 5.13523903781e-02 - 4.40123223759e-02 3.71417160544e-02 3.25101129901e-02 3.09103717113e-02 3.25101129901e-02 3.71417160544e-02 - 4.40123223759e-02 5.13523903781e-02 5.68740665481e-02 5.89627863020e-02 5.74676014035e-02 5.33923081840e-02 - 5.07121410456e-02 4.51788789706e-02 4.01041807768e-02 3.57259716101e-02 3.21049723875e-02 2.92302840650e-02 - 2.70818268649e-02 2.56499234494e-02 2.49333108373e-02 2.49333108373e-02 2.56499234494e-02 2.70818268649e-02 - 2.92302840650e-02 3.21049723875e-02 3.57259716101e-02 4.01041807768e-02 4.51788789706e-02 5.07121410456e-02 - 5.61547897924e-02 6.05090723285e-02 6.23288110708e-02 6.01752681104e-02 5.36149267734e-02 4.40123223759e-02 - 3.40771392673e-02 2.63856510811e-02 2.23413746600e-02 2.23413746600e-02 2.63856510811e-02 3.40771392673e-02 - 4.40123223759e-02 5.36149267734e-02 6.01752681104e-02 6.23288110708e-02 6.05090723285e-02 5.61547897924e-02 - 5.38883507401e-02 4.84855850881e-02 4.36277000850e-02 3.94725484932e-02 3.60511821341e-02 3.33624200108e-02 - 3.14154606035e-02 3.02323588099e-02 2.98349904445e-02 3.02323588099e-02 3.14154606035e-02 3.33624200108e-02 - 3.60511821341e-02 3.94725484932e-02 4.36277000850e-02 4.84855850881e-02 5.38883507401e-02 5.94150808572e-02 - 6.42180018992e-02 6.69101294891e-02 6.57918464265e-02 5.97323039443e-02 4.93308963719e-02 3.71417160544e-02 - 2.63856510811e-02 1.93490286376e-02 1.69491736420e-02 1.93490286376e-02 2.63856510811e-02 3.71417160544e-02 - 4.93308963719e-02 5.97323039443e-02 6.57918464265e-02 6.69101294891e-02 6.42180018992e-02 5.94150808572e-02 - 5.74449785733e-02 5.23143637463e-02 4.77625301985e-02 4.38725463784e-02 4.06654278454e-02 3.81729635435e-02 - 3.64535808156e-02 3.55725175924e-02 3.55725175924e-02 3.64535808156e-02 3.81729635435e-02 4.06654278454e-02 - 4.38725463784e-02 4.77625301985e-02 5.23143637463e-02 5.74449785733e-02 6.28828729732e-02 6.80033074139e-02 - 7.16581855164e-02 7.21810172465e-02 6.79419572879e-02 5.85232784436e-02 4.56222411881e-02 3.25101129901e-02 - 2.23413746600e-02 1.69491736420e-02 1.69491736420e-02 2.23413746600e-02 3.25101129901e-02 4.56222411881e-02 - 5.85232784436e-02 6.79419572879e-02 7.21810172465e-02 7.16581855164e-02 6.80033074139e-02 6.28828729732e-02 - 6.13379141192e-02 5.66331890923e-02 5.24477482650e-02 4.88190878681e-02 4.57968161948e-02 4.34838779539e-02 - 4.20165784801e-02 4.15120643887e-02 4.20165784801e-02 4.34838779539e-02 4.57968161948e-02 4.88190878681e-02 - 5.24477482650e-02 5.66331890923e-02 6.13379141192e-02 6.64284767715e-02 7.15201290633e-02 7.57970302390e-02 - 7.78881394404e-02 7.60705845667e-02 6.91119067669e-02 5.74463352203e-02 4.35588929466e-02 3.09103717113e-02 - 2.23413746600e-02 1.93490286376e-02 2.23413746600e-02 3.09103717113e-02 4.35588929466e-02 5.74463352203e-02 - 6.91119067669e-02 7.60705845667e-02 7.78881394404e-02 7.57970302390e-02 7.15201290633e-02 6.64284767715e-02 - 6.55352798807e-02 6.13334872428e-02 5.74762428735e-02 5.40097122002e-02 5.10737783335e-02 4.88987422193e-02 - 4.77311231410e-02 4.77311231410e-02 4.88987422193e-02 5.10737783335e-02 5.40097122002e-02 5.74762428735e-02 - 6.13334872428e-02 6.55352798807e-02 7.00474085615e-02 7.47020608958e-02 7.90236437036e-02 8.20645507484e-02 - 8.23828782457e-02 7.84511058955e-02 6.96179820017e-02 5.70355201353e-02 4.35588929466e-02 3.25101129901e-02 - 2.63856510811e-02 2.63856510811e-02 3.25101129901e-02 4.35588929466e-02 5.70355201353e-02 6.96179820017e-02 - 7.84511058955e-02 8.23828782457e-02 8.20645507484e-02 7.90236437036e-02 7.47020608958e-02 7.00474085615e-02 - 6.98920688762e-02 6.61022866145e-02 6.23688231248e-02 5.88318176265e-02 5.58153453540e-02 5.37510492057e-02 - 5.30133769166e-02 5.37510492057e-02 5.58153453540e-02 5.88318176265e-02 6.23688231248e-02 6.61022866145e-02 - 6.98920688762e-02 7.37387049341e-02 7.76449689484e-02 8.14375530661e-02 8.45957298814e-02 8.61408122915e-02 - 8.47410728024e-02 7.92532152557e-02 6.96179820017e-02 5.74463352203e-02 4.56222411881e-02 3.71417160544e-02 - 3.40771392673e-02 3.71417160544e-02 4.56222411881e-02 5.74463352203e-02 6.96179820017e-02 7.92532152557e-02 - 8.47410728024e-02 8.61408122915e-02 8.45957298814e-02 8.14375530661e-02 7.76449689484e-02 7.37387049341e-02 - 7.40032629540e-02 7.02831021338e-02 6.62522137956e-02 6.22821499923e-02 5.90154969276e-02 5.71527035674e-02 - 5.71527035674e-02 5.90154969276e-02 6.22821499923e-02 6.62522137956e-02 7.02831021338e-02 7.40032629540e-02 - 7.73458021392e-02 8.04193974336e-02 8.33038946145e-02 8.58561529560e-02 8.75716967614e-02 8.75562567048e-02 - 8.47410728024e-02 7.84511058955e-02 6.91119067669e-02 5.85232784436e-02 4.93308963719e-02 4.40123223759e-02 - 4.40123223759e-02 4.93308963719e-02 5.85232784436e-02 6.91119067669e-02 7.84511058955e-02 8.47410728024e-02 - 8.75562567048e-02 8.75716967614e-02 8.58561529560e-02 8.33038946145e-02 8.04193974336e-02 7.73458021392e-02 - 7.70723261920e-02 7.27796836797e-02 6.78442738531e-02 6.30764730892e-02 5.95715936141e-02 5.82782465337e-02 - 5.95715936141e-02 6.30764730892e-02 6.78442738531e-02 7.27796836797e-02 7.70723261920e-02 8.04073084192e-02 - 8.28911486673e-02 8.48028174918e-02 8.63317298438e-02 8.73972293003e-02 8.75716967614e-02 8.61408122915e-02 - 8.23828782457e-02 7.60705845667e-02 6.79419572879e-02 5.97323039443e-02 5.36149267734e-02 5.13523903781e-02 - 5.36149267734e-02 5.97323039443e-02 6.79419572879e-02 7.60705845667e-02 8.23828782457e-02 8.61408122915e-02 - 8.75716967614e-02 8.73972293003e-02 8.63317298438e-02 8.48028174918e-02 8.28911486673e-02 8.04073084192e-02 - 7.78881394404e-02 7.21810172465e-02 6.57918464265e-02 6.01752681104e-02 5.68740665481e-02 5.68740665481e-02 - 6.01752681104e-02 6.57918464265e-02 7.21810172465e-02 7.78881394404e-02 8.20645507484e-02 8.45957298814e-02 - 8.58561529560e-02 8.63317298438e-02 8.63317298438e-02 8.58561529560e-02 8.45957298814e-02 8.20645507484e-02 - 7.78881394404e-02 7.21810172465e-02 6.57918464265e-02 6.01752681104e-02 5.68740665481e-02 5.68740665481e-02 - 6.01752681104e-02 6.57918464265e-02 7.21810172465e-02 7.78881394404e-02 8.20645507484e-02 8.45957298814e-02 - 8.58561529560e-02 8.63317298438e-02 8.63317298438e-02 8.58561529560e-02 8.45957298814e-02 8.20645507484e-02 - 7.51264696898e-02 6.73541476702e-02 5.94868177545e-02 5.36143814352e-02 5.14403532045e-02 5.36143814352e-02 - 5.94868177545e-02 6.73541476702e-02 7.51264696898e-02 8.11458755837e-02 8.47143937707e-02 8.60542685404e-02 - 8.58561529560e-02 8.48028174918e-02 8.33038946145e-02 8.14375530661e-02 7.90236437036e-02 7.57970302390e-02 - 7.16581855164e-02 6.69101294891e-02 6.23288110708e-02 5.89627863020e-02 5.77208882781e-02 5.89627863020e-02 - 6.23288110708e-02 6.69101294891e-02 7.16581855164e-02 7.57970302390e-02 7.90236437036e-02 8.14375530661e-02 - 8.33038946145e-02 8.48028174918e-02 8.58561529560e-02 8.60542685404e-02 8.47143937707e-02 8.11458755837e-02 - 6.81077724909e-02 5.83777841365e-02 4.98718618187e-02 4.49279278957e-02 4.49279278957e-02 4.98718618187e-02 - 5.83777841365e-02 6.81077724909e-02 7.66122811094e-02 8.22656900591e-02 8.47143937707e-02 8.45957298814e-02 - 8.28911486673e-02 8.04193974336e-02 7.76449689484e-02 7.47020608958e-02 7.15201290633e-02 6.80033074139e-02 - 6.42180018992e-02 6.05090723285e-02 5.74676014035e-02 5.57363453523e-02 5.57363453523e-02 5.74676014035e-02 - 6.05090723285e-02 6.42180018992e-02 6.80033074139e-02 7.15201290633e-02 7.47020608958e-02 7.76449689484e-02 - 8.04193974336e-02 8.28911486673e-02 8.45957298814e-02 8.47143937707e-02 8.22656900591e-02 7.66122811094e-02 - 5.76200322747e-02 4.70389926376e-02 3.93541671489e-02 3.65582592974e-02 3.93541671489e-02 4.70389926376e-02 - 5.76200322747e-02 6.83266751007e-02 7.66122811094e-02 8.11458755837e-02 8.20645507484e-02 8.04073084192e-02 - 7.73458021392e-02 7.37387049341e-02 7.00474085615e-02 6.64284767715e-02 6.28828729732e-02 5.94150808572e-02 - 5.61547897924e-02 5.33923081840e-02 5.15101646150e-02 5.08390344517e-02 5.15101646150e-02 5.33923081840e-02 - 5.61547897924e-02 5.94150808572e-02 6.28828729732e-02 6.64284767715e-02 7.00474085615e-02 7.37387049341e-02 - 7.73458021392e-02 8.04073084192e-02 8.20645507484e-02 8.11458755837e-02 7.66122811094e-02 6.83266751007e-02 - 3.09103717113e-02 2.23413746600e-02 1.93490286376e-02 2.23413746600e-02 3.09103717113e-02 4.35588929466e-02 - 5.74463352203e-02 6.91119067669e-02 7.60705845667e-02 7.78881394404e-02 7.57970302390e-02 7.15201290633e-02 - 6.64284767715e-02 6.13379141192e-02 5.66331890923e-02 5.24477482650e-02 4.88190878681e-02 4.57968161948e-02 - 4.34838779539e-02 4.20165784801e-02 4.15120643887e-02 4.20165784801e-02 4.34838779539e-02 4.57968161948e-02 - 4.88190878681e-02 5.24477482650e-02 5.66331890923e-02 6.13379141192e-02 6.64284767715e-02 7.15201290633e-02 - 7.57970302390e-02 7.78881394404e-02 7.60705845667e-02 6.91119067669e-02 5.74463352203e-02 4.35588929466e-02 - 2.23413746600e-02 1.69491736420e-02 1.69491736420e-02 2.23413746600e-02 3.25101129901e-02 4.56222411881e-02 - 5.85232784436e-02 6.79419572879e-02 7.21810172465e-02 7.16581855164e-02 6.80033074139e-02 6.28828729732e-02 - 5.74449785733e-02 5.23143637463e-02 4.77625301985e-02 4.38725463784e-02 4.06654278454e-02 3.81729635435e-02 - 3.64535808156e-02 3.55725175924e-02 3.55725175924e-02 3.64535808156e-02 3.81729635435e-02 4.06654278454e-02 - 4.38725463784e-02 4.77625301985e-02 5.23143637463e-02 5.74449785733e-02 6.28828729732e-02 6.80033074139e-02 - 7.16581855164e-02 7.21810172465e-02 6.79419572879e-02 5.85232784436e-02 4.56222411881e-02 3.25101129901e-02 - 1.93490286376e-02 1.69491736420e-02 1.93490286376e-02 2.63856510811e-02 3.71417160544e-02 4.93308963719e-02 - 5.97323039443e-02 6.57918464265e-02 6.69101294891e-02 6.42180018992e-02 5.94150808572e-02 5.38883507401e-02 - 4.84855850881e-02 4.36277000850e-02 3.94725484932e-02 3.60511821341e-02 3.33624200108e-02 3.14154606035e-02 - 3.02323588099e-02 2.98349904445e-02 3.02323588099e-02 3.14154606035e-02 3.33624200108e-02 3.60511821341e-02 - 3.94725484932e-02 4.36277000850e-02 4.84855850881e-02 5.38883507401e-02 5.94150808572e-02 6.42180018992e-02 - 6.69101294891e-02 6.57918464265e-02 5.97323039443e-02 4.93308963719e-02 3.71417160544e-02 2.63856510811e-02 - 2.23413746600e-02 2.23413746600e-02 2.63856510811e-02 3.40771392673e-02 4.40123223759e-02 5.36149267734e-02 - 6.01752681104e-02 6.23288110708e-02 6.05090723285e-02 5.61547897924e-02 5.07121410456e-02 4.51788789706e-02 - 4.01041807768e-02 3.57259716101e-02 3.21049723875e-02 2.92302840650e-02 2.70818268649e-02 2.56499234494e-02 - 2.49333108373e-02 2.49333108373e-02 2.56499234494e-02 2.70818268649e-02 2.92302840650e-02 3.21049723875e-02 - 3.57259716101e-02 4.01041807768e-02 4.51788789706e-02 5.07121410456e-02 5.61547897924e-02 6.05090723285e-02 - 6.23288110708e-02 6.01752681104e-02 5.36149267734e-02 4.40123223759e-02 3.40771392673e-02 2.63856510811e-02 - 3.09103717113e-02 3.25101129901e-02 3.71417160544e-02 4.40123223759e-02 5.13523903781e-02 5.68740665481e-02 - 5.89627863020e-02 5.74676014035e-02 5.33923081840e-02 4.80406383964e-02 4.24386109393e-02 3.72078996967e-02 - 3.26483588385e-02 2.88533907006e-02 2.58139075627e-02 2.34923498457e-02 2.18557815330e-02 2.08820531014e-02 - 2.05587788214e-02 2.08820531014e-02 2.18557815330e-02 2.34923498457e-02 2.58139075627e-02 2.88533907006e-02 - 3.26483588385e-02 3.72078996967e-02 4.24386109393e-02 4.80406383964e-02 5.33923081840e-02 5.74676014035e-02 - 5.89627863020e-02 5.68740665481e-02 5.13523903781e-02 4.40123223759e-02 3.71417160544e-02 3.25101129901e-02 - 4.35588929466e-02 4.56222411881e-02 4.93308963719e-02 5.36149267734e-02 5.68740665481e-02 5.77208882781e-02 - 5.57363453523e-02 5.15101646150e-02 4.60731359718e-02 4.03527020822e-02 3.49654910486e-02 3.02357338101e-02 - 2.62778950395e-02 2.30866420056e-02 2.06126999880e-02 1.88049742175e-02 1.76229803621e-02 1.70389543521e-02 - 1.70389543521e-02 1.76229803621e-02 1.88049742175e-02 2.06126999880e-02 2.30866420056e-02 2.62778950395e-02 - 3.02357338101e-02 3.49654910486e-02 4.03527020822e-02 4.60731359718e-02 5.15101646150e-02 5.57363453523e-02 - 5.77208882781e-02 5.68740665481e-02 5.36149267734e-02 4.93308963719e-02 4.56222411881e-02 4.35588929466e-02 - 5.74463352203e-02 5.85232784436e-02 5.97323039443e-02 6.01752681104e-02 5.89627863020e-02 5.57363453523e-02 - 5.08390344517e-02 4.50208900473e-02 3.90350130516e-02 3.34242157073e-02 2.84935612207e-02 2.43576039836e-02 - 2.10090352784e-02 1.83878553878e-02 1.64272283654e-02 1.50702461704e-02 1.42737851127e-02 1.40112393540e-02 - 1.42737851127e-02 1.50702461704e-02 1.64272283654e-02 1.83878553878e-02 2.10090352784e-02 2.43576039836e-02 - 2.84935612207e-02 3.34242157073e-02 3.90350130516e-02 4.50208900473e-02 5.08390344517e-02 5.57363453523e-02 - 5.89627863020e-02 6.01752681104e-02 5.97323039443e-02 5.85232784436e-02 5.74463352203e-02 5.70355201353e-02 - 6.91119067669e-02 6.79419572879e-02 6.57918464265e-02 6.23288110708e-02 5.74676014035e-02 5.15101646150e-02 - 4.50208900473e-02 3.85829474965e-02 3.26363277502e-02 2.74372089612e-02 2.30804654510e-02 1.95479913088e-02 - 1.67669692380e-02 1.46550533623e-02 1.31397287366e-02 1.21629507848e-02 1.16845233837e-02 1.16845233837e-02 - 1.21629507848e-02 1.31397287366e-02 1.46550533623e-02 1.67669692380e-02 1.95479913088e-02 2.30804654510e-02 - 2.74372089612e-02 3.26363277502e-02 3.85829474965e-02 4.50208900473e-02 5.15101646150e-02 5.74676014035e-02 - 6.23288110708e-02 6.57918464265e-02 6.79419572879e-02 6.91119067669e-02 6.96179820017e-02 6.96179820017e-02 - 7.60705845667e-02 7.21810172465e-02 6.69101294891e-02 6.05090723285e-02 5.33923081840e-02 4.60731359718e-02 - 3.90350130516e-02 3.26363277502e-02 2.70827915169e-02 2.24420850452e-02 1.86800926235e-02 1.57094271493e-02 - 1.34318126710e-02 1.17590249893e-02 1.06181928008e-02 9.95507847617e-03 9.73748464183e-03 9.95507847617e-03 - 1.06181928008e-02 1.17590249893e-02 1.34318126710e-02 1.57094271493e-02 1.86800926235e-02 2.24420850452e-02 - 2.70827915169e-02 3.26363277502e-02 3.90350130516e-02 4.60731359718e-02 5.33923081840e-02 6.05090723285e-02 - 6.69101294891e-02 7.21810172465e-02 7.60705845667e-02 7.84511058955e-02 7.92532152557e-02 7.84511058955e-02 - 7.78881394404e-02 7.16581855164e-02 6.42180018992e-02 5.61547897924e-02 4.80406383964e-02 4.03527020822e-02 - 3.34242157073e-02 2.74372089612e-02 2.24420850452e-02 1.83921353899e-02 1.51874137660e-02 1.27148275869e-02 - 1.08706042529e-02 9.56702175361e-03 8.73551184506e-03 8.33057919998e-03 8.33057919998e-03 8.73551184506e-03 - 9.56702175361e-03 1.08706042529e-02 1.27148275869e-02 1.51874137660e-02 1.83921353899e-02 2.24420850452e-02 - 2.74372089612e-02 3.34242157073e-02 4.03527020822e-02 4.80406383964e-02 5.61547897924e-02 6.42180018992e-02 - 7.16581855164e-02 7.78881394404e-02 8.23828782457e-02 8.47410728024e-02 8.47410728024e-02 8.23828782457e-02 - 7.57970302390e-02 6.80033074139e-02 5.94150808572e-02 5.07121410456e-02 4.24386109393e-02 3.49654910486e-02 - 2.84935612207e-02 2.30804654510e-02 1.86800926235e-02 1.51874137660e-02 1.24785638223e-02 1.04356792319e-02 - 8.95658363692e-03 7.95863052826e-03 7.38252390656e-03 7.19410390186e-03 7.38252390656e-03 7.95863052826e-03 - 8.95658363692e-03 1.04356792319e-02 1.24785638223e-02 1.51874137660e-02 1.86800926235e-02 2.30804654510e-02 - 2.84935612207e-02 3.49654910486e-02 4.24386109393e-02 5.07121410456e-02 5.94150808572e-02 6.80033074139e-02 - 7.57970302390e-02 8.20645507484e-02 8.61408122915e-02 8.75562567048e-02 8.61408122915e-02 8.20645507484e-02 - 7.15201290633e-02 6.28828729732e-02 5.38883507401e-02 4.51788789706e-02 3.72078996967e-02 3.02357338101e-02 - 2.43576039836e-02 1.95479913088e-02 1.57094271493e-02 1.27148275869e-02 1.04356792319e-02 8.75631776595e-03 - 7.58058258839e-03 6.83583874198e-03 6.47483593539e-03 6.47483593539e-03 6.83583874198e-03 7.58058258839e-03 - 8.75631776595e-03 1.04356792319e-02 1.27148275869e-02 1.57094271493e-02 1.95479913088e-02 2.43576039836e-02 - 3.02357338101e-02 3.72078996967e-02 4.51788789706e-02 5.38883507401e-02 6.28828729732e-02 7.15201290633e-02 - 7.90236437036e-02 8.45957298814e-02 8.75716967614e-02 8.75716967614e-02 8.45957298814e-02 7.90236437036e-02 - 6.64284767715e-02 5.74449785733e-02 4.84855850881e-02 4.01041807768e-02 3.26483588385e-02 2.62778950395e-02 - 2.10090352784e-02 1.67669692380e-02 1.34318126710e-02 1.08706042529e-02 8.95658363692e-03 7.58058258839e-03 - 6.65719946009e-03 6.12657930585e-03 5.95356833121e-03 6.12657930585e-03 6.65719946009e-03 7.58058258839e-03 - 8.95658363692e-03 1.08706042529e-02 1.34318126710e-02 1.67669692380e-02 2.10090352784e-02 2.62778950395e-02 - 3.26483588385e-02 4.01041807768e-02 4.84855850881e-02 5.74449785733e-02 6.64284767715e-02 7.47020608958e-02 - 8.14375530661e-02 8.58561529560e-02 8.73972293003e-02 8.58561529560e-02 8.14375530661e-02 7.47020608958e-02 - 6.13379141192e-02 5.23143637463e-02 4.36277000850e-02 3.57259716101e-02 2.88533907006e-02 2.30866420056e-02 - 1.83878553878e-02 1.46550533623e-02 1.17590249893e-02 9.56702175361e-03 7.95863052827e-03 6.83583874198e-03 - 6.12657930585e-03 5.78371930190e-03 5.78371930190e-03 6.12657930585e-03 6.83583874198e-03 7.95863052826e-03 - 9.56702175361e-03 1.17590249893e-02 1.46550533623e-02 1.83878553878e-02 2.30866420056e-02 2.88533907006e-02 - 3.57259716101e-02 4.36277000850e-02 5.23143637463e-02 6.13379141192e-02 7.00474085615e-02 7.76449689484e-02 - 8.33038946145e-02 8.63317298438e-02 8.63317298438e-02 8.33038946145e-02 7.76449689484e-02 7.00474085615e-02 - 5.66331890923e-02 4.77625301985e-02 3.94725484932e-02 3.21049723875e-02 2.58139075627e-02 2.06126999880e-02 - 1.64272283654e-02 1.31397287366e-02 1.06181928008e-02 8.73551184506e-03 7.38252390656e-03 6.47483593539e-03 - 5.95356833121e-03 5.78371930190e-03 5.95356833121e-03 6.47483593539e-03 7.38252390656e-03 8.73551184506e-03 - 1.06181928008e-02 1.31397287366e-02 1.64272283654e-02 2.06126999880e-02 2.58139075627e-02 3.21049723875e-02 - 3.94725484932e-02 4.77625301985e-02 5.66331890923e-02 6.55352798807e-02 7.37387049341e-02 8.04193974336e-02 - 8.48028174918e-02 8.63317298438e-02 8.48028174918e-02 8.04193974336e-02 7.37387049341e-02 6.55352798807e-02 - 5.24477482650e-02 4.38725463784e-02 3.60511821341e-02 2.92302840650e-02 2.34923498457e-02 1.88049742175e-02 - 1.50702461704e-02 1.21629507848e-02 9.95507847617e-03 8.33057919998e-03 7.19410390186e-03 6.47483593539e-03 - 6.12657930585e-03 6.12657930585e-03 6.47483593539e-03 7.19410390186e-03 8.33057919998e-03 9.95507847617e-03 - 1.21629507848e-02 1.50702461704e-02 1.88049742175e-02 2.34923498457e-02 2.92302840650e-02 3.60511821341e-02 - 4.38725463784e-02 5.24477482650e-02 6.13334872428e-02 6.98920688762e-02 7.73458021392e-02 8.28911486673e-02 - 8.58561529560e-02 8.58561529560e-02 8.28911486673e-02 7.73458021392e-02 6.98920688762e-02 6.13334872428e-02 - 4.88190878681e-02 4.06654278454e-02 3.33624200108e-02 2.70818268649e-02 2.18557815330e-02 1.76229803621e-02 - 1.42737851127e-02 1.16845233837e-02 9.73748464183e-03 8.33057919998e-03 7.38252390656e-03 6.83583874198e-03 - 6.65719946009e-03 6.83583874198e-03 7.38252390656e-03 8.33057919998e-03 9.73748464183e-03 1.16845233837e-02 - 1.42737851127e-02 1.76229803621e-02 2.18557815330e-02 2.70818268649e-02 3.33624200108e-02 4.06654278454e-02 - 4.88190878681e-02 5.74762428735e-02 6.61022866145e-02 7.40032629540e-02 8.04073084192e-02 8.45957298814e-02 - 8.60542685404e-02 8.45957298814e-02 8.04073084192e-02 7.40032629540e-02 6.61022866145e-02 5.74762428735e-02 - 4.57968161948e-02 3.81729635435e-02 3.14154606035e-02 2.56499234494e-02 2.08820531014e-02 1.70389543521e-02 - 1.40112393540e-02 1.16845233837e-02 9.95507847617e-03 8.73551184506e-03 7.95863052826e-03 7.58058258839e-03 - 7.58058258839e-03 7.95863052826e-03 8.73551184506e-03 9.95507847617e-03 1.16845233837e-02 1.40112393540e-02 - 1.70389543521e-02 2.08820531014e-02 2.56499234494e-02 3.14154606035e-02 3.81729635435e-02 4.57968161948e-02 - 5.40097122002e-02 6.23688231248e-02 7.02831021338e-02 7.70723261920e-02 8.20645507484e-02 8.47143937707e-02 - 8.47143937707e-02 8.20645507484e-02 7.70723261920e-02 7.02831021338e-02 6.23688231248e-02 5.40097122002e-02 - 4.34838779539e-02 3.64535808156e-02 3.02323588099e-02 2.49333108373e-02 2.05587788214e-02 1.70389543521e-02 - 1.42737851127e-02 1.21629507848e-02 1.06181928008e-02 9.56702175361e-03 8.95658363692e-03 8.75631776595e-03 - 8.95658363692e-03 9.56702175361e-03 1.06181928008e-02 1.21629507848e-02 1.42737851127e-02 1.70389543521e-02 - 2.05587788214e-02 2.49333108373e-02 3.02323588099e-02 3.64535808156e-02 4.34838779539e-02 5.10737783335e-02 - 5.88318176265e-02 6.62522137956e-02 7.27796836797e-02 7.78881394404e-02 8.11458755837e-02 8.22656900591e-02 - 8.11458755837e-02 7.78881394404e-02 7.27796836797e-02 6.62522137956e-02 5.88318176265e-02 5.10737783335e-02 - 4.20165784801e-02 3.55725175924e-02 2.98349904445e-02 2.49333108373e-02 2.08820531014e-02 1.76229803621e-02 - 1.50702461704e-02 1.31397287366e-02 1.17590249893e-02 1.08706042529e-02 1.04356792319e-02 1.04356792319e-02 - 1.08706042529e-02 1.17590249893e-02 1.31397287366e-02 1.50702461704e-02 1.76229803621e-02 2.08820531014e-02 - 2.49333108373e-02 2.98349904445e-02 3.55725175924e-02 4.20165784801e-02 4.88987422193e-02 5.58153453540e-02 - 6.22821499923e-02 6.78442738531e-02 7.21810172465e-02 7.51264696898e-02 7.66122811094e-02 7.66122811094e-02 - 7.51264696898e-02 7.21810172465e-02 6.78442738531e-02 6.22821499923e-02 5.58153453540e-02 4.88987422193e-02 - 4.15120643887e-02 3.55725175924e-02 3.02323588099e-02 2.56499234494e-02 2.18557815330e-02 1.88049742175e-02 - 1.64272283654e-02 1.46550533623e-02 1.34318126710e-02 1.27148275869e-02 1.24785638223e-02 1.27148275869e-02 - 1.34318126710e-02 1.46550533623e-02 1.64272283654e-02 1.88049742175e-02 2.18557815330e-02 2.56499234494e-02 - 3.02323588099e-02 3.55725175924e-02 4.15120643887e-02 4.77311231410e-02 5.37510492057e-02 5.90154969276e-02 - 6.30764730892e-02 6.57918464265e-02 6.73541476702e-02 6.81077724909e-02 6.83266751007e-02 6.81077724909e-02 - 6.73541476702e-02 6.57918464265e-02 6.30764730892e-02 5.90154969276e-02 5.37510492057e-02 4.77311231410e-02 - 4.20165784801e-02 3.64535808156e-02 3.14154606035e-02 2.70818268649e-02 2.34923498457e-02 2.06126999880e-02 - 1.83878553878e-02 1.67669692380e-02 1.57094271493e-02 1.51874137660e-02 1.51874137660e-02 1.57094271493e-02 - 1.67669692380e-02 1.83878553878e-02 2.06126999880e-02 2.34923498457e-02 2.70818268649e-02 3.14154606035e-02 - 3.64535808156e-02 4.20165784801e-02 4.77311231410e-02 5.30133769166e-02 5.71527035674e-02 5.95715936141e-02 - 6.01752681104e-02 5.94868177545e-02 5.83777841365e-02 5.76200322747e-02 5.76200322747e-02 5.83777841365e-02 - 5.94868177545e-02 6.01752681104e-02 5.95715936141e-02 5.71527035674e-02 5.30133769166e-02 4.77311231410e-02 - 4.34838779539e-02 3.81729635435e-02 3.33624200108e-02 2.92302840650e-02 2.58139075627e-02 2.30866420056e-02 - 2.10090352784e-02 1.95479913088e-02 1.86800926235e-02 1.83921353899e-02 1.86800926235e-02 1.95479913088e-02 - 2.10090352784e-02 2.30866420056e-02 2.58139075627e-02 2.92302840650e-02 3.33624200108e-02 3.81729635435e-02 - 4.34838779539e-02 4.88987422193e-02 5.37510492057e-02 5.71527035674e-02 5.82782465337e-02 5.68740665481e-02 - 5.36143814352e-02 4.98718618187e-02 4.70389926376e-02 4.60013609401e-02 4.70389926376e-02 4.98718618187e-02 - 5.36143814352e-02 5.68740665481e-02 5.82782465337e-02 5.71527035674e-02 5.37510492057e-02 4.88987422193e-02 - 4.57968161948e-02 4.06654278454e-02 3.60511821341e-02 3.21049723875e-02 2.88533907006e-02 2.62778950395e-02 - 2.43576039836e-02 2.30804654510e-02 2.24420850452e-02 2.24420850452e-02 2.30804654510e-02 2.43576039836e-02 - 2.62778950395e-02 2.88533907006e-02 3.21049723875e-02 3.60511821341e-02 4.06654278454e-02 4.57968161948e-02 - 5.10737783335e-02 5.58153453540e-02 5.90154969276e-02 5.95715936141e-02 5.68740665481e-02 5.14403532045e-02 - 4.49279278957e-02 3.93541671489e-02 3.62214481565e-02 3.62214481565e-02 3.93541671489e-02 4.49279278957e-02 - 5.14403532045e-02 5.68740665481e-02 5.95715936141e-02 5.90154969276e-02 5.58153453540e-02 5.10737783335e-02 - 4.88190878681e-02 4.38725463784e-02 3.94725484932e-02 3.57259716101e-02 3.26483588385e-02 3.02357338101e-02 - 2.84935612207e-02 2.74372089612e-02 2.70827915169e-02 2.74372089612e-02 2.84935612207e-02 3.02357338101e-02 - 3.26483588385e-02 3.57259716101e-02 3.94725484932e-02 4.38725463784e-02 4.88190878681e-02 5.40097122002e-02 - 5.88318176265e-02 6.22821499923e-02 6.30764730892e-02 6.01752681104e-02 5.36143814352e-02 4.49279278957e-02 - 3.65582592974e-02 3.07039905741e-02 2.86292518106e-02 3.07039905741e-02 3.65582592974e-02 4.49279278957e-02 - 5.36143814352e-02 6.01752681104e-02 6.30764730892e-02 6.22821499923e-02 5.88318176265e-02 5.40097122002e-02 - 5.24477482650e-02 4.77625301985e-02 4.36277000850e-02 4.01041807768e-02 3.72078996967e-02 3.49654910486e-02 - 3.34242157073e-02 3.26363277502e-02 3.26363277502e-02 3.34242157073e-02 3.49654910486e-02 3.72078996967e-02 - 4.01041807768e-02 4.36277000850e-02 4.77625301985e-02 5.24477482650e-02 5.74762428735e-02 6.23688231248e-02 - 6.62522137956e-02 6.78442738531e-02 6.57918464265e-02 5.94868177545e-02 4.98718618187e-02 3.93541671489e-02 - 3.07039905741e-02 2.59250062413e-02 2.59250062413e-02 3.07039905741e-02 3.93541671489e-02 4.98718618187e-02 - 5.94868177545e-02 6.57918464265e-02 6.78442738531e-02 6.62522137956e-02 6.23688231248e-02 5.74762428735e-02 - 5.66331890923e-02 5.23143637463e-02 4.84855850881e-02 4.51788789706e-02 4.24386109393e-02 4.03527020822e-02 - 3.90350130516e-02 3.85829474965e-02 3.90350130516e-02 4.03527020822e-02 4.24386109393e-02 4.51788789706e-02 - 4.84855850881e-02 5.23143637463e-02 5.66331890923e-02 6.13334872428e-02 6.61022866145e-02 7.02831021338e-02 - 7.27796836797e-02 7.21810172465e-02 6.73541476702e-02 5.83777841365e-02 4.70389926376e-02 3.62214481565e-02 - 2.86292518106e-02 2.59250062413e-02 2.86292518106e-02 3.62214481565e-02 4.70389926376e-02 5.83777841365e-02 - 6.73541476702e-02 7.21810172465e-02 7.27796836797e-02 7.02831021338e-02 6.61022866145e-02 6.13334872428e-02 - 6.13379141192e-02 5.74449785733e-02 5.38883507401e-02 5.07121410456e-02 4.80406383964e-02 4.60731359718e-02 - 4.50208900473e-02 4.50208900473e-02 4.60731359718e-02 4.80406383964e-02 5.07121410456e-02 5.38883507401e-02 - 5.74449785733e-02 6.13379141192e-02 6.55352798807e-02 6.98920688762e-02 7.40032629540e-02 7.70723261920e-02 - 7.78881394404e-02 7.51264696898e-02 6.81077724909e-02 5.76200322747e-02 4.60013609401e-02 3.62214481565e-02 - 3.07039905741e-02 3.07039905741e-02 3.62214481565e-02 4.60013609401e-02 5.76200322747e-02 6.81077724909e-02 - 7.51264696898e-02 7.78881394404e-02 7.70723261920e-02 7.40032629540e-02 6.98920688762e-02 6.55352798807e-02 - 6.64284767715e-02 6.28828729732e-02 5.94150808572e-02 5.61547897924e-02 5.33923081840e-02 5.15101646150e-02 - 5.08390344517e-02 5.15101646150e-02 5.33923081840e-02 5.61547897924e-02 5.94150808572e-02 6.28828729732e-02 - 6.64284767715e-02 7.00474085615e-02 7.37387049341e-02 7.73458021392e-02 8.04073084192e-02 8.20645507484e-02 - 8.11458755837e-02 7.66122811094e-02 6.83266751007e-02 5.76200322747e-02 4.70389926376e-02 3.93541671489e-02 - 3.65582592974e-02 3.93541671489e-02 4.70389926376e-02 5.76200322747e-02 6.83266751007e-02 7.66122811094e-02 - 8.11458755837e-02 8.20645507484e-02 8.04073084192e-02 7.73458021392e-02 7.37387049341e-02 7.00474085615e-02 - 7.15201290633e-02 6.80033074139e-02 6.42180018992e-02 6.05090723285e-02 5.74676014035e-02 5.57363453523e-02 - 5.57363453523e-02 5.74676014035e-02 6.05090723285e-02 6.42180018992e-02 6.80033074139e-02 7.15201290633e-02 - 7.47020608958e-02 7.76449689484e-02 8.04193974336e-02 8.28911486673e-02 8.45957298814e-02 8.47143937707e-02 - 8.22656900591e-02 7.66122811094e-02 6.81077724909e-02 5.83777841365e-02 4.98718618187e-02 4.49279278957e-02 - 4.49279278957e-02 4.98718618187e-02 5.83777841365e-02 6.81077724909e-02 7.66122811094e-02 8.22656900591e-02 - 8.47143937707e-02 8.45957298814e-02 8.28911486673e-02 8.04193974336e-02 7.76449689484e-02 7.47020608958e-02 - 7.57970302390e-02 7.16581855164e-02 6.69101294891e-02 6.23288110708e-02 5.89627863020e-02 5.77208882781e-02 - 5.89627863020e-02 6.23288110708e-02 6.69101294891e-02 7.16581855164e-02 7.57970302390e-02 7.90236437036e-02 - 8.14375530661e-02 8.33038946145e-02 8.48028174918e-02 8.58561529560e-02 8.60542685404e-02 8.47143937707e-02 - 8.11458755837e-02 7.51264696898e-02 6.73541476702e-02 5.94868177545e-02 5.36143814352e-02 5.14403532045e-02 - 5.36143814352e-02 5.94868177545e-02 6.73541476702e-02 7.51264696898e-02 8.11458755837e-02 8.47143937707e-02 - 8.60542685404e-02 8.58561529560e-02 8.48028174918e-02 8.33038946145e-02 8.14375530661e-02 7.90236437036e-02 - 7.78881394404e-02 7.21810172465e-02 6.57918464265e-02 6.01752681104e-02 5.68740665481e-02 5.68740665481e-02 - 6.01752681104e-02 6.57918464265e-02 7.21810172465e-02 7.78881394404e-02 8.20645507484e-02 8.45957298814e-02 - 8.58561529560e-02 8.63317298438e-02 8.63317298438e-02 8.58561529560e-02 8.45957298814e-02 8.20645507484e-02 - 7.78881394404e-02 7.21810172465e-02 6.57918464265e-02 6.01752681104e-02 5.68740665481e-02 5.68740665481e-02 - 6.01752681104e-02 6.57918464265e-02 7.21810172465e-02 7.78881394404e-02 8.20645507484e-02 8.45957298814e-02 - 8.58561529560e-02 8.63317298438e-02 8.63317298438e-02 8.58561529560e-02 8.45957298814e-02 8.20645507484e-02 - 7.60705845667e-02 6.79419572879e-02 5.97323039443e-02 5.36149267734e-02 5.13523903781e-02 5.36149267734e-02 - 5.97323039443e-02 6.79419572879e-02 7.60705845667e-02 8.23828782457e-02 8.61408122915e-02 8.75716967614e-02 - 8.73972293003e-02 8.63317298438e-02 8.48028174918e-02 8.28911486673e-02 8.04073084192e-02 7.70723261920e-02 - 7.27796836797e-02 6.78442738531e-02 6.30764730892e-02 5.95715936141e-02 5.82782465337e-02 5.95715936141e-02 - 6.30764730892e-02 6.78442738531e-02 7.27796836797e-02 7.70723261920e-02 8.04073084192e-02 8.28911486673e-02 - 8.48028174918e-02 8.63317298438e-02 8.73972293003e-02 8.75716967614e-02 8.61408122915e-02 8.23828782457e-02 - 6.91119067669e-02 5.85232784436e-02 4.93308963719e-02 4.40123223759e-02 4.40123223759e-02 4.93308963719e-02 - 5.85232784436e-02 6.91119067669e-02 7.84511058955e-02 8.47410728024e-02 8.75562567048e-02 8.75716967614e-02 - 8.58561529560e-02 8.33038946145e-02 8.04193974336e-02 7.73458021392e-02 7.40032629540e-02 7.02831021338e-02 - 6.62522137956e-02 6.22821499923e-02 5.90154969276e-02 5.71527035674e-02 5.71527035674e-02 5.90154969276e-02 - 6.22821499923e-02 6.62522137956e-02 7.02831021338e-02 7.40032629540e-02 7.73458021392e-02 8.04193974336e-02 - 8.33038946145e-02 8.58561529560e-02 8.75716967614e-02 8.75562567048e-02 8.47410728024e-02 7.84511058955e-02 - 5.74463352203e-02 4.56222411881e-02 3.71417160544e-02 3.40771392673e-02 3.71417160544e-02 4.56222411881e-02 - 5.74463352203e-02 6.96179820017e-02 7.92532152557e-02 8.47410728024e-02 8.61408122915e-02 8.45957298814e-02 - 8.14375530661e-02 7.76449689484e-02 7.37387049341e-02 6.98920688762e-02 6.61022866145e-02 6.23688231248e-02 - 5.88318176265e-02 5.58153453540e-02 5.37510492057e-02 5.30133769166e-02 5.37510492057e-02 5.58153453540e-02 - 5.88318176265e-02 6.23688231248e-02 6.61022866145e-02 6.98920688762e-02 7.37387049341e-02 7.76449689484e-02 - 8.14375530661e-02 8.45957298814e-02 8.61408122915e-02 8.47410728024e-02 7.92532152557e-02 6.96179820017e-02 - 4.35588929466e-02 3.25101129901e-02 2.63856510811e-02 2.63856510811e-02 3.25101129901e-02 4.35588929466e-02 - 5.70355201353e-02 6.96179820017e-02 7.84511058955e-02 8.23828782457e-02 8.20645507484e-02 7.90236437036e-02 - 7.47020608958e-02 7.00474085615e-02 6.55352798807e-02 6.13334872428e-02 5.74762428735e-02 5.40097122002e-02 - 5.10737783335e-02 4.88987422193e-02 4.77311231410e-02 4.77311231410e-02 4.88987422193e-02 5.10737783335e-02 - 5.40097122002e-02 5.74762428735e-02 6.13334872428e-02 6.55352798807e-02 7.00474085615e-02 7.47020608958e-02 - 7.90236437036e-02 8.20645507484e-02 8.23828782457e-02 7.84511058955e-02 6.96179820017e-02 5.70355201353e-02 - 1.69819929531e-02 1.14596764125e-02 1.14596764125e-02 1.69819929531e-02 2.77489957459e-02 4.22847991283e-02 - 5.73653289979e-02 6.91119067669e-02 7.51264696898e-02 7.55368812409e-02 7.21264918488e-02 6.68641206041e-02 - 6.11288569567e-02 5.56676247698e-02 5.08044555558e-02 4.66403070569e-02 4.32002938784e-02 4.05199675384e-02 - 3.86662855632e-02 3.77147526395e-02 3.77147526395e-02 3.86662855632e-02 4.05199675384e-02 4.32002938784e-02 - 4.66403070569e-02 5.08044555558e-02 5.56676247698e-02 6.11288569567e-02 6.68641206041e-02 7.21264918488e-02 - 7.55368812409e-02 7.51264696898e-02 6.91119067669e-02 5.73653289979e-02 4.22847991283e-02 2.77489957459e-02 - 1.14596764125e-02 9.05419851032e-03 1.14596764125e-02 1.87771308641e-02 3.06594619284e-02 4.51254329663e-02 - 5.85232784436e-02 6.73541476702e-02 7.03019494995e-02 6.84139609392e-02 6.37149803432e-02 5.79474348197e-02 - 5.21839135623e-02 4.69561004766e-02 4.24686468881e-02 3.87673596218e-02 3.58537824974e-02 3.37399765679e-02 - 3.24534608631e-02 3.20210145144e-02 3.24534608631e-02 3.37399765679e-02 3.58537824974e-02 3.87673596218e-02 - 4.24686468881e-02 4.69561004766e-02 5.21839135623e-02 5.79474348197e-02 6.37149803432e-02 6.84139609392e-02 - 7.03019494995e-02 6.73541476702e-02 5.85232784436e-02 4.51254329663e-02 3.06594619284e-02 1.87771308641e-02 - 1.14596764125e-02 1.14596764125e-02 1.56860392578e-02 2.42761411551e-02 3.63849623957e-02 4.93308963719e-02 - 5.94868177545e-02 6.44394828494e-02 6.41840706496e-02 6.03694423859e-02 5.48714786192e-02 4.90231496620e-02 - 4.35604474537e-02 3.88104397494e-02 3.48695445110e-02 3.17358390207e-02 2.93901320501e-02 2.78244998346e-02 - 2.70402901784e-02 2.70402901784e-02 2.78244998346e-02 2.93901320501e-02 3.17358390207e-02 3.48695445110e-02 - 3.88104397494e-02 4.35604474537e-02 4.90231496620e-02 5.48714786192e-02 6.03694423859e-02 6.41840706496e-02 - 6.44394828494e-02 5.94868177545e-02 4.93308963719e-02 3.63849623957e-02 2.42761411551e-02 1.56860392578e-02 - 1.69819929531e-02 1.87771308641e-02 2.42761411551e-02 3.32338776264e-02 4.40123223759e-02 5.36143814352e-02 - 5.92810318582e-02 6.01184381094e-02 5.71251588417e-02 5.20147259753e-02 4.62258246981e-02 4.06430475235e-02 - 3.57044700685e-02 3.15673758761e-02 2.82446089484e-02 2.57019293917e-02 2.39063871143e-02 2.28368095394e-02 - 2.24815496090e-02 2.28368095394e-02 2.39063871143e-02 2.57019293917e-02 2.82446089484e-02 3.15673758761e-02 - 3.57044700685e-02 4.06430475235e-02 4.62258246981e-02 5.20147259753e-02 5.71251588417e-02 6.01184381094e-02 - 5.92810318582e-02 5.36143814352e-02 4.40123223759e-02 3.32338776264e-02 2.42761411551e-02 1.87771308641e-02 - 2.77489957459e-02 3.06594619284e-02 3.63849623957e-02 4.40123223759e-02 5.14403532045e-02 5.62463189889e-02 - 5.71366804742e-02 5.44829894560e-02 4.96193341715e-02 4.38959177953e-02 3.82415861113e-02 3.31615306069e-02 - 2.88631293974e-02 2.53797852965e-02 2.26718438342e-02 2.06884779452e-02 1.93892705934e-02 1.87467470027e-02 - 1.87467470027e-02 1.93892705934e-02 2.06884779452e-02 2.26718438342e-02 2.53797852965e-02 2.88631293974e-02 - 3.31615306069e-02 3.82415861113e-02 4.38959177953e-02 4.96193341715e-02 5.44829894560e-02 5.71366804742e-02 - 5.62463189889e-02 5.14403532045e-02 4.40123223759e-02 3.63849623957e-02 3.06594619284e-02 2.77489957459e-02 - 4.22847991283e-02 4.51254329663e-02 4.93308963719e-02 5.36143814352e-02 5.62463189889e-02 5.60372557288e-02 - 5.29846351657e-02 4.79989400749e-02 4.21941579647e-02 3.64263171972e-02 3.12022017908e-02 2.67502344749e-02 - 2.31175818882e-02 2.02621880335e-02 1.81196807915e-02 1.66330383744e-02 1.57591868798e-02 1.54709928045e-02 - 1.57591868798e-02 1.66330383744e-02 1.81196807915e-02 2.02621880335e-02 2.31175818882e-02 2.67502344749e-02 - 3.12022017908e-02 3.64263171972e-02 4.21941579647e-02 4.79989400749e-02 5.29846351657e-02 5.60372557288e-02 - 5.62463189889e-02 5.36143814352e-02 4.93308963719e-02 4.51254329663e-02 4.22847991283e-02 4.13123485649e-02 - 5.73653289979e-02 5.85232784436e-02 5.94868177545e-02 5.92810318582e-02 5.71366804742e-02 5.29846351657e-02 - 4.74231711778e-02 4.12888114430e-02 3.52857897121e-02 2.98615217076e-02 2.52298202509e-02 2.14361295219e-02 - 1.84326960165e-02 1.61427916872e-02 1.44944499034e-02 1.34297677852e-02 1.29079014387e-02 1.29079014387e-02 - 1.34297677852e-02 1.44944499034e-02 1.61427916872e-02 1.84326960165e-02 2.14361295219e-02 2.52298202509e-02 - 2.98615217076e-02 3.52857897121e-02 4.12888114430e-02 4.74231711778e-02 5.29846351657e-02 5.71366804742e-02 - 5.92810318582e-02 5.94868177545e-02 5.85232784436e-02 5.73653289979e-02 5.66663226477e-02 5.66663226477e-02 - 6.91119067669e-02 6.73541476702e-02 6.44394828494e-02 6.01184381094e-02 5.44829894560e-02 4.79989400749e-02 - 4.12888114430e-02 3.48956024912e-02 2.91781605866e-02 2.43103322252e-02 2.03206914317e-02 1.71497889118e-02 - 1.47072813037e-02 1.29064893850e-02 1.16751572683e-02 1.09586567104e-02 1.07235056315e-02 1.09586567104e-02 - 1.16751572683e-02 1.29064893850e-02 1.47072813037e-02 1.71497889118e-02 2.03206914317e-02 2.43103322252e-02 - 2.91781605866e-02 3.48956024912e-02 4.12888114430e-02 4.79989400749e-02 5.44829894560e-02 6.01184381094e-02 - 6.44394828494e-02 6.73541476702e-02 6.91119067669e-02 7.00400365127e-02 7.03323963389e-02 7.00400365127e-02 - 7.51264696898e-02 7.03019494995e-02 6.41840706496e-02 5.71251588417e-02 4.96193341715e-02 4.21941579647e-02 - 3.52857897121e-02 2.91781605866e-02 2.40022165572e-02 1.97639178277e-02 1.63890080671e-02 1.37726366090e-02 - 1.18131307076e-02 1.04238516982e-02 9.53627070961e-03 9.10381322670e-03 9.10381322670e-03 9.53627070961e-03 - 1.04238516982e-02 1.18131307076e-02 1.37726366090e-02 1.63890080671e-02 1.97639178277e-02 2.40022165572e-02 - 2.91781605866e-02 3.52857897121e-02 4.21941579647e-02 4.96193341715e-02 5.71251588417e-02 6.41840706496e-02 - 7.03019494995e-02 7.51264696898e-02 7.84511058955e-02 8.01500628124e-02 8.01500628124e-02 7.84511058955e-02 - 7.55368812409e-02 6.84139609392e-02 6.03694423859e-02 5.20147259753e-02 4.38959177953e-02 3.64263171972e-02 - 2.98615217076e-02 2.43103322252e-02 1.97639178277e-02 1.61367490443e-02 1.33116675302e-02 1.11729588764e-02 - 9.61987006090e-03 8.57007132232e-03 7.96341795569e-03 7.76490388909e-03 7.96341795569e-03 8.57007132232e-03 - 9.61987006090e-03 1.11729588764e-02 1.33116675302e-02 1.61367490443e-02 1.97639178277e-02 2.43103322252e-02 - 2.98615217076e-02 3.64263171972e-02 4.38959177953e-02 5.20147259753e-02 6.03694423859e-02 6.84139609392e-02 - 7.55368812409e-02 8.11458755837e-02 8.47410728024e-02 8.59805323971e-02 8.47410728024e-02 8.11458755837e-02 - 7.21264918488e-02 6.37149803432e-02 5.48714786192e-02 4.62258246981e-02 3.82415861113e-02 3.12022017908e-02 - 2.52298202509e-02 2.03206914317e-02 1.63890080671e-02 1.33116675302e-02 1.09620544703e-02 9.22648243576e-03 - 8.00955236461e-03 7.23785699764e-03 6.86339437793e-03 6.86339437793e-03 7.23785699764e-03 8.00955236461e-03 - 9.22648243576e-03 1.09620544703e-02 1.33116675302e-02 1.63890080671e-02 2.03206914317e-02 2.52298202509e-02 - 3.12022017908e-02 3.82415861113e-02 4.62258246981e-02 5.48714786192e-02 6.37149803432e-02 7.21264918488e-02 - 7.93709590427e-02 8.47143937707e-02 8.75562567048e-02 8.75562567048e-02 8.47143937707e-02 7.93709590427e-02 - 6.68641206041e-02 5.79474348197e-02 4.90231496620e-02 4.06430475235e-02 3.31615306069e-02 2.67502344749e-02 - 2.14361295219e-02 1.71497889118e-02 1.37726366090e-02 1.11729588764e-02 9.22648243576e-03 7.82576853226e-03 - 6.88519888788e-03 6.34416762186e-03 6.16759269815e-03 6.34416762186e-03 6.88519888788e-03 7.82576853226e-03 - 9.22648243576e-03 1.11729588764e-02 1.37726366090e-02 1.71497889118e-02 2.14361295219e-02 2.67502344749e-02 - 3.31615306069e-02 4.06430475235e-02 4.90231496620e-02 5.79474348197e-02 6.68641206041e-02 7.50510418428e-02 - 8.16998180862e-02 8.60542685404e-02 8.75716967614e-02 8.60542685404e-02 8.16998180862e-02 7.50510418428e-02 - 6.11288569567e-02 5.21839135623e-02 4.35604474537e-02 3.57044700685e-02 2.88631293974e-02 2.31175818882e-02 - 1.84326960165e-02 1.47072813037e-02 1.18131307076e-02 9.61987006090e-03 8.00955236461e-03 6.88519888788e-03 - 6.17468606834e-03 5.83098728503e-03 5.83098728503e-03 6.17468606834e-03 6.88519888788e-03 8.00955236461e-03 - 9.61987006090e-03 1.18131307076e-02 1.47072813037e-02 1.84326960165e-02 2.31175818882e-02 2.88631293974e-02 - 3.57044700685e-02 4.35604474537e-02 5.21839135623e-02 6.11288569567e-02 6.97522426294e-02 7.72682499914e-02 - 8.28633557769e-02 8.58561529560e-02 8.58561529560e-02 8.28633557769e-02 7.72682499914e-02 6.97522426294e-02 - 5.56676247698e-02 4.69561004766e-02 3.88104397494e-02 3.15673758761e-02 2.53797852965e-02 2.02621880335e-02 - 1.61427916872e-02 1.29064893850e-02 1.04238516982e-02 8.57007132232e-03 7.23785699764e-03 6.34416762186e-03 - 5.83098728503e-03 5.66378434823e-03 5.83098728503e-03 6.34416762186e-03 7.23785699764e-03 8.57007132232e-03 - 1.04238516982e-02 1.29064893850e-02 1.61427916872e-02 2.02621880335e-02 2.53797852965e-02 3.15673758761e-02 - 3.88104397494e-02 4.69561004766e-02 5.56676247698e-02 6.44054743742e-02 7.24538631804e-02 7.90059272690e-02 - 8.33038946145e-02 8.48028174918e-02 8.33038946145e-02 7.90059272690e-02 7.24538631804e-02 6.44054743742e-02 - 5.08044555558e-02 4.24686468881e-02 3.48695445110e-02 2.82446089484e-02 2.26718438342e-02 1.81196807915e-02 - 1.44944499034e-02 1.16751572683e-02 9.53627070961e-03 7.96341795569e-03 6.86339437793e-03 6.16759269815e-03 - 5.83098728503e-03 5.83098728503e-03 6.16759269815e-03 6.86339437793e-03 7.96341795569e-03 9.53627070961e-03 - 1.16751572683e-02 1.44944499034e-02 1.81196807915e-02 2.26718438342e-02 2.82446089484e-02 3.48695445110e-02 - 4.24686468881e-02 5.08044555558e-02 5.94462807362e-02 6.77723654588e-02 7.50243106749e-02 8.04193974336e-02 - 8.33038946145e-02 8.33038946145e-02 8.04193974336e-02 7.50243106749e-02 6.77723654588e-02 5.94462807362e-02 - 4.66403070569e-02 3.87673596218e-02 3.17358390207e-02 2.57019293917e-02 2.06884779452e-02 1.66330383744e-02 - 1.34297677852e-02 1.09586567104e-02 9.10381322670e-03 7.76490388909e-03 6.86339437793e-03 6.34416762186e-03 - 6.17468606834e-03 6.34416762186e-03 6.86339437793e-03 7.76490388909e-03 9.10381322670e-03 1.09586567104e-02 - 1.34297677852e-02 1.66330383744e-02 2.06884779452e-02 2.57019293917e-02 3.17358390207e-02 3.87673596218e-02 - 4.66403070569e-02 5.50251512552e-02 6.34040688222e-02 7.10977313661e-02 7.73458021392e-02 8.14375530661e-02 - 8.28633557769e-02 8.14375530661e-02 7.73458021392e-02 7.10977313661e-02 6.34040688222e-02 5.50251512552e-02 - 4.32002938784e-02 3.58537824974e-02 2.93901320501e-02 2.39063871143e-02 1.93892705934e-02 1.57591868798e-02 - 1.29079014387e-02 1.07235056315e-02 9.10381322670e-03 7.96341795569e-03 7.23785699764e-03 6.88519888788e-03 - 6.88519888788e-03 7.23785699764e-03 7.96341795569e-03 9.10381322670e-03 1.07235056315e-02 1.29079014387e-02 - 1.57591868798e-02 1.93892705934e-02 2.39063871143e-02 2.93901320501e-02 3.58537824974e-02 4.32002938784e-02 - 5.11831265828e-02 5.93841418824e-02 6.72218662363e-02 7.40032629540e-02 7.90236437036e-02 8.16998180862e-02 - 8.16998180862e-02 7.90236437036e-02 7.40032629540e-02 6.72218662363e-02 5.93841418824e-02 5.11831265828e-02 - 4.05199675384e-02 3.37399765679e-02 2.78244998346e-02 2.28368095394e-02 1.87467470027e-02 1.54709928045e-02 - 1.29079014387e-02 1.09586567104e-02 9.53627070961e-03 8.57007132232e-03 8.00955236461e-03 7.82576853226e-03 - 8.00955236461e-03 8.57007132232e-03 9.53627070961e-03 1.09586567104e-02 1.29079014387e-02 1.54709928045e-02 - 1.87467470027e-02 2.28368095394e-02 2.78244998346e-02 3.37399765679e-02 4.05199675384e-02 4.79731106469e-02 - 5.57595749637e-02 6.33941825467e-02 7.02831021338e-02 7.57970302390e-02 7.93709590427e-02 8.06097207709e-02 - 7.93709590427e-02 7.57970302390e-02 7.02831021338e-02 6.33941825467e-02 5.57595749637e-02 4.79731106469e-02 - 3.86662855632e-02 3.24534608631e-02 2.70402901784e-02 2.24815496090e-02 1.87467470027e-02 1.57591868798e-02 - 1.34297677852e-02 1.16751572683e-02 1.04238516982e-02 9.61987006090e-03 9.22648243576e-03 9.22648243576e-03 - 9.61987006090e-03 1.04238516982e-02 1.16751572683e-02 1.34297677852e-02 1.57591868798e-02 1.87467470027e-02 - 2.24815496090e-02 2.70402901784e-02 3.24534608631e-02 3.86662855632e-02 4.55081727847e-02 5.26787408684e-02 - 5.97584596222e-02 6.62522137956e-02 7.16581855164e-02 7.55368812409e-02 7.75631573239e-02 7.75631573239e-02 - 7.55368812409e-02 7.16581855164e-02 6.62522137956e-02 5.97584596222e-02 5.26787408684e-02 4.55081727847e-02 - 3.77147526395e-02 3.20210145144e-02 2.70402901784e-02 2.28368095394e-02 1.93892705934e-02 1.66330383744e-02 - 1.44944499034e-02 1.29064893850e-02 1.18131307076e-02 1.11729588764e-02 1.09620544703e-02 1.11729588764e-02 - 1.18131307076e-02 1.29064893850e-02 1.44944499034e-02 1.66330383744e-02 1.93892705934e-02 2.28368095394e-02 - 2.70402901784e-02 3.20210145144e-02 3.77147526395e-02 4.39402098517e-02 5.03893328752e-02 5.66509609539e-02 - 6.22821499923e-02 6.69101294891e-02 7.03019494995e-02 7.23556493700e-02 7.30418134594e-02 7.23556493700e-02 - 7.03019494995e-02 6.69101294891e-02 6.22821499923e-02 5.66509609539e-02 5.03893328752e-02 4.39402098517e-02 - 3.77147526395e-02 3.24534608631e-02 2.78244998346e-02 2.39063871143e-02 2.06884779452e-02 1.81196807915e-02 - 1.61427916872e-02 1.47072813037e-02 1.37726366090e-02 1.33116675302e-02 1.33116675302e-02 1.37726366090e-02 - 1.47072813037e-02 1.61427916872e-02 1.81196807915e-02 2.06884779452e-02 2.39063871143e-02 2.78244998346e-02 - 3.24534608631e-02 3.77147526395e-02 4.34003076052e-02 4.91578982971e-02 5.45211951056e-02 5.90154969276e-02 - 6.23288110708e-02 6.44394828494e-02 6.55787911247e-02 6.60504635380e-02 6.60504635380e-02 6.55787911247e-02 - 6.44394828494e-02 6.23288110708e-02 5.90154969276e-02 5.45211951056e-02 4.91578982971e-02 4.34003076052e-02 - 3.86662855632e-02 3.37399765679e-02 2.93901320501e-02 2.57019293917e-02 2.26718438342e-02 2.02621880335e-02 - 1.84326960165e-02 1.71497889118e-02 1.63890080671e-02 1.61367490443e-02 1.63890080671e-02 1.71497889118e-02 - 1.84326960165e-02 2.02621880335e-02 2.26718438342e-02 2.57019293917e-02 2.93901320501e-02 3.37399765679e-02 - 3.86662855632e-02 4.39402098517e-02 4.91578982971e-02 5.37595739225e-02 5.71527035674e-02 5.89627863020e-02 - 5.92810318582e-02 5.86758842735e-02 5.79103146750e-02 5.75824043038e-02 5.79103146750e-02 5.86758842735e-02 - 5.92810318582e-02 5.89627863020e-02 5.71527035674e-02 5.37595739225e-02 4.91578982971e-02 4.39402098517e-02 - 4.05199675384e-02 3.58537824974e-02 3.17358390207e-02 2.82446089484e-02 2.53797852965e-02 2.31175818882e-02 - 2.14361295219e-02 2.03206914317e-02 1.97639178277e-02 1.97639178277e-02 2.03206914317e-02 2.14361295219e-02 - 2.31175818882e-02 2.53797852965e-02 2.82446089484e-02 3.17358390207e-02 3.58537824974e-02 4.05199675384e-02 - 4.55081727847e-02 5.03893328752e-02 5.45211951056e-02 5.71527035674e-02 5.77208882781e-02 5.62463189889e-02 - 5.34983990182e-02 5.07010770424e-02 4.89850720157e-02 4.89850720157e-02 5.07010770424e-02 5.34983990182e-02 - 5.62463189889e-02 5.77208882781e-02 5.71527035674e-02 5.45211951056e-02 5.03893328752e-02 4.55081727847e-02 - 4.32002938784e-02 3.87673596218e-02 3.48695445110e-02 3.15673758761e-02 2.88631293974e-02 2.67502344749e-02 - 2.52298202509e-02 2.43103322252e-02 2.40022165572e-02 2.43103322252e-02 2.52298202509e-02 2.67502344749e-02 - 2.88631293974e-02 3.15673758761e-02 3.48695445110e-02 3.87673596218e-02 4.32002938784e-02 4.79731106469e-02 - 5.26787408684e-02 5.66509609539e-02 5.90154969276e-02 5.89627863020e-02 5.62463189889e-02 5.15765048907e-02 - 4.64751950426e-02 4.26203265537e-02 4.11986868029e-02 4.26203265537e-02 4.64751950426e-02 5.15765048907e-02 - 5.62463189889e-02 5.89627863020e-02 5.90154969276e-02 5.66509609539e-02 5.26787408684e-02 4.79731106469e-02 - 4.66403070569e-02 4.24686468881e-02 3.88104397494e-02 3.57044700685e-02 3.31615306069e-02 3.12022017908e-02 - 2.98615217076e-02 2.91781605866e-02 2.91781605866e-02 2.98615217076e-02 3.12022017908e-02 3.31615306069e-02 - 3.57044700685e-02 3.88104397494e-02 4.24686468881e-02 4.66403070569e-02 5.11831265828e-02 5.57595749637e-02 - 5.97584596222e-02 6.22821499923e-02 6.23288110708e-02 5.92810318582e-02 5.34983990182e-02 4.64751950426e-02 - 4.02808330656e-02 3.67025276917e-02 3.67025276917e-02 4.02808330656e-02 4.64751950426e-02 5.34983990182e-02 - 5.92810318582e-02 6.23288110708e-02 6.22821499923e-02 5.97584596222e-02 5.57595749637e-02 5.11831265828e-02 - 5.08044555558e-02 4.69561004766e-02 4.35604474537e-02 4.06430475235e-02 3.82415861113e-02 3.64263171972e-02 - 3.52857897121e-02 3.48956024912e-02 3.52857897121e-02 3.64263171972e-02 3.82415861113e-02 4.06430475235e-02 - 4.35604474537e-02 4.69561004766e-02 5.08044555558e-02 5.50251512552e-02 5.93841418824e-02 6.33941825467e-02 - 6.62522137956e-02 6.69101294891e-02 6.44394828494e-02 5.86758842735e-02 5.07010770424e-02 4.26203265537e-02 - 3.67025276917e-02 3.45455630665e-02 3.67025276917e-02 4.26203265537e-02 5.07010770424e-02 5.86758842735e-02 - 6.44394828494e-02 6.69101294891e-02 6.62522137956e-02 6.33941825467e-02 5.93841418824e-02 5.50251512552e-02 - 5.56676247698e-02 5.21839135623e-02 4.90231496620e-02 4.62258246981e-02 4.38959177953e-02 4.21941579647e-02 - 4.12888114430e-02 4.12888114430e-02 4.21941579647e-02 4.38959177953e-02 4.62258246981e-02 4.90231496620e-02 - 5.21839135623e-02 5.56676247698e-02 5.94462807362e-02 6.34040688222e-02 6.72218662363e-02 7.02831021338e-02 - 7.16581855164e-02 7.03019494995e-02 6.55787911247e-02 5.79103146750e-02 4.89850720157e-02 4.11986868029e-02 - 3.67025276917e-02 3.67025276917e-02 4.11986868029e-02 4.89850720157e-02 5.79103146750e-02 6.55787911247e-02 - 7.03019494995e-02 7.16581855164e-02 7.02831021338e-02 6.72218662363e-02 6.34040688222e-02 5.94462807362e-02 - 6.11288569567e-02 5.79474348197e-02 5.48714786192e-02 5.20147259753e-02 4.96193341715e-02 4.79989400749e-02 - 4.74231711778e-02 4.79989400749e-02 4.96193341715e-02 5.20147259753e-02 5.48714786192e-02 5.79474348197e-02 - 6.11288569567e-02 6.44054743742e-02 6.77723654588e-02 7.10977313661e-02 7.40032629540e-02 7.57970302390e-02 - 7.55368812409e-02 7.23556493700e-02 6.60504635380e-02 5.75824043038e-02 4.89850720157e-02 4.26203265537e-02 - 4.02808330656e-02 4.26203265537e-02 4.89850720157e-02 5.75824043038e-02 6.60504635380e-02 7.23556493700e-02 - 7.55368812409e-02 7.57970302390e-02 7.40032629540e-02 7.10977313661e-02 6.77723654588e-02 6.44054743742e-02 - 6.68641206041e-02 6.37149803432e-02 6.03694423859e-02 5.71251588417e-02 5.44829894560e-02 5.29846351657e-02 - 5.29846351657e-02 5.44829894560e-02 5.71251588417e-02 6.03694423859e-02 6.37149803432e-02 6.68641206041e-02 - 6.97522426294e-02 7.24538631804e-02 7.50243106749e-02 7.73458021392e-02 7.90236437036e-02 7.93709590427e-02 - 7.75631573239e-02 7.30418134594e-02 6.60504635380e-02 5.79103146750e-02 5.07010770424e-02 4.64751950426e-02 - 4.64751950426e-02 5.07010770424e-02 5.79103146750e-02 6.60504635380e-02 7.30418134594e-02 7.75631573239e-02 - 7.93709590427e-02 7.90236437036e-02 7.73458021392e-02 7.50243106749e-02 7.24538631804e-02 6.97522426294e-02 - 7.21264918488e-02 6.84139609392e-02 6.41840706496e-02 6.01184381094e-02 5.71366804742e-02 5.60372557288e-02 - 5.71366804742e-02 6.01184381094e-02 6.41840706496e-02 6.84139609392e-02 7.21264918488e-02 7.50510418428e-02 - 7.72682499914e-02 7.90059272690e-02 8.04193974336e-02 8.14375530661e-02 8.16998180862e-02 8.06097207709e-02 - 7.75631573239e-02 7.23556493700e-02 6.55787911247e-02 5.86758842735e-02 5.34983990182e-02 5.15765048907e-02 - 5.34983990182e-02 5.86758842735e-02 6.55787911247e-02 7.23556493700e-02 7.75631573239e-02 8.06097207709e-02 - 8.16998180862e-02 8.14375530661e-02 8.04193974336e-02 7.90059272690e-02 7.72682499914e-02 7.50510418428e-02 - 7.55368812409e-02 7.03019494995e-02 6.44394828494e-02 5.92810318582e-02 5.62463189889e-02 5.62463189889e-02 - 5.92810318582e-02 6.44394828494e-02 7.03019494995e-02 7.55368812409e-02 7.93709590427e-02 8.16998180862e-02 - 8.28633557769e-02 8.33038946145e-02 8.33038946145e-02 8.28633557769e-02 8.16998180862e-02 7.93709590427e-02 - 7.55368812409e-02 7.03019494995e-02 6.44394828494e-02 5.92810318582e-02 5.62463189889e-02 5.62463189889e-02 - 5.92810318582e-02 6.44394828494e-02 7.03019494995e-02 7.55368812409e-02 7.93709590427e-02 8.16998180862e-02 - 8.28633557769e-02 8.33038946145e-02 8.33038946145e-02 8.28633557769e-02 8.16998180862e-02 7.93709590427e-02 - 7.51264696898e-02 6.73541476702e-02 5.94868177545e-02 5.36143814352e-02 5.14403532045e-02 5.36143814352e-02 - 5.94868177545e-02 6.73541476702e-02 7.51264696898e-02 8.11458755837e-02 8.47143937707e-02 8.60542685404e-02 - 8.58561529560e-02 8.48028174918e-02 8.33038946145e-02 8.14375530661e-02 7.90236437036e-02 7.57970302390e-02 - 7.16581855164e-02 6.69101294891e-02 6.23288110708e-02 5.89627863020e-02 5.77208882781e-02 5.89627863020e-02 - 6.23288110708e-02 6.69101294891e-02 7.16581855164e-02 7.57970302390e-02 7.90236437036e-02 8.14375530661e-02 - 8.33038946145e-02 8.48028174918e-02 8.58561529560e-02 8.60542685404e-02 8.47143937707e-02 8.11458755837e-02 - 6.91119067669e-02 5.85232784436e-02 4.93308963719e-02 4.40123223759e-02 4.40123223759e-02 4.93308963719e-02 - 5.85232784436e-02 6.91119067669e-02 7.84511058955e-02 8.47410728024e-02 8.75562567048e-02 8.75716967614e-02 - 8.58561529560e-02 8.33038946145e-02 8.04193974336e-02 7.73458021392e-02 7.40032629540e-02 7.02831021338e-02 - 6.62522137956e-02 6.22821499923e-02 5.90154969276e-02 5.71527035674e-02 5.71527035674e-02 5.90154969276e-02 - 6.22821499923e-02 6.62522137956e-02 7.02831021338e-02 7.40032629540e-02 7.73458021392e-02 8.04193974336e-02 - 8.33038946145e-02 8.58561529560e-02 8.75716967614e-02 8.75562567048e-02 8.47410728024e-02 7.84511058955e-02 - 5.73653289979e-02 4.51254329663e-02 3.63849623957e-02 3.32338776264e-02 3.63849623957e-02 4.51254329663e-02 - 5.73653289979e-02 7.00400365127e-02 8.01500628124e-02 8.59805323971e-02 8.75562567048e-02 8.60542685404e-02 - 8.28633557769e-02 7.90059272690e-02 7.50243106749e-02 7.10977313661e-02 6.72218662363e-02 6.33941825467e-02 - 5.97584596222e-02 5.66509609539e-02 5.45211951056e-02 5.37595739225e-02 5.45211951056e-02 5.66509609539e-02 - 5.97584596222e-02 6.33941825467e-02 6.72218662363e-02 7.10977313661e-02 7.50243106749e-02 7.90059272690e-02 - 8.28633557769e-02 8.60542685404e-02 8.75562567048e-02 8.59805323971e-02 8.01500628124e-02 7.00400365127e-02 - 4.22847991283e-02 3.06594619284e-02 2.42761411551e-02 2.42761411551e-02 3.06594619284e-02 4.22847991283e-02 - 5.66663226477e-02 7.03323963389e-02 8.01500628124e-02 8.47410728024e-02 8.47143937707e-02 8.16998180862e-02 - 7.72682499914e-02 7.24538631804e-02 6.77723654588e-02 6.34040688222e-02 5.93841418824e-02 5.57595749637e-02 - 5.26787408684e-02 5.03893328752e-02 4.91578982971e-02 4.91578982971e-02 5.03893328752e-02 5.26787408684e-02 - 5.57595749637e-02 5.93841418824e-02 6.34040688222e-02 6.77723654588e-02 7.24538631804e-02 7.72682499914e-02 - 8.16998180862e-02 8.47143937707e-02 8.47410728024e-02 8.01500628124e-02 7.03323963389e-02 5.66663226477e-02 - 2.77489957459e-02 1.87771308641e-02 1.56860392578e-02 1.87771308641e-02 2.77489957459e-02 4.13123485649e-02 - 5.66663226477e-02 7.00400365127e-02 7.84511058955e-02 8.11458755837e-02 7.93709590427e-02 7.50510418428e-02 - 6.97522426294e-02 6.44054743742e-02 5.94462807362e-02 5.50251512552e-02 5.11831265828e-02 4.79731106469e-02 - 4.55081727847e-02 4.39402098517e-02 4.34003076052e-02 4.39402098517e-02 4.55081727847e-02 4.79731106469e-02 - 5.11831265828e-02 5.50251512552e-02 5.94462807362e-02 6.44054743742e-02 6.97522426294e-02 7.50510418428e-02 - 7.93709590427e-02 8.11458755837e-02 7.84511058955e-02 7.00400365127e-02 5.66663226477e-02 4.13123485649e-02 - 7.45857574908e-03 5.17285277950e-03 7.45857574908e-03 1.46090879135e-02 2.67478820537e-02 4.22847991283e-02 - 5.74463352203e-02 6.81077724909e-02 7.23556493700e-02 7.10787520021e-02 6.64898780493e-02 6.05796981280e-02 - 5.45841783826e-02 4.91148354625e-02 4.44094609233e-02 4.05244812822e-02 3.74634706166e-02 3.52402742752e-02 - 3.38859304601e-02 3.34304675050e-02 3.38859304601e-02 3.52402742752e-02 3.74634706166e-02 4.05244812822e-02 - 4.44094609233e-02 4.91148354625e-02 5.45841783826e-02 6.05796981280e-02 6.64898780493e-02 7.10787520021e-02 - 7.23556493700e-02 6.81077724909e-02 5.74463352203e-02 4.22847991283e-02 2.67478820537e-02 1.46090879135e-02 - 5.17285277950e-03 5.17285277950e-03 9.13060134292e-03 1.76819501362e-02 3.06594619284e-02 4.56222411881e-02 - 5.83777841365e-02 6.55787911247e-02 6.66786802062e-02 6.33842515281e-02 5.78981879671e-02 5.18355302331e-02 - 4.60913389830e-02 4.10670403681e-02 3.68889471691e-02 3.35632692529e-02 3.10717223250e-02 2.94074293899e-02 - 2.85734174953e-02 2.85734174953e-02 2.94074293899e-02 3.10717223250e-02 3.35632692529e-02 3.68889471691e-02 - 4.10670403681e-02 4.60913389830e-02 5.18355302331e-02 5.78981879671e-02 6.33842515281e-02 6.66786802062e-02 - 6.55787911247e-02 5.83777841365e-02 4.56222411881e-02 3.06594619284e-02 1.76819501362e-02 9.13060134292e-03 - 7.45857574908e-03 9.13060134292e-03 1.45732066269e-02 2.42761411551e-02 3.71417160544e-02 4.98718618187e-02 - 5.86758842735e-02 6.17513938278e-02 5.98878714669e-02 5.51031089527e-02 4.92182336225e-02 4.33721592307e-02 - 3.81345549630e-02 3.37228748044e-02 3.01717861136e-02 2.74512061786e-02 2.55281844546e-02 2.43819637041e-02 - 2.40011711299e-02 2.43819637041e-02 2.55281844546e-02 2.74512061786e-02 3.01717861136e-02 3.37228748044e-02 - 3.81345549630e-02 4.33721592307e-02 4.92182336225e-02 5.51031089527e-02 5.98878714669e-02 6.17513938278e-02 - 5.86758842735e-02 4.98718618187e-02 3.71417160544e-02 2.42761411551e-02 1.45732066269e-02 9.13060134292e-03 - 1.46090879135e-02 1.76819501362e-02 2.42761411551e-02 3.40771392673e-02 4.49279278957e-02 5.34983990182e-02 - 5.74105494947e-02 5.65511919643e-02 5.24339557043e-02 4.68264624901e-02 4.09927131873e-02 3.56312088557e-02 - 3.10465495213e-02 2.73140021666e-02 2.44059448105e-02 2.22726314479e-02 2.08735527936e-02 2.01812628043e-02 - 2.01812628043e-02 2.08735527936e-02 2.22726314479e-02 2.44059448105e-02 2.73140021666e-02 3.10465495213e-02 - 3.56312088557e-02 4.09927131873e-02 4.68264624901e-02 5.24339557043e-02 5.65511919643e-02 5.74105494947e-02 - 5.34983990182e-02 4.49279278957e-02 3.40771392673e-02 2.42761411551e-02 1.76819501362e-02 1.46090879135e-02 - 2.67478820537e-02 3.06594619284e-02 3.71417160544e-02 4.49279278957e-02 5.15765048907e-02 5.48533676650e-02 - 5.41129564364e-02 5.02828320119e-02 4.48486167771e-02 3.90347179512e-02 3.35871770820e-02 2.88661050079e-02 - 2.49827563157e-02 2.19185274002e-02 1.96135589165e-02 1.80109897723e-02 1.70678712692e-02 1.67567114426e-02 - 1.70678712692e-02 1.80109897723e-02 1.96135589165e-02 2.19185274002e-02 2.49827563157e-02 2.88661050079e-02 - 3.35871770820e-02 3.90347179512e-02 4.48486167771e-02 5.02828320119e-02 5.41129564364e-02 5.48533676650e-02 - 5.15765048907e-02 4.49279278957e-02 3.71417160544e-02 3.06594619284e-02 2.67478820537e-02 2.54935088837e-02 - 4.22847991283e-02 4.56222411881e-02 4.98718618187e-02 5.34983990182e-02 5.48533676650e-02 5.32152215954e-02 - 4.90700187394e-02 4.35234290368e-02 3.76190713504e-02 3.20546920774e-02 2.71955666447e-02 2.31688478126e-02 - 1.99620901041e-02 1.75083321070e-02 1.57370100687e-02 1.45906790875e-02 1.40283418589e-02 1.40283418589e-02 - 1.45906790875e-02 1.57370100687e-02 1.75083321070e-02 1.99620901041e-02 2.31688478126e-02 2.71955666447e-02 - 3.20546920774e-02 3.76190713504e-02 4.35234290368e-02 4.90700187394e-02 5.32152215954e-02 5.48533676650e-02 - 5.34983990182e-02 4.98718618187e-02 4.56222411881e-02 4.22847991283e-02 4.05694134160e-02 4.05694134160e-02 - 5.74463352203e-02 5.83777841365e-02 5.86758842735e-02 5.74105494947e-02 5.41129564364e-02 4.90700187394e-02 - 4.30547772101e-02 3.68707660171e-02 3.10978190541e-02 2.60582031450e-02 2.18687619531e-02 1.85132658939e-02 - 1.59162612755e-02 1.39945083398e-02 1.26769712537e-02 1.19093466628e-02 1.16573532374e-02 1.19093466628e-02 - 1.26769712537e-02 1.39945083398e-02 1.59162612755e-02 1.85132658939e-02 2.18687619531e-02 2.60582031450e-02 - 3.10978190541e-02 3.68707660171e-02 4.30547772101e-02 4.90700187394e-02 5.41129564364e-02 5.74105494947e-02 - 5.86758842735e-02 5.83777841365e-02 5.74463352203e-02 5.66663226477e-02 5.63846435627e-02 5.66663226477e-02 - 6.81077724909e-02 6.55787911247e-02 6.17513938278e-02 5.65511919643e-02 5.02828320119e-02 4.35234290368e-02 - 3.68707660171e-02 3.07715106065e-02 2.54803066383e-02 2.10847229658e-02 1.75547637226e-02 1.48031251671e-02 - 1.27333396536e-02 1.12609832188e-02 1.03186231402e-02 9.85925299562e-03 9.85925299562e-03 1.03186231402e-02 - 1.12609832188e-02 1.27333396536e-02 1.48031251671e-02 1.75547637226e-02 2.10847229658e-02 2.54803066383e-02 - 3.07715106065e-02 3.68707660171e-02 4.35234290368e-02 5.02828320119e-02 5.65511919643e-02 6.17513938278e-02 - 6.55787911247e-02 6.81077724909e-02 6.96179820017e-02 7.03323963389e-02 7.03323963389e-02 6.96179820017e-02 - 7.23556493700e-02 6.66786802062e-02 5.98878714669e-02 5.24339557043e-02 4.48486167771e-02 3.76190713504e-02 - 3.10978190541e-02 2.54803066383e-02 2.08223402545e-02 1.70770073925e-02 1.41440793855e-02 1.19137265332e-02 - 1.02881382638e-02 9.18679124184e-03 8.54973346172e-03 8.34122341388e-03 8.54973346172e-03 9.18679124184e-03 - 1.02881382638e-02 1.19137265332e-02 1.41440793855e-02 1.70770073925e-02 2.08223402545e-02 2.54803066383e-02 - 3.10978190541e-02 3.76190713504e-02 4.48486167771e-02 5.24339557043e-02 5.98878714669e-02 6.66786802062e-02 - 7.23556493700e-02 7.66122811094e-02 7.92532152557e-02 8.01500628124e-02 7.92532152557e-02 7.66122811094e-02 - 7.10787520021e-02 6.33842515281e-02 5.51031089527e-02 4.68264624901e-02 3.90347179512e-02 3.20546920774e-02 - 2.60582031450e-02 2.10847229658e-02 1.70770073925e-02 1.39256808178e-02 1.15097880648e-02 9.71912104775e-03 - 8.46060891145e-03 7.66146344666e-03 7.27338017313e-03 7.27338017313e-03 7.66146344666e-03 8.46060891145e-03 - 9.71912104775e-03 1.15097880648e-02 1.39256808178e-02 1.70770073925e-02 2.10847229658e-02 2.60582031450e-02 - 3.20546920774e-02 3.90347179512e-02 4.68264624901e-02 5.51031089527e-02 6.33842515281e-02 7.10787520021e-02 - 7.75631573239e-02 8.22656900591e-02 8.47410728024e-02 8.47410728024e-02 8.22656900591e-02 7.75631573239e-02 - 6.64898780493e-02 5.78981879671e-02 4.92182336225e-02 4.09927131873e-02 3.35871770820e-02 2.71955666447e-02 - 2.18687619531e-02 1.75547637226e-02 1.41440793855e-02 1.15097880648e-02 9.53173661310e-03 8.10563303358e-03 - 7.14689010595e-03 6.59479473082e-03 6.41444748147e-03 6.59479473082e-03 7.14689010595e-03 8.10563303358e-03 - 9.53173661310e-03 1.15097880648e-02 1.41440793855e-02 1.75547637226e-02 2.18687619531e-02 2.71955666447e-02 - 3.35871770820e-02 4.09927131873e-02 4.92182336225e-02 5.78981879671e-02 6.64898780493e-02 7.43082663472e-02 - 8.06097207709e-02 8.47143937707e-02 8.61408122915e-02 8.47143937707e-02 8.06097207709e-02 7.43082663472e-02 - 6.05796981280e-02 5.18355302331e-02 4.33721592307e-02 3.56312088557e-02 2.88661050079e-02 2.31688478126e-02 - 1.85132658939e-02 1.48031251671e-02 1.19137265332e-02 9.71912104775e-03 8.10563303358e-03 6.97836085285e-03 - 6.26545793635e-03 5.92021996667e-03 5.92021996667e-03 6.26545793635e-03 6.97836085285e-03 8.10563303358e-03 - 9.71912104775e-03 1.19137265332e-02 1.48031251671e-02 1.85132658939e-02 2.31688478126e-02 2.88661050079e-02 - 3.56312088557e-02 4.33721592307e-02 5.18355302331e-02 6.05796981280e-02 6.89793219251e-02 7.62783857555e-02 - 8.16998180862e-02 8.45957298814e-02 8.45957298814e-02 8.16998180862e-02 7.62783857555e-02 6.89793219251e-02 - 5.45841783826e-02 4.60913389830e-02 3.81345549630e-02 3.10465495213e-02 2.49827563157e-02 1.99620901041e-02 - 1.59162612755e-02 1.27333396536e-02 1.02881382638e-02 8.46060891145e-03 7.14689010595e-03 6.26545793635e-03 - 5.75903981319e-03 5.59394004869e-03 5.75903981319e-03 6.26545793635e-03 7.14689010595e-03 8.46060891145e-03 - 1.02881382638e-02 1.27333396536e-02 1.59162612755e-02 1.99620901041e-02 2.49827563157e-02 3.10465495213e-02 - 3.81345549630e-02 4.60913389830e-02 5.45841783826e-02 6.30873277659e-02 7.09081350393e-02 7.72682499914e-02 - 8.14375530661e-02 8.28911486673e-02 8.14375530661e-02 7.72682499914e-02 7.09081350393e-02 6.30873277659e-02 - 4.91148354625e-02 4.10670403681e-02 3.37228748044e-02 2.73140021666e-02 2.19185274002e-02 1.75083321070e-02 - 1.39945083398e-02 1.12609832188e-02 9.18679124184e-03 7.66146344666e-03 6.59479473082e-03 5.92021996667e-03 - 5.59394004869e-03 5.59394004869e-03 5.92021996667e-03 6.59479473082e-03 7.66146344666e-03 9.18679124184e-03 - 1.12609832188e-02 1.39945083398e-02 1.75083321070e-02 2.19185274002e-02 2.73140021666e-02 3.37228748044e-02 - 4.10670403681e-02 4.91148354625e-02 5.74494623672e-02 6.54719417706e-02 7.24538631804e-02 7.76449689484e-02 - 8.04193974336e-02 8.04193974336e-02 7.76449689484e-02 7.24538631804e-02 6.54719417706e-02 5.74494623672e-02 - 4.44094609233e-02 3.68889471691e-02 3.01717861136e-02 2.44059448105e-02 1.96135589165e-02 1.57370100687e-02 - 1.26769712537e-02 1.03186231402e-02 8.54973346172e-03 7.27338017313e-03 6.41444748147e-03 5.92021996667e-03 - 5.75903981319e-03 5.92021996667e-03 6.41444748147e-03 7.27338017313e-03 8.54973346172e-03 1.03186231402e-02 - 1.26769712537e-02 1.57370100687e-02 1.96135589165e-02 2.44059448105e-02 3.01717861136e-02 3.68889471691e-02 - 4.44094609233e-02 5.24194501424e-02 6.04237632524e-02 6.77723654588e-02 7.37387049341e-02 7.76449689484e-02 - 7.90059272690e-02 7.76449689484e-02 7.37387049341e-02 6.77723654588e-02 6.04237632524e-02 5.24194501424e-02 - 4.05244812822e-02 3.35632692529e-02 2.74512061786e-02 2.22726314479e-02 1.80109897723e-02 1.45906790875e-02 - 1.19093466628e-02 9.85925299562e-03 8.34122341388e-03 7.27338017313e-03 6.59479473082e-03 6.26545793635e-03 - 6.26545793635e-03 6.59479473082e-03 7.27338017313e-03 8.34122341388e-03 9.85925299562e-03 1.19093466628e-02 - 1.45906790875e-02 1.80109897723e-02 2.22726314479e-02 2.74512061786e-02 3.35632692529e-02 4.05244812822e-02 - 4.81082332430e-02 5.59201471811e-02 6.34040688222e-02 6.98920688762e-02 7.47020608958e-02 7.72682499914e-02 - 7.72682499914e-02 7.47020608958e-02 6.98920688762e-02 6.34040688222e-02 5.59201471811e-02 4.81082332430e-02 - 3.74634706166e-02 3.10717223250e-02 2.55281844546e-02 2.08735527936e-02 1.70678712692e-02 1.40283418589e-02 - 1.16573532374e-02 9.85925299562e-03 8.54973346172e-03 7.66146344666e-03 7.14689010595e-03 6.97836085285e-03 - 7.14689010595e-03 7.66146344666e-03 8.54973346172e-03 9.85925299562e-03 1.16573532374e-02 1.40283418589e-02 - 1.70678712692e-02 2.08735527936e-02 2.55281844546e-02 3.10717223250e-02 3.74634706166e-02 4.45431970579e-02 - 5.20033431247e-02 5.93841418824e-02 6.61022866145e-02 7.15201290633e-02 7.50510418428e-02 7.62783857555e-02 - 7.50510418428e-02 7.15201290633e-02 6.61022866145e-02 5.93841418824e-02 5.20033431247e-02 4.45431970579e-02 - 3.52402742752e-02 2.94074293899e-02 2.43819637041e-02 2.01812628043e-02 1.67567114426e-02 1.40283418589e-02 - 1.19093466628e-02 1.03186231402e-02 9.18679124184e-03 8.46060891145e-03 8.10563303358e-03 8.10563303358e-03 - 8.46060891145e-03 9.18679124184e-03 1.03186231402e-02 1.19093466628e-02 1.40283418589e-02 1.67567114426e-02 - 2.01812628043e-02 2.43819637041e-02 2.94074293899e-02 3.52402742752e-02 4.17618689283e-02 4.87273692032e-02 - 5.57595749637e-02 6.23688231248e-02 6.80033074139e-02 7.21264918488e-02 7.43082663472e-02 7.43082663472e-02 - 7.21264918488e-02 6.80033074139e-02 6.23688231248e-02 5.57595749637e-02 4.87273692032e-02 4.17618689283e-02 - 3.38859304601e-02 2.85734174953e-02 2.40011711299e-02 2.01812628043e-02 1.70678712692e-02 1.45906790875e-02 - 1.26769712537e-02 1.12609832188e-02 1.02881382638e-02 9.71912104775e-03 9.53173661310e-03 9.71912104775e-03 - 1.02881382638e-02 1.12609832188e-02 1.26769712537e-02 1.45906790875e-02 1.70678712692e-02 2.01812628043e-02 - 2.40011711299e-02 2.85734174953e-02 3.38859304601e-02 3.98358227133e-02 4.62088704848e-02 5.26787408684e-02 - 5.88318176265e-02 6.42180018992e-02 6.84139609392e-02 7.10787520021e-02 7.19923628057e-02 7.10787520021e-02 - 6.84139609392e-02 6.42180018992e-02 5.88318176265e-02 5.26787408684e-02 4.62088704848e-02 3.98358227133e-02 - 3.34304675050e-02 2.85734174953e-02 2.43819637041e-02 2.08735527936e-02 1.80109897723e-02 1.57370100687e-02 - 1.39945083398e-02 1.27333396536e-02 1.19137265332e-02 1.15097880648e-02 1.15097880648e-02 1.19137265332e-02 - 1.27333396536e-02 1.39945083398e-02 1.57370100687e-02 1.80109897723e-02 2.08735527936e-02 2.43819637041e-02 - 2.85734174953e-02 3.34304675050e-02 3.88462459817e-02 4.46053414397e-02 5.03893328752e-02 5.58153453540e-02 - 6.05090723285e-02 6.41840706496e-02 6.66786802062e-02 6.79320857310e-02 6.79320857310e-02 6.66786802062e-02 - 6.41840706496e-02 6.05090723285e-02 5.58153453540e-02 5.03893328752e-02 4.46053414397e-02 3.88462459817e-02 - 3.38859304601e-02 2.94074293899e-02 2.55281844546e-02 2.22726314479e-02 1.96135589165e-02 1.75083321070e-02 - 1.59162612755e-02 1.48031251671e-02 1.41440793855e-02 1.39256808178e-02 1.41440793855e-02 1.48031251671e-02 - 1.59162612755e-02 1.75083321070e-02 1.96135589165e-02 2.22726314479e-02 2.55281844546e-02 2.94074293899e-02 - 3.38859304601e-02 3.88462459817e-02 4.40529168852e-02 4.91578982971e-02 5.37510492057e-02 5.74676014035e-02 - 6.01184381094e-02 6.17513938278e-02 6.25800698666e-02 6.28259810566e-02 6.25800698666e-02 6.17513938278e-02 - 6.01184381094e-02 5.74676014035e-02 5.37510492057e-02 4.91578982971e-02 4.40529168852e-02 3.88462459817e-02 - 3.52402742752e-02 3.10717223250e-02 2.74512061786e-02 2.44059448105e-02 2.19185274002e-02 1.99620901041e-02 - 1.85132658939e-02 1.75547637226e-02 1.70770073925e-02 1.70770073925e-02 1.75547637226e-02 1.85132658939e-02 - 1.99620901041e-02 2.19185274002e-02 2.44059448105e-02 2.74512061786e-02 3.10717223250e-02 3.52402742752e-02 - 3.98358227133e-02 4.46053414397e-02 4.91578982971e-02 5.30133769166e-02 5.57363453523e-02 5.71366804742e-02 - 5.74105494947e-02 5.70772559013e-02 5.67236888968e-02 5.67236888968e-02 5.70772559013e-02 5.74105494947e-02 - 5.71366804742e-02 5.57363453523e-02 5.30133769166e-02 4.91578982971e-02 4.46053414397e-02 3.98358227133e-02 - 3.74634706166e-02 3.35632692529e-02 3.01717861136e-02 2.73140021666e-02 2.49827563157e-02 2.31688478126e-02 - 2.18687619531e-02 2.10847229658e-02 2.08223402545e-02 2.10847229658e-02 2.18687619531e-02 2.31688478126e-02 - 2.49827563157e-02 2.73140021666e-02 3.01717861136e-02 3.35632692529e-02 3.74634706166e-02 4.17618689283e-02 - 4.62088704848e-02 5.03893328752e-02 5.37510492057e-02 5.57363453523e-02 5.60372557288e-02 5.48533676650e-02 - 5.29210396854e-02 5.12221625406e-02 5.05555186569e-02 5.12221625406e-02 5.29210396854e-02 5.48533676650e-02 - 5.60372557288e-02 5.57363453523e-02 5.37510492057e-02 5.03893328752e-02 4.62088704848e-02 4.17618689283e-02 - 4.05244812822e-02 3.68889471691e-02 3.37228748044e-02 3.10465495213e-02 2.88661050079e-02 2.71955666447e-02 - 2.60582031450e-02 2.54803066383e-02 2.54803066383e-02 2.60582031450e-02 2.71955666447e-02 2.88661050079e-02 - 3.10465495213e-02 3.37228748044e-02 3.68889471691e-02 4.05244812822e-02 4.45431970579e-02 4.87273692032e-02 - 5.26787408684e-02 5.58153453540e-02 5.74676014035e-02 5.71366804742e-02 5.48533676650e-02 5.13723037105e-02 - 4.79609401864e-02 4.58777097769e-02 4.58777097769e-02 4.79609401864e-02 5.13723037105e-02 5.48533676650e-02 - 5.71366804742e-02 5.74676014035e-02 5.58153453540e-02 5.26787408684e-02 4.87273692032e-02 4.45431970579e-02 - 4.44094609233e-02 4.10670403681e-02 3.81345549630e-02 3.56312088557e-02 3.35871770820e-02 3.20546920774e-02 - 3.10978190541e-02 3.07715106065e-02 3.10978190541e-02 3.20546920774e-02 3.35871770820e-02 3.56312088557e-02 - 3.81345549630e-02 4.10670403681e-02 4.44094609233e-02 4.81082332430e-02 5.20033431247e-02 5.57595749637e-02 - 5.88318176265e-02 6.05090723285e-02 6.01184381094e-02 5.74105494947e-02 5.29210396854e-02 4.79609401864e-02 - 4.41366450522e-02 4.27064575993e-02 4.41366450522e-02 4.79609401864e-02 5.29210396854e-02 5.74105494947e-02 - 6.01184381094e-02 6.05090723285e-02 5.88318176265e-02 5.57595749637e-02 5.20033431247e-02 4.81082332430e-02 - 4.91148354625e-02 4.60913389830e-02 4.33721592307e-02 4.09927131873e-02 3.90347179512e-02 3.76190713504e-02 - 3.68707660171e-02 3.68707660171e-02 3.76190713504e-02 3.90347179512e-02 4.09927131873e-02 4.33721592307e-02 - 4.60913389830e-02 4.91148354625e-02 5.24194501424e-02 5.59201471811e-02 5.93841418824e-02 6.23688231248e-02 - 6.42180018992e-02 6.41840706496e-02 6.17513938278e-02 5.70772559013e-02 5.12221625406e-02 4.58777097769e-02 - 4.27064575993e-02 4.27064575993e-02 4.58777097769e-02 5.12221625406e-02 5.70772559013e-02 6.17513938278e-02 - 6.41840706496e-02 6.42180018992e-02 6.23688231248e-02 5.93841418824e-02 5.59201471811e-02 5.24194501424e-02 - 5.45841783826e-02 5.18355302331e-02 4.92182336225e-02 4.68264624901e-02 4.48486167771e-02 4.35234290368e-02 - 4.30547772101e-02 4.35234290368e-02 4.48486167771e-02 4.68264624901e-02 4.92182336225e-02 5.18355302331e-02 - 5.45841783826e-02 5.74494623672e-02 6.04237632524e-02 6.34040688222e-02 6.61022866145e-02 6.80033074139e-02 - 6.84139609392e-02 6.66786802062e-02 6.25800698666e-02 5.67236888968e-02 5.05555186569e-02 4.58777097769e-02 - 4.41366450522e-02 4.58777097769e-02 5.05555186569e-02 5.67236888968e-02 6.25800698666e-02 6.66786802062e-02 - 6.84139609392e-02 6.80033074139e-02 6.61022866145e-02 6.34040688222e-02 6.04237632524e-02 5.74494623672e-02 - 6.05796981280e-02 5.78981879671e-02 5.51031089527e-02 5.24339557043e-02 5.02828320119e-02 4.90700187394e-02 - 4.90700187394e-02 5.02828320119e-02 5.24339557043e-02 5.51031089527e-02 5.78981879671e-02 6.05796981280e-02 - 6.30873277659e-02 6.54719417706e-02 6.77723654588e-02 6.98920688762e-02 7.15201290633e-02 7.21264918488e-02 - 7.10787520021e-02 6.79320857310e-02 6.28259810566e-02 5.67236888968e-02 5.12221625406e-02 4.79609401864e-02 - 4.79609401864e-02 5.12221625406e-02 5.67236888968e-02 6.28259810566e-02 6.79320857310e-02 7.10787520021e-02 - 7.21264918488e-02 7.15201290633e-02 6.98920688762e-02 6.77723654588e-02 6.54719417706e-02 6.30873277659e-02 - 6.64898780493e-02 6.33842515281e-02 5.98878714669e-02 5.65511919643e-02 5.41129564364e-02 5.32152215954e-02 - 5.41129564364e-02 5.65511919643e-02 5.98878714669e-02 6.33842515281e-02 6.64898780493e-02 6.89793219251e-02 - 7.09081350393e-02 7.24538631804e-02 7.37387049341e-02 7.47020608958e-02 7.50510418428e-02 7.43082663472e-02 - 7.19923628057e-02 6.79320857310e-02 6.25800698666e-02 5.70772559013e-02 5.29210396854e-02 5.13723037105e-02 - 5.29210396854e-02 5.70772559013e-02 6.25800698666e-02 6.79320857310e-02 7.19923628057e-02 7.43082663472e-02 - 7.50510418428e-02 7.47020608958e-02 7.37387049341e-02 7.24538631804e-02 7.09081350393e-02 6.89793219251e-02 - 7.10787520021e-02 6.66786802062e-02 6.17513938278e-02 5.74105494947e-02 5.48533676650e-02 5.48533676650e-02 - 5.74105494947e-02 6.17513938278e-02 6.66786802062e-02 7.10787520021e-02 7.43082663472e-02 7.62783857555e-02 - 7.72682499914e-02 7.76449689484e-02 7.76449689484e-02 7.72682499914e-02 7.62783857555e-02 7.43082663472e-02 - 7.10787520021e-02 6.66786802062e-02 6.17513938278e-02 5.74105494947e-02 5.48533676650e-02 5.48533676650e-02 - 5.74105494947e-02 6.17513938278e-02 6.66786802062e-02 7.10787520021e-02 7.43082663472e-02 7.62783857555e-02 - 7.72682499914e-02 7.76449689484e-02 7.76449689484e-02 7.72682499914e-02 7.62783857555e-02 7.43082663472e-02 - 7.23556493700e-02 6.55787911247e-02 5.86758842735e-02 5.34983990182e-02 5.15765048907e-02 5.34983990182e-02 - 5.86758842735e-02 6.55787911247e-02 7.23556493700e-02 7.75631573239e-02 8.06097207709e-02 8.16998180862e-02 - 8.14375530661e-02 8.04193974336e-02 7.90059272690e-02 7.72682499914e-02 7.50510418428e-02 7.21264918488e-02 - 6.84139609392e-02 6.41840706496e-02 6.01184381094e-02 5.71366804742e-02 5.60372557288e-02 5.71366804742e-02 - 6.01184381094e-02 6.41840706496e-02 6.84139609392e-02 7.21264918488e-02 7.50510418428e-02 7.72682499914e-02 - 7.90059272690e-02 8.04193974336e-02 8.14375530661e-02 8.16998180862e-02 8.06097207709e-02 7.75631573239e-02 - 6.81077724909e-02 5.83777841365e-02 4.98718618187e-02 4.49279278957e-02 4.49279278957e-02 4.98718618187e-02 - 5.83777841365e-02 6.81077724909e-02 7.66122811094e-02 8.22656900591e-02 8.47143937707e-02 8.45957298814e-02 - 8.28911486673e-02 8.04193974336e-02 7.76449689484e-02 7.47020608958e-02 7.15201290633e-02 6.80033074139e-02 - 6.42180018992e-02 6.05090723285e-02 5.74676014035e-02 5.57363453523e-02 5.57363453523e-02 5.74676014035e-02 - 6.05090723285e-02 6.42180018992e-02 6.80033074139e-02 7.15201290633e-02 7.47020608958e-02 7.76449689484e-02 - 8.04193974336e-02 8.28911486673e-02 8.45957298814e-02 8.47143937707e-02 8.22656900591e-02 7.66122811094e-02 - 5.74463352203e-02 4.56222411881e-02 3.71417160544e-02 3.40771392673e-02 3.71417160544e-02 4.56222411881e-02 - 5.74463352203e-02 6.96179820017e-02 7.92532152557e-02 8.47410728024e-02 8.61408122915e-02 8.45957298814e-02 - 8.14375530661e-02 7.76449689484e-02 7.37387049341e-02 6.98920688762e-02 6.61022866145e-02 6.23688231248e-02 - 5.88318176265e-02 5.58153453540e-02 5.37510492057e-02 5.30133769166e-02 5.37510492057e-02 5.58153453540e-02 - 5.88318176265e-02 6.23688231248e-02 6.61022866145e-02 6.98920688762e-02 7.37387049341e-02 7.76449689484e-02 - 8.14375530661e-02 8.45957298814e-02 8.61408122915e-02 8.47410728024e-02 7.92532152557e-02 6.96179820017e-02 - 4.22847991283e-02 3.06594619284e-02 2.42761411551e-02 2.42761411551e-02 3.06594619284e-02 4.22847991283e-02 - 5.66663226477e-02 7.03323963389e-02 8.01500628124e-02 8.47410728024e-02 8.47143937707e-02 8.16998180862e-02 - 7.72682499914e-02 7.24538631804e-02 6.77723654588e-02 6.34040688222e-02 5.93841418824e-02 5.57595749637e-02 - 5.26787408684e-02 5.03893328752e-02 4.91578982971e-02 4.91578982971e-02 5.03893328752e-02 5.26787408684e-02 - 5.57595749637e-02 5.93841418824e-02 6.34040688222e-02 6.77723654588e-02 7.24538631804e-02 7.72682499914e-02 - 8.16998180862e-02 8.47143937707e-02 8.47410728024e-02 8.01500628124e-02 7.03323963389e-02 5.66663226477e-02 - 2.67478820537e-02 1.76819501362e-02 1.45732066269e-02 1.76819501362e-02 2.67478820537e-02 4.05694134160e-02 - 5.63846435627e-02 7.03323963389e-02 7.92532152557e-02 8.22656900591e-02 8.06097207709e-02 7.62783857555e-02 - 7.09081350393e-02 6.54719417706e-02 6.04237632524e-02 5.59201471811e-02 5.20033431247e-02 4.87273692032e-02 - 4.62088704848e-02 4.46053414397e-02 4.40529168852e-02 4.46053414397e-02 4.62088704848e-02 4.87273692032e-02 - 5.20033431247e-02 5.59201471811e-02 6.04237632524e-02 6.54719417706e-02 7.09081350393e-02 7.62783857555e-02 - 8.06097207709e-02 8.22656900591e-02 7.92532152557e-02 7.03323963389e-02 5.63846435627e-02 4.05694134160e-02 - 1.46090879135e-02 9.13060134292e-03 9.13060134292e-03 1.46090879135e-02 2.54935088837e-02 4.05694134160e-02 - 5.66663226477e-02 6.96179820017e-02 7.66122811094e-02 7.75631573239e-02 7.43082663472e-02 6.89793219251e-02 - 6.30873277659e-02 5.74494623672e-02 5.24194501424e-02 4.81082332430e-02 4.45431970579e-02 4.17618689283e-02 - 3.98358227133e-02 3.88462459817e-02 3.88462459817e-02 3.98358227133e-02 4.17618689283e-02 4.45431970579e-02 - 4.81082332430e-02 5.24194501424e-02 5.74494623672e-02 6.30873277659e-02 6.89793219251e-02 7.43082663472e-02 - 7.75631573239e-02 7.66122811094e-02 6.96179820017e-02 5.66663226477e-02 4.05694134160e-02 2.54935088837e-02 - 2.64004483879e-03 2.64004483879e-03 6.32692063078e-03 1.46090879135e-02 2.77489957459e-02 4.35588929466e-02 - 5.76200322747e-02 6.60504635380e-02 6.79320857310e-02 6.49555724266e-02 5.94941697642e-02 5.33236907840e-02 - 4.74313143781e-02 4.22610610741e-02 3.79563421300e-02 3.45282284639e-02 3.19590319446e-02 3.02423286704e-02 - 2.93819034216e-02 2.93819034216e-02 3.02423286704e-02 3.19590319446e-02 3.45282284639e-02 3.79563421300e-02 - 4.22610610741e-02 4.74313143781e-02 5.33236907840e-02 5.94941697642e-02 6.49555724266e-02 6.79320857310e-02 - 6.60504635380e-02 5.76200322747e-02 4.35588929466e-02 2.77489957459e-02 1.46090879135e-02 6.32692063078e-03 - 2.64004483879e-03 4.10298626852e-03 9.13060134292e-03 1.87771308641e-02 3.25101129901e-02 4.70389926376e-02 - 5.79103146750e-02 6.25800698666e-02 6.15702941626e-02 5.70612480291e-02 5.11403130173e-02 4.51323632879e-02 - 3.97029159910e-02 3.51127517762e-02 3.14127386696e-02 2.85763383726e-02 2.65706573512e-02 2.53749373622e-02 - 2.49776956914e-02 2.53749373622e-02 2.65706573512e-02 2.85763383726e-02 3.14127386696e-02 3.51127517762e-02 - 3.97029159910e-02 4.51323632879e-02 5.11403130173e-02 5.70612480291e-02 6.15702941626e-02 6.25800698666e-02 - 5.79103146750e-02 4.70389926376e-02 3.25101129901e-02 1.87771308641e-02 9.13060134292e-03 4.10298626852e-03 - 6.32692063078e-03 9.13060134292e-03 1.56860392578e-02 2.63856510811e-02 3.93541671489e-02 5.07010770424e-02 - 5.70772559013e-02 5.77843769256e-02 5.43692149489e-02 4.89192305177e-02 4.29832635915e-02 3.74259862301e-02 - 3.26341221073e-02 2.87187367840e-02 2.56635113913e-02 2.34202555044e-02 2.19482820950e-02 2.12198093897e-02 - 2.12198093897e-02 2.19482820950e-02 2.34202555044e-02 2.56635113913e-02 2.87187367840e-02 3.26341221073e-02 - 3.74259862301e-02 4.29832635915e-02 4.89192305177e-02 5.43692149489e-02 5.77843769256e-02 5.70772559013e-02 - 5.07010770424e-02 3.93541671489e-02 2.63856510811e-02 1.56860392578e-02 9.13060134292e-03 6.32692063078e-03 - 1.46090879135e-02 1.87771308641e-02 2.63856510811e-02 3.65582592974e-02 4.64751950426e-02 5.29210396854e-02 - 5.44475263977e-02 5.18281863755e-02 4.68401774785e-02 4.10571769449e-02 3.54595415232e-02 3.05340710560e-02 - 2.64534808200e-02 2.32231030162e-02 2.07887392229e-02 1.90940368490e-02 1.80960146721e-02 1.77666865554e-02 - 1.80960146721e-02 1.90940368490e-02 2.07887392229e-02 2.32231030162e-02 2.64534808200e-02 3.05340710560e-02 - 3.54595415232e-02 4.10571769449e-02 4.68401774785e-02 5.18281863755e-02 5.44475263977e-02 5.29210396854e-02 - 4.64751950426e-02 3.65582592974e-02 2.63856510811e-02 1.87771308641e-02 1.46090879135e-02 1.33581335706e-02 - 2.77489957459e-02 3.25101129901e-02 3.93541671489e-02 4.64751950426e-02 5.13723037105e-02 5.24797871309e-02 - 4.99825941802e-02 4.51877782102e-02 3.94908104948e-02 3.38635928392e-02 2.88348357920e-02 2.46187421852e-02 - 2.12421582644e-02 1.86504890434e-02 1.67754563001e-02 1.55601992220e-02 1.49636867906e-02 1.49636867906e-02 - 1.55601992220e-02 1.67754563001e-02 1.86504890434e-02 2.12421582644e-02 2.46187421852e-02 2.88348357920e-02 - 3.38635928392e-02 3.94908104948e-02 4.51877782102e-02 4.99825941802e-02 5.24797871309e-02 5.13723037105e-02 - 4.64751950426e-02 3.93541671489e-02 3.25101129901e-02 2.77489957459e-02 2.54935088837e-02 2.54935088837e-02 - 4.35588929466e-02 4.70389926376e-02 5.07010770424e-02 5.29210396854e-02 5.24797871309e-02 4.93048229800e-02 - 4.42634768270e-02 3.84534160516e-02 3.27229087590e-02 2.75721078901e-02 2.32217587400e-02 1.97084075068e-02 - 1.69767793036e-02 1.49488960464e-02 1.35553259639e-02 1.27424344623e-02 1.24755048074e-02 1.27424344623e-02 - 1.35553259639e-02 1.49488960464e-02 1.69767793036e-02 1.97084075068e-02 2.32217587400e-02 2.75721078901e-02 - 3.27229087590e-02 3.84534160516e-02 4.42634768270e-02 4.93048229800e-02 5.24797871309e-02 5.29210396854e-02 - 5.07010770424e-02 4.70389926376e-02 4.35588929466e-02 4.13123485649e-02 4.05694134160e-02 4.13123485649e-02 - 5.76200322747e-02 5.79103146750e-02 5.70772559013e-02 5.44475263977e-02 4.99825941802e-02 4.42634768270e-02 - 3.80886538087e-02 3.21243272248e-02 2.67889182249e-02 2.22755921268e-02 1.86137801375e-02 1.57423428102e-02 - 1.35733603577e-02 1.20255038743e-02 1.10330000246e-02 1.05489279259e-02 1.05489279259e-02 1.10330000246e-02 - 1.20255038743e-02 1.35733603577e-02 1.57423428102e-02 1.86137801375e-02 2.22755921268e-02 2.67889182249e-02 - 3.21243272248e-02 3.80886538087e-02 4.42634768270e-02 4.99825941802e-02 5.44475263977e-02 5.70772559013e-02 - 5.79103146750e-02 5.76200322747e-02 5.70355201353e-02 5.66663226477e-02 5.66663226477e-02 5.70355201353e-02 - 6.60504635380e-02 6.25800698666e-02 5.77843769256e-02 5.18281863755e-02 4.51877782102e-02 3.84534160516e-02 - 3.21243272248e-02 2.65227612839e-02 2.17964249596e-02 1.79555609317e-02 1.49279448733e-02 1.26143883181e-02 - 1.09215936737e-02 9.77183223433e-03 9.10613117226e-03 8.88822832040e-03 9.10613117226e-03 9.77183223433e-03 - 1.09215936737e-02 1.26143883181e-02 1.49279448733e-02 1.79555609317e-02 2.17964249596e-02 2.65227612839e-02 - 3.21243272248e-02 3.84534160516e-02 4.51877782102e-02 5.18281863755e-02 5.77843769256e-02 6.25800698666e-02 - 6.60504635380e-02 6.83266751007e-02 6.96179820017e-02 7.00400365127e-02 6.96179820017e-02 6.83266751007e-02 - 6.79320857310e-02 6.15702941626e-02 5.43692149489e-02 4.68401774785e-02 3.94908104948e-02 3.27229087590e-02 - 2.67889182249e-02 2.17964249596e-02 1.77355963866e-02 1.45226393383e-02 1.20475550421e-02 1.02054916185e-02 - 8.90705726329e-03 8.08133005705e-03 7.68014935330e-03 7.68014935330e-03 8.08133005705e-03 8.90705726329e-03 - 1.02054916185e-02 1.20475550421e-02 1.45226393383e-02 1.77355963866e-02 2.17964249596e-02 2.67889182249e-02 - 3.27229087590e-02 3.94908104948e-02 4.68401774785e-02 5.43692149489e-02 6.15702941626e-02 6.79320857310e-02 - 7.30418134594e-02 7.66122811094e-02 7.84511058955e-02 7.84511058955e-02 7.66122811094e-02 7.30418134594e-02 - 6.49555724266e-02 5.70612480291e-02 4.89192305177e-02 4.10571769449e-02 3.38635928392e-02 2.75721078901e-02 - 2.22755921268e-02 1.79555609317e-02 1.45226393383e-02 1.18598583649e-02 9.85294674885e-03 8.40200942373e-03 - 7.42492384580e-03 6.86170422323e-03 6.67761981445e-03 6.86170422323e-03 7.42492384580e-03 8.40200942373e-03 - 9.85294674885e-03 1.18598583649e-02 1.45226393383e-02 1.79555609317e-02 2.22755921268e-02 2.75721078901e-02 - 3.38635928392e-02 4.10571769449e-02 4.89192305177e-02 5.70612480291e-02 6.49555724266e-02 7.19923628057e-02 - 7.75631573239e-02 8.11458755837e-02 8.23828782457e-02 8.11458755837e-02 7.75631573239e-02 7.19923628057e-02 - 5.94941697642e-02 5.11403130173e-02 4.29832635915e-02 3.54595415232e-02 2.88348357920e-02 2.32217587400e-02 - 1.86137801375e-02 1.49279448733e-02 1.20475550421e-02 9.85294674885e-03 8.23585736203e-03 7.10459522193e-03 - 6.38840491477e-03 6.04118457084e-03 6.04118457084e-03 6.38840491477e-03 7.10459522193e-03 8.23585736203e-03 - 9.85294674885e-03 1.20475550421e-02 1.49279448733e-02 1.86137801375e-02 2.32217587400e-02 2.88348357920e-02 - 3.54595415232e-02 4.29832635915e-02 5.11403130173e-02 5.94941697642e-02 6.74494907981e-02 7.43082663472e-02 - 7.93709590427e-02 8.20645507484e-02 8.20645507484e-02 7.93709590427e-02 7.43082663472e-02 6.74494907981e-02 - 5.33236907840e-02 4.51323632879e-02 3.74259862301e-02 3.05340710560e-02 2.46187421852e-02 1.97084075068e-02 - 1.57423428102e-02 1.26143883181e-02 1.02054916185e-02 8.40200942373e-03 7.10459522193e-03 6.23361812745e-03 - 5.73268604942e-03 5.56920678348e-03 5.73268604942e-03 6.23361812745e-03 7.10459522193e-03 8.40200942373e-03 - 1.02054916185e-02 1.26143883181e-02 1.57423428102e-02 1.97084075068e-02 2.46187421852e-02 3.05340710560e-02 - 3.74259862301e-02 4.51323632879e-02 5.33236907840e-02 6.14923433640e-02 6.89793219251e-02 7.50510418428e-02 - 7.90236437036e-02 8.04073084192e-02 7.90236437036e-02 7.50510418428e-02 6.89793219251e-02 6.14923433640e-02 - 4.74313143781e-02 3.97029159910e-02 3.26341221073e-02 2.64534808200e-02 2.12421582644e-02 1.69767793036e-02 - 1.35733603577e-02 1.09215936737e-02 8.90705726329e-03 7.42492384580e-03 6.38840491477e-03 5.73268604942e-03 - 5.41531278039e-03 5.41531278039e-03 5.73268604942e-03 6.38840491477e-03 7.42492384580e-03 8.90705726329e-03 - 1.09215936737e-02 1.35733603577e-02 1.69767793036e-02 2.12421582644e-02 2.64534808200e-02 3.26341221073e-02 - 3.97029159910e-02 4.74313143781e-02 5.54167137150e-02 6.30873277659e-02 6.97522426294e-02 7.47020608958e-02 - 7.73458021392e-02 7.73458021392e-02 7.47020608958e-02 6.97522426294e-02 6.30873277659e-02 5.54167137150e-02 - 4.22610610741e-02 3.51127517762e-02 2.87187367840e-02 2.32231030162e-02 1.86504890434e-02 1.49488960464e-02 - 1.20255038743e-02 9.77183223433e-03 8.08133005705e-03 6.86170422323e-03 6.04118457084e-03 5.56920678348e-03 - 5.41531278039e-03 5.56920678348e-03 6.04118457084e-03 6.86170422323e-03 8.08133005705e-03 9.77183223433e-03 - 1.20255038743e-02 1.49488960464e-02 1.86504890434e-02 2.32231030162e-02 2.87187367840e-02 3.51127517762e-02 - 4.22610610741e-02 4.98633146719e-02 5.74494623672e-02 6.44054743742e-02 7.00474085615e-02 7.37387049341e-02 - 7.50243106749e-02 7.37387049341e-02 7.00474085615e-02 6.44054743742e-02 5.74494623672e-02 4.98633146719e-02 - 3.79563421300e-02 3.14127386696e-02 2.56635113913e-02 2.07887392229e-02 1.67754563001e-02 1.35553259639e-02 - 1.10330000246e-02 9.10613117226e-03 7.68014935330e-03 6.67761981445e-03 6.04118457084e-03 5.73268604942e-03 - 5.73268604942e-03 6.04118457084e-03 6.67761981445e-03 7.68014935330e-03 9.10613117226e-03 1.10330000246e-02 - 1.35553259639e-02 1.67754563001e-02 2.07887392229e-02 2.56635113913e-02 3.14127386696e-02 3.79563421300e-02 - 4.50819394473e-02 5.24194501424e-02 5.94462807362e-02 6.55352798807e-02 7.00474085615e-02 7.24538631804e-02 - 7.24538631804e-02 7.00474085615e-02 6.55352798807e-02 5.94462807362e-02 5.24194501424e-02 4.50819394473e-02 - 3.45282284639e-02 2.85763383726e-02 2.34202555044e-02 1.90940368490e-02 1.55601992220e-02 1.27424344623e-02 - 1.05489279259e-02 8.88822832040e-03 7.68014935330e-03 6.86170422323e-03 6.38840491477e-03 6.23361812745e-03 - 6.38840491477e-03 6.86170422323e-03 7.68014935330e-03 8.88822832040e-03 1.05489279259e-02 1.27424344623e-02 - 1.55601992220e-02 1.90940368490e-02 2.34202555044e-02 2.85763383726e-02 3.45282284639e-02 4.11328816616e-02 - 4.81082332430e-02 5.50251512552e-02 6.13334872428e-02 6.64284767715e-02 6.97522426294e-02 7.09081350393e-02 - 6.97522426294e-02 6.64284767715e-02 6.13334872428e-02 5.50251512552e-02 4.81082332430e-02 4.11328816616e-02 - 3.19590319446e-02 2.65706573512e-02 2.19482820950e-02 1.80960146721e-02 1.49636867906e-02 1.24755048074e-02 - 1.05489279259e-02 9.10613117226e-03 8.08133005705e-03 7.42492384580e-03 7.10459522193e-03 7.10459522193e-03 - 7.42492384580e-03 8.08133005705e-03 9.10613117226e-03 1.05489279259e-02 1.24755048074e-02 1.49636867906e-02 - 1.80960146721e-02 2.19482820950e-02 2.65706573512e-02 3.19590319446e-02 3.80204685260e-02 4.45431970579e-02 - 5.11831265828e-02 5.74762428735e-02 6.28828729732e-02 6.68641206041e-02 6.89793219251e-02 6.89793219251e-02 - 6.68641206041e-02 6.28828729732e-02 5.74762428735e-02 5.11831265828e-02 4.45431970579e-02 3.80204685260e-02 - 3.02423286704e-02 2.53749373622e-02 2.12198093897e-02 1.77666865554e-02 1.49636867906e-02 1.27424344623e-02 - 1.10330000246e-02 9.77183223433e-03 8.90705726329e-03 8.40200942373e-03 8.23585736203e-03 8.40200942373e-03 - 8.90705726329e-03 9.77183223433e-03 1.10330000246e-02 1.27424344623e-02 1.49636867906e-02 1.77666865554e-02 - 2.12198093897e-02 2.53749373622e-02 3.02423286704e-02 3.57591480990e-02 4.17618689283e-02 4.79731106469e-02 - 5.40097122002e-02 5.94150808572e-02 6.37149803432e-02 6.64898780493e-02 6.74494907981e-02 6.64898780493e-02 - 6.37149803432e-02 5.94150808572e-02 5.40097122002e-02 4.79731106469e-02 4.17618689283e-02 3.57591480990e-02 - 2.93819034216e-02 2.49776956914e-02 2.12198093897e-02 1.80960146721e-02 1.55601992220e-02 1.35553259639e-02 - 1.20255038743e-02 1.09215936737e-02 1.02054916185e-02 9.85294674885e-03 9.85294674885e-03 1.02054916185e-02 - 1.09215936737e-02 1.20255038743e-02 1.35553259639e-02 1.55601992220e-02 1.80960146721e-02 2.12198093897e-02 - 2.49776956914e-02 2.93819034216e-02 3.43811654173e-02 3.98358227133e-02 4.55081727847e-02 5.10737783335e-02 - 5.61547897924e-02 6.03694423859e-02 6.33842515281e-02 6.49555724266e-02 6.49555724266e-02 6.33842515281e-02 - 6.03694423859e-02 5.61547897924e-02 5.10737783335e-02 4.55081727847e-02 3.98358227133e-02 3.43811654173e-02 - 2.93819034216e-02 2.53749373622e-02 2.19482820950e-02 1.90940368490e-02 1.67754563001e-02 1.49488960464e-02 - 1.35733603577e-02 1.26143883181e-02 1.20475550421e-02 1.18598583649e-02 1.20475550421e-02 1.26143883181e-02 - 1.35733603577e-02 1.49488960464e-02 1.67754563001e-02 1.90940368490e-02 2.19482820950e-02 2.53749373622e-02 - 2.93819034216e-02 3.39176800802e-02 3.88462459817e-02 4.39402098517e-02 4.88987422193e-02 5.33923081840e-02 - 5.71251588417e-02 5.98878714669e-02 6.15702941626e-02 6.21334821617e-02 6.15702941626e-02 5.98878714669e-02 - 5.71251588417e-02 5.33923081840e-02 4.88987422193e-02 4.39402098517e-02 3.88462459817e-02 3.39176800802e-02 - 3.02423286704e-02 2.65706573512e-02 2.34202555044e-02 2.07887392229e-02 1.86504890434e-02 1.69767793036e-02 - 1.57423428102e-02 1.49279448733e-02 1.45226393383e-02 1.45226393383e-02 1.49279448733e-02 1.57423428102e-02 - 1.69767793036e-02 1.86504890434e-02 2.07887392229e-02 2.34202555044e-02 2.65706573512e-02 3.02423286704e-02 - 3.43811654173e-02 3.88462459817e-02 4.34003076052e-02 4.77311231410e-02 5.15101646150e-02 5.44829894560e-02 - 5.65511919643e-02 5.77843769256e-02 5.83399236929e-02 5.83399236929e-02 5.77843769256e-02 5.65511919643e-02 - 5.44829894560e-02 5.15101646150e-02 4.77311231410e-02 4.34003076052e-02 3.88462459817e-02 3.43811654173e-02 - 3.19590319446e-02 2.85763383726e-02 2.56635113913e-02 2.32231030162e-02 2.12421582644e-02 1.97084075068e-02 - 1.86137801375e-02 1.79555609317e-02 1.77355963866e-02 1.79555609317e-02 1.86137801375e-02 1.97084075068e-02 - 2.12421582644e-02 2.32231030162e-02 2.56635113913e-02 2.85763383726e-02 3.19590319446e-02 3.57591480990e-02 - 3.98358227133e-02 4.39402098517e-02 4.77311231410e-02 5.08390344517e-02 5.29846351657e-02 5.41129564364e-02 - 5.44475263977e-02 5.43925934286e-02 5.43239294918e-02 5.43925934286e-02 5.44475263977e-02 5.41129564364e-02 - 5.29846351657e-02 5.08390344517e-02 4.77311231410e-02 4.39402098517e-02 3.98358227133e-02 3.57591480990e-02 - 3.45282284639e-02 3.14127386696e-02 2.87187367840e-02 2.64534808200e-02 2.46187421852e-02 2.32217587400e-02 - 2.22755921268e-02 2.17964249596e-02 2.17964249596e-02 2.22755921268e-02 2.32217587400e-02 2.46187421852e-02 - 2.64534808200e-02 2.87187367840e-02 3.14127386696e-02 3.45282284639e-02 3.80204685260e-02 4.17618689283e-02 - 4.55081727847e-02 4.88987422193e-02 5.15101646150e-02 5.29846351657e-02 5.32152215954e-02 5.24797871309e-02 - 5.13869204668e-02 5.06194135765e-02 5.06194135765e-02 5.13869204668e-02 5.24797871309e-02 5.32152215954e-02 - 5.29846351657e-02 5.15101646150e-02 4.88987422193e-02 4.55081727847e-02 4.17618689283e-02 3.80204685260e-02 - 3.79563421300e-02 3.51127517762e-02 3.26341221073e-02 3.05340710560e-02 2.88348357920e-02 2.75721078901e-02 - 2.67889182249e-02 2.65227612839e-02 2.67889182249e-02 2.75721078901e-02 2.88348357920e-02 3.05340710560e-02 - 3.26341221073e-02 3.51127517762e-02 3.79563421300e-02 4.11328816616e-02 4.45431970579e-02 4.79731106469e-02 - 5.10737783335e-02 5.33923081840e-02 5.44829894560e-02 5.41129564364e-02 5.24797871309e-02 5.02620593726e-02 - 4.83941231678e-02 4.76689314688e-02 4.83941231678e-02 5.02620593726e-02 5.24797871309e-02 5.41129564364e-02 - 5.44829894560e-02 5.33923081840e-02 5.10737783335e-02 4.79731106469e-02 4.45431970579e-02 4.11328816616e-02 - 4.22610610741e-02 3.97029159910e-02 3.74259862301e-02 3.54595415232e-02 3.38635928392e-02 3.27229087590e-02 - 3.21243272248e-02 3.21243272248e-02 3.27229087590e-02 3.38635928392e-02 3.54595415232e-02 3.74259862301e-02 - 3.97029159910e-02 4.22610610741e-02 4.50819394473e-02 4.81082332430e-02 5.11831265828e-02 5.40097122002e-02 - 5.61547897924e-02 5.71251588417e-02 5.65511919643e-02 5.44475263977e-02 5.13869204668e-02 4.83941231678e-02 - 4.65545163206e-02 4.65545163206e-02 4.83941231678e-02 5.13869204668e-02 5.44475263977e-02 5.65511919643e-02 - 5.71251588417e-02 5.61547897924e-02 5.40097122002e-02 5.11831265828e-02 4.81082332430e-02 4.50819394473e-02 - 4.74313143781e-02 4.51323632879e-02 4.29832635915e-02 4.10571769449e-02 3.94908104948e-02 3.84534160516e-02 - 3.80886538087e-02 3.84534160516e-02 3.94908104948e-02 4.10571769449e-02 4.29832635915e-02 4.51323632879e-02 - 4.74313143781e-02 4.98633146719e-02 5.24194501424e-02 5.50251512552e-02 5.74762428735e-02 5.94150808572e-02 - 6.03694423859e-02 5.98878714669e-02 5.77843769256e-02 5.43925934286e-02 5.06194135765e-02 4.76689314688e-02 - 4.65545163206e-02 4.76689314688e-02 5.06194135765e-02 5.43925934286e-02 5.77843769256e-02 5.98878714669e-02 - 6.03694423859e-02 5.94150808572e-02 5.74762428735e-02 5.50251512552e-02 5.24194501424e-02 4.98633146719e-02 - 5.33236907840e-02 5.11403130173e-02 4.89192305177e-02 4.68401774785e-02 4.51877782102e-02 4.42634768270e-02 - 4.42634768270e-02 4.51877782102e-02 4.68401774785e-02 4.89192305177e-02 5.11403130173e-02 5.33236907840e-02 - 5.54167137150e-02 5.74494623672e-02 5.94462807362e-02 6.13334872428e-02 6.28828729732e-02 6.37149803432e-02 - 6.33842515281e-02 6.15702941626e-02 5.83399236929e-02 5.43239294918e-02 5.06194135765e-02 4.83941231678e-02 - 4.83941231678e-02 5.06194135765e-02 5.43239294918e-02 5.83399236929e-02 6.15702941626e-02 6.33842515281e-02 - 6.37149803432e-02 6.28828729732e-02 6.13334872428e-02 5.94462807362e-02 5.74494623672e-02 5.54167137150e-02 - 5.94941697642e-02 5.70612480291e-02 5.43692149489e-02 5.18281863755e-02 4.99825941802e-02 4.93048229800e-02 - 4.99825941802e-02 5.18281863755e-02 5.43692149489e-02 5.70612480291e-02 5.94941697642e-02 6.14923433640e-02 - 6.30873277659e-02 6.44054743742e-02 6.55352798807e-02 6.64284767715e-02 6.68641206041e-02 6.64898780493e-02 - 6.49555724266e-02 6.21334821617e-02 5.83399236929e-02 5.43925934286e-02 5.13869204668e-02 5.02620593726e-02 - 5.13869204668e-02 5.43925934286e-02 5.83399236929e-02 6.21334821617e-02 6.49555724266e-02 6.64898780493e-02 - 6.68641206041e-02 6.64284767715e-02 6.55352798807e-02 6.44054743742e-02 6.30873277659e-02 6.14923433640e-02 - 6.49555724266e-02 6.15702941626e-02 5.77843769256e-02 5.44475263977e-02 5.24797871309e-02 5.24797871309e-02 - 5.44475263977e-02 5.77843769256e-02 6.15702941626e-02 6.49555724266e-02 6.74494907981e-02 6.89793219251e-02 - 6.97522426294e-02 7.00474085615e-02 7.00474085615e-02 6.97522426294e-02 6.89793219251e-02 6.74494907981e-02 - 6.49555724266e-02 6.15702941626e-02 5.77843769256e-02 5.44475263977e-02 5.24797871309e-02 5.24797871309e-02 - 5.44475263977e-02 5.77843769256e-02 6.15702941626e-02 6.49555724266e-02 6.74494907981e-02 6.89793219251e-02 - 6.97522426294e-02 7.00474085615e-02 7.00474085615e-02 6.97522426294e-02 6.89793219251e-02 6.74494907981e-02 - 6.79320857310e-02 6.25800698666e-02 5.70772559013e-02 5.29210396854e-02 5.13723037105e-02 5.29210396854e-02 - 5.70772559013e-02 6.25800698666e-02 6.79320857310e-02 7.19923628057e-02 7.43082663472e-02 7.50510418428e-02 - 7.47020608958e-02 7.37387049341e-02 7.24538631804e-02 7.09081350393e-02 6.89793219251e-02 6.64898780493e-02 - 6.33842515281e-02 5.98878714669e-02 5.65511919643e-02 5.41129564364e-02 5.32152215954e-02 5.41129564364e-02 - 5.65511919643e-02 5.98878714669e-02 6.33842515281e-02 6.64898780493e-02 6.89793219251e-02 7.09081350393e-02 - 7.24538631804e-02 7.37387049341e-02 7.47020608958e-02 7.50510418428e-02 7.43082663472e-02 7.19923628057e-02 - 6.60504635380e-02 5.79103146750e-02 5.07010770424e-02 4.64751950426e-02 4.64751950426e-02 5.07010770424e-02 - 5.79103146750e-02 6.60504635380e-02 7.30418134594e-02 7.75631573239e-02 7.93709590427e-02 7.90236437036e-02 - 7.73458021392e-02 7.50243106749e-02 7.24538631804e-02 6.97522426294e-02 6.68641206041e-02 6.37149803432e-02 - 6.03694423859e-02 5.71251588417e-02 5.44829894560e-02 5.29846351657e-02 5.29846351657e-02 5.44829894560e-02 - 5.71251588417e-02 6.03694423859e-02 6.37149803432e-02 6.68641206041e-02 6.97522426294e-02 7.24538631804e-02 - 7.50243106749e-02 7.73458021392e-02 7.90236437036e-02 7.93709590427e-02 7.75631573239e-02 7.30418134594e-02 - 5.76200322747e-02 4.70389926376e-02 3.93541671489e-02 3.65582592974e-02 3.93541671489e-02 4.70389926376e-02 - 5.76200322747e-02 6.83266751007e-02 7.66122811094e-02 8.11458755837e-02 8.20645507484e-02 8.04073084192e-02 - 7.73458021392e-02 7.37387049341e-02 7.00474085615e-02 6.64284767715e-02 6.28828729732e-02 5.94150808572e-02 - 5.61547897924e-02 5.33923081840e-02 5.15101646150e-02 5.08390344517e-02 5.15101646150e-02 5.33923081840e-02 - 5.61547897924e-02 5.94150808572e-02 6.28828729732e-02 6.64284767715e-02 7.00474085615e-02 7.37387049341e-02 - 7.73458021392e-02 8.04073084192e-02 8.20645507484e-02 8.11458755837e-02 7.66122811094e-02 6.83266751007e-02 - 4.35588929466e-02 3.25101129901e-02 2.63856510811e-02 2.63856510811e-02 3.25101129901e-02 4.35588929466e-02 - 5.70355201353e-02 6.96179820017e-02 7.84511058955e-02 8.23828782457e-02 8.20645507484e-02 7.90236437036e-02 - 7.47020608958e-02 7.00474085615e-02 6.55352798807e-02 6.13334872428e-02 5.74762428735e-02 5.40097122002e-02 - 5.10737783335e-02 4.88987422193e-02 4.77311231410e-02 4.77311231410e-02 4.88987422193e-02 5.10737783335e-02 - 5.40097122002e-02 5.74762428735e-02 6.13334872428e-02 6.55352798807e-02 7.00474085615e-02 7.47020608958e-02 - 7.90236437036e-02 8.20645507484e-02 8.23828782457e-02 7.84511058955e-02 6.96179820017e-02 5.70355201353e-02 - 2.77489957459e-02 1.87771308641e-02 1.56860392578e-02 1.87771308641e-02 2.77489957459e-02 4.13123485649e-02 - 5.66663226477e-02 7.00400365127e-02 7.84511058955e-02 8.11458755837e-02 7.93709590427e-02 7.50510418428e-02 - 6.97522426294e-02 6.44054743742e-02 5.94462807362e-02 5.50251512552e-02 5.11831265828e-02 4.79731106469e-02 - 4.55081727847e-02 4.39402098517e-02 4.34003076052e-02 4.39402098517e-02 4.55081727847e-02 4.79731106469e-02 - 5.11831265828e-02 5.50251512552e-02 5.94462807362e-02 6.44054743742e-02 6.97522426294e-02 7.50510418428e-02 - 7.93709590427e-02 8.11458755837e-02 7.84511058955e-02 7.00400365127e-02 5.66663226477e-02 4.13123485649e-02 - 1.46090879135e-02 9.13060134292e-03 9.13060134292e-03 1.46090879135e-02 2.54935088837e-02 4.05694134160e-02 - 5.66663226477e-02 6.96179820017e-02 7.66122811094e-02 7.75631573239e-02 7.43082663472e-02 6.89793219251e-02 - 6.30873277659e-02 5.74494623672e-02 5.24194501424e-02 4.81082332430e-02 4.45431970579e-02 4.17618689283e-02 - 3.98358227133e-02 3.88462459817e-02 3.88462459817e-02 3.98358227133e-02 4.17618689283e-02 4.45431970579e-02 - 4.81082332430e-02 5.24194501424e-02 5.74494623672e-02 6.30873277659e-02 6.89793219251e-02 7.43082663472e-02 - 7.75631573239e-02 7.66122811094e-02 6.96179820017e-02 5.66663226477e-02 4.05694134160e-02 2.54935088837e-02 - 6.32692063078e-03 4.10298626852e-03 6.32692063078e-03 1.33581335706e-02 2.54935088837e-02 4.13123485649e-02 - 5.70355201353e-02 6.83266751007e-02 7.30418134594e-02 7.19923628057e-02 6.74494907981e-02 6.14923433640e-02 - 5.54167137150e-02 4.98633146719e-02 4.50819394473e-02 4.11328816616e-02 3.80204685260e-02 3.57591480990e-02 - 3.43811654173e-02 3.39176800802e-02 3.43811654173e-02 3.57591480990e-02 3.80204685260e-02 4.11328816616e-02 - 4.50819394473e-02 4.98633146719e-02 5.54167137150e-02 6.14923433640e-02 6.74494907981e-02 7.19923628057e-02 - 7.30418134594e-02 6.83266751007e-02 5.70355201353e-02 4.13123485649e-02 2.54935088837e-02 1.33581335706e-02 diff --git a/source/source_io/test_serial/write_bands_test.cpp b/source/source_io/test_serial/write_bands_test.cpp new file mode 100644 index 0000000000..f03e27719e --- /dev/null +++ b/source/source_io/test_serial/write_bands_test.cpp @@ -0,0 +1,79 @@ +#include "gtest/gtest.h" +#include "gmock/gmock.h" +#include "source_io/module_energy/write_bands.h" +#include "source_cell/parallel_kpoints.h" +#include "source_cell/klist.h" + + +/************************************************ + * unit test of ns + ***********************************************/ + +/** + * - Tested Functions: + * - nscf_bands() + * - output band structure in nscf calculation + */ + +class BandTest : public ::testing::Test +{ +protected: + void SetUp() override { + // Set up test data + is = 0; + out_band_dir = "test_band.dat"; + nks = 2; + nband = 3; + fermie = 0.0; + ekb.create(nks, nband); + ekb(0,0) = -2.0; + ekb(0,1) = -1.0; + ekb(0,2) = 0.0; + ekb(1,0) = 1.0; + ekb(1,1) = 2.0; + ekb(1,2) = 3.0; + kv = new K_Vectors; + // specify the kpoints + kv->kvec_c.resize(nks); + kv->kvec_c[0] = ModuleBase::Vector3(0.0, 0.0, 0.0); + kv->kvec_c[1] = ModuleBase::Vector3(1.0, 0.0, 0.0); + kv->isk.resize(nks); + kv->isk[0] = 0; + kv->isk[1] = 1; + kv->kl_segids.resize(nks); + kv->kl_segids[0] = 0; + kv->kl_segids[1] = 0; + } + + void TearDown() override { + // Clean up test data + delete kv; + std::remove(out_band_dir.c_str()); + } + + // Test data + int is; + std::string out_band_dir; + int nks; + int nband; + double fermie; + ModuleBase::matrix ekb; + K_Vectors* kv; +}; + +TEST_F(BandTest, nscf_bands) +{ + kv->para_k.nks_pool.resize(1); + kv->para_k.nks_pool[0] = nks; + kv->para_k.nkstot_np = nks; + kv->para_k.nks_np = nks; + // Call the function to be tested + ModuleIO::nscf_bands(is, out_band_dir, nband, fermie, 8, ekb, *kv); + + // Check the output file + std::ifstream ifs(out_band_dir); + std::string str((std::istreambuf_iterator(ifs)),std::istreambuf_iterator()); + ASSERT_TRUE(ifs.is_open()); + EXPECT_THAT(str, testing::HasSubstr(" 1 0.00000000 -27.21139600 -13.60569800 0.00000000")); + ifs.close(); +} diff --git a/source/source_io/winput.cpp b/source/source_io/winput.cpp deleted file mode 100644 index 653a3277f8..0000000000 --- a/source/source_io/winput.cpp +++ /dev/null @@ -1,770 +0,0 @@ -#include "winput.h" - -#ifdef __MPI -#include "mpi.h" -#endif - -#include "source_pw/module_pwdft/global.h" -#include "source_io/module_parameter/parameter.h" -#include -#include - -std::string winput::target; // add 2008-06-04 -std::string winput::wlmr_dir; -double winput::rcut; // a.u. -bool winput::before_iter; //"1" stop before iteration -bool winput::after_iter; -bool winput::begin_stop_flag; -bool winput::end_flag; -std::string winput::wf_type; -bool winput::build_wf; -int winput::imp_pao = 0; -bool winput::b_out_wf; -bool winput::b_fftwan; // add 2008-07-20 -bool winput::b_plot_build; // add 2008-06-04 -bool winput::b_plot_atomic; // add 2008-06-04 -std::string winput::trial; //"atomic" or "gauss" -double winput::bs; // parameters for gauss orbit -double winput::bp; -double winput::px; -double winput::g1; -double winput::g2; -double winput::trunc_ao; -double winput::trunc_wlmr; -double winput::trunc_wan; -double winput::fermi_t; -double winput::clm2_lowest; -int winput::bloch_begin; -int winput::bloch_end; -int winput::sph_proj; //"1" spherical project,"2": first minus atomic orbitals -bool winput::sph_type; // 0:Rewrite 1:Skip -bool winput::b_recon; //"1" reconstruction of wannier function -bool winput::b_mix_wf; // add 2008-06-15 -double winput::mix_wf; // add 2008-06-13 -bool winput::recon_wanq; -bool winput::speed_mode; -bool winput::b_near_atom; -double winput::range0; -double winput::range1; -int winput::L_start; -int winput::L_end; -int winput::atom_start; -int winput::atom_end; -bool winput::plot_wanq; // add 2008-01-26 -std::string winput::plot_option; //(110),[110] etc. -int winput::n_unitcell; // number of unitcell to plot -bool winput::out_all; -int winput::out_chg; -std::string winput::charge_type; -bool winput::cal_bands; // for wan wan basis + wan charge -bool winput::cal_bands2; // for semi-wan ;pw basis + wan charge add 2008-4-11 -bool winput::cal_dos; -int winput::mesh; -double winput::dr; - -bool winput::no_center; -int winput::sum_lm; -bool winput::compare_atomic; -int winput::out_spillage; -std::string winput::spillage_outdir = "./"; // mohan add 2010-06-07 - -winput::winput() -{ -} - -winput::~winput() -{ -} - -void winput::Init(const std::string& fn) -{ - Default(); - //========================================== - // First readin and check value in root cpu - // and then bcast value - //========================================== - Read(fn); - Check(); - -#ifdef __MPI - Bcast(); -#endif - return; -} - -void winput::Read(const std::string& fn) -{ - ModuleBase::TITLE("winput", "Read"); - - if (GlobalV::MY_RANK != 0) - { - return; - } - - std::ifstream ifs(fn.c_str(), std::ios::in); - if (!ifs) - { - return; - } - else - { - GlobalV::ofs_running << "Open file : " << fn << std::endl; - } - - ifs.clear(); - ifs.seekg(0); - - char word[80]; - int ierr = 0; - ifs.rdstate(); - - while (ifs.good()) - { - ifs >> word; - ifs.ignore(75, '\n'); - - if (std::strcmp(word, "WANNIER_PARAMETERS") == 0) - { - ierr = 1; - break; - } - - ifs.rdstate(); - } - - if (ierr == 0) - { - ModuleBase::WARNING("winput::Read", "error parameteters title, should be WANNIER_PARAMETERS"); - } - - ifs.rdstate(); - - while (ifs.good()) - { - ifs >> word; - for (auto& i: word) - { - i = tolower(i); - } - // parameters for users - - if (strcmp("target", word) == 0) - { - read_value(ifs, target); - } - else if (strcmp("trial", word) == 0) - { - read_value(ifs, trial); - } - - else if (strcmp("near_atom", word) == 0) - { - read_value(ifs, b_near_atom); - } - else if (strcmp("range0", word) == 0) - { - read_value(ifs, range0); - } - else if (strcmp("range1", word) == 0) - { - read_value(ifs, range1); - } - - else if (strcmp("wlmr_dir", word) == 0) - { - read_value(ifs, wlmr_dir); - } - else if (strcmp("no_center", word) == 0) - { - read_value(ifs, no_center); - } - else if (strcmp("sph_proj", word) == 0) - { - read_value(ifs, sph_proj); - } - else if (strcmp("sph_type", word) == 0) - { - read_value(ifs, sph_type); - } - else if (strcmp("b_recon", word) == 0) - { - read_value(ifs, b_recon); - } - else if (strcmp("speed_mode", word) == 0) - { - read_value(ifs, speed_mode); - } - else if (strcmp("recon_wanq", word) == 0) - { - read_value(ifs, recon_wanq); - } - else if (strcmp("b_mix_wf", word) == 0) - { - read_value(ifs, b_mix_wf); - } - else if (strcmp("b_near_atom", word) == 0) - { - read_value(ifs, b_near_atom); - } - else if (strcmp("mix_wf", word) == 0) - { - read_value(ifs, mix_wf); - } - - else if (strcmp("wf_type", word) == 0) - { - read_value(ifs, wf_type); - } - else if (strcmp("build_wf", word) == 0) - { - read_value(ifs, build_wf); - } - else if (strcmp("imp_pao", word) == 0) - { - read_value(ifs, imp_pao); - } - else if (strcmp("b_out_wf", word) == 0) - { - read_value(ifs, b_out_wf); - } - else if (strcmp("b_plot_build", word) == 0) - { - read_value(ifs, b_plot_build); - } - else if (strcmp("b_plot_atomic", word) == 0) - { - read_value(ifs, b_plot_atomic); - } - else if (strcmp("plot_option", word) == 0) - { - read_value(ifs, plot_option); - } - else if (strcmp("n_unitcell", word) == 0) - { - read_value(ifs, n_unitcell); - } - - else if (strcmp("l_start", word) == 0) - { - read_value(ifs, L_start); - } - else if (strcmp("l_end", word) == 0) - { - read_value(ifs, L_end); - } - else if (strcmp("atom_start", word) == 0) - { - read_value(ifs, atom_start); - } - else if (strcmp("atom_end", word) == 0) - { - read_value(ifs, atom_end); - } - - else if (strcmp("trunc_ao", word) == 0) - { - read_value(ifs, trunc_ao); - } - else if (strcmp("trunc_wlmr", word) == 0) - { - read_value(ifs, trunc_wlmr); - } - else if (strcmp("trunc_wan", word) == 0) - { - read_value(ifs, trunc_wan); - } - else if (strcmp("fermi_t", word) == 0) - { - read_value(ifs, fermi_t); - } - else if (strcmp("clm2_lowest", word) == 0) - { - read_value(ifs, clm2_lowest); - } - else if (strcmp("rcut", word) == 0) - { - read_value(ifs, rcut); - } - - else if (strcmp("plotflag", word) == 0) - { - read_value(ifs, plot_option); - } - else if (strcmp("unit", word) == 0) - { - read_value(ifs, n_unitcell); - } - - else if (strcmp("bs", word) == 0) - { - read_value(ifs, bs); - } - else if (strcmp("bp", word) == 0) - { - read_value(ifs, bp); - } - else if (strcmp("px", word) == 0) - { - read_value(ifs, px); - } - else if (strcmp("g1", word) == 0) - { - read_value(ifs, g1); - } - else if (strcmp("g2", word) == 0) - { - read_value(ifs, g2); - } - - else if (strcmp("before_iter", word) == 0) - { - read_value(ifs, before_iter); - } - else if (strcmp("after_iter", word) == 0) - { - read_value(ifs, after_iter); - } - - else if (strcmp("begin_stop_flag", word) == 0) - { - read_value(ifs, begin_stop_flag); - } - else if (strcmp("end_flag", word) == 0) - { - read_value(ifs, end_flag); - } - - else if (strcmp("out_all", word) == 0) - { - read_value(ifs, out_all); - } - else if (strcmp("out_chg", word) == 0) - { - read_value(ifs, out_chg); - } - else if (strcmp("charge_type", word) == 0) - { - read_value(ifs, charge_type); - } - else if (strcmp("compare_atomic", word) == 0) - { - read_value(ifs, compare_atomic); - } - // add 2008-1-26 - else if (strcmp("plot_wanq", word) == 0) - { - read_value(ifs, plot_wanq); - } - - // add 2008-3-10 - else if (strcmp("cal_bands", word) == 0) - { - read_value(ifs, cal_bands); - } - else if (strcmp("cal_bands2", word) == 0) - { - read_value(ifs, cal_bands2); - } - else if (strcmp("chgtype", word) == 0) - { - read_value(ifs, charge_type); - } - else if (strcmp("cal_dos", word) == 0) - { - read_value(ifs, cal_dos); - } - else if (strcmp("sum_lm", word) == 0) - { - read_value(ifs, sum_lm); - } - - // add 2008-3-17 - else if (strcmp("bloch_begin", word) == 0) - { - read_value(ifs, bloch_begin); - } - else if (strcmp("bloch_end", word) == 0) - { - read_value(ifs, bloch_end); - } - - else if (strcmp("mesh", word) == 0) - { - read_value(ifs, mesh); - } - else if (strcmp("dr", word) == 0) - { - read_value(ifs, dr); - } - - // add 2008-07-20 - else if (strcmp("b_fftwan", word) == 0) - { - read_value(ifs, b_fftwan); - } - // add 2009-04-19 - else if (strcmp("out_spillage", word) == 0) - { - read_value(ifs, out_spillage); - } - // add 2010-06-07 - else if (strcmp("spillage_outdir", word) == 0) - { - read_value(ifs, spillage_outdir); - } - else - { - if (word[0] != '#' && word[0] != '/') - { - std::cout << " The parameter name '" << word << "' is not used." << std::endl; - } - ifs.ignore(150, '\n'); - } - - ifs.rdstate(); - - if (ifs.eof() != 0) - { - break; - } - else if (ifs.bad() != 0) - { - std::cout << "bad parameter. " << std::endl; - break; - } - else if (ifs.fail() != 0) - { - std::cout << " bad parameter. " << std::endl; - break; - } - else if (ifs.good() == 0) - { - break; - } - } -} - -void winput::Default() -{ - //======================== - // part1 : control - //======================== - target = "test"; - wlmr_dir = "./"; - rcut = 10; - before_iter = false; - after_iter = false; - begin_stop_flag = false; - end_flag = false; - - //======================= - // part2 : Build wf - //======================= - wf_type = "V"; - build_wf = false; - imp_pao = 0; - b_out_wf = false; - b_fftwan = false; - b_plot_build = false; - b_plot_atomic = false; - //========================= - // part2.1 select trial wf - //========================= - trial = "atomic"; // atomic || gauss - bs = 2.5; // - bp = 2.0; // gausss para,eters - px = 2.0; // - g1 = 3.0; // D orbital center - g2 = 3.0; // D orbital center - //======================= - // part2.2 select bands - //======================= - bloch_begin = 0; - bloch_end = 0; - - //======================== - // part3: spheri & recon - //======================== - no_center = false; - sph_proj = 0; - sph_type = false; // Rewrite mode - b_recon = false; - speed_mode = true; - recon_wanq = false; - b_mix_wf = false; - mix_wf = 0; - //=============================== - // part2.1: multi-center shperi - //=============================== - b_near_atom = false; - range0 = 0; - range1 = 0; - //========================== - // part2.2: select L,atom - //========================== - L_start = 0; - L_end = 2; - atom_start = 0; - atom_end = 1; - //======================= - // part2.3: truncation - //======================= - trunc_ao = 6; - trunc_wlmr = 14; - trunc_wan = 6; - fermi_t = 1; - clm2_lowest = 10e-8; - - //============================== - // part3 : Plot wavefunction - //============================== - plot_wanq = false; // add 2008-1-26 - plot_option = "(110)"; - n_unitcell = 2; - - //=============================== - // part4 : out_all || out_charge - //=============================== - out_all = false; - out_chg = 0; - compare_atomic = false; - - //======================================= - // part5 : other functions: bands & dos - //======================================= - // add 2008-3-10 - cal_bands = false; - cal_bands2 = false; - charge_type = "planewave"; - cal_dos = false; - - out_spillage = 0; - spillage_outdir = "./"; - - // add 2008-3-17 - //========================================= - // part6 : Uniform mesh ,but not used now - //========================================= - mesh = 999; - dr = 0.01; - - return; -} - -void winput::Check() -{ - if (GlobalV::MY_RANK != 0) - return; - - if (PARAM.inp.calculation == "nscf") - { - if (out_chg) - { - out_chg = false; - ModuleBase::GlobalFunc::AUTO_SET("winput::out_chg", out_chg); - } - } - //===================== - // calculate sum_lm - //===================== - for (int il = L_start; il <= L_end; il++) - { - sum_lm += il * 2 + 1; - } - - if (out_chg == true || cal_bands == true || out_all == true || cal_bands2 == true || cal_dos == true) - { - end_flag = true; - } - - if (b_plot_build == true || b_plot_atomic == true) - { - if (b_plot_build == true && b_plot_atomic == true) - { - ModuleBase::WARNING_QUIT("winput::Check()", "Plot atomic or plot build wannier functions?"); - } - else - { - b_fftwan = true; - ModuleBase::GlobalFunc::AUTO_SET("b_fftwan", b_fftwan); - } - } - - return; -} - -void winput::Print(const std::string& fn) -{ - if (GlobalV::MY_RANK != 0) - { - return; - } - - std::ofstream ofs(fn.c_str()); - ofs << std::setiosflags(std::ios::left); - ofs << "WANNIER_PARAMETERS" << std::endl; - - ofs << "#Parameters (General)" << std::endl; - ModuleBase::GlobalFunc::OUTP(ofs, "target", target); - ModuleBase::GlobalFunc::OUTP(ofs, "wlmr_dir", wlmr_dir); - ModuleBase::GlobalFunc::OUTP(ofs, "rcut", rcut); - ModuleBase::GlobalFunc::OUTP(ofs, "before_iter", before_iter); - ModuleBase::GlobalFunc::OUTP(ofs, "after_iter", after_iter); - ModuleBase::GlobalFunc::OUTP(ofs, "begin_stop_flag", begin_stop_flag); - ModuleBase::GlobalFunc::OUTP(ofs, "end_flag", end_flag); - - ofs << "#Parameters (Build Wannier Functions)" << std::endl; - ModuleBase::GlobalFunc::OUTP(ofs, "wf_type", wf_type); - ModuleBase::GlobalFunc::OUTP(ofs, "build_wf", build_wf); - ModuleBase::GlobalFunc::OUTP(ofs, "imp_pao", imp_pao); - ModuleBase::GlobalFunc::OUTP(ofs, "b_out_wf", b_out_wf); - ModuleBase::GlobalFunc::OUTP(ofs, "b_fftwan", b_fftwan); - ModuleBase::GlobalFunc::OUTP(ofs, "b_plot_build", b_plot_build); - ModuleBase::GlobalFunc::OUTP(ofs, "b_plot_atomic", b_plot_atomic); - - ofs << "#Parameters (Select trial wave functions)" << std::endl; - ModuleBase::GlobalFunc::OUTP(ofs, "trial", trial); - ModuleBase::GlobalFunc::OUTP(ofs, "bs", bs); - ModuleBase::GlobalFunc::OUTP(ofs, "bp", bp); - ModuleBase::GlobalFunc::OUTP(ofs, "px", px); - ModuleBase::GlobalFunc::OUTP(ofs, "g1", g1); - ModuleBase::GlobalFunc::OUTP(ofs, "g2", g2); - - ofs << "#Parameters (Select bands)" << std::endl; - ModuleBase::GlobalFunc::OUTP(ofs, "bloch_begin", bloch_begin); - ModuleBase::GlobalFunc::OUTP(ofs, "bloch_end", bloch_end); - - ofs << "#Parameters (Spheri & recon)" << std::endl; - ModuleBase::GlobalFunc::OUTP(ofs, "no_center", no_center); - ModuleBase::GlobalFunc::OUTP(ofs, "sph_proj", sph_proj); - ModuleBase::GlobalFunc::OUTP(ofs, "sph_type", sph_type); - ModuleBase::GlobalFunc::OUTP(ofs, "b_recon", b_recon); - ModuleBase::GlobalFunc::OUTP(ofs, "speed_mode", speed_mode); - ModuleBase::GlobalFunc::OUTP(ofs, "recon_wanq", recon_wanq); - ModuleBase::GlobalFunc::OUTP(ofs, "b_mix_wf", b_mix_wf); - ModuleBase::GlobalFunc::OUTP(ofs, "mix_wf", mix_wf); - - ofs << "#Parameters (Multi-center spheri)" << std::endl; - ModuleBase::GlobalFunc::OUTP(ofs, "b_near_atom", b_near_atom); - ModuleBase::GlobalFunc::OUTP(ofs, "range0", range0); - ModuleBase::GlobalFunc::OUTP(ofs, "range1", range1); - - ofs << "#Parameters (Select L, atom)" << std::endl; - ModuleBase::GlobalFunc::OUTP(ofs, "L_start", L_start); - ModuleBase::GlobalFunc::OUTP(ofs, "L_end", L_end); - ModuleBase::GlobalFunc::OUTP(ofs, "atom_start", atom_start); - ModuleBase::GlobalFunc::OUTP(ofs, "atom_end", atom_end); - - ofs << "#Parameters (Truncation)" << std::endl; - ModuleBase::GlobalFunc::OUTP(ofs, "trunc_ao", trunc_ao); - ModuleBase::GlobalFunc::OUTP(ofs, "trunc_wlmr", trunc_wlmr); - ModuleBase::GlobalFunc::OUTP(ofs, "trunc_wan", trunc_wan); - ModuleBase::GlobalFunc::OUTP(ofs, "fermi_t", fermi_t); - ModuleBase::GlobalFunc::OUTP(ofs, "clm2_lowest", clm2_lowest); - - ofs << "#Parameters (Plot wave functions)" << std::endl; - ModuleBase::GlobalFunc::OUTP(ofs, "plot_wanq", plot_wanq); - ModuleBase::GlobalFunc::OUTP(ofs, "plot_option", plot_option); - ModuleBase::GlobalFunc::OUTP(ofs, "n_unitcell", n_unitcell); - - ofs << "#Parameters (out_all || out_chg)" << std::endl; - ModuleBase::GlobalFunc::OUTP(ofs, "out_all", out_all); - ModuleBase::GlobalFunc::OUTP(ofs, "out_chg", out_chg); - ModuleBase::GlobalFunc::OUTP(ofs, "compare_atomic", compare_atomic); - - ofs << "#Parameters (Other functions: bands & dos)" << std::endl; - ModuleBase::GlobalFunc::OUTP(ofs, "cal_bands", cal_bands); - ModuleBase::GlobalFunc::OUTP(ofs, "cal_bands2", cal_bands2); - ModuleBase::GlobalFunc::OUTP(ofs, "charge_type", charge_type); - ModuleBase::GlobalFunc::OUTP(ofs, "cal_dos", cal_dos); - ModuleBase::GlobalFunc::OUTP(ofs, "out_spillage", out_spillage); - ModuleBase::GlobalFunc::OUTP(ofs, "spillage_outdir", spillage_outdir); - - ofs << "#Parameters (Uniform mesh)" << std::endl; - ModuleBase::GlobalFunc::OUTP(ofs, "mesh", mesh); - ModuleBase::GlobalFunc::OUTP(ofs, "dr", dr); - - ModuleBase::GlobalFunc::OUTP(ofs, "sum_lm", sum_lm); - - ofs.close(); - return; -} - -#include "source_base/parallel_common.h" -#ifdef __MPI -void winput::Bcast() -{ - Parallel_Common::bcast_string(target); - Parallel_Common::bcast_bool(before_iter); - Parallel_Common::bcast_bool(after_iter); - Parallel_Common::bcast_bool(begin_stop_flag); - Parallel_Common::bcast_bool(end_flag); - - Parallel_Common::bcast_double(rcut); - Parallel_Common::bcast_double(trunc_ao); - Parallel_Common::bcast_double(trunc_wlmr); - Parallel_Common::bcast_double(trunc_wan); - - Parallel_Common::bcast_string(wlmr_dir); - Parallel_Common::bcast_string(wf_type); - Parallel_Common::bcast_bool(build_wf); - Parallel_Common::bcast_int(imp_pao); - Parallel_Common::bcast_bool(b_out_wf); - Parallel_Common::bcast_bool(b_fftwan); - Parallel_Common::bcast_bool(b_plot_build); - Parallel_Common::bcast_bool(b_plot_atomic); - - Parallel_Common::bcast_string(trial); - Parallel_Common::bcast_double(bs); - Parallel_Common::bcast_double(bp); - Parallel_Common::bcast_double(px); - Parallel_Common::bcast_double(g1); - Parallel_Common::bcast_double(g2); - - Parallel_Common::bcast_int(bloch_begin); - Parallel_Common::bcast_int(bloch_end); - Parallel_Common::bcast_double(fermi_t); - Parallel_Common::bcast_double(clm2_lowest); - - Parallel_Common::bcast_int(sph_proj); - Parallel_Common::bcast_bool(sph_type); - - Parallel_Common::bcast_bool(b_recon); - Parallel_Common::bcast_bool(b_mix_wf); - Parallel_Common::bcast_double(mix_wf); - Parallel_Common::bcast_bool(recon_wanq); - - Parallel_Common::bcast_bool(speed_mode); - - Parallel_Common::bcast_bool(b_near_atom); - Parallel_Common::bcast_double(range0); - Parallel_Common::bcast_double(range1); - - Parallel_Common::bcast_int(L_start); - Parallel_Common::bcast_int(L_end); - Parallel_Common::bcast_int(atom_start); - Parallel_Common::bcast_int(atom_end); - - Parallel_Common::bcast_bool(plot_wanq); - Parallel_Common::bcast_string(plot_option); - Parallel_Common::bcast_int(n_unitcell); - Parallel_Common::bcast_bool(out_all); - Parallel_Common::bcast_int(out_chg); - - Parallel_Common::bcast_string(charge_type); - Parallel_Common::bcast_bool(cal_bands); - Parallel_Common::bcast_bool(cal_bands2); - Parallel_Common::bcast_bool(cal_dos); - Parallel_Common::bcast_int(mesh); - Parallel_Common::bcast_double(dr); - - Parallel_Common::bcast_int(out_spillage); - Parallel_Common::bcast_string(spillage_outdir); - - Parallel_Common::bcast_bool(no_center); - Parallel_Common::bcast_int(sum_lm); - Parallel_Common::bcast_bool(compare_atomic); - - return; -} -#endif diff --git a/source/source_io/winput.h b/source/source_io/winput.h deleted file mode 100644 index 232edc113d..0000000000 --- a/source/source_io/winput.h +++ /dev/null @@ -1,153 +0,0 @@ -//========================================================== -// AUTHOR : mohan -// DATE : 2008-11-08 -// Last Update: 2010-06-07 -//========================================================== -#ifndef WINPUT_H -#define WINPUT_H - -#include -#include - -//========================================================== -// CLASS : -// NAME : winput -// ( Readin wannier parameters. -// Check wannier parameters. -// Print wannier parameters ) -//========================================================== -class winput -{ -public: - - winput(); - ~winput(); - -//========================================================== -// MEMBER FUNCTIONS : -// NAME : target( no use now) -// NAME : before_iter ( call wannier::runnning ) -// NAME : after_iter ( call wannier::running ) -// NAME : begin_stop_flag ( only use readin information , -// stop at the very beginning ). -// NAME : end_flag ( output data, etc. ) -//========================================================== - static std::string target; - static bool before_iter; - static bool after_iter; - static bool begin_stop_flag; - static bool end_flag; - -//========================================================== -// MEMBER FUNCTIONS : -// NAME : rcut( PAO cutoff ) -// NAME : trunc_ao ( PAO cutoff ) -// NAME : trunc_wlmr ( 1D Radial wave function cutoff ) -// NAME : trunc_wan ( 3D wannier function cutoff ) -//========================================================== - static double rcut; - static double trunc_ao; - static double trunc_wlmr; - static double trunc_wan; - -//========================================================== -// MEMBER FUNCTIONS : -// NAME : wlmr_dir( if reconstruction , this is wlmr adress) -// NAME : wf_type ( type of wannier functions) -// NAME : build_wf -// NAME : imp_pao -// NAME : b_out_wf -// NAME : b_fftwan -// NAME : b_plot_build -// NAME : b_plot_atomic -//========================================================== - static std::string wlmr_dir; - static std::string wf_type; - static bool build_wf; - static int imp_pao; - static bool b_out_wf; - static bool b_fftwan;//add 2008-07-20 - static bool b_plot_build;//add 2008-06-04 - static bool b_plot_atomic;//add 2008-06-04 - -//========================================================== -// MEMBER FUNCTIONS : -// NAME : trial ( trial wave functions , "atomic" or "gauss") -// NAME : bs(parameters for gauss orbit) -// NAME : bp -// NAME : px -// NAME : g1 -// NAME : g2 -//========================================================== - static std::string trial;//"atomic" or "gauss" - static double bs;//parameters for gauss orbit - static double bp; - static double px; - static double g1; - static double g2; - - static int bloch_begin; - static int bloch_end; - - static double fermi_t; - static double clm2_lowest; - - static int sph_proj;//"1" spherical project,"2": first minus atomic orbitals - static bool sph_type;//0:Rewrite 1:Skip - - static bool b_recon;//"1" reconstruction of wannier function - static bool b_mix_wf;// add 2008-06-15 - static double mix_wf;//add 2008-06-13 - static bool recon_wanq; - - static bool speed_mode; - - static bool b_near_atom; - static double range0; - static double range1; - - static int L_start; - static int L_end; - static int atom_start; - static int atom_end; - - static bool plot_wanq;//add 2008-01-26 - static std::string plot_option;//(110),[110] etc. - static int n_unitcell;//number of unitcell to plot - static bool out_all; - static int out_chg; - static std::string charge_type; - static bool cal_bands; //for wan wan basis + wan charge - static bool cal_bands2;//for semi-wan ;pw basis + wan charge add 2008-4-11 - static bool cal_dos; - static int mesh; - static double dr; - - static bool no_center; - static int sum_lm; - static bool compare_atomic; - - static int out_spillage; // output spillage file. - static std::string spillage_outdir; - - static void Init(const std::string &fn); - static void Print(const std::string &fn); -private: - - template - static void read_value(std::ifstream &ifs, T &var) - { - ifs >> var; - ifs.ignore(75, '\n'); - return; - } - - static void Read(const std::string &fn); - static void Default(); - static void Check(void); -#ifdef __MPI - static void Bcast(); -#endif -}; - -#endif diff --git a/source/source_io/write_HS.hpp b/source/source_io/write_HS.hpp deleted file mode 100644 index c08771ff4e..0000000000 --- a/source/source_io/write_HS.hpp +++ /dev/null @@ -1,285 +0,0 @@ -#include "write_HS.h" - -#include "source_io/module_parameter/parameter.h" -#include "source_base/parallel_reduce.h" -#include "source_base/timer.h" -#include "source_cell/module_neighbor/sltk_grid_driver.h" -#include "source_pw/module_pwdft/global.h" -#include "source_io/filename.h" // use filename_output function - - -template -void ModuleIO::write_hsk( - const std::string &global_out_dir, - const int nspin, - const int nks, - const int nkstot, - const std::vector &ik2iktot, - const std::vector &isk, - hamilt::Hamilt* p_hamilt, - const Parallel_Orbitals &pv, - const bool gamma_only, - const bool out_app_flag, - const int istep, - std::ofstream &ofs_running) -{ - - ofs_running << " >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>" - ">>>>>>>>>>>>>>>>>>>>>>>>>" << std::endl; - ofs_running << " | " - " |" << std::endl; - ofs_running << " | Write Hamiltonian matrix H(k) or overlap matrix S(k) in numerical |" << std::endl; - ofs_running << " | atomic orbitals at each k-point. |" << std::endl; - ofs_running << " | " - " |" << std::endl; - ofs_running << " >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>" - ">>>>>>>>>>>>>>>>>>>>>>>>>" << std::endl; - ofs_running << "\n WRITE H(k) OR S(k)" << std::endl; - - for (int ik = 0; ik < nks; ++ik) - { - p_hamilt->updateHk(ik); - bool bit = false; // LiuXh, 2017-03-21 - // if set bit = true, there would be error in soc-multi-core - // calculation, noted by zhengdy-soc - - hamilt::MatrixBlock h_mat; - hamilt::MatrixBlock s_mat; - - p_hamilt->matrix(h_mat, s_mat); - - const int out_label=1; // 1: .txt, 2: .dat - - std::string h_fn = ModuleIO::filename_output(global_out_dir, - "hk","nao",ik,ik2iktot,nspin,nkstot, - out_label,out_app_flag,gamma_only,istep); - - ModuleIO::save_mat(istep, - h_mat.p, - PARAM.globalv.nlocal, - bit, - PARAM.inp.out_mat_hs[1], - 1, - out_app_flag, - h_fn, - pv, - GlobalV::DRANK); - - // mohan note 2025-06-02 - // for overlap matrix, the two spin channels yield the same matrix - // so we only need to print matrix from one spin channel. - const int current_spin = isk[ik]; - if(current_spin == 1) - { - continue; - } - - std::string s_fn = ModuleIO::filename_output(global_out_dir, - "sk","nao",ik,ik2iktot,nspin,nkstot, - out_label,out_app_flag,gamma_only,istep); - - ofs_running << " The output filename is " << s_fn << std::endl; - - ModuleIO::save_mat(istep, - s_mat.p, - PARAM.globalv.nlocal, - bit, - PARAM.inp.out_mat_hs[1], - 1, - out_app_flag, - s_fn, - pv, - GlobalV::DRANK); - } // end ik -} - - -// output a square matrix -template -void ModuleIO::save_mat(const int istep, - const T* mat, - const int dim, - const bool bit, - const int precision, - const bool tri, - const bool app, - const std::string& filename, - const Parallel_2D& pv, - const int drank, - const bool reduce) -{ - ModuleBase::TITLE("ModuleIO", "save_mat"); - ModuleBase::timer::tick("ModuleIO", "save_mat"); - - // print out .dat file - if (bit) - { -#ifdef __MPI - FILE* g = nullptr; - - if (drank == 0) - { - g = fopen(filename.c_str(), "wb"); - fwrite(&dim, sizeof(int), 1, g); - } - - int ir=0; - int ic=0; - for (int i = 0; i < dim; ++i) - { - T* line = new T[tri ? dim - i : dim]; - ModuleBase::GlobalFunc::ZEROS(line, tri ? dim - i : dim); - - ir = pv.global2local_row(i); - if (ir >= 0) - { - // data collection - for (int j = (tri ? i : 0); j < dim; ++j) - { - ic = pv.global2local_col(j); - if (ic >= 0) - { - int iic; - if (ModuleBase::GlobalFunc::IS_COLUMN_MAJOR_KS_SOLVER(PARAM.inp.ks_solver)) - { - iic = ir + ic * pv.nrow; - } - else - { - iic = ir * pv.ncol + ic; - } - line[tri ? j - i : j] = mat[iic]; - } - } - } - - if (reduce) - { - Parallel_Reduce::reduce_all(line, tri ? dim - i : dim); - } - - if (drank == 0) - { - for (int j = (tri ? i : 0); j < dim; ++j) - { - fwrite(&line[tri ? j - i : j], sizeof(T), 1, g); - } - } - delete[] line; - - MPI_Barrier(DIAG_WORLD); - } - - if (drank == 0) - { - fclose(g); - } -#else - FILE* g = fopen(filename.c_str(), "wb"); - - fwrite(&dim, sizeof(int), 1, g); - - for (int i = 0; i < dim; i++) - { - for (int j = (tri ? i : 0); j < dim; j++) - { - fwrite(&mat[i * dim + j], sizeof(T), 1, g); - } - } - fclose(g); -#endif - } // end .dat file - else // .txt file - { - std::ofstream g; - g << std::setprecision(precision); -#ifdef __MPI - if (drank == 0) - { - if (app && istep > 0) - { - g.open(filename.c_str(), std::ofstream::app); - } - else - { - g.open(filename.c_str()); - } - g << dim; - } - - int ir=0; - int ic=0; - for (int i = 0; i < dim; i++) - { - T* line = new T[tri ? dim - i : dim]; - ModuleBase::GlobalFunc::ZEROS(line, tri ? dim - i : dim); - - ir = pv.global2local_row(i); - if (ir >= 0) - { - // data collection - for (int j = (tri ? i : 0); j < dim; ++j) - { - ic = pv.global2local_col(j); - if (ic >= 0) - { - int iic; - if (ModuleBase::GlobalFunc::IS_COLUMN_MAJOR_KS_SOLVER(PARAM.inp.ks_solver)) - { - iic = ir + ic * pv.nrow; - } - else - { - iic = ir * pv.ncol + ic; - } - line[tri ? j - i : j] = mat[iic]; - } - } - } - - if (reduce) - { - Parallel_Reduce::reduce_all(line, tri ? dim - i : dim); - } - - if (drank == 0) - { - for (int j = (tri ? i : 0); j < dim; j++) - { - g << " " << line[tri ? j - i : j]; - } - g << std::endl; - } - delete[] line; - } - - if (drank == 0) - { // Peize Lin delete ; at 2020.01.31 - g.close(); - } -#else - if (app) - { - std::ofstream g(filename.c_str(), std::ofstream::app); - } - else - { - std::ofstream g(filename.c_str()); - } - - g << dim; - g << std::setprecision(precision); - for (int i = 0; i < dim; i++) - { - for (int j = (tri ? i : 0); j < dim; j++) - { - g << " " << mat[i * dim + j]; - } - g << std::endl; - } - g.close(); -#endif - } - ModuleBase::timer::tick("ModuleIO", "save_mat"); - return; -} diff --git a/source/source_io/write_HS_R.cpp b/source/source_io/write_HS_R.cpp deleted file mode 100644 index f88a8476f2..0000000000 --- a/source/source_io/write_HS_R.cpp +++ /dev/null @@ -1,306 +0,0 @@ -#include "write_HS_R.h" - -#include "source_io/module_parameter/parameter.h" -#include "source_base/timer.h" -#include "source_lcao/LCAO_HS_arrays.hpp" -#include "source_lcao/spar_dh.h" -#include "source_lcao/spar_hsr.h" -#include "source_lcao/spar_st.h" -#include "write_HS_sparse.h" - -// if 'binary=true', output binary file. -// The 'sparse_thr' is the accuracy of the sparse matrix. -// If the absolute value of the matrix element is less than or equal to the -// 'sparse_thr', it will be ignored. -void ModuleIO::output_HSR(const UnitCell& ucell, - const int& istep, - const ModuleBase::matrix& v_eff, - const Parallel_Orbitals& pv, - LCAO_HS_Arrays& HS_Arrays, - const Grid_Driver& grid, // mohan add 2024-04-06 - const K_Vectors& kv, - hamilt::Hamilt>* p_ham, -#ifdef __EXX - const std::vector>>>* Hexxd, - const std::vector>>>>* Hexxc, -#endif - const std::string& SR_filename, - const std::string& HR_filename_up, - const std::string HR_filename_down, - const bool& binary, - const double& sparse_thr) -{ - - ModuleBase::TITLE("ModuleIO", "output_HSR"); - ModuleBase::timer::tick("ModuleIO", "output_HSR"); - - GlobalV::ofs_running << " >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>" << std::endl; - GlobalV::ofs_running << " | |" << std::endl; - GlobalV::ofs_running << " | #Print out Hamiltonian matrix H(R) or overlap matrix S(R)# |" << std::endl; - GlobalV::ofs_running << " | Use numerical atomic orbitals basis. Here R is the Bravis lattice |" << std::endl; - GlobalV::ofs_running << " | |" << std::endl; - GlobalV::ofs_running << " >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>" << std::endl; - - - const int nspin = PARAM.inp.nspin; - - if (nspin == 1 || nspin == 4) { - const int spin_now = 0; - // jingan add 2021-6-4, modify 2021-12-2 - sparse_format::cal_HSR(ucell,pv, HS_Arrays, grid, spin_now, sparse_thr, kv.nmp, p_ham -#ifdef __EXX - , Hexxd, Hexxc -#endif - ); - } - else if (nspin == 2) { - int spin_now = 1; - - // save HR of spin down first (the current spin always be down) - sparse_format::cal_HSR(ucell,pv, HS_Arrays, grid, spin_now, sparse_thr, kv.nmp, p_ham -#ifdef __EXX - , Hexxd, Hexxc -#endif - ); - - // cal HR of the spin up - if (PARAM.inp.vl_in_h) { - const int ik = 0; - p_ham->refresh(); - p_ham->updateHk(ik); - spin_now = 0; - } - - sparse_format::cal_HSR(ucell,pv, HS_Arrays, grid, spin_now, sparse_thr, kv.nmp, p_ham -#ifdef __EXX - , Hexxd, Hexxc -#endif - ); - } - - ModuleIO::save_HSR_sparse(istep, - pv, - HS_Arrays, - sparse_thr, - binary, - SR_filename, - HR_filename_up, - HR_filename_down); - - sparse_format::destroy_HS_R_sparse(HS_Arrays); - - ModuleBase::timer::tick("ModuleIO", "output_HSR"); - return; -} - -void ModuleIO::output_dSR(const int& istep, - const UnitCell& ucell, - const Parallel_Orbitals& pv, - LCAO_HS_Arrays& HS_Arrays, - const Grid_Driver& grid, // mohan add 2024-04-06 - const TwoCenterBundle& two_center_bundle, - const LCAO_Orbitals& orb, - const K_Vectors& kv, - const bool& binary, - const double& sparse_thr) -{ - ModuleBase::TITLE("ModuleIO", "output_dSR"); - ModuleBase::timer::tick("ModuleIO", "output_dSR"); - - sparse_format::cal_dS(ucell, - pv, - HS_Arrays, - grid, - two_center_bundle, - orb, - sparse_thr); - - // mohan update 2024-04-01 - ModuleIO::save_dH_sparse(istep, pv, HS_Arrays, sparse_thr, binary, "s"); - - sparse_format::destroy_dH_R_sparse(HS_Arrays); - - ModuleBase::timer::tick("ModuleIO", "output_dSR"); - return; -} - -void ModuleIO::output_dHR(const int& istep, - const ModuleBase::matrix& v_eff, - Gint_k& gint_k, // mohan add 2024-04-01 - const UnitCell& ucell, - const Parallel_Orbitals& pv, - LCAO_HS_Arrays& HS_Arrays, - const Grid_Driver& grid, // mohan add 2024-04-06 - const TwoCenterBundle& two_center_bundle, - const LCAO_Orbitals& orb, - const K_Vectors& kv, - const bool& binary, - const double& sparse_thr) -{ - ModuleBase::TITLE("ModuleIO", "output_dHR"); - ModuleBase::timer::tick("ModuleIO", "output_dHR"); - - GlobalV::ofs_running << " >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>" << std::endl; - GlobalV::ofs_running << " | |" << std::endl; - GlobalV::ofs_running << " | #Print out dH/dR# |" << std::endl; - GlobalV::ofs_running << " | |" << std::endl; - GlobalV::ofs_running << " >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>" << std::endl; - - const int nspin = PARAM.inp.nspin; - - if (nspin == 1 || nspin == 4) - { - // mohan add 2024-04-01 - const int cspin = 0; - - sparse_format::cal_dH(ucell, - pv, - HS_Arrays, - grid, - two_center_bundle, - orb, - cspin, - sparse_thr, - v_eff, - gint_k); - } - else if (nspin == 2) - { - for (int cspin = 0; cspin < 2; cspin++) - { - sparse_format::cal_dH(ucell, - pv, - HS_Arrays, - grid, - two_center_bundle, - orb, - cspin, - sparse_thr, - v_eff, - gint_k); - } - } - // mohan update 2024-04-01 - ModuleIO::save_dH_sparse(istep, pv, HS_Arrays, sparse_thr, binary); - - sparse_format::destroy_dH_R_sparse(HS_Arrays); - - ModuleBase::timer::tick("ModuleIO", "output_dHR"); - return; -} - -void ModuleIO::output_SR(Parallel_Orbitals& pv, - const Grid_Driver& grid, - hamilt::Hamilt>* p_ham, - const std::string& SR_filename, - const bool& binary, - const double& sparse_thr) -{ - ModuleBase::TITLE("ModuleIO", "output_SR"); - ModuleBase::timer::tick("ModuleIO", "output_SR"); - - GlobalV::ofs_running << " >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>" << std::endl; - GlobalV::ofs_running << " | |" << std::endl; - GlobalV::ofs_running << " | #Print out overlap matrix S(R)# |" << std::endl; - GlobalV::ofs_running << " | |" << std::endl; - GlobalV::ofs_running << " >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>" << std::endl; - - std::cout << " Overlap matrix file is in " << SR_filename << std::endl; - GlobalV::ofs_running << " Overlap matrix file is in " << SR_filename << std::endl; - - - LCAO_HS_Arrays HS_Arrays; - - sparse_format::cal_SR(pv, - HS_Arrays.all_R_coor, - HS_Arrays.SR_sparse, - HS_Arrays.SR_soc_sparse, - grid, - sparse_thr, - p_ham); - - const int istep = 0; - - if (PARAM.inp.nspin == 4) - { - ModuleIO::save_sparse(HS_Arrays.SR_soc_sparse, - HS_Arrays.all_R_coor, - sparse_thr, - binary, - SR_filename, - pv, - "S", - istep); - } - else - { - ModuleIO::save_sparse(HS_Arrays.SR_sparse, - HS_Arrays.all_R_coor, - sparse_thr, - binary, - SR_filename, - pv, - "S", - istep); - } - - sparse_format::destroy_HS_R_sparse(HS_Arrays); - - ModuleBase::timer::tick("ModuleIO", "output_SR"); - return; -} - -void ModuleIO::output_TR(const int istep, - const UnitCell& ucell, - const Parallel_Orbitals& pv, - LCAO_HS_Arrays& HS_Arrays, - const Grid_Driver& grid, - const TwoCenterBundle& two_center_bundle, - const LCAO_Orbitals& orb, - const std::string& TR_filename, - const bool& binary, - const double& sparse_thr) -{ - ModuleBase::TITLE("ModuleIO", "output_TR"); - ModuleBase::timer::tick("ModuleIO", "output_TR"); - - GlobalV::ofs_running << " >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>" << std::endl; - GlobalV::ofs_running << " | |" << std::endl; - GlobalV::ofs_running << " | #Print out kinetic energy term matrix T(R)# |" << std::endl; - GlobalV::ofs_running << " | |" << std::endl; - GlobalV::ofs_running << " >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>" << std::endl; - - std::stringstream sst; - if (PARAM.inp.calculation == "md" && !PARAM.inp.out_app_flag) - { - sst << PARAM.globalv.global_matrix_dir << TR_filename << "g" << istep; - GlobalV::ofs_running << " T(R) data are in file: " << sst.str() << std::endl; - } - else - { - sst << PARAM.globalv.global_out_dir << TR_filename; - GlobalV::ofs_running << " T(R) data are in file: " << sst.str() << std::endl; - } - - sparse_format::cal_TR(ucell, - pv, - HS_Arrays, - grid, - two_center_bundle, - orb, - sparse_thr); - - ModuleIO::save_sparse(HS_Arrays.TR_sparse, - HS_Arrays.all_R_coor, - sparse_thr, - binary, - sst.str().c_str(), - pv, - "T", - istep); - - sparse_format::destroy_T_R_sparse(HS_Arrays); - - ModuleBase::timer::tick("ModuleIO", "output_TR"); - return; -} diff --git a/source/source_io/write_HS_R.h b/source/source_io/write_HS_R.h deleted file mode 100644 index bf95c2d648..0000000000 --- a/source/source_io/write_HS_R.h +++ /dev/null @@ -1,75 +0,0 @@ -#ifndef WRITE_HS_R_H -#define WRITE_HS_R_H - -#include "source_base/matrix.h" -#include "source_basis/module_nao/two_center_bundle.h" -#include "source_cell/klist.h" -#include "source_hamilt/hamilt.h" -#include "source_lcao/module_gint/gint_k.h" -#include "source_pw/module_pwdft/global.h" - -namespace ModuleIO -{ - using TAC = std::pair>; - void output_HSR(const UnitCell& ucell, - const int& istep, - const ModuleBase::matrix& v_eff, - const Parallel_Orbitals& pv, - LCAO_HS_Arrays& HS_Arrays, - const Grid_Driver& grid, // mohan add 2024-04-06 - const K_Vectors& kv, - hamilt::Hamilt>* p_ham, -#ifdef __EXX - const std::vector>>>* Hexxd = nullptr, - const std::vector>>>>* Hexxc = nullptr, -#endif - const std::string& SR_filename = "srs1_nao.csr", - const std::string& HR_filename_up = "hrs1_nao.csr", - const std::string HR_filename_down = "hrs2_nao.csr", - const bool& binary = false, - const double& sparse_threshold = 1e-10); // LiuXh add 2019-07-15, modify in 2021-12-3 - - void output_dHR(const int& istep, - const ModuleBase::matrix& v_eff, - Gint_k& gint_k, // mohan add 2024-04-01 - const UnitCell& ucell, - const Parallel_Orbitals& pv, - LCAO_HS_Arrays& HS_Arrays, - const Grid_Driver& grid, // mohan add 2024-04-06 - const TwoCenterBundle& two_center_bundle, - const LCAO_Orbitals& orb, - const K_Vectors& kv, - const bool& binary = false, - const double& sparse_threshold = 1e-10); - - void output_dSR(const int& istep, - const UnitCell& ucell, - const Parallel_Orbitals& pv, - LCAO_HS_Arrays& HS_Arrays, - const Grid_Driver& grid, // mohan add 2024-04-06 - const TwoCenterBundle& two_center_bundle, - const LCAO_Orbitals& orb, - const K_Vectors& kv, - const bool& binary = false, - const double& sparse_thr = 1e-10); - - void output_TR(const int istep, - const UnitCell& ucell, - const Parallel_Orbitals& pv, - LCAO_HS_Arrays& HS_Arrays, - const Grid_Driver& grid, - const TwoCenterBundle& two_center_bundle, - const LCAO_Orbitals& orb, - const std::string& TR_filename = "trs1_nao.csr", - const bool& binary = false, - const double& sparse_threshold = 1e-10); - - void output_SR(Parallel_Orbitals& pv, - const Grid_Driver& grid, - hamilt::Hamilt>* p_ham, - const std::string& SR_filename = "srs1_nao.csr", - const bool& binary = false, - const double& sparse_threshold = 1e-10); -} // namespace ModuleIO - -#endif diff --git a/source/source_io/write_dmr.cpp b/source/source_io/write_dmr.cpp deleted file mode 100644 index fe661da5ff..0000000000 --- a/source/source_io/write_dmr.cpp +++ /dev/null @@ -1,95 +0,0 @@ -#include "write_dmr.h" - -#include "source_io/module_parameter/parameter.h" -#include "source_lcao/module_hcontainer/hcontainer_funcs.h" -#include "source_lcao/module_hcontainer/output_hcontainer.h" -#include "source_pw/module_pwdft/global.h" - -#include - -namespace ModuleIO -{ -std::string dmr_gen_fname(const int out_type, const int ispin, const bool append, const int istep) -{ - std::string fname = "dmr.csr"; - if (out_type == 1) - { - if (!append && istep >= 0) - { - // spa stands for sparse - fname = "dmrs" + std::to_string(ispin+1) + "g" + std::to_string(istep + 1) + "_nao.csr"; - } - else - { - fname = "dmrs" + std::to_string(ispin+1) + "_nao.csr"; - } - } - else if (out_type == 2) - { - fname = "dmrs" + std::to_string(ispin+1) + "_nao.npz"; - } - else - { - ModuleBase::WARNING("write_dmr", "the output type of density matrix DM(R) should be csr or npz."); - } - return fname; -} - -void write_dmr_csr(std::string& fname, hamilt::HContainer* dm_serial, const int istep) -{ - // write the head: ION step number, basis number and R loop number - - std::ofstream ofs; - - // mohan update 2025-05-26 - if(istep<=0) - { - ofs.open(fname); - } - else if(istep>0) - { - ofs.open(fname, std::ios::app); - } - - ofs << "IONIC_STEP: " << istep+1 << std::endl; - ofs << "Matrix Dimension of DM(R): " << dm_serial->get_nbasis() << std::endl; - ofs << "Matrix number of DM(R): " << dm_serial->size_R_loop() << std::endl; - - // write HR_serial to ofs - const double sparse_threshold = 1e-10; - const int precision = 8; - hamilt::Output_HContainer out_dmr(dm_serial, ofs, sparse_threshold, precision); - out_dmr.write(); - ofs.close(); -} - -void write_dmr(const std::vector*> dmr, - const Parallel_2D& paraV, - const bool append, - const int* iat2iwt, - const int nat, - const int istep) -{ - for (int ispin = 0; ispin < dmr.size(); ispin++) - { - const int nbasis = dmr[ispin]->get_nbasis(); - // gather the parallel matrix to serial matrix -#ifdef __MPI - Parallel_Orbitals serialV; - serialV.init(nbasis, nbasis, nbasis, paraV.comm()); - serialV.set_serial(nbasis, nbasis); - serialV.set_atomic_trace(iat2iwt, nat, nbasis); - hamilt::HContainer dm_serial(&serialV); - hamilt::gatherParallels(*dmr[ispin], &dm_serial, 0); -#else - hamilt::HContainer dm_serial(*dmr[ispin]); -#endif - if (GlobalV::MY_RANK == 0) - { - std::string fname = PARAM.globalv.global_out_dir + dmr_gen_fname(1, ispin, append, istep); - write_dmr_csr(fname, &dm_serial, istep); - } - } -} - -} // namespace ModuleIO diff --git a/source/source_io/write_dmr.h b/source/source_io/write_dmr.h deleted file mode 100644 index 2619795706..0000000000 --- a/source/source_io/write_dmr.h +++ /dev/null @@ -1,52 +0,0 @@ -#ifndef MODULE_IO_WRITE_DMR_H -#define MODULE_IO_WRITE_DMR_H - -#include "source_basis/module_ao/parallel_orbitals.h" -#include "source_lcao/module_hcontainer/hcontainer.h" - -#include - -namespace ModuleIO -{ - -/** - * Generates a filename for the DMR output based on the given parameters. - * - * @param out_type The output type. 1: csr, 2: npz. - * @param ispin The spin value, starting from 0. - * @param append A boolean indicating whether append the data to one file or create a new file. - * @param istep The ION step (default: -1), starting from 0. - * @return The generated filename as a string. - */ -std::string dmr_gen_fname(const int out_type, const int ispin, const bool append = true, const int istep = -1); - -/** - * Writes HContainer to a csr file. - * - * @param fname The name of the file to write the CSR representation to. - * @param dm_serial A pointer to the Hamiltonian container. - * @param istep The current step number. - */ -void write_dmr_csr(std::string& fname, hamilt::HContainer* dm_serial, const int istep); - -/** - * Writes DMR to a file. - * - * @param dmr The 2D block parallel matrix representing the density matrix. The first dimension is the spin index. - * @param paraV The parallel 2D object. - * @param out_type The output file type. 1: csr, 2: npz. - * @param sparse Whether output the sparse DM. - * @param ispin The spin index, starting from 0. - * @param append Whether to append the data to an existing file or create a new file. The file name is related to this - * flag. - * @param istep The ION step, starting from 0. - */ -void write_dmr(const std::vector*> dmr, - const Parallel_2D& paraV, - const bool append, - const int* iat2iwt, - const int nat, - const int istep); -} // namespace ModuleIO - -#endif diff --git a/source/source_io/write_elf.cpp b/source/source_io/write_elf.cpp deleted file mode 100644 index 8bb8acdb9c..0000000000 --- a/source/source_io/write_elf.cpp +++ /dev/null @@ -1,151 +0,0 @@ -#include "write_elf.h" -#include "source_io/cube_io.h" -#include "source_pw/module_pwdft/global.h" - -namespace ModuleIO -{ -void write_elf( -#ifdef __MPI - const int& bz, - const int& nbz, -#endif - const std::string& out_dir, - const int& istep, - const int& nspin, - const double* const* rho, - const double* const* tau, - ModulePW::PW_Basis* rho_basis, - const Parallel_Grid& pgrid, - const UnitCell* ucell_, - const int& precision) -{ - std::vector> elf(nspin, std::vector(rho_basis->nrxx, 0.)); - // 1) calculate the kinetic energy density of vW KEDF - std::vector> tau_vw(nspin, std::vector(rho_basis->nrxx, 0.)); - std::vector phi(rho_basis->nrxx, 0.); // phi = sqrt(rho) - - for (int is = 0; is < nspin; ++is) - { - for (int ir = 0; ir < rho_basis->nrxx; ++ir) - { - phi[ir] = std::sqrt(std::abs(rho[is][ir])); - } - - std::vector> gradient_phi(3, std::vector(rho_basis->nrxx, 0.)); - std::vector> recip_phi(rho_basis->npw, 0.0); - std::vector> recip_gradient_phi(rho_basis->npw, 0.0); - - rho_basis->real2recip(phi.data(), recip_phi.data()); - - std::complex img(0.0, 1.0); - for (int j = 0; j < 3; ++j) - { - for (int ip = 0; ip < rho_basis->npw; ++ip) - { - recip_gradient_phi[ip] = img * rho_basis->gcar[ip][j] * recip_phi[ip] * rho_basis->tpiba; - } - - rho_basis->recip2real(recip_gradient_phi.data(), gradient_phi[j].data()); - - for (int ir = 0; ir < rho_basis->nrxx; ++ir) - { - tau_vw[is][ir] += gradient_phi[j][ir] * gradient_phi[j][ir] / 2. * 2.; // convert Ha to Ry. - } - } - } - - // 2) calculate the kinetic energy density of TF KEDF - std::vector> tau_TF(nspin, std::vector(rho_basis->nrxx, 0.)); - const double c_tf - = 3.0 / 10.0 * std::pow(3 * std::pow(M_PI, 2.0), 2.0 / 3.0) - * 2.0; // 10/3*(3*pi^2)^{2/3}, multiply by 2 to convert unit from Hartree to Ry, finally in Ry*Bohr^(-2) - if (nspin == 1) - { - for (int ir = 0; ir < rho_basis->nrxx; ++ir) - { - tau_TF[0][ir] = c_tf * std::pow(rho[0][ir], 5.0 / 3.0); - } - } - else if (nspin == 2) - { - for (int is = 0; is < nspin; ++is) - { - for (int ir = 0; ir < rho_basis->nrxx; ++ir) - { - tau_TF[is][ir] = 0.5 * c_tf * std::pow(2.0 * rho[is][ir], 5.0 / 3.0); - } - } - } - - // 3) calculate the enhancement factor F = (tau_KS - tau_vw) / tau_TF, and then ELF = 1 / (1 + F^2) - double eps = 1.0e-5; // suppress the numerical instability in LCAO (Ref: Acta Phys. -Chim. Sin. 2011, 27(12), 2786-2792. doi: 10.3866/PKU.WHXB20112786) - for (int is = 0; is < nspin; ++is) - { - for (int ir = 0; ir < rho_basis->nrxx; ++ir) - { - elf[is][ir] = (tau[is][ir] - tau_vw[is][ir] + eps) / tau_TF[is][ir]; - elf[is][ir] = 1. / (1. + elf[is][ir] * elf[is][ir]); - } - } - - // 4) output the ELF = 1 / (1 + F^2) to cube file - double ef_tmp = 0.0; - int out_fermi = 0; - - if (nspin == 1) - { - std::string fn = out_dir + "/ELF.cube"; - - int is = -1; - ModuleIO::write_vdata_palgrid(pgrid, - elf[0].data(), - is, - nspin, - istep, - fn, - ef_tmp, - ucell_, - precision, - out_fermi); - } - else if (nspin == 2) - { - for (int is = 0; is < nspin; ++is) - { - std::string fn_temp = out_dir + "/ELF_SPIN" + std::to_string(is + 1) + ".cube"; - int ispin = is + 1; - - ModuleIO::write_vdata_palgrid(pgrid, - elf[is].data(), - ispin, - nspin, - istep, - fn_temp, - ef_tmp, - ucell_, - precision, - out_fermi); - } - - std::vector elf_tot(rho_basis->nrxx, 0.0); - for (int ir = 0; ir < rho_basis->nrxx; ++ir) - { - elf_tot[ir] = (tau[0][ir] + tau[1][ir] - tau_vw[0][ir] - tau_vw[1][ir]) / (tau_TF[0][ir] + tau_TF[1][ir]); - elf_tot[ir] = 1. / (1. + elf_tot[ir] * elf_tot[ir]); - } - std::string fn = out_dir + "/ELF.cube"; - - int is = -1; - ModuleIO::write_vdata_palgrid(pgrid, - elf_tot.data(), - is, - nspin, - istep, - fn, - ef_tmp, - ucell_, - precision, - out_fermi); - } -} -} \ No newline at end of file diff --git a/source/source_io/write_libxc_r.cpp b/source/source_io/write_libxc_r.cpp deleted file mode 100644 index 744f9f736a..0000000000 --- a/source/source_io/write_libxc_r.cpp +++ /dev/null @@ -1,448 +0,0 @@ -//====================== -// AUTHOR : Peize Lin -// DATE : 2024-09-12 -//====================== - -#ifdef USE_LIBXC - -#include "write_libxc_r.h" -#include "source_hamilt/module_xc/xc_functional.h" -#include "source_hamilt/module_xc/xc_functional_libxc.h" -#include "source_estate/module_charge/charge.h" -#include "source_basis/module_pw/pw_basis_big.h" -#include "source_basis/module_pw/pw_basis.h" -#include "source_io/cube_io.h" -#include "source_base/global_variable.h" -#include "source_io/module_parameter/parameter.h" -#include "source_base/timer.h" -#include "source_base/tool_title.h" - -#include -#include -#include -#include -#include - -void ModuleIO::write_libxc_r( - const int order, - const std::vector &func_id, - const int &nrxx, // number of real-space grid - const double &omega, // volume of cell - const double tpiba, - const Charge &chr, - const ModulePW::PW_Basis_Big &pw_big, - const ModulePW::PW_Basis &pw_rhod) -{ - ModuleBase::TITLE("ModuleIO","write_libxc_r"); - ModuleBase::timer::tick("ModuleIO","write_libxc_r"); - - const int nspin = - (PARAM.inp.nspin == 1 || ( PARAM.inp.nspin ==4 && !PARAM.globalv.domag && !PARAM.globalv.domag_z)) - ? 1 : 2; - - //---------------------------------------------------------- - // xc_func_type is defined in Libxc package - // to understand the usage of xc_func_type, - // use can check on website, for example: - // https://www.tddft.org/programs/libxc/manual/libxc-5.1.x/ - //---------------------------------------------------------- - - std::vector funcs = XC_Functional_Libxc::init_func( func_id, (1==nspin) ? XC_UNPOLARIZED:XC_POLARIZED ); - - const bool is_gga = [&funcs]() - { - for( xc_func_type &func : funcs ) - { - switch( func.info->family ) - { - case XC_FAMILY_GGA: - case XC_FAMILY_HYB_GGA: - return true; - } - } - return false; - }(); - - // converting rho - std::vector rho; - std::vector amag; - if(1==nspin || 2==PARAM.inp.nspin) - { - rho = XC_Functional_Libxc::convert_rho(nspin, nrxx, &chr); - } - else - { - std::tuple,std::vector> rho_amag = XC_Functional_Libxc::convert_rho_amag_nspin4(nspin, nrxx, &chr); - rho = std::get<0>(std::move(rho_amag)); - amag = std::get<1>(std::move(rho_amag)); - } - - std::vector sigma; - if(is_gga) - { - const std::vector>> gdr = XC_Functional_Libxc::cal_gdr(nspin, nrxx, rho, tpiba, &chr); - sigma = XC_Functional_Libxc::convert_sigma(gdr); - } - - std::vector exc; - std::vector vrho; - std::vector vsigma; - std::vector v2rho2; - std::vector v2rhosigma; - std::vector v2sigma2; - std::vector v3rho3; - std::vector v3rho2sigma; - std::vector v3rhosigma2; - std::vector v3sigma3; - std::vector v4rho4; - std::vector v4rho3sigma; - std::vector v4rho2sigma2; - std::vector v4rhosigma3; - std::vector v4sigma4; - // attention: order 4321 don't break - switch( order ) - { - case 4: v4rho4.resize( nrxx * ((1==nspin)?1:5) ); - case 3: v3rho3.resize( nrxx * ((1==nspin)?1:4) ); - case 2: v2rho2.resize( nrxx * ((1==nspin)?1:3) ); - case 1: vrho .resize( nrxx * nspin ); - case 0: exc .resize( nrxx ); - break; - default: throw std::domain_error("order ="+std::to_string(order) - +" unfinished in "+std::string(__FILE__)+" line "+std::to_string(__LINE__)); - break; - } - if(is_gga) - { - switch( order ) - { - case 4: v4rho3sigma .resize( nrxx * ((1==nspin)?1:12) ); - v4rho2sigma2.resize( nrxx * ((1==nspin)?1:15) ); - v4rhosigma3 .resize( nrxx * ((1==nspin)?1:20) ); - v4sigma4 .resize( nrxx * ((1==nspin)?1:15) ); - case 3: v3rho2sigma .resize( nrxx * ((1==nspin)?1:9) ); - v3rhosigma2 .resize( nrxx * ((1==nspin)?1:12) ); - v3sigma3 .resize( nrxx * ((1==nspin)?1:10) ); - case 2: v2rhosigma .resize( nrxx * ((1==nspin)?1:6) ); - v2sigma2 .resize( nrxx * ((1==nspin)?1:6) ); - case 1: vsigma .resize( nrxx * ((1==nspin)?1:3) ); - case 0: break; - default: throw std::domain_error("order ="+std::to_string(order) - +" unfinished in "+std::string(__FILE__)+" line "+std::to_string(__LINE__)); - break; - } - } - - for( xc_func_type &func : funcs ) - { - // jiyy add for threshold - constexpr double rho_threshold = 1E-6; - constexpr double grho_threshold = 1E-10; - - xc_func_set_dens_threshold(&func, rho_threshold); - - // sgn for threshold mask - const std::vector sgn = XC_Functional_Libxc::cal_sgn(rho_threshold, grho_threshold, func, nspin, nrxx, rho, sigma); - - // call libxc function - // attention: order 432 don't break - switch( func.info->family ) - { - case XC_FAMILY_LDA: - { - switch( order ) - { - case 4: xc_lda_lxc ( &func, nrxx, rho.data(), v4rho4.data() ); - case 3: xc_lda_kxc ( &func, nrxx, rho.data(), v3rho3.data() ); - case 2: xc_lda_fxc ( &func, nrxx, rho.data(), v2rho2.data() ); - case 1: xc_lda_exc_vxc( &func, nrxx, rho.data(), exc.data(), vrho.data() ); - break; - case 0: xc_lda_exc ( &func, nrxx, rho.data(), exc.data() ); - break; - default: throw std::domain_error("order ="+std::to_string(order) - +" unfinished in "+std::string(__FILE__)+" line "+std::to_string(__LINE__)); - break; - } - break; - } - case XC_FAMILY_GGA: - case XC_FAMILY_HYB_GGA: - { - switch( order ) - { - case 4: xc_gga_lxc ( &func, nrxx, rho.data(), sigma.data(), v4rho4.data(), v4rho3sigma.data(), v4rho2sigma2.data(), v4rhosigma3.data(), v4sigma4.data() ); - case 3: xc_gga_kxc ( &func, nrxx, rho.data(), sigma.data(), v3rho3.data(), v3rho2sigma.data(), v3rhosigma2.data(), v3sigma3.data() ); - case 2: xc_gga_fxc ( &func, nrxx, rho.data(), sigma.data(), v2rho2.data(), v2rhosigma.data(), v2sigma2.data() ); - case 1: xc_gga_exc_vxc( &func, nrxx, rho.data(), sigma.data(), exc.data(), vrho.data(), vsigma.data() ); - break; - case 0: xc_gga_exc ( &func, nrxx, rho.data(), sigma.data(), exc.data() ); - break; - default: throw std::domain_error("order ="+std::to_string(order) - +" unfinished in "+std::string(__FILE__)+" line "+std::to_string(__LINE__)); - break; - } - break; - } - default: - { - throw std::domain_error("func.info->family ="+std::to_string(func.info->family) - +" unfinished in "+std::string(__FILE__)+" line "+std::to_string(__LINE__)); - break; - } - } // end switch( func.info->family ) - } // end for( xc_func_type &func : funcs ) - - auto write_data = [&pw_big, &pw_rhod]( - const std::string data_name, - const std::vector &data, - const int number_spin) - { - for(int is=0; is data_cube(nxyz, 0.0); - - // num_z: how many planes on processor 'ip' - std::vector num_z(nproc_in_pool, 0); - for (int iz = 0; iz < nbz; iz++) - { - const int ip = iz % nproc_in_pool; - num_z[ip] += bz; - } - - // start_z: start position of z in - // processor ip. - std::vector start_z(nproc_in_pool, 0); - for (int ip = 1; ip < nproc_in_pool; ip++) - { - start_z[ip] = start_z[ip - 1] + num_z[ip - 1]; - } - - // which_ip: found iz belongs to which ip. - std::vector which_ip(nz, 0); - for (int iz = 0; iz < nz; iz++) - { - for (int ip = 0; ip < nproc_in_pool; ip++) - { - if (iz >= start_z[nproc_in_pool - 1]) - { - which_ip[iz] = nproc_in_pool - 1; - break; - } - else if (iz >= start_z[ip] && iz < start_z[ip + 1]) - { - which_ip[iz] = ip; - break; - } - } - } - - int count = 0; - std::vector zpiece(nxy, 0.0); - - // save the rho one z by one z. - for (int iz = 0; iz < nz; iz++) - { - zpiece.assign(nxy, 0.0); - - // tag must be different for different iz. - const int tag = iz; - MPI_Status ierror; - - // case 1: the first part of rho in processor 0. - if (which_ip[iz] == 0 && rank_in_pool == 0) - { - for (int ixy = 0; ixy < nxy; ixy++) - { - // mohan change to rho_save on 2012-02-10 - // because this can make our next restart calculation lead - // to the same scf_thr as the one saved. - zpiece[ixy] = data[ixy * nplane + (iz - startz_current) * nld]; - } - } - // case 2: > first part rho: send the rho to - // processor 0. - else if (which_ip[iz] == rank_in_pool) - { - for (int ixy = 0; ixy < nxy; ixy++) - { - zpiece[ixy] = data[ixy * nplane + (iz - startz_current) * nld]; - } - MPI_Send(zpiece.data(), nxy, MPI_DOUBLE, 0, tag, POOL_WORLD); - } - - // case 2: > first part rho: processor 0 receive the rho - // from other processors - else if (rank_in_pool == 0) - { - MPI_Recv(zpiece.data(), nxy, MPI_DOUBLE, which_ip[iz], tag, POOL_WORLD, &ierror); - } - - if (my_rank == 0) - { - /// for cube file - for (int ixy = 0; ixy < nxy; ixy++) - { - data_cube[ixy * nz + iz] = zpiece[ixy]; - } - /// for cube file - } - } // end iz - - // for cube file - if (my_rank == 0) - { - for (int ixy = 0; ixy < nxy; ixy++) - { - for (int iz = 0; iz < nz; iz++) - { - ofs_cube << " " << data_cube[ixy * nz + iz]; - if ((iz % n_data_newline == n_data_newline-1) && (iz != nz - 1)) - { - ofs_cube << "\n"; - } - } - ofs_cube << "\n"; - } - } - /// for cube file - } - MPI_Barrier(MPI_COMM_WORLD); -} - -#else // #ifdef __MPI - -void ModuleIO::write_cube_core( - std::ofstream &ofs_cube, - const double*const data, - const int nxy, - const int nz, - const int n_data_newline) -{ - ModuleBase::TITLE("ModuleIO", "write_cube_core"); - for (int ixy = 0; ixy < nxy; ixy++) - { - for (int iz = 0; iz < nz; iz++) - { - ofs_cube << " " << data[iz * nxy + ixy]; - // ++count_cube; - if ((iz % n_data_newline == n_data_newline-1) && (iz != nz - 1)) - { - ofs_cube << "\n"; - } - } - ofs_cube << "\n"; - } -} - -#endif // #ifdef __MPI - -#endif // USE_LIBXC \ No newline at end of file diff --git a/source/source_io/write_mlkedf_descriptors.h b/source/source_io/write_mlkedf_descriptors.h deleted file mode 100644 index 6beea3b146..0000000000 --- a/source/source_io/write_mlkedf_descriptors.h +++ /dev/null @@ -1,63 +0,0 @@ -#ifndef Write_MLKEDF_DESCRIPTORS_H -#define Write_MLKEDF_DESCRIPTORS_H - -#ifdef __MLALGO - -#include "source_io/cal_mlkedf_descriptors.h" -#include "source_estate/elecstate_pw.h" - -namespace ModuleIO -{ - -class Write_MLKEDF_Descriptors -{ -public: - Write_MLKEDF_Descriptors() { - this->cal_tool = new Cal_MLKEDF_Descriptors(); - } - - ~Write_MLKEDF_Descriptors() { - if (this->cal_tool != nullptr) { - delete this->cal_tool; - this->cal_tool = nullptr; - } - } - - void generateTrainData_KS( - const std::string& out_dir, - psi::Psi> *psi, - elecstate::ElecState *pelec, - ModulePW::PW_Basis_K *pw_psi, - ModulePW::PW_Basis *pw_rho, - UnitCell& ucell, - const double *veff - ); - void generateTrainData_KS( - const std::string& out_dir, - psi::Psi> *psi, - elecstate::ElecState *pelec, - ModulePW::PW_Basis_K *pw_psi, - ModulePW::PW_Basis *pw_rho, - UnitCell& ucell, - const double *veff - ){} // a mock function - void generate_descriptor( - const std::string& out_dir, - const double * const *prho, - ModulePW::PW_Basis *pw_rho, - std::vector> &nablaRho - ); - - std::string file_name( - const std::string& out_dir, - std::string parameter, - const int kernel_type, - const double kernel_scaling - ); - - Cal_MLKEDF_Descriptors* cal_tool = nullptr; // pointer to the calculation tool -}; - -} // namespace ModuleIO -#endif -#endif \ No newline at end of file diff --git a/source/source_io/write_vxc_r.hpp b/source/source_io/write_vxc_r.hpp deleted file mode 100644 index 183d032760..0000000000 --- a/source/source_io/write_vxc_r.hpp +++ /dev/null @@ -1,202 +0,0 @@ -#ifndef __WRITE_VXC_R_H_ -#define __WRITE_VXC_R_H_ -#include "source_io/module_parameter/parameter.h" -#include "source_lcao/module_operator_lcao/op_dftu_lcao.h" -#include "source_lcao/module_operator_lcao/veff_lcao.h" -#include "source_lcao/spar_hsr.h" -#include "source_io/write_HS_sparse.h" -#ifdef __EXX -#include "source_lcao/module_operator_lcao/op_exx_lcao.h" -#include "source_lcao/module_ri/RI_2D_Comm.h" -#endif - -#ifndef TGINT_H -#define TGINT_H -template -struct TGint; - -template <> -struct TGint -{ - using type = Gint_Gamma; -}; - -template <> -struct TGint> -{ - using type = Gint_k; -}; -#endif - -namespace ModuleIO -{ - -#ifndef SET_GINT_POINTER_H -#define SET_GINT_POINTER_H -template -void set_gint_pointer(Gint_Gamma& gint_gamma, Gint_k& gint_k, typename TGint::type*& gint); - -template <> -void set_gint_pointer(Gint_Gamma& gint_gamma, Gint_k& gint_k, typename TGint::type*& gint) -{ - gint = &gint_gamma; -} - -template <> -void set_gint_pointer>(Gint_Gamma& gint_gamma, - Gint_k& gint_k, - typename TGint>::type*& gint) -{ - gint = &gint_k; -} -#endif - -template std::set> get_R_range(const hamilt::HContainer& hR) -{ - std::set> all_R_coor; - - return all_R_coor; -} - -template -std::map, std::map>> -cal_HR_sparse(const hamilt::HContainer& hR, - const int current_spin, - const double sparse_thr); - -template <> -std::map, std::map>> -cal_HR_sparse(const hamilt::HContainer& hR, - const int current_spin, - const double sparse_thr) -{ - std::map, std::map>> target; - sparse_format::cal_HContainer_d(*hR.get_paraV(), current_spin, sparse_thr, hR, target); - return target; -} -template <> -std::map, std::map>>> -cal_HR_sparse(const hamilt::HContainer>& hR, - const int current_spin, - const double sparse_thr) -{ - std::map, std::map>>> target; - sparse_format::cal_HContainer_cd(*hR.get_paraV(), current_spin, sparse_thr, hR, target); - return target; -} - -/// @brief write the Vxc matrix in KS orbital representation, usefull for GW calculation -/// including terms: local/semi-local XC, EXX, DFTU -template -void write_Vxc_R(const int nspin, - const Parallel_Orbitals* pv, - const UnitCell& ucell, - Structure_Factor& sf, - surchem& solvent, - const ModulePW::PW_Basis& rho_basis, - const ModulePW::PW_Basis& rhod_basis, - const ModuleBase::matrix& vloc, - const Charge& chg, - Gint_Gamma& gint_gamma, - Gint_k& gint_k, - const K_Vectors& kv, - const std::vector& orb_cutoff, - Grid_Driver& gd, -#ifdef __EXX - const std::vector>>>* const Hexxd, - const std::vector>>>>* const Hexxc, -#endif -const double sparse_thr=1e-10) -{ - ModuleBase::TITLE("ModuleIO", "write_Vxc_R"); - // 1. real-space xc potential - // ModuleBase::matrix vr_xc(nspin, chg.nrxx); - double etxc = 0.0; - double vtxc = 0.0; - // elecstate::PotXC* potxc(&rho_basis, &etxc, vtxc, nullptr); - // potxc.cal_v_eff(&chg, &ucell, vr_xc); - elecstate::Potential* potxc - = new elecstate::Potential(&rhod_basis, &rho_basis, &ucell, &vloc, &sf, &solvent, &etxc, &vtxc); - std::vector compnents_list = {"xc"}; - potxc->pot_register(compnents_list); - potxc->update_from_charge(&chg, &ucell); - - // 2. allocate H(R) - // (the number of hR: 1 for nspin=1, 4; 2 for nspin=2) - int nspin0 = (nspin == 2) ? 2 : 1; - std::vector> vxcs_R_ao(nspin0, hamilt::HContainer(ucell, pv)); // call move constructor -#ifdef __EXX - std::array Rs_period = { kv.nmp[0], kv.nmp[1], kv.nmp[2] }; - const auto cell_nearest = hamilt::init_cell_nearest(ucell, Rs_period); -#endif - for (int is = 0; is < nspin0; ++is) - { - if (std::is_same::value) { vxcs_R_ao[is].fix_gamma(); } -#ifdef __EXX - if (GlobalC::exx_info.info_global.cal_exx) - { - GlobalC::exx_info.info_ri.real_number ? - hamilt::reallocate_hcontainer(*Hexxd, &vxcs_R_ao[is], &cell_nearest) : - hamilt::reallocate_hcontainer(*Hexxc, &vxcs_R_ao[is], &cell_nearest); - } -#endif - } - - // 3. calculate the Vxc(R) - hamilt::HS_Matrix_K vxc_k_ao(pv, 1); // only hk is needed, sk is skipped - typename TGint::type* gint = nullptr; - set_gint_pointer(gint_gamma, gint_k, gint); - std::vector>*> vxcs_op_ao(nspin0); - for (int is = 0; is < nspin0; ++is) - { - vxcs_op_ao[is] = new hamilt::Veff>(gint, - &vxc_k_ao, kv.kvec_d, potxc, &vxcs_R_ao[is], &ucell, orb_cutoff, &gd, nspin); - vxcs_op_ao[is]->contributeHR(); -#ifdef __EXX - if (GlobalC::exx_info.info_global.cal_exx) - { - GlobalC::exx_info.info_ri.real_number ? - RI_2D_Comm::add_HexxR(is, GlobalC::exx_info.info_global.hybrid_alpha, *Hexxd, *pv, ucell.get_npol(), vxcs_R_ao[is], &cell_nearest) : - RI_2D_Comm::add_HexxR(is, GlobalC::exx_info.info_global.hybrid_alpha, *Hexxc, *pv, ucell.get_npol(), vxcs_R_ao[is], &cell_nearest); - } -#endif - } - - // test: fold Vxc(R) and check whether it is equal to Vxc(k) - // for (int ik = 0; ik < kv.get_nks(); ++ik) - // { - // vxc_k_ao.set_zero_hk(); - // dynamic_cast*>(vxcs_op_ao[kv.isk[ik]])->contributeHk(ik); - - // // output Vxc(k) (test) - // const TK* const hk = vxc_k_ao.get_hk(); - // std::cout << "ik=" << ik << ", Vxc(K): " << std::endl; - // for (int i = 0; i < pv->get_row_size(); i++) - // { - // for (int j = 0; j < pv->get_col_size(); j++) - // { - // std::cout << hk[j * pv->get_row_size() + i] << " "; - // } - // std::cout << std::endl; - // } - // } - - // 4. write Vxc(R) in csr format - for (int is = 0; is < nspin0; ++is) - { - std::set> all_R_coor = sparse_format::get_R_range(vxcs_R_ao[is]); - const std::string filename = "Vxc_R_spin" + std::to_string(is); - ModuleIO::save_sparse( - cal_HR_sparse(vxcs_R_ao[is], is, sparse_thr), - all_R_coor, - sparse_thr, - false, //binary - PARAM.globalv.global_out_dir + filename + ".csr", - *pv, - filename, - -1, - true); //all-reduce - } -} -} // namespace ModuleIO -#endif diff --git a/source/source_lcao/CMakeLists.txt b/source/source_lcao/CMakeLists.txt index da170bbb73..a793f5d5d0 100644 --- a/source/source_lcao/CMakeLists.txt +++ b/source/source_lcao/CMakeLists.txt @@ -14,26 +14,28 @@ if(ENABLE_LCAO) module_operator_lcao/op_dftu_lcao.cpp module_operator_lcao/deepks_lcao.cpp module_operator_lcao/op_exx_lcao.cpp - module_operator_lcao/overlap_new.cpp - module_operator_lcao/ekinetic_new.cpp - module_operator_lcao/nonlocal_new.cpp + module_operator_lcao/overlap.cpp + module_operator_lcao/ekinetic.cpp + module_operator_lcao/nonlocal.cpp module_operator_lcao/td_ekinetic_lcao.cpp module_operator_lcao/td_nonlocal_lcao.cpp module_operator_lcao/td_pot_hybrid.cpp module_operator_lcao/dspin_lcao.cpp module_operator_lcao/dftu_lcao.cpp - pulay_force_stress_center2.cpp + module_operator_lcao/operator_force_stress_utils.cpp + dftu_lcao.cpp + pulay_fs_center2.cpp FORCE_STRESS.cpp FORCE_gamma.cpp FORCE_k.cpp stress_tools.cpp edm.cpp - grid_init.cpp spar_dh.cpp spar_exx.cpp spar_hsr.cpp spar_st.cpp spar_u.cpp + LCAO_set.cpp LCAO_set_fs.cpp LCAO_set_st.cpp LCAO_nl_mu.cpp @@ -41,6 +43,10 @@ if(ENABLE_LCAO) LCAO_allocate.cpp LCAO_set_mat2d.cpp LCAO_init_basis.cpp + setup_exx.cpp + setup_deepks.cpp + setup_dm.cpp + rho_tau_lcao.cpp record_adj.cpp center2_orb.cpp center2_orb-orb11.cpp @@ -59,6 +65,10 @@ if(ENABLE_LCAO) add_coverage(hamilt_lcao) endif() + IF (BUILD_TESTING) + add_subdirectory(test) + endif() + endif() diff --git a/source/source_lcao/FORCE.h b/source/source_lcao/FORCE.h index 0382bdde71..553cdfad76 100644 --- a/source/source_lcao/FORCE.h +++ b/source/source_lcao/FORCE.h @@ -1,5 +1,5 @@ -#ifndef W_ABACUS_DEVELOP_ABACUS_DEVELOP_SOURCE_MODULE_HAMILT_LCAO_HAMILT_LCAODFT_FORCE_H -#define W_ABACUS_DEVELOP_ABACUS_DEVELOP_SOURCE_MODULE_HAMILT_LCAO_HAMILT_LCAODFT_FORCE_H +#ifndef LCAO_FORCE_H +#define LCAO_FORCE_H #include "source_base/global_function.h" #include "source_base/global_variable.h" @@ -10,25 +10,8 @@ #include "source_estate/module_pot/potential_new.h" #include "source_lcao/force_stress_arrays.h" #include "source_lcao/module_deepks/LCAO_deepks.h" -#include "source_lcao/module_gint/gint_gamma.h" -#include "source_lcao/module_gint/gint_k.h" #include "source_psi/psi.h" - -#ifndef TGINT_H -#define TGINT_H -template -struct TGint; -template <> -struct TGint -{ - using type = Gint_Gamma; -}; -template <> -struct TGint> -{ - using type = Gint_k; -}; -#endif +#include "source_lcao/setup_deepks.h" template class Force_Stress_LCAO; @@ -43,9 +26,9 @@ class Force_LCAO ~Force_LCAO(){}; private: - const Parallel_Orbitals* ParaV; + const Parallel_Orbitals* ParaV = nullptr; - elecstate::Potential* pot; + elecstate::Potential* pot = nullptr; // orthonormal force + contribution from T and VNL void ftable(const bool isforce, @@ -54,8 +37,9 @@ class Force_LCAO const UnitCell& ucell, const Grid_Driver& gd, const psi::Psi* psi, - const elecstate::ElecState* pelec, - ModuleBase::matrix& foverlap, + const elecstate::ElecState* pelec, + const elecstate::DensityMatrix* dm, // mohan add 2025-11-04 + ModuleBase::matrix& foverlap, ModuleBase::matrix& ftvnl_dphi, ModuleBase::matrix& fvnl_dbeta, ModuleBase::matrix& fvl_dphi, @@ -63,12 +47,9 @@ class Force_LCAO ModuleBase::matrix& stvnl_dphi, ModuleBase::matrix& svnl_dbeta, ModuleBase::matrix& svl_dphi, -#ifdef __MLALGO ModuleBase::matrix& fvnl_dalpha, ModuleBase::matrix& svnl_dalpha, - LCAO_Deepks& ld, -#endif - typename TGint::type& gint, + Setup_DeePKS& deepks, const TwoCenterBundle& two_center_bundle, const LCAO_Orbitals& orb, const Parallel_Orbitals& pv, @@ -128,7 +109,6 @@ class Force_LCAO void cal_fvl_dphi(const bool isforce, const bool isstress, const elecstate::Potential* pot_in, - typename TGint::type& gint, ModuleBase::matrix& fvl_dphi, ModuleBase::matrix& svl_dphi); diff --git a/source/source_lcao/FORCE_STRESS.cpp b/source/source_lcao/FORCE_STRESS.cpp index cd6230b061..6ae974bf78 100644 --- a/source/source_lcao/FORCE_STRESS.cpp +++ b/source/source_lcao/FORCE_STRESS.cpp @@ -1,8 +1,7 @@ #include "FORCE_STRESS.h" #include "source_lcao/module_dftu/dftu.h" //Quxin add for DFT+U on 20201029 -#include "source_pw/module_pwdft/global.h" -#include "source_io/output_log.h" +#include "source_io/module_output/output_log.h" #include "source_io/module_parameter/parameter.h" // new #include "source_base/timer.h" @@ -20,7 +19,38 @@ #endif #include "source_lcao/module_operator_lcao/dftu_lcao.h" #include "source_lcao/module_operator_lcao/dspin_lcao.h" -#include "source_lcao/module_operator_lcao/nonlocal_new.h" +#include "source_lcao/module_operator_lcao/nonlocal.h" +#include "source_lcao/module_operator_lcao/ekinetic.h" +#include "source_lcao/module_operator_lcao/overlap.h" +#include "source_lcao/pulay_fs.h" + + +// mohan add 2025-11-04 +template <> +void assign_dmk_ptr( + elecstate::DensityMatrix* dm, + std::vector>*& dmk_d, + std::vector>>*& dmk_c, + bool gamma_only_local +) { + auto& dmk_tmp = dm->get_DMK_vector(); + dmk_d = &dmk_tmp; + dmk_c = nullptr; +} + +template <> +void assign_dmk_ptr>( + elecstate::DensityMatrix,double>* dm, + std::vector>*& dmk_d, + std::vector>>*& dmk_c, + bool gamma_only_local +) { + auto& dmk_tmp = dm->get_DMK_vector(); + dmk_c = &dmk_tmp; + dmk_d = nullptr; +} + + template Force_Stress_LCAO::Force_Stress_LCAO(Record_adj& ra, const int nat_in) : RA(&ra), nat(nat_in) @@ -39,9 +69,8 @@ void Force_Stress_LCAO::getForceStress(UnitCell& ucell, const Grid_Driver& gd, Parallel_Orbitals& pv, const elecstate::ElecState* pelec, + LCAO_domain::Setup_DM &dmat, // mohan add 2025-11-03 const psi::Psi* psi, - Gint_Gamma& gint_gamma, // mohan add 2024-04-01 - Gint_k& gint_k, // mohan add 2024-04-01 const TwoCenterBundle& two_center_bundle, const LCAO_Orbitals& orb, ModuleBase::matrix& fcs, @@ -50,14 +79,10 @@ void Force_Stress_LCAO::getForceStress(UnitCell& ucell, const Structure_Factor& sf, const K_Vectors& kv, ModulePW::PW_Basis* rhopw, - surchem& solvent, -#ifdef __MLALGO - LCAO_Deepks& ld, -#endif -#ifdef __EXX - Exx_LRI_Interface& exd, - Exx_LRI_Interface>& exc, -#endif + surchem& solvent, + Plus_U &dftu, // mohan add 2025-11-07 + Setup_DeePKS& deepks, + Exx_NAO &exx_nao, ModuleSymmetry::Symmetry* symm) { ModuleBase::TITLE("Force_Stress_LCAO", "getForceStress"); @@ -71,7 +96,8 @@ void Force_Stress_LCAO::getForceStress(UnitCell& ucell, const int nat = ucell.nat; - ForceStressArrays fsr; // mohan add 2024-06-15 + // NOTE: ForceStressArrays is no longer needed as we use operator-based force calculation + // ForceStressArrays fsr; // removed - no longer needed // total force : ModuleBase::matrix fcs; @@ -84,39 +110,25 @@ void Force_Stress_LCAO::getForceStress(UnitCell& ucell, ModuleBase::matrix fewalds; ModuleBase::matrix fcc; ModuleBase::matrix fscc; -#ifdef __MLALGO ModuleBase::matrix fvnl_dalpha; // deepks -#endif fvl_dphi.create(nat, 3); // must do it now, update it later, noted by zhengdy if (isforce) { fcs.create(nat, 3); - foverlap.create(nat, 3); - ftvnl_dphi.create(nat, 3); - fvnl_dbeta.create(nat, 3); - fvl_dvl.create(nat, 3); - fewalds.create(nat, 3); - fcc.create(nat, 3); - fscc.create(nat, 3); -#ifdef __MLALGO + foverlap.create(nat, 3); // overlap force + ftvnl_dphi.create(nat, 3); // pulay force of NAO + fvnl_dbeta.create(nat, 3); // pulay force of non-local projectors + fvl_dvl.create(nat, 3); // force from local potentials + fewalds.create(nat, 3); // Ewald force + fcc.create(nat, 3); // force due to core correction + fscc.create(nat, 3); // force due to self-consistent field fvnl_dalpha.create(nat, 3); // deepks -#endif // calculate basic terms in Force, same method with PW base - this->calForcePwPart(ucell, - fvl_dvl, - fewalds, - fcc, - fscc, - pelec->f_en.etxc, - pelec->vnew, - pelec->vnew_exist, - pelec->charge, - rhopw, - locpp, - sf); + this->calForcePwPart(ucell, fvl_dvl, fewalds, fcc, fscc, pelec->f_en.etxc, + pelec->vnew, pelec->vnew_exist, pelec->charge, rhopw, locpp, sf); } // total stress : ModuleBase::matrix scs @@ -129,9 +141,7 @@ void Force_Stress_LCAO::getForceStress(UnitCell& ucell, ModuleBase::matrix stvnl_dphi; ModuleBase::matrix svnl_dbeta; ModuleBase::matrix svl_dphi; -#ifdef __MLALGO ModuleBase::matrix svnl_dalpha; // deepks -#endif //! stress if (isstress) @@ -147,96 +157,147 @@ void Force_Stress_LCAO::getForceStress(UnitCell& ucell, stvnl_dphi.create(3, 3); svnl_dbeta.create(3, 3); svl_dphi.create(3, 3); -#ifdef __MLALGO svnl_dalpha.create(3, 3); -#endif + // calculate basic terms in Stress, similar method with PW base - this->calStressPwPart(ucell, - sigmadvl, - sigmahar, - sigmaewa, - sigmacc, - sigmaxc, - pelec->f_en.etxc, - pelec->charge, - rhopw, - locpp, - sf); + this->calStressPwPart(ucell, sigmadvl, sigmahar, sigmaewa, sigmacc, + sigmaxc, pelec->f_en.etxc, pelec->charge, rhopw, locpp, sf); } - //! atomic forces from integration (4 terms) - this->integral_part(PARAM.globalv.gamma_only_local, - isforce, - isstress, - ucell, - gd, - fsr, - pelec, - psi, - foverlap, - ftvnl_dphi, - fvnl_dbeta, - fvl_dphi, - soverlap, - stvnl_dphi, - svnl_dbeta, - svl_dphi, -#ifdef __MLALGO - fvnl_dalpha, - svnl_dalpha, - ld, -#endif - gint_gamma, - gint_k, - two_center_bundle, - orb, - pv, - kv); - // calculate force and stress for Nonlocal part + // Calculate forces and stresses using new operator-based methods + // Step 1: Calculate Energy Density Matrix (EDM) for overlap force + // EDM = Σ_k w_k * ε_k * |ψ_k><ψ_k| + elecstate::DensityMatrix edm = flk.cal_edm(pelec, *psi, *dmat.dm, kv, pv, + PARAM.inp.nspin, PARAM.inp.nbands, ucell, *this->RA); + + // Step 2: Handle different spin cases if (PARAM.inp.nspin == 1 || PARAM.inp.nspin == 2) { - hamilt::NonlocalNew> tmp_nonlocal(nullptr, - kv.kvec_d, - nullptr, - &ucell, - orb.cutoffs(), - &gd, - two_center_bundle.overlap_orb_beta.get()); - - const auto* dm_p = dynamic_cast*>(pelec)->get_DM(); + // For nspin=1 or nspin=2, use double precision + // Switch to spin channel 1 for DMR access if (PARAM.inp.nspin == 2) { - const_cast*>(dm_p)->switch_dmr(1); + dmat.dm->switch_dmr(1); + edm.switch_dmr(1); + } + + const hamilt::HContainer* dmR = dmat.dm->get_DMR_pointer(1); + const hamilt::HContainer* edmR = edm.get_DMR_pointer(1); + + // Calculate kinetic force/stress (uses DM) + if (PARAM.inp.t_in_h) + { + hamilt::EKinetic> tmp_ekinetic( + nullptr, kv.kvec_d, nullptr, &ucell, orb.cutoffs(), &gd, + two_center_bundle.kinetic_orb.get()); + tmp_ekinetic.cal_force_stress(isforce, isstress, dmR, ftvnl_dphi, stvnl_dphi); } - const hamilt::HContainer* dmr = dm_p->get_DMR_pointer(1); - tmp_nonlocal.cal_force_stress(isforce, isstress, dmr, fvnl_dbeta, svnl_dbeta); + + // Calculate overlap force/stress (uses EDM) + hamilt::Overlap> tmp_overlap( + nullptr, kv.kvec_d, nullptr, nullptr, &ucell, orb.cutoffs(), &gd, + two_center_bundle.overlap_orb.get()); + tmp_overlap.cal_force_stress(isforce, isstress, edmR, foverlap, soverlap); + + // Calculate nonlocal force/stress (uses DM) + hamilt::Nonlocal> tmp_nonlocal( + nullptr, kv.kvec_d, nullptr, &ucell, orb.cutoffs(), &gd, + two_center_bundle.overlap_orb_beta.get()); + tmp_nonlocal.cal_force_stress(isforce, isstress, dmR, fvnl_dbeta, svnl_dbeta); + + // Switch back to spin channel 0 if (PARAM.inp.nspin == 2) { - const_cast*>(dm_p)->switch_dmr(0); + dmat.dm->switch_dmr(0); + edm.switch_dmr(0); } + + // Calculate local potential force/stress (vl_dphi) + // This uses grid integration, not operator-based method + flk.ParaV = dmat.dm->get_paraV_pointer(); + PulayForceStress::cal_pulay_fs(fvl_dphi, svl_dphi, *dmat.dm, ucell, pelec->pot, + isforce, isstress, false /*reset dm to gint*/); } else if (PARAM.inp.nspin == 4) { - hamilt::NonlocalNew, std::complex>> tmp_nonlocal( - nullptr, - kv.kvec_d, - nullptr, - &ucell, - orb.cutoffs(), - &gd, - two_center_bundle.overlap_orb_beta.get()); - // calculate temporary complex DMR for nonlocal force&stress - // In fact, only SOC part need the imaginary part of DMR for correct force&stress - const auto* dm_p = dynamic_cast>*>(pelec)->get_DM(); - hamilt::HContainer> tmp_dmr(dm_p->get_DMR_pointer(1)->get_paraV()); - std::vector ijrs = dm_p->get_DMR_pointer(1)->get_ijr_info(); + // Calculate kinetic force/stress (uses DM) + if (PARAM.inp.t_in_h) + { + hamilt::EKinetic, std::complex>> tmp_ekinetic( + nullptr, kv.kvec_d, nullptr, &ucell, orb.cutoffs(), &gd, + two_center_bundle.kinetic_orb.get()); + tmp_ekinetic.cal_force_stress(isforce, isstress, dmat.dm->get_DMR_pointer(1), ftvnl_dphi, stvnl_dphi); + } + + // Calculate overlap force/stress (uses EDM) + hamilt::Overlap, std::complex>> tmp_overlap( + nullptr, kv.kvec_d, nullptr, nullptr, &ucell, orb.cutoffs(), &gd, + two_center_bundle.overlap_orb.get()); + tmp_overlap.cal_force_stress(isforce, isstress, edm.get_DMR_pointer(1), foverlap, soverlap); + + // For nspin=4 (non-collinear), need complex DMR + // Create temporary complex DMR for DM + hamilt::HContainer> tmp_dmr(dmat.dm->get_DMR_pointer(1)->get_paraV()); + std::vector ijrs = dmat.dm->get_DMR_pointer(1)->get_ijr_info(); tmp_dmr.insert_ijrs(&ijrs); tmp_dmr.allocate(); - dm_p->cal_DMR_full(&tmp_dmr); + dmat.dm->cal_DMR_full(&tmp_dmr); + // Calculate nonlocal force/stress (uses DM) + hamilt::Nonlocal, std::complex>> tmp_nonlocal( + nullptr, kv.kvec_d, nullptr, &ucell, orb.cutoffs(), &gd, + two_center_bundle.overlap_orb_beta.get()); tmp_nonlocal.cal_force_stress(isforce, isstress, &tmp_dmr, fvnl_dbeta, svnl_dbeta); + + // Calculate local potential force/stress (vl_dphi) + flk.ParaV = dmat.dm->get_paraV_pointer(); + PulayForceStress::cal_pulay_fs(fvl_dphi, svl_dphi, *dmat.dm, ucell, pelec->pot, + isforce, isstress, false /*reset dm to gint*/); + } + + // MPI reduction for forces + if (isforce) + { + Parallel_Reduce::reduce_pool(fvl_dphi.c, fvl_dphi.nr * fvl_dphi.nc); + } + + // MPI reduction for stresses + if (isstress) + { + Parallel_Reduce::reduce_pool(svl_dphi.c, svl_dphi.nr * svl_dphi.nc); } + // Handle DeePKS forces if enabled +#ifdef __MLALGO + if (PARAM.inp.deepks_scf) + { + const int nks = (PARAM.inp.nspin == 1 || PARAM.inp.nspin == 2) ? 1 : kv.get_nks(); + if (PARAM.globalv.gamma_only_local) + { + DeePKS_domain::cal_f_delta(deepks.ld.dm_r, ucell, orb, gd, + *flk.ParaV, nks, deepks.ld.deepks_param, + kv.kvec_d, deepks.ld.phialpha, deepks.ld.gedm, + fvnl_dalpha, isstress, svnl_dalpha); + } + else + { + DeePKS_domain::cal_f_delta>(deepks.ld.dm_r, ucell, orb, gd, + *flk.ParaV, nks, deepks.ld.deepks_param, + kv.kvec_d, deepks.ld.phialpha, deepks.ld.gedm, + fvnl_dalpha, isstress, svnl_dalpha); + } + + if (isforce) + { + Parallel_Reduce::reduce_pool(fvnl_dalpha.c, fvnl_dalpha.nr * fvnl_dalpha.nc); + } + if (isstress) + { + Parallel_Reduce::reduce_pool(svnl_dalpha.c, svnl_dalpha.nr * svnl_dalpha.nc); + } + } +#endif + //! forces and stress from vdw // Peize Lin add 2014-04-04, update 2021-03-09 // jiyy add 2019-05-18, update 2021-05-02 @@ -295,35 +356,40 @@ void Force_Stress_LCAO::getForceStress(UnitCell& ucell, } //! atomic forces from DFT+U (Quxin version) - ModuleBase::matrix force_dftu; - ModuleBase::matrix stress_dftu; + ModuleBase::matrix force_u; + ModuleBase::matrix stress_u; if (PARAM.inp.dft_plus_u) // Quxin add for DFT+U on 20201029 { if (isforce) { - force_dftu.create(nat, 3); + force_u.create(nat, 3); } if (isstress) { - stress_dftu.create(3, 3); + stress_u.create(3, 3); } if (PARAM.inp.dft_plus_u == 2) { - GlobalC::dftu.force_stress(ucell, gd, pelec, pv, fsr, force_dftu, stress_dftu, kv); + // Old DFT+U implementation (dft_plus_u==2) still needs ForceStressArrays + ForceStressArrays fsr_dftu; + std::vector>* dmk_d = nullptr; + std::vector>>* dmk_c = nullptr; + assign_dmk_ptr(dmat.dm, dmk_d, dmk_c, PARAM.globalv.gamma_only_local); + dftu.force_stress(ucell, gd, dmk_d, dmk_c, pv, fsr_dftu, force_u, stress_u, kv); } else { - hamilt::DFTU> tmp_dftu(nullptr, // HK and SK are not used for force&stress + hamilt::DFTU> tmpu(nullptr, // HK and SK are not used for force&stress kv.kvec_d, nullptr, // HR are not used for force&stress ucell, &gd, two_center_bundle.overlap_orb_onsite.get(), orb.cutoffs(), - &GlobalC::dftu); + &dftu); - tmp_dftu.cal_force_stress(isforce, isstress, force_dftu, stress_dftu); + tmpu.cal_force_stress(isforce, isstress, force_u, stress_u); } } @@ -349,23 +415,23 @@ void Force_Stress_LCAO::getForceStress(UnitCell& ucell, two_center_bundle.overlap_orb_onsite.get(), orb.cutoffs()); - const auto* dm_p = dynamic_cast>*>(pelec)->get_DM(); if (PARAM.inp.nspin == 2) { - const_cast, double>*>(dm_p)->switch_dmr(2); + dmat.dm->switch_dmr(2); } - const hamilt::HContainer* dmr = dm_p->get_DMR_pointer(1); + const hamilt::HContainer* dmr = dmat.dm->get_DMR_pointer(1); tmp_dspin.cal_force_stress(isforce, isstress, dmr, force_dspin, stress_dspin); if (PARAM.inp.nspin == 2) { - const_cast, double>*>(dm_p)->switch_dmr(0); + dmat.dm->switch_dmr(0); } } - if (!PARAM.globalv.gamma_only_local) - { - this->flk.finish_ftable(fsr); - } + // NOTE: finish_ftable is no longer needed as we don't use ForceStressArrays for overlap/kinetic + // if (!PARAM.globalv.gamma_only_local) + // { + // this->flk.finish_ftable(fsr); + // } #ifdef __EXX // Force and Stress contribution from exx @@ -377,26 +443,26 @@ void Force_Stress_LCAO::getForceStress(UnitCell& ucell, { if (GlobalC::exx_info.info_ri.real_number) { - exd.cal_exx_force(ucell.nat); - force_exx = GlobalC::exx_info.info_global.hybrid_alpha * exd.get_force(); + exx_nao.exd->cal_exx_force(ucell.nat); + force_exx = GlobalC::exx_info.info_global.hybrid_alpha * exx_nao.exd->get_force(); } else { - exc.cal_exx_force(ucell.nat); - force_exx = GlobalC::exx_info.info_global.hybrid_alpha * exc.get_force(); + exx_nao.exc->cal_exx_force(ucell.nat); + force_exx = GlobalC::exx_info.info_global.hybrid_alpha * exx_nao.exc->get_force(); } } if (isstress) { if (GlobalC::exx_info.info_ri.real_number) { - exd.cal_exx_stress(ucell.omega, ucell.lat0); - stress_exx = GlobalC::exx_info.info_global.hybrid_alpha * exd.get_stress(); + exx_nao.exd->cal_exx_stress(ucell.omega, ucell.lat0); + stress_exx = GlobalC::exx_info.info_global.hybrid_alpha * exx_nao.exd->get_stress(); } else { - exc.cal_exx_stress(ucell.omega, ucell.lat0); - stress_exx = GlobalC::exx_info.info_global.hybrid_alpha * exc.get_stress(); + exx_nao.exc->cal_exx_stress(ucell.omega, ucell.lat0); + stress_exx = GlobalC::exx_info.info_global.hybrid_alpha * exx_nao.exc->get_stress(); } } } @@ -424,7 +490,7 @@ void Force_Stress_LCAO::getForceStress(UnitCell& ucell, // Force contribution from DFT+U, Quxin add on 20201029 if (PARAM.inp.dft_plus_u) { - fcs(iat, i) += force_dftu(iat, i); + fcs(iat, i) += force_u(iat, i); } if (PARAM.inp.sc_mag_switch) { @@ -493,30 +559,9 @@ void Force_Stress_LCAO::getForceStress(UnitCell& ucell, this->forceSymmetry(ucell, fcs, symm); } -#ifdef __MLALGO - // DeePKS force - if (PARAM.inp.deepks_out_labels) // not parallelized yet - { - const std::string file_ftot = PARAM.globalv.global_out_dir - + (PARAM.inp.deepks_out_labels == 1 ? "deepks_ftot.npy" : "deepks_force.npy"); - LCAO_deepks_io::save_matrix2npy(file_ftot, fcs, GlobalV::MY_RANK); // Hartree/Bohr, F_tot + // compute forces using the DeePKS model + deepks.write_forces(fcs, fvnl_dalpha, PARAM.inp); - if (PARAM.inp.deepks_out_labels == 1) - { - const std::string file_fbase = PARAM.globalv.global_out_dir + "deepks_fbase.npy"; - if (PARAM.inp.deepks_scf) - { - LCAO_deepks_io::save_matrix2npy(file_fbase, - fcs - fvnl_dalpha, - GlobalV::MY_RANK); // Hartree/Bohr, F_base - } - else - { - LCAO_deepks_io::save_matrix2npy(file_fbase, fcs, GlobalV::MY_RANK); // no scf, F_base=F_tot - } - } - } -#endif // print Rydberg force or not bool ry = false; if (istestf) @@ -543,8 +588,8 @@ void Force_Stress_LCAO::getForceStress(UnitCell& ucell, //----------------------------- // this->print_force("OVERLAP FORCE",foverlap,1,ry); ModuleIO::print_force(GlobalV::ofs_running, ucell, "OVERLAP FORCE", foverlap, false); - // this->print_force("TVNL_DPHI force",ftvnl_dphi,PARAM.inp.test_force); - // this->print_force("VNL_DBETA force",fvnl_dbeta,PARAM.inp.test_force); + ModuleIO::print_force(GlobalV::ofs_running, ucell, "TVNL_DPHI force",ftvnl_dphi,false); + ModuleIO::print_force(GlobalV::ofs_running, ucell, "VNL_DBETA force",fvnl_dbeta,false); // this->print_force("T_VNL FORCE",ftvnl,1,ry); ModuleIO::print_force(GlobalV::ofs_running, ucell, "T_VNL FORCE", ftvnl, false); ModuleIO::print_force(GlobalV::ofs_running, ucell, "VL_dPHI FORCE", fvl_dphi, false); @@ -588,7 +633,7 @@ void Force_Stress_LCAO::getForceStress(UnitCell& ucell, } if (PARAM.inp.dft_plus_u) { - ModuleIO::print_force(GlobalV::ofs_running, ucell, "DFT+U FORCE", force_dftu, false); + ModuleIO::print_force(GlobalV::ofs_running, ucell, "DFT+U FORCE", force_u, false); } if (PARAM.inp.sc_mag_switch) { @@ -617,7 +662,7 @@ void Force_Stress_LCAO::getForceStress(UnitCell& ucell, GlobalV::ofs_running << " " << std::setw(8) << iat; for (int i = 0; i < 3; i++) { - if (std::abs(fcs(iat, i) * ModuleBase::Ry_to_eV / 0.529177) + if (std::abs(fcs(iat, i) * ModuleBase::Ry_to_eV / ModuleBase::BOHR_TO_A) < Force_Stress_LCAO::force_invalid_threshold_ev) { fcs(iat, i) = 0.0; @@ -656,7 +701,7 @@ void Force_Stress_LCAO::getForceStress(UnitCell& ucell, // DFT plus U stress from qux if (PARAM.inp.dft_plus_u) { - scs(i, j) += stress_dftu(i, j); + scs(i, j) += stress_u(i, j); } if (PARAM.inp.sc_mag_switch) { @@ -682,41 +727,7 @@ void Force_Stress_LCAO::getForceStress(UnitCell& ucell, symm->symmetrize_mat3(scs, ucell.lat); } // end symmetry -#ifdef __MLALGO - if (PARAM.inp.deepks_out_labels == 1) - { - const std::string file_stot = PARAM.globalv.global_out_dir + "deepks_stot.npy"; - LCAO_deepks_io::save_matrix2npy(file_stot, - scs, - GlobalV::MY_RANK, - ucell.omega, - 'U'); // change to energy unit Ry when printing, S_tot; - - const std::string file_sbase = PARAM.globalv.global_out_dir + "deepks_sbase.npy"; - if (PARAM.inp.deepks_scf) - { - LCAO_deepks_io::save_matrix2npy(file_sbase, - scs - svnl_dalpha, - GlobalV::MY_RANK, - ucell.omega, - 'U'); // change to energy unit Ry when printing, S_base; - } - else - { - LCAO_deepks_io::save_matrix2npy(file_sbase, - scs, - GlobalV::MY_RANK, - ucell.omega, - 'U'); // sbase = stot - } - } - else if (PARAM.inp.deepks_out_labels == 2) - { - const std::string file_stot = PARAM.globalv.global_out_dir + "deepks_stress.npy"; - LCAO_deepks_io::save_matrix2npy(file_stot, scs, GlobalV::MY_RANK, ucell.omega, - 'F'); // flat mode - } -#endif + deepks.write_stress(scs, svnl_dalpha, ucell.omega, PARAM.inp); // print Rydberg stress or not bool ry = false; @@ -759,7 +770,7 @@ void Force_Stress_LCAO::getForceStress(UnitCell& ucell, } if (PARAM.inp.dft_plus_u) { - ModuleIO::print_stress("DFTU STRESS", stress_dftu, screen, ry, GlobalV::ofs_running); + ModuleIO::print_stress("DFTU STRESS", stress_u, screen, ry, GlobalV::ofs_running); } if (PARAM.inp.sc_mag_switch) { @@ -829,116 +840,69 @@ void Force_Stress_LCAO::calForcePwPart(UnitCell& ucell, // overlap, kinetic, nonlocal pseudopotential, Local potential terms in force and stress template <> void Force_Stress_LCAO::integral_part(const bool isGammaOnly, - const bool isforce, - const bool isstress, - const UnitCell& ucell, - const Grid_Driver& gd, - ForceStressArrays& fsr, // mohan add 2024-06-15 - const elecstate::ElecState* pelec, - const psi::Psi* psi, - ModuleBase::matrix& foverlap, - ModuleBase::matrix& ftvnl_dphi, - ModuleBase::matrix& fvnl_dbeta, - ModuleBase::matrix& fvl_dphi, - ModuleBase::matrix& soverlap, - ModuleBase::matrix& stvnl_dphi, - ModuleBase::matrix& svnl_dbeta, - ModuleBase::matrix& svl_dphi, -#if __MLALGO - ModuleBase::matrix& fvnl_dalpha, - ModuleBase::matrix& svnl_dalpha, - LCAO_Deepks& ld, -#endif - Gint_Gamma& gint_gamma, // mohan add 2024-04-01 - Gint_k& gint_k, // mohan add 2024-04-01 - const TwoCenterBundle& two_center_bundle, - const LCAO_Orbitals& orb, - const Parallel_Orbitals& pv, - const K_Vectors& kv) + const bool isforce, + const bool isstress, + const UnitCell& ucell, + const Grid_Driver& gd, + ForceStressArrays& fsr, // mohan add 2024-06-15 + const elecstate::ElecState* pelec, + const elecstate::DensityMatrix* dm, // mohan add 2025-11-04 + const psi::Psi* psi, + ModuleBase::matrix& foverlap, + ModuleBase::matrix& ftvnl_dphi, + ModuleBase::matrix& fvnl_dbeta, + ModuleBase::matrix& fvl_dphi, + ModuleBase::matrix& soverlap, + ModuleBase::matrix& stvnl_dphi, + ModuleBase::matrix& svnl_dbeta, + ModuleBase::matrix& svl_dphi, + ModuleBase::matrix& fvnl_dalpha, + ModuleBase::matrix& svnl_dalpha, + Setup_DeePKS& deepks, + const TwoCenterBundle& two_center_bundle, + const LCAO_Orbitals& orb, + const Parallel_Orbitals& pv, + const K_Vectors& kv) { - flk.ftable(isforce, - isstress, - fsr, // mohan add 2024-06-15 - ucell, - gd, - psi, - pelec, - foverlap, - ftvnl_dphi, - fvnl_dbeta, - fvl_dphi, - soverlap, - stvnl_dphi, - svnl_dbeta, - svl_dphi, -#if __MLALGO - fvnl_dalpha, - svnl_dalpha, - ld, -#endif - gint_gamma, - two_center_bundle, - orb, - pv); + flk.ftable(isforce, isstress, fsr, ucell, gd, psi, pelec, dm, + foverlap, ftvnl_dphi, fvnl_dbeta, fvl_dphi, + soverlap, stvnl_dphi, svnl_dbeta, svl_dphi, + fvnl_dalpha, svnl_dalpha, deepks, two_center_bundle, orb, pv); return; } template <> void Force_Stress_LCAO>::integral_part(const bool isGammaOnly, - const bool isforce, - const bool isstress, - const UnitCell& ucell, - const Grid_Driver& gd, - ForceStressArrays& fsr, // mohan add 2024-06-15 - const elecstate::ElecState* pelec, - const psi::Psi>* psi, - ModuleBase::matrix& foverlap, - ModuleBase::matrix& ftvnl_dphi, - ModuleBase::matrix& fvnl_dbeta, - ModuleBase::matrix& fvl_dphi, - ModuleBase::matrix& soverlap, - ModuleBase::matrix& stvnl_dphi, - ModuleBase::matrix& svnl_dbeta, - ModuleBase::matrix& svl_dphi, -#if __MLALGO - ModuleBase::matrix& fvnl_dalpha, - ModuleBase::matrix& svnl_dalpha, - LCAO_Deepks>& ld, -#endif - Gint_Gamma& gint_gamma, - Gint_k& gint_k, - const TwoCenterBundle& two_center_bundle, - const LCAO_Orbitals& orb, - const Parallel_Orbitals& pv, - const K_Vectors& kv) + const bool isforce, + const bool isstress, + const UnitCell& ucell, + const Grid_Driver& gd, + ForceStressArrays& fsr, // mohan add 2024-06-15 + const elecstate::ElecState* pelec, + const elecstate::DensityMatrix, double>* dm, // mohan add 2025-11-04 + const psi::Psi>* psi, + ModuleBase::matrix& foverlap, + ModuleBase::matrix& ftvnl_dphi, + ModuleBase::matrix& fvnl_dbeta, + ModuleBase::matrix& fvl_dphi, + ModuleBase::matrix& soverlap, + ModuleBase::matrix& stvnl_dphi, + ModuleBase::matrix& svnl_dbeta, + ModuleBase::matrix& svl_dphi, + ModuleBase::matrix& fvnl_dalpha, + ModuleBase::matrix& svnl_dalpha, + Setup_DeePKS>& deepks, + const TwoCenterBundle& two_center_bundle, + const LCAO_Orbitals& orb, + const Parallel_Orbitals& pv, + const K_Vectors& kv) { - flk.ftable(isforce, - isstress, - fsr, // mohan add 2024-06-16 - ucell, - gd, - psi, - pelec, - foverlap, - ftvnl_dphi, - fvnl_dbeta, - fvl_dphi, - soverlap, - stvnl_dphi, - svnl_dbeta, - svl_dphi, -#if __MLALGO - fvnl_dalpha, - svnl_dalpha, - ld, -#endif - gint_k, - two_center_bundle, - orb, - pv, - &kv, - this->RA); + flk.ftable(isforce, isstress, fsr, ucell, gd, psi, pelec, dm, + foverlap, ftvnl_dphi, fvnl_dbeta, fvl_dphi, + soverlap, stvnl_dphi, svnl_dbeta, svl_dphi, + fvnl_dalpha, svnl_dalpha, deepks, + two_center_bundle, orb, pv, &kv, this->RA); return; } @@ -957,30 +921,20 @@ void Force_Stress_LCAO::calStressPwPart(UnitCell& ucell, const Structure_Factor& sf) { ModuleBase::TITLE("Force_Stress_LCAO", "calStressPwPart"); - //-------------------------------------------------------- + // local pseudopotential stress: - // use charge density; plane wave; local pseudopotential; - //-------------------------------------------------------- sc_pw.stress_loc(ucell, sigmadvl, rhopw, locpp.vloc, &sf, 0, chr); - //-------------------------------------------------------- // hartree term - //-------------------------------------------------------- sc_pw.stress_har(ucell, sigmahar, rhopw, 0, chr); - //-------------------------------------------------------- // ewald stress: use plane wave only. - //-------------------------------------------------------- sc_pw.stress_ewa(ucell, sigmaewa, rhopw, 0); // remain problem - //-------------------------------------------------------- // stress due to core correlation. - //-------------------------------------------------------- sc_pw.stress_cc(sigmacc, rhopw, ucell, &sf, 0, locpp.numeric, chr); - //-------------------------------------------------------- // stress due to self-consistent charge. - //-------------------------------------------------------- for (int i = 0; i < 3; i++) { sigmaxc(i, i) = -etxc / ucell.omega; @@ -999,21 +953,9 @@ void Force_Stress_LCAO::forceSymmetry(const UnitCell& ucell, ModuleBase::matr double d1, d2, d3; for (int iat = 0; iat < ucell.nat; iat++) { - ModuleBase::Mathzone::Cartesian_to_Direct(fcs(iat, 0), - fcs(iat, 1), - fcs(iat, 2), - ucell.a1.x, - ucell.a1.y, - ucell.a1.z, - ucell.a2.x, - ucell.a2.y, - ucell.a2.z, - ucell.a3.x, - ucell.a3.y, - ucell.a3.z, - d1, - d2, - d3); + ModuleBase::Mathzone::Cartesian_to_Direct(fcs(iat, 0), fcs(iat, 1), fcs(iat, 2), + ucell.a1.x, ucell.a1.y, ucell.a1.z, ucell.a2.x, ucell.a2.y, ucell.a2.z, + ucell.a3.x, ucell.a3.y, ucell.a3.z, d1, d2, d3); fcs(iat, 0) = d1; fcs(iat, 1) = d2; @@ -1022,21 +964,9 @@ void Force_Stress_LCAO::forceSymmetry(const UnitCell& ucell, ModuleBase::matr symm->symmetrize_vec3_nat(fcs.c); for (int iat = 0; iat < ucell.nat; iat++) { - ModuleBase::Mathzone::Direct_to_Cartesian(fcs(iat, 0), - fcs(iat, 1), - fcs(iat, 2), - ucell.a1.x, - ucell.a1.y, - ucell.a1.z, - ucell.a2.x, - ucell.a2.y, - ucell.a2.z, - ucell.a3.x, - ucell.a3.y, - ucell.a3.z, - d1, - d2, - d3); + ModuleBase::Mathzone::Direct_to_Cartesian(fcs(iat, 0), fcs(iat, 1), fcs(iat, 2), + ucell.a1.x, ucell.a1.y, ucell.a1.z, ucell.a2.x, ucell.a2.y, ucell.a2.z, + ucell.a3.x, ucell.a3.y, ucell.a3.z, d1, d2, d3); fcs(iat, 0) = d1; fcs(iat, 1) = d2; diff --git a/source/source_lcao/FORCE_STRESS.h b/source/source_lcao/FORCE_STRESS.h index d2400d7b69..1265664996 100644 --- a/source/source_lcao/FORCE_STRESS.h +++ b/source/source_lcao/FORCE_STRESS.h @@ -8,14 +8,17 @@ #include "source_pw/module_pwdft/forces.h" #include "source_pw/module_pwdft/stress_func.h" #include "source_pw/module_pwdft/structure_factor.h" -#include "source_io/input_conv.h" +#include "source_io/module_parameter/input_conv.h" #include "source_psi/psi.h" #ifdef __EXX #include "source_lcao/module_ri/Exx_LRI_interface.h" #endif #include "force_stress_arrays.h" -#include "source_lcao/module_gint/gint_gamma.h" -#include "source_lcao/module_gint/gint_k.h" +#include "source_lcao/setup_exx.h" // for exx, mohan add 20251008 +#include "source_lcao/setup_deepks.h" // for deepks, mohan add 20251010 +#include "source_lcao/setup_dm.h" // mohan add 2025-11-03 +#include "source_lcao/module_dftu/dftu.h" // mohan add 2025-11-07 + template class Force_Stress_LCAO @@ -37,9 +40,8 @@ class Force_Stress_LCAO const Grid_Driver& gd, Parallel_Orbitals& pv, const elecstate::ElecState* pelec, + LCAO_domain::Setup_DM &dmat, // mohan add 2025-11-03 const psi::Psi* psi, - Gint_Gamma& gint_gamma, // mohan add 2024-04-01 - Gint_k& gint_k, // mohan add 2024-04-01 const TwoCenterBundle& two_center_bundle, const LCAO_Orbitals& orb, ModuleBase::matrix& fcs, @@ -48,19 +50,15 @@ class Force_Stress_LCAO const Structure_Factor& sf, const K_Vectors& kv, ModulePW::PW_Basis* rhopw, - surchem& solvent, -#ifdef __MLALGO - LCAO_Deepks& ld, -#endif -#ifdef __EXX - Exx_LRI_Interface& exd, - Exx_LRI_Interface>& exc, -#endif + surchem& solvent, + Plus_U &dftu, // mohan add 2025-11-07 + Setup_DeePKS &deepks, + Exx_NAO &exx_nao, ModuleSymmetry::Symmetry* symm); private: int nat; - Record_adj* RA; + Record_adj* RA = nullptr; Force_LCAO flk; Stress_Func sc_pw; @@ -85,8 +83,9 @@ class Force_Stress_LCAO const UnitCell& ucell, const Grid_Driver& gd, ForceStressArrays& fsr, // mohan add 2024-06-15 - const elecstate::ElecState* pelec, - const psi::Psi* psi, + const elecstate::ElecState* pelec, + const elecstate::DensityMatrix* dm, // mohan add 2025-11-04 + const psi::Psi* psi, ModuleBase::matrix& foverlap, ModuleBase::matrix& ftvnl_dphi, ModuleBase::matrix& fvnl_dbeta, @@ -95,13 +94,9 @@ class Force_Stress_LCAO ModuleBase::matrix& stvnl_dphi, ModuleBase::matrix& svnl_dbeta, ModuleBase::matrix& svl_dphi, -#if __MLALGO ModuleBase::matrix& fvnl_dalpha, ModuleBase::matrix& svnl_dalpha, - LCAO_Deepks& ld, -#endif - Gint_Gamma& gint_gamma, - Gint_k& gint_k, + Setup_DeePKS& deepks, const TwoCenterBundle& two_center_bundle, const LCAO_Orbitals& orb, const Parallel_Orbitals& pv, @@ -125,4 +120,13 @@ class Force_Stress_LCAO template double Force_Stress_LCAO::force_invalid_threshold_ev = 0.00; +// only for DFT+U, mohan add 2025-11-04 +template +void assign_dmk_ptr( + elecstate::DensityMatrix* dm, + std::vector>*& dmk_d, + std::vector>>*& dmk_c, + bool gamma_only_local +); + #endif diff --git a/source/source_lcao/FORCE_gamma.cpp b/source/source_lcao/FORCE_gamma.cpp index 96f2537900..b7eb00a441 100644 --- a/source/source_lcao/FORCE_gamma.cpp +++ b/source/source_lcao/FORCE_gamma.cpp @@ -3,7 +3,6 @@ #include "source_base/parallel_reduce.h" #include "source_base/timer.h" #include "source_cell/module_neighbor/sltk_grid_driver.h" -#include "source_pw/module_pwdft/global.h" #include "source_io/module_parameter/parameter.h" #ifdef __MLALGO #include "source_lcao/module_deepks/LCAO_deepks.h" //caoyu add for deepks on 20210813 @@ -12,8 +11,8 @@ #include "source_cell/module_neighbor/sltk_grid_driver.h" //GridD #include "source_estate/elecstate_lcao.h" #include "source_lcao/LCAO_domain.h" -#include "source_lcao/pulay_force_stress.h" -#include "source_io/write_HS.h" +#include "source_lcao/pulay_fs.h" +#include "source_io/module_hs/write_HS.h" template <> void Force_LCAO::allocate(const UnitCell& ucell, @@ -110,14 +109,6 @@ void Force_LCAO::allocate(const UnitCell& ucell, &gd, nullptr); - // calculate asynchronous S matrix to output for Hefei-NAMD - if (PARAM.inp.cal_syns) - { - cal_deri = false; - ModuleBase::timer::tick("Forces", "allocate"); - ModuleBase::WARNING_QUIT("cal_syns", "this function has been broken and will be fixed later."); - } - ModuleBase::timer::tick("Forces", "allocate"); return; } @@ -158,21 +149,19 @@ void Force_LCAO::ftable(const bool isforce, const UnitCell& ucell, const Grid_Driver& gd, const psi::Psi* psi, - const elecstate::ElecState* pelec, - ModuleBase::matrix& foverlap, - ModuleBase::matrix& ftvnl_dphi, + const elecstate::ElecState* pelec, + const elecstate::DensityMatrix* dm, // mohan add 2025-11-04 + ModuleBase::matrix& foverlap, + ModuleBase::matrix& ftvnl_dphi, ModuleBase::matrix& fvnl_dbeta, ModuleBase::matrix& fvl_dphi, ModuleBase::matrix& soverlap, ModuleBase::matrix& stvnl_dphi, ModuleBase::matrix& svnl_dbeta, ModuleBase::matrix& svl_dphi, -#ifdef __MLALGO ModuleBase::matrix& fvnl_dalpha, ModuleBase::matrix& svnl_dalpha, - LCAO_Deepks& ld, -#endif - TGint::type& gint, + Setup_DeePKS& deepks, const TwoCenterBundle& two_center_bundle, const LCAO_Orbitals& orb, const Parallel_Orbitals& pv, @@ -182,10 +171,6 @@ void Force_LCAO::ftable(const bool isforce, ModuleBase::TITLE("Forces", "ftable"); ModuleBase::timer::tick("Forces", "ftable"); - // get DM - const elecstate::DensityMatrix* dm - = dynamic_cast*>(pelec)->get_DM(); - this->ParaV = dm->get_paraV_pointer(); // allocate DSloc_x, DSloc_y, DSloc_z @@ -222,7 +207,6 @@ void Force_LCAO::ftable(const bool isforce, *dm, ucell, pelec->pot, - gint, isforce, isstress, false /*reset dm to gint*/); @@ -232,16 +216,16 @@ void Force_LCAO::ftable(const bool isforce, { // No need to update E_delta here since it have been done in LCAO_Deepks_Interface in after_scf const int nks = 1; - DeePKS_domain::cal_f_delta(ld.dm_r, + DeePKS_domain::cal_f_delta(deepks.ld.dm_r, ucell, orb, gd, *this->ParaV, nks, + deepks.ld.deepks_param, kv->kvec_d, - ld.phialpha, - ld.gedm, - ld.inl_index, + deepks.ld.phialpha, + deepks.ld.gedm, fvnl_dalpha, isstress, svnl_dalpha); diff --git a/source/source_lcao/FORCE_k.cpp b/source/source_lcao/FORCE_k.cpp index 4e65f639e2..1ba2d435f0 100644 --- a/source/source_lcao/FORCE_k.cpp +++ b/source/source_lcao/FORCE_k.cpp @@ -9,9 +9,8 @@ #include "source_estate/elecstate_lcao.h" #include "source_estate/module_dm/cal_dm_psi.h" #include "source_lcao/LCAO_domain.h" -#include "source_lcao/pulay_force_stress.h" -#include "source_pw/module_pwdft/global.h" -#include "source_io/write_HS.h" +#include "source_lcao/pulay_fs.h" +#include "source_io/module_hs/write_HS.h" #include "source_io/module_parameter/parameter.h" #include @@ -133,33 +132,6 @@ void Force_LCAO>::allocate(const UnitCell& ucell, &gd, nullptr); // delete lm.Hloc_fixedR - // calculate asynchronous S matrix to output for Hefei-NAMD - if (PARAM.inp.cal_syns) - { - cal_deri = false; - - ModuleBase::WARNING_QUIT("cal_syns", "This function has been broken and will be fixed later."); - - LCAO_domain::build_ST_new(fsr, - 'S', - cal_deri, - PARAM.inp.cal_stress, - ucell, - orb, - pv, - two_center_bundle, - &(gd), - nullptr, // delete lm.SlocR - PARAM.inp.cal_syns, - PARAM.inp.dmax); - - for (int ik = 0; ik < nks; ik++) - { - - bool bit = false; // LiuXh, 2017-03-21 - } - } - ModuleBase::timer::tick("Forces", "allocate"); return; } @@ -190,38 +162,33 @@ void Force_LCAO>::finish_ftable(ForceStressArrays& fsr) // be called in Force_LCAO::start_force_calculation template <> void Force_LCAO>::ftable(const bool isforce, - const bool isstress, - ForceStressArrays& fsr, // mohan add 2024-06-15 - const UnitCell& ucell, - const Grid_Driver& gd, - const psi::Psi>* psi, - const elecstate::ElecState* pelec, - ModuleBase::matrix& foverlap, - ModuleBase::matrix& ftvnl_dphi, - ModuleBase::matrix& fvnl_dbeta, - ModuleBase::matrix& fvl_dphi, - ModuleBase::matrix& soverlap, - ModuleBase::matrix& stvnl_dphi, - ModuleBase::matrix& svnl_dbeta, - ModuleBase::matrix& svl_dphi, -#ifdef __MLALGO - ModuleBase::matrix& fvnl_dalpha, - ModuleBase::matrix& svnl_dalpha, - LCAO_Deepks>& ld, -#endif - TGint>::type& gint, - const TwoCenterBundle& two_center_bundle, - const LCAO_Orbitals& orb, - const Parallel_Orbitals& pv, - const K_Vectors* kv, - Record_adj* ra) + const bool isstress, + ForceStressArrays& fsr, // mohan add 2024-06-15 + const UnitCell& ucell, + const Grid_Driver& gd, + const psi::Psi>* psi, + const elecstate::ElecState* pelec, + const elecstate::DensityMatrix, double>* dm, // mohan add 2025-11-04 + ModuleBase::matrix& foverlap, + ModuleBase::matrix& ftvnl_dphi, + ModuleBase::matrix& fvnl_dbeta, + ModuleBase::matrix& fvl_dphi, + ModuleBase::matrix& soverlap, + ModuleBase::matrix& stvnl_dphi, + ModuleBase::matrix& svnl_dbeta, + ModuleBase::matrix& svl_dphi, + ModuleBase::matrix& fvnl_dalpha, + ModuleBase::matrix& svnl_dalpha, + Setup_DeePKS>& deepks, + const TwoCenterBundle& two_center_bundle, + const LCAO_Orbitals& orb, + const Parallel_Orbitals& pv, + const K_Vectors* kv, + Record_adj* ra) { ModuleBase::TITLE("Forces", "ftable"); ModuleBase::timer::tick("Forces", "ftable"); - elecstate::DensityMatrix , double>* dm - = dynamic_cast>*>(pelec)->get_DM(); - this->allocate(ucell, gd, pv, @@ -232,53 +199,40 @@ void Force_LCAO>::ftable(const bool isforce, kv->kvec_d); const double* dSx[3] = {fsr.DSloc_Rx, fsr.DSloc_Ry, fsr.DSloc_Rz}; + // calculate the energy density matrix // and the force related to overlap matrix and energy density matrix. PulayForceStress::cal_pulay_fs( - foverlap, - soverlap, + foverlap, soverlap, this->cal_edm(pelec, *psi, *dm, *kv, pv, PARAM.inp.nspin, PARAM.inp.nbands, ucell, *ra), - ucell, - pv, - dSx, - fsr.DH_r, - isforce, - isstress, - ra, - -1.0, - 1.0); + ucell, pv, dSx, fsr.DH_r, isforce, isstress, ra, -1.0, 1.0); const double* dHx[3] = {fsr.DHloc_fixedR_x, fsr.DHloc_fixedR_y, fsr.DHloc_fixedR_z}; // T+Vnl const double* dHxy[6] = {fsr.stvnl11, fsr.stvnl12, fsr.stvnl13, fsr.stvnl22, fsr.stvnl23, fsr.stvnl33}; // T + // tvnl_dphi PulayForceStress::cal_pulay_fs(ftvnl_dphi, stvnl_dphi, *dm, ucell, pv, dHx, dHxy, isforce, isstress, ra, 1.0, -1.0); // doing on the real space grid. // vl_dphi - PulayForceStress::cal_pulay_fs(fvl_dphi, - svl_dphi, - *dm, - ucell, - pelec->pot, - gint, - isforce, - isstress, + PulayForceStress::cal_pulay_fs(fvl_dphi, svl_dphi, *dm, ucell, + pelec->pot, isforce, isstress, false /*reset dm to gint*/); #ifdef __MLALGO if (PARAM.inp.deepks_scf) { // No need to update E_delta since it have been done in LCAO_Deepks_Interface in after_scf - DeePKS_domain::cal_f_delta>(ld.dm_r, + DeePKS_domain::cal_f_delta>(deepks.ld.dm_r, ucell, orb, gd, pv, kv->get_nks(), + deepks.ld.deepks_param, kv->kvec_d, - ld.phialpha, - ld.gedm, - ld.inl_index, + deepks.ld.phialpha, + deepks.ld.gedm, fvnl_dalpha, isstress, svnl_dalpha); diff --git a/source/source_lcao/LCAO_allocate.cpp b/source/source_lcao/LCAO_allocate.cpp index 0143727c7e..adbe45c3c3 100644 --- a/source/source_lcao/LCAO_allocate.cpp +++ b/source/source_lcao/LCAO_allocate.cpp @@ -1,7 +1,6 @@ #include "source_base/timer.h" #include "source_lcao/LCAO_domain.h" #include "source_lcao/module_deepks/LCAO_deepks.h" -#include "source_pw/module_pwdft/global.h" #include "source_io/module_parameter/parameter.h" namespace LCAO_domain diff --git a/source/source_lcao/LCAO_domain.h b/source/source_lcao/LCAO_domain.h index 77281f7efb..cf4af3ace9 100644 --- a/source/source_lcao/LCAO_domain.h +++ b/source/source_lcao/LCAO_domain.h @@ -9,9 +9,7 @@ #include "source_lcao/LCAO_HS_arrays.hpp" #include "source_lcao/force_stress_arrays.h" #include "source_lcao/module_deepks/LCAO_deepks.h" -#include "source_lcao/module_gint/gint_gamma.h" -#include "source_lcao/module_gint/gint_k.h" -#include "source_lcao/module_gint/grid_technique.h" +#include "source_basis/module_ao/parallel_orbitals.h" namespace LCAO_domain { @@ -35,17 +33,6 @@ void build_Nonlocal_mu_new(const Parallel_Orbitals& pv, const TwoCenterIntegrator& intor_orb_beta, const Grid_Driver* GridD); -/** - * @brief prepare gird integration - */ -void grid_prepare(const Grid_Technique& gt, - Gint_Gamma& gint_gamma, - Gint_k& gint_k, - const UnitCell& ucell, - const LCAO_Orbitals& orb, - const ModulePW::PW_Basis& rhopw, - const ModulePW::PW_Basis_Big& bigpw); - /** * @brief set the elements of force-related matrices in LCAO method */ diff --git a/source/source_lcao/LCAO_hamilt.hpp b/source/source_lcao/LCAO_hamilt.hpp deleted file mode 100644 index 4e91ca724d..0000000000 --- a/source/source_lcao/LCAO_hamilt.hpp +++ /dev/null @@ -1,152 +0,0 @@ -#include "source_io/module_parameter/parameter.h" - -#ifndef LCAO_HAMILT_HPP -#define LCAO_HAMILT_HPP - -#include "source_base/abfs-vector3_order.h" -#include "source_base/global_variable.h" -#include "source_base/timer.h" -#include "source_lcao/spar_exx.h" -#include "source_lcao/module_ri/RI_2D_Comm.h" - -#include -#include -#include -#include -#include -#include -#include - -#ifdef __EXX -// Peize Lin add 2022.09.13 - -template -void sparse_format::cal_HR_exx(const UnitCell& ucell, - const Parallel_Orbitals& pv, - LCAO_HS_Arrays& HS_Arrays, - const int& current_spin, - const double& sparse_threshold, - const int (&nmp)[3], - const std::vector>, - RI::Tensor>>>& Hexxs) { - ModuleBase::TITLE("sparse_format", "cal_HR_exx"); - ModuleBase::timer::tick("sparse_format", "cal_HR_exx"); - - const Tdata frac = GlobalC::exx_info.info_global.hybrid_alpha; - - std::map> atoms_pos; - for (int iat = 0; iat < ucell.nat; ++iat) { - atoms_pos[iat] = RI_Util::Vector3_to_array3( - ucell.atoms[ucell.iat2it[iat]] - .tau[ucell.iat2ia[iat]]); - } - const std::array, 3> latvec - = {RI_Util::Vector3_to_array3(ucell.a1), // too bad to use GlobalC here, - RI_Util::Vector3_to_array3(ucell.a2), - RI_Util::Vector3_to_array3(ucell.a3)}; - - const std::array Rs_period = {nmp[0], nmp[1], nmp[2]}; - - RI::Cell_Nearest cell_nearest; - cell_nearest.init(atoms_pos, latvec, Rs_period); - - const std::vector is_list = (PARAM.inp.nspin != 4) - ? std::vector{current_spin} - : std::vector{0, 1, 2, 3}; - - for (const int is: is_list) - { - int is0_b = 0; - int is1_b = 0; - std::tie(is0_b, is1_b) = RI_2D_Comm::split_is_block(is); - - if (Hexxs.empty()) - { - break; - } - - for (const auto& HexxA: Hexxs[is]) - { - const int iat0 = HexxA.first; - for (const auto& HexxB: HexxA.second) - { - const int iat1 = HexxB.first.first; - - const Abfs::Vector3_Order R = RI_Util::array3_to_Vector3( - cell_nearest.get_cell_nearest_discrete(iat0, - iat1, - HexxB.first.second)); - - HS_Arrays.all_R_coor.insert(R); - - const RI::Tensor& Hexx = HexxB.second; - - for (size_t iw0 = 0; iw0 < Hexx.shape[0]; ++iw0) - { - const int iwt0 = RI_2D_Comm::get_iwt(ucell,iat0, iw0, is0_b); - const int iwt0_local = pv.global2local_row(iwt0); - - if (iwt0_local < 0) - { - continue; - } - - for (size_t iw1 = 0; iw1 < Hexx.shape[1]; ++iw1) - { - const int iwt1 = RI_2D_Comm::get_iwt(ucell,iat1, iw1, is1_b); - const int iwt1_local = pv.global2local_col(iwt1); - - if (iwt1_local < 0) - { - continue; - } - - if (std::abs(Hexx(iw0, iw1)) > sparse_threshold) - { - if (PARAM.inp.nspin == 1 || PARAM.inp.nspin == 2) - { - auto& HR_sparse_ptr - = HS_Arrays - .HR_sparse[current_spin][R][iwt0]; - double& HR_sparse = HR_sparse_ptr[iwt1]; - HR_sparse += RI::Global_Func::convert( - frac * Hexx(iw0, iw1)); - if (std::abs(HR_sparse) <= sparse_threshold) - { - HR_sparse_ptr.erase(iwt1); - } - } - else if (PARAM.inp.nspin == 4) - { - auto& HR_sparse_ptr - = HS_Arrays.HR_soc_sparse[R][iwt0]; - - std::complex& HR_sparse - = HR_sparse_ptr[iwt1]; - - HR_sparse += RI::Global_Func::convert< - std::complex>(frac * Hexx(iw0, iw1)); - - if (std::abs(HR_sparse) <= sparse_threshold) - { - HR_sparse_ptr.erase(iwt1); - } - } - else - { - throw std::invalid_argument(std::string(__FILE__) + " line " - + std::to_string(__LINE__)); - } - } - } - } - } - } - } - - ModuleBase::timer::tick("sparse_format", "cal_HR_exx"); -} -#endif - -#endif diff --git a/source/source_lcao/LCAO_init_basis.cpp b/source/source_lcao/LCAO_init_basis.cpp index 7743a68f1f..c18e859599 100644 --- a/source/source_lcao/LCAO_init_basis.cpp +++ b/source/source_lcao/LCAO_init_basis.cpp @@ -1,11 +1,7 @@ #include "LCAO_domain.h" #include "source_io/module_parameter/parameter.h" -/// once the GlobalC::exx_info has been deleted, this include can be gone -/// mohan note 2024-07-21 -#ifdef __EXX -#include "source_pw/module_pwdft/global.h" -#endif +#include "source_base/parallel_comm.h" namespace LCAO_domain { @@ -61,11 +57,6 @@ void init_basis_lcao(Parallel_Orbitals& pv, two_center_bundle.build_beta(ucell.ntype, ucell.infoNL.Beta); } - int Lmax = 0; -#ifdef __EXX - Lmax = GlobalC::exx_info.info_ri.abfs_Lmax; -#endif - #ifdef USE_NEW_TWO_CENTER two_center_bundle.tabulate(); #else diff --git a/source/source_lcao/LCAO_set.cpp b/source/source_lcao/LCAO_set.cpp new file mode 100644 index 0000000000..2b38f94f93 --- /dev/null +++ b/source/source_lcao/LCAO_set.cpp @@ -0,0 +1,336 @@ +#include "source_lcao/LCAO_set.h" +#include "source_io/module_parameter/parameter.h" +#include "source_psi/setup_psi.h" // use Setup_Psi +#include "source_io/module_wf/read_wfc_nao.h" // use read_wfc_nao +#include "source_estate/elecstate_tools.h" // use fixed_weights +#include "source_lcao/module_hcontainer/read_hcontainer.h" +#include "source_lcao/rho_tau_lcao.h" // use dm2rho +#include "source_lcao/hamilt_lcao.h" // use HamiltLCAO for init_chg_hr +#include "source_hsolver/hsolver_lcao.h" // use HSolverLCAO for init_chg_hr + +template +void LCAO_domain::set_psi_occ_dm_chg( + const K_Vectors &kv, // k-points + psi::Psi* &psi, // coefficients of NAO basis + const Parallel_Orbitals &pv, // parallel scheme of NAO basis + elecstate::ElecState* pelec, // eigen values and weights + LCAO_domain::Setup_DM &dmat, // density matrix + Charge &chr, // charge density + const Input_para &inp) // input parameters +{ + + //! 1) init electronic wave function psi + Setup_Psi::allocate_psi(psi, kv, pv, inp); + + //! 2) read psi from file + if (inp.init_wfc == "file" && inp.esolver_type != "tddft") + { + if (!ModuleIO::read_wfc_nao(PARAM.globalv.global_readin_dir, + pv, *psi, pelec->ekb, pelec->wg, kv.ik2iktot, + kv.get_nkstot(), inp.nspin)) + { + ModuleBase::WARNING_QUIT("set_psi_occ_dm_chg", "read electronic wave functions failed"); + } + } + + //! 3) set occupations, tddft does not need to set occupations in the first scf + if (inp.ocp && inp.esolver_type != "tddft") + { + elecstate::fixed_weights(inp.ocp_kb, inp.nbands, inp.nelec, + &kv, pelec->wg, pelec->skip_weights); + } + + //! 4) init DMK, but DMR is constructed in before_scf() + dmat.allocate_dm(&kv, &pv, inp.nspin); + + ModuleBase::GlobalFunc::DONE(GlobalV::ofs_running, "CHARGE"); + + return; +} + + +template +void LCAO_domain::set_pot( + UnitCell &ucell, // not const because of dftu + K_Vectors &kv, // not const due to exx + Structure_Factor& sf, // will be modified in potential + const ModulePW::PW_Basis &pw_rho, + const ModulePW::PW_Basis &pw_rhod, + elecstate::ElecState* pelec, + const LCAO_Orbitals& orb, + Parallel_Orbitals &pv, // not const due to deepks + pseudopot_cell_vl &locpp, + Plus_U &dftu, + surchem& solvent, + Exx_NAO &exx_nao, + Setup_DeePKS &deepks, + const Input_para &inp) +{ + //! 1) init local pseudopotentials + locpp.init_vloc(ucell, &pw_rho); + + //! 2) init potentials + if (pelec->pot == nullptr) + { + // where is the pot deleted? + pelec->pot = new elecstate::Potential(&pw_rhod, &pw_rho, + &ucell, &locpp.vloc, &sf, &solvent, + &(pelec->f_en.etxc), &(pelec->f_en.vtxc)); + } + + //! 3) initialize DFT+U + if (inp.dft_plus_u) + { + dftu.init(ucell, &pv, kv.get_nks(), &orb); + } + + //! 4) init exact exchange calculations + exx_nao.before_runner(ucell, kv, orb, pv, inp); + + //! 5) init deepks + deepks.before_runner(ucell, kv.get_nks(), orb, pv, inp); + + ModuleBase::GlobalFunc::DONE(GlobalV::ofs_running, "POTENTIALS"); + + return; +} + +template +void LCAO_domain::init_dm_from_file( + const std::string& readin_dir, + const int nspin, + LCAO_domain::Setup_DM& dmat, + const UnitCell& ucell, + const Parallel_Orbitals* pv) +{ + ModuleBase::TITLE("LCAO_domain", "init_dm_from_file"); + const int nspin_dm = (nspin == 2) ? 2 : 1; + for (int is = 0; is < nspin_dm; ++is) + { + const std::string dmfile = readin_dir + "/dmrs" + std::to_string(is + 1) + "_nao.csr"; + hamilt::HContainer* dm_container = dmat.dm->get_DMR_vector()[is]; + hamilt::Read_HContainer reader_dm( + dm_container, + dmfile, + PARAM.globalv.nlocal, + &ucell + ); + reader_dm.read(); + } + return; +} + +template +void LCAO_domain::init_chg_dm( + const std::string& readin_dir, + const int nspin, + LCAO_domain::Setup_DM& dmat, + const UnitCell& ucell, + const Parallel_Orbitals* pv, + Charge* chr) +{ + ModuleBase::TITLE("LCAO_domain", "init_chg_dm"); + + // Step 1: Read density matrix from file + LCAO_domain::init_dm_from_file(readin_dir, nspin, dmat, ucell, pv); + + // Step 2: Convert density matrix to charge density + LCAO_domain::dm2rho(dmat.dm->get_DMR_vector(), nspin, chr, true); + + return; +} + +template +void LCAO_domain::init_hr_from_file( + const std::string hrfile, + hamilt::HContainer* hmat, + const UnitCell& ucell, + const Parallel_Orbitals* pv) +{ + ModuleBase::TITLE("LCAO_domain", "init_hr_from_file"); + hmat->set_zero(); + hamilt::Read_HContainer reader_hr( + hmat, + hrfile, + PARAM.globalv.nlocal, + &ucell + ); + reader_hr.read(); + return; +} + +template +void LCAO_domain::init_chg_hr( + const std::string& readin_dir, + const int nspin, + hamilt::Hamilt* p_hamilt, + const UnitCell& ucell, + const Parallel_Orbitals* pv, + psi::Psi& psi, + elecstate::ElecState* pelec, + elecstate::DensityMatrix& dm, + Charge& chr, + const std::string& ks_solver) +{ + ModuleBase::TITLE("LCAO_domain", "init_chg_hr"); + + auto* hamilt_lcao = dynamic_cast*>(p_hamilt); + if (!hamilt_lcao) + { + ModuleBase::WARNING_QUIT("LCAO_domain::init_chg_hr", "p_hamilt is not HamiltLCAO"); + } + + // Step 1: Read HR from file(s) + if (nspin == 2) + { + // nspin=2: load spin-up into first half of hRS2, spin-down into second half + const std::string hrfile_up = readin_dir + "/hrs1_nao.csr"; + LCAO_domain::init_hr_from_file(hrfile_up, hamilt_lcao->getHR(), ucell, pv); + + // switch hR data pointer to spin-down half, then read hrs2 + auto& hRS2 = hamilt_lcao->getHRS2(); + hamilt_lcao->getHR()->allocate(hRS2.data() + hRS2.size() / 2, 0); + const std::string hrfile_down = readin_dir + "/hrs2_nao.csr"; + LCAO_domain::init_hr_from_file(hrfile_down, hamilt_lcao->getHR(), ucell, pv); + + // restore hR to spin-up half + hamilt_lcao->getHR()->allocate(hRS2.data(), 0); + } + else + { + const std::string hrfile = readin_dir + "/hrs1_nao.csr"; + LCAO_domain::init_hr_from_file(hrfile, hamilt_lcao->getHR(), ucell, pv); + } + + // Step 2: Mark HR as loaded from file (skip operator recalculation) + p_hamilt->refresh(false); + + // Step 3: Diagonalize to get wavefunctions and charge density + hsolver::HSolverLCAO hsolver_lcao_obj(pv, ks_solver); + hsolver_lcao_obj.solve(p_hamilt, psi, pelec, dm, chr, nspin, 0); +} + + + +template void LCAO_domain::set_psi_occ_dm_chg( + const K_Vectors &kv, // k-points + psi::Psi* &psi, // coefficients of NAO basis + const Parallel_Orbitals &pv, // parallel scheme of NAO basis + elecstate::ElecState* pelec, // eigen values and weights + LCAO_domain::Setup_DM &dmat, // density matrix + Charge &chr, // charge density + const Input_para &inp); + +template void LCAO_domain::set_psi_occ_dm_chg>( + const K_Vectors &kv, // k-points + psi::Psi>* &psi, // coefficients of NAO basis + const Parallel_Orbitals &pv, // parallel scheme of NAO basis + elecstate::ElecState* pelec, // eigen values and weights + LCAO_domain::Setup_DM> &dmat, // density matrix + Charge &chr, // charge density + const Input_para &inp); + +template void LCAO_domain::set_pot( + UnitCell &ucell, + K_Vectors &kv, + Structure_Factor& sf, + const ModulePW::PW_Basis &pw_rho, + const ModulePW::PW_Basis &pw_rhod, + elecstate::ElecState* pelec, + const LCAO_Orbitals& orb, + Parallel_Orbitals &pv, + pseudopot_cell_vl &locpp, + Plus_U &dftu, + surchem& solvent, + Exx_NAO &exx_nao, + Setup_DeePKS &deepks, + const Input_para &inp); + +template void LCAO_domain::set_pot>( + UnitCell &ucell, + K_Vectors &kv, + Structure_Factor& sf, + const ModulePW::PW_Basis &pw_rho, + const ModulePW::PW_Basis &pw_rhod, + elecstate::ElecState* pelec, + const LCAO_Orbitals& orb, + Parallel_Orbitals &pv, + pseudopot_cell_vl &locpp, + Plus_U &dftu, + surchem& solvent, + Exx_NAO> &exx_nao, + Setup_DeePKS> &deepks, + const Input_para &inp); + +template void LCAO_domain::init_dm_from_file( + const std::string& readin_dir, + const int nspin, + LCAO_domain::Setup_DM& dmat, + const UnitCell& ucell, + const Parallel_Orbitals* pv); +template void LCAO_domain::init_dm_from_file>( + const std::string& readin_dir, + const int nspin, + LCAO_domain::Setup_DM>& dmat, + const UnitCell& ucell, + const Parallel_Orbitals* pv); + +template void LCAO_domain::init_chg_dm( + const std::string& readin_dir, + const int nspin, + LCAO_domain::Setup_DM& dmat, + const UnitCell& ucell, + const Parallel_Orbitals* pv, + Charge* chr); +template void LCAO_domain::init_chg_dm>( + const std::string& readin_dir, + const int nspin, + LCAO_domain::Setup_DM>& dmat, + const UnitCell& ucell, + const Parallel_Orbitals* pv, + Charge* chr); + +template void LCAO_domain::init_hr_from_file( + const std::string hrfile, + hamilt::HContainer* hmat, + const UnitCell& ucell, + const Parallel_Orbitals* pv); +template void LCAO_domain::init_hr_from_file>( + const std::string hrfile, + hamilt::HContainer>* hmat, + const UnitCell& ucell, + const Parallel_Orbitals* pv); + +template void LCAO_domain::init_chg_hr( + const std::string& readin_dir, + const int nspin, + hamilt::Hamilt* p_hamilt, + const UnitCell& ucell, + const Parallel_Orbitals* pv, + psi::Psi& psi, + elecstate::ElecState* pelec, + elecstate::DensityMatrix& dm, + Charge& chr, + const std::string& ks_solver); +template void LCAO_domain::init_chg_hr, double>( + const std::string& readin_dir, + const int nspin, + hamilt::Hamilt>* p_hamilt, + const UnitCell& ucell, + const Parallel_Orbitals* pv, + psi::Psi>& psi, + elecstate::ElecState* pelec, + elecstate::DensityMatrix, double>& dm, + Charge& chr, + const std::string& ks_solver); +template void LCAO_domain::init_chg_hr, std::complex>( + const std::string& readin_dir, + const int nspin, + hamilt::Hamilt>* p_hamilt, + const UnitCell& ucell, + const Parallel_Orbitals* pv, + psi::Psi>& psi, + elecstate::ElecState* pelec, + elecstate::DensityMatrix, double>& dm, + Charge& chr, + const std::string& ks_solver); diff --git a/source/source_lcao/LCAO_set.h b/source/source_lcao/LCAO_set.h new file mode 100644 index 0000000000..f086bc5027 --- /dev/null +++ b/source/source_lcao/LCAO_set.h @@ -0,0 +1,132 @@ +#ifndef LCAO_SET_H +#define LCAO_SET_H + +#include "source_cell/unitcell.h" +#include "source_cell/klist.h" +#include "source_psi/psi.h" +#include "source_estate/elecstate.h" +#include "source_estate/module_dm/density_matrix.h" +#include "source_hamilt/hamilt.h" +#include "source_lcao/setup_dm.h" +#include "source_pw/module_pwdft/structure_factor.h" +#include "source_basis/module_pw/pw_basis.h" +#include "source_hamilt/module_surchem/surchem.h" +#include "source_pw/module_pwdft/vl_pw.h" +#include "source_lcao/module_deepks/LCAO_deepks.h" +#include "source_lcao/module_dftu/dftu.h" +#include "source_lcao/setup_exx.h" +#include "source_lcao/setup_deepks.h" + +namespace LCAO_domain +{ + +/** + * @brief set up wave functions, occupation numbers, + * density matrix and charge density + */ +template +void set_psi_occ_dm_chg( + const K_Vectors &kv, // k-points + psi::Psi* &psi, // coefficients of NAO basis + const Parallel_Orbitals &pv, // parallel scheme of NAO basis + elecstate::ElecState* pelec, // eigen values and weights + LCAO_domain::Setup_DM &dmat, // density matrix + Charge &chr, // charge density + const Input_para& inp); // input parameters + +/** + * @brief set up potentials, including local pseudopotentials, + * +U potential, solvent potential, exx potential and deepks potential + */ +template +void set_pot( + UnitCell &ucell, + K_Vectors &kv, + Structure_Factor& sf, + const ModulePW::PW_Basis &pw_rho, + const ModulePW::PW_Basis &pw_rhod, + elecstate::ElecState* pelec, + const LCAO_Orbitals& orb, + Parallel_Orbitals &pv, + pseudopot_cell_vl &locpp, + Plus_U &dftu, + surchem& solvent, + Exx_NAO &exx_nao, + Setup_DeePKS &deepks, + const Input_para &inp); + +/** + * @brief read in DMR from file, and save it into dmat + * @param readin_dir directory containing dmrs*_nao.csr files + * @param nspin number of spin components (1 or 2) + */ +template +void init_dm_from_file( + const std::string& readin_dir, + const int nspin, + LCAO_domain::Setup_DM& dmat, + const UnitCell& ucell, + const Parallel_Orbitals* pv); + +/** + * @brief initialize charge density from density matrix file (init_chg=dm) + * This function reads DMR from file and converts it to charge density + * @param readin_dir directory containing dmrs*_nao.csr files + * @param nspin number of spin components (1 or 2) + * @param dmat density matrix object + * @param ucell unit cell + * @param pv parallel orbitals + * @param chr charge density object + */ +template +void init_chg_dm( + const std::string& readin_dir, + const int nspin, + LCAO_domain::Setup_DM& dmat, + const UnitCell& ucell, + const Parallel_Orbitals* pv, + Charge* chr); + +/** + * @brief read in HR from file, and save it into hmat + */ +template +void init_hr_from_file( + const std::string hrfile, + hamilt::HContainer* hmat, + const UnitCell& ucell, + const Parallel_Orbitals* pv); + +/** + * @brief initialize charge density from Hamiltonian matrix file (init_chg=hr) + * Reads HR from file(s), diagonalizes to get wavefunctions, then computes charge density. + * For nspin=2, reads both hrs1_nao.csr (spin-up) and hrs2_nao.csr (spin-down) + * into the two halves of HamiltLCAO::hRS2. + * @tparam TK k-space type (double or complex) + * @tparam TR real-space type (double) + * @param readin_dir directory containing hrs*_nao.csr files + * @param nspin number of spin components + * @param p_hamilt pointer to Hamilt base class (will be dynamic_cast to HamiltLCAO) + * @param ucell unit cell + * @param pv parallel orbitals + * @param psi wave function object + * @param pelec electronic state + * @param dm density matrix + * @param chr charge density + * @param ks_solver solver method name + */ +template +void init_chg_hr( + const std::string& readin_dir, + const int nspin, + hamilt::Hamilt* p_hamilt, + const UnitCell& ucell, + const Parallel_Orbitals* pv, + psi::Psi& psi, + elecstate::ElecState* pelec, + elecstate::DensityMatrix& dm, + Charge& chr, + const std::string& ks_solver); +} // end namespace + +#endif diff --git a/source/source_lcao/center2_orb-orb11.cpp b/source/source_lcao/center2_orb-orb11.cpp index 394384a3b4..7e4304f01b 100644 --- a/source/source_lcao/center2_orb-orb11.cpp +++ b/source/source_lcao/center2_orb-orb11.cpp @@ -24,6 +24,8 @@ Center2_Orb::Orb11::Orb11(const Numerical_Orbital_Lm& nA_in, void Center2_Orb::Orb11::init_radial_table() { + const int rmesh = Center2_Orb::get_rmesh(this->nA.getRcut(), this->nB.getRcut(), dr_); + const int LA = this->nA.getL(); const int LB = this->nB.getL(); for (int LAB = std::abs(LA - LB); LAB <= LA + LB; ++LAB) @@ -33,8 +35,6 @@ void Center2_Orb::Orb11::init_radial_table() continue; } - const int rmesh = Center2_Orb::get_rmesh(this->nA.getRcut(), this->nB.getRcut(), dr_); - this->Table_r[LAB].resize(rmesh, 0); this->Table_dr[LAB].resize(rmesh, 0); @@ -43,8 +43,8 @@ void Center2_Orb::Orb11::init_radial_table() this->nA, this->nB, rmesh, - this->Table_r[LAB].data(), - this->Table_dr[LAB].data(), + this->Table_r[LAB], + this->Table_dr[LAB], psb_); } return; @@ -58,17 +58,20 @@ void Center2_Orb::Orb11::init_radial_table(const std::set& radials) const size_t rmesh = Center2_Orb::get_rmesh(this->nA.getRcut(), this->nB.getRcut(), dr_); std::set radials_used; - for (const size_t& ir: radials) { - if (ir < rmesh) { + for (const size_t& ir: radials) + { + if (ir < rmesh) + { radials_used.insert(ir); -} -} + } + } for (int LAB = std::abs(LA - LB); LAB <= LA + LB; ++LAB) { - if ((LAB - std::abs(LA - LB)) % 2 == 1) { // if LA+LB-LAB == odd, then Gaunt_Coefficients = 0 + if ((LAB - std::abs(LA - LB)) % 2 == 1) // if LA+LB-LAB == odd, then Gaunt_Coefficients = 0 + { continue; -} + } this->Table_r[LAB].resize(rmesh, 0); this->Table_dr[LAB].resize(rmesh, 0); @@ -78,8 +81,8 @@ void Center2_Orb::Orb11::init_radial_table(const std::set& radials) this->nA, this->nB, radials_used, - this->Table_r[LAB].data(), - this->Table_dr[LAB].data(), + this->Table_r[LAB], + this->Table_dr[LAB], psb_); } } @@ -97,9 +100,10 @@ double Center2_Orb::Orb11::cal_overlap(const ModuleBase::Vector3& RA, const double distance = (distance_true >= tiny1) ? distance_true : distance_true + tiny1; const double RcutA = this->nA.getRcut(); const double RcutB = this->nB.getRcut(); - if (distance > (RcutA + RcutB)) { + if (distance > (RcutA + RcutB)) + { return 0.0; -} + } const int LA = this->nA.getL(); const int LB = this->nB.getL(); @@ -112,6 +116,9 @@ double Center2_Orb::Orb11::cal_overlap(const ModuleBase::Vector3& RA, rly); double overlap = 0.0; + const int idx1 = this->MGT.get_lm_index(LA, mA); + const int idx2 = this->MGT.get_lm_index(LB, mB); + const double* Gaunt_Coefficients_ptr = &(this->MGT.Gaunt_Coefficients(idx1, idx2, 0)); for (const auto& tb_r: this->Table_r) { @@ -120,17 +127,18 @@ double Center2_Orb::Orb11::cal_overlap(const ModuleBase::Vector3& RA, for (int mAB = 0; mAB != 2 * LAB + 1; ++mAB) // const int mAB = mA + mB; { - const double Gaunt_real_A_B_AB = this->MGT.Gaunt_Coefficients(this->MGT.get_lm_index(LA, mA), - this->MGT.get_lm_index(LB, mB), - this->MGT.get_lm_index(LAB, mAB)); - if (0 == Gaunt_real_A_B_AB) { + const int idx3 = this->MGT.get_lm_index(LAB, mAB); + const double Gaunt_real_A_B_AB = *(Gaunt_Coefficients_ptr + idx3); + if (0 == Gaunt_real_A_B_AB) + { continue; -} + } - const double ylm_solid = rly[this->MGT.get_lm_index(LAB, mAB)]; - if (0 == ylm_solid) { + const double ylm_solid = rly[idx3]; + if (0 == ylm_solid) + { continue; -} + } const double ylm_real = (distance > tiny2) ? ylm_solid / pow(distance, LAB) : ylm_solid; const double i_exp = std::pow(-1.0, (LA - LB - LAB) / 2); @@ -166,18 +174,23 @@ ModuleBase::Vector3 Center2_Orb::Orb11::cal_grad_overlap( // caoyu add 2 const double distance = (distance_true >= tiny1) ? distance_true : distance_true + tiny1; const double RcutA = this->nA.getRcut(); const double RcutB = this->nB.getRcut(); - if (distance > (RcutA + RcutB)) { + if (distance > (RcutA + RcutB)) + { return ModuleBase::Vector3(0.0, 0.0, 0.0); -} + } const int LA = this->nA.getL(); const int LB = this->nB.getL(); + const int idx1 = this->MGT.get_lm_index(LA, mA); + const int idx2 = this->MGT.get_lm_index(LB, mB); + const double* Gaunt_Coefficients_ptr = &(this->MGT.Gaunt_Coefficients(idx1, idx2, 0)); - std::vector rly((LA + LB + 1) * (LA + LB + 1)); + const int LAB2 = (LA + LB + 1) * (LA + LB + 1); + std::vector rly(LAB2); std::vector> grly; - ModuleBase::Array_Pool tmp_grly((LA + LB + 1) * (LA + LB + 1), 3); + ModuleBase::Array_Pool tmp_grly(LAB2, 3); ModuleBase::Ylm::grad_rl_sph_harm(LA + LB, delta_R.x, delta_R.y, delta_R.z, rly.data(), tmp_grly.get_ptr_2D()); - for (int i=0; i<(LA + LB + 1) * (LA + LB + 1); ++i) + for (int i=0; i ele(tmp_grly[i][0], tmp_grly[i][1], tmp_grly[i][2]); grly.push_back(ele); @@ -191,17 +204,17 @@ ModuleBase::Vector3 Center2_Orb::Orb11::cal_grad_overlap( // caoyu add 2 for (int mAB = 0; mAB != 2 * LAB + 1; ++mAB) // const int mAB = mA + mB; { - const double Gaunt_real_A_B_AB = this->MGT.Gaunt_Coefficients(this->MGT.get_lm_index(LA, mA), - this->MGT.get_lm_index(LB, mB), - this->MGT.get_lm_index(LAB, mAB)); - if (0 == Gaunt_real_A_B_AB) { + const int idx3 = this->MGT.get_lm_index(LAB, mAB); + const double Gaunt_real_A_B_AB = *(Gaunt_Coefficients_ptr + idx3); + if (0 == Gaunt_real_A_B_AB) + { continue; -} + } - const double ylm_solid = rly[this->MGT.get_lm_index(LAB, mAB)]; + const double ylm_solid = rly[idx3]; const double ylm_real = (distance > tiny2) ? ylm_solid / pow(distance, LAB) : ylm_solid; - const ModuleBase::Vector3 gylm_solid = grly[this->MGT.get_lm_index(LAB, mAB)]; + const ModuleBase::Vector3 gylm_solid = grly[idx3]; const ModuleBase::Vector3 gylm_real = (distance > tiny2) ? gylm_solid / pow(distance, LAB) : gylm_solid; diff --git a/source/source_lcao/center2_orb-orb11.h b/source/source_lcao/center2_orb-orb11.h index 23ffc898de..41a88c7253 100644 --- a/source/source_lcao/center2_orb-orb11.h +++ b/source/source_lcao/center2_orb-orb11.h @@ -42,7 +42,7 @@ class Center2_Orb::Orb11 const Numerical_Orbital_Lm& nA; const Numerical_Orbital_Lm& nB; - const ModuleBase::Sph_Bessel_Recursive::D2* psb_; + const ModuleBase::Sph_Bessel_Recursive::D2* psb_ = nullptr; const ORB_gaunt_table& MGT; std::map> Table_r; // unit: Bohr/MOT.dr diff --git a/source/source_lcao/center2_orb-orb21.cpp b/source/source_lcao/center2_orb-orb21.cpp index a81db0db26..fa70914f5a 100644 --- a/source/source_lcao/center2_orb-orb21.cpp +++ b/source/source_lcao/center2_orb-orb21.cpp @@ -35,7 +35,9 @@ void Center2_Orb::Orb21::init_radial_table() for (int LA = std::abs(LA1 - LA2); LA <= LA1 + LA2; ++LA) { if ((LA - std::abs(LA1 - LA2)) % 2 == 1) // if LA+LB-LAB == odd, then Gaunt_Coefficients = 0 + { continue; + } this->nA[LA].set_orbital_info(nA_short.getLabel(), nA_short.getType(), @@ -74,7 +76,9 @@ void Center2_Orb::Orb21::init_radial_table(const std::set& radials) for (int LA = std::abs(LA1 - LA2); LA <= LA1 + LA2; ++LA) { if ((LA - std::abs(LA1 - LA2)) % 2 == 1) // if LA+LB-LAB == odd, then Gaunt_Coefficients = 0 + { continue; + } this->nA[LA].set_orbital_info(nA_short.getLabel(), nA_short.getType(), @@ -106,6 +110,9 @@ double Center2_Orb::Orb21::cal_overlap(const ModuleBase::Vector3& RA, { const int LA1 = this->nA1.getL(); const int LA2 = this->nA2.getL(); + const int idx1 = this->MGT.get_lm_index(LA1, mA1); + const int idx2 = this->MGT.get_lm_index(LA2, mA2); + const double* Gaunt_Coefficients_ptr = &(this->MGT.Gaunt_Coefficients(idx1, idx2, 0)); double overlap = 0.0; @@ -116,11 +123,11 @@ double Center2_Orb::Orb21::cal_overlap(const ModuleBase::Vector3& RA, for (int mA = 0; mA != 2 * LA + 1; ++mA) // const int mA=mA1+mA2; { - const double Gaunt_real_A1_A2_A12 = this->MGT.Gaunt_Coefficients(this->MGT.get_lm_index(LA1, mA1), - this->MGT.get_lm_index(LA2, mA2), - this->MGT.get_lm_index(LA, mA)); + const double Gaunt_real_A1_A2_A12 = *(Gaunt_Coefficients_ptr + this->MGT.get_lm_index(LA, mA)); if (0 == Gaunt_real_A1_A2_A12) + { continue; + } overlap += Gaunt_real_A1_A2_A12 * orb11.second.cal_overlap(RA, RB, mA, mB); } @@ -137,6 +144,9 @@ ModuleBase::Vector3 Center2_Orb::Orb21::cal_grad_overlap(const ModuleBas { const int LA1 = this->nA1.getL(); const int LA2 = this->nA2.getL(); + const int idx1 = this->MGT.get_lm_index(LA1, mA1); + const int idx2 = this->MGT.get_lm_index(LA2, mA2); + const double* Gaunt_Coefficients_ptr = &(this->MGT.Gaunt_Coefficients(idx1, idx2, 0)); ModuleBase::Vector3 grad_overlap(0.0, 0.0, 0.0); @@ -147,11 +157,11 @@ ModuleBase::Vector3 Center2_Orb::Orb21::cal_grad_overlap(const ModuleBas for (int mA = 0; mA != 2 * LA + 1; ++mA) // const int mA=mA1+mA2; { - const double Gaunt_real_A1_A2_A12 = this->MGT.Gaunt_Coefficients(this->MGT.get_lm_index(LA1, mA1), - this->MGT.get_lm_index(LA2, mA2), - this->MGT.get_lm_index(LA, mA)); + const double Gaunt_real_A1_A2_A12 = *(Gaunt_Coefficients_ptr + this->MGT.get_lm_index(LA, mA)); if (0 == Gaunt_real_A1_A2_A12) + { continue; + } grad_overlap += Gaunt_real_A1_A2_A12 * orb11.second.cal_grad_overlap(RA, RB, mA, mB); } diff --git a/source/source_lcao/center2_orb-orb21.h b/source/source_lcao/center2_orb-orb21.h index 37d0d8fe78..715256d298 100644 --- a/source/source_lcao/center2_orb-orb21.h +++ b/source/source_lcao/center2_orb-orb21.h @@ -45,7 +45,7 @@ class Center2_Orb::Orb21 const Numerical_Orbital_Lm& nA2; const Numerical_Orbital_Lm& nB; - const ModuleBase::Sph_Bessel_Recursive::D2* psb_; + const ModuleBase::Sph_Bessel_Recursive::D2* psb_ = nullptr; const ORB_gaunt_table& MGT; std::map nA; diff --git a/source/source_lcao/center2_orb-orb22.h b/source/source_lcao/center2_orb-orb22.h index 7a57742f20..1f4af8413f 100644 --- a/source/source_lcao/center2_orb-orb22.h +++ b/source/source_lcao/center2_orb-orb22.h @@ -49,7 +49,7 @@ class Center2_Orb::Orb22 const Numerical_Orbital_Lm& nB1; const Numerical_Orbital_Lm& nB2; - const ModuleBase::Sph_Bessel_Recursive::D2* psb_; + const ModuleBase::Sph_Bessel_Recursive::D2* psb_ = nullptr; const ORB_gaunt_table& MGT; std::map nB; diff --git a/source/source_lcao/center2_orb.cpp b/source/source_lcao/center2_orb.cpp index a2abeaf8bd..b222716ce1 100644 --- a/source/source_lcao/center2_orb.cpp +++ b/source/source_lcao/center2_orb.cpp @@ -3,7 +3,6 @@ #include "source_base/constants.h" #include "source_base/math_integral.h" #include "source_base/mathzone_add1.h" -#include "source_base/memory.h" #include "source_base/timer.h" #include "source_base/tool_quit.h" #include "source_base/tool_title.h" @@ -29,83 +28,7 @@ int Center2_Orb::get_rmesh(const double& R1, const double& R2, const double dr) } // Peize Lin update 2016-01-26 -void Center2_Orb::init_Lmax(const int orb_num, - const int mode, - int& Lmax_used, - int& Lmax, - const int& Lmax_exx, - const int lmax_orb, - const int lmax_beta) -{ - - Lmax = -1; - - switch (orb_num) - { - case 2: - switch (mode) - { - case 1: // used in or - Lmax = std::max({Lmax, lmax_orb, lmax_beta}); - // use 2lmax+1 in dS - Lmax_used = 2 * Lmax + 1; - break; - case 2: // used in or - Lmax = std::max(Lmax, Lmax_exx); - Lmax_used = 2 * Lmax + 1; - break; - case 3: // used in berryphase by jingan - Lmax = std::max(Lmax, lmax_orb); - Lmax++; - Lmax_used = 2 * Lmax + 1; - break; - default: - throw std::invalid_argument("Center2_Orb::init_Lmax orb_num=2, mode error"); - break; - } - break; - case 3: - switch (mode) - { - case 1: // used in or - Lmax = std::max(Lmax, lmax_orb); - Lmax_used = 2 * Lmax + 1; - Lmax = std::max(Lmax, Lmax_exx); - Lmax_used += Lmax_exx; - break; - default: - throw std::invalid_argument("Center2_Orb::init_Lmax orb_num=3, mode error"); - break; - } - break; - case 4: - switch (mode) - { - case 1: // used in - Lmax = std::max(Lmax, lmax_orb); - Lmax_used = 2 * (2 * Lmax + 1); - break; - default: - throw std::invalid_argument("Center2_Orb::init_Lmax orb_num=4, mode error"); - break; - } - break; - default: - throw std::invalid_argument("Center2_Orb::init_Lmax orb_num error"); - break; - } - - assert(Lmax_used >= 1); -} - -// Peize Lin update 2016-01-26 -void Center2_Orb::init_Table_Spherical_Bessel(const int orb_num, - const int mode, - int& Lmax_used, - int& Lmax, - const int& Lmax_exx, - const int lmax_orb, - const int lmax_beta, +void Center2_Orb::init_Table_Spherical_Bessel(const int Lmax_used, const double dr, const double dk, const int kmesh, @@ -114,8 +37,6 @@ void Center2_Orb::init_Table_Spherical_Bessel(const int orb_num, { ModuleBase::TITLE("Center2_Orb", "init_Table_Spherical_Bessel"); - init_Lmax(orb_num, mode, Lmax_used, Lmax, Lmax_exx, lmax_orb, lmax_beta); // Peize Lin add 2016-01-26 - for (auto& sb: ModuleBase::Sph_Bessel_Recursive_Pool::D2::sb_pool) { if (dr * dk == sb.get_dx()) @@ -132,9 +53,7 @@ void Center2_Orb::init_Table_Spherical_Bessel(const int orb_num, } psb->set_dx(dr * dk); - psb->cal_jlx(Lmax_used, Rmesh, kmesh); - - ModuleBase::Memory::record("ORB::Jl(x)", sizeof(double) * (Lmax_used + 1) * kmesh * Rmesh); + psb->cal_jlx(Lmax_used+1, Rmesh, kmesh); // +1 for drs needs psb.jlx[l+1]. Peize Lin update 2025-12-27 } // Peize Lin accelerate 2017-10-02 @@ -143,12 +62,15 @@ void Center2_Orb::cal_ST_Phi12_R(const int& job, const Numerical_Orbital_Lm& n1, const Numerical_Orbital_Lm& n2, const int& rmesh, - double* rs, - double* drs, + std::vector &rs, + std::vector &drs, const ModuleBase::Sph_Bessel_Recursive::D2* psb) { ModuleBase::timer::tick("Center2_Orb", "cal_ST_Phi12_R"); + assert(rmesh <= rs.size()); + assert(rmesh <= drs.size()); + const int kmesh = n1.getNk(); const double* kpoint = n1.getKpoint(); const double dk = n1.getDk(); @@ -202,15 +124,14 @@ void Center2_Orb::cal_ST_Phi12_R(const int& job, // double* integrated_func = new double[kmesh]; - int ll = 0; - if (l != 0) - { - ll = l - 1; - } - - const std::vector>& jlm1 = psb->get_jlx()[ll]; - const std::vector>& jl = psb->get_jlx()[l]; - const std::vector>& jlp1 = psb->get_jlx()[l + 1]; + assert(psb->get_jlx().size()>=l+2); + const int lml = (l>0) ? (l-1) : 0; + const std::vector>& jlm1 = psb->get_jlx().at(lml); + const std::vector>& jl = psb->get_jlx().at(l); + const std::vector>& jlp1 = psb->get_jlx().at(l+1); + assert(jlm1.size()>=rmesh); + assert(jl.size()>=rmesh); + assert(jlp1.size()>=rmesh); #ifdef _OPENMP #pragma omp parallel for schedule(static) @@ -219,6 +140,7 @@ void Center2_Orb::cal_ST_Phi12_R(const int& job, { std::vector integrated_func(kmesh); const std::vector& jl_r = jl[ir]; + assert(jl_r.size()>=kmesh); for (int ik = 0; ik < kmesh; ++ik) { integrated_func[ik] = jl_r[ik] * k1_dot_k2[ik]; @@ -232,6 +154,8 @@ void Center2_Orb::cal_ST_Phi12_R(const int& job, // Peize Lin accelerate 2017-10-02 const std::vector& jlm1_r = jlm1[ir]; const std::vector& jlp1_r = jlp1[ir]; + assert(jlm1_r.size()>=kmesh); + assert(jlp1_r.size()>=kmesh); const double fac = l / (l + 1.0); if (l == 0) { @@ -281,8 +205,8 @@ void Center2_Orb::cal_ST_Phi12_R(const int& job, const Numerical_Orbital_Lm& n1, const Numerical_Orbital_Lm& n2, const std::set& radials, - double* rs, - double* drs, + std::vector &rs, + std::vector &drs, const ModuleBase::Sph_Bessel_Recursive::D2* psb) { // ModuleBase::TITLE("Center2_Orb","cal_ST_Phi12_R"); @@ -335,21 +259,23 @@ void Center2_Orb::cal_ST_Phi12_R(const int& job, std::vector integrated_func(kmesh); - const int lm1 = (l > 0 ? l - 1 : 0); - const std::vector>& jlm1 = psb->get_jlx()[lm1]; - const std::vector>& jl = psb->get_jlx()[l]; - const std::vector>& jlp1 = psb->get_jlx()[l + 1]; + assert(psb->get_jlx().size()>=l+2); + const int lm1 = (l>0) ? (l-1) : 0; + const std::vector>& jlm1 = psb->get_jlx().at(lm1); + const std::vector>& jl = psb->get_jlx().at(l); + const std::vector>& jlp1 = psb->get_jlx().at(l+1); for (const size_t& ir: radials) { // if(rs[ir]) => rs[ir] has been calculated // if(drs[ir]) => drs[ir] has been calculated // Actually, if(ir[ir]||dr[ir]) is enough. Double insurance for the sake of avoiding numerical errors - if (rs[ir] && drs[ir]) { + if (rs.at(ir) && drs.at(ir)) { continue; } const std::vector& jl_r = jl[ir]; + assert(jl_r.size()>=kmesh); for (int ik = 0; ik < kmesh; ++ik) { integrated_func[ik] = jl_r[ik] * k1_dot_k2[ik]; @@ -357,10 +283,12 @@ void Center2_Orb::cal_ST_Phi12_R(const int& job, double temp = 0.0; ModuleBase::Integral::Simpson_Integral(kmesh, ModuleBase::GlobalFunc::VECTOR_TO_PTR(integrated_func), dk, temp); - rs[ir] = temp * ModuleBase::FOUR_PI; + rs.at(ir) = temp * ModuleBase::FOUR_PI; - const std::vector& jlm1_r = jlm1[ir]; - const std::vector& jlp1_r = jlp1[ir]; + const std::vector& jlm1_r = jlm1.at(ir); + const std::vector& jlp1_r = jlp1.at(ir); + assert(jlm1_r.size()>=kmesh); + assert(jlp1_r.size()>=kmesh); const double fac = l / (l + 1.0); if (l == 0) { @@ -378,7 +306,7 @@ void Center2_Orb::cal_ST_Phi12_R(const int& job, } ModuleBase::Integral::Simpson_Integral(kmesh, ModuleBase::GlobalFunc::VECTOR_TO_PTR(integrated_func), dk, temp); - drs[ir] = -ModuleBase::FOUR_PI * (l + 1) / (2.0 * l + 1) * temp; + drs.at(ir) = -ModuleBase::FOUR_PI * (l + 1) / (2.0 * l + 1) * temp; } // cal rs[0] special @@ -399,7 +327,7 @@ void Center2_Orb::cal_ST_Phi12_R(const int& job, // PLEASE try to make dualfac function as input parameters // mohan note 2021-03-23 - rs[0] = ModuleBase::FOUR_PI / ModuleBase::Mathzone_Add1::dualfac(2 * l + 1) * temp; + rs.at(0) = ModuleBase::FOUR_PI / ModuleBase::Mathzone_Add1::dualfac(2 * l + 1) * temp; } } diff --git a/source/source_lcao/center2_orb.h b/source/source_lcao/center2_orb.h index a10e3dffe5..f9a7688532 100644 --- a/source/source_lcao/center2_orb.h +++ b/source/source_lcao/center2_orb.h @@ -25,21 +25,7 @@ class Center2_Orb static int get_rmesh(const double& R1, const double& R2, const double dr); - static void init_Lmax(const int orb_num, - const int mode, - int& Lmax_used, - int& Lmax, - const int& Lmax_exx, - const int lmax_orb, - const int lmax_beta); - - static void init_Table_Spherical_Bessel(const int orb_num, - const int mode, - int& Lmax_used, - int& Lmax, - const int& Lmax_exx, - const int lmax_orb, - const int lmax_beta, + static void init_Table_Spherical_Bessel(const int Lmax_used, const double dr, const double dk, const int kmesh, @@ -51,8 +37,8 @@ class Center2_Orb const Numerical_Orbital_Lm& n1, const Numerical_Orbital_Lm& n2, const int& rmesh, - double* rs, - double* drs, + std::vector &rs, + std::vector &drs, const ModuleBase::Sph_Bessel_Recursive::D2* psb); // Peize Lin add 2017-10-13 @@ -61,8 +47,8 @@ class Center2_Orb const Numerical_Orbital_Lm& n1, const Numerical_Orbital_Lm& n2, const std::set& radials, // only calculate ir in radials - double* rs, - double* drs, + std::vector &rs, + std::vector &drs, const ModuleBase::Sph_Bessel_Recursive::D2* psb); }; diff --git a/source/source_lcao/dftu_lcao.cpp b/source/source_lcao/dftu_lcao.cpp new file mode 100644 index 0000000000..5a4c6c45c8 --- /dev/null +++ b/source/source_lcao/dftu_lcao.cpp @@ -0,0 +1,112 @@ +#include "dftu_lcao.h" +#include "source_lcao/module_dftu/dftu.h" +#include "source_estate/module_dm/density_matrix.h" +#include "source_lcao/hamilt_lcao.h" + +namespace ModuleESolver +{ + +template +void init_dftu_lcao(const int istep, + const int iter, + const Input_para& inp, + void* dftu, + void* dm, + const UnitCell& ucell, + double** rho, + const int nrxx) +{ + if (!inp.dft_plus_u) + { + return; + } + + auto* dftu_ptr = static_cast(dftu); + auto* dm_ptr = static_cast*>(dm); + + if (istep != 0 || iter != 1) + { + dftu_ptr->set_dmr(dm_ptr); + } + + /// Calculate U and J if Yukawa potential is used + dftu_ptr->cal_slater_UJ(ucell, rho, nrxx); +} + +template +void finish_dftu_lcao(const int iter, + const bool conv_esolver, + const Input_para& inp, + void* dftu, + const UnitCell& ucell, + const std::vector>& dm_vec, + const K_Vectors& kv, + const double mixing_beta, + void* hamilt_lcao) +{ + if (!inp.dft_plus_u) + { + return; + } + + auto* dftu_ptr = static_cast(dftu); + auto* hamilt_lcao_ptr = static_cast*>(hamilt_lcao); + + /// old DFT+U method calculates energy correction in esolver, + /// new DFT+U method calculates energy in Hamiltonian + if (inp.dft_plus_u == 2) + { + if (dftu_ptr->omc != 2) + { + dftu_cal_occup_m(iter, ucell, dm_vec, kv, mixing_beta, + static_cast*>(hamilt_lcao_ptr), *dftu_ptr); + } + dftu_ptr->cal_energy_correction(ucell, iter); + } + dftu_ptr->output(ucell); + + /// use the converged occupation matrix for next MD/Relax SCF calculation + if (conv_esolver) + { + dftu_ptr->initialed_locale = true; + } +} + +/// Template instantiation +template void init_dftu_lcao(const int istep, + const int iter, + const Input_para& inp, + void* dftu, + void* dm, + const UnitCell& ucell, + double** rho, + const int nrxx); +template void init_dftu_lcao>(const int istep, + const int iter, + const Input_para& inp, + void* dftu, + void* dm, + const UnitCell& ucell, + double** rho, + const int nrxx); + +template void finish_dftu_lcao(const int iter, + const bool conv_esolver, + const Input_para& inp, + void* dftu, + const UnitCell& ucell, + const std::vector>& dm_vec, + const K_Vectors& kv, + const double mixing_beta, + void* hamilt_lcao); +template void finish_dftu_lcao>(const int iter, + const bool conv_esolver, + const Input_para& inp, + void* dftu, + const UnitCell& ucell, + const std::vector>>& dm_vec, + const K_Vectors& kv, + const double mixing_beta, + void* hamilt_lcao); + +} // namespace ModuleESolver diff --git a/source/source_lcao/dftu_lcao.h b/source/source_lcao/dftu_lcao.h new file mode 100644 index 0000000000..5138b66256 --- /dev/null +++ b/source/source_lcao/dftu_lcao.h @@ -0,0 +1,65 @@ +#ifndef DFTU_LCAO_H +#define DFTU_LCAO_H + +#include "source_cell/unitcell.h" +#include "source_cell/klist.h" +#include "source_io/module_parameter/input_parameter.h" + +namespace ModuleESolver +{ + +/** + * @brief Initialize DFT+U for LCAO method in iter_init + * + * This function handles the DFT+U initialization during the SCF iteration. + * It sets the density matrix and calculates Slater integrals if needed. + * + * @param istep Current ionic step + * @param iter Current SCF iteration + * @param inp Input parameters + * @param dftu DFT+U object + * @param dm Density matrix + * @param ucell Unit cell + * @param rho Charge density + * @param nrxx Number of real space grid points + */ +template +void init_dftu_lcao(const int istep, + const int iter, + const Input_para& inp, + void* dftu, + void* dm, + const UnitCell& ucell, + double** rho, + const int nrxx); + +/** + * @brief Finish DFT+U calculation for LCAO method in iter_finish + * + * This function handles the DFT+U finalization during the SCF iteration. + * It calculates the occupation matrix and energy correction if needed. + * + * @param iter Current SCF iteration + * @param conv_esolver Whether ESolver has converged + * @param inp Input parameters + * @param dftu DFT+U object + * @param ucell Unit cell + * @param dm_vec Density matrix vector + * @param kv K-vectors + * @param mixing_beta Mixing beta parameter + * @param hamilt_lcao Hamiltonian LCAO object + */ +template +void finish_dftu_lcao(const int iter, + const bool conv_esolver, + const Input_para& inp, + void* dftu, + const UnitCell& ucell, + const std::vector>& dm_vec, + const K_Vectors& kv, + const double mixing_beta, + void* hamilt_lcao); + +} // namespace ModuleESolver + +#endif // DFTU_LCAO_H diff --git a/source/source_lcao/edm.cpp b/source/source_lcao/edm.cpp index 7937a503ac..7ad1b30fbe 100644 --- a/source/source_lcao/edm.cpp +++ b/source/source_lcao/edm.cpp @@ -1,5 +1,6 @@ #include "FORCE.h" #include "source_estate/module_dm/cal_dm_psi.h" +#include "source_estate/elecstate_lcao.h" #include "source_base/memory.h" #include "source_io/module_parameter/parameter.h" template<> @@ -30,10 +31,10 @@ elecstate::DensityMatrix Force_LCAO::cal_edm(const elecs #ifdef __PEXSI if (PARAM.inp.ks_solver == "pexsi") { - auto pes = dynamic_cast*>(pelec); + // auto pes = dynamic_cast*>(pelec); for (int ik = 0; ik < nspin; ik++) { - edm.set_DMK_pointer(ik, pes->get_DM()->pexsi_EDM[ik]); + edm.set_DMK_pointer(ik, dm.pexsi_EDM[ik]); } } @@ -42,11 +43,14 @@ elecstate::DensityMatrix Force_LCAO::cal_edm(const elecs { elecstate::cal_dm_psi(edm.get_paraV_pointer(), wg_ekb, psi, edm); } + edm.init_DMR(ra, &ucell); + edm.cal_DMR(); return edm; } template<> -elecstate::DensityMatrix, double> Force_LCAO>::cal_edm(const elecstate::ElecState* pelec, +elecstate::DensityMatrix, double> Force_LCAO>::cal_edm( + const elecstate::ElecState* pelec, const psi::Psi>& psi, const elecstate::DensityMatrix, double>& dm, const K_Vectors& kv, @@ -100,4 +104,4 @@ elecstate::DensityMatrix, double> Force_LCAO @@ -30,17 +29,18 @@ #include "source_hsolver/hsolver_lcao.h" #include "module_operator_lcao/dftu_lcao.h" #include "module_operator_lcao/dspin_lcao.h" -#include "module_operator_lcao/ekinetic_new.h" +#include "module_operator_lcao/ekinetic.h" #include "module_operator_lcao/meta_lcao.h" -#include "module_operator_lcao/nonlocal_new.h" +#include "module_operator_lcao/nonlocal.h" #include "module_operator_lcao/op_dftu_lcao.h" #include "module_operator_lcao/op_exx_lcao.h" -#include "module_operator_lcao/overlap_new.h" +#include "module_operator_lcao/overlap.h" #include "module_operator_lcao/td_ekinetic_lcao.h" #include "module_operator_lcao/td_nonlocal_lcao.h" #include "module_operator_lcao/td_pot_hybrid.h" #include "module_operator_lcao/veff_lcao.h" + namespace hamilt { @@ -59,7 +59,7 @@ HamiltLCAO::HamiltLCAO(const UnitCell& ucell, // initialize the overlap matrix this->sR = new HContainer(paraV); - this->getOperator() = new OverlapNew>(this->hsk, + this->getOperator() = new Overlap>(this->hsk, this->kv->kvec_d, this->hR, this->sR, @@ -70,28 +70,18 @@ HamiltLCAO::HamiltLCAO(const UnitCell& ucell, } template -HamiltLCAO::HamiltLCAO(Gint_Gamma* GG_in, - Gint_k* GK_in, - const UnitCell& ucell, +HamiltLCAO::HamiltLCAO(const UnitCell& ucell, const Grid_Driver& grid_d, const Parallel_Orbitals* paraV, elecstate::Potential* pot_in, const K_Vectors& kv_in, const TwoCenterBundle& two_center_bundle, const LCAO_Orbitals& orb, - elecstate::DensityMatrix* DM_in -#ifdef __MLALGO - , - LCAO_Deepks* ld_in -#endif -#ifdef __EXX - , - const int istep, - int* exx_two_level_step, - std::vector>>>* Hexxd, - std::vector>>>>* Hexxc -#endif -) + elecstate::DensityMatrix* DM_in, + Plus_U* p_dftu, // mohan add 2025-11-05 + Setup_DeePKS &deepks, + const int istep, + Exx_NAO &exx_nao) { this->classname = "HamiltLCAO"; @@ -131,6 +121,10 @@ HamiltLCAO::HamiltLCAO(Gint_Gamma* GG_in, { pot_register_in.push_back("tddft"); } + if (PARAM.inp.ml_exx) // sunliang + { + pot_register_in.push_back("ml_exx"); + } } // Gamma_only case to initialize HamiltLCAO @@ -143,7 +137,7 @@ HamiltLCAO::HamiltLCAO(Gint_Gamma* GG_in, // initial operator for Gamma_only case // overlap term () is indispensable // in Gamma_only case, target SK is this->hsk->get_sk(), the target SR is this->sR - this->getOperator() = new OverlapNew>(this->hsk, + this->getOperator() = new Overlap>(this->hsk, this->kv->kvec_d, this->hR, this->sR, @@ -155,7 +149,7 @@ HamiltLCAO::HamiltLCAO(Gint_Gamma* GG_in, // kinetic term () if (PARAM.inp.t_in_h) { - Operator* ekinetic = new EkineticNew>(this->hsk, + Operator* ekinetic = new EKinetic>(this->hsk, this->kv->kvec_d, this->hR, &ucell, @@ -169,7 +163,7 @@ HamiltLCAO::HamiltLCAO(Gint_Gamma* GG_in, // in general case, target HR is this->hR, while target HK is this->hsk->get_hk() if (PARAM.inp.vnl_in_h) { - Operator* nonlocal = new NonlocalNew>(this->hsk, + Operator* nonlocal = new Nonlocal>(this->hsk, this->kv->kvec_d, this->hR, &ucell, @@ -189,8 +183,7 @@ HamiltLCAO::HamiltLCAO(Gint_Gamma* GG_in, // register Potential by gathered operator pot_in->pot_register(pot_register_in); // effective potential term - Operator* veff = new Veff>(GG_in, - this->hsk, + Operator* veff = new Veff>(this->hsk, this->kv->kvec_d, pot_in, this->hR, // no explicit call yet @@ -205,7 +198,7 @@ HamiltLCAO::HamiltLCAO(Gint_Gamma* GG_in, #ifdef __MLALGO if (PARAM.inp.deepks_scf) { - Operator* deepks = new DeePKS>(this->hsk, + Operator* deepks_op = new DeePKS>(this->hsk, this->kv->kvec_d, this->hR, // no explicit call yet &ucell, @@ -214,35 +207,36 @@ HamiltLCAO::HamiltLCAO(Gint_Gamma* GG_in, &orb, this->kv->get_nks(), DM_in, - ld_in); - this->getOperator()->add(deepks); - this->V_delta_R = dynamic_cast>*>(deepks)->get_V_delta_R(); + &deepks.ld); + this->getOperator()->add(deepks_op); + this->V_delta_R = dynamic_cast>*>(deepks_op)->get_V_delta_R(); } #endif // end node should be OperatorDFTU if (PARAM.inp.dft_plus_u) { - Operator* dftu = nullptr; + Operator* plus_u = nullptr; if (PARAM.inp.dft_plus_u == 2) { - dftu = new OperatorDFTU>(this->hsk, + plus_u = new OperatorDFTU>(this->hsk, this->kv->kvec_d, - this->hR, // no explicit call yet - this->kv->isk); + this->hR, // no explicit call yet + p_dftu, // mohan add 2025-11-07 + this->kv->isk); } else { - dftu = new DFTU>(this->hsk, + plus_u = new DFTU>(this->hsk, this->kv->kvec_d, this->hR, ucell, &grid_d, two_center_bundle.overlap_orb_onsite.get(), orb.cutoffs(), - &GlobalC::dftu); + p_dftu); } - this->getOperator()->add(dftu); + this->getOperator()->add(plus_u); } } // multi-k-points case to initialize HamiltLCAO, ops will be used @@ -259,8 +253,7 @@ HamiltLCAO::HamiltLCAO(Gint_Gamma* GG_in, // register Potential by gathered operator pot_in->pot_register(pot_register_in); // Veff term - this->getOperator() = new Veff>(GK_in, - this->hsk, + this->getOperator() = new Veff>(this->hsk, this->kv->kvec_d, pot_in, this->hR, @@ -273,7 +266,7 @@ HamiltLCAO::HamiltLCAO(Gint_Gamma* GG_in, // initial operator for multi-k case // overlap term is indispensable - Operator* overlap = new OverlapNew>(this->hsk, + Operator* overlap = new Overlap>(this->hsk, this->kv->kvec_d, this->hR, this->sR, @@ -294,7 +287,7 @@ HamiltLCAO::HamiltLCAO(Gint_Gamma* GG_in, // in general case, target HR is this->hR, while target HK is this->hsk->get_hk() if (PARAM.inp.t_in_h) { - Operator* ekinetic = new EkineticNew>(this->hsk, + Operator* ekinetic = new EKinetic>(this->hsk, this->kv->kvec_d, this->hR, &ucell, @@ -308,7 +301,7 @@ HamiltLCAO::HamiltLCAO(Gint_Gamma* GG_in, // in general case, target HR is this->hR, while target HK is this->hsk->get_hk() if (PARAM.inp.vnl_in_h) { - Operator* nonlocal = new NonlocalNew>(this->hsk, + Operator* nonlocal = new Nonlocal>(this->hsk, this->kv->kvec_d, this->hR, &ucell, @@ -330,7 +323,7 @@ HamiltLCAO::HamiltLCAO(Gint_Gamma* GG_in, #ifdef __MLALGO if (PARAM.inp.deepks_scf) { - Operator* deepks = new DeePKS>(this->hsk, + Operator* deepks_op = new DeePKS>(this->hsk, this->kv->kvec_d, hR, &ucell, @@ -339,9 +332,9 @@ HamiltLCAO::HamiltLCAO(Gint_Gamma* GG_in, &orb, this->kv->get_nks(), DM_in, - ld_in); - this->getOperator()->add(deepks); - this->V_delta_R = dynamic_cast>*>(deepks)->get_V_delta_R(); + &deepks.ld); + this->getOperator()->add(deepks_op); + this->V_delta_R = dynamic_cast>*>(deepks_op)->get_V_delta_R(); } #endif // TDDFT_velocity_gauge @@ -379,26 +372,27 @@ HamiltLCAO::HamiltLCAO(Gint_Gamma* GG_in, } if (PARAM.inp.dft_plus_u) { - Operator* dftu = nullptr; + Operator* plus_u = nullptr; if (PARAM.inp.dft_plus_u == 2) { - dftu = new OperatorDFTU>(this->hsk, + plus_u = new OperatorDFTU>(this->hsk, this->kv->kvec_d, - this->hR, // no explicit call yet + this->hR, // no explicit call yet + p_dftu, // mohan add 2025-11-07 this->kv->isk); } else { - dftu = new DFTU>(this->hsk, + plus_u = new DFTU>(this->hsk, this->kv->kvec_d, this->hR, ucell, &grid_d, two_center_bundle.overlap_orb_onsite.get(), orb.cutoffs(), - &GlobalC::dftu); + p_dftu); } - this->getOperator()->add(dftu); + this->getOperator()->add(plus_u); } if (PARAM.inp.sc_mag_switch) { @@ -418,20 +412,53 @@ HamiltLCAO::HamiltLCAO(Gint_Gamma* GG_in, #ifdef __EXX if (GlobalC::exx_info.info_global.cal_exx) { + int* exx_two_level_step = nullptr; + std::vector>>>* Hexxd = nullptr; + std::vector>>>>* Hexxc = nullptr; + + if(GlobalC::exx_info.info_ri.real_number) + { + exx_two_level_step = &exx_nao.exd->two_level_step; + Hexxd = &exx_nao.exd->get_Hexxs(); + } + else + { + exx_two_level_step = &exx_nao.exc->two_level_step; + Hexxc = &exx_nao.exc->get_Hexxs(); + } + // Peize Lin add 2016-12-03 // set xc type before the first cal of xc in pelec->init_scf // and calculate Cs, Vs - Operator* exx = new OperatorEXX>(this->hsk, - this->hR, - ucell, - *kv, - Hexxd, - Hexxc, - Add_Hexx_Type::R, - istep, - exx_two_level_step, - !GlobalC::restart.info_load.restart_exx - && GlobalC::restart.info_load.load_H); + Operator* exx; + if (PARAM.inp.esolver_type == "tddft") + { + exx = new OperatorEXX>(this->hsk, + this->hR, + ucell, + *this->kv, + Hexxd, + Hexxc, + Add_Hexx_Type::k, + istep, + exx_two_level_step, + !GlobalC::restart.info_load.restart_exx + && GlobalC::restart.info_load.load_H); + } + else + { + exx = new OperatorEXX>(this->hsk, + this->hR, + ucell, + *kv, + Hexxd, + Hexxc, + Add_Hexx_Type::R, + istep, + exx_two_level_step, + !GlobalC::restart.info_load.restart_exx + && GlobalC::restart.info_load.load_H); + } this->getOperator()->add(exx); } #endif @@ -487,20 +514,34 @@ void HamiltLCAO::updateHk(const int ik) } template -void HamiltLCAO::refresh() +void HamiltLCAO::refresh(bool yes) { ModuleBase::TITLE("HamiltLCAO", "refresh"); - dynamic_cast*>(this->ops)->set_hr_done(false); - if (PARAM.inp.nspin == 2) + if(yes) { - this->refresh_times = 1; - this->current_spin = 0; - if (this->hR->get_nnr() != this->hRS2.size() / 2) + dynamic_cast*>(this->ops)->set_hr_done(false); + if (PARAM.inp.nspin == 2) { - // operator has changed, resize hRS2 - this->hRS2.resize(this->hR->get_nnr() * 2); + this->refresh_times = 1; + this->current_spin = 0; + if (this->hR->get_nnr() != this->hRS2.size() / 2) + { + // operator has changed, resize hRS2 + this->hRS2.resize(this->hR->get_nnr() * 2); + } + this->hR->allocate(this->hRS2.data(), 0); + } + } + else { + dynamic_cast*>(this->ops)->set_hr_done(true); + this->refresh_times = 0; + if (PARAM.inp.nspin == 2) + { + // HR has been loaded from file into both halves of hRS2. + // Reset to spin-up; updateHk will switch pointers as needed. + this->current_spin = 0; + this->hR->allocate(this->hRS2.data(), 0); } - this->hR->allocate(this->hRS2.data(), 0); } } diff --git a/source/source_lcao/hamilt_lcao.h b/source/source_lcao/hamilt_lcao.h index 16c5c34e0a..49b309b8c3 100644 --- a/source/source_lcao/hamilt_lcao.h +++ b/source/source_lcao/hamilt_lcao.h @@ -8,19 +8,19 @@ #include "source_estate/module_pot/potential_new.h" #include "source_hamilt/hamilt.h" #include "source_lcao/hs_matrix_k.hpp" -#include "source_lcao/module_gint/gint_gamma.h" -#include "source_lcao/module_gint/gint_k.h" #include "source_lcao/module_hcontainer/hcontainer.h" #include -#ifdef __MLALGO -#include "source_lcao/module_deepks/LCAO_deepks.h" -#endif +#include "source_lcao/setup_deepks.h" // mohan add 20251008 #ifdef __EXX #include "source_lcao/module_ri/Exx_LRI.h" #endif + +#include "source_lcao/setup_exx.h" // for exx, mohan add 20251022 +#include "source_lcao/module_dftu/dftu.h" // mohan add 2025-11-05 + namespace hamilt { @@ -41,28 +41,18 @@ class HamiltLCAO : public Hamilt * @brief Constructor of Hamiltonian for LCAO base * HR and SR will be allocated with Operators */ - HamiltLCAO(Gint_Gamma* GG_in, - Gint_k* GK_in, - const UnitCell& ucell, + HamiltLCAO(const UnitCell& ucell, const Grid_Driver& grid_d, const Parallel_Orbitals* paraV, elecstate::Potential* pot_in, const K_Vectors& kv_in, const TwoCenterBundle& two_center_bundle, const LCAO_Orbitals& orb, - elecstate::DensityMatrix* DM_in -#ifdef __MLALGO - , - LCAO_Deepks* ld_in -#endif -#ifdef __EXX - , - const int istep, - int* exx_two_level_step = nullptr, - std::vector>>>* Hexxd = nullptr, - std::vector>>>>* Hexxc = nullptr -#endif - ); + elecstate::DensityMatrix* DM_in, + Plus_U* p_dftu, // mohan add 2025-11-05 + Setup_DeePKS &deepks, + const int istep, + Exx_NAO &exx_nao); /** * @brief Constructor of vacuum Operators, only HR and SR will be initialed as empty HContainer @@ -110,12 +100,20 @@ class HamiltLCAO : public Hamilt { return this->hR; } + const HContainer* getHR() const + { + return this->hR; + } /// get SR pointer of *this->sR, which is a HContainer and contains S(R) HContainer*& getSR() { return this->sR; } + const HContainer* getSR() const + { + return this->sR; + } #ifdef __MLALGO /// get V_delta_R pointer of *this->V_delta_R, which is a HContainer and contains V_delta(R) @@ -125,8 +123,11 @@ class HamiltLCAO : public Hamilt } #endif + /// get hRS2 buffer for NSPIN=2 case (spin-up in first half, spin-down in second half) + std::vector& getHRS2() { return this->hRS2; } + /// refresh the status of HR - void refresh() override; + void refresh(bool yes) override; // for target K point, update consequence of hPsi() and matrix() virtual void updateHk(const int ik) override; diff --git a/source/source_lcao/module_deepks/LCAO_deepks.cpp b/source/source_lcao/module_deepks/LCAO_deepks.cpp index 6755c0c256..2cbc04680c 100644 --- a/source/source_lcao/module_deepks/LCAO_deepks.cpp +++ b/source/source_lcao/module_deepks/LCAO_deepks.cpp @@ -14,13 +14,12 @@ #include "LCAO_deepks.h" #include "deepks_iterate.h" -#include "source_pw/module_pwdft/global.h" // Constructor of the class template LCAO_Deepks::LCAO_Deepks() { - inl_index = new ModuleBase::IntArray[1]; + deepks_param.inl_index = new ModuleBase::IntArray[1]; gedm = nullptr; this->phialpha.resize(1); } @@ -29,7 +28,7 @@ LCAO_Deepks::LCAO_Deepks() template LCAO_Deepks::~LCAO_Deepks() { - delete[] inl_index; + delete[] deepks_param.inl_index; //=======1. to use deepks, pdm is required========== pdm.clear(); @@ -38,7 +37,7 @@ LCAO_Deepks::~LCAO_Deepks() if (gedm) { // delete gedm** - for (int inl = 0; inl < this->inlmax; inl++) + for (int inl = 0; inl < this->deepks_param.inlmax; inl++) { delete[] gedm[inl]; } @@ -75,25 +74,25 @@ void LCAO_Deepks::init(const LCAO_Orbitals& orb, tot_inl = nat; } - this->lmaxd = lm; - this->nmaxd = nm; + this->deepks_param.lmaxd = lm; + this->deepks_param.nmaxd = nm; - ofs << " lmax of descriptor = " << this->lmaxd << std::endl; - ofs << " nmax of descriptor = " << nmaxd << std::endl; + ofs << " lmax of descriptor = " << deepks_param.lmaxd << std::endl; + ofs << " nmax of descriptor = " << deepks_param.nmaxd << std::endl; int pdm_size = 0; - this->inlmax = tot_inl; - this->pdm.resize(this->inlmax); + this->deepks_param.inlmax = tot_inl; + this->pdm.resize(this->deepks_param.inlmax); // cal n(descriptor) per atom , related to Lmax, nchi(L) and m. (not total_nchi!) if (!PARAM.inp.deepks_equiv) { - this->des_per_atom = 0; // mohan add 2021-04-21 - for (int l = 0; l <= this->lmaxd; l++) + this->deepks_param.des_per_atom = 0; // mohan add 2021-04-21 + for (int l = 0; l <= deepks_param.lmaxd; l++) { - this->des_per_atom += orb.Alpha[0].getNchi(l) * (2 * l + 1); + this->deepks_param.des_per_atom += orb.Alpha[0].getNchi(l) * (2 * l + 1); } - this->n_descriptor = nat * this->des_per_atom; + this->deepks_param.n_descriptor = nat * this->deepks_param.des_per_atom; this->init_index(ntype, nat, na, tot_inl, orb, ofs); } @@ -103,21 +102,21 @@ void LCAO_Deepks::init(const LCAO_Orbitals& orb, ofs << " total basis (all atoms) for descriptor = " << std::endl; // init pdm - for (int inl = 0; inl < this->inlmax; inl++) + for (int inl = 0; inl < this->deepks_param.inlmax; inl++) { - int nm = 2 * inl2l[inl] + 1; + int nm = 2 * deepks_param.inl2l[inl] + 1; pdm_size += nm * nm; this->pdm[inl] = torch::zeros({nm, nm}, torch::kFloat64); } } else { - for (int il = 0; il < this->lmaxd + 1; il++) + for (int il = 0; il < this->deepks_param.lmaxd + 1; il++) { pdm_size += (2 * il + 1) * orb.Alpha[0].getNchi(il); } pdm_size = pdm_size * pdm_size; - this->des_per_atom = pdm_size; + this->deepks_param.des_per_atom = pdm_size; ofs << " Equivariant version, size of pdm matrices : " << pdm_size << std::endl; for (int iat = 0; iat < nat; iat++) { @@ -139,35 +138,35 @@ void LCAO_Deepks::init_index(const int ntype, const LCAO_Orbitals& orb, std::ofstream& ofs) { - delete[] this->inl_index; - this->inl_index = new ModuleBase::IntArray[ntype]; - this->inl2l.resize(this->inlmax, 0); + delete[] this->deepks_param.inl_index; + this->deepks_param.inl_index = new ModuleBase::IntArray[ntype]; + this->deepks_param.inl2l.resize(this->deepks_param.inlmax, 0); int inl = 0; int alpha = 0; for (int it = 0; it < ntype; it++) { - this->inl_index[it].create(na[it], this->lmaxd + 1, this->nmaxd); + this->deepks_param.inl_index[it].create(na[it], this->deepks_param.lmaxd + 1, this->deepks_param.nmaxd); ofs << " Type " << it + 1 << " number_of_atoms " << na[it] << std::endl; for (int ia = 0; ia < na[it]; ia++) { // alpha - for (int l = 0; l < this->lmaxd + 1; l++) + for (int l = 0; l < this->deepks_param.lmaxd + 1; l++) { for (int n = 0; n < orb.Alpha[0].getNchi(l); n++) { - this->inl_index[it](ia, l, n) = inl; - this->inl2l[inl] = l; + this->deepks_param.inl_index[it](ia, l, n) = inl; + this->deepks_param.inl2l[inl] = l; inl++; } } } // end ia } // end it assert(Total_nchi == inl); - ofs << " descriptors_per_atom " << this->des_per_atom << std::endl; - ofs << " total_descriptors " << this->n_descriptor << std::endl; + ofs << " descriptors_per_atom " << this->deepks_param.des_per_atom << std::endl; + ofs << " total_descriptors " << this->deepks_param.n_descriptor << std::endl; return; } @@ -189,15 +188,15 @@ void LCAO_Deepks::allocate_V_delta(const int nat, const int nks) int pdm_size = 0; if (!PARAM.inp.deepks_equiv) { - pdm_size = (this->lmaxd * 2 + 1) * (this->lmaxd * 2 + 1); + pdm_size = (this->deepks_param.lmaxd * 2 + 1) * (this->deepks_param.lmaxd * 2 + 1); } else { - pdm_size = this->des_per_atom; + pdm_size = this->deepks_param.des_per_atom; } - this->gedm = new double*[this->inlmax]; - for (int inl = 0; inl < this->inlmax; inl++) + this->gedm = new double*[this->deepks_param.inlmax]; + for (int inl = 0; inl < this->deepks_param.inlmax; inl++) { this->gedm[inl] = new double[pdm_size]; ModuleBase::GlobalFunc::ZEROS(this->gedm[inl], pdm_size); @@ -214,44 +213,41 @@ void LCAO_Deepks::init_DMR(const UnitCell& ucell, const Grid_Driver& GridD) { this->dm_r = new hamilt::HContainer(&pv); - DeePKS_domain::iterate_ad2( - ucell, - GridD, - orb, - false, // no trace_alpha - [&](const int iat, - const ModuleBase::Vector3& tau0, - const int ibt1, - const ModuleBase::Vector3& tau1, - const int start1, - const int nw1_tot, - ModuleBase::Vector3 dR1, - const int ibt2, - const ModuleBase::Vector3& tau2, - const int start2, - const int nw2_tot, - ModuleBase::Vector3 dR2) - { - auto row_indexes = pv.get_indexes_row(ibt1); - auto col_indexes = pv.get_indexes_col(ibt2); - if (row_indexes.size() * col_indexes.size() == 0) - { - return; // to next loop - } - - int dRx = 0; - int dRy = 0; - int dRz = 0; - if (std::is_same>::value) - { - dRx = (dR1 - dR2).x; - dRy = (dR1 - dR2).y; - dRz = (dR1 - dR2).z; - } - hamilt::AtomPair dm_pair(ibt1, ibt2, dRx, dRy, dRz, &pv); - this->dm_r->insert_pair(dm_pair); - } - ); + DeePKS_domain::iterate_ad2(ucell, + GridD, + orb, + false, // no trace_alpha + [&](const int iat, + const ModuleBase::Vector3& tau0, + const int ibt1, + const ModuleBase::Vector3& tau1, + const int start1, + const int nw1_tot, + ModuleBase::Vector3 dR1, + const int ibt2, + const ModuleBase::Vector3& tau2, + const int start2, + const int nw2_tot, + ModuleBase::Vector3 dR2) { + auto row_indexes = pv.get_indexes_row(ibt1); + auto col_indexes = pv.get_indexes_col(ibt2); + if (row_indexes.size() * col_indexes.size() == 0) + { + return; // to next loop + } + + int dRx = 0; + int dRy = 0; + int dRz = 0; + if (std::is_same>::value) + { + dRx = (dR1 - dR2).x; + dRy = (dR1 - dR2).y; + dRz = (dR1 - dR2).z; + } + hamilt::AtomPair dm_pair(ibt1, ibt2, dRx, dRy, dRz, &pv); + this->dm_r->insert_pair(dm_pair); + }); this->dm_r->allocate(nullptr, true); } diff --git a/source/source_lcao/module_deepks/LCAO_deepks.h b/source/source_lcao/module_deepks/LCAO_deepks.h index 5f2efac8d8..0fe4815a95 100644 --- a/source/source_lcao/module_deepks/LCAO_deepks.h +++ b/source/source_lcao/module_deepks/LCAO_deepks.h @@ -10,6 +10,7 @@ #include "deepks_fpre.h" #include "deepks_orbital.h" #include "deepks_orbpre.h" +#include "deepks_param.h" #include "deepks_pdm.h" #include "deepks_phialpha.h" #include "deepks_spre.h" @@ -24,7 +25,6 @@ #include "source_basis/module_nao/two_center_integrator.h" #include "source_cell/module_neighbor/sltk_grid_driver.h" #include "source_lcao/module_hcontainer/hcontainer.h" -#include "source_io/winput.h" #include #include @@ -68,14 +68,8 @@ class LCAO_Deepks // private variables //------------------- // private: - public: // change to public to reconstuct the code, 2024-07-22 by mohan - int lmaxd = 0; // max l of descirptors - int nmaxd = 0; //#. descriptors per l - int inlmax = 0; // tot. number {i,n,l} - atom, n, l - int n_descriptor; // natoms * des_per_atom, size of descriptor(projector) basis set - int des_per_atom; // \sum_L{Nchi(L)*(2L+1)} - std::vector inl2l; // inl2l[inl] = inl2l[nl] = l (not related to iat) of descriptor with inl_index - ModuleBase::IntArray* inl_index; // caoyu add 2021-05-07 + public: // change to public to reconstuct the code, 2024-07-22 by mohan + DeePKS_Param deepks_param; // parameters for DeePKS bool init_pdm = false; // for DeePKS NSCF calculation, set init_pdm to skip the calculation of pdm in SCF iteration @@ -162,7 +156,7 @@ class LCAO_Deepks const LCAO_Orbitals& orb, std::ofstream& ofs); - const Parallel_Orbitals* pv; + const Parallel_Orbitals* pv = nullptr; }; #endif diff --git a/source/source_lcao/module_deepks/LCAO_deepks_interface.cpp b/source/source_lcao/module_deepks/LCAO_deepks_interface.cpp index d2bfe71d14..1d68dbc603 100644 --- a/source/source_lcao/module_deepks/LCAO_deepks_interface.cpp +++ b/source/source_lcao/module_deepks/LCAO_deepks_interface.cpp @@ -2,12 +2,13 @@ #include "LCAO_deepks_interface.h" #include "LCAO_deepks_io.h" // mohan add 2024-07-22 +#include "source_base/global_variable.h" +#include "source_base/tool_title.h" #include "source_estate/cal_dm.h" +#include "source_io/module_parameter/parameter.h" #include "source_lcao/module_hcontainer/hcontainer.h" +#include "source_lcao/module_hcontainer/hcontainer_funcs.h" #include "source_lcao/module_hcontainer/output_hcontainer.h" -#include "source_io/module_parameter/parameter.h" -#include "source_base/global_variable.h" -#include "source_base/tool_title.h" #include @@ -17,15 +18,10 @@ LCAO_Deepks_Interface::LCAO_Deepks_Interface(std::shared_ptr file_type_map = { - {"etot", "energy"}, - {"ftot", "force"}, - {"stot", "stress"}, - {"otot", "orbital"}, - {"htot", "hamiltonian"} - }; + static const std::unordered_map file_type_map + = {{"etot", "energy"}, {"ftot", "force"}, {"stot", "stress"}, {"otot", "orbital"}, {"htot", "hamiltonian"}}; auto it = file_type_map.find(file_type); return it != file_type_map.end() ? it->second : file_type; @@ -33,13 +29,14 @@ std::string true_file_type(const std::string& file_type) // global_out_dir/deepks_*.npy for iter=-1 (called in after_scf) // global_out_dir/DeePKS_Labels_Elec/*_e*.npy for iter>0 (called during electronic steps) -std::string get_filename(const std::string& file_type, - const int& label_type, - const int& iter) +template +std::string LCAO_Deepks_Interface::get_filename(const std::string& file_type, + const int& label_type, + const int& iter) { std::ostringstream file_name; file_name << (iter == -1 ? PARAM.globalv.global_out_dir : PARAM.globalv.global_deepks_label_elec_dir); - if (iter == -1) + if (iter == -1) { file_name << "deepks_"; } @@ -80,28 +77,32 @@ void LCAO_Deepks_Interface::out_deepks_labels(const double& etot, using TH = std::conditional_t::value, ModuleBase::matrix, ModuleBase::ComplexMatrix>; // These variables are frequently used in the following code - const int nlmax = orb.Alpha[0].getTotal_nchi(); - const int inlmax = nlmax * nat; - const int lmaxd = orb.get_lmax_d(); - const int nmaxd = ld->nmaxd; - - const int des_per_atom = ld->des_per_atom; - const std::vector inl2l = ld->inl2l; - const ModuleBase::IntArray* inl_index = ld->inl_index; const std::vector*> phialpha = ld->phialpha; + const DeePKS_Param& deepks_param = ld->deepks_param; + std::vector pdm = ld->pdm; bool init_pdm = ld->init_pdm; double E_delta = ld->E_delta; double e_delta_band = ld->e_delta_band; hamilt::HContainer* dmr = ld->dm_r; + // Used for deepks_bandgap == 1 and deepks_v_delta > 0 + std::vector>* h_delta = &ld->V_delta; const int nspin = PARAM.inp.nspin; const int nk = nks / nspin; - const bool not_first_step = (iter != 1); // not output in the first electronic step, for energy and otot/obase - const bool not_last_step = (iter == -1) || !conv_esolver; //not output in the last electronic step const bool is_after_scf = (iter == -1); // called in after_scf, not in electronic steps + const bool output_base + = PARAM.inp.deepks_out_labels == 1 + && is_after_scf; // not output when deepks_out_labels=2 and in electronic step (output true base elsewhere) + const bool output_precalc + = (PARAM.inp.deepks_out_labels == 1) && (PARAM.inp.deepks_scf || PARAM.inp.deepks_out_freq_elec); + + //================================================================================ + // 1. Update real-space density matrix (DMR) for deepks, projected density matrix (PDM) + // and descriptor. Output descriptor if needed. + //================================================================================ // Update DMR in any case of deepks_out_labels/deepks_scf DeePKS_domain::update_dmr(kvec_d, dm->get_DMK_vector(), ucell, orb, *ParaV, GridD, dmr); @@ -112,36 +113,21 @@ void LCAO_Deepks_Interface::out_deepks_labels(const double& etot, { // this part is for integrated test of deepks // so it is printed no matter even if deepks_out_labels is not used - DeePKS_domain::cal_pdm< - TK>(init_pdm, inlmax, lmaxd, inl2l, inl_index, kvec_d, dmr, phialpha, ucell, orb, GridD, *ParaV, pdm); + DeePKS_domain::cal_pdm(init_pdm, deepks_param, kvec_d, dmr, phialpha, ucell, orb, GridD, *ParaV, pdm); - DeePKS_domain::check_pdm(inlmax, inl2l, pdm); // print out the projected dm for NSCF calculaiton + DeePKS_domain::check_pdm(deepks_param, pdm); // print out the projected dm for NSCF calculaiton std::vector descriptor; - DeePKS_domain::cal_descriptor(nat, inlmax, inl2l, pdm, descriptor, - des_per_atom); // final descriptor - DeePKS_domain::check_descriptor(inlmax, - des_per_atom, - inl2l, - ucell, - PARAM.globalv.global_out_dir, - descriptor, - rank); - - if ( not_last_step ) - { - const int true_iter = is_after_scf ? iter : iter + 1; - const std::string file_d = get_filename("dm_eig", PARAM.inp.deepks_out_labels, true_iter); - LCAO_deepks_io::save_npy_d(nat, - des_per_atom, - inlmax, - inl2l, - PARAM.inp.deepks_equiv, - descriptor, - file_d, - rank); // libnpy needed - } + DeePKS_domain::cal_descriptor(nat, deepks_param, pdm, descriptor); // final descriptor + DeePKS_domain::check_descriptor(deepks_param, ucell, PARAM.globalv.global_out_dir, descriptor, rank); + const std::string file_d = get_filename("dm_eig", PARAM.inp.deepks_out_labels, iter); + LCAO_deepks_io::save_npy_d(nat, + PARAM.inp.deepks_equiv, + deepks_param, + descriptor, + file_d, + rank); // libnpy needed if (PARAM.inp.deepks_scf) { @@ -149,68 +135,108 @@ void LCAO_Deepks_Interface::out_deepks_labels(const double& etot, // new gedm is also useful in cal_f_delta, so it should be ld->gedm if (PARAM.inp.deepks_equiv) { - DeePKS_domain::cal_edelta_gedm_equiv(nat, - lmaxd, - nmaxd, - inlmax, - des_per_atom, - inl2l, - descriptor, - ld->gedm, - E_delta, - rank); + DeePKS_domain::cal_edelta_gedm_equiv(nat, deepks_param, descriptor, ld->gedm, E_delta, rank); } else { - DeePKS_domain::cal_edelta_gedm(nat, - inlmax, - des_per_atom, - inl2l, - descriptor, - pdm, - ld->model_deepks, - ld->gedm, - E_delta); + DeePKS_domain::cal_edelta_gedm(nat, deepks_param, descriptor, pdm, ld->model_deepks, ld->gedm, E_delta); } } } - // Used for deepks_bandgap == 1 and deepks_v_delta > 0 - std::vector>* h_delta = &ld->V_delta; - // calculating deepks correction and save the results if (PARAM.inp.deepks_out_labels) { // Used for deepks_scf == 1 or deepks_out_freq_elec!=0, for *precalc items, not for deepks_out_labels=2 std::vector gevdm; - if ((PARAM.inp.deepks_scf || PARAM.inp.deepks_out_freq_elec) && PARAM.inp.deepks_out_labels !=2 ) + if (output_precalc) { - DeePKS_domain::cal_gevdm(nat, inlmax, inl2l, pdm, gevdm); + DeePKS_domain::cal_gevdm(nat, deepks_param, pdm, gevdm); } - if ( not_first_step) + //================================================================================ + // 2. Energy + //================================================================================ + + // etot + const std::string file_etot = get_filename("etot", PARAM.inp.deepks_out_labels, iter); + LCAO_deepks_io::save_npy_e(etot, file_etot, rank); + + // ebase + if (output_base) { - // Energy Part - const std::string file_etot = get_filename("etot", PARAM.inp.deepks_out_labels, iter); - LCAO_deepks_io::save_npy_e(etot, file_etot, rank); + const std::string file_ebase = get_filename("ebase", PARAM.inp.deepks_out_labels, iter); + if (PARAM.inp.deepks_scf) + { + /// ebase :no deepks E_delta including + LCAO_deepks_io::save_npy_e(etot - E_delta, file_ebase, rank); + } + else // deepks_scf = 0; base calculation + { + /// no scf, e_tot=e_base + LCAO_deepks_io::save_npy_e(etot, file_ebase, rank); + } + } + + //================================================================================ + // 3. Force and Stress + //================================================================================ - if (PARAM.inp.deepks_out_labels == 1) + if (is_after_scf) + { + // Force Part + if (PARAM.inp.cal_force) { - const std::string file_ebase = get_filename("ebase", PARAM.inp.deepks_out_labels, iter); - if (PARAM.inp.deepks_scf) + // these items are not related to model, so can output without deepks_scf + if (output_precalc // don't need these when deepks_out_labels == 2 + && !PARAM.inp.deepks_equiv) // training with force label not supported by equivariant version now { - /// ebase :no deepks E_delta including - LCAO_deepks_io::save_npy_e(etot - E_delta, file_ebase, rank); + torch::Tensor gdmx; + DeePKS_domain::cal_gdmx< + TK>(nks, deepks_param, kvec_d, phialpha, dmr, ucell, orb, *ParaV, GridD, gdmx); + + torch::Tensor gvx; + DeePKS_domain::cal_gvx(ucell.nat, deepks_param, gevdm, gdmx, gvx, rank); + const std::string file_gradvx = get_filename("gradvx", PARAM.inp.deepks_out_labels, iter); + LCAO_deepks_io::save_tensor2npy(file_gradvx, gvx, rank); + + if (PARAM.inp.deepks_out_unittest) + { + DeePKS_domain::check_tensor(gdmx, "gdmx.dat", rank); + DeePKS_domain::check_tensor(gvx, "gvx.dat", rank); + } } - else // deepks_scf = 0; base calculation + } + + // Stress Part + if (PARAM.inp.cal_stress) + { + // these items are not related to model, so can output without deepks_scf + if (output_precalc // don't need these when deepks_out_labels == 2 + && !PARAM.inp.deepks_equiv) // training with stress label not supported by equivariant version now { - /// no scf, e_tot=e_base - LCAO_deepks_io::save_npy_e(etot, file_ebase, rank); + torch::Tensor gdmepsl; + DeePKS_domain::cal_gdmepsl< + TK>(nks, deepks_param, kvec_d, phialpha, dmr, ucell, orb, *ParaV, GridD, gdmepsl); + + torch::Tensor gvepsl; + DeePKS_domain::cal_gvepsl(ucell.nat, deepks_param, gevdm, gdmepsl, gvepsl, rank); + const std::string file_gvepsl = get_filename("gvepsl", PARAM.inp.deepks_out_labels, iter); + LCAO_deepks_io::save_tensor2npy(file_gvepsl, gvepsl, rank); + + if (PARAM.inp.deepks_out_unittest) + { + DeePKS_domain::check_tensor(gdmepsl, "gdmepsl.dat", rank); + DeePKS_domain::check_tensor(gvepsl, "gvepsl.dat", rank); + } } - } + } } - // Bandgap Part + //================================================================================ + // 4. Bandgap + //================================================================================ + if (PARAM.inp.deepks_bandgap > 0) { // Get the number of the occupied bands @@ -244,188 +270,132 @@ void LCAO_Deepks_Interface::out_deepks_labels(const double& etot, // Calculate the bandgap for each k point ModuleBase::matrix o_tot(nks, range); - if ( not_first_step) + if (nocc + PARAM.inp.deepks_band_range[0] < 0 || nocc + PARAM.inp.deepks_band_range[1] >= ekb.nc) { - for (int iks = 0; iks < nks; ++iks) + ModuleBase::WARNING_QUIT( + "out_deepks_labels", + "DeePKS band index out of range! Please check if `deepks_band_range` is reasonable!"); + } + for (int iks = 0; iks < nks; ++iks) + { + int ib = 0; + if (PARAM.inp.deepks_bandgap == 1 || PARAM.inp.deepks_bandgap == 3) { - int ib = 0; - if (PARAM.inp.deepks_bandgap == 1 || PARAM.inp.deepks_bandgap == 3) - { - o_tot(iks, ib) = ekb(iks, nocc + PARAM.inp.deepks_band_range[1]) - - ekb(iks, nocc + PARAM.inp.deepks_band_range[0]); - } - else if (PARAM.inp.deepks_bandgap == 2) + o_tot(iks, ib) = ekb(iks, nocc + PARAM.inp.deepks_band_range[1]) + - ekb(iks, nocc + PARAM.inp.deepks_band_range[0]); + } + else if (PARAM.inp.deepks_bandgap == 2) + { + for (int ir = PARAM.inp.deepks_band_range[0]; ir <= PARAM.inp.deepks_band_range[1]; ++ir) { - for (int ir = PARAM.inp.deepks_band_range[0]; ir <= PARAM.inp.deepks_band_range[1]; ++ir) + if (ir != -1) { - if (ir != -1) - { - o_tot(iks, ib) = ekb(iks, nocc + ir) - ekb(iks, nocc - 1); - ib++; - } + o_tot(iks, ib) = ekb(iks, nocc + ir) - ekb(iks, nocc - 1); + ib++; } - assert(ib == range); // ensure that we have filled all the bandgap values } + assert(ib == range); // ensure that we have filled all the bandgap values } - - const std::string file_otot = get_filename("otot", PARAM.inp.deepks_out_labels, iter); - LCAO_deepks_io::save_matrix2npy(file_otot, o_tot, rank); // Unit: Hartree } + const std::string file_otot = get_filename("otot", PARAM.inp.deepks_out_labels, iter); + LCAO_deepks_io::save_matrix2npy(file_otot, o_tot, rank); // Unit: Hartree - if (PARAM.inp.deepks_out_labels == 1) // don't need these when deepks_out_labels == 2 + // don't need these when deepks_out_labels == 2 + // not consider out_base now, because bandgap is not supported in deepks_out_freq_elec now + if (output_precalc) { - if (PARAM.inp.deepks_scf || PARAM.inp.deepks_out_freq_elec) + std::vector wg_hl_range(range); + for (int ir = 0; ir < range; ++ir) + { + wg_hl_range[ir].create(nks, PARAM.inp.nbands); + wg_hl_range[ir].zero_out(); + } + + // Calculate O_delta + for (int iks = 0; iks < nks; ++iks) { - std::vector wg_hl_range(range); - for (int ir = 0; ir < range; ++ir) + int ib = 0; + if (PARAM.inp.deepks_bandgap == 1 || PARAM.inp.deepks_bandgap == 3) { - wg_hl_range[ir].create(nks, PARAM.inp.nbands); - wg_hl_range[ir].zero_out(); + wg_hl_range[ib](iks, nocc + PARAM.inp.deepks_band_range[0]) = -1.0; + wg_hl_range[ib](iks, nocc + PARAM.inp.deepks_band_range[1]) = 1.0; } - - // Calculate O_delta - for (int iks = 0; iks < nks; ++iks) + else if (PARAM.inp.deepks_bandgap == 2) { - int ib = 0; - if (PARAM.inp.deepks_bandgap == 1 || PARAM.inp.deepks_bandgap == 3) - { - wg_hl_range[ib](iks, nocc + PARAM.inp.deepks_band_range[0]) = -1.0; - wg_hl_range[ib](iks, nocc + PARAM.inp.deepks_band_range[1]) = 1.0; - } - else if (PARAM.inp.deepks_bandgap == 2) + for (int ir = PARAM.inp.deepks_band_range[0]; ir <= PARAM.inp.deepks_band_range[1]; ++ir) { - for (int ir = PARAM.inp.deepks_band_range[0]; ir <= PARAM.inp.deepks_band_range[1]; ++ir) + if (ir != -1) { - if (ir != -1) - { - wg_hl_range[ib](iks, nocc - 1) = -1.0; - wg_hl_range[ib](iks, nocc + ir) = 1.0; - ib++; - } + wg_hl_range[ib](iks, nocc - 1) = -1.0; + wg_hl_range[ib](iks, nocc + ir) = 1.0; + ib++; } } } + } - ModuleBase::matrix o_delta(nks, range); - torch::Tensor orbital_precalc; - for (int ir = 0; ir < range; ++ir) + ModuleBase::matrix o_delta(nks, range); + torch::Tensor orbital_precalc; + for (int ir = 0; ir < range; ++ir) + { + std::vector dm_bandgap(nks); + elecstate::cal_dm(ParaV, wg_hl_range[ir], psi, dm_bandgap); + + torch::Tensor orbital_precalc_temp; + ModuleBase::matrix o_delta_temp(nks, 1); + DeePKS_domain::cal_orbital_precalc(dm_bandgap, + nat, + nks, + deepks_param, + kvec_d, + phialpha, + gevdm, + ucell, + orb, + *ParaV, + GridD, + orbital_precalc_temp); + if (ir == 0) { - std::vector dm_bandgap(nks); - elecstate::cal_dm(ParaV, wg_hl_range[ir], psi, dm_bandgap); - - torch::Tensor orbital_precalc_temp; - ModuleBase::matrix o_delta_temp(nks, 1); - DeePKS_domain::cal_orbital_precalc(dm_bandgap, - lmaxd, - inlmax, - nat, - nks, - inl2l, - kvec_d, - phialpha, - gevdm, - inl_index, - ucell, - orb, - *ParaV, - GridD, - orbital_precalc_temp); - if (ir == 0) - { - orbital_precalc = orbital_precalc_temp; - } - else - { - orbital_precalc = torch::cat({orbital_precalc, orbital_precalc_temp}, 0); - } - - if (PARAM.inp.deepks_scf) - { - DeePKS_domain::cal_o_delta(dm_bandgap, *h_delta, o_delta_temp, *ParaV, nks, nspin); - for (int iks = 0; iks < nks; ++iks) - { - o_delta(iks, ir) = o_delta_temp(iks, 0); - } - } + orbital_precalc = orbital_precalc_temp; } - // save obase and orbital_precalc - if ( not_last_step ) + else { - const int true_iter = (iter == -1) ? iter : iter + 1; - const std::string file_orbpre = get_filename("orbpre", PARAM.inp.deepks_out_labels, true_iter); - LCAO_deepks_io::save_tensor2npy(file_orbpre, orbital_precalc, rank); + orbital_precalc = torch::cat({orbital_precalc, orbital_precalc_temp}, 0); } - if ( not_first_step) + if (PARAM.inp.deepks_scf) { - if (PARAM.inp.deepks_scf) + DeePKS_domain::cal_o_delta(dm_bandgap, *h_delta, o_delta_temp, *ParaV, nks, nspin); + for (int iks = 0; iks < nks; ++iks) { - const std::string file_obase = get_filename("obase", PARAM.inp.deepks_out_labels, iter); - LCAO_deepks_io::save_matrix2npy(file_obase, o_tot - o_delta, rank); // Unit: Hartree + o_delta(iks, ir) = o_delta_temp(iks, 0); } - else - { - const std::string file_obase = get_filename("obase", PARAM.inp.deepks_out_labels, iter); - LCAO_deepks_io::save_matrix2npy(file_obase, o_tot, rank); // no scf, o_tot=o_base - } } } - } // end deepks_out_labels == 1 - } // end deepks_bandgap > 0 - - if ( is_after_scf ) - { - // Force Part - if (PARAM.inp.cal_force) - { - // these items are not related to model, so can output without deepks_scf - if (PARAM.inp.deepks_out_labels == 1 // don't need these when deepks_out_labels == 2 - && !PARAM.inp.deepks_equiv) // training with force label not supported by equivariant version now - { - torch::Tensor gdmx; - DeePKS_domain::cal_gdmx< - TK>(lmaxd, inlmax, nks, kvec_d, phialpha, inl_index, dmr, ucell, orb, *ParaV, GridD, gdmx); + // save obase and orbital_precalc + const std::string file_orbpre = get_filename("orbpre", PARAM.inp.deepks_out_labels, iter); + LCAO_deepks_io::save_tensor2npy(file_orbpre, orbital_precalc, rank); - torch::Tensor gvx; - DeePKS_domain::cal_gvx(ucell.nat, inlmax, des_per_atom, inl2l, gevdm, gdmx, gvx, rank); - const std::string file_gradvx = get_filename("gradvx", PARAM.inp.deepks_out_labels, iter); - LCAO_deepks_io::save_tensor2npy(file_gradvx, gvx, rank); - - if (PARAM.inp.deepks_out_unittest) - { - DeePKS_domain::check_tensor(gdmx, "gdmx.dat", rank); - DeePKS_domain::check_tensor(gvx, "gvx.dat", rank); - } + if (PARAM.inp.deepks_scf) + { + const std::string file_obase = get_filename("obase", PARAM.inp.deepks_out_labels, iter); + LCAO_deepks_io::save_matrix2npy(file_obase, o_tot - o_delta, rank); // Unit: Hartree } - } - - // Stress Part - if (PARAM.inp.cal_stress) - { - // these items are not related to model, so can output without deepks_scf - if (PARAM.inp.deepks_out_labels == 1 // don't need these when deepks_out_labels == 2 - && !PARAM.inp.deepks_equiv) // training with stress label not supported by equivariant version now + else { - torch::Tensor gdmepsl; - DeePKS_domain::cal_gdmepsl< - TK>(lmaxd, inlmax, nks, kvec_d, phialpha, inl_index, dmr, ucell, orb, *ParaV, GridD, gdmepsl); - - torch::Tensor gvepsl; - DeePKS_domain::cal_gvepsl(ucell.nat, inlmax, des_per_atom, inl2l, gevdm, gdmepsl, gvepsl, rank); - const std::string file_gvepsl = get_filename("gvepsl", PARAM.inp.deepks_out_labels, iter); - LCAO_deepks_io::save_tensor2npy(file_gvepsl, gvepsl, rank); - - if (PARAM.inp.deepks_out_unittest) - { - DeePKS_domain::check_tensor(gdmepsl, "gdmepsl.dat", rank); - DeePKS_domain::check_tensor(gvepsl, "gvepsl.dat", rank); - } + const std::string file_obase = get_filename("obase", PARAM.inp.deepks_out_labels, iter); + LCAO_deepks_io::save_matrix2npy(file_obase, o_tot, rank); // no scf, o_tot=o_base } - } - - + } // end out_precalc + } // end deepks_bandgap > 0 + //================================================================================ + // 5. HR + //================================================================================ + if (is_after_scf) + { // not add deepks_out_labels = 2 and deepks_out_freq_elec for HR yet // H(R) matrix part, for HR, base will not be calculated since they are HContainer objects if (PARAM.inp.deepks_v_delta < 0) @@ -435,15 +405,26 @@ void LCAO_Deepks_Interface::out_deepks_labels(const double& etot, const int precision = 8; const std::string file_hrtot = PARAM.globalv.global_out_dir - + (PARAM.inp.deepks_out_labels == 1 ? "deepks_hrtot.csr" : "deepks_hamiltonian_r.csr"); + + (PARAM.inp.deepks_out_labels == 1 ? "deepks_hrtot.csr" : "deepks_hamiltonian_r.csr"); hamilt::HContainer* hR_tot = (p_ham->getHR()); + const int nbasis = hR_tot->get_nbasis(); +#ifdef __MPI + Parallel_Orbitals serialV; + serialV.init(nbasis, nbasis, nbasis, ParaV->comm()); + serialV.set_serial(nbasis, nbasis); + serialV.set_atomic_trace(ucell.get_iat2iwt(), ucell.nat, nbasis); + hamilt::HContainer hR_serial(&serialV); + hamilt::gatherParallels(*hR_tot, &hR_serial, 0); +#else + hamilt::HContainer hR_serial(*hR_tot); +#endif if (rank == 0) { std::ofstream ofs_hr(file_hrtot, std::ios::out); - ofs_hr << "Matrix Dimension of H(R): " << hR_tot->get_nbasis() << std::endl; + ofs_hr << "Matrix Dimension of H(R): " << nbasis << std::endl; ofs_hr << "Matrix number of H(R): " << hR_tot->size_R_loop() << std::endl; - hamilt::Output_HContainer out_hr(hR_tot, ofs_hr, sparse_threshold, precision); + hamilt::Output_HContainer out_hr(&hR_serial, ofs_hr, sparse_threshold, precision); out_hr.write(true); // write all the matrices, including empty ones ofs_hr.close(); } @@ -455,12 +436,18 @@ void LCAO_Deepks_Interface::out_deepks_labels(const double& etot, const std::string file_vdeltar = PARAM.globalv.global_out_dir + "deepks_hrdelta.csr"; hamilt::HContainer* h_deltaR = p_ham->get_V_delta_R(); +#ifdef __MPI + hamilt::HContainer h_deltaR_serial(&serialV); + hamilt::gatherParallels(*h_deltaR, &h_deltaR_serial, 0); +#else + hamilt::HContainer h_deltaR_serial(*h_deltaR); +#endif if (rank == 0) { std::ofstream ofs_hr(file_vdeltar, std::ios::out); ofs_hr << "Matrix Dimension of H_delta(R): " << h_deltaR->get_nbasis() << std::endl; ofs_hr << "Matrix number of H_delta(R): " << h_deltaR->size_R_loop() << std::endl; - hamilt::Output_HContainer out_hr(h_deltaR, ofs_hr, sparse_threshold, precision); + hamilt::Output_HContainer out_hr(&h_deltaR_serial, ofs_hr, sparse_threshold, precision); out_hr.write(true); // write all the matrices, including empty ones ofs_hr.close(); } @@ -470,152 +457,149 @@ void LCAO_Deepks_Interface::out_deepks_labels(const double& etot, int R_size = DeePKS_domain::get_R_size(*h_deltaR); torch::Tensor vdr_precalc; DeePKS_domain::cal_vdr_precalc(nlocal, - lmaxd, - inlmax, - nat, - nks, - R_size, - inl2l, - kvec_d, - phialpha, - gevdm, - inl_index, - ucell, - orb, - *ParaV, - GridD, - vdr_precalc); + nat, + nks, + R_size, + deepks_param, + kvec_d, + phialpha, + gevdm, + ucell, + orb, + *ParaV, + GridD, + vdr_precalc); const std::string file_vdrpre = PARAM.globalv.global_out_dir + "deepks_vdrpre.npy"; LCAO_deepks_io::save_tensor2npy(file_vdrpre, vdr_precalc, rank); } else if (PARAM.inp.deepks_v_delta == -2) { - int R_size = DeePKS_domain::get_R_size(*h_deltaR); - torch::Tensor phialpha_r_out; - DeePKS_domain::prepare_phialpha_r(nlocal, - lmaxd, - inlmax, - nat, - R_size, - phialpha, - ucell, - orb, - *ParaV, - GridD, - phialpha_r_out); - const std::string file_phialpha_r = PARAM.globalv.global_out_dir + "deepks_phialpha_r.npy"; - LCAO_deepks_io::save_tensor2npy(file_phialpha_r, phialpha_r_out, rank); - torch::Tensor gevdm_out; - DeePKS_domain::prepare_gevdm(nat, lmaxd, inlmax, orb, gevdm, gevdm_out); + DeePKS_domain::prepare_gevdm(nat, deepks_param, orb, gevdm, gevdm_out); const std::string file_gevdm = PARAM.globalv.global_out_dir + "deepks_gevdm.npy"; LCAO_deepks_io::save_tensor2npy(file_gevdm, gevdm_out, rank); + + int R_size = DeePKS_domain::get_R_size(*h_deltaR); + torch::Tensor overlap_out; + torch::Tensor iRmat; + DeePKS_domain::prepare_phialpha_iRmat(nlocal, R_size, deepks_param, phialpha, ucell, orb, GridD, overlap_out, iRmat); + const std::string file_overlap = PARAM.globalv.global_out_dir + "deepks_phialpha_r.npy"; + LCAO_deepks_io::save_tensor2npy(file_overlap, overlap_out, rank); + const std::string file_iRmat = PARAM.globalv.global_out_dir + "deepks_iRmat.npy"; + LCAO_deepks_io::save_tensor2npy(file_iRmat, iRmat, rank); } } } - } + } } - if ( not_last_step ) + //================================================================================ + // 6. Hk + //================================================================================ + + if (PARAM.inp.deepks_v_delta > 0) { - const int true_iter = is_after_scf ? iter : iter + 1; - // H(k) matrix part - if (PARAM.inp.deepks_v_delta > 0) - { - std::vector h_tot(nks); - DeePKS_domain::get_h_tot(*ParaV, p_ham, h_tot, nlocal, nks, 'H'); + std::vector h_tot(nks); + DeePKS_domain::get_h_tot(*ParaV, p_ham, h_tot, nlocal, nks, 'H'); - const std::string file_htot = get_filename("htot", PARAM.inp.deepks_out_labels, true_iter); - LCAO_deepks_io::save_npy_h(h_tot, file_htot, nlocal, nks, rank); + const std::string file_htot = get_filename("htot", PARAM.inp.deepks_out_labels, iter); + LCAO_deepks_io::save_npy_h(h_tot, file_htot, nlocal, nks, rank); - if (PARAM.inp.deepks_out_labels == 1) // don't need these when deepks_out_labels == 2 + if (output_base) + { + if (PARAM.inp.deepks_scf) { - if (PARAM.inp.deepks_scf || PARAM.inp.deepks_out_freq_elec) + std::vector v_delta(nks); + std::vector h_base(nks); + for (int ik = 0; ik < nks; ik++) { - if (PARAM.inp.deepks_scf) - { - std::vector v_delta(nks); - std::vector h_base(nks); - for (int ik = 0; ik < nks; ik++) - { - v_delta[ik].create(nlocal, nlocal); - h_base[ik].create(nlocal, nlocal); - } - DeePKS_domain::collect_h_mat(*ParaV, *h_delta, v_delta, nlocal, nks); - - // save v_delta and h_base - const std::string file_hbase = get_filename("hbase", PARAM.inp.deepks_out_labels, true_iter); - for (int ik = 0; ik < nks; ik++) - { - h_base[ik] = h_tot[ik] - v_delta[ik]; - } - LCAO_deepks_io::save_npy_h(h_base, file_hbase, nlocal, nks, rank); + v_delta[ik].create(nlocal, nlocal); + h_base[ik].create(nlocal, nlocal); + } + DeePKS_domain::collect_h_mat(*ParaV, *h_delta, v_delta, nlocal, nks); - const std::string file_vdelta = get_filename("vdelta", PARAM.inp.deepks_out_labels, true_iter); - LCAO_deepks_io::save_npy_h(v_delta, file_vdelta, nlocal, nks, rank); - } - else // deepks_scf == 0 - { - const std::string file_hbase = get_filename("hbase", PARAM.inp.deepks_out_labels, true_iter); - LCAO_deepks_io::save_npy_h(h_tot, file_hbase, nlocal, nks, rank); - } + // save v_delta and h_base + const std::string file_hbase = get_filename("hbase", PARAM.inp.deepks_out_labels, iter); + for (int ik = 0; ik < nks; ik++) + { + h_base[ik] = h_tot[ik] - v_delta[ik]; + } + LCAO_deepks_io::save_npy_h(h_base, file_hbase, nlocal, nks, rank); - if (PARAM.inp.deepks_v_delta == 1) // v_delta_precalc storage method 1 - { - torch::Tensor v_delta_precalc; - DeePKS_domain::cal_v_delta_precalc(nlocal, - lmaxd, - inlmax, - nat, - nks, - inl2l, - kvec_d, - phialpha, - gevdm, - inl_index, - ucell, - orb, - *ParaV, - GridD, - v_delta_precalc); - - const std::string file_vdpre = get_filename("vdpre", PARAM.inp.deepks_out_labels, true_iter); - LCAO_deepks_io::save_tensor2npy(file_vdpre, v_delta_precalc, rank); - } - else if (PARAM.inp.deepks_v_delta == 2) // v_delta_precalc storage method 2 - { - torch::Tensor phialpha_out; - DeePKS_domain::prepare_phialpha(nlocal, - lmaxd, - inlmax, - nat, - nks, - kvec_d, - phialpha, - ucell, - orb, - *ParaV, - GridD, - phialpha_out); - const std::string file_phialpha = get_filename("phialpha", PARAM.inp.deepks_out_labels, true_iter); - LCAO_deepks_io::save_tensor2npy(file_phialpha, phialpha_out, rank); + const std::string file_vdelta = get_filename("vdelta", PARAM.inp.deepks_out_labels, iter); + LCAO_deepks_io::save_npy_h(v_delta, file_vdelta, nlocal, nks, rank); + } + else // deepks_scf == 0 + { + const std::string file_hbase = get_filename("hbase", PARAM.inp.deepks_out_labels, iter); + LCAO_deepks_io::save_npy_h(h_tot, file_hbase, nlocal, nks, rank); + } + } - torch::Tensor gevdm_out; - DeePKS_domain::prepare_gevdm(nat, lmaxd, inlmax, orb, gevdm, gevdm_out); - const std::string file_gevdm = get_filename("gevdm", PARAM.inp.deepks_out_labels, true_iter); - LCAO_deepks_io::save_tensor2npy(file_gevdm, gevdm_out, rank); - } - } - } // end deepks_out_labels == 1 - } // end v_delta label - } + if (output_precalc) + { + if (PARAM.inp.deepks_v_delta == 1) // v_delta_precalc storage method 1 + { + torch::Tensor v_delta_precalc; + DeePKS_domain::cal_v_delta_precalc(nlocal, + nat, + nks, + deepks_param, + kvec_d, + phialpha, + gevdm, + ucell, + orb, + *ParaV, + GridD, + v_delta_precalc); + + const std::string file_vdpre = get_filename("vdpre", PARAM.inp.deepks_out_labels, iter); + LCAO_deepks_io::save_tensor2npy(file_vdpre, v_delta_precalc, rank); + } + else if (PARAM.inp.deepks_v_delta == 2) // v_delta_precalc storage method 2 + { + torch::Tensor phialpha_out; + DeePKS_domain::prepare_phialpha< + TK>(nlocal, nat, nks, deepks_param, kvec_d, phialpha, ucell, orb, *ParaV, GridD, phialpha_out); + const std::string file_phialpha = get_filename("phialpha", PARAM.inp.deepks_out_labels, iter); + LCAO_deepks_io::save_tensor2npy(file_phialpha, phialpha_out, rank); + + torch::Tensor gevdm_out; + DeePKS_domain::prepare_gevdm(nat, deepks_param, orb, gevdm, gevdm_out); + const std::string file_gevdm = get_filename("gevdm", PARAM.inp.deepks_out_labels, iter); + LCAO_deepks_io::save_tensor2npy(file_gevdm, gevdm_out, rank); + } + } + } // end v_delta label } // end deepks_out_labels - if (iter < 0)// only output when called in after_scf + //================================================================================ + // 7. atom.npy, box.npy, overlap.npy + //================================================================================ + + if (((PARAM.inp.deepks_out_labels == 2) && is_after_scf) + || (PARAM.inp.deepks_out_freq_elec)) // need overlap when deepks_out_freq_elec + { + if (PARAM.inp.deepks_v_delta > 0) + { + // prepare for overlap.npy, very much like h_tot except for p_ham->getSk() + std::vector s_tot(nks); + DeePKS_domain::get_h_tot(*ParaV, p_ham, s_tot, nlocal, nks, 'S'); + const std::string file_stot = get_filename("overlap", PARAM.inp.deepks_out_labels, iter); + LCAO_deepks_io::save_npy_h(s_tot, + file_stot, + nlocal, + nks, + rank, + 1.0); // don't need unit_scale for overlap + } + } + + if (is_after_scf) // don't need to output in multiple electronic steps { - // don't need to output in multiple electronic steps if (PARAM.inp.deepks_out_labels == 2) { // output atom.npy and box.npy @@ -628,22 +612,11 @@ void LCAO_Deepks_Interface::out_deepks_labels(const double& etot, DeePKS_domain::prepare_box(ucell, box_out); const std::string file_box = PARAM.globalv.global_out_dir + "deepks_box.npy"; LCAO_deepks_io::save_tensor2npy(file_box, box_out, rank); - - if (PARAM.inp.deepks_v_delta > 0) - { - // prepare for overlap.npy, very much like h_tot except for p_ham->getSk() - std::vector s_tot(nks); - DeePKS_domain::get_h_tot(*ParaV, p_ham, s_tot, nlocal, nks, 'S'); - const std::string file_stot = PARAM.globalv.global_out_dir + "deepks_overlap.npy"; - LCAO_deepks_io::save_npy_h(s_tot, - file_stot, - nlocal, - nks, - rank, - 1.0); // don't need unit_scale for overlap - } } + //================================================================================ + // 8. print, unittest + //================================================================================ /// print out deepks information to the screen if (PARAM.inp.deepks_scf) { @@ -653,7 +626,8 @@ void LCAO_Deepks_Interface::out_deepks_labels(const double& etot, ofs_running << " DeePKS Energy Correction" << std::endl; ofs_running << " -----------------------------------------------" << std::endl; ofs_running << " E_delta_band = " << std::setprecision(8) << e_delta_band << " Ry" - << " = " << std::setprecision(8) << e_delta_band * ModuleBase::Ry_to_eV << " eV" << std::endl; + << " = " << std::setprecision(8) << e_delta_band * ModuleBase::Ry_to_eV << " eV" + << std::endl; ofs_running << " E_delta_NN = " << std::setprecision(8) << E_delta << " Ry" << " = " << std::setprecision(8) << E_delta * ModuleBase::Ry_to_eV << " eV" << std::endl; ofs_running << " -----------------------------------------------" << std::endl; @@ -662,7 +636,7 @@ void LCAO_Deepks_Interface::out_deepks_labels(const double& etot, { LCAO_deepks_io::print_dm(nks, PARAM.globalv.nlocal, ParaV->nrow, dm->get_DMK_vector()); - DeePKS_domain::check_gedm(inlmax, inl2l, ld->gedm); + DeePKS_domain::check_gedm(deepks_param, ld->gedm); std::ofstream ofs("E_delta_bands.dat"); ofs << std::setprecision(10) << e_delta_band; @@ -670,8 +644,8 @@ void LCAO_Deepks_Interface::out_deepks_labels(const double& etot, std::ofstream ofs1("E_delta.dat"); ofs1 << std::setprecision(10) << E_delta; } - } - } + } + } ModuleBase::timer::tick("LCAO_Deepks_Interface", "out_deepks_labels"); } diff --git a/source/source_lcao/module_deepks/LCAO_deepks_interface.h b/source/source_lcao/module_deepks/LCAO_deepks_interface.h index dab32855fb..bc60edab04 100644 --- a/source/source_lcao/module_deepks/LCAO_deepks_interface.h +++ b/source/source_lcao/module_deepks/LCAO_deepks_interface.h @@ -3,9 +3,9 @@ #ifdef __MLALGO #include "LCAO_deepks.h" -#include "source_lcao/hamilt_lcao.h" #include "source_base/complexmatrix.h" #include "source_base/matrix.h" +#include "source_lcao/hamilt_lcao.h" #include @@ -47,10 +47,17 @@ class LCAO_Deepks_Interface const elecstate::DensityMatrix* dm, hamilt::HamiltLCAO* p_ham, const int& iter, - const bool& conv_esolver, + const bool& conv_esolver, const int rank, std::ostream& ofs_running); + /// @brief Get the filename for deepks output files + /// @param file_type Type of the file (e.g., "etot", "ftot", etc.) + /// @param label_type Type of the label (from PARAM.inp.deepks_out_labels) + /// @param iter Iteration number (e.g., -1 for after_scf, or specific iteration number) + /// @return The full path to the output file + std::string get_filename(const std::string& file_type, const int& label_type, const int& iter); + private: std::shared_ptr> ld; }; diff --git a/source/source_lcao/module_deepks/LCAO_deepks_io.cpp b/source/source_lcao/module_deepks/LCAO_deepks_io.cpp index 9ade40e34a..12c38dfcf4 100644 --- a/source/source_lcao/module_deepks/LCAO_deepks_io.cpp +++ b/source/source_lcao/module_deepks/LCAO_deepks_io.cpp @@ -3,8 +3,8 @@ #ifdef __MLALGO #include "LCAO_deepks_io.h" -#include "source_base/tool_quit.h" #include "npy.hpp" +#include "source_base/tool_quit.h" #include @@ -75,10 +75,8 @@ void LCAO_deepks_io::load_npy_gedm(const int nat, // saves descriptor into dm_eig.npy void LCAO_deepks_io::save_npy_d(const int nat, - const int des_per_atom, - const int inlmax, - const std::vector& inl2l, const bool deepks_equiv, + const DeePKS_Param& deepks_param, const std::vector& descriptor, const std::string& dm_eig_file, const int rank) @@ -95,16 +93,17 @@ void LCAO_deepks_io::save_npy_d(const int nat, if (!deepks_equiv) { std::vector npy_des; - for (int inl = 0; inl < inlmax; ++inl) + for (int inl = 0; inl < deepks_param.inlmax; ++inl) { auto accessor = descriptor[inl].accessor(); - int nm = 2 * inl2l[inl] + 1; + int nm = 2 * deepks_param.inl2l[inl] + 1; for (int im = 0; im < nm; im++) { npy_des.push_back(accessor[im]); } } - const long unsigned dshape[] = {static_cast(nat), static_cast(des_per_atom)}; + const long unsigned dshape[] + = {static_cast(nat), static_cast(deepks_param.des_per_atom)}; if (rank == 0) { npy::SaveArrayAsNumpy(dm_eig_file, false, 2, dshape, npy_des); @@ -117,12 +116,13 @@ void LCAO_deepks_io::save_npy_d(const int nat, for (int iat = 0; iat < nat; iat++) { auto accessor = descriptor[iat].accessor(); - for (int i = 0; i < des_per_atom; i++) + for (int i = 0; i < deepks_param.des_per_atom; i++) { npy_des.push_back(accessor[i]); } } - const long unsigned dshape[] = {static_cast(nat), static_cast(des_per_atom)}; + const long unsigned dshape[] + = {static_cast(nat), static_cast(deepks_param.des_per_atom)}; if (rank == 0) { npy::SaveArrayAsNumpy(dm_eig_file, false, 2, dshape, npy_des); diff --git a/source/source_lcao/module_deepks/LCAO_deepks_io.h b/source/source_lcao/module_deepks/LCAO_deepks_io.h index ba53ce6388..46e9272508 100644 --- a/source/source_lcao/module_deepks/LCAO_deepks_io.h +++ b/source/source_lcao/module_deepks/LCAO_deepks_io.h @@ -3,6 +3,7 @@ #ifdef __MLALGO +#include "deepks_param.h" #include "source_base/complexmatrix.h" #include "source_base/matrix.h" #include "source_base/tool_title.h" @@ -44,10 +45,8 @@ void load_npy_gedm(const int nat, const int des_per_atom, double** gedm, double& /// save descriptor void save_npy_d(const int nat, - const int des_per_atom, - const int inlmax, - const std::vector& inl2l, const bool deepks_equiv, + const DeePKS_Param& deepks_param, const std::vector& descriptor, const std::string& dm_eig_file, const int rank); diff --git a/source/source_lcao/module_deepks/deepks_basic.cpp b/source/source_lcao/module_deepks/deepks_basic.cpp index fddd6c0bdd..aa1185a23b 100644 --- a/source/source_lcao/module_deepks/deepks_basic.cpp +++ b/source/source_lcao/module_deepks/deepks_basic.cpp @@ -9,29 +9,30 @@ #include "source_base/timer.h" #include "source_io/module_parameter/parameter.h" +#include // use system command + // d(Descriptor) / d(projected density matrix) // Dimension is different for each inl, so there's a vector of tensors void DeePKS_domain::cal_gevdm(const int nat, - const int inlmax, - const std::vector& inl2l, + const DeePKS_Param& deepks_param, const std::vector& pdm, std::vector& gevdm) { ModuleBase::TITLE("DeePKS_domain", "cal_gevdm"); ModuleBase::timer::tick("DeePKS_domain", "cal_gevdm"); // cal gevdm(d(EigenValue(D))/dD) - int nlmax = inlmax / nat; + int nlmax = deepks_param.inlmax / nat; for (int nl = 0; nl < nlmax; ++nl) { std::vector avmmv; for (int iat = 0; iat < nat; ++iat) { int inl = iat * nlmax + nl; - int nm = 2 * inl2l[inl] + 1; + int nm = 2 * deepks_param.inl2l[inl] + 1; // repeat each block for nm times in an additional dimension torch::Tensor tmp_x = pdm[inl].reshape({nm, nm}).unsqueeze(0).repeat({nm, 1, 1}); // torch::Tensor tmp_y = std::get<0>(torch::symeig(tmp_x, true)); - torch::Tensor tmp_y = std::get<0>(torch::linalg::eigh(tmp_x, "U")); + torch::Tensor tmp_y = std::get<0>(torch::linalg_eigh(tmp_x, "U")); torch::Tensor tmp_yshell = torch::eye(nm, torch::TensorOptions().dtype(torch::kFloat64)); std::vector tmp_rpt; // repeated-pdm-tensor (x) std::vector tmp_rdt; // repeated-d-tensor (y) @@ -61,6 +62,15 @@ void DeePKS_domain::load_model(const std::string& model_file, torch::jit::script ModuleBase::TITLE("DeePKS_domain", "load_model"); ModuleBase::timer::tick("DeePKS_domain", "load_model"); + // check whether file exists + std::ifstream ifs(model_file.c_str()); + if (!ifs) + { + ModuleBase::timer::tick("DeePKS_domain", "load_model"); + ModuleBase::WARNING_QUIT("DeePKS_domain::load_model", "No model file named " + model_file + ", please check!"); + return; + } + ifs.close(); try { model = torch::jit::load(model_file); @@ -75,7 +85,7 @@ void DeePKS_domain::load_model(const std::string& model_file, torch::jit::script return; } -inline void generate_py_files(const int lmaxd, const int nmaxd, const std::string& out_dir) +inline void generate_py_files(const DeePKS_Param& deepks_param, const std::string& out_dir) { std::ofstream ofs("cal_edelta_gedm.py"); ofs << "import torch" << std::endl; @@ -107,14 +117,14 @@ inline void generate_py_files(const int lmaxd, const int nmaxd, const std::strin ofs.open("basis.yaml"); ofs << "proj_basis:" << std::endl; - for (int l = 0; l < lmaxd + 1; l++) + for (int l = 0; l < deepks_param.lmaxd + 1; l++) { ofs << " - - " << l << std::endl; ofs << " - ["; - for (int i = 0; i < nmaxd + 1; i++) + for (int i = 0; i < deepks_param.nmaxd + 1; i++) { ofs << "0"; - if (i != nmaxd) + if (i != deepks_param.nmaxd) { ofs << ", "; } @@ -124,11 +134,7 @@ inline void generate_py_files(const int lmaxd, const int nmaxd, const std::strin } void DeePKS_domain::cal_edelta_gedm_equiv(const int nat, - const int lmaxd, - const int nmaxd, - const int inlmax, - const int des_per_atom, - const std::vector& inl2l, + const DeePKS_Param& deepks_param, const std::vector& descriptor, double** gedm, double& E_delta, @@ -137,19 +143,13 @@ void DeePKS_domain::cal_edelta_gedm_equiv(const int nat, ModuleBase::TITLE("DeePKS_domain", "cal_edelta_gedm_equiv"); ModuleBase::timer::tick("DeePKS_domain", "cal_edelta_gedm_equiv"); - const std::string file_d = PARAM.globalv.global_out_dir + "deepks_dm_eig.npy";; - LCAO_deepks_io::save_npy_d(nat, - des_per_atom, - inlmax, - inl2l, - PARAM.inp.deepks_equiv, - descriptor, - file_d, + const std::string file_d = PARAM.globalv.global_out_dir + "deepks_dm_eig.npy"; + LCAO_deepks_io::save_npy_d(nat, PARAM.inp.deepks_equiv, deepks_param, descriptor, file_d, rank); // libnpy needed if (rank == 0) { - generate_py_files(lmaxd, nmaxd, PARAM.globalv.global_out_dir); + generate_py_files(deepks_param, PARAM.globalv.global_out_dir); std::string cmd = "python cal_edelta_gedm.py " + PARAM.inp.deepks_model; int stat = std::system(cmd.c_str()); assert(stat == 0); @@ -157,7 +157,7 @@ void DeePKS_domain::cal_edelta_gedm_equiv(const int nat, MPI_Barrier(MPI_COMM_WORLD); - LCAO_deepks_io::load_npy_gedm(nat, des_per_atom, gedm, E_delta, rank); + LCAO_deepks_io::load_npy_gedm(nat, deepks_param.des_per_atom, gedm, E_delta, rank); std::string cmd = "rm -f cal_edelta_gedm.py basis.yaml ec.npy gedm.npy"; std::system(cmd.c_str()); @@ -169,9 +169,7 @@ void DeePKS_domain::cal_edelta_gedm_equiv(const int nat, // obtain from the machine learning model dE_delta/dDescriptor // E_delta is also calculated here void DeePKS_domain::cal_edelta_gedm(const int nat, - const int inlmax, - const int des_per_atom, - const std::vector& inl2l, + const DeePKS_Param& deepks_param, const std::vector& descriptor, const std::vector& pdm, torch::jit::script::Module& model_deepks, @@ -185,10 +183,30 @@ void DeePKS_domain::cal_edelta_gedm(const int nat, std::vector inputs; // input_dim:(natom, des_per_atom) - inputs.push_back(torch::cat(descriptor, 0).reshape({1, nat, des_per_atom})); + inputs.push_back(torch::cat(descriptor, 0).reshape({1, nat, deepks_param.des_per_atom})); std::vector ec; - ec.push_back(model_deepks.forward(inputs).toTensor()); // Hartree - E_delta = ec[0].item() * 2; // Ry; *2 is for Hartree to Ry + try + { + ec.push_back(model_deepks.forward(inputs).toTensor()); // Hartree + } + catch (const c10::Error& e) + { + ModuleBase::WARNING_QUIT("DeePKS_domain::cal_edelta_gedm", + "Please check whether the input shape required by model file matches the descriptor!"); + throw; + } + E_delta = ec[0].item() * 2; // Ry; *2 is for Hartree to Ry + + // get d ec[0]/d inputs + // inputs: [1, nat, des_per_atom] + // ec: [1, 1] + std::vector tensor_inputs; + tensor_inputs.push_back(inputs[0].toTensor()); + ec[0].reshape({1, 1}).requires_grad_(true); + torch::Tensor derivative = torch::autograd::grad(ec, tensor_inputs, {}, true)[0]; + LCAO_deepks_io::save_tensor2npy("gev.npy", + derivative.reshape({nat, deepks_param.des_per_atom}), + 0); // dm_eig.npy is the input for gedm // cal gedm std::vector gedm_shell; @@ -201,9 +219,9 @@ void DeePKS_domain::cal_edelta_gedm(const int nat, /*allow_unused=*/true); // gedm_tensor(Hartree) to gedm(Ry) - for (int inl = 0; inl < inlmax; ++inl) + for (int inl = 0; inl < deepks_param.inlmax; ++inl) { - int nm = 2 * inl2l[inl] + 1; + int nm = 2 * deepks_param.inl2l[inl] + 1; auto accessor = gedm_tensor[inl].accessor(); for (int m1 = 0; m1 < nm; ++m1) { @@ -218,13 +236,13 @@ void DeePKS_domain::cal_edelta_gedm(const int nat, return; } -void DeePKS_domain::check_gedm(const int inlmax, const std::vector& inl2l, double** gedm) +void DeePKS_domain::check_gedm(const DeePKS_Param& deepks_param, double** gedm) { std::ofstream ofs("gedm.dat"); - for (int inl = 0; inl < inlmax; inl++) + for (int inl = 0; inl < deepks_param.inlmax; inl++) { - int nm = 2 * inl2l[inl] + 1; + int nm = 2 * deepks_param.inl2l[inl] + 1; for (int m1 = 0; m1 < nm; ++m1) { for (int m2 = 0; m2 < nm; ++m2) diff --git a/source/source_lcao/module_deepks/deepks_basic.h b/source/source_lcao/module_deepks/deepks_basic.h index 25b4fdb7e9..768b0aab1f 100644 --- a/source/source_lcao/module_deepks/deepks_basic.h +++ b/source/source_lcao/module_deepks/deepks_basic.h @@ -3,6 +3,7 @@ #ifdef __MLALGO #include "LCAO_deepks_io.h" +#include "deepks_param.h" #include "source_base/parallel_reduce.h" #include "source_base/tool_title.h" #include "source_cell/unitcell.h" @@ -32,28 +33,21 @@ void load_model(const std::string& model_file, torch::jit::script::Module& model // calculate gevdm void cal_gevdm(const int nat, - const int inlmax, - const std::vector& inl2l, + const DeePKS_Param& deepks_param, const std::vector& pdm, std::vector& gevdm); /// calculate partial of energy correction to descriptors void cal_edelta_gedm(const int nat, - const int inlmax, - const int des_per_atom, - const std::vector& inl2l, + const DeePKS_Param& deepks_param, const std::vector& descriptor, const std::vector& pdm, torch::jit::script::Module& model_deepks, double** gedm, double& E_delta); -void check_gedm(const int inlmax, const std::vector& inl2l, double** gedm); +void check_gedm(const DeePKS_Param& deepks_param, double** gedm); void cal_edelta_gedm_equiv(const int nat, - const int lmaxd, - const int nmaxd, - const int inlmax, - const int des_per_atom, - const std::vector& inl2l, + const DeePKS_Param& deepks_param, const std::vector& descriptor, double** gedm, double& E_delta, diff --git a/source/source_lcao/module_deepks/deepks_check.cpp b/source/source_lcao/module_deepks/deepks_check.cpp index 16a07bcabb..1dfc6dbd20 100644 --- a/source/source_lcao/module_deepks/deepks_check.cpp +++ b/source/source_lcao/module_deepks/deepks_check.cpp @@ -56,10 +56,14 @@ void DeePKS_domain::check_tensor(const torch::Tensor& tensor, const std::string& ofs.close(); } - - -template void DeePKS_domain::check_tensor(const torch::Tensor& tensor, const std::string& filename, const int rank); -template void DeePKS_domain::check_tensor(const torch::Tensor& tensor, const std::string& filename, const int rank); -template void DeePKS_domain::check_tensor>(const torch::Tensor& tensor, const std::string& filename, const int rank); +template void DeePKS_domain::check_tensor(const torch::Tensor& tensor, + const std::string& filename, + const int rank); +template void DeePKS_domain::check_tensor(const torch::Tensor& tensor, + const std::string& filename, + const int rank); +template void DeePKS_domain::check_tensor>(const torch::Tensor& tensor, + const std::string& filename, + const int rank); #endif diff --git a/source/source_lcao/module_deepks/deepks_descriptor.cpp b/source/source_lcao/module_deepks/deepks_descriptor.cpp index f1a37452a3..ae8cff433e 100644 --- a/source/source_lcao/module_deepks/deepks_descriptor.cpp +++ b/source/source_lcao/module_deepks/deepks_descriptor.cpp @@ -8,25 +8,25 @@ #include "deepks_descriptor.h" #include "LCAO_deepks_io.h" // mohan add 2024-07-22 -#include "source_base/module_external/blas_connector.h" #include "source_base/constants.h" #include "source_base/libm/libm.h" +#include "source_base/module_external/blas_connector.h" #include "source_base/parallel_reduce.h" -#include "source_lcao/module_hcontainer/atom_pair.h" #include "source_io/module_parameter/parameter.h" +#include "source_lcao/module_hcontainer/atom_pair.h" void DeePKS_domain::cal_descriptor_equiv(const int nat, - const int des_per_atom, + const DeePKS_Param& deepks_param, const std::vector& pdm, std::vector& descriptor) { ModuleBase::TITLE("DeePKS_domain", "cal_descriptor_equiv"); ModuleBase::timer::tick("DeePKS_domain", "cal_descriptor_equiv"); - assert(des_per_atom > 0); + assert(deepks_param.des_per_atom > 0); for (int iat = 0; iat < nat; iat++) { - auto tmp = torch::zeros(des_per_atom, torch::kFloat64); + auto tmp = torch::zeros(deepks_param.des_per_atom, torch::kFloat64); std::memcpy(tmp.data_ptr(), pdm[iat].data_ptr(), sizeof(double) * tmp.numel()); descriptor.push_back(tmp); } @@ -36,45 +36,41 @@ void DeePKS_domain::cal_descriptor_equiv(const int nat, // calculates descriptors from projected density matrices void DeePKS_domain::cal_descriptor(const int nat, - const int inlmax, - const std::vector& inl2l, + const DeePKS_Param& deepks_param, const std::vector& pdm, - std::vector& descriptor, - const int des_per_atom = -1) + std::vector& descriptor) { ModuleBase::TITLE("DeePKS_domain", "cal_descriptor"); ModuleBase::timer::tick("DeePKS_domain", "cal_descriptor"); if (PARAM.inp.deepks_equiv) { - DeePKS_domain::cal_descriptor_equiv(nat, des_per_atom, pdm, descriptor); + DeePKS_domain::cal_descriptor_equiv(nat, deepks_param, pdm, descriptor); return; } - for (int inl = 0; inl < inlmax; ++inl) + for (int inl = 0; inl < deepks_param.inlmax; ++inl) { - const int nm = 2 * inl2l[inl] + 1; + const int nm = 2 * deepks_param.inl2l[inl] + 1; pdm[inl].requires_grad_(true); descriptor.push_back(torch::ones({nm}, torch::requires_grad(true))); } // cal descriptor - for (int inl = 0; inl < inlmax; ++inl) + for (int inl = 0; inl < deepks_param.inlmax; ++inl) { torch::Tensor vd; std::tuple d_v(descriptor[inl], vd); // d_v = torch::symeig(pdm[inl], /*eigenvalues=*/true, // /*upper=*/true); - d_v = torch::linalg::eigh(pdm[inl], /*uplo*/ "U"); + d_v = torch::linalg_eigh(pdm[inl], /*uplo*/ "U"); descriptor[inl] = std::get<0>(d_v); } ModuleBase::timer::tick("DeePKS_domain", "cal_descriptor"); return; } -void DeePKS_domain::check_descriptor(const int inlmax, - const int des_per_atom, - const std::vector& inl2l, +void DeePKS_domain::check_descriptor(const DeePKS_Param& deepks_param, const UnitCell& ucell, const std::string& out_dir, const std::vector& descriptor, @@ -99,13 +95,13 @@ void DeePKS_domain::check_descriptor(const int inlmax, for (int ia = 0; ia < ucell.atoms[it].na; ia++) { int iat = ucell.itia2iat(it, ia); - ofs << ucell.atoms[it].label << " atom_index " << ia + 1 << " n_descriptor " << des_per_atom - << std::endl; + ofs << ucell.atoms[it].label << " atom_index " << ia + 1 << " n_descriptor " + << deepks_param.des_per_atom << std::endl; int id = 0; - for (int inl = 0; inl < inlmax / ucell.nat; inl++) + for (int inl = 0; inl < deepks_param.inlmax / ucell.nat; inl++) { - int nm = 2 * inl2l[inl] + 1; - const int ind = iat * inlmax / ucell.nat + inl; + int nm = 2 * deepks_param.inl2l[inl] + 1; + const int ind = iat * deepks_param.inlmax / ucell.nat + inl; auto accessor = descriptor[ind].accessor(); for (int im = 0; im < nm; im++) { @@ -126,9 +122,10 @@ void DeePKS_domain::check_descriptor(const int inlmax, for (int iat = 0; iat < ucell.nat; iat++) { const int it = ucell.iat2it[iat]; - ofs << ucell.atoms[it].label << " atom_index " << iat + 1 << " n_descriptor " << des_per_atom << std::endl; + ofs << ucell.atoms[it].label << " atom_index " << iat + 1 << " n_descriptor " << deepks_param.des_per_atom + << std::endl; auto accessor = descriptor[iat].accessor(); - for (int i = 0; i < des_per_atom; i++) + for (int i = 0; i < deepks_param.des_per_atom; i++) { ofs << accessor[i] << " "; if (i % 8 == 7) diff --git a/source/source_lcao/module_deepks/deepks_descriptor.h b/source/source_lcao/module_deepks/deepks_descriptor.h index a91025503a..93e1e95559 100644 --- a/source/source_lcao/module_deepks/deepks_descriptor.h +++ b/source/source_lcao/module_deepks/deepks_descriptor.h @@ -3,6 +3,7 @@ #ifdef __MLALGO +#include "deepks_param.h" #include "source_base/intarray.h" #include "source_base/timer.h" #include "source_cell/unitcell.h" @@ -29,22 +30,18 @@ namespace DeePKS_domain /// Calculates descriptors /// which are eigenvalues of pdm in blocks of I_n_l void cal_descriptor(const int nat, - const int inlmax, - const std::vector& inl2l, + const DeePKS_Param& deepks_param, const std::vector& pdm, - std::vector& descriptor, - const int des_per_atom); + std::vector& descriptor); /// print descriptors based on LCAO basis -void check_descriptor(const int inlmax, - const int des_per_atom, - const std::vector& inl2l, +void check_descriptor(const DeePKS_Param& deepks_param, const UnitCell& ucell, const std::string& out_dir, const std::vector& descriptor, const int rank); void cal_descriptor_equiv(const int nat, - const int des_per_atom, + const DeePKS_Param& deepks_param, const std::vector& pdm, std::vector& descriptor); } // namespace DeePKS_domain diff --git a/source/source_lcao/module_deepks/deepks_force.cpp b/source/source_lcao/module_deepks/deepks_force.cpp index fecd13773a..293710f87e 100644 --- a/source/source_lcao/module_deepks/deepks_force.cpp +++ b/source/source_lcao/module_deepks/deepks_force.cpp @@ -17,10 +17,10 @@ void DeePKS_domain::cal_f_delta(const hamilt::HContainer* dmr, const Grid_Driver& GridD, const Parallel_Orbitals& pv, const int nks, + const DeePKS_Param& deepks_param, const std::vector>& kvec_d, std::vector*> phialpha, double** gedm, - ModuleBase::IntArray* inl_index, ModuleBase::matrix& f_delta, const bool isstress, ModuleBase::matrix& svnl_dalpha) @@ -139,7 +139,7 @@ void DeePKS_domain::cal_f_delta(const hamilt::HContainer* dmr, { for (int N0 = 0; N0 < orb.Alpha[0].getNchi(L0); ++N0) { - const int inl = inl_index[T0](I0, L0, N0); + const int inl = deepks_param.inl_index[T0](I0, L0, N0); const int nm = 2 * L0 + 1; for (int m1 = 0; m1 < nm; ++m1) { @@ -269,10 +269,10 @@ template void DeePKS_domain::cal_f_delta(const hamilt::HContainer>& kvec_d, std::vector*> phialpha, double** gedm, - ModuleBase::IntArray* inl_index, ModuleBase::matrix& f_delta, const bool isstress, ModuleBase::matrix& svnl_dalpha); @@ -283,10 +283,10 @@ template void DeePKS_domain::cal_f_delta>(const hamilt::HCo const Grid_Driver& GridD, const Parallel_Orbitals& pv, const int nks, + const DeePKS_Param& deepks_param, const std::vector>& kvec_d, std::vector*> phialpha, double** gedm, - ModuleBase::IntArray* inl_index, ModuleBase::matrix& f_delta, const bool isstress, ModuleBase::matrix& svnl_dalpha); diff --git a/source/source_lcao/module_deepks/deepks_force.h b/source/source_lcao/module_deepks/deepks_force.h index a76e88e699..3837d3a6d6 100644 --- a/source/source_lcao/module_deepks/deepks_force.h +++ b/source/source_lcao/module_deepks/deepks_force.h @@ -3,6 +3,7 @@ #ifdef __MLALGO +#include "deepks_param.h" #include "source_base/complexmatrix.h" #include "source_base/intarray.h" #include "source_base/matrix.h" @@ -31,10 +32,10 @@ void cal_f_delta(const hamilt::HContainer* dmr, const Grid_Driver& GridD, const Parallel_Orbitals& pv, const int nks, + const DeePKS_Param& deepks_param, const std::vector>& kvec_d, std::vector*> phialpha, double** gedm, - ModuleBase::IntArray* inl_index, ModuleBase::matrix& f_delta, const bool isstress, ModuleBase::matrix& svnl_dalpha); diff --git a/source/source_lcao/module_deepks/deepks_fpre.cpp b/source/source_lcao/module_deepks/deepks_fpre.cpp index 33a8c005be..461fbd7599 100644 --- a/source/source_lcao/module_deepks/deepks_fpre.cpp +++ b/source/source_lcao/module_deepks/deepks_fpre.cpp @@ -8,18 +8,16 @@ #include "source_base/parallel_reduce.h" #include "source_base/timer.h" #include "source_base/vector3.h" -#include "source_lcao/module_hcontainer/atom_pair.h" #include "source_io/module_parameter/parameter.h" +#include "source_lcao/module_hcontainer/atom_pair.h" /// this subroutine calculates the gradient of projected density matrices /// gdmx_m,m = d/dX sum_{mu,nu} rho_{mu,nu} template -void DeePKS_domain::cal_gdmx(const int lmaxd, - const int inlmax, - const int nks, +void DeePKS_domain::cal_gdmx(const int nks, + const DeePKS_Param& deepks_param, const std::vector>& kvec_d, std::vector*> phialpha, - const ModuleBase::IntArray* inl_index, const hamilt::HContainer* dmr, const UnitCell& ucell, const LCAO_Orbitals& orb, @@ -32,11 +30,11 @@ void DeePKS_domain::cal_gdmx(const int lmaxd, // get DS_alpha_mu and S_nu_beta int nrow = pv.nrow; - const int nm = 2 * lmaxd + 1; + const int nm = 2 * deepks_param.lmaxd + 1; // gdmx: dD/dX // \sum_{mu,nu} 2*c_mu*c_nu * // size: [3][natom][tot_Inl][2l+1][2l+1] - gdmx = torch::zeros({3, ucell.nat, inlmax, nm, nm}, torch::dtype(torch::kFloat64)); + gdmx = torch::zeros({3, ucell.nat, deepks_param.inlmax, nm, nm}, torch::dtype(torch::kFloat64)); auto accessor = gdmx.accessor(); DeePKS_domain::iterate_ad2( @@ -99,7 +97,7 @@ void DeePKS_domain::cal_gdmx(const int lmaxd, { for (int N0 = 0; N0 < orb.Alpha[0].getNchi(L0); ++N0) { - const int inl = inl_index[ucell.iat2it[iat]](ucell.iat2ia[iat], L0, N0); + const int inl = deepks_param.inl_index[ucell.iat2it[iat]](ucell.iat2ia[iat], L0, N0); const int nm = 2 * L0 + 1; for (int m1 = 0; m1 < nm; ++m1) { @@ -136,7 +134,7 @@ void DeePKS_domain::cal_gdmx(const int lmaxd, ); #ifdef __MPI - Parallel_Reduce::reduce_all(gdmx.data_ptr(), 3 * ucell.nat * inlmax * nm * nm); + Parallel_Reduce::reduce_all(gdmx.data_ptr(), 3 * ucell.nat * deepks_param.inlmax * nm * nm); #endif ModuleBase::timer::tick("DeePKS_domain", "cal_gdmx"); return; @@ -144,9 +142,7 @@ void DeePKS_domain::cal_gdmx(const int lmaxd, // calculates gradient of descriptors from gradient of projected density matrices void DeePKS_domain::cal_gvx(const int nat, - const int inlmax, - const int des_per_atom, - const std::vector& inl2l, + const DeePKS_Param& deepks_param, const std::vector& gevdm, const torch::Tensor& gdmx, torch::Tensor& gvx, @@ -161,12 +157,14 @@ void DeePKS_domain::cal_gvx(const int nat, if (rank == 0) { // make gdmx as tensor - int nlmax = inlmax / nat; + int nlmax = deepks_param.inlmax / nat; for (int nl = 0; nl < nlmax; ++nl) { - int nm = 2 * inl2l[nl] + 1; - torch::Tensor gdmx_sliced - = gdmx.slice(2, nl, inlmax, nlmax).slice(3, 0, nm, 1).slice(4, 0, nm, 1).permute({1, 0, 2, 3, 4}); + int nm = 2 * deepks_param.inl2l[nl] + 1; + torch::Tensor gdmx_sliced = gdmx.slice(2, nl, deepks_param.inlmax, nlmax) + .slice(3, 0, nm, 1) + .slice(4, 0, nm, 1) + .permute({1, 0, 2, 3, 4}); gdmr.push_back(gdmx_sliced); } @@ -190,18 +188,16 @@ void DeePKS_domain::cal_gvx(const int nat, assert(gvx.size(0) == nat); assert(gvx.size(1) == 3); assert(gvx.size(2) == nat); - assert(gvx.size(3) == des_per_atom); + assert(gvx.size(3) == deepks_param.des_per_atom); } ModuleBase::timer::tick("DeePKS_domain", "cal_gvx"); return; } -template void DeePKS_domain::cal_gdmx(const int lmaxd, - const int inlmax, - const int nks, +template void DeePKS_domain::cal_gdmx(const int nks, + const DeePKS_Param& deepks_param, const std::vector>& kvec_d, std::vector*> phialpha, - const ModuleBase::IntArray* inl_index, const hamilt::HContainer* dmr, const UnitCell& ucell, const LCAO_Orbitals& orb, @@ -209,12 +205,10 @@ template void DeePKS_domain::cal_gdmx(const int lmaxd, const Grid_Driver& GridD, torch::Tensor& gdmx); -template void DeePKS_domain::cal_gdmx>(const int lmaxd, - const int inlmax, - const int nks, +template void DeePKS_domain::cal_gdmx>(const int nks, + const DeePKS_Param& deepks_param, const std::vector>& kvec_d, std::vector*> phialpha, - const ModuleBase::IntArray* inl_index, const hamilt::HContainer* dmr, const UnitCell& ucell, const LCAO_Orbitals& orb, diff --git a/source/source_lcao/module_deepks/deepks_fpre.h b/source/source_lcao/module_deepks/deepks_fpre.h index 3ae94435b5..64c0531a2f 100644 --- a/source/source_lcao/module_deepks/deepks_fpre.h +++ b/source/source_lcao/module_deepks/deepks_fpre.h @@ -3,6 +3,7 @@ #ifdef __MLALGO +#include "deepks_param.h" #include "source_base/complexmatrix.h" #include "source_base/intarray.h" #include "source_base/matrix.h" @@ -30,12 +31,10 @@ namespace DeePKS_domain // calculate the gradient of pdm with regard to atomic positions // d/dX D_{Inl,mm'} template -void cal_gdmx(const int lmaxd, - const int inlmax, - const int nks, +void cal_gdmx(const int nks, + const DeePKS_Param& deepks_param, const std::vector>& kvec_d, std::vector*> phialpha, - const ModuleBase::IntArray* inl_index, const hamilt::HContainer* dmr, const UnitCell& ucell, const LCAO_Orbitals& orb, @@ -53,9 +52,7 @@ void cal_gdmx(const int lmaxd, /// gevdm*gdmx->gvx ///---------------------------------------------------- void cal_gvx(const int nat, - const int inlmax, - const int des_per_atom, - const std::vector& inl2l, + const DeePKS_Param& deepks_param, const std::vector& gevdm, const torch::Tensor& gdmx, torch::Tensor& gvx, diff --git a/source/source_lcao/module_deepks/deepks_orbital.cpp b/source/source_lcao/module_deepks/deepks_orbital.cpp index a43ff25ec3..7f16b6fec1 100644 --- a/source/source_lcao/module_deepks/deepks_orbital.cpp +++ b/source/source_lcao/module_deepks/deepks_orbital.cpp @@ -9,7 +9,6 @@ template void DeePKS_domain::cal_o_delta(const std::vector& dm_hl, const std::vector>& h_delta, - // std::vector& o_delta, ModuleBase::matrix& o_delta, const Parallel_Orbitals& pv, const int nks, @@ -30,7 +29,7 @@ void DeePKS_domain::cal_o_delta(const std::vector& dm_hl, if (mu >= 0 && nu >= 0) { - int iic; + int iic = 0; if (PARAM.inp.ks_solver == "genelpa" || PARAM.inp.ks_solver == "scalapack_gvx" || PARAM.inp.ks_solver == "pexsi") // save the matrix as column major format { @@ -48,7 +47,7 @@ void DeePKS_domain::cal_o_delta(const std::vector& dm_hl, } } Parallel_Reduce::reduce_all(o_delta_tmp); - + const double* o_delta_ptr = reinterpret_cast(&o_delta_tmp); o_delta(ik, 0) = o_delta_ptr[0]; // real part in complex case } @@ -58,7 +57,6 @@ void DeePKS_domain::cal_o_delta(const std::vector& dm_hl, template void DeePKS_domain::cal_o_delta(const std::vector& dm_hl, const std::vector>& h_delta, - // std::vector& o_delta, ModuleBase::matrix& o_delta, const Parallel_Orbitals& pv, const int nks, @@ -67,7 +65,6 @@ template void DeePKS_domain::cal_o_delta(const std:: template void DeePKS_domain::cal_o_delta, ModuleBase::ComplexMatrix>( const std::vector& dm_hl, const std::vector>>& h_delta, - // std::vector& o_delta, ModuleBase::matrix& o_delta, const Parallel_Orbitals& pv, const int nks, diff --git a/source/source_lcao/module_deepks/deepks_orbital.h b/source/source_lcao/module_deepks/deepks_orbital.h index 93bb3421f0..8f77e58fb1 100644 --- a/source/source_lcao/module_deepks/deepks_orbital.h +++ b/source/source_lcao/module_deepks/deepks_orbital.h @@ -26,7 +26,6 @@ namespace DeePKS_domain template void cal_o_delta(const std::vector& dm_hl, const std::vector>& h_delta, - // std::vector& o_delta, ModuleBase::matrix& o_delta, const Parallel_Orbitals& pv, const int nks, diff --git a/source/source_lcao/module_deepks/deepks_orbpre.cpp b/source/source_lcao/module_deepks/deepks_orbpre.cpp index 90cb40ea95..282ef92c64 100644 --- a/source/source_lcao/module_deepks/deepks_orbpre.cpp +++ b/source/source_lcao/module_deepks/deepks_orbpre.cpp @@ -7,26 +7,23 @@ #include "deepks_orbpre.h" #include "LCAO_deepks_io.h" // mohan add 2024-07-22 -#include "source_base/module_external/blas_connector.h" #include "source_base/constants.h" #include "source_base/libm/libm.h" +#include "source_base/module_external/blas_connector.h" #include "source_base/parallel_reduce.h" -#include "source_lcao/module_hcontainer/atom_pair.h" #include "source_io/module_parameter/parameter.h" +#include "source_lcao/module_hcontainer/atom_pair.h" // calculates orbital_precalc[nks,NAt,NDscrpt] = gevdm * orbital_pdm; // orbital_pdm[nks,Inl,nm,nm] = dm_hl * overlap * overlap; template void DeePKS_domain::cal_orbital_precalc(const std::vector& dm_hl, - const int lmaxd, - const int inlmax, const int nat, const int nks, - const std::vector& inl2l, + const DeePKS_Param& deepks_param, const std::vector>& kvec_d, const std::vector*> phialpha, const std::vector gevdm, - const ModuleBase::IntArray* inl_index, const UnitCell& ucell, const LCAO_Orbitals& orb, const Parallel_Orbitals& pv, @@ -39,7 +36,8 @@ void DeePKS_domain::cal_orbital_precalc(const std::vector& dm_hl, const double Rcut_Alpha = orb.Alpha[0].getRcut(); torch::Tensor orbital_pdm - = torch::zeros({nks, inlmax, (2 * lmaxd + 1), (2 * lmaxd + 1)}, torch::dtype(torch::kFloat64)); + = torch::zeros({nks, deepks_param.inlmax, (2 * deepks_param.lmaxd + 1), (2 * deepks_param.lmaxd + 1)}, + torch::dtype(torch::kFloat64)); auto accessor = orbital_pdm.accessor(); for (int T0 = 0; T0 < ucell.ntype; T0++) @@ -60,7 +58,7 @@ void DeePKS_domain::cal_orbital_precalc(const std::vector& dm_hl, { for (int N0 = 0; N0 < orb.Alpha[0].getNchi(L0); ++N0) { - const int inl = inl_index[T0](I0, L0, N0); + const int inl = deepks_param.inl_index[T0](I0, L0, N0); const int nm = 2 * L0 + 1; for (int m1 = 0; m1 < nm; ++m1) // m1 = 1 for s, 3 for p, 5 for d @@ -215,19 +213,19 @@ void DeePKS_domain::cal_orbital_precalc(const std::vector& dm_hl, gemm_alpha = 2.0; } - dgemm_(&transa, - &transb, - &row_size_nks, - &trace_alpha_size, - &col_size, - &gemm_alpha, - dm_array.data(), - &col_size, + BlasConnector::gemm(transb, + transa, + trace_alpha_size, + row_size_nks, + col_size, + gemm_alpha, s_2t.data(), - &col_size, - &gemm_beta, + col_size, + dm_array.data(), + col_size, + gemm_beta, g_1dmt.data(), - &row_size_nks); + row_size_nks); } // ad2 for (int ik = 0; ik < nks; ik++) @@ -242,18 +240,18 @@ void DeePKS_domain::cal_orbital_precalc(const std::vector& dm_hl, { for (int N0 = 0; N0 < orb.Alpha[0].getNchi(L0); ++N0) { - const int inl = inl_index[T0](I0, L0, N0); + const int inl = deepks_param.inl_index[T0](I0, L0, N0); const int nm = 2 * L0 + 1; for (int m1 = 0; m1 < nm; ++m1) // m1 = 1 for s, 3 for p, 5 for d { for (int m2 = 0; m2 < nm; ++m2) // m1 = 1 for s, 3 for p, 5 for d { - accessor[ik][inl][m1][m2] += ddot_(&row_size, + accessor[ik][inl][m1][m2] += BlasConnector::dot(row_size, p_g1dmt + index * row_size * nks, - &inc, + inc, s_1t.data() + index * row_size, - &inc); + inc); index++; } } @@ -265,19 +263,19 @@ void DeePKS_domain::cal_orbital_precalc(const std::vector& dm_hl, } } #ifdef __MPI - const int size = nks * inlmax * (2 * lmaxd + 1) * (2 * lmaxd + 1); + const int size = nks * deepks_param.inlmax * (2 * deepks_param.lmaxd + 1) * (2 * deepks_param.lmaxd + 1); Parallel_Reduce::reduce_all(orbital_pdm.data_ptr(), size); #endif // transfer orbital_pdm [nks,inl,nm,nm] to orbital_pdm_vector [nl,[nks,nat,nm,nm]] - int nlmax = inlmax / nat; + int nlmax = deepks_param.inlmax / nat; std::vector orbital_pdm_vector; for (int nl = 0; nl < nlmax; ++nl) { - int nm = 2 * inl2l[nl] + 1; + int nm = 2 * deepks_param.inl2l[nl] + 1; torch::Tensor orbital_pdm_sliced - = orbital_pdm.slice(1, nl, inlmax, nlmax).slice(2, 0, nm, 1).slice(3, 0, nm, 1); + = orbital_pdm.slice(1, nl, deepks_param.inlmax, nlmax).slice(2, 0, nm, 1).slice(3, 0, nm, 1); orbital_pdm_vector.push_back(orbital_pdm_sliced); } @@ -297,15 +295,12 @@ void DeePKS_domain::cal_orbital_precalc(const std::vector& dm_hl, template void DeePKS_domain::cal_orbital_precalc( const std::vector& dm_hl, - const int lmaxd, - const int inlmax, const int nat, const int nks, - const std::vector& inl2l, + const DeePKS_Param& deepks_param, const std::vector>& kvec_d, const std::vector*> phialpha, const std::vector gevdm, - const ModuleBase::IntArray* inl_index, const UnitCell& ucell, const LCAO_Orbitals& orb, const Parallel_Orbitals& pv, @@ -314,15 +309,12 @@ template void DeePKS_domain::cal_orbital_precalc( template void DeePKS_domain::cal_orbital_precalc, ModuleBase::ComplexMatrix>( const std::vector& dm_hl, - const int lmaxd, - const int inlmax, const int nat, const int nks, - const std::vector& inl2l, + const DeePKS_Param& deepks_param, const std::vector>& kvec_d, const std::vector*> phialpha, const std::vector gevdm, - const ModuleBase::IntArray* inl_index, const UnitCell& ucell, const LCAO_Orbitals& orb, const Parallel_Orbitals& pv, diff --git a/source/source_lcao/module_deepks/deepks_orbpre.h b/source/source_lcao/module_deepks/deepks_orbpre.h index e9ddfeb95d..ec9dc1a123 100644 --- a/source/source_lcao/module_deepks/deepks_orbpre.h +++ b/source/source_lcao/module_deepks/deepks_orbpre.h @@ -3,6 +3,7 @@ #ifdef __MLALGO +#include "deepks_param.h" #include "source_base/complexmatrix.h" #include "source_base/intarray.h" #include "source_base/matrix.h" @@ -27,15 +28,12 @@ namespace DeePKS_domain template void cal_orbital_precalc(const std::vector& dm_hl, - const int lmaxd, - const int inlmax, const int nat, const int nks, - const std::vector& inl2l, + const DeePKS_Param& deepks_param, const std::vector>& kvec_d, const std::vector*> phialpha, const std::vector gevdm, - const ModuleBase::IntArray* inl_index, const UnitCell& ucell, const LCAO_Orbitals& orb, const Parallel_Orbitals& pv, diff --git a/source/source_lcao/module_deepks/deepks_param.h b/source/source_lcao/module_deepks/deepks_param.h new file mode 100644 index 0000000000..75e161b9da --- /dev/null +++ b/source/source_lcao/module_deepks/deepks_param.h @@ -0,0 +1,21 @@ +#ifndef LCAO_DEEPKS_PARAM +#define LCAO_DEEPKS_PARAM + +#include +namespace ModuleBase +{ +struct IntArray; +} + +struct DeePKS_Param +{ + int lmaxd = 0; + int nmaxd = 0; + int inlmax = 0; + int n_descriptor = 0; + int des_per_atom = 0; + std::vector inl2l; + ModuleBase::IntArray* inl_index = nullptr; +}; + +#endif \ No newline at end of file diff --git a/source/source_lcao/module_deepks/deepks_pdm.cpp b/source/source_lcao/module_deepks/deepks_pdm.cpp index ffc0efc8fb..fdc838f45a 100644 --- a/source/source_lcao/module_deepks/deepks_pdm.cpp +++ b/source/source_lcao/module_deepks/deepks_pdm.cpp @@ -19,6 +19,7 @@ #include "deepks_pdm.h" #include "source_base/constants.h" #include "source_base/libm/libm.h" +#include "source_base/module_external/blas_connector.h" #include "source_base/timer.h" #include "source_lcao/module_hcontainer/atom_pair.h" #ifdef __MPI @@ -29,15 +30,13 @@ void DeePKS_domain::read_pdm(bool read_pdm_file, bool is_equiv, bool& init_pdm, const int nat, - const int inlmax, - const int lmaxd, - const std::vector& inl2l, + const DeePKS_Param& deepks_param, const Numerical_Orbital& alpha, std::vector& pdm) { if (read_pdm_file && !init_pdm) // for DeePKS NSCF calculation { - const std::string file_projdm = PARAM.globalv.global_out_dir + "deepks_projdm.dat"; + const std::string file_projdm = PARAM.globalv.global_readin_dir + "deepks_projdm.dat"; std::ifstream ifs(file_projdm.c_str()); if (!ifs) @@ -46,15 +45,15 @@ void DeePKS_domain::read_pdm(bool read_pdm_file, } if (!is_equiv) { - for (int inl = 0; inl < inlmax; inl++) + for (int inl = 0; inl < deepks_param.inlmax; inl++) { - int nm = 2 * inl2l[inl] + 1; + int nm = 2 * deepks_param.inl2l[inl] + 1; auto accessor = pdm[inl].accessor(); for (int m1 = 0; m1 < nm; m1++) { for (int m2 = 0; m2 < nm; m2++) { - double c; + double c = 0.0; ifs >> c; accessor[m1][m2] = c; } @@ -65,7 +64,7 @@ void DeePKS_domain::read_pdm(bool read_pdm_file, { int pdm_size = 0; int nproj = 0; - for (int il = 0; il < lmaxd + 1; il++) + for (int il = 0; il < deepks_param.lmaxd + 1; il++) { nproj += (2 * il + 1) * alpha.getNchi(il); } @@ -75,7 +74,7 @@ void DeePKS_domain::read_pdm(bool read_pdm_file, auto accessor = pdm[iat].accessor(); for (int ind = 0; ind < pdm_size; ind++) { - double c; + double c = 0.0; ifs >> c; accessor[ind] = c; } @@ -177,10 +176,7 @@ void DeePKS_domain::update_dmr(const std::vector>& k // pdm_m,m'=\sum_{mu,nu} rho_{mu,nu} template void DeePKS_domain::cal_pdm(bool& init_pdm, - const int inlmax, - const int lmaxd, - const std::vector& inl2l, - const ModuleBase::IntArray* inl_index, + const DeePKS_Param& deepks_param, const std::vector>& kvec_d, const hamilt::HContainer* dmr, const std::vector*> phialpha, @@ -203,9 +199,9 @@ void DeePKS_domain::cal_pdm(bool& init_pdm, if (!PARAM.inp.deepks_equiv) { - for (int inl = 0; inl < inlmax; inl++) + for (int inl = 0; inl < deepks_param.inlmax; inl++) { - int nm = 2 * inl2l[inl] + 1; + int nm = 2 * deepks_param.inl2l[inl] + 1; pdm[inl] = torch::zeros({nm, nm}, torch::kFloat64); } } @@ -213,7 +209,7 @@ void DeePKS_domain::cal_pdm(bool& init_pdm, { int pdm_size = 0; int nproj = 0; - for (int il = 0; il < lmaxd + 1; il++) + for (int il = 0; il < deepks_param.lmaxd + 1; il++) { nproj += (2 * il + 1) * orb.Alpha[0].getNchi(il); } @@ -246,7 +242,7 @@ void DeePKS_domain::cal_pdm(bool& init_pdm, { for (int N0 = 0; N0 < orb.Alpha[0].getNchi(L0); ++N0) { - const int inl = inl_index[T0](I0, L0, N0); + const int inl = deepks_param.inl_index[T0](I0, L0, N0); const int nm = 2 * L0 + 1; for (int m1 = 0; m1 < nm; ++m1) // m1 = 1 for s, 3 for p, 5 for d @@ -264,7 +260,7 @@ void DeePKS_domain::cal_pdm(bool& init_pdm, else { int nproj = 0; - for (int il = 0; il < lmaxd + 1; il++) + for (int il = 0; il < deepks_param.lmaxd + 1; il++) { nproj += (2 * il + 1) * orb.Alpha[0].getNchi(il); } @@ -378,19 +374,19 @@ void DeePKS_domain::cal_pdm(bool& init_pdm, // all the input should be data pointer constexpr char transa = 'T', transb = 'N'; const double gemm_alpha = 1.0, gemm_beta = 1.0; - dgemm_(&transa, - &transb, - &row_size, - &trace_alpha_size, - &col_size, - &gemm_alpha, - dm_current, - &col_size, + BlasConnector::gemm(transb, + transa, + trace_alpha_size, + row_size, + col_size, + gemm_alpha, s_2t.data(), - &col_size, - &gemm_beta, + col_size, + dm_current, + col_size, + gemm_beta, g_1dmt.data(), - &row_size); + row_size); } // ad2 if (!PARAM.inp.deepks_equiv) { @@ -399,7 +395,7 @@ void DeePKS_domain::cal_pdm(bool& init_pdm, { for (int N0 = 0; N0 < orb.Alpha[0].getNchi(L0); ++N0) { - const int inl = inl_index[T0](I0, L0, N0); + const int inl = deepks_param.inl_index[T0](I0, L0, N0); const int nm = 2 * L0 + 1; auto accessor = pdm[inl].accessor(); @@ -407,11 +403,11 @@ void DeePKS_domain::cal_pdm(bool& init_pdm, { for (int m2 = 0; m2 < nm; ++m2) // m1 = 1 for s, 3 for p, 5 for d { - accessor[m1][m2] += ddot_(&row_size, - g_1dmt.data() + index * row_size, - &inc, - s_1t.data() + index * row_size, - &inc); + accessor[m1][m2] += BlasConnector::dot(row_size, + g_1dmt.data() + index * row_size, + inc, + s_1t.data() + index * row_size, + inc); index++; } } @@ -423,7 +419,7 @@ void DeePKS_domain::cal_pdm(bool& init_pdm, auto accessor = pdm[iat].accessor(); int index = 0, inc = 1; int nproj = 0; - for (int il = 0; il < lmaxd + 1; il++) + for (int il = 0; il < deepks_param.lmaxd + 1; il++) { nproj += (2 * il + 1) * orb.Alpha[0].getNchi(il); } @@ -433,11 +429,11 @@ void DeePKS_domain::cal_pdm(bool& init_pdm, { // ddot_: dot product of two vectors // inc means the increment of the index - accessor[iproj * nproj + jproj] += ddot_(&row_size, - g_1dmt.data() + index * row_size, - &inc, - s_1t.data() + index * row_size, - &inc); + accessor[iproj * nproj + jproj] += BlasConnector::dot(row_size, + g_1dmt.data() + index * row_size, + inc, + s_1t.data() + index * row_size, + inc); index++; } } @@ -446,9 +442,9 @@ void DeePKS_domain::cal_pdm(bool& init_pdm, } // iat #ifdef __MPI - for (int inl = 0; inl < inlmax; inl++) + for (int inl = 0; inl < deepks_param.inlmax; inl++) { - int pdm_size = (2 * inl2l[inl] + 1) * (2 * inl2l[inl] + 1); + int pdm_size = (2 * deepks_param.inl2l[inl] + 1) * (2 * deepks_param.inl2l[inl] + 1); Parallel_Reduce::reduce_all(pdm[inl].data_ptr(), pdm_size); } #endif @@ -456,15 +452,15 @@ void DeePKS_domain::cal_pdm(bool& init_pdm, return; } -void DeePKS_domain::check_pdm(const int inlmax, const std::vector& inl2l, const std::vector& pdm) +void DeePKS_domain::check_pdm(const DeePKS_Param& deepks_param, const std::vector& pdm) { const std::string file_projdm = PARAM.globalv.global_out_dir + "deepks_projdm.dat"; std::ofstream ofs(file_projdm.c_str()); ofs << std::setprecision(10); - for (int inl = 0; inl < inlmax; inl++) + for (int inl = 0; inl < deepks_param.inlmax; inl++) { - const int nm = 2 * inl2l[inl] + 1; + const int nm = 2 * deepks_param.inl2l[inl] + 1; auto accessor = pdm[inl].accessor(); for (int m1 = 0; m1 < nm; m1++) { @@ -494,10 +490,7 @@ template void DeePKS_domain::update_dmr>(const std::vector< hamilt::HContainer* dmr_deepks); template void DeePKS_domain::cal_pdm(bool& init_pdm, - const int inlmax, - const int lmaxd, - const std::vector& inl2l, - const ModuleBase::IntArray* inl_index, + const DeePKS_Param& deepks_param, const std::vector>& kvec_d, const hamilt::HContainer* dmr, const std::vector*> phialpha, @@ -508,10 +501,7 @@ template void DeePKS_domain::cal_pdm(bool& init_pdm, std::vector& pdm); template void DeePKS_domain::cal_pdm>(bool& init_pdm, - const int inlmax, - const int lmaxd, - const std::vector& inl2l, - const ModuleBase::IntArray* inl_index, + const DeePKS_Param& deepks_param, const std::vector>& kvec_d, const hamilt::HContainer* dmr, const std::vector*> phialpha, diff --git a/source/source_lcao/module_deepks/deepks_pdm.h b/source/source_lcao/module_deepks/deepks_pdm.h index f7b90b50c1..4b39547576 100644 --- a/source/source_lcao/module_deepks/deepks_pdm.h +++ b/source/source_lcao/module_deepks/deepks_pdm.h @@ -3,6 +3,7 @@ #ifdef __MLALGO +#include "deepks_param.h" #include "source_base/complexmatrix.h" #include "source_base/matrix.h" #include "source_base/timer.h" @@ -33,9 +34,7 @@ void read_pdm(bool read_pdm_file, bool is_equiv, bool& init_pdm, const int nat, - const int inlmax, - const int lmaxd, - const std::vector& inl2l, + const DeePKS_Param& deepks_param, const Numerical_Orbital& alpha, std::vector& pdm); @@ -55,10 +54,7 @@ void update_dmr(const std::vector>& kvec_d, // - Relax/Cell-Relax/MD calculation, non-first step will use the convergence pdm from the last step as initial pdm template void cal_pdm(bool& init_pdm, - const int inlmax, - const int lmaxd, - const std::vector& inl2l, - const ModuleBase::IntArray* inl_index, + const DeePKS_Param& deepks_param, const std::vector>& kvec_d, const hamilt::HContainer* dmr, const std::vector*> phialpha, @@ -68,7 +64,7 @@ void cal_pdm(bool& init_pdm, const Parallel_Orbitals& pv, std::vector& pdm); -void check_pdm(const int inlmax, const std::vector& inl2l, const std::vector& pdm); +void check_pdm(const DeePKS_Param& deepks_param, const std::vector& pdm); } // namespace DeePKS_domain #endif diff --git a/source/source_lcao/module_deepks/deepks_spre.cpp b/source/source_lcao/module_deepks/deepks_spre.cpp index eb0281146c..82fd8a5303 100644 --- a/source/source_lcao/module_deepks/deepks_spre.cpp +++ b/source/source_lcao/module_deepks/deepks_spre.cpp @@ -8,19 +8,17 @@ #include "source_base/parallel_reduce.h" #include "source_base/timer.h" #include "source_base/vector3.h" -#include "source_lcao/module_hcontainer/atom_pair.h" #include "source_io/module_parameter/parameter.h" +#include "source_lcao/module_hcontainer/atom_pair.h" /// this subroutine calculates the gradient of PDM wrt strain tensor: /// gdmepsl = d/d\epsilon_{ab} * /// sum_{mu,nu} rho_{mu,nu} template -void DeePKS_domain::cal_gdmepsl(const int lmaxd, - const int inlmax, - const int nks, +void DeePKS_domain::cal_gdmepsl(const int nks, + const DeePKS_Param& deepks_param, const std::vector>& kvec_d, std::vector*> phialpha, - const ModuleBase::IntArray* inl_index, const hamilt::HContainer* dmr, const UnitCell& ucell, const LCAO_Orbitals& orb, @@ -33,10 +31,10 @@ void DeePKS_domain::cal_gdmepsl(const int lmaxd, // get DS_alpha_mu and S_nu_beta int nrow = pv.nrow; - const int nm = 2 * lmaxd + 1; + const int nm = 2 * deepks_param.lmaxd + 1; // gdmepsl: dD/d\epsilon_{\alpha\beta} // size: [6][tot_Inl][2l+1][2l+1] - gdmepsl = torch::zeros({6, inlmax, nm, nm}, torch::dtype(torch::kFloat64)); + gdmepsl = torch::zeros({6, deepks_param.inlmax, nm, nm}, torch::dtype(torch::kFloat64)); auto accessor = gdmepsl.accessor(); DeePKS_domain::iterate_ad2( @@ -111,7 +109,7 @@ void DeePKS_domain::cal_gdmepsl(const int lmaxd, { for (int N0 = 0; N0 < orb.Alpha[0].getNchi(L0); ++N0) { - const int inl = inl_index[ucell.iat2it[iat]](ucell.iat2ia[iat], L0, N0); + const int inl = deepks_param.inl_index[ucell.iat2it[iat]](ucell.iat2ia[iat], L0, N0); const int nm = 2 * L0 + 1; for (int m1 = 0; m1 < nm; ++m1) { @@ -147,7 +145,7 @@ void DeePKS_domain::cal_gdmepsl(const int lmaxd, ); #ifdef __MPI - Parallel_Reduce::reduce_all(gdmepsl.data_ptr(), 6 * inlmax * nm * nm); + Parallel_Reduce::reduce_all(gdmepsl.data_ptr(), 6 * deepks_param.inlmax * nm * nm); #endif ModuleBase::timer::tick("DeePKS_domain", "cal_gdmepsl"); return; @@ -156,9 +154,7 @@ void DeePKS_domain::cal_gdmepsl(const int lmaxd, // calculates stress of descriptors from gradient of projected density matrices // gv_epsl:d(d)/d\epsilon_{\alpha\beta}, [natom][6][des_per_atom] void DeePKS_domain::cal_gvepsl(const int nat, - const int inlmax, - const int des_per_atom, - const std::vector& inl2l, + const DeePKS_Param& deepks_param, const std::vector& gevdm, const torch::Tensor& gdmepsl, torch::Tensor& gvepsl, @@ -172,11 +168,12 @@ void DeePKS_domain::cal_gvepsl(const int nat, if (rank == 0) { // make gdmepsl as tensor - int nlmax = inlmax / nat; + int nlmax = deepks_param.inlmax / nat; for (int nl = 0; nl < nlmax; ++nl) { - int nm = 2 * inl2l[nl] + 1; - torch::Tensor gdmepsl_sliced = gdmepsl.slice(1, nl, inlmax, nlmax).slice(2, 0, nm, 1).slice(3, 0, nm, 1); + int nm = 2 * deepks_param.inl2l[nl] + 1; + torch::Tensor gdmepsl_sliced + = gdmepsl.slice(1, nl, deepks_param.inlmax, nlmax).slice(2, 0, nm, 1).slice(3, 0, nm, 1); gdmepsl_vector.push_back(gdmepsl_sliced); } assert(gdmepsl_vector.size() == nlmax); @@ -197,19 +194,17 @@ void DeePKS_domain::cal_gvepsl(const int nat, gvepsl = torch::cat(gvepsl_vector, -1); assert(gvepsl.size(0) == 6); assert(gvepsl.size(1) == nat); - assert(gvepsl.size(2) == des_per_atom); + assert(gvepsl.size(2) == deepks_param.des_per_atom); } ModuleBase::timer::tick("DeePKS_domain", "cal_gvepsl"); return; } -template void DeePKS_domain::cal_gdmepsl(const int lmaxd, - const int inlmax, - const int nks, +template void DeePKS_domain::cal_gdmepsl(const int nks, + const DeePKS_Param& deepks_param, const std::vector>& kvec_d, std::vector*> phialpha, - const ModuleBase::IntArray* inl_index, const hamilt::HContainer* dmr, const UnitCell& ucell, const LCAO_Orbitals& orb, @@ -217,12 +212,10 @@ template void DeePKS_domain::cal_gdmepsl(const int lmaxd, const Grid_Driver& GridD, torch::Tensor& gdmepsl); -template void DeePKS_domain::cal_gdmepsl>(const int lmaxd, - const int inlmax, - const int nks, +template void DeePKS_domain::cal_gdmepsl>(const int nks, + const DeePKS_Param& deepks_param, const std::vector>& kvec_d, std::vector*> phialpha, - const ModuleBase::IntArray* inl_index, const hamilt::HContainer* dmr, const UnitCell& ucell, const LCAO_Orbitals& orb, diff --git a/source/source_lcao/module_deepks/deepks_spre.h b/source/source_lcao/module_deepks/deepks_spre.h index 54d9f6b05e..759af70209 100644 --- a/source/source_lcao/module_deepks/deepks_spre.h +++ b/source/source_lcao/module_deepks/deepks_spre.h @@ -3,6 +3,7 @@ #ifdef __MLALGO +#include "deepks_param.h" #include "source_base/complexmatrix.h" #include "source_base/intarray.h" #include "source_base/matrix.h" @@ -31,24 +32,19 @@ namespace DeePKS_domain // calculate the gradient of pdm with regard to atomic virial stress tensor // d/d\epsilon D_{Inl,mm'} template -void cal_gdmepsl( // const ModuleBase::matrix& dm, - const int lmaxd, - const int inlmax, - const int nks, - const std::vector>& kvec_d, - std::vector*> phialpha, - const ModuleBase::IntArray* inl_index, - const hamilt::HContainer* dmr, - const UnitCell& ucell, - const LCAO_Orbitals& orb, - const Parallel_Orbitals& pv, - const Grid_Driver& GridD, - torch::Tensor& gdmepsl); +void cal_gdmepsl(const int nks, + const DeePKS_Param& deepks_param, + const std::vector>& kvec_d, + std::vector*> phialpha, + const hamilt::HContainer* dmr, + const UnitCell& ucell, + const LCAO_Orbitals& orb, + const Parallel_Orbitals& pv, + const Grid_Driver& GridD, + torch::Tensor& gdmepsl); void cal_gvepsl(const int nat, - const int inlmax, - const int des_per_atom, - const std::vector& inl2l, + const DeePKS_Param& deepks_param, const std::vector& gevdm, const torch::Tensor& gdmepsl, torch::Tensor& gvepsl, diff --git a/source/source_lcao/module_deepks/deepks_vdelta.cpp b/source/source_lcao/module_deepks/deepks_vdelta.cpp index ba9f35f9fc..ab0f94c3a4 100644 --- a/source/source_lcao/module_deepks/deepks_vdelta.cpp +++ b/source/source_lcao/module_deepks/deepks_vdelta.cpp @@ -38,7 +38,7 @@ void DeePKS_domain::cal_e_delta_band(const std::vector>& dm, if (mu >= 0 && nu >= 0) { - int iic; + int iic = 0; if (ModuleBase::GlobalFunc::IS_COLUMN_MAJOR_KS_SOLVER(PARAM.inp.ks_solver)) { iic = mu + nu * pv->nrow; diff --git a/source/source_lcao/module_deepks/deepks_vdpre.cpp b/source/source_lcao/module_deepks/deepks_vdpre.cpp index 0dad1c0bef..20ee69a499 100644 --- a/source/source_lcao/module_deepks/deepks_vdpre.cpp +++ b/source/source_lcao/module_deepks/deepks_vdpre.cpp @@ -10,27 +10,24 @@ #include "LCAO_deepks_io.h" // mohan add 2024-07-22 #include "deepks_iterate.h" -#include "source_base/module_external/blas_connector.h" #include "source_base/constants.h" #include "source_base/libm/libm.h" +#include "source_base/module_external/blas_connector.h" #include "source_base/parallel_reduce.h" -#include "source_lcao/module_hcontainer/atom_pair.h" #include "source_io/module_parameter/parameter.h" +#include "source_lcao/module_hcontainer/atom_pair.h" // calculates v_delta_precalc[nks,nlocal,nlocal,NAt,NDscrpt] = gevdm * v_delta_pdm; // v_delta_pdm[nks,nlocal,nlocal,Inl,nm,nm] = overlap * overlap; // for deepks_v_delta = 1 template void DeePKS_domain::cal_v_delta_precalc(const int nlocal, - const int lmaxd, - const int inlmax, const int nat, const int nks, - const std::vector& inl2l, + const DeePKS_Param& deepks_param, const std::vector>& kvec_d, const std::vector*> phialpha, const std::vector gevdm, - const ModuleBase::IntArray* inl_index, const UnitCell& ucell, const LCAO_Orbitals& orb, const Parallel_Orbitals& pv, @@ -46,8 +43,9 @@ void DeePKS_domain::cal_v_delta_precalc(const int nlocal, using TK_tensor = typename std::conditional>::value, c10::complex, TK>::type; - torch::Tensor v_delta_pdm - = torch::zeros({nks, nlocal, nlocal, inlmax, (2 * lmaxd + 1), (2 * lmaxd + 1)}, torch::dtype(dtype)); + torch::Tensor v_delta_pdm = torch::zeros( + {nks, nlocal, nlocal, deepks_param.inlmax, (2 * deepks_param.lmaxd + 1), (2 * deepks_param.lmaxd + 1)}, + torch::dtype(dtype)); auto accessor = v_delta_pdm.accessor(); DeePKS_domain::iterate_ad2( @@ -112,14 +110,14 @@ void DeePKS_domain::cal_v_delta_precalc(const int nlocal, { for (int N0 = 0; N0 < orb.Alpha[0].getNchi(L0); ++N0) { - const int inl = inl_index[T0](I0, L0, N0); + const int inl = deepks_param.inl_index[T0](I0, L0, N0); const int nm = 2 * L0 + 1; for (int m1 = 0; m1 < nm; ++m1) // nm = 1 for s, 3 for p, 5 for d { for (int m2 = 0; m2 < nm; ++m2) // nm = 1 for s, 3 for p, 5 for d { - TK tmp = overlap_1->get_value(iw1, ib + m1) - * overlap_2->get_value(iw2, ib + m2) * *kpase_ptr; + TK tmp = overlap_1->get_value(iw1, ib + m1) * overlap_2->get_value(iw2, ib + m2) + * *kpase_ptr; TK_tensor tmp_tensor = TK_tensor(tmp); accessor[ik][iw1_all][iw2_all][inl][m1][m2] += tmp_tensor; } @@ -133,20 +131,21 @@ void DeePKS_domain::cal_v_delta_precalc(const int nlocal, } ); #ifdef __MPI - const int size = nks * nlocal * nlocal * inlmax * (2 * lmaxd + 1) * (2 * lmaxd + 1); + const int size + = nks * nlocal * nlocal * deepks_param.inlmax * (2 * deepks_param.lmaxd + 1) * (2 * deepks_param.lmaxd + 1); TK_tensor* data_tensor_ptr = v_delta_pdm.data_ptr(); TK* data_ptr = reinterpret_cast(data_tensor_ptr); Parallel_Reduce::reduce_all(data_ptr, size); #endif // transfer v_delta_pdm to v_delta_pdm_vector - int nlmax = inlmax / nat; + int nlmax = deepks_param.inlmax / nat; std::vector v_delta_pdm_vector; for (int nl = 0; nl < nlmax; ++nl) { - int nm = 2 * inl2l[nl] + 1; + int nm = 2 * deepks_param.inl2l[nl] + 1; torch::Tensor v_delta_pdm_sliced - = v_delta_pdm.slice(3, nl, inlmax, nlmax).slice(4, 0, nm, 1).slice(5, 0, nm, 1); + = v_delta_pdm.slice(3, nl, deepks_param.inlmax, nlmax).slice(4, 0, nm, 1).slice(5, 0, nm, 1); v_delta_pdm_vector.push_back(v_delta_pdm_sliced); } @@ -173,10 +172,9 @@ void DeePKS_domain::cal_v_delta_precalc(const int nlocal, // prepare_phialpha and prepare_gevdm for deepks_v_delta = 2 template void DeePKS_domain::prepare_phialpha(const int nlocal, - const int lmaxd, - const int inlmax, const int nat, const int nks, + const DeePKS_Param& deepks_param, const std::vector>& kvec_d, const std::vector*> phialpha, const UnitCell& ucell, @@ -190,8 +188,8 @@ void DeePKS_domain::prepare_phialpha(const int nlocal, constexpr torch::Dtype dtype = std::is_same::value ? torch::kFloat64 : torch::kComplexDouble; using TK_tensor = typename std::conditional>::value, c10::complex, TK>::type; - int nlmax = inlmax / nat; - int mmax = 2 * lmaxd + 1; + int nlmax = deepks_param.inlmax / nat; + int mmax = 2 * deepks_param.lmaxd + 1; phialpha_out = torch::zeros({nat, nlmax, nks, nlocal, mmax}, dtype); auto accessor = phialpha_out.accessor(); @@ -268,16 +266,15 @@ void DeePKS_domain::prepare_phialpha(const int nlocal, } void DeePKS_domain::prepare_gevdm(const int nat, - const int lmaxd, - const int inlmax, + const DeePKS_Param& deepks_param, const LCAO_Orbitals& orb, const std::vector& gevdm_in, torch::Tensor& gevdm_out) { ModuleBase::TITLE("DeePKS_domain", "prepare_gevdm"); ModuleBase::timer::tick("DeePKS_domain", "prepare_gevdm"); - int nlmax = inlmax / nat; - int mmax = 2 * lmaxd + 1; + int nlmax = deepks_param.inlmax / nat; + int mmax = 2 * deepks_param.lmaxd + 1; gevdm_out = torch::zeros({nat, nlmax, mmax, mmax, mmax}, torch::TensorOptions().dtype(torch::kFloat64)); std::vector gevdm_out_vector; @@ -295,15 +292,12 @@ void DeePKS_domain::prepare_gevdm(const int nat, } template void DeePKS_domain::cal_v_delta_precalc(const int nlocal, - const int lmaxd, - const int inlmax, const int nat, const int nks, - const std::vector& inl2l, + const DeePKS_Param& deepks_param, const std::vector>& kvec_d, const std::vector*> phialpha, const std::vector gevdm, - const ModuleBase::IntArray* inl_index, const UnitCell& ucell, const LCAO_Orbitals& orb, const Parallel_Orbitals& pv, @@ -311,15 +305,12 @@ template void DeePKS_domain::cal_v_delta_precalc(const int nlocal, torch::Tensor& v_delta_precalc); template void DeePKS_domain::cal_v_delta_precalc>( const int nlocal, - const int lmaxd, - const int inlmax, const int nat, const int nks, - const std::vector& inl2l, + const DeePKS_Param& deepks_param, const std::vector>& kvec_d, const std::vector*> phialpha, const std::vector gevdm, - const ModuleBase::IntArray* inl_index, const UnitCell& ucell, const LCAO_Orbitals& orb, const Parallel_Orbitals& pv, @@ -327,10 +318,9 @@ template void DeePKS_domain::cal_v_delta_precalc>( torch::Tensor& v_delta_precalc); template void DeePKS_domain::prepare_phialpha(const int nlocal, - const int lmaxd, - const int inlmax, const int nat, const int nks, + const DeePKS_Param& deepks_param, const std::vector>& kvec_d, const std::vector*> phialpha, const UnitCell& ucell, @@ -341,10 +331,9 @@ template void DeePKS_domain::prepare_phialpha(const int nlocal, template void DeePKS_domain::prepare_phialpha>( const int nlocal, - const int lmaxd, - const int inlmax, const int nat, const int nks, + const DeePKS_Param& deepks_param, const std::vector>& kvec_d, const std::vector*> phialpha, const UnitCell& ucell, diff --git a/source/source_lcao/module_deepks/deepks_vdpre.h b/source/source_lcao/module_deepks/deepks_vdpre.h index 90d2e887f6..bf096a4267 100644 --- a/source/source_lcao/module_deepks/deepks_vdpre.h +++ b/source/source_lcao/module_deepks/deepks_vdpre.h @@ -3,6 +3,7 @@ #ifdef __MLALGO +#include "deepks_param.h" #include "source_base/complexmatrix.h" #include "source_base/intarray.h" #include "source_base/matrix.h" @@ -32,15 +33,12 @@ namespace DeePKS_domain // calculates v_delta_precalc template void cal_v_delta_precalc(const int nlocal, - const int lmaxd, - const int inlmax, const int nat, const int nks, - const std::vector& inl2l, + const DeePKS_Param& deepks_param, const std::vector>& kvec_d, const std::vector*> phialpha, const std::vector gevdm, - const ModuleBase::IntArray* inl_index, const UnitCell& ucell, const LCAO_Orbitals& orb, const Parallel_Orbitals& pv, @@ -51,10 +49,9 @@ void cal_v_delta_precalc(const int nlocal, // prepare phialpha for outputting npy file template void prepare_phialpha(const int nlocal, - const int lmaxd, - const int inlmax, const int nat, const int nks, + const DeePKS_Param& deepks_param, const std::vector>& kvec_d, const std::vector*> phialpha, const UnitCell& ucell, @@ -65,8 +62,7 @@ void prepare_phialpha(const int nlocal, // prepare gevdm for outputting npy file void prepare_gevdm(const int nat, - const int lmaxd, - const int inlmax, + const DeePKS_Param& deepks_param, const LCAO_Orbitals& orb, const std::vector& gevdm_in, torch::Tensor& gevdm_out); diff --git a/source/source_lcao/module_deepks/deepks_vdrpre.cpp b/source/source_lcao/module_deepks/deepks_vdrpre.cpp index 5223549c16..e58f10b2e2 100644 --- a/source/source_lcao/module_deepks/deepks_vdrpre.cpp +++ b/source/source_lcao/module_deepks/deepks_vdrpre.cpp @@ -1,4 +1,4 @@ -// prepare_phialpha_r : prepare phialpha_r for outputting npy file +// prepare_phialpha_iRmat : prepare phialpha_r and iR_mat for outputting npy file #ifdef __MLALGO @@ -6,34 +6,29 @@ #include "LCAO_deepks_io.h" // mohan add 2024-07-22 #include "deepks_iterate.h" -#include "source_base/module_external/blas_connector.h" #include "source_base/constants.h" #include "source_base/libm/libm.h" +#include "source_base/module_external/blas_connector.h" #include "source_base/parallel_reduce.h" -#include "source_lcao/module_hcontainer/atom_pair.h" #include "source_io/module_parameter/parameter.h" +#include "source_lcao/module_hcontainer/atom_pair.h" -void DeePKS_domain::prepare_phialpha_r(const int nlocal, - const int lmaxd, - const int inlmax, - const int nat, - const int R_size, - const std::vector*> phialpha, - const UnitCell& ucell, - const LCAO_Orbitals& orb, - const Parallel_Orbitals& pv, - const Grid_Driver& GridD, - torch::Tensor& phialpha_r_out) +void DeePKS_domain::prepare_phialpha_iRmat(const int nlocal, + const int R_size, + const DeePKS_Param& deepks_param, + const std::vector*> phialpha, + const UnitCell& ucell, + const LCAO_Orbitals& orb, + const Grid_Driver& GridD, + torch::Tensor& overlap, + torch::Tensor& iRmat) { - ModuleBase::TITLE("DeePKS_domain", "prepare_phialpha_r"); - ModuleBase::timer::tick("DeePKS_domain", "prepare_phialpha_r"); + ModuleBase::TITLE("DeePKS_domain", "prepare_phialpha_iRmat"); + ModuleBase::timer::tick("DeePKS_domain", "prepare_phialpha_iRmat"); constexpr torch::Dtype dtype = torch::kFloat64; - int nlmax = inlmax / nat; - int mmax = 2 * lmaxd + 1; - - phialpha_r_out = torch::zeros({R_size, R_size, R_size, nat, nlmax, nlocal, mmax}, dtype); - auto accessor = phialpha_r_out.accessor(); + // get the maximum nnmax + std::vector nnmax_vec(ucell.nat, 0); DeePKS_domain::iterate_ad1( ucell, GridD, @@ -42,7 +37,7 @@ void DeePKS_domain::prepare_phialpha_r(const int nlocal, [&](const int iat, const ModuleBase::Vector3& tau0, const int ibt, - const ModuleBase::Vector3& tau, + const ModuleBase::Vector3& tau1, const int start, const int nw_tot, ModuleBase::Vector3 dR) @@ -51,65 +46,62 @@ void DeePKS_domain::prepare_phialpha_r(const int nlocal, { return; // to next loop } + nnmax_vec[iat]++; + } + ); + + int nnmax = *std::max_element(nnmax_vec.begin(), nnmax_vec.end()); + overlap = torch::zeros({ucell.nat, nnmax, nlocal, deepks_param.des_per_atom}, dtype); + torch::Tensor dRmat_tmp = torch::zeros({ucell.nat, nnmax, 3}, torch::kInt32); + auto overlap_accessor = overlap.accessor(); + auto dRmat_accessor = dRmat_tmp.accessor(); - // middle loop : all atomic basis on the adjacent atom ad - for (int iw1 = 0; iw1 < nw_tot; ++iw1) + std::fill(nnmax_vec.begin(), nnmax_vec.end(), 0); + DeePKS_domain::iterate_ad1( + ucell, + GridD, + orb, + false, // no trace_alpha + [&](const int iat, + const ModuleBase::Vector3& tau0, + const int ibt, + const ModuleBase::Vector3& tau1, + const int start, + const int nw_tot, + ModuleBase::Vector3 dR) + { + hamilt::BaseMatrix* overlap_mat = phialpha[0]->find_matrix(iat, ibt, dR); + if (overlap_mat == nullptr) { - const int iw1_all = start + iw1; - const int iw1_local = pv.global2local_row(iw1_all); - const int iw2_local = pv.global2local_col(iw1_all); - if (iw1_local < 0 || iw2_local < 0) - { - continue; - } - hamilt::BaseMatrix* overlap = phialpha[0]->find_matrix(iat, ibt, dR); - const int iR = phialpha[0]->find_R(dR); + return; // to next loop + } + dRmat_accessor[iat][nnmax_vec[iat]][0] = dR.x; + dRmat_accessor[iat][nnmax_vec[iat]][1] = dR.y; + dRmat_accessor[iat][nnmax_vec[iat]][2] = dR.z; - int ib = 0; - int nl = 0; - for (int L0 = 0; L0 <= orb.Alpha[0].getLmax(); ++L0) + for (int ix = 0; ix < nw_tot; ix++) + { + for (int iy = 0; iy < deepks_param.des_per_atom; iy++) { - for (int N0 = 0; N0 < orb.Alpha[0].getNchi(L0); ++N0) - { - const int nm = 2 * L0 + 1; - for (int m1 = 0; m1 < nm; ++m1) // nm = 1 for s, 3 for p, 5 for d - { - int iRx = DeePKS_domain::mapping_R(dR.x); - int iRy = DeePKS_domain::mapping_R(dR.y); - int iRz = DeePKS_domain::mapping_R(dR.z); - accessor[iRx][iRy][iRz][iat][nl][iw1_all][m1] - += overlap->get_value(iw1, ib + m1); - } - ib += nm; - nl++; - } + overlap_accessor[iat][nnmax_vec[iat]][start + ix][iy] = overlap_mat->get_value(ix, iy); } - } // end iw + } + nnmax_vec[iat]++; } ); - -#ifdef __MPI - int size = R_size * R_size * R_size * nat * nlmax * nlocal * mmax; - double* data_ptr = phialpha_r_out.data_ptr(); - Parallel_Reduce::reduce_all(data_ptr, size); - -#endif - - ModuleBase::timer::tick("DeePKS_domain", "prepare_phialpha_r"); + iRmat = mapping_R(dRmat_tmp.unsqueeze(1) - dRmat_tmp.unsqueeze(2)); + ModuleBase::timer::tick("DeePKS_domain", "prepare_phialpha_iRmat"); return; } void DeePKS_domain::cal_vdr_precalc(const int nlocal, - const int lmaxd, - const int inlmax, const int nat, const int nks, const int R_size, - const std::vector& inl2l, + const DeePKS_Param& deepks_param, const std::vector>& kvec_d, const std::vector*> phialpha, const std::vector gevdm, - const ModuleBase::IntArray* inl_index, const UnitCell& ucell, const LCAO_Orbitals& orb, const Parallel_Orbitals& pv, @@ -119,101 +111,111 @@ void DeePKS_domain::cal_vdr_precalc(const int nlocal, ModuleBase::TITLE("DeePKS_domain", "calc_vdr_precalc"); ModuleBase::timer::tick("DeePKS_domain", "calc_vdr_precalc"); - torch::Tensor vdr_pdm - = torch::zeros({R_size, R_size, R_size, nlocal, nlocal, inlmax, (2 * lmaxd + 1), (2 * lmaxd + 1)}, - torch::TensorOptions().dtype(torch::kFloat64)); + torch::Tensor vdr_pdm = torch::zeros({R_size, + R_size, + R_size, + nlocal, + nlocal, + deepks_param.inlmax, + (2 * deepks_param.lmaxd + 1), + (2 * deepks_param.lmaxd + 1)}, + torch::TensorOptions().dtype(torch::kFloat64)); auto accessor = vdr_pdm.accessor(); - DeePKS_domain::iterate_ad2( - ucell, - GridD, - orb, - false, // no trace_alpha - [&](const int iat, - const ModuleBase::Vector3& tau0, - const int ibt1, - const ModuleBase::Vector3& tau1, - const int start1, - const int nw1_tot, - ModuleBase::Vector3 dR1, - const int ibt2, - const ModuleBase::Vector3& tau2, - const int start2, - const int nw2_tot, - ModuleBase::Vector3 dR2) - { - const int T0 = ucell.iat2it[iat]; - const int I0 = ucell.iat2ia[iat]; - if (phialpha[0]->find_matrix(iat, ibt1, dR1.x, dR1.y, dR1.z) == nullptr - || phialpha[0]->find_matrix(iat, ibt2, dR2.x, dR2.y, dR2.z) == nullptr) - { - return; // to next loop - } + DeePKS_domain::iterate_ad2(ucell, + GridD, + orb, + false, // no trace_alpha + [&](const int iat, + const ModuleBase::Vector3& tau0, + const int ibt1, + const ModuleBase::Vector3& tau1, + const int start1, + const int nw1_tot, + ModuleBase::Vector3 dR1, + const int ibt2, + const ModuleBase::Vector3& tau2, + const int start2, + const int nw2_tot, + ModuleBase::Vector3 dR2) { + const int T0 = ucell.iat2it[iat]; + const int I0 = ucell.iat2ia[iat]; + if (phialpha[0]->find_matrix(iat, ibt1, dR1.x, dR1.y, dR1.z) == nullptr + || phialpha[0]->find_matrix(iat, ibt2, dR2.x, dR2.y, dR2.z) == nullptr) + { + return; // to next loop + } - hamilt::BaseMatrix* overlap_1 = phialpha[0]->find_matrix(iat, ibt1, dR1); - hamilt::BaseMatrix* overlap_2 = phialpha[0]->find_matrix(iat, ibt2, dR2); - assert(overlap_1->get_col_size() == overlap_2->get_col_size()); - ModuleBase::Vector3 dR = dR1 - dR2; - int iRx = DeePKS_domain::mapping_R(dR.x); - int iRy = DeePKS_domain::mapping_R(dR.y); - int iRz = DeePKS_domain::mapping_R(dR.z); + hamilt::BaseMatrix* overlap_1 = phialpha[0]->find_matrix(iat, ibt1, dR1); + hamilt::BaseMatrix* overlap_2 = phialpha[0]->find_matrix(iat, ibt2, dR2); + assert(overlap_1->get_col_size() == overlap_2->get_col_size()); + ModuleBase::Vector3 dR = dR2 - dR1; + int iRx = DeePKS_domain::mapping_R(dR.x); + int iRy = DeePKS_domain::mapping_R(dR.y); + int iRz = DeePKS_domain::mapping_R(dR.z); + // Make sure the index is in range we need to save + if (iRx >= R_size || iRy >= R_size || iRz >= R_size) + { + return; // to next loop + } - for (int iw1 = 0; iw1 < nw1_tot; ++iw1) - { - const int iw1_all = start1 + iw1; // this is \mu - const int iw1_local = pv.global2local_row(iw1_all); - if (iw1_local < 0) - { - continue; - } - for (int iw2 = 0; iw2 < nw2_tot; ++iw2) - { - const int iw2_all = start2 + iw2; // this is \nu - const int iw2_local = pv.global2local_col(iw2_all); - if (iw2_local < 0) - { - continue; - } + for (int iw1 = 0; iw1 < nw1_tot; ++iw1) + { + const int iw1_all = start1 + iw1; // this is \mu + const int iw1_local = pv.global2local_row(iw1_all); + if (iw1_local < 0) + { + continue; + } + for (int iw2 = 0; iw2 < nw2_tot; ++iw2) + { + const int iw2_all = start2 + iw2; // this is \nu + const int iw2_local = pv.global2local_col(iw2_all); + if (iw2_local < 0) + { + continue; + } - int ib = 0; - for (int L0 = 0; L0 <= orb.Alpha[0].getLmax(); ++L0) - { - for (int N0 = 0; N0 < orb.Alpha[0].getNchi(L0); ++N0) - { - const int inl = inl_index[T0](I0, L0, N0); - const int nm = 2 * L0 + 1; + int ib = 0; + for (int L0 = 0; L0 <= orb.Alpha[0].getLmax(); ++L0) + { + for (int N0 = 0; N0 < orb.Alpha[0].getNchi(L0); ++N0) + { + const int inl = deepks_param.inl_index[T0](I0, L0, N0); + const int nm = 2 * L0 + 1; - for (int m1 = 0; m1 < nm; ++m1) // nm = 1 for s, 3 for p, 5 for d - { - for (int m2 = 0; m2 < nm; ++m2) // nm = 1 for s, 3 for p, 5 for d - { - double tmp = overlap_1->get_value(iw1, ib + m1) - * overlap_2->get_value(iw2, ib + m2); - accessor[iRx][iRy][iRz][iw1_all][iw2_all][inl][m1][m2] - += tmp; - } - } - ib += nm; - } - } - } // iw2 - } // iw1 - } - ); + for (int m1 = 0; m1 < nm; ++m1) // nm = 1 for s, 3 for p, 5 for d + { + for (int m2 = 0; m2 < nm; ++m2) // nm = 1 for s, 3 for p, 5 for d + { + double tmp = overlap_1->get_value(iw1, ib + m1) + * overlap_2->get_value(iw2, ib + m2); + accessor[iRx][iRy][iRz][iw1_all][iw2_all][inl][m1][m2] + += tmp; + } + } + ib += nm; + } + } + } // iw2 + } // iw1 + }); #ifdef __MPI - const int size = R_size * R_size * R_size * nlocal * nlocal * inlmax * (2 * lmaxd + 1) * (2 * lmaxd + 1); + const int size = R_size * R_size * R_size * nlocal * nlocal * deepks_param.inlmax * (2 * deepks_param.lmaxd + 1) + * (2 * deepks_param.lmaxd + 1); double* data_ptr = vdr_pdm.data_ptr(); Parallel_Reduce::reduce_all(data_ptr, size); #endif // transfer v_delta_pdm to v_delta_pdm_vector - int nlmax = inlmax / nat; + int nlmax = deepks_param.inlmax / nat; std::vector vdr_pdm_vector; for (int nl = 0; nl < nlmax; ++nl) { - int nm = 2 * inl2l[nl] + 1; - torch::Tensor vdr_pdm_sliced = vdr_pdm.slice(5, nl, inlmax, nlmax).slice(6, 0, nm, 1).slice(7, 0, nm, 1); + int nm = 2 * deepks_param.inl2l[nl] + 1; + torch::Tensor vdr_pdm_sliced + = vdr_pdm.slice(5, nl, deepks_param.inlmax, nlmax).slice(6, 0, nm, 1).slice(7, 0, nm, 1); vdr_pdm_vector.push_back(vdr_pdm_sliced); } @@ -250,6 +252,15 @@ int DeePKS_domain::mapping_R(int R) return R_index; } +torch::Tensor DeePKS_domain::mapping_R(const torch::Tensor& R_tensor) +{ + auto R = R_tensor.to(torch::kInt32); + auto pos = R > 0; + auto twoR_minus1 = R * 2 - 1; + auto neg_minus2R = -2 * R; + return at::where(pos, twoR_minus1, neg_minus2R); +} + template int DeePKS_domain::get_R_size(const hamilt::HContainer& hcontainer) { diff --git a/source/source_lcao/module_deepks/deepks_vdrpre.h b/source/source_lcao/module_deepks/deepks_vdrpre.h index cf1a4a1b61..fc7975ce49 100644 --- a/source/source_lcao/module_deepks/deepks_vdrpre.h +++ b/source/source_lcao/module_deepks/deepks_vdrpre.h @@ -3,6 +3,7 @@ #ifdef __MLALGO +#include "deepks_param.h" #include "source_base/complexmatrix.h" #include "source_base/intarray.h" #include "source_base/matrix.h" @@ -28,29 +29,25 @@ namespace DeePKS_domain // for deepks_v_delta = -1 // calculates v_delta_r_precalc -void prepare_phialpha_r(const int nlocal, - const int lmaxd, - const int inlmax, - const int nat, - const int R_size, - const std::vector*> phialpha, - const UnitCell& ucell, - const LCAO_Orbitals& orb, - const Parallel_Orbitals& pv, - const Grid_Driver& GridD, - torch::Tensor& phialpha_r_out); + +void prepare_phialpha_iRmat(const int nlocal, + const int R_size, + const DeePKS_Param& deepks_param, + const std::vector*> phialpha, + const UnitCell& ucell, + const LCAO_Orbitals& orb, + const Grid_Driver& GridD, + torch::Tensor& overlap, + torch::Tensor& iRmat); void cal_vdr_precalc(const int nlocal, - const int lmaxd, - const int inlmax, const int nat, const int nks, const int R_size, - const std::vector& inl2l, + const DeePKS_Param& deepks_param, const std::vector>& kvec_d, const std::vector*> phialpha, const std::vector gevdm, - const ModuleBase::IntArray* inl_index, const UnitCell& ucell, const LCAO_Orbitals& orb, const Parallel_Orbitals& pv, @@ -58,6 +55,7 @@ void cal_vdr_precalc(const int nlocal, torch::Tensor& vdr_precalc); int mapping_R(int R); +torch::Tensor mapping_R(const torch::Tensor& R_tensor); template int get_R_size(const hamilt::HContainer& hcontainer); diff --git a/source/source_lcao/module_deepks/test/CMakeLists.txt b/source/source_lcao/module_deepks/test/CMakeLists.txt index 4ea1cd1625..2a1dae6e6d 100644 --- a/source/source_lcao/module_deepks/test/CMakeLists.txt +++ b/source/source_lcao/module_deepks/test/CMakeLists.txt @@ -7,6 +7,7 @@ add_executable( ../../../source_cell/atom_spec.cpp ../../../source_cell/atom_pseudo.cpp ../../../source_cell/read_atoms.cpp + ../../../source_cell/read_atoms_helper.cpp ../../../source_cell/read_stru.cpp ../../../source_cell/print_cell.cpp ../../../source_cell/read_atom_species.cpp @@ -18,28 +19,29 @@ add_executable( ../../../source_cell/read_pp_upf201.cpp ../../../source_cell/read_pp_vwr.cpp ../../../source_cell/read_pp_blps.cpp + ../../../source_cell/sep.cpp + ../../../source_cell/sep_cell.cpp ../../../source_pw/module_pwdft/soc.cpp - ../../../source_io/output.cpp - ../../../source_io/sparse_matrix.cpp + ../../../source_io/module_output/output.cpp + ../../../source_io/module_output/sparse_matrix.cpp ../../../source_estate/read_pseudo.cpp ../../../source_estate/cal_wfc.cpp ../../../source_estate/read_orb.cpp ../../../source_estate/cal_nelec_nband.cpp ../../../source_estate/module_dm/density_matrix.cpp ../../../source_estate/module_dm/density_matrix_io.cpp - ../../../source_lcao/module_hcontainer/base_matrix.cpp - ../../../source_lcao/module_hcontainer/hcontainer.cpp - ../../../source_lcao/module_hcontainer/atom_pair.cpp - ../../../source_lcao/module_hcontainer/func_transfer.cpp - ../../../source_lcao/module_hcontainer/func_folding.cpp - ../../../source_lcao/module_hcontainer/transfer.cpp - ../../../source_lcao/module_hcontainer/output_hcontainer.cpp - ../../../source_lcao/module_operator_lcao/deepks_lcao.cpp - ../../../source_lcao/module_operator_lcao/operator_lcao.cpp + ../../module_hcontainer/base_matrix.cpp + ../../module_hcontainer/hcontainer.cpp + ../../module_hcontainer/atom_pair.cpp + ../../module_hcontainer/func_transfer.cpp + ../../module_hcontainer/func_folding.cpp + ../../module_hcontainer/transfer.cpp + ../../module_hcontainer/output_hcontainer.cpp + ../../module_operator_lcao/deepks_lcao.cpp + ../../module_operator_lcao/operator_lcao.cpp ../../../source_hamilt/operator.cpp - ../../../source_lcao/module_rt/td_info.cpp - ../../../source_lcao/module_rt/td_folding.cpp - ../../../source_estate/module_pot/H_TDDFT_pw.cpp + ../../module_rt/td_folding.cpp + mock_tdinfo.cpp ) target_link_libraries( diff --git a/source/source_lcao/module_deepks/test/LCAO_deepks_test.cpp b/source/source_lcao/module_deepks/test/LCAO_deepks_test.cpp index 82a963c65d..68718bd9b6 100644 --- a/source/source_lcao/module_deepks/test/LCAO_deepks_test.cpp +++ b/source/source_lcao/module_deepks/test/LCAO_deepks_test.cpp @@ -146,10 +146,7 @@ void test_deepks::check_pdm() Test_Deepks::GridD, this->ld.dm_r); DeePKS_domain::cal_pdm(this->ld.init_pdm, - this->ld.inlmax, - this->ld.lmaxd, - this->ld.inl2l, - this->ld.inl_index, + this->ld.deepks_param, kv.kvec_d, this->ld.dm_r, this->ld.phialpha, @@ -158,32 +155,25 @@ void test_deepks::check_pdm() Test_Deepks::GridD, ParaO, this->ld.pdm); - DeePKS_domain::check_pdm(this->ld.inlmax, this->ld.inl2l, this->ld.pdm); + DeePKS_domain::check_pdm(this->ld.deepks_param, this->ld.pdm); this->compare_with_ref("deepks_projdm.dat", "pdm_ref.dat"); } template void test_deepks::check_descriptor(std::vector& descriptor) { - DeePKS_domain::cal_descriptor(ucell.nat, - this->ld.inlmax, - this->ld.inl2l, - this->ld.pdm, - descriptor, - this->ld.des_per_atom); - DeePKS_domain::check_descriptor(this->ld.inlmax, this->ld.des_per_atom, this->ld.inl2l, ucell, "./", descriptor, 0); + DeePKS_domain::cal_descriptor(ucell.nat, this->ld.deepks_param, this->ld.pdm, descriptor); + DeePKS_domain::check_descriptor(this->ld.deepks_param, ucell, "./", descriptor, 0); this->compare_with_ref("deepks_desc.dat", "descriptor_ref.dat"); } template void test_deepks::check_gdmx(torch::Tensor& gdmx) { - DeePKS_domain::cal_gdmx(this->ld.lmaxd, - this->ld.inlmax, - kv.nkstot, + DeePKS_domain::cal_gdmx(kv.nkstot, + this->ld.deepks_param, kv.kvec_d, this->ld.phialpha, - this->ld.inl_index, this->ld.dm_r, ucell, ORB, @@ -198,9 +188,9 @@ template void test_deepks::check_gvx(torch::Tensor& gdmx) { std::vector gevdm; - DeePKS_domain::cal_gevdm(ucell.nat, this->ld.inlmax, this->ld.inl2l, this->ld.pdm, gevdm); + DeePKS_domain::cal_gevdm(ucell.nat, this->ld.deepks_param, this->ld.pdm, gevdm); torch::Tensor gvx; - DeePKS_domain::cal_gvx(ucell.nat, this->ld.inlmax, this->ld.des_per_atom, this->ld.inl2l, gevdm, gdmx, gvx, 0); + DeePKS_domain::cal_gvx(ucell.nat, this->ld.deepks_param, gevdm, gdmx, gvx, 0); DeePKS_domain::check_tensor(gvx, "gvx.dat", 0); // 0 for rank this->compare_with_ref("gvx.dat", "gvx_ref.dat"); } @@ -208,12 +198,10 @@ void test_deepks::check_gvx(torch::Tensor& gdmx) template void test_deepks::check_gdmepsl(torch::Tensor& gdmepsl) { - DeePKS_domain::cal_gdmepsl(this->ld.lmaxd, - this->ld.inlmax, - kv.nkstot, + DeePKS_domain::cal_gdmepsl(kv.nkstot, + this->ld.deepks_param, kv.kvec_d, this->ld.phialpha, - this->ld.inl_index, this->ld.dm_r, ucell, ORB, @@ -228,16 +216,9 @@ template void test_deepks::check_gvepsl(torch::Tensor& gdmepsl) { std::vector gevdm; - DeePKS_domain::cal_gevdm(ucell.nat, this->ld.inlmax, this->ld.inl2l, this->ld.pdm, gevdm); + DeePKS_domain::cal_gevdm(ucell.nat, this->ld.deepks_param, this->ld.pdm, gevdm); torch::Tensor gvepsl; - DeePKS_domain::cal_gvepsl(ucell.nat, - this->ld.inlmax, - this->ld.des_per_atom, - this->ld.inl2l, - gevdm, - gdmepsl, - gvepsl, - 0); + DeePKS_domain::cal_gvepsl(ucell.nat, this->ld.deepks_param, gevdm, gdmepsl, gvepsl, 0); DeePKS_domain::check_tensor(gvepsl, "gvepsl.dat", 0); // 0 for rank this->compare_with_ref("gvepsl.dat", "gvepsl_ref.dat"); } @@ -248,17 +229,14 @@ void test_deepks::check_orbpre() using TH = std::conditional_t::value, ModuleBase::matrix, ModuleBase::ComplexMatrix>; std::vector gevdm; torch::Tensor orbpre; - DeePKS_domain::cal_gevdm(ucell.nat, this->ld.inlmax, this->ld.inl2l, this->ld.pdm, gevdm); + DeePKS_domain::cal_gevdm(ucell.nat, this->ld.deepks_param, this->ld.pdm, gevdm); DeePKS_domain::cal_orbital_precalc(dm, - this->ld.lmaxd, - this->ld.inlmax, ucell.nat, kv.nkstot, - this->ld.inl2l, + this->ld.deepks_param, kv.kvec_d, this->ld.phialpha, gevdm, - this->ld.inl_index, ucell, ORB, ParaO, @@ -273,17 +251,14 @@ void test_deepks::check_vdpre() { std::vector gevdm; torch::Tensor vdpre; - DeePKS_domain::cal_gevdm(ucell.nat, this->ld.inlmax, this->ld.inl2l, this->ld.pdm, gevdm); + DeePKS_domain::cal_gevdm(ucell.nat, this->ld.deepks_param, this->ld.pdm, gevdm); DeePKS_domain::cal_v_delta_precalc(PARAM.sys.nlocal, - this->ld.lmaxd, - this->ld.inlmax, ucell.nat, kv.nkstot, - this->ld.inl2l, + this->ld.deepks_param, kv.kvec_d, this->ld.phialpha, gevdm, - this->ld.inl_index, ucell, ORB, ParaO, @@ -298,29 +273,41 @@ void test_deepks::check_vdrpre() { std::vector gevdm; torch::Tensor vdrpre; - DeePKS_domain::cal_gevdm(ucell.nat, this->ld.inlmax, this->ld.inl2l, this->ld.pdm, gevdm); - // normally use hR to get R_size, here use phialpha[0] only for test case - int R_size = DeePKS_domain::get_R_size(*(this->ld.phialpha[0])); + torch::Tensor overlap_out; + torch::Tensor iRmat; + DeePKS_domain::cal_gevdm(ucell.nat, this->ld.deepks_param, this->ld.pdm, gevdm); + // normally use hR to get R_size, here use 3 instead for Bravo lattice R in [-1,0,1] + int R_size = 3; DeePKS_domain::cal_vdr_precalc(PARAM.sys.nlocal, - this->ld.lmaxd, - this->ld.inlmax, ucell.nat, kv.nkstot, R_size, - this->ld.inl2l, + this->ld.deepks_param, kv.kvec_d, this->ld.phialpha, gevdm, - this->ld.inl_index, ucell, ORB, ParaO, Test_Deepks::GridD, vdrpre); - // vdrpre is large, we only check the main element in Bravo lattice vector (0, 0, 0) - torch::Tensor vdrpre_sliced = vdrpre.slice(0, 0, 1, 1).slice(1, 0, 1, 1).slice(2, 0, 1, 1); + DeePKS_domain::prepare_phialpha_iRmat(PARAM.sys.nlocal, + R_size, + this->ld.deepks_param, + this->ld.phialpha, + ucell, + ORB, + Test_Deepks::GridD, + overlap_out, + iRmat); + // vdrpre is large, we only check the main element in Bravo lattice vector (0, 0, 0) and (1, 0, 0) + torch::Tensor vdrpre_sliced = vdrpre.slice(0, 0, 2, 1).slice(1, 0, 1, 1).slice(2, 0, 1, 1); DeePKS_domain::check_tensor(vdrpre_sliced, "vdr_precalc.dat", 0); // 0 for rank + DeePKS_domain::check_tensor(overlap_out, "phialpha_r.dat", 0); // 0 for rank + DeePKS_domain::check_tensor(iRmat, "iRmat.dat", 0); // 0 for rank this->compare_with_ref("vdr_precalc.dat", "vdrpre_ref.dat"); + this->compare_with_ref("phialpha_r.dat", "phialpha_r_ref.dat"); + this->compare_with_ref("iRmat.dat", "iRmat_ref.dat"); } template @@ -331,11 +318,7 @@ void test_deepks::check_edelta(std::vector& descriptor) if (PARAM.inp.deepks_equiv) { DeePKS_domain::cal_edelta_gedm_equiv(ucell.nat, - this->ld.lmaxd, - this->ld.nmaxd, - this->ld.inlmax, - this->ld.des_per_atom, - this->ld.inl2l, + this->ld.deepks_param, descriptor, this->ld.gedm, this->ld.E_delta, @@ -344,9 +327,7 @@ void test_deepks::check_edelta(std::vector& descriptor) else { DeePKS_domain::cal_edelta_gedm(ucell.nat, - this->ld.inlmax, - this->ld.des_per_atom, - this->ld.inl2l, + this->ld.deepks_param, descriptor, this->ld.pdm, this->ld.model_deepks, @@ -359,7 +340,7 @@ void test_deepks::check_edelta(std::vector& descriptor) ofs.close(); this->compare_with_ref("E_delta.dat", "E_delta_ref.dat"); - // DeePKS_domain::check_gedm(this->ld.inlmax, this->ld.inl2l, this->ld.gedm); + // DeePKS_domain::check_gedm(this->ld.deepks_param, this->ld.gedm); // this->compare_with_ref("gedm.dat", "gedm_ref.dat"); } @@ -412,10 +393,10 @@ void test_deepks::check_f_delta_and_stress_delta() Test_Deepks::GridD, ParaO, nks, + this->ld.deepks_param, kv.kvec_d, this->ld.phialpha, this->ld.gedm, - this->ld.inl_index, fvnl_dalpha, cal_stress, svnl_dalpha); @@ -462,8 +443,8 @@ void test_deepks::compare_with_ref(const std::string f1, const std::string f2 file2 >> word2; if ((word1[0] - '0' >= 0 && word1[0] - '0' < 10) || word1[0] == '-') { - double num1 = std::stof(word1); - double num2 = std::stof(word2); + double num1 = std::stod(word1); + double num2 = std::stod(word2); if (std::abs(num1 - num2) > test_thr) { this->failed_check += 1; @@ -476,10 +457,10 @@ void test_deepks::compare_with_ref(const std::string f1, const std::string f2 { std::string word1_str = word1.substr(1, word1.size() - 2); std::string word2_str = word2.substr(1, word2.size() - 2); - double word1_real = std::stof(word1_str.substr(0, word1_str.find(','))); - double word1_imag = std::stof(word1_str.substr(word1_str.find(',') + 1)); - double word2_real = std::stof(word2_str.substr(0, word2_str.find(','))); - double word2_imag = std::stof(word2_str.substr(word2_str.find(',') + 1)); + double word1_real = std::stod(word1_str.substr(0, word1_str.find(','))); + double word1_imag = std::stod(word1_str.substr(word1_str.find(',') + 1)); + double word2_real = std::stod(word2_str.substr(0, word2_str.find(','))); + double word2_imag = std::stod(word2_str.substr(word2_str.find(',') + 1)); if (std::abs(word1_real - word2_real) > test_thr || std::abs(word1_imag - word2_imag) > test_thr) { this->failed_check += 1; diff --git a/source/source_lcao/module_deepks/test/Makefile.Objects b/source/source_lcao/module_deepks/test/Makefile.Objects index 42b0143270..31b32cef5a 100644 --- a/source/source_lcao/module_deepks/test/Makefile.Objects +++ b/source/source_lcao/module_deepks/test/Makefile.Objects @@ -57,6 +57,7 @@ read_pp_blps.o\ unitcell.o\ check_atomic_stru.o\ read_atoms.o\ +read_atoms_helper.o\ read_cell_pseudopots.o\ setup_nonlocal.o diff --git a/source/source_lcao/module_deepks/test/klist.h b/source/source_lcao/module_deepks/test/klist.h index 12e0e4d40e..7400d82c45 100644 --- a/source/source_lcao/module_deepks/test/klist.h +++ b/source/source_lcao/module_deepks/test/klist.h @@ -1,72 +1,69 @@ -///klist : adapted from klist from source_pw/module_pwdft -///deals with k point sampling +/// klist : adapted from klist from source_pw/module_pwdft +/// deals with k point sampling -#include "source_base/vector3.h" +#include "source_base/global_function.h" #include "source_base/matrix3.h" #include "source_base/memory.h" -#include "source_base/global_function.h" -#include +#include "source_base/vector3.h" + #include +#include namespace Test_Deepks { class K_Vectors { -public: - - ModuleBase::Vector3 *kvec_c; // Cartesian coordinates of k points - std::vector> kvec_d; // Direct coordinates of k points + public: + ModuleBase::Vector3* kvec_c; // Cartesian coordinates of k points + std::vector> kvec_d; // Direct coordinates of k points - double *wk; // wk, weight of k points + double* wk; // wk, weight of k points - int *isk; // distinguish spin up and down k points + int* isk; // distinguish spin up and down k points - int nkstot; // total number of k points + int nkstot; // total number of k points - int nmp[3]; // Number of Monhorst-Pack + int nmp[3]; // Number of Monhorst-Pack K_Vectors(); ~K_Vectors(); - void set( - const std::string &k_file_name, - const int& nspin, - const ModuleBase::Matrix3 &reciprocal_vec, - const ModuleBase::Matrix3 &latvec, - bool &GAMMA_ONLY_LOCAL, - std::ofstream &ofs_running, - std::ofstream &ofs_warning); + void set(const std::string& k_file_name, + const int& nspin, + const ModuleBase::Matrix3& reciprocal_vec, + const ModuleBase::Matrix3& latvec, + bool& GAMMA_ONLY_LOCAL, + std::ofstream& ofs_running, + std::ofstream& ofs_warning); -private: + private: int nspin; bool kc_done; bool kd_done; - double koffset[3]; // used only in automatic k-points. - std::string k_kword; //LiuXh add 20180619 - int k_nkstot; //LiuXh add 20180619 + double koffset[3]; // used only in automatic k-points. + std::string k_kword; // LiuXh add 20180619 + int k_nkstot; // LiuXh add 20180619 // step 1 : generate kpoints - bool read_kpoints( - const std::string &fn, - bool &GAMMA_ONLY_LOCAL, - std::ofstream &ofs_warning, - std::ofstream &ofs_running); - void Monkhorst_Pack(const int *nmp_in,const double *koffset_in,const int tipo); - double Monkhorst_Pack_formula( const int &k_type, const double &offset, - const int& n, const int &dim); + bool read_kpoints(const std::string& fn, + bool& GAMMA_ONLY_LOCAL, + std::ofstream& ofs_warning, + std::ofstream& ofs_running); + void Monkhorst_Pack(const int* nmp_in, const double* koffset_in, const int tipo); + double Monkhorst_Pack_formula(const int& k_type, const double& offset, const int& n, const int& dim); // step 2 : set both kvec and kved; normalize weight - void set_both_kvec(const ModuleBase::Matrix3 &G,const ModuleBase::Matrix3 &Rm, std::ofstream &ofs_running); - void renew(const int &kpoint_number); - void normalize_wk( const int °spin ); + void set_both_kvec(const ModuleBase::Matrix3& G, const ModuleBase::Matrix3& Rm, std::ofstream& ofs_running); + void renew(const int& kpoint_number); + void normalize_wk(const int& degspin); // step 3 : *2 or *4 kpoints. // *2 for LSDA // *4 for non-collinear - void set_kup_and_kdw(std::ofstream &ofs_running); + void set_kup_and_kdw(std::ofstream& ofs_running); // step 4 // print k lists. - void print_klists(std::ofstream &fn_running); + void print_klists(std::ofstream& fn_running); }; -} +} // namespace Test_Deepks diff --git a/source/source_lcao/module_deepks/test/klist_1.cpp b/source/source_lcao/module_deepks/test/klist_1.cpp index b4e9fdea81..709a193ece 100644 --- a/source/source_lcao/module_deepks/test/klist_1.cpp +++ b/source/source_lcao/module_deepks/test/klist_1.cpp @@ -1,605 +1,589 @@ #include "klist.h" - #include "source_io/module_parameter/parameter.h" namespace Test_Deepks { - K_Vectors::K_Vectors() - { - nspin = 0; // default spin. - kc_done = false; - kd_done = false; - - kvec_c = new ModuleBase::Vector3[1]; - kvec_d.resize(1); - - wk = nullptr; - isk = nullptr; - - nkstot = 0; - } - - K_Vectors::~K_Vectors() - { - delete[] kvec_c; - kvec_d.clear(); - delete[] wk; - delete[] isk; - } - - void K_Vectors::set( - const std::string &k_file_name, - const int& nspin_in, - const ModuleBase::Matrix3 &reciprocal_vec, - const ModuleBase::Matrix3 &latvec, - bool &GAMMA_ONLY_LOCAL, - std::ofstream &ofs_running, - std::ofstream &ofs_warning) - { - - ofs_running << "\n\n\n\n"; - ofs_running << " >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>" << std::endl; - ofs_running << " | |" << std::endl; - ofs_running << " | Setup K-points |" << std::endl; - ofs_running << " | We setup the k-points according to input parameters. |" << std::endl; - ofs_running << " | The reduced k-points are set according to symmetry operations. |" << std::endl; - ofs_running << " | We treat the spin as another set of k-points. |" << std::endl; - ofs_running << " | |" << std::endl; - ofs_running << " <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<" << std::endl; - ofs_running << "\n\n\n\n"; - - ofs_running << "\n SETUP K-POINTS" << std::endl; - - // (1) set nspin, read kpoints. - this->nspin = nspin_in; - ModuleBase::GlobalFunc::OUT(ofs_running,"nspin",nspin); - - bool read_succesfully = this->read_kpoints( - k_file_name, - GAMMA_ONLY_LOCAL, - ofs_warning, - ofs_running); - if(!read_succesfully) - { - ofs_warning << "in K_Vectors::set, something wrong while reading KPOINTS." << std::endl; - exit(1); - } - - // (2) - this->set_both_kvec(reciprocal_vec, latvec, ofs_running); - - int deg = 0; - if(PARAM.inp.nspin == 1) - { - deg = 2; - } - else if(PARAM.inp.nspin == 2||PARAM.inp.nspin==4) - { - deg = 1; - } - else - { - ofs_warning << "In K_Vectors::set, Only available for nspin = 1 or 2 or 4" << std::endl; - exit(1); - } - this->normalize_wk(deg); - - // It's very important in parallel case, - // firstly do the mpi_k() and then - // do set_kup_and_kdw() - - this->set_kup_and_kdw(ofs_running); - - this->print_klists(ofs_running); - //std::cout << " NUMBER OF K-POINTS : " << nkstot << std::endl; - - return; - } - - void K_Vectors::renew(const int &kpoint_number) - { - delete[] kvec_c; - delete[] wk; - delete[] isk; - - kvec_c = new ModuleBase::Vector3[kpoint_number]; - kvec_d.resize(kpoint_number); - wk = new double[kpoint_number]; - isk = new int[kpoint_number]; - - ModuleBase::Memory::record("KV::kvec_c",sizeof(double) * kpoint_number*3); - ModuleBase::Memory::record("KV::kvec_d",sizeof(double) * kpoint_number*3); - ModuleBase::Memory::record("KV::wk",sizeof(double) * kpoint_number*3); - ModuleBase::Memory::record("KV::isk",sizeof(int) * kpoint_number*3); - - return; - } - - bool K_Vectors::read_kpoints(const std::string &fn, bool &GAMMA_ONLY_LOCAL, std::ofstream &ofs_warning, std::ofstream &ofs_running) - { - - std::ifstream ifk(fn.c_str()); - ifk >> std::setiosflags(std::ios::uppercase); - - ifk.clear(); - ifk.seekg(0); - - std::string word; - std::string kword; - - int ierr = 0; - - ifk.rdstate(); - - while (ifk.good()) - { - ifk >> word; - ifk.ignore(150, '\n'); //LiuXh add 20180416, fix bug in k-point file when the first line with comments - if (word == "K_POINTS" || word == "KPOINTS" || word == "K" ) - { - ierr = 1; - break; - } - - ifk.rdstate(); - } - - if (ierr == 0) - { - ofs_warning << " symbol K_POINTS not found." << std::endl; - return 0; - } - - //input k-points are in 2pi/a units - ModuleBase::GlobalFunc::READ_VALUE(ifk, nkstot); - - //std::cout << " nkstot = " << nkstot << std::endl; - ModuleBase::GlobalFunc::READ_VALUE(ifk, kword); - - // mohan update 2021-02-22 - int max_kpoints = 100000; - if (nkstot > 100000) - { - ofs_warning << " nkstot > MAX_KPOINTS" << std::endl; - return 0; - } - - int k_type = 0; - if (nkstot == 0) // nkstot==0, use monkhorst_pack. add by dwan - { - if (kword == "Gamma") - { - k_type = 0; - ModuleBase::GlobalFunc::OUT(ofs_running,"Input type of k points","Monkhorst-Pack(Gamma)"); - } - else if (kword == "Monkhorst-Pack" || kword == "MP" || kword == "mp") - { - k_type = 1; - ModuleBase::GlobalFunc::OUT(ofs_running,"Input type of k points","Monkhorst-Pack"); - } - else - { - ofs_warning << " Error: neither Gamma nor Monkhorst-Pack." << std::endl; - return 0; - } - - ifk >> nmp[0] >> nmp[1] >> nmp[2]; - - ifk >> koffset[0] >> koffset[1] >> koffset[2]; - this->Monkhorst_Pack(nmp, koffset, k_type); - } - else if (nkstot > 0) - { - if (kword == "Cartesian" || kword == "C") - { - this->renew(nkstot * nspin);//mohan fix bug 2009-09-01 - for (int i = 0;i < nkstot;i++) - { - ifk >> kvec_c[i].x >> kvec_c[i].y >> kvec_c[i].z; - ModuleBase::GlobalFunc::READ_VALUE(ifk, wk[i]); - } - - this->kc_done = true; - } - else if (kword == "Direct" || kword == "D") - { - this->renew(nkstot * nspin);//mohan fix bug 2009-09-01 - for (int i = 0;i < nkstot;i++) - { - ifk >> kvec_d[i].x >> kvec_d[i].y >> kvec_d[i].z; - ModuleBase::GlobalFunc::READ_VALUE(ifk, wk[i]); - } - this->kd_done = true; - } - else if (kword == "Line_Cartesian" ) - { - //std::cout << " kword = " << kword << std::endl; - - // how many special points. - int nks_special = this->nkstot; - //std::cout << " nks_special = " << nks_special << std::endl; - - //------------------------------------------ - // number of points to the next k points - //------------------------------------------ - int* nkl = new int[nks_special]; - - //------------------------------------------ - // cartesian coordinates of special points. - //------------------------------------------ - double *ksx = new double[nks_special]; - double *ksy = new double[nks_special]; - double *ksz = new double[nks_special]; - std::vector kposx; - std::vector kposy; - std::vector kposz; - ModuleBase::GlobalFunc::ZEROS(nkl, nks_special); - - //recalculate nkstot. - nkstot = 0; - for(int iks=0; iks> ksx[iks]; - ifk >> ksy[iks]; - ifk >> ksz[iks]; - ModuleBase::GlobalFunc::READ_VALUE( ifk, nkl[iks] ); - //std::cout << " nkl[" << iks << "]=" << nkl[iks] << std::endl; - assert(nkl[iks] >= 0); - nkstot += nkl[iks]; - } - assert( nkl[nks_special-1] == 1); - - //std::cout << " nkstot = " << nkstot << std::endl; - this->renew(nkstot * nspin);//mohan fix bug 2009-09-01 - - int count = 0; - for(int iks=1; ikskc_done = true; - - } - - else if (kword == "Line_Direct" || kword == "L" || kword == "Line" ) - { - //std::cout << " kword = " << kword << std::endl; - - // how many special points. - int nks_special = this->nkstot; - //std::cout << " nks_special = " << nks_special << std::endl; - - //------------------------------------------ - // number of points to the next k points - //------------------------------------------ - int* nkl = new int[nks_special]; - - //------------------------------------------ - // cartesian coordinates of special points. - //------------------------------------------ - double *ksx = new double[nks_special]; - double *ksy = new double[nks_special]; - double *ksz = new double[nks_special]; - std::vector kposx; - std::vector kposy; - std::vector kposz; - ModuleBase::GlobalFunc::ZEROS(nkl, nks_special); - - //recalculate nkstot. - nkstot = 0; - for(int iks=0; iks> ksx[iks]; - ifk >> ksy[iks]; - ifk >> ksz[iks]; - ModuleBase::GlobalFunc::READ_VALUE( ifk, nkl[iks] ); - //std::cout << " nkl[" << iks << "]=" << nkl[iks] << std::endl; - assert(nkl[iks] >= 0); - nkstot += nkl[iks]; - } - assert( nkl[nks_special-1] == 1); - - //std::cout << " nkstot = " << nkstot << std::endl; - this->renew(nkstot * nspin);//mohan fix bug 2009-09-01 - - int count = 0; - for(int iks=1; ikskd_done = true; - - } - - else - { - ofs_warning << " Error : neither Cartesian nor Direct kpoint." << std::endl; - return 0; - } - } - - ModuleBase::GlobalFunc::OUT(ofs_running,"nkstot",nkstot); - return 1; - } // END SUBROUTINE - - - double K_Vectors::Monkhorst_Pack_formula( const int &k_type, const double &offset, - const int& n, const int &dim) - { - double coordinate; - if (k_type==1) coordinate = (offset + 2.0 * (double)n - (double)dim - 1.0) / (2.0 * (double)dim); - else coordinate = (offset + (double)n - 1.0) / (double)dim; - - return coordinate; - } - - //add by dwan - void K_Vectors::Monkhorst_Pack(const int *nmp_in, const double *koffset_in, const int k_type) - { - const int mpnx = nmp_in[0]; - const int mpny = nmp_in[1]; - const int mpnz = nmp_in[2]; - - this->nkstot = mpnx * mpny * mpnz; - // only can renew after nkstot is estimated. - this->renew(nkstot * nspin); // mohan fix bug 2009-09-01 - for (int x = 1;x <= mpnx;x++) - { - double v1 = Monkhorst_Pack_formula( k_type, koffset_in[0], x, mpnx); - if( std::abs(v1) < 1.0e-10 ) v1 = 0.0; //mohan update 2012-06-10 - for (int y = 1;y <= mpny;y++) - { - double v2 = Monkhorst_Pack_formula( k_type, koffset_in[1], y, mpny); - if( std::abs(v2) < 1.0e-10 ) v2 = 0.0; - for (int z = 1;z <= mpnz;z++) - { - double v3 = Monkhorst_Pack_formula( k_type, koffset_in[2], z, mpnz); - if( std::abs(v3) < 1.0e-10 ) v3 = 0.0; - // index of nks kpoint - const int i = mpnx * mpny * (z - 1) + mpnx * (y - 1) + (x - 1); - kvec_d[i].set(v1, v2, v3); - } - } - } - - const double weight = 1.0 / static_cast(nkstot); - for (int ik=0; ikkd_done = true; - - return; - } - - void K_Vectors::set_both_kvec(const ModuleBase::Matrix3 &G, const ModuleBase::Matrix3 &R, std::ofstream &ofs_running) - { - // set cartesian k vectors. - if (!kc_done && kd_done) - { - for (int i = 0;i < nkstot;i++) - { - //wrong!! kvec_c[i] = G * kvec_d[i]; - // mohan fixed bug 2010-1-10 - if( std::abs(kvec_d[i].x) < 1.0e-10 ) kvec_d[i].x = 0.0; - if( std::abs(kvec_d[i].y) < 1.0e-10 ) kvec_d[i].y = 0.0; - if( std::abs(kvec_d[i].z) < 1.0e-10 ) kvec_d[i].z = 0.0; - - // mohan add2012-06-10 - if( std::abs(kvec_c[i].x) < 1.0e-10 ) kvec_c[i].x = 0.0; - if( std::abs(kvec_c[i].y) < 1.0e-10 ) kvec_c[i].y = 0.0; - if( std::abs(kvec_c[i].z) < 1.0e-10 ) kvec_c[i].z = 0.0; - } - kc_done = true; - } - - // set direct k vectors - else if (kc_done && !kd_done) - { - ModuleBase::Matrix3 RT = R.Transpose(); - for (int i = 0;i < nkstot;i++) - { - // std::cout << " ik=" << i - // << " kvec.x=" << kvec_c[i].x - // << " kvec.y=" << kvec_c[i].y - // << " kvec.z=" << kvec_c[i].z << std::endl; - //wrong! kvec_d[i] = RT * kvec_c[i]; - // mohan fixed bug 2011-03-07 - kvec_d[i] = kvec_c[i] * RT; - } - kd_done = true; - } - - ofs_running << "\n " << std::setw(8) << "KPOINTS" - << std::setw(20) << "DIRECT_X" - << std::setw(20) << "DIRECT_Y" - << std::setw(20) << "DIRECT_Z" - << std::setw(20) << "WEIGHT" << std::endl; - - for(int i=0; ikvec_d[i].x - << std::setw(20) << this->kvec_d[i].y - << std::setw(20) << this->kvec_d[i].z - << std::setw(20) << this->wk[i] << std::endl; - } - - return; - } - - - void K_Vectors::normalize_wk(const int °spin) - { - double sum = 0.0; - - for (int ik = 0;ik < nkstot;ik++) - { - sum += this->wk[ik]; - } - assert(sum>0.0); - - for (int ik = 0;ik < nkstot;ik++) - { - this->wk[ik] /= sum; - } - - for (int ik = 0;ik < nkstot;ik++) - { - this->wk[ik] *= degspin; - } - - return; - } - - //---------------------------------------------------------- - // This routine sets the k vectors for the up and down spin - //---------------------------------------------------------- - // from set_kup_and_kdw.f90 - void K_Vectors::set_kup_and_kdw(std::ofstream &ofs_running) - { - //========================================================================= - // on output: the number of points is doubled and xk and wk in the - // first (nks/2) positions correspond to up spin - // those in the second (nks/2) ones correspond to down spin - //========================================================================= - switch (nspin) - { - case 1: - - for (int ik = 0; ik < nkstot; ik++) - { - this->isk[ik] = 0; - } - - break; - - case 2: - - for (int ik = 0; ik < nkstot; ik++) - { - this->kvec_c[ik+nkstot] = kvec_c[ik]; - this->kvec_d[ik+nkstot] = kvec_d[ik]; - this->wk[ik+nkstot] = wk[ik]; - this->isk[ik] = 0; - this->isk[ik+nkstot] = 1; - } - - this->nkstot *= 2; - - ModuleBase::GlobalFunc::OUT(ofs_running,"nkstot(nspin=2)",nkstot); - break; - case 4: - - for (int ik = 0; ik < nkstot; ik++) - { - this->isk[ik] = 0; - } - - break; - } - - return; - } // end subroutine set_kup_and_kdw - - - void K_Vectors::print_klists(std::ofstream &ofs_running) - { - ofs_running << "\n " << std::setw(8) << "KPOINTS" - << std::setw(20) << "CARTESIAN_X" - << std::setw(20) << "CARTESIAN_Y" - << std::setw(20) << "CARTESIAN_Z" - << std::setw(20) << "WEIGHT" << std::endl; - for(int i=0; ikvec_c[i].x - << std::setw(20) << this->kvec_c[i].y - << std::setw(20) << this->kvec_c[i].z - << std::setw(20) << this->wk[i] << std::endl; - } - - ofs_running << "\n " << std::setw(8) << "KPOINTS" - << std::setw(20) << "DIRECT_X" - << std::setw(20) << "DIRECT_Y" - << std::setw(20) << "DIRECT_Z" - << std::setw(20) << "WEIGHT" << std::endl; - for(int i=0; ikvec_d[i].x - << std::setw(20) << this->kvec_d[i].y - << std::setw(20) << this->kvec_d[i].z - << std::setw(20) << this->wk[i] << std::endl; - } - - return; - } +K_Vectors::K_Vectors() +{ + nspin = 0; // default spin. + kc_done = false; + kd_done = false; + + kvec_c = new ModuleBase::Vector3[1]; + kvec_d.resize(1); + + wk = nullptr; + isk = nullptr; + + nkstot = 0; +} + +K_Vectors::~K_Vectors() +{ + delete[] kvec_c; + kvec_d.clear(); + delete[] wk; + delete[] isk; +} + +void K_Vectors::set(const std::string& k_file_name, + const int& nspin_in, + const ModuleBase::Matrix3& reciprocal_vec, + const ModuleBase::Matrix3& latvec, + bool& GAMMA_ONLY_LOCAL, + std::ofstream& ofs_running, + std::ofstream& ofs_warning) +{ + ofs_running << "\n\n\n\n"; + ofs_running << " >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>" << std::endl; + ofs_running << " | |" << std::endl; + ofs_running << " | Setup K-points |" << std::endl; + ofs_running << " | We setup the k-points according to input parameters. |" << std::endl; + ofs_running << " | The reduced k-points are set according to symmetry operations. |" << std::endl; + ofs_running << " | We treat the spin as another set of k-points. |" << std::endl; + ofs_running << " | |" << std::endl; + ofs_running << " <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<" << std::endl; + ofs_running << "\n\n\n\n"; + + ofs_running << "\n SETUP K-POINTS" << std::endl; + + // (1) set nspin, read kpoints. + this->nspin = nspin_in; + ModuleBase::GlobalFunc::OUT(ofs_running, "nspin", nspin); + + bool read_succesfully = this->read_kpoints(k_file_name, GAMMA_ONLY_LOCAL, ofs_warning, ofs_running); + if (!read_succesfully) + { + ofs_warning << "in K_Vectors::set, something wrong while reading KPOINTS." << std::endl; + exit(1); + } + + // (2) + this->set_both_kvec(reciprocal_vec, latvec, ofs_running); + + int deg = 0; + if (PARAM.inp.nspin == 1) + { + deg = 2; + } + else if (PARAM.inp.nspin == 2 || PARAM.inp.nspin == 4) + { + deg = 1; + } + else + { + ofs_warning << "In K_Vectors::set, Only available for nspin = 1 or 2 or 4" << std::endl; + exit(1); + } + this->normalize_wk(deg); + + // It's very important in parallel case, + // firstly do the mpi_k() and then + // do set_kup_and_kdw() + + this->set_kup_and_kdw(ofs_running); + + this->print_klists(ofs_running); + // std::cout << " NUMBER OF K-POINTS : " << nkstot << std::endl; + + return; } + +void K_Vectors::renew(const int& kpoint_number) +{ + delete[] kvec_c; + delete[] wk; + delete[] isk; + + kvec_c = new ModuleBase::Vector3[kpoint_number]; + kvec_d.resize(kpoint_number); + wk = new double[kpoint_number]; + isk = new int[kpoint_number]; + + ModuleBase::Memory::record("KV::kvec_c", sizeof(double) * kpoint_number * 3); + ModuleBase::Memory::record("KV::kvec_d", sizeof(double) * kpoint_number * 3); + ModuleBase::Memory::record("KV::wk", sizeof(double) * kpoint_number * 3); + ModuleBase::Memory::record("KV::isk", sizeof(int) * kpoint_number * 3); + + return; +} + +bool K_Vectors::read_kpoints(const std::string& fn, + bool& GAMMA_ONLY_LOCAL, + std::ofstream& ofs_warning, + std::ofstream& ofs_running) +{ + + std::ifstream ifk(fn.c_str()); + ifk >> std::setiosflags(std::ios::uppercase); + + ifk.clear(); + ifk.seekg(0); + + std::string word; + std::string kword; + + int ierr = 0; + + ifk.rdstate(); + + while (ifk.good()) + { + ifk >> word; + ifk.ignore(150, '\n'); // LiuXh add 20180416, fix bug in k-point file when the first line with comments + if (word == "K_POINTS" || word == "KPOINTS" || word == "K") + { + ierr = 1; + break; + } + + ifk.rdstate(); + } + + if (ierr == 0) + { + ofs_warning << " symbol K_POINTS not found." << std::endl; + return 0; + } + + // input k-points are in 2pi/a units + ModuleBase::GlobalFunc::READ_VALUE(ifk, nkstot); + + // std::cout << " nkstot = " << nkstot << std::endl; + ModuleBase::GlobalFunc::READ_VALUE(ifk, kword); + + // mohan update 2021-02-22 + int max_kpoints = 100000; + if (nkstot > 100000) + { + ofs_warning << " nkstot > MAX_KPOINTS" << std::endl; + return 0; + } + + int k_type = 0; + if (nkstot == 0) // nkstot==0, use monkhorst_pack. add by dwan + { + if (kword == "Gamma") + { + k_type = 0; + ModuleBase::GlobalFunc::OUT(ofs_running, "Input type of k points", "Monkhorst-Pack(Gamma)"); + } + else if (kword == "Monkhorst-Pack" || kword == "MP" || kword == "mp") + { + k_type = 1; + ModuleBase::GlobalFunc::OUT(ofs_running, "Input type of k points", "Monkhorst-Pack"); + } + else + { + ofs_warning << " Error: neither Gamma nor Monkhorst-Pack." << std::endl; + return 0; + } + + ifk >> nmp[0] >> nmp[1] >> nmp[2]; + + ifk >> koffset[0] >> koffset[1] >> koffset[2]; + this->Monkhorst_Pack(nmp, koffset, k_type); + } + else if (nkstot > 0) + { + if (kword == "Cartesian" || kword == "C") + { + this->renew(nkstot * nspin); // mohan fix bug 2009-09-01 + for (int i = 0; i < nkstot; i++) + { + ifk >> kvec_c[i].x >> kvec_c[i].y >> kvec_c[i].z; + ModuleBase::GlobalFunc::READ_VALUE(ifk, wk[i]); + } + + this->kc_done = true; + } + else if (kword == "Direct" || kword == "D") + { + this->renew(nkstot * nspin); // mohan fix bug 2009-09-01 + for (int i = 0; i < nkstot; i++) + { + ifk >> kvec_d[i].x >> kvec_d[i].y >> kvec_d[i].z; + ModuleBase::GlobalFunc::READ_VALUE(ifk, wk[i]); + } + this->kd_done = true; + } + else if (kword == "Line_Cartesian") + { + // std::cout << " kword = " << kword << std::endl; + + // how many special points. + int nks_special = this->nkstot; + // std::cout << " nks_special = " << nks_special << std::endl; + + //------------------------------------------ + // number of points to the next k points + //------------------------------------------ + int* nkl = new int[nks_special]; + + //------------------------------------------ + // cartesian coordinates of special points. + //------------------------------------------ + double* ksx = new double[nks_special]; + double* ksy = new double[nks_special]; + double* ksz = new double[nks_special]; + std::vector kposx; + std::vector kposy; + std::vector kposz; + ModuleBase::GlobalFunc::ZEROS(nkl, nks_special); + + // recalculate nkstot. + nkstot = 0; + for (int iks = 0; iks < nks_special; iks++) + { + ifk >> ksx[iks]; + ifk >> ksy[iks]; + ifk >> ksz[iks]; + ModuleBase::GlobalFunc::READ_VALUE(ifk, nkl[iks]); + // std::cout << " nkl[" << iks << "]=" << nkl[iks] << std::endl; + assert(nkl[iks] >= 0); + nkstot += nkl[iks]; + } + assert(nkl[nks_special - 1] == 1); + + // std::cout << " nkstot = " << nkstot << std::endl; + this->renew(nkstot * nspin); // mohan fix bug 2009-09-01 + + int count = 0; + for (int iks = 1; iks < nks_special; iks++) + { + double dx = (ksx[iks] - ksx[iks - 1]) / nkl[iks - 1]; + double dy = (ksy[iks] - ksy[iks - 1]) / nkl[iks - 1]; + double dz = (ksz[iks] - ksz[iks - 1]) / nkl[iks - 1]; + // GlobalV::ofs_running << " dx=" << dx << " dy=" << dy << " dz=" << dz << std::endl; + for (int is = 0; is < nkl[iks - 1]; is++) + { + kvec_c[count].x = ksx[iks - 1] + is * dx; + kvec_c[count].y = ksy[iks - 1] + is * dy; + kvec_c[count].z = ksz[iks - 1] + is * dz; + ++count; + } + } + + // deal with the last special k point. + kvec_c[count].x = ksx[nks_special - 1]; + kvec_c[count].y = ksy[nks_special - 1]; + kvec_c[count].z = ksz[nks_special - 1]; + ++count; + + // std::cout << " count = " << count << std::endl; + assert(count == nkstot); + + for (int ik = 0; ik < nkstot; ik++) + { + wk[ik] = 1.0; + } + + ofs_warning << " Error : nkstot == -1, not implemented yet." << std::endl; + + delete[] nkl; + delete[] ksx; + delete[] ksy; + delete[] ksz; + + this->kc_done = true; + } + + else if (kword == "Line_Direct" || kword == "L" || kword == "Line") + { + // std::cout << " kword = " << kword << std::endl; + + // how many special points. + int nks_special = this->nkstot; + // std::cout << " nks_special = " << nks_special << std::endl; + + //------------------------------------------ + // number of points to the next k points + //------------------------------------------ + int* nkl = new int[nks_special]; + + //------------------------------------------ + // cartesian coordinates of special points. + //------------------------------------------ + double* ksx = new double[nks_special]; + double* ksy = new double[nks_special]; + double* ksz = new double[nks_special]; + std::vector kposx; + std::vector kposy; + std::vector kposz; + ModuleBase::GlobalFunc::ZEROS(nkl, nks_special); + + // recalculate nkstot. + nkstot = 0; + for (int iks = 0; iks < nks_special; iks++) + { + ifk >> ksx[iks]; + ifk >> ksy[iks]; + ifk >> ksz[iks]; + ModuleBase::GlobalFunc::READ_VALUE(ifk, nkl[iks]); + // std::cout << " nkl[" << iks << "]=" << nkl[iks] << std::endl; + assert(nkl[iks] >= 0); + nkstot += nkl[iks]; + } + assert(nkl[nks_special - 1] == 1); + + // std::cout << " nkstot = " << nkstot << std::endl; + this->renew(nkstot * nspin); // mohan fix bug 2009-09-01 + + int count = 0; + for (int iks = 1; iks < nks_special; iks++) + { + double dx = (ksx[iks] - ksx[iks - 1]) / nkl[iks - 1]; + double dy = (ksy[iks] - ksy[iks - 1]) / nkl[iks - 1]; + double dz = (ksz[iks] - ksz[iks - 1]) / nkl[iks - 1]; + // GlobalV::ofs_running << " dx=" << dx << " dy=" << dy << " dz=" << dz << std::endl; + for (int is = 0; is < nkl[iks - 1]; is++) + { + kvec_d[count].x = ksx[iks - 1] + is * dx; + kvec_d[count].y = ksy[iks - 1] + is * dy; + kvec_d[count].z = ksz[iks - 1] + is * dz; + ++count; + } + } + + // deal with the last special k point. + kvec_d[count].x = ksx[nks_special - 1]; + kvec_d[count].y = ksy[nks_special - 1]; + kvec_d[count].z = ksz[nks_special - 1]; + ++count; + + // std::cout << " count = " << count << std::endl; + assert(count == nkstot); + + for (int ik = 0; ik < nkstot; ik++) + { + wk[ik] = 1.0; + } + + ofs_warning << " Error : nkstot == -1, not implemented yet." << std::endl; + + delete[] nkl; + delete[] ksx; + delete[] ksy; + delete[] ksz; + + this->kd_done = true; + } + + else + { + ofs_warning << " Error : neither Cartesian nor Direct kpoint." << std::endl; + return 0; + } + } + + ModuleBase::GlobalFunc::OUT(ofs_running, "nkstot", nkstot); + return 1; +} // END SUBROUTINE + +double K_Vectors::Monkhorst_Pack_formula(const int& k_type, const double& offset, const int& n, const int& dim) +{ + double coordinate; + if (k_type == 1) + coordinate = (offset + 2.0 * (double)n - (double)dim - 1.0) / (2.0 * (double)dim); + else + coordinate = (offset + (double)n - 1.0) / (double)dim; + + return coordinate; +} + +// add by dwan +void K_Vectors::Monkhorst_Pack(const int* nmp_in, const double* koffset_in, const int k_type) +{ + const int mpnx = nmp_in[0]; + const int mpny = nmp_in[1]; + const int mpnz = nmp_in[2]; + + this->nkstot = mpnx * mpny * mpnz; + // only can renew after nkstot is estimated. + this->renew(nkstot * nspin); // mohan fix bug 2009-09-01 + for (int x = 1; x <= mpnx; x++) + { + double v1 = Monkhorst_Pack_formula(k_type, koffset_in[0], x, mpnx); + if (std::abs(v1) < 1.0e-10) + v1 = 0.0; // mohan update 2012-06-10 + for (int y = 1; y <= mpny; y++) + { + double v2 = Monkhorst_Pack_formula(k_type, koffset_in[1], y, mpny); + if (std::abs(v2) < 1.0e-10) + v2 = 0.0; + for (int z = 1; z <= mpnz; z++) + { + double v3 = Monkhorst_Pack_formula(k_type, koffset_in[2], z, mpnz); + if (std::abs(v3) < 1.0e-10) + v3 = 0.0; + // index of nks kpoint + const int i = mpnx * mpny * (z - 1) + mpnx * (y - 1) + (x - 1); + kvec_d[i].set(v1, v2, v3); + } + } + } + + const double weight = 1.0 / static_cast(nkstot); + for (int ik = 0; ik < nkstot; ik++) + { + wk[ik] = weight; + } + this->kd_done = true; + + return; +} + +void K_Vectors::set_both_kvec(const ModuleBase::Matrix3& G, const ModuleBase::Matrix3& R, std::ofstream& ofs_running) +{ + // set cartesian k vectors. + if (!kc_done && kd_done) + { + for (int i = 0; i < nkstot; i++) + { + // wrong!! kvec_c[i] = G * kvec_d[i]; + // mohan fixed bug 2010-1-10 + if (std::abs(kvec_d[i].x) < 1.0e-10) + kvec_d[i].x = 0.0; + if (std::abs(kvec_d[i].y) < 1.0e-10) + kvec_d[i].y = 0.0; + if (std::abs(kvec_d[i].z) < 1.0e-10) + kvec_d[i].z = 0.0; + + // mohan add2012-06-10 + if (std::abs(kvec_c[i].x) < 1.0e-10) + kvec_c[i].x = 0.0; + if (std::abs(kvec_c[i].y) < 1.0e-10) + kvec_c[i].y = 0.0; + if (std::abs(kvec_c[i].z) < 1.0e-10) + kvec_c[i].z = 0.0; + } + kc_done = true; + } + + // set direct k vectors + else if (kc_done && !kd_done) + { + ModuleBase::Matrix3 RT = R.Transpose(); + for (int i = 0; i < nkstot; i++) + { + // std::cout << " ik=" << i + // << " kvec.x=" << kvec_c[i].x + // << " kvec.y=" << kvec_c[i].y + // << " kvec.z=" << kvec_c[i].z << std::endl; + // wrong! kvec_d[i] = RT * kvec_c[i]; + // mohan fixed bug 2011-03-07 + kvec_d[i] = kvec_c[i] * RT; + } + kd_done = true; + } + + ofs_running << "\n " << std::setw(8) << "KPOINTS" << std::setw(20) << "DIRECT_X" << std::setw(20) << "DIRECT_Y" + << std::setw(20) << "DIRECT_Z" << std::setw(20) << "WEIGHT" << std::endl; + + for (int i = 0; i < nkstot; i++) + { + ofs_running << " " << std::setw(8) << i + 1 << std::setw(20) << this->kvec_d[i].x << std::setw(20) + << this->kvec_d[i].y << std::setw(20) << this->kvec_d[i].z << std::setw(20) << this->wk[i] + << std::endl; + } + + return; +} + +void K_Vectors::normalize_wk(const int& degspin) +{ + double sum = 0.0; + + for (int ik = 0; ik < nkstot; ik++) + { + sum += this->wk[ik]; + } + assert(sum > 0.0); + + for (int ik = 0; ik < nkstot; ik++) + { + this->wk[ik] /= sum; + } + + for (int ik = 0; ik < nkstot; ik++) + { + this->wk[ik] *= degspin; + } + + return; +} + +//---------------------------------------------------------- +// This routine sets the k vectors for the up and down spin +//---------------------------------------------------------- +// from set_kup_and_kdw.f90 +void K_Vectors::set_kup_and_kdw(std::ofstream& ofs_running) +{ + //========================================================================= + // on output: the number of points is doubled and xk and wk in the + // first (nks/2) positions correspond to up spin + // those in the second (nks/2) ones correspond to down spin + //========================================================================= + switch (nspin) + { + case 1: + + for (int ik = 0; ik < nkstot; ik++) + { + this->isk[ik] = 0; + } + + break; + + case 2: + + for (int ik = 0; ik < nkstot; ik++) + { + this->kvec_c[ik + nkstot] = kvec_c[ik]; + this->kvec_d[ik + nkstot] = kvec_d[ik]; + this->wk[ik + nkstot] = wk[ik]; + this->isk[ik] = 0; + this->isk[ik + nkstot] = 1; + } + + this->nkstot *= 2; + + ModuleBase::GlobalFunc::OUT(ofs_running, "nkstot(nspin=2)", nkstot); + break; + case 4: + + for (int ik = 0; ik < nkstot; ik++) + { + this->isk[ik] = 0; + } + + break; + } + + return; +} // end subroutine set_kup_and_kdw + +void K_Vectors::print_klists(std::ofstream& ofs_running) +{ + ofs_running << "\n " << std::setw(8) << "KPOINTS" << std::setw(20) << "CARTESIAN_X" << std::setw(20) + << "CARTESIAN_Y" << std::setw(20) << "CARTESIAN_Z" << std::setw(20) << "WEIGHT" << std::endl; + for (int i = 0; i < nkstot; i++) + { + ofs_running << " " << std::setw(8) << i + 1 << std::setw(20) << this->kvec_c[i].x << std::setw(20) + << this->kvec_c[i].y << std::setw(20) << this->kvec_c[i].z << std::setw(20) << this->wk[i] + << std::endl; + } + + ofs_running << "\n " << std::setw(8) << "KPOINTS" << std::setw(20) << "DIRECT_X" << std::setw(20) << "DIRECT_Y" + << std::setw(20) << "DIRECT_Z" << std::setw(20) << "WEIGHT" << std::endl; + for (int i = 0; i < nkstot; i++) + { + ofs_running << " " << std::setw(8) << i + 1 << std::setw(20) << this->kvec_d[i].x << std::setw(20) + << this->kvec_d[i].y << std::setw(20) << this->kvec_d[i].z << std::setw(20) << this->wk[i] + << std::endl; + } + + return; +} + +} // namespace Test_Deepks diff --git a/source/source_lcao/module_deepks/test/mock_tdinfo.cpp b/source/source_lcao/module_deepks/test/mock_tdinfo.cpp new file mode 100644 index 0000000000..5c1af5ed8f --- /dev/null +++ b/source/source_lcao/module_deepks/test/mock_tdinfo.cpp @@ -0,0 +1,17 @@ +#include "source_base/vector3.h" +#include "source_cell/unitcell.h" +// mock of TD_info +class TD_info { +public: + TD_info() {} + ~TD_info() {} + const UnitCell* get_ucell() + { + return nullptr; + } + static ModuleBase::Vector3 cart_At; + static TD_info* td_vel_op; +}; +TD_info td_info; +TD_info* TD_info::td_vel_op = &td_info; +ModuleBase::Vector3 TD_info::cart_At(0.0, 0.0, 0.0); \ No newline at end of file diff --git a/source/source_lcao/module_deepks/test/parallel_orbitals.h b/source/source_lcao/module_deepks/test/parallel_orbitals.h index b9371d9a23..5445ff87ab 100644 --- a/source/source_lcao/module_deepks/test/parallel_orbitals.h +++ b/source/source_lcao/module_deepks/test/parallel_orbitals.h @@ -1,5 +1,5 @@ -///adapted from parallel_orbitals from source_basis/module_ao -///deals with the parallelization of atomic basis +/// adapted from parallel_orbitals from source_basis/module_ao +/// deals with the parallelization of atomic basis #include "source_base/global_function.h" #include "source_base/global_variable.h" @@ -7,19 +7,18 @@ namespace Test_Deepks { - class Parallel_Orbitals - { - public: - - Parallel_Orbitals(); - ~Parallel_Orbitals(); +class Parallel_Orbitals +{ + public: + Parallel_Orbitals(); + ~Parallel_Orbitals(); - int* global2local_row; - int* global2local_col; - void set_global2local(void); + int* global2local_row; + int* global2local_col; + void set_global2local(void); - int ncol; - int nrow; - int nloc; - }; -} + int ncol; + int nrow; + int nloc; +}; +} // namespace Test_Deepks diff --git a/source/source_lcao/module_deltaspin/CMakeLists.txt b/source/source_lcao/module_deltaspin/CMakeLists.txt index 02f389e5f1..6a0c1fea22 100644 --- a/source/source_lcao/module_deltaspin/CMakeLists.txt +++ b/source/source_lcao/module_deltaspin/CMakeLists.txt @@ -7,6 +7,7 @@ list(APPEND objects lambda_loop.cpp cal_mw_from_lambda.cpp template_helpers.cpp + deltaspin_lcao.cpp ) add_library( diff --git a/source/source_lcao/module_deltaspin/cal_mw.cpp b/source/source_lcao/module_deltaspin/cal_mw.cpp index 7f6a49e207..becdd82e7c 100644 --- a/source/source_lcao/module_deltaspin/cal_mw.cpp +++ b/source/source_lcao/module_deltaspin/cal_mw.cpp @@ -19,14 +19,16 @@ void spinconstrain::SpinConstrain>::cal_mi_lcao(const int& ModuleBase::timer::tick("spinconstrain::SpinConstrain", "cal_mi_lcao"); // calculate MW from lambda in real space projection method this->zero_Mi(); - const hamilt::HContainer* dmr - = static_cast>*>(this->pelec)->get_DM()->get_DMR_pointer(1); + const hamilt::HContainer* dmr = this->dm_->get_DMR_pointer(1); std::vector moments; if(PARAM.inp.nspin==2) { - static_cast>*>(this->pelec)->get_DM()->switch_dmr(2); + this->dm_->switch_dmr(2); + moments = static_cast, double>>*>(this->p_operator)->cal_moment(dmr, this->get_constrain()); - static_cast>*>(this->pelec)->get_DM()->switch_dmr(0); + + this->dm_->switch_dmr(0); + for(int iat=0;iatMi_.size();iat++) { this->Mi_[iat].x = 0.0; @@ -167,4 +169,4 @@ void spinconstrain::SpinConstrain::set_operator( hamilt::Operator* op_in) { this->p_operator = op_in; -} \ No newline at end of file +} diff --git a/source/source_lcao/module_deltaspin/cal_mw_from_lambda.cpp b/source/source_lcao/module_deltaspin/cal_mw_from_lambda.cpp index 3a83289cb7..e8bb81db23 100644 --- a/source/source_lcao/module_deltaspin/cal_mw_from_lambda.cpp +++ b/source/source_lcao/module_deltaspin/cal_mw_from_lambda.cpp @@ -128,7 +128,9 @@ void spinconstrain::SpinConstrain>::calculate_delta_hcc(std } template <> -void spinconstrain::SpinConstrain>::cal_mw_from_lambda(int i_step, const ModuleBase::Vector3* delta_lambda) +void spinconstrain::SpinConstrain>::cal_mw_from_lambda( + int i_step, + const ModuleBase::Vector3* delta_lambda) { ModuleBase::TITLE("spinconstrain::SpinConstrain", "cal_mw_from_lambda"); ModuleBase::timer::tick("spinconstrain::SpinConstrain", "cal_mw_from_lambda"); @@ -151,7 +153,8 @@ void spinconstrain::SpinConstrain>::cal_mw_from_lambda(int ->update_lambda(); } // diagonalization without update charge - hsolver_t.solve(hamilt_t, psi_t[0], this->pelec, true); + // mohan add two parameters charge and nspin, 2025-10-24 + hsolver_t.solve(hamilt_t, psi_t[0], this->pelec, *this->dm_, *this->pelec->charge, PARAM.inp.nspin, true); elecstate::calculate_weights(this->pelec->ekb, this->pelec->wg, this->pelec->klist, @@ -160,10 +163,11 @@ void spinconstrain::SpinConstrain>::cal_mw_from_lambda(int this->pelec->nelec_spin, this->pelec->skip_weights); elecstate::calEBand(this->pelec->ekb,this->pelec->wg,this->pelec->f_en); - elecstate::ElecStateLCAO>* pelec_lcao - = dynamic_cast>*>(this->pelec); - elecstate::cal_dm_psi(this->ParaV, pelec_lcao->wg, *psi_t, *(pelec_lcao->get_DM())); - pelec_lcao->get_DM()->cal_DMR(); + + elecstate::cal_dm_psi(this->ParaV, this->pelec->wg, *psi_t, *this->dm_); + + this->dm_->cal_DMR(); + this->cal_mi_lcao(i_step); } else @@ -430,27 +434,27 @@ void spinconstrain::SpinConstrain>::update_psi_charge(const if(pw_solve) { - hsolver::HSolverPW, base_device::DEVICE_CPU> hsolver_pw_obj(this->pw_wfc_, - PARAM.inp.calculation, - PARAM.inp.basis_type, - PARAM.inp.ks_solver, - false, - PARAM.globalv.use_uspp, - PARAM.inp.nspin, - hsolver::DiagoIterAssist, base_device::DEVICE_CPU>::SCF_ITER, - hsolver::DiagoIterAssist, base_device::DEVICE_CPU>::PW_DIAG_NMAX, - hsolver::DiagoIterAssist, base_device::DEVICE_CPU>::PW_DIAG_THR, - hsolver::DiagoIterAssist, base_device::DEVICE_CPU>::need_subspace); + hsolver::HSolverPW, base_device::DEVICE_CPU> hsolver_pw_obj(this->pw_wfc_, + PARAM.inp.calculation, + PARAM.inp.basis_type, + PARAM.inp.ks_solver, + false, + PARAM.globalv.use_uspp, + PARAM.inp.nspin, + hsolver::DiagoIterAssist, base_device::DEVICE_CPU>::SCF_ITER, + hsolver::DiagoIterAssist, base_device::DEVICE_CPU>::PW_DIAG_NMAX, + hsolver::DiagoIterAssist, base_device::DEVICE_CPU>::PW_DIAG_THR, + hsolver::DiagoIterAssist, base_device::DEVICE_CPU>::need_subspace); - hsolver_pw_obj.solve(hamilt_t, - psi_t[0], - this->pelec, - this->pelec->ekb.c, - GlobalV::RANK_IN_POOL, - GlobalV::NPROC_IN_POOL, - false, - this->tpiba, - this->get_nat()); + hsolver_pw_obj.solve(hamilt_t, + psi_t[0], + this->pelec, + this->pelec->ekb.c, + GlobalV::RANK_IN_POOL, + GlobalV::NPROC_IN_POOL, + false, + this->tpiba, + this->get_nat()); } else {// update charge density only @@ -460,17 +464,17 @@ void spinconstrain::SpinConstrain>::update_psi_charge(const #if ((defined __CUDA) || (defined __ROCM)) else { - base_device::DEVICE_GPU* ctx = {}; - base_device::DEVICE_CPU* cpu_ctx = {}; - psi::Psi, base_device::DEVICE_GPU>* psi_t = static_cast, base_device::DEVICE_GPU>*>(this->psi); - hamilt::Hamilt, base_device::DEVICE_GPU>* hamilt_t = static_cast, base_device::DEVICE_GPU>*>(this->p_hamilt); - auto* onsite_p = projectors::OnsiteProjector::get_instance(); - nbands = psi_t->get_nbands(); - npol = psi_t->get_npol(); - nkb = onsite_p->get_tot_nproj(); - nk = psi_t->get_nk(); - nh_iat = &onsite_p->get_nh(0); - size_becp = nbands * nkb * npol; + base_device::DEVICE_GPU* ctx = {}; + base_device::DEVICE_CPU* cpu_ctx = {}; + psi::Psi, base_device::DEVICE_GPU>* psi_t = static_cast, base_device::DEVICE_GPU>*>(this->psi); + hamilt::Hamilt, base_device::DEVICE_GPU>* hamilt_t = static_cast, base_device::DEVICE_GPU>*>(this->p_hamilt); + auto* onsite_p = projectors::OnsiteProjector::get_instance(); + nbands = psi_t->get_nbands(); + npol = psi_t->get_npol(); + nkb = onsite_p->get_tot_nproj(); + nk = psi_t->get_nk(); + nh_iat = &onsite_p->get_nh(0); + size_becp = nbands * nkb * npol; std::complex* h_tmp = nullptr; std::complex* s_tmp = nullptr; diff --git a/source/source_lcao/module_deltaspin/deltaspin_lcao.cpp b/source/source_lcao/module_deltaspin/deltaspin_lcao.cpp new file mode 100644 index 0000000000..6a7effb6d0 --- /dev/null +++ b/source/source_lcao/module_deltaspin/deltaspin_lcao.cpp @@ -0,0 +1,114 @@ +#include "deltaspin_lcao.h" +#include "spin_constrain.h" +#include "source_basis/module_ao/parallel_orbitals.h" +#include "source_lcao/hamilt_lcao.h" +#include "source_estate/module_dm/density_matrix.h" +#include "source_estate/elecstate.h" + +namespace ModuleESolver +{ + +template +void init_deltaspin_lcao(const UnitCell& ucell, + const Input_para& inp, + void* pv, + const K_Vectors& kv, + void* p_hamilt, + void* psi, + void* dm, + void* pelec) +{ + if (!inp.sc_mag_switch) + { + return; + } + + spinconstrain::SpinConstrain& sc = spinconstrain::SpinConstrain::getScInstance(); +#ifdef __LCAO + sc.init_sc(inp.sc_thr, inp.nsc, inp.nsc_min, inp.alpha_trial, + inp.sccut, inp.sc_drop_thr, ucell, + static_cast(pv), + inp.nspin, kv, p_hamilt, psi, + static_cast*>(dm), + static_cast(pelec)); +#else + sc.init_sc(inp.sc_thr, inp.nsc, inp.nsc_min, inp.alpha_trial, + inp.sccut, inp.sc_drop_thr, ucell, + static_cast(pv), + inp.nspin, kv, p_hamilt, psi, + static_cast(pelec)); +#endif +} + +template +void cal_mi_lcao_wrapper(const int iter, const Input_para& inp) +{ + if (!inp.sc_mag_switch) + { + return; + } + +#ifdef __LCAO + spinconstrain::SpinConstrain& sc = spinconstrain::SpinConstrain::getScInstance(); + sc.cal_mi_lcao(iter); +#endif +} + +template +bool run_deltaspin_lambda_loop_lcao(const int iter, + const double drho, + const Input_para& inp) +{ + bool skip_solve = false; + + if (inp.sc_mag_switch) + { + spinconstrain::SpinConstrain& sc = spinconstrain::SpinConstrain::getScInstance(); + + if (!sc.mag_converged() && drho > 0 && drho < inp.sc_scf_thr) + { + /// optimize lambda to get target magnetic moments, but the lambda is not near target + sc.run_lambda_loop(iter); + sc.set_mag_converged(true); + skip_solve = true; + } + else if (sc.mag_converged()) + { + /// optimize lambda to get target magnetic moments, but the lambda is not near target + sc.run_lambda_loop(iter); + skip_solve = true; + } + } + + return skip_solve; +} + +/// Template instantiation +template void init_deltaspin_lcao(const UnitCell& ucell, + const Input_para& inp, + void* pv, + const K_Vectors& kv, + void* p_hamilt, + void* psi, + void* dm, + void* pelec); +template void init_deltaspin_lcao>(const UnitCell& ucell, + const Input_para& inp, + void* pv, + const K_Vectors& kv, + void* p_hamilt, + void* psi, + void* dm, + void* pelec); + +template void cal_mi_lcao_wrapper(const int iter, const Input_para& inp); +template void cal_mi_lcao_wrapper>(const int iter, const Input_para& inp); + +template bool run_deltaspin_lambda_loop_lcao(const int iter, + const double drho, + const Input_para& inp); +template bool run_deltaspin_lambda_loop_lcao>(const int iter, + const double drho, + const Input_para& inp); + +} // namespace ModuleESolver diff --git a/source/source_lcao/module_deltaspin/deltaspin_lcao.h b/source/source_lcao/module_deltaspin/deltaspin_lcao.h new file mode 100644 index 0000000000..959109ece7 --- /dev/null +++ b/source/source_lcao/module_deltaspin/deltaspin_lcao.h @@ -0,0 +1,67 @@ +#ifndef DELTASPIN_LCAO_H +#define DELTASPIN_LCAO_H + +#include "source_cell/unitcell.h" +#include "source_cell/klist.h" +#include "source_io/module_parameter/input_parameter.h" + +namespace ModuleESolver +{ + +/** + * @brief Initialize DeltaSpin for LCAO method + * + * This function initializes the DeltaSpin calculation by setting up + * the SpinConstrain object with input parameters. + * + * @param ucell Unit cell + * @param inp Input parameters + * @param pv Parallel orbitals + * @param kv K-vectors + * @param p_hamilt Pointer to Hamiltonian + * @param psi Pointer to wave functions + * @param dm Density matrix + * @param pelec Pointer to electronic state + */ +template +void init_deltaspin_lcao(const UnitCell& ucell, + const Input_para& inp, + void* pv, + const K_Vectors& kv, + void* p_hamilt, + void* psi, + void* dm, + void* pelec); + +/** + * @brief Calculate magnetic moments for DeltaSpin in LCAO method + * + * This function calculates the magnetic moments for each atom + * in the DeltaSpin method. + * + * @param iter Current iteration number + * @param inp Input parameters + */ +template +void cal_mi_lcao_wrapper(const int iter, const Input_para& inp); + +/** + * @brief Run DeltaSpin lambda loop for LCAO method + * + * This function handles the lambda loop optimization for the DeltaSpin method + * in LCAO calculations. It determines whether to skip the Hamiltonian solve + * based on the convergence status of magnetic moments. + * + * @param iter Current iteration number + * @param drho Charge density convergence criterion + * @param inp Input parameters + * @return bool Whether to skip the Hamiltonian solve + */ +template +bool run_deltaspin_lambda_loop_lcao(const int iter, + const double drho, + const Input_para& inp); + +} // namespace ModuleESolver + +#endif // DELTASPIN_LCAO_H diff --git a/source/source_lcao/module_deltaspin/init_sc.cpp b/source/source_lcao/module_deltaspin/init_sc.cpp index fbba82a839..ac56047173 100644 --- a/source/source_lcao/module_deltaspin/init_sc.cpp +++ b/source/source_lcao/module_deltaspin/init_sc.cpp @@ -1,21 +1,24 @@ #include "spin_constrain.h" // init sc -template -void spinconstrain::SpinConstrain::init_sc(double sc_thr_in, - int nsc_in, - int nsc_min_in, - double alpha_trial_in, - double sccut_in, - double sc_drop_thr_in, - const UnitCell& ucell, - Parallel_Orbitals* ParaV_in, - int nspin_in, - K_Vectors& kv_in, - void* p_hamilt_in, - void* psi_in, - elecstate::ElecState* pelec_in, - ModulePW::PW_Basis_K* pw_wfc_in) +template +void spinconstrain::SpinConstrain::init_sc(double sc_thr_in, + int nsc_in, + int nsc_min_in, + double alpha_trial_in, + double sccut_in, + double sc_drop_thr_in, + const UnitCell& ucell, + Parallel_Orbitals* ParaV_in, + int nspin_in, + const K_Vectors& kv_in, + void* p_hamilt_in, + void* psi_in, +#ifdef __LCAO + elecstate::DensityMatrix* dm_in, // mohan add 2025-11-03 +#endif + elecstate::ElecState* pelec_in, + ModulePW::PW_Basis_K* pw_wfc_in) { this->set_input_parameters(sc_thr_in, nsc_in, nsc_min_in, alpha_trial_in, sccut_in, sc_drop_thr_in); this->set_atomCounts(ucell.get_atom_Counts()); @@ -31,7 +34,10 @@ void spinconstrain::SpinConstrain::init_sc(double sc_thr_in, this->set_decay_grad(); if(ParaV_in != nullptr) this->set_ParaV(ParaV_in); this->set_solver_parameters(kv_in, p_hamilt_in, psi_in, pelec_in); +#ifdef __LCAO + this->dm_ = dm_in; // mohan add 2025-11-03 +#endif } template class spinconstrain::SpinConstrain>; -template class spinconstrain::SpinConstrain; \ No newline at end of file +template class spinconstrain::SpinConstrain; diff --git a/source/source_lcao/module_deltaspin/lambda_loop.cpp b/source/source_lcao/module_deltaspin/lambda_loop.cpp index ac4fe88c9a..5d38c5d261 100644 --- a/source/source_lcao/module_deltaspin/lambda_loop.cpp +++ b/source/source_lcao/module_deltaspin/lambda_loop.cpp @@ -99,7 +99,9 @@ void spinconstrain::SpinConstrain>::run_lambda_loop(int out template <> -void spinconstrain::SpinConstrain>::run_lambda_loop(int outer_step, bool rerun) +void spinconstrain::SpinConstrain>::run_lambda_loop( + int outer_step, + bool rerun) { // init controlling parameters int nat = this->get_nat(); @@ -115,9 +117,7 @@ void spinconstrain::SpinConstrain>::run_lambda_loop(int out std::vector> new_spin(nat, 0.0), spin_plus(nat, 0.0); double alpha_opt, alpha_plus; - double beta; - double mean_error, mean_error_old, rms_error; - double g; + double beta = 0.0, g = 0.0, mean_error = 0.0, mean_error_old = 0.0, rms_error = 0.0; double alpha_trial = this->alpha_trial_; @@ -139,6 +139,7 @@ void spinconstrain::SpinConstrain>::run_lambda_loop(int out double duration = 0.0; if (i_step == -1) { + this->cal_mw_from_lambda(i_step); spin = this->Mi_; where_fill_scalar_else_2d(this->constrain_, 0, zero, this->lambda_, initial_lambda); @@ -151,7 +152,9 @@ void spinconstrain::SpinConstrain>::run_lambda_loop(int out { where_fill_scalar_else_2d(this->constrain_, 0, zero, delta_lambda, delta_lambda); add_scalar_multiply_2d(initial_lambda, delta_lambda, one, this->lambda_); - this->cal_mw_from_lambda(i_step, delta_lambda.data()); + + this->cal_mw_from_lambda(i_step); + new_spin = this->Mi_; bool GradLessThanBound = this->check_gradient_decay(new_spin, spin, delta_lambda, dnu_last_step); if (i_step >= this->nsc_min_ && GradLessThanBound) @@ -246,6 +249,7 @@ void spinconstrain::SpinConstrain>::run_lambda_loop(int out where_fill_scalar_else_2d(this->constrain_, 0, zero, delta_lambda, delta_lambda); add_scalar_multiply_2d(initial_lambda, delta_lambda, one, this->lambda_); + this->cal_mw_from_lambda(i_step, delta_lambda.data()); spin_plus = this->Mi_; diff --git a/source/source_lcao/module_deltaspin/spin_constrain.cpp b/source/source_lcao/module_deltaspin/spin_constrain.cpp index 26cf70cea5..6b49487975 100644 --- a/source/source_lcao/module_deltaspin/spin_constrain.cpp +++ b/source/source_lcao/module_deltaspin/spin_constrain.cpp @@ -8,15 +8,15 @@ namespace spinconstrain { -template -SpinConstrain& SpinConstrain::getScInstance() +template +SpinConstrain& SpinConstrain::getScInstance() { - static SpinConstrain instance; // Guaranteed to be created and destroyed only once + static SpinConstrain instance; // Guaranteed to be created and destroyed only once return instance; } -template -double SpinConstrain::cal_escon() +template +double SpinConstrain::cal_escon() { this->escon_ = 0.0; if (!this->is_Mi_converged) @@ -33,30 +33,30 @@ double SpinConstrain::cal_escon() return this->escon_; } -template -double SpinConstrain::get_escon() +template +double SpinConstrain::get_escon() { return this->escon_; } // set atomCounts -template -void SpinConstrain::set_atomCounts(const std::map& atomCounts_in) +template +void SpinConstrain::set_atomCounts(const std::map& atomCounts_in) { this->atomCounts.clear(); this->atomCounts = atomCounts_in; } // get atomCounts -template -const std::map& SpinConstrain::get_atomCounts() const +template +const std::map& SpinConstrain::get_atomCounts() const { return this->atomCounts; } /// set nspin -template -void SpinConstrain::set_nspin(int nspin_in) +template +void SpinConstrain::set_nspin(int nspin_in) { if (nspin_in != 4 && nspin_in != 2) { @@ -66,14 +66,14 @@ void SpinConstrain::set_nspin(int nspin_in) } /// get nspin -template -int SpinConstrain::get_nspin() +template +int SpinConstrain::get_nspin() { return this->nspin_; } -template -int SpinConstrain::get_nat() +template +int SpinConstrain::get_nat() { int nat = 0; for (std::map::iterator it = this->atomCounts.begin(); it != this->atomCounts.end(); ++it) @@ -83,14 +83,14 @@ int SpinConstrain::get_nat() return nat; } -template -int SpinConstrain::get_ntype() +template +int SpinConstrain::get_ntype() { return this->atomCounts.size(); } -template -void SpinConstrain::check_atomCounts() +template +void SpinConstrain::check_atomCounts() { if (!this->atomCounts.size()) { @@ -116,8 +116,8 @@ void SpinConstrain::check_atomCounts() } // get iat -template -int SpinConstrain::get_iat(int itype, int atom_index) +template +int SpinConstrain::get_iat(int itype, int atom_index) { if (itype < 0 || itype >= this->get_ntype()) { @@ -141,38 +141,38 @@ int SpinConstrain::get_iat(int itype, int atom_index) } // set orbitalCounts -template -void SpinConstrain::set_orbitalCounts(const std::map& orbitalCounts_in) +template +void SpinConstrain::set_orbitalCounts(const std::map& orbitalCounts_in) { this->orbitalCounts.clear(); this->orbitalCounts = orbitalCounts_in; } // get orbitalCounts -template -const std::map& SpinConstrain::get_orbitalCounts() const +template +const std::map& SpinConstrain::get_orbitalCounts() const { return this->orbitalCounts; } // set lnchiCounts -template -void SpinConstrain::set_lnchiCounts(const std::map>& lnchiCounts_in) +template +void SpinConstrain::set_lnchiCounts(const std::map>& lnchiCounts_in) { this->lnchiCounts.clear(); this->lnchiCounts = lnchiCounts_in; } // get lnchiCounts -template -const std::map>& SpinConstrain::get_lnchiCounts() const +template +const std::map>& SpinConstrain::get_lnchiCounts() const { return this->lnchiCounts; } // set sc_lambda from ScData -template -void SpinConstrain::set_sc_lambda() +template +void SpinConstrain::set_sc_lambda() { this->check_atomCounts(); int nat = this->get_nat(); @@ -194,8 +194,8 @@ void SpinConstrain::set_sc_lambda() } // set target_mag from ScData -template -void SpinConstrain::set_target_mag() +template +void SpinConstrain::set_target_mag() { this->check_atomCounts(); int nat = this->get_nat(); @@ -234,8 +234,8 @@ void SpinConstrain::set_target_mag() } // set constrain from ScData -template -void SpinConstrain::set_constrain() +template +void SpinConstrain::set_constrain() { this->check_atomCounts(); int nat = this->get_nat(); @@ -266,8 +266,8 @@ void SpinConstrain::set_constrain() } // set sc_lambda from variable -template -void SpinConstrain::set_sc_lambda(const ModuleBase::Vector3* lambda_in, int nat_in) +template +void SpinConstrain::set_sc_lambda(const ModuleBase::Vector3* lambda_in, int nat_in) { this->check_atomCounts(); int nat = this->get_nat(); @@ -283,8 +283,8 @@ void SpinConstrain::set_sc_lambda(const ModuleBase::Vector3* lam } // set target_mag from variable -template -void SpinConstrain::set_target_mag(const ModuleBase::Vector3* target_mag_in, int nat_in) +template +void SpinConstrain::set_target_mag(const ModuleBase::Vector3* target_mag_in, int nat_in) { this->check_atomCounts(); int nat = this->get_nat(); @@ -299,8 +299,8 @@ void SpinConstrain::set_target_mag(const ModuleBase::Vector3* ta } } -template -void SpinConstrain::set_target_mag(const std::vector>& target_mag_in) +template +void SpinConstrain::set_target_mag(const std::vector>& target_mag_in) { int nat = this->get_nat(); assert(target_mag_in.size() == nat); @@ -324,8 +324,8 @@ void SpinConstrain::set_target_mag(const std::vector -void SpinConstrain::set_constrain(const ModuleBase::Vector3* constrain_in, int nat_in) +template +void SpinConstrain::set_constrain(const ModuleBase::Vector3* constrain_in, int nat_in) { this->check_atomCounts(); int nat = this->get_nat(); @@ -340,28 +340,28 @@ void SpinConstrain::set_constrain(const ModuleBase::Vector3* constr } } -template -const std::vector>& SpinConstrain::get_sc_lambda() const +template +const std::vector>& SpinConstrain::get_sc_lambda() const { return this->lambda_; } -template -const std::vector>& SpinConstrain::get_target_mag() const +template +const std::vector>& SpinConstrain::get_target_mag() const { return this->target_mag_; } /// get_constrain -template -const std::vector>& SpinConstrain::get_constrain() const +template +const std::vector>& SpinConstrain::get_constrain() const { return this->constrain_; } /// zero atomic magnetic moment -template -void SpinConstrain::zero_Mi() +template +void SpinConstrain::zero_Mi() { this->check_atomCounts(); int nat = this->get_nat(); @@ -377,15 +377,15 @@ void SpinConstrain::zero_Mi() /// get grad_decay /// this function can only be called by the root process because only /// root process reads the ScDecayGrad from json file -template -double SpinConstrain::get_decay_grad(int itype) +template +double SpinConstrain::get_decay_grad(int itype) { return this->ScDecayGrad[itype]; } /// set grad_decy -template -void SpinConstrain::set_decay_grad() +template +void SpinConstrain::set_decay_grad() { this->check_atomCounts(); int ntype = this->get_ntype(); @@ -397,15 +397,15 @@ void SpinConstrain::set_decay_grad() } /// get decay_grad -template -const std::vector& SpinConstrain::get_decay_grad() +template +const std::vector& SpinConstrain::get_decay_grad() { return this->decay_grad_; } /// set grad_decy from variable -template -void SpinConstrain::set_decay_grad(const double* decay_grad_in, int ntype_in) +template +void SpinConstrain::set_decay_grad(const double* decay_grad_in, int ntype_in) { this->check_atomCounts(); int ntype = this->get_ntype(); @@ -421,8 +421,8 @@ void SpinConstrain::set_decay_grad(const double* decay_grad_in, int ntyp } /// @brief set input parameters -template -void SpinConstrain::set_input_parameters(double sc_thr_in, +template +void SpinConstrain::set_input_parameters(double sc_thr_in, int nsc_in, int nsc_min_in, double alpha_trial_in, @@ -438,56 +438,56 @@ void SpinConstrain::set_input_parameters(double sc_thr_in, } /// get sc_thr -template -double SpinConstrain::get_sc_thr() +template +double SpinConstrain::get_sc_thr() { return this->sc_thr_; } /// get nsc -template -int SpinConstrain::get_nsc() +template +int SpinConstrain::get_nsc() { return this->nsc_; } /// get nsc_min -template -int SpinConstrain::get_nsc_min() +template +int SpinConstrain::get_nsc_min() { return this->nsc_min_; } /// get alpha_trial -template -double SpinConstrain::get_alpha_trial() +template +double SpinConstrain::get_alpha_trial() { return this->alpha_trial_; } /// get sccut -template -double SpinConstrain::get_sccut() +template +double SpinConstrain::get_sccut() { return this->restrict_current_; } /// set sc_drop_thr -template -void SpinConstrain::set_sc_drop_thr(double sc_drop_thr_in) +template +void SpinConstrain::set_sc_drop_thr(double sc_drop_thr_in) { this->sc_drop_thr_ = sc_drop_thr_in; } /// get sc_drop_thr -template -double SpinConstrain::get_sc_drop_thr() +template +double SpinConstrain::get_sc_drop_thr() { return this->sc_drop_thr_; } -template -void SpinConstrain::set_solver_parameters(K_Vectors& kv_in, +template +void SpinConstrain::set_solver_parameters(const K_Vectors& kv_in, void* p_hamilt_in, void* psi_in, elecstate::ElecState* pelec_in) @@ -499,8 +499,8 @@ void SpinConstrain::set_solver_parameters(K_Vectors& kv_in, } /// @brief set ParaV -template -void SpinConstrain::set_ParaV(Parallel_Orbitals* ParaV_in) +template +void SpinConstrain::set_ParaV(Parallel_Orbitals* ParaV_in) { this->ParaV = ParaV_in; int nloc = this->ParaV->nloc; @@ -511,8 +511,8 @@ void SpinConstrain::set_ParaV(Parallel_Orbitals* ParaV_in) } /// print Mi -template -void SpinConstrain::print_Mi(std::ofstream& ofs_running) +template +void SpinConstrain::print_Mi(std::ofstream& ofs_running) { this->check_atomCounts(); int nat = this->get_nat(); @@ -556,8 +556,8 @@ void SpinConstrain::print_Mi(std::ofstream& ofs_running) } /// print magnetic force (defined as \frac{\delta{L}}/{\delta{Mi}} = -lambda[iat]) -template -void SpinConstrain::print_Mag_Force(std::ofstream& ofs_running) +template +void SpinConstrain::print_Mag_Force(std::ofstream& ofs_running) { this->check_atomCounts(); int nat = this->get_nat(); @@ -603,4 +603,4 @@ void SpinConstrain::print_Mag_Force(std::ofstream& ofs_running) template class SpinConstrain>; template class SpinConstrain; -} // namespace spinconstrain \ No newline at end of file +} // namespace spinconstrain diff --git a/source/source_lcao/module_deltaspin/spin_constrain.h b/source/source_lcao/module_deltaspin/spin_constrain.h index 8f510db57c..c900a771f3 100644 --- a/source/source_lcao/module_deltaspin/spin_constrain.h +++ b/source/source_lcao/module_deltaspin/spin_constrain.h @@ -14,12 +14,16 @@ #include "source_hamilt/operator.h" #include "source_estate/elecstate.h" +#ifdef __LCAO +#include "source_estate/module_dm/density_matrix.h" // mohan add 2025-11-02 +#endif + namespace spinconstrain { struct ScAtomData; -template +template class SpinConstrain { public: @@ -36,10 +40,13 @@ class SpinConstrain const UnitCell& ucell, Parallel_Orbitals* ParaV_in, int nspin_in, - K_Vectors& kv_in, + const K_Vectors& kv_in, void* p_hamilt_in, void* psi_in, - elecstate::ElecState* pelec_in, +#ifdef __LCAO + elecstate::DensityMatrix *dm_in, // mohan add 2025-11-02 +#endif + elecstate::ElecState* pelec_in, ModulePW::PW_Basis_K* pw_wfc_in = nullptr); /// @brief calculate the magnetization of each atom with real space projection method for LCAO base @@ -49,7 +56,8 @@ class SpinConstrain void cal_mi_pw(); - void cal_mw_from_lambda(int i_step, const ModuleBase::Vector3* delta_lambda = nullptr); + void cal_mw_from_lambda(int i_step, + const ModuleBase::Vector3* delta_lambda = nullptr); /** * @brief calculate the energy of \sum_i \lambda_i * Mi @@ -60,13 +68,17 @@ class SpinConstrain double get_escon(); - void run_lambda_loop(int outer_step, bool rerun = true); + void run_lambda_loop(int outer_step, + bool rerun = true); /// @brief update the charge density for LCAO base with new lambda /// update the charge density and psi for PW base with new lambda void update_psi_charge(const ModuleBase::Vector3* delta_lambda, bool pw_solve = true); - void calculate_delta_hcc(std::complex* h_tmp, const std::complex* becp_k, const ModuleBase::Vector3* delta_lambda, const int nbands, const int nkb, const int* nh_iat); + void calculate_delta_hcc(std::complex* h_tmp, + const std::complex* becp_k, + const ModuleBase::Vector3* delta_lambda, + const int nbands, const int nkb, const int* nh_iat); /// lambda loop helper functions bool check_rms_stop(int outer_step, int i_step, double rms_error, double duration, double total_duration); @@ -109,6 +121,9 @@ class SpinConstrain void* psi = nullptr; elecstate::ElecState* pelec = nullptr; ModulePW::PW_Basis_K* pw_wfc_ = nullptr; +#ifdef __LCAO + elecstate::DensityMatrix* dm_; +#endif double tpiba = 0.0; /// save ucell.tpiba const double meV_to_Ry = 7.349864435130999e-05; K_Vectors kv_; @@ -201,7 +216,7 @@ class SpinConstrain /// @brief set orbital parallel info void set_ParaV(Parallel_Orbitals* ParaV_in); /// @brief set parameters for solver - void set_solver_parameters(K_Vectors& kv_in, + void set_solver_parameters(const K_Vectors& kv_in, void* p_hamilt_in, void* psi_in, elecstate::ElecState* pelec_in); @@ -240,20 +255,20 @@ class SpinConstrain public: /// @brief save operator for spin-constrained DFT /// @param op_in the base pointer of operator, actual type should be DeltaSpin>* - void set_operator(hamilt::Operator* op_in); + void set_operator(hamilt::Operator* op_in); /// @brief set is_Mi_converged void set_mag_converged(bool is_Mi_converged_in){this->is_Mi_converged = is_Mi_converged_in;} /// @brief get is_Mi_converged bool mag_converged() const {return this->is_Mi_converged;} private: /// operator for spin-constrained DFT, used for calculating current atomic magnetic moment - hamilt::Operator* p_operator = nullptr; + hamilt::Operator* p_operator = nullptr; /// @brief if atomic magnetic moment is converged bool is_Mi_converged = false; - FPTYPE* sub_h_save; - FPTYPE* sub_s_save; - FPTYPE* becp_save; + TK* sub_h_save = nullptr; + TK* sub_s_save = nullptr; + TK* becp_save = nullptr; }; diff --git a/source/source_lcao/module_deltaspin/template_helpers.cpp b/source/source_lcao/module_deltaspin/template_helpers.cpp index 437ecec662..83e5f17f75 100644 --- a/source/source_lcao/module_deltaspin/template_helpers.cpp +++ b/source/source_lcao/module_deltaspin/template_helpers.cpp @@ -1,7 +1,8 @@ #include "spin_constrain.h" template <> -void spinconstrain::SpinConstrain::cal_mw_from_lambda(int i_step, const ModuleBase::Vector3* delta_lambda) +void spinconstrain::SpinConstrain::cal_mw_from_lambda(int i_step, + const ModuleBase::Vector3* delta_lambda) { } @@ -11,7 +12,8 @@ void spinconstrain::SpinConstrain::cal_mi_lcao(const int& step, bool pri } template <> -void spinconstrain::SpinConstrain::run_lambda_loop(int outer_step, bool rerun) +void spinconstrain::SpinConstrain::run_lambda_loop(int outer_step, + bool rerun) { } @@ -60,4 +62,4 @@ bool spinconstrain::SpinConstrain::check_gradient_decay( bool print) { return false; -} \ No newline at end of file +} diff --git a/source/source_lcao/module_deltaspin/test/CMakeLists.txt b/source/source_lcao/module_deltaspin/test/CMakeLists.txt index 2483403d3a..04a21d73d5 100644 --- a/source/source_lcao/module_deltaspin/test/CMakeLists.txt +++ b/source/source_lcao/module_deltaspin/test/CMakeLists.txt @@ -1,14 +1,14 @@ if(ENABLE_LCAO) AddTest( - TARGET deltaspin_basic_func_test + TARGET MODULE_LCAO_deltaspin_basic_func_test LIBS ${math_libs} base device parameter SOURCES basic_test.cpp ../basic_funcs.cpp ) AddTest( - TARGET deltaspin_spin_constrain_test + TARGET MODULE_LCAO_deltaspin_spin_constrain_test LIBS ${math_libs} base device parameter SOURCES spin_constrain_test.cpp ../spin_constrain.cpp @@ -16,7 +16,7 @@ AddTest( ) AddTest( - TARGET deltaspin_template_helpers + TARGET MODULE_LCAO_deltaspin_template_helpers LIBS ${math_libs} base device parameter SOURCES template_helpers_test.cpp ../spin_constrain.cpp diff --git a/source/source_lcao/module_deltaspin/test/lambda_loop_helper_test.cpp b/source/source_lcao/module_deltaspin/test/lambda_loop_helper_test.cpp index 2acf2d34eb..445832e924 100644 --- a/source/source_lcao/module_deltaspin/test/lambda_loop_helper_test.cpp +++ b/source/source_lcao/module_deltaspin/test/lambda_loop_helper_test.cpp @@ -83,7 +83,7 @@ TEST_F(spinconstrain::SpinConstrainTest, CheckRestriction) std::vector> search = { {0.0, 0.0, 40} }; - double alpha_trial = 0.1 / 13.605698; + double alpha_trial = 0.1 / ModuleBase::Ry_to_eV; testing::internal::CaptureStdout(); sc.check_restriction(search, alpha_trial); std::string output = testing::internal::GetCapturedStdout(); diff --git a/source/source_lcao/module_deltaspin/test/prepare_unitcell.h b/source/source_lcao/module_deltaspin/test/prepare_unitcell.h index 0b280cd2ac..7abe206dbf 100644 --- a/source/source_lcao/module_deltaspin/test/prepare_unitcell.h +++ b/source/source_lcao/module_deltaspin/test/prepare_unitcell.h @@ -95,7 +95,7 @@ class UcellTestPrepare } // lattice info ucell.lat0 = this->lat0; - ucell.lat0_angstrom = ucell.lat0 * 0.529177; + ucell.lat0_angstrom = ucell.lat0 * ModuleBase::BOHR_TO_A; ucell.tpiba = ModuleBase::TWO_PI / ucell.lat0; ucell.tpiba2 = ucell.tpiba * ucell.tpiba; ucell.latvec.e11 = this->latvec[0]; diff --git a/source/source_lcao/module_dftu/CMakeLists.txt b/source/source_lcao/module_dftu/CMakeLists.txt index d412154970..42a58af7ba 100644 --- a/source/source_lcao/module_dftu/CMakeLists.txt +++ b/source/source_lcao/module_dftu/CMakeLists.txt @@ -18,4 +18,4 @@ add_library( if(ENABLE_COVERAGE) add_coverage(dftu) -endif() \ No newline at end of file +endif() diff --git a/source/source_lcao/module_dftu/dftu.cpp b/source/source_lcao/module_dftu/dftu.cpp index 1bf05e98d9..92686ce4e3 100644 --- a/source/source_lcao/module_dftu/dftu.cpp +++ b/source/source_lcao/module_dftu/dftu.cpp @@ -8,7 +8,6 @@ #include "source_base/timer.h" #include "source_estate/magnetism.h" #include "source_estate/module_charge/charge.h" -#include "source_pw/module_pwdft/global.h" #include #include @@ -20,22 +19,30 @@ #include #include -namespace GlobalC -{ -ModuleDFTU::DFTU dftu; -} + // mohan add 2025-11-06 +double Plus_U::energy_u = 0.0; -namespace ModuleDFTU -{ -DFTU::DFTU() -{ -} +std::vector Plus_U::U = {}; // U (Hubbard parameter U) -DFTU::~DFTU() -{ -} +std::vector Plus_U::U0 = {}; // U0 (target Hubbard parameter U0) + +std::vector Plus_U::orbital_corr = {}; // + +double Plus_U::uramping = 0.0; // increase U by uramping, default is -1.0 -void DFTU::init(UnitCell& cell, // unitcell class +int Plus_U::omc=0; // occupation matrix control + +int Plus_U::mixing_dftu=0; //whether to mix locale + +bool Plus_U::Yukawa=false; // whether to use Yukawa potential + +Plus_U::Plus_U() +{} + +Plus_U::~Plus_U() +{} + +void Plus_U::init(UnitCell& cell, // unitcell class const Parallel_Orbitals* pv, const int nks #ifdef __LCAO @@ -43,7 +50,7 @@ void DFTU::init(UnitCell& cell, // unitcell class #endif ) { - ModuleBase::TITLE("DFTU", "init"); + ModuleBase::TITLE("Plus_U", "init"); #ifndef __MPI std::cout << "DFT+U module is only accessible in mpi versioin" << std::endl; @@ -67,7 +74,8 @@ void DFTU::init(UnitCell& cell, // unitcell class const int nlocal = PARAM.globalv.nlocal; // number of total local orbitals const int nspin = PARAM.inp.nspin; // number of spins - this->EU = 0.0; + // mohan update 2025-11-06 + Plus_U::energy_u = 0.0; this->locale.resize(cell.nat); this->locale_save.resize(cell.nat); @@ -221,24 +229,27 @@ void DFTU::init(UnitCell& cell, // unitcell class } } - ModuleBase::Memory::record("DFTU::locale", sizeof(double) * num_locale); + ModuleBase::Memory::record("Plus_U::locale", sizeof(double) * num_locale); return; } #ifdef __LCAO -void DFTU::cal_energy_correction(const UnitCell& ucell, +void Plus_U::cal_energy_correction(const UnitCell& ucell, const int istep) { - ModuleBase::TITLE("DFTU", "cal_energy_correction"); - ModuleBase::timer::tick("DFTU", "cal_energy_correction"); + ModuleBase::TITLE("Plus_U", "cal_energy_correction"); + ModuleBase::timer::tick("Plus_U", "cal_energy_correction"); if (!initialed_locale) { - ModuleBase::timer::tick("DFTU", "cal_energy_correction"); + ModuleBase::timer::tick("Plus_U", "cal_energy_correction"); return; } - this->EU = 0.0; - double EU_dc = 0.0; + + // mohan update 20251106 + Plus_U::energy_u = 0.0; + + double energy_dc = 0.0; for (int T = 0; T < ucell.ntype; T++) { @@ -291,12 +302,12 @@ void DFTU::cal_energy_correction(const UnitCell& ucell, } if (Yukawa) { - this->EU += 0.5 * (this->U_Yukawa[T][l][n] - this->J_Yukawa[T][l][n]) + Plus_U::energy_u += 0.5 * (this->U_Yukawa[T][l][n] - this->J_Yukawa[T][l][n]) * (nm_trace - nm2_trace); } else { - this->EU += 0.5 * this->U[T] * (nm_trace - nm2_trace); + Plus_U::energy_u += 0.5 * this->U[T] * (nm_trace - nm2_trace); } } } @@ -326,12 +337,12 @@ void DFTU::cal_energy_correction(const UnitCell& ucell, } if (Yukawa) { - this->EU - += 0.5 * (this->U_Yukawa[T][l][n] - this->J_Yukawa[T][l][n]) * (nm_trace - nm2_trace); + Plus_U::energy_u += 0.5 * (this->U_Yukawa[T][l][n] - this->J_Yukawa[T][l][n]) + * (nm_trace - nm2_trace); } else { - this->EU += 0.5 * this->U[T] * (nm_trace - nm2_trace); + Plus_U::energy_u += 0.5 * this->U[T] * (nm_trace - nm2_trace); } } @@ -353,14 +364,14 @@ void DFTU::cal_energy_correction(const UnitCell& ucell, { double VU = 0.0; VU = get_onebody_eff_pot(T, iat, l, n, is, m1_all, m2_all, false); - EU_dc += VU * this->locale[iat][l][n][is](m1_all, m2_all); + energy_dc += VU * this->locale[iat][l][n][is](m1_all, m2_all); } } else if (PARAM.inp.nspin == 4) // SOC { double VU = 0.0; VU = get_onebody_eff_pot(T, iat, l, n, 0, m1_all, m2_all, false); - EU_dc += VU * this->locale[iat][l][n][0](m1_all, m2_all); + energy_dc += VU * this->locale[iat][l][n][0](m1_all, m2_all); } } } @@ -371,16 +382,16 @@ void DFTU::cal_energy_correction(const UnitCell& ucell, } // end I } // end T - // substract the double counting EU_dc included in band energy eband - this->EU -= EU_dc; + // substract the double counting energy_dc included in band energy eband + Plus_U::energy_u -= energy_dc; - ModuleBase::timer::tick("DFTU", "cal_energy_correction"); + ModuleBase::timer::tick("Plus_U", "cal_energy_correction"); return; } #endif -void DFTU::uramping_update() +void Plus_U::uramping_update() { // if uramping < 0.1, use the original U if (this->uramping < 0.01) { @@ -400,7 +411,7 @@ void DFTU::uramping_update() } } -bool DFTU::u_converged() +bool Plus_U::u_converged() { for (int i = 0; i < this->U0.size(); i++) { @@ -414,19 +425,19 @@ bool DFTU::u_converged() #ifdef __LCAO -void DFTU::set_dmr(const elecstate::DensityMatrix, double>* dmr) +void Plus_U::set_dmr(const elecstate::DensityMatrix, double>* dmr) { this->dm_in_dftu_cd = dmr; return; } -void DFTU::set_dmr(const elecstate::DensityMatrix* dmr) +void Plus_U::set_dmr(const elecstate::DensityMatrix* dmr) { this->dm_in_dftu_d = dmr; return; } -const hamilt::HContainer* DFTU::get_dmr(int ispin) const +const hamilt::HContainer* Plus_U::get_dmr(int ispin) const { if (this->dm_in_dftu_d != nullptr) { @@ -449,9 +460,10 @@ void dftu_cal_occup_m(const int iter, const std::vector>& dm, const K_Vectors& kv, const double& mixing_beta, - hamilt::Hamilt* p_ham) + hamilt::Hamilt* p_ham, + Plus_U &dftu) { - GlobalC::dftu.cal_occup_m_gamma(iter, ucell ,dm, mixing_beta, p_ham); + dftu.cal_occup_m_gamma(iter, ucell ,dm, mixing_beta, p_ham); } //! dftu occupation matrix for multiple k-points using dm(complex) @@ -461,11 +473,10 @@ void dftu_cal_occup_m(const int iter, const std::vector>>& dm, const K_Vectors& kv, const double& mixing_beta, - hamilt::Hamilt>* p_ham) + hamilt::Hamilt>* p_ham, + Plus_U &dftu) { - GlobalC::dftu.cal_occup_m_k(iter,ucell, dm, kv, mixing_beta, p_ham); + dftu.cal_occup_m_k(iter,ucell, dm, kv, mixing_beta, p_ham); } #endif - -} // namespace ModuleDFTU diff --git a/source/source_lcao/module_dftu/dftu.h b/source/source_lcao/module_dftu/dftu.h index b269acc665..56d213386d 100644 --- a/source/source_lcao/module_dftu/dftu.h +++ b/source/source_lcao/module_dftu/dftu.h @@ -7,7 +7,6 @@ #ifdef __LCAO #include "source_estate/module_charge/charge_mixing.h" #include "source_hamilt/hamilt.h" -#include "source_estate/elecstate.h" #include "source_lcao/module_hcontainer/hcontainer.h" #include "source_estate/module_dm/density_matrix.h" #include "source_lcao/force_stress_arrays.h" // mohan add 2024-06-15 @@ -16,24 +15,14 @@ #include #include -//========================================================== -// CLASS : -// NAME : DTFU (DFT+U) -//========================================================== -namespace ModuleDFTU -{ -class DFTU +class Plus_U { public: - DFTU(); // constructor - ~DFTU(); // deconstructor + Plus_U(); + ~Plus_U(); - //============================================================= - // In dftu.cpp - // Initialization & Calculating energy - //============================================================= public: // allocate relevant data strcutures void init(UnitCell& cell, // unitcell class @@ -44,23 +33,41 @@ class DFTU #endif ); - static DFTU* get_instance(); - // calculate the energy correction void cal_energy_correction(const UnitCell& ucell, const int istep); - double get_energy(){return EU;} + + // mohan change the function to static, 20251106 + static double get_energy() + { + return Plus_U::energy_u; + } + + static void set_energy(const double &e) + { + Plus_U::energy_u = e; + } + + static void set_double_energy() // mohan add 20251107 + { + Plus_U::energy_u *= 2.0; + } + void uramping_update(); // update U by uramping bool u_converged(); // check if U is converged - std::vector U = {}; // U (Hubbard parameter U) - std::vector U0; // U0 (target Hubbard parameter U0) - std::vector orbital_corr = {}; // - double uramping; // increase U by uramping, default is -1.0 - int omc; // occupation matrix control - int mixing_dftu; //whether to mix locale + // mohan change these parameters to static, 2025-11-07 + static std::vector U; // U (Hubbard parameter U) + static std::vector U0; // U0 (target Hubbard parameter U0) + static std::vector orbital_corr; // + static double uramping; // increase U by uramping, default is -1.0 + static int omc; // occupation matrix control + static int mixing_dftu; //whether to mix locale - double EU; //+U energy private: + + // mohan change the variable to static, 20251106 + static double energy_u; //+U energy, mohan update 2025-11-06, change this to private + const Parallel_Orbitals* paraV = nullptr; int cal_type = 3; // 1:dftu_tpye=1, dc=1; 2:dftu_type=1, dc=2; 3:dftu_tpye=2, dc=1; 4:dftu_tpye=2, dc=2; @@ -82,10 +89,21 @@ class DFTU // For calculating contribution to Hamiltonian matrices //============================================================= public: - void cal_eff_pot_mat_complex(const int ik, std::complex* eff_pot, const std::vector& isk, const std::complex* sk); - void cal_eff_pot_mat_real(const int ik, double* eff_pot, const std::vector& isk, const double* sk); + void cal_eff_pot_mat_complex(const int ik, + std::complex* eff_pot, + const std::vector& isk, + const std::complex* sk); + + void cal_eff_pot_mat_real(const int ik, + double* eff_pot, + const std::vector& isk, + const double* sk); + void cal_eff_pot_mat_R_double(const int ispin, double* SR, double* HR); - void cal_eff_pot_mat_R_complex_double(const int ispin, std::complex* SR, std::complex* HR); + + void cal_eff_pot_mat_R_complex_double(const int ispin, + std::complex* SR, + std::complex* HR); #endif //============================================================= @@ -95,13 +113,26 @@ class DFTU //============================================================= public: /// interface for PW base - /// calculate the local occupation number matrix for PW based wave functions - void cal_occ_pw(const int iter, const void* psi_in, const ModuleBase::matrix& wg_in, const UnitCell& cell, const double& mixing_beta); + /// calculate the local occupation number matrix for PW based wave functions + void cal_occ_pw(const int iter, + const void* psi_in, + const ModuleBase::matrix& wg_in, + const UnitCell& cell, + const double& mixing_beta); + /// calculate the local DFT+U effective potential matrix for PW base. void cal_VU_pot_pw(const int spin); + /// get effective potential matrix for PW base - const std::complex* get_eff_pot_pw(const int iat) const { return &(eff_pot_pw[this->eff_pot_pw_index[iat]]); } - int get_size_eff_pot_pw() const { return eff_pot_pw.size(); } + const std::complex* get_eff_pot_pw(const int iat) const + { + return &(eff_pot_pw[this->eff_pot_pw_index[iat]]); + } + + int get_size_eff_pot_pw() const + { + return eff_pot_pw.size(); + } #ifdef __LCAO // calculate the local occupation number matrix @@ -111,6 +142,7 @@ class DFTU const K_Vectors& kv, const double& mixing_beta, hamilt::Hamilt>* p_ham); + void cal_occup_m_gamma(const int iter, const UnitCell& ucell, const std::vector>& dm_gamma, @@ -122,6 +154,7 @@ class DFTU bool initialed_locale = false; private: + void copy_locale(const UnitCell& ucell); void zero_locale(const UnitCell& ucell); void mix_locale(const UnitCell& ucell,const double& mixing_beta); @@ -129,12 +162,13 @@ class DFTU std::vector> eff_pot_pw; std::vector eff_pot_pw_index; -public: - // local occupancy matrix of the correlated subspace + public: + // local occupancy matrix of the correlated subspace // locale: the out put local occupation number matrix of correlated electrons in the current electronic step // locale_save: the input local occupation number matrix of correlated electrons in the current electronic step std::vector>>> locale; // locale[iat][l][n][spin](m1,m2) std::vector>>> locale_save; // locale_save[iat][l][n][spin](m1,m2) + #ifdef __LCAO private: //============================================================= @@ -200,8 +234,9 @@ class DFTU public: void force_stress(const UnitCell& ucell, const Grid_Driver& gd, - const elecstate::ElecState* pelec, - const Parallel_Orbitals& pv, + std::vector>* dmk_d, // mohan modify 2025-11-02 + std::vector>>* dmk_c, // dmat.get_dm()->get_DMK_vector(); + const Parallel_Orbitals& pv, ForceStressArrays& fsr, ModuleBase::matrix& force_dftu, ModuleBase::matrix& stress_dftu, @@ -266,7 +301,7 @@ class DFTU //============================================================= public: - bool Yukawa; // 1:use Yukawa potential; 0: do not use Yukawa potential + static bool Yukawa; // 1:use Yukawa potential; 0: do not use Yukawa potential void cal_slater_UJ(const UnitCell& ucell, double** rho, const int& nrxx); private: @@ -303,6 +338,7 @@ class DFTU #endif }; + #ifdef __LCAO template void dftu_cal_occup_m(const int iter, @@ -310,13 +346,9 @@ void dftu_cal_occup_m(const int iter, const std::vector>& dm, const K_Vectors& kv, const double& mixing_beta, - hamilt::Hamilt* p_ham); + hamilt::Hamilt* p_ham, + Plus_U &dftu); #endif -} // namespace ModuleDFTU -namespace GlobalC -{ - extern ModuleDFTU::DFTU dftu; -} #endif diff --git a/source/source_lcao/module_dftu/dftu_folding.cpp b/source/source_lcao/module_dftu/dftu_folding.cpp index 26e70d0d55..cba6b33991 100644 --- a/source/source_lcao/module_dftu/dftu_folding.cpp +++ b/source/source_lcao/module_dftu/dftu_folding.cpp @@ -2,16 +2,12 @@ #include "dftu.h" #include "source_base/timer.h" #include "source_io/module_parameter/parameter.h" -#include "source_pw/module_pwdft/global.h" #include "source_cell/module_neighbor/sltk_grid_driver.h" #include "source_lcao/hamilt_lcao.h" #include "source_lcao/module_hcontainer/hcontainer.h" #include "source_lcao/module_hcontainer/hcontainer_funcs.h" -namespace ModuleDFTU -{ - -void DFTU::fold_dSR_gamma(const UnitCell& ucell, +void Plus_U::fold_dSR_gamma(const UnitCell& ucell, const Parallel_Orbitals& pv, const Grid_Driver* gd, double* dsloc_x, @@ -22,7 +18,7 @@ void DFTU::fold_dSR_gamma(const UnitCell& ucell, const int dim2, double* dSR_gamma) { - ModuleBase::TITLE("DFTU", "fold_dSR_gamma"); + ModuleBase::TITLE("Plus_U", "fold_dSR_gamma"); ModuleBase::GlobalFunc::ZEROS(dSR_gamma, pv.nloc); @@ -125,7 +121,7 @@ void DFTU::fold_dSR_gamma(const UnitCell& ucell, return; } -void DFTU::folding_matrix_k(const UnitCell& ucell, +void Plus_U::folding_matrix_k(const UnitCell& ucell, const Grid_Driver& gd, ForceStressArrays& fsr, const Parallel_Orbitals& pv, @@ -135,11 +131,11 @@ void DFTU::folding_matrix_k(const UnitCell& ucell, std::complex* mat_k, const ModuleBase::Vector3& kvec_d) { - ModuleBase::TITLE("DFTU", "folding_matrix_k"); - ModuleBase::timer::tick("DFTU", "folding_matrix_k"); + ModuleBase::TITLE("Plus_U", "folding_matrix_k"); + ModuleBase::timer::tick("Plus_U", "folding_matrix_k"); ModuleBase::GlobalFunc::ZEROS(mat_k, pv.nloc); - double* mat_ptr; + double* mat_ptr = nullptr; if (dim1 == 1 || dim1 == 4) { mat_ptr = fsr.DSloc_Rx; @@ -250,7 +246,7 @@ void DFTU::folding_matrix_k(const UnitCell& ucell, continue; } - int iic; + int iic = 0; if (ModuleBase::GlobalFunc::IS_COLUMN_MAJOR_KS_SOLVER(PARAM.inp.ks_solver)) { iic = mu + nu * pv.nrow; @@ -277,16 +273,16 @@ void DFTU::folding_matrix_k(const UnitCell& ucell, } // ad } // I1 } // T1 - ModuleBase::timer::tick("DFTU", "folding_matrix_k"); + ModuleBase::timer::tick("Plus_U", "folding_matrix_k"); return; } -void DFTU::folding_matrix_k_new(const int ik, +void Plus_U::folding_matrix_k_new(const int ik, hamilt::Hamilt>* p_ham) { - ModuleBase::TITLE("DFTU", "folding_matrix_k_new"); - ModuleBase::timer::tick("DFTU", "folding_matrix_k_new"); + ModuleBase::TITLE("Plus_U", "folding_matrix_k_new"); + ModuleBase::timer::tick("Plus_U", "folding_matrix_k_new"); int hk_type = 0; if (ModuleBase::GlobalFunc::IS_COLUMN_MAJOR_KS_SOLVER(PARAM.inp.ks_solver)) @@ -313,7 +309,8 @@ void DFTU::folding_matrix_k_new(const int ik, ->updateSk(ik, hk_type); } } + + ModuleBase::timer::tick("Plus_U", "folding_matrix_k_new"); } -} // namespace ModuleDFTU #endif // __LCAO diff --git a/source/source_lcao/module_dftu/dftu_force.cpp b/source/source_lcao/module_dftu/dftu_force.cpp index 5f08b8b545..9cfc8c8f3f 100644 --- a/source/source_lcao/module_dftu/dftu_force.cpp +++ b/source/source_lcao/module_dftu/dftu_force.cpp @@ -1,19 +1,16 @@ -//========================================================== -// Author:Xin Qu #include "source_io/module_parameter/parameter.h" -// DATE : 2019-12-10 -//========================================================== + #ifdef __LCAO #include "dftu.h" #include "source_base/constants.h" #include "source_base/global_function.h" #include "source_base/inverse_matrix.h" +#include "source_base/module_external/scalapack_connector.h" #include "source_base/parallel_reduce.h" #include "source_base/timer.h" #include "source_estate/elecstate_lcao.h" #include "source_estate/magnetism.h" #include "source_estate/module_charge/charge.h" -#include "source_pw/module_pwdft/global.h" #include #include @@ -24,65 +21,19 @@ #include #include -extern "C" -{ - // I'm not sure what's happenig here, but the interface in scalapack_connecter.h - // does not seem to work, so I'll use this one here - void pzgemm_(const char* transa, - const char* transb, - const int* M, - const int* N, - const int* K, - const std::complex* alpha, - const std::complex* A, - const int* IA, - const int* JA, - const int* DESCA, - const std::complex* B, - const int* IB, - const int* JB, - const int* DESCB, - const std::complex* beta, - std::complex* C, - const int* IC, - const int* JC, - const int* DESCC); - - void pdgemm_(const char* transa, - const char* transb, - const int* M, - const int* N, - const int* K, - const double* alpha, - const double* A, - const int* IA, - const int* JA, - const int* DESCA, - const double* B, - const int* IB, - const int* JB, - const int* DESCB, - const double* beta, - double* C, - const int* IC, - const int* JC, - const int* DESCC); -} - -namespace ModuleDFTU -{ -void DFTU::force_stress(const UnitCell& ucell, +void Plus_U::force_stress(const UnitCell& ucell, const Grid_Driver& gd, - const elecstate::ElecState* pelec, + std::vector>* dmk_d, // mohan modify 2025-11-02 + std::vector>>* dmk_c, // dmat.get_dm()->get_DMK_vector(); const Parallel_Orbitals& pv, ForceStressArrays& fsr, // mohan add 2024-06-16 ModuleBase::matrix& force_dftu, ModuleBase::matrix& stress_dftu, const K_Vectors& kv) { - ModuleBase::TITLE("DFTU", "force_stress"); - ModuleBase::timer::tick("DFTU", "force_stress"); + ModuleBase::TITLE("Plus_U", "force_stress"); + ModuleBase::timer::tick("Plus_U", "force_stress"); const int nlocal = PARAM.globalv.nlocal; @@ -114,29 +65,12 @@ void DFTU::force_stress(const UnitCell& ucell, this->cal_VU_pot_mat_real(spin, false, VU); - const std::vector>& dmk - = dynamic_cast*>(pelec)->get_DM()->get_DMK_vector(); - #ifdef __MPI - pdgemm_(&transT, - &transN, - &nlocal, - &nlocal, - &nlocal, - &alpha, - dmk[spin].data(), - &one_int, - &one_int, - pv.desc, - VU, - &one_int, - &one_int, - pv.desc, - &beta, - &rho_VU[0], - &one_int, - &one_int, - pv.desc); + ScalapackConnector::gemm(transT, transN, nlocal, nlocal, nlocal, + alpha, (*dmk_d)[spin].data(), 1, 1, + pv.desc, VU, 1, 1, + pv.desc, beta, &rho_VU[0], + 1, 1, pv.desc); #endif delete[] VU; @@ -178,31 +112,12 @@ void DFTU::force_stress(const UnitCell& ucell, this->cal_VU_pot_mat_complex(spin, false, VU); - const std::vector>>& dmk - = dynamic_cast>*>(pelec) - ->get_DM() - ->get_DMK_vector(); #ifdef __MPI - pzgemm_(&transT, - &transN, - &nlocal, - &nlocal, - &nlocal, - &alpha, - dmk[ik].data(), - &one_int, - &one_int, - pv.desc, - VU, - &one_int, - &one_int, - pv.desc, - &beta, - &rho_VU[0], - &one_int, - &one_int, - pv.desc); + ScalapackConnector::gemm(transT, transN, nlocal, nlocal, nlocal, + alpha, (*dmk_c)[ik].data(), one_int, one_int, + pv.desc, VU, one_int, one_int, pv.desc, beta, + &rho_VU[0], one_int, one_int, pv.desc); #endif delete[] VU; @@ -244,12 +159,12 @@ void DFTU::force_stress(const UnitCell& ucell, } } } - ModuleBase::timer::tick("DFTU", "force_stress"); + ModuleBase::timer::tick("Plus_U", "force_stress"); return; } -void DFTU::cal_force_k(const UnitCell& ucell, +void Plus_U::cal_force_k(const UnitCell& ucell, const Grid_Driver& gd, ForceStressArrays& fsr, const Parallel_Orbitals& pv, @@ -258,8 +173,8 @@ void DFTU::cal_force_k(const UnitCell& ucell, ModuleBase::matrix& force_dftu, const ModuleBase::Vector3& kvec_d) { - ModuleBase::TITLE("DFTU", "cal_force_k"); - ModuleBase::timer::tick("DFTU", "cal_force_k"); + ModuleBase::TITLE("Plus_U", "cal_force_k"); + ModuleBase::timer::tick("Plus_U", "cal_force_k"); const char transN = 'N'; const char transC = 'C'; @@ -275,24 +190,24 @@ void DFTU::cal_force_k(const UnitCell& ucell, this->folding_matrix_k(ucell, gd, fsr, pv, ik, dim + 1, 0, &dSm_k[0], kvec_d); #ifdef __MPI - pzgemm_(&transN, - &transC, - &PARAM.globalv.nlocal, - &PARAM.globalv.nlocal, - &PARAM.globalv.nlocal, - &one, + ScalapackConnector::gemm(transN, + transC, + PARAM.globalv.nlocal, + PARAM.globalv.nlocal, + PARAM.globalv.nlocal, + one, &dSm_k[0], - &one_int, - &one_int, + one_int, + one_int, pv.desc, rho_VU, - &one_int, - &one_int, + one_int, + one_int, pv.desc, - &zero, + zero, &dm_VU_dSm[0], - &one_int, - &one_int, + one_int, + one_int, pv.desc); #endif @@ -313,24 +228,24 @@ void DFTU::cal_force_k(const UnitCell& ucell, } // end ir #ifdef __MPI - pzgemm_(&transN, - &transN, - &PARAM.globalv.nlocal, - &PARAM.globalv.nlocal, - &PARAM.globalv.nlocal, - &one, + ScalapackConnector::gemm(transN, + transN, + PARAM.globalv.nlocal, + PARAM.globalv.nlocal, + PARAM.globalv.nlocal, + one, &dSm_k[0], - &one_int, - &one_int, + one_int, + one_int, pv.desc, rho_VU, - &one_int, - &one_int, + one_int, + one_int, pv.desc, - &zero, + zero, &dm_VU_dSm[0], - &one_int, - &one_int, + one_int, + one_int, pv.desc); #endif @@ -374,12 +289,12 @@ void DFTU::cal_force_k(const UnitCell& ucell, } // ia } // it } // end dim - ModuleBase::timer::tick("DFTU", "cal_force_k"); + ModuleBase::timer::tick("Plus_U", "cal_force_k"); return; } -void DFTU::cal_stress_k(const UnitCell& ucell, +void Plus_U::cal_stress_k(const UnitCell& ucell, const Grid_Driver& gd, ForceStressArrays& fsr, const Parallel_Orbitals& pv, @@ -388,8 +303,8 @@ void DFTU::cal_stress_k(const UnitCell& ucell, ModuleBase::matrix& stress_dftu, const ModuleBase::Vector3& kvec_d) { - ModuleBase::TITLE("DFTU", "cal_stress_k"); - ModuleBase::timer::tick("DFTU", "cal_stress_k"); + ModuleBase::TITLE("Plus_U", "cal_stress_k"); + ModuleBase::timer::tick("Plus_U", "cal_stress_k"); const int nlocal = PARAM.globalv.nlocal; @@ -409,24 +324,24 @@ void DFTU::cal_stress_k(const UnitCell& ucell, this->folding_matrix_k(ucell, gd, fsr, pv, ik, dim1 + 4, dim2, &dSR_k[0], kvec_d); #ifdef __MPI - pzgemm_(&transN, - &transN, - &nlocal, - &nlocal, - &nlocal, - &minus_half, + ScalapackConnector::gemm(transN, + transN, + nlocal, + nlocal, + nlocal, + minus_half, rho_VU, - &one_int, - &one_int, + one_int, + one_int, pv.desc, &dSR_k[0], - &one_int, - &one_int, + one_int, + one_int, pv.desc, - &zero, + zero, &dm_VU_sover[0], - &one_int, - &one_int, + one_int, + one_int, pv.desc); #endif @@ -445,12 +360,12 @@ void DFTU::cal_stress_k(const UnitCell& ucell, } // end dim2 } // end dim1 - ModuleBase::timer::tick("DFTU", "cal_stress_k"); + ModuleBase::timer::tick("Plus_U", "cal_stress_k"); return; } -void DFTU::cal_force_gamma(const UnitCell& ucell, +void Plus_U::cal_force_gamma(const UnitCell& ucell, const double* rho_VU, const Parallel_Orbitals& pv, double* dsloc_x, @@ -458,8 +373,8 @@ void DFTU::cal_force_gamma(const UnitCell& ucell, double* dsloc_z, ModuleBase::matrix& force_dftu) { - ModuleBase::TITLE("DFTU", "cal_force_gamma"); - ModuleBase::timer::tick("DFTU", "cal_force_gamma"); + ModuleBase::TITLE("Plus_U", "cal_force_gamma"); + ModuleBase::timer::tick("Plus_U", "cal_force_gamma"); const char transN = 'N', transT = 'T'; const int one_int = 1; const double one = 1.0, zero = 0.0, minus_one = -1.0; @@ -468,7 +383,7 @@ void DFTU::cal_force_gamma(const UnitCell& ucell, for (int dim = 0; dim < 3; dim++) { - double* tmp_ptr; + double* tmp_ptr = nullptr; if (dim == 0) { tmp_ptr = dsloc_x; @@ -483,24 +398,24 @@ void DFTU::cal_force_gamma(const UnitCell& ucell, } #ifdef __MPI - pdgemm_(&transN, - &transT, - &PARAM.globalv.nlocal, - &PARAM.globalv.nlocal, - &PARAM.globalv.nlocal, - &one, + ScalapackConnector::gemm(transN, + transT, + PARAM.globalv.nlocal, + PARAM.globalv.nlocal, + PARAM.globalv.nlocal, + one, tmp_ptr, - &one_int, - &one_int, + 1, + 1, pv.desc, rho_VU, - &one_int, - &one_int, + 1, + 1, pv.desc, - &zero, + zero, &dm_VU_dSm[0], - &one_int, - &one_int, + 1, + 1, pv.desc); #endif @@ -521,24 +436,24 @@ void DFTU::cal_force_gamma(const UnitCell& ucell, } // end ir #ifdef __MPI - pdgemm_(&transN, - &transT, - &PARAM.globalv.nlocal, - &PARAM.globalv.nlocal, - &PARAM.globalv.nlocal, - &one, + ScalapackConnector::gemm(transN, + transT, + PARAM.globalv.nlocal, + PARAM.globalv.nlocal, + PARAM.globalv.nlocal, + one, tmp_ptr, - &one_int, - &one_int, + 1, + 1, pv.desc, rho_VU, - &one_int, - &one_int, + 1, + 1, pv.desc, - &zero, + zero, &dm_VU_dSm[0], - &one_int, - &one_int, + 1, + 1, pv.desc); #endif @@ -585,12 +500,12 @@ void DFTU::cal_force_gamma(const UnitCell& ucell, } // it } // end dim - ModuleBase::timer::tick("DFTU", "cal_force_gamma"); + ModuleBase::timer::tick("Plus_U", "cal_force_gamma"); return; } -void DFTU::cal_stress_gamma(const UnitCell& ucell, +void Plus_U::cal_stress_gamma(const UnitCell& ucell, const Parallel_Orbitals& pv, const Grid_Driver* gd, double* dsloc_x, @@ -600,8 +515,8 @@ void DFTU::cal_stress_gamma(const UnitCell& ucell, const double* rho_VU, ModuleBase::matrix& stress_dftu) { - ModuleBase::TITLE("DFTU", "cal_stress_gamma"); - ModuleBase::timer::tick("DFTU", "cal_stress_gamma"); + ModuleBase::TITLE("Plus_U", "cal_stress_gamma"); + ModuleBase::timer::tick("Plus_U", "cal_stress_gamma"); const char transN = 'N'; const int one_int = 1; @@ -621,24 +536,24 @@ void DFTU::cal_stress_gamma(const UnitCell& ucell, this->fold_dSR_gamma(ucell, pv, gd, dsloc_x, dsloc_y, dsloc_z, dh_r, dim1, dim2, &dSR_gamma[0]); #ifdef __MPI - pdgemm_(&transN, - &transN, - &nlocal, - &nlocal, - &nlocal, - &minus_half, + ScalapackConnector::gemm(transN, + transN, + nlocal, + nlocal, + nlocal, + minus_half, rho_VU, - &one_int, - &one_int, + 1, + 1, pv.desc, &dSR_gamma[0], - &one_int, - &one_int, + 1, + 1, pv.desc, - &zero, + zero, &dm_VU_sover[0], - &one_int, - &one_int, + 1, + 1, pv.desc); #endif @@ -658,8 +573,7 @@ void DFTU::cal_stress_gamma(const UnitCell& ucell, } // end dim2 } // end dim1 - ModuleBase::timer::tick("DFTU", "cal_stress_gamma"); + ModuleBase::timer::tick("Plus_U", "cal_stress_gamma"); return; } -} // namespace ModuleDFTU #endif diff --git a/source/source_lcao/module_dftu/dftu_hamilt.cpp b/source/source_lcao/module_dftu/dftu_hamilt.cpp index 9ba7fe1b14..6da3b584a1 100644 --- a/source/source_lcao/module_dftu/dftu_hamilt.cpp +++ b/source/source_lcao/module_dftu/dftu_hamilt.cpp @@ -2,22 +2,22 @@ #include "source_base/module_external/scalapack_connector.h" #include "source_io/module_parameter/parameter.h" #include "source_base/timer.h" -#include "source_pw/module_pwdft/global.h" -namespace ModuleDFTU -{ #ifdef __LCAO -void DFTU::cal_eff_pot_mat_complex(const int ik, std::complex* eff_pot, const std::vector& isk, const std::complex* sk) +void Plus_U::cal_eff_pot_mat_complex(const int ik, + std::complex* eff_pot, + const std::vector& isk, + const std::complex* sk) { - ModuleBase::TITLE("DFTU", "cal_eff_pot_mat"); - ModuleBase::timer::tick("DFTU", "cal_eff_pot_mat"); + ModuleBase::TITLE("Plus_U", "cal_eff_pot_c"); if (!this->initialed_locale) { - ModuleBase::timer::tick("DFTU", "cal_eff_pot_mat"); return; } + ModuleBase::timer::tick("Plus_U", "cal_eff_pot_c"); + int spin = isk[ik]; ModuleBase::GlobalFunc::ZEROS(eff_pot, this->paraV->nloc); @@ -35,17 +35,19 @@ void DFTU::cal_eff_pot_mat_complex(const int ik, std::complex* eff_pot, this->cal_VU_pot_mat_complex(spin, true, &VU[0]); #ifdef __MPI - pzgemm_(&transN, &transN, - &PARAM.globalv.nlocal, &PARAM.globalv.nlocal, &PARAM.globalv.nlocal, - &half, - ModuleBase::GlobalFunc::VECTOR_TO_PTR(VU), &one_int, &one_int, this->paraV->desc, - sk, &one_int, &one_int, this->paraV->desc, - &zero, - eff_pot, &one_int, &one_int, this->paraV->desc); + ScalapackConnector::gemm(transN, transN, + PARAM.globalv.nlocal, PARAM.globalv.nlocal, PARAM.globalv.nlocal, + half, + ModuleBase::GlobalFunc::VECTOR_TO_PTR(VU), one_int, one_int, this->paraV->desc, + sk, one_int, one_int, this->paraV->desc, + zero, + eff_pot, one_int, one_int, this->paraV->desc); #endif - for (int irc = 0; irc < this->paraV->nloc; irc++) - VU[irc] = eff_pot[irc]; + for (int irc = 0; irc < this->paraV->nloc; irc++) + { + VU[irc] = eff_pot[irc]; + } #ifdef __MPI pztranc_(&PARAM.globalv.nlocal, &PARAM.globalv.nlocal, @@ -55,19 +57,18 @@ void DFTU::cal_eff_pot_mat_complex(const int ik, std::complex* eff_pot, eff_pot, &one_int, &one_int, this->paraV->desc); #endif - ModuleBase::timer::tick("DFTU", "cal_eff_pot_mat"); + ModuleBase::timer::tick("Plus_U", "cal_eff_pot_c"); return; } -void DFTU::cal_eff_pot_mat_real(const int ik, double* eff_pot, const std::vector& isk, const double* sk) +void Plus_U::cal_eff_pot_mat_real(const int ik, double* eff_pot, const std::vector& isk, const double* sk) { - ModuleBase::TITLE("DFTU", "cal_eff_pot_mat"); - ModuleBase::timer::tick("DFTU", "cal_eff_pot_mat"); + ModuleBase::TITLE("Plus_U", "cal_eff_pot_r"); if (!this->initialed_locale) { - ModuleBase::timer::tick("DFTU", "cal_eff_pot_mat"); return; } + ModuleBase::timer::tick("Plus_U", "cal_eff_pot_r"); int spin = isk[ik]; @@ -84,13 +85,13 @@ void DFTU::cal_eff_pot_mat_real(const int ik, double* eff_pot, const std::vector this->cal_VU_pot_mat_real(spin, 1, &VU[0]); #ifdef __MPI - pdgemm_(&transN, &transN, - &PARAM.globalv.nlocal, &PARAM.globalv.nlocal, &PARAM.globalv.nlocal, - &half, - ModuleBase::GlobalFunc::VECTOR_TO_PTR(VU), &one_int, &one_int, this->paraV->desc, - sk, &one_int, &one_int, this->paraV->desc, - &beta, - eff_pot, &one_int, &one_int, this->paraV->desc); + ScalapackConnector::gemm(transN, transN, + PARAM.globalv.nlocal, PARAM.globalv.nlocal, PARAM.globalv.nlocal, + half, + ModuleBase::GlobalFunc::VECTOR_TO_PTR(VU), 1, 1, this->paraV->desc, + sk, 1, 1, this->paraV->desc, + beta, + eff_pot, 1, 1, this->paraV->desc); #endif for (int irc = 0; irc < this->paraV->nloc; irc++) @@ -104,11 +105,11 @@ void DFTU::cal_eff_pot_mat_real(const int ik, double* eff_pot, const std::vector eff_pot, &one_int, &one_int, const_cast(this->paraV->desc)); #endif - ModuleBase::timer::tick("DFTU", "cal_eff_pot_mat"); + ModuleBase::timer::tick("Plus_U", "cal_eff_pot_r"); return; } -void DFTU::cal_eff_pot_mat_R_double(const int ispin, double* SR, double* HR) +void Plus_U::cal_eff_pot_mat_R_double(const int ispin, double* SR, double* HR) { const char transN = 'N', transT = 'T'; const int one_int = 1; @@ -118,27 +119,27 @@ void DFTU::cal_eff_pot_mat_R_double(const int ispin, double* SR, double* HR) this->cal_VU_pot_mat_real(ispin, 1, &VU[0]); #ifdef __MPI - pdgemm_(&transN, &transN, - &PARAM.globalv.nlocal, &PARAM.globalv.nlocal, &PARAM.globalv.nlocal, - &half, - ModuleBase::GlobalFunc::VECTOR_TO_PTR(VU), &one_int, &one_int, this->paraV->desc, - SR, &one_int, &one_int, this->paraV->desc, - &beta, - HR, &one_int, &one_int, this->paraV->desc); - - pdgemm_(&transN, &transN, - &PARAM.globalv.nlocal, &PARAM.globalv.nlocal, &PARAM.globalv.nlocal, - &half, - SR, &one_int, &one_int, this->paraV->desc, - ModuleBase::GlobalFunc::VECTOR_TO_PTR(VU), &one_int, &one_int, this->paraV->desc, - &one, - HR, &one_int, &one_int, this->paraV->desc); + ScalapackConnector::gemm(transN, transN, + PARAM.globalv.nlocal, PARAM.globalv.nlocal, PARAM.globalv.nlocal, + half, + ModuleBase::GlobalFunc::VECTOR_TO_PTR(VU), 1, 1, this->paraV->desc, + SR, 1, 1, this->paraV->desc, + beta, + HR, 1, 1, this->paraV->desc); + + ScalapackConnector::gemm(transN, transN, + PARAM.globalv.nlocal, PARAM.globalv.nlocal, PARAM.globalv.nlocal, + half, + SR, 1, 1, this->paraV->desc, + ModuleBase::GlobalFunc::VECTOR_TO_PTR(VU), 1, 1, this->paraV->desc, + one, + HR, 1, 1, this->paraV->desc); #endif return; } -void DFTU::cal_eff_pot_mat_R_complex_double(const int ispin, std::complex* SR, std::complex* HR) +void Plus_U::cal_eff_pot_mat_R_complex_double(const int ispin, std::complex* SR, std::complex* HR) { const char transN = 'N', transT = 'T'; const int one_int = 1; @@ -148,25 +149,24 @@ void DFTU::cal_eff_pot_mat_R_complex_double(const int ispin, std::complexcal_VU_pot_mat_complex(ispin, 1, &VU[0]); #ifdef __MPI - pzgemm_(&transN, &transN, - &PARAM.globalv.nlocal, &PARAM.globalv.nlocal, &PARAM.globalv.nlocal, - &half, - ModuleBase::GlobalFunc::VECTOR_TO_PTR(VU), &one_int, &one_int, this->paraV->desc, - SR, &one_int, &one_int, this->paraV->desc, - &zero, - HR, &one_int, &one_int, this->paraV->desc); - - pzgemm_(&transN, &transN, - &PARAM.globalv.nlocal, &PARAM.globalv.nlocal, &PARAM.globalv.nlocal, - &half, - SR, &one_int, &one_int, this->paraV->desc, - ModuleBase::GlobalFunc::VECTOR_TO_PTR(VU), &one_int, &one_int, this->paraV->desc, - &one, - HR, &one_int, &one_int, this->paraV->desc); + ScalapackConnector::gemm(transN, transN, + PARAM.globalv.nlocal, PARAM.globalv.nlocal, PARAM.globalv.nlocal, + half, + ModuleBase::GlobalFunc::VECTOR_TO_PTR(VU), one_int, one_int, this->paraV->desc, + SR, one_int, one_int, this->paraV->desc, + zero, + HR, one_int, one_int, this->paraV->desc); + + ScalapackConnector::gemm(transN, transN, + PARAM.globalv.nlocal, PARAM.globalv.nlocal, PARAM.globalv.nlocal, + half, + SR, one_int, one_int, this->paraV->desc, + ModuleBase::GlobalFunc::VECTOR_TO_PTR(VU), one_int, one_int, this->paraV->desc, + one, + HR, one_int, one_int, this->paraV->desc); #endif return; } #endif -} \ No newline at end of file diff --git a/source/source_lcao/module_dftu/dftu_io.cpp b/source/source_lcao/module_dftu/dftu_io.cpp index fc9d2a2d10..737c1c590a 100644 --- a/source/source_lcao/module_dftu/dftu_io.cpp +++ b/source/source_lcao/module_dftu/dftu_io.cpp @@ -1,14 +1,12 @@ #include "dftu.h" #include "source_base/timer.h" #include "source_io/module_parameter/parameter.h" -#include "source_pw/module_pwdft/global.h" +#include -namespace ModuleDFTU -{ -void DFTU::output(const UnitCell &ucell) +void Plus_U::output(const UnitCell &ucell) { - ModuleBase::TITLE("DFTU", "output"); + ModuleBase::TITLE("Plus_U", "output"); GlobalV::ofs_running << "//=========================L(S)DA+U===========================//" << std::endl; @@ -22,9 +20,10 @@ void DFTU::output(const UnitCell &ucell) if (L >= orbital_corr[T] && orbital_corr[T] != -1) { - if (L != orbital_corr[T]) { - continue; -} + if (L != orbital_corr[T]) + { + continue; + } if (!Yukawa) { @@ -35,10 +34,11 @@ void DFTU::output(const UnitCell &ucell) { for (int n = 0; n < N; n++) { - if (n != 0) { - continue; -} - double Ueff = (this->U_Yukawa[T][L][n] - this->J_Yukawa[T][L][n]) * ModuleBase::Ry_to_eV; + if (n != 0) + { + continue; + } + double Ueff = (this->U_Yukawa[T][L][n] - this->J_Yukawa[T][L][n]) * ModuleBase::Ry_to_eV; GlobalV::ofs_running << "atom_type=" << T << " L=" << L << " chi=" << n << " U=" << this->U_Yukawa[T][L][n] * ModuleBase::Ry_to_eV << "eV " << "J=" << this->J_Yukawa[T][L][n] * ModuleBase::Ry_to_eV << "eV" @@ -61,7 +61,7 @@ void DFTU::output(const UnitCell &ucell) } } if(!ofdftu){ - std::cout << "DFTU::write_occup_m. Can't create file onsite.dm!" << std::endl; + std::cout << "Plus_U::write_occup_m. Can't create file onsite.dm!" << std::endl; exit(0); } this->write_occup_m(ucell,ofdftu); @@ -73,21 +73,24 @@ void DFTU::output(const UnitCell &ucell) // define the function calculate the eigenvalues of a matrix std::vector CalculateEigenvalues(std::vector>& A, int n); -void DFTU::write_occup_m(const UnitCell& ucell, +void Plus_U::write_occup_m(const UnitCell& ucell, std::ofstream &ofs, bool diag) { - ModuleBase::TITLE("DFTU", "write_occup_m"); + ModuleBase::TITLE("Plus_U", "write_occup_m"); - if(GlobalV::MY_RANK != 0) { return; -} + if(GlobalV::MY_RANK != 0) + { + return; + } for (int T = 0; T < ucell.ntype; T++) { - if (orbital_corr[T] == -1) { - continue; -} - const int NL = ucell.atoms[T].nwl + 1; + if (orbital_corr[T] == -1) + { + continue; + } + const int NL = ucell.atoms[T].nwl + 1; const int LC = orbital_corr[T]; for (int I = 0; I < ucell.atoms[T].na; I++) @@ -98,9 +101,10 @@ void DFTU::write_occup_m(const UnitCell& ucell, for (int l = 0; l < NL; l++) { - if (l != orbital_corr[T]) { - continue; -} + if (l != orbital_corr[T]) + { + continue; + } const int N = ucell.atoms[T].l_nchi[l]; ofs << "L" @@ -109,9 +113,10 @@ void DFTU::write_occup_m(const UnitCell& ucell, for (int n = 0; n < N; n++) { // if(!Yukawa && n!=0) continue; - if (n != 0) { - continue; -} + if (n != 0) + { + continue; + } ofs << "zeta" << " " << n << std::endl; @@ -158,7 +163,8 @@ void DFTU::write_occup_m(const UnitCell& ucell, } if(diag) { - ofs << std::setw(12) << std::setprecision(8) << std::fixed<< "atomic mag: "< 0) { std::cout - << "DFTU::read_occup_m. Can not find the file initial_onsite.dm . Please check your initial_onsite.dm" + << "Plus_U::read_occup_m. Can not find the file initial_onsite.dm . Please check your initial_onsite.dm" << std::endl; } else { if (PARAM.inp.init_chg == "file") { - std::cout << "DFTU::read_occup_m. Can not find the file onsite.dm . Please do scf calculation first" + std::cout << "Plus_U::read_occup_m. Can not find the file onsite.dm . Please do scf calculation first" << std::endl; } } @@ -257,16 +267,21 @@ void DFTU::read_occup_m(const UnitCell& ucell, char word[10]; - int T, iat, spin, L, zeta; + int T=0; + int iat=0; + int spin=0; + int L=0; + int zeta=0; ifdftu.rdstate(); while (ifdftu.good()) { ifdftu >> word; - if (ifdftu.eof()) { - break; -} + if (ifdftu.eof()) + { + break; + } if (strcmp("atoms", word) == 0) { @@ -279,9 +294,10 @@ void DFTU::read_occup_m(const UnitCell& ucell, for (int l = 0; l < NL; l++) { - if (l != orbital_corr[T]) { - continue; -} + if (l != orbital_corr[T]) + { + continue; + } ifdftu >> word; @@ -294,9 +310,10 @@ void DFTU::read_occup_m(const UnitCell& ucell, for (int n = 0; n < N; n++) { // if(!Yukawa && n!=0) continue; - if (n != 0) { - continue; -} + if (n != 0) + { + continue; + } ifdftu >> word; if (strcmp("zeta", word) == 0) @@ -327,7 +344,7 @@ void DFTU::read_occup_m(const UnitCell& ucell, } else { - std::cout << "WRONG IN READING LOCAL OCCUPATION NUMBER MATRIX FROM DFTU FILE" + std::cout << "WRONG IN READING LOCAL OCCUPATION NUMBER MATRIX FROM Plus_U FILE" << std::endl; exit(0); } @@ -358,21 +375,21 @@ void DFTU::read_occup_m(const UnitCell& ucell, } else { - std::cout << "WRONG IN READING LOCAL OCCUPATION NUMBER MATRIX FROM DFTU FILE" << std::endl; + std::cout << "WRONG IN READING LOCAL OCCUPATION NUMBER MATRIX FROM Plus_U FILE" << std::endl; exit(0); } } } else { - std::cout << "WRONG IN READING LOCAL OCCUPATION NUMBER MATRIX FROM DFTU FILE" << std::endl; + std::cout << "WRONG IN READING LOCAL OCCUPATION NUMBER MATRIX FROM Plus_U FILE" << std::endl; exit(0); } } } else { - std::cout << "WRONG IN READING LOCAL OCCUPATION NUMBER MATRIX FROM DFTU FILE" << std::endl; + std::cout << "WRONG IN READING LOCAL OCCUPATION NUMBER MATRIX FROM Plus_U FILE" << std::endl; exit(0); } @@ -387,15 +404,16 @@ void DFTU::read_occup_m(const UnitCell& ucell, return; } -void DFTU::local_occup_bcast(const UnitCell& ucell) +void Plus_U::local_occup_bcast(const UnitCell& ucell) { - ModuleBase::TITLE("DFTU", "local_occup_bcast"); + ModuleBase::TITLE("Plus_U", "local_occup_bcast"); for (int T = 0; T < ucell.ntype; T++) { - if (orbital_corr[T] == -1) { - continue; -} + if (orbital_corr[T] == -1) + { + continue; + } for (int I = 0; I < ucell.atoms[T].na; I++) { @@ -404,16 +422,18 @@ void DFTU::local_occup_bcast(const UnitCell& ucell) for (int l = 0; l <= ucell.atoms[T].nwl; l++) { - if (l != orbital_corr[T]) { - continue; -} + if (l != orbital_corr[T]) + { + continue; + } for (int n = 0; n < ucell.atoms[T].l_nchi[l]; n++) { // if(!Yukawa && n!=0) continue; - if (n != 0) { - continue; -} + if (n != 0) + { + continue; + } if (PARAM.inp.nspin == 1 || PARAM.inp.nspin == 2) { @@ -462,10 +482,12 @@ void DFTU::local_occup_bcast(const UnitCell& ucell) return; } -inline void JacobiRotate(std::vector>& A, int p, int q, int n) { - if (std::abs(A[p][q]) > 1e-10) { - double r = (A[q][q] - A[p][p]) / (2.0 * A[p][q]); - double t; +inline void JacobiRotate(std::vector>& A, int p, int q, int n) +{ + if (std::abs(A[p][q]) > 1e-10) + { + double r = (A[q][q] - A[p][p]) / (2.0 * A[p][q]); + double t = 0.0; if (r >= 0) { t = 1.0 / (r + sqrt(1.0 + r * r)); } else { @@ -489,7 +511,8 @@ inline void JacobiRotate(std::vector>& A, int p, int q, int } } -inline std::vector CalculateEigenvalues(std::vector>& A, int n) { +inline std::vector CalculateEigenvalues(std::vector>& A, int n) +{ std::vector eigenvalues(n); while (true) { int p = 0, q = 1; @@ -513,4 +536,3 @@ inline std::vector CalculateEigenvalues(std::vector> } return eigenvalues; } -} // namespace ModuleDFTU \ No newline at end of file diff --git a/source/source_lcao/module_dftu/dftu_occup.cpp b/source/source_lcao/module_dftu/dftu_occup.cpp index 1bc771d42f..d6409e86e5 100644 --- a/source/source_lcao/module_dftu/dftu_occup.cpp +++ b/source/source_lcao/module_dftu/dftu_occup.cpp @@ -1,18 +1,15 @@ #include "dftu.h" #include "source_base/timer.h" #include "source_io/module_parameter/parameter.h" -#include "source_pw/module_pwdft/global.h" #ifdef __LCAO #include "source_lcao/hamilt_lcao.h" #endif #include "source_base/module_external/scalapack_connector.h" -namespace ModuleDFTU +void Plus_U::copy_locale(const UnitCell& ucell) { -void DFTU::copy_locale(const UnitCell& ucell) -{ - ModuleBase::TITLE("DFTU", "copy_locale"); - ModuleBase::timer::tick("DFTU", "copy_locale"); + ModuleBase::TITLE("Plus_U", "copy_locale"); + ModuleBase::timer::tick("Plus_U", "copy_locale"); for (int T = 0; T < ucell.ntype; T++) { @@ -44,13 +41,13 @@ void DFTU::copy_locale(const UnitCell& ucell) } } } - ModuleBase::timer::tick("DFTU", "copy_locale"); + ModuleBase::timer::tick("Plus_U", "copy_locale"); } -void DFTU::zero_locale(const UnitCell& ucell) +void Plus_U::zero_locale(const UnitCell& ucell) { - ModuleBase::TITLE("DFTU", "zero_locale"); - ModuleBase::timer::tick("DFTU", "zero_locale"); + ModuleBase::TITLE("Plus_U", "zero_locale"); + ModuleBase::timer::tick("Plus_U", "zero_locale"); for (int T = 0; T < ucell.ntype; T++) { @@ -82,14 +79,14 @@ void DFTU::zero_locale(const UnitCell& ucell) } } } - ModuleBase::timer::tick("DFTU", "zero_locale"); + ModuleBase::timer::tick("Plus_U", "zero_locale"); } -void DFTU::mix_locale(const UnitCell& ucell, +void Plus_U::mix_locale(const UnitCell& ucell, const double& mixing_beta) { - ModuleBase::TITLE("DFTU", "mix_locale"); - ModuleBase::timer::tick("DFTU", "mix_locale"); + ModuleBase::TITLE("Plus_U", "mix_locale"); + ModuleBase::timer::tick("Plus_U", "mix_locale"); double beta = mixing_beta; @@ -123,20 +120,20 @@ void DFTU::mix_locale(const UnitCell& ucell, } } } - ModuleBase::timer::tick("DFTU", "mix_locale"); + ModuleBase::timer::tick("Plus_U", "mix_locale"); } #ifdef __LCAO -void DFTU::cal_occup_m_k(const int iter, +void Plus_U::cal_occup_m_k(const int iter, const UnitCell& ucell, const std::vector>>& dm_k, const K_Vectors& kv, const double& mixing_beta, hamilt::Hamilt>* p_ham) { - ModuleBase::TITLE("DFTU", "cal_occup_m_k"); - ModuleBase::timer::tick("DFTU", "cal_occup_m_k"); + ModuleBase::TITLE("Plus_U", "cal_occup_m_k"); + ModuleBase::timer::tick("Plus_U", "cal_occup_m_k"); this->copy_locale(ucell); this->zero_locale(ucell); @@ -380,18 +377,18 @@ void DFTU::cal_occup_m_k(const int iter, } this->initialed_locale = true; - ModuleBase::timer::tick("DFTU", "cal_occup_m_k"); + ModuleBase::timer::tick("Plus_U", "cal_occup_m_k"); return; } -void DFTU::cal_occup_m_gamma(const int iter, +void Plus_U::cal_occup_m_gamma(const int iter, const UnitCell &ucell, const std::vector> &dm_gamma, const double& mixing_beta, hamilt::Hamilt* p_ham) { - ModuleBase::TITLE("DFTU", "cal_occup_m_gamma"); - ModuleBase::timer::tick("DFTU", "cal_occup_m_gamma"); + ModuleBase::TITLE("Plus_U", "cal_occup_m_gamma"); + ModuleBase::timer::tick("Plus_U", "cal_occup_m_gamma"); this->copy_locale(ucell); this->zero_locale(ucell); @@ -428,26 +425,6 @@ void DFTU::cal_occup_m_gamma(const int iter, one_int, one_int, &this->paraV->desc[0]); - /*pdgemm_(&transN, - &transT, - &PARAM.globalv.nlocal, - &PARAM.globalv.nlocal, - &PARAM.globalv.nlocal, - &alpha, - s_gamma_pointer, - &one_int, - &one_int, - this->paraV->desc, - dm_gamma[is].data(), - //dm_gamma[is].c, - &one_int, - &one_int, - this->paraV->desc, - &beta, - &srho[0], - &one_int, - &one_int, - this->paraV->desc);*/ #endif for (int it = 0; it < ucell.ntype; it++) @@ -558,8 +535,7 @@ void DFTU::cal_occup_m_gamma(const int iter, } this->initialed_locale = true; - ModuleBase::timer::tick("DFTU", "cal_occup_m_gamma"); + ModuleBase::timer::tick("Plus_U", "cal_occup_m_gamma"); return; } #endif -} // namespace ModuleDFTU diff --git a/source/source_lcao/module_dftu/dftu_pw.cpp b/source/source_lcao/module_dftu/dftu_pw.cpp index 03968cabee..e3107a313a 100644 --- a/source/source_lcao/module_dftu/dftu_pw.cpp +++ b/source/source_lcao/module_dftu/dftu_pw.cpp @@ -5,16 +5,14 @@ #include "source_base/timer.h" -namespace ModuleDFTU -{ -DFTU* DFTU::get_instance() -{ - return &GlobalC::dftu; -} /// calculate occupation matrix for DFT+U -void DFTU::cal_occ_pw(const int iter, const void* psi_in, const ModuleBase::matrix& wg_in, const UnitCell& cell, const double& mixing_beta) +void Plus_U::cal_occ_pw(const int iter, + const void* psi_in, + const ModuleBase::matrix& wg_in, + const UnitCell& cell, + const double& mixing_beta) { - ModuleBase::timer::tick("DFTU", "cal_occ_pw"); + ModuleBase::timer::tick("Plus_U", "cal_occ_pw"); this->copy_locale(cell); this->zero_locale(cell); @@ -137,7 +135,7 @@ void DFTU::cal_occ_pw(const int iter, const void* psi_in, const ModuleBase::matr } #endif - this->EU = 0.0; + Plus_U::energy_u = 0.0; // reduce mag from all k-pools for(int iat = 0; iat < cell.nat; iat++) { @@ -148,7 +146,12 @@ void DFTU::cal_occ_pw(const int iter, const void* psi_in, const ModuleBase::matr continue; } const int size = (2 * target_l + 1) * (2 * target_l + 1); - Parallel_Reduce::reduce_double_allpool(PARAM.inp.kpar, PARAM.globalv.nproc_in_pool, this->locale[iat][target_l][0][0].c, size * PARAM.inp.nspin); + + Parallel_Reduce::reduce_double_allpool(PARAM.inp.kpar, + PARAM.globalv.nproc_in_pool, + this->locale[iat][target_l][0][0].c, + size * PARAM.inp.nspin); + //update effective potential const double u_value = this->U[it]; std::complex* vu_iat = &(this->eff_pot_pw[this->eff_pot_pw_index[iat]]); @@ -157,8 +160,10 @@ void DFTU::cal_occ_pw(const int iter, const void* psi_in, const ModuleBase::matr { for (int m2 = 0; m2 < m_size; m2++) { - vu_iat[m1 * m_size + m2] = u_value * (1.0 * (m1 == m2) - this->locale[iat][target_l][0][0].c[m2 * m_size + m1]); - this->EU += u_value * 0.25 * this->locale[iat][target_l][0][0].c[m2 * m_size + m1] * this->locale[iat][target_l][0][0].c[m1 * m_size + m2]; + vu_iat[m1 * m_size + m2] = u_value * + (1.0 * (m1 == m2) - this->locale[iat][target_l][0][0].c[m2 * m_size + m1]); + Plus_U::energy_u += u_value * 0.25 * this->locale[iat][target_l][0][0].c[m2 * m_size + m1] + * this->locale[iat][target_l][0][0].c[m1 * m_size + m2]; } } for (int is = 1; is < 4; ++is) @@ -168,8 +173,11 @@ void DFTU::cal_occ_pw(const int iter, const void* psi_in, const ModuleBase::matr { for (int m2 = 0; m2 < m_size; m2++) { - vu_iat[start + m1 * m_size + m2] = u_value * (0 - this->locale[iat][target_l][0][0].c[start + m2 * m_size + m1]); - this->EU += u_value * 0.25 * this->locale[iat][target_l][0][0].c[start + m2 * m_size + m1] * this->locale[iat][target_l][0][0].c[start + m1 * m_size + m2]; + vu_iat[start + m1 * m_size + m2] = u_value * + (0 - this->locale[iat][target_l][0][0].c[start + m2 * m_size + m1]); + Plus_U::energy_u += u_value * 0.25 + * this->locale[iat][target_l][0][0].c[start + m2 * m_size + m1] + * this->locale[iat][target_l][0][0].c[start + m1 * m_size + m2]; } } } @@ -201,12 +209,11 @@ void DFTU::cal_occ_pw(const int iter, const void* psi_in, const ModuleBase::matr this->mix_locale(cell, mixing_beta); } // update effective potential - ModuleBase::timer::tick("DFTU", "cal_occ_pw"); + ModuleBase::timer::tick("Plus_U", "cal_occ_pw"); } /// calculate the local DFT+U effective potential matrix for PW base. -void DFTU::cal_VU_pot_pw(const int spin) +void Plus_U::cal_VU_pot_pw(const int spin) { } -} // namespace ModuleDFTU \ No newline at end of file diff --git a/source/source_lcao/module_dftu/dftu_tools.cpp b/source/source_lcao/module_dftu/dftu_tools.cpp index dddb347e71..1ae144a8c2 100644 --- a/source/source_lcao/module_dftu/dftu_tools.cpp +++ b/source/source_lcao/module_dftu/dftu_tools.cpp @@ -1,15 +1,11 @@ #include "dftu.h" #include "source_base/timer.h" #include "source_io/module_parameter/parameter.h" -#include "source_pw/module_pwdft/global.h" - -namespace ModuleDFTU -{ #ifdef __LCAO -void DFTU::cal_VU_pot_mat_complex(const int spin, const bool newlocale, std::complex* VU) +void Plus_U::cal_VU_pot_mat_complex(const int spin, const bool newlocale, std::complex* VU) { - ModuleBase::TITLE("DFTU", "cal_VU_pot_mat_complex"); + ModuleBase::TITLE("Plus_U", "cal_VU_pot_mat_complex"); ModuleBase::GlobalFunc::ZEROS(VU, this->paraV->nloc); for (int it = 0; it < this->ucell->ntype; ++it) @@ -71,9 +67,9 @@ void DFTU::cal_VU_pot_mat_complex(const int spin, const bool newlocale, std::com return; } -void DFTU::cal_VU_pot_mat_real(const int spin, const bool newlocale, double* VU) +void Plus_U::cal_VU_pot_mat_real(const int spin, const bool newlocale, double* VU) { - ModuleBase::TITLE("DFTU", "cal_VU_pot_mat_real"); + ModuleBase::TITLE("Plus_U", "cal_VU_pot_mat_real"); ModuleBase::GlobalFunc::ZEROS(VU, this->paraV->nloc); for (int it = 0; it < this->ucell->ntype; ++it) @@ -136,7 +132,7 @@ void DFTU::cal_VU_pot_mat_real(const int spin, const bool newlocale, double* VU) return; } -double DFTU::get_onebody_eff_pot(const int T, +double Plus_U::get_onebody_eff_pot(const int T, const int iat, const int L, const int N, @@ -145,7 +141,7 @@ double DFTU::get_onebody_eff_pot(const int T, const int m1, const bool newlocale) { - ModuleBase::TITLE("DFTU", "get_onebody_eff_pot"); + ModuleBase::TITLE("Plus_U", "get_onebody_eff_pot"); double VU = 0.0; @@ -213,4 +209,3 @@ double DFTU::get_onebody_eff_pot(const int T, return VU; } #endif -} // namespace ModuleDFTU \ No newline at end of file diff --git a/source/source_lcao/module_dftu/dftu_yukawa.cpp b/source/source_lcao/module_dftu/dftu_yukawa.cpp index 73a9910052..c05e8acfee 100644 --- a/source/source_lcao/module_dftu/dftu_yukawa.cpp +++ b/source/source_lcao/module_dftu/dftu_yukawa.cpp @@ -1,12 +1,7 @@ -//========================================================== -// Author:Xin Qu #ifdef __LCAO #include "source_io/module_parameter/parameter.h" -// DATE : 2019-12-10 -//========================================================== #include "source_base/constants.h" #include "source_base/global_function.h" -#include "source_pw/module_pwdft/global.h" #include "dftu.h" #include @@ -18,12 +13,10 @@ #include #include -namespace ModuleDFTU -{ -void DFTU::cal_yukawa_lambda(double** rho, const int& nrxx) +void Plus_U::cal_yukawa_lambda(double** rho, const int& nrxx) { - ModuleBase::TITLE("DFTU", "cal_yukawa_lambda"); + ModuleBase::TITLE("Plus_U", "cal_yukawa_lambda"); if (PARAM.inp.yukawa_lambda > 0) { @@ -35,8 +28,10 @@ void DFTU::cal_yukawa_lambda(double** rho, const int& nrxx) double sum_rho_lambda = 0.0; for (int is = 0; is < PARAM.inp.nspin; is++) { - if(PARAM.inp.nspin == 4 && is > 0) { continue;// for non-collinear spin case, first spin contains the charge density -} + if(PARAM.inp.nspin == 4 && is > 0) + { + continue;// for non-collinear spin case, first spin contains the charge density + } for (int ir = 0; ir < nrxx; ir++) { double rho_ir = rho[is][ir]; @@ -63,11 +58,11 @@ void DFTU::cal_yukawa_lambda(double** rho, const int& nrxx) return; } -void DFTU::cal_slater_Fk(const UnitCell& ucell, +void Plus_U::cal_slater_Fk(const UnitCell& ucell, const int L, const int T) { - ModuleBase::TITLE("DFTU", "cal_slater_Fk"); + ModuleBase::TITLE("Plus_U", "cal_slater_Fk"); if (Yukawa) { @@ -113,12 +108,13 @@ void DFTU::cal_slater_Fk(const UnitCell& ucell, return; } -void DFTU::cal_slater_UJ(const UnitCell& ucell, double** rho, const int& nrxx) +void Plus_U::cal_slater_UJ(const UnitCell& ucell, double** rho, const int& nrxx) { - ModuleBase::TITLE("DFTU", "cal_slater_UJ"); - if (!Yukawa) { - return; -} + ModuleBase::TITLE("Plus_U", "cal_slater_UJ"); + if (!Yukawa) + { + return; + } this->cal_yukawa_lambda(rho, nrxx); @@ -146,45 +142,36 @@ void DFTU::cal_slater_UJ(const UnitCell& ucell, double** rho, const int& nrxx) if (L >= PARAM.inp.orbital_corr[T] && PARAM.inp.orbital_corr[T] != -1) { - if (L != PARAM.inp.orbital_corr[T]) { - continue; -} - this->cal_slater_Fk(ucell,L, T); + if (L != PARAM.inp.orbital_corr[T]) + { + continue; + } + this->cal_slater_Fk(ucell,L, T); - for (int n = 0; n < N; n++) - { - if (n != 0) { - continue; -} - switch (L) - { - case 1: // p electrons - this->U_Yukawa[T][L][n] = this->Fk[T][L][n][0]; - this->J_Yukawa[T][L][n] = this->Fk[T][L][n][1] / 5.0; - break; - - case 2: // d electrons - this->U_Yukawa[T][L][n] = this->Fk[T][L][n][0]; - this->J_Yukawa[T][L][n] = (this->Fk[T][L][n][1] + this->Fk[T][L][n][2]) / 14.0; - break; - - case 3: // f electrons - if (Yukawa) { - this->U_Yukawa[T][L][n] = this->Fk[T][L][n][0]; -} - this->J_Yukawa[T][L][n] = (286.0 * this->Fk[T][L][n][1] + 195.0 * this->Fk[T][L][n][2] - + 250.0 * this->Fk[T][L][n][3]) - / 6435.0; - break; - } + if( L == 1) + { + this->U_Yukawa[T][L][0] = this->Fk[T][L][0][0]; + this->J_Yukawa[T][L][0] = this->Fk[T][L][0][1] / 5.0; + } + else if( L == 2) + { + this->U_Yukawa[T][L][0] = this->Fk[T][L][0][0]; + this->J_Yukawa[T][L][0] = (this->Fk[T][L][0][1] + this->Fk[T][L][0][2]) / 14.0; + } + else if( L == 3) + { + this->U_Yukawa[T][L][0] = this->Fk[T][L][0][0]; + this->J_Yukawa[T][L][0] = (286.0 * this->Fk[T][L][0][1] + 195.0 * this->Fk[T][L][0][2] + + 250.0 * this->Fk[T][L][0][3]) + / 6435.0; + } - // Hartree to Rydeberg - this->U_Yukawa[T][L][n] *= 2.0; - this->J_Yukawa[T][L][n] *= 2.0; - // update current U with calculated U-J from Slater integrals - this->U[T] = this->U_Yukawa[T][L][n] - this->J_Yukawa[T][L][n]; - } // end n + // Hartree to Rydeberg + this->U_Yukawa[T][L][0] *= 2.0; + this->J_Yukawa[T][L][0] *= 2.0; + // update current U with calculated U-J from Slater integrals + this->U[T] = this->U_Yukawa[T][L][0] - this->J_Yukawa[T][L][0]; } // end if } // end L } // end T @@ -192,9 +179,9 @@ void DFTU::cal_slater_UJ(const UnitCell& ucell, double** rho, const int& nrxx) return; } -double DFTU::spherical_Bessel(const int k, const double r, const double lambda) +double Plus_U::spherical_Bessel(const int k, const double r, const double lambda) { - ModuleBase::TITLE("DFTU", "spherical_Bessel"); + ModuleBase::TITLE("Plus_U", "spherical_Bessel"); double val=0.0; double x = r * lambda; @@ -247,9 +234,9 @@ double DFTU::spherical_Bessel(const int k, const double r, const double lambda) return val; } -double DFTU::spherical_Hankel(const int k, const double r, const double lambda) +double Plus_U::spherical_Hankel(const int k, const double r, const double lambda) { - ModuleBase::TITLE("DFTU", "spherical_Bessel"); + ModuleBase::TITLE("Plus_U", "spherical_Bessel"); double val=0.0; double x = r * lambda; @@ -305,6 +292,4 @@ double DFTU::spherical_Hankel(const int k, const double r, const double lambda) return val; } -} // namespace ModuleDFTU - -#endif \ No newline at end of file +#endif diff --git a/source/source_lcao/module_gint/CMakeLists.txt b/source/source_lcao/module_gint/CMakeLists.txt index 0505957b9c..6969abd7e0 100644 --- a/source/source_lcao/module_gint/CMakeLists.txt +++ b/source/source_lcao/module_gint/CMakeLists.txt @@ -2,103 +2,46 @@ if(ENABLE_LCAO) list(APPEND objects - gint_old.cpp - gint_gamma_env.cpp - gint_gamma_vl.cpp - gint_fvl_old.cpp - gint_rho_old.cpp - gint_tau_old.cpp - gint_vl_old.cpp - gint_k_env.cpp - gint_k_sparse1.cpp - gint_k_pvpr.cpp - gint_k_pvdpr.cpp - gint_tools.cpp - grid_bigcell.cpp - grid_meshball.cpp - grid_meshcell.cpp - grid_meshk.cpp - grid_technique.cpp - gint_force_cpu_interface.cpp - gint_rho_cpu_interface.cpp - gint_vl_cpu_interface.cpp - cal_psir_ylm.cpp - cal_dpsir_ylm.cpp - cal_ddpsir_ylm.cpp - mult_psi_dmr.cpp - init_orb.cpp -) - -if(NOT DEFINED OLD_GINT) - list(APPEND objects - temp_gint/biggrid_info.cpp - temp_gint/big_grid.cpp - temp_gint/divide_info.cpp - temp_gint/gint_atom.cpp - temp_gint/gint_info.cpp - temp_gint/gint.cpp - temp_gint/gint_vl.cpp - temp_gint/gint_vl_metagga.cpp - temp_gint/gint_vl_nspin4.cpp - temp_gint/gint_vl_metagga_nspin4.cpp - temp_gint/gint_rho.cpp - temp_gint/gint_tau.cpp - temp_gint/gint_fvl.cpp - temp_gint/gint_fvl_meta.cpp - temp_gint/gint_env_gamma.cpp - temp_gint/gint_env_k.cpp - temp_gint/gint_dvlocal.cpp - temp_gint/localcell_info.cpp - temp_gint/phi_operator.cpp - temp_gint/set_ddphi.cpp - temp_gint/unitcell_info.cpp - temp_gint/gint_common.cpp - temp_gint/gint_interface.cpp - ) - if(USE_CUDA) - list(APPEND objects - temp_gint/kernel/gint_gpu_vars.cpp - temp_gint/kernel/phi_operator_gpu.cu - temp_gint/kernel/phi_operator_kernel.cu - temp_gint/kernel/set_const_mem.cu - temp_gint/batch_biggrid.cpp - temp_gint/gint_vl_gpu.cpp - temp_gint/gint_rho_gpu.cpp - temp_gint/gint_fvl_gpu.cpp - temp_gint/gint_vl_metagga_gpu.cpp - temp_gint/gint_vl_nspin4_gpu.cpp - temp_gint/gint_vl_metagga_nspin4_gpu.cpp - temp_gint/gint_tau_gpu.cpp - temp_gint/gint_fvl_meta_gpu.cpp - temp_gint/kernel/dgemm_vbatch.cu + biggrid_info.cpp + big_grid.cpp + divide_info.cpp + gint_atom.cpp + gint_info.cpp + gint.cpp + gint_vl.cpp + gint_vl_metagga.cpp + gint_vl_nspin4.cpp + gint_vl_metagga_nspin4.cpp + gint_rho.cpp + gint_tau.cpp + gint_fvl.cpp + gint_fvl_meta.cpp + gint_env_gamma.cpp + gint_env_k.cpp + gint_dvlocal.cpp + localcell_info.cpp + phi_operator.cpp + set_ddphi.cpp + unitcell_info.cpp + gint_common.cpp + gint_interface.cpp ) - endif() -endif() - if(USE_CUDA) list(APPEND objects - gint_gpu_interface.cpp - kernels/cuda/cuda_tools.cu - kernels/cuda/gint_vl.cu - kernels/cuda/gint_rho.cu - kernels/cuda/gint_force.cu - gint_vl_gpu.cu - gint_rho_gpu.cu - gint_force_gpu.cu - kernels/cuda/gemm_selector.cu - kernels/cuda/code_gen_00.cu - kernels/cuda/code_gen_01.cu - kernels/cuda/code_gen_02.cu - kernels/cuda/code_gen_03.cu - kernels/cuda/code_gen_04.cu - kernels/cuda/code_gen_05.cu - kernels/cuda/code_gen_06.cu - kernels/cuda/code_gen_07.cu - kernels/cuda/code_gen_08.cu - kernels/cuda/code_gen_09.cu - gtask_vl.cpp - gtask_rho.cpp - gtask_force.cpp + kernel/gint_gpu_vars.cpp + kernel/phi_operator_gpu.cu + kernel/phi_operator_kernel.cu + kernel/set_const_mem.cu + batch_biggrid.cpp + gint_vl_gpu.cpp + gint_rho_gpu.cpp + gint_fvl_gpu.cpp + gint_vl_metagga_gpu.cpp + gint_vl_nspin4_gpu.cpp + gint_vl_metagga_nspin4_gpu.cpp + gint_tau_gpu.cpp + gint_fvl_meta_gpu.cpp + kernel/dgemm_vbatch.cu ) endif() @@ -112,10 +55,4 @@ if(ENABLE_COVERAGE) add_coverage(gint) endif() -IF (BUILD_TESTING) - if(ENABLE_MPI) - add_subdirectory(test) - endif() -endif() - endif() \ No newline at end of file diff --git a/source/source_lcao/module_gint/temp_gint/batch_biggrid.cpp b/source/source_lcao/module_gint/batch_biggrid.cpp similarity index 100% rename from source/source_lcao/module_gint/temp_gint/batch_biggrid.cpp rename to source/source_lcao/module_gint/batch_biggrid.cpp diff --git a/source/source_lcao/module_gint/temp_gint/batch_biggrid.h b/source/source_lcao/module_gint/batch_biggrid.h similarity index 100% rename from source/source_lcao/module_gint/temp_gint/batch_biggrid.h rename to source/source_lcao/module_gint/batch_biggrid.h diff --git a/source/source_lcao/module_gint/temp_gint/big_grid.cpp b/source/source_lcao/module_gint/big_grid.cpp similarity index 100% rename from source/source_lcao/module_gint/temp_gint/big_grid.cpp rename to source/source_lcao/module_gint/big_grid.cpp diff --git a/source/source_lcao/module_gint/temp_gint/big_grid.h b/source/source_lcao/module_gint/big_grid.h similarity index 100% rename from source/source_lcao/module_gint/temp_gint/big_grid.h rename to source/source_lcao/module_gint/big_grid.h diff --git a/source/source_lcao/module_gint/temp_gint/biggrid_info.cpp b/source/source_lcao/module_gint/biggrid_info.cpp similarity index 88% rename from source/source_lcao/module_gint/temp_gint/biggrid_info.cpp rename to source/source_lcao/module_gint/biggrid_info.cpp index f69a7ef0ec..52d1e9f394 100644 --- a/source/source_lcao/module_gint/temp_gint/biggrid_info.cpp +++ b/source/source_lcao/module_gint/biggrid_info.cpp @@ -1,6 +1,7 @@ #include "biggrid_info.h" #include "gint_helper.h" #include "gint_type.h" +#include "source_base/memory.h" namespace ModuleGint { @@ -44,6 +45,12 @@ BigGridInfo::BigGridInfo( meshgrid_coords_[index_1d] = meshgrid_info_->get_cartesian_coord(mgrid_idx_1Dto3D(index_1d)); } + ModuleBase::Memory::record("BigGridInfo::meshgrid_coords", (long long)nmxyz_ * sizeof(Vec3d), true); + } + + BigGridInfo::~BigGridInfo() + { + ModuleBase::Memory::record("BigGridInfo::meshgrid_coords", -(long long)nmxyz_ * sizeof(Vec3d), true); } Vec3i BigGridInfo::max_ext_bgrid_num(double r) const diff --git a/source/source_lcao/module_gint/temp_gint/biggrid_info.h b/source/source_lcao/module_gint/biggrid_info.h similarity index 99% rename from source/source_lcao/module_gint/temp_gint/biggrid_info.h rename to source/source_lcao/module_gint/biggrid_info.h index c017f87a3d..65fd225240 100644 --- a/source/source_lcao/module_gint/temp_gint/biggrid_info.h +++ b/source/source_lcao/module_gint/biggrid_info.h @@ -21,6 +21,8 @@ class BigGridInfo Vec3d biggrid_vec2, Vec3d biggrid_vec3, int nmx, int nmy, int nmz); + + ~BigGridInfo(); Vec3d get_cartesian_coord(const Vec3d& index_3d) const { return index_3d * biggrid_latvec0_; } Vec3d get_cartesian_coord(const Vec3i& index_3d) const { return index_3d * biggrid_latvec0_; } diff --git a/source/source_lcao/module_gint/cal_ddpsir_ylm.cpp b/source/source_lcao/module_gint/cal_ddpsir_ylm.cpp deleted file mode 100644 index 206c6f95e8..0000000000 --- a/source/source_lcao/module_gint/cal_ddpsir_ylm.cpp +++ /dev/null @@ -1,316 +0,0 @@ -#include "gint_tools.h" -#include "source_base/timer.h" -#include "source_base/ylm.h" -namespace Gint_Tools{ -void cal_ddpsir_ylm( - const Grid_Technique& gt, const int bxyz, - const int na_grid, // number of atoms on this grid - const int grid_index, // 1d index of FFT index (i,j,k) - const double delta_r, // delta_r of the uniform FFT grid - const int* const block_index, // block_index[na_grid+1], count total number of atomis orbitals - const int* const block_size, // block_size[na_grid], number of columns of a band - const bool* const* const cal_flag, // cal_flag[bxyz][na_grid], whether the atom-grid distance is larger than cutoff - double* const* const ddpsir_ylm_xx, double* const* const ddpsir_ylm_xy, double* const* const ddpsir_ylm_xz, - double* const* const ddpsir_ylm_yy, double* const* const ddpsir_ylm_yz, double* const* const ddpsir_ylm_zz) -{ - ModuleBase::timer::tick("Gint_Tools", "cal_ddpsir_ylm"); - const UnitCell& ucell = *gt.ucell; - std::vector it_psi_uniform(gt.nwmax); - std::vector it_dpsi_uniform(gt.nwmax); - std::vector it_d2psi_uniform(gt.nwmax); - std::vector it_psi_nr_uniform(gt.nwmax); - // array to store spherical harmonics and its derivatives - // the first dimension equals 36 because the maximum nwl is 5. - double rly[36]; - ModuleBase::Array_Pool grly(36, 3); - - for (int id = 0; id < na_grid; id++) - { - const int mcell_index = gt.bcell_start[grid_index] + id; - const int imcell = gt.which_bigcell[mcell_index]; - int iat = gt.which_atom[mcell_index]; - const int it = ucell.iat2it[iat]; - const int ia = ucell.iat2ia[iat]; - Atom* atom = &ucell.atoms[it]; - - const double mt[3] = {gt.meshball_positions[imcell][0] - gt.tau_in_bigcell[iat][0], - gt.meshball_positions[imcell][1] - gt.tau_in_bigcell[iat][1], - gt.meshball_positions[imcell][2] - gt.tau_in_bigcell[iat][2]}; - - for (int iw=0; iw< atom->nw; ++iw) - { - if ( atom->iw2_new[iw] ) - { - it_psi_uniform[iw]= gt.psi_u[it*gt.nwmax + iw].data(); - it_dpsi_uniform[iw] = gt.dpsi_u[it*gt.nwmax + iw].data(); - it_psi_nr_uniform[iw]= gt.psi_u[it*gt.nwmax + iw].size(); - } - } - - for (int ib = 0; ib < bxyz; ib++) - { - double* const p_ddpsi_xx = &ddpsir_ylm_xx[ib][block_index[id]]; - double* const p_ddpsi_xy = &ddpsir_ylm_xy[ib][block_index[id]]; - double* const p_ddpsi_xz = &ddpsir_ylm_xz[ib][block_index[id]]; - double* const p_ddpsi_yy = &ddpsir_ylm_yy[ib][block_index[id]]; - double* const p_ddpsi_yz = &ddpsir_ylm_yz[ib][block_index[id]]; - double* const p_ddpsi_zz = &ddpsir_ylm_zz[ib][block_index[id]]; - if (!cal_flag[ib][id]) - { - ModuleBase::GlobalFunc::ZEROS(p_ddpsi_xx, block_size[id]); - ModuleBase::GlobalFunc::ZEROS(p_ddpsi_xy, block_size[id]); - ModuleBase::GlobalFunc::ZEROS(p_ddpsi_xz, block_size[id]); - ModuleBase::GlobalFunc::ZEROS(p_ddpsi_yy, block_size[id]); - ModuleBase::GlobalFunc::ZEROS(p_ddpsi_yz, block_size[id]); - ModuleBase::GlobalFunc::ZEROS(p_ddpsi_zz, block_size[id]); - } - else - { - const double dr[3] - = {// vectors between atom and grid - gt.meshcell_pos[ib][0] + mt[0], gt.meshcell_pos[ib][1] + mt[1], gt.meshcell_pos[ib][2] + mt[2]}; - double distance = std::sqrt(dr[0] * dr[0] + dr[1] * dr[1] + dr[2] * dr[2]); - - // for some unknown reason, the finite difference between dpsi and ddpsi - // using analytical expression is always wrong; as a result, - // I switch to explicit finite difference method for evaluating - // the second derivatives of the orbitals - if (/*distance < 1e-9*/ true) - { - double*** dpsi = new double**[atom->nw]; - for (int i = 0; i < atom->nw; i++) - { - dpsi[i] = new double*[6]; - for (int j = 0; j < 6; j++) - { - dpsi[i][j] = new double[3]; - ModuleBase::GlobalFunc::ZEROS(dpsi[i][j], 3); - } - } - - double* dr1 = new double[3]; - - double** displ = new double*[6]; - for (int i = 0; i < 6; i++) - { - displ[i] = new double[3]; - ModuleBase::GlobalFunc::ZEROS(displ[i], 3); - } - displ[0][0] = 0.0001; // in x direction - displ[1][0] = -0.0001; - displ[2][1] = 0.0001; // in y direction - displ[3][1] = -0.0001; - displ[4][2] = 0.0001; // in z direction - displ[5][2] = -0.0001; - - for (int i = 0; i < 6; i++) - { - dr1[0] = dr[0] + displ[i][0]; - dr1[1] = dr[1] + displ[i][1]; - dr1[2] = dr[2] + displ[i][2]; - - ModuleBase::Ylm::grad_rl_sph_harm(ucell.atoms[it].nwl, dr1[0], dr1[1], dr1[2], rly, grly.get_ptr_2D()); - - double distance1 = std::sqrt(dr1[0] * dr1[0] + dr1[1] * dr1[1] + dr1[2] * dr1[2]); - if (distance1 < 1e-9) { - distance1 = 1e-9; -} - - const double position = distance1 / delta_r; - - const int ip = static_cast(position); - const double iq = static_cast(position); - const double x0 = position - iq; - const double x1 = 1.0 - x0; - const double x2 = 2.0 - x0; - const double x3 = 3.0 - x0; - const double x12 = x1 * x2 / 6; - const double x03 = x0 * x3 / 2; - - double tmp, dtmp; - - for (int iw = 0; iw < atom->nw; ++iw) - { - // this is a new 'l', we need 1D orbital wave - // function from interpolation method. - if (atom->iw2_new[iw]) - { - auto psi_uniform = it_psi_uniform[iw]; - auto dpsi_uniform = it_dpsi_uniform[iw]; - - // if ( iq[id] >= philn.nr_uniform-4) - if (iq >= it_psi_nr_uniform[iw]-4) - { - tmp = dtmp = 0.0; - } - else - { - // use Polynomia Interpolation method to get the - // wave functions - - tmp = x12 * (psi_uniform[ip] * x3 + psi_uniform[ip + 3] * x0) - + x03 * (psi_uniform[ip + 1] * x2 - psi_uniform[ip + 2] * x1); - - dtmp = x12 * (dpsi_uniform[ip] * x3 + dpsi_uniform[ip + 3] * x0) - + x03 * (dpsi_uniform[ip + 1] * x2 - dpsi_uniform[ip + 2] * x1); - } - } // new l is used. - - // get the 'l' of this localized wave function - const int ll = atom->iw2l[iw]; - const int idx_lm = atom->iw2_ylm[iw]; - - const double rl = pow_int(distance1, ll); - - // derivative of wave functions with respect to atom positions. - const double tmpdphi_rly = (dtmp - tmp * ll / distance1) / rl * rly[idx_lm] / distance1; - const double tmprl = tmp / rl; - - dpsi[iw][i][0] = tmpdphi_rly * dr1[0] + tmprl * grly[idx_lm][0]; - dpsi[iw][i][1] = tmpdphi_rly * dr1[1] + tmprl * grly[idx_lm][1]; - dpsi[iw][i][2] = tmpdphi_rly * dr1[2] + tmprl * grly[idx_lm][2]; - } // end iw - } // end i = 0-6 - - for (int iw = 0; iw < atom->nw; iw++) - { - p_ddpsi_xx[iw] = (dpsi[iw][0][0] - dpsi[iw][1][0]) / 0.0002; - p_ddpsi_xy[iw] - = ((dpsi[iw][2][0] - dpsi[iw][3][0]) + (dpsi[iw][0][1] - dpsi[iw][1][1])) / 0.0004; - p_ddpsi_xz[iw] - = ((dpsi[iw][4][0] - dpsi[iw][5][0]) + (dpsi[iw][0][2] - dpsi[iw][1][2])) / 0.0004; - p_ddpsi_yy[iw] = (dpsi[iw][2][1] - dpsi[iw][3][1]) / 0.0002; - p_ddpsi_yz[iw] - = ((dpsi[iw][4][1] - dpsi[iw][5][1]) + (dpsi[iw][2][2] - dpsi[iw][3][2])) / 0.0004; - p_ddpsi_zz[iw] = (dpsi[iw][4][2] - dpsi[iw][5][2]) / 0.0002; - } - - for (int i = 0; i < atom->nw; i++) - { - for (int j = 0; j < 6; j++) - { - delete[] dpsi[i][j]; - } - delete[] dpsi[i]; - } - delete[] dpsi; - - delete[] dr1; - for (int i = 0; i < 6; i++) - { - delete[] displ[i]; - } - delete[] displ; - } - else - // the analytical method for evaluating 2nd derivatives - // it is not used currently - { - // Add it here, but do not run it. If there is a need to run this code - // in the future, include it in the previous initialization process. - for (int iw=0; iw< atom->nw; ++iw) - { - if ( atom->iw2_new[iw] ) - { - it_d2psi_uniform[iw] = gt.d2psi_u[it*gt.nwmax + iw].data(); - } - } - // End of code addition section. - - std::vector> hrly; - ModuleBase::Ylm::grad_rl_sph_harm(ucell.atoms[it].nwl, dr[0], dr[1], dr[2], rly, grly.get_ptr_2D()); - ModuleBase::Ylm::hes_rl_sph_harm(ucell.atoms[it].nwl, dr[0], dr[1], dr[2], hrly); - const double position = distance / delta_r; - - const double iq = static_cast(position); - const int ip = static_cast(position); - const double x0 = position - iq; - const double x1 = 1.0 - x0; - const double x2 = 2.0 - x0; - const double x3 = 3.0 - x0; - const double x12 = x1 * x2 / 6; - const double x03 = x0 * x3 / 2; - - double tmp, dtmp, ddtmp; - - for (int iw = 0; iw < atom->nw; ++iw) - { - // this is a new 'l', we need 1D orbital wave - // function from interpolation method. - if (atom->iw2_new[iw]) - { - auto psi_uniform = it_psi_uniform[iw]; - auto dpsi_uniform = it_dpsi_uniform[iw]; - auto ddpsi_uniform = it_d2psi_uniform[iw]; - - // if ( iq[id] >= philn.nr_uniform-4) - if (iq >= it_psi_nr_uniform[iw]-4) - { - tmp = dtmp = ddtmp = 0.0; - } - else - { - // use Polynomia Interpolation method to get the - // wave functions - - tmp = x12 * (psi_uniform[ip] * x3 + psi_uniform[ip + 3] * x0) - + x03 * (psi_uniform[ip + 1] * x2 - psi_uniform[ip + 2] * x1); - - dtmp = x12 * (dpsi_uniform[ip] * x3 + dpsi_uniform[ip + 3] * x0) - + x03 * (dpsi_uniform[ip + 1] * x2 - dpsi_uniform[ip + 2] * x1); - - ddtmp = x12 * (ddpsi_uniform[ip] * x3 + ddpsi_uniform[ip + 3] * x0) - + x03 * (ddpsi_uniform[ip + 1] * x2 - ddpsi_uniform[ip + 2] * x1); - } - } // new l is used. - - // get the 'l' of this localized wave function - const int ll = atom->iw2l[iw]; - const int idx_lm = atom->iw2_ylm[iw]; - - const double rl = pow_int(distance, ll); - const double r_lp2 =rl * distance * distance; - - // d/dr (R_l / r^l) - const double tmpdphi = (dtmp - tmp * ll / distance) / rl; - const double term1 = ddtmp / r_lp2; - const double term2 = (2 * ll + 1) * dtmp / r_lp2 / distance; - const double term3 = ll * (ll + 2) * tmp / r_lp2 / distance / distance; - const double term4 = tmpdphi / distance; - const double term5 = term1 - term2 + term3; - - // hessian of (R_l / r^l) - const double term_xx = term4 + dr[0] * dr[0] * term5; - const double term_xy = dr[0] * dr[1] * term5; - const double term_xz = dr[0] * dr[2] * term5; - const double term_yy = term4 + dr[1] * dr[1] * term5; - const double term_yz = dr[1] * dr[2] * term5; - const double term_zz = term4 + dr[2] * dr[2] * term5; - - // d/dr (R_l / r^l) * alpha / r - const double term_1x = dr[0] * term4; - const double term_1y = dr[1] * term4; - const double term_1z = dr[2] * term4; - - p_ddpsi_xx[iw] - = term_xx * rly[idx_lm] + 2.0 * term_1x * grly[idx_lm][0] + tmp / rl * hrly[idx_lm][0]; - p_ddpsi_xy[iw] = term_xy * rly[idx_lm] + term_1x * grly[idx_lm][1] + term_1y * grly[idx_lm][0] - + tmp / rl * hrly[idx_lm][1]; - p_ddpsi_xz[iw] = term_xz * rly[idx_lm] + term_1x * grly[idx_lm][2] + term_1z * grly[idx_lm][0] - + tmp / rl * hrly[idx_lm][2]; - p_ddpsi_yy[iw] - = term_yy * rly[idx_lm] + 2.0 * term_1y * grly[idx_lm][1] + tmp / rl * hrly[idx_lm][3]; - p_ddpsi_yz[iw] = term_yz * rly[idx_lm] + term_1y * grly[idx_lm][2] + term_1z * grly[idx_lm][1] - + tmp / rl * hrly[idx_lm][4]; - p_ddpsi_zz[iw] - = term_zz * rly[idx_lm] + 2.0 * term_1z * grly[idx_lm][2] + tmp / rl * hrly[idx_lm][5]; - - } // iw - } // end if - } // else - } // end ib - } // end id(atom) - ModuleBase::timer::tick("Gint_Tools", "cal_ddpsir_ylm"); - return; -} -} \ No newline at end of file diff --git a/source/source_lcao/module_gint/cal_dpsir_ylm.cpp b/source/source_lcao/module_gint/cal_dpsir_ylm.cpp deleted file mode 100644 index 8b32b2fc05..0000000000 --- a/source/source_lcao/module_gint/cal_dpsir_ylm.cpp +++ /dev/null @@ -1,138 +0,0 @@ -#include "gint_tools.h" -#include "source_base/timer.h" -#include "source_base/ylm.h" -#include "source_base/array_pool.h" -namespace Gint_Tools{ -void cal_dpsir_ylm( - const Grid_Technique& gt, const int bxyz, - const int na_grid, // number of atoms on this grid - const int grid_index, // 1d index of FFT index (i,j,k) - const double delta_r, // delta_r of the uniform FFT grid - const int* const block_index, // block_index[na_grid+1], count total number of atomis orbitals - const int* const block_size, // block_size[na_grid], number of columns of a band - const bool* const* const cal_flag, // cal_flag[bxyz][na_grid], whether the atom-grid distance is larger than cutoff - double* const* const psir_ylm, double* const* const dpsir_ylm_x, double* const* const dpsir_ylm_y, - double* const* const dpsir_ylm_z) -{ - ModuleBase::timer::tick("Gint_Tools", "cal_dpsir_ylm"); - const UnitCell& ucell = *gt.ucell; - std::vector it_psi_uniform(gt.nwmax); - std::vector it_dpsi_uniform(gt.nwmax); - std::vector it_psi_nr_uniform(gt.nwmax); - // array to store spherical harmonics and its derivatives - // the first dimension equals 36 because the maximum nwl is 5. - double rly[36]; - ModuleBase::Array_Pool grly(36, 3); - - for (int id = 0; id < na_grid; id++) - { - const int mcell_index = gt.bcell_start[grid_index] + id; - const int imcell = gt.which_bigcell[mcell_index]; - int iat = gt.which_atom[mcell_index]; - const int it = ucell.iat2it[iat]; - const int ia = ucell.iat2ia[iat]; - Atom* atom = &ucell.atoms[it]; - - const double mt[3] = {gt.meshball_positions[imcell][0] - gt.tau_in_bigcell[iat][0], - gt.meshball_positions[imcell][1] - gt.tau_in_bigcell[iat][1], - gt.meshball_positions[imcell][2] - gt.tau_in_bigcell[iat][2]}; - // preprocess index - for (int iw=0; iw< atom->nw; ++iw) - { - if ( atom->iw2_new[iw] ) - { - it_psi_uniform[iw]= gt.psi_u[it*gt.nwmax + iw].data(); - it_dpsi_uniform[iw] = gt.dpsi_u[it*gt.nwmax + iw].data(); - it_psi_nr_uniform[iw]= gt.psi_u[it*gt.nwmax + iw].size(); - } - } - - for (int ib = 0; ib < bxyz; ib++) - { - double* const p_psi = &psir_ylm[ib][block_index[id]]; - double* const p_dpsi_x = &dpsir_ylm_x[ib][block_index[id]]; - double* const p_dpsi_y = &dpsir_ylm_y[ib][block_index[id]]; - double* const p_dpsi_z = &dpsir_ylm_z[ib][block_index[id]]; - if (!cal_flag[ib][id]) - { - ModuleBase::GlobalFunc::ZEROS(p_psi, block_size[id]); - ModuleBase::GlobalFunc::ZEROS(p_dpsi_x, block_size[id]); - ModuleBase::GlobalFunc::ZEROS(p_dpsi_y, block_size[id]); - ModuleBase::GlobalFunc::ZEROS(p_dpsi_z, block_size[id]); - } - else - { - const double dr[3] - = {// vectors between atom and grid - gt.meshcell_pos[ib][0] + mt[0], gt.meshcell_pos[ib][1] + mt[1], gt.meshcell_pos[ib][2] + mt[2]}; - double distance = std::sqrt(dr[0] * dr[0] + dr[1] * dr[1] + dr[2] * dr[2]); - - ModuleBase::Ylm::grad_rl_sph_harm(ucell.atoms[it].nwl, dr[0], dr[1], dr[2], rly, grly.get_ptr_2D()); - if (distance < 1e-9) { - distance = 1e-9; -} - - const double position = distance / delta_r; - - const double iq = static_cast(position); - const int ip = static_cast(position); - const double x0 = position - iq; - const double x1 = 1.0 - x0; - const double x2 = 2.0 - x0; - const double x3 = 3.0 - x0; - const double x12 = x1 * x2 / 6; - const double x03 = x0 * x3 / 2; - - double tmp, dtmp; - - for (int iw = 0; iw < atom->nw; ++iw) - { - - // this is a new 'l', we need 1D orbital wave - // function from interpolation method. - if (atom->iw2_new[iw]) - { - auto psi_uniform = it_psi_uniform[iw]; - auto dpsi_uniform = it_dpsi_uniform[iw]; - // if ( iq[id] >= philn.nr_uniform-4) - if (iq >= it_psi_nr_uniform[iw] - 4) - { - tmp = dtmp = 0.0; - } - else - { - // use Polynomia Interpolation method to get the - // wave functions - - tmp = x12 * (psi_uniform[ip] * x3 + psi_uniform[ip + 3] * x0) - + x03 * (psi_uniform[ip + 1] * x2 - psi_uniform[ip + 2] * x1); - - dtmp = x12 * (dpsi_uniform[ip] * x3 + dpsi_uniform[ip + 3] * x0) - + x03 * (dpsi_uniform[ip + 1] * x2 - dpsi_uniform[ip + 2] * x1); - } - } // new l is used. - - // get the 'l' of this localized wave function - const int ll = atom->iw2l[iw]; - const int idx_lm = atom->iw2_ylm[iw]; - - const double rl = pow_int(distance, ll); - const double tmprl = tmp / rl; - - // 3D wave functions - p_psi[iw] = tmprl * rly[idx_lm]; - - // derivative of wave functions with respect to atom positions. - const double tmpdphi_rly = (dtmp - tmp * ll / distance) / rl * rly[idx_lm] / distance; - - p_dpsi_x[iw] = tmpdphi_rly * dr[0] + tmprl * grly[idx_lm][0]; - p_dpsi_y[iw] = tmpdphi_rly * dr[1] + tmprl * grly[idx_lm][1]; - p_dpsi_z[iw] = tmpdphi_rly * dr[2] + tmprl * grly[idx_lm][2]; - } // iw - } // else - } - } - ModuleBase::timer::tick("Gint_Tools", "cal_dpsir_ylm"); - return; -} -} \ No newline at end of file diff --git a/source/source_lcao/module_gint/cal_psir_ylm.cpp b/source/source_lcao/module_gint/cal_psir_ylm.cpp deleted file mode 100644 index 4eeedd19a5..0000000000 --- a/source/source_lcao/module_gint/cal_psir_ylm.cpp +++ /dev/null @@ -1,113 +0,0 @@ -#include "gint_tools.h" -#include "source_base/timer.h" -#include "source_base/ylm.h" -namespace Gint_Tools{ -void cal_psir_ylm( - const Grid_Technique& gt, - const int bxyz, - const int na_grid, // number of atoms on this grid - const int grid_index, // 1d index of FFT index (i,j,k) - const double delta_r, // delta_r of the uniform FFT grid - const int* const block_index, // block_index[na_grid+1], count total number of atomis orbitals - const int* const block_size, // block_size[na_grid], number of columns of a band - const bool* const* const cal_flag, - double* const* const psir_ylm) // cal_flag[bxyz][na_grid], whether the atom-grid distance is larger than cutoff -{ -// ModuleBase::timer::tick("Gint_Tools", "cal_psir_ylm"); - std::vector ylma; - const UnitCell& ucell = *gt.ucell; - std::vector it_psi_uniform(gt.nwmax); - std::vector it_dpsi_uniform(gt.nwmax); - - for (int id = 0; id < na_grid; id++) - { - // there are two parameters we want to know here: - // in which bigcell of the meshball the atom is in? - // what's the cartesian coordinate of the bigcell? - const int mcell_index = gt.bcell_start[grid_index] + id; - - const int iat = gt.which_atom[mcell_index]; // index of atom - const int it = ucell.iat2it[iat]; // index of atom type - const Atom* const atom = &ucell.atoms[it]; - std::vector it_psi_uniform(atom->nw); - std::vector it_dpsi_uniform(atom->nw); - // preprocess index - for (int iw = 0; iw < atom->nw; ++iw) - { - if (atom->iw2_new[iw]) - { - it_psi_uniform[iw]= gt.psi_u[it*gt.nwmax + iw].data(); - it_dpsi_uniform[iw] = gt.dpsi_u[it*gt.nwmax + iw].data(); - } - } - - // meshball_positions should be the bigcell position in meshball - // to the center of meshball. - // calculated in cartesian coordinates - // the std::vector from the grid which is now being operated to the atom position. - // in meshball language, is the std::vector from imcell to the center cel, plus - // tau_in_bigcell. - const int imcell = gt.which_bigcell[mcell_index]; - const double mt[3] = {gt.meshball_positions[imcell][0] - gt.tau_in_bigcell[iat][0], - gt.meshball_positions[imcell][1] - gt.tau_in_bigcell[iat][1], - gt.meshball_positions[imcell][2] - gt.tau_in_bigcell[iat][2]}; - - // number of grids in each big cell (bxyz) - for (int ib = 0; ib < bxyz; ib++) - { - double* p = &psir_ylm[ib][block_index[id]]; - if (!cal_flag[ib][id]) - { - ModuleBase::GlobalFunc::ZEROS(p, block_size[id]); - } - else - { - // meshcell_pos: z is the fastest - const double dr[3] - = {gt.meshcell_pos[ib][0] + mt[0], gt.meshcell_pos[ib][1] + mt[1], gt.meshcell_pos[ib][2] + mt[2]}; - double distance - = std::sqrt(dr[0] * dr[0] + dr[1] * dr[1] + dr[2] * dr[2]); // distance between atom and grid - // if(distance[id] > gt.orbital_rmax) continue; - if (distance < 1.0E-9) - distance += 1.0E-9; - - //------------------------------------------------------ - // spherical harmonic functions Ylm - //------------------------------------------------------ - // Ylm::get_ylm_real(this->nnn[it], this->dr[id], ylma); - ModuleBase::Ylm::sph_harm(ucell.atoms[it].nwl, dr[0] / distance, dr[1] / distance, dr[2] / distance, - ylma); - // these parameters are related to interpolation - // because once the distance from atom to grid point is known, - // we can obtain the parameters for interpolation and - // store them first! these operations can save lots of efforts. - const double position = distance / delta_r; - const int ip = static_cast(position); - const double dx = position - ip; - const double dx2 = dx * dx; - const double dx3 = dx2 * dx; - - const double c3 = 3.0 * dx2 - 2.0 * dx3; - const double c1 = 1.0 - c3; - const double c2 = (dx - 2.0 * dx2 + dx3) * delta_r; - const double c4 = (dx3 - dx2) * delta_r; - - double phi = 0; - for (int iw = 0; iw < atom->nw; ++iw) - { - if (atom->iw2_new[iw]) - { - auto psi_uniform = it_psi_uniform[iw]; - auto dpsi_uniform = it_dpsi_uniform[iw]; - phi = c1 * psi_uniform[ip] + c2 * dpsi_uniform[ip] // radial wave functions - + c3 * psi_uniform[ip + 1] + c4 * dpsi_uniform[ip + 1]; - } - p[iw] = phi * ylma[atom->iw2_ylm[iw]]; - } // end iw - } // end distance<=(rcuts[it]-1.0e-15) - } // end ib - } // end id -// ModuleBase::timer::tick("Gint_Tools", "cal_psir_ylm"); - return; -} -} diff --git a/source/source_lcao/module_gint/temp_gint/divide_info.cpp b/source/source_lcao/module_gint/divide_info.cpp similarity index 100% rename from source/source_lcao/module_gint/temp_gint/divide_info.cpp rename to source/source_lcao/module_gint/divide_info.cpp diff --git a/source/source_lcao/module_gint/temp_gint/divide_info.h b/source/source_lcao/module_gint/divide_info.h similarity index 100% rename from source/source_lcao/module_gint/temp_gint/divide_info.h rename to source/source_lcao/module_gint/divide_info.h diff --git a/source/source_lcao/module_gint/temp_gint/gint.cpp b/source/source_lcao/module_gint/gint.cpp similarity index 100% rename from source/source_lcao/module_gint/temp_gint/gint.cpp rename to source/source_lcao/module_gint/gint.cpp diff --git a/source/source_lcao/module_gint/gint.h b/source/source_lcao/module_gint/gint.h index 6ca6f53eab..1255bae971 100644 --- a/source/source_lcao/module_gint/gint.h +++ b/source/source_lcao/module_gint/gint.h @@ -1,275 +1,26 @@ -#ifndef GINT_INTERFACE -#define GINT_INTERFACE - -#include "gint_tools.h" -#include "source_cell/module_neighbor/sltk_grid_driver.h" -#include "source_lcao/module_gint/grid_technique.h" -#include "source_lcao/module_hcontainer/hcontainer.h" -#include - -//---------------------------------------------------------- -//!This class provides a unified interface to the -//!grid intergration operation used to calculate -//!electron density, and the contribution of local -//!potential to Hamiltonian and force/stress. -//!There are two derived classes of this class -//! namely Gint_Gamma and Gint_k, which contain -//! specific operations for gamma point/multi-k calculations -//---------------------------------------------------------- - -class Gint { - public: - ~Gint(); - - //! move operator for the next ESolver to directly use its infomation - Gint& operator=(Gint&& rhs); - - hamilt::HContainer* get_hRGint() const { return hRGint; } - - std::vector*> get_DMRGint() const { return DMRGint; } - - int get_ncxyz() const { return ncxyz; } - - //! the unified interface to grid integration - void cal_gint(Gint_inout* inout); - - //! preparing FFT grid - void prep_grid(const Grid_Technique& gt, - const int& nbx_in, - const int& nby_in, - const int& nbz_in, - const int& nbz_start_in, - const int& ncxyz_in, - const int& bx_in, - const int& by_in, - const int& bz_in, - const int& bxyz_in, - const int& nbxx_in, - const int& ny_in, - const int& nplane_in, - const int& startz_current_in, - const UnitCell* ucell_in, - const LCAO_Orbitals* orb_in); - - /** - * @brief calculate the neighbor atoms of each atom in this processor - * size of BaseMatrix with be the non-parallel version - */ - void initialize_pvpR(const UnitCell& unitcell, const Grid_Driver* gd, const int& nspin); - - /** - * @brief resize DMRGint to nspin and reallocate the memory - */ - void reset_DMRGint(const int& nspin); - - /** - * @brief transfer DMR (2D para) to DMR (Grid para) in elecstate_lcao.cpp - */ - void transfer_DM2DtoGrid(std::vector*> DM2D); - - const Grid_Technique* gridt = nullptr; - const UnitCell* ucell; - - // psir_ylm_new = psir_func(psir_ylm) - // psir_func==nullptr means psir_ylm_new=psir_ylm - using T_psir_func = std::function< - const ModuleBase::Array_Pool&( - const ModuleBase::Array_Pool &psir_ylm, - const Grid_Technique >, - const int grid_index, - const int is, - const std::vector &block_iw, - const std::vector &block_size, - const std::vector &block_index, - const ModuleBase::Array_Pool &cal_flag)>; - - T_psir_func psir_func_1 = nullptr; - T_psir_func psir_func_2 = nullptr; - - protected: - - //! variables related to FFT grid - int nbx; - int nby; - int nbz; - int ncxyz; - int nbz_start; - int bx; - int by; - int bz; - int bxyz; - int nbxx; - int ny; - int nplane; - int startz_current; // from rhopw - - //! in cal_gint_gpu.cpp - void gpu_vlocal_interface(Gint_inout* inout); - - void gpu_rho_interface(Gint_inout* inout); - - void gpu_force_interface(Gint_inout* inout); - - //! in cal_gint_cpu.cpp - void gint_kernel_vlocal(Gint_inout* inout); - - //! calculate H_mu_nu(local)= - void gint_kernel_dvlocal(Gint_inout* inout); - - //! calculate vlocal in meta-GGA functionals - void gint_kernel_vlocal_meta(Gint_inout* inout); - - //! calculate charge density rho(r)=\int D_munu \phi_mu \phi_nu - void gint_kernel_rho(Gint_inout* inout); - - //! used in meta-GGA functional - void gint_kernel_tau(Gint_inout* inout); - - //! compute forces - void gint_kernel_force(Gint_inout* inout); - - //! compute forces related to meta-GGA functionals - void gint_kernel_force_meta(Gint_inout* inout); - - //! calculate local potential contribution to the Hamiltonian - //! na_grid: how many atoms on this (i,j,k) grid - //! block_size: dim is [block_size], number of columns of a band - //! block_index: dim is [na_grid+1], total number of atomic orbitals - //! grid_index: index of grid group, for tracing iat - //! cal_flag: dim is [bxyz][na_grid], whether the atom-grid distance is larger than cutoff - //! psir_ylm: dim is [bxyz][LD_pool] - //! psir_vlbr3: dim is [bxyz][LD_pool] - //! hR: HContainer for storing the matrix elements - //! cal_meshball_vlocal is thread-safe! - void cal_meshball_vlocal( - const int na_grid, - const int LD_pool, - const int* const block_size, - const int* const block_index, - const int grid_index, - const bool* const* const cal_flag, - const double* const* const psir_ylm, - const double* const* const psir_vlbr3, - hamilt::HContainer* hR); - - //! in gint_fvl.cpp - //! calculate vl contributuion to force & stress via grid integrals - void gint_kernel_force(const int na_grid, - const int grid_index, - const double delta_r, - double* vldr3, - const int is, - const bool isforce, - const bool isstress, - ModuleBase::matrix* fvl_dphi, - ModuleBase::matrix* svl_dphi, - const UnitCell& ucell); - - //! in gint_fvl.cpp - //! calculate vl contributuion to force & stress via grid integrals - //! used in meta-GGA calculations - void gint_kernel_force_meta(const int na_grid, - const int grid_index, - const double delta_r, - double* vldr3, - double* vkdr3, - const int is, - const bool isforce, - const bool isstress, - ModuleBase::matrix* fvl_dphi, - ModuleBase::matrix* svl_dphi, - const UnitCell& ucell); - - //! Use grid integrals to compute the atomic force contributions - //! na_grid: how many atoms on this (i,j,k) grid - //! block_size: dim is [na_grid], number of columns of a band - //! block_index: dim is [na_grid+1], total number of atomis orbitals - //! psir_vlbr3_DMR: dim is [bxyz][LD_pool] - //! dpsir_x: dim is [bxyz][LD_pool] - //! dpsir_y: dim is [bxyz][LD_pool] - //! dpsir_z: dim is [bxyz][LD_pool] - void cal_meshball_force( - const int grid_index, - const int na_grid, - const int* const block_size, - const int* const block_index, - const double* const* const psir_vlbr3_DMR, - const double* const* const dpsir_x, // psir_vlbr3[bxyz][LD_pool] - const double* const* const dpsir_y, // psir_vlbr3[bxyz][LD_pool] - const double* const* const dpsir_z, // psir_vlbr3[bxyz][LD_pool] - ModuleBase::matrix* force); - - //! Use grid integrals to compute the stress contributions - //! na_grid: how many atoms on this (i,j,k) grid - //! block_index: dim is [na_grid+1], total number of atomis orbitals - void cal_meshball_stress( - const int na_grid, - const int*const block_index, - const double*const psir_vlbr3_DMR, - const double*const dpsirr, - ModuleBase::matrix *stress); - - //! Use grid integrals to compute charge density - //! in gint_k_rho.cpp - //! calculate the charge density & kinetic energy density (tau) via grid integrals - void gint_kernel_rho(const int na_grid, - const int grid_index, - const double delta_r, - int* vindex, - const int LD_pool, - const UnitCell& ucell, - Gint_inout* inout); - - //! Use grid integrals to compute charge density in a meshball - void cal_meshball_rho(const int na_grid, - const int*const block_index, - const int*const vindex, - const double*const*const psir_ylm, - const double*const*const psir_DMR, - double*const rho); - - //! Use grid integrals to compute kinetic energy density tau - //!in meta-GGA functional - void gint_kernel_tau(const int na_grid, - const int grid_index, - const double delta_r, - int* vindex, - const int LD_pool, - Gint_inout* inout, - const UnitCell& ucell); - - //! Use grid integrals to compute kinetic energy density tau - //!in a meshball, used in meta-GGA functional calculations - void cal_meshball_tau(const int na_grid, - int* block_index, - int* vindex, - double** dpsix, - double** dpsiy, - double** dpsiz, - double** dpsix_dm, - double** dpsiy_dm, - double** dpsiz_dm, - double* rho); - - //! save the < phi_0i | V | phi_Rj > in sparse H matrix. - //! stores Hamiltonian in sparse format - hamilt::HContainer* hRGint = nullptr; - - //! size of vec is 4, only used when nspin = 4 - std::vector*> hRGint_tmp; - - //! stores Hamiltonian in sparse format - hamilt::HContainer>* hRGintCd = nullptr; - - //! stores DMR in sparse format - std::vector*> DMRGint; - - //! tmp tools used in transfer_DM2DtoGrid - hamilt::HContainer* DMRGint_full = nullptr; - - std::vector> pvdpRx_reduced; - std::vector> pvdpRy_reduced; - std::vector> pvdpRz_reduced; +#pragma once +#include +#include "gint_info.h" +#include "gint_type.h" + +namespace ModuleGint +{ + +class Gint +{ + public: + Gint() = default; + virtual ~Gint() = default; + + // note that gint_info_ is a static member variable + // it is shared by all instances of Gint + static void set_gint_info(GintInfo* gint_info) + { + gint_info_ = gint_info; + } + + protected: + static GintInfo* gint_info_; }; -#endif +} \ No newline at end of file diff --git a/source/source_lcao/module_gint/temp_gint/gint_atom.cpp b/source/source_lcao/module_gint/gint_atom.cpp similarity index 100% rename from source/source_lcao/module_gint/temp_gint/gint_atom.cpp rename to source/source_lcao/module_gint/gint_atom.cpp diff --git a/source/source_lcao/module_gint/temp_gint/gint_atom.h b/source/source_lcao/module_gint/gint_atom.h similarity index 97% rename from source/source_lcao/module_gint/temp_gint/gint_atom.h rename to source/source_lcao/module_gint/gint_atom.h index aff8aae5b9..cf91768481 100644 --- a/source/source_lcao/module_gint/temp_gint/gint_atom.h +++ b/source/source_lcao/module_gint/gint_atom.h @@ -88,7 +88,7 @@ class GintAtom private: // the atom object - const Atom* atom_; + const Atom* atom_ = nullptr; // the global index of the atom type int it_; @@ -110,9 +110,9 @@ class GintAtom Vec3d tau_in_biggrid_; // the numerical orbitals of this atom - const Numerical_Orbital* orb_; + const Numerical_Orbital* orb_ = nullptr; - const UnitCell* ucell_; + const UnitCell* ucell_ = nullptr; std::vector p_psi_uniform_; std::vector p_dpsi_uniform_; diff --git a/source/source_lcao/module_gint/gint_common.cpp b/source/source_lcao/module_gint/gint_common.cpp new file mode 100644 index 0000000000..3588604f59 --- /dev/null +++ b/source/source_lcao/module_gint/gint_common.cpp @@ -0,0 +1,414 @@ +#include "gint_common.h" +#include "source_lcao/module_hcontainer/hcontainer.h" +#include "source_lcao/module_hcontainer/hcontainer_funcs.h" +#include "source_io/module_parameter/parameter.h" + +#ifdef __MPI +#include "source_base/module_external/blacs_connector.h" +#include +#endif + +namespace ModuleGint +{ + +void compose_hr_gint(HContainer& hr_gint) +{ + ModuleBase::TITLE("Gint", "compose_hr_gint"); + ModuleBase::timer::tick("Gint", "compose_hr_gint"); + for (int iap = 0; iap < hr_gint.size_atom_pairs(); iap++) + { + auto& ap = hr_gint.get_atom_pair(iap); + const int iat1 = ap.get_atom_i(); + const int iat2 = ap.get_atom_j(); + if (iat1 > iat2) + { + // fill lower triangle matrix with upper triangle matrix + // the upper is + const hamilt::AtomPair* upper_ap = hr_gint.find_pair(iat2, iat1); + const hamilt::AtomPair* lower_ap = hr_gint.find_pair(iat1, iat2); +#ifdef __DEBUG + assert(upper_ap != nullptr); +#endif + for (int ir = 0; ir < ap.get_R_size(); ir++) + { + auto R_index = ap.get_R_index(ir); + auto upper_mat = upper_ap->find_matrix(-R_index); + auto lower_mat = lower_ap->find_matrix(R_index); + for (int irow = 0; irow < upper_mat->get_row_size(); ++irow) + { + for (int icol = 0; icol < upper_mat->get_col_size(); ++icol) + { + lower_mat->get_value(icol, irow) = upper_ap->get_value(irow, icol); + } + } + } + } + } + ModuleBase::timer::tick("Gint", "compose_hr_gint"); +} + +template +void transfer_hr_gint_to_hR(const HContainer& hr_gint, HContainer& hR) +{ + ModuleBase::TITLE("Gint", "transfer_hr_gint_to_hR"); + ModuleBase::timer::tick("Gint", "transfer_hr_gint_to_hR"); +#ifdef __MPI + int size = 0; + MPI_Comm_size(MPI_COMM_WORLD, &size); + if (size == 1) + { + hR.add(hr_gint); + } + else + { + hamilt::transferSerials2Parallels(hr_gint, &hR); + } +#else + hR.add(hr_gint); +#endif + ModuleBase::timer::tick("Gint", "transfer_hr_gint_to_hR"); +} + + +void merge_hr_part_to_hR(const std::vector>& hr_gint_tmp , + hamilt::HContainer>* hR, + const GintInfo& gint_info){ + ModuleBase::TITLE("Gint_k", "transfer_pvpR"); + ModuleBase::timer::tick("Gint_k", "transfer_pvpR"); + + const UnitCell* ucell_in = gint_info.get_ucell(); + int mg = hR->get_paraV()->get_global_row_size()/2; + int ng = hR->get_paraV()->get_global_col_size()/2; + int nb = hR->get_paraV()->get_block_size()/2; + hamilt::HContainer>* hR_tmp; + + +#ifdef __MPI + int blacs_ctxt = hR->get_paraV()->blacs_ctxt; + std::vector iat2iwt(ucell_in->nat); + for (int iat = 0; iat < ucell_in->nat; iat++) { + iat2iwt[iat] = ucell_in->get_iat2iwt()[iat]/2; + } + Parallel_Orbitals *pv = new Parallel_Orbitals(); + pv->set(mg, ng, nb, blacs_ctxt); + pv->set_atomic_trace(iat2iwt.data(), ucell_in->nat, mg); + auto ijr_info = hR->get_ijr_info(); + hR_tmp = new hamilt::HContainer>(pv, nullptr, &ijr_info); +#endif + + //select hr_gint_tmp + std::vector first = {0, 1, 1, 0}; + std::vector second= {3, 2, 2, 3}; + //select position in the big matrix + std::vector row_set = {0, 0, 1, 1}; + std::vector col_set = {0, 1, 0, 1}; + //construct complex matrix + std::vector clx_i = {1, 0, 0, -1}; + std::vector clx_j = {0, 1, -1, 0}; + for (int is = 0; is < 4; is++){ + if(!PARAM.globalv.domag && (is==1 || is==2)) continue; + hR_tmp->set_zero(); + hamilt::HContainer>* hRGint_tmpCd = new hamilt::HContainer>(ucell_in->nat); + hRGint_tmpCd->insert_ijrs( &(gint_info.get_ijr_info()), *(ucell_in)); + hRGint_tmpCd->allocate(nullptr, true); + hRGint_tmpCd->set_zero(); + for (int iap = 0; iap < hRGint_tmpCd->size_atom_pairs(); iap++) + { + auto* ap = &hRGint_tmpCd->get_atom_pair(iap); + const int iat1 = ap->get_atom_i(); + const int iat2 = ap->get_atom_j(); + if (iat1 <= iat2) + { + hamilt::AtomPair>* upper_ap = ap; + hamilt::AtomPair>* lower_ap = hRGint_tmpCd->find_pair(iat2, iat1); + const hamilt::AtomPair* ap_nspin1 = hr_gint_tmp [first[is]].find_pair(iat1, iat2); + const hamilt::AtomPair* ap_nspin2 = hr_gint_tmp [second[is]].find_pair(iat1, iat2); + for (int ir = 0; ir < upper_ap->get_R_size(); ir++) + { + const auto R_index = upper_ap->get_R_index(ir); + auto upper_mat = upper_ap->find_matrix(R_index); + auto mat_nspin1 = ap_nspin1->find_matrix(R_index); + auto mat_nspin2 = ap_nspin2->find_matrix(R_index); + // The row size and the col size of upper_matrix is double that of matrix_nspin_0 + for (int irow = 0; irow < mat_nspin1->get_row_size(); ++irow) + { + for (int icol = 0; icol < mat_nspin1->get_col_size(); ++icol) + { + upper_mat->get_value(irow, icol) = mat_nspin1->get_value(irow, icol) + + std::complex(clx_i[is], clx_j[is]) * mat_nspin2->get_value(irow, icol); + } + } + //fill the lower triangle matrix + //When is=0 or 3, the real part does not need conjugation; + //when is=1 or 2, the small matrix is not Hermitian, so conjugation is not needed + if (iat1 < iat2) + { + auto lower_mat = lower_ap->find_matrix(-R_index); + for (int irow = 0; irow < upper_mat->get_row_size(); ++irow) + { + for (int icol = 0; icol < upper_mat->get_col_size(); ++icol) + { + lower_mat->get_value(icol, irow) = upper_mat->get_value(irow, icol); + } + } + } + + } + } + } + // transfer hRGint_tmpCd to parallel hR_tmp +#ifdef __MPI + hamilt::transferSerials2Parallels( *hRGint_tmpCd, hR_tmp); +#else + hR_tmp = hRGint_tmpCd; +#endif + // merge hR_tmp to hR + for (int iap = 0; iap < hR->size_atom_pairs(); iap++) + { + auto* ap = &hR->get_atom_pair(iap); + const int iat1 = ap->get_atom_i(); + const int iat2 = ap->get_atom_j(); + auto* ap_nspin = hR_tmp ->find_pair(iat1, iat2); + for (int ir = 0; ir < ap->get_R_size(); ir++) + { + const auto R_index = ap->get_R_index(ir); + auto upper_mat = ap->find_matrix(R_index); + auto mat_nspin = ap_nspin->find_matrix(R_index); + // The row size and the col size of upper_matrix is double that of matrix_nspin_0 + for (int irow = 0; irow < mat_nspin->get_row_size(); ++irow) + { + for (int icol = 0; icol < mat_nspin->get_col_size(); ++icol) + { + upper_mat->get_value(2*irow+row_set[is], 2*icol+col_set[is]) = + mat_nspin->get_value(irow, icol); + } + } + } + } + delete hRGint_tmpCd; + } + ModuleBase::timer::tick("Gint_k", "transfer_pvpR"); + return; +} + + + +// gint_info should not have been a parameter, but it was added to initialize dm_gint_full +// In the future, we might try to remove the gint_info parameter +template +void transfer_dm_2d_to_gint( + const GintInfo& gint_info, + std::vector*> dm, + std::vector>& dm_gint) +{ + ModuleBase::TITLE("Gint", "transfer_dm_2d_to_gint"); + ModuleBase::timer::tick("Gint", "transfer_dm_2d_to_gint"); + + if (PARAM.inp.nspin != 4) + { + // dm_gint.size() usually equals to PARAM.inp.nspin, + // but there is exception within source_lcao/module_lr + for (int is = 0; is < dm_gint.size(); is++) + { +#ifdef __MPI + hamilt::transferParallels2Serials(*dm[is], &dm_gint[is]); +#else + dm_gint[is].set_zero(); + dm_gint[is].add(*dm[is]); +#endif + } + } else // NSPIN=4 case + { + + // is=0:↑↑, 1:↑↓, 2:↓↑, 3:↓↓ + const int row_set[4] = {0, 0, 1, 1}; + const int col_set[4] = {0, 1, 0, 1}; + int mg = dm[0]->get_paraV()->get_global_row_size()/2; + int ng = dm[0]->get_paraV()->get_global_col_size()/2; + int nb = dm[0]->get_paraV()->get_block_size()/2; + const UnitCell* ucell = gint_info.get_ucell(); + auto ijr_info = dm[0]->get_ijr_info(); +#ifdef __MPI + int blacs_ctxt = dm[0]->get_paraV()->blacs_ctxt; + std::vector iat2iwt(ucell->nat); + for (int iat = 0; iat < ucell->nat; iat++) { + iat2iwt[iat] = ucell->get_iat2iwt()[iat]/2; + } + Parallel_Orbitals pv{}; + pv.set(mg, ng, nb, blacs_ctxt); + pv.set_atomic_trace(iat2iwt.data(), ucell->nat, mg); + HContainer dm2d_tmp(&pv, nullptr, &ijr_info); +#else + auto* dm2d_tmp = new hamilt::HContainer(ucell->nat); + dm2d_tmp -> insert_ijrs(&ijr_info, *ucell); + dm2d_tmp -> allocate(nullptr, true); +#endif + for (int is = 0; is < 4; is++){ + for (int iap = 0; iap < dm[0]->size_atom_pairs(); ++iap) { + auto& ap = dm[0]->get_atom_pair(iap); + int iat1 = ap.get_atom_i(); + int iat2 = ap.get_atom_j(); + for (int ir = 0; ir < ap.get_R_size(); ++ir) { + const ModuleBase::Vector3 r_index = ap.get_R_index(ir); +#ifdef __MPI + T* matrix_out = dm2d_tmp.find_matrix(iat1, iat2, r_index)->get_pointer(); +#else + T* matrix_out = dm2d_tmp->find_matrix(iat1, iat2, r_index)->get_pointer(); +#endif + T* matrix_in = ap.get_pointer(ir); + for (int irow = 0; irow < ap.get_row_size()/2; irow ++) { + for (int icol = 0; icol < ap.get_col_size()/2; icol ++) { + int index_i = irow* ap.get_col_size()/2 + icol; + int index_j = (irow*2+row_set[is]) * ap.get_col_size() + icol*2+col_set[is]; + matrix_out[index_i] = matrix_in[index_j]; + } + } + } + } +#ifdef __MPI + hamilt::transferParallels2Serials(dm2d_tmp, &dm_gint[is]); +#else + dm_gint[is].set_zero(); + dm_gint[is].add(*dm2d_tmp); +#endif + }//is=4 + } + ModuleBase::timer::tick("Gint", "transfer_dm_2d_to_gint"); +} + +int globalIndex(int localindex, int nblk, int nprocs, int myproc) +{ + const int iblock = localindex / nblk; + const int gIndex = (iblock * nprocs + myproc) * nblk + localindex % nblk; + return gIndex; +} + +int localIndex(int globalindex, int nblk, int nprocs, int& myproc) +{ + myproc = int((globalindex % (nblk * nprocs)) / nblk); + return int(globalindex / (nblk * nprocs)) * nblk + globalindex % nblk; +} + +template +void wfc_2d_to_gint(const T* wfc_2d, + int nbands, // needed if MPI is disabled + int nlocal, // needed if MPI is disabled + const Parallel_Orbitals& pv, + T* wfc_gint, + const GintInfo& gint_info) +{ + ModuleBase::TITLE("Gint", "wfc_2d_to_gint"); + ModuleBase::timer::tick("Gint", "wfc_2d_to_gint"); + +#ifdef __MPI + // dimension related + nlocal = pv.desc_wfc[2]; + nbands = pv.desc_wfc[3]; + + const std::vector& trace_lo = gint_info.get_trace_lo(); + + // MPI and memory related + const int mem_stride = 1; + int mpi_info = 0; + + // get the rank of the current process + int rank = 0; + MPI_Comm_rank(pv.comm(), &rank); + + // calculate the maximum number of nlocal over all processes in pv.comm() range + long buf_size = 0; + mpi_info = MPI_Reduce(&pv.nloc_wfc, &buf_size, 1, MPI_LONG, MPI_MAX, 0, pv.comm()); + mpi_info = MPI_Bcast(&buf_size, 1, MPI_LONG, 0, pv.comm()); // get and then broadcast + std::vector wfc_block(buf_size); + + // this quantity seems to have the value returned by function numroc_ in ScaLAPACK? + int naroc[2]; + + // for BLACS broadcast + char scope = 'A'; + char top = ' '; + + // loop over all processors + for (int iprow = 0; iprow < pv.dim0; ++iprow) + { + for (int ipcol = 0; ipcol < pv.dim1; ++ipcol) + { + if (iprow == pv.coord[0] && ipcol == pv.coord[1]) + { + BlasConnector::copy(pv.nloc_wfc, wfc_2d, mem_stride, wfc_block.data(), mem_stride); + naroc[0] = pv.nrow; + naroc[1] = pv.ncol_bands; + Cxgebs2d(pv.blacs_ctxt, &scope, &top, 2, 1, naroc, 2); + Cxgebs2d(pv.blacs_ctxt, &scope, &top, buf_size, 1, wfc_block.data(), buf_size); + } + else + { + Cxgebr2d(pv.blacs_ctxt, &scope, &top, 2, 1, naroc, 2, iprow, ipcol); + Cxgebr2d(pv.blacs_ctxt, &scope, &top, buf_size, 1, wfc_block.data(), buf_size, iprow, ipcol); + } + + // then use it to set the wfc_grid. + const int nb = pv.nb; + const int dim0 = pv.dim0; + const int dim1 = pv.dim1; + for (int j = 0; j < naroc[1]; ++j) + { + int igcol = globalIndex(j, nb, dim1, ipcol); + if (igcol >= PARAM.inp.nbands) + { + continue; + } + for (int i = 0; i < naroc[0]; ++i) + { + int igrow = globalIndex(i, nb, dim0, iprow); + int mu_local = trace_lo[igrow]; + if (wfc_gint && mu_local >= 0) + { + wfc_gint[igcol * nlocal + mu_local] = wfc_block[j * naroc[0] + i]; + } + } + } + // this operation will let all processors have the same wfc_grid + } + } +#else + for (int i = 0; i < nbands; ++i) + { + for (int j = 0; j < nlocal; ++j) + { + wfc_gint[i * nlocal + j] = wfc_2d[i * nlocal + j]; + } + } +#endif + ModuleBase::timer::tick("Gint", "wfc_2d_to_gint"); +} + +template void transfer_hr_gint_to_hR( + const HContainer& hr_gint, + HContainer& hR); +template void transfer_hr_gint_to_hR( + const HContainer>& hr_gint, + HContainer>& hR); +template void transfer_dm_2d_to_gint( + const GintInfo& gint_info, + std::vector*> dm, + std::vector>& dm_gint); +template void transfer_dm_2d_to_gint( + const GintInfo& gint_info, + std::vector>*> dm, + std::vector>>& dm_gint); +template void wfc_2d_to_gint( + const double* wfc_2d, + int nbands, + int nlocal, + const Parallel_Orbitals& pv, + double* wfc_grid, + const GintInfo& gint_info); +template void wfc_2d_to_gint( + const std::complex* wfc_2d, + int nbands, + int nlocal, + const Parallel_Orbitals& pv, + std::complex* wfc_grid, + const GintInfo& gint_info); +} \ No newline at end of file diff --git a/source/source_lcao/module_gint/gint_common.h b/source/source_lcao/module_gint/gint_common.h new file mode 100644 index 0000000000..180bc9e8ea --- /dev/null +++ b/source/source_lcao/module_gint/gint_common.h @@ -0,0 +1,26 @@ +#pragma once +#include "source_lcao/module_hcontainer/hcontainer.h" +#include "source_lcao/module_gint/gint_info.h" + +namespace ModuleGint +{ + // fill the lower triangle matrix with the upper triangle matrix + void compose_hr_gint(HContainer& hr_gint); + + + template + void transfer_hr_gint_to_hR(const HContainer& hr_gint, HContainer& hR); + // for nspin=4 case + void merge_hr_part_to_hR(const std::vector>& hr_gint_tmp , + hamilt::HContainer>* hR, + const GintInfo& gint_info); + + template + void transfer_dm_2d_to_gint( + const GintInfo& gint_info, + std::vector*> dm, + std::vector>& dm_gint); + + template + void wfc_2d_to_gint(const T* wfc_2d, int nbands, int nlocal, const Parallel_Orbitals& pv, T* wfc_grid, const GintInfo& gint_info); +} diff --git a/source/source_lcao/module_gint/temp_gint/gint_dvlocal.cpp b/source/source_lcao/module_gint/gint_dvlocal.cpp similarity index 97% rename from source/source_lcao/module_gint/temp_gint/gint_dvlocal.cpp rename to source/source_lcao/module_gint/gint_dvlocal.cpp index 78a8b91069..7910649b71 100644 --- a/source/source_lcao/module_gint/temp_gint/gint_dvlocal.cpp +++ b/source/source_lcao/module_gint/gint_dvlocal.cpp @@ -33,9 +33,10 @@ void Gint_dvlocal::cal_hr_gint_() std::vector dphi_y; std::vector dphi_z; #pragma omp for schedule(dynamic) - for(const auto& biggrid: gint_info_->get_biggrids()) + for (int i = 0; i < gint_info_->get_bgrids_num(); i++) { - if(biggrid->get_atoms().empty()) + const auto& biggrid = gint_info_->get_biggrids()[i]; + if(biggrid->get_atoms().size() == 0) { continue; } @@ -71,7 +72,7 @@ void Gint_dvlocal::cal_dvlocal_R_sparseMatrix( std::map, std::map>> pvdpRy_sparseMatrix; std::map, std::map>> pvdpRz_sparseMatrix; - double temp_value_double; + double temp_value_double = 0.0; Vec3d tau1, dtau; for (int iap = 0; iap < pvdpRx.size_atom_pairs(); iap++) diff --git a/source/source_lcao/module_gint/temp_gint/gint_dvlocal.h b/source/source_lcao/module_gint/gint_dvlocal.h similarity index 97% rename from source/source_lcao/module_gint/temp_gint/gint_dvlocal.h rename to source/source_lcao/module_gint/gint_dvlocal.h index c14f14359a..dc48b10292 100644 --- a/source/source_lcao/module_gint/temp_gint/gint_dvlocal.h +++ b/source/source_lcao/module_gint/gint_dvlocal.h @@ -51,7 +51,7 @@ class Gint_dvlocal : public Gint LCAO_HS_Arrays& HS_Arrays); // input - const double* vr_eff_; + const double* vr_eff_ = nullptr; int nspin_; int npol_; diff --git a/source/source_lcao/module_gint/temp_gint/gint_env_gamma.cpp b/source/source_lcao/module_gint/gint_env_gamma.cpp similarity index 87% rename from source/source_lcao/module_gint/temp_gint/gint_env_gamma.cpp rename to source/source_lcao/module_gint/gint_env_gamma.cpp index 71fabbd703..af024edf2f 100644 --- a/source/source_lcao/module_gint/temp_gint/gint_env_gamma.cpp +++ b/source/source_lcao/module_gint/gint_env_gamma.cpp @@ -28,9 +28,10 @@ void Gint_env_gamma::cal_env_band(const int iband) PhiOperator phi_op; std::vector phi; #pragma omp for schedule(dynamic) - for(const auto& biggrid: gint_info_->get_biggrids()) + for (int i = 0; i < gint_info_->get_bgrids_num(); i++) { - if(biggrid->get_atoms().empty()) + const auto& biggrid = gint_info_->get_biggrids()[i]; + if(biggrid->get_atoms().size() == 0) { continue; } diff --git a/source/source_lcao/module_gint/temp_gint/gint_env_gamma.h b/source/source_lcao/module_gint/gint_env_gamma.h similarity index 94% rename from source/source_lcao/module_gint/temp_gint/gint_env_gamma.h rename to source/source_lcao/module_gint/gint_env_gamma.h index 39357a578b..f0c54d8bb4 100644 --- a/source/source_lcao/module_gint/temp_gint/gint_env_gamma.h +++ b/source/source_lcao/module_gint/gint_env_gamma.h @@ -23,7 +23,7 @@ class Gint_env_gamma : public Gint private: // output - double* rho_; + double* rho_ = nullptr; // intermediate variable std::vector wfc_gint_; diff --git a/source/source_lcao/module_gint/temp_gint/gint_env_k.cpp b/source/source_lcao/module_gint/gint_env_k.cpp similarity index 89% rename from source/source_lcao/module_gint/temp_gint/gint_env_k.cpp rename to source/source_lcao/module_gint/gint_env_k.cpp index b92ed8ddfc..4f6ab1c0cf 100644 --- a/source/source_lcao/module_gint/temp_gint/gint_env_k.cpp +++ b/source/source_lcao/module_gint/gint_env_k.cpp @@ -33,9 +33,10 @@ void Gint_env_k::cal_env_band(const int iband) PhiOperator phi_op; std::vector phi; #pragma omp for schedule(dynamic) - for(const auto& biggrid: gint_info_->get_biggrids()) + for (int i = 0; i < gint_info_->get_bgrids_num(); i++) { - if(biggrid->get_atoms().empty()) + const auto& biggrid = gint_info_->get_biggrids()[i]; + if(biggrid->get_atoms().size() == 0) { continue; } diff --git a/source/source_lcao/module_gint/temp_gint/gint_env_k.h b/source/source_lcao/module_gint/gint_env_k.h similarity index 96% rename from source/source_lcao/module_gint/temp_gint/gint_env_k.h rename to source/source_lcao/module_gint/gint_env_k.h index 0221fccfc1..afa9b8f8ee 100644 --- a/source/source_lcao/module_gint/temp_gint/gint_env_k.h +++ b/source/source_lcao/module_gint/gint_env_k.h @@ -35,7 +35,7 @@ class Gint_env_k : public Gint int npol_; // output - double* rho_; + double* rho_ = nullptr; // intermediate variable std::vector> wfc_gint_; diff --git a/source/source_lcao/module_gint/gint_force_cpu_interface.cpp b/source/source_lcao/module_gint/gint_force_cpu_interface.cpp deleted file mode 100644 index e3b6a30077..0000000000 --- a/source/source_lcao/module_gint/gint_force_cpu_interface.cpp +++ /dev/null @@ -1,313 +0,0 @@ -#include "gint.h" -#include "source_base/memory.h" -#include "source_base/timer.h" - -void Gint::gint_kernel_force(Gint_inout* inout) { - ModuleBase::TITLE("Gint_interface", "cal_gint_force"); - ModuleBase::timer::tick("Gint_interface", "cal_gint_force"); - const UnitCell& ucell = *this->ucell; - const int max_size = this->gridt->max_atom; - const int ncyz = this->ny * this->nplane; - const double dv = ucell.omega / this->ncxyz; - const double delta_r = this->gridt->dr_uniform; - - -#pragma omp parallel -{ - ModuleBase::matrix* fvl_dphi_thread=inout->fvl_dphi; - ModuleBase::matrix* svl_dphi_thread=inout->svl_dphi; - if (inout->isforce) { - fvl_dphi_thread=new ModuleBase::matrix(*inout->fvl_dphi); - fvl_dphi_thread->zero_out(); - } - if (inout->isstress) { - svl_dphi_thread=new ModuleBase::matrix(*inout->svl_dphi); - svl_dphi_thread->zero_out(); - } - std::vector block_iw(max_size,0); - std::vector block_index(max_size+1,0); - std::vector block_size(max_size,0); - std::vector vldr3(this->bxyz,0.0); -#pragma omp for schedule(dynamic) - for (int grid_index = 0; grid_index < this->nbxx; grid_index++) { - const int na_grid = this->gridt->how_many_atoms[grid_index]; - if (na_grid == 0) { - continue; - } - Gint_Tools::get_gint_vldr3(vldr3.data(), - inout->vl, - this->bxyz, - this->bx, - this->by, - this->bz, - this->nplane, - this->gridt->start_ind[grid_index], - ncyz, - dv); - //prepare block information - ModuleBase::Array_Pool cal_flag(this->bxyz,max_size); - Gint_Tools::get_block_info(*this->gridt, this->bxyz, na_grid, grid_index, - block_iw.data(), block_index.data(), block_size.data(), - cal_flag.get_ptr_2D()); - const int LD_pool = block_index[na_grid]; - - //evaluate psi and dpsi on grids - ModuleBase::Array_Pool psir_ylm(this->bxyz, LD_pool); - ModuleBase::Array_Pool dpsir_ylm_x(this->bxyz, LD_pool); - ModuleBase::Array_Pool dpsir_ylm_y(this->bxyz, LD_pool); - ModuleBase::Array_Pool dpsir_ylm_z(this->bxyz, LD_pool); - - Gint_Tools::cal_dpsir_ylm(*this->gridt, this->bxyz, na_grid, grid_index, delta_r, - block_index.data(), block_size.data(), - cal_flag.get_ptr_2D(),psir_ylm.get_ptr_2D(), - dpsir_ylm_x.get_ptr_2D(), dpsir_ylm_y.get_ptr_2D(), dpsir_ylm_z.get_ptr_2D()); - - //calculating f_mu(r) = v(r)*psi_mu(r)*dv - const ModuleBase::Array_Pool psir_vlbr3 = - Gint_Tools::get_psir_vlbr3(this->bxyz, na_grid, LD_pool, block_index.data(), - cal_flag.get_ptr_2D(), vldr3.data(), psir_ylm.get_ptr_2D()); - - ModuleBase::Array_Pool psir_vlbr3_DM(this->bxyz, LD_pool); - ModuleBase::GlobalFunc::ZEROS(psir_vlbr3_DM.get_ptr_1D(), this->bxyz*LD_pool); - - //calculating g_mu(r) = sum_nu rho_mu,nu f_nu(r) - Gint_Tools::mult_psi_DMR( - *this->gridt, - this->bxyz, - LD_pool, - grid_index, - na_grid, - block_index.data(), - block_size.data(), - cal_flag.get_ptr_2D(), - psir_vlbr3.get_ptr_2D(), - psir_vlbr3_DM.get_ptr_2D(), - this->DMRGint[inout->ispin], - false); - - if(inout->isforce) - { - //do integration to get force - this-> cal_meshball_force(grid_index, na_grid, block_size.data(), block_index.data(), - psir_vlbr3_DM.get_ptr_2D(), dpsir_ylm_x.get_ptr_2D(), - dpsir_ylm_y.get_ptr_2D(), dpsir_ylm_z.get_ptr_2D(), - fvl_dphi_thread); - } - if(inout->isstress) - { - //calculating g_mu(r)*(r-R) where R is the location of atom - - // The array dpsirr contains derivatives of psir in the xx, xy, xz, yy, yz, zz directions, - // with each set of six numbers representing the derivatives in these respective directions. - ModuleBase::Array_Pool dpsirr_ylm(this->bxyz, LD_pool * 6); - Gint_Tools::cal_dpsirr_ylm(*this->gridt, this->bxyz, na_grid, grid_index, block_index.data(), - block_size.data(), cal_flag.get_ptr_2D(),dpsir_ylm_x.get_ptr_2D(), - dpsir_ylm_y.get_ptr_2D(),dpsir_ylm_z.get_ptr_2D(), - dpsirr_ylm.get_ptr_2D()); - - //do integration to get stress - this-> cal_meshball_stress(na_grid, block_index.data(), psir_vlbr3_DM.get_ptr_1D(), - dpsirr_ylm.get_ptr_1D(), svl_dphi_thread); - } - } -#pragma omp critical(gint) - { - if (inout->isforce) { - inout->fvl_dphi[0] += fvl_dphi_thread[0]; - delete fvl_dphi_thread; - } - if (inout->isstress) { - inout->svl_dphi[0] += svl_dphi_thread[0]; - delete svl_dphi_thread; - } - } -} - ModuleBase::TITLE("Gint_interface", "cal_gint_force"); - ModuleBase::timer::tick("Gint_interface", "cal_gint_force"); -} - -void Gint::gint_kernel_force_meta(Gint_inout* inout) { - ModuleBase::TITLE("Gint_interface", "cal_gint_force_meta"); - ModuleBase::timer::tick("Gint_interface", "cal_gint_force_meta"); - const UnitCell& ucell = *this->ucell; - const int max_size = this->gridt->max_atom; - const int ncyz = this->ny * this->nplane; - const double dv = ucell.omega / this->ncxyz; - const double delta_r = this->gridt->dr_uniform; - - -#pragma omp parallel -{ - ModuleBase::matrix* fvl_dphi_thread=inout->fvl_dphi; - ModuleBase::matrix* svl_dphi_thread=inout->svl_dphi; - if (inout->isforce) { - fvl_dphi_thread=new ModuleBase::matrix(*inout->fvl_dphi); - fvl_dphi_thread->zero_out(); - } - if (inout->isstress) { - svl_dphi_thread=new ModuleBase::matrix(*inout->svl_dphi); - svl_dphi_thread->zero_out(); - } - std::vector block_iw(max_size,0); - std::vector block_index(max_size+1,0); - std::vector block_size(max_size,0); - std::vector vldr3(this->bxyz,0.0); - std::vector vkdr3(this->bxyz,0.0); -#pragma omp for schedule(dynamic) - for (int grid_index = 0; grid_index < this->nbxx; grid_index++) { - const int na_grid = this->gridt->how_many_atoms[grid_index]; - if (na_grid == 0) { - continue; - } - Gint_Tools::get_gint_vldr3(vldr3.data(), - inout->vl, - this->bxyz, - this->bx, - this->by, - this->bz, - this->nplane, - this->gridt->start_ind[grid_index], - ncyz, - dv); - - Gint_Tools::get_gint_vldr3(vkdr3.data(), - inout->vofk, - this->bxyz, - this->bx, - this->by, - this->bz, - this->nplane, - this->gridt->start_ind[grid_index], - ncyz, - dv); - //prepare block information - ModuleBase::Array_Pool cal_flag(this->bxyz,max_size); - Gint_Tools::get_block_info(*this->gridt, this->bxyz, na_grid, grid_index, - block_iw.data(), block_index.data(), block_size.data(), cal_flag.get_ptr_2D()); - const int LD_pool = block_index[na_grid]; - - //evaluate psi and dpsi on grids - ModuleBase::Array_Pool psir_ylm(this->bxyz, LD_pool); - ModuleBase::Array_Pool dpsir_ylm_x(this->bxyz, LD_pool); - ModuleBase::Array_Pool dpsir_ylm_y(this->bxyz, LD_pool); - ModuleBase::Array_Pool dpsir_ylm_z(this->bxyz, LD_pool); - ModuleBase::Array_Pool ddpsir_ylm_xx(this->bxyz, LD_pool); - ModuleBase::Array_Pool ddpsir_ylm_xy(this->bxyz, LD_pool); - ModuleBase::Array_Pool ddpsir_ylm_xz(this->bxyz, LD_pool); - ModuleBase::Array_Pool ddpsir_ylm_yy(this->bxyz, LD_pool); - ModuleBase::Array_Pool ddpsir_ylm_yz(this->bxyz, LD_pool); - ModuleBase::Array_Pool ddpsir_ylm_zz(this->bxyz, LD_pool); - - //psi and gradient of psi - Gint_Tools::cal_dpsir_ylm(*this->gridt, this->bxyz, na_grid, grid_index, delta_r, block_index.data(), block_size.data(), cal_flag.get_ptr_2D(), - psir_ylm.get_ptr_2D(), dpsir_ylm_x.get_ptr_2D(), dpsir_ylm_y.get_ptr_2D(), dpsir_ylm_z.get_ptr_2D()); - - //hessian of psi - Gint_Tools::cal_ddpsir_ylm(*this->gridt, this->bxyz, na_grid, grid_index, delta_r, block_index.data(), block_size.data(), cal_flag.get_ptr_2D(), - ddpsir_ylm_xx.get_ptr_2D(), ddpsir_ylm_xy.get_ptr_2D(), ddpsir_ylm_xz.get_ptr_2D(), - ddpsir_ylm_yy.get_ptr_2D(), ddpsir_ylm_yz.get_ptr_2D(), ddpsir_ylm_zz.get_ptr_2D()); - - //calculating f_mu(r) = v(r)*psi_mu(r)*dv - const ModuleBase::Array_Pool psir_vlbr3 - = Gint_Tools::get_psir_vlbr3(this->bxyz, na_grid, LD_pool, block_index.data(), cal_flag.get_ptr_2D(), vldr3.data(), psir_ylm.get_ptr_2D()); - const ModuleBase::Array_Pool dpsir_x_vlbr3 - = Gint_Tools::get_psir_vlbr3(this->bxyz, na_grid, LD_pool, block_index.data(), cal_flag.get_ptr_2D(), vkdr3.data(), dpsir_ylm_x.get_ptr_2D()); - const ModuleBase::Array_Pool dpsir_y_vlbr3 - = Gint_Tools::get_psir_vlbr3(this->bxyz, na_grid, LD_pool, block_index.data(), cal_flag.get_ptr_2D(), vkdr3.data(), dpsir_ylm_y.get_ptr_2D()); - const ModuleBase::Array_Pool dpsir_z_vlbr3 - = Gint_Tools::get_psir_vlbr3(this->bxyz, na_grid, LD_pool, block_index.data(), cal_flag.get_ptr_2D(), vkdr3.data(), dpsir_ylm_z.get_ptr_2D()); - - ModuleBase::Array_Pool psir_vlbr3_DM(this->bxyz, LD_pool); - ModuleBase::Array_Pool dpsirx_v_DM(this->bxyz, LD_pool); - ModuleBase::Array_Pool dpsiry_v_DM(this->bxyz, LD_pool); - ModuleBase::Array_Pool dpsirz_v_DM(this->bxyz, LD_pool); - - ModuleBase::GlobalFunc::ZEROS(psir_vlbr3_DM.get_ptr_1D(), this->bxyz*LD_pool); - ModuleBase::GlobalFunc::ZEROS(dpsirx_v_DM.get_ptr_1D(), this->bxyz*LD_pool); - ModuleBase::GlobalFunc::ZEROS(dpsiry_v_DM.get_ptr_1D(), this->bxyz*LD_pool); - ModuleBase::GlobalFunc::ZEROS(dpsirz_v_DM.get_ptr_1D(), this->bxyz*LD_pool); - - //calculating g_mu(r) = sum_nu rho_mu,nu f_nu(r) - Gint_Tools::mult_psi_DMR(*this->gridt, this->bxyz, LD_pool, grid_index, - na_grid, block_index.data(), block_size.data(), cal_flag.get_ptr_2D(), - psir_vlbr3.get_ptr_2D(), psir_vlbr3_DM.get_ptr_2D(), this->DMRGint[inout->ispin], false); - - Gint_Tools::mult_psi_DMR(*this->gridt, this->bxyz, LD_pool, grid_index, - na_grid, block_index.data(), block_size.data(), cal_flag.get_ptr_2D(), - dpsir_x_vlbr3.get_ptr_2D(), dpsirx_v_DM.get_ptr_2D(), this->DMRGint[inout->ispin], false); - - Gint_Tools::mult_psi_DMR(*this->gridt, this->bxyz, LD_pool, grid_index, - na_grid, block_index.data(), block_size.data(), cal_flag.get_ptr_2D(), - dpsir_y_vlbr3.get_ptr_2D(), dpsiry_v_DM.get_ptr_2D(), this->DMRGint[inout->ispin], false); - - Gint_Tools::mult_psi_DMR(*this->gridt, this->bxyz, LD_pool, grid_index, - na_grid, block_index.data(), block_size.data(), cal_flag.get_ptr_2D(), - dpsir_z_vlbr3.get_ptr_2D(), dpsirz_v_DM.get_ptr_2D(), this->DMRGint[inout->ispin], false); - - if(inout->isforce) - { - //do integration to get force - this-> cal_meshball_force(grid_index, na_grid, block_size.data(), block_index.data(), - psir_vlbr3_DM.get_ptr_2D(), dpsir_ylm_x.get_ptr_2D(), dpsir_ylm_y.get_ptr_2D(), dpsir_ylm_z.get_ptr_2D(), - fvl_dphi_thread); - - this-> cal_meshball_force(grid_index, na_grid, block_size.data(), block_index.data(), - dpsirx_v_DM.get_ptr_2D(), ddpsir_ylm_xx.get_ptr_2D(), ddpsir_ylm_xy.get_ptr_2D(), ddpsir_ylm_xz.get_ptr_2D(), - fvl_dphi_thread); - this-> cal_meshball_force(grid_index, na_grid, block_size.data(), block_index.data(), - dpsiry_v_DM.get_ptr_2D(), ddpsir_ylm_xy.get_ptr_2D(), ddpsir_ylm_yy.get_ptr_2D(), ddpsir_ylm_yz.get_ptr_2D(), - fvl_dphi_thread); - this-> cal_meshball_force(grid_index, na_grid, block_size.data(), block_index.data(), - dpsirz_v_DM.get_ptr_2D(), ddpsir_ylm_xz.get_ptr_2D(), ddpsir_ylm_yz.get_ptr_2D(), ddpsir_ylm_zz.get_ptr_2D(), - fvl_dphi_thread); - - } - if(inout->isstress) - { - //calculating g_mu(r)*(r-R) where R is the location of atom - ModuleBase::Array_Pool array(this->bxyz, LD_pool * 6); - - //the vxc part - Gint_Tools::cal_dpsirr_ylm(*this->gridt, this->bxyz, na_grid, grid_index, block_index.data(), block_size.data(), cal_flag.get_ptr_2D(), - dpsir_ylm_x.get_ptr_2D(), dpsir_ylm_y.get_ptr_2D(), dpsir_ylm_z.get_ptr_2D(), array.get_ptr_2D()); - //do integration to get stress - this-> cal_meshball_stress(na_grid, block_index.data(), psir_vlbr3_DM.get_ptr_1D(), - array.get_ptr_1D(), svl_dphi_thread); - - //partial x of vtau part - Gint_Tools::cal_dpsirr_ylm(*this->gridt, this->bxyz, na_grid, grid_index, block_index.data(), block_size.data(), cal_flag.get_ptr_2D(), - ddpsir_ylm_xx.get_ptr_2D(), ddpsir_ylm_xy.get_ptr_2D(), ddpsir_ylm_xz.get_ptr_2D(), array.get_ptr_2D()); - //do integration to get stress - this-> cal_meshball_stress(na_grid, block_index.data(), dpsirx_v_DM.get_ptr_1D(), - array.get_ptr_1D(), svl_dphi_thread); - - //partial y of vtau part - Gint_Tools::cal_dpsirr_ylm(*this->gridt, this->bxyz, na_grid, grid_index, block_index.data(), block_size.data(), cal_flag.get_ptr_2D(), - ddpsir_ylm_xy.get_ptr_2D(), ddpsir_ylm_yy.get_ptr_2D(), ddpsir_ylm_yz.get_ptr_2D(), array.get_ptr_2D()); - //do integration to get stress - this-> cal_meshball_stress(na_grid, block_index.data(), dpsiry_v_DM.get_ptr_1D(), - array.get_ptr_1D(), svl_dphi_thread); - - //partial z of vtau part - Gint_Tools::cal_dpsirr_ylm(*this->gridt, this->bxyz, na_grid, grid_index, block_index.data(), block_size.data(), cal_flag.get_ptr_2D(), - ddpsir_ylm_xz.get_ptr_2D(), ddpsir_ylm_yz.get_ptr_2D(), ddpsir_ylm_zz.get_ptr_2D(), array.get_ptr_2D()); - //do integration to get stress - this-> cal_meshball_stress(na_grid, block_index.data(), dpsirz_v_DM.get_ptr_1D(), - array.get_ptr_1D(), svl_dphi_thread); - } - } -#pragma omp critical(gint) - { - if (inout->isforce) { - inout->fvl_dphi[0] += fvl_dphi_thread[0]; - delete fvl_dphi_thread; - } - if (inout->isstress) { - inout->svl_dphi[0] += svl_dphi_thread[0]; - delete svl_dphi_thread; - } - } -} - ModuleBase::TITLE("Gint_interface", "cal_gint_force_meta"); - ModuleBase::timer::tick("Gint_interface", "cal_gint_force_meta"); -} diff --git a/source/source_lcao/module_gint/gint_force_gpu.cu b/source/source_lcao/module_gint/gint_force_gpu.cu deleted file mode 100644 index cb3390aacc..0000000000 --- a/source/source_lcao/module_gint/gint_force_gpu.cu +++ /dev/null @@ -1,301 +0,0 @@ -#ifdef _OPENMP -#include -#endif - -#include "gint_force_gpu.h" -#include "kernels/cuda/cuda_tools.cuh" -#include "kernels/cuda/gint_force.cuh" -#include "source_base/ylm.h" -#include "gint_tools.h" - -namespace GintKernel -{ -/** - * @brief Calculate forces and stresses - * @note The grid integration on the GPU is mainly divided into the following - * steps: - * 1. Use the CPU to divide the grid integration into subtasks. - * 2. Copy the subtask information to the GPU. - * 3. Calculate the matrix elements on the GPU. - * 4. Perform matrix multiplication on the GPU. - * 5. stress dot on the GPU. - * 6. force dot on the GPU. - * 7. Copy the results back to the host. - */ -void gint_fvl_gpu(const hamilt::HContainer* dm, - const double* vlocal, - double* force_in, - double* stress_in, - double dr, - const double* rcut, - const int isforce, - const int isstress, - const Grid_Technique& gridt, - const UnitCell& ucell) -{ - checkCuda(cudaSetDevice(gridt.dev_id)); - // checkCuda(cudaSetDeviceFlags(cudaDeviceScheduleBlockingSync)); - - const int nbzp = gridt.nbzp; - const int max_atom = gridt.max_atom; - const int nwmax = ucell.nwmax; - const int bxyz = gridt.bxyz; - const int max_atom_per_bcell = max_atom * bxyz; - const int max_atom_per_z = max_atom_per_bcell * nbzp; - const int max_phi_per_z = max_atom_per_z * ucell.nwmax; - const int max_atompair_per_z = max_atom * max_atom * nbzp; - const double vfactor = ucell.omega / gridt.ncxyz; - const int nczp = nbzp * gridt.bz; - const int nat=ucell.nat; - - const int num_streams = gridt.nstreams; - - std::vector streams(num_streams); - std::vector events(num_streams); - for (int i = 0; i < num_streams; i++) - { - checkCuda(cudaStreamCreate(&streams[i])); - checkCuda(cudaEventCreateWithFlags(&events[i], cudaEventDisableTiming)); - } - - Cuda_Mem_Wrapper dr_part(3 * max_atom_per_z, num_streams, true); - Cuda_Mem_Wrapper atoms_type(max_atom_per_z, num_streams, true); - Cuda_Mem_Wrapper iat_on_nbz(max_atom_per_z, num_streams, true); - // The first number in every group of two represents the number of atoms on that bigcell. - // The second number represents the cumulative number of atoms up to that bigcell. - Cuda_Mem_Wrapper atoms_num_info(2 * nbzp, num_streams, true); - Cuda_Mem_Wrapper vldr3(nbzp * gridt.bxyz, num_streams, true); - - Cuda_Mem_Wrapper psi(max_phi_per_z, num_streams, false); - Cuda_Mem_Wrapper psi_dm(max_phi_per_z, num_streams, false); - Cuda_Mem_Wrapper dpsi(3 * max_phi_per_z, num_streams, false); - Cuda_Mem_Wrapper d2psi(6 * max_phi_per_z, num_streams, false); - - Cuda_Mem_Wrapper gemm_alpha(max_atompair_per_z, num_streams, true); - Cuda_Mem_Wrapper gemm_m(max_atompair_per_z, num_streams, true); - Cuda_Mem_Wrapper gemm_n(max_atompair_per_z, num_streams, true); - Cuda_Mem_Wrapper gemm_k(max_atompair_per_z, num_streams, true); - Cuda_Mem_Wrapper gemm_lda(max_atompair_per_z, num_streams, true); - Cuda_Mem_Wrapper gemm_ldb(max_atompair_per_z, num_streams, true); - Cuda_Mem_Wrapper gemm_ldc(max_atompair_per_z, num_streams, true); - Cuda_Mem_Wrapper gemm_A(max_atompair_per_z, num_streams, true); - Cuda_Mem_Wrapper gemm_B(max_atompair_per_z, num_streams, true); - Cuda_Mem_Wrapper gemm_C(max_atompair_per_z, num_streams, true); - - Cuda_Mem_Wrapper force(3 * nat, num_streams, true); - Cuda_Mem_Wrapper stress(6, num_streams, true); - - Cuda_Mem_Wrapper dm_matrix(dm->get_nnr(), 1, false); - // retrieve the density matrix on the host - checkCuda(cudaMemcpy(dm_matrix.get_device_pointer(), - dm->get_wrapper(), - dm->get_nnr() * sizeof(double), - cudaMemcpyHostToDevice)); - -#ifdef _OPENMP -const int max_thread_num = std::min(omp_get_max_threads(), num_streams); -#endif -#pragma omp parallel num_threads(max_thread_num) -{ -#ifdef _OPENMP - const int tid = omp_get_thread_num(); - const int num_threads = omp_get_num_threads(); - const int sid_start = tid * num_streams / num_threads; - const int thread_num_streams = tid == num_threads - 1 ? num_streams - sid_start : num_streams / num_threads; -#else - const int sid_start = 0; - const int thread_num_streams = num_streams; -#endif -#pragma omp for collapse(2) schedule(dynamic) - for (int i = 0; i < gridt.nbx; i++) - { - for (int j = 0; j < gridt.nby; j++) - { - // 20240620 Note that it must be set again here because - // cuda's device is not safe in a multi-threaded environment. - checkCuda(cudaSetDevice(gridt.dev_id)); - - const int sid = (i * gridt.nby + j) % thread_num_streams + sid_start; - checkCuda(cudaEventSynchronize(events[sid])); - - int max_m = 0; - int max_n = 0; - int atom_pair_num = 0; - int atoms_per_z = 0; - const int grid_index_ij = i * gridt.nby * nbzp + j * nbzp; - - gtask_force(gridt, - ucell, - grid_index_ij, - nczp, - vfactor, - vlocal, - atoms_per_z, - atoms_num_info.get_host_pointer(sid), - iat_on_nbz.get_host_pointer(sid), - atoms_type.get_host_pointer(sid), - dr_part.get_host_pointer(sid), - vldr3.get_host_pointer(sid)); - - alloc_mult_force(dm, - gridt, - ucell, - grid_index_ij, - max_atom, - atoms_num_info.get_host_pointer(sid), - psi.get_device_pointer(sid), - psi_dm.get_device_pointer(sid), - dm_matrix.get_device_pointer(), - max_m, - max_n, - atom_pair_num, - gemm_m.get_host_pointer(sid), - gemm_n.get_host_pointer(sid), - gemm_k.get_host_pointer(sid), - gemm_lda.get_host_pointer(sid), - gemm_ldb.get_host_pointer(sid), - gemm_ldc.get_host_pointer(sid), - gemm_A.get_host_pointer(sid), - gemm_B.get_host_pointer(sid), - gemm_C.get_host_pointer(sid)); - - dr_part.copy_host_to_device_async(streams[sid], sid, 3 * atoms_per_z); - atoms_type.copy_host_to_device_async(streams[sid], sid, atoms_per_z); - iat_on_nbz.copy_host_to_device_async(streams[sid], sid, atoms_per_z); - vldr3.copy_host_to_device_async(streams[sid], sid); - atoms_num_info.copy_host_to_device_async(streams[sid], sid); - - gemm_m.copy_host_to_device_async(streams[sid], sid, atom_pair_num); - gemm_n.copy_host_to_device_async(streams[sid], sid, atom_pair_num); - gemm_k.copy_host_to_device_async(streams[sid], sid, atom_pair_num); - gemm_lda.copy_host_to_device_async(streams[sid], sid, atom_pair_num); - gemm_ldb.copy_host_to_device_async(streams[sid], sid, atom_pair_num); - gemm_ldc.copy_host_to_device_async(streams[sid], sid, atom_pair_num); - gemm_A.copy_host_to_device_async(streams[sid], sid, atom_pair_num); - gemm_B.copy_host_to_device_async(streams[sid], sid, atom_pair_num); - gemm_C.copy_host_to_device_async(streams[sid], sid, atom_pair_num); - checkCuda(cudaEventRecord(events[sid], streams[sid])); - - psi.memset_device_async(streams[sid], sid, 0); - psi_dm.memset_device_async(streams[sid], sid, 0); - dpsi.memset_device_async(streams[sid], sid, 0); - d2psi.memset_device_async(streams[sid], sid, 0); - - dim3 grid_psi(nbzp, gridt.bxyz); - dim3 block_psi(64); - get_psi_force<<>>( - gridt.ylmcoef_g, - dr, - bxyz, - nwmax, - max_atom, - gridt.atom_nwl_g, - gridt.atom_new_g, - gridt.atom_ylm_g, - gridt.atom_l_g, - gridt.atom_nw_g, - gridt.rcut_g, - gridt.nr_max, - gridt.psi_u_g, - gridt.mcell_pos_g, - dr_part.get_device_pointer(sid), - vldr3.get_device_pointer(sid), - atoms_type.get_device_pointer(sid), - atoms_num_info.get_device_pointer(sid), - psi.get_device_pointer(sid), - dpsi.get_device_pointer(sid), - d2psi.get_device_pointer(sid)); - checkCudaLastError(); - - gridt.fastest_matrix_mul(max_m, - max_n, - gemm_m.get_device_pointer(sid), - gemm_n.get_device_pointer(sid), - gemm_k.get_device_pointer(sid), - gemm_A.get_device_pointer(sid), - gemm_lda.get_device_pointer(sid), - gemm_B.get_device_pointer(sid), - gemm_ldb.get_device_pointer(sid), - gemm_C.get_device_pointer(sid), - gemm_ldc.get_device_pointer(sid), - atom_pair_num, - streams[sid], - nullptr); - - if (isforce){ - dim3 grid_force(nbzp); - dim3 block_force(64); - dot_product_force<<>>( - bxyz, - nwmax, - atoms_num_info.get_device_pointer(sid), - iat_on_nbz.get_device_pointer(sid), - dpsi.get_device_pointer(sid), - psi_dm.get_device_pointer(sid), - force.get_device_pointer(sid)); - checkCudaLastError(); - } - - if (isstress){ - dim3 grid_stress(nbzp); - dim3 block_stress(64); - dot_product_stress<<>>( - d2psi.get_device_pointer(sid), - psi_dm.get_device_pointer(sid), - atoms_per_z * nwmax * bxyz, - stress.get_device_pointer(sid)); - checkCudaLastError(); - } - } - } -} - - for(int i = 0; i < num_streams; i++) - { - stress.copy_device_to_host_async(streams[i], i); - force.copy_device_to_host_async(streams[i], i); - } - - for (int i = 0; i < num_streams; i++) - { - checkCuda(cudaStreamSynchronize(streams[i])); - checkCuda(cudaEventDestroy(events[i])); - } - - if (isstress){ - for (int i = 0; i < num_streams; i++) - { - const int offset = 6 * i; - for (int j = 0; j < 6; j++) - { - stress_in[j] += stress.get_host_pointer()[offset + j]; - } - } - } - if (isforce){ - for (int i = 0; i < num_streams; i++) - { - const int offset = 3 * i * nat; - for (int j = 0; j < 3 * nat; j++) - { - force_in[j] += force.get_host_pointer()[offset + j]; - } - } - } - - for (int i = 0; i < num_streams; i++) - { - checkCuda(cudaStreamDestroy(streams[i])); - } -} - -} // namespace GintKernel diff --git a/source/source_lcao/module_gint/gint_force_gpu.h b/source/source_lcao/module_gint/gint_force_gpu.h deleted file mode 100644 index 0dac4a99d6..0000000000 --- a/source/source_lcao/module_gint/gint_force_gpu.h +++ /dev/null @@ -1,55 +0,0 @@ -#ifndef W_ABACUS_DEVELOP_ABACUS_DEVELOP_SOURCE_MODULE_HAMILT_LCAO_MODULE_GINT_GINT_FORCE_GPU_H -#define W_ABACUS_DEVELOP_ABACUS_DEVELOP_SOURCE_MODULE_HAMILT_LCAO_MODULE_GINT_GINT_FORCE_GPU_H - -#include "source_lcao/module_gint/gint.h" -#include "source_lcao/module_gint/grid_technique.h" -namespace GintKernel -{ -void gint_fvl_gpu(const hamilt::HContainer* dm, - const double* vlocal, - double* force_in, - double* stress_in, - double dr, - const double* rcut, - const int isforce, - const int isstress, - const Grid_Technique& gridt, - const UnitCell& ucell); - -void gtask_force(const Grid_Technique& gridt, - const UnitCell& ucell, - const int grid_index_ij, - const int nczp, - const double vfactor, - const double* vlocal_global_value, - int& atoms_per_z, - int* atoms_num_info, - int* iat_on_nbz, - uint8_t* atoms_type, - double* dr_part, - double* vldr3); - -void alloc_mult_force(const hamilt::HContainer* dm, - const Grid_Technique& gridt, - const UnitCell& ucell, - const int grid_index_ij, - const int max_atom, - const int *atoms_num_info, - double* const psi_g, - double* const psi_dm_g, - double* const dm_matrix_g, - int& max_m, - int& max_n, - int& atom_pair_num, - int* mat_m, - int* mat_n, - int* mat_k, - int* mat_lda, - int* mat_ldb, - int* mat_ldc, - double** mat_A, - double** mat_B, - double** mat_C); - -} // namespace GintKernel -#endif diff --git a/source/source_lcao/module_gint/temp_gint/gint_fvl.cpp b/source/source_lcao/module_gint/gint_fvl.cpp similarity index 95% rename from source/source_lcao/module_gint/temp_gint/gint_fvl.cpp rename to source/source_lcao/module_gint/gint_fvl.cpp index 3fc9bde005..11a7e1620d 100644 --- a/source/source_lcao/module_gint/temp_gint/gint_fvl.cpp +++ b/source/source_lcao/module_gint/gint_fvl.cpp @@ -49,8 +49,9 @@ void Gint_fvl::cal_fvl_svl_() svl_thread->zero_out(); } #pragma omp for schedule(dynamic) - for(const auto& biggrid: gint_info_->get_biggrids()) + for (int i = 0; i < gint_info_->get_bgrids_num(); i++) { + const auto& biggrid = gint_info_->get_biggrids()[i]; if(biggrid->get_atoms().size() == 0) { continue; diff --git a/source/source_lcao/module_gint/temp_gint/gint_fvl.h b/source/source_lcao/module_gint/gint_fvl.h similarity index 100% rename from source/source_lcao/module_gint/temp_gint/gint_fvl.h rename to source/source_lcao/module_gint/gint_fvl.h diff --git a/source/source_lcao/module_gint/temp_gint/gint_fvl_gpu.cpp b/source/source_lcao/module_gint/gint_fvl_gpu.cpp similarity index 88% rename from source/source_lcao/module_gint/temp_gint/gint_fvl_gpu.cpp rename to source/source_lcao/module_gint/gint_fvl_gpu.cpp index 1d90304d2c..dffd7616e1 100644 --- a/source/source_lcao/module_gint/temp_gint/gint_fvl_gpu.cpp +++ b/source/source_lcao/module_gint/gint_fvl_gpu.cpp @@ -3,6 +3,7 @@ #include "gint_helper.h" #include "batch_biggrid.h" #include "kernel/phi_operator_gpu.h" +#include "source_base/module_device/device_check.h" namespace ModuleGint { @@ -33,10 +34,10 @@ void Gint_fvl_gpu::transfer_cpu_to_gpu_() for (int is = 0; is < nspin_; is++) { dm_gint_d_vec_[is] = CudaMemWrapper(dm_gint_vec_[is].get_nnr(), 0, false); - checkCuda(cudaMemcpy(dm_gint_d_vec_[is].get_device_ptr(), dm_gint_vec_[is].get_wrapper(), + CHECK_CUDA(cudaMemcpy(dm_gint_d_vec_[is].get_device_ptr(), dm_gint_vec_[is].get_wrapper(), dm_gint_vec_[is].get_nnr() * sizeof(double), cudaMemcpyHostToDevice)); vr_eff_d_vec_[is] = CudaMemWrapper(gint_info_->get_local_mgrid_num(), 0, false); - checkCuda(cudaMemcpy(vr_eff_d_vec_[is].get_device_ptr(), vr_eff_[is], + CHECK_CUDA(cudaMemcpy(vr_eff_d_vec_[is].get_device_ptr(), vr_eff_[is], gint_info_->get_local_mgrid_num() * sizeof(double), cudaMemcpyHostToDevice)); } if (isforce_) @@ -81,9 +82,9 @@ void Gint_fvl_gpu::cal_fvl_svl_() { // 20240620 Note that it must be set again here because // cuda's device is not safe in a multi-threaded environment. - checkCuda(cudaSetDevice(gint_info_->get_dev_id())); + CHECK_CUDA(cudaSetDevice(gint_info_->get_dev_id())); cudaStream_t stream; - checkCuda(cudaStreamCreate(&stream)); + CHECK_CUDA(cudaStreamCreate(&stream)); PhiOperatorGpu phi_op(gint_info_->get_gpu_vars(), stream); CudaMemWrapper phi(BatchBigGrid::get_max_phi_len(), stream, false); CudaMemWrapper phi_vldr3(BatchBigGrid::get_max_phi_len(), stream, false); @@ -93,8 +94,9 @@ void Gint_fvl_gpu::cal_fvl_svl_() CudaMemWrapper dphi_z(BatchBigGrid::get_max_phi_len(), stream, false); #pragma omp for schedule(dynamic) - for(const auto& bgrid_batch: gint_info_->get_bgrid_batches()) + for (int i = 0; i < gint_info_->get_bgrid_batches_num(); ++i) { + const auto& bgrid_batch = gint_info_->get_bgrid_batches()[i]; if(bgrid_batch->empty()) { continue; @@ -125,8 +127,8 @@ void Gint_fvl_gpu::cal_fvl_svl_() } } } - checkCuda(cudaStreamSynchronize(stream)); - checkCuda(cudaStreamDestroy(stream)); + CHECK_CUDA(cudaStreamSynchronize(stream)); + CHECK_CUDA(cudaStreamDestroy(stream)); } transfer_gpu_to_cpu_(); } diff --git a/source/source_lcao/module_gint/temp_gint/gint_fvl_gpu.h b/source/source_lcao/module_gint/gint_fvl_gpu.h similarity index 95% rename from source/source_lcao/module_gint/temp_gint/gint_fvl_gpu.h rename to source/source_lcao/module_gint/gint_fvl_gpu.h index b613333e7a..cdbcd40aa9 100644 --- a/source/source_lcao/module_gint/temp_gint/gint_fvl_gpu.h +++ b/source/source_lcao/module_gint/gint_fvl_gpu.h @@ -6,7 +6,7 @@ #include "source_base/matrix.h" #include "gint.h" #include "gint_info.h" -#include "source_lcao/module_gint/temp_gint/kernel/cuda_mem_wrapper.h" +#include "source_lcao/module_gint/kernel/cuda_mem_wrapper.h" namespace ModuleGint { diff --git a/source/source_lcao/module_gint/temp_gint/gint_fvl_meta.cpp b/source/source_lcao/module_gint/gint_fvl_meta.cpp similarity index 97% rename from source/source_lcao/module_gint/temp_gint/gint_fvl_meta.cpp rename to source/source_lcao/module_gint/gint_fvl_meta.cpp index 3299600c99..728cd042a4 100644 --- a/source/source_lcao/module_gint/temp_gint/gint_fvl_meta.cpp +++ b/source/source_lcao/module_gint/gint_fvl_meta.cpp @@ -61,8 +61,9 @@ void Gint_fvl_meta::cal_fvl_svl_() svl_thread->zero_out(); } #pragma omp for schedule(dynamic) - for(const auto& biggrid: gint_info_->get_biggrids()) + for (int i = 0; i < gint_info_->get_bgrids_num(); i++) { + const auto& biggrid = gint_info_->get_biggrids()[i]; if(biggrid->get_atoms().size() == 0) { continue; diff --git a/source/source_lcao/module_gint/temp_gint/gint_fvl_meta.h b/source/source_lcao/module_gint/gint_fvl_meta.h similarity index 100% rename from source/source_lcao/module_gint/temp_gint/gint_fvl_meta.h rename to source/source_lcao/module_gint/gint_fvl_meta.h diff --git a/source/source_lcao/module_gint/temp_gint/gint_fvl_meta_gpu.cpp b/source/source_lcao/module_gint/gint_fvl_meta_gpu.cpp similarity index 93% rename from source/source_lcao/module_gint/temp_gint/gint_fvl_meta_gpu.cpp rename to source/source_lcao/module_gint/gint_fvl_meta_gpu.cpp index fa19925d04..59ab3cb2ea 100644 --- a/source/source_lcao/module_gint/temp_gint/gint_fvl_meta_gpu.cpp +++ b/source/source_lcao/module_gint/gint_fvl_meta_gpu.cpp @@ -3,6 +3,7 @@ #include "gint_helper.h" #include "batch_biggrid.h" #include "kernel/phi_operator_gpu.h" +#include "source_base/module_device/device_check.h" namespace ModuleGint { @@ -34,13 +35,13 @@ void Gint_fvl_meta_gpu::transfer_cpu_to_gpu_() for (int is = 0; is < nspin_; is++) { dm_gint_d_vec_[is] = CudaMemWrapper(dm_gint_vec_[is].get_nnr(), 0, false); - checkCuda(cudaMemcpy(dm_gint_d_vec_[is].get_device_ptr(), dm_gint_vec_[is].get_wrapper(), + CHECK_CUDA(cudaMemcpy(dm_gint_d_vec_[is].get_device_ptr(), dm_gint_vec_[is].get_wrapper(), dm_gint_vec_[is].get_nnr() * sizeof(double), cudaMemcpyHostToDevice)); vr_eff_d_vec_[is] = CudaMemWrapper(gint_info_->get_local_mgrid_num(), 0, false); - checkCuda(cudaMemcpy(vr_eff_d_vec_[is].get_device_ptr(), vr_eff_[is], + CHECK_CUDA(cudaMemcpy(vr_eff_d_vec_[is].get_device_ptr(), vr_eff_[is], gint_info_->get_local_mgrid_num() * sizeof(double), cudaMemcpyHostToDevice)); vofk_d_vec_[is] = CudaMemWrapper(gint_info_->get_local_mgrid_num(), 0, false); - checkCuda(cudaMemcpy(vofk_d_vec_[is].get_device_ptr(), vofk_[is], + CHECK_CUDA(cudaMemcpy(vofk_d_vec_[is].get_device_ptr(), vofk_[is], gint_info_->get_local_mgrid_num() * sizeof(double), cudaMemcpyHostToDevice)); } if (isforce_) @@ -85,9 +86,9 @@ void Gint_fvl_meta_gpu::cal_fvl_svl_() { // 20240620 Note that it must be set again here because // cuda's device is not safe in a multi-threaded environment. - checkCuda(cudaSetDevice(gint_info_->get_dev_id())); + CHECK_CUDA(cudaSetDevice(gint_info_->get_dev_id())); cudaStream_t stream; - checkCuda(cudaStreamCreate(&stream)); + CHECK_CUDA(cudaStreamCreate(&stream)); PhiOperatorGpu phi_op(gint_info_->get_gpu_vars(), stream); CudaMemWrapper phi(BatchBigGrid::get_max_phi_len(), stream, false); CudaMemWrapper phi_vldr3(BatchBigGrid::get_max_phi_len(), stream, false); @@ -108,8 +109,9 @@ void Gint_fvl_meta_gpu::cal_fvl_svl_() CudaMemWrapper ddphi_yz(BatchBigGrid::get_max_phi_len(), stream, false); CudaMemWrapper ddphi_zz(BatchBigGrid::get_max_phi_len(), stream, false); #pragma omp for schedule(dynamic) - for(const auto& bgrid_batch: gint_info_->get_bgrid_batches()) + for (int i = 0; i < gint_info_->get_bgrid_batches_num(); ++i) { + const auto& bgrid_batch = gint_info_->get_bgrid_batches()[i]; if(bgrid_batch->empty()) { continue; @@ -173,8 +175,8 @@ void Gint_fvl_meta_gpu::cal_fvl_svl_() } } } - checkCuda(cudaStreamSynchronize(stream)); - checkCuda(cudaStreamDestroy(stream)); + CHECK_CUDA(cudaStreamSynchronize(stream)); + CHECK_CUDA(cudaStreamDestroy(stream)); } transfer_gpu_to_cpu_(); } diff --git a/source/source_lcao/module_gint/temp_gint/gint_fvl_meta_gpu.h b/source/source_lcao/module_gint/gint_fvl_meta_gpu.h similarity index 95% rename from source/source_lcao/module_gint/temp_gint/gint_fvl_meta_gpu.h rename to source/source_lcao/module_gint/gint_fvl_meta_gpu.h index 2b9d88aec2..a1b41cbd61 100644 --- a/source/source_lcao/module_gint/temp_gint/gint_fvl_meta_gpu.h +++ b/source/source_lcao/module_gint/gint_fvl_meta_gpu.h @@ -6,7 +6,7 @@ #include "source_base/matrix.h" #include "gint.h" #include "gint_info.h" -#include "source_lcao/module_gint/temp_gint/kernel/cuda_mem_wrapper.h" +#include "source_lcao/module_gint/kernel/cuda_mem_wrapper.h" namespace ModuleGint { diff --git a/source/source_lcao/module_gint/gint_fvl_old.cpp b/source/source_lcao/module_gint/gint_fvl_old.cpp deleted file mode 100644 index 663a7ddce6..0000000000 --- a/source/source_lcao/module_gint/gint_fvl_old.cpp +++ /dev/null @@ -1,76 +0,0 @@ -#include "gint_k.h" -#include "source_base/timer.h" -#include "source_base/ylm.h" -#include "source_pw/module_pwdft/global.h" -#include "source_base/array_pool.h" - -// This function utilizes the cache more effectively than calling the ddot function, thus performing faster. -void Gint::cal_meshball_force( - const int grid_index, - const int na_grid, // how many atoms on this (i,j,k) grid - const int*const block_size, // block_size[na_grid], number of columns of a band - const int*const block_index, // block_index[na_grid+1], count total number of atomis orbitals - const double*const*const psir_vlbr3_DMR, // psir_vlbr3[this->bxyz][LD_pool] - const double*const*const dpsir_x, // psir_vlbr3[this->bxyz][LD_pool] - const double*const*const dpsir_y, // psir_vlbr3[this->bxyz][LD_pool] - const double*const*const dpsir_z, // psir_vlbr3[this->bxyz][LD_pool] - ModuleBase::matrix *force) -{ - for(int ia1=0;ia1gridt->bcell_start[grid_index] + ia1; - const int iat=this->gridt->which_atom[mcell_index]; // index of atom - double rx = 0; - double ry = 0; - double rz = 0; - for(int ib=0; ibbxyz; ib++) - { - for(int iw=0; iwbxyz; - - for(int i=0; i -#endif - -//========================================================= -// ModuleBase::Integral On 3D Grids, different from Grid_Integral -// Feature : Matrix Elements Of Local Potential For -// Numerical Orbitals -//========================================================= - -class Gint_Gamma : public Gint -{ - public: - - //! @brief move operator for the next ESolver to directly use its infomation - //! @param rhs - //! @return *this - Gint_Gamma& operator=(Gint_Gamma&& rhs); - - //! in gint_gamma_vl.cpp - //! there is an additional step in calculating vlocal for gamma point - //! namely the redistribution of Hamiltonian from grid to 2D block format - //! hence we have an additional layer outside the unified interface - void cal_vlocal(Gint_inout* inout, const bool new_e_iteration); - - //! in gint_gamma_env.cpp - //! calcualte the electronic wave functions via grid integral - void cal_env(const double* wfc, double* rho,const UnitCell &ucell); - - //! transfer this->hRGint to Veff::hR - void transfer_pvpR(hamilt::HContainer* hR,const UnitCell* ucell); - -private: - - //! pointer to density matrix - double*** DM = nullptr; - -}; - -#endif diff --git a/source/source_lcao/module_gint/gint_gamma_env.cpp b/source/source_lcao/module_gint/gint_gamma_env.cpp deleted file mode 100644 index 76ae6e506a..0000000000 --- a/source/source_lcao/module_gint/gint_gamma_env.cpp +++ /dev/null @@ -1,101 +0,0 @@ -#include "gint_gamma.h" -#include "grid_technique.h" -#include "source_base/timer.h" -#include "source_base/ylm.h" -#include "source_base/array_pool.h" -#include "source_basis/module_ao/ORB_read.h" -#include "source_pw/module_pwdft/global.h" - -void Gint_Gamma::cal_env(const double* wfc, double* rho,const UnitCell& ucell) -{ - ModuleBase::TITLE("Grid_Integral", "cal_env"); - - // it's a uniform grid to save orbital values, so the delta_r is a constant. - const double delta_r = this->gridt->dr_uniform; - const int max_size = this->gridt->max_atom; - if (max_size <= 0){ - ModuleBase::WARNING_QUIT("Gint_Gamma::cal_env", - "the max_size is less than 0!"); - } - const int nbx = this->gridt->nbx; - const int nby = this->gridt->nby; - const int nbz = this->gridt->nbzp; - const int ncyz = this->ny * this->nplane; // mohan add 2012-03-25 - const int bxyz = this->bxyz; - - #pragma omp parallel - { - std::vector block_iw(max_size, 0); - std::vector block_index(max_size+1, 0); - std::vector block_size(max_size, 0); - std::vector vindex(bxyz,0); - #pragma omp for - for (int grid_index = 0; grid_index < this->nbxx; grid_index++) - { - - // get the value: how many atoms has orbital value on this grid. - const int size = this->gridt->how_many_atoms[grid_index]; - if (size == 0) - continue; - - // int *block_iw, *block_index, *block_size; - ModuleBase::Array_Pool cal_flag(bxyz, size); - Gint_Tools::get_block_info(*this->gridt, - this->bxyz, - size, - grid_index, - block_iw.data(), - block_index.data(), - block_size.data(), - cal_flag.get_ptr_2D()); - const int LD_pool = block_index[size]; - - // evaluate psi on grids - ModuleBase::Array_Pool psir_ylm(this->bxyz, LD_pool); - Gint_Tools::cal_psir_ylm(*this->gridt, - this->bxyz, - size, - grid_index, - delta_r, - block_index.data(), - block_size.data(), - cal_flag.get_ptr_2D(), - psir_ylm.get_ptr_2D()); - - Gint_Tools::get_vindex(this->bxyz, - this->bx, - this->by, - this->bz, - this->nplane, - this->gridt->start_ind[grid_index], - ncyz, - vindex.data()); - - for (int ia1 = 0; ia1 < size; ia1++) - { - const int mcell_index1 = this->gridt->bcell_start[grid_index] + ia1; - const int iat = this->gridt->which_atom[mcell_index1]; - const int T1 = ucell.iat2it[iat]; - Atom* atom1 = &ucell.atoms[T1]; - const int I1 = ucell.iat2ia[iat]; - // get the start index of local orbitals. - const int start1 = ucell.itiaiw2iwt(T1, I1, 0); - for (int ib = 0; ib < this->bxyz; ib++) - { - if (cal_flag[ib][ia1]) - { - int iw1_lo = this->gridt->trace_lo[start1]; - double* psi1 = &psir_ylm[ib][block_index[ia1]]; - double tmp = 0.0; - for (int iw = 0; iw < atom1->nw; ++iw, ++iw1_lo) - { - tmp += psi1[iw] * wfc[iw1_lo]; - } // iw - rho[vindex[ib]] += tmp; - } // cal_flag - } // ib - } // ia1 - } - } - return; -} diff --git a/source/source_lcao/module_gint/gint_gamma_vl.cpp b/source/source_lcao/module_gint/gint_gamma_vl.cpp deleted file mode 100644 index 161a3e7083..0000000000 --- a/source/source_lcao/module_gint/gint_gamma_vl.cpp +++ /dev/null @@ -1,95 +0,0 @@ -//========================================================= -// REFACTOR : Peize Lin, 2021.06.28 -//========================================================= -#include "gint_gamma.h" -#include "gint_tools.h" -#include "grid_technique.h" -#include "source_base/memory.h" -#include "source_base/timer.h" -#include "source_basis/module_ao/ORB_read.h" -#include "source_lcao/module_hcontainer/hcontainer_funcs.h" -#include "source_pw/module_pwdft/global.h" - -#ifdef _OPENMP -#include -#endif - -#ifdef __MKL -#include -#endif - -extern "C" -{ - void Cblacs_gridinfo(int icontxt, int* nprow, int* npcol, int* myprow, int* mypcol); - void Cblacs_pinfo(int* myid, int* nprocs); - void Cblacs_pcoord(int icontxt, int pnum, int* prow, int* pcol); -} - -void Gint_Gamma::cal_vlocal(Gint_inout* inout, bool new_e_iteration) -{ - const int max_size = this->gridt->max_atom; - const int lgd = this->gridt->lgd; - - if (inout->job == Gint_Tools::job_type::vlocal || inout->job == Gint_Tools::job_type::vlocal_meta) - { - if (max_size > 0 && lgd > 0) - { - this->hRGint->set_zero(); - } - - this->cal_gint(inout); - } -} - -#ifdef __MPI -#include "source_lcao/module_hcontainer/hcontainer_funcs.h" -#endif -void Gint_Gamma::transfer_pvpR(hamilt::HContainer* hR, const UnitCell* ucell) -{ - ModuleBase::TITLE("Gint_Gamma", "transfer_pvpR"); - ModuleBase::timer::tick("Gint_Gamma", "transfer_pvpR"); - - for (int iap = 0; iap < this->hRGint->size_atom_pairs(); iap++) - { - auto& ap = this->hRGint->get_atom_pair(iap); - const int iat1 = ap.get_atom_i(); - const int iat2 = ap.get_atom_j(); - if (iat1 > iat2) - { - // fill lower triangle matrix with upper triangle matrix - // gamma_only case, only 1 R_index in each AtomPair - // the upper is - const hamilt::AtomPair* upper_ap = this->hRGint->find_pair(iat2, iat1); -#ifdef __DEBUG - assert(upper_ap != nullptr); -#endif - double* lower_matrix = ap.get_pointer(0); - for (int irow = 0; irow < ap.get_row_size(); ++irow) - { - for (int icol = 0; icol < ap.get_col_size(); ++icol) - { - *lower_matrix++ = upper_ap->get_value(icol, irow); - } - } - } - } - -#ifdef __MPI - int size = 0; - MPI_Comm_size(MPI_COMM_WORLD, &size); - if (size == 1) - { - hR->add(*this->hRGint); - } - else - { - hamilt::transferSerials2Parallels(*this->hRGint, hR); - } -#else - hR->add(*this->hRGint); -#endif - - ModuleBase::timer::tick("Gint_Gamma", "transfer_pvpR"); - - return; -} diff --git a/source/source_lcao/module_gint/gint_gpu_interface.cpp b/source/source_lcao/module_gint/gint_gpu_interface.cpp deleted file mode 100644 index f033722ecf..0000000000 --- a/source/source_lcao/module_gint/gint_gpu_interface.cpp +++ /dev/null @@ -1,108 +0,0 @@ -#include "gint.h" -#include "gint_force_gpu.h" -#include "source_io/module_parameter/parameter.h" -#include "gint_rho_gpu.h" -#include "gint_vl_gpu.h" -#include "source_base/memory.h" -#include "source_base/timer.h" - -void Gint::gpu_vlocal_interface(Gint_inout* inout) { - ModuleBase::TITLE("Gint_interface", "cal_gint_vlocal"); - ModuleBase::timer::tick("Gint_interface", "cal_gint_vlocal"); - - const UnitCell& ucell = *this->ucell; - const double dr = this->gridt->dr_uniform; - double ylmcoef[100]; - ModuleBase::GlobalFunc::ZEROS(ylmcoef, 100); - for (int i = 0; i < 100; i++) { - ylmcoef[i] = ModuleBase::Ylm::ylmcoef[i]; - } - - hamilt::HContainer* hRGint_kernel = PARAM.inp.nspin != 4 ? this->hRGint : this->hRGint_tmp[inout->ispin]; - GintKernel::gint_vl_gpu(hRGint_kernel, - inout->vl, - ylmcoef, - dr, - this->gridt->rcuts.data(), - *this->gridt, - ucell); - - ModuleBase::TITLE("Gint_interface", "cal_gint_vlocal"); - ModuleBase::timer::tick("Gint_interface", "cal_gint_vlocal"); -} - -void Gint::gpu_rho_interface(Gint_inout* inout) { - ModuleBase::TITLE("Gint_interface", "cal_gint_rho"); - ModuleBase::timer::tick("Gint_interface", "cal_gint_rho"); - - const UnitCell& ucell = *this->ucell; - const double dr = this->gridt->dr_uniform; - double ylmcoef[100]; - ModuleBase::GlobalFunc::ZEROS(ylmcoef, 100); - for (int i = 0; i < 100; i++) { - ylmcoef[i] = ModuleBase::Ylm::ylmcoef[i]; - } - int nrxx = this->gridt->ncx * this->gridt->ncy * this->nplane; - for (int is = 0; is < PARAM.inp.nspin; ++is) { - ModuleBase::GlobalFunc::ZEROS(inout->rho[is], nrxx); - GintKernel::gint_rho_gpu(this->DMRGint[is], - ylmcoef, - dr, - this->gridt->rcuts.data(), - *this->gridt, - ucell, - inout->rho[is]); - } - ModuleBase::TITLE("Gint_interface", "cal_gint_rho"); - ModuleBase::timer::tick("Gint_interface", "cal_gint_rho"); -} - -void Gint::gpu_force_interface(Gint_inout* inout) { - ModuleBase::TITLE("Gint_interface", "cal_gint_force"); - ModuleBase::timer::tick("Gint_interface", "cal_gint_force"); - - const UnitCell& ucell = *this->ucell; - const double dr = this->gridt->dr_uniform; - double ylmcoef[100]; - ModuleBase::GlobalFunc::ZEROS(ylmcoef, 100); - for (int i = 0; i < 100; i++) { - ylmcoef[i] = ModuleBase::Ylm::ylmcoef[i]; - } - - const int ncyz = this->ny * this->nplane; - int nat = ucell.nat; - const int isforce = inout->isforce; - const int isstress = inout->isstress; - if (isforce || isstress) { - std::vector force(nat * 3, 0.0); - std::vector stress(6, 0.0); - GintKernel::gint_fvl_gpu(this->DMRGint[inout->ispin], - inout->vl, - force.data(), - stress.data(), - dr, - this->gridt->rcuts.data(), - isforce, - isstress, - *this->gridt, - ucell); - if (inout->isforce) { - for (int iat = 0; iat < nat; iat++) { - inout->fvl_dphi[0](iat, 0) += force[iat * 3]; - inout->fvl_dphi[0](iat, 1) += force[iat * 3 + 1]; - inout->fvl_dphi[0](iat, 2) += force[iat * 3 + 2]; - } - } - if (inout->isstress) { - inout->svl_dphi[0](0, 0) += stress[0]; - inout->svl_dphi[0](0, 1) += stress[1]; - inout->svl_dphi[0](0, 2) += stress[2]; - inout->svl_dphi[0](1, 1) += stress[3]; - inout->svl_dphi[0](1, 2) += stress[4]; - inout->svl_dphi[0](2, 2) += stress[5]; - } - } - - ModuleBase::TITLE("Gint_interface", "cal_gint_force"); - ModuleBase::timer::tick("Gint_interface", "cal_gint_force"); -} \ No newline at end of file diff --git a/source/source_lcao/module_gint/temp_gint/gint_helper.h b/source/source_lcao/module_gint/gint_helper.h similarity index 100% rename from source/source_lcao/module_gint/temp_gint/gint_helper.h rename to source/source_lcao/module_gint/gint_helper.h diff --git a/source/source_lcao/module_gint/temp_gint/gint_info.cpp b/source/source_lcao/module_gint/gint_info.cpp similarity index 96% rename from source/source_lcao/module_gint/temp_gint/gint_info.cpp rename to source/source_lcao/module_gint/gint_info.cpp index c21f1879cf..7117d4d63b 100644 --- a/source/source_lcao/module_gint/temp_gint/gint_info.cpp +++ b/source/source_lcao/module_gint/gint_info.cpp @@ -4,6 +4,7 @@ #include "source_base/timer.h" #include "gint_info.h" #include "gint_type.h" +#include "source_base/memory.h" namespace ModuleGint { @@ -62,6 +63,12 @@ GintInfo::GintInfo( #endif } +GintInfo::~GintInfo() +{ + ModuleBase::Memory::record("GintInfo::trace_lo_", -(long long)(sizeof(int) * trace_lo_.size()), true); + ModuleBase::Memory::record("GintInfo::ijr_info_", -(long long)(sizeof(int) * ijr_info_.size()), true); +} + template HContainer GintInfo::get_hr(int npol) const { @@ -194,6 +201,7 @@ void GintInfo::init_trace_lo_(const UnitCell& ucell, const int nspin) ++iat; } } + ModuleBase::Memory::record("GintInfo::trace_lo_", (long long)(sizeof(int) * trace_lo_.size()), true); } void GintInfo::init_ijr_info_(const UnitCell& ucell, Grid_Driver& gd) @@ -260,6 +268,7 @@ void GintInfo::init_ijr_info_(const UnitCell& ucell, Grid_Driver& gd) } } this->ijr_info_ = hr_gint_local.get_ijr_info(); + ModuleBase::Memory::record("GintInfo::ijr_info_", (long long)(sizeof(int) * ijr_info_.size()), true); return; } diff --git a/source/source_lcao/module_gint/temp_gint/gint_info.h b/source/source_lcao/module_gint/gint_info.h similarity index 90% rename from source/source_lcao/module_gint/temp_gint/gint_info.h rename to source/source_lcao/module_gint/gint_info.h index 7cfe476d25..2bec16ac98 100644 --- a/source/source_lcao/module_gint/temp_gint/gint_info.h +++ b/source/source_lcao/module_gint/gint_info.h @@ -15,7 +15,7 @@ #ifdef __CUDA #include "batch_biggrid.h" -#include "source_lcao/module_gint/temp_gint/kernel/gint_gpu_vars.h" +#include "source_lcao/module_gint/kernel/gint_gpu_vars.h" #endif namespace ModuleGint @@ -33,11 +33,16 @@ class GintInfo const Numerical_Orbital* Phi, const UnitCell& ucell, Grid_Driver& gd); + ~GintInfo(); + // getter functions const std::vector>& get_biggrids() { return biggrids_; } + int get_bgrids_num() const { return static_cast(biggrids_.size()); } const std::vector& get_trace_lo() const{ return trace_lo_; } int get_lgd() const { return lgd_; } int get_nat() const { return ucell_->nat; } // return the number of atoms in the unitcell + const UnitCell* get_ucell() const { return ucell_; } + const std::vector& get_ijr_info() const {return ijr_info_;} int get_local_mgrid_num() const { return localcell_info_->get_mgrids_num(); } double get_mgrid_volume() const { return meshgrid_info_->get_volume(); } @@ -57,7 +62,7 @@ class GintInfo // initialize the ijr_info void init_ijr_info_(const UnitCell& ucell, Grid_Driver& gd); - const UnitCell* ucell_; + const UnitCell* ucell_ = nullptr; // the unitcell information std::shared_ptr unitcell_info_; @@ -101,6 +106,7 @@ class GintInfo #ifdef __CUDA public: std::vector>& get_bgrid_batches() { return bgrid_batches_; }; + int get_bgrid_batches_num() const { return static_cast(bgrid_batches_.size()); }; std::shared_ptr get_gpu_vars() const { return gpu_vars_; }; int get_dev_id() const { return gpu_vars_->dev_id_; }; int get_streams_num() const { return streams_num_; }; diff --git a/source/source_lcao/module_gint/temp_gint/gint_interface.cpp b/source/source_lcao/module_gint/gint_interface.cpp similarity index 100% rename from source/source_lcao/module_gint/temp_gint/gint_interface.cpp rename to source/source_lcao/module_gint/gint_interface.cpp diff --git a/source/source_lcao/module_gint/temp_gint/gint_interface.h b/source/source_lcao/module_gint/gint_interface.h similarity index 100% rename from source/source_lcao/module_gint/temp_gint/gint_interface.h rename to source/source_lcao/module_gint/gint_interface.h diff --git a/source/source_lcao/module_gint/gint_k.h b/source/source_lcao/module_gint/gint_k.h deleted file mode 100644 index ec2de50730..0000000000 --- a/source/source_lcao/module_gint/gint_k.h +++ /dev/null @@ -1,86 +0,0 @@ -#ifndef W_ABACUS_DEVELOP_ABACUS_DEVELOP_SOURCE_MODULE_HAMILT_LCAO_MODULE_GINT_GINT_K_H -#define W_ABACUS_DEVELOP_ABACUS_DEVELOP_SOURCE_MODULE_HAMILT_LCAO_MODULE_GINT_GINT_K_H - -#include "gint.h" -#include "grid_technique.h" -#include "source_basis/module_ao/ORB_atomic_lm.h" -#include "source_estate/module_charge/charge.h" -#include "source_lcao/LCAO_HS_arrays.hpp" - -// add by jingan for map<> in 2021-12-2, will be deleted in the future -#include "source_base/abfs-vector3_order.h" - -class Gint_k : public Gint { - public: - /// @brief move operator for the next ESolver to directly use its infomation - /// @param rhs - /// @return *this - Gint_k& operator=(Gint_k&& rhs); - - //------------------------------------------------------ - // in gint_k_pvpr.cpp - //------------------------------------------------------ - // pvpR and reset_spin/get_spin : auxilliary methods - // for calculating hamiltonian - - // allocate the matrix element. - void allocate_pvdpR(); - // destroy the temporary matrix element. - void destroy_pvdpR(); - - /** - * @brief transfer pvpR to this->hRGint - * then pass this->hRGint to Veff::hR - */ - void transfer_pvpR(hamilt::HContainer* hR, const UnitCell* ucell_in, const Grid_Driver* gd); - void transfer_pvpR(hamilt::HContainer>* hR, const UnitCell* ucell_in, const Grid_Driver* gd); - - //------------------------------------------------------ - // in gint_k_env.cpp - //------------------------------------------------------ - // calculate the envelop function via grid integrals - void cal_env_k(int ik, - const std::complex* psi_k, - double* rho, - const std::vector>& kvec_c, - const std::vector>& kvec_d, - const UnitCell& ucell); - - //------------------------------------------------------ - // in gint_k_sparse1.cpp - //------------------------------------------------------ - // similar to the above 3, just for the derivative - void distribute_pvdpR_sparseMatrix( - const int current_spin, - const int dim, - const double& sparse_threshold, - const std::map, - std::map>>& - pvdpR_sparseMatrix, - LCAO_HS_Arrays& HS_Arrays, - const Parallel_Orbitals* pv); - - void distribute_pvdpR_soc_sparseMatrix( - const int dim, - const double& sparse_threshold, - const std::map< - Abfs::Vector3_Order, - std::map>>>& - pvdpR_soc_sparseMatrix, - LCAO_HS_Arrays& HS_Arrays, - const Parallel_Orbitals* pv); - - void cal_dvlocal_R_sparseMatrix(const int& current_spin, - const double& sparse_threshold, - LCAO_HS_Arrays& HS_Arrays, - const Parallel_Orbitals* pv, - const UnitCell& ucell, - const Grid_Driver& gdriver); - - private: - //---------------------------- - // key variable - //---------------------------- -}; - -#endif diff --git a/source/source_lcao/module_gint/gint_k_env.cpp b/source/source_lcao/module_gint/gint_k_env.cpp deleted file mode 100644 index 67ce701461..0000000000 --- a/source/source_lcao/module_gint/gint_k_env.cpp +++ /dev/null @@ -1,138 +0,0 @@ -#include "gint_k.h" -#include "grid_technique.h" -#include "source_io/module_parameter/parameter.h" -#include "source_base/timer.h" -#include "source_base/ylm.h" -#include "source_basis/module_ao/ORB_read.h" -#include "source_pw/module_pwdft/global.h" -#include "source_base/array_pool.h" -#include "source_base/vector3.h" - -void Gint_k::cal_env_k(int ik, - const std::complex* psi_k, - double* rho, - const std::vector>& kvec_c, - const std::vector>& kvec_d, - const UnitCell& ucell) -{ - ModuleBase::TITLE("Gint_k", "cal_env_k"); - ModuleBase::timer::tick("Gint_k", "cal_env_k"); - - // it's a uniform grid to save orbital values, so the delta_r is a constant. - const double delta_r = this->gridt->dr_uniform; - const int max_size = this->gridt->max_atom; - if (max_size <= 0){ - ModuleBase::WARNING_QUIT("Gint_Gamma::cal_env", - "the max_size is less than 0!"); - } - const int nbx = this->gridt->nbx; - const int nby = this->gridt->nby; - const int nbz = this->gridt->nbzp; - const int ncyz = this->ny * this->nplane; // mohan add 2012-03-25 - - #pragma omp parallel - { - std::vector vindex(this->bxyz, 0); - std::vector block_iw(max_size, 0); - std::vector block_index(max_size + 1, 0); - std::vector block_size(max_size, 0); - #pragma omp for - for (int grid_index = 0; grid_index < this->nbxx; grid_index++) - { - - // get the value: how many atoms has orbital value on this grid. - const int size = this->gridt->how_many_atoms[grid_index]; - if (size == 0) - { - continue; - } - ModuleBase::Array_Pool cal_flag(this->bxyz, max_size); - Gint_Tools::get_block_info(*this->gridt, - this->bxyz, - size, - grid_index, - block_iw.data(), - block_index.data(), - block_size.data(), - cal_flag.get_ptr_2D()); - const int LD_pool = block_index[size]; - - // evaluate psi on grids - ModuleBase::Array_Pool psir_ylm(this->bxyz, LD_pool); - Gint_Tools::cal_psir_ylm(*this->gridt, - this->bxyz, - size, - grid_index, - delta_r, - block_index.data(), - block_size.data(), - cal_flag.get_ptr_2D(), - psir_ylm.get_ptr_2D()); - - Gint_Tools::get_vindex(this->bxyz, - this->bx, - this->by, - this->bz, - this->nplane, - this->gridt->start_ind[grid_index], - ncyz, - vindex.data()); - - for (int ia1 = 0; ia1 < size; ia1++) - { - const int mcell_index1 = this->gridt->bcell_start[grid_index] + ia1; - const int iat = this->gridt->which_atom[mcell_index1]; - const int T1 = ucell.iat2it[iat]; - Atom* atom1 = &ucell.atoms[T1]; - const int I1 = ucell.iat2ia[iat]; - - // find R by which_unitcell and cal kphase - const int id_ucell = this->gridt->which_unitcell[mcell_index1]; - ModuleBase::Vector3 R(this->gridt->get_ucell_coords(id_ucell)); - // std::cout << "kvec_d: " << kvec_d[ik].x << " " << kvec_d[ik].y << " " << kvec_d[ik].z << std::endl; - // std::cout << "kvec_c: " << kvec_c[ik].x << " " << kvec_c[ik].y << " " << kvec_c[ik].z << std::endl; - // std::cout << "R: " << R.x << " " << R.y << " " << R.z << std::endl; - const double arg = (kvec_d[ik] * R) * ModuleBase::TWO_PI; - const double arg1 - = (kvec_c[ik] * (R.x * ucell.a1 + R.y * ucell.a2 + R.z * ucell.a3)) * ModuleBase::TWO_PI; - // std::cout << "arg0=" << arg << ", arg1=" << arg1 << std::endl; - const std::complex kphase = std::complex(cos(arg), sin(arg)); - - // get the start index of local orbitals. - const int start1 = ucell.itiaiw2iwt(T1, I1, 0); - for (int ib = 0; ib < this->bxyz; ib++) - { - if (cal_flag[ib][ia1]) - { - int iw1_lo = 0; - double* psi1 = &psir_ylm[ib][block_index[ia1]]; - std::complex tmp{0.0, 0.0}; - if (PARAM.inp.nspin == 4) // is it a simple add of 2 spins? - { - for (int is = 0; is < 2; ++is) - { - iw1_lo = this->gridt->trace_lo[start1] / PARAM.globalv.npol - + this->gridt->lgd / PARAM.globalv.npol * is; - for (int iw = 0; iw < atom1->nw; ++iw, ++iw1_lo) - { - tmp += std::complex(psi1[iw], 0.0) * psi_k[iw1_lo] * kphase; - } - } - } - else - { - iw1_lo = this->gridt->trace_lo[start1]; - for (int iw = 0; iw < atom1->nw; ++iw, ++iw1_lo) - { - tmp += std::complex(psi1[iw], 0.0) * psi_k[iw1_lo] * kphase; - } - } - rho[vindex[ib]] += tmp.real(); - } // cal_flag - } // ib - } // ia1 - } // i - } - ModuleBase::timer::tick("Gint_k", "cal_env_k"); - return; -} diff --git a/source/source_lcao/module_gint/gint_k_pvdpr.cpp b/source/source_lcao/module_gint/gint_k_pvdpr.cpp deleted file mode 100644 index b03f012a66..0000000000 --- a/source/source_lcao/module_gint/gint_k_pvdpr.cpp +++ /dev/null @@ -1,53 +0,0 @@ -#include "gint_k.h" -#include "grid_technique.h" -#include "source_io/module_parameter/parameter.h" -#include "source_base/global_function.h" -#include "source_base/global_variable.h" -#include "source_base/memory.h" -#include "source_base/parallel_reduce.h" -#include "source_base/timer.h" -#include "source_base/tool_threading.h" -#include "source_base/ylm.h" -#include "source_basis/module_ao/ORB_read.h" -#include "source_pw/module_pwdft/global.h" - -void Gint_k::allocate_pvdpR(void) -{ - ModuleBase::TITLE("Gint_k","allocate_pvpR"); - - const int nspin = PARAM.inp.nspin; - assert(nspin>0); - - //xiaohui modify 2015-05-30 - // the number of matrix element is this->gridt->nnrg. - for(int is =0;ispvdpRx_reduced.push_back(hamilt::HContainer(this->ucell->nat)); - pvdpRx_reduced[is].insert_ijrs(this->gridt->get_ijr_info(), *this->ucell); - pvdpRx_reduced[is].allocate(nullptr, true); - this->pvdpRy_reduced.push_back(hamilt::HContainer(this->ucell->nat)); - pvdpRy_reduced[is].insert_ijrs(this->gridt->get_ijr_info(), *this->ucell); - pvdpRy_reduced[is].allocate(nullptr, true); - this->pvdpRz_reduced.push_back(hamilt::HContainer(this->ucell->nat)); - pvdpRz_reduced[is].insert_ijrs(this->gridt->get_ijr_info(), *this->ucell); - pvdpRz_reduced[is].allocate(nullptr, true); - } - - ModuleBase::Memory::record("pvdpR_reduced", 3 * sizeof(double) * this->gridt->nnrg * nspin); - return; -} - -void Gint_k::destroy_pvdpR(void) -{ - ModuleBase::TITLE("Gint_k","destroy_pvpR"); - - const int nspin = PARAM.inp.nspin; - assert(nspin>0); - pvdpRx_reduced.clear(); - pvdpRy_reduced.clear(); - pvdpRz_reduced.clear(); - pvdpRx_reduced.shrink_to_fit(); - pvdpRy_reduced.shrink_to_fit(); - pvdpRz_reduced.shrink_to_fit(); - return; -} diff --git a/source/source_lcao/module_gint/gint_k_pvpr.cpp b/source/source_lcao/module_gint/gint_k_pvpr.cpp deleted file mode 100644 index e59ed4443d..0000000000 --- a/source/source_lcao/module_gint/gint_k_pvpr.cpp +++ /dev/null @@ -1,163 +0,0 @@ -#include "gint_k.h" -#include "grid_technique.h" -#include "source_io/module_parameter/parameter.h" -#include "source_base/global_function.h" -#include "source_base/global_variable.h" -#include "source_base/libm/libm.h" -#include "source_base/memory.h" -#include "source_base/parallel_reduce.h" -#include "source_base/timer.h" -#include "source_base/tool_threading.h" -#include "source_base/ylm.h" -#include "source_basis/module_ao/ORB_read.h" -#include "source_cell/module_neighbor/sltk_grid_driver.h" -#include "source_pw/module_pwdft/global.h" -#include "source_lcao/module_hcontainer/hcontainer_funcs.h" -#ifdef __MPI -#include -#endif - -// transfer_pvpR, NSPIN = 1 or 2 -void Gint_k::transfer_pvpR(hamilt::HContainer* hR, const UnitCell* ucell, const Grid_Driver* gd) -{ - ModuleBase::TITLE("Gint_k", "transfer_pvpR"); - ModuleBase::timer::tick("Gint_k", "transfer_pvpR"); - - for (int iap = 0; iap < this->hRGint->size_atom_pairs(); iap++) - { - auto& ap = this->hRGint->get_atom_pair(iap); - const int iat1 = ap.get_atom_i(); - const int iat2 = ap.get_atom_j(); - if (iat1 > iat2) - { - // fill lower triangle matrix with upper triangle matrix - // the upper is - const hamilt::AtomPair* upper_ap = this->hRGint->find_pair(iat2, iat1); - const hamilt::AtomPair* lower_ap = this->hRGint->find_pair(iat1, iat2); -#ifdef __DEBUG - assert(upper_ap != nullptr); -#endif - for (int ir = 0; ir < ap.get_R_size(); ir++) - { - auto R_index = ap.get_R_index(ir); - auto upper_mat = upper_ap->find_matrix(-R_index); - auto lower_mat = lower_ap->find_matrix(R_index); - for (int irow = 0; irow < upper_mat->get_row_size(); ++irow) - { - for (int icol = 0; icol < upper_mat->get_col_size(); ++icol) - { - lower_mat->get_value(icol, irow) = upper_ap->get_value(irow, icol); - } - } - } - } - } -#ifdef __MPI - int size = 0; - MPI_Comm_size(MPI_COMM_WORLD, &size); - if (size == 1) - { - hR->add(*this->hRGint); - } - else - { - hamilt::transferSerials2Parallels(*this->hRGint, hR); - } -#else - hR->add(*this->hRGint); -#endif - ModuleBase::timer::tick("Gint_k", "transfer_pvpR"); - return; -} - -// transfer_pvpR, NSPIN = 4 -void Gint_k::transfer_pvpR(hamilt::HContainer>* hR, - const UnitCell* ucell_in, - const Grid_Driver* gd) -{ - ModuleBase::TITLE("Gint_k", "transfer_pvpR"); - ModuleBase::timer::tick("Gint_k", "transfer_pvpR"); - - this->hRGintCd->set_zero(); - - for (int iap = 0; iap < this->hRGintCd->size_atom_pairs(); iap++) - { - auto* ap = &this->hRGintCd->get_atom_pair(iap); - const int iat1 = ap->get_atom_i(); - const int iat2 = ap->get_atom_j(); - if (iat1 <= iat2) - { - hamilt::AtomPair>* upper_ap = ap; - hamilt::AtomPair>* lower_ap = this->hRGintCd->find_pair(iat2, iat1); - const hamilt::AtomPair* ap_nspin_0 = this->hRGint_tmp[0]->find_pair(iat1, iat2); - const hamilt::AtomPair* ap_nspin_3 = this->hRGint_tmp[3]->find_pair(iat1, iat2); - for (int ir = 0; ir < upper_ap->get_R_size(); ir++) - { - const auto R_index = upper_ap->get_R_index(ir); - auto upper_mat = upper_ap->find_matrix(R_index); - auto mat_nspin_0 = ap_nspin_0->find_matrix(R_index); - auto mat_nspin_3 = ap_nspin_3->find_matrix(R_index); - - // The row size and the col size of upper_matrix is double that of matrix_nspin_0 - for (int irow = 0; irow < mat_nspin_0->get_row_size(); ++irow) - { - for (int icol = 0; icol < mat_nspin_0->get_col_size(); ++icol) - { - upper_mat->get_value(2*irow, 2*icol) = mat_nspin_0->get_value(irow, icol) + mat_nspin_3->get_value(irow, icol); - upper_mat->get_value(2*irow+1, 2*icol+1) = mat_nspin_0->get_value(irow, icol) - mat_nspin_3->get_value(irow, icol); - } - } - - if (PARAM.globalv.domag) - { - const hamilt::AtomPair* ap_nspin_1 = this->hRGint_tmp[1]->find_pair(iat1, iat2); - const hamilt::AtomPair* ap_nspin_2 = this->hRGint_tmp[2]->find_pair(iat1, iat2); - const auto mat_nspin_1 = ap_nspin_1->find_matrix(R_index); - const auto mat_nspin_2 = ap_nspin_2->find_matrix(R_index); - for (int irow = 0; irow < mat_nspin_1->get_row_size(); ++irow) - { - for (int icol = 0; icol < mat_nspin_1->get_col_size(); ++icol) - { - upper_mat->get_value(2*irow, 2*icol+1) = mat_nspin_1->get_value(irow, icol) + std::complex(0.0, 1.0) * mat_nspin_2->get_value(irow, icol); - upper_mat->get_value(2*irow+1, 2*icol) = mat_nspin_1->get_value(irow, icol) - std::complex(0.0, 1.0) * mat_nspin_2->get_value(irow, icol); - } - } - } - - // fill the lower triangle matrix - if (iat1 < iat2) - { - auto lower_mat = lower_ap->find_matrix(-R_index); - for (int irow = 0; irow < upper_mat->get_row_size(); ++irow) - { - for (int icol = 0; icol < upper_mat->get_col_size(); ++icol) - { - lower_mat->get_value(icol, irow) = conj(upper_mat->get_value(irow, icol)); - } - } - } - } - } - } - - // =================================== - // transfer HR from Gint to Veff, std::complex>> - // =================================== -#ifdef __MPI - int size; - MPI_Comm_size(MPI_COMM_WORLD, &size); - if (size == 1) - { - hR->add(*this->hRGintCd); - } - else - { - hamilt::transferSerials2Parallels>(*this->hRGintCd, hR); - } -#else - hR->add(*this->hRGintCd); -#endif - - ModuleBase::timer::tick("Gint_k", "transfer_pvpR"); - return; -} diff --git a/source/source_lcao/module_gint/gint_k_sparse1.cpp b/source/source_lcao/module_gint/gint_k_sparse1.cpp deleted file mode 100644 index ab0d8b60ef..0000000000 --- a/source/source_lcao/module_gint/gint_k_sparse1.cpp +++ /dev/null @@ -1,554 +0,0 @@ -#include "gint_k.h" -#include "grid_technique.h" -#include "source_io/module_parameter/parameter.h" -#include "source_base/global_function.h" -#include "source_base/global_variable.h" -#include "source_base/memory.h" -#include "source_base/parallel_reduce.h" -#include "source_base/timer.h" -#include "source_base/ylm.h" -#include "source_basis/module_ao/ORB_read.h" -#include "source_cell/module_neighbor/sltk_grid_driver.h" -#include "source_pw/module_pwdft/global.h" - -void Gint_k::distribute_pvdpR_sparseMatrix( - const int current_spin, - const int dim, - const double& sparse_threshold, - const std::map, std::map>>& pvdpR_sparseMatrix, - LCAO_HS_Arrays& HS_Arrays, - const Parallel_Orbitals* pv) -{ - ModuleBase::TITLE("Gint_k", "distribute_pvdpR_sparseMatrix"); - - int total_R_num = HS_Arrays.all_R_coor.size(); - int* nonzero_num = new int[total_R_num]; - int* minus_nonzero_num = new int[total_R_num]; - ModuleBase::GlobalFunc::ZEROS(nonzero_num, total_R_num); - ModuleBase::GlobalFunc::ZEROS(minus_nonzero_num, total_R_num); - int count = 0; - for (auto& R_coor: HS_Arrays.all_R_coor) - { - auto iter = pvdpR_sparseMatrix.find(R_coor); - if (iter != pvdpR_sparseMatrix.end()) - { - for (auto& row_loop: iter->second) - { - nonzero_num[count] += row_loop.second.size(); - } - } - - auto minus_R_coor = -1 * R_coor; - - iter = pvdpR_sparseMatrix.find(minus_R_coor); - if (iter != pvdpR_sparseMatrix.end()) - { - for (auto& row_loop: iter->second) - { - minus_nonzero_num[count] += row_loop.second.size(); - } - } - - count++; - } - - Parallel_Reduce::reduce_all(nonzero_num, total_R_num); - Parallel_Reduce::reduce_all(minus_nonzero_num, total_R_num); - // Parallel_Reduce::reduce_pool(nonzero_num, total_R_num); - // Parallel_Reduce::reduce_pool(minus_nonzero_num, total_R_num); - - double* tmp = nullptr; - tmp = new double[PARAM.globalv.nlocal]; - - count = 0; - for (auto& R_coor: HS_Arrays.all_R_coor) - { - if (nonzero_num[count] != 0 || minus_nonzero_num[count] != 0) - { - auto minus_R_coor = -1 * R_coor; - - for (int row = 0; row < PARAM.globalv.nlocal; ++row) - { - ModuleBase::GlobalFunc::ZEROS(tmp, PARAM.globalv.nlocal); - - auto iter = pvdpR_sparseMatrix.find(R_coor); - if (iter != pvdpR_sparseMatrix.end()) - { - - if (this->gridt->trace_lo[row] >= 0) - { - auto row_iter = iter->second.find(row); - if (row_iter != iter->second.end()) - { - for (auto& value: row_iter->second) - { - tmp[value.first] = value.second; - } - } - } - } - - auto minus_R_iter = pvdpR_sparseMatrix.find(minus_R_coor); - if (minus_R_iter != pvdpR_sparseMatrix.end()) - { - for (int col = 0; col < row; ++col) - { - if (this->gridt->trace_lo[col] >= 0) - { - auto row_iter = minus_R_iter->second.find(col); - if (row_iter != minus_R_iter->second.end()) - { - auto col_iter = row_iter->second.find(row); - if (col_iter != row_iter->second.end()) - { - tmp[col] = col_iter->second; - } - } - } - } - } - - Parallel_Reduce::reduce_pool(tmp, PARAM.globalv.nlocal); - - if (pv->global2local_row(row) >= 0) - { - for (int col = 0; col < PARAM.globalv.nlocal; ++col) - { - if (pv->global2local_col(col) >= 0) - { - if (std::abs(tmp[col]) > sparse_threshold) - { - if (dim == 0) - { - double& value = HS_Arrays.dHRx_sparse[current_spin][R_coor][row][col]; - value += tmp[col]; - if (std::abs(value) <= sparse_threshold) - { - HS_Arrays.dHRx_sparse[current_spin][R_coor][row].erase(col); - } - } - if (dim == 1) - { - double& value = HS_Arrays.dHRy_sparse[current_spin][R_coor][row][col]; - value += tmp[col]; - if (std::abs(value) <= sparse_threshold) - { - HS_Arrays.dHRy_sparse[current_spin][R_coor][row].erase(col); - } - } - if (dim == 2) - { - double& value = HS_Arrays.dHRz_sparse[current_spin][R_coor][row][col]; - value += tmp[col]; - if (std::abs(value) <= sparse_threshold) - { - HS_Arrays.dHRz_sparse[current_spin][R_coor][row].erase(col); - } - } - } - } - } - } - } - } - - count++; - } - - delete[] nonzero_num; - delete[] minus_nonzero_num; - delete[] tmp; - nonzero_num = nullptr; - minus_nonzero_num = nullptr; - tmp = nullptr; - - return; -} - -void Gint_k::distribute_pvdpR_soc_sparseMatrix( - const int dim, - const double& sparse_threshold, - const std::map, std::map>>>& - pvdpR_soc_sparseMatrix, - LCAO_HS_Arrays& HS_Arrays, - const Parallel_Orbitals* pv) -{ - ModuleBase::TITLE("Gint_k", "distribute_pvdpR_soc_sparseMatrix"); - - int total_R_num = HS_Arrays.all_R_coor.size(); - int* nonzero_num = new int[total_R_num]; - int* minus_nonzero_num = new int[total_R_num]; - ModuleBase::GlobalFunc::ZEROS(nonzero_num, total_R_num); - ModuleBase::GlobalFunc::ZEROS(minus_nonzero_num, total_R_num); - int count = 0; - for (auto& R_coor: HS_Arrays.all_R_coor) - { - auto iter = pvdpR_soc_sparseMatrix.find(R_coor); - if (iter != pvdpR_soc_sparseMatrix.end()) - { - for (auto& row_loop: iter->second) - { - nonzero_num[count] += row_loop.second.size(); - } - } - - auto minus_R_coor = -1 * R_coor; - - iter = pvdpR_soc_sparseMatrix.find(minus_R_coor); - if (iter != pvdpR_soc_sparseMatrix.end()) - { - for (auto& row_loop: iter->second) - { - minus_nonzero_num[count] += row_loop.second.size(); - } - } - - count++; - } - - Parallel_Reduce::reduce_all(nonzero_num, total_R_num); - Parallel_Reduce::reduce_all(minus_nonzero_num, total_R_num); - // Parallel_Reduce::reduce_pool(nonzero_num, total_R_num); - // Parallel_Reduce::reduce_pool(minus_nonzero_num, total_R_num); - - std::complex* tmp_soc = nullptr; - tmp_soc = new std::complex[PARAM.globalv.nlocal]; - - count = 0; - for (auto& R_coor: HS_Arrays.all_R_coor) - { - if (nonzero_num[count] != 0 || minus_nonzero_num[count] != 0) - { - auto minus_R_coor = -1 * R_coor; - - for (int row = 0; row < PARAM.globalv.nlocal; ++row) - { - ModuleBase::GlobalFunc::ZEROS(tmp_soc, PARAM.globalv.nlocal); - - auto iter = pvdpR_soc_sparseMatrix.find(R_coor); - if (iter != pvdpR_soc_sparseMatrix.end()) - { - if (this->gridt->trace_lo[row] >= 0) - { - auto row_iter = iter->second.find(row); - if (row_iter != iter->second.end()) - { - for (auto& value: row_iter->second) - { - tmp_soc[value.first] = value.second; - } - } - } - } - - auto minus_R_iter = pvdpR_soc_sparseMatrix.find(minus_R_coor); - if (minus_R_iter != pvdpR_soc_sparseMatrix.end()) - { - for (int col = 0; col < row; ++col) - { - if (this->gridt->trace_lo[col] >= 0) - { - auto row_iter = minus_R_iter->second.find(col); - if (row_iter != minus_R_iter->second.end()) - { - auto col_iter = row_iter->second.find(row); - if (col_iter != row_iter->second.end()) - { - tmp_soc[col] = conj(col_iter->second); - } - } - } - } - } - - Parallel_Reduce::reduce_pool(tmp_soc, PARAM.globalv.nlocal); - - if (pv->global2local_row(row) >= 0) - { - for (int col = 0; col < PARAM.globalv.nlocal; ++col) - { - if (pv->global2local_col(col) >= 0) - { - if (std::abs(tmp_soc[col]) > sparse_threshold) - { - if (dim == 0) - { - std::complex& value = HS_Arrays.dHRx_soc_sparse[R_coor][row][col]; - value += tmp_soc[col]; - if (std::abs(value) <= sparse_threshold) - { - HS_Arrays.dHRx_soc_sparse[R_coor][row].erase(col); - } - } - if (dim == 1) - { - std::complex& value = HS_Arrays.dHRy_soc_sparse[R_coor][row][col]; - value += tmp_soc[col]; - if (std::abs(value) <= sparse_threshold) - { - HS_Arrays.dHRy_soc_sparse[R_coor][row].erase(col); - } - } - if (dim == 2) - { - std::complex& value = HS_Arrays.dHRz_soc_sparse[R_coor][row][col]; - value += tmp_soc[col]; - if (std::abs(value) <= sparse_threshold) - { - HS_Arrays.dHRz_soc_sparse[R_coor][row].erase(col); - } - } - } - } - } - } - } - } - - count++; - } - - delete[] nonzero_num; - delete[] minus_nonzero_num; - delete[] tmp_soc; - nonzero_num = nullptr; - minus_nonzero_num = nullptr; - tmp_soc = nullptr; - - return; -} - -void Gint_k::cal_dvlocal_R_sparseMatrix(const int& current_spin, - const double& sparse_threshold, - LCAO_HS_Arrays& HS_Arrays, - const Parallel_Orbitals* pv, - const UnitCell& ucell, - const Grid_Driver& gdriver) -{ - ModuleBase::TITLE("Gint_k", "cal_dvlocal_R_sparseMatrix"); - - std::map, std::map>> pvdpRx_sparseMatrix; - std::map, std::map>> pvdpRy_sparseMatrix; - std::map, std::map>> pvdpRz_sparseMatrix; - std::map, std::map>>> - pvdpRx_soc_sparseMatrix; - std::map, std::map>>> - pvdpRy_soc_sparseMatrix; - std::map, std::map>>> - pvdpRz_soc_sparseMatrix; - - double temp_value_double; - std::complex temp_value_complex; - - ModuleBase::Vector3 tau1, dtau; - for (int iap = 0; iap < pvdpRx_reduced[0].size_atom_pairs(); iap++) - { - const auto& ap = pvdpRx_reduced[0].get_atom_pair(iap); - const int iat1 = ap.get_atom_i(); - const int iat2 = ap.get_atom_j(); - const int it1 = ucell.iat2it[iat1]; - const int it2 = ucell.iat2it[iat2]; - const Atom* atom1 = &ucell.atoms[it1]; - const Atom* atom2 = &ucell.atoms[it2]; - const int start1 = ucell.itiaiw2iwt(it1, ucell.iat2ia[iat1], 0); - const int start2 = ucell.itiaiw2iwt(it2, ucell.iat2ia[iat2], 0); - - for (int ir = 0; ir < ap.get_R_size(); ir++) - { - const ModuleBase::Vector3 R = ap.get_R_index(ir); - Abfs::Vector3_Order dR(R.x, R.y, R.z); - std::vector pvdpRx; - std::vector pvdpRy; - std::vector pvdpRz; - for(int i = 0; i < PARAM.inp.nspin; i++) - { - pvdpRx.push_back(pvdpRx_reduced[i].get_atom_pair(iap).get_pointer(ir)); - pvdpRy.push_back(pvdpRy_reduced[i].get_atom_pair(iap).get_pointer(ir)); - pvdpRz.push_back(pvdpRz_reduced[i].get_atom_pair(iap).get_pointer(ir)); - } - - for (int iw = 0; iw < atom1->nw * PARAM.globalv.npol; iw++) - { - for (int iw2 = 0; iw2 < atom2->nw * PARAM.globalv.npol; iw2++) - { - const int nw = atom2->nw; - const int mug0 = iw / PARAM.globalv.npol; - const int nug0 = iw2 / PARAM.globalv.npol; - const int iw_nowg = mug0 * nw + nug0; - - if (PARAM.inp.nspin == 4) - { - // pvp is symmetric, only half is calculated. - - if (iw % 2 == 0 && iw2 % 2 == 0) - { - // spin = 0; - temp_value_complex - = std::complex(1.0, 0.0) * pvdpRx[0][iw_nowg] - + std::complex(1.0, 0.0) * pvdpRx[3][iw_nowg]; - - if (std::abs(temp_value_complex) > sparse_threshold) - { - pvdpRx_soc_sparseMatrix[dR][start1 + iw][start2 + iw2] - = temp_value_complex; - } - - temp_value_complex - = std::complex(1.0, 0.0) * pvdpRy[0][iw_nowg] - + std::complex(1.0, 0.0) * pvdpRy[3][iw_nowg]; - - if (std::abs(temp_value_complex) > sparse_threshold) - { - pvdpRy_soc_sparseMatrix[dR][start1 + iw][start2 + iw2] - = temp_value_complex; - } - temp_value_complex - = std::complex(1.0, 0.0) * pvdpRz[0][iw_nowg] - + std::complex(1.0, 0.0) * pvdpRz[3][iw_nowg]; - - if (std::abs(temp_value_complex) > sparse_threshold) - { - pvdpRz_soc_sparseMatrix[dR][start1 + iw][start2 + iw2] - = temp_value_complex; - } - } - else if (iw % 2 == 1 && iw2 % 2 == 1) - { - // spin = 3; - temp_value_complex - = std::complex(1.0, 0.0) * pvdpRx[0][iw_nowg] - - std::complex(1.0, 0.0) * pvdpRx[3][iw_nowg]; - if (std::abs(temp_value_complex) > sparse_threshold) - { - pvdpRx_soc_sparseMatrix[dR][start1 + iw][start2 + iw2] - = temp_value_complex; - } - temp_value_complex - = std::complex(1.0, 0.0) * pvdpRy[0][iw_nowg] - - std::complex(1.0, 0.0) * pvdpRy[3][iw_nowg]; - if (std::abs(temp_value_complex) > sparse_threshold) - { - pvdpRy_soc_sparseMatrix[dR][start1 + iw][start2 + iw2] - = temp_value_complex; - } - temp_value_complex - = std::complex(1.0, 0.0) * pvdpRz[0][iw_nowg] - - std::complex(1.0, 0.0) * pvdpRz[3][iw_nowg]; - if (std::abs(temp_value_complex) > sparse_threshold) - { - pvdpRz_soc_sparseMatrix[dR][start1 + iw][start2 + iw2] - = temp_value_complex; - } - } - else if (iw % 2 == 0 && iw2 % 2 == 1) - { - // spin = 1; - if (!PARAM.globalv.domag) - { - // do nothing - } - else - { - temp_value_complex - = pvdpRx[1][iw_nowg] - - std::complex(0.0, 1.0) * pvdpRx[2][iw_nowg]; - if (std::abs(temp_value_complex) > sparse_threshold) - { - pvdpRx_soc_sparseMatrix[dR][start1 + iw][start2 + iw2] - = temp_value_complex; - } - temp_value_complex - = pvdpRy[1][iw_nowg] - - std::complex(0.0, 1.0) * pvdpRy[2][iw_nowg]; - if (std::abs(temp_value_complex) > sparse_threshold) - { - pvdpRy_soc_sparseMatrix[dR][start1 + iw][start2 + iw2] - = temp_value_complex; - } - temp_value_complex - = pvdpRz[1][iw_nowg] - - std::complex(0.0, 1.0) * pvdpRz[2][iw_nowg]; - if (std::abs(temp_value_complex) > sparse_threshold) - { - pvdpRz_soc_sparseMatrix[dR][start1 + iw][start2 + iw2] - = temp_value_complex; - } - } - } - else if (iw % 2 == 1 && iw2 % 2 == 0) - { - // spin = 2; - if (!PARAM.globalv.domag) - { - // do nothing - } - else - { - temp_value_complex - = pvdpRx[1][iw_nowg] - + std::complex(0.0, 1.0) * pvdpRx[2][iw_nowg]; - if (std::abs(temp_value_complex) > sparse_threshold) - { - pvdpRx_soc_sparseMatrix[dR][start1 + iw][start2 + iw2] - = temp_value_complex; - } - temp_value_complex - = pvdpRy[1][iw_nowg] - + std::complex(0.0, 1.0) * pvdpRy[2][iw_nowg]; - if (std::abs(temp_value_complex) > sparse_threshold) - { - pvdpRy_soc_sparseMatrix[dR][start1 + iw][start2 + iw2] - = temp_value_complex; - } - temp_value_complex - = pvdpRz[1][iw_nowg] - + std::complex(0.0, 1.0) * pvdpRz[2][iw_nowg]; - if (std::abs(temp_value_complex) > sparse_threshold) - { - pvdpRz_soc_sparseMatrix[dR][start1 + iw][start2 + iw2] - = temp_value_complex; - } - } - } - else - { - ModuleBase::WARNING_QUIT("Gint_k::folding_vl_k_nc", "index is wrong!"); - } - } // endif NC - else - { - temp_value_double = pvdpRx[current_spin][iw_nowg]; - if (std::abs(temp_value_double) > sparse_threshold) - { - pvdpRx_sparseMatrix[dR][start1 + iw][start2 + iw2] = temp_value_double; - } - temp_value_double = pvdpRy[current_spin][iw_nowg]; - if (std::abs(temp_value_double) > sparse_threshold) - { - pvdpRy_sparseMatrix[dR][start1 + iw][start2 + iw2] = temp_value_double; - } - temp_value_double = pvdpRz[current_spin][iw_nowg]; - if (std::abs(temp_value_double) > sparse_threshold) - { - pvdpRz_sparseMatrix[dR][start1 + iw][start2 + iw2] = temp_value_double; - } - } // endif normal - } - } - } - } - if (PARAM.inp.nspin != 4) - { - distribute_pvdpR_sparseMatrix(current_spin, 0, sparse_threshold, pvdpRx_sparseMatrix, HS_Arrays, pv); - distribute_pvdpR_sparseMatrix(current_spin, 1, sparse_threshold, pvdpRy_sparseMatrix, HS_Arrays, pv); - distribute_pvdpR_sparseMatrix(current_spin, 2, sparse_threshold, pvdpRz_sparseMatrix, HS_Arrays, pv); - } - else - { - distribute_pvdpR_soc_sparseMatrix(0, sparse_threshold, pvdpRx_soc_sparseMatrix, HS_Arrays, pv); - distribute_pvdpR_soc_sparseMatrix(1, sparse_threshold, pvdpRy_soc_sparseMatrix, HS_Arrays, pv); - distribute_pvdpR_soc_sparseMatrix(2, sparse_threshold, pvdpRz_soc_sparseMatrix, HS_Arrays, pv); - } - - return; -} diff --git a/source/source_lcao/module_gint/gint_old.cpp b/source/source_lcao/module_gint/gint_old.cpp deleted file mode 100644 index caaf2f92c7..0000000000 --- a/source/source_lcao/module_gint/gint_old.cpp +++ /dev/null @@ -1,298 +0,0 @@ -#include "gint.h" - -#include "source_io/module_parameter/parameter.h" -#if ((defined __CUDA)) -#include "gint_force_gpu.h" -#include "gint_rho_gpu.h" -#include "gint_vl_gpu.h" -#endif - -#include "source_base/memory.h" -#include "source_base/timer.h" -#include "source_basis/module_ao/ORB_read.h" -#include "source_lcao/module_hcontainer/hcontainer_funcs.h" -#include "source_pw/module_pwdft/global.h" -#ifdef _OPENMP -#include -#endif - -#ifdef __MKL -#include -#endif - -Gint::~Gint() { - - delete this->hRGint; - delete this->hRGintCd; - // in gamma_only case, DMRGint.size()=0, - // in multi-k case, DMRGint.size()=nspin - for (int is = 0; is < this->DMRGint.size(); is++) { - delete this->DMRGint[is]; - } - for(int is = 0; is < this->hRGint_tmp.size(); is++) { - delete this->hRGint_tmp[is]; - } -#ifdef __MPI - delete this->DMRGint_full; -#endif -} - -void Gint::cal_gint(Gint_inout* inout) { - ModuleBase::TITLE("Gint_interface", "cal_gint"); - ModuleBase::timer::tick("Gint_interface", "cal_gint"); - // In multi-process environments, - // some processes may not be allocated any data. - if (this->gridt->get_init_malloced() == false) { - ModuleBase::WARNING_QUIT("Gint_interface::cal_gint", - "gridt has not been allocated yet!"); - } - if (this->gridt->max_atom > 0) { -#ifdef __CUDA - if (PARAM.inp.device == "gpu" - && (inout->job == Gint_Tools::job_type::vlocal - || inout->job == Gint_Tools::job_type::rho - || inout->job == Gint_Tools::job_type::force)) { - if (inout->job == Gint_Tools::job_type::vlocal) { - gpu_vlocal_interface(inout); - } else if (inout->job == Gint_Tools::job_type::rho) { - gpu_rho_interface(inout); - } else if (inout->job == Gint_Tools::job_type::force) { - gpu_force_interface(inout); - } - } else -#endif - { -#ifdef __MKL - const int mkl_threads = mkl_get_max_threads(); - mkl_set_num_threads(mkl_threads); -#endif - { - if (inout->job == Gint_Tools::job_type::vlocal) { - gint_kernel_vlocal(inout); - } else if (inout->job == Gint_Tools::job_type::dvlocal) { - gint_kernel_dvlocal(inout); - } else if (inout->job == Gint_Tools::job_type::vlocal_meta) { - gint_kernel_vlocal_meta(inout); - } else if (inout->job == Gint_Tools::job_type::rho) { - gint_kernel_rho(inout); - } else if (inout->job == Gint_Tools::job_type::tau) { - gint_kernel_tau(inout); - } else if (inout->job == Gint_Tools::job_type::force) { - gint_kernel_force(inout); - } else if (inout->job == Gint_Tools::job_type::force_meta) { - gint_kernel_force_meta(inout); - } - } - } - } - ModuleBase::timer::tick("Gint_interface", "cal_gint"); - return; -} -void Gint::prep_grid(const Grid_Technique& gt, - const int& nbx_in, - const int& nby_in, - const int& nbz_in, - const int& nbz_start_in, - const int& ncxyz_in, - const int& bx_in, - const int& by_in, - const int& bz_in, - const int& bxyz_in, - const int& nbxx_in, - const int& ny_in, - const int& nplane_in, - const int& startz_current_in, - const UnitCell* ucell_in, - const LCAO_Orbitals* orb_in) { - ModuleBase::TITLE(GlobalV::ofs_running, "Gint_k", "prep_grid"); - - this->gridt = > - this->nbx = nbx_in; - this->nby = nby_in; - this->nbz = nbz_in; - this->ncxyz = ncxyz_in; - this->nbz_start = nbz_start_in; - this->bx = bx_in; - this->by = by_in; - this->bz = bz_in; - this->bxyz = bxyz_in; - this->nbxx = nbxx_in; - this->ny = ny_in; - this->nplane = nplane_in; - this->startz_current = startz_current_in; - this->ucell = ucell_in; - assert(nbx > 0); - assert(nby > 0); - assert(nbz >= 0); - assert(ncxyz > 0); - assert(bx > 0); - assert(by > 0); - assert(bz > 0); - assert(bxyz > 0); - assert(nbxx >= 0); - assert(ny > 0); - assert(nplane >= 0); - assert(startz_current >= 0); - assert(this->ucell->omega > 0.0); - - return; -} - -void Gint::initialize_pvpR(const UnitCell& ucell_in, const Grid_Driver* gd, const int& nspin) -{ - ModuleBase::TITLE("Gint", "initialize_pvpR"); - - int npol = 1; - // there is the only resize code of DMRGint - if (this->DMRGint.size() == 0) { - this->DMRGint.resize(nspin); - } - hRGint_tmp.resize(nspin); - if (nspin != 4) { - if (this->hRGint != nullptr) { - delete this->hRGint; - } - this->hRGint = new hamilt::HContainer(ucell_in.nat); - } else { - npol = 2; - if (this->hRGintCd != nullptr) { - delete this->hRGintCd; - } - this->hRGintCd - = new hamilt::HContainer>(ucell_in.nat); - for (int is = 0; is < nspin; is++) { - if (this->DMRGint[is] != nullptr) { - delete this->DMRGint[is]; - } - if (this->hRGint_tmp[is] != nullptr) { - delete this->hRGint_tmp[is]; - } - this->DMRGint[is] = new hamilt::HContainer(ucell_in.nat); - this->hRGint_tmp[is] = new hamilt::HContainer(ucell_in.nat); - } -#ifdef __MPI - if (this->DMRGint_full != nullptr) { - delete this->DMRGint_full; - } - this->DMRGint_full = new hamilt::HContainer(ucell_in.nat); -#endif - } - - if (PARAM.globalv.gamma_only_local && nspin != 4) { - this->hRGint->fix_gamma(); - } - if (npol == 1) { - this->hRGint->insert_ijrs(this->gridt->get_ijr_info(), ucell_in); - this->hRGint->allocate(nullptr, true); - ModuleBase::Memory::record("Gint::hRGint", - this->hRGint->get_memory_size()); - // initialize DMRGint with hRGint when NSPIN != 4 - for (int is = 0; is < this->DMRGint.size(); is++) { - if (this->DMRGint[is] != nullptr) { - delete this->DMRGint[is]; - } - this->DMRGint[is] = new hamilt::HContainer(*this->hRGint); - } - ModuleBase::Memory::record("Gint::DMRGint", - this->DMRGint[0]->get_memory_size() - * this->DMRGint.size()); - } else { - this->hRGintCd->insert_ijrs(this->gridt->get_ijr_info(), ucell_in, npol); - this->hRGintCd->allocate(nullptr, true); - for(int is = 0; is < nspin; is++) { - this->hRGint_tmp[is]->insert_ijrs(this->gridt->get_ijr_info(), ucell_in); - this->DMRGint[is]->insert_ijrs(this->gridt->get_ijr_info(), ucell_in); - this->hRGint_tmp[is]->allocate(nullptr, true); - this->DMRGint[is]->allocate(nullptr, true); - } - ModuleBase::Memory::record("Gint::hRGint_tmp", - this->hRGint_tmp[0]->get_memory_size()*nspin); - ModuleBase::Memory::record("Gint::DMRGint", - this->DMRGint[0]->get_memory_size() - * this->DMRGint.size()*nspin); -#ifdef __MPI - this->DMRGint_full->insert_ijrs(this->gridt->get_ijr_info(), ucell_in, npol); - this->DMRGint_full->allocate(nullptr, true); - ModuleBase::Memory::record("Gint::DMRGint_full", - this->DMRGint_full->get_memory_size()); -#endif - } -} - -void Gint::reset_DMRGint(const int& nspin) -{ - if (this->hRGint) - { - for (auto& d : this->DMRGint) { delete d; } - this->DMRGint.resize(nspin); - this->DMRGint.shrink_to_fit(); - for (auto& d : this->DMRGint) { d = new hamilt::HContainer(*this->hRGint); } - if (nspin == 4) - { - for (auto& d : this->DMRGint) { d->allocate(nullptr, false); } -#ifdef __MPI - delete this->DMRGint_full; - this->DMRGint_full = new hamilt::HContainer(*this->hRGint); - this->DMRGint_full->allocate(nullptr, false); -#endif - } - } -} - -void Gint::transfer_DM2DtoGrid(std::vector*> DM2D) { - ModuleBase::TITLE("Gint", "transfer_DMR"); - - // To check whether input parameter DM2D has been initialized -#ifdef __DEBUG - assert(!DM2D.empty() - && "Input parameter DM2D has not been initialized while calling " - "function transfer_DM2DtoGrid!"); -#endif - - ModuleBase::timer::tick("Gint", "transfer_DMR"); - if (PARAM.inp.nspin != 4) { - for (int is = 0; is < this->DMRGint.size(); is++) { -#ifdef __MPI - hamilt::transferParallels2Serials(*DM2D[is], DMRGint[is]); -#else - this->DMRGint[is]->set_zero(); - this->DMRGint[is]->add(*DM2D[is]); -#endif - } - } else // NSPIN=4 case - { -#ifdef __MPI - hamilt::transferParallels2Serials(*DM2D[0], this->DMRGint_full); -#else - this->DMRGint_full = DM2D[0]; -#endif - std::vector tmp_pointer(4, nullptr); - for (int iap = 0; iap < this->DMRGint_full->size_atom_pairs(); ++iap) { - auto& ap = this->DMRGint_full->get_atom_pair(iap); - int iat1 = ap.get_atom_i(); - int iat2 = ap.get_atom_j(); - for (int ir = 0; ir < ap.get_R_size(); ++ir) { - const ModuleBase::Vector3 r_index = ap.get_R_index(ir); - for (int is = 0; is < 4; is++) { - tmp_pointer[is] = this->DMRGint[is] - ->find_matrix(iat1, iat2, r_index) - ->get_pointer(); - } - double* data_full = ap.get_pointer(ir); - for (int irow = 0; irow < ap.get_row_size(); irow += 2) { - for (int icol = 0; icol < ap.get_col_size(); icol += 2) { - *(tmp_pointer[0])++ = data_full[icol]; - *(tmp_pointer[1])++ = data_full[icol + 1]; - } - data_full += ap.get_col_size(); - for (int icol = 0; icol < ap.get_col_size(); icol += 2) { - *(tmp_pointer[2])++ = data_full[icol]; - *(tmp_pointer[3])++ = data_full[icol + 1]; - } - data_full += ap.get_col_size(); - } - } - } - } - ModuleBase::timer::tick("Gint", "transfer_DMR"); -} \ No newline at end of file diff --git a/source/source_lcao/module_gint/temp_gint/gint_rho.cpp b/source/source_lcao/module_gint/gint_rho.cpp similarity index 91% rename from source/source_lcao/module_gint/temp_gint/gint_rho.cpp rename to source/source_lcao/module_gint/gint_rho.cpp index c96b10a731..709be0507f 100644 --- a/source/source_lcao/module_gint/temp_gint/gint_rho.cpp +++ b/source/source_lcao/module_gint/gint_rho.cpp @@ -33,8 +33,9 @@ void Gint_rho::cal_rho_() std::vector phi; std::vector phi_dm; #pragma omp for schedule(dynamic) - for(const auto& biggrid: gint_info_->get_biggrids()) + for (int i = 0; i < gint_info_->get_bgrids_num(); i++) { + const auto& biggrid = gint_info_->get_biggrids()[i]; if(biggrid->get_atoms().size() == 0) { continue; diff --git a/source/source_lcao/module_gint/temp_gint/gint_rho.h b/source/source_lcao/module_gint/gint_rho.h similarity index 100% rename from source/source_lcao/module_gint/temp_gint/gint_rho.h rename to source/source_lcao/module_gint/gint_rho.h diff --git a/source/source_lcao/module_gint/gint_rho_cpu_interface.cpp b/source/source_lcao/module_gint/gint_rho_cpu_interface.cpp deleted file mode 100644 index 073a1821b0..0000000000 --- a/source/source_lcao/module_gint/gint_rho_cpu_interface.cpp +++ /dev/null @@ -1,197 +0,0 @@ -#include "gint.h" -#include "source_base/memory.h" -#include "source_io/module_parameter/parameter.h" -#include "source_base/timer.h" - -void Gint::gint_kernel_rho(Gint_inout* inout) { - ModuleBase::TITLE("Gint_interface", "cal_gint_rho"); - ModuleBase::timer::tick("Gint_interface", "cal_gint_rho"); - const int max_size = this->gridt->max_atom; - const int ncyz = this->ny * this->nplane; - const double delta_r = this->gridt->dr_uniform; - -#pragma omp parallel -{ - std::vector block_iw(max_size, 0); - std::vector block_index(max_size+1, 0); - std::vector block_size(max_size, 0); - std::vector vindex(this->bxyz, 0); -#pragma omp for schedule(dynamic) - for (int grid_index = 0; grid_index < this->nbxx; grid_index++) - { - const int na_grid = this->gridt->how_many_atoms[grid_index]; - if (na_grid == 0) { - continue; - } - Gint_Tools::get_vindex(this->bxyz, - this->bx, - this->by, - this->bz, - this->nplane, - this->gridt->start_ind[grid_index], - ncyz, - vindex.data()); - // prepare block information - ModuleBase::Array_Pool cal_flag(this->bxyz,max_size); - Gint_Tools::get_block_info(*this->gridt, - this->bxyz, - na_grid, - grid_index, - block_iw.data(), - block_index.data(), - block_size.data(), - cal_flag.get_ptr_2D()); - - // evaluate psi on grids - const int LD_pool = block_index[na_grid]; - ModuleBase::Array_Pool psir_ylm(this->bxyz, LD_pool); - Gint_Tools::cal_psir_ylm(*this->gridt, - this->bxyz, - na_grid, - grid_index, - delta_r, - block_index.data(), - block_size.data(), - cal_flag.get_ptr_2D(), - psir_ylm.get_ptr_2D()); - - for (int is = 0; is < inout->nspin_rho; ++is) - { - // psir_ylm_new = psir_func(psir_ylm) - // psir_func==nullptr means psir_ylm_new=psir_ylm - const ModuleBase::Array_Pool &psir_ylm_1 = (!this->psir_func_1) ? psir_ylm : this->psir_func_1(psir_ylm, *this->gridt, grid_index, is, block_iw, block_size, block_index, cal_flag); - const ModuleBase::Array_Pool &psir_ylm_2 = (!this->psir_func_2) ? psir_ylm : this->psir_func_2(psir_ylm, *this->gridt, grid_index, is, block_iw, block_size, block_index, cal_flag); - - ModuleBase::Array_Pool psir_DM(this->bxyz, LD_pool); - ModuleBase::GlobalFunc::ZEROS(psir_DM.get_ptr_1D(), this->bxyz * LD_pool); - - // calculating g_mu(r) = sum_nu rho_mu,nu psi_nu(r) - Gint_Tools::mult_psi_DMR(*this->gridt, - this->bxyz, - LD_pool, - grid_index, - na_grid, - block_index.data(), - block_size.data(), - cal_flag.get_ptr_2D(), - psir_ylm_1.get_ptr_2D(), - psir_DM.get_ptr_2D(), - this->DMRGint[is], - inout->if_symm); - - // do sum_mu g_mu(r)psi_mu(r) to get electron density on grid - this->cal_meshball_rho(na_grid, block_index.data(), vindex.data(), psir_ylm_2.get_ptr_2D(), psir_DM.get_ptr_2D(), inout->rho[is]); - } - } -} - ModuleBase::TITLE("Gint_interface", "cal_gint_rho"); - ModuleBase::timer::tick("Gint_interface", "cal_gint_rho"); -} - -void Gint::gint_kernel_tau(Gint_inout* inout) { - ModuleBase::TITLE("Gint_interface", "cal_gint_tau"); - ModuleBase::timer::tick("Gint_interface", "cal_gint_tau"); - const int max_size = this->gridt->max_atom; - const int ncyz = this->ny * this->nplane; - const double delta_r = this->gridt->dr_uniform; - - -#pragma omp parallel -{ - std::vector block_iw(max_size, 0); - std::vector block_index(max_size+1, 0); - std::vector block_size(max_size, 0); - std::vector vindex(bxyz, 0); -#pragma omp for schedule(dynamic) - for (int grid_index = 0; grid_index < this->nbxx; grid_index++) - { - const int na_grid = this->gridt->how_many_atoms[grid_index]; - if (na_grid == 0) { - continue; - } - Gint_Tools::get_vindex(this->bxyz, - this->bx, - this->by, - this->bz, - this->nplane, - this->gridt->start_ind[grid_index], - ncyz, - vindex.data()); - //prepare block information - ModuleBase::Array_Pool cal_flag(this->bxyz,max_size); - Gint_Tools::get_block_info(*this->gridt, this->bxyz, na_grid, grid_index, - block_iw.data(), block_index.data(), block_size.data(), cal_flag.get_ptr_2D()); - - //evaluate psi and dpsi on grids - const int LD_pool = block_index[na_grid]; - ModuleBase::Array_Pool psir_ylm(this->bxyz, LD_pool); - ModuleBase::Array_Pool dpsir_ylm_x(this->bxyz, LD_pool); - ModuleBase::Array_Pool dpsir_ylm_y(this->bxyz, LD_pool); - ModuleBase::Array_Pool dpsir_ylm_z(this->bxyz, LD_pool); - - Gint_Tools::cal_dpsir_ylm(*this->gridt, - this->bxyz, na_grid, grid_index, delta_r, - block_index.data(), block_size.data(), - cal_flag.get_ptr_2D(), - psir_ylm.get_ptr_2D(), - dpsir_ylm_x.get_ptr_2D(), - dpsir_ylm_y.get_ptr_2D(), - dpsir_ylm_z.get_ptr_2D()); - - for(int is=0; is dpsix_DM(this->bxyz, LD_pool); - ModuleBase::Array_Pool dpsiy_DM(this->bxyz, LD_pool); - ModuleBase::Array_Pool dpsiz_DM(this->bxyz, LD_pool); - ModuleBase::GlobalFunc::ZEROS(dpsix_DM.get_ptr_1D(), this->bxyz*LD_pool); - ModuleBase::GlobalFunc::ZEROS(dpsiy_DM.get_ptr_1D(), this->bxyz*LD_pool); - ModuleBase::GlobalFunc::ZEROS(dpsiz_DM.get_ptr_1D(), this->bxyz*LD_pool); - - //calculating g_i,mu(r) = sum_nu rho_mu,nu d/dx_i psi_nu(r), x_i=x,y,z - Gint_Tools::mult_psi_DMR( - *this->gridt, this->bxyz, - LD_pool, - grid_index, na_grid, - block_index.data(), block_size.data(), - cal_flag.get_ptr_2D(), - dpsir_ylm_x.get_ptr_2D(), - dpsix_DM.get_ptr_2D(), - this->DMRGint[is], - true); - Gint_Tools::mult_psi_DMR( - *this->gridt, this->bxyz, - LD_pool, - grid_index, na_grid, - block_index.data(), block_size.data(), - cal_flag.get_ptr_2D(), - dpsir_ylm_y.get_ptr_2D(), - dpsiy_DM.get_ptr_2D(), - this->DMRGint[is], - true); - Gint_Tools::mult_psi_DMR( - *this->gridt, this->bxyz, - LD_pool, - grid_index, na_grid, - block_index.data(), block_size.data(), - cal_flag.get_ptr_2D(), - dpsir_ylm_z.get_ptr_2D(), - dpsiz_DM.get_ptr_2D(), - this->DMRGint[is], - true); - - //do sum_i,mu g_i,mu(r) * d/dx_i psi_mu(r) to get kinetic energy density on grid - if(inout->job==Gint_Tools::job_type::tau) - { - this->cal_meshball_tau( - na_grid, block_index.data(), - vindex.data(), - dpsir_ylm_x.get_ptr_2D(), dpsir_ylm_y.get_ptr_2D(), dpsir_ylm_z.get_ptr_2D(), - dpsix_DM.get_ptr_2D(), dpsiy_DM.get_ptr_2D(), dpsiz_DM.get_ptr_2D(), - inout->rho[is]); - } - } - } -} - ModuleBase::TITLE("Gint_interface", "cal_gint_tau"); - ModuleBase::timer::tick("Gint_interface", "cal_gint_tau"); -} diff --git a/source/source_lcao/module_gint/temp_gint/gint_rho_gpu.cpp b/source/source_lcao/module_gint/gint_rho_gpu.cpp similarity index 81% rename from source/source_lcao/module_gint/temp_gint/gint_rho_gpu.cpp rename to source/source_lcao/module_gint/gint_rho_gpu.cpp index ca24002579..21f19d9ac0 100644 --- a/source/source_lcao/module_gint/temp_gint/gint_rho_gpu.cpp +++ b/source/source_lcao/module_gint/gint_rho_gpu.cpp @@ -3,6 +3,7 @@ #include "gint_helper.h" #include "batch_biggrid.h" #include "kernel/phi_operator_gpu.h" +#include "source_base/module_device/device_check.h" namespace ModuleGint { @@ -34,7 +35,7 @@ void Gint_rho_gpu::transfer_cpu_to_gpu_() { dm_gint_d_vec_[is] = CudaMemWrapper(dm_gint_vec_[is].get_nnr(), 0, false); rho_d_vec_[is] = CudaMemWrapper(gint_info_->get_local_mgrid_num(), 0, false); - checkCuda(cudaMemcpy(dm_gint_d_vec_[is].get_device_ptr(), dm_gint_vec_[is].get_wrapper(), + CHECK_CUDA(cudaMemcpy(dm_gint_d_vec_[is].get_device_ptr(), dm_gint_vec_[is].get_wrapper(), dm_gint_vec_[is].get_nnr() * sizeof(double), cudaMemcpyHostToDevice)); } } @@ -43,7 +44,7 @@ void Gint_rho_gpu::transfer_gpu_to_cpu_() { for (int is = 0; is < nspin_; is++) { - checkCuda(cudaMemcpy(rho_[is], rho_d_vec_[is].get_device_ptr(), + CHECK_CUDA(cudaMemcpy(rho_[is], rho_d_vec_[is].get_device_ptr(), gint_info_->get_local_mgrid_num() * sizeof(double), cudaMemcpyDeviceToHost)); } } @@ -55,15 +56,16 @@ void Gint_rho_gpu::cal_rho_() { // 20240620 Note that it must be set again here because // cuda's device is not safe in a multi-threaded environment. - checkCuda(cudaSetDevice(gint_info_->get_dev_id())); + CHECK_CUDA(cudaSetDevice(gint_info_->get_dev_id())); cudaStream_t stream; - checkCuda(cudaStreamCreate(&stream)); + CHECK_CUDA(cudaStreamCreate(&stream)); PhiOperatorGpu phi_op(gint_info_->get_gpu_vars(), stream); CudaMemWrapper phi(BatchBigGrid::get_max_phi_len(), stream, false); CudaMemWrapper phi_dm(BatchBigGrid::get_max_phi_len(), stream, false); #pragma omp for schedule(dynamic) - for(const auto& bgrid_batch: gint_info_->get_bgrid_batches()) + for (int i = 0; i < gint_info_->get_bgrid_batches_num(); ++i) { + const auto& bgrid_batch = gint_info_->get_bgrid_batches()[i]; if(bgrid_batch->empty()) { continue; @@ -77,8 +79,8 @@ void Gint_rho_gpu::cal_rho_() phi_op.phi_dot_phi(phi.get_device_ptr(), phi_dm.get_device_ptr(), rho_d_vec_[is].get_device_ptr()); } } - checkCuda(cudaStreamSynchronize(stream)); - checkCuda(cudaStreamDestroy(stream)); + CHECK_CUDA(cudaStreamSynchronize(stream)); + CHECK_CUDA(cudaStreamDestroy(stream)); } transfer_gpu_to_cpu_(); } diff --git a/source/source_lcao/module_gint/gint_rho_gpu.cu b/source/source_lcao/module_gint/gint_rho_gpu.cu deleted file mode 100644 index c5591e662e..0000000000 --- a/source/source_lcao/module_gint/gint_rho_gpu.cu +++ /dev/null @@ -1,234 +0,0 @@ -#include "kernels/cuda/cuda_tools.cuh" -#include "source_base/ylm.h" -#include "gint_rho_gpu.h" -#include "gint_tools.h" -#include "kernels/cuda/gint_rho.cuh" - -#ifdef _OPENMP -#include -#endif - -namespace GintKernel -{ - -void gint_rho_gpu(const hamilt::HContainer* dm, - const double* ylmcoef_now, - const double dr, - const double* rcut, - const Grid_Technique& gridt, - const UnitCell& ucell, - double* rho) -{ - checkCuda(cudaSetDevice(gridt.dev_id)); - // checkCuda(cudaSetDeviceFlags(cudaDeviceScheduleBlockingSync)); - - const int nbzp = gridt.nbzp; - const int nczp =nbzp * gridt.bz; - const int num_mcell_on_proc = nczp * gridt.ncx * gridt.ncy; - const int lgd = gridt.lgd; - const int max_atom = gridt.max_atom; - const int num_streams = gridt.nstreams; - const int max_atom_per_bcell = max_atom * gridt.bxyz; - const int max_atom_per_z = max_atom * nbzp; - const int max_phi_per_z = max_atom_per_bcell * nbzp * ucell.nwmax; - const int max_atompair_per_z = max_atom * max_atom * nbzp; - - std::vector streams(num_streams); - std::vector events(num_streams); - for (int i = 0; i < num_streams; i++) - { - checkCuda(cudaStreamCreate(&streams[i])); - checkCuda(cudaEventCreateWithFlags(&events[i], cudaEventDisableTiming)); - } - - Cuda_Mem_Wrapper dr_part(max_atom_per_z * 3, num_streams, true); - Cuda_Mem_Wrapper atoms_type(max_atom_per_z, num_streams, true); - // The first number in every group of two represents the number of atoms on that bigcell. - // The second number represents the cumulative number of atoms up to that bigcell. - Cuda_Mem_Wrapper atoms_num_info(2 * nbzp, num_streams, true); - - Cuda_Mem_Wrapper psi(max_phi_per_z, num_streams, false); - Cuda_Mem_Wrapper psi_dm(max_phi_per_z, num_streams, false); - - Cuda_Mem_Wrapper gemm_alpha(max_atompair_per_z, num_streams, true); - Cuda_Mem_Wrapper gemm_m(max_atompair_per_z, num_streams, true); - Cuda_Mem_Wrapper gemm_n(max_atompair_per_z, num_streams, true); - Cuda_Mem_Wrapper gemm_k(max_atompair_per_z, num_streams, true); - Cuda_Mem_Wrapper gemm_lda(max_atompair_per_z, num_streams, true); - Cuda_Mem_Wrapper gemm_ldb(max_atompair_per_z, num_streams, true); - Cuda_Mem_Wrapper gemm_ldc(max_atompair_per_z, num_streams, true); - Cuda_Mem_Wrapper gemm_A(max_atompair_per_z, num_streams, true); - Cuda_Mem_Wrapper gemm_B(max_atompair_per_z, num_streams, true); - Cuda_Mem_Wrapper gemm_C(max_atompair_per_z, num_streams, true); - - Cuda_Mem_Wrapper rho_g(num_mcell_on_proc, 1, false); - Cuda_Mem_Wrapper dot_product(nbzp * gridt.bxyz, num_streams, true); - - Cuda_Mem_Wrapper dm_matrix(dm->get_nnr(), 1, false); - // retrieve the density matrix on the host - checkCuda(cudaMemcpy(dm_matrix.get_device_pointer(), - dm->get_wrapper(), - dm->get_nnr() * sizeof(double), - cudaMemcpyHostToDevice)); - -// calculate the rho for every nbzp bigcells -#ifdef _OPENMP -const int max_thread_num = std::min(omp_get_max_threads(), num_streams); -#endif -#pragma omp parallel num_threads(max_thread_num) -{ -#ifdef _OPENMP - const int tid = omp_get_thread_num(); - const int num_threads = omp_get_num_threads(); - const int sid_start = tid * num_streams / num_threads; - const int thread_num_streams = tid == num_threads - 1 ? num_streams - sid_start : num_streams / num_threads; -#else - const int sid_start = 0; - const int thread_num_streams = num_streams; -#endif -#pragma omp for collapse(2) schedule(dynamic) - for (int i = 0; i < gridt.nbx; i++) - { - for (int j = 0; j < gridt.nby; j++) - { - // 20240620 Note that it must be set again here because - // cuda's device is not safe in a multi-threaded environment. - - checkCuda(cudaSetDevice(gridt.dev_id)); - - const int sid = (i * gridt.nby + j) % thread_num_streams + sid_start; - checkCuda(cudaEventSynchronize(events[sid])); - - int max_m = 0; - int max_n = 0; - int atom_pair_num = 0; - int atoms_per_z = 0; - const int grid_index_ij = i * gridt.nby * nbzp + j * nbzp; - - // generate GPU tasks, including the calculation of psir, matrix - // multiplication, and dot product - gtask_rho(gridt, - grid_index_ij, - ucell, - dr_part.get_host_pointer(sid), - atoms_type.get_host_pointer(sid), - atoms_num_info.get_host_pointer(sid), - atoms_per_z); - - alloc_mult_dot_rho( - dm, - gridt, - ucell, - grid_index_ij, - max_atom, - lgd, - nczp, - atoms_num_info.get_host_pointer(sid), - psi.get_device_pointer(sid), - psi_dm.get_device_pointer(sid), - dm_matrix.get_device_pointer(), - gemm_alpha.get_host_pointer(sid), - gemm_m.get_host_pointer(sid), - gemm_n.get_host_pointer(sid), - gemm_k.get_host_pointer(sid), - gemm_lda.get_host_pointer(sid), - gemm_ldb.get_host_pointer(sid), - gemm_ldc.get_host_pointer(sid), - gemm_A.get_host_pointer(sid), - gemm_B.get_host_pointer(sid), - gemm_C.get_host_pointer(sid), - max_m, - max_n, - atom_pair_num, - rho_g.get_device_pointer(), - dot_product.get_host_pointer(sid)); - - dr_part.copy_host_to_device_async(streams[sid], sid, atoms_per_z * 3); - atoms_type.copy_host_to_device_async(streams[sid], sid, atoms_per_z); - atoms_num_info.copy_host_to_device_async(streams[sid], sid); - - gemm_alpha.copy_host_to_device_async(streams[sid], sid, atom_pair_num); - gemm_m.copy_host_to_device_async(streams[sid], sid, atom_pair_num); - gemm_n.copy_host_to_device_async(streams[sid], sid, atom_pair_num); - gemm_k.copy_host_to_device_async(streams[sid], sid, atom_pair_num); - gemm_lda.copy_host_to_device_async(streams[sid], sid, atom_pair_num); - gemm_ldb.copy_host_to_device_async(streams[sid], sid, atom_pair_num); - gemm_ldc.copy_host_to_device_async(streams[sid], sid, atom_pair_num); - gemm_A.copy_host_to_device_async(streams[sid], sid, atom_pair_num); - gemm_B.copy_host_to_device_async(streams[sid], sid, atom_pair_num); - gemm_C.copy_host_to_device_async(streams[sid], sid, atom_pair_num); - dot_product.copy_host_to_device_async(streams[sid], sid); - checkCuda(cudaEventRecord(events[sid], streams[sid])); - - psi.memset_device_async(streams[sid], sid, 0); - psi_dm.memset_device_async(streams[sid], sid, 0); - - // Launching kernel to calculate psi - dim3 grid_psi(nbzp, gridt.bxyz); - dim3 block_psi(64); - get_psi<<>>( - gridt.ylmcoef_g, - dr, - gridt.bxyz, - ucell.nwmax, - max_atom, - gridt.atom_nwl_g, - gridt.atom_new_g, - gridt.atom_ylm_g, - gridt.atom_nw_g, - gridt.rcut_g, - gridt.nr_max, - gridt.psi_u_g, - gridt.mcell_pos_g, - dr_part.get_device_pointer(sid), - atoms_type.get_device_pointer(sid), - atoms_num_info.get_device_pointer(sid), - psi.get_device_pointer(sid)); - checkCudaLastError(); - - // Performing matrix multiplication alpha * mat_dm * mat_psir - gridt.fastest_matrix_mul(max_m, - max_n, - gemm_m.get_device_pointer(sid), - gemm_n.get_device_pointer(sid), - gemm_k.get_device_pointer(sid), - gemm_A.get_device_pointer(sid), - gemm_lda.get_device_pointer(sid), - gemm_B.get_device_pointer(sid), - gemm_ldb.get_device_pointer(sid), - gemm_C.get_device_pointer(sid), - gemm_ldc.get_device_pointer(sid), - atom_pair_num, - streams[sid], - gemm_alpha.get_device_pointer(sid)); - checkCudaLastError(); - - // Launching kernel to calculate dot product psir * psir_dm - // if warpSize is not eauql to 32, the psir_dot kernel should be modified - dim3 grid_dot(nbzp, gridt.bxyz); - dim3 block_dot(64); - psir_dot<<>>( - gridt.bxyz, - ucell.nwmax, - atoms_num_info.get_device_pointer(sid), - psi.get_device_pointer(sid), - psi_dm.get_device_pointer(sid), - dot_product.get_device_pointer(sid)); - checkCudaLastError(); - } - } -} - - // Copy rho from device to host - checkCuda(cudaMemcpy(rho, - rho_g.get_device_pointer(), - num_mcell_on_proc * sizeof(double), - cudaMemcpyDeviceToHost)); - - for (int i = 0; i < num_streams; i++) - { - checkCuda(cudaStreamDestroy(streams[i])); - checkCuda(cudaEventDestroy(events[i])); - } -} -} // namespace GintKernel diff --git a/source/source_lcao/module_gint/gint_rho_gpu.h b/source/source_lcao/module_gint/gint_rho_gpu.h index 7dba352a84..d8a8fe6e01 100644 --- a/source/source_lcao/module_gint/gint_rho_gpu.h +++ b/source/source_lcao/module_gint/gint_rho_gpu.h @@ -1,68 +1,52 @@ -#ifndef GINT_RHO_H -#define GINT_RHO_H -#include -#include // for CUDA_VERSION -#include +#pragma once -#include "source_lcao/module_gint/gint.h" -#include "source_lcao/module_gint/grid_technique.h" +#include +#include +#include "source_lcao/module_hcontainer/hcontainer.h" +#include "gint.h" +#include "gint_info.h" +#include "source_lcao/module_gint/kernel/cuda_mem_wrapper.h" -namespace GintKernel +namespace ModuleGint { -/** - * calculate the rho by GPU - * - * @param dm density matrix. - * @param ylmcoef_now coefficients for the spherical harmonics expansion. - * @param dr The grid spacing. - * @param rcut Pointer to the cutoff radius array. - * @param gridt Grid_Technique object containing grid information. - * @param ucell UnitCell. - * @param rho rho. - */ -void gint_rho_gpu(const hamilt::HContainer* dm, - const double* ylmcoef_now, - const double dr, - const double* rcut, - const Grid_Technique& gridt, - const UnitCell& ucell, - double* rho); +class Gint_rho_gpu: public Gint +{ + public: + Gint_rho_gpu( + const std::vector*>& dm_vec, + const int nspin, + double **rho, + bool is_dm_symm = true) + : dm_vec_(dm_vec), nspin_(nspin), rho_(rho), is_dm_symm_(is_dm_symm) {} + + void cal_gint(); + + private: + void init_dm_gint_(); + + void cal_rho_(); + + void transfer_cpu_to_gpu_(); + + void transfer_gpu_to_cpu_(); + + // input + const std::vector*> dm_vec_; + const int nspin_; + + // if true, it means the DMR matrix is symmetric, + // which leads to faster computations compared to the asymmetric case. + const bool is_dm_symm_; + + // output + double **rho_; -void gtask_rho(const Grid_Technique& gridt, - const int grid_index_ij, - const UnitCell& ucell, - double* dr_part, - uint8_t* atoms_type, - int* atoms_num_info, - int& atoms_per_z); + // Intermediate variables + std::vector> dm_gint_vec_; -void alloc_mult_dot_rho(const hamilt::HContainer* dm, - const Grid_Technique& gridt, - const UnitCell& ucell, - const int grid_index_ij, - const int max_atom, - const int lgd, - const int nczp, - const int* atoms_num_info, - double* const psir_ylm_g, - double* const psir_dm_g, - double* const dm_matrix_g, - double* mat_alpha, - int* mat_m, - int* mat_n, - int* mat_k, - int* mat_lda, - int* mat_ldb, - int* mat_ldc, - double** mat_A, - double** mat_B, - double** mat_C, - int& max_m, - int& max_n, - int& atom_pair_num, - double* rho_g, - double** dot_product); + std::vector> dm_gint_d_vec_; + std::vector> rho_d_vec_; +}; -} // namespace GintKernel -#endif \ No newline at end of file +} \ No newline at end of file diff --git a/source/source_lcao/module_gint/gint_rho_old.cpp b/source/source_lcao/module_gint/gint_rho_old.cpp deleted file mode 100644 index b3027d6b12..0000000000 --- a/source/source_lcao/module_gint/gint_rho_old.cpp +++ /dev/null @@ -1,27 +0,0 @@ -#include "gint_k.h" -#include "gint_tools.h" -#include "grid_technique.h" -#include "source_base/global_function.h" -#include "source_base/global_variable.h" -#include "source_base/timer.h" -#include "source_base/array_pool.h" -#include "source_base/ylm.h" -#include "source_basis/module_ao/ORB_read.h" -#include "source_pw/module_pwdft/global.h" - -void Gint::cal_meshball_rho(const int na_grid, - const int*const block_index, - const int*const vindex, - const double*const*const psir_ylm, - const double*const*const psir_DMR, - double*const rho) -{ - const int inc = 1; - // sum over mu to get density on grid - for (int ib = 0; ib < this->bxyz; ++ib) - { - const double r = ddot_(&block_index[na_grid], psir_ylm[ib], &inc, psir_DMR[ib], &inc); - const int grid = vindex[ib]; - rho[grid] += r; - } -} diff --git a/source/source_lcao/module_gint/temp_gint/gint_tau.cpp b/source/source_lcao/module_gint/gint_tau.cpp similarity index 94% rename from source/source_lcao/module_gint/temp_gint/gint_tau.cpp rename to source/source_lcao/module_gint/gint_tau.cpp index 1b5e282384..eb42b55b21 100644 --- a/source/source_lcao/module_gint/temp_gint/gint_tau.cpp +++ b/source/source_lcao/module_gint/gint_tau.cpp @@ -37,8 +37,9 @@ void Gint_tau::cal_tau_() std::vector dphi_y_dm; std::vector dphi_z_dm; #pragma omp for schedule(dynamic) - for(const auto& biggrid: gint_info_->get_biggrids()) + for (int i = 0; i < gint_info_->get_bgrids_num(); i++) { + const auto& biggrid = gint_info_->get_biggrids()[i]; if(biggrid->get_atoms().size() == 0) { continue; diff --git a/source/source_lcao/module_gint/temp_gint/gint_tau.h b/source/source_lcao/module_gint/gint_tau.h similarity index 100% rename from source/source_lcao/module_gint/temp_gint/gint_tau.h rename to source/source_lcao/module_gint/gint_tau.h diff --git a/source/source_lcao/module_gint/temp_gint/gint_tau_gpu.cpp b/source/source_lcao/module_gint/gint_tau_gpu.cpp similarity index 86% rename from source/source_lcao/module_gint/temp_gint/gint_tau_gpu.cpp rename to source/source_lcao/module_gint/gint_tau_gpu.cpp index cbeeead322..e7a6fca781 100644 --- a/source/source_lcao/module_gint/temp_gint/gint_tau_gpu.cpp +++ b/source/source_lcao/module_gint/gint_tau_gpu.cpp @@ -3,6 +3,7 @@ #include "gint_helper.h" #include "batch_biggrid.h" #include "kernel/phi_operator_gpu.h" +#include "source_base/module_device/device_check.h" namespace ModuleGint { @@ -34,7 +35,7 @@ void Gint_tau_gpu::transfer_cpu_to_gpu_() { dm_gint_d_vec_[is] = CudaMemWrapper(dm_gint_vec_[is].get_nnr(), 0, false); kin_d_vec_[is] = CudaMemWrapper(gint_info_->get_local_mgrid_num(), 0, false); - checkCuda(cudaMemcpy(dm_gint_d_vec_[is].get_device_ptr(), dm_gint_vec_[is].get_wrapper(), + CHECK_CUDA(cudaMemcpy(dm_gint_d_vec_[is].get_device_ptr(), dm_gint_vec_[is].get_wrapper(), dm_gint_vec_[is].get_nnr() * sizeof(double), cudaMemcpyHostToDevice)); } } @@ -43,7 +44,7 @@ void Gint_tau_gpu::transfer_gpu_to_cpu_() { for (int is = 0; is < nspin_; is++) { - checkCuda(cudaMemcpy(kin_[is], kin_d_vec_[is].get_device_ptr(), + CHECK_CUDA(cudaMemcpy(kin_[is], kin_d_vec_[is].get_device_ptr(), gint_info_->get_local_mgrid_num() * sizeof(double), cudaMemcpyDeviceToHost)); } } @@ -55,9 +56,9 @@ void Gint_tau_gpu::cal_tau_() { // 20240620 Note that it must be set again here because // cuda's device is not safe in a multi-threaded environment. - checkCuda(cudaSetDevice(gint_info_->get_dev_id())); + CHECK_CUDA(cudaSetDevice(gint_info_->get_dev_id())); cudaStream_t stream; - checkCuda(cudaStreamCreate(&stream)); + CHECK_CUDA(cudaStreamCreate(&stream)); PhiOperatorGpu phi_op(gint_info_->get_gpu_vars(), stream); CudaMemWrapper dphi_x(BatchBigGrid::get_max_phi_len(), stream, false); CudaMemWrapper dphi_y(BatchBigGrid::get_max_phi_len(), stream, false); @@ -66,8 +67,9 @@ void Gint_tau_gpu::cal_tau_() CudaMemWrapper dphi_y_dm(BatchBigGrid::get_max_phi_len(), stream, false); CudaMemWrapper dphi_z_dm(BatchBigGrid::get_max_phi_len(), stream, false); #pragma omp for schedule(dynamic) - for(const auto& bgrid_batch: gint_info_->get_bgrid_batches()) + for (int i = 0; i < gint_info_->get_bgrid_batches_num(); ++i) { + const auto& bgrid_batch = gint_info_->get_bgrid_batches()[i]; if(bgrid_batch->empty()) { continue; @@ -89,8 +91,8 @@ void Gint_tau_gpu::cal_tau_() phi_op.phi_dot_phi(dphi_z.get_device_ptr(), dphi_z_dm.get_device_ptr(), kin_d_vec_[is].get_device_ptr()); } } - checkCuda(cudaStreamSynchronize(stream)); - checkCuda(cudaStreamDestroy(stream)); + CHECK_CUDA(cudaStreamSynchronize(stream)); + CHECK_CUDA(cudaStreamDestroy(stream)); } transfer_gpu_to_cpu_(); } diff --git a/source/source_lcao/module_gint/temp_gint/gint_tau_gpu.h b/source/source_lcao/module_gint/gint_tau_gpu.h similarity index 92% rename from source/source_lcao/module_gint/temp_gint/gint_tau_gpu.h rename to source/source_lcao/module_gint/gint_tau_gpu.h index da19c98828..638892ff13 100644 --- a/source/source_lcao/module_gint/temp_gint/gint_tau_gpu.h +++ b/source/source_lcao/module_gint/gint_tau_gpu.h @@ -5,7 +5,7 @@ #include "source_lcao/module_hcontainer/hcontainer.h" #include "gint.h" #include "gint_info.h" -#include "source_lcao/module_gint/temp_gint/kernel/cuda_mem_wrapper.h" +#include "source_lcao/module_gint/kernel/cuda_mem_wrapper.h" namespace ModuleGint { diff --git a/source/source_lcao/module_gint/gint_tau_old.cpp b/source/source_lcao/module_gint/gint_tau_old.cpp deleted file mode 100644 index adf20d45b5..0000000000 --- a/source/source_lcao/module_gint/gint_tau_old.cpp +++ /dev/null @@ -1,38 +0,0 @@ -#include "source_base/global_function.h" -#include "source_base/global_variable.h" -#include "gint_k.h" -#include "source_basis/module_ao/ORB_read.h" -#include "grid_technique.h" -#include "source_base/ylm.h" -#include "source_pw/module_pwdft/global.h" -#include "source_base/module_external/blas_connector.h" -#include "source_base/timer.h" -#include "source_base/array_pool.h" -#include "gint_tools.h" -#include "source_base/memory.h" -#include "source_lcao/module_gint/grid_technique.h" - - -void Gint::cal_meshball_tau( - const int na_grid, - int* block_index, - int* vindex, - double** dpsix, - double** dpsiy, - double** dpsiz, - double** dpsix_dm, - double** dpsiy_dm, - double** dpsiz_dm, - double* rho) -{ - const int inc = 1; - // sum over mu to get density on grid - for(int ib=0; ibbxyz; ++ib) - { - double rx=ddot_(&block_index[na_grid], dpsix[ib], &inc, dpsix_dm[ib], &inc); - double ry=ddot_(&block_index[na_grid], dpsiy[ib], &inc, dpsiy_dm[ib], &inc); - double rz=ddot_(&block_index[na_grid], dpsiz[ib], &inc, dpsiz_dm[ib], &inc); - const int grid = vindex[ib]; - rho[ grid ] += rx + ry + rz; - } -} \ No newline at end of file diff --git a/source/source_lcao/module_gint/gint_tools.cpp b/source/source_lcao/module_gint/gint_tools.cpp deleted file mode 100644 index d60db04a1a..0000000000 --- a/source/source_lcao/module_gint/gint_tools.cpp +++ /dev/null @@ -1,234 +0,0 @@ -//========================================================= -//REFACTOR : Peize Lin, 2021.06.28 -//========================================================= -#include "gint_tools.h" - -#include -#include // for std::pair - -#include "source_base/timer.h" -#include "source_base/ylm.h" -#include "source_base/array_pool.h" -#include "source_basis/module_ao/ORB_read.h" -#include "source_pw/module_pwdft/global.h" - -namespace Gint_Tools{ -void get_vindex(const int bxyz, const int bx, const int by, const int bz, - const int nplane, const int start_ind, - const int ncyz,int* vindex) -{ - int bindex = 0; - - for(int ii=0; ii vindex(bxyz,0); - Gint_Tools::get_vindex(bxyz, bx, by, bz, nplane, start_ind, ncyz,vindex.data()); - for(int ib=0; ib gt.rcuts[it] - 1.0e-10) { - cal_flag[ib][id] = false; - } else { - cal_flag[ib][id] = true; - } - } // end ib - } - } - - -void cal_dpsirr_ylm( - const Grid_Technique& gt, const int bxyz, - const int na_grid, // number of atoms on this grid - const int grid_index, // 1d index of FFT index (i,j,k) - const int* const block_index, // block_index[na_grid+1], count total number of atomis orbitals - const int* const block_size, // block_size[na_grid], number of columns of a band - const bool* const* const cal_flag, // cal_flag[bxyz][na_grid], whether the atom-grid distance is larger than cutoff - double* const* const dpsir_ylm_x, double* const* const dpsir_ylm_y, double* const* const dpsir_ylm_z, - double* const* const dpsirr_ylm) -{ - ModuleBase::timer::tick("Gint_Tools", "cal_dpsirr_ylm"); - const UnitCell& ucell = *gt.ucell; - for (int id = 0; id < na_grid; id++) - { - const int mcell_index = gt.bcell_start[grid_index] + id; - const int imcell = gt.which_bigcell[mcell_index]; - int iat = gt.which_atom[mcell_index]; - const int it = ucell.iat2it[iat]; - Atom* atom = &ucell.atoms[it]; - - const double mt[3]={ - gt.meshball_positions[imcell][0] - gt.tau_in_bigcell[iat][0], - gt.meshball_positions[imcell][1] - gt.tau_in_bigcell[iat][1], - gt.meshball_positions[imcell][2] - gt.tau_in_bigcell[iat][2]}; - - for(int ib=0; ibnw; ++iw) - { - p_dpsirr[iw * 6] = p_dpsi_x[iw]*dr[0]; - p_dpsirr[iw * 6 + 1] = p_dpsi_x[iw]*dr[1]; - p_dpsirr[iw * 6 + 2] = p_dpsi_x[iw]*dr[2]; - p_dpsirr[iw * 6 + 3] = p_dpsi_y[iw]*dr[1]; - p_dpsirr[iw * 6 + 4] = p_dpsi_y[iw]*dr[2]; - p_dpsirr[iw * 6 + 5] = p_dpsi_z[iw]*dr[2]; - }//iw - }//else - } - } - ModuleBase::timer::tick("Gint_Tools", "cal_dpsirr_ylm"); - return; - } - - // atomic basis sets - // psir_vlbr3[bxyz][LD_pool] - ModuleBase::Array_Pool get_psir_vlbr3( - const int bxyz, - const int na_grid, // how many atoms on this (i,j,k) grid - const int LD_pool, - const int*const block_index, // block_index[na_grid+1], count total number of atomis orbitals - const bool*const*const cal_flag, // cal_flag[bxyz][na_grid], whether the atom-grid distance is larger than cutoff - const double*const vldr3, // vldr3[bxyz] - const double*const*const psir_ylm) // psir_ylm[bxyz][LD_pool] - { - ModuleBase::Array_Pool psir_vlbr3(bxyz, LD_pool); - for(int ib=0; ib cal_info(const int bxyz, - const int ia1, - const int ia2, - const bool* const* const cal_flag) -{ - int ib_start = bxyz; - int ib_end = 0; - int ib_length = 0; - for(int ib=0; ib=0; --ib) - { - if(cal_flag[ib][ia1] && cal_flag[ib][ia2]) - { - ib_end = ib; - break; - } - } - } - - ib_length = ib_end - ib_start + 1; - return std::make_pair(ib_start, ib_length); -} - -} // namespace Gint_Tools diff --git a/source/source_lcao/module_gint/gint_tools.h b/source/source_lcao/module_gint/gint_tools.h deleted file mode 100644 index a7f0e1b0d0..0000000000 --- a/source/source_lcao/module_gint/gint_tools.h +++ /dev/null @@ -1,311 +0,0 @@ -//========================================================= -// REFACTOR : Peize Lin, 2021.06.28 -//========================================================= -#ifndef GINT_TOOLS_H -#define GINT_TOOLS_H -#include "grid_technique.h" -#include "source_estate/module_charge/charge.h" -#include "source_lcao/module_hcontainer/hcontainer.h" -#include "source_base/array_pool.h" - -#include -#include // for std::pair - -namespace Gint_Tools -{ -enum class job_type -{ - vlocal, - rho, - force, - tau, - vlocal_meta, - force_meta, - dvlocal -}; -// Hamiltonian, electron density, force, kinetic energy density, Hamiltonian for mGGA -} // namespace Gint_Tools - -// the class is used to pass input/output variables -// into the unified interface gint -// not sure if this is the best practice though .. -class Gint_inout -{ - public: - // input - double*** DM=nullptr; - const double* vl=nullptr; - const double* vofk=nullptr; - bool isforce=false; - bool isstress=false; - int ispin=0; - int nspin_rho=0; // usually, but not always, equal to global nspin - bool if_symm = false; // if true, use dsymv in gint_kernel_rho; if false, use dgemv. - - // output - double** rho=nullptr; - ModuleBase::matrix* fvl_dphi=nullptr; - ModuleBase::matrix* svl_dphi=nullptr; - Gint_Tools::job_type job; - - // electron density and kin_r, multi-k - Gint_inout(double** rho_in, Gint_Tools::job_type job_in, const int& nspin_rho_in, bool if_symm_in = true) - { - rho = rho_in; - job = job_in; - nspin_rho = nspin_rho_in; - if_symm = if_symm_in; - } - - // force - Gint_inout(const int ispin_in, - const double* vl_in, - bool isforce_in, - bool isstress_in, - ModuleBase::matrix* fvl_dphi_in, - ModuleBase::matrix* svl_dphi_in, - Gint_Tools::job_type job_in) - { - vl = vl_in; - isforce = isforce_in; - isstress = isstress_in; - fvl_dphi = fvl_dphi_in; - svl_dphi = svl_dphi_in; - job = job_in; - ispin = ispin_in; - } - - // force (mGGA) - Gint_inout(const int ispin_in, - const double* vl_in, - const double* vofk_in, - const bool isforce_in, - const bool isstress_in, - ModuleBase::matrix* fvl_dphi_in, - ModuleBase::matrix* svl_dphi_in, - Gint_Tools::job_type job_in) - { - vl = vl_in; - vofk = vofk_in; - isforce = isforce_in; - isstress = isstress_in; - fvl_dphi = fvl_dphi_in; - svl_dphi = svl_dphi_in; - job = job_in; - ispin = ispin_in; - } - - // vlocal, multi-k - Gint_inout(const double* vl_in, int ispin_in, Gint_Tools::job_type job_in) - { - vl = vl_in; - ispin = ispin_in; - job = job_in; - } - - // mGGA vlocal, multi-k - Gint_inout(const double* vl_in, const double* vofk_in, int ispin_in, Gint_Tools::job_type job_in) - { - vl = vl_in; - vofk = vofk_in; - ispin = ispin_in; - job = job_in; - } - - // vlocal, gamma point - Gint_inout(const double* vl_in, Gint_Tools::job_type job_in) - { - vl = vl_in; - job = job_in; - } - - // mGGA vlocal, gamma point - Gint_inout(const double* vl_in, const double* vofk_in, Gint_Tools::job_type job_in) - { - vl = vl_in; - vofk = vofk_in; - job = job_in; - } -}; - -namespace Gint_Tools -{ -// if exponent is an integer between 0 and 5 (the most common cases in gint), -// pow_int is much faster than std::pow -inline double pow_int(const double base, const int exp) -{ - switch (exp) - { - case 0: - return 1.0; - case 1: - return base; - case 2: - return base * base; - case 3: - return base * base * base; - case 4: - return base * base * base * base; - case 5: - return base * base * base * base * base; - default: - double result = std::pow(base, exp); - return result; - } -} -// vindex[pw.bxyz] - -/** - * @brief Get the vindex form the grid index - * @param bxyz number of big grids - * @param bx number of big grids in x direction - * @param by number of big grids in y direction - * @param bz number of big grids in z direction - * @param nplane Currently using Z-axis 1D division, - * recording the number of the Z-axis process - * (nbz in the current process). - * @param start_ind start index of the grid in the 1D FFT grid - * @param ncyz number of grids in yz plane - * @param vindex the index of the grid -*/ -void get_vindex(const int bxyz, const int bx, const int by, - const int bz, const int nplane, - const int start_ind,const int ncyz,int* vindex); - -/** - * @brief Get the vldr3 form the grid index - * @param vldr3 the local potential multiplied by the grid volume - * @param vlocal the local potential - * @param bxyz number of grids - * @param bx number of grids in x direction - * @param by number of grids in y direction - * @param bz number of grids in z direction - * @param nplane Currently using Z-axis 1D division, - * recording the number of the Z-axis process - * (nbz in the current process). - * @param start_ind start index of the grid in the 1D FFT grid - * @param ncyz number of grids in yz plane - * @param dv the volume of the grid -*/ -void get_gint_vldr3(double* vldr3, - const double* const vlocal, - const int bxyz, - const int bx, - const int by, - const int bz, - const int nplane, - const int start_ind, - const int ncyz, - const double dv); - -/** - * @brief Get the information of a big grid index - * @param gt the grid technique, which contains the tools of the grid intergration - * @param bxyz number of grids - * @param na_grid number of atoms on this grid - * @param grid_index 1d index of FFT index (i,j,k) - * @param block_iw track the atom orbitals in all atoms - * @param block_index count total number of atomis orbitals - * @param block_size count the number of atomis orbitals in each atom - * @param cal_flag whether the atom-grid distance is larger than cutoff -*/ -void get_block_info(const Grid_Technique& gt, const int bxyz, const int na_grid, const int grid_index, - int* block_iw, int* block_index, int* block_size, bool** cal_flag); - -void init_orb(double& dr_uniform, - std::vector& rcuts, - UnitCell& ucell, - const LCAO_Orbitals& orb, - std::vector>& psi_u, - std::vector>& dpsi_u, - std::vector>& d2psi_u); - -// psir_ylm[pw.bxyz][LD_pool] -void cal_psir_ylm(const Grid_Technique& gt, - const int bxyz, - const int na_grid, // number of atoms on this grid - const int grid_index, // 1d index of FFT index (i,j,k) - const double delta_r, // delta_r of the uniform FFT grid - const int* const block_index, // count total number of atomis orbitals - const int* const block_size, - const bool* const* const cal_flag, - double* const* const psir_ylm); // whether the atom-grid distance is larger than cutoff - -// psir_ylm and dpsir_ylm, both[pw.bxyz][LD_pool] -void cal_dpsir_ylm( - const Grid_Technique& gt, - const int bxyz, - const int na_grid, // number of atoms on this grid - const int grid_index, // 1d index of FFT index (i,j,k) - const double delta_r, // delta_r of the uniform FFT grid - const int* const block_index, // block_index[na_grid+1], count total number of atomis orbitals - const int* const block_size, // block_size[na_grid], number of columns of a band - const bool* const* const cal_flag, // cal_flag[bxyz][na_grid], whether the atom-grid distance is larger than cutoff - double* const* const psir_ylm, - double* const* const dpsir_ylm_x, - double* const* const dpsir_ylm_y, - double* const* const dpsir_ylm_z); - -// dpsir_ylm * (r-R), R is the atomic position -void cal_dpsirr_ylm( - const Grid_Technique& gt, const int bxyz, - const int na_grid, // number of atoms on this grid - const int grid_index, // 1d index of FFT index (i,j,k) - const int* const block_index, // block_index[na_grid+1], count total number of atomis orbitals - const int* const block_size, // block_size[na_grid], number of columns of a band - const bool* const* const cal_flag, // cal_flag[bxyz][na_grid], whether the atom-grid distance is larger than cutoff - double* const* const dpsir_ylm_x, double* const* const dpsir_ylm_y, double* const* const dpsir_ylm_z, - double* const* const dpsir_ylm); - -void cal_ddpsir_ylm( - const Grid_Technique& gt, - const int bxyz, - const int na_grid, // number of atoms on this grid - const int grid_index, // 1d index of FFT index (i,j,k) - const double delta_r, // delta_r of the uniform FFT grid - const int* const block_index, // block_index[na_grid+1], count total number of atomis orbitals - const int* const block_size, // block_size[na_grid], number of columns of a band - const bool* const* const cal_flag, // cal_flag[bxyz][na_grid], whether the atom-grid distance is larger than cutoff - double* const* const ddpsir_ylm_xx, - double* const* const ddpsir_ylm_xy, - double* const* const ddpsir_ylm_xz, - double* const* const ddpsir_ylm_yy, - double* const* const ddpsir_ylm_yz, - double* const* const ddpsir_ylm_zz); - -// psir_ylm * vldr3 -ModuleBase::Array_Pool get_psir_vlbr3( - const int bxyz, - const int na_grid, // how many atoms on this (i,j,k) grid - const int LD_pool, - const int* const block_index, // block_index[na_grid+1], count total number of atomis orbitals - const bool* const* const cal_flag, // cal_flag[bxyz][na_grid], whether the atom-grid distance is larger than cutoff - const double* const vldr3, // vldr3[bxyz] - const double* const* const psir_ylm); // psir_ylm[bxyz][LD_pool] - -// sum_nu,R rho_mu,nu(R) psi_nu, for multi-k and gamma point -void mult_psi_DMR( - const Grid_Technique& gt, - const int bxyz, - const int LD_pool, - const int &grid_index, - const int &na_grid, - const int*const block_index, - const int*const block_size, - const bool*const*const cal_flag, - const double*const*const psi, - double*const*const psi_DMR, - const hamilt::HContainer*const DM, - const bool if_symm); - - -// pair.first is the first index of the meshcell which is inside atoms ia1 and ia2. -// pair.second is the number of meshcells which should be calculated in the following gemm. -// If no meshcell is inside both ia1 and ia2, return [bxyz, 0]. -std::pair cal_info(const int bxyz, - const int ia1, - const int ia2, - const bool* const* const cal_flag); - -} // namespace Gint_Tools -#endif diff --git a/source/source_lcao/module_gint/temp_gint/gint_type.h b/source/source_lcao/module_gint/gint_type.h similarity index 100% rename from source/source_lcao/module_gint/temp_gint/gint_type.h rename to source/source_lcao/module_gint/gint_type.h diff --git a/source/source_lcao/module_gint/temp_gint/gint_vl.cpp b/source/source_lcao/module_gint/gint_vl.cpp similarity index 87% rename from source/source_lcao/module_gint/temp_gint/gint_vl.cpp rename to source/source_lcao/module_gint/gint_vl.cpp index 3cdd3c4549..4194bc77cb 100644 --- a/source/source_lcao/module_gint/temp_gint/gint_vl.cpp +++ b/source/source_lcao/module_gint/gint_vl.cpp @@ -34,9 +34,10 @@ void Gint_vl::cal_hr_gint_() std::vector phi; std::vector phi_vldr3; #pragma omp for schedule(dynamic) - for(const auto& biggrid: gint_info_->get_biggrids()) + for (int i = 0; i < gint_info_->get_bgrids_num(); i++) { - if(biggrid->get_atoms().empty()) + const auto& biggrid = gint_info_->get_biggrids()[i]; + if(biggrid->get_atoms().size() == 0) { continue; } diff --git a/source/source_lcao/module_gint/temp_gint/gint_vl.h b/source/source_lcao/module_gint/gint_vl.h similarity index 95% rename from source/source_lcao/module_gint/temp_gint/gint_vl.h rename to source/source_lcao/module_gint/gint_vl.h index fe3c9fa8c3..7cb2abf6dd 100644 --- a/source/source_lcao/module_gint/temp_gint/gint_vl.h +++ b/source/source_lcao/module_gint/gint_vl.h @@ -28,7 +28,7 @@ class Gint_vl : public Gint void cal_hr_gint_(); // input - const double* vr_eff_; + const double* vr_eff_ = nullptr; // output HContainer* hR_; diff --git a/source/source_lcao/module_gint/gint_vl_cpu_interface.cpp b/source/source_lcao/module_gint/gint_vl_cpu_interface.cpp deleted file mode 100644 index 4f65c1147a..0000000000 --- a/source/source_lcao/module_gint/gint_vl_cpu_interface.cpp +++ /dev/null @@ -1,265 +0,0 @@ -#include "gint.h" -#include "source_base/memory.h" -#include "source_io/module_parameter/parameter.h" -#include "source_base/timer.h" - -void Gint::gint_kernel_vlocal(Gint_inout* inout) { - ModuleBase::TITLE("Gint_interface", "cal_gint_vlocal"); - ModuleBase::timer::tick("Gint_interface", "cal_gint_vlocal"); - const UnitCell& ucell = *this->ucell; - const int max_size = this->gridt->max_atom; - const int lgd = this->gridt->lgd; - const int ncyz = this->ny * this->nplane; - const double dv = ucell.omega / this->ncxyz; - const double delta_r = this->gridt->dr_uniform; - hamilt::HContainer* hRGint_kernel = PARAM.inp.nspin != 4 ? this->hRGint : this->hRGint_tmp[inout->ispin]; - hRGint_kernel->set_zero(); - -#pragma omp parallel - { /** - * @brief When in OpenMP, it points to a newly allocated memory, - */ - std::vector block_iw(max_size,0); - std::vector block_index(max_size+1,0); - std::vector block_size(max_size,0); - std::vector vldr3(this->bxyz,0.0); - #pragma omp for schedule(dynamic) - for (int grid_index = 0; grid_index < this->nbxx; grid_index++) { - const int na_grid = this->gridt->how_many_atoms[grid_index]; - if (na_grid == 0) { - continue; - } - /** - * @brief Prepare block information - */ - ModuleBase::Array_Pool cal_flag(this->bxyz,max_size); - - Gint_Tools::get_gint_vldr3(vldr3.data(), - inout->vl, - this->bxyz, - this->bx, - this->by, - this->bz, - this->nplane, - this->gridt->start_ind[grid_index], - ncyz, - dv); - - Gint_Tools::get_block_info(*this->gridt, this->bxyz, na_grid, grid_index, - block_iw.data(), block_index.data(), block_size.data(), cal_flag.get_ptr_2D()); - - /** - * @brief Evaluate psi and dpsi on grids - */ - const int LD_pool = block_index[na_grid]; - ModuleBase::Array_Pool psir_ylm(this->bxyz, LD_pool); - Gint_Tools::cal_psir_ylm(*this->gridt, - this->bxyz, na_grid, grid_index, delta_r, - block_index.data(), block_size.data(), - cal_flag.get_ptr_2D(),psir_ylm.get_ptr_2D()); - - // psir_ylm_new=psir_func(psir_ylm) - // psir_func==nullptr means psir_ylm_new=psir_ylm - const ModuleBase::Array_Pool &psir_ylm_1 = (!this->psir_func_1) ? psir_ylm : this->psir_func_1(psir_ylm, *this->gridt, grid_index, 0, block_iw, block_size, block_index, cal_flag); - const ModuleBase::Array_Pool &psir_ylm_2 = (!this->psir_func_2) ? psir_ylm : this->psir_func_2(psir_ylm, *this->gridt, grid_index, 0, block_iw, block_size, block_index, cal_flag); - - //calculating f_mu(r) = v(r)*psi_mu(r)*dv - const ModuleBase::Array_Pool psir_vlbr3 = Gint_Tools::get_psir_vlbr3( - this->bxyz, na_grid, LD_pool, block_index.data(), - cal_flag.get_ptr_2D(), vldr3.data(), psir_ylm_1.get_ptr_2D()); - - //integrate (psi_mu*v(r)*dv) * psi_nu on grid - //and accumulates to the corresponding element in Hamiltonian - this->cal_meshball_vlocal( - na_grid, LD_pool, block_size.data(), block_index.data(), grid_index, - cal_flag.get_ptr_2D(),psir_ylm.get_ptr_2D(), psir_vlbr3.get_ptr_2D(), - hRGint_kernel); - } - ModuleBase::TITLE("Gint_interface", "cal_gint_vlocal"); - ModuleBase::timer::tick("Gint_interface", "cal_gint_vlocal"); - } -} - -void Gint::gint_kernel_dvlocal(Gint_inout* inout) { - ModuleBase::TITLE("Gint_interface", "cal_gint_dvlocal"); - ModuleBase::timer::tick("Gint_interface", "cal_gint_dvlocal"); - const UnitCell& ucell = *this->ucell; - const int max_size = this->gridt->max_atom; - const int lgd = this->gridt->lgd; - const int nnrg = pvdpRx_reduced[inout->ispin].get_nnr(); - const int ncyz = this->ny * this->nplane; - const double dv = ucell.omega / this->ncxyz; - const double delta_r = this->gridt->dr_uniform; - - if (PARAM.globalv.gamma_only_local) { - ModuleBase::WARNING_QUIT("Gint_interface::cal_gint","dvlocal only for k point!"); - } - pvdpRx_reduced[inout->ispin].set_zero(); - pvdpRy_reduced[inout->ispin].set_zero(); - pvdpRz_reduced[inout->ispin].set_zero(); - -#pragma omp parallel -{ - std::vector block_iw(max_size,0); - std::vector block_index(max_size+1,0); - std::vector block_size(max_size,0); - std::vector vldr3(this->bxyz,0.0); -#pragma omp for schedule(dynamic) - for (int grid_index = 0; grid_index < this->nbxx; grid_index++) { - const int na_grid = this->gridt->how_many_atoms[grid_index]; - if (na_grid == 0) { - continue; - } - Gint_Tools::get_gint_vldr3(vldr3.data(), - inout->vl, - this->bxyz, - this->bx, - this->by, - this->bz, - this->nplane, - this->gridt->start_ind[grid_index], - ncyz, - dv); - //prepare block information - ModuleBase::Array_Pool cal_flag(this->bxyz,max_size); - Gint_Tools::get_block_info(*this->gridt, this->bxyz, na_grid, grid_index, - block_iw.data(), block_index.data(), block_size.data(), cal_flag.get_ptr_2D()); - - //evaluate psi and dpsi on grids - const int LD_pool = block_index[na_grid]; - - ModuleBase::Array_Pool psir_ylm(this->bxyz, LD_pool); - ModuleBase::Array_Pool dpsir_ylm_x(this->bxyz, LD_pool); - ModuleBase::Array_Pool dpsir_ylm_y(this->bxyz, LD_pool); - ModuleBase::Array_Pool dpsir_ylm_z(this->bxyz, LD_pool); - Gint_Tools::cal_dpsir_ylm(*this->gridt, this->bxyz, na_grid, grid_index, delta_r, - block_index.data(), block_size.data(), cal_flag.get_ptr_2D(),psir_ylm.get_ptr_2D(), - dpsir_ylm_x.get_ptr_2D(), dpsir_ylm_y.get_ptr_2D(), dpsir_ylm_z.get_ptr_2D()); - - //calculating f_mu(r) = v(r)*psi_mu(r)*dv - const ModuleBase::Array_Pool psir_vlbr3 = Gint_Tools::get_psir_vlbr3( - this->bxyz, na_grid, LD_pool, block_index.data(), cal_flag.get_ptr_2D(), vldr3.data(), psir_ylm.get_ptr_2D()); - - //integrate (psi_mu*v(r)*dv) * psi_nu on grid - //and accumulates to the corresponding element in Hamiltonian - this->cal_meshball_vlocal(na_grid, LD_pool, block_size.data(), block_index.data(), - grid_index, cal_flag.get_ptr_2D(),psir_vlbr3.get_ptr_2D(), - dpsir_ylm_x.get_ptr_2D(), &this->pvdpRx_reduced[inout->ispin]); - this->cal_meshball_vlocal(na_grid, LD_pool, block_size.data(), block_index.data(), - grid_index, cal_flag.get_ptr_2D(),psir_vlbr3.get_ptr_2D(), - dpsir_ylm_y.get_ptr_2D(), &this->pvdpRy_reduced[inout->ispin]); - this->cal_meshball_vlocal(na_grid, LD_pool, block_size.data(), block_index.data(), - grid_index, cal_flag.get_ptr_2D(),psir_vlbr3.get_ptr_2D(), - dpsir_ylm_z.get_ptr_2D(), &this->pvdpRz_reduced[inout->ispin]); - } -} - ModuleBase::TITLE("Gint_interface", "cal_gint_dvlocal"); - ModuleBase::timer::tick("Gint_interface", "cal_gint_dvlocal"); -} - -void Gint::gint_kernel_vlocal_meta(Gint_inout* inout) { - ModuleBase::TITLE("Gint_interface", "cal_gint_vlocal_meta"); - ModuleBase::timer::tick("Gint_interface", "cal_gint_vlocal_meta"); - const UnitCell& ucell = *this->ucell; - const int max_size = this->gridt->max_atom; - const int lgd = this->gridt->lgd; - const int ncyz = this->ny * this->nplane; - const double dv = ucell.omega / this->ncxyz; - const double delta_r = this->gridt->dr_uniform; - hamilt::HContainer* hRGint_kernel = PARAM.inp.nspin != 4 ? this->hRGint : this->hRGint_tmp[inout->ispin]; - hRGint_kernel->set_zero(); - const int nnrg = hRGint_kernel->get_nnr(); - -#pragma omp parallel -{ - // define HContainer here to reference. - //Under the condition of gamma_only, hRGint will be instantiated. - std::vector block_iw(max_size,0); - std::vector block_index(max_size+1,0); - std::vector block_size(max_size,0); - std::vector vldr3(this->bxyz,0.0); - std::vector vkdr3(this->bxyz,0.0); - -#pragma omp for schedule(dynamic) - for (int grid_index = 0; grid_index < this->nbxx; grid_index++) { - const int na_grid = this->gridt->how_many_atoms[grid_index]; - if (na_grid == 0) { - continue; - } - Gint_Tools::get_gint_vldr3(vldr3.data(), - inout->vl, - this->bxyz, - this->bx, - this->by, - this->bz, - this->nplane, - this->gridt->start_ind[grid_index], - ncyz, - dv); - Gint_Tools::get_gint_vldr3(vkdr3.data(), - inout->vofk, - this->bxyz, - this->bx, - this->by, - this->bz, - this->nplane, - this->gridt->start_ind[grid_index], - ncyz, - dv); - //prepare block information - ModuleBase::Array_Pool cal_flag(this->bxyz,max_size); - Gint_Tools::get_block_info(*this->gridt, this->bxyz, na_grid, grid_index, - block_iw.data(), block_index.data(), block_size.data(), cal_flag.get_ptr_2D()); - - //evaluate psi and dpsi on grids - const int LD_pool = block_index[na_grid]; - ModuleBase::Array_Pool psir_ylm(this->bxyz, LD_pool); - ModuleBase::Array_Pool dpsir_ylm_x(this->bxyz, LD_pool); - ModuleBase::Array_Pool dpsir_ylm_y(this->bxyz, LD_pool); - ModuleBase::Array_Pool dpsir_ylm_z(this->bxyz, LD_pool); - - Gint_Tools::cal_dpsir_ylm(*this->gridt, - this->bxyz, na_grid, grid_index, delta_r, - block_index.data(), block_size.data(), - cal_flag.get_ptr_2D(), - psir_ylm.get_ptr_2D(), - dpsir_ylm_x.get_ptr_2D(), - dpsir_ylm_y.get_ptr_2D(), - dpsir_ylm_z.get_ptr_2D() - ); - - //calculating f_mu(r) = v(r)*psi_mu(r)*dv - const ModuleBase::Array_Pool psir_vlbr3 = Gint_Tools::get_psir_vlbr3( - this->bxyz, na_grid, LD_pool, block_index.data(), cal_flag.get_ptr_2D(), vldr3.data(), psir_ylm.get_ptr_2D()); - - //calculating df_mu(r) = vofk(r) * dpsi_mu(r) * dv - const ModuleBase::Array_Pool dpsix_vlbr3 = Gint_Tools::get_psir_vlbr3( - this->bxyz, na_grid, LD_pool, block_index.data(), cal_flag.get_ptr_2D(), vkdr3.data(), dpsir_ylm_x.get_ptr_2D()); - const ModuleBase::Array_Pool dpsiy_vlbr3 = Gint_Tools::get_psir_vlbr3( - this->bxyz, na_grid, LD_pool, block_index.data(), cal_flag.get_ptr_2D(), vkdr3.data(), dpsir_ylm_y.get_ptr_2D()); - const ModuleBase::Array_Pool dpsiz_vlbr3 = Gint_Tools::get_psir_vlbr3( - this->bxyz, na_grid, LD_pool, block_index.data(), cal_flag.get_ptr_2D(), vkdr3.data(), dpsir_ylm_z.get_ptr_2D()); - - - //integrate (psi_mu*v(r)*dv) * psi_nu on grid - //and accumulates to the corresponding element in Hamiltonian - this->cal_meshball_vlocal( - na_grid, LD_pool, block_size.data(), block_index.data(), grid_index, cal_flag.get_ptr_2D(), - psir_ylm.get_ptr_2D(), psir_vlbr3.get_ptr_2D(), hRGint_kernel); - //integrate (d/dx_i psi_mu*vk(r)*dv) * (d/dx_i psi_nu) on grid (x_i=x,y,z) - //and accumulates to the corresponding element in Hamiltonian - this->cal_meshball_vlocal( - na_grid, LD_pool, block_size.data(), block_index.data(), grid_index, cal_flag.get_ptr_2D(), - dpsir_ylm_x.get_ptr_2D(), dpsix_vlbr3.get_ptr_2D(), hRGint_kernel); - this->cal_meshball_vlocal( - na_grid, LD_pool, block_size.data(), block_index.data(), grid_index, cal_flag.get_ptr_2D(), - dpsir_ylm_y.get_ptr_2D(), dpsiy_vlbr3.get_ptr_2D(), hRGint_kernel); - this->cal_meshball_vlocal( - na_grid, LD_pool, block_size.data(), block_index.data(), grid_index, cal_flag.get_ptr_2D(), - dpsir_ylm_z.get_ptr_2D(), dpsiz_vlbr3.get_ptr_2D(), hRGint_kernel); - } -} - - ModuleBase::TITLE("Gint_interface", "cal_gint_vlocal_meta"); - ModuleBase::timer::tick("Gint_interface", "cal_gint_vlocal_meta"); -} \ No newline at end of file diff --git a/source/source_lcao/module_gint/temp_gint/gint_vl_gpu.cpp b/source/source_lcao/module_gint/gint_vl_gpu.cpp similarity index 79% rename from source/source_lcao/module_gint/temp_gint/gint_vl_gpu.cpp rename to source/source_lcao/module_gint/gint_vl_gpu.cpp index fe9162bc4e..3d07a080e5 100644 --- a/source/source_lcao/module_gint/temp_gint/gint_vl_gpu.cpp +++ b/source/source_lcao/module_gint/gint_vl_gpu.cpp @@ -3,6 +3,7 @@ #include "gint_helper.h" #include "batch_biggrid.h" #include "kernel/phi_operator_gpu.h" +#include "source_base/module_device/device_check.h" namespace ModuleGint { @@ -27,13 +28,13 @@ void Gint_vl_gpu::transfer_cpu_to_gpu_() { hr_gint_d_ = CudaMemWrapper(hr_gint_.get_nnr(), 0, false); vr_eff_d_ = CudaMemWrapper(gint_info_->get_local_mgrid_num(), 0, false); - checkCuda(cudaMemcpy(vr_eff_d_.get_device_ptr(), vr_eff_, + CHECK_CUDA(cudaMemcpy(vr_eff_d_.get_device_ptr(), vr_eff_, gint_info_->get_local_mgrid_num() * sizeof(double), cudaMemcpyHostToDevice)); } void Gint_vl_gpu::transfer_gpu_to_cpu_() { - checkCuda(cudaMemcpy(hr_gint_.get_wrapper(), hr_gint_d_.get_device_ptr(), + CHECK_CUDA(cudaMemcpy(hr_gint_.get_wrapper(), hr_gint_d_.get_device_ptr(), hr_gint_.get_nnr() * sizeof(double), cudaMemcpyDeviceToHost)); } @@ -44,15 +45,16 @@ void Gint_vl_gpu::cal_hr_gint_() { // 20240620 Note that it must be set again here because // cuda's device is not safe in a multi-threaded environment. - checkCuda(cudaSetDevice(gint_info_->get_dev_id())); + CHECK_CUDA(cudaSetDevice(gint_info_->get_dev_id())); cudaStream_t stream; - checkCuda(cudaStreamCreate(&stream)); + CHECK_CUDA(cudaStreamCreate(&stream)); PhiOperatorGpu phi_op(gint_info_->get_gpu_vars(), stream); CudaMemWrapper phi(BatchBigGrid::get_max_phi_len(), stream, false); CudaMemWrapper phi_vldr3(BatchBigGrid::get_max_phi_len(), stream, false); #pragma omp for schedule(dynamic) - for(const auto& bgrid_batch: gint_info_->get_bgrid_batches()) + for (int i = 0; i < gint_info_->get_bgrid_batches_num(); ++i) { + const auto& bgrid_batch = gint_info_->get_bgrid_batches()[i]; if(bgrid_batch->empty()) { continue; @@ -64,8 +66,8 @@ void Gint_vl_gpu::cal_hr_gint_() phi_op.phi_mul_phi(phi.get_device_ptr(), phi_vldr3.get_device_ptr(), hr_gint_, hr_gint_d_.get_device_ptr()); } - checkCuda(cudaStreamSynchronize(stream)); - checkCuda(cudaStreamDestroy(stream)); + CHECK_CUDA(cudaStreamSynchronize(stream)); + CHECK_CUDA(cudaStreamDestroy(stream)); } transfer_gpu_to_cpu_(); } diff --git a/source/source_lcao/module_gint/gint_vl_gpu.cu b/source/source_lcao/module_gint/gint_vl_gpu.cu deleted file mode 100644 index ddbca83a60..0000000000 --- a/source/source_lcao/module_gint/gint_vl_gpu.cu +++ /dev/null @@ -1,219 +0,0 @@ -#ifdef _OPENMP -#include -#endif - -#include "kernels/cuda/cuda_tools.cuh" -#include "source_base/ylm.h" -#include "gint_vl_gpu.h" -#include "kernels/cuda/gint_vl.cuh" - -namespace GintKernel -{ - -/** - * Computes the gamma component of the VL (Vlocal) integral on the GPU. - * - * @note The grid integration on the GPU is mainly divided into the following - * steps: - * 1. Use the CPU to divide the grid integration into subtasks. - * 2. Copy the subtask information to the GPU. - * 3. Calculate the matrix elements on the GPU. - * 4. Perform matrix multiplication on the GPU. - * 5. Copy the results back to the host. - */ -void gint_vl_gpu(hamilt::HContainer* hRGint, - const double* vlocal, - const double* ylmcoef_now, - const double dr, - const double* rcut, - const Grid_Technique& gridt, - const UnitCell& ucell) -{ - checkCuda(cudaSetDevice(gridt.dev_id)); - // checkCuda(cudaSetDeviceFlags(cudaDeviceScheduleBlockingSync)); - const int nbzp = gridt.nbzp; - const int num_streams = gridt.nstreams; - const int max_atom = gridt.max_atom; - const int max_atom_per_bcell = max_atom * gridt.bxyz; - const int max_atom_per_z = max_atom_per_bcell * nbzp; - const int max_phi_per_z = max_atom_per_z * ucell.nwmax; - const int max_atompair_per_z = max_atom * max_atom * nbzp; - const double vfactor = ucell.omega / gridt.ncxyz; - const int nczp = nbzp * gridt.bz; - std::vector streams(num_streams); - std::vector events(num_streams); - - for (int i = 0; i < num_streams; i++) - { - checkCuda(cudaStreamCreate(&streams[i])); - checkCuda(cudaEventCreateWithFlags(&events[i], cudaEventDisableTiming)); - } - - const int nnrg = hRGint->get_nnr(); - hRGint->set_zero(); - Cuda_Mem_Wrapper grid_vlocal_g(nnrg, 1, false); - grid_vlocal_g.memset_device_sync(); - - Cuda_Mem_Wrapper dr_part(max_atom_per_z * 3, num_streams, true); - Cuda_Mem_Wrapper atoms_type(max_atom_per_z, num_streams, true); - // The first number in every group of two represents the number of atoms on that bigcell. - // The second number represents the cumulative number of atoms up to that bigcell. - Cuda_Mem_Wrapper atoms_num_info(2 * nbzp, num_streams, true); - Cuda_Mem_Wrapper vldr3(nbzp * gridt.bxyz, num_streams, true); - - Cuda_Mem_Wrapper psi(max_phi_per_z, num_streams, false); - Cuda_Mem_Wrapper psi_vldr3(max_phi_per_z, num_streams, false); - - Cuda_Mem_Wrapper gemm_m(max_atompair_per_z, num_streams, true); - Cuda_Mem_Wrapper gemm_n(max_atompair_per_z, num_streams, true); - Cuda_Mem_Wrapper gemm_k(max_atompair_per_z, num_streams, true); - Cuda_Mem_Wrapper gemm_lda(max_atompair_per_z, num_streams, true); - Cuda_Mem_Wrapper gemm_ldb(max_atompair_per_z, num_streams, true); - Cuda_Mem_Wrapper gemm_ldc(max_atompair_per_z, num_streams, true); - Cuda_Mem_Wrapper gemm_A(max_atompair_per_z, num_streams, true); - Cuda_Mem_Wrapper gemm_B(max_atompair_per_z, num_streams, true); - Cuda_Mem_Wrapper gemm_C(max_atompair_per_z, num_streams, true); - -#ifdef _OPENMP -const int max_thread_num = std::min(omp_get_max_threads(), num_streams); -#endif -#pragma omp parallel num_threads(max_thread_num) -{ -#ifdef _OPENMP - const int tid = omp_get_thread_num(); - const int num_threads = omp_get_num_threads(); - const int sid_start = tid * num_streams / num_threads; - const int thread_num_streams = tid == num_threads - 1 ? num_streams - sid_start : num_streams / num_threads; -#else - const int sid_start = 0; - const int thread_num_streams = num_streams; -#endif -#pragma omp for collapse(2) schedule(dynamic) - for (int i = 0; i < gridt.nbx; i++) - { - for (int j = 0; j < gridt.nby; j++) - { - // 20240620 Note that it must be set again here because - // cuda's device is not safe in a multi-threaded environment. - checkCuda(cudaSetDevice(gridt.dev_id)); - - const int sid = (i * gridt.nby + j) % thread_num_streams + sid_start; - checkCuda(cudaEventSynchronize(events[sid])); - int max_m = 0; - int max_n = 0; - int atom_pair_num = 0; - int atoms_per_z = 0; - const int grid_index_ij = i * gridt.nby * nbzp + j * nbzp; - - gtask_vlocal(gridt, - ucell, - grid_index_ij, - nczp, - vfactor, - vlocal, - atoms_per_z, - atoms_num_info.get_host_pointer(sid), - atoms_type.get_host_pointer(sid), - dr_part.get_host_pointer(sid), - vldr3.get_host_pointer(sid)); - - alloc_mult_vlocal(hRGint, - gridt, - ucell, - grid_index_ij, - max_atom, - psi.get_device_pointer(sid), - psi_vldr3.get_device_pointer(sid), - grid_vlocal_g.get_device_pointer(), - gemm_m.get_host_pointer(sid), - gemm_n.get_host_pointer(sid), - gemm_k.get_host_pointer(sid), - gemm_lda.get_host_pointer(sid), - gemm_ldb.get_host_pointer(sid), - gemm_ldc.get_host_pointer(sid), - gemm_A.get_host_pointer(sid), - gemm_B.get_host_pointer(sid), - gemm_C.get_host_pointer(sid), - atom_pair_num, - max_m, - max_n); - - dr_part.copy_host_to_device_async(streams[sid], sid, atoms_per_z * 3); - atoms_type.copy_host_to_device_async(streams[sid], sid, atoms_per_z); - vldr3.copy_host_to_device_async(streams[sid], sid); - atoms_num_info.copy_host_to_device_async(streams[sid], sid, 2 * nbzp); - - gemm_m.copy_host_to_device_async(streams[sid], sid, atom_pair_num); - gemm_n.copy_host_to_device_async(streams[sid], sid, atom_pair_num); - gemm_k.copy_host_to_device_async(streams[sid], sid, atom_pair_num); - gemm_lda.copy_host_to_device_async(streams[sid], sid, atom_pair_num); - gemm_ldb.copy_host_to_device_async(streams[sid], sid, atom_pair_num); - gemm_ldc.copy_host_to_device_async(streams[sid], sid, atom_pair_num); - gemm_A.copy_host_to_device_async(streams[sid], sid, atom_pair_num); - gemm_B.copy_host_to_device_async(streams[sid], sid, atom_pair_num); - gemm_C.copy_host_to_device_async(streams[sid], sid, atom_pair_num); - checkCuda(cudaEventRecord(events[sid], streams[sid])); - - psi.memset_device_async(streams[sid], sid, 0); - psi_vldr3.memset_device_async(streams[sid], sid, 0); - - dim3 grid_psi(nbzp, gridt.bxyz); - dim3 block_psi(64); - get_psi_and_vldr3<<>>( - gridt.ylmcoef_g, - dr, - gridt.bxyz, - ucell.nwmax, - max_atom, - gridt.atom_nwl_g, - gridt.atom_new_g, - gridt.atom_ylm_g, - gridt.atom_nw_g, - gridt.rcut_g, - gridt.nr_max, - gridt.psi_u_g, - gridt.mcell_pos_g, - dr_part.get_device_pointer(sid), - vldr3.get_device_pointer(sid), - atoms_type.get_device_pointer(sid), - atoms_num_info.get_device_pointer(sid), - psi.get_device_pointer(sid), - psi_vldr3.get_device_pointer(sid)); - checkCudaLastError(); - - gridt.fastest_matrix_mul(max_m, - max_n, - gemm_m.get_device_pointer(sid), - gemm_n.get_device_pointer(sid), - gemm_k.get_device_pointer(sid), - gemm_A.get_device_pointer(sid), - gemm_lda.get_device_pointer(sid), - gemm_B.get_device_pointer(sid), - gemm_ldb.get_device_pointer(sid), - gemm_C.get_device_pointer(sid), - gemm_ldc.get_device_pointer(sid), - atom_pair_num, - streams[sid], - nullptr); - checkCudaLastError(); - } - } -} - - checkCuda(cudaMemcpy( - hRGint->get_wrapper(), - grid_vlocal_g.get_device_pointer(), - nnrg * sizeof(double), - cudaMemcpyDeviceToHost)); - - for (int i = 0; i < num_streams; i++) - { - checkCuda(cudaStreamDestroy(streams[i])); - checkCuda(cudaEventDestroy(events[i])); - } -} - -} // namespace GintKernel \ No newline at end of file diff --git a/source/source_lcao/module_gint/gint_vl_gpu.h b/source/source_lcao/module_gint/gint_vl_gpu.h index a04b6a130d..f4ca9251d1 100644 --- a/source/source_lcao/module_gint/gint_vl_gpu.h +++ b/source/source_lcao/module_gint/gint_vl_gpu.h @@ -1,53 +1,49 @@ -#ifndef GINT_VL_GPU_H -#define GINT_VL_GPU_H +#pragma once +#include +#include +#include "source_lcao/module_hcontainer/hcontainer.h" #include "gint.h" -#include "grid_technique.h" -#include "kernels/cuda/cuda_tools.cuh" +#include "gint_info.h" +#include "source_lcao/module_gint/kernel/cuda_mem_wrapper.h" -namespace GintKernel +namespace ModuleGint { -void gint_vl_gpu(hamilt::HContainer* hRGint, - const double* vlocal, - const double* ylmcoef_now, - const double dr, - const double* rcut, - const Grid_Technique& gridt, - const UnitCell& ucell); - -void gtask_vlocal(const Grid_Technique& gridt, - const UnitCell& ucell, - const int grid_index_ij, - const int nczp, - const double vfactor, - const double* vlocal_global_value, - int& atoms_per_z, - int* atoms_num_info, - uint8_t* atoms_type, - double* dr_part, - double* vldr3); - -void alloc_mult_vlocal(const hamilt::HContainer* hRGint, - const Grid_Technique& gridt, - const UnitCell& ucell, - const int grid_index_ij, - const int max_atom, - double* const psi, - double* const psi_vldr3, - double* const grid_vlocal_g, - int* mat_m, - int* mat_n, - int* mat_k, - int* mat_lda, - int* mat_ldb, - int* mat_ldc, - double** mat_A, - double** mat_B, - double** mat_C, - int& atom_pair_num, - int& max_m, - int& max_n); -} // namespace GintKernel - -#endif \ No newline at end of file +class Gint_vl_gpu : public Gint +{ + public: + Gint_vl_gpu( + const double* vr_eff, + HContainer* hR) + : vr_eff_(vr_eff), hR_(hR), dr3_(gint_info_->get_mgrid_volume()) {} + + void cal_gint(); + + private: + + void init_hr_gint_(); + + void transfer_cpu_to_gpu_(); + + void transfer_gpu_to_cpu_(); + + void cal_hr_gint_(); + + // input + const double* vr_eff_ = nullptr; + + + // output + HContainer* hR_; + + // Intermediate variables + double dr3_; + + HContainer hr_gint_; + + CudaMemWrapper hr_gint_d_; + CudaMemWrapper vr_eff_d_; +}; + +} \ No newline at end of file diff --git a/source/source_lcao/module_gint/temp_gint/gint_vl_metagga.cpp b/source/source_lcao/module_gint/gint_vl_metagga.cpp similarity index 95% rename from source/source_lcao/module_gint/temp_gint/gint_vl_metagga.cpp rename to source/source_lcao/module_gint/gint_vl_metagga.cpp index 56dd2ff6b0..a24fe5fe86 100644 --- a/source/source_lcao/module_gint/temp_gint/gint_vl_metagga.cpp +++ b/source/source_lcao/module_gint/gint_vl_metagga.cpp @@ -40,8 +40,9 @@ void Gint_vl_metagga::cal_hr_gint_() std::vector dphi_y_vldr3; std::vector dphi_z_vldr3; #pragma omp for schedule(dynamic) - for(const auto& biggrid: gint_info_->get_biggrids()) + for (int i = 0; i < gint_info_->get_bgrids_num(); i++) { + const auto& biggrid = gint_info_->get_biggrids()[i]; if(biggrid->get_atoms().size() == 0) { continue; diff --git a/source/source_lcao/module_gint/temp_gint/gint_vl_metagga.h b/source/source_lcao/module_gint/gint_vl_metagga.h similarity index 91% rename from source/source_lcao/module_gint/temp_gint/gint_vl_metagga.h rename to source/source_lcao/module_gint/gint_vl_metagga.h index 42a2041ddc..47e31b685d 100644 --- a/source/source_lcao/module_gint/temp_gint/gint_vl_metagga.h +++ b/source/source_lcao/module_gint/gint_vl_metagga.h @@ -29,8 +29,8 @@ class Gint_vl_metagga : public Gint void cal_hr_gint_(); // input - const double* vr_eff_; - const double* vofk_; + const double* vr_eff_ = nullptr; + const double* vofk_ = nullptr; // output HContainer* hR_; diff --git a/source/source_lcao/module_gint/temp_gint/gint_vl_metagga_gpu.cpp b/source/source_lcao/module_gint/gint_vl_metagga_gpu.cpp similarity index 86% rename from source/source_lcao/module_gint/temp_gint/gint_vl_metagga_gpu.cpp rename to source/source_lcao/module_gint/gint_vl_metagga_gpu.cpp index 9c2dad8421..c63b361668 100644 --- a/source/source_lcao/module_gint/temp_gint/gint_vl_metagga_gpu.cpp +++ b/source/source_lcao/module_gint/gint_vl_metagga_gpu.cpp @@ -3,6 +3,7 @@ #include "gint_helper.h" #include "batch_biggrid.h" #include "kernel/phi_operator_gpu.h" +#include "source_base/module_device/device_check.h" namespace ModuleGint { @@ -32,15 +33,15 @@ void Gint_vl_metagga_gpu::transfer_cpu_to_gpu_() hr_gint_d_ = CudaMemWrapper(hr_gint_.get_nnr(), 0, false); vr_eff_d_ = CudaMemWrapper(gint_info_->get_local_mgrid_num(), 0, false); vofk_d_ = CudaMemWrapper(gint_info_->get_local_mgrid_num(), 0, false); - checkCuda(cudaMemcpy(vr_eff_d_.get_device_ptr(), vr_eff_, + CHECK_CUDA(cudaMemcpy(vr_eff_d_.get_device_ptr(), vr_eff_, gint_info_->get_local_mgrid_num() * sizeof(double), cudaMemcpyHostToDevice)); - checkCuda(cudaMemcpy(vofk_d_.get_device_ptr(), vofk_, + CHECK_CUDA(cudaMemcpy(vofk_d_.get_device_ptr(), vofk_, gint_info_->get_local_mgrid_num() * sizeof(double), cudaMemcpyHostToDevice)); } void Gint_vl_metagga_gpu::transfer_gpu_to_cpu_() { - checkCuda(cudaMemcpy(hr_gint_.get_wrapper(), hr_gint_d_.get_device_ptr(), + CHECK_CUDA(cudaMemcpy(hr_gint_.get_wrapper(), hr_gint_d_.get_device_ptr(), hr_gint_.get_nnr() * sizeof(double), cudaMemcpyDeviceToHost)); } @@ -51,9 +52,9 @@ void Gint_vl_metagga_gpu::cal_hr_gint_() { // 20240620 Note that it must be set again here because // cuda's device is not safe in a multi-threaded environment. - checkCuda(cudaSetDevice(gint_info_->get_dev_id())); + CHECK_CUDA(cudaSetDevice(gint_info_->get_dev_id())); cudaStream_t stream; - checkCuda(cudaStreamCreate(&stream)); + CHECK_CUDA(cudaStreamCreate(&stream)); PhiOperatorGpu phi_op(gint_info_->get_gpu_vars(), stream); CudaMemWrapper phi(BatchBigGrid::get_max_phi_len(), stream, false); CudaMemWrapper phi_vldr3(BatchBigGrid::get_max_phi_len(), stream, false); @@ -64,8 +65,9 @@ void Gint_vl_metagga_gpu::cal_hr_gint_() CudaMemWrapper dphi_y_vldr3(BatchBigGrid::get_max_phi_len(), stream, false); CudaMemWrapper dphi_z_vldr3(BatchBigGrid::get_max_phi_len(), stream, false); #pragma omp for schedule(dynamic) - for(const auto& bgrid_batch: gint_info_->get_bgrid_batches()) + for (int i = 0; i < gint_info_->get_bgrid_batches_num(); ++i) { + const auto& bgrid_batch = gint_info_->get_bgrid_batches()[i]; if(bgrid_batch->empty()) { continue; @@ -90,8 +92,8 @@ void Gint_vl_metagga_gpu::cal_hr_gint_() phi_op.phi_mul_phi(dphi_z.get_device_ptr(), dphi_z_vldr3.get_device_ptr(), hr_gint_, hr_gint_d_.get_device_ptr()); } - checkCuda(cudaStreamSynchronize(stream)); - checkCuda(cudaStreamDestroy(stream)); + CHECK_CUDA(cudaStreamSynchronize(stream)); + CHECK_CUDA(cudaStreamDestroy(stream)); } transfer_gpu_to_cpu_(); } diff --git a/source/source_lcao/module_gint/temp_gint/gint_vl_metagga_gpu.h b/source/source_lcao/module_gint/gint_vl_metagga_gpu.h similarity index 88% rename from source/source_lcao/module_gint/temp_gint/gint_vl_metagga_gpu.h rename to source/source_lcao/module_gint/gint_vl_metagga_gpu.h index aabae7e52f..0e50564f3b 100644 --- a/source/source_lcao/module_gint/temp_gint/gint_vl_metagga_gpu.h +++ b/source/source_lcao/module_gint/gint_vl_metagga_gpu.h @@ -5,7 +5,7 @@ #include "source_lcao/module_hcontainer/hcontainer.h" #include "gint.h" #include "gint_info.h" -#include "source_lcao/module_gint/temp_gint/kernel/cuda_mem_wrapper.h" +#include "source_lcao/module_gint/kernel/cuda_mem_wrapper.h" namespace ModuleGint { @@ -34,8 +34,8 @@ class Gint_vl_metagga_gpu : public Gint void cal_hr_gint_(); // input - const double* vr_eff_; - const double* vofk_; + const double* vr_eff_ = nullptr; + const double* vofk_ = nullptr; // output HContainer* hR_; diff --git a/source/source_lcao/module_gint/temp_gint/gint_vl_metagga_nspin4.cpp b/source/source_lcao/module_gint/gint_vl_metagga_nspin4.cpp similarity index 91% rename from source/source_lcao/module_gint/temp_gint/gint_vl_metagga_nspin4.cpp rename to source/source_lcao/module_gint/gint_vl_metagga_nspin4.cpp index d5880600b0..229152ea9b 100644 --- a/source/source_lcao/module_gint/temp_gint/gint_vl_metagga_nspin4.cpp +++ b/source/source_lcao/module_gint/gint_vl_metagga_nspin4.cpp @@ -14,8 +14,7 @@ void Gint_vl_metagga_nspin4::cal_gint() ModuleBase::timer::tick("Gint", "cal_gint_vl"); init_hr_gint_(); cal_hr_gint_(); - compose_hr_gint(hr_gint_part_, hr_gint_full_); - transfer_hr_gint_to_hR(hr_gint_full_, *hR_); + merge_hr_part_to_hR(hr_gint_part_, hR_, *gint_info_); ModuleBase::timer::tick("Gint", "cal_gint_vl"); } @@ -26,8 +25,6 @@ void Gint_vl_metagga_nspin4::init_hr_gint_() { hr_gint_part_[i] = gint_info_->get_hr(); } - const int npol = 2; - hr_gint_full_ = gint_info_->get_hr>(npol); } void Gint_vl_metagga_nspin4::cal_hr_gint_() @@ -44,8 +41,9 @@ void Gint_vl_metagga_nspin4::cal_hr_gint_() std::vector dphi_y_vldr3; std::vector dphi_z_vldr3; #pragma omp for schedule(dynamic) - for(const auto& biggrid: gint_info_->get_biggrids()) + for (int i = 0; i < gint_info_->get_bgrids_num(); i++) { + const auto& biggrid = gint_info_->get_biggrids()[i]; if(biggrid->get_atoms().size() == 0) { continue; diff --git a/source/source_lcao/module_gint/temp_gint/gint_vl_metagga_nspin4.h b/source/source_lcao/module_gint/gint_vl_metagga_nspin4.h similarity index 94% rename from source/source_lcao/module_gint/temp_gint/gint_vl_metagga_nspin4.h rename to source/source_lcao/module_gint/gint_vl_metagga_nspin4.h index 12722fef21..138cb1a277 100644 --- a/source/source_lcao/module_gint/temp_gint/gint_vl_metagga_nspin4.h +++ b/source/source_lcao/module_gint/gint_vl_metagga_nspin4.h @@ -37,7 +37,6 @@ class Gint_vl_metagga_nspin4 : public Gint const int nspin_ = 4; std::vector> hr_gint_part_; - HContainer> hr_gint_full_; }; } \ No newline at end of file diff --git a/source/source_lcao/module_gint/temp_gint/gint_vl_metagga_nspin4_gpu.cpp b/source/source_lcao/module_gint/gint_vl_metagga_nspin4_gpu.cpp similarity index 86% rename from source/source_lcao/module_gint/temp_gint/gint_vl_metagga_nspin4_gpu.cpp rename to source/source_lcao/module_gint/gint_vl_metagga_nspin4_gpu.cpp index 9adc4cb137..90e7119446 100644 --- a/source/source_lcao/module_gint/temp_gint/gint_vl_metagga_nspin4_gpu.cpp +++ b/source/source_lcao/module_gint/gint_vl_metagga_nspin4_gpu.cpp @@ -3,6 +3,7 @@ #include "gint_helper.h" #include "batch_biggrid.h" #include "kernel/phi_operator_gpu.h" +#include "source_base/module_device/device_check.h" namespace ModuleGint { @@ -13,8 +14,7 @@ void Gint_vl_metagga_nspin4_gpu::cal_gint() ModuleBase::timer::tick("Gint", "cal_gint_vl"); init_hr_gint_(); cal_hr_gint_(); - compose_hr_gint(hr_gint_part_, hr_gint_full_); - transfer_hr_gint_to_hR(hr_gint_full_, *hR_); + merge_hr_part_to_hR(hr_gint_part_, hR_, *gint_info_); ModuleBase::timer::tick("Gint", "cal_gint_vl"); } @@ -25,8 +25,6 @@ void Gint_vl_metagga_nspin4_gpu::init_hr_gint_() { hr_gint_part_[i] = gint_info_->get_hr(); } - const int npol = 2; - hr_gint_full_ = gint_info_->get_hr>(npol); } void Gint_vl_metagga_nspin4_gpu::transfer_cpu_to_gpu_() @@ -39,9 +37,9 @@ void Gint_vl_metagga_nspin4_gpu::transfer_cpu_to_gpu_() hr_gint_part_d_[i] = CudaMemWrapper(hr_gint_part_[i].get_nnr(), 0, false); vr_eff_d_[i] = CudaMemWrapper(gint_info_->get_local_mgrid_num(), 0, false); vofk_d_[i] = CudaMemWrapper(gint_info_->get_local_mgrid_num(), 0, false); - checkCuda(cudaMemcpy(vr_eff_d_[i].get_device_ptr(), vr_eff_[i], + CHECK_CUDA(cudaMemcpy(vr_eff_d_[i].get_device_ptr(), vr_eff_[i], gint_info_->get_local_mgrid_num() * sizeof(double), cudaMemcpyHostToDevice)); - checkCuda(cudaMemcpy(vofk_d_[i].get_device_ptr(), vofk_[i], + CHECK_CUDA(cudaMemcpy(vofk_d_[i].get_device_ptr(), vofk_[i], gint_info_->get_local_mgrid_num() * sizeof(double), cudaMemcpyHostToDevice)); } } @@ -50,7 +48,7 @@ void Gint_vl_metagga_nspin4_gpu::transfer_gpu_to_cpu_() { for(int i = 0; i < nspin_; i++) { - checkCuda(cudaMemcpy(hr_gint_part_[i].get_wrapper(), hr_gint_part_d_[i].get_device_ptr(), + CHECK_CUDA(cudaMemcpy(hr_gint_part_[i].get_wrapper(), hr_gint_part_d_[i].get_device_ptr(), hr_gint_part_[i].get_nnr() * sizeof(double), cudaMemcpyDeviceToHost)); } } @@ -62,9 +60,9 @@ void Gint_vl_metagga_nspin4_gpu::cal_hr_gint_() { // 20240620 Note that it must be set again here because // cuda's device is not safe in a multi-threaded environment. - checkCuda(cudaSetDevice(gint_info_->get_dev_id())); + CHECK_CUDA(cudaSetDevice(gint_info_->get_dev_id())); cudaStream_t stream; - checkCuda(cudaStreamCreate(&stream)); + CHECK_CUDA(cudaStreamCreate(&stream)); PhiOperatorGpu phi_op(gint_info_->get_gpu_vars(), stream); CudaMemWrapper phi(BatchBigGrid::get_max_phi_len(), stream, false); CudaMemWrapper phi_vldr3(BatchBigGrid::get_max_phi_len(), stream, false); @@ -75,8 +73,9 @@ void Gint_vl_metagga_nspin4_gpu::cal_hr_gint_() CudaMemWrapper dphi_y_vldr3(BatchBigGrid::get_max_phi_len(), stream, false); CudaMemWrapper dphi_z_vldr3(BatchBigGrid::get_max_phi_len(), stream, false); #pragma omp for schedule(dynamic) - for(const auto& bgrid_batch: gint_info_->get_bgrid_batches()) + for (int i = 0; i < gint_info_->get_bgrid_batches_num(); ++i) { + const auto& bgrid_batch = gint_info_->get_bgrid_batches()[i]; if(bgrid_batch->empty()) { continue; @@ -104,8 +103,8 @@ void Gint_vl_metagga_nspin4_gpu::cal_hr_gint_() hr_gint_part_[is], hr_gint_part_d_[is].get_device_ptr()); } } - checkCuda(cudaStreamSynchronize(stream)); - checkCuda(cudaStreamDestroy(stream)); + CHECK_CUDA(cudaStreamSynchronize(stream)); + CHECK_CUDA(cudaStreamDestroy(stream)); } transfer_gpu_to_cpu_(); } diff --git a/source/source_lcao/module_gint/temp_gint/gint_vl_metagga_nspin4_gpu.h b/source/source_lcao/module_gint/gint_vl_metagga_nspin4_gpu.h similarity index 89% rename from source/source_lcao/module_gint/temp_gint/gint_vl_metagga_nspin4_gpu.h rename to source/source_lcao/module_gint/gint_vl_metagga_nspin4_gpu.h index fd967a63ec..9c1b8ca166 100644 --- a/source/source_lcao/module_gint/temp_gint/gint_vl_metagga_nspin4_gpu.h +++ b/source/source_lcao/module_gint/gint_vl_metagga_nspin4_gpu.h @@ -5,7 +5,7 @@ #include "source_lcao/module_hcontainer/hcontainer.h" #include "gint.h" #include "gint_info.h" -#include "source_lcao/module_gint/temp_gint/kernel/cuda_mem_wrapper.h" +#include "source_lcao/module_gint/kernel/cuda_mem_wrapper.h" namespace ModuleGint { @@ -42,7 +42,6 @@ class Gint_vl_metagga_nspin4_gpu : public Gint const int nspin_ = 4; std::vector> hr_gint_part_; - HContainer> hr_gint_full_; std::vector> vr_eff_d_; std::vector> vofk_d_; diff --git a/source/source_lcao/module_gint/temp_gint/gint_vl_nspin4.cpp b/source/source_lcao/module_gint/gint_vl_nspin4.cpp similarity index 85% rename from source/source_lcao/module_gint/temp_gint/gint_vl_nspin4.cpp rename to source/source_lcao/module_gint/gint_vl_nspin4.cpp index 56aca5edeb..576200397a 100644 --- a/source/source_lcao/module_gint/temp_gint/gint_vl_nspin4.cpp +++ b/source/source_lcao/module_gint/gint_vl_nspin4.cpp @@ -13,8 +13,7 @@ void Gint_vl_nspin4::cal_gint() ModuleBase::timer::tick("Gint", "cal_gint_vl"); init_hr_gint_(); cal_hr_gint_(); - compose_hr_gint(hr_gint_part_, hr_gint_full_); - transfer_hr_gint_to_hR(hr_gint_full_, *hR_); + merge_hr_part_to_hR(hr_gint_part_, hR_, *gint_info_); ModuleBase::timer::tick("Gint", "cal_gint_vl"); } @@ -25,8 +24,6 @@ void Gint_vl_nspin4::init_hr_gint_() { hr_gint_part_[i] = gint_info_->get_hr(); } - const int npol = 2; - hr_gint_full_ = gint_info_->get_hr>(npol); } void Gint_vl_nspin4::cal_hr_gint_() @@ -37,8 +34,9 @@ void Gint_vl_nspin4::cal_hr_gint_() std::vector phi; std::vector phi_vldr3; #pragma omp for schedule(dynamic) - for(const auto& biggrid: gint_info_->get_biggrids()) + for (int i = 0; i < gint_info_->get_bgrids_num(); i++) { + const auto& biggrid = gint_info_->get_biggrids()[i]; if(biggrid->get_atoms().size() == 0) { continue; diff --git a/source/source_lcao/module_gint/temp_gint/gint_vl_nspin4.h b/source/source_lcao/module_gint/gint_vl_nspin4.h similarity index 94% rename from source/source_lcao/module_gint/temp_gint/gint_vl_nspin4.h rename to source/source_lcao/module_gint/gint_vl_nspin4.h index eed9827242..97aa47ca58 100644 --- a/source/source_lcao/module_gint/temp_gint/gint_vl_nspin4.h +++ b/source/source_lcao/module_gint/gint_vl_nspin4.h @@ -39,7 +39,6 @@ class Gint_vl_nspin4 : public Gint const int nspin_ = 4; std::vector> hr_gint_part_; - HContainer> hr_gint_full_; }; } // namespace ModuleGint \ No newline at end of file diff --git a/source/source_lcao/module_gint/temp_gint/gint_vl_nspin4_gpu.cpp b/source/source_lcao/module_gint/gint_vl_nspin4_gpu.cpp similarity index 79% rename from source/source_lcao/module_gint/temp_gint/gint_vl_nspin4_gpu.cpp rename to source/source_lcao/module_gint/gint_vl_nspin4_gpu.cpp index c070258db5..6e4bd2b8c9 100644 --- a/source/source_lcao/module_gint/temp_gint/gint_vl_nspin4_gpu.cpp +++ b/source/source_lcao/module_gint/gint_vl_nspin4_gpu.cpp @@ -3,6 +3,7 @@ #include "gint_helper.h" #include "batch_biggrid.h" #include "kernel/phi_operator_gpu.h" +#include "source_base/module_device/device_check.h" namespace ModuleGint { @@ -13,8 +14,7 @@ void Gint_vl_nspin4_gpu::cal_gint() ModuleBase::timer::tick("Gint", "cal_gint_vl"); init_hr_gint_(); cal_hr_gint_(); - compose_hr_gint(hr_gint_part_, hr_gint_full_); - transfer_hr_gint_to_hR(hr_gint_full_, *hR_); + merge_hr_part_to_hR(hr_gint_part_, hR_, *gint_info_); ModuleBase::timer::tick("Gint", "cal_gint_vl"); } @@ -25,8 +25,6 @@ void Gint_vl_nspin4_gpu::init_hr_gint_() { hr_gint_part_[i] = gint_info_->get_hr(); } - const int npol = 2; - hr_gint_full_ = gint_info_->get_hr>(npol); } void Gint_vl_nspin4_gpu::transfer_cpu_to_gpu_() @@ -37,7 +35,7 @@ void Gint_vl_nspin4_gpu::transfer_cpu_to_gpu_() { hr_gint_part_d_[i] = CudaMemWrapper(hr_gint_part_[i].get_nnr(), 0, false); vr_eff_d_[i] = CudaMemWrapper(gint_info_->get_local_mgrid_num(), 0, false); - checkCuda(cudaMemcpy(vr_eff_d_[i].get_device_ptr(), vr_eff_[i], + CHECK_CUDA(cudaMemcpy(vr_eff_d_[i].get_device_ptr(), vr_eff_[i], gint_info_->get_local_mgrid_num() * sizeof(double), cudaMemcpyHostToDevice)); } } @@ -46,7 +44,7 @@ void Gint_vl_nspin4_gpu::transfer_gpu_to_cpu_() { for(int i = 0; i < nspin_; i++) { - checkCuda(cudaMemcpy(hr_gint_part_[i].get_wrapper(), hr_gint_part_d_[i].get_device_ptr(), + CHECK_CUDA(cudaMemcpy(hr_gint_part_[i].get_wrapper(), hr_gint_part_d_[i].get_device_ptr(), hr_gint_part_[i].get_nnr() * sizeof(double), cudaMemcpyDeviceToHost)); } } @@ -59,15 +57,16 @@ void Gint_vl_nspin4_gpu::cal_hr_gint_() { // 20240620 Note that it must be set again here because // cuda's device is not safe in a multi-threaded environment. - checkCuda(cudaSetDevice(gint_info_->get_dev_id())); + CHECK_CUDA(cudaSetDevice(gint_info_->get_dev_id())); cudaStream_t stream; - checkCuda(cudaStreamCreate(&stream)); + CHECK_CUDA(cudaStreamCreate(&stream)); PhiOperatorGpu phi_op(gint_info_->get_gpu_vars(), stream); CudaMemWrapper phi(BatchBigGrid::get_max_phi_len(), stream, false); CudaMemWrapper phi_vldr3(BatchBigGrid::get_max_phi_len(), stream, false); #pragma omp for schedule(dynamic) - for(const auto& bgrid_batch: gint_info_->get_bgrid_batches()) + for (int i = 0; i < gint_info_->get_bgrid_batches_num(); ++i) { + const auto& bgrid_batch = gint_info_->get_bgrid_batches()[i]; if(bgrid_batch->empty()) { continue; @@ -82,8 +81,8 @@ void Gint_vl_nspin4_gpu::cal_hr_gint_() hr_gint_part_[is], hr_gint_part_d_[is].get_device_ptr()); } } - checkCuda(cudaStreamSynchronize(stream)); - checkCuda(cudaStreamDestroy(stream)); + CHECK_CUDA(cudaStreamSynchronize(stream)); + CHECK_CUDA(cudaStreamDestroy(stream)); } transfer_gpu_to_cpu_(); } diff --git a/source/source_lcao/module_gint/temp_gint/gint_vl_nspin4_gpu.h b/source/source_lcao/module_gint/gint_vl_nspin4_gpu.h similarity index 90% rename from source/source_lcao/module_gint/temp_gint/gint_vl_nspin4_gpu.h rename to source/source_lcao/module_gint/gint_vl_nspin4_gpu.h index 81215b33ac..2e1aa1a475 100644 --- a/source/source_lcao/module_gint/temp_gint/gint_vl_nspin4_gpu.h +++ b/source/source_lcao/module_gint/gint_vl_nspin4_gpu.h @@ -5,7 +5,7 @@ #include "source_lcao/module_hcontainer/hcontainer.h" #include "gint.h" #include "gint_info.h" -#include "source_lcao/module_gint/temp_gint/kernel/cuda_mem_wrapper.h" +#include "source_lcao/module_gint/kernel/cuda_mem_wrapper.h" namespace ModuleGint { @@ -44,7 +44,6 @@ class Gint_vl_nspin4_gpu : public Gint const int nspin_ = 4; std::vector> hr_gint_part_; - HContainer> hr_gint_full_; std::vector> vr_eff_d_; std::vector> hr_gint_part_d_; diff --git a/source/source_lcao/module_gint/gint_vl_old.cpp b/source/source_lcao/module_gint/gint_vl_old.cpp deleted file mode 100644 index 9ebc341d7f..0000000000 --- a/source/source_lcao/module_gint/gint_vl_old.cpp +++ /dev/null @@ -1,94 +0,0 @@ -#include "source_base/global_function.h" -#include "source_base/global_variable.h" -#include "gint_k.h" -#include "source_basis/module_ao/ORB_read.h" -#include "grid_technique.h" -#include "source_base/ylm.h" -#include "source_pw/module_pwdft/global.h" -#include "source_base/timer.h" -#include "source_base/array_pool.h" -#include "source_base/vector3.h" -//#include - -#ifdef _OPENMP -#include -#endif - -#ifdef __MKL -#include -#endif - -// this is a thread-safe function -void Gint::cal_meshball_vlocal( - const int na_grid, // how many atoms on this (i,j,k) grid - const int LD_pool, - const int*const block_size, // block_size[na_grid], number of columns of a band - const int*const block_index, // block_index[na_grid+1], count total number of atomis orbitals - const int grid_index, // index of grid group, for tracing global atom index - const bool*const*const cal_flag, // cal_flag[this->bxyz][na_grid], whether the atom-grid distance is larger than cutoff - const double*const*const psir_ylm, // psir_ylm[this->bxyz][LD_pool] - const double*const*const psir_vlbr3, // psir_vlbr3[this->bxyz][LD_pool] - hamilt::HContainer* hR) // this->hRGint is the container of matrix element. -{ - const char transa='N', transb='T'; - const double alpha=1, beta=1; - const int lgd_now = this->gridt->lgd; - - const int mcell_index = this->gridt->bcell_start[grid_index]; - std::vector hr_tmp; - for(int ia1=0; ia1gridt->which_atom[bcell1]; - const int id1 = this->gridt->which_unitcell[bcell1]; - const ModuleBase::Vector3 r1 = this->gridt->get_ucell_coords(id1); - - for(int ia2=0; ia2gridt->which_atom[bcell2]; - const int id2 = this->gridt->which_unitcell[bcell2]; - const ModuleBase::Vector3 r2 = this->gridt->get_ucell_coords(id2); - - if(iat1<=iat2) - { - int first_ib=0; - for(int ib=0; ibbxyz; ++ib) - { - if(cal_flag[ib][ia1] && cal_flag[ib][ia2]) - { - first_ib=ib; - break; - } - } - int last_ib=0; - for(int ib=this->bxyz-1; ib>=0; --ib) - { - if(cal_flag[ib][ia1] && cal_flag[ib][ia2]) - { - last_ib=ib+1; - break; - } - } - const int ib_length = last_ib-first_ib; - if(ib_length<=0) { continue; } - - const auto tmp_matrix = hR->find_matrix(iat1, iat2, r1-r2); - if (tmp_matrix == nullptr) - { - continue; - } - const int m = tmp_matrix->get_row_size(); - const int n = tmp_matrix->get_col_size(); - hr_tmp.resize(m * n); - ModuleBase::GlobalFunc::ZEROS(hr_tmp.data(), m*n); - - dgemm_(&transa, &transb, &n, &m, &ib_length, &alpha, - &psir_vlbr3[first_ib][block_index[ia2]], &LD_pool, - &psir_ylm[first_ib][block_index[ia1]], &LD_pool, - &beta, hr_tmp.data(), &n); - tmp_matrix->add_array_ts(hr_tmp.data()); - } - } - } -} \ No newline at end of file diff --git a/source/source_lcao/module_gint/grid_bigcell.cpp b/source/source_lcao/module_gint/grid_bigcell.cpp deleted file mode 100644 index ec5b29970c..0000000000 --- a/source/source_lcao/module_gint/grid_bigcell.cpp +++ /dev/null @@ -1,363 +0,0 @@ -#include "grid_bigcell.h" - -#include "source_io/module_parameter/parameter.h" -#include "source_base/memory.h" -#include "source_base/timer.h" -#include "source_basis/module_ao/ORB_read.h" -#include "source_pw/module_pwdft/global.h" -#include "source_cell/unitcell.h" -Grid_BigCell::Grid_BigCell() -{ - this->orbital_rmax = 0.0; - this->nxe = this->nye = this->nze = 0; - this->dxe = 0; - this->dye = 0; - this->dze = 0; - this->nxe = 0; - this->nye = 0; - this->nze = 0; - this->nxyze = 0; -} - -Grid_BigCell::~Grid_BigCell() -{ -} - -void Grid_BigCell::init_big_latvec(const UnitCell& ucell) -{ - ModuleBase::TITLE("Grid_BigCell","init_big_latvec"); - // initialize the mesh cell vectors. - assert(nbx>0); - assert(nby>0); - assert(nbz>=0); - - this->nat=ucell.nat; - //size of each big room (same shape with unitcell) - this->bigcell_vec1=std::vector(3,0.0); - this->bigcell_vec1[0]=ucell.a1.x / (double)nbx * ucell.lat0; - this->bigcell_vec1[1]=ucell.a1.y / (double)nbx * ucell.lat0; - this->bigcell_vec1[2]=ucell.a1.z / (double)nbx * ucell.lat0; - - this->bigcell_vec2=std::vector(3,0.0); - this->bigcell_vec2[0]=ucell.a2.x / (double)nby * ucell.lat0; - this->bigcell_vec2[1]=ucell.a2.y / (double)nby * ucell.lat0; - this->bigcell_vec2[2]=ucell.a2.z / (double)nby * ucell.lat0; - - this->bigcell_vec3=std::vector(3,0.0); - this->bigcell_vec3[0]=ucell.a3.x / (double)nbz * ucell.lat0; - this->bigcell_vec3[1]=ucell.a3.y / (double)nbz * ucell.lat0; - this->bigcell_vec3[2]=ucell.a3.z / (double)nbz * ucell.lat0; - - this->bigcell_latvec0.e11 = this->bigcell_vec1[0]; - this->bigcell_latvec0.e12 = this->bigcell_vec1[1]; - this->bigcell_latvec0.e13 = this->bigcell_vec1[2]; - - this->bigcell_latvec0.e21 = this->bigcell_vec2[0]; - this->bigcell_latvec0.e22 = this->bigcell_vec2[1]; - this->bigcell_latvec0.e23 = this->bigcell_vec2[2]; - - this->bigcell_latvec0.e31 = this->bigcell_vec3[0]; - this->bigcell_latvec0.e32 = this->bigcell_vec3[1]; - this->bigcell_latvec0.e33 = this->bigcell_vec3[2]; - - // why we need GT = bigcell_latvec0^(-1)? - // note that (i,j,k) is a grid point. - // (x,y,z) is the cartesian coordinates. - // because - // (x,y,z) = (i,j,k) * bigcell_latvec0 - // once we know (x,y,z) and bigcell_latvec0 - // we need to transform the formula to - // (x,y,z) * bigcell_latvec0^(-1) = (i,j,k) - this->bigcell_GT = this->bigcell_latvec0.Inverse(); - - if(PARAM.inp.test_gridt) - { - GlobalV::ofs_running << " the VECTORS of BIGCELL are (Bohr): " << std::endl; - GlobalV::ofs_running << " vec1( " - << std::setw(15) << bigcell_vec1[0] - << std::setw(15) << bigcell_vec1[1] - << std::setw(15) << bigcell_vec1[2] - << ")" << std::endl; - - GlobalV::ofs_running << " vec2( " - << std::setw(15) << bigcell_vec2[0] - << std::setw(15) << bigcell_vec2[1] - << std::setw(15) << bigcell_vec2[2] - << ")" << std::endl; - - GlobalV::ofs_running << " vec3( " - << std::setw(15) << bigcell_vec3[0] - << std::setw(15) << bigcell_vec3[1] - << std::setw(15) << bigcell_vec3[2] - << ")" << std::endl; - } - return; -} - - -void Grid_BigCell::init_grid_expansion(const UnitCell& ucell,double* rcut) -{ - ModuleBase::TITLE("Grid_BigCell","init_grid_expansion"); - - // calculate the max cutoff radius among all orbitals. - // then we will use this parameter to generate grid expansion. - - for(int T=0; Torbital_rmax = std::max( rcut[T], this->orbital_rmax); - } - if(PARAM.inp.test_gridt)ModuleBase::GlobalFunc::OUT(GlobalV::ofs_running,"rmax of periodic grid (bohr)",orbital_rmax); - - // mohan fixed serious bug 2010-03-06 - // G = GT^T - // g1 = the norm of first std::vector of G - // g2 = the norm of second std::vector of G - // g3 = the norm of third std::vector of G - double g1 = sqrt(bigcell_GT.e11 * bigcell_GT.e11 - + bigcell_GT.e21 * bigcell_GT.e21 - + bigcell_GT.e31 * bigcell_GT.e31); - - double g2 = sqrt(bigcell_GT.e12 * bigcell_GT.e12 - + bigcell_GT.e22 * bigcell_GT.e22 - + bigcell_GT.e32 * bigcell_GT.e32); - - double g3 = sqrt(bigcell_GT.e13 * bigcell_GT.e13 - + bigcell_GT.e23 * bigcell_GT.e23 - + bigcell_GT.e33 * bigcell_GT.e33); - - // we assume the added bigcell can present even the atom - // is at the edge of the origin grid. - // mohan add +1, 2011-04-23 - this->dxe = static_cast( this->orbital_rmax * g1) +1; - this->dye = static_cast( this->orbital_rmax * g2) +1; - this->dze = static_cast( this->orbital_rmax * g3) +1; - //xiaohui add 'PARAM.inp.out_level' line, 2015-09-16 - if(PARAM.inp.out_level != "m") ModuleBase::GlobalFunc::OUT(GlobalV::ofs_running,"extended fft grid",dxe,dye,dze); - - // calculate the dimension of expanded grid. - // +1 in order to cover the spillage atom on the right side. - assert(nbx>0); - assert(nby>0); - assert(nbz>=0); - - this->nxe = nbx + 2*dxe +1; - this->nye = nby + 2*dye +1; - this->nze = nbz + 2*dze +1; - this->nxyze = this->nxe * this->nye * this->nze; - - if(PARAM.inp.out_level != "m") ModuleBase::GlobalFunc::OUT(GlobalV::ofs_running,"dimension of extened grid",nxe,nye,nze); - return; -} - - -void Grid_BigCell::init_tau_in_bigcell(const UnitCell& ucell) -{ - ModuleBase::TITLE("Grid_BigCell","init_tau_in_bigcell"); - - // allcoate space for atom positions relative - // to meshcell. - this->tau_in_bigcell = std::vector>(ucell.nat,std::vector(3,0.0)); - ModuleBase::Memory::record("tau_in_bigcell", sizeof(double) * ucell.nat*3); - // allocate space, these arrays record which meshcell - // the atom is in. - this->index_atom = std::vector(ucell.nat, 0); - ModuleBase::Memory::record("index_atom", sizeof(double) * ucell.nat); - - // get the fraction number of (i,j,k) - ModuleBase::Vector3 fraction; - int iat=0; - int ii,jj,kk; - double delta[3]; - for(int it=0; itbigcell_GT; - - //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - // mohan add 2012-07-03, - // this can make sure faction are always larger than 0. - //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - fraction.x = ucell.atoms[it].taud[ia].x / (1.0/(double)nbx); - fraction.y = ucell.atoms[it].taud[ia].y / (1.0/(double)nby); - fraction.z = ucell.atoms[it].taud[ia].z / (1.0/(double)nbz); - - // never use the following, especially for k-algorithm, - // it may move the atom to a cell that it doesn't belong - // to - //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - // mohan add 2012-06-07 - // fraction may be very very small, about -1.0e-15, - // and the fraction must > 0, so I use periodic boundary condition -// if( fraction.x < 0.0 ) fraction.x += nxe; -// if( fraction.y < 0.0 ) fraction.y += nye; -// if( fraction.z < 0.0 ) fraction.z += nze; - - - - if( fraction.x < 0 || fraction.y < 0 || fraction.z < 0) - { - std::cout << " Atom positions " << std::endl; - std::cout << ucell.atoms[it].tau[ia].x << " " ; - std::cout << ucell.atoms[it].tau[ia].y << " " ; - std::cout << ucell.atoms[it].tau[ia].z << " " ; - std::cout << " fraction " << std::endl; - std::cout << fraction.x << " "; - std::cout << fraction.y << " "; - std::cout << fraction.z << " "; - std::cout << std::endl; - ModuleBase::WARNING_QUIT("Grid_BigCell::init_tau_in_bigcell","fraction.x<0 || fraction.y<0 || fraction.z<0"); - } - - assert(fraction.x >= 0.0); - assert(fraction.y >= 0.0); - assert(fraction.z >= 0.0); - - // make clean which meshcell the atom is in. - ii = static_cast(fraction.x+1.0e-8); - jj = static_cast(fraction.y+1.0e-8); - kk = static_cast(fraction.z+1.0e-8); - - // calculate the index of each corresponding meshcell. - // Notice ! In fact, we need to minus ii,jj,kk by 1. - // to label the atom belong to which meshcell - // in a usual way: left, down corner. - // if we dont' do this, means the start position - // of atom is another tyep: right,up corner. - // which cause minus atom position in grid integration. - - // index_atom: atom 'iat' index in extended grid. - this->index_atom[iat] = (kk+dze) + (jj+dye) * this->nze + (ii+dxe) * this->nye * this->nze; - - /* - if(index_atom[iat]==3483935) - { - std::cout << "\n i=" << kk+dze << " j=" << jj+dye << " k=" << ii+dxe; - BLOCK_HERE("check index atom"); - } - */ - - // get the relative position in direct coordinate. - delta[0] = fraction.x - (double)ii; - delta[1] = fraction.y - (double)jj; - delta[2] = fraction.z - (double)kk; - - if( std::abs(delta[0]) < 1.0e-8) delta[0] = 0.0; - if( std::abs(delta[1]) < 1.0e-8) delta[1] = 0.0; - if( std::abs(delta[2]) < 1.0e-8) delta[2] = 0.0; - -// std::cout << " fraction=" << fraction.x << " " << fraction.y << " " << fraction.z << std::endl; -// std::cout << " delta=" << delta[0] << " " << delta[1] << " " << delta[2] << std::endl; - - // get the true relative cartesian coordinate of each atom to the coresponding - // meshcell. - for(int ic=0; ic<3; ic++) - { - this->tau_in_bigcell[iat][ic] = - delta[0] * this->bigcell_vec1[ic] + - delta[1] * this->bigcell_vec2[ic] + - delta[2] * this->bigcell_vec3[ic]; - } - - ++iat; - } - } - - return; -} - -// (3) -// if f2normal == true, calculate the index2normal. -// if f2normal == false, calculate the index2cell. -void Grid_BigCell::grid_expansion_index(bool f2normal, int *target)const -{ - ModuleBase::TITLE("Grid_BigCell","grid_expansion_index"); - ModuleBase::timer::tick("Grid_BigCell","grid_expansion_index"); - - int ii,jj,kk,in_ext,in_normal; - for(int i=0; inxe; i++) - { - for(int j=0; jnye; j++) - { - for(int k=0; knze; k++) - { - in_ext = k + j * this->nze + i * this->nye * this->nze; - - // range from [-dxe,ncx+dxe] - ii = i - this->dxe; - jj = j - this->dye; - kk = k - this->dze; - - //--------------------------------------------------- - // mohan add 2010-10-28 - // be careful of the box. - // it's useful only when k points are used in LCAO. - // for example, we construct a 2D supercell - // and using 32 * 32 FFT grid (bigcell ) to do - // grid integration, - // then the first cell (0,0) along x is [0,31) - // others are: - // cell index: (-2,0) , (-1,0) , (0,0), (0,1) - // fft index: [-64,-33], [-32,-1], [0,31], [32,63]. - // look at the formulas below, - // at first, we take grid_index2ucell1=(ii/nbx) - // but then we found it is wrong if ii < 0. - // for example, if ii is -31, the box is -1, - // so we add -1, the formula turns to ii/nbx-1, - // but if ii is -32, the box is -1-1 = -2, not correct. - // so we add 1 to ii, the box will be -31/32-1=-1, correct! - // the formula is (ii+1)/nbx-1, - // if ii is -1, the box is still -1, correct! - // if ii is -33, the box is -2, correct! - //--------------------------------------------------- - - int cel1, cel2, cel3; - - if(ii<0) cel1 = (ii+1) / nbx - 1; - else cel1 = ii / nbx; - if(jj<0) cel2 = (jj+1) / nby - 1; - else cel2 = jj / nby; - if(kk<0) cel3 = (kk+1) / nbz - 1; - else cel3 = kk / nbz; - - if(!f2normal) - { - // target: index2ucell - target[in_ext] = this->cal_Rindex(cel1, cel2, cel3); - } - else - { - // if ii < 0, we need to make ii > 0. - // so we add 10000 layers. It should be enough. - // ii, jj, kk shoudl -- ????????????? - ii = (ii + 10000 * nbx) % nbx; - jj = (jj + 10000 * nby) % nby; - kk = (kk + 10000 * nbz) % nbz; - - assert(ii>=0); - assert(jj>=0); - assert(kk>=0); - - assert( in_ext < nxyze); - - if(ii> tau_in_bigcell; - - /// move operator for the next ESolver to directly use its infomation - Grid_BigCell& operator=(Grid_BigCell&& rhs) = default; - - protected: - // get the max radius of all orbitals - // which will use to generate grid expansion, - // and the meshball. - double orbital_rmax; - - // the added number of bigcelli each direction. - int dxe; - int dye; - int dze; - - // expansion grid dimension. - int nxe; - int nye; - int nze; - int nxyze; - - std::vector index_atom; - - // save the position of base vector of bigcell. - std::vector bigcell_vec1; - std::vector bigcell_vec2; - std::vector bigcell_vec3; - - ModuleBase::Matrix3 bigcell_latvec0; - ModuleBase::Matrix3 bigcell_GT; - - //--------------------------------- - void grid_expansion_index(bool f2normal, int *target)const; - //--------------------------------- - void init_big_latvec(const UnitCell &ucell); - //--------------------------------- - void init_tau_in_bigcell(const UnitCell& ucell); - //--------------------------------- - void init_grid_expansion(const UnitCell& ucell,double* rcut); -}; -#endif diff --git a/source/source_lcao/module_gint/grid_meshball.cpp b/source/source_lcao/module_gint/grid_meshball.cpp deleted file mode 100644 index 464ea8d962..0000000000 --- a/source/source_lcao/module_gint/grid_meshball.cpp +++ /dev/null @@ -1,142 +0,0 @@ -#include "grid_meshball.h" -#include "source_base/memory.h" -#include "source_io/module_parameter/parameter.h" - -Grid_MeshBall::Grid_MeshBall() -{ -} - -Grid_MeshBall::~Grid_MeshBall() -{ -} - -void Grid_MeshBall::init_meshball() -{ - ModuleBase::TITLE("Grid_MeshBall","init_meshball"); - - // init meshball_radius, generally the value - // is same as orbital_rmax, of course you can - // incrase meshball_radius, but there will be - // no atoms in the added bigcells. - // (in case subcell are too many). - this->meshball_radius = this->orbital_rmax; - - // select a ball in a cubic. - double pos[3]; - double r2=0.0; - - //------------------------------------------------------------------ - // const double rcut2 = this->meshball_radius * this->meshball_radius; - // qianrui fix a bug and add 0.001 2022-4-30 - // Sometimes r2 is equal to rcut2, for example they are 36. - // However, r2 is either 35.99.. or 36.0..001, which makes count != this->meshball_ncells - // and segment fault. - // I do not know how to solve it and this may occurs in somewhere else in ABACUS. - // May some genius can give a better solution. - //------------------------------------------------------------------ - const double rcut2 = this->meshball_radius * this->meshball_radius + 0.001; - - //------------------------------------------------------------------- - // calculate twice, the first time find the number of mesh points, - // then allocate array and save each bigcell's cartesian coordinate. - // plus one because we need to cover atom spillage. - // meshball_ncells: How many cells in mesh ball. - //------------------------------------------------------------------- - this->meshball_ncells = 0; - for(int i=-dxe; ideal_with_atom_spillage( pos ); - //r2 = pos[0]*pos[0]+pos[1]*pos[1]+pos[2]*pos[2]; - - // calculate the distance. - if( r2 < rcut2 ) - { - ++meshball_ncells; - } - } - } - } - if(PARAM.inp.test_gridt) {ModuleBase::GlobalFunc::OUT(GlobalV::ofs_running, "how many cells in meshball",this->meshball_ncells); -} - - // prepare for the second calculation. - this->meshball_positions = std::vector>(meshball_ncells, std::vector(3, 0.0)); - ModuleBase::Memory::record("meshball_pos", sizeof(double) * meshball_ncells*3); - this->index_ball = std::vector(meshball_ncells); - ModuleBase::Memory::record("index_ball", sizeof(int) * meshball_ncells); - - // second time. - int count = 0; - for(int i=-dxe; idxe+1; i++) - { - for(int j=-dye; jdye+1; j++) - { - for(int k=-dze; kdze+1; k++) - { - // caclculate the std::vector away from 'zero point'. - // change to cartesian coordinates. - for(int ip=0; ip<3; ip++) - { - pos[ip] = i*bigcell_vec1[ip]+j*bigcell_vec2[ip]+k*bigcell_vec3[ip]; - } - r2 = this->deal_with_atom_spillage( pos ); - - // calculate the distance. - if( r2 < rcut2 ) - { - for(int ip=0; ip<3; ip++) - { - this->meshball_positions[count][ip] = pos[ip]; - } - - // record each position. - this->index_ball[count] = k + j * this->nze + i * this->nye * this->nze; - ++count; - } - } - } - } - - assert(count == this->meshball_ncells); - return; -} - -double Grid_MeshBall::deal_with_atom_spillage(const double *pos) -{ - double dx; - double r2 = 100000; - double *cell=new double[3]; - - for(int i=-1; i<=1; i++) - { - for(int j=-1; j<=1; j++) - { - for(int k=-1; k<=1; k++) - { - dx = 0.0; - for(int ip=0; ip<3; ip++) - { - // change to cartesian coordinates. - cell[ip] = i*this->bigcell_vec1[ip] + - j*this->bigcell_vec2[ip] + - k*this->bigcell_vec3[ip]; - dx += (cell[ip] - pos[ip]) * (cell[ip] - pos[ip]); - } - r2 = std::min(dx, r2); - } - } - } - delete[] cell; - return r2; -} - - diff --git a/source/source_lcao/module_gint/grid_meshball.h b/source/source_lcao/module_gint/grid_meshball.h deleted file mode 100644 index 571d59126e..0000000000 --- a/source/source_lcao/module_gint/grid_meshball.h +++ /dev/null @@ -1,32 +0,0 @@ -#ifndef GRID_MESHBALL_H -#define GRID_MESHBALL_H - -#include "grid_bigcell.h" - -class Grid_MeshBall : public Grid_BigCell -{ - public: - Grid_MeshBall(); - ~Grid_MeshBall(); - // cartesian coordinates of meshball. - std::vector> meshball_positions; - - /// move operator for the next ESolver to directly use its infomation - Grid_MeshBall& operator=(Grid_MeshBall&& rhs) = default; - - protected: - // number of meshcells in meshball. - int meshball_ncells=0; - // used in index2normal - std::vector index_ball; - // search each meshcell of this meshball. - void init_meshball(void); - - private: - // init the meshball radius. - double meshball_radius=0.0; - // Handle as a truncation function. - double deal_with_atom_spillage(const double* pos); - -}; -#endif diff --git a/source/source_lcao/module_gint/grid_meshcell.cpp b/source/source_lcao/module_gint/grid_meshcell.cpp deleted file mode 100644 index 77e933c55d..0000000000 --- a/source/source_lcao/module_gint/grid_meshcell.cpp +++ /dev/null @@ -1,168 +0,0 @@ -#include "grid_meshcell.h" - -#include "source_io/module_parameter/parameter.h" -#include "source_base/memory.h" -#include "source_pw/module_pwdft/global.h" - -Grid_MeshCell::Grid_MeshCell() -{ -} - -Grid_MeshCell::~Grid_MeshCell() -{ -} - -void Grid_MeshCell::set_grid_dim( - const int &ncx_in, - const int &ncy_in, - const int &ncz_in, - const int &bx_in, - const int &by_in, - const int &bz_in, - const int &nbx_in, - const int &nby_in, - const int &nbz_in, - const int &nbxx_in, - const int &nbzp_start_in, - const int &nbzp_in - ) -{ - this->ncx = ncx_in; - this->ncy = ncy_in; - this->ncz = ncz_in; - this->ncxyz = ncx * ncy * ncz; - this->bx = bx_in; - this->by = by_in; - this->bz = bz_in; - this->bxyz = bx*by*bz; - this->nbx = nbx_in; - this->nby = nby_in; - this->nbz = nbz_in; - this->nbxyz = nbx*nby*nbz; - this->nbxx = nbxx_in; - this->nbzp_start = nbzp_start_in; - this->nbzp = nbzp_in; - - - //xiaohui add 'PARAM.inp.out_level' line, 2015-09-16 - if(PARAM.inp.out_level != "m") - { - ModuleBase::GlobalFunc::OUT(GlobalV::ofs_running,"real space grid",ncx,ncy,ncz); // real space uniform grid - } - - if(PARAM.inp.out_level != "m") - { - ModuleBase::GlobalFunc::OUT(GlobalV::ofs_running,"big cell numbers in grid",nbx,nby,nbz); // reduced by BIG_CELL - } - - if(PARAM.inp.out_level != "m") - { - ModuleBase::GlobalFunc::OUT(GlobalV::ofs_running,"meshcell numbers in big cell",bx,by,bz); // is small integer, typical number 2*2*2 - } - - return; -} - - - -// (1) -void Grid_MeshCell::init_latvec(const UnitCell &ucell) -{ - ModuleBase::TITLE("Grid_MeshCell","init_latvec"); - // initialize the mesh cell vectors. - assert(ncx>0); - assert(ncy>0); - assert(ncz>0); - - //size of each room (same shape with unitcell) - this->meshcell_vec1=std::vector(3,0.0); - this->meshcell_vec1[0]=ucell.a1.x / (double)ncx * ucell.lat0; - this->meshcell_vec1[1]=ucell.a1.y / (double)ncx * ucell.lat0; - this->meshcell_vec1[2]=ucell.a1.z / (double)ncx * ucell.lat0; - - this->meshcell_vec2=std::vector(3,0.0); - this->meshcell_vec2[0]=ucell.a2.x / (double)ncy * ucell.lat0; - this->meshcell_vec2[1]=ucell.a2.y / (double)ncy * ucell.lat0; - this->meshcell_vec2[2]=ucell.a2.z / (double)ncy * ucell.lat0; - - this->meshcell_vec3=std::vector(3,0.0); - this->meshcell_vec3[0]=ucell.a3.x / (double)ncz * ucell.lat0; - this->meshcell_vec3[1]=ucell.a3.y / (double)ncz * ucell.lat0; - this->meshcell_vec3[2]=ucell.a3.z / (double)ncz * ucell.lat0; - - this->meshcell_latvec0.e11 = this->meshcell_vec1[0]; - this->meshcell_latvec0.e12 = this->meshcell_vec1[1]; - this->meshcell_latvec0.e13 = this->meshcell_vec1[2]; - - this->meshcell_latvec0.e21 = this->meshcell_vec2[0]; - this->meshcell_latvec0.e22 = this->meshcell_vec2[1]; - this->meshcell_latvec0.e23 = this->meshcell_vec2[2]; - - this->meshcell_latvec0.e31 = this->meshcell_vec3[0]; - this->meshcell_latvec0.e32 = this->meshcell_vec3[1]; - this->meshcell_latvec0.e33 = this->meshcell_vec3[2]; - - // why we need GT = meshcell_latvec0^(-1)? - // note that (i,j,k) is a grid point. - // (x,y,z) is the cartesian coordinates. - // because - // (x,y,z) = (i,j,k) * meshcell_latvec0 - // once we know (x,y,z) and meshcell_latvec0 - // we need to transform the formula to - // (x,y,z) * meshcell_latvec0^(-1) = (i,j,k) - this->meshcell_GT = this->meshcell_latvec0.Inverse(); - - if(PARAM.inp.test_gridt) - { - GlobalV::ofs_running << " the VECTORS of MESHCELL are (Bohr): " << std::endl; - GlobalV::ofs_running << " vec1( " - << std::setw(15) << meshcell_vec1[0] - << std::setw(15) << meshcell_vec1[1] - << std::setw(15) << meshcell_vec1[2] - << ")" << std::endl; - - GlobalV::ofs_running << " vec2( " - << std::setw(15) << meshcell_vec2[0] - << std::setw(15) << meshcell_vec2[1] - << std::setw(15) << meshcell_vec2[2] - << ")" << std::endl; - - GlobalV::ofs_running << " vec3( " - << std::setw(15) << meshcell_vec3[0] - << std::setw(15) << meshcell_vec3[1] - << std::setw(15) << meshcell_vec3[2] - << ")" << std::endl; - } - - return; -} - -void Grid_MeshCell::init_meshcell_pos(void) -{ - assert(bx>0); - assert(by>0); - assert(bz>0); - assert(bxyz>0); - - meshcell_pos = std::vector>(bxyz,std::vector(3,0.0)); - ModuleBase::Memory::record("meshcell_pos", sizeof(double) * bxyz*3); - - int index=0; - for(int i=0; i> meshcell_pos; - - private: - // latvec0 and GT are not used in current code. - // these two variables may be removed in the future. - ModuleBase::Matrix3 meshcell_latvec0; - ModuleBase::Matrix3 meshcell_GT; - - protected: - - std::vector meshcell_vec1; - std::vector meshcell_vec2; - std::vector meshcell_vec3; - - /// move operator for the next ESolver to directly use its infomation - Grid_MeshCell& operator=(Grid_MeshCell&& rhs) = default; - - void set_grid_dim( - const int &ncx_in, - const int &ncy_in, - const int &ncz_in, - const int &bx_in, - const int &by_in, - const int &bz_in, - const int &nbx_in, - const int &nby_in, - const int &nbz_in, - const int &nbxx_in, - const int &nbzp_start_in, - const int &nbzp_in); - - void init_latvec(const UnitCell &ucell); - void init_meshcell_pos(); - -}; - -#endif diff --git a/source/source_lcao/module_gint/grid_meshk.cpp b/source/source_lcao/module_gint/grid_meshk.cpp deleted file mode 100644 index e1451a31d8..0000000000 --- a/source/source_lcao/module_gint/grid_meshk.cpp +++ /dev/null @@ -1,101 +0,0 @@ -#include "grid_meshk.h" -#include "source_pw/module_pwdft/global.h" -#include "source_io/module_parameter/parameter.h" - -Grid_MeshK::Grid_MeshK() -{ -} - -Grid_MeshK::~Grid_MeshK() -{ -} - -int Grid_MeshK::cal_Rindex(const int &u1, const int &u2, const int &u3)const -{ - const int x1 = u1 - this->minu1; - const int x2 = u2 - this->minu2; - const int x3 = u3 - this->minu3; - - if(x1<0 || x2<0 || x3<0) - { - std::cout << " u1=" << u1 << " minu1=" << minu1 << std::endl; - std::cout << " u2=" << u2 << " minu2=" << minu2 << std::endl; - std::cout << " u3=" << u3 << " minu3=" << minu3 << std::endl; - ModuleBase::WARNING_QUIT("Grid_MeshK::cal_Rindex","x1<0 || x2<0 || x3<0 !"); - } - - assert(x1>=0); - assert(x2>=0); - assert(x3>=0); - - return (x3 + x2 * this->nu3 + x1 * this->nu2 * this->nu3); -} - -ModuleBase::Vector3 Grid_MeshK::get_ucell_coords(const int &Rindex)const -{ - const int x = ucell_index2x[Rindex]; - const int y = ucell_index2y[Rindex]; - const int z = ucell_index2z[Rindex]; - - return ModuleBase::Vector3(x, y, z); -} - -void Grid_MeshK::cal_extended_cell(const int &dxe, const int &dye, const int &dze,const int& nbx, const int& nby, const int& nbz) -{ - ModuleBase::TITLE("Grid_MeshK","cal_extended_cell"); - - //-------------------------------------- - // max and min unitcell in expaned grid. - //-------------------------------------- - this->maxu1 = dxe / nbx + 1; - this->maxu2 = dye / nby + 1; - this->maxu3 = dze / nbz + 1; - - this->minu1 = (-dxe+1) / nbx - 1; - this->minu2 = (-dye+1) / nby - 1; - this->minu3 = (-dze+1) / nbz - 1; - - if(PARAM.inp.test_gridt) {ModuleBase::GlobalFunc::OUT(GlobalV::ofs_running,"MaxUnitcell",maxu1,maxu2,maxu3); -} - if(PARAM.inp.test_gridt) {ModuleBase::GlobalFunc::OUT(GlobalV::ofs_running,"MinUnitcell",minu1,minu2,minu3); -} - - //-------------------------------------- - // number of unitcell in each direction. - //-------------------------------------- - this->nu1 = maxu1 - minu1 + 1; - this->nu2 = maxu2 - minu2 + 1; - this->nu3 = maxu3 - minu3 + 1; - this->nutot = nu1 * nu2 * nu3; - - if(PARAM.inp.test_gridt) {ModuleBase::GlobalFunc::OUT(GlobalV::ofs_running,"UnitCellNumber",nu1,nu2,nu3); -} - if(PARAM.inp.out_level != "m") { ModuleBase::GlobalFunc::OUT(GlobalV::ofs_running,"UnitCellTotal",nutot); -} - - - this->ucell_index2x = std::vector(nutot, 0); - this->ucell_index2y = std::vector(nutot, 0); - this->ucell_index2z = std::vector(nutot, 0); - - this->nutot = nu1 * nu2 * nu3; - - for(int i=minu1; i<=maxu1; i++) - { - for(int j=minu2; j<=maxu2; j++) - { - for(int k=minu3; k<=maxu3; k++) - { - const int cell = cal_Rindex(i,j,k); - assert(cellucell_index2x[cell] = i; - this->ucell_index2y[cell] = j; - this->ucell_index2z[cell] = k; - - } - } - } - - return; -} \ No newline at end of file diff --git a/source/source_lcao/module_gint/grid_meshk.h b/source/source_lcao/module_gint/grid_meshk.h deleted file mode 100644 index fb8d458bb0..0000000000 --- a/source/source_lcao/module_gint/grid_meshk.h +++ /dev/null @@ -1,48 +0,0 @@ -#ifndef GRID_MESHK_H -#define GRID_MESHK_H -#include "source_base/global_function.h" -#include "source_base/global_variable.h" -#include "source_base/vector3.h" - -class Grid_MeshK -{ - public: - Grid_MeshK(); - ~Grid_MeshK(); - - // calculate the index of unitcell. - int cal_Rindex(const int& u1, const int& u2, const int& u3)const; - - ModuleBase::Vector3 get_ucell_coords(const int& Rindex)const; - - /// move operator for the next ESolver to directly use its infomation - Grid_MeshK& operator=(Grid_MeshK&& rhs) = default; - - private: - // the max and the min unitcell. - int maxu1; - int maxu2; - int maxu3; - - int minu1; - int minu2; - int minu3; - - // the number of unitcells. - int nu1; - int nu2; - int nu3; - int nutot; - - // from 1D index to unitcell. - std::vector ucell_index2x; - std::vector ucell_index2y; - std::vector ucell_index2z; - - protected: - // calculate the extended unitcell. - void cal_extended_cell(const int &dxe, const int &dye, const int &dze, - const int& nbx, const int& nby, const int& nbz); -}; - -#endif diff --git a/source/source_lcao/module_gint/grid_technique.cpp b/source/source_lcao/module_gint/grid_technique.cpp deleted file mode 100644 index 9241c81d0a..0000000000 --- a/source/source_lcao/module_gint/grid_technique.cpp +++ /dev/null @@ -1,784 +0,0 @@ -#if ((defined __CUDA) /* || (defined __ROCM) */) -#include -#include "source_io/module_parameter/parameter.h" -#endif -#include "grid_technique.h" -#include "source_io/module_parameter/parameter.h" -#include "source_base/memory.h" -#include "source_base/parallel_reduce.h" -#include "source_base/timer.h" -#include "source_pw/module_pwdft/global.h" -#include "source_hsolver/kernels/cuda/helper_cuda.h" - -#include "source_lcao/module_gint/temp_gint/gint_helper.h" - -Grid_Technique::Grid_Technique() { -#if ((defined __CUDA) /* || (defined __ROCM) */) - if (PARAM.inp.device == "gpu") { - is_malloced = false; - } -#endif -} - -Grid_Technique::~Grid_Technique() { - -#if ((defined __CUDA) /* || (defined __ROCM) */) - if (PARAM.inp.device == "gpu") { - free_gpu_gint_variables(this->nat); - } -#endif -} - -// This function is called in esolver_ks_lcao_elec.cpp -// after the orbital information has been read, -// this function control the routinue to generate -// grid technique parameters. -void Grid_Technique::set_pbc_grid(const int& ncx_in, - const int& ncy_in, - const int& ncz_in, - const int& bx_in, - const int& by_in, - const int& bz_in, - const int& nbx_in, - const int& nby_in, - const int& nbz_in, - const int& nbxx_in, - const int& nbzp_start_in, - const int& nbzp_in, - const int& ny, - const int& nplane, - const int& startz_current, - const UnitCell& ucell, - const Grid_Driver& gd, - const double& dr_uniform, - const std::vector& rcuts, - const std::vector>& psi_u, - const std::vector>& dpsi_u, - const std::vector>& d2psi_u, - const int& num_stream) -{ - ModuleBase::TITLE("Grid_Technique", "init"); - ModuleBase::timer::tick("Grid_Technique", "init"); - - if (PARAM.inp.out_level != "m") { - GlobalV::ofs_running - << "\n SETUP EXTENDED REAL SPACE GRID FOR GRID INTEGRATION" - << std::endl; - } - this->init_malloced = true; - - // copy ucell and orb parameters - this->ucell = &ucell; - this->dr_uniform = dr_uniform; - - this->nwmax = ucell.nwmax; - this->ntype = ucell.ntype; - - this->rcuts = rcuts; - double max_cut = *std::max_element(this->rcuts.begin(), this->rcuts.end()); - this->nr_max = static_cast(1 / this->dr_uniform * max_cut) + 10; - this->psi_u = psi_u; - this->dpsi_u = dpsi_u; - this->d2psi_u = d2psi_u; - - // (1) init_meshcell cell and big cell. - this->set_grid_dim(ncx_in, - ncy_in, - ncz_in, - bx_in, - by_in, - bz_in, - nbx_in, - nby_in, - nbz_in, - nbxx_in, - nbzp_start_in, - nbzp_in); - this->init_latvec(ucell); - - this->init_big_latvec(ucell); - - this->init_meshcell_pos(); - - // (2) expand the grid - - this->init_grid_expansion(ucell, this->rcuts.data()); - - // (3) calculate the extended grid. - this->cal_extended_cell(this->dxe, - this->dye, - this->dze, - this->nbx, - this->nby, - this->nbz); - - this->init_tau_in_bigcell(ucell); - - this->init_meshball(); - - this->init_atoms_on_grid(ny, nplane, ucell); - - this->init_ijr_and_nnrg(ucell, gd); - this->cal_trace_lo(ucell); -#if ((defined __CUDA) /* || (defined __ROCM) */) - if (PARAM.inp.device == "gpu") { - this->init_gpu_gint_variables(ucell, num_stream); - } -#endif - - ModuleBase::timer::tick("Grid_Technique", "init"); - return; -} - -void Grid_Technique::get_startind(const int& ny, - const int& nplane) { - ModuleBase::TITLE("Grid_Technique", "get_startind"); - - assert(nbxx >= 0); - - // calculates start_ind, which stores the - // starting index of each bigcell - this->start_ind = std::vector(nbxx, 0); - ModuleBase::Memory::record("GT::start_ind", sizeof(int) * nbxx); - - for (int i = 0; i < nbxx; i++) { - int ibx = 0; - int iby = 0; - int ibz = 0; - - int ix = 0; - int iy = 0; - int iz = 0; - - ibx = i / (nby * nbzp); - iby = (i - ibx * nby * nbzp) / nbzp; - ibz = i % nbzp; - - ix = ibx * this->bx; - iy = iby * this->by; - iz = ibz * this->bz; - - int ind = iz + iy * nplane + ix * ny * nplane; - - start_ind[i] = ind; - } - - return; -} - -// PLEASE update this 'init_atoms_on_grid' to make -// it adapted to 'cuboid' shape of grid -// mohan add 2021-04-06 -void Grid_Technique::init_atoms_on_grid(const int& ny, - const int& nplane, - const UnitCell& ucell) { - ModuleBase::TITLE("Grid_Technique", "init_atoms_on_grid"); - - assert(nbxx >= 0); - this->get_startind(ny, nplane); - - // (1) prepare data. - // counting the number of atoms whose orbitals have - // values on the bigcell. - this->how_many_atoms = std::vector(nbxx, 0); - ModuleBase::Memory::record("GT::how_many_atoms", sizeof(int) * nbxx); - - // (2) information about gloabl grid - // and local grid. - // mohan add 2010-07-02 - std::vector ind_bigcell = std::vector(nbxyz, 0); - ModuleBase::Memory::record("GT::ind_bigcell", sizeof(int) * this->nxyze); - std::vector bigcell_on_processor = std::vector(nbxyz, 0); - ModuleBase::Memory::record("GT::bigcell_on_processor", - sizeof(char) * this->nxyze); - this->check_bigcell(ind_bigcell.data(), bigcell_on_processor.data()); - - // (3) Find the atoms using - // when doing grid integration. - this->in_this_processor = std::vector(ucell.nat, false); - ModuleBase::Memory::record("GT::in_this_processor", - sizeof(int) * this->nxyze); - - // (4) init atoms on grid - std::vector index2normal = std::vector(this->nxyze, 0); - ModuleBase::Memory::record("GT::index2normal", sizeof(int) * this->nxyze); - this->grid_expansion_index(true, index2normal.data()); - - // (5) record how many atoms on - // each local grid point (ix,iy,iz) - int nat_local = 0; - this->total_atoms_on_grid = 0; - for (int iat = 0; iat < ucell.nat; iat++) - { - const int it = ucell.iat2it[iat]; - const double rcut_square = this->rcuts[it] * this->rcuts[it]; - for (int im = 0; im < this->meshball_ncells; im++) - { - // bcell[iat]: which bcell iat atom is in. - // ball[im]: relative position of adjacent bcell. - const int normal = index2normal[this->index_atom[iat] + this->index_ball[im]]; -#ifdef __DEBUG - if (normal >= nbxyz) - { - #pragma omp critical - { - std::cout << " index_atom=" << index_atom[iat] << std::endl; - std::cout << " index_ball=" << index_ball[im] << std::endl; - std::cout << " normal=" << normal << std::endl; - std::cout << " nbxyz=" << nbxyz << std::endl; - ModuleBase::WARNING_QUIT( - "Grid_Technique::init_atoms_on_grid", - "normal >= nbxyz"); - } - } -#endif - assert(normal >= 0); - const int bcell_idx_on_proc = ind_bigcell[normal]; - if (!bigcell_on_processor[normal]) - { - continue; - } - - bool is_atom_on_bcell = false; - const double dr_x_part = this->meshball_positions[im][0] - this->tau_in_bigcell[iat][0]; - const double dr_y_part = this->meshball_positions[im][1] - this->tau_in_bigcell[iat][1]; - const double dr_z_part = this->meshball_positions[im][2] - this->tau_in_bigcell[iat][2]; - for(int imcell = 0; imcell < this -> bxyz; imcell++) - { - const double dr_x = this->meshcell_pos[imcell][0] + dr_x_part; - const double dr_y = this->meshcell_pos[imcell][1] + dr_y_part; - const double dr_z = this->meshcell_pos[imcell][2] + dr_z_part; - const double dist_square = dr_x * dr_x + dr_y * dr_y + dr_z * dr_z; - if(dist_square <= rcut_square) - { - is_atom_on_bcell = true; - break; - } - } - if(is_atom_on_bcell) - { - ++how_many_atoms[bcell_idx_on_proc]; - ++this->total_atoms_on_grid; - this->in_this_processor[iat] = true; - } - } - if (this->in_this_processor[iat]) - { - ++nat_local; - } - } - - if (PARAM.inp.test_gridt) { - ModuleBase::GlobalFunc::OUT(GlobalV::ofs_running, - "Total_atoms_on_grid", - total_atoms_on_grid); -} - - int stop = 0; - if (total_atoms_on_grid == 0) { - GlobalV::ofs_running << " No atoms on this sub-FFT-mesh." << std::endl; - stop = 1; - } - Parallel_Reduce::reduce_all(stop); - if (stop) { - ModuleBase::WARNING("Grid_Technique::init_atoms_on_grid", - "No atom on this sub-FFT-mesh."); - } - - // calculate the trach of local ia to global iat - if (nat_local > 0) { - this->trace_iat.resize(nat_local); - for (int iat = ucell.nat - 1; iat >= 0; iat--) { - if (this->in_this_processor[iat]) { - this->trace_iat[--nat_local] = iat; - } - } - } - - // need how_many_atoms first. - this->cal_grid_integration_index(); - // bcell_start is needed. - this->init_atoms_on_grid2(index2normal.data(), ucell); - return; -} - -void Grid_Technique::check_bigcell(int* ind_bigcell, - char* bigcell_on_processor) { - // check if a given bigcell is treated on this processor - const int zstart = nbzp_start; - const int zend = nbzp + zstart; - const int nbyz = nby * nbz; - const int nz = nbzp; - - int iz_now = 0; - int ix = 0; - int iy = 0; - int iz = 0; - int ind = 0; - bool flag = false; - - for (int i = 0; i < nbxyz; i++) { - int iz_now = i % nbz; - if (iz_now < zstart || iz_now >= zend) { - flag = false; - } else { - flag = true; - ix = i / nbyz; - iy = (i - ix * nbyz) / nbz; - iz = iz_now - zstart; - ind = ix * nby * nz + iy * nz + iz; - // no need to calculate index if bigcell is - // not on this processor - } - - ind_bigcell[i] = ind; - bigcell_on_processor[i] = flag; - } - return; -} - -void Grid_Technique::init_atoms_on_grid2(const int* index2normal, - const UnitCell& ucell) { - ModuleBase::TITLE("Grid_Techinique", "init_atoms_on_grid2"); - - if (total_atoms_on_grid == 0) { - ModuleBase::WARNING("Grid_Technique::init_atoms_on_grid2", - "no atom on this sub FFT grid."); - return; - } - - std::vector index2ucell = std::vector(this->nxyze, 0); - ModuleBase::Memory::record("GT::index2ucell", sizeof(int) * this->nxyze); - this->grid_expansion_index(false, index2ucell.data()); - - std::vector ind_bigcell = std::vector(nbxyz, 0); - ModuleBase::Memory::record("GT::ind_bigcell", sizeof(int) * nbxyz); - std::vector bigcell_on_processor = std::vector(nbxyz, 0); - this->check_bigcell(ind_bigcell.data(), bigcell_on_processor.data()); - - //-------------------------------------- - // save which atom is in the bigcell,unitcell - //-------------------------------------- - assert(total_atoms_on_grid != 0); - this->which_atom = std::vector(total_atoms_on_grid, 0); - ModuleBase::Memory::record("GT::which_atom", - sizeof(int) * total_atoms_on_grid); - - this->which_bigcell = std::vector(total_atoms_on_grid, 0); - ModuleBase::Memory::record("GT::which_bigcell", - sizeof(int) * total_atoms_on_grid); - - this->which_unitcell = std::vector(total_atoms_on_grid, 0); - ModuleBase::Memory::record("GT::which_unitcell", - sizeof(int) * total_atoms_on_grid); - - // for each atom, first we need to locate which cell - // the atom is in, then we search meshball aroung this - // grid, and record each grid's atom position. - int count = 0; - this->how_many_atoms = std::vector(nbxx, 0); - ModuleBase::Memory::record("GT::how many atoms", sizeof(int) * nbxx); - std::vector coord_x(total_atoms_on_grid* bxyz, 0.0); - std::vector coords3(bxyz * 3, 0.0); - for(int iat = 0; iat < ucell.nat; iat++) - { - const int it = ucell.iat2it[iat]; - const double rcut_square = this->rcuts[it] * this->rcuts[it]; - // zero bigcell of meshball indicate ? - for (int im = 0; im < this->meshball_ncells; im++) - { - const int extgrid = this->index_atom[iat] + this->index_ball[im]; - const int normal = index2normal[extgrid]; - - // mohan add 2010-07-01 - const int bcell_idx_on_proc = ind_bigcell[normal]; - if (!bigcell_on_processor[normal]) - { - continue; - } - - bool is_atom_on_bcell = false; - const double dr_x_part = this->meshball_positions[im][0] - this->tau_in_bigcell[iat][0]; - const double dr_y_part = this->meshball_positions[im][1] - this->tau_in_bigcell[iat][1]; - const double dr_z_part = this->meshball_positions[im][2] - this->tau_in_bigcell[iat][2]; - for(int imcell = 0; imcell < this -> bxyz; imcell++) - { - const double dr_x = this->meshcell_pos[imcell][0] + dr_x_part; - const double dr_y = this->meshcell_pos[imcell][1] + dr_y_part; - const double dr_z = this->meshcell_pos[imcell][2] + dr_z_part; - const double dist_square = dr_x * dr_x + dr_y * dr_y + dr_z * dr_z; - if(dist_square <= rcut_square) - { - is_atom_on_bcell = true; - break; - } - } - - if(is_atom_on_bcell) - { - // it's not the normal order to calculate which_atom - // and which_bigcell, especailly in 1D array. - // Each grid's adjacent atom number is different, - // so, first we need to locate which grid, using - // bcell_start, then we need to count which adjacent atom. - // using how_many_atoms. - const int index = this->bcell_start[bcell_idx_on_proc] + this->how_many_atoms[bcell_idx_on_proc]; - - // we save which_atom and which_bigcell in 1D array, - // once you want to use this in grid integration, - // the only information you got is the 'normal' index, - // so you need to use bcell_start - // to get the 'mesh_index', then you can you this mesh_index - // to use which_atom or which_bigcell. - this->which_atom[index] = iat; - this->which_bigcell[index] = im; - this->which_unitcell[index] = index2ucell[extgrid]; - for(int imcell = 0; imcell < this -> bxyz; imcell++) - { - const double dr_x = this->meshcell_pos[imcell][0] + dr_x_part; - coord_x[index * bxyz + imcell] = dr_x; - } - - ++count; - ++how_many_atoms[bcell_idx_on_proc]; - } - } - } - for(int i = 0; i < this->bxyz; i++) - { - for(int j = 0; j < 3; j++) - { - coords3[i * 3 + j] = this->meshcell_pos[i][j]; - } - } - assert(count == total_atoms_on_grid); - return; -} - -void Grid_Technique::cal_grid_integration_index() { - // save the start - this->bcell_start = std::vector(nbxx, 0); - ModuleBase::Memory::record("GT::bcell_start", sizeof(int) * nbxx); - for (int i = 1; i < nbxx; i++) { - this->bcell_start[i] - = this->bcell_start[i - 1] + this->how_many_atoms[i - 1]; - } - - // calculate which grid has the largest number of atoms, - // and how many atoms. - this->max_atom = 0; - for (int i = 0; i < nbxx; i++) { - this->max_atom = std::max(this->max_atom, this->how_many_atoms[i]); - } - -#ifdef __MPI - int* all = new int[GlobalV::NPROC]; - ModuleBase::GlobalFunc::ZEROS(all, GlobalV::NPROC); - Parallel_Reduce::gather_int_all(max_atom, all); - if (GlobalV::MY_RANK == 0) { - GlobalV::ofs_warning << std::setw(15) << "Processor" << std::setw(15) - << "Atom" << std::endl; - for (int i = 0; i < GlobalV::NPROC; i++) { - GlobalV::ofs_warning << std::setw(15) << i + 1 << std::setw(15) - << all[i] << std::endl; - } - } - delete[] all; -#endif - - if (PARAM.inp.test_gridt) { - ModuleBase::GlobalFunc::OUT(GlobalV::ofs_running, - "Max atom on bigcell", - max_atom); - } - return; -} - -// set 'lgd' variable -void Grid_Technique::cal_trace_lo(const UnitCell& ucell) { - ModuleBase::TITLE("Grid_Technique", "cal_trace_lo"); - // save the atom information in trace_lo, - // in fact the trace_lo dimension can be reduced - // to ucell.nat, but I think this is another way. - this->trace_lo = std::vector(PARAM.globalv.nlocal, -1); - ModuleBase::Memory::record("GT::trace_lo", sizeof(int) * PARAM.globalv.nlocal); - - this->lnat = 0; - this->lgd = 0; - int iat = 0; - int iw_all = 0; - int iw_local = 0; - - for (int it = 0; it < ucell.ntype; it++) { - for (int ia = 0; ia < ucell.atoms[it].na; ia++) { - if (this->in_this_processor[iat]) { - ++lnat; - int nw0 = ucell.atoms[it].nw; - if (PARAM.inp.nspin - == 4) { // added by zhengdy-soc, need to be double in soc - nw0 *= 2; - this->lgd += nw0; - } else { - this->lgd += ucell.atoms[it].nw; - } - - for (int iw = 0; iw < nw0; iw++) { - this->trace_lo[iw_all] = iw_local; - ++iw_local; - ++iw_all; - } - } else { - // global index of atomic orbitals - iw_all += ucell.atoms[it].nw; - if (PARAM.inp.nspin == 4) { - iw_all += ucell.atoms[it].nw; -} - } - ++iat; - } - } - - if (PARAM.inp.out_level != "m") { - ModuleBase::GlobalFunc::OUT(GlobalV::ofs_running, - "Atom number in sub-FFT-grid", - lnat); - ModuleBase::GlobalFunc::OUT(GlobalV::ofs_running, - "Local orbitals number in sub-FFT-grid", - lgd); - } - - assert(iw_local == lgd); - assert(iw_all == PARAM.globalv.nlocal); - return; -} - -void Grid_Technique::init_ijr_and_nnrg(const UnitCell& ucell, const Grid_Driver& gd) -{ - ModuleBase::TITLE("Grid_Technique", "init_ijr_and_nnrg"); - - hamilt::HContainer hRGint_tmp(ucell.nat); - // prepare the row_index and col_index for construct AtomPairs, they are - // same, name as orb_index - std::vector orb_index(ucell.nat + 1); - orb_index[0] = 0; - for (int i = 1; i < orb_index.size(); i++) { - int type = ucell.iat2it[i - 1]; - orb_index[i] = orb_index[i - 1] + ucell.atoms[type].nw; - } - - for (int T1 = 0; T1 < ucell.ntype; ++T1) { - const Atom* atom1 = &(ucell.atoms[T1]); - for (int I1 = 0; I1 < atom1->na; ++I1) { - auto& tau1 = atom1->tau[I1]; - - gd.Find_atom(ucell, tau1, T1, I1); - - const int iat1 = ucell.itia2iat(T1, I1); - // whether this atom is in this processor. - if (this->in_this_processor[iat1]) { - for (int ad = 0; ad < gd.getAdjacentNum() + 1; ++ad) { - const int T2 = gd.getType(ad); - const int I2 = gd.getNatom(ad); - const int iat2 = ucell.itia2iat(T2, I2); - const Atom* atom2 = &(ucell.atoms[T2]); - - // NOTE: hRGint wil save total number of atom pairs, - // if only upper triangle is saved, the lower triangle will - // be lost in 2D-block parallelization. if the adjacent atom - // is in this processor. - if (this->in_this_processor[iat2]) { - ModuleBase::Vector3 dtau - = gd.getAdjacentTau(ad) - tau1; - double distance = dtau.norm() * ucell.lat0; - double rcut - = this->rcuts[T1] + this->rcuts[T2]; - - // if(distance < rcut) - // mohan reset this 2013-07-02 in Princeton - // we should make absolutely sure that the distance is - // smaller than rcuts[it] this should be consistant - // with LCAO_nnr::cal_nnrg function typical example : 7 - // Bohr cutoff Si orbital in 14 Bohr length of cell. - // distance = 7.0000000000000000 - // rcuts[it] = 7.0000000000000008 - if (distance < rcut - 1.0e-15) { - // calculate R index - auto& R_index = gd.getBox(ad); - // insert this atom-pair into this->hRGint - hamilt::AtomPair tmp_atom_pair( - iat1, - iat2, - R_index.x, - R_index.y, - R_index.z, - orb_index.data(), - orb_index.data(), - ucell.nat); - hRGint_tmp.insert_pair(tmp_atom_pair); - } - } - } - } - } - } - this->ijr_info = hRGint_tmp.get_ijr_info(); - this->nnrg = hRGint_tmp.get_nnr(); - return; -} - -#if ((defined __CUDA) /* || (defined __ROCM) */) - -void Grid_Technique::init_gpu_gint_variables(const UnitCell& ucell, - const int num_stream) { -#ifdef __MPI - dev_id = base_device::information::set_device_by_rank(); -#endif - if (is_malloced) { - free_gpu_gint_variables(this->nat); - } - nstreams = num_stream; - double ylmcoef[100]; - ModuleBase::GlobalFunc::ZEROS(ylmcoef, 100); - for (int i = 0; i < 100; i++) { - ylmcoef[i] = ModuleBase::Ylm::ylmcoef[i]; - } - checkCudaErrors(cudaMalloc((void**)&ylmcoef_g, 100 * sizeof(double))); - checkCudaErrors(cudaMemcpy(ylmcoef_g, - ylmcoef, - 100 * sizeof(double), - cudaMemcpyHostToDevice)); - - double max_cut = *std::max_element(this->rcuts.begin(), this->rcuts.end()); - - int atom_nw_now[ucell.ntype]; - int ucell_atom_nwl_now[ucell.ntype]; - for (int i = 0; i < ucell.ntype; i++) { - atom_nw_now[i] = ucell.atoms[i].nw; - ucell_atom_nwl_now[i] = ucell.atoms[i].nwl; - } - - // double psi_u_now[ucell.ntype * ucell.nwmax * nr_max * - // 2]; - double* psi_u_now = (double*)malloc(ucell.ntype * ucell.nwmax * this->nr_max * 2 * sizeof(double)); - memset(psi_u_now, 0, ucell.ntype * ucell.nwmax * this->nr_max * 2 * sizeof(double)); - bool* atom_iw2_new_now = (bool*)malloc(ucell.ntype * ucell.nwmax * sizeof(bool)); - memset(atom_iw2_new_now, 0, ucell.ntype * ucell.nwmax * sizeof(bool)); - int* atom_iw2_ylm_now - = (int*)malloc(ucell.ntype * ucell.nwmax * sizeof(int)); - memset(atom_iw2_ylm_now, 0, ucell.ntype * ucell.nwmax * sizeof(int)); - int* atom_iw2_l_now = (int*)malloc(ucell.ntype * ucell.nwmax * sizeof(int)); - memset(atom_iw2_l_now, 0, ucell.ntype * ucell.nwmax * sizeof(int)); - - Atom* atomx; - for (int i = 0; i < ucell.ntype; i++) { - atomx = &ucell.atoms[i]; - for (int j = 0; j < ucell.nwmax; j++) { - if (j < atomx->nw) { - atom_iw2_new_now[i * ucell.nwmax + j] = atomx->iw2_new[j]; - atom_iw2_ylm_now[i * ucell.nwmax + j] = atomx->iw2_ylm[j]; - atom_iw2_l_now[i * ucell.nwmax + j] = atomx->iw2l[j]; - for (int k = 0; k < this->nr_max; k++) { - int index_temp = (i * ucell.nwmax * this->nr_max - + j * this->nr_max + k) - * 2; - if (k < this->psi_u[i * this->nwmax + j].size()) { - psi_u_now[index_temp] - = this->psi_u[i * this->nwmax + j].data()[k]; - psi_u_now[index_temp + 1] - = this->dpsi_u[i * this->nwmax + j].data()[k]; - } - } - } - } - } - - checkCudaErrors(cudaMalloc((void**)&atom_nw_g, ucell.ntype * sizeof(int))); - checkCudaErrors(cudaMemcpy(atom_nw_g, - atom_nw_now, - ucell.ntype * sizeof(int), - cudaMemcpyHostToDevice)); - - checkCudaErrors(cudaMalloc((void**)&atom_nwl_g, ucell.ntype * sizeof(int))); - checkCudaErrors(cudaMemcpy(atom_nwl_g, ucell_atom_nwl_now, ucell.ntype * sizeof(int), cudaMemcpyHostToDevice)); - - checkCudaErrors(cudaMalloc((void**)&psi_u_g, ucell.ntype * ucell.nwmax * this->nr_max * sizeof(double) * 2)); - checkCudaErrors(cudaMemcpy(psi_u_g, - psi_u_now, - ucell.ntype * ucell.nwmax * this->nr_max * sizeof(double) * 2, - cudaMemcpyHostToDevice)); - - checkCudaErrors(cudaMalloc((void**)&psi_u_g, - ucell.ntype * ucell.nwmax * nr_max * sizeof(double) * 2)); - checkCudaErrors(cudaMemcpy(psi_u_g, - psi_u_now, - ucell.ntype * ucell.nwmax * nr_max * sizeof(double) * 2, - cudaMemcpyHostToDevice)); - - checkCudaErrors(cudaMalloc((void**)&atom_new_g, - ucell.ntype * ucell.nwmax * sizeof(bool))); - checkCudaErrors(cudaMemcpy(atom_new_g, - atom_iw2_new_now, - ucell.ntype * ucell.nwmax * sizeof(bool), - cudaMemcpyHostToDevice)); - - checkCudaErrors(cudaMalloc((void**)&atom_ylm_g, - ucell.ntype * ucell.nwmax * sizeof(int))); - - checkCudaErrors(cudaMemcpy(atom_ylm_g, - atom_iw2_ylm_now, - ucell.ntype * ucell.nwmax * sizeof(int), - cudaMemcpyHostToDevice)); - - checkCudaErrors(cudaMalloc((void**)&atom_l_g, - ucell.ntype * ucell.nwmax * sizeof(int))); - checkCudaErrors(cudaMemcpy(atom_l_g, - atom_iw2_l_now, - ucell.ntype * ucell.nwmax * sizeof(int), - cudaMemcpyHostToDevice)); - - checkCudaErrors(cudaMalloc((void**)&rcut_g, ucell.ntype * sizeof(double))); - checkCudaErrors(cudaMemcpy(rcut_g, - rcuts.data(), - ucell.ntype * sizeof(double), - cudaMemcpyHostToDevice)); - std::vector mcell_pos(bxyz * 3, 0); - for (int i = 0; i < bxyz; i++) - { - mcell_pos[3 * i] = meshcell_pos[i][0]; - mcell_pos[3 * i + 1] = meshcell_pos[i][1]; - mcell_pos[3 * i + 2] = meshcell_pos[i][2]; - } - checkCudaErrors(cudaMalloc((void**)&mcell_pos_g, - bxyz * 3 * sizeof(double))); - checkCudaErrors(cudaMemcpy(mcell_pos_g, - mcell_pos.data(), - bxyz * 3 * sizeof(double), - cudaMemcpyHostToDevice)); - - gemm_algo_selector(bxyz, fastest_matrix_mul, ucell); - - is_malloced = true; - - free(psi_u_now); - free(atom_iw2_new_now); - free(atom_iw2_ylm_now); -} - -void Grid_Technique::free_gpu_gint_variables(int nat) { - if (!is_malloced) { - return; - } - - checkCudaErrors(cudaFree(ylmcoef_g)); - checkCudaErrors(cudaFree(atom_nwl_g)); - checkCudaErrors(cudaFree(psi_u_g)); - checkCudaErrors(cudaFree(atom_new_g)); - checkCudaErrors(cudaFree(atom_ylm_g)); - checkCudaErrors(cudaFree(atom_nw_g)); - checkCudaErrors(cudaFree(atom_l_g)); - checkCudaErrors(cudaFree(rcut_g)); - checkCudaErrors(cudaFree(mcell_pos_g)); - - is_malloced = false; -} -#endif diff --git a/source/source_lcao/module_gint/grid_technique.h b/source/source_lcao/module_gint/grid_technique.h deleted file mode 100644 index 947b8d9337..0000000000 --- a/source/source_lcao/module_gint/grid_technique.h +++ /dev/null @@ -1,172 +0,0 @@ -#ifndef GRID_TECHNIQUE_H -#define GRID_TECHNIQUE_H - -#include "grid_meshball.h" -#include "source_basis/module_ao/ORB_read.h" -#include "source_basis/module_ao/parallel_orbitals.h" -#include "source_cell/module_neighbor/sltk_grid_driver.h" -#include "source_cell/unitcell.h" -#include "source_lcao/module_hcontainer/hcontainer.h" -#if ((defined __CUDA) /* || (defined __ROCM) */) -#include "kernels/cuda/gemm_selector.cuh" - -#include -#endif - -// Author: mohan -// Date: 2009-10-17 -class Grid_Technique : public Grid_MeshBall { - // public variables. - public: - Grid_Technique(); - ~Grid_Technique(); - - /// move operator for the next ESolver to directly use its infomation - Grid_Technique& operator=(Grid_Technique&& rhs) = default; - //------------------------------------ - // 1: Info about atom number on grid. - //------------------------------------ - // record how many atoms on each grid. - std::vector how_many_atoms; - // max atom on grid - int max_atom=0; - // sum of how_many_atoms - int total_atoms_on_grid=0; - std::vector start_ind; - - //------------------------------------ - // 2: Info about which atom on grid. - //------------------------------------ - // save the start position of each big cell's adjacent - // atoms in 1D grid. - std::vector bcell_start; - // save the 'iat' atom. - // dim: total_atoms_on_grid. - std::vector which_atom; - - //-------------------------------------- - // save the bigcell index in meshball. - // dim: total_atoms_on_grid. - //-------------------------------------- - std::vector which_bigcell; - std::vector which_unitcell; - - //------------------------------------ - // 3: which atom on local grid. - //------------------------------------ - int lnat=0; // local nat. - int lgd=0; // local grid dimension. lgd * lgd symmetry matrix. - std::vector in_this_processor; - std::vector trace_iat; - std::vector trace_lo; // trace local orbital. - - //--------------------------------------- - // nnrg: number of matrix elements on - // each processor's real space grid. - // use: GridT.in_this_processor - //--------------------------------------- - int nnrg = 0; - - // UnitCell and LCAO_Obrbitals - const UnitCell* ucell=nullptr; - const LCAO_Orbitals* orb=nullptr; - - // UnitCell parameters - int nwmax=0; - int nr_max=0; - int ntype=0; - - // LCAO Orbitals - double dr_uniform={0.0}; - std::vector rcuts; - std::vector> psi_u; - std::vector> dpsi_u; - std::vector> d2psi_u; - - // Determine whether the grid point integration is initialized. - bool init_malloced=false; - - bool get_init_malloced() const { return init_malloced; } - - void set_pbc_grid(const int& ncx_in, - const int& ncy_in, - const int& ncz_in, - const int& bx_in, - const int& by_in, - const int& bz_in, - const int& nbx_in, - const int& nby_in, - const int& nbz_in, - const int& nbxx_in, - const int& nbzp_start_in, - const int& nbzp_in, - const int& ny, - const int& nplane, - const int& startz_current, - const UnitCell& ucell, - const Grid_Driver& gd, - const double& dr_uniform, - const std::vector& rcuts, - const std::vector>& psi_u, - const std::vector>& dpsi_u, - const std::vector>& d2psi_u, - const int& num_stream); - - const std::vector* get_ijr_info() const { return &ijr_info; } - - /// number of elements(basis-pairs) in this processon - /// on all adjacent atoms-pairs(Grid division) - int cal_RindexAtom(const int& u1, - const int& u2, - const int& u3, - const int& iat2) const; - - int find_offset(const int id1, const int id2, const int iat1, const int iat2) const; - - private: - - // store the information of atom pairs on this processor, used to initialize hcontainer. - // The meaning of ijr can be referred to in the get_ijr_info function in hcontainer.cpp. - std::vector ijr_info; - - void cal_max_box_index(); - // atoms on meshball - void init_atoms_on_grid(const int& ny, - const int& nplane, - const UnitCell& ucell); - void init_atoms_on_grid2(const int* index2normal, const UnitCell& ucell); - // initialize the ijr_info and nnrg - void init_ijr_and_nnrg(const UnitCell& ucell, const Grid_Driver& gd); - void cal_grid_integration_index(); - void cal_trace_lo(const UnitCell& ucell); - void check_bigcell(int* ind_bigcell, char* bigcell_on_processor); - void get_startind(const int& ny, - const int& nplane); - -#if ((defined __CUDA) /* || (defined __ROCM) */) - public: - double* ylmcoef_g; - bool is_malloced; - - int* atom_nw_g; - int* atom_nwl_g; - double* psi_u_g; - bool* atom_new_g; - int* atom_ylm_g; - int* atom_l_g; - double* rcut_g; - double*mcell_pos_g; - - int dev_id = 0; - int nstreams = 4; - // streams[nstreams] - // TODO it needs to be implemented through configuration files - matrix_multiple_func_type fastest_matrix_mul; - - private: - void init_gpu_gint_variables(const UnitCell& ucell, const int num_stream); - void free_gpu_gint_variables(int nat); - -#endif -}; -#endif diff --git a/source/source_lcao/module_gint/gtask_force.cpp b/source/source_lcao/module_gint/gtask_force.cpp deleted file mode 100644 index 2fab74907e..0000000000 --- a/source/source_lcao/module_gint/gtask_force.cpp +++ /dev/null @@ -1,152 +0,0 @@ -#include - -#include "gint_force_gpu.h" -#include "source_base/ylm.h" -#include "source_lcao/module_gint/gint_tools.h" -#include "source_base/vector3.h" -namespace GintKernel -{ - -void gtask_force(const Grid_Technique& gridt, - const UnitCell& ucell, - const int grid_index_ij, - const int nczp, - const double vfactor, - const double* vlocal_global_value, - int& atoms_per_z, - int* atoms_num_info, - int* iat_on_nbz, - uint8_t* atoms_type, - double* dr_part, - double* vldr3) -{ - atoms_per_z = 0; - for (int z_index = 0; z_index < gridt.nbzp; z_index++) - { - const int grid_index = grid_index_ij + z_index; - const int bcell_start_index = gridt.bcell_start[grid_index]; - const int na_grid = gridt.how_many_atoms[grid_index]; - atoms_num_info[z_index * 2] = na_grid; - atoms_num_info[z_index * 2 + 1] = atoms_per_z; - for (int id = 0; id < na_grid; id++) - { - const int mcell_index = bcell_start_index + id; - const int imcell = gridt.which_bigcell[mcell_index]; - const int iat = gridt.which_atom[mcell_index]; - const int it_temp = ucell.iat2it[iat]; - - dr_part[atoms_per_z * 3] = gridt.meshball_positions[imcell][0] - - gridt.tau_in_bigcell[iat][0]; - dr_part[atoms_per_z * 3 + 1] = gridt.meshball_positions[imcell][1] - - gridt.tau_in_bigcell[iat][1]; - dr_part[atoms_per_z * 3 + 2] = gridt.meshball_positions[imcell][2] - - gridt.tau_in_bigcell[iat][2]; - atoms_type[atoms_per_z] = it_temp; - iat_on_nbz[atoms_per_z] = iat; - atoms_per_z++; - } - - const int start_ind_grid = gridt.start_ind[grid_index]; - int id = z_index * gridt.bxyz; - for (int bx_index = 0; bx_index < gridt.bx; bx_index++) - { - for (int by_index = 0; by_index < gridt.by; by_index++) - { - for (int bz_index = 0; bz_index < gridt.bz; bz_index++) - { - int vindex_global = bx_index * gridt.ncy * nczp - + by_index * nczp + bz_index - + start_ind_grid; - vldr3[id]= vlocal_global_value[vindex_global] * vfactor; - id++; - } - } - } - } -} - -void alloc_mult_force(const hamilt::HContainer* dm, - const Grid_Technique& gridt, - const UnitCell& ucell, - const int grid_index_ij, - const int max_atom, - const int *atoms_num_info, - double* const psi_g, - double* const psi_dm_g, - double* const dm_matrix_g, - int& max_m, - int& max_n, - int& atom_pair_num, - int* mat_m, - int* mat_n, - int* mat_k, - int* mat_lda, - int* mat_ldb, - int* mat_ldc, - double** mat_A, - double** mat_B, - double** mat_C) -{ - int tid = 0; - max_m = 0; - max_n = 0; - const int nwmax = ucell.nwmax; - const int lgd = gridt.lgd; - for (int z_index = 0; z_index < gridt.nbzp; z_index++) - { - const int grid_index = grid_index_ij + z_index; - const int bcell_start_index = gridt.bcell_start[grid_index]; - const int pre_atoms = atoms_num_info[z_index * 2 + 1]; - - for (int atom1 = 0; atom1 < gridt.how_many_atoms[grid_index]; atom1++) - { - const int mcell_index1 = bcell_start_index + atom1; - const int iat1 = gridt.which_atom[mcell_index1]; - const int uc1 = gridt.which_unitcell[mcell_index1]; - const ModuleBase::Vector3 r1 = gridt.get_ucell_coords(uc1); - const int it1 = ucell.iat2it[iat1]; - const int nw1 = ucell.atoms[it1].nw; - - for (int atom2 = 0; atom2 < gridt.how_many_atoms[grid_index];atom2++) - { - const int mcell_index2 = bcell_start_index + atom2; - const int iat2 = gridt.which_atom[mcell_index2]; - const int uc2 = gridt.which_unitcell[mcell_index2]; - const ModuleBase::Vector3 r2 = gridt.get_ucell_coords(uc2); - const int offset = dm->find_matrix_offset(iat1, iat2, r1-r2); - if (offset == -1) - { - continue; - } - const int it2 = ucell.iat2it[iat2]; - const int nw2 = ucell.atoms[it2].nw; - - const int mat_A_idx = (pre_atoms + atom2) * nwmax * gridt.bxyz; - const int mat_C_idx = (pre_atoms + atom1) * nwmax * gridt.bxyz; - mat_m[tid] = gridt.bxyz; - mat_n[tid] = nw1; - mat_k[tid] = nw2; - mat_lda[tid] = nwmax; - mat_ldb[tid] = nw2; - mat_ldc[tid] = nwmax; - mat_A[tid] = psi_g + mat_A_idx; - mat_B[tid] = dm_matrix_g + offset; - mat_C[tid] = psi_dm_g + mat_C_idx; - - if (mat_m[tid] > max_m) - { - max_m = mat_m[tid]; - } - - if (mat_n[tid] > max_n) - { - max_n = mat_n[tid]; - } - - tid++; - } - } - } - atom_pair_num = tid; -} -} // namespace GintKernel diff --git a/source/source_lcao/module_gint/gtask_rho.cpp b/source/source_lcao/module_gint/gtask_rho.cpp deleted file mode 100644 index 691504d943..0000000000 --- a/source/source_lcao/module_gint/gtask_rho.cpp +++ /dev/null @@ -1,155 +0,0 @@ -#include "gint_rho_gpu.h" -#include "source_base/ylm.h" -#include "source_lcao/module_gint/gint_tools.h" -#include "source_base/vector3.h" -#include "omp.h" -namespace GintKernel -{ - -void gtask_rho(const Grid_Technique& gridt, - const int grid_index_ij, - const UnitCell& ucell, - double* dr_part, - uint8_t* atoms_type, - int* atoms_num_info, - int& atoms_per_z) -{ - atoms_per_z = 0; - for (int z_index = 0; z_index < gridt.nbzp; z_index++) - { - const int grid_index = grid_index_ij + z_index; - const int bcell_start_index = gridt.bcell_start[grid_index]; - const int na_grid = gridt.how_many_atoms[grid_index]; - atoms_num_info[2 * z_index] = na_grid; - atoms_num_info[2 * z_index + 1] = atoms_per_z; - for (int id = 0; id < na_grid; id++) - { - const int mcell_index = bcell_start_index + id; - const int imcell = gridt.which_bigcell[mcell_index]; - const int iat = gridt.which_atom[mcell_index]; - const int it_temp = ucell.iat2it[iat]; - - dr_part[atoms_per_z * 3] = gridt.meshball_positions[imcell][0] - - gridt.tau_in_bigcell[iat][0]; - dr_part[atoms_per_z * 3 + 1] = gridt.meshball_positions[imcell][1] - - gridt.tau_in_bigcell[iat][1]; - dr_part[atoms_per_z * 3 + 2] = gridt.meshball_positions[imcell][2] - - gridt.tau_in_bigcell[iat][2]; - atoms_type[atoms_per_z] = it_temp; - atoms_per_z++; - } - } -} - -void alloc_mult_dot_rho(const hamilt::HContainer* dm, - const Grid_Technique& gridt, - const UnitCell& ucell, - const int grid_index_ij, - const int max_atom, - const int lgd, - const int nczp, - const int* atoms_num_info, - double* const psir_ylm_g, - double* const psir_dm_g, - double* const dm_matrix_g, - double* mat_alpha, - int* mat_m, - int* mat_n, - int* mat_k, - int* mat_lda, - int* mat_ldb, - int* mat_ldc, - double** mat_A, - double** mat_B, - double** mat_C, - int& max_m, - int& max_n, - int& atom_pair_num, - double* rho_g, - double** dot_product) -{ - int tid = 0; - int dot_count = 0; - max_m = 0; - max_n = 0; - const int nwmax=ucell.nwmax; - // generate matrix multiplication tasks - for (int z_index = 0; z_index < gridt.nbzp; z_index++) - { - const int grid_index = grid_index_ij + z_index; - const int bcell_start_index = gridt.bcell_start[grid_index]; - const int bcell_start_psir = atoms_num_info[2 * z_index + 1] * gridt.bxyz * nwmax; - const int na_grid = atoms_num_info[2 * z_index]; - - for (int atom1 = 0; atom1 < gridt.how_many_atoms[grid_index]; atom1++) - { - const int mcell_index1 = bcell_start_index + atom1; - const int iat1 = gridt.which_atom[mcell_index1]; - const int uc1 = gridt.which_unitcell[mcell_index1]; - const ModuleBase::Vector3 r1 = gridt.get_ucell_coords(uc1); - const int it1 = ucell.iat2it[iat1]; - const int nw1 = ucell.atoms[it1].nw; - - for (int atom2 = atom1; atom2 < gridt.how_many_atoms[grid_index]; - atom2++) - { - const int mcell_index2 = bcell_start_index + atom2; - const int iat2 = gridt.which_atom[mcell_index2]; - const int uc2 = gridt.which_unitcell[mcell_index2]; - const ModuleBase::Vector3 r2 = gridt.get_ucell_coords(uc2); - const int offset = dm->find_matrix_offset(iat1, iat2, r1-r2); - if (offset == -1) - { - continue; - } - const int it2 = ucell.iat2it[iat2]; - const int nw2 = ucell.atoms[it2].nw; - - const int mat_A_idx = bcell_start_psir + atom2 * nwmax; - const int mat_C_idx = bcell_start_psir + atom1 * nwmax; - - mat_alpha[tid] = atom2 == atom1 ? 1 : 2; - mat_m[tid] = gridt.bxyz; - mat_n[tid] = nw1; - mat_k[tid] = nw2; - mat_lda[tid] = nwmax * na_grid; - mat_ldb[tid] = nw2; - mat_ldc[tid] = nwmax * na_grid; - mat_A[tid] = psir_ylm_g + mat_A_idx; - mat_B[tid] = dm_matrix_g + offset; - mat_C[tid] = psir_dm_g + mat_C_idx; - - if (mat_m[tid] > max_m) - { - max_m = mat_m[tid]; - } - - if (mat_n[tid] > max_n) - { - max_n = mat_n[tid]; - } - - tid++; - } - } - - // generate vec dot product tasks - std::vector vindex(gridt.bxyz); - Gint_Tools::get_vindex(gridt.bxyz, - gridt.bx, - gridt.by, - gridt.bz, - nczp, - gridt.start_ind[grid_index], - gridt.ncy * nczp, - vindex.data()); - for (int i = 0; i < gridt.bxyz; i++) - { - dot_product[dot_count] = rho_g + vindex[i]; - dot_count++; - } - } - atom_pair_num = tid; -} - -} // namespace GintKernel \ No newline at end of file diff --git a/source/source_lcao/module_gint/gtask_vl.cpp b/source/source_lcao/module_gint/gtask_vl.cpp deleted file mode 100644 index 026ed3ffab..0000000000 --- a/source/source_lcao/module_gint/gtask_vl.cpp +++ /dev/null @@ -1,154 +0,0 @@ -#include - -#include "gint_vl_gpu.h" -#include "source_base/ylm.h" -#include "source_lcao/module_gint/gint_tools.h" -#include "source_base/vector3.h" -namespace GintKernel -{ - -void gtask_vlocal(const Grid_Technique& gridt, - const UnitCell& ucell, - const int grid_index_ij, - const int nczp, - const double vfactor, - const double* vlocal_global_value, - int& atoms_per_z, - int* atoms_num_info, - uint8_t* atoms_type, - double* dr_part, - double* vldr3) -{ - atoms_per_z = 0; - for (int z_index = 0; z_index < gridt.nbzp; z_index++) - { - const int grid_index = grid_index_ij + z_index; - const int bcell_start_index = gridt.bcell_start[grid_index]; - const int na_grid = gridt.how_many_atoms[grid_index]; - atoms_num_info[2 * z_index] = na_grid; - atoms_num_info[2 * z_index + 1] = atoms_per_z; - for (int id = 0; id < na_grid; id++) - { - const int mcell_index = bcell_start_index + id; - const int imcell = gridt.which_bigcell[mcell_index]; - const int iat = gridt.which_atom[mcell_index]; - const int it_temp = ucell.iat2it[iat]; - - dr_part[atoms_per_z * 3] = gridt.meshball_positions[imcell][0] - - gridt.tau_in_bigcell[iat][0]; - dr_part[atoms_per_z * 3 + 1] = gridt.meshball_positions[imcell][1] - - gridt.tau_in_bigcell[iat][1]; - dr_part[atoms_per_z * 3 + 2] = gridt.meshball_positions[imcell][2] - - gridt.tau_in_bigcell[iat][2]; - atoms_type[atoms_per_z] = it_temp; - atoms_per_z++; - } - - const int start_ind_grid = gridt.start_ind[grid_index]; - int id = z_index * gridt.bxyz; - for (int bx_index = 0; bx_index < gridt.bx; bx_index++) - { - for (int by_index = 0; by_index < gridt.by; by_index++) - { - for (int bz_index = 0; bz_index < gridt.bz; bz_index++) - { - int vindex_global = bx_index * gridt.ncy * nczp - + by_index * nczp + bz_index - + start_ind_grid; - vldr3[id]= vlocal_global_value[vindex_global] * vfactor; - id++; - } - } - } - } -} - -void alloc_mult_vlocal(const hamilt::HContainer* hRGint, - const Grid_Technique& gridt, - const UnitCell& ucell, - const int grid_index_ij, - const int max_atom, - double* const psi, - double* const psi_vldr3, - double* const grid_vlocal_g, - int* mat_m, - int* mat_n, - int* mat_k, - int* mat_lda, - int* mat_ldb, - int* mat_ldc, - double** mat_A, - double** mat_B, - double** mat_C, - int& atom_pair_num, - int& max_m, - int& max_n) -{ - atom_pair_num = 0; - max_m = 0; - max_n = 0; - const int nwmax = ucell.nwmax; - for (int z_index = 0; z_index < gridt.nbzp; z_index++) - { - const int grid_index = grid_index_ij + z_index; - const int atom_num = gridt.how_many_atoms[grid_index]; - const int vldr3_index = z_index * max_atom * nwmax * gridt.bxyz; - const int bcell_start_index = gridt.bcell_start[grid_index]; - for (int atom1 = 0; atom1 < atom_num; atom1++) - { - const int iat1 = gridt.which_atom[bcell_start_index + atom1]; - const int uc1 = gridt.which_unitcell[bcell_start_index + atom1]; - const ModuleBase::Vector3 r1 = gridt.get_ucell_coords(uc1); - const int it1 = ucell.iat2it[iat1]; - - for (int atom2 = 0; atom2 < atom_num; atom2++) - { - const int iat2 = gridt.which_atom[bcell_start_index + atom2]; - const int uc2 = gridt.which_unitcell[bcell_start_index + atom2]; - const ModuleBase::Vector3 r2 = gridt.get_ucell_coords(uc2); - int offset = hRGint->find_matrix_offset(iat1, iat2, r1-r2); - if (offset == -1) - { - continue; - } - const int it2 = ucell.iat2it[iat2]; - - if (iat1 <= iat2) - { - const int atom_pair_nw - = ucell.atoms[it1].nw * ucell.atoms[it2].nw; - - const int calc_index1 = vldr3_index + atom1 * nwmax * gridt.bxyz; - const int calc_index2 = vldr3_index + atom2 * nwmax * gridt.bxyz; - - mat_A[atom_pair_num] - = psi + calc_index1; - mat_B[atom_pair_num] - = psi_vldr3 + calc_index2; - mat_C[atom_pair_num] - = grid_vlocal_g + offset; - - mat_lda[atom_pair_num] = gridt.bxyz; - mat_ldb[atom_pair_num] = gridt.bxyz; - mat_ldc[atom_pair_num] = ucell.atoms[it2].nw; - - mat_m[atom_pair_num] = ucell.atoms[it1].nw; - mat_n[atom_pair_num] = ucell.atoms[it2].nw; - mat_k[atom_pair_num] = gridt.bxyz; - - if (mat_m[atom_pair_num] > max_m) - { - max_m = mat_m[atom_pair_num]; - } - if (mat_n[atom_pair_num] > max_n) - { - max_n = mat_n[atom_pair_num]; - } - atom_pair_num++; - } - } - } - } -} - -} // namespace GintKernel \ No newline at end of file diff --git a/source/source_lcao/module_gint/init_orb.cpp b/source/source_lcao/module_gint/init_orb.cpp deleted file mode 100644 index 4ad04e08d6..0000000000 --- a/source/source_lcao/module_gint/init_orb.cpp +++ /dev/null @@ -1,62 +0,0 @@ -#include "gint_tools.h" -#include "source_base/memory.h" -#include "source_basis/module_ao/ORB_read.h" -#include "source_cell/unitcell.h" - -namespace Gint_Tools{ - -void init_orb(double& dr_uniform, - std::vector& rcuts, - UnitCell& ucell, - const LCAO_Orbitals& orb, - std::vector>& psi_u, - std::vector>& dpsi_u, - std::vector>& d2psi_u) -{ - //! set the grid parameters - dr_uniform=orb.dr_uniform; - - assert(dr_uniform>0.0); - - const int nwmax=ucell.nwmax; - const int ntype=ucell.ntype; - - assert(nwmax>0); - assert(ntype>0); - - rcuts=std::vector(ntype); - ModuleBase::Memory::record("rcuts", sizeof(double)*ntype*3); - - for(int it=0; it(1/dr_uniform * max_cut) + 10; - psi_u=std::vector>(ntype * nwmax); - dpsi_u=std::vector>(ntype * nwmax); - d2psi_u=std::vector>(ntype * nwmax); - ModuleBase::Memory::record("psi_u", sizeof(double)*nwmax*ntype*3); - - Atom* atomx = nullptr; - const Numerical_Orbital_Lm* pointer = nullptr; - - for (int i = 0; i < ntype; i++) - { - atomx = &ucell.atoms[i]; - for (int j = 0; j < nwmax; j++) - { - const int k=i*nwmax+j; - if (j < atomx->nw) - { - pointer = &orb.Phi[i].PhiLN(atomx->iw2l[j],atomx->iw2n[j]); - psi_u[k]=pointer->psi_uniform; - dpsi_u[k]=pointer->dpsi_uniform; - d2psi_u[k]=pointer->ddpsi_uniform; - } - } - } -}// End of init_orb() - -}// End of Gint_Tools diff --git a/source/source_lcao/module_gint/temp_gint/kernel/cuda_mem_wrapper.h b/source/source_lcao/module_gint/kernel/cuda_mem_wrapper.h similarity index 79% rename from source/source_lcao/module_gint/temp_gint/kernel/cuda_mem_wrapper.h rename to source/source_lcao/module_gint/kernel/cuda_mem_wrapper.h index 9b7ad27e83..0da5386553 100644 --- a/source/source_lcao/module_gint/temp_gint/kernel/cuda_mem_wrapper.h +++ b/source/source_lcao/module_gint/kernel/cuda_mem_wrapper.h @@ -1,7 +1,7 @@ #pragma once #include #include "source_base/tool_quit.h" -#include "gint_helper.cuh" +#include "source_base/module_device/device_check.h" template class CudaMemWrapper @@ -55,14 +55,14 @@ class CudaMemWrapper if (malloc_host) { - checkCuda(cudaMallocHost((void**)&host_ptr_, size_* sizeof(T))); + CHECK_CUDA(cudaMallocHost((void**)&host_ptr_, size_* sizeof(T))); memset(host_ptr_, 0, size_ * sizeof(T)); } else { host_ptr_ = nullptr; } - checkCuda(cudaMalloc((void**)&device_ptr_, size_ * sizeof(T))); - checkCuda(cudaMemset(device_ptr_, 0, size_ * sizeof(T))); + CHECK_CUDA(cudaMalloc((void**)&device_ptr_, size_ * sizeof(T))); + CHECK_CUDA(cudaMemset(device_ptr_, 0, size_ * sizeof(T))); } ~CudaMemWrapper() @@ -74,7 +74,7 @@ class CudaMemWrapper { if (host_ptr_ == nullptr) { ModuleBase::WARNING_QUIT("cuda_mem_wrapper", "Host pointer is null, cannot copy to device."); } - checkCuda(cudaMemcpy(device_ptr_, host_ptr_, size * sizeof(T), cudaMemcpyHostToDevice)); + CHECK_CUDA(cudaMemcpy(device_ptr_, host_ptr_, size * sizeof(T), cudaMemcpyHostToDevice)); } void copy_host_to_device_sync() @@ -86,7 +86,7 @@ class CudaMemWrapper { if (host_ptr_ == nullptr) { ModuleBase::WARNING_QUIT("cuda_mem_wrapper", "Host pointer is null, cannot copy to device."); } - checkCuda(cudaMemcpyAsync(device_ptr_, host_ptr_, size * sizeof(T), cudaMemcpyHostToDevice, stream_)); + CHECK_CUDA(cudaMemcpyAsync(device_ptr_, host_ptr_, size * sizeof(T), cudaMemcpyHostToDevice, stream_)); } void copy_host_to_device_async() @@ -98,7 +98,7 @@ class CudaMemWrapper { if (host_ptr_ == nullptr) { ModuleBase::WARNING_QUIT("cuda_mem_wrapper", "Host pointer is null, cannot copy to host."); } - checkCuda(cudaMemcpy(host_ptr_, device_ptr_, size * sizeof(T), cudaMemcpyDeviceToHost)); + CHECK_CUDA(cudaMemcpy(host_ptr_, device_ptr_, size * sizeof(T), cudaMemcpyDeviceToHost)); } void copy_device_to_host_sync() @@ -110,7 +110,7 @@ class CudaMemWrapper { if (host_ptr_ == nullptr) { ModuleBase::WARNING_QUIT("cuda_mem_wrapper", "Host pointer is null, cannot copy to host."); } - checkCuda(cudaMemcpyAsync(host_ptr_, device_ptr_, size * sizeof(T), cudaMemcpyDeviceToHost, stream_)); + CHECK_CUDA(cudaMemcpyAsync(host_ptr_, device_ptr_, size * sizeof(T), cudaMemcpyDeviceToHost, stream_)); } void copy_device_to_host_async() @@ -120,7 +120,7 @@ class CudaMemWrapper void memset_device_sync(const size_t size, const int value = 0) { - checkCuda(cudaMemset(device_ptr_, value, size * sizeof(T))); + CHECK_CUDA(cudaMemset(device_ptr_, value, size * sizeof(T))); } void memset_device_sync(const int value = 0) @@ -130,7 +130,7 @@ class CudaMemWrapper void memset_device_async(const size_t size, const int value = 0) { - checkCuda(cudaMemsetAsync(device_ptr_, value, size * sizeof(T), stream_)); + CHECK_CUDA(cudaMemsetAsync(device_ptr_, value, size * sizeof(T), stream_)); } void memset_device_async(const int value = 0) @@ -142,7 +142,7 @@ class CudaMemWrapper { if (host_ptr_ == nullptr) { ModuleBase::WARNING_QUIT("cuda_mem_wrapper", "Host pointer is null, cannot memset host."); } - checkCuda(cudaMemset(host_ptr_, value, size * sizeof(T))); + CHECK_CUDA(cudaMemset(host_ptr_, value, size * sizeof(T))); } void memset_host(const int value = 0) @@ -152,8 +152,8 @@ class CudaMemWrapper void free() { - checkCuda(cudaFree(device_ptr_)); - checkCuda(cudaFreeHost(host_ptr_)); + CHECK_CUDA(cudaFree(device_ptr_)); + CHECK_CUDA(cudaFreeHost(host_ptr_)); } T* get_device_ptr() { return device_ptr_; } diff --git a/source/source_lcao/module_gint/temp_gint/kernel/dgemm_vbatch.cu b/source/source_lcao/module_gint/kernel/dgemm_vbatch.cu similarity index 96% rename from source/source_lcao/module_gint/temp_gint/kernel/dgemm_vbatch.cu rename to source/source_lcao/module_gint/kernel/dgemm_vbatch.cu index b35e0669b6..f883f2ea6e 100644 --- a/source/source_lcao/module_gint/temp_gint/kernel/dgemm_vbatch.cu +++ b/source/source_lcao/module_gint/kernel/dgemm_vbatch.cu @@ -1,6 +1,7 @@ #include "gemm_tn_vbatch.cuh" #include "gemm_nn_vbatch.cuh" #include "dgemm_vbatch.h" +#include "source_base/module_device/device.h" void dgemm_nn_vbatch( int max_m, int max_n, int max_k, diff --git a/source/source_lcao/module_gint/temp_gint/kernel/dgemm_vbatch.h b/source/source_lcao/module_gint/kernel/dgemm_vbatch.h similarity index 100% rename from source/source_lcao/module_gint/temp_gint/kernel/dgemm_vbatch.h rename to source/source_lcao/module_gint/kernel/dgemm_vbatch.h diff --git a/source/source_lcao/module_gint/temp_gint/kernel/gemm_nn_vbatch.cuh b/source/source_lcao/module_gint/kernel/gemm_nn_vbatch.cuh similarity index 98% rename from source/source_lcao/module_gint/temp_gint/kernel/gemm_nn_vbatch.cuh rename to source/source_lcao/module_gint/kernel/gemm_nn_vbatch.cuh index 5ad934e305..6af0943769 100644 --- a/source/source_lcao/module_gint/temp_gint/kernel/gemm_nn_vbatch.cuh +++ b/source/source_lcao/module_gint/kernel/gemm_nn_vbatch.cuh @@ -8,7 +8,9 @@ #include "gint_helper.cuh" #include - +#include "source_base/module_device/device.h" +#include "source_base/module_device/device_check.h" +#include "source_base/module_device/kernel_compat.h" #define sA(i, j) sA[(j)*slda + (i)] #define sB(i, j) sB[(j)*sldb + (i)] @@ -420,8 +422,8 @@ void vbatched_gemm_nn_impl(int max_m, global_A_array + i, global_lda + i, global_C_array + i, global_ldc + i, alpha_tmp); - checkCudaLastError(); + CHECK_LAST_CUDA_ERROR("kernel launch"); } } -#endif // GEMM_VBATCH_CUH \ No newline at end of file +#endif // GEMM_VBATCH_CUH diff --git a/source/source_lcao/module_gint/temp_gint/kernel/gemm_tn_vbatch.cuh b/source/source_lcao/module_gint/kernel/gemm_tn_vbatch.cuh similarity index 98% rename from source/source_lcao/module_gint/temp_gint/kernel/gemm_tn_vbatch.cuh rename to source/source_lcao/module_gint/kernel/gemm_tn_vbatch.cuh index 701e93e81f..7a654cedce 100644 --- a/source/source_lcao/module_gint/temp_gint/kernel/gemm_tn_vbatch.cuh +++ b/source/source_lcao/module_gint/kernel/gemm_tn_vbatch.cuh @@ -8,7 +8,9 @@ #include "gint_helper.cuh" #include - +#include "source_base/module_device/device.h" +#include "source_base/module_device/device_check.h" +#include "source_base/module_device/kernel_compat.h" #define sA(i, j) sA[(j)*slda + (i)] #define sB(i, j) sB[(j)*sldb + (i)] @@ -445,8 +447,8 @@ void vbatched_gemm_tn_impl(int max_m, global_A_array + i, global_lda + i, global_C_array + i, global_ldc + i, alpha_tmp); - checkCudaLastError(); + CHECK_LAST_CUDA_ERROR("kernel launch"); } } -#endif // GEMM_TN_VBATCH_CUH \ No newline at end of file +#endif // GEMM_TN_VBATCH_CUH diff --git a/source/source_lcao/module_gint/kernel/gint_gpu_vars.cpp b/source/source_lcao/module_gint/kernel/gint_gpu_vars.cpp new file mode 100644 index 0000000000..1b893b36c4 --- /dev/null +++ b/source/source_lcao/module_gint/kernel/gint_gpu_vars.cpp @@ -0,0 +1,120 @@ +#include "gint_gpu_vars.h" +#include "source_base/module_device/device.h" +#include "source_base/module_device/device_check.h" + +namespace ModuleGint +{ + +GintGpuVars::GintGpuVars(std::shared_ptr biggrid_info, + const UnitCell& ucell, + const Numerical_Orbital* Phi) +{ +// GPU device is already bound by DeviceContext::init() in read_input.cpp +// Just get the device_id from DeviceContext for use in destructor +#ifdef __MPI + dev_id_ = base_device::DeviceContext::instance().get_device_id(); +#endif + + const int ntype = ucell.ntype; + std::vector atom_nw_h(ntype); + std::vector ucell_atom_nwl_h(ntype); + for (int i = 0; i < ntype; i++) + { + atom_nw_h[i] = ucell.atoms[i].nw; + ucell_atom_nwl_h[i] = ucell.atoms[i].nwl; + } + CHECK_CUDA(cudaMalloc((void**)&atom_nw_d, sizeof(int) * ntype)); + CHECK_CUDA(cudaMemcpy(atom_nw_d, atom_nw_h.data(), sizeof(int) * ntype, cudaMemcpyHostToDevice)); + CHECK_CUDA(cudaMalloc((void**)&ucell_atom_nwl_d, sizeof(int) * ntype)); + CHECK_CUDA(cudaMemcpy(ucell_atom_nwl_d, ucell_atom_nwl_h.data(), sizeof(int) * ntype, cudaMemcpyHostToDevice)); + + dr_uniform = Phi[0].PhiLN(0, 0).dr_uniform; + double max_rcut = 0; + std::vector rcut_h(ntype); + for (int i = 0; i < ntype; i++) + { + rcut_h[i] = Phi[i].getRcut(); + if (rcut_h[i] > max_rcut) + { + max_rcut = rcut_h[i]; + } + } + CHECK_CUDA(cudaMalloc((void**)&rcut_d, sizeof(double) * ntype)); + CHECK_CUDA(cudaMemcpy(rcut_d, rcut_h.data(), sizeof(double) * ntype, cudaMemcpyHostToDevice)); + nr_max = static_cast(1 / dr_uniform * max_rcut) + 10; + + nwmax = ucell.nwmax; + std::vector psi_u_h(ntype * nwmax * nr_max); + std::vector dpsi_u_h(ntype * nwmax * nr_max); + std::vector d2psi_u_h(ntype * nwmax * nr_max); + // std::vector cannot use data(), so std::vector is used instead + std::vector atom_iw2_new_h(ntype * nwmax); + std::vector atom_iw2_ylm_h(ntype * nwmax); + std::vector atom_iw2_l_h(ntype * nwmax); + for (int i = 0; i < ntype; i++) + { + Atom* atomx = &ucell.atoms[i]; + for (int j = 0; j < atomx->nw; j++) + { + atom_iw2_new_h[i * nwmax + j] = atomx->iw2_new[j]; + atom_iw2_ylm_h[i * nwmax + j] = atomx->iw2_ylm[j]; + atom_iw2_l_h[i * nwmax + j] = atomx->iw2l[j]; + const auto psi_ptr = &Phi[i].PhiLN(atomx->iw2l[j], atomx->iw2n[j]); + const int psi_size = psi_ptr->psi_uniform.size(); + int idx = i * nwmax * nr_max + j * nr_max; + for (int k = 0; k < psi_size; k++) + { + psi_u_h[idx + k] = psi_ptr->psi_uniform[k]; + dpsi_u_h[idx + k] = psi_ptr->dpsi_uniform[k]; + d2psi_u_h[idx + k] = psi_ptr->ddpsi_uniform[k]; + } + } + } + + CHECK_CUDA(cudaMalloc((void**)&atom_iw2_new_d, sizeof(bool) * ntype * nwmax)); + CHECK_CUDA(cudaMemcpy(atom_iw2_new_d, atom_iw2_new_h.data(), sizeof(bool) * ntype * nwmax, cudaMemcpyHostToDevice)); + CHECK_CUDA(cudaMalloc((void**)&atom_iw2_ylm_d, sizeof(int) * ntype * nwmax)); + CHECK_CUDA(cudaMemcpy(atom_iw2_ylm_d, atom_iw2_ylm_h.data(), sizeof(int) * ntype * nwmax, cudaMemcpyHostToDevice)); + CHECK_CUDA(cudaMalloc((void**)&atom_iw2_l_d, sizeof(int) * ntype * nwmax)); + CHECK_CUDA(cudaMemcpy(atom_iw2_l_d, atom_iw2_l_h.data(), sizeof(int) * ntype * nwmax, cudaMemcpyHostToDevice)); + CHECK_CUDA(cudaMalloc((void**)&psi_u_d, sizeof(double) * ntype * nwmax * nr_max)); + CHECK_CUDA(cudaMemcpy(psi_u_d, psi_u_h.data(), sizeof(double) * ntype * nwmax * nr_max, cudaMemcpyHostToDevice)); + CHECK_CUDA(cudaMalloc((void**)&dpsi_u_d, sizeof(double) * ntype * nwmax * nr_max)); + CHECK_CUDA(cudaMemcpy(dpsi_u_d, dpsi_u_h.data(), sizeof(double) * ntype * nwmax * nr_max, cudaMemcpyHostToDevice)); + CHECK_CUDA(cudaMalloc((void**)&d2psi_u_d, sizeof(double) * ntype * nwmax * nr_max)); + CHECK_CUDA(cudaMemcpy(d2psi_u_d, d2psi_u_h.data(), sizeof(double) * ntype * nwmax * nr_max, cudaMemcpyHostToDevice)); + + const int mgrid_num = biggrid_info->get_mgrids_num(); + std::vector mgrids_pos_h(mgrid_num); + for(int i = 0; i < mgrid_num; i++) + { + mgrids_pos_h[i].x = biggrid_info->get_mgrid_coord(i).x; + mgrids_pos_h[i].y = biggrid_info->get_mgrid_coord(i).y; + mgrids_pos_h[i].z = biggrid_info->get_mgrid_coord(i).z; + } + CHECK_CUDA(cudaMalloc((void**)&mgrids_pos_d, sizeof(double3) * mgrid_num)); + CHECK_CUDA(cudaMemcpy(mgrids_pos_d, mgrids_pos_h.data(), sizeof(double3) * mgrid_num, cudaMemcpyHostToDevice)); + + CHECK_CUDA(cudaMalloc((void**)&iat2it_d, sizeof(int) * ucell.nat)); + CHECK_CUDA(cudaMemcpy(iat2it_d, ucell.iat2it, sizeof(int) * ucell.nat, cudaMemcpyHostToDevice)); +} + +GintGpuVars::~GintGpuVars() +{ +#ifdef __MPI + CHECK_CUDA(cudaSetDevice(dev_id_)); +#endif + CHECK_CUDA(cudaFree(rcut_d)); + CHECK_CUDA(cudaFree(atom_nw_d)); + CHECK_CUDA(cudaFree(ucell_atom_nwl_d)); + CHECK_CUDA(cudaFree(atom_iw2_new_d)); + CHECK_CUDA(cudaFree(atom_iw2_ylm_d)); + CHECK_CUDA(cudaFree(atom_iw2_l_d)); + CHECK_CUDA(cudaFree(psi_u_d)); + CHECK_CUDA(cudaFree(dpsi_u_d)); + CHECK_CUDA(cudaFree(d2psi_u_d)); + CHECK_CUDA(cudaFree(mgrids_pos_d)); + CHECK_CUDA(cudaFree(iat2it_d)); +} + +} \ No newline at end of file diff --git a/source/source_lcao/module_gint/temp_gint/kernel/gint_gpu_vars.h b/source/source_lcao/module_gint/kernel/gint_gpu_vars.h similarity index 77% rename from source/source_lcao/module_gint/temp_gint/kernel/gint_gpu_vars.h rename to source/source_lcao/module_gint/kernel/gint_gpu_vars.h index 07139c82db..e37b63ffdb 100644 --- a/source/source_lcao/module_gint/temp_gint/kernel/gint_gpu_vars.h +++ b/source/source_lcao/module_gint/kernel/gint_gpu_vars.h @@ -5,9 +5,8 @@ #include "source_base/ylm.h" #include "source_cell/unitcell.h" #include "source_cell/atom_spec.h" -#include "source_lcao/module_gint/temp_gint/biggrid_info.h" +#include "source_lcao/module_gint/biggrid_info.h" #include "gint_helper.cuh" -#include "source_lcao/module_gint/kernels/cuda/gemm_selector.cuh" namespace ModuleGint { @@ -23,8 +22,6 @@ class GintGpuVars int nwmax; double dr_uniform; double nr_max; - // ylmcoef_d is __constant__ memory, no need to cudaFree - double* ylmcoef_d = nullptr; double* rcut_d = nullptr; int* atom_nw_d = nullptr; int* ucell_atom_nwl_d = nullptr; @@ -39,7 +36,6 @@ class GintGpuVars // the index of gpu device int dev_id_ = 0; - matrix_multiple_func_type fastest_matrix_mul; }; diff --git a/source/source_lcao/module_gint/kernel/gint_helper.cuh b/source/source_lcao/module_gint/kernel/gint_helper.cuh new file mode 100644 index 0000000000..eae5953654 --- /dev/null +++ b/source/source_lcao/module_gint/kernel/gint_helper.cuh @@ -0,0 +1,45 @@ +#pragma once +#include + +// if exponent is an integer between 0 and 5 (the most common cases in gint) and +// and exp is a variable that cannot be determined at compile time (which means the compiler cannot optimize the code), +// pow_int is much faster than std::pow +template +__forceinline__ __device__ T pow_int(const T base, const int exp) +{ + switch (exp) + { + case 0: + return 1.0; + case 1: + return base; + case 2: + return base * base; + case 3: + return base * base * base; + case 4: + return base * base * base * base; + case 5: + return base * base * base * base * base; + default: + double result = std::pow(base, exp); + return result; + } +} + +template +__forceinline__ __device__ T warpReduceSum(T val) +{ + val += __shfl_xor_sync(0xffffffff, val, 16, 32); + val += __shfl_xor_sync(0xffffffff, val, 8, 32); + val += __shfl_xor_sync(0xffffffff, val, 4, 32); + val += __shfl_xor_sync(0xffffffff, val, 2, 32); + val += __shfl_xor_sync(0xffffffff, val, 1, 32); + return val; +} + +inline int ceil_div(const int a, const int b) +{ + return a / b + (a % b != 0 && (a ^ b) > 0); +} + diff --git a/source/source_lcao/module_gint/temp_gint/kernel/phi_operator_gpu.cu b/source/source_lcao/module_gint/kernel/phi_operator_gpu.cu similarity index 92% rename from source/source_lcao/module_gint/temp_gint/kernel/phi_operator_gpu.cu rename to source/source_lcao/module_gint/kernel/phi_operator_gpu.cu index edc07959d4..2ee09938f9 100644 --- a/source/source_lcao/module_gint/temp_gint/kernel/phi_operator_gpu.cu +++ b/source/source_lcao/module_gint/kernel/phi_operator_gpu.cu @@ -2,6 +2,7 @@ #include "phi_operator_kernel.cuh" #include "dgemm_vbatch.h" #include +#include "source_base/module_device/device_check.h" namespace ModuleGint { @@ -27,12 +28,12 @@ gemm_B_(BatchBigGrid::get_max_atom_pairs_num(), stream_, true), gemm_C_(BatchBigGrid::get_max_atom_pairs_num(), stream_, true), gemm_alpha_(BatchBigGrid::get_max_atom_pairs_num(), stream_, true) { - checkCuda(cudaEventCreateWithFlags(&event_, cudaEventDisableTiming)); + CHECK_CUDA(cudaEventCreateWithFlags(&event_, cudaEventDisableTiming)); } PhiOperatorGpu::~PhiOperatorGpu() { - checkCuda(cudaEventDestroy(event_)); + CHECK_CUDA(cudaEventDestroy(event_)); } void PhiOperatorGpu::set_bgrid_batch(std::shared_ptr bgrid_batch) @@ -51,7 +52,7 @@ void PhiOperatorGpu::set_bgrid_batch(std::shared_ptr bgrid_batch) phi_len_ = 0; int phi_start = 0; std::vector mgrids_local_idx; - checkCuda(cudaEventSynchronize(event_)); + CHECK_CUDA(cudaEventSynchronize(event_)); for (const auto& bgrid : bgrid_batch->get_bgrids()) { atoms_num_info_h[i] = make_int2(bgrid->get_atoms_num(), atoms_accum); @@ -83,12 +84,12 @@ void PhiOperatorGpu::set_bgrid_batch(std::shared_ptr bgrid_batch) atoms_bgrids_rcoords_.copy_host_to_device_async(bgrid_batch->get_atoms_num()); atoms_phi_start_.copy_host_to_device_async(bgrid_batch->get_atoms_num()); mgrids_local_idx_batch_.copy_host_to_device_async(bgrid_batch->get_batch_size() * mgrids_num_); - checkCuda(cudaEventRecord(event_, stream_)); + CHECK_CUDA(cudaEventRecord(event_, stream_)); } void PhiOperatorGpu::set_phi(double* phi_d) const { - // checkCuda(cudaMemsetAsync(phi_d, 0, phi_len_ * sizeof(double), stream_)); + // CHECK_CUDA(cudaMemsetAsync(phi_d, 0, phi_len_ * sizeof(double), stream_)); dim3 grid_dim(mgrids_num_, bgrid_batch_->get_batch_size()); dim3 threads_per_block(64); set_phi_kernel<<>>( @@ -96,7 +97,6 @@ void PhiOperatorGpu::set_phi(double* phi_d) const mgrids_num_, gint_gpu_vars_->nr_max, gint_gpu_vars_->dr_uniform, - gint_gpu_vars_->ylmcoef_d, gint_gpu_vars_->ucell_atom_nwl_d, gint_gpu_vars_->atom_iw2_new_d, gint_gpu_vars_->atom_iw2_ylm_d, @@ -112,7 +112,7 @@ void PhiOperatorGpu::set_phi(double* phi_d) const atoms_phi_start_.get_device_ptr(), bgrids_phi_len_.get_device_ptr(), phi_d); - checkCudaLastError(); + CHECK_LAST_CUDA_ERROR("kernel launch"); } void PhiOperatorGpu::set_phi_dphi(double* phi_d, double* dphi_x_d, double* dphi_y_d, double* dphi_z_d) const @@ -124,7 +124,6 @@ void PhiOperatorGpu::set_phi_dphi(double* phi_d, double* dphi_x_d, double* dphi_ mgrids_num_, gint_gpu_vars_->nr_max, gint_gpu_vars_->dr_uniform, - gint_gpu_vars_->ylmcoef_d, gint_gpu_vars_->ucell_atom_nwl_d, gint_gpu_vars_->atom_iw2_new_d, gint_gpu_vars_->atom_iw2_ylm_d, @@ -144,7 +143,7 @@ void PhiOperatorGpu::set_phi_dphi(double* phi_d, double* dphi_x_d, double* dphi_ dphi_x_d, dphi_y_d, dphi_z_d); - checkCudaLastError(); + CHECK_LAST_CUDA_ERROR("kernel launch"); } void PhiOperatorGpu::set_ddphi(double* ddphi_xx_d, double* ddphi_xy_d, double* ddphi_xz_d, @@ -152,12 +151,12 @@ void PhiOperatorGpu::set_ddphi(double* ddphi_xx_d, double* ddphi_xy_d, double* d { // Since the underlying implementation of `set_ddphi` uses `ddphi +=` instead of `ddphi =`, // the ddphi array needs to be zeroed out at the beginning of the function. - checkCuda(cudaMemsetAsync(ddphi_xx_d, 0, phi_len_ * sizeof(double), stream_)); - checkCuda(cudaMemsetAsync(ddphi_xy_d, 0, phi_len_ * sizeof(double), stream_)); - checkCuda(cudaMemsetAsync(ddphi_xz_d, 0, phi_len_ * sizeof(double), stream_)); - checkCuda(cudaMemsetAsync(ddphi_yy_d, 0, phi_len_ * sizeof(double), stream_)); - checkCuda(cudaMemsetAsync(ddphi_yz_d, 0, phi_len_ * sizeof(double), stream_)); - checkCuda(cudaMemsetAsync(ddphi_zz_d, 0, phi_len_ * sizeof(double), stream_)); + CHECK_CUDA(cudaMemsetAsync(ddphi_xx_d, 0, phi_len_ * sizeof(double), stream_)); + CHECK_CUDA(cudaMemsetAsync(ddphi_xy_d, 0, phi_len_ * sizeof(double), stream_)); + CHECK_CUDA(cudaMemsetAsync(ddphi_xz_d, 0, phi_len_ * sizeof(double), stream_)); + CHECK_CUDA(cudaMemsetAsync(ddphi_yy_d, 0, phi_len_ * sizeof(double), stream_)); + CHECK_CUDA(cudaMemsetAsync(ddphi_yz_d, 0, phi_len_ * sizeof(double), stream_)); + CHECK_CUDA(cudaMemsetAsync(ddphi_zz_d, 0, phi_len_ * sizeof(double), stream_)); dim3 grid_dim(mgrids_num_, bgrid_batch_->get_batch_size()); dim3 threads_per_block(64); set_ddphi_kernel<<>>( @@ -165,7 +164,6 @@ void PhiOperatorGpu::set_ddphi(double* ddphi_xx_d, double* ddphi_xy_d, double* d mgrids_num_, gint_gpu_vars_->nr_max, gint_gpu_vars_->dr_uniform, - gint_gpu_vars_->ylmcoef_d, gint_gpu_vars_->ucell_atom_nwl_d, gint_gpu_vars_->atom_iw2_new_d, gint_gpu_vars_->atom_iw2_ylm_d, @@ -187,7 +185,7 @@ void PhiOperatorGpu::set_ddphi(double* ddphi_xx_d, double* ddphi_xy_d, double* d ddphi_yy_d, ddphi_yz_d, ddphi_zz_d); - checkCudaLastError(); + CHECK_LAST_CUDA_ERROR("kernel launch"); } void PhiOperatorGpu::phi_mul_vldr3( @@ -207,7 +205,7 @@ void PhiOperatorGpu::phi_mul_vldr3( bgrids_phi_len_.get_device_ptr(), bgrids_phi_start_.get_device_ptr(), result_d); - checkCudaLastError(); + CHECK_LAST_CUDA_ERROR("kernel launch"); } void PhiOperatorGpu::phi_mul_phi( @@ -221,7 +219,7 @@ void PhiOperatorGpu::phi_mul_phi( int max_m = 0; int max_n = 0; int max_k = mgrids_num_; - checkCuda(cudaEventSynchronize(event_)); + CHECK_CUDA(cudaEventSynchronize(event_)); for (int i = 0; i < bgrid_batch_->get_batch_size(); i++) { auto bgrid = bgrid_batch_->get_bgrids()[i]; @@ -278,7 +276,7 @@ void PhiOperatorGpu::phi_mul_phi( gemm_m_.copy_host_to_device_async(ap_num); gemm_n_.copy_host_to_device_async(ap_num); gemm_k_.copy_host_to_device_async(ap_num); - checkCuda(cudaEventRecord(event_, stream_)); + CHECK_CUDA(cudaEventRecord(event_, stream_)); dgemm_tn_vbatch(max_m, max_n, @@ -304,13 +302,13 @@ void PhiOperatorGpu::phi_mul_dm( const bool is_symm, double* phi_dm_d) { - checkCuda(cudaMemsetAsync(phi_dm_d, 0, phi_len_ * sizeof(double), stream_)); + CHECK_CUDA(cudaMemsetAsync(phi_dm_d, 0, phi_len_ * sizeof(double), stream_)); // ap_num means number of atom pairs int ap_num = 0; int max_m = mgrids_num_; int max_n = 0; int max_k = 0; - checkCuda(cudaEventSynchronize(event_)); + CHECK_CUDA(cudaEventSynchronize(event_)); for (int i = 0; i < bgrid_batch_->get_batch_size(); i++) { auto bgrid = bgrid_batch_->get_bgrids()[i]; @@ -371,7 +369,7 @@ void PhiOperatorGpu::phi_mul_dm( // so we don't need to copy it to device gemm_alpha_.copy_host_to_device_async(ap_num); } - checkCuda(cudaEventRecord(event_, stream_)); + CHECK_CUDA(cudaEventRecord(event_, stream_)); auto alpha_ptr = is_symm ? gemm_alpha_.get_device_ptr() : nullptr; dgemm_nn_vbatch(max_m, @@ -406,7 +404,7 @@ void PhiOperatorGpu::phi_dot_phi( bgrids_phi_len_.get_device_ptr(), bgrids_phi_start_.get_device_ptr(), rho_d); - checkCudaLastError(); + CHECK_LAST_CUDA_ERROR("kernel launch"); } void PhiOperatorGpu::phi_dot_dphi( @@ -432,7 +430,7 @@ void PhiOperatorGpu::phi_dot_dphi( gint_gpu_vars_->iat2it_d, gint_gpu_vars_->atom_nw_d, fvl_d); - checkCudaLastError(); + CHECK_LAST_CUDA_ERROR("kernel launch"); } void PhiOperatorGpu::phi_dot_dphi_r( @@ -460,7 +458,7 @@ void PhiOperatorGpu::phi_dot_dphi_r( gint_gpu_vars_->iat2it_d, gint_gpu_vars_->atom_nw_d, svl_d); - checkCudaLastError(); + CHECK_LAST_CUDA_ERROR("kernel launch"); } } \ No newline at end of file diff --git a/source/source_lcao/module_gint/temp_gint/kernel/phi_operator_gpu.h b/source/source_lcao/module_gint/kernel/phi_operator_gpu.h similarity index 98% rename from source/source_lcao/module_gint/temp_gint/kernel/phi_operator_gpu.h rename to source/source_lcao/module_gint/kernel/phi_operator_gpu.h index 897218a8dd..27568e5ec9 100644 --- a/source/source_lcao/module_gint/temp_gint/kernel/phi_operator_gpu.h +++ b/source/source_lcao/module_gint/kernel/phi_operator_gpu.h @@ -2,7 +2,7 @@ #include #include -#include "source_lcao/module_gint/temp_gint/batch_biggrid.h" +#include "source_lcao/module_gint/batch_biggrid.h" #include "gint_helper.cuh" #include "gint_gpu_vars.h" #include "cuda_mem_wrapper.h" diff --git a/source/source_lcao/module_gint/temp_gint/kernel/phi_operator_kernel.cu b/source/source_lcao/module_gint/kernel/phi_operator_kernel.cu similarity index 98% rename from source/source_lcao/module_gint/temp_gint/kernel/phi_operator_kernel.cu rename to source/source_lcao/module_gint/kernel/phi_operator_kernel.cu index 5db767f501..3e7a130a5b 100644 --- a/source/source_lcao/module_gint/temp_gint/kernel/phi_operator_kernel.cu +++ b/source/source_lcao/module_gint/kernel/phi_operator_kernel.cu @@ -1,6 +1,8 @@ #include "phi_operator_kernel.cuh" #include "gint_helper.cuh" #include "sph.cuh" +#include "source_base/module_device/device.h" +#include "source_base/module_device/kernel_compat.h" namespace ModuleGint { @@ -10,7 +12,6 @@ __global__ void set_phi_kernel( const int mgrids_num, const int nrmax, const double dr_uniform, - const double* __restrict__ ylmcoef, const int* __restrict__ ucell_atom_nwl, const bool* __restrict__ atom_iw2_new, const int* __restrict__ atom_iw2_ylm, @@ -48,7 +49,7 @@ __global__ void set_phi_kernel( // since nwl is less or equal than 5, the size of ylma is (5+1)^2 double ylma[36]; const int nwl = ucell_atom_nwl[atom_type]; - sph_harm(nwl, ylmcoef, coord.x/dist, coord.y/dist, coord.z/dist, ylma); + sph_harm(nwl, coord.x/dist, coord.y/dist, coord.z/dist, ylma); const double pos = dist / dr_uniform; const int ip = static_cast(pos); @@ -94,7 +95,6 @@ __global__ void set_phi_dphi_kernel( const int mgrids_num, const int nrmax, const double dr_uniform, - const double* __restrict__ ylmcoef, const int* __restrict__ ucell_atom_nwl, const bool* __restrict__ atom_iw2_new, const int* __restrict__ atom_iw2_ylm, @@ -138,7 +138,7 @@ __global__ void set_phi_dphi_kernel( double rly[36]; double grly[36 * 3]; const int nwl = ucell_atom_nwl[atom_type]; - grad_rl_sph_harm(nwl, ylmcoef, coord.x, coord.y, coord.z, rly, grly); + grad_rl_sph_harm(nwl, coord.x, coord.y, coord.z, rly, grly); // interpolation const double pos = dist / dr_uniform; @@ -207,7 +207,6 @@ __global__ void set_ddphi_kernel( const int mgrids_num, const int nrmax, const double dr_uniform, - const double* __restrict__ ylmcoef, const int* __restrict__ ucell_atom_nwl, const bool* __restrict__ atom_iw2_new, const int* __restrict__ atom_iw2_ylm, @@ -259,7 +258,7 @@ __global__ void set_ddphi_kernel( double rly[36]; double grly[36 * 3]; const int nwl = ucell_atom_nwl[atom_type]; - grad_rl_sph_harm(nwl, ylmcoef, coord[0], coord[1], coord[2], rly, grly); + grad_rl_sph_harm(nwl, coord[0], coord[1], coord[2], rly, grly); // interpolation const double pos = dist / dr_uniform; @@ -577,4 +576,4 @@ __global__ void phi_dot_dphi_r_kernel( } } -} \ No newline at end of file +} diff --git a/source/source_lcao/module_gint/temp_gint/kernel/phi_operator_kernel.cuh b/source/source_lcao/module_gint/kernel/phi_operator_kernel.cuh similarity index 97% rename from source/source_lcao/module_gint/temp_gint/kernel/phi_operator_kernel.cuh rename to source/source_lcao/module_gint/kernel/phi_operator_kernel.cuh index 4d32475542..091f64456e 100644 --- a/source/source_lcao/module_gint/temp_gint/kernel/phi_operator_kernel.cuh +++ b/source/source_lcao/module_gint/kernel/phi_operator_kernel.cuh @@ -10,7 +10,6 @@ __global__ void set_phi_kernel( const int mgrids_num, const int nrmax, const double dr_uniform, - const double* __restrict__ ylmcoef, const int* __restrict__ ucell_atom_nwl, const bool* __restrict__ atom_iw2_new, const int* __restrict__ atom_iw2_ylm, @@ -32,7 +31,6 @@ __global__ void set_phi_dphi_kernel( const int mgrids_num, const int nrmax, const double dr_uniform, - const double* __restrict__ ylmcoef, const int* __restrict__ ucell_atom_nwl, const bool* __restrict__ atom_iw2_new, const int* __restrict__ atom_iw2_ylm, @@ -58,7 +56,6 @@ __global__ void set_ddphi_kernel( const int mgrids_num, const int nrmax, const double dr_uniform, - const double* __restrict__ ylmcoef, const int* __restrict__ ucell_atom_nwl, const bool* __restrict__ atom_iw2_new, const int* __restrict__ atom_iw2_ylm, diff --git a/source/source_lcao/module_gint/kernel/set_const_mem.cu b/source/source_lcao/module_gint/kernel/set_const_mem.cu new file mode 100644 index 0000000000..0b627948f1 --- /dev/null +++ b/source/source_lcao/module_gint/kernel/set_const_mem.cu @@ -0,0 +1,13 @@ +#include "set_const_mem.cuh" +#include "source_base/module_device/device_check.h" + +__constant__ double ylmcoe_d[100]; + +namespace ModuleGint +{ + __host__ void set_ylmcoe_d(const double* ylmcoe_h, double** ylmcoe_d_addr) + { + CHECK_CUDA(cudaMemcpyToSymbol(ylmcoe_d, ylmcoe_h, sizeof(double) * 100)); + CHECK_CUDA(cudaGetSymbolAddress((void**)ylmcoe_d_addr, ylmcoe_d)); + } +} \ No newline at end of file diff --git a/source/source_lcao/module_gint/temp_gint/kernel/set_const_mem.cuh b/source/source_lcao/module_gint/kernel/set_const_mem.cuh similarity index 100% rename from source/source_lcao/module_gint/temp_gint/kernel/set_const_mem.cuh rename to source/source_lcao/module_gint/kernel/set_const_mem.cuh diff --git a/source/source_lcao/module_gint/kernel/sph.cuh b/source/source_lcao/module_gint/kernel/sph.cuh new file mode 100644 index 0000000000..bda5c286d7 --- /dev/null +++ b/source/source_lcao/module_gint/kernel/sph.cuh @@ -0,0 +1,10 @@ +#pragma once + +#include "source_base/kernels/cuda/sph_harm_gpu.cuh" + +namespace ModuleGint +{ + // Import unified GPU sph_harm functions from ModuleBase + using ModuleBase::sph_harm; + using ModuleBase::grad_rl_sph_harm; +} diff --git a/source/source_lcao/module_gint/kernels/cuda/code_gen.cpp b/source/source_lcao/module_gint/kernels/cuda/code_gen.cpp deleted file mode 100644 index 42e8c4f0c5..0000000000 --- a/source/source_lcao/module_gint/kernels/cuda/code_gen.cpp +++ /dev/null @@ -1,4426 +0,0 @@ -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); - -gemm_time_measure(max_m, - max_n, - d_m, - d_n, - d_k, - d_global_A_array, - d_global_lda, - d_global_B_array, - d_global_ldb, - d_global_C_array, - d_global_ldc, - batchCount, - temp_stream, - fastest_time, - fastest_algo, - cpu_result, - h_global_C, - d_global_C); diff --git a/source/source_lcao/module_gint/kernels/cuda/code_gen.cuh b/source/source_lcao/module_gint/kernels/cuda/code_gen.cuh deleted file mode 100644 index a4b1a75916..0000000000 --- a/source/source_lcao/module_gint/kernels/cuda/code_gen.cuh +++ /dev/null @@ -1,473 +0,0 @@ -#ifndef CODE_GEN_CUH -#define CODE_GEN_CUH - -#include "gemm_selector.cuh" -#include - -extern template void gemm_time_measure(int, int, int*, int*, int*, double**, int*, double**, int*, double**, int*, int, cudaStream_t, float&, matrix_multiple_func_type&, double*, double*, double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -extern template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -#endif \ No newline at end of file diff --git a/source/source_lcao/module_gint/kernels/cuda/code_gen_00.cu b/source/source_lcao/module_gint/kernels/cuda/code_gen_00.cu deleted file mode 100644 index a07c411485..0000000000 --- a/source/source_lcao/module_gint/kernels/cuda/code_gen_00.cu +++ /dev/null @@ -1,48 +0,0 @@ -#include "vbatch_matrix_mul.cuh" - -template void gemm_time_measure(int, int, int*, int*, int*, double**, int*, double**, int*, double**, int*, int, cudaStream_t, float&, matrix_multiple_func_type&, double*, double*, double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - diff --git a/source/source_lcao/module_gint/kernels/cuda/code_gen_01.cu b/source/source_lcao/module_gint/kernels/cuda/code_gen_01.cu deleted file mode 100644 index 9f725c23c6..0000000000 --- a/source/source_lcao/module_gint/kernels/cuda/code_gen_01.cu +++ /dev/null @@ -1,48 +0,0 @@ -#include "vbatch_matrix_mul.cuh" - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - diff --git a/source/source_lcao/module_gint/kernels/cuda/code_gen_02.cu b/source/source_lcao/module_gint/kernels/cuda/code_gen_02.cu deleted file mode 100644 index 090eab0709..0000000000 --- a/source/source_lcao/module_gint/kernels/cuda/code_gen_02.cu +++ /dev/null @@ -1,48 +0,0 @@ -#include "vbatch_matrix_mul.cuh" - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - diff --git a/source/source_lcao/module_gint/kernels/cuda/code_gen_03.cu b/source/source_lcao/module_gint/kernels/cuda/code_gen_03.cu deleted file mode 100644 index 046d0e5063..0000000000 --- a/source/source_lcao/module_gint/kernels/cuda/code_gen_03.cu +++ /dev/null @@ -1,48 +0,0 @@ -#include "vbatch_matrix_mul.cuh" - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - diff --git a/source/source_lcao/module_gint/kernels/cuda/code_gen_04.cu b/source/source_lcao/module_gint/kernels/cuda/code_gen_04.cu deleted file mode 100644 index f74209d829..0000000000 --- a/source/source_lcao/module_gint/kernels/cuda/code_gen_04.cu +++ /dev/null @@ -1,48 +0,0 @@ -#include "vbatch_matrix_mul.cuh" - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - diff --git a/source/source_lcao/module_gint/kernels/cuda/code_gen_05.cu b/source/source_lcao/module_gint/kernels/cuda/code_gen_05.cu deleted file mode 100644 index c9cb81bd7c..0000000000 --- a/source/source_lcao/module_gint/kernels/cuda/code_gen_05.cu +++ /dev/null @@ -1,48 +0,0 @@ -#include "vbatch_matrix_mul.cuh" - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - diff --git a/source/source_lcao/module_gint/kernels/cuda/code_gen_06.cu b/source/source_lcao/module_gint/kernels/cuda/code_gen_06.cu deleted file mode 100644 index f5fac39df2..0000000000 --- a/source/source_lcao/module_gint/kernels/cuda/code_gen_06.cu +++ /dev/null @@ -1,48 +0,0 @@ -#include "vbatch_matrix_mul.cuh" - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - diff --git a/source/source_lcao/module_gint/kernels/cuda/code_gen_07.cu b/source/source_lcao/module_gint/kernels/cuda/code_gen_07.cu deleted file mode 100644 index 971c6eb0c0..0000000000 --- a/source/source_lcao/module_gint/kernels/cuda/code_gen_07.cu +++ /dev/null @@ -1,48 +0,0 @@ -#include "vbatch_matrix_mul.cuh" - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - diff --git a/source/source_lcao/module_gint/kernels/cuda/code_gen_08.cu b/source/source_lcao/module_gint/kernels/cuda/code_gen_08.cu deleted file mode 100644 index 8643faae70..0000000000 --- a/source/source_lcao/module_gint/kernels/cuda/code_gen_08.cu +++ /dev/null @@ -1,48 +0,0 @@ -#include "vbatch_matrix_mul.cuh" - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - diff --git a/source/source_lcao/module_gint/kernels/cuda/code_gen_09.cu b/source/source_lcao/module_gint/kernels/cuda/code_gen_09.cu deleted file mode 100644 index 8cf333bf6f..0000000000 --- a/source/source_lcao/module_gint/kernels/cuda/code_gen_09.cu +++ /dev/null @@ -1,53 +0,0 @@ -#include "vbatch_matrix_mul.cuh" - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); - -template void gemm_time_measure(int,int,int*,int*,int*,double**,int*,double**,int*,double**,int*,int,cudaStream_t,float&,matrix_multiple_func_type&,double*,double*,double*); \ No newline at end of file diff --git a/source/source_lcao/module_gint/kernels/cuda/cuda_tools.cu b/source/source_lcao/module_gint/kernels/cuda/cuda_tools.cu deleted file mode 100644 index c9bf122628..0000000000 --- a/source/source_lcao/module_gint/kernels/cuda/cuda_tools.cu +++ /dev/null @@ -1,292 +0,0 @@ -#include -#include -#include - -#include "cuda_tools.cuh" - -void dump_cuda_array_to_file(const double* cuda_array, - int width, - int hight, - const std::string& filename) -{ - double* h_data = new double[width * hight]; - cudaMemcpy(h_data, - cuda_array, - width * hight * sizeof(double), - cudaMemcpyDeviceToHost); - - std::ofstream outFile(filename); - if (!outFile.is_open()) - { - std::cerr << "Failed to open file for writing." << std::endl; - } - for (int j = 0; j < hight; ++j) - { - for (int i = 0; i < width; ++i) - { - outFile << "hight" << j << " width:" << i << " " - << h_data[j * width + i] << std::endl; - } - } - outFile.close(); - delete[] h_data; -} - -template -Cuda_Mem_Wrapper::Cuda_Mem_Wrapper() -{ - this->device_pointer = nullptr; - this->host_pointer = nullptr; - this->one_stream_size = 0; - this->one_stream_size_aligned = 0; - this->stream_number = 1; - this->total_size_aligned = 0; -} - -template -Cuda_Mem_Wrapper::Cuda_Mem_Wrapper(int one_stream_size_in, - int one_stream_size_aligned_in, - int stream_number_in, - bool malloc_host_in) -{ - this->stream_number = stream_number_in; - this->one_stream_size = one_stream_size_in; - this->one_stream_size_aligned = one_stream_size_aligned_in; - this->total_size_aligned - = this->one_stream_size_aligned * this->stream_number; - - checkCuda(cudaMalloc((void**)&this->device_pointer, - this->total_size_aligned * sizeof(T))); - checkCuda(cudaMemset(this->device_pointer, - 0, - this->total_size_aligned * sizeof(T))); - this->host_pointer = nullptr; - - if (malloc_host_in) - { - checkCuda(cudaMallocHost((void**)&this->host_pointer, - this->total_size_aligned * sizeof(T))); - memset(this->host_pointer, 0, this->total_size_aligned * sizeof(T)); - } -} - -template -Cuda_Mem_Wrapper::Cuda_Mem_Wrapper(int one_stream_size_in, - int stream_number_in, - bool malloc_host_in) - : Cuda_Mem_Wrapper(one_stream_size_in, - one_stream_size_in, - stream_number_in, - malloc_host_in) -{ -} - -template -Cuda_Mem_Wrapper::Cuda_Mem_Wrapper(Cuda_Mem_Wrapper&& other) noexcept -{ - this->device_pointer = other.device_pointer; - this->host_pointer = other.host_pointer; - this->one_stream_size = other.one_stream_size; - this->one_stream_size_aligned = other.one_stream_size_aligned; - this->stream_number = other.stream_number; - this->total_size_aligned = other.total_size_aligned; - - other.device_pointer = nullptr; - other.host_pointer = nullptr; - other.one_stream_size = 0; - other.one_stream_size_aligned = 0; - other.stream_number = 0; - other.total_size_aligned = 0; -} - -template -Cuda_Mem_Wrapper& Cuda_Mem_Wrapper::operator=(Cuda_Mem_Wrapper&& other) noexcept -{ - if (this != &other) - { - this->free_all(); - this->device_pointer = other.device_pointer; - this->host_pointer = other.host_pointer; - this->one_stream_size = other.one_stream_size; - this->one_stream_size_aligned = other.one_stream_size_aligned; - this->stream_number = other.stream_number; - this->total_size_aligned = other.total_size_aligned; - - other.device_pointer = nullptr; - other.host_pointer = nullptr; - other.one_stream_size = 0; - other.one_stream_size_aligned = 0; - other.stream_number = 0; - other.total_size_aligned = 0; - } - return *this; -} - -template -void Cuda_Mem_Wrapper::free_all() -{ - checkCuda(cudaFree(this->device_pointer)); - if (this->host_pointer != nullptr) - { - checkCuda(cudaFreeHost(this->host_pointer)); - } -} - -template -Cuda_Mem_Wrapper::~Cuda_Mem_Wrapper() -{ - this->free_all(); -} - -template -inline void Cuda_Mem_Wrapper::copy_host_to_device_sync(const int stream_id) -{ - if (this->host_pointer == nullptr || this->device_pointer == nullptr) - { - std::cerr << "host_pointer is nullptr, can not copy host to device" - << std::endl; - exit(1); - } - checkCuda(cudaMemcpy( - this->device_pointer + stream_id * this->one_stream_size_aligned, - this->host_pointer + stream_id * this->one_stream_size_aligned, - this->one_stream_size * sizeof(T), - cudaMemcpyHostToDevice)); -} - -template -inline void Cuda_Mem_Wrapper::copy_host_to_device_async(const cudaStream_t stream, - const int stream_id) -{ - if (this->host_pointer == nullptr || this->device_pointer == nullptr) - { - std::cerr << "host_pointer is nullptr, can not copy host to device" - << std::endl; - exit(1); - } - checkCuda(cudaMemcpyAsync( - this->device_pointer + stream_id * this->one_stream_size_aligned, - this->host_pointer + stream_id * this->one_stream_size_aligned, - this->one_stream_size * sizeof(T), - cudaMemcpyHostToDevice, - stream)); -} - -template -inline void Cuda_Mem_Wrapper::copy_host_to_device_async(const cudaStream_t stream, - const int stream_id, - const int size) -{ - if (this->host_pointer == nullptr || this->device_pointer == nullptr) - { - std::cerr << "host_pointer is nullptr, can not copy host to device" - << std::endl; - exit(1); - } - checkCuda(cudaMemcpyAsync( - this->device_pointer + stream_id * this->one_stream_size_aligned, - this->host_pointer + stream_id * this->one_stream_size_aligned, - size * sizeof(T), - cudaMemcpyHostToDevice, - stream)); -} - -template -inline void Cuda_Mem_Wrapper::copy_device_to_host_sync(const int stream_id) -{ - if (this->host_pointer == nullptr || this->device_pointer == nullptr) - { - std::cerr << "host_pointer is nullptr, can not copy device to host" - << std::endl; - exit(1); - } - checkCuda(cudaMemcpy( - this->host_pointer + stream_id * this->one_stream_size_aligned, - this->device_pointer + stream_id * this->one_stream_size_aligned, - this->one_stream_size * sizeof(T), - cudaMemcpyDeviceToHost)); -} - -template -inline void Cuda_Mem_Wrapper::copy_device_to_host_async(const cudaStream_t stream, - const int stream_id) -{ - if (this->host_pointer == nullptr || this->device_pointer == nullptr) - { - std::cerr << "host_pointer is nullptr, can not copy device to host" - << std::endl; - exit(1); - } - checkCuda(cudaMemcpyAsync( - this->host_pointer + stream_id * this->one_stream_size_aligned, - this->device_pointer + stream_id * this->one_stream_size_aligned, - this->one_stream_size * sizeof(T), - cudaMemcpyDeviceToHost, - stream)); -} - -template -inline void Cuda_Mem_Wrapper::copy_device_to_host_async(const cudaStream_t stream, - const int stream_id, - const int size) -{ - if (this->host_pointer == nullptr || this->device_pointer == nullptr) - { - std::cerr << "host_pointer is nullptr, can not copy device to host" - << std::endl; - exit(1); - } - checkCuda(cudaMemcpyAsync( - this->host_pointer + stream_id * this->one_stream_size_aligned, - this->device_pointer + stream_id * this->one_stream_size_aligned, - size * sizeof(T), - cudaMemcpyDeviceToHost, - stream)); -} - -template -inline void Cuda_Mem_Wrapper::memset_device_sync(const int stream_id, const int value) -{ - checkCuda(cudaMemset(this->device_pointer - + stream_id * this->one_stream_size_aligned, - value, - this->one_stream_size * sizeof(T))); -} - -template -inline void Cuda_Mem_Wrapper::memset_device_async(const cudaStream_t stream, - const int stream_id, - const int value) -{ - checkCuda(cudaMemsetAsync(this->device_pointer - + stream_id * this->one_stream_size_aligned, - value, - this->one_stream_size * sizeof(T), - stream)); -} - -template -inline void Cuda_Mem_Wrapper::memset_host(const int stream_id, const int value) -{ - memset(this->host_pointer + stream_id * this->one_stream_size_aligned, - value, - this->one_stream_size * sizeof(T)); -} - -template -inline T* Cuda_Mem_Wrapper::get_device_pointer(const int stream_id) -{ - return this->device_pointer + stream_id * this->one_stream_size_aligned; -} - -template -inline T* Cuda_Mem_Wrapper::get_host_pointer(const int stream_id) -{ - return this->host_pointer + stream_id * this->one_stream_size_aligned; -} -template class Cuda_Mem_Wrapper; -template class Cuda_Mem_Wrapper; -template class Cuda_Mem_Wrapper; -template class Cuda_Mem_Wrapper; -template class Cuda_Mem_Wrapper; - diff --git a/source/source_lcao/module_gint/kernels/cuda/cuda_tools.cuh b/source/source_lcao/module_gint/kernels/cuda/cuda_tools.cuh deleted file mode 100644 index dab697df8c..0000000000 --- a/source/source_lcao/module_gint/kernels/cuda/cuda_tools.cuh +++ /dev/null @@ -1,123 +0,0 @@ -#ifndef CUDA_TOOLS_CUH -#define CUDA_TOOLS_CUH -#include // for assert -#include -#include // for CUDA_VERSION -#include - -#include -#include -#include - -#define checkCuda(val) check((val), #val, __FILE__, __LINE__) -#define checkCudaLastError() __getLastCudaError(__FILE__, __LINE__) - -inline void check(cudaError_t result, char const *const func, const char *const file, - int const line) { - if (result) { - fprintf(stderr, "CUDA error at %s:%d code=%d(%s) \"%s\" \n", file, line, - static_cast(result), cudaGetErrorString(result), func); - exit(EXIT_FAILURE); - } -} - -inline void __getLastCudaError(const char *file, - const int line) -{ - cudaError_t err = cudaGetLastError(); - - if (cudaSuccess != err) { - fprintf(stderr, - "%s(%i) : getLastCudaError() CUDA error :" - " (%d) %s.\n", - file, line, static_cast(err), - cudaGetErrorString(err)); - exit(EXIT_FAILURE); - } -} - -static inline int ceildiv(int x, int y) -{ - return (x + y - 1) / y; -} - -void dump_cuda_array_to_file(const double* cuda_array, - int width, - int hight, - const std::string& filename); - -// inline int ceil_div(int a, int b) -// { -// return (a + b - 1) / b; -// } - -/* - * @brief: A simple wrapper for cudaMalloc and cudaFree, sync and async CUDA - * memory copy - * @param: T: the type of the data - * - * @note: - * Manual management of CUDA memory is a very delicate task; complex pointers - * and malloc/free operations make it easy for us to encounter memory bugs. The - * severity of the issues increases significantly when introducing multi-node, - * multi-GPU, and multi-stream parallelism. - * Debugging after encountering bugs is also very difficult, finding the leaking - * pointer from dozens of variables can be quite a headache. - * Therefore, considering that our use and management of memory have some - * homogeneity, we have abstracted these needs into the following encapsulations - * to reduce the cost of maintenance and development. The memory is allocated in - * the constructor and freed in the destructor. - * - * The following interface is primarily designed for the following requirements: - * 1. We need to split a large task into multiple subtasks to run on multiple - * streams across multiple GPUs on multiple nodes. - * 2. It is necessary to allocate memory of the same shape on both host and - * device. - * 3. Data copying between host and device sync or async is required. - */ - -template -class Cuda_Mem_Wrapper -{ - public: - - Cuda_Mem_Wrapper(); - Cuda_Mem_Wrapper(int one_stream_size, - int one_stream_size_aligned, - int stream_number = 1, - bool malloc_host = true); - Cuda_Mem_Wrapper(int one_stream_size, - int stream_number = 1, - bool malloc_host = true); - - Cuda_Mem_Wrapper(const Cuda_Mem_Wrapper& other) = delete; - Cuda_Mem_Wrapper& operator=(const Cuda_Mem_Wrapper& other) = delete; - Cuda_Mem_Wrapper(Cuda_Mem_Wrapper&& other) noexcept; - Cuda_Mem_Wrapper& operator=(Cuda_Mem_Wrapper&& other) noexcept; - - ~Cuda_Mem_Wrapper(); - void copy_host_to_device_sync(const int stream_id = 0); - void copy_host_to_device_async(const cudaStream_t stream, const int stream_id); - void copy_host_to_device_async(const cudaStream_t stream, const int stream_id, const int size); - void copy_device_to_host_sync(const int stream_id = 0); - void copy_device_to_host_async(const cudaStream_t stream, const int stream_id); - void copy_device_to_host_async(const cudaStream_t stream, const int stream_id, const int size); - void memset_device_sync(const int stream_id = 0, const int value = 0); - void memset_device_async(const cudaStream_t stream, - const int stream_id = 0, - const int value = 0); - void memset_host(const int stream_id = 0, const int value = 0); - T* get_device_pointer(const int stream_id = 0); - T* get_host_pointer(const int stream_id = 0); - void free_all(); - - private: - T* device_pointer; - T* host_pointer; - int one_stream_size; - int one_stream_size_aligned; - int stream_number; - int total_size_aligned; -}; - -#endif // CUDA_TOOLS_CUH \ No newline at end of file diff --git a/source/source_lcao/module_gint/kernels/cuda/gemm_selector.cu b/source/source_lcao/module_gint/kernels/cuda/gemm_selector.cu deleted file mode 100644 index 6550b21edb..0000000000 --- a/source/source_lcao/module_gint/kernels/cuda/gemm_selector.cu +++ /dev/null @@ -1,138 +0,0 @@ -#include - -#include "gemm_selector.cuh" -#include "vbatch_matrix_mul.cuh" -#include "cuda_tools.cuh" -#include "source_base/module_external/blas_connector.h" -#include "code_gen.cuh" - -/* - * Here we have utilized a very straightforward and brute-force method to select - * the optimal matrix multiplication kernel for a given scale of computation: we - * compute with all scales of kernels under the current computational task to - * find the fastest parameter combination. This approach can lead to an increase - * in compilation time. - */ -void gemm_algo_selector(int matrix_k, matrix_multiple_func_type& fastest_algo,const UnitCell& ucell) -{ - int batchCount_per_type = 32; - int batchCount - = batchCount_per_type * ucell.ntype * ucell.ntype; - - Cuda_Mem_Wrapper m(batchCount); - Cuda_Mem_Wrapper n(batchCount); - Cuda_Mem_Wrapper k(batchCount); - - int max_m = ucell.nwmax, max_n = ucell.nwmax; - - Cuda_Mem_Wrapper A(batchCount * max_m * matrix_k); - Cuda_Mem_Wrapper B(batchCount * max_n * matrix_k); - Cuda_Mem_Wrapper C(batchCount * max_m * max_n); - - Cuda_Mem_Wrapper lda(batchCount); - Cuda_Mem_Wrapper ldb(batchCount); - Cuda_Mem_Wrapper ldc(batchCount); - - Cuda_Mem_Wrapper A_array(batchCount); - Cuda_Mem_Wrapper B_array(batchCount); - Cuda_Mem_Wrapper C_array(batchCount); - - for (int i = 0; i < batchCount * max_m * matrix_k; ++i) - { - A.get_host_pointer()[i] = i * 0.001; - } - for (int i = 0; i < batchCount * max_n * matrix_k; ++i) - { - B.get_host_pointer()[i] = i * 0.002; - } - - double* cpu_result = new double[batchCount * max_m * max_n]; - memset(cpu_result, 0, batchCount * max_m * max_n * sizeof(double)); - int index = 0; - for (int i = 0; i < batchCount_per_type; ++i) - { - for (int j = 0; j < ucell.ntype; j++) - { - for (int l = 0; l < ucell.ntype; l++) - { - m.get_host_pointer()[index] = ucell.atoms[j].nw; - n.get_host_pointer()[index] = ucell.atoms[l].nw; - k.get_host_pointer()[index] = matrix_k; - - lda.get_host_pointer()[index] = matrix_k; - ldb.get_host_pointer()[index] = matrix_k; - ldc.get_host_pointer()[index] = ucell.atoms[l].nw; - - A_array.get_host_pointer()[index] - = &A.get_device_pointer()[index * max_m * matrix_k]; - B_array.get_host_pointer()[index] - = &B.get_device_pointer()[index * max_n * matrix_k]; - C_array.get_host_pointer()[index] - = &C.get_device_pointer()[index * max_n - * max_m]; // test atom add - BlasConnector::gemm( - 'N', - 'T', - m.get_host_pointer()[index], - n.get_host_pointer()[index], - matrix_k, - 1.0, - &A.get_host_pointer()[index * max_m * matrix_k], - matrix_k, - &B.get_host_pointer()[index * max_n * matrix_k], - matrix_k, - 1.0, - &cpu_result[index * max_m * max_n], - n.get_host_pointer()[index]); - index++; - } - } - } - - m.copy_host_to_device_sync(); - n.copy_host_to_device_sync(); - k.copy_host_to_device_sync(); - - lda.copy_host_to_device_sync(); - ldb.copy_host_to_device_sync(); - ldc.copy_host_to_device_sync(); - - A.copy_host_to_device_sync(); - B.copy_host_to_device_sync(); - A_array.copy_host_to_device_sync(); - B_array.copy_host_to_device_sync(); - C_array.copy_host_to_device_sync(); - - cudaStream_t temp_stream; - checkCuda(cudaStreamCreate(&temp_stream)); - - float fastest_time = 1000000; - fastest_algo = vbatched_gemm_impl; - - int* d_m = m.get_device_pointer(); - int* d_n = n.get_device_pointer(); - int* d_k = k.get_device_pointer(); - - double** d_global_A_array = A_array.get_device_pointer(); - double** d_global_B_array = B_array.get_device_pointer(); - double** d_global_C_array = C_array.get_device_pointer(); - - double* h_global_C = C.get_host_pointer(); - double* d_global_C = C.get_device_pointer(); - - int* d_global_lda = lda.get_device_pointer(); - int* d_global_ldb = ldb.get_device_pointer(); - int* d_global_ldc = ldc.get_device_pointer(); - -/* - * Please do not manually modify the code in the following file; - * it should simply be generated through a loop using a short Python program. - */ -#include "code_gen.cpp" - checkCuda(cudaStreamDestroy(temp_stream)); - std::cout << " gemm_algo_selector::Fastest time: " << fastest_time << " ms" - << std::endl; - // fastest_algo = vbatched_gemm_impl; - delete[] cpu_result; -} \ No newline at end of file diff --git a/source/source_lcao/module_gint/kernels/cuda/gemm_selector.cuh b/source/source_lcao/module_gint/kernels/cuda/gemm_selector.cuh deleted file mode 100644 index 744f3c887d..0000000000 --- a/source/source_lcao/module_gint/kernels/cuda/gemm_selector.cuh +++ /dev/null @@ -1,12 +0,0 @@ -#ifndef GEMM_SELECTOR_H -#define GEMM_SELECTOR_H - -#include "cuda_runtime.h" -#include "source_cell/unitcell.h" -typedef std::function< - void(int, int, int*, int*, int*, double**, int*, double**, int*, double**, int*, int, cudaStream_t, double* alpha)> - matrix_multiple_func_type; - -void gemm_algo_selector(int k, matrix_multiple_func_type& func, const UnitCell& ucell); - -#endif \ No newline at end of file diff --git a/source/source_lcao/module_gint/kernels/cuda/gint_force.cu b/source/source_lcao/module_gint/kernels/cuda/gint_force.cu deleted file mode 100644 index 0199c9e37a..0000000000 --- a/source/source_lcao/module_gint/kernels/cuda/gint_force.cu +++ /dev/null @@ -1,225 +0,0 @@ -#include "sph.cuh" -#include "interp.cuh" -#include "gint_force.cuh" -#include "cuda_tools.cuh" -#include "source_base/module_device/device.h" -// CUDA kernel to calculate psi and force -namespace GintKernel -{ -__inline__ __device__ double warpReduceSum(double val) -{ - val += __shfl_xor_sync(0xffffffff, val, 16, 32); - val += __shfl_xor_sync(0xffffffff, val, 8, 32); - val += __shfl_xor_sync(0xffffffff, val, 4, 32); - val += __shfl_xor_sync(0xffffffff, val, 2, 32); - val += __shfl_xor_sync(0xffffffff, val, 1, 32); - return val; -} - - -__global__ void get_psi_force(double* ylmcoef, - double delta_r, - int bxyz, - const int nwmax, - const int max_atom, - const int* const ucell_atom_nwl, - const bool* const atom_iw2_new, - const int* const atom_iw2_ylm, - const int* const atom_iw2_l, - const int* const atom_nw, - const double* const rcut, - const int nr_max, - const double* const psi_u, - const double* const mcell_pos, - const double* const dr_part, - const double* const vldr3, - const uint8_t* const atoms_type, - const int* const atoms_num_info, - double* psi, - double* dpsi, - double* d2psi) -{ - const int bcell_id = blockIdx.x; - const int num_atoms = atoms_num_info[2 * bcell_id]; - const int pre_atoms = atoms_num_info[2 * bcell_id + 1]; - const int mcell_id = blockIdx.y; - const double vldr3_value = vldr3[bcell_id*bxyz + mcell_id]; - const double mcell_pos_x = mcell_pos[3 * mcell_id]; - const double mcell_pos_y = mcell_pos[3 * mcell_id + 1]; - const double mcell_pos_z = mcell_pos[3 * mcell_id + 2]; - - for(int atom_id = threadIdx.x; atom_id < num_atoms; atom_id += blockDim.x) - { - const int dr_start = 3 * (pre_atoms + atom_id); - const double dr_x = dr_part[dr_start] + mcell_pos_x; - const double dr_y = dr_part[dr_start + 1] + mcell_pos_y; - const double dr_z = dr_part[dr_start + 2] + mcell_pos_z; - double dist = sqrt(dr_x * dr_x + dr_y * dr_y + dr_z * dr_z); - const int atype = __ldg(atoms_type + pre_atoms + atom_id); - if(dist < rcut[atype]) - { - if (dist < 1.0E-9) - { - dist += 1.0E-9; - } - // dr is different from that in interp_rho and interp_vl - double dr[3] = {dr_x, dr_y, dr_z}; - double ylma[49]; - double grly[49][3]; - const int nwl = __ldg(ucell_atom_nwl + atype); - spherical_harmonics_d(dr, dist*dist, grly, nwl, ylma, ylmcoef); - int psi_idx = ((pre_atoms + atom_id) * bxyz + mcell_id) * nwmax; - interp_f(dist, - delta_r, - atype, - nwmax, - nr_max, - atom_nw, - atom_iw2_new, - psi_u, - ylma, - atom_iw2_l, - atom_iw2_ylm, - vldr3_value, - dr, - grly, - psi_idx, - psi, - dpsi, - d2psi); - } - } -} - - -__global__ void dot_product_stress(const double* d2psi, - const double* psi_dm, - const int size, - double* stress) -{ - __shared__ double cache[32 * 6]; - const int tid = threadIdx.x; - const int stride = blockDim.x * gridDim.x; - const int warp_id = tid / 32; - const int lane_id = tid % 32; - double tmp[6] = {0.0}; - for(int id = threadIdx.x + blockIdx.x * blockDim.x; id < size; id += stride) - { - const double psi_dm_2 = psi_dm[id] * 2; - const int id_stress = id * 6; - tmp[0] += d2psi[id_stress] * psi_dm_2; - tmp[1] += d2psi[id_stress + 1] * psi_dm_2; - tmp[2] += d2psi[id_stress + 2] * psi_dm_2; - tmp[3] += d2psi[id_stress + 3] * psi_dm_2; - tmp[4] += d2psi[id_stress + 4] * psi_dm_2; - tmp[5] += d2psi[id_stress + 5] * psi_dm_2; - } - - for(int i = 0; i<6; i++) - { - tmp[i] = warpReduceSum(tmp[i]); - } - - if (lane_id == 0) - { - for (int i = 0; i < 6; i++) - { - cache[warp_id * 6 + i] = tmp[i]; - } - } - __syncthreads(); - - for (int i = 0; i < 6; i++) - { - tmp[i] = (tid < blockDim.x / 32) ? cache[tid * 6 + i] : 0; - } - - if(warp_id == 0) - { - for (int i = 0; i < 6; i++) - { - tmp[i] = warpReduceSum(tmp[i]); - } - } - - if (tid == 0) - { - for (int i = 0; i < 6; i++) - { - atomicAdd(&stress[i], tmp[i]); // Use atomicAdd() instead of atomic_add(). - } - } -} - - -__global__ void dot_product_force(const int bxyz, - const int nwmax, - const int *atoms_num_info, - const int *iat_on_nbz, - const double* dpsi, - const double* psi_dm, - double* force) -{ - __shared__ double cache[32 * 3]; - const int tid = threadIdx.x; - const int bcell_id = blockIdx.x; - const int warp_id = tid / 32; - const int lane_id = tid % 32; - const int vec_size = bxyz * nwmax; - const int atom_num = atoms_num_info[2 * bcell_id]; - const int pre_atoms = atoms_num_info[2 * bcell_id + 1]; - - for(int k = 0; k < atom_num; k++) - { - const int atom_id = pre_atoms + k; - const int offset = atom_id * vec_size; - const int iat = iat_on_nbz[atom_id]; - double force_iat[3] = {0.0}; - - for(int i =tid; i < vec_size; i += blockDim.x) - { - int psi_offset = offset + i; - double psi_dm_2 = psi_dm[psi_offset] * 2; - force_iat[0] += dpsi[psi_offset * 3] * psi_dm_2; - force_iat[1] += dpsi[psi_offset * 3 + 1] * psi_dm_2; - force_iat[2] += dpsi[psi_offset * 3 + 2] * psi_dm_2; - } - - for (int i = 0; i < 3; i++) - { - force_iat[i] = warpReduceSum(force_iat[i]); - } - - if (lane_id == 0) - { - for (int i = 0; i < 3; i++) - { - cache[warp_id * 3 + i] = force_iat[i]; - } - } - __syncthreads(); - - for (int i = 0; i < 3; i++) - { - force_iat[i] = (tid < blockDim.x / 32) ? cache[tid * 3 + i] : 0; - } - - if (warp_id == 0) - { - for (int i = 0; i < 3; i++) - { - force_iat[i] = warpReduceSum(force_iat[i]); - } - } - - if (tid == 0) - { - for (int i = 0; i < 3; i++) - { - atomicAdd(&force[iat * 3 + i], force_iat[i]); - } - } - } -} - -} // namespace GintKernel diff --git a/source/source_lcao/module_gint/kernels/cuda/gint_force.cuh b/source/source_lcao/module_gint/kernels/cuda/gint_force.cuh deleted file mode 100644 index 74b941f32a..0000000000 --- a/source/source_lcao/module_gint/kernels/cuda/gint_force.cuh +++ /dev/null @@ -1,46 +0,0 @@ -#ifndef GINT_FORCE_CUH -#define GINT_FORCE_CUH - -#include -#include -namespace GintKernel -{ - -__global__ void get_psi_force(double* ylmcoef, - double delta_r, - int bxyz, - const int nwmax, - const int max_atom, - const int* const ucell_atom_nwl, - const bool* const atom_iw2_new, - const int* const atom_iw2_ylm, - const int* const atom_iw2_l, - const int* const atom_nw, - const double* const rcut, - const int nr_max, - const double* const psi_u, - const double* const mcell_pos, - const double* const dr_part, - const double* const vldr3, - const uint8_t* const atoms_type, - const int* const atoms_num_info, - double* psi, - double* dpsi, - double* d2psi); - - -__global__ void dot_product_stress(const double* d2psi, - const double* psi_dm, - const int size, - double* stress); - -__global__ void dot_product_force(const int bxyz, - const int nwmax, - const int *atoms_num_info, - const int *iat_on_nbz, - const double* dpsi, - const double* psi_dm, - double* force); - -} // namespace GintKernel -#endif // GINT_VL_CUH diff --git a/source/source_lcao/module_gint/kernels/cuda/gint_rho.cu b/source/source_lcao/module_gint/kernels/cuda/gint_rho.cu deleted file mode 100644 index 6b4069c40b..0000000000 --- a/source/source_lcao/module_gint/kernels/cuda/gint_rho.cu +++ /dev/null @@ -1,130 +0,0 @@ -#include "interp.cuh" -#include "gint_rho.cuh" -#include "sph.cuh" -#include "cuda_tools.cuh" - -namespace GintKernel -{ -__inline__ __device__ double warpReduceSum(double val) -{ - val += __shfl_xor_sync(0xffffffff, val, 16, 32); - val += __shfl_xor_sync(0xffffffff, val, 8, 32); - val += __shfl_xor_sync(0xffffffff, val, 4, 32); - val += __shfl_xor_sync(0xffffffff, val, 2, 32); - val += __shfl_xor_sync(0xffffffff, val, 1, 32); - return val; -} - - -/* - each block calculates the wavefunction on a meshcell, - and each thread loops over the atoms on a meshcell. -*/ -__global__ void get_psi(const double* const ylmcoef, - const double delta_r, - const int bxyz, - const int nwmax, - const int max_atom, - const int* const ucell_atom_nwl, - const bool* const atom_iw2_new, - const int* const atom_iw2_ylm, - const int* const atom_nw, - const double* const rcut, - const int nr_max, - const double* const psi_u, - const double* const mcell_pos, - const double* const dr_part, - const uint8_t* const atoms_type, - const int* const atoms_num_info, - double* psi) -{ - const int bcell_id = blockIdx.x; - const int num_atoms = atoms_num_info[2 * bcell_id]; - const int pre_atoms = atoms_num_info[2 * bcell_id + 1]; - const int mcell_id = blockIdx.y; - const double mcell_pos_x = mcell_pos[3 * mcell_id]; - const double mcell_pos_y = mcell_pos[3 * mcell_id + 1]; - const double mcell_pos_z = mcell_pos[3 * mcell_id + 2]; - - for(int atom_id = threadIdx.x; atom_id < num_atoms; atom_id += blockDim.x) - { - const int aid = pre_atoms + atom_id; - const double dr_x = dr_part[aid * 3] + mcell_pos_x; - const double dr_y = dr_part[aid * 3 + 1] + mcell_pos_y; - const double dr_z = dr_part[aid * 3 + 2] + mcell_pos_z; - double dist = sqrt(dr_x * dr_x + dr_y * dr_y + dr_z * dr_z); - const int atype = __ldg(atoms_type + aid); - if(dist < rcut[atype]) - { - if (dist < 1.0E-9) - { - dist += 1.0E-9; - } - double dr[3] = {dr_x / dist, dr_y / dist, dr_z / dist}; - double ylma[49]; - const int nwl = __ldg(ucell_atom_nwl + atype); - int psi_idx = (pre_atoms * bxyz + mcell_id * num_atoms + atom_id) * nwmax; - spherical_harmonics(dr, nwl, ylma, ylmcoef); - interp_rho(dist, - delta_r, - atype, - nwmax, - nr_max, - atom_nw, - atom_iw2_new, - psi_u, - ylma, - atom_iw2_ylm, - psi, - psi_idx); - } - } -} - -/* - Each block calculates the dot product on a meshcell, - and each thread loops over the wavefunction of atoms on a meshcell. -*/ -__global__ void psir_dot(const int bxyz, - const int nwmax, - const int* atoms_num_info, - const double* __restrict__ vec_a_g, - const double* __restrict__ vec_b_g, - double** results_g) -{ - __shared__ double s_data[32]; - const int tid = threadIdx.x; - const int bcell_id = blockIdx.x; - const int mcell_id = blockIdx.y; - const int vec_size = atoms_num_info[2 * bcell_id] * nwmax; - const int offset = atoms_num_info[2 * bcell_id + 1] * nwmax * bxyz + mcell_id * vec_size; - const double* vec_a_mcell = vec_a_g + offset; - const double* vec_b_mcell = vec_b_g + offset; - const int warp_id = tid / 32; - const int lane_id = tid % 32; - double mySum = 0; - - for (int k = tid; k < vec_size; k += blockDim.x) - { - mySum += vec_a_mcell[k] * vec_b_mcell[k]; - } - - mySum = warpReduceSum(mySum); - - if (lane_id == 0) - { - s_data[warp_id] = mySum; - } - __syncthreads(); - - mySum = (tid < blockDim.x / 32) ? s_data[tid] : 0; - if (warp_id == 0) - { - mySum = warpReduceSum(mySum); - } - - if (tid == 0) { - *results_g[bcell_id*bxyz + mcell_id] = mySum; - } -} -} // namespace GintKernel \ No newline at end of file diff --git a/source/source_lcao/module_gint/kernels/cuda/gint_rho.cuh b/source/source_lcao/module_gint/kernels/cuda/gint_rho.cuh deleted file mode 100644 index 70cbbb7692..0000000000 --- a/source/source_lcao/module_gint/kernels/cuda/gint_rho.cuh +++ /dev/null @@ -1,41 +0,0 @@ -#ifndef GINT_RHO_CUH -#define GINT_RHO_CUH - -#include -#include -namespace GintKernel -{ - -/** - * @brief CUDA kernel to calculate psir. - * - * This kernel calculates the wave function psi using the provided input - * parameters. - */ -__global__ void get_psi(const double* const ylmcoef, - const double delta_r, - const int bxyz, - const int nwmax, - const int max_atom, - const int* const ucell_atom_nwl, - const bool* const atom_iw2_new, - const int* const atom_iw2_ylm, - const int* const atom_nw, - const double* const rcut, - const int nr_max, - const double* const psi_u, - const double* const mcell_pos, - const double* const dr_part, - const uint8_t* const atoms_type, - const int* const atoms_num_info, - double* psi); - -__global__ void psir_dot(const int bxyz, - const int nwmax, - const int* atoms_num_info, - const double* __restrict__ vec_a_g, - const double* __restrict__ vec_b_g, - double** results_g); - -} // namespace GintKernel -#endif // GINT_RHO_CUH \ No newline at end of file diff --git a/source/source_lcao/module_gint/kernels/cuda/gint_vl.cu b/source/source_lcao/module_gint/kernels/cuda/gint_vl.cu deleted file mode 100644 index 3b92455e60..0000000000 --- a/source/source_lcao/module_gint/kernels/cuda/gint_vl.cu +++ /dev/null @@ -1,75 +0,0 @@ -#include "gint_vl.cuh" -#include "interp.cuh" -#include "cuda_tools.cuh" -#include "sph.cuh" -namespace GintKernel -{ - -__global__ void get_psi_and_vldr3(const double* const ylmcoef, - const double delta_r, - const int bxyz, - const double nwmax, - const double max_atom, - const int* const ucell_atom_nwl, - const bool* const atom_iw2_new, - const int* const atom_iw2_ylm, - const int* const atom_nw, - const double* const rcut, - const int nr_max, - const double* const psi_u, - const double* const mcell_pos, - const double* const dr_part, - const double* const vldr3, - const uint8_t* const atoms_type, - const int* const atoms_num_info, - double* psi, - double* psi_vldr3) -{ - const int bcell_id = blockIdx.x; - const int num_atoms = atoms_num_info[2 * bcell_id]; - const int pre_atoms = atoms_num_info[2 * bcell_id + 1]; - const int mcell_id = blockIdx.y; - const double vldr3_value = vldr3[bcell_id * bxyz + mcell_id]; - const double mcell_pos_x = mcell_pos[3 * mcell_id]; - const double mcell_pos_y = mcell_pos[3 * mcell_id + 1]; - const double mcell_pos_z = mcell_pos[3 * mcell_id + 2]; - - for(int atom_id = threadIdx.x; atom_id < num_atoms; atom_id += blockDim.x) - { - const int dr_start = 3 * (pre_atoms + atom_id); - const double dr_x = dr_part[dr_start] + mcell_pos_x; - const double dr_y = dr_part[dr_start + 1] + mcell_pos_y; - const double dr_z = dr_part[dr_start + 2] + mcell_pos_z; - double dist = sqrt(dr_x * dr_x + dr_y * dr_y + dr_z * dr_z); - const int atype = __ldg(atoms_type + pre_atoms + atom_id); - if(dist < rcut[atype]) - { - if (dist < 1.0E-9) - { - dist += 1.0E-9; - } - double dr[3] = {dr_x / dist, dr_y / dist, dr_z / dist}; - double ylma[49]; - const int nwl = __ldg(ucell_atom_nwl + atype); - spherical_harmonics(dr, nwl, ylma, ylmcoef); - int psi_idx = (bcell_id * max_atom + atom_id) * bxyz * nwmax + mcell_id; - interp_vl(dist, - delta_r, - atype, - nwmax, - bxyz, - nr_max, - atom_nw, - atom_iw2_new, - psi_u, - ylma, - atom_iw2_ylm, - vldr3_value, - psi, - psi_vldr3, - psi_idx); - } - } -} - -} // namespace GintKernel \ No newline at end of file diff --git a/source/source_lcao/module_gint/kernels/cuda/gint_vl.cuh b/source/source_lcao/module_gint/kernels/cuda/gint_vl.cuh deleted file mode 100644 index ada7954968..0000000000 --- a/source/source_lcao/module_gint/kernels/cuda/gint_vl.cuh +++ /dev/null @@ -1,40 +0,0 @@ -#ifndef GINT_VL_CUH -#define GINT_VL_CUH - -#include -#include -namespace GintKernel -{ -/* - * @brief: get the value of the spherical harmonics - * - * - * @note the left and right matrix elements of the grid point integral. - * We can understand the grid point integral of the local potential term - * as the following operation: - * H = psi * vlocal * psi * dr^3. - * Here, the matrix element of the left matrix is psi, and the matrix - * element of the right matrix is vlocal * psi * dr^3. - */ -__global__ void get_psi_and_vldr3(const double* const ylmcoef, - const double delta_r, - const int bxyz, - const double nwmax, - const double max_atom, - const int* const ucell_atom_nwl, - const bool* const atom_iw2_new, - const int* const atom_iw2_ylm, - const int* const atom_nw, - const double* const rcut, - const int nr_max, - const double* const psi_u, - const double* const mcell_pos, - const double* const dr_part, - const double* const vldr3, - const uint8_t* const atoms_type, - const int* const atoms_num_info, - double* psi, - double* psi_vldr3); - -} // namespace GintKernel -#endif // GINT_VL_CUH \ No newline at end of file diff --git a/source/source_lcao/module_gint/kernels/cuda/interp.cuh b/source/source_lcao/module_gint/kernels/cuda/interp.cuh deleted file mode 100644 index 31ccf3ca2c..0000000000 --- a/source/source_lcao/module_gint/kernels/cuda/interp.cuh +++ /dev/null @@ -1,204 +0,0 @@ -#ifndef INTERP_CUH -#define INTERP_CUH - -#include - -namespace GintKernel -{ -// if exponent is an integer between 0 and 5 (the most common cases in gint), -// pow_int is much faster than std::pow -static __device__ double pow_int(double base, int exp) -{ - switch (exp) - { - case 0: - return 1.0; - case 1: - return base; - case 2: - return base * base; - case 3: - return base * base * base; - case 4: - return base * base * base * base; - case 5: - return base * base * base * base * base; - default: - double result = pow(base, exp); - return result; - } -} - -static __device__ void interp_rho(const double dist, - const double delta_r, - const int atype, - const double nwmax, - const int nr_max, - const int* __restrict__ atom_nw, - const bool* __restrict__ atom_iw2_new, - const double* __restrict__ psi_u, - const double ylma[49], - const int* __restrict__ atom_iw2_ylm, - double* psi, - int psi_idx) -{ - const double distance = dist / delta_r; - - const int ip = (int)(distance); - const double dx = distance - ip; - const double dx2 = dx * dx; - const double dx3 = dx2 * dx; - - const double c3 = 3.0 * dx2 - 2.0 * dx3; - const double c1 = 1.0 - c3; - const double c2 = (dx - 2.0 * dx2 + dx3) * delta_r; - const double c4 = (dx3 - dx2) * delta_r; - - double phi = 0.0; - const int it_nw = atype * nwmax; - int iw_nr = (it_nw * nr_max + ip) * 2; - int it_nw_iw = it_nw; - for (int iw = 0; iw < atom_nw[atype]; ++iw) - { - if (atom_iw2_new[it_nw_iw]) - { - phi = c1 * psi_u[iw_nr] + c2 * psi_u[iw_nr + 1] - + c3 * psi_u[iw_nr + 2] + c4 * psi_u[iw_nr + 3]; - } - psi[psi_idx] = phi * ylma[atom_iw2_ylm[it_nw_iw]]; - psi_idx += 1; - iw_nr += 2 * nr_max; - it_nw_iw++; - } -} - -static __device__ void interp_vl(const double dist, - const double delta_r, - const int atype, - const double nwmax, - const int bxyz, - const int nr_max, - const int* __restrict__ atom_nw, - const bool* __restrict__ atom_iw2_new, - const double* __restrict__ psi_u, - const double ylma[49], - const int* __restrict__ atom_iw2_ylm, - const double vldr3_value, - double* psi, - double* psi_vldr3, - int psi_idx) -{ - const double distance = dist / delta_r; - - const int ip = (int)(distance); - const double dx = distance - ip; - const double dx2 = dx * dx; - const double dx3 = dx2 * dx; - - const double c3 = 3.0 * dx2 - 2.0 * dx3; - const double c1 = 1.0 - c3; - const double c2 = (dx - 2.0 * dx2 + dx3) * delta_r; - const double c4 = (dx3 - dx2) * delta_r; - - double phi = 0.0; - const int it_nw = atype * nwmax; - int iw_nr = (it_nw * nr_max + ip) * 2; - int it_nw_iw = it_nw; - for (int iw = 0; iw < atom_nw[atype]; ++iw) - { - if (atom_iw2_new[it_nw_iw]) - { - phi = c1 * psi_u[iw_nr] + c2 * psi_u[iw_nr + 1] - + c3 * psi_u[iw_nr + 2] + c4 * psi_u[iw_nr + 3]; - } - psi[psi_idx] = phi * ylma[atom_iw2_ylm[it_nw_iw]]; - psi_vldr3[psi_idx] = psi[psi_idx] * vldr3_value; - psi_idx += bxyz; - iw_nr += 2 * nr_max; - it_nw_iw++; - } -} - -static __device__ void interp_f(const double dist, - const double delta_r, - const int atype, - const double nwmax, - const int nr_max, - const int* __restrict__ atom_nw, - const bool* __restrict__ atom_iw2_new, - const double* __restrict__ psi_u, - const double ylma[49], - const int* __restrict__ atom_iw2_l, - const int* __restrict__ atom_iw2_ylm, - const double vldr3_value, - const double * __restrict__ dr, - const double grly[49][3], - int psi_idx, - double* psi, - double* dpsi, - double* d2psi) -{ - // Calculate normalized position for interpolation - const double postion = dist / delta_r; - // Extract integer part and fractional part of the position - const double ip = static_cast(postion); - const double x0 = postion - ip; - const double x1 = 1.0 - x0; - const double x2 = 2.0 - x0; - const double x3 = 3.0 - x0; - const double x12 = x1 * x2 / 6; - const double x03 = x0 * x3 / 2; - // Temporary variables for interpolation - double tmp = 0.0; - double dtmp = 0.0; - // Loop over non-zero elements in atom_nw array - const int it_nw = atype * nwmax; - int iw_nr = (it_nw * nr_max + ip) * 2; - int it_nw_iw = it_nw; - for (int iw = 0; iw < atom_nw[atype]; ++iw) - { - if (atom_iw2_new[it_nw_iw]) - { - // Perform interpolation using cubic B-spline - // basis functions - tmp = x12 * (psi_u[iw_nr] * x3 + psi_u[iw_nr + 6] * x0) - + x03 * (psi_u[iw_nr + 2] * x2 - psi_u[iw_nr + 4] * x1); - dtmp = x12 * (psi_u[iw_nr + 1] * x3 + psi_u[iw_nr + 7] * x0) - + x03 * (psi_u[iw_nr + 3] * x2 - psi_u[iw_nr + 5] * x1); - } - // Extract information from atom_iw2_* arrays - const int ll = atom_iw2_l[it_nw_iw]; - const int idx_lm = atom_iw2_ylm[it_nw_iw]; - const double rl = pow_int(dist, ll); - const double rl_r = 1.0 / rl; - const double dist_r = 1 / dist; - const int dpsi_idx = psi_idx * 3; - const int d2psi_idx = psi_idx * 6; - // Compute derivatives with respect to spatial - // coordinates - const double tmpdphi_rly - = (dtmp - tmp * ll * dist_r) * rl_r * ylma[idx_lm] * dist_r; - const double tmprl = tmp * rl_r; - const double dpsirx = tmpdphi_rly * dr[0] + tmprl * grly[idx_lm][0]; - const double dpsiry = tmpdphi_rly * dr[1] + tmprl * grly[idx_lm][1]; - const double dpsirz = tmpdphi_rly * dr[2] + tmprl * grly[idx_lm][2]; - - psi[psi_idx] = tmprl * ylma[idx_lm] * vldr3_value; - dpsi[dpsi_idx] = dpsirx; - dpsi[dpsi_idx + 1] = dpsiry; - dpsi[dpsi_idx + 2] = dpsirz; - d2psi[d2psi_idx] = dpsirx * dr[0]; - d2psi[d2psi_idx + 1] = dpsirx * dr[1]; - d2psi[d2psi_idx + 2] = dpsirx * dr[2]; - d2psi[d2psi_idx + 3] = dpsiry * dr[1]; - d2psi[d2psi_idx + 4] = dpsiry * dr[2]; - d2psi[d2psi_idx + 5] = dpsirz * dr[2]; - // Update loop counters and indices - psi_idx += 1; - iw_nr += 2 * nr_max; - it_nw_iw++; - } -} -} // namespace GintKernel - -#endif \ No newline at end of file diff --git a/source/source_lcao/module_gint/kernels/cuda/sph.cuh b/source/source_lcao/module_gint/kernels/cuda/sph.cuh deleted file mode 100644 index fec963d9fd..0000000000 --- a/source/source_lcao/module_gint/kernels/cuda/sph.cuh +++ /dev/null @@ -1,519 +0,0 @@ -#ifndef SPH_CUH -#define SPH_CUH - -#include "cuda_runtime.h" -#include "device_launch_parameters.h" - -namespace GintKernel -{ - -static __device__ void spherical_harmonics(const double* const dr, - const int nwl, - double (&ylma)[49], - const double* const ylmcoef) -{ - /*************************** - L = 0 - ***************************/ - ylma[0] = ylmcoef[0]; // l=0, m=0 - double tmp0; - if (nwl == 0) - return; - - /*************************** - L = 1 - ***************************/ - ylma[1] = ylmcoef[1] * dr[2]; // l=1, m=0 - ylma[2] = -ylmcoef[1] * dr[0]; // l=1, m=1 - ylma[3] = -ylmcoef[1] * dr[1]; // l=1, m=-1 - if (nwl == 1) - return; - - /*************************** - L = 2 - ***************************/ - tmp0=ylmcoef[3] * ylma[0]; - ylma[4] = ylmcoef[2] * dr[2] * ylma[1] - tmp0 ; // l=2, m=0 - tmp0 = ylmcoef[4] * dr[2]; - ylma[5] = tmp0 * ylma[2]; // l=2,m=1 - ylma[6] = tmp0 * ylma[3]; // l=2,m=-1 - - tmp0 = ylmcoef[4] * dr[0]; - ylma[7] = ylmcoef[5] * ylma[4] - ylmcoef[6] * ylma[0] - - tmp0 * ylma[2]; // l=2,m=2 - ylma[8] = -tmp0 * ylma[3]; - if (nwl == 2) - return; - - /*************************** - L = 3 - ***************************/ - tmp0=ylmcoef[8] * ylma[1]; - ylma[9] = ylmcoef[7] * dr[2] * ylma[4] - tmp0; // l=3, m=0 - - tmp0 = ylmcoef[9] * dr[2]; - ylma[10] = tmp0 * ylma[5] - ylmcoef[10] * ylma[2]; // l=3,m=1 - ylma[11] = tmp0 * ylma[6] - ylmcoef[10] * ylma[3]; // l=3,m=-1 - - tmp0 = ylmcoef[11] * dr[2]; - ylma[12] = tmp0 * ylma[7]; // l=3,m=2 - ylma[13] = tmp0 * ylma[8]; // l=3,m=-2 - - tmp0 = ylmcoef[14] * dr[0]; - ylma[14] = ylmcoef[12] * ylma[10] - ylmcoef[13] * ylma[2] - - tmp0 * ylma[7]; // l=3,m=3 - ylma[15] = ylmcoef[12] * ylma[11] - ylmcoef[13] * ylma[3] - - tmp0 * ylma[8]; // l=3,m=-3 - if (nwl == 3) - return; - - /*************************** - L = 4 - ***************************/ - tmp0=ylmcoef[16] * ylma[4]; - ylma[16] = ylmcoef[15] * dr[2] * ylma[9] - tmp0; // l=4,m=0 - - tmp0 = ylmcoef[17] * dr[2]; - ylma[17] = tmp0 * ylma[10] - ylmcoef[18] * ylma[5]; // l=4,m=1 - ylma[18] = tmp0 * ylma[11] - ylmcoef[18] * ylma[6]; // l=4,m=-1 - - tmp0 = ylmcoef[19] * dr[2]; - ylma[19] = tmp0 * ylma[12] - ylmcoef[20] * ylma[7]; // l=4,m=2 - ylma[20] = tmp0 * ylma[13] - ylmcoef[20] * ylma[8]; // l=4,m=-2 - - tmp0 = 3.0 * dr[2]; - ylma[21] = tmp0 * ylma[14]; // l=4,m=3 - ylma[22] = tmp0 * ylma[15]; // l=4,m=-3 - - tmp0 = ylmcoef[23] * dr[0]; - ylma[23] = ylmcoef[21] * ylma[19] - ylmcoef[22] * ylma[7] - - tmp0 * ylma[14]; // l=4,m=4 - ylma[24] = ylmcoef[21] * ylma[20] - ylmcoef[22] * ylma[8] - - tmp0 * ylma[15]; // l=4,m=-4 - if (nwl == 4) - return; - - /*************************** - L = 5 - ***************************/ - tmp0=ylmcoef[25] * ylma[9]; - ylma[25] - = ylmcoef[24] * dr[2] * ylma[16] - tmp0; // l=5,m=0 - - tmp0 = ylmcoef[26] * dr[2]; - ylma[26] = tmp0 * ylma[17] - ylmcoef[27] * ylma[10]; // l=5,m=1 - ylma[27] = tmp0 * ylma[18] - ylmcoef[27] * ylma[11]; // l=5,m=-1 - - tmp0 = ylmcoef[28] * dr[2]; - ylma[28] = tmp0 * ylma[19] - ylmcoef[29] * ylma[12]; // l=5,m=2 - ylma[29] = tmp0 * ylma[20] - ylmcoef[29] * ylma[13]; // l=5,m=-2 - - tmp0 = ylmcoef[30] * dr[2]; - ylma[30] = tmp0 * ylma[21] - ylmcoef[31] * ylma[14]; // l=5,m=3 - ylma[31] = tmp0 * ylma[22] - ylmcoef[31] * ylma[15]; // l=5,m=-3 - - tmp0 = ylmcoef[32] * dr[2]; - ylma[32] = tmp0 * ylma[23]; // l=5,m=4 - ylma[33] = tmp0 * ylma[24]; // l=5,m=-4 - - tmp0 = ylmcoef[35] * dr[0]; - ylma[34] = ylmcoef[33] * ylma[30] - ylmcoef[34] * ylma[14] - - tmp0 * ylma[23]; // l=5,m=5 - ylma[35] = ylmcoef[33] * ylma[31] - ylmcoef[34] * ylma[15] - - tmp0 * ylma[24]; // l=5,m=-5 - if (nwl == 5) - return; - /* - // if nwl > 5 - for (int il = 6; il <= nwl; il++) - { - int istart = il * il; - int istart1 = (il - 1) * (il - 1); - int istart2 = (il - 2) * (il - 2); - - double fac2 = sqrt(4.0 * istart - 1.0); - double fac4 = sqrt(4.0 * istart1 - 1.0); - - for (int im = 0; im < 2 * il - 1; im++) - { - int imm = (im + 1) / 2; - ylma[istart + im] = fac2 / sqrt((double)istart - imm * imm) * (dr[2] - * ylma[istart1 + im] - sqrt((double)istart1 - imm * imm) / fac4 * - ylma[istart2 + im]); - } - - double bl1 = sqrt(2.0 * il / (2.0 * il + 1.0)); - double bl2 = sqrt((2.0 * il - 2.0) / (2.0 * il - 1.0)); - double bl3 = sqrt(2.0) / fac2; - - ylma[istart + 2 * il - 1] = (bl3 * ylma[istart + 2 * il - 5] - bl2 * - ylma[istart2 + 2 * il - 5] - 2.0 * dr[0] * ylma[istart1 + 2 * il - 3]) / - bl1; ylma[istart + 2 * il] = (bl3 * ylma[istart + 2 * il - 4] - bl2 * - ylma[istart2 + 2 * il - 4] - 2.0 * dr[0] * ylma[istart1 + 2 * il - 2]) / - bl1; - }*/ -} - -static __device__ void spherical_harmonics_d(const double* const dr, - const double distance, - double (&grly)[49][3], - const int nwl, - double (&ylma)[49], - const double* const ylmcoef) -{ - double tmp0; - double tx = 2.0 * dr[0]; - double ty = 2.0 * dr[1]; - double tz = 2.0 * dr[2]; - ylma[0] = ylmcoef[0]; // l=0, m=0 - grly[0][0] = grly[0][1] = grly[0][2] = 0.0; - if (nwl == 0) - return; - - /*************************** - L = 1 - ***************************/ - ylma[1] = ylmcoef[1] * dr[2]; // l=1, m=0 - grly[1][0] = grly[1][1] = 0.0; - grly[1][2] = ylmcoef[1]; - ylma[2] = -ylmcoef[1] * dr[0]; // l=1, m=1 - grly[2][1] = grly[2][2] = 0.0; - grly[2][0] = -ylmcoef[1]; - ylma[3] = -ylmcoef[1] * dr[1]; // l=1, m=-1 - grly[3][0] = grly[3][2] = 0.0; - grly[3][1] = -ylmcoef[1]; - if (nwl == 1) - return; - - /*************************** - L = 2 - ***************************/ - ylma[4] = ylmcoef[2] * dr[2] * ylma[1] - - ylmcoef[3] * ylma[0] * distance; // l=2, m=0 - grly[4][0] - = ylmcoef[2] * dr[2] * grly[1][0] - - ylmcoef[3] * (grly[0][0] * distance + ylma[0] * tx); // l=2, m=0 - grly[4][1] - = ylmcoef[2] * dr[2] * grly[1][1] - - ylmcoef[3] * (grly[0][1] * distance + ylma[0] * ty); // l=2, m=0 - grly[4][2] - = ylmcoef[2] * (dr[2] * grly[1][2] + ylma[1]) - - ylmcoef[3] * (grly[0][2] * distance + ylma[0] * tz); // l=2, m=0 - - tmp0 = ylmcoef[4] * dr[2]; - ylma[5] = tmp0 * ylma[2]; // l=2,m=1 - grly[5][0] = tmp0 * grly[2][0]; - grly[5][1] = tmp0 * grly[2][1]; - grly[5][2] = ylmcoef[4] * (ylma[2] + dr[2] * grly[2][2]); - - ylma[6] = tmp0 * ylma[3]; // l=2,m=-1 - grly[6][0] = tmp0 * grly[3][0]; - grly[6][1] = tmp0 * grly[3][1]; - grly[6][2] = ylmcoef[4] * (ylma[3] + dr[2] * grly[3][2]); - - tmp0 = ylmcoef[4] * dr[0]; - ylma[7] = ylmcoef[5] * ylma[4] - ylmcoef[6] * ylma[0] * distance - - tmp0 * ylma[2]; // l=2,m=2 - grly[7][0] = ylmcoef[5] * grly[4][0] - - ylmcoef[6] * (ylma[0] * tx + grly[0][0] * distance) - - ylmcoef[4] * (dr[0] * grly[2][0] + ylma[2]); - grly[7][1] = ylmcoef[5] * grly[4][1] - - ylmcoef[6] * (ylma[0] * ty + grly[0][1] * distance) - - tmp0 * grly[2][1]; - grly[7][2] = ylmcoef[5] * grly[4][2] - - ylmcoef[6] * (ylma[0] * tz + grly[0][2] * distance) - - tmp0 * grly[2][2]; - - ylma[8] = -tmp0 * ylma[3]; - grly[8][0] = -ylmcoef[4] * (ylma[3] + dr[0] * grly[3][0]); - grly[8][1] = -tmp0 * grly[3][1]; - grly[8][2] = -tmp0 * grly[3][2]; - if (nwl == 2) - return; - - /*************************** - L = 3 - ***************************/ - ylma[9] = ylmcoef[7] * dr[2] * ylma[4] - - ylmcoef[8] * ylma[1] * distance; // l=3, m=0 - grly[9][0] = ylmcoef[7] * dr[2] * grly[4][0] - - ylmcoef[8] * (ylma[1] * tx + grly[1][0] * distance); - grly[9][1] = ylmcoef[7] * dr[2] * grly[4][1] - - ylmcoef[8] * (ylma[1] * ty + grly[1][1] * distance); - grly[9][2] = ylmcoef[7] * (ylma[4] + dr[2] * grly[4][2]) - - ylmcoef[8] * (ylma[1] * tz + grly[1][2] * distance); - - tmp0 = ylmcoef[9] * dr[2]; - ylma[10] = tmp0 * ylma[5] - ylmcoef[10] * ylma[2] * distance; // l=3,m=1 - grly[10][0] = tmp0 * grly[5][0] - - ylmcoef[10] * (grly[2][0] * distance + ylma[2] * tx); - grly[10][1] = tmp0 * grly[5][1] - - ylmcoef[10] * (grly[2][1] * distance + ylma[2] * ty); - grly[10][2] = ylmcoef[9] * (dr[2] * grly[5][2] + ylma[5]) - - ylmcoef[10] * (grly[2][2] * distance + ylma[2] * tz); - - ylma[11] = tmp0 * ylma[6] - ylmcoef[10] * ylma[3] * distance; // l=3,m=-1 - grly[11][0] = tmp0 * grly[6][0] - - ylmcoef[10] * (grly[3][0] * distance + ylma[3] * tx); - grly[11][1] = tmp0 * grly[6][1] - - ylmcoef[10] * (grly[3][1] * distance + ylma[3] * ty); - grly[11][2] = ylmcoef[9] * (dr[2] * grly[6][2] + ylma[6]) - - ylmcoef[10] * (grly[3][2] * distance + ylma[3] * tz); - - tmp0 = ylmcoef[11] * dr[2]; - ylma[12] = tmp0 * ylma[7]; // l=3,m=2 - grly[12][0] = tmp0 * grly[7][0]; - grly[12][1] = tmp0 * grly[7][1]; - grly[12][2] = ylmcoef[11] * (dr[2] * grly[7][2] + ylma[7]); - - ylma[13] = tmp0 * ylma[8]; // l=3,m=-2 - grly[13][0] = tmp0 * grly[8][0]; - grly[13][1] = tmp0 * grly[8][1]; - grly[13][2] = ylmcoef[11] * (dr[2] * grly[8][2] + ylma[8]); - - tmp0 = ylmcoef[14] * dr[0]; - ylma[14] = ylmcoef[12] * ylma[10] - ylmcoef[13] * ylma[2] * distance - - tmp0 * ylma[7]; // l=3,m=3 - grly[14][0] = ylmcoef[12] * grly[10][0] - - ylmcoef[13] * (ylma[2] * tx + grly[2][0] * distance) - - ylmcoef[14] * (ylma[7] + dr[0] * grly[7][0]); - grly[14][1] = ylmcoef[12] * grly[10][1] - - ylmcoef[13] * (ylma[2] * ty + grly[2][1] * distance) - - tmp0 * grly[7][1]; - grly[14][2] = ylmcoef[12] * grly[10][2] - - ylmcoef[13] * (ylma[2] * tz + grly[2][2] * distance) - - tmp0 * grly[7][2]; - - ylma[15] = ylmcoef[12] * ylma[11] - ylmcoef[13] * ylma[3] * distance - - tmp0 * ylma[8]; // l=3,m=-3 - grly[15][0] = ylmcoef[12] * grly[11][0] - - ylmcoef[13] * (ylma[3] * tx + grly[3][0] * distance) - - ylmcoef[14] * (ylma[8] + dr[0] * grly[8][0]); - grly[15][1] = ylmcoef[12] * grly[11][1] - - ylmcoef[13] * (ylma[3] * ty + grly[3][1] * distance) - - tmp0 * grly[8][1]; - grly[15][2] = ylmcoef[12] * grly[11][2] - - ylmcoef[13] * (ylma[3] * tz + grly[3][2] * distance) - - tmp0 * grly[8][2]; - if (nwl == 3) - return; - - /*************************** - L = 4 - ***************************/ - ylma[16] = ylmcoef[15] * dr[2] * ylma[9] - - ylmcoef[16] * ylma[4] * distance; // l=4,m=0 - grly[16][0] = ylmcoef[15] * dr[2] * grly[9][0] - - ylmcoef[16] * (ylma[4] * tx + grly[4][0] * distance); - grly[16][1] = ylmcoef[15] * dr[2] * grly[9][1] - - ylmcoef[16] * (ylma[4] * ty + grly[4][1] * distance); - grly[16][2] = ylmcoef[15] * (dr[2] * grly[9][2] + ylma[9]) - - ylmcoef[16] * (ylma[4] * tz + grly[4][2] * distance); - - tmp0 = ylmcoef[17] * dr[2]; - ylma[17] = tmp0 * ylma[10] - ylmcoef[18] * ylma[5] * distance; // l=4,m=1 - grly[17][0] = tmp0 * grly[10][0] - - ylmcoef[18] * (ylma[5] * tx + grly[5][0] * distance); - grly[17][1] = tmp0 * grly[10][1] - - ylmcoef[18] * (ylma[5] * ty + grly[5][1] * distance); - grly[17][2] = ylmcoef[17] * (dr[2] * grly[10][2] + ylma[10]) - - ylmcoef[18] * (ylma[5] * tz + grly[5][2] * distance); - - ylma[18] = tmp0 * ylma[11] - ylmcoef[18] * ylma[6] * distance; // l=4,m=-1 - grly[18][0] = tmp0 * grly[11][0] - - ylmcoef[18] * (ylma[6] * tx + grly[6][0] * distance); - grly[18][1] = tmp0 * grly[11][1] - - ylmcoef[18] * (ylma[6] * ty + grly[6][1] * distance); - grly[18][2] = ylmcoef[17] * (dr[2] * grly[11][2] + ylma[11]) - - ylmcoef[18] * (ylma[6] * tz + grly[6][2] * distance); - - tmp0 = ylmcoef[19] * dr[2]; - ylma[19] = tmp0 * ylma[12] - ylmcoef[20] * ylma[7] * distance; // l=4,m=2 - grly[19][0] = tmp0 * grly[12][0] - - ylmcoef[20] * (ylma[7] * tx + grly[7][0] * distance); - grly[19][1] = tmp0 * grly[12][1] - - ylmcoef[20] * (ylma[7] * ty + grly[7][1] * distance); - grly[19][2] = ylmcoef[19] * (dr[2] * grly[12][2] + ylma[12]) - - ylmcoef[20] * (ylma[7] * tz + grly[7][2] * distance); - - ylma[20] = tmp0 * ylma[13] - ylmcoef[20] * ylma[8] * distance; // l=4,m=-2 - grly[20][0] = tmp0 * grly[13][0] - - ylmcoef[20] * (ylma[8] * tx + grly[8][0] * distance); - grly[20][1] = tmp0 * grly[13][1] - - ylmcoef[20] * (ylma[8] * ty + grly[8][1] * distance); - grly[20][2] = ylmcoef[19] * (dr[2] * grly[13][2] + ylma[13]) - - ylmcoef[20] * (ylma[8] * tz + grly[8][2] * distance); - - tmp0 = 3.0 * dr[2]; - ylma[21] = tmp0 * ylma[14]; // l=4,m=3 - grly[21][0] = tmp0 * grly[14][0]; - grly[21][1] = tmp0 * grly[14][1]; - grly[21][2] = 3.0 * (dr[2] * grly[14][2] + ylma[14]); - - ylma[22] = tmp0 * ylma[15]; // l=4,m=-3 - grly[22][0] = tmp0 * grly[15][0]; - grly[22][1] = tmp0 * grly[15][1]; - grly[22][2] = 3.0 * (dr[2] * grly[15][2] + ylma[15]); - - tmp0 = ylmcoef[23] * dr[0]; - ylma[23] = ylmcoef[21] * ylma[19] - ylmcoef[22] * ylma[7] * distance - - tmp0 * ylma[14]; // l=4,m=4 - grly[23][0] = ylmcoef[21] * grly[19][0] - - ylmcoef[22] * (ylma[7] * tx + grly[7][0] * distance) - - ylmcoef[23] * (dr[0] * grly[14][0] + ylma[14]); - grly[23][1] = ylmcoef[21] * grly[19][1] - - ylmcoef[22] * (ylma[7] * ty + grly[7][1] * distance) - - tmp0 * grly[14][1]; - grly[23][2] = ylmcoef[21] * grly[19][2] - - ylmcoef[22] * (ylma[7] * tz + grly[7][2] * distance) - - tmp0 * grly[14][2]; - - ylma[24] = ylmcoef[21] * ylma[20] - ylmcoef[22] * ylma[8] * distance - - tmp0 * ylma[15]; // l=4,m=-4 - grly[24][0] = ylmcoef[21] * grly[20][0] - - ylmcoef[22] * (ylma[8] * tx + grly[8][0] * distance) - - ylmcoef[23] * (dr[0] * grly[15][0] + ylma[15]); - grly[24][1] = ylmcoef[21] * grly[20][1] - - ylmcoef[22] * (ylma[8] * ty + grly[8][1] * distance) - - tmp0 * grly[15][1]; - grly[24][2] = ylmcoef[21] * grly[20][2] - - ylmcoef[22] * (ylma[8] * tz + grly[8][2] * distance) - - tmp0 * grly[15][2]; - if (nwl == 4) - return; - - /*************************** - L = 5 - ***************************/ - ylma[25] = ylmcoef[24] * dr[2] * ylma[16] - - ylmcoef[25] * ylma[9] * distance; // l=5,m=0 - grly[25][0] = ylmcoef[24] * dr[2] * grly[16][0] - - ylmcoef[25] * (ylma[9] * tx + grly[9][0] * distance); - grly[25][1] = ylmcoef[24] * dr[2] * grly[16][1] - - ylmcoef[25] * (ylma[9] * ty + grly[9][1] * distance); - grly[25][2] = ylmcoef[24] * (dr[2] * grly[16][2] + ylma[16]) - - ylmcoef[25] * (ylma[9] * tz + grly[9][2] * distance); - - tmp0 = ylmcoef[26] * dr[2]; - ylma[26] = tmp0 * ylma[17] - ylmcoef[27] * ylma[10] * distance; // l=5,m=1 - grly[26][0] = tmp0 * grly[17][0] - - ylmcoef[27] * (ylma[10] * tx + grly[10][0] * distance); - grly[26][1] = tmp0 * grly[17][1] - - ylmcoef[27] * (ylma[10] * ty + grly[10][1] * distance); - grly[26][2] = ylmcoef[26] * (dr[2] * grly[17][2] + ylma[17]) - - ylmcoef[27] * (ylma[10] * tz + grly[10][2] * distance); - - ylma[27] = tmp0 * ylma[18] - ylmcoef[27] * ylma[11] * distance; // l=5,m=-1 - grly[27][0] = tmp0 * grly[18][0] - - ylmcoef[27] * (ylma[11] * tx + grly[11][0] * distance); - grly[27][1] = tmp0 * grly[18][1] - - ylmcoef[27] * (ylma[11] * ty + grly[11][1] * distance); - grly[27][2] = ylmcoef[26] * (dr[2] * grly[18][2] + ylma[18]) - - ylmcoef[27] * (ylma[11] * tz + grly[11][2] * distance); - - tmp0 = ylmcoef[28] * dr[2]; - ylma[28] = tmp0 * ylma[19] - ylmcoef[29] * ylma[12] * distance; // l=5,m=2 - grly[28][0] = tmp0 * grly[19][0] - - ylmcoef[29] * (ylma[12] * tx + grly[12][0] * distance); - grly[28][1] = tmp0 * grly[19][1] - - ylmcoef[29] * (ylma[12] * ty + grly[12][1] * distance); - grly[28][2] = ylmcoef[28] * (dr[2] * grly[19][2] + ylma[19]) - - ylmcoef[29] * (ylma[12] * tz + grly[12][2] * distance); - - ylma[29] = tmp0 * ylma[20] - ylmcoef[29] * ylma[13] * distance; // l=5,m=-2 - grly[29][0] = tmp0 * grly[20][0] - - ylmcoef[29] * (ylma[13] * tx + grly[13][0] * distance); - grly[29][1] = tmp0 * grly[20][1] - - ylmcoef[29] * (ylma[13] * ty + grly[13][1] * distance); - grly[29][2] = ylmcoef[28] * (dr[2] * grly[20][2] + ylma[20]) - - ylmcoef[29] * (ylma[13] * tz + grly[13][2] * distance); - - tmp0 = ylmcoef[30] * dr[2]; - ylma[30] = tmp0 * ylma[21] - ylmcoef[31] * ylma[14] * distance; // l=5,m=3 - grly[30][0] = tmp0 * grly[21][0] - - ylmcoef[31] * (grly[14][0] * distance + ylma[14] * tx); - grly[30][1] = tmp0 * grly[21][1] - - ylmcoef[31] * (grly[14][1] * distance + ylma[14] * ty); - grly[30][2] = ylmcoef[30] * (dr[2] * grly[21][2] + ylma[21]) - - ylmcoef[31] * (ylma[14] * tz + grly[14][2] * distance); - - ylma[31] = tmp0 * ylma[22] - ylmcoef[31] * ylma[15] * distance; // l=5,m=-3 - grly[31][0] = tmp0 * grly[22][0] - - ylmcoef[31] * (grly[15][0] * distance + ylma[15] * tx); - grly[31][1] = tmp0 * grly[22][1] - - ylmcoef[31] * (grly[15][1] * distance + ylma[15] * ty); - grly[31][2] = ylmcoef[30] * (dr[2] * grly[22][2] + ylma[22]) - - ylmcoef[31] * (ylma[15] * tz + grly[15][2] * distance); - - tmp0 = ylmcoef[32] * dr[2]; - ylma[32] = tmp0 * ylma[23]; // l=5,m=4 - grly[32][0] = tmp0 * grly[23][0]; - grly[32][1] = tmp0 * grly[23][1]; - grly[32][2] = ylmcoef[32] * (ylma[23] + dr[2] * grly[23][2]); - - ylma[33] = tmp0 * ylma[24]; // l=5,m=-4 - grly[33][0] = tmp0 * grly[24][0]; - grly[33][1] = tmp0 * grly[24][1]; - grly[33][2] = ylmcoef[32] * (ylma[24] + dr[2] * grly[24][2]); - - tmp0 = ylmcoef[35] * dr[0]; - ylma[34] = ylmcoef[33] * ylma[30] - ylmcoef[34] * ylma[14] * distance - - tmp0 * ylma[23]; // l=5,m=5 - grly[34][0] = ylmcoef[33] * grly[30][0] - - ylmcoef[34] * (ylma[14] * tx + grly[14][0] * distance) - - ylmcoef[35] * (dr[0] * grly[23][0] + ylma[23]); - grly[34][1] = ylmcoef[33] * grly[30][1] - - ylmcoef[34] * (ylma[14] * ty + grly[14][1] * distance) - - tmp0 * grly[23][1]; - grly[34][2] = ylmcoef[33] * grly[30][2] - - ylmcoef[34] * (ylma[14] * tz + grly[14][2] * distance) - - tmp0 * grly[23][2]; - - ylma[35] = ylmcoef[33] * ylma[31] - ylmcoef[34] * ylma[15] * distance - - tmp0 * ylma[24]; // l=5,m=-5 - grly[35][0] = ylmcoef[33] * grly[31][0] - - ylmcoef[34] * (ylma[15] * tx + grly[15][0] * distance) - - ylmcoef[35] * (dr[0] * grly[24][0] + ylma[24]); - grly[35][1] = ylmcoef[33] * grly[31][1] - - ylmcoef[34] * (ylma[15] * ty + grly[15][1] * distance) - - tmp0 * grly[24][1]; - grly[35][2] = ylmcoef[33] * grly[31][2] - - ylmcoef[34] * (ylma[15] * tz + grly[15][2] * distance) - - tmp0 * grly[24][2]; - - if (nwl == 5) - return; - /* - // if nwl > 5 - for (int il = 6; il <= nwl; il++) - { - int istart = il * il; - int istart1 = (il - 1) * (il - 1); - int istart2 = (il - 2) * (il - 2); - - double fac2 = sqrt(4.0 * istart - 1.0); - double fac4 = sqrt(4.0 * istart1 - 1.0); - - for (int im = 0; im < 2 * il - 1; im++) - { - int imm = (im + 1) / 2; - ylma[istart + im] = fac2 / sqrt((double)istart - imm * imm) * (dr[2] - * ylma[istart1 + im] - sqrt((double)istart1 - imm * imm) / fac4 * - ylma[istart2 + im]); - } - - double bl1 = sqrt(2.0 * il / (2.0 * il + 1.0)); - double bl2 = sqrt((2.0 * il - 2.0) / (2.0 * il - 1.0)); - double bl3 = sqrt(2.0) / fac2; - - ylma[istart + 2 * il - 1] = (bl3 * ylma[istart + 2 * il - 5] - bl2 * - ylma[istart2 + 2 * il - 5] - 2.0 * dr[0] * ylma[istart1 + 2 * il - 3]) / - bl1; ylma[istart + 2 * il] = (bl3 * ylma[istart + 2 * il - 4] - bl2 * - ylma[istart2 + 2 * il - 4] - 2.0 * dr[0] * ylma[istart1 + 2 * il - 2]) / - bl1; - }*/ -} - -} // namespace GintKernel - -#endif \ No newline at end of file diff --git a/source/source_lcao/module_gint/kernels/cuda/vbatch_matrix_mul.cuh b/source/source_lcao/module_gint/kernels/cuda/vbatch_matrix_mul.cuh deleted file mode 100644 index 77cbec17f6..0000000000 --- a/source/source_lcao/module_gint/kernels/cuda/vbatch_matrix_mul.cuh +++ /dev/null @@ -1,545 +0,0 @@ -#ifndef VBATCH_MATRIX_MUL_CUH -#define VBATCH_MATRIX_MUL_CUH -#include "cuda_tools.cuh" -#include "source_pw/module_pwdft/global.h" -#include "source_base/module_device/device.h" -#include "source_cell/unitcell.h" - -#include // for assert -#include -#include // for CUDA_VERSION -#include -#include -#include // for fprintf and stderr - -#define sA(i, j) sA[(j)*slda + (i)] -#define sB(i, j) sB[(j)*sldb + (i)] -#define fetch(A, m, n, bound) offs_d##A[min(n * LD##A + m, bound)] - -template -static __device__ void vbatched_gemm_device(int M, - int N, - int K, - T* __restrict__ A, - int LDA, - T* __restrict__ B, - int LDB, - T* __restrict__ C, - int LDC, - T* sA, - int slda, - T* sB, - int sldb, - T alpha) -{ - int idx = threadIdx.x; // thread's m dimension - int idy = threadIdx.y; // thread's n dimension - - int idt = DIM_X * idy + idx; // thread's global number - - int idxA = idt % DIM_XA; // idx within A - int idyA = idt / DIM_XA; // idy within A - - int idxB = idt % DIM_XB; // idx within B - int idyB = idt / DIM_XB; // idy within B - - int blx = blockIdx.x; // block's m dimension - int bly = blockIdx.y; // block's n dimension - - // Registers for the innermost loop - T rC[THR_N][THR_M]; - T rA[THR_M]; - T rB[THR_N]; - - // Registers for the dev->shmem copy - T ra[BLK_M / DIM_YA][BLK_K / DIM_XA]; - T rb[BLK_N / DIM_YB][BLK_K / DIM_XB]; - - // bound is the correction to offs_d in order to not get out of memory bound - // so bound could be negative value since offs_d could be out of bound - T* offs_dA = A + blx * BLK_M * LDA + idyA * LDA + idxA; - int boundA = (LDA * (M - 1) + K) - (blx * BLK_M * LDA + idyA * LDA + idxA) - 1; - - T* offs_dB = B + bly * BLK_N * LDB + idyB * LDB + idxB; - int boundB = (LDB * (N - 1) + K) - (bly * BLK_N * LDB + idyB * LDB + idxB) - 1; - - int m, n, k, kk; - -// Zero C -#pragma unroll - for (n = 0; n < THR_N; n++) - { -#pragma unroll - for (m = 0; m < THR_M; m++) - { - rC[n][m] = 0.0; - } - } - -// Load A dev->shmem -#pragma unroll - for (n = 0; n < BLK_M; n += DIM_YA) - { -#pragma unroll - for (m = 0; m < BLK_K; m += DIM_XA) - { - sA(n + idyA, m + idxA) = fetch(A, m, n, boundA); - } - } - -#pragma unroll - for (n = 0; n < BLK_N; n += DIM_YB) - { -#pragma unroll - for (m = 0; m < BLK_K; m += DIM_XB) - { - sB(m + idxB, n + idyB) = fetch(B, m, n, boundB); - } - } - - __syncthreads(); - - for (kk = 0; kk < K - BLK_K; kk += BLK_K) - { - offs_dA += BLK_K; - boundA -= BLK_K; - - offs_dB += BLK_K; - boundB -= BLK_K; - -// Load A dev->regs -#pragma unroll - for (n = 0; n < BLK_M / DIM_YA; n++) - { -#pragma unroll - for (m = 0; m < BLK_K / DIM_XA; m++) - { - ra[n][m] = fetch(A, m * DIM_XA, n * DIM_YA, boundA); - } - } - -// Load B dev->regs -#pragma unroll - for (n = 0; n < BLK_N / DIM_YB; n++) - { -#pragma unroll - for (m = 0; m < BLK_K / DIM_XB; m++) - { - rb[n][m] = fetch(B, m * DIM_XB, n * DIM_YB, boundB); - } - } - -// Multiply -#pragma unroll - for (k = 0; k < BLK_K; k++) - { -// Load A shmem->regs -#pragma unroll - for (m = 0; m < THR_M; m++) - { - rA[m] = sA(m * DIM_X + idx, k); - } - -// Load B shmem->regs -#pragma unroll - for (n = 0; n < THR_N; n++) - { - rB[n] = sB(k, n * DIM_Y + idy); - } - -// Compute -#pragma unroll - for (n = 0; n < THR_N; n++) - { -#pragma unroll - for (m = 0; m < THR_M; m++) - { - rC[n][m] += rA[m] * rB[n]; - } - } - } - - __syncthreads(); - -// Load A regs->shmem -#pragma unroll - for (n = 0; n < BLK_M / DIM_YA; n++) - { -#pragma unroll - for (m = 0; m < BLK_K / DIM_XA; m++) - { - sA(n * DIM_YA + idyA, m * DIM_XA + idxA) = ra[n][m]; - } - } - -// Load B regs->shmem -#pragma unroll - for (n = 0; n < BLK_N / DIM_YB; n++) - { -#pragma unroll - for (m = 0; m < BLK_K / DIM_XB; m++) - { - sB(m * DIM_XB + idxB, n * DIM_YB + idyB) = rb[n][m]; - } - } - __syncthreads(); - } - - // Multiply last full (BLK_K) or partial block of - // columns of op(A) and rows of op(B). - // It's okay that m,n exceed matrix bounds as all work is in registers - // or shared memory, and out-of-bounds rC[n][m] will not be saved later. - kk = K - kk; -#pragma unroll - for (k = 0; k < kk; k++) - { -// Load A shmem->regs -#pragma unroll - for (m = 0; m < THR_M; m++) - { - rA[m] = sA(m * DIM_X + idx, k); - } - -// Load B shmem->regs -#pragma unroll - for (n = 0; n < THR_N; n++) - { - rB[n] = sB(k, n * DIM_Y + idy); - } - -// Compute -#pragma unroll - for (n = 0; n < THR_N; n++) - { -#pragma unroll - for (m = 0; m < THR_M; m++) - { - rC[n][m] += rA[m] * rB[n]; - } - } - } - -// Store C regs->dev -#pragma unroll - for (n = 0; n < THR_N; n++) - { - int coord_dCn = bly * BLK_N + n * DIM_Y + idy; -#pragma unroll - for (m = 0; m < THR_M; m++) - { - int coord_dCm = blx * BLK_M + m * DIM_X + idx; - if (coord_dCm < M && coord_dCn < N) - { - int offsC = coord_dCn * LDC + coord_dCm; - - atomicAdd(C + offsC, rC[n][m] * alpha); - } - } - } -} - -/******************************************************************************/ -template -static __global__ void vbatched_gemm_kernel(int* M, - int* N, - int* K, - T** global_A_array, - int* global_lda, - T** global_B_array, - int* global_ldb, - T** global_C_array, - int* global_ldc, - T* alpha) -{ - extern __shared__ __align__(sizeof(T)) unsigned char smem[]; - T* shared_mem = reinterpret_cast(smem); - - int batchid = blockIdx.z; - int local_M = (int)M[batchid]; - int local_N = (int)N[batchid]; - int local_K = (int)K[batchid]; - - if (blockIdx.x >= (local_M + BLK_M - 1) / BLK_M) - return; - if (blockIdx.y >= (local_N + BLK_N - 1) / BLK_N) - return; - - int shared_lda = BLK_M + 1; - int shared_ldb = BLK_K + 1; - T* shared_A = (T*)shared_mem; - T* shared_B = shared_A + shared_lda * BLK_K; - double alpha_tmp = 1.0; - if (alpha != nullptr) - { - alpha_tmp = alpha[batchid]; - } - vbatched_gemm_device(local_M, - local_N, - local_K, - global_A_array[batchid], - (int)global_lda[batchid], - global_B_array[batchid], - (int)global_ldb[batchid], - global_C_array[batchid], - (int)global_ldc[batchid], - shared_A, - shared_lda, - shared_B, - shared_ldb, - alpha_tmp); -} - -/** - * Performs a batched matrix multiplication using the vbatched_gemm_impl - * function. - * - * C = alpha * A * B + C - * @tparam T The data type of the matrices. - * @tparam DIM_X The number of threads in the x-dimension of each block. - * @tparam DIM_Y The number of threads in the y-dimension of each block. - * @tparam BLK_M The number of rows processed by each thread block. - * @tparam BLK_N The number of columns processed by each thread block. - * @tparam BLK_K The number of elements processed by each thread block along the - * K dimension. - * @tparam DIM_XA The number of threads in the x-dimension used for loading - * matrix A. - * @tparam DIM_YA The number of threads in the y-dimension used for loading - * matrix A. - * @tparam DIM_XB The number of threads in the x-dimension used for loading - * matrix B. - * @tparam DIM_YB The number of threads in the y-dimension used for loading - * matrix B. - * @param max_m The maximum number of rows in the matrices. - * @param max_n The maximum number of columns in the matrices. - * @param m An array of batch sizes for the number of rows in each matrix. - * @param n An array of batch sizes for the number of columns in each matrix. - * @param k An array of batch sizes for the number of elements in each matrix - * along the K dimension. - * @param global_A_array An array of pointers to the input matrices A. - * @param global_lda An array of leading dimensions for the input matrices A. - * @param global_B_array An array of pointers to the input matrices B. - * @param global_ldb An array of leading dimensions for the input matrices B. - * @param global_C_array An array of pointers to the output matrices C. - * @param global_ldc An array of leading dimensions for the output matrices C. - * @param batchCount The number of matrices in the batch. - * @param stream The CUDA stream to use for the computation. - * @param alpha The scalar value to multiply the matrices by (optional, default - * is nullptr). generate by copilot - */ - -/* - * Why do we need to implement our own matrix multiplication based on the magma - * code? There are two main reasons. First is when we are doing batch matrix - * multiplication, since we need to accumulate the results of the - * multiplications, it is necessary to pass the same memory address of matrix C - * to different multiplications. This way, the accumulation can be done directly - * through atomic operations during the matrix multiplication, avoiding the - * reduction operations after the multiplication. Secondly, when calculating the - * charge density, where C = alpha * A * B + C, the value of alpha might be - * different for the same batch of matrices. Using the standard matrix - * multiplication interface would require breaking down the batch matrix - * multiplication into smaller batches. In practice, it is difficult to - * accumulate a batch. - * - * Moreover, taking into account the specific requirements of our application, - * especially the fact that we can relatively easily control the arrangement of - * the matrix elements, we have only implemented one type of requirement for - * matrix transposition. That is, we have implemented the operation C = alpha * - * trans(A) * B + C under the constraint of column-major order. - * - * Finally, we would like to thank Magma for its contributions to the field of - * scientific computing. - */ - -template -void vbatched_gemm_impl(int max_m, - int max_n, - int* m, - int* n, - int* k, - T** global_A_array, - int* global_lda, - T** global_B_array, - int* global_ldb, - T** global_C_array, - int* global_ldc, - int batchCount, - cudaStream_t stream, - T* alpha = nullptr) -{ - // The positions of A and B have been swapped here. - // This is because the original code is for column-major matrices. - // We use row-major matrices, so we need to swap A and B. - // The vbatched_gemm_impl is for C = trans(A) * B + C, but we need trans(C). - // Which means: trans(C) = trans(trans(A)*B + C) = trans(B) * A + trans(C) - // Then, ldc should be N, lda and ldb should be K - - size_t shared_mem_size = 0; - shared_mem_size += (BLK_M + 1) * BLK_K * sizeof(T); - shared_mem_size += (BLK_K + 1) * BLK_N * sizeof(T); - dim3 dimBlock(DIM_X, DIM_Y); - const int max_batch_count = 32768; - const int loop_num = batchCount / max_batch_count; - const int remain_num = batchCount % max_batch_count; - - for (int i = 0; i < loop_num; ++i) - { - dim3 dimGrid(ceildiv(max_n, BLK_M), ceildiv(max_m, BLK_N), max_batch_count); - T* alpha_tmp = nullptr; - if (alpha != nullptr) - { - alpha_tmp = alpha + i * max_batch_count; - } - - vbatched_gemm_kernel - <<>>(n + i * max_batch_count, - m + i * max_batch_count, - k + i * max_batch_count, - global_B_array + i * max_batch_count, - global_ldb + i * max_batch_count, - global_A_array + i * max_batch_count, - global_lda + i * max_batch_count, - global_C_array + i * max_batch_count, - global_ldc + i * max_batch_count, - alpha_tmp); - checkCudaLastError(); - } - if (remain_num > 0) - { - dim3 dimGrid(ceildiv(max_n, BLK_M), ceildiv(max_m, BLK_N), remain_num); - T* alpha_tmp = nullptr; - if (alpha != nullptr) - { - alpha_tmp = alpha + loop_num * max_batch_count; - } - vbatched_gemm_kernel - <<>>(n + loop_num * max_batch_count, - m + loop_num * max_batch_count, - k + loop_num * max_batch_count, - global_B_array + loop_num * max_batch_count, - global_ldb + loop_num * max_batch_count, - global_A_array + loop_num * max_batch_count, - global_lda + loop_num * max_batch_count, - global_C_array + loop_num * max_batch_count, - global_ldc + loop_num * max_batch_count, - alpha_tmp); - checkCudaLastError(); - } -} - -template -void gemm_time_measure(int max_m, - int max_n, - int* m, - int* n, - int* k, - T** global_A_array, - int* global_lda, - T** global_B_array, - int* global_ldb, - T** global_C_array, - int* global_ldc, - int batchCount, - cudaStream_t stream, - float& fast_time, - matrix_multiple_func_type& fastest_algo, - double* cpu_result, - double* h_global_C, - double* d_global_C) -{ - cudaEvent_t start, stop; - checkCuda(cudaMemset(d_global_C, 0, batchCount * max_m * max_n * sizeof(double))); - checkCuda(cudaEventCreate(&start)); - checkCuda(cudaEventCreate(&stop)); - checkCuda(cudaEventRecord(start, stream)); - vbatched_gemm_impl(max_m, - max_n, - m, - n, - k, - global_A_array, - global_lda, - global_B_array, - global_ldb, - global_C_array, - global_ldc, - batchCount, - stream); - checkCuda(cudaEventRecord(stop, stream)); - cudaError_t cuda_status = cudaGetLastError(); - checkCuda(cudaStreamSynchronize(stream)); - float milliseconds = 0; - checkCuda(cudaEventElapsedTime(&milliseconds, start, stop)); - - // WARNING !!!!! Here we assume that all m and n are the same - checkCuda(cudaMemcpy(h_global_C, d_global_C, batchCount * max_m * max_n * sizeof(double), cudaMemcpyDeviceToHost)); - bool check_result = true; - for (int i = 0; i < batchCount * max_m * max_n; ++i) - { - if (abs(cpu_result[i] - h_global_C[i]) > 0.001) - { - check_result = false; - break; - } - } - if (milliseconds < fast_time && cuda_status == cudaSuccess && check_result) - { - fast_time = milliseconds; - fastest_algo = vbatched_gemm_impl; -#ifdef __DEBUG - std::cout << "found! fastest time: " << fast_time << std::endl; - std::cout << DIM_X << "," << DIM_Y << "," << BLK_M << "," << BLK_N << "," << BLK_K << "," << DIM_XA << "," - << DIM_YA << "," << DIM_XB << "," << DIM_YB << std::endl; -#endif - } -} -#endif // VBATCH_MATRIX_MUL_CUH \ No newline at end of file diff --git a/source/source_lcao/module_gint/temp_gint/localcell_info.cpp b/source/source_lcao/module_gint/localcell_info.cpp similarity index 100% rename from source/source_lcao/module_gint/temp_gint/localcell_info.cpp rename to source/source_lcao/module_gint/localcell_info.cpp diff --git a/source/source_lcao/module_gint/temp_gint/localcell_info.h b/source/source_lcao/module_gint/localcell_info.h similarity index 100% rename from source/source_lcao/module_gint/temp_gint/localcell_info.h rename to source/source_lcao/module_gint/localcell_info.h diff --git a/source/source_lcao/module_gint/temp_gint/meshgrid_info.h b/source/source_lcao/module_gint/meshgrid_info.h similarity index 100% rename from source/source_lcao/module_gint/temp_gint/meshgrid_info.h rename to source/source_lcao/module_gint/meshgrid_info.h diff --git a/source/source_lcao/module_gint/mult_psi_dmr.cpp b/source/source_lcao/module_gint/mult_psi_dmr.cpp deleted file mode 100644 index fab47c1aee..0000000000 --- a/source/source_lcao/module_gint/mult_psi_dmr.cpp +++ /dev/null @@ -1,105 +0,0 @@ -#include "gint_tools.h" -#include "source_base/timer.h" -#include "source_base/ylm.h" -#include "source_base/module_external/blas_connector.h" - -namespace Gint_Tools{ - -void mult_psi_DMR( - const Grid_Technique& gt, - const int bxyz, - const int LD_pool, - const int &grid_index, - const int &na_grid, - const int*const block_index, - const int*const block_size, - const bool*const*const cal_flag, - const double*const*const psi, - double*const*const psi_DMR, - const hamilt::HContainer*const DM, - const bool if_symm) -{ - const UnitCell& ucell = *gt.ucell; - - // parameters for lapack subroutines - constexpr char side = 'L'; - constexpr char uplo = 'U'; - const char trans = 'N'; - const double alpha = 1.0; - const double beta = 1.0; - const double alpha1 = if_symm ? 2.0 : 1.0; - - for (int ia1 = 0; ia1 < na_grid; ia1++) - { - const int bcell1 = gt.bcell_start[grid_index] + ia1; - const int iat1 = gt.which_atom[bcell1]; - - //! get cell R1, this step is redundant in gamma_only case. - const int id1 = gt.which_unitcell[bcell1]; - const ModuleBase::Vector3 r1 = gt.get_ucell_coords(id1); - - //! density - if (if_symm) - { - //! ia2==ia1 - const auto tmp_matrix = DM->find_matrix(iat1, iat1, 0, 0, 0); - - //! maybe checking "tmp_matrix == nullptr" is not necessary - if(tmp_matrix == nullptr) - { - continue; - } - - const auto cal_info = Gint_Tools::cal_info(bxyz, ia1, ia1, cal_flag); - const int ib_start = cal_info.first; - const int ib_len = cal_info.second; - - if(ib_len == 0) - { - continue; - } - - const auto tmp_matrix_ptr = tmp_matrix->get_pointer(); - const int idx1 = block_index[ia1]; - BlasConnector::symm_cm(side, uplo, block_size[ia1], ib_len, alpha, tmp_matrix_ptr, block_size[ia1], - &psi[ib_start][idx1], LD_pool, beta, &psi_DMR[ib_start][idx1], LD_pool); - } - - //! get (j,beta,R2) - const int start = if_symm ? ia1 + 1 : 0; - - for (int ia2 = start; ia2 < na_grid; ia2++) - { - const int bcell2 = gt.bcell_start[grid_index] + ia2; - const int iat2 = gt.which_atom[bcell2]; - const int id2 = gt.which_unitcell[bcell2]; - - //! get cell R2, this step is redundant in gamma_only case. - const ModuleBase::Vector3 r2 = gt.get_ucell_coords(id2); - - // get AtomPair - const auto tmp_matrix = DM->find_matrix(iat1, iat2, r1-r2); - if (tmp_matrix == nullptr) - { - continue; - } - const auto tmp_matrix_ptr = tmp_matrix->get_pointer(); - - const auto cal_info = Gint_Tools::cal_info(bxyz, ia1, ia1, cal_flag); - const int ib_start = cal_info.first; - const int ib_len = cal_info.second; - if(ib_len == 0) - { - continue; - } - const int idx1 = block_index[ia1]; - const int idx2 = block_index[ia2]; - - dgemm_(&trans, &trans, &block_size[ia2], &ib_len, &block_size[ia1], &alpha1, tmp_matrix_ptr, &block_size[ia2], - &psi[ib_start][idx1], &LD_pool, &beta, &psi_DMR[ib_start][idx2], &LD_pool); - - } // ia2 - } // ia1 -}// End of mult_psi_DMR - -}// End of Gint_Tools diff --git a/source/source_lcao/module_gint/temp_gint/phi_operator.cpp b/source/source_lcao/module_gint/phi_operator.cpp similarity index 100% rename from source/source_lcao/module_gint/temp_gint/phi_operator.cpp rename to source/source_lcao/module_gint/phi_operator.cpp diff --git a/source/source_lcao/module_gint/temp_gint/phi_operator.h b/source/source_lcao/module_gint/phi_operator.h similarity index 100% rename from source/source_lcao/module_gint/temp_gint/phi_operator.h rename to source/source_lcao/module_gint/phi_operator.h diff --git a/source/source_lcao/module_gint/temp_gint/phi_operator.hpp b/source/source_lcao/module_gint/phi_operator.hpp similarity index 100% rename from source/source_lcao/module_gint/temp_gint/phi_operator.hpp rename to source/source_lcao/module_gint/phi_operator.hpp diff --git a/source/source_lcao/module_gint/temp_gint/set_ddphi.cpp b/source/source_lcao/module_gint/set_ddphi.cpp similarity index 99% rename from source/source_lcao/module_gint/temp_gint/set_ddphi.cpp rename to source/source_lcao/module_gint/set_ddphi.cpp index c84f087487..4e7d486fbc 100644 --- a/source/source_lcao/module_gint/temp_gint/set_ddphi.cpp +++ b/source/source_lcao/module_gint/set_ddphi.cpp @@ -72,7 +72,7 @@ void GintAtom::set_ddphi( const double x12 = x1 * x2 / 6; const double x03 = x0 * x3 / 2; - double tmp, dtmp; + double tmp = 0.0, dtmp = 0.0; for(int iw = 0; iw < atom_->nw; ++iw) { diff --git a/source/source_lcao/module_gint/temp_gint/gint.h b/source/source_lcao/module_gint/temp_gint/gint.h deleted file mode 100644 index 1255bae971..0000000000 --- a/source/source_lcao/module_gint/temp_gint/gint.h +++ /dev/null @@ -1,26 +0,0 @@ -#pragma once -#include -#include "gint_info.h" -#include "gint_type.h" - -namespace ModuleGint -{ - -class Gint -{ - public: - Gint() = default; - virtual ~Gint() = default; - - // note that gint_info_ is a static member variable - // it is shared by all instances of Gint - static void set_gint_info(GintInfo* gint_info) - { - gint_info_ = gint_info; - } - - protected: - static GintInfo* gint_info_; -}; - -} \ No newline at end of file diff --git a/source/source_lcao/module_gint/temp_gint/gint_common.cpp b/source/source_lcao/module_gint/temp_gint/gint_common.cpp deleted file mode 100644 index fc3248ad93..0000000000 --- a/source/source_lcao/module_gint/temp_gint/gint_common.cpp +++ /dev/null @@ -1,343 +0,0 @@ -#include "gint_common.h" -#include "source_lcao/module_hcontainer/hcontainer.h" -#include "source_lcao/module_hcontainer/hcontainer_funcs.h" -#include "source_io/module_parameter/parameter.h" - -#ifdef __MPI -#include "source_base/module_external/blacs_connector.h" -#include -#endif - -namespace ModuleGint -{ - -void compose_hr_gint(HContainer& hr_gint) -{ - ModuleBase::TITLE("Gint", "compose_hr_gint"); - ModuleBase::timer::tick("Gint", "compose_hr_gint"); - for (int iap = 0; iap < hr_gint.size_atom_pairs(); iap++) - { - auto& ap = hr_gint.get_atom_pair(iap); - const int iat1 = ap.get_atom_i(); - const int iat2 = ap.get_atom_j(); - if (iat1 > iat2) - { - // fill lower triangle matrix with upper triangle matrix - // the upper is - const hamilt::AtomPair* upper_ap = hr_gint.find_pair(iat2, iat1); - const hamilt::AtomPair* lower_ap = hr_gint.find_pair(iat1, iat2); -#ifdef __DEBUG - assert(upper_ap != nullptr); -#endif - for (int ir = 0; ir < ap.get_R_size(); ir++) - { - auto R_index = ap.get_R_index(ir); - auto upper_mat = upper_ap->find_matrix(-R_index); - auto lower_mat = lower_ap->find_matrix(R_index); - for (int irow = 0; irow < upper_mat->get_row_size(); ++irow) - { - for (int icol = 0; icol < upper_mat->get_col_size(); ++icol) - { - lower_mat->get_value(icol, irow) = upper_ap->get_value(irow, icol); - } - } - } - } - } - ModuleBase::timer::tick("Gint", "compose_hr_gint"); -} - -void compose_hr_gint(const std::vector>& hr_gint_part, - HContainer>& hr_gint_full) -{ - ModuleBase::TITLE("Gint", "compose_hr_gint"); - ModuleBase::timer::tick("Gint", "compose_hr_gint"); - for (int iap = 0; iap < hr_gint_full.size_atom_pairs(); iap++) - { - auto* ap = &(hr_gint_full.get_atom_pair(iap)); - const int iat1 = ap->get_atom_i(); - const int iat2 = ap->get_atom_j(); - if (iat1 <= iat2) - { - hamilt::AtomPair>* upper_ap = ap; - hamilt::AtomPair>* lower_ap = hr_gint_full.find_pair(iat2, iat1); - const hamilt::AtomPair* ap_nspin_0 = hr_gint_part[0].find_pair(iat1, iat2); - const hamilt::AtomPair* ap_nspin_3 = hr_gint_part[3].find_pair(iat1, iat2); - for (int ir = 0; ir < upper_ap->get_R_size(); ir++) - { - const auto R_index = upper_ap->get_R_index(ir); - auto upper_mat = upper_ap->find_matrix(R_index); - auto mat_nspin_0 = ap_nspin_0->find_matrix(R_index); - auto mat_nspin_3 = ap_nspin_3->find_matrix(R_index); - - // The row size and the col size of upper_matrix is double that of matrix_nspin_0 - for (int irow = 0; irow < mat_nspin_0->get_row_size(); ++irow) - { - for (int icol = 0; icol < mat_nspin_0->get_col_size(); ++icol) - { - upper_mat->get_value(2*irow, 2*icol) = mat_nspin_0->get_value(irow, icol) + mat_nspin_3->get_value(irow, icol); - upper_mat->get_value(2*irow+1, 2*icol+1) = mat_nspin_0->get_value(irow, icol) - mat_nspin_3->get_value(irow, icol); - } - } - - if (PARAM.globalv.domag) - { - const hamilt::AtomPair* ap_nspin_1 = hr_gint_part[1].find_pair(iat1, iat2); - const hamilt::AtomPair* ap_nspin_2 = hr_gint_part[2].find_pair(iat1, iat2); - const auto mat_nspin_1 = ap_nspin_1->find_matrix(R_index); - const auto mat_nspin_2 = ap_nspin_2->find_matrix(R_index); - for (int irow = 0; irow < mat_nspin_1->get_row_size(); ++irow) - { - for (int icol = 0; icol < mat_nspin_1->get_col_size(); ++icol) - { - upper_mat->get_value(2*irow, 2*icol+1) = mat_nspin_1->get_value(irow, icol) + std::complex(0.0, 1.0) * mat_nspin_2->get_value(irow, icol); - upper_mat->get_value(2*irow+1, 2*icol) = mat_nspin_1->get_value(irow, icol) - std::complex(0.0, 1.0) * mat_nspin_2->get_value(irow, icol); - } - } - } - - // fill the lower triangle matrix - if (iat1 < iat2) - { - auto lower_mat = lower_ap->find_matrix(-R_index); - for (int irow = 0; irow < upper_mat->get_row_size(); ++irow) - { - for (int icol = 0; icol < upper_mat->get_col_size(); ++icol) - { - lower_mat->get_value(icol, irow) = conj(upper_mat->get_value(irow, icol)); - } - } - } - } - } - } - ModuleBase::timer::tick("Gint", "compose_hr_gint"); -} - -template -void transfer_hr_gint_to_hR(const HContainer& hr_gint, HContainer& hR) -{ - ModuleBase::TITLE("Gint", "transfer_hr_gint_to_hR"); - ModuleBase::timer::tick("Gint", "transfer_hr_gint_to_hR"); -#ifdef __MPI - int size = 0; - MPI_Comm_size(MPI_COMM_WORLD, &size); - if (size == 1) - { - hR.add(hr_gint); - } - else - { - hamilt::transferSerials2Parallels(hr_gint, &hR); - } -#else - hR.add(hr_gint); -#endif - ModuleBase::timer::tick("Gint", "transfer_hr_gint_to_hR"); -} - -// gint_info should not have been a parameter, but it was added to initialize dm_gint_full -// In the future, we might try to remove the gint_info parameter -template -void transfer_dm_2d_to_gint( - const GintInfo& gint_info, - std::vector*> dm, - std::vector>& dm_gint) -{ - ModuleBase::TITLE("Gint", "transfer_dm_2d_to_gint"); - ModuleBase::timer::tick("Gint", "transfer_dm_2d_to_gint"); - - if (PARAM.inp.nspin != 4) - { - // dm_gint.size() usually equals to PARAM.inp.nspin, - // but there is exception within source_lcao/module_lr - for (int is = 0; is < dm_gint.size(); is++) - { -#ifdef __MPI - hamilt::transferParallels2Serials(*dm[is], &dm_gint[is]); -#else - dm_gint[is].set_zero(); - dm_gint[is].add(*dm[is]); -#endif - } - } else // NSPIN=4 case - { -#ifdef __MPI - const int npol = 2; - HContainer dm_full = gint_info.get_hr(npol); - hamilt::transferParallels2Serials(*dm[0], &dm_full); -#else - HContainer& dm_full = *(dm[0]); -#endif - std::vector tmp_pointer(4, nullptr); - for (int iap = 0; iap < dm_full.size_atom_pairs(); iap++) - { - auto& ap = dm_full.get_atom_pair(iap); - const int iat1 = ap.get_atom_i(); - const int iat2 = ap.get_atom_j(); - for (int ir = 0; ir < ap.get_R_size(); ir++) - { - const ModuleBase::Vector3 r_index = ap.get_R_index(ir); - for (int is = 0; is < 4; is++) - { - tmp_pointer[is] = - dm_gint[is].find_matrix(iat1, iat2, r_index)->get_pointer(); - } - T* data_full = ap.get_pointer(ir); - for (int irow = 0; irow < ap.get_row_size(); irow += 2) - { - for (int icol = 0; icol < ap.get_col_size(); icol += 2) - { - *(tmp_pointer[0])++ = data_full[icol]; - *(tmp_pointer[1])++ = data_full[icol + 1]; - } - data_full += ap.get_col_size(); - for (int icol = 0; icol < ap.get_col_size(); icol += 2) - { - *(tmp_pointer[2])++ = data_full[icol]; - *(tmp_pointer[3])++ = data_full[icol + 1]; - } - data_full += ap.get_col_size(); - } - } - } - } - ModuleBase::timer::tick("Gint", "transfer_dm_2d_to_gint"); -} - -int globalIndex(int localindex, int nblk, int nprocs, int myproc) -{ - const int iblock = localindex / nblk; - const int gIndex = (iblock * nprocs + myproc) * nblk + localindex % nblk; - return gIndex; -} - -int localIndex(int globalindex, int nblk, int nprocs, int& myproc) -{ - myproc = int((globalindex % (nblk * nprocs)) / nblk); - return int(globalindex / (nblk * nprocs)) * nblk + globalindex % nblk; -} - -template -void wfc_2d_to_gint(const T* wfc_2d, - int nbands, // needed if MPI is disabled - int nlocal, // needed if MPI is disabled - const Parallel_Orbitals& pv, - T* wfc_gint, - const GintInfo& gint_info) -{ - ModuleBase::TITLE("Gint", "wfc_2d_to_gint"); - ModuleBase::timer::tick("Gint", "wfc_2d_to_gint"); - -#ifdef __MPI - // dimension related - nlocal = pv.desc_wfc[2]; - nbands = pv.desc_wfc[3]; - - const std::vector& trace_lo = gint_info.get_trace_lo(); - - // MPI and memory related - const int mem_stride = 1; - int mpi_info = 0; - - // get the rank of the current process - int rank = 0; - MPI_Comm_rank(pv.comm(), &rank); - - // calculate the maximum number of nlocal over all processes in pv.comm() range - long buf_size; - mpi_info = MPI_Reduce(&pv.nloc_wfc, &buf_size, 1, MPI_LONG, MPI_MAX, 0, pv.comm()); - mpi_info = MPI_Bcast(&buf_size, 1, MPI_LONG, 0, pv.comm()); // get and then broadcast - std::vector wfc_block(buf_size); - - // this quantity seems to have the value returned by function numroc_ in ScaLAPACK? - int naroc[2]; - - // for BLACS broadcast - char scope = 'A'; - char top = ' '; - - // loop over all processors - for (int iprow = 0; iprow < pv.dim0; ++iprow) - { - for (int ipcol = 0; ipcol < pv.dim1; ++ipcol) - { - if (iprow == pv.coord[0] && ipcol == pv.coord[1]) - { - BlasConnector::copy(pv.nloc_wfc, wfc_2d, mem_stride, wfc_block.data(), mem_stride); - naroc[0] = pv.nrow; - naroc[1] = pv.ncol_bands; - Cxgebs2d(pv.blacs_ctxt, &scope, &top, 2, 1, naroc, 2); - Cxgebs2d(pv.blacs_ctxt, &scope, &top, buf_size, 1, wfc_block.data(), buf_size); - } - else - { - Cxgebr2d(pv.blacs_ctxt, &scope, &top, 2, 1, naroc, 2, iprow, ipcol); - Cxgebr2d(pv.blacs_ctxt, &scope, &top, buf_size, 1, wfc_block.data(), buf_size, iprow, ipcol); - } - - // then use it to set the wfc_grid. - const int nb = pv.nb; - const int dim0 = pv.dim0; - const int dim1 = pv.dim1; - for (int j = 0; j < naroc[1]; ++j) - { - int igcol = globalIndex(j, nb, dim1, ipcol); - if (igcol >= PARAM.inp.nbands) - { - continue; - } - for (int i = 0; i < naroc[0]; ++i) - { - int igrow = globalIndex(i, nb, dim0, iprow); - int mu_local = trace_lo[igrow]; - if (wfc_gint && mu_local >= 0) - { - wfc_gint[igcol * nlocal + mu_local] = wfc_block[j * naroc[0] + i]; - } - } - } - // this operation will let all processors have the same wfc_grid - } - } -#else - for (int i = 0; i < nbands; ++i) - { - for (int j = 0; j < nlocal; ++j) - { - wfc_gint[i * nlocal + j] = wfc_2d[i * nlocal + j]; - } - } -#endif - ModuleBase::timer::tick("Gint", "wfc_2d_to_gint"); -} - -template void transfer_hr_gint_to_hR( - const HContainer& hr_gint, - HContainer& hR); -template void transfer_hr_gint_to_hR( - const HContainer>& hr_gint, - HContainer>& hR); -template void transfer_dm_2d_to_gint( - const GintInfo& gint_info, - std::vector*> dm, - std::vector>& dm_gint); -template void transfer_dm_2d_to_gint( - const GintInfo& gint_info, - std::vector>*> dm, - std::vector>>& dm_gint); -template void wfc_2d_to_gint( - const double* wfc_2d, - int nbands, - int nlocal, - const Parallel_Orbitals& pv, - double* wfc_grid, - const GintInfo& gint_info); -template void wfc_2d_to_gint( - const std::complex* wfc_2d, - int nbands, - int nlocal, - const Parallel_Orbitals& pv, - std::complex* wfc_grid, - const GintInfo& gint_info); -} \ No newline at end of file diff --git a/source/source_lcao/module_gint/temp_gint/gint_common.h b/source/source_lcao/module_gint/temp_gint/gint_common.h deleted file mode 100644 index 17a324df2b..0000000000 --- a/source/source_lcao/module_gint/temp_gint/gint_common.h +++ /dev/null @@ -1,24 +0,0 @@ -#pragma once -#include "source_lcao/module_hcontainer/hcontainer.h" -#include "source_lcao/module_gint/temp_gint/gint_info.h" - -namespace ModuleGint -{ - // fill the lower triangle matrix with the upper triangle matrix - void compose_hr_gint(HContainer& hr_gint); - // for nspin=4 case - void compose_hr_gint(const std::vector>& hr_gint_part, - HContainer>& hr_gint_full); - - template - void transfer_hr_gint_to_hR(const HContainer& hr_gint, HContainer& hR); - - template - void transfer_dm_2d_to_gint( - const GintInfo& gint_info, - std::vector*> dm, - std::vector>& dm_gint); - - template - void wfc_2d_to_gint(const T* wfc_2d, int nbands, int nlocal, const Parallel_Orbitals& pv, T* wfc_grid, const GintInfo& gint_info); -} diff --git a/source/source_lcao/module_gint/temp_gint/gint_rho_gpu.h b/source/source_lcao/module_gint/temp_gint/gint_rho_gpu.h deleted file mode 100644 index 07bbf0eaed..0000000000 --- a/source/source_lcao/module_gint/temp_gint/gint_rho_gpu.h +++ /dev/null @@ -1,52 +0,0 @@ -#pragma once - -#include -#include -#include "source_lcao/module_hcontainer/hcontainer.h" -#include "gint.h" -#include "gint_info.h" -#include "source_lcao/module_gint/temp_gint/kernel/cuda_mem_wrapper.h" - -namespace ModuleGint -{ - -class Gint_rho_gpu: public Gint -{ - public: - Gint_rho_gpu( - const std::vector*>& dm_vec, - const int nspin, - double **rho, - bool is_dm_symm = true) - : dm_vec_(dm_vec), nspin_(nspin), rho_(rho), is_dm_symm_(is_dm_symm) {} - - void cal_gint(); - - private: - void init_dm_gint_(); - - void cal_rho_(); - - void transfer_cpu_to_gpu_(); - - void transfer_gpu_to_cpu_(); - - // input - const std::vector*> dm_vec_; - const int nspin_; - - // if true, it means the DMR matrix is symmetric, - // which leads to faster computations compared to the asymmetric case. - const bool is_dm_symm_; - - // output - double **rho_; - - // Intermediate variables - std::vector> dm_gint_vec_; - - std::vector> dm_gint_d_vec_; - std::vector> rho_d_vec_; -}; - -} \ No newline at end of file diff --git a/source/source_lcao/module_gint/temp_gint/gint_vl_gpu.h b/source/source_lcao/module_gint/temp_gint/gint_vl_gpu.h deleted file mode 100644 index de113b2ea0..0000000000 --- a/source/source_lcao/module_gint/temp_gint/gint_vl_gpu.h +++ /dev/null @@ -1,49 +0,0 @@ -#pragma once - -#include -#include -#include "source_lcao/module_hcontainer/hcontainer.h" -#include "gint.h" -#include "gint_info.h" -#include "source_lcao/module_gint/temp_gint/kernel/cuda_mem_wrapper.h" - -namespace ModuleGint -{ - -class Gint_vl_gpu : public Gint -{ - public: - Gint_vl_gpu( - const double* vr_eff, - HContainer* hR) - : vr_eff_(vr_eff), hR_(hR), dr3_(gint_info_->get_mgrid_volume()) {} - - void cal_gint(); - - private: - - void init_hr_gint_(); - - void transfer_cpu_to_gpu_(); - - void transfer_gpu_to_cpu_(); - - void cal_hr_gint_(); - - // input - const double* vr_eff_; - - - // output - HContainer* hR_; - - // Intermediate variables - double dr3_; - - HContainer hr_gint_; - - CudaMemWrapper hr_gint_d_; - CudaMemWrapper vr_eff_d_; -}; - -} \ No newline at end of file diff --git a/source/source_lcao/module_gint/temp_gint/kernel/gint_gpu_vars.cpp b/source/source_lcao/module_gint/temp_gint/kernel/gint_gpu_vars.cpp deleted file mode 100644 index f4443762f0..0000000000 --- a/source/source_lcao/module_gint/temp_gint/kernel/gint_gpu_vars.cpp +++ /dev/null @@ -1,126 +0,0 @@ -#include "gint_gpu_vars.h" -#include "source_base/module_device/device.h" - -namespace ModuleGint -{ - -GintGpuVars::GintGpuVars(std::shared_ptr biggrid_info, - const UnitCell& ucell, - const Numerical_Orbital* Phi) -{ -// set device -#ifdef __MPI - dev_id_ = base_device::information::set_device_by_rank(); -#endif - std::vector ylmcoef_h(100); - for (int i = 0; i < 100; i++) - { - ylmcoef_h[i] = ModuleBase::Ylm::ylmcoef[i]; - } - set_ylmcoe_d(ylmcoef_h.data(), &ylmcoef_d); - - const int ntype = ucell.ntype; - std::vector atom_nw_h(ntype); - std::vector ucell_atom_nwl_h(ntype); - for (int i = 0; i < ntype; i++) - { - atom_nw_h[i] = ucell.atoms[i].nw; - ucell_atom_nwl_h[i] = ucell.atoms[i].nwl; - } - checkCuda(cudaMalloc((void**)&atom_nw_d, sizeof(int) * ntype)); - checkCuda(cudaMemcpy(atom_nw_d, atom_nw_h.data(), sizeof(int) * ntype, cudaMemcpyHostToDevice)); - checkCuda(cudaMalloc((void**)&ucell_atom_nwl_d, sizeof(int) * ntype)); - checkCuda(cudaMemcpy(ucell_atom_nwl_d, ucell_atom_nwl_h.data(), sizeof(int) * ntype, cudaMemcpyHostToDevice)); - - dr_uniform = Phi[0].PhiLN(0, 0).dr_uniform; - double max_rcut = 0; - std::vector rcut_h(ntype); - for (int i = 0; i < ntype; i++) - { - rcut_h[i] = Phi[i].getRcut(); - if (rcut_h[i] > max_rcut) - { - max_rcut = rcut_h[i]; - } - } - checkCuda(cudaMalloc((void**)&rcut_d, sizeof(double) * ntype)); - checkCuda(cudaMemcpy(rcut_d, rcut_h.data(), sizeof(double) * ntype, cudaMemcpyHostToDevice)); - nr_max = static_cast(1 / dr_uniform * max_rcut) + 10; - - nwmax = ucell.nwmax; - std::vector psi_u_h(ntype * nwmax * nr_max); - std::vector dpsi_u_h(ntype * nwmax * nr_max); - std::vector d2psi_u_h(ntype * nwmax * nr_max); - // std::vector cannot use data(), so std::vector is used instead - std::vector atom_iw2_new_h(ntype * nwmax); - std::vector atom_iw2_ylm_h(ntype * nwmax); - std::vector atom_iw2_l_h(ntype * nwmax); - for (int i = 0; i < ntype; i++) - { - Atom* atomx = &ucell.atoms[i]; - for (int j = 0; j < atomx->nw; j++) - { - atom_iw2_new_h[i * nwmax + j] = atomx->iw2_new[j]; - atom_iw2_ylm_h[i * nwmax + j] = atomx->iw2_ylm[j]; - atom_iw2_l_h[i * nwmax + j] = atomx->iw2l[j]; - const auto psi_ptr = &Phi[i].PhiLN(atomx->iw2l[j], atomx->iw2n[j]); - const int psi_size = psi_ptr->psi_uniform.size(); - int idx = i * nwmax * nr_max + j * nr_max; - for (int k = 0; k < psi_size; k++) - { - psi_u_h[idx + k] = psi_ptr->psi_uniform[k]; - dpsi_u_h[idx + k] = psi_ptr->dpsi_uniform[k]; - d2psi_u_h[idx + k] = psi_ptr->ddpsi_uniform[k]; - } - } - } - - checkCuda(cudaMalloc((void**)&atom_iw2_new_d, sizeof(bool) * ntype * nwmax)); - checkCuda(cudaMemcpy(atom_iw2_new_d, atom_iw2_new_h.data(), sizeof(bool) * ntype * nwmax, cudaMemcpyHostToDevice)); - checkCuda(cudaMalloc((void**)&atom_iw2_ylm_d, sizeof(int) * ntype * nwmax)); - checkCuda(cudaMemcpy(atom_iw2_ylm_d, atom_iw2_ylm_h.data(), sizeof(int) * ntype * nwmax, cudaMemcpyHostToDevice)); - checkCuda(cudaMalloc((void**)&atom_iw2_l_d, sizeof(int) * ntype * nwmax)); - checkCuda(cudaMemcpy(atom_iw2_l_d, atom_iw2_l_h.data(), sizeof(int) * ntype * nwmax, cudaMemcpyHostToDevice)); - checkCuda(cudaMalloc((void**)&psi_u_d, sizeof(double) * ntype * nwmax * nr_max)); - checkCuda(cudaMemcpy(psi_u_d, psi_u_h.data(), sizeof(double) * ntype * nwmax * nr_max, cudaMemcpyHostToDevice)); - checkCuda(cudaMalloc((void**)&dpsi_u_d, sizeof(double) * ntype * nwmax * nr_max)); - checkCuda(cudaMemcpy(dpsi_u_d, dpsi_u_h.data(), sizeof(double) * ntype * nwmax * nr_max, cudaMemcpyHostToDevice)); - checkCuda(cudaMalloc((void**)&d2psi_u_d, sizeof(double) * ntype * nwmax * nr_max)); - checkCuda(cudaMemcpy(d2psi_u_d, d2psi_u_h.data(), sizeof(double) * ntype * nwmax * nr_max, cudaMemcpyHostToDevice)); - - const int mgrid_num = biggrid_info->get_mgrids_num(); - std::vector mgrids_pos_h(mgrid_num); - for(int i = 0; i < mgrid_num; i++) - { - mgrids_pos_h[i].x = biggrid_info->get_mgrid_coord(i).x; - mgrids_pos_h[i].y = biggrid_info->get_mgrid_coord(i).y; - mgrids_pos_h[i].z = biggrid_info->get_mgrid_coord(i).z; - } - checkCuda(cudaMalloc((void**)&mgrids_pos_d, sizeof(double3) * mgrid_num)); - checkCuda(cudaMemcpy(mgrids_pos_d, mgrids_pos_h.data(), sizeof(double3) * mgrid_num, cudaMemcpyHostToDevice)); - - checkCuda(cudaMalloc((void**)&iat2it_d, sizeof(int) * ucell.nat)); - checkCuda(cudaMemcpy(iat2it_d, ucell.iat2it, sizeof(int) * ucell.nat, cudaMemcpyHostToDevice)); - - gemm_algo_selector(mgrid_num, fastest_matrix_mul, ucell); -} - -GintGpuVars::~GintGpuVars() -{ -#ifdef __MPI - checkCuda(cudaSetDevice(dev_id_)); -#endif - checkCuda(cudaFree(rcut_d)); - checkCuda(cudaFree(atom_nw_d)); - checkCuda(cudaFree(ucell_atom_nwl_d)); - checkCuda(cudaFree(atom_iw2_new_d)); - checkCuda(cudaFree(atom_iw2_ylm_d)); - checkCuda(cudaFree(atom_iw2_l_d)); - checkCuda(cudaFree(psi_u_d)); - checkCuda(cudaFree(dpsi_u_d)); - checkCuda(cudaFree(d2psi_u_d)); - checkCuda(cudaFree(mgrids_pos_d)); - checkCuda(cudaFree(iat2it_d)); -} - -} \ No newline at end of file diff --git a/source/source_lcao/module_gint/temp_gint/kernel/gint_helper.cuh b/source/source_lcao/module_gint/temp_gint/kernel/gint_helper.cuh deleted file mode 100644 index 7a6e925531..0000000000 --- a/source/source_lcao/module_gint/temp_gint/kernel/gint_helper.cuh +++ /dev/null @@ -1,75 +0,0 @@ -#pragma once -#include - -// if exponent is an integer between 0 and 5 (the most common cases in gint) and -// and exp is a variable that cannot be determined at compile time (which means the compiler cannot optimize the code), -// pow_int is much faster than std::pow -template -__forceinline__ __device__ T pow_int(const T base, const int exp) -{ - switch (exp) - { - case 0: - return 1.0; - case 1: - return base; - case 2: - return base * base; - case 3: - return base * base * base; - case 4: - return base * base * base * base; - case 5: - return base * base * base * base * base; - default: - double result = std::pow(base, exp); - return result; - } -} - -template -__forceinline__ __device__ T warpReduceSum(T val) -{ - val += __shfl_xor_sync(0xffffffff, val, 16, 32); - val += __shfl_xor_sync(0xffffffff, val, 8, 32); - val += __shfl_xor_sync(0xffffffff, val, 4, 32); - val += __shfl_xor_sync(0xffffffff, val, 2, 32); - val += __shfl_xor_sync(0xffffffff, val, 1, 32); - return val; -} - -inline int ceil_div(const int a, const int b) -{ - return a / b + (a % b != 0 && (a ^ b) > 0); -} - -inline void check(cudaError_t result, char const *const func, const char *const file, - int const line) { - if (result) { - fprintf(stderr, "CUDA error at %s:%d code=%d(%s) \"%s\" \n", file, line, - static_cast(result), cudaGetErrorString(result), func); - exit(EXIT_FAILURE); - } -} - -inline void __getLastCudaError(const char *file, - const int line) -{ - cudaError_t err = cudaGetLastError(); - - if (cudaSuccess != err) { - fprintf(stderr, - "%s(%i) : getLastCudaError() CUDA error :" - " (%d) %s.\n", - file, line, static_cast(err), - cudaGetErrorString(err)); - exit(EXIT_FAILURE); - } -} - -// This will output the proper CUDA error strings in the event -// that a CUDA host call returns an error -#define checkCuda(val) check((val), #val, __FILE__, __LINE__) - -// This will output the proper error string when calling cudaGetLastError -#define checkCudaLastError() __getLastCudaError(__FILE__, __LINE__) \ No newline at end of file diff --git a/source/source_lcao/module_gint/temp_gint/kernel/set_const_mem.cu b/source/source_lcao/module_gint/temp_gint/kernel/set_const_mem.cu deleted file mode 100644 index 38fba5de00..0000000000 --- a/source/source_lcao/module_gint/temp_gint/kernel/set_const_mem.cu +++ /dev/null @@ -1,13 +0,0 @@ -#include "set_const_mem.cuh" -#include "gint_helper.cuh" - -__constant__ double ylmcoe_d[100]; - -namespace ModuleGint -{ - __host__ void set_ylmcoe_d(const double* ylmcoe_h, double** ylmcoe_d_addr) - { - checkCuda(cudaMemcpyToSymbol(ylmcoe_d, ylmcoe_h, sizeof(double) * 100)); - checkCuda(cudaGetSymbolAddress((void**)ylmcoe_d_addr, ylmcoe_d)); - } -} \ No newline at end of file diff --git a/source/source_lcao/module_gint/temp_gint/kernel/sph.cuh b/source/source_lcao/module_gint/temp_gint/kernel/sph.cuh deleted file mode 100644 index b36828222b..0000000000 --- a/source/source_lcao/module_gint/temp_gint/kernel/sph.cuh +++ /dev/null @@ -1,396 +0,0 @@ -#pragma once - -namespace ModuleGint -{ - -static __device__ void sph_harm( - const int nwl, - const double* __restrict__ ylmcoef, - const double x, - const double y, - const double z, - double* __restrict__ ylma -) -{ - /*************************** - L = 0 - ***************************/ - ylma[0] = ylmcoef[0]; // l=0, m=0 - double tmp0; - if (nwl == 0) - return; - - /*************************** - L = 1 - ***************************/ - ylma[1] = ylmcoef[1] * z; // l=1, m=0 - ylma[2] = -ylmcoef[1] * x; // l=1, m=1 - ylma[3] = -ylmcoef[1] * y; // l=1, m=-1 - if (nwl == 1) - return; - - /*************************** - L = 2 - ***************************/ - tmp0=ylmcoef[3] * ylma[0]; - ylma[4] = ylmcoef[2] * z * ylma[1] - tmp0 ; // l=2, m=0 - tmp0 = ylmcoef[4] * z; - ylma[5] = tmp0 * ylma[2]; // l=2,m=1 - ylma[6] = tmp0 * ylma[3]; // l=2,m=-1 - - tmp0 = ylmcoef[4] * x; - ylma[7] = ylmcoef[5] * ylma[4] - ylmcoef[6] * ylma[0] - - tmp0 * ylma[2]; // l=2,m=2 - ylma[8] = -tmp0 * ylma[3]; - if (nwl == 2) - return; - - /*************************** - L = 3 - ***************************/ - tmp0=ylmcoef[8] * ylma[1]; - ylma[9] = ylmcoef[7] * z * ylma[4] - tmp0; // l=3, m=0 - - tmp0 = ylmcoef[9] * z; - ylma[10] = tmp0 * ylma[5] - ylmcoef[10] * ylma[2]; // l=3,m=1 - ylma[11] = tmp0 * ylma[6] - ylmcoef[10] * ylma[3]; // l=3,m=-1 - - tmp0 = ylmcoef[11] * z; - ylma[12] = tmp0 * ylma[7]; // l=3,m=2 - ylma[13] = tmp0 * ylma[8]; // l=3,m=-2 - - tmp0 = ylmcoef[14] * x; - ylma[14] = ylmcoef[12] * ylma[10] - ylmcoef[13] * ylma[2] - - tmp0 * ylma[7]; // l=3,m=3 - ylma[15] = ylmcoef[12] * ylma[11] - ylmcoef[13] * ylma[3] - - tmp0 * ylma[8]; // l=3,m=-3 - if (nwl == 3) - return; - - /*************************** - L = 4 - ***************************/ - tmp0=ylmcoef[16] * ylma[4]; - ylma[16] = ylmcoef[15] * z * ylma[9] - tmp0; // l=4,m=0 - - tmp0 = ylmcoef[17] * z; - ylma[17] = tmp0 * ylma[10] - ylmcoef[18] * ylma[5]; // l=4,m=1 - ylma[18] = tmp0 * ylma[11] - ylmcoef[18] * ylma[6]; // l=4,m=-1 - - tmp0 = ylmcoef[19] * z; - ylma[19] = tmp0 * ylma[12] - ylmcoef[20] * ylma[7]; // l=4,m=2 - ylma[20] = tmp0 * ylma[13] - ylmcoef[20] * ylma[8]; // l=4,m=-2 - - tmp0 = 3.0 * z; - ylma[21] = tmp0 * ylma[14]; // l=4,m=3 - ylma[22] = tmp0 * ylma[15]; // l=4,m=-3 - - tmp0 = ylmcoef[23] * x; - ylma[23] = ylmcoef[21] * ylma[19] - ylmcoef[22] * ylma[7] - - tmp0 * ylma[14]; // l=4,m=4 - ylma[24] = ylmcoef[21] * ylma[20] - ylmcoef[22] * ylma[8] - - tmp0 * ylma[15]; // l=4,m=-4 - if (nwl == 4) - return; - - /*************************** - L = 5 - ***************************/ - tmp0=ylmcoef[25] * ylma[9]; - ylma[25] - = ylmcoef[24] * z * ylma[16] - tmp0; // l=5,m=0 - - tmp0 = ylmcoef[26] * z; - ylma[26] = tmp0 * ylma[17] - ylmcoef[27] * ylma[10]; // l=5,m=1 - ylma[27] = tmp0 * ylma[18] - ylmcoef[27] * ylma[11]; // l=5,m=-1 - - tmp0 = ylmcoef[28] * z; - ylma[28] = tmp0 * ylma[19] - ylmcoef[29] * ylma[12]; // l=5,m=2 - ylma[29] = tmp0 * ylma[20] - ylmcoef[29] * ylma[13]; // l=5,m=-2 - - tmp0 = ylmcoef[30] * z; - ylma[30] = tmp0 * ylma[21] - ylmcoef[31] * ylma[14]; // l=5,m=3 - ylma[31] = tmp0 * ylma[22] - ylmcoef[31] * ylma[15]; // l=5,m=-3 - - tmp0 = ylmcoef[32] * z; - ylma[32] = tmp0 * ylma[23]; // l=5,m=4 - ylma[33] = tmp0 * ylma[24]; // l=5,m=-4 - - tmp0 = ylmcoef[35] * x; - ylma[34] = ylmcoef[33] * ylma[30] - ylmcoef[34] * ylma[14] - - tmp0 * ylma[23]; // l=5,m=5 - ylma[35] = ylmcoef[33] * ylma[31] - ylmcoef[34] * ylma[15] - - tmp0 * ylma[24]; // l=5,m=-5 - if (nwl == 5) - return; - /* - // if nwl > 5 - for (int il = 6; il <= nwl; il++) - { - int istart = il * il; - int istart1 = (il - 1) * (il - 1); - int istart2 = (il - 2) * (il - 2); - - double fac2 = sqrt(4.0 * istart - 1.0); - double fac4 = sqrt(4.0 * istart1 - 1.0); - - for (int im = 0; im < 2 * il - 1; im++) - { - int imm = (im + 1) / 2; - ylma[istart + im] = fac2 / sqrt((double)istart - imm * imm) * (z - * ylma[istart1 + im] - sqrt((double)istart1 - imm * imm) / fac4 * - ylma[istart2 + im]); - } - - double bl1 = sqrt(2.0 * il / (2.0 * il + 1.0)); - double bl2 = sqrt((2.0 * il - 2.0) / (2.0 * il - 1.0)); - double bl3 = sqrt(2.0) / fac2; - - ylma[istart + 2 * il - 1] = (bl3 * ylma[istart + 2 * il - 5] - bl2 * - ylma[istart2 + 2 * il - 5] - 2.0 * x * ylma[istart1 + 2 * il - 3]) / - bl1; ylma[istart + 2 * il] = (bl3 * ylma[istart + 2 * il - 4] - bl2 * - ylma[istart2 + 2 * il - 4] - 2.0 * x * ylma[istart1 + 2 * il - 2]) / - bl1; - }*/ -} - -static __device__ void grad_rl_sph_harm( - const int nwl, - const double* __restrict__ ylmcoef, - const double x, - const double y, - const double z, - double* __restrict__ rly, - double* __restrict__ grly -) -{ - double r2 = x * x + y * y + z * z; - double tx = x * 2; - double ty = y * 2; - double tz = z * 2; - - //begin calculation - /*************************** - L = 0 - ***************************/ - rly[0] = ylmcoef[0]; //l=0, m=0 - grly[0] = grly[1] = grly[2] = 0.0; - if (nwl == 0) return; - - /*************************** - L = 1 - ***************************/ - rly[1] = ylmcoef[1]*z; //l=1, m=0 - grly[3] = grly[4] = 0.0; - grly[5] = ylmcoef[1]; - - rly[2] = -ylmcoef[1]*x; //l=1, m=1 - grly[7] = grly[8] = 0.0; - grly[6] = -ylmcoef[1]; - - rly[3] = -ylmcoef[1]*y; //l=1, m=-1 - grly[9] = grly[11] = 0.0; - grly[10] = -ylmcoef[1]; - - if (nwl == 1) return; - - /*************************** - L = 2 - ***************************/ - rly[4] = ylmcoef[2]*z*rly[1]-ylmcoef[3]*rly[0]*r2;//l=2, m=0 - grly[12] = ylmcoef[2]*z*grly[3]-ylmcoef[3]*(grly[0]*r2+rly[0]*tx);//l=2, m=0 - grly[13] = ylmcoef[2]*z*grly[4]-ylmcoef[3]*(grly[1]*r2+rly[0]*ty);//l=2, m=0 - grly[14] = ylmcoef[2]*(z*grly[5]+rly[1])-ylmcoef[3]*(grly[2]*r2+rly[0]*tz);//l=2, m=0 - - - double tmp0 = ylmcoef[4]*z; - rly[5] = tmp0*rly[2];//l=2,m=1 - grly[15] = tmp0*grly[6]; - grly[16] = tmp0*grly[7]; - grly[17] = ylmcoef[4]*(rly[2]+z*grly[8]); - - rly[6] = tmp0*rly[3];//l=2,m=-1 - grly[18] = tmp0*grly[9]; - grly[19] = tmp0*grly[10]; - grly[20] = ylmcoef[4]*(rly[3]+z*grly[11]); - - double tmp2 = ylmcoef[4]*x; - rly[7]= ylmcoef[5]*rly[4]-ylmcoef[6]*rly[0]*r2 - tmp2*rly[2];//l=2,m=2 - grly[21] = ylmcoef[5]*grly[12]-ylmcoef[6]*(rly[0]*tx+grly[0]*r2)-ylmcoef[4]*(x*grly[6]+rly[2]); - -// std::cout << "\np1 = "<< ylmcoef[5]*grly[12] << " p2 = " << -ylmcoef[6]*rly[0]*tx -// << " p3 = " << -ylmcoef[4]*x*grly[6] << " p4 = " << -ylmcoef[4]*rly[2] << std::endl; - - grly[22] = ylmcoef[5]*grly[13]-ylmcoef[6]*(rly[0]*ty+grly[1]*r2)-tmp2*grly[7]; - grly[23] = ylmcoef[5]*grly[14]-ylmcoef[6]*(rly[0]*tz+grly[2]*r2)-tmp2*grly[8]; - - rly[8] = -tmp2*rly[3]; - grly[24] = -ylmcoef[4]*(rly[3]+x*grly[9]); - grly[25] = -tmp2*grly[10]; - grly[26] = -tmp2*grly[11]; -// rly[8] = tmp1+tmp2*rly[3];//l=2,m=-2 - if (nwl == 2) return; - - /*************************** - L = 3 - ***************************/ - rly[9] = ylmcoef[7]*z*rly[4]-ylmcoef[8]*rly[1]*r2; //l=3, m=0 - grly[27] = ylmcoef[7]*z*grly[12]-ylmcoef[8]*(rly[1]*tx+grly[3]*r2); - grly[28] = ylmcoef[7]*z*grly[13]-ylmcoef[8]*(rly[1]*ty+grly[4]*r2); - grly[29] = ylmcoef[7]*(rly[4]+z*grly[14])-ylmcoef[8]*(rly[1]*tz+grly[5]*r2); - - double tmp3 = ylmcoef[9]*z; - rly[10] = tmp3*rly[5]-ylmcoef[10]*rly[2]*r2;//l=3,m=1 - grly[30] = tmp3*grly[15]-ylmcoef[10]*(grly[6]*r2+rly[2]*tx); - grly[31] = tmp3*grly[16]-ylmcoef[10]*(grly[7]*r2+rly[2]*ty); - grly[32] = ylmcoef[9]*(z*grly[17]+rly[5])-ylmcoef[10]*(grly[8]*r2+rly[2]*tz); - - rly[11] = tmp3*rly[6]-ylmcoef[10]*rly[3]*r2;//l=3,m=-1 - grly[33] = tmp3*grly[18]-ylmcoef[10]*(grly[9]*r2+rly[3]*tx); - grly[34] = tmp3*grly[19]-ylmcoef[10]*(grly[10]*r2+rly[3]*ty); - grly[35] = ylmcoef[9]*(z*grly[20]+rly[6])-ylmcoef[10]*(grly[11]*r2+rly[3]*tz); - - double tmp4 = ylmcoef[11]*z; - rly[12] = tmp4*rly[7];//l=3,m=2 - grly[36] = tmp4*grly[21]; - grly[37] = tmp4*grly[22]; - grly[38] = ylmcoef[11]*(z*grly[23]+rly[7]); - - rly[13] = tmp4*rly[8];//l=3,m=-2 - grly[39] = tmp4*grly[24]; - grly[40] = tmp4*grly[25]; - grly[41] = ylmcoef[11]*(z*grly[26]+rly[8]); - - double tmp5 = ylmcoef[14]*x; - rly[14] = ylmcoef[12]*rly[10]-ylmcoef[13]*rly[2]*r2-tmp5*rly[7];//l=3,m=3 - grly[42] = ylmcoef[12]*grly[30]-ylmcoef[13]*(rly[2]*tx+grly[6]*r2)-ylmcoef[14]*(rly[7]+x*grly[21]); - grly[43] = ylmcoef[12]*grly[31]-ylmcoef[13]*(rly[2]*ty+grly[7]*r2)-tmp5*grly[22]; - grly[44] = ylmcoef[12]*grly[32]-ylmcoef[13]*(rly[2]*tz+grly[8]*r2)-tmp5*grly[23]; - - rly[15] = ylmcoef[12]*rly[11]-ylmcoef[13]*rly[3]*r2-tmp5*rly[8];//l=3,m=-3 - grly[45] = ylmcoef[12]*grly[33]-ylmcoef[13]*(rly[3]*tx+grly[9]*r2)-ylmcoef[14]*(rly[8]+x*grly[24]); - grly[46] = ylmcoef[12]*grly[34]-ylmcoef[13]*(rly[3]*ty+grly[10]*r2)-tmp5*grly[25]; - grly[47] = ylmcoef[12]*grly[35]-ylmcoef[13]*(rly[3]*tz+grly[11]*r2)-tmp5*grly[26]; - if (nwl == 3) return; - - /*************************** - L = 4 - ***************************/ - rly[16] = ylmcoef[15]*z*rly[9]-ylmcoef[16]*rly[4]*r2;//l=4,m=0 - grly[48] = ylmcoef[15]*z*grly[27]-ylmcoef[16]*(rly[4]*tx+grly[12]*r2); - grly[49] = ylmcoef[15]*z*grly[28]-ylmcoef[16]*(rly[4]*ty+grly[13]*r2); - grly[50] = ylmcoef[15]*(z*grly[29]+rly[9])-ylmcoef[16]*(rly[4]*tz+grly[14]*r2); - - double tmp6 = ylmcoef[17]*z; - rly[17] = tmp6*rly[10]-ylmcoef[18]*rly[5]*r2;//l=4,m=1 - grly[51] = tmp6*grly[30]-ylmcoef[18]*(rly[5]*tx+grly[15]*r2); - grly[52] = tmp6*grly[31]-ylmcoef[18]*(rly[5]*ty+grly[16]*r2); - grly[53] = ylmcoef[17]*(z*grly[32]+rly[10])-ylmcoef[18]*(rly[5]*tz+grly[17]*r2); - - rly[18] = tmp6*rly[11]-ylmcoef[18]*rly[6]*r2;//l=4,m=-1 - grly[54] = tmp6*grly[33]-ylmcoef[18]*(rly[6]*tx+grly[18]*r2); - grly[55] = tmp6*grly[34]-ylmcoef[18]*(rly[6]*ty+grly[19]*r2); - grly[56] = ylmcoef[17]*(z*grly[35]+rly[11])-ylmcoef[18]*(rly[6]*tz+grly[20]*r2); - - double tmp7 = ylmcoef[19]*z; - rly[19] = tmp7*rly[12]-ylmcoef[20]*rly[7]*r2;//l=4,m=2 - grly[57] = tmp7*grly[36]-ylmcoef[20]*(rly[7]*tx+grly[21]*r2); - grly[58] = tmp7*grly[37]-ylmcoef[20]*(rly[7]*ty+grly[22]*r2); - grly[59] = ylmcoef[19]*(z*grly[38]+rly[12])-ylmcoef[20]*(rly[7]*tz+grly[23]*r2); - - rly[20] = tmp7*rly[13]-ylmcoef[20]*rly[8]*r2;//l=4,m=-2 - grly[60] = tmp7*grly[39]-ylmcoef[20]*(rly[8]*tx+grly[24]*r2); - grly[61] = tmp7*grly[40]-ylmcoef[20]*(rly[8]*ty+grly[25]*r2); - grly[62] = ylmcoef[19]*(z*grly[41]+rly[13])-ylmcoef[20]*(rly[8]*tz+grly[26]*r2); - - double tmp8 = 3.0*z; - rly[21] = tmp8*rly[14];//l=4,m=3 - grly[63] = tmp8*grly[42]; - grly[64] = tmp8*grly[43]; - grly[65] = 3.0*(z*grly[44]+rly[14]); - - - rly[22] = tmp8*rly[15];//l=4,m=-3 - grly[66] = tmp8*grly[45]; - grly[67] = tmp8*grly[46]; - grly[68] = 3.0*(z*grly[47]+rly[15]); - - double tmp9 = ylmcoef[23]*x; - rly[23] = ylmcoef[21]*rly[19]-ylmcoef[22]*rly[7]*r2-tmp9*rly[14];//l=4,m=4 - grly[69] = ylmcoef[21]*grly[57]-ylmcoef[22]*(rly[7]*tx+grly[21]*r2)-ylmcoef[23]*(x*grly[42]+rly[14]); - grly[70] = ylmcoef[21]*grly[58]-ylmcoef[22]*(rly[7]*ty+grly[22]*r2)-tmp9*grly[43]; - grly[71] = ylmcoef[21]*grly[59]-ylmcoef[22]*(rly[7]*tz+grly[23]*r2)-tmp9*grly[44]; - - rly[24] = ylmcoef[21]*rly[20]-ylmcoef[22]*rly[8]*r2-tmp9*rly[15];//l=4,m=-4 - grly[72] = ylmcoef[21]*grly[60]-ylmcoef[22]*(rly[8]*tx+grly[24]*r2)-ylmcoef[23]*(x*grly[45]+rly[15]); - grly[73] = ylmcoef[21]*grly[61]-ylmcoef[22]*(rly[8]*ty+grly[25]*r2)-tmp9*grly[46]; - grly[74] = ylmcoef[21]*grly[62]-ylmcoef[22]*(rly[8]*tz+grly[26]*r2)-tmp9*grly[47]; - - if (nwl == 4) return; - - /*************************** - L = 5 - ***************************/ - rly[25] = ylmcoef[24]*z*rly[16]-ylmcoef[25]*rly[9]*r2;//l=5,m=0 - grly[75] = ylmcoef[24]*z*grly[48]-ylmcoef[25]*(rly[9]*tx+grly[27]*r2); - grly[76] = ylmcoef[24]*z*grly[49]-ylmcoef[25]*(rly[9]*ty+grly[28]*r2); - grly[77] = ylmcoef[24]*(z*grly[50]+rly[16])-ylmcoef[25]*(rly[9]*tz+grly[29]*r2); - - double tmp10 = ylmcoef[26]*z; - rly[26] = tmp10*rly[17]-ylmcoef[27]*rly[10]*r2;//l=5,m=1 - grly[78] = tmp10*grly[51]-ylmcoef[27]*(rly[10]*tx+grly[30]*r2); - grly[79] = tmp10*grly[52]-ylmcoef[27]*(rly[10]*ty+grly[31]*r2); - grly[80] = ylmcoef[26]*(z*grly[53]+rly[17])-ylmcoef[27]*(rly[10]*tz+grly[32]*r2); - - rly[27] = tmp10*rly[18]-ylmcoef[27]*rly[11]*r2;//l=5,m=-1 - grly[81] = tmp10*grly[54]-ylmcoef[27]*(rly[11]*tx+grly[33]*r2); - grly[82] = tmp10*grly[55]-ylmcoef[27]*(rly[11]*ty+grly[34]*r2); - grly[83] = ylmcoef[26]*(z*grly[56]+rly[18])-ylmcoef[27]*(rly[11]*tz+grly[35]*r2); - - double tmp11 = ylmcoef[28]*z; - rly[28] = tmp11*rly[19]-ylmcoef[29]*rly[12]*r2;//l=5,m=2 - grly[84] = tmp11*grly[57]-ylmcoef[29]*(rly[12]*tx+grly[36]*r2); - grly[85] = tmp11*grly[58]-ylmcoef[29]*(rly[12]*ty+grly[37]*r2); - grly[86] = ylmcoef[28]*(z*grly[59]+rly[19])-ylmcoef[29]*(rly[12]*tz+grly[38]*r2); - - rly[29] = tmp11*rly[20]-ylmcoef[29]*rly[13]*r2;//l=5,m=-2 - grly[87] = tmp11*grly[60]-ylmcoef[29]*(rly[13]*tx+grly[39]*r2); - grly[88] = tmp11*grly[61]-ylmcoef[29]*(rly[13]*ty+grly[40]*r2); - grly[89] = ylmcoef[28]*(z*grly[62]+rly[20])-ylmcoef[29]*(rly[13]*tz+grly[41]*r2); - - double tmp12 = ylmcoef[30]*z; - rly[30] = tmp12*rly[21]-ylmcoef[31]*rly[14]*r2;//l=5,m=3 - grly[90] = tmp12*grly[63]-ylmcoef[31]*(grly[42]*r2+rly[14]*tx); - grly[91] = tmp12*grly[64]-ylmcoef[31]*(grly[43]*r2+rly[14]*ty); - grly[92] = ylmcoef[30]*(z*grly[65]+rly[21])-ylmcoef[31]*(grly[44]*r2+rly[14]*tz); - - rly[31] = tmp12*rly[22]-ylmcoef[31]*rly[15]*r2;//l=5,m=-3 - grly[93] = tmp12*grly[66]-ylmcoef[31]*(grly[45]*r2+rly[15]*tx); - grly[94] = tmp12*grly[67]-ylmcoef[31]*(grly[46]*r2+rly[15]*ty); - grly[95] = ylmcoef[30]*(z*grly[68]+rly[22])-ylmcoef[31]*(grly[47]*r2+rly[15]*tz); - - double tmp13 = ylmcoef[32]*z; - rly[32] = tmp13*rly[23];//l=5,m=4 - grly[96] = tmp13*grly[69]; - grly[97] = tmp13*grly[70]; - grly[98] = ylmcoef[32]*(rly[23]+z*grly[71]); - - rly[33] = tmp13*rly[24];//l=5,m=-4 - grly[99] = tmp13*grly[72]; - grly[100] = tmp13*grly[73]; - grly[101] = ylmcoef[32]*(rly[24]+z*grly[74]); - - double tmp14 = ylmcoef[35]*x; - rly[34] = ylmcoef[33]*rly[30]-ylmcoef[34]*rly[14]*r2-tmp14*rly[23];//l=5,m=5 - grly[102] = ylmcoef[33]*grly[90]-ylmcoef[34]*(rly[14]*tx+grly[42]*r2)-ylmcoef[35]*(x*grly[69]+rly[23]); - grly[103] = ylmcoef[33]*grly[91]-ylmcoef[34]*(rly[14]*ty+grly[43]*r2)-tmp14*grly[70]; - grly[104] = ylmcoef[33]*grly[92]-ylmcoef[34]*(rly[14]*tz+grly[44]*r2)-tmp14*grly[71]; - - rly[35] = ylmcoef[33]*rly[31]-ylmcoef[34]*rly[15]*r2-tmp14*rly[24];//l=5,m=-5 - grly[105] = ylmcoef[33]*grly[93]-ylmcoef[34]*(rly[15]*tx+grly[45]*r2)-ylmcoef[35]*(x*grly[72]+rly[24]); - grly[106] = ylmcoef[33]*grly[94]-ylmcoef[34]*(rly[15]*ty+grly[46]*r2)-tmp14*grly[73]; - grly[107] = ylmcoef[33]*grly[95]-ylmcoef[34]*(rly[15]*tz+grly[47]*r2)-tmp14*grly[74]; - - if (nwl == 5) return; -} -} \ No newline at end of file diff --git a/source/source_lcao/module_gint/test/CMakeLists.txt b/source/source_lcao/module_gint/test/CMakeLists.txt deleted file mode 100644 index 2030b04a12..0000000000 --- a/source/source_lcao/module_gint/test/CMakeLists.txt +++ /dev/null @@ -1,7 +0,0 @@ -if(ENABLE_LCAO AND USE_CUDA) - AddTest( - TARGET gint_gpu_test - LIBS parameter ${math_libs} psi base device - SOURCES test_sph.cu test_sph.cpp -) -endif() \ No newline at end of file diff --git a/source/source_lcao/module_gint/test/test_sph.cpp b/source/source_lcao/module_gint/test/test_sph.cpp deleted file mode 100644 index e13a4d5675..0000000000 --- a/source/source_lcao/module_gint/test/test_sph.cpp +++ /dev/null @@ -1,597 +0,0 @@ -#include "test_sph.h" -using namespace std; - -void sph_harm(const int& Lmax, // max momentum of l - const double& xdr, - const double& ydr, - const double& zdr, - std::vector& rly, - double* ylmcoef) -{ - - // begin calculation - /*************************** - L = 0 - ***************************/ - rly[0] = ylmcoef[0]; // l=0, m=0 - if (Lmax == 0) - return; - - /*************************** - L = 1 - ***************************/ - rly[1] = ylmcoef[1] * zdr; // l=1, m=0 - rly[2] = -ylmcoef[1] * xdr; // l=1, m=1 - rly[3] = -ylmcoef[1] * ydr; // l=1, m=-1 - if (Lmax == 1) - return; - - /*************************** - L = 2 - ***************************/ - double tmp0 = ylmcoef[3] * rly[0]; - rly[4] = ylmcoef[2] * zdr * rly[1] - tmp0; // l=2, m=0 - - tmp0 = ylmcoef[4] * zdr; - rly[5] = tmp0 * rly[2]; // l=2,m=1 - rly[6] = tmp0 * rly[3]; // l=2,m=-1 - - double tmp2 = ylmcoef[4] * xdr; - rly[7] - = ylmcoef[5] * rly[4] - ylmcoef[6] * rly[0] - tmp2 * rly[2]; // l=2,m=2 - rly[8] = -tmp2 * rly[3]; - // rly[8] = tmp1+tmp2*rly[3];//l=2,m=-2 - if (Lmax == 2) - return; - - /*************************** - L = 3 - ***************************/ - tmp0 = ylmcoef[8] * rly[1]; - rly[9] = ylmcoef[7] * zdr * rly[4] - tmp0; // l=3, m=0 - - double tmp3 = ylmcoef[9] * zdr; - rly[10] = tmp3 * rly[5] - ylmcoef[10] * rly[2]; // l=3,m=1 - rly[11] = tmp3 * rly[6] - ylmcoef[10] * rly[3]; // l=3,m=-1 - - double tmp4 = ylmcoef[11] * zdr; - rly[12] = tmp4 * rly[7]; // l=3,m=2 - rly[13] = tmp4 * rly[8]; // l=3,m=-2 - - double tmp5 = ylmcoef[14] * xdr; - rly[14] = ylmcoef[12] * rly[10] - ylmcoef[13] * rly[2] - - tmp5 * rly[7]; // l=3,m=3 - rly[15] = ylmcoef[12] * rly[11] - ylmcoef[13] * rly[3] - - tmp5 * rly[8]; // l=3,m=-3 - if (Lmax == 3) - return; - - /*************************** - L = 4 - ***************************/ - tmp0 = ylmcoef[16] * rly[4]; - rly[16] = ylmcoef[15] * zdr * rly[9] - tmp0; // l=4,m=0 - - double tmp6 = ylmcoef[17] * zdr; - rly[17] = tmp6 * rly[10] - ylmcoef[18] * rly[5]; // l=4,m=1 - rly[18] = tmp6 * rly[11] - ylmcoef[18] * rly[6]; // l=4,m=-1 - - double tmp7 = ylmcoef[19] * zdr; - rly[19] = tmp7 * rly[12] - ylmcoef[20] * rly[7]; // l=4,m=2 - rly[20] = tmp7 * rly[13] - ylmcoef[20] * rly[8]; // l=4,m=-2 - - double tmp8 = 3.0 * zdr; - rly[21] = tmp8 * rly[14]; // l=4,m=3 - rly[22] = tmp8 * rly[15]; // l=4,m=-3 - - double tmp9 = ylmcoef[23] * xdr; - rly[23] = ylmcoef[21] * rly[19] - ylmcoef[22] * rly[7] - - tmp9 * rly[14]; // l=4,m=4 - rly[24] = ylmcoef[21] * rly[20] - ylmcoef[22] * rly[8] - - tmp9 * rly[15]; // l=4,m=-4 - if (Lmax == 4) - return; - - /*************************** - L = 5 - ***************************/ - tmp0 = ylmcoef[25] * rly[9]; - rly[25] = ylmcoef[24] * zdr * rly[16] - tmp0; // l=5,m=0 - - double tmp10 = ylmcoef[26] * zdr; - rly[26] = tmp10 * rly[17] - ylmcoef[27] * rly[10]; // l=5,m=1 - rly[27] = tmp10 * rly[18] - ylmcoef[27] * rly[11]; // l=5,m=-1 - - double tmp11 = ylmcoef[28] * zdr; - rly[28] = tmp11 * rly[19] - ylmcoef[29] * rly[12]; // l=5,m=2 - rly[29] = tmp11 * rly[20] - ylmcoef[29] * rly[13]; // l=5,m=-2 - - double tmp12 = ylmcoef[30] * zdr; - rly[30] = tmp12 * rly[21] - ylmcoef[31] * rly[14]; // l=5,m=3 - rly[31] = tmp12 * rly[22] - ylmcoef[31] * rly[15]; // l=5,m=-3 - - double tmp13 = ylmcoef[32] * zdr; - rly[32] = tmp13 * rly[23]; // l=5,m=4 - rly[33] = tmp13 * rly[24]; // l=5,m=-4 - - double tmp14 = ylmcoef[35] * xdr; - rly[34] = ylmcoef[33] * rly[30] - ylmcoef[34] * rly[14] - - tmp14 * rly[23]; // l=5,m=5 - rly[35] = ylmcoef[33] * rly[31] - ylmcoef[34] * rly[15] - - tmp14 * rly[24]; // l=5,m=-5 - if (Lmax == 5) - return; - - // if Lmax > 5 - for (int il = 6; il <= Lmax; il++) - { - int istart = il * il; - int istart1 = (il - 1) * (il - 1); - int istart2 = (il - 2) * (il - 2); - - double fac2 = sqrt(4.0 * istart - 1.0); - double fac4 = sqrt(4.0 * istart1 - 1.0); - - for (int im = 0; im < 2 * il - 1; im++) - { - int imm = (im + 1) / 2; - // if (im % 2 == 0) imm *= -1; - - rly[istart + im] = fac2 / sqrt((double)istart - imm * imm) - * (zdr * rly[istart1 + im] - - sqrt((double)istart1 - imm * imm) / fac4 - * rly[istart2 + im]); - } - - double bl1 = sqrt(2.0 * il / (2.0 * il + 1.0)); - double bl2 = sqrt((2.0 * il - 2.0) / (2.0 * il - 1.0)); - double bl3 = sqrt(2.0) / fac2; - - rly[istart + 2 * il - 1] - = (bl3 * rly[istart + 2 * il - 5] - bl2 * rly[istart2 + 2 * il - 5] - - 2.0 * xdr * rly[istart1 + 2 * il - 3]) - / bl1; - rly[istart + 2 * il] - = (bl3 * rly[istart + 2 * il - 4] - bl2 * rly[istart2 + 2 * il - 4] - - 2.0 * xdr * rly[istart1 + 2 * il - 2]) - / bl1; - } - - return; -} -void grad_rl_sph_harm(const int& Lmax, // max momentum of L - const double& x, - const double& y, - const double& z, - double* rly, - double** grly, - const double* ylmcoef) -{ - double radius2 = x * x + y * y + z * z; - double tx = 2.0 * x; - double ty = 2.0 * y; - double tz = 2.0 * z; - - // begin calculation - /*************************** - L = 0 - ***************************/ - rly[0] = ylmcoef[0]; // l=0, m=0 - grly[0][0] = grly[0][1] = grly[0][2] = 0.0; - if (Lmax == 0) - return; - - /*************************** - L = 1 - ***************************/ - rly[1] = ylmcoef[1] * z; // l=1, m=0 - grly[1][0] = grly[1][1] = 0.0; - grly[1][2] = ylmcoef[1]; - - rly[2] = -ylmcoef[1] * x; // l=1, m=1 - grly[2][1] = grly[2][2] = 0.0; - grly[2][0] = -ylmcoef[1]; - - rly[3] = -ylmcoef[1] * y; // l=1, m=-1 - grly[3][0] = grly[3][2] = 0.0; - grly[3][1] = -ylmcoef[1]; - - if (Lmax == 1) - return; - - /*************************** - L = 2 - ***************************/ - rly[4] - = ylmcoef[2] * z * rly[1] - ylmcoef[3] * rly[0] * radius2; // l=2, m=0 - grly[4][0] - = ylmcoef[2] * z * grly[1][0] - - ylmcoef[3] * (grly[0][0] * radius2 + rly[0] * tx); // l=2, m=0 - grly[4][1] - = ylmcoef[2] * z * grly[1][1] - - ylmcoef[3] * (grly[0][1] * radius2 + rly[0] * ty); // l=2, m=0 - grly[4][2] - = ylmcoef[2] * (z * grly[1][2] + rly[1]) - - ylmcoef[3] * (grly[0][2] * radius2 + rly[0] * tz); // l=2, m=0 - - double tmp0 = ylmcoef[4] * z; - rly[5] = tmp0 * rly[2]; // l=2,m=1 - grly[5][0] = tmp0 * grly[2][0]; - grly[5][1] = tmp0 * grly[2][1]; - grly[5][2] = ylmcoef[4] * (rly[2] + z * grly[2][2]); - - rly[6] = tmp0 * rly[3]; // l=2,m=-1 - grly[6][0] = tmp0 * grly[3][0]; - grly[6][1] = tmp0 * grly[3][1]; - grly[6][2] = ylmcoef[4] * (rly[3] + z * grly[3][2]); - - double tmp2 = ylmcoef[4] * x; - rly[7] = ylmcoef[5] * rly[4] - ylmcoef[6] * rly[0] * radius2 - - tmp2 * rly[2]; // l=2,m=2 - grly[7][0] = ylmcoef[5] * grly[4][0] - - ylmcoef[6] * (rly[0] * tx + grly[0][0] * radius2) - - ylmcoef[4] * (x * grly[2][0] + rly[2]); - - // std::cout << "\np1 = "<< ylmcoef[5]*grly[4][0] << " p2 = " << - //-ylmcoef[6]*rly[0]*tx - // << " p3 = " << -ylmcoef[4]*x*grly[2][0] << " p4 = " - //<< -ylmcoef[4]*rly[2] << std::endl; - - grly[7][1] = ylmcoef[5] * grly[4][1] - - ylmcoef[6] * (rly[0] * ty + grly[0][1] * radius2) - - tmp2 * grly[2][1]; - grly[7][2] = ylmcoef[5] * grly[4][2] - - ylmcoef[6] * (rly[0] * tz + grly[0][2] * radius2) - - tmp2 * grly[2][2]; - - rly[8] = -tmp2 * rly[3]; - grly[8][0] = -ylmcoef[4] * (rly[3] + x * grly[3][0]); - grly[8][1] = -tmp2 * grly[3][1]; - grly[8][2] = -tmp2 * grly[3][2]; - // rly[8] = tmp1+tmp2*rly[3];//l=2,m=-2 - if (Lmax == 2) - return; - - /*************************** - L = 3 - ***************************/ - rly[9] - = ylmcoef[7] * z * rly[4] - ylmcoef[8] * rly[1] * radius2; // l=3, m=0 - grly[9][0] = ylmcoef[7] * z * grly[4][0] - - ylmcoef[8] * (rly[1] * tx + grly[1][0] * radius2); - grly[9][1] = ylmcoef[7] * z * grly[4][1] - - ylmcoef[8] * (rly[1] * ty + grly[1][1] * radius2); - grly[9][2] = ylmcoef[7] * (rly[4] + z * grly[4][2]) - - ylmcoef[8] * (rly[1] * tz + grly[1][2] * radius2); - - double tmp3 = ylmcoef[9] * z; - rly[10] = tmp3 * rly[5] - ylmcoef[10] * rly[2] * radius2; // l=3,m=1 - grly[10][0] = tmp3 * grly[5][0] - - ylmcoef[10] * (grly[2][0] * radius2 + rly[2] * tx); - grly[10][1] = tmp3 * grly[5][1] - - ylmcoef[10] * (grly[2][1] * radius2 + rly[2] * ty); - grly[10][2] = ylmcoef[9] * (z * grly[5][2] + rly[5]) - - ylmcoef[10] * (grly[2][2] * radius2 + rly[2] * tz); - - rly[11] = tmp3 * rly[6] - ylmcoef[10] * rly[3] * radius2; // l=3,m=-1 - grly[11][0] = tmp3 * grly[6][0] - - ylmcoef[10] * (grly[3][0] * radius2 + rly[3] * tx); - grly[11][1] = tmp3 * grly[6][1] - - ylmcoef[10] * (grly[3][1] * radius2 + rly[3] * ty); - grly[11][2] = ylmcoef[9] * (z * grly[6][2] + rly[6]) - - ylmcoef[10] * (grly[3][2] * radius2 + rly[3] * tz); - - double tmp4 = ylmcoef[11] * z; - rly[12] = tmp4 * rly[7]; // l=3,m=2 - grly[12][0] = tmp4 * grly[7][0]; - grly[12][1] = tmp4 * grly[7][1]; - grly[12][2] = ylmcoef[11] * (z * grly[7][2] + rly[7]); - - rly[13] = tmp4 * rly[8]; // l=3,m=-2 - grly[13][0] = tmp4 * grly[8][0]; - grly[13][1] = tmp4 * grly[8][1]; - grly[13][2] = ylmcoef[11] * (z * grly[8][2] + rly[8]); - - double tmp5 = ylmcoef[14] * x; - rly[14] = ylmcoef[12] * rly[10] - ylmcoef[13] * rly[2] * radius2 - - tmp5 * rly[7]; // l=3,m=3 - grly[14][0] = ylmcoef[12] * grly[10][0] - - ylmcoef[13] * (rly[2] * tx + grly[2][0] * radius2) - - ylmcoef[14] * (rly[7] + x * grly[7][0]); - grly[14][1] = ylmcoef[12] * grly[10][1] - - ylmcoef[13] * (rly[2] * ty + grly[2][1] * radius2) - - tmp5 * grly[7][1]; - grly[14][2] = ylmcoef[12] * grly[10][2] - - ylmcoef[13] * (rly[2] * tz + grly[2][2] * radius2) - - tmp5 * grly[7][2]; - - rly[15] = ylmcoef[12] * rly[11] - ylmcoef[13] * rly[3] * radius2 - - tmp5 * rly[8]; // l=3,m=-3 - grly[15][0] = ylmcoef[12] * grly[11][0] - - ylmcoef[13] * (rly[3] * tx + grly[3][0] * radius2) - - ylmcoef[14] * (rly[8] + x * grly[8][0]); - grly[15][1] = ylmcoef[12] * grly[11][1] - - ylmcoef[13] * (rly[3] * ty + grly[3][1] * radius2) - - tmp5 * grly[8][1]; - grly[15][2] = ylmcoef[12] * grly[11][2] - - ylmcoef[13] * (rly[3] * tz + grly[3][2] * radius2) - - tmp5 * grly[8][2]; - if (Lmax == 3) - return; - - /*************************** - L = 4 - ***************************/ - rly[16] - = ylmcoef[15] * z * rly[9] - ylmcoef[16] * rly[4] * radius2; // l=4,m=0 - grly[16][0] = ylmcoef[15] * z * grly[9][0] - - ylmcoef[16] * (rly[4] * tx + grly[4][0] * radius2); - grly[16][1] = ylmcoef[15] * z * grly[9][1] - - ylmcoef[16] * (rly[4] * ty + grly[4][1] * radius2); - grly[16][2] = ylmcoef[15] * (z * grly[9][2] + rly[9]) - - ylmcoef[16] * (rly[4] * tz + grly[4][2] * radius2); - - double tmp6 = ylmcoef[17] * z; - rly[17] = tmp6 * rly[10] - ylmcoef[18] * rly[5] * radius2; // l=4,m=1 - grly[17][0] = tmp6 * grly[10][0] - - ylmcoef[18] * (rly[5] * tx + grly[5][0] * radius2); - grly[17][1] = tmp6 * grly[10][1] - - ylmcoef[18] * (rly[5] * ty + grly[5][1] * radius2); - grly[17][2] = ylmcoef[17] * (z * grly[10][2] + rly[10]) - - ylmcoef[18] * (rly[5] * tz + grly[5][2] * radius2); - - rly[18] = tmp6 * rly[11] - ylmcoef[18] * rly[6] * radius2; // l=4,m=-1 - grly[18][0] = tmp6 * grly[11][0] - - ylmcoef[18] * (rly[6] * tx + grly[6][0] * radius2); - grly[18][1] = tmp6 * grly[11][1] - - ylmcoef[18] * (rly[6] * ty + grly[6][1] * radius2); - grly[18][2] = ylmcoef[17] * (z * grly[11][2] + rly[11]) - - ylmcoef[18] * (rly[6] * tz + grly[6][2] * radius2); - - double tmp7 = ylmcoef[19] * z; - rly[19] = tmp7 * rly[12] - ylmcoef[20] * rly[7] * radius2; // l=4,m=2 - grly[19][0] = tmp7 * grly[12][0] - - ylmcoef[20] * (rly[7] * tx + grly[7][0] * radius2); - grly[19][1] = tmp7 * grly[12][1] - - ylmcoef[20] * (rly[7] * ty + grly[7][1] * radius2); - grly[19][2] = ylmcoef[19] * (z * grly[12][2] + rly[12]) - - ylmcoef[20] * (rly[7] * tz + grly[7][2] * radius2); - - rly[20] = tmp7 * rly[13] - ylmcoef[20] * rly[8] * radius2; // l=4,m=-2 - grly[20][0] = tmp7 * grly[13][0] - - ylmcoef[20] * (rly[8] * tx + grly[8][0] * radius2); - grly[20][1] = tmp7 * grly[13][1] - - ylmcoef[20] * (rly[8] * ty + grly[8][1] * radius2); - grly[20][2] = ylmcoef[19] * (z * grly[13][2] + rly[13]) - - ylmcoef[20] * (rly[8] * tz + grly[8][2] * radius2); - - double tmp8 = 3.0 * z; - rly[21] = tmp8 * rly[14]; // l=4,m=3 - grly[21][0] = tmp8 * grly[14][0]; - grly[21][1] = tmp8 * grly[14][1]; - grly[21][2] = 3.0 * (z * grly[14][2] + rly[14]); - - rly[22] = tmp8 * rly[15]; // l=4,m=-3 - grly[22][0] = tmp8 * grly[15][0]; - grly[22][1] = tmp8 * grly[15][1]; - grly[22][2] = 3.0 * (z * grly[15][2] + rly[15]); - - double tmp9 = ylmcoef[23] * x; - rly[23] = ylmcoef[21] * rly[19] - ylmcoef[22] * rly[7] * radius2 - - tmp9 * rly[14]; // l=4,m=4 - grly[23][0] = ylmcoef[21] * grly[19][0] - - ylmcoef[22] * (rly[7] * tx + grly[7][0] * radius2) - - ylmcoef[23] * (x * grly[14][0] + rly[14]); - grly[23][1] = ylmcoef[21] * grly[19][1] - - ylmcoef[22] * (rly[7] * ty + grly[7][1] * radius2) - - tmp9 * grly[14][1]; - grly[23][2] = ylmcoef[21] * grly[19][2] - - ylmcoef[22] * (rly[7] * tz + grly[7][2] * radius2) - - tmp9 * grly[14][2]; - - rly[24] = ylmcoef[21] * rly[20] - ylmcoef[22] * rly[8] * radius2 - - tmp9 * rly[15]; // l=4,m=-4 - grly[24][0] = ylmcoef[21] * grly[20][0] - - ylmcoef[22] * (rly[8] * tx + grly[8][0] * radius2) - - ylmcoef[23] * (x * grly[15][0] + rly[15]); - grly[24][1] = ylmcoef[21] * grly[20][1] - - ylmcoef[22] * (rly[8] * ty + grly[8][1] * radius2) - - tmp9 * grly[15][1]; - grly[24][2] = ylmcoef[21] * grly[20][2] - - ylmcoef[22] * (rly[8] * tz + grly[8][2] * radius2) - - tmp9 * grly[15][2]; - - if (Lmax == 4) - return; - - /*************************** - L = 5 - ***************************/ - rly[25] - = ylmcoef[24] * z * rly[16] - ylmcoef[25] * rly[9] * radius2; // l=5,m=0 - grly[25][0] = ylmcoef[24] * z * grly[16][0] - - ylmcoef[25] * (rly[9] * tx + grly[9][0] * radius2); - grly[25][1] = ylmcoef[24] * z * grly[16][1] - - ylmcoef[25] * (rly[9] * ty + grly[9][1] * radius2); - grly[25][2] = ylmcoef[24] * (z * grly[16][2] + rly[16]) - - ylmcoef[25] * (rly[9] * tz + grly[9][2] * radius2); - - double tmp10 = ylmcoef[26] * z; - rly[26] = tmp10 * rly[17] - ylmcoef[27] * rly[10] * radius2; // l=5,m=1 - grly[26][0] = tmp10 * grly[17][0] - - ylmcoef[27] * (rly[10] * tx + grly[10][0] * radius2); - grly[26][1] = tmp10 * grly[17][1] - - ylmcoef[27] * (rly[10] * ty + grly[10][1] * radius2); - grly[26][2] = ylmcoef[26] * (z * grly[17][2] + rly[17]) - - ylmcoef[27] * (rly[10] * tz + grly[10][2] * radius2); - - rly[27] = tmp10 * rly[18] - ylmcoef[27] * rly[11] * radius2; // l=5,m=-1 - grly[27][0] = tmp10 * grly[18][0] - - ylmcoef[27] * (rly[11] * tx + grly[11][0] * radius2); - grly[27][1] = tmp10 * grly[18][1] - - ylmcoef[27] * (rly[11] * ty + grly[11][1] * radius2); - grly[27][2] = ylmcoef[26] * (z * grly[18][2] + rly[18]) - - ylmcoef[27] * (rly[11] * tz + grly[11][2] * radius2); - - double tmp11 = ylmcoef[28] * z; - rly[28] = tmp11 * rly[19] - ylmcoef[29] * rly[12] * radius2; // l=5,m=2 - grly[28][0] = tmp11 * grly[19][0] - - ylmcoef[29] * (rly[12] * tx + grly[12][0] * radius2); - grly[28][1] = tmp11 * grly[19][1] - - ylmcoef[29] * (rly[12] * ty + grly[12][1] * radius2); - grly[28][2] = ylmcoef[28] * (z * grly[19][2] + rly[19]) - - ylmcoef[29] * (rly[12] * tz + grly[12][2] * radius2); - - rly[29] = tmp11 * rly[20] - ylmcoef[29] * rly[13] * radius2; // l=5,m=-2 - grly[29][0] = tmp11 * grly[20][0] - - ylmcoef[29] * (rly[13] * tx + grly[13][0] * radius2); - grly[29][1] = tmp11 * grly[20][1] - - ylmcoef[29] * (rly[13] * ty + grly[13][1] * radius2); - grly[29][2] = ylmcoef[28] * (z * grly[20][2] + rly[20]) - - ylmcoef[29] * (rly[13] * tz + grly[13][2] * radius2); - - double tmp12 = ylmcoef[30] * z; - rly[30] = tmp12 * rly[21] - ylmcoef[31] * rly[14] * radius2; // l=5,m=3 - grly[30][0] = tmp12 * grly[21][0] - - ylmcoef[31] * (grly[14][0] * radius2 + rly[14] * tx); - grly[30][1] = tmp12 * grly[21][1] - - ylmcoef[31] * (grly[14][1] * radius2 + rly[14] * ty); - grly[30][2] = ylmcoef[30] * (z * grly[21][2] + rly[21]) - - ylmcoef[31] * (grly[14][2] * radius2 + rly[14] * tz); - - rly[31] = tmp12 * rly[22] - ylmcoef[31] * rly[15] * radius2; // l=5,m=-3 - grly[31][0] = tmp12 * grly[22][0] - - ylmcoef[31] * (grly[15][0] * radius2 + rly[15] * tx); - grly[31][1] = tmp12 * grly[22][1] - - ylmcoef[31] * (grly[15][1] * radius2 + rly[15] * ty); - grly[31][2] = ylmcoef[30] * (z * grly[22][2] + rly[22]) - - ylmcoef[31] * (grly[15][2] * radius2 + rly[15] * tz); - - double tmp13 = ylmcoef[32] * z; - rly[32] = tmp13 * rly[23]; // l=5,m=4 - grly[32][0] = tmp13 * grly[23][0]; - grly[32][1] = tmp13 * grly[23][1]; - grly[32][2] = ylmcoef[32] * (rly[23] + z * grly[23][2]); - - rly[33] = tmp13 * rly[24]; // l=5,m=-4 - grly[33][0] = tmp13 * grly[24][0]; - grly[33][1] = tmp13 * grly[24][1]; - grly[33][2] = ylmcoef[32] * (rly[24] + z * grly[24][2]); - - double tmp14 = ylmcoef[35] * x; - rly[34] = ylmcoef[33] * rly[30] - ylmcoef[34] * rly[14] * radius2 - - tmp14 * rly[23]; // l=5,m=5 - grly[34][0] = ylmcoef[33] * grly[30][0] - - ylmcoef[34] * (rly[14] * tx + grly[14][0] * radius2) - - ylmcoef[35] * (x * grly[23][0] + rly[23]); - grly[34][1] = ylmcoef[33] * grly[30][1] - - ylmcoef[34] * (rly[14] * ty + grly[14][1] * radius2) - - tmp14 * grly[23][1]; - grly[34][2] = ylmcoef[33] * grly[30][2] - - ylmcoef[34] * (rly[14] * tz + grly[14][2] * radius2) - - tmp14 * grly[23][2]; - - rly[35] = ylmcoef[33] * rly[31] - ylmcoef[34] * rly[15] * radius2 - - tmp14 * rly[24]; // l=5,m=-5 - grly[35][0] = ylmcoef[33] * grly[31][0] - - ylmcoef[34] * (rly[15] * tx + grly[15][0] * radius2) - - ylmcoef[35] * (x * grly[24][0] + rly[24]); - grly[35][1] = ylmcoef[33] * grly[31][1] - - ylmcoef[34] * (rly[15] * ty + grly[15][1] * radius2) - - tmp14 * grly[24][1]; - grly[35][2] = ylmcoef[33] * grly[31][2] - - ylmcoef[34] * (rly[15] * tz + grly[15][2] * radius2) - - tmp14 * grly[24][2]; - - if (Lmax == 5) - return; - - // if Lmax > 5 - for (int il = 6; il <= Lmax; il++) - { - int istart = il * il; - int istart1 = (il - 1) * (il - 1); - int istart2 = (il - 2) * (il - 2); - - double fac2 = sqrt(4.0 * istart - 1.0); - double fac4 = sqrt(4.0 * istart1 - 1.0); - - for (int im = 0; im < 2 * il - 1; im++) - { - int imm = (im + 1) / 2; - // if (im % 2 == 0) imm *= -1; - - double var1 = fac2 / sqrt((double)istart - imm * imm); - double var2 = sqrt((double)istart1 - imm * imm) / fac4; - - rly[istart + im] = var1 - * (z * rly[istart1 + im] - - var2 * rly[istart2 + im] * radius2); - - grly[istart + im][0] - = var1 - * (z * grly[istart1 + im][0] - - var2 - * (rly[istart2 + im] * tx - + grly[istart2 + im][0] * radius2)); - grly[istart + im][1] - = var1 - * (z * grly[istart1 + im][1] - - var2 - * (rly[istart2 + im] * ty - + grly[istart2 + im][1] * radius2)); - grly[istart + im][2] - = var1 - * (z * grly[istart1 + im][2] + rly[istart1 + im] - - var2 - * (rly[istart2 + im] * tz - + grly[istart2 + im][2] * radius2)); - } - - double bl1 = sqrt(2.0 * il / (2.0 * il + 1.0)); - double bl2 = sqrt((2.0 * il - 2.0) / (2.0 * il - 1.0)); - double bl3 = sqrt(2.0) / fac2; - - int id1 = istart + 2 * il - 1; - int id2 = istart + 2 * il - 5; - int id3 = istart2 + 2 * il - 5; - int id4 = istart1 + 2 * il - 3; - - rly[id1] - = (bl3 * rly[id2] - bl2 * rly[id3] * radius2 - 2.0 * x * rly[id4]) - / bl1; - grly[id1][0] = (bl3 * grly[id2][0] - - bl2 * (grly[id3][0] * radius2 + rly[id3] * tx) - - 2.0 * (rly[id4] + x * grly[id4][0])) - / bl1; - grly[id1][1] = (bl3 * grly[id2][1] - - bl2 * (grly[id3][1] * radius2 + rly[id3] * ty) - - 2.0 * x * grly[id4][1]) - / bl1; - grly[id1][2] = (bl3 * grly[id2][2] - - bl2 * (grly[id3][2] * radius2 + rly[id3] * tz) - - 2.0 * x * grly[id4][2]) - / bl1; - - rly[id1 + 1] = (bl3 * rly[id2 + 1] - bl2 * rly[id3 + 1] * radius2 - - 2.0 * x * rly[id4 + 1]) - / bl1; - grly[id1 + 1][0] - = (bl3 * grly[id2 + 1][0] - - bl2 * (grly[id3 + 1][0] * radius2 + rly[id3 + 1] * tx) - - 2.0 * (rly[id4 + 1] + x * grly[id4 + 1][0])) - / bl1; - grly[id1 + 1][1] - = (bl3 * grly[id2 + 1][1] - - bl2 * (grly[id3 + 1][1] * radius2 + rly[id3 + 1] * ty) - - 2.0 * x * grly[id4 + 1][1]) - / bl1; - grly[id1 + 1][2] - = (bl3 * grly[id2 + 1][2] - - bl2 * (grly[id3 + 1][2] * radius2 + rly[id3 + 1] * tz) - - 2.0 * x * grly[id4 + 1][2]) - / bl1; - } - - return; -} \ No newline at end of file diff --git a/source/source_lcao/module_gint/test/test_sph.cu b/source/source_lcao/module_gint/test/test_sph.cu deleted file mode 100644 index 9d41705667..0000000000 --- a/source/source_lcao/module_gint/test/test_sph.cu +++ /dev/null @@ -1,138 +0,0 @@ -#include -#include "../kernels/cuda/sph.cuh" - -#include "float.h" -#include "cuda_runtime.h" -#include "device_launch_parameters.h" -#include "gtest/gtest.h" -#include "source_lcao/module_hcontainer/hcontainer.h" -#include "test_sph.h" -#include "source_base/array_pool.h" -using namespace std; - -class gintTest : public ::testing::Test -{ - public: -}; - -__global__ void cuda_test(double* dr, int nwl, double* ylma_g, double* ylmcoef) -{ - double ylma[49] = {0.0}; - GintKernel::spherical_harmonics(dr, nwl, ylma, ylmcoef); - for (int i = 0; i < 49; i++) - { - ylma_g[i] = ylma[i]; - } -} -__global__ void cuda_test2(double* dr, double distance, int nwl, double* dylma_g, double* ylmcoef) -{ - double ylma[49] = {0.0}; - double grly[49][3] = {0.0}; - GintKernel::spherical_harmonics_d(dr, distance, grly, nwl, ylma, ylmcoef); - for (int i = 0; i < 49; i++) - { - dylma_g[i] = ylma[i]; - } -} - -void get_random_double(int min, int max, double* result, int length) -{ - std::random_device rd; - std::default_random_engine eng(rd()); - std::uniform_real_distribution distribution(0, 10); - for (int i = 0; i < 3; i++) - { - result[i] = distribution(eng); - } -} -void get_random_int(int min, int max, int& result) -{ - std::random_device rd; - std::default_random_engine eng(rd()); - std::uniform_int_distribution distribution(min, max); - result = distribution(eng); -} -// __global__ void cuda_test -TEST_F(gintTest, test) -{ - int nwl; - double distance; - - double* dr = new double[3]; - double* dr_g; - - double ylma[49]; - double dylma[49]; - double ylma_ans[49]; - - double* ylmcoef_g; - double* ylma_g; - double* dylma_g; - double* ylmcoef = new double[100]; - - std::vector ylma_cpu(49, 0.0); - std::vector ylma_cpu_dpsir(49, 0.0); - ModuleBase::Array_Pool ylma_cpu_ddpsir(49, 3); - - nwl=3; - for (int i=0;i<3;i++){ - dr[i]=i*1.0; - distance += dr[i] * dr[i]; - } - for (int i=0;i<100;i++) - { - ylmcoef[i]=i*0.1; - } - - cudaMalloc((void**)&ylmcoef_g, 100 * sizeof(double)); - cudaMalloc((void**)&dr_g, 3 * sizeof(double)); - cudaMalloc((void**)&ylma_g, 49 * sizeof(double)); - cudaMalloc((void**)&dylma_g, 49 * 3 * sizeof(double)); - - cudaMemcpy(ylmcoef_g, ylmcoef, 100 * sizeof(double), cudaMemcpyHostToDevice); - cudaMemcpy(dr_g, dr, 3 * sizeof(double), cudaMemcpyHostToDevice); - cudaMemset(ylma_g, 0, 49 * sizeof(double)); - cudaMemset(dylma_g, 0, 49 * sizeof(double)); - - cuda_test<<<1, 1>>>(dr_g, nwl, ylma_g, ylmcoef_g); - cuda_test2<<<1, 1>>>(dr_g, distance, nwl, dylma_g, ylmcoef_g); - sph_harm(nwl, dr[0], dr[1], dr[2], ylma_cpu, ylmcoef); - grad_rl_sph_harm(nwl, dr[0], dr[1], dr[2], ylma_cpu_dpsir.data(), ylma_cpu_ddpsir.get_ptr_2D(), ylmcoef); - cudaMemcpy(ylma, ylma_g, 49 * sizeof(double), cudaMemcpyDeviceToHost); - cudaMemcpy(dylma, dylma_g, 49 * sizeof(double), cudaMemcpyDeviceToHost); - cudaDeviceReset(); - - for (int i = 0; i < 49; i++) - { - ylma_ans[i] = ylma_cpu[i]; - if ((abs(ylma[i])!= 0) && (ylma_ans[i]==ylma_ans[i]) && (ylma[i]==ylma[i])) - { - EXPECT_LT(abs(ylma_ans[i] - ylma[i]) / abs(ylma[i]), 1e-15); - } - ylma_ans[i] = ylma_cpu_dpsir[i]; - if ((abs(dylma[i]) != 0) &&(ylma_ans[i]==ylma_ans[i]) && (dylma[i]==dylma[i])) - { - EXPECT_LT(abs(ylma_ans[i] - dylma[i]) / abs(dylma[i]), 1e-15); - } - } - delete[] dr; - delete[] ylmcoef; - -} - -int main(int argc, char** argv) -{ -#ifdef __MPI - MPI_Init(&argc, &argv); - MPI_Comm_size(MPI_COMM_WORLD, &GlobalV::NPROC); - MPI_Comm_rank(MPI_COMM_WORLD, &GlobalV::MY_RANK); -#endif - testing::InitGoogleTest(&argc, argv); - int result = RUN_ALL_TESTS(); - -#ifdef __MPI - MPI_Finalize(); -#endif - - return result; -} \ No newline at end of file diff --git a/source/source_lcao/module_gint/test/test_sph.h b/source/source_lcao/module_gint/test/test_sph.h deleted file mode 100644 index 141e917200..0000000000 --- a/source/source_lcao/module_gint/test/test_sph.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef TEST_SPH_H -#define TEST_SPH_H -#include -// using namespace std; -void sph_harm(const int& Lmax, - const double& xdr, - const double& ydr, - const double& zdr, - std::vector& rly, - double* ylmcoef); - -void grad_rl_sph_harm(const int& Lmax, // max momentum of L - const double& x, - const double& y, - const double& z, - double* rly, - double** grly, - const double* ylmcoef); -#endif \ No newline at end of file diff --git a/source/source_lcao/module_gint/temp_gint/unitcell_info.cpp b/source/source_lcao/module_gint/unitcell_info.cpp similarity index 100% rename from source/source_lcao/module_gint/temp_gint/unitcell_info.cpp rename to source/source_lcao/module_gint/unitcell_info.cpp diff --git a/source/source_lcao/module_gint/temp_gint/unitcell_info.h b/source/source_lcao/module_gint/unitcell_info.h similarity index 100% rename from source/source_lcao/module_gint/temp_gint/unitcell_info.h rename to source/source_lcao/module_gint/unitcell_info.h diff --git a/source/source_lcao/module_hcontainer/CMakeLists.txt b/source/source_lcao/module_hcontainer/CMakeLists.txt index 65db746a84..7082861c27 100644 --- a/source/source_lcao/module_hcontainer/CMakeLists.txt +++ b/source/source_lcao/module_hcontainer/CMakeLists.txt @@ -5,6 +5,7 @@ list(APPEND objects atom_pair.cpp hcontainer.cpp output_hcontainer.cpp + read_hcontainer.cpp func_folding.cpp transfer.cpp func_transfer.cpp diff --git a/source/source_lcao/module_hcontainer/func_folding.cpp b/source/source_lcao/module_hcontainer/func_folding.cpp index 58ba3d267a..4b276846d6 100644 --- a/source/source_lcao/module_hcontainer/func_folding.cpp +++ b/source/source_lcao/module_hcontainer/func_folding.cpp @@ -40,7 +40,7 @@ void folding_HR(const hamilt::HContainer& hR, // if TK==std::complex, kphase is e^{ikR} const ModuleBase::Vector3 dR(r_index.x, r_index.y, r_index.z); const double arg = (kvec_d_in * dR) * ModuleBase::TWO_PI; - double sinp, cosp; + double sinp = 0.0, cosp = 0.0; ModuleBase::libm::sincos(arg, &sinp, &cosp); std::complex kphase = std::complex(cosp, sinp); @@ -86,7 +86,7 @@ void folding_HR(const hamilt::HContainer& hR, // if TK==std::complex, kphase is e^{ikR} const ModuleBase::Vector3 dR(rx, ry, rz); const double arg = (kvec_d_in * dR) * ModuleBase::TWO_PI; - double sinp, cosp; + double sinp = 0.0, cosp = 0.0; ModuleBase::libm::sincos(arg, &sinp, &cosp); std::complex kphase = std::complex(cosp, sinp); diff --git a/source/source_lcao/module_hcontainer/func_transfer.cpp b/source/source_lcao/module_hcontainer/func_transfer.cpp index 1da0c524a1..14566ac01d 100644 --- a/source/source_lcao/module_hcontainer/func_transfer.cpp +++ b/source/source_lcao/module_hcontainer/func_transfer.cpp @@ -169,7 +169,7 @@ void transferParallels2Serial(const hamilt::HContainer& hR_p, hamilt::HConta // send data std::vector receive_values; - long max_size; + long max_size = 0; if (my_rank == serial_rank) { max_size = trans_s->get_max_size(); diff --git a/source/source_lcao/module_hcontainer/hcontainer.cpp b/source/source_lcao/module_hcontainer/hcontainer.cpp index 9571fe40c8..621e9f1da7 100644 --- a/source/source_lcao/module_hcontainer/hcontainer.cpp +++ b/source/source_lcao/module_hcontainer/hcontainer.cpp @@ -1,4 +1,5 @@ #include "hcontainer.h" +#include "source_base/memory.h" namespace hamilt { @@ -12,12 +13,16 @@ HContainer::~HContainer() { if(this->allocated) { + if(this->allocated_size > 0) + { + ModuleBase::Memory::record("HContainer", -(long long)this->allocated_size, true); + } delete[] this->wrapper_pointer; } } template -HContainer::HContainer() {} +HContainer::HContainer() : allocated_size(0) {} // copy constructor template @@ -30,6 +35,7 @@ HContainer::HContainer(const HContainer& HR_in, T* data_array) this->current_R = -1; this->wrapper_pointer = data_array; this->allocated = false; + this->allocated_size = 0; this->atom_pairs = HR_in.atom_pairs; // data of HR_in will not be copied, please call add() after this constructor to copy data. this->allocate(this->wrapper_pointer, true); @@ -47,8 +53,11 @@ HContainer::HContainer(HContainer&& HR_in) noexcept this->gamma_only = HR_in.gamma_only; this->paraV = HR_in.paraV; this->allocated = HR_in.allocated; + this->allocated_size = HR_in.allocated_size; this->current_R = -1; HR_in.wrapper_pointer = nullptr; + HR_in.allocated = false; + HR_in.allocated_size = 0; // tmp terms not moved } @@ -65,9 +74,12 @@ HContainer& HContainer::operator=(HContainer&& HR_in) noexcept this->gamma_only = HR_in.gamma_only; this->paraV = HR_in.paraV; this->allocated = HR_in.allocated; + this->allocated_size = HR_in.allocated_size; this->current_R = -1; HR_in.wrapper_pointer = nullptr; + HR_in.allocated = false; + HR_in.allocated_size = 0; } return *this; } @@ -80,6 +92,7 @@ HContainer::HContainer(int natom) this->current_R = -1; this->sparse_ap.resize(natom); this->sparse_ap_index.resize(natom); + this->allocated_size = 0; } // use unitcell to initialize atom_pairs @@ -88,6 +101,7 @@ HContainer::HContainer(const UnitCell& ucell_, const Parallel_Orbitals* paraV { this->gamma_only = false; this->current_R = -1; + this->allocated_size = 0; std::vector atom_begin_row(ucell_.nat+1, 0); std::vector atom_begin_col(ucell_.nat+1, 0); int begin = 0; @@ -148,6 +162,7 @@ template HContainer::HContainer(const Parallel_Orbitals* paraV_in, T* data_pointer, const std::vector* ijr_info) { this->current_R = -1; + this->allocated_size = 0; // use HContainer as a wrapper(!nullptr) or container(nullptr) this->wrapper_pointer = data_pointer; @@ -177,13 +192,23 @@ void HContainer::allocate(T* data_array, bool is_zero) size_t nnr = this->get_nnr(); if(this->allocated) {// delete existed memory of this->wrapper_pointer + if(this->allocated_size > 0) + { + ModuleBase::Memory::record("HContainer", -(long long)this->allocated_size, true); + } delete[] this->wrapper_pointer; this->allocated = false; + this->allocated_size = 0; } if(data_array == nullptr) { // use this->wrapper_pointer as data_array this->allocated = true; + this->allocated_size = nnr * sizeof(T); + if(this->allocated_size > 0) + { + ModuleBase::Memory::record("HContainer", (long long)this->allocated_size, true); + } this->wrapper_pointer = new T[nnr]; ModuleBase::GlobalFunc::ZEROS(this->wrapper_pointer, nnr); data_array = this->wrapper_pointer; diff --git a/source/source_lcao/module_hcontainer/hcontainer.h b/source/source_lcao/module_hcontainer/hcontainer.h index 7592273fdb..74e640b83d 100644 --- a/source/source_lcao/module_hcontainer/hcontainer.h +++ b/source/source_lcao/module_hcontainer/hcontainer.h @@ -1,5 +1,5 @@ -#ifndef W_ABACUS_DEVELOP_ABACUS_DEVELOP_SOURCE_MODULE_HAMILT_LCAO_MODULE_HCONTAINER_HCONTAINER_H -#define W_ABACUS_DEVELOP_ABACUS_DEVELOP_SOURCE_MODULE_HAMILT_LCAO_MODULE_HCONTAINER_HCONTAINER_H +#ifndef HCONTAINER_H +#define HCONTAINER_H #include "atom_pair.h" #include "source_base/vector3.h" @@ -475,6 +475,9 @@ class HContainer // sparse table for (atom_i, atom_j)->index of atom_pairs std::vector> sparse_ap; std::vector> sparse_ap_index; + + // record allocated memory size + size_t allocated_size = 0; /** * @brief temporary atom-pair lists to loop selected R index @@ -507,4 +510,4 @@ class HContainer } // namespace hamilt -#endif \ No newline at end of file +#endif diff --git a/source/source_lcao/module_hcontainer/output_hcontainer.cpp b/source/source_lcao/module_hcontainer/output_hcontainer.cpp index b884969815..c00155a3b0 100644 --- a/source/source_lcao/module_hcontainer/output_hcontainer.cpp +++ b/source/source_lcao/module_hcontainer/output_hcontainer.cpp @@ -1,6 +1,6 @@ #include "output_hcontainer.h" -#include "source_io/sparse_matrix.h" +#include "source_io/module_output/sparse_matrix.h" #include @@ -31,8 +31,20 @@ Output_HContainer::Output_HContainer(hamilt::HContainer* hcontainer, template void Output_HContainer::write(bool write_empty) { + _ofs << " #----------------------------------------------------------------------#" << std::endl; + _ofs << " # CSR Format #" << std::endl; + _ofs << " # The outer loop corresponds to the number of Bravais lattice vectors. #" << std::endl; + _ofs << " # The first line contains the index of the Bravais lattice vector #" << std::endl; + _ofs << " # (Rx, Ry, Rz), followed by the number of non-zero elements. #" << std::endl; + _ofs << " # The subsequent lines consist of three blocks of data, which are #" << std::endl; + _ofs << " # values, column indices, row pointers. #" << std::endl; + _ofs << " #----------------------------------------------------------------------#" << std::endl; + _ofs << std::endl; + int size_for_loop_R = this->_hcontainer->size_R_loop(); - int rx, ry, rz; + int rx=0; + int ry=0; + int rz=0; int R_range[2] = {0, 0}; // find the range of R for (int iR = 0; iR < size_for_loop_R; iR++) @@ -62,7 +74,7 @@ void Output_HContainer::write(bool write_empty) } else if (write_empty) { - _ofs << ix << " " << iy << " " << iz << " 0" << std::endl; + _ofs << " " << ix << " " << iy << " " << iz << " 0" << std::endl; } } @@ -74,7 +86,9 @@ template void Output_HContainer::write(int rx_in, int ry_in, int rz_in) { int size_for_loop_R = this->_hcontainer->size_R_loop(); - int rx, ry, rz; + int rx=0; + int ry=0; + int rz=0; int find_R = 0; for (int iR = 0; iR < size_for_loop_R; iR++) { @@ -126,7 +140,7 @@ void Output_HContainer::write_single_R(int rx, int ry, int rz) if (sparse_matrix.getNNZ() != 0) { - _ofs << rx << " " << ry << " " << rz << " " << sparse_matrix.getNNZ() << std::endl; + _ofs << " " << rx << " " << ry << " " << rz << " " << sparse_matrix.getNNZ() << std::endl; sparse_matrix.printToCSR(_ofs, _precision); } this->_hcontainer->unfix_R(); @@ -135,4 +149,4 @@ void Output_HContainer::write_single_R(int rx, int ry, int rz) template class Output_HContainer; template class Output_HContainer>; -} // namespace hamilt \ No newline at end of file +} // namespace hamilt diff --git a/source/source_lcao/module_hcontainer/output_hcontainer.h b/source/source_lcao/module_hcontainer/output_hcontainer.h index 6bf7708b1a..0f3d8dd703 100644 --- a/source/source_lcao/module_hcontainer/output_hcontainer.h +++ b/source/source_lcao/module_hcontainer/output_hcontainer.h @@ -13,7 +13,11 @@ template class Output_HContainer { public: - Output_HContainer(hamilt::HContainer* hcontainer, std::ostream& ofs, double sparse_threshold = -1, int precision = -1); + Output_HContainer(hamilt::HContainer* hcontainer, + std::ostream& ofs, + double sparse_threshold = -1, + int precision = -1); + // write the matrices of all R vectors to the output stream void write(bool write_empty = false); @@ -38,4 +42,4 @@ class Output_HContainer } // namespace hamilt -#endif // OUTPUT_HCONTAINER_H \ No newline at end of file +#endif // OUTPUT_HCONTAINER_H diff --git a/source/source_lcao/module_hcontainer/read_hcontainer.cpp b/source/source_lcao/module_hcontainer/read_hcontainer.cpp new file mode 100644 index 0000000000..6706374e2c --- /dev/null +++ b/source/source_lcao/module_hcontainer/read_hcontainer.cpp @@ -0,0 +1,168 @@ +#include "read_hcontainer.h" + +#include "source_io/module_output/sparse_matrix.h" +#include "source_io/module_output/csr_reader.h" +#include "hcontainer_funcs.h" + +#include + +namespace hamilt +{ + +/** + * @brief Constructor of Read_HContainer + * @attention ifs should be open outside of this interface + */ +template +Read_HContainer::Read_HContainer(hamilt::HContainer* hcontainer, + const std::string& filename, + const int nlocal, + const UnitCell* ucell) + : _hcontainer(hcontainer), _filename(filename), _nlocal(nlocal), _ucell(ucell) +{ +} + +template +void Read_HContainer::read() +{ + // build atom index of col and row + std::vector atom_index_row; + std::vector atom_index_col; + int natom = this->_ucell->nat; + Parallel_Orbitals pv_serial; + pv_serial.set_serial(this->_nlocal, this->_nlocal); + pv_serial.set_atomic_trace(this->_ucell->get_iat2iwt(), this->_ucell->nat, this->_nlocal); + for (int iat = 0; iat < natom; ++iat) + { + int row_size = pv_serial.get_row_size(iat); + int col_size = pv_serial.get_col_size(iat); + for (int i = 0; i < row_size; ++i) + { + atom_index_row.push_back(iat); + } + for (int j = 0; j < col_size; ++j) + { + atom_index_col.push_back(iat); + } + } + // + hamilt::HContainer hcontainer_serial(&pv_serial); + +#ifdef __MPI + if(GlobalV::MY_RANK == 0) + { +#endif + ModuleIO::csrFileReader csr(this->_filename); + int step = csr.getStep(); + int matrix_dimension = csr.getMatrixDimension(); + int r_number = csr.getNumberOfR(); + + //construct serial hcontainer firstly + // prepare atom index mapping from csr row/col to atom index + for (int i = 0; i < r_number; i++) + { + std::vector RCoord = csr.getRCoordinate(i); + ModuleIO::SparseMatrix sparse_matrix = csr.getMatrix(i); + for (const auto& element: sparse_matrix.getElements()) + { + int row = element.first.first; + int col = element.first.second; + T value = element.second; + + //insert into hcontainer + int atom_i = atom_index_row[row]; + int atom_j = atom_index_col[col]; + auto* ij_pair = hcontainer_serial.find_pair(atom_i, atom_j); + if(ij_pair == nullptr) + { + //insert new pair + hamilt::AtomPair new_pair(atom_i, atom_j, RCoord[0], RCoord[1], RCoord[2], &pv_serial); + hcontainer_serial.insert_pair(new_pair); + } + else + { + if(ij_pair->find_R(RCoord[0], RCoord[1], RCoord[2]) == -1) + { + //insert new R + hamilt::AtomPair new_pair(atom_i, atom_j, RCoord[0], RCoord[1], RCoord[2], &pv_serial); + hcontainer_serial.insert_pair(new_pair); + } + } + } + } + hcontainer_serial.allocate(nullptr, true); + // second loop, add values into hcontainer + for (int i = 0; i < r_number; i++) + { + std::vector RCoord = csr.getRCoordinate(i); + ModuleIO::SparseMatrix sparse_matrix = csr.getMatrix(i); + for (const auto& element: sparse_matrix.getElements()) + { + int row = element.first.first; + int col = element.first.second; + T value = element.second; + + //insert into hcontainer + int atom_i = atom_index_row[row]; + int atom_j = atom_index_col[col]; + auto* matrix = hcontainer_serial.find_matrix(atom_i, atom_j, RCoord[0], RCoord[1], RCoord[2]); + matrix->add_element(row - pv_serial.atom_begin_row[atom_i], + col - pv_serial.atom_begin_col[atom_j], + value); + } + } +#ifdef __MPI +} + // thirdly, distribute hcontainer_serial to parallel hcontainer + // send s from serial_rank to all ranks + int my_rank, size; + MPI_Comm_rank(MPI_COMM_WORLD, &my_rank); + MPI_Comm_size(MPI_COMM_WORLD, &size); + std::vector para_ijrs; + if (my_rank == 0) + { + para_ijrs = hcontainer_serial.get_ijr_info(); + this->_hcontainer->insert_ijrs(¶_ijrs); + this->_hcontainer->allocate(); + } + if (my_rank != 0) + { + std::vector tmp_ijrs; + MPI_Status status; + long tmp_size = 0; + MPI_Recv(&tmp_size, 1, MPI_LONG, 0, 0, MPI_COMM_WORLD, &status); + tmp_ijrs.resize(tmp_size); + MPI_Recv(tmp_ijrs.data(), + tmp_ijrs.size(), + MPI_INT, + 0, + 1, + MPI_COMM_WORLD, + &status); + this->_hcontainer->insert_ijrs(&tmp_ijrs); + this->_hcontainer->allocate(); + } + else + { + for (int i = 1; i < size; ++i) + { + long tmp_size = para_ijrs.size(); + MPI_Send(&tmp_size, 1, MPI_LONG, i, 0, MPI_COMM_WORLD); + MPI_Send(para_ijrs.data(), para_ijrs.size(), MPI_INT, i, 1, MPI_COMM_WORLD); + } + } + // gather values from serial_rank to Parallels + transferSerial2Parallels(hcontainer_serial, this->_hcontainer, 0); +#else + std::vector para_ijrs = hcontainer_serial.get_ijr_info(); + this->_hcontainer->insert_ijrs(¶_ijrs); + this->_hcontainer->allocate(); + this->_hcontainer->add(hcontainer_serial); +#endif + +} + +template class Read_HContainer; +template class Read_HContainer>; + +} // namespace hamilt diff --git a/source/source_lcao/module_hcontainer/read_hcontainer.h b/source/source_lcao/module_hcontainer/read_hcontainer.h new file mode 100644 index 0000000000..3d68079357 --- /dev/null +++ b/source/source_lcao/module_hcontainer/read_hcontainer.h @@ -0,0 +1,47 @@ +#ifndef READ_HCONTAINER_H +#define READ_HCONTAINER_H + +#include "source_lcao/module_hcontainer/hcontainer.h" +#include "source_cell/unitcell.h" + +namespace hamilt +{ + +/** + * @brief A class to read the HContainer + */ +template +class Read_HContainer +{ + public: + Read_HContainer( + hamilt::HContainer* hcontainer, + const std::string& filename, + const int nlocal, + const UnitCell* ucell + ); + // read the matrices of all R vectors to the read stream + void read(); + + /** + * read the matrix of a single R vector to the output stream + * rx_in, ry_in, rz_in: the R vector from the input + */ + void read(int rx_in, int ry_in, int rz_in); + + /** + * read the matrix of a single R vector to the output stream + * rx, ry, rz: the R vector from the HContainer + */ + void read_single_R(int rx, int ry, int rz); + + private: + hamilt::HContainer* _hcontainer; + std::string _filename; + int _nlocal; + const UnitCell* _ucell = nullptr; +}; + +} // namespace hamilt + +#endif // OUTPUT_HCONTAINER_H \ No newline at end of file diff --git a/source/source_lcao/module_hcontainer/test/CMakeLists.txt b/source/source_lcao/module_hcontainer/test/CMakeLists.txt index 2e2dc8859a..35d7eb5a7d 100644 --- a/source/source_lcao/module_hcontainer/test/CMakeLists.txt +++ b/source/source_lcao/module_hcontainer/test/CMakeLists.txt @@ -1,35 +1,35 @@ if(ENABLE_LCAO) AddTest( - TARGET hcontainer_test + TARGET MODULE_LCAO_hcontainer_test LIBS parameter ${math_libs} psi base device SOURCES test_hcontainer.cpp ../base_matrix.cpp ../hcontainer.cpp ../atom_pair.cpp ../../../source_basis/module_ao/parallel_orbitals.cpp tmp_mocks.cpp ) AddTest( - TARGET hcontainer_complex_test + TARGET MODULE_LCAO_hcontainer_complex_test LIBS parameter ${math_libs} psi base device SOURCES test_hcontainer_complex.cpp ../base_matrix.cpp ../hcontainer.cpp ../atom_pair.cpp ../../../source_basis/module_ao/parallel_orbitals.cpp tmp_mocks.cpp ) AddTest( - TARGET hcontainer_cost_test + TARGET MODULE_LCAO_hcontainer_cost_test LIBS parameter ${math_libs} psi base device SOURCES test_hcontainer_time.cpp ../base_matrix.cpp ../hcontainer.cpp ../atom_pair.cpp ../../../source_basis/module_ao/parallel_orbitals.cpp tmp_mocks.cpp ) AddTest( - TARGET hcontainer_folding_test + TARGET MODULE_LCAO_hcontainer_folding_test LIBS parameter ${math_libs} psi base device SOURCES test_func_folding.cpp ../base_matrix.cpp ../hcontainer.cpp ../atom_pair.cpp ../func_folding.cpp ../../../source_basis/module_ao/parallel_orbitals.cpp tmp_mocks.cpp ) AddTest( - TARGET hcontainer_transfer_test + TARGET MODULE_LCAO_hcontainer_transfer_test LIBS parameter ${math_libs} psi base device SOURCES test_transfer.cpp ../func_transfer.cpp ../base_matrix.cpp ../hcontainer.cpp ../atom_pair.cpp ../transfer.cpp ../../../source_basis/module_ao/parallel_orbitals.cpp tmp_mocks.cpp @@ -37,13 +37,13 @@ AddTest( install(FILES parallel_hcontainer_tests.sh DESTINATION ${CMAKE_CURRENT_BINARY_DIR}) find_program(BASH bash) -add_test(NAME hontainer_para_test +add_test(NAME MODULE_LCAO_hcontainer_para_test COMMAND ${BASH} parallel_hcontainer_tests.sh WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} ) AddTest( - TARGET hcontainer_output_test + TARGET MODULE_LCAO_hcontainer_output_test LIBS parameter base ${math_libs} device SOURCES test_hcontainer_output.cpp tmp_mocks.cpp @@ -52,23 +52,10 @@ AddTest( ../hcontainer.cpp ../atom_pair.cpp ../../../source_basis/module_ao/parallel_orbitals.cpp - ../../../source_io/sparse_matrix.cpp + ../../../source_io/module_output/sparse_matrix.cpp ) install(DIRECTORY support DESTINATION ${CMAKE_CURRENT_BINARY_DIR}) -AddTest( - TARGET hcontainer_readCSR_test - LIBS parameter base ${math_libs} device cell_info - SOURCES test_hcontainer_readCSR.cpp - ../base_matrix.cpp - ../hcontainer.cpp - ../atom_pair.cpp - ../output_hcontainer.cpp - ../../../source_basis/module_ao/parallel_orbitals.cpp - ../../../source_io/sparse_matrix.cpp - ../../../source_io/csr_reader.cpp - ../../../source_io/file_reader.cpp - ../../../source_io/output.cpp -) -endif() \ No newline at end of file + +endif() diff --git a/source/source_lcao/module_hcontainer/test/parallel_hcontainer_tests.sh b/source/source_lcao/module_hcontainer/test/parallel_hcontainer_tests.sh index fdf3737cac..54f8244867 100644 --- a/source/source_lcao/module_hcontainer/test/parallel_hcontainer_tests.sh +++ b/source/source_lcao/module_hcontainer/test/parallel_hcontainer_tests.sh @@ -8,7 +8,7 @@ for i in 2 3 4; do continue fi echo "TEST in parallel, nprocs=$i" - mpirun -np $i ./hcontainer_transfer_test + mpirun -np $i ./MODULE_LCAO_hcontainer_transfer_test if [[ $? -ne 0 ]]; then echo -e "\e[1;33m [ FAILED ] \e[0m"\ "execute UT with $i cores error." diff --git a/source/source_lcao/module_hcontainer/test/prepare_unitcell.h b/source/source_lcao/module_hcontainer/test/prepare_unitcell.h index 3f0f58cabd..3df427d83b 100644 --- a/source/source_lcao/module_hcontainer/test/prepare_unitcell.h +++ b/source/source_lcao/module_hcontainer/test/prepare_unitcell.h @@ -94,7 +94,7 @@ class UcellTestPrepare } // lattice info ucell.lat0 = this->lat0; - ucell.lat0_angstrom = ucell.lat0 * 0.529177; + ucell.lat0_angstrom = ucell.lat0 * ModuleBase::BOHR_TO_A; ucell.tpiba = ModuleBase::TWO_PI / ucell.lat0; ucell.tpiba2 = ucell.tpiba * ucell.tpiba; ucell.latvec.e11 = this->latvec[0]; diff --git a/source/source_lcao/module_hcontainer/test/test_hcontainer.cpp b/source/source_lcao/module_hcontainer/test/test_hcontainer.cpp index 536eb8744e..ef948f87d8 100644 --- a/source/source_lcao/module_hcontainer/test/test_hcontainer.cpp +++ b/source/source_lcao/module_hcontainer/test/test_hcontainer.cpp @@ -542,8 +542,8 @@ TEST_F(HContainerTest, atompair_funcs) } HR.unfix_R(); // check hr_array and hr_array2 are correct - std::complex correct1; - double correct2; + std::complex correct1 = 0.0; + double correct2 = 0.0; double correct_array[16] = { 1, 2, 3, 4, 5, 6, 7, 8, diff --git a/source/source_lcao/module_hcontainer/test/test_hcontainer_readCSR.cpp b/source/source_lcao/module_hcontainer/test/test_hcontainer_readCSR.cpp index c75df807ac..3ce249e025 100644 --- a/source/source_lcao/module_hcontainer/test/test_hcontainer_readCSR.cpp +++ b/source/source_lcao/module_hcontainer/test/test_hcontainer_readCSR.cpp @@ -1,6 +1,6 @@ #include "../hcontainer.h" #include "../output_hcontainer.h" -#include "source_io/csr_reader.h" +#include "source_io/module_output/csr_reader.h" #include "prepare_unitcell.h" #include "gmock/gmock.h" diff --git a/source/source_lcao/module_hcontainer/test/tmp_mocks.cpp b/source/source_lcao/module_hcontainer/test/tmp_mocks.cpp index 748512d4e1..459874d5d5 100644 --- a/source/source_lcao/module_hcontainer/test/tmp_mocks.cpp +++ b/source/source_lcao/module_hcontainer/test/tmp_mocks.cpp @@ -44,6 +44,10 @@ UnitCell::UnitCell() UnitCell::~UnitCell() { } +SepPot::SepPot(){} +SepPot::~SepPot(){} +Sep_Cell::Sep_Cell() noexcept {} +Sep_Cell::~Sep_Cell() noexcept {} void UnitCell::set_iat2iwt(const int& npol_in) { @@ -58,7 +62,7 @@ void UnitCell::set_iat2iwt(const int& npol_in) this->iat2iwt[iat] = iwt; iwt += atoms[it].nw * this->npol; ++iat; - } + } } return; -} \ No newline at end of file +} diff --git a/source/source_lcao/module_lr/CMakeLists.txt b/source/source_lcao/module_lr/CMakeLists.txt index 3278252c84..331e7dc22e 100644 --- a/source/source_lcao/module_lr/CMakeLists.txt +++ b/source/source_lcao/module_lr/CMakeLists.txt @@ -11,7 +11,6 @@ if(ENABLE_LCAO) ao_to_mo_transformer/ao_to_mo_serial.cpp dm_trans/dm_trans_parallel.cpp dm_trans/dm_trans_serial.cpp - dm_trans/dmr_complex.cpp operator_casida/operator_lr_hxc.cpp operator_casida/operator_lr_exx.cpp potentials/pot_hxc_lrtd.cpp diff --git a/source/source_lcao/module_lr/ao_to_mo_transformer/ao_to_mo_parallel.cpp b/source/source_lcao/module_lr/ao_to_mo_transformer/ao_to_mo_parallel.cpp index 7e614619db..7d936365ce 100644 --- a/source/source_lcao/module_lr/ao_to_mo_transformer/ao_to_mo_parallel.cpp +++ b/source/source_lcao/module_lr/ao_to_mo_transformer/ao_to_mo_parallel.cpp @@ -51,18 +51,18 @@ namespace LR char transb = 'N'; const double alpha = 1.0; const double beta = add_on ? 1.0 : 0.0; - pdgemm_(&transa, &transb, &naos, &nmo1, &naos, - &alpha, mat_ao[isk].data(), &i1, &i1, pmat_ao.desc, - coeff.get_pointer(), &i1, &imo1, pcoeff.desc, - &beta, Vc.data(), &i1, &i1, pVc.desc); + ScalapackConnector::gemm(transa, transb, naos, nmo1, naos, + alpha, mat_ao[isk].data(), i1, i1, pmat_ao.desc, + coeff.get_pointer(), i1, imo1, pcoeff.desc, + beta, Vc.data(), i1, i1, pVc.desc); transa = 'T'; // mat_mo = c ^ TVc // descC puts M(nvirt) to row - pdgemm_(&transa, &transb, &nmo2, &nmo1, &naos, - &alpha, coeff.get_pointer(), &i1, &imo2, pcoeff.desc, - Vc.data(), &i1, &i1, pVc.desc, - &beta, mat_mo + start, &i1, &i1, pmat_mo.desc); + ScalapackConnector::gemm(transa, transb, nmo2, nmo1, naos, + alpha, coeff.get_pointer(), i1, imo2, pcoeff.desc, + Vc.data(), i1, i1, pVc.desc, + beta, mat_mo + start, i1, i1, pmat_mo.desc); } } @@ -109,18 +109,18 @@ namespace LR char transb = 'N'; const std::complex alpha(1.0, 0.0); const std::complex beta = add_on ? std::complex(1.0, 0.0) : std::complex(0.0, 0.0); - pzgemm_(&transa, &transb, &naos, &nmo1, &naos, - &alpha, mat_ao[isk].data>(), &i1, &i1, pmat_ao.desc, - coeff.get_pointer(), &i1, &imo1, pcoeff.desc, - &beta, Vc.data>(), &i1, &i1, pVc.desc); + ScalapackConnector::gemm(transa, transb, naos, nmo1, naos, + alpha, mat_ao[isk].data>(), i1, i1, pmat_ao.desc, + coeff.get_pointer(), i1, imo1, pcoeff.desc, + beta, Vc.data>(), i1, i1, pVc.desc); transa = 'C'; // mat_mo = c ^ TVc // descC puts M(nvirt) to row - pzgemm_(&transa, &transb, &nmo2, &nmo1, &naos, - &alpha, coeff.get_pointer(), &i1, &imo2, pcoeff.desc, - Vc.data>(), &i1, &i1, pVc.desc, - &beta, mat_mo + start, &i1, &i1, pmat_mo.desc); + ScalapackConnector::gemm(transa, transb, nmo2, nmo1, naos, + alpha, coeff.get_pointer(), i1, imo2, pcoeff.desc, + Vc.data>(), i1, i1, pVc.desc, + beta, mat_mo + start, i1, i1, pmat_mo.desc); } } } diff --git a/source/source_lcao/module_lr/ao_to_mo_transformer/ao_to_mo_serial.cpp b/source/source_lcao/module_lr/ao_to_mo_transformer/ao_to_mo_serial.cpp index 1ddec7f8da..b65f871f32 100644 --- a/source/source_lcao/module_lr/ao_to_mo_transformer/ao_to_mo_serial.cpp +++ b/source/source_lcao/module_lr/ao_to_mo_transformer/ao_to_mo_serial.cpp @@ -110,15 +110,15 @@ namespace LR char transb = 'N'; //coeff is col major const double alpha = 1.0; const double beta = add_on ? 1.0 : 0.0; - dgemm_(&transa, &transb, &naos, &nmo1, &naos, &alpha, - mat_ao[isk].data(), &naos, coeff.get_pointer(imo1), &naos, &beta, - Vc.data(), &naos); + BlasConnector::gemm(transb, transa, nmo1, naos, naos, alpha, + coeff.get_pointer(imo1), naos, mat_ao[isk].data(), naos, beta, + Vc.data(), naos); transa = 'T'; //mat_mo=coeff^TVc (nvirt major) - dgemm_(&transa, &transb, &nmo2, &nmo1, &naos, &alpha, - coeff.get_pointer(imo2), &naos, Vc.data(), &naos, &beta, - mat_mo + start, &nmo2); + BlasConnector::gemm(transb, transa, nmo1, nmo2, naos, alpha, + Vc.data(), naos, coeff.get_pointer(imo2), naos, beta, + mat_mo + start, nmo2); } } template<> @@ -151,15 +151,15 @@ namespace LR char transb = 'N'; //coeff is col major const std::complex alpha(1.0, 0.0); const std::complex beta = add_on ? std::complex(1.0, 0.0) : std::complex(0.0, 0.0); - zgemm_(&transa, &transb, &naos, &nmo1, &naos, &alpha, - mat_ao[isk].data>(), &naos, coeff.get_pointer(imo1), &naos, &beta, - Vc.data>(), &naos); + BlasConnector::gemm(transb, transa, nmo1, naos, naos, alpha, + coeff.get_pointer(imo1), naos, mat_ao[isk].data>(), naos, beta, + Vc.data>(), naos); transa = 'C'; //mat_mo=coeff^\dagger Vc (nvirt major) - zgemm_(&transa, &transb, &nmo2, &nmo1, &naos, &alpha, - coeff.get_pointer(imo2), &naos, Vc.data>(), &naos, &beta, - mat_mo + start, &nmo2); + BlasConnector::gemm(transb, transa, nmo1, nmo2, naos, alpha, + Vc.data>(), naos, coeff.get_pointer(imo2), naos, beta, + mat_mo + start, nmo2); } } } \ No newline at end of file diff --git a/source/source_lcao/module_lr/ao_to_mo_transformer/test/CMakeLists.txt b/source/source_lcao/module_lr/ao_to_mo_transformer/test/CMakeLists.txt index e8e6c4b2f4..a9999731bc 100644 --- a/source/source_lcao/module_lr/ao_to_mo_transformer/test/CMakeLists.txt +++ b/source/source_lcao/module_lr/ao_to_mo_transformer/test/CMakeLists.txt @@ -1,6 +1,6 @@ remove_definitions(-DUSE_LIBXC) AddTest( - TARGET ao_to_mo_test + TARGET MODULE_LR_ao_to_mo_test LIBS parameter base ${math_libs} container device psi SOURCES ao_to_mo_test.cpp ../../utils/lr_util.cpp ../ao_to_mo_parallel.cpp ../ao_to_mo_serial.cpp ) \ No newline at end of file diff --git a/source/source_lcao/module_lr/dm_trans/dm_trans_parallel.cpp b/source/source_lcao/module_lr/dm_trans/dm_trans_parallel.cpp index ebc8f2c697..5b36f798b2 100644 --- a/source/source_lcao/module_lr/dm_trans/dm_trans_parallel.cpp +++ b/source/source_lcao/module_lr/dm_trans/dm_trans_parallel.cpp @@ -53,16 +53,16 @@ std::vector cal_dm_trans_pblas(const double* const X_istate, DEV::CpuDevice, {pXc.get_col_size(), pXc.get_row_size()}); // row is "inside"(memory contiguity) for pblas Xc.zero(); - pdgemm_(&transa, &transb, &naos, &nmo2, &nmo1, - &alpha, c.get_pointer(), &i1, &imo1, pc.desc, - X_istate + x_start, &i1, &i1, px.desc, - &beta, Xc.data(), &i1, &i1, pXc.desc); + ScalapackConnector::gemm(transa, transb, naos, nmo2, nmo1, + alpha, c.get_pointer(), 1, imo1, pc.desc, + X_istate + x_start, 1, 1, px.desc, + beta, Xc.data(), 1, 1, pXc.desc); // 2. C_virt*[X*C_occ^T] - pdgemm_(&transa, &transb, &naos, &naos, &nmo2, - &factor, c.get_pointer(), &i1, &imo2, pc.desc, - Xc.data(), &i1, &i1, pXc.desc, - &beta, dm_trans[isk].data(), &i1, &i1, pmat.desc); + ScalapackConnector::gemm(transa, transb, naos, naos, nmo2, + factor, c.get_pointer(), 1, imo2, pc.desc, + Xc.data(), 1, 1, pXc.desc, + beta, dm_trans[isk].data(), 1, 1, pmat.desc); } return dm_trans; } @@ -130,17 +130,17 @@ std::vector cal_dm_trans_pblas(const std::complex* co Xc.zero(); const std::complex alpha(1.0, 0.0); const std::complex beta(0.0, 0.0); - pzgemm_(&transa, &transb, &nmo2, &naos, &nmo1, &alpha, - X_istate + x_start, &i1, &i1, px.desc, - c.get_pointer(), &i1, &imo1, pc.desc, - &beta, Xc.data>(), &i1, &i1, pXc.desc); + ScalapackConnector::gemm(transa, transb, nmo2, naos, nmo1, alpha, + X_istate + x_start, i1, i1, px.desc, + c.get_pointer(), i1, imo1, pc.desc, + beta, Xc.data>(), i1, i1, pXc.desc); // 2. [X*C_occ^\dagger]^TC_virt^T transa = transb = 'T'; - pzgemm_(&transa, &transb, &naos, &naos, &nmo2, - &factor, Xc.data>(), &i1, &i1, pXc.desc, - c.get_pointer(), &i1, &imo2, pc.desc, - &beta, dm_trans[isk].data>(), &i1, &i1, pmat.desc); + ScalapackConnector::gemm(transa, transb, naos, naos, nmo2, + factor, Xc.data>(), i1, i1, pXc.desc, + c.get_pointer(), i1, imo2, pc.desc, + beta, dm_trans[isk].data>(), i1, i1, pmat.desc); } return dm_trans; } diff --git a/source/source_lcao/module_lr/dm_trans/dm_trans_serial.cpp b/source/source_lcao/module_lr/dm_trans/dm_trans_serial.cpp index 7509760345..3a4553e0b4 100644 --- a/source/source_lcao/module_lr/dm_trans/dm_trans_serial.cpp +++ b/source/source_lcao/module_lr/dm_trans/dm_trans_serial.cpp @@ -112,13 +112,13 @@ namespace LR const double alpha = 1.0; const double beta = 0.0; container::Tensor Xc(DAT::DT_DOUBLE, DEV::CpuDevice, { nmo2, naos }); - dgemm_(&transa, &transb, &naos, &nmo2, &nmo1, &alpha, - c.get_pointer(imo1), &naos, X_istate + x_start, &nmo2, - &beta, Xc.data(), &naos); + BlasConnector::gemm(transb, transa, nmo2, naos, nmo1, alpha, + X_istate + x_start, nmo2, c.get_pointer(imo1), naos, + beta, Xc.data(), naos); // 2. C_virt*[X*C_occ^T] - dgemm_(&transa, &transb, &naos, &naos, &nmo2, &factor, - c.get_pointer(imo2), &naos, Xc.data(), &naos, &beta, - dm_trans[isk].data(), &naos); + BlasConnector::gemm(transb, transa, naos, naos, nmo2, factor, + Xc.data(), naos, c.get_pointer(imo2), naos, beta, + dm_trans[isk].data(), naos); } return dm_trans; } @@ -166,14 +166,14 @@ namespace LR // ============== = [C_occ^* * X^T * C_virt^T]^T============= // 1. X*C_occ^\dagger container::Tensor Xc(DAT::DT_COMPLEX_DOUBLE, DEV::CpuDevice, { naos, nmo2 }); - zgemm_(&transa, &transb, &nmo2, &naos, &nmo1, &alpha, - X_istate + x_start, &nmo2, c.get_pointer(imo1), &naos, - &beta, Xc.data>(), &nmo2); + BlasConnector::gemm_cm(transa, transb, nmo2, naos, nmo1, alpha, + X_istate + x_start, nmo2, c.get_pointer(imo1), naos, + beta, Xc.data>(), nmo2); // 2. [X*C_occ^\dagger]^TC_virt^T transa = transb = 'T'; - zgemm_(&transa, &transb, &naos, &naos, &nmo2, &factor, - Xc.data>(), &nmo2, c.get_pointer(imo2), &naos, &beta, - dm_trans[isk].data>(), &naos); + BlasConnector::gemm_cm(transa, transb, naos, naos, nmo2, factor, + Xc.data>(), nmo2, c.get_pointer(imo2), naos, beta, + dm_trans[isk].data>(), naos); } return dm_trans; } diff --git a/source/source_lcao/module_lr/dm_trans/dmr_complex.cpp b/source/source_lcao/module_lr/dm_trans/dmr_complex.cpp index 8009409d5d..4f62aa2a43 100644 --- a/source/source_lcao/module_lr/dm_trans/dmr_complex.cpp +++ b/source/source_lcao/module_lr/dm_trans/dmr_complex.cpp @@ -11,8 +11,8 @@ namespace elecstate ModuleBase::timer::tick("DensityMatrix", "cal_DMR"); for (int is = 1; is <= this->_nspin; ++is) { - int ik_begin = this->_nk * (is - 1); // jump this->_nk for spin_down if nspin==2 - hamilt::HContainer>* tmp_DMR = this->_DMR[is - 1]; + const int ik_begin = this->_nk * (is - 1); // jump this->_nk for spin_down if nspin==2 + hamilt::HContainer>*const tmp_DMR = this->_DMR[is - 1]; // set zero since this function is called in every scf step tmp_DMR->set_zero(); #ifdef _OPENMP @@ -21,19 +21,16 @@ namespace elecstate for (int i = 0; i < tmp_DMR->size_atom_pairs(); ++i) { hamilt::AtomPair>& tmp_ap = tmp_DMR->get_atom_pair(i); - int iat1 = tmp_ap.get_atom_i(); - int iat2 = tmp_ap.get_atom_j(); + const int iat1 = tmp_ap.get_atom_i(); + const int iat2 = tmp_ap.get_atom_j(); // get global indexes of whole matrix for each atom in this process - int row_ap = this->_paraV->atom_begin_row[iat1]; - int col_ap = this->_paraV->atom_begin_col[iat2]; - if (row_ap == -1 || col_ap == -1) - { - throw std::string("Atom-pair not belong this process"); - } + const int row_ap = this->_paraV->atom_begin_row[iat1]; + const int col_ap = this->_paraV->atom_begin_col[iat2]; + assert(row_ap != -1 && col_ap != -1 && "Atom-pair not belong this process"); for (int ir = 0; ir < tmp_ap.get_R_size(); ++ir) { const ModuleBase::Vector3 r_index = tmp_ap.get_R_index(ir); - hamilt::BaseMatrix>* tmp_matrix = tmp_ap.find_matrix(r_index); + hamilt::BaseMatrix>*const tmp_matrix = tmp_ap.find_matrix(r_index); #ifdef __DEBUG if (tmp_matrix == nullptr) { @@ -50,15 +47,16 @@ namespace elecstate // if TK==std::complex, kphase is e^{ikR} const ModuleBase::Vector3 dR(r_index[0], r_index[1], r_index[2]); const double arg = (this->_kvec_d[ik] * dR) * ModuleBase::TWO_PI; - double sinp, cosp; + double sinp = 0.0, cosp = 0.0; ModuleBase::libm::sincos(arg, &sinp, &cosp); - std::complex kphase = std::complex(cosp, sinp); + const std::complex kphase = std::complex(cosp, sinp); // set DMR element std::complex* tmp_DMR_pointer = tmp_matrix->get_pointer(); - std::complex* tmp_DMK_pointer = this->_DMK[ik + ik_begin].data(); + const std::complex* tmp_DMK_pointer + = this->_DMK[ik + ik_begin].data() + + col_ap * this->_paraV->nrow + row_ap; // jump DMK to fill DMR // DMR is row-major, DMK is column-major - tmp_DMK_pointer += col_ap * this->_paraV->nrow + row_ap; for (int mu = 0; mu < this->_paraV->get_row_size(iat1); ++mu) { BlasConnector::axpy(this->_paraV->get_col_size(iat2), @@ -71,11 +69,10 @@ namespace elecstate tmp_DMR_pointer += this->_paraV->get_col_size(iat2); } } -} + } // treat DMR as pauli matrix when NSPIN=4 - if (PARAM.inp.nspin == 4) { - throw std::runtime_error("complex DM(R) with NSPIN=4 is not implemented yet"); -} + if (PARAM.inp.nspin == 4) + { throw std::runtime_error("complex DM(R) with NSPIN=4 is not implemented yet"); } } } } diff --git a/source/source_lcao/module_lr/dm_trans/test/CMakeLists.txt b/source/source_lcao/module_lr/dm_trans/test/CMakeLists.txt index 87c0e7c870..034e8e3fed 100644 --- a/source/source_lcao/module_lr/dm_trans/test/CMakeLists.txt +++ b/source/source_lcao/module_lr/dm_trans/test/CMakeLists.txt @@ -1,6 +1,6 @@ remove_definitions(-DUSE_LIBXC) AddTest( - TARGET dm_trans_test + TARGET MODULE_LR_dm_trans_test LIBS parameter psi base ${math_libs} device container SOURCES dm_trans_test.cpp ../../utils/lr_util.cpp ../dm_trans_parallel.cpp ../dm_trans_serial.cpp # ../../../source_base/module_container/ATen/core/tensor.cpp diff --git a/source/source_lcao/module_lr/esolver_lrtd_lcao.cpp b/source/source_lcao/module_lr/esolver_lrtd_lcao.cpp index 6fb0d256eb..b8848e6bcd 100644 --- a/source/source_lcao/module_lr/esolver_lrtd_lcao.cpp +++ b/source/source_lcao/module_lr/esolver_lrtd_lcao.cpp @@ -1,5 +1,4 @@ #include "esolver_lrtd_lcao.h" -#include "utils/gint_move.hpp" #include "utils/lr_util.h" #include "hamilt_casida.h" #include "hamilt_ulr.hpp" @@ -8,9 +7,9 @@ #include "source_lcao/module_lr/lr_spectrum.h" #include #include "source_lcao/hamilt_lcao.h" -#include "source_io/read_wfc_nao.h" -#include "source_io/cube_io.h" -#include "source_io/print_info.h" +#include "source_io/module_wf/read_wfc_nao.h" +#include "source_io/module_output/cube_io.h" +#include "source_io/module_output/print_info.h" #include "source_cell/module_neighbor/sltk_atom_arrange.h" #include "source_lcao/module_lr/utils/lr_util_print.h" #include "source_base/module_external/scalapack_connector.h" @@ -44,8 +43,6 @@ void LR::ESolver_LR::move_exx_lri(std::shared_ptr::move_exx_lri: cannot move std::complex to double"); } #endif -template<>void LR::ESolver_LR::set_gint() { this->gint_ = &this->gint_g_;this->gint_g_.gridt = &this->gt_; } -template<>void LR::ESolver_LR>::set_gint() { this->gint_ = &this->gint_k_; this->gint_k_.gridt = &this->gt_; } inline int cal_nupdown_form_occ(const ModuleBase::matrix& wg) { // only for nspin=2 @@ -241,23 +238,7 @@ LR::ESolver_LR::ESolver_LR(ModuleESolver::ESolver_KS_LCAO&& ks_sol this->nupdown = cal_nupdown_form_occ(ks_sol.pelec->wg); reset_dim_spin2(); } -#ifdef __OLD_GINT - //grid integration - this->gt_ = std::move(ks_sol.GridT); - - if (std::is_same::value) - { - this->gint_g_ = std::move(ks_sol.GG); - } - else - { - this->gint_k_ = std::move(ks_sol.GK); - } - this->set_gint(); - this->gint_->reset_DMRGint(1); -#else this->gint_info_ = std::move(ks_sol.gint_info_); -#endif // move pw basis if (this->pw_rho_flag) { @@ -274,10 +255,10 @@ LR::ESolver_LR::ESolver_LR(ModuleESolver::ESolver_KS_LCAO&& ks_sol { // if the same kernel is calculated in the esolver_ks, move it std::string dft_functional = LR_Util::tolower(input.dft_functional); - if (ks_sol.exd && std::is_same::value && xc_kernel == dft_functional) { - this->move_exx_lri(ks_sol.exd->exx_ptr); - } else if (ks_sol.exc && std::is_same>::value && xc_kernel == dft_functional) { - this->move_exx_lri(ks_sol.exc->exx_ptr); + if (ks_sol.exx_nao.exd && std::is_same::value && xc_kernel == dft_functional) { + this->move_exx_lri(ks_sol.exx_nao.exd->exx_ptr); + } else if (ks_sol.exx_nao.exc && std::is_same>::value && xc_kernel == dft_functional) { + this->move_exx_lri(ks_sol.exx_nao.exc->exx_ptr); } else // construct C, V from scratch { // set ccp_type according to the xc_kernel @@ -319,7 +300,7 @@ LR::ESolver_LR::ESolver_LR(const Input_para& inp, UnitCell& ucell) : inpu } this->kv.set(ucell,ucell.symm, PARAM.inp.kpoint_file, PARAM.inp.nspin, ucell.G, ucell.latvec, GlobalV::ofs_running); ModuleBase::GlobalFunc::DONE(GlobalV::ofs_running, "INIT K-POINTS"); - ModuleIO::setup_parameters(ucell, this->kv); + ModuleIO::print_parameters(ucell, this->kv, inp); this->parameter_check(); @@ -395,66 +376,6 @@ LR::ESolver_LR::ESolver_LR(const Input_para& inp, UnitCell& ucell) : inpu this->ucell, search_radius, PARAM.inp.test_atom_input); -#ifdef __OLD_GINT - this->set_gint(); - this->gint_->gridt = &this->gt_; - - // (3) Periodic condition search for each grid. - double dr_uniform = 0.001; - std::vector rcuts; - std::vector> psi_u; - std::vector> dpsi_u; - std::vector> d2psi_u; - - Gint_Tools::init_orb(dr_uniform, rcuts, ucell, orb, psi_u, dpsi_u, d2psi_u); - this->gt_.set_pbc_grid(this->pw_rho->nx, - this->pw_rho->ny, - this->pw_rho->nz, - this->pw_big->bx, - this->pw_big->by, - this->pw_big->bz, - this->pw_big->nbx, - this->pw_big->nby, - this->pw_big->nbz, - this->pw_big->nbxx, - this->pw_big->nbzp_start, - this->pw_big->nbzp, - this->pw_rho->ny, - this->pw_rho->nplane, - this->pw_rho->startz_current, - ucell, - this->gd, - dr_uniform, - rcuts, - psi_u, - dpsi_u, - d2psi_u, - PARAM.inp.nstream); - psi_u.clear(); - psi_u.shrink_to_fit(); - dpsi_u.clear(); - dpsi_u.shrink_to_fit(); - d2psi_u.clear(); - d2psi_u.shrink_to_fit(); - - this->gint_->prep_grid(this->gt_, - this->pw_big->nbx, - this->pw_big->nby, - this->pw_big->nbzp, - this->pw_big->nbzp_start, - this->pw_rho->nxyz, - this->pw_big->bx, - this->pw_big->by, - this->pw_big->bz, - this->pw_big->bxyz, - this->pw_big->nbxx, - this->pw_rho->ny, - this->pw_rho->nplane, - this->pw_rho->startz_current, - &ucell, - &orb); - this->gint_->initialize_pvpR(ucell, &this->gd, 1); // always use nspin=1 for transition density -#else gint_info_.reset( new ModuleGint::GintInfo( this->pw_big->nbx, @@ -473,7 +394,6 @@ LR::ESolver_LR::ESolver_LR(const Input_para& inp, UnitCell& ucell) : inpu ucell, this->gd)); ModuleGint::Gint::set_gint_info(gint_info_.get()); -#endif // if EXX from scratch, init 2-center integral and calculate Cs, Vs #ifdef __EXX if ((xc_kernel == "hf" || xc_kernel == "hse") && this->input.lr_solver != "spectrum") @@ -533,7 +453,6 @@ void LR::ESolver_LR::runner(UnitCell& ucell, const int istep) this->exx_lri, this->exx_info.info_global.hybrid_alpha, #endif - this->gint_, this->pot, this->kv, this->paraX_, @@ -564,7 +483,6 @@ void LR::ESolver_LR::runner(UnitCell& ucell, const int istep) this->exx_lri, this->exx_info.info_global.hybrid_alpha, #endif - this->gint_, this->pot[is], this->kv, this->paraX_, @@ -621,7 +539,7 @@ void LR::ESolver_LR::after_all_runners(UnitCell& ucell) auto spin_types = (nspin == 2 && !openshell) ? std::vector({ "singlet", "triplet" }) : std::vector({ "updown" }); for (int is = 0;is < this->X.size();++is) { - LR_Spectrum spectrum(nspin, this->nbasis, this->nocc, this->nvirt, this->gint_, *this->pw_rho, *this->psi_ks, + LR_Spectrum spectrum(nspin, this->nbasis, this->nocc, this->nvirt, *this->pw_rho, *this->psi_ks, this->ucell, this->kv, this->gd, this->orb_cutoff_, this->two_center_bundle_, this->paraX_, this->paraC_, this->paraMat_, &this->pelec->ekb.c[is * nstates], this->X[is].template data(), nstates, openshell, @@ -752,7 +670,8 @@ void LR::ESolver_LR::read_ks_wfc() #endif } else if (!ModuleIO::read_wfc_nao(PARAM.globalv.global_readin_dir, this->paraMat_, *this->psi_ks, - this->pelec, + this->pelec->ekb, + this->pelec->wg, this->pelec->klist->ik2iktot, this->pelec->klist->get_nkstot(), /*skip_bands=*/this->nocc_max - this->nocc_in)) { @@ -765,14 +684,15 @@ template void LR::ESolver_LR::read_ks_chg(Charge& chg_gs) { chg_gs.set_rhopw(this->pw_rho); - chg_gs.allocate(this->nspin); + const bool kin_den = chg_gs.kin_density(); // mohan add 20251202 + chg_gs.allocate(this->nspin, kin_den); GlobalV::ofs_running << " try to read charge from file : "; for (int is = 0; is < this->nspin; ++is) { std::stringstream ssc; ssc << PARAM.globalv.global_readin_dir << "SPIN" << is + 1 << "_CHG.cube"; GlobalV::ofs_running << ssc.str() << std::endl; - double ef; + double ef = 0.0; if (ModuleIO::read_vdata_palgrid(Pgrid, GlobalV::MY_RANK, GlobalV::ofs_running, diff --git a/source/source_lcao/module_lr/esolver_lrtd_lcao.h b/source/source_lcao/module_lr/esolver_lrtd_lcao.h index f08ddec52b..3f2d040501 100644 --- a/source/source_lcao/module_lr/esolver_lrtd_lcao.h +++ b/source/source_lcao/module_lr/esolver_lrtd_lcao.h @@ -11,13 +11,10 @@ #include #include "source_esolver/esolver_ks_lcao.h" //for the move constructor -#include "source_lcao/module_gint/gint_gamma.h" -#include "source_lcao/module_gint/gint_k.h" -#include "source_lcao/module_gint/grid_technique.h" #include "source_estate/module_dm/density_matrix.h" #include "source_lcao/module_lr/potentials/pot_hxc_lrtd.h" #include "source_lcao/module_lr/hamilt_casida.h" -#include "source_lcao/module_gint/temp_gint/gint_info.h" +#include "source_lcao/module_gint/gint_info.h" #ifdef __EXX // #include #include "source_lcao/module_ri/Exx_LRI.h" @@ -90,13 +87,7 @@ namespace LR bool openshell = false; std::string xc_kernel; - Grid_Technique gt_; - Gint_Gamma gint_g_; - Gint_k gint_k_; - typename TGint::type* gint_ = nullptr; - #ifndef __OLD_GINT std::unique_ptr gint_info_ = nullptr; - #endif void set_gint(); /// @brief variables for parallel distribution of KS orbitals diff --git a/source/source_lcao/module_lr/hamilt_casida.h b/source/source_lcao/module_lr/hamilt_casida.h index e692dc051a..d835fad2d3 100644 --- a/source/source_lcao/module_lr/hamilt_casida.h +++ b/source/source_lcao/module_lr/hamilt_casida.h @@ -17,7 +17,6 @@ namespace LR class HamiltLR { public: - template HamiltLR(std::string& xc_kernel, const int& nspin, const int& naos, @@ -32,7 +31,6 @@ namespace LR std::weak_ptr> exx_lri_in, const double& exx_alpha, #endif - TGint* gint_in, std::weak_ptr pot_in, const K_Vectors& kv_in, const std::vector& pX_in, @@ -95,7 +93,7 @@ namespace LR #endif { OperatorLRHxc* lr_hxc = new OperatorLRHxc(nspin, naos, nocc, nvirt, psi_ks_in, - this->DM_trans, gint_in, pot_in, ucell_in, orb_cutoff, gd_in, kv_in, pX_in, pc_in, pmat_in); + this->DM_trans, pot_in, ucell_in, orb_cutoff, gd_in, kv_in, pX_in, pc_in, pmat_in); this->ops->add(lr_hxc); } #ifdef __EXX diff --git a/source/source_lcao/module_lr/hamilt_ulr.hpp b/source/source_lcao/module_lr/hamilt_ulr.hpp index 838a3d4999..4f5fdfbfd9 100644 --- a/source/source_lcao/module_lr/hamilt_ulr.hpp +++ b/source/source_lcao/module_lr/hamilt_ulr.hpp @@ -15,7 +15,6 @@ namespace LR class HamiltULR { public: - template HamiltULR(std::string& xc_kernel, const int& nspin, const int& naos, @@ -30,7 +29,6 @@ namespace LR std::weak_ptr> exx_lri_in, const double& exx_alpha, #endif - TGint* gint_in, std::vector>& pot_in, const K_Vectors& kv_in, const std::vector& pX_in, ///< {up, down} @@ -49,7 +47,7 @@ namespace LR this->ops[3] = new OperatorLRDiag(eig_ks.c + nk * (nocc[0] + nvirt[0]), pX_in[1], nk, nocc[1], nvirt[1]); auto newHxc = [&](const int& sl, const int& sr) { return new OperatorLRHxc(nspin, naos, nocc, nvirt, psi_ks_in, - this->DM_trans, gint_in, pot_in[sl], ucell_in, orb_cutoff, gd_in, kv_in, pX_in, pc_in, pmat_in, { sl,sr }); }; + this->DM_trans, pot_in[sl], ucell_in, orb_cutoff, gd_in, kv_in, pX_in, pc_in, pmat_in, { sl,sr }); }; this->ops[0]->add(newHxc(0, 0)); this->ops[1] = newHxc(0, 1); this->ops[2] = newHxc(1, 0); diff --git a/source/source_lcao/module_lr/hsolver_lrtd.hpp b/source/source_lcao/module_lr/hsolver_lrtd.hpp index bbac18160a..f1d3991955 100644 --- a/source/source_lcao/module_lr/hsolver_lrtd.hpp +++ b/source/source_lcao/module_lr/hsolver_lrtd.hpp @@ -100,7 +100,6 @@ namespace LR PARAM.inp.pw_diag_ndim, diag_ethr, maxiter, - false, //always do the subspace diag (check the implementation) comm_info, PARAM.inp.diag_subspace, PARAM.inp.nb2d); @@ -135,20 +134,27 @@ namespace LR ////// why diago_cg depends on basis_type? // hsolver::DiagoCG cg("lcao", "nscf", true, subspace_func, diag_ethr, maxiter, GlobalV::NPROC_IN_POOL); - auto subspace_func = [](const ct::Tensor& psi_in, ct::Tensor& psi_out) {}; + auto subspace_func = [](T* psi_in, T* psi_out, const int ld_psi, const int nband, const bool S_orth) { + }; hsolver::DiagoCG cg("lcao", "nscf", false, subspace_func, diag_ethr, maxiter, GlobalV::NPROC_IN_POOL); - auto psi_tensor = ct::TensorMap(psi, ct::DataTypeToEnum::value, ct::DeviceType::CpuDevice, ct::TensorShape({ nband, dim })); - auto eigen_tensor = ct::TensorMap(eigenvalue.data(), ct::DataTypeToEnum>::value, ct::DeviceType::CpuDevice, ct::TensorShape({ nband })); - std::vector> precondition_(precondition); //since TensorMap does not support const pointer - auto precon_tensor = ct::TensorMap(precondition_.data(), ct::DataTypeToEnum>::value, ct::DeviceType::CpuDevice, ct::TensorShape({ dim })); - auto hpsi_func = [&hm](const ct::Tensor& psi_in, ct::Tensor& hpsi) {hm.hPsi(psi_in.data(), hpsi.data(), psi_in.shape().dim_size(0) /*nbasis_local*/, 1/*band-by-band*/);}; - auto spsi_func = [&hm](const ct::Tensor& psi_in, ct::Tensor& spsi) { - std::memcpy(spsi.data(), psi_in.data(), sizeof(T) * psi_in.NumElements()); + auto hpsi_func = [&hm](T* psi_in, T* hpsi, const int ld_psi, const int nvec) { + hm.hPsi(psi_in, hpsi, ld_psi, nvec); + }; + auto spsi_func = [](T* psi_in, T* spsi, const int ld_psi, const int nvec) { + std::memcpy(spsi, psi_in, sizeof(T) * static_cast(ld_psi) * static_cast(nvec)); }; std::vector ethr_band(nband, diag_ethr); - cg.diag(hpsi_func, spsi_func, psi_tensor, eigen_tensor, ethr_band, precon_tensor); + cg.diag(hpsi_func, + spsi_func, + dim, + nband, + dim, + psi, + eigenvalue.data(), + ethr_band, + precondition.data()); } else { throw std::runtime_error("HSolverLR::solve: method not implemented"); } } @@ -178,7 +184,7 @@ namespace LR // output iters std::cout << " Average iterative diagonalization steps: " << hsolver::DiagoIterAssist::avg_iter - << "; current threshold: " << hsolver::DiagoIterAssist::PW_DIAG_THR << std::endl; + << "; current threshold: " << diag_ethr << std::endl; } } } diff --git a/source/source_lcao/module_lr/lr_spectrum.cpp b/source/source_lcao/module_lr/lr_spectrum.cpp index 235a9829e2..f698541c30 100644 --- a/source/source_lcao/module_lr/lr_spectrum.cpp +++ b/source/source_lcao/module_lr/lr_spectrum.cpp @@ -6,7 +6,7 @@ #include "source_lcao/module_lr/utils/lr_util.h" #include "source_lcao/module_lr/utils/lr_util_hcontainer.h" #include "source_lcao/module_lr/utils/lr_util_print.h" -#include "source_lcao/module_gint/temp_gint/gint_interface.h" +#include "source_lcao/module_gint/gint_interface.h" template elecstate::DensityMatrix LR::LR_Spectrum::cal_transition_density_matrix(const int istate, const T* X_in, const bool need_R) @@ -35,16 +35,6 @@ elecstate::DensityMatrix LR::LR_Spectrum::cal_transition_density_matrix return DM_trans; } -#ifdef __OLD_GINT -template -void LR::LR_Spectrum::cal_gint_rho(double** rho, const int& nrxx) -{ - ModuleBase::GlobalFunc::ZEROS(rho[0], nrxx); - Gint_inout inout_rho(rho, Gint_Tools::job_type::rho, 1, false); - this->gint->cal_gint(&inout_rho); -} -#endif - inline void check_sum_rule(const double& osc_tot) { if (std::abs(osc_tot - 1.0) > 1e-3) { @@ -65,13 +55,8 @@ ModuleBase::Vector3 LR::LR_Spectrum::cal_transition_dipole_istat // 2. transition density double** rho_trans; LR_Util::_allocate_2order_nested_ptr(rho_trans, 1, this->rho_basis.nrxx); -#ifdef __OLD_GINT - this->gint->transfer_DM2DtoGrid({ DM_trans.get_DMR_vector().at(is) }); - this->cal_gint_rho(rho_trans, this->rho_basis.nrxx); -#else ModuleBase::GlobalFunc::ZEROS(rho_trans[0], this->rho_basis.nrxx); ModuleGint::cal_gint_rho({ DM_trans.get_DMR_vector().at(is) }, 1, rho_trans, false); -#endif // 3. transition dipole moment for (int ir = 0; ir < rho_basis.nrxx; ++ir) @@ -115,24 +100,14 @@ ModuleBase::Vector3> LR::LR_Spectrum>: // real part LR_Util::get_DMR_real_imag_part(DM_trans, DM_trans_real_imag, ucell.nat, 'R'); -#ifdef __OLD_GINT - this->gint->transfer_DM2DtoGrid(DM_trans_real_imag.get_DMR_vector()); - this->cal_gint_rho(rho_trans_real, this->rho_basis.nrxx); -#else ModuleBase::GlobalFunc::ZEROS(rho_trans_real[0], this->rho_basis.nrxx); ModuleGint::cal_gint_rho(DM_trans_real_imag.get_DMR_vector(), 1, rho_trans_real, false); -#endif // LR_Util::print_grid_nonzero(rho_trans_real[0], this->rho_basis.nrxx, 10, "rho_trans"); // imag part LR_Util::get_DMR_real_imag_part(DM_trans, DM_trans_real_imag, ucell.nat, 'I'); -#ifdef __OLD_GINT - this->gint->transfer_DM2DtoGrid(DM_trans_real_imag.get_DMR_vector()); - this->cal_gint_rho(rho_trans_imag, this->rho_basis.nrxx); -#else ModuleBase::GlobalFunc::ZEROS(rho_trans_imag[0], this->rho_basis.nrxx); ModuleGint::cal_gint_rho(DM_trans_real_imag.get_DMR_vector(), 1, rho_trans_imag, false); -#endif // LR_Util::print_grid_nonzero(rho_trans_imag[0], this->rho_basis.nrxx, 10, "rho_trans"); // 3. transition dipole moment diff --git a/source/source_lcao/module_lr/lr_spectrum.h b/source/source_lcao/module_lr/lr_spectrum.h index bd2d1f489d..5ed4678dc9 100644 --- a/source/source_lcao/module_lr/lr_spectrum.h +++ b/source/source_lcao/module_lr/lr_spectrum.h @@ -1,6 +1,5 @@ #pragma once #include "source_cell/klist.h" -#include "source_lcao/module_lr/utils/gint_template.h" #include "source_psi/psi.h" #include "source_estate/module_dm/density_matrix.h" #include "source_lcao/module_lr/utils/lr_util.h" @@ -13,14 +12,14 @@ namespace LR { public: LR_Spectrum(const int& nspin_global, const int& naos, const std::vector& nocc, const std::vector& nvirt, - typename TGint::type* gint, const ModulePW::PW_Basis& rho_basis, psi::Psi& psi_ks_in, + const ModulePW::PW_Basis& rho_basis, psi::Psi& psi_ks_in, const UnitCell& ucell, const K_Vectors& kv_in, const Grid_Driver& gd, const std::vector& orb_cutoff, const TwoCenterBundle& two_center_bundle_, const std::vector& pX_in, const Parallel_2D& pc_in, const Parallel_Orbitals& pmat_in, const double* eig, const T* X, const int& nstate, const bool& openshell, const std::string& gauge = "length") : nspin_x(openshell ? 2 : 1), naos(naos), nocc(nocc), nvirt(nvirt), nk(kv_in.get_nks() / nspin_global), - gint(gint), rho_basis(rho_basis), ucell(ucell), kv(kv_in), gd_(gd), + rho_basis(rho_basis), ucell(ucell), kv(kv_in), gd_(gd), orb_cutoff_(orb_cutoff), two_center_bundle_(two_center_bundle_), pX(pX_in), pc(pc_in), pmat(pmat_in), eig(eig), X(X), nstate(nstate), @@ -68,14 +67,13 @@ namespace LR const int ldim = 1;///< local leading dimension of X, or the data size of each state const int gdim = 1;///< global leading dimension of X const double ana_thr = 0.3; ///< {abs(X) > thr} will appear in the transition analysis log - const double* eig; - const T* X; + const double* eig = nullptr; + const T* X = nullptr; const K_Vectors& kv; std::vector> psi_ks; const std::vector& pX; const Parallel_2D& pc; const Parallel_Orbitals& pmat; - typename TGint::type* gint = nullptr; const ModulePW::PW_Basis& rho_basis; const Grid_Driver& gd_; const UnitCell& ucell; diff --git a/source/source_lcao/module_lr/operator_casida/operator_lr_hxc.cpp b/source/source_lcao/module_lr/operator_casida/operator_lr_hxc.cpp index 56d2e4fda7..5b008589e1 100644 --- a/source/source_lcao/module_lr/operator_casida/operator_lr_hxc.cpp +++ b/source/source_lcao/module_lr/operator_casida/operator_lr_hxc.cpp @@ -8,8 +8,7 @@ // #include "source_lcao/DM_gamma_2d_to_grid.h" #include "source_lcao/module_hcontainer/hcontainer_funcs.h" #include "source_lcao/module_lr/ao_to_mo_transformer/ao_to_mo.h" -#include "source_pw/module_pwdft/global.h" -#include "source_lcao/module_gint/temp_gint/gint_interface.h" +#include "source_lcao/module_gint/gint_interface.h" inline double conj(double a) { return a; } inline std::complex conj(std::complex a) { return std::conj(a); } @@ -61,13 +60,7 @@ namespace LR const int& nrxx = this->pot.lock()->nrxx; LR_Util::_allocate_2order_nested_ptr(rho_trans, 1, nrxx); // currently gint_kernel_rho uses PARAM.inp.nspin, it needs refactor ModuleBase::GlobalFunc::ZEROS(rho_trans[0], nrxx); -#ifdef __OLD_GINT - this->gint->transfer_DM2DtoGrid(this->DM_trans->get_DMR_vector()); // 2d block to grid - Gint_inout inout_rho(rho_trans, Gint_Tools::job_type::rho, 1, false); - this->gint->cal_gint(&inout_rho); -#else ModuleGint::cal_gint_rho(this->DM_trans->get_DMR_vector(), 1, rho_trans, false); -#endif // 3. v_hxc = f_hxc * rho_trans ModuleBase::matrix vr_hxc(1, nrxx); //grid this->pot.lock()->cal_v_eff(rho_trans, ucell, vr_hxc, ispin_ks); @@ -75,14 +68,7 @@ namespace LR // 4. V^{Hxc}_{\mu,\nu}=\int{dr} \phi_\mu(r) v_{Hxc}(r) \phi_\mu(r) this->hR->set_zero(); // clear hR for each bands -#ifdef __OLD_GINT - Gint_inout inout_vlocal(vr_hxc.c, 0, Gint_Tools::job_type::vlocal); - this->gint->get_hRGint()->set_zero(); - this->gint->cal_gint(&inout_vlocal); - this->gint->transfer_pvpR(&*this->hR, &ucell); //grid to 2d block -#else ModuleGint::cal_gint_vl(vr_hxc.c, &*this->hR); -#endif ModuleBase::timer::tick("OperatorLRHxc", "grid_calculation"); } @@ -109,14 +95,7 @@ namespace LR LR_Util::_allocate_2order_nested_ptr(rho_trans, 1, nrxx); // nspin=1 for transition density ModuleBase::GlobalFunc::ZEROS(rho_trans[0], nrxx); -#ifdef __OLD_GINT - this->gint->transfer_DM2DtoGrid(DM_trans_real_imag.get_DMR_vector()); - // LR_Util::print_HR(*this->gint->get_DMRGint()[0], this->ucell.nat, "DMR(grid, real)"); - Gint_inout inout_rho(rho_trans, Gint_Tools::job_type::rho, 1, false); - this->gint->cal_gint(&inout_rho); -#else ModuleGint::cal_gint_rho(DM_trans_real_imag.get_DMR_vector(), 1, rho_trans, false); -#endif // print_grid_nonzero(rho_trans[0], nrxx, 10, "rho_trans"); // 3. v_hxc = f_hxc * rho_trans @@ -128,15 +107,7 @@ namespace LR // 4. V^{Hxc}_{\mu,\nu}=\int{dr} \phi_\mu(r) v_{Hxc}(r) \phi_\mu(r) HR_real_imag.set_zero(); -#ifdef __OLD_GINT - Gint_inout inout_vlocal(vr_hxc.c, 0, Gint_Tools::job_type::vlocal); - this->gint->get_hRGint()->set_zero(); - this->gint->cal_gint(&inout_vlocal); - // LR_Util::print_HR(*this->gint->get_hRGint(), this->ucell.nat, "VR(grid)"); - this->gint->transfer_pvpR(&HR_real_imag, &ucell, &this->gd); -#else ModuleGint::cal_gint_vl(vr_hxc.c, &HR_real_imag); -#endif // LR_Util::print_HR(HR_real_imag, this->ucell.nat, "VR(real, 2d)"); LR_Util::set_HR_real_imag_part(HR_real_imag, *this->hR, ucell.nat, type); }; @@ -148,4 +119,4 @@ namespace LR template class OperatorLRHxc; template class OperatorLRHxc>; -} \ No newline at end of file +} diff --git a/source/source_lcao/module_lr/operator_casida/operator_lr_hxc.h b/source/source_lcao/module_lr/operator_casida/operator_lr_hxc.h index e201561380..bb82780e14 100644 --- a/source/source_lcao/module_lr/operator_casida/operator_lr_hxc.h +++ b/source/source_lcao/module_lr/operator_casida/operator_lr_hxc.h @@ -1,8 +1,6 @@ #pragma once #include "source_cell/klist.h" #include "source_hamilt/operator.h" -#include "source_lcao/module_lr/utils/gint_template.h" -#include "source_lcao/module_gint/grid_technique.h" #include "source_estate/module_dm/density_matrix.h" #include "source_lcao/module_lr/potentials/pot_hxc_lrtd.h" #include "source_lcao/module_lr/utils/lr_util.h" @@ -21,7 +19,6 @@ namespace LR const std::vector& nvirt, const psi::Psi& psi_ks_in, std::unique_ptr>& DM_trans_in, - typename TGint::type* gint_in, std::weak_ptr pot_in, const UnitCell& ucell_in, const std::vector& orb_cutoff, @@ -32,7 +29,7 @@ namespace LR const Parallel_Orbitals& pmat_in, const std::vector& ispin_ks = {0}) : nspin(nspin), naos(naos), nocc(nocc), nvirt(nvirt), nk(kv_in.get_nks() / nspin), psi_ks(psi_ks_in), - DM_trans(DM_trans_in), gint(gint_in), pot(pot_in), ucell(ucell_in), orb_cutoff_(orb_cutoff), gd(gd_in), + DM_trans(DM_trans_in), pot(pot_in), ucell(ucell_in), orb_cutoff_(orb_cutoff), gd(gd_in), kv(kv_in), pX(pX_in), pc(pc_in), pmat(pmat_in), ispin_ks(ispin_ks) { ModuleBase::TITLE("OperatorLRHxc", "OperatorLRHxc"); @@ -82,8 +79,6 @@ namespace LR std::weak_ptr pot; - typename TGint::type* gint = nullptr; - const UnitCell& ucell; std::vector orb_cutoff_; const Grid_Driver& gd; diff --git a/source/source_lcao/module_lr/potentials/pot_hxc_lrtd.cpp b/source/source_lcao/module_lr/potentials/pot_hxc_lrtd.cpp index 58febe316e..d4b04ad3ff 100644 --- a/source/source_lcao/module_lr/potentials/pot_hxc_lrtd.cpp +++ b/source/source_lcao/module_lr/potentials/pot_hxc_lrtd.cpp @@ -6,7 +6,6 @@ #include #include "source_lcao/module_lr/utils/lr_util.h" #include "source_lcao/module_lr/utils/lr_util_xc.hpp" -#include "source_pw/module_pwdft/global.h" // tmp, for pgrid #define FXC_PARA_TYPE const double* const rho, ModuleBase::matrix& v_eff, const std::vector& ispin_op = { 0,0 } namespace LR { diff --git a/source/source_lcao/module_lr/potentials/xc_kernel.cpp b/source/source_lcao/module_lr/potentials/xc_kernel.cpp index 69c37b8de2..b28d44a0c6 100644 --- a/source/source_lcao/module_lr/potentials/xc_kernel.cpp +++ b/source/source_lcao/module_lr/potentials/xc_kernel.cpp @@ -6,7 +6,7 @@ #include "source_lcao/module_lr/utils/lr_util_xc.hpp" #include #include -#include "source_io/cube_io.h" +#include "source_io/module_output/cube_io.h" #ifdef USE_LIBXC #include #include "source_hamilt/module_xc/xc_functional_libxc.h" diff --git a/source/source_lcao/module_lr/ri_benchmark/test/CMakeLists.txt b/source/source_lcao/module_lr/ri_benchmark/test/CMakeLists.txt index d842b3e7ec..51ccc5b397 100644 --- a/source/source_lcao/module_lr/ri_benchmark/test/CMakeLists.txt +++ b/source/source_lcao/module_lr/ri_benchmark/test/CMakeLists.txt @@ -1,6 +1,6 @@ if (ENABLE_LIBRI) AddTest( - TARGET ri_benchmark_test + TARGET MODULE_LR_ri_benchmark_test LIBS psi base ${math_libs} device container parameter SOURCES ri_benchmark_test.cpp ) diff --git a/source/source_lcao/module_lr/ri_benchmark/test/ri_benchmark_test.cpp b/source/source_lcao/module_lr/ri_benchmark/test/ri_benchmark_test.cpp index 9e66aad4bb..e565796a2e 100644 --- a/source/source_lcao/module_lr/ri_benchmark/test/ri_benchmark_test.cpp +++ b/source/source_lcao/module_lr/ri_benchmark/test/ri_benchmark_test.cpp @@ -15,6 +15,10 @@ Magnetism::Magnetism() {} Magnetism::~Magnetism() {} Atom::Atom() { this->nw = 2; } Atom::~Atom() {} +SepPot::SepPot(){} +SepPot::~SepPot(){} +Sep_Cell::Sep_Cell() noexcept {} +Sep_Cell::~Sep_Cell() noexcept {} UnitCell::UnitCell() { atoms = new Atom[1]; iat2it = new int[1]; iat2it[0] = 0; diff --git a/source/source_lcao/module_lr/utils/gint_move.hpp b/source/source_lcao/module_lr/utils/gint_move.hpp deleted file mode 100644 index 0faa68f39d..0000000000 --- a/source/source_lcao/module_lr/utils/gint_move.hpp +++ /dev/null @@ -1,87 +0,0 @@ -#include "lr_util.h" -#include "source_lcao/module_gint/gint_gamma.h" -#include "source_io/module_parameter/parameter.h" -#include "source_lcao/module_gint/gint_k.h" -#include "source_lcao/module_gint/grid_technique.h" - -// Here will be the only place where GlobalCs are used (to be moved) in source_lcao/module_lr -#include "source_pw/module_pwdft/global.h" - -template -using D2 = void(*) (T**, size_t); -// template -// using D3 = void(*) (T***, size_t, size_t); -// template -// D2 d2 = LR_Util::_deallocate_2order_nested_ptr; -// template -// D3 d3 = LR_Util::delete_p3; -// Change to C++ 11 -D2 d2 = LR_Util::_deallocate_2order_nested_ptr; -// D3 d3 = LR_Util::delete_p3; - - -Gint& Gint::operator=(Gint&& rhs) -{ - if (this == &rhs) {return *this; -} - - this->nbx = rhs.nbx; - this->nby = rhs.nby; - this->nbz = rhs.nbz; - this->ncxyz = rhs.ncxyz; - this->nbz_start = rhs.nbz_start; - this->bx = rhs.bx; - this->by = rhs.by; - this->bz = rhs.bz; - this->bxyz = rhs.bxyz; - this->nbxx = rhs.nbxx; - this->ny = rhs.ny; - this->nplane = rhs.nplane; - this->startz_current = rhs.startz_current; - - this->gridt = rhs.gridt; - this->ucell = rhs.ucell; - - // move hR after refactor - this->hRGint = rhs.hRGint; - rhs.hRGint = nullptr; - this->hRGintCd = rhs.hRGintCd; - rhs.hRGintCd = nullptr; - for (int i = 0; i < this->DMRGint.size(); i++) - { - delete this->DMRGint[i]; - } - for (int i = 0; i < this->hRGint_tmp.size(); i++) - { - delete this->hRGint_tmp[i]; - } - this->pvdpRx_reduced = std::move(rhs.pvdpRx_reduced); - this->pvdpRy_reduced = std::move(rhs.pvdpRy_reduced); - this->pvdpRz_reduced = std::move(rhs.pvdpRz_reduced); - this->DMRGint = std::move(rhs.DMRGint); - this->hRGint_tmp = std::move(rhs.hRGint_tmp); - this->DMRGint_full = rhs.DMRGint_full; - rhs.DMRGint_full = nullptr; - - return *this; -} - -Gint_Gamma& Gint_Gamma::operator=(Gint_Gamma&& rhs) -{ - if (this == &rhs) {return *this; -} - Gint::operator=(std::move(rhs)); - - // DM may not needed in beyond DFT ESolver - // if (this->DM != nullptr) d3(this->DM, PARAM.inp.nspin, gridt.lgd); - assert(this->DM == nullptr); - return *this; -} - -Gint_k& Gint_k::operator=(Gint_k&& rhs) -{ - if (this == &rhs) {return *this; -} - this->Gint::operator=(std::move(rhs)); - return *this; -} \ No newline at end of file diff --git a/source/source_lcao/module_lr/utils/gint_template.h b/source/source_lcao/module_lr/utils/gint_template.h deleted file mode 100644 index e56bb33961..0000000000 --- a/source/source_lcao/module_lr/utils/gint_template.h +++ /dev/null @@ -1,15 +0,0 @@ -#pragma once -#include "source_lcao/module_gint/gint_gamma.h" -#include "source_lcao/module_gint/gint_k.h" -namespace LR -{ - template struct TGint; - template <> - struct TGint { - using type = Gint_Gamma; - }; - template <> - struct TGint> { - using type = Gint_k; - }; -} \ No newline at end of file diff --git a/source/source_lcao/module_lr/utils/lr_util.cpp b/source/source_lcao/module_lr/utils/lr_util.cpp index ae2f00ffa3..f720012413 100644 --- a/source/source_lcao/module_lr/utils/lr_util.cpp +++ b/source/source_lcao/module_lr/utils/lr_util.cpp @@ -120,7 +120,7 @@ namespace LR_Util ModuleBase::TITLE("LR_Util", "diag_lapack"); int info = 0; char jobz = 'V', uplo = 'U'; - double work_tmp; + double work_tmp = 0.0; const int minus_one = -1; dsyev_(&jobz, &uplo, &n, mat, &n, eig, &work_tmp, &minus_one, &info); // get best lwork const int lwork = work_tmp; @@ -149,7 +149,7 @@ namespace LR_Util ModuleBase::TITLE("LR_Util", "diag_lapack_nh"); int info = 0; char jobvl = 'N', jobvr = 'V'; //calculate right eigenvectors - double work_tmp; + double work_tmp = 0.0; const int minus_one = -1; std::vector eig_real(n); std::vector eig_imag(n); diff --git a/source/source_lcao/module_lr/utils/test/CMakeLists.txt b/source/source_lcao/module_lr/utils/test/CMakeLists.txt index 4b4589a5c9..b0c2e4dbfb 100644 --- a/source/source_lcao/module_lr/utils/test/CMakeLists.txt +++ b/source/source_lcao/module_lr/utils/test/CMakeLists.txt @@ -1,13 +1,13 @@ remove_definitions(-DUSE_LIBXC) AddTest( - TARGET lr_util_phys_test + TARGET MODULE_LR_lr_util_phys_test LIBS parameter base ${math_libs} device container planewave #for FFT SOURCES lr_util_physics_test.cpp ../lr_util.cpp - ../../../../source_io/orb_io.cpp + ../../../../source_io/module_output/orb_io.cpp ) AddTest( - TARGET lr_util_algo_test + TARGET MODULE_LR_lr_util_algo_test LIBS parameter base ${math_libs} device psi container planewave #for FFT SOURCES lr_util_algorithms_test.cpp ../lr_util.cpp ) \ No newline at end of file diff --git a/source/source_lcao/module_operator_lcao/CMakeLists.txt b/source/source_lcao/module_operator_lcao/CMakeLists.txt index 0e49a9dc43..e9dbbe381b 100644 --- a/source/source_lcao/module_operator_lcao/CMakeLists.txt +++ b/source/source_lcao/module_operator_lcao/CMakeLists.txt @@ -6,14 +6,15 @@ add_library( meta_lcao.cpp veff_lcao.cpp deepks_lcao.cpp - overlap_new.cpp - ekinetic_new.cpp - nonlocal_new.cpp + overlap.cpp + ekinetic.cpp + nonlocal.cpp td_ekinetic_lcao.cpp td_nonlocal_lcao.cpp td_pot_hybrid.cpp dspin_lcao.cpp dftu_lcao.cpp + operator_force_stress_utils.cpp ) if(ENABLE_COVERAGE) diff --git a/source/source_lcao/module_operator_lcao/deepks_lcao.cpp b/source/source_lcao/module_operator_lcao/deepks_lcao.cpp index 5e75cc9b40..67a77a0e4a 100644 --- a/source/source_lcao/module_operator_lcao/deepks_lcao.cpp +++ b/source/source_lcao/module_operator_lcao/deepks_lcao.cpp @@ -152,13 +152,8 @@ void hamilt::DeePKS>::contributeHR() { ModuleBase::timer::tick("DeePKS", "contributeHR"); - const int inlmax = ptr_orb_->Alpha[0].getTotal_nchi() * this->ucell->nat; - DeePKS_domain::cal_pdm(this->ld->init_pdm, - inlmax, - this->ld->lmaxd, - this->ld->inl2l, - this->ld->inl_index, + this->ld->deepks_param, this->kvec_d, this->ld->dm_r, this->ld->phialpha, @@ -170,19 +165,13 @@ void hamilt::DeePKS>::contributeHR() std::vector descriptor; DeePKS_domain::cal_descriptor(this->ucell->nat, - inlmax, - this->ld->inl2l, + this->ld->deepks_param, this->ld->pdm, - descriptor, - this->ld->des_per_atom); + descriptor); if (PARAM.inp.deepks_equiv) { DeePKS_domain::cal_edelta_gedm_equiv(this->ucell->nat, - this->ld->lmaxd, - this->ld->nmaxd, - inlmax, - this->ld->des_per_atom, - this->ld->inl2l, + this->ld->deepks_param, descriptor, this->ld->gedm, this->ld->E_delta, @@ -191,9 +180,7 @@ void hamilt::DeePKS>::contributeHR() else { DeePKS_domain::cal_edelta_gedm(this->ucell->nat, - inlmax, - this->ld->des_per_atom, - this->ld->inl2l, + this->ld->deepks_param, descriptor, this->ld->pdm, this->ld->model_deepks, @@ -253,7 +240,7 @@ void hamilt::DeePKS>::calculate_HR() { for (int N0 = 0; N0 < ptr_orb_->Alpha[0].getNchi(L0); ++N0) { - const int inl = this->ld->inl_index[T0](I0, L0, N0); + const int inl = this->ld->deepks_param.inl_index[T0](I0, L0, N0); const double* pgedm = this->ld->gedm[inl]; const int nm = 2 * L0 + 1; @@ -274,7 +261,7 @@ void hamilt::DeePKS>::calculate_HR() { const double* pgedm = this->ld->gedm[iat0]; int nproj = 0; - for (int il = 0; il < this->ld->lmaxd + 1; il++) + for (int il = 0; il < this->ld->deepks_param.lmaxd + 1; il++) { nproj += (2 * il + 1) * ptr_orb_->Alpha[0].getNchi(il); } @@ -364,19 +351,19 @@ void hamilt::DeePKS>::calculate_HR() constexpr char transa = 'T', transb = 'N'; const double gemm_alpha = 1.0, gemm_beta = 1.0; - dgemm_(&transa, - &transb, - &col_size, - &row_size, - &trace_alpha_size, - &gemm_alpha, - s_2t.data(), - &trace_alpha_size, + BlasConnector::gemm(transb, + transa, + row_size, + col_size, + trace_alpha_size, + gemm_alpha, s_1t.data(), - &trace_alpha_size, - &gemm_beta, + trace_alpha_size, + s_2t.data(), + trace_alpha_size, + gemm_beta, hr_current.data(), - &col_size); + col_size); // add data of HR to target BaseMatrix #pragma omp critical diff --git a/source/source_lcao/module_operator_lcao/dftu_force_stress.hpp b/source/source_lcao/module_operator_lcao/dftu_force_stress.hpp index 2ce46854a4..8175d1009f 100644 --- a/source/source_lcao/module_operator_lcao/dftu_force_stress.hpp +++ b/source/source_lcao/module_operator_lcao/dftu_force_stress.hpp @@ -324,7 +324,7 @@ void DFTU>::cal_force_IJR(const int& iat1, step_trace[3] = col_indexes.size() + 1; } - double tmp[3]; + double tmp[3] = {0.0}; // calculate the local matrix for (int is = 0; is < nspin; is++) { diff --git a/source/source_lcao/module_operator_lcao/dftu_lcao.cpp b/source/source_lcao/module_operator_lcao/dftu_lcao.cpp index c35aa51bef..327076fab5 100644 --- a/source/source_lcao/module_operator_lcao/dftu_lcao.cpp +++ b/source/source_lcao/module_operator_lcao/dftu_lcao.cpp @@ -19,12 +19,12 @@ hamilt::DFTU>::DFTU(HS_Matrix_K* hsk_in, const Grid_Driver* GridD_in, const TwoCenterIntegrator* intor, const std::vector& orb_cutoff, - ModuleDFTU::DFTU* dftu_in) + Plus_U* p_dftu) : hamilt::OperatorLCAO(hsk_in, kvec_d_in, hR_in), intor_(intor), orb_cutoff_(orb_cutoff) { this->cal_type = calculation_type::lcao_dftu; this->ucell = &ucell_in; - this->dftu = dftu_in; + this->dftu = p_dftu; #ifdef __DEBUG assert(this->ucell != nullptr); #endif @@ -186,7 +186,7 @@ void hamilt::DFTU>::contributeHR() // will update this->dftu->locale and this->dftu->EU if (this->current_spin == 0) { - this->dftu->EU = 0.0; + this->dftu->set_energy(0.0); } } ModuleBase::timer::tick("DFTU", "contributeHR"); @@ -272,7 +272,12 @@ void hamilt::DFTU>::contributeHR() ModuleBase::timer::tick("DFTU", "cal_vu"); const double u_value = this->dftu->U[T0]; std::vector VU_tmp(occ.size()); - this->cal_v_of_u(occ, tlp1, u_value, VU_tmp.data(), this->dftu->EU); + + // mohan add 2025-11-08 + double u_energy = Plus_U::get_energy(); + this->cal_v_of_u(occ, tlp1, u_value, VU_tmp.data(), u_energy); + Plus_U::set_energy(u_energy); + // transfer occ from pauli matrix format to normal format std::vector VU(occ.size()); this->transfer_vu(VU_tmp, VU); @@ -311,7 +316,7 @@ void hamilt::DFTU>::contributeHR() // energy correction for NSPIN=1 if (this->nspin == 1) { - this->dftu->EU *= 2.0; + this->dftu->set_double_energy(); } // for readin onsite_dm, set initialed_locale to false to avoid using readin locale in next iteration if (this->current_spin == this->nspin - 1 || this->nspin == 4) diff --git a/source/source_lcao/module_operator_lcao/dftu_lcao.h b/source/source_lcao/module_operator_lcao/dftu_lcao.h index 4ef1890f76..d24c03bd8d 100644 --- a/source/source_lcao/module_operator_lcao/dftu_lcao.h +++ b/source/source_lcao/module_operator_lcao/dftu_lcao.h @@ -33,7 +33,7 @@ class DFTU> : public OperatorLCAO const Grid_Driver* gridD_in, const TwoCenterIntegrator* intor, const std::vector& orb_cutoff, - ModuleDFTU::DFTU* dftu_in); + Plus_U* p_dftu); ~DFTU>(); /** @@ -51,7 +51,7 @@ class DFTU> : public OperatorLCAO private: const UnitCell* ucell = nullptr; - ModuleDFTU::DFTU* dftu = nullptr; + Plus_U* dftu = nullptr; hamilt::HContainer* HR = nullptr; diff --git a/source/source_lcao/module_operator_lcao/dspin_force_stress.hpp b/source/source_lcao/module_operator_lcao/dspin_force_stress.hpp index ff14029e25..449d73c050 100644 --- a/source/source_lcao/module_operator_lcao/dspin_force_stress.hpp +++ b/source/source_lcao/module_operator_lcao/dspin_force_stress.hpp @@ -272,7 +272,7 @@ void DeltaSpin>::cal_force_IJR(const int& iat1, step_trace[2] = col_indexes.size(); step_trace[3] = col_indexes.size() + 1; } - double tmp[3]; + double tmp[3] = {0.0}; // calculate the local matrix for (int is = 1; is < nspin; is++) { diff --git a/source/source_lcao/module_operator_lcao/ekinetic.cpp b/source/source_lcao/module_operator_lcao/ekinetic.cpp new file mode 100644 index 0000000000..77d751cb67 --- /dev/null +++ b/source/source_lcao/module_operator_lcao/ekinetic.cpp @@ -0,0 +1,266 @@ +#include "ekinetic.h" + +#include "source_base/timer.h" +#include "source_base/tool_title.h" +#include "source_cell/module_neighbor/sltk_grid_driver.h" +#include "source_lcao/module_operator_lcao/operator_lcao.h" +#include "source_lcao/module_hcontainer/hcontainer_funcs.h" + +// Constructor +template +hamilt::EKinetic>::EKinetic( + HS_Matrix_K* hsk_in, + const std::vector>& kvec_d_in, + hamilt::HContainer* hR_in, + const UnitCell* ucell_in, + const std::vector& orb_cutoff, + const Grid_Driver* GridD_in, + const TwoCenterIntegrator* intor) + : hamilt::OperatorLCAO(hsk_in, kvec_d_in, hR_in), orb_cutoff_(orb_cutoff), intor_(intor), gridD(GridD_in) +{ + this->cal_type = calculation_type::lcao_fixed; + this->ucell = ucell_in; +#ifdef __DEBUG + assert(this->ucell != nullptr); + assert(this->hsk != nullptr); +#endif + // initialize HR to allocate sparse Ekinetic matrix memory + // Only initialize if hR_in is not nullptr (for force calculation, hR_in can be nullptr) + if (hR_in != nullptr) + { + this->initialize_HR(GridD_in); + } +} + +// destructor +template +hamilt::EKinetic>::~EKinetic() +{ + if (this->allocated) + { + delete this->HR_fixed; + } +} + +// initialize_HR() +template +void hamilt::EKinetic>::initialize_HR(const Grid_Driver* GridD) +{ + ModuleBase::TITLE("EKinetic", "initialize_HR"); + ModuleBase::timer::tick("EKinetic", "initialize_HR"); + + auto* paraV = this->hR->get_paraV();// get parallel orbitals from HR + // TODO: if paraV is nullptr, AtomPair can not use paraV for constructor, I will repair it in the future. + + for (int iat1 = 0; iat1 < ucell->nat; iat1++) + { + auto tau1 = ucell->get_tau(iat1); + int T1=0; + int I1=0; + ucell->iat2iait(iat1, &I1, &T1); + AdjacentAtomInfo adjs; + GridD->Find_atom(*ucell, tau1, T1, I1, &adjs); + std::vector is_adj(adjs.adj_num + 1, false); + for (int ad1 = 0; ad1 < adjs.adj_num + 1; ++ad1) + { + const int T2 = adjs.ntype[ad1]; + const int I2 = adjs.natom[ad1]; + const int iat2 = ucell->itia2iat(T2, I2); + if (paraV->get_row_size(iat1) <= 0 || paraV->get_col_size(iat2) <= 0) + { + continue; + } + const ModuleBase::Vector3& R_index2 = adjs.box[ad1]; + // choose the real adjacent atoms + // Note: the distance of atoms should less than the cutoff radius, + // When equal, the theoretical value of matrix element is zero, + // but the calculated value is not zero due to the numerical error, which would lead to result changes. + if (this->ucell->cal_dtau(iat1, iat2, R_index2).norm() * this->ucell->lat0 + < orb_cutoff_[T1] + orb_cutoff_[T2]) + { + is_adj[ad1] = true; + } + } + filter_adjs(is_adj, adjs); + this->adjs_all.push_back(adjs); + for (int ad = 0; ad < adjs.adj_num + 1; ++ad) + { + const int T2 = adjs.ntype[ad]; + const int I2 = adjs.natom[ad]; + int iat2 = ucell->itia2iat(T2, I2); + ModuleBase::Vector3& R_index = adjs.box[ad]; + hamilt::AtomPair tmp(iat1, iat2, R_index, paraV); + this->hR->insert_pair(tmp); + } + } + // allocate the memory of BaseMatrix in HR, and set the new values to zero + this->hR->allocate(nullptr, true); + + ModuleBase::timer::tick("EKinetic", "initialize_HR"); +} + +template +void hamilt::EKinetic>::calculate_HR() +{ + ModuleBase::TITLE("EKinetic", "calculate_HR"); + if (this->HR_fixed == nullptr || this->HR_fixed->size_atom_pairs() <= 0) + { + // Skip calculation if HR_fixed is empty (e.g., zero cutoff case) + // This is not an error, just means there are no atom pairs to calculate + return; + } + ModuleBase::timer::tick("EKinetic", "calculate_HR"); + + const Parallel_Orbitals* paraV = this->HR_fixed->get_atom_pair(0).get_paraV(); +#ifdef _OPENMP +#pragma omp parallel for +#endif + for (int iat1 = 0; iat1 < this->ucell->nat; iat1++) + { + auto tau1 = ucell->get_tau(iat1); + int T1=0; + int I1=0; + ucell->iat2iait(iat1, &I1, &T1); + AdjacentAtomInfo& adjs = this->adjs_all[iat1]; + for (int ad = 0; ad < adjs.adj_num + 1; ++ad) + { + const int T2 = adjs.ntype[ad]; + const int I2 = adjs.natom[ad]; + const int iat2 = ucell->itia2iat(T2, I2); + const ModuleBase::Vector3& R_index2 = adjs.box[ad]; + ModuleBase::Vector3 dtau = this->ucell->cal_dtau(iat1, iat2, R_index2); + + hamilt::BaseMatrix* tmp = this->HR_fixed->find_matrix(iat1, iat2, R_index2); + if (tmp != nullptr) + { + this->cal_HR_IJR(iat1, iat2, paraV, dtau, tmp->get_pointer()); + } + else + { + ModuleBase::WARNING_QUIT("hamilt::EKinetic::calculate_HR", "R_index not found in HR"); + } + } + } + + ModuleBase::timer::tick("EKinetic", "calculate_HR"); +} + +// cal_HR_IJR() +template +void hamilt::EKinetic>::cal_HR_IJR(const int& iat1, + const int& iat2, + const Parallel_Orbitals* paraV, + const ModuleBase::Vector3& dtau, + TR* data_pointer) +{ + // --------------------------------------------- + // get info of orbitals of atom1 and atom2 from ucell + // --------------------------------------------- + int T1, I1; + this->ucell->iat2iait(iat1, &I1, &T1); + int T2, I2; + this->ucell->iat2iait(iat2, &I2, &T2); + Atom& atom1 = this->ucell->atoms[T1]; + Atom& atom2 = this->ucell->atoms[T2]; + + // npol is the number of polarizations, + // 1 for non-magnetic (one Hamiltonian matrix only has spin-up or spin-down), + // 2 for magnetic (one Hamiltonian matrix has both spin-up and spin-down) + const int npol = this->ucell->get_npol(); + + const int* iw2l1 = atom1.iw2l.data(); + const int* iw2n1 = atom1.iw2n.data(); + const int* iw2m1 = atom1.iw2m.data(); + const int* iw2l2 = atom2.iw2l.data(); + const int* iw2n2 = atom2.iw2n.data(); + const int* iw2m2 = atom2.iw2m.data(); + + // --------------------------------------------- + // calculate the Ekinetic matrix for each pair of orbitals + // --------------------------------------------- + double olm[3] = {0, 0, 0}; + auto row_indexes = paraV->get_indexes_row(iat1); + auto col_indexes = paraV->get_indexes_col(iat2); + const int step_trace = col_indexes.size() + 1; + for (int iw1l = 0; iw1l < row_indexes.size(); iw1l += npol) + { + const int iw1 = row_indexes[iw1l] / npol; + const int L1 = iw2l1[iw1]; + const int N1 = iw2n1[iw1]; + const int m1 = iw2m1[iw1]; + + // convert m (0,1,...2l) to M (-l, -l+1, ..., l-1, l) + int M1 = (m1 % 2 == 0) ? -m1 / 2 : (m1 + 1) / 2; + + for (int iw2l = 0; iw2l < col_indexes.size(); iw2l += npol) + { + const int iw2 = col_indexes[iw2l] / npol; + const int L2 = iw2l2[iw2]; + const int N2 = iw2n2[iw2]; + const int m2 = iw2m2[iw2]; + + // convert m (0,1,...2l) to M (-l, -l+1, ..., l-1, l) + int M2 = (m2 % 2 == 0) ? -m2 / 2 : (m2 + 1) / 2; + + intor_->calculate(T1, L1, N1, M1, T2, L2, N2, M2, dtau * this->ucell->lat0, olm); + + for (int ipol = 0; ipol < npol; ipol++) + { + data_pointer[ipol * step_trace] += olm[0]; + } + data_pointer += npol; + } + data_pointer += (npol - 1) * col_indexes.size(); + } +} + +// set_HR_fixed() +template +void hamilt::EKinetic>::set_HR_fixed(void* HR_fixed_in) +{ + this->HR_fixed = static_cast*>(HR_fixed_in); + this->allocated = false; +} + +// contributeHR() +template +void hamilt::EKinetic>::contributeHR() +{ + ModuleBase::TITLE("EKinetic", "contributeHR"); + ModuleBase::timer::tick("EKinetic", "contributeHR"); + + if (!this->HR_fixed_done) + { + // if this Operator is the first node of the sub_chain, then HR_fixed is nullptr + if (this->HR_fixed == nullptr) + { + this->HR_fixed = new hamilt::HContainer(*this->hR); + this->HR_fixed->set_zero(); + this->allocated = true; + } + if (this->next_sub_op != nullptr) + { + // pass pointer of HR_fixed to the next node + static_cast*>(this->next_sub_op)->set_HR_fixed(this->HR_fixed); + } + // calculate the values in HR_fixed + this->calculate_HR(); + this->HR_fixed_done = true; + } + // last node of sub-chain, add HR_fixed into HR + // skip if HR_fixed is nullptr or empty + if (this->next_sub_op == nullptr && this->HR_fixed != nullptr && this->HR_fixed->size_atom_pairs() > 0) + { + this->hR->add(*(this->HR_fixed)); + } + + ModuleBase::timer::tick("EKinetic", "contributeHR"); + return; +} + +// Include force/stress implementation +#include "ekinetic_force_stress.hpp" + +template class hamilt::EKinetic>; +template class hamilt::EKinetic, double>>; +template class hamilt::EKinetic, std::complex>>; diff --git a/source/source_lcao/module_operator_lcao/ekinetic.h b/source/source_lcao/module_operator_lcao/ekinetic.h new file mode 100644 index 0000000000..916c384a09 --- /dev/null +++ b/source/source_lcao/module_operator_lcao/ekinetic.h @@ -0,0 +1,144 @@ +#ifndef EKINETIC_H +#define EKINETIC_H +#include "source_basis/module_ao/parallel_orbitals.h" +#include "source_basis/module_nao/two_center_integrator.h" +#include "source_cell/module_neighbor/sltk_grid_driver.h" +#include "source_cell/unitcell.h" +#include "source_lcao/module_operator_lcao/operator_lcao.h" +#include "source_lcao/module_hcontainer/hcontainer.h" +#include + +namespace hamilt +{ + +#ifndef __EKINETICTEMPLATE +#define __EKINETICTEMPLATE + +/// The EKinetic class template inherits from class T +/// it is used to calculate the electronic kinetic +/// Template parameters: +/// - T: base class, it would be OperatorLCAO or OperatorPW +/// - TR: data type of real space Hamiltonian, it would be double or std::complex +template +class EKinetic : public T +{ +}; + +#endif + +/// EKinetic class template specialization for OperatorLCAO base class +/// It is used to calculate the electronic kinetic matrix in real space and fold it to k-space +/// HR = +/// HK = = \sum_{R} e^{ikR} HR +/// Template parameters: +/// - TK: data type of k-space Hamiltonian +/// - TR: data type of real space Hamiltonian +template +class EKinetic> : public OperatorLCAO +{ + public: + /** + * @brief Construct a new EKinetic object + */ + EKinetic>(HS_Matrix_K* hsk_in, + const std::vector>& kvec_d_in, + HContainer* hR_in, + const UnitCell* ucell_in, + const std::vector& orb_cutoff, + const Grid_Driver* GridD_in, + const TwoCenterIntegrator* intor); + + /** + * @brief Destroy the EKinetic object + */ + ~EKinetic>(); + + /** + * @brief contributeHR() is used to calculate the HR matrix + * + */ + virtual void contributeHR() override; + + virtual void set_HR_fixed(void*) override; + + /** + * @brief calculate force and stress for kinetic operator + * @param cal_force whether to calculate force + * @param cal_stress whether to calculate stress + * @param dmR density matrix in real space + * @param force output force matrix (nat x 3) + * @param stress output stress matrix (3 x 3) + */ + void cal_force_stress(const bool cal_force, + const bool cal_stress, + const HContainer* dmR, + ModuleBase::matrix& force, + ModuleBase::matrix& stress); + + private: + const UnitCell* ucell = nullptr; + std::vector orb_cutoff_; + + hamilt::HContainer* HR_fixed = nullptr; + + const TwoCenterIntegrator* intor_ = nullptr; + + const Grid_Driver* gridD = nullptr; + + bool allocated = false; + + bool HR_fixed_done = false; + + /** + * @brief initialize HR, search the nearest neighbor atoms + * HContainer is used to store the electronic kinetic matrix with specific atom-pairs + * the size of HR will be fixed after initialization + */ + void initialize_HR(const Grid_Driver* GridD_in); + + /** + * @brief calculate the electronic kinetic matrix with specific atom-pairs + * use the adjs_all to calculate the HR matrix + */ + void calculate_HR(); + + /** + * @brief calculate the HR local matrix of atom pair + */ + void cal_HR_IJR(const int& iat1, + const int& iat2, + const Parallel_Orbitals* paraV, + const ModuleBase::Vector3& dtau, + TR* data_pointer); + + /** + * @brief calculate force contribution for atom pair + */ + void cal_force_IJR(const int& iat1, + const int& iat2, + const Parallel_Orbitals* paraV, + const std::unordered_map>& nlm1_all, + const std::unordered_map>& nlm2_all, + const hamilt::BaseMatrix* dmR_pointer, + double* force1, + double* force2); + + /** + * @brief calculate stress contribution for atom pair + */ + void cal_stress_IJR(const int& iat1, + const int& iat2, + const Parallel_Orbitals* paraV, + const std::unordered_map>& nlm1_all, + const std::unordered_map>& nlm2_all, + const hamilt::BaseMatrix* dmR_pointer, + const ModuleBase::Vector3& dis1, + const ModuleBase::Vector3& dis2, + double* stress); + + /// @brief exact the nearest neighbor atoms from all adjacent atoms + std::vector adjs_all; +}; + +} // namespace hamilt +#endif diff --git a/source/source_lcao/module_operator_lcao/ekinetic_force_stress.hpp b/source/source_lcao/module_operator_lcao/ekinetic_force_stress.hpp new file mode 100644 index 0000000000..b7427f69c1 --- /dev/null +++ b/source/source_lcao/module_operator_lcao/ekinetic_force_stress.hpp @@ -0,0 +1,67 @@ +#pragma once +#include "ekinetic.h" +#include "operator_force_stress_utils.hpp" +#include "source_base/timer.h" + +namespace hamilt +{ + +template +void EKinetic>::cal_force_stress(const bool cal_force, + const bool cal_stress, + const HContainer* dmR, + ModuleBase::matrix& force, + ModuleBase::matrix& stress) +{ + ModuleBase::TITLE("EKinetic", "cal_force_stress"); + ModuleBase::timer::tick("EKinetic", "cal_force_stress"); + + // Lambda function to calculate kinetic integral and its gradient + auto integral_calc = [this](int T1, int L1, int N1, int M1, + int T2, int L2, int N2, int M2, + const ModuleBase::Vector3& dtau, + double* olm) { + this->intor_->calculate(T1, L1, N1, M1, T2, L2, N2, M2, + dtau * this->ucell->lat0, &olm[0], &olm[1]); + }; + + // Use unified template with ForceSign=+1, StressSign=-1 for kinetic operator + OperatorForceStress::cal_force_stress_2center( + cal_force, cal_stress, dmR, this->ucell, this->gridD, + this->orb_cutoff_, dmR->get_paraV(), integral_calc, force, stress); + + ModuleBase::timer::tick("EKinetic", "cal_force_stress"); +} + +// Dummy implementations for cal_force_IJR and cal_stress_IJR +// These are not used in the simplified approach above +template +void EKinetic>::cal_force_IJR( + const int& iat1, + const int& iat2, + const Parallel_Orbitals* paraV, + const std::unordered_map>& nlm1_all, + const std::unordered_map>& nlm2_all, + const hamilt::BaseMatrix* dmR_pointer, + double* force1, + double* force2) +{ + // Not used in current implementation +} + +template +void EKinetic>::cal_stress_IJR( + const int& iat1, + const int& iat2, + const Parallel_Orbitals* paraV, + const std::unordered_map>& nlm1_all, + const std::unordered_map>& nlm2_all, + const hamilt::BaseMatrix* dmR_pointer, + const ModuleBase::Vector3& dis1, + const ModuleBase::Vector3& dis2, + double* stress) +{ + // Not used in current implementation +} + +} // namespace hamilt diff --git a/source/source_lcao/module_operator_lcao/ekinetic_new.cpp b/source/source_lcao/module_operator_lcao/ekinetic_new.cpp deleted file mode 100644 index d276e7cd56..0000000000 --- a/source/source_lcao/module_operator_lcao/ekinetic_new.cpp +++ /dev/null @@ -1,256 +0,0 @@ -#include "ekinetic_new.h" - -#include "source_base/timer.h" -#include "source_base/tool_title.h" -#include "source_cell/module_neighbor/sltk_grid_driver.h" -#include "source_lcao/module_operator_lcao/operator_lcao.h" -#include "source_lcao/module_hcontainer/hcontainer_funcs.h" - -// Constructor -template -hamilt::EkineticNew>::EkineticNew( - HS_Matrix_K* hsk_in, - const std::vector>& kvec_d_in, - hamilt::HContainer* hR_in, - const UnitCell* ucell_in, - const std::vector& orb_cutoff, - const Grid_Driver* GridD_in, - const TwoCenterIntegrator* intor) - : hamilt::OperatorLCAO(hsk_in, kvec_d_in, hR_in), orb_cutoff_(orb_cutoff), intor_(intor) -{ - this->cal_type = calculation_type::lcao_fixed; - this->ucell = ucell_in; -#ifdef __DEBUG - assert(this->ucell != nullptr); - assert(this->hsk != nullptr); -#endif - // initialize HR to allocate sparse Ekinetic matrix memory - this->initialize_HR(GridD_in); -} - -// destructor -template -hamilt::EkineticNew>::~EkineticNew() -{ - if (this->allocated) - { - delete this->HR_fixed; - } -} - -// initialize_HR() -template -void hamilt::EkineticNew>::initialize_HR(const Grid_Driver* GridD) -{ - ModuleBase::TITLE("EkineticNew", "initialize_HR"); - ModuleBase::timer::tick("EkineticNew", "initialize_HR"); - - auto* paraV = this->hR->get_paraV();// get parallel orbitals from HR - // TODO: if paraV is nullptr, AtomPair can not use paraV for constructor, I will repair it in the future. - - for (int iat1 = 0; iat1 < ucell->nat; iat1++) - { - auto tau1 = ucell->get_tau(iat1); - int T1=0; - int I1=0; - ucell->iat2iait(iat1, &I1, &T1); - AdjacentAtomInfo adjs; - GridD->Find_atom(*ucell, tau1, T1, I1, &adjs); - std::vector is_adj(adjs.adj_num + 1, false); - for (int ad1 = 0; ad1 < adjs.adj_num + 1; ++ad1) - { - const int T2 = adjs.ntype[ad1]; - const int I2 = adjs.natom[ad1]; - const int iat2 = ucell->itia2iat(T2, I2); - if (paraV->get_row_size(iat1) <= 0 || paraV->get_col_size(iat2) <= 0) - { - continue; - } - const ModuleBase::Vector3& R_index2 = adjs.box[ad1]; - // choose the real adjacent atoms - // Note: the distance of atoms should less than the cutoff radius, - // When equal, the theoretical value of matrix element is zero, - // but the calculated value is not zero due to the numerical error, which would lead to result changes. - if (this->ucell->cal_dtau(iat1, iat2, R_index2).norm() * this->ucell->lat0 - < orb_cutoff_[T1] + orb_cutoff_[T2]) - { - is_adj[ad1] = true; - } - } - filter_adjs(is_adj, adjs); - this->adjs_all.push_back(adjs); - for (int ad = 0; ad < adjs.adj_num + 1; ++ad) - { - const int T2 = adjs.ntype[ad]; - const int I2 = adjs.natom[ad]; - int iat2 = ucell->itia2iat(T2, I2); - ModuleBase::Vector3& R_index = adjs.box[ad]; - hamilt::AtomPair tmp(iat1, iat2, R_index, paraV); - this->hR->insert_pair(tmp); - } - } - // allocate the memory of BaseMatrix in HR, and set the new values to zero - this->hR->allocate(nullptr, true); - - ModuleBase::timer::tick("EkineticNew", "initialize_HR"); -} - -template -void hamilt::EkineticNew>::calculate_HR() -{ - ModuleBase::TITLE("EkineticNew", "calculate_HR"); - if (this->HR_fixed == nullptr || this->HR_fixed->size_atom_pairs() <= 0) - { - ModuleBase::WARNING_QUIT("hamilt::EkineticNew::calculate_HR", "HR_fixed is nullptr or empty"); - } - ModuleBase::timer::tick("EkineticNew", "calculate_HR"); - - const Parallel_Orbitals* paraV = this->HR_fixed->get_atom_pair(0).get_paraV(); -#ifdef _OPENMP -#pragma omp parallel for -#endif - for (int iat1 = 0; iat1 < this->ucell->nat; iat1++) - { - auto tau1 = ucell->get_tau(iat1); - int T1=0; - int I1=0; - ucell->iat2iait(iat1, &I1, &T1); - AdjacentAtomInfo& adjs = this->adjs_all[iat1]; - for (int ad = 0; ad < adjs.adj_num + 1; ++ad) - { - const int T2 = adjs.ntype[ad]; - const int I2 = adjs.natom[ad]; - const int iat2 = ucell->itia2iat(T2, I2); - const ModuleBase::Vector3& R_index2 = adjs.box[ad]; - ModuleBase::Vector3 dtau = this->ucell->cal_dtau(iat1, iat2, R_index2); - - hamilt::BaseMatrix* tmp = this->HR_fixed->find_matrix(iat1, iat2, R_index2); - if (tmp != nullptr) - { - this->cal_HR_IJR(iat1, iat2, paraV, dtau, tmp->get_pointer()); - } - else - { - ModuleBase::WARNING_QUIT("hamilt::EkineticNew::calculate_HR", "R_index not found in HR"); - } - } - } - - ModuleBase::timer::tick("EkineticNew", "calculate_HR"); -} - -// cal_HR_IJR() -template -void hamilt::EkineticNew>::cal_HR_IJR(const int& iat1, - const int& iat2, - const Parallel_Orbitals* paraV, - const ModuleBase::Vector3& dtau, - TR* data_pointer) -{ - // --------------------------------------------- - // get info of orbitals of atom1 and atom2 from ucell - // --------------------------------------------- - int T1, I1; - this->ucell->iat2iait(iat1, &I1, &T1); - int T2, I2; - this->ucell->iat2iait(iat2, &I2, &T2); - Atom& atom1 = this->ucell->atoms[T1]; - Atom& atom2 = this->ucell->atoms[T2]; - - // npol is the number of polarizations, - // 1 for non-magnetic (one Hamiltonian matrix only has spin-up or spin-down), - // 2 for magnetic (one Hamiltonian matrix has both spin-up and spin-down) - const int npol = this->ucell->get_npol(); - - const int* iw2l1 = atom1.iw2l.data(); - const int* iw2n1 = atom1.iw2n.data(); - const int* iw2m1 = atom1.iw2m.data(); - const int* iw2l2 = atom2.iw2l.data(); - const int* iw2n2 = atom2.iw2n.data(); - const int* iw2m2 = atom2.iw2m.data(); - - // --------------------------------------------- - // calculate the Ekinetic matrix for each pair of orbitals - // --------------------------------------------- - double olm[3] = {0, 0, 0}; - auto row_indexes = paraV->get_indexes_row(iat1); - auto col_indexes = paraV->get_indexes_col(iat2); - const int step_trace = col_indexes.size() + 1; - for (int iw1l = 0; iw1l < row_indexes.size(); iw1l += npol) - { - const int iw1 = row_indexes[iw1l] / npol; - const int L1 = iw2l1[iw1]; - const int N1 = iw2n1[iw1]; - const int m1 = iw2m1[iw1]; - - // convert m (0,1,...2l) to M (-l, -l+1, ..., l-1, l) - int M1 = (m1 % 2 == 0) ? -m1 / 2 : (m1 + 1) / 2; - - for (int iw2l = 0; iw2l < col_indexes.size(); iw2l += npol) - { - const int iw2 = col_indexes[iw2l] / npol; - const int L2 = iw2l2[iw2]; - const int N2 = iw2n2[iw2]; - const int m2 = iw2m2[iw2]; - - // convert m (0,1,...2l) to M (-l, -l+1, ..., l-1, l) - int M2 = (m2 % 2 == 0) ? -m2 / 2 : (m2 + 1) / 2; - - intor_->calculate(T1, L1, N1, M1, T2, L2, N2, M2, dtau * this->ucell->lat0, olm); - - for (int ipol = 0; ipol < npol; ipol++) - { - data_pointer[ipol * step_trace] += olm[0]; - } - data_pointer += npol; - } - data_pointer += (npol - 1) * col_indexes.size(); - } -} - -// set_HR_fixed() -template -void hamilt::EkineticNew>::set_HR_fixed(void* HR_fixed_in) -{ - this->HR_fixed = static_cast*>(HR_fixed_in); - this->allocated = false; -} - -// contributeHR() -template -void hamilt::EkineticNew>::contributeHR() -{ - ModuleBase::TITLE("EkineticNew", "contributeHR"); - ModuleBase::timer::tick("EkineticNew", "contributeHR"); - - if (!this->HR_fixed_done) - { - // if this Operator is the first node of the sub_chain, then HR_fixed is nullptr - if (this->HR_fixed == nullptr) - { - this->HR_fixed = new hamilt::HContainer(*this->hR); - this->HR_fixed->set_zero(); - this->allocated = true; - } - if (this->next_sub_op != nullptr) - { - // pass pointer of HR_fixed to the next node - static_cast*>(this->next_sub_op)->set_HR_fixed(this->HR_fixed); - } - // calculate the values in HR_fixed - this->calculate_HR(); - this->HR_fixed_done = true; - } - // last node of sub-chain, add HR_fixed into HR - if (this->next_sub_op == nullptr) - { - this->hR->add(*(this->HR_fixed)); - } - - ModuleBase::timer::tick("EkineticNew", "contributeHR"); - return; -} - -template class hamilt::EkineticNew>; -template class hamilt::EkineticNew, double>>; -template class hamilt::EkineticNew, std::complex>>; diff --git a/source/source_lcao/module_operator_lcao/ekinetic_new.h b/source/source_lcao/module_operator_lcao/ekinetic_new.h deleted file mode 100644 index 7b8879b78c..0000000000 --- a/source/source_lcao/module_operator_lcao/ekinetic_new.h +++ /dev/null @@ -1,103 +0,0 @@ -#ifndef EKINETICNEW_H -#define EKINETICNEW_H -#include "source_basis/module_ao/parallel_orbitals.h" -#include "source_basis/module_nao/two_center_integrator.h" -#include "source_cell/module_neighbor/sltk_grid_driver.h" -#include "source_cell/unitcell.h" -#include "source_lcao/module_operator_lcao/operator_lcao.h" -#include "source_lcao/module_hcontainer/hcontainer.h" -#include - -namespace hamilt -{ - -#ifndef __EKINETICNEWTEMPLATE -#define __EKINETICNEWTEMPLATE - -/// The EkineticNew class template inherits from class T -/// it is used to calculate the electronic kinetic -/// Template parameters: -/// - T: base class, it would be OperatorLCAO or OperatorPW -/// - TR: data type of real space Hamiltonian, it would be double or std::complex -template -class EkineticNew : public T -{ -}; - -#endif - -/// EkineticNew class template specialization for OperatorLCAO base class -/// It is used to calculate the electronic kinetic matrix in real space and fold it to k-space -/// HR = -/// HK = = \sum_{R} e^{ikR} HR -/// Template parameters: -/// - TK: data type of k-space Hamiltonian -/// - TR: data type of real space Hamiltonian -template -class EkineticNew> : public OperatorLCAO -{ - public: - /** - * @brief Construct a new EkineticNew object - */ - EkineticNew>(HS_Matrix_K* hsk_in, - const std::vector>& kvec_d_in, - HContainer* hR_in, - const UnitCell* ucell_in, - const std::vector& orb_cutoff, - const Grid_Driver* GridD_in, - const TwoCenterIntegrator* intor); - - /** - * @brief Destroy the EkineticNew object - */ - ~EkineticNew>(); - - /** - * @brief contributeHR() is used to calculate the HR matrix - * - */ - virtual void contributeHR() override; - - virtual void set_HR_fixed(void*) override; - - private: - const UnitCell* ucell = nullptr; - std::vector orb_cutoff_; - - hamilt::HContainer* HR_fixed = nullptr; - - const TwoCenterIntegrator* intor_ = nullptr; - - bool allocated = false; - - bool HR_fixed_done = false; - - /** - * @brief initialize HR, search the nearest neighbor atoms - * HContainer is used to store the electronic kinetic matrix with specific atom-pairs - * the size of HR will be fixed after initialization - */ - void initialize_HR(const Grid_Driver* GridD_in); - - /** - * @brief calculate the electronic kinetic matrix with specific atom-pairs - * use the adjs_all to calculate the HR matrix - */ - void calculate_HR(); - - /** - * @brief calculate the HR local matrix of atom pair - */ - void cal_HR_IJR(const int& iat1, - const int& iat2, - const Parallel_Orbitals* paraV, - const ModuleBase::Vector3& dtau, - TR* data_pointer); - - /// @brief exact the nearest neighbor atoms from all adjacent atoms - std::vector adjs_all; -}; - -} // namespace hamilt -#endif diff --git a/source/source_lcao/module_operator_lcao/meta_lcao.cpp b/source/source_lcao/module_operator_lcao/meta_lcao.cpp index f5db5e939a..c6384af94f 100644 --- a/source/source_lcao/module_operator_lcao/meta_lcao.cpp +++ b/source/source_lcao/module_operator_lcao/meta_lcao.cpp @@ -1,7 +1,6 @@ #include "meta_lcao.h" #include "source_base/timer.h" #include "source_base/tool_title.h" -#include "source_pw/module_pwdft/global.h" namespace hamilt { diff --git a/source/source_lcao/module_operator_lcao/meta_lcao.h b/source/source_lcao/module_operator_lcao/meta_lcao.h index 53dca154c4..61bcf7510a 100644 --- a/source/source_lcao/module_operator_lcao/meta_lcao.h +++ b/source/source_lcao/module_operator_lcao/meta_lcao.h @@ -1,8 +1,6 @@ #ifndef METALCAO_H #define METALCAO_H #include "source_base/timer.h" -#include "source_lcao/module_gint/gint_gamma.h" -#include "source_lcao/module_gint/gint_k.h" #include "operator_lcao.h" namespace hamilt diff --git a/source/source_lcao/module_operator_lcao/nonlocal.cpp b/source/source_lcao/module_operator_lcao/nonlocal.cpp new file mode 100644 index 0000000000..bf7a5ccd99 --- /dev/null +++ b/source/source_lcao/module_operator_lcao/nonlocal.cpp @@ -0,0 +1,330 @@ +#include "nonlocal.h" + +#include "source_base/timer.h" +#include "source_base/tool_title.h" +#include "source_cell/module_neighbor/sltk_grid_driver.h" +#include "source_lcao/module_operator_lcao/operator_lcao.h" +#include "source_lcao/module_hcontainer/hcontainer_funcs.h" +#ifdef _OPENMP +#include +#endif + +template +hamilt::Nonlocal>::Nonlocal( + HS_Matrix_K* hsk_in, + const std::vector>& kvec_d_in, + hamilt::HContainer* hR_in, + const UnitCell* ucell_in, + const std::vector& orb_cutoff, + const Grid_Driver* GridD_in, + const TwoCenterIntegrator* intor) + : hamilt::OperatorLCAO(hsk_in, kvec_d_in, hR_in), orb_cutoff_(orb_cutoff), intor_(intor) +{ + this->cal_type = calculation_type::lcao_fixed; + this->ucell = ucell_in; + this->gridD = GridD_in; +#ifdef __DEBUG + assert(this->ucell != nullptr); +#endif + // initialize HR to allocate sparse Nonlocal matrix memory + if(hR_in != nullptr) + { + this->initialize_HR(GridD_in); + } +} + +// destructor +template +hamilt::Nonlocal>::~Nonlocal() +{ + if (this->allocated) + { + delete this->HR_fixed; + } +} + +// initialize_HR() +template +void hamilt::Nonlocal>::initialize_HR(const Grid_Driver* GridD) +{ + ModuleBase::TITLE("Nonlocal", "initialize_HR"); + ModuleBase::timer::tick("Nonlocal", "initialize_HR"); + + auto* paraV = this->hR->get_paraV();// get parallel orbitals from HR + // TODO: if paraV is nullptr, AtomPair can not use paraV for constructor, I will repair it in the future. + + this->adjs_all.clear(); + this->adjs_all.reserve(this->ucell->nat); + for (int iat0 = 0; iat0 < ucell->nat; iat0++) + { + auto tau0 = ucell->get_tau(iat0); + int T0, I0; + ucell->iat2iait(iat0, &I0, &T0); + AdjacentAtomInfo adjs; + GridD->Find_atom(*ucell, tau0, T0, I0, &adjs); + std::vector is_adj(adjs.adj_num + 1, false); + for (int ad1 = 0; ad1 < adjs.adj_num + 1; ++ad1) + { + const int T1 = adjs.ntype[ad1]; + const int I1 = adjs.natom[ad1]; + const int iat1 = ucell->itia2iat(T1, I1); + const ModuleBase::Vector3& tau1 = adjs.adjacent_tau[ad1]; + const ModuleBase::Vector3& R_index1 = adjs.box[ad1]; + // choose the real adjacent atoms + // Note: the distance of atoms should less than the cutoff radius, + // When equal, the theoretical value of matrix element is zero, + // but the calculated value is not zero due to the numerical error, which would lead to result changes. + if (this->ucell->cal_dtau(iat0, iat1, R_index1).norm() * this->ucell->lat0 + < orb_cutoff_[T1] + this->ucell->infoNL.Beta[T0].get_rcut_max()) + { + is_adj[ad1] = true; + } + } + filter_adjs(is_adj, adjs); + this->adjs_all.push_back(adjs); + for (int ad1 = 0; ad1 < adjs.adj_num + 1; ++ad1) + { + const int T1 = adjs.ntype[ad1]; + const int I1 = adjs.natom[ad1]; + const int iat1 = ucell->itia2iat(T1, I1); + const ModuleBase::Vector3& R_index1 = adjs.box[ad1]; + for (int ad2 = 0; ad2 < adjs.adj_num + 1; ++ad2) + { + const int T2 = adjs.ntype[ad2]; + const int I2 = adjs.natom[ad2]; + const int iat2 = ucell->itia2iat(T2, I2); + ModuleBase::Vector3& R_index2 = adjs.box[ad2]; + if (paraV->get_col_size(iat2) <= 0 || paraV->get_row_size(iat1) <= 0) + { + continue; + } + hamilt::AtomPair tmp(iat1, + iat2, + R_index2.x - R_index1.x, + R_index2.y - R_index1.y, + R_index2.z - R_index1.z, + paraV); + this->hR->insert_pair(tmp); + } + } + } + // allocate the memory of BaseMatrix in HR, and set the new values to zero + this->hR->allocate(nullptr, true); + + ModuleBase::timer::tick("Nonlocal", "initialize_HR"); +} + +template +void hamilt::Nonlocal>::calculate_HR() +{ + ModuleBase::TITLE("Nonlocal", "calculate_HR"); + ModuleBase::timer::tick("Nonlocal", "calculate_HR"); + + const Parallel_Orbitals* paraV = this->HR_fixed->get_atom_pair(0).get_paraV(); + const int npol = this->ucell->get_npol(); + // 1. calculate for each pair of atoms +#ifdef _OPENMP +#pragma omp parallel + { + std::unordered_set atom_row_list; +#pragma omp for + for (int iat0 = 0; iat0 < this->ucell->nat; iat0++) + { + atom_row_list.insert(iat0); + } +#endif + for (int iat0 = 0; iat0 < this->ucell->nat; iat0++) + { + auto tau0 = ucell->get_tau(iat0); + int T0, I0; + ucell->iat2iait(iat0, &I0, &T0); + AdjacentAtomInfo& adjs = this->adjs_all[iat0]; + + std::vector>> nlm_tot; + nlm_tot.resize(adjs.adj_num + 1); + + for (int ad = 0; ad < adjs.adj_num + 1; ++ad) + { + const int T1 = adjs.ntype[ad]; + const int I1 = adjs.natom[ad]; + const int iat1 = ucell->itia2iat(T1, I1); + const ModuleBase::Vector3& tau1 = adjs.adjacent_tau[ad]; + const Atom* atom1 = &ucell->atoms[T1]; + + auto all_indexes = paraV->get_indexes_row(iat1); +#ifdef _OPENMP + if (atom_row_list.find(iat1) == atom_row_list.end()) + { + all_indexes.clear(); + } +#endif + auto col_indexes = paraV->get_indexes_col(iat1); + // insert col_indexes into all_indexes to get universal set with no repeat elements + all_indexes.insert(all_indexes.end(), col_indexes.begin(), col_indexes.end()); + std::sort(all_indexes.begin(), all_indexes.end()); + all_indexes.erase(std::unique(all_indexes.begin(), all_indexes.end()), all_indexes.end()); + for (int iw1l = 0; iw1l < all_indexes.size(); iw1l += npol) + { + const int iw1 = all_indexes[iw1l] / npol; + std::vector> nlm; + // nlm is a vector of vectors, but size of outer vector is only 1 here + // If we are calculating force, we need also to store the gradient + // and size of outer vector is then 4 + // inner loop : all projectors (L0,M0) + int L1 = atom1->iw2l[iw1]; + int N1 = atom1->iw2n[iw1]; + int m1 = atom1->iw2m[iw1]; + + // convert m (0,1,...2l) to M (-l, -l+1, ..., l-1, l) + int M1 = (m1 % 2 == 0) ? -m1 / 2 : (m1 + 1) / 2; + + ModuleBase::Vector3 dtau = tau0 - tau1; + intor_->snap(T1, L1, N1, M1, T0, dtau * this->ucell->lat0, false /*cal_deri*/, nlm); + nlm_tot[ad].insert({all_indexes[iw1l], nlm[0]}); + } + } + // 2. calculate D for each pair of atoms + for (int ad1 = 0; ad1 < adjs.adj_num + 1; ++ad1) + { + const int T1 = adjs.ntype[ad1]; + const int I1 = adjs.natom[ad1]; + const int iat1 = ucell->itia2iat(T1, I1); +#ifdef _OPENMP + if (atom_row_list.find(iat1) == atom_row_list.end()) + { + continue; + } +#endif + ModuleBase::Vector3& R_index1 = adjs.box[ad1]; + for (int ad2 = 0; ad2 < adjs.adj_num + 1; ++ad2) + { + const int T2 = adjs.ntype[ad2]; + const int I2 = adjs.natom[ad2]; + const int iat2 = ucell->itia2iat(T2, I2); + ModuleBase::Vector3& R_index2 = adjs.box[ad2]; + ModuleBase::Vector3 R_vector(R_index2[0] - R_index1[0], + R_index2[1] - R_index1[1], + R_index2[2] - R_index1[2]); + hamilt::BaseMatrix* tmp + = this->HR_fixed->find_matrix(iat1, iat2, R_vector[0], R_vector[1], R_vector[2]); + // if not found , skip this pair of atoms + if (tmp != nullptr) + { + this->cal_HR_IJR(iat1, iat2, T0, paraV, nlm_tot[ad1], nlm_tot[ad2], tmp->get_pointer()); + } + } + } + } +#ifdef _OPENMP + } +#endif + + ModuleBase::timer::tick("Nonlocal", "calculate_HR"); +} + +// cal_HR_IJR() +template +void hamilt::Nonlocal>::cal_HR_IJR( + const int& iat1, + const int& iat2, + const int& T0, + const Parallel_Orbitals* paraV, + const std::unordered_map>& nlm1_all, + const std::unordered_map>& nlm2_all, + TR* data_pointer) +{ + + // npol is the number of polarizations, + // 1 for non-magnetic (one Hamiltonian matrix only has spin-up or spin-down), + // 2 for magnetic (one Hamiltonian matrix has both spin-up and spin-down) + const int npol = this->ucell->get_npol(); + // --------------------------------------------- + // calculate the Nonlocal matrix for each pair of orbitals + // --------------------------------------------- + double olm[3] = {0, 0, 0}; + auto row_indexes = paraV->get_indexes_row(iat1); + auto col_indexes = paraV->get_indexes_col(iat2); + // step_trace = 0 for NSPIN=1,2; ={0, 1, local_col, local_col+1} for NSPIN=4 + std::vector step_trace(npol * npol, 0); + for (int is = 0; is < npol; is++) + { + for (int is2 = 0; is2 < npol; is2++) + { + step_trace[is * npol + is2] = col_indexes.size() * is + is2; + } + } + // calculate the local matrix + const TR* tmp_d = nullptr; + for (int iw1l = 0; iw1l < row_indexes.size(); iw1l += npol) + { + const std::vector& nlm1 = nlm1_all.find(row_indexes[iw1l])->second; + for (int iw2l = 0; iw2l < col_indexes.size(); iw2l += npol) + { + const std::vector& nlm2 = nlm2_all.find(col_indexes[iw2l])->second; +#ifdef __DEBUG + assert(nlm1.size() == nlm2.size()); +#endif + for (int is = 0; is < npol * npol; ++is) + { + TR nlm_tmp = TR(0); + for (int no = 0; no < this->ucell->atoms[T0].ncpp.non_zero_count_soc[is]; no++) + { + const int p1 = this->ucell->atoms[T0].ncpp.index1_soc[is][no]; + const int p2 = this->ucell->atoms[T0].ncpp.index2_soc[is][no]; + this->ucell->atoms[T0].ncpp.get_d(is, p1, p2, tmp_d); + nlm_tmp += nlm1[p1] * nlm2[p2] * (*tmp_d); + } + data_pointer[step_trace[is]] += nlm_tmp; + } + data_pointer += npol; + } + data_pointer += (npol - 1) * col_indexes.size(); + } +} + +// set_HR_fixed() +template +void hamilt::Nonlocal>::set_HR_fixed(void* HR_fixed_in) +{ + this->HR_fixed = static_cast*>(HR_fixed_in); + this->allocated = false; +} + +// contributeHR() +template +void hamilt::Nonlocal>::contributeHR() +{ + ModuleBase::TITLE("Nonlocal", "contributeHR"); + ModuleBase::timer::tick("Nonlocal", "contributeHR"); + if (!this->HR_fixed_done) + { + // if this Operator is the first node of the sub_chain, then HR_fixed is nullptr + if (this->HR_fixed == nullptr) + { + this->HR_fixed = new hamilt::HContainer(*this->hR); + this->HR_fixed->set_zero(); + this->allocated = true; + } + if (this->next_sub_op != nullptr) + { + // pass pointer of HR_fixed to the next node + static_cast*>(this->next_sub_op)->set_HR_fixed(this->HR_fixed); + } + // calculate the values in HR_fixed + this->calculate_HR(); + this->HR_fixed_done = true; + } + // last node of sub-chain, add HR_fixed into HR + if (this->next_sub_op == nullptr) + { + this->hR->add(*(this->HR_fixed)); + } + ModuleBase::timer::tick("Nonlocal", "contributeHR"); + return; +} + +#include "nonlocal_force_stress.hpp" + +template class hamilt::Nonlocal>; +template class hamilt::Nonlocal, double>>; +template class hamilt::Nonlocal, std::complex>>; diff --git a/source/source_lcao/module_operator_lcao/nonlocal.h b/source/source_lcao/module_operator_lcao/nonlocal.h new file mode 100644 index 0000000000..9da556b8e3 --- /dev/null +++ b/source/source_lcao/module_operator_lcao/nonlocal.h @@ -0,0 +1,136 @@ +#ifndef NONLOCALNEW_H +#define NONLOCALNEW_H +#include "source_basis/module_ao/parallel_orbitals.h" +#include "source_basis/module_nao/two_center_integrator.h" +#include "source_cell/module_neighbor/sltk_grid_driver.h" +#include "source_cell/unitcell.h" +#include "source_lcao/module_operator_lcao/operator_lcao.h" +#include "source_lcao/module_hcontainer/hcontainer.h" + +#include +#include + +namespace hamilt +{ + +#ifndef __NONLOCALNEWTEMPLATE +#define __NONLOCALNEWTEMPLATE + +/// The Nonlocal class template inherits from class T +/// it is used to calculate the non-local pseudopotential of wavefunction basis +/// Template parameters: +/// - T: base class, it would be OperatorLCAO or OperatorPW +/// - TR: data type of real space Hamiltonian, it would be double or std::complex +template +class Nonlocal : public T +{ +}; + +#endif + +/// Nonlocal class template specialization for OperatorLCAO base class +/// It is used to calculate the non-local pseudopotential matrix in real space and fold it to k-space +/// HR = D_{p1, p2} +/// HK = D_{p1, p2} = \sum_{R} e^{ikR} HR +/// Template parameters: +/// - TK: data type of k-space Hamiltonian +/// - TR: data type of real space Hamiltonian +template +class Nonlocal> : public OperatorLCAO +{ + public: + Nonlocal>(HS_Matrix_K* hsk_in, + const std::vector>& kvec_d_in, + hamilt::HContainer* hR_in, + const UnitCell* ucell_in, + const std::vector& orb_cutoff, + const Grid_Driver* GridD_in, + const TwoCenterIntegrator* intor); + ~Nonlocal>(); + + /** + * @brief contributeHR() is used to calculate the HR matrix + * D_{p1, p2} + */ + virtual void contributeHR() override; + + void cal_force_stress(const bool cal_force, + const bool cal_stress, + const HContainer* dmR, + ModuleBase::matrix& force, + ModuleBase::matrix& stress); + + virtual void set_HR_fixed(void*) override; + + private: + const UnitCell* ucell = nullptr; + + std::vector orb_cutoff_; + + hamilt::HContainer* HR_fixed = nullptr; + + // the following variable is introduced temporarily during LCAO refactoring + const TwoCenterIntegrator* intor_ = nullptr; + + bool allocated = false; + + bool HR_fixed_done = false; + + /** + * @brief initialize HR, search the nearest neighbor atoms + * HContainer is used to store the non-local pseudopotential matrix with specific atom-pairs + * the size of HR will be fixed after initialization + */ + void initialize_HR(const Grid_Driver* GridD_in); + + /** + * @brief calculate the non-local pseudopotential matrix with specific atom-pairs + * nearest neighbor atoms don't need to be calculated again + * loop the atom-pairs in HR and calculate the non-local pseudopotential matrix + */ + void calculate_HR(); + + /** + * @brief calculate the HR local matrix of atom pair + */ + void cal_HR_IJR(const int& iat1, + const int& iat2, + const int& T0, + const Parallel_Orbitals* paraV, + const std::unordered_map>& nlm1_all, + const std::unordered_map>& nlm2_all, + TR* data_pointer); + + const Grid_Driver* gridD = nullptr; + + /** + * @brief calculate the atomic Force of atom pair + */ + void cal_force_IJR(const int& iat1, + const int& iat2, + const int& T0, + const Parallel_Orbitals* paraV, + const std::unordered_map>& nlm1_all, + const std::unordered_map>& nlm2_all, + const hamilt::BaseMatrix* dmR_pointer, + double* force1, + double* force2); + /** + * @brief calculate the Stress of atom pair + */ + void cal_stress_IJR(const int& iat1, + const int& iat2, + const int& T0, + const Parallel_Orbitals* paraV, + const std::unordered_map>& nlm1_all, + const std::unordered_map>& nlm2_all, + const hamilt::BaseMatrix* dmR_pointer, + const ModuleBase::Vector3& dis1, + const ModuleBase::Vector3& dis2, + double* stress); + + std::vector adjs_all; +}; + +} // namespace hamilt +#endif diff --git a/source/source_lcao/module_operator_lcao/nonlocal_force_stress.hpp b/source/source_lcao/module_operator_lcao/nonlocal_force_stress.hpp index 284842ae4d..55c9ec6b42 100644 --- a/source/source_lcao/module_operator_lcao/nonlocal_force_stress.hpp +++ b/source/source_lcao/module_operator_lcao/nonlocal_force_stress.hpp @@ -1,5 +1,6 @@ #pragma once -#include "nonlocal_new.h" +#include "nonlocal.h" +#include "operator_force_stress_utils.h" #include "source_base/parallel_reduce.h" #include "source_base/timer.h" @@ -7,16 +8,16 @@ namespace hamilt { template -void NonlocalNew>::cal_force_stress(const bool cal_force, +void Nonlocal>::cal_force_stress(const bool cal_force, const bool cal_stress, const HContainer* dmR, ModuleBase::matrix& force, ModuleBase::matrix& stress) { - ModuleBase::TITLE("NonlocalNew", "cal_force_stress"); + ModuleBase::TITLE("Nonlocal", "cal_force_stress"); // begin the calculation of force and stress - ModuleBase::timer::tick("NonlocalNew", "cal_force_stress"); + ModuleBase::timer::tick("Nonlocal", "cal_force_stress"); const Parallel_Orbitals* paraV = dmR->get_paraV(); const int npol = this->ucell->get_npol(); @@ -86,15 +87,10 @@ void NonlocalNew>::cal_force_stress(const bool cal_force, // If we are calculating force, we need also to store the gradient // and size of outer vector is then 4 // inner loop : all projectors (L0,M0) - int L1 = atom1->iw2l[iw1]; - int N1 = atom1->iw2n[iw1]; - int m1 = atom1->iw2m[iw1]; - - // convert m (0,1,...2l) to M (-l, -l+1, ..., l-1, l) - int M1 = (m1 % 2 == 0) ? -m1 / 2 : (m1 + 1) / 2; + auto qn1 = OperatorForceStress::get_orbital_qn(*atom1, iw1); ModuleBase::Vector3 dtau = tau0 - tau1; - intor_->snap(T1, L1, N1, M1, T0, dtau * this->ucell->lat0, true /*cal_deri*/, nlm); + intor_->snap(T1, qn1.L, qn1.N, qn1.M, T0, dtau * this->ucell->lat0, true /*cal_deri*/, nlm); // select the elements of nlm with target_L const int length = nlm[0].size(); std::vector nlm_target(length * 4); @@ -219,11 +215,11 @@ void NonlocalNew>::cal_force_stress(const bool cal_force, stress.c[3] = stress.c[1]; // stress(1,0) } - ModuleBase::timer::tick("NonlocalNew", "cal_force_stress"); + ModuleBase::timer::tick("Nonlocal", "cal_force_stress"); } template <> -void NonlocalNew, std::complex>>::cal_force_IJR(const int& iat1, +void Nonlocal, std::complex>>::cal_force_IJR(const int& iat1, const int& iat2, const int& T0, const Parallel_Orbitals* paraV, @@ -243,12 +239,8 @@ void NonlocalNew, std::complex>>::cal_ auto row_indexes = paraV->get_indexes_row(iat1); auto col_indexes = paraV->get_indexes_col(iat2); // step_trace = 0 for NSPIN=2; ={0, 1, local_col, local_col+1} for NSPIN=4 - std::vector step_trace(npol * npol, 0); - if (npol == 2) { - step_trace[1] = 1; - step_trace[2] = col_indexes.size(); - step_trace[3] = col_indexes.size() + 1; - } + std::vector step_trace; + OperatorForceStress::setup_step_trace(npol, col_indexes.size(), step_trace); // calculate the local matrix const std::complex* tmp_d = nullptr; const std::complex* dm_pointer = dmR_pointer->get_pointer(); @@ -292,7 +284,7 @@ void NonlocalNew, std::complex>>::cal_ } template <> -void NonlocalNew, std::complex>>::cal_stress_IJR(const int& iat1, +void Nonlocal, std::complex>>::cal_stress_IJR(const int& iat1, const int& iat2, const int& T0, const Parallel_Orbitals* paraV, @@ -314,12 +306,8 @@ void NonlocalNew, std::complex>>::cal_ auto row_indexes = paraV->get_indexes_row(iat1); auto col_indexes = paraV->get_indexes_col(iat2); // step_trace = 0 for NSPIN=2; ={0, 1, local_col, local_col+1} for NSPIN=4 - std::vector step_trace(npol2, 0); - if (npol == 2) { - step_trace[1] = 1; - step_trace[2] = col_indexes.size(); - step_trace[3] = col_indexes.size() + 1; - } + std::vector step_trace; + OperatorForceStress::setup_step_trace(npol, col_indexes.size(), step_trace); // calculate the local matrix const std::complex* tmp_d = nullptr; const std::complex* dm_pointer = dmR_pointer->get_pointer(); @@ -364,7 +352,7 @@ void NonlocalNew, std::complex>>::cal_ } template -void NonlocalNew>::cal_force_IJR(const int& iat1, +void Nonlocal>::cal_force_IJR(const int& iat1, const int& iat2, const int& T0, const Parallel_Orbitals* paraV, @@ -414,7 +402,7 @@ void NonlocalNew>::cal_force_IJR(const int& iat1, } template -void NonlocalNew>::cal_stress_IJR(const int& iat1, +void Nonlocal>::cal_stress_IJR(const int& iat1, const int& iat2, const int& T0, const Parallel_Orbitals* paraV, diff --git a/source/source_lcao/module_operator_lcao/nonlocal_new.cpp b/source/source_lcao/module_operator_lcao/nonlocal_new.cpp deleted file mode 100644 index c4161114db..0000000000 --- a/source/source_lcao/module_operator_lcao/nonlocal_new.cpp +++ /dev/null @@ -1,330 +0,0 @@ -#include "nonlocal_new.h" - -#include "source_base/timer.h" -#include "source_base/tool_title.h" -#include "source_cell/module_neighbor/sltk_grid_driver.h" -#include "source_lcao/module_operator_lcao/operator_lcao.h" -#include "source_lcao/module_hcontainer/hcontainer_funcs.h" -#ifdef _OPENMP -#include -#endif - -template -hamilt::NonlocalNew>::NonlocalNew( - HS_Matrix_K* hsk_in, - const std::vector>& kvec_d_in, - hamilt::HContainer* hR_in, - const UnitCell* ucell_in, - const std::vector& orb_cutoff, - const Grid_Driver* GridD_in, - const TwoCenterIntegrator* intor) - : hamilt::OperatorLCAO(hsk_in, kvec_d_in, hR_in), orb_cutoff_(orb_cutoff), intor_(intor) -{ - this->cal_type = calculation_type::lcao_fixed; - this->ucell = ucell_in; - this->gridD = GridD_in; -#ifdef __DEBUG - assert(this->ucell != nullptr); -#endif - // initialize HR to allocate sparse Nonlocal matrix memory - if(hR_in != nullptr) - { - this->initialize_HR(GridD_in); - } -} - -// destructor -template -hamilt::NonlocalNew>::~NonlocalNew() -{ - if (this->allocated) - { - delete this->HR_fixed; - } -} - -// initialize_HR() -template -void hamilt::NonlocalNew>::initialize_HR(const Grid_Driver* GridD) -{ - ModuleBase::TITLE("NonlocalNew", "initialize_HR"); - ModuleBase::timer::tick("NonlocalNew", "initialize_HR"); - - auto* paraV = this->hR->get_paraV();// get parallel orbitals from HR - // TODO: if paraV is nullptr, AtomPair can not use paraV for constructor, I will repair it in the future. - - this->adjs_all.clear(); - this->adjs_all.reserve(this->ucell->nat); - for (int iat0 = 0; iat0 < ucell->nat; iat0++) - { - auto tau0 = ucell->get_tau(iat0); - int T0, I0; - ucell->iat2iait(iat0, &I0, &T0); - AdjacentAtomInfo adjs; - GridD->Find_atom(*ucell, tau0, T0, I0, &adjs); - std::vector is_adj(adjs.adj_num + 1, false); - for (int ad1 = 0; ad1 < adjs.adj_num + 1; ++ad1) - { - const int T1 = adjs.ntype[ad1]; - const int I1 = adjs.natom[ad1]; - const int iat1 = ucell->itia2iat(T1, I1); - const ModuleBase::Vector3& tau1 = adjs.adjacent_tau[ad1]; - const ModuleBase::Vector3& R_index1 = adjs.box[ad1]; - // choose the real adjacent atoms - // Note: the distance of atoms should less than the cutoff radius, - // When equal, the theoretical value of matrix element is zero, - // but the calculated value is not zero due to the numerical error, which would lead to result changes. - if (this->ucell->cal_dtau(iat0, iat1, R_index1).norm() * this->ucell->lat0 - < orb_cutoff_[T1] + this->ucell->infoNL.Beta[T0].get_rcut_max()) - { - is_adj[ad1] = true; - } - } - filter_adjs(is_adj, adjs); - this->adjs_all.push_back(adjs); - for (int ad1 = 0; ad1 < adjs.adj_num + 1; ++ad1) - { - const int T1 = adjs.ntype[ad1]; - const int I1 = adjs.natom[ad1]; - const int iat1 = ucell->itia2iat(T1, I1); - const ModuleBase::Vector3& R_index1 = adjs.box[ad1]; - for (int ad2 = 0; ad2 < adjs.adj_num + 1; ++ad2) - { - const int T2 = adjs.ntype[ad2]; - const int I2 = adjs.natom[ad2]; - const int iat2 = ucell->itia2iat(T2, I2); - ModuleBase::Vector3& R_index2 = adjs.box[ad2]; - if (paraV->get_col_size(iat2) <= 0 || paraV->get_row_size(iat1) <= 0) - { - continue; - } - hamilt::AtomPair tmp(iat1, - iat2, - R_index2.x - R_index1.x, - R_index2.y - R_index1.y, - R_index2.z - R_index1.z, - paraV); - this->hR->insert_pair(tmp); - } - } - } - // allocate the memory of BaseMatrix in HR, and set the new values to zero - this->hR->allocate(nullptr, true); - - ModuleBase::timer::tick("NonlocalNew", "initialize_HR"); -} - -template -void hamilt::NonlocalNew>::calculate_HR() -{ - ModuleBase::TITLE("NonlocalNew", "calculate_HR"); - ModuleBase::timer::tick("NonlocalNew", "calculate_HR"); - - const Parallel_Orbitals* paraV = this->HR_fixed->get_atom_pair(0).get_paraV(); - const int npol = this->ucell->get_npol(); - // 1. calculate for each pair of atoms -#ifdef _OPENMP -#pragma omp parallel - { - std::unordered_set atom_row_list; -#pragma omp for - for (int iat0 = 0; iat0 < this->ucell->nat; iat0++) - { - atom_row_list.insert(iat0); - } -#endif - for (int iat0 = 0; iat0 < this->ucell->nat; iat0++) - { - auto tau0 = ucell->get_tau(iat0); - int T0, I0; - ucell->iat2iait(iat0, &I0, &T0); - AdjacentAtomInfo& adjs = this->adjs_all[iat0]; - - std::vector>> nlm_tot; - nlm_tot.resize(adjs.adj_num + 1); - - for (int ad = 0; ad < adjs.adj_num + 1; ++ad) - { - const int T1 = adjs.ntype[ad]; - const int I1 = adjs.natom[ad]; - const int iat1 = ucell->itia2iat(T1, I1); - const ModuleBase::Vector3& tau1 = adjs.adjacent_tau[ad]; - const Atom* atom1 = &ucell->atoms[T1]; - - auto all_indexes = paraV->get_indexes_row(iat1); -#ifdef _OPENMP - if (atom_row_list.find(iat1) == atom_row_list.end()) - { - all_indexes.clear(); - } -#endif - auto col_indexes = paraV->get_indexes_col(iat1); - // insert col_indexes into all_indexes to get universal set with no repeat elements - all_indexes.insert(all_indexes.end(), col_indexes.begin(), col_indexes.end()); - std::sort(all_indexes.begin(), all_indexes.end()); - all_indexes.erase(std::unique(all_indexes.begin(), all_indexes.end()), all_indexes.end()); - for (int iw1l = 0; iw1l < all_indexes.size(); iw1l += npol) - { - const int iw1 = all_indexes[iw1l] / npol; - std::vector> nlm; - // nlm is a vector of vectors, but size of outer vector is only 1 here - // If we are calculating force, we need also to store the gradient - // and size of outer vector is then 4 - // inner loop : all projectors (L0,M0) - int L1 = atom1->iw2l[iw1]; - int N1 = atom1->iw2n[iw1]; - int m1 = atom1->iw2m[iw1]; - - // convert m (0,1,...2l) to M (-l, -l+1, ..., l-1, l) - int M1 = (m1 % 2 == 0) ? -m1 / 2 : (m1 + 1) / 2; - - ModuleBase::Vector3 dtau = tau0 - tau1; - intor_->snap(T1, L1, N1, M1, T0, dtau * this->ucell->lat0, false /*cal_deri*/, nlm); - nlm_tot[ad].insert({all_indexes[iw1l], nlm[0]}); - } - } - // 2. calculate D for each pair of atoms - for (int ad1 = 0; ad1 < adjs.adj_num + 1; ++ad1) - { - const int T1 = adjs.ntype[ad1]; - const int I1 = adjs.natom[ad1]; - const int iat1 = ucell->itia2iat(T1, I1); -#ifdef _OPENMP - if (atom_row_list.find(iat1) == atom_row_list.end()) - { - continue; - } -#endif - ModuleBase::Vector3& R_index1 = adjs.box[ad1]; - for (int ad2 = 0; ad2 < adjs.adj_num + 1; ++ad2) - { - const int T2 = adjs.ntype[ad2]; - const int I2 = adjs.natom[ad2]; - const int iat2 = ucell->itia2iat(T2, I2); - ModuleBase::Vector3& R_index2 = adjs.box[ad2]; - ModuleBase::Vector3 R_vector(R_index2[0] - R_index1[0], - R_index2[1] - R_index1[1], - R_index2[2] - R_index1[2]); - hamilt::BaseMatrix* tmp - = this->HR_fixed->find_matrix(iat1, iat2, R_vector[0], R_vector[1], R_vector[2]); - // if not found , skip this pair of atoms - if (tmp != nullptr) - { - this->cal_HR_IJR(iat1, iat2, T0, paraV, nlm_tot[ad1], nlm_tot[ad2], tmp->get_pointer()); - } - } - } - } -#ifdef _OPENMP - } -#endif - - ModuleBase::timer::tick("NonlocalNew", "calculate_HR"); -} - -// cal_HR_IJR() -template -void hamilt::NonlocalNew>::cal_HR_IJR( - const int& iat1, - const int& iat2, - const int& T0, - const Parallel_Orbitals* paraV, - const std::unordered_map>& nlm1_all, - const std::unordered_map>& nlm2_all, - TR* data_pointer) -{ - - // npol is the number of polarizations, - // 1 for non-magnetic (one Hamiltonian matrix only has spin-up or spin-down), - // 2 for magnetic (one Hamiltonian matrix has both spin-up and spin-down) - const int npol = this->ucell->get_npol(); - // --------------------------------------------- - // calculate the Nonlocal matrix for each pair of orbitals - // --------------------------------------------- - double olm[3] = {0, 0, 0}; - auto row_indexes = paraV->get_indexes_row(iat1); - auto col_indexes = paraV->get_indexes_col(iat2); - // step_trace = 0 for NSPIN=1,2; ={0, 1, local_col, local_col+1} for NSPIN=4 - std::vector step_trace(npol * npol, 0); - for (int is = 0; is < npol; is++) - { - for (int is2 = 0; is2 < npol; is2++) - { - step_trace[is * npol + is2] = col_indexes.size() * is + is2; - } - } - // calculate the local matrix - const TR* tmp_d = nullptr; - for (int iw1l = 0; iw1l < row_indexes.size(); iw1l += npol) - { - const std::vector& nlm1 = nlm1_all.find(row_indexes[iw1l])->second; - for (int iw2l = 0; iw2l < col_indexes.size(); iw2l += npol) - { - const std::vector& nlm2 = nlm2_all.find(col_indexes[iw2l])->second; -#ifdef __DEBUG - assert(nlm1.size() == nlm2.size()); -#endif - for (int is = 0; is < npol * npol; ++is) - { - TR nlm_tmp = TR(0); - for (int no = 0; no < this->ucell->atoms[T0].ncpp.non_zero_count_soc[is]; no++) - { - const int p1 = this->ucell->atoms[T0].ncpp.index1_soc[is][no]; - const int p2 = this->ucell->atoms[T0].ncpp.index2_soc[is][no]; - this->ucell->atoms[T0].ncpp.get_d(is, p1, p2, tmp_d); - nlm_tmp += nlm1[p1] * nlm2[p2] * (*tmp_d); - } - data_pointer[step_trace[is]] += nlm_tmp; - } - data_pointer += npol; - } - data_pointer += (npol - 1) * col_indexes.size(); - } -} - -// set_HR_fixed() -template -void hamilt::NonlocalNew>::set_HR_fixed(void* HR_fixed_in) -{ - this->HR_fixed = static_cast*>(HR_fixed_in); - this->allocated = false; -} - -// contributeHR() -template -void hamilt::NonlocalNew>::contributeHR() -{ - ModuleBase::TITLE("NonlocalNew", "contributeHR"); - ModuleBase::timer::tick("NonlocalNew", "contributeHR"); - if (!this->HR_fixed_done) - { - // if this Operator is the first node of the sub_chain, then HR_fixed is nullptr - if (this->HR_fixed == nullptr) - { - this->HR_fixed = new hamilt::HContainer(*this->hR); - this->HR_fixed->set_zero(); - this->allocated = true; - } - if (this->next_sub_op != nullptr) - { - // pass pointer of HR_fixed to the next node - static_cast*>(this->next_sub_op)->set_HR_fixed(this->HR_fixed); - } - // calculate the values in HR_fixed - this->calculate_HR(); - this->HR_fixed_done = true; - } - // last node of sub-chain, add HR_fixed into HR - if (this->next_sub_op == nullptr) - { - this->hR->add(*(this->HR_fixed)); - } - ModuleBase::timer::tick("NonlocalNew", "contributeHR"); - return; -} - -#include "nonlocal_force_stress.hpp" - -template class hamilt::NonlocalNew>; -template class hamilt::NonlocalNew, double>>; -template class hamilt::NonlocalNew, std::complex>>; diff --git a/source/source_lcao/module_operator_lcao/nonlocal_new.h b/source/source_lcao/module_operator_lcao/nonlocal_new.h deleted file mode 100644 index 9bc19aa348..0000000000 --- a/source/source_lcao/module_operator_lcao/nonlocal_new.h +++ /dev/null @@ -1,136 +0,0 @@ -#ifndef NONLOCALNEW_H -#define NONLOCALNEW_H -#include "source_basis/module_ao/parallel_orbitals.h" -#include "source_basis/module_nao/two_center_integrator.h" -#include "source_cell/module_neighbor/sltk_grid_driver.h" -#include "source_cell/unitcell.h" -#include "source_lcao/module_operator_lcao/operator_lcao.h" -#include "source_lcao/module_hcontainer/hcontainer.h" - -#include -#include - -namespace hamilt -{ - -#ifndef __NONLOCALNEWTEMPLATE -#define __NONLOCALNEWTEMPLATE - -/// The NonlocalNew class template inherits from class T -/// it is used to calculate the non-local pseudopotential of wavefunction basis -/// Template parameters: -/// - T: base class, it would be OperatorLCAO or OperatorPW -/// - TR: data type of real space Hamiltonian, it would be double or std::complex -template -class NonlocalNew : public T -{ -}; - -#endif - -/// NonlocalNew class template specialization for OperatorLCAO base class -/// It is used to calculate the non-local pseudopotential matrix in real space and fold it to k-space -/// HR = D_{p1, p2} -/// HK = D_{p1, p2} = \sum_{R} e^{ikR} HR -/// Template parameters: -/// - TK: data type of k-space Hamiltonian -/// - TR: data type of real space Hamiltonian -template -class NonlocalNew> : public OperatorLCAO -{ - public: - NonlocalNew>(HS_Matrix_K* hsk_in, - const std::vector>& kvec_d_in, - hamilt::HContainer* hR_in, - const UnitCell* ucell_in, - const std::vector& orb_cutoff, - const Grid_Driver* GridD_in, - const TwoCenterIntegrator* intor); - ~NonlocalNew>(); - - /** - * @brief contributeHR() is used to calculate the HR matrix - * D_{p1, p2} - */ - virtual void contributeHR() override; - - void cal_force_stress(const bool cal_force, - const bool cal_stress, - const HContainer* dmR, - ModuleBase::matrix& force, - ModuleBase::matrix& stress); - - virtual void set_HR_fixed(void*) override; - - private: - const UnitCell* ucell = nullptr; - - std::vector orb_cutoff_; - - hamilt::HContainer* HR_fixed = nullptr; - - // the following variable is introduced temporarily during LCAO refactoring - const TwoCenterIntegrator* intor_ = nullptr; - - bool allocated = false; - - bool HR_fixed_done = false; - - /** - * @brief initialize HR, search the nearest neighbor atoms - * HContainer is used to store the non-local pseudopotential matrix with specific atom-pairs - * the size of HR will be fixed after initialization - */ - void initialize_HR(const Grid_Driver* GridD_in); - - /** - * @brief calculate the non-local pseudopotential matrix with specific atom-pairs - * nearest neighbor atoms don't need to be calculated again - * loop the atom-pairs in HR and calculate the non-local pseudopotential matrix - */ - void calculate_HR(); - - /** - * @brief calculate the HR local matrix of atom pair - */ - void cal_HR_IJR(const int& iat1, - const int& iat2, - const int& T0, - const Parallel_Orbitals* paraV, - const std::unordered_map>& nlm1_all, - const std::unordered_map>& nlm2_all, - TR* data_pointer); - - const Grid_Driver* gridD = nullptr; - - /** - * @brief calculate the atomic Force of atom pair - */ - void cal_force_IJR(const int& iat1, - const int& iat2, - const int& T0, - const Parallel_Orbitals* paraV, - const std::unordered_map>& nlm1_all, - const std::unordered_map>& nlm2_all, - const hamilt::BaseMatrix* dmR_pointer, - double* force1, - double* force2); - /** - * @brief calculate the Stress of atom pair - */ - void cal_stress_IJR(const int& iat1, - const int& iat2, - const int& T0, - const Parallel_Orbitals* paraV, - const std::unordered_map>& nlm1_all, - const std::unordered_map>& nlm2_all, - const hamilt::BaseMatrix* dmR_pointer, - const ModuleBase::Vector3& dis1, - const ModuleBase::Vector3& dis2, - double* stress); - - std::vector adjs_all; -}; - -} // namespace hamilt -#endif diff --git a/source/source_lcao/module_operator_lcao/op_dftu_lcao.cpp b/source/source_lcao/module_operator_lcao/op_dftu_lcao.cpp index 9fc4418bb2..ab3d482f67 100644 --- a/source/source_lcao/module_operator_lcao/op_dftu_lcao.cpp +++ b/source/source_lcao/module_operator_lcao/op_dftu_lcao.cpp @@ -2,7 +2,6 @@ #include "source_base/timer.h" #include "source_base/tool_title.h" #include "source_lcao/module_dftu/dftu.h" -#include "source_pw/module_pwdft/global.h" namespace hamilt { @@ -27,7 +26,9 @@ void OperatorDFTU>::contributeHk(int ik) ModuleBase::timer::tick("OperatorDFTU", "contributeHk"); // Effective potential of DFT+U is added to total Hamiltonian here; Quxin adds on 20201029 std::vector eff_pot(this->hsk->get_pv()->nloc); - GlobalC::dftu.cal_eff_pot_mat_real(ik, &eff_pot[0], isk, this->hsk->get_sk()); + + this->dftu->cal_eff_pot_mat_real(ik, &eff_pot[0], isk, this->hsk->get_sk()); + double* hk = this->hsk->get_hk(); for (int irc = 0; irc < this->hsk->get_pv()->nloc; irc++) @@ -43,9 +44,12 @@ void OperatorDFTU, double>>::contributeHk(int { ModuleBase::TITLE("OperatorDFTU", "contributeHk"); ModuleBase::timer::tick("OperatorDFTU", "contributeHk"); + // Effective potential of DFT+U is added to total Hamiltonian here; Quxin adds on 20201029 std::vector> eff_pot(this->hsk->get_pv()->nloc); - GlobalC::dftu.cal_eff_pot_mat_complex(ik, &eff_pot[0], isk, this->hsk->get_sk()); + + this->dftu->cal_eff_pot_mat_complex(ik, &eff_pot[0], isk, this->hsk->get_sk()); + std::complex* hk = this->hsk->get_hk(); for (int irc = 0; irc < this->hsk->get_pv()->nloc; irc++) @@ -63,7 +67,8 @@ void OperatorDFTU, std::complex>>::con ModuleBase::timer::tick("OperatorDFTU", "contributeHk"); // Effective potential of DFT+U is added to total Hamiltonian here; Quxin adds on 20201029 std::vector> eff_pot(this->hsk->get_pv()->nloc); - GlobalC::dftu.cal_eff_pot_mat_complex(ik, &eff_pot[0], isk, this->hsk->get_sk()); + + this->dftu->cal_eff_pot_mat_complex(ik, &eff_pot[0], isk, this->hsk->get_sk()); std::complex* hk = this->hsk->get_hk(); for (int irc = 0; irc < this->hsk->get_pv()->nloc; irc++) @@ -74,4 +79,4 @@ void OperatorDFTU, std::complex>>::con ModuleBase::timer::tick("OperatorDFTU", "contributeHk"); } -} \ No newline at end of file +} diff --git a/source/source_lcao/module_operator_lcao/op_dftu_lcao.h b/source/source_lcao/module_operator_lcao/op_dftu_lcao.h index e15f4ae9dd..a8b275f045 100644 --- a/source/source_lcao/module_operator_lcao/op_dftu_lcao.h +++ b/source/source_lcao/module_operator_lcao/op_dftu_lcao.h @@ -1,7 +1,9 @@ #ifndef OPDFTULCAO_H #define OPDFTULCAO_H + #include "source_base/timer.h" #include "operator_lcao.h" +#include "source_lcao/module_dftu/dftu.h" // mohan add 20251107 namespace hamilt { @@ -22,11 +24,13 @@ class OperatorDFTU> : public OperatorLCAO public: OperatorDFTU>(HS_Matrix_K* hsk_in, const std::vector>& kvec_d_in, - hamilt::HContainer* hR_in, - const std::vector& isk_in) + hamilt::HContainer* hR_in, + Plus_U* dftu_in, // mohan add 2025-11-05 + const std::vector& isk_in) : isk(isk_in), OperatorLCAO(hsk_in, kvec_d_in, hR_in) { this->cal_type = calculation_type::lcao_dftu; + this->dftu = dftu_in; // mohan add 2025-11-07 } virtual void contributeHR() override; @@ -35,9 +39,11 @@ class OperatorDFTU> : public OperatorLCAO private: + Plus_U *dftu; // mohan add 20251107 + bool HR_fixed_done = false; const std::vector& isk; }; } // namespace hamilt -#endif \ No newline at end of file +#endif diff --git a/source/source_lcao/module_operator_lcao/op_exx_lcao.hpp b/source/source_lcao/module_operator_lcao/op_exx_lcao.hpp index 80f0c422a2..21cf55176b 100644 --- a/source/source_lcao/module_operator_lcao/op_exx_lcao.hpp +++ b/source/source_lcao/module_operator_lcao/op_exx_lcao.hpp @@ -3,11 +3,13 @@ #ifdef __EXX #include "op_exx_lcao.h" +#include "source_base/parallel_reduce.h" #include "source_io/module_parameter/parameter.h" #include "source_lcao/module_ri/RI_2D_Comm.h" -#include "source_pw/module_pwdft/global.h" #include "source_hamilt/module_xc/xc_functional.h" -#include "source_io/restart_exx_csr.h" +#include "source_io/module_restart/restart_exx_csr.h" +#include "source_lcao/module_rt/td_info.h" +#include "source_io/module_restart/restart.h" namespace hamilt { @@ -243,10 +245,9 @@ OperatorEXX>::OperatorEXX(HS_Matrix_K* hsk_in, if (!ifs) { all_exist = 0; break; } } // Add MPI communication to synchronize all_exist across processes -#ifdef __MPI - // don't read in any files if one of the processes doesn't have it - MPI_Allreduce(MPI_IN_PLACE, &all_exist, 1, MPI_INT, MPI_MIN, MPI_COMM_WORLD); -#endif + #ifdef __MPI + Parallel_Reduce::reduce_min(all_exist); + #endif if (all_exist) { // Read HexxR in CSR format @@ -263,9 +264,9 @@ OperatorEXX>::OperatorEXX(HS_Matrix_K* hsk_in, const std::string restart_HR_path_cereal = GlobalC::restart.folder + "HexxR_" + std::to_string(PARAM.globalv.myrank); std::ifstream ifs(restart_HR_path_cereal, std::ios::binary); int all_exist_cereal = ifs ? 1 : 0; -#ifdef __MPI - MPI_Allreduce(MPI_IN_PLACE, &all_exist_cereal, 1, MPI_INT, MPI_MIN, MPI_COMM_WORLD); -#endif + #ifdef __MPI + Parallel_Reduce::reduce_min(all_exist_cereal); + #endif if (!all_exist_cereal) { //no HexxR file in CSR or binary format @@ -339,7 +340,7 @@ void OperatorEXX>::contributeHR() template void OperatorEXX>::contributeHk(int ik) { - ModuleBase::TITLE("OperatorEXX", "constributeHR"); + ModuleBase::TITLE("OperatorEXX", "constributeHk"); // Peize Lin add 2016-12-03 if (PARAM.inp.calculation != "nscf" && this->two_level_step != nullptr && *this->two_level_step == 0 && !this->restart) { return; } //in the non-exx loop, do nothing @@ -369,29 +370,43 @@ void OperatorEXX>::contributeHk(int ik) } } // cal H(k) from H(R) normally - - if (GlobalC::exx_info.info_ri.real_number) { - RI_2D_Comm::add_Hexx( - ucell, - this->kv, - ik, - GlobalC::exx_info.info_global.hybrid_alpha, - *this->Hexxd, - *this->hR->get_paraV(), - this->hsk->get_hk()); - } else { - RI_2D_Comm::add_Hexx( + if(PARAM.inp.esolver_type == "tddft" && PARAM.inp.td_stype == 2) + { + RI_2D_Comm::add_Hexx_td( ucell, this->kv, ik, GlobalC::exx_info.info_global.hybrid_alpha, *this->Hexxc, *this->hR->get_paraV(), + TD_info::td_vel_op->cart_At, this->hsk->get_hk()); -} + } + else + { + if (GlobalC::exx_info.info_ri.real_number) { + RI_2D_Comm::add_Hexx( + ucell, + this->kv, + ik, + GlobalC::exx_info.info_global.hybrid_alpha, + *this->Hexxd, + *this->hR->get_paraV(), + this->hsk->get_hk()); + } else { + RI_2D_Comm::add_Hexx( + ucell, + this->kv, + ik, + GlobalC::exx_info.info_global.hybrid_alpha, + *this->Hexxc, + *this->hR->get_paraV(), + this->hsk->get_hk()); + } + } } } } // namespace hamilt #endif // __EXX -#endif // OPEXXLCAO_HPP \ No newline at end of file +#endif // OPEXXLCAO_HPP diff --git a/source/source_lcao/module_operator_lcao/operator_force_stress_utils.cpp b/source/source_lcao/module_operator_lcao/operator_force_stress_utils.cpp new file mode 100644 index 0000000000..c485727868 --- /dev/null +++ b/source/source_lcao/module_operator_lcao/operator_force_stress_utils.cpp @@ -0,0 +1,43 @@ +#include "operator_force_stress_utils.h" +#include "source_base/parallel_reduce.h" + +namespace OperatorForceStress { + +void finalize_force_stress( + bool cal_force, + bool cal_stress, + const UnitCell* ucell, + const std::vector& stress_tmp, + ModuleBase::matrix& force, + ModuleBase::matrix& stress, + double force_factor, + double stress_factor) +{ + if (cal_force) + { +#ifdef __MPI + Parallel_Reduce::reduce_all(force.c, force.nr * force.nc); +#endif + // Apply factor of 2 for Hermitian matrix + for (int i = 0; i < force.nr * force.nc; i++) + { + force.c[i] *= force_factor; + } + } + + if (cal_stress) + { +#ifdef __MPI + Parallel_Reduce::reduce_all(const_cast(stress_tmp.data()), 6); +#endif + const double weight = ucell->lat0 / ucell->omega; + for (int i = 0; i < 6; i++) + { + stress.c[i] = stress_tmp[i] * weight * stress_factor; + } + // Rearrange to 3x3 matrix format + rearrange_stress_matrix(stress); + } +} + +} // namespace OperatorForceStress diff --git a/source/source_lcao/module_operator_lcao/operator_force_stress_utils.h b/source/source_lcao/module_operator_lcao/operator_force_stress_utils.h new file mode 100644 index 0000000000..26ec0245fb --- /dev/null +++ b/source/source_lcao/module_operator_lcao/operator_force_stress_utils.h @@ -0,0 +1,124 @@ +#ifndef OPERATOR_FORCE_STRESS_UTILS_H +#define OPERATOR_FORCE_STRESS_UTILS_H + +#include "source_base/matrix.h" +#include "source_cell/unitcell.h" +#include + +namespace OperatorForceStress { + +/** + * @brief Setup step_trace array for handling npol (spin polarization) + * + * For npol=1 (non-spin-polarized): step_trace = {0} + * For npol=2 (spin-polarized): step_trace = {0, 1, col_size, col_size+1} + * + * @param npol Number of spin polarizations (1 or 2) + * @param col_size Number of columns in the density matrix block + * @param step_trace Output vector to store step trace values + */ +inline void setup_step_trace(int npol, int col_size, std::vector& step_trace) +{ + step_trace.resize(npol * npol, 0); + if (npol == 2) + { + step_trace[1] = 1; + step_trace[2] = col_size; + step_trace[3] = col_size + 1; + } +} + +/** + * @brief Structure to hold orbital quantum numbers + */ +struct OrbitalQuantumNumbers +{ + int L; ///< Angular momentum quantum number + int N; ///< Principal quantum number + int m; ///< Magnetic quantum number (internal indexing) + int M; ///< Magnetic quantum number (standard convention) +}; + +/** + * @brief Extract orbital quantum numbers from atom and orbital index + * + * @param atom Atom object containing orbital information + * @param iw Orbital index within the atom + * @return OrbitalQuantumNumbers structure with L, N, m, M values + */ +inline OrbitalQuantumNumbers get_orbital_qn(const Atom& atom, int iw) +{ + OrbitalQuantumNumbers qn; + qn.L = atom.iw2l[iw]; + qn.N = atom.iw2n[iw]; + qn.m = atom.iw2m[iw]; + qn.M = (qn.m % 2 == 0) ? -qn.m / 2 : (qn.m + 1) / 2; + return qn; +} + +/** + * @brief Helper function to extract real part from complex or real values + * + * Template specialization handles both std::complex and double types + */ +template +inline double get_real_part(const T& val) +{ + return val.real(); +} + +template <> +inline double get_real_part(const double& val) +{ + return val; +} + +/** + * @brief Rearrange stress from 6-component vector to 3x3 matrix format + * + * Input format: [xx, xy, xz, yy, yz, zz] + * Output format: 3x3 matrix with proper indexing + * + * @param stress Matrix to rearrange (must be at least 3x3) + */ +inline void rearrange_stress_matrix(ModuleBase::matrix& stress) +{ + stress.c[8] = stress.c[5]; // stress(2,2) + stress.c[7] = stress.c[4]; // stress(2,1) + stress.c[6] = stress.c[2]; // stress(2,0) + stress.c[5] = stress.c[4]; // stress(1,2) + stress.c[4] = stress.c[3]; // stress(1,1) + stress.c[3] = stress.c[1]; // stress(1,0) +} + +/** + * @brief Finalize force and stress calculations with MPI reduction and post-processing + * + * Performs: + * 1. MPI reduction of force and stress across all processes + * 2. Apply force_factor (typically 2.0 for Hermitian matrices) + * 3. Apply stress weight (lat0/omega) and stress_factor + * 4. Rearrange stress matrix to 3x3 format + * + * @param cal_force Whether force calculation is enabled + * @param cal_stress Whether stress calculation is enabled + * @param ucell Unit cell containing lattice parameters + * @param stress_tmp Temporary 6-component stress vector + * @param force Force matrix to finalize + * @param stress Stress matrix to finalize + * @param force_factor Multiplicative factor for force (default: 2.0 for Hermitian) + * @param stress_factor Multiplicative factor for stress (default: 2.0 for Hermitian) + */ +void finalize_force_stress( + bool cal_force, + bool cal_stress, + const UnitCell* ucell, + const std::vector& stress_tmp, + ModuleBase::matrix& force, + ModuleBase::matrix& stress, + double force_factor = 2.0, + double stress_factor = 2.0); + +} // namespace OperatorForceStress + +#endif // OPERATOR_FORCE_STRESS_UTILS_H diff --git a/source/source_lcao/module_operator_lcao/operator_force_stress_utils.hpp b/source/source_lcao/module_operator_lcao/operator_force_stress_utils.hpp new file mode 100644 index 0000000000..572d117a7e --- /dev/null +++ b/source/source_lcao/module_operator_lcao/operator_force_stress_utils.hpp @@ -0,0 +1,196 @@ +#ifndef OPERATOR_FORCE_STRESS_UTILS_HPP +#define OPERATOR_FORCE_STRESS_UTILS_HPP + +#include "operator_force_stress_utils.h" +#include "source_base/parallel_reduce.h" +#include "source_base/timer.h" +#include "source_cell/module_neighbor/sltk_grid_driver.h" +#include "source_lcao/module_hcontainer/hcontainer.h" +#include "source_basis/module_ao/parallel_orbitals.h" + +namespace OperatorForceStress { + +/** + * @brief Template function for calculating force and stress from 2-center integrals + * + * This template unifies the force/stress calculation pattern for operators that use + * 2-center integrals (e.g., overlap, kinetic energy). The sign conventions for force + * and stress are controlled by template parameters to avoid runtime overhead. + * + * @tparam TK Type for k-space matrices (double or std::complex) + * @tparam TR Type for real-space matrices (typically double) + * @tparam IntegralFunc Functor type for calculating integrals + * @tparam ForceSign Sign convention for force (+1 or -1) + * @tparam StressSign Sign convention for stress (+1 or -1) + * + * @param cal_force Whether to calculate forces + * @param cal_stress Whether to calculate stress + * @param dmR Density matrix in real space + * @param ucell Unit cell containing atomic structure + * @param gridD Grid driver for finding adjacent atoms + * @param orb_cutoff Orbital cutoff radii for each atom type + * @param paraV Parallel orbital distribution information + * @param integral_calculator Functor that calculates integral and its derivatives + * @param force Output force matrix (natom x 3) + * @param stress Output stress matrix (3 x 3) + */ +template +void cal_force_stress_2center( + const bool cal_force, + const bool cal_stress, + const hamilt::HContainer* dmR, + const UnitCell* ucell, + const Grid_Driver* gridD, + const std::vector& orb_cutoff, + const Parallel_Orbitals* paraV, + IntegralFunc& integral_calculator, + ModuleBase::matrix& force, + ModuleBase::matrix& stress) +{ + const int npol = ucell->get_npol(); + std::vector stress_tmp(6, 0); + + if (cal_force) + { + force.zero_out(); + } + + // Loop over all atom pairs and calculate force/stress contributions + #pragma omp parallel + { + std::vector stress_local(6, 0); + ModuleBase::matrix force_local(force.nr, force.nc); + + #pragma omp for schedule(dynamic) + for (int iat1 = 0; iat1 < ucell->nat; iat1++) + { + auto tau1 = ucell->get_tau(iat1); + int T1 = 0, I1 = 0; + ucell->iat2iait(iat1, &I1, &T1); + Atom& atom1 = ucell->atoms[T1]; + + // Find adjacent atoms + AdjacentAtomInfo adjs; + gridD->Find_atom(*ucell, tau1, T1, I1, &adjs); + + for (int ad = 0; ad < adjs.adj_num + 1; ++ad) + { + const int T2 = adjs.ntype[ad]; + const int I2 = adjs.natom[ad]; + const int iat2 = ucell->itia2iat(T2, I2); + const ModuleBase::Vector3& R_index = adjs.box[ad]; + + // Check cutoff + ModuleBase::Vector3 dtau = ucell->cal_dtau(iat1, iat2, R_index); + if (dtau.norm() * ucell->lat0 >= orb_cutoff[T1] + orb_cutoff[T2]) + { + continue; + } + + // Find density matrix for this atom pair + const hamilt::BaseMatrix* dm_matrix = dmR->find_matrix(iat1, iat2, R_index[0], R_index[1], R_index[2]); + if (dm_matrix == nullptr) + { + continue; + } + + // Calculate force and stress for this atom pair + double* force_tmp1 = (cal_force) ? &force_local(iat1, 0) : nullptr; + double* force_tmp2 = (cal_force) ? &force_local(iat2, 0) : nullptr; + + Atom& atom2 = ucell->atoms[T2]; + auto row_indexes = paraV->get_indexes_row(iat1); + auto col_indexes = paraV->get_indexes_col(iat2); + + if (row_indexes.size() == 0 || col_indexes.size() == 0) + { + continue; + } + + const double* dm_pointer = dm_matrix->get_pointer(); + double olm[4] = {0, 0, 0, 0}; // value, dx, dy, dz + + // step_trace = 0 for npol=1; ={0, 1, col_size, col_size+1} for npol=2 + std::vector step_trace(npol * npol, 0); + if (npol == 2) + { + step_trace[1] = 1; + step_trace[2] = col_indexes.size(); + step_trace[3] = col_indexes.size() + 1; + } + + // Loop over orbital pairs + for (int iw1l = 0; iw1l < row_indexes.size(); iw1l += npol) + { + const int iw1 = row_indexes[iw1l] / npol; + const int L1 = atom1.iw2l[iw1]; + const int N1 = atom1.iw2n[iw1]; + const int m1 = atom1.iw2m[iw1]; + const int M1 = (m1 % 2 == 0) ? -m1 / 2 : (m1 + 1) / 2; + + for (int iw2l = 0; iw2l < col_indexes.size(); iw2l += npol) + { + const int iw2 = col_indexes[iw2l] / npol; + const int L2 = atom2.iw2l[iw2]; + const int N2 = atom2.iw2n[iw2]; + const int m2 = atom2.iw2m[iw2]; + const int M2 = (m2 % 2 == 0) ? -m2 / 2 : (m2 + 1) / 2; + + // Calculate integral and its gradient using provided functor + integral_calculator(T1, L1, N1, M1, T2, L2, N2, M2, dtau, olm); + + // only charge should be considered + const double dm_current = dm_pointer[0]; + + // Calculate force contribution with compile-time sign + if (cal_force) + { + // Factor of 2 for Hermitian matrix will be applied later + for (int i = 0; i < 3; i++) + { + force_tmp1[i] += ForceSign * dm_current * olm[i + 1]; + force_tmp2[i] -= ForceSign * dm_current * olm[i + 1]; + } + } + + // Calculate stress contribution with compile-time sign + if (cal_stress) + { + stress_local[0] += StressSign * dm_current * olm[1] * dtau.x; // xx + stress_local[1] += StressSign * dm_current * olm[1] * dtau.y; // xy + stress_local[2] += StressSign * dm_current * olm[1] * dtau.z; // xz + stress_local[3] += StressSign * dm_current * olm[2] * dtau.y; // yy + stress_local[4] += StressSign * dm_current * olm[2] * dtau.z; // yz + stress_local[5] += StressSign * dm_current * olm[3] * dtau.z; // zz + } + + dm_pointer += npol; + } + dm_pointer += (npol - 1) * col_indexes.size(); + } + } + } + + #pragma omp critical + { + if (cal_force) + { + force += force_local; + } + if (cal_stress) + { + for (int i = 0; i < 6; i++) + { + stress_tmp[i] += stress_local[i]; + } + } + } + } + + // Finalize with MPI reduction and post-processing + finalize_force_stress(cal_force, cal_stress, ucell, stress_tmp, force, stress, 1.0, 1.0); +} + +} // namespace OperatorForceStress + +#endif // OPERATOR_FORCE_STRESS_UTILS_HPP diff --git a/source/source_lcao/module_operator_lcao/operator_lcao.cpp b/source/source_lcao/module_operator_lcao/operator_lcao.cpp index a7e47450fe..ec86d103e5 100644 --- a/source/source_lcao/module_operator_lcao/operator_lcao.cpp +++ b/source/source_lcao/module_operator_lcao/operator_lcao.cpp @@ -31,6 +31,8 @@ void OperatorLCAO::get_hs_pointers() { const int inc = 1; BlasConnector::copy(this->hsk->get_size(), this->hsk->get_sk(), inc, this->smatrix_k, inc); #ifdef __ELPA + // DecomposedState may be changed after diagnolization, with smatrix_k changed too + // for example, when DecomposedState equals 1, smatrix_k is an identity matrix, different from the original this->hsk->get_sk() hsolver::DiagoElpa::DecomposedState = 0; hsolver::DiagoElpaNative::DecomposedState = 0; #endif @@ -96,7 +98,7 @@ void OperatorLCAO::init(const int ik_in) { // cal_type=lcao_overlap refer to overlap matrix operators, which are // only rely on stucture, and not changed during SCF - if (!this->hr_done) { + { // update SR first // in cal_type=lcao_overlap, SR should be updated by each sub-chain // nodes @@ -192,10 +194,14 @@ void OperatorLCAO::init(const int ik_in) { case calculation_type::lcao_exx: { //update HR first - if (!this->hr_done) + if (!this->hr_done && PARAM.inp.esolver_type != "tddft") { this->contributeHR(); } + else if(PARAM.inp.esolver_type == "tddft") + { + this->contributeHk(ik_in); + } //update HK next //in cal_type=lcao_exx, HK only need to update from one node @@ -226,7 +232,7 @@ void OperatorLCAO::init(const int ik_in) { != nullptr) { // it is not the last node, loop next init() function // pass HR status to next node and than set HR status of this node to // done - if (!this->hr_done) { + { dynamic_cast*>(this->next_op)->hr_done = this->hr_done; } @@ -269,7 +275,7 @@ void OperatorLCAO::contributeHk(int ik) { const int nrow = this->hsk->get_pv()->get_row_size(); if(PARAM.inp.td_stype == 2) { - module_rt::folding_HR_td(*this->hR, this->hsk->get_hk(), this->kvec_d[ik], nrow, 1, TD_info::td_vel_op->get_ucell(), TD_info::cart_At); + module_rt::folding_HR_td(*(TD_info::td_vel_op->get_ucell()), *this->hR, this->hsk->get_hk(), this->kvec_d[ik], TD_info::cart_At, nrow, 1); } else { @@ -281,7 +287,7 @@ void OperatorLCAO::contributeHk(int ik) { const int ncol = this->hsk->get_pv()->get_col_size(); if(PARAM.inp.td_stype == 2) { - module_rt::folding_HR_td(*this->hR, this->hsk->get_hk(), this->kvec_d[ik], ncol, 0, TD_info::td_vel_op->get_ucell(), TD_info::cart_At); + module_rt::folding_HR_td(*(TD_info::td_vel_op->get_ucell()), *this->hR, this->hsk->get_hk(), this->kvec_d[ik], TD_info::cart_At, ncol, 0); } else { diff --git a/source/source_lcao/module_operator_lcao/overlap.cpp b/source/source_lcao/module_operator_lcao/overlap.cpp new file mode 100644 index 0000000000..9c151884c8 --- /dev/null +++ b/source/source_lcao/module_operator_lcao/overlap.cpp @@ -0,0 +1,468 @@ +#include "overlap.h" + +#include "source_base/timer.h" +#include "source_base/tool_title.h" +#include "source_cell/module_neighbor/sltk_grid_driver.h" +#include "source_io/module_parameter/parameter.h" +#include "source_lcao/module_hcontainer/hcontainer_funcs.h" +#include "source_lcao/module_hcontainer/output_hcontainer.h" +#include "source_lcao/module_operator_lcao/operator_lcao.h" +#include "source_lcao/module_rt/td_folding.h" +#include "source_lcao/module_rt/td_info.h" + +#include +#include + +namespace +{ + +/// @brief Populate an HContainer with atom pairs based on neighbor search +/// @details Searches for adjacent atoms within orbital cutoff distance and inserts +/// valid atom pairs into the container. This is the common logic shared between +/// SR (overlap matrix) and SR_async (asynchronous overlap for Hefei-NAMD). +/// @tparam TR Data type for real-space matrix elements (double or complex) +/// @param container Target HContainer to populate with atom pairs +/// @param ucell Unit cell containing atomic structure +/// @param grid_driver Grid driver for neighbor searching +/// @param orb_cutoff Orbital cutoff radii for each atom type +/// @param dtau_modifier Optional function to modify dtau before cutoff check (for velocity shifts in NAMD) +/// Signature: void(int iat1, int I1, int T1, ModuleBase::Vector3& dtau) +template +void populate_atom_pairs(hamilt::HContainer* container, + const UnitCell* ucell, + const Grid_Driver* grid_driver, + const std::vector& orb_cutoff, + std::function&)> dtau_modifier = nullptr) +{ + const Parallel_Orbitals* paraV = container->get_paraV(); + + for (int iat1 = 0; iat1 < ucell->nat; iat1++) + { + const auto tau1 = ucell->get_tau(iat1); + int T1 = 0; + int I1 = 0; + ucell->iat2iait(iat1, &I1, &T1); + + AdjacentAtomInfo adjs; + grid_driver->Find_atom(*ucell, tau1, T1, I1, &adjs); + + // Loop over adjacent atoms (including self: ad=0 corresponds to iat1 itself) + for (int ad = 0; ad < adjs.adj_num + 1; ++ad) + { + const int T2 = adjs.ntype[ad]; + const int I2 = adjs.natom[ad]; + const int iat2 = ucell->itia2iat(T2, I2); + + // Skip if atom pair has no local orbitals in parallel distribution + if (paraV->get_row_size(iat1) <= 0 || paraV->get_col_size(iat2) <= 0) + { + continue; + } + + const ModuleBase::Vector3& R_index = adjs.box[ad]; + ModuleBase::Vector3 dtau = ucell->cal_dtau(iat1, iat2, R_index); + + // Apply optional dtau modification (e.g., velocity shift for NAMD) + if (dtau_modifier) + { + dtau_modifier(iat1, I1, T1, dtau); + } + + // Skip atoms beyond orbital cutoff distance + // Note: Use strict inequality (<) because at exactly the cutoff distance, + // the theoretical matrix element is zero, but numerical errors can produce + // non-zero values that affect reproducibility. + const double distance = dtau.norm() * ucell->lat0; + const double cutoff_sum = orb_cutoff[T1] + orb_cutoff[T2]; + if (distance >= cutoff_sum) + { + continue; + } + + hamilt::AtomPair atom_pair(iat1, iat2, R_index, paraV); + container->insert_pair(atom_pair); + } + } + + // Allocate memory for matrix elements and initialize to zero + container->allocate(nullptr, true); +} + +} // anonymous namespace + +template +hamilt::Overlap>::Overlap(HS_Matrix_K* hsk_in, + const std::vector>& kvec_d_in, + hamilt::HContainer* hR_in, + hamilt::HContainer* SR_in, + const UnitCell* ucell_in, + const std::vector& orb_cutoff, + const Grid_Driver* GridD_in, + const TwoCenterIntegrator* intor) + : hamilt::OperatorLCAO(hsk_in, kvec_d_in, hR_in), orb_cutoff_(orb_cutoff), intor_(intor), gridD(GridD_in) +{ + this->cal_type = calculation_type::lcao_overlap; + this->ucell = ucell_in; + this->SR = SR_in; +#ifdef __DEBUG + assert(this->ucell != nullptr); + assert(this->SR != nullptr); +#endif + // Initialize SR to allocate sparse overlap matrix memory. + // Only initialize if SR_in is not nullptr (for force calculation, SR_in can be nullptr). + if (SR_in != nullptr) + { + this->initialize_SR(GridD_in); + } +} + +template +hamilt::Overlap>::~Overlap() +{ +} + +template +void hamilt::Overlap>::initialize_SR(const Grid_Driver* GridD) +{ + ModuleBase::TITLE("OverlapNew", "initialize_SR"); + ModuleBase::timer::tick("OverlapNew", "initialize_SR"); + + populate_atom_pairs(this->SR, this->ucell, GridD, this->orb_cutoff_); + + ModuleBase::timer::tick("OverlapNew", "initialize_SR"); +} + +template +void hamilt::Overlap>::calculate_SR() +{ + ModuleBase::TITLE("Overlap", "calculate_SR"); + ModuleBase::timer::tick("Overlap", "calculate_SR"); +#ifdef _OPENMP +#pragma omp parallel for +#endif + for (int iap = 0; iap < this->SR->size_atom_pairs(); ++iap) + { + hamilt::AtomPair& tmp = this->SR->get_atom_pair(iap); + const int iat1 = tmp.get_atom_i(); + const int iat2 = tmp.get_atom_j(); + const Parallel_Orbitals* paraV = tmp.get_paraV(); + + for (int iR = 0; iR < tmp.get_R_size(); ++iR) + { + const ModuleBase::Vector3 R_index = tmp.get_R_index(iR); + auto dtau = ucell->cal_dtau(iat1, iat2, R_index); + TR* data_pointer = tmp.get_pointer(iR); + this->cal_SR_IJR(iat1, iat2, paraV, dtau, data_pointer); + } + } + // if TK == double, then SR should be fixed to gamma case + // judge type of TK equal to double + if (std::is_same::value) + { + this->SR->fix_gamma(); + } + ModuleBase::timer::tick("Overlap", "calculate_SR"); +} + +// cal_SR_IJR() +template +void hamilt::Overlap>::cal_SR_IJR(const int& iat1, + const int& iat2, + const Parallel_Orbitals* paraV, + const ModuleBase::Vector3& dtau, + TR* data_pointer) +{ + // --------------------------------------------- + // get info of orbitals of atom1 and atom2 from ucell + // --------------------------------------------- + int T1=0; + int I1=0; + this->ucell->iat2iait(iat1, &I1, &T1); + int T2=0; + int I2=0; + this->ucell->iat2iait(iat2, &I2, &T2); + Atom& atom1 = this->ucell->atoms[T1]; + Atom& atom2 = this->ucell->atoms[T2]; + + // npol is the number of polarizations, + // 1 for non-magnetic (one Hamiltonian matrix only has spin-up or spin-down), + // 2 for magnetic (one Hamiltonian matrix has both spin-up and spin-down) + const int npol = this->ucell->get_npol(); + + const int* iw2l1 = atom1.iw2l.data(); + const int* iw2n1 = atom1.iw2n.data(); + const int* iw2m1 = atom1.iw2m.data(); + const int* iw2l2 = atom2.iw2l.data(); + const int* iw2n2 = atom2.iw2n.data(); + const int* iw2m2 = atom2.iw2m.data(); + + // --------------------------------------------- + // calculate the overlap matrix for each pair of orbitals + // --------------------------------------------- + double olm[3] = {0, 0, 0}; + auto row_indexes = paraV->get_indexes_row(iat1); + auto col_indexes = paraV->get_indexes_col(iat2); + const int step_trace = col_indexes.size() + 1; + for (int iw1l = 0; iw1l < row_indexes.size(); iw1l += npol) + { + const int iw1 = row_indexes[iw1l] / npol; + const int L1 = iw2l1[iw1]; + const int N1 = iw2n1[iw1]; + const int m1 = iw2m1[iw1]; + + // convert m (0,1,...2l) to M (-l, -l+1, ..., l-1, l) + int M1 = (m1 % 2 == 0) ? -m1 / 2 : (m1 + 1) / 2; + + for (int iw2l = 0; iw2l < col_indexes.size(); iw2l += npol) + { + const int iw2 = col_indexes[iw2l] / npol; + const int L2 = iw2l2[iw2]; + const int N2 = iw2n2[iw2]; + const int m2 = iw2m2[iw2]; + + // convert m (0,1,...2l) to M (-l, -l+1, ..., l-1, l) + int M2 = (m2 % 2 == 0) ? -m2 / 2 : (m2 + 1) / 2; + intor_->calculate(T1, L1, N1, M1, T2, L2, N2, M2, dtau * this->ucell->lat0, olm); + for (int ipol = 0; ipol < npol; ipol++) + { + data_pointer[ipol * step_trace] += olm[0]; + } + data_pointer += npol; + } + data_pointer += (npol - 1) * col_indexes.size(); + } +} + +// contributeHR() +template +void hamilt::Overlap>::contributeHR() +{ + if (this->SR_fixed_done) + { + return; + } + this->calculate_SR(); + this->SR_fixed_done = true; +} + +// contributeHk() +template <> +void hamilt::Overlap>::contributeHk(int ik) +{ + //! if k vector is not changed, then do nothing and return, only for gamma_only case + if (this->kvec_d[ik] == this->kvec_d_old) + { + return; + } + ModuleBase::TITLE("Overlap", "contributeHk"); + ModuleBase::timer::tick("Overlap", "contributeHk"); + + //! set SK to zero and then calculate SK for each k vector + this->hsk->set_zero_sk(); + if (ModuleBase::GlobalFunc::IS_COLUMN_MAJOR_KS_SOLVER(PARAM.inp.ks_solver)) + { + const int nrow = this->SR->get_atom_pair(0).get_paraV()->get_row_size(); + hamilt::folding_HR(*this->SR, this->hsk->get_sk(), this->kvec_d[ik], nrow, 1); + } + else + { + const int ncol = this->SR->get_atom_pair(0).get_paraV()->get_col_size(); + hamilt::folding_HR(*this->SR, this->hsk->get_sk(), this->kvec_d[ik], ncol, 0); + } + + // update kvec_d_old + this->kvec_d_old = this->kvec_d[ik]; + + ModuleBase::timer::tick("Overlap", "contributeHk"); +} +template +void hamilt::Overlap>::contributeHk(int ik) +{ + ModuleBase::TITLE("Overlap", "contributeHk"); + ModuleBase::timer::tick("Overlap", "contributeHk"); + + //! set SK to zero and then calculate SK for each k vector + this->hsk->set_zero_sk(); + if (ModuleBase::GlobalFunc::IS_COLUMN_MAJOR_KS_SOLVER(PARAM.inp.ks_solver)) + { + const int nrow = this->SR->get_atom_pair(0).get_paraV()->get_row_size(); + if(PARAM.inp.td_stype == 2) + { + module_rt::folding_HR_td(*ucell, *this->SR, this->hsk->get_sk(), this->kvec_d[ik], TD_info::cart_At, nrow, 1); + } + else + { + hamilt::folding_HR(*this->SR, this->hsk->get_sk(), this->kvec_d[ik], nrow, 1); + } + } + else + { + const int ncol = this->SR->get_atom_pair(0).get_paraV()->get_col_size(); + if(PARAM.inp.td_stype == 2) + { + module_rt::folding_HR_td(*ucell, *this->SR, this->hsk->get_sk(), this->kvec_d[ik], TD_info::cart_At, ncol, 0); + } + else + { + hamilt::folding_HR(*this->SR, this->hsk->get_sk(), this->kvec_d[ik], ncol, 0); + } + } + + // update kvec_d_old + this->kvec_d_old = this->kvec_d[ik]; + + ModuleBase::timer::tick("Overlap", "contributeHk"); +} +template +TK* hamilt::Overlap>::getSk() +{ + if (this->hsk != nullptr) + { + return this->hsk->get_sk(); + } + return nullptr; +} + +//============================================================================== +// Asynchronous overlap matrix methods for Hefei-NAMD interface +// These methods calculate by shifting atom positions backward +// using atomic velocities, enabling non-adiabatic molecular dynamics calculations. +//============================================================================== + +template +hamilt::HContainer* hamilt::Overlap>::calculate_SR_async(const UnitCell& ucell_in, + const double md_dt, + const Parallel_Orbitals* paraV) +{ + ModuleBase::TITLE("OverlapNew", "calculate_SR_async"); + ModuleBase::timer::tick("OverlapNew", "calculate_SR_async"); + + // Initialize SR_async for Hefei-NAMD asynchronous overlap calculation + // This is done here to use the exact dtau with velocity shifts + hamilt::HContainer* SR_async = new hamilt::HContainer(paraV); + + // Define velocity shift modifier for dtau + // This shifts atom1 backward to its position at (t - dt), + // giving the overlap needed for NAMD. + const double vel_to_dtau = md_dt / ModuleBase::AU_to_FS / ucell_in.lat0; + auto velocity_shift = [&ucell_in, vel_to_dtau](int iat1, int I1, int T1, ModuleBase::Vector3& dtau) { + const Atom* atom1 = &ucell_in.atoms[T1]; + for (int dim = 0; dim < 3; dim++) + { + dtau[dim] += atom1->vel[I1][dim] * vel_to_dtau; + } + }; + + // Populate atom pairs with velocity-shifted dtau for cutoff checking + populate_atom_pairs(SR_async, &ucell_in, this->gridD, this->orb_cutoff_, velocity_shift); + + // Calculate overlap matrix elements with velocity-shifted dtau +#ifdef _OPENMP +#pragma omp parallel for +#endif + for (int iap = 0; iap < SR_async->size_atom_pairs(); ++iap) + { + hamilt::AtomPair& atom_pair = SR_async->get_atom_pair(iap); + const int iat1 = atom_pair.get_atom_i(); + const int iat2 = atom_pair.get_atom_j(); + const Parallel_Orbitals* paraV_local = atom_pair.get_paraV(); + + // Get atom type and index for velocity lookup + int T1 = 0; + int I1 = 0; + ucell_in.iat2iait(iat1, &I1, &T1); + const Atom* atom1 = &ucell_in.atoms[T1]; + + for (int iR = 0; iR < atom_pair.get_R_size(); ++iR) + { + const ModuleBase::Vector3 R_index = atom_pair.get_R_index(iR); + ModuleBase::Vector3 dtau = ucell_in.cal_dtau(iat1, iat2, R_index); + + // Apply velocity shift to dtau + for (int dim = 0; dim < 3; dim++) + { + dtau[dim] += atom1->vel[I1][dim] * vel_to_dtau; + } + + TR* data_pointer = atom_pair.get_pointer(iR); + this->cal_SR_IJR(iat1, iat2, paraV_local, dtau, data_pointer); + } + } + + // For gamma-only calculations, apply symmetry constraint + if (std::is_same::value) + { + SR_async->fix_gamma(); + } + + ModuleBase::timer::tick("OverlapNew", "calculate_SR_async"); + return SR_async; +} + +template +void hamilt::Overlap>::output_SR_async_csr(const int istep, + hamilt::HContainer* SR_async, + const int precision) +{ + if (SR_async == nullptr) + { + return; + } + + ModuleBase::TITLE("OverlapNew", "output_SR_async_csr"); + ModuleBase::timer::tick("OverlapNew", "output_SR_async_csr"); + +#ifdef __MPI + // Gather distributed SR_async to rank 0 for serial output + const Parallel_Orbitals* paraV = SR_async->get_paraV(); + const int nbasis = SR_async->get_nbasis(); + + Parallel_Orbitals serial_paraV; + serial_paraV.init(nbasis, nbasis, nbasis, paraV->comm()); + serial_paraV.set_serial(nbasis, nbasis); + serial_paraV.set_atomic_trace(this->ucell->get_iat2iwt(), this->ucell->nat, nbasis); + + hamilt::HContainer SR_async_serial(&serial_paraV); + hamilt::gatherParallels(*SR_async, &SR_async_serial, 0); +#else + hamilt::HContainer& SR_async_serial = *SR_async; +#endif + + // Only rank 0 writes the output file + if (GlobalV::MY_RANK == 0) + { + const std::string filename = PARAM.globalv.global_out_dir + "syns_nao.csr"; + std::ofstream ofs; + + // First step creates new file, subsequent steps append + if (istep <= 0) + { + ofs.open(filename); + } + else + { + ofs.open(filename, std::ios::app); + } + + // Write header information + ofs << "IONIC_STEP: " << istep + 1 << std::endl; + ofs << "Matrix Dimension of S_async(R): " << SR_async_serial.get_nbasis() << std::endl; + ofs << "Matrix number of S_async(R): " << SR_async_serial.size_R_loop() << std::endl; + + // Write matrix data in CSR format + const double sparse_threshold = 1e-10; + hamilt::Output_HContainer output_handler(&SR_async_serial, ofs, sparse_threshold, precision); + output_handler.write(); + + ofs.close(); + } + + ModuleBase::timer::tick("OverlapNew", "output_SR_async_csr"); +} + +// Include force/stress implementation +#include "overlap_force_stress.hpp" + +template class hamilt::Overlap>; +template class hamilt::Overlap, double>>; +template class hamilt::Overlap, std::complex>>; diff --git a/source/source_lcao/module_operator_lcao/overlap.h b/source/source_lcao/module_operator_lcao/overlap.h new file mode 100644 index 0000000000..d29387221f --- /dev/null +++ b/source/source_lcao/module_operator_lcao/overlap.h @@ -0,0 +1,157 @@ +#ifndef W_ABACUS_DEVELOP_ABACUS_DEVELOP_SOURCE_MODULE_HAMILT_LCAO_HAMILT_LCAODFT_OPERATOR_LCAO_OVERLAP_H +#define W_ABACUS_DEVELOP_ABACUS_DEVELOP_SOURCE_MODULE_HAMILT_LCAO_HAMILT_LCAODFT_OPERATOR_LCAO_OVERLAP_H +#include "source_basis/module_ao/parallel_orbitals.h" +#include "source_basis/module_nao/two_center_integrator.h" +#include "source_cell/module_neighbor/sltk_grid_driver.h" +#include "source_cell/unitcell.h" +#include "source_lcao/module_operator_lcao/operator_lcao.h" +#include "source_lcao/module_hcontainer/hcontainer.h" +#include + +namespace hamilt +{ + +#ifndef __OVERLAPTEMPLATE +#define __OVERLAPTEMPLATE + +/// The Overlap class template inherits from class T +/// it is used to calculate the overlap of wavefunction basis +/// Template parameters: +/// - T: base class, it would be OperatorLCAO or OperatorPW +/// - TR: data type of real space Hamiltonian, it would be double or std::complex +template +class Overlap : public T +{ +}; + +#endif + +/// Overlap class template specialization for OperatorLCAO base class +/// It is used to calculate the overlap matrix in real space and fold it to k-space +/// SR = +/// SK = = \sum_{R} e^{ikR} SR +/// Template parameters: +/// - TK: data type of k-space Hamiltonian +/// - TR: data type of real space Hamiltonian +template +class Overlap> : public OperatorLCAO +{ + public: + Overlap>(HS_Matrix_K* hsk_in, + const std::vector>& kvec_d_in, + hamilt::HContainer* hR_in, + hamilt::HContainer* SR_in, + const UnitCell* ucell_in, + const std::vector& orb_cutoff, + const Grid_Driver* GridD_in, + const TwoCenterIntegrator* intor); + + ~Overlap(); + + virtual void contributeHR() override; + + virtual void contributeHk(int ik) override; + + TK* getSk(); + + /** + * @brief calculate force and stress for overlap operator + * @param cal_force whether to calculate force + * @param cal_stress whether to calculate stress + * @param dmR density matrix in real space + * @param force output force matrix (nat x 3) + * @param stress output stress matrix (3 x 3) + */ + void cal_force_stress(const bool cal_force, + const bool cal_stress, + const HContainer* dmR, + ModuleBase::matrix& force, + ModuleBase::matrix& stress); + + private: + const UnitCell* ucell = nullptr; + + std::vector orb_cutoff_; + + hamilt::HContainer* SR = nullptr; + + const TwoCenterIntegrator* intor_ = nullptr; + + const Grid_Driver* gridD = nullptr; + + bool SR_fixed_done = false; + + /** + * @brief initialize SR, search the nearest neighbor atoms + * HContainer is used to store the overlap matrix with specific atom-pairs + * the size of SR will be fixed after initialization + */ + void initialize_SR(const Grid_Driver* GridD_in); + + /** + * @brief calculate the overlap matrix with specific atom-pairs + * nearest neighbor atoms don't need to be calculated again + * loop the atom-pairs in SR and calculate the overlap matrix + */ + void calculate_SR(); + + /** + * @brief calculate the SR local matrix of atom pair + */ + void cal_SR_IJR(const int& iat1, + const int& iat2, + const Parallel_Orbitals* paraV, + const ModuleBase::Vector3& dtau, + TR* data_pointer); + + /** + * @brief calculate force contribution for atom pair + */ + void cal_force_IJR(const int& iat1, + const int& iat2, + const Parallel_Orbitals* paraV, + const std::unordered_map>& nlm1_all, + const std::unordered_map>& nlm2_all, + const hamilt::BaseMatrix* dmR_pointer, + double* force1, + double* force2); + + /** + * @brief calculate stress contribution for atom pair + */ + void cal_stress_IJR(const int& iat1, + const int& iat2, + const Parallel_Orbitals* paraV, + const std::unordered_map>& nlm1_all, + const std::unordered_map>& nlm2_all, + const hamilt::BaseMatrix* dmR_pointer, + const ModuleBase::Vector3& dis1, + const ModuleBase::Vector3& dis2, + double* stress); + + // if k vector is not changed, then do nothing and return + // default of kvec_d_old is (-10,-10,-10), which is not a valid k vector + ModuleBase::Vector3 kvec_d_old = ModuleBase::Vector3(-10, -10, -10); + + public: + /** + * @brief calculate asynchronous overlap matrix for Hefei-NAMD + * Calculates by shifting atom positions backward + * @param ucell unit cell with current atomic positions and velocities + * @param md_dt molecular dynamics time step (in fs) + * @param paraV parallel orbitals object for matrix distribution + * @return pointer to the created SR_async container (caller must delete) + */ + hamilt::HContainer* calculate_SR_async(const UnitCell& ucell, const double md_dt, const Parallel_Orbitals* paraV); + + /** + * @brief output asynchronous overlap matrix in CSR format + * @param istep current ionic step number + * @param SR_async pointer to the asynchronous overlap matrix container + * @param precision output precision for floating point numbers + */ + void output_SR_async_csr(const int istep, hamilt::HContainer* SR_async, const int precision = 8); +}; + +} // namespace hamilt +#endif diff --git a/source/source_lcao/module_operator_lcao/overlap_force_stress.hpp b/source/source_lcao/module_operator_lcao/overlap_force_stress.hpp new file mode 100644 index 0000000000..679ebb544b --- /dev/null +++ b/source/source_lcao/module_operator_lcao/overlap_force_stress.hpp @@ -0,0 +1,67 @@ +#pragma once +#include "overlap.h" +#include "operator_force_stress_utils.hpp" +#include "source_base/timer.h" + +namespace hamilt +{ + +template +void Overlap>::cal_force_stress(const bool cal_force, + const bool cal_stress, + const HContainer* dmR, + ModuleBase::matrix& force, + ModuleBase::matrix& stress) +{ + ModuleBase::TITLE("Overlap", "cal_force_stress"); + ModuleBase::timer::tick("Overlap", "cal_force_stress"); + + // Lambda function to calculate overlap integral and its gradient + auto integral_calc = [this](int T1, int L1, int N1, int M1, + int T2, int L2, int N2, int M2, + const ModuleBase::Vector3& dtau, + double* olm) { + this->intor_->calculate(T1, L1, N1, M1, T2, L2, N2, M2, + dtau * this->ucell->lat0, &olm[0], &olm[1]); + }; + + // Use unified template with ForceSign=-1, StressSign=+1 for overlap operator + OperatorForceStress::cal_force_stress_2center( + cal_force, cal_stress, dmR, this->ucell, this->gridD, + this->orb_cutoff_, dmR->get_paraV(), integral_calc, force, stress); + + ModuleBase::timer::tick("Overlap", "cal_force_stress"); +} + +// Dummy implementations for cal_force_IJR and cal_stress_IJR +// These are not used in the simplified approach above +template +void Overlap>::cal_force_IJR( + const int& iat1, + const int& iat2, + const Parallel_Orbitals* paraV, + const std::unordered_map>& nlm1_all, + const std::unordered_map>& nlm2_all, + const hamilt::BaseMatrix* dmR_pointer, + double* force1, + double* force2) +{ + // Not used in current implementation +} + +template +void Overlap>::cal_stress_IJR( + const int& iat1, + const int& iat2, + const Parallel_Orbitals* paraV, + const std::unordered_map>& nlm1_all, + const std::unordered_map>& nlm2_all, + const hamilt::BaseMatrix* dmR_pointer, + const ModuleBase::Vector3& dis1, + const ModuleBase::Vector3& dis2, + double* stress) +{ + // Not used in current implementation +} + +} // namespace hamilt diff --git a/source/source_lcao/module_operator_lcao/overlap_new.cpp b/source/source_lcao/module_operator_lcao/overlap_new.cpp deleted file mode 100644 index 1200400151..0000000000 --- a/source/source_lcao/module_operator_lcao/overlap_new.cpp +++ /dev/null @@ -1,272 +0,0 @@ -#include "overlap_new.h" - -#include "source_io/module_parameter/parameter.h" -#include "source_base/timer.h" -#include "source_base/tool_title.h" -#include "source_cell/module_neighbor/sltk_grid_driver.h" -#include "source_lcao/module_operator_lcao/operator_lcao.h" -#include "source_lcao/module_hcontainer/hcontainer_funcs.h" -#include -#include "source_lcao/module_rt/td_info.h" -#include "source_lcao/module_rt/td_folding.h" - -template -hamilt::OverlapNew>::OverlapNew(HS_Matrix_K* hsk_in, - const std::vector>& kvec_d_in, - hamilt::HContainer* hR_in, - hamilt::HContainer* SR_in, - const UnitCell* ucell_in, - const std::vector& orb_cutoff, - const Grid_Driver* GridD_in, - const TwoCenterIntegrator* intor) - : hamilt::OperatorLCAO(hsk_in, kvec_d_in, hR_in), orb_cutoff_(orb_cutoff), intor_(intor) -{ - this->cal_type = calculation_type::lcao_overlap; - this->ucell = ucell_in; - this->SR = SR_in; -#ifdef __DEBUG - assert(this->ucell != nullptr); - assert(this->SR != nullptr); -#endif - // initialize SR to allocate sparse overlap matrix memory - this->initialize_SR(GridD_in); -} - -// initialize_SR() -template -void hamilt::OverlapNew>::initialize_SR(const Grid_Driver* GridD) -{ - ModuleBase::TITLE("OverlapNew", "initialize_SR"); - ModuleBase::timer::tick("OverlapNew", "initialize_SR"); - auto* paraV = this->SR->get_paraV(); // get parallel orbitals from HR - // TODO: if paraV is nullptr, AtomPair can not use paraV for constructor, I will repair it in the future. - for (int iat1 = 0; iat1 < ucell->nat; iat1++) - { - auto tau1 = ucell->get_tau(iat1); - int T1=0; - int I1=0; - ucell->iat2iait(iat1, &I1, &T1); - AdjacentAtomInfo adjs; - GridD->Find_atom(*ucell, tau1, T1, I1, &adjs); - for (int ad = 0; ad < adjs.adj_num + 1; ++ad) - { - const int T2 = adjs.ntype[ad]; - const int I2 = adjs.natom[ad]; - int iat2 = ucell->itia2iat(T2, I2); - if (paraV->get_row_size(iat1) <= 0 || paraV->get_col_size(iat2) <= 0) - { - continue; - } - const ModuleBase::Vector3& R_index = adjs.box[ad]; - // choose the real adjacent atoms - // Note: the distance of atoms should less than the cutoff radius, - // When equal, the theoretical value of matrix element is zero, - // but the calculated value is not zero due to the numerical error, which would lead to result changes. - if (this->ucell->cal_dtau(iat1, iat2, R_index).norm() * this->ucell->lat0 - >= orb_cutoff_[T1] + orb_cutoff_[T2]) - { - continue; - } - hamilt::AtomPair tmp(iat1, iat2, R_index, paraV); - SR->insert_pair(tmp); - } - } - // allocate the memory of BaseMatrix in SR, and set the new values to zero - SR->allocate(nullptr, true); - ModuleBase::timer::tick("OverlapNew", "initialize_SR"); -} - -template -void hamilt::OverlapNew>::calculate_SR() -{ - ModuleBase::TITLE("OverlapNew", "calculate_SR"); - ModuleBase::timer::tick("OverlapNew", "calculate_SR"); -#ifdef _OPENMP -#pragma omp parallel for -#endif - for (int iap = 0; iap < this->SR->size_atom_pairs(); ++iap) - { - hamilt::AtomPair& tmp = this->SR->get_atom_pair(iap); - const int iat1 = tmp.get_atom_i(); - const int iat2 = tmp.get_atom_j(); - const Parallel_Orbitals* paraV = tmp.get_paraV(); - - for (int iR = 0; iR < tmp.get_R_size(); ++iR) - { - const ModuleBase::Vector3 R_index = tmp.get_R_index(iR); - auto dtau = ucell->cal_dtau(iat1, iat2, R_index); - TR* data_pointer = tmp.get_pointer(iR); - this->cal_SR_IJR(iat1, iat2, paraV, dtau, data_pointer); - } - } - // if TK == double, then SR should be fixed to gamma case - // judge type of TK equal to double - if (std::is_same::value) - { - this->SR->fix_gamma(); - } - ModuleBase::timer::tick("OverlapNew", "calculate_SR"); -} - -// cal_SR_IJR() -template -void hamilt::OverlapNew>::cal_SR_IJR(const int& iat1, - const int& iat2, - const Parallel_Orbitals* paraV, - const ModuleBase::Vector3& dtau, - TR* data_pointer) -{ - // --------------------------------------------- - // get info of orbitals of atom1 and atom2 from ucell - // --------------------------------------------- - int T1=0; - int I1=0; - this->ucell->iat2iait(iat1, &I1, &T1); - int T2=0; - int I2=0; - this->ucell->iat2iait(iat2, &I2, &T2); - Atom& atom1 = this->ucell->atoms[T1]; - Atom& atom2 = this->ucell->atoms[T2]; - - // npol is the number of polarizations, - // 1 for non-magnetic (one Hamiltonian matrix only has spin-up or spin-down), - // 2 for magnetic (one Hamiltonian matrix has both spin-up and spin-down) - const int npol = this->ucell->get_npol(); - - const int* iw2l1 = atom1.iw2l.data(); - const int* iw2n1 = atom1.iw2n.data(); - const int* iw2m1 = atom1.iw2m.data(); - const int* iw2l2 = atom2.iw2l.data(); - const int* iw2n2 = atom2.iw2n.data(); - const int* iw2m2 = atom2.iw2m.data(); - - // --------------------------------------------- - // calculate the overlap matrix for each pair of orbitals - // --------------------------------------------- - double olm[3] = {0, 0, 0}; - auto row_indexes = paraV->get_indexes_row(iat1); - auto col_indexes = paraV->get_indexes_col(iat2); - const int step_trace = col_indexes.size() + 1; - for (int iw1l = 0; iw1l < row_indexes.size(); iw1l += npol) - { - const int iw1 = row_indexes[iw1l] / npol; - const int L1 = iw2l1[iw1]; - const int N1 = iw2n1[iw1]; - const int m1 = iw2m1[iw1]; - - // convert m (0,1,...2l) to M (-l, -l+1, ..., l-1, l) - int M1 = (m1 % 2 == 0) ? -m1 / 2 : (m1 + 1) / 2; - - for (int iw2l = 0; iw2l < col_indexes.size(); iw2l += npol) - { - const int iw2 = col_indexes[iw2l] / npol; - const int L2 = iw2l2[iw2]; - const int N2 = iw2n2[iw2]; - const int m2 = iw2m2[iw2]; - - // convert m (0,1,...2l) to M (-l, -l+1, ..., l-1, l) - int M2 = (m2 % 2 == 0) ? -m2 / 2 : (m2 + 1) / 2; - intor_->calculate(T1, L1, N1, M1, T2, L2, N2, M2, dtau * this->ucell->lat0, olm); - for (int ipol = 0; ipol < npol; ipol++) - { - data_pointer[ipol * step_trace] += olm[0]; - } - data_pointer += npol; - } - data_pointer += (npol - 1) * col_indexes.size(); - } -} - -// contributeHR() -template -void hamilt::OverlapNew>::contributeHR() -{ - if (this->SR_fixed_done) - { - return; - } - this->calculate_SR(); - this->SR_fixed_done = true; -} - -// contributeHk() -template <> -void hamilt::OverlapNew>::contributeHk(int ik) -{ - //! if k vector is not changed, then do nothing and return, only for gamma_only case - if (this->kvec_d[ik] == this->kvec_d_old) - { - return; - } - ModuleBase::TITLE("OverlapNew", "contributeHk"); - ModuleBase::timer::tick("OverlapNew", "contributeHk"); - - //! set SK to zero and then calculate SK for each k vector - this->hsk->set_zero_sk(); - if (ModuleBase::GlobalFunc::IS_COLUMN_MAJOR_KS_SOLVER(PARAM.inp.ks_solver)) - { - const int nrow = this->SR->get_atom_pair(0).get_paraV()->get_row_size(); - hamilt::folding_HR(*this->SR, this->hsk->get_sk(), this->kvec_d[ik], nrow, 1); - } - else - { - const int ncol = this->SR->get_atom_pair(0).get_paraV()->get_col_size(); - hamilt::folding_HR(*this->SR, this->hsk->get_sk(), this->kvec_d[ik], ncol, 0); - } - - // update kvec_d_old - this->kvec_d_old = this->kvec_d[ik]; - - ModuleBase::timer::tick("OverlapNew", "contributeHk"); -} -template -void hamilt::OverlapNew>::contributeHk(int ik) -{ - ModuleBase::TITLE("OverlapNew", "contributeHk"); - ModuleBase::timer::tick("OverlapNew", "contributeHk"); - - //! set SK to zero and then calculate SK for each k vector - this->hsk->set_zero_sk(); - if (ModuleBase::GlobalFunc::IS_COLUMN_MAJOR_KS_SOLVER(PARAM.inp.ks_solver)) - { - const int nrow = this->SR->get_atom_pair(0).get_paraV()->get_row_size(); - if(PARAM.inp.td_stype == 2) - { - module_rt::folding_HR_td(*this->SR, this->hsk->get_sk(), this->kvec_d[ik], nrow, 1, ucell, TD_info::cart_At); - } - else - { - hamilt::folding_HR(*this->SR, this->hsk->get_sk(), this->kvec_d[ik], nrow, 1); - } - } - else - { - const int ncol = this->SR->get_atom_pair(0).get_paraV()->get_col_size(); - if(PARAM.inp.td_stype == 2) - { - module_rt::folding_HR_td(*this->SR, this->hsk->get_sk(), this->kvec_d[ik], ncol, 0, ucell, TD_info::cart_At); - } - else - { - hamilt::folding_HR(*this->SR, this->hsk->get_sk(), this->kvec_d[ik], ncol, 0); - } - } - - // update kvec_d_old - this->kvec_d_old = this->kvec_d[ik]; - - ModuleBase::timer::tick("OverlapNew", "contributeHk"); -} -template -TK* hamilt::OverlapNew>::getSk() -{ - if (this->hsk != nullptr) - { - return this->hsk->get_sk(); - } - return nullptr; -} - -template class hamilt::OverlapNew>; -template class hamilt::OverlapNew, double>>; -template class hamilt::OverlapNew, std::complex>>; diff --git a/source/source_lcao/module_operator_lcao/overlap_new.h b/source/source_lcao/module_operator_lcao/overlap_new.h deleted file mode 100644 index a92da60834..0000000000 --- a/source/source_lcao/module_operator_lcao/overlap_new.h +++ /dev/null @@ -1,95 +0,0 @@ -#ifndef W_ABACUS_DEVELOP_ABACUS_DEVELOP_SOURCE_MODULE_HAMILT_LCAO_HAMILT_LCAODFT_OPERATOR_LCAO_OVERLAP_NEW_H -#define W_ABACUS_DEVELOP_ABACUS_DEVELOP_SOURCE_MODULE_HAMILT_LCAO_HAMILT_LCAODFT_OPERATOR_LCAO_OVERLAP_NEW_H -#include "source_basis/module_ao/parallel_orbitals.h" -#include "source_basis/module_nao/two_center_integrator.h" -#include "source_cell/module_neighbor/sltk_grid_driver.h" -#include "source_cell/unitcell.h" -#include "source_lcao/module_operator_lcao/operator_lcao.h" -#include "source_lcao/module_hcontainer/hcontainer.h" -#include - -namespace hamilt -{ - -#ifndef __OVERLAPNEWTEMPLATE -#define __OVERLAPNEWTEMPLATE - -/// The OverlapNew class template inherits from class T -/// it is used to calculate the overlap of wavefunction basis -/// Template parameters: -/// - T: base class, it would be OperatorLCAO or OperatorPW -/// - TR: data type of real space Hamiltonian, it would be double or std::complex -template -class OverlapNew : public T -{ -}; - -#endif - -/// OverlapNew class template specialization for OperatorLCAO base class -/// It is used to calculate the overlap matrix in real space and fold it to k-space -/// SR = -/// SK = = \sum_{R} e^{ikR} SR -/// Template parameters: -/// - TK: data type of k-space Hamiltonian -/// - TR: data type of real space Hamiltonian -template -class OverlapNew> : public OperatorLCAO -{ - public: - OverlapNew>(HS_Matrix_K* hsk_in, - const std::vector>& kvec_d_in, - hamilt::HContainer* hR_in, - hamilt::HContainer* SR_in, - const UnitCell* ucell_in, - const std::vector& orb_cutoff, - const Grid_Driver* GridD_in, - const TwoCenterIntegrator* intor); - - virtual void contributeHR() override; - - virtual void contributeHk(int ik) override; - - TK* getSk(); - - private: - const UnitCell* ucell = nullptr; - - std::vector orb_cutoff_; - - hamilt::HContainer* SR = nullptr; - - const TwoCenterIntegrator* intor_ = nullptr; - - bool SR_fixed_done = false; - - /** - * @brief initialize SR, search the nearest neighbor atoms - * HContainer is used to store the overlap matrix with specific atom-pairs - * the size of SR will be fixed after initialization - */ - void initialize_SR(const Grid_Driver* GridD_in); - - /** - * @brief calculate the overlap matrix with specific atom-pairs - * nearest neighbor atoms don't need to be calculated again - * loop the atom-pairs in SR and calculate the overlap matrix - */ - void calculate_SR(); - - /** - * @brief calculate the SR local matrix of atom pair - */ - void cal_SR_IJR(const int& iat1, - const int& iat2, - const Parallel_Orbitals* paraV, - const ModuleBase::Vector3& dtau, - TR* data_pointer); - - // if k vector is not changed, then do nothing and return - // default of kvec_d_old is (-10,-10,-10), which is not a valid k vector - ModuleBase::Vector3 kvec_d_old = ModuleBase::Vector3(-10, -10, -10); -}; - -} // namespace hamilt -#endif diff --git a/source/source_lcao/module_operator_lcao/td_ekinetic_lcao.cpp b/source/source_lcao/module_operator_lcao/td_ekinetic_lcao.cpp index e81aafade2..c8e3f8d307 100644 --- a/source/source_lcao/module_operator_lcao/td_ekinetic_lcao.cpp +++ b/source/source_lcao/module_operator_lcao/td_ekinetic_lcao.cpp @@ -10,7 +10,6 @@ #include "source_lcao/center2_orb-orb11.h" #include "source_lcao/spar_hsr.h" #include "source_lcao/module_hcontainer/hcontainer_funcs.h" -#include "source_pw/module_pwdft/global.h" namespace hamilt { @@ -95,7 +94,7 @@ void TDEkinetic>::calculate_HR() hamilt::BaseMatrix>* tmp = this->hR_tmp->find_matrix(iat1, iat2, R_index2); if (tmp != nullptr) { - if (TD_info::out_current) + if (TD_info::out_current == 1) { std::complex* tmp_c[3] = {nullptr, nullptr, nullptr}; for (int i = 0; i < 3; i++) @@ -342,10 +341,14 @@ void TDEkinetic>::contributeHR() static_cast*>(this->next_sub_op)->set_HR_fixed(this->hR_tmp); } // initialize current term if needed - if (TD_info::out_current) + if (TD_info::out_current == 1) { TD_info::td_vel_op->initialize_current_term(this->hR_tmp, paraV); } + if (TD_info::out_current==2) + { + TD_info::td_vel_op->set_velocity_HR(this->hR_tmp); + } // calculate the values in hR_tmp this->update_td(); this->hR_tmp->set_zero(); @@ -375,11 +378,8 @@ void TDEkinetic>::contributeHk(int ik) { for (int spin_now = 0; spin_now < spin_tot; spin_now++) { - sparse_format::cal_HContainer_cd(*(paraV), - spin_now, - 1e-10, - *hR_tmp, - TD_info::td_vel_op->HR_sparse_td_vel[spin_now]); + sparse_format::cal_HContainer>( + *(paraV), 1e-10, *hR_tmp, TD_info::td_vel_op->HR_sparse_td_vel[spin_now]); } output_hR_done = true; } diff --git a/source/source_lcao/module_operator_lcao/td_ekinetic_lcao.h b/source/source_lcao/module_operator_lcao/td_ekinetic_lcao.h index fba4ccccf8..25f3c65c35 100644 --- a/source/source_lcao/module_operator_lcao/td_ekinetic_lcao.h +++ b/source/source_lcao/module_operator_lcao/td_ekinetic_lcao.h @@ -98,7 +98,7 @@ class TDEkinetic> : public OperatorLCAO const Grid_Driver* Grid = nullptr; - const K_Vectors* kv; + const K_Vectors* kv = nullptr; /// @brief correction term i A nabla void td_ekinetic_scalar(std::complex* Hloc, const TR& Sloc, int nnr); diff --git a/source/source_lcao/module_operator_lcao/td_nonlocal_lcao.cpp b/source/source_lcao/module_operator_lcao/td_nonlocal_lcao.cpp index a5eba57688..90c1970120 100644 --- a/source/source_lcao/module_operator_lcao/td_nonlocal_lcao.cpp +++ b/source/source_lcao/module_operator_lcao/td_nonlocal_lcao.cpp @@ -1,16 +1,20 @@ #include "td_nonlocal_lcao.h" -#include "source_io/module_parameter/parameter.h" #include "source_base/timer.h" #include "source_base/tool_title.h" #include "source_cell/module_neighbor/sltk_grid_driver.h" -#include "source_lcao/module_operator_lcao/operator_lcao.h" +#include "source_io/module_parameter/parameter.h" #include "source_lcao/module_hcontainer/hcontainer_funcs.h" +#include "source_lcao/module_operator_lcao/operator_lcao.h" #include "source_lcao/module_rt/snap_psibeta_half_tddft.h" -#include "source_pw/module_pwdft/global.h" +#ifdef __CUDA +#include "source_base/module_device/device.h" +#include "source_lcao/module_rt/kernels/snap_psibeta_gpu.h" +#endif + #ifdef _OPENMP -#include #include +#include #endif template @@ -127,9 +131,27 @@ void hamilt::TDNonlocal>::calculate_HR() ModuleBase::TITLE("TDNonlocal", "calculate_HR"); ModuleBase::timer::tick("TDNonlocal", "calculate_HR"); + // Determine whether to use GPU path: + // GPU is only used when both __CUDA is defined AND device is set to "gpu" +#ifdef __CUDA + const bool use_gpu = (PARAM.inp.device == "gpu"); +#else + const bool use_gpu = false; +#endif + + // Initialize GPU resources if using GPU + if (use_gpu) + { +#ifdef __CUDA + // GPU device is already bound by DeviceContext::init() in read_input.cpp + // Just initialize the GPU resources for this module + module_rt::gpu::init_snap_psibeta_gpu(); +#endif + } + const Parallel_Orbitals* paraV = this->hR_tmp->get_atom_pair(0).get_paraV(); const int npol = this->ucell->get_npol(); - const int nlm_dim = TD_info::out_current ? 4 : 1; + const int nlm_dim = TD_info::out_current==1 ? 4 : 1; // 1. calculate for each pair of atoms for (int iat0 = 0; iat0 < this->ucell->nat; iat0++) @@ -145,9 +167,30 @@ void hamilt::TDNonlocal>::calculate_HR() nlm_tot[i].resize(nlm_dim); } - #pragma omp parallel + if (use_gpu) { - #pragma omp for schedule(dynamic) + ModuleBase::timer::tick("TD_Efficiency", "snap_psibeta"); +#ifdef __CUDA + // GPU path: Atom-level GPU batch processing + module_rt::gpu::snap_psibeta_atom_batch_gpu(orb_, + this->ucell->infoNL, + T0, + tau0 * this->ucell->lat0, + cart_At, + adjs, + this->ucell, + paraV, + npol, + nlm_dim, + nlm_tot); +#endif + ModuleBase::timer::tick("TD_Efficiency", "snap_psibeta"); + } + else + { + ModuleBase::timer::tick("TD_Efficiency", "snap_psibeta"); + // CPU path: OpenMP parallel over neighbors to compute nlm_tot +#pragma omp parallel for schedule(dynamic) for (int ad = 0; ad < adjs.adj_num + 1; ++ad) { const int T1 = adjs.ntype[ad]; @@ -160,35 +203,37 @@ void hamilt::TDNonlocal>::calculate_HR() all_indexes.insert(all_indexes.end(), col_indexes.begin(), col_indexes.end()); std::sort(all_indexes.begin(), all_indexes.end()); all_indexes.erase(std::unique(all_indexes.begin(), all_indexes.end()), all_indexes.end()); - for (int iw1l = 0; iw1l < all_indexes.size(); iw1l += npol) + + // CPU path: loop over orbitals + for (size_t iw1l = 0; iw1l < all_indexes.size(); iw1l += npol) { const int iw1 = all_indexes[iw1l] / npol; std::vector>> nlm; - // nlm is a vector of vectors, but size of outer vector is only 1 when out_current is false - // and size of outer vector is 4 when out_current is true (3 for , 1 for - // ) inner loop : all projectors (L0,M0) - - // snap_psibeta_half_tddft() are used to calculate - // and as well if current are needed module_rt::snap_psibeta_half_tddft(orb_, - this->ucell->infoNL, - nlm, - tau1 * this->ucell->lat0, - T1, - atom1->iw2l[iw1], - atom1->iw2m[iw1], - atom1->iw2n[iw1], - tau0 * this->ucell->lat0, - T0, - cart_At, - TD_info::out_current); + this->ucell->infoNL, + nlm, + tau1 * this->ucell->lat0, + T1, + atom1->iw2l[iw1], + atom1->iw2m[iw1], + atom1->iw2n[iw1], + tau0 * this->ucell->lat0, + T0, + cart_At, + TD_info::out_current==1); for (int dir = 0; dir < nlm_dim; dir++) { nlm_tot[ad][dir].insert({all_indexes[iw1l], nlm[dir]}); } } } + ModuleBase::timer::tick("TD_Efficiency", "snap_psibeta"); + } + // 2. calculate D for each pair of atoms + // This runs for BOTH GPU and CPU paths +#pragma omp parallel + { #ifdef _OPENMP // record the iat number of the adjacent atoms std::set ad_atom_set; @@ -205,7 +250,7 @@ void hamilt::TDNonlocal>::calculate_HR() const int thread_id = omp_get_thread_num(); std::set ad_atom_set_thread; int i = 0; - for(const auto iat1 : ad_atom_set) + for (const auto iat1: ad_atom_set) { if (i % num_threads == thread_id) { @@ -215,7 +260,6 @@ void hamilt::TDNonlocal>::calculate_HR() } #endif - // 2. calculate D for each pair of atoms for (int ad1 = 0; ad1 < adjs.adj_num + 1; ++ad1) { const int T1 = adjs.ntype[ad1]; @@ -228,7 +272,7 @@ void hamilt::TDNonlocal>::calculate_HR() continue; } #endif - + const ModuleBase::Vector3& R_index1 = adjs.box[ad1]; for (int ad2 = 0; ad2 < adjs.adj_num + 1; ++ad2) { @@ -244,12 +288,12 @@ void hamilt::TDNonlocal>::calculate_HR() // if not found , skip this pair of atoms if (tmp != nullptr) { - if (TD_info::out_current) + if (TD_info::out_current==1) { std::complex* tmp_c[3] = {nullptr, nullptr, nullptr}; - for (int i = 0; i < 3; i++) + for (int ii = 0; ii < 3; ii++) { - tmp_c[i] = TD_info::td_vel_op->get_current_term_pointer(i) + tmp_c[ii] = TD_info::td_vel_op->get_current_term_pointer(ii) ->find_matrix(iat1, iat2, R_vector[0], R_vector[1], R_vector[2]) ->get_pointer(); } @@ -276,13 +320,13 @@ void hamilt::TDNonlocal>::calculate_HR() } } } - } - } - + } // end omp parallel for matrix assembly + } // end for iat0 ModuleBase::timer::tick("TDNonlocal", "calculate_HR"); } // cal_HR_IJR() + template void hamilt::TDNonlocal>::cal_HR_IJR( const int& iat1, @@ -294,7 +338,7 @@ void hamilt::TDNonlocal>::cal_HR_IJR( std::complex* data_pointer, std::complex** data_pointer_c) { - const int nlm_dim = TD_info::out_current ? 4 : 1; + const int nlm_dim = TD_info::out_current==1 ? 4 : 1; // npol is the number of polarizations, // 1 for non-magnetic (one Hamiltonian matrix only has spin-up or spin-down), // 2 for magnetic (one Hamiltonian matrix has both spin-up and spin-down) @@ -396,7 +440,6 @@ void hamilt::TDNonlocal>::set_HR_fixed(void* hR_tmp this->allocated = false; } - // contributeHR() template void hamilt::TDNonlocal>::contributeHR() @@ -436,7 +479,6 @@ void hamilt::TDNonlocal>::contributeHR() return; } - template void hamilt::TDNonlocal>::contributeHk(int ik) { diff --git a/source/source_lcao/module_operator_lcao/td_pot_hybrid.cpp b/source/source_lcao/module_operator_lcao/td_pot_hybrid.cpp index f024c6fbff..72f59490d7 100644 --- a/source/source_lcao/module_operator_lcao/td_pot_hybrid.cpp +++ b/source/source_lcao/module_operator_lcao/td_pot_hybrid.cpp @@ -5,11 +5,6 @@ #include "source_cell/module_neighbor/sltk_grid_driver.h" #include "source_lcao/module_operator_lcao/operator_lcao.h" #include "source_lcao/module_hcontainer/hcontainer_funcs.h" -#include "source_pw/module_pwdft/global.h" - -// Constructor -template -cal_r_overlap_R hamilt::TD_pot_hybrid>::r_calculator; template hamilt::TD_pot_hybrid>::TD_pot_hybrid( @@ -207,7 +202,7 @@ void hamilt::TD_pot_hybrid>::cal_HR_IJR(const int& const int N2 = iw2n2[iw2]; const int m2 = iw2m2[iw2]; - ModuleBase::Vector3 tmp_r = r_calculator.get_psi_r_psi(tau1 * this->ucell->lat0, T1, L1, m1, N1, tau2 * this->ucell->lat0, T2, L2, m2, N2); + ModuleBase::Vector3 tmp_r = r_calculator->get_psi_r_psi(tau1 * this->ucell->lat0, T1, L1, m1, N1, tau2 * this->ucell->lat0, T2, L2, m2, N2); // convert m (0,1,...2l) to M (-l, -l+1, ..., l-1, l) int M2 = (m2 % 2 == 0) ? -m2 / 2 : (m2 + 1) / 2; @@ -228,12 +223,7 @@ template void hamilt::TD_pot_hybrid>::init_td() { // initialize the r_calculator - if(TD_info::td_vel_op->get_istep()==(TD_info::estep_shift-1)) - { - //std::cout << "init_r_overlap" <hR->get_paraV(), orb_); - } - //hk_hybrid.resize(this->hR->get_paraV()->nloc); + this->r_calculator = &TD_info::td_vel_op->r_calculator; } template void hamilt::TD_pot_hybrid>::update_td() diff --git a/source/source_lcao/module_operator_lcao/td_pot_hybrid.h b/source/source_lcao/module_operator_lcao/td_pot_hybrid.h index 82f17b6fed..bdb53f3480 100644 --- a/source/source_lcao/module_operator_lcao/td_pot_hybrid.h +++ b/source/source_lcao/module_operator_lcao/td_pot_hybrid.h @@ -8,7 +8,7 @@ #include "source_lcao/module_operator_lcao/operator_lcao.h" #include "source_lcao/module_hcontainer/hcontainer.h" #include -#include "source_io/cal_r_overlap_R.h" +#include "source_io/module_hs/cal_r_overlap_R.h" #include "source_lcao/module_rt/td_info.h" #include "source_estate/module_pot/H_TDDFT_pw.h" @@ -18,8 +18,8 @@ namespace hamilt #ifndef __TD_POT_HYBRIDTEMPLATE #define __TD_POT_HYBRIDTEMPLATE -/// The EkineticNew class template inherits from class T -/// it is used to calculate the electronic kinetic +/// The TD_pot_hybrid class template inherits from class T +/// it is used to calculate the time-dependent hybrid potential /// Template parameters: /// - T: base class, it would be OperatorLCAO or OperatorPW /// - TR: data type of real space Hamiltonian, it would be double or std::complex @@ -30,10 +30,8 @@ class TD_pot_hybrid : public T #endif -/// EkineticNew class template specialization for OperatorLCAO base class -/// It is used to calculate the electronic kinetic matrix in real space and fold it to k-space -/// HR = -/// HK = = \sum_{R} e^{ikR} HR +/// TD_pot_hybrid class template specialization for OperatorLCAO base class +/// It is used to calculate the time-dependent hybrid potential matrix in real space and fold it to k-space /// Template parameters: /// - TK: data type of k-space Hamiltonian /// - TR: data type of real space Hamiltonian @@ -42,7 +40,7 @@ class TD_pot_hybrid> : public OperatorLCAO { public: /** - * @brief Construct a new EkineticNew object + * @brief Construct a new TD_pot_hybrid object */ TD_pot_hybrid>(HS_Matrix_K* hsk_in, const K_Vectors* kv_in, @@ -55,7 +53,7 @@ class TD_pot_hybrid> : public OperatorLCAO const TwoCenterIntegrator* intor); /** - * @brief Destroy the EkineticNew object + * @brief Destroy the TD_pot_hybrid object */ ~TD_pot_hybrid>(); @@ -86,7 +84,7 @@ class TD_pot_hybrid> : public OperatorLCAO bool HR_fixed_done = false; //tddft part - static cal_r_overlap_R r_calculator; + cal_r_overlap_R* r_calculator; //ETD //std::vector> hk_hybrid; //ETD diff --git a/source/source_lcao/module_operator_lcao/test/CMakeLists.txt b/source/source_lcao/module_operator_lcao/test/CMakeLists.txt index e39a3dac19..a1c52935cf 100644 --- a/source/source_lcao/module_operator_lcao/test/CMakeLists.txt +++ b/source/source_lcao/module_operator_lcao/test/CMakeLists.txt @@ -2,63 +2,86 @@ if(ENABLE_LCAO) remove_definitions(-DUSE_NEW_TWO_CENTER) AddTest( - TARGET operator_overlap_test + TARGET MODULE_LCAO_operator_overlap_test LIBS parameter ${math_libs} psi base device container - SOURCES test_overlapnew.cpp ../overlap_new.cpp ../../module_hcontainer/func_folding.cpp - ../../module_hcontainer/base_matrix.cpp ../../module_hcontainer/hcontainer.cpp ../../module_hcontainer/atom_pair.cpp - ../../../source_basis/module_ao/parallel_orbitals.cpp + SOURCES test_overlap.cpp ../overlap.cpp ../operator_force_stress_utils.cpp ../../module_hcontainer/func_folding.cpp + ../../module_hcontainer/base_matrix.cpp ../../module_hcontainer/hcontainer.cpp ../../module_hcontainer/atom_pair.cpp + ../../module_hcontainer/func_transfer.cpp ../../module_hcontainer/output_hcontainer.cpp ../../module_hcontainer/transfer.cpp + ../../../source_io/module_output/sparse_matrix.cpp + ../../../source_basis/module_ao/parallel_orbitals.cpp ../../../source_basis/module_ao/ORB_atomic_lm.cpp tmp_mocks.cpp ../../../source_hamilt/operator.cpp - ../../../source_lcao/module_rt/td_info.cpp - ../../../source_lcao/module_rt/td_folding.cpp - ../../../source_estate/module_pot/H_TDDFT_pw.cpp + ../../module_rt/td_folding.cpp ) AddTest( - TARGET operator_overlap_cd_test + TARGET MODULE_LCAO_operator_overlap_serial_test LIBS parameter ${math_libs} psi base device container - SOURCES test_overlapnew_cd.cpp ../overlap_new.cpp ../../module_hcontainer/func_folding.cpp - ../../module_hcontainer/base_matrix.cpp ../../module_hcontainer/hcontainer.cpp ../../module_hcontainer/atom_pair.cpp - ../../../source_basis/module_ao/parallel_orbitals.cpp + SOURCES test_overlap_serial.cpp ../overlap.cpp ../operator_force_stress_utils.cpp ../../module_hcontainer/func_folding.cpp + ../../module_hcontainer/base_matrix.cpp ../../module_hcontainer/hcontainer.cpp ../../module_hcontainer/atom_pair.cpp + ../../module_hcontainer/func_transfer.cpp ../../module_hcontainer/output_hcontainer.cpp ../../module_hcontainer/transfer.cpp + ../../../source_io/module_output/sparse_matrix.cpp + ../../../source_basis/module_ao/parallel_orbitals.cpp ../../../source_basis/module_ao/ORB_atomic_lm.cpp tmp_mocks.cpp ../../../source_hamilt/operator.cpp - ../../../source_lcao/module_rt/td_info.cpp - ../../../source_lcao/module_rt/td_folding.cpp - ../../../source_estate/module_pot/H_TDDFT_pw.cpp + ../../module_rt/td_folding.cpp ) AddTest( - TARGET operator_ekinetic_test + TARGET MODULE_LCAO_operator_overlap_cd_test LIBS parameter ${math_libs} psi base device container - SOURCES test_ekineticnew.cpp ../ekinetic_new.cpp ../../module_hcontainer/func_folding.cpp - ../../module_hcontainer/base_matrix.cpp ../../module_hcontainer/hcontainer.cpp ../../module_hcontainer/atom_pair.cpp - ../../../source_basis/module_ao/parallel_orbitals.cpp + SOURCES test_overlap_cd.cpp ../overlap.cpp ../operator_force_stress_utils.cpp ../../module_hcontainer/func_folding.cpp + ../../module_hcontainer/base_matrix.cpp ../../module_hcontainer/hcontainer.cpp ../../module_hcontainer/atom_pair.cpp + ../../module_hcontainer/func_transfer.cpp ../../module_hcontainer/output_hcontainer.cpp ../../module_hcontainer/transfer.cpp + ../../../source_io/module_output/sparse_matrix.cpp + ../../../source_basis/module_ao/parallel_orbitals.cpp ../../../source_basis/module_ao/ORB_atomic_lm.cpp tmp_mocks.cpp ../../../source_hamilt/operator.cpp + ../../module_rt/td_folding.cpp ) AddTest( - TARGET operator_nonlocal_test + TARGET MODULE_LCAO_operator_ekinetic_test LIBS parameter ${math_libs} psi base device container - SOURCES test_nonlocalnew.cpp ../nonlocal_new.cpp ../../module_hcontainer/func_folding.cpp - ../../module_hcontainer/base_matrix.cpp ../../module_hcontainer/hcontainer.cpp ../../module_hcontainer/atom_pair.cpp - ../../../source_basis/module_ao/parallel_orbitals.cpp + SOURCES test_ekinetic.cpp ../ekinetic.cpp ../operator_force_stress_utils.cpp ../../module_hcontainer/func_folding.cpp + ../../module_hcontainer/base_matrix.cpp ../../module_hcontainer/hcontainer.cpp ../../module_hcontainer/atom_pair.cpp + ../../../source_basis/module_ao/parallel_orbitals.cpp ../../../source_basis/module_ao/ORB_atomic_lm.cpp tmp_mocks.cpp ../../../source_hamilt/operator.cpp ) AddTest( - TARGET operator_T_NL_cd_test - LIBS parameter ${math_libs} psi base device container - SOURCES test_T_NL_cd.cpp ../nonlocal_new.cpp ../ekinetic_new.cpp ../../module_hcontainer/func_folding.cpp - ../../module_hcontainer/base_matrix.cpp ../../module_hcontainer/hcontainer.cpp ../../module_hcontainer/atom_pair.cpp - ../../../source_basis/module_ao/parallel_orbitals.cpp + TARGET MODULE_LCAO_operator_ekinetic_serial_test + LIBS parameter ${math_libs} psi base device container + SOURCES test_ekinetic_serial.cpp ../ekinetic.cpp ../operator_force_stress_utils.cpp ../../module_hcontainer/func_folding.cpp + ../../module_hcontainer/base_matrix.cpp ../../module_hcontainer/hcontainer.cpp ../../module_hcontainer/atom_pair.cpp + ../../../source_basis/module_ao/parallel_orbitals.cpp + ../../../source_basis/module_ao/ORB_atomic_lm.cpp + tmp_mocks.cpp ../../../source_hamilt/operator.cpp +) + +AddTest( + TARGET MODULE_LCAO_operator_nonlocal_test + LIBS parameter ${math_libs} psi base device container + SOURCES test_nonlocal.cpp ../nonlocal.cpp ../operator_force_stress_utils.cpp ../../module_hcontainer/func_folding.cpp + ../../module_hcontainer/base_matrix.cpp ../../module_hcontainer/hcontainer.cpp ../../module_hcontainer/atom_pair.cpp + ../../../source_basis/module_ao/parallel_orbitals.cpp + ../../../source_basis/module_ao/ORB_atomic_lm.cpp + tmp_mocks.cpp ../../../source_hamilt/operator.cpp +) + +AddTest( + TARGET MODULE_LCAO_operator_T_NL_cd_test + LIBS parameter ${math_libs} psi base device container + SOURCES test_T_NL_cd.cpp ../nonlocal.cpp ../ekinetic.cpp ../operator_force_stress_utils.cpp ../../module_hcontainer/func_folding.cpp + ../../module_hcontainer/base_matrix.cpp ../../module_hcontainer/hcontainer.cpp ../../module_hcontainer/atom_pair.cpp + ../../../source_basis/module_ao/parallel_orbitals.cpp ../../../source_basis/module_ao/ORB_atomic_lm.cpp tmp_mocks.cpp ../../../source_hamilt/operator.cpp ) AddTest( - TARGET operator_dftu_test + TARGET MODULE_LCAO_operator_dftu_test LIBS parameter ${math_libs} psi base device container SOURCES test_dftu.cpp ../dftu_lcao.cpp ../../module_hcontainer/func_folding.cpp ../../module_hcontainer/base_matrix.cpp ../../module_hcontainer/hcontainer.cpp ../../module_hcontainer/atom_pair.cpp @@ -69,7 +92,7 @@ AddTest( install(FILES parallel_operator_tests.sh DESTINATION ${CMAKE_CURRENT_BINARY_DIR}) find_program(BASH bash) -add_test(NAME operators_para_test +add_test(NAME MODULE_LCAO_operators_para_test COMMAND ${BASH} parallel_operator_tests.sh WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} ) diff --git a/source/source_lcao/module_operator_lcao/test/parallel_operator_tests.sh b/source/source_lcao/module_operator_lcao/test/parallel_operator_tests.sh index b30c22e774..b039a99285 100644 --- a/source/source_lcao/module_operator_lcao/test/parallel_operator_tests.sh +++ b/source/source_lcao/module_operator_lcao/test/parallel_operator_tests.sh @@ -8,15 +8,15 @@ for i in 2 3 4; do continue fi echo "TEST in parallel, nprocs=$i" - mpirun -np $i ./operator_overlap_cd_test + mpirun --allow-run-as-root -np $i ./MODULE_LCAO_operator_overlap_cd_test e1=$? - mpirun -np $i ./operator_overlap_test + mpirun --allow-run-as-root -np $i ./MODULE_LCAO_operator_overlap_test e2=$? - mpirun -np $i ./operator_ekinetic_test + mpirun --allow-run-as-root -np $i ./MODULE_LCAO_operator_ekinetic_test e3=$? - mpirun -np $i ./operator_nonlocal_test + mpirun --allow-run-as-root -np $i ./MODULE_LCAO_operator_nonlocal_test e4=$? - mpirun -np $i ./operator_T_NL_cd_test + mpirun --allow-run-as-root -np $i ./MODULE_LCAO_operator_T_NL_cd_test e5=$? if [[ $e1 -ne 0 || $e2 -ne 0 || $e3 -ne 0 || $e4 -ne 0 || $e5 -ne 0 ]]; then echo -e "\e[1;33m [ FAILED ] \e[0m"\ diff --git a/source/source_lcao/module_operator_lcao/test/test_T_NL_cd.cpp b/source/source_lcao/module_operator_lcao/test/test_T_NL_cd.cpp index 5f3aa117ec..7ab72fa2c8 100644 --- a/source/source_lcao/module_operator_lcao/test/test_T_NL_cd.cpp +++ b/source/source_lcao/module_operator_lcao/test/test_T_NL_cd.cpp @@ -1,12 +1,12 @@ -#include "../ekinetic_new.h" -#include "../nonlocal_new.h" +#include "../ekinetic.h" +#include "../nonlocal.h" #include "gtest/gtest.h" #include //--------------------------------------- -// Unit test of EkineticNew + NonlocalNew class -// EkineticNew and NonlocalNew are derivative classes of Operator, used to calculate the T+VNL matrix +// Unit test of EKinetic + Nonlocal class +// EKinetic and Nonlocal are derivative classes of Operator, used to calculate the T+VNL matrix // It use HContainer to store the real space HR matrix // In this test, we test the correctness and time consuming of 6 functions in T+VNL class // - initialize_HR() called in two constructors @@ -57,7 +57,7 @@ class TNLTest : public ::testing::Test ucell.atoms[0].iw2n[iw] = 0; } ucell.set_iat2iwt(2); - // for NonlocalNew + // for Nonlocal ucell.infoNL.Beta = new Numerical_Nonlocal[ucell.ntype]; ucell.atoms[0].ncpp.d_real.create(5, 5); ucell.atoms[0].ncpp.d_real.zero_out(); @@ -131,7 +131,7 @@ TEST_F(TNLTest, testTVNLcd2cd) Grid_Driver gd(0, 0); std::chrono::high_resolution_clock::time_point start_time = std::chrono::high_resolution_clock::now(); hamilt::Operator>* op - = new hamilt::EkineticNew, std::complex>>(&hsk, + = new hamilt::EKinetic, std::complex>>(&hsk, kvec_d_in, HR, &ucell, @@ -139,7 +139,7 @@ TEST_F(TNLTest, testTVNLcd2cd) &gd, &intor_); hamilt::Operator>* op1 - = new hamilt::NonlocalNew, std::complex>>(&hsk, + = new hamilt::Nonlocal, std::complex>>(&hsk, kvec_d_in, HR, &ucell, diff --git a/source/source_lcao/module_operator_lcao/test/test_dftu.cpp b/source/source_lcao/module_operator_lcao/test/test_dftu.cpp index 12be312278..31adb426ad 100644 --- a/source/source_lcao/module_operator_lcao/test/test_dftu.cpp +++ b/source/source_lcao/module_operator_lcao/test/test_dftu.cpp @@ -7,23 +7,27 @@ #undef private #include "../dftu_lcao.h" #include "source_lcao/module_dftu/dftu.h" -ModuleDFTU::DFTU::DFTU(){}; -ModuleDFTU::DFTU::~DFTU(){}; -namespace GlobalC -{ -ModuleDFTU::DFTU dftu; -} + +Plus_U::Plus_U(){}; +Plus_U::~Plus_U(){}; + +Plus_U dftu; +double Plus_U::energy_u = 0.0; +std::vector Plus_U::U = {}; // U (Hubbard parameter U) +std::vector Plus_U::orbital_corr = {}; + const hamilt::HContainer* tmp_DMR; -const hamilt::HContainer* ModuleDFTU::DFTU::get_dmr(int ispin) const + +const hamilt::HContainer* Plus_U::get_dmr(int ispin) const { return tmp_DMR; } //--------------------------------------- -// Unit test of DFTU class -// DFTU is a derivative class of Operator, it is used to calculate the kinetic matrix +// Unit test of Plus_U class +// Plus_U is a derivative class of Operator, it is used to calculate the kinetic matrix // It use HContainer to store the real space HR matrix -// In this test, we test the correctness and time consuming of 3 functions in DFTU class +// In this test, we test the correctness and time consuming of 3 functions in Plus_U class // - initialize_HR() called in constructor // - contributeHR() // - contributeHk() @@ -35,6 +39,7 @@ const hamilt::HContainer* ModuleDFTU::DFTU::get_dmr(int ispin) const // modify test_size to test different size of unitcell int test_size = 10; int test_nw = 10; // please larger than 5 + class DFTUTest : public ::testing::Test { protected: @@ -82,20 +87,20 @@ class DFTUTest : public ::testing::Test tmp_DMR = DMR; // setting of DFTU - GlobalC::dftu.locale.resize(test_size); + dftu.locale.resize(test_size); for (int iat = 0; iat < test_size; iat++) { - GlobalC::dftu.locale[iat].resize(3); + dftu.locale[iat].resize(3); for (int l = 0; l < 3; l++) { - GlobalC::dftu.locale[iat][l].resize(1); - GlobalC::dftu.locale[iat][l][0].resize(2); - GlobalC::dftu.locale[iat][l][0][0].create(2 * l + 1, 2 * l + 1); - GlobalC::dftu.locale[iat][l][0][1].create(2 * l + 1, 2 * l + 1); + dftu.locale[iat][l].resize(1); + dftu.locale[iat][l][0].resize(2); + dftu.locale[iat][l][0][0].create(2 * l + 1, 2 * l + 1); + dftu.locale[iat][l][0][1].create(2 * l + 1, 2 * l + 1); } } - GlobalC::dftu.U = {U_test}; - GlobalC::dftu.orbital_corr = {orbital_c_test}; + Plus_U::U = {U_test}; + Plus_U::orbital_corr = {orbital_c_test}; PARAM.input.onsite_radius = 1.0; } @@ -155,7 +160,7 @@ TEST_F(DFTUTest, constructHRd2d) } std::chrono::high_resolution_clock::time_point start_time = std::chrono::high_resolution_clock::now(); hamilt::DFTU> - op(&hsk, kvec_d_in, HR, ucell, &gd, &intor_, {1.0}, &GlobalC::dftu); + op(&hsk, kvec_d_in, HR, ucell, &gd, &intor_, {1.0}, &dftu); std::chrono::high_resolution_clock::time_point end_time = std::chrono::high_resolution_clock::now(); std::chrono::duration elapsed_time = std::chrono::duration_cast>(end_time - start_time); @@ -169,7 +174,7 @@ TEST_F(DFTUTest, constructHRd2d) { for (int icc = 0; icc < 25; icc++) { - EXPECT_NEAR(GlobalC::dftu.locale[iat][2][0][0].c[icc], 0.5, 1e-10); + EXPECT_NEAR(dftu.locale[iat][2][0][0].c[icc], 0.5, 1e-10); } } // check the value of HR @@ -220,14 +225,14 @@ TEST_F(DFTUTest, constructHRd2cd) HR->get_wrapper()[i] = 0.0; } hamilt::DFTU, double>> - op(&hsk, kvec_d_in, HR, ucell, &gd, &intor_, {1.0}, &GlobalC::dftu); + op(&hsk, kvec_d_in, HR, ucell, &gd, &intor_, {1.0}, &dftu); op.contributeHR(); // check the occupations of dftu for spin-up for (int iat = 0; iat < test_size; iat++) { for (int icc = 0; icc < 25; icc++) { - EXPECT_NEAR(GlobalC::dftu.locale[iat][2][0][0].c[icc], 0.5, 1e-10); + EXPECT_NEAR(dftu.locale[iat][2][0][0].c[icc], 0.5, 1e-10); } } // check the value of HR @@ -260,7 +265,7 @@ TEST_F(DFTUTest, constructHRd2cd) { for (int icc = 0; icc < 25; icc++) { - EXPECT_NEAR(GlobalC::dftu.locale[iat][2][0][1].c[icc], 0.5, 1e-10); + EXPECT_NEAR(dftu.locale[iat][2][0][1].c[icc], 0.5, 1e-10); } } } diff --git a/source/source_lcao/module_operator_lcao/test/test_ekinetic.cpp b/source/source_lcao/module_operator_lcao/test/test_ekinetic.cpp new file mode 100644 index 0000000000..9edc265ccb --- /dev/null +++ b/source/source_lcao/module_operator_lcao/test/test_ekinetic.cpp @@ -0,0 +1,202 @@ +#include "../ekinetic.h" + +#include "gtest/gtest.h" + +//--------------------------------------- +// Unit test of EKinetic class +// EKinetic is a derivative class of Operator, it is used to calculate the kinetic matrix +// It use HContainer to store the real space HR matrix +// In this test, we test the correctness and time consuming of 3 functions in EKinetic class +// - initialize_HR() called in constructor +// - contributeHR() +// - contributeHk() +// - HR(double) and SK(complex) are tested in constructHRd2cd +// - HR(double) and SK(double) are tested in constructHRd2d +//--------------------------------------- + +// test_size is the number of atoms in the unitcell +// modify test_size to test different size of unitcell +int test_size = 10; +int test_nw = 10; +class EKineticTest : public ::testing::Test +{ + protected: + void SetUp() override + { +#ifdef __MPI + // MPI parallel settings + MPI_Comm_size(MPI_COMM_WORLD, &dsize); + MPI_Comm_rank(MPI_COMM_WORLD, &my_rank); +#endif + + // set up a unitcell, with one element and test_size atoms, each atom has test_nw orbitals + ucell.ntype = 1; + ucell.nat = test_size; + ucell.atoms = new Atom[ucell.ntype]; + ucell.iat2it = new int[ucell.nat]; + ucell.iat2ia = new int[ucell.nat]; + ucell.atoms[0].tau.resize(ucell.nat); + ucell.itia2iat.create(ucell.ntype, ucell.nat); + for (int iat = 0; iat < ucell.nat; iat++) + { + ucell.iat2it[iat] = 0; + ucell.iat2ia[iat] = iat; + ucell.atoms[0].tau[iat] = ModuleBase::Vector3(0.0, 0.0, 0.0); + ucell.itia2iat(0, iat) = iat; + } + ucell.atoms[0].na = test_size; + ucell.atoms[0].nw = test_nw; + ucell.atoms[0].iw2l.resize(test_nw); + ucell.atoms[0].iw2m.resize(test_nw); + ucell.atoms[0].iw2n.resize(test_nw); + for (int iw = 0; iw < test_nw; ++iw) + { + ucell.atoms[0].iw2l[iw] = 0; + ucell.atoms[0].iw2m[iw] = 0; + ucell.atoms[0].iw2n[iw] = 0; + } + ucell.set_iat2iwt(1); + init_parav(); + // set up a HContainer with ucell + HR = new hamilt::HContainer(paraV); + } + + void TearDown() override + { + delete HR; + delete paraV; + delete[] ucell.atoms; + } + +#ifdef __MPI + void init_parav() + { + int nb = 10; + int global_row = test_size * test_nw; + int global_col = test_size * test_nw; + std::ofstream ofs_running; + paraV = new Parallel_Orbitals(); + paraV->init(global_row, global_col, nb, MPI_COMM_WORLD); + paraV->set_atomic_trace(ucell.get_iat2iwt(), test_size, global_row); + } +#else + void init_parav() + { + } +#endif + + UnitCell ucell; + hamilt::HContainer* HR; + Parallel_Orbitals* paraV; + TwoCenterIntegrator intor_; + + int dsize; + int my_rank = 0; +}; + +// using TEST_F to test EKinetic +TEST_F(EKineticTest, constructHRd2d) +{ + std::vector> kvec_d_in(1, ModuleBase::Vector3(0.0, 0.0, 0.0)); + hamilt::HS_Matrix_K hsk(paraV, true); + hsk.set_zero_hk(); + Grid_Driver gd(0, 0); + hamilt::EKinetic> + op(&hsk, kvec_d_in, HR, &ucell, {1.0}, &gd, &intor_); + op.contributeHR(); + // check the value of HR + for (int iap = 0; iap < HR->size_atom_pairs(); ++iap) + { + hamilt::AtomPair& tmp = HR->get_atom_pair(iap); + int iat1 = tmp.get_atom_i(); + int iat2 = tmp.get_atom_j(); + auto indexes1 = paraV->get_indexes_row(iat1); + auto indexes2 = paraV->get_indexes_col(iat2); + int nwt = indexes1.size() * indexes2.size(); + for (int i = 0; i < nwt; ++i) + { + EXPECT_EQ(tmp.get_pointer(0)[i], 1.0); + } + } + // calculate HK + op.contributeHk(0); + // check the value of HK + double* hk = hsk.get_hk(); + for (int i = 0; i < paraV->get_row_size() * paraV->get_col_size(); ++i) + { + EXPECT_EQ(hk[i], 1.0); + } + // calculate HR again + op.contributeHR(); + // check the value of HR + for (int iap = 0; iap < HR->size_atom_pairs(); ++iap) + { + hamilt::AtomPair& tmp = HR->get_atom_pair(iap); + int iat1 = tmp.get_atom_i(); + int iat2 = tmp.get_atom_j(); + auto indexes1 = paraV->get_indexes_row(iat1); + auto indexes2 = paraV->get_indexes_col(iat2); + int nwt = indexes1.size() * indexes2.size(); + for (int i = 0; i < nwt; ++i) + { + EXPECT_EQ(tmp.get_pointer(0)[i], 2.0); + } + } +} + +TEST_F(EKineticTest, constructHRd2cd) +{ + std::vector> kvec_d_in(2, ModuleBase::Vector3(0.0, 0.0, 0.0)); + kvec_d_in[1] = ModuleBase::Vector3(0.1, 0.2, 0.3); + hamilt::HS_Matrix_K> hsk(paraV, true); + hsk.set_zero_hk(); + Grid_Driver gd(0, 0); + hamilt::EKinetic, double>> + op(&hsk, kvec_d_in, HR, &ucell, {1.0}, &gd, &intor_); + op.contributeHR(); + // check the value of HR + for (int iap = 0; iap < HR->size_atom_pairs(); ++iap) + { + hamilt::AtomPair& tmp = HR->get_atom_pair(iap); + int iat1 = tmp.get_atom_i(); + int iat2 = tmp.get_atom_j(); + auto indexes1 = paraV->get_indexes_row(iat1); + auto indexes2 = paraV->get_indexes_col(iat2); + int nwt = indexes1.size() * indexes2.size(); + for (int i = 0; i < nwt; ++i) + { + EXPECT_EQ(tmp.get_pointer(0)[i], 1.0); + } + } + // calculate HK for gamma point + op.contributeHk(0); + auto* hk = hsk.get_hk(); + // check the value of HK of gamma point + for (int i = 0; i < paraV->get_row_size() * paraV->get_col_size(); ++i) + { + EXPECT_EQ(hk[i].real(), 1.0); + EXPECT_EQ(hk[i].imag(), 0.0); + } + // calculate HK for k point + hsk.set_zero_hk(); + op.contributeHk(1); + // check the value of HK + for (int i = 0; i < paraV->get_row_size() * paraV->get_col_size(); ++i) + { + EXPECT_NEAR(hk[i].real(), -1.6180339887498945 / 2, 1e-10); + EXPECT_NEAR(hk[i].imag(), -1.1755705045849467 / 2, 1e-10); + } +} + +int main(int argc, char** argv) +{ +#ifdef __MPI + MPI_Init(&argc, &argv); +#endif + testing::InitGoogleTest(&argc, argv); + int result = RUN_ALL_TESTS(); +#ifdef __MPI + MPI_Finalize(); +#endif + return result; +} diff --git a/source/source_lcao/module_operator_lcao/test/test_ekinetic_serial.cpp b/source/source_lcao/module_operator_lcao/test/test_ekinetic_serial.cpp new file mode 100644 index 0000000000..87ce65d434 --- /dev/null +++ b/source/source_lcao/module_operator_lcao/test/test_ekinetic_serial.cpp @@ -0,0 +1,851 @@ +#include "../ekinetic.h" + +#include "gtest/gtest.h" + +//--------------------------------------- +// Unit test of EKinetic class +// EKinetic is a derivative class of Operator, it is used to calculate the kinetic matrix +// It use HContainer to store the real space HR matrix +// In this test, we test the correctness and time consuming of 3 functions in EKinetic class +// - initialize_HR() called in constructor +// - contributeHR() +// - contributeHk() +// - HR(double) and SK(complex) are tested in constructHRd2cd +// - HR(double) and SK(double) are tested in constructHRd2d +//--------------------------------------- + +// test_size is the number of atoms in the unitcell +// modify test_size to test different size of unitcell +int test_size = 10; +int test_nw = 10; +class EKineticTest : public ::testing::Test +{ + protected: + void SetUp() override + { +#ifdef __MPI + // MPI parallel settings + MPI_Comm_size(MPI_COMM_WORLD, &dsize); + MPI_Comm_rank(MPI_COMM_WORLD, &my_rank); +#endif + + // set up a unitcell, with one element and test_size atoms, each atom has test_nw orbitals + ucell.ntype = 1; + ucell.nat = test_size; + ucell.atoms = new Atom[ucell.ntype]; + ucell.iat2it = new int[ucell.nat]; + ucell.iat2ia = new int[ucell.nat]; + ucell.atoms[0].tau.resize(ucell.nat); + ucell.itia2iat.create(ucell.ntype, ucell.nat); + for (int iat = 0; iat < ucell.nat; iat++) + { + ucell.iat2it[iat] = 0; + ucell.iat2ia[iat] = iat; + ucell.atoms[0].tau[iat] = ModuleBase::Vector3(0.0, 0.0, 0.0); + ucell.itia2iat(0, iat) = iat; + } + ucell.atoms[0].na = test_size; + ucell.atoms[0].nw = test_nw; + ucell.atoms[0].iw2l.resize(test_nw); + ucell.atoms[0].iw2m.resize(test_nw); + ucell.atoms[0].iw2n.resize(test_nw); + for (int iw = 0; iw < test_nw; ++iw) + { + ucell.atoms[0].iw2l[iw] = 0; + ucell.atoms[0].iw2m[iw] = 0; + ucell.atoms[0].iw2n[iw] = 0; + } + ucell.set_iat2iwt(1); + init_parav(); + // set up a HContainer with ucell + HR = new hamilt::HContainer(paraV); + } + + void TearDown() override + { + delete HR; + delete paraV; + delete[] ucell.atoms; + } + +#ifdef __MPI + void init_parav() + { + int nb = 10; + int global_row = test_size * test_nw; + int global_col = test_size * test_nw; + std::ofstream ofs_running; + paraV = new Parallel_Orbitals(); + paraV->init(global_row, global_col, nb, MPI_COMM_WORLD); + paraV->set_atomic_trace(ucell.get_iat2iwt(), test_size, global_row); + } +#else + void init_parav() + { + } +#endif + + UnitCell ucell; + hamilt::HContainer* HR; + Parallel_Orbitals* paraV; + TwoCenterIntegrator intor_; + + int dsize; + int my_rank = 0; +}; +// Test complex to complex template specialization +TEST_F(EKineticTest, constructHRcd2cd) +{ + // Create complex HR container + hamilt::HContainer>* HR_complex = new hamilt::HContainer>(paraV); + + std::vector> kvec_d_in(1, ModuleBase::Vector3(0.1, 0.2, 0.3)); + hamilt::HS_Matrix_K> hsk(paraV, true); + hsk.set_zero_hk(); + Grid_Driver gd(0, 0); + + hamilt::EKinetic, std::complex>> + op(&hsk, kvec_d_in, HR_complex, &ucell, {1.0}, &gd, &intor_); + op.contributeHR(); + + // Check that HR_complex has been initialized + // Note: In MPI parallel runs, some processes may not have any atom pairs + if (HR_complex->size_atom_pairs() > 0) + { + EXPECT_GT(HR_complex->size_atom_pairs(), 0); + } + + // Calculate HK + op.contributeHk(0); + auto* hk = hsk.get_hk(); + + // Verify HK is computed (values should be non-zero for non-gamma k-point) + bool has_nonzero = false; + for (int i = 0; i < paraV->get_row_size() * paraV->get_col_size(); ++i) + { + if (std::abs(hk[i]) > 1e-10) + { + has_nonzero = true; + break; + } + } + EXPECT_TRUE(has_nonzero); + + delete HR_complex; +} + +// Test set_HR_fixed method +TEST_F(EKineticTest, setHRFixed) +{ + std::vector> kvec_d_in(1, ModuleBase::Vector3(0.0, 0.0, 0.0)); + hamilt::HS_Matrix_K hsk(paraV, true); + hsk.set_zero_hk(); + Grid_Driver gd(0, 0); + + hamilt::EKinetic> + op(&hsk, kvec_d_in, HR, &ucell, {1.0}, &gd, &intor_); + + // First contributeHR - this creates and calculates HR_fixed internally + op.contributeHR(); + + // Check that HR values are 1.0 after first call + for (int iap = 0; iap < HR->size_atom_pairs(); ++iap) + { + hamilt::AtomPair& tmp = HR->get_atom_pair(iap); + int iat1 = tmp.get_atom_i(); + int iat2 = tmp.get_atom_j(); + auto indexes1 = paraV->get_indexes_row(iat1); + auto indexes2 = paraV->get_indexes_col(iat2); + int nwt = indexes1.size() * indexes2.size(); + for (int i = 0; i < nwt; ++i) + { + EXPECT_EQ(tmp.get_pointer(0)[i], 1.0); + } + } + + // Second contributeHR should use the already-calculated HR_fixed + // Since HR_fixed_done is true, it will just add HR_fixed to HR again + op.contributeHR(); + + // Check that HR values are now 2.0 (accumulated) + for (int iap = 0; iap < HR->size_atom_pairs(); ++iap) + { + hamilt::AtomPair& tmp = HR->get_atom_pair(iap); + int iat1 = tmp.get_atom_i(); + int iat2 = tmp.get_atom_j(); + auto indexes1 = paraV->get_indexes_row(iat1); + auto indexes2 = paraV->get_indexes_col(iat2); + int nwt = indexes1.size() * indexes2.size(); + for (int i = 0; i < nwt; ++i) + { + EXPECT_EQ(tmp.get_pointer(0)[i], 2.0); + } + } +} + +// Test with single atom system +TEST_F(EKineticTest, singleAtom) +{ + // Create a single atom unit cell + UnitCell ucell_single; + ucell_single.ntype = 1; + ucell_single.nat = 1; + ucell_single.atoms = new Atom[1]; + ucell_single.iat2it = new int[1]; + ucell_single.iat2ia = new int[1]; + ucell_single.atoms[0].tau.resize(1); + ucell_single.itia2iat.create(1, 1); + ucell_single.iat2it[0] = 0; + ucell_single.iat2ia[0] = 0; + ucell_single.atoms[0].tau[0] = ModuleBase::Vector3(0.0, 0.0, 0.0); + ucell_single.itia2iat(0, 0) = 0; + ucell_single.atoms[0].na = 1; + ucell_single.atoms[0].nw = 5; + ucell_single.atoms[0].iw2l.resize(5); + ucell_single.atoms[0].iw2m.resize(5); + ucell_single.atoms[0].iw2n.resize(5); + for (int iw = 0; iw < 5; ++iw) + { + ucell_single.atoms[0].iw2l[iw] = 0; + ucell_single.atoms[0].iw2m[iw] = 0; + ucell_single.atoms[0].iw2n[iw] = 0; + } + ucell_single.set_iat2iwt(1); + + Parallel_Orbitals* paraV_single = nullptr; +#ifdef __MPI + int nb = 5; + paraV_single = new Parallel_Orbitals(); + paraV_single->init(5, 5, nb, MPI_COMM_WORLD); + paraV_single->set_atomic_trace(ucell_single.get_iat2iwt(), 1, 5); +#endif + + hamilt::HContainer* HR_single = new hamilt::HContainer(paraV_single); + + std::vector> kvec_d_in(1, ModuleBase::Vector3(0.0, 0.0, 0.0)); + hamilt::HS_Matrix_K hsk(paraV_single, true); + hsk.set_zero_hk(); + Grid_Driver gd(0, 0); + + hamilt::EKinetic> + op(&hsk, kvec_d_in, HR_single, &ucell_single, {1.0}, &gd, &intor_); + + op.contributeHR(); + + // Should have only self-interaction (atom 0 with itself) + // Note: In MPI parallel runs, some processes may not have any atom pairs + // so we only check if this process has atom pairs + if (HR_single->size_atom_pairs() > 0) + { + EXPECT_GT(HR_single->size_atom_pairs(), 0); + } + + // Calculate HK + op.contributeHk(0); + + delete HR_single; + delete paraV_single; + delete[] ucell_single.atoms; +} + +// Test with different orbital quantum numbers (L, N, M) +TEST_F(EKineticTest, differentOrbitals) +{ + // Modify orbital quantum numbers to test different L, N, M values + ucell.atoms[0].iw2l[0] = 0; // s orbital + ucell.atoms[0].iw2l[1] = 1; // p orbital + ucell.atoms[0].iw2l[2] = 1; // p orbital + ucell.atoms[0].iw2l[3] = 1; // p orbital + ucell.atoms[0].iw2l[4] = 2; // d orbital + + ucell.atoms[0].iw2m[0] = 0; + ucell.atoms[0].iw2m[1] = -1; + ucell.atoms[0].iw2m[2] = 0; + ucell.atoms[0].iw2m[3] = 1; + ucell.atoms[0].iw2m[4] = 0; + + ucell.atoms[0].iw2n[0] = 0; + ucell.atoms[0].iw2n[1] = 0; + ucell.atoms[0].iw2n[2] = 0; + ucell.atoms[0].iw2n[3] = 0; + ucell.atoms[0].iw2n[4] = 0; + + std::vector> kvec_d_in(1, ModuleBase::Vector3(0.0, 0.0, 0.0)); + hamilt::HS_Matrix_K hsk(paraV, true); + hsk.set_zero_hk(); + Grid_Driver gd(0, 0); + + hamilt::EKinetic> + op(&hsk, kvec_d_in, HR, &ucell, {1.0}, &gd, &intor_); + + op.contributeHR(); + + // Verify HR is calculated + // Note: In MPI parallel runs, some processes may not have any atom pairs + if (HR->size_atom_pairs() > 0) + { + EXPECT_GT(HR->size_atom_pairs(), 0); + } + + op.contributeHk(0); +} + +// Test force calculation +TEST_F(EKineticTest, forceCalculation) +{ + std::vector> kvec_d_in(1, ModuleBase::Vector3(0.0, 0.0, 0.0)); + hamilt::HS_Matrix_K hsk(paraV, true); + hsk.set_zero_hk(); + Grid_Driver gd(0, 0); + + hamilt::EKinetic> + op(&hsk, kvec_d_in, HR, &ucell, {1.0}, &gd, &intor_); + + op.contributeHR(); + + // Create a simple density matrix + hamilt::HContainer dmR(paraV); + // Initialize dmR with same structure as HR + for (int iap = 0; iap < HR->size_atom_pairs(); ++iap) + { + hamilt::AtomPair& hr_pair = HR->get_atom_pair(iap); + int iat1 = hr_pair.get_atom_i(); + int iat2 = hr_pair.get_atom_j(); + for (int iR = 0; iR < hr_pair.get_R_size(); ++iR) + { + ModuleBase::Vector3 R_index = hr_pair.get_R_index(iR); + hamilt::AtomPair dm_pair(iat1, iat2, R_index, paraV); + dmR.insert_pair(dm_pair); + } + } + dmR.allocate(nullptr, true); + + // Set density matrix to identity-like values + for (int iap = 0; iap < dmR.size_atom_pairs(); ++iap) + { + hamilt::AtomPair& tmp = dmR.get_atom_pair(iap); + int iat1 = tmp.get_atom_i(); + int iat2 = tmp.get_atom_j(); + auto indexes1 = paraV->get_indexes_row(iat1); + auto indexes2 = paraV->get_indexes_col(iat2); + int nwt = indexes1.size() * indexes2.size(); + for (int i = 0; i < nwt; ++i) + { + tmp.get_pointer(0)[i] = 0.1; + } + } + + ModuleBase::matrix force(ucell.nat, 3); + ModuleBase::matrix stress(3, 3); + + // Calculate force only + op.cal_force_stress(true, false, &dmR, force, stress); + + // Verify force has been calculated (should have some non-zero values) + bool has_force = false; + for (int i = 0; i < ucell.nat; ++i) + { + for (int j = 0; j < 3; ++j) + { + if (std::abs(force(i, j)) > 1e-10) + { + has_force = true; + break; + } + } + } + // Note: For atoms at same position, forces might be zero, so we just check it doesn't crash + EXPECT_TRUE(true); // Test passes if no crash occurs +} + +// Test stress calculation +TEST_F(EKineticTest, stressCalculation) +{ + // Initialize unit cell parameters for stress calculation + ucell.lat0 = 1.0; + ucell.omega = 1000.0; // Set non-zero volume to avoid division by zero + ucell.latvec.e11 = 10.0; + ucell.latvec.e22 = 10.0; + ucell.latvec.e33 = 10.0; + + std::vector> kvec_d_in(1, ModuleBase::Vector3(0.0, 0.0, 0.0)); + hamilt::HS_Matrix_K hsk(paraV, true); + hsk.set_zero_hk(); + Grid_Driver gd(0, 0); + + hamilt::EKinetic> + op(&hsk, kvec_d_in, HR, &ucell, {1.0}, &gd, &intor_); + + op.contributeHR(); + + // Create density matrix + hamilt::HContainer dmR(paraV); + for (int iap = 0; iap < HR->size_atom_pairs(); ++iap) + { + hamilt::AtomPair& hr_pair = HR->get_atom_pair(iap); + int iat1 = hr_pair.get_atom_i(); + int iat2 = hr_pair.get_atom_j(); + for (int iR = 0; iR < hr_pair.get_R_size(); ++iR) + { + ModuleBase::Vector3 R_index = hr_pair.get_R_index(iR); + hamilt::AtomPair dm_pair(iat1, iat2, R_index, paraV); + dmR.insert_pair(dm_pair); + } + } + dmR.allocate(nullptr, true); + + for (int iap = 0; iap < dmR.size_atom_pairs(); ++iap) + { + hamilt::AtomPair& tmp = dmR.get_atom_pair(iap); + int iat1 = tmp.get_atom_i(); + int iat2 = tmp.get_atom_j(); + auto indexes1 = paraV->get_indexes_row(iat1); + auto indexes2 = paraV->get_indexes_col(iat2); + int nwt = indexes1.size() * indexes2.size(); + for (int i = 0; i < nwt; ++i) + { + tmp.get_pointer(0)[i] = 0.1; + } + } + + ModuleBase::matrix force(ucell.nat, 3); + ModuleBase::matrix stress(3, 3); + + // Calculate stress only + op.cal_force_stress(false, true, &dmR, force, stress); + + // Verify stress tensor is symmetric (within numerical precision) + for (int i = 0; i < 3; ++i) + { + for (int j = 0; j < 3; ++j) + { + EXPECT_NEAR(stress(i, j), stress(j, i), 1e-8); + } + } +} + +// Test force and stress together +TEST_F(EKineticTest, forceStressTogether) +{ + // Initialize unit cell parameters for stress calculation + ucell.lat0 = 1.0; + ucell.omega = 1000.0; // Set non-zero volume to avoid division by zero + ucell.latvec.e11 = 10.0; + ucell.latvec.e22 = 10.0; + ucell.latvec.e33 = 10.0; + + std::vector> kvec_d_in(1, ModuleBase::Vector3(0.0, 0.0, 0.0)); + hamilt::HS_Matrix_K hsk(paraV, true); + hsk.set_zero_hk(); + Grid_Driver gd(0, 0); + + hamilt::EKinetic> + op(&hsk, kvec_d_in, HR, &ucell, {1.0}, &gd, &intor_); + + op.contributeHR(); + + // Create density matrix + hamilt::HContainer dmR(paraV); + for (int iap = 0; iap < HR->size_atom_pairs(); ++iap) + { + hamilt::AtomPair& hr_pair = HR->get_atom_pair(iap); + int iat1 = hr_pair.get_atom_i(); + int iat2 = hr_pair.get_atom_j(); + for (int iR = 0; iR < hr_pair.get_R_size(); ++iR) + { + ModuleBase::Vector3 R_index = hr_pair.get_R_index(iR); + hamilt::AtomPair dm_pair(iat1, iat2, R_index, paraV); + dmR.insert_pair(dm_pair); + } + } + dmR.allocate(nullptr, true); + + for (int iap = 0; iap < dmR.size_atom_pairs(); ++iap) + { + hamilt::AtomPair& tmp = dmR.get_atom_pair(iap); + int iat1 = tmp.get_atom_i(); + int iat2 = tmp.get_atom_j(); + auto indexes1 = paraV->get_indexes_row(iat1); + auto indexes2 = paraV->get_indexes_col(iat2); + int nwt = indexes1.size() * indexes2.size(); + for (int i = 0; i < nwt; ++i) + { + tmp.get_pointer(0)[i] = 0.1; + } + } + + ModuleBase::matrix force(ucell.nat, 3); + ModuleBase::matrix stress(3, 3); + + // Calculate both force and stress + op.cal_force_stress(true, true, &dmR, force, stress); + + // Verify stress symmetry + for (int i = 0; i < 3; ++i) + { + for (int j = 0; j < 3; ++j) + { + EXPECT_NEAR(stress(i, j), stress(j, i), 1e-8); + } + } + + // Test passes if no crash occurs + EXPECT_TRUE(true); +} + +// Test with null density matrix pointer +TEST_F(EKineticTest, nullDensityMatrix) +{ + std::vector> kvec_d_in(1, ModuleBase::Vector3(0.0, 0.0, 0.0)); + hamilt::HS_Matrix_K hsk(paraV, true); + hsk.set_zero_hk(); + Grid_Driver gd(0, 0); + + hamilt::EKinetic> + op(&hsk, kvec_d_in, HR, &ucell, {1.0}, &gd, &intor_); + + op.contributeHR(); + + ModuleBase::matrix force(ucell.nat, 3); + ModuleBase::matrix stress(3, 3); + + // This should handle null pointer gracefully or assert in debug mode + // In release mode, it might crash, so we skip this test in that case +#ifdef __DEBUG + EXPECT_DEATH(op.cal_force_stress(true, false, nullptr, force, stress), ".*"); +#else + // In release mode, just verify the test framework works + EXPECT_TRUE(true); +#endif +} + +// Test with zero orbital cutoff +TEST_F(EKineticTest, zeroOrbitalCutoff) +{ + std::vector> kvec_d_in(1, ModuleBase::Vector3(0.0, 0.0, 0.0)); + hamilt::HS_Matrix_K hsk(paraV, true); + hsk.set_zero_hk(); + Grid_Driver gd(0, 0); + + // Use zero cutoff - should result in no atom pairs (except possibly self-interaction) + hamilt::EKinetic> + op(&hsk, kvec_d_in, HR, &ucell, {0.0}, &gd, &intor_); + + op.contributeHR(); + + // With zero cutoff, there should be no or very few atom pairs + // (implementation dependent - might include self-interaction) + EXPECT_GE(HR->size_atom_pairs(), 0); +} + +// Test with large orbital cutoff +TEST_F(EKineticTest, largeOrbitalCutoff) +{ + std::vector> kvec_d_in(1, ModuleBase::Vector3(0.0, 0.0, 0.0)); + hamilt::HS_Matrix_K hsk(paraV, true); + hsk.set_zero_hk(); + Grid_Driver gd(0, 0); + + // Use very large cutoff - should include all atoms + hamilt::EKinetic> + op(&hsk, kvec_d_in, HR, &ucell, {1000.0}, &gd, &intor_); + + op.contributeHR(); + + // With large cutoff, should have many atom pairs + // Note: In MPI parallel runs, some processes may not have any atom pairs + if (HR->size_atom_pairs() > 0) + { + EXPECT_GT(HR->size_atom_pairs(), 0); + } + + op.contributeHk(0); +} + +// Test with atoms at cutoff boundary +TEST_F(EKineticTest, cutoffBoundary) +{ + // Set up atoms at specific distances to test cutoff boundary + ucell.lat0 = 1.0; + ucell.latvec.e11 = 10.0; + ucell.latvec.e22 = 10.0; + ucell.latvec.e33 = 10.0; + + // Place two atoms at distance exactly at cutoff + ucell.atoms[0].tau[0] = ModuleBase::Vector3(0.0, 0.0, 0.0); + ucell.atoms[0].tau[1] = ModuleBase::Vector3(0.5, 0.0, 0.0); // distance = 5.0 + + std::vector> kvec_d_in(1, ModuleBase::Vector3(0.0, 0.0, 0.0)); + hamilt::HS_Matrix_K hsk(paraV, true); + hsk.set_zero_hk(); + Grid_Driver gd(0, 0); + + // Use cutoff of 5.0 - atoms at exactly this distance should be excluded + hamilt::EKinetic> + op(&hsk, kvec_d_in, HR, &ucell, {2.5}, &gd, &intor_); + + op.contributeHR(); + + // Verify initialization completed + EXPECT_GE(HR->size_atom_pairs(), 0); +} + +// Test multiple contributeHR calls for accumulation +TEST_F(EKineticTest, multipleContributeHRAccumulation) +{ + std::vector> kvec_d_in(1, ModuleBase::Vector3(0.0, 0.0, 0.0)); + hamilt::HS_Matrix_K hsk(paraV, true); + hsk.set_zero_hk(); + Grid_Driver gd(0, 0); + + hamilt::EKinetic> + op(&hsk, kvec_d_in, HR, &ucell, {1.0}, &gd, &intor_); + + // First call + op.contributeHR(); + + // Verify first call results + for (int iap = 0; iap < HR->size_atom_pairs(); ++iap) + { + hamilt::AtomPair& tmp = HR->get_atom_pair(iap); + int iat1 = tmp.get_atom_i(); + int iat2 = tmp.get_atom_j(); + auto indexes1 = paraV->get_indexes_row(iat1); + auto indexes2 = paraV->get_indexes_col(iat2); + int nwt = indexes1.size() * indexes2.size(); + for (int i = 0; i < nwt; ++i) + { + EXPECT_EQ(tmp.get_pointer(0)[i], 1.0); + } + } + + // Second call - should accumulate + op.contributeHR(); + + // Verify accumulation + for (int iap = 0; iap < HR->size_atom_pairs(); ++iap) + { + hamilt::AtomPair& tmp = HR->get_atom_pair(iap); + int iat1 = tmp.get_atom_i(); + int iat2 = tmp.get_atom_j(); + auto indexes1 = paraV->get_indexes_row(iat1); + auto indexes2 = paraV->get_indexes_col(iat2); + int nwt = indexes1.size() * indexes2.size(); + for (int i = 0; i < nwt; ++i) + { + EXPECT_EQ(tmp.get_pointer(0)[i], 2.0); + } + } + + // Third call + op.contributeHR(); + + // Verify triple accumulation + for (int iap = 0; iap < HR->size_atom_pairs(); ++iap) + { + hamilt::AtomPair& tmp = HR->get_atom_pair(iap); + int iat1 = tmp.get_atom_i(); + int iat2 = tmp.get_atom_j(); + auto indexes1 = paraV->get_indexes_row(iat1); + auto indexes2 = paraV->get_indexes_col(iat2); + int nwt = indexes1.size() * indexes2.size(); + for (int i = 0; i < nwt; ++i) + { + EXPECT_EQ(tmp.get_pointer(0)[i], 3.0); + } + } +} + +// Test force calculation with npol=2 (nspin=4, spin-orbit coupling) +TEST_F(EKineticTest, forceCalculationNpol2) +{ + // Set up unit cell with npol=2 + ucell.set_iat2iwt(2); // npol=2 + + // Reinitialize paraV with doubled size for npol=2 + delete paraV; + paraV = nullptr; +#ifdef __MPI + int nb = 10; + int global_row = test_size * test_nw * 2; // doubled for npol=2 + int global_col = test_size * test_nw * 2; + paraV = new Parallel_Orbitals(); + paraV->init(global_row, global_col, nb, MPI_COMM_WORLD); + paraV->set_atomic_trace(ucell.get_iat2iwt(), test_size, global_row); +#endif + + // Create complex HContainer for npol=2 + hamilt::HContainer>* HR_complex = new hamilt::HContainer>(paraV); + + std::vector> kvec_d_in(1, ModuleBase::Vector3(0.0, 0.0, 0.0)); + hamilt::HS_Matrix_K> hsk(paraV, true); + hsk.set_zero_hk(); + Grid_Driver gd(0, 0); + + hamilt::EKinetic, std::complex>> + op(&hsk, kvec_d_in, HR_complex, &ucell, {1.0}, &gd, &intor_); + + op.contributeHR(); + + // Create REAL density matrix (charge density) for force/stress calculation + // Even with npol=2, the density matrix for force/stress is real-valued + hamilt::HContainer dmR(paraV); + for (int iap = 0; iap < HR_complex->size_atom_pairs(); ++iap) + { + hamilt::AtomPair>& hr_pair = HR_complex->get_atom_pair(iap); + int iat1 = hr_pair.get_atom_i(); + int iat2 = hr_pair.get_atom_j(); + for (int iR = 0; iR < hr_pair.get_R_size(); ++iR) + { + ModuleBase::Vector3 R_index = hr_pair.get_R_index(iR); + hamilt::AtomPair dm_pair(iat1, iat2, R_index, paraV); + dmR.insert_pair(dm_pair); + } + } + dmR.allocate(nullptr, true); + + // Set density matrix values - real values representing charge density + // For npol=2, the layout is still handled by step_trace in the implementation + for (int iap = 0; iap < dmR.size_atom_pairs(); ++iap) + { + hamilt::AtomPair& tmp = dmR.get_atom_pair(iap); + int iat1 = tmp.get_atom_i(); + int iat2 = tmp.get_atom_j(); + auto indexes1 = paraV->get_indexes_row(iat1); + auto indexes2 = paraV->get_indexes_col(iat2); + + // Fill with real charge density values + double* dm_ptr = tmp.get_pointer(0); + for (int iw1 = 0; iw1 < indexes1.size(); iw1 += 2) + { + for (int iw2 = 0; iw2 < indexes2.size(); iw2 += 2) + { + int idx = iw1 * indexes2.size() + iw2; + // Set charge density values (diagonal of spin density matrix) + dm_ptr[idx] = 0.1; // Charge density at this orbital pair + } + } + } + + ModuleBase::matrix force(ucell.nat, 3); + ModuleBase::matrix stress(3, 3); + + // Calculate force with npol=2 + op.cal_force_stress(true, false, &dmR, force, stress); + + // Verify force calculation completed without crash + EXPECT_TRUE(true); + + delete HR_complex; + + // Restore npol=1 for other tests + ucell.set_iat2iwt(1); +} + +// Test stress calculation with npol=2 (nspin=4, spin-orbit coupling) +TEST_F(EKineticTest, stressCalculationNpol2) +{ + // Set up unit cell with npol=2 + ucell.set_iat2iwt(2); // npol=2 + + // Initialize unit cell parameters for stress calculation + ucell.lat0 = 1.0; + ucell.omega = 1000.0; // Set non-zero volume to avoid division by zero + ucell.latvec.e11 = 10.0; + ucell.latvec.e22 = 10.0; + ucell.latvec.e33 = 10.0; + + // Reinitialize paraV with doubled size for npol=2 + delete paraV; + paraV = nullptr; +#ifdef __MPI + int nb = 10; + int global_row = test_size * test_nw * 2; // doubled for npol=2 + int global_col = test_size * test_nw * 2; + paraV = new Parallel_Orbitals(); + paraV->init(global_row, global_col, nb, MPI_COMM_WORLD); + paraV->set_atomic_trace(ucell.get_iat2iwt(), test_size, global_row); +#endif + + // Create complex HContainer for npol=2 + hamilt::HContainer>* HR_complex = new hamilt::HContainer>(paraV); + + std::vector> kvec_d_in(1, ModuleBase::Vector3(0.0, 0.0, 0.0)); + hamilt::HS_Matrix_K> hsk(paraV, true); + hsk.set_zero_hk(); + Grid_Driver gd(0, 0); + + hamilt::EKinetic, std::complex>> + op(&hsk, kvec_d_in, HR_complex, &ucell, {1.0}, &gd, &intor_); + + op.contributeHR(); + + // Create REAL density matrix (charge density) for force/stress calculation + hamilt::HContainer dmR(paraV); + for (int iap = 0; iap < HR_complex->size_atom_pairs(); ++iap) + { + hamilt::AtomPair>& hr_pair = HR_complex->get_atom_pair(iap); + int iat1 = hr_pair.get_atom_i(); + int iat2 = hr_pair.get_atom_j(); + for (int iR = 0; iR < hr_pair.get_R_size(); ++iR) + { + ModuleBase::Vector3 R_index = hr_pair.get_R_index(iR); + hamilt::AtomPair dm_pair(iat1, iat2, R_index, paraV); + dmR.insert_pair(dm_pair); + } + } + dmR.allocate(nullptr, true); + + // Set density matrix values - real values representing charge density + for (int iap = 0; iap < dmR.size_atom_pairs(); ++iap) + { + hamilt::AtomPair& tmp = dmR.get_atom_pair(iap); + int iat1 = tmp.get_atom_i(); + int iat2 = tmp.get_atom_j(); + auto indexes1 = paraV->get_indexes_row(iat1); + auto indexes2 = paraV->get_indexes_col(iat2); + + double* dm_ptr = tmp.get_pointer(0); + for (int iw1 = 0; iw1 < indexes1.size(); iw1 += 2) + { + for (int iw2 = 0; iw2 < indexes2.size(); iw2 += 2) + { + int idx = iw1 * indexes2.size() + iw2; + dm_ptr[idx] = 0.1; // Charge density + } + } + } + + ModuleBase::matrix force(ucell.nat, 3); + ModuleBase::matrix stress(3, 3); + + // Calculate stress with npol=2 + op.cal_force_stress(false, true, &dmR, force, stress); + + // Verify stress tensor is symmetric + for (int i = 0; i < 3; ++i) + { + for (int j = 0; j < 3; ++j) + { + EXPECT_NEAR(stress(i, j), stress(j, i), 1e-8); + } + } + + delete HR_complex; + + // Restore npol=1 for other tests + ucell.set_iat2iwt(1); +} + +int main(int argc, char** argv) +{ +#ifdef __MPI + MPI_Init(&argc, &argv); +#endif + testing::InitGoogleTest(&argc, argv); + int result = RUN_ALL_TESTS(); +#ifdef __MPI + MPI_Finalize(); +#endif + return result; +} diff --git a/source/source_lcao/module_operator_lcao/test/test_ekineticnew.cpp b/source/source_lcao/module_operator_lcao/test/test_ekineticnew.cpp deleted file mode 100644 index dd81b95464..0000000000 --- a/source/source_lcao/module_operator_lcao/test/test_ekineticnew.cpp +++ /dev/null @@ -1,202 +0,0 @@ -#include "../ekinetic_new.h" - -#include "gtest/gtest.h" - -//--------------------------------------- -// Unit test of EkineticNew class -// EkineticNew is a derivative class of Operator, it is used to calculate the kinetic matrix -// It use HContainer to store the real space HR matrix -// In this test, we test the correctness and time consuming of 3 functions in EkineticNew class -// - initialize_HR() called in constructor -// - contributeHR() -// - contributeHk() -// - HR(double) and SK(complex) are tested in constructHRd2cd -// - HR(double) and SK(double) are tested in constructHRd2d -//--------------------------------------- - -// test_size is the number of atoms in the unitcell -// modify test_size to test different size of unitcell -int test_size = 10; -int test_nw = 10; -class EkineticNewTest : public ::testing::Test -{ - protected: - void SetUp() override - { -#ifdef __MPI - // MPI parallel settings - MPI_Comm_size(MPI_COMM_WORLD, &dsize); - MPI_Comm_rank(MPI_COMM_WORLD, &my_rank); -#endif - - // set up a unitcell, with one element and test_size atoms, each atom has test_nw orbitals - ucell.ntype = 1; - ucell.nat = test_size; - ucell.atoms = new Atom[ucell.ntype]; - ucell.iat2it = new int[ucell.nat]; - ucell.iat2ia = new int[ucell.nat]; - ucell.atoms[0].tau.resize(ucell.nat); - ucell.itia2iat.create(ucell.ntype, ucell.nat); - for (int iat = 0; iat < ucell.nat; iat++) - { - ucell.iat2it[iat] = 0; - ucell.iat2ia[iat] = iat; - ucell.atoms[0].tau[iat] = ModuleBase::Vector3(0.0, 0.0, 0.0); - ucell.itia2iat(0, iat) = iat; - } - ucell.atoms[0].na = test_size; - ucell.atoms[0].nw = test_nw; - ucell.atoms[0].iw2l.resize(test_nw); - ucell.atoms[0].iw2m.resize(test_nw); - ucell.atoms[0].iw2n.resize(test_nw); - for (int iw = 0; iw < test_nw; ++iw) - { - ucell.atoms[0].iw2l[iw] = 0; - ucell.atoms[0].iw2m[iw] = 0; - ucell.atoms[0].iw2n[iw] = 0; - } - ucell.set_iat2iwt(1); - init_parav(); - // set up a HContainer with ucell - HR = new hamilt::HContainer(paraV); - } - - void TearDown() override - { - delete HR; - delete paraV; - delete[] ucell.atoms; - } - -#ifdef __MPI - void init_parav() - { - int nb = 10; - int global_row = test_size * test_nw; - int global_col = test_size * test_nw; - std::ofstream ofs_running; - paraV = new Parallel_Orbitals(); - paraV->init(global_row, global_col, nb, MPI_COMM_WORLD); - paraV->set_atomic_trace(ucell.get_iat2iwt(), test_size, global_row); - } -#else - void init_parav() - { - } -#endif - - UnitCell ucell; - hamilt::HContainer* HR; - Parallel_Orbitals* paraV; - TwoCenterIntegrator intor_; - - int dsize; - int my_rank = 0; -}; - -// using TEST_F to test EkineticNew -TEST_F(EkineticNewTest, constructHRd2d) -{ - std::vector> kvec_d_in(1, ModuleBase::Vector3(0.0, 0.0, 0.0)); - hamilt::HS_Matrix_K hsk(paraV, true); - hsk.set_zero_hk(); - Grid_Driver gd(0, 0); - hamilt::EkineticNew> - op(&hsk, kvec_d_in, HR, &ucell, {1.0}, &gd, &intor_); - op.contributeHR(); - // check the value of HR - for (int iap = 0; iap < HR->size_atom_pairs(); ++iap) - { - hamilt::AtomPair& tmp = HR->get_atom_pair(iap); - int iat1 = tmp.get_atom_i(); - int iat2 = tmp.get_atom_j(); - auto indexes1 = paraV->get_indexes_row(iat1); - auto indexes2 = paraV->get_indexes_col(iat2); - int nwt = indexes1.size() * indexes2.size(); - for (int i = 0; i < nwt; ++i) - { - EXPECT_EQ(tmp.get_pointer(0)[i], 1.0); - } - } - // calculate HK - op.contributeHk(0); - // check the value of HK - double* hk = hsk.get_hk(); - for (int i = 0; i < paraV->get_row_size() * paraV->get_col_size(); ++i) - { - EXPECT_EQ(hk[i], 1.0); - } - // calculate HR again - op.contributeHR(); - // check the value of HR - for (int iap = 0; iap < HR->size_atom_pairs(); ++iap) - { - hamilt::AtomPair& tmp = HR->get_atom_pair(iap); - int iat1 = tmp.get_atom_i(); - int iat2 = tmp.get_atom_j(); - auto indexes1 = paraV->get_indexes_row(iat1); - auto indexes2 = paraV->get_indexes_col(iat2); - int nwt = indexes1.size() * indexes2.size(); - for (int i = 0; i < nwt; ++i) - { - EXPECT_EQ(tmp.get_pointer(0)[i], 2.0); - } - } -} - -TEST_F(EkineticNewTest, constructHRd2cd) -{ - std::vector> kvec_d_in(2, ModuleBase::Vector3(0.0, 0.0, 0.0)); - kvec_d_in[1] = ModuleBase::Vector3(0.1, 0.2, 0.3); - hamilt::HS_Matrix_K> hsk(paraV, true); - hsk.set_zero_hk(); - Grid_Driver gd(0, 0); - hamilt::EkineticNew, double>> - op(&hsk, kvec_d_in, HR, &ucell, {1.0}, &gd, &intor_); - op.contributeHR(); - // check the value of HR - for (int iap = 0; iap < HR->size_atom_pairs(); ++iap) - { - hamilt::AtomPair& tmp = HR->get_atom_pair(iap); - int iat1 = tmp.get_atom_i(); - int iat2 = tmp.get_atom_j(); - auto indexes1 = paraV->get_indexes_row(iat1); - auto indexes2 = paraV->get_indexes_col(iat2); - int nwt = indexes1.size() * indexes2.size(); - for (int i = 0; i < nwt; ++i) - { - EXPECT_EQ(tmp.get_pointer(0)[i], 1.0); - } - } - // calculate HK for gamma point - op.contributeHk(0); - auto* hk = hsk.get_hk(); - // check the value of HK of gamma point - for (int i = 0; i < paraV->get_row_size() * paraV->get_col_size(); ++i) - { - EXPECT_EQ(hk[i].real(), 1.0); - EXPECT_EQ(hk[i].imag(), 0.0); - } - // calculate HK for k point - hsk.set_zero_hk(); - op.contributeHk(1); - // check the value of HK - for (int i = 0; i < paraV->get_row_size() * paraV->get_col_size(); ++i) - { - EXPECT_NEAR(hk[i].real(), -1.6180339887498945 / 2, 1e-10); - EXPECT_NEAR(hk[i].imag(), -1.1755705045849467 / 2, 1e-10); - } -} - -int main(int argc, char** argv) -{ -#ifdef __MPI - MPI_Init(&argc, &argv); -#endif - testing::InitGoogleTest(&argc, argv); - int result = RUN_ALL_TESTS(); -#ifdef __MPI - MPI_Finalize(); -#endif - return result; -} diff --git a/source/source_lcao/module_operator_lcao/test/test_nonlocal.cpp b/source/source_lcao/module_operator_lcao/test/test_nonlocal.cpp new file mode 100644 index 0000000000..1aef3dede1 --- /dev/null +++ b/source/source_lcao/module_operator_lcao/test/test_nonlocal.cpp @@ -0,0 +1,250 @@ +#include "../nonlocal.h" + +#include "gtest/gtest.h" +#include + +//--------------------------------------- +// Unit test of Nonlocal class +// Nonlocal is a derivative class of Operator, it is used to calculate the kinetic matrix +// It use HContainer to store the real space HR matrix +// In this test, we test the correctness and time consuming of 3 functions in Nonlocal class +// - initialize_HR() called in constructor +// - contributeHR() +// - contributeHk() +// - HR(double) and SK(complex) are tested in constructHRd2cd +// - HR(double) and SK(double) are tested in constructHRd2d +//--------------------------------------- + +// test_size is the number of atoms in the unitcell +// modify test_size to test different size of unitcell +int test_size = 10; +int test_nw = 10; +class NonlocalTest : public ::testing::Test +{ + protected: + void SetUp() override + { +#ifdef __MPI + // MPI parallel settings + MPI_Comm_size(MPI_COMM_WORLD, &dsize); + MPI_Comm_rank(MPI_COMM_WORLD, &my_rank); +#endif + + // set up a unitcell, with one element and test_size atoms, each atom has test_nw orbitals + ucell.ntype = 1; + ucell.infoNL.Beta = new Numerical_Nonlocal[ucell.ntype]; + ucell.nat = test_size; + ucell.atoms = new Atom[ucell.ntype]; + ucell.iat2it = new int[ucell.nat]; + ucell.iat2ia = new int[ucell.nat]; + ucell.atoms[0].tau.resize(ucell.nat); + ucell.itia2iat.create(ucell.ntype, ucell.nat); + for (int iat = 0; iat < ucell.nat; iat++) + { + ucell.iat2it[iat] = 0; + ucell.iat2ia[iat] = iat; + ucell.atoms[0].tau[iat] = ModuleBase::Vector3(0.0, 0.0, 0.0); + ucell.itia2iat(0, iat) = iat; + } + ucell.atoms[0].na = test_size; + ucell.atoms[0].nw = test_nw; + ucell.atoms[0].iw2l.resize(test_nw); + ucell.atoms[0].iw2m.resize(test_nw); + ucell.atoms[0].iw2n.resize(test_nw); + for (int iw = 0; iw < test_nw; ++iw) + { + ucell.atoms[0].iw2l[iw] = 0; + ucell.atoms[0].iw2m[iw] = 0; + ucell.atoms[0].iw2n[iw] = 0; + } + ucell.atoms[0].ncpp.d_real.create(5, 5); + ucell.atoms[0].ncpp.d_real.zero_out(); + ucell.atoms[0].ncpp.d_so.create(4, 5, 5); + ucell.atoms[0].ncpp.d_so.zero_out(); + ucell.atoms[0].ncpp.non_zero_count_soc[0] = 5; + ucell.atoms[0].ncpp.non_zero_count_soc[1] = 0; + ucell.atoms[0].ncpp.non_zero_count_soc[2] = 0; + ucell.atoms[0].ncpp.non_zero_count_soc[3] = 5; + ucell.atoms[0].ncpp.index1_soc[0] = std::vector(5, 0); + ucell.atoms[0].ncpp.index2_soc[0] = std::vector(5, 0); + ucell.atoms[0].ncpp.index1_soc[3] = std::vector(5, 0); + ucell.atoms[0].ncpp.index2_soc[3] = std::vector(5, 0); + for (int i = 0; i < 5; ++i) + { + ucell.atoms[0].ncpp.d_real(i, i) = 1.0; + ucell.atoms[0].ncpp.d_so(0, i, i) = std::complex(2.0, 0.0); + ucell.atoms[0].ncpp.d_so(3, i, i) = std::complex(2.0, 0.0); + ucell.atoms[0].ncpp.index1_soc[0][i] = i; + ucell.atoms[0].ncpp.index2_soc[0][i] = i; + ucell.atoms[0].ncpp.index1_soc[3][i] = i; + ucell.atoms[0].ncpp.index2_soc[3][i] = i; + } + ucell.set_iat2iwt(1); + init_parav(); + // set up a HContainer with ucell + HR = new hamilt::HContainer(paraV); + } + + void TearDown() override + { + delete HR; + delete paraV; + delete[] ucell.atoms; + delete[] ucell.infoNL.Beta; + } + +#ifdef __MPI + void init_parav() + { + int nb = 10; + int global_row = test_size * test_nw; + int global_col = test_size * test_nw; + std::ofstream ofs_running; + paraV = new Parallel_Orbitals(); + paraV->init(global_row, global_col, nb, MPI_COMM_WORLD); + paraV->set_atomic_trace(ucell.get_iat2iwt(), test_size, global_row); + } +#else + void init_parav() + { + } +#endif + + UnitCell ucell; + hamilt::HContainer* HR; + Parallel_Orbitals* paraV; + TwoCenterIntegrator intor_; + + int dsize; + int my_rank = 0; +}; + +// using TEST_F to test Nonlocal +TEST_F(NonlocalTest, constructHRd2d) +{ + std::vector> kvec_d_in(1, ModuleBase::Vector3(0.0, 0.0, 0.0)); + hamilt::HS_Matrix_K hsk(paraV, true); + hsk.set_zero_hk(); + Grid_Driver gd(0, 0); + // check some input values + EXPECT_EQ(ucell.infoNL.Beta[0].get_rcut_max(), 1.0); + std::chrono::high_resolution_clock::time_point start_time = std::chrono::high_resolution_clock::now(); + hamilt::Nonlocal> + op(&hsk, kvec_d_in, HR, &ucell, {1.0}, &gd, &intor_); + std::chrono::high_resolution_clock::time_point end_time = std::chrono::high_resolution_clock::now(); + std::chrono::duration elapsed_time + = std::chrono::duration_cast>(end_time - start_time); + start_time = std::chrono::high_resolution_clock::now(); + op.contributeHR(); + end_time = std::chrono::high_resolution_clock::now(); + std::chrono::duration elapsed_time1 + = std::chrono::duration_cast>(end_time - start_time); + // check the value of HR + for (int iap = 0; iap < HR->size_atom_pairs(); ++iap) + { + hamilt::AtomPair& tmp = HR->get_atom_pair(iap); + int iat1 = tmp.get_atom_i(); + int iat2 = tmp.get_atom_j(); + auto indexes1 = paraV->get_indexes_row(iat1); + auto indexes2 = paraV->get_indexes_col(iat2); + int nwt = indexes1.size() * indexes2.size(); + for (int i = 0; i < nwt; ++i) + { + EXPECT_EQ(tmp.get_pointer(0)[i], 5.0 * test_size); + } + } + // calculate SK + start_time = std::chrono::high_resolution_clock::now(); + op.contributeHk(0); + end_time = std::chrono::high_resolution_clock::now(); + std::chrono::duration elapsed_time2 + = std::chrono::duration_cast>(end_time - start_time); + // check the value of HK + double* hk = hsk.get_hk(); + for (int i = 0; i < paraV->get_row_size() * paraV->get_col_size(); ++i) + { + EXPECT_EQ(hk[i], 5.0 * test_size); + } + // calculate HR again + start_time = std::chrono::high_resolution_clock::now(); + op.contributeHR(); + end_time = std::chrono::high_resolution_clock::now(); + std::chrono::duration elapsed_time3 + = std::chrono::duration_cast>(end_time - start_time); + // check the value of HR + for (int iap = 0; iap < HR->size_atom_pairs(); ++iap) + { + hamilt::AtomPair& tmp = HR->get_atom_pair(iap); + int iat1 = tmp.get_atom_i(); + int iat2 = tmp.get_atom_j(); + auto indexes1 = paraV->get_indexes_row(iat1); + auto indexes2 = paraV->get_indexes_col(iat2); + int nwt = indexes1.size() * indexes2.size(); + for (int i = 0; i < nwt; ++i) + { + EXPECT_EQ(tmp.get_pointer(0)[i], 10.0 * test_size); + } + } + std::cout << "Test terms: " << std::setw(15) << "initialize_HR" << std::setw(15) << "contributeHR" + << std::setw(15) << "contributeHk" << std::setw(15) << "2nd-calHR" << std::endl; + std::cout << "Elapsed time: " << std::setw(15) << elapsed_time.count() << std::setw(15) << elapsed_time1.count() + << std::setw(15) << elapsed_time2.count() << std::setw(15) << elapsed_time3.count() << " seconds." + << std::endl; +} + +TEST_F(NonlocalTest, constructHRd2cd) +{ + std::vector> kvec_d_in(2, ModuleBase::Vector3(0.0, 0.0, 0.0)); + kvec_d_in[1] = ModuleBase::Vector3(0.1, 0.2, 0.3); + hamilt::HS_Matrix_K> hsk(paraV); + hsk.set_zero_hk(); + Grid_Driver gd(0, 0); + hamilt::Nonlocal, double>> + op(&hsk, kvec_d_in, HR, &ucell, {1.0}, &gd, &intor_); + op.contributeHR(); + // check the value of HR + for (int iap = 0; iap < HR->size_atom_pairs(); ++iap) + { + hamilt::AtomPair& tmp = HR->get_atom_pair(iap); + int iat1 = tmp.get_atom_i(); + int iat2 = tmp.get_atom_j(); + auto indexes1 = paraV->get_indexes_row(iat1); + auto indexes2 = paraV->get_indexes_col(iat2); + int nwt = indexes1.size() * indexes2.size(); + for (int i = 0; i < nwt; ++i) + { + EXPECT_EQ(tmp.get_pointer(0)[i], 5.0 * test_size); + } + } + // calculate HK for gamma point + op.contributeHk(0); + // check the value of HK of gamma point + auto* hk = hsk.get_hk(); + for (int i = 0; i < paraV->get_row_size() * paraV->get_col_size(); ++i) + { + EXPECT_EQ(hk[i].real(), 5.0 * test_size); + EXPECT_EQ(hk[i].imag(), 0.0); + } + // calculate HK for k point + hsk.set_zero_hk(); + op.contributeHk(1); + // check the value of HK + for (int i = 0; i < paraV->get_row_size() * paraV->get_col_size(); ++i) + { + EXPECT_NEAR(hk[i].real(), 5.0 * test_size, 1e-10); + EXPECT_NEAR(hk[i].imag(), 0.0, 1e-10); + } +} + +int main(int argc, char** argv) +{ +#ifdef __MPI + MPI_Init(&argc, &argv); +#endif + testing::InitGoogleTest(&argc, argv); + int result = RUN_ALL_TESTS(); +#ifdef __MPI + MPI_Finalize(); +#endif + return result; +} diff --git a/source/source_lcao/module_operator_lcao/test/test_nonlocalnew.cpp b/source/source_lcao/module_operator_lcao/test/test_nonlocalnew.cpp deleted file mode 100644 index e137f7ac73..0000000000 --- a/source/source_lcao/module_operator_lcao/test/test_nonlocalnew.cpp +++ /dev/null @@ -1,250 +0,0 @@ -#include "../nonlocal_new.h" - -#include "gtest/gtest.h" -#include - -//--------------------------------------- -// Unit test of NonlocalNew class -// NonlocalNew is a derivative class of Operator, it is used to calculate the kinetic matrix -// It use HContainer to store the real space HR matrix -// In this test, we test the correctness and time consuming of 3 functions in NonlocalNew class -// - initialize_HR() called in constructor -// - contributeHR() -// - contributeHk() -// - HR(double) and SK(complex) are tested in constructHRd2cd -// - HR(double) and SK(double) are tested in constructHRd2d -//--------------------------------------- - -// test_size is the number of atoms in the unitcell -// modify test_size to test different size of unitcell -int test_size = 10; -int test_nw = 10; -class NonlocalNewTest : public ::testing::Test -{ - protected: - void SetUp() override - { -#ifdef __MPI - // MPI parallel settings - MPI_Comm_size(MPI_COMM_WORLD, &dsize); - MPI_Comm_rank(MPI_COMM_WORLD, &my_rank); -#endif - - // set up a unitcell, with one element and test_size atoms, each atom has test_nw orbitals - ucell.ntype = 1; - ucell.infoNL.Beta = new Numerical_Nonlocal[ucell.ntype]; - ucell.nat = test_size; - ucell.atoms = new Atom[ucell.ntype]; - ucell.iat2it = new int[ucell.nat]; - ucell.iat2ia = new int[ucell.nat]; - ucell.atoms[0].tau.resize(ucell.nat); - ucell.itia2iat.create(ucell.ntype, ucell.nat); - for (int iat = 0; iat < ucell.nat; iat++) - { - ucell.iat2it[iat] = 0; - ucell.iat2ia[iat] = iat; - ucell.atoms[0].tau[iat] = ModuleBase::Vector3(0.0, 0.0, 0.0); - ucell.itia2iat(0, iat) = iat; - } - ucell.atoms[0].na = test_size; - ucell.atoms[0].nw = test_nw; - ucell.atoms[0].iw2l.resize(test_nw); - ucell.atoms[0].iw2m.resize(test_nw); - ucell.atoms[0].iw2n.resize(test_nw); - for (int iw = 0; iw < test_nw; ++iw) - { - ucell.atoms[0].iw2l[iw] = 0; - ucell.atoms[0].iw2m[iw] = 0; - ucell.atoms[0].iw2n[iw] = 0; - } - ucell.atoms[0].ncpp.d_real.create(5, 5); - ucell.atoms[0].ncpp.d_real.zero_out(); - ucell.atoms[0].ncpp.d_so.create(4, 5, 5); - ucell.atoms[0].ncpp.d_so.zero_out(); - ucell.atoms[0].ncpp.non_zero_count_soc[0] = 5; - ucell.atoms[0].ncpp.non_zero_count_soc[1] = 0; - ucell.atoms[0].ncpp.non_zero_count_soc[2] = 0; - ucell.atoms[0].ncpp.non_zero_count_soc[3] = 5; - ucell.atoms[0].ncpp.index1_soc[0] = std::vector(5, 0); - ucell.atoms[0].ncpp.index2_soc[0] = std::vector(5, 0); - ucell.atoms[0].ncpp.index1_soc[3] = std::vector(5, 0); - ucell.atoms[0].ncpp.index2_soc[3] = std::vector(5, 0); - for (int i = 0; i < 5; ++i) - { - ucell.atoms[0].ncpp.d_real(i, i) = 1.0; - ucell.atoms[0].ncpp.d_so(0, i, i) = std::complex(2.0, 0.0); - ucell.atoms[0].ncpp.d_so(3, i, i) = std::complex(2.0, 0.0); - ucell.atoms[0].ncpp.index1_soc[0][i] = i; - ucell.atoms[0].ncpp.index2_soc[0][i] = i; - ucell.atoms[0].ncpp.index1_soc[3][i] = i; - ucell.atoms[0].ncpp.index2_soc[3][i] = i; - } - ucell.set_iat2iwt(1); - init_parav(); - // set up a HContainer with ucell - HR = new hamilt::HContainer(paraV); - } - - void TearDown() override - { - delete HR; - delete paraV; - delete[] ucell.atoms; - delete[] ucell.infoNL.Beta; - } - -#ifdef __MPI - void init_parav() - { - int nb = 10; - int global_row = test_size * test_nw; - int global_col = test_size * test_nw; - std::ofstream ofs_running; - paraV = new Parallel_Orbitals(); - paraV->init(global_row, global_col, nb, MPI_COMM_WORLD); - paraV->set_atomic_trace(ucell.get_iat2iwt(), test_size, global_row); - } -#else - void init_parav() - { - } -#endif - - UnitCell ucell; - hamilt::HContainer* HR; - Parallel_Orbitals* paraV; - TwoCenterIntegrator intor_; - - int dsize; - int my_rank = 0; -}; - -// using TEST_F to test NonlocalNew -TEST_F(NonlocalNewTest, constructHRd2d) -{ - std::vector> kvec_d_in(1, ModuleBase::Vector3(0.0, 0.0, 0.0)); - hamilt::HS_Matrix_K hsk(paraV, true); - hsk.set_zero_hk(); - Grid_Driver gd(0, 0); - // check some input values - EXPECT_EQ(ucell.infoNL.Beta[0].get_rcut_max(), 1.0); - std::chrono::high_resolution_clock::time_point start_time = std::chrono::high_resolution_clock::now(); - hamilt::NonlocalNew> - op(&hsk, kvec_d_in, HR, &ucell, {1.0}, &gd, &intor_); - std::chrono::high_resolution_clock::time_point end_time = std::chrono::high_resolution_clock::now(); - std::chrono::duration elapsed_time - = std::chrono::duration_cast>(end_time - start_time); - start_time = std::chrono::high_resolution_clock::now(); - op.contributeHR(); - end_time = std::chrono::high_resolution_clock::now(); - std::chrono::duration elapsed_time1 - = std::chrono::duration_cast>(end_time - start_time); - // check the value of HR - for (int iap = 0; iap < HR->size_atom_pairs(); ++iap) - { - hamilt::AtomPair& tmp = HR->get_atom_pair(iap); - int iat1 = tmp.get_atom_i(); - int iat2 = tmp.get_atom_j(); - auto indexes1 = paraV->get_indexes_row(iat1); - auto indexes2 = paraV->get_indexes_col(iat2); - int nwt = indexes1.size() * indexes2.size(); - for (int i = 0; i < nwt; ++i) - { - EXPECT_EQ(tmp.get_pointer(0)[i], 5.0 * test_size); - } - } - // calculate SK - start_time = std::chrono::high_resolution_clock::now(); - op.contributeHk(0); - end_time = std::chrono::high_resolution_clock::now(); - std::chrono::duration elapsed_time2 - = std::chrono::duration_cast>(end_time - start_time); - // check the value of HK - double* hk = hsk.get_hk(); - for (int i = 0; i < paraV->get_row_size() * paraV->get_col_size(); ++i) - { - EXPECT_EQ(hk[i], 5.0 * test_size); - } - // calculate HR again - start_time = std::chrono::high_resolution_clock::now(); - op.contributeHR(); - end_time = std::chrono::high_resolution_clock::now(); - std::chrono::duration elapsed_time3 - = std::chrono::duration_cast>(end_time - start_time); - // check the value of HR - for (int iap = 0; iap < HR->size_atom_pairs(); ++iap) - { - hamilt::AtomPair& tmp = HR->get_atom_pair(iap); - int iat1 = tmp.get_atom_i(); - int iat2 = tmp.get_atom_j(); - auto indexes1 = paraV->get_indexes_row(iat1); - auto indexes2 = paraV->get_indexes_col(iat2); - int nwt = indexes1.size() * indexes2.size(); - for (int i = 0; i < nwt; ++i) - { - EXPECT_EQ(tmp.get_pointer(0)[i], 10.0 * test_size); - } - } - std::cout << "Test terms: " << std::setw(15) << "initialize_HR" << std::setw(15) << "contributeHR" - << std::setw(15) << "contributeHk" << std::setw(15) << "2nd-calHR" << std::endl; - std::cout << "Elapsed time: " << std::setw(15) << elapsed_time.count() << std::setw(15) << elapsed_time1.count() - << std::setw(15) << elapsed_time2.count() << std::setw(15) << elapsed_time3.count() << " seconds." - << std::endl; -} - -TEST_F(NonlocalNewTest, constructHRd2cd) -{ - std::vector> kvec_d_in(2, ModuleBase::Vector3(0.0, 0.0, 0.0)); - kvec_d_in[1] = ModuleBase::Vector3(0.1, 0.2, 0.3); - hamilt::HS_Matrix_K> hsk(paraV); - hsk.set_zero_hk(); - Grid_Driver gd(0, 0); - hamilt::NonlocalNew, double>> - op(&hsk, kvec_d_in, HR, &ucell, {1.0}, &gd, &intor_); - op.contributeHR(); - // check the value of HR - for (int iap = 0; iap < HR->size_atom_pairs(); ++iap) - { - hamilt::AtomPair& tmp = HR->get_atom_pair(iap); - int iat1 = tmp.get_atom_i(); - int iat2 = tmp.get_atom_j(); - auto indexes1 = paraV->get_indexes_row(iat1); - auto indexes2 = paraV->get_indexes_col(iat2); - int nwt = indexes1.size() * indexes2.size(); - for (int i = 0; i < nwt; ++i) - { - EXPECT_EQ(tmp.get_pointer(0)[i], 5.0 * test_size); - } - } - // calculate HK for gamma point - op.contributeHk(0); - // check the value of HK of gamma point - auto* hk = hsk.get_hk(); - for (int i = 0; i < paraV->get_row_size() * paraV->get_col_size(); ++i) - { - EXPECT_EQ(hk[i].real(), 5.0 * test_size); - EXPECT_EQ(hk[i].imag(), 0.0); - } - // calculate HK for k point - hsk.set_zero_hk(); - op.contributeHk(1); - // check the value of HK - for (int i = 0; i < paraV->get_row_size() * paraV->get_col_size(); ++i) - { - EXPECT_NEAR(hk[i].real(), 5.0 * test_size, 1e-10); - EXPECT_NEAR(hk[i].imag(), 0.0, 1e-10); - } -} - -int main(int argc, char** argv) -{ -#ifdef __MPI - MPI_Init(&argc, &argv); -#endif - testing::InitGoogleTest(&argc, argv); - int result = RUN_ALL_TESTS(); -#ifdef __MPI - MPI_Finalize(); -#endif - return result; -} diff --git a/source/source_lcao/module_operator_lcao/test/test_overlap.cpp b/source/source_lcao/module_operator_lcao/test/test_overlap.cpp new file mode 100644 index 0000000000..e3c017857b --- /dev/null +++ b/source/source_lcao/module_operator_lcao/test/test_overlap.cpp @@ -0,0 +1,186 @@ +#include "../overlap.h" + +#include "gtest/gtest.h" + +//--------------------------------------- +// Unit test of Overlap class +// Overlap is a derivative class of Operator, it is used to calculate the overlap matrix +// It use HContainer to store the real space SR matrix +// In this test, we test the correctness and time consuming of 3 functions in Overlap class +// - initialize_SR() called in constructor +// - contributeHR() +// - contributeHk() +// - SR(double) and SK(complex) are tested in constructHRd2cd +// - SR(double) and SK(double) are tested in constructHRd2d +//--------------------------------------- + +// test_size is the number of atoms in the unitcell +// modify test_size to test different size of unitcell +int test_size = 10; +int test_nw = 10; +class OverlapTest : public ::testing::Test +{ + protected: + void SetUp() override + { +#ifdef __MPI + // MPI parallel settings + MPI_Comm_size(MPI_COMM_WORLD, &dsize); + MPI_Comm_rank(MPI_COMM_WORLD, &my_rank); +#endif + + // set up a unitcell, with one element and test_size atoms, each atom has test_nw orbitals + ucell.ntype = 1; + ucell.nat = test_size; + ucell.atoms = new Atom[ucell.ntype]; + ucell.iat2it = new int[ucell.nat]; + ucell.iat2ia = new int[ucell.nat]; + ucell.atoms[0].tau.resize(ucell.nat); + ucell.itia2iat.create(ucell.ntype, ucell.nat); + for (int iat = 0; iat < ucell.nat; iat++) + { + ucell.iat2it[iat] = 0; + ucell.iat2ia[iat] = iat; + ucell.atoms[0].tau[iat] = ModuleBase::Vector3(0.0, 0.0, 0.0); + ucell.itia2iat(0, iat) = iat; + } + ucell.atoms[0].na = test_size; + ucell.atoms[0].nw = test_nw; + ucell.atoms[0].iw2l.resize(test_nw); + ucell.atoms[0].iw2m.resize(test_nw); + ucell.atoms[0].iw2n.resize(test_nw); + for (int iw = 0; iw < test_nw; ++iw) + { + ucell.atoms[0].iw2l[iw] = 0; + ucell.atoms[0].iw2m[iw] = 0; + ucell.atoms[0].iw2n[iw] = 0; + } + ucell.set_iat2iwt(1); + init_parav(); + // set up a HContainer with ucell + SR = new hamilt::HContainer(paraV); + } + + void TearDown() override + { + delete SR; + delete paraV; + delete[] ucell.atoms; + } + +#ifdef __MPI + void init_parav() + { + int nb = 10; + int global_row = test_size * test_nw; + int global_col = test_size * test_nw; + std::ofstream ofs_running; + paraV = new Parallel_Orbitals(); + paraV->init(global_row, global_col, nb, MPI_COMM_WORLD); + paraV->set_atomic_trace(ucell.get_iat2iwt(), test_size, global_row); + } +#else + void init_parav() + { + } +#endif + + UnitCell ucell; + hamilt::HContainer* SR; + Parallel_Orbitals* paraV; + TwoCenterIntegrator intor_; + + int dsize; + int my_rank = 0; +}; + +// using TEST_F to test Overlap +TEST_F(OverlapTest, constructHRd2d) +{ + std::vector> kvec_d_in(1, ModuleBase::Vector3(0.0, 0.0, 0.0)); + hamilt::HS_Matrix_K hsk(paraV); + hsk.set_zero_sk(); + Grid_Driver gd(0, 0); + hamilt::Overlap> + op(&hsk, kvec_d_in, nullptr, SR, &ucell, {1.0}, &gd, &intor_); + op.contributeHR(); + // check the value of SR + for (int iap = 0; iap < SR->size_atom_pairs(); ++iap) + { + hamilt::AtomPair& tmp = SR->get_atom_pair(iap); + int iat1 = tmp.get_atom_i(); + int iat2 = tmp.get_atom_j(); + auto indexes1 = paraV->get_indexes_row(iat1); + auto indexes2 = paraV->get_indexes_col(iat2); + int nwt = indexes1.size() * indexes2.size(); + for (int i = 0; i < nwt; ++i) + { + EXPECT_EQ(tmp.get_pointer(0)[i], 1.0); + } + } + // calculate SK + op.contributeHk(0); + // check the value of SK + double* sk = hsk.get_sk(); + for (int i = 0; i < hsk.get_size(); ++i) + { + EXPECT_EQ(sk[i], 1.0); + } +} + +TEST_F(OverlapTest, constructHRd2cd) +{ + std::vector> kvec_d_in(2, ModuleBase::Vector3(0.0, 0.0, 0.0)); + kvec_d_in[1] = ModuleBase::Vector3(0.1, 0.2, 0.3); + hamilt::HS_Matrix_K> hsk(paraV); + hsk.set_zero_sk(); + Grid_Driver gd(0, 0); + hamilt::Overlap, double>> + op(&hsk, kvec_d_in, nullptr, SR, &ucell, {1.0}, &gd, &intor_); + op.contributeHR(); + // check the value of SR + for (int iap = 0; iap < SR->size_atom_pairs(); ++iap) + { + hamilt::AtomPair& tmp = SR->get_atom_pair(iap); + int iat1 = tmp.get_atom_i(); + int iat2 = tmp.get_atom_j(); + auto indexes1 = paraV->get_indexes_row(iat1); + auto indexes2 = paraV->get_indexes_col(iat2); + int nwt = indexes1.size() * indexes2.size(); + for (int i = 0; i < nwt; ++i) + { + EXPECT_EQ(tmp.get_pointer(0)[i], 1.0); + } + } + // calculate SK for gamma point + op.contributeHk(0); + // check the value of SK of gamma point + auto* sk = hsk.get_sk(); + for (int i = 0; i < paraV->get_row_size() * paraV->get_col_size(); ++i) + { + EXPECT_EQ(sk[i].real(), 1.0); + EXPECT_EQ(sk[i].imag(), 0.0); + } + // calculate SK for k point + hsk.set_zero_sk(); + op.contributeHk(1); + // check the value of SK + for (int i = 0; i < paraV->get_row_size() * paraV->get_col_size(); ++i) + { + EXPECT_NEAR(sk[i].real(), -0.80901699437494723, 1e-10); + EXPECT_NEAR(sk[i].imag(), -0.58778525229247336, 1e-10); + } +} + +int main(int argc, char** argv) +{ +#ifdef __MPI + MPI_Init(&argc, &argv); +#endif + testing::InitGoogleTest(&argc, argv); + int result = RUN_ALL_TESTS(); +#ifdef __MPI + MPI_Finalize(); +#endif + return result; +} diff --git a/source/source_lcao/module_operator_lcao/test/test_overlap_cd.cpp b/source/source_lcao/module_operator_lcao/test/test_overlap_cd.cpp new file mode 100644 index 0000000000..ad2e8daf7e --- /dev/null +++ b/source/source_lcao/module_operator_lcao/test/test_overlap_cd.cpp @@ -0,0 +1,191 @@ +#include "../overlap.h" + +#include "gtest/gtest.h" + +//--------------------------------------- +// Unit test of Overlap class +// Overlap is a derivative class of Operator, it is used to calculate the overlap matrix +// It use HContainer to store the real space SR matrix +// In this test, we test the correctness and time consuming of 3 functions in Overlap class +// - initialize_SR() called in constructor +// - contributeHR() +// - contributeHk() +// - SR(complex) and SK(complex) are tested in constructHRd2d +//--------------------------------------- + +// test_size is the number of atoms in the unitcell +// modify test_size to test different size of unitcell +int test_size = 10; +int test_nw = 10; +class OverlapTest : public ::testing::Test +{ + protected: + void SetUp() override + { +#ifdef __MPI + // MPI parallel settings + MPI_Comm_size(MPI_COMM_WORLD, &dsize); + MPI_Comm_rank(MPI_COMM_WORLD, &my_rank); +#endif + + // set up a unitcell, with one element and test_size atoms, each atom has test_nw orbitals + ucell.ntype = 1; + ucell.nat = test_size; + ucell.atoms = new Atom[ucell.ntype]; + ucell.iat2it = new int[ucell.nat]; + ucell.iat2ia = new int[ucell.nat]; + ucell.atoms[0].tau.resize(ucell.nat); + ucell.itia2iat.create(ucell.ntype, ucell.nat); + for (int iat = 0; iat < ucell.nat; iat++) + { + ucell.iat2it[iat] = 0; + ucell.iat2ia[iat] = iat; + ucell.atoms[0].tau[iat] = ModuleBase::Vector3(0.0, 0.0, 0.0); + ucell.itia2iat(0, iat) = iat; + } + ucell.atoms[0].na = test_size; + ucell.atoms[0].nw = test_nw; + ucell.atoms[0].iw2l.resize(test_nw); + ucell.atoms[0].iw2m.resize(test_nw); + ucell.atoms[0].iw2n.resize(test_nw); + for (int iw = 0; iw < test_nw; ++iw) + { + ucell.atoms[0].iw2l[iw] = 0; + ucell.atoms[0].iw2m[iw] = 0; + ucell.atoms[0].iw2n[iw] = 0; + } + ucell.set_iat2iwt(2); + init_parav(); + // set up a HContainer with ucell + SR = new hamilt::HContainer>(paraV); + } + + void TearDown() override + { + delete SR; + delete paraV; + delete[] ucell.atoms; + } + +#ifdef __MPI + void init_parav() + { + int nb = 10; + int global_row = test_size * test_nw * 2; + int global_col = test_size * test_nw * 2; + std::ofstream ofs_running; + paraV = new Parallel_Orbitals(); + paraV->init(global_row, global_col, nb, MPI_COMM_WORLD); + paraV->set_atomic_trace(ucell.get_iat2iwt(), test_size, global_row); + } +#else + void init_parav() + { + } +#endif + + UnitCell ucell; + hamilt::HContainer>* SR; + Parallel_Orbitals* paraV; + TwoCenterIntegrator intor_; + + int dsize; + int my_rank = 0; +}; + +TEST_F(OverlapTest, constructHRcd2cd) +{ + int npol = ucell.get_npol(); + std::vector> kvec_d_in(2, ModuleBase::Vector3(0.0, 0.0, 0.0)); + kvec_d_in[1] = ModuleBase::Vector3(0.1, 0.2, 0.3); + hamilt::HS_Matrix_K> hsk(paraV); + hsk.set_zero_sk(); + Grid_Driver gd(0, 0); + hamilt::Overlap, std::complex>> + op(&hsk, kvec_d_in, nullptr, SR, &ucell, {1.0}, &gd, &intor_); + op.contributeHR(); + // check the value of SR + for (int iap = 0; iap < SR->size_atom_pairs(); ++iap) + { + hamilt::AtomPair>& tmp = SR->get_atom_pair(iap); + int iat1 = tmp.get_atom_i(); + int iat2 = tmp.get_atom_j(); + auto indexes1 = paraV->get_indexes_row(iat1); + auto indexes2 = paraV->get_indexes_col(iat2); + int i = 0; + for (int mu = 0; mu < indexes1.size(); ++mu) + { + for (int nu = 0; nu < indexes2.size(); ++nu) + { + if (mu % npol == nu % npol) + { + EXPECT_EQ(tmp.get_pointer(0)[i].real(), 1.0); + EXPECT_EQ(tmp.get_pointer(0)[i].imag(), 0.0); + } + else + { + EXPECT_EQ(tmp.get_pointer(0)[i].real(), 0.0); + EXPECT_EQ(tmp.get_pointer(0)[i].imag(), 0.0); + } + ++i; + } + } + } + // calculate SK for gamma point + op.contributeHk(0); + // check the value of SK of gamma point + auto* sk = hsk.get_sk(); + int i = 0; + for (int irow = 0; irow < paraV->get_row_size(); ++irow) + { + for (int icol = 0; icol < paraV->get_col_size(); ++icol) + { + if (irow % npol == icol % npol) + { + EXPECT_NEAR(sk[i].real(), 1.0, 1e-10); + EXPECT_NEAR(sk[i].imag(), 0.0, 1e-10); + } + else + { + EXPECT_NEAR(sk[i].real(), 0.0, 1e-10); + EXPECT_NEAR(sk[i].imag(), 0.0, 1e-10); + } + ++i; + } + } + // calculate SK for k point + hsk.set_zero_sk(); + op.contributeHk(1); + // check the value of SK + i = 0; + for (int irow = 0; irow < paraV->get_row_size(); ++irow) + { + for (int icol = 0; icol < paraV->get_col_size(); ++icol) + { + if (irow % npol == icol % npol) + { + EXPECT_NEAR(sk[i].real(), -0.80901699437494723, 1e-10); + EXPECT_NEAR(sk[i].imag(), -0.58778525229247336, 1e-10); + } + else + { + EXPECT_NEAR(sk[i].real(), 0.0, 1e-10); + EXPECT_NEAR(sk[i].imag(), 0.0, 1e-10); + } + ++i; + } + } +} + +int main(int argc, char** argv) +{ +#ifdef __MPI + MPI_Init(&argc, &argv); +#endif + testing::InitGoogleTest(&argc, argv); + int result = RUN_ALL_TESTS(); +#ifdef __MPI + MPI_Finalize(); +#endif + return result; +} diff --git a/source/source_lcao/module_operator_lcao/test/test_overlap_serial.cpp b/source/source_lcao/module_operator_lcao/test/test_overlap_serial.cpp new file mode 100644 index 0000000000..98b8e4d741 --- /dev/null +++ b/source/source_lcao/module_operator_lcao/test/test_overlap_serial.cpp @@ -0,0 +1,802 @@ +#include "../overlap.h" + +#include "gtest/gtest.h" + +//--------------------------------------- +// Unit test of Overlap class +// Overlap is a derivative class of Operator, it is used to calculate the overlap matrix +// It use HContainer to store the real space SR matrix +// In this test, we test the correctness and time consuming of 3 functions in Overlap class +// - initialize_SR() called in constructor +// - contributeHR() +// - contributeHk() +// - SR(double) and SK(complex) are tested in constructHRd2cd +// - SR(double) and SK(double) are tested in constructHRd2d +//--------------------------------------- + +// test_size is the number of atoms in the unitcell +// modify test_size to test different size of unitcell +int test_size = 10; +int test_nw = 10; +class OverlapTest : public ::testing::Test +{ + protected: + void SetUp() override + { +#ifdef __MPI + // MPI parallel settings + MPI_Comm_size(MPI_COMM_WORLD, &dsize); + MPI_Comm_rank(MPI_COMM_WORLD, &my_rank); +#endif + + // set up a unitcell, with one element and test_size atoms, each atom has test_nw orbitals + ucell.ntype = 1; + ucell.nat = test_size; + ucell.atoms = new Atom[ucell.ntype]; + ucell.iat2it = new int[ucell.nat]; + ucell.iat2ia = new int[ucell.nat]; + ucell.atoms[0].tau.resize(ucell.nat); + ucell.itia2iat.create(ucell.ntype, ucell.nat); + for (int iat = 0; iat < ucell.nat; iat++) + { + ucell.iat2it[iat] = 0; + ucell.iat2ia[iat] = iat; + ucell.atoms[0].tau[iat] = ModuleBase::Vector3(0.0, 0.0, 0.0); + ucell.itia2iat(0, iat) = iat; + } + ucell.atoms[0].na = test_size; + ucell.atoms[0].nw = test_nw; + ucell.atoms[0].iw2l.resize(test_nw); + ucell.atoms[0].iw2m.resize(test_nw); + ucell.atoms[0].iw2n.resize(test_nw); + for (int iw = 0; iw < test_nw; ++iw) + { + ucell.atoms[0].iw2l[iw] = 0; + ucell.atoms[0].iw2m[iw] = 0; + ucell.atoms[0].iw2n[iw] = 0; + } + ucell.set_iat2iwt(1); + init_parav(); + // set up a HContainer with ucell + SR = new hamilt::HContainer(paraV); + } + + void TearDown() override + { + delete SR; + delete paraV; + delete[] ucell.atoms; + } + +#ifdef __MPI + void init_parav() + { + int nb = 10; + int global_row = test_size * test_nw; + int global_col = test_size * test_nw; + std::ofstream ofs_running; + paraV = new Parallel_Orbitals(); + paraV->init(global_row, global_col, nb, MPI_COMM_WORLD); + paraV->set_atomic_trace(ucell.get_iat2iwt(), test_size, global_row); + } +#else + void init_parav() + { + } +#endif + + UnitCell ucell; + hamilt::HContainer* SR; + Parallel_Orbitals* paraV; + TwoCenterIntegrator intor_; + + int dsize; + int my_rank = 0; +}; +TEST_F(OverlapTest, constructHRcd2cd) +{ + // Create complex SR container + hamilt::HContainer>* SR_complex = new hamilt::HContainer>(paraV); + + std::vector> kvec_d_in(1, ModuleBase::Vector3(0.1, 0.2, 0.3)); + hamilt::HS_Matrix_K> hsk(paraV); + hsk.set_zero_sk(); + Grid_Driver gd(0, 0); + + hamilt::Overlap, std::complex>> + op(&hsk, kvec_d_in, nullptr, SR_complex, &ucell, {1.0}, &gd, &intor_); + op.contributeHR(); + + // Check that SR_complex has been initialized + // Note: In MPI parallel runs, some processes may not have any atom pairs + if (SR_complex->size_atom_pairs() > 0) + { + EXPECT_GT(SR_complex->size_atom_pairs(), 0); + } + + // Calculate SK + op.contributeHk(0); + auto* sk = hsk.get_sk(); + + // Verify SK is computed (values should be non-zero for non-gamma k-point) + bool has_nonzero = false; + for (int i = 0; i < paraV->get_row_size() * paraV->get_col_size(); ++i) + { + if (std::abs(sk[i]) > 1e-10) + { + has_nonzero = true; + break; + } + } + EXPECT_TRUE(has_nonzero); + + delete SR_complex; +} + +// Test getSk method +TEST_F(OverlapTest, getSk) +{ + std::vector> kvec_d_in(1, ModuleBase::Vector3(0.0, 0.0, 0.0)); + hamilt::HS_Matrix_K hsk(paraV); + hsk.set_zero_sk(); + Grid_Driver gd(0, 0); + + hamilt::Overlap> + op(&hsk, kvec_d_in, nullptr, SR, &ucell, {1.0}, &gd, &intor_); + + op.contributeHR(); + op.contributeHk(0); + + // Get SK pointer + double* sk_from_method = op.getSk(); + double* sk_from_hsk = hsk.get_sk(); + + // Verify they point to the same data + EXPECT_EQ(sk_from_method, sk_from_hsk); + + // Verify values match + for (int i = 0; i < hsk.get_size(); ++i) + { + EXPECT_EQ(sk_from_method[i], sk_from_hsk[i]); + } +} + +// Test k-vector caching optimization +TEST_F(OverlapTest, kVectorCaching) +{ + std::vector> kvec_d_in(2, ModuleBase::Vector3(0.1, 0.2, 0.3)); + kvec_d_in[1] = ModuleBase::Vector3(0.1, 0.2, 0.3); // Same k-vector + hamilt::HS_Matrix_K> hsk(paraV); + hsk.set_zero_sk(); + Grid_Driver gd(0, 0); + + hamilt::Overlap, double>> + op(&hsk, kvec_d_in, nullptr, SR, &ucell, {1.0}, &gd, &intor_); + + op.contributeHR(); + + // First call with k-vector index 0 + op.contributeHk(0); + auto* sk = hsk.get_sk(); + std::complex first_value = sk[0]; + + // Second call with same k-vector (index 1) + hsk.set_zero_sk(); + op.contributeHk(1); + std::complex second_value = sk[0]; + + // Values should be identical due to caching + EXPECT_NEAR(first_value.real(), second_value.real(), 1e-10); + EXPECT_NEAR(first_value.imag(), second_value.imag(), 1e-10); +} + +// Test with single atom system +TEST_F(OverlapTest, singleAtom) +{ + // Create a single atom unit cell + UnitCell ucell_single; + ucell_single.ntype = 1; + ucell_single.nat = 1; + ucell_single.atoms = new Atom[1]; + ucell_single.iat2it = new int[1]; + ucell_single.iat2ia = new int[1]; + ucell_single.atoms[0].tau.resize(1); + ucell_single.itia2iat.create(1, 1); + ucell_single.iat2it[0] = 0; + ucell_single.iat2ia[0] = 0; + ucell_single.atoms[0].tau[0] = ModuleBase::Vector3(0.0, 0.0, 0.0); + ucell_single.itia2iat(0, 0) = 0; + ucell_single.atoms[0].na = 1; + ucell_single.atoms[0].nw = 5; + ucell_single.atoms[0].iw2l.resize(5); + ucell_single.atoms[0].iw2m.resize(5); + ucell_single.atoms[0].iw2n.resize(5); + for (int iw = 0; iw < 5; ++iw) + { + ucell_single.atoms[0].iw2l[iw] = 0; + ucell_single.atoms[0].iw2m[iw] = 0; + ucell_single.atoms[0].iw2n[iw] = 0; + } + ucell_single.set_iat2iwt(1); + + Parallel_Orbitals* paraV_single = nullptr; +#ifdef __MPI + int nb = 5; + paraV_single = new Parallel_Orbitals(); + paraV_single->init(5, 5, nb, MPI_COMM_WORLD); + paraV_single->set_atomic_trace(ucell_single.get_iat2iwt(), 1, 5); +#endif + + hamilt::HContainer* SR_single = new hamilt::HContainer(paraV_single); + + std::vector> kvec_d_in(1, ModuleBase::Vector3(0.0, 0.0, 0.0)); + hamilt::HS_Matrix_K hsk(paraV_single); + hsk.set_zero_sk(); + Grid_Driver gd(0, 0); + + hamilt::Overlap> + op(&hsk, kvec_d_in, nullptr, SR_single, &ucell_single, {1.0}, &gd, &intor_); + + op.contributeHR(); + + // Should have only self-interaction (atom 0 with itself) + // Note: In MPI parallel runs, some processes may not have any atom pairs + if (SR_single->size_atom_pairs() > 0) + { + EXPECT_GT(SR_single->size_atom_pairs(), 0); + } + + // Calculate SK + op.contributeHk(0); + + delete SR_single; + delete paraV_single; + delete[] ucell_single.atoms; +} + +// Test with different orbital quantum numbers (L, N, M) +TEST_F(OverlapTest, differentOrbitals) +{ + // Modify orbital quantum numbers to test different L, N, M values + ucell.atoms[0].iw2l[0] = 0; // s orbital + ucell.atoms[0].iw2l[1] = 1; // p orbital + ucell.atoms[0].iw2l[2] = 1; // p orbital + ucell.atoms[0].iw2l[3] = 1; // p orbital + ucell.atoms[0].iw2l[4] = 2; // d orbital + + ucell.atoms[0].iw2m[0] = 0; + ucell.atoms[0].iw2m[1] = -1; + ucell.atoms[0].iw2m[2] = 0; + ucell.atoms[0].iw2m[3] = 1; + ucell.atoms[0].iw2m[4] = 0; + + ucell.atoms[0].iw2n[0] = 0; + ucell.atoms[0].iw2n[1] = 0; + ucell.atoms[0].iw2n[2] = 0; + ucell.atoms[0].iw2n[3] = 0; + ucell.atoms[0].iw2n[4] = 0; + + std::vector> kvec_d_in(1, ModuleBase::Vector3(0.0, 0.0, 0.0)); + hamilt::HS_Matrix_K hsk(paraV); + hsk.set_zero_sk(); + Grid_Driver gd(0, 0); + + hamilt::Overlap> + op(&hsk, kvec_d_in, nullptr, SR, &ucell, {1.0}, &gd, &intor_); + + op.contributeHR(); + + // Verify SR is calculated + // Note: In MPI parallel runs, some processes may not have any atom pairs + if (SR->size_atom_pairs() > 0) + { + EXPECT_GT(SR->size_atom_pairs(), 0); + } + + op.contributeHk(0); +} + +// Test force calculation +TEST_F(OverlapTest, forceCalculation) +{ + std::vector> kvec_d_in(1, ModuleBase::Vector3(0.0, 0.0, 0.0)); + hamilt::HS_Matrix_K hsk(paraV); + hsk.set_zero_sk(); + Grid_Driver gd(0, 0); + + hamilt::Overlap> + op(&hsk, kvec_d_in, nullptr, SR, &ucell, {1.0}, &gd, &intor_); + + op.contributeHR(); + + // Create a simple density matrix + hamilt::HContainer dmR(paraV); + // Initialize dmR with same structure as SR + for (int iap = 0; iap < SR->size_atom_pairs(); ++iap) + { + hamilt::AtomPair& sr_pair = SR->get_atom_pair(iap); + int iat1 = sr_pair.get_atom_i(); + int iat2 = sr_pair.get_atom_j(); + for (int iR = 0; iR < sr_pair.get_R_size(); ++iR) + { + ModuleBase::Vector3 R_index = sr_pair.get_R_index(iR); + hamilt::AtomPair dm_pair(iat1, iat2, R_index, paraV); + dmR.insert_pair(dm_pair); + } + } + dmR.allocate(nullptr, true); + + // Set density matrix to identity-like values + for (int iap = 0; iap < dmR.size_atom_pairs(); ++iap) + { + hamilt::AtomPair& tmp = dmR.get_atom_pair(iap); + int iat1 = tmp.get_atom_i(); + int iat2 = tmp.get_atom_j(); + auto indexes1 = paraV->get_indexes_row(iat1); + auto indexes2 = paraV->get_indexes_col(iat2); + int nwt = indexes1.size() * indexes2.size(); + for (int i = 0; i < nwt; ++i) + { + tmp.get_pointer(0)[i] = 0.1; + } + } + + ModuleBase::matrix force(ucell.nat, 3); + ModuleBase::matrix stress(3, 3); + + // Calculate force only + op.cal_force_stress(true, false, &dmR, force, stress); + + // Test passes if no crash occurs + EXPECT_TRUE(true); +} + +// Test stress calculation +TEST_F(OverlapTest, stressCalculation) +{ + // Initialize unit cell parameters for stress calculation + ucell.lat0 = 1.0; + ucell.omega = 1000.0; // Set non-zero volume to avoid division by zero + ucell.latvec.e11 = 10.0; + ucell.latvec.e22 = 10.0; + ucell.latvec.e33 = 10.0; + + std::vector> kvec_d_in(1, ModuleBase::Vector3(0.0, 0.0, 0.0)); + hamilt::HS_Matrix_K hsk(paraV); + hsk.set_zero_sk(); + Grid_Driver gd(0, 0); + + hamilt::Overlap> + op(&hsk, kvec_d_in, nullptr, SR, &ucell, {1.0}, &gd, &intor_); + + op.contributeHR(); + + // Create density matrix + hamilt::HContainer dmR(paraV); + for (int iap = 0; iap < SR->size_atom_pairs(); ++iap) + { + hamilt::AtomPair& sr_pair = SR->get_atom_pair(iap); + int iat1 = sr_pair.get_atom_i(); + int iat2 = sr_pair.get_atom_j(); + for (int iR = 0; iR < sr_pair.get_R_size(); ++iR) + { + ModuleBase::Vector3 R_index = sr_pair.get_R_index(iR); + hamilt::AtomPair dm_pair(iat1, iat2, R_index, paraV); + dmR.insert_pair(dm_pair); + } + } + dmR.allocate(nullptr, true); + + for (int iap = 0; iap < dmR.size_atom_pairs(); ++iap) + { + hamilt::AtomPair& tmp = dmR.get_atom_pair(iap); + int iat1 = tmp.get_atom_i(); + int iat2 = tmp.get_atom_j(); + auto indexes1 = paraV->get_indexes_row(iat1); + auto indexes2 = paraV->get_indexes_col(iat2); + int nwt = indexes1.size() * indexes2.size(); + for (int i = 0; i < nwt; ++i) + { + tmp.get_pointer(0)[i] = 0.1; + } + } + + ModuleBase::matrix force(ucell.nat, 3); + ModuleBase::matrix stress(3, 3); + + // Calculate stress only + op.cal_force_stress(false, true, &dmR, force, stress); + + // Verify stress tensor is symmetric (within numerical precision) + for (int i = 0; i < 3; ++i) + { + for (int j = 0; j < 3; ++j) + { + EXPECT_NEAR(stress(i, j), stress(j, i), 1e-8); + } + } +} + +// Test force and stress together +TEST_F(OverlapTest, forceStressTogether) +{ + // Initialize unit cell parameters for stress calculation + ucell.lat0 = 1.0; + ucell.omega = 1000.0; // Set non-zero volume to avoid division by zero + ucell.latvec.e11 = 10.0; + ucell.latvec.e22 = 10.0; + ucell.latvec.e33 = 10.0; + + std::vector> kvec_d_in(1, ModuleBase::Vector3(0.0, 0.0, 0.0)); + hamilt::HS_Matrix_K hsk(paraV); + hsk.set_zero_sk(); + Grid_Driver gd(0, 0); + + hamilt::Overlap> + op(&hsk, kvec_d_in, nullptr, SR, &ucell, {1.0}, &gd, &intor_); + + op.contributeHR(); + + // Create density matrix + hamilt::HContainer dmR(paraV); + for (int iap = 0; iap < SR->size_atom_pairs(); ++iap) + { + hamilt::AtomPair& sr_pair = SR->get_atom_pair(iap); + int iat1 = sr_pair.get_atom_i(); + int iat2 = sr_pair.get_atom_j(); + for (int iR = 0; iR < sr_pair.get_R_size(); ++iR) + { + ModuleBase::Vector3 R_index = sr_pair.get_R_index(iR); + hamilt::AtomPair dm_pair(iat1, iat2, R_index, paraV); + dmR.insert_pair(dm_pair); + } + } + dmR.allocate(nullptr, true); + + for (int iap = 0; iap < dmR.size_atom_pairs(); ++iap) + { + hamilt::AtomPair& tmp = dmR.get_atom_pair(iap); + int iat1 = tmp.get_atom_i(); + int iat2 = tmp.get_atom_j(); + auto indexes1 = paraV->get_indexes_row(iat1); + auto indexes2 = paraV->get_indexes_col(iat2); + int nwt = indexes1.size() * indexes2.size(); + for (int i = 0; i < nwt; ++i) + { + tmp.get_pointer(0)[i] = 0.1; + } + } + + ModuleBase::matrix force(ucell.nat, 3); + ModuleBase::matrix stress(3, 3); + + // Calculate both force and stress + op.cal_force_stress(true, true, &dmR, force, stress); + + // Verify stress symmetry + for (int i = 0; i < 3; ++i) + { + for (int j = 0; j < 3; ++j) + { + EXPECT_NEAR(stress(i, j), stress(j, i), 1e-8); + } + } + + // Test passes if no crash occurs + EXPECT_TRUE(true); +} + +// Test with zero orbital cutoff +TEST_F(OverlapTest, zeroOrbitalCutoff) +{ + std::vector> kvec_d_in(1, ModuleBase::Vector3(0.0, 0.0, 0.0)); + hamilt::HS_Matrix_K hsk(paraV); + hsk.set_zero_sk(); + Grid_Driver gd(0, 0); + + // Use zero cutoff - should result in no atom pairs (except possibly self-interaction) + hamilt::Overlap> + op(&hsk, kvec_d_in, nullptr, SR, &ucell, {0.0}, &gd, &intor_); + + op.contributeHR(); + + // With zero cutoff, there should be no or very few atom pairs + // (implementation dependent - might include self-interaction) + EXPECT_GE(SR->size_atom_pairs(), 0); +} + +// Test with large orbital cutoff +TEST_F(OverlapTest, largeOrbitalCutoff) +{ + std::vector> kvec_d_in(1, ModuleBase::Vector3(0.0, 0.0, 0.0)); + hamilt::HS_Matrix_K hsk(paraV); + hsk.set_zero_sk(); + Grid_Driver gd(0, 0); + + // Use very large cutoff - should include all atoms + hamilt::Overlap> + op(&hsk, kvec_d_in, nullptr, SR, &ucell, {1000.0}, &gd, &intor_); + + op.contributeHR(); + + // With large cutoff, should have many atom pairs + // Note: In MPI parallel runs, some processes may not have any atom pairs + if (SR->size_atom_pairs() > 0) + { + EXPECT_GT(SR->size_atom_pairs(), 0); + } + + op.contributeHk(0); +} + +// Test with atoms at cutoff boundary +TEST_F(OverlapTest, cutoffBoundary) +{ + // Set up atoms at specific distances to test cutoff boundary + ucell.lat0 = 1.0; + ucell.latvec.e11 = 10.0; + ucell.latvec.e22 = 10.0; + ucell.latvec.e33 = 10.0; + + // Place two atoms at distance exactly at cutoff + ucell.atoms[0].tau[0] = ModuleBase::Vector3(0.0, 0.0, 0.0); + ucell.atoms[0].tau[1] = ModuleBase::Vector3(0.5, 0.0, 0.0); // distance = 5.0 + + std::vector> kvec_d_in(1, ModuleBase::Vector3(0.0, 0.0, 0.0)); + hamilt::HS_Matrix_K hsk(paraV); + hsk.set_zero_sk(); + Grid_Driver gd(0, 0); + + // Use cutoff of 5.0 - atoms at exactly this distance should be excluded + hamilt::Overlap> + op(&hsk, kvec_d_in, nullptr, SR, &ucell, {2.5}, &gd, &intor_); + + op.contributeHR(); + + // Verify initialization completed + EXPECT_GE(SR->size_atom_pairs(), 0); +} + +// Test Hermitian property of SK matrix +TEST_F(OverlapTest, hermitianProperty) +{ + // Use gamma point to test that diagonal elements are real + std::vector> kvec_d_in(1, ModuleBase::Vector3(0.0, 0.0, 0.0)); + hamilt::HS_Matrix_K> hsk(paraV); + hsk.set_zero_sk(); + Grid_Driver gd(0, 0); + + hamilt::Overlap, double>> + op(&hsk, kvec_d_in, nullptr, SR, &ucell, {1.0}, &gd, &intor_); + + op.contributeHR(); + op.contributeHk(0); + + auto* sk = hsk.get_sk(); + int nrow = paraV->get_row_size(); + int ncol = paraV->get_col_size(); + + // For overlap matrix at gamma point, SK should be real and symmetric + // Diagonal elements should be real (imaginary part should be zero) + for (int i = 0; i < std::min(nrow, ncol); ++i) + { + if (i < nrow && i < ncol) + { + int idx = i * ncol + i; + if (idx < nrow * ncol) + { + EXPECT_NEAR(sk[idx].imag(), 0.0, 1e-8); + } + } + } +} + +// Test with null SR pointer (should skip initialization) +TEST_F(OverlapTest, nullSRPointer) +{ + std::vector> kvec_d_in(1, ModuleBase::Vector3(0.0, 0.0, 0.0)); + hamilt::HS_Matrix_K hsk(paraV); + hsk.set_zero_sk(); + Grid_Driver gd(0, 0); + + // Pass nullptr for SR - should not crash during construction + hamilt::Overlap> + op(&hsk, kvec_d_in, nullptr, nullptr, &ucell, {1.0}, &gd, &intor_); + + // Test passes if no crash occurs during construction + EXPECT_TRUE(true); +} + +// Test force calculation with npol=2 (nspin=4, spin-orbit coupling) +TEST_F(OverlapTest, forceCalculationNpol2) +{ + // Set up unit cell with npol=2 + ucell.set_iat2iwt(2); // npol=2 + + // Reinitialize paraV with doubled size for npol=2 + delete paraV; + paraV = nullptr; +#ifdef __MPI + int nb = 10; + int global_row = test_size * test_nw * 2; // doubled for npol=2 + int global_col = test_size * test_nw * 2; + paraV = new Parallel_Orbitals(); + paraV->init(global_row, global_col, nb, MPI_COMM_WORLD); + paraV->set_atomic_trace(ucell.get_iat2iwt(), test_size, global_row); +#endif + + // Create complex HContainer for npol=2 + hamilt::HContainer>* SR_complex = new hamilt::HContainer>(paraV); + + std::vector> kvec_d_in(1, ModuleBase::Vector3(0.0, 0.0, 0.0)); + hamilt::HS_Matrix_K> hsk(paraV); + hsk.set_zero_sk(); + Grid_Driver gd(0, 0); + + hamilt::Overlap, std::complex>> + op(&hsk, kvec_d_in, nullptr, SR_complex, &ucell, {1.0}, &gd, &intor_); + + op.contributeHR(); + + // Create REAL density matrix (charge density) for force/stress calculation + // Even with npol=2, the density matrix for force/stress is real-valued + hamilt::HContainer dmR(paraV); + for (int iap = 0; iap < SR_complex->size_atom_pairs(); ++iap) + { + hamilt::AtomPair>& sr_pair = SR_complex->get_atom_pair(iap); + int iat1 = sr_pair.get_atom_i(); + int iat2 = sr_pair.get_atom_j(); + for (int iR = 0; iR < sr_pair.get_R_size(); ++iR) + { + ModuleBase::Vector3 R_index = sr_pair.get_R_index(iR); + hamilt::AtomPair dm_pair(iat1, iat2, R_index, paraV); + dmR.insert_pair(dm_pair); + } + } + dmR.allocate(nullptr, true); + + // Set density matrix values - real values representing charge density + // For npol=2, the layout is still handled by step_trace in the implementation + for (int iap = 0; iap < dmR.size_atom_pairs(); ++iap) + { + hamilt::AtomPair& tmp = dmR.get_atom_pair(iap); + int iat1 = tmp.get_atom_i(); + int iat2 = tmp.get_atom_j(); + auto indexes1 = paraV->get_indexes_row(iat1); + auto indexes2 = paraV->get_indexes_col(iat2); + + // Fill with real charge density values + double* dm_ptr = tmp.get_pointer(0); + for (int iw1 = 0; iw1 < indexes1.size(); iw1 += 2) + { + for (int iw2 = 0; iw2 < indexes2.size(); iw2 += 2) + { + int idx = iw1 * indexes2.size() + iw2; + // Set charge density values (diagonal of spin density matrix) + dm_ptr[idx] = 0.1; // Charge density at this orbital pair + } + } + } + + ModuleBase::matrix force(ucell.nat, 3); + ModuleBase::matrix stress(3, 3); + + // Calculate force with npol=2 + op.cal_force_stress(true, false, &dmR, force, stress); + + // Verify force calculation completed without crash + EXPECT_TRUE(true); + + delete SR_complex; + + // Restore npol=1 for other tests + ucell.set_iat2iwt(1); +} + +// Test stress calculation with npol=2 (nspin=4, spin-orbit coupling) +TEST_F(OverlapTest, stressCalculationNpol2) +{ + // Set up unit cell with npol=2 + ucell.set_iat2iwt(2); // npol=2 + + // Initialize unit cell parameters for stress calculation + ucell.lat0 = 1.0; + ucell.omega = 1000.0; // Set non-zero volume to avoid division by zero + ucell.latvec.e11 = 10.0; + ucell.latvec.e22 = 10.0; + ucell.latvec.e33 = 10.0; + + // Reinitialize paraV with doubled size for npol=2 + delete paraV; + paraV = nullptr; +#ifdef __MPI + int nb = 10; + int global_row = test_size * test_nw * 2; // doubled for npol=2 + int global_col = test_size * test_nw * 2; + paraV = new Parallel_Orbitals(); + paraV->init(global_row, global_col, nb, MPI_COMM_WORLD); + paraV->set_atomic_trace(ucell.get_iat2iwt(), test_size, global_row); +#endif + + // Create complex HContainer for npol=2 + hamilt::HContainer>* SR_complex = new hamilt::HContainer>(paraV); + + std::vector> kvec_d_in(1, ModuleBase::Vector3(0.0, 0.0, 0.0)); + hamilt::HS_Matrix_K> hsk(paraV); + hsk.set_zero_sk(); + Grid_Driver gd(0, 0); + + hamilt::Overlap, std::complex>> + op(&hsk, kvec_d_in, nullptr, SR_complex, &ucell, {1.0}, &gd, &intor_); + + op.contributeHR(); + + // Create REAL density matrix (charge density) for force/stress calculation + hamilt::HContainer dmR(paraV); + for (int iap = 0; iap < SR_complex->size_atom_pairs(); ++iap) + { + hamilt::AtomPair>& sr_pair = SR_complex->get_atom_pair(iap); + int iat1 = sr_pair.get_atom_i(); + int iat2 = sr_pair.get_atom_j(); + for (int iR = 0; iR < sr_pair.get_R_size(); ++iR) + { + ModuleBase::Vector3 R_index = sr_pair.get_R_index(iR); + hamilt::AtomPair dm_pair(iat1, iat2, R_index, paraV); + dmR.insert_pair(dm_pair); + } + } + dmR.allocate(nullptr, true); + + // Set density matrix values - real values representing charge density + for (int iap = 0; iap < dmR.size_atom_pairs(); ++iap) + { + hamilt::AtomPair& tmp = dmR.get_atom_pair(iap); + int iat1 = tmp.get_atom_i(); + int iat2 = tmp.get_atom_j(); + auto indexes1 = paraV->get_indexes_row(iat1); + auto indexes2 = paraV->get_indexes_col(iat2); + + double* dm_ptr = tmp.get_pointer(0); + for (int iw1 = 0; iw1 < indexes1.size(); iw1 += 2) + { + for (int iw2 = 0; iw2 < indexes2.size(); iw2 += 2) + { + int idx = iw1 * indexes2.size() + iw2; + dm_ptr[idx] = 0.1; // Charge density + } + } + } + + ModuleBase::matrix force(ucell.nat, 3); + ModuleBase::matrix stress(3, 3); + + // Calculate stress with npol=2 + op.cal_force_stress(false, true, &dmR, force, stress); + + // Verify stress tensor is symmetric + for (int i = 0; i < 3; ++i) + { + for (int j = 0; j < 3; ++j) + { + EXPECT_NEAR(stress(i, j), stress(j, i), 1e-8); + } + } + + delete SR_complex; + + // Restore npol=1 for other tests + ucell.set_iat2iwt(1); +} + +int main(int argc, char** argv) +{ +#ifdef __MPI + MPI_Init(&argc, &argv); +#endif + testing::InitGoogleTest(&argc, argv); + int result = RUN_ALL_TESTS(); +#ifdef __MPI + MPI_Finalize(); +#endif + return result; +} diff --git a/source/source_lcao/module_operator_lcao/test/test_overlapnew.cpp b/source/source_lcao/module_operator_lcao/test/test_overlapnew.cpp deleted file mode 100644 index 19d5e57737..0000000000 --- a/source/source_lcao/module_operator_lcao/test/test_overlapnew.cpp +++ /dev/null @@ -1,186 +0,0 @@ -#include "../overlap_new.h" - -#include "gtest/gtest.h" - -//--------------------------------------- -// Unit test of OverlapNew class -// OverlapNew is a derivative class of Operator, it is used to calculate the overlap matrix -// It use HContainer to store the real space SR matrix -// In this test, we test the correctness and time consuming of 3 functions in OverlapNew class -// - initialize_SR() called in constructor -// - contributeHR() -// - contributeHk() -// - SR(double) and SK(complex) are tested in constructHRd2cd -// - SR(double) and SK(double) are tested in constructHRd2d -//--------------------------------------- - -// test_size is the number of atoms in the unitcell -// modify test_size to test different size of unitcell -int test_size = 10; -int test_nw = 10; -class OverlapNewTest : public ::testing::Test -{ - protected: - void SetUp() override - { -#ifdef __MPI - // MPI parallel settings - MPI_Comm_size(MPI_COMM_WORLD, &dsize); - MPI_Comm_rank(MPI_COMM_WORLD, &my_rank); -#endif - - // set up a unitcell, with one element and test_size atoms, each atom has test_nw orbitals - ucell.ntype = 1; - ucell.nat = test_size; - ucell.atoms = new Atom[ucell.ntype]; - ucell.iat2it = new int[ucell.nat]; - ucell.iat2ia = new int[ucell.nat]; - ucell.atoms[0].tau.resize(ucell.nat); - ucell.itia2iat.create(ucell.ntype, ucell.nat); - for (int iat = 0; iat < ucell.nat; iat++) - { - ucell.iat2it[iat] = 0; - ucell.iat2ia[iat] = iat; - ucell.atoms[0].tau[iat] = ModuleBase::Vector3(0.0, 0.0, 0.0); - ucell.itia2iat(0, iat) = iat; - } - ucell.atoms[0].na = test_size; - ucell.atoms[0].nw = test_nw; - ucell.atoms[0].iw2l.resize(test_nw); - ucell.atoms[0].iw2m.resize(test_nw); - ucell.atoms[0].iw2n.resize(test_nw); - for (int iw = 0; iw < test_nw; ++iw) - { - ucell.atoms[0].iw2l[iw] = 0; - ucell.atoms[0].iw2m[iw] = 0; - ucell.atoms[0].iw2n[iw] = 0; - } - ucell.set_iat2iwt(1); - init_parav(); - // set up a HContainer with ucell - SR = new hamilt::HContainer(paraV); - } - - void TearDown() override - { - delete SR; - delete paraV; - delete[] ucell.atoms; - } - -#ifdef __MPI - void init_parav() - { - int nb = 10; - int global_row = test_size * test_nw; - int global_col = test_size * test_nw; - std::ofstream ofs_running; - paraV = new Parallel_Orbitals(); - paraV->init(global_row, global_col, nb, MPI_COMM_WORLD); - paraV->set_atomic_trace(ucell.get_iat2iwt(), test_size, global_row); - } -#else - void init_parav() - { - } -#endif - - UnitCell ucell; - hamilt::HContainer* SR; - Parallel_Orbitals* paraV; - TwoCenterIntegrator intor_; - - int dsize; - int my_rank = 0; -}; - -// using TEST_F to test OverlapNew -TEST_F(OverlapNewTest, constructHRd2d) -{ - std::vector> kvec_d_in(1, ModuleBase::Vector3(0.0, 0.0, 0.0)); - hamilt::HS_Matrix_K hsk(paraV); - hsk.set_zero_sk(); - Grid_Driver gd(0, 0); - hamilt::OverlapNew> - op(&hsk, kvec_d_in, nullptr, SR, &ucell, {1.0}, &gd, &intor_); - op.contributeHR(); - // check the value of SR - for (int iap = 0; iap < SR->size_atom_pairs(); ++iap) - { - hamilt::AtomPair& tmp = SR->get_atom_pair(iap); - int iat1 = tmp.get_atom_i(); - int iat2 = tmp.get_atom_j(); - auto indexes1 = paraV->get_indexes_row(iat1); - auto indexes2 = paraV->get_indexes_col(iat2); - int nwt = indexes1.size() * indexes2.size(); - for (int i = 0; i < nwt; ++i) - { - EXPECT_EQ(tmp.get_pointer(0)[i], 1.0); - } - } - // calculate SK - op.contributeHk(0); - // check the value of SK - double* sk = hsk.get_sk(); - for (int i = 0; i < hsk.get_size(); ++i) - { - EXPECT_EQ(sk[i], 1.0); - } -} - -TEST_F(OverlapNewTest, constructHRd2cd) -{ - std::vector> kvec_d_in(2, ModuleBase::Vector3(0.0, 0.0, 0.0)); - kvec_d_in[1] = ModuleBase::Vector3(0.1, 0.2, 0.3); - hamilt::HS_Matrix_K> hsk(paraV); - hsk.set_zero_sk(); - Grid_Driver gd(0, 0); - hamilt::OverlapNew, double>> - op(&hsk, kvec_d_in, nullptr, SR, &ucell, {1.0}, &gd, &intor_); - op.contributeHR(); - // check the value of SR - for (int iap = 0; iap < SR->size_atom_pairs(); ++iap) - { - hamilt::AtomPair& tmp = SR->get_atom_pair(iap); - int iat1 = tmp.get_atom_i(); - int iat2 = tmp.get_atom_j(); - auto indexes1 = paraV->get_indexes_row(iat1); - auto indexes2 = paraV->get_indexes_col(iat2); - int nwt = indexes1.size() * indexes2.size(); - for (int i = 0; i < nwt; ++i) - { - EXPECT_EQ(tmp.get_pointer(0)[i], 1.0); - } - } - // calculate SK for gamma point - op.contributeHk(0); - // check the value of SK of gamma point - auto* sk = hsk.get_sk(); - for (int i = 0; i < paraV->get_row_size() * paraV->get_col_size(); ++i) - { - EXPECT_EQ(sk[i].real(), 1.0); - EXPECT_EQ(sk[i].imag(), 0.0); - } - // calculate SK for k point - hsk.set_zero_sk(); - op.contributeHk(1); - // check the value of SK - for (int i = 0; i < paraV->get_row_size() * paraV->get_col_size(); ++i) - { - EXPECT_NEAR(sk[i].real(), -0.80901699437494723, 1e-10); - EXPECT_NEAR(sk[i].imag(), -0.58778525229247336, 1e-10); - } -} - -int main(int argc, char** argv) -{ -#ifdef __MPI - MPI_Init(&argc, &argv); -#endif - testing::InitGoogleTest(&argc, argv); - int result = RUN_ALL_TESTS(); -#ifdef __MPI - MPI_Finalize(); -#endif - return result; -} diff --git a/source/source_lcao/module_operator_lcao/test/test_overlapnew_cd.cpp b/source/source_lcao/module_operator_lcao/test/test_overlapnew_cd.cpp deleted file mode 100644 index d29c0cd840..0000000000 --- a/source/source_lcao/module_operator_lcao/test/test_overlapnew_cd.cpp +++ /dev/null @@ -1,191 +0,0 @@ -#include "../overlap_new.h" - -#include "gtest/gtest.h" - -//--------------------------------------- -// Unit test of OverlapNew class -// OverlapNew is a derivative class of Operator, it is used to calculate the overlap matrix -// It use HContainer to store the real space SR matrix -// In this test, we test the correctness and time consuming of 3 functions in OverlapNew class -// - initialize_SR() called in constructor -// - contributeHR() -// - contributeHk() -// - SR(complex) and SK(complex) are tested in constructHRd2d -//--------------------------------------- - -// test_size is the number of atoms in the unitcell -// modify test_size to test different size of unitcell -int test_size = 10; -int test_nw = 10; -class OverlapNewTest : public ::testing::Test -{ - protected: - void SetUp() override - { -#ifdef __MPI - // MPI parallel settings - MPI_Comm_size(MPI_COMM_WORLD, &dsize); - MPI_Comm_rank(MPI_COMM_WORLD, &my_rank); -#endif - - // set up a unitcell, with one element and test_size atoms, each atom has test_nw orbitals - ucell.ntype = 1; - ucell.nat = test_size; - ucell.atoms = new Atom[ucell.ntype]; - ucell.iat2it = new int[ucell.nat]; - ucell.iat2ia = new int[ucell.nat]; - ucell.atoms[0].tau.resize(ucell.nat); - ucell.itia2iat.create(ucell.ntype, ucell.nat); - for (int iat = 0; iat < ucell.nat; iat++) - { - ucell.iat2it[iat] = 0; - ucell.iat2ia[iat] = iat; - ucell.atoms[0].tau[iat] = ModuleBase::Vector3(0.0, 0.0, 0.0); - ucell.itia2iat(0, iat) = iat; - } - ucell.atoms[0].na = test_size; - ucell.atoms[0].nw = test_nw; - ucell.atoms[0].iw2l.resize(test_nw); - ucell.atoms[0].iw2m.resize(test_nw); - ucell.atoms[0].iw2n.resize(test_nw); - for (int iw = 0; iw < test_nw; ++iw) - { - ucell.atoms[0].iw2l[iw] = 0; - ucell.atoms[0].iw2m[iw] = 0; - ucell.atoms[0].iw2n[iw] = 0; - } - ucell.set_iat2iwt(2); - init_parav(); - // set up a HContainer with ucell - SR = new hamilt::HContainer>(paraV); - } - - void TearDown() override - { - delete SR; - delete paraV; - delete[] ucell.atoms; - } - -#ifdef __MPI - void init_parav() - { - int nb = 10; - int global_row = test_size * test_nw * 2; - int global_col = test_size * test_nw * 2; - std::ofstream ofs_running; - paraV = new Parallel_Orbitals(); - paraV->init(global_row, global_col, nb, MPI_COMM_WORLD); - paraV->set_atomic_trace(ucell.get_iat2iwt(), test_size, global_row); - } -#else - void init_parav() - { - } -#endif - - UnitCell ucell; - hamilt::HContainer>* SR; - Parallel_Orbitals* paraV; - TwoCenterIntegrator intor_; - - int dsize; - int my_rank = 0; -}; - -TEST_F(OverlapNewTest, constructHRcd2cd) -{ - int npol = ucell.get_npol(); - std::vector> kvec_d_in(2, ModuleBase::Vector3(0.0, 0.0, 0.0)); - kvec_d_in[1] = ModuleBase::Vector3(0.1, 0.2, 0.3); - hamilt::HS_Matrix_K> hsk(paraV); - hsk.set_zero_sk(); - Grid_Driver gd(0, 0); - hamilt::OverlapNew, std::complex>> - op(&hsk, kvec_d_in, nullptr, SR, &ucell, {1.0}, &gd, &intor_); - op.contributeHR(); - // check the value of SR - for (int iap = 0; iap < SR->size_atom_pairs(); ++iap) - { - hamilt::AtomPair>& tmp = SR->get_atom_pair(iap); - int iat1 = tmp.get_atom_i(); - int iat2 = tmp.get_atom_j(); - auto indexes1 = paraV->get_indexes_row(iat1); - auto indexes2 = paraV->get_indexes_col(iat2); - int i = 0; - for (int mu = 0; mu < indexes1.size(); ++mu) - { - for (int nu = 0; nu < indexes2.size(); ++nu) - { - if (mu % npol == nu % npol) - { - EXPECT_EQ(tmp.get_pointer(0)[i].real(), 1.0); - EXPECT_EQ(tmp.get_pointer(0)[i].imag(), 0.0); - } - else - { - EXPECT_EQ(tmp.get_pointer(0)[i].real(), 0.0); - EXPECT_EQ(tmp.get_pointer(0)[i].imag(), 0.0); - } - ++i; - } - } - } - // calculate SK for gamma point - op.contributeHk(0); - // check the value of SK of gamma point - auto* sk = hsk.get_sk(); - int i = 0; - for (int irow = 0; irow < paraV->get_row_size(); ++irow) - { - for (int icol = 0; icol < paraV->get_col_size(); ++icol) - { - if (irow % npol == icol % npol) - { - EXPECT_NEAR(sk[i].real(), 1.0, 1e-10); - EXPECT_NEAR(sk[i].imag(), 0.0, 1e-10); - } - else - { - EXPECT_NEAR(sk[i].real(), 0.0, 1e-10); - EXPECT_NEAR(sk[i].imag(), 0.0, 1e-10); - } - ++i; - } - } - // calculate SK for k point - hsk.set_zero_sk(); - op.contributeHk(1); - // check the value of SK - i = 0; - for (int irow = 0; irow < paraV->get_row_size(); ++irow) - { - for (int icol = 0; icol < paraV->get_col_size(); ++icol) - { - if (irow % npol == icol % npol) - { - EXPECT_NEAR(sk[i].real(), -0.80901699437494723, 1e-10); - EXPECT_NEAR(sk[i].imag(), -0.58778525229247336, 1e-10); - } - else - { - EXPECT_NEAR(sk[i].real(), 0.0, 1e-10); - EXPECT_NEAR(sk[i].imag(), 0.0, 1e-10); - } - ++i; - } - } -} - -int main(int argc, char** argv) -{ -#ifdef __MPI - MPI_Init(&argc, &argv); -#endif - testing::InitGoogleTest(&argc, argv); - int result = RUN_ALL_TESTS(); -#ifdef __MPI - MPI_Finalize(); -#endif - return result; -} diff --git a/source/source_lcao/module_operator_lcao/test/tmp_mocks.cpp b/source/source_lcao/module_operator_lcao/test/tmp_mocks.cpp index 4ea19a1fe8..2c27539199 100644 --- a/source/source_lcao/module_operator_lcao/test/tmp_mocks.cpp +++ b/source/source_lcao/module_operator_lcao/test/tmp_mocks.cpp @@ -20,6 +20,10 @@ pseudo::~pseudo() {} // constructor of UnitCell UnitCell::UnitCell() {} UnitCell::~UnitCell() {} +SepPot::SepPot(){} +SepPot::~SepPot(){} +Sep_Cell::Sep_Cell() noexcept {} +Sep_Cell::~Sep_Cell() noexcept {} void UnitCell::set_iat2iwt(const int& npol_in) { this->iat2iwt.resize(this->nat); @@ -127,7 +131,8 @@ void TwoCenterIntegrator::calculate( const int m2, const ModuleBase::Vector3& vR, // vR = R2 - R1 double* out, - double* grad_out) const { + double* grad_out, + double* hess_out) const { out[0] = 1.0; } @@ -204,3 +209,12 @@ void Numerical_Orbital::set_orbital_info(const int&, const int&, const int*, const int&) {} + +// mock of TD_info +class TD_info { +public: + TD_info() {} + ~TD_info() {} + static ModuleBase::Vector3 cart_At; +}; +ModuleBase::Vector3 TD_info::cart_At(0.0, 0.0, 0.0); \ No newline at end of file diff --git a/source/source_lcao/module_operator_lcao/veff_lcao.cpp b/source/source_lcao/module_operator_lcao/veff_lcao.cpp index 576d9c3a5b..f664844544 100644 --- a/source/source_lcao/module_operator_lcao/veff_lcao.cpp +++ b/source/source_lcao/module_operator_lcao/veff_lcao.cpp @@ -4,7 +4,7 @@ #include "source_base/tool_title.h" #include "source_hamilt/module_xc/xc_functional.h" #include "source_cell/unitcell.h" -#include "source_lcao/module_gint/temp_gint/gint_interface.h" +#include "source_lcao/module_gint/gint_interface.h" namespace hamilt { @@ -65,23 +65,9 @@ void Veff>::contributeHR() //(1) prepare data for this k point. // copy the local potential from array. //----------------------------------------- - double* vr_eff1 = this->pot->get_effective_v(this->current_spin); - double* vofk_eff1 = this->pot->get_effective_vofk(this->current_spin); + double* vr_eff1 = this->pot->get_eff_v(this->current_spin); + double* vofk_eff1 = this->pot->get_eff_vofk(this->current_spin); -#ifdef __OLD_GINT - if(XC_Functional::get_ked_flag()) - { - Gint_inout inout(vr_eff1, vofk_eff1, Gint_Tools::job_type::vlocal_meta); - this->GG->cal_vlocal(&inout, this->new_e_iteration); - } - else - { - Gint_inout inout(vr_eff1, Gint_Tools::job_type::vlocal); - this->GG->cal_vlocal(&inout, this->new_e_iteration); - } - this->GG->transfer_pvpR(this->hR,this->ucell); - this->new_e_iteration = false; -#else if(XC_Functional::get_ked_flag()) { ModuleGint::cal_gint_vl_metagga(vr_eff1, vofk_eff1, this->hR); @@ -90,7 +76,6 @@ void Veff>::contributeHR() { ModuleGint::cal_gint_vl(vr_eff1, this->hR); } -#endif if(this->nspin == 2) { @@ -110,26 +95,9 @@ void Veff, double>>::contributeHR() //(1) prepare data for this k point. // copy the local potential from array. //----------------------------------------- - double* vr_eff1 = this->pot->get_effective_v(this->current_spin); - double* vofk_eff1 = this->pot->get_effective_vofk(this->current_spin); - -#ifdef __OLD_GINT - // if you change the place of the following code, - // rememeber to delete the #include - if(XC_Functional::get_ked_flag()) - { - Gint_inout inout(vr_eff1, vofk_eff1, 0, Gint_Tools::job_type::vlocal_meta); - this->GK->cal_gint(&inout); - } - else - { - // vlocal = Vh[rho] + Vxc[rho] + Vl(pseudo) - Gint_inout inout(vr_eff1, 0, Gint_Tools::job_type::vlocal); - this->GK->cal_gint(&inout); - } + double* vr_eff1 = this->pot->get_eff_v(this->current_spin); + double* vofk_eff1 = this->pot->get_eff_vofk(this->current_spin); - this->GK->transfer_pvpR(this->hR,this->ucell,this->gd); -#else if(XC_Functional::get_ked_flag()) { ModuleGint::cal_gint_vl_metagga(vr_eff1, vofk_eff1, this->hR); @@ -138,7 +106,6 @@ void Veff, double>>::contributeHR() { ModuleGint::cal_gint_vl(vr_eff1, this->hR); } -#endif if(this->nspin == 2) { @@ -155,48 +122,24 @@ void Veff, std::complex>>::contributeH ModuleBase::TITLE("Veff", "contributeHR"); ModuleBase::timer::tick("Veff", "contributeHR"); -#ifdef __OLD_GINT - double* vr_eff1 = nullptr; - double* vofk_eff1 = nullptr; - for (int is = 0; is < 4; is++) - { - vr_eff1 = this->pot->get_effective_v(is); - if(XC_Functional::get_ked_flag()) - { - vofk_eff1 = this->pot->get_effective_vofk(is); - } - - if(XC_Functional::get_ked_flag()) - { - Gint_inout inout(vr_eff1, vofk_eff1, is, Gint_Tools::job_type::vlocal_meta); - this->GK->cal_gint(&inout); - } - else - { - Gint_inout inout(vr_eff1, is, Gint_Tools::job_type::vlocal); - this->GK->cal_gint(&inout); - } - } - this->GK->transfer_pvpR(this->hR,this->ucell,this->gd); -#else std::vector vr_eff(4, nullptr); std::vector vofk_eff(4, nullptr); for (int is = 0; is < 4; is++) { - vr_eff[is] = this->pot->get_effective_v(is); + vr_eff[is] = this->pot->get_eff_v(is); if(XC_Functional::get_ked_flag()) { - vofk_eff[is] = this->pot->get_effective_vofk(is); + vofk_eff[is] = this->pot->get_eff_vofk(is); } } if(XC_Functional::get_ked_flag()) { ModuleGint::cal_gint_vl_metagga(vr_eff, vofk_eff, this->hR); - } else + } + else { ModuleGint::cal_gint_vl(vr_eff, this->hR); } -#endif ModuleBase::timer::tick("Veff", "contributeHR"); return; @@ -208,4 +151,4 @@ template class Veff>; template class Veff, double>>; template class Veff, std::complex>>; -} \ No newline at end of file +} diff --git a/source/source_lcao/module_operator_lcao/veff_lcao.h b/source/source_lcao/module_operator_lcao/veff_lcao.h index a621f71fc6..9f06348333 100644 --- a/source/source_lcao/module_operator_lcao/veff_lcao.h +++ b/source/source_lcao/module_operator_lcao/veff_lcao.h @@ -2,8 +2,6 @@ #define VEFFLCAO_H #include "source_base/timer.h" #include "source_estate/module_pot/potential_new.h" -#include "source_lcao/module_gint/gint_gamma.h" -#include "source_lcao/module_gint/gint_k.h" #include "operator_lcao.h" #include "source_cell/module_neighbor/sltk_grid_driver.h" #include "source_cell/unitcell.h" @@ -32,11 +30,9 @@ class Veff> : public OperatorLCAO { public: /** - * @brief Construct a new Veff object for multi-kpoint calculation - * @param GK_in: the pointer of Gint_k object, used for grid integration + * @brief Construct a new Veff object */ - Veff>(Gint_k* GK_in, - HS_Matrix_K* hsk_in, + Veff>(HS_Matrix_K* hsk_in, const std::vector>& kvec_d_in, elecstate::Potential* pot_in, hamilt::HContainer* hR_in, @@ -44,36 +40,12 @@ class Veff> : public OperatorLCAO const std::vector& orb_cutoff, const Grid_Driver* GridD_in, const int& nspin) - : GK(GK_in), orb_cutoff_(orb_cutoff), pot(pot_in), ucell(ucell_in), + : orb_cutoff_(orb_cutoff), pot(pot_in), ucell(ucell_in), gd(GridD_in), OperatorLCAO(hsk_in, kvec_d_in, hR_in) { this->cal_type = calculation_type::lcao_gint; this->initialize_HR(ucell_in, GridD_in); -#ifdef __OLD_GINT - GK_in->initialize_pvpR(*ucell_in, GridD_in, nspin); -#endif - } - /** - * @brief Construct a new Veff object for Gamma-only calculation - * @param GG_in: the pointer of Gint_Gamma object, used for grid integration - */ - Veff>(Gint_Gamma* GG_in, - HS_Matrix_K* hsk_in, - const std::vector>& kvec_d_in, - elecstate::Potential* pot_in, - hamilt::HContainer* hR_in, - const UnitCell* ucell_in, - const std::vector& orb_cutoff, - const Grid_Driver* GridD_in, - const int& nspin) - : GG(GG_in), orb_cutoff_(orb_cutoff), pot(pot_in), OperatorLCAO(hsk_in, kvec_d_in, hR_in) - { - this->cal_type = calculation_type::lcao_gint; - this->initialize_HR(ucell_in, GridD_in); -#ifdef __OLD_GINT - GG_in->initialize_pvpR(*ucell_in, GridD_in, nspin); -#endif } ~Veff>(){}; @@ -86,15 +58,10 @@ class Veff> : public OperatorLCAO */ virtual void contributeHR() override; - const UnitCell* ucell; - const Grid_Driver* gd; + const UnitCell* ucell = nullptr; + const Grid_Driver* gd = nullptr; private: - // used for k-dependent grid integration. - Gint_k* GK = nullptr; - - // used for gamma only algorithms. - Gint_Gamma* GG = nullptr; std::vector orb_cutoff_; diff --git a/source/source_lcao/module_rdmft/rdmft.cpp b/source/source_lcao/module_rdmft/rdmft.cpp index 837128fcf9..82aeeead51 100644 --- a/source/source_lcao/module_rdmft/rdmft.cpp +++ b/source/source_lcao/module_rdmft/rdmft.cpp @@ -6,11 +6,9 @@ #include "rdmft.h" #include "source_lcao/module_rdmft/rdmft_tools.h" #include "source_base/timer.h" -#include "source_pw/module_pwdft/global.h" #include "source_base/parallel_reduce.h" #include "source_cell/module_symmetry/symmetry.h" - #include #include #include @@ -55,9 +53,7 @@ RDMFT::~RDMFT() } template -void RDMFT::init(Gint_Gamma& GG_in, - Gint_k& GK_in, - Parallel_Orbitals& ParaV_in, +void RDMFT::init(Parallel_Orbitals& ParaV_in, UnitCell& ucell_in, const Grid_Driver& gd_in, K_Vectors& kv_in, @@ -67,8 +63,6 @@ void RDMFT::init(Gint_Gamma& GG_in, std::string XC_func_rdmft_in, double alpha_power_in) { - GG = &GG_in; - GK = &GK_in; ParaV = &ParaV_in; ucell = &ucell_in; kv = &kv_in; diff --git a/source/source_lcao/module_rdmft/rdmft.h b/source/source_lcao/module_rdmft/rdmft.h index a8bf7ea97e..8e9fb71ced 100644 --- a/source/source_lcao/module_rdmft/rdmft.h +++ b/source/source_lcao/module_rdmft/rdmft.h @@ -6,15 +6,12 @@ #define RDMFT_H #include "source_io/module_parameter/parameter.h" -#include "source_pw/module_pwdft/global.h" #include "source_psi/psi.h" #include "source_base/matrix.h" #include "source_base/parallel_2d.h" #include "source_basis/module_ao/parallel_orbitals.h" #include "source_cell/unitcell.h" -#include "source_lcao/module_gint/gint_gamma.h" -#include "source_lcao/module_gint/gint_k.h" #include "source_basis/module_ao/ORB_read.h" #include "source_basis/module_nao/two_center_bundle.h" @@ -28,6 +25,9 @@ // there are some operator reload to print data in different formats #endif +#include "source_estate/elecstate.h" +#include "source_cell/module_neighbor/sltk_grid_driver.h" // use Grid_Driver + #include #include #include @@ -80,9 +80,7 @@ class RDMFT // std::vector E_RDMFT(4); //! initialization of rdmft calculation - void init(Gint_Gamma& GG_in, - Gint_k& GK_in, - Parallel_Orbitals& ParaV_in, + void init(Parallel_Orbitals& ParaV_in, UnitCell& ucell_in, const Grid_Driver& gd_in, K_Vectors& kv_in, @@ -190,9 +188,6 @@ class RDMFT const int cal_E_type = 1; // cal_type = 2 just support XC-functional without exx /****** these parameters are passed in from outside, don't need delete ******/ - // GK and GG are used for multi-k grid integration and gamma only algorithms respectively - Gint_k* GK = nullptr; - Gint_Gamma* GG = nullptr; Charge* charge = nullptr; // update after ion step diff --git a/source/source_lcao/module_rdmft/rdmft_pot.cpp b/source/source_lcao/module_rdmft/rdmft_pot.cpp index ba29d9ebc6..9c3d708fa1 100644 --- a/source/source_lcao/module_rdmft/rdmft_pot.cpp +++ b/source/source_lcao/module_rdmft/rdmft_pot.cpp @@ -12,8 +12,8 @@ #include "source_lcao/module_ri/RI_2D_Comm.h" #include "source_lcao/module_operator_lcao/op_exx_lcao.h" #endif -#include "source_lcao/module_operator_lcao/ekinetic_new.h" -#include "source_lcao/module_operator_lcao/nonlocal_new.h" +#include "source_lcao/module_operator_lcao/ekinetic.h" +#include "source_lcao/module_operator_lcao/nonlocal.h" #include "source_lcao/module_operator_lcao/veff_lcao.h" namespace rdmft @@ -51,7 +51,7 @@ void RDMFT::cal_V_TV() { HR_TV->set_zero(); - V_ekinetic_potential = new hamilt::EkineticNew>(hsk_TV, + V_ekinetic_potential = new hamilt::EKinetic>(hsk_TV, kv->kvec_d, HR_TV, this->ucell, @@ -59,7 +59,7 @@ void RDMFT::cal_V_TV() this->gd, two_center_bundle->kinetic_orb.get()); - V_nonlocal = new hamilt::NonlocalNew>(hsk_TV, + V_nonlocal = new hamilt::Nonlocal>(hsk_TV, kv->kvec_d, HR_TV, this->ucell, @@ -69,8 +69,7 @@ void RDMFT::cal_V_TV() if( PARAM.inp.gamma_only ) { - V_local = new rdmft::Veff_rdmft(GG, - hsk_TV, + V_local = new rdmft::Veff_rdmft(hsk_TV, kv->kvec_d, this->pelec->pot, HR_TV, @@ -86,8 +85,7 @@ void RDMFT::cal_V_TV() } else { - V_local = new rdmft::Veff_rdmft(GK, - hsk_TV, + V_local = new rdmft::Veff_rdmft(hsk_TV, kv->kvec_d, this->pelec->pot, HR_TV, @@ -117,8 +115,7 @@ void RDMFT::cal_V_hartree() if( PARAM.inp.gamma_only ) { - V_hartree = new rdmft::Veff_rdmft(GG, - hsk_hartree, + V_hartree = new rdmft::Veff_rdmft(hsk_hartree, kv->kvec_d, this->pelec->pot, HR_hartree, @@ -135,8 +132,7 @@ void RDMFT::cal_V_hartree() else { // this can be optimized, use potHartree.update_from_charge() - V_hartree = new rdmft::Veff_rdmft(GK, - hsk_hartree, + V_hartree = new rdmft::Veff_rdmft(hsk_hartree, kv->kvec_d, this->pelec->pot, HR_hartree, @@ -197,8 +193,7 @@ void RDMFT::cal_V_XC(const UnitCell& ucell) if( PARAM.inp.gamma_only ) { // this can be optimized, use potXC.update_from_charge() - V_dft_XC = new rdmft::Veff_rdmft(GG, - hsk_dft_XC, + V_dft_XC = new rdmft::Veff_rdmft(hsk_dft_XC, kv->kvec_d, this->pelec->pot, HR_dft_XC, @@ -217,8 +212,7 @@ void RDMFT::cal_V_XC(const UnitCell& ucell) else { // this can be optimized, use potXC.update_from_charge() - V_dft_XC = new rdmft::Veff_rdmft(GK, - hsk_dft_XC, + V_dft_XC = new rdmft::Veff_rdmft(hsk_dft_XC, kv->kvec_d, this->pelec->pot, HR_dft_XC, diff --git a/source/source_lcao/module_rdmft/rdmft_tools.cpp b/source/source_lcao/module_rdmft/rdmft_tools.cpp index 32c22dfef2..845ffea162 100644 --- a/source/source_lcao/module_rdmft/rdmft_tools.cpp +++ b/source/source_lcao/module_rdmft/rdmft_tools.cpp @@ -3,7 +3,6 @@ // DATE : 2024-03-11 //========================================================== #include "source_lcao/module_rdmft/rdmft_tools.h" -#include "source_pw/module_pwdft/global.h" // used by class Veff_rdmft #include "source_base/tool_title.h" #include "source_base/timer.h" @@ -12,7 +11,7 @@ #include "source_estate/module_pot/pot_local.h" #include "source_estate/module_pot/pot_xc.h" #include "source_pw/module_pwdft/structure_factor.h" -#include "source_lcao/module_gint/temp_gint/gint_interface.h" +#include "source_lcao/module_gint/gint_interface.h" #include #include @@ -44,8 +43,8 @@ void HkPsi(const Parallel_Orbitals* ParaV, const int nbands = ParaV->desc_wfc[3]; //because wfc(bands, basis'), H(basis, basis'), we do wfc*H^T(in the perspective of cpp, not in fortran). And get H_wfc(bands, basis) is correct. - pdgemm_( &C_char, &N_char, &nbasis, &nbands, &nbasis, &one_double, &HK, &one_int, &one_int, ParaV->desc, - &wfc, &one_int, &one_int, ParaV->desc_wfc, &zero_double, &H_wfc, &one_int, &one_int, ParaV->desc_wfc ); + ScalapackConnector::gemm( C_char, N_char, nbasis, nbands, nbasis, one_double, &HK, 1, 1, ParaV->desc, + &wfc, 1, 1, ParaV->desc_wfc, zero_double, &H_wfc, 1, 1, ParaV->desc_wfc ); #endif } @@ -71,8 +70,8 @@ void cal_bra_op_ket(const Parallel_Orbitals* ParaV, const int nbasis = ParaV->desc[2]; const int nbands = ParaV->desc_wfc[3]; - pdgemm_( &T_char, &N_char, &nbands, &nbands, &nbasis, &one_double, &wfc, &one_int, &one_int, ParaV->desc_wfc, - &H_wfc, &one_int, &one_int, ParaV->desc_wfc, &zero_double, &Dmn[0], &one_int, &one_int, para_Eij_in.desc ); + ScalapackConnector::gemm( T_char, N_char, nbands, nbands, nbasis, one_double, &wfc, 1, 1, ParaV->desc_wfc, + &H_wfc, 1, 1, ParaV->desc_wfc, zero_double, &Dmn[0], 1, 1, para_Eij_in.desc ); #endif } @@ -186,13 +185,6 @@ double occNum_func(const double eta, const int symbol, const std::string XC_func } - -template class Veff_rdmft; - -template class Veff_rdmft, double>; - -template class Veff_rdmft, std::complex>; - // this part of the code is copying from class Veff // initialize_HR() template @@ -266,12 +258,7 @@ void Veff_rdmft, double>::contributeHR() vr_eff_rdmft = &v_matrix_hartree(is, 0); // do grid integral calculation to get HR -#ifdef __OLD_GINT - Gint_inout inout(vr_eff_rdmft, is, Gint_Tools::job_type::vlocal); - this->GK->cal_gint(&inout); -#else ModuleGint::cal_gint_vl(vr_eff_rdmft, this->hR); -#endif } } else if( potential_ == "local" ) @@ -285,12 +272,7 @@ void Veff_rdmft, double>::contributeHR() vr_eff_rdmft = &v_matrix_local(0, 0); // do grid integral calculation to get HR -#ifdef __OLD_GINT - Gint_inout inout(vr_eff_rdmft, 0, Gint_Tools::job_type::vlocal); - this->GK->cal_gint(&inout); -#else ModuleGint::cal_gint_vl(vr_eff_rdmft, this->hR); -#endif } else if( potential_ == "xc" ) { @@ -309,12 +291,7 @@ void Veff_rdmft, double>::contributeHR() vr_eff_rdmft = &v_matrix_XC(is, 0); // do grid integral calculation to get HR -#ifdef __OLD_GINT - Gint_inout inout(vr_eff_rdmft, is, Gint_Tools::job_type::vlocal); - this->GK->cal_gint(&inout); -#else ModuleGint::cal_gint_vl(vr_eff_rdmft, this->hR); -#endif } } else @@ -323,10 +300,6 @@ void Veff_rdmft, double>::contributeHR() } // get HR for 2D-block parallel format - // this->GK->transfer_pvpR(this->hR); -#ifdef __OLD_GINT - this->GK->transfer_pvpR(this->hR,this->ucell,this->gd); -#endif if(this->nspin == 2) { @@ -351,7 +324,6 @@ void Veff_rdmft::contributeHR() ModuleBase::TITLE("Veff", "contributeHR"); ModuleBase::timer::tick("Veff", "contributeHR"); - // this->GK->reset_spin(this->current_spin); double* vr_eff_rdmft = nullptr; @@ -368,12 +340,7 @@ void Veff_rdmft::contributeHR() vr_eff_rdmft = &v_matrix_hartree(is, 0); // do grid integral calculation to get HR -#ifdef __OLD_GINT - Gint_inout inout(vr_eff_rdmft, is, Gint_Tools::job_type::vlocal); - this->GG->cal_gint(&inout); -#else ModuleGint::cal_gint_vl(vr_eff_rdmft, this->hR); -#endif } } else if( potential_ == "local" ) @@ -387,16 +354,7 @@ void Veff_rdmft::contributeHR() vr_eff_rdmft = &v_matrix_local(0, 0); // do grid integral calculation to get HR -#ifdef __OLD_GINT - Gint_inout inout(vr_eff_rdmft, 0, Gint_Tools::job_type::vlocal); - - // because in gamma_only, cal_gint would not set hRGint zero first - // so must use cal_vlocal(), and in rdmft_test.h, calculate V_hartree->contributeHR() first - - this->GG->cal_vlocal(&inout, false); // cal_gint ??? -#else ModuleGint::cal_gint_vl(vr_eff_rdmft, this->hR); -#endif } else if( potential_ == "xc" ) { @@ -414,12 +372,7 @@ void Veff_rdmft::contributeHR() vr_eff_rdmft = &v_matrix_XC(is, 0); // do grid integral calculation to get HR -#ifdef __OLD_GINT - Gint_inout inout(vr_eff_rdmft, is, Gint_Tools::job_type::vlocal); - this->GG->cal_gint(&inout); -#else ModuleGint::cal_gint_vl(vr_eff_rdmft, this->hR); -#endif } } else @@ -427,10 +380,6 @@ void Veff_rdmft::contributeHR() std::cout << "\n\n!!!!!!\n there may be something wrong when use class Veff_rdmft\n\n!!!!!!\n"; } -#ifdef __OLD_GINT - // get HR for 2D-block parallel format - this->GG->transfer_pvpR(this->hR,this->ucell); -#endif this->new_e_iteration = false; if(this->nspin == 2) @@ -442,6 +391,10 @@ void Veff_rdmft::contributeHR() } } +template class rdmft::Veff_rdmft; + +template class rdmft::Veff_rdmft, double>; +template class rdmft::Veff_rdmft, std::complex>; diff --git a/source/source_lcao/module_rdmft/rdmft_tools.h b/source/source_lcao/module_rdmft/rdmft_tools.h index 7b1639f8e8..01b433f595 100644 --- a/source/source_lcao/module_rdmft/rdmft_tools.h +++ b/source/source_lcao/module_rdmft/rdmft_tools.h @@ -5,19 +5,18 @@ #ifndef RDMFT_TOOLS_H #define RDMFT_TOOLS_H +#include "source_cell/klist.h" +#include "source_io/module_parameter/parameter.h" // use PARAM #include "source_psi/psi.h" #include "source_base/matrix.h" #include "source_cell/module_neighbor/sltk_grid_driver.h" #include "source_cell/unitcell.h" -#include "source_lcao/module_gint/gint_gamma.h" -#include "source_lcao/module_gint/gint_k.h" #include "source_estate/module_pot/potential_new.h" #include "source_base/module_external/blas_connector.h" #include "source_base/module_external/scalapack_connector.h" #include "source_base/parallel_2d.h" #include "source_basis/module_ao/parallel_orbitals.h" #include "source_base/parallel_reduce.h" -#include "source_pw/module_pwdft/global.h" #include "source_estate/module_dm/cal_dm_psi.h" #include "source_estate/module_dm/density_matrix.h" @@ -79,8 +78,8 @@ void HkPsi(const Parallel_Orbitals* ParaV, const TK& HK, const TK& wfc, TK& H_wf const int nbands = ParaV->desc_wfc[3]; //because wfc(bands, basis'), H(basis, basis'), we do wfc*H^T(in the perspective of cpp, not in fortran). And get H_wfc(bands, basis) is correct. - pzgemm_( &C_char, &N_char, &nbasis, &nbands, &nbasis, &one_complex, &HK, &one_int, &one_int, ParaV->desc, - &wfc, &one_int, &one_int, ParaV->desc_wfc, &zero_complex, &H_wfc, &one_int, &one_int, ParaV->desc_wfc ); + ScalapackConnector::gemm( C_char, N_char, nbasis, nbands, nbasis, one_complex, &HK, one_int, one_int, ParaV->desc, + &wfc, one_int, one_int, ParaV->desc_wfc, zero_complex, &H_wfc, one_int, one_int, ParaV->desc_wfc ); #endif } @@ -106,8 +105,8 @@ void cal_bra_op_ket(const Parallel_Orbitals* ParaV, const Parallel_2D& para_Eij_ const int nbasis = ParaV->desc[2]; const int nbands = ParaV->desc_wfc[3]; - pzgemm_( &C_char, &N_char, &nbands, &nbands, &nbasis, &one_complex, &wfc, &one_int, &one_int, ParaV->desc_wfc, - &H_wfc, &one_int, &one_int, ParaV->desc_wfc, &zero_complex, &Dmn[0], &one_int, &one_int, para_Eij_in.desc ); + ScalapackConnector::gemm( C_char, N_char, nbands, nbands, nbasis, one_complex, &wfc, one_int, one_int, ParaV->desc_wfc, + &H_wfc, one_int, one_int, ParaV->desc_wfc, zero_complex, &Dmn[0], one_int, one_int, para_Eij_in.desc ); #endif } @@ -259,10 +258,8 @@ class Veff_rdmft : public hamilt::OperatorLCAO public: /** * @brief Construct a new Veff object for multi-kpoint calculation - * @param GK_in: the pointer of Gint_k object, used for grid integration */ - Veff_rdmft(Gint_k* GK_in, - hamilt::HS_Matrix_K* hsk_in, + Veff_rdmft(hamilt::HS_Matrix_K* hsk_in, const std::vector>& kvec_d_in, elecstate::Potential* pot_in, hamilt::HContainer* hR_in, @@ -277,45 +274,15 @@ class Veff_rdmft : public hamilt::OperatorLCAO const std::string potential_in, double* etxc_in = nullptr, double* vtxc_in = nullptr) - : GK(GK_in), orb_cutoff_(orb_cutoff), pot(pot_in), ucell(ucell_in), + : orb_cutoff_(orb_cutoff), pot(pot_in), ucell(ucell_in), gd(GridD_in), hamilt::OperatorLCAO(hsk_in, kvec_d_in, hR_in), charge_(charge_in), rho_basis_(rho_basis_in), vloc_(vloc_in), sf_(sf_in), potential_(potential_in), etxc(etxc_in), vtxc(vtxc_in) { this->cal_type = hamilt::calculation_type::lcao_gint; this->initialize_HR(ucell_in, GridD_in); -#ifdef __OLD_GINT - GK_in->initialize_pvpR(*ucell_in, GridD_in, nspin); -#endif } - Veff_rdmft(Gint_Gamma* GG_in, - hamilt::HS_Matrix_K* hsk_in, - const std::vector>& kvec_d_in, - elecstate::Potential* pot_in, - hamilt::HContainer* hR_in, - const UnitCell* ucell_in, - const std::vector& orb_cutoff, - const Grid_Driver* GridD_in, - const int& nspin, - const Charge* charge_in, - const ModulePW::PW_Basis* rho_basis_in, - const ModuleBase::matrix* vloc_in, - const ModuleBase::ComplexMatrix* sf_in, - const std::string potential_in, - double* etxc_in = nullptr, - double* vtxc_in = nullptr) - : GG(GG_in), orb_cutoff_(orb_cutoff), pot(pot_in), hamilt::OperatorLCAO(hsk_in, kvec_d_in, hR_in), - ucell(ucell_in), gd(GridD_in), charge_(charge_in), rho_basis_(rho_basis_in), vloc_(vloc_in), sf_(sf_in), - potential_(potential_in), etxc(etxc_in), vtxc(vtxc_in) - { - this->cal_type = hamilt::calculation_type::lcao_gint; - - this->initialize_HR(ucell_in, GridD_in); -#ifdef __OLD_GINT - GG_in->initialize_pvpR(*ucell_in, GridD_in, nspin); -#endif - } - + ~Veff_rdmft(){}; /** @@ -326,16 +293,11 @@ class Veff_rdmft : public hamilt::OperatorLCAO */ virtual void contributeHR() override; - const UnitCell* ucell; + const UnitCell* ucell = nullptr; - const Grid_Driver* gd; + const Grid_Driver* gd = nullptr; private: - // used for k-dependent grid integration. - Gint_k* GK = nullptr; - - // used for gamma only algorithms. - Gint_Gamma* GG = nullptr; std::vector orb_cutoff_; @@ -355,19 +317,19 @@ class Veff_rdmft : public hamilt::OperatorLCAO // added by jghan - const Charge* charge_; + const Charge* charge_ = nullptr; std::string potential_; - const ModulePW::PW_Basis* rho_basis_; + const ModulePW::PW_Basis* rho_basis_ = nullptr; const ModuleBase::matrix* vloc_; - const ModuleBase::ComplexMatrix* sf_; + const ModuleBase::ComplexMatrix* sf_ = nullptr; - double* etxc; + double* etxc = nullptr; - double* vtxc; + double* vtxc = nullptr; }; diff --git a/source/source_lcao/module_rdmft/update_state_rdmft.cpp b/source/source_lcao/module_rdmft/update_state_rdmft.cpp index 88a6761d1b..4f22791cf9 100644 --- a/source/source_lcao/module_rdmft/update_state_rdmft.cpp +++ b/source/source_lcao/module_rdmft/update_state_rdmft.cpp @@ -8,8 +8,8 @@ #include "source_estate/module_dm/cal_dm_psi.h" #include "source_estate/module_dm/density_matrix.h" #include "source_estate/module_charge/symmetry_rho.h" -#include "source_lcao/module_gint/temp_gint/gint_interface.h" - +#include "source_lcao/module_gint/gint_interface.h" +#include "source_hamilt/module_xc/xc_functional.h" namespace rdmft { @@ -106,22 +106,10 @@ void RDMFT::update_charge(UnitCell& ucell) { ModuleBase::GlobalFunc::ZEROS(charge->rho[is], charge->nrxx); } -#ifdef __OLD_GINT - GG->transfer_DM2DtoGrid(DM_gamma_only.get_DMR_vector()); - Gint_inout inout(charge->rho, Gint_Tools::job_type::rho, nspin); - GG->cal_gint(&inout); -#else ModuleGint::cal_gint_rho(DM_gamma_only.get_DMR_vector(), nspin, charge->rho); -#endif if (XC_Functional::get_ked_flag()) { - // for (int is = 0; is < nspin; is++) - // { - // ModuleBase::GlobalFunc::ZEROS(charge->kin_r[is], charge->nrxx); - // } - // Gint_inout inout1(charge->kin_r, Gint_Tools::job_type::tau); - // GG->cal_gint(&inout1); this->pelec->cal_tau(wfc); } @@ -140,22 +128,10 @@ void RDMFT::update_charge(UnitCell& ucell) ModuleBase::GlobalFunc::ZEROS(charge->rho[is], charge->nrxx); } -#ifdef __OLD_GINT - GK->transfer_DM2DtoGrid(DM.get_DMR_vector()); - Gint_inout inout(charge->rho, Gint_Tools::job_type::rho, nspin); - GK->cal_gint(&inout); -#else ModuleGint::cal_gint_rho(DM.get_DMR_vector(), nspin, charge->rho); -#endif if (XC_Functional::get_ked_flag()) { - // for (int is = 0; is < nspin; is++) - // { - // ModuleBase::GlobalFunc::ZEROS(charge->kin_r[is], charge->nrxx); - // } - // Gint_inout inout1(charge->kin_r, Gint_Tools::job_type::tau); - // GK->cal_gint(&inout1); this->pelec->cal_tau(wfc); } diff --git a/source/source_lcao/module_ri/ABFs_Construct-PCA.cpp b/source/source_lcao/module_ri/ABFs_Construct-PCA.cpp index 9c944f77db..51019df1b0 100644 --- a/source/source_lcao/module_ri/ABFs_Construct-PCA.cpp +++ b/source/source_lcao/module_ri/ABFs_Construct-PCA.cpp @@ -1,9 +1,8 @@ #include "ABFs_Construct-PCA.h" -#include "exx_abfs-abfs_index.h" #include "../../source_base/module_external/lapack_connector.h" #include "../../source_base/global_function.h" -#include "../../source_base/element_basis_index.h" +#include "../../source_basis/module_ao/element_basis_index-ORB.h" #include "../../source_base/matrix.h" #include "../../source_lcao/module_ri/Matrix_Orbs11.h" #include "../../source_lcao/module_ri/Matrix_Orbs21.h" @@ -15,139 +14,209 @@ namespace ABFs_Construct { namespace PCA { - void tensor_dsyev(const char jobz, const char uplo, RI::Tensor & a, double*const w, int & info) +template <> +void tensor_syev(char jobz, char uplo, RI::Tensor& a, double* w, int& info) { - // reference: dsyev in lapack_connector.h (for ModuleBase::matrix) assert(a.shape.size() == 2); assert(a.shape[0] == a.shape[1]); - const int nr = a.shape[0]; - const int nc = a.shape[1]; - double work_tmp=0.0; + const int n = a.shape[0]; + const int lda = a.shape[1]; + + double work_query = 0.0; constexpr int minus_one = -1; - dsyev_(&jobz, &uplo, &nr, a.ptr(), &nc, w, &work_tmp, &minus_one, &info); // get best lwork - const int lwork = work_tmp; + dsyev_(&jobz, &uplo, &n, a.ptr(), &lda, w, &work_query, &minus_one, &info); + + const int lwork = static_cast(work_query); std::vector work(std::max(1, lwork)); - dsyev_(&jobz, &uplo, &nr, a.ptr(), &nc, w, work.data(), &lwork, &info); + + dsyev_(&jobz, &uplo, &n, a.ptr(), &lda, w, work.data(), &lwork, &info); +} + +template <> +void tensor_syev(char jobz, char uplo, RI::Tensor& a, float* w, int& info) +{ + assert(a.shape.size() == 2); + assert(a.shape[0] == a.shape[1]); + + const int n = a.shape[0]; + const int lda = a.shape[1]; + + float work_query = 0.0f; + constexpr int minus_one = -1; + + ssyev_(&jobz, &uplo, &n, a.ptr(), &lda, w, &work_query, &minus_one, &info); + + const int lwork = static_cast(work_query); + std::vector work(std::max(1, lwork)); + + ssyev_(&jobz, &uplo, &n, a.ptr(), &lda, w, work.data(), &lwork, &info); } - RI::Tensor get_sub_matrix( - const RI::Tensor & m, // size: (lcaos, lcaos, abfs) - const std::size_t & T, - const std::size_t & L, - const ModuleBase::Element_Basis_Index::Range & range, - const ModuleBase::Element_Basis_Index::IndexLNM & index ) +template <> +void tensor_syev>(char jobz, char uplo, RI::Tensor>& a, double* w, int& info) +{ + assert(a.shape.size() == 2); + assert(a.shape[0] == a.shape[1]); + + const int n = a.shape[0]; + const int lda = a.shape[1]; + + std::complex work_query; + constexpr int minus_one = -1; + + zheev_(&jobz, &uplo, &n, a.ptr(), &lda, w, &work_query, &minus_one, nullptr, &info); + + const int lwork = static_cast(work_query.real()); + std::vector> work(std::max(1, lwork)); + std::vector rwork(std::max(1, 3 * n - 2)); + + zheev_(&jobz, &uplo, &n, a.ptr(), &lda, w, work.data(), &lwork, rwork.data(), &info); +} + +template <> +void tensor_syev>(char jobz, char uplo, RI::Tensor>& a, float* w, int& info) +{ + assert(a.shape.size() == 2); + assert(a.shape[0] == a.shape[1]); + + const int n = a.shape[0]; + const int lda = a.shape[1]; + + std::complex work_query; + constexpr int minus_one = -1; + + cheev_(&jobz, &uplo, &n, a.ptr(), &lda, w, &work_query, &minus_one, nullptr, &info); + + const int lwork = static_cast(work_query.real()); + std::vector> work(std::max(1, lwork)); + std::vector rwork(std::max(1, 3 * n - 2)); + + cheev_(&jobz, &uplo, &n, a.ptr(), &lda, w, work.data(), &lwork, rwork.data(), &info); +} +// void tensor_dsyev(const char jobz, const char uplo, RI::Tensor & a, double*const w, int & info) +// { +// // reference: dsyev in lapack_connector.h (for ModuleBase::matrix) +// assert(a.shape.size() == 2); +// assert(a.shape[0] == a.shape[1]); +// const int nr = a.shape[0]; +// const int nc = a.shape[1]; + +// double work_tmp=0.0; +// constexpr int minus_one = -1; +// dsyev_(&jobz, &uplo, &nr, a.ptr(), &nc, w, &work_tmp, &minus_one, &info); // get best lwork + +// const int lwork = work_tmp; +// std::vector work(std::max(1, lwork)); +// dsyev_(&jobz, &uplo, &nr, a.ptr(), &nc, w, work.data(), &lwork, &info); +// } + +RI::Tensor get_sub_matrix(const RI::Tensor& m, // size: (lcaos, lcaos, abfs) + const std::size_t& T, + const std::size_t& L, + const ModuleBase::Element_Basis_Index::Range& range, + const ModuleBase::Element_Basis_Index::IndexLNM& index) { ModuleBase::TITLE("ABFs_Construct::PCA::get_sub_matrix"); assert(m.shape.size() == 3); - RI::Tensor m_sub({ m.shape[0], m.shape[1], range[T][L].N }); - for (std::size_t ir=0; ir!=m.shape[0]; ++ir) { - for (std::size_t jr=0; jr!=m.shape[1]; ++jr) { - for (std::size_t N=0; N!=range[T][L].N; ++N) { + RI::Tensor m_sub({m.shape[0], m.shape[1], range[T][L].N}); + for (std::size_t ir = 0; ir != m.shape[0]; ++ir) + { + for (std::size_t jr = 0; jr != m.shape[1]; ++jr) + { + for (std::size_t N = 0; N != range[T][L].N; ++N) + { m_sub(ir, jr, N) = m(ir, jr, index[T][L][N][0]); } } } - m_sub = m_sub.reshape({ m.shape[0] * m.shape[1], range[T][L].N }); + m_sub = m_sub.reshape({m.shape[0] * m.shape[1], range[T][L].N}); return m_sub; } - RI::Tensor get_column_mean0_matrix( const RI::Tensor & m ) +RI::Tensor get_column_mean0_matrix(const RI::Tensor& m) { ModuleBase::TITLE("ABFs_Construct::PCA::get_column_mean0_matrix"); - RI::Tensor m_new( m.shape); - for( std::size_t ic=0; ic!=m.shape[1]; ++ic ) + RI::Tensor m_new(m.shape); + for (std::size_t ic = 0; ic != m.shape[1]; ++ic) { - double sum=0; - for( std::size_t ir=0; ir!=m.shape[0]; ++ir ) { - sum += m(ir,ic); + double sum = 0; + for (std::size_t ir = 0; ir != m.shape[0]; ++ir) + { + sum += m(ir, ic); } - const double mean = sum/m.shape[0]; - for( std::size_t ir=0; ir!=m.shape[0]; ++ir ) { - m_new(ir,ic) = m(ir,ic) - mean; + const double mean = sum / m.shape[0]; + for (std::size_t ir = 0; ir != m.shape[0]; ++ir) + { + m_new(ir, ic) = m(ir, ic) - mean; } } return m_new; } std::vector, RI::Tensor>>> cal_PCA( - const UnitCell &ucell, + const UnitCell& ucell, const LCAO_Orbitals& orb, - const std::vector>> &lcaos, - const std::vector>> &abfs, - const double kmesh_times ) + const std::vector>>& lcaos, + const std::vector>>& abfs, + const double kmesh_times) { ModuleBase::TITLE("ABFs_Construct::PCA::cal_PCA"); - const ModuleBase::Element_Basis_Index::Range - range_lcaos = Exx_Abfs::Abfs_Index::construct_range( lcaos ); - const ModuleBase::Element_Basis_Index::IndexLNM - index_lcaos = ModuleBase::Element_Basis_Index::construct_index( range_lcaos ); - - const ModuleBase::Element_Basis_Index::Range - range_abfs = Exx_Abfs::Abfs_Index::construct_range( abfs ); - const ModuleBase::Element_Basis_Index::IndexLNM - index_abfs = ModuleBase::Element_Basis_Index::construct_index( range_abfs ); - - const int Lmax_bak = GlobalC::exx_info.info_ri.abfs_Lmax; - GlobalC::exx_info.info_ri.abfs_Lmax = std::numeric_limits::min(); - for( std::size_t T=0; T!=abfs.size(); ++T ) { - GlobalC::exx_info.info_ri.abfs_Lmax = std::max( GlobalC::exx_info.info_ri.abfs_Lmax, static_cast(abfs[T].size())-1 ); -} + const ModuleBase::Element_Basis_Index::Range range_lcaos = ModuleBase::Element_Basis_Index::construct_range(lcaos); + const ModuleBase::Element_Basis_Index::IndexLNM index_lcaos + = ModuleBase::Element_Basis_Index::construct_index(range_lcaos); - Matrix_Orbs21 m_abfslcaos_lcaos; - ORB_gaunt_table MGT; - int Lmax; - m_abfslcaos_lcaos.init( 1, ucell , orb, kmesh_times, orb.get_Rmax(), Lmax ); - MGT.init_Gaunt_CH(Lmax); - MGT.init_Gaunt(Lmax); - m_abfslcaos_lcaos.init_radial( abfs, lcaos, lcaos, MGT ); - - std::map>> delta_R; - for( std::size_t it=0; it!=abfs.size(); ++it ) { - delta_R[it][it] = {0.0}; -} - m_abfslcaos_lcaos.init_radial_table(delta_R); + const ModuleBase::Element_Basis_Index::Range range_abfs = ModuleBase::Element_Basis_Index::construct_range(abfs); + const ModuleBase::Element_Basis_Index::IndexLNM index_abfs + = ModuleBase::Element_Basis_Index::construct_index(range_abfs); + + Matrix_Orbs21 m_abfslcaos_lcaos; + m_abfslcaos_lcaos.init(abfs, lcaos, lcaos, ucell, orb, kmesh_times); - GlobalC::exx_info.info_ri.abfs_Lmax = Lmax_bak; + std::map>> delta_R; + for (std::size_t it = 0; it != abfs.size(); ++it) + { delta_R[it][it] = {0.0}; } + m_abfslcaos_lcaos.init_radial_table(delta_R); - std::vector,RI::Tensor>>> eig(abfs.size()); - for( std::size_t T=0; T!=abfs.size(); ++T ) + std::vector, RI::Tensor>>> eig(abfs.size()); + for (std::size_t T = 0; T != abfs.size(); ++T) { - const RI::Tensor A = m_abfslcaos_lcaos.cal_overlap_matrix( - T, + const RI::Tensor A = m_abfslcaos_lcaos.cal_overlap_matrix(T, T, - ModuleBase::Vector3{0,0,0}, - ModuleBase::Vector3{0,0,0}, + ModuleBase::Vector3{0, 0, 0}, + ModuleBase::Vector3{0, 0, 0}, index_abfs, index_lcaos, index_lcaos, Matrix_Orbs21::Matrix_Order::A2BA1); eig[T].resize(abfs[T].size()); - for( std::size_t L=0; L!=abfs[T].size(); ++L ) + for (std::size_t L = 0; L != abfs[T].size(); ++L) { - const RI::Tensor A_sub = get_sub_matrix( A, T, L, range_abfs, index_abfs ); + const RI::Tensor A_sub = get_sub_matrix(A, T, L, range_abfs, index_abfs); RI::Tensor mm = A_sub.transpose() * A_sub; std::vector eig_value(mm.shape[0]); - int info=1; + int info = 1; - tensor_dsyev('V', 'L', mm, eig_value.data(), info); + tensor_syev('V', 'L', mm, eig_value.data(), info); - if( info ) + if (info) { std::cout << std::endl << "info_dsyev = " << info << std::endl; - auto tensor_print = [](RI::Tensor& m, std::ostream& os, const double threshold) - { + auto tensor_print = [](RI::Tensor& m, std::ostream& os, const double threshold) { for (int ir = 0; ir != m.shape[0]; ++ir) { for (int ic = 0; ic != m.shape[1]; ++ic) { - if (std::abs(m(ir, ic)) > threshold) { + if (std::abs(m(ir, ic)) > threshold) + { os << m(ir, ic) << "\t"; - } else { + } + else + { os << 0 << "\t"; } } @@ -156,15 +225,15 @@ namespace PCA os << std::endl; }; tensor_print(mm, GlobalV::ofs_warning, 0.0); - std::cout<<"in file "<<__FILE__<<" line "<<__LINE__<,RI::Tensor>>> cal_PCA( +extern std::vector, RI::Tensor>>> cal_PCA( const UnitCell& ucell, - const LCAO_Orbitals &orb, - const std::vector>> &lcaos, - const std::vector>> &abfs, // abfs must be orthonormal - const double kmesh_times ); -} -} + const LCAO_Orbitals& orb, + const std::vector>>& lcaos, + const std::vector>>& abfs, // abfs must be orthonormal + const double kmesh_times); -#endif // ABFS_CONSTRUCT_PCA_H +template +void tensor_syev(char jobz, char uplo, RI::Tensor& a, RI::Global_Func::To_Real_t* w, int& info); +} // namespace PCA +} // namespace ABFs_Construct + +#endif // ABFS_CONSTRUCT_PCA_H diff --git a/source/source_lcao/module_ri/CMakeLists.txt b/source/source_lcao/module_ri/CMakeLists.txt index a201cab1a3..62cdede596 100644 --- a/source/source_lcao/module_ri/CMakeLists.txt +++ b/source/source_lcao/module_ri/CMakeLists.txt @@ -14,7 +14,6 @@ if (ENABLE_LIBRI) if(ENABLE_LCAO) list(APPEND objects conv_coulomb_pot_k.cpp - exx_abfs-abfs_index.cpp exx_abfs-construct_orbs.cpp exx_abfs-io.cpp exx_abfs-jle.cpp @@ -38,4 +37,4 @@ if (ENABLE_LIBRI) if(ENABLE_COVERAGE) add_coverage(ri) endif() -endif() \ No newline at end of file +endif() diff --git a/source/source_lcao/module_ri/Exx_LRI.h b/source/source_lcao/module_ri/Exx_LRI.h index 0ca4aff9b6..6f94f1a32b 100644 --- a/source/source_lcao/module_ri/Exx_LRI.h +++ b/source/source_lcao/module_ri/Exx_LRI.h @@ -90,7 +90,6 @@ class Exx_LRI const Exx_Info::Exx_Info_RI &info; MPI_Comm mpi_comm; const K_Vectors *p_kv = nullptr; - ORB_gaunt_table MGT; std::vector orb_cutoff_; std::vector>> lcaos; diff --git a/source/source_lcao/module_ri/Exx_LRI.hpp b/source/source_lcao/module_ri/Exx_LRI.hpp index 5cf3a0072a..ee8c62a718 100644 --- a/source/source_lcao/module_ri/Exx_LRI.hpp +++ b/source/source_lcao/module_ri/Exx_LRI.hpp @@ -39,6 +39,7 @@ void Exx_LRI::init(const MPI_Comm &mpi_comm_in, this->orb_cutoff_ = orb.cutoffs(); this->lcaos = Exx_Abfs::Construct_Orbs::change_orbs( orb, this->info.kmesh_times ); + Exx_Abfs::Construct_Orbs::filter_empty_orbs(this->lcaos); const std::vector>> abfs_same_atom = Exx_Abfs::Construct_Orbs::abfs_same_atom(ucell, orb, this->lcaos, this->info.kmesh_times, this->info.pca_threshold ); @@ -46,21 +47,18 @@ void Exx_LRI::init(const MPI_Comm &mpi_comm_in, { this->abfs = abfs_same_atom;} else { this->abfs = Exx_Abfs::IO::construct_abfs( abfs_same_atom, orb, this->info.files_abfs, this->info.kmesh_times ); } + Exx_Abfs::Construct_Orbs::filter_empty_orbs(this->abfs); Exx_Abfs::Construct_Orbs::print_orbs_size(ucell, this->abfs, GlobalV::ofs_running); - for( size_t T=0; T!=this->abfs.size(); ++T ) - { GlobalC::exx_info.info_ri.abfs_Lmax = std::max( GlobalC::exx_info.info_ri.abfs_Lmax, static_cast(this->abfs[T].size())-1 ); } - this->coulomb_settings = RI_Util::update_coulomb_settings(this->info.coulomb_param, ucell, this->p_kv); - bool init_MGT = true; + std::shared_ptr MGT = std::make_shared(); for(const auto &settings_list : this->coulomb_settings) { this->exx_objs[settings_list.first].abfs_ccp = Conv_Coulomb_Pot_K::cal_orbs_ccp(this->abfs, settings_list.second.second, this->info.ccp_rmesh_times); this->exx_objs[settings_list.first].cv.set_orbitals(ucell, orb, this->lcaos, this->abfs, this->exx_objs[settings_list.first].abfs_ccp, - this->info.kmesh_times, this->MGT, init_MGT, settings_list.second.first ); - init_MGT = false; // only init once + this->info.kmesh_times, MGT, settings_list.second.first ); } ModuleBase::timer::tick("Exx_LRI", "init"); @@ -73,11 +71,6 @@ void Exx_LRI::cal_exx_ions(const UnitCell& ucell, ModuleBase::TITLE("Exx_LRI","cal_exx_ions"); ModuleBase::timer::tick("Exx_LRI", "cal_exx_ions"); - // init_radial_table_ions( cal_atom_centres_core(atom_pairs_core_origin), atom_pairs_core_origin ); - - // this->m_abfsabfs.init_radial_table(Rradial); - // this->m_abfslcaos_lcaos.init_radial_table(Rradial); - std::vector atoms(ucell.nat); for(int iat=0; iat class LCAO_Matrix; @@ -96,7 +98,8 @@ class Exx_LRI_Interface void exx_iter_finish(const K_Vectors& kv, const UnitCell& ucell, hamilt::Hamilt& hamilt, - elecstate::ElecState& elec, + elecstate::ElecState& elec, + elecstate::DensityMatrix* dm, // mohan add 2025-11-04 Charge_Mixing& chgmix, const double& scf_ene_thr, int& iter, diff --git a/source/source_lcao/module_ri/Exx_LRI_interface.hpp b/source/source_lcao/module_ri/Exx_LRI_interface.hpp index 0c78872433..5272cb7b10 100644 --- a/source/source_lcao/module_ri/Exx_LRI_interface.hpp +++ b/source/source_lcao/module_ri/Exx_LRI_interface.hpp @@ -4,46 +4,20 @@ #include "Exx_LRI_interface.h" #include "source_lcao/module_ri/exx_abfs-jle.h" -#include "source_lcao/hamilt_lcao.h" #include "source_lcao/module_operator_lcao/op_exx_lcao.h" #include "source_base/parallel_common.h" #include "source_base/formatter.h" -#include "source_io/csr_reader.h" -#include "source_io/write_HS_sparse.h" +#include "source_io/module_output/csr_reader.h" +#include "source_io/module_hs/write_HS_sparse.h" #include "source_estate/elecstate_lcao.h" +#include "source_hamilt/module_xc/exx_info.h" // use GlobalC::exx_info +#include "source_io/module_restart/restart.h" #include #include #include -/* -template -void Exx_LRI_Interface::write_Hexxs_cereal(const std::string& file_name) const -{ - ModuleBase::TITLE("Exx_LRI_Interface", "write_Hexxs_cereal"); - ModuleBase::timer::tick("Exx_LRI_Interface", "write_Hexxs_cereal"); - std::ofstream ofs(file_name + "_" + std::to_string(GlobalV::MY_RANK), std::ofstream::binary); - cereal::BinaryOutputArchive oar(ofs); - oar(this->exx_ptr->Hexxs); - ModuleBase::timer::tick("Exx_LRI_Interface", "write_Hexxs_cereal"); -} - -template -void Exx_LRI_Interface::read_Hexxs_cereal(const std::string& file_name) -{ - ModuleBase::TITLE("Exx_LRI_Interface", "read_Hexxs_cereal"); - ModuleBase::timer::tick("Exx_LRI_Interface", "read_Hexxs_cereal"); - const std::string file_name_rank = file_name + "_" + std::to_string(GlobalV::MY_RANK); - std::ifstream ifs(file_name_rank, std::ofstream::binary); - if(!ifs.is_open()) - { ModuleBase::WARNING_QUIT("Exx_LRI_Interface", file_name_rank+" not found."); } - cereal::BinaryInputArchive iar(ifs); - iar(this->exx_ptr->Hexxs); - ModuleBase::timer::tick("Exx_LRI_Interface", "read_Hexxs_cereal"); -} -*/ - template void Exx_LRI_Interface::init(const MPI_Comm &mpi_comm, const UnitCell &ucell, @@ -139,7 +113,7 @@ void Exx_LRI_Interface::exx_before_all_runners( this->symrot_.find_irreducible_sector( ucell.symm, ucell.atoms, ucell.st, RI_Util::get_Born_von_Karmen_cells(period), period, ucell.lat); - // this->symrot_.set_Cs_rotation(this->exx_ptr->get_abfs_nchis()); + this->symrot_.set_abfs_Lmax(Exx_Abfs::Construct_Orbs::get_Lmax(this->exx_ptr->abfs)); this->symrot_.cal_Ms(kv, ucell, pv); } } @@ -163,20 +137,7 @@ void Exx_LRI_Interface::exx_beforescf(const int istep, } else { - if (ucell.atoms[0].ncpp.xc_func == "HF" || ucell.atoms[0].ncpp.xc_func == "PBE0" || ucell.atoms[0].ncpp.xc_func == "HSE") - { - XC_Functional::set_xc_type("pbe"); - } - else if (ucell.atoms[0].ncpp.xc_func == "SCAN0") - { - XC_Functional::set_xc_type("scan"); - } - // added by jghan, 2024-07-07 - else if ( ucell.atoms[0].ncpp.xc_func == "MULLER" || ucell.atoms[0].ncpp.xc_func == "POWER" - || ucell.atoms[0].ncpp.xc_func == "WP22" || ucell.atoms[0].ncpp.xc_func == "CWP22" ) - { - XC_Functional::set_xc_type("pbe"); - } + XC_Functional::set_xc_first_loop(ucell); } this->cal_exx_ions(ucell,PARAM.inp.out_ri_cv); @@ -290,14 +251,15 @@ void Exx_LRI_Interface::exx_hamilt2rho(elecstate::ElecState& elec, con template void Exx_LRI_Interface::exx_iter_finish(const K_Vectors& kv, - const UnitCell& ucell, - hamilt::Hamilt& hamilt, - elecstate::ElecState& elec, - Charge_Mixing& chgmix, - const double& scf_ene_thr, - int& iter, - const int istep, - bool& conv_esolver) + const UnitCell& ucell, + hamilt::Hamilt& hamilt, + elecstate::ElecState& elec, + elecstate::DensityMatrix* dm, // mohan add 2025-11-04 + Charge_Mixing& chgmix, + const double& scf_ene_thr, + int& iter, + const int istep, + bool& conv_esolver) { ModuleBase::TITLE("Exx_LRI_Interface","exx_iter_finish"); if (GlobalC::restart.info_save.save_H && (this->two_level_step > 0 || istep > 0) @@ -340,11 +302,12 @@ void Exx_LRI_Interface::exx_iter_finish(const K_Vectors& kv, { chgmix.close_kerker_gg0(); } - this->dm_last_step = dynamic_cast*>(&elec)->get_DM(); + // mohan update 2025-11-04 + this->dm_last_step = dm; conv_esolver = this->exx_after_converge( ucell, hamilt, - *dynamic_cast*>(&elec)->get_DM(), + *dm, kv, PARAM.inp.nspin, iter, diff --git a/source/source_lcao/module_ri/Inverse_Matrix.h b/source/source_lcao/module_ri/Inverse_Matrix.h index 48c65db627..141a09b39e 100644 --- a/source/source_lcao/module_ri/Inverse_Matrix.h +++ b/source/source_lcao/module_ri/Inverse_Matrix.h @@ -5,25 +5,33 @@ #pragma once +#include "ABFs_Construct-PCA.h" + #include #include -template +template class Inverse_Matrix { -public: - enum class Method{potrf}; //, syev}; - void cal_inverse(const Method &method); + public: + enum class Method + { + potrf, + syev + }; + void cal_inverse(const Method& method, const double& threshold_condition_number = 0.); - void input(const RI::Tensor &m); - void input(const std::vector>> &ms); - RI::Tensor output() const; - std::vector>> output(const std::vector &n0, const std::vector &n1) const; + void input(const RI::Tensor& m); + void input(const std::vector>>& ms); + RI::Tensor output() const; + std::vector>> output(const std::vector& n0, + const std::vector& n1) const; -private: - void using_potrf(); - void copy_down_triangle(); - RI::Tensor A; + private: + void using_potrf(); + void using_syev(const double& threshold_condition_number); + void copy_down_triangle(); + RI::Tensor A; }; #include "Inverse_Matrix.hpp" \ No newline at end of file diff --git a/source/source_lcao/module_ri/Inverse_Matrix.hpp b/source/source_lcao/module_ri/Inverse_Matrix.hpp index 20ef034239..b632d1a40c 100644 --- a/source/source_lcao/module_ri/Inverse_Matrix.hpp +++ b/source/source_lcao/module_ri/Inverse_Matrix.hpp @@ -8,152 +8,251 @@ #include "Inverse_Matrix.h" #include "source_base/module_external/lapack_connector.h" +#include "source_hamilt/module_xc/exx_info.h" #include -template -void Inverse_Matrix::cal_inverse( const Method &method ) +template +void Inverse_Matrix::cal_inverse(const Method& method, const double& threshold_condition_number) { - switch(method) - { - case Method::potrf: using_potrf(); break; -// case Method::syev: using_syev(1E-6); break; - } + switch (method) + { + case Method::potrf: + using_potrf(); + break; + case Method::syev: + using_syev(threshold_condition_number); + break; + } } -template +template void Inverse_Matrix::using_potrf() { - int info; - LapackConnector::potrf('U', A.shape[0], A.ptr(), A.shape[0], info); - if(info) - throw std::range_error("info="+std::to_string(info)+"\n"+std::string(__FILE__)+" line "+std::to_string(__LINE__)); + int info; + LapackConnector::potrf('U', A.shape[0], A.ptr(), A.shape[0], info); + if (info) + throw std::range_error("info=" + std::to_string(info) + "\n" + std::string(__FILE__) + " line " + + std::to_string(__LINE__)); - LapackConnector::potri('U', A.shape[0], A.ptr(), A.shape[0], info); - if(info) - throw std::range_error("info="+std::to_string(info)+"\n"+std::string(__FILE__)+" line "+std::to_string(__LINE__)); + LapackConnector::potri('U', A.shape[0], A.ptr(), A.shape[0], info); + if (info) + throw std::range_error("info=" + std::to_string(info) + "\n" + std::string(__FILE__) + " line " + + std::to_string(__LINE__)); - copy_down_triangle(); + copy_down_triangle(); +} + +template +struct InverseMatrixTraits; + +// double +template <> +struct InverseMatrixTraits +{ + using matrix_type = ModuleBase::matrix; + using value_type = double; + static void syev(RI::Tensor& A, value_type* w, int& info) + { + ABFs_Construct::PCA::tensor_syev('V', 'U', A, w, info); + } + static constexpr char gemm_trans = 'T'; +}; + +// complex +template <> +struct InverseMatrixTraits> +{ + using matrix_type = ModuleBase::ComplexMatrix; + using value_type = double; // eigenvalues are always real + static void syev(RI::Tensor>& A, value_type* w, int& info) + { + ABFs_Construct::PCA::tensor_syev('V', 'U', A, w, info); + } + static constexpr char gemm_trans = 'C'; +}; + +// float +template <> +struct InverseMatrixTraits +{ + using matrix_type = ModuleBase::matrix; + using value_type = float; + static void syev(RI::Tensor& A, value_type* w, int& info) + { + ABFs_Construct::PCA::tensor_syev('V', 'U', A, w, info); + } + static constexpr char gemm_trans = 'T'; +}; + +// complex +template <> +struct InverseMatrixTraits> +{ + using matrix_type = ModuleBase::ComplexMatrix; + using value_type = float; + static void syev(RI::Tensor>& A, value_type* w, int& info) + { + ABFs_Construct::PCA::tensor_syev('V', 'U', A, w, info); + } + static constexpr char gemm_trans = 'C'; +}; + +template +inline void Inverse_Matrix::using_syev(const double& threshold_condition_number) +{ + using traits = InverseMatrixTraits; + using val_t = typename traits::value_type; + + int info; + std::vector eigen_value(A.shape[0]); + + traits::syev(A, eigen_value.data(), info); + if (info) + throw std::range_error("info=" + std::to_string(info) + "\n" + std::string(__FILE__) + " line " + + std::to_string(__LINE__)); + + val_t eigen_value_max = 0; + for (const val_t& val: eigen_value) + eigen_value_max = std::max(val, eigen_value_max); + + const double threshold = eigen_value_max * threshold_condition_number; + + typename traits::matrix_type eA(A.shape[0], A.shape[1]); + + int ie = 0; + for (int i = 0; i != A.shape[0]; ++i) + { + if (eigen_value[i] > threshold) + { + BlasConnector::axpy(A.shape[1], + sqrt(1.0 / eigen_value[i]), + A.ptr() + i * A.shape[1], + 1, + eA.c + ie * eA.nc, + 1); + ++ie; + } + } + // std::cout << "No. of singularity: " << A.shape[0] - ie << std::endl; + + BlasConnector::gemm(traits::gemm_trans, 'N', eA.nc, eA.nc, ie, 1, eA.c, eA.nc, eA.c, eA.nc, 0, A.ptr(), A.shape[1]); } /* void Inverse_Matrix::using_syev( const double &threshold_condition_number ) { - std::vector eigen_value(A.nr); - LapackConnector::dsyev('V','U',A,eigen_value.data(),info); - - double eigen_value_max = 0; - for( const double &ie : eigen_value ) - eigen_value_max = std::max( ie, eigen_value_max ); - const double threshold = eigen_value_max * threshold_condition_number; - - ModuleBase::matrix eA( A.nr, A.nc ); - int ie=0; - for( int i=0; i!=A.nr; ++i ) - if( eigen_value[i] > threshold ) - { - BlasConnector::axpy( A.nc, sqrt(1.0/eigen_value[i]), A.c+i*A.nc,1, eA.c+ie*eA.nc,1 ); - ++ie; - } - BlasConnector::gemm( 'T','N', eA.nc,eA.nc,ie, 1, eA.c,eA.nc, eA.c,eA.nc, 0, A.c,A.nc ); + std::vector eigen_value(A.nr); + LapackConnector::dsyev('V','U',A,eigen_value.data(),info); + + double eigen_value_max = 0; + for( const double &ie : eigen_value ) + eigen_value_max = std::max( ie, eigen_value_max ); + const double threshold = eigen_value_max * threshold_condition_number; + + ModuleBase::matrix eA( A.nr, A.nc ); + int ie=0; + for( int i=0; i!=A.nr; ++i ) + if( eigen_value[i] > threshold ) + { + BlasConnector::axpy( A.nc, sqrt(1.0/eigen_value[i]), A.c+i*A.nc,1, eA.c+ie*eA.nc,1 ); + ++ie; + } + BlasConnector::gemm( 'T','N', eA.nc,eA.nc,ie, 1, eA.c,eA.nc, eA.c,eA.nc, 0, A.c,A.nc ); } */ -template -void Inverse_Matrix::input( const RI::Tensor &m ) +template +void Inverse_Matrix::input(const RI::Tensor& m) { - assert(m.shape.size()==2); - assert(m.shape[0]==m.shape[1]); - this->A = m.copy(); + assert(m.shape.size() == 2); + assert(m.shape[0] == m.shape[1]); + this->A = m.copy(); } - -template -void Inverse_Matrix::input(const std::vector>> &ms) +template +void Inverse_Matrix::input(const std::vector>>& ms) { - const size_t N0 = ms.size(); - assert(N0>0); - const size_t N1 = ms[0].size(); - assert(N1>0); - for(size_t Im0=0; Im0 n0(N0); - for(size_t Im0=0; Im0 n1(N1); - for(size_t Im1=0; Im1A = RI::Tensor({n_all, n_all}); - - std::vector n0_partial(N0+1); - std::partial_sum(n0.begin(), n0.end(), n0_partial.begin()+1); - std::vector n1_partial(N1+1); - std::partial_sum(n1.begin(), n1.end(), n1_partial.begin()+1); - - for(size_t Im0=0; Im0 &m_tmp = ms.at(Im0).at(Im1); - for(size_t im0=0; im0A(im0+n0_partial[Im0], im1+n1_partial[Im1]) = m_tmp(im0,im1); - } -} + const size_t N0 = ms.size(); + assert(N0 > 0); + const size_t N1 = ms[0].size(); + assert(N1 > 0); + for (size_t Im0 = 0; Im0 < N0; ++Im0) + assert(ms[Im0].size() == N1); + + for (size_t Im0 = 0; Im0 < N0; ++Im0) + for (size_t Im1 = 0; Im1 < N1; ++Im1) + assert(ms[Im0][Im1].shape.size() == 2); + + std::vector n0(N0); + for (size_t Im0 = 0; Im0 < N0; ++Im0) + n0[Im0] = ms[Im0][0].shape[0]; + std::vector n1(N1); + for (size_t Im1 = 0; Im1 < N1; ++Im1) + n1[Im1] = ms[0][Im1].shape[1]; + + for (size_t Im0 = 0; Im0 < N0; ++Im0) + for (size_t Im1 = 0; Im1 < N1; ++Im1) + assert((ms[Im0][Im1].shape[0] == n0[Im0]) && (ms[Im0][Im1].shape[1] == n1[Im1])); + const size_t n_all = std::accumulate(n0.begin(), n0.end(), 0); + assert(n_all == std::accumulate(n1.begin(), n1.end(), 0)); + this->A = RI::Tensor({n_all, n_all}); -template + std::vector n0_partial(N0 + 1); + std::partial_sum(n0.begin(), n0.end(), n0_partial.begin() + 1); + std::vector n1_partial(N1 + 1); + std::partial_sum(n1.begin(), n1.end(), n1_partial.begin() + 1); + + for (size_t Im0 = 0; Im0 < N0; ++Im0) + for (size_t Im1 = 0; Im1 < N1; ++Im1) + { + const RI::Tensor& m_tmp = ms.at(Im0).at(Im1); + for (size_t im0 = 0; im0 < m_tmp.shape[0]; ++im0) + for (size_t im1 = 0; im1 < m_tmp.shape[1]; ++im1) + this->A(im0 + n0_partial[Im0], im1 + n1_partial[Im1]) = m_tmp(im0, im1); + } +} + +template RI::Tensor Inverse_Matrix::output() const { - return this->A.copy(); + return this->A.copy(); } - -template -std::vector>> -Inverse_Matrix::output(const std::vector &n0, const std::vector &n1) const +template +std::vector>> Inverse_Matrix::output(const std::vector& n0, + const std::vector& n1) const { - assert( std::accumulate(n0.begin(), n0.end(), 0) == this->A.shape[0] ); - assert( std::accumulate(n1.begin(), n1.end(), 0) == this->A.shape[1] ); - - const size_t N0 = n0.size(); - const size_t N1 = n1.size(); - - std::vector n0_partial(N0+1); - std::partial_sum(n0.begin(), n0.end(), n0_partial.begin()+1); - std::vector n1_partial(N1+1); - std::partial_sum(n1.begin(), n1.end(), n1_partial.begin()+1); - - std::vector>> ms(N0, std::vector>(N1)); - for(size_t Im0=0; Im0 &m_tmp = ms[Im0][Im1] = RI::Tensor({n0[Im0], n1[Im1]}); - for(size_t im0=0; im0A(im0+n0_partial[Im0], im1+n1_partial[Im1]); - } - return ms; -} + assert(std::accumulate(n0.begin(), n0.end(), 0) == this->A.shape[0]); + assert(std::accumulate(n1.begin(), n1.end(), 0) == this->A.shape[1]); + + const size_t N0 = n0.size(); + const size_t N1 = n1.size(); + std::vector n0_partial(N0 + 1); + std::partial_sum(n0.begin(), n0.end(), n0_partial.begin() + 1); + std::vector n1_partial(N1 + 1); + std::partial_sum(n1.begin(), n1.end(), n1_partial.begin() + 1); + + std::vector>> ms(N0, std::vector>(N1)); + for (size_t Im0 = 0; Im0 < N0; ++Im0) + for (size_t Im1 = 0; Im1 < N1; ++Im1) + { + RI::Tensor& m_tmp = ms[Im0][Im1] = RI::Tensor({n0[Im0], n1[Im1]}); + for (size_t im0 = 0; im0 < n0[Im0]; ++im0) + for (size_t im1 = 0; im1 < n1[Im1]; ++im1) + m_tmp(im0, im1) = this->A(im0 + n0_partial[Im0], im1 + n1_partial[Im1]); + } + return ms; +} -template +template void Inverse_Matrix::copy_down_triangle() { - for( size_t i0=0; i0>> &abfs_in, const std::vector>> &abfs_ccp_in, const double &kmesh_times, - ORB_gaunt_table& MGT, - const bool& init_MGT, + std::shared_ptr MGT, const bool& init_C); inline std::map>> cal_Vs( diff --git a/source/source_lcao/module_ri/LRI_CV.hpp b/source/source_lcao/module_ri/LRI_CV.hpp index b97ac9ed5e..b07ad881d2 100644 --- a/source/source_lcao/module_ri/LRI_CV.hpp +++ b/source/source_lcao/module_ri/LRI_CV.hpp @@ -8,12 +8,12 @@ #include "LRI_CV.h" #include "LRI_CV_Tools.h" -#include "exx_abfs-abfs_index.h" #include "exx_abfs-construct_orbs.h" #include "RI_Util.h" +#include "../../source_basis/module_ao/element_basis_index-ORB.h" #include "../../source_base/tool_title.h" #include "../../source_base/timer.h" -#include "../../source_pw/module_pwdft/global.h" +#include "source_hamilt/module_xc/exx_info.h" // use GlobalC::exx_info #include #include @@ -44,8 +44,7 @@ void LRI_CV::set_orbitals( const std::vector>> &abfs_in, const std::vector>> &abfs_ccp_in, const double &kmesh_times, - ORB_gaunt_table& MGT, - const bool& init_MGT, + std::shared_ptr MGT, const bool& init_C) { ModuleBase::TITLE("LRI_CV", "set_orbitals"); @@ -57,37 +56,26 @@ void LRI_CV::set_orbitals( this->lcaos_rcut = Exx_Abfs::Construct_Orbs::get_Rcut(this->lcaos); this->abfs_ccp_rcut = Exx_Abfs::Construct_Orbs::get_Rcut(this->abfs_ccp); - const double lcaos_rmax = Exx_Abfs::Construct_Orbs::get_Rmax(this->lcaos); - const double abfs_ccp_rmax - = Exx_Abfs::Construct_Orbs::get_Rmax(this->abfs_ccp); const ModuleBase::Element_Basis_Index::Range - range_lcaos = Exx_Abfs::Abfs_Index::construct_range( lcaos ); + range_lcaos = ModuleBase::Element_Basis_Index::construct_range( lcaos ); this->index_lcaos = ModuleBase::Element_Basis_Index::construct_index( range_lcaos ); const ModuleBase::Element_Basis_Index::Range - range_abfs = Exx_Abfs::Abfs_Index::construct_range( abfs ); + range_abfs = ModuleBase::Element_Basis_Index::construct_range( abfs ); this->index_abfs = ModuleBase::Element_Basis_Index::construct_index( range_abfs ); - int Lmax_v = std::numeric_limits::min(); - this->m_abfs_abfs.init(2, ucell, orb, kmesh_times, lcaos_rmax + abfs_ccp_rmax, Lmax_v); - int Lmax_c = std::numeric_limits::min(); + this->m_abfs_abfs.MGT = this->m_abfslcaos_lcaos.MGT = MGT; + this->m_abfs_abfs.init( + this->abfs_ccp, this->abfs, + ucell, orb, kmesh_times); if (init_C) - this->m_abfslcaos_lcaos.init(1, ucell, orb, kmesh_times, lcaos_rmax, Lmax_c); - int Lmax = std::max(Lmax_v, Lmax_c); + this->m_abfslcaos_lcaos.init( + this->abfs_ccp, this->lcaos, this->lcaos, + ucell, orb, kmesh_times); - if (init_MGT) { - MGT.init_Gaunt_CH(Lmax); - MGT.init_Gaunt(Lmax); - } - - this->m_abfs_abfs.init_radial(this->abfs_ccp, this->abfs, MGT); this->m_abfs_abfs.init_radial_table(); if (init_C) { - this->m_abfslcaos_lcaos.init_radial(this->abfs_ccp, - this->lcaos, - this->lcaos, - MGT); this->m_abfslcaos_lcaos.init_radial_table(); } @@ -363,8 +351,12 @@ LRI_CV::DPcal_C_dC( it0, it1, {0,0,0}, {0,0,0}, this->index_abfs, this->index_lcaos, this->index_lcaos, Matrix_Orbs21::Matrix_Order::A1A2B); - const RI::Tensor V = this->DPcal_V( it0, it0, {0,0,0}, {{"writable_Vws",true}}); - const RI::Tensor L = LRI_CV_Tools::cal_I(V); + const RI::Tensor V = this->DPcal_V(it0, it0, {0, 0, 0}, {{"writable_Vws", true}}); + RI::Tensor L; + if (GlobalC::exx_info.info_ri.Cs_inv_thr > 0) + L = LRI_CV_Tools::cal_I(V, Inverse_Matrix::Method::syev, GlobalC::exx_info.info_ri.Cs_inv_thr); + else + L = LRI_CV_Tools::cal_I(V); const RI::Tensor C = RI::Global_Func::convert(0.5) * LRI_CV_Tools::mul1(L,A); // Attention 0.5! if(flags.at("writable_Cws")) @@ -412,7 +404,10 @@ LRI_CV::DPcal_C_dC( {DPcal_V(it1, it0, Rm, flags), DPcal_V(it1, it1, {0,0,0}, {{"writable_Vws",true}})}}; - const std::vector>> + std::vector>> L; + if (GlobalC::exx_info.info_ri.Cs_inv_thr > 0) + L = LRI_CV_Tools::cal_I(V, Inverse_Matrix::Method::syev, GlobalC::exx_info.info_ri.Cs_inv_thr); + else L = LRI_CV_Tools::cal_I(V); const std::vector> C = LRI_CV_Tools::mul2(L,A); diff --git a/source/source_lcao/module_ri/LRI_CV_Tools.h b/source/source_lcao/module_ri/LRI_CV_Tools.h index 21e94cbfa5..a87320a2ea 100644 --- a/source/source_lcao/module_ri/LRI_CV_Tools.h +++ b/source/source_lcao/module_ri/LRI_CV_Tools.h @@ -6,6 +6,7 @@ #ifndef LRI_CV_TOOLS_H #define LRI_CV_TOOLS_H +#include "Inverse_Matrix.h" #include "source_base/abfs-vector3_order.h" #include "source_lcao/module_ri/abfs.h" @@ -19,9 +20,15 @@ namespace LRI_CV_Tools { template -extern RI::Tensor cal_I(const RI::Tensor& m); +extern RI::Tensor cal_I(const RI::Tensor& m, + const typename Inverse_Matrix::Method method + = Inverse_Matrix::Method::potrf, + const double& threshold_condition_number = 0.); template -extern std::vector>> cal_I(const std::vector>>& ms); +extern std::vector>> cal_I(const std::vector>>& ms, + const typename Inverse_Matrix::Method method + = Inverse_Matrix::Method::potrf, + const double& threshold_condition_number = 0.); template inline RI::Tensor transform_Rm(const RI::Tensor& V); diff --git a/source/source_lcao/module_ri/LRI_CV_Tools.hpp b/source/source_lcao/module_ri/LRI_CV_Tools.hpp index 2f7951d94e..110db1bf80 100644 --- a/source/source_lcao/module_ri/LRI_CV_Tools.hpp +++ b/source/source_lcao/module_ri/LRI_CV_Tools.hpp @@ -13,24 +13,27 @@ #include #include -#include "../../source_pw/module_pwdft/global.h" template -RI::Tensor LRI_CV_Tools::cal_I(const RI::Tensor& m) { +RI::Tensor LRI_CV_Tools::cal_I(const RI::Tensor& m, + const typename Inverse_Matrix::Method method, + const double& threshold_condition_number) +{ Inverse_Matrix I; I.input(m); - I.cal_inverse(Inverse_Matrix::Method::potrf); + I.cal_inverse(method, threshold_condition_number); return I.output(); } template -std::vector>> - LRI_CV_Tools::cal_I(const std::vector>>& ms) { +std::vector>> LRI_CV_Tools::cal_I(const std::vector>>& ms, + const typename Inverse_Matrix::Method method, + const double& threshold_condition_number) +{ Inverse_Matrix I; I.input(ms); - I.cal_inverse(Inverse_Matrix::Method::potrf); - return I.output({ms[0][0].shape[0], ms[1][0].shape[0]}, - {ms[0][0].shape[1], ms[0][1].shape[1]}); + I.cal_inverse(method, threshold_condition_number); + return I.output({ms[0][0].shape[0], ms[1][0].shape[0]}, {ms[0][0].shape[1], ms[0][1].shape[1]}); } template diff --git a/source/source_lcao/module_ri/Matrix_Orbs11.cpp b/source/source_lcao/module_ri/Matrix_Orbs11.cpp index 021eb6e5b0..7f3a5ad63a 100644 --- a/source/source_lcao/module_ri/Matrix_Orbs11.cpp +++ b/source/source_lcao/module_ri/Matrix_Orbs11.cpp @@ -5,63 +5,50 @@ #include "Matrix_Orbs11.h" +#include "exx_abfs-construct_orbs.h" #include "source_base/timer.h" #include "source_base/tool_title.h" -#include "source_pw/module_pwdft/global.h" -void Matrix_Orbs11::init(const int mode, - const UnitCell& ucell, - const LCAO_Orbitals& orb, - const double kmesh_times, - const double rmax, - int& Lmax) +void Matrix_Orbs11::init( + const std::vector>>& orb_A, + const std::vector>>& orb_B, + const UnitCell& ucell, + const LCAO_Orbitals& orb, + const double kmesh_times) { ModuleBase::TITLE("Matrix_Orbs11", "init"); ModuleBase::timer::tick("Matrix_Orbs11", "init"); - int Lmax_used; this->lat0 = &ucell.lat0; - const int ntype = orb.get_ntype(); - int lmax_orb = -1, lmax_beta = -1; - for (int it = 0; it < ntype; it++) - { - lmax_orb = std::max(lmax_orb, orb.Phi[it].getLmax()); - lmax_beta = std::max(lmax_beta, ucell.infoNL.Beta[it].getLmax()); - } + + const int Lmax = std::max({ Exx_Abfs::Construct_Orbs::get_Lmax(orb_A), Exx_Abfs::Construct_Orbs::get_Lmax(orb_B) }); + const int Lmax_used = Exx_Abfs::Construct_Orbs::get_Lmax(orb_A) + Exx_Abfs::Construct_Orbs::get_Lmax(orb_B); + + //========================================= + // (3) make Gaunt coefficients table + //========================================= + if(!this->MGT) + { this->MGT = std::make_shared(); } + if(this->MGT->get_Lmax_Gaunt_CH() < Lmax) + { this->MGT->init_Gaunt_CH(Lmax); } + if(this->MGT->get_Lmax_Gaunt_Coefficients() < Lmax) + { this->MGT->init_Gaunt(Lmax); } + const double dr = orb.get_dR(); const double dk = orb.get_dk(); const int kmesh = orb.get_kmesh() * kmesh_times + 1; - int Rmesh = static_cast(rmax / dr) + 4; + const double rmax + = Exx_Abfs::Construct_Orbs::get_Rmax(orb_A) + + Exx_Abfs::Construct_Orbs::get_Rmax(orb_B); + int Rmesh = static_cast(rmax / dr) + 4; // extend Rcut, keep dR Rmesh += 1 - Rmesh % 2; - - Center2_Orb::init_Table_Spherical_Bessel(2, - mode, - Lmax_used, - Lmax, - GlobalC::exx_info.info_ri.abfs_Lmax, - lmax_orb, - lmax_beta, + Center2_Orb::init_Table_Spherical_Bessel(Lmax_used, dr, dk, kmesh, Rmesh, psb_); - //========================================= - // (3) make Gaunt coefficients table - //========================================= - // this->MGT.init_Gaunt_CH(Lmax); - // this->MGT.init_Gaunt(Lmax); - - ModuleBase::timer::tick("Matrix_Orbs11", "init"); -} - -void Matrix_Orbs11::init_radial(const std::vector>>& orb_A, - const std::vector>>& orb_B, - const ORB_gaunt_table& MGT) -{ - ModuleBase::TITLE("Matrix_Orbs11", "init_radial"); - ModuleBase::timer::tick("Matrix_Orbs11", "init_radial"); for (size_t TA = 0; TA != orb_A.size(); ++TA) { for (size_t TB = 0; TB != orb_B.size(); ++TB) { for (int LA = 0; LA != orb_A[TA].size(); ++LA) { @@ -70,17 +57,14 @@ void Matrix_Orbs11::init_radial(const std::vectorMGT))); + }}}}}} + + ModuleBase::timer::tick("Matrix_Orbs11", "init"); } -void Matrix_Orbs11::init_radial(const LCAO_Orbitals& orb_A, const LCAO_Orbitals& orb_B, const ORB_gaunt_table& MGT) +/* +void Matrix_Orbs11::init_radial(const LCAO_Orbitals& orb_A, const LCAO_Orbitals& orb_B) { ModuleBase::TITLE("Matrix_Orbs11", "init_radial"); ModuleBase::timer::tick("Matrix_Orbs11", "init_radial"); @@ -95,7 +79,7 @@ void Matrix_Orbs11::init_radial(const LCAO_Orbitals& orb_A, const LCAO_Orbitals& Center2_Orb::Orb11(orb_A.Phi[TA].PhiLN(LA, NA), orb_B.Phi[TB].PhiLN(LB, NB), psb_, - MGT))); + *this->MGT))); } } } @@ -104,6 +88,7 @@ void Matrix_Orbs11::init_radial(const LCAO_Orbitals& orb_A, const LCAO_Orbitals& } ModuleBase::timer::tick("Matrix_Orbs11", "init_radial"); } +*/ void Matrix_Orbs11::init_radial_table() { diff --git a/source/source_lcao/module_ri/Matrix_Orbs11.h b/source/source_lcao/module_ri/Matrix_Orbs11.h index 04b1bd8600..7b520fe0f6 100644 --- a/source/source_lcao/module_ri/Matrix_Orbs11.h +++ b/source/source_lcao/module_ri/Matrix_Orbs11.h @@ -21,20 +21,12 @@ class Matrix_Orbs11 { public: - // mode: - // 1: - // 2: - void init(const int mode, - const UnitCell& ucell, - const LCAO_Orbitals& orb, - const double kmesh_times, // extend Kcut, keep dK - const double rmax, - int& Lmax); - - void init_radial(const std::vector>>& orb_A, - const std::vector>>& orb_B, - const ORB_gaunt_table& MGT); - void init_radial(const LCAO_Orbitals& orb_A, const LCAO_Orbitals& orb_B, const ORB_gaunt_table& MGT); + void init( + const std::vector>>& orb_A, + const std::vector>>& orb_B, + const UnitCell& ucell, + const LCAO_Orbitals& orb, + const double kmesh_times); // extend Kcut, keep dK void init_radial_table(); void init_radial_table(const std::map>>& Rs); // unit: ucell.lat0 @@ -68,6 +60,8 @@ class Matrix_Orbs11 const UnitCell &ucell, const ModuleBase::Element_Basis_Index::IndexLNM& index_r, const ModuleBase::Element_Basis_Index::IndexLNM& index_c) const; + + std::shared_ptr MGT; private: ModuleBase::Sph_Bessel_Recursive::D2* psb_ = nullptr; diff --git a/source/source_lcao/module_ri/Matrix_Orbs11.hpp b/source/source_lcao/module_ri/Matrix_Orbs11.hpp index 0d5ab1ba91..7b139203a1 100644 --- a/source/source_lcao/module_ri/Matrix_Orbs11.hpp +++ b/source/source_lcao/module_ri/Matrix_Orbs11.hpp @@ -8,7 +8,6 @@ #include "Matrix_Orbs11.h" #include "RI_Util.h" -#include "source_pw/module_pwdft/global.h" template RI::Tensor Matrix_Orbs11::cal_overlap_matrix( diff --git a/source/source_lcao/module_ri/Matrix_Orbs21.cpp b/source/source_lcao/module_ri/Matrix_Orbs21.cpp index 170dc9b548..1bbade7e4c 100644 --- a/source/source_lcao/module_ri/Matrix_Orbs21.cpp +++ b/source/source_lcao/module_ri/Matrix_Orbs21.cpp @@ -5,104 +5,78 @@ #include "Matrix_Orbs21.h" +#include "exx_abfs-construct_orbs.h" #include "source_base/timer.h" #include "source_base/tool_title.h" -#include "source_pw/module_pwdft/global.h" -void Matrix_Orbs21::init(const int mode, - const UnitCell& ucell, - const LCAO_Orbitals& orb, - const double kmesh_times, - const double rmax, - int& Lmax) +void Matrix_Orbs21::init( + const std::vector>>& orb_A1, + const std::vector>>& orb_A2, + const std::vector>>& orb_B, + const UnitCell& ucell, + const LCAO_Orbitals& orb, + const double kmesh_times) { ModuleBase::TITLE("Matrix_Orbs21", "init"); ModuleBase::timer::tick("Matrix_Orbs21", "init"); - int Lmax_used; + this->lat0 = &ucell.lat0; - const int ntype = orb.get_ntype(); - int lmax_orb = -1, lmax_beta = -1; - this->lat0 = &ucell.lat0; - for (int it = 0; it < ntype; it++) - { - lmax_orb = std::max(lmax_orb, orb.Phi[it].getLmax()); - lmax_beta = std::max(lmax_beta, ucell.infoNL.Beta[it].getLmax()); - } + const int Lmax = std::max({ + Exx_Abfs::Construct_Orbs::get_Lmax(orb_A1) + Exx_Abfs::Construct_Orbs::get_Lmax(orb_A2), + Exx_Abfs::Construct_Orbs::get_Lmax(orb_B) }); + const int Lmax_used = Exx_Abfs::Construct_Orbs::get_Lmax(orb_A1) + Exx_Abfs::Construct_Orbs::get_Lmax(orb_A2) + Exx_Abfs::Construct_Orbs::get_Lmax(orb_B); + + //========================================= + // (3) make Gaunt coefficients table + //========================================= + if(!this->MGT) + { this->MGT = std::make_shared(); } + if(this->MGT->get_Lmax_Gaunt_CH() < Lmax) + { this->MGT->init_Gaunt_CH(Lmax); } + if(this->MGT->get_Lmax_Gaunt_Coefficients() < Lmax) + { this->MGT->init_Gaunt(Lmax); } + const double dr = orb.get_dR(); const double dk = orb.get_dk(); const int kmesh = orb.get_kmesh() * kmesh_times + 1; - int Rmesh = static_cast(rmax / dr) + 4; + const double rmax + = std::min({Exx_Abfs::Construct_Orbs::get_Rmax(orb_A1), Exx_Abfs::Construct_Orbs::get_Rmax(orb_A2)}) + + Exx_Abfs::Construct_Orbs::get_Rmax(orb_B); + int Rmesh = static_cast(rmax / dr) + 4; // extend Rcut, keep dR Rmesh += 1 - Rmesh % 2; - - Center2_Orb::init_Table_Spherical_Bessel(3, - mode, - Lmax_used, - Lmax, - GlobalC::exx_info.info_ri.abfs_Lmax, - lmax_orb, - lmax_beta, + Center2_Orb::init_Table_Spherical_Bessel(Lmax_used, dr, dk, kmesh, Rmesh, psb_); - //========================================= - // (3) make Gaunt coefficients table - //========================================= - // this->MGT.init_Gaunt_CH(2 * Lmax + 1); // why +1 - // this->MGT.init_Gaunt(2 * Lmax + 1); - Lmax = 2 * Lmax + 1; - - ModuleBase::timer::tick("Matrix_Orbs21", "init"); -} - -void Matrix_Orbs21::init_radial(const std::vector>>& orb_A1, - const std::vector>>& orb_A2, - const std::vector>>& orb_B, - const ORB_gaunt_table& MGT) -{ - ModuleBase::TITLE("Matrix_Orbs21", "init_radial"); - ModuleBase::timer::tick("Matrix_Orbs21", "init_radial"); assert(orb_A1.size() == orb_A2.size()); - for (size_t TA = 0; TA != orb_A1.size(); ++TA) - { - for (size_t TB = 0; TB != orb_B.size(); ++TB) - { - for (int LA1 = 0; LA1 != orb_A1[TA].size(); ++LA1) - { - for (size_t NA1 = 0; NA1 != orb_A1[TA][LA1].size(); ++NA1) - { - for (int LA2 = 0; LA2 != orb_A2[TA].size(); ++LA2) - { - for (size_t NA2 = 0; NA2 != orb_A2[TA][LA2].size(); ++NA2) - { - for (int LB = 0; LB != orb_B[TB].size(); ++LB) - { - for (size_t NB = 0; NB != orb_B[TB][LB].size(); ++NB) - { + for (size_t TA = 0; TA != orb_A1.size(); ++TA) { + for (size_t TB = 0; TB != orb_B.size(); ++TB) { + for (int LA1 = 0; LA1 != orb_A1[TA].size(); ++LA1) { + for (size_t NA1 = 0; NA1 != orb_A1[TA][LA1].size(); ++NA1) { + for (int LA2 = 0; LA2 != orb_A2[TA].size(); ++LA2) { + for (size_t NA2 = 0; NA2 != orb_A2[TA][LA2].size(); ++NA2) { + for (int LB = 0; LB != orb_B[TB].size(); ++LB) { + for (size_t NB = 0; NB != orb_B[TB][LB].size(); ++NB) { center2_orb21_s[TA][TB][LA1][NA1][LA2][NA2][LB].insert( - std::make_pair(NB, - Center2_Orb::Orb21(orb_A1[TA][LA1][NA1], - orb_A2[TA][LA2][NA2], - orb_B[TB][LB][NB], - psb_, - MGT))); - } - } - } - } - } - } - } - } - ModuleBase::timer::tick("Matrix_Orbs21", "init_radial"); + std::make_pair( + NB, + Center2_Orb::Orb21( + orb_A1[TA][LA1][NA1], + orb_A2[TA][LA2][NA2], + orb_B[TB][LB][NB], + psb_, + *this->MGT))); + }}}}}}}} + ModuleBase::timer::tick("Matrix_Orbs21", "init"); } +/* void Matrix_Orbs21::init_radial(const std::vector>>& orb_A1, const LCAO_Orbitals& orb_A2, - const LCAO_Orbitals& orb_B, - const ORB_gaunt_table& MGT) + const LCAO_Orbitals& orb_B) { ModuleBase::TITLE("Matrix_Orbs21", "init_radial"); ModuleBase::timer::tick("Matrix_Orbs21", "init_radial"); @@ -129,7 +103,7 @@ void Matrix_Orbs21::init_radial(const std::vectorMGT))); } } } @@ -140,6 +114,7 @@ void Matrix_Orbs21::init_radial(const std::vector - void init(const int mode, - const UnitCell& ucell, - const LCAO_Orbitals& orb, - const double kmesh_times, // extend Kcut, keep dK - const double rmax, - int& Lmax); // extend Rcut, keep dR - - void init_radial(const std::vector>>& orb_A1, - const std::vector>>& orb_A2, - const std::vector>>& orb_B, - const ORB_gaunt_table& MGT); - void init_radial(const std::vector>>& orb_A1, - const LCAO_Orbitals& orb_A2, - const LCAO_Orbitals& orb_B, - const ORB_gaunt_table& MGT); + void init( + const std::vector>>& orb_A1, + const std::vector>>& orb_A2, + const std::vector>>& orb_B, + const UnitCell& ucell, + const LCAO_Orbitals& orb, + const double kmesh_times); // extend Kcut, keep dK void init_radial_table(); void init_radial_table(const std::map>>& Rs); // unit: ucell.lat0 @@ -77,6 +67,8 @@ class Matrix_Orbs21 const ModuleBase::Element_Basis_Index::IndexLNM& index_A1, const ModuleBase::Element_Basis_Index::IndexLNM& index_A2, const ModuleBase::Element_Basis_Index::IndexLNM& index_B) const; + + std::shared_ptr MGT; private: ModuleBase::Sph_Bessel_Recursive::D2* psb_ = nullptr; diff --git a/source/source_lcao/module_ri/Matrix_Orbs21.hpp b/source/source_lcao/module_ri/Matrix_Orbs21.hpp index 28766ad2f2..af92d7aedd 100644 --- a/source/source_lcao/module_ri/Matrix_Orbs21.hpp +++ b/source/source_lcao/module_ri/Matrix_Orbs21.hpp @@ -8,7 +8,6 @@ #include "Matrix_Orbs21.h" #include "RI_Util.h" -#include "source_pw/module_pwdft/global.h" template RI::Tensor Matrix_Orbs21::cal_overlap_matrix( diff --git a/source/source_lcao/module_ri/Matrix_Orbs22.cpp b/source/source_lcao/module_ri/Matrix_Orbs22.cpp index 01d0330406..23b782a781 100644 --- a/source/source_lcao/module_ri/Matrix_Orbs22.cpp +++ b/source/source_lcao/module_ri/Matrix_Orbs22.cpp @@ -5,94 +5,85 @@ #include "Matrix_Orbs22.h" +#include "exx_abfs-construct_orbs.h" #include "source_base/timer.h" #include "source_base/tool_title.h" -#include "source_pw/module_pwdft/global.h" -void Matrix_Orbs22::init(const int mode, - const UnitCell& ucell, - const LCAO_Orbitals& orb, - const double kmesh_times, - const double rmax, - int& Lmax) +void Matrix_Orbs22::init( + const std::vector>>& orb_A1, + const std::vector>>& orb_A2, + const std::vector>>& orb_B1, + const std::vector>>& orb_B2, + const UnitCell& ucell, + const LCAO_Orbitals& orb, + const double kmesh_times) { ModuleBase::TITLE("Matrix_Orbs22", "init"); ModuleBase::timer::tick("Matrix_Orbs22", "init"); - int Lmax_used; - this->lat0 = &ucell.lat0; - const int ntype = orb.get_ntype(); - int lmax_orb = -1, lmax_beta = -1; - for (int it = 0; it < ntype; it++) - { - lmax_orb = std::max(lmax_orb, orb.Phi[it].getLmax()); - lmax_beta = std::max(lmax_beta, ucell.infoNL.Beta[it].getLmax()); - } + this->lat0 = &ucell.lat0; + + const int Lmax = std::max({ + Exx_Abfs::Construct_Orbs::get_Lmax(orb_A1) + Exx_Abfs::Construct_Orbs::get_Lmax(orb_A2), + Exx_Abfs::Construct_Orbs::get_Lmax(orb_B1) + Exx_Abfs::Construct_Orbs::get_Lmax(orb_B2) }); + const int Lmax_used = Exx_Abfs::Construct_Orbs::get_Lmax(orb_A1) + Exx_Abfs::Construct_Orbs::get_Lmax(orb_A2) + Exx_Abfs::Construct_Orbs::get_Lmax(orb_B1) + Exx_Abfs::Construct_Orbs::get_Lmax(orb_B2); + + //========================================= + // (3) make Gaunt coefficients table + //========================================= + if(!this->MGT) + { this->MGT = std::make_shared(); } + if(this->MGT->get_Lmax_Gaunt_CH() < Lmax) + { this->MGT->init_Gaunt_CH(Lmax); } + if(this->MGT->get_Lmax_Gaunt_Coefficients() < Lmax) + { this->MGT->init_Gaunt(Lmax); } + const double dr = orb.get_dR(); const double dk = orb.get_dk(); const int kmesh = orb.get_kmesh() * kmesh_times + 1; - int Rmesh = static_cast(rmax / dr) + 4; + const double rmax + = std::min({Exx_Abfs::Construct_Orbs::get_Rmax(orb_A1), Exx_Abfs::Construct_Orbs::get_Rmax(orb_A2)}) + + std::min({Exx_Abfs::Construct_Orbs::get_Rmax(orb_B1), Exx_Abfs::Construct_Orbs::get_Rmax(orb_B2)}); + int Rmesh = static_cast(rmax / dr) + 4; // extend Rcut, keep dR Rmesh += 1 - Rmesh % 2; - - Center2_Orb::init_Table_Spherical_Bessel(4, - mode, - Lmax_used, - Lmax, - GlobalC::exx_info.info_ri.abfs_Lmax, - lmax_orb, - lmax_beta, + Center2_Orb::init_Table_Spherical_Bessel(Lmax_used, dr, dk, kmesh, Rmesh, psb_); - //========================================= - // (3) make Gaunt coefficients table - //========================================= - // this->MGT.init_Gaunt_CH(2 * Lmax + 1); // why +1 - // this->MGT.init_Gaunt(2 * Lmax + 1); - Lmax = 2 * Lmax + 1; - - ModuleBase::timer::tick("Matrix_Orbs22", "init"); -} - -void Matrix_Orbs22::init_radial(const std::vector>>& orb_A1, - const std::vector>>& orb_A2, - const std::vector>>& orb_B1, - const std::vector>>& orb_B2, - const ORB_gaunt_table& MGT) -{ - ModuleBase::TITLE("Matrix_Orbs22", "init_radial"); - ModuleBase::timer::tick("Matrix_Orbs22", "init_radial"); assert(orb_A1.size() == orb_A2.size()); assert(orb_B1.size() == orb_B2.size()); - for (size_t TA = 0; TA != orb_A1.size(); ++TA) - for (size_t TB = 0; TB != orb_B1.size(); ++TB) - for (int LA1 = 0; LA1 != orb_A1[TA].size(); ++LA1) - for (size_t NA1 = 0; NA1 != orb_A1[TA][LA1].size(); ++NA1) - for (int LA2 = 0; LA2 != orb_A2[TA].size(); ++LA2) - for (size_t NA2 = 0; NA2 != orb_A2[TA][LA2].size(); ++NA2) - for (int LB1 = 0; LB1 != orb_B1[TB].size(); ++LB1) - for (size_t NB1 = 0; NB1 != orb_B1[TB][LB1].size(); ++NB1) - for (int LB2 = 0; LB2 != orb_B2[TB].size(); ++LB2) - for (size_t NB2 = 0; NB2 != orb_B2[TB][LB2].size(); ++NB2) + for (size_t TA = 0; TA != orb_A1.size(); ++TA) { + for (size_t TB = 0; TB != orb_B1.size(); ++TB) { + for (int LA1 = 0; LA1 != orb_A1[TA].size(); ++LA1) { + for (size_t NA1 = 0; NA1 != orb_A1[TA][LA1].size(); ++NA1) { + for (int LA2 = 0; LA2 != orb_A2[TA].size(); ++LA2) { + for (size_t NA2 = 0; NA2 != orb_A2[TA][LA2].size(); ++NA2) { + for (int LB1 = 0; LB1 != orb_B1[TB].size(); ++LB1) { + for (size_t NB1 = 0; NB1 != orb_B1[TB][LB1].size(); ++NB1) { + for (int LB2 = 0; LB2 != orb_B2[TB].size(); ++LB2) { + for (size_t NB2 = 0; NB2 != orb_B2[TB][LB2].size(); ++NB2) { center2_orb22_s[TA][TB][LA1][NA1][LA2][NA2][LB1][NB1][LB2].insert( - std::make_pair(NB2, - Center2_Orb::Orb22(orb_A1[TA][LA1][NA1], - orb_A2[TA][LA2][NA2], - orb_B1[TB][LB1][NB1], - orb_B2[TB][LB2][NB2], - psb_, - MGT))); - ModuleBase::timer::tick("Matrix_Orbs22", "init_radial"); + std::make_pair( + NB2, + Center2_Orb::Orb22( + orb_A1[TA][LA1][NA1], + orb_A2[TA][LA2][NA2], + orb_B1[TB][LB1][NB1], + orb_B2[TB][LB2][NB2], + psb_, + *this->MGT))); + }}}}}}}}}} + ModuleBase::timer::tick("Matrix_Orbs22", "init"); } +/* void Matrix_Orbs22::init_radial(const LCAO_Orbitals& orb_A1, const LCAO_Orbitals& orb_A2, const LCAO_Orbitals& orb_B1, - const LCAO_Orbitals& orb_B2, - const ORB_gaunt_table& MGT) + const LCAO_Orbitals& orb_B2) { ModuleBase::TITLE("Matrix_Orbs22", "init_radial"); ModuleBase::timer::tick("Matrix_Orbs22", "init_radial"); @@ -115,9 +106,10 @@ void Matrix_Orbs22::init_radial(const LCAO_Orbitals& orb_A1, orb_B1.Phi[TB].PhiLN(LB1, NB1), orb_B2.Phi[TB].PhiLN(LB2, NB2), psb_, - MGT))); + *this->MGT))); ModuleBase::timer::tick("Matrix_Orbs22", "init_radial"); } +*/ void Matrix_Orbs22::init_radial_table() { diff --git a/source/source_lcao/module_ri/Matrix_Orbs22.h b/source/source_lcao/module_ri/Matrix_Orbs22.h index a7db572176..7451f80ed6 100644 --- a/source/source_lcao/module_ri/Matrix_Orbs22.h +++ b/source/source_lcao/module_ri/Matrix_Orbs22.h @@ -21,25 +21,14 @@ class Matrix_Orbs22 { public: - // mode: - // 1: - void init(const int mode, - const UnitCell& ucell, - const LCAO_Orbitals& orb, - const double kmesh_times, // extend Kcut, keep dK - const double rmax, - int& Lmax); // extend Rcut, keep dR - - void init_radial(const std::vector>>& orb_A1, - const std::vector>>& orb_A2, - const std::vector>>& orb_B1, - const std::vector>>& , - const ORB_gaunt_table& MGT); - void init_radial(const LCAO_Orbitals& orb_A1, - const LCAO_Orbitals& orb_A2, - const LCAO_Orbitals& orb_B1, - const LCAO_Orbitals& orb_B2, - const ORB_gaunt_table& MGT); + void init( + const std::vector>>& orb_A1, + const std::vector>>& orb_A2, + const std::vector>>& orb_B1, + const std::vector>>& orb_B2, + const UnitCell& ucell, + const LCAO_Orbitals& orb, + const double kmesh_times); // extend Kcut, keep dK void init_radial_table(); void init_radial_table(const std::map>>& Rs); // unit: ucell.lat0 @@ -101,6 +90,8 @@ class Matrix_Orbs22 const ModuleBase::Element_Basis_Index::IndexLNM& index_A2, const ModuleBase::Element_Basis_Index::IndexLNM& index_B1, const ModuleBase::Element_Basis_Index::IndexLNM& index_B2) const; + + std::shared_ptr MGT; private: ModuleBase::Sph_Bessel_Recursive::D2* psb_ = nullptr; diff --git a/source/source_lcao/module_ri/Matrix_Orbs22.hpp b/source/source_lcao/module_ri/Matrix_Orbs22.hpp index 502597ba46..ed4b58d83f 100644 --- a/source/source_lcao/module_ri/Matrix_Orbs22.hpp +++ b/source/source_lcao/module_ri/Matrix_Orbs22.hpp @@ -8,7 +8,6 @@ #include "Matrix_Orbs22.h" #include "RI_Util.h" -#include "source_pw/module_pwdft/global.h" template RI::Tensor Matrix_Orbs22::cal_overlap_matrix( diff --git a/source/source_lcao/module_ri/RI_2D_Comm.cpp b/source/source_lcao/module_ri/RI_2D_Comm.cpp index fdb3d52a8d..90c016f51d 100644 --- a/source/source_lcao/module_ri/RI_2D_Comm.cpp +++ b/source/source_lcao/module_ri/RI_2D_Comm.cpp @@ -1,11 +1,10 @@ //======================= // AUTHOR : Peize Lin -#include "source_io/module_parameter/parameter.h" // DATE : 2022-08-17 //======================= +#include "source_io/module_parameter/parameter.h" #include "RI_2D_Comm.h" -#include "source_pw/module_pwdft/global.h" #include "source_cell/klist.h" #include diff --git a/source/source_lcao/module_ri/RI_2D_Comm.h b/source/source_lcao/module_ri/RI_2D_Comm.h index 63cbbe8e68..9b90c8a3ae 100644 --- a/source/source_lcao/module_ri/RI_2D_Comm.h +++ b/source/source_lcao/module_ri/RI_2D_Comm.h @@ -51,6 +51,18 @@ namespace RI_2D_Comm const std::vector>>>& Hs, const Parallel_Orbitals& pv, TK* hk); + + + template + extern void add_Hexx_td( + const UnitCell& ucell, + const K_Vectors& kv, + const int ik, + const double alpha, + const std::vector>>>& Hs, + const Parallel_Orbitals& pv, + const ModuleBase::Vector3& At, + TK* hk); template extern void add_HexxR( diff --git a/source/source_lcao/module_ri/RI_2D_Comm.hpp b/source/source_lcao/module_ri/RI_2D_Comm.hpp index 78eedf56c4..dfd1162104 100644 --- a/source/source_lcao/module_ri/RI_2D_Comm.hpp +++ b/source/source_lcao/module_ri/RI_2D_Comm.hpp @@ -8,7 +8,6 @@ #include "RI_2D_Comm.h" #include "RI_Util.h" -#include "source_pw/module_pwdft/global.h" #include "source_base/tool_title.h" #include "source_base/timer.h" #include "source_lcao/LCAO_domain.h" @@ -169,7 +168,70 @@ void RI_2D_Comm::add_Hexx( } ModuleBase::timer::tick("RI_2D_Comm", "add_Hexx"); } +template +void RI_2D_Comm::add_Hexx_td( + const UnitCell &ucell, + const K_Vectors& kv, + const int ik, + const double alpha, + const std::vector>>>& Hs, + const Parallel_Orbitals& pv, + const ModuleBase::Vector3& At, + TK* hk) +{ + ModuleBase::TITLE("RI_2D_Comm", "add_Hexx_td"); + ModuleBase::timer::tick("RI_2D_Comm", "add_Hexx_td"); + + const std::map> is_list = {{1, {0}}, {2, {kv.isk[ik]}}, {4, {0, 1, 2, 3}}}; + for (const int is_b: is_list.at(PARAM.inp.nspin)) + { + int is0_b, is1_b; + std::tie(is0_b, is1_b) = RI_2D_Comm::split_is_block(is_b); + for (const auto& Hs_tmpA: Hs[is_b]) + { + const TA& iat0 = Hs_tmpA.first; + for (const auto& Hs_tmpB: Hs_tmpA.second) + { + const TA& iat1 = Hs_tmpB.first.first; + const TC& cell1 = Hs_tmpB.first.second; + const ModuleBase::Vector3 r_index = RI_Util::array3_to_Vector3(cell1); + // cal tddft phase for hybrid gauge + ModuleBase::Vector3 dtau = ucell.cal_dtau(iat0, iat1, r_index); + const double arg_td = At * dtau * ucell.lat0; + + const std::complex frac + = alpha + * std::exp(ModuleBase::IMAG_UNIT + * ((ModuleBase::TWO_PI * kv.kvec_c[ik] * (r_index * ucell.latvec)) + arg_td)); + const RI::Tensor& H = Hs_tmpB.second; + for (size_t iw0_b = 0; iw0_b < H.shape[0]; ++iw0_b) + { + const int iwt0 = RI_2D_Comm::get_iwt(ucell, iat0, iw0_b, is0_b); + if (pv.global2local_row(iwt0) < 0) + { + continue; + } + for (size_t iw1_b = 0; iw1_b < H.shape[1]; ++iw1_b) + { + const int iwt1 = RI_2D_Comm::get_iwt(ucell, iat1, iw1_b, is1_b); + if (pv.global2local_col(iwt1) < 0) + { + continue; + } + LCAO_domain::set_mat2d(iwt0, + iwt1, + RI::Global_Func::convert(H(iw0_b, iw1_b)) + * RI::Global_Func::convert(frac), + pv, + hk); + } + } + } + } + } + ModuleBase::timer::tick("RI_2D_Comm", "add_Hexx_td"); +} std::tuple RI_2D_Comm::get_iat_iw_is_block(const UnitCell& ucell,const int& iwt) { @@ -284,4 +346,4 @@ void RI_2D_Comm::add_HexxR( ModuleBase::timer::tick("RI_2D_Comm", "add_HexxR"); } -#endif \ No newline at end of file +#endif diff --git a/source/source_lcao/module_ri/RI_Util.hpp b/source/source_lcao/module_ri/RI_Util.hpp index 3ff9cb4cf5..7e0fd61d6c 100644 --- a/source/source_lcao/module_ri/RI_Util.hpp +++ b/source/source_lcao/module_ri/RI_Util.hpp @@ -6,9 +6,9 @@ #ifndef RI_UTIL_HPP #define RI_UTIL_HPP -#include "RI_Util.h" -#include "source_pw/module_pwdft/global.h" -#include "source_base/global_function.h" +#include "RI_Util.h" +#include "source_base/global_function.h" +#include "source_io/module_parameter/parameter.h" namespace RI_Util { @@ -147,4 +147,4 @@ namespace RI_Util } } -#endif \ No newline at end of file +#endif diff --git a/source/source_lcao/module_ri/RPA_LRI.h b/source/source_lcao/module_ri/RPA_LRI.h index a6a7b275cb..ae5754069f 100644 --- a/source/source_lcao/module_ri/RPA_LRI.h +++ b/source/source_lcao/module_ri/RPA_LRI.h @@ -11,6 +11,7 @@ // #include "module_xc/exx_info.h" // #include "source_basis/module_ao/ORB_atomic_lm.h" #include "source_base/matrix.h" +#include "source_hamilt/module_xc/exx_info.h" // use GlobalC::exx_info // #include "source_lcao/module_ri/Exx_LRI.h" // #include #include @@ -49,7 +50,7 @@ template class RPA_LRI const psi::Psi& psi, const elecstate::ElecState* pelec); void out_eigen_vector(const Parallel_Orbitals& parav, const psi::Psi& psi); - void out_struc(const ModuleBase::Matrix3& latvec, const ModuleBase::Matrix3& G); + void out_struc(const UnitCell &ucell); void out_bands(const elecstate::ElecState *pelec); void out_Cs(const UnitCell &ucell); diff --git a/source/source_lcao/module_ri/RPA_LRI.hpp b/source/source_lcao/module_ri/RPA_LRI.hpp index 79e39ff8b7..2580a75424 100644 --- a/source/source_lcao/module_ri/RPA_LRI.hpp +++ b/source/source_lcao/module_ri/RPA_LRI.hpp @@ -13,6 +13,7 @@ #include "RPA_LRI.h" #include "source_io/module_parameter/parameter.h" +#include "source_hamilt/module_xc/exx_info.h" // use GlobalC::exx_info template void RPA_LRI::init(const MPI_Comm& mpi_comm_in, const K_Vectors& kv_in, const std::vector& orb_cutoff) @@ -69,6 +70,7 @@ void RPA_LRI::cal_rpa_cv(const UnitCell& ucell) }); std::map>>& Cs = std::get<0>(Cs_dCs); this->Cs_period = RI::RI_Tools::cal_period(Cs, period); + this->Cs_period = exx_lri_rpa.exx_lri.post_2D.set_tensors_map2(this->Cs_period); } template @@ -90,9 +92,15 @@ void RPA_LRI::cal_postSCF_exx(const elecstate::DensityMatrix if (exx_spacegroup_symmetry) { const std::array period = RI_Util::get_Born_vonKarmen_period(kv); + const auto& Rs = RI_Util::get_Born_von_Karmen_cells(period); symrot.find_irreducible_sector(ucell.symm, ucell.atoms, ucell.st, - RI_Util::get_Born_von_Karmen_cells(period), period, ucell.lat); + Rs, period, ucell.lat); + // set Lmax of the rotation matrices to max(l_ao, l_abf), to support rotation under ABF + symrot.set_abfs_Lmax(Exx_Abfs::Construct_Orbs::get_Lmax(exx_lri_rpa.abfs)); symrot.cal_Ms(kv, ucell, *dm.get_paraV_pointer()); + // output Ts (symrot_R.txt) and Ms (symrot_k.txt) + ModuleSymmetry::print_symrot_info_R(symrot, ucell.symm, ucell.lmax, Rs); + ModuleSymmetry::print_symrot_info_k(symrot, kv, ucell); mix_DMk_2D.mix(symrot.restore_dm(kv, dm.get_DMK_vector(), *dm.get_paraV_pointer()), true); } else { mix_DMk_2D.mix(dm.get_DMK_vector(), true); } @@ -106,6 +114,11 @@ void RPA_LRI::cal_postSCF_exx(const elecstate::DensityMatrix GlobalC::exx_info.info_global.ccp_type = Conv_Coulomb_Pot_K::Ccp_Type::Hf; GlobalC::exx_info.info_global.hybrid_alpha = 1; GlobalC::exx_info.info_ri.ccp_rmesh_times = PARAM.inp.rpa_ccp_rmesh_times; + GlobalC::exx_info.info_global.coulomb_param[Conv_Coulomb_Pot_K::Coulomb_Type::Fock].resize(1); + GlobalC::exx_info.info_global.coulomb_param[Conv_Coulomb_Pot_K::Coulomb_Type::Fock] = {{ + {"alpha", "1"}, + {"singularity_correction", "spencer"} }}; + exx_lri_rpa.init(mpi_comm_in, ucell, kv, orb); exx_lri_rpa.cal_exx_ions(ucell,PARAM.inp.out_ri_cv); @@ -114,8 +127,7 @@ void RPA_LRI::cal_postSCF_exx(const elecstate::DensityMatrix exx_lri_rpa.cal_exx_elec(Ds, ucell,*dm.get_paraV_pointer(), &symrot); } else { exx_lri_rpa.cal_exx_elec(Ds, ucell,*dm.get_paraV_pointer()); -} - // cout<<"postSCF_Eexx: "< @@ -127,7 +139,7 @@ void RPA_LRI::out_for_RPA(const UnitCell& ucell, ModuleBase::TITLE("DFT_RPA_interface", "out_for_RPA"); this->out_bands(pelec); this->out_eigen_vector(parav, psi); - this->out_struc(ucell.latvec, ucell.G); + this->out_struc(ucell); this->cal_rpa_cv(ucell); std::cout << "rpa_pca_threshold: " << this->info.pca_threshold << std::endl; @@ -211,7 +223,7 @@ void RPA_LRI::out_eigen_vector(const Parallel_Orbitals& parav, const p } template -void RPA_LRI::out_struc(const ModuleBase::Matrix3& latvec, const ModuleBase::Matrix3& G) +void RPA_LRI::out_struc(const UnitCell &ucell) { if (GlobalV::MY_RANK != 0) { @@ -219,14 +231,16 @@ void RPA_LRI::out_struc(const ModuleBase::Matrix3& latvec, const Modul } ModuleBase::TITLE("DFT_RPA_interface", "out_struc"); double TWOPI_Bohr2A = ModuleBase::TWO_PI * ModuleBase::BOHR_TO_A; - const int nks_tot = PARAM.inp.nspin == 2 ? (int)p_kv->get_nks() / 2 : p_kv->get_nks(); - ModuleBase::Matrix3 lat = latvec / ModuleBase::BOHR_TO_A; - ModuleBase::Matrix3 G_RPA = G * TWOPI_Bohr2A; + const int nks_tot = PARAM.inp.nspin == 2 ? (int)p_kv->get_nkstot() / 2 : p_kv->get_nkstot(); + const int nks_tot_full = p_kv->get_nkstot_full(); + const int natom = ucell.nat; + ModuleBase::Matrix3 lat = ucell.latvec / ModuleBase::BOHR_TO_A; + ModuleBase::Matrix3 G_RPA = ucell.G * TWOPI_Bohr2A; std::stringstream ss; ss << "stru_out"; std::ofstream ofs; ofs.open(ss.str().c_str(), std::ios::out); - ofs << lat.e11 << std::setw(15) << lat.e12 << std::setw(15) << lat.e13 << std::endl; + ofs << std::fixed << std::setprecision(9) << lat.e11 << std::setw(15) << lat.e12 << std::setw(15) << lat.e13 << std::endl; ofs << lat.e21 << std::setw(15) << lat.e22 << std::setw(15) << lat.e23 << std::endl; ofs << lat.e31 << std::setw(15) << lat.e32 << std::setw(15) << lat.e33 << std::endl; @@ -234,14 +248,25 @@ void RPA_LRI::out_struc(const ModuleBase::Matrix3& latvec, const Modul ofs << G_RPA.e21 << std::setw(15) << G_RPA.e22 << std::setw(15) << G_RPA.e23 << std::endl; ofs << G_RPA.e31 << std::setw(15) << G_RPA.e32 << std::setw(15) << G_RPA.e33 << std::endl; + ofs << natom << std::endl; + for(int iat=0; iat < natom; ++iat) { + int it = ucell.iat2it[iat]; + ModuleBase::Vector3 atom_pos = ucell.atoms[ it ].tau[ ucell.iat2ia[iat] ]/ ModuleBase::BOHR_TO_A; + ofs << atom_pos.x << std::setw(15) << atom_pos.y << std::setw(15) << atom_pos.z << std::setw(15) << (it + 1) << std::endl; + } + ofs << p_kv->nmp[0] << std::setw(6) << p_kv->nmp[1] << std::setw(6) << p_kv->nmp[2] << std::setw(6) << std::endl; for (int ik = 0; ik != nks_tot; ik++) { - ofs << std::setw(15) << std::fixed << std::setprecision(9) << p_kv->kvec_c[ik].x * TWOPI_Bohr2A << std::setw(15) - << std::fixed << std::setprecision(9) << p_kv->kvec_c[ik].y * TWOPI_Bohr2A << std::setw(15) << std::fixed - << std::setprecision(9) << p_kv->kvec_c[ik].z * TWOPI_Bohr2A << std::endl; + ofs << std::setw(15) << p_kv->kvec_c[ik].x * TWOPI_Bohr2A << std::setw(15) + << p_kv->kvec_c[ik].y * TWOPI_Bohr2A << std::setw(15) << p_kv->kvec_c[ik].z * TWOPI_Bohr2A << std::endl; + } + + for (int ik = 0; ik != nks_tot_full; ++ik){ + ofs << (p_kv->ibz_index[ik] + 1) << std::endl; } + ofs.close(); return; } @@ -375,11 +400,11 @@ void RPA_LRI::out_coulomb_k(const UnitCell &ucell) size_t nu_num = exx_lri_rpa.exx_objs[Conv_Coulomb_Pot_K::Coulomb_Method::Center2].cv.get_index_abfs_size(ucell.iat2it[iJ]); ofs << all_mu << " " << mu_shift[I] + 1 << " " << mu_shift[I] + mu_num << " " << mu_shift[iJ] + 1 << " " << mu_shift[iJ] + nu_num << std::endl; - ofs << ik + 1 << " " << p_kv->wk[ik] / 2.0 * PARAM.inp.nspin << std::endl; + ofs << ik + 1 << " " << std::fixed << std::setprecision(12) << p_kv->wk[ik] / 2.0 * PARAM.inp.nspin << std::endl; for (int i = 0; i != vq_J.data->size(); i++) { - ofs << std::setw(21) << std::fixed << std::setprecision(12) << (*vq_J.data)[i].real() - << std::setw(21) << std::fixed << std::setprecision(12) << (*vq_J.data)[i].imag() << std::endl; + ofs << std::setw(21) << (*vq_J.data)[i].real() + << std::setw(21) << (*vq_J.data)[i].imag() << std::endl; } } } diff --git a/source/source_lcao/module_ri/conv_coulomb_pot_k.cpp b/source/source_lcao/module_ri/conv_coulomb_pot_k.cpp index bb50800b13..1719810107 100644 --- a/source/source_lcao/module_ri/conv_coulomb_pot_k.cpp +++ b/source/source_lcao/module_ri/conv_coulomb_pot_k.cpp @@ -2,7 +2,6 @@ #include "../../source_base/constants.h" #include "source_io/module_parameter/parameter.h" #include "../../source_basis/module_ao/ORB_atomic_lm.h" -#include "../../source_pw/module_pwdft/global.h" namespace Conv_Coulomb_Pot_K { diff --git a/source/source_lcao/module_ri/exx_abfs-abfs_index.cpp b/source/source_lcao/module_ri/exx_abfs-abfs_index.cpp deleted file mode 100644 index 9826afd63f..0000000000 --- a/source/source_lcao/module_ri/exx_abfs-abfs_index.cpp +++ /dev/null @@ -1,37 +0,0 @@ -#include "exx_abfs-abfs_index.h" -#include "../../source_basis/module_ao/ORB_read.h" - -ModuleBase::Element_Basis_Index::Range - Exx_Abfs::Abfs_Index::construct_range( const LCAO_Orbitals &orb ) -{ - ModuleBase::Element_Basis_Index::Range range; - range.resize( orb.get_ntype() ); - for( size_t T=0; T!=range.size(); ++T ) - { - range[T].resize( orb.Phi[T].getLmax()+1 ); - for( size_t L=0; L!=range[T].size(); ++L ) - { - range[T][L].N = orb.Phi[T].getNchi(L); - range[T][L].M = 2*L+1; - } - } - return range; -} - - -ModuleBase::Element_Basis_Index::Range - Exx_Abfs::Abfs_Index::construct_range( const std::vector>> &orb ) -{ - ModuleBase::Element_Basis_Index::Range range; - range.resize( orb.size() ); - for( size_t T=0; T!=range.size(); ++T ) - { - range[T].resize( orb[T].size() ); - for( size_t L=0; L!=range[T].size(); ++L ) - { - range[T][L].N = orb[T][L].size(); - range[T][L].M = 2*L+1; - } - } - return range; -} diff --git a/source/source_lcao/module_ri/exx_abfs-abfs_index.h b/source/source_lcao/module_ri/exx_abfs-abfs_index.h deleted file mode 100644 index 40dce3c5c6..0000000000 --- a/source/source_lcao/module_ri/exx_abfs-abfs_index.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef EXX_ABFS_ABFS_INDEX_H -#define EXX_ABFS_ABFS_INDEX_H - -#include "exx_abfs.h" - -#include -#include "../../source_base/element_basis_index.h" -#include "../../source_basis/module_ao/ORB_atomic_lm.h" - -class LCAO_Orbitals; - -class Exx_Abfs::Abfs_Index -{ -public: - static ModuleBase::Element_Basis_Index::Range construct_range( const LCAO_Orbitals &orb ); - static ModuleBase::Element_Basis_Index::Range construct_range( const std::vector>> &orb ); -}; - -#endif // EXX_ABFS_ABFS_INDEX_H \ No newline at end of file diff --git a/source/source_lcao/module_ri/exx_abfs-construct_orbs.cpp b/source/source_lcao/module_ri/exx_abfs-construct_orbs.cpp index 1556335572..fc80551ad6 100644 --- a/source/source_lcao/module_ri/exx_abfs-construct_orbs.cpp +++ b/source/source_lcao/module_ri/exx_abfs-construct_orbs.cpp @@ -5,7 +5,6 @@ #include "source_base/gram_schmidt_orth-inl.h" #include "source_base/gram_schmidt_orth.h" #include "source_basis/module_ao/ORB_read.h" -#include "source_pw/module_pwdft/global.h" //for ucell #include "source_lcao/module_ri/test_code/exx_abfs-construct_orbs-test.h" // Peize Lin test std::vector>> Exx_Abfs::Construct_Orbs::change_orbs( @@ -86,6 +85,8 @@ std::vector>> Exx_Abfs::Construct_ const double times_threshold ) { ModuleBase::TITLE("Exx_Abfs::Construct_Orbs::abfs_same_atom"); + if(times_threshold>1) + { return std::vector>>(orb.get_ntype()); } const std::vector>>> abfs_same_atom_psi = psi_mult_psi( orbs ); diff --git a/source/source_lcao/module_ri/exx_abfs-construct_orbs.h b/source/source_lcao/module_ri/exx_abfs-construct_orbs.h index ae698b33bd..01b2dc36a9 100644 --- a/source/source_lcao/module_ri/exx_abfs-construct_orbs.h +++ b/source/source_lcao/module_ri/exx_abfs-construct_orbs.h @@ -22,7 +22,7 @@ class Exx_Abfs::Construct_Orbs static std::vector>> abfs_same_atom( const UnitCell &ucell, - const LCAO_Orbitals& orb, + const LCAO_Orbitals& orb, const std::vector>> &lcaos, const double kmesh_times_mot, const double times_threshold=0); @@ -32,30 +32,36 @@ class Exx_Abfs::Construct_Orbs const std::vector>> &orbs, std::ostream &os); - // get the max number of orbitals among all elements - // static int get_nmax_total(const - // std::vector>> &orb_in); get - // number of orbitals for each element static std::map - // get_nw(const std::vector>> - // &orb_in); + // get the max number of orbitals among all elements + // static int get_nmax_total(const + // std::vector>> &orb_in); get + // number of orbitals for each element static std::map + // get_nw(const std::vector>> + // &orb_in); - // get multipole of orbitals for each element and angular moment - static std::vector>> get_multipole( - const std::vector>>& - orb_in); + // get multipole of orbitals for each element and angular moment + static std::vector>> get_multipole( + const std::vector>> &orb_in); - static std::vector get_Rcut( - const std::vector>>& - orb_in); - static inline double get_Rmax(const std::vector& rcut) { - return *std::max_element(rcut.begin(), rcut.end()); - } - static inline double get_Rmax( - const std::vector>>& - orb_in) { - std::vector rcut = get_Rcut(orb_in); - return get_Rmax(rcut); - } + static std::vector get_Rcut( + const std::vector>> &orb_in); + static inline double get_Rmax(const std::vector& rcut) + { + return *std::max_element(rcut.begin(), rcut.end()); + } + static inline double get_Rmax( + const std::vector>> &orb_in) + { + std::vector rcut = get_Rcut(orb_in); + return get_Rmax(rcut); + } + template + static int get_Lmax(const std::vector> &orb) + { + return max_element(orb.begin(), orb.end(), + [](const std::vector &orb_A, const std::vector &orb_B){ return orb_A.size() < orb_B.size(); }) + ->size() - 1; + } static void filter_empty_orbs( std::vector>> &orbs); @@ -74,7 +80,7 @@ class Exx_Abfs::Construct_Orbs static std::vector>>> pca( const UnitCell &ucell, - const LCAO_Orbitals& orb, + const LCAO_Orbitals& orb, const std::vector>> &abfs, const std::vector>> &orbs, const double kmesh_times_mot, diff --git a/source/source_lcao/module_ri/exx_abfs-io.cpp b/source/source_lcao/module_ri/exx_abfs-io.cpp index 6e961f3e2f..bbdda73897 100644 --- a/source/source_lcao/module_ri/exx_abfs-io.cpp +++ b/source/source_lcao/module_ri/exx_abfs-io.cpp @@ -4,8 +4,6 @@ #include "exx_abfs-io.h" #include "exx_abfs-jle.h" -#include "exx_abfs-abfs_index.h" -#include "../../source_pw/module_pwdft/global.h" #include "../../source_basis/module_ao/ORB_read.h" #include "../../source_base/global_function.h" #include "../../source_base/math_integral.h" // mohan add 2021-04-03 @@ -16,6 +14,7 @@ std::vector>> Exx_Abfs::IO::constr const std::vector &files_abfs, const double kmesh_times ) { + ModuleBase::TITLE("Exx_Abfs::IO::construct_abfs"); std::vector>> abfs( files_abfs.size() ); for( size_t T=0; T!=files_abfs.size(); ++T ) abfs[T] = construct_abfs_T( @@ -36,7 +35,7 @@ std::vector>> Exx_Abfs::IO::constr const double kmesh_times ) { std::vector>> - &&abfs = construct_abfs( orbs, files_abfs, kmesh_times ); + abfs = construct_abfs( orbs, files_abfs, kmesh_times ); assert( abfs.size() == abfs_pre.size() ); for( size_t T=0; T!=abfs.size(); ++T ) @@ -63,7 +62,7 @@ std::vector> Exx_Abfs::IO::construct_abfs_T( size_t L_size; std::map N_size; size_t meshr; - double dr; + double dr = 0.0; std::map>> psis; /*---------------------- @@ -73,7 +72,7 @@ std::vector> Exx_Abfs::IO::construct_abfs_T( std::ifstream ifs( file_name.c_str() ); if(!ifs) - throw std::runtime_error(" Can't find the abfs ORBITAL file."); + throw std::runtime_error(" Can't find the abfs ORBITAL file " + file_name); while( ifs.good() ) { @@ -130,10 +129,22 @@ std::vector> Exx_Abfs::IO::construct_abfs_T( { ModuleBase::GlobalFunc::READ_VALUE( ifs, N_size[8] ); } + else if ( "Lorbital-->"==word ) + { + ModuleBase::GlobalFunc::READ_VALUE( ifs, N_size[9] ); + } + else if ( "Morbital-->"==word ) + { + ModuleBase::GlobalFunc::READ_VALUE( ifs, N_size[10] ); + } + else if ( "Norbital-->"==word ) + { + ModuleBase::GlobalFunc::READ_VALUE( ifs, N_size[11] ); + } else if ( "END"==word ) { break; - } + } } ModuleBase::CHECK_NAME(ifs, "Mesh"); @@ -169,19 +180,11 @@ std::vector> Exx_Abfs::IO::construct_abfs_T( ----------------------*/ for( size_t L=0; L<=L_size; ++L ) if( N_size.find(L) == N_size.end() ) - { - std::stringstream ss; - ss<<"Can't find N of L="<>> Exx_Abfs::Jle::init_jle( @@ -13,15 +14,19 @@ Exx_Abfs::Jle::init_jle( const UnitCell& ucell, const LCAO_Orbitals& orb) { + ModuleBase::TITLE("Exx_Abfs::Jle","init_jle"); std::vector>> jle( ucell.ntype ); for(int T=0; T0) + { jle[T].resize( info.abfs_Lmax+1 ); } for(int L=0; L<=info.abfs_Lmax; ++L) { const size_t ecut_number = static_cast( std::sqrt( info.ecut_exx ) * orb.Phi[T].getRcut() / ModuleBase::PI ); // Rydberg Unit. + if(ecut_number<=0) + { continue; } jle[T][L].resize( ecut_number ); diff --git a/source/source_lcao/module_ri/exx_abfs.h b/source/source_lcao/module_ri/exx_abfs.h index bda52e69d2..8a78307b36 100644 --- a/source/source_lcao/module_ri/exx_abfs.h +++ b/source/source_lcao/module_ri/exx_abfs.h @@ -15,7 +15,6 @@ using std::map; class Exx_Abfs { public: - class Abfs_Index; class Jle; class IO; class Construct_Orbs; @@ -23,7 +22,6 @@ class Exx_Abfs int rmesh_times = 5; // Peize Lin test int kmesh_times = 1; // Peize Lin test - }; #endif diff --git a/source/source_lcao/module_ri/exx_lip.hpp b/source/source_lcao/module_ri/exx_lip.hpp index aad7b3494c..07b39c6a7a 100644 --- a/source/source_lcao/module_ri/exx_lip.hpp +++ b/source/source_lcao/module_ri/exx_lip.hpp @@ -11,7 +11,6 @@ #include "source_base/vector3.h" #include "source_base/global_function.h" #include "source_base/vector3.h" -#include "source_pw/module_pwdft/global.h" #include "source_cell/klist.h" #include "source_lcao/wavefunc_in_pw.h" #include "source_base/module_external/lapack_connector.h" @@ -20,12 +19,17 @@ #include "source_estate/elecstate.h" #include "source_basis/module_pw/pw_basis_k.h" #include "source_cell/module_symmetry/symmetry.h" -#include "source_psi/psi_init.h" +#include "source_psi/psi_initializer.h" #include "source_pw/module_pwdft/structure_factor.h" #include "source_base/tool_title.h" #include "source_base/timer.h" +#include "source_hamilt/module_xc/exx_info.h" // use GlobalC::exx_info #include +#include +#include +#include +#include template void Exx_Lip::cal_exx() @@ -487,12 +491,20 @@ void Exx_Lip::write_q_pack() const if (!GlobalV::RANK_IN_POOL) { const std::string exx_q_pack = "exx_q_pack/"; + const std::string dir_path = PARAM.globalv.global_out_dir + exx_q_pack; - const std::string command_mkdir = "test -d " + PARAM.globalv.global_out_dir + exx_q_pack + " || mkdir " + PARAM.globalv.global_out_dir + exx_q_pack; - assert( system(command_mkdir.c_str()) == 0); + int ret = mkdir(dir_path.c_str(), 0755); + assert(ret == 0 || errno == EEXIST); - const std::string command_kpoint = "test -f " + PARAM.globalv.global_out_dir + exx_q_pack + PARAM.inp.kpoint_file + " || cp " + PARAM.inp.kpoint_file + " " + PARAM.globalv.global_out_dir + exx_q_pack + PARAM.inp.kpoint_file; - assert( system(command_kpoint.c_str()) == 0); + const std::string kpoint_dest = dir_path + PARAM.inp.kpoint_file; + struct stat st; + if (stat(kpoint_dest.c_str(), &st) != 0) + { + std::ifstream src(PARAM.inp.kpoint_file, std::ios::binary); + std::ofstream dst(kpoint_dest, std::ios::binary); + dst << src.rdbuf(); + assert(dst.good()); + } std::stringstream ss_wf_wg; ss_wf_wg << PARAM.globalv.global_out_dir << exx_q_pack << "wf_wg_" << GlobalV::MY_POOL; @@ -610,4 +622,4 @@ void Exx_Lip::read_q_pack(const ModuleSymmetry::Symmetry& symm, } */ -#endif \ No newline at end of file +#endif diff --git a/source/source_lcao/module_ri/exx_opt_orb-print.cpp b/source/source_lcao/module_ri/exx_opt_orb-print.cpp index a851d2c579..2418fdd996 100644 --- a/source/source_lcao/module_ri/exx_opt_orb-print.cpp +++ b/source/source_lcao/module_ri/exx_opt_orb-print.cpp @@ -1,17 +1,20 @@ #include "exx_opt_orb.h" -#include "../../source_pw/module_pwdft/global.h" #include "exx_abfs-jle.h" +#include "source_base/tool_title.h" +#include void Exx_Opt_Orb::print_matrix( const Exx_Info::Exx_Info_Opt_ABFs &info, const UnitCell& ucell, - const K_Vectors &kv, - const std::string& file_name, + const K_Vectors &kv, + const int Lmax, + const std::vector &ecut_number, + const std::string &file_name, const std::vector> &matrix_Q, const std::vector>> &matrix_S, const RI::Tensor &matrix_V, - const size_t TA, const size_t IA, const size_t TB, const size_t IB, - const std::vector& orb_cutoff, + const std::size_t TA, const std::size_t IA, const std::size_t TB, const std::size_t IB, + const std::vector& orb_cutoff, const ModuleBase::Element_Basis_Index::Range &range_jles, const ModuleBase::Element_Basis_Index::IndexLNM &index_jles) const { @@ -60,45 +63,40 @@ void Exx_Opt_Orb::print_matrix( << ucell.atoms[TB].tau[IB].z << std::endl; } - // ecutwfc_jlq determine the jlq corresponding to plane wave calculation. - ofs << info.ecut_exx << " ecutwfc" << std::endl; // mohan add 2009-09-08 + ofs << info.ecut_exx << " ecutwfc" << std::endl; // this parameter determine the total number of jlq. - ofs << info.ecut_exx << " ecutwfc_jlq" << std::endl;//mohan modify 2009-09-08 + ofs << info.ecut_exx << " ecutwfc_jlq" << std::endl; if(TA==TB) { ofs << orb_cutoff[TA] << " rcut_Jlq" << std::endl; } else { ofs << orb_cutoff[TA] << " " << orb_cutoff[TB] << " rcut_Jlq" << std::endl; } - // mohan add 'smooth' and 'smearing_sigma' 2009-08-28 ofs << 0 << " smooth" << std::endl; ofs << 0 << " smearing_sigma" << std::endl; ofs << info.tolerence << " tolerence" << std::endl; - ofs << info.abfs_Lmax << " lmax" << std::endl; + ofs << Lmax << " lmax" << std::endl; ofs << kv.get_nkstot() << " nks" << std::endl; assert( matrix_V.shape[0]*matrix_V.shape[1] == matrix_V.shape[2]*matrix_V.shape[3] ); ofs << matrix_V.shape[0]*matrix_V.shape[1] << " nbands" << std::endl; - auto cal_sum_M = [&range_jles](size_t T) -> size_t + auto cal_sum_M = [&range_jles](std::size_t T) -> std::size_t { - size_t sum_M = 0; - for( size_t L = 0; L!=range_jles[T].size(); ++L ) + std::size_t sum_M = 0; + for( std::size_t L = 0; L!=range_jles[T].size(); ++L ) { sum_M += range_jles[T][L].M; } return sum_M; }; - const size_t nwfc = (TA==TB && IA==IB) ? cal_sum_M(TA) : cal_sum_M(TA)+cal_sum_M(TB); + const std::size_t nwfc = (TA==TB && IA==IB) ? cal_sum_M(TA) : cal_sum_M(TA)+cal_sum_M(TB); ofs << nwfc << " nwfc" << std::endl; - const size_t ecut_numberA = static_cast( std::sqrt( info.ecut_exx ) * orb_cutoff[TA] / ModuleBase::PI ); // Rydberg Unit - const size_t ecut_numberB = static_cast( std::sqrt( info.ecut_exx ) * orb_cutoff[TB] / ModuleBase::PI ); // Rydberg Unit - if(TA==TB) - { ofs << ecut_numberA << " ne" << std::endl; } - else - { ofs << ecut_numberA << " " << ecut_numberB << " ne" << std::endl; } + for(const std::size_t ne : ecut_number) + { ofs << ne << " "; } + ofs << "ne" << std::endl; ofs << "" << std::endl; for( int ik=0; ik!=kv.get_nkstot(); ++ik ) @@ -118,18 +116,18 @@ void Exx_Opt_Orb::print_matrix( // < Psi | jY > //--------------------- ofs<< "" << std::endl; - for( size_t iw0=0; iw0!=matrix_V.shape[0]; ++iw0 ) + for( std::size_t iw0=0; iw0!=matrix_V.shape[0]; ++iw0 ) { - for( size_t iw1=0; iw1!=matrix_V.shape[1]; ++iw1 ) + for( std::size_t iw1=0; iw1!=matrix_V.shape[1]; ++iw1 ) { - for( size_t iat=0; iat!=matrix_Q.size(); ++iat ) + for( std::size_t iat=0; iat!=matrix_Q.size(); ++iat ) { - const size_t it = (iat==0) ? TA : TB; - for( size_t il=0; il!=range_jles[it].size(); ++il ) + const std::size_t it = (iat==0) ? TA : TB; + for( std::size_t il=0; il!=range_jles[it].size(); ++il ) { - for( size_t im=0; im!=range_jles[it][il].M; ++im ) + for( std::size_t im=0; im!=range_jles[it][il].M; ++im ) { - for( size_t iq=0; iq!=range_jles[it][il].N; ++iq ) + for( std::size_t iq=0; iq!=range_jles[it][il].N; ++iq ) { ofs< //--------------------- ofs<< "" < //--------------------- ofs << "" << std::endl; - for( size_t iw0=0; iw0!=matrix_V.shape[0]; ++iw0 ) + for( std::size_t iw0=0; iw0!=matrix_V.shape[0]; ++iw0 ) { - for( size_t iw1=0; iw1!=matrix_V.shape[1]; ++iw1 ) + for( std::size_t iw1=0; iw1!=matrix_V.shape[1]; ++iw1 ) { - for( size_t iw2=0; iw2!=matrix_V.shape[2]; ++iw2 ) + for( std::size_t iw2=0; iw2!=matrix_V.shape[2]; ++iw2 ) { - for( size_t iw3=0; iw3!=matrix_V.shape[3]; ++iw3 ) + for( std::size_t iw3=0; iw3!=matrix_V.shape[3]; ++iw3 ) { ofs<" << std::endl << std::endl; }; + ModuleBase::TITLE("Exx_Opt_Orb","print_matrix"); std::ofstream ofs(file_name+"_"+std::to_string(TA)+"_"+std::to_string(IA)+"_"+std::to_string(TB)+"_"+std::to_string(IB)); print_header(ofs); + ofs<>> &orbs) -> bool + { + for(const auto &orb_t : orbs) { + for(const auto &orb_tl : orb_t) { + if(orb_tl.size()>0) { + return false; + }}} + return true; + }; + std::vector>> lcaos = Exx_Abfs::Construct_Orbs::change_orbs( orb, info.kmesh_times ); Exx_Abfs::Construct_Orbs::filter_empty_orbs(lcaos); std::vector>> - abfs = Exx_Abfs::Construct_Orbs::abfs_same_atom(ucell,orb, lcaos, info.kmesh_times, GlobalC::exx_info.info_ri.pca_threshold ); + abfs = Exx_Abfs::Construct_Orbs::abfs_same_atom(ucell,orb, lcaos, info.kmesh_times, info.pca_threshold ); + if(!info.files_abfs.empty()) + { abfs = Exx_Abfs::IO::construct_abfs( abfs, orb, info.files_abfs, info.kmesh_times ); } Exx_Abfs::Construct_Orbs::filter_empty_orbs(abfs); std::vector< std::vector< std::vector< Numerical_Orbital_Lm>>> jle = Exx_Abfs::Jle::init_jle(info, info.kmesh_times, ucell , orb); + if(!info.files_jles.empty()) + { jle = Exx_Abfs::IO::construct_abfs( jle, orb, info.files_jles, info.kmesh_times ); } Exx_Abfs::Construct_Orbs::filter_empty_orbs(jle); - GlobalC::exx_info.info_ri.abfs_Lmax = info.abfs_Lmax; - for( size_t T=0; T!=abfs.size(); ++T ) - { GlobalC::exx_info.info_ri.abfs_Lmax = std::max( GlobalC::exx_info.info_ri.abfs_Lmax, static_cast(abfs[T].size())-1 ); } - - const ModuleBase::Element_Basis_Index::Range range_lcaos = Exx_Abfs::Abfs_Index::construct_range( lcaos ); + const ModuleBase::Element_Basis_Index::Range range_lcaos = ModuleBase::Element_Basis_Index::construct_range( lcaos ); const ModuleBase::Element_Basis_Index::IndexLNM index_lcaos = ModuleBase::Element_Basis_Index::construct_index( range_lcaos ); - const ModuleBase::Element_Basis_Index::Range range_abfs = Exx_Abfs::Abfs_Index::construct_range( abfs ); + const ModuleBase::Element_Basis_Index::Range range_abfs = ModuleBase::Element_Basis_Index::construct_range( abfs ); const ModuleBase::Element_Basis_Index::IndexLNM index_abfs = ModuleBase::Element_Basis_Index::construct_index( range_abfs ); - const ModuleBase::Element_Basis_Index::Range range_jys = Exx_Abfs::Abfs_Index::construct_range( jle ); + const ModuleBase::Element_Basis_Index::Range range_jys = ModuleBase::Element_Basis_Index::construct_range( jle ); const ModuleBase::Element_Basis_Index::IndexLNM index_jys = ModuleBase::Element_Basis_Index::construct_index( range_jys ); Exx_Abfs::Construct_Orbs::print_orbs_size(ucell, abfs, GlobalV::ofs_running); + Exx_Abfs::Construct_Orbs::print_orbs_size(ucell, jle, GlobalV::ofs_running); const std::map>> radial_R = get_radial_R(ucell); // < lcaos lcaos | lcaos lcaos > const auto ms_lcaoslcaos_lcaoslcaos = [&]() -> std::map>>>> { + if(judge_orbs_empty(lcaos)) { return {}; } Matrix_Orbs22 m_lcaoslcaos_lcaoslcaos; - ORB_gaunt_table MGT; - int Lmax; - m_lcaoslcaos_lcaoslcaos.init( 1, ucell,orb, info.kmesh_times, orb.get_Rmax(), Lmax ); - MGT.init_Gaunt_CH(Lmax); - MGT.init_Gaunt(Lmax); - m_lcaoslcaos_lcaoslcaos.init_radial( lcaos, lcaos, lcaos, lcaos, MGT ); + m_lcaoslcaos_lcaoslcaos.init( lcaos, lcaos, lcaos, lcaos, ucell,orb, info.kmesh_times ); #if TEST_EXX_RADIAL>=1 m_lcaoslcaos_lcaoslcaos.init_radial_table(radial_R); #else @@ -70,13 +77,10 @@ void Exx_Opt_Orb::generate_matrix( // < lcaos lcaos | jys > const auto ms_lcaoslcaos_jys = [&]() -> std::map>>>>> { + if(judge_orbs_empty(lcaos)) { return {}; } + if(judge_orbs_empty(jle)) { return {}; } Matrix_Orbs21 m_jyslcaos_lcaos; - ORB_gaunt_table MGT; - int Lmax; - m_jyslcaos_lcaos.init( 1, ucell , orb, info.kmesh_times, orb.get_Rmax(), Lmax ); - MGT.init_Gaunt_CH(Lmax); - MGT.init_Gaunt(Lmax); - m_jyslcaos_lcaos.init_radial( jle, lcaos, lcaos, MGT); + m_jyslcaos_lcaos.init( jle, lcaos, lcaos, ucell , orb, info.kmesh_times ); #if TEST_EXX_RADIAL>=1 m_jyslcaos_lcaos.init_radial_table( radial_R); #else @@ -88,13 +92,9 @@ void Exx_Opt_Orb::generate_matrix( // < jys | jys > const auto ms_jys_jys = [&]() -> std::map>>>> { + if(judge_orbs_empty(jle)) { return {}; } Matrix_Orbs11 m_jys_jys; - ORB_gaunt_table MGT; - int Lmax; - m_jys_jys.init( 2,ucell,orb, info.kmesh_times, orb.get_Rmax(), Lmax ); - MGT.init_Gaunt_CH(Lmax); - MGT.init_Gaunt(Lmax); - m_jys_jys.init_radial( jle, jle, MGT ); + m_jys_jys.init( jle, jle, ucell,orb, info.kmesh_times ); #if TEST_EXX_RADIAL>=1 m_jys_jys.init_radial_table(radial_R); #else @@ -106,13 +106,9 @@ void Exx_Opt_Orb::generate_matrix( // < abfs | abfs > const auto ms_abfs_abfs = [&]() -> std::map>>>> { + if(judge_orbs_empty(abfs)) { return {}; } Matrix_Orbs11 m_abfs_abfs; - ORB_gaunt_table MGT; - int Lmax; - m_abfs_abfs.init( 2, ucell, orb, info.kmesh_times, orb.get_Rmax(), Lmax ); - MGT.init_Gaunt_CH(Lmax); - MGT.init_Gaunt(Lmax); - m_abfs_abfs.init_radial( abfs, abfs, MGT ); + m_abfs_abfs.init( abfs, abfs, ucell, orb, info.kmesh_times ); #if TEST_EXX_RADIAL>=1 m_abfs_abfs.init_radial_table(radial_R); #else @@ -124,13 +120,10 @@ void Exx_Opt_Orb::generate_matrix( // < lcaos lcaos | abfs > const auto ms_lcaoslcaos_abfs = [&]() -> std::map>>>>> { + if(judge_orbs_empty(lcaos)) { return {}; } + if(judge_orbs_empty(abfs)) { return {}; } Matrix_Orbs21 m_abfslcaos_lcaos; - ORB_gaunt_table MGT; - int Lmax; - m_abfslcaos_lcaos.init( 1, ucell , orb, info.kmesh_times, orb.get_Rmax(), Lmax ); - MGT.init_Gaunt_CH(Lmax); - MGT.init_Gaunt(Lmax); - m_abfslcaos_lcaos.init_radial( abfs, lcaos, lcaos, MGT ); + m_abfslcaos_lcaos.init( abfs, lcaos, lcaos, ucell , orb, info.kmesh_times ); #if TEST_EXX_RADIAL>=1 m_abfslcaos_lcaos.init_radial_table(radial_R); #else @@ -142,13 +135,10 @@ void Exx_Opt_Orb::generate_matrix( // < jys | abfs > const auto ms_jys_abfs = [&]() -> std::map>>>> { + if(judge_orbs_empty(jle)) { return {}; } + if(judge_orbs_empty(abfs)) { return {}; } Matrix_Orbs11 m_jys_abfs; - ORB_gaunt_table MGT; - int Lmax; - m_jys_abfs.init( 2, ucell,orb, info.kmesh_times, orb.get_Rmax(), Lmax ); - MGT.init_Gaunt_CH(Lmax); - MGT.init_Gaunt(Lmax); - m_jys_abfs.init_radial( jle, abfs, MGT ); + m_jys_abfs.init( jle, abfs, ucell,orb, info.kmesh_times ); #if TEST_EXX_RADIAL>=1 m_jys_abfs.init_radial_table(radial_R); #else @@ -168,28 +158,25 @@ void Exx_Opt_Orb::generate_matrix( if( TA==TB && IA==IB ) { const size_t T=TA, I=IA; - if(GlobalC::exx_info.info_ri.pca_threshold<=1) + if(!judge_orbs_empty(abfs)) { // < abfs | abfs >.I const std::vector>> ms_abfs_abfs_I = cal_I( ms_abfs_abfs, T,I,T,I ); // < lcaos lcaos | lcaos lcaos > - < lcaos lcaos | abfs > * < abfs | abfs >.I * < abfs | lcaos lcaos > const RI::Tensor m_lcaoslcaos_lcaoslcaos_proj = - cal_proj_22( - ms_lcaoslcaos_lcaoslcaos.at(T).at(I).at(T).at(I), + ms_lcaoslcaos_lcaoslcaos.at(T).at(I).at(T).at(I) - cal_mul_22( ms_lcaoslcaos_abfs.at(T).at(I).at(T).at(I), ms_abfs_abfs_I, ms_lcaoslcaos_abfs.at(T).at(I).at(T).at(I)); // < lcaos lcaos | jys > - < lcaos lcaos | abfs > * < abfs | abfs >.I * < abfs | jys > const std::vector> m_lcaoslcaos_jys_proj = - {cal_proj_21( - ms_lcaoslcaos_jys.at(T).at(I).at(T).at(I)[0], + {ms_lcaoslcaos_jys.at(T).at(I).at(T).at(I)[0] - cal_mul_21( ms_lcaoslcaos_abfs.at(T).at(I).at(T).at(I), ms_abfs_abfs_I, {ms_jys_abfs.at(T).at(I).at(T).at(I)})}; // < jys | jys > - < jys | abfs > * < abfs | abfs >.I * < abfs | jys > const std::vector>> m_jys_jys_proj = - {{cal_proj_11( - ms_jys_jys.at(T).at(I).at(T).at(I), + {{ms_jys_jys.at(T).at(I).at(T).at(I) - cal_mul_11( {ms_jys_abfs.at(T).at(I).at(T).at(I)}, ms_abfs_abfs_I, {ms_jys_abfs.at(T).at(I).at(T).at(I)})}}; @@ -197,11 +184,13 @@ void Exx_Opt_Orb::generate_matrix( info, ucell, kv, + jle.at(T).size()-1, + {jle.at(T).at(0).size()}, PARAM.globalv.global_out_dir+"/matrix-opt-abfs", m_lcaoslcaos_jys_proj, m_jys_jys_proj, m_lcaoslcaos_lcaoslcaos_proj, - TA, IA, TB, IB, + T, I, T, I, orb.cutoffs(), range_jys, index_jys ); } @@ -211,59 +200,54 @@ void Exx_Opt_Orb::generate_matrix( info, ucell, kv, + jle.at(T).size()-1, + {jle.at(T).at(0).size()}, PARAM.globalv.global_out_dir+"/matrix-opt-abfs", ms_lcaoslcaos_jys.at(T).at(I).at(T).at(I), {{ms_jys_jys.at(T).at(I).at(T).at(I)}}, ms_lcaoslcaos_lcaoslcaos.at(T).at(I).at(T).at(I), - TA, IA, TB, IB, + T, I, T, I, orb.cutoffs(), range_jys, index_jys ); } } else { - if(GlobalC::exx_info.info_ri.pca_threshold<=1) + if(!judge_orbs_empty(abfs)) { // < abfs | abfs >.I const std::vector>> ms_abfs_abfs_I = cal_I( ms_abfs_abfs, TA,IA,TB,IB ); // < lcaos lcaos | lcaos lcaos > - < lcaos lcaos | abfs > * < abfs | abfs >.I * < abfs | lcaos lcaos > const RI::Tensor m_lcaoslcaos_lcaoslcaos_proj = - cal_proj_22( - ms_lcaoslcaos_lcaoslcaos.at(TA).at(IA).at(TB).at(IB), + ms_lcaoslcaos_lcaoslcaos.at(TA).at(IA).at(TB).at(IB) - cal_mul_22( ms_lcaoslcaos_abfs.at(TA).at(IA).at(TB).at(IB), ms_abfs_abfs_I, ms_lcaoslcaos_abfs.at(TA).at(IA).at(TB).at(IB)); // < lcaos lcaos | jys > - < lcaos lcaos | abfs > * < abfs | abfs >.I * < abfs | jys > const std::vector> m_lcaoslcaos_jys_proj = - {cal_proj_21( - ms_lcaoslcaos_jys.at(TA).at(IA).at(TB).at(IB)[0], + {ms_lcaoslcaos_jys.at(TA).at(IA).at(TB).at(IB)[0] - cal_mul_21( ms_lcaoslcaos_abfs.at(TA).at(IA).at(TB).at(IB), ms_abfs_abfs_I, { ms_jys_abfs.at(TA).at(IA).at(TA).at(IA), ms_jys_abfs.at(TA).at(IA).at(TB).at(IB) }), - cal_proj_21( - ms_lcaoslcaos_jys.at(TA).at(IA).at(TB).at(IB)[1], + ms_lcaoslcaos_jys.at(TA).at(IA).at(TB).at(IB)[1] - cal_mul_21( ms_lcaoslcaos_abfs.at(TA).at(IA).at(TB).at(IB), ms_abfs_abfs_I, { ms_jys_abfs.at(TB).at(IB).at(TA).at(IA), ms_jys_abfs.at(TB).at(IB).at(TB).at(IB) })}; // < jys | jys > - < jys | abfs > * < abfs | abfs >.I * < abfs | jys > const std::vector>> m_jys_jys_proj = - {{cal_proj_11( - ms_jys_jys.at(TA).at(IA).at(TA).at(IA), + {{ms_jys_jys.at(TA).at(IA).at(TA).at(IA) - cal_mul_11( { ms_jys_abfs.at(TA).at(IA).at(TA).at(IA), ms_jys_abfs.at(TA).at(IA).at(TB).at(IB) }, ms_abfs_abfs_I, { ms_jys_abfs.at(TA).at(IA).at(TA).at(IA), ms_jys_abfs.at(TA).at(IA).at(TB).at(IB) }), - cal_proj_11( - ms_jys_jys.at(TA).at(IA).at(TB).at(IB), + ms_jys_jys.at(TA).at(IA).at(TB).at(IB) - cal_mul_11( { ms_jys_abfs.at(TA).at(IA).at(TA).at(IA), ms_jys_abfs.at(TA).at(IA).at(TB).at(IB) }, ms_abfs_abfs_I, { ms_jys_abfs.at(TB).at(IB).at(TA).at(IA), ms_jys_abfs.at(TB).at(IB).at(TB).at(IB) }) }, - {cal_proj_11( - ms_jys_jys.at(TB).at(IB).at(TA).at(IA), + {ms_jys_jys.at(TB).at(IB).at(TA).at(IA) - cal_mul_11( { ms_jys_abfs.at(TB).at(IB).at(TA).at(IA), ms_jys_abfs.at(TB).at(IB).at(TB).at(IB) }, ms_abfs_abfs_I, { ms_jys_abfs.at(TA).at(IA).at(TA).at(IA), ms_jys_abfs.at(TA).at(IA).at(TB).at(IB) }), - cal_proj_11( - ms_jys_jys.at(TB).at(IB).at(TB).at(IB), + ms_jys_jys.at(TB).at(IB).at(TB).at(IB) - cal_mul_11( { ms_jys_abfs.at(TB).at(IB).at(TA).at(IA), ms_jys_abfs.at(TB).at(IB).at(TB).at(IB) }, ms_abfs_abfs_I, { ms_jys_abfs.at(TB).at(IB).at(TA).at(IA), ms_jys_abfs.at(TB).at(IB).at(TB).at(IB) }) }}; @@ -271,6 +255,8 @@ void Exx_Opt_Orb::generate_matrix( info, ucell, kv, + std::max(jle.at(TA).size(), jle.at(TB).size())-1, + {jle.at(TA).at(0).size(), jle.at(TB).at(0).size()}, PARAM.globalv.global_out_dir+"/matrix-opt-abfs", m_lcaoslcaos_jys_proj, m_jys_jys_proj, @@ -285,6 +271,8 @@ void Exx_Opt_Orb::generate_matrix( info, ucell, kv, + std::max(jle.at(TA).size(), jle.at(TB).size())-1, + {jle.at(TA).at(0).size(), jle.at(TB).at(0).size()}, PARAM.globalv.global_out_dir+"/matrix-opt-abfs", ms_lcaoslcaos_jys.at(TA).at(IA).at(TB).at(IB), {{ms_jys_jys.at(TA).at(IA).at(TA).at(IA), ms_jys_jys.at(TA).at(IA).at(TB).at(IB)}, @@ -301,86 +289,94 @@ void Exx_Opt_Orb::generate_matrix( } } -// m_big - m_left * m_middle * m_right.T -RI::Tensor Exx_Opt_Orb::cal_proj_22( - const RI::Tensor & m_big, +// m_left * m_middle * m_right.T +RI::Tensor Exx_Opt_Orb::cal_mul_22( const std::vector> & m_left, const std::vector>> & m_middle, const std::vector> & m_right ) const { - ModuleBase::TITLE("Exx_Opt_Orb::cal_proj_22"); - RI::Tensor m_proj = m_big.copy(); + ModuleBase::TITLE("Exx_Opt_Orb::cal_mul_22"); + RI::Tensor m_mul; for( size_t il=0; il!=m_left.size(); ++il ) { for( size_t ir=0; ir!=m_right.size(); ++ir ) { - // m_proj = m_proj - m_left[il] * m_middle[il][ir] * m_right[ir].T; + // m_mul += m_left[il] * m_middle[il][ir] * m_right[ir].T; const RI::Tensor m_lm = RI::Tensor_Multiply::x0x1y1_x0x1a_ay1(m_left[il], m_middle[il][ir]); const RI::Tensor m_lmr = RI::Tensor_Multiply::x0x1y0y1_x0x1a_y0y1a(m_lm, m_right[ir]); - m_proj -= m_lmr; + if(m_mul.empty()) + { m_mul = std::move(m_lmr); } + else + { m_mul += m_lmr; } } } - return m_proj; + return m_mul; } -RI::Tensor Exx_Opt_Orb::cal_proj_21( - const RI::Tensor & m_big, +RI::Tensor Exx_Opt_Orb::cal_mul_21( const std::vector> & m_left, const std::vector>> & m_middle, const std::vector> & m_right ) const { - ModuleBase::TITLE("Exx_Opt_Orb::cal_proj_21"); - RI::Tensor m_proj = m_big.copy(); + ModuleBase::TITLE("Exx_Opt_Orb::cal_mul_21"); + RI::Tensor m_mul; for( size_t il=0; il!=m_left.size(); ++il ) { for( size_t ir=0; ir!=m_right.size(); ++ir ) { - // m_proj = m_proj - m_left[il] * m_middle[il][ir] * m_right[ir].T; + // m_mul += m_left[il] * m_middle[il][ir] * m_right[ir].T; const RI::Tensor m_lm = RI::Tensor_Multiply::x0x1y1_x0x1a_ay1(m_left[il], m_middle[il][ir]); const RI::Tensor m_lmr = RI::Tensor_Multiply::x0x1y0_x0x1a_y0a(m_lm, m_right[ir]); - m_proj -= m_lmr; + if(m_mul.empty()) + { m_mul = std::move(m_lmr); } + else + { m_mul += m_lmr; } } } - return m_proj; + return m_mul; } -RI::Tensor Exx_Opt_Orb::cal_proj_12( - const RI::Tensor & m_big, +RI::Tensor Exx_Opt_Orb::cal_mul_12( const std::vector> & m_left, const std::vector>> & m_middle, const std::vector> & m_right ) const { - ModuleBase::TITLE("Exx_Opt_Orb::cal_proj_12"); - RI::Tensor m_proj = m_big.copy(); + ModuleBase::TITLE("Exx_Opt_Orb::cal_mul_12"); + RI::Tensor m_mul; for( size_t il=0; il!=m_left.size(); ++il ) { for( size_t ir=0; ir!=m_right.size(); ++ir ) { - // m_proj = m_proj - m_left[il] * m_middle[il][ir] * m_right[ir].T; + // m_mul += m_left[il] * m_middle[il][ir] * m_right[ir].T; const RI::Tensor m_lm = RI::Tensor_Multiply::x0y1_x0a_ay1(m_left[il], m_middle[il][ir]); const RI::Tensor m_lmr = RI::Tensor_Multiply::x0y0y1_x0a_y0y1a(m_lm, m_right[ir]); - m_proj -= m_lmr; + if(m_mul.empty()) + { m_mul = std::move(m_lmr); } + else + { m_mul += m_lmr; } } } - return m_proj; + return m_mul; } -RI::Tensor Exx_Opt_Orb::cal_proj_11( - const RI::Tensor & m_big, +RI::Tensor Exx_Opt_Orb::cal_mul_11( const std::vector> & m_left, const std::vector>> & m_middle, const std::vector> & m_right ) const { - ModuleBase::TITLE("Exx_Opt_Orb::cal_proj_11"); - RI::Tensor m_proj = m_big.copy(); + ModuleBase::TITLE("Exx_Opt_Orb::cal_mul_11"); + RI::Tensor m_mul; for( size_t il=0; il!=m_left.size(); ++il ) { for( size_t ir=0; ir!=m_right.size(); ++ir ) { - // m_proj = m_proj - m_left[il] * m_middle[il][ir] * m_right[ir].T; + // m_mul += m_left[il] * m_middle[il][ir] * m_right[ir].T; const RI::Tensor m_lm = RI::Tensor_Multiply::x0y1_x0a_ay1(m_left[il], m_middle[il][ir]); const RI::Tensor m_lmr = RI::Tensor_Multiply::x0y0_x0a_y0a(m_lm, m_right[ir]); - m_proj -= m_lmr; + if(m_mul.empty()) + { m_mul = std::move(m_lmr); } + else + { m_mul += m_lmr; } } } - return m_proj; + return m_mul; } std::vector>> Exx_Opt_Orb::cal_I( diff --git a/source/source_lcao/module_ri/exx_opt_orb.h b/source/source_lcao/module_ri/exx_opt_orb.h index 2520a584ba..f3252877ce 100644 --- a/source/source_lcao/module_ri/exx_opt_orb.h +++ b/source/source_lcao/module_ri/exx_opt_orb.h @@ -23,36 +23,34 @@ class Exx_Opt_Orb std::vector>> cal_I( const std::map>>>> &ms, const size_t TA, const size_t IA, const size_t TB, const size_t IB ) const; - RI::Tensor cal_proj_22( - const RI::Tensor & m_big, + RI::Tensor cal_mul_22( const std::vector> & m_left, const std::vector>> & m_middle, const std::vector> & m_right ) const; - RI::Tensor cal_proj_21( - const RI::Tensor & m_big, + RI::Tensor cal_mul_21( const std::vector> & m_left, const std::vector>> & m_middle, const std::vector> & m_right ) const; - RI::Tensor cal_proj_12( - const RI::Tensor & m_big, + RI::Tensor cal_mul_12( const std::vector> & m_left, const std::vector>> & m_middle, const std::vector> & m_right ) const; - RI::Tensor cal_proj_11( - const RI::Tensor & m_big, + RI::Tensor cal_mul_11( const std::vector> & m_left, const std::vector>> & m_middle, const std::vector> & m_right ) const; - void print_matrix( + void print_matrix( const Exx_Info::Exx_Info_Opt_ABFs &info, const UnitCell& ucell, - const K_Vectors &kv, - const std::string& file_name, + const K_Vectors &kv, + const int Lmax, + const std::vector &ecut_number, + const std::string& file_name, const std::vector> &matrix_Q, const std::vector>> &matrix_S, const RI::Tensor &matrix_V, const size_t TA, const size_t IA, const size_t TB, const size_t IB, - const std::vector& orb_cutoff, + const std::vector& orb_cutoff, const ModuleBase::Element_Basis_Index::Range &range_jles, const ModuleBase::Element_Basis_Index::IndexLNM &index_jles) const; std::map>> get_radial_R(const UnitCell& ucell) const; diff --git a/source/source_lcao/module_ri/module_exx_symmetry/CMakeLists.txt b/source/source_lcao/module_ri/module_exx_symmetry/CMakeLists.txt index 2972f2c1d8..b66e7f5c7a 100644 --- a/source/source_lcao/module_ri/module_exx_symmetry/CMakeLists.txt +++ b/source/source_lcao/module_ri/module_exx_symmetry/CMakeLists.txt @@ -4,6 +4,7 @@ if (ENABLE_LIBRI) irreducible_sector.cpp irreducible_sector_bvk.cpp symmetry_rotation.cpp + symmetry_rotation_output.cpp ) add_library( module_exx_symmetry diff --git a/source/source_lcao/module_ri/module_exx_symmetry/irreducible_sector.cpp b/source/source_lcao/module_ri/module_exx_symmetry/irreducible_sector.cpp index c484712043..f93b8aa040 100644 --- a/source/source_lcao/module_ri/module_exx_symmetry/irreducible_sector.cpp +++ b/source/source_lcao/module_ri/module_exx_symmetry/irreducible_sector.cpp @@ -148,7 +148,7 @@ namespace ModuleSymmetry if(GlobalV::MY_RANK == 0) { std::ofstream ofs; - ofs.open(PARAM.globalv.global_out_dir + "irreducible_sector.dat"); + ofs.open(PARAM.globalv.global_out_dir + "irreducible_sector.txt"); for (auto& irap_irR : this->irreducible_sector_) { for (auto& irR : irap_irR.second){ofs << "atompair (" << irap_irR.first.first << ", " << irap_irR.first.second << "), R = (" << irR[0] << ", " << irR[1] << ", " << irR[2] << ") \n";} @@ -235,4 +235,4 @@ namespace ModuleSymmetry // this->output_sector_star(); this->write_irreducible_sector(); } -} \ No newline at end of file +} diff --git a/source/source_lcao/module_ri/module_exx_symmetry/irreducible_sector.h b/source/source_lcao/module_ri/module_exx_symmetry/irreducible_sector.h index 8d9e3c71bf..9252273bd5 100644 --- a/source/source_lcao/module_ri/module_exx_symmetry/irreducible_sector.h +++ b/source/source_lcao/module_ri/module_exx_symmetry/irreducible_sector.h @@ -68,6 +68,17 @@ namespace ModuleSymmetry const ModuleBase::Matrix3& gmatd, const TCdouble gtransd, const TCdouble& posd_a1, const TCdouble& posd_a2)const; + // Getting calculated return lattice + TCdouble get_return_lattice(const int iat, const int isym) const + { + if (iat < 0 || iat >= static_cast(this->return_lattice_.size())) { + throw std::out_of_range("Invalid atom index in get_return_lattice"); + } + if (isym < 0 || isym >= static_cast(this->return_lattice_[iat].size())) { + throw std::out_of_range("Invalid symmetry index in get_return_lattice"); + } + return this->return_lattice_[iat][isym]; + } protected: void cal_return_lattice_all(const Symmetry& symm, const Atom* atoms, const Statistics& st); diff --git a/source/source_lcao/module_ri/module_exx_symmetry/irreducible_sector_bvk.cpp b/source/source_lcao/module_ri/module_exx_symmetry/irreducible_sector_bvk.cpp index 50df31b360..8b8879ee1d 100644 --- a/source/source_lcao/module_ri/module_exx_symmetry/irreducible_sector_bvk.cpp +++ b/source/source_lcao/module_ri/module_exx_symmetry/irreducible_sector_bvk.cpp @@ -102,8 +102,8 @@ namespace ModuleSymmetry } // analyze bravis and generate optimized lattice for minimal BvK lattice - double cel_const[6]; - double pre_const[6]; + double cel_const[6] = {0.0}; + double pre_const[6] = {0.0}; int bvk_brav = 0; std::string bvk_latname=""; // bvk_brav = symm.standard_lat(s1, s2, s3, cel_const); //not enough, optimal lattice may change after cell-extension @@ -126,10 +126,10 @@ namespace ModuleSymmetry // generate symmetry operation of the BvK lattice using the original optlat-direct coordinates std::vector bvk_op(48); - int bvk_nop; + int bvk_nop = 0; symm.setgroup(bvk_op.data(), bvk_nop, bvk_brav); bvk_op.resize(bvk_nop); - int bvk_npg, bvk_nsg, bvk_pgnum, bvk_sgnum; + int bvk_npg = 0, bvk_nsg = 0, bvk_pgnum = 0, bvk_sgnum = 0; std::string bvk_pgname, bvk_sgname; std::vector bvk_gmatrix(48); std::vector> bvk_gtrans(48); diff --git a/source/source_lcao/module_ri/module_exx_symmetry/symmetry_rotation.cpp b/source/source_lcao/module_ri/module_exx_symmetry/symmetry_rotation.cpp index 702b35b666..27929737f6 100644 --- a/source/source_lcao/module_ri/module_exx_symmetry/symmetry_rotation.cpp +++ b/source/source_lcao/module_ri/module_exx_symmetry/symmetry_rotation.cpp @@ -8,17 +8,13 @@ #include "source_base/timer.h" #include "source_base/mathzone.h" -#include "source_pw/module_pwdft/global.h" - namespace ModuleSymmetry { void Symmetry_rotation::set_Cs_rotation(const std::vector>& abfs_l_nchi) { this->reduce_Cs_ = true; this->abfs_l_nchi_ = abfs_l_nchi; - this->abfs_Lmax_ = 0; - for (auto& abfs_T : abfs_l_nchi) { this->abfs_Lmax_ = std::max(this->abfs_Lmax_, static_cast(abfs_T.size()) - 1); -} + for (auto& abfs_T : abfs_l_nchi) { this->abfs_Lmax_ = std::max(this->abfs_Lmax_, static_cast(abfs_T.size()) - 1); } } void Symmetry_rotation::cal_Ms(const K_Vectors& kv, //const std::vector>& kstars, @@ -36,9 +32,8 @@ namespace ModuleSymmetry } // 1. calculate the rotation matrix in real spherical harmonics representation for each symmetry operation: [T_l (isym)]_mm' std::vector gmatc(nsym_); - for (int i = 0;i < nsym_;++i) { gmatc[i] = this->irs_.direct_to_cartesian(ucell.symm.gmatrix[i], ucell.latvec); -} - this->cal_rotmat_Slm(gmatc.data(), reduce_Cs_ ? std::max(this->abfs_Lmax_, ucell.lmax) : ucell.lmax); + for (int i = 0;i < nsym_;++i) { gmatc[i] = this->irs_.direct_to_cartesian(ucell.symm.gmatrix[i], ucell.latvec); } + this->cal_rotmat_Slm(gmatc.data(), std::max(this->abfs_Lmax_, ucell.lmax)); // 2. calculate the rotation matrix in AO-representation for each ibz_kpoint and symmetry operation: M(k, isym) auto restrict_kpt = [](const TCdouble& kvec, const double& symm_prec) -> TCdouble @@ -47,12 +42,9 @@ namespace ModuleSymmetry kvec_res.x = fmod(kvec.x + 100.5 - 0.5 * symm_prec, 1) - 0.5 + 0.5 * symm_prec; kvec_res.y = fmod(kvec.y + 100.5 - 0.5 * symm_prec, 1) - 0.5 + 0.5 * symm_prec; kvec_res.z = fmod(kvec.z + 100.5 - 0.5 * symm_prec, 1) - 0.5 + 0.5 * symm_prec; - if (std::abs(kvec_res.x) < symm_prec) { kvec_res.x = 0.0; -} - if (std::abs(kvec_res.y) < symm_prec) { kvec_res.y = 0.0; -} - if (std::abs(kvec_res.z) < symm_prec) { kvec_res.z = 0.0; -} + if (std::abs(kvec_res.x) < symm_prec) { kvec_res.x = 0.0; } + if (std::abs(kvec_res.y) < symm_prec) { kvec_res.y = 0.0; } + if (std::abs(kvec_res.z) < symm_prec) { kvec_res.z = 0.0; } return kvec_res; }; int nks_ibz = kv.kstars.size(); // kv.nks = 2 * kv.nks_ibz when nspin=2 @@ -211,7 +203,7 @@ namespace ModuleSymmetry TCdouble Symmetry_rotation::get_euler_angle(const ModuleBase::Matrix3& gmatc) const { double threshold = this->eps_; - double alpha, beta, gamma; + double alpha = 0.0, beta = 0.0, gamma = 0.0; if (std::fabs(gmatc.e32) > threshold || std::fabs(gmatc.e31) > threshold) // sin(beta) is not zero { // use the 2-angle elements to get alpha and gamma @@ -423,24 +415,24 @@ namespace ModuleSymmetry if (TRS_conj) { // D^T* = M^T [M^T (D^T)^T]^\dagger - pzgemm_(&transpose, &transpose, &nbasis, &nbasis, &nbasis, - &alpha, this->Ms_[ik_ibz].at(isym).data(), &i1, &i1, pv.desc, DMkibz.data(), &i1, &i1, pv.desc, - &beta, DMkibz_M.data(), &i1, &i1, pv.desc); + ScalapackConnector::gemm(transpose, transpose, nbasis, nbasis, nbasis, + alpha, this->Ms_[ik_ibz].at(isym).data(), i1, i1, pv.desc, DMkibz.data(), i1, i1, pv.desc, + beta, DMkibz_M.data(), i1, i1, pv.desc); alpha.real(1.0 / static_cast(kstar_size)); - pzgemm_(&transpose, &dagger, &nbasis, &nbasis, &nbasis, - &alpha, this->Ms_[ik_ibz].at(isym).data(), &i1, &i1, pv.desc, DMkibz_M.data(), &i1, &i1, pv.desc, - &beta, DMk.data(), &i1, &i1, pv.desc); + ScalapackConnector::gemm(transpose, dagger, nbasis, nbasis, nbasis, + alpha, this->Ms_[ik_ibz].at(isym).data(), i1, i1, pv.desc, DMkibz_M.data(), i1, i1, pv.desc, + beta, DMk.data(), i1, i1, pv.desc); } else { // D^T = M^\daggger D^T M - pzgemm_(&dagger, ¬rans, &nbasis, &nbasis, &nbasis, - &alpha, this->Ms_[ik_ibz].at(isym).data(), &i1, &i1, pv.desc, DMkibz.data(), &i1, &i1, pv.desc, - &beta, DMkibz_M.data(), &i1, &i1, pv.desc); + ScalapackConnector::gemm(dagger, notrans, nbasis, nbasis, nbasis, + alpha, this->Ms_[ik_ibz].at(isym).data(), i1, i1, pv.desc, DMkibz.data(), i1, i1, pv.desc, + beta, DMkibz_M.data(), i1, i1, pv.desc); alpha.real(1.0 / static_cast(kstar_size)); - pzgemm_(¬rans, ¬rans, &nbasis, &nbasis, &nbasis, - &alpha, DMkibz_M.data(), &i1, &i1, pv.desc, this->Ms_[ik_ibz].at(isym).data(), &i1, &i1, pv.desc, - &beta, DMk.data(), &i1, &i1, pv.desc); + ScalapackConnector::gemm(notrans, notrans, nbasis, nbasis, nbasis, + alpha, DMkibz_M.data(), i1, i1, pv.desc, this->Ms_[ik_ibz].at(isym).data(), i1, i1, pv.desc, + beta, DMk.data(), i1, i1, pv.desc); } return DMk; } @@ -485,4 +477,4 @@ namespace ModuleSymmetry return RI_Util::get_Born_von_Karmen_cells(period); } -} \ No newline at end of file +} diff --git a/source/source_lcao/module_ri/module_exx_symmetry/symmetry_rotation.h b/source/source_lcao/module_ri/module_exx_symmetry/symmetry_rotation.h index 229d4666f0..920de546d3 100644 --- a/source/source_lcao/module_ri/module_exx_symmetry/symmetry_rotation.h +++ b/source/source_lcao/module_ri/module_exx_symmetry/symmetry_rotation.h @@ -27,6 +27,13 @@ namespace ModuleSymmetry { return this->irs_.get_return_lattice(symm, gmatd, gtransd, posd_a1, posd_a2); } + TCdouble get_return_lattice(const int iat, const int isym) const + { + return this->irs_.get_return_lattice(iat, isym); + } + /// the rotation matrix under the basis of S_l^m. size: [nsym][lmax][nm*nm] + const std::vector>>>& rotmat_Slm = this->rotmat_Slm_; + const int& abfs_Lmax = this->abfs_Lmax_; //-------------------------------------------------------------------------------- // setters void find_irreducible_sector(const Symmetry& symm, const Atom* atoms, const Statistics& st, @@ -34,6 +41,7 @@ namespace ModuleSymmetry { this->irs_.find_irreducible_sector(symm, atoms, st, Rs, period, lat); } + void set_abfs_Lmax(const int l) { this->abfs_Lmax_ = l; } void set_Cs_rotation(const std::vector>& abfs_l_nchi); //-------------------------------------------------------------------------------- /// functions to contruct rotation matrix in AO-representation @@ -167,6 +175,20 @@ namespace ModuleSymmetry Irreducible_Sector irs_; }; + + template std::string vec3_fmt(const T& x, const T& y, const T& z) + { + return "(" + std::to_string(x) + " " + std::to_string(y) + " " + std::to_string(z) + ")"; + } + template std::string vec3_fmt(const ModuleBase::Vector3& v) + { + return vec3_fmt(v.x, v.y, v.z); + } + // output k stars and the rotation matrices of Bloch orbitals + void print_symrot_info_k(const ModuleSymmetry::Symmetry_rotation& symrot, + const K_Vectors& kv, const UnitCell& ucell); + void print_symrot_info_R(const Symmetry_rotation& symrot, const Symmetry& symm, + const int lmax_ao, const std::vector& Rs); } #include "symmetry_rotation_R.hpp" diff --git a/source/source_lcao/module_ri/module_exx_symmetry/symmetry_rotation_output.cpp b/source/source_lcao/module_ri/module_exx_symmetry/symmetry_rotation_output.cpp new file mode 100644 index 0000000000..e92f4ad367 --- /dev/null +++ b/source/source_lcao/module_ri/module_exx_symmetry/symmetry_rotation_output.cpp @@ -0,0 +1,100 @@ +#include "./symmetry_rotation.h" +namespace ModuleSymmetry +{ + std::string mat3_fmt(const ModuleBase::Matrix3& m) + { + auto s = [](double x) { return std::to_string(x); }; + return s(m.e11) + " " + s(m.e12) + " " + s(m.e13) + "\n" + + s(m.e21) + " " + s(m.e22) + " " + s(m.e23) + "\n" + + s(m.e31) + " " + s(m.e32) + " " + s(m.e33); + } + + // needs to calculate Ts from l=0 to l=max(l_ao,l_abf) before + + void print_symrot_info_R(const Symmetry_rotation& symrot, const Symmetry& symm, + const int lmax_ao, const std::vector& Rs) + { + ModuleBase::TITLE("ModuleSymmetry", "print_symrot_info_R"); + std::ofstream ofs(PARAM.globalv.global_out_dir + "symrot_R.txt"); + // Print the irreducible sector (to be optimized) + ofs << "Number of irreducible sector: " << symrot.get_irreducible_sector().size() << std::endl; + ofs << "Lmax of AOs: " << lmax_ao << "\n"; + ofs << "Lmax of ABFs: " << symrot.abfs_Lmax << "\n"; + // print AO rotation matrix T + ofs << "Format:\n" + << "The index of the symmetry operation\n" + << "The rotation matrix of this symmetry operation (3*3)\n" + << "(The translation vector of this symmetry operation)\n" + << "Orbital rotation matrix (T) of each angular momentum with size ((2l + 1) * (2l + 1)) \n\n"; + const int lmax = std::max(lmax_ao, symrot.abfs_Lmax); + for (int isym = 0;isym < symm.nrotk;++isym) + { + ofs << isym << "\n" << mat3_fmt(symm.gmatrix[isym]) << "\n" + << vec3_fmt(symm.gtrans[isym]) << "\n"; + for (int l=0;l <= lmax;++l) + { + const int nm = 2 * l + 1; + // ofs << "l = " << l << ", nm = " << nm << "\n"; + const auto& T_block = symrot.rotmat_Slm[isym][l]; + for (int m1 = 0;m1 < nm;++m1) + { + for (int m2 = 0;m2 < nm;++m2) + { + //note: the order of m in orbitals may be different from increasing + //note: is Ts row- or col-major ? + ofs << T_block(m1, m2); + } + ofs << "\n"; + } + } + } + ofs.close(); + } + + void print_symrot_info_k(const Symmetry_rotation& symrot, const K_Vectors& kv, const UnitCell& ucell) + { + ModuleBase::TITLE("Symmetry_rotation", "print_symrot_info_k"); + std::ofstream ofs(PARAM.globalv.global_out_dir + "symrot_k.txt"); + ofs << "Number of IBZ k-points (k stars): " << kv.kstars.size() << std::endl; + ofs << "Format:\n" << "The symmetry operation index to the irreducible k-point. For the irreducible k-points, isym=0.\n\n" + << "(The direct coordinate of the original k-point)\n" + << "For each atom: \n" + << "- Original index->transformed index, type and the Lmax\n" + << "- Bloch orbital rotation matrix (M) of the given operation and atom, for each angular momentum\n\n"; + for (int istar = 0;istar < kv.kstars.size();++istar) + { + ofs << "Star " << istar + 1 << " of IBZ k-point " << vec3_fmt(kv.kstars[istar].at(0)) << ":\n"; + for (const auto& isym_kvd : kv.kstars[istar]) + { + const int& isym = isym_kvd.first; + ofs << isym << "\n" << vec3_fmt(isym_kvd.second) << "\n"; + for (int iat1 =0;iat1 < ucell.nat;++iat1) + { + const int it = ucell.iat2it[iat1]; // it1=it2 + const int lmax = ucell.atoms[it].nwl; + const int iat2 = ucell.symm.get_rotated_atom(isym, iat1); + const double arg = 2 * ModuleBase::PI * isym_kvd.second * symrot.get_return_lattice(iat1,isym); + std::complexphase_factor = std::complex(std::cos(arg), std::sin(arg)); + ofs << "atom " << iat1 + 1 << " -> " << iat2 + 1 << " of type " << it + 1 << " with Lmax= " << lmax << "\n"; + for (int l = 0;l < lmax + 1;++l) + { + const int nm = 2 * l + 1; + const auto& m_block = symrot.rotmat_Slm[isym][l]; + for (int m1 = 0;m1 < nm;++m1) + { + // const int m1_start = m2 * nm; + for (int m2 = 0;m2 < nm;++m2) + { + ofs << phase_factor * m_block(m1, m2); // row-major + } + ofs << "\n"; + } + }// end l + } // end iat + } // end (k, op) + ofs << "\n"; + } // end star + ofs.close(); + ModuleBase::timer::tick("Symmetry_rotation", "print_symrot_info_k"); + } +} \ No newline at end of file diff --git a/source/source_lcao/module_ri/module_exx_symmetry/test/CMakeLists.txt b/source/source_lcao/module_ri/module_exx_symmetry/test/CMakeLists.txt index 6a3a263dc9..822bd6afde 100644 --- a/source/source_lcao/module_ri/module_exx_symmetry/test/CMakeLists.txt +++ b/source/source_lcao/module_ri/module_exx_symmetry/test/CMakeLists.txt @@ -4,7 +4,7 @@ remove_definitions(-D__ROCM) AddTest( TARGET MODULE_RI_EXX_SYMMETRY_rotation LIBS base ${math_libs} device symmetry neighbor parameter - SOURCES symmetry_rotation_test.cpp ../symmetry_rotation.cpp ../irreducible_sector.cpp ../irreducible_sector_bvk.cpp + SOURCES symmetry_rotation_test.cpp ../symmetry_rotation.cpp ../symmetry_rotation_output.cpp ../irreducible_sector.cpp ../irreducible_sector_bvk.cpp ../../../../source_basis/module_ao/parallel_orbitals.cpp - ../../../../source_io/output.cpp + ../../../../source_io/module_output/output.cpp ) \ No newline at end of file diff --git a/source/source_lcao/module_ri/module_exx_symmetry/test/symmetry_rotation_test.cpp b/source/source_lcao/module_ri/module_exx_symmetry/test/symmetry_rotation_test.cpp index 809a5dfeb7..20884b1beb 100644 --- a/source/source_lcao/module_ri/module_exx_symmetry/test/symmetry_rotation_test.cpp +++ b/source/source_lcao/module_ri/module_exx_symmetry/test/symmetry_rotation_test.cpp @@ -33,6 +33,10 @@ InfoNonlocal::InfoNonlocal() {} InfoNonlocal::~InfoNonlocal() {} Magnetism::Magnetism() {} Magnetism::~Magnetism() {} +SepPot::SepPot(){} +SepPot::~SepPot(){} +Sep_Cell::Sep_Cell() noexcept {} +Sep_Cell::~Sep_Cell() noexcept {} class SymmetryRotationTest : public testing::Test { diff --git a/source/source_lcao/module_rt/CMakeLists.txt b/source/source_lcao/module_rt/CMakeLists.txt index 58bc834a5f..a1056c3347 100644 --- a/source/source_lcao/module_rt/CMakeLists.txt +++ b/source/source_lcao/module_rt/CMakeLists.txt @@ -15,8 +15,18 @@ if(ENABLE_LCAO) snap_psibeta_half_tddft.cpp td_folding.cpp solve_propagation.cpp + boundary_fix.cpp ) + if(USE_CUDA) + list(APPEND objects + kernels/cuda/snap_psibeta_kernel.cu + kernels/cuda/snap_psibeta_gpu.cu + kernels/cuda/norm_psi_kernel.cu + kernels/cuda/band_energy_kernel.cu + ) + endif() + add_library( tddft OBJECT diff --git a/source/source_lcao/module_rt/band_energy.cpp b/source/source_lcao/module_rt/band_energy.cpp index 8767d37405..601840b285 100644 --- a/source/source_lcao/module_rt/band_energy.cpp +++ b/source/source_lcao/module_rt/band_energy.cpp @@ -4,6 +4,10 @@ #include "source_base/module_container/ATen/kernels/blas.h" #include "source_base/module_external/scalapack_connector.h" +#ifdef __CUBLASMP +#include "kernels/cuda/band_energy_kernel.cuh" +#endif + #include #include @@ -96,9 +100,15 @@ void compute_ekb(const Parallel_Orbitals* pv, { bb = 0.0; } - if (aa > 0.0 || bb > 0.0) + if (std::abs(aa) > 0.0 || std::abs(bb) > 0.0) { - ofs_running << i << " " << j << " " << aa << "+" << bb << "i " << std::endl; + std::streamsize original_precision = ofs_running.precision(); + ofs_running << std::fixed << std::setprecision(8); + ofs_running << "i = " << std::setw(2) << i << ", j = " << std::setw(2) << j + << ", Eij = " << std::setw(12) << aa << " + " << std::setw(12) << bb << " i" + << std::endl; + ofs_running.unsetf(std::ios_base::fixed); + ofs_running.precision(original_precision); } } } @@ -159,134 +169,226 @@ void compute_ekb_tensor(const Parallel_Orbitals* pv, const ct::Tensor& Htmp, const ct::Tensor& psi_k, ct::Tensor& ekb, - std::ofstream& ofs_running) + std::ofstream& ofs_running, + CublasMpResources& cublas_res) { - assert(pv->nloc_wfc > 0 && pv->nloc > 0); - - // Create Tensor objects for temporary data - ct::Tensor tmp1(ct::DataType::DT_COMPLEX_DOUBLE, ct::DeviceType::CpuDevice, ct::TensorShape({pv->nloc_wfc})); - tmp1.zero(); - - ct::Tensor eij(ct::DataType::DT_COMPLEX_DOUBLE, ct::DeviceType::CpuDevice, ct::TensorShape({pv->nloc})); - eij.zero(); - - // Perform matrix multiplication: tmp1 = Htmp * psi_k - ScalapackConnector::gemm('N', - 'N', - nlocal, - nband, - nlocal, - 1.0, - Htmp.data>(), - 1, - 1, - pv->desc, - psi_k.data>(), - 1, - 1, - pv->desc_wfc, - 0.0, - tmp1.data>(), - 1, - 1, - pv->desc_wfc); - - // Perform matrix multiplication: eij = psi_k^dagger * tmp1 - ScalapackConnector::gemm('C', - 'N', - nband, - nband, - nlocal, - 1.0, - psi_k.data>(), - 1, - 1, - pv->desc_wfc, - tmp1.data>(), - 1, - 1, - pv->desc_wfc, - 0.0, - eij.data>(), - 1, - 1, - pv->desc_Eij); - - if (PARAM.inp.td_print_eij >= 0.0) +#ifdef __CUBLASMP + // 1. Resource validation + if (!cublas_res.is_initialized || cublas_res.cublasmp_grid == nullptr) { - ofs_running - << "------------------------------------------------------------------------------------------------" - << std::endl; - ofs_running << " Eij:" << std::endl; - for (int i = 0; i < pv->nrow_bands; i++) - { - const int in = i * pv->ncol; - for (int j = 0; j < pv->ncol_bands; j++) - { - double aa = eij.data>()[in + j].real(); - double bb = eij.data>()[in + j].imag(); - if (std::abs(aa) < PARAM.inp.td_print_eij) - { - aa = 0.0; - } - if (std::abs(bb) < PARAM.inp.td_print_eij) - { - bb = 0.0; - } - if (aa > 0.0 || bb > 0.0) - { - ofs_running << i << " " << j << " " << aa << "+" << bb << "i " << std::endl; - } - } - } - ofs_running << std::endl; - ofs_running - << "------------------------------------------------------------------------------------------------" - << std::endl; + return; } - int info = 0; - int naroc[2] = {0, 0}; + assert(pv->nloc_wfc > 0 && pv->nloc > 0); + assert(Htmp.device_type() == ct::DeviceType::GpuDevice); + assert(psi_k.device_type() == ct::DeviceType::GpuDevice); + assert(ekb.device_type() == ct::DeviceType::GpuDevice); - // Create a Tensor for eii - assert(nband > 0); - ct::Tensor eii(ct::DataType::DT_DOUBLE, ct::DeviceType::CpuDevice, ct::TensorShape({nband})); - eii.zero(); + // 2. Data Pointers + void* d_H = static_cast(const_cast*>(Htmp.data>())); + void* d_Psi = static_cast(const_cast*>(psi_k.data>())); - for (int iprow = 0; iprow < pv->dim0; ++iprow) - { - for (int ipcol = 0; ipcol < pv->dim1; ++ipcol) - { - if (iprow == pv->coord[0] && ipcol == pv->coord[1]) - { - naroc[0] = pv->nrow; - naroc[1] = pv->ncol; - for (int j = 0; j < naroc[1]; ++j) - { - int igcol = globalIndex(j, pv->nb, pv->dim1, ipcol); - if (igcol >= nband) - { - continue; - } - for (int i = 0; i < naroc[0]; ++i) - { - int igrow = globalIndex(i, pv->nb, pv->dim0, iprow); - if (igrow >= nband) - { - continue; - } - if (igcol == igrow) - { - eii.data()[igcol] = eij.data>()[j * naroc[0] + i].real(); - } - } - } - } - } // loop ipcol - } // loop iprow + int64_t psi_elems = psi_k.NumElements(); + ct::Tensor Tmp1_gpu(ct::DataType::DT_COMPLEX_DOUBLE, ct::DeviceType::GpuDevice, ct::TensorShape({psi_elems})); + void* d_Tmp1 = static_cast(Tmp1_gpu.data>()); + + int64_t eij_elems = pv->nloc; + ct::Tensor Eij_gpu(ct::DataType::DT_COMPLEX_DOUBLE, ct::DeviceType::GpuDevice, ct::TensorShape({eij_elems})); + void* d_Eij = static_cast(Eij_gpu.data>()); + + std::complex alpha = {1.0, 0.0}; + std::complex beta = {0.0, 0.0}; - // Perform MPI reduction to compute ekb - info = MPI_Allreduce(eii.data(), ekb.data(), nband, MPI_DOUBLE, MPI_SUM, pv->comm()); + // 3. Matrix Descriptors Creation + cublasMpMatrixDescriptor_t desc_H, desc_Psi, desc_Eij; + + // H descriptor: nlocal x nlocal + cublasMpMatrixDescriptorCreate(pv->desc[2], + pv->desc[3], + pv->desc[4], + pv->desc[5], + 0, + 0, + pv->desc[8], + CUDA_C_64F, + cublas_res.cublasmp_grid, + &desc_H); + + // Psi descriptor: nlocal x nband + cublasMpMatrixDescriptorCreate(pv->desc_wfc[2], + pv->desc_wfc[3], + pv->desc_wfc[4], + pv->desc_wfc[5], + 0, + 0, + pv->desc_wfc[8], + CUDA_C_64F, + cublas_res.cublasmp_grid, + &desc_Psi); + + // Eij descriptor: MUST use nband x nband physically, to match pv->desc_Eij expectations + cublasMpMatrixDescriptorCreate(nband, + nband, + pv->desc_Eij[4], + pv->desc_Eij[5], + 0, + 0, + pv->desc_Eij[8], + CUDA_C_64F, + cublas_res.cublasmp_grid, + &desc_Eij); + + size_t ws_dev = 0, ws_host = 0; + void *d_work = nullptr, *h_work = nullptr; + + // 4. GEMM 1: Tmp1 = H * Psi + cublasMpGemm_bufferSize(cublas_res.cublasmp_handle, + CUBLAS_OP_N, + CUBLAS_OP_N, + pv->desc[2], + pv->desc_wfc[3], + pv->desc[3], + &alpha, + d_H, + 1, + 1, + desc_H, + d_Psi, + 1, + 1, + desc_Psi, + &beta, + d_Tmp1, + 1, + 1, + desc_Psi, + CUBLAS_COMPUTE_64F, + &ws_dev, + &ws_host); + + cudaMallocAsync(&d_work, ws_dev, cublas_res.stream); + h_work = malloc(ws_host); + + cublasMpGemm(cublas_res.cublasmp_handle, + CUBLAS_OP_N, + CUBLAS_OP_N, + pv->desc[2], + pv->desc_wfc[3], + pv->desc[3], + &alpha, + d_H, + 1, + 1, + desc_H, + d_Psi, + 1, + 1, + desc_Psi, + &beta, + d_Tmp1, + 1, + 1, + desc_Psi, + CUBLAS_COMPUTE_64F, + d_work, + ws_dev, + h_work, + ws_host); + + cudaFreeAsync(d_work, cublas_res.stream); + free(h_work); + + // 5. GEMM 2: Eij = Psi^H * Tmp1 + cublasMpGemm_bufferSize(cublas_res.cublasmp_handle, + CUBLAS_OP_C, + CUBLAS_OP_N, + pv->desc_wfc[3], + pv->desc_wfc[3], + pv->desc_wfc[2], + &alpha, + d_Psi, + 1, + 1, + desc_Psi, + d_Tmp1, + 1, + 1, + desc_Psi, + &beta, + d_Eij, + 1, + 1, + desc_Eij, + CUBLAS_COMPUTE_64F, + &ws_dev, + &ws_host); + + cudaMallocAsync(&d_work, ws_dev, cublas_res.stream); + h_work = malloc(ws_host); + + cublasMpGemm(cublas_res.cublasmp_handle, + CUBLAS_OP_C, + CUBLAS_OP_N, + pv->desc_wfc[3], + pv->desc_wfc[3], + pv->desc_wfc[2], + &alpha, + d_Psi, + 1, + 1, + desc_Psi, + d_Tmp1, + 1, + 1, + desc_Psi, + &beta, + d_Eij, + 1, + 1, + desc_Eij, + CUBLAS_COMPUTE_64F, + d_work, + ws_dev, + h_work, + ws_host); + + cudaFreeAsync(d_work, cublas_res.stream); + free(h_work); + + // 6. Extract Diagonal directly on GPU + // Prepare a zero-initialized buffer on GPU to store the local parts of the diagonal + ct::Tensor eii_gpu(ct::DataType::DT_DOUBLE, ct::DeviceType::GpuDevice, ct::TensorShape({nband})); + double* d_eii = static_cast(eii_gpu.data()); + cudaMemsetAsync(d_eii, 0, nband * sizeof(double), cublas_res.stream); + + // Launch the extraction kernel + module_rt::gpu::launch_extract_ekb_kernel(reinterpret_cast(d_Eij), + d_eii, + pv->desc_Eij[8], + pv->nloc, + pv->desc_Eij[4], + pv->dim0, + pv->dim1, + pv->coord[0], + pv->coord[1], + nband, + cublas_res.stream); + + // 7. CUDA-aware MPI Reduction + // VERY IMPORTANT: We must synchronize the stream before passing the GPU pointer + // to MPI, because MPI operations are generally synchronous to the CPU thread. + cudaStreamSynchronize(cublas_res.stream); + + double* d_ekb = static_cast(ekb.data()); + + // Direct GPU-to-GPU reduction using CUDA-aware MPI + MPI_Allreduce(d_eii, d_ekb, nband, MPI_DOUBLE, MPI_SUM, pv->comm()); + + // 8. Cleanup + cublasMpMatrixDescriptorDestroy(desc_H); + cublasMpMatrixDescriptorDestroy(desc_Psi); + cublasMpMatrixDescriptorDestroy(desc_Eij); +#endif // __CUBLASMP } template @@ -371,9 +473,15 @@ void compute_ekb_tensor_lapack(const Parallel_Orbitals* pv, { bb = 0.0; } - if (aa > 0.0 || bb > 0.0) + if (std::abs(aa) > 0.0 || std::abs(bb) > 0.0) { - ofs_running << i << " " << j << " " << aa << "+" << bb << "i " << std::endl; + std::streamsize original_precision = ofs_running.precision(); + ofs_running << std::fixed << std::setprecision(8); + ofs_running << "i = " << std::setw(2) << i << ", j = " << std::setw(2) << j + << ", Eij = " << std::setw(12) << aa << " + " << std::setw(12) << bb << " i" + << std::endl; + ofs_running.unsetf(std::ios_base::fixed); + ofs_running.precision(original_precision); } } } diff --git a/source/source_lcao/module_rt/band_energy.h b/source/source_lcao/module_rt/band_energy.h index 93c83ccdb0..107cd749e5 100644 --- a/source/source_lcao/module_rt/band_energy.h +++ b/source/source_lcao/module_rt/band_energy.h @@ -8,6 +8,7 @@ #include "source_base/module_container/ATen/core/tensor.h" // ct::Tensor #include "source_basis/module_ao/parallel_orbitals.h" +#include "source_lcao/module_rt/kernels/cublasmp_context.h" #include @@ -38,7 +39,8 @@ void compute_ekb_tensor(const Parallel_Orbitals* pv, const ct::Tensor& Htmp, const ct::Tensor& psi_k, ct::Tensor& ekb, - std::ofstream& ofs_running); + std::ofstream& ofs_running, + CublasMpResources& cublas_res); template void compute_ekb_tensor_lapack(const Parallel_Orbitals* pv, diff --git a/source/source_lcao/module_rt/boundary_fix.cpp b/source/source_lcao/module_rt/boundary_fix.cpp new file mode 100644 index 0000000000..dcdb436153 --- /dev/null +++ b/source/source_lcao/module_rt/boundary_fix.cpp @@ -0,0 +1,99 @@ +#include "boundary_fix.h" +#include "source_base/libm/libm.h" +#include "source_base/constants.h" +#include "source_base/vector3.h" + +namespace module_rt{ + +void reset_matrix_boundary(const UnitCell& ucell, + const K_Vectors& kv, + const Parallel_Orbitals* pv, + ct::Tensor& hk_last, + ct::Tensor& sk_last, + psi::Psi>* psi_last, + const size_t len_hs) +{ + ModuleBase::TITLE("module_rt", "reset_matrix_boundary"); + ModuleBase::timer::tick("module_rt", "reset_matrix_boundary"); + const ModuleBase::Vector3 zero = {0, 0, 0}; + for(size_t iat = 0; iat < ucell.nat; iat++) + { + const size_t it = ucell.iat2it[iat]; + const size_t ia = ucell.iat2ia[iat]; + if(ucell.atoms[it].boundary_shift[ia]!=zero) + { + const auto& rshift = ucell.atoms[it].boundary_shift[ia]; +#ifdef _OPENMP +#pragma omp parallel for schedule(dynamic) +#endif + for(int ik = 0; ik < kv.get_nks(); ik++) + { + const ModuleBase::Vector3 tmp_rshift(rshift.x, rshift.y, rshift.z); + const double arg = -kv.kvec_d[ik] * tmp_rshift * ModuleBase::TWO_PI; + //skip unrelevent ik + if(arg==0)continue; + //calculate correction phase + double sinp = 0.0, cosp = 0.0; + ModuleBase::libm::sincos(arg, &sinp, &cosp); + const std::complex phase = std::complex(cosp, sinp); + //phase correction for Hamiltionian, overlap matrix and c vec. + module_rt::boundary_shift_mat(phase, hk_last.template data>() + ik * len_hs, pv, iat); + module_rt::boundary_shift_mat(phase, sk_last.template data>() + ik * len_hs, pv, iat); + psi_last->fix_k(ik); + module_rt::boundary_shift_c(phase, psi_last[0].get_pointer(), pv, iat); + } + } + } + ModuleBase::timer::tick("module_rt", "reset_matrix_boundary"); + return; +} + +void boundary_shift_mat(const std::complex& phase, + std::complex* matk, + const Parallel_Orbitals* pv, + const size_t iat) +{ + const std::complex phase_conj = std::conj(phase); + size_t row0 = pv->atom_begin_row[iat]; + size_t col0 = pv->atom_begin_col[iat]; + std::complex* p_matkc = matk + col0 * pv->get_row_size(); + for(size_t nu = 0; nu < pv->get_col_size(iat); ++nu) + { + + BlasConnector::scal(pv->get_row_size(), + phase, + p_matkc, + 1); + p_matkc += pv->get_row_size(); + } + std::complex* p_matkr = matk + row0; + for(size_t mu = 0; mu < pv->get_row_size(iat); ++mu) + { + BlasConnector::scal(pv->get_col_size(), + phase_conj, + p_matkr, + pv->get_row_size()); + p_matkr += 1; + } + return; +} + +void boundary_shift_c(const std::complex& phase, + std::complex* psi_k_last, + const Parallel_Orbitals* pv, + const size_t iat) +{ + const std::complex phase_conj = std::conj(phase); + size_t row0 = pv->atom_begin_row[iat]; + std::complex* p_ck = psi_k_last + row0; + for(size_t nu = 0; nu < pv->get_row_size(iat); ++nu) + { + BlasConnector::scal(pv->ncol_bands, + phase_conj, + p_ck, + pv->get_row_size()); + p_ck+=1; + } + return; +} +} //namespace module_rt \ No newline at end of file diff --git a/source/source_lcao/module_rt/boundary_fix.h b/source/source_lcao/module_rt/boundary_fix.h new file mode 100644 index 0000000000..14127cf6a1 --- /dev/null +++ b/source/source_lcao/module_rt/boundary_fix.h @@ -0,0 +1,64 @@ +/** + * @file boundary_fix.h + * @brief Correct the discontinuity that occurs when crossing periodic boundary conditions + */ +#ifndef BOUNDARY_FIX_H +#define BOUNDARY_FIX_H + +#include "source_cell/unitcell.h" +#include "source_cell/klist.h" +#include "source_basis/module_ao/parallel_orbitals.h" +#include "source_psi/psi.h" +#include "source_base/module_container/ATen/core/tensor.h" +namespace module_rt{ + +/** +* @brief Add phases to the matrix and coefficient from the previous step to correct the boundary discontinuity. +* +* @param[in] ucell Unitcell information +* @param[in] kv K-point vectors +* @param[in] pv information of parallel +* @param[in] hk_last Hamiltonian matrix from last step +* @param[in] sk_last Overlap matrix from last step +* @param[in] psi_last Wavefunctions from last step +* @param[in] len_hs size of matrix element in this processor +* @param[out] hk_last the fixed hk matrix +* @param[out] sk_last the fixed sk matrix +* @param[out] sk_last the fixed wavefunctions +*/ +void reset_matrix_boundary(const UnitCell& ucell, + const K_Vectors& kv, + const Parallel_Orbitals* pv, + ct::Tensor& hk_last, + ct::Tensor& sk_last, + psi::Psi>* psi_last, + const size_t len_hs); + +/** +* @brief Add extra phase to the matrix element belong to iat +* +* @param[in] phase extra phase +* @param[in] matk the matrix need to be fixed +* @param[in] pv information of parallel +* @param[in] iat atom index +* @param[out] matk the fixed matrix +*/ +void boundary_shift_mat(const std::complex& phase, + std::complex* matk, + const Parallel_Orbitals* pv, + const size_t iat); +/** +* @brief Add extra phase to the wfc coefficient belong to iat +* +* @param[in] phase extra phase +* @param[in] psi_k_last psi of last step +* @param[in] pv information of parallel +* @param[in] iat atom index +* @param[out] psi_k_last fixed psi of last step +*/ +void boundary_shift_c(const std::complex& phase, + std::complex* psi_k_last, + const Parallel_Orbitals* pv, + const size_t iat); +}// namespace module_rt +#endif // BOUNDARY_FIX_H \ No newline at end of file diff --git a/source/source_lcao/module_rt/evolve_elec.cpp b/source/source_lcao/module_rt/evolve_elec.cpp index 833e6b4186..dd7507974a 100644 --- a/source/source_lcao/module_rt/evolve_elec.cpp +++ b/source/source_lcao/module_rt/evolve_elec.cpp @@ -6,7 +6,6 @@ #include "source_estate/module_charge/symmetry_rho.h" #include "source_lcao/hamilt_lcao.h" #include "source_lcao/module_dftu/dftu.h" -#include "source_pw/module_pwdft/global.h" namespace module_rt { @@ -28,11 +27,10 @@ void Evolve_elec::solve_psi(const int& istep, Parallel_Orbitals& para_orb, psi::Psi>* psi, psi::Psi>* psi_laststep, - std::complex** Hk_laststep, - std::complex** Sk_laststep, + ct::Tensor& Hk_laststep, + ct::Tensor& Sk_laststep, ModuleBase::matrix& ekb, std::ofstream& ofs_running, - const int htype, const int propagator, const bool use_tensor, const bool use_lapack) @@ -43,186 +41,213 @@ void Evolve_elec::solve_psi(const int& istep, // Control the print of matrix to running_md.log const int print_matrix = 0; + // Multi-GPU support + CublasMpResources cublas_res; +#ifdef __CUBLASMP + init_cublasmp_resources(cublas_res, MPI_COMM_WORLD, para_orb.desc); +#endif + for (int ik = 0; ik < nks; ik++) { phm->updateHk(ik); - ModuleBase::timer::tick("Efficiency", "evolve_k"); + ModuleBase::timer::tick("TD_Efficiency", "evolve_k"); psi->fix_k(ik); psi_laststep->fix_k(ik); - if (htype == 0) + + if (!use_tensor) { + const int len_HS_laststep = use_lapack ? nlocal * nlocal : para_orb.nloc; evolve_psi(nband, nlocal, &(para_orb), phm, psi[0].get_pointer(), psi_laststep[0].get_pointer(), - nullptr, - nullptr, + Hk_laststep.data>() + ik * len_HS_laststep, + Sk_laststep.data>() + ik * len_HS_laststep, &(ekb(ik, 0)), - htype, propagator, ofs_running, print_matrix); + // GlobalV::ofs_running << "Print ekb: " << std::endl; + // ekb.print(GlobalV::ofs_running); } - else if (htype == 1) + else { - if (!use_tensor) - { - evolve_psi(nband, - nlocal, - &(para_orb), - phm, - psi[0].get_pointer(), - psi_laststep[0].get_pointer(), - Hk_laststep[ik], - Sk_laststep[ik], - &(ekb(ik, 0)), - htype, - propagator, - ofs_running, - print_matrix); - // GlobalV::ofs_running << "Print ekb: " << std::endl; - // ekb.print(GlobalV::ofs_running); - } - else - { - const int len_psi_k_1 = use_lapack ? nband : psi->get_nbands(); - const int len_psi_k_2 = use_lapack ? nlocal : psi->get_nbasis(); - const int len_HS_laststep = use_lapack ? nlocal * nlocal : para_orb.nloc; - - // Create Tensor for psi_k, psi_k_laststep, H_laststep, S_laststep, ekb - ct::Tensor psi_k_tensor(ct::DataType::DT_COMPLEX_DOUBLE, - ct_device_type, - ct::TensorShape({len_psi_k_1, len_psi_k_2})); - ct::Tensor psi_k_laststep_tensor(ct::DataType::DT_COMPLEX_DOUBLE, - ct_device_type, - ct::TensorShape({len_psi_k_1, len_psi_k_2})); - ct::Tensor H_laststep_tensor(ct::DataType::DT_COMPLEX_DOUBLE, - ct_device_type, - ct::TensorShape({len_HS_laststep})); - ct::Tensor S_laststep_tensor(ct::DataType::DT_COMPLEX_DOUBLE, + ModuleBase::timer::tick("TD_Efficiency", "host_device_comm"); + + const int len_psi_k_1 = use_lapack ? nband : psi->get_nbands(); + const int len_psi_k_2 = use_lapack ? nlocal : psi->get_nbasis(); + const int len_HS_laststep = use_lapack ? nlocal * nlocal : para_orb.nloc; + + // Create Tensor for psi_k, psi_k_laststep, H_laststep, S_laststep, ekb + ct::Tensor psi_k_tensor(ct::DataType::DT_COMPLEX_DOUBLE, + ct_device_type, + ct::TensorShape({len_psi_k_1, len_psi_k_2})); + ct::Tensor psi_k_laststep_tensor(ct::DataType::DT_COMPLEX_DOUBLE, ct_device_type, - ct::TensorShape({len_HS_laststep})); - ct::Tensor ekb_tensor(ct::DataType::DT_DOUBLE, ct_device_type, ct::TensorShape({nband})); + ct::TensorShape({len_psi_k_1, len_psi_k_2})); + ct::Tensor H_laststep_tensor(ct::DataType::DT_COMPLEX_DOUBLE, + ct_device_type, + ct::TensorShape({len_HS_laststep})); + ct::Tensor S_laststep_tensor(ct::DataType::DT_COMPLEX_DOUBLE, + ct_device_type, + ct::TensorShape({len_HS_laststep})); + ct::Tensor ekb_tensor(ct::DataType::DT_DOUBLE, ct_device_type, ct::TensorShape({nband})); - // Global psi - ModuleESolver::Matrix_g> psi_g; - ModuleESolver::Matrix_g> psi_laststep_g; + // Global psi + module_rt::Matrix_g> psi_g; + module_rt::Matrix_g> psi_laststep_g; - if (use_lapack) - { - // Need to gather the psi to the root process on CPU - // H_laststep and S_laststep are already gathered in esolver_ks_lcao_tddft.cpp + // Prepare host pointers for psi and psi_laststep + std::complex* p_psi_host = nullptr; + std::complex* p_psi_last_host = nullptr; + + if (use_lapack) + { #ifdef __MPI - // Access the rank of the calling process in the communicator - int myid = 0; - const int root_proc = 0; - MPI_Comm_rank(MPI_COMM_WORLD, &myid); + int myid = 0; + const int root_proc = 0; + int num_procs = 1; + MPI_Comm_rank(MPI_COMM_WORLD, &myid); + MPI_Comm_size(MPI_COMM_WORLD, &num_procs); - // Gather psi to the root process + if (num_procs == 1) + { + // Single process: directly point to local data without gather + p_psi_host = psi[0].get_pointer(); + p_psi_last_host = psi_laststep[0].get_pointer(); + } + else + { + // Multiple processes: gather data to the root process (myid == 0) and point to the gathered data gatherPsi(myid, root_proc, psi[0].get_pointer(), para_orb, psi_g); gatherPsi(myid, root_proc, psi_laststep[0].get_pointer(), para_orb, psi_laststep_g); - // Syncronize data from CPU to Device - syncmem_complex_h2d_op()(psi_k_tensor.data>(), - psi_g.p.get(), - len_psi_k_1 * len_psi_k_2); - syncmem_complex_h2d_op()(psi_k_laststep_tensor.data>(), - psi_laststep_g.p.get(), - len_psi_k_1 * len_psi_k_2); -#endif + if (myid == root_proc) + { + p_psi_host = psi_g.p.get(); + p_psi_last_host = psi_laststep_g.p.get(); + } } - else + + // Only the root process (myid == 0) performs the copy + if (myid == root_proc) { - // Syncronize data from CPU to Device syncmem_complex_h2d_op()(psi_k_tensor.data>(), - psi[0].get_pointer(), + p_psi_host, len_psi_k_1 * len_psi_k_2); syncmem_complex_h2d_op()(psi_k_laststep_tensor.data>(), - psi_laststep[0].get_pointer(), + p_psi_last_host, len_psi_k_1 * len_psi_k_2); } +#endif + } + else + { + // Syncronize data from CPU to Device + syncmem_complex_h2d_op()(psi_k_tensor.data>(), + psi[0].get_pointer(), + len_psi_k_1 * len_psi_k_2); + syncmem_complex_h2d_op()(psi_k_laststep_tensor.data>(), + psi_laststep[0].get_pointer(), + len_psi_k_1 * len_psi_k_2); + } - syncmem_complex_h2d_op()(H_laststep_tensor.data>(), - Hk_laststep[ik], - len_HS_laststep); - syncmem_complex_h2d_op()(S_laststep_tensor.data>(), - Sk_laststep[ik], - len_HS_laststep); - syncmem_double_h2d_op()(ekb_tensor.data(), &(ekb(ik, 0)), nband); - - evolve_psi_tensor(nband, - nlocal, - &(para_orb), - phm, - psi_k_tensor, - psi_k_laststep_tensor, - H_laststep_tensor, - S_laststep_tensor, - ekb_tensor, - htype, - propagator, - ofs_running, - print_matrix, - use_lapack); - - // Need to distribute global psi back to all processes - if (use_lapack) - { + syncmem_complex_h2d_op()(H_laststep_tensor.data>(), + Hk_laststep.data>() + ik * len_HS_laststep, + len_HS_laststep); + syncmem_complex_h2d_op()(S_laststep_tensor.data>(), + Sk_laststep.data>() + ik * len_HS_laststep, + len_HS_laststep); + syncmem_double_h2d_op()(ekb_tensor.data(), &(ekb(ik, 0)), nband); + + ModuleBase::timer::tick("TD_Efficiency", "host_device_comm"); + + evolve_psi_tensor(nband, + nlocal, + &(para_orb), + phm, + psi_k_tensor, + psi_k_laststep_tensor, + H_laststep_tensor, + S_laststep_tensor, + ekb_tensor, + propagator, + ofs_running, + print_matrix, + use_lapack, + cublas_res); + + ModuleBase::timer::tick("TD_Efficiency", "host_device_comm"); + // Need to distribute global psi back to all processes + if (use_lapack) + { #ifdef __MPI - // Syncronize data from Device to CPU - syncmem_complex_d2h_op()(psi_g.p.get(), - psi_k_tensor.data>(), - len_psi_k_1 * len_psi_k_2); - syncmem_complex_d2h_op()(psi_laststep_g.p.get(), - psi_k_laststep_tensor.data>(), - len_psi_k_1 * len_psi_k_2); + int myid = 0; + int num_procs = 1; + MPI_Comm_rank(MPI_COMM_WORLD, &myid); + MPI_Comm_size(MPI_COMM_WORLD, &num_procs); - // Distribute psi to all processes - distributePsi(para_orb, psi[0].get_pointer(), psi_g); - distributePsi(para_orb, psi_laststep[0].get_pointer(), psi_laststep_g); -#endif - } - else + if (myid == 0) { - // Syncronize data from Device to CPU - syncmem_complex_d2h_op()(psi[0].get_pointer(), + syncmem_complex_d2h_op()(p_psi_host, psi_k_tensor.data>(), len_psi_k_1 * len_psi_k_2); - syncmem_complex_d2h_op()(psi_laststep[0].get_pointer(), + syncmem_complex_d2h_op()(p_psi_last_host, psi_k_laststep_tensor.data>(), len_psi_k_1 * len_psi_k_2); } - syncmem_complex_d2h_op()(Hk_laststep[ik], - H_laststep_tensor.data>(), - len_HS_laststep); - syncmem_complex_d2h_op()(Sk_laststep[ik], - S_laststep_tensor.data>(), - len_HS_laststep); - syncmem_double_d2h_op()(&(ekb(ik, 0)), ekb_tensor.data(), nband); -#ifdef __MPI - const int root_proc = 0; - if (use_lapack) + // If it's multi-process, distribute back; if it's single-process, the data is already in psi[0] + if (num_procs > 1) { - // Synchronize ekb to all MPI processes - MPI_Bcast(&(ekb(ik, 0)), nband, MPI_DOUBLE, root_proc, MPI_COMM_WORLD); + distributePsi(para_orb, psi[0].get_pointer(), psi_g); + distributePsi(para_orb, psi_laststep[0].get_pointer(), psi_laststep_g); } #endif - // GlobalV::ofs_running << "Print ekb: " << std::endl; - // ekb.print(GlobalV::ofs_running); } - } - else - { - std::cout << "method of htype is wrong" << std::endl; + else + { + // Syncronize data from Device to CPU + syncmem_complex_d2h_op()(psi[0].get_pointer(), + psi_k_tensor.data>(), + len_psi_k_1 * len_psi_k_2); + syncmem_complex_d2h_op()(psi_laststep[0].get_pointer(), + psi_k_laststep_tensor.data>(), + len_psi_k_1 * len_psi_k_2); + } + syncmem_complex_d2h_op()(Hk_laststep.data>() + ik * len_HS_laststep, + H_laststep_tensor.data>(), + len_HS_laststep); + syncmem_complex_d2h_op()(Sk_laststep.data>() + ik * len_HS_laststep, + S_laststep_tensor.data>(), + len_HS_laststep); + syncmem_double_d2h_op()(&(ekb(ik, 0)), ekb_tensor.data(), nband); + +#ifdef __MPI + const int root_proc = 0; + if (use_lapack) + { + // Synchronize ekb to all MPI processes + MPI_Bcast(&(ekb(ik, 0)), nband, MPI_DOUBLE, root_proc, MPI_COMM_WORLD); + } +#endif + + ModuleBase::timer::tick("TD_Efficiency", "host_device_comm"); + + // GlobalV::ofs_running << "Print ekb: " << std::endl; + // ekb.print(GlobalV::ofs_running); } - ModuleBase::timer::tick("Efficiency", "evolve_k"); + ModuleBase::timer::tick("TD_Efficiency", "evolve_k"); } // end k +#ifdef __CUBLASMP + finalize_cublasmp_resources(cublas_res); +#endif + ModuleBase::timer::tick("Evolve_elec", "solve_psi"); return; } @@ -231,4 +256,4 @@ template class Evolve_elec; #if ((defined __CUDA) /* || (defined __ROCM) */) template class Evolve_elec; #endif -} // namespace module_rt \ No newline at end of file +} // namespace module_rt diff --git a/source/source_lcao/module_rt/evolve_elec.h b/source/source_lcao/module_rt/evolve_elec.h index 7c9fc968b4..3c2aa95cf6 100644 --- a/source/source_lcao/module_rt/evolve_elec.h +++ b/source/source_lcao/module_rt/evolve_elec.h @@ -7,10 +7,12 @@ #include "source_base/module_container/ATen/core/tensor_map.h" // TensorMap #include "source_base/module_device/device.h" // base_device #include "source_base/module_device/memory_op.h" // memory operations -#include "source_base/module_external/scalapack_connector.h" // Cpxgemr2d +#include "source_base/module_external/scalapack_connector.h" // Cpxgemr2d #include "source_esolver/esolver_ks_lcao.h" #include "source_esolver/esolver_ks_lcao_tddft.h" #include "source_lcao/hamilt_lcao.h" +#include "source_lcao/module_rt/gather_mat.h" // MPI gathering and distributing functions +#include "source_lcao/module_rt/kernels/cublasmp_context.h" #include "source_psi/psi.h" //----------------------------------------------------------- @@ -25,118 +27,109 @@ // Print the shape of a Tensor inline void print_tensor_shape(const ct::Tensor& tensor, const std::string& name) { - std::cout << "Shape of " << name << ": ["; + GlobalV::ofs_running << "Shape of " << name << ": ["; for (int i = 0; i < tensor.shape().ndim(); ++i) { - std::cout << tensor.shape().dim_size(i); + GlobalV::ofs_running << tensor.shape().dim_size(i); if (i < tensor.shape().ndim() - 1) { - std::cout << ", "; + GlobalV::ofs_running << ", "; } } - std::cout << "]" << std::endl; + GlobalV::ofs_running << "]" << std::endl; } // Recursive print function +template +inline void print_single_element(const T& val, double threshold) +{ + double clean_val = (std::abs(val) < threshold) ? 0.0 : static_cast(val); + GlobalV::ofs_running << std::fixed << std::setprecision(6) << clean_val; +} +inline void print_single_element(const std::complex& val, double threshold) +{ + double re = (std::abs(val.real()) < threshold) ? 0.0 : val.real(); + double im = (std::abs(val.imag()) < threshold) ? 0.0 : val.imag(); + GlobalV::ofs_running << std::fixed << std::setprecision(6) << "(" << re << "," << im << ")"; +} + template inline void print_tensor_data_recursive(const T* data, const std::vector& shape, const std::vector& strides, int dim, std::vector& indices, - const std::string& name) + const std::string& name, + const double threshold = 1e-10) { if (dim == shape.size()) { - // Recursion base case: print data when reaching the innermost dimension - std::cout << name; + GlobalV::ofs_running << name; for (size_t i = 0; i < indices.size(); ++i) { - std::cout << "[" << indices[i] << "]"; + GlobalV::ofs_running << "[" << indices[i] << "]"; } - std::cout << " = " << *data << std::endl; + GlobalV::ofs_running << " = "; + + print_single_element(*data, threshold); + + GlobalV::ofs_running << std::endl; return; } - // Recursively process the current dimension + for (int64_t i = 0; i < shape[dim]; ++i) { indices[dim] = i; - print_tensor_data_recursive(data + i * strides[dim], shape, strides, dim + 1, indices, name); + print_tensor_data_recursive(data + i * strides[dim], shape, strides, dim + 1, indices, name, threshold); } } -// Generic print function template inline void print_tensor_data(const ct::Tensor& tensor, const std::string& name) { - const std::vector& shape = tensor.shape().dims(); - const std::vector& strides = tensor.shape().strides(); - const T* data = tensor.data(); + const ct::Tensor* p_tensor = &tensor; + ct::Tensor cpu_tensor_buffer; + + if (tensor.device_type() != ct::DeviceType::CpuDevice) + { + cpu_tensor_buffer = tensor.to_device(); + p_tensor = &cpu_tensor_buffer; + } + + const std::vector& shape = p_tensor->shape().dims(); + const std::vector& strides = p_tensor->shape().strides(); + + const T* data = p_tensor->data(); + std::vector indices(shape.size(), 0); print_tensor_data_recursive(data, shape, strides, 0, indices, name); } -// Specialization for std::complex template <> inline void print_tensor_data>(const ct::Tensor& tensor, const std::string& name) { - const std::vector& shape = tensor.shape().dims(); - const std::vector& strides = tensor.shape().strides(); - const std::complex* data = tensor.data>(); - std::vector indices(shape.size(), 0); - print_tensor_data_recursive(data, shape, strides, 0, indices, name); -} + const ct::Tensor* p_tensor = &tensor; + ct::Tensor cpu_tensor_buffer; -//------------------------ Debugging utility function ------------------------// - -namespace module_rt -{ -#ifdef __MPI -//------------------------ MPI gathering and distributing functions ------------------------// -template -void gatherPsi(const int myid, - const int root_proc, - T* psi_l, - const Parallel_Orbitals& para_orb, - ModuleESolver::Matrix_g& psi_g) -{ - const int* desc_psi = para_orb.desc_wfc; // Obtain the descriptor from Parallel_Orbitals - int ctxt = desc_psi[1]; // BLACS context - int nrows = desc_psi[2]; // Global matrix row number - int ncols = desc_psi[3]; // Global matrix column number - - if (myid == root_proc) - { - psi_g.p.reset(new T[nrows * ncols]); // No need to delete[] since it is a shared_ptr - } - else + if (tensor.device_type() != ct::DeviceType::CpuDevice) { - psi_g.p.reset(new T[nrows * ncols]); // Placeholder for non-root processes + cpu_tensor_buffer = tensor.to_device(); + p_tensor = &cpu_tensor_buffer; } - // Set the descriptor of the global psi - psi_g.desc.reset(new int[9]{1, ctxt, nrows, ncols, nrows, ncols, 0, 0, nrows}); - psi_g.row = nrows; - psi_g.col = ncols; - - // Call the Cpxgemr2d function in ScaLAPACK to collect the matrix data - Cpxgemr2d(nrows, ncols, psi_l, 1, 1, const_cast(desc_psi), psi_g.p.get(), 1, 1, psi_g.desc.get(), ctxt); -} + const std::vector& shape = p_tensor->shape().dims(); + const std::vector& strides = p_tensor->shape().strides(); -template -void distributePsi(const Parallel_Orbitals& para_orb, T* psi_l, const ModuleESolver::Matrix_g& psi_g) -{ - const int* desc_psi = para_orb.desc_wfc; // Obtain the descriptor from Parallel_Orbitals - int ctxt = desc_psi[1]; // BLACS context - int nrows = desc_psi[2]; // Global matrix row number - int ncols = desc_psi[3]; // Global matrix column number + const std::complex* data = p_tensor->data>(); - // Call the Cpxgemr2d function in ScaLAPACK to distribute the matrix data - Cpxgemr2d(nrows, ncols, psi_g.p.get(), 1, 1, psi_g.desc.get(), psi_l, 1, 1, const_cast(desc_psi), ctxt); + std::vector indices(shape.size(), 0); + print_tensor_data_recursive(data, shape, strides, 0, indices, name); } -//------------------------ MPI gathering and distributing functions ------------------------// -#endif // __MPI +//------------------------ Debugging utility function ------------------------// + +namespace module_rt +{ template class Evolve_elec { @@ -159,11 +152,10 @@ class Evolve_elec Parallel_Orbitals& para_orb, psi::Psi>* psi, psi::Psi>* psi_laststep, - std::complex** Hk_laststep, - std::complex** Sk_laststep, + ct::Tensor& Hk_laststep, + ct::Tensor& Sk_laststep, ModuleBase::matrix& ekb, std::ofstream& ofs_running, - const int htype, const int propagator, const bool use_tensor, const bool use_lapack); diff --git a/source/source_lcao/module_rt/evolve_psi.cpp b/source/source_lcao/module_rt/evolve_psi.cpp index 65ff5dfde0..ca2458651f 100644 --- a/source/source_lcao/module_rt/evolve_psi.cpp +++ b/source/source_lcao/module_rt/evolve_psi.cpp @@ -7,10 +7,9 @@ #include "solve_propagation.h" #include "source_base/module_container/ATen/kernels/blas.h" // cuBLAS handle #include "source_base/module_container/ATen/kernels/lapack.h" // cuSOLVER handle -#include "source_esolver/esolver_ks_lcao_tddft.h" // use gatherMatrix +#include "source_esolver/esolver_ks_lcao_tddft.h" // use gatherMatrix #include "source_io/module_parameter/parameter.h" #include "source_lcao/hamilt_lcao.h" -#include "source_pw/module_pwdft/global.h" #include "upsi.h" #include @@ -26,16 +25,12 @@ void evolve_psi(const int nband, std::complex* H_laststep, std::complex* S_laststep, double* ekb, - int htype, int propagator, std::ofstream& ofs_running, const int print_matrix) { - ModuleBase::TITLE("Evolve_psi", "evolve_psi"); - // ofs_running << " Evolving electronic wave functions begins" << std::endl; - + ModuleBase::TITLE("module_rt", "evolve_psi"); time_t time_start = time(nullptr); - // ofs_running << " Start Time : " << ctime(&time_start); #ifdef __MPI @@ -63,7 +58,7 @@ void evolve_psi(const int nband, /// @brief compute H(t+dt/2) /// @input H_laststep, Htmp, print_matrix /// @output Htmp - if (htype == 1 && propagator != 2) + if (propagator != 2) { half_Hmatrix(pv, nband, nlocal, Htmp, Stmp, H_laststep, S_laststep, ofs_running, print_matrix); } @@ -113,12 +108,10 @@ void evolve_psi(const int nband, delete[] Hold; delete[] U_operator; -#endif +#endif // __MPI time_t time_end = time(nullptr); - ModuleBase::GlobalFunc::OUT_TIME("evolve(std::complex)", time_start, time_end); - - // ofs_running << " Evolving electronic wave functions ends" << std::endl; + ModuleBase::GlobalFunc::OUT_TIME("evolve_psi", time_start, time_end); return; } @@ -133,12 +126,15 @@ void evolve_psi_tensor(const int nband, ct::Tensor& H_laststep, ct::Tensor& S_laststep, ct::Tensor& ekb, - int htype, int propagator, std::ofstream& ofs_running, const int print_matrix, - const bool use_lapack) + const bool use_lapack, + CublasMpResources& cublas_res) { + ModuleBase::TITLE("module_rt", "evolve_psi_tensor"); + time_t time_start = time(nullptr); + // ct_device_type = ct::DeviceType::CpuDevice or ct::DeviceType::GpuDevice ct::DeviceType ct_device_type = ct::DeviceTypeToEnum::value; // ct_Device = ct::DEVICE_CPU or ct::DEVICE_GPU @@ -148,96 +144,114 @@ void evolve_psi_tensor(const int nband, = base_device::memory::synchronize_memory_op, Device, base_device::DEVICE_CPU>; #if ((defined __CUDA) /* || (defined __ROCM) */) - // Initialize cuBLAS & cuSOLVER handle - ct::kernels::createGpuSolverHandle(); - ct::kernels::createGpuBlasHandle(); + if (ct_device_type == ct::DeviceType::GpuDevice) + { + // Initialize cuBLAS & cuSOLVER handle + ct::kernels::createGpuSolverHandle(); + ct::kernels::createGpuBlasHandle(); + } #endif // __CUDA - // ofs_running << " evolve_psi_tensor::start " << std::endl; - - ModuleBase::TITLE("Evolve_psi", "evolve_psi"); - time_t time_start = time(nullptr); - // ofs_running << " Start Time : " << ctime(&time_start); - #ifdef __MPI - hamilt::MatrixBlock> h_mat, s_mat; p_hamilt->matrix(h_mat, s_mat); - // Create Tensor objects for temporary data and sync from host to device - const int len_HS = use_lapack ? nlocal * nlocal : pv->nloc; - ct::Tensor Stmp(ct::DataType::DT_COMPLEX_DOUBLE, ct_device_type, ct::TensorShape({len_HS})); - ct::Tensor Htmp(ct::DataType::DT_COMPLEX_DOUBLE, ct_device_type, ct::TensorShape({len_HS})); - ct::Tensor Hold(ct::DataType::DT_COMPLEX_DOUBLE, ct_device_type, ct::TensorShape({len_HS})); + int myid = 0; + int num_procs = 1; + MPI_Comm_rank(MPI_COMM_WORLD, &myid); + MPI_Comm_size(MPI_COMM_WORLD, &num_procs); + const int root_proc = 0; + + std::complex* h_src = nullptr; + std::complex* s_src = nullptr; + + module_rt::Matrix_g> h_mat_g, s_mat_g; if (use_lapack) { - // Need to gather H and S matrix to root process here - int myid = 0; - int num_procs = 1; - MPI_Comm_rank(MPI_COMM_WORLD, &myid); - MPI_Comm_size(MPI_COMM_WORLD, &num_procs); - - ModuleESolver::Matrix_g> h_mat_g, s_mat_g; // Global matrix structure - - // Collect H matrix - ModuleESolver::gatherMatrix(myid, 0, h_mat, h_mat_g); - syncmem_complex_h2d_op()(Htmp.data>(), h_mat_g.p.get(), len_HS); - syncmem_complex_h2d_op()(Hold.data>(), h_mat_g.p.get(), len_HS); - - // Collect S matrix - ModuleESolver::gatherMatrix(myid, 0, s_mat, s_mat_g); - syncmem_complex_h2d_op()(Stmp.data>(), s_mat_g.p.get(), len_HS); + if (num_procs == 1) + { + h_src = h_mat.p; + s_src = s_mat.p; + } + else + { + module_rt::gatherMatrix(myid, 0, h_mat, h_mat_g); + module_rt::gatherMatrix(myid, 0, s_mat, s_mat_g); + if (myid == root_proc) + { + h_src = h_mat_g.p.get(); + s_src = s_mat_g.p.get(); + } + } } else { - // Original code - syncmem_complex_h2d_op()(Stmp.data>(), s_mat.p, len_HS); - syncmem_complex_h2d_op()(Htmp.data>(), h_mat.p, len_HS); - syncmem_complex_h2d_op()(Hold.data>(), h_mat.p, len_HS); + h_src = h_mat.p; + s_src = s_mat.p; } - ct::Tensor U_operator(ct::DataType::DT_COMPLEX_DOUBLE, ct_device_type, ct::TensorShape({len_HS})); - U_operator.zero(); + const int len_HS = use_lapack ? nlocal * nlocal : pv->nloc; - int myid = 0; - int root_proc = 0; - MPI_Comm_rank(MPI_COMM_WORLD, &myid); + ct::Tensor Stmp(ct::DataType::DT_COMPLEX_DOUBLE, ct_device_type, ct::TensorShape({len_HS})); + + if (s_src != nullptr) + { + if (!use_lapack || myid == root_proc) + { + ModuleBase::timer::tick("TD_Efficiency", "host_device_comm"); + syncmem_complex_h2d_op()(Stmp.data>(), s_src, len_HS); + ModuleBase::timer::tick("TD_Efficiency", "host_device_comm"); + } + } - // (1)->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> + ct::Tensor Htmp(ct::DataType::DT_COMPLEX_DOUBLE, ct_device_type, ct::TensorShape({len_HS})); - /// @brief compute H(t+dt/2) - /// @input H_laststep, Htmp, print_matrix - /// @output Htmp - if (htype == 1 && propagator != 2) + if (h_src != nullptr) + { + if (!use_lapack || myid == root_proc) + { + ModuleBase::timer::tick("TD_Efficiency", "host_device_comm"); + syncmem_complex_h2d_op()(Htmp.data>(), h_src, len_HS); + ModuleBase::timer::tick("TD_Efficiency", "host_device_comm"); + } + } + + // (1) Compute H(t+dt/2) + if (propagator != 2) { if (!use_lapack) { - half_Hmatrix_tensor(pv, nband, nlocal, Htmp, Stmp, H_laststep, S_laststep, ofs_running, print_matrix); + half_Hmatrix_tensor(pv, + nband, + nlocal, + Htmp, + Stmp, + H_laststep, + S_laststep, + ofs_running, + print_matrix, + cublas_res); } - else + else if (myid == root_proc) { - if (myid == root_proc) - { - half_Hmatrix_tensor_lapack(pv, - nband, - nlocal, - Htmp, - Stmp, - H_laststep, - S_laststep, - ofs_running, - print_matrix); - } + half_Hmatrix_tensor_lapack(pv, + nband, + nlocal, + Htmp, + Stmp, + H_laststep, + S_laststep, + ofs_running, + print_matrix); } } - // (2)->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> + ct::Tensor U_operator(ct::DataType::DT_COMPLEX_DOUBLE, ct_device_type, ct::TensorShape({len_HS})); + U_operator.zero(); - /// @brief compute U_operator - /// @input Stmp, Htmp, print_matrix - /// @output U_operator - Propagator prop(propagator, pv, PARAM.mdp.md_dt); + // (2) Compute U_operator + Propagator prop(propagator, pv, PARAM.inp.td_dt); prop.compute_propagator_tensor(nlocal, Stmp, Htmp, @@ -245,72 +259,65 @@ void evolve_psi_tensor(const int nband, U_operator, ofs_running, print_matrix, - use_lapack); + use_lapack, + cublas_res); - // (3)->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> - - /// @brief apply U_operator to the wave function of the previous step for new wave function - /// @input U_operator, psi_k_laststep, print_matrix - /// @output psi_k + // (3) Apply U_operator (psi_k = U * psi_last) if (!use_lapack) { - upsi_tensor(pv, nband, nlocal, U_operator, psi_k_laststep, psi_k, ofs_running, print_matrix); + upsi_tensor(pv, nband, nlocal, U_operator, psi_k_laststep, psi_k, ofs_running, print_matrix, cublas_res); } - else + else if (myid == root_proc) { - if (myid == root_proc) - { - upsi_tensor_lapack(pv, nband, nlocal, U_operator, psi_k_laststep, psi_k, ofs_running, print_matrix); - } + upsi_tensor_lapack(pv, nband, nlocal, U_operator, psi_k_laststep, psi_k, ofs_running, print_matrix); } - // (4)->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> - - /// @brief normalize psi_k - /// @input Stmp, psi_not_norm, psi_k, print_matrix - /// @output psi_k + // (4) Normalize psi_k if (!use_lapack) { - norm_psi_tensor(pv, nband, nlocal, Stmp, psi_k, ofs_running, print_matrix); + norm_psi_tensor(pv, nband, nlocal, Stmp, psi_k, ofs_running, print_matrix, cublas_res); } - else + else if (myid == root_proc) { - if (myid == root_proc) + norm_psi_tensor_lapack(pv, nband, nlocal, Stmp, psi_k, ofs_running, print_matrix); + } + + // (5) Compute ekb + ct::Tensor Hold(ct::DataType::DT_COMPLEX_DOUBLE, ct_device_type, ct::TensorShape({len_HS})); + + // Resync H matrix + if (h_src != nullptr) + { + if (!use_lapack || myid == root_proc) { - norm_psi_tensor_lapack(pv, nband, nlocal, Stmp, psi_k, ofs_running, print_matrix); + ModuleBase::timer::tick("TD_Efficiency", "host_device_comm"); + syncmem_complex_h2d_op()(Hold.data>(), h_src, len_HS); + ModuleBase::timer::tick("TD_Efficiency", "host_device_comm"); } } - // (5)->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> - - /// @brief compute ekb - /// @input Htmp, psi_k - /// @output ekb if (!use_lapack) { - compute_ekb_tensor(pv, nband, nlocal, Hold, psi_k, ekb, ofs_running); + compute_ekb_tensor(pv, nband, nlocal, Hold, psi_k, ekb, ofs_running, cublas_res); } - else + else if (myid == root_proc) { - if (myid == root_proc) - { - compute_ekb_tensor_lapack(pv, nband, nlocal, Hold, psi_k, ekb, ofs_running); - } + compute_ekb_tensor_lapack(pv, nband, nlocal, Hold, psi_k, ekb, ofs_running); } - #endif // __MPI - time_t time_end = time(nullptr); - ModuleBase::GlobalFunc::OUT_TIME("evolve(std::complex)", time_start, time_end); - - // ofs_running << " evolve_psi_tensor::end " << std::endl; - #if ((defined __CUDA) /* || (defined __ROCM) */) - // Destroy cuBLAS & cuSOLVER handle - ct::kernels::destroyGpuSolverHandle(); - ct::kernels::destroyGpuBlasHandle(); + if (ct_device_type == ct::DeviceType::GpuDevice) + { + // Destroy cuBLAS & cuSOLVER handle + ct::kernels::destroyGpuSolverHandle(); + ct::kernels::destroyGpuBlasHandle(); + } #endif // __CUDA + time_t time_end = time(nullptr); + ModuleBase::GlobalFunc::OUT_TIME("evolve_psi", time_start, time_end); + return; } @@ -324,11 +331,11 @@ template void evolve_psi_tensor(const int nband, ct::Tensor& H_laststep, ct::Tensor& S_laststep, ct::Tensor& ekb, - int htype, int propagator, std::ofstream& ofs_running, const int print_matrix, - const bool use_lapack); + const bool use_lapack, + CublasMpResources& cublas_res); #if ((defined __CUDA) /* || (defined __ROCM) */) template void evolve_psi_tensor(const int nband, @@ -340,11 +347,11 @@ template void evolve_psi_tensor(const int nband, ct::Tensor& H_laststep, ct::Tensor& S_laststep, ct::Tensor& ekb, - int htype, int propagator, std::ofstream& ofs_running, const int print_matrix, - const bool use_lapack); + const bool use_lapack, + CublasMpResources& cublas_res); #endif // __CUDA } // namespace module_rt diff --git a/source/source_lcao/module_rt/evolve_psi.h b/source/source_lcao/module_rt/evolve_psi.h index ed8cf9b538..34a29d6881 100644 --- a/source/source_lcao/module_rt/evolve_psi.h +++ b/source/source_lcao/module_rt/evolve_psi.h @@ -10,6 +10,8 @@ #include "source_base/module_container/ATen/core/tensor_map.h" // TensorMap #include "source_basis/module_ao/parallel_orbitals.h" #include "source_lcao/hamilt_lcao.h" +#include "source_lcao/module_rt/evolve_elec.h" +#include "source_lcao/module_rt/kernels/cublasmp_context.h" namespace module_rt { @@ -22,7 +24,6 @@ void evolve_psi(const int nband, std::complex* H_laststep, std::complex* S_laststep, double* ekb, - int htype, int propagator, std::ofstream& ofs_running, const int print_matrix); @@ -37,11 +38,11 @@ void evolve_psi_tensor(const int nband, ct::Tensor& H_laststep, ct::Tensor& S_laststep, ct::Tensor& ekb, - int htype, int propagator, std::ofstream& ofs_running, const int print_matrix, - const bool use_lapack); + const bool use_lapack, + CublasMpResources& cublas_res); } // namespace module_rt #endif \ No newline at end of file diff --git a/source/source_lcao/module_rt/gather_mat.h b/source/source_lcao/module_rt/gather_mat.h new file mode 100644 index 0000000000..00df8620ad --- /dev/null +++ b/source/source_lcao/module_rt/gather_mat.h @@ -0,0 +1,111 @@ +#ifndef GATHER_MAT_H +#define GATHER_MAT_H + +#include "source_base/module_external/scalapack_connector.h" // Cpxgemr2d +#include "source_hamilt/matrixblock.h" + +namespace module_rt +{ +//------------------------ MPI gathering and distributing functions ------------------------// +// This struct is used for collecting matrices from all processes to root process +template +struct Matrix_g +{ + std::shared_ptr p; + size_t row; + size_t col; + std::shared_ptr desc; +}; + +#ifdef __MPI +// Collect matrices from all processes to root process +template +void gatherMatrix(const int myid, const int root_proc, const hamilt::MatrixBlock& mat_l, Matrix_g& mat_g) +{ + const int* desca = mat_l.desc; // Obtain the descriptor of the local matrix + int ctxt = desca[1]; // BLACS context + int nrows = desca[2]; // Global matrix row number + int ncols = desca[3]; // Global matrix column number + + if (myid == root_proc) + { + mat_g.p.reset(new T[nrows * ncols]); // No need to delete[] since it is a shared_ptr + } + else + { + mat_g.p.reset(new T[nrows * ncols]); // Placeholder for non-root processes + } + + // Set the descriptor of the global matrix + mat_g.desc.reset(new int[9]{1, ctxt, nrows, ncols, nrows, ncols, 0, 0, nrows}); + mat_g.row = nrows; + mat_g.col = ncols; + + // Call the Cpxgemr2d function in ScaLAPACK to collect the matrix data + Cpxgemr2d(nrows, ncols, mat_l.p, 1, 1, const_cast(desca), mat_g.p.get(), 1, 1, mat_g.desc.get(), ctxt); +} + +template +void distributeMatrix(hamilt::MatrixBlock& mat_l, const module_rt::Matrix_g& mat_g) +{ + const int* desc_local = mat_l.desc; // Obtain the descriptor from Parallel_Orbitals + int ctxt = desc_local[1]; // BLACS context + int nrows = desc_local[2]; // Global matrix row number + int ncols = desc_local[3]; // Global matrix column number + + // Check matrix size consistency + if (mat_g.row != static_cast(nrows) || mat_g.col != static_cast(ncols)) + { + throw std::invalid_argument("module_rt::distributeMatrix: Global matrix size mismatch."); + } + + // Call the Cpxgemr2d function in ScaLAPACK to distribute the matrix data + Cpxgemr2d(nrows, ncols, mat_g.p.get(), 1, 1, mat_g.desc.get(), mat_l.p, 1, 1, const_cast(desc_local), ctxt); +} + +template +void gatherPsi(const int myid, + const int root_proc, + T* psi_l, + const Parallel_Orbitals& para_orb, + module_rt::Matrix_g& psi_g) +{ + const int* desc_psi = para_orb.desc_wfc; // Obtain the descriptor from Parallel_Orbitals + int ctxt = desc_psi[1]; // BLACS context + int nrows = desc_psi[2]; // Global matrix row number + int ncols = desc_psi[3]; // Global matrix column number + + if (myid == root_proc) + { + psi_g.p.reset(new T[nrows * ncols]); // No need to delete[] since it is a shared_ptr + } + else + { + psi_g.p.reset(new T[nrows * ncols]); // Placeholder for non-root processes + } + + // Set the descriptor of the global psi + psi_g.desc.reset(new int[9]{1, ctxt, nrows, ncols, nrows, ncols, 0, 0, nrows}); + psi_g.row = nrows; + psi_g.col = ncols; + + // Call the Cpxgemr2d function in ScaLAPACK to collect the matrix data + Cpxgemr2d(nrows, ncols, psi_l, 1, 1, const_cast(desc_psi), psi_g.p.get(), 1, 1, psi_g.desc.get(), ctxt); +} + +template +void distributePsi(const Parallel_Orbitals& para_orb, T* psi_l, const module_rt::Matrix_g& psi_g) +{ + const int* desc_psi = para_orb.desc_wfc; // Obtain the descriptor from Parallel_Orbitals + int ctxt = desc_psi[1]; // BLACS context + int nrows = desc_psi[2]; // Global matrix row number + int ncols = desc_psi[3]; // Global matrix column number + + // Call the Cpxgemr2d function in ScaLAPACK to distribute the matrix data + Cpxgemr2d(nrows, ncols, psi_g.p.get(), 1, 1, psi_g.desc.get(), psi_l, 1, 1, const_cast(desc_psi), ctxt); +} +//------------------------ MPI gathering and distributing functions ------------------------// + +#endif // __MPI +} // namespace module_rt +#endif // GATHER_MAT_H \ No newline at end of file diff --git a/source/source_lcao/module_rt/kernels/cublasmp_context.h b/source/source_lcao/module_rt/kernels/cublasmp_context.h new file mode 100644 index 0000000000..897f1964c2 --- /dev/null +++ b/source/source_lcao/module_rt/kernels/cublasmp_context.h @@ -0,0 +1,167 @@ +#ifndef CUBLASMP_CONTEXT_H +#define CUBLASMP_CONTEXT_H + +#ifdef __MPI +#include +#endif + +#ifdef __CUDA +#include +#endif + +#ifdef __CUBLASMP +#include "source_base/global_variable.h" +#include "source_base/module_device/device.h" + +#include +#include +#include +#include + +extern "C" +{ +#include "source_hsolver/module_genelpa/Cblacs.h" +} + +#define LOG_DEBUG(msg) \ + do \ + { \ + if (g_EnableDebugLog) \ + { \ + std::cerr << "[DEBUG] " << msg << " (at " << __func__ << ")" << std::endl; \ + } \ + } while (0) +#endif // __CUBLASMP + +// The struct is ALWAYS available. +struct CublasMpResources +{ + bool is_initialized = false; + +#ifdef __MPI + MPI_Comm mpi_comm = MPI_COMM_NULL; +#endif + +#ifdef __CUDA + cudaStream_t stream = nullptr; +#endif + +#ifdef __CUBLASMP + ncclComm_t nccl_comm = nullptr; + + cublasMpHandle_t cublasmp_handle = nullptr; + cublasMpGrid_t cublasmp_grid = nullptr; + + cusolverMpHandle_t cusolvermp_handle = nullptr; + cusolverMpGrid_t cusolvermp_grid = nullptr; +#endif +}; + +// API functions are only visible when cuBLASMp is enabled. +#ifdef __CUBLASMP + +inline void init_cublasmp_resources(CublasMpResources& res, MPI_Comm mpi_comm, const int* desc) +{ + if (res.is_initialized) + { + return; + } + + res.mpi_comm = mpi_comm; + MPI_Barrier(res.mpi_comm); + + // 1. Get BLACS topology info + int cblacs_ctxt = desc[1]; + int nprows, npcols, myprow, mypcol; + Cblacs_gridinfo(cblacs_ctxt, &nprows, &npcols, &myprow, &mypcol); + + GlobalV::ofs_running << "nprows = " << nprows << std::endl; + GlobalV::ofs_running << "npcols = " << npcols << std::endl; + GlobalV::ofs_running << "myprow = " << myprow << std::endl; + GlobalV::ofs_running << "mypcol = " << mypcol << std::endl; + GlobalV::ofs_running << "device = " << base_device::DeviceContext::instance().get_device_id() << std::endl; + + int rank, size; + MPI_Comm_rank(res.mpi_comm, &rank); + MPI_Comm_size(res.mpi_comm, &size); + + int device_id = base_device::DeviceContext::instance().get_device_id(); + cudaSetDevice(device_id); + cudaStreamCreate(&res.stream); + + // 2. Initialize NCCL communicator + ncclUniqueId id; + if (rank == 0) + { + ncclGetUniqueId(&id); + } + // Broadcast the unique NCCL ID to all ranks + MPI_Bcast((void*)&id, sizeof(id), MPI_BYTE, 0, res.mpi_comm); + // Initialize NCCL with the generated ID + ncclCommInitRank(&res.nccl_comm, size, id, rank); + + // 3. Initialize cuBLASMp specific resources + cublasMpCreate(&res.cublasmp_handle, res.stream); + cublasMpGridCreate(nprows, npcols, CUBLASMP_GRID_LAYOUT_ROW_MAJOR, res.nccl_comm, &res.cublasmp_grid); + + // 4. Initialize cuSOLVERMp specific resources + cusolverMpCreate(&res.cusolvermp_handle, device_id, res.stream); + cusolverMpCreateDeviceGrid(res.cusolvermp_handle, + &res.cusolvermp_grid, + res.nccl_comm, + nprows, + npcols, + CUSOLVERMP_GRID_MAPPING_ROW_MAJOR); + + res.is_initialized = true; +} + +inline void finalize_cublasmp_resources(CublasMpResources& res) +{ + if (!res.is_initialized) + { + return; + } + + if (res.stream) + { + cudaStreamSynchronize(res.stream); + } + + // Destroy cuBLASMp resources + if (res.cublasmp_grid) + { + cublasMpGridDestroy(res.cublasmp_grid); + } + if (res.cublasmp_handle) + { + cublasMpDestroy(res.cublasmp_handle); + } + + // Destroy cuSOLVERMp resources + if (res.cusolvermp_grid) + { + cusolverMpDestroyGrid(res.cusolvermp_grid); + } + if (res.cusolvermp_handle) + { + cusolverMpDestroy(res.cusolvermp_handle); + } + + // Destroy NCCL communicator + if (res.nccl_comm) + { + ncclCommDestroy(res.nccl_comm); + } + + if (res.stream) + { + cudaStreamDestroy(res.stream); + } + + res.is_initialized = false; +} + +#endif // __CUBLASMP + +#endif // CUBLASMP_CONTEXT_H diff --git a/source/source_lcao/module_rt/kernels/cuda/band_energy_kernel.cu b/source/source_lcao/module_rt/kernels/cuda/band_energy_kernel.cu new file mode 100644 index 0000000000..74e55610a0 --- /dev/null +++ b/source/source_lcao/module_rt/kernels/cuda/band_energy_kernel.cu @@ -0,0 +1,88 @@ +#include "band_energy_kernel.cuh" + +#ifdef __CUBLASMP +namespace module_rt +{ +namespace gpu +{ + +// Device function for global index mapping +__device__ inline int get_global_index_dev(int local_idx, int block_size, int num_procs, int proc_coord) +{ + return (local_idx / block_size) * (num_procs * block_size) + proc_coord * block_size + (local_idx % block_size); +} + +// Kernel to extract the real part of the diagonal elements of Eij +__global__ void extract_ekb_kernel(const cuDoubleComplex* d_Eij, + double* d_eii, + int lld, + int local_elems, + int nb, + int dim0, + int dim1, + int my_prow, + int my_pcol, + int nband) +{ + int idx = blockIdx.x * blockDim.x + threadIdx.x; + + // Iterate over the allocated local buffer + if (idx >= local_elems) + { + return; + } + + // Column-major indexing using the formal Leading Dimension (LLD) + int i = idx % lld; + int j = idx / lld; + + int grow = get_global_index_dev(i, nb, dim0, my_prow); + int gcol = get_global_index_dev(j, nb, dim1, my_pcol); + + // Filter out invalid blocks + if (grow >= nband || gcol >= nband) + { + return; + } + + // Extract the diagonal elements + if (grow == gcol) + { + d_eii[grow] = cuCreal(d_Eij[idx]); + } +} + +// Wrapper implementation +void launch_extract_ekb_kernel(const cuDoubleComplex* d_Eij, + double* d_eii, + int lld, + int local_elems, + int nb, + int dim0, + int dim1, + int my_prow, + int my_pcol, + int nband, + cudaStream_t stream) +{ + if (local_elems > 0) + { + int threads_per_block = 256; + int blocks_per_grid = (local_elems + threads_per_block - 1) / threads_per_block; + + extract_ekb_kernel<<>>(d_Eij, + d_eii, + lld, + local_elems, + nb, + dim0, + dim1, + my_prow, + my_pcol, + nband); + } +} + +} // namespace gpu +} // namespace module_rt +#endif // __CUBLASMP diff --git a/source/source_lcao/module_rt/kernels/cuda/band_energy_kernel.cuh b/source/source_lcao/module_rt/kernels/cuda/band_energy_kernel.cuh new file mode 100644 index 0000000000..2c0198b8f5 --- /dev/null +++ b/source/source_lcao/module_rt/kernels/cuda/band_energy_kernel.cuh @@ -0,0 +1,31 @@ +#ifndef BAND_ENERGY_KERNEL_CUH +#define BAND_ENERGY_KERNEL_CUH + +#include + +#ifdef __CUBLASMP +#include + +namespace module_rt +{ +namespace gpu +{ + +// Standard C++ wrapper to launch the diagonal extraction kernel +void launch_extract_ekb_kernel(const cuDoubleComplex* d_Eij, + double* d_eii, + int lld, + int local_elems, + int nb, + int dim0, + int dim1, + int my_prow, + int my_pcol, + int nband, + cudaStream_t stream); + +} // namespace gpu +} // namespace module_rt +#endif // __CUBLASMP + +#endif // BAND_ENERGY_KERNEL_CUH diff --git a/source/source_lcao/module_rt/kernels/cuda/norm_psi_kernel.cu b/source/source_lcao/module_rt/kernels/cuda/norm_psi_kernel.cu new file mode 100644 index 0000000000..4008df990a --- /dev/null +++ b/source/source_lcao/module_rt/kernels/cuda/norm_psi_kernel.cu @@ -0,0 +1,94 @@ +#include "norm_psi_kernel.cuh" + +#include + +#ifdef __CUBLASMP +namespace module_rt +{ +namespace gpu +{ + +// Device function for global index mapping +__device__ inline int get_global_index_dev(int local_idx, int block_size, int num_procs, int proc_coord) +{ + return (local_idx / block_size) * (num_procs * block_size) + proc_coord * block_size + (local_idx % block_size); +} + +// CUDA kernel to normalize the Cij matrix directly on the GPU +__global__ void normalize_cij_kernel(cuDoubleComplex* d_Cij, + int lld, + int local_elems, + int nb, + int dim0, + int dim1, + int my_prow, + int my_pcol, + int nband) +{ + int idx = blockIdx.x * blockDim.x + threadIdx.x; + + // We iterate over the entire allocated buffer (local_elems) + if (idx >= local_elems) + { + return; + } + + // Column-major indexing using the formal Leading Dimension (LLD) + int i = idx % lld; + int j = idx / lld; + + int grow = get_global_index_dev(i, nb, dim0, my_prow); + int gcol = get_global_index_dev(j, nb, dim1, my_pcol); + + // Filter out the "empty" spaces that are outside the nband x nband logic + if (grow >= nband || gcol >= nband) + { + return; + } + + if (grow == gcol) + { + double val = cuCreal(d_Cij[idx]); + if (val < 1e-12) + val = 1e-12; + d_Cij[idx] = make_cuDoubleComplex(1.0 / sqrt(val), 0.0); + } + else + { + d_Cij[idx] = make_cuDoubleComplex(0.0, 0.0); + } +} + +// Wrapper function implementation +void launch_normalize_cij_kernel(cuDoubleComplex* d_Cij, + int nrow, + int ncol, + int nb, + int dim0, + int dim1, + int my_prow, + int my_pcol, + int nband, + cudaStream_t stream) +{ + int total_elems = nrow * ncol; + if (total_elems > 0) + { + int threads_per_block = 256; + int blocks_per_grid = (total_elems + threads_per_block - 1) / threads_per_block; + + normalize_cij_kernel<<>>(d_Cij, + nrow, + ncol, + nb, + dim0, + dim1, + my_prow, + my_pcol, + nband); + } +} + +} // namespace gpu +} // namespace module_rt +#endif // __CUBLASMP diff --git a/source/source_lcao/module_rt/kernels/cuda/norm_psi_kernel.cuh b/source/source_lcao/module_rt/kernels/cuda/norm_psi_kernel.cuh new file mode 100644 index 0000000000..af2fb0dd6e --- /dev/null +++ b/source/source_lcao/module_rt/kernels/cuda/norm_psi_kernel.cuh @@ -0,0 +1,30 @@ +#ifndef NORM_PSI_KERNEL_CUH +#define NORM_PSI_KERNEL_CUH + +#include + +#ifdef __CUBLASMP +#include + +namespace module_rt +{ +namespace gpu +{ + +// Standard C++ wrapper to launch the normalization kernel +void launch_normalize_cij_kernel(cuDoubleComplex* d_Cij, + int nrow, + int ncol, + int nb, + int dim0, + int dim1, + int my_prow, + int my_pcol, + int nband, + cudaStream_t stream); + +} // namespace gpu +} // namespace module_rt +#endif // __CUBLASMP + +#endif // NORM_PSI_KERNEL_CUH diff --git a/source/source_lcao/module_rt/kernels/cuda/snap_psibeta_gpu.cu b/source/source_lcao/module_rt/kernels/cuda/snap_psibeta_gpu.cu new file mode 100644 index 0000000000..2517eb23fe --- /dev/null +++ b/source/source_lcao/module_rt/kernels/cuda/snap_psibeta_gpu.cu @@ -0,0 +1,375 @@ +/** + * @file snap_psibeta_gpu.cu + * @brief Host-side GPU interface for overlap computation + * + * This file provides the high-level interface for GPU-accelerated computation + * of overlap integrals between atomic orbitals (psi) and non-local projectors + * (beta). It handles: + * - GPU resource initialization and cleanup + * - Data marshalling from ABACUS structures to GPU-friendly formats + * - Kernel launch configuration + * - Result unpacking back to ABACUS data structures + */ + +#include "../snap_psibeta_gpu.h" +#include "snap_psibeta_kernel.cuh" +#include "source_base/timer.h" +#include "source_base/tool_quit.h" + +#include +#include +#include +#include + +namespace module_rt +{ +namespace gpu +{ + +//============================================================================= +// GPU Resource Management +//============================================================================= + +/** + * @brief Initialize module-specific GPU resources for snap_psibeta computation + * + * Copies integration grids (Lebedev-Laikov angular and Gauss-Legendre radial) + * to constant memory. + * + * @note Call this once at the start of a calculation session before any + * snap_psibeta_atom_batch_gpu calls. + */ +void init_snap_psibeta_gpu() +{ + // GPU device availability is already verified and initialized by DeviceContext::init() + // at the startup of the application. + + // Initialize integration grids in constant memory + copy_grids_to_device(); + + // Synchronize to ensure initialization is complete + cudaDeviceSynchronize(); +} + +//============================================================================= +// Internal Helper Structures +//============================================================================= + +/** + * @brief Mapping structure for reconstructing output data + * + * Associates each orbital in the flattened GPU array with its original + * neighbor and orbital indices for proper result placement. + */ +struct OrbitalMapping +{ + int neighbor_idx; ///< Index of neighbor atom in adjacency list + int iw_index; ///< Global orbital index for output mapping +}; + +//============================================================================= +// Main GPU Interface Function +//============================================================================= + +/** + * @brief Compute overlap integrals on GPU + * + * This function processes ALL neighbor atoms for a single center atom (where + * the projectors are located) in a single kernel launch, providing significant + * performance improvement over per-neighbor processing. + * + * Workflow: + * 1. Collect all (neighbor, orbital) pairs into flattened arrays + * 2. Prepare projector data for the center atom + * 3. Transfer data to GPU and launch kernel + * 4. Retrieve results and reconstruct nlm_tot structure + * + * @param orb LCAO orbital information + * @param infoNL_ Non-local projector information + * @param T0 Atom type of center atom (projector location) + * @param R0 Position of center atom + * @param A Vector potential for phase factor + * @param adjs Adjacent atom information + * @param ucell Unit cell information + * @param paraV Parallel orbital distribution + * @param npol Number of spin polarizations + * @param nlm_dim Output dimension (1 for overlap only, 4 for overlap + current) + * @param nlm_tot Output: overlap integrals indexed as [neighbor][direction][orbital] + */ +void snap_psibeta_atom_batch_gpu( + const LCAO_Orbitals& orb, + const InfoNonlocal& infoNL_, + const int T0, + const ModuleBase::Vector3& R0, + const ModuleBase::Vector3& A, + const AdjacentAtomInfo& adjs, + const UnitCell* ucell, + const Parallel_Orbitals* paraV, + const int npol, + const int nlm_dim, + std::vector>>>>& nlm_tot) +{ + ModuleBase::timer::tick("module_rt", "snap_psibeta_gpu"); + + //========================================================================= + // Early exit if no projectors on center atom + //========================================================================= + + const int nproj = infoNL_.nproj[T0]; + if (nproj == 0) + { + ModuleBase::timer::tick("module_rt", "snap_psibeta_gpu"); + return; + } + + //========================================================================= + // Compute projector output indices + //========================================================================= + + int natomwfc = 0; // Total number of projector components + std::vector proj_m0_offset_h(nproj); + + for (int ip = 0; ip < nproj; ip++) + { + proj_m0_offset_h[ip] = natomwfc; + int L0 = infoNL_.Beta[T0].Proj[ip].getL(); + + // Validate angular momentum + if (L0 > MAX_L) + { + ModuleBase::WARNING_QUIT("snap_psibeta_gpu", + "L0=" + std::to_string(L0) + " exceeds MAX_L=" + std::to_string(MAX_L)); + } + natomwfc += 2 * L0 + 1; + } + + //========================================================================= + // Collect all (neighbor, orbital) pairs + //========================================================================= + + std::vector neighbor_orbitals_h; + std::vector psi_radial_h; + std::vector orbital_mappings; + + for (int ad = 0; ad < adjs.adj_num + 1; ++ad) + { + const int T1 = adjs.ntype[ad]; + const int I1 = adjs.natom[ad]; + const int iat1 = ucell->itia2iat(T1, I1); + const ModuleBase::Vector3& tau1 = adjs.adjacent_tau[ad]; + const Atom* atom1 = &ucell->atoms[T1]; + + // Get unique orbital indices (union of row and column indices) + auto all_indexes = paraV->get_indexes_row(iat1); + auto col_indexes = paraV->get_indexes_col(iat1); + all_indexes.insert(all_indexes.end(), col_indexes.begin(), col_indexes.end()); + std::sort(all_indexes.begin(), all_indexes.end()); + all_indexes.erase(std::unique(all_indexes.begin(), all_indexes.end()), all_indexes.end()); + + // Process each orbital + for (size_t iw1l = 0; iw1l < all_indexes.size(); iw1l += npol) + { + const int iw1 = all_indexes[iw1l] / npol; + const int L1 = atom1->iw2l[iw1]; + const int m1 = atom1->iw2m[iw1]; + const int N1 = atom1->iw2n[iw1]; + + // Skip orbitals with angular momentum beyond supported limit + if (L1 > MAX_L) + { + continue; + } + + // Get orbital radial function (use getPsi(), not getPsi_r()) + const double* phi_psi = orb.Phi[T1].PhiLN(L1, N1).getPsi(); + int mesh = orb.Phi[T1].PhiLN(L1, N1).getNr(); + double dk = orb.Phi[T1].PhiLN(L1, N1).getDk(); + double rcut = orb.Phi[T1].getRcut(); + + // Append to flattened psi array + size_t psi_offset = psi_radial_h.size(); + psi_radial_h.insert(psi_radial_h.end(), phi_psi, phi_psi + mesh); + + // Create neighbor-orbital data + NeighborOrbitalData norb; + norb.neighbor_idx = ad; + norb.R1 = make_double3(tau1.x * ucell->lat0, tau1.y * ucell->lat0, tau1.z * ucell->lat0); + norb.L1 = L1; + norb.m1 = m1; + norb.N1 = N1; + norb.iw_index = all_indexes[iw1l]; + norb.psi_offset = static_cast(psi_offset); + norb.psi_mesh = mesh; + norb.psi_dk = dk; + norb.psi_rcut = rcut; + + neighbor_orbitals_h.push_back(norb); + + // Track mapping for result reconstruction + OrbitalMapping mapping; + mapping.neighbor_idx = ad; + mapping.iw_index = all_indexes[iw1l]; + orbital_mappings.push_back(mapping); + } + } + + int total_neighbor_orbitals = static_cast(neighbor_orbitals_h.size()); + if (total_neighbor_orbitals == 0) + { + ModuleBase::timer::tick("module_rt", "snap_psibeta_gpu"); + return; + } + + //========================================================================= + // Prepare projector data + //========================================================================= + + std::vector projectors_h(nproj); + std::vector beta_radial_h; + + for (int ip = 0; ip < nproj; ip++) + { + const auto& proj = infoNL_.Beta[T0].Proj[ip]; + int L0 = proj.getL(); + int mesh = proj.getNr(); + double dk = proj.getDk(); + double rcut = proj.getRcut(); + const double* beta_r = proj.getBeta_r(); + const double* radial = proj.getRadial(); + + projectors_h[ip].L0 = L0; + projectors_h[ip].beta_offset = static_cast(beta_radial_h.size()); + projectors_h[ip].beta_mesh = mesh; + projectors_h[ip].beta_dk = dk; + projectors_h[ip].beta_rcut = rcut; + projectors_h[ip].r_min = radial[0]; + projectors_h[ip].r_max = radial[mesh - 1]; + + beta_radial_h.insert(beta_radial_h.end(), beta_r, beta_r + mesh); + } + + //========================================================================= + // Allocate GPU memory + //========================================================================= + + NeighborOrbitalData* neighbor_orbitals_d = nullptr; + ProjectorData* projectors_d = nullptr; + double* psi_radial_d = nullptr; + double* beta_radial_d = nullptr; + int* proj_m0_offset_d = nullptr; + cuDoubleComplex* nlm_out_d = nullptr; + + size_t output_size = total_neighbor_orbitals * nlm_dim * natomwfc; + + CHECK_CUDA(cudaMalloc(&neighbor_orbitals_d, total_neighbor_orbitals * sizeof(NeighborOrbitalData))); + CHECK_CUDA(cudaMalloc(&projectors_d, nproj * sizeof(ProjectorData))); + CHECK_CUDA(cudaMalloc(&psi_radial_d, psi_radial_h.size() * sizeof(double))); + CHECK_CUDA(cudaMalloc(&beta_radial_d, beta_radial_h.size() * sizeof(double))); + CHECK_CUDA(cudaMalloc(&proj_m0_offset_d, nproj * sizeof(int))); + CHECK_CUDA(cudaMalloc(&nlm_out_d, output_size * sizeof(cuDoubleComplex))); + + //========================================================================= + // Transfer data to GPU + //========================================================================= + + CHECK_CUDA(cudaMemcpy(neighbor_orbitals_d, + neighbor_orbitals_h.data(), + total_neighbor_orbitals * sizeof(NeighborOrbitalData), + cudaMemcpyHostToDevice)); + CHECK_CUDA(cudaMemcpy(projectors_d, projectors_h.data(), nproj * sizeof(ProjectorData), cudaMemcpyHostToDevice)); + CHECK_CUDA( + cudaMemcpy(psi_radial_d, psi_radial_h.data(), psi_radial_h.size() * sizeof(double), cudaMemcpyHostToDevice)); + CHECK_CUDA( + cudaMemcpy(beta_radial_d, beta_radial_h.data(), beta_radial_h.size() * sizeof(double), cudaMemcpyHostToDevice)); + CHECK_CUDA(cudaMemcpy(proj_m0_offset_d, proj_m0_offset_h.data(), nproj * sizeof(int), cudaMemcpyHostToDevice)); + CHECK_CUDA(cudaMemset(nlm_out_d, 0, output_size * sizeof(cuDoubleComplex))); + + //========================================================================= + // Launch kernel + //========================================================================= + + double3 R0_d3 = make_double3(R0.x, R0.y, R0.z); + double3 A_d3 = make_double3(A.x, A.y, A.z); + + dim3 grid(total_neighbor_orbitals, nproj, 1); + dim3 block(BLOCK_SIZE, 1, 1); + + snap_psibeta_atom_batch_kernel<<>>(R0_d3, + A_d3, + neighbor_orbitals_d, + projectors_d, + psi_radial_d, + beta_radial_d, + proj_m0_offset_d, + total_neighbor_orbitals, + nproj, + natomwfc, + nlm_dim, + nlm_out_d); + + // Check for launch errors + cudaError_t err = cudaGetLastError(); + if (err != cudaSuccess) + { + cudaFree(neighbor_orbitals_d); + cudaFree(projectors_d); + cudaFree(psi_radial_d); + cudaFree(beta_radial_d); + cudaFree(proj_m0_offset_d); + cudaFree(nlm_out_d); + ModuleBase::WARNING_QUIT("snap_psibeta_gpu", + std::string("Atom batch kernel launch error: ") + cudaGetErrorString(err)); + } + + CHECK_CUDA(cudaDeviceSynchronize()); + + //========================================================================= + // Retrieve results + //========================================================================= + + std::vector nlm_out_h(output_size); + CHECK_CUDA(cudaMemcpy(nlm_out_h.data(), nlm_out_d, output_size * sizeof(cuDoubleComplex), cudaMemcpyDeviceToHost)); + + //========================================================================= + // Reconstruct output structure + //========================================================================= + + for (int i = 0; i < total_neighbor_orbitals; i++) + { + int ad = orbital_mappings[i].neighbor_idx; + int iw_index = orbital_mappings[i].iw_index; + + std::vector>> nlm(nlm_dim); + for (int d = 0; d < nlm_dim; d++) + { + nlm[d].resize(natomwfc); + for (int k = 0; k < natomwfc; k++) + { + size_t idx = i * nlm_dim * natomwfc + d * natomwfc + k; + nlm[d][k] = std::complex(nlm_out_h[idx].x, nlm_out_h[idx].y); + } + } + + // Insert into nlm_tot[neighbor][direction][orbital] + for (int dir = 0; dir < nlm_dim; dir++) + { + nlm_tot[ad][dir].insert({iw_index, nlm[dir]}); + } + } + + //========================================================================= + // Cleanup GPU memory + //========================================================================= + + cudaFree(neighbor_orbitals_d); + cudaFree(projectors_d); + cudaFree(psi_radial_d); + cudaFree(beta_radial_d); + cudaFree(proj_m0_offset_d); + cudaFree(nlm_out_d); + + ModuleBase::timer::tick("module_rt", "snap_psibeta_gpu"); +} + +} // namespace gpu +} // namespace module_rt diff --git a/source/source_lcao/module_rt/kernels/cuda/snap_psibeta_kernel.cu b/source/source_lcao/module_rt/kernels/cuda/snap_psibeta_kernel.cu new file mode 100644 index 0000000000..9c3a8e1a01 --- /dev/null +++ b/source/source_lcao/module_rt/kernels/cuda/snap_psibeta_kernel.cu @@ -0,0 +1,390 @@ +/** + * @file snap_psibeta_kernel.cu + * @brief CUDA kernel implementation for overlap integrals + * + * This file implements the GPU-accelerated numerical integration for computing + * overlap integrals between atomic orbitals (psi) and non-local projectors (beta). + * The implementation uses: + * - Lebedev-Laikov quadrature (110 points) for angular integration + * - Gauss-Legendre quadrature (140 points) for radial integration + * - Templated spherical harmonics with compile-time L for optimization + * - Warp-level shuffle reduction for efficient parallel summation + */ + +#include "snap_psibeta_kernel.cuh" +#include "source_base/constants.h" +#include "source_base/math_integral.h" + +#include +#include + +namespace module_rt +{ +namespace gpu +{ + +//============================================================================= +// Constant Memory - Integration Grids +//============================================================================= + +// Lebedev-Laikov angular quadrature grid (110 points) +__constant__ double d_lebedev_x[ANGULAR_GRID_NUM]; ///< x-direction cosines +__constant__ double d_lebedev_y[ANGULAR_GRID_NUM]; ///< y-direction cosines +__constant__ double d_lebedev_z[ANGULAR_GRID_NUM]; ///< z-direction cosines +__constant__ double d_lebedev_w[ANGULAR_GRID_NUM]; ///< Angular integration weights + +// Gauss-Legendre radial quadrature grid (140 points) +__constant__ double d_gl_x[RADIAL_GRID_NUM]; ///< Quadrature abscissae on [-1, 1] +__constant__ double d_gl_w[RADIAL_GRID_NUM]; ///< Quadrature weights + +//============================================================================= +// Warp-Level Reduction +//============================================================================= + +/** + * @brief Warp-level sum reduction using shuffle instructions + * + * Performs a parallel reduction within a warp (32 threads) using __shfl_down_sync. + * After this function, lane 0 contains the sum of all input values in the warp. + * + * @param val Input value from each thread + * @return Sum across all threads in the warp (valid only in lane 0) + */ +__device__ __forceinline__ double warp_reduce_sum(double val) +{ + for (int offset = 16; offset > 0; offset /= 2) + { + val += __shfl_down_sync(0xffffffff, val, offset); + } + return val; +} + +//============================================================================= +// Main Kernel Implementation +//============================================================================= + +/** + * @brief Atom-level batch kernel for overlap integrals + * + * Integration is performed using restructured loops for efficiency: + * - Outer loop: angular points (each thread handles different angles) + * - Inner loop: radial points (each thread accumulates all radii) + * + * This structure exploits the fact that Y_lm for the projector (ylm0) only + * depends on the angular direction, not the radial distance, saving + * RADIAL_GRID_NUM redundant ylm0 computations per angular point. + */ +__global__ void snap_psibeta_atom_batch_kernel(double3 R0, + double3 A, + const NeighborOrbitalData* __restrict__ neighbor_orbitals, + const ProjectorData* __restrict__ projectors, + const double* __restrict__ psi_radial, + const double* __restrict__ beta_radial, + const int* __restrict__ proj_m0_offset, + int total_neighbor_orbitals, + int nproj, + int natomwfc, + int nlm_dim, + cuDoubleComplex* __restrict__ nlm_out) +{ + // Thread/block indices + const int norb_idx = blockIdx.x; // Which (neighbor, orbital) pair + const int proj_idx = blockIdx.y; // Which projector + const int tid = threadIdx.x; + + // Early exit for out-of-bounds blocks + if (norb_idx >= total_neighbor_orbitals || proj_idx >= nproj) + { + return; + } + + //------------------------------------------------------------------------- + // Load input data + //------------------------------------------------------------------------- + + const NeighborOrbitalData& norb = neighbor_orbitals[norb_idx]; + const ProjectorData& proj = projectors[proj_idx]; + + const double3 R1 = norb.R1; + const int L1 = norb.L1; + const int m1 = norb.m1; + const int L0 = proj.L0; + const int m0_offset = proj_m0_offset[proj_idx]; + + // Skip if angular momentum exceeds supported limit + if (L1 > MAX_L || L0 > MAX_L) + { + return; + } + + //------------------------------------------------------------------------- + // Compute geometry + //------------------------------------------------------------------------- + + // Note: dR (R1 - R0) is computed inline as dRx/dRy/dRz in the integration loop + + // Orbital cutoff + const double r1_max = norb.psi_rcut; + + // Integration range from projector radial grid + const double r_min = proj.r_min; + const double r_max = proj.r_max; + const double xl = 0.5 * (r_max - r_min); // Half-range for Gauss-Legendre + const double xmean = 0.5 * (r_max + r_min); // Midpoint + + // Phase factor exp(i * A · R0) + const double AdotR0 = A.x * R0.x + A.y * R0.y + A.z * R0.z; + const cuDoubleComplex exp_iAR0 = cu_exp_i(AdotR0); + + //------------------------------------------------------------------------- + // Shared memory for warp reduction + //------------------------------------------------------------------------- + + constexpr int NUM_WARPS = BLOCK_SIZE / 32; // 128 / 32 = 4 warps + __shared__ double s_temp_re[NUM_WARPS]; + __shared__ double s_temp_im[NUM_WARPS]; + + //------------------------------------------------------------------------- + // Initialize accumulators (per-thread registers) + //------------------------------------------------------------------------- + + const int num_m0 = 2 * L0 + 1; + + double result_re[MAX_M0_SIZE]; + double result_im[MAX_M0_SIZE]; + double result_r_re[3][MAX_M0_SIZE]; // For current operator: x, y, z components + double result_r_im[3][MAX_M0_SIZE]; + + for (int m0 = 0; m0 < num_m0; m0++) + { + result_re[m0] = 0.0; + result_im[m0] = 0.0; + for (int d = 0; d < 3; d++) + { + result_r_re[d][m0] = 0.0; + result_r_im[d][m0] = 0.0; + } + } + + //------------------------------------------------------------------------- + // Main integration loop + // Outer: angular points (parallelized across threads) + // Inner: radial points (accumulated per thread) + //------------------------------------------------------------------------- + + for (int ian = tid; ian < ANGULAR_GRID_NUM; ian += BLOCK_SIZE) + { + // Load angular grid point + const double leb_x = d_lebedev_x[ian]; + const double leb_y = d_lebedev_y[ian]; + const double leb_z = d_lebedev_z[ian]; + const double w_ang = d_lebedev_w[ian]; + + // Precompute Y_lm for projector (independent of radial distance) + double ylm0[MAX_YLM_SIZE]; + ModuleBase::sph_harm(L0, leb_x, leb_y, leb_z, ylm0); + const int offset_L0 = L0 * L0; + + // Precompute A · direction (for phase factor) + const double A_dot_leb = A.x * leb_x + A.y * leb_y + A.z * leb_z; + + // Vector from R1 to R0 (for computing distance to orbital center) + const double dRx = R0.x - R1.x; + const double dRy = R0.y - R1.y; + const double dRz = R0.z - R1.z; + + // Radial integration +#pragma unroll 4 + for (int ir = 0; ir < RADIAL_GRID_NUM; ir++) + { + // Transform Gauss-Legendre point from [-1,1] to [r_min, r_max] + const double r_val = xmean + xl * d_gl_x[ir]; + const double w_rad = xl * d_gl_w[ir]; + + // Integration point position relative to R0 + const double rx = r_val * leb_x; + const double ry = r_val * leb_y; + const double rz = r_val * leb_z; + + // Vector from R1 to integration point + const double tx = rx + dRx; + const double ty = ry + dRy; + const double tz = rz + dRz; + const double tnorm = sqrt(tx * tx + ty * ty + tz * tz); + + // Check if within orbital cutoff + if (tnorm <= r1_max) + { + // Compute Y_lm for orbital (depends on direction from R1) + double ylm1[MAX_YLM_SIZE]; + if (tnorm > 1e-10) + { + const double inv_tnorm = 1.0 / tnorm; + ModuleBase::sph_harm(L1, tx * inv_tnorm, ty * inv_tnorm, tz * inv_tnorm, ylm1); + } + else + { + ModuleBase::sph_harm(L1, 0.0, 0.0, 1.0, ylm1); + } + + // Interpolate orbital radial function + const double psi_val + = interpolate_radial_gpu(psi_radial + norb.psi_offset, norb.psi_mesh, 1.0 / norb.psi_dk, tnorm); + + // Interpolate projector radial function + const double beta_val + = interpolate_radial_gpu(beta_radial + proj.beta_offset, proj.beta_mesh, 1.0 / proj.beta_dk, r_val); + + // Phase factor exp(i * A · r) + const double phase = r_val * A_dot_leb; + const cuDoubleComplex exp_iAr = cu_exp_i(phase); + + // Orbital Y_lm value + const double ylm_L1_val = ylm1[L1 * L1 + m1]; + + // Combined integration factor: Y_L1m1 * psi * beta * r * dr * dOmega + const double factor = ylm_L1_val * psi_val * beta_val * r_val * w_rad * w_ang; + const cuDoubleComplex common_factor = cu_mul_real(exp_iAr, factor); + + // Accumulate for all m0 components of projector +#pragma unroll + for (int m0 = 0; m0 < num_m0; m0++) + { + const double ylm0_val = ylm0[offset_L0 + m0]; + + result_re[m0] += common_factor.x * ylm0_val; + result_im[m0] += common_factor.y * ylm0_val; + + // Current operator contribution (if requested) + if (nlm_dim == 4) + { + const double r_op_x = rx + R0.x; + const double r_op_y = ry + R0.y; + const double r_op_z = rz + R0.z; + + result_r_re[0][m0] += common_factor.x * ylm0_val * r_op_x; + result_r_im[0][m0] += common_factor.y * ylm0_val * r_op_x; + result_r_re[1][m0] += common_factor.x * ylm0_val * r_op_y; + result_r_im[1][m0] += common_factor.y * ylm0_val * r_op_y; + result_r_re[2][m0] += common_factor.x * ylm0_val * r_op_z; + result_r_im[2][m0] += common_factor.y * ylm0_val * r_op_z; + } + } + } + } // End radial loop + } // End angular loop + + //------------------------------------------------------------------------- + // Parallel reduction and output + // Uses warp shuffle for efficiency, followed by cross-warp reduction + //------------------------------------------------------------------------- + + const int out_base = norb_idx * nlm_dim * natomwfc; + const int warp_id = tid / 32; + const int lane_id = tid % 32; + + for (int m0 = 0; m0 < num_m0; m0++) + { + // Step 1: Warp-level reduction using shuffle + double sum_re = warp_reduce_sum(result_re[m0]); + double sum_im = warp_reduce_sum(result_im[m0]); + + // Step 2: First lane of each warp writes to shared memory + if (lane_id == 0) + { + s_temp_re[warp_id] = sum_re; + s_temp_im[warp_id] = sum_im; + } + __syncthreads(); + + // Step 3: First warp reduces across all warps and writes output + if (warp_id == 0) + { + sum_re = (lane_id < NUM_WARPS) ? s_temp_re[lane_id] : 0.0; + sum_im = (lane_id < NUM_WARPS) ? s_temp_im[lane_id] : 0.0; + sum_re = warp_reduce_sum(sum_re); + sum_im = warp_reduce_sum(sum_im); + + if (lane_id == 0) + { + cuDoubleComplex result = make_cuDoubleComplex(sum_re, sum_im); + result = cu_mul(result, exp_iAR0); + result = cu_conj(result); + nlm_out[out_base + 0 * natomwfc + m0_offset + m0] = result; + } + } + __syncthreads(); + + // Process current operator components (if nlm_dim == 4) + if (nlm_dim == 4) + { + for (int d = 0; d < 3; d++) + { + double sum_r_re = warp_reduce_sum(result_r_re[d][m0]); + double sum_r_im = warp_reduce_sum(result_r_im[d][m0]); + + if (lane_id == 0) + { + s_temp_re[warp_id] = sum_r_re; + s_temp_im[warp_id] = sum_r_im; + } + __syncthreads(); + + if (warp_id == 0) + { + sum_r_re = (lane_id < NUM_WARPS) ? s_temp_re[lane_id] : 0.0; + sum_r_im = (lane_id < NUM_WARPS) ? s_temp_im[lane_id] : 0.0; + sum_r_re = warp_reduce_sum(sum_r_re); + sum_r_im = warp_reduce_sum(sum_r_im); + + if (lane_id == 0) + { + cuDoubleComplex result_r = make_cuDoubleComplex(sum_r_re, sum_r_im); + result_r = cu_mul(result_r, exp_iAR0); + result_r = cu_conj(result_r); + nlm_out[out_base + (d + 1) * natomwfc + m0_offset + m0] = result_r; + } + } + __syncthreads(); + } + } + } +} + +//============================================================================= +// Host-side Helper Functions +//============================================================================= + +/** + * @brief Copy integration grids to GPU constant memory + * + * Initializes the constant memory arrays with Lebedev-Laikov angular grid + * and Gauss-Legendre radial grid for use in kernel integration. + */ +void copy_grids_to_device() +{ + // Copy Lebedev-Laikov 110-point angular quadrature grid + CHECK_CUDA(cudaMemcpyToSymbol(d_lebedev_x, + ModuleBase::Integral::Lebedev_Laikov_grid110_x, + ANGULAR_GRID_NUM * sizeof(double))); + CHECK_CUDA(cudaMemcpyToSymbol(d_lebedev_y, + ModuleBase::Integral::Lebedev_Laikov_grid110_y, + ANGULAR_GRID_NUM * sizeof(double))); + CHECK_CUDA(cudaMemcpyToSymbol(d_lebedev_z, + ModuleBase::Integral::Lebedev_Laikov_grid110_z, + ANGULAR_GRID_NUM * sizeof(double))); + CHECK_CUDA(cudaMemcpyToSymbol(d_lebedev_w, + ModuleBase::Integral::Lebedev_Laikov_grid110_w, + ANGULAR_GRID_NUM * sizeof(double))); + + // Compute and copy Gauss-Legendre radial quadrature grid + std::vector h_gl_x(RADIAL_GRID_NUM); + std::vector h_gl_w(RADIAL_GRID_NUM); + ModuleBase::Integral::Gauss_Legendre_grid_and_weight(RADIAL_GRID_NUM, h_gl_x.data(), h_gl_w.data()); + + CHECK_CUDA(cudaMemcpyToSymbol(d_gl_x, h_gl_x.data(), RADIAL_GRID_NUM * sizeof(double))); + CHECK_CUDA(cudaMemcpyToSymbol(d_gl_w, h_gl_w.data(), RADIAL_GRID_NUM * sizeof(double))); +} + +} // namespace gpu +} // namespace module_rt diff --git a/source/source_lcao/module_rt/kernels/cuda/snap_psibeta_kernel.cuh b/source/source_lcao/module_rt/kernels/cuda/snap_psibeta_kernel.cuh new file mode 100644 index 0000000000..d658378ce7 --- /dev/null +++ b/source/source_lcao/module_rt/kernels/cuda/snap_psibeta_kernel.cuh @@ -0,0 +1,259 @@ +/** + * @file snap_psibeta_kernel.cuh + * @brief CUDA kernel declarations for computing overlap integrals + * + * This file provides GPU-accelerated computation of overlap integrals between + * atomic orbitals (psi) and non-local projectors (beta) for real-time TDDFT + * calculations. The implementation uses numerical integration on a combined + * radial (Gauss-Legendre) and angular (Lebedev-Laikov) grid. + * + * Key Features: + * - Atom-level batching: processes all neighbors for a center atom in single kernel + * - Templated spherical harmonics for compile-time optimization + * - Efficient memory access via constant memory for integration grids + * - Warp-level reduction for high-performance summation + */ + +#ifndef SNAP_PSIBETA_KERNEL_CUH +#define SNAP_PSIBETA_KERNEL_CUH + +#include "source_base/tool_quit.h" +#include "source_base/kernels/cuda/sph_harm_gpu.cuh" +#include "source_base/module_device/device_check.h" + +#include +#include +#include +#include + +namespace module_rt +{ +namespace gpu +{ + +//============================================================================= +// Configuration Constants +//============================================================================= + +/// Number of points in radial Gauss-Legendre grid +constexpr int RADIAL_GRID_NUM = 140; + +/// Number of points in angular Lebedev-Laikov grid (110-point rule) +constexpr int ANGULAR_GRID_NUM = 110; + +/// Thread block size for kernel execution +constexpr int BLOCK_SIZE = 128; + +/// Maximum supported angular momentum quantum number L +constexpr int MAX_L = 4; + +/// Size of spherical harmonics array: (MAX_L + 1)^2 = 25 +constexpr int MAX_YLM_SIZE = (MAX_L + 1) * (MAX_L + 1); + +/// Maximum number of magnetic quantum numbers for a single L: 2*MAX_L + 1 = 9 +constexpr int MAX_M0_SIZE = 2 * MAX_L + 1; + +//============================================================================= +// Device Helper Functions - Complex Arithmetic +//============================================================================= + +/** + * @brief Compute exp(i * theta) = cos(theta) + i * sin(theta) + * @param theta Phase angle in radians + * @return Complex exponential as cuDoubleComplex + */ +__device__ __forceinline__ cuDoubleComplex cu_exp_i(double theta) +{ + double s, c; + sincos(theta, &s, &c); + return make_cuDoubleComplex(c, s); +} + +/** + * @brief Complex multiplication: a * b + */ +__device__ __forceinline__ cuDoubleComplex cu_mul(cuDoubleComplex a, cuDoubleComplex b) +{ + return make_cuDoubleComplex(a.x * b.x - a.y * b.y, a.x * b.y + a.y * b.x); +} + +/** + * @brief Complex addition: a + b + */ +__device__ __forceinline__ cuDoubleComplex cu_add(cuDoubleComplex a, cuDoubleComplex b) +{ + return make_cuDoubleComplex(a.x + b.x, a.y + b.y); +} + +/** + * @brief Complex conjugate: conj(a) + */ +__device__ __forceinline__ cuDoubleComplex cu_conj(cuDoubleComplex a) +{ + return make_cuDoubleComplex(a.x, -a.y); +} + +/** + * @brief Complex times real: a * r + */ +__device__ __forceinline__ cuDoubleComplex cu_mul_real(cuDoubleComplex a, double r) +{ + return make_cuDoubleComplex(a.x * r, a.y * r); +} + +//============================================================================= +// Device Helper Functions - Radial Interpolation +//============================================================================= + +/** + * @brief Cubic spline interpolation for radial functions + * + * Implements cubic polynomial interpolation using 4 consecutive grid points. + * This is the GPU equivalent of CPU-side PolyInt::Polynomial_Interpolation. + * + * @param psi Radial function values on uniform grid + * @param mesh Number of grid points + * @param inv_dk Inverse of grid spacing (1/dk) + * @param distance Radial distance r at which to interpolate + * @return Interpolated function value + */ +__device__ __forceinline__ double interpolate_radial_gpu(const double* __restrict__ psi, + int mesh, + double inv_dk, + double distance) +{ + double position = distance * inv_dk; + int iq = __double2int_rd(position); // floor(position) + + // Boundary checks + if (iq > mesh - 4 || iq < 0) + { + return 0.0; + } + + // Lagrange interpolation weights + double x0 = position - static_cast(iq); + double x1 = 1.0 - x0; + double x2 = 2.0 - x0; + double x3 = 3.0 - x0; + + // 4-point Lagrange interpolation formula + return x1 * x2 * (psi[iq] * x3 + psi[iq + 3] * x0) / 6.0 + x0 * x3 * (psi[iq + 1] * x2 - psi[iq + 2] * x1) / 2.0; +} + +//============================================================================= +// Device Helper Functions - Spherical Harmonics +//============================================================================= + + +//============================================================================= +// Data Structures for Kernel Input +//============================================================================= + +/** + * @brief Non-local projector (beta function) information + * + * Contains all data needed to evaluate a single projector during integration. + */ +struct ProjectorData +{ + int L0; ///< Angular momentum quantum number + int beta_offset; ///< Offset into flattened beta radial array + int beta_mesh; ///< Number of radial mesh points + double beta_dk; ///< Radial grid spacing + double beta_rcut; ///< Cutoff radius for projector + double r_min; ///< Minimum radial grid value (integration start) + double r_max; ///< Maximum radial grid value (integration end) +}; + +/** + * @brief Neighbor atom orbital information for atom-level batching + * + * Each structure represents one (neighbor_atom, orbital) pair that contributes + * to the overlap integral. This enables processing ALL neighbors for a center + * atom in a single kernel launch, minimizing launch overhead. + */ +struct NeighborOrbitalData +{ + int neighbor_idx; ///< Index of neighbor atom (ad index in adjacency list) + double3 R1; ///< Neighbor atom position in Cartesian coordinates (tau * lat0) + + // Orbital information + int L1; ///< Angular momentum of orbital + int m1; ///< Magnetic quantum number of orbital + int N1; ///< Radial quantum number of orbital + int iw_index; ///< Global orbital index for output mapping + int psi_offset; ///< Offset into flattened psi radial array + int psi_mesh; ///< Number of radial mesh points for orbital + double psi_dk; ///< Radial grid spacing for orbital + double psi_rcut; ///< Cutoff radius for orbital +}; + +//============================================================================= +// Main CUDA Kernel Declaration +//============================================================================= + +/** + * @brief Atom-level batch kernel for overlap computation + * + * This kernel processes ALL neighbor orbitals for a single center atom in one + * launch, significantly reducing kernel launch overhead. Each thread block + * handles the integration for one (neighbor_orbital, projector) pair. + * + * Grid Configuration: + * - gridDim.x = total_neighbor_orbitals (all orbitals from all neighbors) + * - gridDim.y = nproj (number of projectors on center atom) + * + * Block Configuration: + * - blockDim.x = BLOCK_SIZE threads for parallel integration + * + * Integration Strategy: + * - Angular loop (outer): each thread processes different angular points + * - Radial loop (inner): each thread accumulates over all radial points + * - Warp shuffle reduction for efficient summation + * + * @param R0 Center atom position (projector location) + * @param A Vector potential for phase factor + * @param neighbor_orbitals Array of neighbor-orbital data [total_neighbor_orbitals] + * @param projectors Array of projector data [nproj] + * @param psi_radial Flattened array of orbital radial functions + * @param beta_radial Flattened array of projector radial functions + * @param proj_m0_offset Starting index of each projector's m=0 component in output + * @param total_neighbor_orbitals Total number of (neighbor, orbital) pairs + * @param nproj Number of projectors on center atom + * @param natomwfc Total projector components: sum of (2*L0+1) for all projectors + * @param nlm_dim Output dimension: 1 for overlap only, 4 for overlap + current + * @param nlm_out Output array [total_neighbor_orbitals * nlm_dim * natomwfc] + */ +__global__ void snap_psibeta_atom_batch_kernel(double3 R0, + double3 A, + const NeighborOrbitalData* __restrict__ neighbor_orbitals, + const ProjectorData* __restrict__ projectors, + const double* __restrict__ psi_radial, + const double* __restrict__ beta_radial, + const int* __restrict__ proj_m0_offset, + int total_neighbor_orbitals, + int nproj, + int natomwfc, + int nlm_dim, + cuDoubleComplex* __restrict__ nlm_out); + +//============================================================================= +// Host-side Initialization +//============================================================================= + +/** + * @brief Copy integration grids to GPU constant memory + * + * Copies the Lebedev-Laikov angular grid (110 points) and Gauss-Legendre + * radial grid (140 points) to CUDA constant memory for fast access during + * kernel execution. + * + * @note Must be called once before any kernel launches in a calculation session. + */ +void copy_grids_to_device(); + +} // namespace gpu +} // namespace module_rt + +#endif // SNAP_PSIBETA_KERNEL_CUH diff --git a/source/source_lcao/module_rt/kernels/snap_psibeta_gpu.h b/source/source_lcao/module_rt/kernels/snap_psibeta_gpu.h new file mode 100644 index 0000000000..6e97b078f4 --- /dev/null +++ b/source/source_lcao/module_rt/kernels/snap_psibeta_gpu.h @@ -0,0 +1,64 @@ +#ifndef SNAP_PSIBETA_GPU_H +#define SNAP_PSIBETA_GPU_H + +#include "source_base/vector3.h" +#include "source_basis/module_ao/ORB_read.h" +#include "source_basis/module_ao/parallel_orbitals.h" +#include "source_cell/module_neighbor/sltk_grid_driver.h" +#include "source_cell/setup_nonlocal.h" +#include "source_cell/unitcell.h" + +#include +#include +#include + +#ifdef __CUDA +#include +#endif + +namespace module_rt +{ +namespace gpu +{ + +/** + * @brief Initialize GPU resources for snap_psibeta module (copy grids to constant memory) + * Should be called at the start of each calculate_HR + */ +void init_snap_psibeta_gpu(); + +/** + * @brief Atom-level GPU batch processing interface + * + * Processes ALL neighbors for a center atom in a SINGLE kernel launch. + * This significantly reduces kernel launch overhead compared to neighbor-level batching. + * + * @param orb Orbital information + * @param infoNL_ Non-local pseudopotential information + * @param T0 Center atom type (projector location) + * @param R0 Center atom position (already multiplied by lat0) + * @param A Vector potential + * @param adjs Adjacent atom information for this center atom + * @param ucell Unit cell pointer + * @param paraV Parallel orbitals information + * @param npol Polarization number + * @param nlm_dim 1 for no current, 4 for current calculation + * @param nlm_tot Output: nlm_tot[ad][dir][iw_index] = nlm_vector + */ +void snap_psibeta_atom_batch_gpu( + const LCAO_Orbitals& orb, + const InfoNonlocal& infoNL_, + const int T0, + const ModuleBase::Vector3& R0, + const ModuleBase::Vector3& A, + const AdjacentAtomInfo& adjs, + const UnitCell* ucell, + const Parallel_Orbitals* paraV, + const int npol, + const int nlm_dim, + std::vector>>>>& nlm_tot); + +} // namespace gpu +} // namespace module_rt + +#endif // SNAP_PSIBETA_GPU_H diff --git a/source/source_lcao/module_rt/middle_hamilt.cpp b/source/source_lcao/module_rt/middle_hamilt.cpp index 9706afa558..a7b875a270 100644 --- a/source/source_lcao/module_rt/middle_hamilt.cpp +++ b/source/source_lcao/module_rt/middle_hamilt.cpp @@ -1,9 +1,12 @@ #include "middle_hamilt.h" +#include "source_base/global_variable.h" #include "source_base/module_container/ATen/kernels/blas.h" #include "source_base/module_device/memory_op.h" // memory operations #include "source_base/module_external/scalapack_connector.h" +#include "source_base/timer.h" +#include #include #include @@ -80,88 +83,125 @@ void half_Hmatrix_tensor(const Parallel_Orbitals* pv, const ct::Tensor& H_laststep, const ct::Tensor& S_laststep, std::ofstream& ofs_running, - const int print_matrix) + const int print_matrix, + CublasMpResources& cublas_res) { - if (print_matrix) +#ifdef __CUBLASMP + // 1. Validate resources and ensure the grid is properly initialized + if (!cublas_res.is_initialized || cublas_res.cublasmp_grid == nullptr) { - ofs_running << std::setprecision(10); - ofs_running << std::endl; - ofs_running << " H(t+dt) :" << std::endl; - for (int i = 0; i < pv->nrow; i++) - { - const int in = i * pv->ncol; - for (int j = 0; j < pv->ncol; j++) - { - ofs_running << Htmp.data>()[in + j].real() << "+" - << Htmp.data>()[in + j].imag() << "i "; - } - ofs_running << std::endl; - } - ofs_running << std::endl; - ofs_running << std::endl; - ofs_running << " H(t):" << std::endl; - for (int i = 0; i < pv->nrow; i++) - { - const int in = i * pv->ncol; - for (int j = 0; j < pv->ncol; j++) - { - ofs_running << H_laststep.data>()[in + j].real() << "+" - << H_laststep.data>()[in + j].imag() << "i "; - } - ofs_running << std::endl; - } - ofs_running << std::endl; + return; } + assert(Htmp.device_type() == ct::DeviceType::GpuDevice); + assert(Stmp.device_type() == ct::DeviceType::GpuDevice); + assert(H_laststep.device_type() == ct::DeviceType::GpuDevice); + assert(S_laststep.device_type() == ct::DeviceType::GpuDevice); + + // 2. Extract device pointers + void* d_Htmp = static_cast(Htmp.data>()); + void* d_Stmp = static_cast(Stmp.data>()); + void* d_H_last = static_cast(const_cast*>(H_laststep.data>())); + void* d_S_last = static_cast(const_cast*>(S_laststep.data>())); + + int64_t m_global = pv->desc[2]; + int64_t n_global = pv->desc[3]; + int64_t mb = pv->desc[4]; + int64_t nb = pv->desc[5]; + int64_t rsrc = pv->desc[6]; + int64_t csrc = pv->desc[7]; + int64_t lld = pv->desc[8]; + + // 3. Create matrix descriptor + cublasMpMatrixDescriptor_t desc_mat; + cublasMpMatrixDescriptorCreate(m_global, + n_global, + mb, + nb, + rsrc, + csrc, + lld, + CUDA_C_64F, + cublas_res.cublasmp_grid, + &desc_mat); + std::complex alpha = {0.5, 0.0}; std::complex beta = {0.5, 0.0}; - // Perform the operation Htmp = alpha * H_laststep + beta * Htmp - ScalapackConnector::geadd('N', - nlocal, - nlocal, - alpha, - H_laststep.data>(), - 1, - 1, - pv->desc, - beta, - Htmp.data>(), - 1, - 1, - pv->desc); + size_t ws_size_dev = 0; + size_t ws_size_host = 0; - // Perform the operation Stmp = alpha * S_laststep + beta * Stmp - ScalapackConnector::geadd('N', - nlocal, - nlocal, - alpha, - S_laststep.data>(), - 1, - 1, - pv->desc, - beta, - Stmp.data>(), - 1, - 1, - pv->desc); + // 4. Query workspace size + cublasMpGeadd_bufferSize(cublas_res.cublasmp_handle, + CUBLAS_OP_N, + m_global, + n_global, + &alpha, + d_H_last, + 1, + 1, + desc_mat, + &beta, + d_Htmp, + 1, + 1, + desc_mat, + &ws_size_dev, + &ws_size_host); - if (print_matrix) - { - ofs_running << std::endl; - ofs_running << " H (t+dt/2) :" << std::endl; - for (int i = 0; i < pv->nrow; i++) - { - const int in = i * pv->ncol; - for (int j = 0; j < pv->ncol; j++) - { - ofs_running << Htmp.data>()[in + j].real() << "+" - << Htmp.data>()[in + j].imag() << "i "; - } - ofs_running << std::endl; - } - ofs_running << std::endl; - } + void* d_work = nullptr; + void* h_work = nullptr; + + cudaMallocAsync(&d_work, ws_size_dev, cublas_res.stream); + h_work = malloc(ws_size_host); + + // 5. Compute Htmp = 0.5 * H_last + 0.5 * Htmp + cublasMpGeadd(cublas_res.cublasmp_handle, + CUBLAS_OP_N, + m_global, + n_global, + &alpha, + d_H_last, + 1, + 1, + desc_mat, + &beta, + d_Htmp, + 1, + 1, + desc_mat, + d_work, + ws_size_dev, + h_work, + ws_size_host); + + // 6. Compute Stmp = 0.5 * S_last + 0.5 * Stmp + cublasMpGeadd(cublas_res.cublasmp_handle, + CUBLAS_OP_N, + m_global, + n_global, + &alpha, + d_S_last, + 1, + 1, + desc_mat, + &beta, + d_Stmp, + 1, + 1, + desc_mat, + d_work, + ws_size_dev, + h_work, + ws_size_host); + + // 7. Synchronize stream and release resources + cudaStreamSynchronize(cublas_res.stream); + + cublasMpMatrixDescriptorDestroy(desc_mat); + cudaFreeAsync(d_work, cublas_res.stream); + free(h_work); +#endif // __CUBLASMP } template @@ -180,40 +220,6 @@ void half_Hmatrix_tensor_lapack(const Parallel_Orbitals* pv, // ct_Device = ct::DEVICE_CPU or ct::DEVICE_GPU using ct_Device = typename ct::PsiToContainer::type; - if (print_matrix) - { - ct::Tensor Htmp_cpu = Htmp.to_device(); - ct::Tensor H_laststep_cpu = H_laststep.to_device(); - - ofs_running << std::setprecision(10); - ofs_running << std::endl; - ofs_running << " H(t+dt) :" << std::endl; - for (int i = 0; i < nlocal; i++) - { - const int in = i * nlocal; - for (int j = 0; j < nlocal; j++) - { - ofs_running << Htmp_cpu.data>()[in + j].real() << "+" - << Htmp_cpu.data>()[in + j].imag() << "i "; - } - ofs_running << std::endl; - } - ofs_running << std::endl; - ofs_running << std::endl; - ofs_running << " H(t):" << std::endl; - for (int i = 0; i < nlocal; i++) - { - const int in = i * nlocal; - for (int j = 0; j < nlocal; j++) - { - ofs_running << H_laststep_cpu.data>()[in + j].real() << "+" - << H_laststep_cpu.data>()[in + j].imag() << "i "; - } - ofs_running << std::endl; - } - ofs_running << std::endl; - } - std::complex one_half = {0.5, 0.0}; // Perform the operation Htmp = one_half * H_laststep + one_half * Htmp @@ -243,25 +249,6 @@ void half_Hmatrix_tensor_lapack(const Parallel_Orbitals* pv, 1, Stmp.data>(), 1); - - if (print_matrix) - { - ct::Tensor Htmp_cpu = Htmp.to_device(); - - ofs_running << std::endl; - ofs_running << " H (t+dt/2) :" << std::endl; - for (int i = 0; i < nlocal; i++) - { - const int in = i * nlocal; - for (int j = 0; j < nlocal; j++) - { - ofs_running << Htmp_cpu.data>()[in + j].real() << "+" - << Htmp_cpu.data>()[in + j].imag() << "i "; - } - ofs_running << std::endl; - } - ofs_running << std::endl; - } } // Explicit instantiation of template functions diff --git a/source/source_lcao/module_rt/middle_hamilt.h b/source/source_lcao/module_rt/middle_hamilt.h index e505185b00..5b59154e4b 100644 --- a/source/source_lcao/module_rt/middle_hamilt.h +++ b/source/source_lcao/module_rt/middle_hamilt.h @@ -8,6 +8,7 @@ #include "source_base/module_container/ATen/core/tensor.h" // ct::Tensor #include "source_basis/module_ao/parallel_orbitals.h" +#include "source_lcao/module_rt/kernels/cublasmp_context.h" #include @@ -43,7 +44,8 @@ void half_Hmatrix_tensor(const Parallel_Orbitals* pv, const ct::Tensor& H_laststep, const ct::Tensor& S_laststep, std::ofstream& ofs_running, - const int print_matrix); + const int print_matrix, + CublasMpResources& cublas_res); template void half_Hmatrix_tensor_lapack(const Parallel_Orbitals* pv, diff --git a/source/source_lcao/module_rt/norm_psi.cpp b/source/source_lcao/module_rt/norm_psi.cpp index 307cef9f80..40884b02df 100644 --- a/source/source_lcao/module_rt/norm_psi.cpp +++ b/source/source_lcao/module_rt/norm_psi.cpp @@ -1,14 +1,18 @@ #include "norm_psi.h" +#include "source_base/global_function.h" // ModuleBase::GlobalFunc::ZEROS #include "source_base/module_container/ATen/kernels/blas.h" #include "source_base/module_external/blas_connector.h" #include "source_base/module_external/scalapack_connector.h" +#include "source_base/timer.h" -#include "source_base/global_function.h" // ModuleBase::GlobalFunc::ZEROS +#ifdef __CUBLASMP +#include "kernels/cuda/norm_psi_kernel.cuh" +#endif +#include #include #include -#include namespace module_rt { @@ -16,7 +20,7 @@ namespace module_rt inline int globalIndex(int localindex, int nblk, int nprocs, int myproc) { - int iblock, gIndex; + int iblock = 0, gIndex = 0; iblock = localindex / nblk; gIndex = (iblock * nprocs + myproc) * nblk + localindex % nblk; return gIndex; @@ -232,207 +236,264 @@ void norm_psi_tensor(const Parallel_Orbitals* pv, const ct::Tensor& Stmp, ct::Tensor& psi_k, std::ofstream& ofs_running, - const int print_matrix) + const int print_matrix, + CublasMpResources& cublas_res) { - assert(pv->nloc_wfc > 0 && pv->nloc > 0); - - // Create Tensor objects for temporary data - ct::Tensor tmp1(ct::DataType::DT_COMPLEX_DOUBLE, ct::DeviceType::CpuDevice, ct::TensorShape({pv->nloc_wfc})); - tmp1.zero(); - - ct::Tensor Cij(ct::DataType::DT_COMPLEX_DOUBLE, ct::DeviceType::CpuDevice, ct::TensorShape({pv->nloc})); - Cij.zero(); - - // Perform matrix multiplication: tmp1 = Stmp * psi_k - ScalapackConnector::gemm('N', - 'N', - nlocal, - nband, - nlocal, - 1.0, - Stmp.data>(), - 1, - 1, - pv->desc, - psi_k.data>(), - 1, - 1, - pv->desc_wfc, - 0.0, - tmp1.data>(), - 1, - 1, - pv->desc_wfc); - - // Perform matrix multiplication: Cij = psi_k^dagger * tmp1 - ScalapackConnector::gemm('C', - 'N', - nband, - nband, - nlocal, - 1.0, - psi_k.data>(), - 1, - 1, - pv->desc_wfc, - tmp1.data>(), - 1, - 1, - pv->desc_wfc, - 0.0, - Cij.data>(), - 1, - 1, - pv->desc_Eij); - - if (print_matrix) +#ifdef __CUBLASMP + if (!cublas_res.is_initialized || cublas_res.cublasmp_grid == nullptr) { - ofs_running << "original Cij :" << std::endl; - for (int i = 0; i < pv->ncol; i++) - { - const int in = i * pv->ncol; - for (int j = 0; j < pv->nrow; j++) - { - double aa = Cij.data>()[in + j].real(); - double bb = Cij.data>()[in + j].imag(); - if (std::abs(aa) < 1e-8) - { - aa = 0.0; - } - if (std::abs(bb) < 1e-8) - { - bb = 0.0; - } - ofs_running << aa << "+" << bb << "i "; - } - ofs_running << std::endl; - } - ofs_running << std::endl; + return; } - int naroc[2] = {0, 0}; // maximum number of row or column + void* d_S = static_cast(const_cast*>(Stmp.data>())); + void* d_Psi = static_cast(psi_k.data>()); + int64_t psi_elems = psi_k.NumElements(); - for (int iprow = 0; iprow < pv->dim0; ++iprow) - { - for (int ipcol = 0; ipcol < pv->dim1; ++ipcol) - { - if (iprow == pv->coord[0] && ipcol == pv->coord[1]) - { - naroc[0] = pv->nrow; - naroc[1] = pv->ncol; - for (int j = 0; j < naroc[1]; ++j) - { - int igcol = globalIndex(j, pv->nb, pv->dim1, ipcol); - if (igcol >= nband) - { - continue; - } - for (int i = 0; i < naroc[0]; ++i) - { - int igrow = globalIndex(i, pv->nb, pv->dim0, iprow); - if (igrow >= nband) - { - continue; - } - if (igcol == igrow) - { - Cij.data>()[j * naroc[0] + i] - = {1.0 / sqrt(Cij.data>()[j * naroc[0] + i].real()), 0.0}; - } - else - { - Cij.data>()[j * naroc[0] + i] = {0.0, 0.0}; - } - } - } - } - } // loop ipcol - } // loop iprow + ct::Tensor Tmp1_gpu(ct::DataType::DT_COMPLEX_DOUBLE, ct::DeviceType::GpuDevice, ct::TensorShape({psi_elems})); + void* d_Tmp1 = static_cast(Tmp1_gpu.data>()); - // Copy psi_k to tmp1 (using deep copy) - // tmp1.CopyFrom(psi_k); // Does not work because this will cause tmp1 and psi_k to share the same data - tmp1 = psi_k; // operator= overload for Tensor class + int64_t cij_elems = pv->nloc; + ct::Tensor Cij_gpu(ct::DataType::DT_COMPLEX_DOUBLE, ct::DeviceType::GpuDevice, ct::TensorShape({cij_elems})); + void* d_Cij = static_cast(Cij_gpu.data>()); - // Perform matrix multiplication: psi_k = tmp1 * Cij - ScalapackConnector::gemm('N', - 'N', - nlocal, - nband, - nband, - 1.0, - tmp1.data>(), - 1, - 1, - pv->desc_wfc, - Cij.data>(), - 1, - 1, - pv->desc_Eij, - 0.0, - psi_k.data>(), - 1, - 1, - pv->desc_wfc); + cudaMemsetAsync(d_Cij, 0, cij_elems * sizeof(std::complex), cublas_res.stream); - if (print_matrix) - { - ofs_running << " Cij:" << std::endl; - for (int i = 0; i < pv->ncol; i++) - { - const int in = i * pv->ncol; - for (int j = 0; j < pv->nrow; j++) - { - ofs_running << Cij.data>()[in + j].real() << "+" - << Cij.data>()[in + j].imag() << "i "; - } - ofs_running << std::endl; - } - ofs_running << std::endl; - ofs_running << std::endl; - ofs_running << " psi_k:" << std::endl; - for (int i = 0; i < pv->ncol_bands; i++) - { - const int in = i * pv->ncol; - for (int j = 0; j < pv->ncol; j++) - { - double aa = psi_k.data>()[in + j].real(); - double bb = psi_k.data>()[in + j].imag(); - if (std::abs(aa) < 1e-8) - { - aa = 0.0; - } - if (std::abs(bb) < 1e-8) - { - bb = 0.0; - } - ofs_running << aa << "+" << bb << "i "; - } - ofs_running << std::endl; - } - ofs_running << std::endl; - ofs_running << " psi_k before normalization:" << std::endl; - for (int i = 0; i < pv->ncol_bands; i++) - { - const int in = i * pv->ncol; - for (int j = 0; j < pv->ncol; j++) - { - double aa = tmp1.data>()[in + j].real(); - double bb = tmp1.data>()[in + j].imag(); - if (std::abs(aa) < 1e-8) - { - aa = 0.0; - } - if (std::abs(bb) < 1e-8) - { - bb = 0.0; - } - ofs_running << aa << "+" << bb << "i "; - } - ofs_running << std::endl; - } - ofs_running << std::endl; - ofs_running << std::endl; - } + std::complex alpha = {1.0, 0.0}; + std::complex beta = {0.0, 0.0}; + + cublasMpMatrixDescriptor_t desc_S, desc_Psi, desc_Cij; + + cublasMpMatrixDescriptorCreate(nlocal, + nlocal, + pv->desc[4], + pv->desc[5], + 0, + 0, + pv->desc[8], + CUDA_C_64F, + cublas_res.cublasmp_grid, + &desc_S); + + cublasMpMatrixDescriptorCreate(nlocal, + nband, + pv->desc_wfc[4], + pv->desc_wfc[5], + 0, + 0, + pv->desc_wfc[8], + CUDA_C_64F, + cublas_res.cublasmp_grid, + &desc_Psi); + + cublasMpMatrixDescriptorCreate(nband, + nband, + pv->desc_Eij[4], + pv->desc_Eij[5], + 0, + 0, + pv->desc_Eij[8], + CUDA_C_64F, + cublas_res.cublasmp_grid, + &desc_Cij); + + size_t ws_dev = 0, ws_host = 0; + void *d_work = nullptr, *h_work = nullptr; + + // GEMM 1: S * Psi -> Tmp1 + cublasMpGemm_bufferSize(cublas_res.cublasmp_handle, + CUBLAS_OP_N, + CUBLAS_OP_N, + nlocal, + nband, + nlocal, + &alpha, + d_S, + 1, + 1, + desc_S, + d_Psi, + 1, + 1, + desc_Psi, + &beta, + d_Tmp1, + 1, + 1, + desc_Psi, + CUBLAS_COMPUTE_64F, + &ws_dev, + &ws_host); + + cudaMallocAsync(&d_work, ws_dev, cublas_res.stream); + h_work = malloc(ws_host); + + cublasMpGemm(cublas_res.cublasmp_handle, + CUBLAS_OP_N, + CUBLAS_OP_N, + nlocal, + nband, + nlocal, + &alpha, + d_S, + 1, + 1, + desc_S, + d_Psi, + 1, + 1, + desc_Psi, + &beta, + d_Tmp1, + 1, + 1, + desc_Psi, + CUBLAS_COMPUTE_64F, + d_work, + ws_dev, + h_work, + ws_host); + + cudaFreeAsync(d_work, cublas_res.stream); + free(h_work); + + // GEMM 2: Psi^H * Tmp1 -> Cij + cublasMpGemm_bufferSize(cublas_res.cublasmp_handle, + CUBLAS_OP_C, + CUBLAS_OP_N, + nband, + nband, + nlocal, + &alpha, + d_Psi, + 1, + 1, + desc_Psi, + d_Tmp1, + 1, + 1, + desc_Psi, + &beta, + d_Cij, + 1, + 1, + desc_Cij, + CUBLAS_COMPUTE_64F, + &ws_dev, + &ws_host); + + cudaMallocAsync(&d_work, ws_dev, cublas_res.stream); + h_work = malloc(ws_host); + + cublasMpGemm(cublas_res.cublasmp_handle, + CUBLAS_OP_C, + CUBLAS_OP_N, + nband, + nband, + nlocal, + &alpha, + d_Psi, + 1, + 1, + desc_Psi, + d_Tmp1, + 1, + 1, + desc_Psi, + &beta, + d_Cij, + 1, + 1, + desc_Cij, + CUBLAS_COMPUTE_64F, + d_work, + ws_dev, + h_work, + ws_host); + + cudaFreeAsync(d_work, cublas_res.stream); + free(h_work); + + // Launch GPU In-place Normalization using the C++ wrapper + module_rt::gpu::launch_normalize_cij_kernel(reinterpret_cast(d_Cij), + pv->desc_Eij[8], + pv->nloc, + pv->desc_Eij[4], + pv->dim0, + pv->dim1, + pv->coord[0], + pv->coord[1], + nband, + cublas_res.stream); + + // GEMM 3: Tmp1 * Cij -> Psi + cudaMemcpyAsync(d_Tmp1, + d_Psi, + psi_elems * sizeof(std::complex), + cudaMemcpyDeviceToDevice, + cublas_res.stream); + + cublasMpGemm_bufferSize(cublas_res.cublasmp_handle, + CUBLAS_OP_N, + CUBLAS_OP_N, + nlocal, + nband, + nband, + &alpha, + d_Tmp1, + 1, + 1, + desc_Psi, + d_Cij, + 1, + 1, + desc_Cij, + &beta, + d_Psi, + 1, + 1, + desc_Psi, + CUBLAS_COMPUTE_64F, + &ws_dev, + &ws_host); + + cudaMallocAsync(&d_work, ws_dev, cublas_res.stream); + h_work = malloc(ws_host); + + cublasMpGemm(cublas_res.cublasmp_handle, + CUBLAS_OP_N, + CUBLAS_OP_N, + nlocal, + nband, + nband, + &alpha, + d_Tmp1, + 1, + 1, + desc_Psi, + d_Cij, + 1, + 1, + desc_Cij, + &beta, + d_Psi, + 1, + 1, + desc_Psi, + CUBLAS_COMPUTE_64F, + d_work, + ws_dev, + h_work, + ws_host); + + cudaStreamSynchronize(cublas_res.stream); + + cublasMpMatrixDescriptorDestroy(desc_S); + cublasMpMatrixDescriptorDestroy(desc_Psi); + cublasMpMatrixDescriptorDestroy(desc_Cij); + + cudaFreeAsync(d_work, cublas_res.stream); + free(h_work); +#endif // __CUBLASMP } template @@ -494,33 +555,6 @@ void norm_psi_tensor_lapack(const Parallel_Orbitals* pv, Cij.data>(), nlocal); // Leading dimension of Cij - if (print_matrix) - { - ct::Tensor Cij_print_cpu = Cij.to_device(); - - ofs_running << "original Cij :" << std::endl; - for (int i = 0; i < nlocal; i++) - { - const int in = i * nlocal; - for (int j = 0; j < nlocal; j++) - { - double aa = Cij_print_cpu.data>()[in + j].real(); - double bb = Cij_print_cpu.data>()[in + j].imag(); - if (std::abs(aa) < 1e-8) - { - aa = 0.0; - } - if (std::abs(bb) < 1e-8) - { - bb = 0.0; - } - ofs_running << aa << "+" << bb << "i "; - } - ofs_running << std::endl; - } - ofs_running << std::endl; - } - // Normalize Cij: set diagonal elements to 1/sqrt(Cij[i][i]), off-diagonal elements to 0 if (ct_device_type == ct::DeviceType::GpuDevice) { @@ -587,70 +621,6 @@ void norm_psi_tensor_lapack(const Parallel_Orbitals* pv, &beta, psi_k.data>(), nlocal); // Leading dimension of psi_k - - if (print_matrix) - { - ct::Tensor Cij_print_cpu = Cij.to_device(); - ct::Tensor psi_k_cpu = psi_k.to_device(); - ct::Tensor tmp1_cpu = tmp1.to_device(); - - ofs_running << " Cij:" << std::endl; - for (int i = 0; i < nlocal; i++) - { - const int in = i * nlocal; - for (int j = 0; j < nlocal; j++) - { - ofs_running << Cij_print_cpu.data>()[in + j].real() << "+" - << Cij_print_cpu.data>()[in + j].imag() << "i "; - } - ofs_running << std::endl; - } - ofs_running << std::endl; - ofs_running << std::endl; - ofs_running << " psi_k:" << std::endl; - for (int i = 0; i < nband; i++) - { - const int in = i * nlocal; - for (int j = 0; j < nlocal; j++) - { - double aa = psi_k_cpu.data>()[in + j].real(); - double bb = psi_k_cpu.data>()[in + j].imag(); - if (std::abs(aa) < 1e-8) - { - aa = 0.0; - } - if (std::abs(bb) < 1e-8) - { - bb = 0.0; - } - ofs_running << aa << "+" << bb << "i "; - } - ofs_running << std::endl; - } - ofs_running << std::endl; - ofs_running << " psi_k before normalization:" << std::endl; - for (int i = 0; i < nband; i++) - { - const int in = i * nlocal; - for (int j = 0; j < nlocal; j++) - { - double aa = tmp1_cpu.data>()[in + j].real(); - double bb = tmp1_cpu.data>()[in + j].imag(); - if (std::abs(aa) < 1e-8) - { - aa = 0.0; - } - if (std::abs(bb) < 1e-8) - { - bb = 0.0; - } - ofs_running << aa << "+" << bb << "i "; - } - ofs_running << std::endl; - } - ofs_running << std::endl; - ofs_running << std::endl; - } } // Explicit instantiation of template functions diff --git a/source/source_lcao/module_rt/norm_psi.h b/source/source_lcao/module_rt/norm_psi.h index 9c9435f318..f61aae86ec 100644 --- a/source/source_lcao/module_rt/norm_psi.h +++ b/source/source_lcao/module_rt/norm_psi.h @@ -8,6 +8,7 @@ #include "source_base/module_container/ATen/core/tensor.h" // ct::Tensor #include "source_basis/module_ao/parallel_orbitals.h" +#include "source_lcao/module_rt/kernels/cublasmp_context.h" #include @@ -39,7 +40,8 @@ void norm_psi_tensor(const Parallel_Orbitals* pv, const ct::Tensor& Stmp, ct::Tensor& psi_k, std::ofstream& ofs_running, - const int print_matrix); + const int print_matrix, + CublasMpResources& cublas_res); template void norm_psi_tensor_lapack(const Parallel_Orbitals* pv, diff --git a/source/source_lcao/module_rt/propagator.cpp b/source/source_lcao/module_rt/propagator.cpp index c058d0eedf..b74b4fb8dd 100644 --- a/source/source_lcao/module_rt/propagator.cpp +++ b/source/source_lcao/module_rt/propagator.cpp @@ -1,11 +1,11 @@ #include "propagator.h" +#include "source_base/global_function.h" #include "source_base/module_container/ATen/kernels/blas.h" #include "source_base/module_container/ATen/kernels/lapack.h" #include "source_base/module_container/ATen/kernels/memory.h" // memory operations (Tensor) #include "source_base/module_device/memory_op.h" // memory operations #include "source_io/module_parameter/parameter.h" -#include "source_base/global_function.h" #include #include @@ -24,7 +24,7 @@ void Propagator::compute_propagator(const int nlocal, std::ofstream& ofs_running, const int print_matrix) const { - int tag; + int tag = 0; switch (ptype) { case 0: @@ -54,15 +54,16 @@ void Propagator::compute_propagator_tensor(const int nlocal, ct::Tensor& U_operator, std::ofstream& ofs_running, const int print_matrix, - const bool use_lapack) const + const bool use_lapack, + CublasMpResources& cublas_res) const { - int tag; + int tag = 0; switch (ptype) { case 0: if (!use_lapack) { - compute_propagator_cn2_tensor(nlocal, Stmp, Htmp, U_operator, ofs_running, print_matrix); + compute_propagator_cn2_tensor(nlocal, Stmp, Htmp, U_operator, ofs_running, print_matrix, cublas_res); } else { @@ -91,7 +92,8 @@ template void Propagator::compute_propagator_tensor(con ct::Tensor& U_operator, std::ofstream& ofs_running, const int print_matrix, - const bool use_lapack) const; + const bool use_lapack, + CublasMpResources& cublas_res) const; #if ((defined __CUDA) /* || (defined __ROCM) */) template void Propagator::compute_propagator_tensor(const int nlocal, const ct::Tensor& Stmp, @@ -100,7 +102,8 @@ template void Propagator::compute_propagator_tensor(con ct::Tensor& U_operator, std::ofstream& ofs_running, const int print_matrix, - const bool use_lapack) const; + const bool use_lapack, + CublasMpResources& cublas_res) const; #endif // __CUDA #endif // __MPI } // namespace module_rt diff --git a/source/source_lcao/module_rt/propagator.h b/source/source_lcao/module_rt/propagator.h index ca9c7c140b..67a2e8bd5a 100644 --- a/source/source_lcao/module_rt/propagator.h +++ b/source/source_lcao/module_rt/propagator.h @@ -9,6 +9,7 @@ #include "source_base/constants.h" #include "source_base/module_container/ATen/core/tensor.h" // ct::Tensor #include "source_basis/module_ao/parallel_orbitals.h" +#include "source_lcao/module_rt/kernels/cublasmp_context.h" #include @@ -139,12 +140,13 @@ class Propagator ct::Tensor& U_operator, std::ofstream& ofs_running, const int print_matrix, - const bool use_lapack) const; + const bool use_lapack, + CublasMpResources& cublas_res) const; #endif // __MPI private: int ptype; // type of propagator - const Parallel_Orbitals* ParaV; + const Parallel_Orbitals* ParaV = nullptr; double dt; // time step #ifdef __MPI @@ -170,7 +172,8 @@ class Propagator const ct::Tensor& Htmp, ct::Tensor& U_operator, std::ofstream& ofs_running, - const int print_matrix) const; + const int print_matrix, + CublasMpResources& cublas_res) const; template void compute_propagator_cn2_tensor_lapack(const int nlocal, diff --git a/source/source_lcao/module_rt/propagator_cn2.cpp b/source/source_lcao/module_rt/propagator_cn2.cpp index accb578ecb..3f85ed26a0 100644 --- a/source/source_lcao/module_rt/propagator_cn2.cpp +++ b/source/source_lcao/module_rt/propagator_cn2.cpp @@ -1,16 +1,17 @@ -#include "source_base/module_external/blas_connector.h" +#include "propagator.h" +#include "source_base/global_function.h" #include "source_base/module_container/ATen/kernels/blas.h" #include "source_base/module_container/ATen/kernels/lapack.h" #include "source_base/module_container/ATen/kernels/memory.h" // memory operations (Tensor) #include "source_base/module_device/memory_op.h" // memory operations +#include "source_base/module_external/blas_connector.h" #include "source_base/module_external/scalapack_connector.h" +#include "source_base/timer.h" #include "source_io/module_parameter/parameter.h" -#include "propagator.h" -#include "source_base/global_function.h" +#include #include #include -#include namespace module_rt { @@ -252,249 +253,304 @@ void Propagator::compute_propagator_cn2_tensor(const int nlocal, const ct::Tensor& Htmp, ct::Tensor& U_operator, std::ofstream& ofs_running, - const int print_matrix) const + const int print_matrix, + CublasMpResources& cublas_res) const { - // (1) copy Htmp to Numerator & Denominator - ct::Tensor Numerator(ct::DataType::DT_COMPLEX_DOUBLE, - ct::DeviceType::CpuDevice, - ct::TensorShape({this->ParaV->nloc})); - Numerator.zero(); - BlasConnector::copy(this->ParaV->nloc, - Htmp.data>(), - 1, - Numerator.data>(), - 1); - - ct::Tensor Denominator(ct::DataType::DT_COMPLEX_DOUBLE, - ct::DeviceType::CpuDevice, - ct::TensorShape({this->ParaV->nloc})); - Denominator.zero(); - BlasConnector::copy(this->ParaV->nloc, - Htmp.data>(), - 1, - Denominator.data>(), - 1); - - if (print_matrix) - { - ofs_running << std::endl; - ofs_running << " S matrix :" << std::endl; - for (int i = 0; i < this->ParaV->nrow; i++) - { - const int in = i * this->ParaV->ncol; - for (int j = 0; j < this->ParaV->ncol; j++) - { - ofs_running << Stmp.data>()[in + j].real() << "+" - << Stmp.data>()[in + j].imag() << "i "; - } - ofs_running << std::endl; - } - ofs_running << std::endl; - ofs_running << std::endl; - ofs_running << " H matrix :" << std::endl; - for (int i = 0; i < this->ParaV->nrow; i++) - { - const int in = i * this->ParaV->ncol; - for (int j = 0; j < this->ParaV->ncol; j++) - { - ofs_running << Numerator.data>()[in + j].real() << "+" - << Numerator.data>()[in + j].imag() << "i "; - } - ofs_running << std::endl; - } - ofs_running << std::endl; - } - - // ->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> - // (2) compute Numerator & Denominator by GEADD - // Numerator = Stmp - i*para * Htmp; beta1 = - para = -0.25 * this->dt - // Denominator = Stmp + i*para * Htmp; beta2 = para = 0.25 * this->dt - std::complex alpha = {1.0, 0.0}; - std::complex beta1 = {0.0, -0.25 * this->dt}; - std::complex beta2 = {0.0, 0.25 * this->dt}; - - ScalapackConnector::geadd('N', - nlocal, - nlocal, - alpha, - Stmp.data>(), - 1, - 1, - this->ParaV->desc, - beta1, - Numerator.data>(), - 1, - 1, - this->ParaV->desc); - ScalapackConnector::geadd('N', - nlocal, - nlocal, - alpha, - Stmp.data>(), - 1, - 1, - this->ParaV->desc, - beta2, - Denominator.data>(), - 1, - 1, - this->ParaV->desc); - - if (print_matrix) - { - ofs_running << " beta=" << beta1 << std::endl; - ofs_running << " fenmu:" << std::endl; - for (int i = 0; i < this->ParaV->nrow; i++) - { - const int in = i * this->ParaV->ncol; - for (int j = 0; j < this->ParaV->ncol; j++) - { - ofs_running << Denominator.data>()[in + j].real() << "+" - << Denominator.data>()[in + j].imag() << "i "; - } - ofs_running << std::endl; - } - ofs_running << std::endl; - } - - //->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> - // (3) Next, invert Denominator - ct::Tensor ipiv(ct::DataType::DT_INT, - ct::DeviceType::CpuDevice, - ct::TensorShape({this->ParaV->nrow + this->ParaV->nb})); - ipiv.zero(); - int info = 0; - // (3.1) compute ipiv - ScalapackConnector::getrf(nlocal, - nlocal, - Denominator.data>(), - 1, - 1, - this->ParaV->desc, - ipiv.data(), - &info); - - // Print ipiv - if (print_matrix) +#ifdef __CUBLASMP + // 1. Resource Validation + if (!cublas_res.is_initialized || cublas_res.cublasmp_grid == nullptr || cublas_res.cusolvermp_grid == nullptr) { - ofs_running << " this->ParaV->nloc = " << this->ParaV->nloc << std::endl; - ofs_running << " this->ParaV->nrow = " << this->ParaV->nrow << std::endl; - ofs_running << " this->ParaV->ncol = " << this->ParaV->ncol << std::endl; - ofs_running << " this->ParaV->nb = " << this->ParaV->nb << std::endl; - ofs_running << " this->ParaV->get_block_size() = " << this->ParaV->get_block_size() << std::endl; - ofs_running << " nlocal = " << nlocal << std::endl; - ofs_running << " ipiv:" << std::endl; - for (int i = 0; i < this->ParaV->nloc; i++) - { - ofs_running << ipiv.data()[i] << " "; - } - ofs_running << std::endl; + return; } - int lwork = -1; - int liwotk = -1; - ct::Tensor work(ct::DataType::DT_COMPLEX_DOUBLE, ct::DeviceType::CpuDevice, ct::TensorShape({1})); - ct::Tensor iwork(ct::DataType::DT_INT, ct::DeviceType::CpuDevice, ct::TensorShape({1})); - // (3.2) compute work - ScalapackConnector::getri(nlocal, - Denominator.data>(), - 1, - 1, - this->ParaV->desc, - ipiv.data(), - work.data>(), - &lwork, - iwork.data(), - &liwotk, - &info); - lwork = work.data>()[0].real(); - work.resize(ct::TensorShape({lwork})); - liwotk = iwork.data()[0]; - iwork.resize(ct::TensorShape({liwotk})); - // (3.3) compute inverse matrix of Denominator - ScalapackConnector::getri(nlocal, - Denominator.data>(), - 1, - 1, - this->ParaV->desc, - ipiv.data(), - work.data>(), - &lwork, - iwork.data(), - &liwotk, - &info); - assert(0 == info); - - //->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> - - // (4) U_operator = Denominator * Numerator; - ScalapackConnector::gemm('N', - 'N', - nlocal, - nlocal, - nlocal, - 1.0, - Denominator.data>(), - 1, - 1, - this->ParaV->desc, - Numerator.data>(), + assert(Stmp.device_type() == ct::DeviceType::GpuDevice); + assert(Htmp.device_type() == ct::DeviceType::GpuDevice); + assert(U_operator.device_type() == ct::DeviceType::GpuDevice); + + // 2. Extract Pointers + void* d_S = static_cast(Stmp.data>()); + void* d_H = static_cast(Htmp.data>()); + void* d_Num = static_cast(U_operator.data>()); + + int64_t len_loc = this->ParaV->nloc; + + // Allocate temporary tensor for denominator matrix + ct::Tensor Denominator_gpu(ct::DataType::DT_COMPLEX_DOUBLE, ct::DeviceType::GpuDevice, ct::TensorShape({len_loc})); + void* d_Den = static_cast(Denominator_gpu.data>()); + + // 3. Matrix Descriptors Creation + int64_t m_global = this->ParaV->desc[2]; + int64_t n_global = this->ParaV->desc[3]; + int64_t mb = this->ParaV->desc[4]; + int64_t nb = this->ParaV->desc[5]; + int64_t rsrc = this->ParaV->desc[6]; + int64_t csrc = this->ParaV->desc[7]; + int64_t lld = this->ParaV->desc[8]; + + // 3.1 cuBLASMp Descriptor + cublasMpMatrixDescriptor_t desc_blas; + cublasMpMatrixDescriptorCreate(m_global, + n_global, + mb, + nb, + rsrc, + csrc, + lld, + CUDA_C_64F, + cublas_res.cublasmp_grid, + &desc_blas); + + // 3.2 cuSOLVERMp Descriptor + cusolverMpMatrixDescriptor_t desc_solver; + cusolverMpCreateMatrixDesc(&desc_solver, + cublas_res.cusolvermp_grid, + CUDA_C_64F, + m_global, + n_global, + mb, + nb, + rsrc, + csrc, + lld); + + // 4. Construct A (Denominator) and B (Numerator) using Geadd + std::complex one = {1.0, 0.0}; + std::complex coef_neg_i = {0.0, -0.25 * this->dt}; + std::complex coef_pos_i = {0.0, 0.25 * this->dt}; + + cudaMemcpyAsync(d_Num, d_S, len_loc * sizeof(std::complex), cudaMemcpyDeviceToDevice, cublas_res.stream); + cudaMemcpyAsync(d_Den, d_S, len_loc * sizeof(std::complex), cudaMemcpyDeviceToDevice, cublas_res.stream); + + size_t ws_geadd_dev = 0, ws_geadd_host = 0; + cublasMpGeadd_bufferSize(cublas_res.cublasmp_handle, + CUBLAS_OP_N, + m_global, + n_global, + &coef_neg_i, + d_H, 1, 1, - this->ParaV->desc, - 0.0, - U_operator.data>(), + desc_blas, + &one, + d_Num, 1, 1, - this->ParaV->desc); - - if (print_matrix) + desc_blas, + &ws_geadd_dev, + &ws_geadd_host); + + void *d_work_geadd = nullptr, *h_work_geadd = nullptr; + cudaMallocAsync(&d_work_geadd, ws_geadd_dev, cublas_res.stream); + h_work_geadd = malloc(ws_geadd_host); + + // B = S - i * (dt/4) * H + cublasMpGeadd(cublas_res.cublasmp_handle, + CUBLAS_OP_N, + m_global, + n_global, + &coef_neg_i, + d_H, + 1, + 1, + desc_blas, + &one, + d_Num, + 1, + 1, + desc_blas, + d_work_geadd, + ws_geadd_dev, + h_work_geadd, + ws_geadd_host); + + // A = S + i * (dt/4) * H + cublasMpGeadd(cublas_res.cublasmp_handle, + CUBLAS_OP_N, + m_global, + n_global, + &coef_pos_i, + d_H, + 1, + 1, + desc_blas, + &one, + d_Den, + 1, + 1, + desc_blas, + d_work_geadd, + ws_geadd_dev, + h_work_geadd, + ws_geadd_host); + + cudaFreeAsync(d_work_geadd, cublas_res.stream); + free(h_work_geadd); + + // 5. QR Factorization of A (Denominator) + int64_t tau_size = m_global + nb; + void* d_tau; + cudaMallocAsync(&d_tau, tau_size * sizeof(std::complex), cublas_res.stream); + + int* d_info; + cudaMallocAsync(&d_info, sizeof(int), cublas_res.stream); + cudaMemsetAsync(d_info, 0, sizeof(int), cublas_res.stream); + + size_t ws_geqrf_dev = 0, ws_geqrf_host = 0; + cusolverMpGeqrf_bufferSize(cublas_res.cusolvermp_handle, + m_global, + n_global, + d_Den, + 1, + 1, + desc_solver, + CUDA_C_64F, + &ws_geqrf_dev, + &ws_geqrf_host); + + void *d_work_geqrf = nullptr, *h_work_geqrf = nullptr; + cudaMallocAsync(&d_work_geqrf, ws_geqrf_dev, cublas_res.stream); + h_work_geqrf = malloc(ws_geqrf_host); + + cusolverMpGeqrf(cublas_res.cusolvermp_handle, + m_global, + n_global, + d_Den, + 1, + 1, + desc_solver, + d_tau, + CUDA_C_64F, + d_work_geqrf, + ws_geqrf_dev, + h_work_geqrf, + ws_geqrf_host, + d_info); + + cudaFreeAsync(d_work_geqrf, cublas_res.stream); + free(h_work_geqrf); + + // Check QR Info + int h_info = 0; + cudaMemcpyAsync(&h_info, d_info, sizeof(int), cudaMemcpyDeviceToHost, cublas_res.stream); + cudaStreamSynchronize(cublas_res.stream); + if (h_info != 0) { - ofs_running << " fenmu^-1:" << std::endl; - for (int i = 0; i < this->ParaV->nrow; i++) - { - const int in = i * this->ParaV->ncol; - for (int j = 0; j < this->ParaV->ncol; j++) - { - ofs_running << Denominator.data>()[in + j].real() << "+" - << Denominator.data>()[in + j].imag() << "i "; - } - ofs_running << std::endl; - } - ofs_running << std::endl; - ofs_running << " fenzi:" << std::endl; - for (int i = 0; i < this->ParaV->nrow; i++) - { - const int in = i * this->ParaV->ncol; - for (int j = 0; j < this->ParaV->ncol; j++) - { - ofs_running << Numerator.data>()[in + j].real() << "+" - << Numerator.data>()[in + j].imag() << "i "; - } - ofs_running << std::endl; - } - ofs_running << std::endl; - ofs_running << " U operator:" << std::endl; - for (int i = 0; i < this->ParaV->nrow; i++) - { - const int in = i * this->ParaV->ncol; - for (int j = 0; j < this->ParaV->ncol; j++) - { - double aa = U_operator.data>()[in + j].real(); - double bb = U_operator.data>()[in + j].imag(); - if (std::abs(aa) < 1e-8) - { - aa = 0.0; - } - if (std::abs(bb) < 1e-8) - { - bb = 0.0; - } - ofs_running << aa << "+" << bb << "i "; - } - ofs_running << std::endl; - } + std::cerr << "CRITICAL: cusolverMpGeqrf failed with Info: " << h_info << std::endl; + MPI_Abort(MPI_COMM_WORLD, -1); } + + // 6. Apply Q^H to B (Numerator) + size_t ws_ormqr_dev = 0, ws_ormqr_host = 0; + cusolverMpOrmqr_bufferSize(cublas_res.cusolvermp_handle, + CUBLAS_SIDE_LEFT, + CUBLAS_OP_C, + m_global, + n_global, + n_global, + d_Den, + 1, + 1, + desc_solver, + d_tau, + d_Num, + 1, + 1, + desc_solver, + CUDA_C_64F, + &ws_ormqr_dev, + &ws_ormqr_host); + + void *d_work_ormqr = nullptr, *h_work_ormqr = nullptr; + cudaMallocAsync(&d_work_ormqr, ws_ormqr_dev, cublas_res.stream); + h_work_ormqr = malloc(ws_ormqr_host); + + cusolverMpOrmqr(cublas_res.cusolvermp_handle, + CUBLAS_SIDE_LEFT, + CUBLAS_OP_C, + m_global, + n_global, + n_global, + d_Den, + 1, + 1, + desc_solver, + d_tau, + d_Num, + 1, + 1, + desc_solver, + CUDA_C_64F, + d_work_ormqr, + ws_ormqr_dev, + h_work_ormqr, + ws_ormqr_host, + d_info); + + cudaFreeAsync(d_work_ormqr, cublas_res.stream); + free(h_work_ormqr); + + // 7. Solve Triangular System (TRSM) + size_t ws_trsm_dev = 0, ws_trsm_host = 0; + std::complex alpha_trsm = {1.0, 0.0}; + + cublasMpTrsm_bufferSize(cublas_res.cublasmp_handle, + CUBLAS_SIDE_LEFT, + CUBLAS_FILL_MODE_UPPER, + CUBLAS_OP_N, + CUBLAS_DIAG_NON_UNIT, + m_global, + n_global, + &alpha_trsm, + d_Den, + 1, + 1, + desc_blas, + d_Num, + 1, + 1, + desc_blas, + CUBLAS_COMPUTE_64F, + &ws_trsm_dev, + &ws_trsm_host); + + void *d_work_trsm = nullptr, *h_work_trsm = nullptr; + cudaMallocAsync(&d_work_trsm, ws_trsm_dev, cublas_res.stream); + h_work_trsm = malloc(ws_trsm_host); + + cublasMpTrsm(cublas_res.cublasmp_handle, + CUBLAS_SIDE_LEFT, + CUBLAS_FILL_MODE_UPPER, + CUBLAS_OP_N, + CUBLAS_DIAG_NON_UNIT, + m_global, + n_global, + &alpha_trsm, + d_Den, + 1, + 1, + desc_blas, + d_Num, + 1, + 1, + desc_blas, + CUBLAS_COMPUTE_64F, + d_work_trsm, + ws_trsm_dev, + h_work_trsm, + ws_trsm_host); + + cudaFreeAsync(d_work_trsm, cublas_res.stream); + free(h_work_trsm); + + // 8. Cleanup and Final Synchronization + cudaStreamSynchronize(cublas_res.stream); + + cublasMpMatrixDescriptorDestroy(desc_blas); + cusolverMpDestroyMatrixDesc(desc_solver); + + cudaFreeAsync(d_tau, cublas_res.stream); + cudaFreeAsync(d_info, cublas_res.stream); +#endif // __CUBLASMP } template @@ -510,211 +566,73 @@ void Propagator::compute_propagator_cn2_tensor_lapack(const int nlocal, // ct_Device = ct::DEVICE_CPU or ct::DEVICE_GPU using ct_Device = typename ct::PsiToContainer::type; - // (1) copy Htmp to Numerator & Denominator - ct::Tensor Numerator(ct::DataType::DT_COMPLEX_DOUBLE, ct_device_type, ct::TensorShape({nlocal * nlocal})); - Numerator.zero(); + // Define coefficients + // beta1 = -i * dt/4 (for Numerator) + // beta2 = +i * dt/4 (for Denominator) + std::complex beta1 = {0.0, -0.25 * this->dt}; + std::complex beta2 = {0.0, 0.25 * this->dt}; + + // ======================================================================== + // Numerator = Stmp + beta1 * Htmp + // ======================================================================== + + // 1. Copy Stmp to U_operator base_device::memory::synchronize_memory_op, Device, Device>()( - Numerator.data>(), - Htmp.data>(), + U_operator.data>(), + Stmp.data>(), nlocal * nlocal); + // 2. U_operator = beta1 * Htmp + U_operator + ct::kernels::blas_axpy, ct_Device>()(nlocal * nlocal, + &beta1, + Htmp.data>(), + 1, + U_operator.data>(), + 1); + + // ======================================================================== + // Denominator = Stmp + beta2 * Htmp + // ======================================================================== + ct::Tensor Denominator(ct::DataType::DT_COMPLEX_DOUBLE, ct_device_type, ct::TensorShape({nlocal * nlocal})); - Denominator.zero(); + + // 1. Copy Stmp to Denominator base_device::memory::synchronize_memory_op, Device, Device>()( Denominator.data>(), - Htmp.data>(), + Stmp.data>(), nlocal * nlocal); - if (print_matrix) - { - ct::Tensor Stmp_cpu = Stmp.to_device(); - ct::Tensor Numerator_cpu = Numerator.to_device(); - - ofs_running << std::endl; - ofs_running << " S matrix :" << std::endl; - for (int i = 0; i < nlocal; i++) - { - const int in = i * nlocal; - for (int j = 0; j < nlocal; j++) - { - ofs_running << Stmp_cpu.data>()[in + j].real() << "+" - << Stmp_cpu.data>()[in + j].imag() << "i "; - } - ofs_running << std::endl; - } - ofs_running << std::endl; - ofs_running << std::endl; - ofs_running << " H matrix :" << std::endl; - for (int i = 0; i < nlocal; i++) - { - const int in = i * nlocal; - for (int j = 0; j < nlocal; j++) - { - ofs_running << Numerator_cpu.data>()[in + j].real() << "+" - << Numerator_cpu.data>()[in + j].imag() << "i "; - } - ofs_running << std::endl; - } - ofs_running << std::endl; - } - - // ->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> - // (2) compute Numerator & Denominator by GEADD - // Numerator = Stmp - i*para * Htmp; beta1 = - para = -0.25 * this->dt - // Denominator = Stmp + i*para * Htmp; beta2 = para = 0.25 * this->dt - std::complex one = {1.0, 0.0}; - std::complex beta1 = {0.0, -0.25 * this->dt}; - std::complex beta2 = {0.0, 0.25 * this->dt}; - - // Numerator = -i*para * Htmp - ct::kernels::blas_scal, ct_Device>()(nlocal * nlocal, - &beta1, - Numerator.data>(), - 1); - // Numerator = Stmp + (-i*para * Htmp) + // 2. Denominator = beta2 * Htmp + Denominator ct::kernels::blas_axpy, ct_Device>()(nlocal * nlocal, - &one, - Stmp.data>(), - 1, - Numerator.data>(), - 1); - // Denominator = i*para * Htmp - ct::kernels::blas_scal, ct_Device>()(nlocal * nlocal, &beta2, - Denominator.data>(), - 1); - // Denominator = Stmp + (i*para * Htmp) - ct::kernels::blas_axpy, ct_Device>()(nlocal * nlocal, - &one, - Stmp.data>(), + Htmp.data>(), 1, Denominator.data>(), 1); - if (print_matrix) - { - ct::Tensor Denominator_cpu = Denominator.to_device(); + // ======================================================================== + // Solve D * U = N, result overwrites N (which is U_operator) + // ======================================================================== - ofs_running << " beta=" << beta1 << std::endl; - ofs_running << " fenmu:" << std::endl; - for (int i = 0; i < nlocal; i++) - { - const int in = i * nlocal; - for (int j = 0; j < nlocal; j++) - { - ofs_running << Denominator_cpu.data>()[in + j].real() << "+" - << Denominator_cpu.data>()[in + j].imag() << "i "; - } - ofs_running << std::endl; - } - ofs_running << std::endl; - } - - //->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> - // (3) Next, invert Denominator ct::Tensor ipiv(ct::DataType::DT_INT, ct_device_type, ct::TensorShape({nlocal})); - ipiv.zero(); - // (3.1) compute ipiv + // No need to zero ipiv, it is output only. + + // 1. LU Factorization of Denominator (In-place) ct::kernels::lapack_getrf, ct_Device>()(nlocal, nlocal, Denominator.data>(), nlocal, ipiv.data()); - // Print ipiv - if (print_matrix) - { - ct::Tensor ipiv_cpu = ipiv.to_device(); - - ofs_running << " ipiv:" << std::endl; - for (int i = 0; i < nlocal; i++) - { - ofs_running << ipiv_cpu.data()[i] << " "; - } - ofs_running << std::endl; - } - - // (3.2) compute inverse matrix of Denominator - ct::Tensor Denominator_inv = create_identity_matrix>(nlocal, ct_device_type); + // 2. Solve D * X = B ct::kernels::lapack_getrs, ct_Device>()('N', nlocal, nlocal, Denominator.data>(), nlocal, ipiv.data(), - Denominator_inv.data>(), + U_operator.data>(), nlocal); - - //->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> - - // (4) U_operator = Denominator_inv * Numerator; - std::complex one_gemm = {1.0, 0.0}; - std::complex zero_gemm = {0.0, 0.0}; - ct::kernels::blas_gemm, ct_Device>()('N', - 'N', - nlocal, - nlocal, - nlocal, - &one_gemm, - Denominator_inv.data>(), - nlocal, - Numerator.data>(), - nlocal, - &zero_gemm, - U_operator.data>(), - nlocal); - - if (print_matrix) - { - ct::Tensor Denominator_inv_cpu = Denominator_inv.to_device(); - ct::Tensor Numerator_cpu = Numerator.to_device(); - ct::Tensor U_operator_cpu = U_operator.to_device(); - - ofs_running << " fenmu^-1:" << std::endl; - for (int i = 0; i < nlocal; i++) - { - const int in = i * nlocal; - for (int j = 0; j < nlocal; j++) - { - ofs_running << Denominator_inv_cpu.data>()[in + j].real() << "+" - << Denominator_inv_cpu.data>()[in + j].imag() << "i "; - } - ofs_running << std::endl; - } - ofs_running << std::endl; - ofs_running << " fenzi:" << std::endl; - for (int i = 0; i < nlocal; i++) - { - const int in = i * nlocal; - for (int j = 0; j < nlocal; j++) - { - ofs_running << Numerator_cpu.data>()[in + j].real() << "+" - << Numerator_cpu.data>()[in + j].imag() << "i "; - } - ofs_running << std::endl; - } - ofs_running << std::endl; - ofs_running << " U operator:" << std::endl; - for (int i = 0; i < nlocal; i++) - { - const int in = i * nlocal; - for (int j = 0; j < nlocal; j++) - { - double aa = U_operator_cpu.data>()[in + j].real(); - double bb = U_operator_cpu.data>()[in + j].imag(); - if (std::abs(aa) < 1e-8) - { - aa = 0.0; - } - if (std::abs(bb) < 1e-8) - { - bb = 0.0; - } - ofs_running << aa << "+" << bb << "i "; - } - ofs_running << std::endl; - } - } } // Explicit instantiation of template functions diff --git a/source/source_lcao/module_rt/snap_psibeta_half_tddft.cpp b/source/source_lcao/module_rt/snap_psibeta_half_tddft.cpp index a0bb7c3548..e8adc48215 100644 --- a/source/source_lcao/module_rt/snap_psibeta_half_tddft.cpp +++ b/source/source_lcao/module_rt/snap_psibeta_half_tddft.cpp @@ -6,11 +6,58 @@ #include "source_base/timer.h" #include "source_base/ylm.h" +#include +#include +#include + namespace module_rt { -// nlm[0] : -// nlm[1, 2, 3,] : , which a = x, y, z. +/** + * @brief Initialize Gauss-Legendre grid points and weights. + * Thread-safe initialization using static local variable. + * + * @param grid_size Number of grid points (140) + * @param gl_x Output: Grid points in [-1, 1] + * @param gl_w Output: Weights + */ +static void init_gauss_legendre_grid(int grid_size, std::vector& gl_x, std::vector& gl_w) +{ + static bool init = false; +// Thread-safe initialization +#pragma omp critical(init_gauss_legendre) + { + if (!init) + { + ModuleBase::Integral::Gauss_Legendre_grid_and_weight(grid_size, gl_x.data(), gl_w.data()); + init = true; + } + } +} + +/** + * @brief Main function to calculate overlap integrals + * and its derivatives (if calc_r is true). + * + * This function integrates the overlap between a local orbital phi (at R1) + * and a non-local projector beta (at R0), modulated by a plane-wave-like phase factor + * exp^{-iAr}, where A is a vector potential. + * + * @param orb LCAO Orbitals information + * @param infoNL_ Non-local pseudopotential information + * @param nlm Output: + * nlm[0] : + * nlm[1, 2, 3] : , a = x, y, z (if calc_r=true) + * @param R1 Position of atom 1 (orbital phi) + * @param T1 Type of atom 1 + * @param L1 Angular momentum of orbital phi + * @param m1 Magnetic quantum number of orbital phi + * @param N1 Radial quantum number of orbital phi + * @param R0 Position of atom 0 (projector beta) + * @param T0 Type of atom 0 + * @param A Vector potential A (or related field vector) + * @param calc_r Whether to calculate position operator matrix elements + */ void snap_psibeta_half_tddft(const LCAO_Orbitals& orb, const InfoNonlocal& infoNL_, std::vector>>& nlm, @@ -19,229 +66,286 @@ void snap_psibeta_half_tddft(const LCAO_Orbitals& orb, const int& L1, const int& m1, const int& N1, - const ModuleBase::Vector3& R0, // The projector. + const ModuleBase::Vector3& R0, const int& T0, const ModuleBase::Vector3& A, const bool& calc_r) { ModuleBase::timer::tick("module_rt", "snap_psibeta_half_tddft"); - // find number of projectors on atom R0 + // 1. Initialization and Early Exits const int nproj = infoNL_.nproj[T0]; - if (nproj == 0) - { - if (calc_r) - { - nlm.resize(4); - } - else - { - nlm.resize(1); - } - return; - } - std::vector calproj(nproj); - std::vector rmesh1(nproj); + // Resize output vector based on whether position operator matrix elements are needed + int required_size = calc_r ? 4 : 1; + if (nlm.size() != required_size) + nlm.resize(required_size); - if (calc_r) - { - nlm.resize(4); - } - else - { - nlm.resize(1); - } + if (nproj == 0) + return; - // Count number of projectors (l,m) + // 2. Determine total number of projectors and identify active ones based on cutoff int natomwfc = 0; - for (int ip = 0; ip < nproj; ip++) - { - //============================ - // Use pseudo-atomic orbitals - //============================ - - const int L0 = infoNL_.Beta[T0].Proj[ip].getL(); // mohan add 2021-05-07 - natomwfc += 2 * L0 + 1; - } - - for (int dim = 0; dim < nlm.size(); dim++) - { - nlm[dim].resize(natomwfc); - for (auto& x: nlm[dim]) - { - x = 0.0; - } - } + std::vector calproj(nproj, false); - // rcut of orbtials and projectors - // in our calculation, we always put orbital phi at the left side of - // because = const double Rcut1 = orb.Phi[T1].getRcut(); const ModuleBase::Vector3 dRa = R0 - R1; + const double distance10 = dRa.norm(); - double distance10 = dRa.norm(); - - bool all_out = true; + bool any_active = false; for (int ip = 0; ip < nproj; ip++) { + const int L0 = infoNL_.Beta[T0].Proj[ip].getL(); + natomwfc += 2 * L0 + 1; + const double Rcut0 = infoNL_.Beta[T0].Proj[ip].getRcut(); - if (distance10 > (Rcut1 + Rcut0)) - { - calproj[ip] = false; - } - else + if (distance10 <= (Rcut1 + Rcut0)) { - all_out = false; calproj[ip] = true; + any_active = true; } } - if (all_out) + // Initialize output values to zero and resize inner vectors + for (auto& x: nlm) + { + x.assign(natomwfc, 0.0); + } + + if (!any_active) { ModuleBase::timer::tick("module_rt", "snap_psibeta_half_tddft"); return; } - const int mesh_r1 = orb.Phi[T1].PhiLN(L1, N1).getNr(); - const double* psi_1 = orb.Phi[T1].PhiLN(L1, N1).getPsi(); - const double dk_1 = orb.Phi[T1].PhiLN(L1, N1).getDk(); + // 3. Prepare Orbital Data (Phi) + const auto& phi_ln = orb.Phi[T1].PhiLN(L1, N1); + const int mesh_r1 = phi_ln.getNr(); + const double* psi_1 = phi_ln.getPsi(); + const double dk_1 = phi_ln.getDk(); - const int ridial_grid_num = 140; + // 4. Prepare Integration Grids + const int radial_grid_num = 140; const int angular_grid_num = 110; - std::vector r_ridial(ridial_grid_num); - std::vector weights_ridial(ridial_grid_num); - int index = 0; + // Cached standard Gauss-Legendre grid + static std::vector gl_x(radial_grid_num); + static std::vector gl_w(radial_grid_num); + init_gauss_legendre_grid(radial_grid_num, gl_x, gl_w); + + // Buffers for mapped radial grid + std::vector r_radial(radial_grid_num); + std::vector w_radial(radial_grid_num); + + // Precompute A dot r_angular (A * u_angle) for the Lebedev grid + std::vector A_dot_lebedev(angular_grid_num); + for (int ian = 0; ian < angular_grid_num; ++ian) + { + A_dot_lebedev[ian] = A.x * ModuleBase::Integral::Lebedev_Laikov_grid110_x[ian] + + A.y * ModuleBase::Integral::Lebedev_Laikov_grid110_y[ian] + + A.z * ModuleBase::Integral::Lebedev_Laikov_grid110_z[ian]; + } + + // Reuseable buffers for inner loops to avoid allocation + std::vector> result_angular; // Accumulator for angular integration + // Accumulators for position operator components + std::vector> res_ang_x, res_ang_y, res_ang_z; + + std::vector rly1((L1 + 1) * (L1 + 1)); // Spherical harmonics buffer for L1 + std::vector> rly0_cache(angular_grid_num); // Cache for L0 Ylm + + // 5. Loop over Projectors (Beta) + int index_offset = 0; for (int nb = 0; nb < nproj; nb++) { const int L0 = infoNL_.Beta[T0].Proj[nb].getL(); + const int num_m0 = 2 * L0 + 1; + if (!calproj[nb]) { - index += 2 * L0 + 1; + index_offset += num_m0; continue; } - const int mesh_r0 = infoNL_.Beta[T0].Proj[nb].getNr(); - const double* beta_r = infoNL_.Beta[T0].Proj[nb].getBeta_r(); - const double* radial0 = infoNL_.Beta[T0].Proj[nb].getRadial(); - const double dk_0 = infoNL_.Beta[T0].Proj[nb].getDk(); + const auto& proj = infoNL_.Beta[T0].Proj[nb]; + const int mesh_r0 = proj.getNr(); + const double* beta_r = proj.getBeta_r(); + const double* radial0 = proj.getRadial(); + const double dk_0 = proj.getDk(); + const double Rcut0 = proj.getRcut(); - const double Rcut0 = infoNL_.Beta[T0].Proj[nb].getRcut(); - ModuleBase::Integral::Gauss_Legendre_grid_and_weight(radial0[0], - radial0[mesh_r0 - 1], - ridial_grid_num, - r_ridial.data(), - weights_ridial.data()); + // 5.1 Map Gauss-Legendre grid to radial interval [r_min, r_max] + double r_min = radial0[0]; + double r_max = radial0[mesh_r0 - 1]; + double xl = (r_max - r_min) * 0.5; + double xmean = (r_max + r_min) * 0.5; + + for (int i = 0; i < radial_grid_num; ++i) + { + r_radial[i] = xmean + xl * gl_x[i]; + w_radial[i] = xl * gl_w[i]; + } const double A_phase = A * R0; const std::complex exp_iAR0 = std::exp(ModuleBase::IMAG_UNIT * A_phase); - std::vector rly0(L0); - std::vector rly1(L1); - for (int ir = 0; ir < ridial_grid_num; ir++) + // 5.2 Precompute Spherical Harmonics (Ylm) for L0 on angular grid + // Since L0 changes with projector, we compute this per projector loop. + for (int ian = 0; ian < angular_grid_num; ++ian) + { + ModuleBase::Ylm::rl_sph_harm(L0, + ModuleBase::Integral::Lebedev_Laikov_grid110_x[ian], + ModuleBase::Integral::Lebedev_Laikov_grid110_y[ian], + ModuleBase::Integral::Lebedev_Laikov_grid110_z[ian], + rly0_cache[ian]); + } + + // Resize accumulators if needed + if (result_angular.size() < num_m0) { - std::vector> result_angular(2 * L0 + 1, 0.0); - std::vector> result_angular_r_commu_x; - std::vector> result_angular_r_commu_y; - std::vector> result_angular_r_commu_z; + result_angular.resize(num_m0); if (calc_r) { - result_angular_r_commu_x.resize(2 * L0 + 1, 0.0); - result_angular_r_commu_y.resize(2 * L0 + 1, 0.0); - result_angular_r_commu_z.resize(2 * L0 + 1, 0.0); + res_ang_x.resize(num_m0); + res_ang_y.resize(num_m0); + res_ang_z.resize(num_m0); } + } + + // 5.3 Radial Integration Loop + for (int ir = 0; ir < radial_grid_num; ir++) + { + const double r_val = r_radial[ir]; + // Reset angular accumulators for this radial shell + std::fill(result_angular.begin(), result_angular.begin() + num_m0, 0.0); + if (calc_r) + { + std::fill(res_ang_x.begin(), res_ang_x.begin() + num_m0, 0.0); + std::fill(res_ang_y.begin(), res_ang_y.begin() + num_m0, 0.0); + std::fill(res_ang_z.begin(), res_ang_z.begin() + num_m0, 0.0); + } + + // 5.4 Angular Integration Loop (Lebedev Grid) for (int ian = 0; ian < angular_grid_num; ian++) { const double x = ModuleBase::Integral::Lebedev_Laikov_grid110_x[ian]; const double y = ModuleBase::Integral::Lebedev_Laikov_grid110_y[ian]; const double z = ModuleBase::Integral::Lebedev_Laikov_grid110_z[ian]; - const double weights_angular = ModuleBase::Integral::Lebedev_Laikov_grid110_w[ian]; - const ModuleBase::Vector3 r_angular_tmp(x, y, z); + const double w_ang = ModuleBase::Integral::Lebedev_Laikov_grid110_w[ian]; - const ModuleBase::Vector3 r_coor = r_ridial[ir] * r_angular_tmp; - const ModuleBase::Vector3 tmp_r_coor = r_coor + dRa; - const double tmp_r_coor_norm = tmp_r_coor.norm(); - if (tmp_r_coor_norm > Rcut1) - { + // Vector r = r_val * u_angle + double rx = r_val * x; + double ry = r_val * y; + double rz = r_val * z; + + // Vector r' = r + R0 - R1 = r + dRa + double tx = rx + dRa.x; + double ty = ry + dRa.y; + double tz = rz + dRa.z; + + double tnorm = std::sqrt(tx * tx + ty * ty + tz * tz); + + // If r' is outside the cutoff of Phi(r'), skip + if (tnorm > Rcut1) continue; - } - ModuleBase::Vector3 tmp_r_unit; - if (tmp_r_coor_norm > 1e-10) + // Compute Ylm for L1 at direction r' + if (tnorm > 1e-10) + { + double inv_tnorm = 1.0 / tnorm; + ModuleBase::Ylm::rl_sph_harm(L1, tx * inv_tnorm, ty * inv_tnorm, tz * inv_tnorm, rly1); + } + else { - tmp_r_unit = tmp_r_coor / tmp_r_coor_norm; + // At origin, only Y_00 is non-zero (if using real spherical harmonics convention) + ModuleBase::Ylm::rl_sph_harm(L1, 0.0, 0.0, 1.0, rly1); } - ModuleBase::Ylm::rl_sph_harm(L0, x, y, z, rly0); + // Calculate common phase and weight factor + // phase = A * r = r_val * (A * u_angle) + const double phase = r_val * A_dot_lebedev[ian]; + const std::complex exp_iAr = std::exp(ModuleBase::IMAG_UNIT * phase); - ModuleBase::Ylm::rl_sph_harm(L1, tmp_r_unit.x, tmp_r_unit.y, tmp_r_unit.z, rly1); + // Interpolate Psi at |r'| + double interp_psi = ModuleBase::PolyInt::Polynomial_Interpolation(psi_1, mesh_r1, dk_1, tnorm); - const double phase = A * r_coor; - const std::complex exp_iAr = std::exp(ModuleBase::IMAG_UNIT * phase); + const int offset_L1 = L1 * L1 + m1; + const double ylm_L1_val = rly1[offset_L1]; - const ModuleBase::Vector3 tmp_r_coor_r_commu = r_coor + R0; - const double interp_v = ModuleBase::PolyInt::Polynomial_Interpolation(psi_1, - mesh_r1, dk_1, tmp_r_coor_norm); + // Combined factor: exp(iAr) * Y_L1m1(r') * Psi(|r'|) * weight_angle + const std::complex common_factor = exp_iAr * ylm_L1_val * interp_psi * w_ang; - for (int m0 = 0; m0 < 2 * L0 + 1; m0++) + // Retrieve precomputed Y_L0m0(r) + const std::vector& rly0_vec = rly0_cache[ian]; + const int offset_L0 = L0 * L0; + + // Accumulate results for all m0 components + for (int m0 = 0; m0 < num_m0; m0++) { - std::complex temp = exp_iAr * rly0[L0 * L0 + m0] * rly1[L1 * L1 + m1] - * interp_v * weights_angular; - result_angular[m0] += temp; + std::complex term = common_factor * rly0_vec[offset_L0 + m0]; + result_angular[m0] += term; if (calc_r) { - result_angular_r_commu_x[m0] += temp * tmp_r_coor_r_commu.x; - result_angular_r_commu_y[m0] += temp * tmp_r_coor_r_commu.y; - result_angular_r_commu_z[m0] += temp * tmp_r_coor_r_commu.z; + // Position operator r_op = r + R0 + // Note: Term involves (r_op)_a * exp(...). + double r_op_x = rx + R0.x; + double r_op_y = ry + R0.y; + double r_op_z = rz + R0.z; + + res_ang_x[m0] += term * r_op_x; + res_ang_y[m0] += term * r_op_y; + res_ang_z[m0] += term * r_op_z; } } - } + } // End Angular Loop - int index_tmp = index; - const double temp = ModuleBase::PolyInt::Polynomial_Interpolation(beta_r, - mesh_r0, dk_0, r_ridial[ir]) * r_ridial[ir] * weights_ridial[ir]; + // 5.5 Combine Radial and Angular parts + // Interpolate Beta(|r|) + // Note: The original code implies beta_r stores values that might need scaling or are just the function + // values. Typically radial integration is \int f(r) r^2 dr. Here we have factor: beta_val * r_radial[ir] * + // w_radial[ir] w_radial includes the Jacobian for the change of variable from [-1,1] to [r_min, r_max]. The + // extra r_radial[ir] suggests either beta is stored as r*beta, or we are doing \int ... r dr (2D?), or + // Jacobian r^2 is split. Assuming original logic is correct. - if (!calc_r) - { - for (int m0 = 0; m0 < 2 * L0 + 1; m0++) - { - nlm[0][index_tmp] += temp * result_angular[m0] * exp_iAR0; - index_tmp++; - } - } - else + double beta_val = ModuleBase::PolyInt::Polynomial_Interpolation(beta_r, mesh_r0, dk_0, r_radial[ir]); + + double radial_factor = beta_val * r_radial[ir] * w_radial[ir]; + + int current_idx = index_offset; + for (int m0 = 0; m0 < num_m0; m0++) { - for (int m0 = 0; m0 < 2 * L0 + 1; m0++) + // Final accumulation into global nlm array + // Add phase exp(i A * R0) + nlm[0][current_idx] += radial_factor * result_angular[m0] * exp_iAR0; + + if (calc_r) { - nlm[0][index_tmp] += temp * result_angular[m0] * exp_iAR0; - nlm[1][index_tmp] += temp * result_angular_r_commu_x[m0] * exp_iAR0; - nlm[2][index_tmp] += temp * result_angular_r_commu_y[m0] * exp_iAR0; - nlm[3][index_tmp] += temp * result_angular_r_commu_z[m0] * exp_iAR0; - index_tmp++; + nlm[1][current_idx] += radial_factor * res_ang_x[m0] * exp_iAR0; + nlm[2][current_idx] += radial_factor * res_ang_y[m0] * exp_iAR0; + nlm[3][current_idx] += radial_factor * res_ang_z[m0] * exp_iAR0; } + current_idx++; } - } - index += 2 * L0 + 1; - } + } // End Radial Loop + + index_offset += num_m0; + } // End Projector Loop - for(int dim = 0; dim < nlm.size(); dim++) + // 6. Final Conjugation + // Apply conjugation to all elements as per convention = * + for (int dim = 0; dim < nlm.size(); dim++) { - for (auto &x : nlm[dim]) + for (auto& x: nlm[dim]) { - // nlm[0] is - // nlm[1 or 2 or 3] is , a = x, y, z - x = std::conj(x); + x = std::conj(x); } } - assert(index == natomwfc); + assert(index_offset == natomwfc); ModuleBase::timer::tick("module_rt", "snap_psibeta_half_tddft"); - - return; } -} // namespace module_rt +} // namespace module_rt \ No newline at end of file diff --git a/source/source_lcao/module_rt/solve_propagation.cpp b/source/source_lcao/module_rt/solve_propagation.cpp index 01a08e0425..298bf2eef9 100644 --- a/source/source_lcao/module_rt/solve_propagation.cpp +++ b/source/source_lcao/module_rt/solve_propagation.cpp @@ -1,10 +1,11 @@ #include "solve_propagation.h" +#include "source_base/module_external/scalapack_connector.h" +#include "source_base/module_external/blas_connector.h" +#include "source_base/constants.h" +#include "source_base/global_function.h" #include -#include "source_base/module_external/scalapack_connector.h" -#include "source_pw/module_pwdft/global.h" - namespace module_rt { #ifdef __MPI diff --git a/source/source_lcao/module_rt/td_folding.cpp b/source/source_lcao/module_rt/td_folding.cpp index 13d358c53b..ed42b7524e 100644 --- a/source/source_lcao/module_rt/td_folding.cpp +++ b/source/source_lcao/module_rt/td_folding.cpp @@ -2,13 +2,13 @@ #include "source_base/libm/libm.h" namespace module_rt{ template -void folding_HR_td(const hamilt::HContainer& hR, +void folding_HR_td(const UnitCell& ucell, + const hamilt::HContainer& hR, std::complex* hk, const ModuleBase::Vector3& kvec_d_in, + const ModuleBase::Vector3& cart_At, const int ncol, - const int hk_type, - const UnitCell* ucell, - const ModuleBase::Vector3& cart_At) + const int hk_type) { #ifdef _OPENMP #pragma omp parallel for @@ -24,15 +24,15 @@ void folding_HR_td(const hamilt::HContainer& hR, //cal tddft phase for hybrid gauge const int iat1 = tmp.get_atom_i(); const int iat2 = tmp.get_atom_j(); - ModuleBase::Vector3 dtau = ucell->cal_dtau(iat1, iat2, r_index); - const double arg_td = cart_At * dtau * ucell->lat0; + ModuleBase::Vector3 dtau = ucell.cal_dtau(iat1, iat2, r_index); + const double arg_td = cart_At * dtau * ucell.lat0; //new // cal k_phase // if TK==std::complex, kphase is e^{ikR} const ModuleBase::Vector3 dR(r_index.x, r_index.y, r_index.z); const double arg = (kvec_d_in * dR) * ModuleBase::TWO_PI + arg_td; - double sinp, cosp; + double sinp = 0.0, cosp = 0.0; ModuleBase::libm::sincos(arg, &sinp, &cosp); std::complex kphase = std::complex(cosp, sinp); @@ -41,20 +41,128 @@ void folding_HR_td(const hamilt::HContainer& hR, } } } + +template +void folding_partial_HR(const UnitCell& ucell, + const hamilt::HContainer& hR, + std::complex* hk, + const ModuleBase::Vector3& kvec_d_in, + const int ix, + const int ncol, + const int hk_type) +{ +#ifdef _OPENMP +#pragma omp parallel for +#endif + for (int i = 0; i < hR.size_atom_pairs(); ++i) + { + hamilt::AtomPair& tmp = hR.get_atom_pair(i); + for(int ir = 0;ir < tmp.get_R_size(); ++ir ) + { + const ModuleBase::Vector3 r_index = tmp.get_R_index(ir); + const ModuleBase::Vector3 dR(r_index.x, r_index.y, r_index.z); + const double arg = (kvec_d_in * dR) * ModuleBase::TWO_PI; + double sinp = 0.0, cosp = 0.0; + ModuleBase::libm::sincos(arg, &sinp, &cosp); + std::complex kphase = std::complex(cosp, sinp); + const ModuleBase::Vector3 dR_car = dR * ucell.latvec * ucell.lat0; + + tmp.find_R(r_index); + tmp.add_to_matrix(hk, ncol, kphase * ModuleBase::IMAG_UNIT * std::complex(dR_car[ix]), hk_type); + } + } +} + +template +void folding_partial_HR_td(const UnitCell& ucell, + const hamilt::HContainer& hR, + std::complex* hk, + const ModuleBase::Vector3& kvec_d_in, + const ModuleBase::Vector3& cart_At, + const int ix, + const int ncol, + const int hk_type) +{ +#ifdef _OPENMP +#pragma omp parallel for +#endif + for (int i = 0; i < hR.size_atom_pairs(); ++i) + { + hamilt::AtomPair& tmp = hR.get_atom_pair(i); + for(int ir = 0;ir < tmp.get_R_size(); ++ir ) + { + const ModuleBase::Vector3 r_index = tmp.get_R_index(ir); + + //new + //cal tddft phase for mixing gague + const int iat1 = tmp.get_atom_i(); + const int iat2 = tmp.get_atom_j(); + ModuleBase::Vector3 dtau = ucell.cal_dtau(iat1, iat2, r_index); + const double arg_td = cart_At * dtau * ucell.lat0; + + //new + // cal k_phase + // if TK==std::complex, kphase is e^{ikR} + const ModuleBase::Vector3 dR(r_index.x, r_index.y, r_index.z); + const double arg = (kvec_d_in * dR) * ModuleBase::TWO_PI + arg_td; + double sinp = 0.0, cosp = 0.0; + ModuleBase::libm::sincos(arg, &sinp, &cosp); + std::complex kphase = std::complex(cosp, sinp); + const ModuleBase::Vector3 dR_car = dR * ucell.latvec * ucell.lat0; + + tmp.find_R(r_index); + tmp.add_to_matrix(hk, ncol, kphase * ModuleBase::IMAG_UNIT * std::complex(dR_car[ix]), hk_type); + } + } +} +template +void folding_HR_td(const UnitCell& ucell, + const hamilt::HContainer& hR, + std::complex* hk, + const ModuleBase::Vector3& kvec_d_in, + const ModuleBase::Vector3& At, + const int ncol, + const int hk_type); +template +void folding_HR_td>(const UnitCell& ucell, + const hamilt::HContainer>& hR, + std::complex* hk, + const ModuleBase::Vector3& kvec_d_in, + const ModuleBase::Vector3& At, + const int ncol, + const int hk_type); +template +void folding_partial_HR>(const UnitCell& ucell, + const hamilt::HContainer>& hR, + std::complex* hk, + const ModuleBase::Vector3& kvec_d_in, + const int ix, + const int ncol, + const int hk_type); +template +void folding_partial_HR(const UnitCell& ucell, + const hamilt::HContainer& hR, + std::complex* hk, + const ModuleBase::Vector3& kvec_d_in, + const int ix, + const int ncol, + const int hk_type); template -void folding_HR_td(const hamilt::HContainer& hR, +void folding_partial_HR_td>(const UnitCell& ucell, + const hamilt::HContainer>& hR, std::complex* hk, const ModuleBase::Vector3& kvec_d_in, + const ModuleBase::Vector3& cart_At, + const int ix, const int ncol, - const int hk_type, - const UnitCell* ucell, - const ModuleBase::Vector3& At); + const int hk_type); template -void folding_HR_td>(const hamilt::HContainer>& hR, +void folding_partial_HR_td(const UnitCell& ucell, + const hamilt::HContainer& hR, std::complex* hk, const ModuleBase::Vector3& kvec_d_in, + const ModuleBase::Vector3& cart_At, + const int ix, const int ncol, - const int hk_type, - const UnitCell* ucell, - const ModuleBase::Vector3& At); + const int hk_type); }// namespace module_rt \ No newline at end of file diff --git a/source/source_lcao/module_rt/td_folding.h b/source/source_lcao/module_rt/td_folding.h index 954d01d776..dae13e21af 100644 --- a/source/source_lcao/module_rt/td_folding.h +++ b/source/source_lcao/module_rt/td_folding.h @@ -6,13 +6,30 @@ namespace module_rt{ // folding HR to hk, for hybrid gauge template -void folding_HR_td(const hamilt::HContainer& hR, +void folding_HR_td(const UnitCell& ucell, + const hamilt::HContainer& hR, std::complex* hk, const ModuleBase::Vector3& kvec_d_in, + const ModuleBase::Vector3& At, const int ncol, - const int hk_type, - const UnitCell* ucell, - const ModuleBase::Vector3& At); + const int hk_type); +template +void folding_partial_HR(const UnitCell& ucell, + const hamilt::HContainer& hR, + std::complex* hk, + const ModuleBase::Vector3& kvec_d_in, + const int ix, + const int ncol, + const int hk_type); +template +void folding_partial_HR_td(const UnitCell& ucell, + const hamilt::HContainer& hR, + std::complex* hk, + const ModuleBase::Vector3& kvec_d_in, + const ModuleBase::Vector3& cart_At, + const int ix, + const int ncol, + const int hk_type); }// namespace module_rt #endif \ No newline at end of file diff --git a/source/source_lcao/module_rt/td_info.cpp b/source/source_lcao/module_rt/td_info.cpp index 259580d47d..974c4116d3 100644 --- a/source/source_lcao/module_rt/td_info.cpp +++ b/source/source_lcao/module_rt/td_info.cpp @@ -5,7 +5,7 @@ bool TD_info::out_mat_R = false; bool TD_info::out_vecpot = false; -bool TD_info::out_current = false; +int TD_info::out_current = 0; bool TD_info::out_current_k = false; bool TD_info::init_vecpot_file = false; bool TD_info::evolve_once = false; @@ -18,7 +18,7 @@ int TD_info::max_istep = -1; ModuleBase::Vector3 TD_info::cart_At; std::vector> TD_info::At_from_file; -TD_info::TD_info(const UnitCell* ucell_in) +TD_info::TD_info(const UnitCell* ucell_in,const Parallel_Orbitals& pv, const LCAO_Orbitals& orb) { this->ucell = ucell_in; if (init_vecpot_file && istep == -1) @@ -39,6 +39,10 @@ TD_info::TD_info(const UnitCell* ucell_in) //std::cout<<"estep_shift"<istep += estep_shift; + if(out_current==2||elecstate::H_TDDFT_pw::stype == 2) + { + r_calculator.init(*ucell, pv, orb); + } return; } TD_info::~TD_info() diff --git a/source/source_lcao/module_rt/td_info.h b/source/source_lcao/module_rt/td_info.h index 6b2f3a839e..78f0b1cc00 100644 --- a/source/source_lcao/module_rt/td_info.h +++ b/source/source_lcao/module_rt/td_info.h @@ -3,17 +3,16 @@ #include "source_base/abfs-vector3_order.h" #include "source_base/timer.h" #include "source_lcao/module_hcontainer/hcontainer.h" +#include "source_io/module_hs/cal_r_overlap_R.h" #include // Class to store TDDFT infos, mainly for periodic system. class TD_info { public: - TD_info(const UnitCell* ucell_in); + TD_info(const UnitCell* ucell_in,const Parallel_Orbitals& pv, const LCAO_Orbitals& orb); ~TD_info(); - void init(); - /// @brief switch to control the output of HR static bool out_mat_R; @@ -24,7 +23,7 @@ class TD_info static bool out_vecpot; /// @brief switch to control the output of current - static bool out_current; + static int out_current; /// @brief switch to control the format of the output current, in total or in each k-point static bool out_current_k; @@ -56,6 +55,15 @@ class TD_info { return this->current_term[i]; } + // set velocity HR. + void set_velocity_HR(hamilt::HContainer>* HR) + { + this->velocity_HR = HR; + } + hamilt::HContainer>* get_velocity_HR_pointer() const + { + return this->velocity_HR; + } int get_istep() { @@ -70,6 +78,9 @@ class TD_info // For TDDFT velocity gauge, to fix the output of HR std::map, std::map>>> HR_sparse_td_vel[2]; + //r_calculator + cal_r_overlap_R r_calculator; + private: /// @brief pointer to the unit cell const UnitCell* ucell = nullptr; @@ -94,6 +105,9 @@ class TD_info /// @brief part of Momentum operator, -i∇ - i[r,Vnl]. Used to calculate current. std::vector>*> current_term = {nullptr, nullptr, nullptr}; + + /// @brief store kinetic hamilton + hamilt::HContainer>* velocity_HR = nullptr; }; #endif diff --git a/source/source_lcao/module_rt/test/CMakeLists.txt b/source/source_lcao/module_rt/test/CMakeLists.txt index 96e005a1c4..cb24761d71 100644 --- a/source/source_lcao/module_rt/test/CMakeLists.txt +++ b/source/source_lcao/module_rt/test/CMakeLists.txt @@ -5,31 +5,31 @@ target_link_libraries(tddft_test_lib Threads::Threads GTest::gtest_main GTest::g #target_include_directories(tddft_test_lib PUBLIC $<$:${GTEST_INCLUDE_DIRS}>) AddTest( - TARGET tddft_middle_hamilt_test + TARGET MODULE_LCAO_tddft_middle_hamilt_test LIBS parameter ${math_libs} base device tddft_test_lib SOURCES middle_hamilt_test.cpp ../middle_hamilt.cpp ) AddTest( - TARGET tddft_band_energy_test + TARGET MODULE_LCAO_tddft_band_energy_test LIBS parameter ${math_libs} base device tddft_test_lib SOURCES band_energy_test.cpp ../band_energy.cpp ../../../source_basis/module_ao/parallel_orbitals.cpp ) AddTest( - TARGET tddft_norm_psi_test + TARGET MODULE_LCAO_tddft_norm_psi_test LIBS parameter ${math_libs} base device tddft_test_lib SOURCES norm_psi_test.cpp ../norm_psi.cpp ) AddTest( - TARGET tddft_upsi_test + TARGET MODULE_LCAO_tddft_upsi_test LIBS parameter ${math_libs} base device tddft_test_lib SOURCES upsi_test1.cpp upsi_test2.cpp upsi_test3.cpp ../upsi.cpp ) AddTest( - TARGET tddft_propagator_test + TARGET MODULE_LCAO_tddft_propagator_test LIBS parameter ${math_libs} base device tddft_test_lib SOURCES propagator_test1.cpp propagator_test2.cpp propagator_test3.cpp ../propagator.cpp ../propagator_cn2.cpp ../propagator_taylor.cpp ../propagator_etrs.cpp ) diff --git a/source/source_lcao/module_rt/upsi.cpp b/source/source_lcao/module_rt/upsi.cpp index 5892ae2a57..e0f1b38d75 100644 --- a/source/source_lcao/module_rt/upsi.cpp +++ b/source/source_lcao/module_rt/upsi.cpp @@ -2,7 +2,9 @@ #include "source_base/module_container/ATen/kernels/blas.h" #include "source_base/module_external/scalapack_connector.h" +#include "source_base/timer.h" +#include #include #include @@ -93,74 +95,126 @@ void upsi_tensor(const Parallel_Orbitals* pv, const ct::Tensor& psi_k_laststep, ct::Tensor& psi_k, std::ofstream& ofs_running, - const int print_matrix) + const int print_matrix, + CublasMpResources& cublas_res) { - ScalapackConnector::gemm('N', - 'N', - nlocal, - nband, - nlocal, - 1.0, - U_operator.data>(), - 1, - 1, - pv->desc, - psi_k_laststep.data>(), - 1, - 1, - pv->desc_wfc, - 0.0, - psi_k.data>(), - 1, - 1, - pv->desc_wfc); - - if (print_matrix) +#ifdef __CUBLASMP + // 1. Resource validation + if (!cublas_res.is_initialized || cublas_res.cublasmp_grid == nullptr) { - ofs_running << std::endl; - ofs_running << " psi_k:" << std::endl; - for (int i = 0; i < pv->ncol_bands; i++) - { - const int in = i * pv->ncol; - for (int j = 0; j < pv->ncol; j++) - { - double aa = psi_k.data>()[in + j].real(); - double bb = psi_k.data>()[in + j].imag(); - if (std::abs(aa) < 1e-8) - { - aa = 0.0; - } - if (std::abs(bb) < 1e-8) - { - bb = 0.0; - } - ofs_running << aa << "+" << bb << "i "; - } - ofs_running << std::endl; - } - ofs_running << std::endl; - ofs_running << " psi_k_laststep:" << std::endl; - for (int i = 0; i < pv->ncol_bands; i++) - { - const int in = i * pv->ncol; - for (int j = 0; j < pv->ncol; j++) - { - double aa = psi_k_laststep.data>()[in + j].real(); - double bb = psi_k_laststep.data>()[in + j].imag(); - if (std::abs(aa) < 1e-8) - { - aa = 0.0; - } - if (std::abs(bb) < 1e-8) - { - bb = 0.0; - } - ofs_running << aa << "+" << bb << "i "; - } - ofs_running << std::endl; - } - ofs_running << std::endl; + return; } + + assert(U_operator.device_type() == ct::DeviceType::GpuDevice); + assert(psi_k_laststep.device_type() == ct::DeviceType::GpuDevice); + assert(psi_k.device_type() == ct::DeviceType::GpuDevice); + + // 2. Extract device pointers + void* d_U = static_cast(const_cast*>(U_operator.data>())); + void* d_Psi_old + = static_cast(const_cast*>(psi_k_laststep.data>())); + void* d_Psi_k = static_cast(psi_k.data>()); + + // 3. Create matrix descriptor for U operator (N x N) + int64_t m_u = pv->desc[2]; + int64_t n_u = pv->desc[3]; + int64_t mb_u = pv->desc[4]; + int64_t nb_u = pv->desc[5]; + int64_t lld_u = pv->desc[8]; + + cublasMpMatrixDescriptor_t desc_U; + cublasMpMatrixDescriptorCreate(m_u, n_u, mb_u, nb_u, 0, 0, lld_u, CUDA_C_64F, cublas_res.cublasmp_grid, &desc_U); + + // 4. Create matrix descriptor for Psi (N x nband) + int64_t m_psi = pv->desc_wfc[2]; + int64_t n_psi = pv->desc_wfc[3]; + int64_t mb_psi = pv->desc_wfc[4]; + int64_t nb_psi = pv->desc_wfc[5]; + int64_t lld_psi = pv->desc_wfc[8]; + + cublasMpMatrixDescriptor_t desc_Psi; + cublasMpMatrixDescriptorCreate(m_psi, + n_psi, + mb_psi, + nb_psi, + 0, + 0, + lld_psi, + CUDA_C_64F, + cublas_res.cublasmp_grid, + &desc_Psi); + + // 5. Query workspace size for GEMM: Psi_k = 1.0 * U * Psi_old + 0.0 * Psi_k + std::complex alpha = {1.0, 0.0}; + std::complex beta = {0.0, 0.0}; + size_t ws_gemm_dev = 0; + size_t ws_gemm_host = 0; + + cublasMpGemm_bufferSize(cublas_res.cublasmp_handle, + CUBLAS_OP_N, + CUBLAS_OP_N, + m_u, + n_psi, + n_u, + &alpha, + d_U, + 1, + 1, + desc_U, + d_Psi_old, + 1, + 1, + desc_Psi, + &beta, + d_Psi_k, + 1, + 1, + desc_Psi, + CUBLAS_COMPUTE_64F, + &ws_gemm_dev, + &ws_gemm_host); + + void* d_work = nullptr; + void* h_work = nullptr; + + cudaMallocAsync(&d_work, ws_gemm_dev, cublas_res.stream); + h_work = malloc(ws_gemm_host); + + // 6. Execute GEMM + cublasMpGemm(cublas_res.cublasmp_handle, + CUBLAS_OP_N, + CUBLAS_OP_N, + m_u, + n_psi, + n_u, + &alpha, + d_U, + 1, + 1, + desc_U, + d_Psi_old, + 1, + 1, + desc_Psi, + &beta, + d_Psi_k, + 1, + 1, + desc_Psi, + CUBLAS_COMPUTE_64F, + d_work, + ws_gemm_dev, + h_work, + ws_gemm_host); + + // 7. Synchronize and clean up resources + cudaStreamSynchronize(cublas_res.stream); + + cublasMpMatrixDescriptorDestroy(desc_U); + cublasMpMatrixDescriptorDestroy(desc_Psi); + cudaFreeAsync(d_work, cublas_res.stream); + free(h_work); +#endif // __CUBLASMP } template @@ -195,56 +249,6 @@ void upsi_tensor_lapack(const Parallel_Orbitals* pv, &beta, psi_k.data>(), nlocal); - - if (print_matrix) - { - ct::Tensor psi_k_cpu = psi_k.to_device(); - ct::Tensor psi_k_laststep_cpu = psi_k_laststep.to_device(); - - ofs_running << std::endl; - ofs_running << " psi_k:" << std::endl; - for (int i = 0; i < nband; i++) - { - const int in = i * nlocal; - for (int j = 0; j < nlocal; j++) - { - double aa = psi_k_cpu.data>()[in + j].real(); - double bb = psi_k_cpu.data>()[in + j].imag(); - if (std::abs(aa) < 1e-8) - { - aa = 0.0; - } - if (std::abs(bb) < 1e-8) - { - bb = 0.0; - } - ofs_running << aa << "+" << bb << "i "; - } - ofs_running << std::endl; - } - ofs_running << std::endl; - ofs_running << " psi_k_laststep:" << std::endl; - for (int i = 0; i < nband; i++) - { - const int in = i * nlocal; - for (int j = 0; j < nlocal; j++) - { - double aa = psi_k_laststep_cpu.data>()[in + j].real(); - double bb = psi_k_laststep_cpu.data>()[in + j].imag(); - if (std::abs(aa) < 1e-8) - { - aa = 0.0; - } - if (std::abs(bb) < 1e-8) - { - bb = 0.0; - } - ofs_running << aa << "+" << bb << "i "; - } - ofs_running << std::endl; - } - ofs_running << std::endl; - } } // Explicit instantiation of template functions diff --git a/source/source_lcao/module_rt/upsi.h b/source/source_lcao/module_rt/upsi.h index 6cf0976840..e5404a0622 100644 --- a/source/source_lcao/module_rt/upsi.h +++ b/source/source_lcao/module_rt/upsi.h @@ -9,6 +9,7 @@ #include "source_base/module_container/ATen/core/tensor.h" // ct::Tensor #include "source_basis/module_ao/parallel_orbitals.h" +#include "source_lcao/module_rt/kernels/cublasmp_context.h" #include @@ -42,7 +43,8 @@ void upsi_tensor(const Parallel_Orbitals* pv, const ct::Tensor& psi_k_laststep, ct::Tensor& psi_k, std::ofstream& ofs_running, - const int print_matrix); + const int print_matrix, + CublasMpResources& cublas_res); template void upsi_tensor_lapack(const Parallel_Orbitals* pv, diff --git a/source/source_lcao/module_rt/velocity_op.cpp b/source/source_lcao/module_rt/velocity_op.cpp index ceec0b1b65..7114fb2495 100644 --- a/source/source_lcao/module_rt/velocity_op.cpp +++ b/source/source_lcao/module_rt/velocity_op.cpp @@ -54,7 +54,7 @@ void Velocity_op::initialize_vcomm_r(const Grid_Driver* GridD, const Paralle for (int iat0 = 0; iat0 < ucell->nat; iat0++) { auto tau0 = ucell->get_tau(iat0); - int T0, I0; + int T0 = 0, I0 = 0; ucell->iat2iait(iat0, &I0, &T0); AdjacentAtomInfo adjs; GridD->Find_atom(*ucell, tau0, T0, I0, &adjs); @@ -129,7 +129,7 @@ void Velocity_op::initialize_grad_term(const Grid_Driver* GridD, const Paral for (int iat1 = 0; iat1 < ucell->nat; iat1++) { auto tau1 = ucell->get_tau(iat1); - int T1, I1; + int T1 = 0, I1 = 0; ucell->iat2iait(iat1, &I1, &T1); AdjacentAtomInfo adjs; GridD->Find_atom(*ucell, tau1, T1, I1, &adjs); @@ -190,7 +190,7 @@ void Velocity_op::calculate_vcomm_r() for (int iat0 = 0; iat0 < this->ucell->nat; iat0++) { auto tau0 = ucell->get_tau(iat0); - int T0, I0; + int T0 = 0, I0 = 0; ucell->iat2iait(iat0, &I0, &T0); AdjacentAtomInfo& adjs = this->adjs_vcommr[iat0]; std::vector>>> nlm_tot; @@ -422,7 +422,7 @@ void Velocity_op::calculate_grad_term() for (int iat1 = 0; iat1 < this->ucell->nat; iat1++) { auto tau1 = ucell->get_tau(iat1); - int T1, I1; + int T1 = 0, I1 = 0; ucell->iat2iait(iat1, &I1, &T1); AdjacentAtomInfo& adjs = this->adjs_grad[iat1]; for (int ad = 0; ad < adjs.adj_num + 1; ++ad) @@ -464,9 +464,9 @@ void Velocity_op::cal_grad_IJR(const int& iat1, // --------------------------------------------- // get info of orbitals of atom1 and atom2 from ucell // --------------------------------------------- - int T1, I1; + int T1 = 0, I1 = 0; this->ucell->iat2iait(iat1, &I1, &T1); - int T2, I2; + int T2 = 0, I2 = 0; this->ucell->iat2iait(iat2, &I2, &T2); Atom& atom1 = this->ucell->atoms[T1]; Atom& atom2 = this->ucell->atoms[T2]; diff --git a/source/source_lcao/module_rt/velocity_op.h b/source/source_lcao/module_rt/velocity_op.h index 7c3986a431..69f184872e 100644 --- a/source/source_lcao/module_rt/velocity_op.h +++ b/source/source_lcao/module_rt/velocity_op.h @@ -7,7 +7,7 @@ #include "source_lcao/module_hcontainer/hcontainer.h" #include "source_basis/module_nao/two_center_integrator.h" #include "source_base/vector3.h" -#include "source_io/cal_r_overlap_R.h" +#include "source_io/module_hs/cal_r_overlap_R.h" //design to calculate velocity operator template diff --git a/source/source_lcao/pulay_force_stress.h b/source/source_lcao/pulay_force_stress.h deleted file mode 100644 index f89444ec1e..0000000000 --- a/source/source_lcao/pulay_force_stress.h +++ /dev/null @@ -1,69 +0,0 @@ -#pragma once -#include "source_basis/module_nao/two_center_bundle.h" -#include "source_estate/module_dm/density_matrix.h" -#include "source_lcao/module_gint/gint_gamma.h" -#include "source_lcao/module_gint/gint_k.h" -#include "source_estate/module_pot/potential_new.h" -#include "source_cell/unitcell.h" -#include "source_lcao/stress_tools.h" -#ifndef TGINT_H -#define TGINT_H -template -struct TGint; -template <> struct TGint { using type = Gint_Gamma; }; -template <> struct TGint> { using type = Gint_k; }; -#endif - -/// calculate the abstract formulas: -/// $Tr[D*dH/dx]$ (force) and $1/V Tr[D*(dH/dx_a*x_b)]$ (stress) -/// where D can be any (energy) density matrix -/// and H can be any operator -namespace PulayForceStress -{ - /// for 2-center-integration terms, provided force and stress derivatives - template - void cal_pulay_fs( - ModuleBase::matrix& f, ///< [out] force - ModuleBase::matrix& s, ///< [out] stress - const elecstate::DensityMatrix& dm, ///< [in] density matrix or energy density matrix - const UnitCell& ucell, ///< [in] unit cell - const Parallel_Orbitals& pv, ///< [in] parallel orbitals - const double* (&dHSx)[3], ///< [in] dHSx x, y, z, for force - const double* (&dHSxy)[6], ///< [in] dHSxy 11, 12, 13, 22, 23, 33, for stress - const bool& isforce, - const bool& isstress, - Record_adj* ra = nullptr, - const double& factor_force = 1.0, - const double& factor_stress = 1.0); - - /// for 2-center-integration terms, provided force derivatives and coordinate difference - template - void cal_pulay_fs( - ModuleBase::matrix& f, ///< [out] force - ModuleBase::matrix& s, ///< [out] stress - const elecstate::DensityMatrix& dm, ///< [in] density matrix or energy density matrix - const UnitCell& ucell, ///< [in] unit cell - const Parallel_Orbitals& pv, ///< [in] parallel orbitals - const double* (&dHSx)[3], ///< [in] dHSx x, y, z, for force and stress - const double* dtau, ///< [in] dr x, y, z, for stress - const bool& isforce, - const bool& isstress, - Record_adj* ra = nullptr, - const double& factor_force = 1.0, - const double& factor_stress = 1.0); - - /// for grid-integration terms - template - void cal_pulay_fs( - ModuleBase::matrix& f, ///< [out] force - ModuleBase::matrix& s, ///< [out] stress - const elecstate::DensityMatrix& dm, ///< [in] density matrix or energy density matrix - const UnitCell& ucell, ///< [in] unit cell - const elecstate::Potential* pot, ///< [in] potential on grid - typename TGint::type& gint, ///< [in] Gint object - const bool& isforce, - const bool& isstress, - const bool& set_dmr_gint = true); -} -#include "pulay_force_stress_center2_template.hpp" -#include "pulay_force_stress_gint.hpp" \ No newline at end of file diff --git a/source/source_lcao/pulay_force_stress_center2.cpp b/source/source_lcao/pulay_force_stress_center2.cpp deleted file mode 100644 index 37f75cd5f0..0000000000 --- a/source/source_lcao/pulay_force_stress_center2.cpp +++ /dev/null @@ -1,129 +0,0 @@ -#include "pulay_force_stress.h" -namespace PulayForceStress -{ - template<> // gamma-only, provided xy - void cal_pulay_fs( - ModuleBase::matrix& f, - ModuleBase::matrix& s, - const elecstate::DensityMatrix& dm, - const UnitCell& ucell, - const Parallel_Orbitals& pv, - const double* (&dHSx)[3], - const double* (&dHSxy)[6], - const bool& isforce, - const bool& isstress, - Record_adj* ra, - const double& factor_force, - const double& factor_stress) - { - ModuleBase::TITLE("Forces", "cal_pulay"); - ModuleBase::timer::tick("Forces", "cal_pulay"); - - const int nspin = PARAM.inp.nspin; - const int nlocal = PARAM.globalv.nlocal; - - for (int i = 0; i < nlocal; ++i) - { - const int iat = ucell.iwt2iat[i]; - for (int j = 0; j < nlocal; ++j) - { - const int mu = pv.global2local_row(j); - const int nu = pv.global2local_col(i); - - if (mu >= 0 && nu >= 0) - { - const int index = mu * pv.ncol + nu; - double sum = 0.0; - for (int is = 0; is < nspin; ++is) { sum += dm.get_DMK(is + 1, 0, nu, mu); } - if (isforce) - { - const double sumf = sum * factor_force; - for (int i = 0; i < 3; ++i) { f(iat, i) += sumf * 2.0 * dHSx[i][index]; } - } - if (isstress) - { - const double sums = sum * factor_stress; - int ij = 0; - for (int i = 0; i < 3;++i) { for (int j = i; j < 3; ++j) { s(i, j) += sums * dHSxy[ij++][index]; } } - } - } - } - } - - if (isstress) { StressTools::stress_fill(ucell.lat0, ucell.omega, s); } - - ModuleBase::timer::tick("Forces", "cal_pulay"); - } - - template<> //multi-k, provided xy - void cal_pulay_fs( - ModuleBase::matrix& f, - ModuleBase::matrix& s, - const elecstate::DensityMatrix, double>& dm, - const UnitCell& ucell, - const Parallel_Orbitals& pv, - const double* (&dHSx)[3], - const double* (&dHSxy)[6], - const bool& isforce, - const bool& isstress, - Record_adj* ra, - const double& factor_force, - const double& factor_stress) - { - auto stress_func = [](ModuleBase::matrix& local_s, - const double& dm2d1_s, - const double** dHSx, - const double** dHSxy, - const double* dtau, - const int& irr) - { - int ij = 0; - for (int i = 0; i < 3; ++i) - { - for (int j = i; j < 3; ++j) - { - local_s(i, j) += dm2d1_s * dHSxy[ij++][irr]; - } - } - }; - cal_pulay_fs(f, s, dm, ucell, pv, dHSx, dHSxy, - nullptr, isforce, isstress, ra, - factor_force, factor_stress, stress_func); - } - - template<> // multi-k, provided x - void cal_pulay_fs( - ModuleBase::matrix& f, - ModuleBase::matrix& s, - const elecstate::DensityMatrix, double>& dm, - const UnitCell& ucell, - const Parallel_Orbitals& pv, - const double* (&dHSx)[3], - const double* dtau, - const bool& isforce, - const bool& isstress, - Record_adj* ra, - const double& factor_force, - const double& factor_stress) - { - auto stress_func = [](ModuleBase::matrix& local_s, - const double& dm2d1_s, - const double** dHSx, - const double** dHSxy, - const double* dtau, - const int& irr) - { - for (int i = 0; i < 3; ++i) - { - for (int j = i; j < 3; ++j) - { - local_s(i, j) += dm2d1_s * dHSx[i][irr] * dtau[irr * 3 + j]; - } - } - }; - cal_pulay_fs(f, s, dm, ucell, pv, dHSx, - nullptr, dtau, isforce, isstress, ra, - factor_force, factor_stress, stress_func); - } - -} diff --git a/source/source_lcao/pulay_force_stress_center2_template.hpp b/source/source_lcao/pulay_force_stress_center2_template.hpp deleted file mode 100644 index a035b5aae1..0000000000 --- a/source/source_lcao/pulay_force_stress_center2_template.hpp +++ /dev/null @@ -1,128 +0,0 @@ -#pragma once -#include "pulay_force_stress.h" -#include "source_base/timer.h" -#include "source_io/module_parameter/parameter.h" -namespace PulayForceStress -{ - // common kernel - template - inline void cal_pulay_fs( - ModuleBase::matrix& f, - ModuleBase::matrix& s, - const elecstate::DensityMatrix& dm, - const UnitCell& ucell, - const Parallel_Orbitals& pv, - const double** dHSx, - const double** dHSxy, - const double* dtau, - const bool& isforce, - const bool& isstress, - Record_adj* ra, - const double& factor_force, - const double& factor_stress, - Tfunc& stress_func) - { - ModuleBase::TITLE("Force_LCAO", "cal_pulay_fs_center2"); - ModuleBase::timer::tick("Force_LCAO", "cal_pulay_fs_center2"); - - const int nspin_DMR = (PARAM.inp.nspin == 2) ? 2 : 1; - int total_irr = 0; -#ifdef _OPENMP -#pragma omp parallel - { - int num_threads = omp_get_num_threads(); - ModuleBase::matrix local_s(3, 3); - int local_total_irr = 0; -#else - ModuleBase::matrix& local_s = s; - int& local_total_irr = total_irr; -#endif - -#ifdef _OPENMP -#pragma omp for schedule(dynamic) -#endif - for (int iat = 0; iat < ucell.nat; iat++) - { - const int T1 = ucell.iat2it[iat]; - Atom* atom1 = &ucell.atoms[T1]; - const int I1 = ucell.iat2ia[iat]; - // get iat1 - int iat1 = ucell.itia2iat(T1, I1); - double* f_iat; - if (isforce) { f_iat = &f(iat, 0); } -#ifdef _OPENMP - // using local stack to avoid false sharing in multi-threaded case - double f_tmp[3] = { 0.0, 0.0, 0.0 }; - if (num_threads > 1) { f_iat = f_tmp; } -#endif - int irr = pv.nlocstart[iat]; - const int start1 = ucell.itiaiw2iwt(T1, I1, 0); - for (int cb = 0; cb < ra->na_each[iat]; ++cb) - { - const int T2 = ra->info[iat][cb][3]; - const int I2 = ra->info[iat][cb][4]; - const int start2 = ucell.itiaiw2iwt(T2, I2, 0); - Atom* atom2 = &ucell.atoms[T2]; - // get iat2 - int iat2 = ucell.itia2iat(T2, I2); - double Rx = ra->info[iat][cb][0]; - double Ry = ra->info[iat][cb][1]; - double Rz = ra->info[iat][cb][2]; - // get BaseMatrix - if (pv.get_row_size(iat1) <= 0 || pv.get_col_size(iat2) <= 0) { continue; } - std::vector*> tmp_matrix; - for (int is = 0; is < nspin_DMR; ++is) - { - tmp_matrix.push_back(dm.get_DMR_pointer(is + 1)->find_matrix(iat1, iat2, Rx, Ry, Rz)); - } - for (int mu = 0; mu < pv.get_row_size(iat1); ++mu) - { - for (int nu = 0; nu < pv.get_col_size(iat2); ++nu) - { - // the DMR should not be summed over spin, do the summation here - double dm2d1 = 0.0; - for (int is = 0; is < nspin_DMR; ++is) { dm2d1 += tmp_matrix[is]->get_value(mu, nu); } - double dm2d2 = 2.0 * dm2d1; - if (isforce) - { - const double dm2d2_f = dm2d2 * factor_force; - for (int i = 0; i < 3; ++i) { f_iat[i] += dm2d2_f * dHSx[i][irr]; } - } - if (isstress) - { - const double dm2d1_s = dm2d1 * factor_stress; - stress_func(local_s, dm2d1_s, dHSx, dHSxy, dtau, irr); - } - ++local_total_irr; - ++irr; - } - } - } -#ifdef _OPENMP - if (isforce && num_threads > 1) { for (int i = 0; i < 3; ++i) { f(iat, i) += f_iat[i]; } } -#endif - } // end iat -#ifdef _OPENMP -#pragma omp critical(cal_foverlap_k_reduce) - { - total_irr += local_total_irr; - if (isstress) - { - for (int i = 0; i < 3; ++i) { for (int j = i; j < 3; ++j) { s(i, j) += local_s(i, j); } } - } - } - } -#endif - - if (total_irr != pv.nnr) - { - ModuleBase::GlobalFunc::OUT(GlobalV::ofs_running, "wrong irr", total_irr); - ModuleBase::GlobalFunc::OUT(GlobalV::ofs_running, "wrong pv.nnr", pv.nnr); - ModuleBase::WARNING_QUIT("Force_LCAO::cal_pulay_fs_center2", "irr!=pv.nnr"); - } - - if (isstress) { StressTools::stress_fill(ucell.lat0, ucell.omega, s); } - - ModuleBase::timer::tick("Force_LCAO", "cal_pulay_fs_center2"); - } -} diff --git a/source/source_lcao/pulay_force_stress_gint.hpp b/source/source_lcao/pulay_force_stress_gint.hpp deleted file mode 100644 index f310b31fad..0000000000 --- a/source/source_lcao/pulay_force_stress_gint.hpp +++ /dev/null @@ -1,65 +0,0 @@ -#pragma once -#include "pulay_force_stress.h" -#include "source_lcao/stress_tools.h" -#include "source_hamilt/module_xc/xc_functional.h" -#include "source_io/module_parameter/parameter.h" -#include "source_lcao/module_gint/temp_gint/gint_interface.h" -namespace PulayForceStress -{ - template - void cal_pulay_fs( - ModuleBase::matrix& f, ///< [out] force - ModuleBase::matrix& s, ///< [out] stress - const elecstate::DensityMatrix& dm, ///< [in] density matrix - const UnitCell& ucell, ///< [in] unit cell - const elecstate::Potential* pot, ///< [in] potential on grid - typename TGint::type& gint, - const bool& isforce, - const bool& isstress, - const bool& set_dmr_gint) - { - const int nspin = PARAM.inp.nspin; - -#ifdef __OLD_GINT - if (set_dmr_gint) { gint.transfer_DM2DtoGrid(dm.get_DMR_vector()); } // 2d block to grid - for (int is = 0; is < nspin; ++is) - { - const double* vr_eff1 = pot->get_effective_v(is); - const double* vofk_eff1 = nullptr; - if (XC_Functional::get_ked_flag()) - { - vofk_eff1 = pot->get_effective_vofk(is); - Gint_inout inout(is, vr_eff1, vofk_eff1, isforce, isstress, &f, &s, Gint_Tools::job_type::force_meta); - gint.cal_gint(&inout); - } - else - { - Gint_inout inout(is, vr_eff1, isforce, isstress, &f, &s, Gint_Tools::job_type::force); - gint.cal_gint(&inout); - } - } -#else - std::vector vr_eff(nspin, nullptr); - std::vector vofk_eff(nspin, nullptr); - if (XC_Functional::get_func_type() == 3 || XC_Functional::get_func_type() == 5) - { - for (int is = 0; is < nspin; ++is) - { - vr_eff[is] = pot->get_effective_v(is); - vofk_eff[is] = pot->get_effective_vofk(is); - } - ModuleGint::cal_gint_fvl_meta(nspin, vr_eff, vofk_eff, dm.get_DMR_vector(), isforce, isstress, &f, &s); - } - else - { - for(int is = 0; is < nspin; ++is) - { - vr_eff[is] = pot->get_effective_v(is); - } - ModuleGint::cal_gint_fvl(nspin, vr_eff, dm.get_DMR_vector(), isforce, isstress, &f, &s); - } -#endif - - if (isstress) { StressTools::stress_fill(-1.0, ucell.omega, s); } - } -} \ No newline at end of file diff --git a/source/source_lcao/pulay_fs.h b/source/source_lcao/pulay_fs.h new file mode 100644 index 0000000000..ea25e9186a --- /dev/null +++ b/source/source_lcao/pulay_fs.h @@ -0,0 +1,59 @@ +#pragma once +#include "source_basis/module_nao/two_center_bundle.h" +#include "source_estate/module_dm/density_matrix.h" +#include "source_estate/module_pot/potential_new.h" +#include "source_cell/unitcell.h" +#include "source_lcao/stress_tools.h" + +/// calculate the abstract formulas: +/// $Tr[D*dH/dx]$ (force) and $1/V Tr[D*(dH/dx_a*x_b)]$ (stress) +/// where D can be any (energy) density matrix +/// and H can be any operator +namespace PulayForceStress +{ + /// for 2-center-integration terms, provided force and stress derivatives + template + void cal_pulay_fs( + ModuleBase::matrix& f, ///< [out] force + ModuleBase::matrix& s, ///< [out] stress + const elecstate::DensityMatrix& dm, ///< [in] density matrix or energy density matrix + const UnitCell& ucell, ///< [in] unit cell + const Parallel_Orbitals& pv, ///< [in] parallel orbitals + const double* (&dHSx)[3], ///< [in] dHSx x, y, z, for force + const double* (&dHSxy)[6], ///< [in] dHSxy 11, 12, 13, 22, 23, 33, for stress + const bool& isforce, + const bool& isstress, + Record_adj* ra = nullptr, + const double& factor_force = 1.0, + const double& factor_stress = 1.0); + + /// for 2-center-integration terms, provided force derivatives and coordinate difference + template + void cal_pulay_fs( + ModuleBase::matrix& f, ///< [out] force + ModuleBase::matrix& s, ///< [out] stress + const elecstate::DensityMatrix& dm, ///< [in] density matrix or energy density matrix + const UnitCell& ucell, ///< [in] unit cell + const Parallel_Orbitals& pv, ///< [in] parallel orbitals + const double* (&dHSx)[3], ///< [in] dHSx x, y, z, for force and stress + const double* dtau, ///< [in] dr x, y, z, for stress + const bool& isforce, + const bool& isstress, + Record_adj* ra = nullptr, + const double& factor_force = 1.0, + const double& factor_stress = 1.0); + + /// for grid-integration terms + template + void cal_pulay_fs( + ModuleBase::matrix& f, ///< [out] force + ModuleBase::matrix& s, ///< [out] stress + const elecstate::DensityMatrix& dm, ///< [in] density matrix or energy density matrix + const UnitCell& ucell, ///< [in] unit cell + const elecstate::Potential* pot, ///< [in] potential on grid + const bool& isforce, + const bool& isstress, + const bool& set_dmr_gint = true); +} +#include "pulay_fs_temp.hpp" +#include "pulay_fs_gint.hpp" diff --git a/source/source_lcao/pulay_fs_center2.cpp b/source/source_lcao/pulay_fs_center2.cpp new file mode 100644 index 0000000000..25bc2cdc66 --- /dev/null +++ b/source/source_lcao/pulay_fs_center2.cpp @@ -0,0 +1,144 @@ +#include "pulay_fs.h" + +template<> // gamma-only, provided xy +void PulayForceStress::cal_pulay_fs( + ModuleBase::matrix& force, + ModuleBase::matrix& stress, + const elecstate::DensityMatrix& dm, + const UnitCell& ucell, + const Parallel_Orbitals& pv, + const double* (&dHSx)[3], + const double* (&dHSxy)[6], + const bool& isforce, + const bool& isstress, + Record_adj* ra, + const double& factor_force, + const double& factor_stress) +{ + ModuleBase::TITLE("Forces", "cal_pulay_fs"); + ModuleBase::timer::tick("Forces", "cal_pulay_fs"); + + const int nspin = PARAM.inp.nspin; + const int nlocal = PARAM.globalv.nlocal; + + for (int i = 0; i < nlocal; ++i) + { + const int iat = ucell.iwt2iat[i]; + for (int j = 0; j < nlocal; ++j) + { + const int mu = pv.global2local_row(j); + const int nu = pv.global2local_col(i); + + if (mu >= 0 && nu >= 0) + { + const int index = mu * pv.ncol + nu; + double sum = 0.0; + for (int is = 0; is < nspin; ++is) + { + sum += dm.get_DMK(is + 1, 0, nu, mu); + } + if (isforce) + { + const double sumf = sum * factor_force; + for (int i = 0; i < 3; ++i) + { + force(iat, i) += sumf * 2.0 * dHSx[i][index]; + } + } + if (isstress) + { + const double sums = sum * factor_stress; + int ij = 0; + for (int i = 0; i < 3;++i) + { + for (int j = i; j < 3; ++j) + { + stress(i, j) += sums * dHSxy[ij++][index]; + } + } + } + } + } + } + + if (isstress) + { + StressTools::stress_fill(ucell.lat0, ucell.omega, stress); + } + + ModuleBase::timer::tick("Forces", "cal_pulay_fs"); +} + + +template<> //multi-k, provided xy +void PulayForceStress::cal_pulay_fs( + ModuleBase::matrix& force, + ModuleBase::matrix& stress, + const elecstate::DensityMatrix, double>& dm, + const UnitCell& ucell, + const Parallel_Orbitals& pv, + const double* (&dHSx)[3], + const double* (&dHSxy)[6], + const bool& isforce, + const bool& isstress, + Record_adj* ra, + const double& factor_force, + const double& factor_stress) +{ + auto stress_func = [](ModuleBase::matrix& local_s, + const double& dm2d1_s, + const double** dHSx, + const double** dHSxy, + const double* dtau, + const int& irr) + { + int ij = 0; + for (int i = 0; i < 3; ++i) + { + for (int j = i; j < 3; ++j) + { + local_s(i, j) += dm2d1_s * dHSxy[ij++][irr]; + } + } + }; + cal_pulay_fs(force, stress, dm, ucell, pv, dHSx, dHSxy, + nullptr, isforce, isstress, ra, + factor_force, factor_stress, stress_func); +} + + +template<> // multi-k, provided x +void PulayForceStress::cal_pulay_fs( + ModuleBase::matrix& force, + ModuleBase::matrix& stress, + const elecstate::DensityMatrix, double>& dm, + const UnitCell& ucell, + const Parallel_Orbitals& pv, + const double* (&dHSx)[3], + const double* dtau, + const bool& isforce, + const bool& isstress, + Record_adj* ra, + const double& factor_force, + const double& factor_stress) +{ + auto stress_func = [](ModuleBase::matrix& local_s, + const double& dm2d1_s, + const double** dHSx, + const double** dHSxy, + const double* dtau, + const int& irr) + { + for (int i = 0; i < 3; ++i) + { + for (int j = i; j < 3; ++j) + { + local_s(i, j) += dm2d1_s * dHSx[i][irr] * dtau[irr * 3 + j]; + } + } + }; + cal_pulay_fs(force, stress, dm, ucell, pv, dHSx, + nullptr, dtau, isforce, isstress, ra, + factor_force, factor_stress, stress_func); +} + diff --git a/source/source_lcao/pulay_fs_gint.hpp b/source/source_lcao/pulay_fs_gint.hpp new file mode 100644 index 0000000000..46040ce340 --- /dev/null +++ b/source/source_lcao/pulay_fs_gint.hpp @@ -0,0 +1,43 @@ +#pragma once +#include "pulay_fs.h" +#include "source_lcao/stress_tools.h" +#include "source_hamilt/module_xc/xc_functional.h" +#include "source_io/module_parameter/parameter.h" +#include "source_lcao/module_gint/gint_interface.h" +namespace PulayForceStress +{ + template + void cal_pulay_fs( + ModuleBase::matrix& f, ///< [out] force + ModuleBase::matrix& s, ///< [out] stress + const elecstate::DensityMatrix& dm, ///< [in] density matrix + const UnitCell& ucell, ///< [in] unit cell + const elecstate::Potential* pot, ///< [in] potential on grid + const bool& isforce, + const bool& isstress, + const bool& set_dmr_gint) + { + const int nspin = PARAM.inp.nspin; + std::vector vr_eff(nspin, nullptr); + std::vector vofk_eff(nspin, nullptr); + if (XC_Functional::get_func_type() == 3 || XC_Functional::get_func_type() == 5) + { + for (int is = 0; is < nspin; ++is) + { + vr_eff[is] = pot->get_eff_v(is); + vofk_eff[is] = pot->get_eff_vofk(is); + } + ModuleGint::cal_gint_fvl_meta(nspin, vr_eff, vofk_eff, dm.get_DMR_vector(), isforce, isstress, &f, &s); + } + else + { + for(int is = 0; is < nspin; ++is) + { + vr_eff[is] = pot->get_eff_v(is); + } + ModuleGint::cal_gint_fvl(nspin, vr_eff, dm.get_DMR_vector(), isforce, isstress, &f, &s); + } + + if (isstress) { StressTools::stress_fill(-1.0, ucell.omega, s); } + } +} diff --git a/source/source_lcao/pulay_fs_temp.hpp b/source/source_lcao/pulay_fs_temp.hpp new file mode 100644 index 0000000000..0d7c821ddc --- /dev/null +++ b/source/source_lcao/pulay_fs_temp.hpp @@ -0,0 +1,134 @@ +#pragma once +#include +#include "pulay_fs.h" +#include "source_base/timer.h" +#include "source_io/module_parameter/parameter.h" +#ifdef _OPENMP +#include +#endif + + +namespace PulayForceStress +{ + // common kernel + template + inline void cal_pulay_fs( + ModuleBase::matrix& f, + ModuleBase::matrix& s, + const elecstate::DensityMatrix& dm, + const UnitCell& ucell, + const Parallel_Orbitals& pv, + const double** dHSx, + const double** dHSxy, + const double* dtau, + const bool& isforce, + const bool& isstress, + Record_adj* ra, + const double& factor_force, + const double& factor_stress, + Tfunc& stress_func) + { + ModuleBase::TITLE("Force_LCAO", "cal_pulay_fs_center2"); + ModuleBase::timer::tick("Force_LCAO", "cal_pulay_fs_center2"); + + const int nspin_DMR = (PARAM.inp.nspin == 2) ? 2 : 1; + int total_irr = 0; +#ifdef _OPENMP +#pragma omp parallel + { + int num_threads = omp_get_num_threads(); + ModuleBase::matrix local_s(3, 3); + int local_total_irr = 0; +#else + ModuleBase::matrix& local_s = s; + int& local_total_irr = total_irr; +#endif + +#ifdef _OPENMP +#pragma omp for schedule(dynamic) +#endif + for (int iat = 0; iat < ucell.nat; iat++) + { + const int T1 = ucell.iat2it[iat]; + Atom* atom1 = &ucell.atoms[T1]; + const int I1 = ucell.iat2ia[iat]; + // get iat1 + int iat1 = ucell.itia2iat(T1, I1); + double* f_iat = nullptr; + if (isforce) { f_iat = &f(iat, 0); } +#ifdef _OPENMP + // using local stack to avoid false sharing in multi-threaded case + double f_tmp[3] = { 0.0, 0.0, 0.0 }; + if (num_threads > 1) { f_iat = f_tmp; } +#endif + int irr = pv.nlocstart[iat]; + const int start1 = ucell.itiaiw2iwt(T1, I1, 0); + for (int cb = 0; cb < ra->na_each[iat]; ++cb) + { + const int T2 = ra->info[iat][cb][3]; + const int I2 = ra->info[iat][cb][4]; + const int start2 = ucell.itiaiw2iwt(T2, I2, 0); + Atom* atom2 = &ucell.atoms[T2]; + // get iat2 + int iat2 = ucell.itia2iat(T2, I2); + double Rx = ra->info[iat][cb][0]; + double Ry = ra->info[iat][cb][1]; + double Rz = ra->info[iat][cb][2]; + // get BaseMatrix + if (pv.get_row_size(iat1) <= 0 || pv.get_col_size(iat2) <= 0) { continue; } + std::vector*> tmp_matrix; + for (int is = 0; is < nspin_DMR; ++is) + { + tmp_matrix.push_back(dm.get_DMR_pointer(is + 1)->find_matrix(iat1, iat2, Rx, Ry, Rz)); + } + for (int mu = 0; mu < pv.get_row_size(iat1); ++mu) + { + for (int nu = 0; nu < pv.get_col_size(iat2); ++nu) + { + // the DMR should not be summed over spin, do the summation here + double dm2d1 = 0.0; + for (int is = 0; is < nspin_DMR; ++is) { dm2d1 += tmp_matrix[is]->get_value(mu, nu); } + double dm2d2 = 2.0 * dm2d1; + if (isforce) + { + const double dm2d2_f = dm2d2 * factor_force; + for (int i = 0; i < 3; ++i) { f_iat[i] += dm2d2_f * dHSx[i][irr]; } + } + if (isstress) + { + const double dm2d1_s = dm2d1 * factor_stress; + stress_func(local_s, dm2d1_s, dHSx, dHSxy, dtau, irr); + } + ++local_total_irr; + ++irr; + } + } + } +#ifdef _OPENMP + if (isforce && num_threads > 1) { for (int i = 0; i < 3; ++i) { f(iat, i) += f_iat[i]; } } +#endif + } // end iat +#ifdef _OPENMP +#pragma omp critical(cal_foverlap_k_reduce) + { + total_irr += local_total_irr; + if (isstress) + { + for (int i = 0; i < 3; ++i) { for (int j = i; j < 3; ++j) { s(i, j) += local_s(i, j); } } + } + } + } +#endif + + if (total_irr != pv.nnr) + { + ModuleBase::GlobalFunc::OUT(GlobalV::ofs_running, "wrong irr", total_irr); + ModuleBase::GlobalFunc::OUT(GlobalV::ofs_running, "wrong pv.nnr", pv.nnr); + ModuleBase::WARNING_QUIT("Force_LCAO::cal_pulay_fs_center2", "irr!=pv.nnr"); + } + + if (isstress) { StressTools::stress_fill(ucell.lat0, ucell.omega, s); } + + ModuleBase::timer::tick("Force_LCAO", "cal_pulay_fs_center2"); + } +} diff --git a/source/source_lcao/record_adj.cpp b/source/source_lcao/record_adj.cpp index 7e2b9c7bbe..9f0aee0e15 100644 --- a/source/source_lcao/record_adj.cpp +++ b/source/source_lcao/record_adj.cpp @@ -1,9 +1,8 @@ #include "record_adj.h" - #include "source_base/timer.h" #include "source_cell/module_neighbor/sltk_grid_driver.h" -#include "source_pw/module_pwdft/global.h" #include "source_io/module_parameter/parameter.h" + Record_adj::Record_adj() { } @@ -283,226 +282,4 @@ void Record_adj::for_2d(const UnitCell& ucell, return; } -//-------------------------------------------- -// This will record the orbitals according to -// grid division (cut along z direction) -//-------------------------------------------- -void Record_adj::for_grid(const UnitCell& ucell, - const Grid_Driver& grid_d, - const Grid_Technique& gt, - const std::vector& orb_cutoff) -{ - ModuleBase::TITLE("Record_adj", "for_grid"); - ModuleBase::timer::tick("Record_adj", "for_grid"); - - this->na_proc = 0; - this->iat2ca = new int[ucell.nat]; - for (int iat = 0; iat < ucell.nat; ++iat) - { - { - if (gt.in_this_processor[iat]) - { - iat2ca[iat] = na_proc; - ++na_proc; - } - else - { - iat2ca[iat] = -1; - } - } - } - - // number of adjacents for each atom. - this->na_each = new int[na_proc]; - ModuleBase::GlobalFunc::ZEROS(na_each, na_proc); - this->info = new int**[na_proc]; -#ifdef _OPENMP -#pragma omp parallel - { -#endif - ModuleBase::Vector3 tau1, tau2, dtau; - ModuleBase::Vector3 tau0, dtau1, dtau2; - -#ifdef _OPENMP -#pragma omp for schedule(dynamic) -#endif - for (int iat = 0; iat < ucell.nat; ++iat) - { - const int T1 = ucell.iat2it[iat]; - Atom* atom1 = &ucell.atoms[T1]; - const int I1 = ucell.iat2ia[iat]; - { - const int ca = iat2ca[iat]; - // key in this function - if (gt.in_this_processor[iat]) - { - tau1 = atom1->tau[I1]; - // grid_d.Find_atom(tau1); - AdjacentAtomInfo adjs; - grid_d.Find_atom(ucell, tau1, T1, I1, &adjs); - for (int ad = 0; ad < adjs.adj_num + 1; ad++) - { - const int T2 = adjs.ntype[ad]; - const int I2 = adjs.natom[ad]; - const int iat2 = ucell.itia2iat(T2, I2); - if (gt.in_this_processor[iat2]) - { - // Atom* atom2 = &ucell.atoms[T2]; - tau2 = adjs.adjacent_tau[ad]; - dtau = tau2 - tau1; - double distance = dtau.norm() * ucell.lat0; - double rcut = orb_cutoff[T1] + orb_cutoff[T2]; - - bool is_adj = false; - if (distance < rcut) - { - is_adj = true; - } - /* - else if(distance >= rcut) - { - for (int ad0 = 0; ad0 < grid_d.getAdjacentNum()+1; ++ad0) - { - const int T0 = grid_d.getType(ad0); - const int I0 = grid_d.getNatom(ad0); - const int iat0 = ucell.itia2iat(T0, I0); - const int start0 = ucell.itiaiw2iwt(T0, I0, 0); - - tau0 = grid_d.getAdjacentTau(ad0); - dtau1 = tau0 - tau1; - dtau2 = tau0 - tau2; - - double distance1 = dtau1.norm() * ucell.lat0; - double distance2 = dtau2.norm() * ucell.lat0; - - double rcut1 = orb_cutoff[T1] + ucell.infoNL.Beta[T0].get_rcut_max(); - double rcut2 = orb_cutoff[T2] + ucell.infoNL.Beta[T0].get_rcut_max(); - - if( distance1 < rcut1 && distance2 < rcut2 ) - { - is_adj = true; - break; - } // dis1, dis2 - } - } - */ - - // check the distance - if (is_adj) - { - ++na_each[ca]; - } - } // end judge 2 - } // end ad - } // end judge 1 - } // end I1 - } // end T1 - -#ifdef _OPENMP -#pragma omp for schedule(dynamic) -#endif - for (int i = 0; i < na_proc; i++) - { - assert(na_each[i] > 0); - info[i] = new int*[na_each[i]]; - for (int j = 0; j < na_each[i]; j++) - { - // (Rx, Ry, Rz, T, I) - info[i][j] = new int[5]; - ModuleBase::GlobalFunc::ZEROS(info[i][j], 5); - } - } - -#ifdef _OPENMP -#pragma omp for schedule(dynamic) -#endif - for (int iat = 0; iat < ucell.nat; ++iat) - { - const int T1 = ucell.iat2it[iat]; - Atom* atom1 = &ucell.atoms[T1]; - const int I1 = ucell.iat2ia[iat]; - { - const int ca = iat2ca[iat]; - - // key of this function - if (gt.in_this_processor[iat]) - { - tau1 = atom1->tau[I1]; - // grid_d.Find_atom(tau1); - AdjacentAtomInfo adjs; - grid_d.Find_atom(ucell, tau1, T1, I1, &adjs); - - int cb = 0; - for (int ad = 0; ad < adjs.adj_num + 1; ad++) - { - const int T2 = adjs.ntype[ad]; - const int I2 = adjs.natom[ad]; - const int iat2 = ucell.itia2iat(T2, I2); - - // key of this function - if (gt.in_this_processor[iat2]) - { - // Atom* atom2 = &ucell.atoms[T2]; - tau2 = adjs.adjacent_tau[ad]; - dtau = tau2 - tau1; - double distance = dtau.norm() * ucell.lat0; - double rcut = orb_cutoff[T1] + orb_cutoff[T2]; - // check the distance - if (distance < rcut) - { - info[ca][cb][0] = adjs.box[ad].x; - info[ca][cb][1] = adjs.box[ad].y; - info[ca][cb][2] = adjs.box[ad].z; - info[ca][cb][3] = T2; - info[ca][cb][4] = I2; - ++cb; - } - /* - else if(distance >= rcut) - { - for (int ad0 = 0; ad0 < grid_d.getAdjacentNum()+1; ++ad0) - { - const int T0 = grid_d.getType(ad0); - const int I0 = grid_d.getNatom(ad0); - const int iat0 = ucell.itia2iat(T0, I0); - const int start0 = ucell.itiaiw2iwt(T0, I0, 0); - - tau0 = grid_d.getAdjacentTau(ad0); - dtau1 = tau0 - tau1; - dtau2 = tau0 - tau2; - - double distance1 = dtau1.norm() * ucell.lat0; - double distance2 = dtau2.norm() * ucell.lat0; - - double rcut1 = orb_cutoff[T1] + ucell.infoNL.Beta[T0].get_rcut_max(); - double rcut2 = orb_cutoff[T2] + ucell.infoNL.Beta[T0].get_rcut_max(); - - if( distance1 < rcut1 && distance2 < rcut2 ) - { - info[ca][cb][0] = grid_d.getBox(ad).x; - info[ca][cb][1] = grid_d.getBox(ad).y; - info[ca][cb][2] = grid_d.getBox(ad).z; - info[ca][cb][3] = T2; - info[ca][cb][4] = I2; - ++cb; - break; - } // dis1, dis2 - } - } - */ - } - } // end ad - - assert(cb == na_each[ca]); - } - } - } -#ifdef _OPENMP - } -#endif - ModuleBase::timer::tick("Record_adj", "for_grid"); - info_modified = true; - // std::cout << " after for_grid" << std::endl; - return; -} diff --git a/source/source_lcao/record_adj.h b/source/source_lcao/record_adj.h index 3d1f16a402..871403ca14 100644 --- a/source/source_lcao/record_adj.h +++ b/source/source_lcao/record_adj.h @@ -2,7 +2,8 @@ #define RECORD_ADJ_H #include "source_basis/module_ao/parallel_orbitals.h" -#include "source_lcao/module_gint/grid_technique.h" +#include "source_cell/unitcell.h" +#include "source_cell/module_neighbor/sltk_grid_driver.h" //--------------------------------------------------- // FUNCTION: record the adjacent atoms for each atom @@ -26,14 +27,6 @@ class Record_adj bool gamma_only, const std::vector& orb_cutoff); - //-------------------------------------------- - // This will record the orbitals according to - // grid division (cut along z direction) - //-------------------------------------------- - void for_grid(const UnitCell& ucell, - const Grid_Driver& grid_d, - const Grid_Technique& gt, - const std::vector& orb_cutoff); void delete_grid(); @@ -41,7 +34,7 @@ class Record_adj int* na_each=nullptr; //-------------------------------------------- - // record sparse atom index in for_grid(const Grid_Technique >); + // record sparse atom index in for_grid(); // Map iat(dense atom index) to sparse atom index // Mainly removing the index dependency for OpenMP parallel loop // diff --git a/source/source_lcao/rho_tau_lcao.cpp b/source/source_lcao/rho_tau_lcao.cpp new file mode 100644 index 0000000000..9fbeb9f1c6 --- /dev/null +++ b/source/source_lcao/rho_tau_lcao.cpp @@ -0,0 +1,49 @@ +#include "rho_tau_lcao.h" +#include "source_hamilt/module_xc/xc_functional.h" +#include "source_lcao/module_gint/gint_interface.h" + +void LCAO_domain::dm2rho(std::vector*> &dmr, + const int nspin, + Charge* chr, + bool skip_normalize) +{ + ModuleBase::TITLE("LCAO_domain", "dm2rho"); + ModuleBase::timer::tick("LCAO_domain", "dm2rho"); + + for (int is = 0; is < nspin; is++) + { + ModuleBase::GlobalFunc::ZEROS(chr->rho[is], chr->nrxx); + } + + ModuleGint::cal_gint_rho(dmr, nspin, chr->rho); + + if(!skip_normalize)chr->renormalize_rho(); + + // should be moved somewhere else, mohan 20251024 + if (XC_Functional::get_ked_flag()) + { + dm2tau(dmr, nspin, chr); + } + + // symmetrize of charge density should be here, mohan 20251023 + + ModuleBase::timer::tick("LCAO_domain", "dm2rho"); + return; +} + + +void LCAO_domain::dm2tau(std::vector*> &dmr, + const int nspin, + Charge* chr) +{ + ModuleBase::TITLE("LCAO_domain", "dm2tau"); + ModuleBase::timer::tick("LCAO_domain", "dm2tau"); + + for (int is = 0; is < nspin; is++) + { + ModuleBase::GlobalFunc::ZEROS(chr->kin_r[is], chr->nrxx); + } + ModuleGint::cal_gint_tau(dmr, nspin, chr->kin_r); + + ModuleBase::timer::tick("LCAO_domain", "dm2tau"); +} diff --git a/source/source_lcao/rho_tau_lcao.h b/source/source_lcao/rho_tau_lcao.h new file mode 100644 index 0000000000..b90d23af85 --- /dev/null +++ b/source/source_lcao/rho_tau_lcao.h @@ -0,0 +1,20 @@ +#ifndef RHO_TAU_LCAO_H +#define RHO_TAU_LCAO_H + +#include "source_lcao/module_hcontainer/hcontainer.h" +#include "source_estate/module_charge/charge.h" + +// generate charge density from different basis or methods +namespace LCAO_domain +{ + void dm2rho(std::vector*> &dmr, + const int nspin, + Charge* chr, + bool skip_normalize = false); + + void dm2tau(std::vector*> &dmr, + const int nspin, + Charge* chr); +} + +#endif diff --git a/source/source_lcao/setup_deepks.cpp b/source/source_lcao/setup_deepks.cpp new file mode 100644 index 0000000000..190571661c --- /dev/null +++ b/source/source_lcao/setup_deepks.cpp @@ -0,0 +1,191 @@ +#include "source_lcao/setup_deepks.h" + +#include "source_io/module_parameter/parameter.h" // use parameter +#include "source_lcao/LCAO_domain.h" + +template +Setup_DeePKS::Setup_DeePKS() +{ +} + +template +Setup_DeePKS::~Setup_DeePKS() +{ +} + +template +void Setup_DeePKS::build_overlap(const UnitCell& ucell, + const LCAO_Orbitals& orb, + const Parallel_Orbitals& pv, + const Grid_Driver& gd, + TwoCenterIntegrator& overlap_orb_alpha, + const Input_para& inp) +{ +#ifdef __MLALGO + // 9) for each ionic step, the overlap must be rebuilt + // since it depends on ionic positions + if (PARAM.globalv.deepks_setorb) + { + // allocate , phialpha is different every ion step, so it is allocated here + DeePKS_domain::allocate_phialpha(inp.cal_force, ucell, orb, gd, &pv, this->ld.phialpha); + + // build and save at beginning + DeePKS_domain::build_phialpha(inp.cal_force, ucell, orb, gd, &pv, overlap_orb_alpha, this->ld.phialpha); + + if (inp.deepks_out_unittest) + { + DeePKS_domain::check_phialpha(inp.cal_force, ucell, orb, gd, &pv, this->ld.phialpha, GlobalV::MY_RANK); + } + } +#endif +} + +template +void Setup_DeePKS::before_runner(const UnitCell& ucell, // unitcell + const int nks, // number of k points + const LCAO_Orbitals& orb, // orbital info + Parallel_Orbitals& pv, // parallel orbitals + const Input_para& inp) +{ +#ifdef __MLALGO + LCAO_domain::DeePKS_init(ucell, pv, nks, orb, this->ld, GlobalV::ofs_running); + if (inp.deepks_scf) + { + // load the DeePKS model from deep neural network + DeePKS_domain::load_model(inp.deepks_model, this->ld.model_deepks); + // read pdm from file for NSCF or SCF-restart, do it only once in whole calculation + DeePKS_domain::read_pdm((inp.init_chg == "file"), + inp.deepks_equiv, + this->ld.init_pdm, + ucell.nat, + this->ld.deepks_param, + *orb.Alpha, + this->ld.pdm); + } +#endif +} + +template +void Setup_DeePKS::delta_e(const UnitCell& ucell, + const K_Vectors& kv, + const LCAO_Orbitals& orb, + const Parallel_Orbitals& pv, // parallel orbitals + const Grid_Driver& gd, + const std::vector>& dm_vec, + elecstate::fenergy& f_en, + const Input_para& inp) +{ +#ifdef __MLALGO + if (inp.deepks_scf) + { + this->ld.dpks_cal_e_delta_band(dm_vec, kv.get_nks()); + DeePKS_domain::update_dmr(kv.kvec_d, dm_vec, ucell, orb, pv, gd, this->ld.dm_r); + f_en.edeepks_scf = this->ld.E_delta - this->ld.e_delta_band; + f_en.edeepks_delta = this->ld.E_delta; + } +#endif +} + +template +void Setup_DeePKS::write_forces(const ModuleBase::matrix& fcs, + const ModuleBase::matrix& fvnl_dalpha, + const Input_para& inp) +{ +#ifdef __MLALGO + // DeePKS force + if (inp.deepks_out_labels) // not parallelized yet + { + if (inp.deepks_out_base == "none" || (inp.deepks_out_base != "none" && this->dpks_out_type == "tot")) + { + const std::string file_ftot + = PARAM.globalv.global_out_dir + (inp.deepks_out_labels == 1 ? "deepks_ftot.npy" : "deepks_force.npy"); + LCAO_deepks_io::save_matrix2npy(file_ftot, fcs, GlobalV::MY_RANK); // Hartree/Bohr, F_tot + + if (inp.deepks_out_labels == 1) + { + // this base only considers subtracting the deepks_scf part + const std::string file_fbase = PARAM.globalv.global_out_dir + "deepks_fbase.npy"; + if (inp.deepks_scf) + { + LCAO_deepks_io::save_matrix2npy(file_fbase, + fcs - fvnl_dalpha, + GlobalV::MY_RANK); // Hartree/Bohr, F_base + } + else + { + LCAO_deepks_io::save_matrix2npy(file_fbase, fcs, GlobalV::MY_RANK); // no scf, F_base=F_tot + } + } + } + if (inp.deepks_out_base != "none") + { + // output fcs as tot or base in another dir + // this base considers changing xc functional to base functional + const std::string file_f + = PARAM.globalv.global_deepks_label_elec_dir + (dpks_out_type == "tot" ? "ftot.npy" : "fbase.npy"); + LCAO_deepks_io::save_matrix2npy(file_f, fcs, GlobalV::MY_RANK); + } + } +#endif +} + +template +void Setup_DeePKS::write_stress(const ModuleBase::matrix& scs, + const ModuleBase::matrix& svnl_dalpha, + const double& omega, + const Input_para& inp) +{ +#ifdef __MLALGO + if (inp.deepks_out_labels == 1) + { + assert(omega > 0.0); + + if (inp.deepks_out_base == "none" || (inp.deepks_out_base != "none" && this->dpks_out_type == "tot")) + { + const std::string file_stot = PARAM.globalv.global_out_dir + "deepks_stot.npy"; + LCAO_deepks_io::save_matrix2npy(file_stot, + scs, + GlobalV::MY_RANK, + omega, + 'U'); // change to energy unit Ry when printing, S_tot; + + // this base only considers subtracting the deepks_scf part + const std::string file_sbase = PARAM.globalv.global_out_dir + "deepks_sbase.npy"; + if (inp.deepks_scf) + { + LCAO_deepks_io::save_matrix2npy(file_sbase, + scs - svnl_dalpha, + GlobalV::MY_RANK, + omega, + 'U'); // change to energy unit Ry when printing, S_base; + } + else + { + LCAO_deepks_io::save_matrix2npy(file_sbase, scs, GlobalV::MY_RANK, omega, + 'U'); // sbase = stot + } + } + if (inp.deepks_out_base != "none") + { + // output scs as tot or base in another dir + // this base considers changing xc functional to base functional + const std::string file_s = PARAM.globalv.global_deepks_label_elec_dir + + (this->dpks_out_type == "tot" ? "stot.npy" : "sbase.npy"); + LCAO_deepks_io::save_matrix2npy(file_s, + scs, + GlobalV::MY_RANK, + omega, + 'U'); // change to energy unit Ry when printing, S_tot; + } + } + else if (inp.deepks_out_labels == 2) + { + const std::string file_stot = PARAM.globalv.global_out_dir + "deepks_stress.npy"; + LCAO_deepks_io::save_matrix2npy(file_stot, scs, GlobalV::MY_RANK, omega, + 'F'); // flat mode + } +#endif +} + +template class Setup_DeePKS; +template class Setup_DeePKS>; diff --git a/source/source_lcao/setup_deepks.h b/source/source_lcao/setup_deepks.h new file mode 100644 index 0000000000..f4a5ad5f42 --- /dev/null +++ b/source/source_lcao/setup_deepks.h @@ -0,0 +1,74 @@ +#ifndef SETUP_DEEPKS_H +#define SETUP_DEEPKS_H + +#include "source_cell/unitcell.h" // use unitcell +#include "source_io/module_parameter/input_parameter.h" // Input_para +#include "source_basis/module_ao/parallel_orbitals.h" // parallel orbitals +#include "source_basis/module_ao/ORB_read.h" // orb +#include "source_basis/module_nao/two_center_integrator.h" // overlap_orb_alpha +#include "source_cell/module_neighbor/sltk_grid_driver.h" // grid driver +#include "source_cell/klist.h" // k-points +#include "source_cell/unitcell.h" // use unitcell +#include "source_basis/module_ao/ORB_read.h" // LCAO_Orbitals +#include "source_estate/fp_energy.h" // fp energy + + +#ifdef __MLALGO +#include "source_lcao/module_deepks/LCAO_deepks.h" // deepks +#endif + + +template +class Setup_DeePKS +{ + public: + + Setup_DeePKS(); + ~Setup_DeePKS(); + +#ifdef __MLALGO + LCAO_Deepks ld; +#endif + + std::string dpks_out_type; + + void before_runner( + const UnitCell &ucell, // unitcell + const int nks, // k points + const LCAO_Orbitals &orb, // orbital info + Parallel_Orbitals &pv, // parallel orbitals + const Input_para &inp); + + void build_overlap( + const UnitCell &ucell, + const LCAO_Orbitals &orb, + const Parallel_Orbitals &pv, + const Grid_Driver &gd, + TwoCenterIntegrator &overlap_orb_alpha, + const Input_para &inp); + + void delta_e( + const UnitCell& ucell, + const K_Vectors &kv, + const LCAO_Orbitals& orb, + const Parallel_Orbitals &pv, // parallel orbitals + const Grid_Driver &gd, + const std::vector>& dm_vec, + elecstate::fenergy &f_en, + const Input_para &inp); + + void write_forces( + const ModuleBase::matrix &fcs, + const ModuleBase::matrix &fvnl_dalpha, + const Input_para &inp); + + void write_stress( + const ModuleBase::matrix &scs, + const ModuleBase::matrix &svnl_dalpha, + const double &omega, + const Input_para &inp); + +}; + + +#endif diff --git a/source/source_lcao/setup_dm.cpp b/source/source_lcao/setup_dm.cpp new file mode 100644 index 0000000000..edb774ea58 --- /dev/null +++ b/source/source_lcao/setup_dm.cpp @@ -0,0 +1,25 @@ +#include "source_lcao/setup_dm.h" +#include "source_estate/cal_dm.h" +#include "source_base/timer.h" +#include "source_estate/module_dm/cal_dm_psi.h" +#include "source_hamilt/module_xc/xc_functional.h" +#include "source_lcao/module_deltaspin/spin_constrain.h" +#include "source_io/module_parameter/parameter.h" +#include "source_lcao/module_gint/gint_interface.h" +#include + +namespace LCAO_domain +{ + +// change init_dm to allocate_dm, mohan 2025-10-31 +template +void Setup_DM::allocate_dm(const K_Vectors* kv, const Parallel_Orbitals* pv, const int nspin) +{ + const int nspin_dm = nspin == 2 ? 2 : 1; + this->dm = new elecstate::DensityMatrix(pv, nspin_dm, kv->kvec_d, kv->get_nks() / nspin_dm); +} + +template class Setup_DM; // Gamma_only case +template class Setup_DM>; // multi-k case + +} // namespace elecstate diff --git a/source/source_lcao/setup_dm.h b/source/source_lcao/setup_dm.h new file mode 100644 index 0000000000..672a50c878 --- /dev/null +++ b/source/source_lcao/setup_dm.h @@ -0,0 +1,39 @@ +#ifndef SETUP_DM_H +#define SETUP_DM_H + +#include "source_cell/klist.h" +#include "source_basis/module_ao/parallel_orbitals.h" +#include "source_estate/module_dm/density_matrix.h" + +#include + +namespace LCAO_domain +{ +template +class Setup_DM +{ + public: + + Setup_DM() + { + } // will be called by ElecStateLCAO_TDDFT + + ~Setup_DM() + { + if (this->dm != nullptr) + { + delete this->dm; + } + } + + // allocate density matrix + void allocate_dm(const K_Vectors* kv, const Parallel_Orbitals* pv, const int nspin); + + elecstate::DensityMatrix* dm = nullptr; + +}; + + +} // namespace elecstate + +#endif diff --git a/source/source_lcao/setup_exx.cpp b/source/source_lcao/setup_exx.cpp new file mode 100644 index 0000000000..f552ed06df --- /dev/null +++ b/source/source_lcao/setup_exx.cpp @@ -0,0 +1,95 @@ +#include "source_lcao/setup_exx.h" + +template +Exx_NAO::Exx_NAO(){} + +template +Exx_NAO::~Exx_NAO(){} + + +template +void Exx_NAO::init() +{ +#ifdef __EXX + // 1. currently this initialization must be put in constructor rather than `before_all_runners()` + // because the latter is not reused by ESolver_LCAO_TDDFT, + // which cause the failure of the subsequent procedure reused by ESolver_LCAO_TDDFT + // 2. always construct but only initialize when if(cal_exx) is true + // because some members like two_level_step are used outside if(cal_exx) + if (GlobalC::exx_info.info_ri.real_number) + { + this->exd = std::make_shared>(GlobalC::exx_info.info_ri); + } + else + { + this->exc = std::make_shared>>(GlobalC::exx_info.info_ri); + } +#endif +} + +template +void Exx_NAO::before_runner( + UnitCell& ucell, // unitcell + K_Vectors &kv, // k points + const LCAO_Orbitals &orb, // orbital info + const Parallel_Orbitals &pv, // parallel orbitals + const Input_para& inp) +{ +#ifdef __EXX + if (inp.calculation == "scf" || inp.calculation == "relax" || inp.calculation == "cell-relax" + || inp.calculation == "md") + { + if (GlobalC::exx_info.info_global.cal_exx) + { + if (inp.init_wfc != "file") + { // if init_wfc==file, directly enter the EXX loop + XC_Functional::set_xc_first_loop(ucell); + } + + // initialize 2-center radial tables for EXX-LRI + if (GlobalC::exx_info.info_ri.real_number) + { + this->exd->init(MPI_COMM_WORLD, ucell, kv, orb); + this->exd->exx_before_all_runners(kv, ucell, pv); + } + else + { + this->exc->init(MPI_COMM_WORLD, ucell, kv, orb); + this->exc->exx_before_all_runners(kv, ucell, pv); + } + } + } +#endif +} + +template +void Exx_NAO::before_scf( + const UnitCell &ucell, // unitcell + const K_Vectors &kv, + const LCAO_Orbitals &orb, // orbital info + Charge_Mixing* p_chgmix, + const int istep, + const Input_para& inp) +{ +#ifdef __EXX + if (PARAM.inp.calculation != "nscf") + { + if (GlobalC::exx_info.info_ri.real_number) + { + this->exd->exx_beforescf(istep, kv, *p_chgmix, ucell, orb); + } + else + { + this->exc->exx_beforescf(istep, kv, *p_chgmix, ucell, orb); + } + } + else + { + // do nothing + } +#endif +} + + +template class Exx_NAO; +template class Exx_NAO>; diff --git a/source/source_lcao/setup_exx.h b/source/source_lcao/setup_exx.h new file mode 100644 index 0000000000..9805ff8c91 --- /dev/null +++ b/source/source_lcao/setup_exx.h @@ -0,0 +1,50 @@ +#ifndef SETUP_EXX_NAO_H +#define SETUP_EXX_NAO_H + +#include "source_cell/unitcell.h" // use unitcell +#include "source_cell/klist.h" // k points +#include "source_io/module_parameter/input_parameter.h" // Input_para +#include "source_basis/module_ao/parallel_orbitals.h" // parallel orbitals +#include "source_basis/module_ao/ORB_read.h" // orb +#include "source_estate/module_charge/charge_mixing.h" // use charge mixing + +// for EXX +#ifdef __EXX +#include "source_lcao/module_ri/Exx_LRI_interface.h" +#include "source_lcao/module_ri/Mix_DMk_2D.h" +#endif + +template +class Exx_NAO +{ + public: + + Exx_NAO(); + ~Exx_NAO(); + +#ifdef __EXX + std::shared_ptr> exd = nullptr; + std::shared_ptr>> exc = nullptr; +#endif + + void init(); + + void before_runner( + UnitCell& ucell, // unitcell + K_Vectors &kv, // k points + const LCAO_Orbitals &orb, // orbital info + const Parallel_Orbitals &pv, // parallel orbitals + const Input_para& inp); + + void before_scf( + const UnitCell &ucell, // unitcell + const K_Vectors &kv, + const LCAO_Orbitals &orb, // orbital info + Charge_Mixing* p_chgmix, + const int istep, + const Input_para& inp); + +}; + + +#endif diff --git a/source/source_lcao/spar_dh.cpp b/source/source_lcao/spar_dh.cpp index 21748e830e..1848901eea 100644 --- a/source/source_lcao/spar_dh.cpp +++ b/source/source_lcao/spar_dh.cpp @@ -2,7 +2,7 @@ #include "source_io/module_parameter/parameter.h" #include "source_lcao/LCAO_domain.h" -#include "source_lcao/module_gint/temp_gint/gint_interface.h" +#include "source_lcao/module_gint/gint_interface.h" #include void sparse_format::cal_dS(const UnitCell& ucell, @@ -58,8 +58,7 @@ void sparse_format::cal_dH(const UnitCell& ucell, const LCAO_Orbitals& orb, const int& current_spin, const double& sparse_thr, - const ModuleBase::matrix& v_eff, - Gint_k& gint_k) + const ModuleBase::matrix& v_eff) { ModuleBase::TITLE("sparse_format", "cal_dH"); @@ -109,26 +108,6 @@ void sparse_format::cal_dH(const UnitCell& ucell, if(PARAM.inp.nspin==2) { -#ifdef __OLD_GINT - gint_k.allocate_pvdpR(); - // note: some MPI process will not have grids when MPI cores are too - // many, v_eff in these processes are empty - const double* vr_eff1 - = v_eff.nc * v_eff.nr > 0 ? &(v_eff(current_spin, 0)) : nullptr; - - if (!PARAM.globalv.gamma_only_local) - { - if (PARAM.inp.vl_in_h) - { - Gint_inout inout(vr_eff1, - current_spin, - Gint_Tools::job_type::dvlocal); - gint_k.cal_gint(&inout); - } - } - gint_k.cal_dvlocal_R_sparseMatrix(current_spin, sparse_thr, HS_Arrays, &pv, ucell, grid); - gint_k.destroy_pvdpR(); -#else const double* vr_eff1 = v_eff.nc * v_eff.nr > 0 ? &(v_eff(current_spin, 0)) : nullptr; if (!PARAM.globalv.gamma_only_local) @@ -137,7 +116,6 @@ void sparse_format::cal_dH(const UnitCell& ucell, PARAM.inp.nspin, PARAM.globalv.npol, current_spin, PARAM.globalv.nlocal, sparse_thr, vr_eff1, pv, ucell, grid, HS_Arrays); } -#endif } return; } @@ -182,8 +160,8 @@ void sparse_format::cal_dSTN_R(const UnitCell& ucell, ModuleBase::Vector3 dtau, tau1, tau2; ModuleBase::Vector3 dtau1, dtau2, tau0; - double temp_value_double; - std::complex temp_value_complex; + double temp_value_double = 0.0; + std::complex temp_value_complex = 0.0; for (int T1 = 0; T1 < ucell.ntype; ++T1) { diff --git a/source/source_lcao/spar_dh.h b/source/source_lcao/spar_dh.h index c972524466..3df85fefc9 100644 --- a/source/source_lcao/spar_dh.h +++ b/source/source_lcao/spar_dh.h @@ -1,12 +1,14 @@ -#ifndef W_ABACUS_DEVELOP_ABACUS_DEVELOP_SOURCE_MODULE_HAMILT_LCAO_HAMILT_LCAODFT_SPAR_DH_H -#define W_ABACUS_DEVELOP_ABACUS_DEVELOP_SOURCE_MODULE_HAMILT_LCAO_HAMILT_LCAODFT_SPAR_DH_H +#ifndef SPAR_DH_H +#define SPAR_DH_H +#include "source_base/matrix.h" +#include "source_basis/module_ao/parallel_orbitals.h" +#include "source_basis/module_nao/two_center_bundle.h" +#include "source_basis/module_ao/ORB_read.h" #include "source_cell/module_neighbor/sltk_atom_arrange.h" #include "source_cell/module_neighbor/sltk_grid_driver.h" #include "source_lcao/LCAO_HS_arrays.hpp" #include "source_lcao/force_stress_arrays.h" -#include "source_lcao/hamilt_lcao.h" -#include "source_pw/module_pwdft/global.h" #include namespace sparse_format @@ -19,8 +21,7 @@ void cal_dH(const UnitCell& ucell, const LCAO_Orbitals& orb, const int& current_spin, const double& sparse_thr, - const ModuleBase::matrix& v_eff, - Gint_k& gint_k); + const ModuleBase::matrix& v_eff); // calculated the derivative of the overlap matrix: void cal_dS(const UnitCell& ucell, diff --git a/source/source_lcao/spar_exx.cpp b/source/source_lcao/spar_exx.cpp index 6538da7072..b19eee7c39 100644 --- a/source/source_lcao/spar_exx.cpp +++ b/source/source_lcao/spar_exx.cpp @@ -1,4 +1,174 @@ #ifdef __EXX -#include "LCAO_hamilt.hpp" -#endif + +#include "spar_exx.h" + +// -------------------------------------------------------- +// Header files needed for implementation only +// -------------------------------------------------------- + +#include +#include +#include + +#include "source_base/abfs-vector3_order.h" +#include "source_base/global_variable.h" +#include "source_base/timer.h" +#include "source_hamilt/module_xc/exx_info.h" +#include "source_io/module_parameter/parameter.h" +#include "source_lcao/module_ri/RI_2D_Comm.h" +#include "source_lcao/module_ri/RI_Util.hpp" + +// -------------------------------------------------------- +// Implementation of the cal_HR_exx function +// -------------------------------------------------------- + +namespace sparse_format +{ + +/** + * @brief Implementation of the cal_HR_exx function + */ +template +void cal_HR_exx( + const UnitCell& ucell, + const Parallel_Orbitals& pv, + LCAO_HS_Arrays& HS_Arrays, + const int& current_spin, + const double& sparse_threshold, + const int (&nmp)[3], + const std::vector>, RI::Tensor>>>& Hexxs) +{ + ModuleBase::TITLE("sparse_format", "cal_HR_exx"); + ModuleBase::timer::tick("sparse_format", "cal_HR_exx"); + + const Tdata frac = GlobalC::exx_info.info_global.hybrid_alpha; + + std::map> atoms_pos; + for (int iat = 0; iat < ucell.nat; ++iat) + { + atoms_pos[iat] = RI_Util::Vector3_to_array3(ucell.atoms[ucell.iat2it[iat]].tau[ucell.iat2ia[iat]]); + } + const std::array, 3> latvec + = {RI_Util::Vector3_to_array3(ucell.a1), + RI_Util::Vector3_to_array3(ucell.a2), + RI_Util::Vector3_to_array3(ucell.a3)}; + + const std::array Rs_period = {nmp[0], nmp[1], nmp[2]}; + + RI::Cell_Nearest cell_nearest; + cell_nearest.init(atoms_pos, latvec, Rs_period); + + const std::vector is_list + = (PARAM.inp.nspin != 4) ? std::vector{current_spin} : std::vector{0, 1, 2, 3}; + + for (const int is: is_list) + { + int is0_b = 0; + int is1_b = 0; + std::tie(is0_b, is1_b) = RI_2D_Comm::split_is_block(is); + + if (Hexxs.empty()) + { + break; + } + + for (const auto& HexxA: Hexxs[is]) + { + const int iat0 = HexxA.first; + for (const auto& HexxB: HexxA.second) + { + const int iat1 = HexxB.first.first; + + const Abfs::Vector3_Order R = RI_Util::array3_to_Vector3( + cell_nearest.get_cell_nearest_discrete(iat0, iat1, HexxB.first.second)); + + HS_Arrays.all_R_coor.insert(R); + + const RI::Tensor& Hexx = HexxB.second; + + for (size_t iw0 = 0; iw0 < Hexx.shape[0]; ++iw0) + { + const int iwt0 = RI_2D_Comm::get_iwt(ucell, iat0, iw0, is0_b); + const int iwt0_local = pv.global2local_row(iwt0); + + if (iwt0_local < 0) + { + continue; + } + + for (size_t iw1 = 0; iw1 < Hexx.shape[1]; ++iw1) + { + const int iwt1 = RI_2D_Comm::get_iwt(ucell, iat1, iw1, is1_b); + const int iwt1_local = pv.global2local_col(iwt1); + + if (iwt1_local < 0) + { + continue; + } + + if (std::abs(Hexx(iw0, iw1)) > sparse_threshold) + { + if (PARAM.inp.nspin == 1 || PARAM.inp.nspin == 2) + { + auto& HR_sparse_ptr = HS_Arrays.HR_sparse[current_spin][R][iwt0]; + double& HR_sparse = HR_sparse_ptr[iwt1]; + HR_sparse += RI::Global_Func::convert(frac * Hexx(iw0, iw1)); + if (std::abs(HR_sparse) <= sparse_threshold) + { + HR_sparse_ptr.erase(iwt1); + } + } + else if (PARAM.inp.nspin == 4) + { + auto& HR_sparse_ptr = HS_Arrays.HR_soc_sparse[R][iwt0]; + + std::complex& HR_sparse = HR_sparse_ptr[iwt1]; + + HR_sparse += RI::Global_Func::convert>(frac * Hexx(iw0, iw1)); + + if (std::abs(HR_sparse) <= sparse_threshold) + { + HR_sparse_ptr.erase(iwt1); + } + } + else + { + throw std::invalid_argument(std::string(__FILE__) + " line " + + std::to_string(__LINE__)); + } + } + } + } + } + } + } + + ModuleBase::timer::tick("sparse_format", "cal_HR_exx"); +} + +// -------------------------------------------------------- +// Explicit instantiations for double and complex types +// -------------------------------------------------------- + +template void cal_HR_exx( + const UnitCell& ucell, + const Parallel_Orbitals& pv, + LCAO_HS_Arrays& HS_Arrays, + const int& current_spin, + const double& sparse_thr, + const int (&nmp)[3], + const std::vector>, RI::Tensor>>>& Hexxs); + +template void cal_HR_exx>( + const UnitCell& ucell, + const Parallel_Orbitals& pv, + LCAO_HS_Arrays& HS_Arrays, + const int& current_spin, + const double& sparse_thr, + const int (&nmp)[3], + const std::vector>, RI::Tensor>>>>& Hexxs); + +} // namespace sparse_format + +#endif // __EXX diff --git a/source/source_lcao/spar_exx.h b/source/source_lcao/spar_exx.h index c12c4a14ce..4aca75aa5a 100644 --- a/source/source_lcao/spar_exx.h +++ b/source/source_lcao/spar_exx.h @@ -3,20 +3,44 @@ #ifdef __EXX -#include -#include +// -------------------------------------------------------- +// Header files - minimal set for declaration only +// -------------------------------------------------------- + +#include #include #include #include -#include "source_lcao/LCAO_HS_arrays.hpp" #include "source_basis/module_ao/parallel_orbitals.h" #include "source_cell/unitcell.h" +#include "source_lcao/LCAO_HS_arrays.hpp" + +// -------------------------------------------------------- +// Namespace - merged into one block +// -------------------------------------------------------- + namespace sparse_format { +/** + * @brief Calculate the Hamiltonian matrix elements in real space using EXX data in sparse format + * + * This function computes the Hamiltonian matrix elements in real space (HR) from EXX data, + * which is stored in a sparse tensor format. The results are added to the HS_Arrays structure. + * + * @tparam Tdata Data type for the matrix elements (double or std::complex) + * @param ucell Unit cell information + * @param pv Parallel orbitals information for distributed computation + * @param HS_Arrays Structure to store Hamiltonian and overlap matrix arrays + * @param current_spin Current spin channel (0 or 1 for spin-polarized calculations) + * @param sparse_thr Threshold for sparse matrix construction + * @param nmp Periodic boundary conditions in reciprocal space + * @param Hexxs EXX data stored as a nested map structure of tensors + */ template -void cal_HR_exx(const UnitCell& ucell, +void cal_HR_exx( + const UnitCell& ucell, const Parallel_Orbitals& pv, LCAO_HS_Arrays& HS_Arrays, const int& current_spin, @@ -24,7 +48,26 @@ void cal_HR_exx(const UnitCell& ucell, const int (&nmp)[3], const std::vector>, RI::Tensor>>>& Hexxs); +// Explicit instantiations for double and complex types +extern template void cal_HR_exx( + const UnitCell& ucell, + const Parallel_Orbitals& pv, + LCAO_HS_Arrays& HS_Arrays, + const int& current_spin, + const double& sparse_thr, + const int (&nmp)[3], + const std::vector>, RI::Tensor>>>& Hexxs); + +extern template void cal_HR_exx>( + const UnitCell& ucell, + const Parallel_Orbitals& pv, + LCAO_HS_Arrays& HS_Arrays, + const int& current_spin, + const double& sparse_thr, + const int (&nmp)[3], + const std::vector>, RI::Tensor>>>>& Hexxs); + } -#include "source_lcao/LCAO_hamilt.hpp" -#endif -#endif + +#endif // __EXX +#endif // SPARSE_FORMAT_EXX_H diff --git a/source/source_lcao/spar_hsr.cpp b/source/source_lcao/spar_hsr.cpp index 024fbfde2f..c7e26791d4 100644 --- a/source/source_lcao/spar_hsr.cpp +++ b/source/source_lcao/spar_hsr.cpp @@ -1,8 +1,9 @@ #include "spar_hsr.h" +#include "source_lcao/hamilt_lcao.h" +#include "source_io/module_parameter/parameter.h" #include "source_lcao/module_hcontainer/hcontainer.h" #include "source_lcao/module_rt/td_info.h" -#include "source_io/module_parameter/parameter.h" #include "spar_dh.h" #include "spar_exx.h" #include "spar_u.h" @@ -10,7 +11,7 @@ #ifdef __MPI void sparse_format::sync_all_R_coor(std::set>& all_R_coor, MPI_Comm comm) { - int my_rank, nproc; + int my_rank = 0, nproc = 0; MPI_Comm_rank(comm, &my_rank); MPI_Comm_size(comm, &nproc); @@ -67,20 +68,22 @@ void sparse_format::sync_all_R_coor(std::set>& all_R_co } #endif // __MPI +template void sparse_format::cal_HSR(const UnitCell& ucell, - const Parallel_Orbitals& pv, - LCAO_HS_Arrays& HS_Arrays, - const Grid_Driver& grid, - const int& current_spin, - const double& sparse_thr, - const int (&nmp)[3], - hamilt::Hamilt>* p_ham + Plus_U &dftu, // mohan add 20251107 + const Parallel_Orbitals& pv, + LCAO_HS_Arrays& HS_Arrays, + const Grid_Driver& grid, + const int& current_spin, + const double& sparse_thr, + const int (&nmp)[3], + hamilt::Hamilt* p_ham #ifdef __EXX - , - const std::vector>>>* Hexxd, - const std::vector>>>>* Hexxc + , + const std::vector>>>* Hexxd, + const std::vector>>>>* Hexxc #endif -) + ) { ModuleBase::TITLE("sparse_format", "cal_HSR"); @@ -91,30 +94,29 @@ void sparse_format::cal_HSR(const UnitCell& ucell, // cal_STN_R_sparse(current_spin, sparse_thr); if (nspin == 1 || nspin == 2) { - hamilt::HamiltLCAO, double>* p_ham_lcao - = dynamic_cast, double>*>(p_ham); + hamilt::HamiltLCAO* p_ham_lcao + = dynamic_cast*>(p_ham); HS_Arrays.all_R_coor = get_R_range(*(p_ham_lcao->getHR())); if (PARAM.inp.esolver_type == "tddft" && PARAM.inp.td_stype == 1) { - sparse_format::cal_HContainer_td(pv, - current_spin, - sparse_thr, - *(p_ham_lcao->getHR()), - TD_info::td_vel_op->HR_sparse_td_vel[current_spin]); + sparse_format::cal_HContainer>( + pv, + sparse_thr, + *(p_ham_lcao->getHR()), + TD_info::td_vel_op->HR_sparse_td_vel[current_spin]); } else { - sparse_format::cal_HContainer_d(pv, - current_spin, - sparse_thr, - *(p_ham_lcao->getHR()), - HS_Arrays.HR_sparse[current_spin]); + sparse_format::cal_HContainer(pv, + sparse_thr, + *(p_ham_lcao->getHR()), + HS_Arrays.HR_sparse[current_spin]); } - sparse_format::cal_HContainer_d(pv, current_spin, sparse_thr, *(p_ham_lcao->getSR()), HS_Arrays.SR_sparse); + sparse_format::cal_HContainer(pv, sparse_thr, *(p_ham_lcao->getSR()), HS_Arrays.SR_sparse); } else if (nspin == 4) { @@ -123,9 +125,15 @@ void sparse_format::cal_HSR(const UnitCell& ucell, HS_Arrays.all_R_coor = get_R_range(*(p_ham_lcao->getHR())); - sparse_format::cal_HContainer_cd(pv, current_spin, sparse_thr, *(p_ham_lcao->getHR()), HS_Arrays.HR_soc_sparse); + sparse_format::cal_HContainer>(pv, + sparse_thr, + *(p_ham_lcao->getHR()), + HS_Arrays.HR_soc_sparse); - sparse_format::cal_HContainer_cd(pv, current_spin, sparse_thr, *(p_ham_lcao->getSR()), HS_Arrays.SR_soc_sparse); + sparse_format::cal_HContainer>(pv, + sparse_thr, + *(p_ham_lcao->getSR()), + HS_Arrays.SR_soc_sparse); } else { @@ -137,17 +145,15 @@ void sparse_format::cal_HSR(const UnitCell& ucell, { if (nspin == 1 || nspin == 2) { - cal_HR_dftu(pv, HS_Arrays.all_R_coor, HS_Arrays.SR_sparse, HS_Arrays.HR_sparse, current_spin, sparse_thr); + cal_HR_dftu(dftu, pv, HS_Arrays.all_R_coor, + HS_Arrays.SR_sparse, HS_Arrays.HR_sparse, current_spin, sparse_thr); } else if (nspin == 4) { - cal_HR_dftu_soc(pv, - HS_Arrays.all_R_coor, - HS_Arrays.SR_soc_sparse, - HS_Arrays.HR_soc_sparse, - current_spin, - sparse_thr); - } + cal_HR_dftu_soc(dftu, pv, HS_Arrays.all_R_coor, + HS_Arrays.SR_soc_sparse, HS_Arrays.HR_soc_sparse, + current_spin, sparse_thr); + } else { ModuleBase::WARNING_QUIT("cal_HSR", "check the value of nspin."); @@ -179,14 +185,13 @@ void sparse_format::cal_HSR(const UnitCell& ucell, return; } -void sparse_format::cal_HContainer_d( - const Parallel_Orbitals& pv, - const int& current_spin, - const double& sparse_thr, - const hamilt::HContainer& hR, - std::map, std::map>>& target) +template +void sparse_format::cal_HContainer(const Parallel_Orbitals& pv, + const double& sparse_thr, + const hamilt::HContainer& hR, + std::map, std::map>>& target) { - ModuleBase::TITLE("sparse_format", "cal_HContainer_d"); + ModuleBase::TITLE("sparse_format", "cal_HContainer"); auto row_indexes = pv.get_indexes_row(); auto col_indexes = pv.get_indexes_col(); @@ -209,93 +214,8 @@ void sparse_format::cal_HContainer_d( for (int j = 0; j < col_size; ++j) { int nu = col_indexes[start_j + j]; - const auto& value_tmp = matrix.get_value(i, j); - if (std::abs(value_tmp) > sparse_thr) - { - target[dR][mu][nu] = value_tmp; - } - } - } - } - } - - return; -} - -void sparse_format::cal_HContainer_cd( - const Parallel_Orbitals& pv, - const int& current_spin, - const double& sparse_thr, - const hamilt::HContainer>& hR, - std::map, std::map>>>& target) -{ - ModuleBase::TITLE("sparse_format", "cal_HContainer_cd"); - - auto row_indexes = pv.get_indexes_row(); - auto col_indexes = pv.get_indexes_col(); - for (int iap = 0; iap < hR.size_atom_pairs(); ++iap) - { - int atom_i = hR.get_atom_pair(iap).get_atom_i(); - int atom_j = hR.get_atom_pair(iap).get_atom_j(); - int start_i = pv.atom_begin_row[atom_i]; - int start_j = pv.atom_begin_col[atom_j]; - int row_size = pv.get_row_size(atom_i); - int col_size = pv.get_col_size(atom_j); - for (int iR = 0; iR < hR.get_atom_pair(iap).get_R_size(); ++iR) - { - auto& matrix = hR.get_atom_pair(iap).get_HR_values(iR); - const ModuleBase::Vector3 r_index = hR.get_atom_pair(iap).get_R_index(iR); - Abfs::Vector3_Order dR(r_index.x, r_index.y, r_index.z); - for (int i = 0; i < row_size; ++i) - { - int mu = row_indexes[start_i + i]; - for (int j = 0; j < col_size; ++j) - { - int nu = col_indexes[start_j + j]; - const auto& value_tmp = matrix.get_value(i, j); - if (std::abs(value_tmp) > sparse_thr) - { - target[dR][mu][nu] = value_tmp; - } - } - } - } - } - - return; -} - -void sparse_format::cal_HContainer_td( - const Parallel_Orbitals& pv, - const int& current_spin, - const double& sparse_thr, - const hamilt::HContainer& hR, - std::map, std::map>>>& target) -{ - ModuleBase::TITLE("sparse_format", "cal_HContainer_td"); - - auto row_indexes = pv.get_indexes_row(); - auto col_indexes = pv.get_indexes_col(); - for (int iap = 0; iap < hR.size_atom_pairs(); ++iap) - { - int atom_i = hR.get_atom_pair(iap).get_atom_i(); - int atom_j = hR.get_atom_pair(iap).get_atom_j(); - int start_i = pv.atom_begin_row[atom_i]; - int start_j = pv.atom_begin_col[atom_j]; - int row_size = pv.get_row_size(atom_i); - int col_size = pv.get_col_size(atom_j); - for (int iR = 0; iR < hR.get_atom_pair(iap).get_R_size(); ++iR) - { - auto& matrix = hR.get_atom_pair(iap).get_HR_values(iR); - const ModuleBase::Vector3 r_index = hR.get_atom_pair(iap).get_R_index(iR); - Abfs::Vector3_Order dR(r_index.x, r_index.y, r_index.z); - for (int i = 0; i < row_size; ++i) - { - int mu = row_indexes[start_i + i]; - for (int j = 0; j < col_size; ++j) - { - int nu = col_indexes[start_j + j]; - const auto& value_tmp = std::complex(matrix.get_value(i, j), 0.0); + // const auto& value_tmp = std::complex(matrix.get_value(i, j), 0.0); + const TO value_tmp = static_cast(matrix.get_value(i, j)); if (std::abs(value_tmp) > sparse_thr) { target[dR][mu][nu] += value_tmp; @@ -396,8 +316,8 @@ void sparse_format::clear_zero_elements(LCAO_HS_Arrays& HS_Arrays, const int& cu iter++; } } // end while iter - } // end row loop - } // end R loop + } // end row loop + } // end R loop for (auto& R_loop: HS_Arrays.SR_soc_sparse) { @@ -416,8 +336,8 @@ void sparse_format::clear_zero_elements(LCAO_HS_Arrays& HS_Arrays, const int& cu iter++; } } // end while iter - } // end row_loop - } // end R_loop + } // end row_loop + } // end R_loop } return; @@ -452,3 +372,55 @@ void sparse_format::destroy_HS_R_sparse(LCAO_HS_Arrays& HS_Arrays) return; } + +template void sparse_format::cal_HSR( + const UnitCell& ucell, + Plus_U &dftu, // mohan add 20251107 + const Parallel_Orbitals& pv, + LCAO_HS_Arrays& HS_Arrays, + const Grid_Driver& grid, + const int& current_spin, + const double& sparse_thr, + const int (&nmp)[3], + hamilt::Hamilt* p_ham +#ifdef __EXX + , + const std::vector>>>* Hexxd, + const std::vector>>>>* Hexxc +#endif + ); + +template void sparse_format::cal_HSR>( + const UnitCell& ucell, + Plus_U &dftu, // mohan add 20251107 + const Parallel_Orbitals& pv, + LCAO_HS_Arrays& HS_Arrays, + const Grid_Driver& grid, + const int& current_spin, + const double& sparse_thr, + const int (&nmp)[3], + hamilt::Hamilt>* p_ham +#ifdef __EXX + , + const std::vector>>>* Hexxd, + const std::vector>>>>* Hexxc +#endif + ); + +template void sparse_format::cal_HContainer( + const Parallel_Orbitals& pv, + const double& sparse_thr, + const hamilt::HContainer& hR, + std::map, std::map>>& target); + +template void sparse_format::cal_HContainer>( + const Parallel_Orbitals& pv, + const double& sparse_thr, + const hamilt::HContainer& hR, + std::map, std::map>>>& target); + +template void sparse_format::cal_HContainer>( + const Parallel_Orbitals& pv, + const double& sparse_thr, + const hamilt::HContainer>& hR, + std::map, std::map>>>& target); diff --git a/source/source_lcao/spar_hsr.h b/source/source_lcao/spar_hsr.h index b3e809ceb2..b196d3be3b 100644 --- a/source/source_lcao/spar_hsr.h +++ b/source/source_lcao/spar_hsr.h @@ -1,7 +1,14 @@ #ifndef SPARSE_FORMAT_HSR_H #define SPARSE_FORMAT_HSR_H -#include "source_lcao/hamilt_lcao.h" +#include "source_lcao/LCAO_HS_arrays.hpp" +#include "source_lcao/module_hcontainer/hcontainer.h" +#include "source_hamilt/hamilt.h" +#include "source_lcao/module_dftu/dftu.h" // mohan add 20251107 + +#ifdef __EXX +#include +#endif namespace sparse_format { @@ -36,40 +43,28 @@ std::set> get_R_range(const hamilt::HContainer& hR) }; using TAC = std::pair>; +template void cal_HSR(const UnitCell& ucell, - const Parallel_Orbitals& pv, - LCAO_HS_Arrays& HS_Arrays, - const Grid_Driver& grid, - const int& current_spin, - const double& sparse_thr, - const int (&nmp)[3], - hamilt::Hamilt>* p_ham + Plus_U &dftu, // mohan add 2025-11-07 + const Parallel_Orbitals& pv, + LCAO_HS_Arrays& HS_Arrays, + const Grid_Driver& grid, + const int& current_spin, + const double& sparse_thr, + const int (&nmp)[3], + hamilt::Hamilt* p_ham #ifdef __EXX - , - const std::vector>>>* Hexxd = nullptr, - const std::vector>>>>* Hexxc = nullptr + , + const std::vector>>>* Hexxd = nullptr, + const std::vector>>>>* Hexxc = nullptr #endif -); + ); -void cal_HContainer_d(const Parallel_Orbitals& pv, - const int& current_spin, - const double& sparse_threshold, - const hamilt::HContainer& hR, - std::map, std::map>>& target); - -void cal_HContainer_cd( - const Parallel_Orbitals& pv, - const int& current_spin, - const double& sparse_threshold, - const hamilt::HContainer>& hR, - std::map, std::map>>>& target); - -void cal_HContainer_td( - const Parallel_Orbitals& pv, - const int& current_spin, - const double& sparse_threshold, - const hamilt::HContainer& hR, - std::map, std::map>>>& target); +template +void cal_HContainer(const Parallel_Orbitals& pv, + const double& sparse_thr, + const hamilt::HContainer& hR, + std::map, std::map>>& target); void clear_zero_elements(LCAO_HS_Arrays& HS_Arrays, const int& current_spin, const double& sparse_thr); @@ -77,4 +72,4 @@ void destroy_HS_R_sparse(LCAO_HS_Arrays& HS_Arrays); } // namespace sparse_format -#endif \ No newline at end of file +#endif diff --git a/source/source_lcao/spar_st.cpp b/source/source_lcao/spar_st.cpp index 61f19b257b..b3f7b4a2f2 100644 --- a/source/source_lcao/spar_st.cpp +++ b/source/source_lcao/spar_st.cpp @@ -1,14 +1,14 @@ #include "spar_st.h" -#include "source_io/module_parameter/parameter.h" #include "force_stress_arrays.h" +#include "source_io/module_parameter/parameter.h" #include "source_lcao/LCAO_domain.h" -#include "source_pw/module_pwdft/global.h" // only for INPUT #include "spar_dh.h" #include "spar_hsr.h" #include +template void sparse_format::cal_SR( const Parallel_Orbitals& pv, std::set>& all_R_coor, @@ -16,7 +16,7 @@ void sparse_format::cal_SR( std::map, std::map>>>& SR_soc_sparse, const Grid_Driver& grid, const double& sparse_thr, - hamilt::Hamilt>* p_ham) + hamilt::Hamilt* p_ham) { ModuleBase::TITLE("sparse_format", "cal_SR"); @@ -25,27 +25,19 @@ void sparse_format::cal_SR( const int nspin = PARAM.inp.nspin; // cal_STN_R_sparse(current_spin, sparse_thr); - if (nspin == 1 || nspin == 2) { - hamilt::HamiltLCAO, double>* p_ham_lcao - = dynamic_cast, double>*>( - p_ham); + if (nspin == 1 || nspin == 2) + { + hamilt::HamiltLCAO* p_ham_lcao + = dynamic_cast*>(p_ham); const int cspin = 0; - sparse_format::cal_HContainer_d(pv, - cspin, - sparse_thr, - *(p_ham_lcao->getSR()), - SR_sparse); - } else if (nspin == 4) { - hamilt::HamiltLCAO, std::complex>* - p_ham_lcao - = dynamic_cast, - std::complex>*>(p_ham); + sparse_format::cal_HContainer(pv, sparse_thr, *(p_ham_lcao->getSR()), SR_sparse); + } + else if (nspin == 4) + { + hamilt::HamiltLCAO, std::complex>* p_ham_lcao + = dynamic_cast, std::complex>*>(p_ham); const int cspin = 0; - sparse_format::cal_HContainer_cd(pv, - cspin, - sparse_thr, - *(p_ham_lcao->getSR()), - SR_soc_sparse); + sparse_format::cal_HContainer>(pv, sparse_thr, *(p_ham_lcao->getSR()), SR_soc_sparse); } return; @@ -106,15 +98,18 @@ void sparse_format::cal_STN_R_for_T(const UnitCell& ucell, double tmp = 0.0; std::complex tmpc = std::complex(0.0, 0.0); - for (int T1 = 0; T1 < ucell.ntype; ++T1) { + for (int T1 = 0; T1 < ucell.ntype; ++T1) + { Atom* atom1 = &ucell.atoms[T1]; - for (int I1 = 0; I1 < atom1->na; ++I1) { + for (int I1 = 0; I1 < atom1->na; ++I1) + { tau1 = atom1->tau[I1]; grid.Find_atom(ucell, tau1, T1, I1); Atom* atom1 = &ucell.atoms[T1]; const int start = ucell.itiaiw2iwt(T1, I1, 0); - for (int ad = 0; ad < grid.getAdjacentNum() + 1; ++ad) { + for (int ad = 0; ad < grid.getAdjacentNum() + 1; ++ad) + { const int T2 = grid.getType(ad); const int I2 = grid.getNatom(ad); Atom* atom2 = &ucell.atoms[T2]; @@ -126,12 +121,15 @@ void sparse_format::cal_STN_R_for_T(const UnitCell& ucell, bool adj = false; - if (distance < rcut) { + if (distance < rcut) + { adj = true; } - else if (distance >= rcut) { - for (int ad0 = 0; ad0 < grid.getAdjacentNum() + 1; ++ad0) { + else if (distance >= rcut) + { + for (int ad0 = 0; ad0 < grid.getAdjacentNum() + 1; ++ad0) + { const int T0 = grid.getType(ad0); tau0 = grid.getAdjacentTau(ad0); @@ -141,46 +139,49 @@ void sparse_format::cal_STN_R_for_T(const UnitCell& ucell, double distance1 = dtau1.norm() * ucell.lat0; double distance2 = dtau2.norm() * ucell.lat0; - double rcut1 = orb_cutoff[T1] - + ucell.infoNL.Beta[T0].get_rcut_max(); - double rcut2 = orb_cutoff[T2] - + ucell.infoNL.Beta[T0].get_rcut_max(); + double rcut1 = orb_cutoff[T1] + ucell.infoNL.Beta[T0].get_rcut_max(); + double rcut2 = orb_cutoff[T2] + ucell.infoNL.Beta[T0].get_rcut_max(); - if (distance1 < rcut1 && distance2 < rcut2) { + if (distance1 < rcut1 && distance2 < rcut2) + { adj = true; break; } } } - if (adj) { + if (adj) + { const int start2 = ucell.itiaiw2iwt(T2, I2, 0); - Abfs::Vector3_Order dR(grid.getBox(ad).x, - grid.getBox(ad).y, - grid.getBox(ad).z); + Abfs::Vector3_Order dR(grid.getBox(ad).x, grid.getBox(ad).y, grid.getBox(ad).z); - for (int ii = 0; ii < atom1->nw * PARAM.globalv.npol; ii++) { + for (int ii = 0; ii < atom1->nw * PARAM.globalv.npol; ii++) + { const int iw1_all = start + ii; const int mu = pv.global2local_row(iw1_all); - if (mu < 0) { + if (mu < 0) + { continue; } - for (int jj = 0; jj < atom2->nw * PARAM.globalv.npol; jj++) { + for (int jj = 0; jj < atom2->nw * PARAM.globalv.npol; jj++) + { int iw2_all = start2 + jj; const int nu = pv.global2local_col(iw2_all); - if (nu < 0) { + if (nu < 0) + { continue; } - if (nspin == 1 || nspin == 2) { + if (nspin == 1 || nspin == 2) + { tmp = HS_arrays.Hloc_fixedR[index]; - if (std::abs(tmp) > sparse_thr) { - HS_arrays.TR_sparse[dR][iw1_all][iw2_all] - = tmp; + if (std::abs(tmp) > sparse_thr) + { + HS_arrays.TR_sparse[dR][iw1_all][iw2_all] = tmp; } } @@ -195,14 +196,31 @@ void sparse_format::cal_STN_R_for_T(const UnitCell& ucell, return; } -void sparse_format::destroy_T_R_sparse(LCAO_HS_Arrays& HS_Arrays) { +void sparse_format::destroy_T_R_sparse(LCAO_HS_Arrays& HS_Arrays) +{ ModuleBase::TITLE("sparse_format", "destroy_T_R_sparse"); - if (PARAM.inp.nspin != 4) { - std::map, - std::map>> - empty_TR_sparse; + if (PARAM.inp.nspin != 4) + { + std::map, std::map>> empty_TR_sparse; HS_Arrays.TR_sparse.swap(empty_TR_sparse); } return; } + +template void sparse_format::cal_SR( + const Parallel_Orbitals& pv, + std::set>& all_R_coor, + std::map, std::map>>& SR_sparse, + std::map, std::map>>>& SR_soc_sparse, + const Grid_Driver& grid, + const double& sparse_thr, + hamilt::Hamilt* p_ham); +template void sparse_format::cal_SR>( + const Parallel_Orbitals& pv, + std::set>& all_R_coor, + std::map, std::map>>& SR_sparse, + std::map, std::map>>>& SR_soc_sparse, + const Grid_Driver& grid, + const double& sparse_thr, + hamilt::Hamilt>* p_ham); diff --git a/source/source_lcao/spar_st.h b/source/source_lcao/spar_st.h index 1b732d4316..aa8ce29434 100644 --- a/source/source_lcao/spar_st.h +++ b/source/source_lcao/spar_st.h @@ -4,15 +4,17 @@ #include "source_lcao/LCAO_HS_arrays.hpp" #include "source_lcao/hamilt_lcao.h" -namespace sparse_format { +namespace sparse_format +{ //! calculate overlap matrix with lattice vector R +template void cal_SR(const Parallel_Orbitals& pv, std::set>& all_R_coor, std::map, std::map>>& SR_sparse, std::map, std::map>>>& SR_soc_sparse, const Grid_Driver& grid, const double& sparse_thr, - hamilt::Hamilt>* p_ham); + hamilt::Hamilt* p_ham); //! calculate kinetic matrix with lattice vector R void cal_TR(const UnitCell& ucell, diff --git a/source/source_lcao/spar_u.cpp b/source/source_lcao/spar_u.cpp index af5f4982ac..fe12fe1c60 100644 --- a/source/source_lcao/spar_u.cpp +++ b/source/source_lcao/spar_u.cpp @@ -1,11 +1,10 @@ #include "spar_u.h" #include "source_base/parallel_reduce.h" #include "source_io/module_parameter/parameter.h" -#include "source_pw/module_pwdft/global.h" #include "source_base/timer.h" -#include "source_lcao/module_dftu/dftu.h" void sparse_format::cal_HR_dftu( + Plus_U &dftu, // mohan add 2025-11-07 const Parallel_Orbitals &pv, std::set> &all_R_coor, std::map, std::map>> &SR_sparse, @@ -74,7 +73,7 @@ void sparse_format::cal_HR_dftu( } } - GlobalC::dftu.cal_eff_pot_mat_R_double(current_spin, SR_tmp, HR_tmp); + dftu.cal_eff_pot_mat_R_double(current_spin, SR_tmp, HR_tmp); for (int i = 0; i < PARAM.globalv.nlocal; ++i) { @@ -128,6 +127,7 @@ void sparse_format::cal_HR_dftu( void sparse_format::cal_HR_dftu_soc( + Plus_U &dftu, // mohan add 2025-11-07 const Parallel_Orbitals &pv, std::set> &all_R_coor, std::map, std::map>>> &SR_soc_sparse, @@ -194,7 +194,7 @@ void sparse_format::cal_HR_dftu_soc( } } - GlobalC::dftu.cal_eff_pot_mat_R_complex_double(current_spin, SR_soc_tmp, HR_soc_tmp); + dftu.cal_eff_pot_mat_R_complex_double(current_spin, SR_soc_tmp, HR_soc_tmp); for (int i = 0; i < PARAM.globalv.nlocal; ++i) { diff --git a/source/source_lcao/spar_u.h b/source/source_lcao/spar_u.h index ced9781d79..4940a3c5ff 100644 --- a/source/source_lcao/spar_u.h +++ b/source/source_lcao/spar_u.h @@ -1,16 +1,16 @@ #ifndef SPARSE_FORMAT_U_H #define SPARSE_FORMAT_U_H +#include "source_base/abfs-vector3_order.h" #include "source_cell/module_neighbor/sltk_atom_arrange.h" #include "source_cell/module_neighbor/sltk_grid_driver.h" -#include "source_pw/module_pwdft/global.h" -#include "source_lcao/hamilt_lcao.h" - +#include "source_lcao/module_dftu/dftu.h" // mohan add 20251107 namespace sparse_format { void cal_HR_dftu( + Plus_U &dftu, // mohan add 2025-11-07 const Parallel_Orbitals &pv, std::set> &all_R_coor, std::map, std::map>> &SR_sparse, @@ -19,6 +19,7 @@ namespace sparse_format const double &sparse_thr); void cal_HR_dftu_soc( + Plus_U &dftu, // mohan add 2025-11-07 const Parallel_Orbitals &pv, std::set> &all_R_coor, std::map, std::map>>> &SR_soc_sparse, diff --git a/source/source_lcao/test/CMakeLists.txt b/source/source_lcao/test/CMakeLists.txt new file mode 100644 index 0000000000..2afd797400 --- /dev/null +++ b/source/source_lcao/test/CMakeLists.txt @@ -0,0 +1,28 @@ +remove_definitions(-D__MLALGO) +remove_definitions(-D__CUDA) +remove_definitions(-D__ROCM) + +if(ENABLE_LCAO) +AddTest( + TARGET MODULE_LCAO_init_dm_from_file_test + LIBS parameter ${math_libs} base device + SOURCES test_init_dm_from_file.cpp tmp_mocks.cpp + ${ABACUS_SOURCE_DIR}/source_estate/module_dm/density_matrix.cpp + ${ABACUS_SOURCE_DIR}/source_estate/module_dm/density_matrix_io.cpp + ${ABACUS_SOURCE_DIR}/source_lcao/module_hcontainer/base_matrix.cpp + ${ABACUS_SOURCE_DIR}/source_lcao/module_hcontainer/hcontainer.cpp + ${ABACUS_SOURCE_DIR}/source_lcao/module_hcontainer/atom_pair.cpp + ${ABACUS_SOURCE_DIR}/source_lcao/module_hcontainer/read_hcontainer.cpp + ${ABACUS_SOURCE_DIR}/source_lcao/module_hcontainer/func_transfer.cpp + ${ABACUS_SOURCE_DIR}/source_lcao/module_hcontainer/func_folding.cpp + ${ABACUS_SOURCE_DIR}/source_lcao/module_hcontainer/transfer.cpp + ${ABACUS_SOURCE_DIR}/source_basis/module_ao/parallel_orbitals.cpp + ${ABACUS_SOURCE_DIR}/source_io/module_output/sparse_matrix.cpp + ${ABACUS_SOURCE_DIR}/source_io/module_output/csr_reader.cpp + ${ABACUS_SOURCE_DIR}/source_io/module_output/file_reader.cpp + ${ABACUS_SOURCE_DIR}/source_io/module_output/output.cpp + ${ABACUS_SOURCE_DIR}/source_io/module_dm/write_dmr.cpp + ${ABACUS_SOURCE_DIR}/source_io/module_output/ucell_io.cpp + ${ABACUS_SOURCE_DIR}/source_lcao/module_hcontainer/output_hcontainer.cpp +) +endif() diff --git a/source/source_lcao/test/test_init_dm_from_file.cpp b/source/source_lcao/test/test_init_dm_from_file.cpp new file mode 100644 index 0000000000..31079f2885 --- /dev/null +++ b/source/source_lcao/test/test_init_dm_from_file.cpp @@ -0,0 +1,360 @@ +#include +#include +#include +#include + +#include "gmock/gmock.h" +#include "gtest/gtest.h" +#define private public +#include "source_estate/module_dm/density_matrix.h" +#include "source_lcao/module_hcontainer/hcontainer.h" +#include "source_lcao/module_hcontainer/read_hcontainer.h" +#include "source_lcao/setup_dm.h" +#include "source_cell/klist.h" +#undef private +#include "source_io/module_dm/write_dmr.h" + +/************************************************ + * unit test of init_dm_from_file (nspin=1 & nspin=2) + * + * Uses write_dmr_csr to generate CSR files in the + * current format, then reads them back via Read_HContainer + * to verify the round-trip. + ***********************************************/ + +// Small test system: 2 atoms, 4 orbitals each => nlocal=8 +int test_size = 2; +int test_nw = 4; + +class InitDMFileTest : public testing::Test +{ + protected: + Parallel_Orbitals* paraV; + UnitCell ucell; + int nlocal; + + void SetUp() override + { + nlocal = test_size * test_nw; + + // set up a unitcell + ucell.ntype = 1; + ucell.nat = test_size; + ucell.atoms = new Atom[ucell.ntype]; + ucell.iat2it = new int[ucell.nat]; + ucell.iat2ia = new int[ucell.nat]; + ucell.atoms[0].tau.resize(ucell.nat); + ucell.atoms[0].taud.resize(ucell.nat); + ucell.itia2iat.create(ucell.ntype, ucell.nat); + for (int iat = 0; iat < ucell.nat; iat++) + { + ucell.iat2it[iat] = 0; + ucell.iat2ia[iat] = iat; + ucell.atoms[0].tau[iat] = ModuleBase::Vector3(0.0, 0.0, 0.0); + ucell.atoms[0].taud[iat] = ModuleBase::Vector3(0.0, 0.0, 0.0); + ucell.itia2iat(0, iat) = iat; + } + ucell.atoms[0].na = test_size; + ucell.atoms[0].nw = test_nw; + ucell.atoms[0].iw2l.resize(test_nw, 0); + ucell.atoms[0].iw2m.resize(test_nw, 0); + ucell.atoms[0].iw2n.resize(test_nw, 0); + ucell.atoms[0].label = "Si"; + ucell.latName = "fcc"; + ucell.lat0 = 10.0; + ucell.latvec.e11 = 1.0; ucell.latvec.e12 = 0.0; ucell.latvec.e13 = 0.0; + ucell.latvec.e21 = 0.0; ucell.latvec.e22 = 1.0; ucell.latvec.e23 = 0.0; + ucell.latvec.e31 = 0.0; ucell.latvec.e32 = 0.0; ucell.latvec.e33 = 1.0; + ucell.set_iat2iwt(1); + + // set up parallel orbitals (serial mode) + paraV = new Parallel_Orbitals(); + paraV->set_serial(nlocal, nlocal); + paraV->set_atomic_trace(ucell.get_iat2iwt(), ucell.nat, nlocal); + } + + void TearDown() override + { + delete paraV; + delete[] ucell.atoms; + } + + /// Build an HContainer with diagonal values at R=(0,0,0) and write it via write_dmr_csr + void write_test_csr(const std::string& filename, double scale, int ispin, int nspin) + { + hamilt::HContainer hc(paraV); + for (int i = 0; i < ucell.nat; i++) + { + for (int j = 0; j < ucell.nat; j++) + { + hamilt::AtomPair ap(i, j, 0, 0, 0, paraV); + hc.insert_pair(ap); + } + } + hc.allocate(nullptr, true); + + // Fill diagonal elements with scale-dependent values + for (int i = 0; i < ucell.nat; i++) + { + auto* ap = hc.find_pair(i, i); + if (ap) + { + int nw = ucell.atoms[0].nw; + for (int k = 0; k < nw; k++) + { + ap->get_pointer()[k * nw + k] = scale * (k + 1) * 0.1; + } + } + } + + std::string fname = filename; + ModuleIO::write_dmr_csr(fname, &ucell, 8, &hc, 0, ispin, nspin); + } + + /// Create DensityMatrix with given nspin and initialize DMR from an HContainer template + elecstate::DensityMatrix* create_dm(int nspin) + { + K_Vectors kv; + int nks = (nspin == 2) ? 2 : 1; + kv.set_nks(nks * (nspin == 2 ? 2 : 1)); + kv.kvec_d.resize(kv.get_nks()); + + int nspin_dm = (nspin == 2) ? 2 : 1; + auto* dm = new elecstate::DensityMatrix( + paraV, nspin_dm, kv.kvec_d, kv.get_nks() / nspin_dm); + + // Create a template HContainer and init DMR from it + hamilt::HContainer tmp_HR(paraV); + for (int i = 0; i < ucell.nat; i++) + { + for (int j = 0; j < ucell.nat; j++) + { + hamilt::AtomPair ap(i, j, 0, 0, 0, paraV); + tmp_HR.insert_pair(ap); + } + } + tmp_HR.allocate(nullptr, true); + dm->init_DMR(tmp_HR); + return dm; + } +}; + +TEST_F(InitDMFileTest, Nspin1_ReadSingleFile) +{ + mkdir("./test_dm_dir", 0755); + write_test_csr("./test_dm_dir/dmrs1_nao.csr", 1.0, 0, 1); + + auto* dm = create_dm(1); + ASSERT_EQ(dm->_DMR.size(), 1); + + hamilt::HContainer* dmr0 = dm->get_DMR_vector()[0]; + hamilt::Read_HContainer reader(dmr0, "./test_dm_dir/dmrs1_nao.csr", nlocal, &ucell); + reader.read(); + + EXPECT_GT(dmr0->size_atom_pairs(), 0); + + // Check diagonal element (0,0) at R=(0,0,0) is non-zero + auto* ap = dmr0->find_pair(0, 0); + ASSERT_NE(ap, nullptr); + bool has_nonzero = false; + for (int i = 0; i < ap->get_size(); i++) + { + if (std::abs(ap->get_pointer()[i]) > 1e-15) + { + has_nonzero = true; + break; + } + } + EXPECT_TRUE(has_nonzero); + + delete dm; +} + +TEST_F(InitDMFileTest, Nspin2_ReadTwoFiles) +{ + mkdir("./test_dm_dir", 0755); + write_test_csr("./test_dm_dir/dmrs1_nao.csr", 1.0, 0, 2); // spin-up + write_test_csr("./test_dm_dir/dmrs2_nao.csr", 0.5, 1, 2); // spin-down + + auto* dm = create_dm(2); + ASSERT_EQ(dm->_DMR.size(), 2); + + // Read spin-up + hamilt::HContainer* dmr0 = dm->get_DMR_vector()[0]; + hamilt::Read_HContainer reader0(dmr0, "./test_dm_dir/dmrs1_nao.csr", nlocal, &ucell); + reader0.read(); + + // Read spin-down + hamilt::HContainer* dmr1 = dm->get_DMR_vector()[1]; + hamilt::Read_HContainer reader1(dmr1, "./test_dm_dir/dmrs2_nao.csr", nlocal, &ucell); + reader1.read(); + + EXPECT_GT(dmr0->size_atom_pairs(), 0); + EXPECT_GT(dmr1->size_atom_pairs(), 0); + + // Verify spin-up and spin-down have different values (scale 1.0 vs 0.5) + auto* ap0 = dmr0->find_pair(0, 0); + auto* ap1 = dmr1->find_pair(0, 0); + ASSERT_NE(ap0, nullptr); + ASSERT_NE(ap1, nullptr); + + bool values_differ = false; + int check_size = std::min(ap0->get_size(), ap1->get_size()); + for (int i = 0; i < check_size; i++) + { + double v0 = ap0->get_pointer()[i]; + double v1 = ap1->get_pointer()[i]; + if (std::abs(v0) > 1e-15 && std::abs(v0 - v1) > 1e-15) + { + values_differ = true; + EXPECT_NEAR(v1 / v0, 0.5, 1e-6); + break; + } + } + EXPECT_TRUE(values_differ); + + delete dm; +} + +TEST_F(InitDMFileTest, Nspin2_DMRVectorSize) +{ + auto* dm = create_dm(2); + EXPECT_EQ(dm->_DMR.size(), 2); + EXPECT_NE(dm->_DMR[0], nullptr); + EXPECT_NE(dm->_DMR[1], nullptr); + delete dm; +} + +TEST_F(InitDMFileTest, Nspin1_DMRVectorSize) +{ + auto* dm = create_dm(1); + EXPECT_EQ(dm->_DMR.size(), 1); + EXPECT_NE(dm->_DMR[0], nullptr); + delete dm; +} + +/************************************************ + * unit test of init_hr_from_file (init_chg=hr) + * + * Tests HR CSR file round-trip via Read_HContainer, + * and nspin=2 dual-buffer read into two halves of + * a single HContainer (same logic as init_chg_hr). + ***********************************************/ + +TEST_F(InitDMFileTest, HR_Nspin1_ReadSingleFile) +{ + // Write an HR CSR file (same format as DM CSR) + mkdir("./test_hr_dir", 0755); + write_test_csr("./test_hr_dir/hrs1_nao.csr", 2.0, 0, 1); + + // Create an HContainer to read into + hamilt::HContainer hR(paraV); + for (int i = 0; i < ucell.nat; i++) + { + for (int j = 0; j < ucell.nat; j++) + { + hamilt::AtomPair ap(i, j, 0, 0, 0, paraV); + hR.insert_pair(ap); + } + } + hR.allocate(nullptr, true); + + // Read HR from file (same as init_hr_from_file does internally) + hR.set_zero(); + hamilt::Read_HContainer reader(&hR, "./test_hr_dir/hrs1_nao.csr", nlocal, &ucell); + reader.read(); + + // Verify data was loaded + EXPECT_GT(hR.size_atom_pairs(), 0); + auto* ap = hR.find_pair(0, 0); + ASSERT_NE(ap, nullptr); + + // Check diagonal has expected values (scale=2.0, value = 2.0*(k+1)*0.1) + int nw = ucell.atoms[0].nw; + for (int k = 0; k < nw; k++) + { + double expected = 2.0 * (k + 1) * 0.1; + EXPECT_NEAR(ap->get_pointer()[k * nw + k], expected, 1e-6); + } +} + +TEST_F(InitDMFileTest, HR_Nspin2_ReadTwoFiles) +{ + // Write two HR CSR files with different scale factors + mkdir("./test_hr_dir", 0755); + write_test_csr("./test_hr_dir/hrs1_nao.csr", 1.0, 0, 2); // spin-up + write_test_csr("./test_hr_dir/hrs2_nao.csr", 3.0, 1, 2); // spin-down + + // Create two independent HContainers for spin-up and spin-down + // (mirrors init_chg_hr reading two separate HR files) + auto create_hcontainer = [&]() { + hamilt::HContainer* hR = new hamilt::HContainer(paraV); + for (int i = 0; i < ucell.nat; i++) + { + for (int j = 0; j < ucell.nat; j++) + { + hamilt::AtomPair ap(i, j, 0, 0, 0, paraV); + hR->insert_pair(ap); + } + } + hR->allocate(nullptr, true); + return hR; + }; + + // Read spin-up + auto* hR_up = create_hcontainer(); + hR_up->set_zero(); + hamilt::Read_HContainer reader_up(hR_up, "./test_hr_dir/hrs1_nao.csr", nlocal, &ucell); + reader_up.read(); + + // Read spin-down + auto* hR_down = create_hcontainer(); + hR_down->set_zero(); + hamilt::Read_HContainer reader_down(hR_down, "./test_hr_dir/hrs2_nao.csr", nlocal, &ucell); + reader_down.read(); + + // Verify both have data + EXPECT_GT(hR_up->size_atom_pairs(), 0); + EXPECT_GT(hR_down->size_atom_pairs(), 0); + + // Verify spin-up values (scale=1.0) + auto* ap_up = hR_up->find_pair(0, 0); + ASSERT_NE(ap_up, nullptr); + int nw = ucell.atoms[0].nw; + for (int k = 0; k < nw; k++) + { + double expected_up = 1.0 * (k + 1) * 0.1; + EXPECT_NEAR(ap_up->get_pointer()[k * nw + k], expected_up, 1e-6); + } + + // Verify spin-down values (scale=3.0) + auto* ap_down = hR_down->find_pair(0, 0); + ASSERT_NE(ap_down, nullptr); + for (int k = 0; k < nw; k++) + { + double expected_down = 3.0 * (k + 1) * 0.1; + EXPECT_NEAR(ap_down->get_pointer()[k * nw + k], expected_down, 1e-6); + } + + // Verify the two are independent (different values) + double val_up = ap_up->get_pointer()[0]; + double val_down = ap_down->get_pointer()[0]; + EXPECT_GT(std::abs(val_up), 1e-15); + EXPECT_NEAR(val_down / val_up, 3.0, 1e-6); + + delete hR_up; + delete hR_down; +} + +int main(int argc, char** argv) +{ +#ifdef __MPI + MPI_Init(&argc, &argv); +#endif + testing::InitGoogleTest(&argc, argv); + int result = RUN_ALL_TESTS(); +#ifdef __MPI + MPI_Finalize(); +#endif + return result; +} diff --git a/source/source_lcao/test/tmp_mocks.cpp b/source/source_lcao/test/tmp_mocks.cpp new file mode 100644 index 0000000000..515d80538b --- /dev/null +++ b/source/source_lcao/test/tmp_mocks.cpp @@ -0,0 +1,58 @@ + +#include "source_cell/unitcell.h" +#include "source_cell/module_neighbor/sltk_grid_driver.h" + +// constructor of Atom +Atom::Atom() {} +Atom::~Atom() {} + +Atom_pseudo::Atom_pseudo() {} +Atom_pseudo::~Atom_pseudo() {} + +Magnetism::Magnetism() {} +Magnetism::~Magnetism() {} + +#ifdef __LCAO +InfoNonlocal::InfoNonlocal() {} +InfoNonlocal::~InfoNonlocal() {} +LCAO_Orbitals::LCAO_Orbitals() {} +LCAO_Orbitals::~LCAO_Orbitals() {} +#endif + +pseudo::pseudo() {} +pseudo::~pseudo() {} +SepPot::SepPot(){} +SepPot::~SepPot(){} +Sep_Cell::Sep_Cell() noexcept {} +Sep_Cell::~Sep_Cell() noexcept {} + +// constructor of UnitCell +UnitCell::UnitCell() {} +UnitCell::~UnitCell() {} + +void UnitCell::set_iat2iwt(const int& npol_in) +{ + this->iat2iwt.resize(this->nat); + this->npol = npol_in; + int iat = 0; + int iwt = 0; + for (int it = 0; it < this->ntype; it++) + { + for (int ia = 0; ia < atoms[it].na; ia++) + { + this->iat2iwt[iat] = iwt; + iwt += atoms[it].nw * this->npol; + ++iat; + } + } + return; +} + +// stub for Grid_Driver::Find_atom (used by density_matrix_io.cpp but not exercised in test) +void Grid_Driver::Find_atom(const UnitCell& ucell, + const ModuleBase::Vector3& tau, + const int& T, + const int& I, + AdjacentAtomInfo* adjs) const +{ +} diff --git a/source/source_lcao/wavefunc_in_pw.cpp b/source/source_lcao/wavefunc_in_pw.cpp index 064a93c0d0..3bc3711e14 100644 --- a/source/source_lcao/wavefunc_in_pw.cpp +++ b/source/source_lcao/wavefunc_in_pw.cpp @@ -1,7 +1,6 @@ +#include // Peize Lin fix bug about strcmp 2016-08-02 #include "wavefunc_in_pw.h" -#include "source_pw/module_pwdft/global.h" #include "source_io/module_parameter/parameter.h" -#include // Peize Lin fix bug about strcmp 2016-08-02 #include "source_base/math_integral.h" #include "source_base/math_sphbes.h" #include "source_base/math_polyint.h" @@ -126,7 +125,7 @@ void Wavefunc_in_pw::make_table_q( } else { - double no_use; + double no_use = 0.0; for(int ir=0; ir> no_use; @@ -328,7 +327,7 @@ void Wavefunc_in_pw::produce_local_basis_in_pw(const UnitCell& ucell, }//if else {//atomic_wfc_so_mag - double alpha, gamma; + double alpha = 0.0, gamma = 0.0; std::complex fup,fdown; //int nc; //This routine creates two functions only in the case j=l+1/2 or exit in the other case @@ -403,8 +402,8 @@ void Wavefunc_in_pw::produce_local_basis_in_pw(const UnitCell& ucell, } // end if ucell.atoms[it].has_so else {//atomic_wfc_nc - double alpha, gamman; - std::complex fup, fdown; + double alpha = 0.0, gamman = 0.0; + std::complex fup = 0.0, fdown = 0.0; //alpha = ucell.magnet.angle1_[it]; //gamman = -ucell.magnet.angle2_[it] + 0.5*ModuleBase::PI; alpha = ucell.atoms[it].angle1[ia]; diff --git a/source/source_main/driver.cpp b/source/source_main/driver.cpp index 024983123e..f2b08dcf67 100644 --- a/source/source_main/driver.cpp +++ b/source/source_main/driver.cpp @@ -4,15 +4,15 @@ #include "source_base/memory.h" #include "source_base/timer.h" #include "source_esolver/esolver.h" -#include "source_pw/module_pwdft/global.h" -#include "source_io/cal_test.h" -#include "source_io/input_conv.h" -#include "source_io/para_json.h" -#include "source_io/print_info.h" -#include "source_io/read_input.h" -#include "source_io/winput.h" +#include "source_io/module_output/cal_test.h" +#include "source_io/module_parameter/input_conv.h" +#include "source_io/module_json/para_json.h" +#include "source_io/module_output/print_info.h" +#include "source_io/module_parameter/read_input.h" #include "source_io/module_parameter/parameter.h" #include "source_main/version.h" +#include "source_base/parallel_global.h" + Driver::Driver() { } @@ -116,17 +116,17 @@ void Driver::reading() GlobalV::NPROC = PARAM.globalv.nproc; // (1) read the input file - ModuleIO::ReadInput read_input(PARAM.globalv.myrank); - read_input.read_parameters(PARAM, PARAM.globalv.global_in_card); + ModuleIO::ReadInput input(PARAM.globalv.myrank); + input.read_parameters(PARAM, PARAM.globalv.global_in_card); // (2) create the output directory, running_*.log and print info - read_input.create_directory(PARAM); + input.create_directory(PARAM); this->print_start_info(); // (3) write the input file std::stringstream ss1; - ss1 << PARAM.globalv.global_out_dir << PARAM.globalv.global_in_card; - read_input.write_parameters(PARAM, ss1.str()); + ss1 << PARAM.globalv.global_out_dir << PARAM.globalv.global_in_card << ".info"; + input.write_parameters(PARAM, ss1.str()); // (*temp*) copy the variables from INPUT to each class Input_Conv::Convert(); @@ -163,10 +163,6 @@ void Driver::reading() GlobalV::RANK_IN_POOL, GlobalV::MY_POOL); #endif - - // (6) Read in parameters about wannier functions. - winput::Init(PARAM.inp.wannier_card); - ModuleBase::timer::tick("Driver", "reading"); } diff --git a/source/source_main/driver.h b/source/source_main/driver.h index d0ef395875..9bdcf1d285 100644 --- a/source/source_main/driver.h +++ b/source/source_main/driver.h @@ -37,6 +37,10 @@ class Driver // the actual calculations void driver_run(); + + // Init harewares according to Input parameters + void init_hardware(); + void finalize_hardware(); }; #endif diff --git a/source/source_main/driver_run.cpp b/source/source_main/driver_run.cpp index 47d21e394c..dcdc09d217 100644 --- a/source/source_main/driver_run.cpp +++ b/source/source_main/driver_run.cpp @@ -1,12 +1,23 @@ #include "source_main/driver.h" #include "source_cell/check_atomic_stru.h" #include "source_cell/module_neighbor/sltk_atom_arrange.h" -#include "source_pw/module_pwdft/global.h" +#include "source_relax/relax_driver.h" #include "source_io/module_parameter/parameter.h" -#include "source_io/para_json.h" -#include "source_io/print_info.h" -#include "source_io/winput.h" +#include "source_io/module_json/para_json.h" +#include "source_io/module_output/print_info.h" #include "source_md/run_md.h" +#include "source_base/global_variable.h" +#include "source_base/module_device/device.h" +#include "source_base/module_device/memory_op.h" +#include "source_base/kernels/math_kernel_op.h" +#include "source_hsolver/kernels/hegvd_op.h" + +#include +#include + +#ifdef __DSP +#include "source_base/kernels/dsp/dsp_connector.h" +#endif /** * @brief This is the driver function which defines the workflow of ABACUS @@ -31,7 +42,6 @@ void Driver::driver_run() // this warning should not be here, mohan 2024-05-22 #ifndef __LCAO if (PARAM.inp.basis_type == "lcao_in_pw" || PARAM.inp.basis_type == "lcao") { - ModuleBase::timer::tick("Driver","driver_run"); ModuleBase::WARNING_QUIT("driver", "to use LCAO basis, compile with __LCAO"); } @@ -49,6 +59,8 @@ void Driver::driver_run() unitcell::check_atomic_stru(ucell, PARAM.inp.min_dist_coef); //! 2: initialize the ESolver (depends on a set-up ucell after `setup_cell`) + this->init_hardware(); + ModuleESolver::ESolver* p_esolver = ModuleESolver::init_esolver(PARAM.inp, ucell); //! 3: initialize Esolver and fill json-structure @@ -75,14 +87,9 @@ void Driver::driver_run() { p_esolver->runner(ucell, 0); } - else if (cal == "get_pchg" || cal == "get_wf" || cal == "gen_bessel" || cal == "gen_opt_abfs" || + else if (cal == "get_pchg" || cal == "get_wf" || cal == "gen_bessel" || cal == "gen_opt_abfs" || cal == "test_memory" || cal == "test_neighbour") { - //! supported "other" functions: - //! get_pchg(LCAO), - //! test_memory(PW,LCAO), - //! test_neighbour(LCAO), - //! gen_bessel(PW), et al. const int istep = 0; p_esolver->others(ucell, istep); } @@ -94,10 +101,55 @@ void Driver::driver_run() //! 5: clean up esolver p_esolver->after_all_runners(ucell); - ModuleESolver::clean_esolver(p_esolver); + delete p_esolver; + + this->finalize_hardware(); //! 6: output the json file Json::create_Json(&ucell, PARAM); return; } + +void Driver::init_hardware() +{ +#if ((defined __CUDA) || (defined __ROCM)) + if (PARAM.inp.device == "gpu") + { + ModuleBase::createGpuBlasHandle(); + hsolver::createGpuSolverHandle(); + container::kernels::createGpuBlasHandle(); + container::kernels::createGpuSolverHandle(); + } +#endif + +#ifdef __DSP + if (GlobalV::NPROC > PARAM.inp.kpar) + { + ModuleBase::WARNING_QUIT( + "Driver::init_hardware", + "Number of processors must be equal to KPAR for DSP hardware initialization." + ); + } + std::cout << " ** Initializing DSP Hardware..." << std::endl; + mtfunc::dspInitHandle(GlobalV::MY_RANK % PARAM.inp.dsp_count); +#endif +} + +void Driver::finalize_hardware() +{ +#if defined(__CUDA) || defined(__ROCM) + if (PARAM.inp.device == "gpu") + { + ModuleBase::destoryBLAShandle(); + hsolver::destroyGpuSolverHandle(); + container::kernels::destroyGpuBlasHandle(); + container::kernels::destroyGpuSolverHandle(); + } +#endif + +#ifdef __DSP + std::cout << " ** Closing DSP Hardware..." << std::endl; + mtfunc::dspDestoryHandle(GlobalV::MY_RANK); +#endif +} diff --git a/source/source_main/version.h b/source/source_main/version.h index f81442e9c4..c9bd1d70c5 100644 --- a/source/source_main/version.h +++ b/source/source_main/version.h @@ -1,3 +1,3 @@ #ifndef VERSION -#define VERSION "v3.9.0.11" +#define VERSION "v3.9.0.25" #endif diff --git a/source/source_md/fire.cpp b/source/source_md/fire.cpp index 4a58d004b2..9c0cfd6472 100644 --- a/source/source_md/fire.cpp +++ b/source/source_md/fire.cpp @@ -90,7 +90,7 @@ void FIRE::write_restart(const std::string& global_out_dir) if (!my_rank) { std::stringstream ssc; - ssc << global_out_dir << "Restart_md.dat"; + ssc << global_out_dir << "Restart_md.txt"; std::ofstream file(ssc.str().c_str()); file << step_ + step_rst_ << std::endl; @@ -116,7 +116,7 @@ void FIRE::restart(const std::string& global_readin_dir) if (!my_rank) { std::stringstream ssc; - ssc << global_readin_dir << "Restart_md.dat"; + ssc << global_readin_dir << "Restart_md.txt"; std::ifstream file(ssc.str().c_str()); if (!file) @@ -137,7 +137,7 @@ void FIRE::restart(const std::string& global_readin_dir) if (!ok) { - ModuleBase::WARNING_QUIT("mdrun", "no Restart_md.dat !"); + ModuleBase::WARNING_QUIT("mdrun", "no Restart_md.txt !"); } #ifdef __MPI diff --git a/source/source_md/md_base.cpp b/source/source_md/md_base.cpp index 659dea7fe2..390e1c2b08 100644 --- a/source/source_md/md_base.cpp +++ b/source/source_md/md_base.cpp @@ -3,7 +3,7 @@ #ifdef __MPI #include "mpi.h" #endif -#include "source_io/print_info.h" +#include "source_io/module_output/print_info.h" #include "source_cell/update_cell.h" MD_base::MD_base(const Parameter& param_in, UnitCell& unit_in) : mdp(param_in.mdp), ucell(unit_in) @@ -60,7 +60,12 @@ void MD_base::setup(ModuleESolver::ESolver* p_esolver, const std::string& global restart(global_readin_dir); } - ModuleIO::print_screen(0, 0, step_ + step_rst_); + // mohan add 2026-01-04 + const int stress_step = 0; + const int force_step = 0; + const int istep_print = step_ + step_rst_ + 1; + + ModuleIO::print_screen(stress_step, force_step, istep_print); MD_func::force_virial(p_esolver, step_, ucell, potential, force, cal_stress, virial); MD_func::compute_stress(ucell, vel, allmass, cal_stress, virial, stress); @@ -228,7 +233,7 @@ void MD_base::write_restart(const std::string& global_out_dir) if (!my_rank) { std::stringstream ssc; - ssc << global_out_dir << "Restart_md.dat"; + ssc << global_out_dir << "Restart_md.txt"; std::ofstream file(ssc.str().c_str()); file << step_ + step_rst_ << std::endl; diff --git a/source/source_md/md_func.cpp b/source/source_md/md_func.cpp index d3cb2f6aa0..df76de36f5 100644 --- a/source/source_md/md_func.cpp +++ b/source/source_md/md_func.cpp @@ -195,18 +195,18 @@ void init_vel(const UnitCell& unit_in, ModuleBase::Vector3 frozen; get_mass_mbl(unit_in, allmass, frozen, ionmbl); frozen_freedom = frozen.x + frozen.y + frozen.z; - if (frozen.x == 0) - { - ++frozen_freedom; - } - if (frozen.y == 0) - { - ++frozen_freedom; - } - if (frozen.z == 0) - { - ++frozen_freedom; - } + if (frozen.x == 0) + { + ++frozen_freedom; + } + if (frozen.y == 0) + { + ++frozen_freedom; + } + if (frozen.z == 0) + { + ++frozen_freedom; + } if (unit_in.init_vel) { @@ -496,7 +496,7 @@ void current_md_info(const int& my_rank, const std::string& file_dir, int& md_st if (my_rank == 0) { std::stringstream ssc; - ssc << file_dir << "Restart_md.dat"; + ssc << file_dir << "Restart_md.txt"; std::ifstream file(ssc.str().c_str()); if (!file) @@ -517,7 +517,7 @@ void current_md_info(const int& my_rank, const std::string& file_dir, int& md_st if (!ok) { - ModuleBase::WARNING_QUIT("current_md_info", "no Restart_md.dat!"); + ModuleBase::WARNING_QUIT("current_md_info", "no Restart_md.txt!"); } #ifdef __MPI diff --git a/source/source_md/md_func.h b/source/source_md/md_func.h index 4fdd50bd0f..28ae5101b9 100644 --- a/source/source_md/md_func.h +++ b/source/source_md/md_func.h @@ -219,7 +219,7 @@ void temp_vector(const int& natom, /** * @brief determine thr current md step and temperature * - * determine thr current md step and temperature according to Restart_md.dat if md_restart is true + * determine the current md step and temperature according to Restart_md.txt if md_restart is true * * @param my_rank MPI rank of the processor * @param file_dir the directory of read-in files diff --git a/source/source_md/msst.cpp b/source/source_md/msst.cpp index 51a6c5eafd..cadea1a8f1 100644 --- a/source/source_md/msst.cpp +++ b/source/source_md/msst.cpp @@ -83,7 +83,7 @@ void MSST::first_half(std::ofstream& ofs) const int sd = mdp.msst_direction; const double dthalf = 0.5 * md_dt; - double vol; + double vol = 0.0; energy_ = potential + kinetic; /// propagate the time derivative of volume 1/2 step @@ -171,7 +171,7 @@ void MSST::write_restart(const std::string& global_out_dir) if (!my_rank) { std::stringstream ssc; - ssc << global_out_dir << "Restart_md.dat"; + ssc << global_out_dir << "Restart_md.txt"; std::ofstream file(ssc.str().c_str()); file << step_ + step_rst_ << std::endl; @@ -199,7 +199,7 @@ void MSST::restart(const std::string& global_readin_dir) if (!my_rank) { std::stringstream ssc; - ssc << global_readin_dir << "Restart_md.dat"; + ssc << global_readin_dir << "Restart_md.txt"; std::ifstream file(ssc.str().c_str()); if (!file) @@ -220,7 +220,7 @@ void MSST::restart(const std::string& global_readin_dir) if (!ok) { - ModuleBase::WARNING_QUIT("mdrun", "no Restart_md.dat !"); + ModuleBase::WARNING_QUIT("mdrun", "no Restart_md.txt !"); } #ifdef __MPI diff --git a/source/source_md/nhchain.cpp b/source/source_md/nhchain.cpp index 460becf56c..ac1e23570c 100644 --- a/source/source_md/nhchain.cpp +++ b/source/source_md/nhchain.cpp @@ -326,7 +326,7 @@ void Nose_Hoover::write_restart(const std::string& global_out_dir) if (!my_rank) { std::stringstream ssc; - ssc << global_out_dir << "Restart_md.dat"; + ssc << global_out_dir << "Restart_md.txt"; std::ofstream file(ssc.str().c_str()); file << step_ + step_rst_ << std::endl; @@ -380,7 +380,7 @@ void Nose_Hoover::restart(const std::string& global_readin_dir) if (!my_rank) { std::stringstream ssc; - ssc << global_readin_dir << "Restart_md.dat"; + ssc << global_readin_dir << "Restart_md.txt"; std::ifstream file(ssc.str().c_str()); if (!file) @@ -390,7 +390,7 @@ void Nose_Hoover::restart(const std::string& global_readin_dir) if (ok) { - double Mnum; + double Mnum = 0.0; file >> step_rst_ >> md_tfirst >> Mnum; if (Mnum != mdp.md_tchain) @@ -449,7 +449,7 @@ void Nose_Hoover::restart(const std::string& global_readin_dir) if (!ok) { - ModuleBase::WARNING_QUIT("Nose_Hoover", "no Restart_md.dat !"); + ModuleBase::WARNING_QUIT("Nose_Hoover", "no Restart_md.txt !"); } if (!ok2) { @@ -494,7 +494,7 @@ void Nose_Hoover::particle_thermo() } /// integrate loop - double factor; + double factor = 0.0; double scale = 1.0; double KE = kinetic; for (int i = 0; i < nc_tchain; ++i) @@ -583,7 +583,7 @@ void Nose_Hoover::baro_thermo() g_peta[0] = (ke_omega - lkt_press) / mass_peta[0]; /// integrate loop - double factor; + double factor = 0.0; double scale = 1.0; double kecurrent = ke_omega; for (int i = 0; i < nc_pchain; ++i) @@ -662,7 +662,7 @@ void Nose_Hoover::update_baro() } term_one /= pdim * ucell.nat; - double g_omega; + double g_omega = 0.0; double term_two = 0; for (int i = 0; i < 3; ++i) { @@ -689,7 +689,7 @@ void Nose_Hoover::update_baro() void Nose_Hoover::vel_baro() { - double factor[3]; + double factor[3] = {0.0}; for (int i = 0; i < 3; ++i) { factor[i] = exp(-(v_omega[i] + mtk_term) * md_dt / 4); @@ -721,7 +721,7 @@ void Nose_Hoover::vel_baro() void Nose_Hoover::update_volume(std::ofstream& ofs) { - double factor; + double factor = 0.0; /// tri mode, off-diagonal components, first half if (pflag[4]) diff --git a/source/source_md/run_md.cpp b/source/source_md/run_md.cpp index a24eeb3ae4..3a5ffe9f19 100644 --- a/source/source_md/run_md.cpp +++ b/source/source_md/run_md.cpp @@ -6,7 +6,7 @@ #include "md_func.h" #include "source_base/global_file.h" #include "source_base/timer.h" -#include "source_io/print_info.h" +#include "source_io/module_output/print_info.h" #include "msst.h" #include "nhchain.h" #include "verlet.h" @@ -21,7 +21,7 @@ void md_line(UnitCell& unit_in, ModuleESolver::ESolver* p_esolver, const Paramet ModuleBase::timer::tick("Run_MD", "md_line"); /// determine the md_type - MD_base* mdrun; + MD_base* mdrun = nullptr; if (param_in.mdp.md_type == "fire") { mdrun = new FIRE(param_in, unit_in); @@ -47,8 +47,8 @@ void md_line(UnitCell& unit_in, ModuleESolver::ESolver* p_esolver, const Paramet ModuleBase::WARNING_QUIT("md_line", "no such md_type!"); } - /// md cycle - while ((mdrun->step_ + mdrun->step_rst_) <= param_in.mdp.md_nstep && !mdrun->stop) + /// md cycle, mohan update 2026-01-04, change '<=' to '<' + while ((mdrun->step_ + mdrun->step_rst_) < param_in.mdp.md_nstep && !mdrun->stop) { if (mdrun->step_ == 0) { @@ -56,7 +56,11 @@ void md_line(UnitCell& unit_in, ModuleESolver::ESolver* p_esolver, const Paramet } else { - ModuleIO::print_screen(0, 0, mdrun->step_ + mdrun->step_rst_); + // mohan add 2026-01-04 + const int stress_step = 0; + const int force_step = 0; + const int istep_print = mdrun->step_ + mdrun->step_rst_ + 1; + ModuleIO::print_screen(stress_step, force_step, istep_print); mdrun->first_half(GlobalV::ofs_running); /// update force and virial due to the update of atom positions @@ -130,4 +134,4 @@ void md_line(UnitCell& unit_in, ModuleESolver::ESolver* p_esolver, const Paramet return; } -} // namespace Run_MD \ No newline at end of file +} // namespace Run_MD diff --git a/source/source_md/test/CMakeLists.txt b/source/source_md/test/CMakeLists.txt index dee30a6ab7..296e9a10b7 100644 --- a/source/source_md/test/CMakeLists.txt +++ b/source/source_md/test/CMakeLists.txt @@ -1,7 +1,7 @@ remove_definitions(-D__MPI -D__LCAO ) add_definitions(-D__NORMAL) -list(APPEND depend_files +list(APPEND depend_files ../md_func.cpp ../../source_cell/unitcell.cpp ../../source_cell/update_cell.cpp @@ -12,6 +12,7 @@ list(APPEND depend_files ../../source_cell/read_atom_species.cpp ../../source_cell/atom_pseudo.cpp ../../source_cell/read_atoms.cpp + ../../source_cell/read_atoms_helper.cpp ../../source_cell/pseudo.cpp ../../source_cell/read_pp.cpp ../../source_cell/read_pp_complete.cpp @@ -44,10 +45,10 @@ list(APPEND depend_files ../../source_cell/module_neighbor/sltk_atom.cpp ../../source_cell/module_neighbor/sltk_grid.cpp ../../source_cell/module_neighbor/sltk_grid_driver.cpp - ../../source_io/output.cpp - ../../source_io/output_log.cpp - ../../source_io/print_info.cpp - ../../source_io/cif_io.cpp + ../../source_io/module_output/output.cpp + ../../source_io/module_output/output_log.cpp + ../../source_io/module_output/print_info.cpp + ../../source_io/module_output/cif_io.cpp ../../source_esolver/esolver_lj.cpp ../../source_base/parallel_reduce.cpp ../../source_base/parallel_global.cpp @@ -56,25 +57,27 @@ list(APPEND depend_files ../../source_estate/cal_wfc.cpp ../../source_estate/cal_nelec_nband.cpp ../../source_estate/read_orb.cpp + ../../source_cell/sep.cpp + ../../source_cell/sep_cell.cpp ) AddTest( TARGET MODULE_MD_LJ_pot - LIBS parameter ${math_libs} psi device - SOURCES lj_pot_test.cpp + LIBS parameter ${math_libs} psi device + SOURCES lj_pot_test.cpp ${depend_files} ) AddTest( TARGET MODULE_MD_func - LIBS parameter ${math_libs} psi device - SOURCES md_func_test.cpp + LIBS parameter ${math_libs} psi device + SOURCES md_func_test.cpp ${depend_files} ) AddTest( TARGET MODULE_MD_fire - LIBS parameter ${math_libs} psi device + LIBS parameter ${math_libs} psi device SOURCES fire_test.cpp ../md_base.cpp ../fire.cpp @@ -83,7 +86,7 @@ AddTest( AddTest( TARGET MODULE_MD_verlet - LIBS parameter ${math_libs} psi device + LIBS parameter ${math_libs} psi device SOURCES verlet_test.cpp ../md_base.cpp ../verlet.cpp @@ -92,28 +95,28 @@ AddTest( AddTest( TARGET MODULE_MD_nhc - LIBS parameter ${math_libs} psi device + LIBS parameter ${math_libs} psi device SOURCES nhchain_test.cpp ../md_base.cpp ../nhchain.cpp - ../../source_io/output.cpp + ../../source_io/module_output/output.cpp ${depend_files} ) AddTest( TARGET MODULE_MD_msst - LIBS parameter ${math_libs} psi device + LIBS parameter ${math_libs} psi device SOURCES msst_test.cpp ../md_base.cpp ../msst.cpp ../../source_cell/update_cell.cpp - ../../source_io/output.cpp + ../../source_io/module_output/output.cpp ${depend_files} ) AddTest( TARGET MODULE_MD_lgv - LIBS parameter ${math_libs} psi device + LIBS parameter ${math_libs} psi device SOURCES langevin_test.cpp ../md_base.cpp ../langevin.cpp diff --git a/source/source_md/test/fire_test.cpp b/source/source_md/test/fire_test.cpp index 61528b91c0..3b294da46a 100644 --- a/source/source_md/test/fire_test.cpp +++ b/source/source_md/test/fire_test.cpp @@ -145,7 +145,7 @@ TEST_F(FIREtest, WriteRestart) mdrun->step_rst_ = 2; mdrun->write_restart(PARAM.sys.global_out_dir); - std::ifstream ifs("Restart_md.dat"); + std::ifstream ifs("Restart_md.txt"); std::string output_str; getline(ifs, output_str); EXPECT_THAT(output_str, testing::HasSubstr("3")); @@ -165,7 +165,7 @@ TEST_F(FIREtest, WriteRestart) TEST_F(FIREtest, Restart) { mdrun->restart(PARAM.sys.global_readin_dir); - remove("Restart_md.dat"); + remove("Restart_md.txt"); FIRE* fire = dynamic_cast(mdrun); EXPECT_EQ(mdrun->step_rst_, 3); diff --git a/source/source_md/test/langevin_test.cpp b/source/source_md/test/langevin_test.cpp index 7a3254454d..69df605b15 100644 --- a/source/source_md/test/langevin_test.cpp +++ b/source/source_md/test/langevin_test.cpp @@ -146,7 +146,7 @@ TEST_F(Langevin_test, write_restart) mdrun->step_rst_ = 2; mdrun->write_restart(PARAM.sys.global_out_dir); - std::ifstream ifs("Restart_md.dat"); + std::ifstream ifs("Restart_md.txt"); std::string output_str; getline(ifs, output_str); EXPECT_THAT(output_str, testing::HasSubstr("3")); @@ -156,7 +156,7 @@ TEST_F(Langevin_test, write_restart) TEST_F(Langevin_test, restart) { mdrun->restart(PARAM.sys.global_readin_dir); - remove("Restart_md.dat"); + remove("Restart_md.txt"); EXPECT_EQ(mdrun->step_rst_, 3); } diff --git a/source/source_md/test/md_func_test.cpp b/source/source_md/test/md_func_test.cpp index 8455823885..eb9ce57a5f 100644 --- a/source/source_md/test/md_func_test.cpp +++ b/source/source_md/test/md_func_test.cpp @@ -418,9 +418,9 @@ TEST_F(MD_func_test, print_stress) TEST_F(MD_func_test, current_md_info) { - // Set up the file directory and create the Restart_md.dat file + // Set up the file directory and create the Restart_md.txt file std::string file_dir = "./"; - std::ofstream file(file_dir + "Restart_md.dat"); + std::ofstream file(file_dir + "Restart_md.txt"); file << 123; file.close(); int istep = -1; @@ -430,7 +430,7 @@ TEST_F(MD_func_test, current_md_info) // Call the function with the correct file path and check the result EXPECT_EQ(istep, 123); EXPECT_DOUBLE_EQ(temperature, 0.0); - remove("Restart_md.dat"); + remove("Restart_md.txt"); } TEST_F(MD_func_test, current_step_warning) diff --git a/source/source_md/test/msst_test.cpp b/source/source_md/test/msst_test.cpp index b59652a6fd..7d0fd8054d 100644 --- a/source/source_md/test/msst_test.cpp +++ b/source/source_md/test/msst_test.cpp @@ -184,7 +184,7 @@ TEST_F(MSST_test, write_restart) mdrun->step_rst_ = 2; mdrun->write_restart(PARAM.sys.global_out_dir); - std::ifstream ifs("Restart_md.dat"); + std::ifstream ifs("Restart_md.txt"); std::string output_str; getline(ifs, output_str); EXPECT_THAT(output_str, testing::HasSubstr("3")); @@ -206,7 +206,7 @@ TEST_F(MSST_test, write_restart) TEST_F(MSST_test, restart) { mdrun->restart(PARAM.sys.global_readin_dir); - remove("Restart_md.dat"); + remove("Restart_md.txt"); MSST* msst = dynamic_cast(mdrun); EXPECT_EQ(mdrun->step_rst_, 3); diff --git a/source/source_md/test/nhchain_test.cpp b/source/source_md/test/nhchain_test.cpp index 60e9525d97..647df0a730 100644 --- a/source/source_md/test/nhchain_test.cpp +++ b/source/source_md/test/nhchain_test.cpp @@ -150,7 +150,7 @@ TEST_F(NHC_test, write_restart) mdrun->step_rst_ = 2; mdrun->write_restart(PARAM.sys.global_out_dir); - std::ifstream ifs("Restart_md.dat"); + std::ifstream ifs("Restart_md.txt"); std::string output_str; getline(ifs, output_str); EXPECT_THAT(output_str, testing::HasSubstr("3")); @@ -177,7 +177,7 @@ TEST_F(NHC_test, write_restart) TEST_F(NHC_test, restart) { mdrun->restart(PARAM.sys.global_readin_dir); - remove("Restart_md.dat"); + remove("Restart_md.txt"); Nose_Hoover* nhc = dynamic_cast(mdrun); EXPECT_EQ(mdrun->step_rst_, 3); diff --git a/source/source_md/test/setcell.h b/source/source_md/test/setcell.h index 4c633e53b9..3841b8501b 100644 --- a/source/source_md/test/setcell.h +++ b/source/source_md/test/setcell.h @@ -36,7 +36,7 @@ class Setcell ucell.atom_label[0] = "Ar"; ucell.lat0 = 1; - ucell.lat0_angstrom = ucell.lat0 * 0.529177; + ucell.lat0_angstrom = ucell.lat0 * ModuleBase::BOHR_TO_A; ucell.tpiba = ModuleBase::TWO_PI / ucell.lat0; ucell.tpiba2 = ucell.tpiba * ucell.tpiba; diff --git a/source/source_md/test/verlet_test.cpp b/source/source_md/test/verlet_test.cpp index 00013abf15..8f2c00f74f 100644 --- a/source/source_md/test/verlet_test.cpp +++ b/source/source_md/test/verlet_test.cpp @@ -287,7 +287,7 @@ TEST_F(Verlet_test, write_restart) mdrun->step_rst_ = 2; mdrun->write_restart(PARAM.sys.global_out_dir); - std::ifstream ifs("Restart_md.dat"); + std::ifstream ifs("Restart_md.txt"); std::string output_str; getline(ifs, output_str); EXPECT_THAT(output_str, testing::HasSubstr("3")); @@ -297,7 +297,7 @@ TEST_F(Verlet_test, write_restart) TEST_F(Verlet_test, restart) { mdrun->restart(PARAM.sys.global_readin_dir); - remove("Restart_md.dat"); + remove("Restart_md.txt"); EXPECT_EQ(mdrun->step_rst_, 3); } diff --git a/source/source_md/verlet.cpp b/source/source_md/verlet.cpp index 3eafb181e1..66871f8970 100644 --- a/source/source_md/verlet.cpp +++ b/source/source_md/verlet.cpp @@ -75,7 +75,7 @@ void Verlet::apply_thermostat(void) { if (my_rank == 0) { - double deviation; + double deviation = 0.0; for (int i = 0; i < ucell.nat; ++i) { if (static_cast(std::rand()) / RAND_MAX <= 1.0 / mdp.md_nraise) diff --git a/source/source_psi/CMakeLists.txt b/source/source_psi/CMakeLists.txt index a1037885f3..8be3a2ba39 100644 --- a/source/source_psi/CMakeLists.txt +++ b/source/source_psi/CMakeLists.txt @@ -7,21 +7,24 @@ add_library( add_library( psi_overall_init OBJECT - psi_init.cpp + setup_psi_pw.cpp + setup_psi.cpp + psi_prepare.cpp ) add_library( psi_initializer OBJECT psi_initializer.cpp - psi_initializer_random.cpp - psi_initializer_file.cpp - psi_initializer_atomic.cpp - psi_initializer_atomic_random.cpp - psi_initializer_nao.cpp - psi_initializer_nao_random.cpp + psi_init_random.cpp + psi_init_file.cpp + psi_init_atomic.cpp + psi_init_atomic_random.cpp + psi_init_nao.cpp + psi_init_nao_random.cpp ) + if(ENABLE_COVERAGE) add_coverage(psi) add_coverage(psi_initializer) @@ -32,4 +35,4 @@ if (BUILD_TESTING) if(ENABLE_MPI) add_subdirectory(test) endif() -endif() \ No newline at end of file +endif() diff --git a/source/source_psi/psi.cpp b/source/source_psi/psi.cpp index 9a2f9f1d79..8f64b0b8ea 100644 --- a/source/source_psi/psi.cpp +++ b/source/source_psi/psi.cpp @@ -171,7 +171,6 @@ Psi::Psi(const Psi& psi_in) this->psi_current = this->psi + psi_in.get_psi_bias(); } - // Constructor 2-2: template template @@ -301,7 +300,7 @@ const int* Psi::get_ngk_pointer() const } template -const int& Psi::get_psi_bias() const +const size_t& Psi::get_psi_bias() const { return this->psi_bias; } @@ -545,6 +544,8 @@ template Psi::Psi(const Psi::Psi(const Psi&); template Psi, base_device::DEVICE_CPU>::Psi( const Psi, base_device::DEVICE_GPU>&); +template Psi, base_device::DEVICE_CPU>::Psi( + const Psi, base_device::DEVICE_GPU>&); template Psi, base_device::DEVICE_GPU>::Psi( const Psi, base_device::DEVICE_CPU>&); template Psi, base_device::DEVICE_GPU>::Psi( diff --git a/source/source_psi/psi.h b/source/source_psi/psi.h index 17354ba2f8..1aed4f46f6 100644 --- a/source/source_psi/psi.h +++ b/source/source_psi/psi.h @@ -130,7 +130,7 @@ class Psi const Device* get_device() const; // return psi_bias - const int& get_psi_bias() const; + const size_t& get_psi_bias() const; const int& get_current_ngk() const; @@ -156,7 +156,7 @@ class Psi // current pointer for getting the psi mutable T* psi_current = nullptr; // psi_current = psi + psi_bias; - mutable int psi_bias = 0; + mutable size_t psi_bias = 0; const int* ngk = nullptr; diff --git a/source/source_psi/psi_init.cpp b/source/source_psi/psi_init.cpp deleted file mode 100644 index cf45ac2f2d..0000000000 --- a/source/source_psi/psi_init.cpp +++ /dev/null @@ -1,273 +0,0 @@ -#include "psi_init.h" - -#include "source_base/macros.h" -#include "source_base/memory.h" -#include "source_base/parallel_device.h" -#include "source_base/timer.h" -#include "source_base/tool_quit.h" -#include "source_hsolver/diago_iter_assist.h" -#include "source_io/module_parameter/parameter.h" -#include "source_psi/psi_initializer_atomic.h" -#include "source_psi/psi_initializer_atomic_random.h" -#include "source_psi/psi_initializer_file.h" -#include "source_psi/psi_initializer_nao.h" -#include "source_psi/psi_initializer_nao_random.h" -#include "source_psi/psi_initializer_random.h" -namespace psi -{ - -template -PSIInit::PSIInit(const std::string& init_wfc_in, - const std::string& ks_solver_in, - const std::string& basis_type_in, - const int& rank_in, - const UnitCell& ucell_in, - const Structure_Factor& sf_in, - const K_Vectors& kv_in, - const pseudopot_cell_vnl& nlpp_in, - const ModulePW::PW_Basis_K& pw_wfc_in) - : ucell(ucell_in), sf(sf_in), nlpp(nlpp_in), kv(kv_in), pw_wfc(pw_wfc_in), rank(rank_in) -{ - this->init_wfc = init_wfc_in; - this->ks_solver = ks_solver_in; - this->basis_type = basis_type_in; -} - -template -void PSIInit::prepare_init(const int& random_seed) -{ - - // under restriction of C++11, std::unique_ptr can not be allocate via std::make_unique - // use new instead, but will cause asymmetric allocation and deallocation, in literal aspect - ModuleBase::timer::tick("PSIInit", "prepare_init"); - this->psi_initer.reset(); - if (this->init_wfc == "random") - { - this->psi_initer = std::unique_ptr>(new psi_initializer_random()); - } - else if (this->init_wfc == "file") - { - this->psi_initer = std::unique_ptr>(new psi_initializer_file()); - } - else if ((this->init_wfc.substr(0, 6) == "atomic") && (this->ucell.natomwfc == 0)) - { - this->psi_initer = std::unique_ptr>(new psi_initializer_random()); - } - else if (this->init_wfc == "atomic" - || (this->init_wfc == "atomic+random" && this->ucell.natomwfc < PARAM.inp.nbands)) - { - this->psi_initer = std::unique_ptr>(new psi_initializer_atomic()); - } - else if (this->init_wfc == "atomic+random") - { - this->psi_initer = std::unique_ptr>(new psi_initializer_atomic_random()); - } - else if (this->init_wfc == "nao") - { - this->psi_initer = std::unique_ptr>(new psi_initializer_nao()); - } - else if (this->init_wfc == "nao+random") - { - this->psi_initer = std::unique_ptr>(new psi_initializer_nao_random()); - } - else - { - ModuleBase::WARNING_QUIT("PSIInit::prepare_init", "for new psi initializer, init_wfc type not supported"); - } - - this->psi_initer->initialize(&sf, &pw_wfc, &ucell, &kv, random_seed, &nlpp, rank); - this->psi_initer->tabulate(); - - ModuleBase::timer::tick("PSIInit", "prepare_init"); -} - -template -void PSIInit::initialize_psi(Psi>* psi, - psi::Psi* kspw_psi, - hamilt::Hamilt* p_hamilt, - std::ofstream& ofs_running) -{ - if (kspw_psi->get_nbands() == 0 || (!PARAM.globalv.ks_run)) - { - return; - } - if (this->basis_type == "lcao_in_pw") - { - return; - } - ModuleBase::timer::tick("PSIInit", "initialize_psi"); - - const int nbands_start = this->psi_initer->nbands_start(); - const int nbands_l = psi->get_nbands(); - const int nbasis = psi->get_nbasis(); - const bool not_equal = (nbands_start != nbands_l); - - Psi* psi_cpu = reinterpret_cast*>(psi); - Psi* psi_device = kspw_psi; - - bool fill = PARAM.inp.ks_solver != "bpcg" || GlobalV::MY_BNDGROUP == 0; - if (fill) - { - if (not_equal) - { - psi_cpu = new Psi(1, nbands_start, nbasis, nbasis, true); - psi_device = PARAM.inp.device == "gpu" ? new psi::Psi(psi_cpu[0]) - : reinterpret_cast*>(psi_cpu); - } - else if (PARAM.inp.precision == "single") - { - if (PARAM.inp.device == "cpu") - { - psi_cpu = reinterpret_cast*>(kspw_psi); - psi_device = kspw_psi; - } - else - { - psi_cpu = new Psi(1, nbands_start, nbasis, nbasis, true); - psi_device = kspw_psi; - } - } - } - - // loop over kpoints, make it possible to only allocate memory for psig at the only one kpt - // like (1, nbands, npwx), in which npwx is the maximal npw of all kpoints - for (int ik = 0; ik < this->pw_wfc.nks; ik++) - { - if(PARAM.inp.use_k_continuity && ik > 0) continue; - //! Fix the wavefunction to initialize at given kpoint - psi->fix_k(ik); - kspw_psi->fix_k(ik); - - //! Update Hamiltonian from other kpoint to the given one - p_hamilt->updateHk(ik); - if (fill) - { - //! initialize psi_cpu - this->psi_initer->init_psig(psi_cpu->get_pointer(), ik); - if (psi_device->get_pointer() != psi_cpu->get_pointer()) - { - syncmem_h2d_op()(psi_device->get_pointer(), psi_cpu->get_pointer(), nbands_start * nbasis); - } - - - if (this->ks_solver == "cg") - { - std::vector::type> etatom(nbands_start, 0.0); - if (not_equal) - { - // for diagH_subspace_init, psi_device->get_pointer() and kspw_psi->get_pointer() should be - // different - hsolver::DiagoIterAssist::diagH_subspace_init(p_hamilt, - psi_device->get_pointer(), - nbands_start, - nbasis, - *(kspw_psi), - etatom.data()); - } - else - { - // for diagH_subspace, psi_device->get_pointer() and kspw_psi->get_pointer() can be the same - hsolver::DiagoIterAssist::diagH_subspace(p_hamilt, - *psi_device, - *kspw_psi, - etatom.data(), - nbands_start); - } - } - else // dav, bpcg - { - if (psi_device->get_pointer() != kspw_psi->get_pointer()) - { - syncmem_complex_op()(kspw_psi->get_pointer(), psi_device->get_pointer(), nbands_l * nbasis); - } - } - } -#ifdef __MPI - if (PARAM.inp.ks_solver == "bpcg" && PARAM.inp.bndpar > 1) - { - std::vector sendcounts(PARAM.inp.bndpar); - std::vector displs(PARAM.inp.bndpar); - MPI_Allgather(&nbands_l, 1, MPI_INT, sendcounts.data(), 1, MPI_INT, BP_WORLD); - displs[0] = 0; - sendcounts[0] *= nbasis; - for (int i = 1; i < PARAM.inp.bndpar; i++) - { - sendcounts[i] *= nbasis; - displs[i] = displs[i - 1] + sendcounts[i - 1]; - } - if (GlobalV::MY_BNDGROUP == 0) - { - for (int ip = 1; ip < PARAM.inp.bndpar; ++ip) - { - Parallel_Common::send_data(psi_cpu->get_pointer() + displs[ip], sendcounts[ip], ip, 0, BP_WORLD); - } - } - else - { - MPI_Status status; - Parallel_Common::recv_dev(kspw_psi->get_pointer(), nbands_l * nbasis, 0, 0, BP_WORLD, &status); - } - } -#endif - } // end k-point loop - - if (fill) - { - if (not_equal) - { - delete psi_cpu; - if (PARAM.inp.device == "gpu") - { - delete psi_device; - } - } - else if (PARAM.inp.precision == "single" && PARAM.inp.device == "gpu") - { - delete psi_cpu; - } - } - - ModuleBase::timer::tick("PSIInit", "initialize_psi"); -} - -template -void PSIInit::initialize_lcao_in_pw(Psi* psi_local, std::ofstream& ofs_running) -{ - ofs_running << " START WAVEFUNCTION: LCAO_IN_PW, psi initialization skipped " << std::endl; - assert(this->psi_initer->method() == "nao"); - for (int ik = 0; ik < this->pw_wfc.nks; ik++) - { - psi_local->fix_k(ik); - this->psi_initer->init_psig(psi_local->get_pointer(), ik); - } -} - -void allocate_psi(Psi>*& psi, - const int& nks, - const std::vector& ngk, - const int& nbands, - const int& npwx) -{ - assert(npwx > 0); - assert(nks > 0); - ModuleBase::GlobalFunc::OUT(GlobalV::ofs_running, "npwx", npwx); - - delete psi; - int nks2 = nks; - if (PARAM.inp.calculation == "nscf" && PARAM.inp.mem_saver == 1) - { - nks2 = 1; - } - psi = new psi::Psi>(nks2, nbands, npwx * PARAM.globalv.npol, ngk, true); - const size_t memory_cost = sizeof(std::complex) * nks2 * nbands * (PARAM.globalv.npol * npwx); - std::cout << " MEMORY FOR PSI (MB) : " << static_cast(memory_cost) / 1024.0 / 1024.0 << std::endl; - ModuleBase::Memory::record("Psi_PW", memory_cost); -} - -template class PSIInit, base_device::DEVICE_CPU>; -template class PSIInit, base_device::DEVICE_CPU>; -#if ((defined __CUDA) || (defined __ROCM)) -template class PSIInit, base_device::DEVICE_GPU>; -template class PSIInit, base_device::DEVICE_GPU>; -#endif -} // namespace psi diff --git a/source/source_psi/psi_init.h b/source/source_psi/psi_init.h deleted file mode 100644 index f594009ed4..0000000000 --- a/source/source_psi/psi_init.h +++ /dev/null @@ -1,92 +0,0 @@ -#ifndef PSI_INIT_H -#define PSI_INIT_H -#include "source_hamilt/hamilt.h" -#include "source_psi/psi_initializer.h" - -namespace psi -{ - -// This class is used to initialize the wavefunction -template -class PSIInit -{ - public: - PSIInit(const std::string& init_wfc_in, - const std::string& ks_solver_in, - const std::string& basis_type_in, - const int& rank, - const UnitCell& ucell, - const Structure_Factor& sf, - const K_Vectors& kv_in, - const pseudopot_cell_vnl& nlpp, - const ModulePW::PW_Basis_K& pw_wfc); - ~PSIInit(){}; - - ///@brief prepare the wavefunction initialization - void prepare_init(const int& random_seed); - - //------------------------ only for psi_initializer -------------------- - /** - * @brief initialize the wavefunction - * - * @param psi store the wavefunction - * @param p_hamilt Hamiltonian operator - * @param ofs_running output stream for running information - * @param is_already_initpsi whether psi has been initialized - */ - void initialize_psi(Psi>* psi, - psi::Psi* kspw_psi, - hamilt::Hamilt* p_hamilt, - std::ofstream& ofs_running); - - /** - * @brief initialize NAOs in plane wave basis, only for LCAO_IN_PW - * - */ - void initialize_lcao_in_pw(Psi* psi_local, std::ofstream& ofs_running); - - // psi_initializer* psi_initer = nullptr; - // change to use smart pointer to manage the memory, and avoid memory leak - // while the std::make_unique() is not supported till C++14, - // so use the new and std::unique_ptr to manage the memory, but this makes new-delete not symmetric - std::unique_ptr> psi_initer; - - private: - // wavefunction initialization type - std::string init_wfc = "none"; - - // Kohn-Sham solver type - std::string ks_solver = "none"; - - // basis type - std::string basis_type = "none"; - - // pw basis - const ModulePW::PW_Basis_K& pw_wfc; - - // parallel kpoints - const K_Vectors& kv; - - // unit cell - const UnitCell& ucell; - - // structure factor - const Structure_Factor& sf; - - // nonlocal pseudopotential - const pseudopot_cell_vnl& nlpp; - - Device* ctx = {}; ///< device - base_device::DEVICE_CPU* cpu_ctx = {}; ///< CPU device - const int rank; ///< MPI rank - - //-------------------------OP-------------------------------------------- - using syncmem_complex_op = base_device::memory::synchronize_memory_op; - using syncmem_h2d_op = base_device::memory::synchronize_memory_op; -}; - -///@brief allocate the wavefunction -void allocate_psi(Psi>*& psi, const int& nks, const std::vector& ngk, const int& nbands, const int& npwx); - -} // namespace psi -#endif \ No newline at end of file diff --git a/source/source_psi/psi_init_atomic.cpp b/source/source_psi/psi_init_atomic.cpp new file mode 100644 index 0000000000..31666262a0 --- /dev/null +++ b/source/source_psi/psi_init_atomic.cpp @@ -0,0 +1,492 @@ +#include "psi_init_atomic.h" +#include "source_pw/module_pwdft/soc.h" +// numerical algorithm support +#include "source_base/math_integral.h" // for numerical integration +#include "source_base/math_polyint.h" // for polynomial interpolation +#include "source_base/math_ylmreal.h" // for real spherical harmonics +#include "source_base/math_sphbes.h" // for spherical bessel functions +// basic functions support +#include "source_base/tool_quit.h" +#include "source_base/timer.h" +// global variables definition +#include "source_base/global_variable.h" +#include "source_io/module_parameter/parameter.h" +// io support +#include "source_io/module_output/write_pao.h" + +// free function, compared with common radial function normalization, it does not multiply r to function +// due to pswfc is already multiplied by r +// template +// void normalize(int n_rgrid, std::vector& pswfcr, double* rab) +// { +// std::vector pswfc2r2(pswfcr.size()); +// std::transform(pswfcr.begin(), pswfcr.end(), pswfc2r2.begin(), [](T pswfc) { return pswfc * pswfc; }); +// T norm = ModuleBase::Integral::simpson(n_rgrid, pswfc2r2.data(), rab); +// norm = sqrt(norm); +// std::transform(pswfcr.begin(), pswfcr.end(), pswfcr.begin(), [norm](T pswfc) { return pswfc / norm; }); +// } + +template +void psi_init_atomic::allocate_ps_table() +{ + // find correct dimension for ovlp_flzjlq + int dim1 = this->p_ucell_->ntype; + int dim2 = 0; // dim2 should be the maximum number of pseudo atomic orbitals + for (int it = 0; it < this->p_ucell_->ntype; it++) + { + dim2 = std::max(dim2, this->p_ucell_->atoms[it].ncpp.nchi); + } + if (dim2 == 0) + { + ModuleBase::WARNING_QUIT("psi_init_atomic::allocate_table", "there is not ANY pseudo atomic orbital read in present system, recommand other methods, quit."); + } + int dim3 = PARAM.globalv.nqx; + // allocate memory for ovlp_flzjlq + this->ovlp_pswfcjlq_.create(dim1, dim2, dim3); + this->ovlp_pswfcjlq_.zero_out(); +} + +template +void psi_init_atomic::initialize(const Structure_Factor* sf, //< structure factor + const ModulePW::PW_Basis_K* pw_wfc, //< planewave basis + const UnitCell* p_ucell, //< unit cell + const K_Vectors* p_kv_in, + const int& random_seed, //< random seed + const pseudopot_cell_vnl* p_pspot_nl, + const int& rank) +{ + ModuleBase::timer::tick("psi_init_atomic", "initialize"); + + if(p_pspot_nl == nullptr) + { + ModuleBase::WARNING_QUIT("psi_init_atomic::initialize", + "pseudopot_cell_vnl object cannot be nullptr for atomic, quit."); + } + // import + psi_initializer::initialize(sf, pw_wfc, p_ucell, p_kv_in, random_seed, p_pspot_nl, rank); + this->nbands_start_ = std::max(this->p_ucell_->natomwfc, PARAM.inp.nbands); + this->nbands_complem_ = this->nbands_start_ - this->p_ucell_->natomwfc; + // allocate + this->allocate_ps_table(); + // then for generate random number to fill in the wavefunction + this->ixy2is_.clear(); + this->ixy2is_.resize(this->pw_wfc_->fftnxy); + this->pw_wfc_->getfftixy2is(this->ixy2is_.data()); + + ModuleBase::timer::tick("psi_init_atomic", "initialize"); +} + +template +void psi_init_atomic::tabulate() +{ + ModuleBase::timer::tick("psi_init_atomic", "tabulate"); + + GlobalV::ofs_running << "\n Make real space PAO into reciprocal space." << std::endl; + ModuleIO::print_PAOs(*this->p_ucell_); + + // Find the type of atom that has most mesh points. + int max_msh = 0; + for (int it=0; itp_ucell_->ntype; it++) + { + max_msh = (this->p_ucell_->atoms[it].ncpp.msh > max_msh) ? this->p_ucell_->atoms[it].ncpp.msh : max_msh; + } + ModuleBase::GlobalFunc::OUT(GlobalV::ofs_running,"max mesh points in Pseudopotential",max_msh); + + this->ovlp_pswfcjlq_.zero_out(); + const int startq = 0; + const double pref = ModuleBase::FOUR_PI / sqrt(this->p_ucell_->omega); + std::vector aux(max_msh); + std::vector vchi(max_msh); + + ModuleBase::GlobalFunc::OUT(GlobalV::ofs_running,"dq(describe PAO in reciprocal space)",PARAM.globalv.dq); + ModuleBase::GlobalFunc::OUT(GlobalV::ofs_running,"max q",PARAM.globalv.nqx); + + for (int it=0; itp_ucell_->ntype; it++) + { + Atom* atom = &this->p_ucell_->atoms[it]; + + GlobalV::ofs_running<<"\n number of pseudo atomic orbitals for "<label<<" is "<< atom->ncpp.nchi << std::endl; + + // QE uses atom->ncpp.mesh + const int n_rgrid = (PARAM.inp.pseudo_mesh) ? atom->ncpp.mesh : atom->ncpp.msh; + std::vector chi2(n_rgrid); + + for (int ic = 0; ic < atom->ncpp.nchi ;ic++) + { + // check the unit condition + for(int ir=0; irncpp.chi(ic, ir); + chi2[ir] = chi * chi; + } + double unit = 0.0; + ModuleBase::Integral::Simpson_Integral(n_rgrid, chi2.data(), atom->ncpp.rab.data(), unit); + // liuyu add 2023-10-06 + if (unit < 1e-8) + { + // set occupancy to a small negative number so that this wfc + // is not going to be used for starting wavefunctions + atom->ncpp.oc[ic] = -1e-8; + GlobalV::ofs_running << "WARNING: norm of atomic wavefunction # " << ic + 1 << " of atomic type " + << atom->ncpp.psd << " is zero" << std::endl; + } + + // only occupied states are normalized + if (atom->ncpp.oc[ic] < 0) + { + continue; + } + + // the US part if needed + if (atom->ncpp.tvanp) + { + int kkbeta = atom->ncpp.kkbeta; + if ((kkbeta % 2 == 0) && kkbeta > 0) + { + kkbeta--; + } + std::vector norm_beta(kkbeta); + std::vector work(atom->ncpp.nbeta); + for (int ib = 0; ib < atom->ncpp.nbeta; ib++) + { + bool match = false; + if (atom->ncpp.lchi[ic] == atom->ncpp.lll[ib]) + { + if (atom->ncpp.has_so) + { + if (std::abs(atom->ncpp.jchi[ic] - atom->ncpp.jjj[ib]) < 1e-6) + { + match = true; + } + } + else + { + match = true; + } + } + if (match) + { + for (int ik = 0; ik < kkbeta; ik++) + { + norm_beta[ik] = atom->ncpp.betar(ib, ik) * atom->ncpp.chi(ic, ik); + } + ModuleBase::Integral::Simpson_Integral(kkbeta, norm_beta.data(), atom->ncpp.rab.data(), work[ib]); + } + else + { + work[ib] = 0.0; + } + } + for (int ib1 = 0; ib1 < atom->ncpp.nbeta; ib1++) + { + for (int ib2 = 0; ib2 < atom->ncpp.nbeta; ib2++) + { + unit += atom->ncpp.qqq(ib1, ib2) * work[ib1] * work[ib2]; + } + } + } // endif tvanp + + //================================= + // normalize radial wave functions + //================================= + unit = std::sqrt(unit); + if (std::abs(unit - 1.0) > 1e-6) + { + GlobalV::ofs_running << "WARNING: norm of atomic wavefunction # " << ic + 1 << " of atomic type " + << atom->ncpp.psd << " is " << unit << ", renormalized" << std::endl; + for (int ir = 0; ir < n_rgrid; ir++) + { + atom->ncpp.chi(ic, ir) /= unit; + } + } + + const int l = atom->ncpp.lchi[ic]; + for (int iq = startq; iq < PARAM.globalv.nqx; iq++) + { + const double q = PARAM.globalv.dq * iq; + ModuleBase::Sphbes::Spherical_Bessel(atom->ncpp.msh, atom->ncpp.r.data(), q, l, aux.data()); + for (int ir = 0; ir < atom->ncpp.msh; ir++) + { + vchi[ir] = atom->ncpp.chi(ic, ir) * aux[ir] * atom->ncpp.r[ir]; + } + + double vqint = 0.0; + ModuleBase::Integral::Simpson_Integral(atom->ncpp.msh, vchi.data(), atom->ncpp.rab.data(), vqint); + + this->ovlp_pswfcjlq_(it, ic, iq) = vqint * pref; + } + } + } + ModuleBase::timer::tick("psi_init_atomic", "tabulate"); +} + +std::complex phase_factor(double arg, int mode) +{ + if(mode == 1) { return std::complex(cos(arg),0); } + else if (mode == -1) { return std::complex(0, sin(arg)); } + else if (mode == 0) { return std::complex(cos(arg), sin(arg)); } + else { return std::complex(1,0); } +} + +template +void psi_init_atomic::init_psig(T* psig, const int& ik) +{ + ModuleBase::timer::tick("psi_init_atomic", "init_psig"); + const int npw = this->pw_wfc_->npwk[ik]; + const int npwk_max = this->pw_wfc_->npwk_max; + int lmax = this->p_ucell_->lmax_ppwf; + const int total_lm = (lmax + 1) * (lmax + 1); + ModuleBase::matrix ylm(total_lm, npw); + ModuleBase::GlobalFunc::ZEROS(psig, PARAM.globalv.npol * this->nbands_start_ * npwk_max); + + std::vector> aux(npw); + std::vector chiaux(npw); + std::vector> gk(npw); + // I plan to use std::transform to replace the following for loop + // but seems it is not as easy as I thought, the lambda function is not easy to write + for (int ig = 0; ig < npw; ig++) + { + gk[ig] = this->pw_wfc_->getgpluskcar(ik, ig); + } + ModuleBase::YlmReal::Ylm_Real(total_lm, npw, gk.data(), ylm); + int index = 0; + std::vector ovlp_pswfcjlg(npw); + for (int it = 0; it < this->p_ucell_->ntype; it++) + { + for (int ia = 0; ia < this->p_ucell_->atoms[it].na; ia++) + { +/* FOR EVERY ATOM */ + // I think it is always a BAD idea to new one pointer in a function, then return it + // it indicates the ownership of the pointer and behind memory is transferred to the caller + // then one must manually delete it, makes new-delete not symmetric + std::complex *sk = this->sf_->get_sk(ik, it, ia, this->pw_wfc_); + for (int ipswfc = 0; ipswfc < this->p_ucell_->atoms[it].ncpp.nchi; ipswfc++) + { +/* FOR EVERY PSWFC OF ATOM */ + if (this->p_ucell_->atoms[it].ncpp.oc[ipswfc] >= 0.0) + { +/* IF IS OCCUPIED, GET L */ + const int l = this->p_ucell_->atoms[it].ncpp.lchi[ipswfc]; + std::complex lphase = pow(ModuleBase::NEG_IMAG_UNIT, l); + + for (int ig=0; igovlp_pswfcjlq_, it, ipswfc, + PARAM.globalv.nqx, PARAM.globalv.dq, gk[ig].norm() * this->p_ucell_->tpiba ); + } +/* NSPIN == 4 */ + if(PARAM.inp.nspin == 4) + { + if(this->p_ucell_->atoms[it].ncpp.has_so) + { + Soc soc; soc.rot_ylm(l + 1); + const double j = this->p_ucell_->atoms[it].ncpp.jchi[ipswfc]; + /* NOT NONCOLINEAR CASE, rotation matrix become identity */ + if (!(PARAM.globalv.domag||PARAM.globalv.domag_z)) + { + double cg_coeffs[2]; + for(int m = -l-1; m < l+1; m++) + { + cg_coeffs[0] = soc.spinor(l, j, m, 0); + cg_coeffs[1] = soc.spinor(l, j, m, 1); + if (fabs(cg_coeffs[0]) > 1e-8 || fabs(cg_coeffs[1]) > 1e-8) + { + for(int is = 0; is < 2; is++) + { + if(fabs(cg_coeffs[is]) > 1e-8) + { + /* GET COMPLEX SPHERICAL HARMONIC FUNCTION */ + const int ind = this->p_pspot_nl_->lmaxkb + soc.sph_ind(l,j,m,is); // ind can be l+m, l+m+1, l+m-1 + std::fill(aux.begin(), aux.end(), std::complex(0.0, 0.0)); + for(int n1 = 0; n1 < 2*l+1; n1++) + { + const int lm = l*l +n1; + std::complex umM = soc.rotylm(n1, ind); + if(std::abs(umM) > 1e-8) + { + for(int ig = 0; ig < npw; ig++) + { + aux[ig] += umM * ylm(lm, ig); + } + } + } + for(int ig = 0; ig < npw; ig++) + { + psig[(2 * index + is) * npwk_max + ig] = this->template cast_to_T( + lphase * cg_coeffs[is] * sk[ig] * aux[ig] * ovlp_pswfcjlg[ig]); + } + } + else + { + for (int ig = 0; ig < npw; ig++) + { + psig[(2 * index + is) * npwk_max + ig] + = this->template cast_to_T(std::complex(0.0, 0.0)); + } + } + } + index++; + } + } + } + else + { + /* NONCONLINEAR CASE, will use [[cos(a/2)*exp(-ib/2), sin(a/2)*exp(ib/2)], [-sin(a/2)*exp(-ib/2), cos(a/2)*exp(ib/2)]] to rotate */ + int ipswfc_noncolin_soc=0; + /* J = L - 1/2 -> continue */ + /* J = L + 1/2 */ + if(fabs(j - l + 0.5) < 1e-4) + { + continue; + } + chiaux.clear(); + chiaux.resize(npw); + /* L == 0 */ + if(l == 0) + { + std::memcpy(chiaux.data(), ovlp_pswfcjlg.data(), npw * sizeof(double)); + } + else + { + /* L != 0, scan pswfcs that have the same L and satisfy J(pswfc) = L - 0.5 */ + for(int jpsiwfc = 0; jpsiwfc < this->p_ucell_->atoms[it].ncpp.nchi; jpsiwfc++) + { + if( + (this->p_ucell_->atoms[it].ncpp.lchi[jpsiwfc] == l) + &&(fabs(this->p_ucell_->atoms[it].ncpp.jchi[jpsiwfc] - l + 0.5) < 1e-4)) + { + ipswfc_noncolin_soc = jpsiwfc; + break; + } + } + for(int ig=0;ig and , a and b seem not necessarily to be equal */ + chiaux[ig] = l * + ModuleBase::PolyInt::Polynomial_Interpolation( + this->ovlp_pswfcjlq_, it, ipswfc_noncolin_soc, + PARAM.globalv.nqx, PARAM.globalv.dq, gk[ig].norm() * this->p_ucell_->tpiba); + chiaux[ig] += ovlp_pswfcjlg[ig] * (l + 1.0) ; + chiaux[ig] *= 1/(2.0*l+1.0); + } + } + /* ROTATE ACCORDING TO NONCOLINEAR */ + double alpha = this->p_ucell_->atoms[it].angle1[ia]; + double gamma = -1 * this->p_ucell_->atoms[it].angle2[ia] + 0.5 * ModuleBase::PI; + std::complex fup, fdw; + + for(int m = 0; m < 2*l+1; m++) + { + const int lm = l*l +m; + if(index+2*l+1 > this->p_ucell_->natomwfc) + { + std::cout<<__FILE__<<__LINE__<<" "<p_ucell_->natomwfc<::init_psig()","error: too many wfcs"); + } + for(int ig = 0;igtemplate cast_to_T(phase_factor(0.5 * gamma, 0) * fup); + psig[(index * 2 + 1) * npwk_max + ig] + = this->template cast_to_T(phase_factor(-0.5 * gamma, 0) * fdw); + //second rotation with angle gamma around(OZ) + fup = phase_factor(0.5*(alpha + ModuleBase::PI), 1)*aux[ig]; + fdw = phase_factor(0.5*(alpha + ModuleBase::PI), -1)*aux[ig]; + psig[(index + 2 * l + 1) * 2 * npwk_max + ig] + = this->template cast_to_T(phase_factor(0.5 * gamma, 0) * fup); + psig[((index + 2 * l + 1) * 2 + 1) * npwk_max + ig] + = this->template cast_to_T(phase_factor(-0.5 * gamma, 0) * fdw); + } + index++; + } + index += 2*l +1; + } + } + else + {//atomic_wfc_nc + double alpha=0.0; + double gamman=0.0; + std::complex fup, fdown; + //alpha = this->p_ucell_->magnet.angle1_[it]; + //gamman = -this->p_ucell_->magnet.angle2_[it] + 0.5*ModuleBase::PI; + alpha = this->p_ucell_->atoms[it].angle1[ia]; + gamman = -1 * this->p_ucell_->atoms[it].angle2[ia] + 0.5 * ModuleBase::PI; + for(int m = 0; m < 2*l+1; m++) + { + const int lm = l*l +m; + if(index+2*l+1 > this->p_ucell_->natomwfc) + { + std::cout<<__FILE__<<__LINE__<<" "<p_ucell_->natomwfc<::init_psig()","error: too many wfcs"); + } + for(int ig = 0;igtemplate cast_to_T( + (cos(0.5 * gamman) + ModuleBase::IMAG_UNIT * sin(0.5 * gamman)) * fup); + psig[(index * 2 + 1) * npwk_max + ig] = this->template cast_to_T( + (cos(0.5 * gamman) - ModuleBase::IMAG_UNIT * sin(0.5 * gamman)) * fdown); + // second rotation with angle gamma around(OZ) + fup = cos(0.5 * (alpha + ModuleBase::PI)) * aux[ig]; + fdown = ModuleBase::IMAG_UNIT * sin(0.5 * (alpha + ModuleBase::PI)) * aux[ig]; + psig[(index + 2 * l + 1) * 2 * npwk_max + ig] = this->template cast_to_T( + (cos(0.5 * gamman) + ModuleBase::IMAG_UNIT * sin(0.5 * gamman)) * fup); + psig[((index + 2 * l + 1) * 2 + 1) * npwk_max + ig] = this->template cast_to_T( + (cos(0.5 * gamman) - ModuleBase::IMAG_UNIT * sin(0.5 * gamman)) * fdown); + } + index++; + } + index += 2*l+1; + } + } + else + { + for (int m = 0; m < 2*l+1; m++) + { + const int lm = l * l + m; + for (int ig = 0; ig < npw; ig++) + { + psig[index * npwk_max + ig] + = this->template cast_to_T(lphase * sk[ig] * ylm(lm, ig) * ovlp_pswfcjlg[ig]); + } + index++; + } + } + } + } + delete [] sk; + } + } + /* complement the rest of bands if there are */ + if(this->nbands_complem() > 0) + { + this->random_t(psig, index, this->nbands_start_, ik); + } + ModuleBase::timer::tick("psi_init_atomic", "init_psig"); +} + +template class psi_init_atomic>; +template class psi_init_atomic>; +// gamma point calculation +template class psi_init_atomic; +template class psi_init_atomic; \ No newline at end of file diff --git a/source/source_psi/psi_init_atomic.h b/source/source_psi/psi_init_atomic.h new file mode 100644 index 0000000000..4cdfabdc6c --- /dev/null +++ b/source/source_psi/psi_init_atomic.h @@ -0,0 +1,39 @@ +#ifndef PSI_INIT_ATOMIC_H +#define PSI_INIT_ATOMIC_H +#include "source_base/realarray.h" +#include "psi_initializer.h" + +/* +Psi (planewave based wavefunction) initializer: atomic +*/ +template +class psi_init_atomic : public psi_initializer +{ + private: + using Real = typename GetTypeReal::type; + + public: + psi_init_atomic() + { + this->method_ = "atomic"; + } + ~psi_init_atomic(){}; + + /// @brief initialize the psi_init with external data and methods + virtual void initialize(const Structure_Factor*, //< structure factor + const ModulePW::PW_Basis_K*, //< planewave basis + const UnitCell*, //< unit cell + const K_Vectors*, //< kpoints + const int& = 1, //< random seed + const pseudopot_cell_vnl* = nullptr, //< nonlocal pseudopotential + const int& = 0) override; //< MPI rank + virtual void tabulate() override; + virtual void init_psig(T* psig, const int& ik) override; + + protected: + // allocate memory for overlap table + void allocate_ps_table(); + std::vector pseudopot_files_; + ModuleBase::realArray ovlp_pswfcjlq_; +}; +#endif \ No newline at end of file diff --git a/source/source_psi/psi_init_atomic_random.cpp b/source/source_psi/psi_init_atomic_random.cpp new file mode 100644 index 0000000000..91fd4c10bc --- /dev/null +++ b/source/source_psi/psi_init_atomic_random.cpp @@ -0,0 +1,40 @@ +#include "psi_init_atomic_random.h" + +#include "source_io/module_parameter/parameter.h" + +template +void psi_init_atomic_random::initialize(const Structure_Factor* sf, //< structure factor + const ModulePW::PW_Basis_K* pw_wfc, //< planewave basis + const UnitCell* p_ucell, //< unit cell + const K_Vectors* p_kv_in, + const int& random_seed, //< random seed + const pseudopot_cell_vnl* p_pspot_nl, + const int& rank) +{ + psi_init_atomic::initialize(sf, pw_wfc, p_ucell, p_kv_in, random_seed, p_pspot_nl, rank); +} + +template +void psi_init_atomic_random::init_psig(T* psig, const int& ik) +{ + double rm = this->mixing_coef_; + psi_init_atomic::init_psig(psig, ik); + const int npol = PARAM.globalv.npol; + const int nbasis = this->pw_wfc_->npwk_max * npol; + psi::Psi psi_random(1, this->nbands_start_, nbasis, nbasis, true); + psi_random.fix_k(0); + this->random_t(psi_random.get_pointer(), 0, this->nbands_start_, ik, 0); + for (int iband = 0; iband < this->nbands_start_; iband++) + { + for (int ibasis = 0; ibasis < nbasis; ibasis++) + { + psig[iband * nbasis + ibasis] *= (T(1.0) + Real(rm) * psi_random(iband, ibasis)); + } + } +} + +template class psi_init_atomic_random>; +template class psi_init_atomic_random>; +// gamma point calculation +template class psi_init_atomic_random; +template class psi_init_atomic_random; \ No newline at end of file diff --git a/source/source_psi/psi_init_atomic_random.h b/source/source_psi/psi_init_atomic_random.h new file mode 100644 index 0000000000..46a79ff0e6 --- /dev/null +++ b/source/source_psi/psi_init_atomic_random.h @@ -0,0 +1,37 @@ +#ifndef PSI_INIT_ATOMIC_RANDOM_H +#define PSI_INIT_ATOMIC_RANDOM_H +#include "source_cell/parallel_kpoints.h" +#include "source_pw/module_pwdft/vnl_pw.h" +#include "psi_init_atomic.h" + +/* +Psi (planewave based wavefunction) initializer: atomic+random +*/ +template +class psi_init_atomic_random : public psi_init_atomic +{ + private: + using Real = typename GetTypeReal::type; + + public: + psi_init_atomic_random() + { + this->method_ = "atomic+random"; + this->mixing_coef_ = 0.05; + } + ~psi_init_atomic_random(){}; + + /// @brief initialize the psi_initializer with external data and methods + virtual void initialize(const Structure_Factor*, //< structure factor + const ModulePW::PW_Basis_K*, //< planewave basis + const UnitCell*, //< unit cell + const K_Vectors*, //< kpoints + const int& = 1, //< random seed + const pseudopot_cell_vnl* = nullptr, //< nonlocal pseudopotential + const int& = 0) override; //< MPI rank + + virtual void init_psig(T* psig, const int& ik) override; + + private: +}; +#endif \ No newline at end of file diff --git a/source/source_psi/psi_init_file.cpp b/source/source_psi/psi_init_file.cpp new file mode 100644 index 0000000000..89484906e0 --- /dev/null +++ b/source/source_psi/psi_init_file.cpp @@ -0,0 +1,60 @@ +#include "psi_init_file.h" + +#include "source_base/timer.h" +#include "source_cell/klist.h" +#include "source_io/module_wf/read_wfc_pw.h" +#include "source_io/module_output/filename.h" +#include "source_io/module_parameter/parameter.h" + +template +void psi_init_file::initialize(const Structure_Factor* sf, + const ModulePW::PW_Basis_K* pw_wfc, + const UnitCell* p_ucell, + const K_Vectors* p_kv_in, + const int& random_seed, + const pseudopot_cell_vnl* p_pspot_nl, + const int& rank) +{ + psi_initializer::initialize(sf, pw_wfc, p_ucell, p_kv_in, random_seed, p_pspot_nl, rank); + this->nbands_start_ = PARAM.inp.nbands; + this->nbands_complem_ = 0; +} + +template +void psi_init_file::init_psig(T* psig, const int& ik) +{ + ModuleBase::timer::tick("psi_init_file", "init_psig"); + const int npol = PARAM.globalv.npol; + const int nbasis = this->pw_wfc_->npwk_max * npol; + const int nkstot = this->p_kv->get_nkstot(); + ModuleBase::ComplexMatrix wfcatom(this->nbands_start_, nbasis); + int ik_tot = this->p_kv->ik2iktot[ik]; + + // mohan update, this is for plane wave, 2025-05-17 + const int out_type = 2; + const bool out_app_flag = false; + const bool gamma_only = false; + const int istep = -1; + + std::string fn = ModuleIO::filename_output(PARAM.globalv.global_readin_dir,"wf","pw", + ik,this->p_kv->ik2iktot,PARAM.inp.nspin,nkstot, + out_type,out_app_flag,gamma_only,istep); + + ModuleIO::read_wfc_pw(fn, this->pw_wfc_, + GlobalV::RANK_IN_POOL, GlobalV::NPROC_IN_POOL, + PARAM.inp.nbands, PARAM.globalv.npol, + ik, ik_tot, nkstot, wfcatom); + + assert(this->nbands_start_ <= wfcatom.nr); + for (int ib = 0; ib < this->nbands_start_; ib++) + { + for (int ig = 0; ig < nbasis; ig++) + { + psig[ib * nbasis + ig] = this->template cast_to_T(wfcatom(ib, ig)); + } + } + ModuleBase::timer::tick("psi_init_file", "init_psig"); +} + +template class psi_init_file>; +template class psi_init_file>; diff --git a/source/source_psi/psi_init_file.h b/source/source_psi/psi_init_file.h new file mode 100644 index 0000000000..72fb18ed1e --- /dev/null +++ b/source/source_psi/psi_init_file.h @@ -0,0 +1,37 @@ +#ifndef PSI_INIT_FILE_H +#define PSI_INIT_FILE_H + +#include "source_pw/module_pwdft/vnl_pw.h" +#include "psi_initializer.h" + +/* +Psi (planewave based wavefunction) initializer: random method +*/ +template +class psi_init_file : public psi_initializer +{ + private: + using Real = typename GetTypeReal::type; + + public: + psi_init_file() + { + this->method_ = "file"; + }; + ~psi_init_file(){}; + + /// @brief initialize the psi_initializer with external data and methods + virtual void initialize(const Structure_Factor*, //< structure factor + const ModulePW::PW_Basis_K*, //< planewave basis + const UnitCell*, //< unit cell + const K_Vectors*, //< kpoints + const int& = 1, //< random seed + const pseudopot_cell_vnl* = nullptr, //< nonlocal pseudopotential + const int& = 0) override; //< MPI rank + + /// @brief calculate and output planewave wavefunction + /// @param ik kpoint index + /// @return initialized planewave wavefunction (psi::Psi>*) + virtual void init_psig(T* psig, const int& ik) override; +}; +#endif diff --git a/source/source_psi/psi_init_nao.cpp b/source/source_psi/psi_init_nao.cpp new file mode 100644 index 0000000000..29d018f213 --- /dev/null +++ b/source/source_psi/psi_init_nao.cpp @@ -0,0 +1,389 @@ +#include "psi_init_nao.h" + +#include +// numerical algorithm support +#include "source_base/math_integral.h" // for numerical integration +// numerical algorithm support +#include "source_base/math_polyint.h" // for polynomial interpolation +#include "source_base/math_ylmreal.h" // for real spherical harmonics +// basic functions support +#include "source_base/timer.h" +#include "source_base/tool_quit.h" +// three global variables definition +#include "source_base/global_variable.h" +// parallel communication +#ifdef __MPI +#include "source_base/parallel_common.h" +#include "source_base/parallel_reduce.h" +#endif +#include "source_io/module_output/orb_io.h" +#include "source_io/module_parameter/parameter.h" +// GlobalV::NQX and GlobalV::DQ are here +#include "source_io/module_parameter/parameter.h" + +#include +#include + +/* +I don't know why some variables are distributed while others not... for example the orbital_files... +We need not only read and import, but also distribute here +*/ + +// free function, not needed to be a member of psi_init_nao +void normalize(const std::vector& r, std::vector& flz) +{ + std::vector flz2r2(r.size()); + std::transform(r.begin(), r.end(), flz.begin(), flz2r2.begin(), [](double r, double flz) { + return flz * flz * r * r; + }); + double dr = r[1] - r[0]; + double norm = ModuleBase::Integral::simpson(r.size(), flz2r2.data(), dr); + norm = sqrt(norm); + std::transform(flz.begin(), flz.end(), flz.begin(), [norm](double flz) { return flz / norm; }); +} + +template +void psi_init_nao::read_external_orbs(const std::string* orbital_files, const int& rank) +{ + ModuleBase::timer::tick("psi_init_nao", "read_external_orbs"); + + this->orbital_files_.resize(this->p_ucell_->ntype); + this->nr_.resize(this->p_ucell_->ntype); + this->rgrid_.resize(this->p_ucell_->ntype); + this->chi_.resize(this->p_ucell_->ntype); + +#ifdef __MPI + if (rank == 0) + { +#endif + std::copy(orbital_files, orbital_files + this->p_ucell_->ntype, this->orbital_files_.begin()); +#ifdef __MPI + } + Parallel_Common::bcast_string(this->orbital_files_.data(), this->p_ucell_->ntype); +#endif + for (int it = 0; it < this->p_ucell_->ntype; it++) + { + std::ifstream ifs_it; + bool is_open = false; + if (rank == 0) + { + ifs_it.open(PARAM.inp.orbital_dir + this->orbital_files_[it]); + is_open = ifs_it.is_open(); + } +#ifdef __MPI + Parallel_Common::bcast_bool(is_open); +#endif + if (!is_open) + { + GlobalV::ofs_warning << "psi_init_nao::read_orbital_files: cannot open orbital file: " + << this->orbital_files_[it] << std::endl; + ModuleBase::WARNING_QUIT("psi_init_nao::read_orbital_files", "cannot open orbital file."); + } + else + { + GlobalV::ofs_running << "psi_init_nao::read_orbital_files: reading orbital file: " + << this->orbital_files_[it] << std::endl; + } + std::string elem; // garbage value, will discard + double ecut = 0.0; // garbage value, will discard + int nr = 0; + double dr = 0.0; + std::vector nzeta; + std::vector> radials; + ModuleIO::read_abacus_orb(ifs_it, elem, ecut, nr, dr, nzeta, radials, rank); + + if (rank == 0) + { + ifs_it.close(); + } + + const int nchi = std::accumulate(nzeta.begin(), nzeta.end(), 0); + // nr_ + this->nr_[it].resize(nchi); + std::for_each(this->nr_[it].begin(), this->nr_[it].end(), [nr](int& numr) { numr = nr; }); + // rgrid_ + this->rgrid_[it].resize(nchi); + std::for_each(this->rgrid_[it].begin(), this->rgrid_[it].end(), [nr, dr](std::vector& rgrid) { + rgrid.resize(nr); + std::iota(rgrid.begin(), rgrid.end(), 0); + std::for_each(rgrid.begin(), rgrid.end(), [dr](double& r) { r = r * dr; }); + }); + // chi_ + this->chi_[it].resize(nchi); + std::for_each(this->chi_[it].begin(), this->chi_[it].end(), [nr](std::vector& chi) { chi.resize(nr); }); + for (int ichi = 0; ichi < nchi; ichi++) + { + std::copy(radials[ichi].begin(), radials[ichi].end(), this->chi_[it][ichi].begin()); + } + } + ModuleBase::timer::tick("psi_init_nao", "read_external_orbs"); +} + +template +void psi_init_nao::allocate_ao_table() +{ + // find correct dimension for ovlp_flzjlq + int ntype = this->p_ucell_->ntype; + int lmaxmax = 0; // lmaxmax + int nzeta_max = 0; // dim3 should be the maximum number of zeta for each atomtype + for (int it = 0; it < this->p_ucell_->ntype; it++) + { + int nzeta = 0; + int lmax = this->p_ucell_->atoms[it].nwl; + lmaxmax = (lmaxmax > lmax) ? lmaxmax : lmax; + for (int l = 0; l < lmax + 1; l++) + { + nzeta += this->p_ucell_->atoms[it].l_nchi[l]; + } + nzeta_max = (nzeta > nzeta_max) ? nzeta : nzeta_max; + } + if (nzeta_max == 0) + { + ModuleBase::WARNING_QUIT("psi_init_nao::psi_init_nao", + "there is not ANY numerical atomic orbital read in present system, quit."); + } + // allocate a map (it, l, izeta) -> i, should allocate memory of ntype * lmax * nzeta_max + this->projmap_.create(ntype, lmaxmax + 1, nzeta_max); +} + +template +void psi_init_nao::initialize(const Structure_Factor* sf, + const ModulePW::PW_Basis_K* pw_wfc, + const UnitCell* p_ucell, + const K_Vectors* p_kv_in, + const int& random_seed, + const pseudopot_cell_vnl* p_pspot_nl, + const int& rank) +{ + ModuleBase::timer::tick("psi_init_nao", "initialize"); + + // import + psi_initializer::initialize(sf, pw_wfc, p_ucell, p_kv_in, random_seed, p_pspot_nl, rank); + + // allocate + this->allocate_ao_table(); + this->read_external_orbs(this->p_ucell_->orbital_fn.data(), rank); + + // then for generate random number to fill in the wavefunction + this->ixy2is_.clear(); + this->ixy2is_.resize(this->pw_wfc_->fftnxy); + this->pw_wfc_->getfftixy2is(this->ixy2is_.data()); + + int nbands_local = 0; + for (int it = 0; it < this->p_ucell_->ntype; it++) + { + for (int l = 0; l < this->p_ucell_->atoms[it].nwl + 1; l++) + { + /* EVERY ZETA FOR (2l+1) ORBS */ + const int nchi = this->p_ucell_->atoms[it].l_nchi[l]; + const int degen_l = (l == 0) ? 1 : 2 * l + 1; + nbands_local += nchi * degen_l * PARAM.globalv.npol * this->p_ucell_->atoms[it].na; + /* + non-rotate basis, nbands_local*=2 for PARAM.globalv.npol = 2 is enough + */ + // nbands_local += this->p_ucell_->atoms[it].l_nchi[l]*(2*l+1) * PARAM.globalv.npol; + /* + rotate basis, nbands_local*=4 for p, d, f,... orbitals, and nbands_local*=2 for s orbitals + risky when NSPIN = 4, problematic psi value, needed to be checked + */ + } + } + this->nbands_start_ = std::max(nbands_local, PARAM.inp.nbands); + this->nbands_complem_ = this->nbands_start_ - nbands_local; + + ModuleBase::timer::tick("psi_init_nao", "initialize"); +} + +template +void psi_init_nao::tabulate() +{ + ModuleBase::timer::tick("psi_init_nao", "tabulate"); + + // a uniformed qgrid + std::vector qgrid(PARAM.globalv.nqx); + std::iota(qgrid.begin(), qgrid.end(), 0); + std::for_each(qgrid.begin(), qgrid.end(), [this](double& q) { q = q * PARAM.globalv.dq; }); + + // only when needed, allocate memory for cubspl_ + if (this->cubspl_.get()) + { + this->cubspl_.reset(); + } + this->cubspl_ = std::unique_ptr(new ModuleBase::CubicSpline(qgrid.size(), qgrid.data())); + + // calculate the total number of radials and call reserve to allocate memory + int nchi = 0; + for (int it = 0; it < this->p_ucell_->ntype; it++) + { + for (int l = 0; l < this->p_ucell_->atoms[it].nwl + 1; l++) + { + nchi += this->p_ucell_->atoms[it].l_nchi[l]; + } + } + this->cubspl_->reserve(nchi); + ModuleBase::SphericalBesselTransformer sbt_(true); // bool: enable cache + + // tabulate the spherical bessel transform of numerical orbital function + std::vector Jlfq(PARAM.globalv.nqx, 0.0); + int i = 0; + for (int it = 0; it < this->p_ucell_->ntype; it++) + { + int ic = 0; + for (int l = 0; l < this->p_ucell_->atoms[it].nwl + 1; l++) + { + for (int izeta = 0; izeta < this->p_ucell_->atoms[it].l_nchi[l]; izeta++) + { + sbt_.direct(l, + this->nr_[it][ic], + this->rgrid_[it][ic].data(), + this->chi_[it][ic].data(), + PARAM.globalv.nqx, + qgrid.data(), + Jlfq.data()); + this->cubspl_->add(Jlfq.data()); + this->projmap_(it, l, izeta) = i++; // index it + ++ic; + } + } + } + ModuleBase::timer::tick("psi_init_nao", "tabulate"); +} + +template +void psi_init_nao::init_psig(T* psig, const int& ik) +{ + ModuleBase::timer::tick("psi_init_nao", "init_psig"); + assert(ik >= 0); + const int npw = this->pw_wfc_->npwk[ik]; + const int npwk_max = this->pw_wfc_->npwk_max; + const int total_lm = (this->p_ucell_->lmax + 1) * (this->p_ucell_->lmax + 1); + ModuleBase::matrix ylm(total_lm, npw); + ModuleBase::GlobalFunc::ZEROS(psig, PARAM.globalv.npol * this->nbands_start_ * npwk_max); + + std::vector> aux(npw); + std::vector qnorm(npw); + std::vector> q(npw); + +#pragma omp parallel for schedule(static) + for (int ig = 0; ig < npw; ig++) + { + q[ig] = this->pw_wfc_->getgpluskcar(ik, ig); + qnorm[ig] = q[ig].norm() * this->p_ucell_->tpiba; + } + + ModuleBase::YlmReal::Ylm_Real(total_lm, npw, q.data(), ylm); + // int index = 0; + std::vector Jlfq(npw, 0.0); + int ibasis = 0; + for (int it = 0; it < this->p_ucell_->ntype; it++) + { + /* HERE LOOP OVER ALL TYPES */ + for (int ia = 0; ia < this->p_ucell_->atoms[it].na; ia++) + { + /* HERE LOOP OVER ALL ATOMS */ + std::complex* sk = this->sf_->get_sk(ik, it, ia, this->pw_wfc_); + int ic = 0; // ic is a flatten index of chi, therefore it is defined here. + for (int L = 0; L < this->p_ucell_->atoms[it].nwl + 1; L++) + { + std::complex lphase = pow(ModuleBase::NEG_IMAG_UNIT, L); // mohan 2010-04-19 + for (int N = 0; N < this->p_ucell_->atoms[it].l_nchi[L]; N++) + { + /* HERE LOOP OVER ALL NAOS */ + /* + for already using flattened 1d index of chi, which folds l and n, the spherical bessel + transformation of numerical orbital function, is indiced by it and ic, is needed to + interpolate everytime when ic updates, therefore everytime when present orbital is done + */ + + // use cublic spline instead of previous polynomial interpolation + this->cubspl_->eval(npw, qnorm.data(), Jlfq.data(), nullptr, nullptr, this->projmap_(it, L, N)); + + /* FOR EVERY NAO IN EACH ATOM */ + if (PARAM.inp.nspin == 4) + { + /* FOR EACH SPIN CHANNEL */ + for (int is_N = 0; is_N < 2; is_N++) // rotate base + // for(int is_N = 0; is_N < 1; is_N++) + { + if (L == 0 && is_N == 1) + { + continue; + } + else + { + const double j = fabs(double(L + is_N) - 0.5); + double alpha, gamma; + std::complex fup, fdown; + if (fabs(j - L + 0.5) < 1e-4) + { + continue; + } + alpha = this->p_ucell_->atoms[it].angle1[ia]; + gamma = -1 * this->p_ucell_->atoms[it].angle2[ia] + 0.5 * ModuleBase::PI; + for (int m = 0; m < 2 * L + 1; m++) + { + const int lm = L * L + m; +#pragma omp parallel for + for (int ig = 0; ig < npw; ig++) + { + aux[ig] = sk[ig] * ylm(lm, ig) * Jlfq[ig]; + } + +#pragma omp parallel for + for (int ig = 0; ig < npw; ig++) + { + fup = cos(0.5 * alpha) * aux[ig]; + fdown = ModuleBase::IMAG_UNIT * sin(0.5 * alpha) * aux[ig]; + // build the orthogonal wfc + // first rotation with angle (alpha + ModuleBase::PI) around (OX) + psig[ibasis * 2 * npwk_max + ig] = this->template cast_to_T( + (cos(0.5 * gamma) + ModuleBase::IMAG_UNIT * sin(0.5 * gamma)) * fup); + psig[(ibasis * 2 + 1) * npwk_max + ig] = this->template cast_to_T( + (cos(0.5 * gamma) - ModuleBase::IMAG_UNIT * sin(0.5 * gamma)) * fdown); + // second rotation with angle gamma around(OZ) + fup = cos(0.5 * (alpha + ModuleBase::PI)) * aux[ig]; + fdown = ModuleBase::IMAG_UNIT * sin(0.5 * (alpha + ModuleBase::PI)) * aux[ig]; + psig[(ibasis + 2 * L + 1) * 2 * npwk_max + ig] = this->template cast_to_T( + (cos(0.5 * gamma) + ModuleBase::IMAG_UNIT * sin(0.5 * gamma)) * fup); + psig[((ibasis + 2 * L + 1) * 2 + 1) * npwk_max + ig] = this->template cast_to_T( + (cos(0.5 * gamma) - ModuleBase::IMAG_UNIT * sin(0.5 * gamma)) * fdown); + } + ibasis++; + } + ibasis += 2 * L + 1; + } + } // end for is_N + } // end if PARAM.inp.noncolin + else + { // LSDA and nomagnet case + /* DOES NOT DISTINGUISH m QUANTUM NUMBER FOR CHI */ + for (int m = 0; m < 2 * L + 1; m++) + { + const int lm = L * L + m; +#pragma omp parallel for + for (int ig = 0; ig < npw; ig++) + { + psig[ibasis * npwk_max + ig] = this->template cast_to_T(lphase * sk[ig] * ylm(lm, ig) * Jlfq[ig]); + } + ++ibasis; + } + } + ++ic; + } // end for N + } // end for L + delete[] sk; + } // end for ia + } // end for it + /* complement the rest of bands if there are */ + if (this->nbands_complem() > 0) + { + this->random_t(psig, ibasis, this->nbands_start_, ik); + } + ModuleBase::timer::tick("psi_init_nao", "init_psig"); +} + +template class psi_init_nao>; +template class psi_init_nao>; +// gamma point calculation +template class psi_init_nao; +template class psi_init_nao; \ No newline at end of file diff --git a/source/source_psi/psi_init_nao.h b/source/source_psi/psi_init_nao.h new file mode 100644 index 0000000000..b965c72e3e --- /dev/null +++ b/source/source_psi/psi_init_nao.h @@ -0,0 +1,103 @@ +#ifndef PSI_INIT_NAO_H +#define PSI_INIT_NAO_H +#include "source_base/cubic_spline.h" +#include "source_base/realarray.h" +#include "psi_initializer.h" + +#include +/* +Psi (planewave based wavefunction) initializer: numerical atomic orbital method +*/ +template +class psi_init_nao : public psi_initializer +{ + private: + using Real = typename GetTypeReal::type; + + public: + psi_init_nao() + { + this->method_ = "nao"; + }; + ~psi_init_nao(){}; + + virtual void init_psig(T* psig, const int& ik) override; + + /// @brief initialize the psi_initializer with external data and methods + virtual void initialize(const Structure_Factor*, //< structure factor + const ModulePW::PW_Basis_K*, //< planewave basis + const UnitCell*, //< unit cell + const K_Vectors*, //< kpoints + const int& = 1, //< random seed + const pseudopot_cell_vnl* = nullptr, //< nonlocal pseudopotential + const int& = 0) override; //< MPI rank + + void read_external_orbs(const std::string* orbital_files, const int& rank); + virtual void tabulate() override; + std::vector external_orbs() const + { + return orbital_files_; + } + std::vector> nr() const + { + return nr_; + } + std::vector nr(const int& itype) const + { + return nr_[itype]; + } + int nr(const int& itype, const int& ichi) const + { + return nr_[itype][ichi]; + } + std::vector>> chi() const + { + return chi_; + } + std::vector> chi(const int& itype) const + { + return chi_[itype]; + } + std::vector chi(const int& itype, const int& ichi) const + { + return chi_[itype][ichi]; + } + double chi(const int& itype, const int& ichi, const int& ir) const + { + return chi_[itype][ichi][ir]; + } + std::vector>> rgrid() const + { + return rgrid_; + } + std::vector> rgrid(const int& itype) const + { + return rgrid_[itype]; + } + std::vector rgrid(const int& itype, const int& ichi) const + { + return rgrid_[itype][ichi]; + } + double rgrid(const int& itype, const int& ichi, const int& ir) const + { + return rgrid_[itype][ichi][ir]; + } + + protected: + /// @brief allocate memory for overlap table + void allocate_ao_table(); + std::vector orbital_files_; + /// @brief cubic spline for interpolation + std::unique_ptr cubspl_; + /// @brief radial map, [itype][l][izeta] -> i + ModuleBase::realArray projmap_; + /// @brief number of realspace grids per type per chi, [itype][ichi] + std::vector> nr_; + /// @brief data of numerical atomic orbital per type per chi per position, [itype][ichi][ir] + std::vector>> chi_; + /// @brief r of numerical atomic orbital per type per chi per position, [itype][ichi][ir] + std::vector>> rgrid_; + /// @brief useful for atomic-like methods + ModuleBase::SphericalBesselTransformer sbt; +}; +#endif \ No newline at end of file diff --git a/source/source_psi/psi_init_nao_random.cpp b/source/source_psi/psi_init_nao_random.cpp new file mode 100644 index 0000000000..e3e2b8e89c --- /dev/null +++ b/source/source_psi/psi_init_nao_random.cpp @@ -0,0 +1,40 @@ +#include "psi_init_nao_random.h" + +#include "source_io/module_parameter/parameter.h" + +template +void psi_init_nao_random::initialize(const Structure_Factor* sf, + const ModulePW::PW_Basis_K* pw_wfc, + const UnitCell* p_ucell, + const K_Vectors* p_kv_in, + const int& random_seed, + const pseudopot_cell_vnl* p_pspot_nl, + const int& rank) +{ + psi_init_nao::initialize(sf, pw_wfc, p_ucell, p_kv_in, random_seed, p_pspot_nl, rank); +} + +template +void psi_init_nao_random::init_psig(T* psig, const int& ik) +{ + double rm = this->mixing_coef_; + psi_init_nao::init_psig(psig, ik); + const int npol = PARAM.globalv.npol; + const int nbasis = this->pw_wfc_->npwk_max * npol; + psi::Psi psi_random(1, this->nbands_start_, nbasis, nbasis, true); + psi_random.fix_k(0); + this->random_t(psi_random.get_pointer(), 0, this->nbands_start_, ik, 0); + for (int iband = 0; iband < this->nbands_start_; iband++) + { + for (int ibasis = 0; ibasis < nbasis; ibasis++) + { + psig[iband * nbasis + ibasis] *= (T(1.0) + Real(rm) * psi_random(iband, ibasis)); + } + } +} + +template class psi_init_nao_random>; +template class psi_init_nao_random>; +// gamma point calculation +template class psi_init_nao_random; +template class psi_init_nao_random; \ No newline at end of file diff --git a/source/source_psi/psi_init_nao_random.h b/source/source_psi/psi_init_nao_random.h new file mode 100644 index 0000000000..dbe07d8c77 --- /dev/null +++ b/source/source_psi/psi_init_nao_random.h @@ -0,0 +1,35 @@ +#ifndef PSI_INIT_NAO_RANDOM_H +#define PSI_INIT_NAO_RANDOM_H +#include "source_cell/parallel_kpoints.h" +#include "source_pw/module_pwdft/vnl_pw.h" +#include "psi_init_nao.h" + +/* +Psi (planewave based wavefunction) initializer: numerical atomic orbital + random method +*/ +template +class psi_init_nao_random : public psi_init_nao +{ + private: + using Real = typename GetTypeReal::type; + + public: + psi_init_nao_random() + { + this->method_ = "nao+random"; + this->mixing_coef_ = 0.05; + }; + ~psi_init_nao_random(){}; + + /// @brief initialize the psi_init with external data and methods + virtual void initialize(const Structure_Factor*, //< structure factor + const ModulePW::PW_Basis_K*, //< planewave basis + const UnitCell*, //< unit cell + const K_Vectors*, //< kpoints + const int& = 1, //< random seed + const pseudopot_cell_vnl* = nullptr, //< nonlocal pseudopotential + const int& = 0) override; //< MPI rank + + virtual void init_psig(T* psig, const int& ik) override; +}; +#endif \ No newline at end of file diff --git a/source/source_psi/psi_init_random.cpp b/source/source_psi/psi_init_random.cpp new file mode 100644 index 0000000000..697a4476ad --- /dev/null +++ b/source/source_psi/psi_init_random.cpp @@ -0,0 +1,31 @@ +#include "psi_init_random.h" +#include "source_io/module_parameter/parameter.h" + +template +void psi_init_random::initialize(const Structure_Factor* sf, + const ModulePW::PW_Basis_K* pw_wfc, + const UnitCell* p_ucell, + const K_Vectors* p_kv_in, + const int& random_seed, + const pseudopot_cell_vnl* p_pspot_nl, + const int& rank) +{ + psi_initializer::initialize(sf, pw_wfc, p_ucell, p_kv_in, random_seed, p_pspot_nl, rank); + this->ixy2is_.clear(); + this->ixy2is_.resize(this->pw_wfc_->fftnxy); + this->pw_wfc_->getfftixy2is(this->ixy2is_.data()); + this->nbands_start_ = PARAM.inp.nbands; + this->nbands_complem_ = 0; +} + +template +void psi_init_random::init_psig(T* psig, const int& ik) +{ + this->random_t(psig, 0, this->nbands_start_, ik); +} + +template class psi_init_random>; +template class psi_init_random>; +// gamma point calculation +template class psi_init_random; +template class psi_init_random; diff --git a/source/source_psi/psi_init_random.h b/source/source_psi/psi_init_random.h new file mode 100644 index 0000000000..8d66035ec6 --- /dev/null +++ b/source/source_psi/psi_init_random.h @@ -0,0 +1,35 @@ +#ifndef PSI_INIT_RANDOM_H +#define PSI_INIT_RANDOM_H + +#include "source_pw/module_pwdft/vnl_pw.h" +#include "psi_initializer.h" + +/* +Psi (planewave based wavefunction) initializer: random method +*/ +template +class psi_init_random : public psi_initializer +{ + private: + using Real = typename GetTypeReal::type; + + public: + psi_init_random() + { + this->method_ = "random"; + }; + ~psi_init_random(){}; + /// @brief calculate and output planewave wavefunction + /// @param ik kpoint index + /// @return initialized planewave wavefunction (psi::Psi>*) + virtual void init_psig(T* psig, const int& ik) override; + /// @brief initialize the psi_init with external data and methods + virtual void initialize(const Structure_Factor*, //< structure factor + const ModulePW::PW_Basis_K*, //< planewave basis + const UnitCell*, //< unit cell + const K_Vectors*, //< kpoints + const int& = 1, //< random seed + const pseudopot_cell_vnl* = nullptr, //< nonlocal pseudopotential + const int& = 0) override; //< MPI rank +}; +#endif \ No newline at end of file diff --git a/source/source_psi/psi_initializer.cpp b/source/source_psi/psi_initializer.cpp index 2f1fd46f99..cc260ec90c 100644 --- a/source/source_psi/psi_initializer.cpp +++ b/source/source_psi/psi_initializer.cpp @@ -92,7 +92,7 @@ void psi_initializer::random_t(T* psi, const int iw_start, const int iw_end, } // then for each g-component, initialize the wavefunction value #ifdef _OPENMP -#pragma omp parallel for schedule(static, 4096 / sizeof(T)) +#pragma omp parallel for schedule(static) #endif for (int ig = 0; ig < ng; ig++) { @@ -104,7 +104,7 @@ void psi_initializer::random_t(T* psi, const int iw_start, const int iw_end, psi_slice[ig] = this->template cast_to_T(std::complex(rr * cos(arg), rr * sin(arg))); } #ifdef _OPENMP -#pragma omp parallel for schedule(static, 4096 / sizeof(T)) +#pragma omp parallel for schedule(static) #endif for (int ig = ng; ig < npwk_max; ++ig) { @@ -151,7 +151,7 @@ void psi_initializer::random_t(T* psi, const int iw_start, const int iw_end, for (int ipol = 0; ipol < npol; ipol++) { #ifdef _OPENMP -#pragma omp parallel for schedule(static, 4096 / sizeof(T)) +#pragma omp parallel for schedule(static) #endif for (int ig = 0; ig < ng; ig++) { diff --git a/source/source_psi/psi_initializer.h b/source/source_psi/psi_initializer.h index 7f48fc7d58..a812656209 100644 --- a/source/source_psi/psi_initializer.h +++ b/source/source_psi/psi_initializer.h @@ -2,7 +2,7 @@ #define PSI_INITIALIZER_H // data structure support #include "source_basis/module_pw/pw_basis_k.h" // for kpoint related data structure -#include "source_pw/module_pwdft/VNL_in_pw.h" +#include "source_pw/module_pwdft/vnl_pw.h" #include "source_pw/module_pwdft/structure_factor.h" #include "source_psi/psi.h" // for psi data structure // smart pointer for auto-memory management diff --git a/source/source_psi/psi_initializer_atomic.cpp b/source/source_psi/psi_initializer_atomic.cpp deleted file mode 100644 index 3ab972ac4e..0000000000 --- a/source/source_psi/psi_initializer_atomic.cpp +++ /dev/null @@ -1,492 +0,0 @@ -#include "psi_initializer_atomic.h" -#include "source_pw/module_pwdft/soc.h" -// numerical algorithm support -#include "source_base/math_integral.h" // for numerical integration -#include "source_base/math_polyint.h" // for polynomial interpolation -#include "source_base/math_ylmreal.h" // for real spherical harmonics -#include "source_base/math_sphbes.h" // for spherical bessel functions -// basic functions support -#include "source_base/tool_quit.h" -#include "source_base/timer.h" -// global variables definition -#include "source_base/global_variable.h" -#include "source_io/module_parameter/parameter.h" -// io support -#include "source_io/write_pao.h" - -// free function, compared with common radial function normalization, it does not multiply r to function -// due to pswfc is already multiplied by r -// template -// void normalize(int n_rgrid, std::vector& pswfcr, double* rab) -// { -// std::vector pswfc2r2(pswfcr.size()); -// std::transform(pswfcr.begin(), pswfcr.end(), pswfc2r2.begin(), [](T pswfc) { return pswfc * pswfc; }); -// T norm = ModuleBase::Integral::simpson(n_rgrid, pswfc2r2.data(), rab); -// norm = sqrt(norm); -// std::transform(pswfcr.begin(), pswfcr.end(), pswfcr.begin(), [norm](T pswfc) { return pswfc / norm; }); -// } - -template -void psi_initializer_atomic::allocate_ps_table() -{ - // find correct dimension for ovlp_flzjlq - int dim1 = this->p_ucell_->ntype; - int dim2 = 0; // dim2 should be the maximum number of pseudo atomic orbitals - for (int it = 0; it < this->p_ucell_->ntype; it++) - { - dim2 = std::max(dim2, this->p_ucell_->atoms[it].ncpp.nchi); - } - if (dim2 == 0) - { - ModuleBase::WARNING_QUIT("psi_initializer_atomic::allocate_table", "there is not ANY pseudo atomic orbital read in present system, recommand other methods, quit."); - } - int dim3 = PARAM.globalv.nqx; - // allocate memory for ovlp_flzjlq - this->ovlp_pswfcjlq_.create(dim1, dim2, dim3); - this->ovlp_pswfcjlq_.zero_out(); -} - -template -void psi_initializer_atomic::initialize(const Structure_Factor* sf, //< structure factor - const ModulePW::PW_Basis_K* pw_wfc, //< planewave basis - const UnitCell* p_ucell, //< unit cell - const K_Vectors* p_kv_in, - const int& random_seed, //< random seed - const pseudopot_cell_vnl* p_pspot_nl, - const int& rank) -{ - ModuleBase::timer::tick("psi_init_atomic", "initialize"); - - if(p_pspot_nl == nullptr) - { - ModuleBase::WARNING_QUIT("psi_initializer_atomic::initialize", - "pseudopot_cell_vnl object cannot be nullptr for atomic, quit."); - } - // import - psi_initializer::initialize(sf, pw_wfc, p_ucell, p_kv_in, random_seed, p_pspot_nl, rank); - this->nbands_start_ = std::max(this->p_ucell_->natomwfc, PARAM.inp.nbands); - this->nbands_complem_ = this->nbands_start_ - this->p_ucell_->natomwfc; - // allocate - this->allocate_ps_table(); - // then for generate random number to fill in the wavefunction - this->ixy2is_.clear(); - this->ixy2is_.resize(this->pw_wfc_->fftnxy); - this->pw_wfc_->getfftixy2is(this->ixy2is_.data()); - - ModuleBase::timer::tick("psi_init_atomic", "initialize"); -} - -template -void psi_initializer_atomic::tabulate() -{ - ModuleBase::timer::tick("psi_init_atomic", "tabulate"); - - GlobalV::ofs_running << "\n Make real space PAO into reciprocal space." << std::endl; - ModuleIO::print_PAOs(*this->p_ucell_); - - // Find the type of atom that has most mesh points. - int max_msh = 0; - for (int it=0; itp_ucell_->ntype; it++) - { - max_msh = (this->p_ucell_->atoms[it].ncpp.msh > max_msh) ? this->p_ucell_->atoms[it].ncpp.msh : max_msh; - } - ModuleBase::GlobalFunc::OUT(GlobalV::ofs_running,"max mesh points in Pseudopotential",max_msh); - - this->ovlp_pswfcjlq_.zero_out(); - const int startq = 0; - const double pref = ModuleBase::FOUR_PI / sqrt(this->p_ucell_->omega); - std::vector aux(max_msh); - std::vector vchi(max_msh); - - ModuleBase::GlobalFunc::OUT(GlobalV::ofs_running,"dq(describe PAO in reciprocal space)",PARAM.globalv.dq); - ModuleBase::GlobalFunc::OUT(GlobalV::ofs_running,"max q",PARAM.globalv.nqx); - - for (int it=0; itp_ucell_->ntype; it++) - { - Atom* atom = &this->p_ucell_->atoms[it]; - - GlobalV::ofs_running<<"\n number of pseudo atomic orbitals for "<label<<" is "<< atom->ncpp.nchi << std::endl; - - // QE uses atom->ncpp.mesh - const int n_rgrid = (PARAM.inp.pseudo_mesh) ? atom->ncpp.mesh : atom->ncpp.msh; - std::vector chi2(n_rgrid); - - for (int ic = 0; ic < atom->ncpp.nchi ;ic++) - { - // check the unit condition - for(int ir=0; irncpp.chi(ic, ir); - chi2[ir] = chi * chi; - } - double unit = 0.0; - ModuleBase::Integral::Simpson_Integral(n_rgrid, chi2.data(), atom->ncpp.rab.data(), unit); - // liuyu add 2023-10-06 - if (unit < 1e-8) - { - // set occupancy to a small negative number so that this wfc - // is not going to be used for starting wavefunctions - atom->ncpp.oc[ic] = -1e-8; - GlobalV::ofs_running << "WARNING: norm of atomic wavefunction # " << ic + 1 << " of atomic type " - << atom->ncpp.psd << " is zero" << std::endl; - } - - // only occupied states are normalized - if (atom->ncpp.oc[ic] < 0) - { - continue; - } - - // the US part if needed - if (atom->ncpp.tvanp) - { - int kkbeta = atom->ncpp.kkbeta; - if ((kkbeta % 2 == 0) && kkbeta > 0) - { - kkbeta--; - } - std::vector norm_beta(kkbeta); - std::vector work(atom->ncpp.nbeta); - for (int ib = 0; ib < atom->ncpp.nbeta; ib++) - { - bool match = false; - if (atom->ncpp.lchi[ic] == atom->ncpp.lll[ib]) - { - if (atom->ncpp.has_so) - { - if (std::abs(atom->ncpp.jchi[ic] - atom->ncpp.jjj[ib]) < 1e-6) - { - match = true; - } - } - else - { - match = true; - } - } - if (match) - { - for (int ik = 0; ik < kkbeta; ik++) - { - norm_beta[ik] = atom->ncpp.betar(ib, ik) * atom->ncpp.chi(ic, ik); - } - ModuleBase::Integral::Simpson_Integral(kkbeta, norm_beta.data(), atom->ncpp.rab.data(), work[ib]); - } - else - { - work[ib] = 0.0; - } - } - for (int ib1 = 0; ib1 < atom->ncpp.nbeta; ib1++) - { - for (int ib2 = 0; ib2 < atom->ncpp.nbeta; ib2++) - { - unit += atom->ncpp.qqq(ib1, ib2) * work[ib1] * work[ib2]; - } - } - } // endif tvanp - - //================================= - // normalize radial wave functions - //================================= - unit = std::sqrt(unit); - if (std::abs(unit - 1.0) > 1e-6) - { - GlobalV::ofs_running << "WARNING: norm of atomic wavefunction # " << ic + 1 << " of atomic type " - << atom->ncpp.psd << " is " << unit << ", renormalized" << std::endl; - for (int ir = 0; ir < n_rgrid; ir++) - { - atom->ncpp.chi(ic, ir) /= unit; - } - } - - const int l = atom->ncpp.lchi[ic]; - for (int iq = startq; iq < PARAM.globalv.nqx; iq++) - { - const double q = PARAM.globalv.dq * iq; - ModuleBase::Sphbes::Spherical_Bessel(atom->ncpp.msh, atom->ncpp.r.data(), q, l, aux.data()); - for (int ir = 0; ir < atom->ncpp.msh; ir++) - { - vchi[ir] = atom->ncpp.chi(ic, ir) * aux[ir] * atom->ncpp.r[ir]; - } - - double vqint = 0.0; - ModuleBase::Integral::Simpson_Integral(atom->ncpp.msh, vchi.data(), atom->ncpp.rab.data(), vqint); - - this->ovlp_pswfcjlq_(it, ic, iq) = vqint * pref; - } - } - } - ModuleBase::timer::tick("psi_init_atomic", "tabulate"); -} - -std::complex phase_factor(double arg, int mode) -{ - if(mode == 1) { return std::complex(cos(arg),0); } - else if (mode == -1) { return std::complex(0, sin(arg)); } - else if (mode == 0) { return std::complex(cos(arg), sin(arg)); } - else { return std::complex(1,0); } -} - -template -void psi_initializer_atomic::init_psig(T* psig, const int& ik) -{ - ModuleBase::timer::tick("psi_init_atomic", "init_psig"); - const int npw = this->pw_wfc_->npwk[ik]; - const int npwk_max = this->pw_wfc_->npwk_max; - int lmax = this->p_ucell_->lmax_ppwf; - const int total_lm = (lmax + 1) * (lmax + 1); - ModuleBase::matrix ylm(total_lm, npw); - ModuleBase::GlobalFunc::ZEROS(psig, PARAM.globalv.npol * this->nbands_start_ * npwk_max); - - std::vector> aux(npw); - std::vector chiaux(npw); - std::vector> gk(npw); - // I plan to use std::transform to replace the following for loop - // but seems it is not as easy as I thought, the lambda function is not easy to write - for (int ig = 0; ig < npw; ig++) - { - gk[ig] = this->pw_wfc_->getgpluskcar(ik, ig); - } - ModuleBase::YlmReal::Ylm_Real(total_lm, npw, gk.data(), ylm); - int index = 0; - std::vector ovlp_pswfcjlg(npw); - for (int it = 0; it < this->p_ucell_->ntype; it++) - { - for (int ia = 0; ia < this->p_ucell_->atoms[it].na; ia++) - { -/* FOR EVERY ATOM */ - // I think it is always a BAD idea to new one pointer in a function, then return it - // it indicates the ownership of the pointer and behind memory is transferred to the caller - // then one must manually delete it, makes new-delete not symmetric - std::complex *sk = this->sf_->get_sk(ik, it, ia, this->pw_wfc_); - for (int ipswfc = 0; ipswfc < this->p_ucell_->atoms[it].ncpp.nchi; ipswfc++) - { -/* FOR EVERY PSWFC OF ATOM */ - if (this->p_ucell_->atoms[it].ncpp.oc[ipswfc] >= 0.0) - { -/* IF IS OCCUPIED, GET L */ - const int l = this->p_ucell_->atoms[it].ncpp.lchi[ipswfc]; - std::complex lphase = pow(ModuleBase::NEG_IMAG_UNIT, l); - - for (int ig=0; igovlp_pswfcjlq_, it, ipswfc, - PARAM.globalv.nqx, PARAM.globalv.dq, gk[ig].norm() * this->p_ucell_->tpiba ); - } -/* NSPIN == 4 */ - if(PARAM.inp.nspin == 4) - { - if(this->p_ucell_->atoms[it].ncpp.has_so) - { - Soc soc; soc.rot_ylm(l + 1); - const double j = this->p_ucell_->atoms[it].ncpp.jchi[ipswfc]; - /* NOT NONCOLINEAR CASE, rotation matrix become identity */ - if (!(PARAM.globalv.domag||PARAM.globalv.domag_z)) - { - double cg_coeffs[2]; - for(int m = -l-1; m < l+1; m++) - { - cg_coeffs[0] = soc.spinor(l, j, m, 0); - cg_coeffs[1] = soc.spinor(l, j, m, 1); - if (fabs(cg_coeffs[0]) > 1e-8 || fabs(cg_coeffs[1]) > 1e-8) - { - for(int is = 0; is < 2; is++) - { - if(fabs(cg_coeffs[is]) > 1e-8) - { - /* GET COMPLEX SPHERICAL HARMONIC FUNCTION */ - const int ind = this->p_pspot_nl_->lmaxkb + soc.sph_ind(l,j,m,is); // ind can be l+m, l+m+1, l+m-1 - std::fill(aux.begin(), aux.end(), std::complex(0.0, 0.0)); - for(int n1 = 0; n1 < 2*l+1; n1++) - { - const int lm = l*l +n1; - std::complex umM = soc.rotylm(n1, ind); - if(std::abs(umM) > 1e-8) - { - for(int ig = 0; ig < npw; ig++) - { - aux[ig] += umM * ylm(lm, ig); - } - } - } - for(int ig = 0; ig < npw; ig++) - { - psig[(2 * index + is) * npwk_max + ig] = this->template cast_to_T( - lphase * cg_coeffs[is] * sk[ig] * aux[ig] * ovlp_pswfcjlg[ig]); - } - } - else - { - for (int ig = 0; ig < npw; ig++) - { - psig[(2 * index + is) * npwk_max + ig] - = this->template cast_to_T(std::complex(0.0, 0.0)); - } - } - } - index++; - } - } - } - else - { - /* NONCONLINEAR CASE, will use [[cos(a/2)*exp(-ib/2), sin(a/2)*exp(ib/2)], [-sin(a/2)*exp(-ib/2), cos(a/2)*exp(ib/2)]] to rotate */ - int ipswfc_noncolin_soc=0; - /* J = L - 1/2 -> continue */ - /* J = L + 1/2 */ - if(fabs(j - l + 0.5) < 1e-4) - { - continue; - } - chiaux.clear(); - chiaux.resize(npw); - /* L == 0 */ - if(l == 0) - { - std::memcpy(chiaux.data(), ovlp_pswfcjlg.data(), npw * sizeof(double)); - } - else - { - /* L != 0, scan pswfcs that have the same L and satisfy J(pswfc) = L - 0.5 */ - for(int jpsiwfc = 0; jpsiwfc < this->p_ucell_->atoms[it].ncpp.nchi; jpsiwfc++) - { - if( - (this->p_ucell_->atoms[it].ncpp.lchi[jpsiwfc] == l) - &&(fabs(this->p_ucell_->atoms[it].ncpp.jchi[jpsiwfc] - l + 0.5) < 1e-4)) - { - ipswfc_noncolin_soc = jpsiwfc; - break; - } - } - for(int ig=0;ig and , a and b seem not necessarily to be equal */ - chiaux[ig] = l * - ModuleBase::PolyInt::Polynomial_Interpolation( - this->ovlp_pswfcjlq_, it, ipswfc_noncolin_soc, - PARAM.globalv.nqx, PARAM.globalv.dq, gk[ig].norm() * this->p_ucell_->tpiba); - chiaux[ig] += ovlp_pswfcjlg[ig] * (l + 1.0) ; - chiaux[ig] *= 1/(2.0*l+1.0); - } - } - /* ROTATE ACCORDING TO NONCOLINEAR */ - double alpha = this->p_ucell_->atoms[it].angle1[ia]; - double gamma = -1 * this->p_ucell_->atoms[it].angle2[ia] + 0.5 * ModuleBase::PI; - std::complex fup, fdw; - - for(int m = 0; m < 2*l+1; m++) - { - const int lm = l*l +m; - if(index+2*l+1 > this->p_ucell_->natomwfc) - { - std::cout<<__FILE__<<__LINE__<<" "<p_ucell_->natomwfc<::init_psig()","error: too many wfcs"); - } - for(int ig = 0;igtemplate cast_to_T(phase_factor(0.5 * gamma, 0) * fup); - psig[(index * 2 + 1) * npwk_max + ig] - = this->template cast_to_T(phase_factor(-0.5 * gamma, 0) * fdw); - //second rotation with angle gamma around(OZ) - fup = phase_factor(0.5*(alpha + ModuleBase::PI), 1)*aux[ig]; - fdw = phase_factor(0.5*(alpha + ModuleBase::PI), -1)*aux[ig]; - psig[(index + 2 * l + 1) * 2 * npwk_max + ig] - = this->template cast_to_T(phase_factor(0.5 * gamma, 0) * fup); - psig[((index + 2 * l + 1) * 2 + 1) * npwk_max + ig] - = this->template cast_to_T(phase_factor(-0.5 * gamma, 0) * fdw); - } - index++; - } - index += 2*l +1; - } - } - else - {//atomic_wfc_nc - double alpha=0.0; - double gamman=0.0; - std::complex fup, fdown; - //alpha = this->p_ucell_->magnet.angle1_[it]; - //gamman = -this->p_ucell_->magnet.angle2_[it] + 0.5*ModuleBase::PI; - alpha = this->p_ucell_->atoms[it].angle1[ia]; - gamman = -1 * this->p_ucell_->atoms[it].angle2[ia] + 0.5 * ModuleBase::PI; - for(int m = 0; m < 2*l+1; m++) - { - const int lm = l*l +m; - if(index+2*l+1 > this->p_ucell_->natomwfc) - { - std::cout<<__FILE__<<__LINE__<<" "<p_ucell_->natomwfc<::init_psig()","error: too many wfcs"); - } - for(int ig = 0;igtemplate cast_to_T( - (cos(0.5 * gamman) + ModuleBase::IMAG_UNIT * sin(0.5 * gamman)) * fup); - psig[(index * 2 + 1) * npwk_max + ig] = this->template cast_to_T( - (cos(0.5 * gamman) - ModuleBase::IMAG_UNIT * sin(0.5 * gamman)) * fdown); - // second rotation with angle gamma around(OZ) - fup = cos(0.5 * (alpha + ModuleBase::PI)) * aux[ig]; - fdown = ModuleBase::IMAG_UNIT * sin(0.5 * (alpha + ModuleBase::PI)) * aux[ig]; - psig[(index + 2 * l + 1) * 2 * npwk_max + ig] = this->template cast_to_T( - (cos(0.5 * gamman) + ModuleBase::IMAG_UNIT * sin(0.5 * gamman)) * fup); - psig[((index + 2 * l + 1) * 2 + 1) * npwk_max + ig] = this->template cast_to_T( - (cos(0.5 * gamman) - ModuleBase::IMAG_UNIT * sin(0.5 * gamman)) * fdown); - } - index++; - } - index += 2*l+1; - } - } - else - { - for (int m = 0; m < 2*l+1; m++) - { - const int lm = l * l + m; - for (int ig = 0; ig < npw; ig++) - { - psig[index * npwk_max + ig] - = this->template cast_to_T(lphase * sk[ig] * ylm(lm, ig) * ovlp_pswfcjlg[ig]); - } - index++; - } - } - } - } - delete [] sk; - } - } - /* complement the rest of bands if there are */ - if(this->nbands_complem() > 0) - { - this->random_t(psig, index, this->nbands_start_, ik); - } - ModuleBase::timer::tick("psi_init_atomic", "init_psig"); -} - -template class psi_initializer_atomic>; -template class psi_initializer_atomic>; -// gamma point calculation -template class psi_initializer_atomic; -template class psi_initializer_atomic; diff --git a/source/source_psi/psi_initializer_atomic.h b/source/source_psi/psi_initializer_atomic.h deleted file mode 100644 index 65ca8f015a..0000000000 --- a/source/source_psi/psi_initializer_atomic.h +++ /dev/null @@ -1,39 +0,0 @@ -#ifndef PSI_INITIALIZER_ATOMIC_H -#define PSI_INITIALIZER_ATOMIC_H -#include "source_base/realarray.h" -#include "psi_initializer.h" - -/* -Psi (planewave based wavefunction) initializer: atomic -*/ -template -class psi_initializer_atomic : public psi_initializer -{ - private: - using Real = typename GetTypeReal::type; - - public: - psi_initializer_atomic() - { - this->method_ = "atomic"; - } - ~psi_initializer_atomic(){}; - - /// @brief initialize the psi_initializer with external data and methods - virtual void initialize(const Structure_Factor*, //< structure factor - const ModulePW::PW_Basis_K*, //< planewave basis - const UnitCell*, //< unit cell - const K_Vectors*, //< kpoints - const int& = 1, //< random seed - const pseudopot_cell_vnl* = nullptr, //< nonlocal pseudopotential - const int& = 0) override; //< MPI rank - virtual void tabulate() override; - virtual void init_psig(T* psig, const int& ik) override; - - protected: - // allocate memory for overlap table - void allocate_ps_table(); - std::vector pseudopot_files_; - ModuleBase::realArray ovlp_pswfcjlq_; -}; -#endif \ No newline at end of file diff --git a/source/source_psi/psi_initializer_atomic_random.cpp b/source/source_psi/psi_initializer_atomic_random.cpp deleted file mode 100644 index f9d8f5c0a4..0000000000 --- a/source/source_psi/psi_initializer_atomic_random.cpp +++ /dev/null @@ -1,40 +0,0 @@ -#include "psi_initializer_atomic_random.h" - -#include "source_io/module_parameter/parameter.h" - -template -void psi_initializer_atomic_random::initialize(const Structure_Factor* sf, //< structure factor - const ModulePW::PW_Basis_K* pw_wfc, //< planewave basis - const UnitCell* p_ucell, //< unit cell - const K_Vectors* p_kv_in, - const int& random_seed, //< random seed - const pseudopot_cell_vnl* p_pspot_nl, - const int& rank) -{ - psi_initializer_atomic::initialize(sf, pw_wfc, p_ucell, p_kv_in, random_seed, p_pspot_nl, rank); -} - -template -void psi_initializer_atomic_random::init_psig(T* psig, const int& ik) -{ - double rm = this->mixing_coef_; - psi_initializer_atomic::init_psig(psig, ik); - const int npol = PARAM.globalv.npol; - const int nbasis = this->pw_wfc_->npwk_max * npol; - psi::Psi psi_random(1, this->nbands_start_, nbasis, nbasis, true); - psi_random.fix_k(0); - this->random_t(psi_random.get_pointer(), 0, this->nbands_start_, ik, 0); - for (int iband = 0; iband < this->nbands_start_; iband++) - { - for (int ibasis = 0; ibasis < nbasis; ibasis++) - { - psig[iband * nbasis + ibasis] *= (T(1.0) + Real(rm) * psi_random(iband, ibasis)); - } - } -} - -template class psi_initializer_atomic_random>; -template class psi_initializer_atomic_random>; -// gamma point calculation -template class psi_initializer_atomic_random; -template class psi_initializer_atomic_random; \ No newline at end of file diff --git a/source/source_psi/psi_initializer_atomic_random.h b/source/source_psi/psi_initializer_atomic_random.h deleted file mode 100644 index e37adc4c23..0000000000 --- a/source/source_psi/psi_initializer_atomic_random.h +++ /dev/null @@ -1,37 +0,0 @@ -#ifndef PSI_INITIALIZER_ATOMIC_RANDOM_H -#define PSI_INITIALIZER_ATOMIC_RANDOM_H -#include "source_cell/parallel_kpoints.h" -#include "source_pw/module_pwdft/VNL_in_pw.h" -#include "psi_initializer_atomic.h" - -/* -Psi (planewave based wavefunction) initializer: atomic+random -*/ -template -class psi_initializer_atomic_random : public psi_initializer_atomic -{ - private: - using Real = typename GetTypeReal::type; - - public: - psi_initializer_atomic_random() - { - this->method_ = "atomic+random"; - this->mixing_coef_ = 0.05; - } - ~psi_initializer_atomic_random(){}; - - /// @brief initialize the psi_initializer with external data and methods - virtual void initialize(const Structure_Factor*, //< structure factor - const ModulePW::PW_Basis_K*, //< planewave basis - const UnitCell*, //< unit cell - const K_Vectors*, //< kpoints - const int& = 1, //< random seed - const pseudopot_cell_vnl* = nullptr, //< nonlocal pseudopotential - const int& = 0) override; //< MPI rank - - virtual void init_psig(T* psig, const int& ik) override; - - private: -}; -#endif \ No newline at end of file diff --git a/source/source_psi/psi_initializer_file.cpp b/source/source_psi/psi_initializer_file.cpp deleted file mode 100644 index 4a6d3f871e..0000000000 --- a/source/source_psi/psi_initializer_file.cpp +++ /dev/null @@ -1,60 +0,0 @@ -#include "psi_initializer_file.h" - -#include "source_base/timer.h" -#include "source_cell/klist.h" -#include "source_io/read_wfc_pw.h" -#include "source_io/filename.h" -#include "source_io/module_parameter/parameter.h" - -template -void psi_initializer_file::initialize(const Structure_Factor* sf, - const ModulePW::PW_Basis_K* pw_wfc, - const UnitCell* p_ucell, - const K_Vectors* p_kv_in, - const int& random_seed, - const pseudopot_cell_vnl* p_pspot_nl, - const int& rank) -{ - psi_initializer::initialize(sf, pw_wfc, p_ucell, p_kv_in, random_seed, p_pspot_nl, rank); - this->nbands_start_ = PARAM.inp.nbands; - this->nbands_complem_ = 0; -} - -template -void psi_initializer_file::init_psig(T* psig, const int& ik) -{ - ModuleBase::timer::tick("psi_init_file", "init_psig"); - const int npol = PARAM.globalv.npol; - const int nbasis = this->pw_wfc_->npwk_max * npol; - const int nkstot = this->p_kv->get_nkstot(); - ModuleBase::ComplexMatrix wfcatom(this->nbands_start_, nbasis); - int ik_tot = this->p_kv->ik2iktot[ik]; - - // mohan update, this is for plane wave, 2025-05-17 - const int out_type = 2; - const bool out_app_flag = false; - const bool gamma_only = false; - const int istep = -1; - - std::string fn = ModuleIO::filename_output(PARAM.globalv.global_readin_dir,"wf","pw", - ik,this->p_kv->ik2iktot,PARAM.inp.nspin,nkstot, - out_type,out_app_flag,gamma_only,istep); - - ModuleIO::read_wfc_pw(fn, this->pw_wfc_, - GlobalV::RANK_IN_POOL, GlobalV::NPROC_IN_POOL, - PARAM.inp.nbands, PARAM.globalv.npol, - ik, ik_tot, nkstot, wfcatom); - - assert(this->nbands_start_ <= wfcatom.nr); - for (int ib = 0; ib < this->nbands_start_; ib++) - { - for (int ig = 0; ig < nbasis; ig++) - { - psig[ib * nbasis + ig] = this->template cast_to_T(wfcatom(ib, ig)); - } - } - ModuleBase::timer::tick("psi_init_file", "init_psig"); -} - -template class psi_initializer_file>; -template class psi_initializer_file>; diff --git a/source/source_psi/psi_initializer_file.h b/source/source_psi/psi_initializer_file.h deleted file mode 100644 index 115f0425c3..0000000000 --- a/source/source_psi/psi_initializer_file.h +++ /dev/null @@ -1,36 +0,0 @@ -#ifndef PSI_INITIALIZER_FILE_H -#define PSI_INITIALIZER_FILE_H - -#include "psi_initializer.h" - -/* -Psi (planewave based wavefunction) initializer: random method -*/ -template -class psi_initializer_file : public psi_initializer -{ - private: - using Real = typename GetTypeReal::type; - - public: - psi_initializer_file() - { - this->method_ = "file"; - }; - ~psi_initializer_file(){}; - - /// @brief initialize the psi_initializer with external data and methods - virtual void initialize(const Structure_Factor*, //< structure factor - const ModulePW::PW_Basis_K*, //< planewave basis - const UnitCell*, //< unit cell - const K_Vectors*, //< kpoints - const int& = 1, //< random seed - const pseudopot_cell_vnl* = nullptr, //< nonlocal pseudopotential - const int& = 0) override; //< MPI rank - - /// @brief calculate and output planewave wavefunction - /// @param ik kpoint index - /// @return initialized planewave wavefunction (psi::Psi>*) - virtual void init_psig(T* psig, const int& ik) override; -}; -#endif \ No newline at end of file diff --git a/source/source_psi/psi_initializer_nao.cpp b/source/source_psi/psi_initializer_nao.cpp deleted file mode 100644 index ff4f5667d4..0000000000 --- a/source/source_psi/psi_initializer_nao.cpp +++ /dev/null @@ -1,389 +0,0 @@ -#include "psi_initializer_nao.h" - -#include -// numerical algorithm support -#include "source_base/math_integral.h" // for numerical integration -// numerical algorithm support -#include "source_base/math_polyint.h" // for polynomial interpolation -#include "source_base/math_ylmreal.h" // for real spherical harmonics -// basic functions support -#include "source_base/timer.h" -#include "source_base/tool_quit.h" -// three global variables definition -#include "source_base/global_variable.h" -// parallel communication -#ifdef __MPI -#include "source_base/parallel_common.h" -#include "source_base/parallel_reduce.h" -#endif -#include "source_io/orb_io.h" -#include "source_io/module_parameter/parameter.h" -// GlobalV::NQX and GlobalV::DQ are here -#include "source_io/module_parameter/parameter.h" - -#include -#include - -/* -I don't know why some variables are distributed while others not... for example the orbital_files... -We need not only read and import, but also distribute here -*/ - -// free function, not needed to be a member of psi_initializer_nao -void normalize(const std::vector& r, std::vector& flz) -{ - std::vector flz2r2(r.size()); - std::transform(r.begin(), r.end(), flz.begin(), flz2r2.begin(), [](double r, double flz) { - return flz * flz * r * r; - }); - double dr = r[1] - r[0]; - double norm = ModuleBase::Integral::simpson(r.size(), flz2r2.data(), dr); - norm = sqrt(norm); - std::transform(flz.begin(), flz.end(), flz.begin(), [norm](double flz) { return flz / norm; }); -} - -template -void psi_initializer_nao::read_external_orbs(const std::string* orbital_files, const int& rank) -{ - ModuleBase::timer::tick("psi_init_nao", "read_external_orbs"); - - this->orbital_files_.resize(this->p_ucell_->ntype); - this->nr_.resize(this->p_ucell_->ntype); - this->rgrid_.resize(this->p_ucell_->ntype); - this->chi_.resize(this->p_ucell_->ntype); - -#ifdef __MPI - if (rank == 0) - { -#endif - std::copy(orbital_files, orbital_files + this->p_ucell_->ntype, this->orbital_files_.begin()); -#ifdef __MPI - } - Parallel_Common::bcast_string(this->orbital_files_.data(), this->p_ucell_->ntype); -#endif - for (int it = 0; it < this->p_ucell_->ntype; it++) - { - std::ifstream ifs_it; - bool is_open = false; - if (rank == 0) - { - ifs_it.open(PARAM.inp.orbital_dir + this->orbital_files_[it]); - is_open = ifs_it.is_open(); - } -#ifdef __MPI - Parallel_Common::bcast_bool(is_open); -#endif - if (!is_open) - { - GlobalV::ofs_warning << "psi_initializer_nao::read_orbital_files: cannot open orbital file: " - << this->orbital_files_[it] << std::endl; - ModuleBase::WARNING_QUIT("psi_initializer_nao::read_orbital_files", "cannot open orbital file."); - } - else - { - GlobalV::ofs_running << "psi_initializer_nao::read_orbital_files: reading orbital file: " - << this->orbital_files_[it] << std::endl; - } - std::string elem; // garbage value, will discard - double ecut; // garbage value, will discard - int nr; - double dr; - std::vector nzeta; - std::vector> radials; - ModuleIO::read_abacus_orb(ifs_it, elem, ecut, nr, dr, nzeta, radials, rank); - - if (rank == 0) - { - ifs_it.close(); - } - - const int nchi = std::accumulate(nzeta.begin(), nzeta.end(), 0); - // nr_ - this->nr_[it].resize(nchi); - std::for_each(this->nr_[it].begin(), this->nr_[it].end(), [nr](int& numr) { numr = nr; }); - // rgrid_ - this->rgrid_[it].resize(nchi); - std::for_each(this->rgrid_[it].begin(), this->rgrid_[it].end(), [nr, dr](std::vector& rgrid) { - rgrid.resize(nr); - std::iota(rgrid.begin(), rgrid.end(), 0); - std::for_each(rgrid.begin(), rgrid.end(), [dr](double& r) { r = r * dr; }); - }); - // chi_ - this->chi_[it].resize(nchi); - std::for_each(this->chi_[it].begin(), this->chi_[it].end(), [nr](std::vector& chi) { chi.resize(nr); }); - for (int ichi = 0; ichi < nchi; ichi++) - { - std::copy(radials[ichi].begin(), radials[ichi].end(), this->chi_[it][ichi].begin()); - } - } - ModuleBase::timer::tick("psi_init_nao", "read_external_orbs"); -} - -template -void psi_initializer_nao::allocate_ao_table() -{ - // find correct dimension for ovlp_flzjlq - int ntype = this->p_ucell_->ntype; - int lmaxmax = 0; // lmaxmax - int nzeta_max = 0; // dim3 should be the maximum number of zeta for each atomtype - for (int it = 0; it < this->p_ucell_->ntype; it++) - { - int nzeta = 0; - int lmax = this->p_ucell_->atoms[it].nwl; - lmaxmax = (lmaxmax > lmax) ? lmaxmax : lmax; - for (int l = 0; l < lmax + 1; l++) - { - nzeta += this->p_ucell_->atoms[it].l_nchi[l]; - } - nzeta_max = (nzeta > nzeta_max) ? nzeta : nzeta_max; - } - if (nzeta_max == 0) - { - ModuleBase::WARNING_QUIT("psi_initializer_nao::psi_initializer_nao", - "there is not ANY numerical atomic orbital read in present system, quit."); - } - // allocate a map (it, l, izeta) -> i, should allocate memory of ntype * lmax * nzeta_max - this->projmap_.create(ntype, lmaxmax + 1, nzeta_max); -} - -template -void psi_initializer_nao::initialize(const Structure_Factor* sf, - const ModulePW::PW_Basis_K* pw_wfc, - const UnitCell* p_ucell, - const K_Vectors* p_kv_in, - const int& random_seed, - const pseudopot_cell_vnl* p_pspot_nl, - const int& rank) -{ - ModuleBase::timer::tick("psi_init_nao", "initialize"); - - // import - psi_initializer::initialize(sf, pw_wfc, p_ucell, p_kv_in, random_seed, p_pspot_nl, rank); - - // allocate - this->allocate_ao_table(); - this->read_external_orbs(this->p_ucell_->orbital_fn.data(), rank); - - // then for generate random number to fill in the wavefunction - this->ixy2is_.clear(); - this->ixy2is_.resize(this->pw_wfc_->fftnxy); - this->pw_wfc_->getfftixy2is(this->ixy2is_.data()); - - int nbands_local = 0; - for (int it = 0; it < this->p_ucell_->ntype; it++) - { - for (int l = 0; l < this->p_ucell_->atoms[it].nwl + 1; l++) - { - /* EVERY ZETA FOR (2l+1) ORBS */ - const int nchi = this->p_ucell_->atoms[it].l_nchi[l]; - const int degen_l = (l == 0) ? 1 : 2 * l + 1; - nbands_local += nchi * degen_l * PARAM.globalv.npol * this->p_ucell_->atoms[it].na; - /* - non-rotate basis, nbands_local*=2 for PARAM.globalv.npol = 2 is enough - */ - // nbands_local += this->p_ucell_->atoms[it].l_nchi[l]*(2*l+1) * PARAM.globalv.npol; - /* - rotate basis, nbands_local*=4 for p, d, f,... orbitals, and nbands_local*=2 for s orbitals - risky when NSPIN = 4, problematic psi value, needed to be checked - */ - } - } - this->nbands_start_ = std::max(nbands_local, PARAM.inp.nbands); - this->nbands_complem_ = this->nbands_start_ - nbands_local; - - ModuleBase::timer::tick("psi_init_nao", "initialize"); -} - -template -void psi_initializer_nao::tabulate() -{ - ModuleBase::timer::tick("psi_init_nao", "tabulate"); - - // a uniformed qgrid - std::vector qgrid(PARAM.globalv.nqx); - std::iota(qgrid.begin(), qgrid.end(), 0); - std::for_each(qgrid.begin(), qgrid.end(), [this](double& q) { q = q * PARAM.globalv.dq; }); - - // only when needed, allocate memory for cubspl_ - if (this->cubspl_.get()) - { - this->cubspl_.reset(); - } - this->cubspl_ = std::unique_ptr(new ModuleBase::CubicSpline(qgrid.size(), qgrid.data())); - - // calculate the total number of radials and call reserve to allocate memory - int nchi = 0; - for (int it = 0; it < this->p_ucell_->ntype; it++) - { - for (int l = 0; l < this->p_ucell_->atoms[it].nwl + 1; l++) - { - nchi += this->p_ucell_->atoms[it].l_nchi[l]; - } - } - this->cubspl_->reserve(nchi); - ModuleBase::SphericalBesselTransformer sbt_(true); // bool: enable cache - - // tabulate the spherical bessel transform of numerical orbital function - std::vector Jlfq(PARAM.globalv.nqx, 0.0); - int i = 0; - for (int it = 0; it < this->p_ucell_->ntype; it++) - { - int ic = 0; - for (int l = 0; l < this->p_ucell_->atoms[it].nwl + 1; l++) - { - for (int izeta = 0; izeta < this->p_ucell_->atoms[it].l_nchi[l]; izeta++) - { - sbt_.direct(l, - this->nr_[it][ic], - this->rgrid_[it][ic].data(), - this->chi_[it][ic].data(), - PARAM.globalv.nqx, - qgrid.data(), - Jlfq.data()); - this->cubspl_->add(Jlfq.data()); - this->projmap_(it, l, izeta) = i++; // index it - ++ic; - } - } - } - ModuleBase::timer::tick("psi_init_nao", "tabulate"); -} - -template -void psi_initializer_nao::init_psig(T* psig, const int& ik) -{ - ModuleBase::timer::tick("psi_init_nao", "init_psig"); - assert(ik >= 0); - const int npw = this->pw_wfc_->npwk[ik]; - const int npwk_max = this->pw_wfc_->npwk_max; - const int total_lm = (this->p_ucell_->lmax + 1) * (this->p_ucell_->lmax + 1); - ModuleBase::matrix ylm(total_lm, npw); - ModuleBase::GlobalFunc::ZEROS(psig, PARAM.globalv.npol * this->nbands_start_ * npwk_max); - - std::vector> aux(npw); - std::vector qnorm(npw); - std::vector> q(npw); - -#pragma omp parallel for schedule(static, 4096 / sizeof(double)) - for (int ig = 0; ig < npw; ig++) - { - q[ig] = this->pw_wfc_->getgpluskcar(ik, ig); - qnorm[ig] = q[ig].norm() * this->p_ucell_->tpiba; - } - - ModuleBase::YlmReal::Ylm_Real(total_lm, npw, q.data(), ylm); - // int index = 0; - std::vector Jlfq(npw, 0.0); - int ibasis = 0; - for (int it = 0; it < this->p_ucell_->ntype; it++) - { - /* HERE LOOP OVER ALL TYPES */ - for (int ia = 0; ia < this->p_ucell_->atoms[it].na; ia++) - { - /* HERE LOOP OVER ALL ATOMS */ - std::complex* sk = this->sf_->get_sk(ik, it, ia, this->pw_wfc_); - int ic = 0; // ic is a flatten index of chi, therefore it is defined here. - for (int L = 0; L < this->p_ucell_->atoms[it].nwl + 1; L++) - { - std::complex lphase = pow(ModuleBase::NEG_IMAG_UNIT, L); // mohan 2010-04-19 - for (int N = 0; N < this->p_ucell_->atoms[it].l_nchi[L]; N++) - { - /* HERE LOOP OVER ALL NAOS */ - /* - for already using flattened 1d index of chi, which folds l and n, the spherical bessel - transformation of numerical orbital function, is indiced by it and ic, is needed to - interpolate everytime when ic updates, therefore everytime when present orbital is done - */ - - // use cublic spline instead of previous polynomial interpolation - this->cubspl_->eval(npw, qnorm.data(), Jlfq.data(), nullptr, nullptr, this->projmap_(it, L, N)); - - /* FOR EVERY NAO IN EACH ATOM */ - if (PARAM.inp.nspin == 4) - { - /* FOR EACH SPIN CHANNEL */ - for (int is_N = 0; is_N < 2; is_N++) // rotate base - // for(int is_N = 0; is_N < 1; is_N++) - { - if (L == 0 && is_N == 1) - { - continue; - } - else - { - const double j = fabs(double(L + is_N) - 0.5); - double alpha, gamma; - std::complex fup, fdown; - if (fabs(j - L + 0.5) < 1e-4) - { - continue; - } - alpha = this->p_ucell_->atoms[it].angle1[ia]; - gamma = -1 * this->p_ucell_->atoms[it].angle2[ia] + 0.5 * ModuleBase::PI; - for (int m = 0; m < 2 * L + 1; m++) - { - const int lm = L * L + m; -#pragma omp parallel for - for (int ig = 0; ig < npw; ig++) - { - aux[ig] = sk[ig] * ylm(lm, ig) * Jlfq[ig]; - } - -#pragma omp parallel for - for (int ig = 0; ig < npw; ig++) - { - fup = cos(0.5 * alpha) * aux[ig]; - fdown = ModuleBase::IMAG_UNIT * sin(0.5 * alpha) * aux[ig]; - // build the orthogonal wfc - // first rotation with angle (alpha + ModuleBase::PI) around (OX) - psig[ibasis * 2 * npwk_max + ig] = this->template cast_to_T( - (cos(0.5 * gamma) + ModuleBase::IMAG_UNIT * sin(0.5 * gamma)) * fup); - psig[(ibasis * 2 + 1) * npwk_max + ig] = this->template cast_to_T( - (cos(0.5 * gamma) - ModuleBase::IMAG_UNIT * sin(0.5 * gamma)) * fdown); - // second rotation with angle gamma around(OZ) - fup = cos(0.5 * (alpha + ModuleBase::PI)) * aux[ig]; - fdown = ModuleBase::IMAG_UNIT * sin(0.5 * (alpha + ModuleBase::PI)) * aux[ig]; - psig[(ibasis + 2 * L + 1) * 2 * npwk_max + ig] = this->template cast_to_T( - (cos(0.5 * gamma) + ModuleBase::IMAG_UNIT * sin(0.5 * gamma)) * fup); - psig[((ibasis + 2 * L + 1) * 2 + 1) * npwk_max + ig] = this->template cast_to_T( - (cos(0.5 * gamma) - ModuleBase::IMAG_UNIT * sin(0.5 * gamma)) * fdown); - } - ibasis++; - } - ibasis += 2 * L + 1; - } - } // end for is_N - } // end if PARAM.inp.noncolin - else - { // LSDA and nomagnet case - /* DOES NOT DISTINGUISH m QUANTUM NUMBER FOR CHI */ - for (int m = 0; m < 2 * L + 1; m++) - { - const int lm = L * L + m; -#pragma omp parallel for - for (int ig = 0; ig < npw; ig++) - { - psig[ibasis * npwk_max + ig] = this->template cast_to_T(lphase * sk[ig] * ylm(lm, ig) * Jlfq[ig]); - } - ++ibasis; - } - } - ++ic; - } // end for N - } // end for L - delete[] sk; - } // end for ia - } // end for it - /* complement the rest of bands if there are */ - if (this->nbands_complem() > 0) - { - this->random_t(psig, ibasis, this->nbands_start_, ik); - } - ModuleBase::timer::tick("psi_init_nao", "init_psig"); -} - -template class psi_initializer_nao>; -template class psi_initializer_nao>; -// gamma point calculation -template class psi_initializer_nao; -template class psi_initializer_nao; diff --git a/source/source_psi/psi_initializer_nao.h b/source/source_psi/psi_initializer_nao.h deleted file mode 100644 index b6ab4df303..0000000000 --- a/source/source_psi/psi_initializer_nao.h +++ /dev/null @@ -1,103 +0,0 @@ -#ifndef PSI_INITIALIZER_NAO_H -#define PSI_INITIALIZER_NAO_H -#include "source_base/cubic_spline.h" -#include "source_base/realarray.h" -#include "psi_initializer.h" - -#include -/* -Psi (planewave based wavefunction) initializer: numerical atomic orbital method -*/ -template -class psi_initializer_nao : public psi_initializer -{ - private: - using Real = typename GetTypeReal::type; - - public: - psi_initializer_nao() - { - this->method_ = "nao"; - }; - ~psi_initializer_nao(){}; - - virtual void init_psig(T* psig, const int& ik) override; - - /// @brief initialize the psi_initializer with external data and methods - virtual void initialize(const Structure_Factor*, //< structure factor - const ModulePW::PW_Basis_K*, //< planewave basis - const UnitCell*, //< unit cell - const K_Vectors*, //< kpoints - const int& = 1, //< random seed - const pseudopot_cell_vnl* = nullptr, //< nonlocal pseudopotential - const int& = 0) override; //< MPI rank - - void read_external_orbs(const std::string* orbital_files, const int& rank); - virtual void tabulate() override; - std::vector external_orbs() const - { - return orbital_files_; - } - std::vector> nr() const - { - return nr_; - } - std::vector nr(const int& itype) const - { - return nr_[itype]; - } - int nr(const int& itype, const int& ichi) const - { - return nr_[itype][ichi]; - } - std::vector>> chi() const - { - return chi_; - } - std::vector> chi(const int& itype) const - { - return chi_[itype]; - } - std::vector chi(const int& itype, const int& ichi) const - { - return chi_[itype][ichi]; - } - double chi(const int& itype, const int& ichi, const int& ir) const - { - return chi_[itype][ichi][ir]; - } - std::vector>> rgrid() const - { - return rgrid_; - } - std::vector> rgrid(const int& itype) const - { - return rgrid_[itype]; - } - std::vector rgrid(const int& itype, const int& ichi) const - { - return rgrid_[itype][ichi]; - } - double rgrid(const int& itype, const int& ichi, const int& ir) const - { - return rgrid_[itype][ichi][ir]; - } - - protected: - /// @brief allocate memory for overlap table - void allocate_ao_table(); - std::vector orbital_files_; - /// @brief cubic spline for interpolation - std::unique_ptr cubspl_; - /// @brief radial map, [itype][l][izeta] -> i - ModuleBase::realArray projmap_; - /// @brief number of realspace grids per type per chi, [itype][ichi] - std::vector> nr_; - /// @brief data of numerical atomic orbital per type per chi per position, [itype][ichi][ir] - std::vector>> chi_; - /// @brief r of numerical atomic orbital per type per chi per position, [itype][ichi][ir] - std::vector>> rgrid_; - /// @brief useful for atomic-like methods - ModuleBase::SphericalBesselTransformer sbt; -}; -#endif \ No newline at end of file diff --git a/source/source_psi/psi_initializer_nao_random.cpp b/source/source_psi/psi_initializer_nao_random.cpp deleted file mode 100644 index 024a94ea58..0000000000 --- a/source/source_psi/psi_initializer_nao_random.cpp +++ /dev/null @@ -1,40 +0,0 @@ -#include "psi_initializer_nao_random.h" - -#include "source_io/module_parameter/parameter.h" - -template -void psi_initializer_nao_random::initialize(const Structure_Factor* sf, - const ModulePW::PW_Basis_K* pw_wfc, - const UnitCell* p_ucell, - const K_Vectors* p_kv_in, - const int& random_seed, - const pseudopot_cell_vnl* p_pspot_nl, - const int& rank) -{ - psi_initializer_nao::initialize(sf, pw_wfc, p_ucell, p_kv_in, random_seed, p_pspot_nl, rank); -} - -template -void psi_initializer_nao_random::init_psig(T* psig, const int& ik) -{ - double rm = this->mixing_coef_; - psi_initializer_nao::init_psig(psig, ik); - const int npol = PARAM.globalv.npol; - const int nbasis = this->pw_wfc_->npwk_max * npol; - psi::Psi psi_random(1, this->nbands_start_, nbasis, nbasis, true); - psi_random.fix_k(0); - this->random_t(psi_random.get_pointer(), 0, this->nbands_start_, ik, 0); - for (int iband = 0; iband < this->nbands_start_; iband++) - { - for (int ibasis = 0; ibasis < nbasis; ibasis++) - { - psig[iband * nbasis + ibasis] *= (T(1.0) + Real(rm) * psi_random(iband, ibasis)); - } - } -} - -template class psi_initializer_nao_random>; -template class psi_initializer_nao_random>; -// gamma point calculation -template class psi_initializer_nao_random; -template class psi_initializer_nao_random; \ No newline at end of file diff --git a/source/source_psi/psi_initializer_nao_random.h b/source/source_psi/psi_initializer_nao_random.h deleted file mode 100644 index 0dd1853a13..0000000000 --- a/source/source_psi/psi_initializer_nao_random.h +++ /dev/null @@ -1,35 +0,0 @@ -#ifndef PSI_INITIALIZER_NAO_RANDOM_H -#define PSI_INITIALIZER_NAO_RANDOM_H -#include "source_cell/parallel_kpoints.h" -#include "source_pw/module_pwdft/VNL_in_pw.h" -#include "psi_initializer_nao.h" - -/* -Psi (planewave based wavefunction) initializer: numerical atomic orbital + random method -*/ -template -class psi_initializer_nao_random : public psi_initializer_nao -{ - private: - using Real = typename GetTypeReal::type; - - public: - psi_initializer_nao_random() - { - this->method_ = "nao+random"; - this->mixing_coef_ = 0.05; - }; - ~psi_initializer_nao_random(){}; - - /// @brief initialize the psi_initializer with external data and methods - virtual void initialize(const Structure_Factor*, //< structure factor - const ModulePW::PW_Basis_K*, //< planewave basis - const UnitCell*, //< unit cell - const K_Vectors*, //< kpoints - const int& = 1, //< random seed - const pseudopot_cell_vnl* = nullptr, //< nonlocal pseudopotential - const int& = 0) override; //< MPI rank - - virtual void init_psig(T* psig, const int& ik) override; -}; -#endif \ No newline at end of file diff --git a/source/source_psi/psi_initializer_random.cpp b/source/source_psi/psi_initializer_random.cpp deleted file mode 100644 index 80f9a371c4..0000000000 --- a/source/source_psi/psi_initializer_random.cpp +++ /dev/null @@ -1,39 +0,0 @@ -#include "psi_initializer_random.h" -#ifdef __MPI -#include -#endif -#include "source_base/parallel_global.h" -#include "source_base/timer.h" -#include "source_cell/parallel_kpoints.h" -#include "source_io/module_parameter/parameter.h" - -template -void psi_initializer_random::initialize(const Structure_Factor* sf, - const ModulePW::PW_Basis_K* pw_wfc, - const UnitCell* p_ucell, - const K_Vectors* p_kv_in, - const int& random_seed, - const pseudopot_cell_vnl* p_pspot_nl, - const int& rank) -{ - psi_initializer::initialize(sf, pw_wfc, p_ucell, p_kv_in, random_seed, p_pspot_nl, rank); - this->ixy2is_.clear(); - this->ixy2is_.resize(this->pw_wfc_->fftnxy); - this->pw_wfc_->getfftixy2is(this->ixy2is_.data()); - this->nbands_start_ = PARAM.inp.nbands; - this->nbands_complem_ = 0; -} - -template -void psi_initializer_random::init_psig(T* psig, const int& ik) -{ - ModuleBase::timer::tick("psi_init_random", "init_psig"); - this->random_t(psig, 0, this->nbands_start_, ik); - ModuleBase::timer::tick("psi_init_random", "init_psig"); -} - -template class psi_initializer_random>; -template class psi_initializer_random>; -// gamma point calculation -template class psi_initializer_random; -template class psi_initializer_random; diff --git a/source/source_psi/psi_initializer_random.h b/source/source_psi/psi_initializer_random.h deleted file mode 100644 index 2c9ab4a5c4..0000000000 --- a/source/source_psi/psi_initializer_random.h +++ /dev/null @@ -1,35 +0,0 @@ -#ifndef PSI_INITIALIZER_RANDOM_H -#define PSI_INITIALIZER_RANDOM_H - -#include "source_pw/module_pwdft/VNL_in_pw.h" -#include "psi_initializer.h" - -/* -Psi (planewave based wavefunction) initializer: random method -*/ -template -class psi_initializer_random : public psi_initializer -{ - private: - using Real = typename GetTypeReal::type; - - public: - psi_initializer_random() - { - this->method_ = "random"; - }; - ~psi_initializer_random(){}; - /// @brief calculate and output planewave wavefunction - /// @param ik kpoint index - /// @return initialized planewave wavefunction (psi::Psi>*) - virtual void init_psig(T* psig, const int& ik) override; - /// @brief initialize the psi_initializer with external data and methods - virtual void initialize(const Structure_Factor*, //< structure factor - const ModulePW::PW_Basis_K*, //< planewave basis - const UnitCell*, //< unit cell - const K_Vectors*, //< kpoints - const int& = 1, //< random seed - const pseudopot_cell_vnl* = nullptr, //< nonlocal pseudopotential - const int& = 0) override; //< MPI rank -}; -#endif \ No newline at end of file diff --git a/source/source_psi/psi_prepare.cpp b/source/source_psi/psi_prepare.cpp new file mode 100644 index 0000000000..e7c881c62e --- /dev/null +++ b/source/source_psi/psi_prepare.cpp @@ -0,0 +1,302 @@ +#include "psi_prepare.h" + +#include "source_base/macros.h" +#include "source_base/memory.h" +#include "source_base/parallel_device.h" +#include "source_base/timer.h" +#include "source_base/tool_quit.h" +#include "source_hsolver/diago_iter_assist.h" +#include "source_io/module_parameter/parameter.h" +#include "source_psi/psi_init_atomic.h" +#include "source_psi/psi_init_atomic_random.h" +#include "source_psi/psi_init_file.h" +#include "source_psi/psi_init_nao.h" +#include "source_psi/psi_init_nao_random.h" +#include "source_psi/psi_init_random.h" +namespace psi +{ + +template +PSIPrepare::PSIPrepare(const std::string& init_wfc_in, + const std::string& ks_solver_in, + const std::string& basis_type_in, + const int& rank_in, + const UnitCell& ucell_in, + const Structure_Factor& sf_in, + const K_Vectors& kv_in, + const pseudopot_cell_vnl& nlpp_in, + const ModulePW::PW_Basis_K& pw_wfc_in) + : ucell(ucell_in), sf(sf_in), nlpp(nlpp_in), kv(kv_in), pw_wfc(pw_wfc_in), rank(rank_in) +{ + this->init_wfc = init_wfc_in; + this->ks_solver = ks_solver_in; + this->basis_type = basis_type_in; +} + +template +void PSIPrepare::prepare_init(const int& random_seed) +{ + + // under restriction of C++11, std::unique_ptr can not be allocate via std::make_unique + // use new instead, but will cause asymmetric allocation and deallocation, in literal aspect + ModuleBase::timer::tick("PSIPrepare", "prepare_init"); + this->psi_initer.reset(); + if (this->init_wfc == "random") + { + this->psi_initer = std::unique_ptr>(new psi_init_random()); + GlobalV::ofs_running << "\n Using RANDOM starting wave functions for all " << PARAM.inp.nbands << " bands\n"; + } + else if (this->init_wfc == "file") + { + this->psi_initer = std::unique_ptr>(new psi_init_file()); + GlobalV::ofs_running << "\n Using FILE starting wave functions\n"; + } + else if ((this->init_wfc.substr(0, 6) == "atomic") && (this->ucell.natomwfc == 0)) + { + std::cout << " WARNING: init_wfc = " + this->init_wfc + + " requires atomic pseudo wavefunctions(PP_PSWFC),\n but none available." + " Automatically switch to random initialization." << std::endl; + GlobalV::ofs_running << "\n Using RANDOM starting wave functions for all " << PARAM.inp.nbands << " bands\n"; + GlobalV::ofs_running << "\n WARNING:\n init_wfc = " + this->init_wfc + " requires atomic pseudo wavefunctions(PP_PSWFC), but none available. \n" + " Automatically switch to random initialization.\n" + " Note: Random starting wavefunctions may slow down convergence.\n" + " For faster convergence, consider using:\n" + " 1) A pseudopotential file that includes atomic wavefunctions (with PP_PSWFC), or\n" + " 2) Numerical atomic orbitals with 'init_wfc = nao' or 'nao+random' if available.\n" + << std::endl; + this->psi_initer = std::unique_ptr>(new psi_init_random()); + } + else if (this->init_wfc == "atomic" + || (this->init_wfc == "atomic+random" && this->ucell.natomwfc < PARAM.inp.nbands)) + { + if (this->ucell.natomwfc < PARAM.inp.nbands) + { + int nrandom = PARAM.inp.nbands - this->ucell.natomwfc; + GlobalV::ofs_running << "\n Using ATOMIC starting wave functions with " << this->ucell.natomwfc << " atomic orbitals" + << " + " << nrandom << " random orbitals" + << " (total " << PARAM.inp.nbands << " bands)\n"; + } + else + { + GlobalV::ofs_running << "\n Using ATOMIC starting wave functions for all " << this->ucell.natomwfc << " atomic orbitals" + << " (covers " << PARAM.inp.nbands << " bands)\n"; + } + this->psi_initer = std::unique_ptr>(new psi_init_atomic()); + } + else if (this->init_wfc == "atomic+random") + { + this->psi_initer = std::unique_ptr>(new psi_init_atomic_random()); + GlobalV::ofs_running << "\n Using ATOMIC+RANDOM starting wave functions with " + << this->ucell.natomwfc << " atomic orbitals\n"; + } + else if (this->init_wfc == "nao") + { + this->psi_initer = std::unique_ptr>(new psi_init_nao()); + GlobalV::ofs_running << "\n Using NAO starting wave functions\n"; + } + else if (this->init_wfc == "nao+random") + { + this->psi_initer = std::unique_ptr>(new psi_init_nao_random()); + GlobalV::ofs_running << "\n Using NAO+RANDOM starting wave functions\n"; + } + else + { + ModuleBase::WARNING_QUIT("PSIInit::prepare_init", "for new psi initializer, init_wfc type not supported"); + } + + this->psi_initer->initialize(&sf, &pw_wfc, &ucell, &kv, random_seed, &nlpp, rank); + this->psi_initer->tabulate(); + + ModuleBase::timer::tick("PSIPrepare", "prepare_init"); +} + +template +void PSIPrepare::initialize_psi(Psi>* psi, + psi::Psi* kspw_psi, + hamilt::Hamilt* p_hamilt, + std::ofstream& ofs_running) +{ + if (kspw_psi->get_nbands() == 0 || (!PARAM.globalv.ks_run)) + { + return; + } + if (this->basis_type == "lcao_in_pw") + { + return; + } + ModuleBase::timer::tick("PSIPrepare", "initialize_psi"); + + const int nbands_start = this->psi_initer->nbands_start(); + const int nbands_l = psi->get_nbands(); + const int nbasis = psi->get_nbasis(); + const bool not_equal = (nbands_start != nbands_l); + + Psi* psi_cpu = reinterpret_cast*>(psi); + Psi* psi_device = kspw_psi; + + bool fill = PARAM.inp.ks_solver != "bpcg" || GlobalV::MY_BNDGROUP == 0; + if (fill) + { + if (not_equal) + { + psi_cpu = new Psi(1, nbands_start, nbasis, nbasis, true); + psi_device = PARAM.inp.device == "gpu" ? new psi::Psi(psi_cpu[0]) + : reinterpret_cast*>(psi_cpu); + } + else if (PARAM.inp.precision == "single") + { + if (PARAM.inp.device == "cpu") + { + psi_cpu = reinterpret_cast*>(kspw_psi); + psi_device = kspw_psi; + } + else + { + psi_cpu = new Psi(1, nbands_start, nbasis, nbasis, true); + psi_device = kspw_psi; + } + } + } + + // loop over kpoints, make it possible to only allocate memory for psig at the only one kpt + // like (1, nbands, npwx), in which npwx is the maximal npw of all kpoints + for (int ik = 0; ik < this->pw_wfc.nks; ik++) + { + if(PARAM.inp.use_k_continuity && ik > 0) continue; + //! Fix the wavefunction to initialize at given kpoint + psi->fix_k(ik); + kspw_psi->fix_k(ik); + + //! Update Hamiltonian from other kpoint to the given one + p_hamilt->updateHk(ik); + if (fill) + { + //! initialize psi_cpu + this->psi_initer->init_psig(psi_cpu->get_pointer(), ik); + if (psi_device->get_pointer() != psi_cpu->get_pointer()) + { + syncmem_h2d_op()(psi_device->get_pointer(), psi_cpu->get_pointer(), nbands_start * nbasis); + } + + + if (this->ks_solver == "cg") + { + std::vector::type> etatom(nbands_start, 0.0); + if (not_equal) + { + // for diagH_subspace_init, psi_device->get_pointer() and kspw_psi->get_pointer() should be + // different + hsolver::DiagoIterAssist::diag_subspace_init(p_hamilt, + psi_device->get_pointer(), + nbands_start, + nbasis, + *(kspw_psi), + etatom.data()); + } + else + { + // for diagH_subspace, psi_device->get_pointer() and kspw_psi->get_pointer() can be the same + hsolver::DiagoIterAssist::diag_subspace(p_hamilt, + *psi_device, + *kspw_psi, + etatom.data(), + nbands_start); + } + } + else // dav, bpcg + { + if (psi_device->get_pointer() != kspw_psi->get_pointer()) + { + syncmem_complex_op()(kspw_psi->get_pointer(), psi_device->get_pointer(), nbands_l * nbasis); + } + } + } +#ifdef __MPI + if (PARAM.inp.ks_solver == "bpcg" && PARAM.inp.bndpar > 1) + { + std::vector sendcounts(PARAM.inp.bndpar); + std::vector displs(PARAM.inp.bndpar); + MPI_Allgather(&nbands_l, 1, MPI_INT, sendcounts.data(), 1, MPI_INT, BP_WORLD); + displs[0] = 0; + sendcounts[0] *= nbasis; + for (int i = 1; i < PARAM.inp.bndpar; i++) + { + sendcounts[i] *= nbasis; + displs[i] = displs[i - 1] + sendcounts[i - 1]; + } + if (GlobalV::MY_BNDGROUP == 0) + { + for (int ip = 1; ip < PARAM.inp.bndpar; ++ip) + { + Parallel_Common::send_data(psi_cpu->get_pointer() + displs[ip], sendcounts[ip], ip, 0, BP_WORLD); + } + } + else + { + MPI_Status status; + Parallel_Common::recv_dev(kspw_psi->get_pointer(), nbands_l * nbasis, 0, 0, BP_WORLD, &status); + } + } +#endif + } // end k-point loop + + if (fill) + { + if (not_equal) + { + delete psi_cpu; + if (PARAM.inp.device == "gpu") + { + delete psi_device; + } + } + else if (PARAM.inp.precision == "single" && PARAM.inp.device == "gpu") + { + delete psi_cpu; + } + } + + ModuleBase::timer::tick("PSIPrepare", "initialize_psi"); +} + +template +void PSIPrepare::initialize_lcao_in_pw(Psi* psi_local, std::ofstream& ofs_running) +{ + ofs_running << " START WAVEFUNCTION: LCAO_IN_PW, psi initialization skipped " << std::endl; + assert(this->psi_initer->method() == "nao"); + for (int ik = 0; ik < this->pw_wfc.nks; ik++) + { + psi_local->fix_k(ik); + this->psi_initer->init_psig(psi_local->get_pointer(), ik); + } +} + +void allocate_psi(Psi>*& psi, + const int& nks, + const std::vector& ngk, + const int& nbands, + const int& npwx) +{ + assert(npwx > 0); + assert(nks > 0); + ModuleBase::GlobalFunc::OUT(GlobalV::ofs_running, "npwx", npwx); + + delete psi; + int nks2 = nks; + if (PARAM.inp.calculation == "nscf" && PARAM.inp.mem_saver == 1) + { + nks2 = 1; + } + psi = new psi::Psi>(nks2, nbands, npwx * PARAM.globalv.npol, ngk, true); + const size_t memory_cost = sizeof(std::complex) * nks2 * nbands * (PARAM.globalv.npol * npwx); + std::cout << " MEMORY FOR PSI (MB) : " << static_cast(memory_cost) / 1024.0 / 1024.0 << std::endl; + ModuleBase::Memory::record("Psi_PW", memory_cost); +} + +template class PSIPrepare, base_device::DEVICE_CPU>; +template class PSIPrepare, base_device::DEVICE_CPU>; +#if ((defined __CUDA) || (defined __ROCM)) +template class PSIPrepare, base_device::DEVICE_GPU>; +template class PSIPrepare, base_device::DEVICE_GPU>; +#endif +} // namespace psi diff --git a/source/source_psi/psi_prepare.h b/source/source_psi/psi_prepare.h new file mode 100644 index 0000000000..4b35f54521 --- /dev/null +++ b/source/source_psi/psi_prepare.h @@ -0,0 +1,93 @@ +#ifndef PSI_PREPARE_H +#define PSI_PREPARE_H +#include "source_hamilt/hamilt.h" +#include "source_psi/psi_initializer.h" +#include "source_psi/psi_prepare_base.h" + +namespace psi +{ + +// This class is used to prepare the wavefunction +template +class PSIPrepare : public PSIPrepareBase +{ + public: + PSIPrepare(const std::string& init_wfc_in, + const std::string& ks_solver_in, + const std::string& basis_type_in, + const int& rank, + const UnitCell& ucell, + const Structure_Factor& sf, + const K_Vectors& kv_in, + const pseudopot_cell_vnl& nlpp, + const ModulePW::PW_Basis_K& pw_wfc); + ~PSIPrepare(){}; + + ///@brief prepare the wavefunction initialization + void prepare_init(const int& random_seed); + + //------------------------ only for psi_initializer -------------------- + /** + * @brief initialize the wavefunction + * + * @param psi store the wavefunction + * @param p_hamilt Hamiltonian operator + * @param ofs_running output stream for running information + * @param is_already_initpsi whether psi has been initialized + */ + void initialize_psi(Psi>* psi, + psi::Psi* kspw_psi, + hamilt::Hamilt* p_hamilt, + std::ofstream& ofs_running); + + /** + * @brief initialize NAOs in plane wave basis, only for LCAO_IN_PW + * + */ + void initialize_lcao_in_pw(Psi* psi_local, std::ofstream& ofs_running); + + // psi_initializer* psi_initer = nullptr; + // change to use smart pointer to manage the memory, and avoid memory leak + // while the std::make_unique() is not supported till C++14, + // so use the new and std::unique_ptr to manage the memory, but this makes new-delete not symmetric + std::unique_ptr> psi_initer; + + private: + // wavefunction initialization type + std::string init_wfc = "none"; + + // Kohn-Sham solver type + std::string ks_solver = "none"; + + // basis type + std::string basis_type = "none"; + + // pw basis + const ModulePW::PW_Basis_K& pw_wfc; + + // parallel kpoints + const K_Vectors& kv; + + // unit cell + const UnitCell& ucell; + + // structure factor + const Structure_Factor& sf; + + // nonlocal pseudopotential + const pseudopot_cell_vnl& nlpp; + + Device* ctx = {}; ///< device + base_device::DEVICE_CPU* cpu_ctx = {}; ///< CPU device + const int rank; ///< MPI rank + + //-------------------------OP-------------------------------------------- + using syncmem_complex_op = base_device::memory::synchronize_memory_op; + using syncmem_h2d_op = base_device::memory::synchronize_memory_op; +}; + +///@brief allocate the wavefunction +void allocate_psi(Psi>*& psi, const int& nks, const std::vector& ngk, const int& nbands, const int& npwx); + +} // namespace psi +#endif \ No newline at end of file diff --git a/source/source_psi/psi_prepare_base.h b/source/source_psi/psi_prepare_base.h new file mode 100644 index 0000000000..13b8716d8e --- /dev/null +++ b/source/source_psi/psi_prepare_base.h @@ -0,0 +1,23 @@ +#ifndef PSI_PREPARE_BASE_H +#define PSI_PREPARE_BASE_H + +namespace psi +{ + +/** + * @brief Base class for PSIPrepare without template parameters. + * + * This class provides a non-template base class for PSIPrepare, + * allowing Setup_Psi_pw to store a base class pointer instead of a template pointer. + * This is part of the gradual refactoring to remove template parameters from Setup_Psi_pw. + */ +class PSIPrepareBase +{ + public: + PSIPrepareBase() = default; + virtual ~PSIPrepareBase() = default; +}; + +} // namespace psi + +#endif diff --git a/source/source_psi/setup_psi.cpp b/source/source_psi/setup_psi.cpp new file mode 100644 index 0000000000..ba658a02de --- /dev/null +++ b/source/source_psi/setup_psi.cpp @@ -0,0 +1,62 @@ +#include "source_psi/setup_psi.h" +#include "source_io/module_parameter/parameter.h" // use parameter + +template +Setup_Psi::Setup_Psi(){} + +template +Setup_Psi::~Setup_Psi(){} + +// the size of psi may change during scf (in the future we can support such +// calculations: first SZP or DZ, and then DZP calculations. +// In that case, psi may change its size multiple times during SCF +template +void Setup_Psi::allocate_psi( + psi::Psi* &psi, + const K_Vectors &kv, + const Parallel_Orbitals ¶_orb, + const Input_para &inp) +{ + // init electronic wave function psi + if (psi == nullptr) + { + int nsk = 0; + int ncol = 0; + if (PARAM.globalv.gamma_only_local) + { + nsk = inp.nspin; + ncol = para_orb.ncol_bands; + if (inp.ks_solver == "genelpa" || inp.ks_solver == "elpa" || inp.ks_solver == "lapack" + || inp.ks_solver == "pexsi" || inp.ks_solver == "cusolver" + || inp.ks_solver == "cusolvermp") + { + ncol = para_orb.ncol; + } + } + else + { + nsk = kv.get_nks(); +#ifdef __MPI + ncol = para_orb.ncol_bands; +#else + ncol = inp.nbands; +#endif + } + psi = new psi::Psi(nsk, ncol, para_orb.nrow, kv.ngk, true); + } +} + + +template +void Setup_Psi::deallocate_psi(psi::Psi* &psi) +{ + if(psi!=nullptr) + { + delete psi; + } +} + +template class Setup_Psi; +template class Setup_Psi>; +template class Setup_Psi; +template class Setup_Psi>; diff --git a/source/source_psi/setup_psi.h b/source/source_psi/setup_psi.h new file mode 100644 index 0000000000..a4c0f11d3e --- /dev/null +++ b/source/source_psi/setup_psi.h @@ -0,0 +1,28 @@ +#ifndef SETUP_PSI_H +#define SETUP_PSI_H + +#include "source_psi/psi_prepare.h" +#include "source_cell/klist.h" +#include "source_io/module_parameter/input_parameter.h" +#include "source_basis/module_ao/parallel_orbitals.h" // use para_orb + +template +class Setup_Psi +{ + public: + + Setup_Psi(); + ~Setup_Psi(); + + static void allocate_psi( + psi::Psi* &psi, + const K_Vectors &kv, + const Parallel_Orbitals ¶_orb, + const Input_para &inp); + + static void deallocate_psi(psi::Psi* &psi); + +}; + + +#endif diff --git a/source/source_psi/setup_psi_pw.cpp b/source/source_psi/setup_psi_pw.cpp new file mode 100644 index 0000000000..f5bc240292 --- /dev/null +++ b/source/source_psi/setup_psi_pw.cpp @@ -0,0 +1,339 @@ +#include "source_psi/setup_psi_pw.h" +#include "source_io/module_parameter/parameter.h" // use parameter + +Setup_Psi_pw::Setup_Psi_pw(){} + +Setup_Psi_pw::~Setup_Psi_pw(){} + +template +void Setup_Psi_pw::before_runner_impl( + const UnitCell &ucell, + const K_Vectors &kv, + const Structure_Factor &sf, + const ModulePW::PW_Basis_K &pw_wfc, + const pseudopot_cell_vnl &ppcell, + const Input_para &inp) +{ + this->p_psi_init = new psi::PSIPrepare(inp.init_wfc, + inp.ks_solver, inp.basis_type, GlobalV::MY_RANK, ucell, + sf, kv, ppcell, pw_wfc); + + allocate_psi(this->psi_cpu, kv.get_nks(), kv.ngk, PARAM.globalv.nbands_l, pw_wfc.npwk_max); + + auto* p_psi_init = static_cast*>(this->p_psi_init); + p_psi_init->prepare_init(inp.pw_seed); + + if (std::is_same::value) { + precision_type_ = PrecisionType::Float; + } else if (std::is_same::value) { + precision_type_ = PrecisionType::Double; + } else if (std::is_same>::value) { + precision_type_ = PrecisionType::ComplexFloat; + } else { + precision_type_ = PrecisionType::ComplexDouble; + } + + if (std::is_same::value) { + device_type_ = base_device::GpuDevice; + } else { + device_type_ = base_device::CpuDevice; + } + + if (inp.device == "gpu" || inp.precision == "single") { + this->psi_t = static_cast(new psi::Psi(this->psi_cpu[0])); + } else { + this->psi_t = static_cast(reinterpret_cast*>(this->psi_cpu)); + } +} + +void Setup_Psi_pw::before_runner( + const UnitCell &ucell, + const K_Vectors &kv, + const Structure_Factor &sf, + const ModulePW::PW_Basis_K &pw_wfc, + const pseudopot_cell_vnl &ppcell, + const Input_para &inp) +{ + const bool is_gpu = (inp.device == "gpu"); + const bool is_single = (inp.precision == "single"); + +#if ((defined __CUDA) || (defined __ROCM)) + if (is_gpu) { + if (is_single) { + before_runner_impl, base_device::DEVICE_GPU>( + ucell, kv, sf, pw_wfc, ppcell, inp); + } else { + before_runner_impl, base_device::DEVICE_GPU>( + ucell, kv, sf, pw_wfc, ppcell, inp); + } + } else +#endif + { + if (is_single) { + before_runner_impl, base_device::DEVICE_CPU>( + ucell, kv, sf, pw_wfc, ppcell, inp); + } else { + before_runner_impl, base_device::DEVICE_CPU>( + ucell, kv, sf, pw_wfc, ppcell, inp); + } + } +} + + +template +void Setup_Psi_pw::update_psi_d_impl() +{ + if (this->psi_d != nullptr && this->precision_type_ == PrecisionType::ComplexFloat) + { + delete this->get_psi_d(); + } + + // Refresh this->psi_d + if (this->precision_type_ == PrecisionType::ComplexFloat) { + this->psi_d = static_cast(new psi::Psi, Device>(*this->get_psi_t())); + } else { + this->psi_d = static_cast(reinterpret_cast, Device>*>(this->psi_t)); + } +} + +void Setup_Psi_pw::update_psi_d() +{ +#if ((defined __CUDA) || (defined __ROCM)) + if (this->device_type_ == base_device::GpuDevice) + { + if (this->precision_type_ == PrecisionType::ComplexFloat) + { + update_psi_d_impl, base_device::DEVICE_GPU>(); + } + else + { + update_psi_d_impl, base_device::DEVICE_GPU>(); + } + } + else +#endif + { + if (this->precision_type_ == PrecisionType::ComplexFloat) + { + update_psi_d_impl, base_device::DEVICE_CPU>(); + } + else + { + update_psi_d_impl, base_device::DEVICE_CPU>(); + } + } +} + +template +void Setup_Psi_pw::init_impl(hamilt::Hamilt* p_hamilt) +{ + if (!this->already_initpsi) + { + auto* p_psi_init = static_cast*>(this->p_psi_init); + p_psi_init->initialize_psi(this->psi_cpu, this->get_psi_t(), p_hamilt, GlobalV::ofs_running); + this->already_initpsi = true; + } +} + +void Setup_Psi_pw::init(hamilt::HamiltBase* p_hamilt) +{ + if (this->already_initpsi) + { + return; + } + +#if ((defined __CUDA) || (defined __ROCM)) + if (this->device_type_ == base_device::GpuDevice) + { + if (this->precision_type_ == PrecisionType::ComplexFloat) + { + init_impl, base_device::DEVICE_GPU>( + static_cast, base_device::DEVICE_GPU>*>(p_hamilt)); + } + else + { + init_impl, base_device::DEVICE_GPU>( + static_cast, base_device::DEVICE_GPU>*>(p_hamilt)); + } + } + else +#endif + { + if (this->precision_type_ == PrecisionType::ComplexFloat) + { + init_impl, base_device::DEVICE_CPU>( + static_cast, base_device::DEVICE_CPU>*>(p_hamilt)); + } + else + { + init_impl, base_device::DEVICE_CPU>( + static_cast, base_device::DEVICE_CPU>*>(p_hamilt)); + } + } +} + + +// Transfer data from GPU to CPU in pw basis +template +void Setup_Psi_pw::copy_d2h_impl() +{ + auto* psi_t = this->get_psi_t(); + this->castmem_d2h_impl(this->psi_cpu[0].get_pointer() - this->psi_cpu[0].get_psi_bias(), + psi_t->get_pointer() - psi_t->get_psi_bias(), + this->psi_cpu[0].size()); +} + +void Setup_Psi_pw::copy_d2h() +{ + if (this->device_type_ != base_device::GpuDevice) + { + return; + } + +#if ((defined __CUDA) || (defined __ROCM)) + if (this->precision_type_ == PrecisionType::ComplexFloat) + { + copy_d2h_impl, base_device::DEVICE_GPU>(); + } + else + { + copy_d2h_impl, base_device::DEVICE_GPU>(); + } +#endif +} + +template +void Setup_Psi_pw::castmem_d2h_impl(std::complex* dst, const std::complex* src, const size_t size) +{ + base_device::memory::cast_memory_op, std::complex, base_device::DEVICE_CPU, Device>()(dst, src, size); +} + +template +void Setup_Psi_pw::castmem_d2h_impl(std::complex* dst, const std::complex* src, const size_t size) +{ + base_device::memory::cast_memory_op, std::complex, base_device::DEVICE_CPU, Device>()(dst, src, size); +} + +template +void Setup_Psi_pw::clean_impl() +{ + if (this->device_type_ == base_device::GpuDevice || this->precision_type_ == PrecisionType::ComplexFloat) + { + delete this->get_psi_t(); + } + if (this->precision_type_ == PrecisionType::ComplexFloat) + { + delete this->get_psi_d(); + } + + delete this->psi_cpu; + delete this->p_psi_init; +} + +void Setup_Psi_pw::clean() +{ +#if ((defined __CUDA) || (defined __ROCM)) + if (this->device_type_ == base_device::GpuDevice) + { + if (this->precision_type_ == PrecisionType::ComplexFloat) + { + clean_impl, base_device::DEVICE_GPU>(); + } + else + { + clean_impl, base_device::DEVICE_GPU>(); + } + } + else +#endif + { + if (this->precision_type_ == PrecisionType::ComplexFloat) + { + clean_impl, base_device::DEVICE_CPU>(); + } + else + { + clean_impl, base_device::DEVICE_CPU>(); + } + } +} + +template class psi::PSIPrepare, base_device::DEVICE_CPU>; +template class psi::PSIPrepare, base_device::DEVICE_CPU>; + +template void Setup_Psi_pw::before_runner_impl, base_device::DEVICE_CPU>( + const UnitCell&, const K_Vectors&, const Structure_Factor&, + const ModulePW::PW_Basis_K&, const pseudopot_cell_vnl&, const Input_para&); + +template void Setup_Psi_pw::before_runner_impl, base_device::DEVICE_CPU>( + const UnitCell&, const K_Vectors&, const Structure_Factor&, + const ModulePW::PW_Basis_K&, const pseudopot_cell_vnl&, const Input_para&); + +template void Setup_Psi_pw::init_impl, base_device::DEVICE_CPU>( + hamilt::Hamilt, base_device::DEVICE_CPU>*); + +template void Setup_Psi_pw::init_impl, base_device::DEVICE_CPU>( + hamilt::Hamilt, base_device::DEVICE_CPU>*); + +template void Setup_Psi_pw::update_psi_d_impl, base_device::DEVICE_CPU>(); + +template void Setup_Psi_pw::update_psi_d_impl, base_device::DEVICE_CPU>(); + +template void Setup_Psi_pw::clean_impl, base_device::DEVICE_CPU>(); + +template void Setup_Psi_pw::clean_impl, base_device::DEVICE_CPU>(); + +template void Setup_Psi_pw::castmem_d2h_impl, base_device::DEVICE_CPU>( + std::complex*, const std::complex*, const size_t); + +template void Setup_Psi_pw::castmem_d2h_impl, base_device::DEVICE_CPU>( + std::complex*, const std::complex*, const size_t); + +template void Setup_Psi_pw::castmem_d2h_impl, base_device::DEVICE_CPU>( + std::complex*, const std::complex*, const size_t); + +template void Setup_Psi_pw::castmem_d2h_impl, base_device::DEVICE_CPU>( + std::complex*, const std::complex*, const size_t); + +#if ((defined __CUDA) || (defined __ROCM)) +template class psi::PSIPrepare, base_device::DEVICE_GPU>; +template class psi::PSIPrepare, base_device::DEVICE_GPU>; + +template void Setup_Psi_pw::before_runner_impl, base_device::DEVICE_GPU>( + const UnitCell&, const K_Vectors&, const Structure_Factor&, + const ModulePW::PW_Basis_K&, const pseudopot_cell_vnl&, const Input_para&); + +template void Setup_Psi_pw::before_runner_impl, base_device::DEVICE_GPU>( + const UnitCell&, const K_Vectors&, const Structure_Factor&, + const ModulePW::PW_Basis_K&, const pseudopot_cell_vnl&, const Input_para&); + +template void Setup_Psi_pw::init_impl, base_device::DEVICE_GPU>( + hamilt::Hamilt, base_device::DEVICE_GPU>*); + +template void Setup_Psi_pw::init_impl, base_device::DEVICE_GPU>( + hamilt::Hamilt, base_device::DEVICE_GPU>*); + +template void Setup_Psi_pw::update_psi_d_impl, base_device::DEVICE_GPU>(); + +template void Setup_Psi_pw::update_psi_d_impl, base_device::DEVICE_GPU>(); + +template void Setup_Psi_pw::copy_d2h_impl, base_device::DEVICE_GPU>(); + +template void Setup_Psi_pw::copy_d2h_impl, base_device::DEVICE_GPU>(); + +template void Setup_Psi_pw::clean_impl, base_device::DEVICE_GPU>(); + +template void Setup_Psi_pw::clean_impl, base_device::DEVICE_GPU>(); + +template void Setup_Psi_pw::castmem_d2h_impl, base_device::DEVICE_GPU>( + std::complex*, const std::complex*, const size_t); + +template void Setup_Psi_pw::castmem_d2h_impl, base_device::DEVICE_GPU>( + std::complex*, const std::complex*, const size_t); + +template void Setup_Psi_pw::castmem_d2h_impl, base_device::DEVICE_GPU>( + std::complex*, const std::complex*, const size_t); + +template void Setup_Psi_pw::castmem_d2h_impl, base_device::DEVICE_GPU>( + std::complex*, const std::complex*, const size_t); +#endif diff --git a/source/source_psi/setup_psi_pw.h b/source/source_psi/setup_psi_pw.h new file mode 100644 index 0000000000..88e9d42bf1 --- /dev/null +++ b/source/source_psi/setup_psi_pw.h @@ -0,0 +1,153 @@ +#ifndef SETUP_PSI_PW_H +#define SETUP_PSI_PW_H + +#include "source_psi/psi_prepare.h" +#include "source_cell/unitcell.h" +#include "source_cell/klist.h" +#include "source_pw/module_pwdft/structure_factor.h" +#include "source_basis/module_pw/pw_basis_k.h" +#include "source_pw/module_pwdft/vnl_pw.h" +#include "source_io/module_parameter/input_parameter.h" +#include "source_base/module_device/device.h" +#include "source_hamilt/hamilt.h" + +class Setup_Psi_pw +{ + public: + + Setup_Psi_pw(); + ~Setup_Psi_pw(); + + //------------ + // public types + //------------ + + // Precision type: 0 = float, 1 = double, 2 = complex, 3 = complex + enum class PrecisionType { + Float = 0, + Double = 1, + ComplexFloat = 2, + ComplexDouble = 3 + }; + + //------------ + // variables + // psi_cpu, complex on cpu + //------------ + + // originally, this term is psi + // for PW, we have psi_cpu + psi::Psi, base_device::DEVICE_CPU>* psi_cpu = nullptr; + + // psi_initializer controller + psi::PSIPrepareBase* p_psi_init = nullptr; + + //------------ + // functions + //------------ + + void before_runner( + const UnitCell &ucell, + const K_Vectors &kv, + const Structure_Factor &sf, + const ModulePW::PW_Basis_K &pw_wfc, + const pseudopot_cell_vnl &ppcell, + const Input_para &inp); + + void init(hamilt::HamiltBase* p_hamilt); + + void update_psi_d(); + + // Transfer data from device to host in pw basis + void copy_d2h(); + + void clean(); + + //------------ + // accessor functions + //------------ + + // Get basic information (no type conversion needed, use psi_cpu) + int get_nbands() const { return this->psi_cpu->get_nbands(); } + int get_nk() const { return this->psi_cpu->get_nk(); } + int get_nbasis() const { return this->psi_cpu->get_nbasis(); } + size_t size() const { return this->psi_cpu->size(); } + + // Get runtime type information + base_device::AbacusDevice_t get_device_type() const { return device_type_; } + PrecisionType get_precision_type() const { return precision_type_; } + + // Get psi_t pointer (template version, for backward compatibility) + template + psi::Psi* get_psi_t() { return static_cast*>(psi_t); } + + template + const psi::Psi* get_psi_t() const { return static_cast*>(psi_t); } + + // Get psi_d pointer (template version, for backward compatibility) + template + psi::Psi, Device>* get_psi_d() { + return static_cast, Device>*>(psi_d); + } + + template + const psi::Psi, Device>* get_psi_d() const { + return static_cast, Device>*>(psi_d); + } + + private: + + //------------ + // private variables + //------------ + + // originally, this term is kspw_psi + // if CPU, kspw_psi = psi, otherwise, kspw_psi has a new copy + void* psi_t = nullptr; // Use void* to store pointer, runtime type information records actual type + + // originally, this term is __kspw_psi + void* psi_d = nullptr; // Use void* to store pointer, runtime type information records actual type + + bool already_initpsi = false; + + //------------ + // runtime type information + //------------ + base_device::AbacusDevice_t device_type_ = base_device::CpuDevice; + PrecisionType precision_type_ = PrecisionType::ComplexDouble; + + //------------ + // private functions + //------------ + + template + void before_runner_impl( + const UnitCell &ucell, + const K_Vectors &kv, + const Structure_Factor &sf, + const ModulePW::PW_Basis_K &pw_wfc, + const pseudopot_cell_vnl &ppcell, + const Input_para &inp); + + template + void init_impl(hamilt::Hamilt* p_hamilt); + + template + void update_psi_d_impl(); + + template + void clean_impl(); + + template + void copy_d2h_impl(); + + template + void castmem_d2h_impl(std::complex* dst, const std::complex* src, const size_t size); + + template + void castmem_d2h_impl(std::complex* dst, const std::complex* src, const size_t size); + +}; + + +#endif diff --git a/source/source_psi/test/CMakeLists.txt b/source/source_psi/test/CMakeLists.txt index 196b1ed47c..e0e292da26 100644 --- a/source/source_psi/test/CMakeLists.txt +++ b/source/source_psi/test/CMakeLists.txt @@ -1,5 +1,5 @@ AddTest( - TARGET source_psi_Unittests + TARGET MODULE_PSI_Unittests LIBS parameter ${math_libs} base device SOURCES psi_test.cpp @@ -8,7 +8,7 @@ AddTest( if(ENABLE_LCAO) AddTest( - TARGET source_psi_initializer_unit_test + TARGET MODULE_PSI_initializer_unit_test LIBS parameter ${math_libs} base device psi psi_initializer planewave SOURCES psi_initializer_unit_test.cpp @@ -16,11 +16,11 @@ AddTest( ../../source_cell/atom_spec.cpp ../../source_cell/parallel_kpoints.cpp ../../source_cell/test/support/mock_unitcell.cpp - ../../source_io/orb_io.cpp - ../../source_io/write_pao.cpp - ../../source_io/read_wfc_pw.cpp - ../../source_io/binstream.cpp - ../../source_io/filename.cpp + ../../source_io/module_output/orb_io.cpp + ../../source_io/module_output/write_pao.cpp + ../../source_io/module_wf/read_wfc_pw.cpp + ../../source_io/module_output/binstream.cpp + ../../source_io/module_output/filename.cpp ) endif() diff --git a/source/source_psi/test/psi_initializer_unit_test.cpp b/source/source_psi/test/psi_initializer_unit_test.cpp index 44d3a6eb9c..3ae38cbc21 100644 --- a/source/source_psi/test/psi_initializer_unit_test.cpp +++ b/source/source_psi/test/psi_initializer_unit_test.cpp @@ -3,12 +3,12 @@ #include "source_io/module_parameter/parameter.h" #undef private #include "../psi_initializer.h" -#include "../psi_initializer_atomic.h" -#include "../psi_initializer_atomic_random.h" -#include "../psi_initializer_nao.h" -#include "../psi_initializer_nao_random.h" -#include "../psi_initializer_random.h" -#include "source_pw/module_pwdft/VL_in_pw.h" +#include "../psi_init_atomic.h" +#include "../psi_init_atomic_random.h" +#include "../psi_init_nao.h" +#include "../psi_init_nao_random.h" +#include "../psi_init_random.h" +#include "source_pw/module_pwdft/vl_pw.h" #include "source_cell/klist.h" /* @@ -80,7 +80,7 @@ InfoNonlocal::~InfoNonlocal() {} #endif Structure_Factor::Structure_Factor() {} Structure_Factor::~Structure_Factor() {} -void Structure_Factor::setup_structure_factor(const UnitCell* Ucell, const Parallel_Grid&, const ModulePW::PW_Basis* rho_basis) {} +void Structure_Factor::setup(const UnitCell* Ucell, const Parallel_Grid&, const ModulePW::PW_Basis* rho_basis) {} std::complex* Structure_Factor::get_sk(int ik, int it, int ia, ModulePW::PW_Basis_K const*wfc_basis) const { int npw = wfc_basis->npwk[ik]; @@ -272,32 +272,32 @@ class PsiIntializerUnitTest : public ::testing::Test { }; TEST_F(PsiIntializerUnitTest, ConstructorRandom) { - this->psi_init = new psi_initializer_random>(); + this->psi_init = new psi_init_random>(); EXPECT_EQ("random", this->psi_init->method()); } TEST_F(PsiIntializerUnitTest, ConstructorAtomic) { - this->psi_init = new psi_initializer_atomic>(); + this->psi_init = new psi_init_atomic>(); EXPECT_EQ("atomic", this->psi_init->method()); } TEST_F(PsiIntializerUnitTest, ConstructorAtomicRandom) { - this->psi_init = new psi_initializer_atomic_random>(); + this->psi_init = new psi_init_atomic_random>(); EXPECT_EQ("atomic+random", this->psi_init->method()); } TEST_F(PsiIntializerUnitTest, ConstructorNao) { - this->psi_init = new psi_initializer_nao>(); + this->psi_init = new psi_init_nao>(); EXPECT_EQ("nao", this->psi_init->method()); } TEST_F(PsiIntializerUnitTest, ConstructorNaoRandom) { - this->psi_init = new psi_initializer_nao_random>(); + this->psi_init = new psi_init_nao_random>(); EXPECT_EQ("nao+random", this->psi_init->method()); } TEST_F(PsiIntializerUnitTest, CastToT) { - this->psi_init = new psi_initializer_random>(); + this->psi_init = new psi_init_random>(); std::complex cd = {1.0, 2.0}; std::complex cf = {1.0, 2.0}; double d = 1.0; @@ -310,7 +310,7 @@ TEST_F(PsiIntializerUnitTest, CastToT) { TEST_F(PsiIntializerUnitTest, CalPsigRandom) { PARAM.input.init_wfc = "random"; - this->psi_init = new psi_initializer_random>(); + this->psi_init = new psi_init_random>(); this->psi_init->initialize(this->p_sf, this->p_pw_wfc, this->p_ucell, @@ -329,7 +329,7 @@ TEST_F(PsiIntializerUnitTest, CalPsigRandom) { TEST_F(PsiIntializerUnitTest, CalPsigAtomic) { PARAM.input.init_wfc = "atomic"; - this->psi_init = new psi_initializer_atomic>(); + this->psi_init = new psi_init_atomic>(); this->psi_init->initialize(this->p_sf, this->p_pw_wfc, this->p_ucell, @@ -352,7 +352,7 @@ TEST_F(PsiIntializerUnitTest, CalPsigAtomicSoc) { PARAM.sys.npol = 2; this->p_ucell->atoms[0].ncpp.has_so = false; this->p_ucell->natomwfc *= 2; - this->psi_init = new psi_initializer_atomic>(); + this->psi_init = new psi_init_atomic>(); this->psi_init->initialize(this->p_sf, this->p_pw_wfc, this->p_ucell, @@ -379,7 +379,7 @@ TEST_F(PsiIntializerUnitTest, CalPsigAtomicSocHasSo) { PARAM.sys.npol = 2; this->p_ucell->atoms[0].ncpp.has_so = true; this->p_ucell->natomwfc *= 2; - this->psi_init = new psi_initializer_atomic>(); + this->psi_init = new psi_init_atomic>(); this->psi_init->initialize(this->p_sf, this->p_pw_wfc, this->p_ucell, @@ -402,7 +402,7 @@ TEST_F(PsiIntializerUnitTest, CalPsigAtomicSocHasSo) { TEST_F(PsiIntializerUnitTest, CalPsigAtomicRandom) { PARAM.input.init_wfc = "atomic+random"; - this->psi_init = new psi_initializer_atomic_random>(); + this->psi_init = new psi_init_atomic_random>(); this->psi_init->initialize(this->p_sf, this->p_pw_wfc, this->p_ucell, @@ -421,7 +421,7 @@ TEST_F(PsiIntializerUnitTest, CalPsigAtomicRandom) { TEST_F(PsiIntializerUnitTest, CalPsigNao) { PARAM.input.init_wfc = "nao"; - this->psi_init = new psi_initializer_nao>(); + this->psi_init = new psi_init_nao>(); this->psi_init->initialize(this->p_sf, this->p_pw_wfc, this->p_ucell, @@ -440,7 +440,7 @@ TEST_F(PsiIntializerUnitTest, CalPsigNao) { TEST_F(PsiIntializerUnitTest, CalPsigNaoRandom) { PARAM.input.init_wfc = "nao+random"; - this->psi_init = new psi_initializer_nao_random>(); + this->psi_init = new psi_init_nao_random>(); this->psi_init->initialize(this->p_sf, this->p_pw_wfc, this->p_ucell, @@ -464,7 +464,7 @@ TEST_F(PsiIntializerUnitTest, CalPsigNaoSoc) { this->p_ucell->atoms[0].ncpp.has_so = false; PARAM.sys.domag = false; PARAM.sys.domag_z = false; - this->psi_init = new psi_initializer_nao>(); + this->psi_init = new psi_init_nao>(); this->psi_init->initialize(this->p_sf, this->p_pw_wfc, this->p_ucell, @@ -488,7 +488,7 @@ TEST_F(PsiIntializerUnitTest, CalPsigNaoSocHasSo) { this->p_ucell->atoms[0].ncpp.has_so = true; PARAM.sys.domag = false; PARAM.sys.domag_z = false; - this->psi_init = new psi_initializer_nao>(); + this->psi_init = new psi_init_nao>(); this->psi_init->initialize(this->p_sf, this->p_pw_wfc, this->p_ucell, @@ -512,7 +512,7 @@ TEST_F(PsiIntializerUnitTest, CalPsigNaoSocHasSoDOMAG) { this->p_ucell->atoms[0].ncpp.has_so = true; PARAM.sys.domag = true; PARAM.sys.domag_z = false; - this->psi_init = new psi_initializer_nao>(); + this->psi_init = new psi_init_nao>(); this->psi_init->initialize(this->p_sf, this->p_pw_wfc, this->p_ucell, @@ -546,4 +546,4 @@ int main(int argc, char** argv) #endif return result; -} \ No newline at end of file +} diff --git a/source/source_pw/module_ofdft/CMakeLists.txt b/source/source_pw/module_ofdft/CMakeLists.txt index d34ac86492..8ec09bd72d 100644 --- a/source/source_pw/module_ofdft/CMakeLists.txt +++ b/source/source_pw/module_ofdft/CMakeLists.txt @@ -6,6 +6,8 @@ list(APPEND hamilt_ofdft_srcs kedf_lkt.cpp kedf_manager.cpp of_stress_pw.cpp + of_print_info.cpp + evolve_ofdft.cpp ) add_library( @@ -21,8 +23,9 @@ endif() if(ENABLE_MLALGO) list(APPEND hamilt_mlkedf_srcs kedf_ml.cpp - kedf_ml_pot.cpp kedf_ml_label.cpp + ml_base.cpp + ml_base_pot.cpp ml_tools/nn_of.cpp ) @@ -35,4 +38,4 @@ if(ENABLE_MLALGO) if(ENABLE_COVERAGE) add_coverage(hamilt_mlkedf) endif() -endif() \ No newline at end of file +endif() diff --git a/source/source_pw/module_ofdft/evolve_ofdft.cpp b/source/source_pw/module_ofdft/evolve_ofdft.cpp new file mode 100644 index 0000000000..e97d555273 --- /dev/null +++ b/source/source_pw/module_ofdft/evolve_ofdft.cpp @@ -0,0 +1,384 @@ +#include "evolve_ofdft.h" + +#include "source_io/module_parameter/parameter.h" +#include + +#include "source_base/parallel_reduce.h" + +void Evolve_OFDFT::cal_Hpsi(elecstate::ElecState* pelec, + Charge& chr, + UnitCell& ucell, + std::vector>& psi_, + ModulePW::PW_Basis* pw_rho, + std::vector>& Hpsi) +{ + // update rho +#ifdef _OPENMP +#pragma omp parallel for collapse(2) +#endif + for (int is = 0; is < PARAM.inp.nspin; ++is) + { + for (int ir = 0; ir < pw_rho->nrxx; ++ir) + { + chr.rho[is][ir] = abs(psi_[is * pw_rho->nrxx + ir])*abs(psi_[is * pw_rho->nrxx + ir]); + } + } + this->renormalize_psi(chr, pw_rho, psi_); + + pelec->pot->update_from_charge(&chr, &ucell); // Hartree + XC + external + this->cal_tf_potential(chr.rho, pw_rho, pelec->pot->get_eff_v()); // TF potential + if (PARAM.inp.of_cd) + { + this->cal_CD_potential(psi_, pw_rho, pelec->pot->get_eff_v(), PARAM.inp.of_mCD_alpha); // CD potential + } + +#ifdef _OPENMP +#pragma omp parallel for +#endif + for (int is = 0; is < PARAM.inp.nspin; ++is) + { + const double* vr_eff = pelec->pot->get_eff_v(is); + for (int ir = 0; ir < pw_rho->nrxx; ++ir) + { + Hpsi[is * pw_rho->nrxx + ir] = vr_eff[ir]*psi_[is * pw_rho->nrxx + ir]; + } + } + this->cal_vw_potential_phi(psi_, pw_rho, Hpsi); +} + +void Evolve_OFDFT::renormalize_psi(Charge& chr, ModulePW::PW_Basis* pw_rho, std::vector>& pphi_) +{ + const double sr = chr.sum_rho(); + const double normalize_factor = PARAM.inp.nelec / sr; + + std::cout<<"sr="<** rLapPhi = new std::complex*[PARAM.inp.nspin]; +#ifdef _OPENMP +#pragma omp parallel for +#endif + for (int is = 0; is < PARAM.inp.nspin; ++is) { + rLapPhi[is] = new std::complex[pw_rho->nrxx]; + for (int ir = 0; ir < pw_rho->nrxx; ++ir) + { + rLapPhi[is][ir]=pphi[is * pw_rho->nrxx + ir]; + } + } + std::complex** recipPhi = new std::complex*[PARAM.inp.nspin]; + +#ifdef _OPENMP +#pragma omp parallel for +#endif + for (int is = 0; is < PARAM.inp.nspin; ++is) + { + recipPhi[is] = new std::complex[pw_rho->npw]; + + pw_rho->real2recip(rLapPhi[is], recipPhi[is]); + for (int ik = 0; ik < pw_rho->npw; ++ik) + { + recipPhi[is][ik] *= pw_rho->gg[ik] * pw_rho->tpiba2; + } + pw_rho->recip2real(recipPhi[is], rLapPhi[is]); + for (int ir = 0; ir < pw_rho->nrxx; ++ir) + { + Hpsi[is * pw_rho->nrxx + ir] += rLapPhi[is][ir]; + } + } + +#ifdef _OPENMP +#pragma omp parallel for +#endif + for (int is = 0; is < PARAM.inp.nspin; ++is) + { + delete[] recipPhi[is]; + delete[] rLapPhi[is]; + } + delete[] recipPhi; + delete[] rLapPhi; +} + +void Evolve_OFDFT::cal_CD_potential(std::vector>& psi_, + ModulePW::PW_Basis* pw_rho, + ModuleBase::matrix& rpot, + double mCD_para) +{ + std::complex imag(0.0,1.0); + + if (PARAM.inp.nspin <= 0) { + ModuleBase::WARNING_QUIT("Evolve_OFDFT","nspin must be positive"); + } + std::complex** recipPhi = new std::complex*[PARAM.inp.nspin]; + std::complex** rPhi = new std::complex*[PARAM.inp.nspin]; +#ifdef _OPENMP +#pragma omp parallel for +#endif + for (int is = 0; is < PARAM.inp.nspin; ++is) { + rPhi[is] = new std::complex[pw_rho->nrxx]; + for (int ir = 0; ir < pw_rho->nrxx; ++ir) + { + rPhi[is][ir]=psi_[is * pw_rho->nrxx + ir]; + } + } + +#ifdef _OPENMP +#pragma omp parallel for +#endif + for (int is = 0; is < PARAM.inp.nspin; ++is) + { + std::vector> recipCurrent_x(pw_rho->npw); + std::vector> recipCurrent_y(pw_rho->npw); + std::vector> recipCurrent_z(pw_rho->npw); + std::vector> recipCDPotential(pw_rho->npw); + std::vector> rCurrent_x(pw_rho->nrxx); + std::vector> rCurrent_y(pw_rho->nrxx); + std::vector> rCurrent_z(pw_rho->nrxx); + std::vector> kF_r(pw_rho->nrxx); + std::vector> rCDPotential(pw_rho->nrxx); + recipPhi[is] = new std::complex[pw_rho->npw]; + + for (int ir = 0; ir < pw_rho->nrxx; ++ir) + { + kF_r[ir]=std::pow(3*std::pow(ModuleBase::PI*std::abs(rPhi[is][ir]),2),1.0/3.0); + } + + pw_rho->real2recip(rPhi[is], recipPhi[is]); + for (int ik = 0; ik < pw_rho->npw; ++ik) + { + recipCurrent_x[ik]=imag*pw_rho->gcar[ik].x*recipPhi[is][ik]* pw_rho->tpiba; + recipCurrent_y[ik]=imag*pw_rho->gcar[ik].y*recipPhi[is][ik]* pw_rho->tpiba; + recipCurrent_z[ik]=imag*pw_rho->gcar[ik].z*recipPhi[is][ik]* pw_rho->tpiba; + } + pw_rho->recip2real(recipCurrent_x.data(),rCurrent_x.data()); + pw_rho->recip2real(recipCurrent_y.data(),rCurrent_y.data()); + pw_rho->recip2real(recipCurrent_z.data(),rCurrent_z.data()); + for (int ir = 0; ir < pw_rho->nrxx; ++ir) + { + rCurrent_x[ir]=std::imag(rCurrent_x[ir]*std::conj(rPhi[is][ir])); + rCurrent_y[ir]=std::imag(rCurrent_y[ir]*std::conj(rPhi[is][ir])); + rCurrent_z[ir]=std::imag(rCurrent_z[ir]*std::conj(rPhi[is][ir])); + } + pw_rho->real2recip(rCurrent_x.data(),recipCurrent_x.data()); + pw_rho->real2recip(rCurrent_y.data(),recipCurrent_y.data()); + pw_rho->real2recip(rCurrent_z.data(),recipCurrent_z.data()); + for (int ik = 0; ik < pw_rho->npw; ++ik) + { + recipCDPotential[ik]=recipCurrent_x[ik]*pw_rho->gcar[ik].x+recipCurrent_y[ik]*pw_rho->gcar[ik].y+recipCurrent_z[ik]*pw_rho->gcar[ik].z; + if (pw_rho->gg[ik]==0) + { + recipCDPotential[ik]=0.0; + } + else + { + recipCDPotential[ik]*=imag/sqrt(pw_rho->gg[ik]); + } + } + pw_rho->recip2real(recipCDPotential.data(),rCDPotential.data()); + + for (int ir = 0; ir < pw_rho->nrxx; ++ir) + { + rpot(0, ir) -= mCD_para*2.0*std::real(rCDPotential[ir])*std::pow(ModuleBase::PI,3) + / (2.0*std::pow(std::real(kF_r[ir]),2)); + if (std::isnan(rpot(0, ir))) + { + rpot(0, ir)=0.0; + } + } + } + +#ifdef _OPENMP +#pragma omp parallel for +#endif + for (int is = 0; is < PARAM.inp.nspin; ++is) + { + delete[] recipPhi[is]; + delete[] rPhi[is]; + } + delete[] recipPhi; + delete[] rPhi; +} + +void Evolve_OFDFT::propagate_psi_RK4(elecstate::ElecState* pelec, + Charge& chr, + UnitCell& ucell, + std::vector>& pphi_, + ModulePW::PW_Basis* pw_rho) +{ + ModuleBase::timer::tick("ESolver_OF_TDDFT", "propagate_psi_RK4"); + + std::complex imag(0.0,1.0); + double dt=PARAM.inp.mdp.md_dt / ModuleBase::AU_to_FS; + const int nspin = PARAM.inp.nspin; + const int nrxx = pw_rho->nrxx; + const int total_size = nspin * nrxx; + std::vector> K1(total_size); + std::vector> K2(total_size); + std::vector> K3(total_size); + std::vector> K4(total_size); + std::vector> psi1(total_size); + std::vector> psi2(total_size); + std::vector> psi3(total_size); + + cal_Hpsi(pelec,chr,ucell,pphi_,pw_rho,K1); +#ifdef _OPENMP +#pragma omp parallel for collapse(2) +#endif + for (int is = 0; is < PARAM.inp.nspin; ++is){ + for (int ir = 0; ir < pw_rho->nrxx; ++ir) + { + K1[is * nrxx + ir]=-0.5*K1[is * nrxx + ir]*dt*imag; // 0.5 convert Ry to Hartree + psi1[is * nrxx + ir]=pphi_[is * nrxx + ir]+0.5*K1[is * nrxx + ir]; + } + } + cal_Hpsi(pelec,chr,ucell,psi1,pw_rho,K2); +#ifdef _OPENMP +#pragma omp parallel for collapse(2) +#endif + for (int is = 0; is < PARAM.inp.nspin; ++is){ + for (int ir = 0; ir < pw_rho->nrxx; ++ir) + { + K2[is * nrxx + ir]=-0.5*K2[is * nrxx + ir]*dt*imag; + psi2[is * nrxx + ir]=pphi_[is * nrxx + ir]+0.5*K2[is * nrxx + ir]; + } + } + cal_Hpsi(pelec,chr,ucell,psi2,pw_rho,K3); +#ifdef _OPENMP +#pragma omp parallel for collapse(2) +#endif + for (int is = 0; is < PARAM.inp.nspin; ++is){ + for (int ir = 0; ir < pw_rho->nrxx; ++ir) + { + K3[is * nrxx + ir]=-0.5*K3[is * nrxx + ir]*dt*imag; + psi3[is * nrxx + ir]=pphi_[is * nrxx + ir]+K3[is * nrxx + ir]; + } + } + cal_Hpsi(pelec,chr,ucell,psi3,pw_rho,K4); +#ifdef _OPENMP +#pragma omp parallel for collapse(2) +#endif + for (int is = 0; is < PARAM.inp.nspin; ++is){ + for (int ir = 0; ir < pw_rho->nrxx; ++ir) + { + K4[is * nrxx + ir]=-0.5*K4[is * nrxx + ir]*dt*imag; + pphi_[is * nrxx + ir]+=1.0/6.0*(K1[is * nrxx + ir]+2.0*K2[is * nrxx + ir]+2.0*K3[is * nrxx + ir]+K4[is * nrxx + ir]); + } + } + +#ifdef _OPENMP +#pragma omp parallel for collapse(2) +#endif + for (int is = 0; is < PARAM.inp.nspin; ++is) + { + for (int ir = 0; ir < pw_rho->nrxx; ++ir) + { + chr.rho[is][ir] = abs(pphi_[is * pw_rho->nrxx + ir])*abs(pphi_[is * pw_rho->nrxx + ir]); + } + } + this->renormalize_psi(chr, pw_rho, pphi_); + + ModuleBase::timer::tick("ESolver_OF_TDDFT", "propagate_psi_RK4"); +} + +void Evolve_OFDFT::propagate_psi_RK2(elecstate::ElecState* pelec, + Charge& chr, + UnitCell& ucell, + std::vector>& pphi_, + ModulePW::PW_Basis* pw_rho) +{ + ModuleBase::timer::tick("ESolver_OF_TDDFT", "propagate_psi_RK2"); + + const std::complex imag(0.0, 1.0); + double dt=PARAM.inp.mdp.md_dt / ModuleBase::AU_to_FS; + const int nspin = PARAM.inp.nspin; + const int nrxx = pw_rho->nrxx; + const int total_size = nspin * nrxx; + + std::vector> K1(total_size); + std::vector> K2(total_size); + std::vector> psi_mid(total_size); + + cal_Hpsi(pelec, chr, ucell, pphi_, pw_rho, K1); + +#ifdef _OPENMP +#pragma omp parallel for collapse(2) +#endif + for (int is = 0; is < nspin; ++is) { + for (int ir = 0; ir < nrxx; ++ir) { + const int idx = is * nrxx + ir; + K1[idx] = -0.5 * K1[idx] * dt * imag; + psi_mid[idx] = pphi_[idx] + 0.5 * K1[idx]; + } + } + + cal_Hpsi(pelec, chr, ucell, psi_mid, pw_rho, K2); + +#ifdef _OPENMP +#pragma omp parallel for collapse(2) +#endif + for (int is = 0; is < nspin; ++is) { + for (int ir = 0; ir < nrxx; ++ir) { + const int idx = is * nrxx + ir; + K2[idx] = -0.5 * K2[idx] * dt * imag; + pphi_[idx] += K2[idx]; + } + } + +#ifdef _OPENMP +#pragma omp parallel for collapse(2) +#endif + for (int is = 0; is < nspin; ++is) { + for (int ir = 0; ir < nrxx; ++ir) { + chr.rho[is][ir] = std::norm(pphi_[is * nrxx + ir]); + } + } + + this->renormalize_psi(chr, pw_rho, pphi_); + + ModuleBase::timer::tick("ESolver_OF_TDDFT", "propagate_psi_RK2"); +} diff --git a/source/source_pw/module_ofdft/evolve_ofdft.h b/source/source_pw/module_ofdft/evolve_ofdft.h new file mode 100644 index 0000000000..8d592a56a4 --- /dev/null +++ b/source/source_pw/module_ofdft/evolve_ofdft.h @@ -0,0 +1,64 @@ +#ifndef Evolve_OFDFT_H +#define Evolve_OFDFT_H +#include +#include + +#include "source_base/global_function.h" +#include "source_base/global_variable.h" +#include "source_base/matrix.h" +#include "source_base/timer.h" +#include "source_basis/module_pw/pw_basis.h" +#include "source_estate/elecstate.h" // electronic states +#include "source_estate/module_charge/charge.h" + +/** + * @brief TDOFDFT + * @author liyuanbo on 2025-09 + */ +class Evolve_OFDFT +{ + public: + Evolve_OFDFT() + { + } + ~Evolve_OFDFT() + { + } + void propagate_psi_RK4(elecstate::ElecState* pelec, + Charge& chr, + UnitCell& ucell, + std::vector>& pphi_, + ModulePW::PW_Basis* pw_rho); + + void propagate_psi_RK2(elecstate::ElecState* pelec, + Charge& chr, + UnitCell& ucell, + std::vector>& pphi_, + ModulePW::PW_Basis* pw_rho); + + void renormalize_psi(Charge& chr, ModulePW::PW_Basis* pw_rho, std::vector>& pphi_); + + private: + const double c_tf_ + = 3.0 / 10.0 * std::pow(3 * std::pow(M_PI, 2.0), 2.0 / 3.0) + * 2; // 10/3*(3*pi^2)^{2/3}, multiply by 2 to convert unit from Hartree to Ry, finally in Ry*Bohr^(-2) + + void cal_Hpsi(elecstate::ElecState* pelec, + Charge& chr, + UnitCell& ucell, + std::vector>& psi_, + ModulePW::PW_Basis* pw_rho, + std::vector>& Hpsi); + void cal_tf_potential(const double* const* prho, + ModulePW::PW_Basis* pw_rho, + ModuleBase::matrix& rpot); + void cal_vw_potential_phi(std::vector>& pphi, + ModulePW::PW_Basis* pw_rho, + std::vector>& Hpsi); // -1/2 \nabla^2 \phi + void cal_CD_potential(std::vector>& psi_, + ModulePW::PW_Basis* pw_rho, + ModuleBase::matrix& rpot, + double mCD_para); + +}; +#endif \ No newline at end of file diff --git a/source/source_pw/module_ofdft/kedf_ml.cpp b/source/source_pw/module_ofdft/kedf_ml.cpp index b50209c165..bf2423fb48 100644 --- a/source/source_pw/module_ofdft/kedf_ml.cpp +++ b/source/source_pw/module_ofdft/kedf_ml.cpp @@ -5,7 +5,6 @@ #include "npy.hpp" #include "source_base/parallel_reduce.h" #include "source_base/global_function.h" -#include "source_pw/module_pwdft/global.h" void KEDF_ML::set_para( const int nx, @@ -134,10 +133,10 @@ double KEDF_ML::get_energy(const double * const * prho, ModulePW::PW_Basis *pw_r double energy = 0.; for (int ir = 0; ir < this->nx; ++ir) { - energy += enhancement_cpu_ptr[ir] * std::pow(prho[0][ir], 5./3.); + energy += enhancement_cpu_ptr[ir] * std::pow(prho[0][ir], this->energy_exponent); } std::cout << "energy" << energy << std::endl; - energy *= this->dV * this->cTF; + energy *= this->dV * this->energy_prefactor; this->ml_energy = energy; Parallel_Reduce::reduce_all(this->ml_energy); return this->ml_energy; @@ -168,9 +167,9 @@ void KEDF_ML::ml_potential(const double * const * prho, ModulePW::PW_Basis *pw_r double energy = 0.; for (int ir = 0; ir < this->nx; ++ir) { - energy += enhancement_cpu_ptr[ir] * std::pow(prho[0][ir], 5./3.); + energy += enhancement_cpu_ptr[ir] * std::pow(prho[0][ir], this->energy_exponent); } - energy *= this->dV * this->cTF; + energy *= this->dV * this->energy_prefactor; this->ml_energy = energy; Parallel_Reduce::reduce_all(this->ml_energy); ModuleBase::timer::tick("KEDF_ML", "Pauli Energy"); @@ -252,258 +251,4 @@ void KEDF_ML::localTest(const double * const *pprho, ModulePW::PW_Basis *pw_rho) this->dumpMatrix("potential-abacus.npy", potential); exit(0); } - -/** - * @brief Set the device for ML KEDF - * - * @param device_inpt "cpu" or "gpu" - */ -void KEDF_ML::set_device(std::string device_inpt) -{ - if (device_inpt == "cpu") - { - std::cout << "------------------- Running NN on CPU -------------------" << std::endl; - this->device_type = torch::kCPU; - } - else if (device_inpt == "gpu") - { - if (torch::cuda::cudnn_is_available()) - { - std::cout << "------------------- Running NN on GPU -------------------" << std::endl; - this->device_type = torch::kCUDA; - } - else - { - std::cout << "--------------- Warning: GPU is unaviable ---------------" << std::endl; - std::cout << "------------------- Running NN on CPU -------------------" << std::endl; - this->device_type = torch::kCPU; - } - } - this->device = torch::Device(this->device_type); -} - -/** - * @brief Interface to Neural Network forward - * - * @param prho charge density - * @param pw_rho PW_Basis - * @param cal_grad whether to calculate the gradient - */ -void KEDF_ML::NN_forward(const double * const * prho, ModulePW::PW_Basis *pw_rho, bool cal_grad) -{ - ModuleBase::timer::tick("KEDF_ML", "Forward"); - - this->nn->zero_grad(); - this->nn->inputs.requires_grad_(false); - this->nn->set_data(this, this->descriptor_type, this->kernel_index, this->nn->inputs); - this->nn->inputs.requires_grad_(true); - - this->nn->F = this->nn->forward(this->nn->inputs); - if (this->nn->inputs.grad().numel()) - { - this->nn->inputs.grad().zero_(); // In the first step, inputs.grad() returns an undefined Tensor, so that numel() = 0. - } - - if (PARAM.inp.of_ml_feg != 3) - { - this->nn->F = torch::softplus(this->nn->F); - } - if (PARAM.inp.of_ml_feg == 1) - { - this->nn->F = this->nn->F - this->feg_net_F + 1.; - } - else if (PARAM.inp.of_ml_feg == 3) - { - this->nn->F = torch::softplus(this->nn->F - this->feg_net_F + this->feg3_correct); - } - ModuleBase::timer::tick("KEDF_ML", "Forward"); - - if (cal_grad) - { - ModuleBase::timer::tick("KEDF_ML", "Backward"); - this->nn->F.backward(torch::ones({this->nx, 1}, this->device_type)); - ModuleBase::timer::tick("KEDF_ML", "Backward"); - } -} - -void KEDF_ML::loadVector(std::string filename, std::vector &data) -{ - std::vector cshape = {(long unsigned) this->cal_tool->nx}; - bool fortran_order = false; - npy::LoadArrayFromNumpy(filename, cshape, fortran_order, data); -} - -void KEDF_ML::dumpVector(std::string filename, const std::vector &data) -{ - const long unsigned cshape[] = {(long unsigned) this->cal_tool->nx}; // shape - npy::SaveArrayAsNumpy(filename, false, 1, cshape, data); -} - -/** - * @brief Dump the torch::Tensor into .npy file - * - * @param data torch::Tensor - * @param filename file name - */ -void KEDF_ML::dumpTensor(std::string filename, const torch::Tensor &data) -{ - std::cout << "Dumping " << filename << std::endl; - torch::Tensor data_cpu = data.to(this->device_CPU).contiguous(); - std::vector v(data_cpu.data_ptr(), data_cpu.data_ptr() + data_cpu.numel()); - // for (int ir = 0; ir < this->nx; ++ir) assert(v[ir] == data[ir].item()); - this->dumpVector(filename, v); -} - -/** - * @brief Dump the matrix into .npy file - * - * @param data matrix - * @param filename file name - */ -void KEDF_ML::dumpMatrix(std::string filename, const ModuleBase::matrix &data) -{ - std::cout << "Dumping " << filename << std::endl; - std::vector v(data.c, data.c + this->nx); - // for (int ir = 0; ir < this->nx; ++ir) assert(v[ir] == data[ir].item()); - this->dumpVector(filename, v); -} - -/** - * @brief Update the desciptors for ML KEDF - * - * @param prho charge density - * @param pw_rho PW_Basis - */ -void KEDF_ML::updateInput(const double * const * prho, ModulePW::PW_Basis *pw_rho) -{ - ModuleBase::timer::tick("KEDF_ML", "updateInput"); - // std::cout << "updata_input" << std::endl; - if (this->gene_data_label["gamma"][0]) - { - this->cal_tool->getGamma(prho, this->gamma); - } - if (this->gene_data_label["p"][0]) - { - this->cal_tool->getNablaRho(prho, pw_rho, this->nablaRho); - this->cal_tool->getP(prho, pw_rho, this->nablaRho, this->p); - } - if (this->gene_data_label["q"][0]) - { - this->cal_tool->getQ(prho, pw_rho, this->q); - } - if (this->gene_data_label["tanhp"][0]) - { - this->cal_tool->getTanhP(this->p, this->tanhp); - } - if (this->gene_data_label["tanhq"][0]) - { - this->cal_tool->getTanhQ(this->q, this->tanhq); - } - - for (int ik = 0; ik < nkernel; ++ik) - { - if (this->gene_data_label["gammanl"][ik]){ - this->cal_tool->getGammanl(ik, this->gamma, pw_rho, this->gammanl[ik]); - } - if (this->gene_data_label["pnl"][ik]){ - this->cal_tool->getPnl(ik, this->p, pw_rho, this->pnl[ik]); - } - if (this->gene_data_label["qnl"][ik]){ - this->cal_tool->getQnl(ik, this->q, pw_rho, this->qnl[ik]); - } - if (this->gene_data_label["xi"][ik]){ - this->cal_tool->getXi(this->gamma, this->gammanl[ik], this->xi[ik]); - } - if (this->gene_data_label["tanhxi"][ik]){ - this->cal_tool->getTanhXi(ik, this->gamma, this->gammanl[ik], this->tanhxi[ik]); - } - if (this->gene_data_label["tanhxi_nl"][ik]){ - this->cal_tool->getTanhXi_nl(ik, this->tanhxi[ik], pw_rho, this->tanhxi_nl[ik]); - } - if (this->gene_data_label["tanh_pnl"][ik]){ - this->cal_tool->getTanh_Pnl(ik, this->pnl[ik], this->tanh_pnl[ik]); - } - if (this->gene_data_label["tanh_qnl"][ik]){ - this->cal_tool->getTanh_Qnl(ik, this->qnl[ik], this->tanh_qnl[ik]); - } - if (this->gene_data_label["tanhp_nl"][ik]){ - this->cal_tool->getTanhP_nl(ik, this->tanhp, pw_rho, this->tanhp_nl[ik]); - } - if (this->gene_data_label["tanhq_nl"][ik]){ - this->cal_tool->getTanhQ_nl(ik, this->tanhq, pw_rho, this->tanhq_nl[ik]); - } - } - ModuleBase::timer::tick("KEDF_ML", "updateInput"); -} - -/** - * @brief Return the descriptors for ML KEDF - * - * @param parameter "gamma", "p", "q", "tanhp", "tanhq", "gammanl", "pnl", "qnl", "xi", "tanhxi", "tanhxi_nl", "tanh_pnl", "tanh_qnl", "tanhp_nl", "tanhq_nl" - * @param ikernel kernel index - */ -torch::Tensor KEDF_ML::get_data(std::string parameter, const int ikernel){ - - if (parameter == "gamma") - { - return torch::tensor(this->gamma, this->device_type); - } - if (parameter == "p") - { - return torch::tensor(this->p, this->device_type); - } - if (parameter == "q") - { - return torch::tensor(this->q, this->device_type); - } - if (parameter == "tanhp") - { - return torch::tensor(this->tanhp, this->device_type); - } - if (parameter == "tanhq") - { - return torch::tensor(this->tanhq, this->device_type); - } - if (parameter == "gammanl") - { - return torch::tensor(this->gammanl[ikernel], this->device_type); - } - if (parameter == "pnl") - { - return torch::tensor(this->pnl[ikernel], this->device_type); - } - if (parameter == "qnl") - { - return torch::tensor(this->qnl[ikernel], this->device_type); - } - if (parameter == "xi") - { - return torch::tensor(this->xi[ikernel], this->device_type); - } - if (parameter == "tanhxi") - { - return torch::tensor(this->tanhxi[ikernel], this->device_type); - } - if (parameter == "tanhxi_nl") - { - return torch::tensor(this->tanhxi_nl[ikernel], this->device_type); - } - if (parameter == "tanh_pnl") - { - return torch::tensor(this->tanh_pnl[ikernel], this->device_type); - } - if (parameter == "tanh_qnl") - { - return torch::tensor(this->tanh_qnl[ikernel], this->device_type); - } - if (parameter == "tanhp_nl") - { - return torch::tensor(this->tanhp_nl[ikernel], this->device_type); - } - if (parameter == "tanhq_nl") - { - return torch::tensor(this->tanhq_nl[ikernel], this->device_type); - } - return torch::zeros({}); -} -#endif \ No newline at end of file +#endif diff --git a/source/source_pw/module_ofdft/kedf_ml.h b/source/source_pw/module_ofdft/kedf_ml.h index 070333b3ec..202c6958f0 100644 --- a/source/source_pw/module_ofdft/kedf_ml.h +++ b/source/source_pw/module_ofdft/kedf_ml.h @@ -3,22 +3,17 @@ #ifdef __MLALGO -#include "source_io/cal_mlkedf_descriptors.h" +#include "ml_base.h" -#include -#include "./ml_tools/nn_of.h" - -class KEDF_ML +class KEDF_ML : public ML_Base { public: KEDF_ML() { + this->energy_prefactor = 3. /10. * std::pow(3*std::pow(M_PI, 2.0), 2.0/3.0) * 2; // 10/3*(3*pi^2)^{2/3}, multiply by 2 to convert unit from Hartree to Ry, finally in Ry*Bohr^(-2) + this->energy_exponent = 5. / 3.; // this->stress.create(3,3); } - ~KEDF_ML() - { - delete this->cal_tool; - } void set_para( const int nx, @@ -54,99 +49,18 @@ class KEDF_ML const std::string device_inpt, ModulePW::PW_Basis *pw_rho); - void set_device(std::string device_inpt); - double get_energy(const double * const * prho, ModulePW::PW_Basis *pw_rho); // double get_energy_density(const double * const *prho, int is, int ir, ModulePW::PW_Basis *pw_rho); void ml_potential(const double * const * prho, ModulePW::PW_Basis *pw_rho, ModuleBase::matrix &rpotential); // void get_stress(double cellVol, const double * const * prho, ModulePW::PW_Basis *pw_rho, double vw_weight); - // double diffLinhard(double eta, double vw_weight); // output all parameters void generateTrainData(const double * const *prho, ModulePW::PW_Basis *pw_rho, const double *veff); void localTest(const double * const *prho, ModulePW::PW_Basis *pw_rho); - // interface to NN - void NN_forward(const double * const * prho, ModulePW::PW_Basis *pw_rho, bool cal_grad); - - void get_potential_(const double * const * prho, ModulePW::PW_Basis *pw_rho, ModuleBase::matrix &rpotential); - - // potentials - double potGammaTerm(int ir); - double potPTerm1(int ir); - double potQTerm1(int ir); - double potXiTerm1(int ir); - double potTanhxiTerm1(int ir); - double potTanhpTerm1(int ir); - double potTanhqTerm1(int ir); - void potGammanlTerm(const double * const *prho, ModulePW::PW_Basis *pw_rho, std::vector &rGammanlTerm); - void potXinlTerm(const double * const *prho, ModulePW::PW_Basis *pw_rho, std::vector &rXinlTerm); - void potTanhxinlTerm(const double * const *prho, ModulePW::PW_Basis *pw_rho, std::vector &rTanhxinlTerm); - void potTanhxi_nlTerm(const double * const *prho, ModulePW::PW_Basis *pw_rho, std::vector &rTanhxi_nlTerm); // 2023-03-20 for tanhxi_nl - void potPPnlTerm(const double * const *prho, ModulePW::PW_Basis *pw_rho, std::vector &rPPnlTerm); - void potQQnlTerm(const double * const *prho, ModulePW::PW_Basis *pw_rho, std::vector &rQQnlTerm); - void potTanhpTanh_pnlTerm(const double * const *prho, ModulePW::PW_Basis *pw_rho, std::vector &rTanhpTanh_pnlTerm); - void potTanhqTanh_qnlTerm(const double * const *prho, ModulePW::PW_Basis *pw_rho, std::vector &rTanhqTanh_qnlTerm); - void potTanhpTanhp_nlTerm(const double * const *prho, ModulePW::PW_Basis *pw_rho, std::vector &rTanhpTanhp_nlTerm); - void potTanhqTanhq_nlTerm(const double * const *prho, ModulePW::PW_Basis *pw_rho, std::vector &rTanhqTanhq_nlTerm); - // tools - void loadVector(std::string filename, std::vector &data); - void dumpVector(std::string filename, const std::vector &data); - void dumpTensor(std::string filename, const torch::Tensor &data); - void dumpMatrix(std::string filename, const ModuleBase::matrix &data); - void updateInput(const double * const * prho, ModulePW::PW_Basis *pw_rho); - - ModuleIO::Cal_MLKEDF_Descriptors *cal_tool = nullptr; - - int nx = 0; // number of grid points - int nx_tot = 0; // equal to nx (called by NN) - double dV = 0.; - // double weightml = 1.; - const double cTF = 3.0/10.0 * std::pow(3*std::pow(M_PI, 2.0), 2.0/3.0) * 2; // 10/3*(3*pi^2)^{2/3}, multiply by 2 to convert unit from Hartree to Ry, finally in Ry*Bohr^(-2) - const double pqcoef = 1.0 / (4.0 * std::pow(3*std::pow(M_PI, 2.0), 2.0/3.0)); // coefficient of p and q double ml_energy = 0.; // ModuleBase::matrix stress; - double feg_net_F = 0.; - double feg3_correct = 0.541324854612918; // ln(e - 1) - - // Descriptors and hyperparameters - int ninput = 0; // number of descriptors - std::vector gamma = {}; - std::vector p = {}; - std::vector q = {}; - std::vector> gammanl = {}; - std::vector> pnl = {}; - std::vector> qnl = {}; - std::vector> nablaRho = {}; - // new parameters 2023-02-13 - std::vector chi_xi = {1.0}; - double chi_p = 1.; - double chi_q = 1.; - std::vector> xi = {}; // we assume ONLY ONE of them is used. - std::vector> tanhxi = {}; - std::vector> tanhxi_nl= {}; // 2023-03-20 - std::vector tanhp = {}; - std::vector tanhq = {}; - // plan 1 - std::vector chi_pnl = {1.0}; - std::vector chi_qnl = {1.0}; - std::vector> tanh_pnl = {}; - std::vector> tanh_qnl = {}; - // plan 2 - std::vector> tanhp_nl = {}; - std::vector> tanhq_nl = {}; - // GPU - torch::DeviceType device_type = torch::kCPU; - torch::Device device = torch::Device(torch::kCPU); - torch::Device device_CPU = torch::Device(torch::kCPU); - - // Nueral Network - std::shared_ptr nn; - double* enhancement_cpu_ptr = nullptr; - double* gradient_cpu_ptr = nullptr; - - int nkernel = 1; // number of kernels - + // maps void init_data( const int &nkernel, @@ -166,31 +80,6 @@ class KEDF_ML const std::vector &of_ml_tanhp_nl, const std::vector &of_ml_tanhq_nl ); - - // Whether to use corresponding descriptors - bool ml_gamma = false; - bool ml_p = false; - bool ml_q = false; - bool ml_tanhp = false; - bool ml_tanhq = false; - bool ml_gammanl = false; - bool ml_pnl = false; - bool ml_qnl = false; - bool ml_xi = false; - bool ml_tanhxi = false; - bool ml_tanhxi_nl = false; - bool ml_tanh_pnl = false; - bool ml_tanh_qnl = false; - bool ml_tanhp_nl = false; - bool ml_tanhq_nl = false; - - std::vector descriptor_type = {}; // the descriptors used - std::vector kernel_index = {}; // the index of the kernel used - std::map> descriptor2kernel = {}; // the map from descriptor to kernel index - std::map> descriptor2index = {}; // the map from descriptor to index - std::map> gene_data_label = {}; // the map from descriptor to gene label - - torch::Tensor get_data(std::string parameter, const int ikernel); // get the descriptor data for the ikernel-th kernel }; #endif diff --git a/source/source_pw/module_ofdft/kedf_ml_pot.cpp b/source/source_pw/module_ofdft/kedf_ml_pot.cpp deleted file mode 100644 index a371eb669f..0000000000 --- a/source/source_pw/module_ofdft/kedf_ml_pot.cpp +++ /dev/null @@ -1,534 +0,0 @@ -#ifdef __MLALGO - -#include "kedf_ml.h" - -#include "source_base/parallel_reduce.h" -#include "source_base/global_function.h" - -/** - * @brief Calculate the Pauli potential of ML KEDF - * - * @param prho charge density - * @param pw_rho PW_Basis - * @param rpotential rpotential => rpotential + V_{ML} - */ -void KEDF_ML::get_potential_(const double * const * prho, ModulePW::PW_Basis *pw_rho, ModuleBase::matrix &rpotential) -{ - // get potential - ModuleBase::timer::tick("KEDF_ML", "Pauli Potential"); - - std::vector pauli_potential(this->nx, 0.); - - if (this->ml_gammanl){ - this->potGammanlTerm(prho, pw_rho, pauli_potential); - } - if (this->ml_xi){ - this->potXinlTerm(prho, pw_rho, pauli_potential); - } - if (this->ml_tanhxi){ - this->potTanhxinlTerm(prho, pw_rho, pauli_potential); - } - if (this->ml_tanhxi_nl){ - this->potTanhxi_nlTerm(prho, pw_rho, pauli_potential); - } - if (this->ml_p || this->ml_pnl){ - this->potPPnlTerm(prho, pw_rho, pauli_potential); - } - if (this->ml_q || this->ml_qnl){ - this->potQQnlTerm(prho, pw_rho, pauli_potential); - } - if (this->ml_tanh_pnl){ - this->potTanhpTanh_pnlTerm(prho, pw_rho, pauli_potential); - } - if (this->ml_tanh_qnl){ - this->potTanhqTanh_qnlTerm(prho, pw_rho, pauli_potential); - } - if ((this->ml_tanhp || this->ml_tanhp_nl) && !this->ml_tanh_pnl){ - this->potTanhpTanhp_nlTerm(prho, pw_rho, pauli_potential); - } - if ((this->ml_tanhq || this->ml_tanhq_nl) && !this->ml_tanh_qnl){ - this->potTanhqTanhq_nlTerm(prho, pw_rho, pauli_potential); - } - - for (int ir = 0; ir < this->nx; ++ir) - { - pauli_potential[ir] += this->cTF * std::pow(prho[0][ir], 5./3.) / prho[0][ir] * - (5./3. * this->enhancement_cpu_ptr[ir] + this->potGammaTerm(ir) + this->potPTerm1(ir) + this->potQTerm1(ir) - + this->potXiTerm1(ir) + this->potTanhxiTerm1(ir) + this->potTanhpTerm1(ir) + this->potTanhqTerm1(ir)); - rpotential(0, ir) += pauli_potential[ir]; - } - ModuleBase::timer::tick("KEDF_ML", "Pauli Potential"); -} - - -double KEDF_ML::potGammaTerm(int ir) -{ - return (this->ml_gamma) ? 1./3. * gamma[ir] * this->gradient_cpu_ptr[ir * this->ninput + this->descriptor2index["gamma"][0]] : 0.; -} - -double KEDF_ML::potPTerm1(int ir) -{ - return (this->ml_p) ? - 8./3. * p[ir] * this->gradient_cpu_ptr[ir * this->ninput + this->descriptor2index["p"][0]] : 0.; -} - -double KEDF_ML::potQTerm1(int ir) -{ - return (this->ml_q) ? - 5./3. * q[ir] * this->gradient_cpu_ptr[ir * this->ninput + this->descriptor2index["q"][0]] : 0.; -} - -double KEDF_ML::potXiTerm1(int ir) -{ - double result = 0.; - for (int ik = 0; ik < this->descriptor2kernel["xi"].size(); ++ik) - { - int d2k = this->descriptor2kernel["xi"][ik]; - int d2i = this->descriptor2index["xi"][ik]; - result += -1./3. * xi[d2k][ir] * this->gradient_cpu_ptr[ir * this->ninput + d2i]; - } - return result; -} - -double KEDF_ML::potTanhxiTerm1(int ir) -{ - double result = 0.; - for (int ik = 0; ik < this->descriptor2kernel["tanhxi"].size(); ++ik) - { - int d2k = this->descriptor2kernel["tanhxi"][ik]; - int d2i = this->descriptor2index["tanhxi"][ik]; - result += -1./3. * xi[d2k][ir] * this->cal_tool->dtanh(this->tanhxi[d2k][ir], this->chi_xi[d2k]) - * this->gradient_cpu_ptr[ir * this->ninput + d2i]; - } - return result; -} - -double KEDF_ML::potTanhpTerm1(int ir) -{ - return (this->ml_tanhp) ? - 8./3. * p[ir] * this->cal_tool->dtanh(this->tanhp[ir], this->chi_p) - * this->gradient_cpu_ptr[ir * this->ninput + this->descriptor2index["tanhp"][0]] : 0.; -} - -double KEDF_ML::potTanhqTerm1(int ir) -{ - return (this->ml_tanhq) ? - 5./3. * q[ir] * this->cal_tool->dtanh(this->tanhq[ir], this->chi_q) - * this->gradient_cpu_ptr[ir * this->ninput + this->descriptor2index["tanhq"][0]] : 0.; -} - -void KEDF_ML::potGammanlTerm(const double * const *prho, ModulePW::PW_Basis *pw_rho, std::vector &rGammanlTerm) -{ - double *dFdgammanl = new double[this->nx]; - for (int ik = 0; ik < this->descriptor2kernel["gammanl"].size(); ++ik) - { - int d2k = this->descriptor2kernel["gammanl"][ik]; - int d2i = this->descriptor2index["gammanl"][ik]; - for (int ir = 0; ir < this->nx; ++ir) - { - dFdgammanl[ir] = this->cTF * std::pow(prho[0][ir], 5./3.) * this->gradient_cpu_ptr[ir * this->ninput + d2i]; - } - this->cal_tool->multiKernel(d2k, dFdgammanl, pw_rho, dFdgammanl); - for (int ir = 0; ir < this->nx; ++ir) - { - rGammanlTerm[ir] += 1./3. * this->gamma[ir] / prho[0][ir] * dFdgammanl[ir]; - } - } - delete[] dFdgammanl; -} - -void KEDF_ML::potXinlTerm(const double * const *prho, ModulePW::PW_Basis *pw_rho, std::vector &rXinlTerm) -{ - double *dFdxi = new double[this->nx]; - for (int ik = 0; ik < this->descriptor2kernel["xi"].size(); ++ik) - { - int d2k = this->descriptor2kernel["xi"][ik]; - int d2i = this->descriptor2index["xi"][ik]; - for (int ir = 0; ir < this->nx; ++ir) - { - dFdxi[ir] = this->cTF * std::pow(prho[0][ir], 4./3.) * this->gradient_cpu_ptr[ir * this->ninput + d2i]; - } - this->cal_tool->multiKernel(d2k, dFdxi, pw_rho, dFdxi); - for (int ir = 0; ir < this->nx; ++ir) - { - rXinlTerm[ir] += 1./3. * std::pow(prho[0][ir], -2./3.) * dFdxi[ir]; - } - } - delete[] dFdxi; -} - -void KEDF_ML::potTanhxinlTerm(const double * const *prho, ModulePW::PW_Basis *pw_rho, std::vector &rTanhxinlTerm) -{ - double *dFdtanhxi = new double[this->nx]; - for (int ik = 0; ik < this->descriptor2kernel["tanhxi"].size(); ++ik) - { - int d2k = this->descriptor2kernel["tanhxi"][ik]; - int d2i = this->descriptor2index["tanhxi"][ik]; - for (int ir = 0; ir < this->nx; ++ir) - { - dFdtanhxi[ir] = this->cTF * std::pow(prho[0][ir], 4./3.) * this->cal_tool->dtanh(this->tanhxi[d2k][ir], this->chi_xi[d2k]) - * this->gradient_cpu_ptr[ir * this->ninput + d2i]; - } - this->cal_tool->multiKernel(d2k, dFdtanhxi, pw_rho, dFdtanhxi); - for (int ir = 0; ir < this->nx; ++ir) - { - rTanhxinlTerm[ir] += 1./3. * std::pow(prho[0][ir], -2./3.) * dFdtanhxi[ir]; - } - } - delete[] dFdtanhxi; -} - -void KEDF_ML::potTanhxi_nlTerm(const double * const *prho, ModulePW::PW_Basis *pw_rho, std::vector &rTanhxi_nlTerm) -{ - double *dFdtanhxi_nl = new double[this->nx]; - double *dFdtanhxi_nl_nl = new double[this->nx]; - std::vector result(this->nx, 0.); - for (int ik = 0; ik < this->descriptor2kernel["tanhxi_nl"].size(); ++ik) - { - int d2k = this->descriptor2kernel["tanhxi_nl"][ik]; - int d2i = this->descriptor2index["tanhxi_nl"][ik]; - for (int ir = 0; ir < this->nx; ++ir) - { - dFdtanhxi_nl[ir] = this->cTF * std::pow(prho[0][ir], 5./3.) * this->gradient_cpu_ptr[ir * this->ninput + d2i]; - } - this->cal_tool->multiKernel(d2k, dFdtanhxi_nl, pw_rho, dFdtanhxi_nl); - for (int ir = 0; ir < this->nx; ++ir) - { - dFdtanhxi_nl[ir] *= this->cal_tool->dtanh(this->tanhxi[d2k][ir], this->chi_xi[d2k]) / std::pow(prho[0][ir], 1./3.); - } - this->cal_tool->multiKernel(d2k, dFdtanhxi_nl, pw_rho, dFdtanhxi_nl_nl); - for (int ir = 0; ir < this->nx; ++ir) - { - result[ir] += dFdtanhxi_nl_nl[ir] - dFdtanhxi_nl[ir] * this->xi[d2k][ir]; - } - } - for (int ir = 0; ir < this->nx; ++ir) - { - rTanhxi_nlTerm[ir] += result[ir] * 1./3. * std::pow(prho[0][ir], -2./3.); - } - delete[] dFdtanhxi_nl; - delete[] dFdtanhxi_nl_nl; -} - -// get contribution of p and pnl -void KEDF_ML::potPPnlTerm(const double * const *prho, ModulePW::PW_Basis *pw_rho, std::vector &rPPnlTerm) -{ - double *dFdpnl = new double[this->nx]; - std::vector dFdpnl_tot(this->nx, 0.); - std::vector result(this->nx, 0.); - for (int ik = 0; ik < this->descriptor2index["pnl"].size(); ++ik) - { - int d2k = this->descriptor2kernel["pnl"][ik]; - int d2i = this->descriptor2index["pnl"][ik]; - - for (int ir = 0; ir < this->nx; ++ir) - { - dFdpnl[ir] = this->cTF * std::pow(prho[0][ir], 5./3.) * this->gradient_cpu_ptr[ir * this->ninput + d2i]; - } - this->cal_tool->multiKernel(d2k, dFdpnl, pw_rho, dFdpnl); - for (int ir = 0; ir < this->nx; ++ir) - { - dFdpnl_tot[ir] += dFdpnl[ir]; - } - } - delete[] dFdpnl; - - double ** tempP = new double*[3]; - for (int i = 0; i < 3; ++i) - { - tempP[i] = new double[this->nx]; - for (int ir = 0; ir < this->nx; ++ir) - { - tempP[i][ir] = (this->ml_p)? - 3./20. * this->gradient_cpu_ptr[ir * this->ninput + this->descriptor2index["p"][0]] * nablaRho[i][ir] / prho[0][ir] * /*Ha2Ry*/ 2. : 0.; - if (this->ml_pnl) - { - tempP[i][ir] += - this->pqcoef * 2. * this->nablaRho[i][ir] / std::pow(prho[0][ir], 8./3.) * dFdpnl_tot[ir]; - } - } - } - this->cal_tool->divergence(tempP, pw_rho, result.data()); - - if (this->ml_pnl) - { - for (int ir = 0; ir < this->nx; ++ir) - { - result[ir] += -8./3. * this->p[ir]/prho[0][ir] * dFdpnl_tot[ir]; - } - } - - for (int ir = 0; ir < this->nx; ++ir) - { - rPPnlTerm[ir] += result[ir]; - } - - for (int i = 0; i < 3; ++i) - { - delete[] tempP[i]; - } - delete[] tempP; -} - -void KEDF_ML::potQQnlTerm(const double * const *prho, ModulePW::PW_Basis *pw_rho, std::vector &rQQnlTerm) -{ - double *dFdqnl = new double[this->nx]; - std::vector dFdqnl_tot(this->nx, 0.); - std::vector result(this->nx, 0.); - for (int ik = 0; ik < this->descriptor2index["qnl"].size(); ++ik) - { - int d2k = this->descriptor2kernel["qnl"][ik]; - int d2i = this->descriptor2index["qnl"][ik]; - - for (int ir = 0; ir < this->nx; ++ir) - { - dFdqnl[ir] = this->cTF * std::pow(prho[0][ir], 5./3.) * this->gradient_cpu_ptr[ir * this->ninput + d2i]; - } - this->cal_tool->multiKernel(d2k, dFdqnl, pw_rho, dFdqnl); - for (int ir = 0; ir < this->nx; ++ir) - { - dFdqnl_tot[ir] += dFdqnl[ir]; - } - } - delete[] dFdqnl; - - double * tempQ = new double[this->nx]; - for (int ir = 0; ir < this->nx; ++ir) - { - tempQ[ir] = (this->ml_q)? 3./40. * this->gradient_cpu_ptr[ir * this->ninput + this->descriptor2index["q"][0]] * /*Ha2Ry*/ 2. : 0.; - if (this->ml_qnl) - { - tempQ[ir] += this->pqcoef / std::pow(prho[0][ir], 5./3.) * dFdqnl_tot[ir]; - } - } - this->cal_tool->Laplacian(tempQ, pw_rho, result.data()); - - if (this->ml_qnl) - { - for (int ir = 0; ir < this->nx; ++ir) - { - result[ir] += -5./3. * this->q[ir] / prho[0][ir] * dFdqnl_tot[ir]; - } - } - - for (int ir = 0; ir < this->nx; ++ir) - { - rQQnlTerm[ir] += result[ir]; - } - delete[] tempQ; -} - -void KEDF_ML::potTanhpTanh_pnlTerm(const double * const *prho, ModulePW::PW_Basis *pw_rho, std::vector &rTanhpTanh_pnlTerm) -{ - // Note we assume that tanhp_nl and tanh_pnl will NOT be used together. - double *dFdpnl = new double[this->nx]; - std::vector dFdpnl_tot(this->nx, 0.); - std::vector result(this->nx, 0.); - for (int ik = 0; ik < this->descriptor2kernel["tanh_pnl"].size(); ++ik) - { - int d2k = this->descriptor2kernel["tanh_pnl"][ik]; - int d2i = this->descriptor2index["tanh_pnl"][ik]; - - for (int ir = 0; ir < this->nx; ++ir) - { - dFdpnl[ir] = this->cTF * std::pow(prho[0][ir], 5./3.) * this->cal_tool->dtanh(this->tanh_pnl[d2k][ir], this->chi_pnl[d2k]) - * this->gradient_cpu_ptr[ir * this->ninput + d2i]; - } - this->cal_tool->multiKernel(d2k, dFdpnl, pw_rho, dFdpnl); - for (int ir = 0; ir < this->nx; ++ir) - { - dFdpnl_tot[ir] += dFdpnl[ir]; - } - } - delete[] dFdpnl; - - double ** tempP = new double*[3]; - for (int i = 0; i < 3; ++i) - { - tempP[i] = new double[this->nx]; - for (int ir = 0; ir < this->nx; ++ir) - { - tempP[i][ir] = (this->ml_tanhp)? - 3./20. * this->cal_tool->dtanh(this->tanhp[ir], this->chi_p) - * this->gradient_cpu_ptr[ir * this->ninput + this->descriptor2index["tanhp"][0]] * nablaRho[i][ir] / prho[0][ir] * /*Ha2Ry*/ 2. : 0.; - if (this->ml_tanh_pnl) - { - tempP[i][ir] += - this->pqcoef * 2. * this->nablaRho[i][ir] / std::pow(prho[0][ir], 8./3.) * dFdpnl_tot[ir]; - } - } - } - this->cal_tool->divergence(tempP, pw_rho, result.data()); - - if (this->ml_tanh_pnl) - { - for (int ir = 0; ir < this->nx; ++ir) - { - result[ir] += -8./3. * this->p[ir]/prho[0][ir] * dFdpnl_tot[ir]; - } - } - - for (int ir = 0; ir < this->nx; ++ir) - { - rTanhpTanh_pnlTerm[ir] += result[ir]; - } - for (int i = 0; i < 3; ++i) - { - delete[] tempP[i]; - } - delete[] tempP; -} - -void KEDF_ML::potTanhqTanh_qnlTerm(const double * const *prho, ModulePW::PW_Basis *pw_rho, std::vector &rTanhqTanh_qnlTerm) -{ - // Note we assume that tanhq_nl and tanh_qnl will NOT be used together. - double *dFdqnl = new double[this->nx]; - std::vector dFdqnl_tot(this->nx, 0.); - std::vector result(this->nx, 0.); - for (int ik = 0; ik < this->descriptor2kernel["tanh_qnl"].size(); ++ik) - { - int d2k = this->descriptor2kernel["tanh_qnl"][ik]; - int d2i = this->descriptor2index["tanh_qnl"][ik]; - - for (int ir = 0; ir < this->nx; ++ir) - { - dFdqnl[ir] = this->cTF * std::pow(prho[0][ir], 5./3.) * this->cal_tool->dtanh(this->tanh_qnl[d2k][ir], this->chi_qnl[d2k]) - * this->gradient_cpu_ptr[ir * this->ninput + d2i]; - } - this->cal_tool->multiKernel(d2k, dFdqnl, pw_rho, dFdqnl); - for (int ir = 0; ir < this->nx; ++ir) - { - dFdqnl_tot[ir] += dFdqnl[ir]; - } - } - delete[] dFdqnl; - - double * tempQ = new double[this->nx]; - for (int ir = 0; ir < this->nx; ++ir) - { - tempQ[ir] = (this->ml_tanhq)? 3./40. * this->cal_tool->dtanh(this->tanhq[ir], this->chi_q) - * this->gradient_cpu_ptr[ir * this->ninput + this->descriptor2index["tanhq"][0]] * /*Ha2Ry*/ 2. : 0.; - if (this->ml_tanh_qnl) - { - tempQ[ir] += this->pqcoef / std::pow(prho[0][ir], 5./3.) * dFdqnl_tot[ir]; - } - } - this->cal_tool->Laplacian(tempQ, pw_rho, result.data()); - - if (this->ml_tanh_qnl) - { - for (int ir = 0; ir < this->nx; ++ir) - { - result[ir] += -5./3. * this->q[ir] / prho[0][ir] * dFdqnl_tot[ir]; - } - } - - for (int ir = 0; ir < this->nx; ++ir) - { - rTanhqTanh_qnlTerm[ir] += result[ir]; - } - delete[] tempQ; -} - -// Note we assume that tanhp_nl and tanh_pnl will NOT be used together. -void KEDF_ML::potTanhpTanhp_nlTerm(const double * const *prho, ModulePW::PW_Basis *pw_rho, std::vector &rTanhpTanhp_nlTerm) -{ - double *dFdpnl = new double[this->nx]; - std::vector dFdpnl_tot(this->nx, 0.); - std::vector result(this->nx, 0.); - for (int ik = 0; ik < this->descriptor2kernel["tanhp_nl"].size(); ++ik) - { - int d2k = this->descriptor2kernel["tanhp_nl"][ik]; - int d2i = this->descriptor2index["tanhp_nl"][ik]; - - for (int ir = 0; ir < this->nx; ++ir) - { - dFdpnl[ir] = this->cTF * std::pow(prho[0][ir], 5./3.) - * this->gradient_cpu_ptr[ir * this->ninput + d2i]; - } - this->cal_tool->multiKernel(d2k, dFdpnl, pw_rho, dFdpnl); - for (int ir = 0; ir < this->nx; ++ir) - { - dFdpnl_tot[ir] += this->cal_tool->dtanh(this->tanhp[ir], this->chi_p) * dFdpnl[ir]; - } - } - delete[] dFdpnl; - - double ** tempP = new double*[3]; - for (int i = 0; i < 3; ++i) - { - tempP[i] = new double[this->nx]; - for (int ir = 0; ir < this->nx; ++ir) - { - tempP[i][ir] = (this->ml_tanhp)? - 3./20. * this->cal_tool->dtanh(this->tanhp[ir], this->chi_p) - * this->gradient_cpu_ptr[ir * this->ninput + this->descriptor2index["tanhp"][0]] * nablaRho[i][ir] / prho[0][ir] * /*Ha2Ry*/ 2. : 0.; - if (this->ml_tanhp_nl) - { - tempP[i][ir] += - this->pqcoef * 2. * this->nablaRho[i][ir] / std::pow(prho[0][ir], 8./3.) * dFdpnl_tot[ir]; - } - } - } - this->cal_tool->divergence(tempP, pw_rho, result.data()); - - if (this->ml_tanhp_nl) - { - for (int ir = 0; ir < this->nx; ++ir) - { - result[ir] += -8./3. * this->p[ir]/prho[0][ir] * dFdpnl_tot[ir]; - } - } - - for (int ir = 0; ir < this->nx; ++ir) - { - rTanhpTanhp_nlTerm[ir] += result[ir]; - } - for (int i = 0; i < 3; ++i) - { - delete[] tempP[i]; - } - delete[] tempP; -} - -void KEDF_ML::potTanhqTanhq_nlTerm(const double * const *prho, ModulePW::PW_Basis *pw_rho, std::vector &rTanhqTanhq_nlTerm) -{ - double *dFdqnl = new double[this->nx]; - std::vector dFdqnl_tot(this->nx, 0.); - std::vector result(this->nx, 0.); - for (int ik = 0; ik < this->descriptor2kernel["tanhq_nl"].size(); ++ik) - { - int d2k = this->descriptor2kernel["tanhq_nl"][ik]; - int d2i = this->descriptor2index["tanhq_nl"][ik]; - - for (int ir = 0; ir < this->nx; ++ir) - { - dFdqnl[ir] = this->cTF * std::pow(prho[0][ir], 5./3.) - * this->gradient_cpu_ptr[ir * this->ninput + d2i]; - } - this->cal_tool->multiKernel(d2k, dFdqnl, pw_rho, dFdqnl); - for (int ir = 0; ir < this->nx; ++ir) - { - dFdqnl_tot[ir] += dFdqnl[ir]; - } - } - delete[] dFdqnl; - - double * tempQ = new double[this->nx]; - for (int ir = 0; ir < this->nx; ++ir) - { - tempQ[ir] = (this->ml_tanhq)? 3./40. * this->cal_tool->dtanh(this->tanhq[ir], this->chi_q) - * this->gradient_cpu_ptr[ir * this->ninput + this->descriptor2index["tanhq"][0]] * /*Ha2Ry*/ 2. : 0.; - if (this->ml_tanhq_nl) - { - dFdqnl_tot[ir] *= this->cal_tool->dtanh(this->tanhq[ir], this->chi_q); - tempQ[ir] += this->pqcoef / std::pow(prho[0][ir], 5./3.) * dFdqnl_tot[ir]; - } - } - this->cal_tool->Laplacian(tempQ, pw_rho, result.data()); - - if (this->ml_tanhq_nl) - { - for (int ir = 0; ir < this->nx; ++ir) - { - result[ir] += -5./3. * this->q[ir] / prho[0][ir] * dFdqnl_tot[ir]; - } - } - - for (int ir = 0; ir < this->nx; ++ir) - { - rTanhqTanhq_nlTerm[ir] += result[ir]; - } - delete[] tempQ; -} -#endif \ No newline at end of file diff --git a/source/source_pw/module_ofdft/ml_base.cpp b/source/source_pw/module_ofdft/ml_base.cpp new file mode 100644 index 0000000000..4297083ae4 --- /dev/null +++ b/source/source_pw/module_ofdft/ml_base.cpp @@ -0,0 +1,219 @@ +#include "ml_base.h" +#include "npy.hpp" + +#ifdef __MLALGO + +ML_Base::ML_Base(){} + +ML_Base::~ML_Base() +{ + if (this->cal_tool) delete this->cal_tool; +} + +void ML_Base::set_device(std::string device_inpt) +{ + if (device_inpt == "cpu") + { + std::cout << "------------------- Running NN on CPU -------------------" << std::endl; + this->device_type = torch::kCPU; + } + else if (device_inpt == "gpu") + { + if (torch::cuda::cudnn_is_available()) + { + std::cout << "------------------- Running NN on GPU -------------------" << std::endl; + this->device_type = torch::kCUDA; + } + else + { + std::cout << "--------------- Warning: GPU is unaviable ---------------" << std::endl; + std::cout << "------------------- Running NN on CPU -------------------" << std::endl; + this->device_type = torch::kCPU; + } + } + this->device = torch::Device(this->device_type); +} + +void ML_Base::updateInput(const double * const * prho, const ModulePW::PW_Basis *pw_rho) +{ + ModuleBase::timer::tick("ML_Base", "updateInput"); + if (this->gene_data_label["gamma"][0]) + { + this->cal_tool->getGamma(prho, this->gamma); + } + if (this->gene_data_label["p"][0]) + { + this->cal_tool->getNablaRho(prho, pw_rho, this->nablaRho); + this->cal_tool->getP(prho, pw_rho, this->nablaRho, this->p); + } + if (this->gene_data_label["q"][0]) + { + this->cal_tool->getQ(prho, pw_rho, this->q); + } + if (this->gene_data_label["tanhp"][0]) + { + this->cal_tool->getTanhP(this->p, this->tanhp); + } + if (this->gene_data_label["tanhq"][0]) + { + this->cal_tool->getTanhQ(this->q, this->tanhq); + } + + for (int ik = 0; ik < nkernel; ++ik) + { + if (this->gene_data_label["gammanl"][ik]){ + this->cal_tool->getGammanl(ik, this->gamma, pw_rho, this->gammanl[ik]); + } + if (this->gene_data_label["pnl"][ik]){ + this->cal_tool->getPnl(ik, this->p, pw_rho, this->pnl[ik]); + } + if (this->gene_data_label["qnl"][ik]){ + this->cal_tool->getQnl(ik, this->q, pw_rho, this->qnl[ik]); + } + if (this->gene_data_label["xi"][ik]){ + this->cal_tool->getXi(this->gamma, this->gammanl[ik], this->xi[ik]); + } + if (this->gene_data_label["tanhxi"][ik]){ + this->cal_tool->getTanhXi(ik, this->gamma, this->gammanl[ik], this->tanhxi[ik]); + } + if (this->gene_data_label["tanhxi_nl"][ik]){ + this->cal_tool->getTanhXi_nl(ik, this->tanhxi[ik], pw_rho, this->tanhxi_nl[ik]); + } + if (this->gene_data_label["tanh_pnl"][ik]){ + this->cal_tool->getTanh_Pnl(ik, this->pnl[ik], this->tanh_pnl[ik]); + } + if (this->gene_data_label["tanh_qnl"][ik]){ + this->cal_tool->getTanh_Qnl(ik, this->qnl[ik], this->tanh_qnl[ik]); + } + if (this->gene_data_label["tanhp_nl"][ik]){ + this->cal_tool->getTanhP_nl(ik, this->tanhp, pw_rho, this->tanhp_nl[ik]); + } + if (this->gene_data_label["tanhq_nl"][ik]){ + this->cal_tool->getTanhQ_nl(ik, this->tanhq, pw_rho, this->tanhq_nl[ik]); + } + } + ModuleBase::timer::tick("ML_Base", "updateInput"); +} + +void ML_Base::NN_forward(const double * const * prho, const ModulePW::PW_Basis *pw_rho, bool cal_grad) +{ + ModuleBase::timer::tick("ML_Base", "Forward"); + + this->nn->zero_grad(); + this->nn->inputs.requires_grad_(false); + this->nn->set_data(this, this->descriptor_type, this->kernel_index, this->nn->inputs); + this->nn->inputs.requires_grad_(true); + + this->nn->F = this->nn->forward(this->nn->inputs); + if (this->nn->inputs.grad().numel()) + { + this->nn->inputs.grad().zero_(); + } + + if (PARAM.inp.of_ml_feg != 3) + { + this->nn->F = torch::softplus(this->nn->F); + } + if (PARAM.inp.of_ml_feg == 1) + { + this->nn->F = this->nn->F - this->feg_net_F + 1.; + } + else if (PARAM.inp.of_ml_feg == 3) + { + this->nn->F = torch::softplus(this->nn->F - this->feg_net_F + this->feg3_correct); + } + ModuleBase::timer::tick("ML_Base", "Forward"); + + if (cal_grad) + { + ModuleBase::timer::tick("ML_Base", "Backward"); + this->nn->F.backward(torch::ones({this->nx, 1}, this->device_type)); + ModuleBase::timer::tick("ML_Base", "Backward"); + } +} + +torch::Tensor ML_Base::get_data(std::string parameter, const int ikernel){ + + if (parameter == "gamma") return torch::tensor(this->gamma, this->device_type); + if (parameter == "p") return torch::tensor(this->p, this->device_type); + if (parameter == "q") return torch::tensor(this->q, this->device_type); + if (parameter == "tanhp") return torch::tensor(this->tanhp, this->device_type); + if (parameter == "tanhq") return torch::tensor(this->tanhq, this->device_type); + if (parameter == "gammanl") return torch::tensor(this->gammanl[ikernel], this->device_type); + if (parameter == "pnl") return torch::tensor(this->pnl[ikernel], this->device_type); + if (parameter == "qnl") return torch::tensor(this->qnl[ikernel], this->device_type); + if (parameter == "xi") return torch::tensor(this->xi[ikernel], this->device_type); + if (parameter == "tanhxi") return torch::tensor(this->tanhxi[ikernel], this->device_type); + if (parameter == "tanhxi_nl") return torch::tensor(this->tanhxi_nl[ikernel], this->device_type); + if (parameter == "tanh_pnl") return torch::tensor(this->tanh_pnl[ikernel], this->device_type); + if (parameter == "tanh_qnl") return torch::tensor(this->tanh_qnl[ikernel], this->device_type); + if (parameter == "tanhp_nl") return torch::tensor(this->tanhp_nl[ikernel], this->device_type); + if (parameter == "tanhq_nl") return torch::tensor(this->tanhq_nl[ikernel], this->device_type); + return torch::zeros({}); +} + +void ML_Base::get_potential_(const double * const * prho, const ModulePW::PW_Basis *pw_rho, ModuleBase::matrix &rpotential) +{ + ModuleBase::timer::tick("ML_Base", "Pauli Potential"); + + std::vector pauli_potential(this->nx, 0.); + std::vector tau_lda(this->nx, 0.); // Dummy or calculated inside + for (int ir = 0; ir < this->nx; ++ir) + { + tau_lda[ir] = this->energy_prefactor * std::pow(prho[0][ir], this->energy_exponent); + } + + if (this->ml_gammanl) this->potGammanlTerm(prho, tau_lda, pw_rho, pauli_potential); + if (this->ml_xi) this->potXinlTerm(prho, tau_lda, pw_rho, pauli_potential); + if (this->ml_tanhxi) this->potTanhxinlTerm(prho, tau_lda, pw_rho, pauli_potential); + if (this->ml_tanhxi_nl) this->potTanhxi_nlTerm(prho, tau_lda, pw_rho, pauli_potential); + if (this->ml_p || this->ml_pnl) this->potPPnlTerm(prho, tau_lda, pw_rho, pauli_potential); + if (this->ml_q || this->ml_qnl) this->potQQnlTerm(prho, tau_lda, pw_rho, pauli_potential); + if (this->ml_tanh_pnl) this->potTanhpTanh_pnlTerm(prho, tau_lda, pw_rho, pauli_potential); + if (this->ml_tanh_qnl) this->potTanhqTanh_qnlTerm(prho, tau_lda, pw_rho, pauli_potential); + if ((this->ml_tanhp || this->ml_tanhp_nl) && !this->ml_tanh_pnl) this->potTanhpTanhp_nlTerm(prho, tau_lda, pw_rho, pauli_potential); + if ((this->ml_tanhq || this->ml_tanhq_nl) && !this->ml_tanh_qnl) this->potTanhqTanhq_nlTerm(prho, tau_lda, pw_rho, pauli_potential); + + for (int ir = 0; ir < this->nx; ++ir) + { + double factor = tau_lda[ir] / prho[0][ir]; + pauli_potential[ir] += factor * + (this->energy_exponent * this->enhancement_cpu_ptr[ir] + this->potGammaTerm(ir) + this->potPTerm1(ir) + this->potQTerm1(ir) + + this->potXiTerm1(ir) + this->potTanhxiTerm1(ir) + this->potTanhpTerm1(ir) + this->potTanhqTerm1(ir)); + rpotential(0, ir) += pauli_potential[ir]; + } + ModuleBase::timer::tick("ML_Base", "Pauli Potential"); +} + +// IO tools +void ML_Base::loadVector(std::string filename, std::vector &data) +{ + npy::npy_data d = npy::read_npy(filename); + data = d.data; +} + +void ML_Base::dumpVector(std::string filename, const std::vector &data) +{ + npy::npy_data_ptr d; + d.data_ptr = data.data(); + d.shape = {(long unsigned) this->cal_tool->nx}; + d.fortran_order = false; + npy::write_npy(filename, d); +} + +void ML_Base::dumpTensor(std::string filename, const torch::Tensor &data) +{ + std::cout << "Dumping " << filename << std::endl; + torch::Tensor data_cpu = data.to(this->device_CPU).contiguous(); + std::vector v(data_cpu.data_ptr(), data_cpu.data_ptr() + data_cpu.numel()); + this->dumpVector(filename, v); +} + +void ML_Base::dumpMatrix(std::string filename, const ModuleBase::matrix &data) +{ + std::cout << "Dumping " << filename << std::endl; + std::vector v(data.c, data.c + this->nx); + this->dumpVector(filename, v); +} + +#endif diff --git a/source/source_pw/module_ofdft/ml_base.h b/source/source_pw/module_ofdft/ml_base.h new file mode 100644 index 0000000000..c0ec00c11e --- /dev/null +++ b/source/source_pw/module_ofdft/ml_base.h @@ -0,0 +1,144 @@ +#ifndef ML_BASE_H +#define ML_BASE_H + +#include +#include +#include +#include +#include + +#ifdef __MLALGO +#include "source_pw/module_ofdft/ml_tools/nn_of.h" +#include "source_io/module_ml/cal_mlkedf_descriptors.h" + +// The ML_Base class encapsulates common functionality for Machine Learning based +// constructs in OFDFT and EXX. +class ML_Base +{ +public: + ML_Base(); + ~ML_Base(); + + // Common Interface + void set_device(std::string device_inpt); + + // Tools + void loadVector(std::string filename, std::vector &data); + void dumpVector(std::string filename, const std::vector &data); + void dumpTensor(std::string filename, const torch::Tensor &data); + void dumpMatrix(std::string filename, const ModuleBase::matrix &data); + + int nx_tot = 0; // equal to nx (called by NN) + torch::Tensor get_data(std::string parameter, const int ikernel); + +protected: + void updateInput(const double * const * prho, const ModulePW::PW_Basis *pw_rho); + void NN_forward(const double * const * prho, const ModulePW::PW_Basis *pw_rho, bool cal_grad); + void get_potential_(const double * const * prho, const ModulePW::PW_Basis *pw_rho, ModuleBase::matrix &rpotential); + + // Potential Terms - these appear identical in both classes or are intended to be shared + double potGammaTerm(int ir); + double potPTerm1(int ir); + double potQTerm1(int ir); + double potXiTerm1(int ir); + double potTanhxiTerm1(int ir); + double potTanhpTerm1(int ir); + double potTanhqTerm1(int ir); + + // Derived classes should ensure they can work with these signatures. + // Note: ML_EXX originally passed tau_lda for some of these. + // If tau_lda is needed, derived classes can override or we can add it to member variables. + // For now, keeping signatures compatible with member access. + void potGammanlTerm(const double * const *prho, const std::vector &tau_lda, const ModulePW::PW_Basis *pw_rho, std::vector &rGammanlTerm); + void potXinlTerm(const double * const *prho, const std::vector &tau_lda, const ModulePW::PW_Basis *pw_rho, std::vector &rXinlTerm); + void potTanhxinlTerm(const double * const *prho, const std::vector &tau_lda, const ModulePW::PW_Basis *pw_rho, std::vector &rTanhxinlTerm); + void potTanhxi_nlTerm(const double * const *prho, const std::vector &tau_lda, const ModulePW::PW_Basis *pw_rho, std::vector &rTanhxi_nlTerm); + void potPPnlTerm(const double * const *prho, const std::vector &tau_lda, const ModulePW::PW_Basis *pw_rho, std::vector &rPPnlTerm); + void potQQnlTerm(const double * const *prho, const std::vector &tau_lda, const ModulePW::PW_Basis *pw_rho, std::vector &rQQnlTerm); + void potTanhpTanh_pnlTerm(const double * const *prho, const std::vector &tau_lda, const ModulePW::PW_Basis *pw_rho, std::vector &rTanhpTanh_pnlTerm); + void potTanhqTanh_qnlTerm(const double * const *prho, const std::vector &tau_lda, const ModulePW::PW_Basis *pw_rho, std::vector &rTanhqTanh_qnlTerm); + void potTanhpTanhp_nlTerm(const double * const *prho, const std::vector &tau_lda, const ModulePW::PW_Basis *pw_rho, std::vector &rTanhpTanhp_nlTerm); + void potTanhqTanhq_nlTerm(const double * const *prho, const std::vector &tau_lda, const ModulePW::PW_Basis *pw_rho, std::vector &rTanhqTanhq_nlTerm); + +protected: + // --- Member Variables (Common) --- + + ModuleIO::Cal_MLKEDF_Descriptors *cal_tool = nullptr; + + int nx = 0; // number of grid points + double dV = 0.; + + // Constants + double pqcoef = 1.0 / (4.0 * std::pow(3*std::pow(M_PI, 2.0), 2.0/3.0)); // coefficient of p and q + double feg_net_F = 0.0; + double feg3_correct = 0.541324854612918; // ln(e - 1) + double energy_prefactor = 0.0; // cTF for KEDF, cDirac for EXX + double energy_exponent = 0.0; // 5/3 for KEDF, 4/3 for EXX + + // Descriptors and hyperparameters + int ninput = 0; // number of descriptors + std::vector gamma; + std::vector p; + std::vector q; + std::vector> gammanl; + std::vector> pnl; + std::vector> qnl; + std::vector> nablaRho; + + // Parameters + std::vector chi_xi; + double chi_p = 1.0; + double chi_q = 1.0; + std::vector> xi; + std::vector> tanhxi; + std::vector> tanhxi_nl; + std::vector tanhp; + std::vector tanhq; + + // plan 1 + std::vector chi_pnl; + std::vector chi_qnl; + std::vector> tanh_pnl; + std::vector> tanh_qnl; + // plan 2 + std::vector> tanhp_nl; + std::vector> tanhq_nl; + + // GPU / Device + torch::DeviceType device_type = torch::kCPU; + torch::Device device = torch::Device(torch::kCPU); + torch::Device device_CPU = torch::Device(torch::kCPU); + + // Neural Network + std::shared_ptr nn; + double* enhancement_cpu_ptr = nullptr; + double* gradient_cpu_ptr = nullptr; + int nkernel = 1; + + // Switch flags + bool ml_gamma = false; + bool ml_p = false; + bool ml_q = false; + bool ml_tanhp = false; + bool ml_tanhq = false; + bool ml_gammanl = false; + bool ml_pnl = false; + bool ml_qnl = false; + bool ml_xi = false; + bool ml_tanhxi = false; + bool ml_tanhxi_nl = false; + bool ml_tanh_pnl = false; + bool ml_tanh_qnl = false; + bool ml_tanhp_nl = false; + bool ml_tanhq_nl = false; + + // Maps + std::vector descriptor_type; + std::vector kernel_index; + std::map> descriptor2kernel; + std::map> descriptor2index; + std::map> gene_data_label; +}; + +#endif // __MLALGO +#endif // ML_BASE_H diff --git a/source/source_pw/module_ofdft/ml_base_pot.cpp b/source/source_pw/module_ofdft/ml_base_pot.cpp new file mode 100644 index 0000000000..b13e5552a7 --- /dev/null +++ b/source/source_pw/module_ofdft/ml_base_pot.cpp @@ -0,0 +1,470 @@ +#include "ml_base.h" + +#ifdef __MLALGO + +double ML_Base::potGammaTerm(int ir) +{ + return (this->ml_gamma) ? 1./3. * gamma[ir] * this->gradient_cpu_ptr[ir * this->ninput + this->descriptor2index["gamma"][0]] : 0.; +} +double ML_Base::potPTerm1(int ir) +{ + return (this->ml_p) ? - 8./3. * p[ir] * this->gradient_cpu_ptr[ir * this->ninput + this->descriptor2index["p"][0]] : 0.; +} +double ML_Base::potQTerm1(int ir) +{ + return (this->ml_q) ? - 5./3. * q[ir] * this->gradient_cpu_ptr[ir * this->ninput + this->descriptor2index["q"][0]] : 0.; +} +double ML_Base::potXiTerm1(int ir) +{ + double result = 0.; + for (int ik = 0; ik < this->descriptor2kernel["xi"].size(); ++ik) + { + int d2k = this->descriptor2kernel["xi"][ik]; + int d2i = this->descriptor2index["xi"][ik]; + result += -1./3. * xi[d2k][ir] * this->gradient_cpu_ptr[ir * this->ninput + d2i]; + } + return result; +} +double ML_Base::potTanhxiTerm1(int ir) +{ + double result = 0.; + for (int ik = 0; ik < this->descriptor2kernel["tanhxi"].size(); ++ik) + { + int d2k = this->descriptor2kernel["tanhxi"][ik]; + int d2i = this->descriptor2index["tanhxi"][ik]; + result += -1./3. * xi[d2k][ir] * this->cal_tool->dtanh(this->tanhxi[d2k][ir], this->chi_xi[d2k]) + * this->gradient_cpu_ptr[ir * this->ninput + d2i]; + } + return result; +} +double ML_Base::potTanhpTerm1(int ir) +{ + return (this->ml_tanhp) ? - 8./3. * p[ir] * this->cal_tool->dtanh(this->tanhp[ir], this->chi_p) + * this->gradient_cpu_ptr[ir * this->ninput + this->descriptor2index["tanhp"][0]] : 0.; +} +double ML_Base::potTanhqTerm1(int ir) +{ + return (this->ml_tanhq) ? - 5./3. * q[ir] * this->cal_tool->dtanh(this->tanhq[ir], this->chi_q) + * this->gradient_cpu_ptr[ir * this->ninput + this->descriptor2index["tanhq"][0]] : 0.; +} + +// Implementations of nl terms using energy_prefactor/exponent logic +void ML_Base::potGammanlTerm(const double * const *prho, const std::vector &tau_lda, const ModulePW::PW_Basis *pw_rho, std::vector &rGammanlTerm) +{ + double *dFdgammanl = new double[this->nx]; + for (int ik = 0; ik < this->descriptor2kernel["gammanl"].size(); ++ik) + { + int d2k = this->descriptor2kernel["gammanl"][ik]; + int d2i = this->descriptor2index["gammanl"][ik]; + for (int ir = 0; ir < this->nx; ++ir) + { + dFdgammanl[ir] = tau_lda[ir] * this->gradient_cpu_ptr[ir * this->ninput + d2i]; + } + this->cal_tool->multiKernel(d2k, dFdgammanl, pw_rho, dFdgammanl); + for (int ir = 0; ir < this->nx; ++ir) + { + rGammanlTerm[ir] += 1./3. * this->gamma[ir] / prho[0][ir] * dFdgammanl[ir]; + } + } + delete[] dFdgammanl; +} + +void ML_Base::potXinlTerm(const double * const *prho, const std::vector &tau_lda, const ModulePW::PW_Basis *pw_rho, std::vector &rXinlTerm) +{ + double *dFdxi = new double[this->nx]; + for (int ik = 0; ik < this->descriptor2kernel["xi"].size(); ++ik) + { + int d2k = this->descriptor2kernel["xi"][ik]; + int d2i = this->descriptor2index["xi"][ik]; + for (int ir = 0; ir < this->nx; ++ir) + { + dFdxi[ir] = tau_lda[ir] / std::pow(prho[0][ir], 1./3.) * this->gradient_cpu_ptr[ir * this->ninput + d2i]; + } + this->cal_tool->multiKernel(d2k, dFdxi, pw_rho, dFdxi); + for (int ir = 0; ir < this->nx; ++ir) + { + rXinlTerm[ir] += 1./3. * std::pow(prho[0][ir], -2./3.) * dFdxi[ir]; + } + } + delete[] dFdxi; +} + +void ML_Base::potTanhxinlTerm(const double * const *prho, const std::vector &tau_lda, const ModulePW::PW_Basis *pw_rho, std::vector &rTanhxinlTerm) +{ + double *dFdtanhxi = new double[this->nx]; + for (int ik = 0; ik < this->descriptor2kernel["tanhxi"].size(); ++ik) + { + int d2k = this->descriptor2kernel["tanhxi"][ik]; + int d2i = this->descriptor2index["tanhxi"][ik]; + for (int ir = 0; ir < this->nx; ++ir) + { + dFdtanhxi[ir] = tau_lda[ir] / std::pow(prho[0][ir], 1./3.) * this->cal_tool->dtanh(this->tanhxi[d2k][ir], this->chi_xi[d2k]) + * this->gradient_cpu_ptr[ir * this->ninput + d2i]; + } + this->cal_tool->multiKernel(d2k, dFdtanhxi, pw_rho, dFdtanhxi); + for (int ir = 0; ir < this->nx; ++ir) + { + rTanhxinlTerm[ir] += 1./3. * std::pow(prho[0][ir], -2./3.) * dFdtanhxi[ir]; + } + } + delete[] dFdtanhxi; +} + +void ML_Base::potTanhxi_nlTerm(const double * const *prho, const std::vector &tau_lda, const ModulePW::PW_Basis *pw_rho, std::vector &rTanhxi_nlTerm) +{ + double *dFdtanhxi_nl = new double[this->nx]; + double *dFdtanhxi_nl_nl = new double[this->nx]; + std::vector result(this->nx, 0.); + for (int ik = 0; ik < this->descriptor2kernel["tanhxi_nl"].size(); ++ik) + { + int d2k = this->descriptor2kernel["tanhxi_nl"][ik]; + int d2i = this->descriptor2index["tanhxi_nl"][ik]; + for (int ir = 0; ir < this->nx; ++ir) + { + dFdtanhxi_nl[ir] = tau_lda[ir] * this->gradient_cpu_ptr[ir * this->ninput + d2i]; + } + this->cal_tool->multiKernel(d2k, dFdtanhxi_nl, pw_rho, dFdtanhxi_nl); + for (int ir = 0; ir < this->nx; ++ir) + { + dFdtanhxi_nl[ir] *= this->cal_tool->dtanh(this->tanhxi[d2k][ir], this->chi_xi[d2k]) / std::pow(prho[0][ir], 1./3.); + } + this->cal_tool->multiKernel(d2k, dFdtanhxi_nl, pw_rho, dFdtanhxi_nl_nl); + for (int ir = 0; ir < this->nx; ++ir) + { + result[ir] += dFdtanhxi_nl_nl[ir] - dFdtanhxi_nl[ir] * this->xi[d2k][ir]; + } + } + for (int ir = 0; ir < this->nx; ++ir) + { + rTanhxi_nlTerm[ir] += result[ir] * 1./3. * std::pow(prho[0][ir], -2./3.); + } + delete[] dFdtanhxi_nl; + delete[] dFdtanhxi_nl_nl; +} + +// get contribution of p and pnl +void ML_Base::potPPnlTerm(const double * const *prho, const std::vector &tau_lda, const ModulePW::PW_Basis *pw_rho, std::vector &rPPnlTerm) +{ + double *dFdpnl = new double[this->nx]; + std::vector dFdpnl_tot(this->nx, 0.); + std::vector result(this->nx, 0.); + for (int ik = 0; ik < this->descriptor2index["pnl"].size(); ++ik) + { + int d2k = this->descriptor2kernel["pnl"][ik]; + int d2i = this->descriptor2index["pnl"][ik]; + + for (int ir = 0; ir < this->nx; ++ir) + { + dFdpnl[ir] = tau_lda[ir] * this->gradient_cpu_ptr[ir * this->ninput + d2i]; + } + this->cal_tool->multiKernel(d2k, dFdpnl, pw_rho, dFdpnl); + for (int ir = 0; ir < this->nx; ++ir) + { + dFdpnl_tot[ir] += dFdpnl[ir]; + } + } + delete[] dFdpnl; + + double ** tempP = new double*[3]; + for (int i = 0; i < 3; ++i) + { + tempP[i] = new double[this->nx]; + for (int ir = 0; ir < this->nx; ++ir) + { + tempP[i][ir] = (this->ml_p)? - this->pqcoef * 2. * this->gradient_cpu_ptr[ir * this->ninput + this->descriptor2index["p"][0]] * this->nablaRho[i][ir] * tau_lda[ir] / std::pow(prho[0][ir], 8./3.): 0.; + if (this->ml_pnl) + { + tempP[i][ir] += - this->pqcoef * 2. * this->nablaRho[i][ir] / std::pow(prho[0][ir], 8./3.) * dFdpnl_tot[ir]; + } + } + } + this->cal_tool->divergence(tempP, pw_rho, result.data()); + + if (this->ml_pnl) + { + for (int ir = 0; ir < this->nx; ++ir) + { + result[ir] += -8./3. * this->p[ir]/prho[0][ir] * dFdpnl_tot[ir]; + } + } + + for (int ir = 0; ir < this->nx; ++ir) + { + rPPnlTerm[ir] += result[ir]; + } + + for (int i = 0; i < 3; ++i) + { + delete[] tempP[i]; + } + delete[] tempP; +} + + +void ML_Base::potQQnlTerm(const double * const *prho, const std::vector &tau_lda, const ModulePW::PW_Basis *pw_rho, std::vector &rQQnlTerm) +{ + double *dFdqnl = new double[this->nx]; + std::vector dFdqnl_tot(this->nx, 0.); + std::vector result(this->nx, 0.); + for (int ik = 0; ik < this->descriptor2index["qnl"].size(); ++ik) + { + int d2k = this->descriptor2kernel["qnl"][ik]; + int d2i = this->descriptor2index["qnl"][ik]; + + for (int ir = 0; ir < this->nx; ++ir) + { + dFdqnl[ir] = tau_lda[ir] * this->gradient_cpu_ptr[ir * this->ninput + d2i]; + } + this->cal_tool->multiKernel(d2k, dFdqnl, pw_rho, dFdqnl); + for (int ir = 0; ir < this->nx; ++ir) + { + dFdqnl_tot[ir] += dFdqnl[ir]; + } + } + delete[] dFdqnl; + + double * tempQ = new double[this->nx]; + for (int ir = 0; ir < this->nx; ++ir) + { + tempQ[ir] = (this->ml_q)? this->pqcoef * this->gradient_cpu_ptr[ir * this->ninput + this->descriptor2index["q"][0]] * tau_lda[ir] / std::pow(prho[0][ir], 5./3.) : 0.; + if (this->ml_qnl) + { + tempQ[ir] += this->pqcoef / std::pow(prho[0][ir], 5./3.) * dFdqnl_tot[ir]; + } + } + this->cal_tool->Laplacian(tempQ, pw_rho, result.data()); + if (this->ml_qnl) + { + for (int ir = 0; ir < this->nx; ++ir) + { + result[ir] += -5./3. * this->q[ir] / prho[0][ir] * dFdqnl_tot[ir]; + } + } + + for (int ir = 0; ir < this->nx; ++ir) + { + rQQnlTerm[ir] += result[ir]; + } + delete[] tempQ; +} + + +void ML_Base::potTanhpTanh_pnlTerm(const double * const *prho, const std::vector &tau_lda, const ModulePW::PW_Basis *pw_rho, std::vector &rTanhpTanh_pnlTerm) +{ + // Note we assume that tanhp_nl and tanh_pnl will NOT be used together. + double *dFdpnl = new double[this->nx]; + std::vector dFdpnl_tot(this->nx, 0.); + std::vector result(this->nx, 0.); + for (int ik = 0; ik < this->descriptor2kernel["tanh_pnl"].size(); ++ik) + { + int d2k = this->descriptor2kernel["tanh_pnl"][ik]; + int d2i = this->descriptor2index["tanh_pnl"][ik]; + + for (int ir = 0; ir < this->nx; ++ir) + { + dFdpnl[ir] = tau_lda[ir] * this->cal_tool->dtanh(this->tanh_pnl[d2k][ir], this->chi_pnl[d2k]) + * this->gradient_cpu_ptr[ir * this->ninput + d2i]; + } + this->cal_tool->multiKernel(d2k, dFdpnl, pw_rho, dFdpnl); + for (int ir = 0; ir < this->nx; ++ir) + { + dFdpnl_tot[ir] += dFdpnl[ir]; + } + } + delete[] dFdpnl; + + double ** tempP = new double*[3]; + for (int i = 0; i < 3; ++i) + { + tempP[i] = new double[this->nx]; + for (int ir = 0; ir < this->nx; ++ir) + { + tempP[i][ir] = (this->ml_tanhp)? - this->pqcoef * 2. * this->cal_tool->dtanh(this->tanhp[ir], this->chi_p) + * this->gradient_cpu_ptr[ir * this->ninput + this->descriptor2index["tanhp"][0]] * this->nablaRho[i][ir] * tau_lda[ir] / std::pow(prho[0][ir], 8./3.) : 0.; + if (this->ml_tanh_pnl) + { + tempP[i][ir] += - this->pqcoef * 2. * this->nablaRho[i][ir] / std::pow(prho[0][ir], 8./3.) * dFdpnl_tot[ir]; + } + } + } + this->cal_tool->divergence(tempP, pw_rho, result.data()); + + if (this->ml_tanh_pnl) + { + for (int ir = 0; ir < this->nx; ++ir) + { + result[ir] += -8./3. * this->p[ir]/prho[0][ir] * dFdpnl_tot[ir]; + } + } + + for (int ir = 0; ir < this->nx; ++ir) + { + rTanhpTanh_pnlTerm[ir] += result[ir]; + } + for (int i = 0; i < 3; ++i) + { + delete[] tempP[i]; + } + delete[] tempP; +} + +void ML_Base::potTanhqTanh_qnlTerm(const double * const *prho, const std::vector &tau_lda, const ModulePW::PW_Basis *pw_rho, std::vector &rTanhqTanh_qnlTerm) +{ + // Note we assume that tanhq_nl and tanh_qnl will NOT be used together. + double *dFdqnl = new double[this->nx]; + std::vector dFdqnl_tot(this->nx, 0.); + std::vector result(this->nx, 0.); + for (int ik = 0; ik < this->descriptor2kernel["tanh_qnl"].size(); ++ik) + { + int d2k = this->descriptor2kernel["tanh_qnl"][ik]; + int d2i = this->descriptor2index["tanh_qnl"][ik]; + + for (int ir = 0; ir < this->nx; ++ir) + { + dFdqnl[ir] = tau_lda[ir] * this->cal_tool->dtanh(this->tanh_qnl[d2k][ir], this->chi_qnl[d2k]) + * this->gradient_cpu_ptr[ir * this->ninput + d2i]; + } + this->cal_tool->multiKernel(d2k, dFdqnl, pw_rho, dFdqnl); + for (int ir = 0; ir < this->nx; ++ir) + { + dFdqnl_tot[ir] += dFdqnl[ir]; + } + } + delete[] dFdqnl; + + double * tempQ = new double[this->nx]; + for (int ir = 0; ir < this->nx; ++ir) + { + tempQ[ir] = (this->ml_tanhq)? this->pqcoef * this->cal_tool->dtanh(this->tanhq[ir], this->chi_q) + * this->gradient_cpu_ptr[ir * this->ninput + this->descriptor2index["tanhq"][0]] * tau_lda[ir] / std::pow(prho[0][ir], 5./3.) : 0.; + if (this->ml_tanh_qnl) + { + tempQ[ir] += this->pqcoef / std::pow(prho[0][ir], 5./3.) * dFdqnl_tot[ir]; + } + } + this->cal_tool->Laplacian(tempQ, pw_rho, result.data()); + if (this->ml_tanh_qnl) + { + for (int ir = 0; ir < this->nx; ++ir) + { + result[ir] += -5./3. * this->q[ir] / prho[0][ir] * dFdqnl_tot[ir]; + } + } + + for (int ir = 0; ir < this->nx; ++ir) + { + rTanhqTanh_qnlTerm[ir] += result[ir]; + } + delete[] tempQ; +} + +// Note we assume that tanhp_nl and tanh_pnl will NOT be used together. +void ML_Base::potTanhpTanhp_nlTerm(const double * const *prho, const std::vector &tau_lda, const ModulePW::PW_Basis *pw_rho, std::vector &rTanhpTanhp_nlTerm) +{ + double *dFdpnl = new double[this->nx]; + std::vector dFdpnl_tot(this->nx, 0.); + std::vector result(this->nx, 0.); + for (int ik = 0; ik < this->descriptor2kernel["tanhp_nl"].size(); ++ik) + { + int d2k = this->descriptor2kernel["tanhp_nl"][ik]; + int d2i = this->descriptor2index["tanhp_nl"][ik]; + + for (int ir = 0; ir < this->nx; ++ir) + { + dFdpnl[ir] = tau_lda[ir] + * this->gradient_cpu_ptr[ir * this->ninput + d2i]; + } + this->cal_tool->multiKernel(d2k, dFdpnl, pw_rho, dFdpnl); + for (int ir = 0; ir < this->nx; ++ir) + { + dFdpnl_tot[ir] += this->cal_tool->dtanh(this->tanhp[ir], this->chi_p) * dFdpnl[ir]; + } + } + delete[] dFdpnl; + + double ** tempP = new double*[3]; + for (int i = 0; i < 3; ++i) + { + tempP[i] = new double[this->nx]; + for (int ir = 0; ir < this->nx; ++ir) + { + tempP[i][ir] = (this->ml_tanhp)? - this->pqcoef * 2. * this->cal_tool->dtanh(this->tanhp[ir], this->chi_p) + * this->gradient_cpu_ptr[ir * this->ninput + this->descriptor2index["tanhp"][0]] * this->nablaRho[i][ir] * tau_lda[ir] / std::pow(prho[0][ir], 8./3.) : 0.; + if (this->ml_tanhp_nl) + { + tempP[i][ir] += - this->pqcoef * 2. * this->nablaRho[i][ir] / std::pow(prho[0][ir], 8./3.) * dFdpnl_tot[ir]; + } + } + } + this->cal_tool->divergence(tempP, pw_rho, result.data()); + + if (this->ml_tanhp_nl) + { + for (int ir = 0; ir < this->nx; ++ir) + { + result[ir] += -8./3. * this->p[ir]/prho[0][ir] * dFdpnl_tot[ir]; + } + } + + for (int ir = 0; ir < this->nx; ++ir) + { + rTanhpTanhp_nlTerm[ir] += result[ir]; + } + for (int i = 0; i < 3; ++i) + { + delete[] tempP[i]; + } + delete[] tempP; +} + +void ML_Base::potTanhqTanhq_nlTerm(const double * const *prho, const std::vector &tau_lda, const ModulePW::PW_Basis *pw_rho, std::vector &rTanhqTanhq_nlTerm) +{ + double *dFdqnl = new double[this->nx]; + std::vector dFdqnl_tot(this->nx, 0.); + std::vector result(this->nx, 0.); + for (int ik = 0; ik < this->descriptor2kernel["tanhq_nl"].size(); ++ik) + { + int d2k = this->descriptor2kernel["tanhq_nl"][ik]; + int d2i = this->descriptor2index["tanhq_nl"][ik]; + + for (int ir = 0; ir < this->nx; ++ir) + { + dFdqnl[ir] = tau_lda[ir] + * this->gradient_cpu_ptr[ir * this->ninput + d2i]; + } + this->cal_tool->multiKernel(d2k, dFdqnl, pw_rho, dFdqnl); + for (int ir = 0; ir < this->nx; ++ir) + { + dFdqnl_tot[ir] += dFdqnl[ir]; + } + } + delete[] dFdqnl; + + double * tempQ = new double[this->nx]; + for (int ir = 0; ir < this->nx; ++ir) + { + tempQ[ir] = (this->ml_tanhq)? this->pqcoef * this->cal_tool->dtanh(this->tanhq[ir], this->chi_q) + * this->gradient_cpu_ptr[ir * this->ninput + this->descriptor2index["tanhq"][0]] * tau_lda[ir] / std::pow(prho[0][ir], 5./3.) : 0.; + if (this->ml_tanhq_nl) + { + dFdqnl_tot[ir] *= this->cal_tool->dtanh(this->tanhq[ir], this->chi_q); + tempQ[ir] += this->pqcoef / std::pow(prho[0][ir], 5./3.) * dFdqnl_tot[ir]; + } + } + this->cal_tool->Laplacian(tempQ, pw_rho, result.data()); + + if (this->ml_tanhq_nl) + { + for (int ir = 0; ir < this->nx; ++ir) + { + result[ir] += -5./3. * this->q[ir] / prho[0][ir] * dFdqnl_tot[ir]; + } + } + + for (int ir = 0; ir < this->nx; ++ir) + { + rTanhqTanhq_nlTerm[ir] += result[ir]; + } + delete[] tempQ; +} +#endif \ No newline at end of file diff --git a/source/source_pw/module_ofdft/ml_tools/data.cpp b/source/source_pw/module_ofdft/ml_tools/data.cpp index cd6585bf25..75ac968f0f 100644 --- a/source/source_pw/module_ofdft/ml_tools/data.cpp +++ b/source/source_pw/module_ofdft/ml_tools/data.cpp @@ -208,7 +208,7 @@ void Data::init_data(const int nkernel, const int ndata, const int fftdim, const if (this->load_tanhxi[ik]){ this->tanhxi[ik] = torch::zeros({ndata, fftdim, fftdim, fftdim}).to(device); } - if (this->load_tanhxi_nl[ik{ + if (this->load_tanhxi_nl[ik]){ this->tanhxi_nl[ik] = torch::zeros({ndata, fftdim, fftdim, fftdim}).to(device); } if (this->load_tanh_pnl[ik]){ @@ -246,27 +246,28 @@ void Data::load_data_( for (int idata = 0; idata < ndata; ++idata) { - this->loadTensor(dir[idata] + "/rho.npy", cshape, fortran_order, container, idata, fftdim, rho); + this->loadTensor(dir[idata] + "/rho.npy", idata, fftdim, rho); if (this->load_gamma){ - this->loadTensor(dir[idata] + "/gamma.npy", cshape, fortran_order, container, idata, fftdim, gamma); + this->loadTensor(dir[idata] + "/gamma.npy", idata, fftdim, gamma); } if (this->load_p){ - this->loadTensor(dir[idata] + "/p.npy", cshape, fortran_order, container, idata, fftdim, p); - npy::LoadArrayFromNumpy(dir[idata] + "/nablaRhox.npy", cshape, fortran_order, container); + this->loadTensor(dir[idata] + "/p.npy", idata, fftdim, p); + this->loadVector(dir[idata] + "/nablaRhox.npy", container); + // npy::LoadArrayFromNumpy(dir[idata] + "/nablaRhox.npy", cshape, fortran_order, container); nablaRho[idata][0] = torch::tensor(container).reshape({fftdim, fftdim, fftdim}); - npy::LoadArrayFromNumpy(dir[idata] + "/nablaRhoy.npy", cshape, fortran_order, container); + this->loadVector(dir[idata] + "/nablaRhoy.npy", container); nablaRho[idata][1] = torch::tensor(container).reshape({fftdim, fftdim, fftdim}); - npy::LoadArrayFromNumpy(dir[idata] + "/nablaRhoz.npy", cshape, fortran_order, container); + this->loadVector(dir[idata] + "/nablaRhoz.npy", container); nablaRho[idata][2] = torch::tensor(container).reshape({fftdim, fftdim, fftdim}); } if (this->load_q){ - this->loadTensor(dir[idata] + "/q.npy", cshape, fortran_order, container, idata, fftdim, q); + this->loadTensor(dir[idata] + "/q.npy", idata, fftdim, q); } if (this->load_tanhp){ - this->loadTensor(dir[idata] + "/tanhp.npy", cshape, fortran_order, container, idata, fftdim, tanhp); + this->loadTensor(dir[idata] + "/tanhp.npy", idata, fftdim, tanhp); } if (this->load_tanhq){ - this->loadTensor(dir[idata] + "/tanhq.npy", cshape, fortran_order, container, idata, fftdim, tanhq); + this->loadTensor(dir[idata] + "/tanhq.npy", idata, fftdim, tanhq); } for (int ik = 0; ik < input.nkernel; ++ik) @@ -275,66 +276,79 @@ void Data::load_data_( double kscaling = input.kernel_scaling[ik]; if (this->load_gammanl[ik]){ - this->loadTensor(dir[idata] + this->file_name("gammanl", ktype, kscaling), cshape, fortran_order, container, idata, fftdim, gammanl[ik]); + this->loadTensor(dir[idata] + this->file_name("gammanl", ktype, kscaling), idata, fftdim, gammanl[ik]); } if (this->load_pnl[ik]){ - this->loadTensor(dir[idata] + this->file_name("pnl", ktype, kscaling), cshape, fortran_order, container, idata, fftdim, pnl[ik]); + this->loadTensor(dir[idata] + this->file_name("pnl", ktype, kscaling), idata, fftdim, pnl[ik]); } if (this->load_qnl[ik]){ - this->loadTensor(dir[idata] + this->file_name("qnl", ktype, kscaling), cshape, fortran_order, container, idata, fftdim, qnl[ik]); + this->loadTensor(dir[idata] + this->file_name("qnl", ktype, kscaling), idata, fftdim, qnl[ik]); } if (this->load_xi[ik]){ - this->loadTensor(dir[idata] + this->file_name("xi", ktype, kscaling), cshape, fortran_order, container, idata, fftdim, xi[ik]); + this->loadTensor(dir[idata] + this->file_name("xi", ktype, kscaling), idata, fftdim, xi[ik]); } if (this->load_tanhxi[ik]){ - this->loadTensor(dir[idata] + this->file_name("tanhxi", ktype, kscaling), cshape, fortran_order, container, idata, fftdim, tanhxi[ik]); + this->loadTensor(dir[idata] + this->file_name("tanhxi", ktype, kscaling), idata, fftdim, tanhxi[ik]); } if (this->load_tanhxi_nl[ik]){ - this->loadTensor(dir[idata] + this->file_name("tanhxi_nl", ktype, kscaling), cshape, fortran_order, container, idata, fftdim, tanhxi_nl[ik]); + this->loadTensor(dir[idata] + this->file_name("tanhxi_nl", ktype, kscaling), idata, fftdim, tanhxi_nl[ik]); } if (this->load_tanh_pnl[ik]){ - this->loadTensor(dir[idata] + this->file_name("tanh_pnl", ktype, kscaling), cshape, fortran_order, container, idata, fftdim, tanh_pnl[ik]); + this->loadTensor(dir[idata] + this->file_name("tanh_pnl", ktype, kscaling), idata, fftdim, tanh_pnl[ik]); } if (this->load_tanh_qnl[ik]){ - this->loadTensor(dir[idata] + this->file_name("tanh_qnl", ktype, kscaling), cshape, fortran_order, container, idata, fftdim, tanh_qnl[ik]); + this->loadTensor(dir[idata] + this->file_name("tanh_qnl", ktype, kscaling), idata, fftdim, tanh_qnl[ik]); } if (this->load_tanhp_nl[ik]){ - this->loadTensor(dir[idata] + this->file_name("tanhp_nl", ktype, kscaling), cshape, fortran_order, container, idata, fftdim, tanhp_nl[ik]); + this->loadTensor(dir[idata] + this->file_name("tanhp_nl", ktype, kscaling), idata, fftdim, tanhp_nl[ik]); } if (this->load_tanhq_nl[ik]){ - this->loadTensor(dir[idata] + this->file_name("tanhq_nl", ktype, kscaling), cshape, fortran_order, container, idata, fftdim, tanhq_nl[ik]); + this->loadTensor(dir[idata] + this->file_name("tanhq_nl", ktype, kscaling), idata, fftdim, tanhq_nl[ik]); } } - this->loadTensor(dir[idata] + "/enhancement.npy", cshape, fortran_order, container, idata, fftdim, enhancement); + this->loadTensor(dir[idata] + "/enhancement.npy", idata, fftdim, enhancement); enhancement_mean[idata] = torch::mean(enhancement[idata]); tau_mean[idata] = torch::mean(torch::pow(rho[idata], input.exponent/3.) * enhancement[idata]); if (input.loss == "potential" || input.loss == "both" || input.loss == "both_new") { - this->loadTensor(dir[idata] + "/pauli.npy", cshape, fortran_order, container, idata, fftdim, pauli); + this->loadTensor(dir[idata] + "/pauli.npy", idata, fftdim, pauli); pauli_mean[idata] = torch::mean(pauli[idata]); } } enhancement.resize_({this->nx_tot, 1}); pauli.resize_({nx_tot, 1}); - this->tau_tf = this->cTF * torch::pow(this->rho, 5./3.); + if (input.energy_type == "kedf") + { + this->tau_exp = 5. / 3.; + this->tau_lda = this->cTF * torch::pow(this->rho, this->tau_exp); + } + else if (input.energy_type == "exx") + { + this->tau_exp = 4. / 3.; + this->tau_lda = this->cDirac * torch::pow(this->rho, this->tau_exp); + } // Input::print("load_data done"); } void Data::loadTensor( std::string file, - std::vector cshape, - bool fortran_order, - std::vector &container, const int index, const int fftdim, torch::Tensor &data ) { - npy::LoadArrayFromNumpy(file, cshape, fortran_order, container); - data[index] = torch::tensor(container).reshape({fftdim, fftdim, fftdim}); + npy::npy_data d = npy::read_npy(file); + data[index] = torch::tensor(d.data).reshape({fftdim, fftdim, fftdim}); +} + +void Data::loadVector(std::string file, + std::vector &data) +{ + npy::npy_data d = npy::read_npy(file); + data = d.data; } void Data::dumpTensor(const torch::Tensor &data, std::string filename, int nx) @@ -343,9 +357,11 @@ void Data::dumpTensor(const torch::Tensor &data, std::string filename, int nx) for (int ir = 0; ir < nx; ++ir){ v[ir] = data[ir].item(); } - // std::vector v(data.data_ptr(), data.data_ptr() + data.numel()); // this works, but only supports float tensor - const long unsigned cshape[] = {(long unsigned) nx}; // shape - npy::SaveArrayAsNumpy(filename, false, 1, cshape, v); + npy::npy_data_ptr d; + d.data_ptr = v.data(); + d.shape = {(long unsigned) nx}; + d.fortran_order = false; + npy::write_npy(filename, d); std::cout << "Dumping " << filename << " done" << std::endl; } diff --git a/source/source_pw/module_ofdft/ml_tools/data.h b/source/source_pw/module_ofdft/ml_tools/data.h index e6bb6f2a6d..2116709fd3 100644 --- a/source/source_pw/module_ofdft/ml_tools/data.h +++ b/source/source_pw/module_ofdft/ml_tools/data.h @@ -17,7 +17,7 @@ class Data // =========== data =========== torch::Tensor rho; torch::Tensor nablaRho; - torch::Tensor tau_tf; + torch::Tensor tau_lda; // energy density of LDA, i.e. TF for KEDF, Dirac term for EXX // semi-local descriptors torch::Tensor gamma; torch::Tensor p; @@ -67,16 +67,17 @@ class Data void init_data(const int nkernel, const int ndata, const int fftdim, const torch::Device device); void load_data_(Input &input, const int ndata, const int fftdim, std::string *dir); - const double cTF = 3.0/10.0 * std::pow(3*std::pow(M_PI, 2.0), 2.0/3.0) * 2; // 10/3*(3*pi^2)^{2/3}, multiply by 2 to convert unit from Hartree to Ry, finally in Ry*Bohr^(-2) + const double cTF = 3. / 10. * std::pow(3. * std::pow(M_PI, 2.), 2. / 3.) * 2.; // 10/3*(3*pi^2)^{2/3}, multiply by 2 to convert unit from Hartree to Ry, finally in Ry*Bohr^(-2) + const double cDirac = - 3. / 4. * std::pow(3. / M_PI, 1./3.) * 2.; // -3/4*(3/pi)^{1/3}, multiply by 2 to convert unit from Hartree to Ry, finally in Ry*Bohr^(-2) + double tau_exp = 5. / 3.; // 5/3 for TF KEDF, and 4/3 for Dirac term public: void loadTensor(std::string file, - std::vector cshape, - bool fortran_order, - std::vector &container, const int index, const int fftdim, torch::Tensor &data); + void loadVector(std::string file, + std::vector &data); // -------- dump Tensor into .npy files --------- void dumpTensor(const torch::Tensor &data, std::string filename, int nx); std::string file_name(std::string parameter, const int kernel_type, const double kernel_scaling); diff --git a/source/source_pw/module_ofdft/ml_tools/input.cpp b/source/source_pw/module_ofdft/ml_tools/input.cpp index aadb1ecc02..1b1d2ffaee 100644 --- a/source/source_pw/module_ofdft/ml_tools/input.cpp +++ b/source/source_pw/module_ofdft/ml_tools/input.cpp @@ -277,6 +277,10 @@ void Input::readInput() { this->read_value(ifs, this->device_type); } + else if (strcmp("energy_type", word) == 0) + { + this->read_value(ifs, this->energy_type); + } } std::cout << "Read nnINPUT done" << std::endl; diff --git a/source/source_pw/module_ofdft/ml_tools/input.h b/source/source_pw/module_ofdft/ml_tools/input.h index 715b4c6064..e456c2b38a 100644 --- a/source/source_pw/module_ofdft/ml_tools/input.h +++ b/source/source_pw/module_ofdft/ml_tools/input.h @@ -73,6 +73,7 @@ class Input double lr_end = 1e-4; int lr_fre = 5000; double exponent = 5.; // exponent of weight rho^{exponent/3.} + std::string energy_type = "kedf"; // kedf or exx // output int dump_fre = 1; diff --git a/source/source_pw/module_ofdft/ml_tools/pauli_potential.cpp b/source/source_pw/module_ofdft/ml_tools/pauli_potential.cpp index 544beef8d9..aee2e35207 100644 --- a/source/source_pw/module_ofdft/ml_tools/pauli_potential.cpp +++ b/source/source_pw/module_ofdft/ml_tools/pauli_potential.cpp @@ -62,6 +62,17 @@ void PauliPotential::init(const Input &input, this->ml_tanh_qnl = this->descriptor2index["tanh_qnl"].size() > 0; this->ml_tanhp_nl = this->descriptor2index["tanhp_nl"].size() > 0; this->ml_tanhq_nl = this->descriptor2index["tanhq_nl"].size() > 0; + + if (input.energy_type == "kedf") + { + this->cLDA = this->cTF; + this->tau_exp = 5. / 3.; + } + else if (input.energy_type == "exx") + { + this->cLDA = this->cDirac; + this->tau_exp = 4. / 3.; + } } torch::Tensor PauliPotential::get_potential(const int istru, @@ -73,7 +84,7 @@ torch::Tensor PauliPotential::get_potential(const int istru, { // Input::print("get potential begin"); this->istru = istru; - torch::Tensor potential = 5. / 3. * F; + torch::Tensor potential = F * this->tau_exp; // semi-local potential terms if (this->ml_gamma) { @@ -97,18 +108,18 @@ torch::Tensor PauliPotential::get_potential(const int istru, if (this->ml_tanhq) { potential += this->potTanhqTerm1(data.q[istru], data.tanhq[istru], gradient); } - potential *= data.tau_tf[istru] / data.rho[istru]; + potential *= data.tau_lda[istru] / data.rho[istru]; // non-local potential terms if (this->ml_gammanl) { - potential += this->potGammanlTerm(data.rho[istru], data.gamma[istru], kernels, data.tau_tf[istru], gradient); + potential += this->potGammanlTerm(data.rho[istru], data.gamma[istru], kernels, data.tau_lda[istru], gradient); } if (this->ml_p || this->ml_pnl) { potential += this->potPPnlTerm(data.rho[istru], data.nablaRho[istru], data.p[istru], kernels, - data.tau_tf[istru], + data.tau_lda[istru], gradient, grid.fft_grid[istru]); } @@ -116,19 +127,19 @@ torch::Tensor PauliPotential::get_potential(const int istru, potential += this->potQQnlTerm(data.rho[istru], data.q[istru], kernels, - data.tau_tf[istru], + data.tau_lda[istru], gradient, grid.fft_gg[istru]); } if (this->ml_xi) { - potential += this->potXinlTerm(data.rho[istru], kernels, data.tau_tf[istru], gradient); + potential += this->potXinlTerm(data.rho[istru], kernels, data.tau_lda[istru], gradient); } if (this->ml_tanhxi) { - potential += this->potTanhxinlTerm(data.rho[istru], data.tanhxi, kernels, data.tau_tf[istru], gradient); + potential += this->potTanhxinlTerm(data.rho[istru], data.tanhxi, kernels, data.tau_lda[istru], gradient); } if (this->ml_tanhxi_nl) { potential - += this->potTanhxi_nlTerm(data.rho[istru], data.xi, data.tanhxi, kernels, data.tau_tf[istru], gradient); + += this->potTanhxi_nlTerm(data.rho[istru], data.xi, data.tanhxi, kernels, data.tau_lda[istru], gradient); } if ((this->ml_tanhp || this->ml_tanhp_nl) && !this->ml_tanh_pnl) { potential += this->potTanhpTanhp_nlTerm(data.rho[istru], @@ -136,7 +147,7 @@ torch::Tensor PauliPotential::get_potential(const int istru, data.p[istru], data.tanhp[istru], kernels, - data.tau_tf[istru], + data.tau_lda[istru], gradient, grid.fft_grid[istru]); } @@ -145,7 +156,7 @@ torch::Tensor PauliPotential::get_potential(const int istru, data.q[istru], data.tanhq[istru], kernels, - data.tau_tf[istru], + data.tau_lda[istru], gradient, grid.fft_gg[istru]); } @@ -156,7 +167,7 @@ torch::Tensor PauliPotential::get_potential(const int istru, data.tanhp[istru], data.tanh_pnl, kernels, - data.tau_tf[istru], + data.tau_lda[istru], gradient, grid.fft_grid[istru]); } @@ -166,7 +177,7 @@ torch::Tensor PauliPotential::get_potential(const int istru, data.tanhq[istru], data.tanh_qnl, kernels, - data.tau_tf[istru], + data.tau_lda[istru], gradient, grid.fft_gg[istru]); } @@ -203,7 +214,7 @@ torch::Tensor PauliPotential::potGammanlTerm(const torch::Tensor &rho, const torch::Tensor &gamma, const Kernel *kernels, // const torch::Tensor &kernel, - const torch::Tensor &tauTF, + const torch::Tensor &tauLDA, const torch::Tensor &gradient) { // std::cout << "potGmmamnlTerm" << std::endl; @@ -216,7 +227,7 @@ torch::Tensor PauliPotential::potGammanlTerm(const torch::Tensor &rho, * torch::real( torch::fft::ifftn(torch::fft::fftn(gradient.index({"...", d2i}) .reshape({this->fftdim, this->fftdim, this->fftdim}) - * tauTF) + * tauLDA) * kernels[d2k].kernel[istru])); } return result; @@ -227,7 +238,7 @@ torch::Tensor PauliPotential::potPPnlTerm(const torch::Tensor &rho, const torch::Tensor &p, const Kernel *kernels, // const torch::Tensor &kernel, - const torch::Tensor &tauTF, + const torch::Tensor &tauLDA, const torch::Tensor &gradient, const std::vector &grid) { @@ -240,17 +251,17 @@ torch::Tensor PauliPotential::potPPnlTerm(const torch::Tensor &rho, dFdpnl_nl += torch::real(torch::fft::ifftn(torch::fft::fftn(gradient.index({"...", d2i}) .reshape({this->fftdim, this->fftdim, this->fftdim}) - * tauTF) + * tauLDA) * kernels[d2k].kernel[istru])); } torch::Tensor temp = torch::zeros_like(nablaRho); for (int i = 0; i < 3; ++i) { - temp[i] = (this->ml_p) ? -3. / 20. + temp[i] = (this->ml_p) ? - this->pqcoef * 2. * gradient.index({"...", this->descriptor2index["p"][0]}) .reshape({this->fftdim, this->fftdim, this->fftdim}) - * nablaRho[i] / rho * /*Ha to Ry*/ 2. + * nablaRho[i] * tauLDA / torch::pow(rho, 8. / 3.) : torch::zeros_like(nablaRho[i]); if (this->ml_pnl) { temp[i] += -this->pqcoef * 2. * nablaRho[i] / torch::pow(rho, 8. / 3.) * dFdpnl_nl; @@ -272,7 +283,7 @@ torch::Tensor PauliPotential::potQQnlTerm(const torch::Tensor &rho, const torch::Tensor &q, const Kernel *kernels, // const torch::Tensor &kernel, - const torch::Tensor &tauTF, + const torch::Tensor &tauLDA, const torch::Tensor &gradient, const torch::Tensor &gg) { @@ -285,14 +296,14 @@ torch::Tensor PauliPotential::potQQnlTerm(const torch::Tensor &rho, dFdqnl_nl = torch::real(torch::fft::ifftn(torch::fft::fftn(gradient.index({"...", d2i}) .reshape({this->fftdim, this->fftdim, this->fftdim}) - * tauTF) + * tauLDA) * kernels[d2k].kernel[istru])); } - torch::Tensor temp = (this->ml_q) ? 3. / 40. + torch::Tensor temp = (this->ml_q) ? this->pqcoef * gradient.index({"...", this->descriptor2index["q"][0]}) .reshape({this->fftdim, this->fftdim, this->fftdim}) - * /*Ha2Ry*/ 2. + * tauLDA / torch::pow(rho, 5. / 3.) : torch::zeros_like(q); if (this->ml_qnl) { temp += this->pqcoef / torch::pow(rho, 5. / 3.) * dFdqnl_nl; @@ -358,7 +369,7 @@ torch::Tensor PauliPotential::potTanhqTerm1(const torch::Tensor &q, torch::Tensor PauliPotential::potXinlTerm(const torch::Tensor &rho, const Kernel *kernels, // const torch::Tensor &kernel, - const torch::Tensor &tauTF, + const torch::Tensor &tauLDA, const torch::Tensor &gradient) { torch::Tensor result = torch::zeros_like(rho); @@ -370,7 +381,7 @@ torch::Tensor PauliPotential::potXinlTerm(const torch::Tensor &rho, * torch::real( torch::fft::ifftn(torch::fft::fftn(gradient.index({"...", d2i}) .reshape({this->fftdim, this->fftdim, this->fftdim}) - * tauTF * torch::pow(rho, -1. / 3.)) + * tauLDA * torch::pow(rho, -1. / 3.)) * kernels[d2k].kernel[istru])); } return result; @@ -380,7 +391,7 @@ torch::Tensor PauliPotential::potTanhxinlTerm(const torch::Tensor &rho, const std::vector &tanhxi, const Kernel *kernels, // const torch::Tensor &kernel, - const torch::Tensor &tauTF, + const torch::Tensor &tauLDA, const torch::Tensor &gradient) { torch::Tensor result = torch::zeros_like(rho); @@ -392,7 +403,7 @@ torch::Tensor PauliPotential::potTanhxinlTerm(const torch::Tensor &rho, result += 1. / 3. * torch::pow(rho, -2. / 3.) * torch::real(torch::fft::ifftn( torch::fft::fftn(gradient.index({"...", d2i}).reshape({this->fftdim, this->fftdim, this->fftdim}) - * this->dtanh(tanhxi[d2k][istru], this->chi_xi[d2k]) * tauTF + * this->dtanh(tanhxi[d2k][istru], this->chi_xi[d2k]) * tauLDA * torch::pow(rho, -1. / 3.)) * kernels[d2k].kernel[istru])); } @@ -404,7 +415,7 @@ torch::Tensor PauliPotential::potTanhxi_nlTerm(const torch::Tensor &rho, const std::vector &tanhxi, const Kernel *kernels, // const torch::Tensor &kernel, - const torch::Tensor &tauTF, + const torch::Tensor &tauLDA, const torch::Tensor &gradient) { torch::Tensor result = torch::zeros_like(rho); @@ -414,7 +425,7 @@ torch::Tensor PauliPotential::potTanhxi_nlTerm(const torch::Tensor &rho, int d2i = this->descriptor2index["tanhxi_nl"][ik]; torch::Tensor dFdxi = torch::real(torch::fft::ifftn( - torch::fft::fftn(tauTF + torch::fft::fftn(tauLDA * gradient.index({"...", d2i}).reshape({this->fftdim, this->fftdim, this->fftdim})) * kernels[d2k].kernel[istru])) * this->dtanh(tanhxi[d2k][istru], this->chi_xi[d2k]) * torch::pow(rho, -1. / 3.); @@ -435,7 +446,7 @@ torch::Tensor PauliPotential::potTanhpTanh_pnlTerm(const torch::Tensor &rho, const std::vector &tanh_pnl, const Kernel *kernels, // const torch::Tensor &kernel, - const torch::Tensor &tauTF, + const torch::Tensor &tauLDA, const torch::Tensor &gradient, const std::vector &grid) { @@ -448,17 +459,17 @@ torch::Tensor PauliPotential::potTanhpTanh_pnlTerm(const torch::Tensor &rho, torch::fft::fftn(gradient.index({"...", d2i}) .reshape({this->fftdim, this->fftdim, this->fftdim}) * this->dtanh(tanh_pnl[d2k][istru], this->chi_pnl[d2k]) - * tauTF) + * tauLDA) * kernels[d2k].kernel[istru])); } torch::Tensor temp = torch::zeros_like(nablaRho); for (int i = 0; i < 3; ++i) { - temp[i] = (this->ml_tanhp) ? -3. / 20. + temp[i] = (this->ml_tanhp) ? - this->pqcoef * 2. * gradient.index({"...", this->descriptor2index["tanhp"][0]}) .reshape({this->fftdim, this->fftdim, this->fftdim}) - * this->dtanh(tanhp, this->chi_p) * nablaRho[i] / rho * /*Ha to Ry*/ 2. + * this->dtanh(tanhp, this->chi_p) * nablaRho[i] * tauLDA / torch::pow(rho, 8./3.) : torch::zeros_like(nablaRho[i]); if (this->ml_tanh_pnl) { temp[i] += -this->pqcoef * 2. * nablaRho[i] / torch::pow(rho, 8. / 3.) * dFdpnl_nl; @@ -479,7 +490,7 @@ torch::Tensor PauliPotential::potTanhqTanh_qnlTerm(const torch::Tensor &rho, const std::vector &tanh_qnl, const Kernel *kernels, // const torch::Tensor &kernel, - const torch::Tensor &tauTF, + const torch::Tensor &tauLDA, const torch::Tensor &gradient, const torch::Tensor &gg) { @@ -492,14 +503,14 @@ torch::Tensor PauliPotential::potTanhqTanh_qnlTerm(const torch::Tensor &rho, torch::fft::fftn(gradient.index({"...", d2i}) .reshape({this->fftdim, this->fftdim, this->fftdim}) * this->dtanh(tanh_qnl[d2k][istru], this->chi_qnl[d2k]) - * tauTF) + * tauLDA) * kernels[d2k].kernel[istru])); } - torch::Tensor temp = (this->ml_tanhq) ? 3. / 40. + torch::Tensor temp = (this->ml_tanhq) ? this->pqcoef * gradient.index({"...", this->descriptor2index["tanhq"][0]}) .reshape({this->fftdim, this->fftdim, this->fftdim}) - * this->dtanh(tanhq, this->chi_q) * /*Ha2Ry*/ 2. + * this->dtanh(tanhq, this->chi_q) * tauLDA / torch::pow(rho, 5. / 3.) : torch::zeros_like(q); if (this->ml_tanh_qnl) { temp += this->pqcoef / torch::pow(rho, 5. / 3.) * dFdqnl_nl; @@ -519,7 +530,7 @@ torch::Tensor PauliPotential::potTanhpTanhp_nlTerm(const torch::Tensor &rho, const torch::Tensor &tanhp, const Kernel *kernels, // const torch::Tensor &kernel, - const torch::Tensor &tauTF, + const torch::Tensor &tauLDA, const torch::Tensor &gradient, const std::vector &grid) { @@ -531,7 +542,7 @@ torch::Tensor PauliPotential::potTanhpTanhp_nlTerm(const torch::Tensor &rho, dFdpnl_nl += torch::real(torch::fft::ifftn( torch::fft::fftn(gradient.index({"...", d2i}) .reshape({this->fftdim, this->fftdim, this->fftdim}) - * tauTF) + * tauLDA) * kernels[d2k].kernel[istru])) * this->dtanh(tanhp, this->chi_p); } @@ -539,10 +550,10 @@ torch::Tensor PauliPotential::potTanhpTanhp_nlTerm(const torch::Tensor &rho, torch::Tensor temp = torch::zeros_like(nablaRho); for (int i = 0; i < 3; ++i) { - temp[i] = (this->ml_tanhp) ? -3. / 20. + temp[i] = (this->ml_tanhp) ? - this->pqcoef * 2. * gradient.index({"...", this->descriptor2index["tanhp"][0]}) .reshape({this->fftdim, this->fftdim, this->fftdim}) - * this->dtanh(tanhp, this->chi_p) * nablaRho[i] / rho * /*Ha to Ry*/ 2. + * this->dtanh(tanhp, this->chi_p) * nablaRho[i] * tauLDA / torch::pow(rho, 8. / 3.) : torch::zeros_like(nablaRho[i]); if (this->ml_tanhp_nl) { temp[i] += -this->pqcoef * 2. * nablaRho[i] / torch::pow(rho, 8. / 3.) * dFdpnl_nl; @@ -562,7 +573,7 @@ torch::Tensor PauliPotential::potTanhqTanhq_nlTerm(const torch::Tensor &rho, const torch::Tensor &tanhq, const Kernel *kernels, // const torch::Tensor &kernel, - const torch::Tensor &tauTF, + const torch::Tensor &tauLDA, const torch::Tensor &gradient, const torch::Tensor &gg) { @@ -574,15 +585,15 @@ torch::Tensor PauliPotential::potTanhqTanhq_nlTerm(const torch::Tensor &rho, dFdqnl_nl += torch::real(torch::fft::ifftn( torch::fft::fftn(gradient.index({"...", d2i}) .reshape({this->fftdim, this->fftdim, this->fftdim}) - * tauTF) + * tauLDA) * kernels[d2k].kernel[istru])) * this->dtanh(tanhq, this->chi_q); } - torch::Tensor temp = (this->ml_tanhq) ? 3. / 40. + torch::Tensor temp = (this->ml_tanhq) ? this->pqcoef * gradient.index({"...", this->descriptor2index["tanhq"][0]}) .reshape({this->fftdim, this->fftdim, this->fftdim}) - * this->dtanh(tanhq, this->chi_q) * /*Ha2Ry*/ 2. + * this->dtanh(tanhq, this->chi_q) * tauLDA / torch::pow(rho, 5. / 3.) : torch::zeros_like(q); if (this->ml_tanhq_nl) { temp += this->pqcoef / torch::pow(rho, 5. / 3.) * dFdqnl_nl; diff --git a/source/source_pw/module_ofdft/ml_tools/pauli_potential.h b/source/source_pw/module_ofdft/ml_tools/pauli_potential.h index d5bd9b9c06..780f3d8d1e 100644 --- a/source/source_pw/module_ofdft/ml_tools/pauli_potential.h +++ b/source/source_pw/module_ofdft/ml_tools/pauli_potential.h @@ -69,7 +69,7 @@ class PauliPotential{ const torch::Tensor &gamma, const Kernel *kernels, // const torch::Tensor &kernel, - const torch::Tensor &tauTF, + const torch::Tensor &tauLDA, const torch::Tensor &gradient ); torch::Tensor potPPnlTerm( @@ -78,7 +78,7 @@ class PauliPotential{ const torch::Tensor &p, const Kernel *kernels, // const torch::Tensor &kernel, - const torch::Tensor &tauTF, + const torch::Tensor &tauLDA, const torch::Tensor &gradient, const std::vector &grid ); @@ -87,7 +87,7 @@ class PauliPotential{ const torch::Tensor &q, const Kernel *kernels, // const torch::Tensor &kernel, - const torch::Tensor &tauTF, + const torch::Tensor &tauLDA, const torch::Tensor &gradient, const torch::Tensor &gg ); @@ -118,7 +118,7 @@ class PauliPotential{ const torch::Tensor &rho, const Kernel *kernels, // const torch::Tensor &kernel, - const torch::Tensor &tauTF, + const torch::Tensor &tauLDA, const torch::Tensor &gradient ); torch::Tensor potTanhxinlTerm( @@ -126,7 +126,7 @@ class PauliPotential{ const std::vector &tanhxi, const Kernel *kernels, // const torch::Tensor &kernel, - const torch::Tensor &tauTF, + const torch::Tensor &tauLDA, const torch::Tensor &gradient ); torch::Tensor potTanhxi_nlTerm( @@ -135,7 +135,7 @@ class PauliPotential{ const std::vector &tanhxi, const Kernel *kernels, // const torch::Tensor &kernel, - const torch::Tensor &tauTF, + const torch::Tensor &tauLDA, const torch::Tensor &gradient ); torch::Tensor potTanhpTanh_pnlTerm( @@ -146,7 +146,7 @@ class PauliPotential{ const std::vector &tanh_pnl, const Kernel *kernels, // const torch::Tensor &kernel, - const torch::Tensor &tauTF, + const torch::Tensor &tauLDA, const torch::Tensor &gradient, const std::vector &grid ); @@ -157,7 +157,7 @@ class PauliPotential{ const std::vector &tanh_qnl, const Kernel *kernels, // const torch::Tensor &kernel, - const torch::Tensor &tauTF, + const torch::Tensor &tauLDA, const torch::Tensor &gradient, const torch::Tensor &gg ); @@ -168,7 +168,7 @@ class PauliPotential{ const torch::Tensor &tanhp, const Kernel *kernels, // const torch::Tensor &kernel, - const torch::Tensor &tauTF, + const torch::Tensor &tauLDA, const torch::Tensor &gradient, const std::vector &grid ); @@ -178,7 +178,7 @@ class PauliPotential{ const torch::Tensor &tanhq, const Kernel *kernels, // const torch::Tensor &kernel, - const torch::Tensor &tauTF, + const torch::Tensor &tauLDA, const torch::Tensor &gradient, const torch::Tensor &gg ); @@ -198,6 +198,9 @@ class PauliPotential{ ); const double cTF = 3.0/10.0 * std::pow(3*std::pow(M_PI, 2.0), 2.0/3.0) * 2; // 10/3*(3*pi^2)^{2/3}, multiply by 2 to convert unit from Hartree to Ry, finally in Ry*Bohr^(-2) + const double cDirac = - 3. /4. * std::pow(3. / M_PI, 1./3.) * 2.; // -3/4*(3/pi)^{1/3}, multiply by 2 to convert unit from Hartree to Ry, finally in Ry*Bohr^(-2) + double cLDA = cTF; + double tau_exp = 5. / 3.; const double pqcoef = 1.0 / (4.0 * std::pow(3*std::pow(M_PI, 2.0), 2.0/3.0)); // coefficient of p and q }; #endif \ No newline at end of file diff --git a/source/source_pw/module_ofdft/of_print_info.cpp b/source/source_pw/module_ofdft/of_print_info.cpp new file mode 100644 index 0000000000..fa19083dcd --- /dev/null +++ b/source/source_pw/module_ofdft/of_print_info.cpp @@ -0,0 +1,135 @@ +#include "source_pw/module_ofdft/of_print_info.h" +#include "source_estate/module_pot/efield.h" +#include "source_estate/module_pot/gatefield.h" +#include "source_base/formatter.h" + +/** + * @brief Print nessecary information to the screen, + * and write the components of the total energy into running_log. + */ +void OFDFT::print_info(const int iter, + ModuleBase::TimePoint &iter_time, + const double &energy_current, + const double &energy_last, + const double &normdLdphi, + const elecstate::ElecState *pelec, + KEDF_Manager *kedf_manager, + const bool conv_esolver) +{ + if (iter == 0) + { + std::cout << " ============================= Running OFDFT " + "==============================" + << std::endl; + std::cout << " ITER ETOT/eV EDIFF/eV EFERMI/eV POTNORM TIME/s" + << std::endl; + } + + std::map prefix_map = { + {"cg1", "CG"}, + {"cg2", "CG"}, + {"tn", "TN"} + }; + std::string iteration = prefix_map[PARAM.inp.of_method] + std::to_string(iter); + double duration = ModuleBase::get_duration(iter_time, ModuleBase::get_time()); + std::cout << " " << std::setw(8) << iteration + << std::setw(18) << std::scientific << std::setprecision(8) << energy_current * ModuleBase::Ry_to_eV + << std::setw(18) << (energy_current - energy_last) * ModuleBase::Ry_to_eV + << std::setw(13) << std::setprecision(4) << pelec->eferm.get_efval(0) * ModuleBase::Ry_to_eV + << std::setw(13) << std::setprecision(4) << normdLdphi + << std::setw(6) << std::fixed << std::setprecision(2) << duration << std::endl; + + GlobalV::ofs_running << std::setprecision(12); + GlobalV::ofs_running << std::setiosflags(std::ios::right); + + GlobalV::ofs_running << "\nIter" << iter << ": the norm of potential is " << normdLdphi << std::endl; + + std::vector titles; + std::vector energies_Ry; + std::vector energies_eV; + if ((PARAM.inp.out_band[0] > 0 && + ((iter + 1) % PARAM.inp.out_band[0] == 0 || + conv_esolver || + iter == PARAM.inp.scf_nmax)) || + PARAM.inp.init_chg == "file") + { + titles.push_back("E_Total"); + energies_Ry.push_back(pelec->f_en.etot); + titles.push_back("E_Kinetic"); + energies_Ry.push_back(pelec->f_en.ekinetic); + titles.push_back("E_Hartree"); + energies_Ry.push_back(pelec->f_en.hartree_energy); + titles.push_back("E_xc"); + energies_Ry.push_back(pelec->f_en.etxc - pelec->f_en.etxcc); + titles.push_back("E_LocalPP"); + energies_Ry.push_back(pelec->f_en.e_local_pp); + titles.push_back("E_Ewald"); + energies_Ry.push_back(pelec->f_en.ewald_energy); + + kedf_manager->record_energy(titles, energies_Ry); + + std::string vdw_method = PARAM.inp.vdw_method; + if (vdw_method == "d2") // Peize Lin add 2014-04, update 2021-03-09 + { + titles.push_back("E_vdwD2"); + energies_Ry.push_back(pelec->f_en.evdw); + } + else if (vdw_method == "d3_0" || vdw_method == "d3_bj") // jiyy add 2019-05, update 2021-05-02 + { + titles.push_back("E_vdwD3"); + energies_Ry.push_back(pelec->f_en.evdw); + } + if (PARAM.inp.imp_sol) + { + titles.push_back("E_sol_el"); + energies_Ry.push_back(pelec->f_en.esol_el); + titles.push_back("E_sol_cav"); + energies_Ry.push_back(pelec->f_en.esol_cav); + } + if (PARAM.inp.efield_flag) + { + titles.push_back("E_efield"); + energies_Ry.push_back(elecstate::Efield::etotefield); + } + if (PARAM.inp.gate_flag) + { + titles.push_back("E_gatefield"); + energies_Ry.push_back(elecstate::Gatefield::etotgatefield); + } + if (PARAM.inp.ml_exx) + { + titles.push_back("E_ML-EXX"); + energies_Ry.push_back(pelec->f_en.ml_exx); + } + } + else + { + titles.push_back("E_Total"); + energies_Ry.push_back(pelec->f_en.etot); + } + + if (PARAM.globalv.two_fermi) + { + titles.push_back("E_Fermi_up"); + energies_Ry.push_back(pelec->eferm.get_efval(0)); + titles.push_back("E_Fermi_dw"); + energies_Ry.push_back(pelec->eferm.get_efval(1)); + } + else + { + titles.push_back("E_Fermi"); + energies_Ry.push_back(pelec->eferm.get_efval(0)); + } + energies_eV.resize(energies_Ry.size()); + std::transform(energies_Ry.begin(), energies_Ry.end(), energies_eV.begin(), [](double energy) { + return energy * ModuleBase::Ry_to_eV; + }); + FmtTable table(/*titles=*/{"Energy", "Rydberg", "eV"}, + /*nrows=*/titles.size(), + /*formats=*/{"%20s", "%20.12f", "%20.12f"}, 0); + table << titles << energies_Ry << energies_eV; + GlobalV::ofs_running << table.str() << std::endl; + + // reset the iter_time for the next iteration + iter_time = ModuleBase::get_time(); +} diff --git a/source/source_pw/module_ofdft/of_print_info.h b/source/source_pw/module_ofdft/of_print_info.h new file mode 100644 index 0000000000..dd45e6bbc6 --- /dev/null +++ b/source/source_pw/module_ofdft/of_print_info.h @@ -0,0 +1,26 @@ +#ifndef OF_PRINT_INFO_H +#define OF_PRINT_INFO_H + +#include "source_estate/elecstate.h" // electronic states +#include "source_pw/module_ofdft/kedf_manager.h" + +#include "source_base/timer_wrapper.h" + + +namespace OFDFT +{ + +void print_info(const int iter, + ModuleBase::TimePoint &iter_time, + const double &energy_current, + const double &energy_last, + const double &normdLdphi, + const elecstate::ElecState *pelec, + KEDF_Manager *kedf_manager, + const bool conv_esolver); + +} + +#endif + + diff --git a/source/source_pw/module_ofdft/of_stress_pw.cpp b/source/source_pw/module_ofdft/of_stress_pw.cpp index 02011e4284..479b078e04 100644 --- a/source/source_pw/module_ofdft/of_stress_pw.cpp +++ b/source/source_pw/module_ofdft/of_stress_pw.cpp @@ -2,8 +2,7 @@ #include "source_base/timer.h" #include "source_hamilt/module_vdw/vdw.h" -#include "source_pw/module_pwdft/global.h" -#include "source_io/output_log.h" +#include "source_io/module_output/output_log.h" // Since the kinetic stress of OFDFT is calculated by kinetic functionals in esolver_of.cpp, here we regard it as an // input variable. diff --git a/source/source_pw/module_ofdft/of_stress_pw.h b/source/source_pw/module_ofdft/of_stress_pw.h index e6efdca212..d5d5d5feb1 100644 --- a/source/source_pw/module_ofdft/of_stress_pw.h +++ b/source/source_pw/module_ofdft/of_stress_pw.h @@ -2,7 +2,7 @@ #define OF_STRESS_PW_H #include "source_estate/elecstate.h" -#include "source_pw/module_pwdft/VL_in_pw.h" +#include "source_pw/module_pwdft/vl_pw.h" #include "source_pw/module_pwdft/stress_func.h" class OF_Stress_PW : public Stress_Func diff --git a/source/source_pw/module_pwdft/CMakeLists.txt b/source/source_pw/module_pwdft/CMakeLists.txt index 03e808f6e6..9e34e9c7b4 100644 --- a/source/source_pw/module_pwdft/CMakeLists.txt +++ b/source/source_pw/module_pwdft/CMakeLists.txt @@ -1,40 +1,47 @@ -add_subdirectory(operator_pw) + list(APPEND objects hamilt_pw.cpp - operator_pw/ekinetic_pw.cpp - operator_pw/veff_pw.cpp - operator_pw/nonlocal_pw.cpp - operator_pw/meta_pw.cpp - operator_pw/velocity_pw.cpp - operator_pw/operator_pw.cpp - operator_pw/onsite_proj_pw.cpp - operator_pw/op_exx_pw.cpp + op_pw_ekin.cpp + op_pw_veff.cpp + op_pw_nl.cpp + op_pw_meta.cpp + op_pw_vel.cpp + op_pw.cpp + op_pw_proj.cpp + op_pw_exx.cpp + op_pw_exx_ace.cpp + op_pw_exx_pot.cpp + setup_pot.cpp + setup_pwrho.cpp + setup_pwwfc.cpp + update_cell_pw.cpp + dftu_pw.cpp + deltaspin_pw.cpp forces_nl.cpp forces_cc.cpp forces_scc.cpp forces.cpp forces_us.cpp forces_onsite.cpp - stress_func_cc.cpp - stress_func_ewa.cpp - stress_func_gga.cpp - stress_func_mgga.cpp - stress_func_har.cpp - stress_func_kin.cpp - stress_func_loc.cpp - stress_func_nl.cpp - stress_func_us.cpp - stress_func_onsite.cpp - stress_func_exx.cpp + stress_cc.cpp + stress_ewa.cpp + stress_gga.cpp + stress_mgga.cpp + stress_har.cpp + stress_kin.cpp + stress_loc.cpp + stress_nl.cpp + stress_us.cpp + stress_onsite.cpp + stress_exx.cpp stress_pw.cpp - VL_in_pw.cpp - VNL_in_pw.cpp - VNL_grad_pw.cpp + vl_pw.cpp + vnl_pw.cpp + vnl_pw_grad.cpp structure_factor.cpp structure_factor_k.cpp soc.cpp - global.cpp parallel_grid.cpp elecond.cpp fs_nonlocal_tools.cpp @@ -42,6 +49,7 @@ list(APPEND objects radial_proj.cpp onsite_projector.cpp onsite_proj_tools.cpp + vsep_pw.cpp ) add_library( diff --git a/source/source_pw/module_pwdft/VL_in_pw.cpp b/source/source_pw/module_pwdft/VL_in_pw.cpp deleted file mode 100644 index 87e14dcced..0000000000 --- a/source/source_pw/module_pwdft/VL_in_pw.cpp +++ /dev/null @@ -1,279 +0,0 @@ -#include "VL_in_pw.h" -#include "source_io/module_parameter/parameter.h" -#include "source_base/libm/libm.h" -#include "source_base/math_integral.h" -#include "source_base/timer.h" -#include "source_pw/module_pwdft/global.h" - -pseudopot_cell_vl::pseudopot_cell_vl() -{ - numeric = nullptr; - zp = nullptr; -} - -pseudopot_cell_vl::~pseudopot_cell_vl() -{ - delete[] numeric; - delete[] zp; -} - -void pseudopot_cell_vl::init_vloc(const UnitCell& ucell, - const ModulePW::PW_Basis* rho_basis) -{ - - ModuleBase::TITLE("pseudopot_cell_vl","init_vloc"); - - // This routine computes the fourier coefficient of the local - // potential vloc(ig,it) for each type of atom - ModuleBase::timer::tick("ppcell_vl","init_vloc"); - - double *vloc1d = new double[rho_basis->ngg]; - ModuleBase::GlobalFunc::ZEROS(vloc1d, rho_basis->ngg); - - this->allocate(ucell,rho_basis->ngg); - - for (int it = 0; it < ucell.ntype; it++) - { - const Atom* atom = &ucell.atoms[it]; - - ModuleBase::GlobalFunc::ZEROS(vloc1d, rho_basis->ngg); - - this->zp[it] = atom->ncpp.zv; - // compute V_loc(G) for a given type of atom - if(atom->coulomb_potential) - { - this->vloc_coulomb(ucell,this->zp[it], vloc1d, rho_basis); - } - else if(numeric[it]==true) - { - this->vloc_of_g( - atom->ncpp.msh, // after cutoff - atom->ncpp.rab.data(), - atom->ncpp.r.data(), - atom->ncpp.vloc_at.data(), // local potential in real space radial form. - this->zp[it], - vloc1d, - ucell, - rho_basis); - } - else - { - ModuleBase::WARNING_QUIT("init_vloc","not available now."); - } - - if(it>=0 && itvloc.nr && this->vloc.nc>=0) - { - ModuleBase::GlobalFunc::COPYARRAY(vloc1d, &this->vloc(it, 0), rho_basis->ngg); - } - } - - - delete[] vloc1d; - - this->print_vloc(ucell,rho_basis); - - ModuleBase::timer::tick("ppcell_vl","init_vloc"); - return; -} - - -void pseudopot_cell_vl::allocate(const UnitCell& ucell, - const int ngg) -{ - if(PARAM.inp.test_pp>0) - { - ModuleBase::TITLE("pseudopot_cell_vl","allocate"); - } - - this->vloc.create(ucell.ntype, ngg); - - delete[] numeric; - this->numeric = new bool[ucell.ntype]; - ModuleBase::GlobalFunc::ZEROS(numeric, ucell.ntype); - - for (int it = 0; it < ucell.ntype; it++) - { - this->numeric[it] = true; - } - - // mohan change global variable 'npsx' to local variable, - // npsx( max number of different PPs) - // 2021-02-22 - int npsx = 50; - delete[] zp; - this->zp = new double[npsx]; - ModuleBase::GlobalFunc::ZEROS(zp, npsx); - - return; -} - -void pseudopot_cell_vl::vloc_coulomb(const UnitCell& ucell, - const double& zp_in, - double* vloc_1d, - const ModulePW::PW_Basis* rho_basis) const -{ - int igl0 = 0; - // start from |G|=0 or not. - if (rho_basis->gg_uniq[0] < 1.0e-8) - { - igl0 = 1; - vloc_1d[0] = 0.0; - } - else - { - igl0 = 0; - } - const double d_fpi_omega = ModuleBase::FOUR_PI / ucell.omega; // mohan add 2008-06-04 - double fac = -zp_in * ModuleBase::e2 * d_fpi_omega; -#ifdef _OPENMP -#pragma omp for -#endif - for (int ig = igl0; ig < rho_basis->ngg; ig++) - { - double gx2 = rho_basis->gg_uniq[ig] * ucell.tpiba2; - vloc_1d[ig] = fac / gx2; - } - return; -} - -/*>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> -! -! This code transfer local pseudopotential in real space -! radial logarithmic mesh to G space. -! -!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/ - - -// Here we always have numeric form, i.e. numeric=ture -void pseudopot_cell_vl::vloc_of_g(const int& msh, - const double* rab, - const double* r, - const double* vloc_at, - const double& zp_in, - double* vloc_1d, - const UnitCell& ucell, - const ModulePW::PW_Basis* rho_basis) const -{ - //---------------------------------------------------------------- - // This routine computes the Fourier transform of the local - // part of the pseudopotential. Two types of local potentials - // are allowed: - - // a) The pseudopotential is in analytic form and its fourier - // transform is computed analytically - // b) The pseudopotential is in numeric form and its fourier - // transform is computed numerically - // - // The local pseudopotential of the US case is always in - // numerical form, expressed in Ry units. - // ---------------------------------------------------------------- - int igl0=0;// start from |G|=0 or not. - - // Pseudopotentials in numerical form (Vloc_at) contain the local part - // in order to perform the Fourier transform, a term erf(r)/r is - // subtracted in real space and added again in G space - - assert(msh>0); - - double *aux1 = new double[msh]; - - // (1) - if(rho_basis->gg_uniq[0] < 1.0e-8) - { - double *aux = new double[msh]; - // first the g=0 term - for (int ir=0; ir0 terms, we first compute the part of the integrand func - // indipendent of |G| in real space - double fac = zp_in * ModuleBase::e2; - for (int ir = 0;ir < msh;ir++) - { - aux1 [ir] = r[ir] * vloc_at [ir] + fac * erf(r[ir]); - } - - // here we perform the integral, after multiplying for the |G| - // dependent part -#ifdef _OPENMP -#pragma omp parallel -{ -#endif - double *aux = new double[msh]; - -#ifdef _OPENMP -#pragma omp for -#endif - for (int ig = igl0;ig < rho_basis->ngg;ig++) - { - double gx2= rho_basis->gg_uniq[ig] * ucell.tpiba2; - double gx = std::sqrt(gx2); - for (int ir = 0;ir < msh;ir++) - { - aux [ir] = aux1 [ir] * ModuleBase::libm::sin(gx * r [ir]) / gx; - } - ModuleBase::Integral::Simpson_Integral(msh, aux, rab, vloc_1d[ig] ); - // here we add the analytic fourier transform of the erf function - vloc_1d[ig] -= fac * ModuleBase::libm::exp(- gx2 * 0.25)/ gx2; - } // enddo - - const double d_fpi_omega = ModuleBase::FOUR_PI/ucell.omega;//mohan add 2008-06-04 -#ifdef _OPENMP -#pragma omp for -#endif - for (int ig = 0;ig < rho_basis->ngg; ig++) - { - vloc_1d[ig] *= d_fpi_omega; - } - - delete [] aux; -#ifdef _OPENMP -} -#endif - - delete [] aux1; - return; -} // end subroutine vloc_of_g - - -void pseudopot_cell_vl::print_vloc(const UnitCell& ucell, - const ModulePW::PW_Basis* rho_basis) const -{ - if(GlobalV::MY_RANK!=0) - { - return; //mohan fix bug 2011-10-13 - } - - bool check_vl = PARAM.inp.out_element_info; - - if(check_vl) - { - for(int it=0; itngg;ig++) - { - ofs_vg << std::setw(15) << rho_basis->gg_uniq [ig] * ucell.tpiba2 - << std::setw(15) << this->vloc(it, ig) << std::endl; - } - ofs_vg.close(); - } - } - return; -} diff --git a/source/source_pw/module_pwdft/VNL_grad_pw.cpp b/source/source_pw/module_pwdft/VNL_grad_pw.cpp deleted file mode 100644 index 34009da082..0000000000 --- a/source/source_pw/module_pwdft/VNL_grad_pw.cpp +++ /dev/null @@ -1,186 +0,0 @@ -#include "VNL_in_pw.h" -#include "source_base/math_sphbes.h" -#include "source_io/module_parameter/parameter.h" -#include "source_base/timer.h" -#include "source_base/math_ylmreal.h" -#include "source_base/math_integral.h" -#include "source_base/math_polyint.h" -#include "source_pw/module_pwdft/global.h" -void pseudopot_cell_vnl::initgradq_vnl(const UnitCell &cell) -{ - const int nbrx = 10; - const int nbrx_nc = 20; - const int ntype = cell.ntype; - if(PARAM.inp.nspin!=4) - { - this->tab_dq.create(ntype, nbrx, PARAM.globalv.nqx); - } - else - { - this->tab_dq.create(ntype, nbrx_nc, PARAM.globalv.nqx); - } - gradvkb.create(3, nkb, this->wfcpw->npwk_max); - - const double pref = ModuleBase::FOUR_PI / sqrt(cell.omega); - for (int it = 0;it < ntype;it++) - { - const int nbeta = cell.atoms[it].ncpp.nbeta; - int kkbeta = cell.atoms[it].ncpp.kkbeta; - if ( (kkbeta%2 == 0) && kkbeta>0 ) - { - kkbeta--; - } - - double *djl = new double[kkbeta]; - double *aux = new double[kkbeta]; - - for (int ib = 0;ib < nbeta;ib++) - { - const int l = cell.atoms[it].ncpp.lll[ib]; - for (int iq=0; iqtab_dq(it, ib, iq) = vqint * pref; - } - } - delete[] aux; - delete[] djl; - } - -} - -void pseudopot_cell_vnl::getgradq_vnl(const UnitCell& ucell, - const int ik) -{ - if(PARAM.inp.test_pp) ModuleBase::TITLE("pseudopot_cell_vnl","getvnl"); - ModuleBase::timer::tick("pp_cell_vnl","getvnl"); - - if(lmaxkb < 0) - { - return; - } - - const int npw = this->wfcpw->npwk[ik]; - - // When the internal memory is large enough, it is better to make tmpgradvkb and tmpvkb be the number of pseudopot_cell_vnl - // We only need to initialize them once as long as the cell is unchanged. - ModuleBase::realArray tmpgradvkb(3, nhm, npw); - ModuleBase::matrix tmpvkb(nhm, npw); - double *vq = new double[npw]; - double *dvq = new double[npw]; - - const int x1= (lmaxkb + 1)*(lmaxkb + 1); - - ModuleBase::matrix ylm(x1, npw); - ModuleBase::matrix *dylm = new ModuleBase::matrix[3]{ModuleBase::matrix(x1,npw),ModuleBase::matrix(x1,npw),ModuleBase::matrix(x1,npw)}; - - ModuleBase::Vector3 *gk = new ModuleBase::Vector3[npw]; - for (int ig = 0;ig < npw;ig++) - { - gk[ig] = this->wfcpw->getgpluskcar(ik,ig); - } - - ModuleBase::YlmReal::grad_Ylm_Real(x1, npw, gk, ylm, dylm[0], dylm[1], dylm[2]); - - int jkb = 0; - for(int it = 0;it < ucell.ntype;it++) - { - // calculate beta in G-space using an interpolation table - const int nbeta = ucell.atoms[it].ncpp.nbeta; - const int nh = ucell.atoms[it].ncpp.nh; - int nb0 = -1; - for( int ih = 0; ih < nh; ++ih) - { - int nb = this->indv(it, ih); - if(nb != nb0) - { - for (int ig = 0;ig < npw;++ig) - { - const double gnorm = gk[ig].norm() * ucell.tpiba; - vq [ig] = ModuleBase::PolyInt::Polynomial_Interpolation( - this->tab, it, nb, PARAM.globalv.nqx, PARAM.globalv.dq, gnorm ); - dvq[ig] =ModuleBase::PolyInt::Polynomial_Interpolation( - this->tab_dq, it, nb, PARAM.globalv.nqx, PARAM.globalv.dq, gnorm ); - } - nb0 = nb; - } - double lmmat[9] = {0, 0, 1, -1, 0, 0, 0, -1, 0}; - for(int id = 0; id < 3; ++id) - { - const int lm = static_cast( nhtolm(it, ih) ); - for (int ig = 0;ig < npw;++ig) - { - ModuleBase::Vector3 gg = gk[ig]; - double ggnorm = gg.norm(); - if(ggnorm < 1e-8) - { - if(lm == 0 || lm > 3) - { - tmpgradvkb(id, ih, ig) = 0.0; - } - else//lm = 1,2,3; l = 1 - { - //q \to 0 : \nabla(f(q)Y(\hat{q})) = f(q)/q*sqrt(3/4/pi)*vec(-delta(lm,2), -delta(lm,3), delta(lm,1)) - // tmpgradvkb(id, ih, ig) = 0.0; - tmpgradvkb(id, ih, ig) = dvq[ig] * sqrt(3.0/4.0/M_PI) * lmmat[(lm-1)*3 + id]; - } - } - else - { - tmpgradvkb(id, ih, ig) = ylm(lm, ig) * dvq[ig] * gg[id] / ggnorm - + dylm[id](lm, ig) / this->wfcpw->tpiba - * vq[ig]; // note: dylm/d(tpiba * gx) = 1/tpiba * dylm/dgx - } - tmpvkb(ih, ig) = ylm(lm,ig) * vq[ig]; - } - } - } - - // vkb1 contains all betas including angular part for type nt - // now add the structure factor and factor (-i)^l - for (int ia=0; ia *sk = this->psf->get_sk(ik, it, ia, this->wfcpw); - - for (int ih = 0;ih < nh;++ih) - { - std::complex pref = pow( ModuleBase::NEG_IMAG_UNIT, nhtol(it, ih)); - std::complex* pvkb = &this->vkb(jkb, 0); - for (int id = 0; id < 3 ; ++id) - { - std::complex* pgvkb = &this->gradvkb(id, jkb, 0); - for (int ig = 0;ig < npw;++ig) - { - std::complex skig = sk[ig]; - pvkb[ig] = tmpvkb(ih, ig) * skig * pref; - // std::complex dskig = ModuleBase::NEG_IMAG_UNIT * (ucell.atoms[it].tau[ia][id] * this->wfcpw->lat0) * skig; - // pgvkb[ig] = tmpgradvkb(id, ih, ig) * skig * pref + tmpvkb(ih, ig) * dskig * pref; - // The second term will be eliminate when doing Dij or we can say (\nabla_q+\nabla_q')S(q'-q) = 0 - pgvkb[ig] = tmpgradvkb(id, ih, ig) * skig * pref; - } - } //end id - ++jkb; - } // end ih - - delete [] sk; - } // end ia - } // enddo - - delete [] gk; - delete [] vq; - delete [] dvq; - delete [] dylm; - - ModuleBase::timer::tick("pp_cell_vnl","getvnl"); - - return; -} \ No newline at end of file diff --git a/source/source_pw/module_pwdft/VNL_in_pw.cpp b/source/source_pw/module_pwdft/VNL_in_pw.cpp deleted file mode 100644 index e26e09fa3e..0000000000 --- a/source/source_pw/module_pwdft/VNL_in_pw.cpp +++ /dev/null @@ -1,1771 +0,0 @@ -#include "VNL_in_pw.h" - -#include "source_io/module_parameter/parameter.h" -#include "source_base/clebsch_gordan_coeff.h" -#include "source_base/global_function.h" -#include "source_base/global_variable.h" -#include "source_base/math_integral.h" -#include "source_base/math_polyint.h" -#include "source_base/math_sphbes.h" -#include "source_base/math_ylmreal.h" -#include "source_base/memory.h" -#include "source_base/module_device/device.h" -#include "source_base/timer.h" -#include "source_pw/module_pwdft/global.h" -#include "source_pw/module_pwdft/kernels/vnl_op.h" - - -pseudopot_cell_vnl::pseudopot_cell_vnl() -{ - this->use_gpu_ = (PARAM.inp.device == "gpu"); -} - -pseudopot_cell_vnl::~pseudopot_cell_vnl() -{ - delete[] indv_ijkb0; -} - -void pseudopot_cell_vnl::release_memory() -{ - if (this->nhm <= 0 || memory_released) { - return; -} - if (this->use_gpu_) - { - delmem_sd_op()(this->s_deeq); - delmem_sd_op()(this->s_nhtol); - delmem_sd_op()(this->s_nhtolm); - delmem_sd_op()(this->s_indv); - delmem_sd_op()(this->s_tab); - delmem_sd_op()(this->s_qq_nt); - delmem_cd_op()(this->c_deeq_nc); - delmem_cd_op()(this->c_vkb); - delmem_cd_op()(this->c_qq_so); - delmem_zd_op()(this->z_deeq_nc); - delmem_zd_op()(this->z_qq_so); - delmem_dd_op()(this->d_deeq); - delmem_zd_op()(this->z_vkb); - delmem_dd_op()(this->d_tab); - delmem_dd_op()(this->d_indv); - delmem_dd_op()(this->d_nhtol); - delmem_dd_op()(this->d_nhtolm); - delmem_dd_op()(this->d_qq_nt); - } - else - { - delmem_sh_op()(this->s_deeq); - delmem_sh_op()(this->s_nhtol); - delmem_sh_op()(this->s_nhtolm); - delmem_sh_op()(this->s_indv); - delmem_sh_op()(this->s_tab); - delmem_sh_op()(this->s_qq_nt); - delmem_ch_op()(this->c_deeq_nc); - delmem_ch_op()(this->c_vkb); - delmem_ch_op()(this->c_qq_so); - // There's no need to delete double precision pointers while in a CPU environment. - } - memory_released = true; -} - -//----------------------------------- -// setup lmaxkb, nhm, nkb, lmaxq -// allocate vkb, PARAM.globalv.nqx, tab, tab_at -//----------------------------------- -void pseudopot_cell_vnl::init(const UnitCell& ucell, - Structure_Factor* psf_in, - const ModulePW::PW_Basis_K* wfc_basis, - const bool allocate_vkb) -{ - const int ntype = ucell.ntype; - ModuleBase::TITLE("pseudopot_cell_vnl", "init"); - ModuleBase::timer::tick("ppcell_vnl", "init"); - - GlobalV::ofs_running << "\n SETUP NONLOCAL PSEUDOPOTENTIALS IN PLANE WAVE BASIS" << std::endl; - - int it = 0; - this->wfcpw = wfc_basis; - this->psf = psf_in; - //---------------------------------------------------------- - // MEMBER VARIABLE : - // NAME : lmaxkb(max angular momentum,(see pseudo_h)) - //---------------------------------------------------------- - this->lmaxkb = -1; - for (it = 0; it < ntype; it++) - { - GlobalV::ofs_running << " " << ucell.atoms[it].label << " non-local projectors:" << std::endl; - for (int ibeta = 0; ibeta < ucell.atoms[it].ncpp.nbeta; ibeta++) - { - GlobalV::ofs_running << " projector " << ibeta + 1 << " L=" << ucell.atoms[it].ncpp.lll[ibeta] - << std::endl; - this->lmaxkb = std::max(this->lmaxkb, ucell.atoms[it].ncpp.lll[ibeta]); - } - } - - //---------------------------------------------------------- - // MEMBER VARIABLE : - // NAME : nhm(max number of different beta functions per atom) - // NAME : nbetam(max number of beta functions) - // NAME : nwfcm(max number of wavefunctions) - //---------------------------------------------------------- - this->nhm = 0; - this->nbetam = 0; - int nwfcm = 0; - for (it = 0; it < ntype; it++) - { - this->nhm = std::max(nhm, ucell.atoms[it].ncpp.nh); - this->nbetam = std::max(nbetam, ucell.atoms[it].ncpp.nbeta); - nwfcm = std::max(nwfcm, ucell.atoms[it].ncpp.nchi); - } - - //---------------------------------------------------------- - // MEMBER VARIABLE : - // NAME : nkb(total number of beta functions, with struct.fact.) - //---------------------------------------------------------- - this->nkb = 0; - for (it = 0; it < ntype; it++) - { - this->nkb += ucell.atoms[it].ncpp.nh * ucell.atoms[it].na; - } - - ModuleBase::GlobalFunc::OUT(GlobalV::ofs_running, "TOTAL NUMBER OF NONLOCAL PROJECTORS", nkb); - - if (this->nhm > 0) - { - this->indv.create(ntype, this->nhm); - this->nhtol.create(ntype, this->nhm); - this->nhtolm.create(ntype, this->nhm); - this->nhtoj.create(ntype, this->nhm); - this->deeq.create(PARAM.inp.nspin, ucell.nat, this->nhm, this->nhm); - this->deeq_nc.create(PARAM.inp.nspin, ucell.nat, this->nhm, this->nhm); - this->qq_nt.create(ntype, this->nhm, this->nhm); - this->qq_so.create(ntype, 4, this->nhm, this->nhm); - if (this->use_gpu_) - { - if (PARAM.globalv.has_float_data) - { - resmem_sd_op()(s_deeq, PARAM.inp.nspin * ucell.nat * this->nhm * this->nhm); - resmem_sd_op()(s_nhtol, ntype * this->nhm); - resmem_sd_op()(s_nhtolm, ntype * this->nhm); - resmem_sd_op()(s_indv, ntype * this->nhm); - resmem_sd_op()(s_qq_nt, ntype * this->nhm * this->nhm); - resmem_cd_op()(c_deeq_nc, PARAM.inp.nspin * ucell.nat * this->nhm * this->nhm); - resmem_cd_op()(c_qq_so, ntype * 4 * this->nhm * this->nhm); - } - if (PARAM.globalv.has_double_data) - { - resmem_zd_op()(z_deeq_nc, PARAM.inp.nspin * ucell.nat * this->nhm * this->nhm); - resmem_zd_op()(z_qq_so, ntype * 4 * this->nhm * this->nhm); - } - resmem_dd_op()(d_deeq, PARAM.inp.nspin * ucell.nat * this->nhm * this->nhm); - resmem_dd_op()(d_indv, ntype * this->nhm); - resmem_dd_op()(d_nhtol, ntype * this->nhm); - resmem_dd_op()(d_nhtolm, ntype * this->nhm); - resmem_dd_op()(d_qq_nt, ntype * this->nhm * this->nhm); - } - else - { - if (PARAM.globalv.has_float_data) - { - resmem_sh_op()(s_deeq, - PARAM.inp.nspin * ucell.nat * this->nhm * this->nhm, - "VNL::s_deeq"); - resmem_sh_op()(s_nhtol, ntype * this->nhm, "VNL::s_nhtol"); - resmem_sh_op()(s_nhtolm, ntype * this->nhm, "VNL::s_nhtolm"); - resmem_sh_op()(s_indv, ntype * this->nhm, "VNL::s_indv"); - resmem_sh_op()(s_qq_nt, ntype * this->nhm * this->nhm, "VNL::s_qq_nt"); - resmem_ch_op()(c_deeq_nc, - PARAM.inp.nspin * ucell.nat * this->nhm * this->nhm, - "VNL::c_deeq_nc"); - resmem_ch_op()(c_qq_so, ntype * 4 * this->nhm * this->nhm, "VNL::c_qq_so"); - } - if (PARAM.globalv.has_double_data) - { - this->z_deeq_nc = this->deeq_nc.ptr; - this->z_qq_so = this->qq_so.ptr; - } - this->d_deeq = this->deeq.ptr; - this->d_indv = this->indv.c; - this->d_nhtol = this->nhtol.c; - this->d_nhtolm = this->nhtolm.c; - this->d_qq_nt = this->qq_nt.ptr; - // There's no need to delete double precision pointers while in a CPU environment. - } - this->dvan.create(ntype, this->nhm, this->nhm); - this->dvan_so.create(PARAM.inp.nspin, ntype, this->nhm, this->nhm); - - this->ijtoh.create(ntype, this->nhm, this->nhm); - this->qq_at.create(ucell.nat, this->nhm, this->nhm); - } - else - { - GlobalV::ofs_running << "\n nhm = 0, not allocate some matrix."; - } - - // nqxq = ((sqrt(gcutm)+sqrt(xqq[1]*xqq[1]+xqq[2]*xqq[2]+xqq[3]*xqq[3])/ - // dq+4)*cell_factor; - this->lmaxq = 2 * this->lmaxkb + 1; - int npwx = this->wfcpw->npwk_max; - if (nkb > 0 && allocate_vkb) - { - vkb.create(nkb, npwx); - ModuleBase::Memory::record("VNL::vkb", nkb * npwx * sizeof(std::complex)); - } - - // this->nqx = 10000; // calculted in allocate_nlpot.f90 - // PARAM.globalv.nqxq = static_cast(((sqrt(INPUT.ecutrho) + qnorm) / PARAM.globalv.dq + 4.0) * cell_factor); - - // mohan update 2021-02-22 - // liuyu update 2023-09-28 - if (nbetam > 0) - { - const int nbrx_nc = 2 * nbetam; - // nbetam: max number of beta functions - if (PARAM.inp.nspin != 4) - { - this->tab.create(ntype, nbetam, PARAM.globalv.nqx); - ModuleBase::Memory::record("VNL::tab", ntype * nbetam * PARAM.globalv.nqx * sizeof(double)); - } - else - { - this->tab.create(ntype, nbrx_nc, PARAM.globalv.nqx); - ModuleBase::Memory::record("VNL::tab", ntype * nbrx_nc * PARAM.globalv.nqx * sizeof(double)); - } - - if (lmaxq > 0) - { - this->qrad.create(ntype, lmaxq, nbetam * (nbetam + 1) / 2, PARAM.globalv.nqxq); - } - } - - // mohan update 2021-02-22 - // liuyu update 2023-09-28 - if (nwfcm > 0) - { - int nchix_nc = 2 * nwfcm; - // nwfcm : max number of atomic wavefunctions per atom - if (PARAM.inp.nspin != 4) - { - this->tab_at.create(ntype, nwfcm, PARAM.globalv.nqx); - ModuleBase::Memory::record("VNL::tab_at", ntype * nwfcm * PARAM.globalv.nqx * sizeof(double)); - } - else - { - this->tab_at.create(ntype, nchix_nc, PARAM.globalv.nqx); - ModuleBase::Memory::record("VNL::tab_at", ntype * nchix_nc * PARAM.globalv.nqx * sizeof(double)); - } - } - if (this->use_gpu_) - { - if (PARAM.globalv.has_float_data) - { - resmem_sd_op()(s_tab, this->tab.getSize()); - resmem_cd_op()(c_vkb, nkb * npwx); - } - resmem_zd_op()(z_vkb, nkb * npwx); - resmem_dd_op()(d_tab, this->tab.getSize()); - } - else - { - if (PARAM.globalv.has_float_data) - { - resmem_sh_op()(s_tab, this->tab.getSize()); - resmem_ch_op()(c_vkb, nkb * npwx); - } - #ifdef __DSP - base_device::memory::resize_memory_op_mt, base_device::DEVICE_CPU>() - (this->z_vkb, this->vkb.size, "Nonlocal::ps"); - memcpy(this->z_vkb,this->vkb.c,this->vkb.size*16); - #else - this->z_vkb = this->vkb.c; - #endif - this->d_tab = this->tab.ptr; - // There's no need to delete double precision pointers while in a CPU environment. - } - - ModuleBase::timer::tick("ppcell_vnl", "init"); - return; -} - -//---------------------------------------------------------- -// Calculates beta functions (Kleinman-Bylander projectors), -// with structure factor, for all atoms, in reciprocal space -//---------------------------------------------------------- -template -void pseudopot_cell_vnl::getvnl(Device* ctx, - const UnitCell& ucell, - const int& ik, - std::complex* vkb_in) const -{ - if (PARAM.inp.test_pp) - { - ModuleBase::TITLE("pseudopot_cell_vnl", "getvnl"); - } - ModuleBase::timer::tick("pp_cell_vnl", "getvnl"); - - using cal_vnl_op = hamilt::cal_vnl_op; - using resmem_int_op = base_device::memory::resize_memory_op; - using delmem_int_op = base_device::memory::delete_memory_op; - using syncmem_int_op = base_device::memory::synchronize_memory_op; - using resmem_var_op = base_device::memory::resize_memory_op; - using delmem_var_op = base_device::memory::delete_memory_op; - using castmem_var_h2d_op = base_device::memory::cast_memory_op; - using castmem_var_h2h_op - = base_device::memory::cast_memory_op; - using resmem_complex_op = base_device::memory::resize_memory_op, Device>; - using delmem_complex_op = base_device::memory::delete_memory_op, Device>; - - if (lmaxkb < 0) - { - return; - } - - const int x1 = (lmaxkb + 1) * (lmaxkb + 1); - const int npw = this->wfcpw->npwk[ik]; - - int *atom_nh = nullptr, *atom_na = nullptr, *atom_nb = nullptr, *h_atom_nh = new int[ucell.ntype], - *h_atom_na = new int[ucell.ntype], *h_atom_nb = new int[ucell.ntype]; - for (int it = 0; it < ucell.ntype; it++) - { - h_atom_nb[it] = ucell.atoms[it].ncpp.nbeta; - h_atom_nh[it] = ucell.atoms[it].ncpp.nh; - h_atom_na[it] = ucell.atoms[it].na; - } - // When the internal memory is large enough, it is better to make vkb1 be the number of pseudopot_cell_vnl. - // We only need to initialize it once as long as the cell is unchanged. - FPTYPE *vkb1 = nullptr, *gk = nullptr, *ylm = nullptr, *_tab = this->get_tab_data(), - *_indv = this->get_indv_data(), *_nhtol = this->get_nhtol_data(), - *_nhtolm = this->get_nhtolm_data(); - resmem_var_op()(ylm, x1 * npw, "VNL::ylm"); - resmem_var_op()(vkb1, nhm * npw, "VNL::vkb1"); - - ModuleBase::Vector3* _gk = new ModuleBase::Vector3[npw]; -#ifdef _OPENMP -#pragma omp parallel for schedule(static, 4096 / sizeof(FPTYPE)) -#endif - for (int ig = 0; ig < npw; ig++) - { - _gk[ig] = this->wfcpw->getgpluskcar(ik, ig); - } - if (this->use_gpu_) - { - resmem_int_op()(atom_nh, ucell.ntype); - resmem_int_op()(atom_nb, ucell.ntype); - resmem_int_op()(atom_na, ucell.ntype); - syncmem_int_op()(atom_nh, h_atom_nh, ucell.ntype); - syncmem_int_op()(atom_nb, h_atom_nb, ucell.ntype); - syncmem_int_op()(atom_na, h_atom_na, ucell.ntype); - - resmem_var_op()(gk, npw * 3); - castmem_var_h2d_op()(gk, reinterpret_cast(_gk), npw * 3); - } - else - { - atom_nh = h_atom_nh; - atom_nb = h_atom_nb; - atom_na = h_atom_na; - if (std::is_same::value) - { - resmem_var_op()(gk, npw * 3); - castmem_var_h2h_op()(gk, reinterpret_cast(_gk), npw * 3); - } - else - { - gk = reinterpret_cast(_gk); - } - } - - ModuleBase::YlmReal::Ylm_Real(ctx, x1, npw, gk, ylm); - - std::complex* sk = nullptr; - resmem_complex_op()(sk, ucell.nat * npw); - this->psf->get_sk(ctx, ik, this->wfcpw, sk); - - cal_vnl_op()(ctx, - ucell.ntype, - npw, - this->wfcpw->npwk_max, - this->nhm, - this->tab.getBound2(), - this->tab.getBound3(), - atom_na, - atom_nb, - atom_nh, - static_cast(PARAM.globalv.dq), - static_cast(ucell.tpiba), - static_cast>(ModuleBase::NEG_IMAG_UNIT), - gk, - ylm, - _indv, - _nhtol, - _nhtolm, - _tab, - vkb1, - sk, - vkb_in); - - delete[] _gk; - delete[] h_atom_nh; - delete[] h_atom_na; - delete[] h_atom_nb; - delmem_var_op()(ylm); - delmem_var_op()(vkb1); - delmem_complex_op()(sk); - if (this->use_gpu_ || std::is_same::value) - { - delmem_var_op()(gk); - } - if (this->use_gpu_) - { - delmem_int_op()(atom_nh); - delmem_int_op()(atom_nb); - delmem_int_op()(atom_na); - } - ModuleBase::timer::tick("pp_cell_vnl", "getvnl"); -} // end subroutine getvnl - -void pseudopot_cell_vnl::init_vnl(UnitCell& cell, const ModulePW::PW_Basis* rho_basis) -{ - ModuleBase::TITLE("pseudopot_cell_vnl", "init_vnl"); - ModuleBase::timer::tick("ppcell_vnl", "init_vnl"); - - this->omega_old = cell.omega; - - // from init_us_1 - // a) For each non vanderbilt pseudopotential it computes the D and - // the betar in the same form of the Vanderbilt pseudopotential. - // b) It computes the indices indv which establish the correspondence - // nh <-> beta in the atom - // c) It computes the indices nhtol which establish the correspondence - // nh <-> angular momentum of the beta function - // d) It computes the indices nhtolm which establish the correspondence - // nh <-> combined (l,m) index for the beta function. - - // the following prevents an out-of-bound error: upf(nt)%nqlc=2*lmax+1 - // but in some versions of the PP files lmax is not set to the maximum - // l of the beta functions but includes the l of the local potential - for (int it = 0; it < cell.ntype; it++) - { - if (cell.atoms[it].ncpp.tvanp) - { - cell.atoms[it].ncpp.nqlc = std::min(cell.atoms[it].ncpp.nqlc, lmaxq); - if (cell.atoms[it].ncpp.nqlc < 0) { - cell.atoms[it].ncpp.nqlc = 0; -} - } - } - - // In the spin-orbit case we need the unitary matrix u which rotates the - // real spherical harmonics and yields the complex ones. - soc.fcoef.create(cell.ntype, this->nhm, this->nhm); - if (PARAM.inp.lspinorb) - { - soc.rot_ylm(this->lmaxkb); - } - - // For each pseudopotential we initialize the indices nhtol, nhtolm, - // nhtoj, indv, and if the pseudopotential is of KB type we initialize - // the atomic D terms - this->dvan.zero_out(); - this->dvan_so.zero_out(); // added by zhengdy-soc - delete[] indv_ijkb0; - this->indv_ijkb0 = new int[cell.nat]; - int ijkb0 = 0; - for (int it = 0; it < cell.ntype; it++) - { - int BetaIndex = 0; - const int Nprojectors = cell.atoms[it].ncpp.nh; - for (int ib = 0; ib < cell.atoms[it].ncpp.nbeta; ib++) - { - const int l = cell.atoms[it].ncpp.lll[ib]; - const double j = cell.atoms[it].ncpp.jjj[ib]; - for (int m = 0; m < 2 * l + 1; m++) - { - this->nhtol(it, BetaIndex) = l; - this->nhtolm(it, BetaIndex) = l * l + m; - this->nhtoj(it, BetaIndex) = j; - this->indv(it, BetaIndex) = ib; - ++BetaIndex; - } - } - - // ijtoh map augmentation channel indexes ih and jh to composite - // "triangular" index ijh - for (int ih1 = 0; ih1 < nhm; ih1++) - { - for (int ih2 = ih1; ih2 < nhm; ih2++) - { - this->ijtoh(it, ih1, ih2) = -1; - this->ijtoh(it, ih2, ih1) = -1; - } - } - int ijv = 0; - for (int ih1 = 0; ih1 < Nprojectors; ih1++) - { - for (int ih2 = ih1; ih2 < Nprojectors; ih2++) - { - ijv++; // liuyu I'm not sure from 0 or 1 - this->ijtoh(it, ih1, ih2) = ijv; - this->ijtoh(it, ih2, ih1) = ijv; - } - } - - // ijkb0 points to the first beta "in the solid" for atom ia - // i.e. ijkb0,.. ijkb0+nh(ityp(ia))-1 are the nh beta functions of - // atom ia in the global list of beta functions (ijkb0=0 for ia=0) - for (int ia = 0; ia < cell.nat; ia++) - { - if (it == cell.iat2it[ia]) - { - this->indv_ijkb0[ia] = ijkb0; - ijkb0 += Nprojectors; - } - } - - // From now on the only difference between KB and US pseudopotentials - // is in the presence of the q and Q functions. - // Here we initialize the D of the solid - if (cell.atoms[it].ncpp.has_so) - { - for (int ip = 0; ip < Nprojectors; ip++) - { - const int l1 = this->nhtol(it, ip); - const double j1 = this->nhtoj(it, ip); - const int m1 = this->nhtolm(it, ip) - l1 * l1; - // const int v1 = static_cast( indv(it, ip ) ); - for (int ip2 = 0; ip2 < Nprojectors; ip2++) - { - const int l2 = this->nhtol(it, ip2); - const double j2 = this->nhtoj(it, ip2); - const int m2 = this->nhtolm(it, ip2) - l2 * l2; - // const int v2 = static_cast( indv(it, ip2 ) ); - if (l1 == l2 && fabs(j1 - j2) < 1e-7) - { - for (int is1 = 0; is1 < 2; is1++) - { - for (int is2 = 0; is2 < 2; is2++) - { - soc.set_fcoef(l1, l2, is1, is2, m1, m2, j1, j2, it, ip, ip2); - } - } - } - } - } - // - // and calculate the bare coefficients - // - for (int ip = 0; ip < Nprojectors; ++ip) - { - const int ir = static_cast(indv(it, ip)); - for (int ip2 = 0; ip2 < Nprojectors; ++ip2) - { - const int is = static_cast(indv(it, ip2)); - int ijs = 0; - for (int is1 = 0; is1 < 2; ++is1) - { - for (int is2 = 0; is2 < 2; ++is2) - { - this->dvan_so(ijs, it, ip, ip2) - = cell.atoms[it].ncpp.dion(ir, is) * soc.fcoef(it, is1, is2, ip, ip2); - ++ijs; - if (ir != is) { - soc.fcoef(it, is1, is2, ip, ip2) = std::complex(0.0, 0.0); -} - } - } - } - } - } - else { - for (int ip = 0; ip < Nprojectors; ip++) - { - for (int ip2 = 0; ip2 < Nprojectors; ip2++) - { - if (this->nhtol(it, ip) == nhtol(it, ip2) && this->nhtolm(it, ip) == nhtolm(it, ip2)) - { - const int ir = static_cast(indv(it, ip)); - const int is = static_cast(indv(it, ip2)); - if (PARAM.inp.lspinorb) - { - this->dvan_so(0, it, ip, ip2) = cell.atoms[it].ncpp.dion(ir, is); - this->dvan_so(3, it, ip, ip2) = cell.atoms[it].ncpp.dion(ir, is); - } - else - { - this->dvan(it, ip, ip2) = cell.atoms[it].ncpp.dion(ir, is); - } - } - } - } -} - } - - // e) It computes the coefficients c_{LM}^{nm} which relates the - // spherical harmonics in the Q expansion - // f) It computes the interpolation table "qrad" for Q(G) - // g) It computes the qq terms which define the S matrix. - - // compute Clebsch-Gordan coefficients - if (PARAM.globalv.use_uspp) - { - ModuleBase::Clebsch_Gordan::clebsch_gordan(lmaxkb + 1, ap, lpx, lpl); - } - - // here for the US types we compute the Fourier transform of the Q functions. - if (lmaxq > 0) - { - this->compute_qrad(cell); - } - - // compute the qq coefficients by integrating the Q. - // The qq are the g=0 components of Q - if (rho_basis->ig_gge0 >= 0) - { - ModuleBase::matrix ylmk0(lmaxq * lmaxq, 1); - const double qnorm = 0.0; // only G=0 term - std::complex qgm(0.0, 0.0); - ModuleBase::YlmReal::Ylm_Real(lmaxq * lmaxq, 1, &(rho_basis->gcar[rho_basis->ig_gge0]), ylmk0); - for (int it = 0; it < cell.ntype; it++) - { - Atom_pseudo* upf = &cell.atoms[it].ncpp; - if (upf->tvanp) - { - if (upf->has_so) - { - for (int ih = 0; ih < upf->nh; ih++) - { - for (int jh = 0; jh < upf->nh; jh++) - { - this->radial_fft_q(1, ih, jh, it, &qnorm, ylmk0, &qgm); - this->qq_nt(it, ih, jh) = cell.omega * qgm.real(); - for (int kh = 0; kh < upf->nh; kh++) - { - for (int lh = 0; lh < upf->nh; lh++) - { - int ijs = 0; - for (int is1 = 0; is1 < 2; ++is1) - { - for (int is2 = 0; is2 < 2; ++is2) - { - for (int is = 0; is < 2; is++) - { - this->qq_so(it, ijs, kh, lh) += cell.omega * qgm.real() - * soc.fcoef(it, is1, is, kh, ih) - * soc.fcoef(it, is, is2, jh, lh); - } - } - } - } - } - } - } - } - else - { - for (int ih = 0; ih < upf->nh; ih++) - { - for (int jh = ih; jh < upf->nh; jh++) - { - this->radial_fft_q(1, ih, jh, it, &qnorm, ylmk0, &qgm); - if (PARAM.inp.lspinorb) - { - this->qq_so(it, 0, ih, jh) = cell.omega * qgm.real(); - this->qq_so(it, 0, jh, ih) = this->qq_so(it, 0, ih, jh); - this->qq_so(it, 3, ih, jh) = this->qq_so(it, 0, ih, jh); - this->qq_so(it, 3, jh, ih) = this->qq_so(it, 0, ih, jh); - } - this->qq_nt(it, ih, jh) = cell.omega * qgm.real(); - this->qq_nt(it, jh, ih) = cell.omega * qgm.real(); - } - } - } - } - } - } - -#ifdef __MPI - MPI_Allreduce(MPI_IN_PLACE, this->qq_nt.ptr, this->qq_nt.getSize(), MPI_DOUBLE, MPI_SUM, POOL_WORLD); - MPI_Allreduce(MPI_IN_PLACE, this->qq_so.ptr, this->qq_so.getSize(), MPI_DOUBLE_COMPLEX, MPI_SUM, POOL_WORLD); -#endif - - // set the atomic specific qq_at matrices - for (int ia = 0; ia < cell.nat; ia++) - { - int it = cell.iat2it[ia]; - for (int ih = 0; ih < nhm; ih++) - { - for (int jh = ih; jh < nhm; jh++) - { - this->qq_at(ia, ih, jh) = qq_nt(it, ih, jh); - this->qq_at(ia, jh, ih) = qq_nt(it, jh, ih); - } - } - } - - // h) It fills the interpolation table for the beta functions - /********************************************************** - // He Lixin: this block is used for non-local potential - // fill the interpolation table tab - ************************************************************/ - - const double pref = ModuleBase::FOUR_PI / sqrt(cell.omega); - this->tab.zero_out(); - GlobalV::ofs_running << "\n Init Non-Local PseudoPotential table : "; - for (int it = 0; it < cell.ntype; it++) - { - const int nbeta = cell.atoms[it].ncpp.nbeta; - int kkbeta = cell.atoms[it].ncpp.kkbeta; - - // mohan modify 2008-3-31 - // mohan add kkbeta>0 2009-2-27 - if ((kkbeta % 2 == 0) && kkbeta > 0) - { - kkbeta--; - } - - double* jl = new double[kkbeta]; - double* aux = new double[kkbeta]; - for (int ib = 0; ib < nbeta; ib++) - { - const int l = cell.atoms[it].ncpp.lll[ib]; - for (int iq = 0; iq < PARAM.globalv.nqx; iq++) - { - const double q = iq * PARAM.globalv.dq; - ModuleBase::Sphbes::Spherical_Bessel(kkbeta, cell.atoms[it].ncpp.r.data(), q, l, jl); - for (int ir = 0; ir < kkbeta; ir++) - { - aux[ir] = cell.atoms[it].ncpp.betar(ib, ir) * jl[ir] * cell.atoms[it].ncpp.r[ir]; - } - double vqint=0.0; - ModuleBase::Integral::Simpson_Integral(kkbeta, aux, cell.atoms[it].ncpp.rab.data(), vqint); - this->tab(it, ib, iq) = vqint * pref; - } - } - delete[] aux; - delete[] jl; - } - if (this->use_gpu_) - { - if (PARAM.globalv.has_float_data) - { - castmem_d2s_h2d_op()(this->s_indv, this->indv.c, this->indv.nr * this->indv.nc); - castmem_d2s_h2d_op()(this->s_nhtol, this->nhtol.c, this->nhtol.nr * this->nhtol.nc); - castmem_d2s_h2d_op()(this->s_nhtolm, this->nhtolm.c, this->nhtolm.nr * this->nhtolm.nc); - castmem_d2s_h2d_op()(this->s_tab, this->tab.ptr, this->tab.getSize()); - castmem_d2s_h2d_op()(this->s_qq_nt, this->qq_nt.ptr, this->qq_nt.getSize()); - castmem_z2c_h2d_op()(this->c_qq_so, this->qq_so.ptr, this->qq_so.getSize()); - } - if (PARAM.globalv.has_double_data) - { - syncmem_z2z_h2d_op()(this->z_qq_so, this->qq_so.ptr, this->qq_so.getSize()); - } - // Even when the single precision flag is enabled, - // these variables are utilized in the Force/Stress calculation as well. - // modified by denghuilu at 2023-05-15 - syncmem_d2d_h2d_op()(this->d_indv, this->indv.c, this->indv.nr * this->indv.nc); - syncmem_d2d_h2d_op()(this->d_nhtol, this->nhtol.c, this->nhtol.nr * this->nhtol.nc); - syncmem_d2d_h2d_op()(this->d_nhtolm, this->nhtolm.c, this->nhtolm.nr * this->nhtolm.nc); - syncmem_d2d_h2d_op()(this->d_tab, this->tab.ptr, this->tab.getSize()); - syncmem_d2d_h2d_op()(this->d_qq_nt, this->qq_nt.ptr, this->qq_nt.getSize()); - } - else - { - if (PARAM.globalv.has_float_data) - { - castmem_d2s_h2h_op()(this->s_indv, this->indv.c, this->indv.nr * this->indv.nc); - castmem_d2s_h2h_op()(this->s_nhtol, this->nhtol.c, this->nhtol.nr * this->nhtol.nc); - castmem_d2s_h2h_op()(this->s_nhtolm, this->nhtolm.c, this->nhtolm.nr * this->nhtolm.nc); - castmem_d2s_h2h_op()(this->s_tab, this->tab.ptr, this->tab.getSize()); - castmem_d2s_h2h_op()(this->s_qq_nt, this->qq_nt.ptr, this->qq_nt.getSize()); - castmem_z2c_h2h_op()(this->c_qq_so, this->qq_so.ptr, this->qq_so.getSize()); - } - // There's no need to synchronize double precision pointers while in a CPU environment. - } - ModuleBase::timer::tick("ppcell_vnl", "init_vnl"); - GlobalV::ofs_running << "\n Init Non-Local-Pseudopotential done." << std::endl; - return; -} - -void pseudopot_cell_vnl::compute_qrad(UnitCell& cell) -{ - const double pref = ModuleBase::FOUR_PI / cell.omega; - - for (int it = 0; it < cell.ntype; it++) - { - Atom_pseudo* upf = &cell.atoms[it].ncpp; - if (upf->tvanp) - { - const int nbeta = upf->nbeta; - int kkbeta = upf->kkbeta; - if ((kkbeta % 2 == 0) && kkbeta > 0) - { - kkbeta--; - } - double* aux = new double[kkbeta]; - double* besr = new double[kkbeta]; - - for (int l = 0; l < upf->nqlc; l++) - { - for (int iq = 0; iq < PARAM.globalv.nqxq; iq++) - { - const double q = iq * PARAM.globalv.dq; - // here we compute the spherical bessel function for each q_i - ModuleBase::Sphbes::Spherical_Bessel(kkbeta, upf->r.data(), q, l, besr); - for (int nb = 0; nb < nbeta; nb++) - { - // the Q are symmetric with respect to indices nb and mb - for (int mb = nb; mb < nbeta; mb++) - { - const int ijv = mb * (mb + 1) / 2 + nb; - if ((l >= std::abs(upf->lll[nb] - upf->lll[mb])) && (l <= (upf->lll[nb] + upf->lll[mb])) - && ((l + upf->lll[nb] + upf->lll[mb]) % 2 == 0)) - { - for (int ir = 0; ir < kkbeta; ir++) - { - aux[ir] = besr[ir] * upf->qfuncl(l, ijv, ir); - } - // then we integrate with all the Q functions - double vqint; - ModuleBase::Integral::Simpson_Integral(kkbeta, aux, upf->rab.data(), vqint); - qrad(it, l, ijv, iq) = vqint * pref; - } - } - } - } - } - delete[] aux; - delete[] besr; - } - } -} - -void pseudopot_cell_vnl::radial_fft_q(const int ng, - const int ih, - const int jh, - const int itype, - const double* qnorm, - const ModuleBase::matrix ylm, - std::complex* qg) const -{ - // computes the indices which correspond to ih,jh - const int nb = indv(itype, ih); - const int mb = indv(itype, jh); - assert(nb < nbetam); - assert(mb < nbetam); - int ijv = 0; - if (nb >= mb) - { - ijv = nb * (nb + 1) / 2 + mb; - } - else - { - ijv = mb * (mb + 1) / 2 + nb; - } - const int ivl = nhtolm(itype, ih); - const int jvl = nhtolm(itype, jh); - - for (int ig = 0; ig < ng; ig++) - { - qg[ig] = {0, 0}; - } - // makes the sum over the non zero LM - int l = -1; - std::complex pref(0.0, 0.0); - for (int lm = 0; lm < this->lpx(ivl, jvl); lm++) - { - int lp = this->lpl(ivl, jvl, lm); - assert(lp >= 0); - assert(lp < 49); - if (lp == 0) - { - l = 0; - } - else if (lp < 4) - { - l = 1; - } - else if (lp < 9) - { - l = 2; - } - else if (lp < 16) - { - l = 3; - } - else if (lp < 25) - { - l = 4; - } - else if (lp < 36) - { - l = 5; - } - else - { - l = 6; - } - pref = pow(ModuleBase::NEG_IMAG_UNIT, l) * this->ap(lp, ivl, jvl); - - double qm1 = -1.0; // any number smaller than qnorm - double work = 0.0; - for (int ig = 0; ig < ng; ig++) - { - // calculate quantites depending on the module of G only when needed - if (std::abs(qnorm[ig] - qm1) > 1e-6) - { - work = ModuleBase::PolyInt::Polynomial_Interpolation(this->qrad, - itype, - l, - ijv, - PARAM.globalv.nqxq, - PARAM.globalv.dq, - qnorm[ig]); - qm1 = qnorm[ig]; - } - qg[ig] += pref * work * ylm(lp, ig); - } - } -} - -template -void pseudopot_cell_vnl::radial_fft_q(Device* ctx, - const int ng, - const int ih, - const int jh, - const int itype, - const FPTYPE* qnorm, - const FPTYPE* ylm, - std::complex* qg) const -{ - using setmem_complex_op = base_device::memory::set_memory_op, Device>; - - // computes the indices which correspond to ih,jh - const int nb = indv(itype, ih); - const int mb = indv(itype, jh); - assert(nb < nbetam); - assert(mb < nbetam); - int ijv = 0; - if (nb >= mb) - { - ijv = nb * (nb + 1) / 2 + mb; - } - else - { - ijv = mb * (mb + 1) / 2 + nb; - } - const int ivl = nhtolm(itype, ih); - const int jvl = nhtolm(itype, jh); - - setmem_complex_op()(qg, 0, ng); - - const double* qnorm_double = reinterpret_cast(qnorm); - - // makes the sum over the non zero LM - int l = -1; - std::complex pref(0.0, 0.0); - for (int lm = 0; lm < this->lpx(ivl, jvl); lm++) - { - int lp = this->lpl(ivl, jvl, lm); - assert(lp >= 0); - assert(lp < 49); - if (lp == 0) - { - l = 0; - } - else if (lp < 4) - { - l = 1; - } - else if (lp < 9) - { - l = 2; - } - else if (lp < 16) - { - l = 3; - } - else if (lp < 25) - { - l = 4; - } - else if (lp < 36) - { - l = 5; - } - else - { - l = 6; - } - pref = static_cast>(pow(ModuleBase::NEG_IMAG_UNIT, l) * this->ap(lp, ivl, jvl)); - - double qm1 = -1.0; // any number smaller than qnorm - double work = 0.0; - for (int ig = 0; ig < ng; ig++) - { - if (std::abs(qnorm_double[ig] - qm1) > 1e-6) - { - work = ModuleBase::PolyInt::Polynomial_Interpolation(this->qrad, - itype, - l, - ijv, - PARAM.globalv.nqxq, - PARAM.globalv.dq, - qnorm_double[ig]); - qm1 = qnorm_double[ig]; - } - qg[ig] += pref * static_cast(work) * ylm[lp * ng + ig]; - } - } -} - -#ifdef __LCAO -std::complex pseudopot_cell_vnl::Cal_C(int alpha, int lu, int mu, int L, int M) // pengfei Li 2018-3-23 -{ - std::complex cf; - if (alpha == 0) - { - cf = -sqrt(4 * ModuleBase::PI / 3) * CG(lu, mu, 1, 1, L, M); - } - else if (alpha == 1) - { - cf = -sqrt(4 * ModuleBase::PI / 3) * CG(lu, mu, 1, 2, L, M); - } - else if (alpha == 2) - { - cf = sqrt(4 * ModuleBase::PI / 3) * CG(lu, mu, 1, 0, L, M); - } - else - { - ModuleBase::WARNING_QUIT("pseudopot_cell_vnl_alpha", "alpha must be 0~2"); - } - - return cf; -} - -double pseudopot_cell_vnl::CG(int l1, int m1, int l2, int m2, int L, int M) // pengfei Li 2018-3-23 -{ - int dim = L * L + M; - int dim1 = l1 * l1 + m1; - int dim2 = l2 * l2 + m2; - - // double A = MGT.Gaunt_Coefficients(dim1, dim2, dim); - - return MGT.Gaunt_Coefficients(dim1, dim2, dim); -} - -// void pseudopot_cell_vnl::getvnl_alpha(const int &ik) // pengfei Li 2018-3-23 -// { -// if(PARAM.inp.test_pp) ModuleBase::TITLE("pseudopot_cell_vnl","getvnl_alpha"); -// ModuleBase::timer::tick("pp_cell_vnl","getvnl_alpha"); - -// if(lmaxkb < 0) -// { -// return; -// } - -// const int npw = this->wfcpw->npwk[ik]; -// int ig, ia, nb, ih, lu, mu; - -// double *vq = new double[npw]; -// const int x1= (lmaxkb + 2)*(lmaxkb + 2); - -// ModuleBase::matrix ylm(x1, npw); -// ModuleBase::Vector3 *gk = new ModuleBase::Vector3[npw]; -// for (ig = 0;ig < npw;ig++) -// { -// gk[ig] = this->wfcpw->getgpluskcar(ik,ig); -// } - -// vkb1_alpha = new std::complex**[3]; -// for(int i=0; i<3; i++) -// { -// vkb1_alpha[i] = new std::complex*[nhm]; -// for(int j=0; j[npw]; -// } -// } - -// vkb_alpha = new std::complex**[3]; -// for(int i=0; i<3; i++) -// { -// vkb_alpha[i] = new std::complex*[nkb]; -// for(int j=0; j[this->wfcpw->npwk_max]; -// } -// } - -// ModuleBase::YlmReal::Ylm_Real(x1, npw, gk, ylm); - -// MGT.init_Gaunt_CH( lmaxkb + 2 ); -// MGT.init_Gaunt( lmaxkb + 2 ); - -// int jkb = 0; -// for(int it = 0;it < ucell.ntype;it++) -// { -// if(PARAM.inp.test_pp>1) ModuleBase::GlobalFunc::OUT("it",it); -// // calculate beta in G-space using an interpolation table -// const int nbeta = ucell.atoms[it].ncpp.nbeta; -// const int nh = ucell.atoms[it].ncpp.nh; - -// if(PARAM.inp.test_pp>1) ModuleBase::GlobalFunc::OUT("nbeta",nbeta); - -// for(int i=0; i<3; i++) -// for(int j=0; j( nhtol(it, ih)); -// mu = static_cast( nhtolm(it, ih)) - lu * lu; -// nb = static_cast( indv(it, ih)); - -// for (int L= std::abs(lu - 1); L<= (lu + 1); L++) -// { -// for (ig = 0;ig < npw;ig++) -// { -// const double gnorm = gk[ig].norm() * ucell.tpiba; -// vq [ig] = ModuleBase::PolyInt::Polynomial_Interpolation( -// this->tab_alpha, it, nb, L, PARAM.globalv.nqx, PARAM.globalv.dq, gnorm); - -// for (int M=0; M<2*L+1; M++) -// { -// int lm = L*L + M; -// for (int alpha=0; alpha<3; alpha++) -// { -// std::complex c = Cal_C(alpha,lu, mu, L, M); -// /*if(alpha == 0) -// { -// std::cout<<"lu= "< *sk = this->psf->get_sk(ik, it, ia,this->wfcpw); -// for (ih = 0;ih < nh;ih++) -// { -// for (ig = 0;ig < npw;ig++) -// { -// for(int alpha=0; alpha<3; alpha++) -// { -// vkb_alpha[alpha][jkb][ig] = vkb1_alpha[alpha][ih][ig] * sk [ig]; -// } -// } -// ++jkb; -// } // end ih -// delete [] sk; -// } // end ia -// } // enddo - -// delete [] gk; -// delete [] vq; -// ModuleBase::timer::tick("pp_cell_vnl","getvnl_alpha"); -// return; -// } -#endif - -void pseudopot_cell_vnl::init_vnl_alpha(const UnitCell& ucell) // pengfei Li 2018-3-23 -{ - if (PARAM.inp.test_pp) { - ModuleBase::TITLE("pseudopot_cell_vnl", "init_vnl_alpha"); -} - ModuleBase::timer::tick("ppcell_vnl", "init_vnl_alpha"); - - for (int it = 0; it < ucell.ntype; it++) - { - int BetaIndex = 0; - // const int Nprojectors = ucell.atoms[it].nh; - for (int ib = 0; ib < ucell.atoms[it].ncpp.nbeta; ib++) - { - const int l = ucell.atoms[it].ncpp.lll[ib]; - for (int m = 0; m < 2 * l + 1; m++) - { - this->nhtol(it, BetaIndex) = l; - this->nhtolm(it, BetaIndex) = l * l + m; - this->indv(it, BetaIndex) = ib; - ++BetaIndex; - } - } - } - - // max number of beta functions - const int nbrx = 10; - - const double pref = ModuleBase::FOUR_PI / sqrt(ucell.omega); - this->tab_alpha.create(ucell.ntype, nbrx, lmaxkb + 2, PARAM.globalv.nqx); - this->tab_alpha.zero_out(); - GlobalV::ofs_running << "\n Init Non-Local PseudoPotential table( including L index) : "; - for (int it = 0; it < ucell.ntype; it++) - { - const int nbeta = ucell.atoms[it].ncpp.nbeta; - int kkbeta = ucell.atoms[it].ncpp.kkbeta; - - // mohan modify 2008-3-31 - // mohan add kkbeta>0 2009-2-27 - if ((kkbeta % 2 == 0) && kkbeta > 0) - { - kkbeta--; - } - - double* jl = new double[kkbeta]; - double* aux = new double[kkbeta]; - - for (int ib = 0; ib < nbeta; ib++) - { - for (int L = 0; L <= lmaxkb + 1; L++) - { - for (int iq = 0; iq < PARAM.globalv.nqx; iq++) - { - const double q = iq * PARAM.globalv.dq; - ModuleBase::Sphbes::Spherical_Bessel(kkbeta, ucell.atoms[it].ncpp.r.data(), q, L, jl); - - for (int ir = 0; ir < kkbeta; ir++) - { - aux[ir] = ucell.atoms[it].ncpp.betar(ib, ir) * jl[ir] - * ucell.atoms[it].ncpp.r[ir] * ucell.atoms[it].ncpp.r[ir]; - } - double vqint; - ModuleBase::Integral::Simpson_Integral(kkbeta, aux, ucell.atoms[it].ncpp.rab.data(), vqint); - this->tab_alpha(it, ib, L, iq) = vqint * pref; - } - } - } - delete[] aux; - delete[] jl; - } - ModuleBase::timer::tick("ppcell_vnl", "init_vnl_alpha"); - GlobalV::ofs_running << "\n Init Non-Local-Pseudopotential done(including L)." << std::endl; - return; -} - -void pseudopot_cell_vnl::print_vnl(std::ofstream& ofs) -{ - output::printr3_d(ofs, " tab : ", tab); -} - -// ---------------------------------------------------------------------- -void pseudopot_cell_vnl::cal_effective_D(const ModuleBase::matrix& veff, - const ModulePW::PW_Basis* rho_basis, - UnitCell& cell) -{ - ModuleBase::TITLE("pseudopot_cell_vnl", "cal_effective_D"); - - /* - recalculate effective coefficient matrix for non-local pseudo-potential - 1. assign to each atom from element; - 2. extend to each spin when nspin larger than 1 - 3. rotate to effective matrix when spin-orbital coupling is used - */ - - if (!PARAM.globalv.use_uspp) - { - for (int iat = 0; iat < cell.nat; iat++) - { - const int it = cell.iat2it[iat]; - const int nht = cell.atoms[it].ncpp.nh; - // nht: number of beta functions per atom type - for (int is = 0; is < PARAM.inp.nspin; is++) - { - for (int ih = 0; ih < nht; ih++) - { - for (int jh = ih; jh < nht; jh++) - { - if (PARAM.inp.lspinorb) - { - this->deeq_nc(is, iat, ih, jh) = this->dvan_so(is, it, ih, jh); - this->deeq_nc(is, iat, jh, ih) = this->dvan_so(is, it, jh, ih); - } - else if (PARAM.inp.nspin == 4) - { - if (is == 0) - { - this->deeq_nc(is, iat, ih, jh) = this->dvan(it, ih, jh); - this->deeq_nc(is, iat, jh, ih) = this->dvan(it, ih, jh); - } - else if (is == 1) - { - this->deeq_nc(is, iat, ih, jh) = std::complex(0.0, 0.0); - this->deeq_nc(is, iat, jh, ih) = std::complex(0.0, 0.0); - } - else if (is == 2) - { - this->deeq_nc(is, iat, ih, jh) = std::complex(0.0, 0.0); - this->deeq_nc(is, iat, jh, ih) = std::complex(0.0, 0.0); - } - else if (is == 3) - { - this->deeq_nc(is, iat, ih, jh) = this->dvan(it, ih, jh); - this->deeq_nc(is, iat, jh, ih) = this->dvan(it, ih, jh); - } - } - else - { - this->deeq(is, iat, ih, jh) = this->dvan(it, ih, jh); - this->deeq(is, iat, jh, ih) = this->dvan(it, ih, jh); - // in most of pseudopotential files, number of projections of one orbital is only one, - // which lead to diagonal matrix of dion - // when number larger than 1, non-diagonal dion should be calculated. - if (ih != jh && std::fabs(this->deeq(is, iat, ih, jh)) > 0.0) - { - this->multi_proj = true; - } - } - } - } - } - } - } - else - { - newq(veff, rho_basis, cell); - - for (int iat = 0; iat < cell.nat; iat++) - { - int it = cell.iat2it[iat]; - if (PARAM.inp.noncolin) - { - if (cell.atoms[it].ncpp.has_so) - { - this->newd_so(iat, cell); - } - else - { - this->newd_nc(iat, cell); - } - } - else - { - for (int is = 0; is < PARAM.inp.nspin; is++) - { - for (int ih = 0; ih < cell.atoms[it].ncpp.nh; ih++) - { - for (int jh = ih; jh < cell.atoms[it].ncpp.nh; jh++) - { - deeq(is, iat, ih, jh) += this->dvan(it, ih, jh); - deeq(is, iat, jh, ih) = deeq(is, iat, ih, jh); - } - } - } - } - } - } - if (this->use_gpu_) - { - if (PARAM.globalv.has_float_data) - { - castmem_d2s_h2d_op()(this->s_deeq, - this->deeq.ptr, - PARAM.inp.nspin * cell.nat * this->nhm * this->nhm); - castmem_z2c_h2d_op()(this->c_deeq_nc, - this->deeq_nc.ptr, - PARAM.inp.nspin * cell.nat * this->nhm * this->nhm); - } - if (PARAM.globalv.has_double_data) - { - syncmem_z2z_h2d_op()(this->z_deeq_nc, - this->deeq_nc.ptr, - PARAM.inp.nspin * cell.nat * this->nhm * this->nhm); - } - syncmem_d2d_h2d_op()(this->d_deeq, - this->deeq.ptr, - PARAM.inp.nspin * cell.nat * this->nhm * this->nhm); - } - else - { - if (PARAM.globalv.has_float_data) - { - castmem_d2s_h2h_op()(this->s_deeq, - this->deeq.ptr, - PARAM.inp.nspin * cell.nat * this->nhm * this->nhm); - castmem_z2c_h2h_op()(this->c_deeq_nc, - this->deeq_nc.ptr, - PARAM.inp.nspin * cell.nat * this->nhm * this->nhm); - } - // There's no need to synchronize double precision pointers while in a CPU environment. - } -} - -void pseudopot_cell_vnl::newq(const ModuleBase::matrix& veff, const ModulePW::PW_Basis* rho_basis, UnitCell& cell) -{ - ModuleBase::TITLE("pseudopot_cell_vnl", "newq"); - - const std::complex ci_tpi = ModuleBase::IMAG_UNIT * ModuleBase::TWO_PI; - double fact = 1.0; - if (rho_basis->gamma_only) - { - fact = 2.0; - } - - deeq.zero_out(); - - const int npw = rho_basis->npw; - ModuleBase::matrix ylmk0(lmaxq * lmaxq, npw); - ModuleBase::YlmReal::Ylm_Real(lmaxq * lmaxq, npw, rho_basis->gcar, ylmk0); - - double* qnorm = new double[npw]; - for (int ig = 0; ig < npw; ig++) - { - qnorm[ig] = rho_basis->gcar[ig].norm() * cell.tpiba; - } - - // fourier transform of the total effective potential - ModuleBase::ComplexMatrix vaux(PARAM.inp.nspin, npw); - for (int is = 0; is < PARAM.inp.nspin; is++) - { - rho_basis->real2recip(&veff.c[is * veff.nc], &vaux(is, 0)); - } - - for (int it = 0; it < cell.ntype; it++) - { - Atom_pseudo* upf = &cell.atoms[it].ncpp; - if (upf->tvanp) - { - // nij = max number of (ih,jh) pairs per atom type - int nij = upf->nh * (upf->nh + 1) / 2; - ModuleBase::ComplexMatrix qg(nij, npw); - - // Compute and store Q(G) for this atomic species - // (without structure factor) - int ijh = 0; - for (int ih = 0; ih < upf->nh; ih++) - { - for (int jh = ih; jh < upf->nh; jh++) - { - radial_fft_q(npw, ih, jh, it, qnorm, ylmk0, &qg(ijh, 0)); - ijh++; - } - } - - // Compute and store V(G) times the structure factor e^(-iG*tau) - const int natom = cell.atoms[it].na; - ModuleBase::ComplexMatrix aux(natom, npw); - ModuleBase::matrix deeaux(natom, nij); - for (int is = 0; is < PARAM.inp.nspin; is++) - { - for (int ia = 0; ia < natom; ia++) - { - const ModuleBase::Vector3 tau = cell.atoms[it].tau[ia]; - for (int ig = 0; ig < npw; ig++) - { - const ModuleBase::Vector3 g = rho_basis->gcar[ig]; - const std::complex phase = ci_tpi * (g * tau); - aux(ia, ig) = vaux(is, ig) * exp(phase); - } - } - // here we compute the integral Q*V for all atoms of this kind - const char transa = 'C', transb = 'N'; - const double zero = 0.0; - const int complex_npw = 2 * npw; - double* qg_ptr = reinterpret_cast(qg.c); - double* aux_ptr = reinterpret_cast(aux.c); - - dgemm_(&transa, - &transb, - &nij, - &natom, - &complex_npw, - &fact, - qg_ptr, - &complex_npw, - aux_ptr, - &complex_npw, - &zero, - deeaux.c, - &nij); - // I'm not sure if this is correct for gamma_only - if (rho_basis->gamma_only && rho_basis->ig_gge0 >= 0) - { - const double neg = -1.0; - dger_(&nij, &natom, &neg, qg_ptr, &complex_npw, aux_ptr, &complex_npw, deeaux.c, &nij); - } - - for (int ia = 0; ia < natom; ia++) - { - int ijh = 0; - const int iat = cell.itia2iat(it, ia); - for (int ih = 0; ih < upf->nh; ih++) - { - for (int jh = ih; jh < upf->nh; jh++) - { - deeq(is, iat, ih, jh) = cell.omega * deeaux(ia, ijh); - if (jh > ih) - { - deeq(is, iat, jh, ih) = deeq(is, iat, ih, jh); - } - ijh++; - } - } - } - } - } - } - -#ifdef __MPI - MPI_Allreduce(MPI_IN_PLACE, deeq.ptr, deeq.getSize(), MPI_DOUBLE, MPI_SUM, POOL_WORLD); -#endif - - delete[] qnorm; -} - -void pseudopot_cell_vnl::newd_so(const int& iat, UnitCell& cell) -{ - ModuleBase::TITLE("pseudopot_cell_vnl", "newd_so"); - - const int it = cell.iat2it[iat]; - Atom_pseudo* upf = &cell.atoms[it].ncpp; - int ijs = 0; - for (int is1 = 0; is1 < 2; is1++) - { - for (int is2 = 0; is2 < 2; is2++) - { - for (int ih = 0; ih < upf->nh; ih++) - { - for (int jh = 0; jh < upf->nh; jh++) - { - deeq_nc(ijs, iat, ih, jh) = dvan_so(ijs, it, ih, jh); - - for (int kh = 0; kh < upf->nh; kh++) - { - for (int lh = 0; lh < upf->nh; lh++) - { - if (PARAM.globalv.domag) - { - deeq_nc(ijs, iat, ih, jh) - += deeq(0, iat, kh, lh) - * (soc.fcoef(it, is1, 0, ih, kh) * soc.fcoef(it, 0, is2, lh, jh) - + soc.fcoef(it, is1, 1, ih, kh) * soc.fcoef(it, 1, is2, lh, jh)) - + deeq(1, iat, kh, lh) - * (soc.fcoef(it, is1, 0, ih, kh) * soc.fcoef(it, 1, is2, lh, jh) - + soc.fcoef(it, is1, 1, ih, kh) * soc.fcoef(it, 0, is2, lh, jh)) - + ModuleBase::NEG_IMAG_UNIT * deeq(2, iat, kh, lh) - * (soc.fcoef(it, is1, 0, ih, kh) * soc.fcoef(it, 1, is2, lh, jh) - - soc.fcoef(it, is1, 1, ih, kh) * soc.fcoef(it, 0, is2, lh, jh)) - + deeq(3, iat, kh, lh) - * (soc.fcoef(it, is1, 0, ih, kh) * soc.fcoef(it, 0, is2, lh, jh) - - soc.fcoef(it, is1, 1, ih, kh) * soc.fcoef(it, 1, is2, lh, jh)); - } - else - { - deeq_nc(ijs, iat, ih, jh) - += deeq(0, iat, kh, lh) - * (soc.fcoef(it, is1, 0, ih, kh) * soc.fcoef(it, 0, is2, lh, jh) - + soc.fcoef(it, is1, 1, ih, kh) * soc.fcoef(it, 1, is2, lh, jh)); - } - } - } - } - } - ijs++; - } - } -} - -void pseudopot_cell_vnl::newd_nc(const int& iat, UnitCell& cell) -{ - ModuleBase::TITLE("pseudopot_cell_vnl", "newd_nc"); - - const int it = cell.iat2it[iat]; - Atom_pseudo* upf = &cell.atoms[it].ncpp; - - for (int ih = 0; ih < upf->nh; ih++) - { - for (int jh = 0; jh < upf->nh; jh++) - { - if (PARAM.inp.lspinorb) - { - deeq_nc(0, iat, ih, jh) = dvan_so(0, it, ih, jh) + deeq(0, iat, ih, jh) + deeq(3, iat, ih, jh); - deeq_nc(3, iat, ih, jh) = dvan_so(3, it, ih, jh) + deeq(0, iat, ih, jh) - deeq(3, iat, ih, jh); - } - else - { - deeq_nc(0, iat, ih, jh) = dvan(it, ih, jh) + deeq(0, iat, ih, jh) + deeq(3, iat, ih, jh); - deeq_nc(3, iat, ih, jh) = dvan(it, ih, jh) + deeq(0, iat, ih, jh) - deeq(3, iat, ih, jh); - } - deeq_nc(1, iat, ih, jh) = deeq(1, iat, ih, jh) + ModuleBase::NEG_IMAG_UNIT * deeq(2, iat, ih, jh); - deeq_nc(2, iat, ih, jh) = deeq(1, iat, ih, jh) + ModuleBase::IMAG_UNIT * deeq(2, iat, ih, jh); - } - } -} - -// scale the non-local pseudopotential tables -void pseudopot_cell_vnl::rescale_vnl(const double& omega_in) -{ - const double ratio = this->omega_old / omega_in; - const double sqrt_ratio = std::sqrt(ratio); - this->omega_old = omega_in; - - for (int i = 0; i < this->tab.getSize(); i++) - { - this->tab.ptr[i] *= sqrt_ratio; - } - for (int i = 0; i < this->tab_at.getSize(); i++) - { - this->tab_at.ptr[i] *= sqrt_ratio; - } - for (int i = 0; i < this->qrad.getSize(); i++) - { - this->qrad.ptr[i] *= ratio; - } -} - -template <> -float* pseudopot_cell_vnl::get_nhtol_data() const -{ - return this->s_nhtol; -} -template <> -double* pseudopot_cell_vnl::get_nhtol_data() const -{ - return this->d_nhtol; -} - -template <> -float* pseudopot_cell_vnl::get_nhtolm_data() const -{ - return this->s_nhtolm; -} -template <> -double* pseudopot_cell_vnl::get_nhtolm_data() const -{ - return this->d_nhtolm; -} - -template <> -float* pseudopot_cell_vnl::get_indv_data() const -{ - return this->s_indv; -} -template <> -double* pseudopot_cell_vnl::get_indv_data() const -{ - return this->d_indv; -} - -template <> -float* pseudopot_cell_vnl::get_tab_data() const -{ - return this->s_tab; -} -template <> -double* pseudopot_cell_vnl::get_tab_data() const -{ - return this->d_tab; -} - -template <> -float* pseudopot_cell_vnl::get_deeq_data() const -{ - return this->s_deeq; -} -template <> -double* pseudopot_cell_vnl::get_deeq_data() const -{ - return this->d_deeq; -} - -template <> -float* pseudopot_cell_vnl::get_qq_nt_data() const -{ - return this->s_qq_nt; -} -template <> -double* pseudopot_cell_vnl::get_qq_nt_data() const -{ - return this->d_qq_nt; -} - -template <> -std::complex* pseudopot_cell_vnl::get_vkb_data() const -{ - return this->c_vkb; -} -template <> -std::complex* pseudopot_cell_vnl::get_vkb_data() const -{ - return this->z_vkb; -} - -template <> -std::complex* pseudopot_cell_vnl::get_deeq_nc_data() const -{ - return this->c_deeq_nc; -} -template <> -std::complex* pseudopot_cell_vnl::get_deeq_nc_data() const -{ - return this->z_deeq_nc; -} - -template <> -std::complex* pseudopot_cell_vnl::get_qq_so_data() const -{ - return this->c_qq_so; -} -template <> -std::complex* pseudopot_cell_vnl::get_qq_so_data() const -{ - return this->z_qq_so; -} - -template void pseudopot_cell_vnl::getvnl(base_device::DEVICE_CPU*, - const UnitCell&, - int const&, - std::complex*) const; -template void pseudopot_cell_vnl::getvnl(base_device::DEVICE_CPU*, - const UnitCell&, - int const&, - std::complex*) const; -#if defined(__CUDA) || defined(__ROCM) -template void pseudopot_cell_vnl::getvnl(base_device::DEVICE_GPU*, - const UnitCell&, - int const&, - std::complex*) const; -template void pseudopot_cell_vnl::getvnl(base_device::DEVICE_GPU*, - const UnitCell&, - int const&, - std::complex*) const; -#endif - -template void pseudopot_cell_vnl::radial_fft_q(base_device::DEVICE_CPU*, - const int, - const int, - const int, - const int, - const float*, - const float*, - std::complex*) const; -template void pseudopot_cell_vnl::radial_fft_q(base_device::DEVICE_CPU*, - const int, - const int, - const int, - const int, - const double*, - const double*, - std::complex*) const; -#if defined(__CUDA) || defined(__ROCM) -template void pseudopot_cell_vnl::radial_fft_q(base_device::DEVICE_GPU*, - const int, - const int, - const int, - const int, - const float*, - const float*, - std::complex*) const; -template void pseudopot_cell_vnl::radial_fft_q(base_device::DEVICE_GPU*, - const int, - const int, - const int, - const int, - const double*, - const double*, - std::complex*) const; -#endif diff --git a/source/source_pw/module_pwdft/deltaspin_pw.cpp b/source/source_pw/module_pwdft/deltaspin_pw.cpp new file mode 100644 index 0000000000..caf8ea7852 --- /dev/null +++ b/source/source_pw/module_pwdft/deltaspin_pw.cpp @@ -0,0 +1,72 @@ +#include "source_pw/module_pwdft/deltaspin_pw.h" +#include "source_lcao/module_deltaspin/spin_constrain.h" +#include "source_estate/module_charge/charge_mixing.h" + +namespace pw +{ + +bool run_deltaspin_lambda_loop(const int iter, + const double drho, + const Input_para& inp) +{ + /// Return false if DeltaSpin is not enabled + if (!inp.sc_mag_switch) + { + return false; + } + + /// Get the singleton instance of SpinConstrain + spinconstrain::SpinConstrain>& sc + = spinconstrain::SpinConstrain>::getScInstance(); + + /// Case 1: Magnetic moments not yet converged and SCF is close to convergence. + /// This is the first time we enter the lambda loop after SCF is nearly converged. + if (!sc.mag_converged() && drho > 0 && drho < inp.sc_scf_thr) + { + /// Optimize lambda to get target magnetic moments + sc.run_lambda_loop(iter); + sc.set_mag_converged(true); + return true; + } + /// Case 2: Magnetic moments already converged in previous iteration. + /// Continue to refine lambda in subsequent SCF iterations. + else if (sc.mag_converged()) + { + sc.run_lambda_loop(iter); + return true; + } + + /// Default: run the normal solver + return false; +} + +void check_deltaspin_oscillation(const int iter, + const double drho, + Charge_Mixing* p_chgmix, + const Input_para& inp) +{ + /// Return if DeltaSpin is not enabled + if (!inp.sc_mag_switch) + { + return; + } + + /// Get the singleton instance of SpinConstrain + spinconstrain::SpinConstrain>& sc + = spinconstrain::SpinConstrain>::getScInstance(); + + /// Check if higher magnetization precision is needed + if (!sc.higher_mag_prec) + { + /// Detect SCF oscillation + sc.higher_mag_prec = p_chgmix->if_scf_oscillate(iter, drho, inp.sc_os_ndim, inp.scf_os_thr); + + /// If oscillation detected, set mixing restart step for next iteration + if (sc.higher_mag_prec) + { + p_chgmix->mixing_restart_step = iter + 1; + } + } +} + +} diff --git a/source/source_pw/module_pwdft/deltaspin_pw.h b/source/source_pw/module_pwdft/deltaspin_pw.h new file mode 100644 index 0000000000..0509b61bb8 --- /dev/null +++ b/source/source_pw/module_pwdft/deltaspin_pw.h @@ -0,0 +1,46 @@ +#ifndef DELTASPIN_PW_H +#define DELTASPIN_PW_H + +#include "source_io/module_parameter/parameter.h" + +class Charge_Mixing; + +namespace pw +{ + +/** + * @brief Run the inner lambda loop for DeltaSpin method to constrain atomic magnetic moments. + * + * This function is used in the PW basis SCF iteration to optimize lambda parameters + * for constraining atomic magnetic moments to target values using the DeltaSpin method. + * + * @param iter The current iteration number (0-indexed). + * @param drho The current charge density difference. + * @param inp The input parameters. + * @return true if the solver should be skipped (lambda loop was executed), + * false otherwise. + */ +bool run_deltaspin_lambda_loop(const int iter, + const double drho, + const Input_para& inp); + +/** + * @brief Check if SCF oscillation occurs for DeltaSpin method. + * + * This function checks if the SCF iteration is oscillating and sets the + * mixing restart step if oscillation is detected. This is used to increase + * the precision of magnetization calculation. + * + * @param iter The current iteration number (1-indexed). + * @param drho The current charge density difference. + * @param p_chgmix Pointer to the Charge_Mixing object. + * @param inp The input parameters. + */ +void check_deltaspin_oscillation(const int iter, + const double drho, + Charge_Mixing* p_chgmix, + const Input_para& inp); + +} + +#endif diff --git a/source/source_pw/module_pwdft/dftu_pw.cpp b/source/source_pw/module_pwdft/dftu_pw.cpp new file mode 100644 index 0000000000..475a34620a --- /dev/null +++ b/source/source_pw/module_pwdft/dftu_pw.cpp @@ -0,0 +1,32 @@ +#include "source_pw/module_pwdft/dftu_pw.h" +#include "source_lcao/module_dftu/dftu.h" + +namespace pw +{ + +void iter_init_dftu_pw(const int iter, + const int istep, + Plus_U& dftu, + const void* psi, + const ModuleBase::matrix& wg, + const UnitCell& ucell, + const Input_para& inp) +{ + if (!inp.dft_plus_u) + { + return; + } + + if (iter == 1 && istep == 0) + { + return; + } + + if (dftu.omc != 2) + { + dftu.cal_occ_pw(iter, psi, wg, ucell, inp.mixing_beta); + } + dftu.output(ucell); +} + +} diff --git a/source/source_pw/module_pwdft/dftu_pw.h b/source/source_pw/module_pwdft/dftu_pw.h new file mode 100644 index 0000000000..8a30b04e76 --- /dev/null +++ b/source/source_pw/module_pwdft/dftu_pw.h @@ -0,0 +1,23 @@ +#ifndef DFTU_PW_H +#define DFTU_PW_H + +#include "source_io/module_parameter/parameter.h" +#include "source_cell/unitcell.h" +#include "source_base/matrix.h" + +class Plus_U; + +namespace pw +{ + +void iter_init_dftu_pw(const int iter, + const int istep, + Plus_U& dftu, + const void* psi, + const ModuleBase::matrix& wg, + const UnitCell& ucell, + const Input_para& inp); + +} + +#endif diff --git a/source/source_pw/module_pwdft/elecond.cpp b/source/source_pw/module_pwdft/elecond.cpp index 068ca01067..e7862538ab 100644 --- a/source/source_pw/module_pwdft/elecond.cpp +++ b/source/source_pw/module_pwdft/elecond.cpp @@ -5,7 +5,7 @@ #include "source_base/kernels/math_kernel_op.h" #include "source_base/parallel_device.h" #include "source_estate/occupy.h" -#include "source_io/binstream.h" +#include "source_io/module_output/binstream.h" #include "source_io/module_parameter/parameter.h" #include @@ -61,7 +61,7 @@ void EleCond::KG(const int& smear_type, const double gamma = fwhmin / 2.0 / ModuleBase::Ry_to_eV; double dt = dt_in; // unit in a.u., 1 a.u. = 4.837771834548454e-17 s const double expfactor = 23; // exp(-23) = 1e-10 - int nt; // set nt empirically + int nt = 0; // set nt empirically if (smear_type == 1) { nt = ceil(sqrt(2 * expfactor) / sigma / dt); @@ -93,9 +93,9 @@ void EleCond::KG(const int& smear_type, jjresponse_ks(ik, nt, dt, decut, wg, velop, ct11.data(), ct12.data(), ct22.data()); } #ifdef __MPI - MPI_Allreduce(MPI_IN_PLACE, ct11.data(), nt, MPI_DOUBLE, MPI_SUM, MPI_COMM_WORLD); - MPI_Allreduce(MPI_IN_PLACE, ct12.data(), nt, MPI_DOUBLE, MPI_SUM, MPI_COMM_WORLD); - MPI_Allreduce(MPI_IN_PLACE, ct22.data(), nt, MPI_DOUBLE, MPI_SUM, MPI_COMM_WORLD); + Parallel_Reduce::reduce_all(ct11.data(), nt); + Parallel_Reduce::reduce_all(ct12.data(), nt); + Parallel_Reduce::reduce_all(ct22.data(), nt); #endif //------------------------------------------------------------------ // Output diff --git a/source/source_pw/module_pwdft/elecond.h b/source/source_pw/module_pwdft/elecond.h index 13bc48bea3..83a4a85d25 100644 --- a/source/source_pw/module_pwdft/elecond.h +++ b/source/source_pw/module_pwdft/elecond.h @@ -6,8 +6,8 @@ #include "source_cell/klist.h" #include "source_cell/unitcell.h" #include "source_estate/elecstate.h" -#include "source_pw/module_pwdft/VNL_in_pw.h" -#include "source_pw/module_pwdft/operator_pw/velocity_pw.h" +#include "source_pw/module_pwdft/vnl_pw.h" +#include "source_pw/module_pwdft/op_pw_vel.h" template class EleCond diff --git a/source/source_pw/module_pwdft/exx_helper.cpp b/source/source_pw/module_pwdft/exx_helper.cpp new file mode 100644 index 0000000000..fa80a7ff10 --- /dev/null +++ b/source/source_pw/module_pwdft/exx_helper.cpp @@ -0,0 +1,178 @@ +#include "exx_helper.h" +#include "source_io/module_parameter/parameter.h" // use PARAM +#include "source_hamilt/module_xc/exx_info.h" // use GlobalC::exx_info +#include "source_hamilt/module_xc/xc_functional.h" // use XC_Functional +#include "source_pw/module_pwdft/hamilt_pw.h" // use HamiltPW +#include "source_estate/update_pot.h" // use elecstate::update_pot +#include "source_estate/elecstate_pw.h" // use ElecStatePW +#include "source_estate/module_charge/charge.h" // use Charge +#include // for timing + +template +void Exx_Helper::init(const UnitCell& ucell, const Input_para& inp, const ModuleBase::matrix& wg) +{ + if (inp.calculation != "scf" && inp.calculation != "relax" + && inp.calculation != "cell-relax" && inp.calculation != "md") + { + return; + } + + if (!GlobalC::exx_info.info_global.cal_exx) + { + return; + } + + if (GlobalC::exx_info.info_global.separate_loop) + { + XC_Functional::set_xc_first_loop(ucell); + this->set_firstiter(); + } + + this->set_wg(&wg); +} + +template +void Exx_Helper::before_scf(void* p_hamilt, void* psi, const Input_para& inp) +{ + /// Return if not a valid calculation type + if (inp.calculation != "scf" && inp.calculation != "relax" + && inp.calculation != "cell-relax" && inp.calculation != "md") + { + return; + } + + /// Return if EXX is not enabled or not PW basis + if (!GlobalC::exx_info.info_global.cal_exx || inp.basis_type != "pw") + { + return; + } + + /// Set EXX helper to Hamiltonian + auto hamilt_pw = reinterpret_cast*>(p_hamilt); + hamilt_pw->set_exx_helper(*this); + + /// Set psi for EXX calculation + this->set_psi(psi); +} + +template +bool Exx_Helper::iter_finish(void* p_elec, Charge* p_charge, void* psi, + UnitCell& ucell, const Input_para& inp, + bool& conv_esolver, int& iter) +{ + /// Return if EXX is not enabled + if (!GlobalC::exx_info.info_global.cal_exx) + { + return false; + } + + /// Handle separate_loop mode + if (GlobalC::exx_info.info_global.separate_loop) + { + if (conv_esolver) + { + auto start = std::chrono::high_resolution_clock::now(); + + this->set_firstiter(false); + this->op_exx->first_iter = false; + + double dexx = 0.0; + if (inp.exx_thr_type == "energy") + { + dexx = this->cal_exx_energy(psi); + this->set_psi(psi); + dexx -= this->cal_exx_energy(psi); + } + bool conv_ene = std::abs(dexx) < inp.exx_ene_thr; + + conv_esolver = this->exx_after_converge(iter, conv_ene); + + if (!conv_esolver) + { + if (inp.exx_thr_type != "energy") + { + this->set_psi(psi); + } + + auto duration = std::chrono::high_resolution_clock::now() - start; + std::cout << " Setting Psi for EXX PW Inner Loop took " + << std::chrono::duration_cast(duration).count() / 1000.0 << "s" + << std::endl; + + this->op_exx->first_iter = false; + XC_Functional::set_xc_type(ucell.atoms[0].ncpp.xc_func); + + elecstate::ElecState* pelec = reinterpret_cast*>(p_elec); + elecstate::update_pot(ucell, pelec, *p_charge, conv_esolver); + + this->iter_inc(); + } + } + } + else + { + this->set_psi(psi); + } + + return true; +} + +template +double Exx_Helper::cal_exx_energy(void* psi_) +{ + return op_exx->cal_exx_energy(static_cast*>(psi_)); + +} + +template +bool Exx_Helper::exx_after_converge(int &iter, bool ene_conv) +{ + if (op_exx->first_iter) + { + op_exx->first_iter = false; + } + else if (!GlobalC::exx_info.info_global.separate_loop) + { + return true; + } + else if (PARAM.inp.exx_thr_type == "energy" && ene_conv) + { + return true; + } + else if (PARAM.inp.exx_thr_type == "density" && iter == 1) + { + return true; + } + else if (exx_iter >= PARAM.inp.exx_hybrid_step) + { + GlobalV::ofs_running << " !!EXX IS NOT CONVERGED!!" << std::endl; + std::cout << " !!EXX IS NOT CONVERGED!!" << std::endl; + return true; + } + GlobalV::ofs_running << "Updating EXX and rerun SCF" << std::endl; + iter = 0; + return false; + +} + +template +void Exx_Helper::set_psi(void* psi_) +{ + auto* psi = static_cast*>(psi_); + if (psi == nullptr) + return; + this->psi = psi; + op_exx->set_psi(*psi); + if (PARAM.inp.exxace && GlobalC::exx_info.info_global.separate_loop) + { + op_exx->construct_ace(); + } +} + +template class Exx_Helper, base_device::DEVICE_CPU>; +template class Exx_Helper, base_device::DEVICE_CPU>; +#if ((defined __CUDA) || (defined __ROCM)) +template class Exx_Helper, base_device::DEVICE_GPU>; +template class Exx_Helper, base_device::DEVICE_GPU>; +#endif + diff --git a/source/source_pw/module_pwdft/exx_helper.h b/source/source_pw/module_pwdft/exx_helper.h new file mode 100644 index 0000000000..96f0a37a7f --- /dev/null +++ b/source/source_pw/module_pwdft/exx_helper.h @@ -0,0 +1,58 @@ +#include "source_psi/psi.h" +#include "source_base/matrix.h" +#include "source_pw/module_pwdft/op_pw_exx.h" +#include "source_io/module_parameter/input_parameter.h" +#include "source_pw/module_pwdft/exx_helper_base.h" + +#ifndef EXX_HELPER_H +#define EXX_HELPER_H + +class Charge; + +template +struct Exx_Helper : public Exx_HelperBase +{ + using Real = typename GetTypeReal::type; + using OperatorEXX = hamilt::OperatorEXXPW; + + public: + Exx_Helper() = default; + virtual ~Exx_Helper() = default; + OperatorEXX *op_exx = nullptr; + + void init(const UnitCell& ucell, const Input_para& inp, const ModuleBase::matrix& wg) override; + + void before_scf(void* p_hamilt, void* psi, const Input_para& inp) override; + + bool iter_finish(void* p_elec, Charge* p_charge, void* psi, + UnitCell& ucell, const Input_para& inp, + bool& conv_esolver, int& iter) override; + + void set_firstiter(bool flag = true) override { first_iter = flag; } + void set_wg(const ModuleBase::matrix *wg_) override { wg = wg_; } + void set_psi(void* psi_) override; + void iter_inc() override { exx_iter++; } + + void set_op() override + { + op_exx->first_iter = first_iter; + set_psi(psi); + op_exx->set_wg(wg); + } + + bool exx_after_converge(int &iter, bool ene_conv) override; + + double cal_exx_energy(void* psi_) override; + + bool get_op_first_iter() const override { return op_exx ? op_exx->first_iter : false; } + void set_op_first_iter(bool flag) override { if (op_exx) op_exx->first_iter = flag; } + void set_op_exx(void* op) override { op_exx = reinterpret_cast(op); } + + private: + bool first_iter = false; + psi::Psi *psi = nullptr; + const ModuleBase::matrix *wg = nullptr; + int exx_iter = 0; + +}; +#endif // EXX_HELPER_H diff --git a/source/source_pw/module_pwdft/exx_helper_base.h b/source/source_pw/module_pwdft/exx_helper_base.h new file mode 100644 index 0000000000..60eda82b35 --- /dev/null +++ b/source/source_pw/module_pwdft/exx_helper_base.h @@ -0,0 +1,41 @@ +#ifndef EXX_HELPER_BASE_H +#define EXX_HELPER_BASE_H + +#include "source_base/matrix.h" + +class Charge; +class UnitCell; +struct Input_para; + +class Exx_HelperBase +{ + public: + Exx_HelperBase() = default; + virtual ~Exx_HelperBase() = default; + + virtual void init(const UnitCell& ucell, const Input_para& inp, const ModuleBase::matrix& wg) = 0; + + virtual void before_scf(void* p_hamilt, void* psi, const Input_para& inp) = 0; + + virtual bool iter_finish(void* p_elec, Charge* p_charge, void* psi, + UnitCell& ucell, const Input_para& inp, + bool& conv_esolver, int& iter) = 0; + + virtual void set_firstiter(bool flag = true) = 0; + virtual void set_wg(const ModuleBase::matrix* wg) = 0; + virtual void set_psi(void* psi) = 0; + virtual void iter_inc() = 0; + + virtual void set_op() = 0; + + virtual bool exx_after_converge(int& iter, bool ene_conv) = 0; + + virtual double cal_exx_energy(void* psi) = 0; + + virtual bool get_op_first_iter() const = 0; + virtual void set_op_first_iter(bool flag) = 0; + + virtual void set_op_exx(void* op) = 0; +}; + +#endif // EXX_HELPER_BASE_H diff --git a/source/source_pw/module_pwdft/forces.cpp b/source/source_pw/module_pwdft/forces.cpp index c621bf72f4..3e58b737ba 100644 --- a/source/source_pw/module_pwdft/forces.cpp +++ b/source/source_pw/module_pwdft/forces.cpp @@ -1,11 +1,11 @@ #include "forces.h" #include "source_io/module_parameter/parameter.h" -#include "source_pw/module_pwdft/global.h" -#include "source_io/output_log.h" +#include "source_io/module_output/output_log.h" // new #include "source_base/complexmatrix.h" #include "source_base/libm/libm.h" +#include "source_base/truncated_func.h" #include "source_base/math_integral.h" #include "source_base/mathzone.h" #include "source_base/timer.h" @@ -29,6 +29,7 @@ void Forces::cal_force(UnitCell& ucell, ModuleSymmetry::Symmetry* p_symm, Structure_Factor* p_sf, surchem& solvent, + const Plus_U *p_dftu, //mohan add 2025-11-06 const pseudopot_cell_vl* locpp, const pseudopot_cell_vnl* p_nlpp, K_Vectors* pkv, @@ -37,7 +38,7 @@ void Forces::cal_force(UnitCell& ucell, { ModuleBase::timer::tick("Forces", "cal_force"); ModuleBase::TITLE("Forces", "init"); - this->device = base_device::get_device_type(this->ctx); + this->device = base_device::get_device_type(this->ctx); const ModuleBase::matrix& wg = elec.wg; const ModuleBase::matrix& ekb = elec.ekb; const Charge* const chr = elec.charge; @@ -70,9 +71,10 @@ void Forces::cal_force(UnitCell& ucell, } // DFT+U and DeltaSpin + // here maybe a bug when OFDFT calls +U, mohan add 20251107 if(PARAM.inp.dft_plus_u || PARAM.inp.sc_mag_switch) { - this->cal_force_onsite(forceonsite, wg, wfc_basis, ucell, psi_in); + this->cal_force_onsite(forceonsite, wg, wfc_basis, ucell, *p_dftu, psi_in); } } @@ -196,7 +198,7 @@ void Forces::cal_force(UnitCell& ucell, if (ModuleSymmetry::Symmetry::symm_flag == 1) { - double d1, d2, d3; + double d1 = 0.0, d2 = 0.0, d3 = 0.0; for (int iat = 0; iat < this->nat; iat++) { ModuleBase::Mathzone::Cartesian_to_Direct(force(iat, 0), @@ -329,7 +331,7 @@ void Forces::cal_force_loc(const UnitCell& ucell, { ModuleBase::TITLE("Forces", "cal_force_loc"); ModuleBase::timer::tick("Forces", "cal_force_loc"); - this->device = base_device::get_device_type(this->ctx); + this->device = base_device::get_device_type(this->ctx); std::complex* aux = new std::complex[rho_basis->nmaxgr]; // now, in all pools , the charge are the same, // so, the force calculated by each pool is equal. @@ -368,10 +370,10 @@ void Forces::cal_force_loc(const UnitCell& ucell, // to G space. maybe need fftw with OpenMP rho_basis->real2recip(aux, aux); - std::vector tau_h; - std::vector gcar_h; if(this->device == base_device::GpuDevice) { + std::vector tau_h; + std::vector gcar_h; tau_h.resize(this->nat * 3); for(int iat = 0; iat < this->nat; ++iat) { @@ -389,16 +391,15 @@ void Forces::cal_force_loc(const UnitCell& ucell, gcar_h[ig * 3 + 1] = rho_basis->gcar[ig].y; gcar_h[ig * 3 + 2] = rho_basis->gcar[ig].z; } - } - int* iat2it_d = nullptr; - int* ig2gg_d = nullptr; - double* gcar_d = nullptr; - double* tau_d = nullptr; - std::complex* aux_d = nullptr; - double* forcelc_d = nullptr; - double* vloc_d = nullptr; - if(this->device == base_device::GpuDevice) - { + + int* iat2it_d = nullptr; + int* ig2gg_d = nullptr; + double* gcar_d = nullptr; + double* tau_d = nullptr; + std::complex* aux_d = nullptr; + double* forcelc_d = nullptr; + double* vloc_d = nullptr; + resmem_int_op()(iat2it_d, this->nat); resmem_int_op()(ig2gg_d, rho_basis->npw); resmem_var_op()(gcar_d, rho_basis->npw * 3); @@ -414,10 +415,7 @@ void Forces::cal_force_loc(const UnitCell& ucell, syncmem_complex_h2d_op()(aux_d, aux, rho_basis->npw); syncmem_var_h2d_op()(forcelc_d, forcelc.c, this->nat * 3); syncmem_var_h2d_op()(vloc_d, vloc.c, vloc.nr * vloc.nc); - } - if(this->device == base_device::GpuDevice) - { hamilt::cal_force_loc_op()( this->nat, rho_basis->npw, @@ -431,8 +429,16 @@ void Forces::cal_force_loc(const UnitCell& ucell, vloc.nc, forcelc_d); syncmem_var_d2h_op()(forcelc.c, forcelc_d, this->nat * 3); + + delmem_int_op()(iat2it_d); + delmem_int_op()(ig2gg_d); + delmem_var_op()(gcar_d); + delmem_var_op()(tau_d); + delmem_complex_op()(aux_d); + delmem_var_op()(forcelc_d); + delmem_var_op()(vloc_d); } - else{ + else{ // calculate forces on CPU #ifdef _OPENMP #pragma omp parallel for #endif @@ -444,7 +450,7 @@ void Forces::cal_force_loc(const UnitCell& ucell, for (int ig = 0; ig < rho_basis->npw; ig++) { const double phase = ModuleBase::TWO_PI * (rho_basis->gcar[ig] * ucell.atoms[it].tau[ia]); - double sinp, cosp; + double sinp = 0.0, cosp = 0.0; ModuleBase::libm::sincos(phase, &sinp, &cosp); const double factor = vloc(it, rho_basis->ig2igg[ig]) * (cosp * aux[ig].imag() + sinp * aux[ig].real()); @@ -457,16 +463,6 @@ void Forces::cal_force_loc(const UnitCell& ucell, forcelc(iat, 2) *= (ucell.tpiba * ucell.omega); } } - if(this->device == base_device::GpuDevice) - { - delmem_int_op()(iat2it_d); - delmem_int_op()(ig2gg_d); - delmem_var_op()(gcar_d); - delmem_var_op()(tau_d); - delmem_complex_op()(aux_d); - delmem_var_op()(forcelc_d); - delmem_var_op()(vloc_d); - } // this->print(GlobalV::ofs_running, "local forces", forcelc); Parallel_Reduce::reduce_pool(forcelc.c, forcelc.nr * forcelc.nc); delete[] aux; @@ -482,9 +478,9 @@ void Forces::cal_force_ew(const UnitCell& ucell, { ModuleBase::TITLE("Forces", "cal_force_ew"); ModuleBase::timer::tick("Forces", "cal_force_ew"); - + this->device = base_device::get_device_type(this->ctx); double fact = 2.0; - std::complex* aux = new std::complex[rho_basis->npw]; + std::vector> aux(rho_basis->npw); /* blocking rho_basis->nrxnpwx for data locality. @@ -494,9 +490,7 @@ void Forces::cal_force_ew(const UnitCell& ucell, performance will be better when number of atom is quite huge */ const int block_ig = 1024; -#ifdef _OPENMP #pragma omp parallel for -#endif for (int igb = 0; igb < rho_basis->npw; igb += block_ig) { // calculate the actual task length of this block @@ -510,7 +504,7 @@ void Forces::cal_force_ew(const UnitCell& ucell, { if (ucell.atoms[it].na != 0) { - double dzv; + double dzv = 0.0; { dzv = ucell.atoms[it].ncpp.zv; } @@ -533,7 +527,7 @@ void Forces::cal_force_ew(const UnitCell& ucell, } double alpha = 1.1; - double upperbound; + double upperbound = 0.0; do { alpha -= 0.10; @@ -544,20 +538,18 @@ void Forces::cal_force_ew(const UnitCell& ucell, { ModuleBase::WARNING_QUIT("ewald", "Can't find optimal alpha."); } - upperbound = 2.0 * charge * charge * sqrt(2.0 * alpha / ModuleBase::TWO_PI) - * erfc(sqrt(ucell.tpiba2 * rho_basis->ggecut / 4.0 / alpha)); + upperbound = 2.0 * charge * charge * sqrt(2.0 * alpha / ModuleBase::TWO_PI)* ModuleBase::truncated_erfc(sqrt( ucell.tpiba2 * rho_basis->ggecut / 4.0 / alpha)); } while (upperbound > 1.0e-6); const int ig0 = rho_basis->ig_gge0; -#ifdef _OPENMP #pragma omp parallel for -#endif for (int ig = 0; ig < rho_basis->npw; ig++) { if (ig== ig0) { continue; // skip G=0 } - aux[ig] *= ModuleBase::libm::exp(-1.0 * rho_basis->gg[ig] * ucell.tpiba2 / alpha / 4.0) + aux[ig] *= ModuleBase::truncated_exp + (-1.0 * rho_basis->gg[ig] * ucell.tpiba2 / alpha / 4.0) / (rho_basis->gg[ig] * ucell.tpiba2); } @@ -566,83 +558,99 @@ void Forces::cal_force_ew(const UnitCell& ucell, { aux[rho_basis->ig_gge0] = std::complex(0.0, 0.0); } - -#ifdef _OPENMP -#pragma omp parallel + if(this->device == base_device::GpuDevice) { - int num_threads = omp_get_num_threads(); - int thread_id = omp_get_thread_num(); -#else - int num_threads = 1; - int thread_id = 0; -#endif - - /* Here is task distribution for multi-thread, - 0. atom will be iterated both in main nat loop and the loop in `if (rho_basis->ig_gge0 >= 0)`. - To avoid syncing, we must calculate work range of each thread by our self - 1. Calculate the iat range [iat_beg, iat_end) by each thread - a. when it is single thread stage, [iat_beg, iat_end) will be [0, nat) - 2. each thread iterate atoms form `iat_beg` to `iat_end-1` - */ - int iat_beg, iat_end; - int it_beg, ia_beg; - ModuleBase::TASK_DIST_1D(num_threads, thread_id, this->nat, iat_beg, iat_end); - iat_end = iat_beg + iat_end; - ucell.iat2iait(iat_beg, &ia_beg, &it_beg); - - int iat = iat_beg; - int it = it_beg; - int ia = ia_beg; - - // preprocess ig_gap for skipping the ig point - int ig_gap = (rho_basis->ig_gge0 >= 0 && rho_basis->ig_gge0 < rho_basis->npw) ? rho_basis->ig_gge0 : -1; - - double it_fact = 0.; - int last_it = -1; - - // iterating atoms - while (iat < iat_end) + std::vector tau_h(this->nat * 3); + std::vector gcar_h(rho_basis->npw * 3); + for(int iat = 0; iat < this->nat; ++iat) { - if (it != last_it) - { // calculate it_tact when it is changed - double zv; - { - zv = ucell.atoms[it].ncpp.zv; - } - it_fact = zv * ModuleBase::e2 * ucell.tpiba * ModuleBase::TWO_PI / ucell.omega * fact; - last_it = it; - } + int it = ucell.iat2it[iat]; + int ia = ucell.iat2ia[iat]; + tau_h[iat * 3] = ucell.atoms[it].tau[ia].x; + tau_h[iat * 3 + 1] = ucell.atoms[it].tau[ia].y; + tau_h[iat * 3 + 2] = ucell.atoms[it].tau[ia].z; + } + for(int ig = 0; ig < rho_basis->npw; ++ig) + { + gcar_h[ig * 3] = rho_basis->gcar[ig].x; + gcar_h[ig * 3 + 1] = rho_basis->gcar[ig].y; + gcar_h[ig * 3 + 2] = rho_basis->gcar[ig].z; + } + std::vector it_fact_h(ucell.ntype); + for(int it = 0; it < ucell.ntype; ++it) + { + it_fact_h[it] = ucell.atoms[it].ncpp.zv * ModuleBase::e2 * ucell.tpiba * ModuleBase::TWO_PI / ucell.omega * fact; + } - if (ucell.atoms[it].na != 0) - { - const auto ig_loop = [&](int ig_beg, int ig_end) { - for (int ig = ig_beg; ig < ig_end; ig++) - { - const ModuleBase::Vector3 gcar = rho_basis->gcar[ig]; - const double arg = ModuleBase::TWO_PI * (gcar * ucell.atoms[it].tau[ia]); - double sinp, cosp; - ModuleBase::libm::sincos(arg, &sinp, &cosp); - double sumnb = -cosp * aux[ig].imag() + sinp * aux[ig].real(); - forceion(iat, 0) += gcar[0] * sumnb; - forceion(iat, 1) += gcar[1] * sumnb; - forceion(iat, 2) += gcar[2] * sumnb; - } - }; + int* iat2it_d = nullptr; + double* gcar_d = nullptr; + double* tau_d = nullptr; + double* it_fact_d = nullptr; + std::complex* aux_d = nullptr; + double* forceion_d = nullptr; + resmem_int_op()(iat2it_d, this->nat); + resmem_var_op()(gcar_d, rho_basis->npw * 3); + resmem_var_op()(tau_d, this->nat * 3); + resmem_var_op()(it_fact_d, ucell.ntype); + resmem_complex_op()(aux_d, rho_basis->npw); + resmem_var_op()(forceion_d, this->nat * 3); - // skip ig_gge0 point by separating ig loop into two part - ig_loop(0, ig_gap); - ig_loop(ig_gap + 1, rho_basis->npw); + syncmem_int_h2d_op()(iat2it_d, ucell.iat2it, this->nat); + syncmem_var_h2d_op()(gcar_d, gcar_h.data(), rho_basis->npw * 3); + syncmem_var_h2d_op()(tau_d, tau_h.data(), this->nat * 3); + syncmem_var_h2d_op()(it_fact_d, it_fact_h.data(), ucell.ntype); + syncmem_complex_h2d_op()(aux_d, aux.data(), rho_basis->npw); + syncmem_var_h2d_op()(forceion_d, forceion.c, this->nat * 3); - forceion(iat, 0) *= it_fact; - forceion(iat, 1) *= it_fact; - forceion(iat, 2) *= it_fact; + hamilt::cal_force_ew_op()( + this->nat, + rho_basis->npw, + rho_basis->ig_gge0, + iat2it_d, + gcar_d, + tau_d, + it_fact_d, + aux_d, + forceion_d); + + syncmem_var_d2h_op()(forceion.c, forceion_d, this->nat * 3); + delmem_int_op()(iat2it_d); + delmem_var_op()(gcar_d); + delmem_var_op()(tau_d); + delmem_var_op()(it_fact_d); + delmem_complex_op()(aux_d); + delmem_var_op()(forceion_d); + } else // calculate forces on CPU + { + #pragma omp parallel for + for(int iat = 0; iat < this->nat; ++iat) + { + const int it = ucell.iat2it[iat]; + const int ia = ucell.iat2ia[iat]; + double it_fact = ucell.atoms[it].ncpp.zv * ModuleBase::e2 * ucell.tpiba * ModuleBase::TWO_PI / ucell.omega * fact; - ++iat; - ucell.step_iait(&ia, &it); + for(int ig = 0; ig < rho_basis->npw; ++ig) + { + if(ig != rho_basis->ig_gge0) // skip G=0 + { + const ModuleBase::Vector3 gcar = rho_basis->gcar[ig]; + const double arg = ModuleBase::TWO_PI * (gcar * ucell.atoms[it].tau[ia]); + double sinp = 0.0, cosp = 0.0; + ModuleBase::libm::sincos(arg, &sinp, &cosp); + double sumnb = -cosp * aux[ig].imag() + sinp * aux[ig].real(); + forceion(iat, 0) += gcar[0] * sumnb; + forceion(iat, 1) += gcar[1] * sumnb; + forceion(iat, 2) += gcar[2] * sumnb; + } } + forceion(iat, 0) *= it_fact; + forceion(iat, 1) *= it_fact; + forceion(iat, 2) *= it_fact; } - - // means that the processor contains G=0 term. + } + // means that the processor contains G=0 term. + #pragma omp parallel + { if (rho_basis->ig_gge0 >= 0) { double rmax = 5.0 / (sqrt(alpha) * ucell.lat0); @@ -651,74 +659,55 @@ void Forces::cal_force_ew(const UnitCell& ucell, // output of rgen: the number of vectors in the sphere const int mxr = 200; // the maximum number of R vectors included in r - ModuleBase::Vector3* r = new ModuleBase::Vector3[mxr]; - double* r2 = new double[mxr]; - ModuleBase::GlobalFunc::ZEROS(r2, mxr); - int* irr = new int[mxr]; - ModuleBase::GlobalFunc::ZEROS(irr, mxr); + std::vector> r(mxr); + std::vector r2(mxr); + std::vector irr(mxr); // the square modulus of R_j-tau_s-tau_s' - int iat1 = iat_beg; - int T1 = it_beg; - int I1 = ia_beg; const double sqa = sqrt(alpha); const double sq8a_2pi = sqrt(8.0 * alpha / ModuleBase::TWO_PI); // iterating atoms. - // do not need to sync threads because task range of each thread is isolated - while (iat1 < iat_end) + #pragma omp for + for(int iat1 = 0; iat1 < this->nat; iat1++) { - int iat2 = 0; // mohan fix bug 2011-06-07 - int I2 = 0; - int T2 = 0; - while (iat2 < this->nat) + int T1 = ucell.iat2it[iat1]; + int I1 = ucell.iat2ia[iat1]; + for(int iat2 = 0; iat2 < this->nat; iat2++) { - if (iat1 != iat2 && ucell.atoms[T2].na != 0 && ucell.atoms[T1].na != 0) + int T2 = ucell.iat2it[iat2]; + int I2 = ucell.iat2ia[iat2]; + if (iat1 != iat2) { ModuleBase::Vector3 d_tau = ucell.atoms[T1].tau[I1] - ucell.atoms[T2].tau[I2]; - H_Ewald_pw::rgen(d_tau, rmax, irr, ucell.latvec, ucell.G, r, r2, nrm); + H_Ewald_pw::rgen(d_tau, rmax, irr.data(), ucell.latvec, ucell.G, r.data(), r2.data(), nrm); for (int n = 0; n < nrm; n++) { const double rr = sqrt(r2[n]) * ucell.lat0; - double factor; + double factor = 0.0; { factor = ucell.atoms[T1].ncpp.zv * ucell.atoms[T2].ncpp.zv - * ModuleBase::e2 / (rr * rr) - * (erfc(sqa * rr) / rr + sq8a_2pi * ModuleBase::libm::exp(-alpha * rr * rr)) - * ucell.lat0; + * ModuleBase::e2 / (rr * rr) + * (erfc(sqa * rr) / rr + sq8a_2pi * ModuleBase::libm::exp(-alpha * rr * rr)) + * ucell.lat0; } - forceion(iat1, 0) -= factor * r[n].x; forceion(iat1, 1) -= factor * r[n].y; forceion(iat1, 2) -= factor * r[n].z; } } - ++iat2; - ucell.step_iait(&I2, &T2); } // atom b - ++iat1; - ucell.step_iait(&I1, &T1); } // atom a - - delete[] r; - delete[] r2; - delete[] irr; } -#ifdef _OPENMP } -#endif - Parallel_Reduce::reduce_pool(forceion.c, forceion.nr * forceion.nc); - // this->print(GlobalV::ofs_running, "ewald forces", forceion); ModuleBase::timer::tick("Forces", "cal_force_ew"); - delete[] aux; - return; } diff --git a/source/source_pw/module_pwdft/forces.h b/source/source_pw/module_pwdft/forces.h index e67cac0f24..9730109071 100644 --- a/source/source_pw/module_pwdft/forces.h +++ b/source/source_pw/module_pwdft/forces.h @@ -9,11 +9,12 @@ #include "source_cell/klist.h" #include "source_cell/module_symmetry/symmetry.h" #include "source_estate/elecstate.h" -#include "source_pw/module_pwdft/VL_in_pw.h" +#include "source_pw/module_pwdft/vl_pw.h" #include "source_pw/module_pwdft/kernels/force_op.h" #include "source_base/kernels/math_kernel_op.h" #include "source_psi/psi.h" #include "structure_factor.h" +#include "source_lcao/module_dftu/dftu.h" // mohan add 2025-11-06 template class Forces @@ -40,8 +41,9 @@ class Forces const ModulePW::PW_Basis* const rho_basis, ModuleSymmetry::Symmetry* p_symm, Structure_Factor* p_sf, - surchem& solvent, - const pseudopot_cell_vl* locpp, + surchem& solvent, + const Plus_U *p_dftu, //mohan add 2025-11-06 + const pseudopot_cell_vl* locpp, const pseudopot_cell_vnl* nlpp = nullptr, K_Vectors* pkv = nullptr, ModulePW::PW_Basis_K* psi_basis = nullptr, @@ -94,7 +96,9 @@ class Forces const ModuleBase::matrix& wg, const ModulePW::PW_Basis_K* wfc_basis, const UnitCell& ucell_in, - const psi::Psi , Device>* psi_in = nullptr); + const Plus_U &dftu, // mohan add 2025-11-06 + const psi::Psi , Device>* psi_in = nullptr); + void cal_force_scc(ModuleBase::matrix& forcescc, const ModulePW::PW_Basis* const rho_basis, const ModuleBase::matrix& v_current, diff --git a/source/source_pw/module_pwdft/forces_cc.cpp b/source/source_pw/module_pwdft/forces_cc.cpp index 65156e8501..917e00b83c 100644 --- a/source/source_pw/module_pwdft/forces_cc.cpp +++ b/source/source_pw/module_pwdft/forces_cc.cpp @@ -1,7 +1,7 @@ #include "forces.h" #include "stress_func.h" #include "source_io/module_parameter/parameter.h" -#include "source_io/output_log.h" +#include "source_io/module_output/output_log.h" // new #include "source_base/complexmatrix.h" #include "source_base/libm/libm.h" @@ -108,44 +108,48 @@ void Forces::cal_force_cc(ModuleBase::matrix& forcecc, double* rhocg = new double[rho_basis->ngg]; ModuleBase::GlobalFunc::ZEROS(rhocg, rho_basis->ngg); - std::vector gv_x(rho_basis->npw); - std::vector gv_y(rho_basis->npw); - std::vector gv_z(rho_basis->npw); + std::vector gv_h(3 * rho_basis->npw); + std::vector tau_h(3 * this->nat); std::vector rhocgigg_vec(rho_basis->npw); - double *gv_x_d = nullptr; - double *gv_y_d = nullptr; - double *gv_z_d = nullptr; + double *gv_d = nullptr; + double *tau_d = nullptr; double *force_d = nullptr; double *rhocgigg_vec_d = nullptr; std::complex* psiv_d = nullptr; - this->device = base_device::get_device_type(this->ctx); + this->device = base_device::get_device_type(this->ctx); -#ifdef _OPENMP -#pragma omp parallel for -#endif for (int ig = 0; ig < rho_basis->npw; ig++) { - gv_x[ig] = rho_basis->gcar[ig].x; - gv_y[ig] = rho_basis->gcar[ig].y; - gv_z[ig] = rho_basis->gcar[ig].z; + gv_h[3 * ig] = rho_basis->gcar[ig].x; + gv_h[3 * ig + 1] = rho_basis->gcar[ig].y; + gv_h[3 * ig + 2] = rho_basis->gcar[ig].z; + } + + for (int iat = 0; iat < this->nat; iat++) + { + int it = ucell_in.iat2it[iat]; + int ia = ucell_in.iat2ia[iat]; + tau_h[iat * 3] = ucell_in.atoms[it].tau[ia].x; + tau_h[iat * 3 + 1] = ucell_in.atoms[it].tau[ia].y; + tau_h[iat * 3 + 2] = ucell_in.atoms[it].tau[ia].z; } if(this->device == base_device::GpuDevice ) { - resmem_var_op()(gv_x_d, rho_basis->npw); - resmem_var_op()(gv_y_d, rho_basis->npw); - resmem_var_op()(gv_z_d, rho_basis->npw); + resmem_var_op()(gv_d, rho_basis->npw * 3); + resmem_var_op()(tau_d, this->nat * 3); resmem_var_op()(rhocgigg_vec_d, rho_basis->npw); resmem_complex_op()(psiv_d, rho_basis->nmaxgr); - resmem_var_op()(force_d, 3); + resmem_var_op()(force_d, 3 * this->nat); - syncmem_var_h2d_op()(gv_x_d, gv_x.data(), rho_basis->npw); - syncmem_var_h2d_op()(gv_y_d, gv_y.data(), rho_basis->npw); - syncmem_var_h2d_op()(gv_z_d, gv_z.data(), rho_basis->npw); + syncmem_var_h2d_op()(gv_d, gv_h.data(), rho_basis->npw * 3); + syncmem_var_h2d_op()(tau_d, tau_h.data(), this->nat * 3); syncmem_complex_h2d_op()(psiv_d, psiv, rho_basis->nmaxgr); + syncmem_var_h2d_op()(force_d, forcecc.c, 3 * this->nat); } - + double* tau_it_d = tau_d; // the start address of each atom type's tau + double* force_it_d = force_d; for (int it = 0; it < ucell_in.ntype; ++it) { if (ucell_in.atoms[it].ncpp.nlcc) @@ -166,10 +170,7 @@ void Forces::cal_force_cc(ModuleBase::matrix& forcecc, rho_basis, 1, ucell_in); - -#ifdef _OPENMP -#pragma omp parallel for -#endif + for (int ig = 0; ig < rho_basis->npw; ig++) { rhocgigg_vec[ig] = rhocg[rho_basis->ig2igg[ig]]; @@ -178,42 +179,53 @@ void Forces::cal_force_cc(ModuleBase::matrix& forcecc, if(this->device == base_device::GpuDevice ) { syncmem_var_h2d_op()(rhocgigg_vec_d, rhocgigg_vec.data(), rho_basis->npw); } - for (int ia = 0; ia < ucell_in.atoms[it].na; ++ia) - { - const ModuleBase::Vector3 pos = ucell_in.atoms[it].tau[ia]; - // get iat form table - int iat = ucell_in.itia2iat(it, ia); - double force[3] = {0, 0, 0}; - - if(this->device == base_device::GpuDevice ) { - syncmem_var_h2d_op()(force_d, force, 3); - hamilt::cal_force_npw_op()( - psiv_d, gv_x_d, gv_y_d, gv_z_d, rhocgigg_vec_d, force_d, pos.x, pos.y, pos.z, - rho_basis->npw, ucell_in.omega, ucell_in.tpiba - ); - syncmem_var_d2h_op()(force, force_d, 3); - - } else { - hamilt::cal_force_npw_op()( - psiv, gv_x.data(), gv_y.data(), gv_z.data(), rhocgigg_vec.data(), force, pos.x, pos.y, pos.z, - rho_basis->npw, ucell_in.omega, ucell_in.tpiba - ); - } + if(this->device == base_device::GpuDevice ) { + hamilt::cal_force_npw_op()( + psiv_d, gv_d, rhocgigg_vec_d, force_it_d, tau_it_d, + rho_basis->npw, ucell_in.omega, ucell_in.tpiba, ucell_in.atoms[it].na + ); + } else { + #pragma omp for + for(int ia = 0; ia < ucell_in.atoms[it].na; ia++) { - forcecc(iat, 0) += force[0]; - forcecc(iat, 1) += force[1]; - forcecc(iat, 2) += force[2]; + double fx = 0.0, fy = 0.0, fz = 0.0; + int iat = ucell_in.itia2iat(it, ia); + for (int ig = 0; ig < rho_basis->npw; ig++) + { + const std::complex psiv_conj = conj(psiv[ig]); + + const double arg = ModuleBase::TWO_PI * (gv_h[ig * 3] * tau_h[iat * 3] + + gv_h[ig * 3 + 1] * tau_h[iat * 3 + 1] + gv_h[ig * 3 + 2] * tau_h[iat * 3 + 2]); + double sinp, cosp; + ModuleBase::libm::sincos(arg, &sinp, &cosp); + const std::complex expiarg = std::complex(sinp, cosp); + + const std::complex tmp_var = psiv_conj * expiarg * ucell_in.tpiba * ucell_in.omega * rhocgigg_vec[ig]; + + const std::complex ipol0 = tmp_var * gv_h[ig * 3]; + fx += ipol0.real(); + + const std::complex ipol1 = tmp_var * gv_h[ig * 3 + 1]; + fy += ipol1.real(); + + const std::complex ipol2 = tmp_var * gv_h[ig * 3 + 2]; + fz += ipol2.real(); + } + forcecc(iat, 0) += fx; + forcecc(iat, 1) += fy; + forcecc(iat, 2) += fz; } } - } + tau_it_d += 3 * ucell_in.atoms[it].na; // update the start address of each atom type's tau + force_it_d += 3 * ucell_in.atoms[it].na; } - if (this->device == base_device::GpuDevice) + if(this->device == base_device::GpuDevice) { - delmem_var_op()(gv_x_d); - delmem_var_op()(gv_y_d); - delmem_var_op()(gv_z_d); + syncmem_var_d2h_op()(forcecc.c, force_d, 3 * nat); + delmem_var_op()(gv_d); + delmem_var_op()(tau_d); delmem_var_op()(force_d); delmem_var_op()(rhocgigg_vec_d); delmem_complex_op()(psiv_d); @@ -242,11 +254,11 @@ void Forces::deriv_drhoc const UnitCell& ucell_in ) { - int igl0; + int igl0 = 0; double gx = 0, rhocg1 = 0; //double *aux = new double[mesh]; std::vector aux(mesh); - this->device = base_device::get_device_type(this->ctx); + this->device = base_device::get_device_type(this->ctx); // the modulus of g for a given shell // the fourier transform // auxiliary memory for integration diff --git a/source/source_pw/module_pwdft/forces_onsite.cpp b/source/source_pw/module_pwdft/forces_onsite.cpp index e0650ccc36..9d93e9ef54 100644 --- a/source/source_pw/module_pwdft/forces_onsite.cpp +++ b/source/source_pw/module_pwdft/forces_onsite.cpp @@ -11,8 +11,9 @@ template void Forces::cal_force_onsite(ModuleBase::matrix& force_onsite, const ModuleBase::matrix& wg, const ModulePW::PW_Basis_K* wfc_basis, - const UnitCell& ucell_in, - const psi::Psi , Device>* psi_in) + const UnitCell& ucell_in, + const Plus_U &dftu, // mohan add 2025-11-06 + const psi::Psi , Device>* psi_in) { ModuleBase::TITLE("Forces", "cal_force_onsite"); if(psi_in == nullptr || wfc_basis == nullptr) @@ -53,12 +54,13 @@ void Forces::cal_force_onsite(ModuleBase::matrix& force_onsite, // force for DFT+U if(PARAM.inp.dft_plus_u) { - auto* dftu = ModuleDFTU::DFTU::get_instance(); - onsite_p->get_fs_tools()->cal_force_dftu(ik, npm, force, dftu->orbital_corr.data(), dftu->get_eff_pot_pw(0), dftu->get_size_eff_pot_pw(), wg.c); + onsite_p->get_fs_tools()->cal_force_dftu(ik, npm, force, + dftu.orbital_corr.data(), dftu.get_eff_pot_pw(0), dftu.get_size_eff_pot_pw(), wg.c); } if(PARAM.inp.sc_mag_switch) { - spinconstrain::SpinConstrain>& sc = spinconstrain::SpinConstrain>::getScInstance(); + spinconstrain::SpinConstrain>& sc = + spinconstrain::SpinConstrain>::getScInstance(); const std::vector>& lambda = sc.get_sc_lambda(); onsite_p->get_fs_tools()->cal_force_dspin(ik, npm, force, lambda.data(), wg.c); } @@ -76,4 +78,4 @@ void Forces::cal_force_onsite(ModuleBase::matrix& force_onsite, template class Forces; #if ((defined __CUDA) || (defined __ROCM)) template class Forces; -#endif \ No newline at end of file +#endif diff --git a/source/source_pw/module_pwdft/forces_scc.cpp b/source/source_pw/module_pwdft/forces_scc.cpp index 9279a0bbea..5e00b87dca 100644 --- a/source/source_pw/module_pwdft/forces_scc.cpp +++ b/source/source_pw/module_pwdft/forces_scc.cpp @@ -1,5 +1,5 @@ #include "forces.h" -#include "source_io/output_log.h" +#include "source_io/module_output/output_log.h" #include "stress_func.h" // new #include "source_base/complexmatrix.h" @@ -75,63 +75,65 @@ void Forces::cal_force_scc(ModuleBase::matrix& forcescc, int igg0 = 0; const int ig0 = rho_basis->ig_gge0; - if (rho_basis->gg_uniq[0] < 1.0e-8) { - igg0 = 1; -} + if (rho_basis->gg_uniq[0] < 1.0e-8) + { + igg0 = 1; + } double fact = 2.0; - for (int nt = 0; nt < ucell_in.ntype; nt++) { - // Here we compute the G.ne.0 term - const int mesh = ucell_in.atoms[nt].ncpp.msh; - this->deriv_drhoc_scc(numeric, - mesh, - ucell_in.atoms[nt].ncpp.r.data(), - ucell_in.atoms[nt].ncpp.rab.data(), - ucell_in.atoms[nt].ncpp.rho_at.data(), - rhocgnt.data(), - rho_basis, - ucell_in); - int iat = 0; - for (int it = 0; it < ucell_in.ntype; it++) { - for (int ia = 0; ia < ucell_in.atoms[it].na; ia++) { - if (nt == it) { - const ModuleBase::Vector3 pos - = ucell_in.atoms[it].tau[ia]; - double &force0 = forcescc(iat, 0), - &force1 = forcescc(iat, 1), - &force2 = forcescc(iat, 2); + for (int nt = 0; nt < ucell_in.ntype; nt++) + { + // Here we compute the G.ne.0 term + const int mesh = ucell_in.atoms[nt].ncpp.msh; + this->deriv_drhoc_scc(numeric, + mesh, + ucell_in.atoms[nt].ncpp.r.data(), + ucell_in.atoms[nt].ncpp.rab.data(), + ucell_in.atoms[nt].ncpp.rho_at.data(), + rhocgnt.data(), + rho_basis, + ucell_in); + int iat = 0; + for (int it = 0; it < ucell_in.ntype; it++) { + for (int ia = 0; ia < ucell_in.atoms[it].na; ia++) { + if (nt == it) { + const ModuleBase::Vector3 pos + = ucell_in.atoms[it].tau[ia]; + double &force0 = forcescc(iat, 0), + &force1 = forcescc(iat, 1), + &force2 = forcescc(iat, 2); #ifdef _OPENMP #pragma omp parallel for reduction(+ : force0) reduction(+ : force1) reduction(+ : force2) #endif - for (int ig = 0; ig < rho_basis->npw; ++ig) { - if (ig == ig0) { - continue; -} - const ModuleBase::Vector3 gv - = rho_basis->gcar[ig]; - const double rhocgntigg - = rhocgnt[rho_basis->ig2igg[ig]]; - const double arg = ModuleBase::TWO_PI * (gv * pos); - double sinp, cosp; - ModuleBase::libm::sincos(arg, &sinp, &cosp); - const std::complex cpm - = std::complex(sinp, cosp) * conj(psic[ig]); - - force0 += fact * rhocgntigg * ucell_in.tpiba - * gv.x * cpm.real(); - force1 += fact * rhocgntigg * ucell_in.tpiba - * gv.y * cpm.real(); - force2 += fact * rhocgntigg * ucell_in.tpiba - * gv.z * cpm.real(); - } - } - iat++; - } - } - } + for (int ig = 0; ig < rho_basis->npw; ++ig) { + if (ig == ig0) { + continue; + } + const ModuleBase::Vector3 gv + = rho_basis->gcar[ig]; + const double rhocgntigg + = rhocgnt[rho_basis->ig2igg[ig]]; + const double arg = ModuleBase::TWO_PI * (gv * pos); + double sinp = 0.0, cosp = 0.0; + ModuleBase::libm::sincos(arg, &sinp, &cosp); + const std::complex cpm + = std::complex(sinp, cosp) * conj(psic[ig]); + + force0 += fact * rhocgntigg * ucell_in.tpiba + * gv.x * cpm.real(); + force1 += fact * rhocgntigg * ucell_in.tpiba + * gv.y * cpm.real(); + force2 += fact * rhocgntigg * ucell_in.tpiba + * gv.z * cpm.real(); + } + } + iat++; + } + } + } - Parallel_Reduce::reduce_pool(forcescc.c, forcescc.nr * forcescc.nc); + Parallel_Reduce::reduce_pool(forcescc.c, forcescc.nr * forcescc.nc); ModuleBase::timer::tick("Forces", "cal_force_scc"); return; @@ -150,7 +152,7 @@ void Forces::deriv_drhoc_scc(const bool& numeric, int igl0 = 0; double gx = 0; double rhocg1 = 0; - this->device = base_device::get_device_type(this->ctx); + this->device = base_device::get_device_type(this->ctx); /// the modulus of g for a given shell /// the fourier transform /// auxiliary memory for integration @@ -163,10 +165,12 @@ void Forces::deriv_drhoc_scc(const bool& numeric, /// /// G=0 term /// - if (rho_basis->gg_uniq[0] < 1.0e-8) { - drhocg[0] = 0.0; + if (rho_basis->gg_uniq[0] < 1.0e-8) + { + drhocg[0] = 0.0; igl0 = 1; - } else { + } else + { igl0 = 0; } @@ -178,17 +182,19 @@ void Forces::deriv_drhoc_scc(const bool& numeric, #ifdef _OPENMP #pragma omp parallel for #endif - for (int igl = igl0; igl < rho_basis->ngg; igl++) { - gx_arr[igl] = sqrt(rho_basis->gg_uniq[igl]) * ucell_in.tpiba; - } + for (int igl = igl0; igl < rho_basis->ngg; igl++) + { + gx_arr[igl] = sqrt(rho_basis->gg_uniq[igl]) * ucell_in.tpiba; + } double *r_d = nullptr; double *rhoc_d = nullptr; double *rab_d = nullptr; double *aux_d = nullptr; double *drhocg_d = nullptr; - if (this->device == base_device::GpuDevice) { - resmem_var_op()(r_d, mesh); + if (this->device == base_device::GpuDevice) + { + resmem_var_op()(r_d, mesh); resmem_var_op()(rhoc_d, mesh); resmem_var_op()(rab_d, mesh); @@ -204,20 +210,43 @@ void Forces::deriv_drhoc_scc(const bool& numeric, syncmem_var_h2d_op()(rhoc_d, rhoc, mesh); } - if(this->device == base_device::GpuDevice) { + if(this->device == base_device::GpuDevice) + { hamilt::cal_stress_drhoc_aux_op()( - r_d,rhoc_d,gx_arr_d+igl0,rab_d,drhocg_d+igl0,mesh,igl0,rho_basis->ngg-igl0,ucell_in.omega,2); + r_d, + rhoc_d, + gx_arr_d+igl0, + rab_d, + drhocg_d+igl0, + mesh, + igl0, + rho_basis->ngg-igl0, + ucell_in.omega, + 2); + syncmem_var_d2h_op()(drhocg+igl0, drhocg_d+igl0, rho_basis->ngg-igl0); - } else { + } + else + { hamilt::cal_stress_drhoc_aux_op()( - r,rhoc,gx_arr.data()+igl0,rab,drhocg+igl0,mesh,igl0,rho_basis->ngg-igl0,ucell_in.omega,2); + r, + rhoc, + gx_arr.data()+igl0, + rab, + drhocg+igl0, + mesh, + igl0, + rho_basis->ngg-igl0, + ucell_in.omega, + 2); } delmem_var_op()(r_d); delmem_var_op()(rhoc_d); delmem_var_op()(rab_d); + delmem_var_op()(aux_d); delmem_var_op()(gx_arr_d); delmem_var_op()(drhocg_d); return; @@ -226,4 +255,4 @@ void Forces::deriv_drhoc_scc(const bool& numeric, template class Forces; #if ((defined __CUDA) || (defined __ROCM)) template class Forces; -#endif \ No newline at end of file +#endif diff --git a/source/source_pw/module_pwdft/forces_us.cpp b/source/source_pw/module_pwdft/forces_us.cpp index dd2fbc5f8d..908212ca02 100644 --- a/source/source_pw/module_pwdft/forces_us.cpp +++ b/source/source_pw/module_pwdft/forces_us.cpp @@ -31,7 +31,7 @@ void Forces::cal_force_us(ModuleBase::matrix& forcenl, ModuleBase::matrix forceq(ucell.nat, 3); - ModuleBase::matrix veff = elec.pot->get_effective_v(); + ModuleBase::matrix veff = elec.pot->get_eff_v(); ModuleBase::ComplexMatrix vg(PARAM.inp.nspin, npw); // fourier transform of the total effective potential for (int is = 0; is < PARAM.inp.nspin; is++) @@ -98,19 +98,19 @@ void Forces::cal_force_us(ModuleBase::matrix& forcenl, const double zero = 0; for (int ipol = 0; ipol < 3; ipol++) { - dgemm_(&transa, - &transb, - &nij, - &atom->na, - &dim, - &(ucell.omega), - qgm_data, - &dim, + BlasConnector::gemm(transb, + transa, + atom->na, + nij, + dim, + ucell.omega, &aux1_data[ipol * dim * atom->na], - &dim, - &zero, + dim, + qgm_data, + dim, + zero, &ddeeq(is, ipol, 0, 0), - &nij); + nij); } } @@ -143,4 +143,4 @@ void Forces::cal_force_us(ModuleBase::matrix& forcenl, template class Forces; #if ((defined __CUDA) || (defined __ROCM)) template class Forces; -#endif \ No newline at end of file +#endif diff --git a/source/source_pw/module_pwdft/fs_kin_tools.cpp b/source/source_pw/module_pwdft/fs_kin_tools.cpp index 853ae34abd..0c04b26f2a 100644 --- a/source/source_pw/module_pwdft/fs_kin_tools.cpp +++ b/source/source_pw/module_pwdft/fs_kin_tools.cpp @@ -10,7 +10,7 @@ FS_Kin_tools::FS_Kin_tools(const UnitCell& ucell_in, const ModuleBase::matrix& wg) : ucell_(ucell_in), nksbands_(wg.nc), wg(wg.c), wk(p_kv->wk.data()) { - this->device = base_device::get_device_type(this->ctx); + this->device = base_device::get_device_type(this->ctx); this->wfc_basis_ = wfc_basis_in; const int npwk_max = this->wfc_basis_->npwk_max; const int nks = this->wfc_basis_->nks; diff --git a/source/source_pw/module_pwdft/fs_nonlocal_tools.cpp b/source/source_pw/module_pwdft/fs_nonlocal_tools.cpp index 934d3c476d..64f4015daf 100644 --- a/source/source_pw/module_pwdft/fs_nonlocal_tools.cpp +++ b/source/source_pw/module_pwdft/fs_nonlocal_tools.cpp @@ -26,7 +26,7 @@ FS_Nonlocal_tools::FS_Nonlocal_tools(const pseudopot_cell_vnl* n : nlpp_(nlpp_in), ucell_(ucell_in), kv_(kv_in), wfc_basis_(wfc_basis_in), sf_(sf_in) { // get the device context - this->device = base_device::get_device_type(this->ctx); + this->device = base_device::get_device_type(this->ctx); this->nkb = nlpp_->nkb; this->max_npw = wfc_basis_->npwk_max; this->ntype = ucell_->ntype; diff --git a/source/source_pw/module_pwdft/fs_nonlocal_tools.h b/source/source_pw/module_pwdft/fs_nonlocal_tools.h index ffe745f07e..07b6e1f716 100644 --- a/source/source_pw/module_pwdft/fs_nonlocal_tools.h +++ b/source/source_pw/module_pwdft/fs_nonlocal_tools.h @@ -5,7 +5,7 @@ #include "source_basis/module_pw/pw_basis_k.h" #include "source_cell/klist.h" #include "source_cell/unitcell.h" -#include "source_pw/module_pwdft/VNL_in_pw.h" +#include "source_pw/module_pwdft/vnl_pw.h" #include "source_pw/module_pwdft/kernels/stress_op.h" #include "source_base/kernels/math_kernel_op.h" #include "source_psi/psi.h" @@ -144,23 +144,23 @@ class FS_Nonlocal_tools private: /// pointers to access the data without memory arrangement - const Structure_Factor* sf_; - const pseudopot_cell_vnl* nlpp_; - const UnitCell* ucell_; - const K_Vectors* kv_; - const ModulePW::PW_Basis_K* wfc_basis_; + const Structure_Factor* sf_ = nullptr; + const pseudopot_cell_vnl* nlpp_ = nullptr; + const UnitCell* ucell_ = nullptr; + const K_Vectors* kv_ = nullptr; + const ModulePW::PW_Basis_K* wfc_basis_ = nullptr; /// the following variables are used for the calculation Device* ctx = {}; base_device::DEVICE_CPU* cpu_ctx = {}; base_device::AbacusDevice_t device = {}; - int nkb; - int nbands; + int nkb = 0; + int nbands = 0; int max_nh = 0; int max_npw = 0; - int ntype; - bool nondiagonal; + int ntype = 0; + bool nondiagonal = false; int pre_ik_s = -1; int pre_ik_f = -1; diff --git a/source/source_pw/module_pwdft/global.cpp b/source/source_pw/module_pwdft/global.cpp deleted file mode 100644 index f483101fe2..0000000000 --- a/source/source_pw/module_pwdft/global.cpp +++ /dev/null @@ -1,13 +0,0 @@ -#include "global.h" -//---------------------------------------------------------- -// init "GLOBAL CLASS" object -//---------------------------------------------------------- -namespace GlobalC -{ -#ifdef __EXX - Exx_Info exx_info; -#endif -Restart restart; // Peize Lin add 2020.04.04 -} - -//Magnetism mag; diff --git a/source/source_pw/module_pwdft/global.h b/source/source_pw/module_pwdft/global.h deleted file mode 100644 index 5080ddc24d..0000000000 --- a/source/source_pw/module_pwdft/global.h +++ /dev/null @@ -1,272 +0,0 @@ -#ifndef GLOBAL_H -#define GLOBAL_H - -#include "source_base/global_function.h" -#include "source_base/global_variable.h" -#include "source_estate/module_charge/charge_mixing.h" -#include "source_pw/module_pwdft/VNL_in_pw.h" -#include "source_io/restart.h" -#include "source_relax/relax_driver.h" -#ifdef __EXX -#include "source_hamilt/module_xc/exx_info.h" -#include "source_lcao/module_ri/exx_lip.h" -#endif -#include "source_estate/magnetism.h" -#include "source_hamilt/module_xc/xc_functional.h" -#ifdef __CUDA -#include "cublas_v2.h" -#include "cufft.h" - -static const char* _cublasGetErrorString(cublasStatus_t error) -{ - switch (error) - { - case CUBLAS_STATUS_SUCCESS: - return "CUBLAS_STATUS_SUCCESS"; - case CUBLAS_STATUS_NOT_INITIALIZED: - return "CUBLAS_STATUS_NOT_INITIALIZED"; - case CUBLAS_STATUS_ALLOC_FAILED: - return "CUBLAS_STATUS_ALLOC_FAILED"; - case CUBLAS_STATUS_INVALID_VALUE: - return "CUBLAS_STATUS_INVALID_VALUE"; - case CUBLAS_STATUS_ARCH_MISMATCH: - return "CUBLAS_STATUS_ARCH_MISMATCH"; - case CUBLAS_STATUS_MAPPING_ERROR: - return "CUBLAS_STATUS_MAPPING_ERROR"; - case CUBLAS_STATUS_EXECUTION_FAILED: - return "CUBLAS_STATUS_EXECUTION_FAILED"; - case CUBLAS_STATUS_INTERNAL_ERROR: - return "CUBLAS_STATUS_INTERNAL_ERROR"; - } - return ""; -} - -static const char* _cufftGetErrorString(cufftResult_t error) -{ - switch (error) - { - case CUFFT_SUCCESS: - return "CUFFT_SUCCESS"; - case CUFFT_INVALID_PLAN: - return "CUFFT_INVALID_PLAN"; - case CUFFT_ALLOC_FAILED: - return "CUFFT_ALLOC_FAILED"; - case CUFFT_INVALID_TYPE: - return "CUFFT_INVALID_TYPE"; - case CUFFT_INVALID_VALUE: - return "CUFFT_INVALID_VALUE"; - case CUFFT_INTERNAL_ERROR: - return "CUFFT_INTERNAL_ERROR"; - case CUFFT_EXEC_FAILED: - return "CUFFT_EXEC_FAILED"; - case CUFFT_SETUP_FAILED: - return "CUFFT_SETUP_FAILED"; - case CUFFT_INVALID_SIZE: - return "CUFFT_INVALID_SIZE"; - case CUFFT_UNALIGNED_DATA: - return "CUFFT_UNALIGNED_DATA"; - case CUFFT_INCOMPLETE_PARAMETER_LIST: - return "CUFFT_INCOMPLETE_PARAMETER_LIST"; - case CUFFT_INVALID_DEVICE: - return "CUFFT_INVALID_DEVICE"; - case CUFFT_PARSE_ERROR: - return "CUFFT_PARSE_ERROR"; - case CUFFT_NO_WORKSPACE: - return "CUFFT_NO_WORKSPACE"; - case CUFFT_NOT_IMPLEMENTED: - return "CUFFT_NOT_IMPLEMENTED"; - case CUFFT_LICENSE_ERROR: - return "CUFFT_LICENSE_ERROR"; - case CUFFT_NOT_SUPPORTED: - return "CUFFT_NOT_SUPPORTED"; - } - return ""; -} - -#define CHECK_CUDA(func) \ - { \ - cudaError_t status = (func); \ - if (status != cudaSuccess) \ - { \ - printf("In File %s : CUDA API failed at line %d with error: %s (%d)\n", __FILE__, __LINE__, \ - cudaGetErrorString(status), status); \ - } \ - } - -#define CHECK_CUBLAS(func) \ - { \ - cublasStatus_t status = (func); \ - if (status != CUBLAS_STATUS_SUCCESS) \ - { \ - printf("In File %s : CUBLAS API failed at line %d with error: %s (%d)\n", __FILE__, __LINE__, \ - _cublasGetErrorString(status), status); \ - } \ - } - -#define CHECK_CUSOLVER(func) \ - { \ - cusolverStatus_t status = (func); \ - if (status != CUSOLVER_STATUS_SUCCESS) \ - { \ - printf("In File %s : CUSOLVER API failed at line %d with error: %s (%d)\n", __FILE__, __LINE__, \ - _cusolverGetErrorString(status), status); \ - } \ - } - -#define CHECK_CUFFT(func) \ - { \ - cufftResult_t status = (func); \ - if (status != CUFFT_SUCCESS) \ - { \ - printf("In File %s : CUFFT API failed at line %d with error: %s (%d)\n", __FILE__, __LINE__, \ - _cufftGetErrorString(status), status); \ - } \ - } -#endif // __CUDA - -#ifdef __ROCM -#include -#include -#include - -static const char* _hipblasGetErrorString(hipblasStatus_t error) -{ - switch (error) - { - case HIPBLAS_STATUS_SUCCESS: - return "HIPBLAS_STATUS_SUCCESS"; - case HIPBLAS_STATUS_NOT_INITIALIZED: - return "HIPBLAS_STATUS_NOT_INITIALIZED"; - case HIPBLAS_STATUS_ALLOC_FAILED: - return "HIPBLAS_STATUS_ALLOC_FAILED"; - case HIPBLAS_STATUS_INVALID_VALUE: - return "HIPBLAS_STATUS_INVALID_VALUE"; - case HIPBLAS_STATUS_ARCH_MISMATCH: - return "HIPBLAS_STATUS_ARCH_MISMATCH"; - case HIPBLAS_STATUS_MAPPING_ERROR: - return "HIPBLAS_STATUS_MAPPING_ERROR"; - case HIPBLAS_STATUS_EXECUTION_FAILED: - return "HIPBLAS_STATUS_EXECUTION_FAILED"; - case HIPBLAS_STATUS_INTERNAL_ERROR: - return "HIPBLAS_STATUS_INTERNAL_ERROR"; - case HIPBLAS_STATUS_NOT_SUPPORTED: - return "HIPBLAS_STATUS_NOT_SUPPORTED"; - case HIPBLAS_STATUS_HANDLE_IS_NULLPTR: - return "HIPBLAS_STATUS_HANDLE_IS_NULLPTR"; - default: - return ""; - } - return ""; -} - -// static const char *_rocsolverGetErrorString(rocsolver_status error) -// { -// switch (error) -// { -// // case ROCSOLVER_STATUS_SUCCESS: -// // return "CUSOLVER_STATUS_SUCCESS"; -// } -// return ""; -// } - -static const char* _hipfftGetErrorString(hipfftResult_t error) -{ - switch (error) - { - case HIPFFT_SUCCESS: - return "HIPFFT_SUCCESS"; - case HIPFFT_INVALID_PLAN: - return "HIPFFT_INVALID_PLAN"; - case HIPFFT_ALLOC_FAILED: - return "HIPFFT_ALLOC_FAILED"; - case HIPFFT_INVALID_TYPE: - return "HIPFFT_INVALID_TYPE"; - case HIPFFT_INVALID_VALUE: - return "HIPFFT_INVALID_VALUE"; - case HIPFFT_INTERNAL_ERROR: - return "HIPFFT_INTERNAL_ERROR"; - case HIPFFT_EXEC_FAILED: - return "HIPFFT_EXEC_FAILED"; - case HIPFFT_SETUP_FAILED: - return "HIPFFT_SETUP_FAILED"; - case HIPFFT_INVALID_SIZE: - return "HIPFFT_INVALID_SIZE"; - case HIPFFT_UNALIGNED_DATA: - return "HIPFFT_UNALIGNED_DATA"; - case HIPFFT_INCOMPLETE_PARAMETER_LIST: - return "HIPFFT_INCOMPLETE_PARAMETER_LIST"; - case HIPFFT_INVALID_DEVICE: - return "HIPFFT_INVALID_DEVICE"; - case HIPFFT_PARSE_ERROR: - return "HIPFFT_PARSE_ERROR"; - case HIPFFT_NO_WORKSPACE: - return "HIPFFT_NO_WORKSPACE"; - case HIPFFT_NOT_IMPLEMENTED: - return "HIPFFT_NOT_IMPLEMENTED"; - case HIPFFT_NOT_SUPPORTED: - return "HIPFFT_NOT_SUPPORTED"; - } - return ""; -} - -#define CHECK_CUDA(func) \ - { \ - hipError_t status = (func); \ - if (status != hipSuccess) \ - { \ - printf("In File %s : HIP API failed at line %d with error: %s (%d)\n", __FILE__, __LINE__, \ - hipGetErrorString(status), status); \ - } \ - } - -#define CHECK_CUBLAS(func) \ - { \ - hipblasStatus_t status = (func); \ - if (status != HIPBLAS_STATUS_SUCCESS) \ - { \ - printf("In File %s : HIPBLAS API failed at line %d with error: %s (%d)\n", __FILE__, __LINE__, \ - _hipblasGetErrorString(status), status); \ - } \ - } - -// #define CHECK_CUSOLVER(func)\ -// {\ -// rocsolver_status status = (func);\ -// if(status != CUSOLVER_STATUS_SUCCESS)\ -// {\ -// printf("In File %s : CUSOLVER API failed at line %d with error: %s (%d)\n",\ -// __FILE__, __LINE__, _rocsolverGetErrorString(status), status);\ -// }\ -// } - -#define CHECK_CUFFT(func) \ - { \ - hipfftResult_t status = (func); \ - if (status != HIPFFT_SUCCESS) \ - { \ - printf("In File %s : HIPFFT API failed at line %d with error: %s (%d)\n", __FILE__, __LINE__, \ - _hipfftGetErrorString(status), status); \ - } \ - } -#endif // __ROCM - -//========================================================== -// EXPLAIN : define "GLOBAL CLASS" -//========================================================== -namespace GlobalC -{ -//#ifdef __EXX - extern Exx_Info exx_info; -//#endif -} // namespace GlobalC - -#include "source_cell/parallel_kpoints.h" -#include "source_cell/unitcell.h" -namespace GlobalC -{ -extern Restart restart; // Peize Lin add 2020.04.04 -} // namespace GlobalC - -// extern Magnetism mag; - -#endif diff --git a/source/source_pw/module_pwdft/hamilt_lcaopw.h b/source/source_pw/module_pwdft/hamilt_lcaopw.h index 63d6c7c5f3..a5b2cedb6e 100644 --- a/source/source_pw/module_pwdft/hamilt_lcaopw.h +++ b/source/source_pw/module_pwdft/hamilt_lcaopw.h @@ -18,7 +18,7 @@ namespace hamilt K_Vectors* p_kv, pseudopot_cell_vnl* nlpp, const UnitCell* ucell) - : HamiltPW(pot_in, wfc_basis, p_kv, nlpp,ucell){}; + : HamiltPW(pot_in, wfc_basis, p_kv, nlpp, nullptr, ucell){}; #ifdef __EXX HamiltLIP(elecstate::Potential* pot_in, ModulePW::PW_Basis_K* wfc_basis, @@ -26,11 +26,12 @@ namespace hamilt pseudopot_cell_vnl* nlpp, const UnitCell* ucell, Exx_Lip& exx_lip_in) - : HamiltPW(pot_in, wfc_basis, p_kv, nlpp,ucell), exx_lip(exx_lip_in){}; + : HamiltPW(pot_in, wfc_basis, p_kv, nlpp, nullptr, ucell), + exx_lip(exx_lip_in){}; Exx_Lip& exx_lip; #endif }; } // namespace hamilt -#endif \ No newline at end of file +#endif diff --git a/source/source_pw/module_pwdft/hamilt_pw.cpp b/source/source_pw/module_pwdft/hamilt_pw.cpp index 86782ed665..27a56cbe11 100644 --- a/source/source_pw/module_pwdft/hamilt_pw.cpp +++ b/source/source_pw/module_pwdft/hamilt_pw.cpp @@ -3,16 +3,14 @@ #include "source_io/module_parameter/parameter.h" #include "source_base/global_function.h" #include "source_base/global_variable.h" -#include "source_pw/module_pwdft/global.h" - -#include "operator_pw/veff_pw.h" -#include "operator_pw/ekinetic_pw.h" -#include "operator_pw/meta_pw.h" -#include "operator_pw/nonlocal_pw.h" -#include "operator_pw/onsite_proj_pw.h" -#include "operator_pw/op_exx_pw.h" - +#include "op_pw_veff.h" +#include "op_pw_ekin.h" +#include "op_pw_meta.h" +#include "op_pw_nl.h" +#include "op_pw_proj.h" +#include "op_pw_exx.h" +#include "source_hamilt/module_xc/exx_info.h" // use GlobalC::exx_info namespace hamilt { @@ -22,6 +20,7 @@ HamiltPW::HamiltPW(elecstate::Potential* pot_in, ModulePW::PW_Basis_K* wfc_basis, K_Vectors* pkv, pseudopot_cell_vnl* nlpp, + Plus_U* p_dftu, // mohan add 2025-11-06 const UnitCell* ucell): ucell(ucell) { this->classname = "HamiltPW"; @@ -73,6 +72,14 @@ HamiltPW::HamiltPW(elecstate::Potential* pot_in, { pot_register_in.push_back("gatefield"); } + if (PARAM.inp.ml_exx) // sunliang + { + pot_register_in.push_back("ml_exx"); + } + // DFT-1/2 + if (PARAM.inp.dfthalf_type == 1) { + pot_register_in.push_back("dfthalf"); + } //only Potential is not empty, Veff and Meta are available if(pot_register_in.size()>0) { @@ -116,7 +123,8 @@ HamiltPW::HamiltPW(elecstate::Potential* pot_in, if(PARAM.inp.sc_mag_switch || PARAM.inp.dft_plus_u) { Operator* onsite_proj - = new OnsiteProj>(isk, ucell, PARAM.inp.sc_mag_switch, (PARAM.inp.dft_plus_u>0)); + = new OnsiteProj>(isk, ucell, p_dftu, + PARAM.inp.sc_mag_switch, (PARAM.inp.dft_plus_u>0)); this->ops->add(onsite_proj); } if (GlobalC::exx_info.info_global.cal_exx) diff --git a/source/source_pw/module_pwdft/hamilt_pw.h b/source/source_pw/module_pwdft/hamilt_pw.h index 34c51c78fd..d3411c54f4 100644 --- a/source/source_pw/module_pwdft/hamilt_pw.h +++ b/source/source_pw/module_pwdft/hamilt_pw.h @@ -6,9 +6,10 @@ #include "source_estate/module_pot/potential_new.h" #include "source_esolver/esolver_ks_pw.h" #include "source_hamilt/hamilt.h" -#include "source_pw/module_pwdft/VNL_in_pw.h" +#include "source_pw/module_pwdft/vnl_pw.h" #include "source_base/kernels/math_kernel_op.h" -#include "source_pw/module_pwdft/module_exx_helper/exx_helper.h" +#include "source_pw/module_pwdft/exx_helper.h" +#include "source_lcao/module_dftu/dftu.h" // mohan add 2025-11-06 namespace hamilt { @@ -21,10 +22,19 @@ class HamiltPW : public Hamilt // return T if T is real type(float, double), // otherwise return the real type of T(complex, std::complex) using Real = typename GetTypeReal::type; + public: - HamiltPW(elecstate::Potential* pot_in, ModulePW::PW_Basis_K* wfc_basis, K_Vectors* p_kv, pseudopot_cell_vnl* nlpp,const UnitCell* ucell); + + HamiltPW(elecstate::Potential* pot_in, + ModulePW::PW_Basis_K* wfc_basis, + K_Vectors* p_kv, + pseudopot_cell_vnl* nlpp, + Plus_U *p_dftu, // mohan add 2025-11-06 + const UnitCell* ucell); + template explicit HamiltPW(const HamiltPW* hamilt); + ~HamiltPW(); // for target K point, update consequence of hPsi() and matrix() @@ -58,4 +68,4 @@ class HamiltPW : public Hamilt } // namespace hamilt -#endif \ No newline at end of file +#endif diff --git a/source/source_pw/module_pwdft/kernels/cuda/ekinetic_op.cu b/source/source_pw/module_pwdft/kernels/cuda/ekinetic_op.cu index 8eca104dfe..ba3e29b80c 100644 --- a/source/source_pw/module_pwdft/kernels/cuda/ekinetic_op.cu +++ b/source/source_pw/module_pwdft/kernels/cuda/ekinetic_op.cu @@ -61,7 +61,7 @@ void hamilt::ekinetic_pw_op::operator()(const b reinterpret_cast*>(tmhpsi), // array of data reinterpret_cast*>(tmpsi_in)); // array of data - cudaCheckOnDebug(); + CHECK_CUDA_SYNC(); } template struct ekinetic_pw_op; diff --git a/source/source_pw/module_pwdft/kernels/cuda/exx_cal_energy_op.cu b/source/source_pw/module_pwdft/kernels/cuda/exx_cal_energy_op.cu index 6fe5517d78..5aff3f46e9 100644 --- a/source/source_pw/module_pwdft/kernels/cuda/exx_cal_energy_op.cu +++ b/source/source_pw/module_pwdft/kernels/cuda/exx_cal_energy_op.cu @@ -2,6 +2,8 @@ #include "source_psi/psi.h" #include +#include "source_base/module_device/device.h" +#include "source_base/module_device/kernel_compat.h" namespace hamilt { @@ -81,4 +83,4 @@ struct exx_cal_energy_op, base_device::DEVICE_GPU> template struct exx_cal_energy_op, base_device::DEVICE_GPU>; template struct exx_cal_energy_op, base_device::DEVICE_GPU>; -} // namespace hamilt \ No newline at end of file +} // namespace hamilt diff --git a/source/source_pw/module_pwdft/kernels/cuda/force_op.cu b/source/source_pw/module_pwdft/kernels/cuda/force_op.cu index 1c1113ca6b..1466ba47ac 100644 --- a/source/source_pw/module_pwdft/kernels/cuda/force_op.cu +++ b/source/source_pw/module_pwdft/kernels/cuda/force_op.cu @@ -2,6 +2,7 @@ // #include "source_psi/kernels/device.h" #include "source_base/module_device/types.h" #include "source_base/constants.h" +#include "source_base/module_device/kernel_compat.h" #include @@ -157,7 +158,7 @@ void cal_vkb1_nl_op::operator()(const base_devi gcar,// array of data reinterpret_cast*>(vkb1)); // array of data - cudaCheckOnDebug(); + CHECK_CUDA_SYNC(); } template @@ -196,7 +197,7 @@ void cal_force_nl_op::operator()(const base_dev reinterpret_cast*>(dbecp), force);// array of data - cudaCheckOnDebug(); + CHECK_CUDA_SYNC(); } template @@ -314,7 +315,7 @@ void cal_force_nl_op::operator()(const base_dev reinterpret_cast*>(dbecp), force);// array of data - cudaCheckOnDebug(); + CHECK_CUDA_SYNC(); } template @@ -480,7 +481,7 @@ void cal_force_nl_op::operator()(const base_dev reinterpret_cast*>(dbecp), force); // array of data - cudaCheckOnDebug(); + CHECK_CUDA_SYNC(); } // kernel for DeltaSpin force template @@ -517,7 +518,7 @@ void cal_force_nl_op::operator()(const base_dev reinterpret_cast*>(dbecp), force); // array of data - cudaCheckOnDebug(); + CHECK_CUDA_SYNC(); } template @@ -564,7 +565,7 @@ void saveVkbValues( npw, ipol, npwx); - cudaCheckOnDebug(); + CHECK_CUDA_SYNC(); } template @@ -614,7 +615,7 @@ void revertVkbValues( ipol, npwx, static_cast>(coeff)); - cudaCheckOnDebug(); + CHECK_CUDA_SYNC(); } template @@ -710,6 +711,95 @@ __global__ void force_loc_kernel( } } +template +__global__ void force_ew_kernel( + const int nat, + const int npw, + const int ig_gge0, + const int* iat2it, + const FPTYPE* gcar_d, + const FPTYPE* tau_d, + const FPTYPE* it_fact_d, + const thrust::complex* aux_d, + FPTYPE* forceion_d) +{ + const int iat = blockIdx.x; + const int tid = threadIdx.x; + const int warp_id = tid / WARP_SIZE; + const int lane_id = tid % WARP_SIZE; + + if( iat >= nat) return; + const int it = iat2it[iat]; // get the type of atom + const FPTYPE it_fact_val = it_fact_d[it]; // Get it_fact value + + // Initialize force components + FPTYPE force_x = 0.0; + FPTYPE force_y = 0.0; + FPTYPE force_z = 0.0; + + const auto tau_x = tau_d[iat * 3 + 0]; + const auto tau_y = tau_d[iat * 3 + 1]; + const auto tau_z = tau_d[iat * 3 + 2]; + + for (int ig = tid; ig < npw; ig += blockDim.x) { + if(ig == ig_gge0) + { continue; } + const auto gcar_x = gcar_d[ig * 3 + 0]; + const auto gcar_y = gcar_d[ig * 3 + 1]; + const auto gcar_z = gcar_d[ig * 3 + 2]; + + // Calculate phase factor + const FPTYPE phase = ModuleBase::TWO_PI * (gcar_x * tau_x + + gcar_y * tau_y + + gcar_z * tau_z); + FPTYPE sinp, cosp; + sincos(phase, &sinp, &cosp); + + // Calculate force contribution + const FPTYPE sumnb = -cosp * aux_d[ig].imag() + sinp * aux_d[ig].real(); + + // Multiply by gcar components + force_x += gcar_x * sumnb; + force_y += gcar_y * sumnb; + force_z += gcar_z * sumnb; + } + + // Warp-level reduction + warp_reduce(force_x); + warp_reduce(force_y); + warp_reduce(force_z); + + // First thread in each warp writes to shared memory + __shared__ FPTYPE warp_sums_x[THREADS_PER_BLOCK / WARP_SIZE]; // 256 threads / 32 = 8 warps + __shared__ FPTYPE warp_sums_y[THREADS_PER_BLOCK / WARP_SIZE]; + __shared__ FPTYPE warp_sums_z[THREADS_PER_BLOCK / WARP_SIZE]; + + if (lane_id == 0) { + warp_sums_x[warp_id] = force_x; + warp_sums_y[warp_id] = force_y; + warp_sums_z[warp_id] = force_z; + } + + __syncthreads(); + + // Final reduction by first warp + if (warp_id == 0) { + FPTYPE final_x = (lane_id < blockDim.x/WARP_SIZE) ? warp_sums_x[lane_id] : 0.0; + FPTYPE final_y = (lane_id < blockDim.x/WARP_SIZE) ? warp_sums_y[lane_id] : 0.0; + FPTYPE final_z = (lane_id < blockDim.x/WARP_SIZE) ? warp_sums_z[lane_id] : 0.0; + + warp_reduce(final_x); + warp_reduce(final_y); + warp_reduce(final_z); + + if (lane_id == 0) { + forceion_d[iat * 3 + 0] = final_x * it_fact_val; + forceion_d[iat * 3 + 1] = final_y * it_fact_val; + forceion_d[iat * 3 + 2] = final_z * it_fact_val; + } + } +} + template void cal_force_loc_op::operator()( const int nat, @@ -739,6 +829,30 @@ void cal_force_loc_op::operator()( } +template +void cal_force_ew_op::operator()( + const int nat, + const int npw, + const int ig_gge0, + const int* iat2it, + const FPTYPE* gcar, + const FPTYPE* tau, + const FPTYPE* it_fact, + const std::complex* aux, + FPTYPE* forceion) +{ + force_ew_kernel + <<>>(nat, + npw, + ig_gge0, + iat2it, + gcar, + tau, + it_fact, + reinterpret_cast*>(aux), + forceion); // array of data +} + // for revertVkbValues functions instantiation template void revertVkbValues(const int *gcar_zero_ptrs, std::complex *vkb_ptr, const std::complex *vkb_save_ptr, int nkb, int gcar_zero_count, int npw, int ipol, int npwx, const std::complex coeff); @@ -748,8 +862,10 @@ template void saveVkbValues(const int *gcar_zero_ptrs, const std::comple template struct cal_vkb1_nl_op; template struct cal_force_nl_op; template struct cal_force_loc_op; +template struct cal_force_ew_op; template struct cal_vkb1_nl_op; template struct cal_force_nl_op; template struct cal_force_loc_op; +template struct cal_force_ew_op; } // namespace hamilt diff --git a/source/source_pw/module_pwdft/kernels/cuda/meta_op.cu b/source/source_pw/module_pwdft/kernels/cuda/meta_op.cu index b0f164f55a..19b0f60b2d 100644 --- a/source/source_pw/module_pwdft/kernels/cuda/meta_op.cu +++ b/source/source_pw/module_pwdft/kernels/cuda/meta_op.cu @@ -59,7 +59,7 @@ void meta_pw_op::operator()(const base_device:: reinterpret_cast * >(out), add); - cudaCheckOnDebug(); + CHECK_CUDA_SYNC(); } template struct meta_pw_op; diff --git a/source/source_pw/module_pwdft/kernels/cuda/mul_potential_op.cu b/source/source_pw/module_pwdft/kernels/cuda/mul_potential_op.cu index ad148deb23..1724a5e2eb 100644 --- a/source/source_pw/module_pwdft/kernels/cuda/mul_potential_op.cu +++ b/source/source_pw/module_pwdft/kernels/cuda/mul_potential_op.cu @@ -37,7 +37,7 @@ struct mul_potential_op, base_device::DEVICE_GPU> int num_blocks = (npw + threads_per_block - 1) / threads_per_block; mul_potential_kernel<<>>( - pot + ik * nks * npw + iq * npw, + pot, reinterpret_cast*>(density_recip), npw); diff --git a/source/source_pw/module_pwdft/kernels/cuda/nonlocal_op.cu b/source/source_pw/module_pwdft/kernels/cuda/nonlocal_op.cu index 57da0d6a0a..c02fc785e2 100644 --- a/source/source_pw/module_pwdft/kernels/cuda/nonlocal_op.cu +++ b/source/source_pw/module_pwdft/kernels/cuda/nonlocal_op.cu @@ -99,7 +99,7 @@ void hamilt::nonlocal_pw_op::operator()(const b reinterpret_cast*>(ps), // array of data reinterpret_cast*>(becp)); // array of data - cudaCheckOnDebug(); + CHECK_CUDA_SYNC(); iat += l1; sum += l1 * l3; } @@ -129,7 +129,7 @@ void hamilt::nonlocal_pw_op::operator()(const b reinterpret_cast*>(ps), // array of data reinterpret_cast*>(becp)); // array of data - cudaCheckOnDebug(); + CHECK_CUDA_SYNC(); iat += l1; sum += l1 * l3; // >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> diff --git a/source/source_pw/module_pwdft/kernels/cuda/onsite_op.cu b/source/source_pw/module_pwdft/kernels/cuda/onsite_op.cu index d8306e767e..68aee02047 100644 --- a/source/source_pw/module_pwdft/kernels/cuda/onsite_op.cu +++ b/source/source_pw/module_pwdft/kernels/cuda/onsite_op.cu @@ -94,7 +94,7 @@ void hamilt::onsite_ps_op::operator()(const bas reinterpret_cast*>(ps), // array of data reinterpret_cast*>(becp)); // array of data - cudaCheckOnDebug(); + CHECK_CUDA_SYNC(); } template @@ -124,7 +124,7 @@ void hamilt::onsite_ps_op::operator()(const bas reinterpret_cast*>(ps), // array of data reinterpret_cast*>(becp)); // array of data - cudaCheckOnDebug(); + CHECK_CUDA_SYNC(); // >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> } diff --git a/source/source_pw/module_pwdft/kernels/cuda/stress_op.cu b/source/source_pw/module_pwdft/kernels/cuda/stress_op.cu index f2a014f78d..58a8e219e5 100644 --- a/source/source_pw/module_pwdft/kernels/cuda/stress_op.cu +++ b/source/source_pw/module_pwdft/kernels/cuda/stress_op.cu @@ -1,11 +1,13 @@ #include "source_pw/module_pwdft/kernels/stress_op.h" +#include "source_base/constants.h" +#include "source_base/module_device/device.h" +#include "source_base/module_device/kernel_compat.h" #include "vnl_tools_cu.hpp" #include "source_base/module_device/types.h" #include #include -#include -#include +#include "source_base/module_device/device_check.h" #include @@ -241,7 +243,7 @@ void cal_dbecp_noevc_nl_op::operator()(const ba reinterpret_cast*>(vkb2), reinterpret_cast*>(dbecp_noevc)); - cudaCheckOnDebug(); + CHECK_CUDA_SYNC(); } template @@ -288,7 +290,7 @@ void cal_stress_nl_op::operator()(const base_de reinterpret_cast*>(dbecp), stress);// array of data - cudaCheckOnDebug(); + CHECK_CUDA_SYNC(); } template @@ -411,7 +413,7 @@ void cal_stress_nl_op::operator()(const base_de reinterpret_cast*>(dbecp), stress);// array of data - cudaCheckOnDebug(); + CHECK_CUDA_SYNC(); } template @@ -432,7 +434,7 @@ FPTYPE cal_multi_dot_op::operator()(const int& cudaMemcpy(&sum, d_sum, sizeof(FPTYPE) * 1, cudaMemcpyDeviceToHost); cudaFree(d_sum); - cudaCheckOnDebug(); + CHECK_CUDA_SYNC(); return sum; } @@ -449,7 +451,7 @@ void cal_stress_mgga_op::operator()( cal_stress_mgga<<>>( spin, nrxx, w1, gradwfc_, crosstaus); - cudaCheckOnDebug(); + CHECK_CUDA_SYNC(); } @@ -703,43 +705,51 @@ __global__ void cal_stress_drhoc_aux3( template __global__ void cal_force_npw( const thrust::complex *psiv, - const FPTYPE* gv_x, const FPTYPE* gv_y, const FPTYPE* gv_z, + const FPTYPE* gv, const FPTYPE* rhocgigg_vec, FPTYPE* force, - const FPTYPE pos_x, const FPTYPE pos_y, const FPTYPE pos_z, + const FPTYPE* tau, const int npw, const FPTYPE omega, const FPTYPE tpiba ){ - const double TWO_PI = 2.0 * 3.14159265358979323846; - int tid = blockIdx.x * blockDim.x + threadIdx.x; - int begin_idx = tid * 1024; - if(begin_idx > npw) return; + int ia = blockIdx.x; + int tid = threadIdx.x; + if(tid > npw) return; + FPTYPE pos_x = tau[ia * 3]; + FPTYPE pos_y = tau[ia * 3 + 1]; + FPTYPE pos_z = tau[ia * 3 + 2]; FPTYPE t_force0 = 0; FPTYPE t_force1 = 0; FPTYPE t_force2 = 0; - for(int ig = begin_idx; ig psiv_conj = conj(psiv[ig]); - const FPTYPE arg = TWO_PI * (gv_x[ig] * pos_x + gv_y[ig] * pos_y + gv_z[ig] * pos_z); - const FPTYPE sinp = sin(arg); - const FPTYPE cosp = cos(arg); + const FPTYPE arg = ModuleBase::TWO_PI * (gv[ig * 3] * pos_x + gv[ig * 3 + 1] * pos_y + gv[ig * 3 + 2] * pos_z); + FPTYPE sinp, cosp; + sincos(arg, &sinp, &cosp); const thrust::complex expiarg = thrust::complex(sinp, cosp); const thrust::complex tmp_var = psiv_conj * expiarg * tpiba * omega * rhocgigg_vec[ig]; - const thrust::complex ipol0 = tmp_var * gv_x[ig]; + const thrust::complex ipol0 = tmp_var * gv[ig * 3]; t_force0 += ipol0.real(); - const thrust::complex ipol1 = tmp_var * gv_y[ig]; + const thrust::complex ipol1 = tmp_var * gv[ig * 3 + 1]; t_force1 += ipol1.real(); - const thrust::complex ipol2 = tmp_var * gv_z[ig]; + const thrust::complex ipol2 = tmp_var * gv[ig * 3 + 2]; t_force2 += ipol2.real(); } - atomicAdd(&force[0], t_force0); - atomicAdd(&force[1], t_force1); - atomicAdd(&force[2], t_force2); + __syncwarp(); + warp_reduce(t_force0); + warp_reduce(t_force1); + warp_reduce(t_force2); + if (threadIdx.x % WARP_SIZE == 0) { + atomicAdd(&force[ia * 3], t_force0); + atomicAdd(&force[ia * 3 + 1], t_force1); + atomicAdd(&force[ia * 3 + 2], t_force2); + } } template @@ -880,22 +890,17 @@ void cal_stress_drhoc_aux_op::operator()( template void cal_force_npw_op::operator()( const std::complex *psiv, - const FPTYPE* gv_x, const FPTYPE* gv_y, const FPTYPE* gv_z, + const FPTYPE* gv, const FPTYPE* rhocgigg_vec, FPTYPE* force, - const FPTYPE pos_x, const FPTYPE pos_y, const FPTYPE pos_z, + const FPTYPE* tau, const int npw, - const FPTYPE omega, const FPTYPE tpiba + const FPTYPE omega, const FPTYPE tpiba, const int na ) { - // Divide the npw size range into blocksize 1024 blocks - int t_size = 1024; - int t_num = (npw%t_size) ? (npw/t_size + 1) : (npw/t_size); - dim3 npwgrid(((t_num%THREADS_PER_BLOCK) ? (t_num/THREADS_PER_BLOCK + 1) : (t_num/THREADS_PER_BLOCK))); - - cal_force_npw <<< npwgrid, THREADS_PER_BLOCK >>> ( + cal_force_npw <<>> ( reinterpret_cast*>(psiv), - gv_x, gv_y, gv_z, rhocgigg_vec, force, pos_x, pos_y, pos_z, + gv, rhocgigg_vec, force, tau, npw, omega, tpiba ); return ; @@ -908,7 +913,7 @@ void pointer_array_malloc::operator()( const int n ) { - cudaErrcheck(cudaMalloc(ptr, n * sizeof(void*))); + CHECK_CUDA(cudaMalloc(ptr, n * sizeof(void*))); } template struct pointer_array_malloc; @@ -1069,7 +1074,7 @@ void cal_stress_nl_op::operator()(const base_de reinterpret_cast*>(dbecp), stress);// array of data - cudaCheckOnDebug(); + CHECK_CUDA_SYNC(); } // kernel for DeltaSpin stress template @@ -1100,7 +1105,7 @@ void cal_stress_nl_op::operator()(const base_de reinterpret_cast*>(dbecp), stress);// array of data - cudaCheckOnDebug(); + CHECK_CUDA_SYNC(); } template struct synchronize_ptrs; diff --git a/source/source_pw/module_pwdft/kernels/cuda/veff_op.cu b/source/source_pw/module_pwdft/kernels/cuda/veff_op.cu index f4eb37e5ac..708b49ec8e 100644 --- a/source/source_pw/module_pwdft/kernels/cuda/veff_op.cu +++ b/source/source_pw/module_pwdft/kernels/cuda/veff_op.cu @@ -52,7 +52,7 @@ void veff_pw_op::operator()(const base_device:: reinterpret_cast*>(out), // array of data in); // array of data - cudaCheckOnDebug(); + CHECK_CUDA_SYNC(); } template @@ -69,7 +69,7 @@ void veff_pw_op::operator()(const base_device:: reinterpret_cast*>(out1), // array of data in[0]); // array of data - cudaCheckOnDebug(); + CHECK_CUDA_SYNC(); } template struct veff_pw_op; diff --git a/source/source_pw/module_pwdft/kernels/cuda/vnl_op.cu b/source/source_pw/module_pwdft/kernels/cuda/vnl_op.cu index e4b2278feb..689b958282 100644 --- a/source/source_pw/module_pwdft/kernels/cuda/vnl_op.cu +++ b/source/source_pw/module_pwdft/kernels/cuda/vnl_op.cu @@ -108,7 +108,7 @@ void cal_vnl_op::operator() ( reinterpret_cast*>(sk), reinterpret_cast*>(vkb_in)); - cudaCheckOnDebug(); + CHECK_CUDA_SYNC(); } template struct cal_vnl_op; diff --git a/source/source_pw/module_pwdft/kernels/cuda/wf_op.cu b/source/source_pw/module_pwdft/kernels/cuda/wf_op.cu index b1b29ac03c..a5ab6cc087 100644 --- a/source/source_pw/module_pwdft/kernels/cuda/wf_op.cu +++ b/source/source_pw/module_pwdft/kernels/cuda/wf_op.cu @@ -114,7 +114,7 @@ void cal_sk_op::operator()(const base_device::D reinterpret_cast*>(eigts3), reinterpret_cast*>(sk)); - cudaCheckOnDebug(); + CHECK_CUDA_SYNC(); } template struct cal_sk_op; diff --git a/source/source_pw/module_pwdft/kernels/force_op.cpp b/source/source_pw/module_pwdft/kernels/force_op.cpp index 029afdbf7c..0e0c34ccdd 100644 --- a/source/source_pw/module_pwdft/kernels/force_op.cpp +++ b/source/source_pw/module_pwdft/kernels/force_op.cpp @@ -1,5 +1,7 @@ #include "source_pw/module_pwdft/kernels/force_op.h" +#include "source_base/truncated_func.h" + #ifdef _OPENMP #include #endif @@ -109,9 +111,12 @@ struct cal_force_nl_op for (int ipol = 0; ipol < 3; ipol++) { - const FPTYPE dbb - = (conj(dbecp[ipol * nbands * nkb + ib * nkb + inkb]) * becp[ib * nkb + inkb]) - .real(); +#ifdef __SW + ModuleBase::truncated_underflow(dbecp[ipol * nbands * nkb + ib * nkb + inkb]); + ModuleBase::truncated_underflow(becp[ib * nkb + inkb]); + ModuleBase::truncated_underflow(local_force[ipol]); +#endif + const FPTYPE dbb = (conj(dbecp[ipol * nbands * nkb + ib * nkb + inkb]) * becp[ib * nkb + inkb]).real(); local_force[ipol] -= ps * fac * dbb; // cf[iat*3+ipol] += ps * fac * dbb; } diff --git a/source/source_pw/module_pwdft/kernels/force_op.h b/source/source_pw/module_pwdft/kernels/force_op.h index ca15580d5a..e31721913c 100644 --- a/source/source_pw/module_pwdft/kernels/force_op.h +++ b/source/source_pw/module_pwdft/kernels/force_op.h @@ -164,6 +164,21 @@ struct cal_force_loc_op{ const int vloc_nr, FPTYPE* forcelc) {}; }; + +template +struct cal_force_ew_op{ + void operator()( + const int nat, + const int npw, + const int ig_gge0, + const int* iat2it, + const FPTYPE* gcar, + const FPTYPE* tau, + const FPTYPE* it_fact, + const std::complex* aux, + FPTYPE* forceion + ) {}; +}; #if __CUDA || __UT_USE_CUDA || __ROCM || __UT_USE_ROCM template struct cal_vkb1_nl_op @@ -305,6 +320,21 @@ struct cal_force_loc_op{ const int vloc_nr, FPTYPE* forcelc); }; + +template +struct cal_force_ew_op{ + void operator()( + const int nat, + const int npw, + const int ig_gge0, + const int* iat2it, + const FPTYPE* gcar, + const FPTYPE* tau, + const FPTYPE* it_fact, + const std::complex* aux, + FPTYPE* forceion + ); +}; #endif // __CUDA || __UT_USE_CUDA || __ROCM || __UT_USE_ROCM } // namespace hamilt #endif // W_ABACUS_DEVELOP_ABACUS_DEVELOP_SOURCE_source_pw_HAMILT_PWDFT_KERNELS_FORCE_OP_H \ No newline at end of file diff --git a/source/source_pw/module_pwdft/kernels/mul_potential_op.cpp b/source/source_pw/module_pwdft/kernels/mul_potential_op.cpp index 85647e065d..53cf7a6ff3 100644 --- a/source/source_pw/module_pwdft/kernels/mul_potential_op.cpp +++ b/source/source_pw/module_pwdft/kernels/mul_potential_op.cpp @@ -14,8 +14,8 @@ struct mul_potential_op, base_device::DEVICE_CPU> #endif for (int ig = 0; ig < npw; ig++) { - int ig_kq = ik * nks * npw + iq * npw + ig; - density_recip[ig] *= pot[ig_kq]; + // int ig_kq = ik * nks * npw + iq * npw + ig; + density_recip[ig] *= pot[ig]; } } diff --git a/source/source_pw/module_pwdft/kernels/rocm/stress_op.hip.cu b/source/source_pw/module_pwdft/kernels/rocm/stress_op.hip.cu index 0ea37fa059..dd3a053f02 100644 --- a/source/source_pw/module_pwdft/kernels/rocm/stress_op.hip.cu +++ b/source/source_pw/module_pwdft/kernels/rocm/stress_op.hip.cu @@ -844,23 +844,17 @@ void cal_stress_drhoc_aux_op::operator()( template void cal_force_npw_op::operator()( const std::complex *psiv, - const FPTYPE* gv_x, const FPTYPE* gv_y, const FPTYPE* gv_z, + const FPTYPE* gv, const FPTYPE* rhocgigg_vec, FPTYPE* force, - const FPTYPE pos_x, const FPTYPE pos_y, const FPTYPE pos_z, + const FPTYPE* tau, const int npw, - const FPTYPE omega, const FPTYPE tpiba + const FPTYPE omega, const FPTYPE tpiba, const int na ) { - int t_size = 1024; - int t_num = (npw%t_size) ? (npw/t_size + 1) : (npw/t_size); - - dim3 npwgrid(((t_num%THREADS_PER_BLOCK) ? (t_num/THREADS_PER_BLOCK + 1) : (t_num/THREADS_PER_BLOCK))); - - - hipLaunchKernelGGL(HIP_KERNEL_NAME(cal_force_npw), npwgrid, THREADS_PER_BLOCK,0,0, + hipLaunchKernelGGL(HIP_KERNEL_NAME(cal_force_npw), na, THREADS_PER_BLOCK,0,0, reinterpret_cast*>(psiv), - gv_x, gv_y, gv_z, rhocgigg_vec, force, pos_x, pos_y, pos_z, + gv, rhocgigg_vec, force, tau, npw, omega, tpiba ); diff --git a/source/source_pw/module_pwdft/kernels/stress_op.cpp b/source/source_pw/module_pwdft/kernels/stress_op.cpp index bee19ceb96..6034a52710 100644 --- a/source/source_pw/module_pwdft/kernels/stress_op.cpp +++ b/source/source_pw/module_pwdft/kernels/stress_op.cpp @@ -1,5 +1,6 @@ #include "source_pw/module_pwdft/kernels/stress_op.h" +#include "source_base/truncated_func.h" #include "source_base/constants.h" #include "source_base/libm/libm.h" #include "source_base/math_polyint.h" @@ -140,8 +141,10 @@ struct cal_stress_nl_op FPTYPE ps = deeq[((spin * deeq_2 + iat + ia) * deeq_3 + ip1) * deeq_4 + ip2] + ps_qq; const int inkb1 = sum + ia * nproj + ip1; const int inkb2 = sum + ia * nproj + ip2; - // out<<"\n ps = "< { { rhocg1 *= ModuleBase::FOUR_PI / omega / 2.0 / gx_arr[igl]; FPTYPE g2a = (gx_arr[igl]*gx_arr[igl]) / 4.0; - rhocg1 += ModuleBase::FOUR_PI / omega * gx_arr[ngg] * ModuleBase::libm::exp(-g2a) * (g2a + 1) + rhocg1 += ModuleBase::FOUR_PI / omega * gx_arr[ngg] * + ModuleBase::truncated_exp(-g2a) * (g2a + 1) / pow(gx_arr[igl] * gx_arr[igl], 2); drhocg [igl] = rhocg1; } @@ -629,49 +633,6 @@ struct cal_stress_drhoc_aux_op { } }; - -template -struct cal_force_npw_op { - void operator()(const std::complex* psiv, - const FPTYPE* gv_x, - const FPTYPE* gv_y, - const FPTYPE* gv_z, - const FPTYPE* rhocgigg_vec, - FPTYPE* force, - const FPTYPE pos_x, - const FPTYPE pos_y, - const FPTYPE pos_z, - const int npw, - const FPTYPE omega, - const FPTYPE tpiba) - { - -#ifdef _OPENMP -#pragma omp for nowait -#endif - for (int ig = 0; ig < npw; ig++) - { - const std::complex psiv_conj = conj(psiv[ig]); - - const FPTYPE arg = ModuleBase::TWO_PI * (gv_x[ig] * pos_x + gv_y[ig] * pos_y + gv_z[ig] * pos_z); - FPTYPE sinp, cosp; - ModuleBase::libm::sincos(arg, &sinp, &cosp); - const std::complex expiarg = std::complex(sinp, cosp); - - const std::complex tmp_var = psiv_conj * expiarg * tpiba * omega * rhocgigg_vec[ig]; - - const std::complex ipol0 = tmp_var * gv_x[ig]; - force[0] += ipol0.real(); - - const std::complex ipol1 = tmp_var * gv_y[ig]; - force[1] += ipol1.real(); - - const std::complex ipol2 = tmp_var * gv_z[ig]; - force[2] += ipol2.real(); - } - } -}; - template struct cal_multi_dot_op { FPTYPE operator()(const int& npw, @@ -687,6 +648,9 @@ struct cal_multi_dot_op { #endif for (int i = 0; i < npw; i++) { +#ifdef __SW + ModuleBase::truncated_underflow(psi[i]); +#endif sum += fac * gk1[i] * gk2[i] * d_kfac[i] * std::norm(psi[i]); } return sum; @@ -768,9 +732,6 @@ template struct cal_vq_deri_op; template struct cal_stress_drhoc_aux_op; template struct cal_stress_drhoc_aux_op; -template struct cal_force_npw_op; -template struct cal_force_npw_op; - template struct cal_multi_dot_op; template struct cal_multi_dot_op; diff --git a/source/source_pw/module_pwdft/kernels/stress_op.h b/source/source_pw/module_pwdft/kernels/stress_op.h index 58c0f22e1b..fc81f355e4 100644 --- a/source/source_pw/module_pwdft/kernels/stress_op.h +++ b/source/source_pw/module_pwdft/kernels/stress_op.h @@ -241,13 +241,13 @@ struct cal_stress_drhoc_aux_op{ template struct cal_force_npw_op{ void operator()(const std::complex *psiv, - const FPTYPE* gv_x, const FPTYPE* gv_y, const FPTYPE* gv_z, + const FPTYPE* gv, const FPTYPE* rhocgigg_vec, FPTYPE* force, - const FPTYPE pos_x, const FPTYPE pos_y, const FPTYPE pos_xz, + const FPTYPE* tau_x, const int npw, - const FPTYPE omega, const FPTYPE tpiba - ); + const FPTYPE omega, const FPTYPE tpiba, const int na + ) {} }; template @@ -480,12 +480,12 @@ struct cal_stress_drhoc_aux_op{ template struct cal_force_npw_op{ void operator()(const std::complex *psiv, - const FPTYPE* gv_x, const FPTYPE* gv_y, const FPTYPE* gv_z, + const FPTYPE* gv, const FPTYPE* rhocgigg_vec, FPTYPE* force, - const FPTYPE pos_x, const FPTYPE pos_y, const FPTYPE pos_xz, + const FPTYPE* tau, const int npw, - const FPTYPE omega, const FPTYPE tpiba + const FPTYPE omega, const FPTYPE tpiba, const int na ); }; diff --git a/source/source_pw/module_pwdft/kernels/test/CMakeLists.txt b/source/source_pw/module_pwdft/kernels/test/CMakeLists.txt index dd54c85eee..bd97cff1a6 100644 --- a/source/source_pw/module_pwdft/kernels/test/CMakeLists.txt +++ b/source/source_pw/module_pwdft/kernels/test/CMakeLists.txt @@ -2,7 +2,7 @@ remove_definitions(-D__LCAO) remove_definitions(-D__MLALGO) AddTest( - TARGET Hamilt_Kernels_UTs + TARGET MODULE_PW_Hamilt_Kernels_UTs LIBS parameter ${math_libs} device base container SOURCES ekinetic_op_test.cpp nonlocal_op_test.cpp veff_op_test.cpp meta_op_test.cpp force_op_test.cpp stress_op_test.cpp wf_op_test.cpp vnl_op_test.cpp diff --git a/source/source_pw/module_pwdft/kernels/veff_op.cpp b/source/source_pw/module_pwdft/kernels/veff_op.cpp index 23646e9608..e8f4b18b3a 100644 --- a/source/source_pw/module_pwdft/kernels/veff_op.cpp +++ b/source/source_pw/module_pwdft/kernels/veff_op.cpp @@ -8,7 +8,7 @@ struct veff_pw_op void operator()(const base_device::DEVICE_CPU* dev, const int& size, std::complex* out, const FPTYPE* in) { #ifdef _OPENMP -#pragma omp parallel for schedule(static, 4096/sizeof(FPTYPE)) +#pragma omp parallel for schedule(static) #endif for (int ir = 0; ir < size; ++ir) { diff --git a/source/source_pw/module_pwdft/module_exx_helper/exx_helper.cpp b/source/source_pw/module_pwdft/module_exx_helper/exx_helper.cpp deleted file mode 100644 index ffa671c42d..0000000000 --- a/source/source_pw/module_pwdft/module_exx_helper/exx_helper.cpp +++ /dev/null @@ -1,56 +0,0 @@ -#include "exx_helper.h" - -template -double Exx_Helper::cal_exx_energy(psi::Psi *psi_) -{ - return op_exx->cal_exx_energy(psi_); - -} - -template -bool Exx_Helper::exx_after_converge(int &iter) -{ - if (op_exx->first_iter) - { - op_exx->first_iter = false; - } - else if (!GlobalC::exx_info.info_global.separate_loop) - { - return true; - } - else if (iter == 1) - { - return true; - } - GlobalV::ofs_running << "Updating EXX and rerun SCF" << std::endl; - iter = 0; - return false; - -} - -template -void Exx_Helper::set_psi(psi::Psi *psi_) -{ - if (psi_ == nullptr) - return; - op_exx->set_psi(*psi_); - if (PARAM.inp.exxace && GlobalC::exx_info.info_global.separate_loop) - { - op_exx->construct_ace(); - } -} - -template class Exx_Helper, base_device::DEVICE_CPU>; -template class Exx_Helper, base_device::DEVICE_CPU>; -#if ((defined __CUDA) || (defined __ROCM)) -template class Exx_Helper, base_device::DEVICE_GPU>; -template class Exx_Helper, base_device::DEVICE_GPU>; -#endif - -#ifndef __EXX -#include "source_hamilt/module_xc/exx_info.h" -namespace GlobalC -{ - Exx_Info exx_info; -} -#endif \ No newline at end of file diff --git a/source/source_pw/module_pwdft/module_exx_helper/exx_helper.h b/source/source_pw/module_pwdft/module_exx_helper/exx_helper.h deleted file mode 100644 index a67afbc80e..0000000000 --- a/source/source_pw/module_pwdft/module_exx_helper/exx_helper.h +++ /dev/null @@ -1,42 +0,0 @@ -// -// For EXX in PW. -// -#include "source_psi/psi.h" -#include "source_base/matrix.h" -#include "source_pw/module_pwdft/global.h" -#include "source_pw/module_pwdft/operator_pw/op_exx_pw.h" - -#ifndef EXX_HELPER_H -#define EXX_HELPER_H -template -struct Exx_Helper -{ - using Real = typename GetTypeReal::type; - using OperatorEXX = hamilt::OperatorEXXPW; - - public: - Exx_Helper() = default; - OperatorEXX *op_exx = nullptr; - - void set_firstiter(bool flag = true) { first_iter = flag; } - void set_wg(const ModuleBase::matrix *wg_) { wg = wg_; } - void set_psi(psi::Psi *psi_); - - void set_op() - { - op_exx->first_iter = first_iter; - set_psi(psi); - op_exx->set_wg(wg); - } - - bool exx_after_converge(int &iter); - - double cal_exx_energy(psi::Psi *psi_); - - private: - bool first_iter = false; - psi::Psi *psi = nullptr; - const ModuleBase::matrix *wg = nullptr; - -}; -#endif // EXX_HELPER_H diff --git a/source/source_pw/module_pwdft/nonlocal_maths.hpp b/source/source_pw/module_pwdft/nonlocal_maths.hpp index 07cd28de2d..d53b1cc6e4 100644 --- a/source/source_pw/module_pwdft/nonlocal_maths.hpp +++ b/source/source_pw/module_pwdft/nonlocal_maths.hpp @@ -5,7 +5,7 @@ #include "source_basis/module_pw/pw_basis_k.h" #include "source_cell/klist.h" #include "source_cell/unitcell.h" -#include "source_pw/module_pwdft/VNL_in_pw.h" +#include "source_pw/module_pwdft/vnl_pw.h" #include "source_pw/module_pwdft/kernels/stress_op.h" #include "source_base/kernels/math_kernel_op.h" @@ -18,14 +18,14 @@ class Nonlocal_maths public: Nonlocal_maths(const pseudopot_cell_vnl* nlpp_in, const UnitCell* ucell_in) { - this->device = base_device::get_device_type(this->ctx); + this->device = base_device::get_device_type(this->ctx); this->nhtol_ = nlpp_in->nhtol; this->lmax_ = nlpp_in->lmaxkb; this->ucell_ = ucell_in; } Nonlocal_maths(const ModuleBase::matrix& nhtol, const int lmax, const UnitCell* ucell_in) { - this->device = base_device::get_device_type(this->ctx); + this->device = base_device::get_device_type(this->ctx); this->nhtol_ = nhtol; this->lmax_ = lmax; this->ucell_ = ucell_in; @@ -33,8 +33,8 @@ class Nonlocal_maths private: ModuleBase::matrix nhtol_; - int lmax_; - const UnitCell* ucell_; + int lmax_ = 0; + const UnitCell* ucell_ = nullptr; Device* ctx = {}; base_device::DEVICE_CPU* cpu_ctx = {}; diff --git a/source/source_pw/module_pwdft/onsite_proj_tools.cpp b/source/source_pw/module_pwdft/onsite_proj_tools.cpp index 509a65a6ab..aa6ed0f83f 100644 --- a/source/source_pw/module_pwdft/onsite_proj_tools.cpp +++ b/source/source_pw/module_pwdft/onsite_proj_tools.cpp @@ -24,7 +24,7 @@ Onsite_Proj_tools::Onsite_Proj_tools(const pseudopot_cell_vnl* n : nlpp_(nlpp_in), ucell_(ucell_in), psi_(psi_in), kv_(kv_in), wfc_basis_(wfc_basis_in), sf_(sf_in) { // get the device context - this->device = base_device::get_device_type(this->ctx); + this->device = base_device::get_device_type(this->ctx); // seems kvec_c never used... this->kvec_c = this->wfc_basis_->template get_kvec_c_data(); @@ -126,7 +126,7 @@ Onsite_Proj_tools::Onsite_Proj_tools( wfc_basis_ = wfc_basis_in; sf_ = sf_in; - this->device = base_device::get_device_type(this->ctx); + this->device = base_device::get_device_type(this->ctx); this->kvec_c = this->wfc_basis_->template get_kvec_c_data(); // skip deeq, qq_nt diff --git a/source/source_pw/module_pwdft/onsite_proj_tools.h b/source/source_pw/module_pwdft/onsite_proj_tools.h index a8b7a56b8e..f50efd6701 100644 --- a/source/source_pw/module_pwdft/onsite_proj_tools.h +++ b/source/source_pw/module_pwdft/onsite_proj_tools.h @@ -5,7 +5,7 @@ #include "source_basis/module_pw/pw_basis_k.h" #include "source_cell/klist.h" #include "source_cell/unitcell.h" -#include "source_pw/module_pwdft/VNL_in_pw.h" +#include "source_pw/module_pwdft/vnl_pw.h" #include "source_pw/module_pwdft/kernels/stress_op.h" #include "source_base/kernels/math_kernel_op.h" #include "source_psi/psi.h" @@ -93,19 +93,19 @@ class Onsite_Proj_tools private: /// pointers to access the data without memory arrangement - const Structure_Factor* sf_; - const pseudopot_cell_vnl* nlpp_; - const UnitCell* ucell_; + const Structure_Factor* sf_ = nullptr; + const pseudopot_cell_vnl* nlpp_ = nullptr; + const UnitCell* ucell_ = nullptr; const psi::Psi, Device>* psi_; - const K_Vectors* kv_; - const ModulePW::PW_Basis_K* wfc_basis_; + const K_Vectors* kv_ = nullptr; + const ModulePW::PW_Basis_K* wfc_basis_ = nullptr; /// the following variables are used for the calculation Device* ctx = {}; base_device::DEVICE_CPU* cpu_ctx = {}; base_device::AbacusDevice_t device = {}; - int nkb; - int nbands; + int nkb = 0; + int nbands = 0; int deeq_dims[4] = {0, 0, 0, 0}; // deeq can be something other than that in pseudopotentials int deeq_nc_dims[4] = {0, 0, 0, 0}; @@ -113,8 +113,8 @@ class Onsite_Proj_tools int max_nh = 0; int max_npw = 0; - int ntype; - bool nondiagonal; + int ntype = 0; + bool nondiagonal = false; int pre_ik_s = -1; int pre_ik_f = -1; diff --git a/source/source_pw/module_pwdft/onsite_projector.cpp b/source/source_pw/module_pwdft/onsite_projector.cpp index 4c03ce9b74..4353700d65 100644 --- a/source/source_pw/module_pwdft/onsite_projector.cpp +++ b/source/source_pw/module_pwdft/onsite_projector.cpp @@ -104,7 +104,7 @@ void projectors::OnsiteProjector::init(const std::string& orbital_dir const ModuleBase::matrix& wg, const ModuleBase::matrix& ekb) { - this->device = base_device::get_device_type(this->ctx); + this->device = base_device::get_device_type(this->ctx); if(!this->initialed) { @@ -503,7 +503,7 @@ void projectors::OnsiteProjector::read_abacus_orb(std::ifstream& ifs, { if (rank == 0) { - int l, izeta; + int l = 0, izeta = 0; ifs >> tmp >> tmp >> tmp; ifs >> tmp >> l >> izeta; ichi = radial_map_[l][izeta]; diff --git a/source/source_pw/module_pwdft/op_pw.cpp b/source/source_pw/module_pwdft/op_pw.cpp new file mode 100644 index 0000000000..b4289bc023 --- /dev/null +++ b/source/source_pw/module_pwdft/op_pw.cpp @@ -0,0 +1,17 @@ +#include "source_base/timer.h" +#include "source_hamilt/operator.h" +#include "op_pw.h" + +using namespace hamilt; + +template +OperatorPW::~OperatorPW(){}; + +namespace hamilt { +template class OperatorPW, base_device::DEVICE_CPU>; +template class OperatorPW, base_device::DEVICE_CPU>; +#if ((defined __CUDA) || (defined __ROCM)) +template class OperatorPW, base_device::DEVICE_GPU>; +template class OperatorPW, base_device::DEVICE_GPU>; +#endif +} \ No newline at end of file diff --git a/source/source_pw/module_pwdft/operator_pw/operator_pw.h b/source/source_pw/module_pwdft/op_pw.h similarity index 100% rename from source/source_pw/module_pwdft/operator_pw/operator_pw.h rename to source/source_pw/module_pwdft/op_pw.h diff --git a/source/source_pw/module_pwdft/op_pw_ekin.cpp b/source/source_pw/module_pwdft/op_pw_ekin.cpp new file mode 100644 index 0000000000..9c62204050 --- /dev/null +++ b/source/source_pw/module_pwdft/op_pw_ekin.cpp @@ -0,0 +1,82 @@ +#include "op_pw_ekin.h" +#include "source_base/timer.h" +#include "source_base/tool_quit.h" +#include "source_base/module_device/device.h" + +namespace hamilt { + +template +Ekinetic>::Ekinetic( + Real tpiba2_in, + const Real* gk2_in, + const int gk2_row, + const int gk2_col) +{ + this->classname = "Ekinetic"; + this->cal_type = calculation_type::pw_ekinetic; + this->tpiba2 = tpiba2_in; + this->gk2 = gk2_in; + this->gk2_row = gk2_row; + this->gk2_col = gk2_col; + this->device = base_device::get_device_type(this->ctx); + if( this->tpiba2 < 1e-10 || this->gk2 == nullptr) + { + ModuleBase::WARNING_QUIT("EkineticPW", "Constuctor of Operator::EkineticPW is failed, please check your code!"); + } +} + +template +Ekinetic>::~Ekinetic() {} + +template +void Ekinetic>::act( + const int nbands, + const int nbasis, + const int npol, + const T* tmpsi_in, + T* tmhpsi, + const int ngk_ik, + const bool is_first_node)const +{ + ModuleBase::timer::tick("Operator", "EkineticPW"); + int max_npw = nbasis / npol; + + const Real *gk2_ik = &(this->gk2[this->ik * this->gk2_col]); + // denghui added 20221019 + ekinetic_op()(this->ctx, nbands, ngk_ik, max_npw, is_first_node, tpiba2, gk2_ik, tmhpsi, tmpsi_in); + // for (int ib = 0; ib < nbands; ++ib) + // { + // for (int ig = 0; ig < ngk_ik; ++ig) + // { + // tmhpsi[ig] += gk2_ik[ig] * tpiba2 * tmpsi_in[ig]; + // } + // tmhpsi += max_npw; + // tmpsi_in += max_npw; + // } + ModuleBase::timer::tick("Operator", "EkineticPW"); +} + +// copy construct added by denghui at 20221105 +template +template +hamilt::Ekinetic>::Ekinetic(const Ekinetic> *ekinetic) { + this->classname = "Ekinetic"; + this->cal_type = calculation_type::pw_ekinetic; + this->ik = ekinetic->get_ik(); + this->tpiba2 = ekinetic->get_tpiba2(); + this->gk2 = ekinetic->get_gk2(); + this->gk2_row = ekinetic->get_gk2_row(); + this->gk2_col = ekinetic->get_gk2_col(); + this->device = base_device::get_device_type(this->ctx); + if( this->tpiba2 < 1e-10 || this->gk2 == nullptr) { + ModuleBase::WARNING_QUIT("EkineticPW", "Copy Constuctor of Operator::EkineticPW is failed, please check your code!"); + } +} + +template class Ekinetic, base_device::DEVICE_CPU>>; +template class Ekinetic, base_device::DEVICE_CPU>>; +#if ((defined __CUDA) || (defined __ROCM)) +template class Ekinetic, base_device::DEVICE_GPU>>; +template class Ekinetic, base_device::DEVICE_GPU>>; +#endif +} // namespace hamilt diff --git a/source/source_pw/module_pwdft/op_pw_ekin.h b/source/source_pw/module_pwdft/op_pw_ekin.h new file mode 100644 index 0000000000..adfb67eb7e --- /dev/null +++ b/source/source_pw/module_pwdft/op_pw_ekin.h @@ -0,0 +1,74 @@ +#ifndef EKINETICPW_H +#define EKINETICPW_H + +#include "op_pw.h" +#include "source_pw/module_pwdft/kernels/ekinetic_op.h" + +#include + +namespace hamilt { + +// Not needed anymore +#ifndef __EKINETICTEMPLATE +#define __EKINETICTEMPLATE + +template class Ekinetic : public T {}; +// template +// class Ekinetic : public OperatorPW {}; + +#endif + +// template +// class Ekinetic : public OperatorPW +template +class Ekinetic> : public OperatorPW +{ + private: + using Real = typename GetTypeReal::type; + public: + Ekinetic( + Real tpiba2_in, + const Real* gk2_in, + const int gk2_row, + const int gk2_col); + + template + explicit Ekinetic(const Ekinetic>* ekinetic); + + virtual ~Ekinetic(); + + virtual void act(const int nbands, + const int nbasis, + const int npol, + const T* tmpsi_in, + T* tmhpsi, + const int ngk_ik = 0, + const bool is_first_node = false)const override; + + // denghuilu added for copy construct at 20221105 + int get_gk2_row() const {return this->gk2_row;} + int get_gk2_col() const {return this->gk2_col;} + Real get_tpiba2() const {return this->tpiba2;} + const Real* get_gk2() const {return this->gk2;} + Device* get_ctx() const {return this->ctx;} + + private: + + Real tpiba2 = 0.0; + const Real* gk2 = nullptr; + int gk2_row = 0; + int gk2_col = 0; + + Device* ctx = {}; + base_device::DEVICE_CPU* cpu_ctx = {}; + base_device::AbacusDevice_t device = {}; + + using ekinetic_op = ekinetic_pw_op; + using resmem_var_op = base_device::memory::resize_memory_op; + using delmem_var_op = base_device::memory::delete_memory_op; + using syncmem_var_h2d_op = base_device::memory::synchronize_memory_op; +}; + +} // namespace hamilt + +#endif \ No newline at end of file diff --git a/source/source_pw/module_pwdft/op_pw_exx.cpp b/source/source_pw/module_pwdft/op_pw_exx.cpp new file mode 100644 index 0000000000..be29938057 --- /dev/null +++ b/source/source_pw/module_pwdft/op_pw_exx.cpp @@ -0,0 +1,726 @@ +#include "op_pw_exx.h" + +#include "source_base/constants.h" +#include "source_base/global_variable.h" +#include "source_base/parallel_common.h" +#include "source_base/parallel_comm.h" // use KP_WORLD +#include "source_base/parallel_reduce.h" +#include "source_base/module_external/lapack_connector.h" +#include "source_base/timer.h" +#include "source_base/tool_quit.h" +#include "source_cell/klist.h" +#include "source_hamilt/operator.h" +#include "source_psi/psi.h" +#include "source_pw/module_pwdft/kernels/cal_density_real_op.h" +#include "source_pw/module_pwdft/kernels/exx_cal_energy_op.h" +#include "source_pw/module_pwdft/kernels/mul_potential_op.h" +#include "source_pw/module_pwdft/kernels/vec_mul_vec_complex_op.h" +#include "source_io/module_parameter/parameter.h" // use PARAM +#include "source_hamilt/module_xc/exx_info.h" // use GlobalC::exx_info + +#include +#include +#include +#include + +namespace hamilt +{ +template +std::vector::type> OperatorEXXPW::fock_div = {}; + +template +std::vector::type> OperatorEXXPW::erfc_div = {}; + +template +OperatorEXXPW::OperatorEXXPW(const int* isk_in, + const ModulePW::PW_Basis_K* wfcpw_in, + const ModulePW::PW_Basis* rhopw_in, + K_Vectors *kv_in, + const UnitCell *ucell) + : isk(isk_in), wfcpw(wfcpw_in), rhopw(rhopw_in), kv(kv_in), ucell(ucell) +{ + if (GlobalV::KPAR != 1 && PARAM.inp.exxace == false) + { + // GlobalV::ofs_running << "EXX Calculation does not support k-point parallelism" << std::endl; + ModuleBase::WARNING_QUIT("OperatorEXXPW", "EXX Calculation does not support k-point parallelism when exxace is set to false"); + } + gamma_extrapolation = PARAM.inp.exx_gamma_extrapolation; + bool is_mp = kv_in->get_is_mp(); +#ifdef __MPI + Parallel_Common::bcast_bool(is_mp); +#endif + if (!is_mp) + { + gamma_extrapolation = false; + } + + this->classname = "OperatorEXXPW"; + this->ctx = nullptr; + this->cpu_ctx = nullptr; + this->cal_type = hamilt::calculation_type::pw_exx; + + // allocate real space memory + // assert(wfcpw->nrxx == rhopw->nrxx); + resmem_complex_op()(psi_nk_real, wfcpw->nrxx); + resmem_complex_op()(psi_mq_real, wfcpw->nrxx); + resmem_complex_op()(density_real, rhopw->nrxx); + resmem_complex_op()(h_psi_real, rhopw->nrxx); + // allocate density recip space memory + resmem_complex_op()(density_recip, rhopw->npw); + // allocate h_psi recip space memory + resmem_complex_op()(h_psi_recip, wfcpw->npwk_max); + // resmem_complex_op()(this->ctx, psi_all_real, wfcpw->nrxx * GlobalV::NBANDS); + + int nks = wfcpw->nks; + int nk_fac = PARAM.inp.nspin == 2 ? 2 : 1; + resmem_real_op()(pot, rhopw->npw); + + tpiba = ucell->tpiba; + Real tpiba2 = tpiba * tpiba; + + // initialize rhopw_dev + double ecut_exx = PARAM.inp.ecutexx; + if (ecut_exx == 0.0) + { + ecut_exx = PARAM.inp.ecutrho; + } + + rhopw_dev = new ModulePW::PW_Basis(wfcpw->get_device(), rhopw->get_precision()); + rhopw_dev->fft_bundle.setfft(wfcpw->get_device(), rhopw->get_precision()); +#ifdef __MPI + rhopw_dev->initmpi(rhopw->poolnproc, rhopw->poolrank, rhopw->pool_world); +#endif + // here we can actually use different ecut to init the grids + rhopw_dev->initgrids(rhopw->lat0, rhopw->latvec, ecut_exx); + rhopw_dev->initgrids(rhopw->lat0, rhopw->latvec, rhopw->nx, rhopw->ny, rhopw->nz); + rhopw_dev->initparameters(rhopw->gamma_only, ecut_exx, rhopw->distribution_type, rhopw->xprime); + rhopw_dev->setuptransform(); + rhopw_dev->collect_local_pw(); + + auto param_fock = GlobalC::exx_info.info_global.coulomb_param[Conv_Coulomb_Pot_K::Coulomb_Type::Fock]; + for (auto param: param_fock) + { + fock_div.push_back(exx_divergence(Conv_Coulomb_Pot_K::Coulomb_Type::Fock, + 0.0, + kv, + wfcpw, + rhopw_dev, + tpiba, + gamma_extrapolation, + ucell->omega)); + } + auto param_erfc = GlobalC::exx_info.info_global.coulomb_param[Conv_Coulomb_Pot_K::Coulomb_Type::Erfc]; + for (auto param: param_erfc) + { + erfc_div.push_back(exx_divergence(Conv_Coulomb_Pot_K::Coulomb_Type::Erfc, + std::stod(param["omega"]), + kv, + wfcpw, + rhopw_dev, + tpiba, + gamma_extrapolation, + ucell->omega)); + } + +} // end of constructor + +template +OperatorEXXPW::~OperatorEXXPW() +{ + // use delete_memory_op to delete the allocated pws + delmem_complex_op()(psi_nk_real); + delmem_complex_op()(psi_mq_real); + delmem_complex_op()(density_real); + delmem_complex_op()(h_psi_real); + delmem_complex_op()(density_recip); + delmem_complex_op()(h_psi_recip); + + delmem_real_op()(pot); + + delmem_complex_op()(h_psi_ace); + delmem_complex_op()(psi_h_psi_ace); + delmem_complex_op()(L_ace); + for (auto &Xi_ace: Xi_ace_k) + { + delmem_complex_op()(Xi_ace); + } + Xi_ace_k.clear(); + delete rhopw_dev; +} + +template +inline bool is_finite(const T &val) +{ + return std::isfinite(val); +} + +template <> +inline bool is_finite(const std::complex &val) +{ + return std::isfinite(val.real()) && std::isfinite(val.imag()); +} + +template <> +inline bool is_finite(const std::complex &val) +{ + return std::isfinite(val.real()) && std::isfinite(val.imag()); +} + +template +void OperatorEXXPW::act(const int nbands, + const int nbasis, + const int npol, + const T *tmpsi_in, + T *tmhpsi, + const int ngk_ik, + const bool is_first_node) const +{ + if (first_iter) return; + // std::cout << cal_exx_energy_ace(&psi) << " EXX energy" << std::endl; + // MPI_Abort(MPI_COMM_WORLD, 0); + // return; + + if (is_first_node) + { + setmem_complex_op()(tmhpsi, 0, nbasis*nbands/npol); + } + + if (PARAM.inp.exxace && GlobalC::exx_info.info_global.separate_loop) + { + act_op_ace(nbands, nbasis, npol, tmpsi_in, tmhpsi, ngk_ik, is_first_node); + } + else + { + act_op(nbands, nbasis, npol, tmpsi_in, tmhpsi, ngk_ik, is_first_node); + } +} + +template +void OperatorEXXPW::act_op(const int nbands, + const int nbasis, + const int npol, + const T *tmpsi_in, + T *tmhpsi, + const int ngk_ik, + const bool is_first_node) const +{ + ModuleBase::timer::tick("OperatorEXXPW", "act_op"); + + setmem_complex_op()(h_psi_recip, 0, wfcpw->npwk_max); + setmem_complex_op()(h_psi_real, 0, rhopw_dev->nrxx); + setmem_complex_op()(density_real, 0, rhopw_dev->nrxx); + setmem_complex_op()(density_recip, 0, rhopw_dev->npw); + setmem_complex_op()(psi_nk_real, 0, wfcpw->nrxx); + setmem_complex_op()(psi_mq_real, 0, wfcpw->nrxx); + + auto q_points = get_q_points(this->ik); + // std::cout << "kpoint " << this->ik << ", qpoints: "; + // for (auto iq: q_points) + // std::cout << iq << ", "; + // std::cout << std::endl; + int nk_fac = PARAM.inp.nspin == 2 ? 2 : 1; + int nk = wfcpw->nks / nk_fac; + + // ik fixed here, select band n + for (int n_iband = 0; n_iband < nbands; n_iband++) + { + const T *psi_nk = tmpsi_in + n_iband * nbasis; + // retrieve \psi_nk in real space + wfcpw->recip_to_real(ctx, psi_nk, psi_nk_real, this->ik); + + // for \psi_nk, get the pw of iq and band m + + Real nqs = q_points.size(); + for (int iq: q_points) + { + get_exx_potential(kv, wfcpw, rhopw_dev, pot, tpiba, gamma_extrapolation, ucell->omega, this->ik, iq % nk); + for (int m_iband = 0; m_iband < psi.get_nbands(); m_iband++) + { + // double wg_mqb_real = GlobalC::exx_helper.wg(iq, m_iband); + double wg_mqb_real = (*wg)(this->ik, m_iband); + T wg_mqb = wg_mqb_real; + if (wg_mqb_real < 1e-12) + { + continue; + } + + const T* psi_mq = get_pw(m_iband, iq); + wfcpw->recip_to_real(ctx, psi_mq, psi_mq_real, iq); + + // direct multiplication in real space, \psi_nk(r) * \psi_mq(r) + cal_density_recip(psi_nk_real, psi_mq_real, ucell->omega); + + // multiply the density with the potential in recip space + multiply_potential(density_recip, this->ik, iq); + + // bring the potential back to real space + rho_recip2real(density_recip, density_real); + + if (false) + { + // do nothing + } + else + { + vec_mul_vec_complex_op()(density_real, psi_mq_real, density_real, wfcpw->nrxx); + } + + T wk_iq = kv->wk[iq]; + + T tmp_scalar = wg_mqb / wk_iq / nqs; + axpy_complex_op()(wfcpw->nrxx, + &tmp_scalar, + density_real, + 1, + h_psi_real, + 1); + + } // end of m_iband + setmem_complex_op()(density_real, 0, rhopw_dev->nrxx); + setmem_complex_op()(density_recip, 0, rhopw_dev->npw); + setmem_complex_op()(psi_mq_real, 0, wfcpw->nrxx); + + } // end of iq + T* h_psi_nk = tmhpsi + n_iband * nbasis; + Real hybrid_alpha = GlobalC::exx_info.info_global.hybrid_alpha; + wfcpw->real_to_recip(ctx, h_psi_real, h_psi_nk, this->ik, true, hybrid_alpha); + setmem_complex_op()(h_psi_real, 0, rhopw_dev->nrxx); + + } + + ModuleBase::timer::tick("OperatorEXXPW", "act_op"); + +} + +template +void OperatorEXXPW::act_op_kpar(const int nbands, + const int nbasis, + const int npol, + const T *tmpsi_in, + T *tmhpsi, + const int ngk_ik, + const bool is_first_node) const +{ + ModuleBase::timer::tick("OperatorEXXPW", "act_op_kpar"); + + setmem_complex_op()(h_psi_recip, 0, wfcpw->npwk_max); + setmem_complex_op()(h_psi_real, 0, rhopw_dev->nrxx); + setmem_complex_op()(density_real, 0, rhopw_dev->nrxx); + setmem_complex_op()(density_recip, 0, rhopw_dev->npw); + // setmem_complex_op()(psi_all_real, 0, wfcpw->nrxx * GlobalV::NBANDS); + // std::map, bool> has_real; + setmem_complex_op()(psi_nk_real, 0, wfcpw->nrxx); + setmem_complex_op()(psi_mq_real, 0, wfcpw->nrxx); + int nqs = kv->get_nkstot_full(); + int nspin_fac = PARAM.inp.nspin == 2 ? 2 : 1; + int ispin = this->ik < (wfcpw->nks / nspin_fac) ? 0 : 1; + + // ik fixed here, select band n + for (int iq = 0; iq < nqs; iq++) + { + // for \psi_nk, get the pw of iq and band m + get_exx_potential(kv, wfcpw, rhopw_dev, pot, tpiba, gamma_extrapolation, ucell->omega, this->ik, iq); + + // decide which pool does the iq belong to + int iq_pool = kv->para_k.whichpool[iq]; + int iq_loc = iq - kv->para_k.startk_pool[iq_pool]; + int iq_loc_spin = iq_loc; + if (ispin == 1) + { + iq_loc_spin += wfcpw->nks / nspin_fac; + } + + for (int m_iband = 0; m_iband < psi.get_nbands(); m_iband++) + { + double wg_mqb = 0; + if (iq_pool == GlobalV::MY_POOL) + { + wg_mqb = (*wg)(iq_loc_spin, m_iband); + } +#ifdef __MPI + MPI_Bcast(&wg_mqb, 1, MPI_DOUBLE, kv->para_k.get_startpro_pool(iq_pool), MPI_COMM_WORLD); +#endif + if (wg_mqb < 1e-12) + continue; + + if (iq_pool == GlobalV::MY_POOL) + { + const T* psi_mq = get_pw(m_iband, iq_loc_spin); + wfcpw->recip_to_real(ctx, psi_mq, psi_mq_real, iq_loc); + // send + } +#ifdef __MPI +#ifdef __CUDA_MPI + MPI_Bcast(psi_mq_real, wfcpw->nrxx, MPI_DOUBLE_COMPLEX, iq_pool, KP_WORLD); +#else + if (PARAM.inp.device == "cpu") + { + MPI_Bcast(psi_mq_real, wfcpw->nrxx, MPI_DOUBLE_COMPLEX, iq_pool, KP_WORLD); + } + else if (PARAM.inp.device == "gpu") + { + // need to copy to cpu first + T* psi_mq_real_cpu = new T[wfcpw->nrxx]; + syncmem_complex_d2c_op()(psi_mq_real_cpu, psi_mq_real, wfcpw->nrxx); + MPI_Bcast(psi_mq_real_cpu, wfcpw->nrxx, MPI_DOUBLE_COMPLEX, iq_pool, KP_WORLD); + syncmem_complex_c2d_op()(psi_mq_real, psi_mq_real_cpu, wfcpw->nrxx); + delete[] psi_mq_real_cpu; + } + else + { + ModuleBase::WARNING_QUIT("OperatorEXXPW", "construct_ace: unknown device"); + } +#endif +#endif + for (int n_iband = 0; n_iband < nbands; n_iband++) + { + const T* psi_nk = tmpsi_in + n_iband * nbasis; + // retrieve \psi_nk in real space + wfcpw->recip_to_real(ctx, psi_nk, psi_nk_real, this->ik); + + + // direct multiplication in real space, \psi_nk(r) * \psi_mq(r) + cal_density_recip(psi_nk_real, psi_mq_real, ucell->omega); + + mul_potential_op()(pot, density_recip, rhopw_dev->npw, wfcpw->nks, this->ik, iq); + + // bring the potential back to real space + rho_recip2real(density_recip, density_real); + + if (false) + { + // do nothing + } + else + { + vec_mul_vec_complex_op()(density_real, psi_mq_real, density_real, wfcpw->nrxx); + } + + + Real wk_iq = kv->wk[iq]; + Real wk_ik = kv->wk[this->ik]; + + Real tmp_scalar = wg_mqb / wk_ik / nqs; // wk_ik works for now, but wrong for symmetry. + + T* h_psi_nk = tmhpsi + n_iband * nbasis; + Real hybrid_alpha = GlobalC::exx_info.info_global.hybrid_alpha; + wfcpw->real_to_recip(ctx, density_real, h_psi_nk, this->ik, true, hybrid_alpha * tmp_scalar); + + + } // end of m_iband + setmem_complex_op()(density_real, 0, rhopw_dev->nrxx); + setmem_complex_op()(density_recip, 0, rhopw_dev->npw); + setmem_complex_op()(psi_mq_real, 0, wfcpw->nrxx); + + } // end of iq + + } + + ModuleBase::timer::tick("OperatorEXXPW", "act_op_kpar"); + +} + +template +std::vector OperatorEXXPW::get_q_points(const int ik) const +{ + // stored in q_points + if (q_points.find(ik) != q_points.end()) + { + return q_points.find(ik)->second; + } + + std::vector q_points_ik; + + // if () // downsampling + { + for (int iq = 0; iq < wfcpw->nks; iq++) + { + if (PARAM.inp.nspin ==1 ) + { + q_points_ik.push_back(iq); + } + else if (PARAM.inp.nspin == 2) + { + int nk_fac = 2; + int nk = wfcpw->nks / nk_fac; + if (iq / nk == ik / nk) + { + q_points_ik.push_back(iq); + } + } + else + { + ModuleBase::WARNING_QUIT("OperatorEXXPW", "nspin == 4 not supported"); + } + } + } + // else + // { + // for (int iq = 0; iq < wfcpw->nks; iq++) + // { + // kv-> + // } + // } + + q_points[ik] = q_points_ik; + return q_points_ik; +} + +template +void OperatorEXXPW::multiply_potential(T *density_recip, int ik, int iq) const +{ + ModuleBase::timer::tick("OperatorEXXPW", "multiply_potential"); + int npw = rhopw_dev->npw; + int nks = wfcpw->nks; + int nk_fac = PARAM.inp.nspin == 2 ? 2 : 1; + int nk = nks / nk_fac; + + mul_potential_op()(pot, density_recip, npw, nks, ik, iq); + + ModuleBase::timer::tick("OperatorEXXPW", "multiply_potential"); +} + +template +const T *OperatorEXXPW::get_pw(const int m, const int iq) const +{ + // return pws[iq].get() + m * wfcpw->npwk[iq]; + psi.fix_kb(iq, m); + T* psi_mq = psi.get_pointer(); + return psi_mq; +} + +template +template +OperatorEXXPW::OperatorEXXPW(const OperatorEXXPW *op) +{ + // copy all the datas + this->isk = op->isk; + this->wfcpw = op->wfcpw; + this->rhopw = op->rhopw; + this->rhopw_dev = op->rhopw_dev; + this->psi = op->psi; + this->ctx = op->ctx; + this->cpu_ctx = op->cpu_ctx; + resmem_complex_op()(this->ctx, psi_nk_real, wfcpw->nrxx); + resmem_complex_op()(this->ctx, psi_mq_real, wfcpw->nrxx); + resmem_complex_op()(this->ctx, density_real, rhopw_dev->nrxx); + resmem_complex_op()(this->ctx, h_psi_real, rhopw_dev->nrxx); + resmem_complex_op()(this->ctx, density_recip, rhopw_dev->npw); + resmem_complex_op()(this->ctx, h_psi_recip, wfcpw->npwk_max); +// this->pws.resize(wfcpw->nks); + + +} + +template +double OperatorEXXPW::cal_exx_energy(psi::Psi *psi_) const +{ + if (PARAM.inp.exxace && GlobalC::exx_info.info_global.separate_loop) + { + return cal_exx_energy_ace(psi_); + } + else + { + return cal_exx_energy_op(psi_); + } +} + +template +double OperatorEXXPW::cal_exx_energy_op(psi::Psi *ppsi_) const +{ + psi::Psi psi_ = *ppsi_; + + using setmem_complex_op = base_device::memory::set_memory_op; + using delmem_complex_op = base_device::memory::delete_memory_op; + setmem_complex_op()(psi_nk_real, 0, wfcpw->nrxx); + setmem_complex_op()(psi_mq_real, 0, wfcpw->nrxx); + setmem_complex_op()(h_psi_recip, 0, wfcpw->npwk_max); + setmem_complex_op()(h_psi_real, 0, rhopw_dev->nrxx); + setmem_complex_op()(density_real, 0, rhopw_dev->nrxx); + setmem_complex_op()(density_recip, 0, rhopw_dev->npw); + + if (wg == nullptr) return 0.0; + const int nk_fac = PARAM.inp.nspin == 2 ? 2 : 1; + double Eexx_ik_real = 0.0; + for (int ik = 0; ik < wfcpw->nks; ik++) + { + // auto k = this->pw_wfc->kvec_c[ik]; + // std::cout << k << std::endl; + for (int n_iband = 0; n_iband < psi.get_nbands(); n_iband++) + { + setmem_complex_op()(h_psi_recip, 0, wfcpw->npwk_max); + setmem_complex_op()(h_psi_real, 0, rhopw_dev->nrxx); + setmem_complex_op()(density_real, 0, rhopw_dev->nrxx); + setmem_complex_op()(density_recip, 0, rhopw_dev->npw); + + // double wg_ikb_real = GlobalC::exx_helper.wg(this->ik, n_iband); + double wg_ikb_real = (*wg)(ik, n_iband); + T wg_ikb = wg_ikb_real; + if (wg_ikb_real < 1e-12) + { + continue; + } + + // const T *psi_nk = get_pw(n_iband, ik); + psi.fix_kb(ik, n_iband); + const T* psi_nk = psi.get_pointer(); + // retrieve \psi_nk in real space + wfcpw->recip_to_real(ctx, psi_nk, psi_nk_real, ik); + + // for \psi_nk, get the pw of iq and band m + // q_points is a vector of integers, 0 to nks-1 + std::vector q_points; + if (PARAM.inp.nspin == 1) + { + for (int iq = 0; iq < wfcpw->nks; iq++) + { + q_points.push_back(iq); + } + } + else if (PARAM.inp.nspin == 2) + { + int nk = wfcpw->nks / nk_fac; + int k_spin = ik / nk; + for (int iq = 0; iq < wfcpw->nks; iq++) + { + int q_spin = iq / nk; + if (k_spin == q_spin) + { + q_points.push_back(iq); + } + } + } + else + { + ModuleBase::WARNING_QUIT("OperatorEXXPW", "nspin == 4 not supported"); + } + double nqs = q_points.size(); + + for (int iq: q_points) + { + int nk = wfcpw->nks / nk_fac; + get_exx_potential(kv, wfcpw, rhopw_dev, pot, tpiba, gamma_extrapolation, ucell->omega, ik, iq % nk); + for (int m_iband = 0; m_iband < psi.get_nbands(); m_iband++) + { + // double wg_f = GlobalC::exx_helper.wg(iq, m_iband); + double wg_iqb_real = (*wg)(iq, m_iband); + T wg_iqb = wg_iqb_real; + if (wg_iqb_real < 1e-12) + { + continue; + } + + psi_.fix_kb(iq, m_iband); + const T* psi_mq = psi_.get_pointer(); + // const T* psi_mq = get_pw(m_iband, iq); + wfcpw->recip_to_real(ctx, psi_mq, psi_mq_real, iq); + + cal_density_recip(psi_nk_real, psi_mq_real, ucell->omega); + + int nks = wfcpw->nks; + int npw = rhopw_dev->npw; + // int nk = nks / nk_fac; + Eexx_ik_real += exx_cal_energy_op()(density_recip, pot, wg_iqb_real / nqs * wg_ikb_real / kv->wk[ik], npw); + + } // m_iband + + } // iq + + } // n_iband + + } // ik + Eexx_ik_real *= 0.5 * ucell->omega; + Parallel_Reduce::reduce_pool(Eexx_ik_real); + // std::cout << "omega = " << this_->pelec->omega << " tpiba = " << this_->pw_rho->tpiba2 << " exx_div = " << exx_div << std::endl; + + setmem_complex_op()(psi_nk_real, 0, wfcpw->nrxx); + setmem_complex_op()(psi_mq_real, 0, wfcpw->nrxx); + setmem_complex_op()(h_psi_recip, 0, wfcpw->npwk_max); + setmem_complex_op()(h_psi_real, 0, rhopw_dev->nrxx); + setmem_complex_op()(density_real, 0, rhopw_dev->nrxx); + setmem_complex_op()(density_recip, 0, rhopw_dev->npw); + + return Eexx_ik_real; +} + +template <> +void OperatorEXXPW, base_device::DEVICE_CPU>::cal_density_recip(const std::complex* psi_nk_real, + const std::complex* psi_mq_real, + double omega) const +{ + cal_density_real_op, base_device::DEVICE_CPU>()(psi_nk_real, psi_mq_real, density_real, omega, wfcpw->nrxx); + rhopw_dev->real2recip(density_real, density_recip); +} + +template <> +void OperatorEXXPW, base_device::DEVICE_CPU>::cal_density_recip(const std::complex* psi_nk_real, + const std::complex* psi_mq_real, + double omega) const +{ + cal_density_real_op, base_device::DEVICE_CPU>()(psi_nk_real, psi_mq_real, density_real, omega, wfcpw->nrxx); + rhopw_dev->real2recip(density_real, density_recip); +} + +template <> +void OperatorEXXPW, base_device::DEVICE_CPU>::rho_recip2real(const std::complex* rho_recip, + std::complex* rho_real, + bool add, + double factor) const +{ + rhopw_dev->recip2real(rho_recip, rho_real, add, factor); +} + +template <> +void OperatorEXXPW, base_device::DEVICE_CPU>::rho_recip2real(const std::complex* rho_recip, + std::complex* rho_real, + bool add, + float factor) const +{ + rhopw_dev->recip2real(rho_recip, rho_real, add, factor); +} + +template class OperatorEXXPW, base_device::DEVICE_CPU>; +template class OperatorEXXPW, base_device::DEVICE_CPU>; +#if ((defined __CUDA) || (defined __ROCM)) +template class OperatorEXXPW, base_device::DEVICE_GPU>; +template class OperatorEXXPW, base_device::DEVICE_GPU>; + +template <> +void OperatorEXXPW, base_device::DEVICE_GPU>::cal_density_recip(const std::complex* psi_nk_real, + const std::complex* psi_mq_real, + double omega) const +{ + cal_density_real_op, base_device::DEVICE_GPU>()(psi_nk_real, psi_mq_real, density_real, omega, wfcpw->nrxx); + rhopw_dev->real2recip_gpu(density_real, density_recip); +} + +template <> +void OperatorEXXPW, base_device::DEVICE_GPU>::cal_density_recip(const std::complex* psi_nk_real, + const std::complex* psi_mq_real, + double omega) const +{ + cal_density_real_op, base_device::DEVICE_GPU>()(psi_nk_real, psi_mq_real, density_real, omega, wfcpw->nrxx); + rhopw_dev->real2recip_gpu(density_real, density_recip); +} + +template <> +void OperatorEXXPW, base_device::DEVICE_GPU>::rho_recip2real(const std::complex* rho_recip, + std::complex* rho_real, + bool add, + double factor) const +{ + rhopw_dev->recip2real_gpu(rho_recip, rho_real, add, factor); +} + +template <> +void OperatorEXXPW, base_device::DEVICE_GPU>::rho_recip2real(const std::complex* rho_recip, + std::complex* rho_real, + bool add, + float factor) const +{ + rhopw_dev->recip2real_gpu(rho_recip, rho_real, add, factor); +} + +#endif + +} // namespace hamilt diff --git a/source/source_pw/module_pwdft/op_pw_exx.h b/source/source_pw/module_pwdft/op_pw_exx.h new file mode 100644 index 0000000000..0329de8477 --- /dev/null +++ b/source/source_pw/module_pwdft/op_pw_exx.h @@ -0,0 +1,206 @@ +#ifndef OPEXXPW_H +#define OPEXXPW_H + +#include "op_pw.h" +#include "source_base/kernels/math_kernel_op.h" +#include "source_base/macros.h" +#include "source_base/matrix.h" +#include "source_basis/module_pw/pw_basis.h" +#include "source_basis/module_pw/pw_basis_k.h" +#include "source_cell/klist.h" +#include "source_lcao/module_ri/conv_coulomb_pot_k.h" +#include "source_psi/psi.h" +#include "source_base/module_container/ATen/kernels/lapack.h" + +#include +#include +#include + +namespace hamilt +{ + +template +class OperatorEXXPW : public OperatorPW +{ + private: + using Real = typename GetTypeReal::type; + + public: + OperatorEXXPW(const int* isk_in, + const ModulePW::PW_Basis_K* wfcpw_in, + const ModulePW::PW_Basis* rhopw_in, + K_Vectors* kv_in, + const UnitCell* ucell); + + template + explicit OperatorEXXPW(const OperatorEXXPW *op_exx); + + virtual ~OperatorEXXPW(); + + virtual void act(const int nbands, + const int nbasis, + const int npol, + const T *tmpsi_in, + T *tmhpsi, + const int ngk_ik = 0, + const bool is_first_node = false) const override; + + double cal_exx_energy(psi::Psi *psi_) const; + + void set_psi(psi::Psi &psi_in) const { psi = psi_in; } + + void set_wg(const ModuleBase::matrix *wg_in) { wg = wg_in; } + + void construct_ace() const; + + bool first_iter = true; + + static std::vector fock_div, erfc_div; + + private: + const int* isk = nullptr; + const ModulePW::PW_Basis_K* wfcpw = nullptr; + const ModulePW::PW_Basis* rhopw = nullptr; + ModulePW::PW_Basis* rhopw_dev = nullptr; // for device + const UnitCell *ucell = nullptr; + Real tpiba = 0; + + std::vector get_q_points(const int ik) const; + const T *get_pw(const int m, const int iq) const; + + void multiply_potential(T *density_recip, int ik, int iq) const; + + void act_op(const int nbands, + const int nbasis, + const int npol, + const T *tmpsi_in, + T *tmhpsi, + const int ngk_ik = 0, + const bool is_first_node = false) const; + + void act_op_kpar(const int nbands, + const int nbasis, + const int npol, + const T *tmpsi_in, + T *tmhpsi, + const int ngk_ik = 0, + const bool is_first_node = false) const; + + void act_op_ace(const int nbands, + const int nbasis, + const int npol, + const T *tmpsi_in, + T *tmhpsi, + const int ngk_ik = 0, + const bool is_first_node = false) const; + + double cal_exx_energy_op(psi::Psi *psi_) const; + + double cal_exx_energy_ace(psi::Psi *psi_) const; + + void cal_density_recip(const T* psi_nk_real, const T* psi_mq_real, double omega) const; + + void rho_recip2real(const T* rho_recip, T* rho_real, bool add = false, Real factor = 1.0) const; + + mutable int cnt = 0; + + mutable bool potential_got = false; + + // pws +// mutable std::vector> pws; + + // k vectors + K_Vectors *kv = nullptr; + + // psi + mutable psi::Psi psi; + const ModuleBase::matrix* wg; + + // real space memory + T *psi_nk_real = nullptr; + T *psi_mq_real = nullptr; + T *density_real = nullptr; + T *h_psi_real = nullptr; + // density recip space memory + T *density_recip = nullptr; + // h_psi recip space memory + T *h_psi_recip = nullptr; + Real *pot = nullptr; + + // Lin Lin's ACE memory, 10.1021/acs.jctc.6b00092 + mutable T* h_psi_ace = nullptr; // H \Psi, W in the paper + mutable T* psi_h_psi_ace = nullptr; // \Psi^{\dagger} H \Psi, M in the paper + mutable T* L_ace = nullptr; // cholesky(-M).L, L in the paper + mutable std::vector Xi_ace_k; // L^{-1} (H \Psi)^{\dagger}, \Xi in the paper +// mutable T* Xi_ace = nullptr; // L^{-1} (H \Psi)^{\dagger}, \Xi in the paper + + mutable std::map> q_points; + + // occupational number + const ModuleBase::matrix *p_wg; + +// mutable bool update_psi = false; + + Device *ctx = {}; + base_device::DEVICE_CPU* cpu_ctx = {}; + base_device::AbacusDevice_t device = {}; + + using ct_Device = typename ct::PsiToContainer::type; + using setmem_complex_op = base_device::memory::set_memory_op; + using setmem_real_op = base_device::memory::set_memory_op; + using setmem_real_cpu_op = base_device::memory::set_memory_op; + using resmem_complex_op = base_device::memory::resize_memory_op; + using delmem_complex_op = base_device::memory::delete_memory_op; + using syncmem_complex_op = base_device::memory::synchronize_memory_op; + using resmem_real_op = base_device::memory::resize_memory_op; + using delmem_real_op = base_device::memory::delete_memory_op; + using gemm_complex_op = ModuleBase::gemm_op; + using axpy_complex_op = ModuleBase::axpy_op; + using vec_add_vec_complex_op = ModuleBase::vector_add_vector_op; + using dot_op = ModuleBase::dot_real_op; + using syncmem_complex_c2d_op = base_device::memory::synchronize_memory_op; + using syncmem_complex_d2c_op = base_device::memory::synchronize_memory_op; + using syncmem_real_c2d_op = base_device::memory::synchronize_memory_op; + using syncmem_real_d2c_op = base_device::memory::synchronize_memory_op; + using lapack_potrf = container::kernels::lapack_potrf; + using lapack_trtri = container::kernels::lapack_trtri; + + bool gamma_extrapolation = true; + +}; + +template +void get_exx_potential(const K_Vectors* kv, + const ModulePW::PW_Basis_K* wfcpw, + ModulePW::PW_Basis* rhopw_dev, + Real* pot, + double tpiba, + bool gamma_extrapolation, + double ucell_omega, + int ik, + int iq, + bool is_stress = false); + +template +void get_exx_stress_potential(const K_Vectors* kv, + const ModulePW::PW_Basis_K* wfcpw, + ModulePW::PW_Basis* rhopw_dev, + Real* pot, + double tpiba, + bool gamma_extrapolation, + double ucell_omega, + int ik, + int iq); + +double exx_divergence(Conv_Coulomb_Pot_K::Coulomb_Type coulomb_type, + double erfc_omega, + const K_Vectors* kv, + const ModulePW::PW_Basis_K* wfcpw, + ModulePW::PW_Basis* rhopw_dev, + double tpiba, + bool gamma_extrapolation, + double ucell_omega); + +} // namespace hamilt + +#endif // OPEXXPW_H \ No newline at end of file diff --git a/source/source_pw/module_pwdft/op_pw_exx_ace.cpp b/source/source_pw/module_pwdft/op_pw_exx_ace.cpp new file mode 100644 index 0000000000..3fdef6cb00 --- /dev/null +++ b/source/source_pw/module_pwdft/op_pw_exx_ace.cpp @@ -0,0 +1,346 @@ +#include "op_pw_exx.h" +#include "source_base/parallel_comm.h" +#include "source_io/module_parameter/parameter.h" +#include "source_hamilt/module_xc/exx_info.h" + +namespace hamilt +{ +template +void OperatorEXXPW::act_op_ace(const int nbands, + const int nbasis, + const int npol, + const T *tmpsi_in, + T *tmhpsi, + const int ngk_ik, + const bool is_first_node) const +{ + ModuleBase::timer::tick("OperatorEXXPW", "act_op_ace"); + // std::cout << "act_op_ace" << std::endl; + // hpsi += -Xi^\dagger * Xi * psi + T* Xi_ace = Xi_ace_k[this->ik]; + int nbands_tot = psi.get_nbands(); + int nbasis_max = psi.get_nbasis(); + // T* hpsi = nullptr; + // resmem_complex_op()(hpsi, nbands_tot * nbasis); + // setmem_complex_op()(hpsi, 0, nbands_tot * nbasis); + T* Xi_psi = nullptr; + resmem_complex_op()(Xi_psi, nbands_tot * nbands); + setmem_complex_op()(Xi_psi, 0, nbands_tot * nbands); + + char trans_N = 'N', trans_T = 'T', trans_C = 'C'; + T intermediate_one = 1.0, intermediate_zero = 0.0, intermediate_minus_one = -1.0; + // Xi * psi + gemm_complex_op()(trans_N, + trans_N, + nbands_tot, + nbands, + nbasis, + &intermediate_one, + Xi_ace, + nbands_tot, + tmpsi_in, + nbasis, + &intermediate_zero, + Xi_psi, + nbands_tot + ); + + Parallel_Reduce::reduce_pool(Xi_psi, nbands_tot * nbands); + + // Xi^\dagger * (Xi * psi) + gemm_complex_op()(trans_C, + trans_N, + nbasis, + nbands, + nbands_tot, + &intermediate_minus_one, + Xi_ace, + nbands_tot, + Xi_psi, + nbands_tot, + &intermediate_one, + tmhpsi, + nbasis + ); + + delmem_complex_op()(Xi_psi); + ModuleBase::timer::tick("OperatorEXXPW", "act_op_ace"); + +} + +template +void OperatorEXXPW::construct_ace() const +{ + int nbands = psi.get_nbands(); + int nbasis = psi.get_nbasis(); + int nk = psi.get_nk(); + + int* ik_ = const_cast(&this->ik); + int ik_save = this->ik; + + T intermediate_one = 1.0, intermediate_zero = 0.0; + + if (h_psi_ace == nullptr) + { + resmem_complex_op()(h_psi_ace, nbands * nbasis); + setmem_complex_op()(h_psi_ace, 0, nbands * nbasis); + } + + if (Xi_ace_k.size() != nk) + { + Xi_ace_k.resize(nk); + for (int i = 0; i < nk; i++) + { + resmem_complex_op()(Xi_ace_k[i], nbands * nbasis); + } + } + + for (int i = 0; i < nk; i++) + { + setmem_complex_op()(Xi_ace_k[i], 0, nbands * nbasis); + } + + if (L_ace == nullptr) + { + resmem_complex_op()(L_ace, nbands * nbands); + setmem_complex_op()(L_ace, 0, nbands * nbands); + } + + if (psi_h_psi_ace == nullptr) + { + resmem_complex_op()(psi_h_psi_ace, nbands * nbands); + } + + if (first_iter) return; + ModuleBase::timer::tick("OperatorEXXPW", "construct_ace"); + + int nk_max = kv->para_k.get_max_nks_pool(); + int nspin_fac = PARAM.inp.nspin == 2 ? 2 : 1; + for (int ispin = 0; ispin < nspin_fac; ispin++) + { + for (int ik0 = 0; ik0 < nk_max; ik0++) + { + int ik = ik0 + ispin * wfcpw->nks / nspin_fac; + // printf("ik: %d\n", ik); + int npwk = wfcpw->npwk[ik]; + + T* Xi_ace = Xi_ace_k[ik]; + psi.fix_kb(ik, 0); + T* p_psi = psi.get_pointer(); + + setmem_complex_op()(h_psi_ace, 0, nbands * nbasis); + + setmem_complex_op()(h_psi_recip, 0, wfcpw->npwk_max); + setmem_complex_op()(h_psi_real, 0, rhopw_dev->nrxx); + setmem_complex_op()(density_real, 0, rhopw_dev->nrxx); + setmem_complex_op()(density_recip, 0, rhopw_dev->npw); + setmem_complex_op()(psi_nk_real, 0, wfcpw->nrxx); + setmem_complex_op()(psi_mq_real, 0, wfcpw->nrxx); + int nqs = kv->get_nkstot_full(); + + bool skip_ik = false; + if (ik >= wfcpw->nks) + { + skip_ik = true; + } + if (skip_ik) + { + // ik fixed here, select band n + for (int iq0 = 0; iq0 < nqs; iq0++) + { + // For nspin=2, iq should be in the same spin channel as ik + int iq = 0; + + int nk = wfcpw->nks / 2; + iq = iq0 + ispin * nk; // iq in the same spin channel + + // for \psi_nk, get the pw of iq and band m + get_exx_potential(kv, wfcpw, rhopw_dev, pot, tpiba, gamma_extrapolation, ucell->omega, ik, iq); + + // decide which pool does the iq belong to + int iq_pool = kv->para_k.whichpool[iq0]; + int iq_loc = iq - kv->para_k.startk_pool[iq_pool]; + + for (int m_iband = 0; m_iband < psi.get_nbands(); m_iband++) + { + double wg_mqb = 0; + if (iq_pool == GlobalV::MY_POOL) + { + wg_mqb = (*wg)(iq_loc, m_iband); + } +#ifdef __MPI + MPI_Bcast(&wg_mqb, 1, MPI_DOUBLE, kv->para_k.get_startpro_pool(iq_pool), MPI_COMM_WORLD); +#endif + if (wg_mqb < 1e-12) + continue; + + if (iq_pool == GlobalV::MY_POOL) + { + const T* psi_mq = get_pw(m_iband, iq_loc); + wfcpw->recip_to_real(ctx, psi_mq, psi_mq_real, iq_loc); + // send + } + // if (iq == 0) + // std::cout << "Bcast psi_mq_real" << std::endl; +#ifdef __MPI +#ifdef __CUDA_MPI + MPI_Bcast(psi_mq_real, wfcpw->nrxx, MPI_DOUBLE_COMPLEX, iq_pool, KP_WORLD); +#else + if (PARAM.inp.device == "cpu") + { + MPI_Bcast(psi_mq_real, wfcpw->nrxx, MPI_DOUBLE_COMPLEX, iq_pool, KP_WORLD); + } + else if (PARAM.inp.device == "gpu") + { + // need to copy to cpu first + T* psi_mq_real_cpu = new T[wfcpw->nrxx]; + syncmem_complex_d2c_op()(psi_mq_real_cpu, psi_mq_real, wfcpw->nrxx); + MPI_Bcast(psi_mq_real_cpu, wfcpw->nrxx, MPI_DOUBLE_COMPLEX, iq_pool, KP_WORLD); + syncmem_complex_c2d_op()(psi_mq_real, psi_mq_real_cpu, wfcpw->nrxx); + delete[] psi_mq_real_cpu; + } + else + { + ModuleBase::WARNING_QUIT("OperatorEXXPW", "construct_ace: unknown device"); + } +#endif +#endif + + } // end of iq + + } + } + else + { + *ik_ = ik; + act_op_kpar(nbands, nbasis, 1, p_psi, h_psi_ace, nbasis, false); + // psi_h_psi_ace = psi^\dagger * h_psi_ace + // p_exx_helper->psi.fix_kb(0, 0); + gemm_complex_op()('C', + 'N', + nbands, + nbands, + npwk, + &intermediate_one, + p_psi, + nbasis, + h_psi_ace, + nbasis, + &intermediate_zero, + psi_h_psi_ace, + nbands); + + // reduction of psi_h_psi_ace, due to distributed memory + Parallel_Reduce::reduce_pool(psi_h_psi_ace, nbands * nbands); + + T intermediate_minus_one = -1.0; + axpy_complex_op()(nbands * nbands, + &intermediate_minus_one, + psi_h_psi_ace, + 1, + L_ace, + 1); + + + int info = 0; + char up = 'U', lo = 'L'; + + // for (int i = 0; i < nbands; ++i) + // { + // for (int j = 0; j < nbands; ++j) + // { + // // std::cout << L_ace[i * nbands + j]. << " "; + // if (L_ace[i * nbands + j].imag() >= 0.0) + // { + // std::cout << L_ace[i * nbands + j].real() << "+" << L_ace[i * nbands + j].imag() << "im "; + // } + // else + // { + // std::cout << L_ace[i * nbands + j].real() << L_ace[i * nbands + j].imag() << "im "; + // } + // } + // std::cout << ";" << std::endl; + // } + // MPI_Barrier(MPI_COMM_WORLD); + // MPI_Abort(MPI_COMM_WORLD, 0); + + lapack_potrf()(lo, nbands, L_ace, nbands); + + // expand for-loop + for (int i = 0; i < nbands; ++i) { + setmem_complex_op()(L_ace + i * nbands, 0, i); + } + + // L_ace inv in place + char non = 'N'; + lapack_trtri()(lo, non, nbands, L_ace, nbands); + + // Xi_ace = L_ace^-1 * h_psi_ace^dagger + gemm_complex_op()('N', + 'C', + nbands, + npwk, + nbands, + &intermediate_one, + L_ace, + nbands, + h_psi_ace, + nbasis, + &intermediate_zero, + Xi_ace, + nbands); + + // clear mem + setmem_complex_op()(h_psi_ace, 0, nbands * nbasis); + setmem_complex_op()(psi_h_psi_ace, 0, nbands * nbands); + setmem_complex_op()(L_ace, 0, nbands * nbands); + } + } + } + + *ik_ = ik_save; + + ModuleBase::timer::tick("OperatorEXXPW", "construct_ace"); + +} + +template +double OperatorEXXPW::cal_exx_energy_ace(psi::Psi* ppsi_) const +{ + double Eexx = 0; + int nspin_fac = PARAM.inp.nspin == 2 ? 2 : 1; + psi::Psi psi_ = *ppsi_; + int* ik_ = const_cast(&this->ik); + int ik_save = this->ik; + Real hybrid_alpha = GlobalC::exx_info.info_global.hybrid_alpha; + for (int i = 0; i < wfcpw->nks; i++) + { + setmem_complex_op()(h_psi_ace, 0, psi_.get_nbands() * psi_.get_nbasis()); + *ik_ = i; + psi_.fix_kb(i, 0); + T* psi_i = psi_.get_pointer(); + act_op_ace(psi_.get_nbands(), psi_.get_nbasis(), 1, psi_i, h_psi_ace, 0, true); + + for (int nband = 0; nband < psi_.get_nbands(); nband++) + { + psi_.fix_kb(i, nband); + T* psi_i_n = psi_.get_pointer(); + T* hpsi_i_n = h_psi_ace + nband * psi_.get_nbasis(); + double wg_i_n = (*wg)(i, nband); + // Eexx += dot(psi_i_n, h_psi_i_n) + Eexx += dot_op()(psi_.get_nbasis(), psi_i_n, hpsi_i_n, false) * wg_i_n; + } + } + + Parallel_Reduce::reduce_all(Eexx); + *ik_ = ik_save; + Eexx = Eexx / hybrid_alpha / 2; // This factor of 2 is from the definition of EXX energy. + return Eexx; +} +template class OperatorEXXPW, base_device::DEVICE_CPU>; +template class OperatorEXXPW, base_device::DEVICE_CPU>; +#if ((defined __CUDA) || (defined __ROCM)) +template class OperatorEXXPW, base_device::DEVICE_GPU>; +template class OperatorEXXPW, base_device::DEVICE_GPU>; +#endif +} \ No newline at end of file diff --git a/source/source_pw/module_pwdft/op_pw_exx_pot.cpp b/source/source_pw/module_pwdft/op_pw_exx_pot.cpp new file mode 100644 index 0000000000..042276cd28 --- /dev/null +++ b/source/source_pw/module_pwdft/op_pw_exx_pot.cpp @@ -0,0 +1,590 @@ +#include "op_pw_exx.h" +#include "source_io/module_parameter/parameter.h" +#include "source_hamilt/module_xc/exx_info.h" // use GlobalC::exx_info + +namespace hamilt +{ +template +void get_exx_potential(const K_Vectors* kv, + const ModulePW::PW_Basis_K* wfcpw, + ModulePW::PW_Basis* rhopw_dev, + Real* pot, + double tpiba, + bool gamma_extrapolation, + double ucell_omega, + int ik, + int iq, + bool is_stress) +{ + using setmem_real_cpu_op = base_device::memory::set_memory_op; + using syncmem_real_c2d_op = base_device::memory::synchronize_memory_op; + + Real nqs_half1 = 0.5 * kv->nmp[0]; + Real nqs_half2 = 0.5 * kv->nmp[1]; + Real nqs_half3 = 0.5 * kv->nmp[2]; + + Real* pot_cpu = nullptr; + int nks = wfcpw->nks, npw = rhopw_dev->npw; + double tpiba2 = tpiba * tpiba; + pot_cpu = new Real[npw]; + // fill zero + setmem_real_cpu_op()(pot_cpu, 0, npw); + + std::vector> qvec_c, qvec_d; +#ifdef __MPI + kv->para_k.gatherkvec(kv->kvec_c, qvec_c); + kv->para_k.gatherkvec(kv->kvec_d, qvec_d); +#else + qvec_c = kv->kvec_c; + qvec_d = kv->kvec_d; +#endif + + if (ik > nks) + { + return; + } + + // calculate Fock pot + auto param_fock = GlobalC::exx_info.info_global.coulomb_param[Conv_Coulomb_Pot_K::Coulomb_Type::Fock]; + for (int i = 0; i < param_fock.size(); i++) + { + auto param = param_fock[i]; + double exx_div = OperatorEXXPW, Device>::fock_div[i]; + double alpha = std::stod(param["alpha"]); + const ModuleBase::Vector3 k_c = wfcpw->kvec_c[ik]; + const ModuleBase::Vector3 k_d = wfcpw->kvec_d[ik]; + const ModuleBase::Vector3 q_c = qvec_c[iq]; + const ModuleBase::Vector3 q_d = qvec_d[iq]; + +#ifdef _OPENMP +#pragma omp parallel for schedule(static) +#endif + for (int ig = 0; ig < rhopw_dev->npw; ig++) + { + const ModuleBase::Vector3 g_d = rhopw_dev->gdirect[ig]; + const ModuleBase::Vector3 kqg_d = k_d - q_d + g_d; + // For gamma_extrapolation (https://doi.org/10.1103/PhysRevB.79.205114) + // 7/8 of the points in the grid are "activated" and 1/8 are disabled. + // grid_factor is designed for the 7/8 of the grid to function like all of the points + Real grid_factor = 1; + double extrapolate_grid = 8.0 / 7.0; + if (gamma_extrapolation) + { + // if isint(kqg_d[0] * nqs_half1) && isint(kqg_d[1] * nqs_half2) && isint(kqg_d[2] * nqs_half3) + auto isint = [](double x) { + double epsilon = 1e-6; // this follows the isint judgement in q-e + return std::abs(x - std::round(x)) < epsilon; + }; + if (isint(kqg_d[0] * nqs_half1) && isint(kqg_d[1] * nqs_half2) && isint(kqg_d[2] * nqs_half3)) + { + grid_factor = 0; + } + else + { + grid_factor = extrapolate_grid; + } + } + + const int nk_fac = PARAM.inp.nspin == 2 ? 2 : 1; + const int nk = nks / nk_fac; + + Real gg = (k_c - q_c + rhopw_dev->gcar[ig]).norm2() * tpiba2; + // if (kqgcar2 > 1e-12) // vasp uses 1/40 of the smallest (k spacing)**2 + if (gg >= 1e-8) + { + Real fac = -ModuleBase::FOUR_PI * ModuleBase::e2 / gg; + pot_cpu[ig] += fac * grid_factor * alpha; + } + // } + else + { + pot_cpu[ig] += exx_div * alpha; + } + // assert(is_finite(density_recip[ig])); + } + } + + // calculate erfc pot + auto param_erfc = GlobalC::exx_info.info_global.coulomb_param[Conv_Coulomb_Pot_K::Coulomb_Type::Erfc]; + for (int i = 0; i < param_erfc.size(); i++) + { + auto param = param_erfc[i]; + double erfc_omega = std::stod(param["omega"]); + double erfc_omega2 = erfc_omega * erfc_omega; + double alpha = std::stod(param["alpha"]); + // double exx_div = OperatorEXXPW, Device>::erfc_div[i]; + double exx_div = exx_divergence(Conv_Coulomb_Pot_K::Coulomb_Type::Erfc, + erfc_omega, + kv, + wfcpw, + rhopw_dev, + tpiba, + gamma_extrapolation, + ucell_omega); + const ModuleBase::Vector3 k_c = wfcpw->kvec_c[ik]; + const ModuleBase::Vector3 k_d = wfcpw->kvec_d[ik]; + const ModuleBase::Vector3 q_c = qvec_c[iq]; + const ModuleBase::Vector3 q_d = qvec_d[iq]; + +#ifdef _OPENMP +#pragma omp parallel for schedule(static) +#endif + for (int ig = 0; ig < rhopw_dev->npw; ig++) + { + const ModuleBase::Vector3 g_d = rhopw_dev->gdirect[ig]; + const ModuleBase::Vector3 kqg_d = k_d - q_d + g_d; + // For gamma_extrapolation (https://doi.org/10.1103/PhysRevB.79.205114) + // 7/8 of the points in the grid are "activated" and 1/8 are disabled. + // grid_factor is designed for the 7/8 of the grid to function like all of the points + Real grid_factor = 1; + double extrapolate_grid = 8.0 / 7.0; + if (gamma_extrapolation) + { + // if isint(kqg_d[0] * nqs_half1) && isint(kqg_d[1] * nqs_half2) && isint(kqg_d[2] * nqs_half3) + auto isint = [](double x) { + double epsilon = 1e-6; // this follows the isint judgement in q-e + return std::abs(x - std::round(x)) < epsilon; + }; + if (isint(kqg_d[0] * nqs_half1) && isint(kqg_d[1] * nqs_half2) && isint(kqg_d[2] * nqs_half3)) + { + grid_factor = 0; + } + else + { + grid_factor = extrapolate_grid; + } + } + + const int nk_fac = PARAM.inp.nspin == 2 ? 2 : 1; + const int nk = nks / nk_fac; + // const int ig_kq = ik * nks * npw + iq * npw + ig; + + Real gg = (k_c - q_c + rhopw_dev->gcar[ig]).norm2() * tpiba2; + // if (ig == 0 && GlobalV::MY_RANK==1) + // { + // printf("k-q+G: %f %f %f\n", (k_c - q_c + rhopw_dev->gcar[ig])[0], (k_c - q_c + rhopw_dev->gcar[ig])[1], (k_c - q_c + rhopw_dev->gcar[ig])[2]); + // } + // if (kqgcar2 > 1e-12) // vasp uses 1/40 of the smallest (k spacing)**2 + if (gg >= 1e-8) + { + Real fac = -ModuleBase::FOUR_PI * ModuleBase::e2 / gg; + pot_cpu[ig] += fac * (1.0 - std::exp(-gg / 4.0 / erfc_omega2)) * grid_factor * alpha; + } + // } + else + { + // if (PARAM.inp.dft_functional == "hse") + if (!gamma_extrapolation) + { + if (is_stress) + pot_cpu[ig] += (- ModuleBase::PI * ModuleBase::e2 / erfc_omega2) * alpha; + else + pot_cpu[ig] += (exx_div - ModuleBase::PI * ModuleBase::e2 / erfc_omega2) * alpha; + } + else + { + pot_cpu[ig] += exx_div * alpha; + } + } + // assert(is_finite(density_recip[ig])); + } + } + + // copy the potential to the device memory +#ifdef __CUDA + cudaError_t err = cudaHostRegister(pot_cpu, sizeof(Real) * npw, cudaHostRegisterPortable); + if (err != cudaSuccess) { + throw std::runtime_error("failed to register potential CPU memory operations"); + } +#endif + syncmem_real_c2d_op()(pot, pot_cpu, rhopw_dev->npw); +#ifdef __CUDA + cudaHostUnregister(pot_cpu); +#endif + + delete pot_cpu; +} + +template +void get_exx_stress_potential(const K_Vectors* kv, + const ModulePW::PW_Basis_K* wfcpw, + ModulePW::PW_Basis* rhopw_dev, + Real* pot, + double tpiba, + bool gamma_extrapolation, + double ucell_omega, + int ik, + int iq) +{ + using setmem_real_cpu_op = base_device::memory::set_memory_op; + using syncmem_real_c2d_op = base_device::memory::synchronize_memory_op; + + Real nqs_half1 = 0.5 * kv->nmp[0]; + Real nqs_half2 = 0.5 * kv->nmp[1]; + Real nqs_half3 = 0.5 * kv->nmp[2]; + + Real* pot_cpu = nullptr; + int nks = wfcpw->nks, npw = rhopw_dev->npw; + double tpiba2 = tpiba * tpiba; + pot_cpu = new Real[npw]; + // fill zero + setmem_real_cpu_op()(pot_cpu, 0, npw); + + // calculate Fock pot + auto param_fock = GlobalC::exx_info.info_global.coulomb_param[Conv_Coulomb_Pot_K::Coulomb_Type::Fock]; + for (auto param: param_fock) + { + // double exx_div = exx_divergence(Conv_Coulomb_Pot_K::Coulomb_Type::Fock, + // 0.0, + // kv, + // wfcpw, + // rhopw_dev, + // tpiba, + // gamma_extrapolation, + // ucell_omega); + double alpha = std::stod(param["alpha"]); + + const ModuleBase::Vector3 k_c = wfcpw->kvec_c[ik]; + const ModuleBase::Vector3 k_d = wfcpw->kvec_d[ik]; + const ModuleBase::Vector3 q_c = wfcpw->kvec_c[iq]; + const ModuleBase::Vector3 q_d = wfcpw->kvec_d[iq]; + +#ifdef _OPENMP +#pragma omp parallel for schedule(static) +#endif + for (int ig = 0; ig < rhopw_dev->npw; ig++) + { + const ModuleBase::Vector3 g_d = rhopw_dev->gdirect[ig]; + const ModuleBase::Vector3 kqg_d = k_d - q_d + g_d; + // For gamma_extrapolation (https://doi.org/10.1103/PhysRevB.79.205114) + // 7/8 of the points in the grid are "activated" and 1/8 are disabled. + // grid_factor is designed for the 7/8 of the grid to function like all of the points + Real grid_factor = 1; + double extrapolate_grid = 8.0 / 7.0; + if (gamma_extrapolation) + { + // if isint(kqg_d[0] * nqs_half1) && isint(kqg_d[1] * nqs_half2) && isint(kqg_d[2] * nqs_half3) + auto isint = [](double x) { + double epsilon = 1e-6; // this follows the isint judgement in q-e + return std::abs(x - std::round(x)) < epsilon; + }; + if (isint(kqg_d[0] * nqs_half1) && isint(kqg_d[1] * nqs_half2) && isint(kqg_d[2] * nqs_half3)) + { + grid_factor = 0; + } + else + { + grid_factor = extrapolate_grid; + } + } + + const int nk_fac = PARAM.inp.nspin == 2 ? 2 : 1; + const int nk = nks / nk_fac; + // const int ig_kq = ik * nks * npw + iq * npw + ig; + + Real gg = (k_c - q_c + rhopw_dev->gcar[ig]).norm2() * tpiba2; + // if (kqgcar2 > 1e-12) // vasp uses 1/40 of the smallest (k spacing)**2 + if (gg >= 1e-8) + { + Real fac = -ModuleBase::FOUR_PI * ModuleBase::e2 / gg; + pot_cpu[ig] += 1.0 / gg * grid_factor * alpha; + } + } + } + + // calculate erfc pot + auto param_erfc = GlobalC::exx_info.info_global.coulomb_param[Conv_Coulomb_Pot_K::Coulomb_Type::Erfc]; + for (auto param: param_erfc) + { + double erfc_omega = std::stod(param["omega"]); + double erfc_omega2 = erfc_omega * erfc_omega; + double alpha = std::stod(param["alpha"]); + // double exx_div = exx_divergence(Conv_Coulomb_Pot_K::Coulomb_Type::Erfc, + // erfc_omega, + // kv, + // wfcpw, + // rhopw_dev, + // tpiba, + // gamma_extrapolation, + // ucell_omega); + + const ModuleBase::Vector3 k_c = wfcpw->kvec_c[ik]; + const ModuleBase::Vector3 k_d = wfcpw->kvec_d[ik]; + const ModuleBase::Vector3 q_c = wfcpw->kvec_c[iq]; + const ModuleBase::Vector3 q_d = wfcpw->kvec_d[iq]; + +#ifdef _OPENMP +#pragma omp parallel for schedule(static) +#endif + for (int ig = 0; ig < rhopw_dev->npw; ig++) + { + const ModuleBase::Vector3 g_d = rhopw_dev->gdirect[ig]; + const ModuleBase::Vector3 kqg_d = k_d - q_d + g_d; + // For gamma_extrapolation (https://doi.org/10.1103/PhysRevB.79.205114) + // 7/8 of the points in the grid are "activated" and 1/8 are disabled. + // grid_factor is designed for the 7/8 of the grid to function like all of the points + Real grid_factor = 1; + double extrapolate_grid = 8.0 / 7.0; + if (gamma_extrapolation) + { + // if isint(kqg_d[0] * nqs_half1) && isint(kqg_d[1] * nqs_half2) && isint(kqg_d[2] * nqs_half3) + auto isint = [](double x) { + double epsilon = 1e-6; // this follows the isint judgement in q-e + return std::abs(x - std::round(x)) < epsilon; + }; + if (isint(kqg_d[0] * nqs_half1) && isint(kqg_d[1] * nqs_half2) && isint(kqg_d[2] * nqs_half3)) + { + grid_factor = 0; + } + else + { + grid_factor = extrapolate_grid; + } + } + + const int nk_fac = PARAM.inp.nspin == 2 ? 2 : 1; + const int nk = nks / nk_fac; + // const int ig_kq = ik * nks * npw + iq * npw + ig; + + Real gg = (k_c - q_c + rhopw_dev->gcar[ig]).norm2() * tpiba2; + // if (kqgcar2 > 1e-12) // vasp uses 1/40 of the smallest (k spacing)**2 + if (gg >= 1e-8) + { + Real fac = -ModuleBase::FOUR_PI * ModuleBase::e2 / gg; + pot_cpu[ig] += (1.0 - (1.0 + gg / 4.0 / erfc_omega2) * std::exp(-gg / 4.0 / erfc_omega2)) + / (1.0 - std::exp(-gg / 4.0 / erfc_omega2)) / gg * grid_factor * alpha; + } + // } + else + { + // if (PARAM.inp.dft_functional == "hse") + if (!gamma_extrapolation) + { + pot_cpu[ig] += 1.0 / 4.0 / erfc_omega2 * alpha; + } + } + // assert(is_finite(density_recip[ig])); + } + } + + // copy the potential to the device memory +#ifdef __CUDA + cudaError_t err = cudaHostRegister(pot_cpu, sizeof(Real) * npw, cudaHostRegisterPortable); + if (err != cudaSuccess) { + throw std::runtime_error("failed to register potential CPU memory operations"); + } +#endif + syncmem_real_c2d_op()(pot, pot_cpu, rhopw_dev->npw); +#ifdef __CUDA + cudaHostUnregister(pot_cpu); +#endif + + delete pot_cpu; +} + +double exx_divergence(Conv_Coulomb_Pot_K::Coulomb_Type coulomb_type, + double erfc_omega, + const K_Vectors* kv, + const ModulePW::PW_Basis_K* wfcpw, + ModulePW::PW_Basis* rhopw_dev, + double tpiba, + bool gamma_extrapolation, + double ucell_omega) +{ + double exx_div = 0; + // return exx_div; + double nqs_half1 = 0.5 * kv->nmp[0]; + double nqs_half2 = 0.5 * kv->nmp[1]; + double nqs_half3 = 0.5 * kv->nmp[2]; + + int nk_fac = PARAM.inp.nspin == 2 ? 2 : 1; + + // here we follow the exx_divergence subroutine in q-e (PW/src/exx_base.f90) + double alpha = 10.0 / wfcpw->gk_ecut; + double tpiba2 = tpiba * tpiba; + double div = 0; + + // this is the \sum_q F(q) part + // temporarily for all k points, should be replaced to q points later + for (int ik = 0; ik < wfcpw->nks / nk_fac; ik++) + { + const ModuleBase::Vector3 k_c = wfcpw->kvec_c[ik]; + const ModuleBase::Vector3 k_d = wfcpw->kvec_d[ik]; +#ifdef _OPENMP +#pragma omp parallel for reduction(+ : div) +#endif + for (int ig = 0; ig < rhopw_dev->npw; ig++) + { + const ModuleBase::Vector3 q_c = k_c + rhopw_dev->gcar[ig]; + const ModuleBase::Vector3 q_d = k_d + rhopw_dev->gdirect[ig]; + double qq = q_c.norm2(); + // For gamma_extrapolation (https://doi.org/10.1103/PhysRevB.79.205114) + // 7/8 of the points in the grid are "activated" and 1/8 are disabled. + // grid_factor is designed for the 7/8 of the grid to function like all of the points + double grid_factor = 1; + double extrapolate_grid = 8.0 / 7.0; + if (gamma_extrapolation) + { + auto isint = [](double x) { + double epsilon = 1e-6; // this follows the isint judgement in q-e + return std::abs(x - std::round(x)) < epsilon; + }; + if (isint(q_d[0] * nqs_half1) && isint(q_d[1] * nqs_half2) && isint(q_d[2] * nqs_half3)) + { + grid_factor = 0; + } + else + { + grid_factor = extrapolate_grid; + } + } + + if (qq <= 1e-8) + continue; + // else if (PARAM.inp.dft_functional == "hse") + else if (coulomb_type == Conv_Coulomb_Pot_K::Coulomb_Type::Erfc) + { + double omega = erfc_omega; + double omega2 = omega * omega; + div += std::exp(-alpha * qq) / qq * (1.0 - std::exp(-qq * tpiba2 / 4.0 / omega2)) * grid_factor; + } + else + { + div += std::exp(-alpha * qq) / qq * grid_factor; + } + } + } + + Parallel_Reduce::reduce_all(div); + // std::cout << "EXX div: " << div << std::endl; + + // if (PARAM.inp.dft_functional == "hse") + if (!gamma_extrapolation) + { + if (coulomb_type == Conv_Coulomb_Pot_K::Coulomb_Type::Erfc) + { + double omega = erfc_omega; + div += tpiba2 / 4.0 / omega / omega; // compensate for the finite value when qq = 0 + } + else + { + div -= alpha; + } + } + + div *= ModuleBase::e2 * ModuleBase::FOUR_PI / tpiba2 / kv->get_nkstot_full(); + // std::cout << "div: " << div << std::endl; + + // numerically value the mean value of F(q) in the reciprocal space + // This means we need to calculate the average of F(q) in the first brillouin zone + alpha /= tpiba2; + int nqq = 100000; + double dq = 5.0 / std::sqrt(alpha) / nqq; + double aa = 0.0; + // if (PARAM.inp.dft_functional == "hse") + if (coulomb_type == Conv_Coulomb_Pot_K::Coulomb_Type::Erfc) + { + double omega = erfc_omega; + double omega2 = omega * omega; +#ifdef _OPENMP +#pragma omp parallel for reduction(+ : aa) +#endif + for (int i = 0; i < nqq; i++) + { + double q = dq * (i + 0.5); + aa -= exp(-alpha * q * q) * exp(-q * q / 4.0 / omega2) * dq; + } + } + aa *= 8 / ModuleBase::FOUR_PI; + aa += 1.0 / std::sqrt(alpha * ModuleBase::PI); + + div -= ModuleBase::e2 * ucell_omega * aa; + exx_div = div * kv->get_nkstot_full(); + // exx_div = 0; + // std::cout << "EXX divergence: " << exx_div << std::endl; + + return exx_div; +} +template class OperatorEXXPW, base_device::DEVICE_CPU>; +template class OperatorEXXPW, base_device::DEVICE_CPU>; +template void get_exx_potential(const K_Vectors*, + const ModulePW::PW_Basis_K*, + ModulePW::PW_Basis*, + float*, + double, + bool, + double, + int, + int, + bool); +template void get_exx_potential(const K_Vectors*, + const ModulePW::PW_Basis_K*, + ModulePW::PW_Basis*, + double*, + double, + bool, + double, + int, + int, + bool); +template void get_exx_stress_potential(const K_Vectors*, + const ModulePW::PW_Basis_K*, + ModulePW::PW_Basis*, + float*, + double, + bool, + double, + int, + int); +template void get_exx_stress_potential(const K_Vectors*, + const ModulePW::PW_Basis_K*, + ModulePW::PW_Basis*, + double*, + double, + bool, + double, + int, + int); +#if ((defined __CUDA) || (defined __ROCM)) +template class OperatorEXXPW, base_device::DEVICE_GPU>; +template class OperatorEXXPW, base_device::DEVICE_GPU>; +template void get_exx_potential(const K_Vectors*, + const ModulePW::PW_Basis_K*, + ModulePW::PW_Basis*, + float*, + double, + bool, + double, + int, + int, + bool); +template void get_exx_potential(const K_Vectors*, + const ModulePW::PW_Basis_K*, + ModulePW::PW_Basis*, + double*, + double, + bool, + double, + int, + int, + bool); +template void get_exx_stress_potential(const K_Vectors*, + const ModulePW::PW_Basis_K*, + ModulePW::PW_Basis*, + float*, + double, + bool, + double, + int, + int); +template void get_exx_stress_potential(const K_Vectors*, + const ModulePW::PW_Basis_K*, + ModulePW::PW_Basis*, + double*, + double, + bool, + double, + int, + int); +#endif +} // namespace hamilt diff --git a/source/source_pw/module_pwdft/op_pw_meta.cpp b/source/source_pw/module_pwdft/op_pw_meta.cpp new file mode 100644 index 0000000000..e0140b8641 --- /dev/null +++ b/source/source_pw/module_pwdft/op_pw_meta.cpp @@ -0,0 +1,116 @@ +#include "op_pw_meta.h" + +#include "source_base/timer.h" +#include "source_hamilt/module_xc/xc_functional.h" +#include "source_base/tool_quit.h" + +namespace hamilt { + +template +Meta>::Meta(Real tpiba_in, + const int* isk_in, + const Real* vk_in, + const int vk_row, + const int vk_col, + const ModulePW::PW_Basis_K* wfcpw_in) +{ + if(isk_in == nullptr || tpiba_in < 1e-10 || wfcpw_in == nullptr) + { + ModuleBase::WARNING_QUIT("MetaPW", "Constuctor of Operator::MetaPW is failed, please check your code!"); + } + this->classname = "Meta"; + this->cal_type = calculation_type::pw_meta; + this->isk = isk_in; + this->tpiba = tpiba_in; + this->vk = vk_in; + this->vk_row = vk_row; + this->vk_col = vk_col; + this->wfcpw = wfcpw_in; + resmem_complex_op()(this->porter, this->wfcpw->nmaxgr, "Meta::porter"); + +} + +template +Meta>::~Meta() +{ + delmem_complex_op()(this->porter); +} + +template +void Meta>::act( + const int nbands, + const int nbasis, + const int npol, + const T* tmpsi_in, + T* tmhpsi, + const int ngk_ik, + const bool is_first_node)const +{ + if (XC_Functional::get_func_type() != 3) + { + return; + } + + ModuleBase::timer::tick("Operator", "MetaPW"); + if(is_first_node) + { + setmem_complex_op()(tmhpsi, 0, nbasis*nbands/npol); + } + + const int current_spin = this->isk[this->ik]; + int max_npw = nbasis / npol; + //npol == 2 case has not been considered + + for (int ib = 0; ib < nbands; ++ib) + { + for (int j = 0; j < 3; j++) + { + meta_op()(this->ctx, this->ik, j, ngk_ik, this->wfcpw->npwk_max, this->tpiba, wfcpw->get_gcar_data(), wfcpw->get_kvec_c_data(), tmpsi_in, this->porter); + wfcpw->recip_to_real(this->ctx, this->porter, this->porter, this->ik); + + if(this->vk_col != 0) { + vector_mul_vector_op()(this->vk_col, this->porter, this->porter, this->vk + current_spin * this->vk_col); + } + + wfcpw->real_to_recip(this->ctx, this->porter, this->porter, this->ik); + meta_op()(this->ctx, this->ik, j, ngk_ik, this->wfcpw->npwk_max, this->tpiba, wfcpw->get_gcar_data(), wfcpw->get_kvec_c_data(), this->porter, tmhpsi, true); + + } // x,y,z directions + tmhpsi += max_npw; + tmpsi_in += max_npw; + } + ModuleBase::timer::tick("Operator", "MetaPW"); +} + +template +template +Meta>::Meta(const Meta> *meta) { + this->classname = "Meta"; + this->cal_type = calculation_type::pw_meta; + this->ik = meta->get_ik(); + this->isk = meta->get_isk(); + this->tpiba = meta->get_tpiba(); + this->vk = meta->get_vk(); + this->vk_row = meta->get_vk_row(); + this->vk_col = meta->get_vk_col(); + this->wfcpw = meta->get_wfcpw(); + if(this->isk == nullptr || this->tpiba < 1e-10 || this->vk == nullptr || this->wfcpw == nullptr) + { + ModuleBase::WARNING_QUIT("MetaPW", "Constuctor of Operator::MetaPW is failed, please check your code!"); + } +} + +template class Meta, base_device::DEVICE_CPU>>; +template class Meta, base_device::DEVICE_CPU>>; +// template Meta, base_device::DEVICE_CPU>>::Meta(const +// Meta, base_device::DEVICE_CPU>> *meta); +#if ((defined __CUDA) || (defined __ROCM)) +template class Meta, base_device::DEVICE_GPU>>; +template class Meta, base_device::DEVICE_GPU>>; +// template Meta, base_device::DEVICE_CPU>>::Meta(const +// Meta, base_device::DEVICE_GPU>> *meta); template +// Meta, base_device::DEVICE_GPU>>::Meta(const Meta, +// base_device::DEVICE_CPU>> *meta); template Meta, +// base_device::DEVICE_GPU>>::Meta(const Meta, base_device::DEVICE_GPU>> *meta); +#endif +} // namespace hamilt diff --git a/source/source_pw/module_pwdft/op_pw_meta.h b/source/source_pw/module_pwdft/op_pw_meta.h new file mode 100644 index 0000000000..84a8f322a7 --- /dev/null +++ b/source/source_pw/module_pwdft/op_pw_meta.h @@ -0,0 +1,92 @@ +#ifndef METAPW_H +#define METAPW_H + +#include "op_pw.h" +#include "source_base/matrix.h" +#include "source_basis/module_pw/pw_basis_k.h" +#include "source_pw/module_pwdft/kernels/meta_op.h" +#include "source_base/kernels/math_kernel_op.h" + +#include + +namespace hamilt { + +#ifndef __METATEMPLATE +#define __METATEMPLATE + +template class Meta : public T {}; +// template +// class Meta : public OperatorPW {}; + +#endif + +template +class Meta> : public OperatorPW +{ + private: + using Real = typename GetTypeReal::type; + public: + Meta(Real tpiba2_in, + const int* isk_in, + const Real* vk_in, + const int vk_row, + const int vk_col, + const ModulePW::PW_Basis_K* wfcpw); + + template + explicit Meta(const Meta>* meta); + + virtual ~Meta(); + + virtual void act(const int nbands, + const int nbasis, + const int npol, + const T* tmpsi_in, + T* tmhpsi, + const int ngk_ik = 0, + const bool is_first_node = false)const override; + + // denghui added for copy constructor at 20221105 + Real get_tpiba() const + { + return this->tpiba; + } + const int * get_isk() const {return this->isk;} + const Real* get_vk() const {return this->vk;} + int get_vk_row() const {return this->vk_row;} + int get_vk_col() const {return this->vk_col;} + const ModulePW::PW_Basis_K* get_wfcpw() const + { + return this->wfcpw; + } + + private: + + mutable int max_npw = 0; + + mutable int npol = 0; + + mutable int vk_row = 0; + mutable int vk_col = 0; + + Real tpiba = 0.0; + + const int* isk = nullptr; + + const Real * vk = nullptr; + + const ModulePW::PW_Basis_K* wfcpw = nullptr; + + Device* ctx = {}; + base_device::DEVICE_CPU* cpu_ctx = {}; + T *porter = nullptr; + using meta_op = meta_pw_op; + using vector_mul_vector_op = ModuleBase::vector_mul_vector_op; + using resmem_complex_op = base_device::memory::resize_memory_op; + using delmem_complex_op = base_device::memory::delete_memory_op; + using setmem_complex_op = base_device::memory::set_memory_op; +}; + +} // namespace hamilt + +#endif \ No newline at end of file diff --git a/source/source_pw/module_pwdft/op_pw_nl.cpp b/source/source_pw/module_pwdft/op_pw_nl.cpp new file mode 100644 index 0000000000..c757c4f7a2 --- /dev/null +++ b/source/source_pw/module_pwdft/op_pw_nl.cpp @@ -0,0 +1,329 @@ +#include "op_pw_nl.h" + +#include "source_io/module_parameter/parameter.h" +#include "source_base/timer.h" +#include "source_base/parallel_reduce.h" +#include "source_base/tool_quit.h" + + +namespace hamilt { + +template +Nonlocal>::Nonlocal(const int* isk_in, + const pseudopot_cell_vnl* ppcell_in, + const UnitCell* ucell_in, + const ModulePW::PW_Basis_K* wfc_basis) +{ + if( isk_in == nullptr || ppcell_in == nullptr || ucell_in == nullptr) + { + ModuleBase::WARNING_QUIT("NonlocalPW", "Constuctor of Operator::NonlocalPW is failed, please check your code!"); + } + this->classname = "Nonlocal"; + this->cal_type = calculation_type::pw_nonlocal; + this->wfcpw = wfc_basis; + this->isk = isk_in; + this->ppcell = ppcell_in; + this->ucell = ucell_in; + this->deeq = this->ppcell->template get_deeq_data(); + this->deeq_nc = this->ppcell->template get_deeq_nc_data(); + this->vkb = this->ppcell->template get_vkb_data(); + +} + +template +Nonlocal>::~Nonlocal() { + delmem_complex_op()(this->ps); + delmem_complex_op()(this->becp); +} + +template +void Nonlocal>::init(const int ik_in) +{ + ModuleBase::timer::tick("Nonlocal", "getvnl"); + this->ik = ik_in; + // Calculate nonlocal pseudopotential vkb + if(this->ppcell->nkb > 0) //xiaohui add 2013-09-02. Attention... + { + this->ppcell->getvnl(this->ctx, *this->ucell, this->ik, this->vkb); + } + + if(this->next_op != nullptr) + { + this->next_op->init(ik_in); + } + + ModuleBase::timer::tick("Nonlocal", "getvnl"); +} + +//-------------------------------------------------------------------------- +// this function sum up each non-local pseudopotential located on each atom, +//-------------------------------------------------------------------------- +template +void Nonlocal>::add_nonlocal_pp(T *hpsi_in, const T *becp, const int m) const +{ + ModuleBase::timer::tick("Nonlocal", "add_nonlocal_pp"); + + // number of projectors + int nkb = this->ppcell->nkb; + + // T *ps = new T[nkb * m]; + // ModuleBase::GlobalFunc::ZEROS(ps, m * nkb); + if (this->nkb_m < m * nkb) { + resmem_complex_op()(this->ps, nkb * m, "Nonlocal::ps"); + this->nkb_m = m * nkb; + } + setmem_complex_op()(this->ps, 0, nkb * m); + + int sum = 0; + int iat = 0; + if (this->npol == 1) + { + const int current_spin = this->isk[this->ik]; + for (int it = 0; it < this->ucell->ntype; it++) + { + const int nproj = this->ucell->atoms[it].ncpp.nh; + // denghui replace 2022-10-20 + // <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< + nonlocal_op()( + this->ctx, // device context + this->ucell->atoms[it].na, m, nproj, // four loop size + sum, iat, current_spin, nkb, // additional index params + this->ppcell->deeq.getBound2(), this->ppcell->deeq.getBound3(), this->ppcell->deeq.getBound4(), // realArray operator() + this->deeq, // array of data + this->ps, this->becp); // array of data + // <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< + // for (int ia = 0; ia < this->ucell->atoms[it].na; ia++) + // { + // // each atom has nproj, means this is with structure factor; + // // each projector (each atom) must multiply coefficient + // // with all the other projectors. + // for (int ib = 0; ib < m; ++ib) + // { + // for (int ip2 = 0; ip2 < nproj; ip2++) + // { + // for (int ip = 0; ip < nproj; ip++) + // { + // this->ps[(sum + ip2) * m + ib] + // += this->ppcell->deeq(current_spin, iat, ip, ip2) * this->becp[ib * nkb + sum + ip]; + // } // end ib + // } // end ih + // } // end jh + // sum += nproj; + // ++iat; + // } // end na + } // end nt + } + else + { + for (int it = 0; it < this->ucell->ntype; it++) + { + const int nproj = this->ucell->atoms[it].ncpp.nh; + // added by denghui at 20221109 + // <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< + nonlocal_op()( + this->ctx, // device context + this->ucell->atoms[it].na, m, nproj, // four loop size + sum, iat, nkb, // additional index params + this->ppcell->deeq_nc.getBound2(), this->ppcell->deeq_nc.getBound3(), this->ppcell->deeq_nc.getBound4(), // realArray operator() + this->deeq_nc, // array of data + this->ps, this->becp); // array of data + // >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> + // for (int ia = 0; ia < this->ucell->atoms[it].na; ia++) + // { + // // each atom has nproj, means this is with structure factor; + // // each projector (each atom) must multiply coefficient + // // with all the other projectors. + // for (int ib = 0; ib < m; ib+=2) + // { + // for (int ip2 = 0; ip2 < nproj; ip2++) + // { + // for (int ip = 0; ip < nproj; ip++) + // { + // psind = (sum + ip2) * m + ib; + // becpind = ib * nkb + sum + ip; + // becp1 = becp[becpind]; + // becp2 = becp[becpind + nkb]; + // ps[psind] += this->ppcell->deeq_nc(0, iat, ip2, ip) * becp1 + // + this->ppcell->deeq_nc(1, iat, ip2, ip) * becp2; + // ps[psind + 1] += this->ppcell->deeq_nc(2, iat, ip2, ip) * becp1 + // + this->ppcell->deeq_nc(3, iat, ip2, ip) * becp2; + // } // end ib + // } // end ih + // } // end jh + // sum += nproj; + // ++iat; + // } // end na + } // end nt + } + + // use simple method. + //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< + // qianrui optimize 2021-3-31 + char transa = 'N'; + char transb = 'T'; + if (m == 1) + { + int inc = 1; + // denghui replace 2022-10-20 + // <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< + gemv_op()( + transa, + this->npw, + this->ppcell->nkb, + &this->one, + this->vkb, + this->ppcell->vkb.nc, + this->ps, + inc, + &this->one, + hpsi_in, + inc); + } + else + { + int npm = m; + //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< + // denghui replace 2022-10-20 + #ifdef __DSP + ModuleBase::gemm_op_mt() + #else + gemm_op() + #endif + ( + transa, + transb, + this->npw, + npm, + this->ppcell->nkb, + &this->one, + this->vkb, + this->ppcell->vkb.nc, + this->ps, + npm, + &this->one, + hpsi_in, + this->max_npw + ); + } + ModuleBase::timer::tick("Nonlocal", "add_nonlocal_pp"); +} + +template +void Nonlocal>::act( + const int nbands, + const int nbasis, + const int npol, + const T* tmpsi_in, + T* tmhpsi, + const int ngk_ik, + const bool is_first_node)const +{ + ModuleBase::timer::tick("Operator", "nonlocal_pw"); + if(is_first_node) + { + setmem_complex_op()(tmhpsi, 0, nbasis*nbands/npol); + } + + this->npw = ngk_ik; + this->max_npw = nbasis / npol; + this->npol = npol; + + if (this->ppcell->nkb > 0) + { + //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< + // qianrui optimize 2021-3-31 + int nkb = this->ppcell->nkb; + if (this->nkb_m < nbands * nkb) + { + resmem_complex_op()(this->becp, nbands * nkb, "Nonlocal::becp"); + } + // ModuleBase::ComplexMatrix becp(nbands, nkb, false); + char transa = 'C'; + char transb = 'N'; + if (nbands == 1) + { + int inc = 1; + // denghui replace 2022-10-20 + // <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< + gemv_op()( + transa, + this->npw, + nkb, + &this->one, + this->vkb, + this->ppcell->vkb.nc, + tmpsi_in, + inc, + &this->zero, + this->becp, + inc); + } + else + { + int npm = nbands; + //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< + // denghui replace 2022-10-20 + #ifdef __DSP + ModuleBase::gemm_op_mt() + #else + gemm_op() + #endif + ( + transa, + transb, + nkb, + npm, + this->npw, + &this->one, + this->vkb, + this->ppcell->vkb.nc, + tmpsi_in, + max_npw, + &this->zero, + this->becp, + nkb + ); + } + + Parallel_Reduce::reduce_pool(becp, nkb * nbands); + + this->add_nonlocal_pp(tmhpsi, becp, nbands); + } + + ModuleBase::timer::tick("Operator", "nonlocal_pw"); +} + +template +template +hamilt::Nonlocal>::Nonlocal(const Nonlocal> *nonlocal) +{ + this->classname = "Nonlocal"; + this->cal_type = calculation_type::pw_nonlocal; + this->ik = nonlocal->get_ik(); + this->isk = nonlocal->get_isk(); + this->ppcell = nonlocal->get_ppcell(); + this->ucell = nonlocal->get_ucell(); + this->deeq = this->ppcell->d_deeq; + this->deeq_nc = this->ppcell->template get_deeq_nc_data(); + this->vkb = this->ppcell->template get_vkb_data(); + if( this->isk == nullptr || this->ppcell == nullptr || this->ucell == nullptr) + { + ModuleBase::WARNING_QUIT("NonlocalPW", "Constuctor of Operator::NonlocalPW is failed, please check your code!"); + } +} + +template class Nonlocal, base_device::DEVICE_CPU>>; +template class Nonlocal, base_device::DEVICE_CPU>>; +// template Nonlocal, base_device::DEVICE_CPU>>::Nonlocal(const +// Nonlocal, base_device::DEVICE_CPU>> *nonlocal); +#if ((defined __CUDA) || (defined __ROCM)) +template class Nonlocal, base_device::DEVICE_GPU>>; +template class Nonlocal, base_device::DEVICE_GPU>>; +// template Nonlocal, base_device::DEVICE_CPU>>::Nonlocal(const +// Nonlocal, base_device::DEVICE_GPU>> *nonlocal); template +// Nonlocal, base_device::DEVICE_GPU>>::Nonlocal(const +// Nonlocal, base_device::DEVICE_CPU>> *nonlocal); template +// Nonlocal, base_device::DEVICE_GPU>>::Nonlocal(const +// Nonlocal, base_device::DEVICE_GPU>> *nonlocal); +#endif +} // namespace hamilt diff --git a/source/source_pw/module_pwdft/op_pw_nl.h b/source/source_pw/module_pwdft/op_pw_nl.h new file mode 100644 index 0000000000..829bb31e93 --- /dev/null +++ b/source/source_pw/module_pwdft/op_pw_nl.h @@ -0,0 +1,107 @@ +#ifndef NONLOCALPW_H +#define NONLOCALPW_H + +#include "op_pw.h" + +#include "source_cell/unitcell.h" +#include "source_pw/module_pwdft/kernels/nonlocal_op.h" +#include "source_base/kernels/math_kernel_op.h" + +#include "source_pw/module_pwdft/vnl_pw.h" + +namespace hamilt { + +#ifndef NONLOCALTEMPLATE_H +#define NONLOCALTEMPLATE_H + +template class Nonlocal : public T {}; +// template +// class Nonlocal : public OperatorPW {}; + +#endif + +template +class Nonlocal> : public OperatorPW +{ + private: + using Real = typename GetTypeReal::type; + public: + Nonlocal(const int* isk_in, + const pseudopot_cell_vnl* ppcell_in, + const UnitCell* ucell_in, + const ModulePW::PW_Basis_K* wfc_basis); + + template + explicit Nonlocal(const Nonlocal>* nonlocal); + + virtual ~Nonlocal(); + + virtual void init(const int ik_in)override; + + virtual void act(const int nbands, + const int nbasis, + const int npol, + const T* tmpsi_in, + T* tmhpsi, + const int ngk_ik = 0, + const bool is_first_node = false)const override; + + const int *get_isk() const {return this->isk;} + const pseudopot_cell_vnl *get_ppcell() const {return this->ppcell;} + const UnitCell *get_ucell() const {return this->ucell;} + T* get_vkb() const + { + return this->vkb; + } + T* get_becp() const + { + return this->becp; + } + + private: + void add_nonlocal_pp(T *hpsi_in, const T *becp, const int m) const; + + mutable int max_npw = 0; + + mutable int npw = 0; + + mutable int npol = 0; + + mutable size_t nkb_m = 0; + + const int* isk = nullptr; + + const pseudopot_cell_vnl* ppcell = nullptr; + + const UnitCell* ucell = nullptr; + + const ModulePW::PW_Basis_K* wfcpw = nullptr; + + mutable T *ps = nullptr; + mutable T *vkb = nullptr; + mutable T *becp = nullptr; + Device* ctx = {}; + base_device::DEVICE_CPU* cpu_ctx = {}; + Real * deeq = nullptr; + T * deeq_nc = nullptr; + // using nonlocal_op = nonlocal_pw_op; + using gemv_op = ModuleBase::gemv_op; + using gemm_op = ModuleBase::gemm_op; + using nonlocal_op = nonlocal_pw_op; + using setmem_complex_op = base_device::memory::set_memory_op; + #ifdef __DSP + using resmem_complex_op = base_device::memory::resize_memory_op_mt; + using delmem_complex_op = base_device::memory::delete_memory_op_mt; + #else + using resmem_complex_op = base_device::memory::resize_memory_op; + using delmem_complex_op = base_device::memory::delete_memory_op; + #endif + using syncmem_complex_h2d_op = base_device::memory::synchronize_memory_op; + + T one{1, 0}; + T zero{0, 0}; +}; + +} // namespace hamilt + +#endif \ No newline at end of file diff --git a/source/source_pw/module_pwdft/op_pw_proj.cpp b/source/source_pw/module_pwdft/op_pw_proj.cpp new file mode 100644 index 0000000000..d28bce4165 --- /dev/null +++ b/source/source_pw/module_pwdft/op_pw_proj.cpp @@ -0,0 +1,448 @@ +#include "op_pw_proj.h" + +#include "source_base/timer.h" +#include "source_base/parallel_reduce.h" +#include "source_base/tool_quit.h" +#include "source_lcao/module_deltaspin/spin_constrain.h" +#include "source_lcao/module_dftu/dftu.h" +#include "source_pw/module_pwdft/onsite_projector.h" +#include "source_pw/module_pwdft/kernels/onsite_op.h" + + +namespace hamilt { + +template +OnsiteProj>::OnsiteProj(const int* isk_in, + const UnitCell* ucell_in, + Plus_U *p_dftu, // mohan add 2025-11-06 + const bool cal_delta_spin, + const bool cal_dftu) +{ + this->classname = "OnsiteProj"; + this->cal_type = calculation_type::pw_onsite; + this->isk = isk_in; + this->ucell = ucell_in; + this->has_delta_spin = cal_delta_spin; + this->has_dftu = cal_dftu; + this->dftu = p_dftu; // mohan add 2025-11-08 +} + +template +OnsiteProj>::~OnsiteProj() { + delmem_complex_op()(this->ps); + if(this->init_delta_spin) + { + delmem_int_op()(this->ip_iat); + delmem_complex_op()(this->lambda_coeff); + } + if(this->has_dftu) + { + if(!init_delta_spin) + { + delmem_int_op()(this->ip_iat); + } + delmem_int_op()(this->orb_l_iat); + delmem_int_op()(this->ip_m); + delmem_int_op()(this->vu_begin_iat); + delmem_complex_op()(this->vu_device); + } +} + +template +void OnsiteProj>::init(const int ik_in) +{ + ModuleBase::timer::tick("OnsiteProj", "getvnl"); + this->ik = ik_in; + + auto* onsite_p = projectors::OnsiteProjector::get_instance(); + onsite_p->tabulate_atomic(ik_in); + this->tnp = onsite_p->get_tot_nproj(); + + if(this->next_op != nullptr) + { + this->next_op->init(ik_in); + } + + ModuleBase::timer::tick("OnsiteProj", "getvnl"); +} + +//-------------------------------------------------------------------------- +// this function sum up each non-local pseudopotential located on each atom, +//-------------------------------------------------------------------------- +template +void OnsiteProj>::add_onsite_proj(T *hpsi_in, const int npol, const int m) const +{ + ModuleBase::timer::tick("OnsiteProj", "add_onsite_proj"); + + auto* onsite_p = projectors::OnsiteProjector::get_instance(); + // apply the operator to the wavefunction + //std::cout << "use of tab_atomic at " << __FILE__ << ": " << __LINE__ << std::endl; + const std::complex* tab_atomic = onsite_p->get_tab_atomic(); + const int npw = onsite_p->get_npw(); + const int npwx = onsite_p->get_npwx(); + char transa = 'N'; + char transb = 'T'; + int npm = m; + gemm_op()( + transa, + transb, + npw, + npm, + this->tnp, + &this->one, + tab_atomic, + npw, + this->ps, + npm, + &this->one, + hpsi_in, + npwx + ); + ModuleBase::timer::tick("OnsiteProj", "add_onsite_proj"); +} + +template +void OnsiteProj>::update_becp(const T *psi_in, const int npol, const int m) const +{ + auto* onsite_p = projectors::OnsiteProjector::get_instance(); + // calculate + // std::cout << __FILE__ << ":" << __LINE__ << " nbands = " << m << std::endl; + onsite_p->overlap_proj_psi(m, psi_in); +} + +template +void OnsiteProj>::cal_ps_delta_spin(const int npol, const int m) const +{ + if(!this->has_delta_spin) return; + + auto* onsite_p = projectors::OnsiteProjector::get_instance(); + const std::complex* becp = onsite_p->get_becp(); + + spinconstrain::SpinConstrain>& sc = spinconstrain::SpinConstrain>::getScInstance(); + auto& constrain = sc.get_constrain(); + auto& lambda = sc.get_sc_lambda(); + + // T *ps = new T[tnp * m]; + // ModuleBase::GlobalFunc::ZEROS(ps, m * tnp); + if (this->nkb_m < m * tnp) { + resmem_complex_op()(this->ps, tnp * m, "OnsiteProj::ps"); + this->nkb_m = m * tnp; + } + setmem_complex_op()(this->ps, 0, tnp * m); + + if(!this->init_delta_spin) + { + this->init_delta_spin = true; + //prepare ip_iat and lambda_coeff + resmem_int_op()(this->ip_iat, onsite_p->get_tot_nproj()); + resmem_complex_op()(this->lambda_coeff, this->ucell->nat * 4); + std::vector ip_iat0(onsite_p->get_tot_nproj()); + int ip0 = 0; + for(int iat=0;iatucell->nat;iat++) + { + for(int ip=0;ipget_nh(iat);ip++) + { + ip_iat0[ip0++] = iat; + } + } + syncmem_int_h2d_op()(this->ip_iat, ip_iat0.data(), onsite_p->get_tot_nproj()); + } + + // prepare array of nh_iat and lambda_array to pass to the onsite_ps_op operator + std::vector> tmp_lambda_coeff(this->ucell->nat * 4); + for(int iat=0;iatucell->nat;iat++) + { + tmp_lambda_coeff[iat * 4] = std::complex(lambda[iat][2], 0.0); + tmp_lambda_coeff[iat * 4 + 1] = std::complex(lambda[iat][0], lambda[iat][1]); + tmp_lambda_coeff[iat * 4 + 2] = std::complex(lambda[iat][0], -1 * lambda[iat][1]); + tmp_lambda_coeff[iat * 4 + 3] = std::complex(-1 * lambda[iat][2], 0.0); + } + syncmem_complex_h2d_op()(this->lambda_coeff, tmp_lambda_coeff.data(), this->ucell->nat * 4); + // TODO: code block above should be moved to the init function + + hamilt::onsite_ps_op()( + this->ctx, // device context + m, + npol, + this->ip_iat, + tnp, + this->lambda_coeff, + this->ps, becp); + + /*int sum = 0; + if (npol == 1) + { + const int current_spin = this->isk[this->ik]; + } + else + { + for (int iat = 0; iat < this->ucell->nat; iat++) + { + const int nproj = onsite_p->get_nh(iat); + if(constrain[iat].x == 0 && constrain[iat].y == 0 && constrain[iat].z == 0) + { + sum += nproj; + continue; + } + const std::complex coefficients0(lambda[iat][2], 0.0); + const std::complex coefficients1(lambda[iat][0] , lambda[iat][1]); + const std::complex coefficients2(lambda[iat][0] , -1 * lambda[iat][1]); + const std::complex coefficients3(-1 * lambda[iat][2], 0.0); + // each atom has nproj, means this is with structure factor; + // each projector (each atom) must multiply coefficient + // with all the other projectors. + for (int ib = 0; ib < m; ib+=2) + { + for (int ip = 0; ip < nproj; ip++) + { + const int psind = (sum + ip) * m + ib; + const int becpind = ib * tnp + sum + ip; + const std::complex becp1 = becp[becpind]; + const std::complex becp2 = becp[becpind + tnp]; + ps[psind] += coefficients0 * becp1 + + coefficients2 * becp2; + ps[psind + 1] += coefficients1 * becp1 + + coefficients3 * becp2; + } // end ip + } // end ib + sum += nproj; + } // end iat + }*/ +} + +template +void OnsiteProj>::cal_ps_dftu( + const int npol, + const int m) const +{ + if(!this->has_dftu) + { + return; + } + + auto* onsite_p = projectors::OnsiteProjector::get_instance(); + const std::complex* becp = onsite_p->get_becp(); + + // T *ps = new T[tnp * m]; + // ModuleBase::GlobalFunc::ZEROS(ps, m * tnp); + if (this->nkb_m < m * tnp) { + resmem_complex_op()(this->ps, tnp * m, "OnsiteProj::ps"); + this->nkb_m = m * tnp; + } + if(!this->has_delta_spin) + { + setmem_complex_op()(this->ps, 0, tnp * m); + } + + if(!this->init_dftu) + { + this->init_dftu = true; + //prepare orb_l_iat, ip_m, vu_begin_iat and vu_device + resmem_int_op()(this->orb_l_iat, this->ucell->nat); + resmem_int_op()(this->ip_m, onsite_p->get_tot_nproj()); + resmem_int_op()(this->vu_begin_iat, this->ucell->nat); + // recal the ip_iat + resmem_int_op()(this->ip_iat, onsite_p->get_tot_nproj()); + std::vector ip_iat0(onsite_p->get_tot_nproj()); + std::vector ip_m0(onsite_p->get_tot_nproj()); + std::vector vu_begin_iat0(this->ucell->nat); + std::vector orb_l_iat0(this->ucell->nat); + int ip0 = 0; + int vu_begin = 0; + for(int iat=0;iatucell->nat;iat++) + { + const int it = this->ucell->iat2it[iat]; + const int target_l = this->dftu->orbital_corr[it]; + orb_l_iat0[iat] = target_l; + const int nproj = onsite_p->get_nh(iat); + if(target_l == -1) + { + for(int ip=0;ip= m_begin && ip < m_end) + { + ip_m0[ip0++] = ip - m_begin; + } + else + { + ip_m0[ip0++] = -1; + } + } + } + } + syncmem_int_h2d_op()(this->orb_l_iat, orb_l_iat0.data(), this->ucell->nat); + syncmem_int_h2d_op()(this->ip_iat, ip_iat0.data(), onsite_p->get_tot_nproj()); + syncmem_int_h2d_op()(this->ip_m, ip_m0.data(), onsite_p->get_tot_nproj()); + syncmem_int_h2d_op()(this->vu_begin_iat, vu_begin_iat0.data(), this->ucell->nat); + + resmem_complex_op()(this->vu_device, dftu->get_size_eff_pot_pw()); + } + + syncmem_complex_h2d_op()(this->vu_device, dftu->get_eff_pot_pw(0), dftu->get_size_eff_pot_pw()); + + hamilt::onsite_ps_op()( + this->ctx, // device context + m, + npol, + this->orb_l_iat, + this->ip_iat, + this->ip_m, + this->vu_begin_iat, + tnp, + this->vu_device, + this->ps, becp); + + /* + int sum = 0; + if (npol == 1) + { + const int current_spin = this->isk[this->ik]; + } + else + { + for (int iat = 0; iat < this->ucell->nat; iat++) + { + const int it = this->ucell->iat2it[iat]; + const int target_l = dftu->orbital_corr[it]; + const int nproj = onsite_p->get_nh(iat); + if(target_l == -1) + { + sum += nproj; + continue; + } + const int ip_begin = target_l * target_l; + const int ip_end = (target_l + 1) * (target_l + 1); + const int tlp1 = 2 * target_l + 1; + const int tlp1_2 = tlp1 * tlp1; + const std::complex* vu = dftu->get_eff_pot_pw(iat); + // each projector (each atom) must multiply coefficient + // with all the other projectors. + for (int ib = 0; ib < m; ib+=2) + { + for (int ip2 = ip_begin; ip2 < ip_end; ip2++) + { + const int psind = (sum + ip2) * m + ib; + const int m2 = ip2 - ip_begin; + for (int ip1 = ip_begin; ip1 < ip_end; ip1++) + { + const int becpind1 = ib * tnp + sum + ip1; + const int m1 = ip1 - ip_begin; + const int index_mm = m1 * tlp1 + m2; + const std::complex becp1 = becp[becpind1]; + const std::complex becp2 = becp[becpind1 + tnp]; + ps[psind] += vu[index_mm] * becp1 + + vu[index_mm + tlp1_2 * 2] * becp2; + ps[psind + 1] += vu[index_mm + tlp1_2 * 1] * becp1 + + vu[index_mm + tlp1_2 * 3] * becp2; + } // end ip1 + } // end ip2 + } // end ib + sum += nproj; + } // end iat + }*/ +} + +template<> +void OnsiteProj, base_device::DEVICE_CPU>>::add_onsite_proj( + std::complex *hpsi_in, + const int npol, + const int m) const +{} + +template<> +void OnsiteProj, base_device::DEVICE_CPU>>::update_becp( + const std::complex *psi_in, + const int npol, + const int m) const +{} + +template<> +void OnsiteProj, base_device::DEVICE_CPU>>::cal_ps_delta_spin( + const int npol, + const int m) const +{} + +template<> +void OnsiteProj, base_device::DEVICE_CPU>>::cal_ps_dftu( + const int npol, + const int m) const +{} + +#if ((defined __CUDA) || (defined __ROCM)) +template<> +void OnsiteProj, base_device::DEVICE_GPU>>::add_onsite_proj( + std::complex *hpsi_in, + const int npol, + const int m) const +{} + +template<> +void OnsiteProj, base_device::DEVICE_GPU>>::update_becp( + const std::complex *psi_in, + const int npol, + const int m) const +{} + +template<> +void OnsiteProj, base_device::DEVICE_GPU>>::cal_ps_delta_spin( + const int npol, + const int m) const +{} + +template<> +void OnsiteProj, base_device::DEVICE_GPU>>::cal_ps_dftu( + const int npol, + const int m) const +{} +#endif + +template +void OnsiteProj>::act( + const int nbands, + const int nbasis, + const int npol, + const T* tmpsi_in, + T* tmhpsi, + const int ngk_ik, + const bool is_first_node)const +{ + ModuleBase::timer::tick("Operator", "OnsiteProjPW"); + this->update_becp(tmpsi_in, npol, nbands); + this->cal_ps_delta_spin(npol, nbands); + this->cal_ps_dftu(npol, nbands); + this->add_onsite_proj(tmhpsi, npol, nbands); + ModuleBase::timer::tick("Operator", "OnsiteProjPW"); +} + +template +template +hamilt::OnsiteProj>::OnsiteProj(const OnsiteProj> *nonlocal) +{ + this->classname = "OnsiteProj"; + this->cal_type = calculation_type::pw_nonlocal; +} + +template class OnsiteProj, base_device::DEVICE_CPU>>; +template class OnsiteProj, base_device::DEVICE_CPU>>; + +#if ((defined __CUDA) || (defined __ROCM)) +template class OnsiteProj, base_device::DEVICE_GPU>>; +template class OnsiteProj, base_device::DEVICE_GPU>>; +#endif +} // namespace hamilt diff --git a/source/source_pw/module_pwdft/op_pw_proj.h b/source/source_pw/module_pwdft/op_pw_proj.h new file mode 100644 index 0000000000..50207cc7b7 --- /dev/null +++ b/source/source_pw/module_pwdft/op_pw_proj.h @@ -0,0 +1,106 @@ +#ifndef MODULEHAMILTPW_ONSITE_PROJ_PW_H +#define MODULEHAMILTPW_ONSITE_PROJ_PW_H + +#include "op_pw.h" + +#include "source_cell/unitcell.h" +#include "source_base/kernels/math_kernel_op.h" +#include "source_lcao/module_dftu/dftu.h" // mohan add 20251106 + +namespace hamilt { + +#ifndef ONSITETEMPLATE_H +#define ONSITETEMPLATE_H + +template class OnsiteProj : public T {}; +// template +// class OnsiteProj : public OperatorPW {}; + +#endif + +template +class OnsiteProj> : public OperatorPW +{ + private: + using Real = typename GetTypeReal::type; + + public: + OnsiteProj(const int* isk_in, + const UnitCell* ucell_in, + Plus_U *p_dftu, // mohan add 2025-11-06 + const bool cal_delta_spin, + const bool cal_dftu); + + template + explicit OnsiteProj(const OnsiteProj>* onsite_proj); + + virtual ~OnsiteProj(); + + virtual void init(const int ik_in)override; + + virtual void act(const int nbands, + const int nbasis, + const int npol, + const T* tmpsi_in, + T* tmhpsi, + const int ngk = 0, + const bool is_first_node = false)const override; + + const int *get_isk() const {return this->isk;} + const UnitCell *get_ucell() const {return this->ucell;} + + private: + void cal_ps_delta_spin(const int npol, const int m) const; + + void cal_ps_dftu(const int npol, const int m) const; + + void update_becp(const T* psi_in, const int npol, const int m) const; + + void add_onsite_proj(T *hpsi_in, const int npol, const int m) const; + + const int* isk = nullptr; + + const UnitCell* ucell = nullptr; + + Plus_U *dftu = nullptr; // mohan add 2025-11-06 + + mutable int* ip_iat = nullptr; + mutable T* lambda_coeff = nullptr; + mutable int* orb_l_iat = nullptr; + mutable int* ip_m = nullptr; + mutable int* vu_begin_iat = nullptr; + mutable T* vu_device = nullptr; + + mutable int nkb_m = 0; + + bool has_delta_spin = false; + bool has_dftu = false; + + mutable bool init_dftu = false; + mutable bool init_delta_spin = false; + + mutable T *ps = nullptr; + int tnp = 0; + Device* ctx = {}; + base_device::DEVICE_CPU* cpu_ctx = {}; + + using gemv_op = ModuleBase::gemv_op; + using gemm_op = ModuleBase::gemm_op; + using setmem_complex_op = base_device::memory::set_memory_op; + using resmem_complex_op = base_device::memory::resize_memory_op; + using delmem_complex_op = base_device::memory::delete_memory_op; + using syncmem_complex_h2d_op = base_device::memory::synchronize_memory_op; + using resmem_int_op = base_device::memory::resize_memory_op; + using resmem_real_op = base_device::memory::resize_memory_op; + using delmem_int_op = base_device::memory::delete_memory_op; + using delmem_real_op = base_device::memory::delete_memory_op; + using syncmem_int_h2d_op = base_device::memory::synchronize_memory_op; + using syncmem_real_h2d_op = base_device::memory::synchronize_memory_op; + + T one{1, 0}; + T zero{0, 0}; +}; + +} // namespace hamilt + +#endif diff --git a/source/source_pw/module_pwdft/op_pw_veff.cpp b/source/source_pw/module_pwdft/op_pw_veff.cpp new file mode 100644 index 0000000000..bd5fa7f4e8 --- /dev/null +++ b/source/source_pw/module_pwdft/op_pw_veff.cpp @@ -0,0 +1,163 @@ +#include "op_pw_veff.h" + +#include "source_base/timer.h" +#include "source_base/tool_quit.h" + +namespace hamilt { + +template +Veff>::Veff(const int* isk_in, + const Real* veff_in, + const int veff_row, + const int veff_col, + const ModulePW::PW_Basis_K* wfcpw_in) +{ + if (isk_in == nullptr || wfcpw_in == nullptr) + { + ModuleBase::WARNING_QUIT("VeffPW", "Constuctor of Operator::VeffPW is failed, please check your code!"); + } + + this->classname = "Veff"; + this->cal_type = calculation_type::pw_veff; + this->isk = isk_in; + this->veff = veff_in; + //note: "veff = nullptr" means that this core does not treat potential but still treats wf. + this->veff_row = veff_row; + this->veff_col = veff_col; + this->wfcpw = wfcpw_in; + resmem_complex_op()(this->porter, this->wfcpw->nmaxgr, "Veff::porter"); + resmem_complex_op()(this->porter1, this->wfcpw->nmaxgr, "Veff::porter1"); + +} + +template +Veff>::~Veff() +{ + delmem_complex_op()(this->porter); + delmem_complex_op()(this->porter1); +} + +template +void Veff>::act( + const int nbands, + const int nbasis, + const int npol, + const T* tmpsi_in, + T* tmhpsi, + const int ngk_ik, + const bool is_first_node)const +{ + ModuleBase::timer::tick("Operator", "veff_pw"); + if(is_first_node) + { + setmem_complex_op()(tmhpsi, 0, nbasis*nbands/npol); + } + int max_npw = nbasis / npol; + const int current_spin = this->isk[this->ik]; + const int psi_offset= max_npw * npol; +#ifdef __DSP + if (npol == 1) + { + ModuleBase::FFT_Guard guard(wfcpw->fft_bundle); + for (int ib = 0; ib < nbands; ib += npol) + { + wfcpw->convolution(this->ctx, + this->ik, + this->veff_col, + tmpsi_in, + this->veff + current_spin * this->veff_col, + tmhpsi, + true); + tmhpsi += psi_offset; + tmpsi_in += psi_offset; + } + }else if (npol == 2) + { + const Real* current_veff[4]={nullptr}; + for (int is = 0; is < 4; is++) + { + current_veff[is] = this->veff + is * this->veff_col; + } + for (int ib = 0; ib < nbands; ib += npol) + { + wfcpw->recip_to_real(tmpsi_in, this->porter, this->ik); + wfcpw->recip_to_real(tmpsi_in + max_npw, this->porter1, this->ik); + veff_op()(this->ctx, this->veff_col, this->porter, this->porter1, current_veff); + wfcpw->real_to_recip(this->porter, tmhpsi, this->ik, true); + wfcpw->real_to_recip(this->porter1, tmhpsi + max_npw, this->ik, true); + tmhpsi += psi_offset; + tmpsi_in += psi_offset; + } + }else{ + ModuleBase::WARNING_QUIT("VeffPW", "npol should be 1 or 2 or veff_col equal to 0\n"); + } +#else + if (npol == 1) + { + for (int ib = 0; ib < nbands; ib += npol) + { + wfcpw->recip_to_real(tmpsi_in, this->porter, this->ik); + // NOTICE: when MPI threads are larger than the number of Z grids + // veff would contain nothing, and nothing should be done in real space + // but the 3DFFT can not be skipped, it will cause hanging + veff_op()(this->ctx, this->veff_col, this->porter, this->veff + current_spin * this->veff_col); + wfcpw->real_to_recip(this->porter, tmhpsi, this->ik, true); + tmhpsi += psi_offset; + tmpsi_in += psi_offset; + } + } + else if (npol == 2) + { + const Real* current_veff[4]={nullptr}; + for (int is = 0; is < 4; is++) + { + current_veff[is] = this->veff + is * this->veff_col; + } + for (int ib = 0; ib < nbands; ib += npol) + { + // FFT to real space and do things. + wfcpw->recip_to_real(tmpsi_in, this->porter, this->ik); + wfcpw->recip_to_real(tmpsi_in + max_npw, this->porter1, this->ik); + veff_op()(this->ctx, this->veff_col, this->porter, this->porter1, current_veff); + // FFT back to G space. + wfcpw->real_to_recip(this->porter, tmhpsi, this->ik, true); + wfcpw->real_to_recip(this->porter1, tmhpsi + max_npw, this->ik, true); + tmhpsi += psi_offset; + tmpsi_in += psi_offset; + } + }else{ + ModuleBase::WARNING_QUIT("VeffPW", "npol should be 1 or 2 or veff_col equal to 0\n"); + } +#endif + ModuleBase::timer::tick("Operator", "veff_pw"); +} + +template +template +hamilt::Veff>::Veff(const Veff> *veff) { + this->classname = "Veff"; + this->cal_type = calculation_type::pw_veff; + this->ik = veff->get_ik(); + this->isk = veff->get_isk(); + this->veff_col = veff->get_veff_col(); + this->veff_row = veff->get_veff_row(); + this->wfcpw = veff->get_wfcpw(); + resmem_complex_op()(this->porter, this->wfcpw->nmaxgr); + resmem_complex_op()(this->porter1, this->wfcpw->nmaxgr); + this->veff = veff->get_veff(); + if (this->isk == nullptr || this->veff == nullptr || this->wfcpw == nullptr) { + ModuleBase::WARNING_QUIT("VeffPW", "Constuctor of Operator::VeffPW is failed, please check your code!"); + } +} + +template class Veff, base_device::DEVICE_CPU>>; +template class Veff, base_device::DEVICE_CPU>>; +// template Veff, base_device::DEVICE_CPU>>::Veff(const +// Veff, base_device::DEVICE_CPU>> *veff); +#if ((defined __CUDA) || (defined __ROCM)) +template class Veff, base_device::DEVICE_GPU>>; +template class Veff, base_device::DEVICE_GPU>>; +// template Veff, base_device::DEVICE_GPU>>::Veff(const +// Veff, base_device::DEVICE_GPU>> *veff); +#endif +} // namespace hamilt diff --git a/source/source_pw/module_pwdft/op_pw_veff.h b/source/source_pw/module_pwdft/op_pw_veff.h new file mode 100644 index 0000000000..fa7fe40872 --- /dev/null +++ b/source/source_pw/module_pwdft/op_pw_veff.h @@ -0,0 +1,81 @@ +#ifndef VEFFPW_H +#define VEFFPW_H + +#include "op_pw.h" +#include "source_base/matrix.h" +#include "source_basis/module_pw/pw_basis_k.h" +#include "source_pw/module_pwdft/kernels/veff_op.h" + +#include + +namespace hamilt { + +#ifndef __VEFFTEMPLATE +#define __VEFFTEMPLATE + +template class Veff : public T {}; +// template +// class Veff : public OperatorPW {}; + +#endif + +template +class Veff> : public OperatorPW +{ + private: + using Real = typename GetTypeReal::type; + public: + Veff(const int* isk_in, + const Real* veff_in, + const int veff_row, + const int veff_col, + const ModulePW::PW_Basis_K* wfcpw_in); + + template + explicit Veff(const Veff>* veff); + + virtual ~Veff(); + + virtual void act(const int nbands, + const int nbasis, + const int npol, + const T* tmpsi_in, + T* tmhpsi, + const int ngk_ik = 0, + const bool is_first_node = false)const override; + + // denghui added for copy constructor at 20221105 + const Real *get_veff() const {return this->veff;} + int get_veff_col() const {return this->veff_col;} + int get_veff_row() const { return this->veff_row; } + const int *get_isk() const {return isk;} + const ModulePW::PW_Basis_K* get_wfcpw() const + { + return this->wfcpw; + } + + private: + + const int* isk = nullptr; + + const ModulePW::PW_Basis_K* wfcpw = nullptr; + + Device* ctx = {}; + base_device::DEVICE_CPU* cpu_ctx = {}; + + int veff_col = 0; + int veff_row = 0; + const Real *veff = nullptr, *h_veff = nullptr, *d_veff = nullptr; + T *porter = nullptr; + T *porter1 = nullptr; + base_device::AbacusDevice_t device = {}; + using veff_op = veff_pw_op; + + using resmem_complex_op = base_device::memory::resize_memory_op; + using delmem_complex_op = base_device::memory::delete_memory_op; + using setmem_complex_op = base_device::memory::set_memory_op; +}; + +} // namespace hamilt + +#endif \ No newline at end of file diff --git a/source/source_pw/module_pwdft/op_pw_vel.cpp b/source/source_pw/module_pwdft/op_pw_vel.cpp new file mode 100644 index 0000000000..b4f0127586 --- /dev/null +++ b/source/source_pw/module_pwdft/op_pw_vel.cpp @@ -0,0 +1,337 @@ +#include "op_pw_vel.h" + +#include "source_base/kernels/math_kernel_op.h" +#include "source_base/parallel_reduce.h" +#include "source_base/timer.h" +namespace hamilt +{ + +template +Velocity::Velocity(const ModulePW::PW_Basis_K* wfcpw_in, + const int* isk_in, + pseudopot_cell_vnl* ppcell_in, + const UnitCell* ucell_in, + const bool nonlocal_in) +{ + if (wfcpw_in == nullptr || isk_in == nullptr || ppcell_in == nullptr || ucell_in == nullptr) + { + ModuleBase::WARNING_QUIT("Velocity", "Constuctor of Operator::Velocity is failed, please check your code!"); + } + this->wfcpw = wfcpw_in; + this->isk = isk_in; + this->ppcell = ppcell_in; + this->ucell = ucell_in; + this->nonlocal = nonlocal_in; + this->tpiba = ucell_in->tpiba; + if (this->nonlocal) + { + this->ppcell->initgradq_vnl(*this->ucell); + } +} + +template +Velocity::~Velocity() +{ + delmem_var_op()(this->gx_); + delmem_var_op()(this->gy_); + delmem_var_op()(this->gz_); + delmem_complex_op()(vkb_); + delmem_complex_op()(gradvkb_); +} + +template +void Velocity::init(const int ik_in) +{ + this->ik = ik_in; + // init G+K + const int npw = this->wfcpw->npwk[ik_in]; + const int npwk_max = this->wfcpw->npwk_max; + std::vector gtmp(npw); + resmem_var_op()(gx_, npw); + resmem_var_op()(gy_, npw); + resmem_var_op()(gz_, npw); + std::vector gtmp_ptr = {this->gx_, this->gy_, this->gz_}; + for(int i=0; i<3; ++i) + { + for (int ig = 0; ig < npw; ++ig) + { + const ModuleBase::Vector3 tmpg = wfcpw->getgpluskcar(this->ik, ig); + gtmp[ig] = static_cast(tmpg[i] * tpiba); + } + syncmem_var_h2d_op()(gtmp_ptr[i], gtmp.data(), npw); + } + + // Calculate nonlocal pseudopotential vkb + if (this->ppcell->nkb > 0 && this->nonlocal) + { + this->ppcell->getgradq_vnl(*this->ucell, ik_in); + + // sync to device + if (std::is_same::value || std::is_same::value) + { + const int nkb = this->ppcell->nkb; + // vkb + resmem_complex_op()(vkb_, nkb * npwk_max); + castmem_complex_h2d_op()(vkb_, this->ppcell->vkb.c, nkb * npwk_max); + + // gradvkb + resmem_complex_op()(gradvkb_, 3 * nkb * npwk_max); + castmem_complex_h2d_op()(gradvkb_, this->ppcell->gradvkb.ptr, 3 * nkb * npwk_max); + } + } +} + +template +void Velocity::act(const psi::Psi, Device>* psi_in, + const int n_npwx, + const std::complex* psi0, + std::complex* vpsi, + const bool add) const +{ + ModuleBase::timer::tick("Operator", "Velocity"); + + const int npw = this->wfcpw->npwk[this->ik]; + const int max_npw = this->wfcpw->npwk_max; + const int npol = psi_in->get_npol(); + + std::vector gtmp_ptr = {this->gx_, this->gy_, this->gz_}; + // ------------- + // p + // ------------- + for (int id = 0; id < 3; ++id) + { + const Complex* tmpsi_in = psi0; + Complex* tmpvpsi = vpsi + id * n_npwx * max_npw; + for (int ib = 0; ib < n_npwx; ++ib) + { + ModuleBase::vector_mul_vector_op()(npw, tmpvpsi, tmpsi_in, gtmp_ptr[id], add); + tmpvpsi += max_npw; + tmpsi_in += max_npw; + } + } + + // --------------------------------------------- + // i[V_NL, r] = (\nabla_q+\nabla_q')V_{NL}(q,q') + // |\beta><\beta|\psi> + // --------------------------------------------- + if (this->ppcell->nkb <= 0 || !this->nonlocal) + { + ModuleBase::timer::tick("Operator", "Velocity"); + return; + } + + // 1. <\beta|\psi> + Complex* becp1_ = nullptr; ///<[Device, n_npwx * nkb] <\beta|\psi> + Complex* becp2_ = nullptr; ///<[Device, n_npwx * 3*nkb] <\nabla\beta|\psi> + Complex* ps1_ = nullptr; ///<[Device, nkb * n_npwx] sum of becp1 + Complex* ps2_ = nullptr; ///<[Device, 3*nkb * n_npwx] sum of becp2 + resmem_complex_op()(ps1_, this->ppcell->nkb * n_npwx); + resmem_complex_op()(ps2_, 3 * this->ppcell->nkb * n_npwx); + resmem_complex_op()(becp1_, this->ppcell->nkb * n_npwx); + resmem_complex_op()(becp2_, 3 * this->ppcell->nkb * n_npwx); + + const int nkb = this->ppcell->nkb; + const int nkb3 = 3 * nkb; + Complex one = 1.0; + Complex zero = 0.0; + + Complex* vkb_d = reinterpret_cast(this->ppcell->vkb.c); + Complex* gradvkb_d = reinterpret_cast(this->ppcell->gradvkb.ptr); + if (std::is_same::value || std::is_same::value) + { + vkb_d = vkb_; + gradvkb_d = gradvkb_; + } + + if (n_npwx == 1) + { + int inc = 1; + ModuleBase::gemv_op()('C', npw, nkb, &one, vkb_d, max_npw, psi0, inc, &zero, becp1_, inc); + ModuleBase::gemv_op()('C', npw, nkb3, &one, gradvkb_d, max_npw, psi0, inc, &zero, becp2_, inc); + } + else + { + ModuleBase::gemm_op()('C', + 'N', + nkb, + n_npwx, + npw, + &one, + vkb_d, + max_npw, + psi0, + max_npw, + &zero, + becp1_, + nkb); + ModuleBase::gemm_op()('C', + 'N', + nkb3, + n_npwx, + npw, + &one, + gradvkb_d, + max_npw, + psi0, + max_npw, + &zero, + becp2_, + nkb3); + } + + Complex* becp1_cpu = nullptr; + Complex* becp2_cpu = nullptr; + Complex* ps1_cpu = nullptr; + Complex* ps2_cpu = nullptr; + std::vector tmp_space1, tmp_space2; + if(std::is_same::value) + { + tmp_space1.resize(nkb * n_npwx + nkb3 * n_npwx); + becp1_cpu = tmp_space1.data(); + becp2_cpu = becp1_cpu + nkb * n_npwx; + syncmem_complex_d2h_op()(becp1_cpu, becp1_, nkb * n_npwx); + syncmem_complex_d2h_op()(becp2_cpu, becp2_, nkb3 * n_npwx); + + tmp_space2.resize(nkb * n_npwx + nkb3 * n_npwx, 0.0); + ps1_cpu = tmp_space2.data(); + ps2_cpu = ps1_cpu + nkb * n_npwx; + } + else + { + Parallel_Reduce::reduce_pool(becp1_, nkb * n_npwx); + Parallel_Reduce::reduce_pool(becp2_, nkb3 * n_npwx); + becp1_cpu = becp1_; + becp2_cpu = becp2_; + + setmem_complex_op()(ps1_, 0.0, nkb * n_npwx); + setmem_complex_op()(ps2_, 0.0, nkb3 * n_npwx); + ps1_cpu = ps1_; + ps2_cpu = ps2_; + } + + // 2. <\beta \psi>ucell->ntype; it++) + { + const int nproj = this->ucell->atoms[it].ncpp.nh; + for (int ia = 0; ia < this->ucell->atoms[it].na; ia++) + { + for (int ip = 0; ip < nproj; ip++) + { + for (int ip2 = 0; ip2 < nproj; ip2++) + { + for (int ib = 0; ib < n_npwx; ++ib) + { + FPTYPE dij = static_cast(this->ppcell->deeq(current_spin, iat, ip, ip2)); + int sumip2 = sum + ip2; + int sumip = sum + ip; + ps1_cpu[sumip2 * n_npwx + ib] += dij * becp1_cpu[ib * nkb + sumip]; + ps2_cpu[sumip2 * n_npwx + ib] += dij * becp2_cpu[ib * nkb3 + sumip]; + ps2_cpu[(sumip2 + nkb) * n_npwx + ib] += dij * becp2_cpu[ib * nkb3 + sumip + nkb]; + ps2_cpu[(sumip2 + 2 * nkb) * n_npwx + ib] += dij * becp2_cpu[ib * nkb3 + sumip + 2 * nkb]; + } + } + } + sum += nproj; + ++iat; + } + } + } + else + { + ModuleBase::WARNING_QUIT("Velocity", "Velocity operator does not support the non-collinear case yet!"); + } + + if(std::is_same::value) + { + syncmem_complex_h2d_op()(ps1_, ps1_cpu, nkb * n_npwx); + syncmem_complex_h2d_op()(ps2_, ps2_cpu, nkb3 * n_npwx); + } + + if (n_npwx == 1) + { + int inc = 1; + for (int id = 0; id < 3; ++id) + { + int vkbshift = id * max_npw * nkb; + int ps2shift = id * nkb; + int npwshift = id * max_npw; + ModuleBase::gemv_op()('N', + npw, + nkb, + &one, + gradvkb_d + vkbshift, + max_npw, + ps1_, + inc, + &one, + vpsi + npwshift, + inc); + ModuleBase::gemv_op()('N', + npw, + nkb, + &one, + vkb_d, + max_npw, + ps2_ + ps2shift, + inc, + &one, + vpsi + npwshift, + inc); + } + } + else + { + for (int id = 0; id < 3; ++id) + { + int vkbshift = id * max_npw * nkb; + int ps2shift = id * n_npwx * nkb; + int npwshift = id * max_npw * n_npwx; + ModuleBase::gemm_op()('N', + 'T', + npw, + n_npwx, + nkb, + &one, + gradvkb_d + vkbshift, + max_npw, + ps1_, + n_npwx, + &one, + vpsi + npwshift, + max_npw); + ModuleBase::gemm_op()('N', + 'T', + npw, + n_npwx, + nkb, + &one, + vkb_d, + max_npw, + ps2_ + ps2shift, + n_npwx, + &one, + vpsi + npwshift, + max_npw); + } + } + delmem_complex_op()(ps1_); + delmem_complex_op()(ps2_); + delmem_complex_op()(becp1_); + delmem_complex_op()(becp2_); + ModuleBase::timer::tick("Operator", "Velocity"); + return; +} + +template class Velocity; +template class Velocity; +#if ((defined __CUDA) || (defined __ROCM)) +template class Velocity; +template class Velocity; +#endif + +} // namespace hamilt \ No newline at end of file diff --git a/source/source_pw/module_pwdft/op_pw_vel.h b/source/source_pw/module_pwdft/op_pw_vel.h new file mode 100644 index 0000000000..211ce4007e --- /dev/null +++ b/source/source_pw/module_pwdft/op_pw_vel.h @@ -0,0 +1,79 @@ +#ifndef VELOCITY_PW_H +#define VELOCITY_PW_H +#include "op_pw.h" +#include "source_cell/unitcell.h" +#include "source_pw/module_pwdft/vnl_pw.h" +#include "source_basis/module_pw/pw_basis_k.h" +namespace hamilt +{ + +//velocity operator mv = im/\hbar * [H,r] = p + im/\hbar [V_NL, r] +template +class Velocity +{ + public: + Velocity( + const ModulePW::PW_Basis_K* wfcpw_in, + const int* isk_in, + pseudopot_cell_vnl* ppcell_in, + const UnitCell* ucell_in, + const bool nonlocal_in = true + ); + + ~Velocity(); + + void init(const int ik_in); + + /** + * @brief calculate \hat{v}|\psi> + * + * @param psi_in Psi class which contains some information + * @param n_npwx nbands * NPOL + * @param tmpsi_in |\psi_i> size: n_npwx*npwx + * @param tmvpsi \hat{v}|\psi> size: 3*n_npwx*npwx + * @param add true : tmvpsi = tmvpsi + v|\psi> false: tmvpsi = v|\psi> + * + */ + void act(const psi::Psi, Device>* psi_in, + const int n_npwx, + const std::complex* tmpsi_in, + std::complex* tmvpsi, + const bool add = false) const; + + bool nonlocal = true; + + private: + const ModulePW::PW_Basis_K* wfcpw = nullptr; + + const int* isk = nullptr; + + pseudopot_cell_vnl* ppcell = nullptr; + + const UnitCell* ucell = nullptr; + + int ik=0; + + double tpiba=0.0; + + private: + FPTYPE* gx_ = nullptr; ///<[Device, npwx] x component of G+K + FPTYPE* gy_ = nullptr; ///<[Device, npwx] y component of G+K + FPTYPE* gz_ = nullptr; ///<[Device, npwx] z component of G+K + std::complex* vkb_ = nullptr; ///<[Device, nkb * npwk_max] nonlocal pseudopotential vkb + std::complex* gradvkb_ = nullptr; ///<[Device, 3*nkb * npwk_max] gradient of nonlocal pseudopotential gradvkb + FPTYPE* deeq_ = nullptr; ///<[Device] D matrix for nonlocal pseudopotential + + using Complex = std::complex; + using resmem_var_op = base_device::memory::resize_memory_op; + using delmem_var_op = base_device::memory::delete_memory_op; + using syncmem_var_h2d_op = base_device::memory::synchronize_memory_op; + using castmem_var_h2d_op = base_device::memory::cast_memory_op; + using resmem_complex_op = base_device::memory::resize_memory_op, Device>; + using setmem_complex_op = base_device::memory::set_memory_op, Device>; + using delmem_complex_op = base_device::memory::delete_memory_op, Device>; + using castmem_complex_h2d_op = base_device::memory::cast_memory_op, std::complex, Device, base_device::DEVICE_CPU>; + using syncmem_complex_d2h_op = base_device::memory::synchronize_memory_op, base_device::DEVICE_CPU, Device>; + using syncmem_complex_h2d_op = base_device::memory::synchronize_memory_op, Device, base_device::DEVICE_CPU>; +}; +} +#endif \ No newline at end of file diff --git a/source/source_pw/module_pwdft/operator_pw/CMakeLists.txt b/source/source_pw/module_pwdft/operator_pw/CMakeLists.txt deleted file mode 100644 index e4f2ef4f10..0000000000 --- a/source/source_pw/module_pwdft/operator_pw/CMakeLists.txt +++ /dev/null @@ -1,20 +0,0 @@ -list(APPEND operator_ks_pw_srcs - operator_pw.cpp - ekinetic_pw.cpp - veff_pw.cpp - nonlocal_pw.cpp - meta_pw.cpp - velocity_pw.cpp - onsite_proj_pw.cpp -) - -# this library is included in module_pwdft now -#add_library( -# operator_ks_pw -# OBJECT -# ${operator_ks_pw_srcs} -#) - -#if(ENABLE_COVERAGE) -# add_coverage(operator_ks_pw) -#endif() diff --git a/source/source_pw/module_pwdft/operator_pw/ekinetic_pw.cpp b/source/source_pw/module_pwdft/operator_pw/ekinetic_pw.cpp deleted file mode 100644 index c776863089..0000000000 --- a/source/source_pw/module_pwdft/operator_pw/ekinetic_pw.cpp +++ /dev/null @@ -1,92 +0,0 @@ -#include "ekinetic_pw.h" - -#include "source_base/timer.h" -#include "source_base/tool_quit.h" - -#include "source_base/module_device/device.h" - - -namespace hamilt { - -template -Ekinetic>::Ekinetic( - Real tpiba2_in, - const Real* gk2_in, - const int gk2_row, - const int gk2_col) -{ - this->classname = "Ekinetic"; - this->cal_type = calculation_type::pw_ekinetic; - this->tpiba2 = tpiba2_in; - this->gk2 = gk2_in; - this->gk2_row = gk2_row; - this->gk2_col = gk2_col; - this->device = base_device::get_device_type(this->ctx); - if( this->tpiba2 < 1e-10 || this->gk2 == nullptr) { - ModuleBase::WARNING_QUIT("EkineticPW", "Constuctor of Operator::EkineticPW is failed, please check your code!"); - } -} - -template -Ekinetic>::~Ekinetic() {} - -template -void Ekinetic>::act( - const int nbands, - const int nbasis, - const int npol, - const T* tmpsi_in, - T* tmhpsi, - const int ngk_ik, - const bool is_first_node)const -{ - ModuleBase::timer::tick("Operator", "EkineticPW"); - int max_npw = nbasis / npol; - - const Real *gk2_ik = &(this->gk2[this->ik * this->gk2_col]); - // denghui added 20221019 - ekinetic_op()(this->ctx, nbands, ngk_ik, max_npw, is_first_node, tpiba2, gk2_ik, tmhpsi, tmpsi_in); - // for (int ib = 0; ib < nbands; ++ib) - // { - // for (int ig = 0; ig < ngk_ik; ++ig) - // { - // tmhpsi[ig] += gk2_ik[ig] * tpiba2 * tmpsi_in[ig]; - // } - // tmhpsi += max_npw; - // tmpsi_in += max_npw; - // } - ModuleBase::timer::tick("Operator", "EkineticPW"); -} - -// copy construct added by denghui at 20221105 -template -template -hamilt::Ekinetic>::Ekinetic(const Ekinetic> *ekinetic) { - this->classname = "Ekinetic"; - this->cal_type = calculation_type::pw_ekinetic; - this->ik = ekinetic->get_ik(); - this->tpiba2 = ekinetic->get_tpiba2(); - this->gk2 = ekinetic->get_gk2(); - this->gk2_row = ekinetic->get_gk2_row(); - this->gk2_col = ekinetic->get_gk2_col(); - this->device = base_device::get_device_type(this->ctx); - if( this->tpiba2 < 1e-10 || this->gk2 == nullptr) { - ModuleBase::WARNING_QUIT("EkineticPW", "Copy Constuctor of Operator::EkineticPW is failed, please check your code!"); - } -} - -template class Ekinetic, base_device::DEVICE_CPU>>; -template class Ekinetic, base_device::DEVICE_CPU>>; -// template Ekinetic, base_device::DEVICE_CPU>>::Ekinetic(const -// Ekinetic, base_device::DEVICE_CPU>> *ekinetic); -#if ((defined __CUDA) || (defined __ROCM)) -template class Ekinetic, base_device::DEVICE_GPU>>; -template class Ekinetic, base_device::DEVICE_GPU>>; -// template Ekinetic, base_device::DEVICE_CPU>>::Ekinetic(const -// Ekinetic, base_device::DEVICE_GPU>> *ekinetic); template -// Ekinetic, base_device::DEVICE_GPU>>::Ekinetic(const -// Ekinetic, base_device::DEVICE_CPU>> *ekinetic); template -// Ekinetic, base_device::DEVICE_GPU>>::Ekinetic(const -// Ekinetic, base_device::DEVICE_GPU>> *ekinetic); -#endif -} // namespace hamilt \ No newline at end of file diff --git a/source/source_pw/module_pwdft/operator_pw/ekinetic_pw.h b/source/source_pw/module_pwdft/operator_pw/ekinetic_pw.h deleted file mode 100644 index e5b6281fa9..0000000000 --- a/source/source_pw/module_pwdft/operator_pw/ekinetic_pw.h +++ /dev/null @@ -1,74 +0,0 @@ -#ifndef EKINETICPW_H -#define EKINETICPW_H - -#include "operator_pw.h" -#include "source_pw/module_pwdft/kernels/ekinetic_op.h" - -#include - -namespace hamilt { - -// Not needed anymore -#ifndef __EKINETICTEMPLATE -#define __EKINETICTEMPLATE - -template class Ekinetic : public T {}; -// template -// class Ekinetic : public OperatorPW {}; - -#endif - -// template -// class Ekinetic : public OperatorPW -template -class Ekinetic> : public OperatorPW -{ - private: - using Real = typename GetTypeReal::type; - public: - Ekinetic( - Real tpiba2_in, - const Real* gk2_in, - const int gk2_row, - const int gk2_col); - - template - explicit Ekinetic(const Ekinetic>* ekinetic); - - virtual ~Ekinetic(); - - virtual void act(const int nbands, - const int nbasis, - const int npol, - const T* tmpsi_in, - T* tmhpsi, - const int ngk_ik = 0, - const bool is_first_node = false)const override; - - // denghuilu added for copy construct at 20221105 - int get_gk2_row() const {return this->gk2_row;} - int get_gk2_col() const {return this->gk2_col;} - Real get_tpiba2() const {return this->tpiba2;} - const Real* get_gk2() const {return this->gk2;} - Device* get_ctx() const {return this->ctx;} - - private: - - Real tpiba2 = 0.0; - const Real* gk2 = nullptr; - int gk2_row = 0; - int gk2_col = 0; - - Device* ctx = {}; - base_device::DEVICE_CPU* cpu_ctx = {}; - base_device::AbacusDevice_t device = {}; - - using ekinetic_op = ekinetic_pw_op; - using resmem_var_op = base_device::memory::resize_memory_op; - using delmem_var_op = base_device::memory::delete_memory_op; - using syncmem_var_h2d_op = base_device::memory::synchronize_memory_op; -}; - -} // namespace hamilt - -#endif \ No newline at end of file diff --git a/source/source_pw/module_pwdft/operator_pw/meta_pw.cpp b/source/source_pw/module_pwdft/operator_pw/meta_pw.cpp deleted file mode 100644 index c036a0a1f3..0000000000 --- a/source/source_pw/module_pwdft/operator_pw/meta_pw.cpp +++ /dev/null @@ -1,117 +0,0 @@ -#include "meta_pw.h" - -#include "source_base/timer.h" -#include "source_pw/module_pwdft/global.h" -#include "source_hamilt/module_xc/xc_functional.h" -#include "source_base/tool_quit.h" - -namespace hamilt { - -template -Meta>::Meta(Real tpiba_in, - const int* isk_in, - const Real* vk_in, - const int vk_row, - const int vk_col, - const ModulePW::PW_Basis_K* wfcpw_in) -{ - if(isk_in == nullptr || tpiba_in < 1e-10 || wfcpw_in == nullptr) - { - ModuleBase::WARNING_QUIT("MetaPW", "Constuctor of Operator::MetaPW is failed, please check your code!"); - } - this->classname = "Meta"; - this->cal_type = calculation_type::pw_meta; - this->isk = isk_in; - this->tpiba = tpiba_in; - this->vk = vk_in; - this->vk_row = vk_row; - this->vk_col = vk_col; - this->wfcpw = wfcpw_in; - resmem_complex_op()(this->porter, this->wfcpw->nmaxgr, "Meta::porter"); - -} - -template -Meta>::~Meta() -{ - delmem_complex_op()(this->porter); -} - -template -void Meta>::act( - const int nbands, - const int nbasis, - const int npol, - const T* tmpsi_in, - T* tmhpsi, - const int ngk_ik, - const bool is_first_node)const -{ - if (XC_Functional::get_func_type() != 3) - { - return; - } - - ModuleBase::timer::tick("Operator", "MetaPW"); - if(is_first_node) - { - setmem_complex_op()(tmhpsi, 0, nbasis*nbands/npol); - } - - const int current_spin = this->isk[this->ik]; - int max_npw = nbasis / npol; - //npol == 2 case has not been considered - - for (int ib = 0; ib < nbands; ++ib) - { - for (int j = 0; j < 3; j++) - { - meta_op()(this->ctx, this->ik, j, ngk_ik, this->wfcpw->npwk_max, this->tpiba, wfcpw->get_gcar_data(), wfcpw->get_kvec_c_data(), tmpsi_in, this->porter); - wfcpw->recip_to_real(this->ctx, this->porter, this->porter, this->ik); - - if(this->vk_col != 0) { - vector_mul_vector_op()(this->vk_col, this->porter, this->porter, this->vk + current_spin * this->vk_col); - } - - wfcpw->real_to_recip(this->ctx, this->porter, this->porter, this->ik); - meta_op()(this->ctx, this->ik, j, ngk_ik, this->wfcpw->npwk_max, this->tpiba, wfcpw->get_gcar_data(), wfcpw->get_kvec_c_data(), this->porter, tmhpsi, true); - - } // x,y,z directions - tmhpsi += max_npw; - tmpsi_in += max_npw; - } - ModuleBase::timer::tick("Operator", "MetaPW"); -} - -template -template -Meta>::Meta(const Meta> *meta) { - this->classname = "Meta"; - this->cal_type = calculation_type::pw_meta; - this->ik = meta->get_ik(); - this->isk = meta->get_isk(); - this->tpiba = meta->get_tpiba(); - this->vk = meta->get_vk(); - this->vk_row = meta->get_vk_row(); - this->vk_col = meta->get_vk_col(); - this->wfcpw = meta->get_wfcpw(); - if(this->isk == nullptr || this->tpiba < 1e-10 || this->vk == nullptr || this->wfcpw == nullptr) - { - ModuleBase::WARNING_QUIT("MetaPW", "Constuctor of Operator::MetaPW is failed, please check your code!"); - } -} - -template class Meta, base_device::DEVICE_CPU>>; -template class Meta, base_device::DEVICE_CPU>>; -// template Meta, base_device::DEVICE_CPU>>::Meta(const -// Meta, base_device::DEVICE_CPU>> *meta); -#if ((defined __CUDA) || (defined __ROCM)) -template class Meta, base_device::DEVICE_GPU>>; -template class Meta, base_device::DEVICE_GPU>>; -// template Meta, base_device::DEVICE_CPU>>::Meta(const -// Meta, base_device::DEVICE_GPU>> *meta); template -// Meta, base_device::DEVICE_GPU>>::Meta(const Meta, -// base_device::DEVICE_CPU>> *meta); template Meta, -// base_device::DEVICE_GPU>>::Meta(const Meta, base_device::DEVICE_GPU>> *meta); -#endif -} // namespace hamilt \ No newline at end of file diff --git a/source/source_pw/module_pwdft/operator_pw/meta_pw.h b/source/source_pw/module_pwdft/operator_pw/meta_pw.h deleted file mode 100644 index 8534170079..0000000000 --- a/source/source_pw/module_pwdft/operator_pw/meta_pw.h +++ /dev/null @@ -1,92 +0,0 @@ -#ifndef METAPW_H -#define METAPW_H - -#include "operator_pw.h" -#include "source_base/matrix.h" -#include "source_basis/module_pw/pw_basis_k.h" -#include "source_pw/module_pwdft/kernels/meta_op.h" -#include "source_base/kernels/math_kernel_op.h" - -#include - -namespace hamilt { - -#ifndef __METATEMPLATE -#define __METATEMPLATE - -template class Meta : public T {}; -// template -// class Meta : public OperatorPW {}; - -#endif - -template -class Meta> : public OperatorPW -{ - private: - using Real = typename GetTypeReal::type; - public: - Meta(Real tpiba2_in, - const int* isk_in, - const Real* vk_in, - const int vk_row, - const int vk_col, - const ModulePW::PW_Basis_K* wfcpw); - - template - explicit Meta(const Meta>* meta); - - virtual ~Meta(); - - virtual void act(const int nbands, - const int nbasis, - const int npol, - const T* tmpsi_in, - T* tmhpsi, - const int ngk_ik = 0, - const bool is_first_node = false)const override; - - // denghui added for copy constructor at 20221105 - Real get_tpiba() const - { - return this->tpiba; - } - const int * get_isk() const {return this->isk;} - const Real* get_vk() const {return this->vk;} - int get_vk_row() const {return this->vk_row;} - int get_vk_col() const {return this->vk_col;} - const ModulePW::PW_Basis_K* get_wfcpw() const - { - return this->wfcpw; - } - - private: - - mutable int max_npw = 0; - - mutable int npol = 0; - - mutable int vk_row = 0; - mutable int vk_col = 0; - - Real tpiba = 0.0; - - const int* isk = nullptr; - - const Real * vk = nullptr; - - const ModulePW::PW_Basis_K* wfcpw = nullptr; - - Device* ctx = {}; - base_device::DEVICE_CPU* cpu_ctx = {}; - T *porter = nullptr; - using meta_op = meta_pw_op; - using vector_mul_vector_op = ModuleBase::vector_mul_vector_op; - using resmem_complex_op = base_device::memory::resize_memory_op; - using delmem_complex_op = base_device::memory::delete_memory_op; - using setmem_complex_op = base_device::memory::set_memory_op; -}; - -} // namespace hamilt - -#endif \ No newline at end of file diff --git a/source/source_pw/module_pwdft/operator_pw/nonlocal_pw.cpp b/source/source_pw/module_pwdft/operator_pw/nonlocal_pw.cpp deleted file mode 100644 index 2a87f3c1a7..0000000000 --- a/source/source_pw/module_pwdft/operator_pw/nonlocal_pw.cpp +++ /dev/null @@ -1,329 +0,0 @@ -#include "nonlocal_pw.h" - -#include "source_io/module_parameter/parameter.h" -#include "source_base/timer.h" -#include "source_base/parallel_reduce.h" -#include "source_base/tool_quit.h" - - -namespace hamilt { - -template -Nonlocal>::Nonlocal(const int* isk_in, - const pseudopot_cell_vnl* ppcell_in, - const UnitCell* ucell_in, - const ModulePW::PW_Basis_K* wfc_basis) -{ - if( isk_in == nullptr || ppcell_in == nullptr || ucell_in == nullptr) - { - ModuleBase::WARNING_QUIT("NonlocalPW", "Constuctor of Operator::NonlocalPW is failed, please check your code!"); - } - this->classname = "Nonlocal"; - this->cal_type = calculation_type::pw_nonlocal; - this->wfcpw = wfc_basis; - this->isk = isk_in; - this->ppcell = ppcell_in; - this->ucell = ucell_in; - this->deeq = this->ppcell->template get_deeq_data(); - this->deeq_nc = this->ppcell->template get_deeq_nc_data(); - this->vkb = this->ppcell->template get_vkb_data(); - -} - -template -Nonlocal>::~Nonlocal() { - delmem_complex_op()(this->ps); - delmem_complex_op()(this->becp); -} - -template -void Nonlocal>::init(const int ik_in) -{ - ModuleBase::timer::tick("Nonlocal", "getvnl"); - this->ik = ik_in; - // Calculate nonlocal pseudopotential vkb - if(this->ppcell->nkb > 0) //xiaohui add 2013-09-02. Attention... - { - this->ppcell->getvnl(this->ctx, *this->ucell, this->ik, this->vkb); - } - - if(this->next_op != nullptr) - { - this->next_op->init(ik_in); - } - - ModuleBase::timer::tick("Nonlocal", "getvnl"); -} - -//-------------------------------------------------------------------------- -// this function sum up each non-local pseudopotential located on each atom, -//-------------------------------------------------------------------------- -template -void Nonlocal>::add_nonlocal_pp(T *hpsi_in, const T *becp, const int m) const -{ - ModuleBase::timer::tick("Nonlocal", "add_nonlocal_pp"); - - // number of projectors - int nkb = this->ppcell->nkb; - - // T *ps = new T[nkb * m]; - // ModuleBase::GlobalFunc::ZEROS(ps, m * nkb); - if (this->nkb_m < m * nkb) { - resmem_complex_op()(this->ps, nkb * m, "Nonlocal::ps"); - this->nkb_m = m * nkb; - } - setmem_complex_op()(this->ps, 0, nkb * m); - - int sum = 0; - int iat = 0; - if (this->npol == 1) - { - const int current_spin = this->isk[this->ik]; - for (int it = 0; it < this->ucell->ntype; it++) - { - const int nproj = this->ucell->atoms[it].ncpp.nh; - // denghui replace 2022-10-20 - // <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< - nonlocal_op()( - this->ctx, // device context - this->ucell->atoms[it].na, m, nproj, // four loop size - sum, iat, current_spin, nkb, // additional index params - this->ppcell->deeq.getBound2(), this->ppcell->deeq.getBound3(), this->ppcell->deeq.getBound4(), // realArray operator() - this->deeq, // array of data - this->ps, this->becp); // array of data - // <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< - // for (int ia = 0; ia < this->ucell->atoms[it].na; ia++) - // { - // // each atom has nproj, means this is with structure factor; - // // each projector (each atom) must multiply coefficient - // // with all the other projectors. - // for (int ib = 0; ib < m; ++ib) - // { - // for (int ip2 = 0; ip2 < nproj; ip2++) - // { - // for (int ip = 0; ip < nproj; ip++) - // { - // this->ps[(sum + ip2) * m + ib] - // += this->ppcell->deeq(current_spin, iat, ip, ip2) * this->becp[ib * nkb + sum + ip]; - // } // end ib - // } // end ih - // } // end jh - // sum += nproj; - // ++iat; - // } // end na - } // end nt - } - else - { - for (int it = 0; it < this->ucell->ntype; it++) - { - const int nproj = this->ucell->atoms[it].ncpp.nh; - // added by denghui at 20221109 - // <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< - nonlocal_op()( - this->ctx, // device context - this->ucell->atoms[it].na, m, nproj, // four loop size - sum, iat, nkb, // additional index params - this->ppcell->deeq_nc.getBound2(), this->ppcell->deeq_nc.getBound3(), this->ppcell->deeq_nc.getBound4(), // realArray operator() - this->deeq_nc, // array of data - this->ps, this->becp); // array of data - // >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> - // for (int ia = 0; ia < this->ucell->atoms[it].na; ia++) - // { - // // each atom has nproj, means this is with structure factor; - // // each projector (each atom) must multiply coefficient - // // with all the other projectors. - // for (int ib = 0; ib < m; ib+=2) - // { - // for (int ip2 = 0; ip2 < nproj; ip2++) - // { - // for (int ip = 0; ip < nproj; ip++) - // { - // psind = (sum + ip2) * m + ib; - // becpind = ib * nkb + sum + ip; - // becp1 = becp[becpind]; - // becp2 = becp[becpind + nkb]; - // ps[psind] += this->ppcell->deeq_nc(0, iat, ip2, ip) * becp1 - // + this->ppcell->deeq_nc(1, iat, ip2, ip) * becp2; - // ps[psind + 1] += this->ppcell->deeq_nc(2, iat, ip2, ip) * becp1 - // + this->ppcell->deeq_nc(3, iat, ip2, ip) * becp2; - // } // end ib - // } // end ih - // } // end jh - // sum += nproj; - // ++iat; - // } // end na - } // end nt - } - - // use simple method. - //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< - // qianrui optimize 2021-3-31 - char transa = 'N'; - char transb = 'T'; - if (m == 1) - { - int inc = 1; - // denghui replace 2022-10-20 - // <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< - gemv_op()( - transa, - this->npw, - this->ppcell->nkb, - &this->one, - this->vkb, - this->ppcell->vkb.nc, - this->ps, - inc, - &this->one, - hpsi_in, - inc); - } - else - { - int npm = m; - //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< - // denghui replace 2022-10-20 - #ifdef __DSP - ModuleBase::gemm_op_mt() - #else - gemm_op() - #endif - ( - transa, - transb, - this->npw, - npm, - this->ppcell->nkb, - &this->one, - this->vkb, - this->ppcell->vkb.nc, - this->ps, - npm, - &this->one, - hpsi_in, - this->max_npw - ); - } - ModuleBase::timer::tick("Nonlocal", "add_nonlocal_pp"); -} - -template -void Nonlocal>::act( - const int nbands, - const int nbasis, - const int npol, - const T* tmpsi_in, - T* tmhpsi, - const int ngk_ik, - const bool is_first_node)const -{ - ModuleBase::timer::tick("Operator", "nonlocal_pw"); - if(is_first_node) - { - setmem_complex_op()(tmhpsi, 0, nbasis*nbands/npol); - } - - this->npw = ngk_ik; - this->max_npw = nbasis / npol; - this->npol = npol; - - if (this->ppcell->nkb > 0) - { - //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< - // qianrui optimize 2021-3-31 - int nkb = this->ppcell->nkb; - if (this->nkb_m < nbands * nkb) - { - resmem_complex_op()(this->becp, nbands * nkb, "Nonlocal::becp"); - } - // ModuleBase::ComplexMatrix becp(nbands, nkb, false); - char transa = 'C'; - char transb = 'N'; - if (nbands == 1) - { - int inc = 1; - // denghui replace 2022-10-20 - // <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< - gemv_op()( - transa, - this->npw, - nkb, - &this->one, - this->vkb, - this->ppcell->vkb.nc, - tmpsi_in, - inc, - &this->zero, - this->becp, - inc); - } - else - { - int npm = nbands; - //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< - // denghui replace 2022-10-20 - #ifdef __DSP - ModuleBase::gemm_op_mt() - #else - gemm_op() - #endif - ( - transa, - transb, - nkb, - npm, - this->npw, - &this->one, - this->vkb, - this->ppcell->vkb.nc, - tmpsi_in, - max_npw, - &this->zero, - this->becp, - nkb - ); - } - - Parallel_Reduce::reduce_pool(becp, nkb * nbands); - - this->add_nonlocal_pp(tmhpsi, becp, nbands); - } - - ModuleBase::timer::tick("Operator", "nonlocal_pw"); -} - -template -template -hamilt::Nonlocal>::Nonlocal(const Nonlocal> *nonlocal) -{ - this->classname = "Nonlocal"; - this->cal_type = calculation_type::pw_nonlocal; - this->ik = nonlocal->get_ik(); - this->isk = nonlocal->get_isk(); - this->ppcell = nonlocal->get_ppcell(); - this->ucell = nonlocal->get_ucell(); - this->deeq = this->ppcell->d_deeq; - this->deeq_nc = this->ppcell->template get_deeq_nc_data(); - this->vkb = this->ppcell->template get_vkb_data(); - if( this->isk == nullptr || this->ppcell == nullptr || this->ucell == nullptr) - { - ModuleBase::WARNING_QUIT("NonlocalPW", "Constuctor of Operator::NonlocalPW is failed, please check your code!"); - } -} - -template class Nonlocal, base_device::DEVICE_CPU>>; -template class Nonlocal, base_device::DEVICE_CPU>>; -// template Nonlocal, base_device::DEVICE_CPU>>::Nonlocal(const -// Nonlocal, base_device::DEVICE_CPU>> *nonlocal); -#if ((defined __CUDA) || (defined __ROCM)) -template class Nonlocal, base_device::DEVICE_GPU>>; -template class Nonlocal, base_device::DEVICE_GPU>>; -// template Nonlocal, base_device::DEVICE_CPU>>::Nonlocal(const -// Nonlocal, base_device::DEVICE_GPU>> *nonlocal); template -// Nonlocal, base_device::DEVICE_GPU>>::Nonlocal(const -// Nonlocal, base_device::DEVICE_CPU>> *nonlocal); template -// Nonlocal, base_device::DEVICE_GPU>>::Nonlocal(const -// Nonlocal, base_device::DEVICE_GPU>> *nonlocal); -#endif -} // namespace hamilt diff --git a/source/source_pw/module_pwdft/operator_pw/nonlocal_pw.h b/source/source_pw/module_pwdft/operator_pw/nonlocal_pw.h deleted file mode 100644 index 6a2bf6a954..0000000000 --- a/source/source_pw/module_pwdft/operator_pw/nonlocal_pw.h +++ /dev/null @@ -1,107 +0,0 @@ -#ifndef NONLOCALPW_H -#define NONLOCALPW_H - -#include "operator_pw.h" - -#include "source_cell/unitcell.h" -#include "source_pw/module_pwdft/kernels/nonlocal_op.h" -#include "source_base/kernels/math_kernel_op.h" - -#include "source_pw/module_pwdft/VNL_in_pw.h" - -namespace hamilt { - -#ifndef NONLOCALTEMPLATE_H -#define NONLOCALTEMPLATE_H - -template class Nonlocal : public T {}; -// template -// class Nonlocal : public OperatorPW {}; - -#endif - -template -class Nonlocal> : public OperatorPW -{ - private: - using Real = typename GetTypeReal::type; - public: - Nonlocal(const int* isk_in, - const pseudopot_cell_vnl* ppcell_in, - const UnitCell* ucell_in, - const ModulePW::PW_Basis_K* wfc_basis); - - template - explicit Nonlocal(const Nonlocal>* nonlocal); - - virtual ~Nonlocal(); - - virtual void init(const int ik_in)override; - - virtual void act(const int nbands, - const int nbasis, - const int npol, - const T* tmpsi_in, - T* tmhpsi, - const int ngk_ik = 0, - const bool is_first_node = false)const override; - - const int *get_isk() const {return this->isk;} - const pseudopot_cell_vnl *get_ppcell() const {return this->ppcell;} - const UnitCell *get_ucell() const {return this->ucell;} - T* get_vkb() const - { - return this->vkb; - } - T* get_becp() const - { - return this->becp; - } - - private: - void add_nonlocal_pp(T *hpsi_in, const T *becp, const int m) const; - - mutable int max_npw = 0; - - mutable int npw = 0; - - mutable int npol = 0; - - mutable size_t nkb_m = 0; - - const int* isk = nullptr; - - const pseudopot_cell_vnl* ppcell = nullptr; - - const UnitCell* ucell = nullptr; - - const ModulePW::PW_Basis_K* wfcpw = nullptr; - - mutable T *ps = nullptr; - mutable T *vkb = nullptr; - mutable T *becp = nullptr; - Device* ctx = {}; - base_device::DEVICE_CPU* cpu_ctx = {}; - Real * deeq = nullptr; - T * deeq_nc = nullptr; - // using nonlocal_op = nonlocal_pw_op; - using gemv_op = ModuleBase::gemv_op; - using gemm_op = ModuleBase::gemm_op; - using nonlocal_op = nonlocal_pw_op; - using setmem_complex_op = base_device::memory::set_memory_op; - #ifdef __DSP - using resmem_complex_op = base_device::memory::resize_memory_op_mt; - using delmem_complex_op = base_device::memory::delete_memory_op_mt; - #else - using resmem_complex_op = base_device::memory::resize_memory_op; - using delmem_complex_op = base_device::memory::delete_memory_op; - #endif - using syncmem_complex_h2d_op = base_device::memory::synchronize_memory_op; - - T one{1, 0}; - T zero{0, 0}; -}; - -} // namespace hamilt - -#endif \ No newline at end of file diff --git a/source/source_pw/module_pwdft/operator_pw/onsite_proj_pw.cpp b/source/source_pw/module_pwdft/operator_pw/onsite_proj_pw.cpp deleted file mode 100644 index 56b6d3756a..0000000000 --- a/source/source_pw/module_pwdft/operator_pw/onsite_proj_pw.cpp +++ /dev/null @@ -1,418 +0,0 @@ -#include "onsite_proj_pw.h" - -#include "source_base/timer.h" -#include "source_base/parallel_reduce.h" -#include "source_base/tool_quit.h" -#include "source_lcao/module_deltaspin/spin_constrain.h" -#include "source_lcao/module_dftu/dftu.h" -#include "source_pw/module_pwdft/onsite_projector.h" -#include "source_pw/module_pwdft/kernels/onsite_op.h" - - -namespace hamilt { - -template -OnsiteProj>::OnsiteProj(const int* isk_in, - const UnitCell* ucell_in, - const bool cal_delta_spin, - const bool cal_dftu) -{ - this->classname = "OnsiteProj"; - this->cal_type = calculation_type::pw_onsite; - this->isk = isk_in; - this->ucell = ucell_in; - this->has_delta_spin = cal_delta_spin; - this->has_dftu = cal_dftu; -} - -template -OnsiteProj>::~OnsiteProj() { - delmem_complex_op()(this->ps); - if(this->init_delta_spin) - { - delmem_int_op()(this->ip_iat); - delmem_complex_op()(this->lambda_coeff); - } - if(this->has_dftu) - { - if(!init_delta_spin) - { - delmem_int_op()(this->ip_iat); - } - delmem_int_op()(this->orb_l_iat); - delmem_int_op()(this->ip_m); - delmem_int_op()(this->vu_begin_iat); - delmem_complex_op()(this->vu_device); - } -} - -template -void OnsiteProj>::init(const int ik_in) -{ - ModuleBase::timer::tick("OnsiteProj", "getvnl"); - this->ik = ik_in; - - auto* onsite_p = projectors::OnsiteProjector::get_instance(); - onsite_p->tabulate_atomic(ik_in); - this->tnp = onsite_p->get_tot_nproj(); - - if(this->next_op != nullptr) - { - this->next_op->init(ik_in); - } - - ModuleBase::timer::tick("OnsiteProj", "getvnl"); -} - -//-------------------------------------------------------------------------- -// this function sum up each non-local pseudopotential located on each atom, -//-------------------------------------------------------------------------- -template -void OnsiteProj>::add_onsite_proj(T *hpsi_in, const int npol, const int m) const -{ - ModuleBase::timer::tick("OnsiteProj", "add_onsite_proj"); - - auto* onsite_p = projectors::OnsiteProjector::get_instance(); - // apply the operator to the wavefunction - //std::cout << "use of tab_atomic at " << __FILE__ << ": " << __LINE__ << std::endl; - const std::complex* tab_atomic = onsite_p->get_tab_atomic(); - const int npw = onsite_p->get_npw(); - const int npwx = onsite_p->get_npwx(); - char transa = 'N'; - char transb = 'T'; - int npm = m; - gemm_op()( - transa, - transb, - npw, - npm, - this->tnp, - &this->one, - tab_atomic, - npw, - this->ps, - npm, - &this->one, - hpsi_in, - npwx - ); - ModuleBase::timer::tick("OnsiteProj", "add_onsite_proj"); -} - -template -void OnsiteProj>::update_becp(const T *psi_in, const int npol, const int m) const -{ - auto* onsite_p = projectors::OnsiteProjector::get_instance(); - // calculate - // std::cout << __FILE__ << ":" << __LINE__ << " nbands = " << m << std::endl; - onsite_p->overlap_proj_psi(m, psi_in); -} - -template -void OnsiteProj>::cal_ps_delta_spin(const int npol, const int m) const -{ - if(!this->has_delta_spin) return; - - auto* onsite_p = projectors::OnsiteProjector::get_instance(); - const std::complex* becp = onsite_p->get_becp(); - - spinconstrain::SpinConstrain>& sc = spinconstrain::SpinConstrain>::getScInstance(); - auto& constrain = sc.get_constrain(); - auto& lambda = sc.get_sc_lambda(); - - // T *ps = new T[tnp * m]; - // ModuleBase::GlobalFunc::ZEROS(ps, m * tnp); - if (this->nkb_m < m * tnp) { - resmem_complex_op()(this->ps, tnp * m, "OnsiteProj::ps"); - this->nkb_m = m * tnp; - } - setmem_complex_op()(this->ps, 0, tnp * m); - - if(!this->init_delta_spin) - { - this->init_delta_spin = true; - //prepare ip_iat and lambda_coeff - resmem_int_op()(this->ip_iat, onsite_p->get_tot_nproj()); - resmem_complex_op()(this->lambda_coeff, this->ucell->nat * 4); - std::vector ip_iat0(onsite_p->get_tot_nproj()); - int ip0 = 0; - for(int iat=0;iatucell->nat;iat++) - { - for(int ip=0;ipget_nh(iat);ip++) - { - ip_iat0[ip0++] = iat; - } - } - syncmem_int_h2d_op()(this->ip_iat, ip_iat0.data(), onsite_p->get_tot_nproj()); - } - - // prepare array of nh_iat and lambda_array to pass to the onsite_ps_op operator - std::vector> tmp_lambda_coeff(this->ucell->nat * 4); - for(int iat=0;iatucell->nat;iat++) - { - tmp_lambda_coeff[iat * 4] = std::complex(lambda[iat][2], 0.0); - tmp_lambda_coeff[iat * 4 + 1] = std::complex(lambda[iat][0], lambda[iat][1]); - tmp_lambda_coeff[iat * 4 + 2] = std::complex(lambda[iat][0], -1 * lambda[iat][1]); - tmp_lambda_coeff[iat * 4 + 3] = std::complex(-1 * lambda[iat][2], 0.0); - } - syncmem_complex_h2d_op()(this->lambda_coeff, tmp_lambda_coeff.data(), this->ucell->nat * 4); - // TODO: code block above should be moved to the init function - - hamilt::onsite_ps_op()( - this->ctx, // device context - m, - npol, - this->ip_iat, - tnp, - this->lambda_coeff, - this->ps, becp); - - /*int sum = 0; - if (npol == 1) - { - const int current_spin = this->isk[this->ik]; - } - else - { - for (int iat = 0; iat < this->ucell->nat; iat++) - { - const int nproj = onsite_p->get_nh(iat); - if(constrain[iat].x == 0 && constrain[iat].y == 0 && constrain[iat].z == 0) - { - sum += nproj; - continue; - } - const std::complex coefficients0(lambda[iat][2], 0.0); - const std::complex coefficients1(lambda[iat][0] , lambda[iat][1]); - const std::complex coefficients2(lambda[iat][0] , -1 * lambda[iat][1]); - const std::complex coefficients3(-1 * lambda[iat][2], 0.0); - // each atom has nproj, means this is with structure factor; - // each projector (each atom) must multiply coefficient - // with all the other projectors. - for (int ib = 0; ib < m; ib+=2) - { - for (int ip = 0; ip < nproj; ip++) - { - const int psind = (sum + ip) * m + ib; - const int becpind = ib * tnp + sum + ip; - const std::complex becp1 = becp[becpind]; - const std::complex becp2 = becp[becpind + tnp]; - ps[psind] += coefficients0 * becp1 - + coefficients2 * becp2; - ps[psind + 1] += coefficients1 * becp1 - + coefficients3 * becp2; - } // end ip - } // end ib - sum += nproj; - } // end iat - }*/ -} - -template -void OnsiteProj>::cal_ps_dftu(const int npol, const int m) const -{ - if(!this->has_dftu) return; - - auto* onsite_p = projectors::OnsiteProjector::get_instance(); - const std::complex* becp = onsite_p->get_becp(); - - auto* dftu = ModuleDFTU::DFTU::get_instance(); - - // T *ps = new T[tnp * m]; - // ModuleBase::GlobalFunc::ZEROS(ps, m * tnp); - if (this->nkb_m < m * tnp) { - resmem_complex_op()(this->ps, tnp * m, "OnsiteProj::ps"); - this->nkb_m = m * tnp; - } - if(!this->has_delta_spin) - { - setmem_complex_op()(this->ps, 0, tnp * m); - } - - if(!this->init_dftu) - { - this->init_dftu = true; - //prepare orb_l_iat, ip_m, vu_begin_iat and vu_device - resmem_int_op()(this->orb_l_iat, this->ucell->nat); - resmem_int_op()(this->ip_m, onsite_p->get_tot_nproj()); - resmem_int_op()(this->vu_begin_iat, this->ucell->nat); - // recal the ip_iat - resmem_int_op()(this->ip_iat, onsite_p->get_tot_nproj()); - std::vector ip_iat0(onsite_p->get_tot_nproj()); - std::vector ip_m0(onsite_p->get_tot_nproj()); - std::vector vu_begin_iat0(this->ucell->nat); - std::vector orb_l_iat0(this->ucell->nat); - int ip0 = 0; - int vu_begin = 0; - for(int iat=0;iatucell->nat;iat++) - { - const int it = this->ucell->iat2it[iat]; - const int target_l = dftu->orbital_corr[it]; - orb_l_iat0[iat] = target_l; - const int nproj = onsite_p->get_nh(iat); - if(target_l == -1) - { - for(int ip=0;ip= m_begin && ip < m_end) - { - ip_m0[ip0++] = ip - m_begin; - } - else - { - ip_m0[ip0++] = -1; - } - } - } - } - syncmem_int_h2d_op()(this->orb_l_iat, orb_l_iat0.data(), this->ucell->nat); - syncmem_int_h2d_op()(this->ip_iat, ip_iat0.data(), onsite_p->get_tot_nproj()); - syncmem_int_h2d_op()(this->ip_m, ip_m0.data(), onsite_p->get_tot_nproj()); - syncmem_int_h2d_op()(this->vu_begin_iat, vu_begin_iat0.data(), this->ucell->nat); - - resmem_complex_op()(this->vu_device, dftu->get_size_eff_pot_pw()); - } - - syncmem_complex_h2d_op()(this->vu_device, dftu->get_eff_pot_pw(0), dftu->get_size_eff_pot_pw()); - - hamilt::onsite_ps_op()( - this->ctx, // device context - m, - npol, - this->orb_l_iat, - this->ip_iat, - this->ip_m, - this->vu_begin_iat, - tnp, - this->vu_device, - this->ps, becp); - - /* - int sum = 0; - if (npol == 1) - { - const int current_spin = this->isk[this->ik]; - } - else - { - for (int iat = 0; iat < this->ucell->nat; iat++) - { - const int it = this->ucell->iat2it[iat]; - const int target_l = dftu->orbital_corr[it]; - const int nproj = onsite_p->get_nh(iat); - if(target_l == -1) - { - sum += nproj; - continue; - } - const int ip_begin = target_l * target_l; - const int ip_end = (target_l + 1) * (target_l + 1); - const int tlp1 = 2 * target_l + 1; - const int tlp1_2 = tlp1 * tlp1; - const std::complex* vu = dftu->get_eff_pot_pw(iat); - // each projector (each atom) must multiply coefficient - // with all the other projectors. - for (int ib = 0; ib < m; ib+=2) - { - for (int ip2 = ip_begin; ip2 < ip_end; ip2++) - { - const int psind = (sum + ip2) * m + ib; - const int m2 = ip2 - ip_begin; - for (int ip1 = ip_begin; ip1 < ip_end; ip1++) - { - const int becpind1 = ib * tnp + sum + ip1; - const int m1 = ip1 - ip_begin; - const int index_mm = m1 * tlp1 + m2; - const std::complex becp1 = becp[becpind1]; - const std::complex becp2 = becp[becpind1 + tnp]; - ps[psind] += vu[index_mm] * becp1 - + vu[index_mm + tlp1_2 * 2] * becp2; - ps[psind + 1] += vu[index_mm + tlp1_2 * 1] * becp1 - + vu[index_mm + tlp1_2 * 3] * becp2; - } // end ip1 - } // end ip2 - } // end ib - sum += nproj; - } // end iat - }*/ -} - -template<> -void OnsiteProj, base_device::DEVICE_CPU>>::add_onsite_proj(std::complex *hpsi_in, const int npol, const int m) const -{} -template<> -void OnsiteProj, base_device::DEVICE_CPU>>::update_becp(const std::complex *psi_in, const int npol, const int m) const -{} -template<> -void OnsiteProj, base_device::DEVICE_CPU>>::cal_ps_delta_spin(const int npol, const int m) const -{} -template<> -void OnsiteProj, base_device::DEVICE_CPU>>::cal_ps_dftu(const int npol, const int m) const -{} - -#if ((defined __CUDA) || (defined __ROCM)) -template<> -void OnsiteProj, base_device::DEVICE_GPU>>::add_onsite_proj(std::complex *hpsi_in, const int npol, const int m) const -{} -template<> -void OnsiteProj, base_device::DEVICE_GPU>>::update_becp(const std::complex *psi_in, const int npol, const int m) const -{} -template<> -void OnsiteProj, base_device::DEVICE_GPU>>::cal_ps_delta_spin(const int npol, const int m) const -{} -template<> -void OnsiteProj, base_device::DEVICE_GPU>>::cal_ps_dftu(const int npol, const int m) const -{} -#endif - -template -void OnsiteProj>::act( - const int nbands, - const int nbasis, - const int npol, - const T* tmpsi_in, - T* tmhpsi, - const int ngk_ik, - const bool is_first_node)const -{ - ModuleBase::timer::tick("Operator", "OnsiteProjPW"); - this->update_becp(tmpsi_in, npol, nbands); - this->cal_ps_delta_spin(npol, nbands); - this->cal_ps_dftu(npol, nbands); - this->add_onsite_proj(tmhpsi, npol, nbands); - ModuleBase::timer::tick("Operator", "OnsiteProjPW"); -} - -template -template -hamilt::OnsiteProj>::OnsiteProj(const OnsiteProj> *nonlocal) -{ - this->classname = "OnsiteProj"; - this->cal_type = calculation_type::pw_nonlocal; - // FIXME: -} - -template class OnsiteProj, base_device::DEVICE_CPU>>; -template class OnsiteProj, base_device::DEVICE_CPU>>; - -#if ((defined __CUDA) || (defined __ROCM)) -template class OnsiteProj, base_device::DEVICE_GPU>>; -template class OnsiteProj, base_device::DEVICE_GPU>>; -#endif -} // namespace hamilt \ No newline at end of file diff --git a/source/source_pw/module_pwdft/operator_pw/onsite_proj_pw.h b/source/source_pw/module_pwdft/operator_pw/onsite_proj_pw.h deleted file mode 100644 index b8606aa087..0000000000 --- a/source/source_pw/module_pwdft/operator_pw/onsite_proj_pw.h +++ /dev/null @@ -1,98 +0,0 @@ -#ifndef MODULEHAMILTPW_ONSITE_PROJ_PW_H -#define MODULEHAMILTPW_ONSITE_PROJ_PW_H - -#include "operator_pw.h" - -#include "source_cell/unitcell.h" -#include "source_base/kernels/math_kernel_op.h" - -namespace hamilt { - -#ifndef ONSITETEMPLATE_H -#define ONSITETEMPLATE_H - -template class OnsiteProj : public T {}; -// template -// class OnsiteProj : public OperatorPW {}; - -#endif - -template -class OnsiteProj> : public OperatorPW -{ - private: - using Real = typename GetTypeReal::type; - public: - OnsiteProj(const int* isk_in, - const UnitCell* ucell_in, - const bool cal_delta_spin, - const bool cal_dftu); - - template - explicit OnsiteProj(const OnsiteProj>* onsite_proj); - - virtual ~OnsiteProj(); - - virtual void init(const int ik_in)override; - - virtual void act(const int nbands, - const int nbasis, - const int npol, - const T* tmpsi_in, - T* tmhpsi, - const int ngk = 0, - const bool is_first_node = false)const override; - - const int *get_isk() const {return this->isk;} - const UnitCell *get_ucell() const {return this->ucell;} - - private: - void cal_ps_delta_spin(const int npol, const int m) const; - void cal_ps_dftu(const int npol, const int m) const; - void update_becp(const T* psi_in, const int npol, const int m) const; - void add_onsite_proj(T *hpsi_in, const int npol, const int m) const; - - const int* isk = nullptr; - - const UnitCell* ucell = nullptr; - - mutable int* ip_iat = nullptr; - mutable T* lambda_coeff = nullptr; - mutable int* orb_l_iat = nullptr; - mutable int* ip_m = nullptr; - mutable int* vu_begin_iat = nullptr; - mutable T* vu_device = nullptr; - - mutable int nkb_m = 0; - - bool has_delta_spin = false; - bool has_dftu = false; - - mutable bool init_dftu = false; - mutable bool init_delta_spin = false; - - mutable T *ps = nullptr; - int tnp = 0; - Device* ctx = {}; - base_device::DEVICE_CPU* cpu_ctx = {}; - - using gemv_op = ModuleBase::gemv_op; - using gemm_op = ModuleBase::gemm_op; - using setmem_complex_op = base_device::memory::set_memory_op; - using resmem_complex_op = base_device::memory::resize_memory_op; - using delmem_complex_op = base_device::memory::delete_memory_op; - using syncmem_complex_h2d_op = base_device::memory::synchronize_memory_op; - using resmem_int_op = base_device::memory::resize_memory_op; - using resmem_real_op = base_device::memory::resize_memory_op; - using delmem_int_op = base_device::memory::delete_memory_op; - using delmem_real_op = base_device::memory::delete_memory_op; - using syncmem_int_h2d_op = base_device::memory::synchronize_memory_op; - using syncmem_real_h2d_op = base_device::memory::synchronize_memory_op; - - T one{1, 0}; - T zero{0, 0}; -}; - -} // namespace hamilt - -#endif \ No newline at end of file diff --git a/source/source_pw/module_pwdft/operator_pw/op_exx_pw.cpp b/source/source_pw/module_pwdft/operator_pw/op_exx_pw.cpp deleted file mode 100644 index 68bfca3158..0000000000 --- a/source/source_pw/module_pwdft/operator_pw/op_exx_pw.cpp +++ /dev/null @@ -1,1072 +0,0 @@ -#include "op_exx_pw.h" - -#include "source_base/constants.h" -#include "source_base/global_variable.h" -#include "source_base/parallel_common.h" -#include "source_base/parallel_reduce.h" -#include "source_base/module_external/lapack_connector.h" -#include "source_base/timer.h" -#include "source_base/tool_quit.h" -#include "source_cell/klist.h" -#include "source_hamilt/operator.h" -#include "source_psi/psi.h" -#include "source_pw/module_pwdft/global.h" -#include "source_pw/module_pwdft/kernels/cal_density_real_op.h" -#include "source_pw/module_pwdft/kernels/exx_cal_energy_op.h" -#include "source_pw/module_pwdft/kernels/mul_potential_op.h" -#include "source_pw/module_pwdft/kernels/vec_mul_vec_complex_op.h" - -#include -#include -#include -#include - -namespace hamilt -{ - -template -OperatorEXXPW::OperatorEXXPW(const int* isk_in, - const ModulePW::PW_Basis_K* wfcpw_in, - const ModulePW::PW_Basis* rhopw_in, - K_Vectors *kv_in, - const UnitCell *ucell) - : isk(isk_in), wfcpw(wfcpw_in), rhopw(rhopw_in), kv(kv_in), ucell(ucell) -{ - gamma_extrapolation = PARAM.inp.exx_gamma_extrapolation; - bool is_mp = kv_in->get_is_mp(); -#ifdef __MPI - Parallel_Common::bcast_bool(is_mp); -#endif - if (!is_mp) - { - gamma_extrapolation = false; - } - if (GlobalV::KPAR != 1) - { - // GlobalV::ofs_running << "EXX Calculation does not support k-point parallelism" << std::endl; - ModuleBase::WARNING_QUIT("OperatorEXXPW", "EXX Calculation does not support k-point parallelism"); - } - - this->classname = "OperatorEXXPW"; - this->ctx = nullptr; - this->cpu_ctx = nullptr; - this->cal_type = hamilt::calculation_type::pw_exx; - - // allocate real space memory - // assert(wfcpw->nrxx == rhopw->nrxx); - resmem_complex_op()(psi_nk_real, wfcpw->nrxx); - resmem_complex_op()(psi_mq_real, wfcpw->nrxx); - resmem_complex_op()(density_real, rhopw->nrxx); - resmem_complex_op()(h_psi_real, rhopw->nrxx); - // allocate density recip space memory - resmem_complex_op()(density_recip, rhopw->npw); - // allocate h_psi recip space memory - resmem_complex_op()(h_psi_recip, wfcpw->npwk_max); - // resmem_complex_op()(this->ctx, psi_all_real, wfcpw->nrxx * GlobalV::NBANDS); - - int nks = wfcpw->nks; - int nk_fac = PARAM.inp.nspin == 2 ? 2 : 1; - resmem_real_op()(pot, rhopw->npw * nks * nks); - - tpiba = ucell->tpiba; - Real tpiba2 = tpiba * tpiba; - - rhopw_dev = new ModulePW::PW_Basis(wfcpw->get_device(), rhopw->get_precision()); - rhopw_dev->fft_bundle.setfft(wfcpw->get_device(), rhopw->get_precision()); -#ifdef __MPI - rhopw_dev->initmpi(rhopw->poolnproc, rhopw->poolrank, rhopw->pool_world); -#endif - // here we can actually use different ecut to init the grids - rhopw_dev->initgrids(rhopw->lat0, rhopw->latvec, rhopw->gridecut_lat * rhopw->tpiba2); - rhopw_dev->initgrids(rhopw->lat0, rhopw->latvec, rhopw->nx, rhopw->ny, rhopw->nz); - rhopw_dev->initparameters(rhopw->gamma_only, rhopw->ggecut * rhopw->tpiba2, rhopw->distribution_type, rhopw->xprime); - rhopw_dev->setuptransform(); - rhopw_dev->collect_local_pw(); - -} // end of constructor - -template -OperatorEXXPW::~OperatorEXXPW() -{ - // use delete_memory_op to delete the allocated pws - delmem_complex_op()(psi_nk_real); - delmem_complex_op()(psi_mq_real); - delmem_complex_op()(density_real); - delmem_complex_op()(h_psi_real); - delmem_complex_op()(density_recip); - delmem_complex_op()(h_psi_recip); - - delmem_real_op()(pot); - - delmem_complex_op()(h_psi_ace); - delmem_complex_op()(psi_h_psi_ace); - delmem_complex_op()(L_ace); - for (auto &Xi_ace: Xi_ace_k) - { - delmem_complex_op()(Xi_ace); - } - Xi_ace_k.clear(); - delete rhopw_dev; -} - -template -inline bool is_finite(const T &val) -{ - return std::isfinite(val); -} - -template <> -inline bool is_finite(const std::complex &val) -{ - return std::isfinite(val.real()) && std::isfinite(val.imag()); -} - -template <> -inline bool is_finite(const std::complex &val) -{ - return std::isfinite(val.real()) && std::isfinite(val.imag()); -} - -template -void OperatorEXXPW::act(const int nbands, - const int nbasis, - const int npol, - const T *tmpsi_in, - T *tmhpsi, - const int ngk_ik, - const bool is_first_node) const -{ - if (first_iter) return; - - if (is_first_node) - { - setmem_complex_op()(tmhpsi, 0, nbasis*nbands/npol); - } - - if (PARAM.inp.exxace && GlobalC::exx_info.info_global.separate_loop) - { - act_op_ace(nbands, nbasis, npol, tmpsi_in, tmhpsi, ngk_ik, is_first_node); - } - else - { - act_op(nbands, nbasis, npol, tmpsi_in, tmhpsi, ngk_ik, is_first_node); - } -} - -template -void OperatorEXXPW::act_op(const int nbands, - const int nbasis, - const int npol, - const T *tmpsi_in, - T *tmhpsi, - const int ngk_ik, - const bool is_first_node) const -{ -// std::cout << "nbands: " << nbands -// << " nbasis: " << nbasis -// << " npol: " << npol -// << " ngk_ik: " << ngk_ik -// << " is_first_node: " << is_first_node -// << std::endl; - if (!potential_got) - { - get_potential(); - potential_got = true; - } - -// set_psi(&p_exx_helper->psi); - - ModuleBase::timer::tick("OperatorEXXPW", "act_op"); - - setmem_complex_op()(h_psi_recip, 0, wfcpw->npwk_max); - setmem_complex_op()(h_psi_real, 0, rhopw_dev->nrxx); - setmem_complex_op()(density_real, 0, rhopw_dev->nrxx); - setmem_complex_op()(density_recip, 0, rhopw_dev->npw); - // setmem_complex_op()(psi_all_real, 0, wfcpw->nrxx * GlobalV::NBANDS); - // std::map, bool> has_real; - setmem_complex_op()(psi_nk_real, 0, wfcpw->nrxx); - setmem_complex_op()(psi_mq_real, 0, wfcpw->nrxx); - - // ik fixed here, select band n - for (int n_iband = 0; n_iband < nbands; n_iband++) - { - const T *psi_nk = tmpsi_in + n_iband * nbasis; - // retrieve \psi_nk in real space - wfcpw->recip_to_real(ctx, psi_nk, psi_nk_real, this->ik); - - // for \psi_nk, get the pw of iq and band m - auto q_points = get_q_points(this->ik); - Real nqs = q_points.size(); - for (int iq: q_points) - { -// std::cout << "ik" << this->ik << " iq" << iq << std::endl; - for (int m_iband = 0; m_iband < psi.get_nbands(); m_iband++) - { - // double wg_mqb_real = GlobalC::exx_helper.wg(iq, m_iband); - double wg_mqb_real = (*wg)(this->ik, m_iband); - T wg_mqb = wg_mqb_real; - if (wg_mqb_real < 1e-12) - { - continue; - } - - const T* psi_mq = get_pw(m_iband, iq); - wfcpw->recip_to_real(ctx, psi_mq, psi_mq_real, iq); - - // direct multiplication in real space, \psi_nk(r) * \psi_mq(r) - cal_density_recip(psi_nk_real, psi_mq_real, ucell->omega); - - // bring the density to recip space - // rhopw->real2recip(density_real, density_recip); - - // multiply the density with the potential in recip space - multiply_potential(density_recip, this->ik, iq); - - // bring the potential back to real space - // rhopw_dev->recip2real(density_recip, density_real); - rho_recip2real(density_recip, density_real); - - if (false) - { - // do nothing - } - else - { - vec_mul_vec_complex_op()(density_real, psi_mq_real, density_real, wfcpw->nrxx); - } - - T wk_iq = kv->wk[iq]; - T wk_ik = kv->wk[this->ik]; - - T tmp_scalar = wg_mqb / wk_iq / nqs; - axpy_complex_op()(wfcpw->nrxx, - &tmp_scalar, - density_real, - 1, - h_psi_real, - 1); - - } // end of m_iband - setmem_complex_op()(density_real, 0, rhopw_dev->nrxx); - setmem_complex_op()(density_recip, 0, rhopw_dev->npw); - setmem_complex_op()(psi_mq_real, 0, wfcpw->nrxx); - - } // end of iq - T* h_psi_nk = tmhpsi + n_iband * nbasis; - Real hybrid_alpha = GlobalC::exx_info.info_global.hybrid_alpha; - wfcpw->real_to_recip(ctx, h_psi_real, h_psi_nk, this->ik, true, hybrid_alpha); - setmem_complex_op()(h_psi_real, 0, rhopw_dev->nrxx); - - } - - ModuleBase::timer::tick("OperatorEXXPW", "act_op"); - -} - -template -void OperatorEXXPW::act_op_ace(const int nbands, - const int nbasis, - const int npol, - const T *tmpsi_in, - T *tmhpsi, - const int ngk_ik, - const bool is_first_node) const -{ - ModuleBase::timer::tick("OperatorEXXPW", "act_op_ace"); -// std::cout << "act_op_ace" << std::endl; - // hpsi += -Xi^\dagger * Xi * psi - T* Xi_ace = Xi_ace_k[this->ik]; - int nbands_tot = psi.get_nbands(); - int nbasis_max = psi.get_nbasis(); -// T* hpsi = nullptr; -// resmem_complex_op()(hpsi, nbands_tot * nbasis); -// setmem_complex_op()(hpsi, 0, nbands_tot * nbasis); - T* Xi_psi = nullptr; - resmem_complex_op()(Xi_psi, nbands_tot * nbands); - setmem_complex_op()(Xi_psi, 0, nbands_tot * nbands); - - char trans_N = 'N', trans_T = 'T', trans_C = 'C'; - T intermediate_one = 1.0, intermediate_zero = 0.0, intermediate_minus_one = -1.0; - // Xi * psi - gemm_complex_op()(trans_N, - trans_N, - nbands_tot, - nbands, - nbasis, - &intermediate_one, - Xi_ace, - nbands_tot, - tmpsi_in, - nbasis, - &intermediate_zero, - Xi_psi, - nbands_tot - ); - - Parallel_Reduce::reduce_pool(Xi_psi, nbands_tot * nbands); - - // Xi^\dagger * (Xi * psi) - gemm_complex_op()(trans_C, - trans_N, - nbasis, - nbands, - nbands_tot, - &intermediate_minus_one, - Xi_ace, - nbands_tot, - Xi_psi, - nbands_tot, - &intermediate_one, - tmhpsi, - nbasis - ); - - -// // negative sign, add to hpsi -// vec_add_vec_complex_op()(this->ctx, nbands * nbasis, tmhpsi, hpsi, -1, tmhpsi, 1); -// delmem_complex_op()(hpsi); - delmem_complex_op()(Xi_psi); - ModuleBase::timer::tick("OperatorEXXPW", "act_op_ace"); - -} - -template -void OperatorEXXPW::construct_ace() const -{ - ModuleBase::timer::tick("OperatorEXXPW", "construct_ace"); -// int nkb = p_exx_helper->psi.get_nbands() * p_exx_helper->psi.get_nk(); - int nbands = psi.get_nbands(); - int nbasis = psi.get_nbasis(); - int nk = psi.get_nk(); - - int ik_save = this->ik; - int * ik_ = const_cast(&this->ik); - - T intermediate_one = 1.0, intermediate_zero = 0.0; - - if (h_psi_ace == nullptr) - { - resmem_complex_op()(h_psi_ace, nbands * nbasis); - setmem_complex_op()(h_psi_ace, 0, nbands * nbasis); - } - - if (Xi_ace_k.size() != nk) - { - Xi_ace_k.resize(nk); - for (int i = 0; i < nk; i++) - { - resmem_complex_op()(Xi_ace_k[i], nbands * nbasis); - } - } - - for (int i = 0; i < nk; i++) - { - setmem_complex_op()(Xi_ace_k[i], 0, nbands * nbasis); - } - - if (L_ace == nullptr) - { - resmem_complex_op()(L_ace, nbands * nbands); - setmem_complex_op()(L_ace, 0, nbands * nbands); - } - - if (psi_h_psi_ace == nullptr) - { - resmem_complex_op()(psi_h_psi_ace, nbands * nbands); - } - - if (first_iter) return; - - for (int ik = 0; ik < nk; ik++) - { - int npwk = wfcpw->npwk[ik]; - - T* Xi_ace = Xi_ace_k[ik]; - psi.fix_kb(ik, 0); - T* p_psi = psi.get_pointer(); - - setmem_complex_op()(h_psi_ace, 0, nbands * nbasis); - - *ik_ = ik; - - act_op( - nbands, - nbasis, - 1, - p_psi, - h_psi_ace, - nbasis, - false - ); - - // psi_h_psi_ace = psi^\dagger * h_psi_ace - // p_exx_helper->psi.fix_kb(0, 0); - gemm_complex_op()('C', - 'N', - nbands, - nbands, - npwk, - &intermediate_one, - p_psi, - nbasis, - h_psi_ace, - nbasis, - &intermediate_zero, - psi_h_psi_ace, - nbands); - - // reduction of psi_h_psi_ace, due to distributed memory - Parallel_Reduce::reduce_pool(psi_h_psi_ace, nbands * nbands); - - T intermediate_minus_one = -1.0; - axpy_complex_op()(nbands * nbands, - &intermediate_minus_one, - psi_h_psi_ace, - 1, - L_ace, - 1); - - - int info = 0; - char up = 'U', lo = 'L'; - - lapack_potrf()(lo, nbands, L_ace, nbands); - - // expand for-loop - for (int i = 0; i < nbands; ++i) { - setmem_complex_op()(L_ace + i * nbands, 0, i); - } - - // L_ace inv in place - char non = 'N'; - lapack_trtri()(lo, non, nbands, L_ace, nbands); - - // Xi_ace = L_ace^-1 * h_psi_ace^dagger - gemm_complex_op()('N', - 'C', - nbands, - npwk, - nbands, - &intermediate_one, - L_ace, - nbands, - h_psi_ace, - nbasis, - &intermediate_zero, - Xi_ace, - nbands); - - // clear mem - setmem_complex_op()(h_psi_ace, 0, nbands * nbasis); - setmem_complex_op()(psi_h_psi_ace, 0, nbands * nbands); - setmem_complex_op()(L_ace, 0, nbands * nbands); - - } - - *ik_ = ik_save; - ModuleBase::timer::tick("OperatorEXXPW", "construct_ace"); - -} - -template -std::vector OperatorEXXPW::get_q_points(const int ik) const -{ - // stored in q_points - if (q_points.find(ik) != q_points.end()) - { - return q_points.find(ik)->second; - } - - std::vector q_points_ik; - - // if () // downsampling - { - for (int iq = 0; iq < wfcpw->nks; iq++) - { - if (PARAM.inp.nspin ==1 ) - { - q_points_ik.push_back(iq); - } - else if (PARAM.inp.nspin == 2) - { - int nk_fac = 2; - int nk = wfcpw->nks / nk_fac; - if (iq / nk == ik / nk) - { - q_points_ik.push_back(iq); - } - } - else - { - ModuleBase::WARNING_QUIT("OperatorEXXPW", "nspin == 4 not supported"); - } - } - } - // else - // { - // for (int iq = 0; iq < wfcpw->nks; iq++) - // { - // kv-> - // } - // } - - q_points[ik] = q_points_ik; - return q_points_ik; -} - -template -void OperatorEXXPW::multiply_potential(T *density_recip, int ik, int iq) const -{ - ModuleBase::timer::tick("OperatorEXXPW", "multiply_potential"); - int npw = rhopw_dev->npw; - int nks = wfcpw->nks; - int nk_fac = PARAM.inp.nspin == 2 ? 2 : 1; - int nk = nks / nk_fac; - - mul_potential_op()(pot, density_recip, npw, nks, ik, iq); - - ModuleBase::timer::tick("OperatorEXXPW", "multiply_potential"); -} - -template -const T *OperatorEXXPW::get_pw(const int m, const int iq) const -{ - // return pws[iq].get() + m * wfcpw->npwk[iq]; - psi.fix_kb(iq, m); - T* psi_mq = psi.get_pointer(); - return psi_mq; -} - -template -template -OperatorEXXPW::OperatorEXXPW(const OperatorEXXPW *op) -{ - // copy all the datas - this->isk = op->isk; - this->wfcpw = op->wfcpw; - this->rhopw = op->rhopw; - this->rhopw_dev = op->rhopw_dev; - this->psi = op->psi; - this->ctx = op->ctx; - this->cpu_ctx = op->cpu_ctx; - resmem_complex_op()(this->ctx, psi_nk_real, wfcpw->nrxx); - resmem_complex_op()(this->ctx, psi_mq_real, wfcpw->nrxx); - resmem_complex_op()(this->ctx, density_real, rhopw_dev->nrxx); - resmem_complex_op()(this->ctx, h_psi_real, rhopw_dev->nrxx); - resmem_complex_op()(this->ctx, density_recip, rhopw_dev->npw); - resmem_complex_op()(this->ctx, h_psi_recip, wfcpw->npwk_max); -// this->pws.resize(wfcpw->nks); - - -} - -template -void OperatorEXXPW::get_potential() const -{ - Real nqs_half1 = 0.5 * kv->nmp[0]; - Real nqs_half2 = 0.5 * kv->nmp[1]; - Real nqs_half3 = 0.5 * kv->nmp[2]; - - Real* pot_cpu = nullptr; - int nks = wfcpw->nks, npw = rhopw_dev->npw; - double tpiba2 = tpiba * tpiba; - pot_cpu = new Real[npw * wfcpw->nks * wfcpw->nks]; - // fill zero - setmem_real_cpu_op()(pot_cpu, 0, npw * nks * nks); - - // calculate Fock pot - auto param_fock = GlobalC::exx_info.info_global.coulomb_param[Conv_Coulomb_Pot_K::Coulomb_Type::Fock]; - for (auto param : param_fock) - { - double exx_div = exx_divergence(Conv_Coulomb_Pot_K::Coulomb_Type::Fock); - double alpha = std::stod(param["alpha"]); - for (int ik = 0; ik < nks; ik++) - { - for (int iq = 0; iq < nks; iq++) - { - const ModuleBase::Vector3 k_c = wfcpw->kvec_c[ik]; - const ModuleBase::Vector3 k_d = wfcpw->kvec_d[ik]; - const ModuleBase::Vector3 q_c = wfcpw->kvec_c[iq]; - const ModuleBase::Vector3 q_d = wfcpw->kvec_d[iq]; - -#ifdef _OPENMP -#pragma omp parallel for schedule(static) -#endif - for (int ig = 0; ig < rhopw_dev->npw; ig++) - { - const ModuleBase::Vector3 g_d = rhopw_dev->gdirect[ig]; - const ModuleBase::Vector3 kqg_d = k_d - q_d + g_d; - // For gamma_extrapolation (https://doi.org/10.1103/PhysRevB.79.205114) - // 7/8 of the points in the grid are "activated" and 1/8 are disabled. - // grid_factor is designed for the 7/8 of the grid to function like all of the points - Real grid_factor = 1; - double extrapolate_grid = 8.0 / 7.0; - if (gamma_extrapolation) - { - // if isint(kqg_d[0] * nqs_half1) && isint(kqg_d[1] * nqs_half2) && isint(kqg_d[2] * nqs_half3) - auto isint = [](double x) { - double epsilon = 1e-6; // this follows the isint judgement in q-e - return std::abs(x - std::round(x)) < epsilon; - }; - if (isint(kqg_d[0] * nqs_half1) && isint(kqg_d[1] * nqs_half2) && isint(kqg_d[2] * nqs_half3)) - { - grid_factor = 0; - } - else - { - grid_factor = extrapolate_grid; - } - } - - const int nk_fac = PARAM.inp.nspin == 2 ? 2 : 1; - const int nk = nks / nk_fac; - const int ig_kq = ik * nks * npw + iq * npw + ig; - - Real gg = (k_c - q_c + rhopw_dev->gcar[ig]).norm2() * tpiba2; - // if (kqgcar2 > 1e-12) // vasp uses 1/40 of the smallest (k spacing)**2 - if (gg >= 1e-8) - { - Real fac = -ModuleBase::FOUR_PI * ModuleBase::e2 / gg; - pot_cpu[ig_kq] += fac * grid_factor * alpha; - } - // } - else - { - pot_cpu[ig_kq] += exx_div * alpha; - } - // assert(is_finite(density_recip[ig])); - } - } - } - } - - // calculate erfc pot - auto param_erfc = GlobalC::exx_info.info_global.coulomb_param[Conv_Coulomb_Pot_K::Coulomb_Type::Erfc]; - for (auto param : param_erfc) - { - double erfc_omega = std::stod(param["omega"]); - double erfc_omega2 = erfc_omega * erfc_omega; - double alpha = std::stod(param["alpha"]); - double exx_div = exx_divergence(Conv_Coulomb_Pot_K::Coulomb_Type::Erfc, erfc_omega); - for (int ik = 0; ik < nks; ik++) - { - for (int iq = 0; iq < nks; iq++) - { - const ModuleBase::Vector3 k_c = wfcpw->kvec_c[ik]; - const ModuleBase::Vector3 k_d = wfcpw->kvec_d[ik]; - const ModuleBase::Vector3 q_c = wfcpw->kvec_c[iq]; - const ModuleBase::Vector3 q_d = wfcpw->kvec_d[iq]; - -#ifdef _OPENMP -#pragma omp parallel for schedule(static) -#endif - for (int ig = 0; ig < rhopw_dev->npw; ig++) - { - const ModuleBase::Vector3 g_d = rhopw_dev->gdirect[ig]; - const ModuleBase::Vector3 kqg_d = k_d - q_d + g_d; - // For gamma_extrapolation (https://doi.org/10.1103/PhysRevB.79.205114) - // 7/8 of the points in the grid are "activated" and 1/8 are disabled. - // grid_factor is designed for the 7/8 of the grid to function like all of the points - Real grid_factor = 1; - double extrapolate_grid = 8.0 / 7.0; - if (gamma_extrapolation) - { - // if isint(kqg_d[0] * nqs_half1) && isint(kqg_d[1] * nqs_half2) && isint(kqg_d[2] * nqs_half3) - auto isint = [](double x) { - double epsilon = 1e-6; // this follows the isint judgement in q-e - return std::abs(x - std::round(x)) < epsilon; - }; - if (isint(kqg_d[0] * nqs_half1) && isint(kqg_d[1] * nqs_half2) && isint(kqg_d[2] * nqs_half3)) - { - grid_factor = 0; - } - else - { - grid_factor = extrapolate_grid; - } - } - - const int nk_fac = PARAM.inp.nspin == 2 ? 2 : 1; - const int nk = nks / nk_fac; - const int ig_kq = ik * nks * npw + iq * npw + ig; - - Real gg = (k_c - q_c + rhopw_dev->gcar[ig]).norm2() * tpiba2; - // if (kqgcar2 > 1e-12) // vasp uses 1/40 of the smallest (k spacing)**2 - if (gg >= 1e-8) - { - Real fac = -ModuleBase::FOUR_PI * ModuleBase::e2 / gg; - pot_cpu[ig_kq] += fac * (1.0 - std::exp(-gg / 4.0 / erfc_omega2)) * grid_factor * alpha; - } - // } - else - { - // if (PARAM.inp.dft_functional == "hse") - if (!gamma_extrapolation) - { - pot_cpu[ig_kq] += (exx_div - ModuleBase::PI * ModuleBase::e2 / erfc_omega2) * alpha; - } - else - { - pot_cpu[ig_kq] += exx_div * alpha; - } - } - // assert(is_finite(density_recip[ig])); - } - } - } - } - - // copy the potential to the device memory - syncmem_real_c2d_op()(pot, pot_cpu, rhopw_dev->npw * wfcpw->nks * wfcpw->nks); - - delete pot_cpu; -} - -template -double OperatorEXXPW::exx_divergence(Conv_Coulomb_Pot_K::Coulomb_Type coulomb_type, double erfc_omega) const -{ - double exx_div = 0; - - Real nqs_half1 = 0.5 * kv->nmp[0]; - Real nqs_half2 = 0.5 * kv->nmp[1]; - Real nqs_half3 = 0.5 * kv->nmp[2]; - - int nk_fac = PARAM.inp.nspin == 2 ? 2 : 1; - - // here we follow the exx_divergence subroutine in q-e (PW/src/exx_base.f90) - double alpha = 10.0 / wfcpw->gk_ecut; - double tpiba2 = tpiba * tpiba; - double div = 0; - - // this is the \sum_q F(q) part - // temporarily for all k points, should be replaced to q points later - for (int ik = 0; ik < wfcpw->nks; ik++) - { - const ModuleBase::Vector3 k_c = wfcpw->kvec_c[ik]; - const ModuleBase::Vector3 k_d = wfcpw->kvec_d[ik]; -#ifdef _OPENMP -#pragma omp parallel for reduction(+:div) -#endif - for (int ig = 0; ig < rhopw_dev->npw; ig++) - { - const ModuleBase::Vector3 q_c = k_c + rhopw_dev->gcar[ig]; - const ModuleBase::Vector3 q_d = k_d + rhopw_dev->gdirect[ig]; - double qq = q_c.norm2(); - // For gamma_extrapolation (https://doi.org/10.1103/PhysRevB.79.205114) - // 7/8 of the points in the grid are "activated" and 1/8 are disabled. - // grid_factor is designed for the 7/8 of the grid to function like all of the points - Real grid_factor = 1; - double extrapolate_grid = 8.0/7.0; - if (gamma_extrapolation) - { - auto isint = [](double x) - { - double epsilon = 1e-6; // this follows the isint judgement in q-e - return std::abs(x - std::round(x)) < epsilon; - }; - if (isint(q_d[0] * nqs_half1) && - isint(q_d[1] * nqs_half2) && - isint(q_d[2] * nqs_half3)) - { - grid_factor = 0; - } - else - { - grid_factor = extrapolate_grid; - } - } - - if (qq <= 1e-8) continue; - // else if (PARAM.inp.dft_functional == "hse") - else if (coulomb_type == Conv_Coulomb_Pot_K::Coulomb_Type::Erfc) - { - double omega = erfc_omega; - double omega2 = omega * omega; - div += std::exp(-alpha * qq) / qq * (1.0 - std::exp(-qq*tpiba2 / 4.0 / omega2)) * grid_factor; - } - else - { - div += std::exp(-alpha * qq) / qq * grid_factor; - } - } - } - - Parallel_Reduce::reduce_pool(div); - // std::cout << "EXX div: " << div << std::endl; - - // if (PARAM.inp.dft_functional == "hse") - if (!gamma_extrapolation) - { - if (coulomb_type == Conv_Coulomb_Pot_K::Coulomb_Type::Erfc) - { - double omega = erfc_omega; - div += tpiba2 / 4.0 / omega / omega; // compensate for the finite value when qq = 0 - } - else - { - div -= alpha; - } - - } - - div *= ModuleBase::e2 * ModuleBase::FOUR_PI / tpiba2 / wfcpw->nks; -// std::cout << "div: " << div << std::endl; - - // numerically value the mean value of F(q) in the reciprocal space - // This means we need to calculate the average of F(q) in the first brillouin zone - alpha /= tpiba2; - int nqq = 100000; - double dq = 5.0 / std::sqrt(alpha) / nqq; - double aa = 0.0; - // if (PARAM.inp.dft_functional == "hse") - if (coulomb_type == Conv_Coulomb_Pot_K::Coulomb_Type::Erfc) - { - double omega = erfc_omega; - double omega2 = omega * omega; -#ifdef _OPENMP -#pragma omp parallel for reduction(+:aa) -#endif - for (int i = 0; i < nqq; i++) - { - double q = dq * (i+0.5); - aa -= exp(-alpha * q * q) * exp(-q*q / 4.0 / omega2) * dq; - } - } - aa *= 8 / ModuleBase::FOUR_PI; - aa += 1.0 / std::sqrt(alpha * ModuleBase::PI); - - // printf("ucell: %p\n", ucell); - double omega = ucell->omega; - div -= ModuleBase::e2 * omega * aa; - exx_div = div * wfcpw->nks / nk_fac; -// exx_div = 0; -// std::cout << "EXX divergence: " << exx_div << std::endl; - - return exx_div; -} - -template -double OperatorEXXPW::cal_exx_energy(psi::Psi *psi_) const -{ - if (PARAM.inp.exxace && GlobalC::exx_info.info_global.separate_loop) - { - return cal_exx_energy_ace(psi_); - } - else - { - return cal_exx_energy_op(psi_); - } -} - -template -double OperatorEXXPW::cal_exx_energy_ace(psi::Psi *ppsi_) const -{ - double Eexx = 0; - - psi::Psi psi_ = *ppsi_; - int *ik_ = const_cast(&this->ik); - int ik_save = this->ik; - for (int i = 0; i < wfcpw->nks; i++) - { - setmem_complex_op()(h_psi_ace, 0, psi_.get_nbands() * psi_.get_nbasis()); - *ik_ = i; - psi_.fix_kb(i, 0); - T* psi_i = psi_.get_pointer(); - act_op_ace(psi_.get_nbands(), psi_.get_nbasis(), 1, psi_i, h_psi_ace, 0, true); - - for (int nband = 0; nband < psi_.get_nbands(); nband++) - { - psi_.fix_kb(i, nband); - T* psi_i_n = psi_.get_pointer(); - T* hpsi_i_n = h_psi_ace + nband * psi_.get_nbasis(); - double wg_i_n = (*wg)(i, nband); - // Eexx += dot(psi_i_n, h_psi_i_n) - Eexx += dot_op()(psi_.get_nbasis(), psi_i_n, hpsi_i_n, false) * wg_i_n * 2; - - } - - - } - - Parallel_Reduce::reduce_pool(Eexx); - *ik_ = ik_save; - return Eexx; -} - -template -double OperatorEXXPW::cal_exx_energy_op(psi::Psi *ppsi_) const -{ - psi::Psi psi_ = *ppsi_; - - using setmem_complex_op = base_device::memory::set_memory_op; - using delmem_complex_op = base_device::memory::delete_memory_op; - setmem_complex_op()(psi_nk_real, 0, wfcpw->nrxx); - setmem_complex_op()(psi_mq_real, 0, wfcpw->nrxx); - setmem_complex_op()(h_psi_recip, 0, wfcpw->npwk_max); - setmem_complex_op()(h_psi_real, 0, rhopw_dev->nrxx); - setmem_complex_op()(density_real, 0, rhopw_dev->nrxx); - setmem_complex_op()(density_recip, 0, rhopw_dev->npw); - - if (wg == nullptr) return 0.0; - const int nk_fac = PARAM.inp.nspin == 2 ? 2 : 1; - double Eexx_ik_real = 0.0; - for (int ik = 0; ik < wfcpw->nks; ik++) - { - // auto k = this->pw_wfc->kvec_c[ik]; - // std::cout << k << std::endl; - for (int n_iband = 0; n_iband < psi.get_nbands(); n_iband++) - { - setmem_complex_op()(h_psi_recip, 0, wfcpw->npwk_max); - setmem_complex_op()(h_psi_real, 0, rhopw_dev->nrxx); - setmem_complex_op()(density_real, 0, rhopw_dev->nrxx); - setmem_complex_op()(density_recip, 0, rhopw_dev->npw); - - // double wg_ikb_real = GlobalC::exx_helper.wg(this->ik, n_iband); - double wg_ikb_real = (*wg)(ik, n_iband); - T wg_ikb = wg_ikb_real; - if (wg_ikb_real < 1e-12) - { - continue; - } - - // const T *psi_nk = get_pw(n_iband, ik); - psi.fix_kb(ik, n_iband); - const T* psi_nk = psi.get_pointer(); - // retrieve \psi_nk in real space - wfcpw->recip_to_real(ctx, psi_nk, psi_nk_real, ik); - - // for \psi_nk, get the pw of iq and band m - // q_points is a vector of integers, 0 to nks-1 - std::vector q_points; - for (int iq = 0; iq < wfcpw->nks; iq++) - { - q_points.push_back(iq); - } - double nqs = q_points.size(); - - for (int iq: q_points) - { - for (int m_iband = 0; m_iband < psi.get_nbands(); m_iband++) - { - // double wg_f = GlobalC::exx_helper.wg(iq, m_iband); - double wg_iqb_real = (*wg)(iq, m_iband); - T wg_iqb = wg_iqb_real; - if (wg_iqb_real < 1e-12) - { - continue; - } - - psi_.fix_kb(iq, m_iband); - const T* psi_mq = psi_.get_pointer(); - // const T* psi_mq = get_pw(m_iband, iq); - wfcpw->recip_to_real(ctx, psi_mq, psi_mq_real, iq); - - cal_density_recip(psi_nk_real, psi_mq_real, ucell->omega); - - int nks = wfcpw->nks; - int npw = rhopw_dev->npw; - int nk = nks / nk_fac; - Eexx_ik_real += exx_cal_energy_op()(density_recip, pot + ik * nks * npw + iq * npw, wg_iqb_real / nqs * wg_ikb_real / kv->wk[ik], npw); - - } // m_iband - - } // iq - - } // n_iband - - } // ik - Eexx_ik_real *= 0.5 * ucell->omega; - Parallel_Reduce::reduce_pool(Eexx_ik_real); - // std::cout << "omega = " << this_->pelec->omega << " tpiba = " << this_->pw_rho->tpiba2 << " exx_div = " << exx_div << std::endl; - - setmem_complex_op()(psi_nk_real, 0, wfcpw->nrxx); - setmem_complex_op()(psi_mq_real, 0, wfcpw->nrxx); - setmem_complex_op()(h_psi_recip, 0, wfcpw->npwk_max); - setmem_complex_op()(h_psi_real, 0, rhopw_dev->nrxx); - setmem_complex_op()(density_real, 0, rhopw_dev->nrxx); - setmem_complex_op()(density_recip, 0, rhopw_dev->npw); - - return Eexx_ik_real; -} - -template <> -void OperatorEXXPW, base_device::DEVICE_CPU>::cal_density_recip(const std::complex* psi_nk_real, - const std::complex* psi_mq_real, - double omega) const -{ - cal_density_real_op, base_device::DEVICE_CPU>()(psi_nk_real, psi_mq_real, density_real, omega, wfcpw->nrxx); - rhopw_dev->real2recip(density_real, density_recip); -} - -template <> -void OperatorEXXPW, base_device::DEVICE_CPU>::cal_density_recip(const std::complex* psi_nk_real, - const std::complex* psi_mq_real, - double omega) const -{ - cal_density_real_op, base_device::DEVICE_CPU>()(psi_nk_real, psi_mq_real, density_real, omega, wfcpw->nrxx); - rhopw_dev->real2recip(density_real, density_recip); -} - -template <> -void OperatorEXXPW, base_device::DEVICE_CPU>::rho_recip2real(const std::complex* rho_recip, - std::complex* rho_real, - bool add, - double factor) const -{ - rhopw_dev->recip2real(rho_recip, rho_real, add, factor); -} - -template <> -void OperatorEXXPW, base_device::DEVICE_CPU>::rho_recip2real(const std::complex* rho_recip, - std::complex* rho_real, - bool add, - float factor) const -{ - rhopw_dev->recip2real(rho_recip, rho_real, add, factor); -} - -template class OperatorEXXPW, base_device::DEVICE_CPU>; -template class OperatorEXXPW, base_device::DEVICE_CPU>; -#if ((defined __CUDA) || (defined __ROCM)) -template class OperatorEXXPW, base_device::DEVICE_GPU>; -template class OperatorEXXPW, base_device::DEVICE_GPU>; - -template <> -void OperatorEXXPW, base_device::DEVICE_GPU>::cal_density_recip(const std::complex* psi_nk_real, - const std::complex* psi_mq_real, - double omega) const -{ - cal_density_real_op, base_device::DEVICE_GPU>()(psi_nk_real, psi_mq_real, density_real, omega, wfcpw->nrxx); - rhopw_dev->real2recip_gpu(density_real, density_recip); -} - -template <> -void OperatorEXXPW, base_device::DEVICE_GPU>::cal_density_recip(const std::complex* psi_nk_real, - const std::complex* psi_mq_real, - double omega) const -{ - cal_density_real_op, base_device::DEVICE_GPU>()(psi_nk_real, psi_mq_real, density_real, omega, wfcpw->nrxx); - rhopw_dev->real2recip_gpu(density_real, density_recip); -} - -template <> -void OperatorEXXPW, base_device::DEVICE_GPU>::rho_recip2real(const std::complex* rho_recip, - std::complex* rho_real, - bool add, - double factor) const -{ - rhopw_dev->recip2real_gpu(rho_recip, rho_real, add, factor); -} - -template <> -void OperatorEXXPW, base_device::DEVICE_GPU>::rho_recip2real(const std::complex* rho_recip, - std::complex* rho_real, - bool add, - float factor) const -{ - rhopw_dev->recip2real_gpu(rho_recip, rho_real, add, factor); -} - -#endif - -} // namespace hamilt diff --git a/source/source_pw/module_pwdft/operator_pw/op_exx_pw.h b/source/source_pw/module_pwdft/operator_pw/op_exx_pw.h deleted file mode 100644 index 51b69b13a9..0000000000 --- a/source/source_pw/module_pwdft/operator_pw/op_exx_pw.h +++ /dev/null @@ -1,169 +0,0 @@ -#ifndef OPEXXPW_H -#define OPEXXPW_H - -#include "operator_pw.h" -#include "source_base/kernels/math_kernel_op.h" -#include "source_base/macros.h" -#include "source_base/matrix.h" -#include "source_basis/module_pw/pw_basis.h" -#include "source_basis/module_pw/pw_basis_k.h" -#include "source_cell/klist.h" -#include "source_lcao/module_ri/conv_coulomb_pot_k.h" -#include "source_psi/psi.h" -#include "source_base/module_container/ATen/kernels/lapack.h" - -#include -#include -#include - -namespace hamilt -{ - -template -class OperatorEXXPW : public OperatorPW -{ - private: - using Real = typename GetTypeReal::type; - - public: - OperatorEXXPW(const int* isk_in, - const ModulePW::PW_Basis_K* wfcpw_in, - const ModulePW::PW_Basis* rhopw_in, - K_Vectors* kv_in, - const UnitCell* ucell); - - template - explicit OperatorEXXPW(const OperatorEXXPW *op_exx); - - virtual ~OperatorEXXPW(); - - virtual void act(const int nbands, - const int nbasis, - const int npol, - const T *tmpsi_in, - T *tmhpsi, - const int ngk_ik = 0, - const bool is_first_node = false) const override; - - double cal_exx_energy(psi::Psi *psi_) const; - - void set_psi(psi::Psi &psi_in) const { psi = psi_in; } - - void set_wg(const ModuleBase::matrix *wg_in) { wg = wg_in; } - - void construct_ace() const; - - bool first_iter = false; - - private: - const int* isk = nullptr; - const ModulePW::PW_Basis_K* wfcpw = nullptr; - const ModulePW::PW_Basis* rhopw = nullptr; - ModulePW::PW_Basis* rhopw_dev = nullptr; // for device - const UnitCell *ucell = nullptr; -// Real exx_div = 0; - Real tpiba = 0; - - std::vector get_q_points(const int ik) const; - const T *get_pw(const int m, const int iq) const; - - void multiply_potential(T *density_recip, int ik, int iq) const; - - double exx_divergence(Conv_Coulomb_Pot_K::Coulomb_Type coulomb_type, double erfc_omega = 0) const; - - void get_potential() const; - - void act_op(const int nbands, - const int nbasis, - const int npol, - const T *tmpsi_in, - T *tmhpsi, - const int ngk_ik = 0, - const bool is_first_node = false) const; - - void act_op_ace(const int nbands, - const int nbasis, - const int npol, - const T *tmpsi_in, - T *tmhpsi, - const int ngk_ik = 0, - const bool is_first_node = false) const; - - double cal_exx_energy_op(psi::Psi *psi_) const; - - double cal_exx_energy_ace(psi::Psi *psi_) const; - - void cal_density_recip(const T* psi_nk_real, const T* psi_mq_real, double omega) const; - - void rho_recip2real(const T* rho_recip, T* rho_real, bool add = false, Real factor = 1.0) const; - - mutable int cnt = 0; - - mutable bool potential_got = false; - - // pws -// mutable std::vector> pws; - - // k vectors - K_Vectors *kv = nullptr; - - // psi - mutable psi::Psi psi; - const ModuleBase::matrix* wg; - - // real space memory - T *psi_nk_real = nullptr; - T *psi_mq_real = nullptr; - T *density_real = nullptr; - T *h_psi_real = nullptr; - // density recip space memory - T *density_recip = nullptr; - // h_psi recip space memory - T *h_psi_recip = nullptr; - Real *pot = nullptr; - - // Lin Lin's ACE memory, 10.1021/acs.jctc.6b00092 - mutable T* h_psi_ace = nullptr; // H \Psi, W in the paper - mutable T* psi_h_psi_ace = nullptr; // \Psi^{\dagger} H \Psi, M in the paper - mutable T* L_ace = nullptr; // cholesky(-M).L, L in the paper - mutable std::vector Xi_ace_k; // L^{-1} (H \Psi)^{\dagger}, \Xi in the paper -// mutable T* Xi_ace = nullptr; // L^{-1} (H \Psi)^{\dagger}, \Xi in the paper - - mutable std::map> q_points; - - // occupational number - const ModuleBase::matrix *p_wg; - -// mutable bool update_psi = false; - - Device *ctx = {}; - base_device::DEVICE_CPU* cpu_ctx = {}; - base_device::AbacusDevice_t device = {}; - - using ct_Device = typename ct::PsiToContainer::type; - using setmem_complex_op = base_device::memory::set_memory_op; - using setmem_real_op = base_device::memory::set_memory_op; - using setmem_real_cpu_op = base_device::memory::set_memory_op; - using resmem_complex_op = base_device::memory::resize_memory_op; - using delmem_complex_op = base_device::memory::delete_memory_op; - using syncmem_complex_op = base_device::memory::synchronize_memory_op; - using resmem_real_op = base_device::memory::resize_memory_op; - using delmem_real_op = base_device::memory::delete_memory_op; - using gemm_complex_op = ModuleBase::gemm_op; - using axpy_complex_op = ModuleBase::axpy_op; - using vec_add_vec_complex_op = ModuleBase::vector_add_vector_op; - using dot_op = ModuleBase::dot_real_op; - using syncmem_complex_c2d_op = base_device::memory::synchronize_memory_op; - using syncmem_complex_d2c_op = base_device::memory::synchronize_memory_op; - using syncmem_real_c2d_op = base_device::memory::synchronize_memory_op; - using syncmem_real_d2c_op = base_device::memory::synchronize_memory_op; - using lapack_potrf = container::kernels::lapack_potrf; - using lapack_trtri = container::kernels::lapack_trtri; - - bool gamma_extrapolation = true; - -}; - -} // namespace hamilt - -#endif // OPEXXPW_H \ No newline at end of file diff --git a/source/source_pw/module_pwdft/operator_pw/operator_pw.cpp b/source/source_pw/module_pwdft/operator_pw/operator_pw.cpp deleted file mode 100644 index 331545a3a3..0000000000 --- a/source/source_pw/module_pwdft/operator_pw/operator_pw.cpp +++ /dev/null @@ -1,17 +0,0 @@ -#include "source_base/timer.h" -#include "source_hamilt/operator.h" -#include "source_pw/module_pwdft/operator_pw/operator_pw.h" - -using namespace hamilt; - -template -OperatorPW::~OperatorPW(){}; - -namespace hamilt { -template class OperatorPW, base_device::DEVICE_CPU>; -template class OperatorPW, base_device::DEVICE_CPU>; -#if ((defined __CUDA) || (defined __ROCM)) -template class OperatorPW, base_device::DEVICE_GPU>; -template class OperatorPW, base_device::DEVICE_GPU>; -#endif -} \ No newline at end of file diff --git a/source/source_pw/module_pwdft/operator_pw/veff_pw.cpp b/source/source_pw/module_pwdft/operator_pw/veff_pw.cpp deleted file mode 100644 index e2813b3a9a..0000000000 --- a/source/source_pw/module_pwdft/operator_pw/veff_pw.cpp +++ /dev/null @@ -1,163 +0,0 @@ -#include "veff_pw.h" - -#include "source_base/timer.h" -#include "source_base/tool_quit.h" - -namespace hamilt { - -template -Veff>::Veff(const int* isk_in, - const Real* veff_in, - const int veff_row, - const int veff_col, - const ModulePW::PW_Basis_K* wfcpw_in) -{ - if (isk_in == nullptr || wfcpw_in == nullptr) - { - ModuleBase::WARNING_QUIT("VeffPW", "Constuctor of Operator::VeffPW is failed, please check your code!"); - } - - this->classname = "Veff"; - this->cal_type = calculation_type::pw_veff; - this->isk = isk_in; - this->veff = veff_in; - //note: "veff = nullptr" means that this core does not treat potential but still treats wf. - this->veff_row = veff_row; - this->veff_col = veff_col; - this->wfcpw = wfcpw_in; - resmem_complex_op()(this->porter, this->wfcpw->nmaxgr, "Veff::porter"); - resmem_complex_op()(this->porter1, this->wfcpw->nmaxgr, "Veff::porter1"); - -} - -template -Veff>::~Veff() -{ - delmem_complex_op()(this->porter); - delmem_complex_op()(this->porter1); -} - -template -void Veff>::act( - const int nbands, - const int nbasis, - const int npol, - const T* tmpsi_in, - T* tmhpsi, - const int ngk_ik, - const bool is_first_node)const -{ - ModuleBase::timer::tick("Operator", "veff_pw"); - if(is_first_node) - { - setmem_complex_op()(tmhpsi, 0, nbasis*nbands/npol); - } - int max_npw = nbasis / npol; - const int current_spin = this->isk[this->ik]; - const int psi_offset= max_npw * npol; -#ifdef __DSP - if (npol == 1) - { - ModulePW::FFT_Guard guard(wfcpw->fft_bundle); - for (int ib = 0; ib < nbands; ib += npol) - { - wfcpw->convolution(this->ctx, - this->ik, - this->veff_col, - tmpsi_in, - this->veff + current_spin * this->veff_col, - tmhpsi, - true); - tmhpsi += psi_offset; - tmpsi_in += psi_offset; - } - }else if (npol == 2) - { - const Real* current_veff[4]={nullptr}; - for (int is = 0; is < 4; is++) - { - current_veff[is] = this->veff + is * this->veff_col; - } - for (int ib = 0; ib < nbands; ib += npol) - { - wfcpw->recip_to_real(tmpsi_in, this->porter, this->ik); - wfcpw->recip_to_real(tmpsi_in + max_npw, this->porter1, this->ik); - veff_op()(this->ctx, this->veff_col, this->porter, this->porter1, current_veff); - wfcpw->real_to_recip(this->porter, tmhpsi, this->ik, true); - wfcpw->real_to_recip(this->porter1, tmhpsi + max_npw, this->ik, true); - tmhpsi += psi_offset; - tmpsi_in += psi_offset; - } - }else{ - ModuleBase::WARNING_QUIT("VeffPW", "npol should be 1 or 2 or veff_col equal to 0\n"); - } -#else - if (npol == 1) - { - for (int ib = 0; ib < nbands; ib += npol) - { - wfcpw->recip_to_real(tmpsi_in, this->porter, this->ik); - // NOTICE: when MPI threads are larger than the number of Z grids - // veff would contain nothing, and nothing should be done in real space - // but the 3DFFT can not be skipped, it will cause hanging - veff_op()(this->ctx, this->veff_col, this->porter, this->veff + current_spin * this->veff_col); - wfcpw->real_to_recip(this->porter, tmhpsi, this->ik, true); - tmhpsi += psi_offset; - tmpsi_in += psi_offset; - } - } - else if (npol == 2) - { - const Real* current_veff[4]={nullptr}; - for (int is = 0; is < 4; is++) - { - current_veff[is] = this->veff + is * this->veff_col; - } - for (int ib = 0; ib < nbands; ib += npol) - { - // FFT to real space and do things. - wfcpw->recip_to_real(tmpsi_in, this->porter, this->ik); - wfcpw->recip_to_real(tmpsi_in + max_npw, this->porter1, this->ik); - veff_op()(this->ctx, this->veff_col, this->porter, this->porter1, current_veff); - // FFT back to G space. - wfcpw->real_to_recip(this->porter, tmhpsi, this->ik, true); - wfcpw->real_to_recip(this->porter1, tmhpsi + max_npw, this->ik, true); - tmhpsi += psi_offset; - tmpsi_in += psi_offset; - } - }else{ - ModuleBase::WARNING_QUIT("VeffPW", "npol should be 1 or 2 or veff_col equal to 0\n"); - } -#endif - ModuleBase::timer::tick("Operator", "veff_pw"); -} - -template -template -hamilt::Veff>::Veff(const Veff> *veff) { - this->classname = "Veff"; - this->cal_type = calculation_type::pw_veff; - this->ik = veff->get_ik(); - this->isk = veff->get_isk(); - this->veff_col = veff->get_veff_col(); - this->veff_row = veff->get_veff_row(); - this->wfcpw = veff->get_wfcpw(); - resmem_complex_op()(this->porter, this->wfcpw->nmaxgr); - resmem_complex_op()(this->porter1, this->wfcpw->nmaxgr); - this->veff = veff->get_veff(); - if (this->isk == nullptr || this->veff == nullptr || this->wfcpw == nullptr) { - ModuleBase::WARNING_QUIT("VeffPW", "Constuctor of Operator::VeffPW is failed, please check your code!"); - } -} - -template class Veff, base_device::DEVICE_CPU>>; -template class Veff, base_device::DEVICE_CPU>>; -// template Veff, base_device::DEVICE_CPU>>::Veff(const -// Veff, base_device::DEVICE_CPU>> *veff); -#if ((defined __CUDA) || (defined __ROCM)) -template class Veff, base_device::DEVICE_GPU>>; -template class Veff, base_device::DEVICE_GPU>>; -// template Veff, base_device::DEVICE_GPU>>::Veff(const -// Veff, base_device::DEVICE_GPU>> *veff); -#endif -} // namespace hamilt diff --git a/source/source_pw/module_pwdft/operator_pw/veff_pw.h b/source/source_pw/module_pwdft/operator_pw/veff_pw.h deleted file mode 100644 index 3c2024edc5..0000000000 --- a/source/source_pw/module_pwdft/operator_pw/veff_pw.h +++ /dev/null @@ -1,81 +0,0 @@ -#ifndef VEFFPW_H -#define VEFFPW_H - -#include "operator_pw.h" -#include "source_base/matrix.h" -#include "source_basis/module_pw/pw_basis_k.h" -#include "source_pw/module_pwdft/kernels/veff_op.h" - -#include - -namespace hamilt { - -#ifndef __VEFFTEMPLATE -#define __VEFFTEMPLATE - -template class Veff : public T {}; -// template -// class Veff : public OperatorPW {}; - -#endif - -template -class Veff> : public OperatorPW -{ - private: - using Real = typename GetTypeReal::type; - public: - Veff(const int* isk_in, - const Real* veff_in, - const int veff_row, - const int veff_col, - const ModulePW::PW_Basis_K* wfcpw_in); - - template - explicit Veff(const Veff>* veff); - - virtual ~Veff(); - - virtual void act(const int nbands, - const int nbasis, - const int npol, - const T* tmpsi_in, - T* tmhpsi, - const int ngk_ik = 0, - const bool is_first_node = false)const override; - - // denghui added for copy constructor at 20221105 - const Real *get_veff() const {return this->veff;} - int get_veff_col() const {return this->veff_col;} - int get_veff_row() const { return this->veff_row; } - const int *get_isk() const {return isk;} - const ModulePW::PW_Basis_K* get_wfcpw() const - { - return this->wfcpw; - } - - private: - - const int* isk = nullptr; - - const ModulePW::PW_Basis_K* wfcpw = nullptr; - - Device* ctx = {}; - base_device::DEVICE_CPU* cpu_ctx = {}; - - int veff_col = 0; - int veff_row = 0; - const Real *veff = nullptr, *h_veff = nullptr, *d_veff = nullptr; - T *porter = nullptr; - T *porter1 = nullptr; - base_device::AbacusDevice_t device = {}; - using veff_op = veff_pw_op; - - using resmem_complex_op = base_device::memory::resize_memory_op; - using delmem_complex_op = base_device::memory::delete_memory_op; - using setmem_complex_op = base_device::memory::set_memory_op; -}; - -} // namespace hamilt - -#endif \ No newline at end of file diff --git a/source/source_pw/module_pwdft/operator_pw/velocity_pw.cpp b/source/source_pw/module_pwdft/operator_pw/velocity_pw.cpp deleted file mode 100644 index f9a7aa6333..0000000000 --- a/source/source_pw/module_pwdft/operator_pw/velocity_pw.cpp +++ /dev/null @@ -1,337 +0,0 @@ -#include "velocity_pw.h" - -#include "source_base/kernels/math_kernel_op.h" -#include "source_base/parallel_reduce.h" -#include "source_base/timer.h" -namespace hamilt -{ - -template -Velocity::Velocity(const ModulePW::PW_Basis_K* wfcpw_in, - const int* isk_in, - pseudopot_cell_vnl* ppcell_in, - const UnitCell* ucell_in, - const bool nonlocal_in) -{ - if (wfcpw_in == nullptr || isk_in == nullptr || ppcell_in == nullptr || ucell_in == nullptr) - { - ModuleBase::WARNING_QUIT("Velocity", "Constuctor of Operator::Velocity is failed, please check your code!"); - } - this->wfcpw = wfcpw_in; - this->isk = isk_in; - this->ppcell = ppcell_in; - this->ucell = ucell_in; - this->nonlocal = nonlocal_in; - this->tpiba = ucell_in->tpiba; - if (this->nonlocal) - { - this->ppcell->initgradq_vnl(*this->ucell); - } -} - -template -Velocity::~Velocity() -{ - delmem_var_op()(this->gx_); - delmem_var_op()(this->gy_); - delmem_var_op()(this->gz_); - delmem_complex_op()(vkb_); - delmem_complex_op()(gradvkb_); -} - -template -void Velocity::init(const int ik_in) -{ - this->ik = ik_in; - // init G+K - const int npw = this->wfcpw->npwk[ik_in]; - const int npwk_max = this->wfcpw->npwk_max; - std::vector gtmp(npw); - resmem_var_op()(gx_, npw); - resmem_var_op()(gy_, npw); - resmem_var_op()(gz_, npw); - std::vector gtmp_ptr = {this->gx_, this->gy_, this->gz_}; - for(int i=0; i<3; ++i) - { - for (int ig = 0; ig < npw; ++ig) - { - const ModuleBase::Vector3 tmpg = wfcpw->getgpluskcar(this->ik, ig); - gtmp[ig] = static_cast(tmpg[i] * tpiba); - } - syncmem_var_h2d_op()(gtmp_ptr[i], gtmp.data(), npw); - } - - // Calculate nonlocal pseudopotential vkb - if (this->ppcell->nkb > 0 && this->nonlocal) - { - this->ppcell->getgradq_vnl(*this->ucell, ik_in); - - // sync to device - if (std::is_same::value || std::is_same::value) - { - const int nkb = this->ppcell->nkb; - // vkb - resmem_complex_op()(vkb_, nkb * npwk_max); - castmem_complex_h2d_op()(vkb_, this->ppcell->vkb.c, nkb * npwk_max); - - // gradvkb - resmem_complex_op()(gradvkb_, 3 * nkb * npwk_max); - castmem_complex_h2d_op()(gradvkb_, this->ppcell->gradvkb.ptr, 3 * nkb * npwk_max); - } - } -} - -template -void Velocity::act(const psi::Psi, Device>* psi_in, - const int n_npwx, - const std::complex* psi0, - std::complex* vpsi, - const bool add) const -{ - ModuleBase::timer::tick("Operator", "Velocity"); - - const int npw = this->wfcpw->npwk[this->ik]; - const int max_npw = this->wfcpw->npwk_max; - const int npol = psi_in->get_npol(); - - std::vector gtmp_ptr = {this->gx_, this->gy_, this->gz_}; - // ------------- - // p - // ------------- - for (int id = 0; id < 3; ++id) - { - const Complex* tmpsi_in = psi0; - Complex* tmpvpsi = vpsi + id * n_npwx * max_npw; - for (int ib = 0; ib < n_npwx; ++ib) - { - ModuleBase::vector_mul_vector_op()(npw, tmpvpsi, tmpsi_in, gtmp_ptr[id], add); - tmpvpsi += max_npw; - tmpsi_in += max_npw; - } - } - - // --------------------------------------------- - // i[V_NL, r] = (\nabla_q+\nabla_q')V_{NL}(q,q') - // |\beta><\beta|\psi> - // --------------------------------------------- - if (this->ppcell->nkb <= 0 || !this->nonlocal) - { - ModuleBase::timer::tick("Operator", "Velocity"); - return; - } - - // 1. <\beta|\psi> - Complex* becp1_ = nullptr; ///<[Device, n_npwx * nkb] <\beta|\psi> - Complex* becp2_ = nullptr; ///<[Device, n_npwx * 3*nkb] <\nabla\beta|\psi> - Complex* ps1_ = nullptr; ///<[Device, nkb * n_npwx] sum of becp1 - Complex* ps2_ = nullptr; ///<[Device, 3*nkb * n_npwx] sum of becp2 - resmem_complex_op()(ps1_, this->ppcell->nkb * n_npwx); - resmem_complex_op()(ps2_, 3 * this->ppcell->nkb * n_npwx); - resmem_complex_op()(becp1_, this->ppcell->nkb * n_npwx); - resmem_complex_op()(becp2_, 3 * this->ppcell->nkb * n_npwx); - - const int nkb = this->ppcell->nkb; - const int nkb3 = 3 * nkb; - Complex one = 1.0; - Complex zero = 0.0; - - Complex* vkb_d = reinterpret_cast(this->ppcell->vkb.c); - Complex* gradvkb_d = reinterpret_cast(this->ppcell->gradvkb.ptr); - if (std::is_same::value || std::is_same::value) - { - vkb_d = vkb_; - gradvkb_d = gradvkb_; - } - - if (n_npwx == 1) - { - int inc = 1; - ModuleBase::gemv_op()('C', npw, nkb, &one, vkb_d, max_npw, psi0, inc, &zero, becp1_, inc); - ModuleBase::gemv_op()('C', npw, nkb3, &one, gradvkb_d, max_npw, psi0, inc, &zero, becp2_, inc); - } - else - { - ModuleBase::gemm_op()('C', - 'N', - nkb, - n_npwx, - npw, - &one, - vkb_d, - max_npw, - psi0, - max_npw, - &zero, - becp1_, - nkb); - ModuleBase::gemm_op()('C', - 'N', - nkb3, - n_npwx, - npw, - &one, - gradvkb_d, - max_npw, - psi0, - max_npw, - &zero, - becp2_, - nkb3); - } - - Complex* becp1_cpu = nullptr; - Complex* becp2_cpu = nullptr; - Complex* ps1_cpu = nullptr; - Complex* ps2_cpu = nullptr; - std::vector tmp_space1, tmp_space2; - if(std::is_same::value) - { - tmp_space1.resize(nkb * n_npwx + nkb3 * n_npwx); - becp1_cpu = tmp_space1.data(); - becp2_cpu = becp1_cpu + nkb * n_npwx; - syncmem_complex_d2h_op()(becp1_cpu, becp1_, nkb * n_npwx); - syncmem_complex_d2h_op()(becp2_cpu, becp2_, nkb3 * n_npwx); - - tmp_space2.resize(nkb * n_npwx + nkb3 * n_npwx, 0.0); - ps1_cpu = tmp_space2.data(); - ps2_cpu = ps1_cpu + nkb * n_npwx; - } - else - { - Parallel_Reduce::reduce_pool(becp1_, nkb * n_npwx); - Parallel_Reduce::reduce_pool(becp2_, nkb3 * n_npwx); - becp1_cpu = becp1_; - becp2_cpu = becp2_; - - setmem_complex_op()(ps1_, 0.0, nkb * n_npwx); - setmem_complex_op()(ps2_, 0.0, nkb3 * n_npwx); - ps1_cpu = ps1_; - ps2_cpu = ps2_; - } - - // 2. <\beta \psi>ucell->ntype; it++) - { - const int nproj = this->ucell->atoms[it].ncpp.nh; - for (int ia = 0; ia < this->ucell->atoms[it].na; ia++) - { - for (int ip = 0; ip < nproj; ip++) - { - for (int ip2 = 0; ip2 < nproj; ip2++) - { - for (int ib = 0; ib < n_npwx; ++ib) - { - FPTYPE dij = static_cast(this->ppcell->deeq(current_spin, iat, ip, ip2)); - int sumip2 = sum + ip2; - int sumip = sum + ip; - ps1_cpu[sumip2 * n_npwx + ib] += dij * becp1_cpu[ib * nkb + sumip]; - ps2_cpu[sumip2 * n_npwx + ib] += dij * becp2_cpu[ib * nkb3 + sumip]; - ps2_cpu[(sumip2 + nkb) * n_npwx + ib] += dij * becp2_cpu[ib * nkb3 + sumip + nkb]; - ps2_cpu[(sumip2 + 2 * nkb) * n_npwx + ib] += dij * becp2_cpu[ib * nkb3 + sumip + 2 * nkb]; - } - } - } - sum += nproj; - ++iat; - } - } - } - else - { - ModuleBase::WARNING_QUIT("Velocity", "Velocity operator does not support the non-collinear case yet!"); - } - - if(std::is_same::value) - { - syncmem_complex_h2d_op()(ps1_, ps1_cpu, nkb * n_npwx); - syncmem_complex_h2d_op()(ps2_, ps2_cpu, nkb3 * n_npwx); - } - - if (n_npwx == 1) - { - int inc = 1; - for (int id = 0; id < 3; ++id) - { - int vkbshift = id * max_npw * nkb; - int ps2shift = id * nkb; - int npwshift = id * max_npw; - ModuleBase::gemv_op()('N', - npw, - nkb, - &one, - gradvkb_d + vkbshift, - max_npw, - ps1_, - inc, - &one, - vpsi + npwshift, - inc); - ModuleBase::gemv_op()('N', - npw, - nkb, - &one, - vkb_d, - max_npw, - ps2_ + ps2shift, - inc, - &one, - vpsi + npwshift, - inc); - } - } - else - { - for (int id = 0; id < 3; ++id) - { - int vkbshift = id * max_npw * nkb; - int ps2shift = id * n_npwx * nkb; - int npwshift = id * max_npw * n_npwx; - ModuleBase::gemm_op()('N', - 'T', - npw, - n_npwx, - nkb, - &one, - gradvkb_d + vkbshift, - max_npw, - ps1_, - n_npwx, - &one, - vpsi + npwshift, - max_npw); - ModuleBase::gemm_op()('N', - 'T', - npw, - n_npwx, - nkb, - &one, - vkb_d, - max_npw, - ps2_ + ps2shift, - n_npwx, - &one, - vpsi + npwshift, - max_npw); - } - } - delmem_complex_op()(ps1_); - delmem_complex_op()(ps2_); - delmem_complex_op()(becp1_); - delmem_complex_op()(becp2_); - ModuleBase::timer::tick("Operator", "Velocity"); - return; -} - -template class Velocity; -template class Velocity; -#if ((defined __CUDA) || (defined __ROCM)) -template class Velocity; -template class Velocity; -#endif - -} // namespace hamilt \ No newline at end of file diff --git a/source/source_pw/module_pwdft/operator_pw/velocity_pw.h b/source/source_pw/module_pwdft/operator_pw/velocity_pw.h deleted file mode 100644 index 191e07fde3..0000000000 --- a/source/source_pw/module_pwdft/operator_pw/velocity_pw.h +++ /dev/null @@ -1,79 +0,0 @@ -#ifndef VELOCITY_PW_H -#define VELOCITY_PW_H -#include "operator_pw.h" -#include "source_cell/unitcell.h" -#include "source_pw/module_pwdft/VNL_in_pw.h" -#include "source_basis/module_pw/pw_basis_k.h" -namespace hamilt -{ - -//velocity operator mv = im/\hbar * [H,r] = p + im/\hbar [V_NL, r] -template -class Velocity -{ - public: - Velocity( - const ModulePW::PW_Basis_K* wfcpw_in, - const int* isk_in, - pseudopot_cell_vnl* ppcell_in, - const UnitCell* ucell_in, - const bool nonlocal_in = true - ); - - ~Velocity(); - - void init(const int ik_in); - - /** - * @brief calculate \hat{v}|\psi> - * - * @param psi_in Psi class which contains some information - * @param n_npwx nbands * NPOL - * @param tmpsi_in |\psi_i> size: n_npwx*npwx - * @param tmvpsi \hat{v}|\psi> size: 3*n_npwx*npwx - * @param add true : tmvpsi = tmvpsi + v|\psi> false: tmvpsi = v|\psi> - * - */ - void act(const psi::Psi, Device>* psi_in, - const int n_npwx, - const std::complex* tmpsi_in, - std::complex* tmvpsi, - const bool add = false) const; - - bool nonlocal = true; - - private: - const ModulePW::PW_Basis_K* wfcpw = nullptr; - - const int* isk = nullptr; - - pseudopot_cell_vnl* ppcell = nullptr; - - const UnitCell* ucell = nullptr; - - int ik=0; - - double tpiba=0.0; - - private: - FPTYPE* gx_ = nullptr; ///<[Device, npwx] x component of G+K - FPTYPE* gy_ = nullptr; ///<[Device, npwx] y component of G+K - FPTYPE* gz_ = nullptr; ///<[Device, npwx] z component of G+K - std::complex* vkb_ = nullptr; ///<[Device, nkb * npwk_max] nonlocal pseudopotential vkb - std::complex* gradvkb_ = nullptr; ///<[Device, 3*nkb * npwk_max] gradient of nonlocal pseudopotential gradvkb - FPTYPE* deeq_ = nullptr; ///<[Device] D matrix for nonlocal pseudopotential - - using Complex = std::complex; - using resmem_var_op = base_device::memory::resize_memory_op; - using delmem_var_op = base_device::memory::delete_memory_op; - using syncmem_var_h2d_op = base_device::memory::synchronize_memory_op; - using castmem_var_h2d_op = base_device::memory::cast_memory_op; - using resmem_complex_op = base_device::memory::resize_memory_op, Device>; - using setmem_complex_op = base_device::memory::set_memory_op, Device>; - using delmem_complex_op = base_device::memory::delete_memory_op, Device>; - using castmem_complex_h2d_op = base_device::memory::cast_memory_op, std::complex, Device, base_device::DEVICE_CPU>; - using syncmem_complex_d2h_op = base_device::memory::synchronize_memory_op, base_device::DEVICE_CPU, Device>; - using syncmem_complex_h2d_op = base_device::memory::synchronize_memory_op, Device, base_device::DEVICE_CPU>; -}; -} -#endif \ No newline at end of file diff --git a/source/source_pw/module_pwdft/parallel_grid.cpp b/source/source_pw/module_pwdft/parallel_grid.cpp index 2f05218cd2..ff20f40d73 100644 --- a/source/source_pw/module_pwdft/parallel_grid.cpp +++ b/source/source_pw/module_pwdft/parallel_grid.cpp @@ -1,7 +1,11 @@ #include "parallel_grid.h" - -#include "source_base/parallel_global.h" #include "source_io/module_parameter/parameter.h" + +#ifdef __MPI +#include "source_base/parallel_comm.h" // use POOL_WORLD +#include +#endif + Parallel_Grid::Parallel_Grid() { this->allocate = false; @@ -86,7 +90,7 @@ void Parallel_Grid::init(const int& ncx_in, assert(GlobalV::KPAR > 0); this->nproc_in_pool = new int[GlobalV::KPAR]; - int nprocgroup; + int nprocgroup = 0; if (PARAM.inp.esolver_type == "sdft") { nprocgroup = GlobalV::NPROC_IN_BNDGROUP; diff --git a/source/source_pw/module_pwdft/setup_pot.cpp b/source/source_pw/module_pwdft/setup_pot.cpp new file mode 100644 index 0000000000..d8a340535c --- /dev/null +++ b/source/source_pw/module_pwdft/setup_pot.cpp @@ -0,0 +1,202 @@ +#include "source_pw/module_pwdft/setup_pot.h" + +#include "source_estate/module_charge/symmetry_rho.h" +#include "source_lcao/module_deltaspin/spin_constrain.h" +#include "source_pw/module_pwdft/onsite_projector.h" +#include "source_lcao/module_dftu/dftu.h" +#include "source_pw/module_pwdft/vsep_pw.h" + +template +void pw::setup_pot(const int istep, + UnitCell& ucell, // unitcell + const K_Vectors &kv, // kpoints + Structure_Factor &sf, // structure factors + elecstate::ElecState *pelec, // pointer of electrons + const Parallel_Grid ¶_grid, // parallel of FFT grids + const Charge &chr, // charge density + pseudopot_cell_vl &locpp, // local pseudopotentials + pseudopot_cell_vnl &ppcell, // non-local pseudopotentials + Plus_U &dftu, // mohan add 2025-11-06 + VSep* vsep_cell, // U-1/2 method + psi::Psi* kspw_psi, // electronic wave functions + hamilt::Hamilt* p_hamilt, // hamiltonian + ModulePW::PW_Basis_K *pw_wfc, // pw for wfc + const ModulePW::PW_Basis *pw_rhod, // pw for rhod + const Input_para& inp) // input parameters +{ + ModuleBase::TITLE("pw", "setup_pot"); + + //---------------------------------------------------------- + //! 0) DFT-1/2 calculations, sep potential need to generate + // before effective potential calculation + //---------------------------------------------------------- + if (PARAM.inp.dfthalf_type > 0) + { + vsep_cell->generate_vsep_r(pw_rhod[0], sf.strucFac, ucell.sep_cell); + } + + //---------------------------------------------------------- + //! 1) Renew local pseudopotential + //---------------------------------------------------------- + pelec->init_scf(ucell, para_grid, sf.strucFac, + locpp.numeric, ucell.symm, (void*)pw_wfc); + + //---------------------------------------------------------- + //! 2) Symmetrize the charge density (rho) + //---------------------------------------------------------- + + //! Symmetry_rho should behind init_scf, because charge should be + //! initialized first. liuyu comment: Symmetry_rho should be + //! located between init_rho and v_of_rho? + Symmetry_rho srho; + for (int is = 0; is < inp.nspin; is++) + { + srho.begin(is, chr, pw_rhod, ucell.symm); + } + + //---------------------------------------------------------- + //! 3) Calculate the effective potential with rho + //---------------------------------------------------------- + //! liuyu move here 2023-10-09 + //! D in uspp need vloc, thus behind init_scf() + //! calculate the effective coefficient matrix + //! for non-local pseudopotential projectors + ModuleBase::matrix veff = pelec->pot->get_eff_v(); + + ppcell.cal_effective_D(veff, pw_rhod, ucell); + + //---------------------------------------------------------- + //! 4) Onsite projectors + //---------------------------------------------------------- + if (PARAM.inp.onsite_radius > 0) + { + auto* onsite_p = projectors::OnsiteProjector::get_instance(); + onsite_p->init(PARAM.inp.orbital_dir, + &ucell, + *(kspw_psi), + kv, + *(pw_wfc), + sf, + PARAM.inp.onsite_radius, + PARAM.globalv.nqx, + PARAM.globalv.dq, + pelec->wg, + pelec->ekb); + } + + //---------------------------------------------------------- + //! 5) Spin-constrained algorithms + //---------------------------------------------------------- + if (PARAM.inp.sc_mag_switch) + { + spinconstrain::SpinConstrain>& sc + = spinconstrain::SpinConstrain>::getScInstance(); + sc.init_sc(PARAM.inp.sc_thr, + PARAM.inp.nsc, + PARAM.inp.nsc_min, + PARAM.inp.alpha_trial, + PARAM.inp.sccut, + PARAM.inp.sc_drop_thr, + ucell, + nullptr, // parallel orbitals + PARAM.inp.nspin, + kv, + p_hamilt, + kspw_psi, +#ifdef __LCAO + nullptr, // density matrix, not useful in LCAO, mohan note 2025-11-03 +#endif + pelec, + pw_wfc); + } + + //---------------------------------------------------------- + //! 6) DFT+U algorithm + // This should not called in before_scf (esolver), it should be + // called in before_all_runners (esolver), which should + // be improved later. Mohan note 2025-11-06 + //---------------------------------------------------------- + if (PARAM.inp.dft_plus_u) + { + dftu.init(ucell, nullptr, kv.get_nks()); + } + + return; +} + +template void pw::setup_pot, base_device::DEVICE_CPU>( + const int istep, // ionic step + UnitCell& ucell, // unitcell + const K_Vectors &kv, // kpoints + Structure_Factor &sf, // structure factors + elecstate::ElecState *pelec, // pointer of electrons + const Parallel_Grid ¶_grid, // parallel of FFT grids + const Charge &chr, // charge density + pseudopot_cell_vl &locpp, // local pseudopotentials + pseudopot_cell_vnl &ppcell, // non-local pseudopotentials + Plus_U &dftu, // mohan add 2025-11-06 + VSep* vsep_cell, // U-1/2 method + psi::Psi, base_device::DEVICE_CPU>* kspw_psi, // electronic wave functions + hamilt::Hamilt, base_device::DEVICE_CPU>* p_hamilt, // hamiltonian + ModulePW::PW_Basis_K *pw_wfc, // pw for wfc + const ModulePW::PW_Basis *pw_rhod, // pw for rhod + const Input_para& inp); // input parameters + + +template void pw::setup_pot, base_device::DEVICE_CPU>( + const int istep, // ionic step + UnitCell& ucell, // unitcell + const K_Vectors &kv, // kpoints + Structure_Factor &sf, // structure factors + elecstate::ElecState *pelec, // pointer of electrons + const Parallel_Grid ¶_grid, // parallel of FFT grids + const Charge &chr, // charge density + pseudopot_cell_vl &locpp, // local pseudopotentials + pseudopot_cell_vnl &ppcell, // non-local pseudopotentials + Plus_U &dftu, // mohan add 2025-11-06 + VSep* vsep_cell, // U-1/2 method + psi::Psi, base_device::DEVICE_CPU>* kspw_psi, // electronic wave functions + hamilt::Hamilt, base_device::DEVICE_CPU>* p_hamilt, // hamiltonian + ModulePW::PW_Basis_K *pw_wfc, // pw for wfc + const ModulePW::PW_Basis *pw_rhod, // pw for rhod + const Input_para& inp); // input parameters + +#if ((defined __CUDA) || (defined __ROCM)) + +template void pw::setup_pot, base_device::DEVICE_GPU>( + const int istep, // ionic step + UnitCell& ucell, // unitcell + const K_Vectors &kv, // kpoints + Structure_Factor &sf, // structure factors + elecstate::ElecState *pelec, // pointer of electrons + const Parallel_Grid ¶_grid, // parallel of FFT grids + const Charge &chr, // charge density + pseudopot_cell_vl &locpp, // local pseudopotentials + pseudopot_cell_vnl &ppcell, // non-local pseudopotentials + Plus_U &dftu, // mohan add 2025-11-06 + VSep* vsep_cell, // U-1/2 method + psi::Psi, base_device::DEVICE_GPU>* kspw_psi, // electronic wave functions + hamilt::Hamilt, base_device::DEVICE_GPU>* p_hamilt, // hamiltonian + ModulePW::PW_Basis_K *pw_wfc, // pw for wfc + const ModulePW::PW_Basis *pw_rhod, // pw for rhod + const Input_para& inp); // input parameters + +template void pw::setup_pot, base_device::DEVICE_GPU>( + const int istep, // ionic step + UnitCell& ucell, // unitcell + const K_Vectors &kv, // kpoints + Structure_Factor &sf, // structure factors + elecstate::ElecState *pelec, // pointer of electrons + const Parallel_Grid ¶_grid, // parallel of FFT grids + const Charge &chr, // charge density + pseudopot_cell_vl &locpp, // local pseudopotentials + pseudopot_cell_vnl &ppcell, // non-local pseudopotentials + Plus_U &dftu, // mohan add 2025-11-06 + VSep* vsep_cell, // U-1/2 method + psi::Psi, base_device::DEVICE_GPU>* kspw_psi, // electronic wave functions + hamilt::Hamilt, base_device::DEVICE_GPU>* p_hamilt, // hamiltonian + ModulePW::PW_Basis_K *pw_wfc, // pw for wfc + const ModulePW::PW_Basis *pw_rhod, // pw for rhod + const Input_para& inp); // input parameters + +#endif diff --git a/source/source_pw/module_pwdft/setup_pot.h b/source/source_pw/module_pwdft/setup_pot.h new file mode 100644 index 0000000000..0f691bbfc7 --- /dev/null +++ b/source/source_pw/module_pwdft/setup_pot.h @@ -0,0 +1,38 @@ +#ifndef SETUP_POT_H +#define SETUP_POT_H + +#include "source_base/module_device/device.h" // use Device +#include "source_cell/unitcell.h" +#include "source_cell/klist.h" +#include "source_pw/module_pwdft/structure_factor.h" +#include "source_estate/elecstate.h" +#include "source_pw/module_pwdft/vl_pw.h" +#include "source_hamilt/hamilt.h" +#include "source_lcao/module_dftu/dftu.h" // mohan add 2025-11-06 + +namespace pw +{ + +template +void setup_pot(const int istep, + UnitCell& ucell, // unitcell + const K_Vectors &kv, // kpoints + Structure_Factor &sf, // structure factors + elecstate::ElecState *pelec, // pointer of electrons + const Parallel_Grid ¶_grid, // parallel of FFT grids + const Charge &chr, // charge density + pseudopot_cell_vl &locpp, // local pseudopotentials + pseudopot_cell_vnl &ppcell, // non-local pseudopotentials + Plus_U &dftu, // mohan add 2025-11-06 + VSep* vsep_cell, // U-1/2 method + psi::Psi* kspw_psi, // electronic wave functions + hamilt::Hamilt* p_hamilt, // hamiltonian + ModulePW::PW_Basis_K *pw_wfc, // pw for wfc + const ModulePW::PW_Basis *pw_rhod, // pw for rhod + const Input_para& inp); // input parameters + +} + + + +#endif diff --git a/source/source_pw/module_pwdft/setup_pwrho.cpp b/source/source_pw/module_pwdft/setup_pwrho.cpp new file mode 100644 index 0000000000..156c5b27bb --- /dev/null +++ b/source/source_pw/module_pwdft/setup_pwrho.cpp @@ -0,0 +1,141 @@ +#include "source_pw/module_pwdft/setup_pwrho.h" +#include "source_io/module_output/print_info.h" // use print_rhofft +#include "source_base/parallel_comm.h" // use POOL_WORLD + +void pw::setup_pwrho( + UnitCell& ucell, // unitcell + const bool double_grid, // for USPP + bool &pw_rho_flag, // flag for allocation of pw_rho + ModulePW::PW_Basis* &pw_rho, // pw for rhod + ModulePW::PW_Basis* &pw_rhod, // pw for rhod + ModulePW::PW_Basis_Big* &pw_big, // pw for rhod + const std::string &classname, + const Input_para& inp) // input parameters * +{ + ModuleBase::TITLE("pw", "setup_pwrho"); + + std::string fft_device = inp.device; + std::string fft_precision = inp.precision; + + // LCAO basis doesn't support GPU acceleration on FFT currently + if(inp.basis_type == "lcao") + { + fft_device = "cpu"; + } + + // single, double, or mixing precision calculations + if ((inp.precision=="single") || (inp.precision=="mixing")) + { + fft_precision = "mixing"; + } + else if (inp.precision=="double") + { + fft_precision = "double"; + } + + // for GPU +#if (not defined(__ENABLE_FLOAT_FFTW) and (defined(__CUDA) || defined(__RCOM))) + if (fft_device == "gpu") + { + fft_precision = "double"; + } +#endif + + // initialize pw_rho + pw_rho = new ModulePW::PW_Basis_Big(fft_device, fft_precision); + pw_rho_flag = true; + + // initialize pw_rhod + if (double_grid) + { + pw_rhod = new ModulePW::PW_Basis_Big(fft_device, fft_precision); + } + else + { + pw_rhod = pw_rho; + } + + // initialize pw_big + pw_big = static_cast(pw_rhod); + pw_big->setbxyz(inp.bx, inp.by, inp.bz); + + //! initialie the plane wave basis for rho +#ifdef __MPI + pw_rho->initmpi(GlobalV::NPROC_IN_POOL, GlobalV::RANK_IN_POOL, POOL_WORLD); +#endif + + //! for OFDFT calculations + if (classname == "ESolver_OF" || inp.of_ml_gene_data == 1) + { + pw_rho->setfullpw(inp.of_full_pw, inp.of_full_pw_dim); + } + + //! initialize the FFT grid + if (inp.nx * inp.ny * inp.nz == 0) + { + pw_rho->initgrids(inp.ref_cell_factor * ucell.lat0, ucell.latvec, 4.0 * inp.ecutwfc); + } + else + { + pw_rho->initgrids(inp.ref_cell_factor * ucell.lat0, ucell.latvec, inp.nx, inp.ny, inp.nz); + } + + pw_rho->initparameters(false, 4.0 * inp.ecutwfc); + pw_rho->fft_bundle.initfftmode(inp.fft_mode); + pw_rho->setuptransform(); + pw_rho->collect_local_pw(); + pw_rho->collect_uniqgg(); + + //! initialize the double grid (for uspp) if necessary + if (double_grid) + { + ModulePW::PW_Basis_Sup* pw_rhod_sup = static_cast(pw_rhod); +#ifdef __MPI + pw_rhod->initmpi(GlobalV::NPROC_IN_POOL, GlobalV::RANK_IN_POOL, POOL_WORLD); +#endif + if (classname == "ESolver_OF") + { + pw_rhod->setfullpw(inp.of_full_pw, inp.of_full_pw_dim); + } + if (inp.ndx * inp.ndy * inp.ndz == 0) + { + pw_rhod->initgrids(inp.ref_cell_factor * ucell.lat0, ucell.latvec, inp.ecutrho); + } + else + { + pw_rhod->initgrids(inp.ref_cell_factor * ucell.lat0, ucell.latvec, inp.ndx, inp.ndy, inp.ndz); + } + pw_rhod->initparameters(false, inp.ecutrho); + pw_rhod->fft_bundle.initfftmode(inp.fft_mode); + pw_rhod_sup->setuptransform(pw_rho); + pw_rhod->collect_local_pw(); + pw_rhod->collect_uniqgg(); + } + + ModuleIO::print_rhofft(pw_rhod, pw_rho, pw_big, GlobalV::ofs_running); + + return; +} + + +void pw::teardown_pwrho(bool &pw_rho_flag, + const bool double_grid, + ModulePW::PW_Basis* &pw_rho, // pw for rhod + ModulePW::PW_Basis* &pw_rhod) // pw for rhod +{ + if (pw_rho_flag == true) + { + delete pw_rho; + pw_rho = nullptr; + pw_rho_flag = false; + } + + if (double_grid == true) + { + delete pw_rhod; + pw_rhod = nullptr; + } + + return; +} + diff --git a/source/source_pw/module_pwdft/setup_pwrho.h b/source/source_pw/module_pwdft/setup_pwrho.h new file mode 100644 index 0000000000..4e11848d62 --- /dev/null +++ b/source/source_pw/module_pwdft/setup_pwrho.h @@ -0,0 +1,32 @@ +#ifndef SETUP_PWRHO_H +#define SETUP_PWRHO_H + +#include "source_cell/unitcell.h" // use UnitCell +#include "source_pw/module_pwdft/structure_factor.h" // use Structure_Factor +#include "source_basis/module_pw/pw_basis.h" // use PW_Basis +#include "source_io/module_parameter/input_parameter.h" // use Input_para + +namespace pw +{ + +void setup_pwrho( + UnitCell& ucell, // unitcell + const bool double_grid, // for USPP + bool &pw_rho_flag, // flag for allocation of pw_rho + ModulePW::PW_Basis* &pw_rho, // pw for rhod + ModulePW::PW_Basis* &pw_rhod, // pw for rhod + ModulePW::PW_Basis_Big* &pw_big, // pw for rhod + const std::string &classname, + const Input_para& inp); // input parameters * + + +void teardown_pwrho(bool &pw_rho_flag, + const bool double_grid, + ModulePW::PW_Basis* &pw_rho, // pw for rhod + ModulePW::PW_Basis* &pw_rhod); // pw for rhod + +} + + + +#endif diff --git a/source/source_pw/module_pwdft/setup_pwwfc.cpp b/source/source_pw/module_pwdft/setup_pwwfc.cpp new file mode 100644 index 0000000000..995e7b7f42 --- /dev/null +++ b/source/source_pw/module_pwdft/setup_pwwfc.cpp @@ -0,0 +1,79 @@ +#include "source_pw/module_pwdft/setup_pwwfc.h" // pw_wfc +#include "source_base/parallel_comm.h" // POOL_WORLD +#include "source_base/parallel_reduce.h" // Parallel_Reduce +#include "source_io/module_output/print_info.h" // print information + +void pw::teardown_pwwfc(ModulePW::PW_Basis_K* &pw_wfc) +{ + delete pw_wfc; +} + +void pw::setup_pwwfc(const Input_para& inp, + const UnitCell& ucell, + const ModulePW::PW_Basis& pw_rho, + K_Vectors& kv, + ModulePW::PW_Basis_K* &pw_wfc) +{ + ModuleBase::TITLE("pw", "pw_setup"); + + std::string fft_device = inp.device; + + //! setup pw_wfc + // currently LCAO doesn't support GPU acceleration of FFT + if(inp.basis_type == "lcao") + { + fft_device = "cpu"; + } + std::string fft_precision = inp.precision; +#ifdef __ENABLE_FLOAT_FFTW + if (inp.cal_cond && inp.esolver_type == "sdft") + { + fft_precision = "mixing"; + } +#endif + + pw_wfc = new ModulePW::PW_Basis_K_Big(fft_device, fft_precision); + + + // for LCAO calculations, we need to set bx, by, and bz + ModulePW::PW_Basis_K_Big* tmp = static_cast(pw_wfc); + tmp->setbxyz(inp.bx, inp.by, inp.bz); + + + + //! new plane wave basis, fft grids, etc. +#ifdef __MPI + pw_wfc->initmpi(GlobalV::NPROC_IN_POOL, GlobalV::RANK_IN_POOL, POOL_WORLD); +#endif + + pw_wfc->initgrids(inp.ref_cell_factor * ucell.lat0, + ucell.latvec, + pw_rho.nx, + pw_rho.ny, + pw_rho.nz); + + pw_wfc->initparameters(false, inp.ecutwfc, kv.get_nks(), kv.kvec_d.data()); +#ifdef __MPI + if (inp.pw_seed > 0) + { + Parallel_Reduce::reduce_max( pw_wfc->ggecut); + } + // qianrui add 2021-8-13 to make different kpar parameters can get the same result +#endif + + pw_wfc->fft_bundle.initfftmode(inp.fft_mode); + pw_wfc->setuptransform(); + + //! initialize the number of plane waves for each k point + for (int ik = 0; ik < kv.get_nks(); ++ik) + { + kv.ngk[ik] = pw_wfc->npwk[ik]; + } + + pw_wfc->collect_local_pw(inp.erf_ecut, inp.erf_height, inp.erf_sigma); + + ModuleIO::print_wfcfft(inp, *pw_wfc, GlobalV::ofs_running); + + return; +} + diff --git a/source/source_pw/module_pwdft/setup_pwwfc.h b/source/source_pw/module_pwdft/setup_pwwfc.h new file mode 100644 index 0000000000..db39e28941 --- /dev/null +++ b/source/source_pw/module_pwdft/setup_pwwfc.h @@ -0,0 +1,23 @@ +#ifndef SETUP_PWWFC_H +#define SETUP_PWWFC_H + +#include "source_io/module_parameter/parameter.h" // input parameters +#include "source_cell/unitcell.h" // cell information +#include "source_cell/klist.h" // k-points +#include "source_basis/module_pw/pw_basis.h" // pw_rho +#include "source_basis/module_pw/pw_basis_k.h" // pw_wfc + +namespace pw +{ + +void teardown_pwwfc(ModulePW::PW_Basis_K* &pw_wfc); + +void setup_pwwfc(const Input_para& inp, + const UnitCell& ucell, + const ModulePW::PW_Basis& pw_rho, + K_Vectors& kv, + ModulePW::PW_Basis_K* &pw_wfc); + +} + +#endif diff --git a/source/source_pw/module_pwdft/soc.cpp b/source/source_pw/module_pwdft/soc.cpp index d90b334a2f..a44a0b6a48 100644 --- a/source/source_pw/module_pwdft/soc.cpp +++ b/source/source_pw/module_pwdft/soc.cpp @@ -122,7 +122,7 @@ int Soc::sph_ind(const int l, const double j, const int m, const int spin) // in a spinor with orbital angular momentum l, total angular // momentum j, projection along z of the total angular momentum m+-1/2. // Spin selects the up (spin=1) or down (spin=2) coefficient. - int sph_ind0; + int sph_ind0 = 0; if (spin != 0 && spin != 1) { ModuleBase::WARNING_QUIT("sph_ind", "spin must be 0 1"); diff --git a/source/source_pw/module_pwdft/stress_cc.cpp b/source/source_pw/module_pwdft/stress_cc.cpp new file mode 100644 index 0000000000..5ae527bdf3 --- /dev/null +++ b/source/source_pw/module_pwdft/stress_cc.cpp @@ -0,0 +1,338 @@ +#include "stress_func.h" +#include "source_hamilt/module_xc/xc_functional.h" +#include "source_io/module_parameter/parameter.h" +#include "source_base/math_integral.h" +#include "source_base/timer.h" +#include "source_estate/cal_ux.h" + +#ifdef USE_LIBXC +#include "source_hamilt/module_xc/xc_functional_libxc.h" +#endif + + +//NLCC term, need to be tested +template +void Stress_Func::stress_cc(ModuleBase::matrix& sigma, + ModulePW::PW_Basis* rho_basis, + UnitCell& ucell, + const Structure_Factor* p_sf, + const bool is_pw, + const bool *numeric, + const Charge* const chr) +{ + ModuleBase::TITLE("Stress","stress_cc"); + ModuleBase::timer::tick("Stress","stress_cc"); + + FPTYPE fact=1.0; + + if(is_pw&&PARAM.globalv.gamma_only_pw) + { + fact = 2.0; //is_pw:PW basis, gamma_only need to FPTYPE. + } + + FPTYPE sigmadiag; + FPTYPE* rhocg = nullptr; + + int judge=0; + for(int nt=0;ntnrxx, ucell.omega, ucell.tpiba, chr); + + // etxc = std::get<0>(etxc_vtxc_v); + // vtxc = std::get<1>(etxc_vtxc_v); + vxc = std::get<2>(etxc_vtxc_v); +#else + ModuleBase::WARNING_QUIT("stress_cc","to use mGGA, compile with LIBXC"); +#endif + } + else + { + elecstate::cal_ux(ucell); + const auto etxc_vtxc_v = XC_Functional::v_xc(rho_basis->nrxx, chr, &ucell); + // etxc = std::get<0>(etxc_vtxc_v); // may delete? + // vtxc = std::get<1>(etxc_vtxc_v); // may delete? + vxc = std::get<2>(etxc_vtxc_v); + } + + std::complex* psic = new std::complex[rho_basis->nmaxgr]; + + if(PARAM.inp.nspin==1||PARAM.inp.nspin==4) + { +#ifdef _OPENMP +#pragma omp parallel for schedule(static, 1024) +#endif + for(int ir=0;irnrxx;ir++) + { + // psic[ir] = vxc(0,ir); + psic[ir] = std::complex(vxc(0, ir), 0.0); + } + } + else + { +#ifdef _OPENMP +#pragma omp parallel for schedule(static, 1024) +#endif + for(int ir=0;irnrxx;ir++) + { + psic[ir] = 0.5 * (vxc(0, ir) + vxc(1, ir)); + } + } + + // to G space + rho_basis->real2recip(psic, psic); + + //psic cantains now Vxc(G) + rhocg= new FPTYPE [rho_basis->ngg]; + + sigmadiag=0.0; + for(int nt=0;ntderiv_drhoc( + numeric, + ucell.omega, + ucell.tpiba2, + ucell.atoms[nt].ncpp.msh, + ucell.atoms[nt].ncpp.r.data(), + ucell.atoms[nt].ncpp.rab.data(), + ucell.atoms[nt].ncpp.rho_atc.data(), + rhocg, + rho_basis, + 1); + + + //diagonal term +#ifdef _OPENMP +#pragma omp parallel for reduction(+:sigmadiag) schedule(static, 256) +#endif + for(int ig = 0;ig< rho_basis->npw;ig++) + { + std::complex local_sigmadiag; + if (rho_basis->ig_gge0 == ig) { + local_sigmadiag = conj(psic[ig]) * p_sf->strucFac(nt, ig) * rhocg[rho_basis->ig2igg[ig]]; + } + else + { + local_sigmadiag = conj(psic[ig]) * p_sf->strucFac(nt, ig) * rhocg[rho_basis->ig2igg[ig]] * fact; + } + sigmadiag += local_sigmadiag.real(); + } + this->deriv_drhoc ( + numeric, + ucell.omega, + ucell.tpiba2, + ucell.atoms[nt].ncpp.msh, + ucell.atoms[nt].ncpp.r.data(), + ucell.atoms[nt].ncpp.rab.data(), + ucell.atoms[nt].ncpp.rho_atc.data(), + rhocg, + rho_basis, + 0); + // non diagonal term (g=0 contribution missing) + const int ig0 = rho_basis->ig_gge0; +#ifdef _OPENMP +#pragma omp parallel +{ + ModuleBase::matrix local_sigma(3, 3); + #pragma omp for +#else + ModuleBase::matrix& local_sigma = sigma; +#endif + for(int ig = 0;ig< rho_basis->npw;ig++) + { + if (ig == ig0) + { + continue; // skip G=0 + } + for (int l = 0; l < 3; l++) + { + for (int m = 0;m< 3;m++) + { + const FPTYPE norm_g = sqrt(rho_basis->gg[ig]); + const std::complex t + = conj(psic[ig]) * p_sf->strucFac(nt, ig) * rhocg[rho_basis->ig2igg[ig]] + * ucell.tpiba * rho_basis->gcar[ig][l] * rho_basis->gcar[ig][m] / norm_g * fact; + local_sigma(l,m) += t.real(); + }//end m + }//end l + }//end ng +#ifdef _OPENMP + #pragma omp critical(stress_cc_reduce) + { + for(int l=0;l<3;l++) + { + for(int m=0;m<3;m++) + { + sigma(l,m) += local_sigma(l,m); + } + } + } +} +#endif + }//end if + }//end nt + + for(int l = 0;l< 3;l++) + { + sigma(l,l) += sigmadiag; + } + for(int l = 0;l< 3;l++) + { + for (int m = 0;m< 3;m++) + { + Parallel_Reduce::reduce_pool(sigma(l, m)); + } + } + + delete[] rhocg; + delete[] psic; + + ModuleBase::timer::tick("Stress","stress_cc"); + return; +} + + +template +void Stress_Func::deriv_drhoc +( + const bool &numeric, + const double& omega, + const double& tpiba2, + const int mesh, + const FPTYPE *r, + const FPTYPE *rab, + const FPTYPE *rhoc, + FPTYPE *drhocg, + ModulePW::PW_Basis* rho_basis, + int type +) +{ + int igl0=0; + double gx = 0.0; + double rhocg1 = 0.0; + std::vector aux(mesh); + this->device = base_device::get_device_type(this->ctx); + + // the modulus of g for a given shell + // the fourier transform + // auxiliary memory for integration + std::vector gx_arr(rho_basis->ngg); + double *gx_arr_d = nullptr; + + // counter on radial mesh points + // counter on g shells + // lower limit for loop on ngl + + // + // G=0 term + // + if(type == 0) + { + if (rho_basis->gg_uniq[0] < 1.0e-8) + { + drhocg [0] = 0.0; + igl0 = 1; + } + else + { + igl0 = 0; + } + } + else + { + if (rho_basis->gg_uniq[0] < 1.0e-8) + { + for (int ir = 0;ir < mesh; ir++) + { + aux [ir] = r [ir] * r [ir] * rhoc [ir]; + } + ModuleBase::Integral::Simpson_Integral(mesh, aux.data(), rab, rhocg1); + drhocg [0] = ModuleBase::FOUR_PI * rhocg1 / omega; + igl0 = 1; + } + else + { + igl0 = 0; + } + } + + + // + // G <> 0 term + // + +#ifdef _OPENMP +#pragma omp parallel for +#endif + for(int igl = igl0;igl< rho_basis->ngg;igl++) + { + gx_arr[igl] = sqrt(rho_basis->gg_uniq[igl] * tpiba2); + } + + double *r_d = nullptr; + double *rhoc_d = nullptr; + double *rab_d = nullptr; + double *aux_d = nullptr; + double *drhocg_d = nullptr; + + if(this->device == base_device::GpuDevice) + { + resmem_var_op()(r_d, mesh); + resmem_var_op()(rhoc_d, mesh); + resmem_var_op()(rab_d, mesh); + + resmem_var_op()(aux_d, mesh); + resmem_var_op()(gx_arr_d, rho_basis->ngg); + resmem_var_op()(drhocg_d, rho_basis->ngg); + + syncmem_var_h2d_op()(gx_arr_d, gx_arr.data(), rho_basis->ngg); + syncmem_var_h2d_op()(r_d, r, mesh); + syncmem_var_h2d_op()(rab_d, rab, mesh); + syncmem_var_h2d_op()(rhoc_d, rhoc, mesh); + } + + if(this->device == base_device::GpuDevice) + { + hamilt::cal_stress_drhoc_aux_op()( + r_d,rhoc_d,gx_arr_d+igl0,rab_d,drhocg_d+igl0,mesh,igl0,rho_basis->ngg-igl0,omega,type); + syncmem_var_d2h_op()(drhocg+igl0, drhocg_d+igl0, rho_basis->ngg-igl0); + + } + else + { + hamilt::cal_stress_drhoc_aux_op()( + r,rhoc,gx_arr.data()+igl0,rab,drhocg+igl0,mesh,igl0,rho_basis->ngg-igl0,omega,type); + + } + delmem_var_op()(r_d); + delmem_var_op()(rhoc_d); + delmem_var_op()(rab_d); + delmem_var_op()(gx_arr_d); + delmem_var_op()(drhocg_d); + + return; +} + +template class Stress_Func; +#if ((defined __CUDA) || (defined __ROCM)) +template class Stress_Func; +#endif diff --git a/source/source_pw/module_pwdft/stress_ewa.cpp b/source/source_pw/module_pwdft/stress_ewa.cpp new file mode 100644 index 0000000000..20f107581c --- /dev/null +++ b/source/source_pw/module_pwdft/stress_ewa.cpp @@ -0,0 +1,209 @@ +#include "stress_func.h" +#include "source_hamilt/module_ewald/H_Ewald_pw.h" +#include "source_base/timer.h" +#include "source_base/tool_threading.h" +#include "source_base/libm/libm.h" + +#ifdef _OPENMP +#include +#endif + +//calcualte the Ewald stress term in PW and LCAO +template +void Stress_Func::stress_ewa(const UnitCell& ucell, + ModuleBase::matrix& sigma, + ModulePW::PW_Basis* rho_basis, + const bool is_pw) +{ + ModuleBase::TITLE("Stress","stress_ewa"); + ModuleBase::timer::tick("Stress","stress_ewa"); + + FPTYPE charge=0; + for(int it=0; it < ucell.ntype; it++) + { + charge = charge + ucell.atoms[it].ncpp.zv * ucell.atoms[it].na; + } + //choose alpha in order to have convergence in the sum over G + //upperbound is a safe upper bound for the error ON THE ENERGY + + FPTYPE alpha=2.9; + FPTYPE upperbound=0.0; + + do{ + alpha-=0.1; + if(alpha==0.0) + { + ModuleBase::WARNING_QUIT("stres_ew", "optimal alpha not found"); + } + upperbound =ModuleBase::e2 * pow(charge,2) * + sqrt( 2 * alpha / (ModuleBase::TWO_PI)) + * erfc(sqrt(ucell.tpiba2 * rho_basis->ggecut / 4.0 / alpha)); + } + while(upperbound>1e-7); + + //G-space sum here + //Determine if this processor contains G=0 and set the constant term + FPTYPE sdewald=0.0; + const int ig0 = rho_basis->ig_gge0; + if( ig0 >= 0) + { + sdewald = (ModuleBase::TWO_PI) * ModuleBase::e2 / 4.0 / alpha * pow(charge/ucell.omega,2); + } + else + { + sdewald = 0.0; + } + + //sdewald is the diagonal term + + FPTYPE fact=1.0; + if (PARAM.globalv.gamma_only_pw && is_pw) + { + fact=2.0; + } +// else fact=1.0; + +#pragma omp parallel +{ + ModuleBase::matrix local_sigma(3, 3); + FPTYPE local_sdewald = 0; + + FPTYPE g2,g2a; + FPTYPE arg; + std::complex rhostar; + FPTYPE sewald; + + #pragma omp for + for(int ig = 0; ig < rho_basis->npw; ig++) + { + if(ig == ig0) + { + continue; + } + g2 = rho_basis->gg[ig]* ucell.tpiba2; + g2a = g2 /4.0/alpha; + rhostar=std::complex(0.0,0.0); + + for(int it=0; it < ucell.ntype; it++) + { + for(int i=0; igcar[ig] * ucell.atoms[it].tau[i]) * (ModuleBase::TWO_PI); + FPTYPE sinp, cosp; + ModuleBase::libm::sincos(arg, &sinp, &cosp); + rhostar = rhostar + std::complex(ucell.atoms[it].ncpp.zv * cosp,ucell.atoms[it].ncpp.zv * sinp); + } + } + rhostar /= ucell.omega; + sewald = fact* (ModuleBase::TWO_PI) * ModuleBase::e2 * ModuleBase::libm::exp(-g2a) / g2 * pow(std::abs(rhostar),2); + local_sdewald -= sewald; + for(int l=0;l<3;l++) + { + for(int m=0;mgcar[ig][l] * rho_basis->gcar[ig][m] / g2 * (g2a + 1); + } + } + } + + //R-space sum here (only for the processor that contains G=0) + int mxr = 200; + int *irr=nullptr; + ModuleBase::Vector3 *r; + FPTYPE *r2=nullptr; + FPTYPE rr=0.0; + ModuleBase::Vector3 d_tau; + FPTYPE r0[3]; + FPTYPE rmax=0.0; + int nrm=0; + FPTYPE fac=0.0; + + if(ig0 >= 0) + { + std::vector> r(mxr); + std::vector r2(mxr); + std::vector irr(mxr); + + FPTYPE sqa = sqrt(alpha); + FPTYPE sq8a_2pi = sqrt(8 * alpha / (ModuleBase::TWO_PI)); + rmax = 4.0/sqa/ucell.lat0; + + #pragma omp for + for(long long ijat = 0; ijat < ucell.nat * ucell.nat; ijat++) + { + int it=0; + int i=0; + int jt=0; + int j=0; + ucell.ijat2iaitjajt(ijat, &i, &it, &j, &jt); + if (ucell.atoms[it].na != 0 && ucell.atoms[jt].na != 0) + { + //calculate tau[na]-tau[nb] + d_tau = ucell.atoms[it].tau[i] - ucell.atoms[jt].tau[j]; + //generates nearest-neighbors shells + H_Ewald_pw::rgen(d_tau, rmax, irr.data(), ucell.latvec, ucell.G, r.data(), r2.data(), nrm); + for(int nr=0; nr; +#if ((defined __CUDA) || (defined __ROCM)) +template class Stress_Func; +#endif diff --git a/source/source_pw/module_pwdft/stress_exx.cpp b/source/source_pw/module_pwdft/stress_exx.cpp new file mode 100644 index 0000000000..73e7f7e214 --- /dev/null +++ b/source/source_pw/module_pwdft/stress_exx.cpp @@ -0,0 +1,152 @@ +#include "source_hamilt/module_xc/exx_info.h" +#include "op_pw_exx.h" +#include "source_base/parallel_common.h" +#include "stress_pw.h" + +template +void Stress_PW::stress_exx(ModuleBase::matrix& sigma, + const ModuleBase::matrix& wg, + ModulePW::PW_Basis* rhopw, + ModulePW::PW_Basis_K* wfcpw, + const K_Vectors *p_kv, + const psi::Psi , Device>* d_psi_in, const UnitCell& ucell) +{ + bool gamma_extrapolation = PARAM.inp.exx_gamma_extrapolation; + bool is_mp = p_kv->get_is_mp(); +#ifdef __MPI + Parallel_Common::bcast_bool(is_mp); +#endif + if (!is_mp) + { + gamma_extrapolation = false; + } + + // T is complex of FPTYPE, if FPTYPE is double, T is std::complex + // but if FPTYPE is std::complex, T is still std::complex + using T = std::complex; + using Real = FPTYPE; + using setmem_complex_op = base_device::memory::set_memory_op; + using resmem_complex_op = base_device::memory::resize_memory_op; + using resmem_real_op = base_device::memory::resize_memory_op; + using delmem_complex_op = base_device::memory::delete_memory_op; + using delmem_real_op = base_device::memory::delete_memory_op; + using syncmem_complex_op = base_device::memory::synchronize_memory_op; + + int nks = wfcpw->nks; + int nqs = wfcpw->nks; // currently q-points downsampling is not supported + double omega = ucell.omega; + double tpiba = ucell.tpiba; + double tpiba2 = ucell.tpiba2; + double omega_inv = 1.0 / omega; + + // allocate space + T* psi_nk_real = nullptr; + T* psi_mq_real = nullptr; + T* density_real = nullptr; + T* density_recip = nullptr; + Real* pot = nullptr; // This factor is 2x of the potential in 10.1103/PhysRevB.73.125120 + Real* pot_stress = nullptr; + + resmem_complex_op()(psi_nk_real, wfcpw->nrxx); + resmem_complex_op()(psi_mq_real, wfcpw->nrxx); + resmem_complex_op()(density_real, rhopw->nrxx); + resmem_complex_op()(density_recip, rhopw->npw); + resmem_real_op()(pot, rhopw->npw); + resmem_real_op()(pot_stress, rhopw->npw); + + // hamilt::get_exx_potential(p_kv, wfcpw, rhopw, pot, tpiba, gamma_extrapolation, omega); + // hamilt::get_exx_stress_potential(p_kv, wfcpw, rhopw, pot_stress, tpiba, gamma_extrapolation, omega); + + // calculate the stress + + // for nk, mq + for (int ik = 0; ik < nks; ik++) + { + for (int nband = 0; nband < d_psi_in->get_nbands(); nband++) + { + if (wg(ik, nband) < 1e-12) continue; + // psi_nk in real space + d_psi_in->fix_kb(ik, nband); + T* psi_nk = d_psi_in->get_pointer(); + wfcpw->recip2real(psi_nk, psi_nk_real, ik); + + for (int iq = 0; iq < nqs; iq++) + { + hamilt::get_exx_potential(p_kv, wfcpw, rhopw, pot, tpiba, gamma_extrapolation, omega, ik, iq, true); + hamilt::get_exx_stress_potential(p_kv, wfcpw, rhopw, pot_stress, tpiba, gamma_extrapolation, omega, ik, iq); + for (int mband = 0; mband < d_psi_in->get_nbands(); mband++) + { + // psi_mq in real space + d_psi_in->fix_kb(iq, mband); + T* psi_mq = d_psi_in->get_pointer(); + wfcpw->recip2real(psi_mq, psi_mq_real, iq); + + // overlap density in real space + setmem_complex_op()(density_real, 0.0, rhopw->nrxx); + for (int ig = 0; ig < rhopw->nrxx; ig++) + { + density_real[ig] = psi_nk_real[ig] * std::conj(psi_mq_real[ig]) * omega_inv; + } + + // density in reciprocal space + rhopw->real2recip(density_real, density_recip); + + // really calculate the stress + + // for alpha beta + for (int alpha = 0; alpha < 3; alpha++) + { + for (int beta = alpha; beta < 3; beta++) + { + int delta_ab = (alpha == beta) ? 1 : 0; + double sigma_ab_loc = 0.0; + #ifdef _OPENMP + #pragma omp parallel for schedule(static) reduction(+:sigma_ab_loc) + #endif + for (int ig = 0; ig < rhopw->npw; ig++) + { + const ModuleBase::Vector3 kqg = wfcpw->kvec_c[ik] - wfcpw->kvec_c[iq] + rhopw->gcar[ig]; + double kqg_alpha = kqg[alpha] * tpiba; + double kqg_beta = kqg[beta] * tpiba; + // equation 10 of 10.1103/PhysRevB.73.125120 + double density_recip2 = std::real(density_recip[ig] * std::conj(density_recip[ig])); + const int idx = ig; + double pot_local = pot[idx]; + double pot_stress_local = pot_stress[idx]; + sigma_ab_loc += density_recip2 * pot_local * (kqg_alpha * kqg_beta * pot_stress_local - delta_ab) ; + + } + + // 0.5 in the following line is caused by 2x in the pot + sigma(alpha, beta) -= GlobalC::exx_info.info_global.hybrid_alpha + * 0.25 * sigma_ab_loc + * wg(ik, nband) * wg(iq, mband) / nqs / p_kv->wk[ik]; + } + } + } + } + } + } + + for (int l = 0; l < 3; l++) + { + for (int m = l + 1; m < 3; m++) + { + sigma(m, l) = sigma(l, m); + } + } + + Parallel_Reduce::reduce_all(sigma.c, sigma.nr * sigma.nc); + + + delmem_complex_op()(psi_nk_real); + delmem_complex_op()(psi_mq_real); + delmem_complex_op()(density_real); + delmem_complex_op()(density_recip); + delmem_real_op()(pot); +} + +template class Stress_PW; +#if ((defined __CUDA) || (defined __ROCM)) +template class Stress_PW; +#endif diff --git a/source/source_pw/module_pwdft/stress_func.h b/source/source_pw/module_pwdft/stress_func.h index 3d4ed38c89..815298aa9d 100644 --- a/source/source_pw/module_pwdft/stress_func.h +++ b/source/source_pw/module_pwdft/stress_func.h @@ -11,11 +11,12 @@ #include "source_basis/module_pw/pw_basis_k.h" #include "source_cell/klist.h" #include "source_estate/module_charge/charge.h" -#include "source_pw/module_pwdft/VNL_in_pw.h" +#include "source_pw/module_pwdft/vnl_pw.h" #include "source_pw/module_pwdft/kernels/stress_op.h" #include "source_pw/module_pwdft/structure_factor.h" #include "source_base/kernels/math_kernel_op.h" #include "source_psi/psi.h" +#include "source_lcao/module_dftu/dftu.h" // mohan add 2025-11-06 //------------------------------------------------------------------- // mohan reconstruction note: 2021-02-07 @@ -179,8 +180,9 @@ class Stress_Func void stress_onsite(ModuleBase::matrix& sigma, const ModuleBase::matrix& wg, const ModulePW::PW_Basis_K* wfc_basis, - const UnitCell& ucell_in, - const psi::Psi , Device>* psi_in, + const UnitCell& ucell_in, + const Plus_U &dftu, // mohan add 2025-11-06 + const psi::Psi , Device>* psi_in, ModuleSymmetry::Symmetry* p_symm); // nonlocal part in PW basis void get_dvnl1(ModuleBase::ComplexMatrix& vkb, diff --git a/source/source_pw/module_pwdft/stress_func_cc.cpp b/source/source_pw/module_pwdft/stress_func_cc.cpp deleted file mode 100644 index 81b2767d51..0000000000 --- a/source/source_pw/module_pwdft/stress_func_cc.cpp +++ /dev/null @@ -1,339 +0,0 @@ -#include "stress_func.h" -#include "source_hamilt/module_xc/xc_functional.h" -#include "source_io/module_parameter/parameter.h" -#include "source_base/math_integral.h" -#include "source_base/timer.h" -#include "source_pw/module_pwdft/global.h" -#include "source_estate/cal_ux.h" - -#ifdef USE_LIBXC -#include "source_hamilt/module_xc/xc_functional_libxc.h" -#endif - - -//NLCC term, need to be tested -template -void Stress_Func::stress_cc(ModuleBase::matrix& sigma, - ModulePW::PW_Basis* rho_basis, - UnitCell& ucell, - const Structure_Factor* p_sf, - const bool is_pw, - const bool *numeric, - const Charge* const chr) -{ - ModuleBase::TITLE("Stress","stress_cc"); - ModuleBase::timer::tick("Stress","stress_cc"); - - FPTYPE fact=1.0; - - if(is_pw&&PARAM.globalv.gamma_only_pw) - { - fact = 2.0; //is_pw:PW basis, gamma_only need to FPTYPE. - } - - FPTYPE sigmadiag; - FPTYPE* rhocg; - - int judge=0; - for(int nt=0;ntnrxx, ucell.omega, ucell.tpiba, chr); - - // etxc = std::get<0>(etxc_vtxc_v); - // vtxc = std::get<1>(etxc_vtxc_v); - vxc = std::get<2>(etxc_vtxc_v); -#else - ModuleBase::WARNING_QUIT("stress_cc","to use mGGA, compile with LIBXC"); -#endif - } - else - { - elecstate::cal_ux(ucell); - const auto etxc_vtxc_v = XC_Functional::v_xc(rho_basis->nrxx, chr, &ucell); - // etxc = std::get<0>(etxc_vtxc_v); // may delete? - // vtxc = std::get<1>(etxc_vtxc_v); // may delete? - vxc = std::get<2>(etxc_vtxc_v); - } - - std::complex* psic = new std::complex[rho_basis->nmaxgr]; - - if(PARAM.inp.nspin==1||PARAM.inp.nspin==4) - { -#ifdef _OPENMP -#pragma omp parallel for schedule(static, 1024) -#endif - for(int ir=0;irnrxx;ir++) - { - // psic[ir] = vxc(0,ir); - psic[ir] = std::complex(vxc(0, ir), 0.0); - } - } - else - { -#ifdef _OPENMP -#pragma omp parallel for schedule(static, 1024) -#endif - for(int ir=0;irnrxx;ir++) - { - psic[ir] = 0.5 * (vxc(0, ir) + vxc(1, ir)); - } - } - - // to G space - rho_basis->real2recip(psic, psic); - - //psic cantains now Vxc(G) - rhocg= new FPTYPE [rho_basis->ngg]; - - sigmadiag=0.0; - for(int nt=0;ntderiv_drhoc( - numeric, - ucell.omega, - ucell.tpiba2, - ucell.atoms[nt].ncpp.msh, - ucell.atoms[nt].ncpp.r.data(), - ucell.atoms[nt].ncpp.rab.data(), - ucell.atoms[nt].ncpp.rho_atc.data(), - rhocg, - rho_basis, - 1); - - - //diagonal term -#ifdef _OPENMP -#pragma omp parallel for reduction(+:sigmadiag) schedule(static, 256) -#endif - for(int ig = 0;ig< rho_basis->npw;ig++) - { - std::complex local_sigmadiag; - if (rho_basis->ig_gge0 == ig) { - local_sigmadiag = conj(psic[ig]) * p_sf->strucFac(nt, ig) * rhocg[rho_basis->ig2igg[ig]]; - } - else - { - local_sigmadiag = conj(psic[ig]) * p_sf->strucFac(nt, ig) * rhocg[rho_basis->ig2igg[ig]] * fact; - } - sigmadiag += local_sigmadiag.real(); - } - this->deriv_drhoc ( - numeric, - ucell.omega, - ucell.tpiba2, - ucell.atoms[nt].ncpp.msh, - ucell.atoms[nt].ncpp.r.data(), - ucell.atoms[nt].ncpp.rab.data(), - ucell.atoms[nt].ncpp.rho_atc.data(), - rhocg, - rho_basis, - 0); - // non diagonal term (g=0 contribution missing) - const int ig0 = rho_basis->ig_gge0; -#ifdef _OPENMP -#pragma omp parallel -{ - ModuleBase::matrix local_sigma(3, 3); - #pragma omp for -#else - ModuleBase::matrix& local_sigma = sigma; -#endif - for(int ig = 0;ig< rho_basis->npw;ig++) - { - if (ig == ig0) - { - continue; // skip G=0 - } - for (int l = 0; l < 3; l++) - { - for (int m = 0;m< 3;m++) - { - const FPTYPE norm_g = sqrt(rho_basis->gg[ig]); - const std::complex t - = conj(psic[ig]) * p_sf->strucFac(nt, ig) * rhocg[rho_basis->ig2igg[ig]] - * ucell.tpiba * rho_basis->gcar[ig][l] * rho_basis->gcar[ig][m] / norm_g * fact; - local_sigma(l,m) += t.real(); - }//end m - }//end l - }//end ng -#ifdef _OPENMP - #pragma omp critical(stress_cc_reduce) - { - for(int l=0;l<3;l++) - { - for(int m=0;m<3;m++) - { - sigma(l,m) += local_sigma(l,m); - } - } - } -} -#endif - }//end if - }//end nt - - for(int l = 0;l< 3;l++) - { - sigma(l,l) += sigmadiag; - } - for(int l = 0;l< 3;l++) - { - for (int m = 0;m< 3;m++) - { - Parallel_Reduce::reduce_pool(sigma(l, m)); - } - } - - delete[] rhocg; - delete[] psic; - - ModuleBase::timer::tick("Stress","stress_cc"); - return; -} - - -template -void Stress_Func::deriv_drhoc -( - const bool &numeric, - const double& omega, - const double& tpiba2, - const int mesh, - const FPTYPE *r, - const FPTYPE *rab, - const FPTYPE *rhoc, - FPTYPE *drhocg, - ModulePW::PW_Basis* rho_basis, - int type -) -{ - int igl0=0; - double gx = 0.0; - double rhocg1 = 0.0; - std::vector aux(mesh); - this->device = base_device::get_device_type(this->ctx); - - // the modulus of g for a given shell - // the fourier transform - // auxiliary memory for integration - std::vector gx_arr(rho_basis->ngg); - double *gx_arr_d = nullptr; - - // counter on radial mesh points - // counter on g shells - // lower limit for loop on ngl - - // - // G=0 term - // - if(type == 0) - { - if (rho_basis->gg_uniq[0] < 1.0e-8) - { - drhocg [0] = 0.0; - igl0 = 1; - } - else - { - igl0 = 0; - } - } - else - { - if (rho_basis->gg_uniq[0] < 1.0e-8) - { - for (int ir = 0;ir < mesh; ir++) - { - aux [ir] = r [ir] * r [ir] * rhoc [ir]; - } - ModuleBase::Integral::Simpson_Integral(mesh, aux.data(), rab, rhocg1); - drhocg [0] = ModuleBase::FOUR_PI * rhocg1 / omega; - igl0 = 1; - } - else - { - igl0 = 0; - } - } - - - // - // G <> 0 term - // - -#ifdef _OPENMP -#pragma omp parallel for -#endif - for(int igl = igl0;igl< rho_basis->ngg;igl++) - { - gx_arr[igl] = sqrt(rho_basis->gg_uniq[igl] * tpiba2); - } - - double *r_d = nullptr; - double *rhoc_d = nullptr; - double *rab_d = nullptr; - double *aux_d = nullptr; - double *drhocg_d = nullptr; - - if(this->device == base_device::GpuDevice) - { - resmem_var_op()(r_d, mesh); - resmem_var_op()(rhoc_d, mesh); - resmem_var_op()(rab_d, mesh); - - resmem_var_op()(aux_d, mesh); - resmem_var_op()(gx_arr_d, rho_basis->ngg); - resmem_var_op()(drhocg_d, rho_basis->ngg); - - syncmem_var_h2d_op()(gx_arr_d, gx_arr.data(), rho_basis->ngg); - syncmem_var_h2d_op()(r_d, r, mesh); - syncmem_var_h2d_op()(rab_d, rab, mesh); - syncmem_var_h2d_op()(rhoc_d, rhoc, mesh); - } - - if(this->device == base_device::GpuDevice) - { - hamilt::cal_stress_drhoc_aux_op()( - r_d,rhoc_d,gx_arr_d+igl0,rab_d,drhocg_d+igl0,mesh,igl0,rho_basis->ngg-igl0,omega,type); - syncmem_var_d2h_op()(drhocg+igl0, drhocg_d+igl0, rho_basis->ngg-igl0); - - } - else - { - hamilt::cal_stress_drhoc_aux_op()( - r,rhoc,gx_arr.data()+igl0,rab,drhocg+igl0,mesh,igl0,rho_basis->ngg-igl0,omega,type); - - } - delmem_var_op()(r_d); - delmem_var_op()(rhoc_d); - delmem_var_op()(rab_d); - delmem_var_op()(gx_arr_d); - delmem_var_op()(drhocg_d); - - return; -} - -template class Stress_Func; -#if ((defined __CUDA) || (defined __ROCM)) -template class Stress_Func; -#endif diff --git a/source/source_pw/module_pwdft/stress_func_ewa.cpp b/source/source_pw/module_pwdft/stress_func_ewa.cpp deleted file mode 100644 index c3297cfd72..0000000000 --- a/source/source_pw/module_pwdft/stress_func_ewa.cpp +++ /dev/null @@ -1,239 +0,0 @@ -#include "stress_func.h" -#include "source_hamilt/module_ewald/H_Ewald_pw.h" -#include "source_base/timer.h" -#include "source_base/tool_threading.h" -#include "source_base/libm/libm.h" -#include "source_pw/module_pwdft/global.h" - -#ifdef _OPENMP -#include -#endif - -//calcualte the Ewald stress term in PW and LCAO -template -void Stress_Func::stress_ewa(const UnitCell& ucell, - ModuleBase::matrix& sigma, - ModulePW::PW_Basis* rho_basis, - const bool is_pw) -{ - ModuleBase::TITLE("Stress","stress_ewa"); - ModuleBase::timer::tick("Stress","stress_ewa"); - - FPTYPE charge=0; - for(int it=0; it < ucell.ntype; it++) - { - charge = charge + ucell.atoms[it].ncpp.zv * ucell.atoms[it].na; - } - //choose alpha in order to have convergence in the sum over G - //upperbound is a safe upper bound for the error ON THE ENERGY - - FPTYPE alpha=2.9; - FPTYPE upperbound=0.0; - - do{ - alpha-=0.1; - if(alpha==0.0) - { - ModuleBase::WARNING_QUIT("stres_ew", "optimal alpha not found"); - } - upperbound =ModuleBase::e2 * pow(charge,2) * - sqrt( 2 * alpha / (ModuleBase::TWO_PI)) - * erfc(sqrt(ucell.tpiba2 * rho_basis->ggecut / 4.0 / alpha)); - } - while(upperbound>1e-7); - - //G-space sum here - //Determine if this processor contains G=0 and set the constant term - FPTYPE sdewald=0.0; - const int ig0 = rho_basis->ig_gge0; - if( ig0 >= 0) - { - sdewald = (ModuleBase::TWO_PI) * ModuleBase::e2 / 4.0 / alpha * pow(charge/ucell.omega,2); - } - else - { - sdewald = 0.0; - } - - //sdewald is the diagonal term - - FPTYPE fact=1.0; - if (PARAM.globalv.gamma_only_pw && is_pw) - { - fact=2.0; - } -// else fact=1.0; - -#ifdef _OPENMP -#pragma omp parallel -{ - int num_threads = omp_get_num_threads(); - int thread_id = omp_get_thread_num(); - ModuleBase::matrix local_sigma(3, 3); - FPTYPE local_sdewald = 0.0; -#else - int num_threads = 1; - int thread_id = 0; - ModuleBase::matrix& local_sigma = sigma; - FPTYPE& local_sdewald = sdewald; -#endif - - // Calculate ig range of this thread, avoid thread sync - int ig=0; - int ig_end=0; - ModuleBase::TASK_DIST_1D(num_threads, thread_id, rho_basis->npw, ig, ig_end); - ig_end = ig + ig_end; - - FPTYPE g2,g2a; - FPTYPE arg; - std::complex rhostar; - FPTYPE sewald; - - for(; ig < ig_end; ig++) - { - if(ig == ig0) - { - continue; - } - g2 = rho_basis->gg[ig]* ucell.tpiba2; - g2a = g2 /4.0/alpha; - rhostar=std::complex(0.0,0.0); - - for(int it=0; it < ucell.ntype; it++) - { - for(int i=0; igcar[ig] * ucell.atoms[it].tau[i]) * (ModuleBase::TWO_PI); - FPTYPE sinp, cosp; - ModuleBase::libm::sincos(arg, &sinp, &cosp); - rhostar = rhostar + std::complex(ucell.atoms[it].ncpp.zv * cosp,ucell.atoms[it].ncpp.zv * sinp); - } - } - rhostar /= ucell.omega; - sewald = fact* (ModuleBase::TWO_PI) * ModuleBase::e2 * ModuleBase::libm::exp(-g2a) / g2 * pow(std::abs(rhostar),2); - local_sdewald -= sewald; - for(int l=0;l<3;l++) - { - for(int m=0;mgcar[ig][l] * rho_basis->gcar[ig][m] / g2 * (g2a + 1); - } - } - } - - //R-space sum here (only for the processor that contains G=0) - int mxr = 200; - int *irr=nullptr; - ModuleBase::Vector3 *r; - FPTYPE *r2=nullptr; - FPTYPE rr=0.0; - ModuleBase::Vector3 d_tau; - FPTYPE r0[3]; - FPTYPE rmax=0.0; - int nrm=0; - FPTYPE fac=0.0; - - if(ig0 >= 0) - { - r = new ModuleBase::Vector3[mxr]; - r2 = new FPTYPE[mxr]; - irr = new int[mxr]; - - FPTYPE sqa = sqrt(alpha); - FPTYPE sq8a_2pi = sqrt(8 * alpha / (ModuleBase::TWO_PI)); - rmax = 4.0/sqa/ucell.lat0; - - // collapse it, ia, jt, ja loop into a single loop - long long ijat; - long long ijat_end; - int it=0; - int i=0; - int jt=0; - int j=0; - - ModuleBase::TASK_DIST_1D(num_threads, thread_id, (long long)ucell.nat * ucell.nat, ijat, ijat_end); - ijat_end = ijat + ijat_end; - ucell.ijat2iaitjajt(ijat, &i, &it, &j, &jt); - - while (ijat < ijat_end) - { - if (ucell.atoms[it].na != 0 && ucell.atoms[jt].na != 0) - { - //calculate tau[na]-tau[nb] - d_tau = ucell.atoms[it].tau[i] - ucell.atoms[jt].tau[j]; - //generates nearest-neighbors shells - H_Ewald_pw::rgen(d_tau, rmax, irr, ucell.latvec, ucell.G, r, r2, nrm); - for(int nr=0; nr; -#if ((defined __CUDA) || (defined __ROCM)) -template class Stress_Func; -#endif diff --git a/source/source_pw/module_pwdft/stress_func_exx.cpp b/source/source_pw/module_pwdft/stress_func_exx.cpp deleted file mode 100644 index 1885bb16ee..0000000000 --- a/source/source_pw/module_pwdft/stress_func_exx.cpp +++ /dev/null @@ -1,342 +0,0 @@ -#include "stress_pw.h" -#include "global.h" - -template -void Stress_PW::stress_exx(ModuleBase::matrix& sigma, - const ModuleBase::matrix& wg, - ModulePW::PW_Basis* rhopw, - ModulePW::PW_Basis_K* wfcpw, - const K_Vectors *p_kv, - const psi::Psi , Device>* d_psi_in, const UnitCell& ucell) -{ - double nqs_half1 = 0.5 * p_kv->nmp[0]; - double nqs_half2 = 0.5 * p_kv->nmp[1]; - double nqs_half3 = 0.5 * p_kv->nmp[2]; - bool gamma_extrapolation = PARAM.inp.exx_gamma_extrapolation; - if (!p_kv->get_is_mp()) - { - gamma_extrapolation = false; - } - auto isint = [](double x) - { - double epsilon = 1e-6; // this follows the isint judgement in q-e - return std::abs(x - std::round(x)) < epsilon; - }; - - // T is complex of FPTYPE, if FPTYPE is double, T is std::complex - // but if FPTYPE is std::complex, T is still std::complex - using T = std::complex; - using Real = FPTYPE; - using setmem_complex_op = base_device::memory::set_memory_op; - using resmem_complex_op = base_device::memory::resize_memory_op; - using resmem_real_op = base_device::memory::resize_memory_op; - using delmem_complex_op = base_device::memory::delete_memory_op; - using delmem_real_op = base_device::memory::delete_memory_op; - using syncmem_complex_op = base_device::memory::synchronize_memory_op; - - int nks = wfcpw->nks; - int nqs = wfcpw->nks; // currently q-points downsampling is not supported - double omega = ucell.omega; - double tpiba = ucell.tpiba; - double tpiba2 = ucell.tpiba2; - double omega_inv = 1.0 / omega; - - // allocate space - T* psi_nk_real = nullptr; - T* psi_mq_real = nullptr; - T* density_real = nullptr; - T* density_recip = nullptr; - Real* pot = nullptr; // This factor is 2x of the potential in 10.1103/PhysRevB.73.125120 - Real* pot_stress = nullptr; - - resmem_complex_op()(psi_nk_real, wfcpw->nrxx); - resmem_complex_op()(psi_mq_real, wfcpw->nrxx); - resmem_complex_op()(density_real, rhopw->nrxx); - resmem_complex_op()(density_recip, rhopw->npw); - resmem_real_op()(pot, rhopw->npw * nks * nks); - resmem_real_op()(pot_stress, rhopw->npw * nks * nks); - - // prepare the coefficients - double exx_div = 0; - - // pasted from op_exx_pw.cpp - { - if (GlobalC::exx_info.info_lip.lambda == 0.0) - { - return; - } - - // here we follow the exx_divergence subroutine in q-e (PW/src/exx_base.f90) - double alpha = 10.0 / wfcpw->gk_ecut; - double div = 0; - - // this is the \sum_q F(q) part - // temporarily for all k points, should be replaced to q points later - for (int ik = 0; ik < wfcpw->nks; ik++) - { - const ModuleBase::Vector3 k_c = wfcpw->kvec_c[ik]; - const ModuleBase::Vector3 k_d = wfcpw->kvec_d[ik]; -#ifdef _OPENMP -#pragma omp parallel for reduction(+:div) -#endif - for (int ig = 0; ig < rhopw->npw; ig++) - { - const ModuleBase::Vector3 q_c = k_c + rhopw->gcar[ig]; - const ModuleBase::Vector3 q_d = k_d + rhopw->gdirect[ig]; - double qq = q_c.norm2(); - // For gamma_extrapolation (https://doi.org/10.1103/PhysRevB.79.205114) - // 7/8 of the points in the grid are "activated" and 1/8 are disabled. - // grid_factor is designed for the 7/8 of the grid to function like all of the points - double grid_factor = 1; - double extrapolate_grid = 8.0/7.0; - if (gamma_extrapolation) - { - if (isint(q_d[0] * nqs_half1) && - isint(q_d[1] * nqs_half2) && - isint(q_d[2] * nqs_half3)) - { - grid_factor = 0; - } - else - { - grid_factor = extrapolate_grid; - } - } - - - if (qq <= 1e-8) continue; - else if (GlobalC::exx_info.info_global.ccp_type == Conv_Coulomb_Pot_K::Ccp_Type::Erfc) - { - double hse_omega = GlobalC::exx_info.info_global.hse_omega; - double omega2 = hse_omega * hse_omega; - div += std::exp(-alpha * qq) / qq * (1.0 - std::exp(-qq*tpiba2 / 4.0 / omega2)) * grid_factor; - } - else - { - div += std::exp(-alpha * qq) / qq * grid_factor; - } - } - } - - Parallel_Reduce::reduce_pool(div); - // std::cout << "EXX div: " << div << std::endl; - - // if (PARAM.inp.dft_functional == "hse") - if (!gamma_extrapolation) - { - if (GlobalC::exx_info.info_global.ccp_type == Conv_Coulomb_Pot_K::Ccp_Type::Erfc) - { - double omega = GlobalC::exx_info.info_global.hse_omega; - div += tpiba2 / 4.0 / omega / omega; // compensate for the finite value when qq = 0 - } - else - { - div -= alpha; - } - - } - - div *= ModuleBase::e2 * ModuleBase::FOUR_PI / tpiba2 / wfcpw->nks; - - // numerically value the mean value of F(q) in the reciprocal space - // This means we need to calculate the average of F(q) in the first brillouin zone - alpha /= tpiba2; - int nqq = 100000; - double dq = 5.0 / std::sqrt(alpha) / nqq; - double aa = 0.0; - // if (PARAM.inp.dft_functional == "hse") - if (GlobalC::exx_info.info_global.ccp_type == Conv_Coulomb_Pot_K::Ccp_Type::Erfc) - { - double hse_omega = GlobalC::exx_info.info_global.hse_omega; - double omega2 = hse_omega * hse_omega; - #ifdef _OPENMP - #pragma omp parallel for reduction(+:aa) - #endif - for (int i = 0; i < nqq; i++) - { - double q = dq * (i+0.5); - aa -= exp(-alpha * q * q) * exp(-q*q / 4.0 / omega2) * dq; - } - } - aa *= 8 / ModuleBase::FOUR_PI; - aa += 1.0 / std::sqrt(alpha * ModuleBase::PI); - div -= ModuleBase::e2 * omega * aa; - exx_div = div * wfcpw->nks; - // std::cout << "EXX divergence: " << exx_div << std::endl; - - } - - // prepare for the potential - for (int ik = 0; ik < nks; ik++) - { - for (int iq = 0; iq < nks; iq++) - { - const ModuleBase::Vector3 k_c = wfcpw->kvec_c[ik]; - const ModuleBase::Vector3 k_d = wfcpw->kvec_d[ik]; - const ModuleBase::Vector3 q_c = wfcpw->kvec_c[iq]; - const ModuleBase::Vector3 q_d = wfcpw->kvec_d[iq]; - - #ifdef _OPENMP - #pragma omp parallel for schedule(static) - #endif - for (int ig = 0; ig < rhopw->npw; ig++) - { - const ModuleBase::Vector3 g_d = rhopw->gdirect[ig]; - const ModuleBase::Vector3 kqg_d = k_d - q_d + g_d; - - // For gamma_extrapolation (https://doi.org/10.1103/PhysRevB.79.205114) - // 7/8 of the points in the grid are "activated" and 1/8 are disabled. - // grid_factor is designed for the 7/8 of the grid to function like all of the points - Real grid_factor = 1; - if (gamma_extrapolation) - { - double extrapolate_grid = 8.0/7.0; - if (isint(kqg_d[0] * nqs_half1) && - isint(kqg_d[1] * nqs_half2) && - isint(kqg_d[2] * nqs_half3)) - { - grid_factor = 0; - } - else - { - grid_factor = extrapolate_grid; - } - } - - const int ig_kq = ik * nks * rhopw->npw + iq * rhopw->npw + ig; - - Real gg = (k_c - q_c + rhopw->gcar[ig]).norm2() * tpiba2; - Real hse_omega2 = GlobalC::exx_info.info_global.hse_omega * GlobalC::exx_info.info_global.hse_omega; - // if (kqgcar2 > 1e-12) // vasp uses 1/40 of the smallest (k spacing)**2 - if (gg >= 1e-8) - { - Real fac = -ModuleBase::FOUR_PI * ModuleBase::e2 / gg; - // if (PARAM.inp.dft_functional == "hse") - if (GlobalC::exx_info.info_global.ccp_type == Conv_Coulomb_Pot_K::Ccp_Type::Erfc) - { - pot[ig_kq] = fac * (1.0 - std::exp(-gg / 4.0 / hse_omega2)) * grid_factor; - pot_stress[ig_kq] = (1.0 - (1.0 + gg / 4.0 / hse_omega2) * std::exp(-gg / 4.0 / hse_omega2)) / (1.0 - std::exp(-gg / 4.0 / hse_omega2)) / gg; - } - else if (GlobalC::exx_info.info_global.ccp_type == Conv_Coulomb_Pot_K::Ccp_Type::Erf) - { - ModuleBase::WARNING("Stress_PW", "Stress for Erf is not implemented yet"); - pot[ig_kq] = fac * grid_factor; - pot_stress[ig_kq] = 1.0 / gg; - } - else if (GlobalC::exx_info.info_global.ccp_type == Conv_Coulomb_Pot_K::Ccp_Type::Hf) - { - pot[ig_kq] = fac * grid_factor; - pot_stress[ig_kq] = 1.0 / gg; - } - } - // } - else - { - // if (PARAM.inp.dft_functional == "hse") - if (GlobalC::exx_info.info_global.ccp_type == Conv_Coulomb_Pot_K::Ccp_Type::Erfc && !gamma_extrapolation) - { - pot[ig_kq] = - ModuleBase::PI * ModuleBase::e2 / hse_omega2; // maybe we should add a exx_div here, but q-e does not do that - pot_stress[ig_kq] = 1 / 4.0 / hse_omega2; - } - else - { - pot[ig_kq] = exx_div; - pot_stress[ig_kq] = 0; - } - } - // assert(is_finite(density_recip[ig])); - } - } - } - - // calculate the stress - - // for nk, mq - for (int ik = 0; ik < nks; ik++) - { - for (int nband = 0; nband < d_psi_in->get_nbands(); nband++) - { - if (wg(ik, nband) < 1e-12) continue; - // psi_nk in real space - d_psi_in->fix_kb(ik, nband); - T* psi_nk = d_psi_in->get_pointer(); - wfcpw->recip2real(psi_nk, psi_nk_real, ik); - - for (int iq = 0; iq < nqs; iq++) - { - for (int mband = 0; mband < d_psi_in->get_nbands(); mband++) - { - // psi_mq in real space - d_psi_in->fix_kb(iq, mband); - T* psi_mq = d_psi_in->get_pointer(); - wfcpw->recip2real(psi_mq, psi_mq_real, iq); - - // overlap density in real space - setmem_complex_op()(density_real, 0.0, rhopw->nrxx); - for (int ig = 0; ig < rhopw->nrxx; ig++) - { - density_real[ig] = psi_nk_real[ig] * std::conj(psi_mq_real[ig]) * omega_inv; - } - - // density in reciprocal space - rhopw->real2recip(density_real, density_recip); - - // really calculate the stress - - // for alpha beta - for (int alpha = 0; alpha < 3; alpha++) - { - for (int beta = alpha; beta < 3; beta++) - { - int delta_ab = (alpha == beta) ? 1 : 0; - double sigma_ab_loc = 0.0; - #ifdef _OPENMP - #pragma omp parallel for schedule(static) reduction(+:sigma_ab_loc) - #endif - for (int ig = 0; ig < rhopw->npw; ig++) - { - const ModuleBase::Vector3 kqg = wfcpw->kvec_c[ik] - wfcpw->kvec_c[iq] + rhopw->gcar[ig]; - double kqg_alpha = kqg[alpha] * tpiba; - double kqg_beta = kqg[beta] * tpiba; - // equation 10 of 10.1103/PhysRevB.73.125120 - double density_recip2 = std::real(density_recip[ig] * std::conj(density_recip[ig])); - const int idx = ig + iq * rhopw->npw + ik * rhopw->npw * nqs; - double pot_local = pot[idx]; - double pot_stress_local = pot_stress[idx]; - sigma_ab_loc += density_recip2 * pot_local * (kqg_alpha * kqg_beta * pot_stress_local - delta_ab) ; - - } - - // 0.5 in the following line is caused by 2x in the pot - sigma(alpha, beta) -= GlobalC::exx_info.info_global.hybrid_alpha - * 0.25 * sigma_ab_loc - * wg(ik, nband) * wg(iq, mband) / nqs / p_kv->wk[ik]; - } - } - } - } - } - } - - for (int l = 0; l < 3; l++) - { - for (int m = l + 1; m < 3; m++) - { - sigma(m, l) = sigma(l, m); - } - } - - Parallel_Reduce::reduce_all(sigma.c, sigma.nr * sigma.nc); - - - delmem_complex_op()(psi_nk_real); - delmem_complex_op()(psi_mq_real); - delmem_complex_op()(density_real); - delmem_complex_op()(density_recip); - delmem_real_op()(pot); -} - -template class Stress_PW; -#if ((defined __CUDA) || (defined __ROCM)) -template class Stress_PW; -#endif diff --git a/source/source_pw/module_pwdft/stress_func_gga.cpp b/source/source_pw/module_pwdft/stress_func_gga.cpp deleted file mode 100644 index 9d9bbf5ebd..0000000000 --- a/source/source_pw/module_pwdft/stress_func_gga.cpp +++ /dev/null @@ -1,66 +0,0 @@ -#include "stress_func.h" -#include "source_hamilt/module_xc/xc_functional.h" -#include "source_base/timer.h" -#include "source_pw/module_pwdft/global.h" - -//calculate the GGA stress correction in PW and LCAO -template -void Stress_Func::stress_gga(const UnitCell& ucell, - ModuleBase::matrix& sigma, - ModulePW::PW_Basis* rho_basis, - const Charge* const chr) -{ - ModuleBase::TITLE("Stress","stress_gga"); - ModuleBase::timer::tick("Stress","stress_gga"); - - int func_type = XC_Functional::get_func_type(); - if (func_type == 0 || func_type == 1) - { - ModuleBase::timer::tick("Stress","stress_gga"); - return; - } - - FPTYPE sigma_gradcorr[3][3]; - std::vector stress_gga; - FPTYPE dum1=0.0; - FPTYPE dum2=0.0; - ModuleBase::matrix dum3; - // call gradcorr to evaluate gradient correction to stress - // the first three terms are etxc, vtxc and v, which - // is not used here, so dummy variables are used. - XC_Functional::gradcorr(dum1, dum2, dum3, chr, rho_basis, &ucell, stress_gga, 1); - - for(int l = 0;l< 3;l++) - { - for(int m = 0;m< l+1;m++) - { - int ind = l*3 + m; - sigma_gradcorr[l][m] = stress_gga [ind]; - sigma_gradcorr[m][l] = sigma_gradcorr[l][m]; - } - } - - for(int l = 0;l<3;l++) - { - for(int m = 0;m<3;m++) - { - Parallel_Reduce::reduce_pool(sigma_gradcorr[l][m]); - } - } - - for(int i=0;i<3;i++) - { - for(int j=0;j<3;j++) - { - sigma(i, j) += sigma_gradcorr[i][j] / rho_basis->nxyz; - } - } - - ModuleBase::timer::tick("Stress","stress_gga"); - return; -} - -template class Stress_Func; -#if ((defined __CUDA) || (defined __ROCM)) -template class Stress_Func; -#endif diff --git a/source/source_pw/module_pwdft/stress_func_har.cpp b/source/source_pw/module_pwdft/stress_func_har.cpp deleted file mode 100644 index b99ee7fb04..0000000000 --- a/source/source_pw/module_pwdft/stress_func_har.cpp +++ /dev/null @@ -1,160 +0,0 @@ -#include "stress_func.h" -#include "source_estate/module_pot/H_Hartree_pw.h" -#include "source_io/module_parameter/parameter.h" -#include "source_base/timer.h" -#include "source_pw/module_pwdft/global.h" - -//calculate the Hartree part in PW or LCAO base -template -void Stress_Func::stress_har(const UnitCell& ucell, - ModuleBase::matrix& sigma, - ModulePW::PW_Basis* rho_basis, - const bool is_pw, - const Charge* const chr) -{ - ModuleBase::TITLE("Stress","stress_har"); - ModuleBase::timer::tick("Stress","stress_har"); - - assert(rho_basis->nmaxgr>0); - - std::complex *aux = new std::complex[rho_basis->nmaxgr]; - - const int nspin_rho = (PARAM.inp.nspin == 2) ? 2 : 1; - - // Hartree potential VH(r) from n(r) - /* - blocking rho_basis->nrxx for data locality. - - By blocking aux with block size 1024, - we can keep the blocked aux in L1 cache when iterating PARAM.inp.nspin loop - performance will be better when number of atom is quite huge - */ - const int block_ir = 1024; -#ifdef _OPENMP -#pragma omp parallel for -#endif - for (int irb = 0; irb < rho_basis->nrxx; irb += block_ir) - { - // calculate the actual task length of this block - int ir_end = std::min(irb + block_ir, rho_basis->nrxx); - - { // is = 0 - for (int ir = irb; ir < ir_end; ++ir) - { // initialize aux - aux[ir] = std::complex( chr->rho[0][ir], 0.0 ); - } - } - for (int is = 1; is < nspin_rho; is++) - { - for (int ir = irb; ir < ir_end; ++ir) - { // accumulate aux - aux[ir] += std::complex( chr->rho[is][ir], 0.0 ); - } - } - } - //============================= - // bring rho (aux) to G space - //============================= - rho_basis->real2recip(aux, aux); - - const int ig0 = rho_basis->ig_gge0; -#ifndef _OPENMP - ModuleBase::matrix& local_sigma = sigma; -#else -#pragma omp parallel - { - ModuleBase::matrix local_sigma(3, 3); -#pragma omp for -#endif - for (int ig = 0 ; ig < rho_basis->npw ; ++ig) - { - if (ig == ig0) - { - continue; - } - const FPTYPE g2 = rho_basis->gg[ig]; - FPTYPE shart= ( conj( aux[ig] ) * aux[ig] ).real()/(ucell.tpiba2 * g2); - for(int l=0;l<3;l++) - { - for(int m=0;mgcar[ig][l] * rho_basis->gcar[ig][m] / g2; - } - } - } -#ifdef _OPENMP -#pragma omp critical(stress_har_reduce) - { - for(int l=0;l<3;l++) - { - for(int m=0;m; -#if ((defined __CUDA) || (defined __ROCM)) -template class Stress_Func; -#endif diff --git a/source/source_pw/module_pwdft/stress_func_kin.cpp b/source/source_pw/module_pwdft/stress_func_kin.cpp deleted file mode 100644 index 1336be5c09..0000000000 --- a/source/source_pw/module_pwdft/stress_func_kin.cpp +++ /dev/null @@ -1,47 +0,0 @@ -#include "stress_func.h" -#include "source_pw/module_pwdft/global.h" -#include "source_io/module_parameter/parameter.h" -#include "source_base/timer.h" -#include "source_pw/module_pwdft/fs_kin_tools.h" - -//calculate the kinetic stress in PW base -template -void Stress_Func::stress_kin(ModuleBase::matrix& sigma, - const ModuleBase::matrix& wg, - ModuleSymmetry::Symmetry* p_symm, - K_Vectors* p_kv, - ModulePW::PW_Basis_K* wfc_basis, - const UnitCell& ucell_in, - const psi::Psi , Device>* psi_in) -{ - ModuleBase::TITLE("Stress","stress_kin"); - ModuleBase::timer::tick("Stress","stress_kin"); - - this->ucell = &ucell_in; - - hamilt::FS_Kin_tools kin_tool(*this->ucell, p_kv, wfc_basis, wg); - for (int ik = 0; ik < wfc_basis->nks; ++ik) - { - int nbands_occ = wg.nc; - while (wg(ik, nbands_occ - 1) == 0.0) - { - nbands_occ--; - if (nbands_occ == 0) - { - break; - } - } - const int npm = nbands_occ; - kin_tool.cal_gk(ik); - kin_tool.cal_stress_kin(ik, npm, true, &psi_in[0](ik, 0, 0)); - } - kin_tool.symmetrize_stress(p_symm, sigma); - - ModuleBase::timer::tick("Stress","stress_kin"); - return; -} - -template class Stress_Func; -#if ((defined __CUDA) || (defined __ROCM)) -template class Stress_Func; -#endif diff --git a/source/source_pw/module_pwdft/stress_func_loc.cpp b/source/source_pw/module_pwdft/stress_func_loc.cpp deleted file mode 100644 index fe4d85e1be..0000000000 --- a/source/source_pw/module_pwdft/stress_func_loc.cpp +++ /dev/null @@ -1,306 +0,0 @@ -#include "stress_func.h" -#include "source_base/math_integral.h" -#include "source_io/module_parameter/parameter.h" -#include "source_base/tool_threading.h" -#include "source_base/timer.h" -#include "source_base/libm/libm.h" -#include "source_pw/module_pwdft/global.h" - -//calculate local pseudopotential stress in PW or VL_dVL stress in LCAO -template -void Stress_Func::stress_loc(const UnitCell& ucell, - ModuleBase::matrix& sigma, - ModulePW::PW_Basis* rho_basis, - const ModuleBase::matrix& vloc, - const Structure_Factor* p_sf, - const bool is_pw, - const Charge* const chr) -{ - ModuleBase::TITLE("Stress","stress_loc"); - ModuleBase::timer::tick("Stress","stress_loc"); - - std::vector dvloc(rho_basis->npw); - FPTYPE evloc=0.0; - FPTYPE fact=1.0; - - const int nspin_rho = (PARAM.inp.nspin == 2) ? 2 : 1; - - if (PARAM.inp.gamma_only && is_pw) - { - fact=2.0; - } - - std::vector> aux(rho_basis->nmaxgr); - - /* - blocking rho_basis->nrxx for data locality. - - By blocking aux with block size 1024, - we can keep the blocked aux in L1 cache when iterating PARAM.inp.nspin loop - performance will be better when number of atom is quite huge - */ - const int block_ir = 1024; -#ifdef _OPENMP -#pragma omp parallel for -#endif - for (int irb = 0; irb < rho_basis->nrxx; irb += block_ir) - { - // calculate the actual task length of this block - int ir_end = std::min(irb + block_ir, rho_basis->nrxx); - - for (int ir = irb; ir < ir_end; ++ir) - { - aux[ir] = std::complex(chr->rho[0][ir], 0.0 ); - } - - if(nspin_rho == 2) - { - for (int ir = irb; ir < ir_end; ++ir) - { - aux[ir] += std::complex(chr->rho[1][ir], 0.0 ); - } - } - } - rho_basis->real2recip(aux.data(),aux.data()); - -// if(INPUT.gamma_only==1) fact=2.0; -// else fact=1.0; - - if(is_pw) - { -#pragma omp parallel for collapse(2) reduction(+:evloc) - for (int it=0; itnpw; ig++) - { - if (rho_basis->ig_gge0 == ig) - { - evloc += vloc(it, rho_basis->ig2igg[ig]) - * (p_sf->strucFac(it, ig) * conj(aux[ig])).real(); - } - else - { - evloc += vloc(it, rho_basis->ig2igg[ig]) - * (p_sf->strucFac(it, ig) * conj(aux[ig]) * fact).real(); - } - } - } - } - - - for (int it = 0; it < ucell.ntype; ++it) - { - const Atom* atom = &ucell.atoms[it]; - if(atom->coulomb_potential) - { - // special case: pseudopotential is coulomb 1/r potential - this->dvloc_coulomb (ucell,atom->ncpp.zv, dvloc.data(), rho_basis); - } - else - { - // normal case: dvloc contains dV_loc(G)/dG - this->dvloc_of_g ( atom->ncpp.msh, atom->ncpp.rab.data(), atom->ncpp.r.data(), - atom->ncpp.vloc_at.data(), atom->ncpp.zv, dvloc.data(), rho_basis, ucell); - } -#ifndef _OPENMP - ModuleBase::matrix &local_sigma = sigma; -#else -#pragma omp parallel - { - ModuleBase::matrix local_sigma(3, 3); -#pragma omp for -#endif - for(int ig = 0;ig< rho_basis->npw;ig++) - { - for (int l = 0;l< 3;l++) - { - for (int m = 0; mstrucFac(it, ig)).real() * 2.0 - * dvloc[rho_basis->ig2igg[ig]] * ucell.tpiba2 - * rho_basis->gcar[ig][l] * rho_basis->gcar[ig][m] * fact; - } - } - } -#ifdef _OPENMP -#pragma omp critical(stress_loc_reduce) - { - for(int l=0;l<3;l++) - { - for(int m=0;m -void Stress_Func::dvloc_of_g -( -const int& msh, -const FPTYPE* rab, -const FPTYPE* r, -const FPTYPE* vloc_at, -const FPTYPE& zp, -FPTYPE* dvloc, -ModulePW::PW_Basis* rho_basis, -const UnitCell& ucell_in -) -{ - //---------------------------------------------------------------------- - // - // dvloc = D Vloc (g^2) / D g^2 = (1/2g) * D Vloc(g) / D g - // - - // - //FPTYPE dvloc[ngl]; - // the fourier transform dVloc/dG - // - - - int igl0; - this->device = base_device::get_device_type(this->ctx); - - std::vector gx_arr(rho_basis->ngg+1); - double* gx_arr_d = nullptr; - // counter on erf functions or gaussians - // counter on g shells vectors - // first shell with g != 0 - - std::vector aux(msh); - - // the G=0 component is not computed - if (rho_basis->gg_uniq[0] < 1.0e-8) - { - dvloc[0] = 0.0; - igl0 = 1; - } - else - { - igl0 = 0; - } - - // Pseudopotentials in numerical form (Vloc contains the local part) - // In order to perform the Fourier transform, a term erf(r)/r is - // subtracted in real space and added again in G space -#ifdef _OPENMP -#pragma omp parallel for -#endif - for (int igl = igl0; igl < rho_basis->ngg; igl++) { - gx_arr[igl] = sqrt(rho_basis->gg_uniq[igl]) * ucell_in.tpiba; - } - - gx_arr[rho_basis->ngg] = zp * ModuleBase::e2; - - // - // This is the part of the integrand function - // indipendent of |G| in real space - // - for(int i = 0;i< msh; i++) - { - aux[i] = r [i] * vloc_at [i] + zp * ModuleBase::e2 * erf(r[i]); - } - - - - double *r_d = nullptr; - double *rhoc_d = nullptr; - double *rab_d = nullptr; - double *aux_d = nullptr; - double *drhocg_d = nullptr; - if (this->device == base_device::GpuDevice) { - resmem_var_op()(r_d, msh); - resmem_var_op()(rhoc_d, msh); - resmem_var_op()(rab_d, msh); - - resmem_var_op()(aux_d, msh); - resmem_var_op()(gx_arr_d, rho_basis->ngg+1); - resmem_var_op()(drhocg_d, rho_basis->ngg); - - syncmem_var_h2d_op()(gx_arr_d, - gx_arr.data(), - rho_basis->ngg+1); - syncmem_var_h2d_op()(r_d, r, msh); - syncmem_var_h2d_op()(rab_d, rab, msh); - syncmem_var_h2d_op()(rhoc_d, aux.data(), msh); - } - - - - if(this->device == base_device::GpuDevice) { - hamilt::cal_stress_drhoc_aux_op()( - r_d,rhoc_d,gx_arr_d+igl0,rab_d,drhocg_d+igl0,msh,igl0,rho_basis->ngg-igl0,ucell_in.omega,3); - syncmem_var_d2h_op()(dvloc+igl0, drhocg_d+igl0, rho_basis->ngg-igl0); - - } else { - hamilt::cal_stress_drhoc_aux_op()( - r,aux.data(),gx_arr.data()+igl0,rab,dvloc+igl0,msh,igl0,rho_basis->ngg-igl0,ucell_in.omega,3); - } - - return; -} - -template -void Stress_Func::dvloc_coulomb(const UnitCell& ucell, - const FPTYPE& zp, - FPTYPE* dvloc, - ModulePW::PW_Basis* rho_basis) -{ - int igl0; - // start from |G|=0 or not. - if (rho_basis->gg_uniq[0] < 1.0e-8) - { - dvloc[0] = 0.0; - igl0 = 1; - } - else - { - igl0 = 0; - } -#ifdef _OPENMP -#pragma omp parallel for -#endif - for (int i = igl0; i < rho_basis->ngg; i++) - { - dvloc[i] = ModuleBase::FOUR_PI * zp * ModuleBase::e2 / ucell.omega - / pow((ucell.tpiba2 * rho_basis->gg_uniq[i]), 2); - } - - return; -} - -template class Stress_Func; -#if ((defined __CUDA) || (defined __ROCM)) -template class Stress_Func; -#endif diff --git a/source/source_pw/module_pwdft/stress_func_mgga.cpp b/source/source_pw/module_pwdft/stress_func_mgga.cpp deleted file mode 100644 index b2d9ffe841..0000000000 --- a/source/source_pw/module_pwdft/stress_func_mgga.cpp +++ /dev/null @@ -1,141 +0,0 @@ -#include "source_base/timer.h" -#include "source_hamilt/module_xc/xc_functional.h" -#include "source_io/module_parameter/parameter.h" -#include "source_pw/module_pwdft/global.h" -#include "stress_func.h" - -#include -#include - -// calculate the Pulay term of mGGA stress correction in PW -template -void Stress_Func::stress_mgga(const UnitCell& ucell, - ModuleBase::matrix& sigma, - const ModuleBase::matrix& wg, - const ModuleBase::matrix& v_ofk, - const Charge* const chr, - K_Vectors* p_kv, - ModulePW::PW_Basis_K* wfc_basis, - const psi::Psi , Device>* psi_in) -{ - if (PARAM.inp.nspin == 4) - { - ModuleBase::WARNING_QUIT("stress_mgga", "noncollinear stress + mGGA not implemented"); - } - - ModuleBase::timer::tick("Stress", "stress_mgga"); - - int current_spin = 0; - const int nrxx = wfc_basis->nrxx; - - std::complex* psi; - int ipol2xy[3][3] = {{0, 1, 3}, {1, 2, 4}, {3, 4, 5}}; - FPTYPE sigma_mgga[3][3]; - - using ct_Device = typename ct::PsiToContainer::type; - - auto gradwfc = ct::Tensor( - ct::DataTypeToEnum>::value, - ct::DeviceTypeToEnum::value, - {nrxx * 3}); - - auto crosstaus = ct::Tensor( - ct::DataTypeToEnum::value, - ct::DeviceTypeToEnum::value, - {PARAM.inp.nspin, nrxx * 6}); - crosstaus.zero(); // Must be zeroed out - - auto cal_stress_mgga_solver = hamilt::cal_stress_mgga_op, Device>(); - for (int ik = 0; ik < p_kv->get_nks(); ik++) - { - if (PARAM.inp.nspin == 2) - { - current_spin = p_kv->isk[ik]; - } - const int npw = p_kv->ngk[ik]; - - for (int ibnd = 0; ibnd < PARAM.inp.nbands; ibnd++) - { - const FPTYPE w1 = wg(ik, ibnd) / ucell.omega; - const std::complex* psi = &psi_in[0](ik, ibnd, 0); - XC_Functional::grad_wfc, Device>(ik, - ucell.tpiba, - wfc_basis, - psi, - gradwfc.data>()); - - cal_stress_mgga_solver( - current_spin, - nrxx, - w1, - gradwfc.data>(), - crosstaus.data()); - } // band loop - // delete[] psi; - } // k loop - auto crosstaus_host = crosstaus.to_device(); - auto crosstaus_pack = crosstaus_host.accessor(); -#ifdef __MPI - for (int is = 0; is < PARAM.inp.nspin; ++is) - { - for (int ipol = 0; ipol < 6; ++ipol) - { - chr->reduce_diff_pools(&crosstaus_pack[is][ipol * nrxx]); - } - } -#endif - - for(int ix = 0; ix < 3; ix++) - { - for(int iy = 0; iy < 3; iy++) - { - sigma_mgga[ix][iy] = 0.0; - } - } - - for (int is = 0; is < PARAM.inp.nspin; is++) - { - for (int ix = 0; ix < 3; ix++) - { - for (int iy = 0; iy < 3; iy++) - { - FPTYPE delta = 0.0; - if (ix == iy) - { - delta = 1.0; - } - for (int ir = 0; ir < nrxx; ir++) - { - FPTYPE x = v_ofk(is, ir) * - (chr->kin_r[is][ir] * delta - + crosstaus_pack[is][ipol2xy[ix][iy] * nrxx + ir]); - sigma_mgga[ix][iy] += x; - } - } - } - } - -#ifdef __MPI - for (int l = 0; l < 3; l++) - { - for (int m = 0; m < 3; m++) - { - Parallel_Reduce::reduce_pool(sigma_mgga[l][m]); - } - } -#endif - for (int i = 0; i < 3; i++) - { - for (int j = 0; j < 3; j++) - { - sigma(i, j) += sigma_mgga[i][j] / wfc_basis->nxyz; - } - } - ModuleBase::timer::tick("Stress", "stress_mgga"); - return; -} - -template class Stress_Func; -#if ((defined __CUDA) || (defined __ROCM)) -template class Stress_Func; -#endif diff --git a/source/source_pw/module_pwdft/stress_func_nl.cpp b/source/source_pw/module_pwdft/stress_func_nl.cpp deleted file mode 100644 index b5bc653074..0000000000 --- a/source/source_pw/module_pwdft/stress_func_nl.cpp +++ /dev/null @@ -1,382 +0,0 @@ -#include "source_base/math_polyint.h" -#include "source_io/module_parameter/parameter.h" -#include "source_base/math_ylmreal.h" -#include "source_base/memory.h" -#include "source_base/module_device/device.h" -#include "source_base/timer.h" -#include "source_pw/module_pwdft/fs_nonlocal_tools.h" -#include "source_pw/module_pwdft/global.h" -#include "source_pw/module_pwdft/nonlocal_maths.hpp" -#include "stress_func.h" -// calculate the nonlocal pseudopotential stress in PW -template -void Stress_Func::stress_nl(ModuleBase::matrix& sigma, - const ModuleBase::matrix& wg, - const ModuleBase::matrix& ekb, - Structure_Factor* p_sf, - K_Vectors* p_kv, - ModuleSymmetry::Symmetry* p_symm, - ModulePW::PW_Basis_K* wfc_basis, - const psi::Psi , Device>* psi_in, - const pseudopot_cell_vnl& nlpp_in, - const UnitCell& ucell_in) -{ - ModuleBase::TITLE("Stress", "stress_nl"); - // skip nkb==0 - if (nlpp_in.nkb == 0 || psi_in == nullptr || wfc_basis == nullptr) - { - return; - } - ModuleBase::timer::tick("Stress", "stress_nl"); - - FPTYPE* stress_device = nullptr; - resmem_var_op()(stress_device, 9); - setmem_var_op()(stress_device, 0, 9); - std::vector sigmanlc(9, 0.0); - - hamilt::FS_Nonlocal_tools nl_tools(&nlpp_in, &ucell_in, p_kv, wfc_basis, p_sf, wg, &ekb); - - const int nks = p_kv->get_nks(); - const int max_nbands = wg.nc; - for (int ik = 0; ik < nks; ik++) // loop k points - { - // skip zero weights to speed up - int nbands_occ = wg.nc; - while (wg(ik, nbands_occ - 1) == 0.0) - { - nbands_occ--; - if (nbands_occ == 0) - { - break; - } - } - const int npm = nbands_occ; - - nl_tools.cal_vkb(ik, max_nbands); - // calculate becp = for all beta functions - nl_tools.cal_becp(ik, npm, &psi_in[0](ik,0,0)); - nl_tools.reduce_pool_becp(max_nbands); - // calculate dbecp = for all beta functions - // calculate stress = \sum * * D_{ij} - for (int ipol = 0; ipol < 3; ipol++) - { - for (int jpol = 0; jpol <= ipol; jpol++) - { - nl_tools.cal_vkb_deri_s(ik, max_nbands, ipol, jpol); - nl_tools.cal_dbecp_s(ik, npm, &psi_in[0](ik,0,0)); - nl_tools.cal_stress(ik, npm, true, ipol, jpol, stress_device); - } - } - } - // transfer stress from device to host - syncmem_var_d2h_op()(sigmanlc.data(), stress_device, 9); - delmem_var_op()(stress_device); - // sum up forcenl from all processors - for (int l = 0; l < 3; l++) - { - for (int m = 0; m < 3; m++) - { - if (m > l) - { - sigmanlc[l * 3 + m] = sigmanlc[m * 3 + l]; - } - } - } - // sum up forcenl from all processors - Parallel_Reduce::reduce_all(sigmanlc.data(), 9); - - for (int ipol = 0; ipol < 3; ipol++) - { - for (int jpol = 0; jpol < 3; jpol++) - { - sigma(ipol, jpol) = sigmanlc[ipol * 3 + jpol] / ucell_in.omega; - } - } - // do symmetry - if (ModuleSymmetry::Symmetry::symm_flag == 1) - { - p_symm->symmetrize_mat3(sigma, ucell_in.lat); - } // end symmetry - - ModuleBase::timer::tick("Stress", "stress_nl"); -} - -template -void Stress_Func::get_dvnl1(ModuleBase::ComplexMatrix& vkb, - const int ik, - const int ipol, - Structure_Factor* p_sf, - ModulePW::PW_Basis_K* wfc_basis) -{ - if (PARAM.inp.test_pp) - { - ModuleBase::TITLE("Stress", "get_dvnl1"); - } - - const int npw = wfc_basis->npwk[ik]; - const int lmaxkb = nlpp->lmaxkb; - if (lmaxkb < 0) - { - return; - } - - const int nhm = nlpp->nhm; - - assert(npw>0); - - ModuleBase::matrix vkb1(nhm, npw); - vkb1.zero_out(); - FPTYPE* vq = new FPTYPE[npw]; - const int x1 = (lmaxkb + 1) * (lmaxkb + 1); - - ModuleBase::matrix dylm(x1, npw); - ModuleBase::Vector3* gk = new ModuleBase::Vector3[npw]; -#ifdef _OPENMP -#pragma omp parallel for -#endif - for (int ig = 0; ig < npw; ig++) - { - gk[ig] = wfc_basis->getgpluskcar(ik, ig); - } - - hamilt::Nonlocal_maths::dylmr2(x1, npw, reinterpret_cast(gk), dylm.c, ipol); - - const int imag_pow_period = 4; - // result table of pow(0-1i, int) - static const std::complex pref_tab[imag_pow_period] = {{1, 0}, {0, -1}, {-1, 0}, {0, 1}}; - int jkb = 0; - for (int it = 0; it < this->ucell->ntype; it++) - { - if (PARAM.inp.test_pp > 1) - { - ModuleBase::GlobalFunc::OUT("it", it); - } - // calculate beta in G-space using an interpolation table - const int nbeta = this->ucell->atoms[it].ncpp.nbeta; - const int nh = this->ucell->atoms[it].ncpp.nh; - - if (PARAM.inp.test_pp > 1) - { - ModuleBase::GlobalFunc::OUT("nbeta", nbeta); - } - - for (int nb = 0; nb < nbeta; nb++) - { - if (PARAM.inp.test_pp > 1) - { - ModuleBase::GlobalFunc::OUT("ib", nb); - } -#ifdef _OPENMP -#pragma omp parallel for -#endif - for (int ig = 0; ig < npw; ig++) - { - const FPTYPE gnorm = gk[ig].norm() * this->ucell->tpiba; - - vq[ig] = ModuleBase::PolyInt::Polynomial_Interpolation(nlpp->tab, - it, - nb, - PARAM.globalv.nqx, - PARAM.globalv.dq, - gnorm); - - } - - // add spherical harmonic part - for (int ih = 0; ih < nh; ih++) - { - if (nb == nlpp->indv(it, ih)) - { - const int lm = static_cast(nlpp->nhtolm(it, ih)); -#ifdef _OPENMP -#pragma omp parallel for -#endif - for (int ig = 0; ig < npw; ig++) - { - vkb1(ih, ig) = dylm(lm, ig) * vq[ig]; - } - } - - } // end ih - - } // end nbeta - - // vkb1 contains all betas including angular part for type nt - // now add the structure factor and factor (-i)^l - for (int ia = 0; ia < this->ucell->atoms[it].na; ia++) - { - std::complex* sk = p_sf->get_sk(ik, it, ia, wfc_basis); -#ifdef _OPENMP -#pragma omp parallel for collapse(2) -#endif - for (int ih = 0; ih < nh; ih++) - { - for (int ig = 0; ig < npw; ig++) - { - std::complex pref = pref_tab[int(nlpp->nhtol(it, ih)) % imag_pow_period]; - vkb(jkb + ih, ig) = vkb1(ih, ig) * sk[ig] * pref; - } - - } // end ih - jkb += nh; - delete[] sk; - } // end ia - } // enddo - delete[] gk; - delete[] vq; - return; -} // end get_dvnl1 - - -template -void Stress_Func::get_dvnl2(ModuleBase::ComplexMatrix& vkb, - const int ik, - Structure_Factor* p_sf, - ModulePW::PW_Basis_K* wfc_basis) -{ - if (PARAM.inp.test_pp) - { - ModuleBase::TITLE("Stress", "get_dvnl2"); - } - // ModuleBase::timer::tick("Stress","get_dvnl2"); - const int npw = wfc_basis->npwk[ik]; - const int lmaxkb = nlpp->lmaxkb; - if (lmaxkb < 0) - { - return; - } - - const int nhm = nlpp->nhm; - - assert(npw>0); - - ModuleBase::matrix vkb1(nhm, npw); - FPTYPE* vq = new FPTYPE[npw]; - const int x1 = (lmaxkb + 1) * (lmaxkb + 1); - - ModuleBase::matrix ylm(x1, npw); - ModuleBase::Vector3* gk = new ModuleBase::Vector3[npw]; -#ifdef _OPENMP -#pragma omp parallel for -#endif - for (int ig = 0; ig < npw; ig++) - { - gk[ig] = wfc_basis->getgpluskcar(ik, ig); - } - ModuleBase::YlmReal::Ylm_Real(x1, npw, gk, ylm); - - const int imag_pow_period = 4; - // result table of pow(0-1i, int) - static const std::complex pref_tab[imag_pow_period] = {{1, 0}, {0, -1}, {-1, 0}, {0, 1}}; - int jkb = 0; - for (int it = 0; it < this->ucell->ntype; it++) - { - if (PARAM.inp.test_pp > 1) - { - ModuleBase::GlobalFunc::OUT("it", it); - } - // calculate beta in G-space using an interpolation table - const int nbeta = this->ucell->atoms[it].ncpp.nbeta; - const int nh = this->ucell->atoms[it].ncpp.nh; - - if (PARAM.inp.test_pp > 1) - { - ModuleBase::GlobalFunc::OUT("nbeta", nbeta); - } - - for (int nb = 0; nb < nbeta; nb++) - { - if (PARAM.inp.test_pp > 1) - { - ModuleBase::GlobalFunc::OUT("ib", nb); - } -#ifdef _OPENMP -#pragma omp parallel for -#endif - for (int ig = 0; ig < npw; ig++) - { - const FPTYPE gnorm = gk[ig].norm() * this->ucell->tpiba; - vq[ig] = hamilt::Nonlocal_maths::Polynomial_Interpolation_nl(nlpp->tab, - it, - nb, - PARAM.globalv.dq, - gnorm); - - } // enddo - - // add spherical harmonic part - for (int ih = 0; ih < nh; ih++) - { - if (nb == nlpp->indv(it, ih)) - { - const int lm = static_cast(nlpp->nhtolm(it, ih)); -#ifdef _OPENMP -#pragma omp parallel for -#endif - for (int ig = 0; ig < npw; ig++) - { - vkb1(ih, ig) = ylm(lm, ig) * vq[ig]; - } - } - } // end ih - } // end nbeta - - // vkb1 contains all betas including angular part for type nt - // now add the structure factor and factor (-i)^l - for (int ia = 0; ia < this->ucell->atoms[it].na; ia++) - { - std::complex* sk = p_sf->get_sk(ik, it, ia, wfc_basis); -#ifdef _OPENMP -#pragma omp parallel for collapse(2) -#endif - for (int ih = 0; ih < nh; ih++) - { - for (int ig = 0; ig < npw; ig++) - { - std::complex pref = pref_tab[int(nlpp->nhtol(it, ih)) % imag_pow_period]; //? - vkb(jkb + ih, ig) = vkb1(ih, ig) * sk[ig] * pref; - } - - } // end ih - jkb += nh; - delete[] sk; - } // end ia - } // enddo - - delete[] gk; - delete[] vq; - - return; -} - -template -FPTYPE Stress_Func::Polynomial_Interpolation_nl(const ModuleBase::realArray& table, - const int& dim1, - const int& dim2, - const int& dim3, - const FPTYPE& table_interval, - const FPTYPE& x // input value -) -{ - - assert(table_interval > 0.0); - const FPTYPE position = x / table_interval; - const int iq = static_cast(position); - - const FPTYPE x0 = position - static_cast(iq); - const FPTYPE x1 = 1.0 - x0; - const FPTYPE x2 = 2.0 - x0; - const FPTYPE x3 = 3.0 - x0; - const FPTYPE y = (table(dim1, dim2, dim3, iq) * (-x2 * x3 - x1 * x3 - x1 * x2) / 6.0 - + table(dim1, dim2, dim3, iq + 1) * (+x2 * x3 - x0 * x3 - x0 * x2) / 2.0 - - table(dim1, dim2, dim3, iq + 2) * (+x1 * x3 - x0 * x3 - x0 * x1) / 2.0 - + table(dim1, dim2, dim3, iq + 3) * (+x1 * x2 - x0 * x2 - x0 * x1) / 6.0) - / table_interval; - - return y; -} - -template class Stress_Func; -#if ((defined __CUDA) || (defined __ROCM)) -template class Stress_Func; -#endif diff --git a/source/source_pw/module_pwdft/stress_func_onsite.cpp b/source/source_pw/module_pwdft/stress_func_onsite.cpp deleted file mode 100644 index 1be9831556..0000000000 --- a/source/source_pw/module_pwdft/stress_func_onsite.cpp +++ /dev/null @@ -1,124 +0,0 @@ -#include "source_base/module_device/device.h" -#include "source_base/timer.h" -#include "source_pw/module_pwdft/onsite_projector.h" -#include "source_io/module_parameter/parameter.h" -#include "source_lcao/module_dftu/dftu.h" -#include "source_lcao/module_deltaspin/spin_constrain.h" -#include "stress_func.h" -// calculate the nonlocal pseudopotential stress in PW -template -void Stress_Func::stress_onsite(ModuleBase::matrix& sigma, - const ModuleBase::matrix& wg, - const ModulePW::PW_Basis_K* wfc_basis, - const UnitCell& ucell_in, - const psi::Psi , Device>* psi_in, - ModuleSymmetry::Symmetry* p_symm) -{ - ModuleBase::TITLE("Stress", "stress_onsite"); - if(psi_in == nullptr || wfc_basis == nullptr) - { - return; - } - ModuleBase::timer::tick("Stress", "stress_onsite"); - - FPTYPE* stress_device = nullptr; - resmem_var_op()(stress_device, 9); - setmem_var_op()(stress_device, 0, 9); - std::vector sigma_onsite(9, 0.0); - - auto* onsite_p = projectors::OnsiteProjector::get_instance(); - - const int nks = wfc_basis->nks; - for (int ik = 0; ik < nks; ik++) - { - // skip zero weights to speed up - int nbands_occ = wg.nc; - while (wg(ik, nbands_occ - 1) == 0.0) - { - nbands_occ--; - if (nbands_occ == 0) - { - break; - } - } - const int npm = nbands_occ; - - // calculate becp = for all beta functions - onsite_p->get_fs_tools()->cal_becp(ik, npm); - - // calculate dbecp = for all beta functions - // calculate stress = \sum * * D_{ij} - for (int ipol = 0; ipol < 3; ipol++) - { - for (int jpol = 0; jpol <= ipol; jpol++) - { - FPTYPE* stress_device_tmp = stress_device + (ipol * 3 + jpol); - onsite_p->get_fs_tools()->cal_dbecp_s(ik, npm, ipol, jpol); - if(PARAM.inp.dft_plus_u) - { - auto* dftu = ModuleDFTU::DFTU::get_instance(); - onsite_p->get_fs_tools()->cal_stress_dftu(ik, - npm, - stress_device_tmp, - dftu->orbital_corr.data(), - dftu->get_eff_pot_pw(0), - dftu->get_size_eff_pot_pw(), - wg.c); - } - if(PARAM.inp.sc_mag_switch) - { - spinconstrain::SpinConstrain>& sc = - spinconstrain::SpinConstrain>::getScInstance(); - const std::vector>& lambda = sc.get_sc_lambda(); - onsite_p->get_fs_tools()->cal_stress_dspin(ik, npm, stress_device_tmp, lambda.data(), wg.c); - } - } - } - } - - // transfer stress from device to host - syncmem_var_d2h_op()(sigma_onsite.data(), stress_device, 9); - delmem_var_op()(stress_device); - - // sum up forcenl from all processors - for (int l = 0; l < 3; l++) - { - for (int m = 0; m < 3; m++) - { - if (m > l) - { - sigma_onsite[l * 3 + m] = sigma_onsite[m * 3 + l]; - } - Parallel_Reduce::reduce_all(sigma_onsite[l * 3 + m]); // qianrui fix a bug for kpar > 1 - } - } - - // rescale the stress with 1/omega - for (int ipol = 0; ipol < 3; ipol++) - { - for (int jpol = 0; jpol < 3; jpol++) - { - sigma_onsite[ipol * 3 + jpol] *= 1.0 / ucell_in.omega; - } - } - - for (int ipol = 0; ipol < 3; ipol++) - { - for (int jpol = 0; jpol < 3; jpol++) - { - sigma(ipol, jpol) = sigma_onsite[ipol * 3 + jpol]; - } - } - - if (ModuleSymmetry::Symmetry::symm_flag == 1) - { - p_symm->symmetrize_mat3(sigma, ucell_in.lat); - } - - ModuleBase::timer::tick("Stress", "stress_onsite"); -} - -template class Stress_Func; -#if ((defined __CUDA) || (defined __ROCM)) -template class Stress_Func; -#endif diff --git a/source/source_pw/module_pwdft/stress_func_us.cpp b/source/source_pw/module_pwdft/stress_func_us.cpp deleted file mode 100644 index adb8745901..0000000000 --- a/source/source_pw/module_pwdft/stress_func_us.cpp +++ /dev/null @@ -1,298 +0,0 @@ -#include "source_base/libm/libm.h" -#include "source_io/module_parameter/parameter.h" -#include "source_base/math_polyint.h" -#include "source_base/math_ylmreal.h" -#include "source_base/timer.h" -#include "source_estate/elecstate_pw.h" -#include "source_pw/module_pwdft/nonlocal_maths.hpp" -#include "stress_pw.h" - -// computes the part of the crystal stress which is due -// to the dependence of the Q function on the atomic position in PW base -template -void Stress_PW::stress_us(ModuleBase::matrix& sigma, - ModulePW::PW_Basis* rho_basis, - const pseudopot_cell_vnl& nlpp, - const UnitCell& ucell) -{ - ModuleBase::TITLE("Stress", "stress_us"); - ModuleBase::timer::tick("Stress", "stress_us"); - - const int npw = rho_basis->npw; - const int nh_tot = nlpp.nhm * (nlpp.nhm + 1) / 2; - const std::complex fac = ModuleBase::NEG_IMAG_UNIT * ucell.tpiba; - const std::complex ci_tpi = ModuleBase::IMAG_UNIT * ModuleBase::TWO_PI; - double* becsum = static_cast, Device>*>(this->pelec)->becsum; - - ModuleBase::matrix stressus(3, 3); - - ModuleBase::matrix veff = this->pelec->pot->get_effective_v(); - ModuleBase::ComplexMatrix vg(PARAM.inp.nspin, npw); - // fourier transform of the total effective potential - for (int is = 0; is < PARAM.inp.nspin; is++) - { - rho_basis->real2recip(&veff.c[is * veff.nc], &vg(is, 0)); - } - - ModuleBase::matrix ylmk0(nlpp.lmaxq * nlpp.lmaxq, npw); - ModuleBase::YlmReal::Ylm_Real(nlpp.lmaxq * nlpp.lmaxq, npw, rho_basis->gcar, ylmk0); - - // double* qnorm = new double[npw]; - std::vector qnorm_vec(npw); - double* qnorm = qnorm_vec.data(); - for (int ig = 0; ig < npw; ig++) - { - qnorm[ig] = rho_basis->gcar[ig].norm() * ucell.tpiba; - } - - // here we compute the integral Q*V for each atom, - // I = sum_G G_a exp(-iR.G) Q_nm v^* - // (no contribution from G=0) - ModuleBase::matrix dylmk0(nlpp.lmaxq * nlpp.lmaxq, npw); - for (int ipol = 0; ipol < 3; ipol++) - { - double* gcar_ptr = reinterpret_cast(rho_basis->gcar); - hamilt::Nonlocal_maths::dylmr2(nlpp.lmaxq * nlpp.lmaxq, - npw, - gcar_ptr, - dylmk0.c, - ipol); - for (int it = 0; it < ucell.ntype; it++) - { - Atom* atom = &ucell.atoms[it]; - if (atom->ncpp.tvanp) - { - // nij = max number of (ih,jh) pairs per atom type nt - // qgm contains derivatives of the Fourier transform of the Q function - const int nij = atom->ncpp.nh * (atom->ncpp.nh + 1) / 2; - ModuleBase::ComplexMatrix qgm(nij, npw); - ModuleBase::matrix tbecsum(PARAM.inp.nspin, nij); - - // Compute and store derivatives of Q(G) for this atomic species - // (without structure factor) - int ijh = 0; - for (int ih = 0; ih < atom->ncpp.nh; ih++) - { - for (int jh = ih; jh < atom->ncpp.nh; jh++) - { - this->dqvan2(nlpp, - ih, - jh, - it, - ipol, - npw, - rho_basis->gcar, - qnorm, - ucell.tpiba, - ylmk0, - dylmk0, - &qgm(ijh, 0)); - ijh++; - } - } - double* qgm_data = reinterpret_cast(qgm.c); - - for (int ia = 0; ia < atom->na; ia++) - { - const int iat = ucell.itia2iat(it, ia); - for (int is = 0; is < PARAM.inp.nspin; is++) - { - for (int ij = 0; ij < nij; ij++) - { - tbecsum(is, ij) = becsum[is * ucell.nat * nh_tot + iat * nh_tot + ij]; - } - } - - ModuleBase::ComplexMatrix aux2(PARAM.inp.nspin, npw); - double* aux2_data = reinterpret_cast(aux2.c); - - const char transa = 'N'; - const char transb = 'N'; - const int dim = 2 * npw; - const double one = 1; - const double zero = 0; - dgemm_(&transa, - &transb, - &dim, - &PARAM.inp.nspin, - &nij, - &one, - qgm_data, - &dim, - tbecsum.c, - &nij, - &zero, - aux2_data, - &dim); - - for (int is = 0; is < PARAM.inp.nspin; is++) - { - for (int ig = 0; ig < npw; ig++) - { - aux2(is, ig) *= conj(vg(is, ig)); - } - } - - ModuleBase::ComplexMatrix aux1(3, npw); - double* aux1_data = reinterpret_cast(aux1.c); - for (int ig = 0; ig < npw; ig++) - { - double arg = rho_basis->gcar[ig] * atom->tau[ia]; - std::complex cfac = ucell.tpiba * ModuleBase::libm::exp(ci_tpi * arg); - for (int ipol = 0; ipol < 3; ipol++) - { - aux1(ipol, ig) = cfac * rho_basis->gcar[ig][ipol]; - } - } - - ModuleBase::matrix fac(PARAM.inp.nspin, 3); - const char transc = 'T'; - const int three = 3; - dgemm_(&transc, - &transb, - &three, - &PARAM.inp.nspin, - &dim, - &one, - aux1_data, - &dim, - aux2_data, - &dim, - &zero, - fac.c, - &three); - - for (int is = 0; is < PARAM.inp.nspin; is++) - { - for (int jpol = 0; jpol < 3; jpol++) - { - stressus(jpol, ipol) += fac(is, jpol); - } - } - } - } - } - } - - Parallel_Reduce::reduce_all(stressus.c, stressus.nr * stressus.nc); - for (int l = 0; l < 3; l++) - { - for (int m = l; m < 3; m++) - { - stressus(m, l) = stressus(l, m); - } - } - sigma += stressus; - - ModuleBase::timer::tick("Stress", "stress_us"); - return; -} - -template -void Stress_Func::dqvan2(const pseudopot_cell_vnl& nlpp, - const int ih, - const int jh, - const int itype, - const int ipol, - const int ng, - const ModuleBase::Vector3* g, - const FPTYPE* qnorm, - const FPTYPE& tpiba, - const ModuleBase::matrix& ylmk0, - const ModuleBase::matrix& dylmk0, - std::complex* dqg) -{ - if (PARAM.inp.test_pp) - { - ModuleBase::TITLE("Stress", "dqvan2"); - } - - // computes the indices which correspond to ih,jh - const int nb = nlpp.indv(itype, ih); - const int mb = nlpp.indv(itype, jh); - assert(nb < nlpp.nbetam); - assert(mb < nlpp.nbetam); - int ijv = 0; - if (nb >= mb) - { - ijv = nb * (nb + 1) / 2 + mb; - } - else - { - ijv = mb * (mb + 1) / 2 + nb; - } - const int ivl = nlpp.nhtolm(itype, ih); - const int jvl = nlpp.nhtolm(itype, jh); - - for (int ig = 0; ig < ng; ig++) - { - dqg[ig] = {0, 0}; - } - - // make the sum over the non zero LM - int l = -1; - std::complex pref(0.0, 0.0); - for (int lm = 0; lm < nlpp.lpx(ivl, jvl); lm++) - { - int lp = nlpp.lpl(ivl, jvl, lm); - assert(lp >= 0); - assert(lp < 49); - if (lp == 0) - { - l = 0; - } - else if (lp < 4) - { - l = 1; - } - else if (lp < 9) - { - l = 2; - } - else if (lp < 16) - { - l = 3; - } - else if (lp < 25) - { - l = 4; - } - else if (lp < 36) - { - l = 5; - } - else - { - l = 6; - } - pref = pow(ModuleBase::NEG_IMAG_UNIT, l) * nlpp.ap(lp, ivl, jvl); - - double qm1 = -1.0; // any number smaller than qnorm - double work = 0.0, work1 = 0.0; - for (int ig = 0; ig < ng; ig++) - { - if (std::abs(qnorm[ig] - qm1) > 1e-6) - { - work = ModuleBase::PolyInt::Polynomial_Interpolation(nlpp.qrad, - itype, - l, - ijv, - PARAM.globalv.nqxq, - PARAM.globalv.dq, - qnorm[ig]); - work1 = this->Polynomial_Interpolation_nl(nlpp.qrad, itype, l, ijv, PARAM.globalv.dq, qnorm[ig]); - qm1 = qnorm[ig]; - } - dqg[ig] += pref * work * dylmk0(lp, ig) / tpiba; - if (qnorm[ig] > 1e-9) - { - dqg[ig] += pref * work1 * ylmk0(lp, ig) * tpiba * g[ig][ipol] / qnorm[ig]; - } - } - } -} - -template class Stress_PW; -#if ((defined __CUDA) || (defined __ROCM)) -template class Stress_PW; -#endif diff --git a/source/source_pw/module_pwdft/stress_gga.cpp b/source/source_pw/module_pwdft/stress_gga.cpp new file mode 100644 index 0000000000..f5eb5eaa1c --- /dev/null +++ b/source/source_pw/module_pwdft/stress_gga.cpp @@ -0,0 +1,65 @@ +#include "stress_func.h" +#include "source_hamilt/module_xc/xc_functional.h" +#include "source_base/timer.h" + +//calculate the GGA stress correction in PW and LCAO +template +void Stress_Func::stress_gga(const UnitCell& ucell, + ModuleBase::matrix& sigma, + ModulePW::PW_Basis* rho_basis, + const Charge* const chr) +{ + ModuleBase::TITLE("Stress","stress_gga"); + ModuleBase::timer::tick("Stress","stress_gga"); + + int func_type = XC_Functional::get_func_type(); + if (func_type == 0 || func_type == 1) + { + ModuleBase::timer::tick("Stress","stress_gga"); + return; + } + + FPTYPE sigma_gradcorr[3][3]; + std::vector stress_gga; + FPTYPE dum1=0.0; + FPTYPE dum2=0.0; + ModuleBase::matrix dum3; + // call gradcorr to evaluate gradient correction to stress + // the first three terms are etxc, vtxc and v, which + // is not used here, so dummy variables are used. + XC_Functional::gradcorr(dum1, dum2, dum3, chr, rho_basis, &ucell, stress_gga, 1); + + for(int l = 0;l< 3;l++) + { + for(int m = 0;m< l+1;m++) + { + int ind = l*3 + m; + sigma_gradcorr[l][m] = stress_gga [ind]; + sigma_gradcorr[m][l] = sigma_gradcorr[l][m]; + } + } + + for(int l = 0;l<3;l++) + { + for(int m = 0;m<3;m++) + { + Parallel_Reduce::reduce_pool(sigma_gradcorr[l][m]); + } + } + + for(int i=0;i<3;i++) + { + for(int j=0;j<3;j++) + { + sigma(i, j) += sigma_gradcorr[i][j] / rho_basis->nxyz; + } + } + + ModuleBase::timer::tick("Stress","stress_gga"); + return; +} + +template class Stress_Func; +#if ((defined __CUDA) || (defined __ROCM)) +template class Stress_Func; +#endif diff --git a/source/source_pw/module_pwdft/stress_har.cpp b/source/source_pw/module_pwdft/stress_har.cpp new file mode 100644 index 0000000000..90d80bc4dc --- /dev/null +++ b/source/source_pw/module_pwdft/stress_har.cpp @@ -0,0 +1,159 @@ +#include "stress_func.h" +#include "source_estate/module_pot/H_Hartree_pw.h" +#include "source_io/module_parameter/parameter.h" +#include "source_base/timer.h" + +//calculate the Hartree part in PW or LCAO base +template +void Stress_Func::stress_har(const UnitCell& ucell, + ModuleBase::matrix& sigma, + ModulePW::PW_Basis* rho_basis, + const bool is_pw, + const Charge* const chr) +{ + ModuleBase::TITLE("Stress","stress_har"); + ModuleBase::timer::tick("Stress","stress_har"); + + assert(rho_basis->nmaxgr>0); + + std::complex *aux = new std::complex[rho_basis->nmaxgr]; + + const int nspin_rho = (PARAM.inp.nspin == 2) ? 2 : 1; + + // Hartree potential VH(r) from n(r) + /* + blocking rho_basis->nrxx for data locality. + + By blocking aux with block size 1024, + we can keep the blocked aux in L1 cache when iterating PARAM.inp.nspin loop + performance will be better when number of atom is quite huge + */ + const int block_ir = 1024; +#ifdef _OPENMP +#pragma omp parallel for +#endif + for (int irb = 0; irb < rho_basis->nrxx; irb += block_ir) + { + // calculate the actual task length of this block + int ir_end = std::min(irb + block_ir, rho_basis->nrxx); + + { // is = 0 + for (int ir = irb; ir < ir_end; ++ir) + { // initialize aux + aux[ir] = std::complex( chr->rho[0][ir], 0.0 ); + } + } + for (int is = 1; is < nspin_rho; is++) + { + for (int ir = irb; ir < ir_end; ++ir) + { // accumulate aux + aux[ir] += std::complex( chr->rho[is][ir], 0.0 ); + } + } + } + //============================= + // bring rho (aux) to G space + //============================= + rho_basis->real2recip(aux, aux); + + const int ig0 = rho_basis->ig_gge0; +#ifndef _OPENMP + ModuleBase::matrix& local_sigma = sigma; +#else +#pragma omp parallel + { + ModuleBase::matrix local_sigma(3, 3); +#pragma omp for +#endif + for (int ig = 0 ; ig < rho_basis->npw ; ++ig) + { + if (ig == ig0) + { + continue; + } + const FPTYPE g2 = rho_basis->gg[ig]; + FPTYPE shart= ( conj( aux[ig] ) * aux[ig] ).real()/(ucell.tpiba2 * g2); + for(int l=0;l<3;l++) + { + for(int m=0;mgcar[ig][l] * rho_basis->gcar[ig][m] / g2; + } + } + } +#ifdef _OPENMP +#pragma omp critical(stress_har_reduce) + { + for(int l=0;l<3;l++) + { + for(int m=0;m; +#if ((defined __CUDA) || (defined __ROCM)) +template class Stress_Func; +#endif diff --git a/source/source_pw/module_pwdft/stress_kin.cpp b/source/source_pw/module_pwdft/stress_kin.cpp new file mode 100644 index 0000000000..83d6617ffe --- /dev/null +++ b/source/source_pw/module_pwdft/stress_kin.cpp @@ -0,0 +1,46 @@ +#include "stress_func.h" +#include "source_io/module_parameter/parameter.h" +#include "source_base/timer.h" +#include "source_pw/module_pwdft/fs_kin_tools.h" + +//calculate the kinetic stress in PW base +template +void Stress_Func::stress_kin(ModuleBase::matrix& sigma, + const ModuleBase::matrix& wg, + ModuleSymmetry::Symmetry* p_symm, + K_Vectors* p_kv, + ModulePW::PW_Basis_K* wfc_basis, + const UnitCell& ucell_in, + const psi::Psi , Device>* psi_in) +{ + ModuleBase::TITLE("Stress","stress_kin"); + ModuleBase::timer::tick("Stress","stress_kin"); + + this->ucell = &ucell_in; + + hamilt::FS_Kin_tools kin_tool(*this->ucell, p_kv, wfc_basis, wg); + for (int ik = 0; ik < wfc_basis->nks; ++ik) + { + int nbands_occ = wg.nc; + while (wg(ik, nbands_occ - 1) == 0.0) + { + nbands_occ--; + if (nbands_occ == 0) + { + break; + } + } + const int npm = nbands_occ; + kin_tool.cal_gk(ik); + kin_tool.cal_stress_kin(ik, npm, true, &psi_in[0](ik, 0, 0)); + } + kin_tool.symmetrize_stress(p_symm, sigma); + + ModuleBase::timer::tick("Stress","stress_kin"); + return; +} + +template class Stress_Func; +#if ((defined __CUDA) || (defined __ROCM)) +template class Stress_Func; +#endif diff --git a/source/source_pw/module_pwdft/stress_loc.cpp b/source/source_pw/module_pwdft/stress_loc.cpp new file mode 100644 index 0000000000..f6cac47604 --- /dev/null +++ b/source/source_pw/module_pwdft/stress_loc.cpp @@ -0,0 +1,305 @@ +#include "stress_func.h" +#include "source_base/math_integral.h" +#include "source_io/module_parameter/parameter.h" +#include "source_base/tool_threading.h" +#include "source_base/timer.h" +#include "source_base/libm/libm.h" + +//calculate local pseudopotential stress in PW or VL_dVL stress in LCAO +template +void Stress_Func::stress_loc(const UnitCell& ucell, + ModuleBase::matrix& sigma, + ModulePW::PW_Basis* rho_basis, + const ModuleBase::matrix& vloc, + const Structure_Factor* p_sf, + const bool is_pw, + const Charge* const chr) +{ + ModuleBase::TITLE("Stress","stress_loc"); + ModuleBase::timer::tick("Stress","stress_loc"); + + std::vector dvloc(rho_basis->npw); + FPTYPE evloc=0.0; + FPTYPE fact=1.0; + + const int nspin_rho = (PARAM.inp.nspin == 2) ? 2 : 1; + + if (PARAM.inp.gamma_only && is_pw) + { + fact=2.0; + } + + std::vector> aux(rho_basis->nmaxgr); + + /* + blocking rho_basis->nrxx for data locality. + + By blocking aux with block size 1024, + we can keep the blocked aux in L1 cache when iterating PARAM.inp.nspin loop + performance will be better when number of atom is quite huge + */ + const int block_ir = 1024; +#ifdef _OPENMP +#pragma omp parallel for +#endif + for (int irb = 0; irb < rho_basis->nrxx; irb += block_ir) + { + // calculate the actual task length of this block + int ir_end = std::min(irb + block_ir, rho_basis->nrxx); + + for (int ir = irb; ir < ir_end; ++ir) + { + aux[ir] = std::complex(chr->rho[0][ir], 0.0 ); + } + + if(nspin_rho == 2) + { + for (int ir = irb; ir < ir_end; ++ir) + { + aux[ir] += std::complex(chr->rho[1][ir], 0.0 ); + } + } + } + rho_basis->real2recip(aux.data(),aux.data()); + +// if(INPUT.gamma_only==1) fact=2.0; +// else fact=1.0; + + if(is_pw) + { +#pragma omp parallel for collapse(2) reduction(+:evloc) + for (int it=0; itnpw; ig++) + { + if (rho_basis->ig_gge0 == ig) + { + evloc += vloc(it, rho_basis->ig2igg[ig]) + * (p_sf->strucFac(it, ig) * conj(aux[ig])).real(); + } + else + { + evloc += vloc(it, rho_basis->ig2igg[ig]) + * (p_sf->strucFac(it, ig) * conj(aux[ig]) * fact).real(); + } + } + } + } + + + for (int it = 0; it < ucell.ntype; ++it) + { + const Atom* atom = &ucell.atoms[it]; + if(atom->coulomb_potential) + { + // special case: pseudopotential is coulomb 1/r potential + this->dvloc_coulomb (ucell,atom->ncpp.zv, dvloc.data(), rho_basis); + } + else + { + // normal case: dvloc contains dV_loc(G)/dG + this->dvloc_of_g ( atom->ncpp.msh, atom->ncpp.rab.data(), atom->ncpp.r.data(), + atom->ncpp.vloc_at.data(), atom->ncpp.zv, dvloc.data(), rho_basis, ucell); + } +#ifndef _OPENMP + ModuleBase::matrix &local_sigma = sigma; +#else +#pragma omp parallel + { + ModuleBase::matrix local_sigma(3, 3); +#pragma omp for +#endif + for(int ig = 0;ig< rho_basis->npw;ig++) + { + for (int l = 0;l< 3;l++) + { + for (int m = 0; mstrucFac(it, ig)).real() * 2.0 + * dvloc[rho_basis->ig2igg[ig]] * ucell.tpiba2 + * rho_basis->gcar[ig][l] * rho_basis->gcar[ig][m] * fact; + } + } + } +#ifdef _OPENMP +#pragma omp critical(stress_loc_reduce) + { + for(int l=0;l<3;l++) + { + for(int m=0;m +void Stress_Func::dvloc_of_g +( +const int& msh, +const FPTYPE* rab, +const FPTYPE* r, +const FPTYPE* vloc_at, +const FPTYPE& zp, +FPTYPE* dvloc, +ModulePW::PW_Basis* rho_basis, +const UnitCell& ucell_in +) +{ + //---------------------------------------------------------------------- + // + // dvloc = D Vloc (g^2) / D g^2 = (1/2g) * D Vloc(g) / D g + // + + // + //FPTYPE dvloc[ngl]; + // the fourier transform dVloc/dG + // + + + int igl0 = 0; + this->device = base_device::get_device_type(this->ctx); + + std::vector gx_arr(rho_basis->ngg+1); + double* gx_arr_d = nullptr; + // counter on erf functions or gaussians + // counter on g shells vectors + // first shell with g != 0 + + std::vector aux(msh); + + // the G=0 component is not computed + if (rho_basis->gg_uniq[0] < 1.0e-8) + { + dvloc[0] = 0.0; + igl0 = 1; + } + else + { + igl0 = 0; + } + + // Pseudopotentials in numerical form (Vloc contains the local part) + // In order to perform the Fourier transform, a term erf(r)/r is + // subtracted in real space and added again in G space +#ifdef _OPENMP +#pragma omp parallel for +#endif + for (int igl = igl0; igl < rho_basis->ngg; igl++) { + gx_arr[igl] = sqrt(rho_basis->gg_uniq[igl]) * ucell_in.tpiba; + } + + gx_arr[rho_basis->ngg] = zp * ModuleBase::e2; + + // + // This is the part of the integrand function + // indipendent of |G| in real space + // + for(int i = 0;i< msh; i++) + { + aux[i] = r [i] * vloc_at [i] + zp * ModuleBase::e2 * erf(r[i]); + } + + + + double *r_d = nullptr; + double *rhoc_d = nullptr; + double *rab_d = nullptr; + double *aux_d = nullptr; + double *drhocg_d = nullptr; + if (this->device == base_device::GpuDevice) { + resmem_var_op()(r_d, msh); + resmem_var_op()(rhoc_d, msh); + resmem_var_op()(rab_d, msh); + + resmem_var_op()(aux_d, msh); + resmem_var_op()(gx_arr_d, rho_basis->ngg+1); + resmem_var_op()(drhocg_d, rho_basis->ngg); + + syncmem_var_h2d_op()(gx_arr_d, + gx_arr.data(), + rho_basis->ngg+1); + syncmem_var_h2d_op()(r_d, r, msh); + syncmem_var_h2d_op()(rab_d, rab, msh); + syncmem_var_h2d_op()(rhoc_d, aux.data(), msh); + } + + + + if(this->device == base_device::GpuDevice) { + hamilt::cal_stress_drhoc_aux_op()( + r_d,rhoc_d,gx_arr_d+igl0,rab_d,drhocg_d+igl0,msh,igl0,rho_basis->ngg-igl0,ucell_in.omega,3); + syncmem_var_d2h_op()(dvloc+igl0, drhocg_d+igl0, rho_basis->ngg-igl0); + + } else { + hamilt::cal_stress_drhoc_aux_op()( + r,aux.data(),gx_arr.data()+igl0,rab,dvloc+igl0,msh,igl0,rho_basis->ngg-igl0,ucell_in.omega,3); + } + + return; +} + +template +void Stress_Func::dvloc_coulomb(const UnitCell& ucell, + const FPTYPE& zp, + FPTYPE* dvloc, + ModulePW::PW_Basis* rho_basis) +{ + int igl0 = 0; + // start from |G|=0 or not. + if (rho_basis->gg_uniq[0] < 1.0e-8) + { + dvloc[0] = 0.0; + igl0 = 1; + } + else + { + igl0 = 0; + } +#ifdef _OPENMP +#pragma omp parallel for +#endif + for (int i = igl0; i < rho_basis->ngg; i++) + { + dvloc[i] = ModuleBase::FOUR_PI * zp * ModuleBase::e2 / ucell.omega + / pow((ucell.tpiba2 * rho_basis->gg_uniq[i]), 2); + } + + return; +} + +template class Stress_Func; +#if ((defined __CUDA) || (defined __ROCM)) +template class Stress_Func; +#endif diff --git a/source/source_pw/module_pwdft/stress_mgga.cpp b/source/source_pw/module_pwdft/stress_mgga.cpp new file mode 100644 index 0000000000..35201b51bb --- /dev/null +++ b/source/source_pw/module_pwdft/stress_mgga.cpp @@ -0,0 +1,140 @@ +#include "source_base/timer.h" +#include "source_hamilt/module_xc/xc_functional.h" +#include "source_io/module_parameter/parameter.h" +#include "stress_func.h" + +#include +#include + +// calculate the Pulay term of mGGA stress correction in PW +template +void Stress_Func::stress_mgga(const UnitCell& ucell, + ModuleBase::matrix& sigma, + const ModuleBase::matrix& wg, + const ModuleBase::matrix& v_ofk, + const Charge* const chr, + K_Vectors* p_kv, + ModulePW::PW_Basis_K* wfc_basis, + const psi::Psi , Device>* psi_in) +{ + if (PARAM.inp.nspin == 4) + { + ModuleBase::WARNING_QUIT("stress_mgga", "noncollinear stress + mGGA not implemented"); + } + + ModuleBase::timer::tick("Stress", "stress_mgga"); + + int current_spin = 0; + const int nrxx = wfc_basis->nrxx; + + std::complex* psi; + int ipol2xy[3][3] = {{0, 1, 3}, {1, 2, 4}, {3, 4, 5}}; + FPTYPE sigma_mgga[3][3]; + + using ct_Device = typename ct::PsiToContainer::type; + + auto gradwfc = ct::Tensor( + ct::DataTypeToEnum>::value, + ct::DeviceTypeToEnum::value, + {nrxx * 3}); + + auto crosstaus = ct::Tensor( + ct::DataTypeToEnum::value, + ct::DeviceTypeToEnum::value, + {PARAM.inp.nspin, nrxx * 6}); + crosstaus.zero(); // Must be zeroed out + + auto cal_stress_mgga_solver = hamilt::cal_stress_mgga_op, Device>(); + for (int ik = 0; ik < p_kv->get_nks(); ik++) + { + if (PARAM.inp.nspin == 2) + { + current_spin = p_kv->isk[ik]; + } + const int npw = p_kv->ngk[ik]; + + for (int ibnd = 0; ibnd < PARAM.inp.nbands; ibnd++) + { + const FPTYPE w1 = wg(ik, ibnd) / ucell.omega; + const std::complex* psi = &psi_in[0](ik, ibnd, 0); + XC_Functional::grad_wfc, Device>(ik, + ucell.tpiba, + wfc_basis, + psi, + gradwfc.data>()); + + cal_stress_mgga_solver( + current_spin, + nrxx, + w1, + gradwfc.data>(), + crosstaus.data()); + } // band loop + // delete[] psi; + } // k loop + auto crosstaus_host = crosstaus.to_device(); + auto crosstaus_pack = crosstaus_host.accessor(); +#ifdef __MPI + for (int is = 0; is < PARAM.inp.nspin; ++is) + { + for (int ipol = 0; ipol < 6; ++ipol) + { + chr->reduce_diff_pools(&crosstaus_pack[is][ipol * nrxx]); + } + } +#endif + + for(int ix = 0; ix < 3; ix++) + { + for(int iy = 0; iy < 3; iy++) + { + sigma_mgga[ix][iy] = 0.0; + } + } + + for (int is = 0; is < PARAM.inp.nspin; is++) + { + for (int ix = 0; ix < 3; ix++) + { + for (int iy = 0; iy < 3; iy++) + { + FPTYPE delta = 0.0; + if (ix == iy) + { + delta = 1.0; + } + for (int ir = 0; ir < nrxx; ir++) + { + FPTYPE x = v_ofk(is, ir) * + (chr->kin_r[is][ir] * delta + + crosstaus_pack[is][ipol2xy[ix][iy] * nrxx + ir]); + sigma_mgga[ix][iy] += x; + } + } + } + } + +#ifdef __MPI + for (int l = 0; l < 3; l++) + { + for (int m = 0; m < 3; m++) + { + Parallel_Reduce::reduce_pool(sigma_mgga[l][m]); + } + } +#endif + for (int i = 0; i < 3; i++) + { + for (int j = 0; j < 3; j++) + { + sigma(i, j) += sigma_mgga[i][j] / wfc_basis->nxyz; + } + } + ModuleBase::timer::tick("Stress", "stress_mgga"); + return; +} + +template class Stress_Func; +#if ((defined __CUDA) || (defined __ROCM)) +template class Stress_Func; +#endif diff --git a/source/source_pw/module_pwdft/stress_nl.cpp b/source/source_pw/module_pwdft/stress_nl.cpp new file mode 100644 index 0000000000..3f825cc650 --- /dev/null +++ b/source/source_pw/module_pwdft/stress_nl.cpp @@ -0,0 +1,381 @@ +#include "source_base/math_polyint.h" +#include "source_io/module_parameter/parameter.h" +#include "source_base/math_ylmreal.h" +#include "source_base/memory.h" +#include "source_base/module_device/device.h" +#include "source_base/timer.h" +#include "source_pw/module_pwdft/fs_nonlocal_tools.h" +#include "source_pw/module_pwdft/nonlocal_maths.hpp" +#include "stress_func.h" +// calculate the nonlocal pseudopotential stress in PW +template +void Stress_Func::stress_nl(ModuleBase::matrix& sigma, + const ModuleBase::matrix& wg, + const ModuleBase::matrix& ekb, + Structure_Factor* p_sf, + K_Vectors* p_kv, + ModuleSymmetry::Symmetry* p_symm, + ModulePW::PW_Basis_K* wfc_basis, + const psi::Psi , Device>* psi_in, + const pseudopot_cell_vnl& nlpp_in, + const UnitCell& ucell_in) +{ + ModuleBase::TITLE("Stress", "stress_nl"); + // skip nkb==0 + if (nlpp_in.nkb == 0 || psi_in == nullptr || wfc_basis == nullptr) + { + return; + } + ModuleBase::timer::tick("Stress", "stress_nl"); + + FPTYPE* stress_device = nullptr; + resmem_var_op()(stress_device, 9); + setmem_var_op()(stress_device, 0, 9); + std::vector sigmanlc(9, 0.0); + + hamilt::FS_Nonlocal_tools nl_tools(&nlpp_in, &ucell_in, p_kv, wfc_basis, p_sf, wg, &ekb); + + const int nks = p_kv->get_nks(); + const int max_nbands = wg.nc; + for (int ik = 0; ik < nks; ik++) // loop k points + { + // skip zero weights to speed up + int nbands_occ = wg.nc; + while (wg(ik, nbands_occ - 1) == 0.0) + { + nbands_occ--; + if (nbands_occ == 0) + { + break; + } + } + const int npm = nbands_occ; + + nl_tools.cal_vkb(ik, max_nbands); + // calculate becp = for all beta functions + nl_tools.cal_becp(ik, npm, &psi_in[0](ik,0,0)); + nl_tools.reduce_pool_becp(max_nbands); + // calculate dbecp = for all beta functions + // calculate stress = \sum * * D_{ij} + for (int ipol = 0; ipol < 3; ipol++) + { + for (int jpol = 0; jpol <= ipol; jpol++) + { + nl_tools.cal_vkb_deri_s(ik, max_nbands, ipol, jpol); + nl_tools.cal_dbecp_s(ik, npm, &psi_in[0](ik,0,0)); + nl_tools.cal_stress(ik, npm, true, ipol, jpol, stress_device); + } + } + } + // transfer stress from device to host + syncmem_var_d2h_op()(sigmanlc.data(), stress_device, 9); + delmem_var_op()(stress_device); + // sum up forcenl from all processors + for (int l = 0; l < 3; l++) + { + for (int m = 0; m < 3; m++) + { + if (m > l) + { + sigmanlc[l * 3 + m] = sigmanlc[m * 3 + l]; + } + } + } + // sum up forcenl from all processors + Parallel_Reduce::reduce_all(sigmanlc.data(), 9); + + for (int ipol = 0; ipol < 3; ipol++) + { + for (int jpol = 0; jpol < 3; jpol++) + { + sigma(ipol, jpol) = sigmanlc[ipol * 3 + jpol] / ucell_in.omega; + } + } + // do symmetry + if (ModuleSymmetry::Symmetry::symm_flag == 1) + { + p_symm->symmetrize_mat3(sigma, ucell_in.lat); + } // end symmetry + + ModuleBase::timer::tick("Stress", "stress_nl"); +} + +template +void Stress_Func::get_dvnl1(ModuleBase::ComplexMatrix& vkb, + const int ik, + const int ipol, + Structure_Factor* p_sf, + ModulePW::PW_Basis_K* wfc_basis) +{ + if (PARAM.inp.test_pp) + { + ModuleBase::TITLE("Stress", "get_dvnl1"); + } + + const int npw = wfc_basis->npwk[ik]; + const int lmaxkb = nlpp->lmaxkb; + if (lmaxkb < 0) + { + return; + } + + const int nhm = nlpp->nhm; + + assert(npw>0); + + ModuleBase::matrix vkb1(nhm, npw); + vkb1.zero_out(); + FPTYPE* vq = new FPTYPE[npw]; + const int x1 = (lmaxkb + 1) * (lmaxkb + 1); + + ModuleBase::matrix dylm(x1, npw); + ModuleBase::Vector3* gk = new ModuleBase::Vector3[npw]; +#ifdef _OPENMP +#pragma omp parallel for +#endif + for (int ig = 0; ig < npw; ig++) + { + gk[ig] = wfc_basis->getgpluskcar(ik, ig); + } + + hamilt::Nonlocal_maths::dylmr2(x1, npw, reinterpret_cast(gk), dylm.c, ipol); + + const int imag_pow_period = 4; + // result table of pow(0-1i, int) + static const std::complex pref_tab[imag_pow_period] = {{1, 0}, {0, -1}, {-1, 0}, {0, 1}}; + int jkb = 0; + for (int it = 0; it < this->ucell->ntype; it++) + { + if (PARAM.inp.test_pp > 1) + { + ModuleBase::GlobalFunc::OUT("it", it); + } + // calculate beta in G-space using an interpolation table + const int nbeta = this->ucell->atoms[it].ncpp.nbeta; + const int nh = this->ucell->atoms[it].ncpp.nh; + + if (PARAM.inp.test_pp > 1) + { + ModuleBase::GlobalFunc::OUT("nbeta", nbeta); + } + + for (int nb = 0; nb < nbeta; nb++) + { + if (PARAM.inp.test_pp > 1) + { + ModuleBase::GlobalFunc::OUT("ib", nb); + } +#ifdef _OPENMP +#pragma omp parallel for +#endif + for (int ig = 0; ig < npw; ig++) + { + const FPTYPE gnorm = gk[ig].norm() * this->ucell->tpiba; + + vq[ig] = ModuleBase::PolyInt::Polynomial_Interpolation(nlpp->tab, + it, + nb, + PARAM.globalv.nqx, + PARAM.globalv.dq, + gnorm); + + } + + // add spherical harmonic part + for (int ih = 0; ih < nh; ih++) + { + if (nb == nlpp->indv(it, ih)) + { + const int lm = static_cast(nlpp->nhtolm(it, ih)); +#ifdef _OPENMP +#pragma omp parallel for +#endif + for (int ig = 0; ig < npw; ig++) + { + vkb1(ih, ig) = dylm(lm, ig) * vq[ig]; + } + } + + } // end ih + + } // end nbeta + + // vkb1 contains all betas including angular part for type nt + // now add the structure factor and factor (-i)^l + for (int ia = 0; ia < this->ucell->atoms[it].na; ia++) + { + std::complex* sk = p_sf->get_sk(ik, it, ia, wfc_basis); +#ifdef _OPENMP +#pragma omp parallel for collapse(2) +#endif + for (int ih = 0; ih < nh; ih++) + { + for (int ig = 0; ig < npw; ig++) + { + std::complex pref = pref_tab[int(nlpp->nhtol(it, ih)) % imag_pow_period]; + vkb(jkb + ih, ig) = vkb1(ih, ig) * sk[ig] * pref; + } + + } // end ih + jkb += nh; + delete[] sk; + } // end ia + } // enddo + delete[] gk; + delete[] vq; + return; +} // end get_dvnl1 + + +template +void Stress_Func::get_dvnl2(ModuleBase::ComplexMatrix& vkb, + const int ik, + Structure_Factor* p_sf, + ModulePW::PW_Basis_K* wfc_basis) +{ + if (PARAM.inp.test_pp) + { + ModuleBase::TITLE("Stress", "get_dvnl2"); + } + // ModuleBase::timer::tick("Stress","get_dvnl2"); + const int npw = wfc_basis->npwk[ik]; + const int lmaxkb = nlpp->lmaxkb; + if (lmaxkb < 0) + { + return; + } + + const int nhm = nlpp->nhm; + + assert(npw>0); + + ModuleBase::matrix vkb1(nhm, npw); + FPTYPE* vq = new FPTYPE[npw]; + const int x1 = (lmaxkb + 1) * (lmaxkb + 1); + + ModuleBase::matrix ylm(x1, npw); + ModuleBase::Vector3* gk = new ModuleBase::Vector3[npw]; +#ifdef _OPENMP +#pragma omp parallel for +#endif + for (int ig = 0; ig < npw; ig++) + { + gk[ig] = wfc_basis->getgpluskcar(ik, ig); + } + ModuleBase::YlmReal::Ylm_Real(x1, npw, gk, ylm); + + const int imag_pow_period = 4; + // result table of pow(0-1i, int) + static const std::complex pref_tab[imag_pow_period] = {{1, 0}, {0, -1}, {-1, 0}, {0, 1}}; + int jkb = 0; + for (int it = 0; it < this->ucell->ntype; it++) + { + if (PARAM.inp.test_pp > 1) + { + ModuleBase::GlobalFunc::OUT("it", it); + } + // calculate beta in G-space using an interpolation table + const int nbeta = this->ucell->atoms[it].ncpp.nbeta; + const int nh = this->ucell->atoms[it].ncpp.nh; + + if (PARAM.inp.test_pp > 1) + { + ModuleBase::GlobalFunc::OUT("nbeta", nbeta); + } + + for (int nb = 0; nb < nbeta; nb++) + { + if (PARAM.inp.test_pp > 1) + { + ModuleBase::GlobalFunc::OUT("ib", nb); + } +#ifdef _OPENMP +#pragma omp parallel for +#endif + for (int ig = 0; ig < npw; ig++) + { + const FPTYPE gnorm = gk[ig].norm() * this->ucell->tpiba; + vq[ig] = hamilt::Nonlocal_maths::Polynomial_Interpolation_nl(nlpp->tab, + it, + nb, + PARAM.globalv.dq, + gnorm); + + } // enddo + + // add spherical harmonic part + for (int ih = 0; ih < nh; ih++) + { + if (nb == nlpp->indv(it, ih)) + { + const int lm = static_cast(nlpp->nhtolm(it, ih)); +#ifdef _OPENMP +#pragma omp parallel for +#endif + for (int ig = 0; ig < npw; ig++) + { + vkb1(ih, ig) = ylm(lm, ig) * vq[ig]; + } + } + } // end ih + } // end nbeta + + // vkb1 contains all betas including angular part for type nt + // now add the structure factor and factor (-i)^l + for (int ia = 0; ia < this->ucell->atoms[it].na; ia++) + { + std::complex* sk = p_sf->get_sk(ik, it, ia, wfc_basis); +#ifdef _OPENMP +#pragma omp parallel for collapse(2) +#endif + for (int ih = 0; ih < nh; ih++) + { + for (int ig = 0; ig < npw; ig++) + { + std::complex pref = pref_tab[int(nlpp->nhtol(it, ih)) % imag_pow_period]; //? + vkb(jkb + ih, ig) = vkb1(ih, ig) * sk[ig] * pref; + } + + } // end ih + jkb += nh; + delete[] sk; + } // end ia + } // enddo + + delete[] gk; + delete[] vq; + + return; +} + +template +FPTYPE Stress_Func::Polynomial_Interpolation_nl(const ModuleBase::realArray& table, + const int& dim1, + const int& dim2, + const int& dim3, + const FPTYPE& table_interval, + const FPTYPE& x // input value +) +{ + + assert(table_interval > 0.0); + const FPTYPE position = x / table_interval; + const int iq = static_cast(position); + + const FPTYPE x0 = position - static_cast(iq); + const FPTYPE x1 = 1.0 - x0; + const FPTYPE x2 = 2.0 - x0; + const FPTYPE x3 = 3.0 - x0; + const FPTYPE y = (table(dim1, dim2, dim3, iq) * (-x2 * x3 - x1 * x3 - x1 * x2) / 6.0 + + table(dim1, dim2, dim3, iq + 1) * (+x2 * x3 - x0 * x3 - x0 * x2) / 2.0 + - table(dim1, dim2, dim3, iq + 2) * (+x1 * x3 - x0 * x3 - x0 * x1) / 2.0 + + table(dim1, dim2, dim3, iq + 3) * (+x1 * x2 - x0 * x2 - x0 * x1) / 6.0) + / table_interval; + + return y; +} + +template class Stress_Func; +#if ((defined __CUDA) || (defined __ROCM)) +template class Stress_Func; +#endif diff --git a/source/source_pw/module_pwdft/stress_onsite.cpp b/source/source_pw/module_pwdft/stress_onsite.cpp new file mode 100644 index 0000000000..bcd37d900f --- /dev/null +++ b/source/source_pw/module_pwdft/stress_onsite.cpp @@ -0,0 +1,124 @@ +#include "source_base/module_device/device.h" +#include "source_base/timer.h" +#include "source_pw/module_pwdft/onsite_projector.h" +#include "source_io/module_parameter/parameter.h" +#include "source_lcao/module_dftu/dftu.h" +#include "source_lcao/module_deltaspin/spin_constrain.h" +#include "stress_func.h" +// calculate the nonlocal pseudopotential stress in PW +template +void Stress_Func::stress_onsite(ModuleBase::matrix& sigma, + const ModuleBase::matrix& wg, + const ModulePW::PW_Basis_K* wfc_basis, + const UnitCell& ucell_in, + const Plus_U &dftu, // mohan add 2025-11-06 + const psi::Psi , Device>* psi_in, + ModuleSymmetry::Symmetry* p_symm) +{ + ModuleBase::TITLE("Stress", "stress_onsite"); + if(psi_in == nullptr || wfc_basis == nullptr) + { + return; + } + ModuleBase::timer::tick("Stress", "stress_onsite"); + + FPTYPE* stress_device = nullptr; + resmem_var_op()(stress_device, 9); + setmem_var_op()(stress_device, 0, 9); + std::vector sigma_onsite(9, 0.0); + + auto* onsite_p = projectors::OnsiteProjector::get_instance(); + + const int nks = wfc_basis->nks; + for (int ik = 0; ik < nks; ik++) + { + // skip zero weights to speed up + int nbands_occ = wg.nc; + while (wg(ik, nbands_occ - 1) == 0.0) + { + nbands_occ--; + if (nbands_occ == 0) + { + break; + } + } + const int npm = nbands_occ; + + // calculate becp = for all beta functions + onsite_p->get_fs_tools()->cal_becp(ik, npm); + + // calculate dbecp = for all beta functions + // calculate stress = \sum * * D_{ij} + for (int ipol = 0; ipol < 3; ipol++) + { + for (int jpol = 0; jpol <= ipol; jpol++) + { + FPTYPE* stress_device_tmp = stress_device + (ipol * 3 + jpol); + onsite_p->get_fs_tools()->cal_dbecp_s(ik, npm, ipol, jpol); + if(PARAM.inp.dft_plus_u) + { + onsite_p->get_fs_tools()->cal_stress_dftu(ik, + npm, + stress_device_tmp, + dftu.orbital_corr.data(), + dftu.get_eff_pot_pw(0), + dftu.get_size_eff_pot_pw(), + wg.c); + } + if(PARAM.inp.sc_mag_switch) + { + spinconstrain::SpinConstrain>& sc = + spinconstrain::SpinConstrain>::getScInstance(); + const std::vector>& lambda = sc.get_sc_lambda(); + onsite_p->get_fs_tools()->cal_stress_dspin(ik, npm, stress_device_tmp, lambda.data(), wg.c); + } + } + } + } + + // transfer stress from device to host + syncmem_var_d2h_op()(sigma_onsite.data(), stress_device, 9); + delmem_var_op()(stress_device); + + // sum up forcenl from all processors + for (int l = 0; l < 3; l++) + { + for (int m = 0; m < 3; m++) + { + if (m > l) + { + sigma_onsite[l * 3 + m] = sigma_onsite[m * 3 + l]; + } + Parallel_Reduce::reduce_all(sigma_onsite[l * 3 + m]); // qianrui fix a bug for kpar > 1 + } + } + + // rescale the stress with 1/omega + for (int ipol = 0; ipol < 3; ipol++) + { + for (int jpol = 0; jpol < 3; jpol++) + { + sigma_onsite[ipol * 3 + jpol] *= 1.0 / ucell_in.omega; + } + } + + for (int ipol = 0; ipol < 3; ipol++) + { + for (int jpol = 0; jpol < 3; jpol++) + { + sigma(ipol, jpol) = sigma_onsite[ipol * 3 + jpol]; + } + } + + if (ModuleSymmetry::Symmetry::symm_flag == 1) + { + p_symm->symmetrize_mat3(sigma, ucell_in.lat); + } + + ModuleBase::timer::tick("Stress", "stress_onsite"); +} + +template class Stress_Func; +#if ((defined __CUDA) || (defined __ROCM)) +template class Stress_Func; +#endif diff --git a/source/source_pw/module_pwdft/stress_pw.cpp b/source/source_pw/module_pwdft/stress_pw.cpp index fb5bfd026b..8fe96823bb 100644 --- a/source/source_pw/module_pwdft/stress_pw.cpp +++ b/source/source_pw/module_pwdft/stress_pw.cpp @@ -1,13 +1,16 @@ #include "stress_pw.h" #include "source_base/timer.h" +#include "source_base/global_variable.h" // use GlobalC #include "source_hamilt/module_vdw/vdw.h" -#include "source_pw/module_pwdft/global.h" -#include "source_io/output_log.h" +#include "source_io/module_output/output_log.h" +#include "source_hamilt/module_xc/xc_functional.h" +#include "source_hamilt/module_xc/exx_info.h" // use GlobalC::exx_info template void Stress_PW::cal_stress(ModuleBase::matrix& sigmatot, UnitCell& ucell, + Plus_U &dftu, // mhan add 2025-11-07 const pseudopot_cell_vl& locpp, const pseudopot_cell_vnl& nlpp, ModulePW::PW_Basis* rho_basis, @@ -91,7 +94,7 @@ void Stress_PW::cal_stress(ModuleBase::matrix& sigmatot, this->stress_mgga(ucell, sigmaxc, this->pelec->wg, - this->pelec->pot->get_effective_vofk(), + this->pelec->pot->get_eff_vofk(), pelec->charge, p_kv, wfc_basis, @@ -119,7 +122,7 @@ void Stress_PW::cal_stress(ModuleBase::matrix& sigmatot, // DFT+U and DeltaSpin stress if (PARAM.inp.dft_plus_u || PARAM.inp.sc_mag_switch) { - this->stress_onsite(sigmaonsite, this->pelec->wg, wfc_basis, ucell, d_psi_in, p_symm); + this->stress_onsite(sigmaonsite, this->pelec->wg, wfc_basis, ucell, dftu, d_psi_in, p_symm); } // EXX PW stress diff --git a/source/source_pw/module_pwdft/stress_pw.h b/source/source_pw/module_pwdft/stress_pw.h index 027bc56039..dde4688681 100644 --- a/source/source_pw/module_pwdft/stress_pw.h +++ b/source/source_pw/module_pwdft/stress_pw.h @@ -1,9 +1,10 @@ -#ifndef W_ABACUS_DEVELOP_ABACUS_DEVELOP_SOURCE_source_pw_HAMILT_PWDFT_STRESS_PW_H -#define W_ABACUS_DEVELOP_ABACUS_DEVELOP_SOURCE_source_pw_HAMILT_PWDFT_STRESS_PW_H +#ifndef STRESS_PW_H +#define STRESS_PW_H #include "source_estate/elecstate.h" -#include "source_pw/module_pwdft/VL_in_pw.h" +#include "source_pw/module_pwdft/vl_pw.h" #include "stress_func.h" +#include "source_lcao/module_dftu/dftu.h" // mohan add 2025-11-07 template class Stress_PW : public Stress_Func @@ -13,15 +14,16 @@ class Stress_PW : public Stress_Func // calculate the stress in PW basis void cal_stress(ModuleBase::matrix& smearing_sigmatot, - UnitCell& ucell, - const pseudopot_cell_vl& locpp, - const pseudopot_cell_vnl& nlpp, - ModulePW::PW_Basis* rho_basis, - ModuleSymmetry::Symmetry* p_symm, - Structure_Factor* p_sf, - K_Vectors* p_kv, - ModulePW::PW_Basis_K* wfc_basis, - const psi::Psi , Device>* d_psi_in = nullptr); + UnitCell& ucell, + Plus_U &dftu, // mhan add 2025-11-07 + const pseudopot_cell_vl& locpp, + const pseudopot_cell_vnl& nlpp, + ModulePW::PW_Basis* rho_basis, + ModuleSymmetry::Symmetry* p_symm, + Structure_Factor* p_sf, + K_Vectors* p_kv, + ModulePW::PW_Basis_K* wfc_basis, + const psi::Psi , Device>* d_psi_in = nullptr); protected: // call the vdw stress diff --git a/source/source_pw/module_pwdft/stress_us.cpp b/source/source_pw/module_pwdft/stress_us.cpp new file mode 100644 index 0000000000..e18ffb9823 --- /dev/null +++ b/source/source_pw/module_pwdft/stress_us.cpp @@ -0,0 +1,298 @@ +#include "source_base/libm/libm.h" +#include "source_io/module_parameter/parameter.h" +#include "source_base/math_polyint.h" +#include "source_base/math_ylmreal.h" +#include "source_base/timer.h" +#include "source_estate/elecstate_pw.h" +#include "source_pw/module_pwdft/nonlocal_maths.hpp" +#include "stress_pw.h" + +// computes the part of the crystal stress which is due +// to the dependence of the Q function on the atomic position in PW base +template +void Stress_PW::stress_us(ModuleBase::matrix& sigma, + ModulePW::PW_Basis* rho_basis, + const pseudopot_cell_vnl& nlpp, + const UnitCell& ucell) +{ + ModuleBase::TITLE("Stress", "stress_us"); + ModuleBase::timer::tick("Stress", "stress_us"); + + const int npw = rho_basis->npw; + const int nh_tot = nlpp.nhm * (nlpp.nhm + 1) / 2; + const std::complex fac = ModuleBase::NEG_IMAG_UNIT * ucell.tpiba; + const std::complex ci_tpi = ModuleBase::IMAG_UNIT * ModuleBase::TWO_PI; + double* becsum = static_cast, Device>*>(this->pelec)->becsum; + + ModuleBase::matrix stressus(3, 3); + + ModuleBase::matrix veff = this->pelec->pot->get_eff_v(); + ModuleBase::ComplexMatrix vg(PARAM.inp.nspin, npw); + // fourier transform of the total effective potential + for (int is = 0; is < PARAM.inp.nspin; is++) + { + rho_basis->real2recip(&veff.c[is * veff.nc], &vg(is, 0)); + } + + ModuleBase::matrix ylmk0(nlpp.lmaxq * nlpp.lmaxq, npw); + ModuleBase::YlmReal::Ylm_Real(nlpp.lmaxq * nlpp.lmaxq, npw, rho_basis->gcar, ylmk0); + + // double* qnorm = new double[npw]; + std::vector qnorm_vec(npw); + double* qnorm = qnorm_vec.data(); + for (int ig = 0; ig < npw; ig++) + { + qnorm[ig] = rho_basis->gcar[ig].norm() * ucell.tpiba; + } + + // here we compute the integral Q*V for each atom, + // I = sum_G G_a exp(-iR.G) Q_nm v^* + // (no contribution from G=0) + ModuleBase::matrix dylmk0(nlpp.lmaxq * nlpp.lmaxq, npw); + for (int ipol = 0; ipol < 3; ipol++) + { + double* gcar_ptr = reinterpret_cast(rho_basis->gcar); + hamilt::Nonlocal_maths::dylmr2(nlpp.lmaxq * nlpp.lmaxq, + npw, + gcar_ptr, + dylmk0.c, + ipol); + for (int it = 0; it < ucell.ntype; it++) + { + Atom* atom = &ucell.atoms[it]; + if (atom->ncpp.tvanp) + { + // nij = max number of (ih,jh) pairs per atom type nt + // qgm contains derivatives of the Fourier transform of the Q function + const int nij = atom->ncpp.nh * (atom->ncpp.nh + 1) / 2; + ModuleBase::ComplexMatrix qgm(nij, npw); + ModuleBase::matrix tbecsum(PARAM.inp.nspin, nij); + + // Compute and store derivatives of Q(G) for this atomic species + // (without structure factor) + int ijh = 0; + for (int ih = 0; ih < atom->ncpp.nh; ih++) + { + for (int jh = ih; jh < atom->ncpp.nh; jh++) + { + this->dqvan2(nlpp, + ih, + jh, + it, + ipol, + npw, + rho_basis->gcar, + qnorm, + ucell.tpiba, + ylmk0, + dylmk0, + &qgm(ijh, 0)); + ijh++; + } + } + double* qgm_data = reinterpret_cast(qgm.c); + + for (int ia = 0; ia < atom->na; ia++) + { + const int iat = ucell.itia2iat(it, ia); + for (int is = 0; is < PARAM.inp.nspin; is++) + { + for (int ij = 0; ij < nij; ij++) + { + tbecsum(is, ij) = becsum[is * ucell.nat * nh_tot + iat * nh_tot + ij]; + } + } + + ModuleBase::ComplexMatrix aux2(PARAM.inp.nspin, npw); + double* aux2_data = reinterpret_cast(aux2.c); + + const char transa = 'N'; + const char transb = 'N'; + const int dim = 2 * npw; + const double one = 1; + const double zero = 0; + BlasConnector::gemm(transb, + transa, + PARAM.inp.nspin, + dim, + nij, + one, + tbecsum.c, + nij, + qgm_data, + dim, + zero, + aux2_data, + dim); + + for (int is = 0; is < PARAM.inp.nspin; is++) + { + for (int ig = 0; ig < npw; ig++) + { + aux2(is, ig) *= conj(vg(is, ig)); + } + } + + ModuleBase::ComplexMatrix aux1(3, npw); + double* aux1_data = reinterpret_cast(aux1.c); + for (int ig = 0; ig < npw; ig++) + { + double arg = rho_basis->gcar[ig] * atom->tau[ia]; + std::complex cfac = ucell.tpiba * ModuleBase::libm::exp(ci_tpi * arg); + for (int ipol = 0; ipol < 3; ipol++) + { + aux1(ipol, ig) = cfac * rho_basis->gcar[ig][ipol]; + } + } + + ModuleBase::matrix fac(PARAM.inp.nspin, 3); + const char transc = 'T'; + const int three = 3; + BlasConnector::gemm_cm(transc, + transb, + three, + PARAM.inp.nspin, + dim, + one, + aux1_data, + dim, + aux2_data, + dim, + zero, + fac.c, + three); + + for (int is = 0; is < PARAM.inp.nspin; is++) + { + for (int jpol = 0; jpol < 3; jpol++) + { + stressus(jpol, ipol) += fac(is, jpol); + } + } + } + } + } + } + + Parallel_Reduce::reduce_all(stressus.c, stressus.nr * stressus.nc); + for (int l = 0; l < 3; l++) + { + for (int m = l; m < 3; m++) + { + stressus(m, l) = stressus(l, m); + } + } + sigma += stressus; + + ModuleBase::timer::tick("Stress", "stress_us"); + return; +} + +template +void Stress_Func::dqvan2(const pseudopot_cell_vnl& nlpp, + const int ih, + const int jh, + const int itype, + const int ipol, + const int ng, + const ModuleBase::Vector3* g, + const FPTYPE* qnorm, + const FPTYPE& tpiba, + const ModuleBase::matrix& ylmk0, + const ModuleBase::matrix& dylmk0, + std::complex* dqg) +{ + if (PARAM.inp.test_pp) + { + ModuleBase::TITLE("Stress", "dqvan2"); + } + + // computes the indices which correspond to ih,jh + const int nb = nlpp.indv(itype, ih); + const int mb = nlpp.indv(itype, jh); + assert(nb < nlpp.nbetam); + assert(mb < nlpp.nbetam); + int ijv = 0; + if (nb >= mb) + { + ijv = nb * (nb + 1) / 2 + mb; + } + else + { + ijv = mb * (mb + 1) / 2 + nb; + } + const int ivl = nlpp.nhtolm(itype, ih); + const int jvl = nlpp.nhtolm(itype, jh); + + for (int ig = 0; ig < ng; ig++) + { + dqg[ig] = {0, 0}; + } + + // make the sum over the non zero LM + int l = -1; + std::complex pref(0.0, 0.0); + for (int lm = 0; lm < nlpp.lpx(ivl, jvl); lm++) + { + int lp = nlpp.lpl(ivl, jvl, lm); + assert(lp >= 0); + assert(lp < 49); + if (lp == 0) + { + l = 0; + } + else if (lp < 4) + { + l = 1; + } + else if (lp < 9) + { + l = 2; + } + else if (lp < 16) + { + l = 3; + } + else if (lp < 25) + { + l = 4; + } + else if (lp < 36) + { + l = 5; + } + else + { + l = 6; + } + pref = pow(ModuleBase::NEG_IMAG_UNIT, l) * nlpp.ap(lp, ivl, jvl); + + double qm1 = -1.0; // any number smaller than qnorm + double work = 0.0, work1 = 0.0; + for (int ig = 0; ig < ng; ig++) + { + if (std::abs(qnorm[ig] - qm1) > 1e-6) + { + work = ModuleBase::PolyInt::Polynomial_Interpolation(nlpp.qrad, + itype, + l, + ijv, + PARAM.globalv.nqxq, + PARAM.globalv.dq, + qnorm[ig]); + work1 = this->Polynomial_Interpolation_nl(nlpp.qrad, itype, l, ijv, PARAM.globalv.dq, qnorm[ig]); + qm1 = qnorm[ig]; + } + dqg[ig] += pref * work * dylmk0(lp, ig) / tpiba; + if (qnorm[ig] > 1e-9) + { + dqg[ig] += pref * work1 * ylmk0(lp, ig) * tpiba * g[ig][ipol] / qnorm[ig]; + } + } + } +} + +template class Stress_PW; +#if ((defined __CUDA) || (defined __ROCM)) +template class Stress_PW; +#endif diff --git a/source/source_pw/module_pwdft/structure_factor.cpp b/source/source_pw/module_pwdft/structure_factor.cpp index b97bdee944..44484f59d2 100644 --- a/source/source_pw/module_pwdft/structure_factor.cpp +++ b/source/source_pw/module_pwdft/structure_factor.cpp @@ -3,7 +3,6 @@ #include "source_io/module_parameter/parameter.h" #include "structure_factor.h" #include "source_base/constants.h" -#include "source_pw/module_pwdft/global.h" #include "source_base/math_bspline.h" #include "source_base/memory.h" #include "source_base/timer.h" @@ -46,7 +45,7 @@ Structure_Factor::~Structure_Factor() // called in input.cpp void Structure_Factor::set(const ModulePW::PW_Basis* rho_basis_in, const int& nbspline_in) { - ModuleBase::TITLE("PW_Basis","set"); + ModuleBase::TITLE("Structure_Factor","set"); this->rho_basis = rho_basis_in; this->nbspline = nbspline_in; return; @@ -54,10 +53,11 @@ void Structure_Factor::set(const ModulePW::PW_Basis* rho_basis_in, const int& nb // Peize Lin optimize and add OpenMP 2021.04.01 // Calculate structure factor -void Structure_Factor::setup_structure_factor(const UnitCell* Ucell, const Parallel_Grid& pgrid, const ModulePW::PW_Basis* rho_basis) +void Structure_Factor::setup(const UnitCell* Ucell, const Parallel_Grid& pgrid, const ModulePW::PW_Basis* rho_basis) { - ModuleBase::TITLE("PW_Basis","setup_structure_factor"); - ModuleBase::timer::tick("PW_Basis","setup_struc_factor"); + ModuleBase::TITLE("Structure_Factor","setup"); + ModuleBase::timer::tick("Structure_Factor","setup"); + const std::complex ci_tpi = ModuleBase::NEG_IMAG_UNIT * ModuleBase::TWO_PI; this->ucell = Ucell; this->strucFac.create(Ucell->ntype, rho_basis->npw); @@ -66,9 +66,15 @@ void Structure_Factor::setup_structure_factor(const UnitCell* Ucell, const Paral // std::string outstr; // outstr = PARAM.globalv.global_out_dir + "strucFac.dat"; // std::ofstream ofs( outstr.c_str() ) ; - bool usebspline; - if(nbspline > 0) { usebspline = true; - } else { usebspline = false;} + bool usebspline; + if(nbspline > 0) + { + usebspline = true; + } + else + { + usebspline = false; + } if(usebspline) { @@ -100,12 +106,15 @@ void Structure_Factor::setup_structure_factor(const UnitCell* Ucell, const Paral // ofs.close(); - int i,j; //ng; + int i=0; + int j=0; + this->eigts1.create(Ucell->nat, 2*rho_basis->nx + 1); this->eigts2.create(Ucell->nat, 2*rho_basis->ny + 1); this->eigts3.create(Ucell->nat, 2*rho_basis->nz + 1); - ModuleBase::Memory::record("SF::eigts123",sizeof(std::complex) * (Ucell->nat*2 * (rho_basis->nx + rho_basis->ny + rho_basis->nz) + 3)); + ModuleBase::Memory::record("SF::eigts123",sizeof(std::complex) + * (Ucell->nat*2 * (rho_basis->nx + rho_basis->ny + rho_basis->nz) + 3)); ModuleBase::Vector3 gtau; int inat = 0; @@ -177,7 +186,7 @@ void Structure_Factor::setup_structure_factor(const UnitCell* Ucell, const Paral this->z_eigts3 = this->eigts3.c; // There's no need to delete double precision pointers while in a CPU environment. } - ModuleBase::timer::tick("PW_Basis","setup_struc_factor"); + ModuleBase::timer::tick("Structure_Factor","setup"); return; } @@ -298,7 +307,7 @@ void Structure_Factor::bspline_sf(const int norder, return; } -void Structure_Factor:: bsplinecoef(std::complex *b1, std::complex *b2, std::complex *b3, +void Structure_Factor::bsplinecoef(std::complex *b1, std::complex *b2, std::complex *b3, const int nx, const int ny, const int nz, const int norder) { const std::complex ci_tpi = ModuleBase::NEG_IMAG_UNIT * ModuleBase::TWO_PI; @@ -379,4 +388,4 @@ template <> std::complex * Structure_Factor::get_eigts3_data() const { return this->z_eigts3; -} \ No newline at end of file +} diff --git a/source/source_pw/module_pwdft/structure_factor.h b/source/source_pw/module_pwdft/structure_factor.h index 36e9185400..6de0a5b0e3 100644 --- a/source/source_pw/module_pwdft/structure_factor.h +++ b/source/source_pw/module_pwdft/structure_factor.h @@ -1,5 +1,5 @@ -#ifndef PLANEWAVE_H -#define PLANEWAVE_H +#ifndef STRUCTURE_FACTOR_H +#define STRUCTURE_FACTOR_H #include "source_base/complexmatrix.h" #include "source_basis/module_pw/pw_basis_k.h" @@ -23,9 +23,10 @@ class Structure_Factor // structure factor (ntype, ngmc) ModuleBase::ComplexMatrix strucFac; - void setup_structure_factor(const UnitCell* Ucell, - const Parallel_Grid& pgrid, - const ModulePW::PW_Basis* rho_basis); // Calculate structure factors + + void setup(const UnitCell* Ucell, + const Parallel_Grid& pgrid, + const ModulePW::PW_Basis* rho_basis); // Calculate structure factors /// calculate structure factors through Cardinal B-spline interpolation void bspline_sf( @@ -33,6 +34,7 @@ class Structure_Factor const UnitCell* Ucell, const Parallel_Grid& pgrid, const ModulePW::PW_Basis* rho_basis); + void bsplinecoef(std::complex *b1, std::complex *b2, std::complex *b3, const int nx, const int ny, const int nz, const int norder); @@ -51,7 +53,9 @@ class Structure_Factor // sf with k points std::complex* get_sk(const int ik, const int it, const int ia, const ModulePW::PW_Basis_K* wfc_basis) const; template + void get_sk(Device* ctx, const int ik, const ModulePW::PW_Basis_K* wfc_basis, std::complex* sk) const; + std::complex* get_skq(int ik, int it, int ia, @@ -59,9 +63,16 @@ class Structure_Factor ModuleBase::Vector3 q); private: + const UnitCell* ucell=nullptr; - std::complex * c_eigts1 = nullptr, * c_eigts2 = nullptr, * c_eigts3 = nullptr; - std::complex * z_eigts1 = nullptr, * z_eigts2 = nullptr, * z_eigts3 = nullptr; + std::complex * c_eigts1 = nullptr; + std::complex * c_eigts2 = nullptr; + std::complex * c_eigts3 = nullptr; + + std::complex * z_eigts1 = nullptr; + std::complex * z_eigts2 = nullptr; + std::complex * z_eigts3 = nullptr; + const ModulePW::PW_Basis* rho_basis = nullptr; std::string device = "cpu"; }; diff --git a/source/source_pw/module_pwdft/structure_factor_k.cpp b/source/source_pw/module_pwdft/structure_factor_k.cpp index ea071cd409..3ca4980c58 100644 --- a/source/source_pw/module_pwdft/structure_factor_k.cpp +++ b/source/source_pw/module_pwdft/structure_factor_k.cpp @@ -1,9 +1,9 @@ #include "source_base/memory.h" #include "source_base/timer.h" -#include "source_pw/module_pwdft/global.h" #include "source_pw/module_pwdft/kernels/wf_op.h" #include "source_base/module_device/device.h" #include "structure_factor.h" + std::complex* Structure_Factor::get_sk(const int ik, const int it, const int ia, @@ -57,7 +57,7 @@ void Structure_Factor::get_sk(Device* ctx, ModuleBase::timer::tick("Structure_Factor", "get_sk"); base_device::DEVICE_CPU* cpu_ctx = {}; - base_device::AbacusDevice_t device = base_device::get_device_type(ctx); + base_device::AbacusDevice_t device = base_device::get_device_type(ctx); using cal_sk_op = hamilt::cal_sk_op; using resmem_int_op = base_device::memory::resize_memory_op; using delmem_int_op = base_device::memory::delete_memory_op; @@ -179,4 +179,4 @@ template void Structure_Factor::get_sk(base_dev int, const ModulePW::PW_Basis_K*, std::complex*) const; -#endif \ No newline at end of file +#endif diff --git a/source/source_pw/module_pwdft/test/CMakeLists.txt b/source/source_pw/module_pwdft/test/CMakeLists.txt index 32009ba9e7..2a588d1729 100644 --- a/source/source_pw/module_pwdft/test/CMakeLists.txt +++ b/source/source_pw/module_pwdft/test/CMakeLists.txt @@ -4,7 +4,7 @@ remove_definitions(-D__ROCM) remove_definitions(-D__EXX) AddTest( - TARGET pwdft_soc + TARGET MODULE_PW_pwdft_soc LIBS parameter ${math_libs} SOURCES soc_test.cpp ../soc.cpp ../../../source_base/global_variable.cpp @@ -23,17 +23,17 @@ AddTest( ) AddTest( - TARGET radial_proj_test + TARGET MODULE_PW_radial_proj_test LIBS parameter base device ${math_libs} SOURCES radial_proj_test.cpp ../radial_proj.cpp ) AddTest( - TARGET structure_factor_test - LIBS parameter ${math_libs} base device planewave + TARGET MODULE_PW_structure_factor_test + LIBS parameter ${math_libs} base device planewave SOURCES structure_factor_test.cpp ../structure_factor.cpp ../parallel_grid.cpp ../../../source_cell/unitcell.cpp - ../../../source_io/output.cpp + ../../../source_io/module_output/output.cpp ../../../source_cell/update_cell.cpp ../../../source_cell/bcast_cell.cpp ../../../source_cell/print_cell.cpp @@ -43,14 +43,17 @@ AddTest( ../../../source_cell/read_stru.cpp ../../../source_cell/read_atom_species.cpp ../../../source_cell/read_atoms.cpp + ../../../source_cell/read_atoms_helper.cpp ../../../source_cell/read_pp.cpp ../../../source_cell/read_pp_complete.cpp ../../../source_cell/read_pp_upf100.cpp ../../../source_cell/read_pp_upf201.cpp ../../../source_cell/read_pp_vwr.cpp ../../../source_cell/read_pp_blps.cpp + ../../../source_cell/sep.cpp + ../../../source_cell/sep_cell.cpp ../../../source_estate/read_pseudo.cpp ../../../source_estate/cal_wfc.cpp ../../../source_estate/cal_nelec_nband.cpp ../../../source_estate/read_orb.cpp -) \ No newline at end of file +) diff --git a/source/source_pw/module_pwdft/test/structure_factor_test.cpp b/source/source_pw/module_pwdft/test/structure_factor_test.cpp index c0f5078a72..0a1866a3f4 100644 --- a/source/source_pw/module_pwdft/test/structure_factor_test.cpp +++ b/source/source_pw/module_pwdft/test/structure_factor_test.cpp @@ -75,7 +75,7 @@ TEST_F(StructureFactorTest, set) TEST_F(StructureFactorTest, setup_structure_factor_double) { rho_basis->npw = 10; - SF.setup_structure_factor(ucell,*pgrid,rho_basis); + SF.setup(ucell,*pgrid,rho_basis); for (int i=0;i< ucell->nat * (2 * rho_basis->nx + 1);i++) { @@ -100,7 +100,7 @@ TEST_F(StructureFactorTest, setup_structure_factor_float) { PARAM.sys.has_float_data = true; rho_basis->npw = 10; - SF.setup_structure_factor(ucell,*pgrid,rho_basis); + SF.setup(ucell,*pgrid,rho_basis); for (int i=0;i< ucell->nat * (2 * rho_basis->nx + 1);i++) { @@ -125,4 +125,4 @@ int main() { testing::InitGoogleTest(); return RUN_ALL_TESTS(); -} \ No newline at end of file +} diff --git a/source/source_pw/module_pwdft/update_cell_pw.cpp b/source/source_pw/module_pwdft/update_cell_pw.cpp new file mode 100644 index 0000000000..a027884cc2 --- /dev/null +++ b/source/source_pw/module_pwdft/update_cell_pw.cpp @@ -0,0 +1,29 @@ +#include "source_pw/module_pwdft/update_cell_pw.h" +#include "source_base/global_variable.h" +#include "source_base/global_function.h" + +namespace pw +{ + +void update_cell_pw(const UnitCell& ucell, + pseudopot_cell_vnl& ppcell, + const K_Vectors& kv, + ModulePW::PW_Basis_K* pw_wfc, + const Input_para& inp) +{ + ModuleBase::TITLE("pw", "update_cell_pw"); + + if (!ucell.cell_parameter_updated) + { + return; + } + + ppcell.rescale_vnl(ucell.omega); + ModuleBase::GlobalFunc::DONE(GlobalV::ofs_running, "NON-LOCAL POTENTIAL"); + + pw_wfc->initgrids(ucell.lat0, ucell.latvec, pw_wfc->nx, pw_wfc->ny, pw_wfc->nz); + pw_wfc->initparameters(false, inp.ecutwfc, kv.get_nks(), kv.kvec_d.data()); + pw_wfc->collect_local_pw(inp.erf_ecut, inp.erf_height, inp.erf_sigma); +} + +} diff --git a/source/source_pw/module_pwdft/update_cell_pw.h b/source/source_pw/module_pwdft/update_cell_pw.h new file mode 100644 index 0000000000..704d5b6f80 --- /dev/null +++ b/source/source_pw/module_pwdft/update_cell_pw.h @@ -0,0 +1,20 @@ +#ifndef UPDATE_CELL_PW_H +#define UPDATE_CELL_PW_H + +#include "source_io/module_parameter/parameter.h" +#include "source_cell/unitcell.h" +#include "source_cell/klist.h" +#include "source_basis/module_pw/pw_basis_k.h" +#include "source_pw/module_pwdft/vnl_pw.h" + +namespace pw +{ + +void update_cell_pw(const UnitCell& ucell, + pseudopot_cell_vnl& ppcell, + const K_Vectors& kv, + ModulePW::PW_Basis_K* pw_wfc, + const Input_para& inp); + +} +#endif diff --git a/source/source_pw/module_pwdft/vl_pw.cpp b/source/source_pw/module_pwdft/vl_pw.cpp new file mode 100644 index 0000000000..76ee526fbc --- /dev/null +++ b/source/source_pw/module_pwdft/vl_pw.cpp @@ -0,0 +1,278 @@ +#include "vl_pw.h" +#include "source_io/module_parameter/parameter.h" +#include "source_base/libm/libm.h" +#include "source_base/truncated_func.h" +#include "source_base/math_integral.h" +#include "source_base/timer.h" + +pseudopot_cell_vl::pseudopot_cell_vl() +{ + numeric = nullptr; + zp = nullptr; +} + +pseudopot_cell_vl::~pseudopot_cell_vl() +{ + delete[] numeric; + delete[] zp; +} + +void pseudopot_cell_vl::init_vloc(const UnitCell& ucell, + const ModulePW::PW_Basis* rho_basis) +{ + + ModuleBase::TITLE("pseudopot_cell_vl","init_vloc"); + + // This routine computes the fourier coefficient of the local + // potential vloc(ig,it) for each type of atom + ModuleBase::timer::tick("ppcell_vl","init_vloc"); + + double *vloc1d = new double[rho_basis->ngg]; + ModuleBase::GlobalFunc::ZEROS(vloc1d, rho_basis->ngg); + + this->allocate(ucell,rho_basis->ngg); + + for (int it = 0; it < ucell.ntype; it++) + { + const Atom* atom = &ucell.atoms[it]; + + ModuleBase::GlobalFunc::ZEROS(vloc1d, rho_basis->ngg); + + this->zp[it] = atom->ncpp.zv; + // compute V_loc(G) for a given type of atom + if(atom->coulomb_potential) + { + this->vloc_coulomb(ucell,this->zp[it], vloc1d, rho_basis); + } + else if(numeric[it]==true) + { + this->vloc_of_g( + atom->ncpp.msh, // after cutoff + atom->ncpp.rab.data(), + atom->ncpp.r.data(), + atom->ncpp.vloc_at.data(), // local potential in real space radial form. + this->zp[it], + vloc1d, + ucell, + rho_basis); + } + else + { + ModuleBase::WARNING_QUIT("init_vloc","not available now."); + } + + if(it>=0 && itvloc.nr && this->vloc.nc>=0) + { + ModuleBase::GlobalFunc::COPYARRAY(vloc1d, &this->vloc(it, 0), rho_basis->ngg); + } + } + + + delete[] vloc1d; + + this->print_vloc(ucell,rho_basis); + + ModuleBase::timer::tick("ppcell_vl","init_vloc"); + return; +} + + +void pseudopot_cell_vl::allocate(const UnitCell& ucell, + const int ngg) +{ + if(PARAM.inp.test_pp>0) + { + ModuleBase::TITLE("pseudopot_cell_vl","allocate"); + } + + this->vloc.create(ucell.ntype, ngg); + + delete[] numeric; + this->numeric = new bool[ucell.ntype]; + ModuleBase::GlobalFunc::ZEROS(numeric, ucell.ntype); + + for (int it = 0; it < ucell.ntype; it++) + { + this->numeric[it] = true; + } + + // mohan change global variable 'npsx' to local variable, + // npsx( max number of different PPs) + // 2021-02-22 + int npsx = 50; + delete[] zp; + this->zp = new double[npsx]; + ModuleBase::GlobalFunc::ZEROS(zp, npsx); + + return; +} + +void pseudopot_cell_vl::vloc_coulomb(const UnitCell& ucell, + const double& zp_in, + double* vloc_1d, + const ModulePW::PW_Basis* rho_basis) const +{ + int igl0 = 0; + // start from |G|=0 or not. + if (rho_basis->gg_uniq[0] < 1.0e-8) + { + igl0 = 1; + vloc_1d[0] = 0.0; + } + else + { + igl0 = 0; + } + const double d_fpi_omega = ModuleBase::FOUR_PI / ucell.omega; // mohan add 2008-06-04 + double fac = -zp_in * ModuleBase::e2 * d_fpi_omega; +#ifdef _OPENMP +#pragma omp for +#endif + for (int ig = igl0; ig < rho_basis->ngg; ig++) + { + double gx2 = rho_basis->gg_uniq[ig] * ucell.tpiba2; + vloc_1d[ig] = fac / gx2; + } + return; +} + +/*>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +! +! This code transfer local pseudopotential in real space +! radial logarithmic mesh to G space. +! +!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/ + + +// Here we always have numeric form, i.e. numeric=ture +void pseudopot_cell_vl::vloc_of_g(const int& msh, + const double* rab, + const double* r, + const double* vloc_at, + const double& zp_in, + double* vloc_1d, + const UnitCell& ucell, + const ModulePW::PW_Basis* rho_basis) const +{ + //---------------------------------------------------------------- + // This routine computes the Fourier transform of the local + // part of the pseudopotential. Two types of local potentials + // are allowed: + + // a) The pseudopotential is in analytic form and its fourier + // transform is computed analytically + // b) The pseudopotential is in numeric form and its fourier + // transform is computed numerically + // + // The local pseudopotential of the US case is always in + // numerical form, expressed in Ry units. + // ---------------------------------------------------------------- + int igl0=0;// start from |G|=0 or not. + + // Pseudopotentials in numerical form (Vloc_at) contain the local part + // in order to perform the Fourier transform, a term erf(r)/r is + // subtracted in real space and added again in G space + + assert(msh>0); + + double *aux1 = new double[msh]; + + // (1) + if(rho_basis->gg_uniq[0] < 1.0e-8) + { + double *aux = new double[msh]; + // first the g=0 term + for (int ir=0; ir0 terms, we first compute the part of the integrand func + // indipendent of |G| in real space + double fac = zp_in * ModuleBase::e2; + for (int ir = 0;ir < msh;ir++) + { + aux1 [ir] = r[ir] * vloc_at [ir] + fac * erf(r[ir]); + } + + // here we perform the integral, after multiplying for the |G| + // dependent part +#ifdef _OPENMP +#pragma omp parallel +{ +#endif + double *aux = new double[msh]; + +#ifdef _OPENMP +#pragma omp for +#endif + for (int ig = igl0;ig < rho_basis->ngg;ig++) + { + double gx2= rho_basis->gg_uniq[ig] * ucell.tpiba2; + double gx = std::sqrt(gx2); + for (int ir = 0;ir < msh;ir++) + { + aux [ir] = aux1 [ir] * ModuleBase::libm::sin(gx * r [ir]) / gx; + } + ModuleBase::Integral::Simpson_Integral(msh, aux, rab, vloc_1d[ig] ); + vloc_1d[ig] -= fac * ModuleBase::truncated_exp(- gx2 * 0.25)/ gx2; + } // enddo + + const double d_fpi_omega = ModuleBase::FOUR_PI/ucell.omega;//mohan add 2008-06-04 +#ifdef _OPENMP +#pragma omp for +#endif + for (int ig = 0;ig < rho_basis->ngg; ig++) + { + vloc_1d[ig] *= d_fpi_omega; + } + + delete [] aux; +#ifdef _OPENMP +} +#endif + + delete [] aux1; + return; +} // end subroutine vloc_of_g + + +void pseudopot_cell_vl::print_vloc(const UnitCell& ucell, + const ModulePW::PW_Basis* rho_basis) const +{ + if(GlobalV::MY_RANK!=0) + { + return; //mohan fix bug 2011-10-13 + } + + bool check_vl = PARAM.inp.out_element_info; + + if(check_vl) + { + for(int it=0; itngg;ig++) + { + ofs_vg << std::setw(15) << rho_basis->gg_uniq [ig] * ucell.tpiba2 + << std::setw(15) << this->vloc(it, ig) << std::endl; + } + ofs_vg.close(); + } + } + return; +} diff --git a/source/source_pw/module_pwdft/VL_in_pw.h b/source/source_pw/module_pwdft/vl_pw.h similarity index 100% rename from source/source_pw/module_pwdft/VL_in_pw.h rename to source/source_pw/module_pwdft/vl_pw.h diff --git a/source/source_pw/module_pwdft/vnl_pw.cpp b/source/source_pw/module_pwdft/vnl_pw.cpp new file mode 100644 index 0000000000..3a1fdda873 --- /dev/null +++ b/source/source_pw/module_pwdft/vnl_pw.cpp @@ -0,0 +1,1773 @@ +#include "vnl_pw.h" + +#include "source_io/module_parameter/parameter.h" +#include "source_base/clebsch_gordan_coeff.h" +#include "source_base/global_function.h" +#include "source_base/global_variable.h" +#include "source_base/math_integral.h" +#include "source_base/math_polyint.h" +#include "source_base/math_sphbes.h" +#include "source_base/math_ylmreal.h" +#include "source_base/memory.h" +#include "source_base/parallel_reduce.h" +#include "source_base/module_device/device.h" +#include "source_base/timer.h" +#include "source_pw/module_pwdft/kernels/vnl_op.h" + +#include "source_base/parallel_comm.h" // use POOL_WORLD + + +pseudopot_cell_vnl::pseudopot_cell_vnl() +{ + this->use_gpu_ = (PARAM.inp.device == "gpu"); +} + +pseudopot_cell_vnl::~pseudopot_cell_vnl() +{ + delete[] indv_ijkb0; +} + +void pseudopot_cell_vnl::release_memory() +{ + if (this->nhm <= 0 || memory_released) { + return; +} + if (this->use_gpu_) + { + delmem_sd_op()(this->s_deeq); + delmem_sd_op()(this->s_nhtol); + delmem_sd_op()(this->s_nhtolm); + delmem_sd_op()(this->s_indv); + delmem_sd_op()(this->s_tab); + delmem_sd_op()(this->s_qq_nt); + delmem_cd_op()(this->c_deeq_nc); + delmem_cd_op()(this->c_vkb); + delmem_cd_op()(this->c_qq_so); + delmem_zd_op()(this->z_deeq_nc); + delmem_zd_op()(this->z_qq_so); + delmem_dd_op()(this->d_deeq); + delmem_zd_op()(this->z_vkb); + delmem_dd_op()(this->d_tab); + delmem_dd_op()(this->d_indv); + delmem_dd_op()(this->d_nhtol); + delmem_dd_op()(this->d_nhtolm); + delmem_dd_op()(this->d_qq_nt); + } + else + { + delmem_sh_op()(this->s_deeq); + delmem_sh_op()(this->s_nhtol); + delmem_sh_op()(this->s_nhtolm); + delmem_sh_op()(this->s_indv); + delmem_sh_op()(this->s_tab); + delmem_sh_op()(this->s_qq_nt); + delmem_ch_op()(this->c_deeq_nc); + delmem_ch_op()(this->c_vkb); + delmem_ch_op()(this->c_qq_so); + // There's no need to delete double precision pointers while in a CPU environment. + } + memory_released = true; +} + +//----------------------------------- +// setup lmaxkb, nhm, nkb, lmaxq +// allocate vkb, PARAM.globalv.nqx, tab, tab_at +//----------------------------------- +void pseudopot_cell_vnl::init(const UnitCell& ucell, + Structure_Factor* psf_in, + const ModulePW::PW_Basis_K* wfc_basis, + const bool allocate_vkb) +{ + const int ntype = ucell.ntype; + ModuleBase::TITLE("pseudopot_cell_vnl", "init"); + ModuleBase::timer::tick("ppcell_vnl", "init"); + + GlobalV::ofs_running << "\n SETUP NONLOCAL PSEUDOPOTENTIALS IN PLANE WAVE BASIS" << std::endl; + + int it = 0; + this->wfcpw = wfc_basis; + this->psf = psf_in; + //---------------------------------------------------------- + // MEMBER VARIABLE : + // NAME : lmaxkb(max angular momentum,(see pseudo_h)) + //---------------------------------------------------------- + this->lmaxkb = -1; + for (it = 0; it < ntype; it++) + { + GlobalV::ofs_running << " " << ucell.atoms[it].label << " non-local projectors:" << std::endl; + for (int ibeta = 0; ibeta < ucell.atoms[it].ncpp.nbeta; ibeta++) + { + GlobalV::ofs_running << " projector " << ibeta + 1 << " L=" << ucell.atoms[it].ncpp.lll[ibeta] + << std::endl; + this->lmaxkb = std::max(this->lmaxkb, ucell.atoms[it].ncpp.lll[ibeta]); + } + } + + //---------------------------------------------------------- + // MEMBER VARIABLE : + // NAME : nhm(max number of different beta functions per atom) + // NAME : nbetam(max number of beta functions) + // NAME : nwfcm(max number of wavefunctions) + //---------------------------------------------------------- + this->nhm = 0; + this->nbetam = 0; + int nwfcm = 0; + for (it = 0; it < ntype; it++) + { + this->nhm = std::max(nhm, ucell.atoms[it].ncpp.nh); + this->nbetam = std::max(nbetam, ucell.atoms[it].ncpp.nbeta); + nwfcm = std::max(nwfcm, ucell.atoms[it].ncpp.nchi); + } + + //---------------------------------------------------------- + // MEMBER VARIABLE : + // NAME : nkb(total number of beta functions, with struct.fact.) + //---------------------------------------------------------- + this->nkb = 0; + for (it = 0; it < ntype; it++) + { + this->nkb += ucell.atoms[it].ncpp.nh * ucell.atoms[it].na; + } + + ModuleBase::GlobalFunc::OUT(GlobalV::ofs_running, "TOTAL NUMBER OF NONLOCAL PROJECTORS", nkb); + + if (this->nhm > 0) + { + this->indv.create(ntype, this->nhm); + this->nhtol.create(ntype, this->nhm); + this->nhtolm.create(ntype, this->nhm); + this->nhtoj.create(ntype, this->nhm); + this->deeq.create(PARAM.inp.nspin, ucell.nat, this->nhm, this->nhm); + this->deeq_nc.create(PARAM.inp.nspin, ucell.nat, this->nhm, this->nhm); + this->qq_nt.create(ntype, this->nhm, this->nhm); + this->qq_so.create(ntype, 4, this->nhm, this->nhm); + if (this->use_gpu_) + { + if (PARAM.globalv.has_float_data) + { + resmem_sd_op()(s_deeq, PARAM.inp.nspin * ucell.nat * this->nhm * this->nhm); + resmem_sd_op()(s_nhtol, ntype * this->nhm); + resmem_sd_op()(s_nhtolm, ntype * this->nhm); + resmem_sd_op()(s_indv, ntype * this->nhm); + resmem_sd_op()(s_qq_nt, ntype * this->nhm * this->nhm); + resmem_cd_op()(c_deeq_nc, PARAM.inp.nspin * ucell.nat * this->nhm * this->nhm); + resmem_cd_op()(c_qq_so, ntype * 4 * this->nhm * this->nhm); + } + if (PARAM.globalv.has_double_data) + { + resmem_zd_op()(z_deeq_nc, PARAM.inp.nspin * ucell.nat * this->nhm * this->nhm); + resmem_zd_op()(z_qq_so, ntype * 4 * this->nhm * this->nhm); + } + resmem_dd_op()(d_deeq, PARAM.inp.nspin * ucell.nat * this->nhm * this->nhm); + resmem_dd_op()(d_indv, ntype * this->nhm); + resmem_dd_op()(d_nhtol, ntype * this->nhm); + resmem_dd_op()(d_nhtolm, ntype * this->nhm); + resmem_dd_op()(d_qq_nt, ntype * this->nhm * this->nhm); + } + else + { + if (PARAM.globalv.has_float_data) + { + resmem_sh_op()(s_deeq, + PARAM.inp.nspin * ucell.nat * this->nhm * this->nhm, + "VNL::s_deeq"); + resmem_sh_op()(s_nhtol, ntype * this->nhm, "VNL::s_nhtol"); + resmem_sh_op()(s_nhtolm, ntype * this->nhm, "VNL::s_nhtolm"); + resmem_sh_op()(s_indv, ntype * this->nhm, "VNL::s_indv"); + resmem_sh_op()(s_qq_nt, ntype * this->nhm * this->nhm, "VNL::s_qq_nt"); + resmem_ch_op()(c_deeq_nc, + PARAM.inp.nspin * ucell.nat * this->nhm * this->nhm, + "VNL::c_deeq_nc"); + resmem_ch_op()(c_qq_so, ntype * 4 * this->nhm * this->nhm, "VNL::c_qq_so"); + } + if (PARAM.globalv.has_double_data) + { + this->z_deeq_nc = this->deeq_nc.ptr; + this->z_qq_so = this->qq_so.ptr; + } + this->d_deeq = this->deeq.ptr; + this->d_indv = this->indv.c; + this->d_nhtol = this->nhtol.c; + this->d_nhtolm = this->nhtolm.c; + this->d_qq_nt = this->qq_nt.ptr; + // There's no need to delete double precision pointers while in a CPU environment. + } + this->dvan.create(ntype, this->nhm, this->nhm); + this->dvan_so.create(PARAM.inp.nspin, ntype, this->nhm, this->nhm); + + this->ijtoh.create(ntype, this->nhm, this->nhm); + this->qq_at.create(ucell.nat, this->nhm, this->nhm); + } + else + { + GlobalV::ofs_running << "\n nhm = 0, not allocate some matrix."; + } + + // nqxq = ((sqrt(gcutm)+sqrt(xqq[1]*xqq[1]+xqq[2]*xqq[2]+xqq[3]*xqq[3])/ + // dq+4)*cell_factor; + this->lmaxq = 2 * this->lmaxkb + 1; + int npwx = this->wfcpw->npwk_max; + if (nkb > 0 && allocate_vkb) + { + vkb.create(nkb, npwx); + ModuleBase::Memory::record("VNL::vkb", nkb * npwx * sizeof(std::complex)); + } + + // this->nqx = 10000; // calculted in allocate_nlpot.f90 + // PARAM.globalv.nqxq = static_cast(((sqrt(INPUT.ecutrho) + qnorm) / PARAM.globalv.dq + 4.0) * cell_factor); + + // mohan update 2021-02-22 + // liuyu update 2023-09-28 + if (nbetam > 0) + { + const int nbrx_nc = 2 * nbetam; + // nbetam: max number of beta functions + if (PARAM.inp.nspin != 4) + { + this->tab.create(ntype, nbetam, PARAM.globalv.nqx); + ModuleBase::Memory::record("VNL::tab", ntype * nbetam * PARAM.globalv.nqx * sizeof(double)); + } + else + { + this->tab.create(ntype, nbrx_nc, PARAM.globalv.nqx); + ModuleBase::Memory::record("VNL::tab", ntype * nbrx_nc * PARAM.globalv.nqx * sizeof(double)); + } + + if (lmaxq > 0) + { + this->qrad.create(ntype, lmaxq, nbetam * (nbetam + 1) / 2, PARAM.globalv.nqxq); + } + } + + // mohan update 2021-02-22 + // liuyu update 2023-09-28 + if (nwfcm > 0) + { + int nchix_nc = 2 * nwfcm; + // nwfcm : max number of atomic wavefunctions per atom + if (PARAM.inp.nspin != 4) + { + this->tab_at.create(ntype, nwfcm, PARAM.globalv.nqx); + ModuleBase::Memory::record("VNL::tab_at", ntype * nwfcm * PARAM.globalv.nqx * sizeof(double)); + } + else + { + this->tab_at.create(ntype, nchix_nc, PARAM.globalv.nqx); + ModuleBase::Memory::record("VNL::tab_at", ntype * nchix_nc * PARAM.globalv.nqx * sizeof(double)); + } + } + if (this->use_gpu_) + { + if (PARAM.globalv.has_float_data) + { + resmem_sd_op()(s_tab, this->tab.getSize()); + resmem_cd_op()(c_vkb, nkb * npwx); + } + resmem_zd_op()(z_vkb, nkb * npwx); + resmem_dd_op()(d_tab, this->tab.getSize()); + } + else + { + if (PARAM.globalv.has_float_data) + { + resmem_sh_op()(s_tab, this->tab.getSize()); + resmem_ch_op()(c_vkb, nkb * npwx); + } + #ifdef __DSP + base_device::memory::resize_memory_op_mt, base_device::DEVICE_CPU>() + (this->z_vkb, this->vkb.size, "Nonlocal::ps"); + memcpy(this->z_vkb,this->vkb.c,this->vkb.size*16); + #else + this->z_vkb = this->vkb.c; + #endif + this->d_tab = this->tab.ptr; + // There's no need to delete double precision pointers while in a CPU environment. + } + + ModuleBase::timer::tick("ppcell_vnl", "init"); + return; +} + +//---------------------------------------------------------- +// Calculates beta functions (Kleinman-Bylander projectors), +// with structure factor, for all atoms, in reciprocal space +//---------------------------------------------------------- +template +void pseudopot_cell_vnl::getvnl(Device* ctx, + const UnitCell& ucell, + const int& ik, + std::complex* vkb_in) const +{ + if (PARAM.inp.test_pp) + { + ModuleBase::TITLE("pseudopot_cell_vnl", "getvnl"); + } + ModuleBase::timer::tick("pp_cell_vnl", "getvnl"); + + using cal_vnl_op = hamilt::cal_vnl_op; + using resmem_int_op = base_device::memory::resize_memory_op; + using delmem_int_op = base_device::memory::delete_memory_op; + using syncmem_int_op = base_device::memory::synchronize_memory_op; + using resmem_var_op = base_device::memory::resize_memory_op; + using delmem_var_op = base_device::memory::delete_memory_op; + using castmem_var_h2d_op = base_device::memory::cast_memory_op; + using castmem_var_h2h_op + = base_device::memory::cast_memory_op; + using resmem_complex_op = base_device::memory::resize_memory_op, Device>; + using delmem_complex_op = base_device::memory::delete_memory_op, Device>; + + if (lmaxkb < 0) + { + return; + } + + const int x1 = (lmaxkb + 1) * (lmaxkb + 1); + const int npw = this->wfcpw->npwk[ik]; + + int *atom_nh = nullptr, *atom_na = nullptr, *atom_nb = nullptr, *h_atom_nh = new int[ucell.ntype], + *h_atom_na = new int[ucell.ntype], *h_atom_nb = new int[ucell.ntype]; + for (int it = 0; it < ucell.ntype; it++) + { + h_atom_nb[it] = ucell.atoms[it].ncpp.nbeta; + h_atom_nh[it] = ucell.atoms[it].ncpp.nh; + h_atom_na[it] = ucell.atoms[it].na; + } + // When the internal memory is large enough, it is better to make vkb1 be the number of pseudopot_cell_vnl. + // We only need to initialize it once as long as the cell is unchanged. + FPTYPE *vkb1 = nullptr, *gk = nullptr, *ylm = nullptr, *_tab = this->get_tab_data(), + *_indv = this->get_indv_data(), *_nhtol = this->get_nhtol_data(), + *_nhtolm = this->get_nhtolm_data(); + resmem_var_op()(ylm, x1 * npw, "VNL::ylm"); + resmem_var_op()(vkb1, nhm * npw, "VNL::vkb1"); + + ModuleBase::Vector3* _gk = new ModuleBase::Vector3[npw]; +#ifdef _OPENMP +#pragma omp parallel for schedule(static) +#endif + for (int ig = 0; ig < npw; ig++) + { + _gk[ig] = this->wfcpw->getgpluskcar(ik, ig); + } + if (this->use_gpu_) + { + resmem_int_op()(atom_nh, ucell.ntype); + resmem_int_op()(atom_nb, ucell.ntype); + resmem_int_op()(atom_na, ucell.ntype); + syncmem_int_op()(atom_nh, h_atom_nh, ucell.ntype); + syncmem_int_op()(atom_nb, h_atom_nb, ucell.ntype); + syncmem_int_op()(atom_na, h_atom_na, ucell.ntype); + + resmem_var_op()(gk, npw * 3); + castmem_var_h2d_op()(gk, reinterpret_cast(_gk), npw * 3); + } + else + { + atom_nh = h_atom_nh; + atom_nb = h_atom_nb; + atom_na = h_atom_na; + if (std::is_same::value) + { + resmem_var_op()(gk, npw * 3); + castmem_var_h2h_op()(gk, reinterpret_cast(_gk), npw * 3); + } + else + { + gk = reinterpret_cast(_gk); + } + } + + ModuleBase::YlmReal::Ylm_Real(ctx, x1, npw, gk, ylm); + + std::complex* sk = nullptr; + resmem_complex_op()(sk, ucell.nat * npw); + this->psf->get_sk(ctx, ik, this->wfcpw, sk); + + cal_vnl_op()(ctx, + ucell.ntype, + npw, + this->wfcpw->npwk_max, + this->nhm, + this->tab.getBound2(), + this->tab.getBound3(), + atom_na, + atom_nb, + atom_nh, + static_cast(PARAM.globalv.dq), + static_cast(ucell.tpiba), + static_cast>(ModuleBase::NEG_IMAG_UNIT), + gk, + ylm, + _indv, + _nhtol, + _nhtolm, + _tab, + vkb1, + sk, + vkb_in); + + delete[] _gk; + delete[] h_atom_nh; + delete[] h_atom_na; + delete[] h_atom_nb; + delmem_var_op()(ylm); + delmem_var_op()(vkb1); + delmem_complex_op()(sk); + if (this->use_gpu_ || std::is_same::value) + { + delmem_var_op()(gk); + } + if (this->use_gpu_) + { + delmem_int_op()(atom_nh); + delmem_int_op()(atom_nb); + delmem_int_op()(atom_na); + } + ModuleBase::timer::tick("pp_cell_vnl", "getvnl"); +} // end subroutine getvnl + +void pseudopot_cell_vnl::init_vnl(UnitCell& cell, const ModulePW::PW_Basis* rho_basis) +{ + ModuleBase::TITLE("pseudopot_cell_vnl", "init_vnl"); + ModuleBase::timer::tick("ppcell_vnl", "init_vnl"); + + this->omega_old = cell.omega; + + // from init_us_1 + // a) For each non vanderbilt pseudopotential it computes the D and + // the betar in the same form of the Vanderbilt pseudopotential. + // b) It computes the indices indv which establish the correspondence + // nh <-> beta in the atom + // c) It computes the indices nhtol which establish the correspondence + // nh <-> angular momentum of the beta function + // d) It computes the indices nhtolm which establish the correspondence + // nh <-> combined (l,m) index for the beta function. + + // the following prevents an out-of-bound error: upf(nt)%nqlc=2*lmax+1 + // but in some versions of the PP files lmax is not set to the maximum + // l of the beta functions but includes the l of the local potential + for (int it = 0; it < cell.ntype; it++) + { + if (cell.atoms[it].ncpp.tvanp) + { + cell.atoms[it].ncpp.nqlc = std::min(cell.atoms[it].ncpp.nqlc, lmaxq); + if (cell.atoms[it].ncpp.nqlc < 0) { + cell.atoms[it].ncpp.nqlc = 0; +} + } + } + + // In the spin-orbit case we need the unitary matrix u which rotates the + // real spherical harmonics and yields the complex ones. + soc.fcoef.create(cell.ntype, this->nhm, this->nhm); + if (PARAM.inp.lspinorb) + { + soc.rot_ylm(this->lmaxkb); + } + + // For each pseudopotential we initialize the indices nhtol, nhtolm, + // nhtoj, indv, and if the pseudopotential is of KB type we initialize + // the atomic D terms + this->dvan.zero_out(); + this->dvan_so.zero_out(); // added by zhengdy-soc + delete[] indv_ijkb0; + this->indv_ijkb0 = new int[cell.nat]; + int ijkb0 = 0; + for (int it = 0; it < cell.ntype; it++) + { + int BetaIndex = 0; + const int Nprojectors = cell.atoms[it].ncpp.nh; + for (int ib = 0; ib < cell.atoms[it].ncpp.nbeta; ib++) + { + const int l = cell.atoms[it].ncpp.lll[ib]; + const double j = cell.atoms[it].ncpp.jjj[ib]; + for (int m = 0; m < 2 * l + 1; m++) + { + this->nhtol(it, BetaIndex) = l; + this->nhtolm(it, BetaIndex) = l * l + m; + this->nhtoj(it, BetaIndex) = j; + this->indv(it, BetaIndex) = ib; + ++BetaIndex; + } + } + + // ijtoh map augmentation channel indexes ih and jh to composite + // "triangular" index ijh + for (int ih1 = 0; ih1 < nhm; ih1++) + { + for (int ih2 = ih1; ih2 < nhm; ih2++) + { + this->ijtoh(it, ih1, ih2) = -1; + this->ijtoh(it, ih2, ih1) = -1; + } + } + int ijv = 0; + for (int ih1 = 0; ih1 < Nprojectors; ih1++) + { + for (int ih2 = ih1; ih2 < Nprojectors; ih2++) + { + ijv++; // liuyu I'm not sure from 0 or 1 + this->ijtoh(it, ih1, ih2) = ijv; + this->ijtoh(it, ih2, ih1) = ijv; + } + } + + // ijkb0 points to the first beta "in the solid" for atom ia + // i.e. ijkb0,.. ijkb0+nh(ityp(ia))-1 are the nh beta functions of + // atom ia in the global list of beta functions (ijkb0=0 for ia=0) + for (int ia = 0; ia < cell.nat; ia++) + { + if (it == cell.iat2it[ia]) + { + this->indv_ijkb0[ia] = ijkb0; + ijkb0 += Nprojectors; + } + } + + // From now on the only difference between KB and US pseudopotentials + // is in the presence of the q and Q functions. + // Here we initialize the D of the solid + if (cell.atoms[it].ncpp.has_so) + { + for (int ip = 0; ip < Nprojectors; ip++) + { + const int l1 = this->nhtol(it, ip); + const double j1 = this->nhtoj(it, ip); + const int m1 = this->nhtolm(it, ip) - l1 * l1; + // const int v1 = static_cast( indv(it, ip ) ); + for (int ip2 = 0; ip2 < Nprojectors; ip2++) + { + const int l2 = this->nhtol(it, ip2); + const double j2 = this->nhtoj(it, ip2); + const int m2 = this->nhtolm(it, ip2) - l2 * l2; + // const int v2 = static_cast( indv(it, ip2 ) ); + if (l1 == l2 && fabs(j1 - j2) < 1e-7) + { + for (int is1 = 0; is1 < 2; is1++) + { + for (int is2 = 0; is2 < 2; is2++) + { + soc.set_fcoef(l1, l2, is1, is2, m1, m2, j1, j2, it, ip, ip2); + } + } + } + } + } + // + // and calculate the bare coefficients + // + for (int ip = 0; ip < Nprojectors; ++ip) + { + const int ir = static_cast(indv(it, ip)); + for (int ip2 = 0; ip2 < Nprojectors; ++ip2) + { + const int is = static_cast(indv(it, ip2)); + int ijs = 0; + for (int is1 = 0; is1 < 2; ++is1) + { + for (int is2 = 0; is2 < 2; ++is2) + { + this->dvan_so(ijs, it, ip, ip2) + = cell.atoms[it].ncpp.dion(ir, is) * soc.fcoef(it, is1, is2, ip, ip2); + ++ijs; + if (ir != is) { + soc.fcoef(it, is1, is2, ip, ip2) = std::complex(0.0, 0.0); +} + } + } + } + } + } + else { + for (int ip = 0; ip < Nprojectors; ip++) + { + for (int ip2 = 0; ip2 < Nprojectors; ip2++) + { + if (this->nhtol(it, ip) == nhtol(it, ip2) && this->nhtolm(it, ip) == nhtolm(it, ip2)) + { + const int ir = static_cast(indv(it, ip)); + const int is = static_cast(indv(it, ip2)); + if (PARAM.inp.lspinorb) + { + this->dvan_so(0, it, ip, ip2) = cell.atoms[it].ncpp.dion(ir, is); + this->dvan_so(3, it, ip, ip2) = cell.atoms[it].ncpp.dion(ir, is); + } + else + { + this->dvan(it, ip, ip2) = cell.atoms[it].ncpp.dion(ir, is); + } + } + } + } +} + } + + // e) It computes the coefficients c_{LM}^{nm} which relates the + // spherical harmonics in the Q expansion + // f) It computes the interpolation table "qrad" for Q(G) + // g) It computes the qq terms which define the S matrix. + + // compute Clebsch-Gordan coefficients + if (PARAM.globalv.use_uspp) + { + ModuleBase::Clebsch_Gordan::clebsch_gordan(lmaxkb + 1, ap, lpx, lpl); + } + + // here for the US types we compute the Fourier transform of the Q functions. + if (lmaxq > 0) + { + this->compute_qrad(cell); + } + + // compute the qq coefficients by integrating the Q. + // The qq are the g=0 components of Q + if (rho_basis->ig_gge0 >= 0) + { + ModuleBase::matrix ylmk0(lmaxq * lmaxq, 1); + const double qnorm = 0.0; // only G=0 term + std::complex qgm(0.0, 0.0); + ModuleBase::YlmReal::Ylm_Real(lmaxq * lmaxq, 1, &(rho_basis->gcar[rho_basis->ig_gge0]), ylmk0); + for (int it = 0; it < cell.ntype; it++) + { + Atom_pseudo* upf = &cell.atoms[it].ncpp; + if (upf->tvanp) + { + if (upf->has_so) + { + for (int ih = 0; ih < upf->nh; ih++) + { + for (int jh = 0; jh < upf->nh; jh++) + { + this->radial_fft_q(1, ih, jh, it, &qnorm, ylmk0, &qgm); + this->qq_nt(it, ih, jh) = cell.omega * qgm.real(); + for (int kh = 0; kh < upf->nh; kh++) + { + for (int lh = 0; lh < upf->nh; lh++) + { + int ijs = 0; + for (int is1 = 0; is1 < 2; ++is1) + { + for (int is2 = 0; is2 < 2; ++is2) + { + for (int is = 0; is < 2; is++) + { + this->qq_so(it, ijs, kh, lh) += cell.omega * qgm.real() + * soc.fcoef(it, is1, is, kh, ih) + * soc.fcoef(it, is, is2, jh, lh); + } + } + } + } + } + } + } + } + else + { + for (int ih = 0; ih < upf->nh; ih++) + { + for (int jh = ih; jh < upf->nh; jh++) + { + this->radial_fft_q(1, ih, jh, it, &qnorm, ylmk0, &qgm); + if (PARAM.inp.lspinorb) + { + this->qq_so(it, 0, ih, jh) = cell.omega * qgm.real(); + this->qq_so(it, 0, jh, ih) = this->qq_so(it, 0, ih, jh); + this->qq_so(it, 3, ih, jh) = this->qq_so(it, 0, ih, jh); + this->qq_so(it, 3, jh, ih) = this->qq_so(it, 0, ih, jh); + } + this->qq_nt(it, ih, jh) = cell.omega * qgm.real(); + this->qq_nt(it, jh, ih) = cell.omega * qgm.real(); + } + } + } + } + } + } + +#ifdef __MPI + Parallel_Reduce::reduce_pool(this->qq_nt.ptr, this->qq_nt.getSize()); + Parallel_Reduce::reduce_pool(this->qq_so.ptr, this->qq_so.getSize()); +#endif + + // set the atomic specific qq_at matrices + for (int ia = 0; ia < cell.nat; ia++) + { + int it = cell.iat2it[ia]; + for (int ih = 0; ih < nhm; ih++) + { + for (int jh = ih; jh < nhm; jh++) + { + this->qq_at(ia, ih, jh) = qq_nt(it, ih, jh); + this->qq_at(ia, jh, ih) = qq_nt(it, jh, ih); + } + } + } + + // h) It fills the interpolation table for the beta functions + /********************************************************** + // He Lixin: this block is used for non-local potential + // fill the interpolation table tab + ************************************************************/ + + const double pref = ModuleBase::FOUR_PI / sqrt(cell.omega); + this->tab.zero_out(); + GlobalV::ofs_running << "\n Init Non-Local PseudoPotential table : "; + for (int it = 0; it < cell.ntype; it++) + { + const int nbeta = cell.atoms[it].ncpp.nbeta; + int kkbeta = cell.atoms[it].ncpp.kkbeta; + + // mohan modify 2008-3-31 + // mohan add kkbeta>0 2009-2-27 + if ((kkbeta % 2 == 0) && kkbeta > 0) + { + kkbeta--; + } + + double* jl = new double[kkbeta]; + double* aux = new double[kkbeta]; + for (int ib = 0; ib < nbeta; ib++) + { + const int l = cell.atoms[it].ncpp.lll[ib]; + for (int iq = 0; iq < PARAM.globalv.nqx; iq++) + { + const double q = iq * PARAM.globalv.dq; + ModuleBase::Sphbes::Spherical_Bessel(kkbeta, cell.atoms[it].ncpp.r.data(), q, l, jl); + for (int ir = 0; ir < kkbeta; ir++) + { + aux[ir] = cell.atoms[it].ncpp.betar(ib, ir) * jl[ir] * cell.atoms[it].ncpp.r[ir]; + } + double vqint=0.0; + ModuleBase::Integral::Simpson_Integral(kkbeta, aux, cell.atoms[it].ncpp.rab.data(), vqint); + this->tab(it, ib, iq) = vqint * pref; + } + } + delete[] aux; + delete[] jl; + } + if (this->use_gpu_) + { + if (PARAM.globalv.has_float_data) + { + castmem_d2s_h2d_op()(this->s_indv, this->indv.c, this->indv.nr * this->indv.nc); + castmem_d2s_h2d_op()(this->s_nhtol, this->nhtol.c, this->nhtol.nr * this->nhtol.nc); + castmem_d2s_h2d_op()(this->s_nhtolm, this->nhtolm.c, this->nhtolm.nr * this->nhtolm.nc); + castmem_d2s_h2d_op()(this->s_tab, this->tab.ptr, this->tab.getSize()); + castmem_d2s_h2d_op()(this->s_qq_nt, this->qq_nt.ptr, this->qq_nt.getSize()); + castmem_z2c_h2d_op()(this->c_qq_so, this->qq_so.ptr, this->qq_so.getSize()); + } + if (PARAM.globalv.has_double_data) + { + syncmem_z2z_h2d_op()(this->z_qq_so, this->qq_so.ptr, this->qq_so.getSize()); + } + // Even when the single precision flag is enabled, + // these variables are utilized in the Force/Stress calculation as well. + // modified by denghuilu at 2023-05-15 + syncmem_d2d_h2d_op()(this->d_indv, this->indv.c, this->indv.nr * this->indv.nc); + syncmem_d2d_h2d_op()(this->d_nhtol, this->nhtol.c, this->nhtol.nr * this->nhtol.nc); + syncmem_d2d_h2d_op()(this->d_nhtolm, this->nhtolm.c, this->nhtolm.nr * this->nhtolm.nc); + syncmem_d2d_h2d_op()(this->d_tab, this->tab.ptr, this->tab.getSize()); + syncmem_d2d_h2d_op()(this->d_qq_nt, this->qq_nt.ptr, this->qq_nt.getSize()); + } + else + { + if (PARAM.globalv.has_float_data) + { + castmem_d2s_h2h_op()(this->s_indv, this->indv.c, this->indv.nr * this->indv.nc); + castmem_d2s_h2h_op()(this->s_nhtol, this->nhtol.c, this->nhtol.nr * this->nhtol.nc); + castmem_d2s_h2h_op()(this->s_nhtolm, this->nhtolm.c, this->nhtolm.nr * this->nhtolm.nc); + castmem_d2s_h2h_op()(this->s_tab, this->tab.ptr, this->tab.getSize()); + castmem_d2s_h2h_op()(this->s_qq_nt, this->qq_nt.ptr, this->qq_nt.getSize()); + castmem_z2c_h2h_op()(this->c_qq_so, this->qq_so.ptr, this->qq_so.getSize()); + } + // There's no need to synchronize double precision pointers while in a CPU environment. + } + ModuleBase::timer::tick("ppcell_vnl", "init_vnl"); + GlobalV::ofs_running << "\n Init Non-Local-Pseudopotential done." << std::endl; + return; +} + +void pseudopot_cell_vnl::compute_qrad(UnitCell& cell) +{ + const double pref = ModuleBase::FOUR_PI / cell.omega; + + for (int it = 0; it < cell.ntype; it++) + { + Atom_pseudo* upf = &cell.atoms[it].ncpp; + if (upf->tvanp) + { + const int nbeta = upf->nbeta; + int kkbeta = upf->kkbeta; + if ((kkbeta % 2 == 0) && kkbeta > 0) + { + kkbeta--; + } + double* aux = new double[kkbeta]; + double* besr = new double[kkbeta]; + + for (int l = 0; l < upf->nqlc; l++) + { + for (int iq = 0; iq < PARAM.globalv.nqxq; iq++) + { + const double q = iq * PARAM.globalv.dq; + // here we compute the spherical bessel function for each q_i + ModuleBase::Sphbes::Spherical_Bessel(kkbeta, upf->r.data(), q, l, besr); + for (int nb = 0; nb < nbeta; nb++) + { + // the Q are symmetric with respect to indices nb and mb + for (int mb = nb; mb < nbeta; mb++) + { + const int ijv = mb * (mb + 1) / 2 + nb; + if ((l >= std::abs(upf->lll[nb] - upf->lll[mb])) && (l <= (upf->lll[nb] + upf->lll[mb])) + && ((l + upf->lll[nb] + upf->lll[mb]) % 2 == 0)) + { + for (int ir = 0; ir < kkbeta; ir++) + { + aux[ir] = besr[ir] * upf->qfuncl(l, ijv, ir); + } + // then we integrate with all the Q functions + double vqint = 0.0; + ModuleBase::Integral::Simpson_Integral(kkbeta, aux, upf->rab.data(), vqint); + qrad(it, l, ijv, iq) = vqint * pref; + } + } + } + } + } + delete[] aux; + delete[] besr; + } + } +} + +void pseudopot_cell_vnl::radial_fft_q(const int ng, + const int ih, + const int jh, + const int itype, + const double* qnorm, + const ModuleBase::matrix ylm, + std::complex* qg) const +{ + // computes the indices which correspond to ih,jh + const int nb = indv(itype, ih); + const int mb = indv(itype, jh); + assert(nb < nbetam); + assert(mb < nbetam); + int ijv = 0; + if (nb >= mb) + { + ijv = nb * (nb + 1) / 2 + mb; + } + else + { + ijv = mb * (mb + 1) / 2 + nb; + } + const int ivl = nhtolm(itype, ih); + const int jvl = nhtolm(itype, jh); + + for (int ig = 0; ig < ng; ig++) + { + qg[ig] = {0, 0}; + } + // makes the sum over the non zero LM + int l = -1; + std::complex pref(0.0, 0.0); + for (int lm = 0; lm < this->lpx(ivl, jvl); lm++) + { + int lp = this->lpl(ivl, jvl, lm); + assert(lp >= 0); + assert(lp < 49); + if (lp == 0) + { + l = 0; + } + else if (lp < 4) + { + l = 1; + } + else if (lp < 9) + { + l = 2; + } + else if (lp < 16) + { + l = 3; + } + else if (lp < 25) + { + l = 4; + } + else if (lp < 36) + { + l = 5; + } + else + { + l = 6; + } + pref = pow(ModuleBase::NEG_IMAG_UNIT, l) * this->ap(lp, ivl, jvl); + + double qm1 = -1.0; // any number smaller than qnorm + double work = 0.0; + for (int ig = 0; ig < ng; ig++) + { + // calculate quantites depending on the module of G only when needed + if (std::abs(qnorm[ig] - qm1) > 1e-6) + { + work = ModuleBase::PolyInt::Polynomial_Interpolation(this->qrad, + itype, + l, + ijv, + PARAM.globalv.nqxq, + PARAM.globalv.dq, + qnorm[ig]); + qm1 = qnorm[ig]; + } + qg[ig] += pref * work * ylm(lp, ig); + } + } +} + +template +void pseudopot_cell_vnl::radial_fft_q(Device* ctx, + const int ng, + const int ih, + const int jh, + const int itype, + const FPTYPE* qnorm, + const FPTYPE* ylm, + std::complex* qg) const +{ + using setmem_complex_op = base_device::memory::set_memory_op, Device>; + + // computes the indices which correspond to ih,jh + const int nb = indv(itype, ih); + const int mb = indv(itype, jh); + assert(nb < nbetam); + assert(mb < nbetam); + int ijv = 0; + if (nb >= mb) + { + ijv = nb * (nb + 1) / 2 + mb; + } + else + { + ijv = mb * (mb + 1) / 2 + nb; + } + const int ivl = nhtolm(itype, ih); + const int jvl = nhtolm(itype, jh); + + setmem_complex_op()(qg, 0, ng); + + const double* qnorm_double = reinterpret_cast(qnorm); + + // makes the sum over the non zero LM + int l = -1; + std::complex pref(0.0, 0.0); + for (int lm = 0; lm < this->lpx(ivl, jvl); lm++) + { + int lp = this->lpl(ivl, jvl, lm); + assert(lp >= 0); + assert(lp < 49); + if (lp == 0) + { + l = 0; + } + else if (lp < 4) + { + l = 1; + } + else if (lp < 9) + { + l = 2; + } + else if (lp < 16) + { + l = 3; + } + else if (lp < 25) + { + l = 4; + } + else if (lp < 36) + { + l = 5; + } + else + { + l = 6; + } + pref = static_cast>(pow(ModuleBase::NEG_IMAG_UNIT, l) * this->ap(lp, ivl, jvl)); + + double qm1 = -1.0; // any number smaller than qnorm + double work = 0.0; + for (int ig = 0; ig < ng; ig++) + { + if (std::abs(qnorm_double[ig] - qm1) > 1e-6) + { + work = ModuleBase::PolyInt::Polynomial_Interpolation(this->qrad, + itype, + l, + ijv, + PARAM.globalv.nqxq, + PARAM.globalv.dq, + qnorm_double[ig]); + qm1 = qnorm_double[ig]; + } + qg[ig] += pref * static_cast(work) * ylm[lp * ng + ig]; + } + } +} + +#ifdef __LCAO +std::complex pseudopot_cell_vnl::Cal_C(int alpha, int lu, int mu, int L, int M) // pengfei Li 2018-3-23 +{ + std::complex cf; + if (alpha == 0) + { + cf = -sqrt(4 * ModuleBase::PI / 3) * CG(lu, mu, 1, 1, L, M); + } + else if (alpha == 1) + { + cf = -sqrt(4 * ModuleBase::PI / 3) * CG(lu, mu, 1, 2, L, M); + } + else if (alpha == 2) + { + cf = sqrt(4 * ModuleBase::PI / 3) * CG(lu, mu, 1, 0, L, M); + } + else + { + ModuleBase::WARNING_QUIT("pseudopot_cell_vnl_alpha", "alpha must be 0~2"); + } + + return cf; +} + +double pseudopot_cell_vnl::CG(int l1, int m1, int l2, int m2, int L, int M) // pengfei Li 2018-3-23 +{ + int dim = L * L + M; + int dim1 = l1 * l1 + m1; + int dim2 = l2 * l2 + m2; + + // double A = MGT.Gaunt_Coefficients(dim1, dim2, dim); + + return MGT.Gaunt_Coefficients(dim1, dim2, dim); +} + +// void pseudopot_cell_vnl::getvnl_alpha(const int &ik) // pengfei Li 2018-3-23 +// { +// if(PARAM.inp.test_pp) ModuleBase::TITLE("pseudopot_cell_vnl","getvnl_alpha"); +// ModuleBase::timer::tick("pp_cell_vnl","getvnl_alpha"); + +// if(lmaxkb < 0) +// { +// return; +// } + +// const int npw = this->wfcpw->npwk[ik]; +// int ig, ia, nb, ih, lu, mu; + +// double *vq = new double[npw]; +// const int x1= (lmaxkb + 2)*(lmaxkb + 2); + +// ModuleBase::matrix ylm(x1, npw); +// ModuleBase::Vector3 *gk = new ModuleBase::Vector3[npw]; +// for (ig = 0;ig < npw;ig++) +// { +// gk[ig] = this->wfcpw->getgpluskcar(ik,ig); +// } + +// vkb1_alpha = new std::complex**[3]; +// for(int i=0; i<3; i++) +// { +// vkb1_alpha[i] = new std::complex*[nhm]; +// for(int j=0; j[npw]; +// } +// } + +// vkb_alpha = new std::complex**[3]; +// for(int i=0; i<3; i++) +// { +// vkb_alpha[i] = new std::complex*[nkb]; +// for(int j=0; j[this->wfcpw->npwk_max]; +// } +// } + +// ModuleBase::YlmReal::Ylm_Real(x1, npw, gk, ylm); + +// MGT.init_Gaunt_CH( lmaxkb + 2 ); +// MGT.init_Gaunt( lmaxkb + 2 ); + +// int jkb = 0; +// for(int it = 0;it < ucell.ntype;it++) +// { +// if(PARAM.inp.test_pp>1) ModuleBase::GlobalFunc::OUT("it",it); +// // calculate beta in G-space using an interpolation table +// const int nbeta = ucell.atoms[it].ncpp.nbeta; +// const int nh = ucell.atoms[it].ncpp.nh; + +// if(PARAM.inp.test_pp>1) ModuleBase::GlobalFunc::OUT("nbeta",nbeta); + +// for(int i=0; i<3; i++) +// for(int j=0; j( nhtol(it, ih)); +// mu = static_cast( nhtolm(it, ih)) - lu * lu; +// nb = static_cast( indv(it, ih)); + +// for (int L= std::abs(lu - 1); L<= (lu + 1); L++) +// { +// for (ig = 0;ig < npw;ig++) +// { +// const double gnorm = gk[ig].norm() * ucell.tpiba; +// vq [ig] = ModuleBase::PolyInt::Polynomial_Interpolation( +// this->tab_alpha, it, nb, L, PARAM.globalv.nqx, PARAM.globalv.dq, gnorm); + +// for (int M=0; M<2*L+1; M++) +// { +// int lm = L*L + M; +// for (int alpha=0; alpha<3; alpha++) +// { +// std::complex c = Cal_C(alpha,lu, mu, L, M); +// /*if(alpha == 0) +// { +// std::cout<<"lu= "< *sk = this->psf->get_sk(ik, it, ia,this->wfcpw); +// for (ih = 0;ih < nh;ih++) +// { +// for (ig = 0;ig < npw;ig++) +// { +// for(int alpha=0; alpha<3; alpha++) +// { +// vkb_alpha[alpha][jkb][ig] = vkb1_alpha[alpha][ih][ig] * sk [ig]; +// } +// } +// ++jkb; +// } // end ih +// delete [] sk; +// } // end ia +// } // enddo + +// delete [] gk; +// delete [] vq; +// ModuleBase::timer::tick("pp_cell_vnl","getvnl_alpha"); +// return; +// } +#endif + +void pseudopot_cell_vnl::init_vnl_alpha(const UnitCell& ucell) // pengfei Li 2018-3-23 +{ + if (PARAM.inp.test_pp) { + ModuleBase::TITLE("pseudopot_cell_vnl", "init_vnl_alpha"); +} + ModuleBase::timer::tick("ppcell_vnl", "init_vnl_alpha"); + + for (int it = 0; it < ucell.ntype; it++) + { + int BetaIndex = 0; + // const int Nprojectors = ucell.atoms[it].nh; + for (int ib = 0; ib < ucell.atoms[it].ncpp.nbeta; ib++) + { + const int l = ucell.atoms[it].ncpp.lll[ib]; + for (int m = 0; m < 2 * l + 1; m++) + { + this->nhtol(it, BetaIndex) = l; + this->nhtolm(it, BetaIndex) = l * l + m; + this->indv(it, BetaIndex) = ib; + ++BetaIndex; + } + } + } + + // max number of beta functions + const int nbrx = 10; + + const double pref = ModuleBase::FOUR_PI / sqrt(ucell.omega); + this->tab_alpha.create(ucell.ntype, nbrx, lmaxkb + 2, PARAM.globalv.nqx); + this->tab_alpha.zero_out(); + GlobalV::ofs_running << "\n Init Non-Local PseudoPotential table( including L index) : "; + for (int it = 0; it < ucell.ntype; it++) + { + const int nbeta = ucell.atoms[it].ncpp.nbeta; + int kkbeta = ucell.atoms[it].ncpp.kkbeta; + + // mohan modify 2008-3-31 + // mohan add kkbeta>0 2009-2-27 + if ((kkbeta % 2 == 0) && kkbeta > 0) + { + kkbeta--; + } + + double* jl = new double[kkbeta]; + double* aux = new double[kkbeta]; + + for (int ib = 0; ib < nbeta; ib++) + { + for (int L = 0; L <= lmaxkb + 1; L++) + { + for (int iq = 0; iq < PARAM.globalv.nqx; iq++) + { + const double q = iq * PARAM.globalv.dq; + ModuleBase::Sphbes::Spherical_Bessel(kkbeta, ucell.atoms[it].ncpp.r.data(), q, L, jl); + + for (int ir = 0; ir < kkbeta; ir++) + { + aux[ir] = ucell.atoms[it].ncpp.betar(ib, ir) * jl[ir] + * ucell.atoms[it].ncpp.r[ir] * ucell.atoms[it].ncpp.r[ir]; + } + double vqint = 0.0; + ModuleBase::Integral::Simpson_Integral(kkbeta, aux, ucell.atoms[it].ncpp.rab.data(), vqint); + this->tab_alpha(it, ib, L, iq) = vqint * pref; + } + } + } + delete[] aux; + delete[] jl; + } + ModuleBase::timer::tick("ppcell_vnl", "init_vnl_alpha"); + GlobalV::ofs_running << "\n Init Non-Local-Pseudopotential done(including L)." << std::endl; + return; +} + +void pseudopot_cell_vnl::print_vnl(std::ofstream& ofs) +{ + output::printr3_d(ofs, " tab : ", tab); +} + +// ---------------------------------------------------------------------- +void pseudopot_cell_vnl::cal_effective_D(const ModuleBase::matrix& veff, + const ModulePW::PW_Basis* rho_basis, + UnitCell& cell) +{ + ModuleBase::TITLE("pseudopot_cell_vnl", "cal_effective_D"); + + /* + recalculate effective coefficient matrix for non-local pseudo-potential + 1. assign to each atom from element; + 2. extend to each spin when nspin larger than 1 + 3. rotate to effective matrix when spin-orbital coupling is used + */ + + if (!PARAM.globalv.use_uspp) + { + for (int iat = 0; iat < cell.nat; iat++) + { + const int it = cell.iat2it[iat]; + const int nht = cell.atoms[it].ncpp.nh; + // nht: number of beta functions per atom type + for (int is = 0; is < PARAM.inp.nspin; is++) + { + for (int ih = 0; ih < nht; ih++) + { + for (int jh = ih; jh < nht; jh++) + { + if (PARAM.inp.lspinorb) + { + this->deeq_nc(is, iat, ih, jh) = this->dvan_so(is, it, ih, jh); + this->deeq_nc(is, iat, jh, ih) = this->dvan_so(is, it, jh, ih); + } + else if (PARAM.inp.nspin == 4) + { + if (is == 0) + { + this->deeq_nc(is, iat, ih, jh) = this->dvan(it, ih, jh); + this->deeq_nc(is, iat, jh, ih) = this->dvan(it, ih, jh); + } + else if (is == 1) + { + this->deeq_nc(is, iat, ih, jh) = std::complex(0.0, 0.0); + this->deeq_nc(is, iat, jh, ih) = std::complex(0.0, 0.0); + } + else if (is == 2) + { + this->deeq_nc(is, iat, ih, jh) = std::complex(0.0, 0.0); + this->deeq_nc(is, iat, jh, ih) = std::complex(0.0, 0.0); + } + else if (is == 3) + { + this->deeq_nc(is, iat, ih, jh) = this->dvan(it, ih, jh); + this->deeq_nc(is, iat, jh, ih) = this->dvan(it, ih, jh); + } + } + else + { + this->deeq(is, iat, ih, jh) = this->dvan(it, ih, jh); + this->deeq(is, iat, jh, ih) = this->dvan(it, ih, jh); + // in most of pseudopotential files, number of projections of one orbital is only one, + // which lead to diagonal matrix of dion + // when number larger than 1, non-diagonal dion should be calculated. + if (ih != jh && std::fabs(this->deeq(is, iat, ih, jh)) > 0.0) + { + this->multi_proj = true; + } + } + } + } + } + } + } + else + { + newq(veff, rho_basis, cell); + + for (int iat = 0; iat < cell.nat; iat++) + { + int it = cell.iat2it[iat]; + if (PARAM.inp.noncolin) + { + if (cell.atoms[it].ncpp.has_so) + { + this->newd_so(iat, cell); + } + else + { + this->newd_nc(iat, cell); + } + } + else + { + for (int is = 0; is < PARAM.inp.nspin; is++) + { + for (int ih = 0; ih < cell.atoms[it].ncpp.nh; ih++) + { + for (int jh = ih; jh < cell.atoms[it].ncpp.nh; jh++) + { + deeq(is, iat, ih, jh) += this->dvan(it, ih, jh); + deeq(is, iat, jh, ih) = deeq(is, iat, ih, jh); + } + } + } + } + } + } + if (this->use_gpu_) + { + if (PARAM.globalv.has_float_data) + { + castmem_d2s_h2d_op()(this->s_deeq, + this->deeq.ptr, + PARAM.inp.nspin * cell.nat * this->nhm * this->nhm); + castmem_z2c_h2d_op()(this->c_deeq_nc, + this->deeq_nc.ptr, + PARAM.inp.nspin * cell.nat * this->nhm * this->nhm); + } + if (PARAM.globalv.has_double_data) + { + syncmem_z2z_h2d_op()(this->z_deeq_nc, + this->deeq_nc.ptr, + PARAM.inp.nspin * cell.nat * this->nhm * this->nhm); + } + syncmem_d2d_h2d_op()(this->d_deeq, + this->deeq.ptr, + PARAM.inp.nspin * cell.nat * this->nhm * this->nhm); + } + else + { + if (PARAM.globalv.has_float_data) + { + castmem_d2s_h2h_op()(this->s_deeq, + this->deeq.ptr, + PARAM.inp.nspin * cell.nat * this->nhm * this->nhm); + castmem_z2c_h2h_op()(this->c_deeq_nc, + this->deeq_nc.ptr, + PARAM.inp.nspin * cell.nat * this->nhm * this->nhm); + } + // There's no need to synchronize double precision pointers while in a CPU environment. + } +} + +void pseudopot_cell_vnl::newq(const ModuleBase::matrix& veff, const ModulePW::PW_Basis* rho_basis, UnitCell& cell) +{ + ModuleBase::TITLE("pseudopot_cell_vnl", "newq"); + + const std::complex ci_tpi = ModuleBase::IMAG_UNIT * ModuleBase::TWO_PI; + double fact = 1.0; + if (rho_basis->gamma_only) + { + fact = 2.0; + } + + deeq.zero_out(); + + const int npw = rho_basis->npw; + ModuleBase::matrix ylmk0(lmaxq * lmaxq, npw); + ModuleBase::YlmReal::Ylm_Real(lmaxq * lmaxq, npw, rho_basis->gcar, ylmk0); + + double* qnorm = new double[npw]; + for (int ig = 0; ig < npw; ig++) + { + qnorm[ig] = rho_basis->gcar[ig].norm() * cell.tpiba; + } + + // fourier transform of the total effective potential + ModuleBase::ComplexMatrix vaux(PARAM.inp.nspin, npw); + for (int is = 0; is < PARAM.inp.nspin; is++) + { + rho_basis->real2recip(&veff.c[is * veff.nc], &vaux(is, 0)); + } + + for (int it = 0; it < cell.ntype; it++) + { + Atom_pseudo* upf = &cell.atoms[it].ncpp; + if (upf->tvanp) + { + // nij = max number of (ih,jh) pairs per atom type + int nij = upf->nh * (upf->nh + 1) / 2; + ModuleBase::ComplexMatrix qg(nij, npw); + + // Compute and store Q(G) for this atomic species + // (without structure factor) + int ijh = 0; + for (int ih = 0; ih < upf->nh; ih++) + { + for (int jh = ih; jh < upf->nh; jh++) + { + radial_fft_q(npw, ih, jh, it, qnorm, ylmk0, &qg(ijh, 0)); + ijh++; + } + } + + // Compute and store V(G) times the structure factor e^(-iG*tau) + const int natom = cell.atoms[it].na; + ModuleBase::ComplexMatrix aux(natom, npw); + ModuleBase::matrix deeaux(natom, nij); + for (int is = 0; is < PARAM.inp.nspin; is++) + { + for (int ia = 0; ia < natom; ia++) + { + const ModuleBase::Vector3 tau = cell.atoms[it].tau[ia]; + for (int ig = 0; ig < npw; ig++) + { + const ModuleBase::Vector3 g = rho_basis->gcar[ig]; + const std::complex phase = ci_tpi * (g * tau); + aux(ia, ig) = vaux(is, ig) * exp(phase); + } + } + // here we compute the integral Q*V for all atoms of this kind + const char transa = 'C', transb = 'N'; + const double zero = 0.0; + const int complex_npw = 2 * npw; + double* qg_ptr = reinterpret_cast(qg.c); + double* aux_ptr = reinterpret_cast(aux.c); + + BlasConnector::gemm(transb, + transa, + natom, + nij, + complex_npw, + fact, + aux_ptr, + complex_npw, + qg_ptr, + complex_npw, + zero, + deeaux.c, + nij); + // I'm not sure if this is correct for gamma_only + if (rho_basis->gamma_only && rho_basis->ig_gge0 >= 0) + { + const double neg = -1.0; + dger_(&nij, &natom, &neg, qg_ptr, &complex_npw, aux_ptr, &complex_npw, deeaux.c, &nij); + } + + for (int ia = 0; ia < natom; ia++) + { + int ijh = 0; + const int iat = cell.itia2iat(it, ia); + for (int ih = 0; ih < upf->nh; ih++) + { + for (int jh = ih; jh < upf->nh; jh++) + { + deeq(is, iat, ih, jh) = cell.omega * deeaux(ia, ijh); + if (jh > ih) + { + deeq(is, iat, jh, ih) = deeq(is, iat, ih, jh); + } + ijh++; + } + } + } + } + } + } + +#ifdef __MPI + Parallel_Reduce::reduce_pool(deeq.ptr,deeq.getSize()); +#endif + + delete[] qnorm; +} + +void pseudopot_cell_vnl::newd_so(const int& iat, UnitCell& cell) +{ + ModuleBase::TITLE("pseudopot_cell_vnl", "newd_so"); + + const int it = cell.iat2it[iat]; + Atom_pseudo* upf = &cell.atoms[it].ncpp; + int ijs = 0; + for (int is1 = 0; is1 < 2; is1++) + { + for (int is2 = 0; is2 < 2; is2++) + { + for (int ih = 0; ih < upf->nh; ih++) + { + for (int jh = 0; jh < upf->nh; jh++) + { + deeq_nc(ijs, iat, ih, jh) = dvan_so(ijs, it, ih, jh); + + for (int kh = 0; kh < upf->nh; kh++) + { + for (int lh = 0; lh < upf->nh; lh++) + { + if (PARAM.globalv.domag) + { + deeq_nc(ijs, iat, ih, jh) + += deeq(0, iat, kh, lh) + * (soc.fcoef(it, is1, 0, ih, kh) * soc.fcoef(it, 0, is2, lh, jh) + + soc.fcoef(it, is1, 1, ih, kh) * soc.fcoef(it, 1, is2, lh, jh)) + + deeq(1, iat, kh, lh) + * (soc.fcoef(it, is1, 0, ih, kh) * soc.fcoef(it, 1, is2, lh, jh) + + soc.fcoef(it, is1, 1, ih, kh) * soc.fcoef(it, 0, is2, lh, jh)) + + ModuleBase::NEG_IMAG_UNIT * deeq(2, iat, kh, lh) + * (soc.fcoef(it, is1, 0, ih, kh) * soc.fcoef(it, 1, is2, lh, jh) + - soc.fcoef(it, is1, 1, ih, kh) * soc.fcoef(it, 0, is2, lh, jh)) + + deeq(3, iat, kh, lh) + * (soc.fcoef(it, is1, 0, ih, kh) * soc.fcoef(it, 0, is2, lh, jh) + - soc.fcoef(it, is1, 1, ih, kh) * soc.fcoef(it, 1, is2, lh, jh)); + } + else + { + deeq_nc(ijs, iat, ih, jh) + += deeq(0, iat, kh, lh) + * (soc.fcoef(it, is1, 0, ih, kh) * soc.fcoef(it, 0, is2, lh, jh) + + soc.fcoef(it, is1, 1, ih, kh) * soc.fcoef(it, 1, is2, lh, jh)); + } + } + } + } + } + ijs++; + } + } +} + +void pseudopot_cell_vnl::newd_nc(const int& iat, UnitCell& cell) +{ + ModuleBase::TITLE("pseudopot_cell_vnl", "newd_nc"); + + const int it = cell.iat2it[iat]; + Atom_pseudo* upf = &cell.atoms[it].ncpp; + + for (int ih = 0; ih < upf->nh; ih++) + { + for (int jh = 0; jh < upf->nh; jh++) + { + if (PARAM.inp.lspinorb) + { + deeq_nc(0, iat, ih, jh) = dvan_so(0, it, ih, jh) + deeq(0, iat, ih, jh) + deeq(3, iat, ih, jh); + deeq_nc(3, iat, ih, jh) = dvan_so(3, it, ih, jh) + deeq(0, iat, ih, jh) - deeq(3, iat, ih, jh); + } + else + { + deeq_nc(0, iat, ih, jh) = dvan(it, ih, jh) + deeq(0, iat, ih, jh) + deeq(3, iat, ih, jh); + deeq_nc(3, iat, ih, jh) = dvan(it, ih, jh) + deeq(0, iat, ih, jh) - deeq(3, iat, ih, jh); + } + deeq_nc(1, iat, ih, jh) = deeq(1, iat, ih, jh) + ModuleBase::NEG_IMAG_UNIT * deeq(2, iat, ih, jh); + deeq_nc(2, iat, ih, jh) = deeq(1, iat, ih, jh) + ModuleBase::IMAG_UNIT * deeq(2, iat, ih, jh); + } + } +} + +// scale the non-local pseudopotential tables +void pseudopot_cell_vnl::rescale_vnl(const double& omega_in) +{ + const double ratio = this->omega_old / omega_in; + const double sqrt_ratio = std::sqrt(ratio); + this->omega_old = omega_in; + + for (int i = 0; i < this->tab.getSize(); i++) + { + this->tab.ptr[i] *= sqrt_ratio; + } + for (int i = 0; i < this->tab_at.getSize(); i++) + { + this->tab_at.ptr[i] *= sqrt_ratio; + } + for (int i = 0; i < this->qrad.getSize(); i++) + { + this->qrad.ptr[i] *= ratio; + } +} + +template <> +float* pseudopot_cell_vnl::get_nhtol_data() const +{ + return this->s_nhtol; +} +template <> +double* pseudopot_cell_vnl::get_nhtol_data() const +{ + return this->d_nhtol; +} + +template <> +float* pseudopot_cell_vnl::get_nhtolm_data() const +{ + return this->s_nhtolm; +} +template <> +double* pseudopot_cell_vnl::get_nhtolm_data() const +{ + return this->d_nhtolm; +} + +template <> +float* pseudopot_cell_vnl::get_indv_data() const +{ + return this->s_indv; +} +template <> +double* pseudopot_cell_vnl::get_indv_data() const +{ + return this->d_indv; +} + +template <> +float* pseudopot_cell_vnl::get_tab_data() const +{ + return this->s_tab; +} +template <> +double* pseudopot_cell_vnl::get_tab_data() const +{ + return this->d_tab; +} + +template <> +float* pseudopot_cell_vnl::get_deeq_data() const +{ + return this->s_deeq; +} +template <> +double* pseudopot_cell_vnl::get_deeq_data() const +{ + return this->d_deeq; +} + +template <> +float* pseudopot_cell_vnl::get_qq_nt_data() const +{ + return this->s_qq_nt; +} +template <> +double* pseudopot_cell_vnl::get_qq_nt_data() const +{ + return this->d_qq_nt; +} + +template <> +std::complex* pseudopot_cell_vnl::get_vkb_data() const +{ + return this->c_vkb; +} +template <> +std::complex* pseudopot_cell_vnl::get_vkb_data() const +{ + return this->z_vkb; +} + +template <> +std::complex* pseudopot_cell_vnl::get_deeq_nc_data() const +{ + return this->c_deeq_nc; +} +template <> +std::complex* pseudopot_cell_vnl::get_deeq_nc_data() const +{ + return this->z_deeq_nc; +} + +template <> +std::complex* pseudopot_cell_vnl::get_qq_so_data() const +{ + return this->c_qq_so; +} +template <> +std::complex* pseudopot_cell_vnl::get_qq_so_data() const +{ + return this->z_qq_so; +} + +template void pseudopot_cell_vnl::getvnl(base_device::DEVICE_CPU*, + const UnitCell&, + int const&, + std::complex*) const; +template void pseudopot_cell_vnl::getvnl(base_device::DEVICE_CPU*, + const UnitCell&, + int const&, + std::complex*) const; +#if defined(__CUDA) || defined(__ROCM) +template void pseudopot_cell_vnl::getvnl(base_device::DEVICE_GPU*, + const UnitCell&, + int const&, + std::complex*) const; +template void pseudopot_cell_vnl::getvnl(base_device::DEVICE_GPU*, + const UnitCell&, + int const&, + std::complex*) const; +#endif + +template void pseudopot_cell_vnl::radial_fft_q(base_device::DEVICE_CPU*, + const int, + const int, + const int, + const int, + const float*, + const float*, + std::complex*) const; +template void pseudopot_cell_vnl::radial_fft_q(base_device::DEVICE_CPU*, + const int, + const int, + const int, + const int, + const double*, + const double*, + std::complex*) const; +#if defined(__CUDA) || defined(__ROCM) +template void pseudopot_cell_vnl::radial_fft_q(base_device::DEVICE_GPU*, + const int, + const int, + const int, + const int, + const float*, + const float*, + std::complex*) const; +template void pseudopot_cell_vnl::radial_fft_q(base_device::DEVICE_GPU*, + const int, + const int, + const int, + const int, + const double*, + const double*, + std::complex*) const; +#endif diff --git a/source/source_pw/module_pwdft/VNL_in_pw.h b/source/source_pw/module_pwdft/vnl_pw.h similarity index 100% rename from source/source_pw/module_pwdft/VNL_in_pw.h rename to source/source_pw/module_pwdft/vnl_pw.h diff --git a/source/source_pw/module_pwdft/vnl_pw_grad.cpp b/source/source_pw/module_pwdft/vnl_pw_grad.cpp new file mode 100644 index 0000000000..7e22df63bc --- /dev/null +++ b/source/source_pw/module_pwdft/vnl_pw_grad.cpp @@ -0,0 +1,186 @@ +#include "vnl_pw.h" +#include "source_base/math_sphbes.h" +#include "source_io/module_parameter/parameter.h" +#include "source_base/timer.h" +#include "source_base/math_ylmreal.h" +#include "source_base/math_integral.h" +#include "source_base/math_polyint.h" + +void pseudopot_cell_vnl::initgradq_vnl(const UnitCell &cell) +{ + const int nbrx = 10; + const int nbrx_nc = 20; + const int ntype = cell.ntype; + if(PARAM.inp.nspin!=4) + { + this->tab_dq.create(ntype, nbrx, PARAM.globalv.nqx); + } + else + { + this->tab_dq.create(ntype, nbrx_nc, PARAM.globalv.nqx); + } + gradvkb.create(3, nkb, this->wfcpw->npwk_max); + + const double pref = ModuleBase::FOUR_PI / sqrt(cell.omega); + for (int it = 0;it < ntype;it++) + { + const int nbeta = cell.atoms[it].ncpp.nbeta; + int kkbeta = cell.atoms[it].ncpp.kkbeta; + if ( (kkbeta%2 == 0) && kkbeta>0 ) + { + kkbeta--; + } + + double *djl = new double[kkbeta]; + double *aux = new double[kkbeta]; + + for (int ib = 0;ib < nbeta;ib++) + { + const int l = cell.atoms[it].ncpp.lll[ib]; + for (int iq=0; iqtab_dq(it, ib, iq) = vqint * pref; + } + } + delete[] aux; + delete[] djl; + } + +} + +void pseudopot_cell_vnl::getgradq_vnl(const UnitCell& ucell, + const int ik) +{ + if(PARAM.inp.test_pp) ModuleBase::TITLE("pseudopot_cell_vnl","getvnl"); + ModuleBase::timer::tick("pp_cell_vnl","getvnl"); + + if(lmaxkb < 0) + { + return; + } + + const int npw = this->wfcpw->npwk[ik]; + + // When the internal memory is large enough, it is better to make tmpgradvkb and tmpvkb be the number of pseudopot_cell_vnl + // We only need to initialize them once as long as the cell is unchanged. + ModuleBase::realArray tmpgradvkb(3, nhm, npw); + ModuleBase::matrix tmpvkb(nhm, npw); + double *vq = new double[npw]; + double *dvq = new double[npw]; + + const int x1= (lmaxkb + 1)*(lmaxkb + 1); + + ModuleBase::matrix ylm(x1, npw); + ModuleBase::matrix *dylm = new ModuleBase::matrix[3]{ModuleBase::matrix(x1,npw),ModuleBase::matrix(x1,npw),ModuleBase::matrix(x1,npw)}; + + ModuleBase::Vector3 *gk = new ModuleBase::Vector3[npw]; + for (int ig = 0;ig < npw;ig++) + { + gk[ig] = this->wfcpw->getgpluskcar(ik,ig); + } + + ModuleBase::YlmReal::grad_Ylm_Real(x1, npw, gk, ylm, dylm[0], dylm[1], dylm[2]); + + int jkb = 0; + for(int it = 0;it < ucell.ntype;it++) + { + // calculate beta in G-space using an interpolation table + const int nbeta = ucell.atoms[it].ncpp.nbeta; + const int nh = ucell.atoms[it].ncpp.nh; + int nb0 = -1; + for( int ih = 0; ih < nh; ++ih) + { + int nb = this->indv(it, ih); + if(nb != nb0) + { + for (int ig = 0;ig < npw;++ig) + { + const double gnorm = gk[ig].norm() * ucell.tpiba; + vq [ig] = ModuleBase::PolyInt::Polynomial_Interpolation( + this->tab, it, nb, PARAM.globalv.nqx, PARAM.globalv.dq, gnorm ); + dvq[ig] =ModuleBase::PolyInt::Polynomial_Interpolation( + this->tab_dq, it, nb, PARAM.globalv.nqx, PARAM.globalv.dq, gnorm ); + } + nb0 = nb; + } + double lmmat[9] = {0, 0, 1, -1, 0, 0, 0, -1, 0}; + for(int id = 0; id < 3; ++id) + { + const int lm = static_cast( nhtolm(it, ih) ); + for (int ig = 0;ig < npw;++ig) + { + ModuleBase::Vector3 gg = gk[ig]; + double ggnorm = gg.norm(); + if(ggnorm < 1e-8) + { + if(lm == 0 || lm > 3) + { + tmpgradvkb(id, ih, ig) = 0.0; + } + else//lm = 1,2,3; l = 1 + { + //q \to 0 : \nabla(f(q)Y(\hat{q})) = f(q)/q*sqrt(3/4/pi)*vec(-delta(lm,2), -delta(lm,3), delta(lm,1)) + // tmpgradvkb(id, ih, ig) = 0.0; + tmpgradvkb(id, ih, ig) = dvq[ig] * sqrt(3.0/4.0/M_PI) * lmmat[(lm-1)*3 + id]; + } + } + else + { + tmpgradvkb(id, ih, ig) = ylm(lm, ig) * dvq[ig] * gg[id] / ggnorm + + dylm[id](lm, ig) / this->wfcpw->tpiba + * vq[ig]; // note: dylm/d(tpiba * gx) = 1/tpiba * dylm/dgx + } + tmpvkb(ih, ig) = ylm(lm,ig) * vq[ig]; + } + } + } + + // vkb1 contains all betas including angular part for type nt + // now add the structure factor and factor (-i)^l + for (int ia=0; ia *sk = this->psf->get_sk(ik, it, ia, this->wfcpw); + + for (int ih = 0;ih < nh;++ih) + { + std::complex pref = pow( ModuleBase::NEG_IMAG_UNIT, nhtol(it, ih)); + std::complex* pvkb = &this->vkb(jkb, 0); + for (int id = 0; id < 3 ; ++id) + { + std::complex* pgvkb = &this->gradvkb(id, jkb, 0); + for (int ig = 0;ig < npw;++ig) + { + std::complex skig = sk[ig]; + pvkb[ig] = tmpvkb(ih, ig) * skig * pref; + // std::complex dskig = ModuleBase::NEG_IMAG_UNIT * (ucell.atoms[it].tau[ia][id] * this->wfcpw->lat0) * skig; + // pgvkb[ig] = tmpgradvkb(id, ih, ig) * skig * pref + tmpvkb(ih, ig) * dskig * pref; + // The second term will be eliminate when doing Dij or we can say (\nabla_q+\nabla_q')S(q'-q) = 0 + pgvkb[ig] = tmpgradvkb(id, ih, ig) * skig * pref; + } + } //end id + ++jkb; + } // end ih + + delete [] sk; + } // end ia + } // enddo + + delete [] gk; + delete [] vq; + delete [] dvq; + delete [] dylm; + + ModuleBase::timer::tick("pp_cell_vnl","getvnl"); + + return; +} diff --git a/source/source_pw/module_pwdft/vsep_pw.cpp b/source/source_pw/module_pwdft/vsep_pw.cpp new file mode 100644 index 0000000000..569ae0131c --- /dev/null +++ b/source/source_pw/module_pwdft/vsep_pw.cpp @@ -0,0 +1,154 @@ +#include "vsep_pw.h" + +#include "source_base/constants.h" +#include "source_base/libm/libm.h" +#include "source_base/math_integral.h" +#include "source_base/timer.h" +#include "source_base/tool_title.h" +#include "source_cell/sep.h" +#include "source_cell/sep_cell.h" + +#include +#include +#include +#include + +// namespace GlobalC +// { +// VSep vsep_cell; +// } +namespace +{ +double sphere_cut(double r, double r_out, double r_power) +{ + if (r <= 0 || r >= r_out) + { + return 0.0; + } + return std::pow(1 - std::pow(r / r_out, r_power), 3); +} + +double shell_cut(double r, double r_in, double r_out, double r_power) +{ + if (r_in <= 0) + { + return sphere_cut(r, r_out, r_power); + } + if (r_in >= r_out) + { + return 0.0; + } + if (r <= r_in || r >= r_out) + { + return 0.0; + } + return std::pow(1 - std::pow(2 * (r - r_in) / (r_out - r_in) - 1.0, r_power), 3); +} +} // namespace + +VSep::VSep() = default; + +VSep::~VSep() = default; + +void VSep::init_vsep(const ModulePW::PW_Basis& rho_basis, const Sep_Cell& sep_cell) +{ + ModuleBase::TITLE("VSep", "init_vsep"); + ModuleBase::timer::tick("VSep", "init_vsep"); + + int ntype = sep_cell.get_ntype(); + + this->vsep_form.create(ntype, rho_basis.ngg, true); + + const double d_fpi_omega = ModuleBase::FOUR_PI / sep_cell.get_omega(); + int igl0 = 0; + for (int it = 0; it < ntype; ++it) + { + if (!sep_cell.get_sep_enable()[it]) + { + continue; + } + const SepPot* sep_pot = &sep_cell.get_seps()[it]; + // Simpson integral requires that the grid points be odd, if it is even, subtract one. + int mesh = sep_pot->mesh; + if ((mesh & 1) == 0) + { + mesh--; + } + + double* r = sep_pot->r; + double* rv = sep_pot->rv; + std::vector shell_rv(sep_pot->mesh); + std::vector rab(sep_pot->mesh); + std::vector aux(sep_pot->mesh); + + // calculate a and b of r [i] = a * (exp(b*i) - 1), i = 1,..., mesh. Note: no 0 + // for rab[i] = (r[i] + a) * b + double b_val = log(r[1] / r[0] - 1); + double a_val = r[0] / (exp(b_val) - 1); + + for (int ir = 0; ir < sep_pot->mesh; ++ir) + { + shell_rv[ir] + = shell_cut(r[ir], sep_pot->r_in, sep_pot->r_out, sep_pot->r_power) * rv[ir] * sep_pot->enhence_a; + rab[ir] = (r[ir] + a_val) * b_val; + } + + igl0 = 0; + // start from |G|=0 or not. + if (rho_basis.gg_uniq[0] < 1.0e-8) + { + for (int ir = 0; ir < sep_pot->mesh; ++ir) + { + aux[ir] = r[ir] * shell_rv[ir]; + } + ModuleBase::Integral::Simpson_Integral(mesh, aux.data(), rab.data(), this->vsep_form(it, 0)); + this->vsep_form(it, 0) *= d_fpi_omega; + igl0 = 1; + } + + for (int ig = igl0; ig < rho_basis.ngg; ++ig) + { + double gx2 = rho_basis.gg_uniq[ig] * sep_cell.get_tpiba2(); + double gx = std::sqrt(gx2); + for (int ir = 0; ir < sep_pot->mesh; ++ir) + { + aux[ir] = shell_rv[ir] * ModuleBase::libm::sin(gx * r[ir]) / gx; + } + ModuleBase::Integral::Simpson_Integral(mesh, aux.data(), rab.data(), this->vsep_form(it, ig)); + this->vsep_form(it, ig) *= d_fpi_omega; + } + } + + ModuleBase::timer::tick("VSep", "init_vsep"); +} + +void VSep::generate_vsep_r(const ModulePW::PW_Basis& rho_basis, + const ModuleBase::ComplexMatrix& sf_in, + const Sep_Cell& sep_cell) +{ + ModuleBase::TITLE("VSep", "generate_vsep_r"); + ModuleBase::timer::tick("VSep", "generate_vsep_r"); + + this->nrxx = rho_basis.nrxx; + this->vsep_r.assign(rho_basis.nrxx, 0.0); + + std::unique_ptr[]> vg(new std::complex[rho_basis.npw]); + ModuleBase::GlobalFunc::ZEROS(vg.get(), rho_basis.npw); + + for (int it = 0; it < sep_cell.get_ntype(); it++) + { + if (!sep_cell.get_sep_enable()[it]) + { + continue; + } + + for (int ig = 0; ig < rho_basis.npw; ++ig) + { + vg[ig] += this->vsep_form(it, rho_basis.ig2igg[ig]) * sf_in(it, ig); + } + } + + rho_basis.recip2real(vg.get(), this->vsep_r.data()); + + ModuleBase::timer::tick("VSep", "generate_vsep_r"); +} diff --git a/source/source_pw/module_pwdft/vsep_pw.h b/source/source_pw/module_pwdft/vsep_pw.h new file mode 100644 index 0000000000..2c05b26491 --- /dev/null +++ b/source/source_pw/module_pwdft/vsep_pw.h @@ -0,0 +1,31 @@ +#ifndef VSEP_IN_PW +#define VSEP_IN_PW + +#include "source_base/matrix.h" +#include "source_basis/module_pw/pw_basis.h" +#include "source_cell/sep_cell.h" + +#include + +class VSep +{ + public: + VSep(); + ~VSep(); + + void init_vsep(const ModulePW::PW_Basis& rho_basis, const Sep_Cell& sep_cell); + void generate_vsep_r(const ModulePW::PW_Basis& rho_basis, const ModuleBase::ComplexMatrix& sf_in, const Sep_Cell& sep_cell); + + ModuleBase::matrix vsep_form; + std::vector vsep_r; + + private: + int nrxx = 0; +}; +// +// namespace GlobalC +// { +// extern VSep vsep_cell; +// } + +#endif /* ifndef VSEP_IN_PW */ diff --git a/source/source_pw/module_stodft/hamilt_sdft_pw.cpp b/source/source_pw/module_stodft/hamilt_sdft_pw.cpp index fac4e7f867..b1e752c50e 100644 --- a/source/source_pw/module_stodft/hamilt_sdft_pw.cpp +++ b/source/source_pw/module_stodft/hamilt_sdft_pw.cpp @@ -10,11 +10,11 @@ HamiltSdftPW::HamiltSdftPW(elecstate::Potential* pot_in, ModulePW::PW_Basis_K* wfc_basis, K_Vectors* p_kv, pseudopot_cell_vnl* nlpp, - const UnitCell* ucell, - const int& npol, + const UnitCell* ucell, + const int& npol, Real* emin_in, Real* emax_in) - : HamiltPW(pot_in, wfc_basis, p_kv, nlpp,ucell), ngk(p_kv->ngk) + : HamiltPW(pot_in, wfc_basis, p_kv, nlpp, nullptr, ucell), ngk(p_kv->ngk) { this->classname = "HamiltSdftPW"; this->npwk_max = wfc_basis->npwk_max; @@ -69,4 +69,4 @@ template class HamiltSdftPW, base_device::DEVICE_GPU>; template class HamiltSdftPW, base_device::DEVICE_GPU>; #endif -} // namespace hamilt \ No newline at end of file +} // namespace hamilt diff --git a/source/source_pw/module_stodft/hamilt_sdft_pw.h b/source/source_pw/module_stodft/hamilt_sdft_pw.h index 39bc2bc13e..282ebec424 100644 --- a/source/source_pw/module_stodft/hamilt_sdft_pw.h +++ b/source/source_pw/module_stodft/hamilt_sdft_pw.h @@ -26,7 +26,7 @@ class HamiltSdftPW : public HamiltPW K_Vectors* p_kv, pseudopot_cell_vnl* nlpp, const UnitCell* ucell, - const int& npol, + const int& npol, Real* emin_in, Real* emax_in); /** @@ -64,4 +64,4 @@ class HamiltSdftPW : public HamiltPW } // namespace hamilt -#endif \ No newline at end of file +#endif diff --git a/source/source_pw/module_stodft/kernels/cuda/hpsi_norm_op.cu b/source/source_pw/module_stodft/kernels/cuda/hpsi_norm_op.cu index 2ccc8934cd..9c9be7b7de 100644 --- a/source/source_pw/module_stodft/kernels/cuda/hpsi_norm_op.cu +++ b/source/source_pw/module_stodft/kernels/cuda/hpsi_norm_op.cu @@ -40,7 +40,7 @@ void hamilt::hpsi_norm_op::operator()(const bas npwk_max, npwk, Ebar, DeltaE, reinterpret_cast*>(hpsi), reinterpret_cast*>(psi_in)); - cudaCheckOnDebug(); + CHECK_CUDA_SYNC(); } template struct hpsi_norm_op; diff --git a/source/source_pw/module_stodft/sto_dos.cpp b/source/source_pw/module_stodft/sto_dos.cpp index ffcc24203f..2665dde510 100644 --- a/source/source_pw/module_stodft/sto_dos.cpp +++ b/source/source_pw/module_stodft/sto_dos.cpp @@ -157,7 +157,7 @@ void Sto_DOS::caldos(const double sigmain, const double de, cons double* vec_all = (double*)allorderchi.data(); int LDA = npwx * nchipk_new * 2; int M = npwx * nchipk_new * 2; - dgemm_(&trans, &normal, &N, &N, &M, &kweight, vec_all, &LDA, vec_all, &LDA, &one, spolyv.data(), &N); + BlasConnector::gemm(normal, trans, N, N, M, kweight, vec_all, LDA, vec_all, LDA, one, spolyv.data(), N); } } } @@ -235,12 +235,12 @@ void Sto_DOS::caldos(const double sigmain, const double de, cons } #ifdef __MPI MPI_Allreduce(MPI_IN_PLACE, ks_dos.data(), ndos, MPI_DOUBLE, MPI_SUM, INT_BGROUP); - MPI_Allreduce(MPI_IN_PLACE, sto_dos.data(), ndos, MPI_DOUBLE, MPI_SUM, MPI_COMM_WORLD); - MPI_Allreduce(MPI_IN_PLACE, error.data(), ndos, MPI_DOUBLE, MPI_SUM, MPI_COMM_WORLD); -#endif + Parallel_Reduce::reduce_all(sto_dos.data(), ndos); + Parallel_Reduce::reduce_all(error.data(), ndos); + #endif if (GlobalV::MY_RANK == 0) { - std::string dosfile = PARAM.globalv.global_out_dir + "doss1_pw.txt"; + std::string dosfile = PARAM.globalv.global_out_dir + "dos_sdft.txt"; ofsdos.open(dosfile.c_str()); double maxerror = 0; double sum = 0; diff --git a/source/source_pw/module_stodft/sto_elecond.cpp b/source/source_pw/module_stodft/sto_elecond.cpp index b0fe4d71d7..1a32e9db83 100644 --- a/source/source_pw/module_stodft/sto_elecond.cpp +++ b/source/source_pw/module_stodft/sto_elecond.cpp @@ -1059,9 +1059,9 @@ void Sto_EleCond::sKG(const int& smear_type, } // ik loop ModuleBase::timer::tick("Sto_EleCond", "kloop"); #ifdef __MPI - MPI_Allreduce(MPI_IN_PLACE, ct11.data(), nt, MPI_DOUBLE, MPI_SUM, MPI_COMM_WORLD); - MPI_Allreduce(MPI_IN_PLACE, ct12.data(), nt, MPI_DOUBLE, MPI_SUM, MPI_COMM_WORLD); - MPI_Allreduce(MPI_IN_PLACE, ct22.data(), nt, MPI_DOUBLE, MPI_SUM, MPI_COMM_WORLD); + Parallel_Reduce::reduce_all(ct11.data(), nt); + Parallel_Reduce::reduce_all(ct12.data(), nt); + Parallel_Reduce::reduce_all(ct22.data(), nt); #endif //------------------------------------------------------------------ diff --git a/source/source_pw/module_stodft/sto_forces.cpp b/source/source_pw/module_stodft/sto_forces.cpp index 35ed90a80b..e349d3de2c 100644 --- a/source/source_pw/module_stodft/sto_forces.cpp +++ b/source/source_pw/module_stodft/sto_forces.cpp @@ -5,8 +5,7 @@ #include "source_estate/elecstate.h" #include "source_estate/module_pot/efield.h" #include "source_estate/module_pot/gatefield.h" -#include "source_pw/module_pwdft/global.h" -#include "source_io/output_log.h" +#include "source_io/module_output/output_log.h" #include "source_io/module_parameter/parameter.h" #include "source_pw/module_pwdft/fs_nonlocal_tools.h" @@ -32,7 +31,7 @@ void Sto_Forces::cal_stoforce(ModuleBase::matrix& force, { ModuleBase::timer::tick("Sto_Forces", "cal_force"); ModuleBase::TITLE("Sto_Forces", "init"); - this->device = base_device::get_device_type(this->ctx); + this->device = base_device::get_device_type(this->ctx); const ModuleBase::matrix& wg = elec.wg; const Charge* chr = elec.charge; force.create(this->nat, 3); @@ -109,7 +108,7 @@ void Sto_Forces::cal_stoforce(ModuleBase::matrix& force, if (ModuleSymmetry::Symmetry::symm_flag == 1) { - double d1, d2, d3; + double d1 = 0.0, d2 = 0.0, d3 = 0.0; for (int iat = 0; iat < ucell.nat; iat++) { ModuleBase::Mathzone::Cartesian_to_Direct(force(iat, 0), diff --git a/source/source_pw/module_stodft/sto_iter.cpp b/source/source_pw/module_stodft/sto_iter.cpp index aa9990a415..783796a6f5 100644 --- a/source/source_pw/module_stodft/sto_iter.cpp +++ b/source/source_pw/module_stodft/sto_iter.cpp @@ -8,7 +8,6 @@ #include "source_base/tool_title.h" #include "source_estate/kernels/elecstate_op.h" #include "source_estate/occupy.h" -#include "source_pw/module_pwdft/global.h" #include "source_hsolver/para_linear_transform.h" #include "source_io/module_parameter/parameter.h" @@ -162,7 +161,7 @@ void Stochastic_Iter::checkemm(const int& ik, } const int norder = p_che->norder; - T* pchi; + T* pchi = nullptr; int ntest = 1; if (nchip[ik] < ntest) @@ -204,8 +203,8 @@ void Stochastic_Iter::checkemm(const int& ik, if (ik == nks - 1) { #ifdef __MPI - MPI_Allreduce(MPI_IN_PLACE, p_hamilt_sto->emax, 1, MPI_DOUBLE, MPI_MAX, MPI_COMM_WORLD); - MPI_Allreduce(MPI_IN_PLACE, p_hamilt_sto->emin, 1, MPI_DOUBLE, MPI_MIN, MPI_COMM_WORLD); + Parallel_Reduce::reduce_max(*p_hamilt_sto->emax); + Parallel_Reduce::reduce_min(*p_hamilt_sto->emin); MPI_Allreduce(MPI_IN_PLACE, &change, 1, MPI_CHAR, MPI_LOR, MPI_COMM_WORLD); #endif if (change) @@ -249,7 +248,7 @@ void Stochastic_Iter::check_precision(const double ref, const double } #ifdef __MPI - MPI_Allreduce(MPI_IN_PLACE, &error, 1, MPI_DOUBLE, MPI_SUM, MPI_COMM_WORLD); + Parallel_Reduce::reduce_all(error); #endif double relative_error = std::abs(error / ref); GlobalV::ofs_running << info << "Relative Chebyshev Precision: " << relative_error * 1e9 << "E-09" << std::endl; @@ -274,7 +273,7 @@ void Stochastic_Iter::itermu(const int iter, elecstate::ElecState* pe { ModuleBase::TITLE("Stochastic_Iter", "itermu"); ModuleBase::timer::tick("Stochastic_Iter", "itermu"); - double dmu; + double dmu = 0.0; if (iter == 1) { dmu = 2; @@ -295,8 +294,8 @@ void Stochastic_Iter::itermu(const int iter, elecstate::ElecState* pe double ne2 = calne(pes); double mu2 = this->stofunc.mu; double Dne = th_ne + 1; - double ne3; - double mu3; + double ne3 = 0.0; + double mu3 = 0.0; while (ne1 > targetne) { @@ -385,7 +384,7 @@ void Stochastic_Iter::calPn(const int& ik, Stochastic_WF& setmem_var_op()(spolyv, 0, norder * norder); } } - T* pchi; + T* pchi = nullptr; if (PARAM.globalv.nbands_l > 0) { stowf.chiortho->fix_k(ik); @@ -441,7 +440,7 @@ double Stochastic_Iter::calne(elecstate::ElecState* pes) double totne = 0; KS_ne = 0; const int norder = p_che->norder; - double sto_ne; + double sto_ne = 0.0; if (this->method == 1) { // Note: spolyv contains kv.wk[ik] @@ -473,7 +472,7 @@ double Stochastic_Iter::calne(elecstate::ElecState* pes) { MPI_Allreduce(MPI_IN_PLACE, &KS_ne, 1, MPI_DOUBLE, MPI_SUM, BP_WORLD); } - MPI_Allreduce(MPI_IN_PLACE, &sto_ne, 1, MPI_DOUBLE, MPI_SUM, MPI_COMM_WORLD); + Parallel_Reduce::reduce_all(sto_ne); #endif totne = KS_ne + sto_ne; @@ -540,7 +539,7 @@ void Stochastic_Iter::sum_stoeband(Stochastic_WF& stowf, { MPI_Allreduce(MPI_IN_PLACE, &pes->f_en.demet, 1, MPI_DOUBLE, MPI_SUM, BP_WORLD); } - MPI_Allreduce(MPI_IN_PLACE, &stodemet, 1, MPI_DOUBLE, MPI_SUM, MPI_COMM_WORLD); + Parallel_Reduce::reduce_all(stodemet); #endif pes->f_en.demet += stodemet; this->check_precision(pes->f_en.demet, 1e-4, "TS"); @@ -581,7 +580,7 @@ void Stochastic_Iter::sum_stoeband(Stochastic_WF& stowf, } } #ifdef __MPI - MPI_Allreduce(MPI_IN_PLACE, &sto_eband, 1, MPI_DOUBLE, MPI_SUM, MPI_COMM_WORLD); + Parallel_Reduce::reduce_all(sto_eband); #endif pes->f_en.eband += sto_eband; ModuleBase::timer::tick("Stochastic_Iter", "sum_stoeband"); @@ -695,7 +694,7 @@ void Stochastic_Iter::cal_storho(const UnitCell& ucell, sto_ne *= ucell.omega / wfc_basis->nxyz; #ifdef __MPI - MPI_Allreduce(MPI_IN_PLACE, &sto_ne, 1, MPI_DOUBLE, MPI_SUM, POOL_WORLD); + Parallel_Reduce::reduce_pool(sto_ne); #endif double factor = targetne / (KS_ne + sto_ne); if (std::abs(factor - 1) > 1e-10) @@ -744,7 +743,7 @@ void Stochastic_Iter::calTnchi_ik(const int& ik, Stochastic_WFfix_k(ik); T* out = stowf.shchi->get_pointer(); - T* pchi; + T* pchi = nullptr; if (PARAM.globalv.nbands_l > 0) { stowf.chiortho->fix_k(ik); diff --git a/source/source_pw/module_stodft/sto_iter.h b/source/source_pw/module_stodft/sto_iter.h index 20837d708f..8a97796502 100644 --- a/source/source_pw/module_stodft/sto_iter.h +++ b/source/source_pw/module_stodft/sto_iter.h @@ -119,8 +119,8 @@ class Stochastic_Iter Sto_Func stofunc; hamilt::HamiltSdftPW* p_hamilt_sto = nullptr; - double mu0; // chemical potential; unit in Ry - bool change; + double mu0 = 0.0; // chemical potential; unit in Ry + bool change = false; double targetne=0.0; Real* spolyv = nullptr; //[Device] coefficients of Chebyshev expansion Real* spolyv_cpu = nullptr; //[CPU] coefficients of Chebyshev expansion diff --git a/source/source_pw/module_stodft/sto_stress_pw.cpp b/source/source_pw/module_stodft/sto_stress_pw.cpp index d83bd9d441..224bc6fbcb 100644 --- a/source/source_pw/module_stodft/sto_stress_pw.cpp +++ b/source/source_pw/module_stodft/sto_stress_pw.cpp @@ -3,9 +3,8 @@ #include "source_base/timer.h" #include "source_pw/module_pwdft/fs_kin_tools.h" #include "source_pw/module_pwdft/fs_nonlocal_tools.h" -#include "source_pw/module_pwdft/global.h" #include "source_pw/module_pwdft/structure_factor.h" -#include "source_io/output_log.h" +#include "source_io/module_output/output_log.h" #include "source_io/module_parameter/parameter.h" template diff --git a/source/source_pw/module_stodft/sto_stress_pw.h b/source/source_pw/module_stodft/sto_stress_pw.h index 8dbbc08804..fd47037249 100644 --- a/source/source_pw/module_stodft/sto_stress_pw.h +++ b/source/source_pw/module_stodft/sto_stress_pw.h @@ -3,7 +3,7 @@ #include "source_basis/module_pw/pw_basis_k.h" #include "source_estate/elecstate.h" -#include "source_pw/module_pwdft/VL_in_pw.h" +#include "source_pw/module_pwdft/vl_pw.h" #include "source_pw/module_pwdft/stress_func.h" #include "sto_wf.h" diff --git a/source/source_pw/module_stodft/sto_tool.cpp b/source/source_pw/module_stodft/sto_tool.cpp index de1e72e3f1..4ba359310b 100644 --- a/source/source_pw/module_stodft/sto_tool.cpp +++ b/source/source_pw/module_stodft/sto_tool.cpp @@ -2,6 +2,7 @@ #include "source_base/math_chebyshev.h" #include "source_base/parallel_device.h" +#include "source_base/parallel_reduce.h" #include "source_base/timer.h" #include "source_io/module_parameter/parameter.h" #ifdef __MPI @@ -103,8 +104,8 @@ void check_che_op::operator()(const int& nche_in, if (ik == nk - 1) { #ifdef __MPI - MPI_Allreduce(MPI_IN_PLACE, p_hamilt_sto->emax, 1, MPI_DOUBLE, MPI_MAX, MPI_COMM_WORLD); - MPI_Allreduce(MPI_IN_PLACE, p_hamilt_sto->emin, 1, MPI_DOUBLE, MPI_MIN, MPI_COMM_WORLD); + Parallel_Reduce::reduce_max(*p_hamilt_sto->emax); + Parallel_Reduce::reduce_min(*p_hamilt_sto->emin); #endif GlobalV::ofs_running << "New Emax " << *p_hamilt_sto->emax << " Ry; new Emin " << *p_hamilt_sto->emin << " Ry" << std::endl; diff --git a/source/source_pw/module_stodft/sto_tool.h b/source/source_pw/module_stodft/sto_tool.h index 65a8b792a0..6b0c9e2a59 100644 --- a/source/source_pw/module_stodft/sto_tool.h +++ b/source/source_pw/module_stodft/sto_tool.h @@ -53,8 +53,8 @@ struct parallel_distribution this->start = st_per; this->num_per = num_per; } - int start; - int num_per; + int start = 0; + int num_per = 0; }; #ifdef __MPI diff --git a/source/source_pw/module_stodft/sto_wf.cpp b/source/source_pw/module_stodft/sto_wf.cpp index e844503a11..a0204e1f87 100644 --- a/source/source_pw/module_stodft/sto_wf.cpp +++ b/source/source_pw/module_stodft/sto_wf.cpp @@ -1,4 +1,5 @@ #include "sto_wf.h" +#include "source_base/parallel_comm.h" // use POOL_WORLD #include "source_base/memory.h" #include "source_io/module_parameter/parameter.h" @@ -6,10 +7,7 @@ #include #include -//---------Temporary------------------------------------ #include "source_base/global_function.h" -#include "source_pw/module_pwdft/global.h" -//------------------------------------------------------ template Stochastic_WF::Stochastic_WF() @@ -21,7 +19,7 @@ Stochastic_WF::~Stochastic_WF() { delete chi0_cpu; Device* ctx = {}; - if (base_device::get_device_type(ctx) == base_device::GpuDevice) + if (base_device::get_device_type(ctx) == base_device::GpuDevice) { delete chi0; } @@ -121,7 +119,7 @@ void Stochastic_WF::allocate_chi0() // allocate chi0 Device* ctx = {}; - if (base_device::get_device_type(ctx) == base_device::GpuDevice) + if (base_device::get_device_type(ctx) == base_device::GpuDevice) { this->chi0 = new psi::Psi(nks, this->nchip_max, npwx, this->ngk, true); } @@ -168,7 +166,7 @@ void Stochastic_WF::init_com_orbitals() const bool firstrankmore = false; const int npwx = this->npwx; const int nks = this->nks; - int igroup; + int igroup = 0; // former processor calculate more bands if (firstrankmore) { @@ -221,7 +219,7 @@ void Stochastic_WF::init_com_orbitals() // give value to orbitals in one parallel group one by one. for (int ichi = 0; ichi < nchipk; ++ichi) { - int ig; + int ig = 0; if (igroup < re) { // It has more nchip. @@ -250,7 +248,7 @@ void Stochastic_WF::init_com_orbitals() delete[] totnpw; // allocate chi0 Device* ctx = {}; - if (base_device::get_device_type(ctx) == base_device::GpuDevice) + if (base_device::get_device_type(ctx) == base_device::GpuDevice) { this->chi0 = new psi::Psi(nks, this->nchip_max, npwx, this->ngk, true); } @@ -282,7 +280,7 @@ void Stochastic_WF::init_com_orbitals() // allocate chi0 Device* ctx = {}; - if (base_device::get_device_type(ctx) == base_device::GpuDevice) + if (base_device::get_device_type(ctx) == base_device::GpuDevice) { this->chi0 = new psi::Psi(nks, this->nchip_max, npwx, this->ngk, true); } @@ -372,7 +370,7 @@ template void Stochastic_WF::sync_chi0() { Device* ctx = {}; - if (base_device::get_device_type(ctx) == base_device::GpuDevice) + if (base_device::get_device_type(ctx) == base_device::GpuDevice) { syncmem_h2d_op()(this->chi0->get_pointer(), this->chi0_cpu->get_pointer(), diff --git a/source/source_pw/module_stodft/test/CMakeLists.txt b/source/source_pw/module_stodft/test/CMakeLists.txt index e527af6b3b..7063ebf13a 100644 --- a/source/source_pw/module_stodft/test/CMakeLists.txt +++ b/source/source_pw/module_stodft/test/CMakeLists.txt @@ -1,13 +1,13 @@ remove_definitions(-D__MPI) AddTest( - TARGET Sto_Tool_UTs + TARGET MODULE_PW_Sto_Tool_UTs LIBS parameter ${math_libs} psi base device SOURCES ../sto_tool.cpp test_sto_tool.cpp ) AddTest( - TARGET Sto_Hamilt_UTs + TARGET MODULE_PW_Sto_Hamilt_UTs LIBS parameter ${math_libs} psi base device planewave_serial SOURCES ../hamilt_sdft_pw.cpp test_hamilt_sto.cpp ../../../source_hamilt/operator.cpp ) \ No newline at end of file diff --git a/source/source_pw/module_stodft/test/test_hamilt_sto.cpp b/source/source_pw/module_stodft/test/test_hamilt_sto.cpp index 24ff21ffae..a1937caf05 100644 --- a/source/source_pw/module_stodft/test/test_hamilt_sto.cpp +++ b/source/source_pw/module_stodft/test/test_hamilt_sto.cpp @@ -9,7 +9,14 @@ void elecstate::Potential::cal_v_eff(Charge const*, UnitCell const*, ModuleBase: void elecstate::Potential::cal_fixed_v(double*){} template -hamilt::HamiltPW::HamiltPW(elecstate::Potential* pot_in, ModulePW::PW_Basis_K* wfc_basis, K_Vectors* p_kv, pseudopot_cell_vnl*,const UnitCell*){} +hamilt::HamiltPW::HamiltPW( + elecstate::Potential* pot_in, + ModulePW::PW_Basis_K* wfc_basis, + K_Vectors* p_kv, + pseudopot_cell_vnl* ppcell, + Plus_U* p_dftu, // mohan add 20251108 + const UnitCell* ucell){} + template hamilt::HamiltPW::~HamiltPW(){ delete this->ops; diff --git a/source/source_pw/module_stodft/test/test_sto_tool.cpp b/source/source_pw/module_stodft/test/test_sto_tool.cpp index a0654e1e7f..79d4cdcf22 100644 --- a/source/source_pw/module_stodft/test/test_sto_tool.cpp +++ b/source/source_pw/module_stodft/test/test_sto_tool.cpp @@ -8,7 +8,13 @@ ***********************************************/ template -hamilt::HamiltPW::HamiltPW(elecstate::Potential* pot_in, ModulePW::PW_Basis_K* wfc_basis, K_Vectors* p_kv,pseudopot_cell_vnl*,const UnitCell*){} +hamilt::HamiltPW::HamiltPW(elecstate::Potential* pot_in, + ModulePW::PW_Basis_K* wfc_basis, + K_Vectors* p_kv, + pseudopot_cell_vnl*, + Plus_U* p_dftu, // mohan add 20251108 + const UnitCell*){} + template hamilt::HamiltPW::~HamiltPW(){}; template @@ -25,9 +31,10 @@ hamilt::HamiltSdftPW::HamiltSdftPW(elecstate::Potential* pot_in, const int& npol, Real* emin_in, Real* emax_in) - : HamiltPW(pot_in, wfc_basis, p_kv, nlpp, ucell), ngk(p_kv->ngk) + : HamiltPW(pot_in, wfc_basis, p_kv, nlpp, nullptr, ucell), ngk(p_kv->ngk) { } + template void hamilt::HamiltSdftPW::hPsi_norm(const T* psi_in, T* hpsi, const int& nbands){} @@ -35,6 +42,7 @@ template class hamilt::HamiltPW, base_device::DEVICE_CPU>; template class hamilt::HamiltSdftPW, base_device::DEVICE_CPU>; template class hamilt::HamiltPW, base_device::DEVICE_CPU>; template class hamilt::HamiltSdftPW, base_device::DEVICE_CPU>; + #if ((defined __CUDA) || (defined __ROCM)) template class hamilt::HamiltPW, base_device::DEVICE_GPU>; template class hamilt::HamiltSdftPW, base_device::DEVICE_GPU>; diff --git a/source/source_relax/bfgs.cpp b/source/source_relax/bfgs.cpp index 829af3fa1c..078a5122f9 100644 --- a/source/source_relax/bfgs.cpp +++ b/source/source_relax/bfgs.cpp @@ -1,7 +1,5 @@ #include "bfgs.h" -#include "source_pw/module_pwdft/global.h" #include "source_base/module_external/lapack_connector.h" -#include "source_base/matrix3.h" #include "source_io/module_parameter/parameter.h" #include "ions_move_basic.h" #include "source_cell/update_cell.h" @@ -10,10 +8,12 @@ //! initialize H0、H、pos0、force0、force void BFGS::allocate(const int _size) { + assert(_size > 0); alpha=70;//default value in ase is 70 maxstep=PARAM.inp.relax_bfgs_rmax; size=_size; - sign =true; + largest_grad=0.0; + sign=true; H = std::vector>(3*size, std::vector(3*size, 0.0)); for (int i = 0; i < 3*size; ++i) @@ -21,13 +21,13 @@ void BFGS::allocate(const int _size) H[i][i] = alpha; } - pos = std::vector> (size, std::vector(3, 0.0)); + pos = std::vector> (size, ModuleBase::Vector3(0.0, 0.0, 0.0)); pos0 = std::vector(3*size, 0.0); - pos_taud = std::vector> (size, std::vector(3, 0.0)); + pos_taud = std::vector> (size, ModuleBase::Vector3(0.0, 0.0, 0.0)); pos_taud0 = std::vector(3*size, 0.0); - dpos = std::vector>(size, std::vector(3, 0.0)); + dpos = std::vector>(size, ModuleBase::Vector3(0.0, 0.0, 0.0)); force0 = std::vector(3*size, 0.0); - force = std::vector>(size, std::vector(3, 0.0)); + force = std::vector>(size, ModuleBase::Vector3(0.0, 0.0, 0.0)); steplength = std::vector(size, 0.0); } @@ -37,12 +37,16 @@ void BFGS::relax_step(const ModuleBase::matrix& _force,UnitCell& ucell) GetPos(ucell,pos); GetPostaud(ucell,pos_taud); ucell.ionic_position_updated = true; + assert(_force.nr == force.size() && _force.nc == 3); for(int i = 0; i < _force.nr; i++) { - for(int j=0;j<_force.nc;j++) - { - force[i][j]=_force(i,j)*ModuleBase::Ry_to_eV/ModuleBase::BOHR_TO_A; - } + force[i].x=_force(i,0)*ModuleBase::Ry_to_eV/ModuleBase::BOHR_TO_A; + force[i].y=_force(i,1)*ModuleBase::Ry_to_eV/ModuleBase::BOHR_TO_A; + force[i].z=_force(i,2)*ModuleBase::Ry_to_eV/ModuleBase::BOHR_TO_A; + // for(int j=0;j<_force.nc;j++) + // { + // force[i][j]=_force(i,j)*ModuleBase::Ry_to_eV/ModuleBase::BOHR_TO_A; + // } } int k=0; for(int i=0;iPrepareStep(force,pos,H,pos0,force0,steplength,dpos,ucell); + this->PrepareStep(force,pos,H,pos0,force0,steplength,dpos,size,ucell); this->DetermineStep(steplength,dpos,maxstep); this->UpdatePos(ucell); this->CalculateLargestGrad(_force,ucell); - this->IsRestrain(dpos); + this->IsRestrain(); // print out geometry information during bfgs_trad relax unitcell::print_tau(ucell.atoms,ucell.Coordinate,ucell.ntype,ucell.lat0,GlobalV::ofs_running); } -void BFGS::GetPos(UnitCell& ucell,std::vector>& pos) +void BFGS::GetPos(UnitCell& ucell,std::vector>& pos) { + assert(pos.size() == ucell.nat); int k=0; for(int i=0;i>& pos_taud) + std::vector>& pos_taud) { + assert(pos_taud.size() == ucell.nat); int k=0; for(int i=0;i>& force, - std::vector>& pos, +void BFGS::PrepareStep(std::vector>& force, + std::vector>& pos, std::vector>& H, std::vector& pos0, std::vector& force0, std::vector& steplength, - std::vector>& dpos, + std::vector>& dpos, + int& size, UnitCell& ucell) { std::vector changedforce = ReshapeMToV(force); @@ -142,8 +149,10 @@ void BFGS::PrepareStep(std::vector>& force, } } std::vector a=DotInMAndV2(V, changedforce); + double threshold=1e-8; for(int i = 0; i < a.size(); i++) { + assert(std::abs(omega[i]) > threshold); a[i]/=std::abs(omega[i]); } std::vector tmpdpos = DotInMAndV1(V, a); @@ -191,7 +200,7 @@ void BFGS::Update(std::vector& pos, //shortest_move=shortest_move*ModuleBase::BOHR_TO_A*ucell.lat0; dpos[i]=shortest_move; } - std::vector> c=ReshapeVToM(dpos); + std::vector> c=ReshapeVToM(dpos); for(int iat=0; iat& pos, //convert unit ModuleBase::Vector3 move_ion_cart; - move_ion_cart.x = c[iat][0] *ModuleBase::BOHR_TO_A * ucell.lat0; - move_ion_cart.y = c[iat][1] * ModuleBase::BOHR_TO_A * ucell.lat0; - move_ion_cart.z = c[iat][2] * ModuleBase::BOHR_TO_A * ucell.lat0; + move_ion_cart.x = c[iat].x * ModuleBase::BOHR_TO_A * ucell.lat0; + move_ion_cart.y = c[iat].y * ModuleBase::BOHR_TO_A * ucell.lat0; + move_ion_cart.z = c[iat].z * ModuleBase::BOHR_TO_A * ucell.lat0; //convert pos ModuleBase::Vector3 move_ion_dr = move_ion_cart* ucell.latvec; @@ -221,7 +230,8 @@ void BFGS::Update(std::vector& pos, dpos[iat * 3 + 2] = move_ion_dr.z ; } } - if(*max_element(dpos.begin(), dpos.end()) < 1e-7) + double threshold=1e-7; + if(*max_element(dpos.begin(), dpos.end()) < threshold) { return; } @@ -238,20 +248,21 @@ void BFGS::Update(std::vector& pos, } void BFGS::DetermineStep(std::vector& steplength, - std::vector>& dpos, + std::vector>& dpos, double& maxstep) { std::vector::iterator maxsteplength = max_element(steplength.begin(), steplength.end()); double a = *maxsteplength; + double threshold=1e-10; + assert(a > threshold); if(a >= maxstep) { double scale = maxstep / a; for(int i = 0; i < size; i++) { - for(int j=0;j<3;j++) - { - dpos[i][j]*=scale; - } + dpos[i].x*=scale; + dpos[i].y*=scale; + dpos[i].z*=scale; } } } @@ -261,11 +272,9 @@ void BFGS::UpdatePos(UnitCell& ucell) double a[3*size]; for(int i=0;iMAddM(pos, dpos);*/ } -void BFGS::IsRestrain(std::vector>& dpos) -{ - Ions_Move_Basic::converged = Ions_Move_Basic::largest_grad - * ModuleBase::Ry_to_eV / 0.529177 grad= std::vector(3*size, 0.0); @@ -334,20 +337,26 @@ void BFGS::CalculateLargestGrad(const ModuleBase::matrix& _force,UnitCell& ucell ++iat; } } - Ions_Move_Basic::largest_grad = 0.0; + largest_grad = 0.0; for (int i = 0; i < 3*size; i++) { - if (Ions_Move_Basic::largest_grad < std::abs(grad[i])) + if (largest_grad < std::abs(grad[i])) { - Ions_Move_Basic::largest_grad = std::abs(grad[i]); + largest_grad = std::abs(grad[i]); } } + assert(ucell.lat0 != 0); Ions_Move_Basic::largest_grad /= ucell.lat0; if (PARAM.inp.out_level == "ie") { - std::cout << " LARGEST GRAD (eV/Angstrom) : " << Ions_Move_Basic::largest_grad - * ModuleBase::Ry_to_eV / 0.5291772109 + std::cout << " LARGEST GRAD (eV/Angstrom) : " << largest_grad + * ModuleBase::Ry_to_eV / ModuleBase::BOHR_TO_A << std::endl; } +} +void BFGS::IsRestrain() +{ + Ions_Move_Basic::converged = largest_grad + * ModuleBase::Ry_to_eV / ModuleBase::BOHR_TO_A #include -#include -#include +#include +#include #include "source_base/matrix.h" #include "source_base/matrix3.h" #include "source_cell/unitcell.h" + #include "matrix_methods.h" class BFGS { public: - std::vector steplength;//the length of atoms displacement - std::vector> H;//Hessian matrix - std::vector force0;//force in previous step - std::vector> force; - std::vector pos0;//atom pos in previous step(cartesian coordinates) - std::vector> pos; - std::vector pos_taud0;//atom pos in previous step(relative coordinates) - std::vector> pos_taud; - std::vector> dpos; - void allocate(const int _size);//initialize parameters void relax_step(const ModuleBase::matrix& _force,UnitCell& ucell);//a full iteration step - void PrepareStep(std::vector>& force,std::vector>& pos,std::vector>& H,std::vector& pos0,std::vector& force0,std::vector& steplength,std::vector>& dpos,UnitCell& ucell);//calculate the atomic displacement in one iteration step + private: bool sign;//check if this is the first iteration double alpha;//initialize H,diagonal element is alpha double maxstep;//every movement smaller than maxstep + double largest_grad; int size;//number of atoms + + std::vector steplength;//the length of atoms displacement + std::vector> H;//Hessian matrix + std::vector force0;//force in previous step + std::vector> force; + std::vector pos0;//atom pos in previous step(cartesian coordinates) + std::vector> pos; + std::vector pos_taud0;//atom pos in previous step(relative coordinates) + std::vector> pos_taud; + std::vector> dpos; - void IsRestrain(std::vector>& dpos);//check if converged + void PrepareStep(std::vector>& force,std::vector>& pos,std::vector>& H,std::vector& pos0,std::vector& force0,std::vector& steplength,std::vector>& dpos,int& size,UnitCell& ucell);//calculate the atomic displacement in one iteration step + void IsRestrain();//check if converged void CalculateLargestGrad(const ModuleBase::matrix& _force,UnitCell& ucell); - void GetPos(UnitCell& ucell,std::vector>& pos); - void GetPostaud(UnitCell& ucell,std::vector>& pos_taud); + void GetPos(UnitCell& ucell,std::vector>& pos); + void GetPostaud(UnitCell& ucell,std::vector>& pos_taud); void Update(std::vector& pos, std::vector& force,std::vector>& H,UnitCell& ucell);//update hessian matrix - void DetermineStep(std::vector& steplength,std::vector>& dpos,double& maxstep);//normalize large atomic displacements based on maxstep + void DetermineStep(std::vector& steplength,std::vector>& dpos,double& maxstep);//normalize large atomic displacements based on maxstep void UpdatePos(UnitCell& ucell);//update ucell with the new coordinates }; diff --git a/source/source_relax/bfgs_basic.h b/source/source_relax/bfgs_basic.h index 0e795afe38..777e6c78eb 100644 --- a/source/source_relax/bfgs_basic.h +++ b/source/source_relax/bfgs_basic.h @@ -32,7 +32,7 @@ class BFGS_Basic double* pos_p; // p: previous double* grad_p; // p: previous - double* move_p; + double* move_p = nullptr; public: // mohan update 2011-06-12 static double relax_bfgs_w1; // fixed: parameters for Wolfe conditions. diff --git a/source/source_relax/ions_move_basic.cpp b/source/source_relax/ions_move_basic.cpp index 5b3e1b58c6..e4a2caef9d 100644 --- a/source/source_relax/ions_move_basic.cpp +++ b/source/source_relax/ions_move_basic.cpp @@ -23,7 +23,7 @@ double Ions_Move_Basic::relax_bfgs_init = -1.0; // default is 0.5 double Ions_Move_Basic::best_xxx = 1.0; int Ions_Move_Basic::out_stru = 0; -std::string Ions_Move_Basic::relax_method = "bfgs"; +std::vector Ions_Move_Basic::relax_method = {"bfgs","2"}; void Ions_Move_Basic::setup_gradient(const UnitCell &ucell, const ModuleBase::matrix &force, double *pos, double *grad) { @@ -147,10 +147,10 @@ void Ions_Move_Basic::check_converged(const UnitCell &ucell, const double *grad) if (PARAM.inp.out_level == "ie") { std::cout << " ETOT DIFF (eV) : " << Ions_Move_Basic::ediff * ModuleBase::Ry_to_eV << std::endl; - std::cout << " LARGEST GRAD (eV/Angstrom) : " << Ions_Move_Basic::largest_grad * ModuleBase::Ry_to_eV / 0.529177 + std::cout << " LARGEST GRAD (eV/Angstrom) : " << Ions_Move_Basic::largest_grad * ModuleBase::Ry_to_eV / ModuleBase::BOHR_TO_A << std::endl; - GlobalV::ofs_running << "\n Largest force is " << largest_grad * ModuleBase::Ry_to_eV / 0.529177 + GlobalV::ofs_running << "\n Largest force is " << largest_grad * ModuleBase::Ry_to_eV / ModuleBase::BOHR_TO_A << " eV/Angstrom while threshold is " << PARAM.inp.force_thr_ev << " eV/Angstrom" << std::endl; } @@ -178,7 +178,7 @@ void Ions_Move_Basic::check_converged(const UnitCell &ucell, const double *grad) else { GlobalV::ofs_running << "\n Ion relaxation is not converged yet (threshold is " - << PARAM.inp.force_thr * ModuleBase::Ry_to_eV / 0.529177 << ")" << std::endl; + << PARAM.inp.force_thr * ModuleBase::Ry_to_eV / ModuleBase::BOHR_TO_A << ")" << std::endl; // std::cout << "\n etot_diff=" << etot_diff << " etot_thr=" << etot_thr //<< " largest_grad=" << largest_grad << " force_thr=" << PARAM.inp.force_thr << std::endl; Ions_Move_Basic::converged = false; diff --git a/source/source_relax/ions_move_basic.h b/source/source_relax/ions_move_basic.h index f6966d2d17..8f03085028 100644 --- a/source/source_relax/ions_move_basic.h +++ b/source/source_relax/ions_move_basic.h @@ -21,7 +21,7 @@ extern double relax_bfgs_rmax; // max value of trust radius, extern double relax_bfgs_rmin; // min value of trust radius, extern double relax_bfgs_init; // initial value of trust radius, extern double best_xxx; // the last step length of cg , we use it as bfgs`s initial step length -extern std::string relax_method; // relaxation method, +extern std::vector relax_method; // relaxation method, extern int out_stru; // output the structure or not // funny way to pass this parameter, but nevertheless diff --git a/source/source_relax/ions_move_bfgs.cpp b/source/source_relax/ions_move_bfgs.cpp index 9c52010862..ee8a9d97e9 100644 --- a/source/source_relax/ions_move_bfgs.cpp +++ b/source/source_relax/ions_move_bfgs.cpp @@ -144,7 +144,7 @@ void Ions_Move_BFGS::restart_bfgs(const double& lat0) std::ifstream hess_file("hess_in"); if(hess_file) { - int rank1,rank2; + int rank1 = 0, rank2 = 0; hess_file >> rank1 >> rank2; if(rank1 == dim && rank2 == dim) { diff --git a/source/source_relax/ions_move_cg.cpp b/source/source_relax/ions_move_cg.cpp index 7da54c3831..eec0009764 100644 --- a/source/source_relax/ions_move_cg.cpp +++ b/source/source_relax/ions_move_cg.cpp @@ -1,5 +1,4 @@ #include "ions_move_cg.h" - #include "ions_move_basic.h" #include "source_base/global_function.h" #include "source_base/global_variable.h" @@ -77,20 +76,16 @@ void Ions_Move_CG::start(UnitCell &ucell, const ModuleBase::matrix &force, const // ncggrad is a parameter to control the cg method , every ten cg directions, // we change the direction back to the steepest descent method static int ncggrad = 0; - static double fa = 0.0; static double fb = 0.0; static double fc = 0.0; - static double xa = 0.0; static double xb = 0.0; static double xc = 0.0; static double xpt = 0.0; static double steplength = 0.0; static double fmax = 0.0; - static int nbrent = 0; - // some arrays double *pos = new double[dim]; @@ -100,7 +95,6 @@ void Ions_Move_CG::start(UnitCell &ucell, const ModuleBase::matrix &force, const double *cg_grad = new double[dim]; double best_x = 0.0; double fmin = 0.0; - int flag = 0; ModuleBase::GlobalFunc::ZEROS(pos, dim); @@ -137,7 +131,6 @@ void Ions_Move_CG::start(UnitCell &ucell, const ModuleBase::matrix &force, const { Ions_Move_Basic::check_converged(ucell, grad); } - if (Ions_Move_Basic::converged) { Ions_Move_Basic::terminate(ucell); @@ -155,21 +148,7 @@ void Ions_Move_CG::start(UnitCell &ucell, const ModuleBase::matrix &force, const flag); // we use the last direction ,the last grad and the grad now to get the direction now ncggrad++; - double norm = 0.0; - for (int i = 0; i < dim; ++i) - { - norm += pow(cg_grad[i], 2); - } - norm = sqrt(norm); - - if (norm != 0.0) - { - for (int i = 0; i < dim; ++i) - { - cg_gradn[i] = cg_grad[i] / norm; - } - } - + normalize(cg_gradn, cg_grad, dim); setup_move(move0, cg_gradn, steplength); // move the atom position Ions_Move_Basic::move_atoms(ucell, move0, pos); @@ -181,16 +160,16 @@ void Ions_Move_CG::start(UnitCell &ucell, const ModuleBase::matrix &force, const f_cal(move0, move0, dim, xb); // xb = trial steplength f_cal(move0, grad, dim, fa); // fa is the projection force in this direction - fmax = fa; sd = false; - if (Ions_Move_Basic::relax_method == "cg_bfgs") + if (Ions_Move_Basic::relax_method[0] == "cg_bfgs") { - if (Ions_Move_Basic::largest_grad * ModuleBase::Ry_to_eV / 0.529177 + if (Ions_Move_Basic::largest_grad * ModuleBase::Ry_to_eV / ModuleBase::BOHR_TO_A < RELAX_CG_THR) // cg to bfgs by pengfei 13-8-8 { - Ions_Move_Basic::relax_method = "bfgs"; + Ions_Move_Basic::relax_method[0] = "bfgs"; + Ions_Move_Basic::relax_method[1] = "2"; } Ions_Move_Basic::best_xxx = steplength; } @@ -204,7 +183,6 @@ void Ions_Move_CG::start(UnitCell &ucell, const ModuleBase::matrix &force, const double e1 = etot_in; f_cal(move0, grad, dim, fb); f_cal(move0, move0, dim, xb); - if ((std::abs(fb) < std::abs((fa) / 10.0))) { sd = true; @@ -214,21 +192,7 @@ void Ions_Move_CG::start(UnitCell &ucell, const ModuleBase::matrix &force, const goto CG_begin; } - double norm = 0.0; - for (int i = 0; i < dim; ++i) - { - norm += pow(cg_grad0[i], 2); - } - norm = sqrt(norm); - - if (norm != 0.0) - { - for (int i = 0; i < dim; ++i) - { - cg_gradn[i] = cg_grad0[i] / norm; - } - } - + normalize(cg_gradn, cg_grad0, dim); third_order(e0, e1, fa, fb, xb, best_x); // cubic interpolation if (best_x > 6 * xb || best_x < (-xb)) @@ -238,7 +202,6 @@ void Ions_Move_CG::start(UnitCell &ucell, const ModuleBase::matrix &force, const setup_move(move, cg_gradn, best_x); Ions_Move_Basic::move_atoms(ucell, move, pos); - trial = false; xa = 0; f_cal(move0, move, dim, xc); @@ -250,7 +213,6 @@ void Ions_Move_CG::start(UnitCell &ucell, const ModuleBase::matrix &force, const { double xtemp, ftemp; f_cal(move0, grad, dim, fc); - fmin = std::abs(fc); nbrent++; @@ -275,24 +237,9 @@ void Ions_Move_CG::start(UnitCell &ucell, const ModuleBase::matrix &force, const goto CG_begin; } - double norm = 0.0; - for (int i = 0; i < dim; ++i) - { - norm += pow(cg_grad0[i], 2); - } - norm = sqrt(norm); - - if (norm != 0.0) - { - for (int i = 0; i < dim; ++i) - { - cg_gradn[i] = cg_grad0[i] / norm; - } - } - + normalize(cg_gradn, cg_grad0, dim); setup_move(move, cg_gradn, best_x); Ions_Move_Basic::move_atoms(ucell, move, pos); - Ions_Move_Basic::relax_bfgs_init = xc; } } @@ -342,7 +289,6 @@ void Ions_Move_CG::setup_cg_grad(double *grad, cgp_gp += cg_grad0[i] * grad0[i]; cgp_g += cg_grad0[i] * grad[i]; } - assert(g_gp != 0.0); const double gamma1 = gg / gp_gp; // FR // const double gamma2 = -(gg - g_gp)/(cgp_g - cgp_gp); //CW @@ -508,3 +454,22 @@ void Ions_Move_CG::setup_move(double *move, double *cg_gradn, const double &trus } return; } + +void Ions_Move_CG::normalize(double *cg_gradn, const double *cg_grad, int dim) +{ + double norm = 0.0; + for (int i = 0; i < dim; ++i) + { + norm += pow(cg_grad[i], 2); + } + norm = sqrt(norm); + + if (norm != 0.0) + { + for (int i = 0; i < dim; ++i) + { + cg_gradn[i] = cg_grad[i] / norm; + } + } + return; +} diff --git a/source/source_relax/ions_move_cg.h b/source/source_relax/ions_move_cg.h index d143902486..6e77127ca5 100644 --- a/source/source_relax/ions_move_cg.h +++ b/source/source_relax/ions_move_cg.h @@ -17,10 +17,10 @@ class Ions_Move_CG int cg_step=0; private: - double *pos0; - double *grad0; - double *cg_grad0; - double *move0; + double * pos0 = nullptr; + double * grad0 = nullptr; + double * cg_grad0 = nullptr; + double * move0 = nullptr; double e0=0.0; // setup gradients. void setup_cg_grad(double *grad, @@ -38,6 +38,7 @@ class Ions_Move_CG const double &fb, const double x, double &best_x); + void normalize(double *cg_gradn, const double *cg_grad, int dim); }; #endif diff --git a/source/source_relax/ions_move_methods.cpp b/source/source_relax/ions_move_methods.cpp index 50ab3286c1..15f27d67d3 100644 --- a/source/source_relax/ions_move_methods.cpp +++ b/source/source_relax/ions_move_methods.cpp @@ -16,28 +16,28 @@ void Ions_Move_Methods::allocate(const int &natom) { Ions_Move_Basic::dim = natom * 3; - if (Ions_Move_Basic::relax_method == "bfgs") + if (Ions_Move_Basic::relax_method[0] == "bfgs"&&Ions_Move_Basic::relax_method[1] != "1") { this->bfgs.allocate(); } - else if (Ions_Move_Basic::relax_method == "sd") + else if (Ions_Move_Basic::relax_method[0] == "sd") { this->sd.allocate(); } - else if (Ions_Move_Basic::relax_method == "cg") + else if (Ions_Move_Basic::relax_method[0] == "cg") { this->cg.allocate(); } - else if (Ions_Move_Basic::relax_method == "cg_bfgs") + else if (Ions_Move_Basic::relax_method[0] == "cg_bfgs") { this->cg.allocate(); this->bfgs.allocate(); // added by pengfei 13-8-8 } - else if(Ions_Move_Basic::relax_method == "bfgs_trad") + else if(Ions_Move_Basic::relax_method[0] == "bfgs"&&Ions_Move_Basic::relax_method[1] == "1") { this->bfgs_trad.allocate(natom); } - else if(Ions_Move_Basic::relax_method == "lbfgs") + else if(Ions_Move_Basic::relax_method[0] == "lbfgs") { this->lbfgs.allocate(natom); } @@ -56,34 +56,32 @@ void Ions_Move_Methods::cal_movement(const int &istep, UnitCell &ucell) { ModuleBase::TITLE("Ions_Move_Methods", "init"); - // Ions_Move_Basic::istep = istep; Ions_Move_Basic::istep = force_step; - - if (Ions_Move_Basic::relax_method == "bfgs") + if (Ions_Move_Basic::relax_method[0] == "bfgs"&&Ions_Move_Basic::relax_method[1] != "1") { // move_ions // output tau // check all symmery bfgs.start(ucell, f, etot); } - else if (Ions_Move_Basic::relax_method == "sd") + else if (Ions_Move_Basic::relax_method[0] == "sd") { sd.start(ucell, f, etot); } - else if (Ions_Move_Basic::relax_method == "cg") + else if (Ions_Move_Basic::relax_method[0] == "cg") { cg.start(ucell, f, etot); } - else if (Ions_Move_Basic::relax_method == "cg_bfgs") + else if (Ions_Move_Basic::relax_method[0] == "cg_bfgs") { cg.start(ucell, f, etot); // added by pengfei 13-8-10 } - else if(Ions_Move_Basic::relax_method == "bfgs_trad") + else if(Ions_Move_Basic::relax_method[0] == "bfgs"&&Ions_Move_Basic::relax_method[1] == "1") { bfgs_trad.relax_step(f,ucell); } - else if(Ions_Move_Basic::relax_method == "lbfgs") + else if(Ions_Move_Basic::relax_method[0] == "lbfgs") { lbfgs.relax_step(f,ucell,etot); } diff --git a/source/source_relax/ions_move_sd.h b/source/source_relax/ions_move_sd.h index 2b0e093cb4..0fa56f8696 100644 --- a/source/source_relax/ions_move_sd.h +++ b/source/source_relax/ions_move_sd.h @@ -14,8 +14,8 @@ class Ions_Move_SD private: double energy_saved; - double* pos_saved; - double* grad_saved; + double* pos_saved = nullptr; + double* grad_saved = nullptr; void cal_tradius_sd(void) const; }; diff --git a/source/source_relax/lattice_change_basic.cpp b/source/source_relax/lattice_change_basic.cpp index d6cfaec9ef..47b0c283e1 100644 --- a/source/source_relax/lattice_change_basic.cpp +++ b/source/source_relax/lattice_change_basic.cpp @@ -4,6 +4,7 @@ #include "source_base/global_variable.h" #include "source_base/parallel_common.h" #include "source_io/module_parameter/parameter.h" +#include "source_cell/update_cell.h" int Lattice_Change_Basic::dim = 0; bool Lattice_Change_Basic::converged = true; @@ -24,13 +25,27 @@ void Lattice_Change_Basic::setup_gradient(const UnitCell &ucell, double *lat, do { ModuleBase::TITLE("Lattice_Change_Basic", "setup_gradient"); - if (Lattice_Change_Basic::fixed_axes == "volume") + // Apply fixed_axes constraints to stress tensor + if (Lattice_Change_Basic::fixed_axes == "shape") + { + // Shape constraint: only volume can change (isotropic expansion/contraction) + // Replace stress with pure hydrostatic pressure + double pressure = (stress(0, 0) + stress(1, 1) + stress(2, 2)) / 3.0; + stress.zero_out(); + stress(0, 0) = pressure; + stress(1, 1) = pressure; + stress(2, 2) = pressure; + } + else if (Lattice_Change_Basic::fixed_axes == "volume") { + // Volume constraint: only shape can change + // Remove hydrostatic pressure component from stress double stress_aver = (stress(0, 0) + stress(1, 1) + stress(2, 2)) / 3.0; stress(0, 0) = stress(0, 0) - stress_aver; stress(1, 1) = stress(1, 1) - stress_aver; stress(2, 2) = stress(2, 2) - stress_aver; } + // Note: Axis constraints ("a", "b", "c", etc.) are handled via ucell.lc[] flags below lat[0] = ucell.latvec.e11 * ucell.lat0; lat[1] = ucell.latvec.e12 * ucell.lat0; @@ -42,24 +57,48 @@ void Lattice_Change_Basic::setup_gradient(const UnitCell &ucell, double *lat, do lat[7] = ucell.latvec.e32 * ucell.lat0; lat[8] = ucell.latvec.e33 * ucell.lat0; + // Calculate gradients for each lattice vector, or zero them if fixed if (ucell.lc[0] == 1) { grad[0] = -(lat[0] * stress(0, 0) + lat[1] * stress(1, 0) + lat[2] * stress(2, 0)); grad[1] = -(lat[0] * stress(0, 1) + lat[1] * stress(1, 1) + lat[2] * stress(2, 1)); grad[2] = -(lat[0] * stress(0, 2) + lat[1] * stress(1, 2) + lat[2] * stress(2, 2)); } + else + { + // Zero out gradient for fixed lattice vector a + grad[0] = 0.0; + grad[1] = 0.0; + grad[2] = 0.0; + } + if (ucell.lc[1] == 1) { grad[3] = -(lat[3] * stress(0, 0) + lat[4] * stress(1, 0) + lat[5] * stress(2, 0)); grad[4] = -(lat[3] * stress(0, 1) + lat[4] * stress(1, 1) + lat[5] * stress(2, 1)); grad[5] = -(lat[3] * stress(0, 2) + lat[4] * stress(1, 2) + lat[5] * stress(2, 2)); } + else + { + // Zero out gradient for fixed lattice vector b + grad[3] = 0.0; + grad[4] = 0.0; + grad[5] = 0.0; + } + if (ucell.lc[2] == 1) { grad[6] = -(lat[6] * stress(0, 0) + lat[7] * stress(1, 0) + lat[8] * stress(2, 0)); grad[7] = -(lat[6] * stress(0, 1) + lat[7] * stress(1, 1) + lat[8] * stress(2, 1)); grad[8] = -(lat[6] * stress(0, 2) + lat[7] * stress(1, 2) + lat[8] * stress(2, 2)); } + else + { + // Zero out gradient for fixed lattice vector c + grad[6] = 0.0; + grad[7] = 0.0; + grad[8] = 0.0; + } // grad[0] = -stress(0,0); grad[1] = -stress(0,1); grad[2] = -stress(0,2); // grad[3] = -stress(1,0); grad[4] = -stress(1,1); grad[5] = -stress(1,2); @@ -117,17 +156,57 @@ void Lattice_Change_Basic::change_lattice(UnitCell &ucell, double *move, double ucell.latvec.e33 = (move[8] + lat[8]) / ucell.lat0; } - ucell.a1.x = ucell.latvec.e11; - ucell.a1.y = ucell.latvec.e12; - ucell.a1.z = ucell.latvec.e13; - ucell.a2.x = ucell.latvec.e21; - ucell.a2.y = ucell.latvec.e22; - ucell.a2.z = ucell.latvec.e23; - ucell.a3.x = ucell.latvec.e31; - ucell.a3.y = ucell.latvec.e32; - ucell.a3.z = ucell.latvec.e33; - - ucell.omega = std::abs(ucell.latvec.Det()) * ucell.lat0 * ucell.lat0 * ucell.lat0; + // Apply post-update constraints + // Order matters: fixed_ibrav first, then volume rescaling + + // 1. Enforce Bravais lattice symmetry if fixed_ibrav is set + if (PARAM.inp.fixed_ibrav) + { + unitcell::remake_cell(ucell.lat); + } + + // 2. Enforce volume constraint by rescaling lattice + if (Lattice_Change_Basic::fixed_axes == "volume") + { + double omega_old = ucell.omega; // Volume before this update + double omega_new = std::abs(ucell.latvec.Det()) * ucell.lat0 * ucell.lat0 * ucell.lat0; + + // Rescale lattice to maintain constant volume + if (omega_new > 1e-10) // Avoid division by zero + { + double scale = std::pow(omega_old / omega_new, 1.0 / 3.0); + ucell.latvec *= scale; + + // Update a1, a2, a3 vectors + ucell.a1.x = ucell.latvec.e11; + ucell.a1.y = ucell.latvec.e12; + ucell.a1.z = ucell.latvec.e13; + ucell.a2.x = ucell.latvec.e21; + ucell.a2.y = ucell.latvec.e22; + ucell.a2.z = ucell.latvec.e23; + ucell.a3.x = ucell.latvec.e31; + ucell.a3.y = ucell.latvec.e32; + ucell.a3.z = ucell.latvec.e33; + + // Recalculate omega (should be equal to omega_old now) + ucell.omega = std::abs(ucell.latvec.Det()) * ucell.lat0 * ucell.lat0 * ucell.lat0; + } + } + else + { + // Update a1, a2, a3 vectors for non-volume-constrained cases + ucell.a1.x = ucell.latvec.e11; + ucell.a1.y = ucell.latvec.e12; + ucell.a1.z = ucell.latvec.e13; + ucell.a2.x = ucell.latvec.e21; + ucell.a2.y = ucell.latvec.e22; + ucell.a2.z = ucell.latvec.e23; + ucell.a3.x = ucell.latvec.e31; + ucell.a3.y = ucell.latvec.e32; + ucell.a3.z = ucell.latvec.e33; + + ucell.omega = std::abs(ucell.latvec.Det()) * ucell.lat0 * ucell.lat0 * ucell.lat0; + } ucell.GT = ucell.latvec.Inverse(); ucell.G = ucell.GT.Transpose(); diff --git a/source/source_relax/lattice_change_cg.cpp b/source/source_relax/lattice_change_cg.cpp index 94a1bf581d..442b37e671 100644 --- a/source/source_relax/lattice_change_cg.cpp +++ b/source/source_relax/lattice_change_cg.cpp @@ -165,21 +165,7 @@ void Lattice_Change_CG::start(UnitCell &ucell, const ModuleBase::matrix &stress_ flag); // we use the last direction ,the last grad and the grad now to get the direction now ncggrad++; - double norm = 0.0; - for (int i = 0; i < dim; ++i) - { - norm += pow(cg_grad[i], 2); - } - norm = sqrt(norm); - - if (norm != 0.0) - { - for (int i = 0; i < dim; ++i) - { - cg_gradn[i] = cg_grad[i] / norm; - } - } - + normalize(cg_gradn, cg_grad, dim); setup_move(move0, cg_gradn, steplength); // move the atom position Lattice_Change_Basic::change_lattice(ucell, move0, lat); @@ -214,21 +200,7 @@ void Lattice_Change_CG::start(UnitCell &ucell, const ModuleBase::matrix &stress_ goto CG_begin; } - double norm = 0.0; - for (int i = 0; i < dim; ++i) - { - norm += pow(cg_grad0[i], 2); - } - norm = sqrt(norm); - - if (norm != 0.0) - { - for (int i = 0; i < dim; ++i) - { - cg_gradn[i] = cg_grad0[i] / norm; - } - } - + normalize(cg_gradn, cg_grad0, dim); third_order(e0, e1, fa, fb, xb, best_x); // cubic interpolation if (best_x > 6 * xb || best_x < (-xb)) @@ -279,21 +251,7 @@ void Lattice_Change_CG::start(UnitCell &ucell, const ModuleBase::matrix &stress_ goto CG_begin; } - double norm = 0.0; - for (int i = 0; i < dim; ++i) - { - norm += pow(cg_grad0[i], 2); - } - norm = sqrt(norm); - - if (norm != 0.0) - { - for (int i = 0; i < dim; ++i) - { - cg_gradn[i] = cg_grad0[i] / norm; - } - } - + normalize(cg_gradn, cg_grad0, dim); setup_move(move, cg_gradn, best_x); Lattice_Change_Basic::change_lattice(ucell, move, lat); @@ -512,3 +470,22 @@ void Lattice_Change_CG::setup_move(double *move, double *cg_gradn, const double } return; } + +void Lattice_Change_CG::normalize(double *cg_gradn, const double *cg_grad, int dim) +{ + double norm = 0.0; + for (int i = 0; i < dim; ++i) + { + norm += pow(cg_grad[i], 2); + } + norm = sqrt(norm); + + if (norm != 0.0) + { + for (int i = 0; i < dim; ++i) + { + cg_gradn[i] = cg_grad[i] / norm; + } + } + return; +} diff --git a/source/source_relax/lattice_change_cg.h b/source/source_relax/lattice_change_cg.h index 3a6e724637..68fe1b6950 100644 --- a/source/source_relax/lattice_change_cg.h +++ b/source/source_relax/lattice_change_cg.h @@ -14,10 +14,10 @@ class Lattice_Change_CG void start(UnitCell &ucell, const ModuleBase::matrix &stress_in, const double &etot); private: - double *lat0; - double *grad0; - double *cg_grad0; - double *move0; + double * lat0 = nullptr; + double * grad0 = nullptr; + double * cg_grad0 = nullptr; + double * move0 = nullptr; double e0=0.0; // setup gradients. @@ -40,6 +40,8 @@ class Lattice_Change_CG const double &fb, const double x, double &best_x); + + void normalize(double *cg_gradn, const double *cg_grad, int dim); }; #endif diff --git a/source/source_relax/lbfgs.cpp b/source/source_relax/lbfgs.cpp index 9ad2497d30..b347fe86fb 100644 --- a/source/source_relax/lbfgs.cpp +++ b/source/source_relax/lbfgs.cpp @@ -1,6 +1,4 @@ #include "lbfgs.h" -#include "source_pw/module_pwdft/global.h" -#include "source_base/matrix3.h" #include "source_io/module_parameter/parameter.h" #include "ions_move_basic.h" #include "source_cell/update_cell.h" @@ -15,13 +13,13 @@ void LBFGS::allocate(const int _size) // initialize H0、H、pos0、force0、for iteration=0; H = std::vector>(3*size, std::vector(3*size, 0.0)); H0=1/alpha; - pos = std::vector> (size, std::vector(3, 0.0)); + pos = std::vector> (size, ModuleBase::Vector3(0.0, 0.0, 0.0)); pos0 = std::vector(3*size, 0.0); - pos_taud = std::vector> (size, std::vector(3, 0.0)); + pos_taud = std::vector> (size, ModuleBase::Vector3(0.0, 0.0, 0.0)); pos_taud0 = std::vector(3*size, 0.0); - dpos = std::vector>(size, std::vector(3, 0.0)); + dpos = std::vector>(size, ModuleBase::Vector3(0.0, 0.0, 0.0)); force0 = std::vector(3*size, 0.0); - force = std::vector>(size, std::vector(3, 0.0)); + force = std::vector>(size, ModuleBase::Vector3(0.0, 0.0, 0.0)); steplength = std::vector(size, 0.0); //l_search.init_line_search(); } @@ -64,12 +62,12 @@ void LBFGS::relax_step(const ModuleBase::matrix _force,UnitCell& ucell,const dou this->determine_step(steplength,dpos,maxstep); this->update_pos(ucell); this->calculate_largest_grad(_force,ucell); - this->is_restrain(dpos); + this->is_restrain(); // mohan add 2025-06-22 unitcell::print_tau(ucell.atoms,ucell.Coordinate,ucell.ntype,ucell.lat0,GlobalV::ofs_running); } -void LBFGS::get_pos(UnitCell& ucell,std::vector>& pos) +void LBFGS::get_pos(UnitCell& ucell,std::vector>& pos) { int k=0; for(int i=0;i>& pos) } } -void LBFGS::get_pos_taud(UnitCell& ucell,std::vector>& pos_taud) +void LBFGS::get_pos_taud(UnitCell& ucell,std::vector>& pos_taud) { int k=0; for(int i=0;i>& pos_t } } -void LBFGS::prepare_step(std::vector>& force, - std::vector>& pos, +void LBFGS::prepare_step(std::vector>& force, + std::vector>& pos, std::vector>& H, std::vector& pos0, std::vector& force0, - std::vector>& dpos, + std::vector>& dpos, UnitCell& ucell, const double &etot) { @@ -130,7 +128,7 @@ void LBFGS::prepare_step(std::vector>& force, std::vector temp0=DotInVAndFloat(z,-1); dpos=ReshapeVToM(temp0); std::vector temp1=DotInVAndFloat(changedforce,-1); - std::vector> g=ReshapeVToM(temp1); + //std::vector> g=ReshapeVToM(temp1); energy=etot; //alpha_k=l_search.line_search(ucell,pos,g,energy,maxstep,size,dpos,pos,solver); //std::vector temp2=DotInVAndFloat(temp0,alpha_k); @@ -150,7 +148,7 @@ void LBFGS::prepare_step(std::vector>& force, pos_taud0=ReshapeMToV(pos_taud); force0 = changedforce; } -void LBFGS::update(std::vector>& pos_taud, +void LBFGS::update(std::vector>& pos_taud, std::vector& pos_taud0, std::vector& force, std::vector& force0, @@ -178,7 +176,7 @@ void LBFGS::update(std::vector>& pos_taud, } dpos[i]=shortest_move; } - std::vector> c=ReshapeVToM(dpos); + std::vector> c=ReshapeVToM(dpos); for(int iat=0; iat>& pos_taud, //convert unit ModuleBase::Vector3 move_ion_cart; - move_ion_cart.x = c[iat][0] *ModuleBase::BOHR_TO_A * ucell.lat0; - move_ion_cart.y = c[iat][1] * ModuleBase::BOHR_TO_A * ucell.lat0; - move_ion_cart.z = c[iat][2] * ModuleBase::BOHR_TO_A * ucell.lat0; + move_ion_cart.x = c[iat].x * ModuleBase::BOHR_TO_A * ucell.lat0; + move_ion_cart.y = c[iat].y * ModuleBase::BOHR_TO_A * ucell.lat0; + move_ion_cart.z = c[iat].z * ModuleBase::BOHR_TO_A * ucell.lat0; //convert pos ModuleBase::Vector3 move_ion_dr = move_ion_cart* ucell.latvec; @@ -222,7 +220,7 @@ void LBFGS::update(std::vector>& pos_taud, rho.erase(rho.begin()); } } -void LBFGS::determine_step(std::vector& steplength,std::vector>& dpos,double& maxstep) +void LBFGS::determine_step(std::vector& steplength,std::vector>& dpos,double& maxstep) { std::vector::iterator maxsteplength = max_element(steplength.begin(), steplength.end()); double a = *maxsteplength; @@ -252,9 +250,9 @@ void LBFGS::update_pos(UnitCell& ucell) unitcell::update_pos_tau(ucell.lat,a,ucell.ntype,ucell.nat,ucell.atoms); } -void LBFGS::is_restrain(std::vector>& dpos) +void LBFGS::is_restrain() { - Ions_Move_Basic::converged = Ions_Move_Basic::largest_grad * ModuleBase::Ry_to_eV / 0.529177> H; ///< Inverse Hessian approximation - std::vector force0; ///< Previous step forces - std::vector> force; ///< Force history - std::vector pos0; ///< Previous positions - std::vector> pos; ///< Position history - std::vector pos_taud0; ///< Previous fractional positions - std::vector> pos_taud; ///< Fractional position history - std::vector> dpos; ///< Position displacements + std::vector steplength;//the length of atoms displacement + std::vector> H;//Hessian matrix + std::vector force0;//force in previous step + std::vector> force; + std::vector pos0;//atom pos in previous step(cartesian coordinates) + std::vector> pos; + std::vector pos_taud0;//atom pos in previous step(relative coordinates) + std::vector> pos_taud; + std::vector> dpos; std::vector> s; ///< Position difference vectors std::vector> y; ///< Force difference vectors std::vector rho; ///< Scalar products for L-BFGS update - std::vector steplength; ///< Step lengths for each atom /** * @brief Prepare optimization step parameters */ - void prepare_step(std::vector>& force, - std::vector>& pos, + void prepare_step(std::vector>& force, + std::vector>& pos, std::vector>& H, std::vector& pos0, std::vector& force0, - std::vector>& dpos, + std::vector>& dpos, UnitCell& ucell, const double &etot); @@ -78,7 +78,7 @@ class LBFGS * @brief Judge if the cell is restrain * @param dpos Position displacements to constrain */ - void is_restrain(std::vector>& dpos); + void is_restrain(); /** * @brief Calculate maximum gradient component @@ -94,7 +94,7 @@ class LBFGS * @param pos Output position vector */ void get_pos(UnitCell& ucell, - std::vector>& pos); + std::vector>& pos); /** * @brief Get fractional positions from unit cell @@ -102,7 +102,7 @@ class LBFGS * @param pos_taud Output fractional positions */ void get_pos_taud(UnitCell& ucell, - std::vector>& pos_taud); + std::vector>& pos_taud); /** * @brief Update L-BFGS history buffers @@ -117,7 +117,7 @@ class LBFGS * @param y Force differences buffer * @param rho Scalar products buffer */ - void update(std::vector>& pos_taud, + void update(std::vector>& pos_taud, std::vector& pos_taud0, std::vector& force, std::vector& force0, @@ -135,7 +135,7 @@ class LBFGS * @param maxstep Maximum allowed step length */ void determine_step(std::vector& steplength, - std::vector>& dpos, + std::vector>& dpos, double& maxstep); /** diff --git a/source/source_relax/line_search.cpp b/source/source_relax/line_search.cpp index bbf308f638..1c07a59c3d 100644 --- a/source/source_relax/line_search.cpp +++ b/source/source_relax/line_search.cpp @@ -1,9 +1,10 @@ #include "line_search.h" -#include "source_pw/module_pwdft/global.h" - +#include "source_base/global_function.h" +#include "source_base/global_variable.h" #include #include +#include bool Line_Search::line_search(const bool restart, const double x, // current point @@ -12,9 +13,10 @@ bool Line_Search::line_search(const bool restart, double& xnew, // the next point that we want to try const double conv_thr) { - if (restart) { - ls_step = 0; -} + if (restart) + { + ls_step = 0; + } if (ls_step == 0) // first point: make a trial step into trial direction { @@ -100,10 +102,11 @@ bool Line_Search::third_order(const double x, const double y, const double f, do } dmoveh = -fa / (fab - fa) / 2.0; - if (dmoveh < 0) { + if (dmoveh < 0) + { dmoveh = 4.0; -} - + } + if (dmove > 2.0 * dmoveh || dmoveh > 2.0 * dmove || (fa * fb > 0 && dmove < 1.0) || (fa * fb < 0 && dmove > 1.0)) { @@ -111,15 +114,17 @@ bool Line_Search::third_order(const double x, const double y, const double f, do } } // end anharmonic case - if (dmove > 4.0) { - dmove = 4.0; -} + if (dmove > 4.0) + { + dmove = 4.0; + } xnew = dmove + xa; double dy = (fb + (fab - fb) / (xa - xb) * (dmove - xb)) * (dmove - xb); - if (std::abs(dy) < conv_thr) { + if (std::abs(dy) < conv_thr) + { return true; -} + } ls_step++; return false; @@ -137,9 +142,10 @@ void Line_Search::init_brent(const double x, const double y, const double f) xb = x; yb = y; fb = f; - if (fa * fb > 0) { + if (fa * fb > 0) + { bracked = false; -} + } fstart = fa; } else // x < b @@ -233,9 +239,10 @@ bool Line_Search::brent(const double x, const double y, const double f, double& p = s * (2.0 * xm * qq * (qq - r) - (xb - xa) * (r - 1.0)); qq = (qq - 1.0) * (r - 1.0) * (s - 1.0); } - if (p > 0.0) { + if (p > 0.0) + { qq = -qq; -} + } p = std::abs(p); if (p < std::min(2.0 * (xb - xa) * qq - std::abs(tol1 * qq), std::abs(xe * qq) / 2.0)) @@ -273,9 +280,10 @@ bool Line_Search::brent(const double x, const double y, const double f, double& } xnew = xb; - if (std::abs(dy) < conv_thr) { + if (std::abs(dy) < conv_thr) + { return true; -} + } if (ls_step == 4) // I'm not sure if this is a good choice, but the idea is there should not be so many line // search steps I feel if the line search does not converge, we'd better change the direction // and restart line search @@ -335,9 +343,10 @@ bool Line_Search::brent(const double x, const double y, const double f, double& p = s * (2.0 * xm * qq * (qq - r) - (xb - xa) * (r - 1.0)); qq = (qq - 1.0) * (r - 1.0) * (s - 1.0); } - if (p > 0.0) { + if (p > 0.0) + { qq = -qq; -} + } p = std::abs(p); if (2.0 * p < std::min(3.0 * xm * qq - std::abs(tol1 * qq), std::abs(xe * qq))) @@ -381,9 +390,10 @@ bool Line_Search::brent(const double x, const double y, const double f, double& } xnew = xb; - if (std::abs(dy) < conv_thr) { + if (std::abs(dy) < conv_thr) + { return true; -} + } if (ls_step == 4) { GlobalV::ofs_running << "Too many Brent steps, let's do next CG step" << std::endl; @@ -392,4 +402,4 @@ bool Line_Search::brent(const double x, const double y, const double f, double& } return false; } // end ibrack -} \ No newline at end of file +} diff --git a/source/source_relax/matrix_methods.cpp b/source/source_relax/matrix_methods.cpp index 99019f0668..96079d55e1 100644 --- a/source/source_relax/matrix_methods.cpp +++ b/source/source_relax/matrix_methods.cpp @@ -2,13 +2,18 @@ -std::vector ReshapeMToV(std::vector>& matrix) + +std::vector ReshapeMToV(std::vector>& matrix) { + assert(!matrix.empty()); int size = matrix.size(); std::vector result; result.reserve(3*size); - for (const auto& row : matrix) { - result.insert(result.end(), row.begin(), row.end()); + for (const auto& v : matrix) + { + result.push_back(v.x); + result.push_back(v.y); + result.push_back(v.z); } return result; } @@ -16,6 +21,8 @@ std::vector ReshapeMToV(std::vector>& matrix) std::vector> MAddM(std::vector>& a, std::vector>& b) { + assert(!a.empty() && !b.empty()); + assert(a.size() == b.size() && a[0].size() == b[0].size()); std::vector> result = std::vector>(a.size(), std::vector(a[0].size(), 0.0)); for(int i = 0; i < a.size(); i++) { @@ -29,6 +36,7 @@ std::vector> MAddM(std::vector>& a, std::vector VSubV(std::vector& a, std::vector& b) { + assert(a.size() == b.size()); std::vector result = std::vector(a.size(), 0.0); for(int i = 0; i < a.size(); i++) { @@ -37,21 +45,23 @@ std::vector VSubV(std::vector& a, std::vector& b) return result; } -std::vector> ReshapeVToM(std::vector& matrix) +std::vector> ReshapeVToM(std::vector& matrix) { - std::vector> result = std::vector>(matrix.size() / 3, std::vector(3)); + assert(matrix.size() % 3 == 0); + std::vector> result = std::vector>(matrix.size() / 3, ModuleBase::Vector3(0.0, 0.0, 0.0)); for(int i = 0; i < result.size(); i++) { - for(int j = 0; j < 3; j++) - { - result[i][j] = matrix[i*3 + j]; - } + result[i].x = matrix[i*3 ]; + result[i].y = matrix[i*3 + 1]; + result[i].z = matrix[i*3 + 2]; } return result; } std::vector DotInMAndV1(std::vector>& matrix, std::vector& vec) { + assert(!matrix.empty()); + assert(matrix[0].size() == vec.size()); std::vector result(matrix.size(), 0.0); for(int i = 0; i < result.size(); i++) { @@ -64,6 +74,8 @@ std::vector DotInMAndV1(std::vector>& matrix, std::v } std::vector DotInMAndV2(std::vector>& matrix, std::vector& vec) { + assert(!matrix.empty()); + assert(matrix.size() == vec.size()); std::vector result(matrix.size(), 0.0); for(int i = 0; i < result.size(); i++) { @@ -77,6 +89,7 @@ std::vector DotInMAndV2(std::vector>& matrix, std::v double DotInVAndV(std::vector& vec1, std::vector& vec2) { + assert(vec1.size() == vec2.size()); double result = 0.0; for(int i = 0; i < vec1.size(); i++) { @@ -87,6 +100,7 @@ double DotInVAndV(std::vector& vec1, std::vector& vec2) std::vector> OuterVAndV(std::vector& a, std::vector& b) { + assert(a.size() == b.size()); std::vector> result = std::vector>(a.size(), std::vector(b.size(), 0.0)); for(int i = 0; i < a.size(); i++) { @@ -100,6 +114,8 @@ std::vector> OuterVAndV(std::vector& a, std::vector< std::vector> MPlus(std::vector>& a, double b) { + assert(!a.empty()); + assert(b != 0); std::vector> result = std::vector>(a.size(), std::vector(a[0].size(), 0.0)); for(int i = 0; i < a.size(); i++) { @@ -113,6 +129,8 @@ std::vector> MPlus(std::vector>& a, doub std::vector> MSubM(std::vector>& a, std::vector>& b) { + assert(!a.empty() && !b.empty()); + assert(a.size() == b.size() && a[0].size() == b[0].size()); std::vector> result = std::vector>(a.size(), std::vector(a[0].size(), 0.0)); for(int i = 0; i < a.size(); i++) { @@ -126,6 +144,7 @@ std::vector> MSubM(std::vector>& a, std: std::vector DotInVAndFloat(std::vector& vec, double b) { + assert(b != 0); std::vector result(vec.size(), 0.0); for(int i = 0; i < vec.size(); i++) { @@ -136,6 +155,7 @@ std::vector DotInVAndFloat(std::vector& vec, double b) std::vector VAddV(std::vector& a, std::vector& b) { + assert(a.size() == b.size()); std::vector result = std::vector(a.size(), 0.0); for(int i = 0; i < a.size(); i++) { diff --git a/source/source_relax/matrix_methods.h b/source/source_relax/matrix_methods.h index 7f576c53af..fb6bba42b9 100644 --- a/source/source_relax/matrix_methods.h +++ b/source/source_relax/matrix_methods.h @@ -2,14 +2,15 @@ #define MATRIX_METHODS #include +#include +#include "source_base/vector3.h" - -std::vector ReshapeMToV(std::vector>& matrix); +std::vector ReshapeMToV(std::vector>& matrix); std::vector> MAddM(std::vector>& a, std::vector>& b); std::vector VSubV(std::vector& a, std::vector& b); std::vector VAddV(std::vector& a, std::vector& b); -std::vector> ReshapeVToM(std::vector& matrix); +std::vector> ReshapeVToM(std::vector& matrix); std::vector DotInMAndV1(std::vector>& matrix, std::vector& vec); std::vector DotInMAndV2(std::vector>& matrix, std::vector& vec); double DotInVAndV(std::vector& vec1, std::vector& vec2); diff --git a/source/source_relax/relax_driver.cpp b/source/source_relax/relax_driver.cpp index 9b5217d77c..d1c69df8b0 100644 --- a/source/source_relax/relax_driver.cpp +++ b/source/source_relax/relax_driver.cpp @@ -1,12 +1,11 @@ #include "relax_driver.h" #include "source_base/global_file.h" -#include "source_pw/module_pwdft/global.h" // use chr. -#include "source_io/cif_io.h" -#include "source_io/json_output/output_info.h" -#include "source_io/output_log.h" -#include "source_io/print_info.h" -#include "source_io/read_exit_file.h" +#include "source_io/module_output/cif_io.h" +#include "source_io/module_json/output_info.h" +#include "source_io/module_output/output_log.h" +#include "source_io/module_output/print_info.h" +#include "source_io/module_output/read_exit_file.h" #include "source_io/module_parameter/parameter.h" #include "source_cell/print_cell.h" diff --git a/source/source_relax/relax_sync.cpp b/source/source_relax/relax_sync.cpp index a788af2f68..492feaea49 100644 --- a/source/source_relax/relax_sync.cpp +++ b/source/source_relax/relax_sync.cpp @@ -6,7 +6,6 @@ #include "source_base/tool_title.h" #include "source_cell/update_cell.h" #include "source_cell/print_cell.h" -#include "source_pw/module_pwdft/global.h" #include "source_io/module_parameter/parameter.h" #include "source_relax/ions_move_basic.h" @@ -384,7 +383,7 @@ void Relax::perform_line_search() // perform line search bool restart_brent = false; double x = dmovel, y = etot; - double xnew, yd; + double xnew = 0.0, yd = 0.0; brent_done = this->ls.line_search(restart_brent, x, y, f, xnew, force_thr_eva); dmove = xnew; @@ -498,7 +497,7 @@ void Relax::move_cell_ions(UnitCell& ucell, const bool is_new_dir) // or a line search step, the treatment is slightly different // and the input variable is_new_dir is used to make the distinction - double fac; // fac1 for force, fac2 for stress + double fac = 0.0; // fac1 for force, fac2 for stress if (is_new_dir) { fac = 1.0; @@ -595,8 +594,7 @@ void Relax::move_cell_ions(UnitCell& ucell, const bool is_new_dir) // ================================================================= // Calculating displacement in Cartesian coordinate (in Angstrom) - double move_ion[nat * 3]; - ModuleBase::zeros(move_ion, nat * 3); + std::vector move_ion(nat * 3, 0.0); for (int iat = 0; iat < nat; iat++) { @@ -631,10 +629,10 @@ void Relax::move_cell_ions(UnitCell& ucell, const bool is_new_dir) if (ModuleSymmetry::Symmetry::symm_flag && ucell.symm.all_mbl && ucell.symm.nrotk > 0) { - ucell.symm.symmetrize_vec3_nat(move_ion); + ucell.symm.symmetrize_vec3_nat(move_ion.data()); } - unitcell::update_pos_taud(ucell.lat,move_ion,ucell.ntype,ucell.nat,ucell.atoms); + unitcell::update_pos_taud(ucell.lat,move_ion.data(),ucell.ntype,ucell.nat,ucell.atoms); // Print the structure file. unitcell::print_tau(ucell.atoms,ucell.Coordinate,ucell.ntype,ucell.lat0,GlobalV::ofs_running); diff --git a/source/source_relax/test/CMakeLists.txt b/source/source_relax/test/CMakeLists.txt index 5f8a600cc6..5bb86f60e6 100644 --- a/source/source_relax/test/CMakeLists.txt +++ b/source/source_relax/test/CMakeLists.txt @@ -7,19 +7,19 @@ remove_definitions(-D__ROCM) install(DIRECTORY support DESTINATION ${CMAKE_CURRENT_BINARY_DIR}) AddTest( - TARGET relax_new_line_search + TARGET MODULE_RELAX_relax_new_line_search LIBS parameter SOURCES line_search_test.cpp ../line_search.cpp ../../source_base/global_variable.cpp ../../source_base/global_file.cpp ../../source_base/global_function.cpp ../../source_base/memory.cpp ../../source_base/timer.cpp ../../source_base/tool_quit.cpp ) AddTest( - TARGET relax_new_relax + TARGET MODULE_RELAX_relax_new_relax SOURCES relax_test.cpp ../relax_sync.cpp ../line_search.cpp ../../source_base/tool_quit.cpp ../../source_base/global_variable.cpp ../../source_base/global_file.cpp ../../source_base/memory.cpp ../../source_base/timer.cpp ../../source_base/matrix3.cpp ../../source_base/intarray.cpp ../../source_base/tool_title.cpp ../../source_base/global_function.cpp ../../source_base/complexmatrix.cpp ../../source_base/matrix.cpp ../../source_base/complexarray.cpp ../../source_base/tool_quit.cpp ../../source_base/realarray.cpp ../../source_base/module_external/blas_connector_base.cpp ../../source_base/module_external/blas_connector_vector.cpp ../../source_base/module_external/blas_connector_matrix.cpp - ../../source_cell/update_cell.cpp ../../source_cell/print_cell.cpp ../../source_cell/bcast_cell.cpp ../../source_io/output.cpp + ../../source_cell/update_cell.cpp ../../source_cell/print_cell.cpp ../../source_cell/bcast_cell.cpp ../../source_io/module_output/output.cpp LIBS parameter ${math_libs} ) @@ -27,71 +27,72 @@ list(APPEND cell_source_files ../../source_cell/update_cell.cpp ../../source_cell/bcast_cell.cpp ../../source_cell/print_cell.cpp - ../../source_io/output.cpp + ../../source_io/module_output/output.cpp ) AddTest( - TARGET lattice_change_methods_test - LIBS parameter ${math_libs} base device - SOURCES lattice_change_methods_test.cpp ../lattice_change_methods.cpp ../lattice_change_basic.cpp + TARGET MODULE_RELAX_lattice_change_methods_test + LIBS parameter ${math_libs} base device + SOURCES lattice_change_methods_test.cpp ../lattice_change_methods.cpp ../lattice_change_basic.cpp mock_remake_cell.cpp ) AddTest( - TARGET lattice_change_basic_test - LIBS parameter ${math_libs} base device - SOURCES lattice_change_basic_test.cpp ../lattice_change_basic.cpp + TARGET MODULE_RELAX_lattice_change_basic_test + LIBS parameter ${math_libs} base device + SOURCES lattice_change_basic_test.cpp ../lattice_change_basic.cpp mock_remake_cell.cpp ) AddTest( - TARGET lattice_change_cg_test - LIBS parameter ${math_libs} base device - SOURCES lattice_change_cg_test.cpp - ../lattice_change_cg.cpp + TARGET MODULE_RELAX_lattice_change_cg_test + LIBS parameter ${math_libs} base device + SOURCES lattice_change_cg_test.cpp + ../lattice_change_cg.cpp ../lattice_change_basic.cpp - ../../source_io/orb_io.cpp + mock_remake_cell.cpp + ../../source_io/module_output/orb_io.cpp ) AddTest( - TARGET bfgs_basic_test + TARGET MODULE_RELAX_bfgs_basic_test LIBS parameter ${math_libs} base device SOURCES bfgs_basic_test.cpp ../bfgs_basic.cpp ) AddTest( - TARGET bfgs_test + TARGET MODULE_RELAX_bfgs_test LIBS parameter ${math_libs} base device SOURCES bfgs_test.cpp ../bfgs.cpp ../ions_move_basic.cpp ../matrix_methods.cpp ${cell_source_files} ) AddTest( - TARGET ions_move_basic_test + TARGET MODULE_RELAX_ions_move_basic_test LIBS parameter ${math_libs} base device SOURCES ions_move_basic_test.cpp ../ions_move_basic.cpp ${cell_source_files} ) AddTest( - TARGET ions_move_bfgs_test + TARGET MODULE_RELAX_ions_move_bfgs_test LIBS parameter ${math_libs} base device SOURCES ions_move_bfgs_test.cpp ../ions_move_bfgs.cpp ../ions_move_basic.cpp ../bfgs_basic.cpp - ../../source_io/orb_io.cpp + ../../source_io/module_output/orb_io.cpp ${cell_source_files} ) AddTest( - TARGET ions_move_cg_test + TARGET MODULE_RELAX_ions_move_cg_test LIBS parameter ${math_libs} base device SOURCES ions_move_cg_test.cpp ../ions_move_cg.cpp ../ions_move_basic.cpp - ../../source_io/orb_io.cpp + ../../source_io/module_output/orb_io.cpp ${cell_source_files} ) AddTest( - TARGET ions_move_sd_test + TARGET MODULE_RELAX_ions_move_sd_test LIBS parameter ${math_libs} base device SOURCES ions_move_sd_test.cpp ../ions_move_sd.cpp ../ions_move_basic.cpp ${cell_source_files} ) \ No newline at end of file diff --git a/source/source_relax/test/bfgs_test.cpp b/source/source_relax/test/bfgs_test.cpp index dcd9bdaa3c..fb82b90ca0 100644 --- a/source/source_relax/test/bfgs_test.cpp +++ b/source/source_relax/test/bfgs_test.cpp @@ -1,74 +1,215 @@ -#include +// source/source_relax/test/bfgs_test.cpp +#include "gtest/gtest.h" +#include "gmock/gmock.h" #include "for_test.h" + +#define private public #include "source_relax/bfgs.h" -#include "source_cell/unitcell.h" -#include "source_base/matrix.h" -#include "source_relax/ions_move_basic.h" -#include "source_relax/matrix_methods.h" +#undef private + +#define private public +#include "source_io/module_parameter/parameter.h" +#undef private + +#include "source_relax/ions_move_basic.h" // for Ions_Move_Basic static members + +/************************************************ + * unit tests for BFGS (no MockUnitCell) + ***********************************************/ class BFGSTest : public ::testing::Test { protected: BFGS bfgs; - UnitCell ucell; - std::vector> force; - - void SetUp() override { - int size = 10; - bfgs.allocate(size); - - ucell.ntype = 2; - ucell.lat0 = 1.0; - ucell.nat = 10; - ucell.atoms = new Atom[ucell.ntype]; - for (int i = 0; i < ucell.ntype; i++) { - ucell.atoms[i].na = 5; - ucell.atoms[i].tau = std::vector>(5); - ucell.atoms[i].taud = std::vector>(5); - ucell.atoms[i].mbl = std::vector>(5, {1, 1, 1}); - } + void SetUp() override + { + // Initialize variables before each test + } - force = std::vector>(size, std::vector(3, 0.0)); - for (int i = 0; i < force.size(); ++i) { - for (int j = 0; j < 3; ++j) { - force[i][j] = -0.1 * (i + 1); - } - } + void TearDown() override + { + // nothing global to clean here } }; -TEST_F(BFGSTest, PrepareStep) { - bfgs.PrepareStep(force, bfgs.pos, bfgs.H, bfgs.pos0, bfgs.force0, bfgs.steplength, bfgs.dpos, ucell); - EXPECT_EQ(bfgs.steplength.size(), 10); - for (int i = 0; i < 10; ++i) { - EXPECT_GT(bfgs.steplength[i], 0); - } +// Test whether the allocate() function can correctly allocate memory space +TEST_F(BFGSTest, TestAllocate) +{ + int size = 2; + bfgs.allocate(size); + + // Check if allocated arrays are not empty + EXPECT_FALSE(bfgs.H.empty()); + EXPECT_FALSE(bfgs.pos.empty()); + EXPECT_FALSE(bfgs.pos0.empty()); + EXPECT_FALSE(bfgs.pos_taud.empty()); + EXPECT_FALSE(bfgs.pos_taud0.empty()); + EXPECT_FALSE(bfgs.force.empty()); + EXPECT_FALSE(bfgs.force0.empty()); + EXPECT_FALSE(bfgs.steplength.empty()); + EXPECT_FALSE(bfgs.dpos.empty()); + EXPECT_EQ(bfgs.size, size); + EXPECT_EQ(bfgs.alpha,70); + EXPECT_EQ(bfgs.maxstep,PARAM.inp.relax_bfgs_rmax); + EXPECT_TRUE(bfgs.sign); + EXPECT_EQ(bfgs.largest_grad,0.0); } +// Test if a dimension less than or equal to 0 results in an assertion error +TEST_F(BFGSTest, TestAllocateWithZeroDimension) +{ + int size = 0; + ASSERT_DEATH(bfgs.allocate(size), ""); +} -TEST_F(BFGSTest, AllocateTest) { - BFGS bfgs; - int size = 5; +// Test DetermineStep scaling +TEST_F(BFGSTest, DetermineStepScaling) +{ + int size = 2; bfgs.allocate(size); + std::vector steplength = {1.0, 0.1}; + std::vector> dpos = { + ModuleBase::Vector3(1.0, 1.0, 1.0), + ModuleBase::Vector3(0.1, 0.1, 0.1) + }; + double maxstep = 0.5; + bfgs.DetermineStep(steplength, dpos, maxstep); + + // first atom scaled down to maxstep + EXPECT_NEAR(dpos[0][0], 0.5, 1e-12); + EXPECT_NEAR(dpos[0][1], 0.5, 1e-12); + EXPECT_NEAR(dpos[0][2], 0.5, 1e-12); + + // second atom unchanged (small) + EXPECT_NEAR(dpos[1][0], 0.05, 1e-12); + EXPECT_NEAR(dpos[1][1], 0.05, 1e-12); + EXPECT_NEAR(dpos[1][2], 0.05, 1e-12); +} + +// Test GetPos and GetPostaud without creating extra helper class +TEST_F(BFGSTest, GetPosAndPostaud) +{ + // prepare UnitCell with 1 type and 2 atoms + UnitCell ucell; + ucell.ntype = 1; + ucell.nat = 2; + ucell.lat0 = 2.0; + + // allocate atoms array + ucell.atoms = new Atom[ucell.ntype]; + ucell.atoms[0].na = 2; + ucell.atoms[0].tau = std::vector>(2); + ucell.atoms[0].taud = std::vector>(2); + ucell.atoms[0].mbl = std::vector>(2, {1, 1, 1}); + + // set coordinates + ucell.atoms[0].tau[0].x = 1.0; ucell.atoms[0].tau[0].y = 2.0; ucell.atoms[0].tau[0].z = 3.0; + ucell.atoms[0].tau[1].x = 2.0; ucell.atoms[0].tau[1].y = 3.0; ucell.atoms[0].tau[1].z = 4.0; + ucell.atoms[0].taud[0].x = 0.1; ucell.atoms[0].taud[0].y = 0.2; ucell.atoms[0].taud[0].z = 0.3; + ucell.atoms[0].taud[1].x = 0.4; ucell.atoms[0].taud[1].y = 0.5; ucell.atoms[0].taud[1].z = 0.6; + + // allocate mapping arrays + ucell.iat2it = new int[ucell.nat]; + ucell.iat2ia = new int[ucell.nat]; + int k = 0; + for (int it = 0; it < ucell.ntype; ++it) { + for (int ia = 0; ia < ucell.atoms[it].na; ++ia) { + ucell.iat2it[k] = it; + ucell.iat2ia[k] = ia; + ++k; + } + } + + // allocate bfgs arrays and call getters + bfgs.allocate(ucell.nat); + bfgs.GetPos(ucell, bfgs.pos); + bfgs.GetPostaud(ucell, bfgs.pos_taud); + + // pos is tau * BOHR_TO_A * lat0 + EXPECT_DOUBLE_EQ(bfgs.pos[0][0], ucell.atoms[0].tau[0].x * ModuleBase::BOHR_TO_A * ucell.lat0); + EXPECT_DOUBLE_EQ(bfgs.pos_taud[1][2], ucell.atoms[0].taud[1].z); +} + +// Test CalculateLargestGrad (uses ModuleBase::matrix) +TEST_F(BFGSTest, CalculateLargestGrad) +{ + // UnitCell with 1 type and 2 atoms + UnitCell ucell; + ucell.ntype = 1; + ucell.nat = 2; + ucell.lat0 = 2.0; + + ucell.atoms = new Atom[ucell.ntype]; + ucell.atoms[0].na = 2; + ucell.atoms[0].mbl = std::vector>(2, {1, 1, 1}); - EXPECT_EQ(bfgs.steplength.size(), size); - EXPECT_EQ(bfgs.force0.size(), 3*size); - EXPECT_EQ(bfgs.H.size(), 3*size); - for (const auto& row : bfgs.H) { - EXPECT_EQ(row.size(), 3*size); + // mapping arrays + ucell.iat2it = new int[ucell.nat]; + ucell.iat2ia = new int[ucell.nat]; + int k = 0; + for (int it = 0; it < ucell.ntype; ++it) { + for (int ia = 0; ia < ucell.atoms[it].na; ++ia) { + ucell.iat2it[k] = it; + ucell.iat2ia[k] = ia; + ++k; + } } + + // build force matrix: 2 atoms x 3 components + ModuleBase::matrix force(2, 3); + force(0, 0) = -2.0; // this yields grad component = -(-2.0)*lat0 = 4.0 -> divided by lat0 => 2.0 + force(0, 1) = 0.0; + force(0, 2) = 1.0; + force(1, 0) = 3.0; // this yields abs = 6.0 -> divided by lat0 => 3.0 (this should be largest) + force(1, 1) = -1.0; + force(1, 2) = 0.0; + + bfgs.allocate(ucell.nat); + bfgs.CalculateLargestGrad(force, ucell); + + // expected largest_grad = 3.0 (see calculation above) + EXPECT_NEAR(bfgs.largest_grad, 6.0, 1e-12); } -TEST_F(BFGSTest, FullStepTest) -{ - BFGS bfgs; - UnitCell ucell; - ModuleBase::matrix force(3, 3); - int size = 3; - bfgs.allocate(size); - force(0, 0)=-0.5; - force(1, 1)=-0.3; - force(2, 2)=0.1; - EXPECT_EQ(bfgs.force.size(), size); - EXPECT_EQ(bfgs.pos.size(), size); +// Test relax_step basic functionality +TEST_F(BFGSTest, RelaxStepBasic) +{ + // Setup UnitCell with 1 type, 2 atoms + UnitCell ucell; + ucell.ntype = 1; + ucell.nat = 2; + ucell.lat0 = 1.0; + ucell.atoms = new Atom[ucell.ntype]; + ucell.atoms[0].na = 2; + ucell.atoms[0].tau = std::vector>(2); + ucell.atoms[0].taud = std::vector>(2); + ucell.atoms[0].mbl = std::vector>(2, {1, 1, 1}); + ucell.iat2it = new int[ucell.nat]; + ucell.iat2ia = new int[ucell.nat]; + int k = 0; + for (int it = 0; it < ucell.ntype; ++it) { + for (int ia = 0; ia < ucell.atoms[it].na; ++ia) { + ucell.iat2it[k] = it; + ucell.iat2ia[k] = ia; + ++k; + } + } + // Set initial positions + ucell.atoms[0].tau[0].x = 0.0; ucell.atoms[0].tau[0].y = 0.0; ucell.atoms[0].tau[0].z = 0.0; + ucell.atoms[0].tau[1].x = 1.0; ucell.atoms[0].tau[1].y = 0.0; ucell.atoms[0].tau[1].z = 0.0; + // Setup force matrix + ModuleBase::matrix force(2, 3); + force(0, 0) = 0.1; force(0, 1) = 0.0; force(0, 2) = 0.0; + force(1, 0) = -0.1; force(1, 1) = 0.0; force(1, 2) = 0.0; + // Allocate and call relax_step + bfgs.allocate(ucell.nat); + bfgs.relax_step(force, ucell); + // Check that ionic_position_updated is true + EXPECT_TRUE(ucell.ionic_position_updated); + // Check that force values are set (converted units) + EXPECT_NEAR(bfgs.force[0][0], 0.1 * ModuleBase::Ry_to_eV / ModuleBase::BOHR_TO_A, 1e-12); + EXPECT_NEAR(bfgs.force[1][0], -0.1 * ModuleBase::Ry_to_eV / ModuleBase::BOHR_TO_A, 1e-12); + // Check that positions are updated (not equal to initial) + EXPECT_NEAR(bfgs.pos[0][0], 0.0, 1e-12); + EXPECT_NE(bfgs.pos[1][0], 1.0); } \ No newline at end of file diff --git a/source/source_relax/test/for_test.h b/source/source_relax/test/for_test.h index 004d7da052..5696476d49 100644 --- a/source/source_relax/test/for_test.h +++ b/source/source_relax/test/for_test.h @@ -99,8 +99,12 @@ pseudo::pseudo() pseudo::~pseudo() { } +SepPot::SepPot(){} +SepPot::~SepPot(){} +Sep_Cell::Sep_Cell() noexcept {} +Sep_Cell::~Sep_Cell() noexcept {} int ModuleSymmetry::Symmetry::symm_flag = 0; void ModuleSymmetry::Symmetry::symmetrize_mat3(ModuleBase::matrix& sigma, const Lattice& lat)const {}; void ModuleSymmetry::Symmetry::symmetrize_vec3_nat(double* v)const {}; -#endif \ No newline at end of file +#endif diff --git a/source/source_relax/test/ions_move_cg_test.cpp b/source/source_relax/test/ions_move_cg_test.cpp index f3ce632f0f..c0aa34dcec 100644 --- a/source/source_relax/test/ions_move_cg_test.cpp +++ b/source/source_relax/test/ions_move_cg_test.cpp @@ -138,7 +138,7 @@ TEST_F(IonsMoveCGTest, TestStartSd) // setup data Ions_Move_Basic::istep = 1; Ions_Move_Basic::converged = false; - Ions_Move_Basic::relax_method = "cg_bfgs"; + Ions_Move_Basic::relax_method[0] = "cg_bfgs"; Ions_Move_CG::RELAX_CG_THR = 100.0; UnitCell ucell; setupucell(ucell); @@ -162,7 +162,7 @@ TEST_F(IonsMoveCGTest, TestStartSd) EXPECT_THAT(output, testing::HasSubstr(expected_output)); EXPECT_EQ(Ions_Move_Basic::converged, false); EXPECT_EQ(Ions_Move_Basic::update_iter, 5); - EXPECT_EQ(Ions_Move_Basic::relax_method, "bfgs"); + EXPECT_EQ(Ions_Move_Basic::relax_method[0], "bfgs"); EXPECT_DOUBLE_EQ(Ions_Move_Basic::largest_grad, 0.01); EXPECT_DOUBLE_EQ(Ions_Move_Basic::best_xxx, -1.0); EXPECT_DOUBLE_EQ(Ions_Move_Basic::relax_bfgs_init, 1.0); @@ -201,7 +201,7 @@ TEST_F(IonsMoveCGTest, TestStartTrialGoto) EXPECT_THAT(output, testing::HasSubstr(expected_output)); EXPECT_EQ(Ions_Move_Basic::converged, false); EXPECT_EQ(Ions_Move_Basic::update_iter, 5); - EXPECT_EQ(Ions_Move_Basic::relax_method, "bfgs"); + EXPECT_EQ(Ions_Move_Basic::relax_method[0], "bfgs"); EXPECT_DOUBLE_EQ(Ions_Move_Basic::largest_grad, 0.001); EXPECT_DOUBLE_EQ(Ions_Move_Basic::best_xxx, -1.0); EXPECT_DOUBLE_EQ(Ions_Move_Basic::relax_bfgs_init, 10.0); @@ -239,7 +239,7 @@ TEST_F(IonsMoveCGTest, TestStartTrial) EXPECT_THAT(output, testing::HasSubstr(expected_output)); EXPECT_EQ(Ions_Move_Basic::converged, false); EXPECT_EQ(Ions_Move_Basic::update_iter, 5); - EXPECT_EQ(Ions_Move_Basic::relax_method, "bfgs"); + EXPECT_EQ(Ions_Move_Basic::relax_method[0], "bfgs"); EXPECT_DOUBLE_EQ(Ions_Move_Basic::largest_grad, 0.01); EXPECT_DOUBLE_EQ(Ions_Move_Basic::best_xxx, -1.0); EXPECT_DOUBLE_EQ(Ions_Move_Basic::relax_bfgs_init, 70.0); @@ -279,7 +279,7 @@ TEST_F(IonsMoveCGTest, TestStartNoTrialGotoCase1) EXPECT_THAT(output, testing::HasSubstr(expected_output)); EXPECT_EQ(Ions_Move_Basic::converged, false); EXPECT_EQ(Ions_Move_Basic::update_iter, 5); - EXPECT_EQ(Ions_Move_Basic::relax_method, "bfgs"); + EXPECT_EQ(Ions_Move_Basic::relax_method[0], "bfgs"); EXPECT_DOUBLE_EQ(Ions_Move_Basic::largest_grad, 0.001); EXPECT_DOUBLE_EQ(Ions_Move_Basic::best_xxx, -1.0); EXPECT_DOUBLE_EQ(Ions_Move_Basic::relax_bfgs_init, 490.0); @@ -318,7 +318,7 @@ TEST_F(IonsMoveCGTest, TestStartNoTrialGotoCase2) EXPECT_THAT(output, testing::HasSubstr(expected_output)); EXPECT_EQ(Ions_Move_Basic::converged, false); EXPECT_EQ(Ions_Move_Basic::update_iter, 5); - EXPECT_EQ(Ions_Move_Basic::relax_method, "bfgs"); + EXPECT_EQ(Ions_Move_Basic::relax_method[0], "bfgs"); EXPECT_DOUBLE_EQ(Ions_Move_Basic::largest_grad, 0.01); EXPECT_DOUBLE_EQ(Ions_Move_Basic::best_xxx, -1.0); EXPECT_DOUBLE_EQ(Ions_Move_Basic::relax_bfgs_init, 70.0); @@ -358,7 +358,7 @@ TEST_F(IonsMoveCGTest, TestStartNoTrial) EXPECT_THAT(output, testing::HasSubstr(expected_output)); EXPECT_EQ(Ions_Move_Basic::converged, false); EXPECT_EQ(Ions_Move_Basic::update_iter, 5); - EXPECT_EQ(Ions_Move_Basic::relax_method, "bfgs"); + EXPECT_EQ(Ions_Move_Basic::relax_method[0], "bfgs"); EXPECT_DOUBLE_EQ(Ions_Move_Basic::largest_grad, 0.001); EXPECT_DOUBLE_EQ(Ions_Move_Basic::best_xxx, -1.0); EXPECT_NEAR(Ions_Move_Basic::relax_bfgs_init, 1.2345679012345678, 1e-12); diff --git a/source/source_relax/test/ions_move_methods_test.cpp b/source/source_relax/test/ions_move_methods_test.cpp index 27e7315d68..464377f643 100644 --- a/source/source_relax/test/ions_move_methods_test.cpp +++ b/source/source_relax/test/ions_move_methods_test.cpp @@ -19,6 +19,64 @@ * - Ions_Move_Methods::get_update_iter() */ + // Mock the remake_cell function from update_cell.h +namespace unitcell +{ + // Track if remake_cell was called and with what lattice + static bool remake_cell_called = false; + static std::string remake_cell_latName; + static ModuleBase::Matrix3 remake_cell_latvec; + + void remake_cell(Lattice& lat) + { + remake_cell_called = true; + remake_cell_latName = lat.latName; + remake_cell_latvec = lat.latvec; + + // Mock implementation: enforce simple cubic structure for "sc" + if (lat.latName == "sc") + { + double celldm = std::sqrt(lat.latvec.e11 * lat.latvec.e11 + + lat.latvec.e12 * lat.latvec.e12 + + lat.latvec.e13 * lat.latvec.e13); + lat.latvec.Zero(); + lat.latvec.e11 = celldm; + lat.latvec.e22 = celldm; + lat.latvec.e33 = celldm; + } + // Mock implementation: enforce FCC structure for "fcc" + else if (lat.latName == "fcc") + { + double celldm = std::sqrt(lat.latvec.e11 * lat.latvec.e11 + + lat.latvec.e12 * lat.latvec.e12 + + lat.latvec.e13 * lat.latvec.e13) / std::sqrt(2.0); + lat.latvec.e11 = -celldm; + lat.latvec.e12 = 0.0; + lat.latvec.e13 = celldm; + lat.latvec.e21 = 0.0; + lat.latvec.e22 = celldm; + lat.latvec.e23 = celldm; + lat.latvec.e31 = -celldm; + lat.latvec.e32 = celldm; + lat.latvec.e33 = 0.0; + } + } + + // Helper function to reset mock state + void reset_remake_cell_mock() + { + remake_cell_called = false; + remake_cell_latName = ""; + remake_cell_latvec.Zero(); + } + + // Helper function to check if remake_cell was called + bool was_remake_cell_called() + { + return remake_cell_called; + } +} + // Define a fixture for the tests class IonsMoveMethodsTest : public ::testing::Test { @@ -40,19 +98,19 @@ class IonsMoveMethodsTest : public ::testing::Test // Test the allocate() function TEST_F(IonsMoveMethodsTest, Allocate) { - Ions_Move_Basic::relax_method = "bfgs"; + Ions_Move_Basic::relax_method[0] = "bfgs"; imm.allocate(natom); EXPECT_EQ(Ions_Move_Basic::dim, 6); - Ions_Move_Basic::relax_method = "sd"; + Ions_Move_Basic::relax_method[0] = "sd"; imm.allocate(natom); EXPECT_EQ(Ions_Move_Basic::dim, 6); - Ions_Move_Basic::relax_method = "cg"; + Ions_Move_Basic::relax_method[0] = "cg"; imm.allocate(natom); EXPECT_EQ(Ions_Move_Basic::dim, 6); - Ions_Move_Basic::relax_method = "cg_bfgs"; + Ions_Move_Basic::relax_method[0] = "cg_bfgs"; imm.allocate(natom); EXPECT_EQ(Ions_Move_Basic::dim, 6); } @@ -60,7 +118,7 @@ TEST_F(IonsMoveMethodsTest, Allocate) // Test the allocate() function warning quit TEST_F(IonsMoveMethodsTest, AllocateWarningQuit) { - Ions_Move_Basic::relax_method = "none"; + Ions_Move_Basic::relax_method[0] = "none"; GlobalV::ofs_warning.open("log"); imm.allocate(natom); GlobalV::ofs_warning.close(); @@ -81,22 +139,22 @@ TEST_F(IonsMoveMethodsTest, CalMovement) const double etot = 0.0; UnitCell ucell; - Ions_Move_Basic::relax_method = "bfgs"; + Ions_Move_Basic::relax_method[0] = "bfgs"; imm.allocate(natom); imm.cal_movement(istep, force_step, f, etot, ucell); EXPECT_EQ(Ions_Move_Basic::istep, force_step); - Ions_Move_Basic::relax_method = "sd"; + Ions_Move_Basic::relax_method[0] = "sd"; imm.allocate(natom); imm.cal_movement(istep, force_step, f, etot, ucell); EXPECT_EQ(Ions_Move_Basic::istep, force_step); - Ions_Move_Basic::relax_method = "cg"; + Ions_Move_Basic::relax_method[0] = "cg"; imm.allocate(natom); imm.cal_movement(istep, force_step, f, etot, ucell); EXPECT_EQ(Ions_Move_Basic::istep, force_step); - Ions_Move_Basic::relax_method = "cg_bfgs"; + Ions_Move_Basic::relax_method[0] = "cg_bfgs"; imm.allocate(natom); imm.cal_movement(istep, force_step, f, etot, ucell); EXPECT_EQ(Ions_Move_Basic::istep, force_step); @@ -110,7 +168,7 @@ TEST_F(IonsMoveMethodsTest, CalMovementWarningQuit) const ModuleBase::matrix f(3, 3); const double etot = 0.0; UnitCell ucell; - Ions_Move_Basic::relax_method = "none"; + Ions_Move_Basic::relax_method[0] = "none"; imm.allocate(natom); GlobalV::ofs_warning.open("log"); diff --git a/source/source_relax/test/lattice_change_basic_test.cpp b/source/source_relax/test/lattice_change_basic_test.cpp index 4a12fca3fb..b40af6d88a 100644 --- a/source/source_relax/test/lattice_change_basic_test.cpp +++ b/source/source_relax/test/lattice_change_basic_test.cpp @@ -1,10 +1,13 @@ #include "source_relax/lattice_change_basic.h" +#include "mock_remake_cell.h" #include "for_test.h" #include "gtest/gtest.h" +#include "gmock/gmock.h" #define private public #include "source_io/module_parameter/parameter.h" #undef private + /************************************************ * unit tests of namespace Lattice_Change_Basic ***********************************************/ @@ -30,11 +33,17 @@ class LatticeChangeBasicTest : public ::testing::Test { // Initialize variables before each test stress.create(3, 3); + // Reset mock state before each test + unitcell::reset_remake_cell_mock(); + // Reset fixed_ibrav to default + PARAM.input.fixed_ibrav = false; } virtual void TearDown() { // Clean up after each test + unitcell::reset_remake_cell_mock(); + PARAM.input.fixed_ibrav = false; } }; @@ -525,3 +534,584 @@ TEST_F(LatticeChangeBasicTest, SetupEtotJudgementFalse) EXPECT_DOUBLE_EQ(80.0, Lattice_Change_Basic::etot); EXPECT_DOUBLE_EQ(-20.0, Lattice_Change_Basic::ediff); } + +// ============================================================================ +// NEW TESTS FOR SHAPE CONSTRAINT, VOLUME RESCALING, AND FIXED_IBRAV +// ============================================================================ + +// Test the setup_gradient function with fixed_axes = "shape" +TEST_F(LatticeChangeBasicTest, SetupGradientShape) +{ + // Initialize variables + ucell.lc[0] = 1; + ucell.lc[1] = 1; + ucell.lc[2] = 1; + + // Non-isotropic stress tensor + stress(0, 0) = 1.0; + stress(0, 1) = 2.0; + stress(0, 2) = 3.0; + stress(1, 0) = 4.0; + stress(1, 1) = 5.0; + stress(1, 2) = 6.0; + stress(2, 0) = 7.0; + stress(2, 1) = 8.0; + stress(2, 2) = 9.0; + + Lattice_Change_Basic::fixed_axes = "shape"; + + // Call setup_gradient method + Lattice_Change_Basic::setup_gradient(ucell, lat, grad, stress); + + // Check that stress becomes isotropic (only diagonal, all equal) + // Average pressure = (1 + 5 + 9) / 3 = 5 + EXPECT_DOUBLE_EQ(stress(0, 0), 5.0); + EXPECT_DOUBLE_EQ(stress(1, 1), 5.0); + EXPECT_DOUBLE_EQ(stress(2, 2), 5.0); + + // Off-diagonal elements should be zero + EXPECT_DOUBLE_EQ(stress(0, 1), 0.0); + EXPECT_DOUBLE_EQ(stress(0, 2), 0.0); + EXPECT_DOUBLE_EQ(stress(1, 0), 0.0); + EXPECT_DOUBLE_EQ(stress(1, 2), 0.0); + EXPECT_DOUBLE_EQ(stress(2, 0), 0.0); + EXPECT_DOUBLE_EQ(stress(2, 1), 0.0); +} + +// Test volume constraint rescaling in change_lattice +TEST_F(LatticeChangeBasicTest, ChangeLatticeVolumeRescaling) +{ + // Initialize variables + ucell.lc[0] = 1; + ucell.lc[1] = 1; + ucell.lc[2] = 1; + ucell.lat0 = 10.0; + + // Set initial lattice (cubic, volume = 1000) + ucell.latvec.e11 = 1.0; + ucell.latvec.e12 = 0.0; + ucell.latvec.e13 = 0.0; + ucell.latvec.e21 = 0.0; + ucell.latvec.e22 = 1.0; + ucell.latvec.e23 = 0.0; + ucell.latvec.e31 = 0.0; + ucell.latvec.e32 = 0.0; + ucell.latvec.e33 = 1.0; + + ucell.omega = 1000.0; // Initial volume + + lat[0] = 10.0; + lat[1] = 0.0; + lat[2] = 0.0; + lat[3] = 0.0; + lat[4] = 10.0; + lat[5] = 0.0; + lat[6] = 0.0; + lat[7] = 0.0; + lat[8] = 10.0; + + // Apply a move that would change volume (expand by 10%) + move[0] = 1.0; + move[1] = 0.0; + move[2] = 0.0; + move[3] = 0.0; + move[4] = 1.0; + move[5] = 0.0; + move[6] = 0.0; + move[7] = 0.0; + move[8] = 1.0; + + Lattice_Change_Basic::fixed_axes = "volume"; + + // Call change_lattice method + Lattice_Change_Basic::change_lattice(ucell, move, lat); + + // Check that volume is preserved (should still be 1000) + EXPECT_NEAR(ucell.omega, 1000.0, 1e-8); + + // Check that lattice vectors were rescaled uniformly + double expected_scale = std::pow(1000.0 / 1331.0, 1.0/3.0); // (old_vol / new_vol)^(1/3) + EXPECT_NEAR(ucell.latvec.e11, 1.1 * expected_scale, 1e-10); + EXPECT_NEAR(ucell.latvec.e22, 1.1 * expected_scale, 1e-10); + EXPECT_NEAR(ucell.latvec.e33, 1.1 * expected_scale, 1e-10); +} + +// Test volume constraint with non-cubic cell +TEST_F(LatticeChangeBasicTest, ChangeLatticeVolumeRescalingNonCubic) +{ + // Initialize variables + ucell.lc[0] = 1; + ucell.lc[1] = 1; + ucell.lc[2] = 1; + ucell.lat0 = 10.0; + + // Set initial lattice (non-cubic, volume = 1200) + ucell.latvec.e11 = 1.0; + ucell.latvec.e12 = 0.0; + ucell.latvec.e13 = 0.0; + ucell.latvec.e21 = 0.0; + ucell.latvec.e22 = 1.2; + ucell.latvec.e23 = 0.0; + ucell.latvec.e31 = 0.0; + ucell.latvec.e32 = 0.0; + ucell.latvec.e33 = 1.0; + + ucell.omega = 1200.0; // Initial volume + + lat[0] = 10.0; + lat[1] = 0.0; + lat[2] = 0.0; + lat[3] = 0.0; + lat[4] = 12.0; + lat[5] = 0.0; + lat[6] = 0.0; + lat[7] = 0.0; + lat[8] = 10.0; + + // Apply a move that would change volume + move[0] = 0.5; + move[1] = 0.0; + move[2] = 0.0; + move[3] = 0.0; + move[4] = -0.5; + move[5] = 0.0; + move[6] = 0.0; + move[7] = 0.0; + move[8] = 0.3; + + Lattice_Change_Basic::fixed_axes = "volume"; + + // Call change_lattice method + Lattice_Change_Basic::change_lattice(ucell, move, lat); + + // Check that volume is preserved + EXPECT_NEAR(ucell.omega, 1200.0, 1e-8); +} + +// Test change_lattice without volume constraint (should change volume) +TEST_F(LatticeChangeBasicTest, ChangeLatticeNoVolumeConstraint) +{ + // Initialize variables + ucell.lc[0] = 1; + ucell.lc[1] = 1; + ucell.lc[2] = 1; + ucell.lat0 = 10.0; + + // Set initial lattice + ucell.latvec.e11 = 1.0; + ucell.latvec.e12 = 0.0; + ucell.latvec.e13 = 0.0; + ucell.latvec.e21 = 0.0; + ucell.latvec.e22 = 1.0; + ucell.latvec.e23 = 0.0; + ucell.latvec.e31 = 0.0; + ucell.latvec.e32 = 0.0; + ucell.latvec.e33 = 1.0; + + ucell.omega = 1000.0; // Initial volume + + lat[0] = 10.0; + lat[1] = 0.0; + lat[2] = 0.0; + lat[3] = 0.0; + lat[4] = 10.0; + lat[5] = 0.0; + lat[6] = 0.0; + lat[7] = 0.0; + lat[8] = 10.0; + + // Apply a move that changes volume + move[0] = 1.0; + move[1] = 0.0; + move[2] = 0.0; + move[3] = 0.0; + move[4] = 1.0; + move[5] = 0.0; + move[6] = 0.0; + move[7] = 0.0; + move[8] = 1.0; + + Lattice_Change_Basic::fixed_axes = "None"; + + // Call change_lattice method + Lattice_Change_Basic::change_lattice(ucell, move, lat); + + // Check that volume DID change (should be 1331) + EXPECT_NEAR(ucell.omega, 1331.0, 1e-8); + + // Check lattice vectors + EXPECT_DOUBLE_EQ(ucell.latvec.e11, 1.1); + EXPECT_DOUBLE_EQ(ucell.latvec.e22, 1.1); + EXPECT_DOUBLE_EQ(ucell.latvec.e33, 1.1); +} + +// Test fixed_ibrav with simple cubic lattice +TEST_F(LatticeChangeBasicTest, ChangeLatticeFixedIbravSimpleCubic) +{ + // Initialize variables + ucell.lc[0] = 1; + ucell.lc[1] = 1; + ucell.lc[2] = 1; + ucell.lat0 = 10.0; + ucell.latName = "sc"; + + // Set initial lattice (slightly distorted cubic) + ucell.latvec.e11 = 1.0; + ucell.latvec.e12 = 0.01; // Small distortion + ucell.latvec.e13 = 0.0; + ucell.latvec.e21 = 0.0; + ucell.latvec.e22 = 1.0; + ucell.latvec.e23 = 0.0; + ucell.latvec.e31 = 0.0; + ucell.latvec.e32 = 0.0; + ucell.latvec.e33 = 1.0; + + lat[0] = 10.0; + lat[1] = 0.1; + lat[2] = 0.0; + lat[3] = 0.0; + lat[4] = 10.0; + lat[5] = 0.0; + lat[6] = 0.0; + lat[7] = 0.0; + lat[8] = 10.0; + + // Apply a move + move[0] = 0.1; + move[1] = 0.0; + move[2] = 0.0; + move[3] = 0.0; + move[4] = 0.1; + move[5] = 0.0; + move[6] = 0.0; + move[7] = 0.0; + move[8] = 0.1; + + PARAM.input.fixed_ibrav = true; + Lattice_Change_Basic::fixed_axes = "None"; + + // Verify remake_cell was not called yet + EXPECT_FALSE(unitcell::was_remake_cell_called()); + + // Call change_lattice method + Lattice_Change_Basic::change_lattice(ucell, move, lat); + + // Verify remake_cell was called + EXPECT_TRUE(unitcell::was_remake_cell_called()); + + // Check that lattice is now perfect cubic (all diagonal, equal) + // This is enforced by the mock remake_cell function + EXPECT_NEAR(ucell.latvec.e11, ucell.latvec.e22, 1e-10); + EXPECT_NEAR(ucell.latvec.e22, ucell.latvec.e33, 1e-10); + EXPECT_NEAR(ucell.latvec.e12, 0.0, 1e-10); + EXPECT_NEAR(ucell.latvec.e13, 0.0, 1e-10); + EXPECT_NEAR(ucell.latvec.e21, 0.0, 1e-10); + EXPECT_NEAR(ucell.latvec.e23, 0.0, 1e-10); + EXPECT_NEAR(ucell.latvec.e31, 0.0, 1e-10); + EXPECT_NEAR(ucell.latvec.e32, 0.0, 1e-10); + + // Reset for other tests + PARAM.input.fixed_ibrav = false; +} + +// Test fixed_ibrav with FCC lattice +TEST_F(LatticeChangeBasicTest, ChangeLatticeFixedIbravFCC) +{ + // Initialize variables + ucell.lc[0] = 1; + ucell.lc[1] = 1; + ucell.lc[2] = 1; + ucell.lat0 = 10.0; + ucell.latName = "fcc"; + + // Set initial lattice (slightly distorted FCC) + double celldm = 1.0; + ucell.latvec.e11 = -celldm + 0.01; // Small distortion + ucell.latvec.e12 = 0.0; + ucell.latvec.e13 = celldm; + ucell.latvec.e21 = 0.0; + ucell.latvec.e22 = celldm; + ucell.latvec.e23 = celldm; + ucell.latvec.e31 = -celldm; + ucell.latvec.e32 = celldm; + ucell.latvec.e33 = 0.0; + + lat[0] = (-celldm + 0.01) * ucell.lat0; + lat[1] = 0.0; + lat[2] = celldm * ucell.lat0; + lat[3] = 0.0; + lat[4] = celldm * ucell.lat0; + lat[5] = celldm * ucell.lat0; + lat[6] = -celldm * ucell.lat0; + lat[7] = celldm * ucell.lat0; + lat[8] = 0.0; + + // Apply a small move + for (int i = 0; i < 9; i++) move[i] = 0.01 * ucell.lat0; + + PARAM.input.fixed_ibrav = true; + Lattice_Change_Basic::fixed_axes = "None"; + + // Verify remake_cell was not called yet + EXPECT_FALSE(unitcell::was_remake_cell_called()); + + // Call change_lattice method + Lattice_Change_Basic::change_lattice(ucell, move, lat); + + // Verify remake_cell was called + EXPECT_TRUE(unitcell::was_remake_cell_called()); + + // Check that lattice maintains FCC structure + // For FCC: a1 = (-a, 0, a), a2 = (0, a, a), a3 = (-a, a, 0) + // All should have same magnitude + double mag1 = std::sqrt(ucell.latvec.e11*ucell.latvec.e11 + + ucell.latvec.e12*ucell.latvec.e12 + + ucell.latvec.e13*ucell.latvec.e13); + double mag2 = std::sqrt(ucell.latvec.e21*ucell.latvec.e21 + + ucell.latvec.e22*ucell.latvec.e22 + + ucell.latvec.e23*ucell.latvec.e23); + double mag3 = std::sqrt(ucell.latvec.e31*ucell.latvec.e31 + + ucell.latvec.e32*ucell.latvec.e32 + + ucell.latvec.e33*ucell.latvec.e33); + + EXPECT_NEAR(mag1, mag2, 1e-10); + EXPECT_NEAR(mag2, mag3, 1e-10); + + // Check FCC structure: e11 should be negative, e13 positive, e12 = 0 + EXPECT_LT(ucell.latvec.e11, 0.0); + EXPECT_GT(ucell.latvec.e13, 0.0); + EXPECT_NEAR(ucell.latvec.e12, 0.0, 1e-10); + + // Reset for other tests + PARAM.input.fixed_ibrav = false; +} + +// Test combination of fixed_axes = "volume" and fixed_ibrav +TEST_F(LatticeChangeBasicTest, ChangeLatticeVolumeAndIbrav) +{ + // Initialize variables + ucell.lc[0] = 1; + ucell.lc[1] = 1; + ucell.lc[2] = 1; + ucell.lat0 = 10.0; + ucell.latName = "sc"; + + // Set initial lattice (cubic) + ucell.latvec.e11 = 1.0; + ucell.latvec.e12 = 0.0; + ucell.latvec.e13 = 0.0; + ucell.latvec.e21 = 0.0; + ucell.latvec.e22 = 1.0; + ucell.latvec.e23 = 0.0; + ucell.latvec.e31 = 0.0; + ucell.latvec.e32 = 0.0; + ucell.latvec.e33 = 1.0; + + ucell.omega = 1000.0; // Initial volume + + lat[0] = 10.0; + lat[1] = 0.0; + lat[2] = 0.0; + lat[3] = 0.0; + lat[4] = 10.0; + lat[5] = 0.0; + lat[6] = 0.0; + lat[7] = 0.0; + lat[8] = 10.0; + + // Apply a move that would change volume and break symmetry + move[0] = 1.0; + move[1] = 0.1; // Try to break symmetry + move[2] = 0.0; + move[3] = 0.0; + move[4] = 0.8; + move[5] = 0.0; + move[6] = 0.0; + move[7] = 0.0; + move[8] = 1.2; + + PARAM.input.fixed_ibrav = true; + Lattice_Change_Basic::fixed_axes = "volume"; + + // Verify remake_cell was not called yet + EXPECT_FALSE(unitcell::was_remake_cell_called()); + + // Call change_lattice method + Lattice_Change_Basic::change_lattice(ucell, move, lat); + + // Verify remake_cell was called (should be called before volume rescaling) + EXPECT_TRUE(unitcell::was_remake_cell_called()); + + // Check that volume is preserved + EXPECT_NEAR(ucell.omega, 1000.0, 1e-8); + + // Check that lattice is cubic (all diagonal, equal) + EXPECT_NEAR(ucell.latvec.e11, ucell.latvec.e22, 1e-10); + EXPECT_NEAR(ucell.latvec.e22, ucell.latvec.e33, 1e-10); + EXPECT_NEAR(ucell.latvec.e12, 0.0, 1e-10); + EXPECT_NEAR(ucell.latvec.e13, 0.0, 1e-10); + EXPECT_NEAR(ucell.latvec.e21, 0.0, 1e-10); + EXPECT_NEAR(ucell.latvec.e23, 0.0, 1e-10); + EXPECT_NEAR(ucell.latvec.e31, 0.0, 1e-10); + EXPECT_NEAR(ucell.latvec.e32, 0.0, 1e-10); + + // Reset for other tests + PARAM.input.fixed_ibrav = false; +} + +// Test axis constraint with fixed_axes = "a" +TEST_F(LatticeChangeBasicTest, SetupGradientAxisA) +{ + // Initialize variables + ucell.lc[0] = 0; // First axis fixed + ucell.lc[1] = 1; + ucell.lc[2] = 1; + + stress(0, 0) = 1.0; + stress(0, 1) = 2.0; + stress(0, 2) = 3.0; + stress(1, 0) = 4.0; + stress(1, 1) = 5.0; + stress(1, 2) = 6.0; + stress(2, 0) = 7.0; + stress(2, 1) = 8.0; + stress(2, 2) = 9.0; + + Lattice_Change_Basic::fixed_axes = "a"; + + // Call setup_gradient method + Lattice_Change_Basic::setup_gradient(ucell, lat, grad, stress); + + // Check that gradient for first lattice vector is zero + EXPECT_DOUBLE_EQ(grad[0], 0.0); + EXPECT_DOUBLE_EQ(grad[1], 0.0); + EXPECT_DOUBLE_EQ(grad[2], 0.0); + + // Check that gradients for other vectors are non-zero + EXPECT_NE(grad[3], 0.0); + EXPECT_NE(grad[4], 0.0); + EXPECT_NE(grad[5], 0.0); + EXPECT_NE(grad[6], 0.0); + EXPECT_NE(grad[7], 0.0); + EXPECT_NE(grad[8], 0.0); +} + +// Test that fixed axis doesn't move in change_lattice +TEST_F(LatticeChangeBasicTest, ChangeLatticeFixedAxisA) +{ + // Initialize variables + ucell.lc[0] = 0; // First axis fixed + ucell.lc[1] = 1; + ucell.lc[2] = 1; + ucell.lat0 = 10.0; + + // Set initial lattice + ucell.latvec.e11 = 1.0; + ucell.latvec.e12 = 0.1; + ucell.latvec.e13 = 0.2; + ucell.latvec.e21 = 0.0; + ucell.latvec.e22 = 1.0; + ucell.latvec.e23 = 0.0; + ucell.latvec.e31 = 0.0; + ucell.latvec.e32 = 0.0; + ucell.latvec.e33 = 1.0; + + // Save initial first lattice vector + double initial_e11 = ucell.latvec.e11; + double initial_e12 = ucell.latvec.e12; + double initial_e13 = ucell.latvec.e13; + + lat[0] = 10.0; + lat[1] = 1.0; + lat[2] = 2.0; + lat[3] = 0.0; + lat[4] = 10.0; + lat[5] = 0.0; + lat[6] = 0.0; + lat[7] = 0.0; + lat[8] = 10.0; + + // Try to move all lattice vectors + move[0] = 1.0; + move[1] = 0.5; + move[2] = 0.3; + move[3] = 0.5; + move[4] = 1.0; + move[5] = 0.0; + move[6] = 0.0; + move[7] = 0.0; + move[8] = 1.0; + + Lattice_Change_Basic::fixed_axes = "a"; + + // Call change_lattice method + Lattice_Change_Basic::change_lattice(ucell, move, lat); + + // Check that first lattice vector didn't change + EXPECT_DOUBLE_EQ(ucell.latvec.e11, initial_e11); + EXPECT_DOUBLE_EQ(ucell.latvec.e12, initial_e12); + EXPECT_DOUBLE_EQ(ucell.latvec.e13, initial_e13); + + // Check that other lattice vectors did change + EXPECT_NE(ucell.latvec.e21, 0.0); + EXPECT_NE(ucell.latvec.e22, 1.0); + EXPECT_NE(ucell.latvec.e33, 1.0); +} + +// Test that remake_cell is NOT called when fixed_ibrav = false +TEST_F(LatticeChangeBasicTest, ChangeLatticeNoFixedIbrav) +{ + // Initialize variables + ucell.lc[0] = 1; + ucell.lc[1] = 1; + ucell.lc[2] = 1; + ucell.lat0 = 10.0; + ucell.latName = "sc"; + + // Set initial lattice + ucell.latvec.e11 = 1.0; + ucell.latvec.e12 = 0.01; // Small distortion + ucell.latvec.e13 = 0.0; + ucell.latvec.e21 = 0.0; + ucell.latvec.e22 = 1.0; + ucell.latvec.e23 = 0.0; + ucell.latvec.e31 = 0.0; + ucell.latvec.e32 = 0.0; + ucell.latvec.e33 = 1.0; + + lat[0] = 10.0; + lat[1] = 0.1; + lat[2] = 0.0; + lat[3] = 0.0; + lat[4] = 10.0; + lat[5] = 0.0; + lat[6] = 0.0; + lat[7] = 0.0; + lat[8] = 10.0; + + // Apply a move + move[0] = 0.1; + move[1] = 0.0; + move[2] = 0.0; + move[3] = 0.0; + move[4] = 0.1; + move[5] = 0.0; + move[6] = 0.0; + move[7] = 0.0; + move[8] = 0.1; + + PARAM.input.fixed_ibrav = false; // Explicitly set to false + Lattice_Change_Basic::fixed_axes = "None"; + + // Verify remake_cell was not called yet + EXPECT_FALSE(unitcell::was_remake_cell_called()); + + // Call change_lattice method + Lattice_Change_Basic::change_lattice(ucell, move, lat); + + // Verify remake_cell was NOT called + EXPECT_FALSE(unitcell::was_remake_cell_called()); + + // Check that distortion remains (e12 should still be non-zero) + EXPECT_NE(ucell.latvec.e12, 0.0); +} diff --git a/source/source_relax/test/lattice_change_cg_test.cpp b/source/source_relax/test/lattice_change_cg_test.cpp index cdea39282b..01c863b8ee 100644 --- a/source/source_relax/test/lattice_change_cg_test.cpp +++ b/source/source_relax/test/lattice_change_cg_test.cpp @@ -1,5 +1,6 @@ #include "for_test.h" #include "gtest/gtest.h" +#include "mock_remake_cell.h" #define private public #include "source_relax/lattice_change_basic.h" #include "source_relax/lattice_change_cg.h" diff --git a/source/source_relax/test/lattice_change_methods_test.cpp b/source/source_relax/test/lattice_change_methods_test.cpp index 24d9b515ad..64173e110e 100644 --- a/source/source_relax/test/lattice_change_methods_test.cpp +++ b/source/source_relax/test/lattice_change_methods_test.cpp @@ -1,4 +1,5 @@ #include "source_relax/lattice_change_methods.h" +#include "mock_remake_cell.h" #include "for_test.h" #include "gtest/gtest.h" diff --git a/source/source_relax/test/mock_remake_cell.cpp b/source/source_relax/test/mock_remake_cell.cpp new file mode 100644 index 0000000000..ee51ba8653 --- /dev/null +++ b/source/source_relax/test/mock_remake_cell.cpp @@ -0,0 +1,58 @@ +#include "mock_remake_cell.h" +#include + +namespace unitcell +{ + // Mock state variables + bool remake_cell_called = false; + std::string remake_cell_latName = ""; + ModuleBase::Matrix3 remake_cell_latvec; + + void remake_cell(Lattice& lat) + { + remake_cell_called = true; + remake_cell_latName = lat.latName; + remake_cell_latvec = lat.latvec; + + // Mock implementation: enforce simple cubic structure for "sc" + if (lat.latName == "sc") + { + double celldm = std::sqrt(lat.latvec.e11 * lat.latvec.e11 + + lat.latvec.e12 * lat.latvec.e12 + + lat.latvec.e13 * lat.latvec.e13); + lat.latvec.Zero(); + lat.latvec.e11 = celldm; + lat.latvec.e22 = celldm; + lat.latvec.e33 = celldm; + } + // Mock implementation: enforce FCC structure for "fcc" + else if (lat.latName == "fcc") + { + double celldm = std::sqrt(lat.latvec.e11 * lat.latvec.e11 + + lat.latvec.e12 * lat.latvec.e12 + + lat.latvec.e13 * lat.latvec.e13) / std::sqrt(2.0); + lat.latvec.e11 = -celldm; + lat.latvec.e12 = 0.0; + lat.latvec.e13 = celldm; + lat.latvec.e21 = 0.0; + lat.latvec.e22 = celldm; + lat.latvec.e23 = celldm; + lat.latvec.e31 = -celldm; + lat.latvec.e32 = celldm; + lat.latvec.e33 = 0.0; + } + // For other lattice types, do nothing (just track the call) + } + + void reset_remake_cell_mock() + { + remake_cell_called = false; + remake_cell_latName = ""; + remake_cell_latvec.Zero(); + } + + bool was_remake_cell_called() + { + return remake_cell_called; + } +} diff --git a/source/source_relax/test/mock_remake_cell.h b/source/source_relax/test/mock_remake_cell.h new file mode 100644 index 0000000000..c2d4d63bd8 --- /dev/null +++ b/source/source_relax/test/mock_remake_cell.h @@ -0,0 +1,22 @@ +#ifndef MOCK_REMAKE_CELL_H +#define MOCK_REMAKE_CELL_H + +#include "source_cell/unitcell_data.h" +#include + +namespace unitcell +{ + // Mock state tracking + extern bool remake_cell_called; + extern std::string remake_cell_latName; + extern ModuleBase::Matrix3 remake_cell_latvec; + + // Mock implementation of remake_cell + void remake_cell(Lattice& lat); + + // Helper functions for testing + void reset_remake_cell_mock(); + bool was_remake_cell_called(); +} + +#endif // MOCK_REMAKE_CELL_H diff --git a/source/source_relax/test/relax_test.h b/source/source_relax/test/relax_test.h index 0cc4564194..fa787a909a 100644 --- a/source/source_relax/test/relax_test.h +++ b/source/source_relax/test/relax_test.h @@ -17,9 +17,13 @@ Atom_pseudo::Atom_pseudo(){}; Atom_pseudo::~Atom_pseudo(){}; pseudo::pseudo(){}; pseudo::~pseudo(){}; +SepPot::SepPot(){} +SepPot::~SepPot(){} +Sep_Cell::Sep_Cell() noexcept {} +Sep_Cell::~Sep_Cell() noexcept {} int ModuleSymmetry::Symmetry::symm_flag = 0; void ModuleSymmetry::Symmetry::symmetrize_mat3(ModuleBase::matrix& sigma, const Lattice& lat)const {}; void ModuleSymmetry::Symmetry::symmetrize_vec3_nat(double* v)const {}; Structure_Factor::Structure_Factor() {}; Structure_Factor::~Structure_Factor(){}; -void Structure_Factor::setup_structure_factor(const UnitCell* Ucell, const Parallel_Grid&, const ModulePW::PW_Basis* rho_basis){}; \ No newline at end of file +void Structure_Factor::setup(const UnitCell* Ucell, const Parallel_Grid&, const ModulePW::PW_Basis* rho_basis){}; diff --git a/tests/01_PW/001_PW_UPF100_Al/INPUT b/tests/01_PW/001_PW_UPF100_Al/INPUT index fdc06be5f3..104dab8a9c 100644 --- a/tests/01_PW/001_PW_UPF100_Al/INPUT +++ b/tests/01_PW/001_PW_UPF100_Al/INPUT @@ -1,27 +1,27 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf +suffix autotest +calculation scf #nbands 8 -symmetry 1 -pseudo_dir ../../PP_ORB +symmetry 1 +pseudo_dir ../../PP_ORB #Parameters (2.Iteration) -ecutwfc 30 -scf_thr 1e-9 -scf_nmax 100 +ecutwfc 30 +scf_thr 1e-9 +scf_nmax 100 #Parameters (3.Basis) -basis_type pw -latname fcc +basis_type pw +latname fcc #Parameters (4.Smearing) -smearing_method gauss -smearing_sigma 0.002 +smearing_method gauss +smearing_sigma 0.002 #Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.7 -diago_smooth_ethr 1 -use_k_continuity 1 +mixing_type broyden +mixing_beta 0.7 +diago_smooth_ethr 1 +use_k_continuity 1 diff --git a/tests/01_PW/002_PW_UPF100_RAPPE_Fe/INPUT b/tests/01_PW/002_PW_UPF100_RAPPE_Fe/INPUT index e38a7a16d9..2dff5725e4 100644 --- a/tests/01_PW/002_PW_UPF100_RAPPE_Fe/INPUT +++ b/tests/01_PW/002_PW_UPF100_RAPPE_Fe/INPUT @@ -1,31 +1,31 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf -init_wfc random -symmetry 0 -latname bcc -nspin 1 -pseudo_dir ../../PP_ORB +suffix autotest +calculation scf +init_wfc random +symmetry 0 +latname bcc +nspin 1 +pseudo_dir ../../PP_ORB #Parameters (2.Iteration) -ecutwfc 10 -scf_thr 1e-9 -scf_nmax 100 +ecutwfc 10 +scf_thr 1e-9 +scf_nmax 100 #Parameters (3.Basis) -basis_type pw +basis_type pw #Parameters (4.Smearing) -smearing_method gaussian -smearing_sigma 0.02 +smearing_method gaussian +smearing_sigma 0.02 #parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.7 -mixing_gg0 1.0 +mixing_type broyden +mixing_beta 0.7 +mixing_gg0 1.0 -cal_force 1 -cal_stress 1 +cal_force 1 +cal_stress 1 -pw_seed 1 +pw_seed 1 diff --git a/tests/01_PW/003_PW_UPF100_USPP_Fe/INPUT b/tests/01_PW/003_PW_UPF100_USPP_Fe/INPUT index 8efca681c2..0b9701bee2 100644 --- a/tests/01_PW/003_PW_UPF100_USPP_Fe/INPUT +++ b/tests/01_PW/003_PW_UPF100_USPP_Fe/INPUT @@ -1,36 +1,36 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf -symmetry 0 -latname bcc -nspin 2 -pseudo_dir ../../PP_ORB +suffix autotest +calculation scf +symmetry 0 +latname bcc +nspin 2 +pseudo_dir ../../PP_ORB #Parameters (2.Iteration) -ecutwfc 8 -ecutrho 35 -scf_thr 1e-9 -scf_nmax 50 +ecutwfc 8 +ecutrho 35 +scf_thr 1e-9 +scf_nmax 50 #Parameters (3.Basis) -basis_type pw +basis_type pw #Parameters (4.Smearing) -smearing_method gaussian -smearing_sigma 0.02 +smearing_method gaussian +smearing_sigma 0.02 #parameters (5.Mixing) -mixing_type pulay -mixing_beta 0.4 -mixing_beta_mag 0.4 -mixing_gg0 1.0 -mixing_gg0_mag 1.0 +mixing_type pulay +mixing_beta 0.4 +mixing_beta_mag 0.4 +mixing_gg0 1.0 +mixing_gg0_mag 1.0 -pseudo_mesh 1 -pseudo_rcut 10 +pseudo_mesh 1 +pseudo_rcut 10 -cal_force 1 -cal_stress 1 +cal_force 1 +cal_stress 1 -pw_seed 1 +pw_seed 1 diff --git a/tests/01_PW/004_PW_UPF201_Si/INPUT b/tests/01_PW/004_PW_UPF201_Si/INPUT index a2944455c4..1d1a3bccfc 100644 --- a/tests/01_PW/004_PW_UPF201_Si/INPUT +++ b/tests/01_PW/004_PW_UPF201_Si/INPUT @@ -1,25 +1,25 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf +suffix autotest +calculation scf -nbands 6 -symmetry 1 -pseudo_dir ../../PP_ORB +nbands 6 +symmetry 1 +pseudo_dir ../../PP_ORB #Parameters (2.Iteration) -ecutwfc 20 -scf_thr 1e-9 -scf_nmax 100 +ecutwfc 20 +scf_thr 1e-9 +scf_nmax 100 #Parameters (3.Basis) -basis_type pw +basis_type pw #Parameters (4.Smearing) -smearing_method gauss -smearing_sigma 0.002 +smearing_method gauss +smearing_sigma 0.002 #Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.7 +mixing_type broyden +mixing_beta 0.7 diff --git a/tests/01_PW/005_PW_UPF201_UPF100/INPUT b/tests/01_PW/005_PW_UPF201_UPF100/INPUT index e53d3ae6d8..4d539ffbd6 100644 --- a/tests/01_PW/005_PW_UPF201_UPF100/INPUT +++ b/tests/01_PW/005_PW_UPF201_UPF100/INPUT @@ -1,22 +1,22 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf +suffix autotest +calculation scf -nbands 8 -symmetry 1 -pseudo_dir ../../PP_ORB/ +nbands 8 +symmetry 1 +pseudo_dir ../../PP_ORB/ #Parameters (2.Iteration) -ecutwfc 20 +ecutwfc 20 #Parameters (3.Basis) -basis_type pw +basis_type pw #Parameters (4.Smearing) -smearing_method gauss -smearing_sigma 0.0074 +smearing_method gauss +smearing_sigma 0.0074 #Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.7 +mixing_type broyden +mixing_beta 0.7 diff --git a/tests/01_PW/006_PW_UPF201_Eu/INPUT b/tests/01_PW/006_PW_UPF201_Eu/INPUT index edaf05df0e..f2ba550f07 100644 --- a/tests/01_PW/006_PW_UPF201_Eu/INPUT +++ b/tests/01_PW/006_PW_UPF201_Eu/INPUT @@ -1,18 +1,18 @@ -INPUT_PARAMETERS -suffix autotest -calculation scf -ntype 1 -nspin 1 -pseudo_dir ../../PP_ORB -symmetry 1 -nbands 10 +INPUT_PARAMETERS +suffix autotest +calculation scf +ntype 1 +nspin 1 +pseudo_dir ../../PP_ORB +symmetry 1 +nbands 10 -ecutwfc 20 -scf_thr 1.0e-7 // about iteration +ecutwfc 20 +scf_thr 1.0e-7 // about iteration -basis_type pw -smearing_method gauss -smearing_sigma 0.002 +basis_type pw +smearing_method gauss +smearing_sigma 0.002 -mixing_type broyden // about charge mixing -mixing_beta 0.7 +mixing_type broyden // about charge mixing +mixing_beta 0.7 diff --git a/tests/01_PW/007_PW_UPF201_USPP_Fe/INPUT b/tests/01_PW/007_PW_UPF201_USPP_Fe/INPUT index f0a3784a14..181e7feff6 100644 --- a/tests/01_PW/007_PW_UPF201_USPP_Fe/INPUT +++ b/tests/01_PW/007_PW_UPF201_USPP_Fe/INPUT @@ -1,39 +1,39 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf -nbands 10 -symmetry 0 -latname bcc -nspin 2 -pseudo_dir ../../PP_ORB +suffix autotest +calculation scf +nbands 10 +symmetry 0 +latname bcc +nspin 2 +pseudo_dir ../../PP_ORB #Parameters (2.Iteration) -ecutwfc 8 -ecutrho 60 -scf_thr 1e-9 -scf_nmax 100 +ecutwfc 8 +ecutrho 60 +scf_thr 1e-9 +scf_nmax 100 #Parameters (3.Basis) -basis_type pw +basis_type pw #Parameters (4.Smearing) -smearing_method gaussian -smearing_sigma 0.02 +smearing_method gaussian +smearing_sigma 0.02 #parameters (5.Mixing) -mixing_type pulay -mixing_beta 0.4 -mixing_beta_mag 0.4 -mixing_gg0 1.0 -mixing_gg0_mag 1.0 +mixing_type pulay +mixing_beta 0.4 +mixing_beta_mag 0.4 +mixing_gg0 1.0 +mixing_gg0_mag 1.0 -pseudo_mesh 1 -pseudo_rcut 10 +pseudo_mesh 1 +pseudo_rcut 10 -cal_force 1 -cal_stress 1 +cal_force 1 +cal_stress 1 -kpar 3 +kpar 3 -pw_seed 1 +pw_seed 1 diff --git a/tests/01_PW/008_PW_UPF201_USPP_NaCl/INPUT b/tests/01_PW/008_PW_UPF201_USPP_NaCl/INPUT index 9309183bbe..3a0f52fce1 100644 --- a/tests/01_PW/008_PW_UPF201_USPP_NaCl/INPUT +++ b/tests/01_PW/008_PW_UPF201_USPP_NaCl/INPUT @@ -1,32 +1,32 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf -nbands 12 -symmetry 1 -latname fcc -pseudo_dir ../../PP_ORB -pw_seed 1 +suffix autotest +calculation scf +nbands 12 +symmetry 1 +latname fcc +pseudo_dir ../../PP_ORB +pw_seed 1 #Parameters (2.Iteration) -ecutwfc 5 -ecutrho 100 -scf_thr 1e-9 -scf_nmax 100 +ecutwfc 5 +ecutrho 100 +scf_thr 1e-9 +scf_nmax 100 #Parameters (3.Basis) -basis_type pw +basis_type pw #Parameters (4.Smearing) -smearing_method gaussian -smearing_sigma 0.02 +smearing_method gaussian +smearing_sigma 0.02 #parameters (5.Mixing) -mixing_type pulay -mixing_beta 0.4 +mixing_type pulay +mixing_beta 0.4 -pseudo_mesh 1 -pseudo_rcut 10 +pseudo_mesh 1 +pseudo_rcut 10 -cal_force 1 -cal_stress 1 +cal_force 1 +cal_stress 1 diff --git a/tests/01_PW/009_PW_UPF201_USPP/INPUT b/tests/01_PW/009_PW_UPF201_USPP/INPUT index 26cfb32602..d842a8f967 100644 --- a/tests/01_PW/009_PW_UPF201_USPP/INPUT +++ b/tests/01_PW/009_PW_UPF201_USPP/INPUT @@ -1,31 +1,31 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf -symmetry 0 -latname fcc -pseudo_dir ../../PP_ORB -pw_seed 1 +suffix autotest +calculation scf +symmetry 0 +latname fcc +pseudo_dir ../../PP_ORB +pw_seed 1 #Parameters (2.Iteration) -ecutwfc 20 -ecutrho 160 -scf_thr 1e-9 -scf_nmax 100 +ecutwfc 20 +ecutrho 160 +scf_thr 1e-9 +scf_nmax 100 #Parameters (3.Basis) -basis_type pw +basis_type pw #Parameters (4.Smearing) -smearing_method gaussian -smearing_sigma 0.002 +smearing_method gaussian +smearing_sigma 0.002 #parameters (5.Mixing) -mixing_type pulay -mixing_beta 0.4 +mixing_type pulay +mixing_beta 0.4 -pseudo_mesh 1 -pseudo_rcut 10 +pseudo_mesh 1 +pseudo_rcut 10 -cal_force 1 -cal_stress 1 +cal_force 1 +cal_stress 1 diff --git a/tests/01_PW/010_PW_0TYPE/INPUT b/tests/01_PW/010_PW_0TYPE/INPUT index 6fe76d0d5e..93ce764af4 100644 --- a/tests/01_PW/010_PW_0TYPE/INPUT +++ b/tests/01_PW/010_PW_0TYPE/INPUT @@ -1,21 +1,21 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf -nbands 8 -symmetry 1 -pseudo_dir ../../PP_ORB/ +suffix autotest +calculation scf +nbands 8 +symmetry 1 +pseudo_dir ../../PP_ORB/ #Parameters (2.Iteration) -ecutwfc 20 +ecutwfc 20 #Parameters (3.Basis) -basis_type pw +basis_type pw #Parameters (4.Smearing) -smearing_method gauss -smearing_sigma 0.0074 +smearing_method gauss +smearing_sigma 0.0074 #Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.7 +mixing_type broyden +mixing_beta 0.7 diff --git a/tests/01_PW/011_PW_0ATOM/INPUT b/tests/01_PW/011_PW_0ATOM/INPUT index 8488f61585..aea0ea9b21 100644 --- a/tests/01_PW/011_PW_0ATOM/INPUT +++ b/tests/01_PW/011_PW_0ATOM/INPUT @@ -1,28 +1,29 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf +suffix autotest +calculation scf +init_wfc random -nbands 6 -symmetry 0 -pseudo_dir ../../PP_ORB/ +nbands 6 +symmetry 0 +pseudo_dir ../../PP_ORB/ #Parameters (2.Iteration) -ecutwfc 20 +ecutwfc 20 #Parameters (3.Basis) -basis_type pw +basis_type pw #Parameters (4.Smearing) -smearing_method gauss -smearing_sigma 0.0002 +smearing_method gauss +smearing_sigma 0.0002 #Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.7 -cal_force 1 -test_force 1 -cal_stress 1 -test_stress 1 +mixing_type broyden +mixing_beta 0.7 +cal_force 1 +test_force 1 +cal_stress 1 +test_stress 1 -pw_seed 1 \ No newline at end of file +pw_seed 1 diff --git a/tests/01_PW/012_PW_DJ/INPUT b/tests/01_PW/012_PW_DJ/INPUT index 811219eaf7..0316990439 100644 --- a/tests/01_PW/012_PW_DJ/INPUT +++ b/tests/01_PW/012_PW_DJ/INPUT @@ -1,17 +1,17 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS -suffix autotest -pseudo_dir ../../PP_ORB +suffix autotest +pseudo_dir ../../PP_ORB -nbands 8 -calculation scf -ecutwfc 20 -scf_nmax 20 +nbands 8 +calculation scf +ecutwfc 20 +scf_nmax 20 -basis_type pw -relax_nmax 1 +basis_type pw +relax_nmax 1 -ks_solver cg -mixing_type broyden -mixing_beta 0.7 -mixing_gg0 1.5 +ks_solver cg +mixing_type broyden +mixing_beta 0.7 +mixing_gg0 1.5 diff --git a/tests/01_PW/013_PW_ONCV_LDA/INPUT b/tests/01_PW/013_PW_ONCV_LDA/INPUT index 58e7c76e00..b2e963bbee 100644 --- a/tests/01_PW/013_PW_ONCV_LDA/INPUT +++ b/tests/01_PW/013_PW_ONCV_LDA/INPUT @@ -1,27 +1,28 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf +suffix autotest +calculation scf +init_wfc random -nbands 6 -symmetry 1 -pseudo_dir ../../PP_ORB +nbands 6 +symmetry 1 +pseudo_dir ../../PP_ORB #Parameters (2.Iteration) -ecutwfc 20 -scf_thr 1e-9 -scf_nmax 100 +ecutwfc 20 +scf_thr 1e-9 +scf_nmax 100 #Parameters (3.Basis) -basis_type pw +basis_type pw #Parameters (4.Smearing) -smearing_method gauss -smearing_sigma 0.002 +smearing_method gauss +smearing_sigma 0.002 #Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.7 +mixing_type broyden +mixing_beta 0.7 -dft_functional pz +dft_functional pz diff --git a/tests/01_PW/014_PW_UPF201_BLPS/INPUT b/tests/01_PW/014_PW_UPF201_BLPS/INPUT index 0285abdba5..4d539ffbd6 100644 --- a/tests/01_PW/014_PW_UPF201_BLPS/INPUT +++ b/tests/01_PW/014_PW_UPF201_BLPS/INPUT @@ -1,22 +1,22 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf +suffix autotest +calculation scf -nbands 8 -symmetry 1 -pseudo_dir ../../PP_ORB/ +nbands 8 +symmetry 1 +pseudo_dir ../../PP_ORB/ #Parameters (2.Iteration) -ecutwfc 20 +ecutwfc 20 #Parameters (3.Basis) -basis_type pw +basis_type pw #Parameters (4.Smearing) -smearing_method gauss -smearing_sigma 0.0074 +smearing_method gauss +smearing_sigma 0.0074 #Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.7 +mixing_type broyden +mixing_beta 0.7 diff --git a/tests/01_PW/015_PW_GTH/INPUT b/tests/01_PW/015_PW_GTH/INPUT index 376e57192b..be4706f714 100644 --- a/tests/01_PW/015_PW_GTH/INPUT +++ b/tests/01_PW/015_PW_GTH/INPUT @@ -1,24 +1,24 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (General) -suffix autotest +suffix autotest -calculation scf +calculation scf #Parameters (Accuracy) -ecutwfc 20 -scf_nmax 50 -scf_thr 1.0e-8 +ecutwfc 20 +scf_nmax 50 +scf_thr 1.0e-8 -basis_type pw +basis_type pw -cal_stress 1 -cal_force 1 +cal_stress 1 +cal_force 1 -ks_solver cg -mixing_type broyden -mixing_beta 0.7 -mixing_gg0 1.5 -pseudo_dir ../../PP_ORB +ks_solver cg +mixing_type broyden +mixing_beta 0.7 +mixing_gg0 1.5 +pseudo_dir ../../PP_ORB -pw_seed 1 +pw_seed 1 diff --git a/tests/01_PW/016_PW_BLPS/INPUT b/tests/01_PW/016_PW_BLPS/INPUT index 39cdf2647c..6c58e463e5 100644 --- a/tests/01_PW/016_PW_BLPS/INPUT +++ b/tests/01_PW/016_PW_BLPS/INPUT @@ -1,27 +1,28 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf +suffix autotest +calculation scf +init_wfc random -nbands 6 -symmetry 1 -pseudo_dir ../../PP_ORB -pw_seed 1 -pseudo_rcut 16 +nbands 6 +symmetry 1 +pseudo_dir ../../PP_ORB +pw_seed 1 +pseudo_rcut 16 #Parameters (2.Iteration) -ecutwfc 20 -scf_thr 1e-6 -scf_nmax 100 +ecutwfc 20 +scf_thr 1e-6 +scf_nmax 100 #Parameters (3.Basis) -basis_type pw +basis_type pw #Parameters (4.Smearing) -smearing_method gauss -smearing_sigma 0.002 +smearing_method gauss +smearing_sigma 0.002 #Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.7 +mixing_type broyden +mixing_beta 0.7 diff --git a/tests/01_PW/017_PW_LPS6/INPUT b/tests/01_PW/017_PW_LPS6/INPUT index 54ac435ade..19a6871cef 100644 --- a/tests/01_PW/017_PW_LPS6/INPUT +++ b/tests/01_PW/017_PW_LPS6/INPUT @@ -1,29 +1,30 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf +suffix autotest +calculation scf +init_wfc random -nbands 13 -symmetry 1 -pseudo_dir ../../PP_ORB -pseudo_rcut 10 -out_element_info 1 +nbands 13 +symmetry 1 +pseudo_dir ../../PP_ORB +pseudo_rcut 10 +out_element_info 1 #Parameters (2.Iteration) -ecutwfc 20 -scf_thr 1e-6 -scf_nmax 100 +ecutwfc 20 +scf_thr 1e-6 +scf_nmax 100 #Parameters (3.Basis) -basis_type pw +basis_type pw #Parameters (4.Smearing) -smearing_method gauss -smearing_sigma 0.002 -dft_functional pbe +smearing_method gauss +smearing_sigma 0.002 +dft_functional pbe #Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.7 +mixing_type broyden +mixing_beta 0.7 -pw_seed 1 +pw_seed 1 diff --git a/tests/01_PW/018_PW_LPS8/INPUT b/tests/01_PW/018_PW_LPS8/INPUT index 92ffb868c9..4b3be8ef71 100644 --- a/tests/01_PW/018_PW_LPS8/INPUT +++ b/tests/01_PW/018_PW_LPS8/INPUT @@ -1,27 +1,28 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf +suffix autotest +calculation scf +init_wfc random -nbands 3 -symmetry 1 -pseudo_dir ../../PP_ORB -pseudo_rcut 10 -out_element_info 1 +nbands 3 +symmetry 1 +pseudo_dir ../../PP_ORB +pseudo_rcut 10 +out_element_info 1 #Parameters (2.Iteration) -ecutwfc 20 -scf_thr 1e-6 -scf_nmax 100 +ecutwfc 20 +scf_thr 1e-6 +scf_nmax 100 #Parameters (3.Basis) -basis_type pw +basis_type pw #Parameters (4.Smearing) -smearing_method gauss -smearing_sigma 0.002 -dft_functional pbe +smearing_method gauss +smearing_sigma 0.002 +dft_functional pbe #Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.7 +mixing_type broyden +mixing_beta 0.7 diff --git a/tests/01_PW/019_PW_Coulomb/INPUT b/tests/01_PW/019_PW_Coulomb/INPUT index 73a8b785d0..717a9824e8 100644 --- a/tests/01_PW/019_PW_Coulomb/INPUT +++ b/tests/01_PW/019_PW_Coulomb/INPUT @@ -1,26 +1,26 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf -cal_stress 1 -cal_force 1 +suffix autotest +calculation scf +cal_stress 1 +cal_force 1 -nbands 4 -pseudo_dir ../../PP_ORB -pw_seed 1 +nbands 4 +pseudo_dir ../../PP_ORB +pw_seed 1 #Parameters (2.Iteration) -ecutwfc 40 -scf_thr 1e-9 +ecutwfc 40 +scf_thr 1e-9 #Parameters (3.Basis) -basis_type pw +basis_type pw #Parameters (4.Smearing) -smearing_method fd -smearing_sigma 0.1 +smearing_method fd +smearing_sigma 0.1 #Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.7 +mixing_type broyden +mixing_beta 0.7 diff --git a/tests/01_PW/020_PW_kspace/INPUT b/tests/01_PW/020_PW_kspace/INPUT index cb9ee63eb9..b1cd5583f0 100644 --- a/tests/01_PW/020_PW_kspace/INPUT +++ b/tests/01_PW/020_PW_kspace/INPUT @@ -1,20 +1,21 @@ -INPUT_PARAMETERS -suffix autotest -calculation scf +INPUT_PARAMETERS +suffix autotest +calculation scf +init_wfc random -symmetry 1 -ecutwfc 20 -scf_thr 1e-07 -scf_nmax 100 -basis_type pw -latname bco +symmetry 1 +ecutwfc 20 +scf_thr 1e-07 +scf_nmax 100 +basis_type pw +latname bco -mixing_type broyden -mixing_beta 0.4 +mixing_type broyden +mixing_beta 0.4 -smearing_method gaussian -smearing_sigma 0.020000 +smearing_method gaussian +smearing_sigma 0.020000 -kspacing 0.6 -pseudo_dir ../../PP_ORB -pw_seed 1 +kspacing 0.6 +pseudo_dir ../../PP_ORB +pw_seed 1 diff --git a/tests/01_PW/021_PW_kspace3/INPUT b/tests/01_PW/021_PW_kspace3/INPUT index d0905b2ee0..892a68ed17 100644 --- a/tests/01_PW/021_PW_kspace3/INPUT +++ b/tests/01_PW/021_PW_kspace3/INPUT @@ -1,15 +1,16 @@ -INPUT_PARAMETERS -suffix autotest -calculation scf +INPUT_PARAMETERS +suffix autotest +calculation scf +init_wfc random -symmetry 1 -ecutwfc 5 -scf_thr 1e-08 -scf_nmax 100 -basis_type pw +symmetry 1 +ecutwfc 5 +scf_thr 1e-08 +scf_nmax 100 +basis_type pw -smearing_method gaussian -smearing_sigma 0.020000 +smearing_method gaussian +smearing_sigma 0.020000 -kspacing 0.5 1.0 1.0 -pseudo_dir ../../PP_ORB +kspacing 0.5 1.0 1.0 +pseudo_dir ../../PP_ORB diff --git a/tests/01_PW/022_PW_CG/INPUT b/tests/01_PW/022_PW_CG/INPUT index f57759e41a..fd7652a8df 100644 --- a/tests/01_PW/022_PW_CG/INPUT +++ b/tests/01_PW/022_PW_CG/INPUT @@ -1,28 +1,28 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf +suffix autotest +calculation scf -nbands 6 -symmetry 1 -pseudo_dir ../../PP_ORB +nbands 6 +symmetry 1 +pseudo_dir ../../PP_ORB #Parameters (2.Iteration) -ecutwfc 20 -scf_thr 1e-8 -scf_nmax 100 +ecutwfc 20 +scf_thr 1e-8 +scf_nmax 100 #Parameters (3.Basis) -basis_type pw +basis_type pw #Parameters (4.Smearing) -smearing_method gauss -smearing_sigma 0.002 +smearing_method gauss +smearing_sigma 0.002 #Parameters (5.Mixing) -mixing_type plain -mixing_beta 0.5 +mixing_type plain +mixing_beta 0.5 -ks_solver cg -device cpu +ks_solver cg +device cpu diff --git a/tests/01_PW/023_PW_DA/INPUT b/tests/01_PW/023_PW_DA/INPUT index a3befe3b9f..e1daa91201 100644 --- a/tests/01_PW/023_PW_DA/INPUT +++ b/tests/01_PW/023_PW_DA/INPUT @@ -1,27 +1,27 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf +suffix autotest +calculation scf -nbands 6 -symmetry 1 -pseudo_dir ../../PP_ORB +nbands 6 +symmetry 1 +pseudo_dir ../../PP_ORB #Parameters (2.Iteration) -ecutwfc 20 -scf_thr 1e-8 -scf_nmax 100 +ecutwfc 20 +scf_thr 1e-8 +scf_nmax 100 #Parameters (3.Basis) -basis_type pw +basis_type pw #Parameters (4.Smearing) -smearing_method gauss -smearing_sigma 0.002 +smearing_method gauss +smearing_sigma 0.002 #Parameters (5.Mixing) -mixing_type plain -mixing_beta 0.5 +mixing_type plain +mixing_beta 0.5 -ks_solver dav +ks_solver dav diff --git a/tests/01_PW/024_PW_DS/INPUT b/tests/01_PW/024_PW_DS/INPUT index 18f7dc5714..a6685e8970 100644 --- a/tests/01_PW/024_PW_DS/INPUT +++ b/tests/01_PW/024_PW_DS/INPUT @@ -1,27 +1,27 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf +suffix autotest +calculation scf -nbands 6 -symmetry 1 -pseudo_dir ../../PP_ORB +nbands 6 +symmetry 1 +pseudo_dir ../../PP_ORB #Parameters (2.Iteration) -ecutwfc 20 -scf_thr 1e-8 -scf_nmax 100 +ecutwfc 20 +scf_thr 1e-8 +scf_nmax 100 #Parameters (3.Basis) -basis_type pw +basis_type pw #Parameters (4.Smearing) -smearing_method gauss -smearing_sigma 0.002 +smearing_method gauss +smearing_sigma 0.002 #Parameters (5.Mixing) -mixing_type plain -mixing_beta 0.5 +mixing_type plain +mixing_beta 0.5 -ks_solver dav_subspace +ks_solver dav_subspace diff --git a/tests/01_PW/025_PW_DS_sca/INPUT b/tests/01_PW/025_PW_DS_sca/INPUT index b060c92bdd..e7995370ce 100644 --- a/tests/01_PW/025_PW_DS_sca/INPUT +++ b/tests/01_PW/025_PW_DS_sca/INPUT @@ -1,29 +1,29 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf +suffix autotest +calculation scf -nbands 6 -symmetry 1 -pseudo_dir ../../PP_ORB +nbands 6 +symmetry 1 +pseudo_dir ../../PP_ORB #Parameters (2.Iteration) -ecutwfc 20 -scf_thr 1e-8 -scf_nmax 100 +ecutwfc 20 +scf_thr 1e-8 +scf_nmax 100 #Parameters (3.Basis) -basis_type pw +basis_type pw #Parameters (4.Smearing) -smearing_method gauss -smearing_sigma 0.002 +smearing_method gauss +smearing_sigma 0.002 #Parameters (5.Mixing) -mixing_type plain -mixing_beta 0.5 +mixing_type plain +mixing_beta 0.5 -ks_solver dav_subspace -diag_subspace 2 -nb2d 4 +ks_solver dav_subspace +diag_subspace 2 +nb2d 4 diff --git a/tests/01_PW/026_PW_KPAR/INPUT b/tests/01_PW/026_PW_KPAR/INPUT index 05e13045f6..f4f0ae271a 100644 --- a/tests/01_PW/026_PW_KPAR/INPUT +++ b/tests/01_PW/026_PW_KPAR/INPUT @@ -1,22 +1,22 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf +suffix autotest +calculation scf -nbands 6 -symmetry 1 -pseudo_dir ../../PP_ORB +nbands 6 +symmetry 1 +pseudo_dir ../../PP_ORB #Parameters (2.Iteration) -ecutwfc 20 -scf_thr 1e-8 -scf_nmax 100 +ecutwfc 20 +scf_thr 1e-8 +scf_nmax 100 #Parameters (3.Basis) -basis_type pw +basis_type pw #Parameters (4.Smearing) -smearing_method gauss -smearing_sigma 0.002 +smearing_method gauss +smearing_sigma 0.002 -kpar 2 +kpar 2 diff --git a/tests/01_PW/027_PW_PINT_RKS/INPUT b/tests/01_PW/027_PW_PINT_RKS/INPUT index 2288ccdbdd..9f6289afa2 100644 --- a/tests/01_PW/027_PW_PINT_RKS/INPUT +++ b/tests/01_PW/027_PW_PINT_RKS/INPUT @@ -1,22 +1,22 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (General) -suffix autotest -pseudo_dir ../../../tests/PP_ORB -orbital_dir ../../../tests/PP_ORB -pw_seed 1 -nbands 16 +suffix autotest +pseudo_dir ../../../tests/PP_ORB +orbital_dir ../../../tests/PP_ORB +pw_seed 1 +nbands 16 #Parameters (Accuracy) -ecutwfc 50 -scf_nmax 20 +ecutwfc 50 +scf_nmax 20 -basis_type pw -gamma_only 1 +basis_type pw +gamma_only 1 -init_wfc nao +init_wfc nao -smearing_method gauss -smearing_sigma 0.01 +smearing_method gauss +smearing_sigma 0.01 -calculation relax -relax_nmax 50 -force_thr_ev 1.0e-3 +calculation relax +relax_nmax 50 +force_thr_ev 1.0e-3 diff --git a/tests/01_PW/028_PW_PINT_UKS/INPUT b/tests/01_PW/028_PW_PINT_UKS/INPUT index 5bbee35ce6..ed8277f05c 100644 --- a/tests/01_PW/028_PW_PINT_UKS/INPUT +++ b/tests/01_PW/028_PW_PINT_UKS/INPUT @@ -1,25 +1,25 @@ -INPUT_PARAMETERS -suffix autotest +INPUT_PARAMETERS +suffix autotest -calculation scf -ecutwfc 5 -scf_thr 1.0e-8 -scf_nmax 50 -out_chg 0 +calculation scf +ecutwfc 5 +scf_thr 1.0e-8 +scf_nmax 50 +out_chg 0 -smearing_method gaussian -smearing_sigma 0.02 +smearing_method gaussian +smearing_sigma 0.02 -mixing_type pulay -mixing_beta 0.4 -mixing_beta_mag 0.4 +mixing_type pulay +mixing_beta 0.4 +mixing_beta_mag 0.4 -ks_solver cg -basis_type pw -gamma_only 1 -nspin 2 -pseudo_dir ../../../tests/PP_ORB -orbital_dir ../../../tests/PP_ORB -pw_seed 1 +ks_solver cg +basis_type pw +gamma_only 1 +nspin 2 +pseudo_dir ../../../tests/PP_ORB +orbital_dir ../../../tests/PP_ORB +pw_seed 1 -init_wfc nao +init_wfc nao diff --git a/tests/01_PW/029_PW_15_CF_CS_S1_smallg/INPUT b/tests/01_PW/029_PW_15_CF_CS_S1_smallg/INPUT index cfed35bc54..999a526296 100644 --- a/tests/01_PW/029_PW_15_CF_CS_S1_smallg/INPUT +++ b/tests/01_PW/029_PW_15_CF_CS_S1_smallg/INPUT @@ -1,27 +1,28 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf +suffix autotest +calculation scf +init_wfc random -nbands 6 -symmetry 1 +nbands 6 +symmetry 1 #Parameters (2.Iteration) -ecutwfc 20 -scf_thr 1e-9 -scf_nmax 100 +ecutwfc 20 +scf_thr 1e-9 +scf_nmax 100 -cal_stress 1 -cal_force 1 +cal_stress 1 +cal_force 1 #Parameters (3.Basis) -basis_type pw +basis_type pw #Parameters (4.Smearing) -smearing_method gauss -smearing_sigma 0.002 +smearing_method gauss +smearing_sigma 0.002 #Parameters (5.Mixing) -mixing_type plain -mixing_beta 0.7 -pseudo_dir ../../PP_ORB +mixing_type plain +mixing_beta 0.7 +pseudo_dir ../../PP_ORB diff --git a/tests/01_PW/030_PW_15_CF_CS_S2_smallg/INPUT b/tests/01_PW/030_PW_15_CF_CS_S2_smallg/INPUT index 3da3a89c0f..df97336d89 100644 --- a/tests/01_PW/030_PW_15_CF_CS_S2_smallg/INPUT +++ b/tests/01_PW/030_PW_15_CF_CS_S2_smallg/INPUT @@ -1,28 +1,29 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf +suffix autotest +calculation scf +init_wfc random -nbands 6 -symmetry 1 -nspin 2 +nbands 6 +symmetry 1 +nspin 2 #Parameters (2.Iteration) -ecutwfc 20 -scf_thr 1e-9 -scf_nmax 100 +ecutwfc 20 +scf_thr 1e-9 +scf_nmax 100 -cal_stress 1 -cal_force 1 +cal_stress 1 +cal_force 1 #Parameters (3.Basis) -basis_type pw +basis_type pw #Parameters (4.Smearing) -smearing_method gauss -smearing_sigma 0.002 +smearing_method gauss +smearing_sigma 0.002 #Parameters (5.Mixing) -mixing_type plain -mixing_beta 0.7 -pseudo_dir ../../PP_ORB +mixing_type plain +mixing_beta 0.7 +pseudo_dir ../../PP_ORB diff --git a/tests/01_PW/031_PW_15_CF_CS/INPUT b/tests/01_PW/031_PW_15_CF_CS/INPUT index e9e1674629..470e9aa737 100644 --- a/tests/01_PW/031_PW_15_CF_CS/INPUT +++ b/tests/01_PW/031_PW_15_CF_CS/INPUT @@ -1,33 +1,33 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (General) -suffix autotest -pseudo_dir ../../PP_ORB -gamma_only 0 -calculation scf -symmetry 1 -relax_nmax 1 -out_level ie -smearing_method gaussian -smearing_sigma 0.02 +suffix autotest +pseudo_dir ../../PP_ORB +gamma_only 0 +calculation scf +symmetry 1 +relax_nmax 1 +out_level ie +smearing_method gaussian +smearing_sigma 0.02 #Parameters (3.PW) -ecutwfc 5 -scf_thr 1e-9 -scf_nmax 100 +ecutwfc 5 +scf_thr 1e-9 +scf_nmax 100 #Parameters (LCAO) -basis_type pw -ks_solver cg -chg_extrap second-order -pw_diag_thr 0.00001 +basis_type pw +ks_solver cg +chg_extrap second-order +pw_diag_thr 0.00001 -cal_force 1 +cal_force 1 #test_force 1 -cal_stress 1 +cal_stress 1 #test_stress 1 -mixing_type broyden -mixing_beta 0.4 -mixing_gg0 1.5 +mixing_type broyden +mixing_beta 0.4 +mixing_gg0 1.5 -pw_seed 1 +pw_seed 1 diff --git a/tests/01_PW/032_PW_15_CF_CS_bspline/INPUT b/tests/01_PW/032_PW_15_CF_CS_bspline/INPUT index 9e2c7f5b95..fed06e3cb2 100644 --- a/tests/01_PW/032_PW_15_CF_CS_bspline/INPUT +++ b/tests/01_PW/032_PW_15_CF_CS_bspline/INPUT @@ -1,35 +1,35 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (General) -suffix autotest -pseudo_dir ../../PP_ORB +suffix autotest +pseudo_dir ../../PP_ORB -gamma_only 0 -calculation scf -symmetry 1 -relax_nmax 1 -out_level ie -smearing_method gaussian -smearing_sigma 0.02 +gamma_only 0 +calculation scf +symmetry 1 +relax_nmax 1 +out_level ie +smearing_method gaussian +smearing_sigma 0.02 #Parameters (3.PW) -ecutwfc 20 -scf_thr 1e-8 -scf_nmax 100 +ecutwfc 20 +scf_thr 1e-8 +scf_nmax 100 #Parameters (LCAO) -basis_type pw -ks_solver cg -chg_extrap second-order -pw_diag_thr 0.00001 +basis_type pw +ks_solver cg +chg_extrap second-order +pw_diag_thr 0.00001 -cal_force 1 +cal_force 1 #test_force 1 -cal_stress 1 +cal_stress 1 #test_stress 1 -mixing_type broyden -mixing_beta 0.4 -mixing_gg0 1.5 -nbspline 20 +mixing_type broyden +mixing_beta 0.4 +mixing_gg0 1.5 +nbspline 20 -pw_seed 1 +pw_seed 1 diff --git a/tests/01_PW/033_PW_CF_CS_S1_smallg/INPUT b/tests/01_PW/033_PW_CF_CS_S1_smallg/INPUT index cfed35bc54..0275db7bb0 100644 --- a/tests/01_PW/033_PW_CF_CS_S1_smallg/INPUT +++ b/tests/01_PW/033_PW_CF_CS_S1_smallg/INPUT @@ -1,27 +1,27 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf +suffix autotest +calculation scf -nbands 6 -symmetry 1 +nbands 6 +symmetry 1 #Parameters (2.Iteration) -ecutwfc 20 -scf_thr 1e-9 -scf_nmax 100 +ecutwfc 20 +scf_thr 1e-9 +scf_nmax 100 -cal_stress 1 -cal_force 1 +cal_stress 1 +cal_force 1 #Parameters (3.Basis) -basis_type pw +basis_type pw #Parameters (4.Smearing) -smearing_method gauss -smearing_sigma 0.002 +smearing_method gauss +smearing_sigma 0.002 #Parameters (5.Mixing) -mixing_type plain -mixing_beta 0.7 -pseudo_dir ../../PP_ORB +mixing_type plain +mixing_beta 0.7 +pseudo_dir ../../PP_ORB diff --git a/tests/01_PW/034_PW_CF_CS_S2_smallg/INPUT b/tests/01_PW/034_PW_CF_CS_S2_smallg/INPUT index 3da3a89c0f..0a8c37dd6c 100644 --- a/tests/01_PW/034_PW_CF_CS_S2_smallg/INPUT +++ b/tests/01_PW/034_PW_CF_CS_S2_smallg/INPUT @@ -1,28 +1,28 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf +suffix autotest +calculation scf -nbands 6 -symmetry 1 -nspin 2 +nbands 6 +symmetry 1 +nspin 2 #Parameters (2.Iteration) -ecutwfc 20 -scf_thr 1e-9 -scf_nmax 100 +ecutwfc 20 +scf_thr 1e-9 +scf_nmax 100 -cal_stress 1 -cal_force 1 +cal_stress 1 +cal_force 1 #Parameters (3.Basis) -basis_type pw +basis_type pw #Parameters (4.Smearing) -smearing_method gauss -smearing_sigma 0.002 +smearing_method gauss +smearing_sigma 0.002 #Parameters (5.Mixing) -mixing_type plain -mixing_beta 0.7 -pseudo_dir ../../PP_ORB +mixing_type plain +mixing_beta 0.7 +pseudo_dir ../../PP_ORB diff --git a/tests/01_PW/035_PW_15_SO/INPUT b/tests/01_PW/035_PW_15_SO/INPUT index 6d62acf937..f3f6b2c889 100644 --- a/tests/01_PW/035_PW_15_SO/INPUT +++ b/tests/01_PW/035_PW_15_SO/INPUT @@ -1,45 +1,46 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (General) -suffix autotest -pseudo_dir ../../PP_ORB +suffix autotest +pseudo_dir ../../PP_ORB +init_wfc random #nbands 40 -gamma_only 0 +gamma_only 0 -calculation scf +calculation scf #test_force 1 -relax_nmax 1 -force_thr_ev 0.001 -out_level ie -relax_method cg -out_chg 1 +relax_nmax 1 +force_thr_ev 0.001 +out_level ie +relax_method cg +# out_chg 1 #out_band 1 #init_chg file -smearing_method gaussian -smearing_sigma 0.001 +smearing_method gaussian +smearing_sigma 0.001 -ecutwfc 20 -scf_thr 1e-6 -scf_nmax 100 +ecutwfc 20 +scf_thr 1e-6 +scf_nmax 100 -cal_force 1 -cal_stress 1 +cal_force 1 +cal_stress 1 #noncolin 1 -lspinorb 1 +lspinorb 1 -basis_type pw -ks_solver dav_subspace +basis_type pw +ks_solver dav_subspace diago_smooth_ethr true -pw_diag_ndim 2 -chg_extrap second-order -pw_diag_thr 0.00001 +pw_diag_ndim 2 +chg_extrap second-order +pw_diag_thr 0.00001 -mixing_type broyden -mixing_beta 0.4 -mixing_gg0 1.5 +mixing_type broyden +mixing_beta 0.4 +mixing_gg0 1.5 -pw_seed 1 +pw_seed 1 diff --git a/tests/01_PW/036_PW_AF/INPUT b/tests/01_PW/036_PW_AF/INPUT index 63b1c605c7..3d52d764e8 100644 --- a/tests/01_PW/036_PW_AF/INPUT +++ b/tests/01_PW/036_PW_AF/INPUT @@ -1,28 +1,29 @@ -INPUT_PARAMETERS -suffix autotest +INPUT_PARAMETERS +suffix autotest +init_wfc random #nbands 40 -calculation scf -nspin 2 -ecutwfc 15 +calculation scf +nspin 2 +ecutwfc 15 scf_thr 1.0e-10 -scf_nmax 50 -out_chg 0 +scf_nmax 50 +out_chg 0 #init_chg file #out_dos 1 #dos_sigma 0.05 #out_band 1 -smearing_method gaussian -smearing_sigma 0.07 +smearing_method gaussian +smearing_sigma 0.07 -mixing_type broyden -mixing_beta 0.2 +mixing_type broyden +mixing_beta 0.2 -ks_solver cg -basis_type pw -symmetry 1 -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB +ks_solver cg +basis_type pw +symmetry 1 +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB diff --git a/tests/01_PW/037_PW_FM/INPUT b/tests/01_PW/037_PW_FM/INPUT index 3e35f70dec..90eb264db5 100644 --- a/tests/01_PW/037_PW_FM/INPUT +++ b/tests/01_PW/037_PW_FM/INPUT @@ -1,30 +1,31 @@ -INPUT_PARAMETERS -suffix autotest +INPUT_PARAMETERS +suffix autotest +init_wfc random #nbands 40 -calculation scf -nspin 2 -ecutwfc 15 +calculation scf +nspin 2 +ecutwfc 15 scf_thr 1.0e-8 -scf_nmax 50 -out_chg 0 +scf_nmax 50 +out_chg 0 #init_chg file #out_dos 1 #dos_sigma 0.05 #out_band 1 -smearing_method gaussian -smearing_sigma 0.07 +smearing_method gaussian +smearing_sigma 0.07 -mixing_type broyden -mixing_beta 0.2 +mixing_type broyden +mixing_beta 0.2 -ks_solver cg -basis_type pw -symmetry 1 -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB +ks_solver cg +basis_type pw +symmetry 1 +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB -pw_seed 1 +pw_seed 1 diff --git a/tests/01_PW/038_PW_NC/INPUT b/tests/01_PW/038_PW_NC/INPUT index acdac8c09e..fdf932781f 100644 --- a/tests/01_PW/038_PW_NC/INPUT +++ b/tests/01_PW/038_PW_NC/INPUT @@ -1,35 +1,36 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS +init_wfc random # pw scf non-collinear calculations -basis_type pw -calculation scf -noncolin 1 -symmetry 0 -cal_force 1 -cal_stress 1 +basis_type pw +calculation scf +noncolin 1 +symmetry 0 +cal_force 1 +cal_stress 1 # plane wave and scf -ecutwfc 20 -pw_seed 1 -scf_thr 1.0e-7 -scf_nmax 50 -out_chg 0 +ecutwfc 20 +pw_seed 1 +scf_thr 1.0e-7 +scf_nmax 50 +out_chg 0 # smearing method -smearing_method gaussian -smearing_sigma 0.02 +smearing_method gaussian +smearing_sigma 0.02 # charge mixing method -mixing_type broyden -mixing_beta 0.2 -mixing_ndim 10 +mixing_type broyden +mixing_beta 0.2 +mixing_ndim 10 # diagonalizaiton -ks_solver dav_subspace +ks_solver dav_subspace diago_smooth_ethr true -pw_diag_ndim 2 +pw_diag_ndim 2 # directories -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB -suffix autotest +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB +suffix autotest diff --git a/tests/01_PW/039_PW_FD_smear/INPUT b/tests/01_PW/039_PW_FD_smear/INPUT index aea44c4a4c..31337aed87 100644 --- a/tests/01_PW/039_PW_FD_smear/INPUT +++ b/tests/01_PW/039_PW_FD_smear/INPUT @@ -1,26 +1,27 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf +suffix autotest +calculation scf +init_wfc random -nbands 35 -symmetry 1 -pseudo_dir ../../PP_ORB +nbands 35 +symmetry 1 +pseudo_dir ../../PP_ORB #Parameters (2.Iteration) -ecutwfc 20 -scf_thr 1e-8 -scf_nmax 100 +ecutwfc 20 +scf_thr 1e-8 +scf_nmax 100 #Parameters (3.Basis) -basis_type pw +basis_type pw #Parameters (4.Smearing) -smearing_method fd -smearing_sigma 0.002 +smearing_method fd +smearing_sigma 0.002 #Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.6 -mixing_gg0 2 +mixing_type broyden +mixing_beta 0.6 +mixing_gg0 2 diff --git a/tests/01_PW/040_PW_FX_smear/INPUT b/tests/01_PW/040_PW_FX_smear/INPUT index c1d26953b8..dbb738bf2e 100644 --- a/tests/01_PW/040_PW_FX_smear/INPUT +++ b/tests/01_PW/040_PW_FX_smear/INPUT @@ -1,26 +1,25 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf +suffix autotest +calculation scf -nbands 6 -symmetry 1 -pseudo_dir ../../PP_ORB +nbands 6 +symmetry 1 +pseudo_dir ../../PP_ORB #Parameters (2.Iteration) -ecutwfc 20 -scf_thr 1e-8 -scf_nmax 100 +ecutwfc 20 +scf_thr 1e-8 +scf_nmax 100 #Parameters (3.Basis) -basis_type pw +basis_type pw #Parameters (4.Smearing) -smearing_method fixed -smearing_sigma 0.002 +smearing_method fixed +smearing_sigma 0.002 #Parameters (5.Mixing) -mixing_type plain -mixing_beta 0.7 - +mixing_type plain +mixing_beta 0.7 diff --git a/tests/01_PW/041_PW_GA_smear/INPUT b/tests/01_PW/041_PW_GA_smear/INPUT index 149e0a585a..3d3237a7d9 100644 --- a/tests/01_PW/041_PW_GA_smear/INPUT +++ b/tests/01_PW/041_PW_GA_smear/INPUT @@ -1,26 +1,27 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf +suffix autotest +calculation scf +init_wfc random -nbands 30 -symmetry 1 -pseudo_dir ../../PP_ORB +nbands 30 +symmetry 1 +pseudo_dir ../../PP_ORB #Parameters (2.Iteration) -ecutwfc 20 -scf_thr 1e-8 -scf_nmax 100 +ecutwfc 20 +scf_thr 1e-8 +scf_nmax 100 #Parameters (3.Basis) -basis_type pw +basis_type pw #Parameters (4.Smearing) -smearing_method gauss -smearing_sigma 0.002 +smearing_method gauss +smearing_sigma 0.002 #Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.3 -mixing_gg0 1.5 +mixing_type broyden +mixing_beta 0.3 +mixing_gg0 1.5 diff --git a/tests/01_PW/042_PW_M2_smear/INPUT b/tests/01_PW/042_PW_M2_smear/INPUT index 3432a4d8c4..49d336afaa 100644 --- a/tests/01_PW/042_PW_M2_smear/INPUT +++ b/tests/01_PW/042_PW_M2_smear/INPUT @@ -1,25 +1,26 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf +suffix autotest +calculation scf +init_wfc random -nbands 8 -symmetry 1 -pseudo_dir ../../PP_ORB +nbands 8 +symmetry 1 +pseudo_dir ../../PP_ORB #Parameters (2.Iteration) -ecutwfc 20 -scf_thr 1e-8 -scf_nmax 100 +ecutwfc 20 +scf_thr 1e-8 +scf_nmax 100 #Parameters (3.Basis) -basis_type pw +basis_type pw #Parameters (4.Smearing) -smearing_method mp2 -smearing_sigma 0.002 +smearing_method mp2 +smearing_sigma 0.002 #Parameters (5.Mixing) -mixing_type plain -mixing_beta 0.7 +mixing_type plain +mixing_beta 0.7 diff --git a/tests/01_PW/043_PW_MP_smear/INPUT b/tests/01_PW/043_PW_MP_smear/INPUT index 6473f5b9f1..862a4ad7f2 100644 --- a/tests/01_PW/043_PW_MP_smear/INPUT +++ b/tests/01_PW/043_PW_MP_smear/INPUT @@ -1,25 +1,26 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf +suffix autotest +calculation scf +init_wfc random -nbands 12 -symmetry 1 -pseudo_dir ../../PP_ORB +nbands 12 +symmetry 1 +pseudo_dir ../../PP_ORB #Parameters (2.Iteration) -ecutwfc 20 -scf_thr 1e-8 -scf_nmax 100 +ecutwfc 20 +scf_thr 1e-8 +scf_nmax 100 #Parameters (3.Basis) -basis_type pw +basis_type pw #Parameters (4.Smearing) -smearing_method mp -smearing_sigma 0.002 +smearing_method mp +smearing_sigma 0.002 #Parameters (5.Mixing) -mixing_type plain -mixing_beta 0.5 +mixing_type plain +mixing_beta 0.5 diff --git a/tests/01_PW/044_PW_MV_smear/INPUT b/tests/01_PW/044_PW_MV_smear/INPUT index 1894fca69a..0602a022f5 100644 --- a/tests/01_PW/044_PW_MV_smear/INPUT +++ b/tests/01_PW/044_PW_MV_smear/INPUT @@ -1,25 +1,26 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf +suffix autotest +calculation scf +init_wfc random -nbands 6 -symmetry 1 -pseudo_dir ../../PP_ORB +nbands 6 +symmetry 1 +pseudo_dir ../../PP_ORB #Parameters (2.Iteration) -ecutwfc 20 -scf_thr 1e-8 -scf_nmax 100 +ecutwfc 20 +scf_thr 1e-8 +scf_nmax 100 #Parameters (3.Basis) -basis_type pw +basis_type pw #Parameters (4.Smearing) -smearing_method mv -smearing_sigma 0.002 +smearing_method mv +smearing_sigma 0.002 #Parameters (5.Mixing) -mixing_type plain -mixing_beta 0.5 +mixing_type plain +mixing_beta 0.5 diff --git a/tests/01_PW/045_PW_BD_chgmix/INPUT b/tests/01_PW/045_PW_BD_chgmix/INPUT index 0636e83165..ff55920458 100644 --- a/tests/01_PW/045_PW_BD_chgmix/INPUT +++ b/tests/01_PW/045_PW_BD_chgmix/INPUT @@ -1,26 +1,26 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf +suffix autotest +calculation scf +init_wfc random -nbands 12 -symmetry 1 -pseudo_dir ../../PP_ORB +nbands 12 +symmetry 1 +pseudo_dir ../../PP_ORB #Parameters (2.Iteration) -ecutwfc 20 -scf_thr 1e-8 -scf_nmax 100 +ecutwfc 20 +scf_thr 1e-8 +scf_nmax 100 #Parameters (3.Basis) -basis_type pw +basis_type pw #Parameters (4.Smearing) -smearing_method gauss -smearing_sigma 0.002 +smearing_method gauss +smearing_sigma 0.002 #Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.7 - +mixing_type broyden +mixing_beta 0.7 diff --git a/tests/01_PW/046_PW_KK_chgmix/INPUT b/tests/01_PW/046_PW_KK_chgmix/INPUT index 75730ec689..9e89021b04 100644 --- a/tests/01_PW/046_PW_KK_chgmix/INPUT +++ b/tests/01_PW/046_PW_KK_chgmix/INPUT @@ -1,26 +1,26 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf +suffix autotest +calculation scf +init_wfc random -nbands 12 -symmetry 1 -pseudo_dir ../../PP_ORB +nbands 12 +symmetry 1 +pseudo_dir ../../PP_ORB #Parameters (2.Iteration) -ecutwfc 20 -scf_thr 1e-8 -scf_nmax 100 +ecutwfc 20 +scf_thr 1e-8 +scf_nmax 100 #Parameters (3.Basis) -basis_type pw +basis_type pw #Parameters (4.Smearing) -smearing_method gauss -smearing_sigma 0.002 +smearing_method gauss +smearing_sigma 0.002 #Parameters (5.Mixing) -mixing_type plain -mixing_beta 0.7 - +mixing_type plain +mixing_beta 0.7 diff --git a/tests/01_PW/047_PW_PK_chgmix/INPUT b/tests/01_PW/047_PW_PK_chgmix/INPUT index 2132fca512..c3f43dcec2 100644 --- a/tests/01_PW/047_PW_PK_chgmix/INPUT +++ b/tests/01_PW/047_PW_PK_chgmix/INPUT @@ -1,27 +1,27 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf +suffix autotest +calculation scf +init_wfc random -nbands 12 -symmetry 1 -pseudo_dir ../../PP_ORB +nbands 12 +symmetry 1 +pseudo_dir ../../PP_ORB #Parameters (2.Iteration) -ecutwfc 20 -scf_thr 1e-8 -scf_nmax 100 +ecutwfc 20 +scf_thr 1e-8 +scf_nmax 100 #Parameters (3.Basis) -basis_type pw +basis_type pw #Parameters (4.Smearing) -smearing_method gauss -smearing_sigma 0.002 +smearing_method gauss +smearing_sigma 0.002 #Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.7 -mixing_gg0 1.5 - +mixing_type broyden +mixing_beta 0.7 +mixing_gg0 1.5 diff --git a/tests/01_PW/048_PW_PL_chgmix/INPUT b/tests/01_PW/048_PW_PL_chgmix/INPUT index e0b5e7929c..9e89021b04 100644 --- a/tests/01_PW/048_PW_PL_chgmix/INPUT +++ b/tests/01_PW/048_PW_PL_chgmix/INPUT @@ -1,26 +1,26 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf +suffix autotest +calculation scf +init_wfc random -nbands 12 -symmetry 1 -pseudo_dir ../../PP_ORB +nbands 12 +symmetry 1 +pseudo_dir ../../PP_ORB #Parameters (2.Iteration) -ecutwfc 20 -scf_thr 1e-8 -scf_nmax 100 +ecutwfc 20 +scf_thr 1e-8 +scf_nmax 100 #Parameters (3.Basis) -basis_type pw +basis_type pw #Parameters (4.Smearing) -smearing_method gauss -smearing_sigma 0.002 +smearing_method gauss +smearing_sigma 0.002 #Parameters (5.Mixing) -mixing_type plain -mixing_beta 0.7 - +mixing_type plain +mixing_beta 0.7 diff --git a/tests/01_PW/049_PW_PU_chgmix/INPUT b/tests/01_PW/049_PW_PU_chgmix/INPUT index 0a3df08fa0..bfb95f8a62 100644 --- a/tests/01_PW/049_PW_PU_chgmix/INPUT +++ b/tests/01_PW/049_PW_PU_chgmix/INPUT @@ -1,26 +1,26 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf +suffix autotest +calculation scf +init_wfc random -nbands 12 -symmetry 1 -pseudo_dir ../../PP_ORB +nbands 12 +symmetry 1 +pseudo_dir ../../PP_ORB #Parameters (2.Iteration) -ecutwfc 20 -scf_thr 1e-8 -scf_nmax 100 +ecutwfc 20 +scf_thr 1e-8 +scf_nmax 100 #Parameters (3.Basis) -basis_type pw +basis_type pw #Parameters (4.Smearing) -smearing_method gauss -smearing_sigma 0.002 +smearing_method gauss +smearing_sigma 0.002 #Parameters (5.Mixing) -mixing_type pulay -mixing_beta 0.7 - +mixing_type pulay +mixing_beta 0.7 diff --git a/tests/01_PW/050_PW_CHG_mismatch/INPUT b/tests/01_PW/050_PW_CHG_mismatch/INPUT index 40e519643a..493e211691 100644 --- a/tests/01_PW/050_PW_CHG_mismatch/INPUT +++ b/tests/01_PW/050_PW_CHG_mismatch/INPUT @@ -1,28 +1,29 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf +suffix autotest +calculation scf +init_wfc random -nspin 2 -nbands 6 -symmetry 1 -pseudo_dir ../../PP_ORB +nspin 2 +nbands 6 +symmetry 1 +pseudo_dir ../../PP_ORB -init_chg file -read_file_dir ./ +init_chg file +read_file_dir ./ #Parameters (2.Iteration) -ecutwfc 40 -scf_thr 1e-9 -scf_nmax 100 +ecutwfc 40 +scf_thr 1e-9 +scf_nmax 100 #Parameters (3.Basis) -basis_type pw +basis_type pw #Parameters (4.Smearing) -smearing_method gauss -smearing_sigma 0.002 +smearing_method gauss +smearing_sigma 0.002 #Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.7 +mixing_type broyden +mixing_beta 0.7 diff --git a/tests/01_PW/051_PW_OBOD_MemSaver/INPUT b/tests/01_PW/051_PW_OBOD_MemSaver/INPUT index 6588402957..ff75622d33 100644 --- a/tests/01_PW/051_PW_OBOD_MemSaver/INPUT +++ b/tests/01_PW/051_PW_OBOD_MemSaver/INPUT @@ -1,31 +1,31 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation nscf +suffix autotest +calculation nscf -nbands 6 -symmetry 0 -pseudo_dir ../../PP_ORB -read_file_dir ./ +nbands 6 +symmetry 0 +pseudo_dir ../../PP_ORB +read_file_dir ./ #Parameters (2.Iteration) -ecutwfc 20 -scf_thr 1e-8 -scf_nmax 100 +ecutwfc 20 +scf_thr 1e-8 +scf_nmax 100 -init_chg file -out_band 1 -out_dos 1 +init_chg file +out_band 1 +out_dos 1 #Parameters (3.Basis) -basis_type pw +basis_type pw #Parameters (4.Smearing) -smearing_method gauss -smearing_sigma 0.002 +smearing_method gauss +smearing_sigma 0.002 #Parameters (5.Mixing) -mixing_type plain -mixing_beta 0.7 +mixing_type plain +mixing_beta 0.7 -mem_saver 1 +mem_saver 1 diff --git a/tests/01_PW/051_PW_OBOD_MemSaver/eigs1.txt.ref b/tests/01_PW/051_PW_OBOD_MemSaver/band.txt.ref similarity index 100% rename from tests/01_PW/051_PW_OBOD_MemSaver/eigs1.txt.ref rename to tests/01_PW/051_PW_OBOD_MemSaver/band.txt.ref diff --git a/tests/01_PW/051_PW_OBOD_MemSaver/chgs1.cube b/tests/01_PW/051_PW_OBOD_MemSaver/chg.cube similarity index 100% rename from tests/01_PW/051_PW_OBOD_MemSaver/chgs1.cube rename to tests/01_PW/051_PW_OBOD_MemSaver/chg.cube diff --git a/tests/01_PW/052_PW_OB/INPUT b/tests/01_PW/052_PW_OB/INPUT index d42e2e194c..830c99509f 100644 --- a/tests/01_PW/052_PW_OB/INPUT +++ b/tests/01_PW/052_PW_OB/INPUT @@ -1,34 +1,34 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation nscf +suffix autotest +calculation nscf -nbands 6 -symmetry 0 -pseudo_dir ../../PP_ORB -read_file_dir ./ -kpar 2 +nbands 6 +symmetry 0 +pseudo_dir ../../PP_ORB +read_file_dir ./ +kpar 2 #Parameters (2.Iteration) -ecutwfc 20 -scf_thr 1e-8 -scf_nmax 100 +ecutwfc 20 +scf_thr 1e-8 +scf_nmax 100 -init_chg file -init_wfc random -out_band 1 -pw_diag_thr 0.00001 +init_chg file +init_wfc random +out_band 1 +pw_diag_thr 0.00001 #Parameters (3.Basis) -basis_type pw +basis_type pw #Parameters (4.Smearing) -smearing_method gauss -smearing_sigma 0.002 +smearing_method gauss +smearing_sigma 0.002 #Parameters (5.Mixing) -mixing_type plain -mixing_beta 0.7 +mixing_type plain +mixing_beta 0.7 -pw_seed 1 +pw_seed 1 diff --git a/tests/01_PW/052_PW_OB/eigs1.txt.ref b/tests/01_PW/052_PW_OB/band.txt.ref similarity index 100% rename from tests/01_PW/052_PW_OB/eigs1.txt.ref rename to tests/01_PW/052_PW_OB/band.txt.ref diff --git a/tests/01_PW/052_PW_OB/chgs1.cube b/tests/01_PW/052_PW_OB/chg.cube similarity index 100% rename from tests/01_PW/052_PW_OB/chgs1.cube rename to tests/01_PW/052_PW_OB/chg.cube diff --git a/tests/01_PW/053_PW_OD/INPUT b/tests/01_PW/053_PW_OD/INPUT index 7fd6b6bada..af164a1f41 100644 --- a/tests/01_PW/053_PW_OD/INPUT +++ b/tests/01_PW/053_PW_OD/INPUT @@ -1,35 +1,35 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation nscf +suffix autotest +calculation nscf -nbands 6 -symmetry 0 -pseudo_dir ../../PP_ORB -read_file_dir ./ +nbands 6 +symmetry 0 +pseudo_dir ../../PP_ORB +read_file_dir ./ #Parameters (2.Iteration) -ecutwfc 20 -scf_thr 1e-8 -scf_nmax 100 +ecutwfc 20 +scf_thr 1e-8 +scf_nmax 100 -init_chg file -out_dos 1 -pw_diag_thr 0.00001 +init_chg file +out_dos 1 +pw_diag_thr 0.00001 #Parameters (3.Basis) -basis_type pw +basis_type pw #Parameters (4.Smearing) -smearing_method gauss -smearing_sigma 0.002 +smearing_method gauss +smearing_sigma 0.002 #Parameters (5.Mixing) -mixing_type plain -mixing_beta 0.7 +mixing_type plain +mixing_beta 0.7 #dos_emin_ev -15 #minimal range for dos #dos_emax_ev 15 #maximal range for dos -dos_edelta_ev 0.01 #delta energy for dos +dos_edelta_ev 0.01 #delta energy for dos #dos_scale 0.01 #scale dos range by -dos_sigma 0.05 #gauss b coefficeinet(default=0.07) +dos_sigma 0.05 #gauss b coefficeinet(default=0.07) diff --git a/tests/01_PW/053_PW_OD/chgs1.cube b/tests/01_PW/053_PW_OD/chg.cube similarity index 100% rename from tests/01_PW/053_PW_OD/chgs1.cube rename to tests/01_PW/053_PW_OD/chg.cube diff --git a/tests/01_PW/054_PW_OP_nscf/INPUT b/tests/01_PW/054_PW_OP_nscf/INPUT deleted file mode 100644 index 4e4c96eae9..0000000000 --- a/tests/01_PW/054_PW_OP_nscf/INPUT +++ /dev/null @@ -1,27 +0,0 @@ -INPUT_PARAMETERS -#Parameters (1.General) -suffix autotest -calculation nscf - -nbands 8 -symmetry 1 -out_pot 1 - -#Parameters (2.Iteration) -ecutwfc 5 -scf_thr 1e-9 -scf_nmax 100 - -#Parameters (3.Basis) -basis_type pw - -#Parameters (4.Smearing) -smearing_method gauss -smearing_sigma 0.002 - -#Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.7 - -read_file_dir ./ -pseudo_dir ../../PP_ORB diff --git a/tests/01_PW/054_PW_OP_nscf/chgs1.cube b/tests/01_PW/054_PW_OP_nscf/chgs1.cube deleted file mode 100644 index b9375d98d4..0000000000 --- a/tests/01_PW/054_PW_OP_nscf/chgs1.cube +++ /dev/null @@ -1,169 +0,0 @@ -STEP: 0 Cubefile created from ABACUS. Inner loop is z, followed by y and x -1 (nspin) 0.875060 (fermi energy, in Ry) -1 0.0 0.0 0.0 -9 0.495556 0.495556 0.000000 -9 0.495556 0.000000 0.495556 -9 0.000000 0.495556 0.495556 - 58 12 0.000000 0.000000 0.000000 - 1.890e-01 2.195e-01 2.017e-01 1.020e-01 4.045e-02 4.045e-02 - 1.020e-01 2.017e-01 2.195e-01 - 2.195e-01 2.182e-01 1.388e-01 5.561e-02 3.185e-02 5.561e-02 - 1.388e-01 2.182e-01 2.195e-01 - 2.017e-01 1.388e-01 6.355e-02 2.969e-02 2.969e-02 6.355e-02 - 1.388e-01 2.017e-01 2.182e-01 - 1.020e-01 5.561e-02 2.969e-02 2.343e-02 2.969e-02 5.561e-02 - 1.020e-01 1.388e-01 1.388e-01 - 4.045e-02 3.185e-02 2.969e-02 2.969e-02 3.185e-02 4.045e-02 - 5.561e-02 6.355e-02 5.561e-02 - 4.045e-02 5.561e-02 6.355e-02 5.561e-02 4.045e-02 3.185e-02 - 2.969e-02 2.969e-02 3.185e-02 - 1.020e-01 1.388e-01 1.388e-01 1.020e-01 5.561e-02 2.969e-02 - 2.343e-02 2.969e-02 5.561e-02 - 2.017e-01 2.182e-01 2.017e-01 1.388e-01 6.355e-02 2.969e-02 - 2.969e-02 6.355e-02 1.388e-01 - 2.195e-01 2.195e-01 2.182e-01 1.388e-01 5.561e-02 3.185e-02 - 5.561e-02 1.388e-01 2.182e-01 - 2.195e-01 2.182e-01 1.388e-01 5.561e-02 3.185e-02 5.561e-02 - 1.388e-01 2.182e-01 2.195e-01 - 2.182e-01 1.600e-01 7.431e-02 3.321e-02 3.321e-02 7.431e-02 - 1.600e-01 2.182e-01 2.259e-01 - 1.388e-01 7.431e-02 3.412e-02 2.462e-02 3.412e-02 7.431e-02 - 1.388e-01 1.815e-01 1.815e-01 - 5.561e-02 3.321e-02 2.462e-02 2.462e-02 3.321e-02 5.561e-02 - 8.704e-02 1.022e-01 8.704e-02 - 3.185e-02 3.321e-02 3.412e-02 3.321e-02 3.185e-02 3.527e-02 - 4.111e-02 4.111e-02 3.527e-02 - 5.561e-02 7.431e-02 7.431e-02 5.561e-02 3.527e-02 2.497e-02 - 2.220e-02 2.497e-02 3.527e-02 - 1.388e-01 1.600e-01 1.388e-01 8.704e-02 4.111e-02 2.220e-02 - 2.220e-02 4.111e-02 8.704e-02 - 2.182e-01 2.182e-01 1.815e-01 1.022e-01 4.111e-02 2.497e-02 - 4.111e-02 1.022e-01 1.815e-01 - 2.195e-01 2.259e-01 1.815e-01 8.704e-02 3.527e-02 3.527e-02 - 8.704e-02 1.815e-01 2.259e-01 - 2.017e-01 1.388e-01 6.355e-02 2.969e-02 2.969e-02 6.355e-02 - 1.388e-01 2.017e-01 2.182e-01 - 1.388e-01 7.431e-02 3.412e-02 2.462e-02 3.412e-02 7.431e-02 - 1.388e-01 1.815e-01 1.815e-01 - 6.355e-02 3.412e-02 2.257e-02 2.257e-02 3.412e-02 6.355e-02 - 1.022e-01 1.199e-01 1.022e-01 - 2.969e-02 2.462e-02 2.257e-02 2.462e-02 2.969e-02 4.111e-02 - 5.385e-02 5.385e-02 4.111e-02 - 2.969e-02 3.412e-02 3.412e-02 2.969e-02 2.497e-02 2.404e-02 - 2.439e-02 2.404e-02 2.497e-02 - 6.355e-02 7.431e-02 6.355e-02 4.111e-02 2.404e-02 1.667e-02 - 1.667e-02 2.404e-02 4.111e-02 - 1.388e-01 1.388e-01 1.022e-01 5.385e-02 2.439e-02 1.667e-02 - 2.439e-02 5.385e-02 1.022e-01 - 2.017e-01 1.815e-01 1.199e-01 5.385e-02 2.404e-02 2.404e-02 - 5.385e-02 1.199e-01 1.815e-01 - 2.182e-01 1.815e-01 1.022e-01 4.111e-02 2.497e-02 4.111e-02 - 1.022e-01 1.815e-01 2.182e-01 - 1.020e-01 5.561e-02 2.969e-02 2.343e-02 2.969e-02 5.561e-02 - 1.020e-01 1.388e-01 1.388e-01 - 5.561e-02 3.321e-02 2.462e-02 2.462e-02 3.321e-02 5.561e-02 - 8.704e-02 1.022e-01 8.704e-02 - 2.969e-02 2.462e-02 2.257e-02 2.462e-02 2.969e-02 4.111e-02 - 5.385e-02 5.385e-02 4.111e-02 - 2.343e-02 2.462e-02 2.462e-02 2.343e-02 2.220e-02 2.439e-02 - 2.630e-02 2.439e-02 2.220e-02 - 2.969e-02 3.321e-02 2.969e-02 2.220e-02 1.667e-02 1.442e-02 - 1.442e-02 1.667e-02 2.220e-02 - 5.561e-02 5.561e-02 4.111e-02 2.439e-02 1.442e-02 1.129e-02 - 1.442e-02 2.439e-02 4.111e-02 - 1.020e-01 8.704e-02 5.385e-02 2.630e-02 1.442e-02 1.442e-02 - 2.630e-02 5.385e-02 8.704e-02 - 1.388e-01 1.022e-01 5.385e-02 2.439e-02 1.667e-02 2.439e-02 - 5.385e-02 1.022e-01 1.388e-01 - 1.388e-01 8.704e-02 4.111e-02 2.220e-02 2.220e-02 4.111e-02 - 8.704e-02 1.388e-01 1.600e-01 - 4.045e-02 3.185e-02 2.969e-02 2.969e-02 3.185e-02 4.045e-02 - 5.561e-02 6.355e-02 5.561e-02 - 3.185e-02 3.321e-02 3.412e-02 3.321e-02 3.185e-02 3.527e-02 - 4.111e-02 4.111e-02 3.527e-02 - 2.969e-02 3.412e-02 3.412e-02 2.969e-02 2.497e-02 2.404e-02 - 2.439e-02 2.404e-02 2.497e-02 - 2.969e-02 3.321e-02 2.969e-02 2.220e-02 1.667e-02 1.442e-02 - 1.442e-02 1.667e-02 2.220e-02 - 3.185e-02 3.185e-02 2.497e-02 1.667e-02 1.129e-02 9.429e-03 - 1.129e-02 1.667e-02 2.497e-02 - 4.045e-02 3.527e-02 2.404e-02 1.442e-02 9.429e-03 9.429e-03 - 1.442e-02 2.404e-02 3.527e-02 - 5.561e-02 4.111e-02 2.439e-02 1.442e-02 1.129e-02 1.442e-02 - 2.439e-02 4.111e-02 5.561e-02 - 6.355e-02 4.111e-02 2.404e-02 1.667e-02 1.667e-02 2.404e-02 - 4.111e-02 6.355e-02 7.431e-02 - 5.561e-02 3.527e-02 2.497e-02 2.220e-02 2.497e-02 3.527e-02 - 5.561e-02 7.431e-02 7.431e-02 - 4.045e-02 5.561e-02 6.355e-02 5.561e-02 4.045e-02 3.185e-02 - 2.969e-02 2.969e-02 3.185e-02 - 5.561e-02 7.431e-02 7.431e-02 5.561e-02 3.527e-02 2.497e-02 - 2.220e-02 2.497e-02 3.527e-02 - 6.355e-02 7.431e-02 6.355e-02 4.111e-02 2.404e-02 1.667e-02 - 1.667e-02 2.404e-02 4.111e-02 - 5.561e-02 5.561e-02 4.111e-02 2.439e-02 1.442e-02 1.129e-02 - 1.442e-02 2.439e-02 4.111e-02 - 4.045e-02 3.527e-02 2.404e-02 1.442e-02 9.429e-03 9.429e-03 - 1.442e-02 2.404e-02 3.527e-02 - 3.185e-02 2.497e-02 1.667e-02 1.129e-02 9.429e-03 1.129e-02 - 1.667e-02 2.497e-02 3.185e-02 - 2.969e-02 2.220e-02 1.667e-02 1.442e-02 1.442e-02 1.667e-02 - 2.220e-02 2.969e-02 3.321e-02 - 2.969e-02 2.497e-02 2.404e-02 2.439e-02 2.404e-02 2.497e-02 - 2.969e-02 3.412e-02 3.412e-02 - 3.185e-02 3.527e-02 4.111e-02 4.111e-02 3.527e-02 3.185e-02 - 3.321e-02 3.412e-02 3.321e-02 - 1.020e-01 1.388e-01 1.388e-01 1.020e-01 5.561e-02 2.969e-02 - 2.343e-02 2.969e-02 5.561e-02 - 1.388e-01 1.600e-01 1.388e-01 8.704e-02 4.111e-02 2.220e-02 - 2.220e-02 4.111e-02 8.704e-02 - 1.388e-01 1.388e-01 1.022e-01 5.385e-02 2.439e-02 1.667e-02 - 2.439e-02 5.385e-02 1.022e-01 - 1.020e-01 8.704e-02 5.385e-02 2.630e-02 1.442e-02 1.442e-02 - 2.630e-02 5.385e-02 8.704e-02 - 5.561e-02 4.111e-02 2.439e-02 1.442e-02 1.129e-02 1.442e-02 - 2.439e-02 4.111e-02 5.561e-02 - 2.969e-02 2.220e-02 1.667e-02 1.442e-02 1.442e-02 1.667e-02 - 2.220e-02 2.969e-02 3.321e-02 - 2.343e-02 2.220e-02 2.439e-02 2.630e-02 2.439e-02 2.220e-02 - 2.343e-02 2.462e-02 2.462e-02 - 2.969e-02 4.111e-02 5.385e-02 5.385e-02 4.111e-02 2.969e-02 - 2.462e-02 2.257e-02 2.462e-02 - 5.561e-02 8.704e-02 1.022e-01 8.704e-02 5.561e-02 3.321e-02 - 2.462e-02 2.462e-02 3.321e-02 - 2.017e-01 2.182e-01 2.017e-01 1.388e-01 6.355e-02 2.969e-02 - 2.969e-02 6.355e-02 1.388e-01 - 2.182e-01 2.182e-01 1.815e-01 1.022e-01 4.111e-02 2.497e-02 - 4.111e-02 1.022e-01 1.815e-01 - 2.017e-01 1.815e-01 1.199e-01 5.385e-02 2.404e-02 2.404e-02 - 5.385e-02 1.199e-01 1.815e-01 - 1.388e-01 1.022e-01 5.385e-02 2.439e-02 1.667e-02 2.439e-02 - 5.385e-02 1.022e-01 1.388e-01 - 6.355e-02 4.111e-02 2.404e-02 1.667e-02 1.667e-02 2.404e-02 - 4.111e-02 6.355e-02 7.431e-02 - 2.969e-02 2.497e-02 2.404e-02 2.439e-02 2.404e-02 2.497e-02 - 2.969e-02 3.412e-02 3.412e-02 - 2.969e-02 4.111e-02 5.385e-02 5.385e-02 4.111e-02 2.969e-02 - 2.462e-02 2.257e-02 2.462e-02 - 6.355e-02 1.022e-01 1.199e-01 1.022e-01 6.355e-02 3.412e-02 - 2.257e-02 2.257e-02 3.412e-02 - 1.388e-01 1.815e-01 1.815e-01 1.388e-01 7.431e-02 3.412e-02 - 2.462e-02 3.412e-02 7.431e-02 - 2.195e-01 2.195e-01 2.182e-01 1.388e-01 5.561e-02 3.185e-02 - 5.561e-02 1.388e-01 2.182e-01 - 2.195e-01 2.259e-01 1.815e-01 8.704e-02 3.527e-02 3.527e-02 - 8.704e-02 1.815e-01 2.259e-01 - 2.182e-01 1.815e-01 1.022e-01 4.111e-02 2.497e-02 4.111e-02 - 1.022e-01 1.815e-01 2.182e-01 - 1.388e-01 8.704e-02 4.111e-02 2.220e-02 2.220e-02 4.111e-02 - 8.704e-02 1.388e-01 1.600e-01 - 5.561e-02 3.527e-02 2.497e-02 2.220e-02 2.497e-02 3.527e-02 - 5.561e-02 7.431e-02 7.431e-02 - 3.185e-02 3.527e-02 4.111e-02 4.111e-02 3.527e-02 3.185e-02 - 3.321e-02 3.412e-02 3.321e-02 - 5.561e-02 8.704e-02 1.022e-01 8.704e-02 5.561e-02 3.321e-02 - 2.462e-02 2.462e-02 3.321e-02 - 1.388e-01 1.815e-01 1.815e-01 1.388e-01 7.431e-02 3.412e-02 - 2.462e-02 3.412e-02 7.431e-02 - 2.182e-01 2.259e-01 2.182e-01 1.600e-01 7.431e-02 3.321e-02 - 3.321e-02 7.431e-02 1.600e-01 diff --git a/tests/01_PW/054_PW_OP_nscf/pots1.cube.ref b/tests/01_PW/054_PW_OP_nscf/pots1.cube.ref deleted file mode 100644 index cca5229b71..0000000000 --- a/tests/01_PW/054_PW_OP_nscf/pots1.cube.ref +++ /dev/null @@ -1,169 +0,0 @@ -STEP: 0 Cubefile created from ABACUS. Inner loop is z, followed by y and x -1 (nspin) -1 0.0 0.0 0.0 -9 0.000000 0.495556 0.495556 -9 0.495556 0.000000 0.495556 -9 0.495556 0.495556 0.000000 - 58 12 0.000000 0.000000 0.000000 - -1.062e+01 -9.235e+00 -4.737e+00 -1.499e+00 -4.977e-01 -4.977e-01 - -1.499e+00 -4.737e+00 -9.235e+00 - -9.235e+00 -5.730e+00 -2.164e+00 -1.677e-01 -2.142e-01 -1.677e-01 - -2.164e+00 -5.730e+00 -9.235e+00 - -4.737e+00 -2.164e+00 -3.686e-01 2.721e-01 2.721e-01 -3.686e-01 - -2.164e+00 -4.737e+00 -5.730e+00 - -1.499e+00 -1.677e-01 2.721e-01 -8.136e-02 2.721e-01 -1.677e-01 - -1.499e+00 -2.164e+00 -2.164e+00 - -4.977e-01 -2.142e-01 2.721e-01 2.721e-01 -2.142e-01 -4.977e-01 - -1.677e-01 -3.686e-01 -1.677e-01 - -4.977e-01 -1.677e-01 -3.686e-01 -1.677e-01 -4.977e-01 -2.142e-01 - 2.721e-01 2.721e-01 -2.142e-01 - -1.499e+00 -2.164e+00 -2.164e+00 -1.499e+00 -1.677e-01 2.721e-01 - -8.136e-02 2.721e-01 -1.677e-01 - -4.737e+00 -5.730e+00 -4.737e+00 -2.164e+00 -3.686e-01 2.721e-01 - 2.721e-01 -3.686e-01 -2.164e+00 - -9.235e+00 -9.235e+00 -5.730e+00 -2.164e+00 -1.677e-01 -2.142e-01 - -1.677e-01 -2.164e+00 -5.730e+00 - -9.235e+00 -5.730e+00 -2.164e+00 -1.677e-01 -2.142e-01 -1.677e-01 - -2.164e+00 -5.730e+00 -9.235e+00 - -5.730e+00 -3.008e+00 -7.149e-01 -1.812e-02 -1.812e-02 -7.149e-01 - -3.008e+00 -5.730e+00 -7.413e+00 - -2.164e+00 -7.149e-01 -6.406e-01 -7.591e-02 -6.406e-01 -7.149e-01 - -2.164e+00 -3.522e+00 -3.522e+00 - -1.677e-01 -1.812e-02 -7.591e-02 -7.591e-02 -1.812e-02 -1.677e-01 - -7.444e-01 -1.330e+00 -7.444e-01 - -2.142e-01 -1.812e-02 -6.406e-01 -1.812e-02 -2.142e-01 -3.052e-02 - -2.428e-01 -2.428e-01 -3.052e-02 - -1.677e-01 -7.149e-01 -7.149e-01 -1.677e-01 -3.052e-02 -2.155e-01 - 2.945e-01 -2.155e-01 -3.052e-02 - -2.164e+00 -3.008e+00 -2.164e+00 -7.444e-01 -2.428e-01 2.945e-01 - 2.945e-01 -2.428e-01 -7.444e-01 - -5.730e+00 -5.730e+00 -3.522e+00 -1.330e+00 -2.428e-01 -2.155e-01 - -2.428e-01 -1.330e+00 -3.522e+00 - -9.235e+00 -7.413e+00 -3.522e+00 -7.444e-01 -3.052e-02 -3.052e-02 - -7.444e-01 -3.522e+00 -7.413e+00 - -4.737e+00 -2.164e+00 -3.686e-01 2.721e-01 2.721e-01 -3.686e-01 - -2.164e+00 -4.737e+00 -5.730e+00 - -2.164e+00 -7.149e-01 -6.406e-01 -7.591e-02 -6.406e-01 -7.149e-01 - -2.164e+00 -3.522e+00 -3.522e+00 - -3.686e-01 -6.406e-01 -1.414e-01 -1.414e-01 -6.406e-01 -3.686e-01 - -1.330e+00 -2.179e+00 -1.330e+00 - 2.721e-01 -7.591e-02 -1.414e-01 -7.591e-02 2.721e-01 -2.428e-01 - -3.420e-01 -3.420e-01 -2.428e-01 - 2.721e-01 -6.406e-01 -6.406e-01 2.721e-01 -2.155e-01 -1.209e-01 - 2.107e-01 -1.209e-01 -2.155e-01 - -3.686e-01 -7.149e-01 -3.686e-01 -2.428e-01 -1.209e-01 1.346e-01 - 1.346e-01 -1.209e-01 -2.428e-01 - -2.164e+00 -2.164e+00 -1.330e+00 -3.420e-01 2.107e-01 1.346e-01 - 2.107e-01 -3.420e-01 -1.330e+00 - -4.737e+00 -3.522e+00 -2.179e+00 -3.420e-01 -1.209e-01 -1.209e-01 - -3.420e-01 -2.179e+00 -3.522e+00 - -5.730e+00 -3.522e+00 -1.330e+00 -2.428e-01 -2.155e-01 -2.428e-01 - -1.330e+00 -3.522e+00 -5.730e+00 - -1.499e+00 -1.677e-01 2.721e-01 -8.136e-02 2.721e-01 -1.677e-01 - -1.499e+00 -2.164e+00 -2.164e+00 - -1.677e-01 -1.812e-02 -7.591e-02 -7.591e-02 -1.812e-02 -1.677e-01 - -7.444e-01 -1.330e+00 -7.444e-01 - 2.721e-01 -7.591e-02 -1.414e-01 -7.591e-02 2.721e-01 -2.428e-01 - -3.420e-01 -3.420e-01 -2.428e-01 - -8.136e-02 -7.591e-02 -7.591e-02 -8.136e-02 2.945e-01 2.107e-01 - 5.110e-01 2.107e-01 2.945e-01 - 2.721e-01 -1.812e-02 2.721e-01 2.945e-01 1.346e-01 7.844e-01 - 7.844e-01 1.346e-01 2.945e-01 - -1.677e-01 -1.677e-01 -2.428e-01 2.107e-01 7.844e-01 3.880e-01 - 7.844e-01 2.107e-01 -2.428e-01 - -1.499e+00 -7.444e-01 -3.420e-01 5.110e-01 7.844e-01 7.844e-01 - 5.110e-01 -3.420e-01 -7.444e-01 - -2.164e+00 -1.330e+00 -3.420e-01 2.107e-01 1.346e-01 2.107e-01 - -3.420e-01 -1.330e+00 -2.164e+00 - -2.164e+00 -7.444e-01 -2.428e-01 2.945e-01 2.945e-01 -2.428e-01 - -7.444e-01 -2.164e+00 -3.008e+00 - -4.977e-01 -2.142e-01 2.721e-01 2.721e-01 -2.142e-01 -4.977e-01 - -1.677e-01 -3.686e-01 -1.677e-01 - -2.142e-01 -1.812e-02 -6.406e-01 -1.812e-02 -2.142e-01 -3.052e-02 - -2.428e-01 -2.428e-01 -3.052e-02 - 2.721e-01 -6.406e-01 -6.406e-01 2.721e-01 -2.155e-01 -1.209e-01 - 2.107e-01 -1.209e-01 -2.155e-01 - 2.721e-01 -1.812e-02 2.721e-01 2.945e-01 1.346e-01 7.844e-01 - 7.844e-01 1.346e-01 2.945e-01 - -2.142e-01 -2.142e-01 -2.155e-01 1.346e-01 3.880e-01 2.863e-01 - 3.880e-01 1.346e-01 -2.155e-01 - -4.977e-01 -3.052e-02 -1.209e-01 7.844e-01 2.863e-01 2.863e-01 - 7.844e-01 -1.209e-01 -3.052e-02 - -1.677e-01 -2.428e-01 2.107e-01 7.844e-01 3.880e-01 7.844e-01 - 2.107e-01 -2.428e-01 -1.677e-01 - -3.686e-01 -2.428e-01 -1.209e-01 1.346e-01 1.346e-01 -1.209e-01 - -2.428e-01 -3.686e-01 -7.149e-01 - -1.677e-01 -3.052e-02 -2.155e-01 2.945e-01 -2.155e-01 -3.052e-02 - -1.677e-01 -7.149e-01 -7.149e-01 - -4.977e-01 -1.677e-01 -3.686e-01 -1.677e-01 -4.977e-01 -2.142e-01 - 2.721e-01 2.721e-01 -2.142e-01 - -1.677e-01 -7.149e-01 -7.149e-01 -1.677e-01 -3.052e-02 -2.155e-01 - 2.945e-01 -2.155e-01 -3.052e-02 - -3.686e-01 -7.149e-01 -3.686e-01 -2.428e-01 -1.209e-01 1.346e-01 - 1.346e-01 -1.209e-01 -2.428e-01 - -1.677e-01 -1.677e-01 -2.428e-01 2.107e-01 7.844e-01 3.880e-01 - 7.844e-01 2.107e-01 -2.428e-01 - -4.977e-01 -3.052e-02 -1.209e-01 7.844e-01 2.863e-01 2.863e-01 - 7.844e-01 -1.209e-01 -3.052e-02 - -2.142e-01 -2.155e-01 1.346e-01 3.880e-01 2.863e-01 3.880e-01 - 1.346e-01 -2.155e-01 -2.142e-01 - 2.721e-01 2.945e-01 1.346e-01 7.844e-01 7.844e-01 1.346e-01 - 2.945e-01 2.721e-01 -1.812e-02 - 2.721e-01 -2.155e-01 -1.209e-01 2.107e-01 -1.209e-01 -2.155e-01 - 2.721e-01 -6.406e-01 -6.406e-01 - -2.142e-01 -3.052e-02 -2.428e-01 -2.428e-01 -3.052e-02 -2.142e-01 - -1.812e-02 -6.406e-01 -1.812e-02 - -1.499e+00 -2.164e+00 -2.164e+00 -1.499e+00 -1.677e-01 2.721e-01 - -8.136e-02 2.721e-01 -1.677e-01 - -2.164e+00 -3.008e+00 -2.164e+00 -7.444e-01 -2.428e-01 2.945e-01 - 2.945e-01 -2.428e-01 -7.444e-01 - -2.164e+00 -2.164e+00 -1.330e+00 -3.420e-01 2.107e-01 1.346e-01 - 2.107e-01 -3.420e-01 -1.330e+00 - -1.499e+00 -7.444e-01 -3.420e-01 5.110e-01 7.844e-01 7.844e-01 - 5.110e-01 -3.420e-01 -7.444e-01 - -1.677e-01 -2.428e-01 2.107e-01 7.844e-01 3.880e-01 7.844e-01 - 2.107e-01 -2.428e-01 -1.677e-01 - 2.721e-01 2.945e-01 1.346e-01 7.844e-01 7.844e-01 1.346e-01 - 2.945e-01 2.721e-01 -1.812e-02 - -8.136e-02 2.945e-01 2.107e-01 5.110e-01 2.107e-01 2.945e-01 - -8.136e-02 -7.591e-02 -7.591e-02 - 2.721e-01 -2.428e-01 -3.420e-01 -3.420e-01 -2.428e-01 2.721e-01 - -7.591e-02 -1.414e-01 -7.591e-02 - -1.677e-01 -7.444e-01 -1.330e+00 -7.444e-01 -1.677e-01 -1.812e-02 - -7.591e-02 -7.591e-02 -1.812e-02 - -4.737e+00 -5.730e+00 -4.737e+00 -2.164e+00 -3.686e-01 2.721e-01 - 2.721e-01 -3.686e-01 -2.164e+00 - -5.730e+00 -5.730e+00 -3.522e+00 -1.330e+00 -2.428e-01 -2.155e-01 - -2.428e-01 -1.330e+00 -3.522e+00 - -4.737e+00 -3.522e+00 -2.179e+00 -3.420e-01 -1.209e-01 -1.209e-01 - -3.420e-01 -2.179e+00 -3.522e+00 - -2.164e+00 -1.330e+00 -3.420e-01 2.107e-01 1.346e-01 2.107e-01 - -3.420e-01 -1.330e+00 -2.164e+00 - -3.686e-01 -2.428e-01 -1.209e-01 1.346e-01 1.346e-01 -1.209e-01 - -2.428e-01 -3.686e-01 -7.149e-01 - 2.721e-01 -2.155e-01 -1.209e-01 2.107e-01 -1.209e-01 -2.155e-01 - 2.721e-01 -6.406e-01 -6.406e-01 - 2.721e-01 -2.428e-01 -3.420e-01 -3.420e-01 -2.428e-01 2.721e-01 - -7.591e-02 -1.414e-01 -7.591e-02 - -3.686e-01 -1.330e+00 -2.179e+00 -1.330e+00 -3.686e-01 -6.406e-01 - -1.414e-01 -1.414e-01 -6.406e-01 - -2.164e+00 -3.522e+00 -3.522e+00 -2.164e+00 -7.149e-01 -6.406e-01 - -7.591e-02 -6.406e-01 -7.149e-01 - -9.235e+00 -9.235e+00 -5.730e+00 -2.164e+00 -1.677e-01 -2.142e-01 - -1.677e-01 -2.164e+00 -5.730e+00 - -9.235e+00 -7.413e+00 -3.522e+00 -7.444e-01 -3.052e-02 -3.052e-02 - -7.444e-01 -3.522e+00 -7.413e+00 - -5.730e+00 -3.522e+00 -1.330e+00 -2.428e-01 -2.155e-01 -2.428e-01 - -1.330e+00 -3.522e+00 -5.730e+00 - -2.164e+00 -7.444e-01 -2.428e-01 2.945e-01 2.945e-01 -2.428e-01 - -7.444e-01 -2.164e+00 -3.008e+00 - -1.677e-01 -3.052e-02 -2.155e-01 2.945e-01 -2.155e-01 -3.052e-02 - -1.677e-01 -7.149e-01 -7.149e-01 - -2.142e-01 -3.052e-02 -2.428e-01 -2.428e-01 -3.052e-02 -2.142e-01 - -1.812e-02 -6.406e-01 -1.812e-02 - -1.677e-01 -7.444e-01 -1.330e+00 -7.444e-01 -1.677e-01 -1.812e-02 - -7.591e-02 -7.591e-02 -1.812e-02 - -2.164e+00 -3.522e+00 -3.522e+00 -2.164e+00 -7.149e-01 -6.406e-01 - -7.591e-02 -6.406e-01 -7.149e-01 - -5.730e+00 -7.413e+00 -5.730e+00 -3.008e+00 -7.149e-01 -1.812e-02 - -1.812e-02 -7.149e-01 -3.008e+00 diff --git a/tests/01_PW/055_PW_OW/INPUT b/tests/01_PW/055_PW_OW/INPUT index 02690cc991..62a57372e3 100644 --- a/tests/01_PW/055_PW_OW/INPUT +++ b/tests/01_PW/055_PW_OW/INPUT @@ -1,17 +1,18 @@ -INPUT_PARAMETERS -basis_type pw -nspin 2 -calculation scf -out_wfc_pw 1 +INPUT_PARAMETERS +basis_type pw +nspin 2 +calculation scf +init_wfc random +out_wfc_pw 1 -nbands 6 -symmetry 1 +nbands 6 +symmetry 1 -pseudo_dir ../../PP_ORB -suffix autotest +pseudo_dir ../../PP_ORB +suffix autotest -ecutwfc 20 -scf_thr 1e-9 -scf_nmax 100 +ecutwfc 20 +scf_thr 1e-9 +scf_nmax 100 -pw_seed 1 +pw_seed 1 diff --git a/tests/01_PW/056_PW_IW/INPUT b/tests/01_PW/056_PW_IW/INPUT index 5efaf27905..721860f123 100644 --- a/tests/01_PW/056_PW_IW/INPUT +++ b/tests/01_PW/056_PW_IW/INPUT @@ -1,34 +1,34 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf -nbands 8 -symmetry 0 -latname fcc -pseudo_dir ../../PP_ORB +suffix autotest +calculation scf +nbands 8 +symmetry 0 +latname fcc +pseudo_dir ../../PP_ORB #Parameters (2.Iteration) -ecutwfc 30 -scf_thr 1e-9 -scf_nmax 4 +ecutwfc 30 +scf_thr 1e-9 +scf_nmax 4 #Parameters (3.Basis) -basis_type pw +basis_type pw #Parameters (4.Smearing) -smearing_method gaussian -smearing_sigma 0.02 +smearing_method gaussian +smearing_sigma 0.02 #parameters (5.Mixing) -mixing_type pulay -mixing_beta 0.4 +mixing_type pulay +mixing_beta 0.4 -pseudo_mesh 1 -pseudo_rcut 10 +pseudo_mesh 1 +pseudo_rcut 10 -cal_force 1 -cal_stress 1 +cal_force 1 +cal_stress 1 -init_chg file -init_wfc file -read_file_dir . +init_chg file +init_wfc file +read_file_dir . diff --git a/tests/01_PW/056_PW_IW/chgs1.cube b/tests/01_PW/056_PW_IW/chg.cube similarity index 100% rename from tests/01_PW/056_PW_IW/chgs1.cube rename to tests/01_PW/056_PW_IW/chg.cube diff --git a/tests/01_PW/056_PW_IW/wfs1k1_pw.dat b/tests/01_PW/056_PW_IW/wfk1_pw.dat similarity index 100% rename from tests/01_PW/056_PW_IW/wfs1k1_pw.dat rename to tests/01_PW/056_PW_IW/wfk1_pw.dat diff --git a/tests/01_PW/056_PW_IW/wfs1k2_pw.dat b/tests/01_PW/056_PW_IW/wfk2_pw.dat similarity index 100% rename from tests/01_PW/056_PW_IW/wfs1k2_pw.dat rename to tests/01_PW/056_PW_IW/wfk2_pw.dat diff --git a/tests/01_PW/057_PW_SO_IW/INPUT b/tests/01_PW/057_PW_SO_IW/INPUT index b309fafe56..d7ae118473 100644 --- a/tests/01_PW/057_PW_SO_IW/INPUT +++ b/tests/01_PW/057_PW_SO_IW/INPUT @@ -1,32 +1,32 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS # general commands -calculation scf +calculation scf #noncolin 1 -lspinorb 1 -gamma_only 0 -symmetry 0 +lspinorb 1 +gamma_only 0 +symmetry 0 # directories to read wave functions -suffix autotest -pseudo_dir ../../PP_ORB -read_file_dir ./ +suffix autotest +pseudo_dir ../../PP_ORB +read_file_dir ./ #out_wfc_pw 2 -init_chg wfc -init_wfc file +init_chg wfc +init_wfc file # plane wave basis and scf -basis_type pw -ecutwfc 20 -scf_thr 1e-6 -scf_nmax 2 -ks_solver dav -pw_diag_thr 0.00001 +basis_type pw +ecutwfc 20 +scf_thr 1e-6 +scf_nmax 2 +ks_solver dav +pw_diag_thr 0.00001 # charge mixing -mixing_type broyden -mixing_beta 0.4 -mixing_gg0 1.5 +mixing_type broyden +mixing_beta 0.4 +mixing_gg0 1.5 # smearing method -smearing_method gaussian -smearing_sigma 0.001 +smearing_method gaussian +smearing_sigma 0.001 diff --git a/tests/01_PW/057_PW_SO_IW/wfs12k1_pw.dat b/tests/01_PW/057_PW_SO_IW/wfk1s4_pw.dat similarity index 100% rename from tests/01_PW/057_PW_SO_IW/wfs12k1_pw.dat rename to tests/01_PW/057_PW_SO_IW/wfk1s4_pw.dat diff --git a/tests/01_PW/058_PW_RE_MB/INPUT b/tests/01_PW/058_PW_RE_MB/INPUT index a501fb7922..d87a89fad8 100644 --- a/tests/01_PW/058_PW_RE_MB/INPUT +++ b/tests/01_PW/058_PW_RE_MB/INPUT @@ -1,29 +1,30 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS # Directories -suffix autotest -pseudo_dir ../../PP_ORB +suffix autotest +pseudo_dir ../../PP_ORB +init_wfc random # Relaxation Method -calculation relax -relax_nmax 2 -cal_force 1 -force_thr_ev 0.01 -relax_method bfgs -relax_new 0 +calculation relax +relax_nmax 2 +cal_force 1 +force_thr_ev 0.01 +relax_method bfgs 2 +relax_new 0 # Self-Consistent Field -basis_type pw -nbands 8 -symmetry 1 -pw_seed 1 -ecutwfc 20 -scf_thr 1e-9 -scf_nmax 100 +basis_type pw +nbands 8 +symmetry 1 +pw_seed 1 +ecutwfc 20 +scf_thr 1e-9 +scf_nmax 100 # Smearing Method -smearing_method gauss -smearing_sigma 0.002 +smearing_method gauss +smearing_sigma 0.002 # Charge Mixing Method -mixing_type broyden -mixing_beta 0.5 +mixing_type broyden +mixing_beta 0.5 diff --git a/tests/01_PW/059_PW_RE_MB_traj/INPUT b/tests/01_PW/059_PW_RE_MB_traj/INPUT index 2d3058510e..bce3f364dd 100644 --- a/tests/01_PW/059_PW_RE_MB_traj/INPUT +++ b/tests/01_PW/059_PW_RE_MB_traj/INPUT @@ -1,32 +1,33 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation relax +suffix autotest +calculation relax +init_wfc random -nbands 8 -symmetry 1 -pseudo_dir ../../PP_ORB +nbands 8 +symmetry 1 +pseudo_dir ../../PP_ORB #Parameters (2.Iteration) -ecutwfc 20 -scf_thr 1e-9 -scf_nmax 100 +ecutwfc 20 +scf_thr 1e-9 +scf_nmax 100 #Parameters (3.Relaxation) -relax_nmax 2 -cal_force 1 -force_thr_ev 0.01 -relax_method bfgs_trad +relax_nmax 2 +cal_force 1 +force_thr_ev 0.01 +relax_method bfgs #Parameters (4.Basis) -basis_type pw +basis_type pw #Parameters (5.Smearing) -smearing_method gauss -smearing_sigma 0.002 +smearing_method gauss +smearing_sigma 0.002 #Parameters (6.Mixing) -mixing_type broyden -mixing_beta 0.5 +mixing_type broyden +mixing_beta 0.5 -relax_new 0 +relax_new 0 diff --git a/tests/01_PW/060_PW_RE_MG/INPUT b/tests/01_PW/060_PW_RE_MG/INPUT index af7cac0310..076f6861fa 100644 --- a/tests/01_PW/060_PW_RE_MG/INPUT +++ b/tests/01_PW/060_PW_RE_MG/INPUT @@ -1,32 +1,33 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation relax +suffix autotest +calculation relax +init_wfc random -nbands 8 -symmetry 1 -pseudo_dir ../../PP_ORB +nbands 8 +symmetry 1 +pseudo_dir ../../PP_ORB #Parameters (2.Iteration) -ecutwfc 20 -scf_thr 1e-9 -scf_nmax 100 -cal_force 1 +ecutwfc 20 +scf_thr 1e-9 +scf_nmax 100 +cal_force 1 #Parameters (3.Relaxation) -relax_nmax 2 -force_thr_ev 0.01 -relax_method cg +relax_nmax 2 +force_thr_ev 0.01 +relax_method cg #Parameters (4.Basis) -basis_type pw +basis_type pw #Parameters (5.Smearing) -smearing_method gauss -smearing_sigma 0.002 +smearing_method gauss +smearing_sigma 0.002 #Parameters (6.Mixing) -mixing_type broyden -mixing_beta 0.5 +mixing_type broyden +mixing_beta 0.5 -relax_new 0 +relax_new 0 diff --git a/tests/01_PW/061_PW_RE_NEW/INPUT b/tests/01_PW/061_PW_RE_NEW/INPUT index 2df46559a2..fdac7337ce 100644 --- a/tests/01_PW/061_PW_RE_NEW/INPUT +++ b/tests/01_PW/061_PW_RE_NEW/INPUT @@ -1,28 +1,28 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS # Relaxation -calculation cell-relax -relax_nmax 100 -cal_force 1 -cal_stress 1 -force_thr_ev 0.01 -stress_thr 1 -chg_extrap second-order #atomic; first-order; second-order; dm:coefficients of SIA -out_stru 1 -out_level ie +calculation cell-relax +relax_nmax 100 +cal_force 1 +cal_stress 1 +force_thr_ev 0.01 +stress_thr 1 +chg_extrap second-order #atomic; first-order; second-order; dm:coefficients of SIA +out_stru 1 +out_level ie # SCF -basis_type pw -ecutwfc 20 -ks_solver cg -pseudo_rcut 10.0 -pseudo_mesh 1 -smearing_method gaussian -smearing_sigma 0.01 -mixing_type broyden -mixing_beta 0.7 -scf_thr 1e-08 +basis_type pw +ecutwfc 20 +ks_solver cg +pseudo_rcut 10.0 +pseudo_mesh 1 +smearing_method gaussian +smearing_sigma 0.01 +mixing_type broyden +mixing_beta 0.7 +scf_thr 1e-08 # Directories -suffix autotest -pseudo_dir ../../../tests/PP_ORB +suffix autotest +pseudo_dir ../../../tests/PP_ORB diff --git a/tests/01_PW/062_PW_RE_PINT_RKS/INPUT b/tests/01_PW/062_PW_RE_PINT_RKS/INPUT index 6c12e8f444..bdb554efb5 100644 --- a/tests/01_PW/062_PW_RE_PINT_RKS/INPUT +++ b/tests/01_PW/062_PW_RE_PINT_RKS/INPUT @@ -1,25 +1,25 @@ -INPUT_PARAMETERS -calculation cell-relax -suffix autotest -relax_nmax 100 -force_thr_ev 0.01 -stress_thr 1 -out_level ie -pseudo_rcut 10.0 -pseudo_mesh 1 -ecutwfc 20 -basis_type pw -ks_solver cg -smearing_method gaussian -smearing_sigma 0.01 -mixing_type broyden -mixing_beta 0.7 -scf_thr 1e-08 -cal_force 1 -cal_stress 1 -out_stru 1 -chg_extrap second-order #atomic; first-order; second-order; dm:coefficients of SIA -pseudo_dir ../../../tests/PP_ORB -orbital_dir ../../../tests/PP_ORB -pw_seed 1 -init_wfc nao +INPUT_PARAMETERS +calculation cell-relax +suffix autotest +relax_nmax 100 +force_thr_ev 0.01 +stress_thr 1 +out_level ie +pseudo_rcut 10.0 +pseudo_mesh 1 +ecutwfc 20 +basis_type pw +ks_solver cg +smearing_method gaussian +smearing_sigma 0.01 +mixing_type broyden +mixing_beta 0.7 +scf_thr 1e-08 +cal_force 1 +cal_stress 1 +out_stru 1 +chg_extrap second-order #atomic; first-order; second-order; dm:coefficients of SIA +pseudo_dir ../../../tests/PP_ORB +orbital_dir ../../../tests/PP_ORB +pw_seed 1 +init_wfc nao diff --git a/tests/01_PW/063_PW_CR/INPUT b/tests/01_PW/063_PW_CR/INPUT index 60c12dfef3..35b2fee08c 100644 --- a/tests/01_PW/063_PW_CR/INPUT +++ b/tests/01_PW/063_PW_CR/INPUT @@ -1,26 +1,27 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (General) -suffix autotest -pseudo_dir ../../PP_ORB -calculation cell-relax -basis_type pw -nspin 2 -nbands 8 +suffix autotest +init_wfc random +pseudo_dir ../../PP_ORB +calculation cell-relax +basis_type pw +nspin 2 +nbands 8 #Parameters (Accuracy) -ecutwfc 20 -scf_nmax 20 -kpar 2 +ecutwfc 20 +scf_nmax 20 +kpar 2 -relax_method cg -relax_nmax 2 -relax_new 0 +relax_method cg +relax_nmax 2 +relax_new 0 -cal_stress 1 -stress_thr 0.1 -cal_force 1 -force_thr_ev 0.001 +cal_stress 1 +stress_thr 0.1 +cal_force 1 +force_thr_ev 0.001 -mixing_type broyden -mixing_beta 0.7 -mixing_gg0 1.5 +mixing_type broyden +mixing_beta 0.7 +mixing_gg0 1.5 diff --git a/tests/01_PW/064_PW_CR_fix_a/INPUT b/tests/01_PW/064_PW_CR_fix_a/INPUT index 03af025629..ec4e4cb5f6 100644 --- a/tests/01_PW/064_PW_CR_fix_a/INPUT +++ b/tests/01_PW/064_PW_CR_fix_a/INPUT @@ -1,28 +1,29 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (General) -suffix autotest -pseudo_dir ../../PP_ORB -pw_seed 1 - -nbands 8 -calculation cell-relax -symmetry 0 +suffix autotest +pseudo_dir ../../PP_ORB +init_wfc random +pw_seed 1 + +nbands 8 +calculation cell-relax +symmetry 0 #Parameters (Accuracy) -ecutwfc 20 -scf_nmax 20 +ecutwfc 20 +scf_nmax 20 -basis_type pw -relax_nmax 2 -relax_new 0 +basis_type pw +relax_nmax 2 +relax_new 0 -cal_stress 1 -stress_thr 1e-6 -cal_force 1 -force_thr_ev 1.0e-3 +cal_stress 1 +stress_thr 1e-6 +cal_force 1 +force_thr_ev 1.0e-3 -mixing_type broyden -mixing_beta 0.7 -mixing_gg0 1.5 +mixing_type broyden +mixing_beta 0.7 +mixing_gg0 1.5 -fixed_axes a +fixed_axes a diff --git a/tests/01_PW/065_PW_CR_fix_ab/INPUT b/tests/01_PW/065_PW_CR_fix_ab/INPUT index edb8c154eb..5cf655704c 100644 --- a/tests/01_PW/065_PW_CR_fix_ab/INPUT +++ b/tests/01_PW/065_PW_CR_fix_ab/INPUT @@ -1,28 +1,29 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (General) -suffix autotest -pseudo_dir ../../PP_ORB -pw_seed 1 - -nbands 8 -calculation cell-relax -symmetry 0 +suffix autotest +pseudo_dir ../../PP_ORB +pw_seed 1 +init_wfc random + +nbands 8 +calculation cell-relax +symmetry 0 #Parameters (Accuracy) -ecutwfc 20 -scf_nmax 20 +ecutwfc 20 +scf_nmax 20 -basis_type pw -relax_nmax 2 -relax_new 0 +basis_type pw +relax_nmax 2 +relax_new 0 -cal_stress 1 -stress_thr 1e-6 -cal_force 1 -force_thr_ev 1.0e-3 +cal_stress 1 +stress_thr 1e-6 +cal_force 1 +force_thr_ev 1.0e-3 -mixing_type broyden -mixing_beta 0.7 -mixing_gg0 1.5 +mixing_type broyden +mixing_beta 0.7 +mixing_gg0 1.5 -fixed_axes ab +fixed_axes ab diff --git a/tests/01_PW/066_PW_CR_fix_abc/INPUT b/tests/01_PW/066_PW_CR_fix_abc/INPUT index c8e05d9392..a916349b87 100644 --- a/tests/01_PW/066_PW_CR_fix_abc/INPUT +++ b/tests/01_PW/066_PW_CR_fix_abc/INPUT @@ -1,27 +1,28 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (General) -suffix autotest -pseudo_dir ../../PP_ORB -pw_seed 1 - -nbands 8 -calculation cell-relax +suffix autotest +pseudo_dir ../../PP_ORB +pw_seed 1 +init_wfc random + +nbands 8 +calculation cell-relax #Parameters (Accuracy) -ecutwfc 20 -scf_nmax 20 +ecutwfc 20 +scf_nmax 20 -basis_type pw -relax_nmax 2 -relax_new 0 +basis_type pw +relax_nmax 2 +relax_new 0 -cal_stress 1 -stress_thr 1e-6 -cal_force 1 -force_thr_ev 1.0e-3 +cal_stress 1 +stress_thr 1e-6 +cal_force 1 +force_thr_ev 1.0e-3 -mixing_type broyden -mixing_beta 0.7 -mixing_gg0 1.5 +mixing_type broyden +mixing_beta 0.7 +mixing_gg0 1.5 -fixed_axes abc +fixed_axes abc diff --git a/tests/01_PW/067_PW_CR_fix_ac/INPUT b/tests/01_PW/067_PW_CR_fix_ac/INPUT index 18c4d51efb..5b5e706c22 100644 --- a/tests/01_PW/067_PW_CR_fix_ac/INPUT +++ b/tests/01_PW/067_PW_CR_fix_ac/INPUT @@ -1,28 +1,29 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (General) -suffix autotest -pseudo_dir ../../PP_ORB -pw_seed 1 - -nbands 8 -calculation cell-relax -symmetry 0 +suffix autotest +pseudo_dir ../../PP_ORB +pw_seed 1 +init_wfc random + +nbands 8 +calculation cell-relax +symmetry 0 #Parameters (Accuracy) -ecutwfc 20 -scf_nmax 20 +ecutwfc 20 +scf_nmax 20 -basis_type pw -relax_nmax 2 -relax_new 0 +basis_type pw +relax_nmax 2 +relax_new 0 -cal_stress 1 -stress_thr 1e-6 -cal_force 1 -force_thr_ev 1.0e-3 +cal_stress 1 +stress_thr 1e-6 +cal_force 1 +force_thr_ev 1.0e-3 -mixing_type broyden -mixing_beta 0.7 -mixing_gg0 1.5 +mixing_type broyden +mixing_beta 0.7 +mixing_gg0 1.5 -fixed_axes ac +fixed_axes ac diff --git a/tests/01_PW/068_PW_CR_fix_b/INPUT b/tests/01_PW/068_PW_CR_fix_b/INPUT index f1022b2611..1d6b08228a 100644 --- a/tests/01_PW/068_PW_CR_fix_b/INPUT +++ b/tests/01_PW/068_PW_CR_fix_b/INPUT @@ -1,28 +1,29 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (General) -suffix autotest -pseudo_dir ../../PP_ORB -pw_seed 1 - -nbands 8 -calculation cell-relax -symmetry 0 +suffix autotest +pseudo_dir ../../PP_ORB +pw_seed 1 +init_wfc random + +nbands 8 +calculation cell-relax +symmetry 0 #Parameters (Accuracy) -ecutwfc 20 -scf_nmax 20 +ecutwfc 20 +scf_nmax 20 -basis_type pw -relax_nmax 2 -relax_new 0 +basis_type pw +relax_nmax 2 +relax_new 0 -cal_stress 1 -stress_thr 1e-6 -cal_force 1 -force_thr_ev 1.0e-3 +cal_stress 1 +stress_thr 1e-6 +cal_force 1 +force_thr_ev 1.0e-3 -mixing_type broyden -mixing_beta 0.7 -mixing_gg0 1.5 +mixing_type broyden +mixing_beta 0.7 +mixing_gg0 1.5 -fixed_axes b +fixed_axes b diff --git a/tests/01_PW/069_PW_CR_fix_bc/INPUT b/tests/01_PW/069_PW_CR_fix_bc/INPUT index 48cef8e62d..720953a0b7 100644 --- a/tests/01_PW/069_PW_CR_fix_bc/INPUT +++ b/tests/01_PW/069_PW_CR_fix_bc/INPUT @@ -1,28 +1,29 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (General) -suffix autotest -pseudo_dir ../../PP_ORB -pw_seed 1 - -nbands 8 -calculation cell-relax -symmetry 0 +suffix autotest +pseudo_dir ../../PP_ORB +pw_seed 1 +init_wfc random + +nbands 8 +calculation cell-relax +symmetry 0 #Parameters (Accuracy) -ecutwfc 20 -scf_nmax 20 +ecutwfc 20 +scf_nmax 20 -basis_type pw -relax_nmax 2 -relax_new 0 +basis_type pw +relax_nmax 2 +relax_new 0 -cal_stress 1 -stress_thr 1e-6 -cal_force 1 -force_thr_ev 1.0e-3 +cal_stress 1 +stress_thr 1e-6 +cal_force 1 +force_thr_ev 1.0e-3 -mixing_type broyden -mixing_beta 0.7 -mixing_gg0 1.5 +mixing_type broyden +mixing_beta 0.7 +mixing_gg0 1.5 -fixed_axes bc +fixed_axes bc diff --git a/tests/01_PW/070_PW_CR_fix_c/INPUT b/tests/01_PW/070_PW_CR_fix_c/INPUT index 5626335f68..18aa9e3fa4 100644 --- a/tests/01_PW/070_PW_CR_fix_c/INPUT +++ b/tests/01_PW/070_PW_CR_fix_c/INPUT @@ -1,28 +1,29 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (General) -suffix autotest -pseudo_dir ../../PP_ORB -pw_seed 1 - -nbands 8 -calculation cell-relax -symmetry 0 +suffix autotest +pseudo_dir ../../PP_ORB +pw_seed 1 +init_wfc random + +nbands 8 +calculation cell-relax +symmetry 0 #Parameters (Accuracy) -ecutwfc 20 -scf_nmax 20 +ecutwfc 20 +scf_nmax 20 -basis_type pw -relax_nmax 2 -relax_new 0 +basis_type pw +relax_nmax 2 +relax_new 0 -cal_stress 1 -stress_thr 1e-6 -cal_force 1 -force_thr_ev 1.0e-3 +cal_stress 1 +stress_thr 1e-6 +cal_force 1 +force_thr_ev 1.0e-3 -mixing_type broyden -mixing_beta 0.7 -mixing_gg0 1.5 +mixing_type broyden +mixing_beta 0.7 +mixing_gg0 1.5 -fixed_axes c +fixed_axes c diff --git a/tests/01_PW/071_PW_CR_move/INPUT b/tests/01_PW/071_PW_CR_move/INPUT index dd42ff24a0..d58b9aebec 100644 --- a/tests/01_PW/071_PW_CR_move/INPUT +++ b/tests/01_PW/071_PW_CR_move/INPUT @@ -1,24 +1,25 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (General) -suffix autotest -pseudo_dir ../../PP_ORB - -nbands 8 -calculation cell-relax +suffix autotest +pseudo_dir ../../PP_ORB +init_wfc random + +nbands 8 +calculation cell-relax #Parameters (Accuracy) -ecutwfc 20 -scf_nmax 20 +ecutwfc 20 +scf_nmax 20 -basis_type pw -relax_nmax 2 -relax_new 0 +basis_type pw +relax_nmax 2 +relax_new 0 -cal_stress 1 -stress_thr 1e-6 -cal_force 1 -force_thr_ev 1.0e-1 +cal_stress 1 +stress_thr 1e-6 +cal_force 1 +force_thr_ev 1.0e-1 #ks_solver scalapack_gvx -mixing_type broyden -mixing_beta 0.7 -mixing_gg0 1.5 +mixing_type broyden +mixing_beta 0.7 +mixing_gg0 1.5 diff --git a/tests/01_PW/072_PW_ELF/INPUT b/tests/01_PW/072_PW_ELF/INPUT deleted file mode 100644 index cdf99b9343..0000000000 --- a/tests/01_PW/072_PW_ELF/INPUT +++ /dev/null @@ -1,27 +0,0 @@ -INPUT_PARAMETERS -#Parameters (1.General) -suffix autotest -calculation scf - -nbands 6 -symmetry 1 -pseudo_dir ../../PP_ORB - -#Parameters (2.Iteration) -ecutwfc 5 -scf_thr 1e-9 -scf_nmax 100 - - -#Parameters (3.Basis) -basis_type pw - -#Parameters (4.Smearing) -smearing_method gauss -smearing_sigma 0.002 - -#Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.7 - -out_elf 1 diff --git a/tests/01_PW/072_PW_ELF/refELF.cube b/tests/01_PW/072_PW_ELF/refELF.cube deleted file mode 100644 index 97b932ac15..0000000000 --- a/tests/01_PW/072_PW_ELF/refELF.cube +++ /dev/null @@ -1,296 +0,0 @@ -STEP: 0 Cubefile created from ABACUS. Inner loop is z, followed by y and x -1 (nspin) -2 0.0 0.0 0.0 -12 0.000000 0.425000 0.425000 -12 0.425000 0.000000 0.425000 -12 0.425000 0.425000 0.000000 - 14 4.000000 0.000000 0.000000 0.000000 - 14 4.000000 2.550000 2.550000 2.550000 - 1.318e-04 1.272e-02 4.091e-01 8.466e-01 8.632e-01 5.190e-01 - 2.285e-01 5.190e-01 8.632e-01 8.466e-01 4.091e-01 1.272e-02 - 1.272e-02 5.968e-01 9.596e-01 9.845e-01 9.126e-01 4.434e-01 - 4.434e-01 9.126e-01 9.845e-01 9.596e-01 5.968e-01 1.272e-02 - 4.091e-01 9.596e-01 9.949e-01 9.845e-01 7.287e-01 2.801e-01 - 7.287e-01 9.845e-01 9.949e-01 9.596e-01 4.091e-01 5.200e-02 - 8.466e-01 9.845e-01 9.845e-01 8.466e-01 1.959e-01 1.959e-01 - 8.466e-01 9.845e-01 9.845e-01 8.466e-01 1.959e-01 1.959e-01 - 8.632e-01 9.126e-01 7.287e-01 1.959e-01 5.267e-02 1.959e-01 - 7.287e-01 9.126e-01 8.632e-01 3.716e-01 1.041e-01 3.716e-01 - 5.190e-01 4.434e-01 2.801e-01 1.959e-01 1.959e-01 2.801e-01 - 4.434e-01 5.190e-01 3.029e-01 6.827e-02 6.827e-02 3.029e-01 - 2.285e-01 4.434e-01 7.287e-01 8.466e-01 7.287e-01 4.434e-01 - 2.285e-01 1.268e-01 5.614e-02 3.080e-02 5.614e-02 1.268e-01 - 5.190e-01 9.126e-01 9.845e-01 9.845e-01 9.126e-01 5.190e-01 - 1.268e-01 5.268e-02 6.807e-02 6.807e-02 5.268e-02 1.268e-01 - 8.632e-01 9.845e-01 9.949e-01 9.845e-01 8.632e-01 3.029e-01 - 5.614e-02 6.807e-02 4.047e-01 6.807e-02 5.614e-02 3.029e-01 - 8.466e-01 9.596e-01 9.596e-01 8.466e-01 3.716e-01 6.827e-02 - 3.080e-02 6.807e-02 6.807e-02 3.080e-02 6.827e-02 3.716e-01 - 4.091e-01 5.968e-01 4.091e-01 1.959e-01 1.041e-01 6.827e-02 - 5.614e-02 5.268e-02 5.614e-02 6.827e-02 1.041e-01 1.959e-01 - 1.272e-02 1.272e-02 5.200e-02 1.959e-01 3.716e-01 3.029e-01 - 1.268e-01 1.268e-01 3.029e-01 3.716e-01 1.959e-01 5.200e-02 - 1.272e-02 5.968e-01 9.596e-01 9.845e-01 9.126e-01 4.434e-01 - 4.434e-01 9.126e-01 9.845e-01 9.596e-01 5.968e-01 1.272e-02 - 5.968e-01 9.882e-01 9.994e-01 9.949e-01 8.189e-01 3.674e-01 - 8.189e-01 9.949e-01 9.994e-01 9.882e-01 5.968e-01 5.773e-02 - 9.596e-01 9.994e-01 9.994e-01 9.596e-01 3.573e-01 3.573e-01 - 9.596e-01 9.994e-01 9.994e-01 9.596e-01 3.573e-01 3.573e-01 - 9.845e-01 9.949e-01 9.596e-01 4.091e-01 5.200e-02 4.091e-01 - 9.596e-01 9.949e-01 9.845e-01 7.287e-01 2.801e-01 7.287e-01 - 9.126e-01 8.189e-01 3.573e-01 5.200e-02 5.200e-02 3.573e-01 - 8.189e-01 9.126e-01 7.598e-01 2.591e-01 2.591e-01 7.598e-01 - 4.434e-01 3.674e-01 3.573e-01 4.091e-01 3.573e-01 3.674e-01 - 4.434e-01 4.220e-01 2.017e-01 8.867e-02 2.017e-01 4.220e-01 - 4.434e-01 8.189e-01 9.596e-01 9.596e-01 8.189e-01 4.434e-01 - 1.817e-01 1.035e-01 7.396e-02 7.396e-02 1.035e-01 1.817e-01 - 9.126e-01 9.949e-01 9.994e-01 9.949e-01 9.126e-01 4.220e-01 - 1.035e-01 1.027e-01 4.124e-01 1.027e-01 1.035e-01 4.220e-01 - 9.845e-01 9.994e-01 9.994e-01 9.845e-01 7.598e-01 2.017e-01 - 7.396e-02 4.124e-01 4.124e-01 7.396e-02 2.017e-01 7.598e-01 - 9.596e-01 9.882e-01 9.596e-01 7.287e-01 2.591e-01 8.867e-02 - 7.396e-02 1.027e-01 7.396e-02 8.867e-02 2.591e-01 7.287e-01 - 5.968e-01 5.968e-01 3.573e-01 2.801e-01 2.591e-01 2.017e-01 - 1.035e-01 1.035e-01 2.017e-01 2.591e-01 2.801e-01 3.573e-01 - 1.272e-02 5.773e-02 3.573e-01 7.287e-01 7.598e-01 4.220e-01 - 1.817e-01 4.220e-01 7.598e-01 7.287e-01 3.573e-01 5.773e-02 - 4.091e-01 9.596e-01 9.949e-01 9.845e-01 7.287e-01 2.801e-01 - 7.287e-01 9.845e-01 9.949e-01 9.596e-01 4.091e-01 5.200e-02 - 9.596e-01 9.994e-01 9.994e-01 9.596e-01 3.573e-01 3.573e-01 - 9.596e-01 9.994e-01 9.994e-01 9.596e-01 3.573e-01 3.573e-01 - 9.949e-01 9.994e-01 9.882e-01 5.968e-01 5.773e-02 5.968e-01 - 9.882e-01 9.994e-01 9.949e-01 8.189e-01 3.674e-01 8.189e-01 - 9.845e-01 9.596e-01 5.968e-01 1.272e-02 1.272e-02 5.968e-01 - 9.596e-01 9.845e-01 9.126e-01 4.434e-01 4.434e-01 9.126e-01 - 7.287e-01 3.573e-01 5.773e-02 1.272e-02 5.773e-02 3.573e-01 - 7.287e-01 7.598e-01 4.220e-01 1.817e-01 4.220e-01 7.598e-01 - 2.801e-01 3.573e-01 5.968e-01 5.968e-01 3.573e-01 2.801e-01 - 2.591e-01 2.017e-01 1.035e-01 1.035e-01 2.017e-01 2.591e-01 - 7.287e-01 9.596e-01 9.882e-01 9.596e-01 7.287e-01 2.591e-01 - 8.867e-02 7.396e-02 1.027e-01 7.396e-02 8.867e-02 2.591e-01 - 9.845e-01 9.994e-01 9.994e-01 9.845e-01 7.598e-01 2.017e-01 - 7.396e-02 4.124e-01 4.124e-01 7.396e-02 2.017e-01 7.598e-01 - 9.949e-01 9.994e-01 9.949e-01 9.126e-01 4.220e-01 1.035e-01 - 1.027e-01 4.124e-01 1.027e-01 1.035e-01 4.220e-01 9.126e-01 - 9.596e-01 9.596e-01 8.189e-01 4.434e-01 1.817e-01 1.035e-01 - 7.396e-02 7.396e-02 1.035e-01 1.817e-01 4.434e-01 8.189e-01 - 4.091e-01 3.573e-01 3.674e-01 4.434e-01 4.220e-01 2.017e-01 - 8.867e-02 2.017e-01 4.220e-01 4.434e-01 3.674e-01 3.573e-01 - 5.200e-02 3.573e-01 8.189e-01 9.126e-01 7.598e-01 2.591e-01 - 2.591e-01 7.598e-01 9.126e-01 8.189e-01 3.573e-01 5.200e-02 - 8.466e-01 9.845e-01 9.845e-01 8.466e-01 1.959e-01 1.959e-01 - 8.466e-01 9.845e-01 9.845e-01 8.466e-01 1.959e-01 1.959e-01 - 9.845e-01 9.949e-01 9.596e-01 4.091e-01 5.200e-02 4.091e-01 - 9.596e-01 9.949e-01 9.845e-01 7.287e-01 2.801e-01 7.287e-01 - 9.845e-01 9.596e-01 5.968e-01 1.272e-02 1.272e-02 5.968e-01 - 9.596e-01 9.845e-01 9.126e-01 4.434e-01 4.434e-01 9.126e-01 - 8.466e-01 4.091e-01 1.272e-02 1.318e-04 1.272e-02 4.091e-01 - 8.466e-01 8.632e-01 5.190e-01 2.285e-01 5.190e-01 8.632e-01 - 1.959e-01 5.200e-02 1.272e-02 1.272e-02 5.200e-02 1.959e-01 - 3.716e-01 3.029e-01 1.268e-01 1.268e-01 3.029e-01 3.716e-01 - 1.959e-01 4.091e-01 5.968e-01 4.091e-01 1.959e-01 1.041e-01 - 6.827e-02 5.614e-02 5.268e-02 5.614e-02 6.827e-02 1.041e-01 - 8.466e-01 9.596e-01 9.596e-01 8.466e-01 3.716e-01 6.827e-02 - 3.080e-02 6.807e-02 6.807e-02 3.080e-02 6.827e-02 3.716e-01 - 9.845e-01 9.949e-01 9.845e-01 8.632e-01 3.029e-01 5.614e-02 - 6.807e-02 4.047e-01 6.807e-02 5.614e-02 3.029e-01 8.632e-01 - 9.845e-01 9.845e-01 9.126e-01 5.190e-01 1.268e-01 5.268e-02 - 6.807e-02 6.807e-02 5.268e-02 1.268e-01 5.190e-01 9.126e-01 - 8.466e-01 7.287e-01 4.434e-01 2.285e-01 1.268e-01 5.614e-02 - 3.080e-02 5.614e-02 1.268e-01 2.285e-01 4.434e-01 7.287e-01 - 1.959e-01 2.801e-01 4.434e-01 5.190e-01 3.029e-01 6.827e-02 - 6.827e-02 3.029e-01 5.190e-01 4.434e-01 2.801e-01 1.959e-01 - 1.959e-01 7.287e-01 9.126e-01 8.632e-01 3.716e-01 1.041e-01 - 3.716e-01 8.632e-01 9.126e-01 7.287e-01 1.959e-01 5.267e-02 - 8.632e-01 9.126e-01 7.287e-01 1.959e-01 5.267e-02 1.959e-01 - 7.287e-01 9.126e-01 8.632e-01 3.716e-01 1.041e-01 3.716e-01 - 9.126e-01 8.189e-01 3.573e-01 5.200e-02 5.200e-02 3.573e-01 - 8.189e-01 9.126e-01 7.598e-01 2.591e-01 2.591e-01 7.598e-01 - 7.287e-01 3.573e-01 5.773e-02 1.272e-02 5.773e-02 3.573e-01 - 7.287e-01 7.598e-01 4.220e-01 1.817e-01 4.220e-01 7.598e-01 - 1.959e-01 5.200e-02 1.272e-02 1.272e-02 5.200e-02 1.959e-01 - 3.716e-01 3.029e-01 1.268e-01 1.268e-01 3.029e-01 3.716e-01 - 5.267e-02 5.200e-02 5.773e-02 5.200e-02 5.267e-02 6.177e-02 - 6.176e-02 5.100e-02 4.402e-02 5.100e-02 6.176e-02 6.177e-02 - 1.959e-01 3.573e-01 3.573e-01 1.959e-01 6.177e-02 1.839e-02 - 1.326e-02 2.493e-02 2.493e-02 1.326e-02 1.839e-02 6.177e-02 - 7.287e-01 8.189e-01 7.287e-01 3.716e-01 6.176e-02 1.326e-02 - 2.005e-02 5.983e-02 2.005e-02 1.326e-02 6.176e-02 3.716e-01 - 9.126e-01 9.126e-01 7.598e-01 3.029e-01 5.100e-02 2.493e-02 - 5.983e-02 5.983e-02 2.493e-02 5.100e-02 3.029e-01 7.598e-01 - 8.632e-01 7.598e-01 4.220e-01 1.268e-01 4.402e-02 2.493e-02 - 2.005e-02 2.493e-02 4.402e-02 1.268e-01 4.220e-01 7.598e-01 - 3.716e-01 2.591e-01 1.817e-01 1.268e-01 5.100e-02 1.326e-02 - 1.326e-02 5.100e-02 1.268e-01 1.817e-01 2.591e-01 3.716e-01 - 1.041e-01 2.591e-01 4.220e-01 3.029e-01 6.176e-02 1.839e-02 - 6.176e-02 3.029e-01 4.220e-01 2.591e-01 1.041e-01 6.177e-02 - 3.716e-01 7.598e-01 7.598e-01 3.716e-01 6.177e-02 6.177e-02 - 3.716e-01 7.598e-01 7.598e-01 3.716e-01 6.177e-02 6.177e-02 - 5.190e-01 4.434e-01 2.801e-01 1.959e-01 1.959e-01 2.801e-01 - 4.434e-01 5.190e-01 3.029e-01 6.827e-02 6.827e-02 3.029e-01 - 4.434e-01 3.674e-01 3.573e-01 4.091e-01 3.573e-01 3.674e-01 - 4.434e-01 4.220e-01 2.017e-01 8.867e-02 2.017e-01 4.220e-01 - 2.801e-01 3.573e-01 5.968e-01 5.968e-01 3.573e-01 2.801e-01 - 2.591e-01 2.017e-01 1.035e-01 1.035e-01 2.017e-01 2.591e-01 - 1.959e-01 4.091e-01 5.968e-01 4.091e-01 1.959e-01 1.041e-01 - 6.827e-02 5.614e-02 5.268e-02 5.614e-02 6.827e-02 1.041e-01 - 1.959e-01 3.573e-01 3.573e-01 1.959e-01 6.177e-02 1.839e-02 - 1.326e-02 2.493e-02 2.493e-02 1.326e-02 1.839e-02 6.177e-02 - 2.801e-01 3.674e-01 2.801e-01 1.041e-01 1.839e-02 5.542e-03 - 1.134e-02 3.222e-02 1.134e-02 5.542e-03 1.839e-02 1.041e-01 - 4.434e-01 4.434e-01 2.591e-01 6.827e-02 1.326e-02 1.134e-02 - 4.721e-02 4.721e-02 1.134e-02 1.326e-02 6.827e-02 2.591e-01 - 5.190e-01 4.220e-01 2.017e-01 5.614e-02 2.493e-02 3.222e-02 - 4.721e-02 3.222e-02 2.493e-02 5.614e-02 2.017e-01 4.220e-01 - 3.029e-01 2.017e-01 1.035e-01 5.268e-02 2.493e-02 1.134e-02 - 1.134e-02 2.493e-02 5.268e-02 1.035e-01 2.017e-01 3.029e-01 - 6.827e-02 8.867e-02 1.035e-01 5.614e-02 1.326e-02 5.542e-03 - 1.326e-02 5.614e-02 1.035e-01 8.867e-02 6.827e-02 6.176e-02 - 6.827e-02 2.017e-01 2.017e-01 6.827e-02 1.839e-02 1.839e-02 - 6.827e-02 2.017e-01 2.017e-01 6.827e-02 1.839e-02 1.839e-02 - 3.029e-01 4.220e-01 2.591e-01 1.041e-01 6.177e-02 1.041e-01 - 2.591e-01 4.220e-01 3.029e-01 6.176e-02 1.839e-02 6.176e-02 - 2.285e-01 4.434e-01 7.287e-01 8.466e-01 7.287e-01 4.434e-01 - 2.285e-01 1.268e-01 5.614e-02 3.080e-02 5.614e-02 1.268e-01 - 4.434e-01 8.189e-01 9.596e-01 9.596e-01 8.189e-01 4.434e-01 - 1.817e-01 1.035e-01 7.396e-02 7.396e-02 1.035e-01 1.817e-01 - 7.287e-01 9.596e-01 9.882e-01 9.596e-01 7.287e-01 2.591e-01 - 8.867e-02 7.396e-02 1.027e-01 7.396e-02 8.867e-02 2.591e-01 - 8.466e-01 9.596e-01 9.596e-01 8.466e-01 3.716e-01 6.827e-02 - 3.080e-02 6.807e-02 6.807e-02 3.080e-02 6.827e-02 3.716e-01 - 7.287e-01 8.189e-01 7.287e-01 3.716e-01 6.176e-02 1.326e-02 - 2.005e-02 5.983e-02 2.005e-02 1.326e-02 6.176e-02 3.716e-01 - 4.434e-01 4.434e-01 2.591e-01 6.827e-02 1.326e-02 1.134e-02 - 4.721e-02 4.721e-02 1.134e-02 1.326e-02 6.827e-02 2.591e-01 - 2.285e-01 1.817e-01 8.867e-02 3.080e-02 2.005e-02 4.721e-02 - 9.658e-02 4.721e-02 2.005e-02 3.080e-02 8.867e-02 1.817e-01 - 1.268e-01 1.035e-01 7.396e-02 6.807e-02 5.983e-02 4.721e-02 - 4.721e-02 5.983e-02 6.807e-02 7.396e-02 1.035e-01 1.268e-01 - 5.614e-02 7.396e-02 1.027e-01 6.807e-02 2.005e-02 1.134e-02 - 2.005e-02 6.807e-02 1.027e-01 7.396e-02 5.614e-02 5.100e-02 - 3.080e-02 7.396e-02 7.396e-02 3.080e-02 1.326e-02 1.326e-02 - 3.080e-02 7.396e-02 7.396e-02 3.080e-02 1.326e-02 1.326e-02 - 5.614e-02 1.035e-01 8.867e-02 6.827e-02 6.176e-02 6.827e-02 - 8.867e-02 1.035e-01 5.614e-02 1.326e-02 5.542e-03 1.326e-02 - 1.268e-01 1.817e-01 2.591e-01 3.716e-01 3.716e-01 2.591e-01 - 1.817e-01 1.268e-01 5.100e-02 1.326e-02 1.326e-02 5.100e-02 - 5.190e-01 9.126e-01 9.845e-01 9.845e-01 9.126e-01 5.190e-01 - 1.268e-01 5.268e-02 6.807e-02 6.807e-02 5.268e-02 1.268e-01 - 9.126e-01 9.949e-01 9.994e-01 9.949e-01 9.126e-01 4.220e-01 - 1.035e-01 1.027e-01 4.124e-01 1.027e-01 1.035e-01 4.220e-01 - 9.845e-01 9.994e-01 9.994e-01 9.845e-01 7.598e-01 2.017e-01 - 7.396e-02 4.124e-01 4.124e-01 7.396e-02 2.017e-01 7.598e-01 - 9.845e-01 9.949e-01 9.845e-01 8.632e-01 3.029e-01 5.614e-02 - 6.807e-02 4.047e-01 6.807e-02 5.614e-02 3.029e-01 8.632e-01 - 9.126e-01 9.126e-01 7.598e-01 3.029e-01 5.100e-02 2.493e-02 - 5.983e-02 5.983e-02 2.493e-02 5.100e-02 3.029e-01 7.598e-01 - 5.190e-01 4.220e-01 2.017e-01 5.614e-02 2.493e-02 3.222e-02 - 4.721e-02 3.222e-02 2.493e-02 5.614e-02 2.017e-01 4.220e-01 - 1.268e-01 1.035e-01 7.396e-02 6.807e-02 5.983e-02 4.721e-02 - 4.721e-02 5.983e-02 6.807e-02 7.396e-02 1.035e-01 1.268e-01 - 5.268e-02 1.027e-01 4.124e-01 4.047e-01 5.983e-02 3.222e-02 - 5.983e-02 4.047e-01 4.124e-01 1.027e-01 5.268e-02 4.402e-02 - 6.807e-02 4.124e-01 4.124e-01 6.807e-02 2.493e-02 2.493e-02 - 6.807e-02 4.124e-01 4.124e-01 6.807e-02 2.493e-02 2.493e-02 - 6.807e-02 1.027e-01 7.396e-02 5.614e-02 5.100e-02 5.614e-02 - 7.396e-02 1.027e-01 6.807e-02 2.005e-02 1.134e-02 2.005e-02 - 5.268e-02 1.035e-01 2.017e-01 3.029e-01 3.029e-01 2.017e-01 - 1.035e-01 5.268e-02 2.493e-02 1.134e-02 1.134e-02 2.493e-02 - 1.268e-01 4.220e-01 7.598e-01 8.632e-01 7.598e-01 4.220e-01 - 1.268e-01 4.402e-02 2.493e-02 2.005e-02 2.493e-02 4.402e-02 - 8.632e-01 9.845e-01 9.949e-01 9.845e-01 8.632e-01 3.029e-01 - 5.614e-02 6.807e-02 4.047e-01 6.807e-02 5.614e-02 3.029e-01 - 9.845e-01 9.994e-01 9.994e-01 9.845e-01 7.598e-01 2.017e-01 - 7.396e-02 4.124e-01 4.124e-01 7.396e-02 2.017e-01 7.598e-01 - 9.949e-01 9.994e-01 9.949e-01 9.126e-01 4.220e-01 1.035e-01 - 1.027e-01 4.124e-01 1.027e-01 1.035e-01 4.220e-01 9.126e-01 - 9.845e-01 9.845e-01 9.126e-01 5.190e-01 1.268e-01 5.268e-02 - 6.807e-02 6.807e-02 5.268e-02 1.268e-01 5.190e-01 9.126e-01 - 8.632e-01 7.598e-01 4.220e-01 1.268e-01 4.402e-02 2.493e-02 - 2.005e-02 2.493e-02 4.402e-02 1.268e-01 4.220e-01 7.598e-01 - 3.029e-01 2.017e-01 1.035e-01 5.268e-02 2.493e-02 1.134e-02 - 1.134e-02 2.493e-02 5.268e-02 1.035e-01 2.017e-01 3.029e-01 - 5.614e-02 7.396e-02 1.027e-01 6.807e-02 2.005e-02 1.134e-02 - 2.005e-02 6.807e-02 1.027e-01 7.396e-02 5.614e-02 5.100e-02 - 6.807e-02 4.124e-01 4.124e-01 6.807e-02 2.493e-02 2.493e-02 - 6.807e-02 4.124e-01 4.124e-01 6.807e-02 2.493e-02 2.493e-02 - 4.047e-01 4.124e-01 1.027e-01 5.268e-02 4.402e-02 5.268e-02 - 1.027e-01 4.124e-01 4.047e-01 5.983e-02 3.222e-02 5.983e-02 - 6.807e-02 7.396e-02 1.035e-01 1.268e-01 1.268e-01 1.035e-01 - 7.396e-02 6.807e-02 5.983e-02 4.721e-02 4.721e-02 5.983e-02 - 5.614e-02 2.017e-01 4.220e-01 5.190e-01 4.220e-01 2.017e-01 - 5.614e-02 2.493e-02 3.222e-02 4.721e-02 3.222e-02 2.493e-02 - 3.029e-01 7.598e-01 9.126e-01 9.126e-01 7.598e-01 3.029e-01 - 5.100e-02 2.493e-02 5.983e-02 5.983e-02 2.493e-02 5.100e-02 - 8.466e-01 9.596e-01 9.596e-01 8.466e-01 3.716e-01 6.827e-02 - 3.080e-02 6.807e-02 6.807e-02 3.080e-02 6.827e-02 3.716e-01 - 9.596e-01 9.882e-01 9.596e-01 7.287e-01 2.591e-01 8.867e-02 - 7.396e-02 1.027e-01 7.396e-02 8.867e-02 2.591e-01 7.287e-01 - 9.596e-01 9.596e-01 8.189e-01 4.434e-01 1.817e-01 1.035e-01 - 7.396e-02 7.396e-02 1.035e-01 1.817e-01 4.434e-01 8.189e-01 - 8.466e-01 7.287e-01 4.434e-01 2.285e-01 1.268e-01 5.614e-02 - 3.080e-02 5.614e-02 1.268e-01 2.285e-01 4.434e-01 7.287e-01 - 3.716e-01 2.591e-01 1.817e-01 1.268e-01 5.100e-02 1.326e-02 - 1.326e-02 5.100e-02 1.268e-01 1.817e-01 2.591e-01 3.716e-01 - 6.827e-02 8.867e-02 1.035e-01 5.614e-02 1.326e-02 5.542e-03 - 1.326e-02 5.614e-02 1.035e-01 8.867e-02 6.827e-02 6.176e-02 - 3.080e-02 7.396e-02 7.396e-02 3.080e-02 1.326e-02 1.326e-02 - 3.080e-02 7.396e-02 7.396e-02 3.080e-02 1.326e-02 1.326e-02 - 6.807e-02 1.027e-01 7.396e-02 5.614e-02 5.100e-02 5.614e-02 - 7.396e-02 1.027e-01 6.807e-02 2.005e-02 1.134e-02 2.005e-02 - 6.807e-02 7.396e-02 1.035e-01 1.268e-01 1.268e-01 1.035e-01 - 7.396e-02 6.807e-02 5.983e-02 4.721e-02 4.721e-02 5.983e-02 - 3.080e-02 8.867e-02 1.817e-01 2.285e-01 1.817e-01 8.867e-02 - 3.080e-02 2.005e-02 4.721e-02 9.658e-02 4.721e-02 2.005e-02 - 6.827e-02 2.591e-01 4.434e-01 4.434e-01 2.591e-01 6.827e-02 - 1.326e-02 1.134e-02 4.721e-02 4.721e-02 1.134e-02 1.326e-02 - 3.716e-01 7.287e-01 8.189e-01 7.287e-01 3.716e-01 6.176e-02 - 1.326e-02 2.005e-02 5.983e-02 2.005e-02 1.326e-02 6.176e-02 - 4.091e-01 5.968e-01 4.091e-01 1.959e-01 1.041e-01 6.827e-02 - 5.614e-02 5.268e-02 5.614e-02 6.827e-02 1.041e-01 1.959e-01 - 5.968e-01 5.968e-01 3.573e-01 2.801e-01 2.591e-01 2.017e-01 - 1.035e-01 1.035e-01 2.017e-01 2.591e-01 2.801e-01 3.573e-01 - 4.091e-01 3.573e-01 3.674e-01 4.434e-01 4.220e-01 2.017e-01 - 8.867e-02 2.017e-01 4.220e-01 4.434e-01 3.674e-01 3.573e-01 - 1.959e-01 2.801e-01 4.434e-01 5.190e-01 3.029e-01 6.827e-02 - 6.827e-02 3.029e-01 5.190e-01 4.434e-01 2.801e-01 1.959e-01 - 1.041e-01 2.591e-01 4.220e-01 3.029e-01 6.176e-02 1.839e-02 - 6.176e-02 3.029e-01 4.220e-01 2.591e-01 1.041e-01 6.177e-02 - 6.827e-02 2.017e-01 2.017e-01 6.827e-02 1.839e-02 1.839e-02 - 6.827e-02 2.017e-01 2.017e-01 6.827e-02 1.839e-02 1.839e-02 - 5.614e-02 1.035e-01 8.867e-02 6.827e-02 6.176e-02 6.827e-02 - 8.867e-02 1.035e-01 5.614e-02 1.326e-02 5.542e-03 1.326e-02 - 5.268e-02 1.035e-01 2.017e-01 3.029e-01 3.029e-01 2.017e-01 - 1.035e-01 5.268e-02 2.493e-02 1.134e-02 1.134e-02 2.493e-02 - 5.614e-02 2.017e-01 4.220e-01 5.190e-01 4.220e-01 2.017e-01 - 5.614e-02 2.493e-02 3.222e-02 4.721e-02 3.222e-02 2.493e-02 - 6.827e-02 2.591e-01 4.434e-01 4.434e-01 2.591e-01 6.827e-02 - 1.326e-02 1.134e-02 4.721e-02 4.721e-02 1.134e-02 1.326e-02 - 1.041e-01 2.801e-01 3.674e-01 2.801e-01 1.041e-01 1.839e-02 - 5.542e-03 1.134e-02 3.222e-02 1.134e-02 5.542e-03 1.839e-02 - 1.959e-01 3.573e-01 3.573e-01 1.959e-01 6.177e-02 1.839e-02 - 1.326e-02 2.493e-02 2.493e-02 1.326e-02 1.839e-02 6.177e-02 - 1.272e-02 1.272e-02 5.200e-02 1.959e-01 3.716e-01 3.029e-01 - 1.268e-01 1.268e-01 3.029e-01 3.716e-01 1.959e-01 5.200e-02 - 1.272e-02 5.773e-02 3.573e-01 7.287e-01 7.598e-01 4.220e-01 - 1.817e-01 4.220e-01 7.598e-01 7.287e-01 3.573e-01 5.773e-02 - 5.200e-02 3.573e-01 8.189e-01 9.126e-01 7.598e-01 2.591e-01 - 2.591e-01 7.598e-01 9.126e-01 8.189e-01 3.573e-01 5.200e-02 - 1.959e-01 7.287e-01 9.126e-01 8.632e-01 3.716e-01 1.041e-01 - 3.716e-01 8.632e-01 9.126e-01 7.287e-01 1.959e-01 5.267e-02 - 3.716e-01 7.598e-01 7.598e-01 3.716e-01 6.177e-02 6.177e-02 - 3.716e-01 7.598e-01 7.598e-01 3.716e-01 6.177e-02 6.177e-02 - 3.029e-01 4.220e-01 2.591e-01 1.041e-01 6.177e-02 1.041e-01 - 2.591e-01 4.220e-01 3.029e-01 6.176e-02 1.839e-02 6.176e-02 - 1.268e-01 1.817e-01 2.591e-01 3.716e-01 3.716e-01 2.591e-01 - 1.817e-01 1.268e-01 5.100e-02 1.326e-02 1.326e-02 5.100e-02 - 1.268e-01 4.220e-01 7.598e-01 8.632e-01 7.598e-01 4.220e-01 - 1.268e-01 4.402e-02 2.493e-02 2.005e-02 2.493e-02 4.402e-02 - 3.029e-01 7.598e-01 9.126e-01 9.126e-01 7.598e-01 3.029e-01 - 5.100e-02 2.493e-02 5.983e-02 5.983e-02 2.493e-02 5.100e-02 - 3.716e-01 7.287e-01 8.189e-01 7.287e-01 3.716e-01 6.176e-02 - 1.326e-02 2.005e-02 5.983e-02 2.005e-02 1.326e-02 6.176e-02 - 1.959e-01 3.573e-01 3.573e-01 1.959e-01 6.177e-02 1.839e-02 - 1.326e-02 2.493e-02 2.493e-02 1.326e-02 1.839e-02 6.177e-02 - 5.200e-02 5.773e-02 5.200e-02 5.267e-02 6.177e-02 6.176e-02 - 5.100e-02 4.402e-02 5.100e-02 6.176e-02 6.177e-02 5.267e-02 diff --git a/tests/01_PW/073_PW_SY/INPUT b/tests/01_PW/073_PW_SY/INPUT index 25dfbf8441..00d8067355 100644 --- a/tests/01_PW/073_PW_SY/INPUT +++ b/tests/01_PW/073_PW_SY/INPUT @@ -1,26 +1,25 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf +suffix autotest +calculation scf -nbands 6 -symmetry 0 -pseudo_dir ../../PP_ORB +nbands 6 +symmetry 0 +pseudo_dir ../../PP_ORB #Parameters (2.Iteration) -ecutwfc 20 -scf_thr 1e-8 -scf_nmax 100 +ecutwfc 20 +scf_thr 1e-8 +scf_nmax 100 #Parameters (3.Basis) -basis_type pw +basis_type pw #Parameters (4.Smearing) -smearing_method gauss -smearing_sigma 0.002 +smearing_method gauss +smearing_sigma 0.002 #Parameters (5.Mixing) -mixing_type plain -mixing_beta 0.7 - +mixing_type plain +mixing_beta 0.7 diff --git a/tests/01_PW/074_PW_SY_LiRH/INPUT b/tests/01_PW/074_PW_SY_LiRH/INPUT index ce3dac33b8..241b9d09ec 100644 --- a/tests/01_PW/074_PW_SY_LiRH/INPUT +++ b/tests/01_PW/074_PW_SY_LiRH/INPUT @@ -1,38 +1,38 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf -pseudo_dir ../../PP_ORB - +suffix autotest +calculation scf +pseudo_dir ../../PP_ORB + #ntype 1 -symmetry 1 -dft_functional pbe +symmetry 1 +dft_functional pbe #vdw_method d3_bj - + #Parameters (2.Iteration) -ecutwfc 20 -scf_thr 1e-10 -scf_nmax 128 - -cal_force 1 -cal_stress 1 - +ecutwfc 20 +scf_thr 1e-10 +scf_nmax 128 + +cal_force 1 +cal_stress 1 + #Parameters (3.Basis) -basis_type pw +basis_type pw #Parameters (4.Smearing) -smearing_method mp -smearing_sigma 0.010 - +smearing_method mp +smearing_sigma 0.010 + #Parameters (5.Mixing) -mixing_type pulay -mixing_beta 0.2 +mixing_type pulay +mixing_beta 0.2 # kspacing 0.05 -mixing_gg0 1.5 -ks_solver dav - +mixing_gg0 1.5 +ks_solver dav + #relaxation (6.cell_relax) -force_thr_ev 0.01 -stress_thr 2 -relax_nmax 32 -out_stru 1 -symmetry_prec 1e-5 \ No newline at end of file +force_thr_ev 0.01 +stress_thr 2 +relax_nmax 32 +out_stru 1 +symmetry_prec 1e-5 diff --git a/tests/01_PW/075_PW_CHG_BINARY/INPUT b/tests/01_PW/075_PW_CHG_BINARY/INPUT index 20e786ba0e..ec711acf96 100644 --- a/tests/01_PW/075_PW_CHG_BINARY/INPUT +++ b/tests/01_PW/075_PW_CHG_BINARY/INPUT @@ -1,35 +1,36 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf -nbands 8 -symmetry 0 -latname fcc -pseudo_dir ../../PP_ORB +suffix autotest +calculation scf +init_wfc random +nbands 8 +symmetry 0 +latname fcc +pseudo_dir ../../PP_ORB #Parameters (2.Iteration) -ecutwfc 30 -scf_thr 1e-9 -scf_nmax 100 +ecutwfc 30 +scf_thr 1e-9 +scf_nmax 100 #Parameters (3.Basis) -basis_type pw +basis_type pw #Parameters (4.Smearing) -smearing_method gaussian -smearing_sigma 0.02 +smearing_method gaussian +smearing_sigma 0.02 #parameters (5.Mixing) -mixing_type pulay -mixing_beta 0.4 +mixing_type pulay +mixing_beta 0.4 -pseudo_mesh 1 -pseudo_rcut 10 +pseudo_mesh 1 +pseudo_rcut 10 -cal_force 1 -cal_stress 1 +cal_force 1 +cal_stress 1 -init_chg auto -read_file_dir . +init_chg auto +read_file_dir . -pw_seed 1 +pw_seed 1 diff --git a/tests/01_PW/076_PW_elec_add/INPUT b/tests/01_PW/076_PW_elec_add/INPUT index 5391f2b2ed..cbf77129cd 100644 --- a/tests/01_PW/076_PW_elec_add/INPUT +++ b/tests/01_PW/076_PW_elec_add/INPUT @@ -1,30 +1,31 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf +suffix autotest +calculation scf +init_wfc random -nbands 8 -symmetry 1 -pseudo_dir ../../PP_ORB -pw_seed 1 -nelec 9 +nbands 8 +symmetry 1 +pseudo_dir ../../PP_ORB +pw_seed 1 +nelec 9 #Parameters (2.Iteration) -ecutwfc 20 -scf_thr 1e-9 -scf_nmax 100 +ecutwfc 20 +scf_thr 1e-9 +scf_nmax 100 #Parameters (3.Basis) -basis_type pw +basis_type pw #Parameters (4.Smearing) -smearing_method gauss -smearing_sigma 0.002 +smearing_method gauss +smearing_sigma 0.002 #Parameters (5.Mixing) -mixing_type plain -mixing_beta 0.7 +mixing_type plain +mixing_beta 0.7 -cal_force 1 -cal_stress 1 +cal_force 1 +cal_stress 1 diff --git a/tests/01_PW/077_PW_elec_minus/INPUT b/tests/01_PW/077_PW_elec_minus/INPUT index 6cfe39d668..be5334002f 100644 --- a/tests/01_PW/077_PW_elec_minus/INPUT +++ b/tests/01_PW/077_PW_elec_minus/INPUT @@ -1,30 +1,31 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf +suffix autotest +calculation scf +init_wfc random -nbands 8 -symmetry 1 -pseudo_dir ../../PP_ORB -pw_seed 1 -nelec 10 +nbands 8 +symmetry 1 +pseudo_dir ../../PP_ORB +pw_seed 1 +nelec 10 #Parameters (2.Iteration) -ecutwfc 20 -scf_thr 1e-9 -scf_nmax 100 +ecutwfc 20 +scf_thr 1e-9 +scf_nmax 100 #Parameters (3.Basis) -basis_type pw +basis_type pw #Parameters (4.Smearing) -smearing_method gauss -smearing_sigma 0.002 +smearing_method gauss +smearing_sigma 0.002 #Parameters (5.Mixing) -mixing_type plain -mixing_beta 0.7 +mixing_type plain +mixing_beta 0.7 -cal_force 1 -cal_stress 1 +cal_force 1 +cal_stress 1 diff --git a/tests/01_PW/078_PW_S2_elec_add/INPUT b/tests/01_PW/078_PW_S2_elec_add/INPUT index 4590bf72d7..0bd04cfc2a 100644 --- a/tests/01_PW/078_PW_S2_elec_add/INPUT +++ b/tests/01_PW/078_PW_S2_elec_add/INPUT @@ -1,34 +1,34 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf +suffix autotest +calculation scf +init_wfc random -nbands 8 -symmetry 1 -pseudo_dir ../../PP_ORB -pw_seed 1 -nspin 2 -nelec 9 +nbands 8 +symmetry 1 +pseudo_dir ../../PP_ORB +pw_seed 1 +nspin 2 +nelec 9 #Parameters (2.Iteration) -ecutwfc 20 -scf_thr 1e-6 -scf_nmax 100 +ecutwfc 20 +scf_thr 1e-6 +scf_nmax 100 #Parameters (3.Basis) -basis_type pw +basis_type pw #Parameters (4.Smearing) -smearing_method gauss -smearing_sigma 0.002 +smearing_method gauss +smearing_sigma 0.002 #Parameters (5.Mixing) -mixing_type plain -mixing_beta 0.7 +mixing_type plain +mixing_beta 0.7 -nupdown 1.0 -out_bandgap 1 +nupdown 1.0 -cal_force 1 -cal_stress 1 +cal_force 1 +cal_stress 1 diff --git a/tests/01_PW/079_PW_S2_elec_minus/INPUT b/tests/01_PW/079_PW_S2_elec_minus/INPUT index 6aeb5f4f93..c1113e4fe5 100644 --- a/tests/01_PW/079_PW_S2_elec_minus/INPUT +++ b/tests/01_PW/079_PW_S2_elec_minus/INPUT @@ -1,30 +1,31 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf +suffix autotest +calculation scf +init_wfc random -nbands 8 -symmetry 1 -pseudo_dir ../../PP_ORB -nelec 10 -nspin 2 +nbands 8 +symmetry 1 +pseudo_dir ../../PP_ORB +nelec 10 +nspin 2 #Parameters (2.Iteration) -ecutwfc 20 -scf_thr 1e-9 -scf_nmax 100 +ecutwfc 20 +scf_thr 1e-9 +scf_nmax 100 #Parameters (3.Basis) -basis_type pw +basis_type pw #Parameters (4.Smearing) -smearing_method gauss -smearing_sigma 0.002 +smearing_method gauss +smearing_sigma 0.002 #Parameters (5.Mixing) -mixing_type plain -mixing_beta 0.7 +mixing_type plain +mixing_beta 0.7 -cal_force 1 -cal_stress 1 +cal_force 1 +cal_stress 1 diff --git a/tests/01_PW/080_PW_dipole/INPUT b/tests/01_PW/080_PW_dipole/INPUT index 22b9b9a172..d4974f6c75 100644 --- a/tests/01_PW/080_PW_dipole/INPUT +++ b/tests/01_PW/080_PW_dipole/INPUT @@ -1,33 +1,34 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf +suffix autotest +calculation scf +init_wfc random -nbands 6 -symmetry 0 -pseudo_dir ../../PP_ORB +nbands 6 +symmetry 0 +pseudo_dir ../../PP_ORB #Parameters (2.Iteration) -ecutwfc 20 -scf_thr 1e-9 -scf_nmax 100 +ecutwfc 20 +scf_thr 1e-9 +scf_nmax 100 #Parameters (3.Basis) -basis_type pw +basis_type pw #Parameters (4.Smearing) -smearing_method fixed +smearing_method fixed #Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.7 +mixing_type broyden +mixing_beta 0.7 -efield_flag 1 -dip_cor_flag 1 -efield_pos_max 0.5 -efield_pos_dec 0.1 -efield_amp 0.01 -cal_force 1 -cal_stress 1 +efield_flag 1 +dip_cor_flag 1 +efield_pos_max 0.5 +efield_pos_dec 0.1 +efield_amp 0.01 +cal_force 1 +cal_stress 1 -pw_seed 1 +pw_seed 1 diff --git a/tests/01_PW/081_PW_efield/INPUT b/tests/01_PW/081_PW_efield/INPUT index e6ea9fe492..0ef0d7fb7b 100644 --- a/tests/01_PW/081_PW_efield/INPUT +++ b/tests/01_PW/081_PW_efield/INPUT @@ -1,31 +1,32 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf +suffix autotest +calculation scf +init_wfc random -nbands 6 -symmetry 0 -pseudo_dir ../../PP_ORB +nbands 6 +symmetry 0 +pseudo_dir ../../PP_ORB #Parameters (2.Iteration) -ecutwfc 20 -scf_thr 1e-9 -scf_nmax 100 +ecutwfc 20 +scf_thr 1e-9 +scf_nmax 100 #Parameters (3.Basis) -basis_type pw +basis_type pw #Parameters (4.Smearing) -smearing_method fixed +smearing_method fixed #Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.7 +mixing_type broyden +mixing_beta 0.7 -efield_amp 0.01 -efield_flag 1 -dip_cor_flag 0 -cal_force 1 -cal_stress 1 +efield_amp 0.01 +efield_flag 1 +dip_cor_flag 0 +cal_force 1 +cal_stress 1 -pw_seed 1 +pw_seed 1 diff --git a/tests/01_PW/082_PW_gatefield/INPUT b/tests/01_PW/082_PW_gatefield/INPUT index d669d47ca6..034292470f 100644 --- a/tests/01_PW/082_PW_gatefield/INPUT +++ b/tests/01_PW/082_PW_gatefield/INPUT @@ -1,37 +1,38 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf +suffix autotest +calculation scf +init_wfc random -nbands 6 -symmetry 0 -pseudo_dir ../../PP_ORB +nbands 6 +symmetry 0 +pseudo_dir ../../PP_ORB #Parameters (2.Iteration) -ecutwfc 20 -scf_thr 1e-9 -scf_nmax 100 +ecutwfc 20 +scf_thr 1e-9 +scf_nmax 100 #Parameters (3.Basis) -basis_type pw +basis_type pw #Parameters (4.Smearing) -smearing_method gauss -smearing_sigma 0.001 +smearing_method gauss +smearing_sigma 0.001 #Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.7 +mixing_type broyden +mixing_beta 0.7 -efield_flag 1 -dip_cor_flag 1 -efield_pos_max 0.5 -efield_pos_dec 0.1 -cal_force 1 -cal_stress 1 +efield_flag 1 +dip_cor_flag 1 +efield_pos_max 0.5 +efield_pos_dec 0.1 +cal_force 1 +cal_stress 1 -gate_flag 1 -zgate 0.2 -nelec 7 +gate_flag 1 +zgate 0.2 +nelec 7 -pw_seed 1 +pw_seed 1 diff --git a/tests/01_PW/083_PW_sol_H2/INPUT b/tests/01_PW/083_PW_sol_H2/INPUT index f0a5f54268..8c5be69eed 100644 --- a/tests/01_PW/083_PW_sol_H2/INPUT +++ b/tests/01_PW/083_PW_sol_H2/INPUT @@ -1,20 +1,21 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (General) -suffix autotest -pseudo_dir ../../PP_ORB -pw_seed 1 - -nbands 2 -calculation scf -basis_type pw +suffix autotest +pseudo_dir ../../PP_ORB +init_wfc random +pw_seed 1 + +nbands 2 +calculation scf +basis_type pw #Parameters (Accuracy) -ecutwfc 20 -scf_nmax 50 +ecutwfc 20 +scf_nmax 50 #Parameters (Solvation Model) -imp_sol 1 -eb_k 80 -tau 0.000010798 -sigma_k 0.6 -nc_k 0.00037 +imp_sol 1 +eb_k 80 +tau 0.000010798 +sigma_k 0.6 +nc_k 0.00037 diff --git a/tests/01_PW/084_PW_sol_H2O/INPUT b/tests/01_PW/084_PW_sol_H2O/INPUT index 8b1175fe87..5ab63f1fda 100644 --- a/tests/01_PW/084_PW_sol_H2O/INPUT +++ b/tests/01_PW/084_PW_sol_H2O/INPUT @@ -1,21 +1,22 @@ -INPUT_PARAMETERS - -calculation scf -basis_type pw -pw_seed 1 -cal_force 1 -nbands 20 -ecutwfc 20 -scf_nmax 50 +INPUT_PARAMETERS + +calculation scf +basis_type pw +init_wfc random +pw_seed 1 +cal_force 1 +nbands 20 +ecutwfc 20 +scf_nmax 50 #Parameters (Solvation Model) -imp_sol 1 -eb_k 80 -tau 0.000010798 -sigma_k 0.6 -nc_k 0.00037 +imp_sol 1 +eb_k 80 +tau 0.000010798 +sigma_k 0.6 +nc_k 0.00037 #Parameters (General) -suffix autotest -pseudo_dir ../../PP_ORB +suffix autotest +pseudo_dir ../../PP_ORB diff --git a/tests/01_PW/085_PW_get_pchg/INPUT b/tests/01_PW/085_PW_get_pchg/INPUT index 1c319c8366..9b6512f9e3 100644 --- a/tests/01_PW/085_PW_get_pchg/INPUT +++ b/tests/01_PW/085_PW_get_pchg/INPUT @@ -1,20 +1,21 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf +suffix autotest +calculation scf +init_wfc random -nbands 6 -symmetry 1 -pseudo_dir ../../PP_ORB +nbands 6 +symmetry 1 +pseudo_dir ../../PP_ORB #Parameters (2.Iteration) -ecutwfc 20 -scf_thr 1e-9 -scf_nmax 100 +ecutwfc 20 +scf_thr 1e-9 +scf_nmax 100 #Parameters (3.Basis) -basis_type pw +basis_type pw -out_pchg 4*1 +out_pchg 4*1 -pw_seed 1 +pw_seed 1 diff --git a/tests/01_PW/086_PW_get_wf/INPUT b/tests/01_PW/086_PW_get_wf/INPUT index cf8619c111..6949f9d697 100644 --- a/tests/01_PW/086_PW_get_wf/INPUT +++ b/tests/01_PW/086_PW_get_wf/INPUT @@ -1,21 +1,22 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf +suffix autotest +calculation scf +init_wfc random -nbands 6 -symmetry 1 -pseudo_dir ../../PP_ORB +nbands 6 +symmetry 1 +pseudo_dir ../../PP_ORB #Parameters (2.Iteration) -ecutwfc 20 -scf_thr 1e-9 -scf_nmax 100 +ecutwfc 20 +scf_thr 1e-9 +scf_nmax 100 #Parameters (3.Basis) -basis_type pw +basis_type pw -out_wfc_norm 1 3*0 -out_wfc_re_im 0 1 2*0 +out_wfc_norm 1 3*0 +out_wfc_re_im 0 1 2*0 -pw_seed 1 +pw_seed 1 diff --git a/tests/01_PW/087_PW_get_pchg_kpar/INPUT b/tests/01_PW/087_PW_get_pchg_kpar/INPUT index 1a7c8d2f35..e0e81359f8 100644 --- a/tests/01_PW/087_PW_get_pchg_kpar/INPUT +++ b/tests/01_PW/087_PW_get_pchg_kpar/INPUT @@ -1,22 +1,23 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf +suffix autotest +calculation scf +init_wfc random -nbands 6 -symmetry 1 -pseudo_dir ../../PP_ORB +nbands 6 +symmetry 1 +pseudo_dir ../../PP_ORB #Parameters (2.Iteration) -ecutwfc 20 -scf_thr 1e-9 -scf_nmax 100 +ecutwfc 20 +scf_thr 1e-9 +scf_nmax 100 #Parameters (3.Basis) -basis_type pw +basis_type pw -out_pchg 4*1 +out_pchg 4*1 -kpar 2 +kpar 2 -pw_seed 1 +pw_seed 1 diff --git a/tests/01_PW/088_PW_get_pchg_sepk/INPUT b/tests/01_PW/088_PW_get_pchg_sepk/INPUT index 8bb4019fb5..1738fe7885 100644 --- a/tests/01_PW/088_PW_get_pchg_sepk/INPUT +++ b/tests/01_PW/088_PW_get_pchg_sepk/INPUT @@ -1,24 +1,25 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf +suffix autotest +calculation scf +init_wfc random -nbands 6 -symmetry 1 -pseudo_dir ../../PP_ORB +nbands 6 +symmetry 1 +pseudo_dir ../../PP_ORB #Parameters (2.Iteration) -ecutwfc 20 -scf_thr 1e-9 -scf_nmax 100 +ecutwfc 20 +scf_thr 1e-9 +scf_nmax 100 #Parameters (3.Basis) -basis_type pw +basis_type pw -out_pchg 4*1 +out_pchg 4*1 -kpar 2 +kpar 2 -if_separate_k 1 +if_separate_k 1 -pw_seed 1 +pw_seed 1 diff --git a/tests/01_PW/089_PW_get_wf_kpar/INPUT b/tests/01_PW/089_PW_get_wf_kpar/INPUT index ee62db77cd..aee0cf5cd8 100644 --- a/tests/01_PW/089_PW_get_wf_kpar/INPUT +++ b/tests/01_PW/089_PW_get_wf_kpar/INPUT @@ -1,22 +1,23 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf +suffix autotest +calculation scf +init_wfc random -nbands 6 -symmetry 1 -pseudo_dir ../../PP_ORB +nbands 6 +symmetry 1 +pseudo_dir ../../PP_ORB #Parameters (2.Iteration) -ecutwfc 100 -scf_thr 1e-9 -scf_nmax 100 +ecutwfc 100 +scf_thr 1e-9 +scf_nmax 100 #Parameters (3.Basis) -basis_type pw +basis_type pw -out_wfc_norm 1 3*0 +out_wfc_norm 1 3*0 -kpar 3 +kpar 3 -pw_seed 1 +pw_seed 1 diff --git a/tests/01_PW/090_PW_VWR/INPUT b/tests/01_PW/090_PW_VWR/INPUT index 746a32b8ce..2bfc844de3 100644 --- a/tests/01_PW/090_PW_VWR/INPUT +++ b/tests/01_PW/090_PW_VWR/INPUT @@ -1,26 +1,25 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf +suffix autotest +calculation scf -nbands 6 -symmetry 1 -pseudo_dir ../../PP_ORB +nbands 6 +symmetry 1 +pseudo_dir ../../PP_ORB #Parameters (2.Iteration) -ecutwfc 20 -scf_thr 1e-8 -scf_nmax 100 +ecutwfc 20 +scf_thr 1e-8 +scf_nmax 100 #Parameters (3.Basis) -basis_type pw +basis_type pw #Parameters (4.Smearing) -smearing_method gauss -smearing_sigma 0.002 +smearing_method gauss +smearing_sigma 0.002 #Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.7 - +mixing_type broyden +mixing_beta 0.7 diff --git a/tests/01_PW/091_PW_CR_VDW3/INPUT b/tests/01_PW/091_PW_CR_VDW3/INPUT index de91d6509f..fc377becd0 100644 --- a/tests/01_PW/091_PW_CR_VDW3/INPUT +++ b/tests/01_PW/091_PW_CR_VDW3/INPUT @@ -1,24 +1,25 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS -ecutwfc 20 -scf_thr 1e-08 -scf_nmax 400 -basis_type pw -ks_solver cg -smearing_method gaussian -relax_nmax 1 -smearing_sigma 0.02 -mixing_type broyden -mixing_beta 0.4 -vdw_method d3_0 -fixed_axes c -force_thr_ev 0.005 -stress_thr 0.1 -suffix autotest -calculation cell-relax -cal_force 1 -cal_stress 1 -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB -pw_seed 1 -dft_functional pbe +init_wfc random +ecutwfc 20 +scf_thr 1e-08 +scf_nmax 400 +basis_type pw +ks_solver cg +smearing_method gaussian +relax_nmax 1 +smearing_sigma 0.02 +mixing_type broyden +mixing_beta 0.4 +vdw_method d3_0 +fixed_axes c +force_thr_ev 0.005 +stress_thr 0.1 +suffix autotest +calculation cell-relax +cal_force 1 +cal_stress 1 +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB +pw_seed 1 +dft_functional pbe diff --git a/tests/01_PW/092_PW_MSST/INPUT b/tests/01_PW/092_PW_MSST/INPUT index b110b0a8da..0d86477531 100644 --- a/tests/01_PW/092_PW_MSST/INPUT +++ b/tests/01_PW/092_PW_MSST/INPUT @@ -1,36 +1,37 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (General) -suffix autotest -pseudo_dir ../../PP_ORB - -nbands 8 -calculation md -read_file_dir ./ +suffix autotest +pseudo_dir ../../PP_ORB +init_wfc random + +nbands 8 +calculation md +read_file_dir ./ #Parameters (Accuracy) -ecutwfc 20 -scf_nmax 20 +ecutwfc 20 +scf_nmax 20 -basis_type pw -md_nstep 3 +basis_type pw +md_nstep 3 -smearing_method gauss -smearing_sigma 0.001 +smearing_method gauss +smearing_sigma 0.001 -cal_stress 1 -cal_force 1 +cal_stress 1 +cal_force 1 -ks_solver cg -mixing_type broyden -mixing_beta 0.7 +ks_solver cg +mixing_type broyden +mixing_beta 0.7 -md_type msst -md_tfirst 10 -md_dt 1 -md_restart 0 -init_vel 1 +md_type msst +md_tfirst 10 +md_dt 1 +md_restart 0 +init_vel 1 -msst_qmass 1 -msst_vel 10 +msst_qmass 1 +msst_vel 10 -pw_seed 1 +pw_seed 1 diff --git a/tests/01_PW/092_PW_MSST/result.ref b/tests/01_PW/092_PW_MSST/result.ref index 13752bd260..83962380b7 100644 --- a/tests/01_PW/092_PW_MSST/result.ref +++ b/tests/01_PW/092_PW_MSST/result.ref @@ -1,5 +1,5 @@ -etotref -250.4498856072767 -etotperatomref -125.2249428036 -totalforceref 7.137474 -totalstressref 322.546737 -totaltimeref 10.48 +etotref -250.1541088328131 +etotperatomref -125.0770544164 +totalforceref 8.894978 +totalstressref 365.361230 +totaltimeref 2.51 diff --git a/tests/01_PW/093_PW_MSST2/INPUT b/tests/01_PW/093_PW_MSST2/INPUT index d25545fa76..7152f1daa4 100644 --- a/tests/01_PW/093_PW_MSST2/INPUT +++ b/tests/01_PW/093_PW_MSST2/INPUT @@ -1,31 +1,32 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (General) -suffix autotest -calculation md -nbands 8 -pseudo_dir ../../PP_ORB +suffix autotest +calculation md +init_wfc random +nbands 8 +pseudo_dir ../../PP_ORB #Parameters (Accuracy) -ecutwfc 10 -scf_thr 1e-9 -scf_nmax 20 -basis_type pw -ks_solver cg -mixing_type broyden -mixing_beta 0.7 -smearing_method gauss -smearing_sigma 0.001 +ecutwfc 10 +scf_thr 1e-9 +scf_nmax 20 +basis_type pw +ks_solver cg +mixing_type broyden +mixing_beta 0.7 +smearing_method gauss +smearing_sigma 0.001 -cal_stress 1 -cal_force 1 +cal_stress 1 +cal_force 1 -md_nstep 3 -md_type msst -md_prec_level 2 -md_tfirst 10 -md_dt 1 -md_restart 0 -init_vel 1 +md_nstep 4 +md_type msst +md_prec_level 2 +md_tfirst 10 +md_dt 1 +md_restart 0 +init_vel 1 -msst_qmass 1 -msst_vel 10 +msst_qmass 1 +msst_vel 10 diff --git a/tests/01_PW/094_PW_NPT/INPUT b/tests/01_PW/094_PW_NPT/INPUT index cbfc39af19..3c1e2f655c 100644 --- a/tests/01_PW/094_PW_NPT/INPUT +++ b/tests/01_PW/094_PW_NPT/INPUT @@ -1,32 +1,33 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (General) -suffix autotest -calculation md -pseudo_dir ../../PP_ORB -pw_seed 1 -nbands 8 +suffix autotest +calculation md +init_wfc random +pseudo_dir ../../PP_ORB +pw_seed 1 +nbands 8 #Parameters (Accuracy) -ecutwfc 20 -erf_ecut 20 -erf_height 50 -erf_sigma 2 -scf_nmax 20 -basis_type pw -ks_solver cg -mixing_type broyden -mixing_beta 0.7 +ecutwfc 20 +erf_ecut 20 +erf_height 50 +erf_sigma 2 +scf_nmax 20 +basis_type pw +ks_solver cg +mixing_type broyden +mixing_beta 0.7 -cal_stress 1 -cal_force 1 +cal_stress 1 +cal_force 1 -md_nstep 3 -md_type npt -md_pmode iso -md_dt 1 -ref_cell_factor 1.05 -md_tchain 4 -md_tfreq 0.1 -md_tfirst 10 -md_pfirst 0.01 -init_vel 1 +md_nstep 4 +md_type npt +md_pmode iso +md_dt 1 +ref_cell_factor 1.05 +md_tchain 4 +md_tfreq 0.1 +md_tfirst 10 +md_pfirst 0.01 +init_vel 1 diff --git a/tests/01_PW/095_PW_NVT/INPUT b/tests/01_PW/095_PW_NVT/INPUT index 59ecaf90fa..a9149fd52f 100644 --- a/tests/01_PW/095_PW_NVT/INPUT +++ b/tests/01_PW/095_PW_NVT/INPUT @@ -1,32 +1,33 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (General) -suffix autotest -pseudo_dir ../../PP_ORB - -nbands 8 -calculation md -read_file_dir ./ +suffix autotest +pseudo_dir ../../PP_ORB +init_wfc random + +nbands 8 +calculation md +read_file_dir ./ #Parameters (Accuracy) -ecutwfc 20 -scf_nmax 20 +ecutwfc 20 +scf_nmax 20 -basis_type pw -md_nstep 5 +basis_type pw +md_nstep 6 -cal_stress 1 -stress_thr 1e-6 -cal_force 1 -force_thr_ev 1.0e-3 +cal_stress 1 +stress_thr 1e-6 +cal_force 1 +force_thr_ev 1.0e-3 -ks_solver cg -mixing_type broyden -mixing_beta 0.7 +ks_solver cg +mixing_type broyden +mixing_beta 0.7 -md_tchain 4 -md_type nvt -md_tfreq 0.1 -md_tfirst 10 -md_dt 1 -md_restart 1 -init_vel 1 +md_tchain 4 +md_type nvt +md_tfreq 0.1 +md_tfirst 10 +md_dt 1 +md_restart 1 +init_vel 1 diff --git a/tests/01_PW/095_PW_NVT/Restart_md.dat b/tests/01_PW/095_PW_NVT/Restart_md.txt similarity index 100% rename from tests/01_PW/095_PW_NVT/Restart_md.dat rename to tests/01_PW/095_PW_NVT/Restart_md.txt diff --git a/tests/01_PW/096_PW_PBE0/INPUT b/tests/01_PW/096_PW_PBE0/INPUT index ea943fad41..590755ff1b 100644 --- a/tests/01_PW/096_PW_PBE0/INPUT +++ b/tests/01_PW/096_PW_PBE0/INPUT @@ -1,23 +1,24 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (System) -suffix autotest +suffix autotest +init_wfc random -nbands 2 -stru_file STRU -kpoint_file KPT -pseudo_dir ../../PP_ORB -pw_seed 1 -calculation scf +nbands 2 +stru_file STRU +kpoint_file KPT +pseudo_dir ../../PP_ORB +pw_seed 1 +calculation scf #Parameters (PW) -ecutwfc 10.0 # Rydberg +ecutwfc 10.0 # Rydberg #Parameters (electronic) -basis_type pw -scf_thr 1e-3 -smearing_method fixed +basis_type pw +scf_thr 1e-3 +smearing_method fixed -cal_force 0 -cal_stress 1 +cal_force 0 +cal_stress 1 -dft_functional pbe0 -symmetry -1 -exx_gamma_extrapolation false +dft_functional pbe0 +symmetry -1 +exx_gamma_extrapolation false diff --git a/tests/01_PW/096_PW_PBE0_AFM/INPUT b/tests/01_PW/096_PW_PBE0_AFM/INPUT new file mode 100644 index 0000000000..5e1067de10 --- /dev/null +++ b/tests/01_PW/096_PW_PBE0_AFM/INPUT @@ -0,0 +1,31 @@ +INPUT_PARAMETERS +#Parameters (System) +suffix autotest +calculation scf +nspin 2 +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB + +#Parameters (PW) +ecutwfc 30 +basis_type pw + +#Parameters (SCF) +scf_thr 1.0e-7 +scf_nmax 100 +smearing_method gaussian +smearing_sigma 0.015 +mixing_type pulay +mixing_ndim 8 +mixing_beta 0.2 + +#Parameters (Hybrid Functional) +dft_functional pbe0 + +#Parameters (Other) +symmetry -1 +init_wfc random +pw_seed 1 +device cpu +exx_thr_type energy +exx_ene_thr 5e-2 diff --git a/tests/01_PW/096_PW_PBE0_AFM/KPT b/tests/01_PW/096_PW_PBE0_AFM/KPT new file mode 100644 index 0000000000..e583e6e418 --- /dev/null +++ b/tests/01_PW/096_PW_PBE0_AFM/KPT @@ -0,0 +1,7 @@ +K_POINTS +0 +Gamma +1 1 1 0 0 0 +### If you are running an energy calculation, please make sure your final energy is +### converged with respect to the k-point settings, unless you set a loose k-point +### mesh on purpose. diff --git a/tests/01_PW/096_PW_PBE0_AFM/README b/tests/01_PW/096_PW_PBE0_AFM/README new file mode 100644 index 0000000000..6f0a2e68a4 --- /dev/null +++ b/tests/01_PW/096_PW_PBE0_AFM/README @@ -0,0 +1 @@ +Fe Anti-ferromagnetic with nspin=2 hybrid functional (PBE0), PW basis, init magnet: up + down \ No newline at end of file diff --git a/tests/01_PW/096_PW_PBE0_AFM/STRU b/tests/01_PW/096_PW_PBE0_AFM/STRU new file mode 100644 index 0000000000..41c2d00632 --- /dev/null +++ b/tests/01_PW/096_PW_PBE0_AFM/STRU @@ -0,0 +1,19 @@ +ATOMIC_SPECIES +Fe 55.845 Fe_ONCV_PBE-1.0.upf + + +LATTICE_CONSTANT +1.889725989 + +LATTICE_VECTORS + 2.8328152400000000 0.0000000000000000 0.0000000000000000 + 0.0000000000000000 2.8328152400000000 0.0000000000000000 + 0.0000000000000000 0.0000000000000000 2.8328152400000000 +ATOMIC_POSITIONS +Direct + +Fe +1.0 +2 +0.0 0.0 0.0 mag 5 +0.5 0.5 0.5 mag -5 diff --git a/tests/01_PW/096_PW_PBE0_AFM/result.ref b/tests/01_PW/096_PW_PBE0_AFM/result.ref new file mode 100644 index 0000000000..94d18e2a1c --- /dev/null +++ b/tests/01_PW/096_PW_PBE0_AFM/result.ref @@ -0,0 +1,3 @@ +etotref -6383.448381202996 +etotperatomref -3191.7241906015 +totaltimeref 1.06 diff --git a/tests/01_PW/096_PW_PBE0_FM/INPUT b/tests/01_PW/096_PW_PBE0_FM/INPUT new file mode 100644 index 0000000000..5e1067de10 --- /dev/null +++ b/tests/01_PW/096_PW_PBE0_FM/INPUT @@ -0,0 +1,31 @@ +INPUT_PARAMETERS +#Parameters (System) +suffix autotest +calculation scf +nspin 2 +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB + +#Parameters (PW) +ecutwfc 30 +basis_type pw + +#Parameters (SCF) +scf_thr 1.0e-7 +scf_nmax 100 +smearing_method gaussian +smearing_sigma 0.015 +mixing_type pulay +mixing_ndim 8 +mixing_beta 0.2 + +#Parameters (Hybrid Functional) +dft_functional pbe0 + +#Parameters (Other) +symmetry -1 +init_wfc random +pw_seed 1 +device cpu +exx_thr_type energy +exx_ene_thr 5e-2 diff --git a/tests/01_PW/096_PW_PBE0_FM/KPT b/tests/01_PW/096_PW_PBE0_FM/KPT new file mode 100644 index 0000000000..e583e6e418 --- /dev/null +++ b/tests/01_PW/096_PW_PBE0_FM/KPT @@ -0,0 +1,7 @@ +K_POINTS +0 +Gamma +1 1 1 0 0 0 +### If you are running an energy calculation, please make sure your final energy is +### converged with respect to the k-point settings, unless you set a loose k-point +### mesh on purpose. diff --git a/tests/01_PW/096_PW_PBE0_FM/README b/tests/01_PW/096_PW_PBE0_FM/README new file mode 100644 index 0000000000..99bca880b5 --- /dev/null +++ b/tests/01_PW/096_PW_PBE0_FM/README @@ -0,0 +1,3 @@ +Fe Ferromagnetic with nspin=2 hybrid functional (PBE0), PW basis, init magnet: up + up + + diff --git a/tests/01_PW/096_PW_PBE0_FM/STRU b/tests/01_PW/096_PW_PBE0_FM/STRU new file mode 100644 index 0000000000..34fa5b31d0 --- /dev/null +++ b/tests/01_PW/096_PW_PBE0_FM/STRU @@ -0,0 +1,19 @@ +ATOMIC_SPECIES +Fe 55.845 Fe_ONCV_PBE-1.0.upf + + +LATTICE_CONSTANT +1.889725989 + +LATTICE_VECTORS + 2.8328152400000000 0.0000000000000000 0.0000000000000000 + 0.0000000000000000 2.8328152400000000 0.0000000000000000 + 0.0000000000000000 0.0000000000000000 2.8328152400000000 +ATOMIC_POSITIONS +Direct + +Fe +1.0 +2 +0.0 0.0 0.0 mag 5 +0.5 0.5 0.5 mag 5 diff --git a/tests/01_PW/096_PW_PBE0_FM/result.ref b/tests/01_PW/096_PW_PBE0_FM/result.ref new file mode 100644 index 0000000000..5b7663ffcd --- /dev/null +++ b/tests/01_PW/096_PW_PBE0_FM/result.ref @@ -0,0 +1,3 @@ +etotref -6382.460958449486 +etotperatomref -3191.2304792247 +totaltimeref 1.59 \ No newline at end of file diff --git a/tests/01_PW/097_PW_LDOS/INPUT b/tests/01_PW/097_PW_LDOS/INPUT deleted file mode 100644 index 9b0aea40f5..0000000000 --- a/tests/01_PW/097_PW_LDOS/INPUT +++ /dev/null @@ -1,28 +0,0 @@ -INPUT_PARAMETERS -#Parameters (1.General) -suffix autotest -calculation scf - -nbands 6 -symmetry 1 -pseudo_dir ../../PP_ORB - -#Parameters (2.Iteration) -ecutwfc 20 -scf_thr 1e-9 -scf_nmax 100 - - -#Parameters (3.Basis) -basis_type pw - -#Parameters (4.Smearing) -smearing_method gauss -smearing_sigma 0.002 - -#Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.7 - -out_ldos 1 -stm_bias 2 diff --git a/tests/01_PW/098_PW_15_SO_avg/INPUT b/tests/01_PW/098_PW_15_SO_avg/INPUT index 68dbf0fd2b..5734ac075b 100644 --- a/tests/01_PW/098_PW_15_SO_avg/INPUT +++ b/tests/01_PW/098_PW_15_SO_avg/INPUT @@ -1,39 +1,40 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (General) -suffix autotest -pseudo_dir ../../PP_ORB +suffix autotest +pseudo_dir ../../PP_ORB +init_wfc random #nbands 40 -gamma_only 0 +gamma_only 0 -calculation scf -symmetry 1 +calculation scf +symmetry 1 #test_force 1 -relax_nmax 1 -force_thr_ev 0.001 -out_level ie -relax_method cg -out_chg 1 +relax_nmax 1 +force_thr_ev 0.001 +out_level ie +relax_method cg +# out_chg 1 #out_band 1 #init_chg file -smearing_method gaussian -smearing_sigma 0.001 +smearing_method gaussian +smearing_sigma 0.001 -ecutwfc 20 -scf_thr 1e-9 -scf_nmax 100 +ecutwfc 20 +scf_thr 1e-9 +scf_nmax 100 #cal_stress 1 #noncolin 1 #lspinorb 1 -basis_type pw -ks_solver cg -chg_extrap second-order -pw_diag_thr 0.00001 +basis_type pw +ks_solver cg +chg_extrap second-order +pw_diag_thr 0.00001 -mixing_type broyden -mixing_beta 0.4 -mixing_gg0 1.5 +mixing_type broyden +mixing_beta 0.4 +mixing_gg0 1.5 diff --git a/tests/01_PW/099_PW_DJ_SO/INPUT b/tests/01_PW/099_PW_DJ_SO/INPUT index 3b28a05ff4..0dc29de009 100644 --- a/tests/01_PW/099_PW_DJ_SO/INPUT +++ b/tests/01_PW/099_PW_DJ_SO/INPUT @@ -1,47 +1,47 @@ -INPUT_PARAMETERS -suffix autotest -nbands 40 +INPUT_PARAMETERS +suffix autotest +nbands 40 -calculation scf -ecutwfc 10 -scf_thr 1.0e-4 -scf_nmax 50 -out_chg 0 +calculation scf +ecutwfc 10 +scf_thr 1.0e-4 +scf_nmax 50 +out_chg 0 #init_chg file #out_dos 1 #dos_sigma 0.05 #out_band 1 -smearing_method gaussian +smearing_method gaussian smearing_sigma 0.01 #force_thr_ev 0.01 #relax_method cg #relax_bfgs_init 0.5 -mixing_type pulay -mixing_beta 0.3 -mixing_restart 1e-3 -mixing_dmr 1 -mixing_gg0 1.1 - -ks_solver dav_subspace -diago_smooth_ethr true -pw_diag_ndim 2 -basis_type pw -gamma_only 0 -noncolin 1 -lspinorb 1 -cal_force 1 -cal_stress 1 +mixing_type pulay +mixing_beta 0.3 +mixing_restart 1e-3 +mixing_dmr 1 +mixing_gg0 1.1 + +ks_solver dav_subspace +diago_smooth_ethr true +pw_diag_ndim 2 +basis_type pw +gamma_only 0 +noncolin 1 +lspinorb 1 +cal_force 1 +cal_stress 1 #Parameter DFT+U -dft_plus_u 1 -orbital_corr 2 -hubbard_u 5.0 -onsite_radius 3.0 -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB - -pw_seed 1 +dft_plus_u 1 +orbital_corr 2 +hubbard_u 5.0 +onsite_radius 3.0 +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB + +pw_seed 1 diff --git a/tests/01_PW/100_PW_W90/INPUT b/tests/01_PW/100_PW_W90/INPUT index f088e3a40f..8b7fed80c7 100644 --- a/tests/01_PW/100_PW_W90/INPUT +++ b/tests/01_PW/100_PW_W90/INPUT @@ -1,18 +1,19 @@ -INPUT_PARAMETERS -suffix autotest -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB -ecutwfc 50 -smearing_method fixed -nbands 4 -calculation nscf -scf_nmax 50 -pw_diag_thr 1.0e-12 -scf_thr 1.0e-15 -init_chg file -symmetry 0 -towannier90 1 -nnkpfile diamond.nnkp -read_file_dir ./ +INPUT_PARAMETERS +suffix autotest +init_wfc random +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB +ecutwfc 50 +smearing_method fixed +nbands 4 +calculation nscf +scf_nmax 50 +pw_diag_thr 1.0e-12 +scf_thr 1.0e-15 +init_chg file +symmetry 0 +towannier90 1 +nnkpfile diamond.nnkp +read_file_dir ./ -pw_seed 1 +pw_seed 1 diff --git a/tests/01_PW/100_PW_W90/chgs1.cube b/tests/01_PW/100_PW_W90/chg.cube similarity index 100% rename from tests/01_PW/100_PW_W90/chgs1.cube rename to tests/01_PW/100_PW_W90/chg.cube diff --git a/tests/01_PW/101_PW_MD_1O/INPUT b/tests/01_PW/101_PW_MD_1O/INPUT index c20bce745e..9bacdc8282 100644 --- a/tests/01_PW/101_PW_MD_1O/INPUT +++ b/tests/01_PW/101_PW_MD_1O/INPUT @@ -1,31 +1,32 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (General) -suffix autotest - -nbands 8 -calculation md +suffix autotest +init_wfc random + +nbands 8 +calculation md #Parameters (Accuracy) -ecutwfc 20 -scf_nmax 50 -scf_thr 1.0e-8 +ecutwfc 20 +scf_nmax 50 +scf_thr 1.0e-8 -basis_type pw -md_nstep 3 +basis_type pw +md_nstep 4 -cal_stress 1 -stress_thr 1e-6 -cal_force 1 -force_thr_ev 1.0e-3 +cal_stress 1 +stress_thr 1e-6 +cal_force 1 +force_thr_ev 1.0e-3 -mixing_type broyden -mixing_beta 0.7 +mixing_type broyden +mixing_beta 0.7 -chg_extrap first-order +chg_extrap first-order -md_tchain 4 -md_tfirst 10 -md_tfreq 0.1 -init_vel 1 -pseudo_dir ../../PP_ORB -pw_seed 1 +md_tchain 4 +md_tfirst 10 +md_tfreq 0.1 +init_vel 1 +pseudo_dir ../../PP_ORB +pw_seed 1 diff --git a/tests/01_PW/102_PW_MD_2O/INPUT b/tests/01_PW/102_PW_MD_2O/INPUT index bcde3a9ca6..a893e1fd1b 100644 --- a/tests/01_PW/102_PW_MD_2O/INPUT +++ b/tests/01_PW/102_PW_MD_2O/INPUT @@ -1,30 +1,31 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (General) -suffix autotest - -nbands 8 -calculation md +suffix autotest +init_wfc random + +nbands 8 +calculation md #Parameters (Accuracy) -ecutwfc 20 -scf_nmax 50 -scf_thr 1.0e-8 +ecutwfc 20 +scf_nmax 50 +scf_thr 1.0e-8 -basis_type pw -md_nstep 3 +basis_type pw +md_nstep 4 -cal_stress 1 -stress_thr 1e-6 -cal_force 1 -force_thr_ev 1.0e-3 +cal_stress 1 +stress_thr 1e-6 +cal_force 1 +force_thr_ev 1.0e-3 -mixing_type broyden -mixing_beta 0.7 +mixing_type broyden +mixing_beta 0.7 -chg_extrap second-order +chg_extrap second-order -md_tfirst 10 -md_tfreq 0.1 -init_vel 1 -pseudo_dir ../../PP_ORB -pw_seed 1 +md_tfirst 10 +md_tfreq 0.1 +init_vel 1 +pseudo_dir ../../PP_ORB +pw_seed 1 diff --git a/tests/01_PW/201_PW_UPF201_Ce_f/INPUT b/tests/01_PW/201_PW_UPF201_Ce_f/INPUT index d7e2a76324..4d71ec26d4 100644 --- a/tests/01_PW/201_PW_UPF201_Ce_f/INPUT +++ b/tests/01_PW/201_PW_UPF201_Ce_f/INPUT @@ -1,28 +1,28 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf -dft_functional scan +suffix autotest +calculation scf +dft_functional scan -nbands 8 -symmetry 1 -pseudo_dir ../../PP_ORB +nbands 8 +symmetry 1 +pseudo_dir ../../PP_ORB #Parameters (2.Iteration) -ecutwfc 20 -scf_thr 1e-9 -scf_nmax 100 +ecutwfc 20 +scf_thr 1e-9 +scf_nmax 100 #Parameters (3.Basis) -basis_type pw +basis_type pw #Parameters (4.Smearing) -smearing_method gauss -smearing_sigma 0.002 +smearing_method gauss +smearing_sigma 0.002 #Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.7 +mixing_type broyden +mixing_beta 0.7 -init_chg file -read_file_dir . +init_chg file +read_file_dir . diff --git a/tests/01_PW/202_PW_ONCV_Libxc/INPUT b/tests/01_PW/202_PW_ONCV_Libxc/INPUT index e46ac262e8..87a0c3b3ea 100644 --- a/tests/01_PW/202_PW_ONCV_Libxc/INPUT +++ b/tests/01_PW/202_PW_ONCV_Libxc/INPUT @@ -1,32 +1,33 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf +suffix autotest +calculation scf +init_wfc random -nbands 6 -symmetry 1 -pseudo_dir ../../PP_ORB +nbands 6 +symmetry 1 +pseudo_dir ../../PP_ORB #Parameters (2.Iteration) -ecutwfc 20 -scf_thr 1e-9 -scf_nmax 100 +ecutwfc 20 +scf_thr 1e-9 +scf_nmax 100 #Parameters (3.Basis) -basis_type pw +basis_type pw #Parameters (4.Smearing) -smearing_method gauss -smearing_sigma 0.002 +smearing_method gauss +smearing_sigma 0.002 #Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.7 +mixing_type broyden +mixing_beta 0.7 -dft_functional XC_LDA_X+XC_LDA_C_PZ +dft_functional XC_LDA_X+XC_LDA_C_PZ -cal_force 1 -cal_stress 1 +cal_force 1 +cal_stress 1 -pw_seed 1 +pw_seed 1 diff --git a/tests/01_PW/203_PW_OK/INPUT b/tests/01_PW/203_PW_OK/INPUT deleted file mode 100644 index 764bb78d76..0000000000 --- a/tests/01_PW/203_PW_OK/INPUT +++ /dev/null @@ -1,31 +0,0 @@ -INPUT_PARAMETERS -#Parameters (1.General) -suffix autotest -calculation scf - -nbands 6 -symmetry 0 -pseudo_dir ../../PP_ORB - -#Parameters (2.Iteration) -ecutwfc 20 -scf_thr 1e-8 -scf_nmax 100 -kpar 2 - -out_chg 1 -dft_functional scan -pw_diag_thr 0.00001 - -#Parameters (3.Basis) -basis_type pw - -#Parameters (4.Smearing) -smearing_method gauss -smearing_sigma 0.002 - -#Parameters (5.Mixing) -mixing_type plain -mixing_beta 0.7 -mixing_gg0 0.0 - diff --git a/tests/01_PW/203_PW_OK/chgs1.cube.ref b/tests/01_PW/203_PW_OK/chgs1.cube.ref deleted file mode 100644 index a67ff1a69a..0000000000 --- a/tests/01_PW/203_PW_OK/chgs1.cube.ref +++ /dev/null @@ -1,2312 +0,0 @@ -STEP: 0 Cubefile created from ABACUS. Inner loop is z, followed by y and x -1 (nspin) 0.517574 (fermi energy, in Ry) -2 0.0 0.0 0.0 -24 0.000000 0.212500 0.212500 -24 0.212500 0.000000 0.212500 -24 0.212500 0.212500 0.000000 - 14 4 0.000000 0.000000 0.000000 - 14 4 2.550000 2.550000 2.550000 - 6.306e-04 4.526e-03 1.770e-02 3.853e-02 5.728e-02 6.466e-02 - 6.053e-02 5.116e-02 4.192e-02 3.468e-02 2.936e-02 2.589e-02 - 2.464e-02 2.589e-02 2.936e-02 3.468e-02 4.192e-02 5.116e-02 - 6.053e-02 6.466e-02 5.728e-02 3.853e-02 1.770e-02 4.526e-03 - 4.526e-03 1.527e-02 3.604e-02 5.903e-02 7.277e-02 7.300e-02 - 6.459e-02 5.434e-02 4.565e-02 3.895e-02 3.401e-02 3.122e-02 - 3.122e-02 3.401e-02 3.895e-02 4.565e-02 5.434e-02 6.459e-02 - 7.300e-02 7.277e-02 5.903e-02 3.604e-02 1.527e-02 4.526e-03 - 1.770e-02 3.604e-02 5.962e-02 7.727e-02 8.198e-02 7.603e-02 - 6.613e-02 5.689e-02 4.939e-02 4.330e-02 3.892e-02 3.728e-02 - 3.892e-02 4.330e-02 4.939e-02 5.689e-02 6.613e-02 7.603e-02 - 8.198e-02 7.727e-02 5.962e-02 3.604e-02 1.770e-02 1.115e-02 - 3.853e-02 5.903e-02 7.727e-02 8.528e-02 8.268e-02 7.478e-02 - 6.639e-02 5.911e-02 5.260e-02 4.693e-02 4.341e-02 4.341e-02 - 4.693e-02 5.260e-02 5.911e-02 6.639e-02 7.478e-02 8.268e-02 - 8.528e-02 7.727e-02 5.903e-02 3.853e-02 2.556e-02 2.556e-02 - 5.728e-02 7.277e-02 8.198e-02 8.268e-02 7.798e-02 7.190e-02 - 6.613e-02 6.025e-02 5.398e-02 4.868e-02 4.655e-02 4.868e-02 - 5.398e-02 6.025e-02 6.613e-02 7.190e-02 7.798e-02 8.268e-02 - 8.198e-02 7.277e-02 5.728e-02 4.294e-02 3.719e-02 4.294e-02 - 6.466e-02 7.300e-02 7.603e-02 7.478e-02 7.190e-02 6.870e-02 - 6.459e-02 5.881e-02 5.237e-02 4.798e-02 4.798e-02 5.237e-02 - 5.881e-02 6.459e-02 6.870e-02 7.190e-02 7.478e-02 7.603e-02 - 7.300e-02 6.466e-02 5.397e-02 4.650e-02 4.650e-02 5.397e-02 - 6.053e-02 6.459e-02 6.613e-02 6.639e-02 6.613e-02 6.459e-02 - 6.053e-02 5.421e-02 4.821e-02 4.573e-02 4.821e-02 5.421e-02 - 6.053e-02 6.459e-02 6.613e-02 6.639e-02 6.613e-02 6.459e-02 - 6.053e-02 5.421e-02 4.821e-02 4.573e-02 4.821e-02 5.421e-02 - 5.116e-02 5.434e-02 5.689e-02 5.911e-02 6.025e-02 5.881e-02 - 5.421e-02 4.814e-02 4.385e-02 4.385e-02 4.814e-02 5.421e-02 - 5.881e-02 6.025e-02 5.911e-02 5.689e-02 5.434e-02 5.116e-02 - 4.707e-02 4.283e-02 4.006e-02 4.006e-02 4.283e-02 4.707e-02 - 4.192e-02 4.565e-02 4.939e-02 5.260e-02 5.398e-02 5.237e-02 - 4.821e-02 4.385e-02 4.201e-02 4.385e-02 4.821e-02 5.237e-02 - 5.398e-02 5.260e-02 4.939e-02 4.565e-02 4.192e-02 3.820e-02 - 3.469e-02 3.206e-02 3.107e-02 3.206e-02 3.469e-02 3.820e-02 - 3.468e-02 3.895e-02 4.330e-02 4.693e-02 4.868e-02 4.798e-02 - 4.573e-02 4.385e-02 4.385e-02 4.573e-02 4.798e-02 4.868e-02 - 4.693e-02 4.330e-02 3.895e-02 3.468e-02 3.074e-02 2.728e-02 - 2.460e-02 2.313e-02 2.313e-02 2.460e-02 2.728e-02 3.074e-02 - 2.936e-02 3.401e-02 3.892e-02 4.341e-02 4.655e-02 4.798e-02 - 4.821e-02 4.814e-02 4.821e-02 4.798e-02 4.655e-02 4.341e-02 - 3.892e-02 3.401e-02 2.936e-02 2.524e-02 2.171e-02 1.893e-02 - 1.714e-02 1.653e-02 1.714e-02 1.893e-02 2.171e-02 2.524e-02 - 2.589e-02 3.122e-02 3.728e-02 4.341e-02 4.868e-02 5.237e-02 - 5.421e-02 5.421e-02 5.237e-02 4.868e-02 4.341e-02 3.728e-02 - 3.122e-02 2.589e-02 2.145e-02 1.781e-02 1.495e-02 1.296e-02 - 1.196e-02 1.196e-02 1.296e-02 1.495e-02 1.781e-02 2.145e-02 - 2.464e-02 3.122e-02 3.892e-02 4.693e-02 5.398e-02 5.881e-02 - 6.053e-02 5.881e-02 5.398e-02 4.693e-02 3.892e-02 3.122e-02 - 2.464e-02 1.942e-02 1.538e-02 1.232e-02 1.016e-02 8.892e-03 - 8.479e-03 8.892e-03 1.016e-02 1.232e-02 1.538e-02 1.942e-02 - 2.589e-02 3.401e-02 4.330e-02 5.260e-02 6.025e-02 6.459e-02 - 6.459e-02 6.025e-02 5.260e-02 4.330e-02 3.401e-02 2.589e-02 - 1.942e-02 1.453e-02 1.096e-02 8.487e-03 6.959e-03 6.247e-03 - 6.247e-03 6.959e-03 8.487e-03 1.096e-02 1.453e-02 1.942e-02 - 2.936e-02 3.895e-02 4.939e-02 5.911e-02 6.613e-02 6.870e-02 - 6.613e-02 5.911e-02 4.939e-02 3.895e-02 2.936e-02 2.145e-02 - 1.538e-02 1.096e-02 7.921e-03 6.008e-03 4.997e-03 4.689e-03 - 4.997e-03 6.008e-03 7.921e-03 1.096e-02 1.538e-02 2.145e-02 - 3.468e-02 4.565e-02 5.689e-02 6.639e-02 7.190e-02 7.190e-02 - 6.639e-02 5.689e-02 4.565e-02 3.468e-02 2.524e-02 1.781e-02 - 1.232e-02 8.487e-03 6.008e-03 4.595e-03 3.979e-03 3.979e-03 - 4.595e-03 6.008e-03 8.487e-03 1.232e-02 1.781e-02 2.524e-02 - 4.192e-02 5.434e-02 6.613e-02 7.478e-02 7.798e-02 7.478e-02 - 6.613e-02 5.434e-02 4.192e-02 3.074e-02 2.171e-02 1.495e-02 - 1.016e-02 6.959e-03 4.997e-03 3.979e-03 3.671e-03 3.979e-03 - 4.997e-03 6.959e-03 1.016e-02 1.495e-02 2.171e-02 3.074e-02 - 5.116e-02 6.459e-02 7.603e-02 8.268e-02 8.268e-02 7.603e-02 - 6.459e-02 5.116e-02 3.820e-02 2.728e-02 1.893e-02 1.296e-02 - 8.892e-03 6.247e-03 4.689e-03 3.979e-03 3.979e-03 4.689e-03 - 6.247e-03 8.892e-03 1.296e-02 1.893e-02 2.728e-02 3.820e-02 - 6.053e-02 7.300e-02 8.198e-02 8.528e-02 8.198e-02 7.300e-02 - 6.053e-02 4.707e-02 3.469e-02 2.460e-02 1.714e-02 1.196e-02 - 8.479e-03 6.247e-03 4.997e-03 4.595e-03 4.997e-03 6.247e-03 - 8.479e-03 1.196e-02 1.714e-02 2.460e-02 3.469e-02 4.707e-02 - 6.466e-02 7.277e-02 7.727e-02 7.727e-02 7.277e-02 6.466e-02 - 5.421e-02 4.283e-02 3.206e-02 2.313e-02 1.653e-02 1.196e-02 - 8.892e-03 6.959e-03 6.008e-03 6.008e-03 6.959e-03 8.892e-03 - 1.196e-02 1.653e-02 2.313e-02 3.206e-02 4.283e-02 5.421e-02 - 5.728e-02 5.903e-02 5.962e-02 5.903e-02 5.728e-02 5.397e-02 - 4.821e-02 4.006e-02 3.107e-02 2.313e-02 1.714e-02 1.296e-02 - 1.016e-02 8.487e-03 7.921e-03 8.487e-03 1.016e-02 1.296e-02 - 1.714e-02 2.313e-02 3.107e-02 4.006e-02 4.821e-02 5.397e-02 - 3.853e-02 3.604e-02 3.604e-02 3.853e-02 4.294e-02 4.650e-02 - 4.573e-02 4.006e-02 3.206e-02 2.460e-02 1.893e-02 1.495e-02 - 1.232e-02 1.096e-02 1.096e-02 1.232e-02 1.495e-02 1.893e-02 - 2.460e-02 3.206e-02 4.006e-02 4.573e-02 4.650e-02 4.294e-02 - 1.770e-02 1.527e-02 1.770e-02 2.556e-02 3.719e-02 4.650e-02 - 4.821e-02 4.283e-02 3.469e-02 2.728e-02 2.171e-02 1.781e-02 - 1.538e-02 1.453e-02 1.538e-02 1.781e-02 2.171e-02 2.728e-02 - 3.469e-02 4.283e-02 4.821e-02 4.650e-02 3.719e-02 2.556e-02 - 4.526e-03 4.526e-03 1.115e-02 2.556e-02 4.294e-02 5.397e-02 - 5.421e-02 4.707e-02 3.820e-02 3.074e-02 2.524e-02 2.145e-02 - 1.942e-02 1.942e-02 2.145e-02 2.524e-02 3.074e-02 3.820e-02 - 4.707e-02 5.421e-02 5.397e-02 4.294e-02 2.556e-02 1.115e-02 - 4.526e-03 1.527e-02 3.604e-02 5.903e-02 7.277e-02 7.300e-02 - 6.459e-02 5.434e-02 4.565e-02 3.895e-02 3.401e-02 3.122e-02 - 3.122e-02 3.401e-02 3.895e-02 4.565e-02 5.434e-02 6.459e-02 - 7.300e-02 7.277e-02 5.903e-02 3.604e-02 1.527e-02 4.526e-03 - 1.527e-02 3.431e-02 5.950e-02 7.896e-02 8.473e-02 7.892e-02 - 6.870e-02 5.911e-02 5.133e-02 4.501e-02 4.045e-02 3.872e-02 - 4.045e-02 4.501e-02 5.133e-02 5.911e-02 6.870e-02 7.892e-02 - 8.473e-02 7.896e-02 5.950e-02 3.431e-02 1.527e-02 8.601e-03 - 3.604e-02 5.950e-02 8.117e-02 9.146e-02 8.941e-02 8.099e-02 - 7.190e-02 6.404e-02 5.700e-02 5.077e-02 4.685e-02 4.685e-02 - 5.077e-02 5.700e-02 6.404e-02 7.190e-02 8.099e-02 8.941e-02 - 9.146e-02 8.117e-02 5.950e-02 3.604e-02 2.162e-02 2.162e-02 - 5.903e-02 7.896e-02 9.146e-02 9.329e-02 8.818e-02 8.128e-02 - 7.478e-02 6.809e-02 6.074e-02 5.436e-02 5.176e-02 5.436e-02 - 6.074e-02 6.809e-02 7.478e-02 8.128e-02 8.818e-02 9.329e-02 - 9.146e-02 7.896e-02 5.903e-02 4.108e-02 3.399e-02 4.108e-02 - 7.277e-02 8.473e-02 8.941e-02 8.818e-02 8.475e-02 8.099e-02 - 7.603e-02 6.863e-02 6.009e-02 5.416e-02 5.416e-02 6.009e-02 - 6.863e-02 7.603e-02 8.099e-02 8.475e-02 8.818e-02 8.941e-02 - 8.473e-02 7.277e-02 5.775e-02 4.740e-02 4.740e-02 5.775e-02 - 7.300e-02 7.892e-02 8.099e-02 8.128e-02 8.099e-02 7.892e-02 - 7.300e-02 6.353e-02 5.442e-02 5.065e-02 5.442e-02 6.353e-02 - 7.300e-02 7.892e-02 8.099e-02 8.128e-02 8.099e-02 7.892e-02 - 7.300e-02 6.353e-02 5.442e-02 5.065e-02 5.442e-02 6.353e-02 - 6.459e-02 6.870e-02 7.190e-02 7.478e-02 7.603e-02 7.300e-02 - 6.466e-02 5.397e-02 4.650e-02 4.650e-02 5.397e-02 6.466e-02 - 7.300e-02 7.603e-02 7.478e-02 7.190e-02 6.870e-02 6.459e-02 - 5.881e-02 5.237e-02 4.798e-02 4.798e-02 5.237e-02 5.881e-02 - 5.434e-02 5.911e-02 6.404e-02 6.809e-02 6.863e-02 6.353e-02 - 5.397e-02 4.471e-02 4.091e-02 4.471e-02 5.397e-02 6.353e-02 - 6.863e-02 6.809e-02 6.404e-02 5.911e-02 5.434e-02 4.953e-02 - 4.466e-02 4.073e-02 3.920e-02 4.073e-02 4.466e-02 4.953e-02 - 4.565e-02 5.133e-02 5.700e-02 6.074e-02 6.009e-02 5.442e-02 - 4.650e-02 4.091e-02 4.091e-02 4.650e-02 5.442e-02 6.009e-02 - 6.074e-02 5.700e-02 5.133e-02 4.565e-02 4.056e-02 3.604e-02 - 3.238e-02 3.025e-02 3.025e-02 3.238e-02 3.604e-02 4.056e-02 - 3.895e-02 4.501e-02 5.077e-02 5.436e-02 5.416e-02 5.065e-02 - 4.650e-02 4.471e-02 4.650e-02 5.065e-02 5.416e-02 5.436e-02 - 5.077e-02 4.501e-02 3.895e-02 3.354e-02 2.897e-02 2.531e-02 - 2.286e-02 2.199e-02 2.286e-02 2.531e-02 2.897e-02 3.354e-02 - 3.401e-02 4.045e-02 4.685e-02 5.176e-02 5.416e-02 5.442e-02 - 5.397e-02 5.397e-02 5.442e-02 5.416e-02 5.176e-02 4.685e-02 - 4.045e-02 3.401e-02 2.838e-02 2.375e-02 2.007e-02 1.744e-02 - 1.606e-02 1.606e-02 1.744e-02 2.007e-02 2.375e-02 2.838e-02 - 3.122e-02 3.872e-02 4.685e-02 5.436e-02 6.009e-02 6.353e-02 - 6.466e-02 6.353e-02 6.009e-02 5.436e-02 4.685e-02 3.872e-02 - 3.122e-02 2.502e-02 2.015e-02 1.639e-02 1.366e-02 1.198e-02 - 1.141e-02 1.198e-02 1.366e-02 1.639e-02 2.015e-02 2.502e-02 - 3.122e-02 4.045e-02 5.077e-02 6.074e-02 6.863e-02 7.300e-02 - 7.300e-02 6.863e-02 6.074e-02 5.077e-02 4.045e-02 3.122e-02 - 2.381e-02 1.822e-02 1.411e-02 1.116e-02 9.254e-03 8.324e-03 - 8.324e-03 9.254e-03 1.116e-02 1.411e-02 1.822e-02 2.381e-02 - 3.401e-02 4.501e-02 5.700e-02 6.809e-02 7.603e-02 7.892e-02 - 7.603e-02 6.809e-02 5.700e-02 4.501e-02 3.401e-02 2.502e-02 - 1.822e-02 1.331e-02 9.883e-03 7.650e-03 6.418e-03 6.030e-03 - 6.418e-03 7.650e-03 9.883e-03 1.331e-02 1.822e-02 2.502e-02 - 3.895e-02 5.133e-02 6.404e-02 7.478e-02 8.099e-02 8.099e-02 - 7.478e-02 6.404e-02 5.133e-02 3.895e-02 2.838e-02 2.015e-02 - 1.411e-02 9.883e-03 7.115e-03 5.505e-03 4.789e-03 4.789e-03 - 5.505e-03 7.115e-03 9.883e-03 1.411e-02 2.015e-02 2.838e-02 - 4.565e-02 5.911e-02 7.190e-02 8.128e-02 8.475e-02 8.128e-02 - 7.190e-02 5.911e-02 4.565e-02 3.354e-02 2.375e-02 1.639e-02 - 1.116e-02 7.650e-03 5.505e-03 4.400e-03 4.068e-03 4.400e-03 - 5.505e-03 7.650e-03 1.116e-02 1.639e-02 2.375e-02 3.354e-02 - 5.434e-02 6.870e-02 8.099e-02 8.818e-02 8.818e-02 8.099e-02 - 6.870e-02 5.434e-02 4.056e-02 2.897e-02 2.007e-02 1.366e-02 - 9.254e-03 6.418e-03 4.789e-03 4.068e-03 4.068e-03 4.789e-03 - 6.418e-03 9.254e-03 1.366e-02 2.007e-02 2.897e-02 4.056e-02 - 6.459e-02 7.892e-02 8.941e-02 9.329e-02 8.941e-02 7.892e-02 - 6.459e-02 4.953e-02 3.604e-02 2.531e-02 1.744e-02 1.198e-02 - 8.324e-03 6.030e-03 4.789e-03 4.400e-03 4.789e-03 6.030e-03 - 8.324e-03 1.198e-02 1.744e-02 2.531e-02 3.604e-02 4.953e-02 - 7.300e-02 8.473e-02 9.146e-02 9.146e-02 8.473e-02 7.300e-02 - 5.881e-02 4.466e-02 3.238e-02 2.286e-02 1.606e-02 1.141e-02 - 8.324e-03 6.418e-03 5.505e-03 5.505e-03 6.418e-03 8.324e-03 - 1.141e-02 1.606e-02 2.286e-02 3.238e-02 4.466e-02 5.881e-02 - 7.277e-02 7.896e-02 8.117e-02 7.896e-02 7.277e-02 6.353e-02 - 5.237e-02 4.073e-02 3.025e-02 2.199e-02 1.606e-02 1.198e-02 - 9.254e-03 7.650e-03 7.115e-03 7.650e-03 9.254e-03 1.198e-02 - 1.606e-02 2.199e-02 3.025e-02 4.073e-02 5.237e-02 6.353e-02 - 5.903e-02 5.950e-02 5.950e-02 5.903e-02 5.775e-02 5.442e-02 - 4.798e-02 3.920e-02 3.025e-02 2.286e-02 1.744e-02 1.366e-02 - 1.116e-02 9.883e-03 9.883e-03 1.116e-02 1.366e-02 1.744e-02 - 2.286e-02 3.025e-02 3.920e-02 4.798e-02 5.442e-02 5.775e-02 - 3.604e-02 3.431e-02 3.604e-02 4.108e-02 4.740e-02 5.065e-02 - 4.798e-02 4.073e-02 3.238e-02 2.531e-02 2.007e-02 1.639e-02 - 1.411e-02 1.331e-02 1.411e-02 1.639e-02 2.007e-02 2.531e-02 - 3.238e-02 4.073e-02 4.798e-02 5.065e-02 4.740e-02 4.108e-02 - 1.527e-02 1.527e-02 2.162e-02 3.399e-02 4.740e-02 5.442e-02 - 5.237e-02 4.466e-02 3.604e-02 2.897e-02 2.375e-02 2.015e-02 - 1.822e-02 1.822e-02 2.015e-02 2.375e-02 2.897e-02 3.604e-02 - 4.466e-02 5.237e-02 5.442e-02 4.740e-02 3.399e-02 2.162e-02 - 4.526e-03 8.601e-03 2.162e-02 4.108e-02 5.775e-02 6.353e-02 - 5.881e-02 4.953e-02 4.056e-02 3.354e-02 2.838e-02 2.502e-02 - 2.381e-02 2.502e-02 2.838e-02 3.354e-02 4.056e-02 4.953e-02 - 5.881e-02 6.353e-02 5.775e-02 4.108e-02 2.162e-02 8.601e-03 - 1.770e-02 3.604e-02 5.962e-02 7.727e-02 8.198e-02 7.603e-02 - 6.613e-02 5.689e-02 4.939e-02 4.330e-02 3.892e-02 3.728e-02 - 3.892e-02 4.330e-02 4.939e-02 5.689e-02 6.613e-02 7.603e-02 - 8.198e-02 7.727e-02 5.962e-02 3.604e-02 1.770e-02 1.115e-02 - 3.604e-02 5.950e-02 8.117e-02 9.146e-02 8.941e-02 8.099e-02 - 7.190e-02 6.404e-02 5.700e-02 5.077e-02 4.685e-02 4.685e-02 - 5.077e-02 5.700e-02 6.404e-02 7.190e-02 8.099e-02 8.941e-02 - 9.146e-02 8.117e-02 5.950e-02 3.604e-02 2.162e-02 2.162e-02 - 5.962e-02 8.117e-02 9.491e-02 9.719e-02 9.194e-02 8.475e-02 - 7.798e-02 7.099e-02 6.323e-02 5.643e-02 5.366e-02 5.643e-02 - 6.323e-02 7.099e-02 7.798e-02 8.475e-02 9.194e-02 9.719e-02 - 9.491e-02 8.117e-02 5.962e-02 4.041e-02 3.287e-02 4.041e-02 - 7.727e-02 9.146e-02 9.719e-02 9.600e-02 9.227e-02 8.818e-02 - 8.268e-02 7.430e-02 6.446e-02 5.759e-02 5.759e-02 6.446e-02 - 7.430e-02 8.268e-02 8.818e-02 9.227e-02 9.600e-02 9.719e-02 - 9.146e-02 7.727e-02 5.968e-02 4.765e-02 4.765e-02 5.968e-02 - 8.198e-02 8.941e-02 9.194e-02 9.227e-02 9.194e-02 8.941e-02 - 8.198e-02 7.000e-02 5.845e-02 5.366e-02 5.845e-02 7.000e-02 - 8.198e-02 8.941e-02 9.194e-02 9.227e-02 9.194e-02 8.941e-02 - 8.198e-02 7.000e-02 5.845e-02 5.366e-02 5.845e-02 7.000e-02 - 7.603e-02 8.099e-02 8.475e-02 8.818e-02 8.941e-02 8.473e-02 - 7.277e-02 5.775e-02 4.740e-02 4.740e-02 5.775e-02 7.277e-02 - 8.473e-02 8.941e-02 8.818e-02 8.475e-02 8.099e-02 7.603e-02 - 6.863e-02 6.009e-02 5.416e-02 5.416e-02 6.009e-02 6.863e-02 - 6.613e-02 7.190e-02 7.798e-02 8.268e-02 8.198e-02 7.277e-02 - 5.728e-02 4.294e-02 3.719e-02 4.294e-02 5.728e-02 7.277e-02 - 8.198e-02 8.268e-02 7.798e-02 7.190e-02 6.613e-02 6.025e-02 - 5.398e-02 4.868e-02 4.655e-02 4.868e-02 5.398e-02 6.025e-02 - 5.689e-02 6.404e-02 7.099e-02 7.430e-02 7.000e-02 5.775e-02 - 4.294e-02 3.313e-02 3.313e-02 4.294e-02 5.775e-02 7.000e-02 - 7.430e-02 7.099e-02 6.404e-02 5.689e-02 5.061e-02 4.502e-02 - 4.029e-02 3.742e-02 3.742e-02 4.029e-02 4.502e-02 5.061e-02 - 4.939e-02 5.700e-02 6.323e-02 6.446e-02 5.845e-02 4.740e-02 - 3.719e-02 3.313e-02 3.719e-02 4.740e-02 5.845e-02 6.446e-02 - 6.323e-02 5.700e-02 4.939e-02 4.252e-02 3.681e-02 3.221e-02 - 2.903e-02 2.787e-02 2.903e-02 3.221e-02 3.681e-02 4.252e-02 - 4.330e-02 5.077e-02 5.643e-02 5.759e-02 5.366e-02 4.740e-02 - 4.294e-02 4.294e-02 4.740e-02 5.366e-02 5.759e-02 5.643e-02 - 5.077e-02 4.330e-02 3.625e-02 3.042e-02 2.582e-02 2.247e-02 - 2.066e-02 2.066e-02 2.247e-02 2.582e-02 3.042e-02 3.625e-02 - 3.892e-02 4.685e-02 5.366e-02 5.759e-02 5.845e-02 5.775e-02 - 5.728e-02 5.775e-02 5.845e-02 5.759e-02 5.366e-02 4.685e-02 - 3.892e-02 3.163e-02 2.570e-02 2.110e-02 1.770e-02 1.554e-02 - 1.480e-02 1.554e-02 1.770e-02 2.110e-02 2.570e-02 3.163e-02 - 3.728e-02 4.685e-02 5.643e-02 6.446e-02 7.000e-02 7.277e-02 - 7.277e-02 7.000e-02 6.446e-02 5.643e-02 4.685e-02 3.728e-02 - 2.904e-02 2.263e-02 1.784e-02 1.435e-02 1.200e-02 1.081e-02 - 1.081e-02 1.200e-02 1.435e-02 1.784e-02 2.263e-02 2.904e-02 - 3.892e-02 5.077e-02 6.323e-02 7.430e-02 8.198e-02 8.473e-02 - 8.198e-02 7.430e-02 6.323e-02 5.077e-02 3.892e-02 2.904e-02 - 2.153e-02 1.612e-02 1.228e-02 9.698e-03 8.199e-03 7.708e-03 - 8.199e-03 9.698e-03 1.228e-02 1.612e-02 2.153e-02 2.904e-02 - 4.330e-02 5.700e-02 7.099e-02 8.268e-02 8.941e-02 8.941e-02 - 8.268e-02 7.099e-02 5.700e-02 4.330e-02 3.163e-02 2.263e-02 - 1.612e-02 1.157e-02 8.541e-03 6.706e-03 5.856e-03 5.856e-03 - 6.706e-03 8.541e-03 1.157e-02 1.612e-02 2.263e-02 3.163e-02 - 4.939e-02 6.404e-02 7.798e-02 8.818e-02 9.194e-02 8.818e-02 - 7.798e-02 6.404e-02 4.939e-02 3.625e-02 2.570e-02 1.784e-02 - 1.228e-02 8.541e-03 6.220e-03 5.001e-03 4.629e-03 5.001e-03 - 6.220e-03 8.541e-03 1.228e-02 1.784e-02 2.570e-02 3.625e-02 - 5.689e-02 7.190e-02 8.475e-02 9.227e-02 9.227e-02 8.475e-02 - 7.190e-02 5.689e-02 4.252e-02 3.042e-02 2.110e-02 1.435e-02 - 9.698e-03 6.706e-03 5.001e-03 4.255e-03 4.255e-03 5.001e-03 - 6.706e-03 9.698e-03 1.435e-02 2.110e-02 3.042e-02 4.252e-02 - 6.613e-02 8.099e-02 9.194e-02 9.600e-02 9.194e-02 8.099e-02 - 6.613e-02 5.061e-02 3.681e-02 2.582e-02 1.770e-02 1.200e-02 - 8.199e-03 5.856e-03 4.629e-03 4.255e-03 4.629e-03 5.856e-03 - 8.199e-03 1.200e-02 1.770e-02 2.582e-02 3.681e-02 5.061e-02 - 7.603e-02 8.941e-02 9.719e-02 9.719e-02 8.941e-02 7.603e-02 - 6.025e-02 4.502e-02 3.221e-02 2.247e-02 1.554e-02 1.081e-02 - 7.708e-03 5.856e-03 5.001e-03 5.001e-03 5.856e-03 7.708e-03 - 1.081e-02 1.554e-02 2.247e-02 3.221e-02 4.502e-02 6.025e-02 - 8.198e-02 9.146e-02 9.491e-02 9.146e-02 8.198e-02 6.863e-02 - 5.398e-02 4.029e-02 2.903e-02 2.066e-02 1.480e-02 1.081e-02 - 8.199e-03 6.706e-03 6.220e-03 6.706e-03 8.199e-03 1.081e-02 - 1.480e-02 2.066e-02 2.903e-02 4.029e-02 5.398e-02 6.863e-02 - 7.727e-02 8.117e-02 8.117e-02 7.727e-02 7.000e-02 6.009e-02 - 4.868e-02 3.742e-02 2.787e-02 2.066e-02 1.554e-02 1.200e-02 - 9.698e-03 8.541e-03 8.541e-03 9.698e-03 1.200e-02 1.554e-02 - 2.066e-02 2.787e-02 3.742e-02 4.868e-02 6.009e-02 7.000e-02 - 5.962e-02 5.950e-02 5.962e-02 5.968e-02 5.845e-02 5.416e-02 - 4.655e-02 3.742e-02 2.903e-02 2.247e-02 1.770e-02 1.435e-02 - 1.228e-02 1.157e-02 1.228e-02 1.435e-02 1.770e-02 2.247e-02 - 2.903e-02 3.742e-02 4.655e-02 5.416e-02 5.845e-02 5.968e-02 - 3.604e-02 3.604e-02 4.041e-02 4.765e-02 5.366e-02 5.416e-02 - 4.868e-02 4.029e-02 3.221e-02 2.582e-02 2.110e-02 1.784e-02 - 1.612e-02 1.612e-02 1.784e-02 2.110e-02 2.582e-02 3.221e-02 - 4.029e-02 4.868e-02 5.416e-02 5.366e-02 4.765e-02 4.041e-02 - 1.770e-02 2.162e-02 3.287e-02 4.765e-02 5.845e-02 6.009e-02 - 5.398e-02 4.502e-02 3.681e-02 3.042e-02 2.570e-02 2.263e-02 - 2.153e-02 2.263e-02 2.570e-02 3.042e-02 3.681e-02 4.502e-02 - 5.398e-02 6.009e-02 5.845e-02 4.765e-02 3.287e-02 2.162e-02 - 1.115e-02 2.162e-02 4.041e-02 5.968e-02 7.000e-02 6.863e-02 - 6.025e-02 5.061e-02 4.252e-02 3.625e-02 3.163e-02 2.904e-02 - 2.904e-02 3.163e-02 3.625e-02 4.252e-02 5.061e-02 6.025e-02 - 6.863e-02 7.000e-02 5.968e-02 4.041e-02 2.162e-02 1.115e-02 - 3.853e-02 5.903e-02 7.727e-02 8.528e-02 8.268e-02 7.478e-02 - 6.639e-02 5.911e-02 5.260e-02 4.693e-02 4.341e-02 4.341e-02 - 4.693e-02 5.260e-02 5.911e-02 6.639e-02 7.478e-02 8.268e-02 - 8.528e-02 7.727e-02 5.903e-02 3.853e-02 2.556e-02 2.556e-02 - 5.903e-02 7.896e-02 9.146e-02 9.329e-02 8.818e-02 8.128e-02 - 7.478e-02 6.809e-02 6.074e-02 5.436e-02 5.176e-02 5.436e-02 - 6.074e-02 6.809e-02 7.478e-02 8.128e-02 8.818e-02 9.329e-02 - 9.146e-02 7.896e-02 5.903e-02 4.108e-02 3.399e-02 4.108e-02 - 7.727e-02 9.146e-02 9.719e-02 9.600e-02 9.227e-02 8.818e-02 - 8.268e-02 7.430e-02 6.446e-02 5.759e-02 5.759e-02 6.446e-02 - 7.430e-02 8.268e-02 8.818e-02 9.227e-02 9.600e-02 9.719e-02 - 9.146e-02 7.727e-02 5.968e-02 4.765e-02 4.765e-02 5.968e-02 - 8.528e-02 9.329e-02 9.600e-02 9.634e-02 9.600e-02 9.329e-02 - 8.528e-02 7.233e-02 5.986e-02 5.469e-02 5.986e-02 7.233e-02 - 8.528e-02 9.329e-02 9.600e-02 9.634e-02 9.600e-02 9.329e-02 - 8.528e-02 7.233e-02 5.986e-02 5.469e-02 5.986e-02 7.233e-02 - 8.268e-02 8.818e-02 9.227e-02 9.600e-02 9.719e-02 9.146e-02 - 7.727e-02 5.968e-02 4.765e-02 4.765e-02 5.968e-02 7.727e-02 - 9.146e-02 9.719e-02 9.600e-02 9.227e-02 8.818e-02 8.268e-02 - 7.430e-02 6.446e-02 5.759e-02 5.759e-02 6.446e-02 7.430e-02 - 7.478e-02 8.128e-02 8.818e-02 9.329e-02 9.146e-02 7.896e-02 - 5.903e-02 4.108e-02 3.399e-02 4.108e-02 5.903e-02 7.896e-02 - 9.146e-02 9.329e-02 8.818e-02 8.128e-02 7.478e-02 6.809e-02 - 6.074e-02 5.436e-02 5.176e-02 5.436e-02 6.074e-02 6.809e-02 - 6.639e-02 7.478e-02 8.268e-02 8.528e-02 7.727e-02 5.903e-02 - 3.853e-02 2.556e-02 2.556e-02 3.853e-02 5.903e-02 7.727e-02 - 8.528e-02 8.268e-02 7.478e-02 6.639e-02 5.911e-02 5.260e-02 - 4.693e-02 4.341e-02 4.341e-02 4.693e-02 5.260e-02 5.911e-02 - 5.911e-02 6.809e-02 7.430e-02 7.233e-02 5.968e-02 4.108e-02 - 2.556e-02 1.973e-02 2.556e-02 4.108e-02 5.968e-02 7.233e-02 - 7.430e-02 6.809e-02 5.911e-02 5.086e-02 4.411e-02 3.864e-02 - 3.477e-02 3.333e-02 3.477e-02 3.864e-02 4.411e-02 5.086e-02 - 5.260e-02 6.074e-02 6.446e-02 5.986e-02 4.765e-02 3.399e-02 - 2.556e-02 2.556e-02 3.399e-02 4.765e-02 5.986e-02 6.446e-02 - 6.074e-02 5.260e-02 4.411e-02 3.705e-02 3.153e-02 2.748e-02 - 2.524e-02 2.524e-02 2.748e-02 3.153e-02 3.705e-02 4.411e-02 - 4.693e-02 5.436e-02 5.759e-02 5.469e-02 4.765e-02 4.108e-02 - 3.853e-02 4.108e-02 4.765e-02 5.469e-02 5.759e-02 5.436e-02 - 4.693e-02 3.864e-02 3.153e-02 2.600e-02 2.191e-02 1.926e-02 - 1.833e-02 1.926e-02 2.191e-02 2.600e-02 3.153e-02 3.864e-02 - 4.341e-02 5.176e-02 5.759e-02 5.986e-02 5.968e-02 5.903e-02 - 5.903e-02 5.968e-02 5.986e-02 5.759e-02 5.176e-02 4.341e-02 - 3.477e-02 2.748e-02 2.191e-02 1.780e-02 1.498e-02 1.351e-02 - 1.351e-02 1.498e-02 1.780e-02 2.191e-02 2.748e-02 3.477e-02 - 4.341e-02 5.436e-02 6.446e-02 7.233e-02 7.727e-02 7.896e-02 - 7.727e-02 7.233e-02 6.446e-02 5.436e-02 4.341e-02 3.333e-02 - 2.524e-02 1.926e-02 1.498e-02 1.201e-02 1.022e-02 9.620e-03 - 1.022e-02 1.201e-02 1.498e-02 1.926e-02 2.524e-02 3.333e-02 - 4.693e-02 6.074e-02 7.430e-02 8.528e-02 9.146e-02 9.146e-02 - 8.528e-02 7.430e-02 6.074e-02 4.693e-02 3.477e-02 2.524e-02 - 1.833e-02 1.351e-02 1.022e-02 8.149e-03 7.143e-03 7.143e-03 - 8.149e-03 1.022e-02 1.351e-02 1.833e-02 2.524e-02 3.477e-02 - 5.260e-02 6.809e-02 8.268e-02 9.329e-02 9.719e-02 9.329e-02 - 8.268e-02 6.809e-02 5.260e-02 3.864e-02 2.748e-02 1.926e-02 - 1.351e-02 9.620e-03 7.143e-03 5.788e-03 5.361e-03 5.788e-03 - 7.143e-03 9.620e-03 1.351e-02 1.926e-02 2.748e-02 3.864e-02 - 5.911e-02 7.478e-02 8.818e-02 9.600e-02 9.600e-02 8.818e-02 - 7.478e-02 5.911e-02 4.411e-02 3.153e-02 2.191e-02 1.498e-02 - 1.022e-02 7.143e-03 5.361e-03 4.569e-03 4.569e-03 5.361e-03 - 7.143e-03 1.022e-02 1.498e-02 2.191e-02 3.153e-02 4.411e-02 - 6.639e-02 8.128e-02 9.227e-02 9.634e-02 9.227e-02 8.128e-02 - 6.639e-02 5.086e-02 3.705e-02 2.600e-02 1.780e-02 1.201e-02 - 8.149e-03 5.788e-03 4.569e-03 4.201e-03 4.569e-03 5.788e-03 - 8.149e-03 1.201e-02 1.780e-02 2.600e-02 3.705e-02 5.086e-02 - 7.478e-02 8.818e-02 9.600e-02 9.600e-02 8.818e-02 7.478e-02 - 5.911e-02 4.411e-02 3.153e-02 2.191e-02 1.498e-02 1.022e-02 - 7.143e-03 5.361e-03 4.569e-03 4.569e-03 5.361e-03 7.143e-03 - 1.022e-02 1.498e-02 2.191e-02 3.153e-02 4.411e-02 5.911e-02 - 8.268e-02 9.329e-02 9.719e-02 9.329e-02 8.268e-02 6.809e-02 - 5.260e-02 3.864e-02 2.748e-02 1.926e-02 1.351e-02 9.620e-03 - 7.143e-03 5.788e-03 5.361e-03 5.788e-03 7.143e-03 9.620e-03 - 1.351e-02 1.926e-02 2.748e-02 3.864e-02 5.260e-02 6.809e-02 - 8.528e-02 9.146e-02 9.146e-02 8.528e-02 7.430e-02 6.074e-02 - 4.693e-02 3.477e-02 2.524e-02 1.833e-02 1.351e-02 1.022e-02 - 8.149e-03 7.143e-03 7.143e-03 8.149e-03 1.022e-02 1.351e-02 - 1.833e-02 2.524e-02 3.477e-02 4.693e-02 6.074e-02 7.430e-02 - 7.727e-02 7.896e-02 7.727e-02 7.233e-02 6.446e-02 5.436e-02 - 4.341e-02 3.333e-02 2.524e-02 1.926e-02 1.498e-02 1.201e-02 - 1.022e-02 9.620e-03 1.022e-02 1.201e-02 1.498e-02 1.926e-02 - 2.524e-02 3.333e-02 4.341e-02 5.436e-02 6.446e-02 7.233e-02 - 5.903e-02 5.903e-02 5.968e-02 5.986e-02 5.759e-02 5.176e-02 - 4.341e-02 3.477e-02 2.748e-02 2.191e-02 1.780e-02 1.498e-02 - 1.351e-02 1.351e-02 1.498e-02 1.780e-02 2.191e-02 2.748e-02 - 3.477e-02 4.341e-02 5.176e-02 5.759e-02 5.986e-02 5.968e-02 - 3.853e-02 4.108e-02 4.765e-02 5.469e-02 5.759e-02 5.436e-02 - 4.693e-02 3.864e-02 3.153e-02 2.600e-02 2.191e-02 1.926e-02 - 1.833e-02 1.926e-02 2.191e-02 2.600e-02 3.153e-02 3.864e-02 - 4.693e-02 5.436e-02 5.759e-02 5.469e-02 4.765e-02 4.108e-02 - 2.556e-02 3.399e-02 4.765e-02 5.986e-02 6.446e-02 6.074e-02 - 5.260e-02 4.411e-02 3.705e-02 3.153e-02 2.748e-02 2.524e-02 - 2.524e-02 2.748e-02 3.153e-02 3.705e-02 4.411e-02 5.260e-02 - 6.074e-02 6.446e-02 5.986e-02 4.765e-02 3.399e-02 2.556e-02 - 2.556e-02 4.108e-02 5.968e-02 7.233e-02 7.430e-02 6.809e-02 - 5.911e-02 5.086e-02 4.411e-02 3.864e-02 3.477e-02 3.333e-02 - 3.477e-02 3.864e-02 4.411e-02 5.086e-02 5.911e-02 6.809e-02 - 7.430e-02 7.233e-02 5.968e-02 4.108e-02 2.556e-02 1.973e-02 - 5.728e-02 7.277e-02 8.198e-02 8.268e-02 7.798e-02 7.190e-02 - 6.613e-02 6.025e-02 5.398e-02 4.868e-02 4.655e-02 4.868e-02 - 5.398e-02 6.025e-02 6.613e-02 7.190e-02 7.798e-02 8.268e-02 - 8.198e-02 7.277e-02 5.728e-02 4.294e-02 3.719e-02 4.294e-02 - 7.277e-02 8.473e-02 8.941e-02 8.818e-02 8.475e-02 8.099e-02 - 7.603e-02 6.863e-02 6.009e-02 5.416e-02 5.416e-02 6.009e-02 - 6.863e-02 7.603e-02 8.099e-02 8.475e-02 8.818e-02 8.941e-02 - 8.473e-02 7.277e-02 5.775e-02 4.740e-02 4.740e-02 5.775e-02 - 8.198e-02 8.941e-02 9.194e-02 9.227e-02 9.194e-02 8.941e-02 - 8.198e-02 7.000e-02 5.845e-02 5.366e-02 5.845e-02 7.000e-02 - 8.198e-02 8.941e-02 9.194e-02 9.227e-02 9.194e-02 8.941e-02 - 8.198e-02 7.000e-02 5.845e-02 5.366e-02 5.845e-02 7.000e-02 - 8.268e-02 8.818e-02 9.227e-02 9.600e-02 9.719e-02 9.146e-02 - 7.727e-02 5.968e-02 4.765e-02 4.765e-02 5.968e-02 7.727e-02 - 9.146e-02 9.719e-02 9.600e-02 9.227e-02 8.818e-02 8.268e-02 - 7.430e-02 6.446e-02 5.759e-02 5.759e-02 6.446e-02 7.430e-02 - 7.798e-02 8.475e-02 9.194e-02 9.719e-02 9.491e-02 8.117e-02 - 5.962e-02 4.041e-02 3.287e-02 4.041e-02 5.962e-02 8.117e-02 - 9.491e-02 9.719e-02 9.194e-02 8.475e-02 7.798e-02 7.099e-02 - 6.323e-02 5.643e-02 5.366e-02 5.643e-02 6.323e-02 7.099e-02 - 7.190e-02 8.099e-02 8.941e-02 9.146e-02 8.117e-02 5.950e-02 - 3.604e-02 2.162e-02 2.162e-02 3.604e-02 5.950e-02 8.117e-02 - 9.146e-02 8.941e-02 8.099e-02 7.190e-02 6.404e-02 5.700e-02 - 5.077e-02 4.685e-02 4.685e-02 5.077e-02 5.700e-02 6.404e-02 - 6.613e-02 7.603e-02 8.198e-02 7.727e-02 5.962e-02 3.604e-02 - 1.770e-02 1.115e-02 1.770e-02 3.604e-02 5.962e-02 7.727e-02 - 8.198e-02 7.603e-02 6.613e-02 5.689e-02 4.939e-02 4.330e-02 - 3.892e-02 3.728e-02 3.892e-02 4.330e-02 4.939e-02 5.689e-02 - 6.025e-02 6.863e-02 7.000e-02 5.968e-02 4.041e-02 2.162e-02 - 1.115e-02 1.115e-02 2.162e-02 4.041e-02 5.968e-02 7.000e-02 - 6.863e-02 6.025e-02 5.061e-02 4.252e-02 3.625e-02 3.163e-02 - 2.904e-02 2.904e-02 3.163e-02 3.625e-02 4.252e-02 5.061e-02 - 5.398e-02 6.009e-02 5.845e-02 4.765e-02 3.287e-02 2.162e-02 - 1.770e-02 2.162e-02 3.287e-02 4.765e-02 5.845e-02 6.009e-02 - 5.398e-02 4.502e-02 3.681e-02 3.042e-02 2.570e-02 2.263e-02 - 2.153e-02 2.263e-02 2.570e-02 3.042e-02 3.681e-02 4.502e-02 - 4.868e-02 5.416e-02 5.366e-02 4.765e-02 4.041e-02 3.604e-02 - 3.604e-02 4.041e-02 4.765e-02 5.366e-02 5.416e-02 4.868e-02 - 4.029e-02 3.221e-02 2.582e-02 2.110e-02 1.784e-02 1.612e-02 - 1.612e-02 1.784e-02 2.110e-02 2.582e-02 3.221e-02 4.029e-02 - 4.655e-02 5.416e-02 5.845e-02 5.968e-02 5.962e-02 5.950e-02 - 5.962e-02 5.968e-02 5.845e-02 5.416e-02 4.655e-02 3.742e-02 - 2.903e-02 2.247e-02 1.770e-02 1.435e-02 1.228e-02 1.157e-02 - 1.228e-02 1.435e-02 1.770e-02 2.247e-02 2.903e-02 3.742e-02 - 4.868e-02 6.009e-02 7.000e-02 7.727e-02 8.117e-02 8.117e-02 - 7.727e-02 7.000e-02 6.009e-02 4.868e-02 3.742e-02 2.787e-02 - 2.066e-02 1.554e-02 1.200e-02 9.698e-03 8.541e-03 8.541e-03 - 9.698e-03 1.200e-02 1.554e-02 2.066e-02 2.787e-02 3.742e-02 - 5.398e-02 6.863e-02 8.198e-02 9.146e-02 9.491e-02 9.146e-02 - 8.198e-02 6.863e-02 5.398e-02 4.029e-02 2.903e-02 2.066e-02 - 1.480e-02 1.081e-02 8.199e-03 6.706e-03 6.220e-03 6.706e-03 - 8.199e-03 1.081e-02 1.480e-02 2.066e-02 2.903e-02 4.029e-02 - 6.025e-02 7.603e-02 8.941e-02 9.719e-02 9.719e-02 8.941e-02 - 7.603e-02 6.025e-02 4.502e-02 3.221e-02 2.247e-02 1.554e-02 - 1.081e-02 7.708e-03 5.856e-03 5.001e-03 5.001e-03 5.856e-03 - 7.708e-03 1.081e-02 1.554e-02 2.247e-02 3.221e-02 4.502e-02 - 6.613e-02 8.099e-02 9.194e-02 9.600e-02 9.194e-02 8.099e-02 - 6.613e-02 5.061e-02 3.681e-02 2.582e-02 1.770e-02 1.200e-02 - 8.199e-03 5.856e-03 4.629e-03 4.255e-03 4.629e-03 5.856e-03 - 8.199e-03 1.200e-02 1.770e-02 2.582e-02 3.681e-02 5.061e-02 - 7.190e-02 8.475e-02 9.227e-02 9.227e-02 8.475e-02 7.190e-02 - 5.689e-02 4.252e-02 3.042e-02 2.110e-02 1.435e-02 9.698e-03 - 6.706e-03 5.001e-03 4.255e-03 4.255e-03 5.001e-03 6.706e-03 - 9.698e-03 1.435e-02 2.110e-02 3.042e-02 4.252e-02 5.689e-02 - 7.798e-02 8.818e-02 9.194e-02 8.818e-02 7.798e-02 6.404e-02 - 4.939e-02 3.625e-02 2.570e-02 1.784e-02 1.228e-02 8.541e-03 - 6.220e-03 5.001e-03 4.629e-03 5.001e-03 6.220e-03 8.541e-03 - 1.228e-02 1.784e-02 2.570e-02 3.625e-02 4.939e-02 6.404e-02 - 8.268e-02 8.941e-02 8.941e-02 8.268e-02 7.099e-02 5.700e-02 - 4.330e-02 3.163e-02 2.263e-02 1.612e-02 1.157e-02 8.541e-03 - 6.706e-03 5.856e-03 5.856e-03 6.706e-03 8.541e-03 1.157e-02 - 1.612e-02 2.263e-02 3.163e-02 4.330e-02 5.700e-02 7.099e-02 - 8.198e-02 8.473e-02 8.198e-02 7.430e-02 6.323e-02 5.077e-02 - 3.892e-02 2.904e-02 2.153e-02 1.612e-02 1.228e-02 9.698e-03 - 8.199e-03 7.708e-03 8.199e-03 9.698e-03 1.228e-02 1.612e-02 - 2.153e-02 2.904e-02 3.892e-02 5.077e-02 6.323e-02 7.430e-02 - 7.277e-02 7.277e-02 7.000e-02 6.446e-02 5.643e-02 4.685e-02 - 3.728e-02 2.904e-02 2.263e-02 1.784e-02 1.435e-02 1.200e-02 - 1.081e-02 1.081e-02 1.200e-02 1.435e-02 1.784e-02 2.263e-02 - 2.904e-02 3.728e-02 4.685e-02 5.643e-02 6.446e-02 7.000e-02 - 5.728e-02 5.775e-02 5.845e-02 5.759e-02 5.366e-02 4.685e-02 - 3.892e-02 3.163e-02 2.570e-02 2.110e-02 1.770e-02 1.554e-02 - 1.480e-02 1.554e-02 1.770e-02 2.110e-02 2.570e-02 3.163e-02 - 3.892e-02 4.685e-02 5.366e-02 5.759e-02 5.845e-02 5.775e-02 - 4.294e-02 4.740e-02 5.366e-02 5.759e-02 5.643e-02 5.077e-02 - 4.330e-02 3.625e-02 3.042e-02 2.582e-02 2.247e-02 2.066e-02 - 2.066e-02 2.247e-02 2.582e-02 3.042e-02 3.625e-02 4.330e-02 - 5.077e-02 5.643e-02 5.759e-02 5.366e-02 4.740e-02 4.294e-02 - 3.719e-02 4.740e-02 5.845e-02 6.446e-02 6.323e-02 5.700e-02 - 4.939e-02 4.252e-02 3.681e-02 3.221e-02 2.903e-02 2.787e-02 - 2.903e-02 3.221e-02 3.681e-02 4.252e-02 4.939e-02 5.700e-02 - 6.323e-02 6.446e-02 5.845e-02 4.740e-02 3.719e-02 3.313e-02 - 4.294e-02 5.775e-02 7.000e-02 7.430e-02 7.099e-02 6.404e-02 - 5.689e-02 5.061e-02 4.502e-02 4.029e-02 3.742e-02 3.742e-02 - 4.029e-02 4.502e-02 5.061e-02 5.689e-02 6.404e-02 7.099e-02 - 7.430e-02 7.000e-02 5.775e-02 4.294e-02 3.313e-02 3.313e-02 - 6.466e-02 7.300e-02 7.603e-02 7.478e-02 7.190e-02 6.870e-02 - 6.459e-02 5.881e-02 5.237e-02 4.798e-02 4.798e-02 5.237e-02 - 5.881e-02 6.459e-02 6.870e-02 7.190e-02 7.478e-02 7.603e-02 - 7.300e-02 6.466e-02 5.397e-02 4.650e-02 4.650e-02 5.397e-02 - 7.300e-02 7.892e-02 8.099e-02 8.128e-02 8.099e-02 7.892e-02 - 7.300e-02 6.353e-02 5.442e-02 5.065e-02 5.442e-02 6.353e-02 - 7.300e-02 7.892e-02 8.099e-02 8.128e-02 8.099e-02 7.892e-02 - 7.300e-02 6.353e-02 5.442e-02 5.065e-02 5.442e-02 6.353e-02 - 7.603e-02 8.099e-02 8.475e-02 8.818e-02 8.941e-02 8.473e-02 - 7.277e-02 5.775e-02 4.740e-02 4.740e-02 5.775e-02 7.277e-02 - 8.473e-02 8.941e-02 8.818e-02 8.475e-02 8.099e-02 7.603e-02 - 6.863e-02 6.009e-02 5.416e-02 5.416e-02 6.009e-02 6.863e-02 - 7.478e-02 8.128e-02 8.818e-02 9.329e-02 9.146e-02 7.896e-02 - 5.903e-02 4.108e-02 3.399e-02 4.108e-02 5.903e-02 7.896e-02 - 9.146e-02 9.329e-02 8.818e-02 8.128e-02 7.478e-02 6.809e-02 - 6.074e-02 5.436e-02 5.176e-02 5.436e-02 6.074e-02 6.809e-02 - 7.190e-02 8.099e-02 8.941e-02 9.146e-02 8.117e-02 5.950e-02 - 3.604e-02 2.162e-02 2.162e-02 3.604e-02 5.950e-02 8.117e-02 - 9.146e-02 8.941e-02 8.099e-02 7.190e-02 6.404e-02 5.700e-02 - 5.077e-02 4.685e-02 4.685e-02 5.077e-02 5.700e-02 6.404e-02 - 6.870e-02 7.892e-02 8.473e-02 7.896e-02 5.950e-02 3.431e-02 - 1.527e-02 8.601e-03 1.527e-02 3.431e-02 5.950e-02 7.896e-02 - 8.473e-02 7.892e-02 6.870e-02 5.911e-02 5.133e-02 4.501e-02 - 4.045e-02 3.872e-02 4.045e-02 4.501e-02 5.133e-02 5.911e-02 - 6.459e-02 7.300e-02 7.277e-02 5.903e-02 3.604e-02 1.527e-02 - 4.526e-03 4.526e-03 1.527e-02 3.604e-02 5.903e-02 7.277e-02 - 7.300e-02 6.459e-02 5.434e-02 4.565e-02 3.895e-02 3.401e-02 - 3.122e-02 3.122e-02 3.401e-02 3.895e-02 4.565e-02 5.434e-02 - 5.881e-02 6.353e-02 5.775e-02 4.108e-02 2.162e-02 8.601e-03 - 4.526e-03 8.601e-03 2.162e-02 4.108e-02 5.775e-02 6.353e-02 - 5.881e-02 4.953e-02 4.056e-02 3.354e-02 2.838e-02 2.502e-02 - 2.381e-02 2.502e-02 2.838e-02 3.354e-02 4.056e-02 4.953e-02 - 5.237e-02 5.442e-02 4.740e-02 3.399e-02 2.162e-02 1.527e-02 - 1.527e-02 2.162e-02 3.399e-02 4.740e-02 5.442e-02 5.237e-02 - 4.466e-02 3.604e-02 2.897e-02 2.375e-02 2.015e-02 1.822e-02 - 1.822e-02 2.015e-02 2.375e-02 2.897e-02 3.604e-02 4.466e-02 - 4.798e-02 5.065e-02 4.740e-02 4.108e-02 3.604e-02 3.431e-02 - 3.604e-02 4.108e-02 4.740e-02 5.065e-02 4.798e-02 4.073e-02 - 3.238e-02 2.531e-02 2.007e-02 1.639e-02 1.411e-02 1.331e-02 - 1.411e-02 1.639e-02 2.007e-02 2.531e-02 3.238e-02 4.073e-02 - 4.798e-02 5.442e-02 5.775e-02 5.903e-02 5.950e-02 5.950e-02 - 5.903e-02 5.775e-02 5.442e-02 4.798e-02 3.920e-02 3.025e-02 - 2.286e-02 1.744e-02 1.366e-02 1.116e-02 9.883e-03 9.883e-03 - 1.116e-02 1.366e-02 1.744e-02 2.286e-02 3.025e-02 3.920e-02 - 5.237e-02 6.353e-02 7.277e-02 7.896e-02 8.117e-02 7.896e-02 - 7.277e-02 6.353e-02 5.237e-02 4.073e-02 3.025e-02 2.199e-02 - 1.606e-02 1.198e-02 9.254e-03 7.650e-03 7.115e-03 7.650e-03 - 9.254e-03 1.198e-02 1.606e-02 2.199e-02 3.025e-02 4.073e-02 - 5.881e-02 7.300e-02 8.473e-02 9.146e-02 9.146e-02 8.473e-02 - 7.300e-02 5.881e-02 4.466e-02 3.238e-02 2.286e-02 1.606e-02 - 1.141e-02 8.324e-03 6.418e-03 5.505e-03 5.505e-03 6.418e-03 - 8.324e-03 1.141e-02 1.606e-02 2.286e-02 3.238e-02 4.466e-02 - 6.459e-02 7.892e-02 8.941e-02 9.329e-02 8.941e-02 7.892e-02 - 6.459e-02 4.953e-02 3.604e-02 2.531e-02 1.744e-02 1.198e-02 - 8.324e-03 6.030e-03 4.789e-03 4.400e-03 4.789e-03 6.030e-03 - 8.324e-03 1.198e-02 1.744e-02 2.531e-02 3.604e-02 4.953e-02 - 6.870e-02 8.099e-02 8.818e-02 8.818e-02 8.099e-02 6.870e-02 - 5.434e-02 4.056e-02 2.897e-02 2.007e-02 1.366e-02 9.254e-03 - 6.418e-03 4.789e-03 4.068e-03 4.068e-03 4.789e-03 6.418e-03 - 9.254e-03 1.366e-02 2.007e-02 2.897e-02 4.056e-02 5.434e-02 - 7.190e-02 8.128e-02 8.475e-02 8.128e-02 7.190e-02 5.911e-02 - 4.565e-02 3.354e-02 2.375e-02 1.639e-02 1.116e-02 7.650e-03 - 5.505e-03 4.400e-03 4.068e-03 4.400e-03 5.505e-03 7.650e-03 - 1.116e-02 1.639e-02 2.375e-02 3.354e-02 4.565e-02 5.911e-02 - 7.478e-02 8.099e-02 8.099e-02 7.478e-02 6.404e-02 5.133e-02 - 3.895e-02 2.838e-02 2.015e-02 1.411e-02 9.883e-03 7.115e-03 - 5.505e-03 4.789e-03 4.789e-03 5.505e-03 7.115e-03 9.883e-03 - 1.411e-02 2.015e-02 2.838e-02 3.895e-02 5.133e-02 6.404e-02 - 7.603e-02 7.892e-02 7.603e-02 6.809e-02 5.700e-02 4.501e-02 - 3.401e-02 2.502e-02 1.822e-02 1.331e-02 9.883e-03 7.650e-03 - 6.418e-03 6.030e-03 6.418e-03 7.650e-03 9.883e-03 1.331e-02 - 1.822e-02 2.502e-02 3.401e-02 4.501e-02 5.700e-02 6.809e-02 - 7.300e-02 7.300e-02 6.863e-02 6.074e-02 5.077e-02 4.045e-02 - 3.122e-02 2.381e-02 1.822e-02 1.411e-02 1.116e-02 9.254e-03 - 8.324e-03 8.324e-03 9.254e-03 1.116e-02 1.411e-02 1.822e-02 - 2.381e-02 3.122e-02 4.045e-02 5.077e-02 6.074e-02 6.863e-02 - 6.466e-02 6.353e-02 6.009e-02 5.436e-02 4.685e-02 3.872e-02 - 3.122e-02 2.502e-02 2.015e-02 1.639e-02 1.366e-02 1.198e-02 - 1.141e-02 1.198e-02 1.366e-02 1.639e-02 2.015e-02 2.502e-02 - 3.122e-02 3.872e-02 4.685e-02 5.436e-02 6.009e-02 6.353e-02 - 5.397e-02 5.442e-02 5.416e-02 5.176e-02 4.685e-02 4.045e-02 - 3.401e-02 2.838e-02 2.375e-02 2.007e-02 1.744e-02 1.606e-02 - 1.606e-02 1.744e-02 2.007e-02 2.375e-02 2.838e-02 3.401e-02 - 4.045e-02 4.685e-02 5.176e-02 5.416e-02 5.442e-02 5.397e-02 - 4.650e-02 5.065e-02 5.416e-02 5.436e-02 5.077e-02 4.501e-02 - 3.895e-02 3.354e-02 2.897e-02 2.531e-02 2.286e-02 2.199e-02 - 2.286e-02 2.531e-02 2.897e-02 3.354e-02 3.895e-02 4.501e-02 - 5.077e-02 5.436e-02 5.416e-02 5.065e-02 4.650e-02 4.471e-02 - 4.650e-02 5.442e-02 6.009e-02 6.074e-02 5.700e-02 5.133e-02 - 4.565e-02 4.056e-02 3.604e-02 3.238e-02 3.025e-02 3.025e-02 - 3.238e-02 3.604e-02 4.056e-02 4.565e-02 5.133e-02 5.700e-02 - 6.074e-02 6.009e-02 5.442e-02 4.650e-02 4.091e-02 4.091e-02 - 5.397e-02 6.353e-02 6.863e-02 6.809e-02 6.404e-02 5.911e-02 - 5.434e-02 4.953e-02 4.466e-02 4.073e-02 3.920e-02 4.073e-02 - 4.466e-02 4.953e-02 5.434e-02 5.911e-02 6.404e-02 6.809e-02 - 6.863e-02 6.353e-02 5.397e-02 4.471e-02 4.091e-02 4.471e-02 - 6.053e-02 6.459e-02 6.613e-02 6.639e-02 6.613e-02 6.459e-02 - 6.053e-02 5.421e-02 4.821e-02 4.573e-02 4.821e-02 5.421e-02 - 6.053e-02 6.459e-02 6.613e-02 6.639e-02 6.613e-02 6.459e-02 - 6.053e-02 5.421e-02 4.821e-02 4.573e-02 4.821e-02 5.421e-02 - 6.459e-02 6.870e-02 7.190e-02 7.478e-02 7.603e-02 7.300e-02 - 6.466e-02 5.397e-02 4.650e-02 4.650e-02 5.397e-02 6.466e-02 - 7.300e-02 7.603e-02 7.478e-02 7.190e-02 6.870e-02 6.459e-02 - 5.881e-02 5.237e-02 4.798e-02 4.798e-02 5.237e-02 5.881e-02 - 6.613e-02 7.190e-02 7.798e-02 8.268e-02 8.198e-02 7.277e-02 - 5.728e-02 4.294e-02 3.719e-02 4.294e-02 5.728e-02 7.277e-02 - 8.198e-02 8.268e-02 7.798e-02 7.190e-02 6.613e-02 6.025e-02 - 5.398e-02 4.868e-02 4.655e-02 4.868e-02 5.398e-02 6.025e-02 - 6.639e-02 7.478e-02 8.268e-02 8.528e-02 7.727e-02 5.903e-02 - 3.853e-02 2.556e-02 2.556e-02 3.853e-02 5.903e-02 7.727e-02 - 8.528e-02 8.268e-02 7.478e-02 6.639e-02 5.911e-02 5.260e-02 - 4.693e-02 4.341e-02 4.341e-02 4.693e-02 5.260e-02 5.911e-02 - 6.613e-02 7.603e-02 8.198e-02 7.727e-02 5.962e-02 3.604e-02 - 1.770e-02 1.115e-02 1.770e-02 3.604e-02 5.962e-02 7.727e-02 - 8.198e-02 7.603e-02 6.613e-02 5.689e-02 4.939e-02 4.330e-02 - 3.892e-02 3.728e-02 3.892e-02 4.330e-02 4.939e-02 5.689e-02 - 6.459e-02 7.300e-02 7.277e-02 5.903e-02 3.604e-02 1.527e-02 - 4.526e-03 4.526e-03 1.527e-02 3.604e-02 5.903e-02 7.277e-02 - 7.300e-02 6.459e-02 5.434e-02 4.565e-02 3.895e-02 3.401e-02 - 3.122e-02 3.122e-02 3.401e-02 3.895e-02 4.565e-02 5.434e-02 - 6.053e-02 6.466e-02 5.728e-02 3.853e-02 1.770e-02 4.526e-03 - 6.306e-04 4.526e-03 1.770e-02 3.853e-02 5.728e-02 6.466e-02 - 6.053e-02 5.116e-02 4.192e-02 3.468e-02 2.936e-02 2.589e-02 - 2.464e-02 2.589e-02 2.936e-02 3.468e-02 4.192e-02 5.116e-02 - 5.421e-02 5.397e-02 4.294e-02 2.556e-02 1.115e-02 4.526e-03 - 4.526e-03 1.115e-02 2.556e-02 4.294e-02 5.397e-02 5.421e-02 - 4.707e-02 3.820e-02 3.074e-02 2.524e-02 2.145e-02 1.942e-02 - 1.942e-02 2.145e-02 2.524e-02 3.074e-02 3.820e-02 4.707e-02 - 4.821e-02 4.650e-02 3.719e-02 2.556e-02 1.770e-02 1.527e-02 - 1.770e-02 2.556e-02 3.719e-02 4.650e-02 4.821e-02 4.283e-02 - 3.469e-02 2.728e-02 2.171e-02 1.781e-02 1.538e-02 1.453e-02 - 1.538e-02 1.781e-02 2.171e-02 2.728e-02 3.469e-02 4.283e-02 - 4.573e-02 4.650e-02 4.294e-02 3.853e-02 3.604e-02 3.604e-02 - 3.853e-02 4.294e-02 4.650e-02 4.573e-02 4.006e-02 3.206e-02 - 2.460e-02 1.893e-02 1.495e-02 1.232e-02 1.096e-02 1.096e-02 - 1.232e-02 1.495e-02 1.893e-02 2.460e-02 3.206e-02 4.006e-02 - 4.821e-02 5.397e-02 5.728e-02 5.903e-02 5.962e-02 5.903e-02 - 5.728e-02 5.397e-02 4.821e-02 4.006e-02 3.107e-02 2.313e-02 - 1.714e-02 1.296e-02 1.016e-02 8.487e-03 7.921e-03 8.487e-03 - 1.016e-02 1.296e-02 1.714e-02 2.313e-02 3.107e-02 4.006e-02 - 5.421e-02 6.466e-02 7.277e-02 7.727e-02 7.727e-02 7.277e-02 - 6.466e-02 5.421e-02 4.283e-02 3.206e-02 2.313e-02 1.653e-02 - 1.196e-02 8.892e-03 6.959e-03 6.008e-03 6.008e-03 6.959e-03 - 8.892e-03 1.196e-02 1.653e-02 2.313e-02 3.206e-02 4.283e-02 - 6.053e-02 7.300e-02 8.198e-02 8.528e-02 8.198e-02 7.300e-02 - 6.053e-02 4.707e-02 3.469e-02 2.460e-02 1.714e-02 1.196e-02 - 8.479e-03 6.247e-03 4.997e-03 4.595e-03 4.997e-03 6.247e-03 - 8.479e-03 1.196e-02 1.714e-02 2.460e-02 3.469e-02 4.707e-02 - 6.459e-02 7.603e-02 8.268e-02 8.268e-02 7.603e-02 6.459e-02 - 5.116e-02 3.820e-02 2.728e-02 1.893e-02 1.296e-02 8.892e-03 - 6.247e-03 4.689e-03 3.979e-03 3.979e-03 4.689e-03 6.247e-03 - 8.892e-03 1.296e-02 1.893e-02 2.728e-02 3.820e-02 5.116e-02 - 6.613e-02 7.478e-02 7.798e-02 7.478e-02 6.613e-02 5.434e-02 - 4.192e-02 3.074e-02 2.171e-02 1.495e-02 1.016e-02 6.959e-03 - 4.997e-03 3.979e-03 3.671e-03 3.979e-03 4.997e-03 6.959e-03 - 1.016e-02 1.495e-02 2.171e-02 3.074e-02 4.192e-02 5.434e-02 - 6.639e-02 7.190e-02 7.190e-02 6.639e-02 5.689e-02 4.565e-02 - 3.468e-02 2.524e-02 1.781e-02 1.232e-02 8.487e-03 6.008e-03 - 4.595e-03 3.979e-03 3.979e-03 4.595e-03 6.008e-03 8.487e-03 - 1.232e-02 1.781e-02 2.524e-02 3.468e-02 4.565e-02 5.689e-02 - 6.613e-02 6.870e-02 6.613e-02 5.911e-02 4.939e-02 3.895e-02 - 2.936e-02 2.145e-02 1.538e-02 1.096e-02 7.921e-03 6.008e-03 - 4.997e-03 4.689e-03 4.997e-03 6.008e-03 7.921e-03 1.096e-02 - 1.538e-02 2.145e-02 2.936e-02 3.895e-02 4.939e-02 5.911e-02 - 6.459e-02 6.459e-02 6.025e-02 5.260e-02 4.330e-02 3.401e-02 - 2.589e-02 1.942e-02 1.453e-02 1.096e-02 8.487e-03 6.959e-03 - 6.247e-03 6.247e-03 6.959e-03 8.487e-03 1.096e-02 1.453e-02 - 1.942e-02 2.589e-02 3.401e-02 4.330e-02 5.260e-02 6.025e-02 - 6.053e-02 5.881e-02 5.398e-02 4.693e-02 3.892e-02 3.122e-02 - 2.464e-02 1.942e-02 1.538e-02 1.232e-02 1.016e-02 8.892e-03 - 8.479e-03 8.892e-03 1.016e-02 1.232e-02 1.538e-02 1.942e-02 - 2.464e-02 3.122e-02 3.892e-02 4.693e-02 5.398e-02 5.881e-02 - 5.421e-02 5.237e-02 4.868e-02 4.341e-02 3.728e-02 3.122e-02 - 2.589e-02 2.145e-02 1.781e-02 1.495e-02 1.296e-02 1.196e-02 - 1.196e-02 1.296e-02 1.495e-02 1.781e-02 2.145e-02 2.589e-02 - 3.122e-02 3.728e-02 4.341e-02 4.868e-02 5.237e-02 5.421e-02 - 4.821e-02 4.798e-02 4.655e-02 4.341e-02 3.892e-02 3.401e-02 - 2.936e-02 2.524e-02 2.171e-02 1.893e-02 1.714e-02 1.653e-02 - 1.714e-02 1.893e-02 2.171e-02 2.524e-02 2.936e-02 3.401e-02 - 3.892e-02 4.341e-02 4.655e-02 4.798e-02 4.821e-02 4.814e-02 - 4.573e-02 4.798e-02 4.868e-02 4.693e-02 4.330e-02 3.895e-02 - 3.468e-02 3.074e-02 2.728e-02 2.460e-02 2.313e-02 2.313e-02 - 2.460e-02 2.728e-02 3.074e-02 3.468e-02 3.895e-02 4.330e-02 - 4.693e-02 4.868e-02 4.798e-02 4.573e-02 4.385e-02 4.385e-02 - 4.821e-02 5.237e-02 5.398e-02 5.260e-02 4.939e-02 4.565e-02 - 4.192e-02 3.820e-02 3.469e-02 3.206e-02 3.107e-02 3.206e-02 - 3.469e-02 3.820e-02 4.192e-02 4.565e-02 4.939e-02 5.260e-02 - 5.398e-02 5.237e-02 4.821e-02 4.385e-02 4.201e-02 4.385e-02 - 5.421e-02 5.881e-02 6.025e-02 5.911e-02 5.689e-02 5.434e-02 - 5.116e-02 4.707e-02 4.283e-02 4.006e-02 4.006e-02 4.283e-02 - 4.707e-02 5.116e-02 5.434e-02 5.689e-02 5.911e-02 6.025e-02 - 5.881e-02 5.421e-02 4.814e-02 4.385e-02 4.385e-02 4.814e-02 - 5.116e-02 5.434e-02 5.689e-02 5.911e-02 6.025e-02 5.881e-02 - 5.421e-02 4.814e-02 4.385e-02 4.385e-02 4.814e-02 5.421e-02 - 5.881e-02 6.025e-02 5.911e-02 5.689e-02 5.434e-02 5.116e-02 - 4.707e-02 4.283e-02 4.006e-02 4.006e-02 4.283e-02 4.707e-02 - 5.434e-02 5.911e-02 6.404e-02 6.809e-02 6.863e-02 6.353e-02 - 5.397e-02 4.471e-02 4.091e-02 4.471e-02 5.397e-02 6.353e-02 - 6.863e-02 6.809e-02 6.404e-02 5.911e-02 5.434e-02 4.953e-02 - 4.466e-02 4.073e-02 3.920e-02 4.073e-02 4.466e-02 4.953e-02 - 5.689e-02 6.404e-02 7.099e-02 7.430e-02 7.000e-02 5.775e-02 - 4.294e-02 3.313e-02 3.313e-02 4.294e-02 5.775e-02 7.000e-02 - 7.430e-02 7.099e-02 6.404e-02 5.689e-02 5.061e-02 4.502e-02 - 4.029e-02 3.742e-02 3.742e-02 4.029e-02 4.502e-02 5.061e-02 - 5.911e-02 6.809e-02 7.430e-02 7.233e-02 5.968e-02 4.108e-02 - 2.556e-02 1.973e-02 2.556e-02 4.108e-02 5.968e-02 7.233e-02 - 7.430e-02 6.809e-02 5.911e-02 5.086e-02 4.411e-02 3.864e-02 - 3.477e-02 3.333e-02 3.477e-02 3.864e-02 4.411e-02 5.086e-02 - 6.025e-02 6.863e-02 7.000e-02 5.968e-02 4.041e-02 2.162e-02 - 1.115e-02 1.115e-02 2.162e-02 4.041e-02 5.968e-02 7.000e-02 - 6.863e-02 6.025e-02 5.061e-02 4.252e-02 3.625e-02 3.163e-02 - 2.904e-02 2.904e-02 3.163e-02 3.625e-02 4.252e-02 5.061e-02 - 5.881e-02 6.353e-02 5.775e-02 4.108e-02 2.162e-02 8.601e-03 - 4.526e-03 8.601e-03 2.162e-02 4.108e-02 5.775e-02 6.353e-02 - 5.881e-02 4.953e-02 4.056e-02 3.354e-02 2.838e-02 2.502e-02 - 2.381e-02 2.502e-02 2.838e-02 3.354e-02 4.056e-02 4.953e-02 - 5.421e-02 5.397e-02 4.294e-02 2.556e-02 1.115e-02 4.526e-03 - 4.526e-03 1.115e-02 2.556e-02 4.294e-02 5.397e-02 5.421e-02 - 4.707e-02 3.820e-02 3.074e-02 2.524e-02 2.145e-02 1.942e-02 - 1.942e-02 2.145e-02 2.524e-02 3.074e-02 3.820e-02 4.707e-02 - 4.814e-02 4.471e-02 3.313e-02 1.973e-02 1.115e-02 8.601e-03 - 1.115e-02 1.973e-02 3.313e-02 4.471e-02 4.814e-02 4.355e-02 - 3.552e-02 2.799e-02 2.230e-02 1.832e-02 1.584e-02 1.498e-02 - 1.584e-02 1.832e-02 2.230e-02 2.799e-02 3.552e-02 4.355e-02 - 4.385e-02 4.091e-02 3.313e-02 2.556e-02 2.162e-02 2.162e-02 - 2.556e-02 3.313e-02 4.091e-02 4.385e-02 4.032e-02 3.303e-02 - 2.558e-02 1.975e-02 1.566e-02 1.297e-02 1.158e-02 1.158e-02 - 1.297e-02 1.566e-02 1.975e-02 2.558e-02 3.303e-02 4.032e-02 - 4.385e-02 4.471e-02 4.294e-02 4.108e-02 4.041e-02 4.108e-02 - 4.294e-02 4.471e-02 4.385e-02 3.901e-02 3.151e-02 2.393e-02 - 1.789e-02 1.363e-02 1.078e-02 9.073e-03 8.494e-03 9.073e-03 - 1.078e-02 1.363e-02 1.789e-02 2.393e-02 3.151e-02 3.901e-02 - 4.814e-02 5.397e-02 5.775e-02 5.968e-02 5.968e-02 5.775e-02 - 5.397e-02 4.814e-02 4.032e-02 3.151e-02 2.335e-02 1.693e-02 - 1.238e-02 9.326e-03 7.387e-03 6.424e-03 6.424e-03 7.387e-03 - 9.326e-03 1.238e-02 1.693e-02 2.335e-02 3.151e-02 4.032e-02 - 5.421e-02 6.353e-02 7.000e-02 7.233e-02 7.000e-02 6.353e-02 - 5.421e-02 4.355e-02 3.303e-02 2.393e-02 1.693e-02 1.197e-02 - 8.621e-03 6.445e-03 5.200e-03 4.792e-03 5.200e-03 6.445e-03 - 8.621e-03 1.197e-02 1.693e-02 2.393e-02 3.303e-02 4.355e-02 - 5.881e-02 6.863e-02 7.430e-02 7.430e-02 6.863e-02 5.881e-02 - 4.707e-02 3.552e-02 2.558e-02 1.789e-02 1.238e-02 8.621e-03 - 6.148e-03 4.651e-03 3.948e-03 3.948e-03 4.651e-03 6.148e-03 - 8.621e-03 1.238e-02 1.789e-02 2.558e-02 3.552e-02 4.707e-02 - 6.025e-02 6.809e-02 7.099e-02 6.809e-02 6.025e-02 4.953e-02 - 3.820e-02 2.799e-02 1.975e-02 1.363e-02 9.326e-03 6.445e-03 - 4.651e-03 3.695e-03 3.399e-03 3.695e-03 4.651e-03 6.445e-03 - 9.326e-03 1.363e-02 1.975e-02 2.799e-02 3.820e-02 4.953e-02 - 5.911e-02 6.404e-02 6.404e-02 5.911e-02 5.061e-02 4.056e-02 - 3.074e-02 2.230e-02 1.566e-02 1.078e-02 7.387e-03 5.200e-03 - 3.948e-03 3.399e-03 3.399e-03 3.948e-03 5.200e-03 7.387e-03 - 1.078e-02 1.566e-02 2.230e-02 3.074e-02 4.056e-02 5.061e-02 - 5.689e-02 5.911e-02 5.689e-02 5.086e-02 4.252e-02 3.354e-02 - 2.524e-02 1.832e-02 1.297e-02 9.073e-03 6.424e-03 4.792e-03 - 3.948e-03 3.695e-03 3.948e-03 4.792e-03 6.424e-03 9.073e-03 - 1.297e-02 1.832e-02 2.524e-02 3.354e-02 4.252e-02 5.086e-02 - 5.434e-02 5.434e-02 5.061e-02 4.411e-02 3.625e-02 2.838e-02 - 2.145e-02 1.584e-02 1.158e-02 8.494e-03 6.424e-03 5.200e-03 - 4.651e-03 4.651e-03 5.200e-03 6.424e-03 8.494e-03 1.158e-02 - 1.584e-02 2.145e-02 2.838e-02 3.625e-02 4.411e-02 5.061e-02 - 5.116e-02 4.953e-02 4.502e-02 3.864e-02 3.163e-02 2.502e-02 - 1.942e-02 1.498e-02 1.158e-02 9.073e-03 7.387e-03 6.445e-03 - 6.148e-03 6.445e-03 7.387e-03 9.073e-03 1.158e-02 1.498e-02 - 1.942e-02 2.502e-02 3.163e-02 3.864e-02 4.502e-02 4.953e-02 - 4.707e-02 4.466e-02 4.029e-02 3.477e-02 2.904e-02 2.381e-02 - 1.942e-02 1.584e-02 1.297e-02 1.078e-02 9.326e-03 8.621e-03 - 8.621e-03 9.326e-03 1.078e-02 1.297e-02 1.584e-02 1.942e-02 - 2.381e-02 2.904e-02 3.477e-02 4.029e-02 4.466e-02 4.707e-02 - 4.283e-02 4.073e-02 3.742e-02 3.333e-02 2.904e-02 2.502e-02 - 2.145e-02 1.832e-02 1.566e-02 1.363e-02 1.238e-02 1.197e-02 - 1.238e-02 1.363e-02 1.566e-02 1.832e-02 2.145e-02 2.502e-02 - 2.904e-02 3.333e-02 3.742e-02 4.073e-02 4.283e-02 4.355e-02 - 4.006e-02 3.920e-02 3.742e-02 3.477e-02 3.163e-02 2.838e-02 - 2.524e-02 2.230e-02 1.975e-02 1.789e-02 1.693e-02 1.693e-02 - 1.789e-02 1.975e-02 2.230e-02 2.524e-02 2.838e-02 3.163e-02 - 3.477e-02 3.742e-02 3.920e-02 4.006e-02 4.032e-02 4.032e-02 - 4.006e-02 4.073e-02 4.029e-02 3.864e-02 3.625e-02 3.354e-02 - 3.074e-02 2.799e-02 2.558e-02 2.393e-02 2.335e-02 2.393e-02 - 2.558e-02 2.799e-02 3.074e-02 3.354e-02 3.625e-02 3.864e-02 - 4.029e-02 4.073e-02 4.006e-02 3.901e-02 3.852e-02 3.901e-02 - 4.283e-02 4.466e-02 4.502e-02 4.411e-02 4.252e-02 4.056e-02 - 3.820e-02 3.552e-02 3.303e-02 3.151e-02 3.151e-02 3.303e-02 - 3.552e-02 3.820e-02 4.056e-02 4.252e-02 4.411e-02 4.502e-02 - 4.466e-02 4.283e-02 4.032e-02 3.852e-02 3.852e-02 4.032e-02 - 4.707e-02 4.953e-02 5.061e-02 5.086e-02 5.061e-02 4.953e-02 - 4.707e-02 4.355e-02 4.032e-02 3.901e-02 4.032e-02 4.355e-02 - 4.707e-02 4.953e-02 5.061e-02 5.086e-02 5.061e-02 4.953e-02 - 4.707e-02 4.355e-02 4.032e-02 3.901e-02 4.032e-02 4.355e-02 - 4.192e-02 4.565e-02 4.939e-02 5.260e-02 5.398e-02 5.237e-02 - 4.821e-02 4.385e-02 4.201e-02 4.385e-02 4.821e-02 5.237e-02 - 5.398e-02 5.260e-02 4.939e-02 4.565e-02 4.192e-02 3.820e-02 - 3.469e-02 3.206e-02 3.107e-02 3.206e-02 3.469e-02 3.820e-02 - 4.565e-02 5.133e-02 5.700e-02 6.074e-02 6.009e-02 5.442e-02 - 4.650e-02 4.091e-02 4.091e-02 4.650e-02 5.442e-02 6.009e-02 - 6.074e-02 5.700e-02 5.133e-02 4.565e-02 4.056e-02 3.604e-02 - 3.238e-02 3.025e-02 3.025e-02 3.238e-02 3.604e-02 4.056e-02 - 4.939e-02 5.700e-02 6.323e-02 6.446e-02 5.845e-02 4.740e-02 - 3.719e-02 3.313e-02 3.719e-02 4.740e-02 5.845e-02 6.446e-02 - 6.323e-02 5.700e-02 4.939e-02 4.252e-02 3.681e-02 3.221e-02 - 2.903e-02 2.787e-02 2.903e-02 3.221e-02 3.681e-02 4.252e-02 - 5.260e-02 6.074e-02 6.446e-02 5.986e-02 4.765e-02 3.399e-02 - 2.556e-02 2.556e-02 3.399e-02 4.765e-02 5.986e-02 6.446e-02 - 6.074e-02 5.260e-02 4.411e-02 3.705e-02 3.153e-02 2.748e-02 - 2.524e-02 2.524e-02 2.748e-02 3.153e-02 3.705e-02 4.411e-02 - 5.398e-02 6.009e-02 5.845e-02 4.765e-02 3.287e-02 2.162e-02 - 1.770e-02 2.162e-02 3.287e-02 4.765e-02 5.845e-02 6.009e-02 - 5.398e-02 4.502e-02 3.681e-02 3.042e-02 2.570e-02 2.263e-02 - 2.153e-02 2.263e-02 2.570e-02 3.042e-02 3.681e-02 4.502e-02 - 5.237e-02 5.442e-02 4.740e-02 3.399e-02 2.162e-02 1.527e-02 - 1.527e-02 2.162e-02 3.399e-02 4.740e-02 5.442e-02 5.237e-02 - 4.466e-02 3.604e-02 2.897e-02 2.375e-02 2.015e-02 1.822e-02 - 1.822e-02 2.015e-02 2.375e-02 2.897e-02 3.604e-02 4.466e-02 - 4.821e-02 4.650e-02 3.719e-02 2.556e-02 1.770e-02 1.527e-02 - 1.770e-02 2.556e-02 3.719e-02 4.650e-02 4.821e-02 4.283e-02 - 3.469e-02 2.728e-02 2.171e-02 1.781e-02 1.538e-02 1.453e-02 - 1.538e-02 1.781e-02 2.171e-02 2.728e-02 3.469e-02 4.283e-02 - 4.385e-02 4.091e-02 3.313e-02 2.556e-02 2.162e-02 2.162e-02 - 2.556e-02 3.313e-02 4.091e-02 4.385e-02 4.032e-02 3.303e-02 - 2.558e-02 1.975e-02 1.566e-02 1.297e-02 1.158e-02 1.158e-02 - 1.297e-02 1.566e-02 1.975e-02 2.558e-02 3.303e-02 4.032e-02 - 4.201e-02 4.091e-02 3.719e-02 3.399e-02 3.287e-02 3.399e-02 - 3.719e-02 4.091e-02 4.201e-02 3.852e-02 3.165e-02 2.422e-02 - 1.816e-02 1.386e-02 1.100e-02 9.285e-03 8.703e-03 9.285e-03 - 1.100e-02 1.386e-02 1.816e-02 2.422e-02 3.165e-02 3.852e-02 - 4.385e-02 4.650e-02 4.740e-02 4.765e-02 4.765e-02 4.740e-02 - 4.650e-02 4.385e-02 3.852e-02 3.112e-02 2.348e-02 1.717e-02 - 1.262e-02 9.563e-03 7.626e-03 6.662e-03 6.662e-03 7.626e-03 - 9.563e-03 1.262e-02 1.717e-02 2.348e-02 3.112e-02 3.852e-02 - 4.821e-02 5.442e-02 5.845e-02 5.986e-02 5.845e-02 5.442e-02 - 4.821e-02 4.032e-02 3.165e-02 2.348e-02 1.684e-02 1.201e-02 - 8.723e-03 6.580e-03 5.346e-03 4.940e-03 5.346e-03 6.580e-03 - 8.723e-03 1.201e-02 1.684e-02 2.348e-02 3.165e-02 4.032e-02 - 5.237e-02 6.009e-02 6.446e-02 6.446e-02 6.009e-02 5.237e-02 - 4.283e-02 3.303e-02 2.422e-02 1.717e-02 1.201e-02 8.453e-03 - 6.091e-03 4.638e-03 3.945e-03 3.945e-03 4.638e-03 6.091e-03 - 8.453e-03 1.201e-02 1.717e-02 2.422e-02 3.303e-02 4.283e-02 - 5.398e-02 6.074e-02 6.323e-02 6.074e-02 5.398e-02 4.466e-02 - 3.469e-02 2.558e-02 1.816e-02 1.262e-02 8.723e-03 6.091e-03 - 4.420e-03 3.506e-03 3.218e-03 3.506e-03 4.420e-03 6.091e-03 - 8.723e-03 1.262e-02 1.816e-02 2.558e-02 3.469e-02 4.466e-02 - 5.260e-02 5.700e-02 5.700e-02 5.260e-02 4.502e-02 3.604e-02 - 2.728e-02 1.975e-02 1.386e-02 9.563e-03 6.580e-03 4.638e-03 - 3.506e-03 2.998e-03 2.998e-03 3.506e-03 4.638e-03 6.580e-03 - 9.563e-03 1.386e-02 1.975e-02 2.728e-02 3.604e-02 4.502e-02 - 4.939e-02 5.133e-02 4.939e-02 4.411e-02 3.681e-02 2.897e-02 - 2.171e-02 1.566e-02 1.100e-02 7.626e-03 5.346e-03 3.945e-03 - 3.218e-03 2.998e-03 3.218e-03 3.945e-03 5.346e-03 7.626e-03 - 1.100e-02 1.566e-02 2.171e-02 2.897e-02 3.681e-02 4.411e-02 - 4.565e-02 4.565e-02 4.252e-02 3.705e-02 3.042e-02 2.375e-02 - 1.781e-02 1.297e-02 9.285e-03 6.662e-03 4.940e-03 3.945e-03 - 3.506e-03 3.506e-03 3.945e-03 4.940e-03 6.662e-03 9.285e-03 - 1.297e-02 1.781e-02 2.375e-02 3.042e-02 3.705e-02 4.252e-02 - 4.192e-02 4.056e-02 3.681e-02 3.153e-02 2.570e-02 2.015e-02 - 1.538e-02 1.158e-02 8.703e-03 6.662e-03 5.346e-03 4.638e-03 - 4.420e-03 4.638e-03 5.346e-03 6.662e-03 8.703e-03 1.158e-02 - 1.538e-02 2.015e-02 2.570e-02 3.153e-02 3.681e-02 4.056e-02 - 3.820e-02 3.604e-02 3.221e-02 2.748e-02 2.263e-02 1.822e-02 - 1.453e-02 1.158e-02 9.285e-03 7.626e-03 6.580e-03 6.091e-03 - 6.091e-03 6.580e-03 7.626e-03 9.285e-03 1.158e-02 1.453e-02 - 1.822e-02 2.263e-02 2.748e-02 3.221e-02 3.604e-02 3.820e-02 - 3.469e-02 3.238e-02 2.903e-02 2.524e-02 2.153e-02 1.822e-02 - 1.538e-02 1.297e-02 1.100e-02 9.563e-03 8.723e-03 8.453e-03 - 8.723e-03 9.563e-03 1.100e-02 1.297e-02 1.538e-02 1.822e-02 - 2.153e-02 2.524e-02 2.903e-02 3.238e-02 3.469e-02 3.552e-02 - 3.206e-02 3.025e-02 2.787e-02 2.524e-02 2.263e-02 2.015e-02 - 1.781e-02 1.566e-02 1.386e-02 1.262e-02 1.201e-02 1.201e-02 - 1.262e-02 1.386e-02 1.566e-02 1.781e-02 2.015e-02 2.263e-02 - 2.524e-02 2.787e-02 3.025e-02 3.206e-02 3.303e-02 3.303e-02 - 3.107e-02 3.025e-02 2.903e-02 2.748e-02 2.570e-02 2.375e-02 - 2.171e-02 1.975e-02 1.816e-02 1.717e-02 1.684e-02 1.717e-02 - 1.816e-02 1.975e-02 2.171e-02 2.375e-02 2.570e-02 2.748e-02 - 2.903e-02 3.025e-02 3.107e-02 3.151e-02 3.165e-02 3.151e-02 - 3.206e-02 3.238e-02 3.221e-02 3.153e-02 3.042e-02 2.897e-02 - 2.728e-02 2.558e-02 2.422e-02 2.348e-02 2.348e-02 2.422e-02 - 2.558e-02 2.728e-02 2.897e-02 3.042e-02 3.153e-02 3.221e-02 - 3.238e-02 3.206e-02 3.151e-02 3.112e-02 3.112e-02 3.151e-02 - 3.469e-02 3.604e-02 3.681e-02 3.705e-02 3.681e-02 3.604e-02 - 3.469e-02 3.303e-02 3.165e-02 3.112e-02 3.165e-02 3.303e-02 - 3.469e-02 3.604e-02 3.681e-02 3.705e-02 3.681e-02 3.604e-02 - 3.469e-02 3.303e-02 3.165e-02 3.112e-02 3.165e-02 3.303e-02 - 3.820e-02 4.056e-02 4.252e-02 4.411e-02 4.502e-02 4.466e-02 - 4.283e-02 4.032e-02 3.852e-02 3.852e-02 4.032e-02 4.283e-02 - 4.466e-02 4.502e-02 4.411e-02 4.252e-02 4.056e-02 3.820e-02 - 3.552e-02 3.303e-02 3.151e-02 3.151e-02 3.303e-02 3.552e-02 - 3.468e-02 3.895e-02 4.330e-02 4.693e-02 4.868e-02 4.798e-02 - 4.573e-02 4.385e-02 4.385e-02 4.573e-02 4.798e-02 4.868e-02 - 4.693e-02 4.330e-02 3.895e-02 3.468e-02 3.074e-02 2.728e-02 - 2.460e-02 2.313e-02 2.313e-02 2.460e-02 2.728e-02 3.074e-02 - 3.895e-02 4.501e-02 5.077e-02 5.436e-02 5.416e-02 5.065e-02 - 4.650e-02 4.471e-02 4.650e-02 5.065e-02 5.416e-02 5.436e-02 - 5.077e-02 4.501e-02 3.895e-02 3.354e-02 2.897e-02 2.531e-02 - 2.286e-02 2.199e-02 2.286e-02 2.531e-02 2.897e-02 3.354e-02 - 4.330e-02 5.077e-02 5.643e-02 5.759e-02 5.366e-02 4.740e-02 - 4.294e-02 4.294e-02 4.740e-02 5.366e-02 5.759e-02 5.643e-02 - 5.077e-02 4.330e-02 3.625e-02 3.042e-02 2.582e-02 2.247e-02 - 2.066e-02 2.066e-02 2.247e-02 2.582e-02 3.042e-02 3.625e-02 - 4.693e-02 5.436e-02 5.759e-02 5.469e-02 4.765e-02 4.108e-02 - 3.853e-02 4.108e-02 4.765e-02 5.469e-02 5.759e-02 5.436e-02 - 4.693e-02 3.864e-02 3.153e-02 2.600e-02 2.191e-02 1.926e-02 - 1.833e-02 1.926e-02 2.191e-02 2.600e-02 3.153e-02 3.864e-02 - 4.868e-02 5.416e-02 5.366e-02 4.765e-02 4.041e-02 3.604e-02 - 3.604e-02 4.041e-02 4.765e-02 5.366e-02 5.416e-02 4.868e-02 - 4.029e-02 3.221e-02 2.582e-02 2.110e-02 1.784e-02 1.612e-02 - 1.612e-02 1.784e-02 2.110e-02 2.582e-02 3.221e-02 4.029e-02 - 4.798e-02 5.065e-02 4.740e-02 4.108e-02 3.604e-02 3.431e-02 - 3.604e-02 4.108e-02 4.740e-02 5.065e-02 4.798e-02 4.073e-02 - 3.238e-02 2.531e-02 2.007e-02 1.639e-02 1.411e-02 1.331e-02 - 1.411e-02 1.639e-02 2.007e-02 2.531e-02 3.238e-02 4.073e-02 - 4.573e-02 4.650e-02 4.294e-02 3.853e-02 3.604e-02 3.604e-02 - 3.853e-02 4.294e-02 4.650e-02 4.573e-02 4.006e-02 3.206e-02 - 2.460e-02 1.893e-02 1.495e-02 1.232e-02 1.096e-02 1.096e-02 - 1.232e-02 1.495e-02 1.893e-02 2.460e-02 3.206e-02 4.006e-02 - 4.385e-02 4.471e-02 4.294e-02 4.108e-02 4.041e-02 4.108e-02 - 4.294e-02 4.471e-02 4.385e-02 3.901e-02 3.151e-02 2.393e-02 - 1.789e-02 1.363e-02 1.078e-02 9.073e-03 8.494e-03 9.073e-03 - 1.078e-02 1.363e-02 1.789e-02 2.393e-02 3.151e-02 3.901e-02 - 4.385e-02 4.650e-02 4.740e-02 4.765e-02 4.765e-02 4.740e-02 - 4.650e-02 4.385e-02 3.852e-02 3.112e-02 2.348e-02 1.717e-02 - 1.262e-02 9.563e-03 7.626e-03 6.662e-03 6.662e-03 7.626e-03 - 9.563e-03 1.262e-02 1.717e-02 2.348e-02 3.112e-02 3.852e-02 - 4.573e-02 5.065e-02 5.366e-02 5.469e-02 5.366e-02 5.065e-02 - 4.573e-02 3.901e-02 3.112e-02 2.333e-02 1.682e-02 1.203e-02 - 8.760e-03 6.629e-03 5.400e-03 4.995e-03 5.400e-03 6.629e-03 - 8.760e-03 1.203e-02 1.682e-02 2.333e-02 3.112e-02 3.901e-02 - 4.798e-02 5.416e-02 5.759e-02 5.759e-02 5.416e-02 4.798e-02 - 4.006e-02 3.151e-02 2.348e-02 1.682e-02 1.185e-02 8.378e-03 - 6.065e-03 4.635e-03 3.948e-03 3.948e-03 4.635e-03 6.065e-03 - 8.378e-03 1.185e-02 1.682e-02 2.348e-02 3.151e-02 4.006e-02 - 4.868e-02 5.436e-02 5.643e-02 5.436e-02 4.868e-02 4.073e-02 - 3.206e-02 2.393e-02 1.717e-02 1.203e-02 8.378e-03 5.886e-03 - 4.284e-03 3.394e-03 3.110e-03 3.394e-03 4.284e-03 5.886e-03 - 8.378e-03 1.203e-02 1.717e-02 2.393e-02 3.206e-02 4.073e-02 - 4.693e-02 5.077e-02 5.077e-02 4.693e-02 4.029e-02 3.238e-02 - 2.460e-02 1.789e-02 1.262e-02 8.760e-03 6.065e-03 4.284e-03 - 3.224e-03 2.739e-03 2.739e-03 3.224e-03 4.284e-03 6.065e-03 - 8.760e-03 1.262e-02 1.789e-02 2.460e-02 3.238e-02 4.029e-02 - 4.330e-02 4.501e-02 4.330e-02 3.864e-02 3.221e-02 2.531e-02 - 1.893e-02 1.363e-02 9.563e-03 6.629e-03 4.635e-03 3.394e-03 - 2.739e-03 2.539e-03 2.739e-03 3.394e-03 4.635e-03 6.629e-03 - 9.563e-03 1.363e-02 1.893e-02 2.531e-02 3.221e-02 3.864e-02 - 3.895e-02 3.895e-02 3.625e-02 3.153e-02 2.582e-02 2.007e-02 - 1.495e-02 1.078e-02 7.626e-03 5.400e-03 3.948e-03 3.110e-03 - 2.739e-03 2.739e-03 3.110e-03 3.948e-03 5.400e-03 7.626e-03 - 1.078e-02 1.495e-02 2.007e-02 2.582e-02 3.153e-02 3.625e-02 - 3.468e-02 3.354e-02 3.042e-02 2.600e-02 2.110e-02 1.639e-02 - 1.232e-02 9.073e-03 6.662e-03 4.995e-03 3.948e-03 3.394e-03 - 3.224e-03 3.394e-03 3.948e-03 4.995e-03 6.662e-03 9.073e-03 - 1.232e-02 1.639e-02 2.110e-02 2.600e-02 3.042e-02 3.354e-02 - 3.074e-02 2.897e-02 2.582e-02 2.191e-02 1.784e-02 1.411e-02 - 1.096e-02 8.494e-03 6.662e-03 5.400e-03 4.635e-03 4.284e-03 - 4.284e-03 4.635e-03 5.400e-03 6.662e-03 8.494e-03 1.096e-02 - 1.411e-02 1.784e-02 2.191e-02 2.582e-02 2.897e-02 3.074e-02 - 2.728e-02 2.531e-02 2.247e-02 1.926e-02 1.612e-02 1.331e-02 - 1.096e-02 9.073e-03 7.626e-03 6.629e-03 6.065e-03 5.886e-03 - 6.065e-03 6.629e-03 7.626e-03 9.073e-03 1.096e-02 1.331e-02 - 1.612e-02 1.926e-02 2.247e-02 2.531e-02 2.728e-02 2.799e-02 - 2.460e-02 2.286e-02 2.066e-02 1.833e-02 1.612e-02 1.411e-02 - 1.232e-02 1.078e-02 9.563e-03 8.760e-03 8.378e-03 8.378e-03 - 8.760e-03 9.563e-03 1.078e-02 1.232e-02 1.411e-02 1.612e-02 - 1.833e-02 2.066e-02 2.286e-02 2.460e-02 2.558e-02 2.558e-02 - 2.313e-02 2.199e-02 2.066e-02 1.926e-02 1.784e-02 1.639e-02 - 1.495e-02 1.363e-02 1.262e-02 1.203e-02 1.185e-02 1.203e-02 - 1.262e-02 1.363e-02 1.495e-02 1.639e-02 1.784e-02 1.926e-02 - 2.066e-02 2.199e-02 2.313e-02 2.393e-02 2.422e-02 2.393e-02 - 2.313e-02 2.286e-02 2.247e-02 2.191e-02 2.110e-02 2.007e-02 - 1.893e-02 1.789e-02 1.717e-02 1.682e-02 1.682e-02 1.717e-02 - 1.789e-02 1.893e-02 2.007e-02 2.110e-02 2.191e-02 2.247e-02 - 2.286e-02 2.313e-02 2.335e-02 2.348e-02 2.348e-02 2.335e-02 - 2.460e-02 2.531e-02 2.582e-02 2.600e-02 2.582e-02 2.531e-02 - 2.460e-02 2.393e-02 2.348e-02 2.333e-02 2.348e-02 2.393e-02 - 2.460e-02 2.531e-02 2.582e-02 2.600e-02 2.582e-02 2.531e-02 - 2.460e-02 2.393e-02 2.348e-02 2.333e-02 2.348e-02 2.393e-02 - 2.728e-02 2.897e-02 3.042e-02 3.153e-02 3.221e-02 3.238e-02 - 3.206e-02 3.151e-02 3.112e-02 3.112e-02 3.151e-02 3.206e-02 - 3.238e-02 3.221e-02 3.153e-02 3.042e-02 2.897e-02 2.728e-02 - 2.558e-02 2.422e-02 2.348e-02 2.348e-02 2.422e-02 2.558e-02 - 3.074e-02 3.354e-02 3.625e-02 3.864e-02 4.029e-02 4.073e-02 - 4.006e-02 3.901e-02 3.852e-02 3.901e-02 4.006e-02 4.073e-02 - 4.029e-02 3.864e-02 3.625e-02 3.354e-02 3.074e-02 2.799e-02 - 2.558e-02 2.393e-02 2.335e-02 2.393e-02 2.558e-02 2.799e-02 - 2.936e-02 3.401e-02 3.892e-02 4.341e-02 4.655e-02 4.798e-02 - 4.821e-02 4.814e-02 4.821e-02 4.798e-02 4.655e-02 4.341e-02 - 3.892e-02 3.401e-02 2.936e-02 2.524e-02 2.171e-02 1.893e-02 - 1.714e-02 1.653e-02 1.714e-02 1.893e-02 2.171e-02 2.524e-02 - 3.401e-02 4.045e-02 4.685e-02 5.176e-02 5.416e-02 5.442e-02 - 5.397e-02 5.397e-02 5.442e-02 5.416e-02 5.176e-02 4.685e-02 - 4.045e-02 3.401e-02 2.838e-02 2.375e-02 2.007e-02 1.744e-02 - 1.606e-02 1.606e-02 1.744e-02 2.007e-02 2.375e-02 2.838e-02 - 3.892e-02 4.685e-02 5.366e-02 5.759e-02 5.845e-02 5.775e-02 - 5.728e-02 5.775e-02 5.845e-02 5.759e-02 5.366e-02 4.685e-02 - 3.892e-02 3.163e-02 2.570e-02 2.110e-02 1.770e-02 1.554e-02 - 1.480e-02 1.554e-02 1.770e-02 2.110e-02 2.570e-02 3.163e-02 - 4.341e-02 5.176e-02 5.759e-02 5.986e-02 5.968e-02 5.903e-02 - 5.903e-02 5.968e-02 5.986e-02 5.759e-02 5.176e-02 4.341e-02 - 3.477e-02 2.748e-02 2.191e-02 1.780e-02 1.498e-02 1.351e-02 - 1.351e-02 1.498e-02 1.780e-02 2.191e-02 2.748e-02 3.477e-02 - 4.655e-02 5.416e-02 5.845e-02 5.968e-02 5.962e-02 5.950e-02 - 5.962e-02 5.968e-02 5.845e-02 5.416e-02 4.655e-02 3.742e-02 - 2.903e-02 2.247e-02 1.770e-02 1.435e-02 1.228e-02 1.157e-02 - 1.228e-02 1.435e-02 1.770e-02 2.247e-02 2.903e-02 3.742e-02 - 4.798e-02 5.442e-02 5.775e-02 5.903e-02 5.950e-02 5.950e-02 - 5.903e-02 5.775e-02 5.442e-02 4.798e-02 3.920e-02 3.025e-02 - 2.286e-02 1.744e-02 1.366e-02 1.116e-02 9.883e-03 9.883e-03 - 1.116e-02 1.366e-02 1.744e-02 2.286e-02 3.025e-02 3.920e-02 - 4.821e-02 5.397e-02 5.728e-02 5.903e-02 5.962e-02 5.903e-02 - 5.728e-02 5.397e-02 4.821e-02 4.006e-02 3.107e-02 2.313e-02 - 1.714e-02 1.296e-02 1.016e-02 8.487e-03 7.921e-03 8.487e-03 - 1.016e-02 1.296e-02 1.714e-02 2.313e-02 3.107e-02 4.006e-02 - 4.814e-02 5.397e-02 5.775e-02 5.968e-02 5.968e-02 5.775e-02 - 5.397e-02 4.814e-02 4.032e-02 3.151e-02 2.335e-02 1.693e-02 - 1.238e-02 9.326e-03 7.387e-03 6.424e-03 6.424e-03 7.387e-03 - 9.326e-03 1.238e-02 1.693e-02 2.335e-02 3.151e-02 4.032e-02 - 4.821e-02 5.442e-02 5.845e-02 5.986e-02 5.845e-02 5.442e-02 - 4.821e-02 4.032e-02 3.165e-02 2.348e-02 1.684e-02 1.201e-02 - 8.723e-03 6.580e-03 5.346e-03 4.940e-03 5.346e-03 6.580e-03 - 8.723e-03 1.201e-02 1.684e-02 2.348e-02 3.165e-02 4.032e-02 - 4.798e-02 5.416e-02 5.759e-02 5.759e-02 5.416e-02 4.798e-02 - 4.006e-02 3.151e-02 2.348e-02 1.682e-02 1.185e-02 8.378e-03 - 6.065e-03 4.635e-03 3.948e-03 3.948e-03 4.635e-03 6.065e-03 - 8.378e-03 1.185e-02 1.682e-02 2.348e-02 3.151e-02 4.006e-02 - 4.655e-02 5.176e-02 5.366e-02 5.176e-02 4.655e-02 3.920e-02 - 3.107e-02 2.335e-02 1.684e-02 1.185e-02 8.270e-03 5.820e-03 - 4.238e-03 3.356e-03 3.074e-03 3.356e-03 4.238e-03 5.820e-03 - 8.270e-03 1.185e-02 1.684e-02 2.335e-02 3.107e-02 3.920e-02 - 4.341e-02 4.685e-02 4.685e-02 4.341e-02 3.742e-02 3.025e-02 - 2.313e-02 1.693e-02 1.201e-02 8.378e-03 5.820e-03 4.112e-03 - 3.084e-03 2.610e-03 2.610e-03 3.084e-03 4.112e-03 5.820e-03 - 8.378e-03 1.201e-02 1.693e-02 2.313e-02 3.025e-02 3.742e-02 - 3.892e-02 4.045e-02 3.892e-02 3.477e-02 2.903e-02 2.286e-02 - 1.714e-02 1.238e-02 8.723e-03 6.065e-03 4.238e-03 3.084e-03 - 2.467e-03 2.276e-03 2.467e-03 3.084e-03 4.238e-03 6.065e-03 - 8.723e-03 1.238e-02 1.714e-02 2.286e-02 2.903e-02 3.477e-02 - 3.401e-02 3.401e-02 3.163e-02 2.748e-02 2.247e-02 1.744e-02 - 1.296e-02 9.326e-03 6.580e-03 4.635e-03 3.356e-03 2.610e-03 - 2.276e-03 2.276e-03 2.610e-03 3.356e-03 4.635e-03 6.580e-03 - 9.326e-03 1.296e-02 1.744e-02 2.247e-02 2.748e-02 3.163e-02 - 2.936e-02 2.838e-02 2.570e-02 2.191e-02 1.770e-02 1.366e-02 - 1.016e-02 7.387e-03 5.346e-03 3.948e-03 3.074e-03 2.610e-03 - 2.467e-03 2.610e-03 3.074e-03 3.948e-03 5.346e-03 7.387e-03 - 1.016e-02 1.366e-02 1.770e-02 2.191e-02 2.570e-02 2.838e-02 - 2.524e-02 2.375e-02 2.110e-02 1.780e-02 1.435e-02 1.116e-02 - 8.487e-03 6.424e-03 4.940e-03 3.948e-03 3.356e-03 3.084e-03 - 3.084e-03 3.356e-03 3.948e-03 4.940e-03 6.424e-03 8.487e-03 - 1.116e-02 1.435e-02 1.780e-02 2.110e-02 2.375e-02 2.524e-02 - 2.171e-02 2.007e-02 1.770e-02 1.498e-02 1.228e-02 9.883e-03 - 7.921e-03 6.424e-03 5.346e-03 4.635e-03 4.238e-03 4.112e-03 - 4.238e-03 4.635e-03 5.346e-03 6.424e-03 7.921e-03 9.883e-03 - 1.228e-02 1.498e-02 1.770e-02 2.007e-02 2.171e-02 2.230e-02 - 1.893e-02 1.744e-02 1.554e-02 1.351e-02 1.157e-02 9.883e-03 - 8.487e-03 7.387e-03 6.580e-03 6.065e-03 5.820e-03 5.820e-03 - 6.065e-03 6.580e-03 7.387e-03 8.487e-03 9.883e-03 1.157e-02 - 1.351e-02 1.554e-02 1.744e-02 1.893e-02 1.975e-02 1.975e-02 - 1.714e-02 1.606e-02 1.480e-02 1.351e-02 1.228e-02 1.116e-02 - 1.016e-02 9.326e-03 8.723e-03 8.378e-03 8.270e-03 8.378e-03 - 8.723e-03 9.326e-03 1.016e-02 1.116e-02 1.228e-02 1.351e-02 - 1.480e-02 1.606e-02 1.714e-02 1.789e-02 1.816e-02 1.789e-02 - 1.653e-02 1.606e-02 1.554e-02 1.498e-02 1.435e-02 1.366e-02 - 1.296e-02 1.238e-02 1.201e-02 1.185e-02 1.185e-02 1.201e-02 - 1.238e-02 1.296e-02 1.366e-02 1.435e-02 1.498e-02 1.554e-02 - 1.606e-02 1.653e-02 1.693e-02 1.717e-02 1.717e-02 1.693e-02 - 1.714e-02 1.744e-02 1.770e-02 1.780e-02 1.770e-02 1.744e-02 - 1.714e-02 1.693e-02 1.684e-02 1.682e-02 1.684e-02 1.693e-02 - 1.714e-02 1.744e-02 1.770e-02 1.780e-02 1.770e-02 1.744e-02 - 1.714e-02 1.693e-02 1.684e-02 1.682e-02 1.684e-02 1.693e-02 - 1.893e-02 2.007e-02 2.110e-02 2.191e-02 2.247e-02 2.286e-02 - 2.313e-02 2.335e-02 2.348e-02 2.348e-02 2.335e-02 2.313e-02 - 2.286e-02 2.247e-02 2.191e-02 2.110e-02 2.007e-02 1.893e-02 - 1.789e-02 1.717e-02 1.682e-02 1.682e-02 1.717e-02 1.789e-02 - 2.171e-02 2.375e-02 2.570e-02 2.748e-02 2.903e-02 3.025e-02 - 3.107e-02 3.151e-02 3.165e-02 3.151e-02 3.107e-02 3.025e-02 - 2.903e-02 2.748e-02 2.570e-02 2.375e-02 2.171e-02 1.975e-02 - 1.816e-02 1.717e-02 1.684e-02 1.717e-02 1.816e-02 1.975e-02 - 2.524e-02 2.838e-02 3.163e-02 3.477e-02 3.742e-02 3.920e-02 - 4.006e-02 4.032e-02 4.032e-02 4.006e-02 3.920e-02 3.742e-02 - 3.477e-02 3.163e-02 2.838e-02 2.524e-02 2.230e-02 1.975e-02 - 1.789e-02 1.693e-02 1.693e-02 1.789e-02 1.975e-02 2.230e-02 - 2.589e-02 3.122e-02 3.728e-02 4.341e-02 4.868e-02 5.237e-02 - 5.421e-02 5.421e-02 5.237e-02 4.868e-02 4.341e-02 3.728e-02 - 3.122e-02 2.589e-02 2.145e-02 1.781e-02 1.495e-02 1.296e-02 - 1.196e-02 1.196e-02 1.296e-02 1.495e-02 1.781e-02 2.145e-02 - 3.122e-02 3.872e-02 4.685e-02 5.436e-02 6.009e-02 6.353e-02 - 6.466e-02 6.353e-02 6.009e-02 5.436e-02 4.685e-02 3.872e-02 - 3.122e-02 2.502e-02 2.015e-02 1.639e-02 1.366e-02 1.198e-02 - 1.141e-02 1.198e-02 1.366e-02 1.639e-02 2.015e-02 2.502e-02 - 3.728e-02 4.685e-02 5.643e-02 6.446e-02 7.000e-02 7.277e-02 - 7.277e-02 7.000e-02 6.446e-02 5.643e-02 4.685e-02 3.728e-02 - 2.904e-02 2.263e-02 1.784e-02 1.435e-02 1.200e-02 1.081e-02 - 1.081e-02 1.200e-02 1.435e-02 1.784e-02 2.263e-02 2.904e-02 - 4.341e-02 5.436e-02 6.446e-02 7.233e-02 7.727e-02 7.896e-02 - 7.727e-02 7.233e-02 6.446e-02 5.436e-02 4.341e-02 3.333e-02 - 2.524e-02 1.926e-02 1.498e-02 1.201e-02 1.022e-02 9.620e-03 - 1.022e-02 1.201e-02 1.498e-02 1.926e-02 2.524e-02 3.333e-02 - 4.868e-02 6.009e-02 7.000e-02 7.727e-02 8.117e-02 8.117e-02 - 7.727e-02 7.000e-02 6.009e-02 4.868e-02 3.742e-02 2.787e-02 - 2.066e-02 1.554e-02 1.200e-02 9.698e-03 8.541e-03 8.541e-03 - 9.698e-03 1.200e-02 1.554e-02 2.066e-02 2.787e-02 3.742e-02 - 5.237e-02 6.353e-02 7.277e-02 7.896e-02 8.117e-02 7.896e-02 - 7.277e-02 6.353e-02 5.237e-02 4.073e-02 3.025e-02 2.199e-02 - 1.606e-02 1.198e-02 9.254e-03 7.650e-03 7.115e-03 7.650e-03 - 9.254e-03 1.198e-02 1.606e-02 2.199e-02 3.025e-02 4.073e-02 - 5.421e-02 6.466e-02 7.277e-02 7.727e-02 7.727e-02 7.277e-02 - 6.466e-02 5.421e-02 4.283e-02 3.206e-02 2.313e-02 1.653e-02 - 1.196e-02 8.892e-03 6.959e-03 6.008e-03 6.008e-03 6.959e-03 - 8.892e-03 1.196e-02 1.653e-02 2.313e-02 3.206e-02 4.283e-02 - 5.421e-02 6.353e-02 7.000e-02 7.233e-02 7.000e-02 6.353e-02 - 5.421e-02 4.355e-02 3.303e-02 2.393e-02 1.693e-02 1.197e-02 - 8.621e-03 6.445e-03 5.200e-03 4.792e-03 5.200e-03 6.445e-03 - 8.621e-03 1.197e-02 1.693e-02 2.393e-02 3.303e-02 4.355e-02 - 5.237e-02 6.009e-02 6.446e-02 6.446e-02 6.009e-02 5.237e-02 - 4.283e-02 3.303e-02 2.422e-02 1.717e-02 1.201e-02 8.453e-03 - 6.091e-03 4.638e-03 3.945e-03 3.945e-03 4.638e-03 6.091e-03 - 8.453e-03 1.201e-02 1.717e-02 2.422e-02 3.303e-02 4.283e-02 - 4.868e-02 5.436e-02 5.643e-02 5.436e-02 4.868e-02 4.073e-02 - 3.206e-02 2.393e-02 1.717e-02 1.203e-02 8.378e-03 5.886e-03 - 4.284e-03 3.394e-03 3.110e-03 3.394e-03 4.284e-03 5.886e-03 - 8.378e-03 1.203e-02 1.717e-02 2.393e-02 3.206e-02 4.073e-02 - 4.341e-02 4.685e-02 4.685e-02 4.341e-02 3.742e-02 3.025e-02 - 2.313e-02 1.693e-02 1.201e-02 8.378e-03 5.820e-03 4.112e-03 - 3.084e-03 2.610e-03 2.610e-03 3.084e-03 4.112e-03 5.820e-03 - 8.378e-03 1.201e-02 1.693e-02 2.313e-02 3.025e-02 3.742e-02 - 3.728e-02 3.872e-02 3.728e-02 3.333e-02 2.787e-02 2.199e-02 - 1.653e-02 1.197e-02 8.453e-03 5.886e-03 4.112e-03 2.984e-03 - 2.378e-03 2.190e-03 2.378e-03 2.984e-03 4.112e-03 5.886e-03 - 8.453e-03 1.197e-02 1.653e-02 2.199e-02 2.787e-02 3.333e-02 - 3.122e-02 3.122e-02 2.904e-02 2.524e-02 2.066e-02 1.606e-02 - 1.196e-02 8.621e-03 6.091e-03 4.284e-03 3.084e-03 2.378e-03 - 2.060e-03 2.060e-03 2.378e-03 3.084e-03 4.284e-03 6.091e-03 - 8.621e-03 1.196e-02 1.606e-02 2.066e-02 2.524e-02 2.904e-02 - 2.589e-02 2.502e-02 2.263e-02 1.926e-02 1.554e-02 1.198e-02 - 8.892e-03 6.445e-03 4.638e-03 3.394e-03 2.610e-03 2.190e-03 - 2.060e-03 2.190e-03 2.610e-03 3.394e-03 4.638e-03 6.445e-03 - 8.892e-03 1.198e-02 1.554e-02 1.926e-02 2.263e-02 2.502e-02 - 2.145e-02 2.015e-02 1.784e-02 1.498e-02 1.200e-02 9.254e-03 - 6.959e-03 5.200e-03 3.945e-03 3.110e-03 2.610e-03 2.378e-03 - 2.378e-03 2.610e-03 3.110e-03 3.945e-03 5.200e-03 6.959e-03 - 9.254e-03 1.200e-02 1.498e-02 1.784e-02 2.015e-02 2.145e-02 - 1.781e-02 1.639e-02 1.435e-02 1.201e-02 9.698e-03 7.650e-03 - 6.008e-03 4.792e-03 3.945e-03 3.394e-03 3.084e-03 2.984e-03 - 3.084e-03 3.394e-03 3.945e-03 4.792e-03 6.008e-03 7.650e-03 - 9.698e-03 1.201e-02 1.435e-02 1.639e-02 1.781e-02 1.832e-02 - 1.495e-02 1.366e-02 1.200e-02 1.022e-02 8.541e-03 7.115e-03 - 6.008e-03 5.200e-03 4.638e-03 4.284e-03 4.112e-03 4.112e-03 - 4.284e-03 4.638e-03 5.200e-03 6.008e-03 7.115e-03 8.541e-03 - 1.022e-02 1.200e-02 1.366e-02 1.495e-02 1.566e-02 1.566e-02 - 1.296e-02 1.198e-02 1.081e-02 9.620e-03 8.541e-03 7.650e-03 - 6.959e-03 6.445e-03 6.091e-03 5.886e-03 5.820e-03 5.886e-03 - 6.091e-03 6.445e-03 6.959e-03 7.650e-03 8.541e-03 9.620e-03 - 1.081e-02 1.198e-02 1.296e-02 1.363e-02 1.386e-02 1.363e-02 - 1.196e-02 1.141e-02 1.081e-02 1.022e-02 9.698e-03 9.254e-03 - 8.892e-03 8.621e-03 8.453e-03 8.378e-03 8.378e-03 8.453e-03 - 8.621e-03 8.892e-03 9.254e-03 9.698e-03 1.022e-02 1.081e-02 - 1.141e-02 1.196e-02 1.238e-02 1.262e-02 1.262e-02 1.238e-02 - 1.196e-02 1.198e-02 1.200e-02 1.201e-02 1.200e-02 1.198e-02 - 1.196e-02 1.197e-02 1.201e-02 1.203e-02 1.201e-02 1.197e-02 - 1.196e-02 1.198e-02 1.200e-02 1.201e-02 1.200e-02 1.198e-02 - 1.196e-02 1.197e-02 1.201e-02 1.203e-02 1.201e-02 1.197e-02 - 1.296e-02 1.366e-02 1.435e-02 1.498e-02 1.554e-02 1.606e-02 - 1.653e-02 1.693e-02 1.717e-02 1.717e-02 1.693e-02 1.653e-02 - 1.606e-02 1.554e-02 1.498e-02 1.435e-02 1.366e-02 1.296e-02 - 1.238e-02 1.201e-02 1.185e-02 1.185e-02 1.201e-02 1.238e-02 - 1.495e-02 1.639e-02 1.784e-02 1.926e-02 2.066e-02 2.199e-02 - 2.313e-02 2.393e-02 2.422e-02 2.393e-02 2.313e-02 2.199e-02 - 2.066e-02 1.926e-02 1.784e-02 1.639e-02 1.495e-02 1.363e-02 - 1.262e-02 1.203e-02 1.185e-02 1.203e-02 1.262e-02 1.363e-02 - 1.781e-02 2.015e-02 2.263e-02 2.524e-02 2.787e-02 3.025e-02 - 3.206e-02 3.303e-02 3.303e-02 3.206e-02 3.025e-02 2.787e-02 - 2.524e-02 2.263e-02 2.015e-02 1.781e-02 1.566e-02 1.386e-02 - 1.262e-02 1.201e-02 1.201e-02 1.262e-02 1.386e-02 1.566e-02 - 2.145e-02 2.502e-02 2.904e-02 3.333e-02 3.742e-02 4.073e-02 - 4.283e-02 4.355e-02 4.283e-02 4.073e-02 3.742e-02 3.333e-02 - 2.904e-02 2.502e-02 2.145e-02 1.832e-02 1.566e-02 1.363e-02 - 1.238e-02 1.197e-02 1.238e-02 1.363e-02 1.566e-02 1.832e-02 - 2.464e-02 3.122e-02 3.892e-02 4.693e-02 5.398e-02 5.881e-02 - 6.053e-02 5.881e-02 5.398e-02 4.693e-02 3.892e-02 3.122e-02 - 2.464e-02 1.942e-02 1.538e-02 1.232e-02 1.016e-02 8.892e-03 - 8.479e-03 8.892e-03 1.016e-02 1.232e-02 1.538e-02 1.942e-02 - 3.122e-02 4.045e-02 5.077e-02 6.074e-02 6.863e-02 7.300e-02 - 7.300e-02 6.863e-02 6.074e-02 5.077e-02 4.045e-02 3.122e-02 - 2.381e-02 1.822e-02 1.411e-02 1.116e-02 9.254e-03 8.324e-03 - 8.324e-03 9.254e-03 1.116e-02 1.411e-02 1.822e-02 2.381e-02 - 3.892e-02 5.077e-02 6.323e-02 7.430e-02 8.198e-02 8.473e-02 - 8.198e-02 7.430e-02 6.323e-02 5.077e-02 3.892e-02 2.904e-02 - 2.153e-02 1.612e-02 1.228e-02 9.698e-03 8.199e-03 7.708e-03 - 8.199e-03 9.698e-03 1.228e-02 1.612e-02 2.153e-02 2.904e-02 - 4.693e-02 6.074e-02 7.430e-02 8.528e-02 9.146e-02 9.146e-02 - 8.528e-02 7.430e-02 6.074e-02 4.693e-02 3.477e-02 2.524e-02 - 1.833e-02 1.351e-02 1.022e-02 8.149e-03 7.143e-03 7.143e-03 - 8.149e-03 1.022e-02 1.351e-02 1.833e-02 2.524e-02 3.477e-02 - 5.398e-02 6.863e-02 8.198e-02 9.146e-02 9.491e-02 9.146e-02 - 8.198e-02 6.863e-02 5.398e-02 4.029e-02 2.903e-02 2.066e-02 - 1.480e-02 1.081e-02 8.199e-03 6.706e-03 6.220e-03 6.706e-03 - 8.199e-03 1.081e-02 1.480e-02 2.066e-02 2.903e-02 4.029e-02 - 5.881e-02 7.300e-02 8.473e-02 9.146e-02 9.146e-02 8.473e-02 - 7.300e-02 5.881e-02 4.466e-02 3.238e-02 2.286e-02 1.606e-02 - 1.141e-02 8.324e-03 6.418e-03 5.505e-03 5.505e-03 6.418e-03 - 8.324e-03 1.141e-02 1.606e-02 2.286e-02 3.238e-02 4.466e-02 - 6.053e-02 7.300e-02 8.198e-02 8.528e-02 8.198e-02 7.300e-02 - 6.053e-02 4.707e-02 3.469e-02 2.460e-02 1.714e-02 1.196e-02 - 8.479e-03 6.247e-03 4.997e-03 4.595e-03 4.997e-03 6.247e-03 - 8.479e-03 1.196e-02 1.714e-02 2.460e-02 3.469e-02 4.707e-02 - 5.881e-02 6.863e-02 7.430e-02 7.430e-02 6.863e-02 5.881e-02 - 4.707e-02 3.552e-02 2.558e-02 1.789e-02 1.238e-02 8.621e-03 - 6.148e-03 4.651e-03 3.948e-03 3.948e-03 4.651e-03 6.148e-03 - 8.621e-03 1.238e-02 1.789e-02 2.558e-02 3.552e-02 4.707e-02 - 5.398e-02 6.074e-02 6.323e-02 6.074e-02 5.398e-02 4.466e-02 - 3.469e-02 2.558e-02 1.816e-02 1.262e-02 8.723e-03 6.091e-03 - 4.420e-03 3.506e-03 3.218e-03 3.506e-03 4.420e-03 6.091e-03 - 8.723e-03 1.262e-02 1.816e-02 2.558e-02 3.469e-02 4.466e-02 - 4.693e-02 5.077e-02 5.077e-02 4.693e-02 4.029e-02 3.238e-02 - 2.460e-02 1.789e-02 1.262e-02 8.760e-03 6.065e-03 4.284e-03 - 3.224e-03 2.739e-03 2.739e-03 3.224e-03 4.284e-03 6.065e-03 - 8.760e-03 1.262e-02 1.789e-02 2.460e-02 3.238e-02 4.029e-02 - 3.892e-02 4.045e-02 3.892e-02 3.477e-02 2.903e-02 2.286e-02 - 1.714e-02 1.238e-02 8.723e-03 6.065e-03 4.238e-03 3.084e-03 - 2.467e-03 2.276e-03 2.467e-03 3.084e-03 4.238e-03 6.065e-03 - 8.723e-03 1.238e-02 1.714e-02 2.286e-02 2.903e-02 3.477e-02 - 3.122e-02 3.122e-02 2.904e-02 2.524e-02 2.066e-02 1.606e-02 - 1.196e-02 8.621e-03 6.091e-03 4.284e-03 3.084e-03 2.378e-03 - 2.060e-03 2.060e-03 2.378e-03 3.084e-03 4.284e-03 6.091e-03 - 8.621e-03 1.196e-02 1.606e-02 2.066e-02 2.524e-02 2.904e-02 - 2.464e-02 2.381e-02 2.153e-02 1.833e-02 1.480e-02 1.141e-02 - 8.479e-03 6.148e-03 4.420e-03 3.224e-03 2.467e-03 2.060e-03 - 1.933e-03 2.060e-03 2.467e-03 3.224e-03 4.420e-03 6.148e-03 - 8.479e-03 1.141e-02 1.480e-02 1.833e-02 2.153e-02 2.381e-02 - 1.942e-02 1.822e-02 1.612e-02 1.351e-02 1.081e-02 8.324e-03 - 6.247e-03 4.651e-03 3.506e-03 2.739e-03 2.276e-03 2.060e-03 - 2.060e-03 2.276e-03 2.739e-03 3.506e-03 4.651e-03 6.247e-03 - 8.324e-03 1.081e-02 1.351e-02 1.612e-02 1.822e-02 1.942e-02 - 1.538e-02 1.411e-02 1.228e-02 1.022e-02 8.199e-03 6.418e-03 - 4.997e-03 3.948e-03 3.218e-03 2.739e-03 2.467e-03 2.378e-03 - 2.467e-03 2.739e-03 3.218e-03 3.948e-03 4.997e-03 6.418e-03 - 8.199e-03 1.022e-02 1.228e-02 1.411e-02 1.538e-02 1.584e-02 - 1.232e-02 1.116e-02 9.698e-03 8.149e-03 6.706e-03 5.505e-03 - 4.595e-03 3.948e-03 3.506e-03 3.224e-03 3.084e-03 3.084e-03 - 3.224e-03 3.506e-03 3.948e-03 4.595e-03 5.505e-03 6.706e-03 - 8.149e-03 9.698e-03 1.116e-02 1.232e-02 1.297e-02 1.297e-02 - 1.016e-02 9.254e-03 8.199e-03 7.143e-03 6.220e-03 5.505e-03 - 4.997e-03 4.651e-03 4.420e-03 4.284e-03 4.238e-03 4.284e-03 - 4.420e-03 4.651e-03 4.997e-03 5.505e-03 6.220e-03 7.143e-03 - 8.199e-03 9.254e-03 1.016e-02 1.078e-02 1.100e-02 1.078e-02 - 8.892e-03 8.324e-03 7.708e-03 7.143e-03 6.706e-03 6.418e-03 - 6.247e-03 6.148e-03 6.091e-03 6.065e-03 6.065e-03 6.091e-03 - 6.148e-03 6.247e-03 6.418e-03 6.706e-03 7.143e-03 7.708e-03 - 8.324e-03 8.892e-03 9.326e-03 9.563e-03 9.563e-03 9.326e-03 - 8.479e-03 8.324e-03 8.199e-03 8.149e-03 8.199e-03 8.324e-03 - 8.479e-03 8.621e-03 8.723e-03 8.760e-03 8.723e-03 8.621e-03 - 8.479e-03 8.324e-03 8.199e-03 8.149e-03 8.199e-03 8.324e-03 - 8.479e-03 8.621e-03 8.723e-03 8.760e-03 8.723e-03 8.621e-03 - 8.892e-03 9.254e-03 9.698e-03 1.022e-02 1.081e-02 1.141e-02 - 1.196e-02 1.238e-02 1.262e-02 1.262e-02 1.238e-02 1.196e-02 - 1.141e-02 1.081e-02 1.022e-02 9.698e-03 9.254e-03 8.892e-03 - 8.621e-03 8.453e-03 8.378e-03 8.378e-03 8.453e-03 8.621e-03 - 1.016e-02 1.116e-02 1.228e-02 1.351e-02 1.480e-02 1.606e-02 - 1.714e-02 1.789e-02 1.816e-02 1.789e-02 1.714e-02 1.606e-02 - 1.480e-02 1.351e-02 1.228e-02 1.116e-02 1.016e-02 9.326e-03 - 8.723e-03 8.378e-03 8.270e-03 8.378e-03 8.723e-03 9.326e-03 - 1.232e-02 1.411e-02 1.612e-02 1.833e-02 2.066e-02 2.286e-02 - 2.460e-02 2.558e-02 2.558e-02 2.460e-02 2.286e-02 2.066e-02 - 1.833e-02 1.612e-02 1.411e-02 1.232e-02 1.078e-02 9.563e-03 - 8.760e-03 8.378e-03 8.378e-03 8.760e-03 9.563e-03 1.078e-02 - 1.538e-02 1.822e-02 2.153e-02 2.524e-02 2.903e-02 3.238e-02 - 3.469e-02 3.552e-02 3.469e-02 3.238e-02 2.903e-02 2.524e-02 - 2.153e-02 1.822e-02 1.538e-02 1.297e-02 1.100e-02 9.563e-03 - 8.723e-03 8.453e-03 8.723e-03 9.563e-03 1.100e-02 1.297e-02 - 1.942e-02 2.381e-02 2.904e-02 3.477e-02 4.029e-02 4.466e-02 - 4.707e-02 4.707e-02 4.466e-02 4.029e-02 3.477e-02 2.904e-02 - 2.381e-02 1.942e-02 1.584e-02 1.297e-02 1.078e-02 9.326e-03 - 8.621e-03 8.621e-03 9.326e-03 1.078e-02 1.297e-02 1.584e-02 - 2.589e-02 3.401e-02 4.330e-02 5.260e-02 6.025e-02 6.459e-02 - 6.459e-02 6.025e-02 5.260e-02 4.330e-02 3.401e-02 2.589e-02 - 1.942e-02 1.453e-02 1.096e-02 8.487e-03 6.959e-03 6.247e-03 - 6.247e-03 6.959e-03 8.487e-03 1.096e-02 1.453e-02 1.942e-02 - 3.401e-02 4.501e-02 5.700e-02 6.809e-02 7.603e-02 7.892e-02 - 7.603e-02 6.809e-02 5.700e-02 4.501e-02 3.401e-02 2.502e-02 - 1.822e-02 1.331e-02 9.883e-03 7.650e-03 6.418e-03 6.030e-03 - 6.418e-03 7.650e-03 9.883e-03 1.331e-02 1.822e-02 2.502e-02 - 4.330e-02 5.700e-02 7.099e-02 8.268e-02 8.941e-02 8.941e-02 - 8.268e-02 7.099e-02 5.700e-02 4.330e-02 3.163e-02 2.263e-02 - 1.612e-02 1.157e-02 8.541e-03 6.706e-03 5.856e-03 5.856e-03 - 6.706e-03 8.541e-03 1.157e-02 1.612e-02 2.263e-02 3.163e-02 - 5.260e-02 6.809e-02 8.268e-02 9.329e-02 9.719e-02 9.329e-02 - 8.268e-02 6.809e-02 5.260e-02 3.864e-02 2.748e-02 1.926e-02 - 1.351e-02 9.620e-03 7.143e-03 5.788e-03 5.361e-03 5.788e-03 - 7.143e-03 9.620e-03 1.351e-02 1.926e-02 2.748e-02 3.864e-02 - 6.025e-02 7.603e-02 8.941e-02 9.719e-02 9.719e-02 8.941e-02 - 7.603e-02 6.025e-02 4.502e-02 3.221e-02 2.247e-02 1.554e-02 - 1.081e-02 7.708e-03 5.856e-03 5.001e-03 5.001e-03 5.856e-03 - 7.708e-03 1.081e-02 1.554e-02 2.247e-02 3.221e-02 4.502e-02 - 6.459e-02 7.892e-02 8.941e-02 9.329e-02 8.941e-02 7.892e-02 - 6.459e-02 4.953e-02 3.604e-02 2.531e-02 1.744e-02 1.198e-02 - 8.324e-03 6.030e-03 4.789e-03 4.400e-03 4.789e-03 6.030e-03 - 8.324e-03 1.198e-02 1.744e-02 2.531e-02 3.604e-02 4.953e-02 - 6.459e-02 7.603e-02 8.268e-02 8.268e-02 7.603e-02 6.459e-02 - 5.116e-02 3.820e-02 2.728e-02 1.893e-02 1.296e-02 8.892e-03 - 6.247e-03 4.689e-03 3.979e-03 3.979e-03 4.689e-03 6.247e-03 - 8.892e-03 1.296e-02 1.893e-02 2.728e-02 3.820e-02 5.116e-02 - 6.025e-02 6.809e-02 7.099e-02 6.809e-02 6.025e-02 4.953e-02 - 3.820e-02 2.799e-02 1.975e-02 1.363e-02 9.326e-03 6.445e-03 - 4.651e-03 3.695e-03 3.399e-03 3.695e-03 4.651e-03 6.445e-03 - 9.326e-03 1.363e-02 1.975e-02 2.799e-02 3.820e-02 4.953e-02 - 5.260e-02 5.700e-02 5.700e-02 5.260e-02 4.502e-02 3.604e-02 - 2.728e-02 1.975e-02 1.386e-02 9.563e-03 6.580e-03 4.638e-03 - 3.506e-03 2.998e-03 2.998e-03 3.506e-03 4.638e-03 6.580e-03 - 9.563e-03 1.386e-02 1.975e-02 2.728e-02 3.604e-02 4.502e-02 - 4.330e-02 4.501e-02 4.330e-02 3.864e-02 3.221e-02 2.531e-02 - 1.893e-02 1.363e-02 9.563e-03 6.629e-03 4.635e-03 3.394e-03 - 2.739e-03 2.539e-03 2.739e-03 3.394e-03 4.635e-03 6.629e-03 - 9.563e-03 1.363e-02 1.893e-02 2.531e-02 3.221e-02 3.864e-02 - 3.401e-02 3.401e-02 3.163e-02 2.748e-02 2.247e-02 1.744e-02 - 1.296e-02 9.326e-03 6.580e-03 4.635e-03 3.356e-03 2.610e-03 - 2.276e-03 2.276e-03 2.610e-03 3.356e-03 4.635e-03 6.580e-03 - 9.326e-03 1.296e-02 1.744e-02 2.247e-02 2.748e-02 3.163e-02 - 2.589e-02 2.502e-02 2.263e-02 1.926e-02 1.554e-02 1.198e-02 - 8.892e-03 6.445e-03 4.638e-03 3.394e-03 2.610e-03 2.190e-03 - 2.060e-03 2.190e-03 2.610e-03 3.394e-03 4.638e-03 6.445e-03 - 8.892e-03 1.198e-02 1.554e-02 1.926e-02 2.263e-02 2.502e-02 - 1.942e-02 1.822e-02 1.612e-02 1.351e-02 1.081e-02 8.324e-03 - 6.247e-03 4.651e-03 3.506e-03 2.739e-03 2.276e-03 2.060e-03 - 2.060e-03 2.276e-03 2.739e-03 3.506e-03 4.651e-03 6.247e-03 - 8.324e-03 1.081e-02 1.351e-02 1.612e-02 1.822e-02 1.942e-02 - 1.453e-02 1.331e-02 1.157e-02 9.620e-03 7.708e-03 6.030e-03 - 4.689e-03 3.695e-03 2.998e-03 2.539e-03 2.276e-03 2.190e-03 - 2.276e-03 2.539e-03 2.998e-03 3.695e-03 4.689e-03 6.030e-03 - 7.708e-03 9.620e-03 1.157e-02 1.331e-02 1.453e-02 1.498e-02 - 1.096e-02 9.883e-03 8.541e-03 7.143e-03 5.856e-03 4.789e-03 - 3.979e-03 3.399e-03 2.998e-03 2.739e-03 2.610e-03 2.610e-03 - 2.739e-03 2.998e-03 3.399e-03 3.979e-03 4.789e-03 5.856e-03 - 7.143e-03 8.541e-03 9.883e-03 1.096e-02 1.158e-02 1.158e-02 - 8.487e-03 7.650e-03 6.706e-03 5.788e-03 5.001e-03 4.400e-03 - 3.979e-03 3.695e-03 3.506e-03 3.394e-03 3.356e-03 3.394e-03 - 3.506e-03 3.695e-03 3.979e-03 4.400e-03 5.001e-03 5.788e-03 - 6.706e-03 7.650e-03 8.487e-03 9.073e-03 9.285e-03 9.073e-03 - 6.959e-03 6.418e-03 5.856e-03 5.361e-03 5.001e-03 4.789e-03 - 4.689e-03 4.651e-03 4.638e-03 4.635e-03 4.635e-03 4.638e-03 - 4.651e-03 4.689e-03 4.789e-03 5.001e-03 5.361e-03 5.856e-03 - 6.418e-03 6.959e-03 7.387e-03 7.626e-03 7.626e-03 7.387e-03 - 6.247e-03 6.030e-03 5.856e-03 5.788e-03 5.856e-03 6.030e-03 - 6.247e-03 6.445e-03 6.580e-03 6.629e-03 6.580e-03 6.445e-03 - 6.247e-03 6.030e-03 5.856e-03 5.788e-03 5.856e-03 6.030e-03 - 6.247e-03 6.445e-03 6.580e-03 6.629e-03 6.580e-03 6.445e-03 - 6.247e-03 6.418e-03 6.706e-03 7.143e-03 7.708e-03 8.324e-03 - 8.892e-03 9.326e-03 9.563e-03 9.563e-03 9.326e-03 8.892e-03 - 8.324e-03 7.708e-03 7.143e-03 6.706e-03 6.418e-03 6.247e-03 - 6.148e-03 6.091e-03 6.065e-03 6.065e-03 6.091e-03 6.148e-03 - 6.959e-03 7.650e-03 8.541e-03 9.620e-03 1.081e-02 1.198e-02 - 1.296e-02 1.363e-02 1.386e-02 1.363e-02 1.296e-02 1.198e-02 - 1.081e-02 9.620e-03 8.541e-03 7.650e-03 6.959e-03 6.445e-03 - 6.091e-03 5.886e-03 5.820e-03 5.886e-03 6.091e-03 6.445e-03 - 8.487e-03 9.883e-03 1.157e-02 1.351e-02 1.554e-02 1.744e-02 - 1.893e-02 1.975e-02 1.975e-02 1.893e-02 1.744e-02 1.554e-02 - 1.351e-02 1.157e-02 9.883e-03 8.487e-03 7.387e-03 6.580e-03 - 6.065e-03 5.820e-03 5.820e-03 6.065e-03 6.580e-03 7.387e-03 - 1.096e-02 1.331e-02 1.612e-02 1.926e-02 2.247e-02 2.531e-02 - 2.728e-02 2.799e-02 2.728e-02 2.531e-02 2.247e-02 1.926e-02 - 1.612e-02 1.331e-02 1.096e-02 9.073e-03 7.626e-03 6.629e-03 - 6.065e-03 5.886e-03 6.065e-03 6.629e-03 7.626e-03 9.073e-03 - 1.453e-02 1.822e-02 2.263e-02 2.748e-02 3.221e-02 3.604e-02 - 3.820e-02 3.820e-02 3.604e-02 3.221e-02 2.748e-02 2.263e-02 - 1.822e-02 1.453e-02 1.158e-02 9.285e-03 7.626e-03 6.580e-03 - 6.091e-03 6.091e-03 6.580e-03 7.626e-03 9.285e-03 1.158e-02 - 1.942e-02 2.502e-02 3.163e-02 3.864e-02 4.502e-02 4.953e-02 - 5.116e-02 4.953e-02 4.502e-02 3.864e-02 3.163e-02 2.502e-02 - 1.942e-02 1.498e-02 1.158e-02 9.073e-03 7.387e-03 6.445e-03 - 6.148e-03 6.445e-03 7.387e-03 9.073e-03 1.158e-02 1.498e-02 - 2.936e-02 3.895e-02 4.939e-02 5.911e-02 6.613e-02 6.870e-02 - 6.613e-02 5.911e-02 4.939e-02 3.895e-02 2.936e-02 2.145e-02 - 1.538e-02 1.096e-02 7.921e-03 6.008e-03 4.997e-03 4.689e-03 - 4.997e-03 6.008e-03 7.921e-03 1.096e-02 1.538e-02 2.145e-02 - 3.895e-02 5.133e-02 6.404e-02 7.478e-02 8.099e-02 8.099e-02 - 7.478e-02 6.404e-02 5.133e-02 3.895e-02 2.838e-02 2.015e-02 - 1.411e-02 9.883e-03 7.115e-03 5.505e-03 4.789e-03 4.789e-03 - 5.505e-03 7.115e-03 9.883e-03 1.411e-02 2.015e-02 2.838e-02 - 4.939e-02 6.404e-02 7.798e-02 8.818e-02 9.194e-02 8.818e-02 - 7.798e-02 6.404e-02 4.939e-02 3.625e-02 2.570e-02 1.784e-02 - 1.228e-02 8.541e-03 6.220e-03 5.001e-03 4.629e-03 5.001e-03 - 6.220e-03 8.541e-03 1.228e-02 1.784e-02 2.570e-02 3.625e-02 - 5.911e-02 7.478e-02 8.818e-02 9.600e-02 9.600e-02 8.818e-02 - 7.478e-02 5.911e-02 4.411e-02 3.153e-02 2.191e-02 1.498e-02 - 1.022e-02 7.143e-03 5.361e-03 4.569e-03 4.569e-03 5.361e-03 - 7.143e-03 1.022e-02 1.498e-02 2.191e-02 3.153e-02 4.411e-02 - 6.613e-02 8.099e-02 9.194e-02 9.600e-02 9.194e-02 8.099e-02 - 6.613e-02 5.061e-02 3.681e-02 2.582e-02 1.770e-02 1.200e-02 - 8.199e-03 5.856e-03 4.629e-03 4.255e-03 4.629e-03 5.856e-03 - 8.199e-03 1.200e-02 1.770e-02 2.582e-02 3.681e-02 5.061e-02 - 6.870e-02 8.099e-02 8.818e-02 8.818e-02 8.099e-02 6.870e-02 - 5.434e-02 4.056e-02 2.897e-02 2.007e-02 1.366e-02 9.254e-03 - 6.418e-03 4.789e-03 4.068e-03 4.068e-03 4.789e-03 6.418e-03 - 9.254e-03 1.366e-02 2.007e-02 2.897e-02 4.056e-02 5.434e-02 - 6.613e-02 7.478e-02 7.798e-02 7.478e-02 6.613e-02 5.434e-02 - 4.192e-02 3.074e-02 2.171e-02 1.495e-02 1.016e-02 6.959e-03 - 4.997e-03 3.979e-03 3.671e-03 3.979e-03 4.997e-03 6.959e-03 - 1.016e-02 1.495e-02 2.171e-02 3.074e-02 4.192e-02 5.434e-02 - 5.911e-02 6.404e-02 6.404e-02 5.911e-02 5.061e-02 4.056e-02 - 3.074e-02 2.230e-02 1.566e-02 1.078e-02 7.387e-03 5.200e-03 - 3.948e-03 3.399e-03 3.399e-03 3.948e-03 5.200e-03 7.387e-03 - 1.078e-02 1.566e-02 2.230e-02 3.074e-02 4.056e-02 5.061e-02 - 4.939e-02 5.133e-02 4.939e-02 4.411e-02 3.681e-02 2.897e-02 - 2.171e-02 1.566e-02 1.100e-02 7.626e-03 5.346e-03 3.945e-03 - 3.218e-03 2.998e-03 3.218e-03 3.945e-03 5.346e-03 7.626e-03 - 1.100e-02 1.566e-02 2.171e-02 2.897e-02 3.681e-02 4.411e-02 - 3.895e-02 3.895e-02 3.625e-02 3.153e-02 2.582e-02 2.007e-02 - 1.495e-02 1.078e-02 7.626e-03 5.400e-03 3.948e-03 3.110e-03 - 2.739e-03 2.739e-03 3.110e-03 3.948e-03 5.400e-03 7.626e-03 - 1.078e-02 1.495e-02 2.007e-02 2.582e-02 3.153e-02 3.625e-02 - 2.936e-02 2.838e-02 2.570e-02 2.191e-02 1.770e-02 1.366e-02 - 1.016e-02 7.387e-03 5.346e-03 3.948e-03 3.074e-03 2.610e-03 - 2.467e-03 2.610e-03 3.074e-03 3.948e-03 5.346e-03 7.387e-03 - 1.016e-02 1.366e-02 1.770e-02 2.191e-02 2.570e-02 2.838e-02 - 2.145e-02 2.015e-02 1.784e-02 1.498e-02 1.200e-02 9.254e-03 - 6.959e-03 5.200e-03 3.945e-03 3.110e-03 2.610e-03 2.378e-03 - 2.378e-03 2.610e-03 3.110e-03 3.945e-03 5.200e-03 6.959e-03 - 9.254e-03 1.200e-02 1.498e-02 1.784e-02 2.015e-02 2.145e-02 - 1.538e-02 1.411e-02 1.228e-02 1.022e-02 8.199e-03 6.418e-03 - 4.997e-03 3.948e-03 3.218e-03 2.739e-03 2.467e-03 2.378e-03 - 2.467e-03 2.739e-03 3.218e-03 3.948e-03 4.997e-03 6.418e-03 - 8.199e-03 1.022e-02 1.228e-02 1.411e-02 1.538e-02 1.584e-02 - 1.096e-02 9.883e-03 8.541e-03 7.143e-03 5.856e-03 4.789e-03 - 3.979e-03 3.399e-03 2.998e-03 2.739e-03 2.610e-03 2.610e-03 - 2.739e-03 2.998e-03 3.399e-03 3.979e-03 4.789e-03 5.856e-03 - 7.143e-03 8.541e-03 9.883e-03 1.096e-02 1.158e-02 1.158e-02 - 7.921e-03 7.115e-03 6.220e-03 5.361e-03 4.629e-03 4.068e-03 - 3.671e-03 3.399e-03 3.218e-03 3.110e-03 3.074e-03 3.110e-03 - 3.218e-03 3.399e-03 3.671e-03 4.068e-03 4.629e-03 5.361e-03 - 6.220e-03 7.115e-03 7.921e-03 8.494e-03 8.703e-03 8.494e-03 - 6.008e-03 5.505e-03 5.001e-03 4.569e-03 4.255e-03 4.068e-03 - 3.979e-03 3.948e-03 3.945e-03 3.948e-03 3.948e-03 3.945e-03 - 3.948e-03 3.979e-03 4.068e-03 4.255e-03 4.569e-03 5.001e-03 - 5.505e-03 6.008e-03 6.424e-03 6.662e-03 6.662e-03 6.424e-03 - 4.997e-03 4.789e-03 4.629e-03 4.569e-03 4.629e-03 4.789e-03 - 4.997e-03 5.200e-03 5.346e-03 5.400e-03 5.346e-03 5.200e-03 - 4.997e-03 4.789e-03 4.629e-03 4.569e-03 4.629e-03 4.789e-03 - 4.997e-03 5.200e-03 5.346e-03 5.400e-03 5.346e-03 5.200e-03 - 4.689e-03 4.789e-03 5.001e-03 5.361e-03 5.856e-03 6.418e-03 - 6.959e-03 7.387e-03 7.626e-03 7.626e-03 7.387e-03 6.959e-03 - 6.418e-03 5.856e-03 5.361e-03 5.001e-03 4.789e-03 4.689e-03 - 4.651e-03 4.638e-03 4.635e-03 4.635e-03 4.638e-03 4.651e-03 - 4.997e-03 5.505e-03 6.220e-03 7.143e-03 8.199e-03 9.254e-03 - 1.016e-02 1.078e-02 1.100e-02 1.078e-02 1.016e-02 9.254e-03 - 8.199e-03 7.143e-03 6.220e-03 5.505e-03 4.997e-03 4.651e-03 - 4.420e-03 4.284e-03 4.238e-03 4.284e-03 4.420e-03 4.651e-03 - 6.008e-03 7.115e-03 8.541e-03 1.022e-02 1.200e-02 1.366e-02 - 1.495e-02 1.566e-02 1.566e-02 1.495e-02 1.366e-02 1.200e-02 - 1.022e-02 8.541e-03 7.115e-03 6.008e-03 5.200e-03 4.638e-03 - 4.284e-03 4.112e-03 4.112e-03 4.284e-03 4.638e-03 5.200e-03 - 7.921e-03 9.883e-03 1.228e-02 1.498e-02 1.770e-02 2.007e-02 - 2.171e-02 2.230e-02 2.171e-02 2.007e-02 1.770e-02 1.498e-02 - 1.228e-02 9.883e-03 7.921e-03 6.424e-03 5.346e-03 4.635e-03 - 4.238e-03 4.112e-03 4.238e-03 4.635e-03 5.346e-03 6.424e-03 - 1.096e-02 1.411e-02 1.784e-02 2.191e-02 2.582e-02 2.897e-02 - 3.074e-02 3.074e-02 2.897e-02 2.582e-02 2.191e-02 1.784e-02 - 1.411e-02 1.096e-02 8.494e-03 6.662e-03 5.400e-03 4.635e-03 - 4.284e-03 4.284e-03 4.635e-03 5.400e-03 6.662e-03 8.494e-03 - 1.538e-02 2.015e-02 2.570e-02 3.153e-02 3.681e-02 4.056e-02 - 4.192e-02 4.056e-02 3.681e-02 3.153e-02 2.570e-02 2.015e-02 - 1.538e-02 1.158e-02 8.703e-03 6.662e-03 5.346e-03 4.638e-03 - 4.420e-03 4.638e-03 5.346e-03 6.662e-03 8.703e-03 1.158e-02 - 2.145e-02 2.838e-02 3.625e-02 4.411e-02 5.061e-02 5.434e-02 - 5.434e-02 5.061e-02 4.411e-02 3.625e-02 2.838e-02 2.145e-02 - 1.584e-02 1.158e-02 8.494e-03 6.424e-03 5.200e-03 4.651e-03 - 4.651e-03 5.200e-03 6.424e-03 8.494e-03 1.158e-02 1.584e-02 - 3.468e-02 4.565e-02 5.689e-02 6.639e-02 7.190e-02 7.190e-02 - 6.639e-02 5.689e-02 4.565e-02 3.468e-02 2.524e-02 1.781e-02 - 1.232e-02 8.487e-03 6.008e-03 4.595e-03 3.979e-03 3.979e-03 - 4.595e-03 6.008e-03 8.487e-03 1.232e-02 1.781e-02 2.524e-02 - 4.565e-02 5.911e-02 7.190e-02 8.128e-02 8.475e-02 8.128e-02 - 7.190e-02 5.911e-02 4.565e-02 3.354e-02 2.375e-02 1.639e-02 - 1.116e-02 7.650e-03 5.505e-03 4.400e-03 4.068e-03 4.400e-03 - 5.505e-03 7.650e-03 1.116e-02 1.639e-02 2.375e-02 3.354e-02 - 5.689e-02 7.190e-02 8.475e-02 9.227e-02 9.227e-02 8.475e-02 - 7.190e-02 5.689e-02 4.252e-02 3.042e-02 2.110e-02 1.435e-02 - 9.698e-03 6.706e-03 5.001e-03 4.255e-03 4.255e-03 5.001e-03 - 6.706e-03 9.698e-03 1.435e-02 2.110e-02 3.042e-02 4.252e-02 - 6.639e-02 8.128e-02 9.227e-02 9.634e-02 9.227e-02 8.128e-02 - 6.639e-02 5.086e-02 3.705e-02 2.600e-02 1.780e-02 1.201e-02 - 8.149e-03 5.788e-03 4.569e-03 4.201e-03 4.569e-03 5.788e-03 - 8.149e-03 1.201e-02 1.780e-02 2.600e-02 3.705e-02 5.086e-02 - 7.190e-02 8.475e-02 9.227e-02 9.227e-02 8.475e-02 7.190e-02 - 5.689e-02 4.252e-02 3.042e-02 2.110e-02 1.435e-02 9.698e-03 - 6.706e-03 5.001e-03 4.255e-03 4.255e-03 5.001e-03 6.706e-03 - 9.698e-03 1.435e-02 2.110e-02 3.042e-02 4.252e-02 5.689e-02 - 7.190e-02 8.128e-02 8.475e-02 8.128e-02 7.190e-02 5.911e-02 - 4.565e-02 3.354e-02 2.375e-02 1.639e-02 1.116e-02 7.650e-03 - 5.505e-03 4.400e-03 4.068e-03 4.400e-03 5.505e-03 7.650e-03 - 1.116e-02 1.639e-02 2.375e-02 3.354e-02 4.565e-02 5.911e-02 - 6.639e-02 7.190e-02 7.190e-02 6.639e-02 5.689e-02 4.565e-02 - 3.468e-02 2.524e-02 1.781e-02 1.232e-02 8.487e-03 6.008e-03 - 4.595e-03 3.979e-03 3.979e-03 4.595e-03 6.008e-03 8.487e-03 - 1.232e-02 1.781e-02 2.524e-02 3.468e-02 4.565e-02 5.689e-02 - 5.689e-02 5.911e-02 5.689e-02 5.086e-02 4.252e-02 3.354e-02 - 2.524e-02 1.832e-02 1.297e-02 9.073e-03 6.424e-03 4.792e-03 - 3.948e-03 3.695e-03 3.948e-03 4.792e-03 6.424e-03 9.073e-03 - 1.297e-02 1.832e-02 2.524e-02 3.354e-02 4.252e-02 5.086e-02 - 4.565e-02 4.565e-02 4.252e-02 3.705e-02 3.042e-02 2.375e-02 - 1.781e-02 1.297e-02 9.285e-03 6.662e-03 4.940e-03 3.945e-03 - 3.506e-03 3.506e-03 3.945e-03 4.940e-03 6.662e-03 9.285e-03 - 1.297e-02 1.781e-02 2.375e-02 3.042e-02 3.705e-02 4.252e-02 - 3.468e-02 3.354e-02 3.042e-02 2.600e-02 2.110e-02 1.639e-02 - 1.232e-02 9.073e-03 6.662e-03 4.995e-03 3.948e-03 3.394e-03 - 3.224e-03 3.394e-03 3.948e-03 4.995e-03 6.662e-03 9.073e-03 - 1.232e-02 1.639e-02 2.110e-02 2.600e-02 3.042e-02 3.354e-02 - 2.524e-02 2.375e-02 2.110e-02 1.780e-02 1.435e-02 1.116e-02 - 8.487e-03 6.424e-03 4.940e-03 3.948e-03 3.356e-03 3.084e-03 - 3.084e-03 3.356e-03 3.948e-03 4.940e-03 6.424e-03 8.487e-03 - 1.116e-02 1.435e-02 1.780e-02 2.110e-02 2.375e-02 2.524e-02 - 1.781e-02 1.639e-02 1.435e-02 1.201e-02 9.698e-03 7.650e-03 - 6.008e-03 4.792e-03 3.945e-03 3.394e-03 3.084e-03 2.984e-03 - 3.084e-03 3.394e-03 3.945e-03 4.792e-03 6.008e-03 7.650e-03 - 9.698e-03 1.201e-02 1.435e-02 1.639e-02 1.781e-02 1.832e-02 - 1.232e-02 1.116e-02 9.698e-03 8.149e-03 6.706e-03 5.505e-03 - 4.595e-03 3.948e-03 3.506e-03 3.224e-03 3.084e-03 3.084e-03 - 3.224e-03 3.506e-03 3.948e-03 4.595e-03 5.505e-03 6.706e-03 - 8.149e-03 9.698e-03 1.116e-02 1.232e-02 1.297e-02 1.297e-02 - 8.487e-03 7.650e-03 6.706e-03 5.788e-03 5.001e-03 4.400e-03 - 3.979e-03 3.695e-03 3.506e-03 3.394e-03 3.356e-03 3.394e-03 - 3.506e-03 3.695e-03 3.979e-03 4.400e-03 5.001e-03 5.788e-03 - 6.706e-03 7.650e-03 8.487e-03 9.073e-03 9.285e-03 9.073e-03 - 6.008e-03 5.505e-03 5.001e-03 4.569e-03 4.255e-03 4.068e-03 - 3.979e-03 3.948e-03 3.945e-03 3.948e-03 3.948e-03 3.945e-03 - 3.948e-03 3.979e-03 4.068e-03 4.255e-03 4.569e-03 5.001e-03 - 5.505e-03 6.008e-03 6.424e-03 6.662e-03 6.662e-03 6.424e-03 - 4.595e-03 4.400e-03 4.255e-03 4.201e-03 4.255e-03 4.400e-03 - 4.595e-03 4.792e-03 4.940e-03 4.995e-03 4.940e-03 4.792e-03 - 4.595e-03 4.400e-03 4.255e-03 4.201e-03 4.255e-03 4.400e-03 - 4.595e-03 4.792e-03 4.940e-03 4.995e-03 4.940e-03 4.792e-03 - 3.979e-03 4.068e-03 4.255e-03 4.569e-03 5.001e-03 5.505e-03 - 6.008e-03 6.424e-03 6.662e-03 6.662e-03 6.424e-03 6.008e-03 - 5.505e-03 5.001e-03 4.569e-03 4.255e-03 4.068e-03 3.979e-03 - 3.948e-03 3.945e-03 3.948e-03 3.948e-03 3.945e-03 3.948e-03 - 3.979e-03 4.400e-03 5.001e-03 5.788e-03 6.706e-03 7.650e-03 - 8.487e-03 9.073e-03 9.285e-03 9.073e-03 8.487e-03 7.650e-03 - 6.706e-03 5.788e-03 5.001e-03 4.400e-03 3.979e-03 3.695e-03 - 3.506e-03 3.394e-03 3.356e-03 3.394e-03 3.506e-03 3.695e-03 - 4.595e-03 5.505e-03 6.706e-03 8.149e-03 9.698e-03 1.116e-02 - 1.232e-02 1.297e-02 1.297e-02 1.232e-02 1.116e-02 9.698e-03 - 8.149e-03 6.706e-03 5.505e-03 4.595e-03 3.948e-03 3.506e-03 - 3.224e-03 3.084e-03 3.084e-03 3.224e-03 3.506e-03 3.948e-03 - 6.008e-03 7.650e-03 9.698e-03 1.201e-02 1.435e-02 1.639e-02 - 1.781e-02 1.832e-02 1.781e-02 1.639e-02 1.435e-02 1.201e-02 - 9.698e-03 7.650e-03 6.008e-03 4.792e-03 3.945e-03 3.394e-03 - 3.084e-03 2.984e-03 3.084e-03 3.394e-03 3.945e-03 4.792e-03 - 8.487e-03 1.116e-02 1.435e-02 1.780e-02 2.110e-02 2.375e-02 - 2.524e-02 2.524e-02 2.375e-02 2.110e-02 1.780e-02 1.435e-02 - 1.116e-02 8.487e-03 6.424e-03 4.940e-03 3.948e-03 3.356e-03 - 3.084e-03 3.084e-03 3.356e-03 3.948e-03 4.940e-03 6.424e-03 - 1.232e-02 1.639e-02 2.110e-02 2.600e-02 3.042e-02 3.354e-02 - 3.468e-02 3.354e-02 3.042e-02 2.600e-02 2.110e-02 1.639e-02 - 1.232e-02 9.073e-03 6.662e-03 4.995e-03 3.948e-03 3.394e-03 - 3.224e-03 3.394e-03 3.948e-03 4.995e-03 6.662e-03 9.073e-03 - 1.781e-02 2.375e-02 3.042e-02 3.705e-02 4.252e-02 4.565e-02 - 4.565e-02 4.252e-02 3.705e-02 3.042e-02 2.375e-02 1.781e-02 - 1.297e-02 9.285e-03 6.662e-03 4.940e-03 3.945e-03 3.506e-03 - 3.506e-03 3.945e-03 4.940e-03 6.662e-03 9.285e-03 1.297e-02 - 2.524e-02 3.354e-02 4.252e-02 5.086e-02 5.689e-02 5.911e-02 - 5.689e-02 5.086e-02 4.252e-02 3.354e-02 2.524e-02 1.832e-02 - 1.297e-02 9.073e-03 6.424e-03 4.792e-03 3.948e-03 3.695e-03 - 3.948e-03 4.792e-03 6.424e-03 9.073e-03 1.297e-02 1.832e-02 - 4.192e-02 5.434e-02 6.613e-02 7.478e-02 7.798e-02 7.478e-02 - 6.613e-02 5.434e-02 4.192e-02 3.074e-02 2.171e-02 1.495e-02 - 1.016e-02 6.959e-03 4.997e-03 3.979e-03 3.671e-03 3.979e-03 - 4.997e-03 6.959e-03 1.016e-02 1.495e-02 2.171e-02 3.074e-02 - 5.434e-02 6.870e-02 8.099e-02 8.818e-02 8.818e-02 8.099e-02 - 6.870e-02 5.434e-02 4.056e-02 2.897e-02 2.007e-02 1.366e-02 - 9.254e-03 6.418e-03 4.789e-03 4.068e-03 4.068e-03 4.789e-03 - 6.418e-03 9.254e-03 1.366e-02 2.007e-02 2.897e-02 4.056e-02 - 6.613e-02 8.099e-02 9.194e-02 9.600e-02 9.194e-02 8.099e-02 - 6.613e-02 5.061e-02 3.681e-02 2.582e-02 1.770e-02 1.200e-02 - 8.199e-03 5.856e-03 4.629e-03 4.255e-03 4.629e-03 5.856e-03 - 8.199e-03 1.200e-02 1.770e-02 2.582e-02 3.681e-02 5.061e-02 - 7.478e-02 8.818e-02 9.600e-02 9.600e-02 8.818e-02 7.478e-02 - 5.911e-02 4.411e-02 3.153e-02 2.191e-02 1.498e-02 1.022e-02 - 7.143e-03 5.361e-03 4.569e-03 4.569e-03 5.361e-03 7.143e-03 - 1.022e-02 1.498e-02 2.191e-02 3.153e-02 4.411e-02 5.911e-02 - 7.798e-02 8.818e-02 9.194e-02 8.818e-02 7.798e-02 6.404e-02 - 4.939e-02 3.625e-02 2.570e-02 1.784e-02 1.228e-02 8.541e-03 - 6.220e-03 5.001e-03 4.629e-03 5.001e-03 6.220e-03 8.541e-03 - 1.228e-02 1.784e-02 2.570e-02 3.625e-02 4.939e-02 6.404e-02 - 7.478e-02 8.099e-02 8.099e-02 7.478e-02 6.404e-02 5.133e-02 - 3.895e-02 2.838e-02 2.015e-02 1.411e-02 9.883e-03 7.115e-03 - 5.505e-03 4.789e-03 4.789e-03 5.505e-03 7.115e-03 9.883e-03 - 1.411e-02 2.015e-02 2.838e-02 3.895e-02 5.133e-02 6.404e-02 - 6.613e-02 6.870e-02 6.613e-02 5.911e-02 4.939e-02 3.895e-02 - 2.936e-02 2.145e-02 1.538e-02 1.096e-02 7.921e-03 6.008e-03 - 4.997e-03 4.689e-03 4.997e-03 6.008e-03 7.921e-03 1.096e-02 - 1.538e-02 2.145e-02 2.936e-02 3.895e-02 4.939e-02 5.911e-02 - 5.434e-02 5.434e-02 5.061e-02 4.411e-02 3.625e-02 2.838e-02 - 2.145e-02 1.584e-02 1.158e-02 8.494e-03 6.424e-03 5.200e-03 - 4.651e-03 4.651e-03 5.200e-03 6.424e-03 8.494e-03 1.158e-02 - 1.584e-02 2.145e-02 2.838e-02 3.625e-02 4.411e-02 5.061e-02 - 4.192e-02 4.056e-02 3.681e-02 3.153e-02 2.570e-02 2.015e-02 - 1.538e-02 1.158e-02 8.703e-03 6.662e-03 5.346e-03 4.638e-03 - 4.420e-03 4.638e-03 5.346e-03 6.662e-03 8.703e-03 1.158e-02 - 1.538e-02 2.015e-02 2.570e-02 3.153e-02 3.681e-02 4.056e-02 - 3.074e-02 2.897e-02 2.582e-02 2.191e-02 1.784e-02 1.411e-02 - 1.096e-02 8.494e-03 6.662e-03 5.400e-03 4.635e-03 4.284e-03 - 4.284e-03 4.635e-03 5.400e-03 6.662e-03 8.494e-03 1.096e-02 - 1.411e-02 1.784e-02 2.191e-02 2.582e-02 2.897e-02 3.074e-02 - 2.171e-02 2.007e-02 1.770e-02 1.498e-02 1.228e-02 9.883e-03 - 7.921e-03 6.424e-03 5.346e-03 4.635e-03 4.238e-03 4.112e-03 - 4.238e-03 4.635e-03 5.346e-03 6.424e-03 7.921e-03 9.883e-03 - 1.228e-02 1.498e-02 1.770e-02 2.007e-02 2.171e-02 2.230e-02 - 1.495e-02 1.366e-02 1.200e-02 1.022e-02 8.541e-03 7.115e-03 - 6.008e-03 5.200e-03 4.638e-03 4.284e-03 4.112e-03 4.112e-03 - 4.284e-03 4.638e-03 5.200e-03 6.008e-03 7.115e-03 8.541e-03 - 1.022e-02 1.200e-02 1.366e-02 1.495e-02 1.566e-02 1.566e-02 - 1.016e-02 9.254e-03 8.199e-03 7.143e-03 6.220e-03 5.505e-03 - 4.997e-03 4.651e-03 4.420e-03 4.284e-03 4.238e-03 4.284e-03 - 4.420e-03 4.651e-03 4.997e-03 5.505e-03 6.220e-03 7.143e-03 - 8.199e-03 9.254e-03 1.016e-02 1.078e-02 1.100e-02 1.078e-02 - 6.959e-03 6.418e-03 5.856e-03 5.361e-03 5.001e-03 4.789e-03 - 4.689e-03 4.651e-03 4.638e-03 4.635e-03 4.635e-03 4.638e-03 - 4.651e-03 4.689e-03 4.789e-03 5.001e-03 5.361e-03 5.856e-03 - 6.418e-03 6.959e-03 7.387e-03 7.626e-03 7.626e-03 7.387e-03 - 4.997e-03 4.789e-03 4.629e-03 4.569e-03 4.629e-03 4.789e-03 - 4.997e-03 5.200e-03 5.346e-03 5.400e-03 5.346e-03 5.200e-03 - 4.997e-03 4.789e-03 4.629e-03 4.569e-03 4.629e-03 4.789e-03 - 4.997e-03 5.200e-03 5.346e-03 5.400e-03 5.346e-03 5.200e-03 - 3.979e-03 4.068e-03 4.255e-03 4.569e-03 5.001e-03 5.505e-03 - 6.008e-03 6.424e-03 6.662e-03 6.662e-03 6.424e-03 6.008e-03 - 5.505e-03 5.001e-03 4.569e-03 4.255e-03 4.068e-03 3.979e-03 - 3.948e-03 3.945e-03 3.948e-03 3.948e-03 3.945e-03 3.948e-03 - 3.671e-03 4.068e-03 4.629e-03 5.361e-03 6.220e-03 7.115e-03 - 7.921e-03 8.494e-03 8.703e-03 8.494e-03 7.921e-03 7.115e-03 - 6.220e-03 5.361e-03 4.629e-03 4.068e-03 3.671e-03 3.399e-03 - 3.218e-03 3.110e-03 3.074e-03 3.110e-03 3.218e-03 3.399e-03 - 3.979e-03 4.789e-03 5.856e-03 7.143e-03 8.541e-03 9.883e-03 - 1.096e-02 1.158e-02 1.158e-02 1.096e-02 9.883e-03 8.541e-03 - 7.143e-03 5.856e-03 4.789e-03 3.979e-03 3.399e-03 2.998e-03 - 2.739e-03 2.610e-03 2.610e-03 2.739e-03 2.998e-03 3.399e-03 - 4.997e-03 6.418e-03 8.199e-03 1.022e-02 1.228e-02 1.411e-02 - 1.538e-02 1.584e-02 1.538e-02 1.411e-02 1.228e-02 1.022e-02 - 8.199e-03 6.418e-03 4.997e-03 3.948e-03 3.218e-03 2.739e-03 - 2.467e-03 2.378e-03 2.467e-03 2.739e-03 3.218e-03 3.948e-03 - 6.959e-03 9.254e-03 1.200e-02 1.498e-02 1.784e-02 2.015e-02 - 2.145e-02 2.145e-02 2.015e-02 1.784e-02 1.498e-02 1.200e-02 - 9.254e-03 6.959e-03 5.200e-03 3.945e-03 3.110e-03 2.610e-03 - 2.378e-03 2.378e-03 2.610e-03 3.110e-03 3.945e-03 5.200e-03 - 1.016e-02 1.366e-02 1.770e-02 2.191e-02 2.570e-02 2.838e-02 - 2.936e-02 2.838e-02 2.570e-02 2.191e-02 1.770e-02 1.366e-02 - 1.016e-02 7.387e-03 5.346e-03 3.948e-03 3.074e-03 2.610e-03 - 2.467e-03 2.610e-03 3.074e-03 3.948e-03 5.346e-03 7.387e-03 - 1.495e-02 2.007e-02 2.582e-02 3.153e-02 3.625e-02 3.895e-02 - 3.895e-02 3.625e-02 3.153e-02 2.582e-02 2.007e-02 1.495e-02 - 1.078e-02 7.626e-03 5.400e-03 3.948e-03 3.110e-03 2.739e-03 - 2.739e-03 3.110e-03 3.948e-03 5.400e-03 7.626e-03 1.078e-02 - 2.171e-02 2.897e-02 3.681e-02 4.411e-02 4.939e-02 5.133e-02 - 4.939e-02 4.411e-02 3.681e-02 2.897e-02 2.171e-02 1.566e-02 - 1.100e-02 7.626e-03 5.346e-03 3.945e-03 3.218e-03 2.998e-03 - 3.218e-03 3.945e-03 5.346e-03 7.626e-03 1.100e-02 1.566e-02 - 3.074e-02 4.056e-02 5.061e-02 5.911e-02 6.404e-02 6.404e-02 - 5.911e-02 5.061e-02 4.056e-02 3.074e-02 2.230e-02 1.566e-02 - 1.078e-02 7.387e-03 5.200e-03 3.948e-03 3.399e-03 3.399e-03 - 3.948e-03 5.200e-03 7.387e-03 1.078e-02 1.566e-02 2.230e-02 - 5.116e-02 6.459e-02 7.603e-02 8.268e-02 8.268e-02 7.603e-02 - 6.459e-02 5.116e-02 3.820e-02 2.728e-02 1.893e-02 1.296e-02 - 8.892e-03 6.247e-03 4.689e-03 3.979e-03 3.979e-03 4.689e-03 - 6.247e-03 8.892e-03 1.296e-02 1.893e-02 2.728e-02 3.820e-02 - 6.459e-02 7.892e-02 8.941e-02 9.329e-02 8.941e-02 7.892e-02 - 6.459e-02 4.953e-02 3.604e-02 2.531e-02 1.744e-02 1.198e-02 - 8.324e-03 6.030e-03 4.789e-03 4.400e-03 4.789e-03 6.030e-03 - 8.324e-03 1.198e-02 1.744e-02 2.531e-02 3.604e-02 4.953e-02 - 7.603e-02 8.941e-02 9.719e-02 9.719e-02 8.941e-02 7.603e-02 - 6.025e-02 4.502e-02 3.221e-02 2.247e-02 1.554e-02 1.081e-02 - 7.708e-03 5.856e-03 5.001e-03 5.001e-03 5.856e-03 7.708e-03 - 1.081e-02 1.554e-02 2.247e-02 3.221e-02 4.502e-02 6.025e-02 - 8.268e-02 9.329e-02 9.719e-02 9.329e-02 8.268e-02 6.809e-02 - 5.260e-02 3.864e-02 2.748e-02 1.926e-02 1.351e-02 9.620e-03 - 7.143e-03 5.788e-03 5.361e-03 5.788e-03 7.143e-03 9.620e-03 - 1.351e-02 1.926e-02 2.748e-02 3.864e-02 5.260e-02 6.809e-02 - 8.268e-02 8.941e-02 8.941e-02 8.268e-02 7.099e-02 5.700e-02 - 4.330e-02 3.163e-02 2.263e-02 1.612e-02 1.157e-02 8.541e-03 - 6.706e-03 5.856e-03 5.856e-03 6.706e-03 8.541e-03 1.157e-02 - 1.612e-02 2.263e-02 3.163e-02 4.330e-02 5.700e-02 7.099e-02 - 7.603e-02 7.892e-02 7.603e-02 6.809e-02 5.700e-02 4.501e-02 - 3.401e-02 2.502e-02 1.822e-02 1.331e-02 9.883e-03 7.650e-03 - 6.418e-03 6.030e-03 6.418e-03 7.650e-03 9.883e-03 1.331e-02 - 1.822e-02 2.502e-02 3.401e-02 4.501e-02 5.700e-02 6.809e-02 - 6.459e-02 6.459e-02 6.025e-02 5.260e-02 4.330e-02 3.401e-02 - 2.589e-02 1.942e-02 1.453e-02 1.096e-02 8.487e-03 6.959e-03 - 6.247e-03 6.247e-03 6.959e-03 8.487e-03 1.096e-02 1.453e-02 - 1.942e-02 2.589e-02 3.401e-02 4.330e-02 5.260e-02 6.025e-02 - 5.116e-02 4.953e-02 4.502e-02 3.864e-02 3.163e-02 2.502e-02 - 1.942e-02 1.498e-02 1.158e-02 9.073e-03 7.387e-03 6.445e-03 - 6.148e-03 6.445e-03 7.387e-03 9.073e-03 1.158e-02 1.498e-02 - 1.942e-02 2.502e-02 3.163e-02 3.864e-02 4.502e-02 4.953e-02 - 3.820e-02 3.604e-02 3.221e-02 2.748e-02 2.263e-02 1.822e-02 - 1.453e-02 1.158e-02 9.285e-03 7.626e-03 6.580e-03 6.091e-03 - 6.091e-03 6.580e-03 7.626e-03 9.285e-03 1.158e-02 1.453e-02 - 1.822e-02 2.263e-02 2.748e-02 3.221e-02 3.604e-02 3.820e-02 - 2.728e-02 2.531e-02 2.247e-02 1.926e-02 1.612e-02 1.331e-02 - 1.096e-02 9.073e-03 7.626e-03 6.629e-03 6.065e-03 5.886e-03 - 6.065e-03 6.629e-03 7.626e-03 9.073e-03 1.096e-02 1.331e-02 - 1.612e-02 1.926e-02 2.247e-02 2.531e-02 2.728e-02 2.799e-02 - 1.893e-02 1.744e-02 1.554e-02 1.351e-02 1.157e-02 9.883e-03 - 8.487e-03 7.387e-03 6.580e-03 6.065e-03 5.820e-03 5.820e-03 - 6.065e-03 6.580e-03 7.387e-03 8.487e-03 9.883e-03 1.157e-02 - 1.351e-02 1.554e-02 1.744e-02 1.893e-02 1.975e-02 1.975e-02 - 1.296e-02 1.198e-02 1.081e-02 9.620e-03 8.541e-03 7.650e-03 - 6.959e-03 6.445e-03 6.091e-03 5.886e-03 5.820e-03 5.886e-03 - 6.091e-03 6.445e-03 6.959e-03 7.650e-03 8.541e-03 9.620e-03 - 1.081e-02 1.198e-02 1.296e-02 1.363e-02 1.386e-02 1.363e-02 - 8.892e-03 8.324e-03 7.708e-03 7.143e-03 6.706e-03 6.418e-03 - 6.247e-03 6.148e-03 6.091e-03 6.065e-03 6.065e-03 6.091e-03 - 6.148e-03 6.247e-03 6.418e-03 6.706e-03 7.143e-03 7.708e-03 - 8.324e-03 8.892e-03 9.326e-03 9.563e-03 9.563e-03 9.326e-03 - 6.247e-03 6.030e-03 5.856e-03 5.788e-03 5.856e-03 6.030e-03 - 6.247e-03 6.445e-03 6.580e-03 6.629e-03 6.580e-03 6.445e-03 - 6.247e-03 6.030e-03 5.856e-03 5.788e-03 5.856e-03 6.030e-03 - 6.247e-03 6.445e-03 6.580e-03 6.629e-03 6.580e-03 6.445e-03 - 4.689e-03 4.789e-03 5.001e-03 5.361e-03 5.856e-03 6.418e-03 - 6.959e-03 7.387e-03 7.626e-03 7.626e-03 7.387e-03 6.959e-03 - 6.418e-03 5.856e-03 5.361e-03 5.001e-03 4.789e-03 4.689e-03 - 4.651e-03 4.638e-03 4.635e-03 4.635e-03 4.638e-03 4.651e-03 - 3.979e-03 4.400e-03 5.001e-03 5.788e-03 6.706e-03 7.650e-03 - 8.487e-03 9.073e-03 9.285e-03 9.073e-03 8.487e-03 7.650e-03 - 6.706e-03 5.788e-03 5.001e-03 4.400e-03 3.979e-03 3.695e-03 - 3.506e-03 3.394e-03 3.356e-03 3.394e-03 3.506e-03 3.695e-03 - 3.979e-03 4.789e-03 5.856e-03 7.143e-03 8.541e-03 9.883e-03 - 1.096e-02 1.158e-02 1.158e-02 1.096e-02 9.883e-03 8.541e-03 - 7.143e-03 5.856e-03 4.789e-03 3.979e-03 3.399e-03 2.998e-03 - 2.739e-03 2.610e-03 2.610e-03 2.739e-03 2.998e-03 3.399e-03 - 4.689e-03 6.030e-03 7.708e-03 9.620e-03 1.157e-02 1.331e-02 - 1.453e-02 1.498e-02 1.453e-02 1.331e-02 1.157e-02 9.620e-03 - 7.708e-03 6.030e-03 4.689e-03 3.695e-03 2.998e-03 2.539e-03 - 2.276e-03 2.190e-03 2.276e-03 2.539e-03 2.998e-03 3.695e-03 - 6.247e-03 8.324e-03 1.081e-02 1.351e-02 1.612e-02 1.822e-02 - 1.942e-02 1.942e-02 1.822e-02 1.612e-02 1.351e-02 1.081e-02 - 8.324e-03 6.247e-03 4.651e-03 3.506e-03 2.739e-03 2.276e-03 - 2.060e-03 2.060e-03 2.276e-03 2.739e-03 3.506e-03 4.651e-03 - 8.892e-03 1.198e-02 1.554e-02 1.926e-02 2.263e-02 2.502e-02 - 2.589e-02 2.502e-02 2.263e-02 1.926e-02 1.554e-02 1.198e-02 - 8.892e-03 6.445e-03 4.638e-03 3.394e-03 2.610e-03 2.190e-03 - 2.060e-03 2.190e-03 2.610e-03 3.394e-03 4.638e-03 6.445e-03 - 1.296e-02 1.744e-02 2.247e-02 2.748e-02 3.163e-02 3.401e-02 - 3.401e-02 3.163e-02 2.748e-02 2.247e-02 1.744e-02 1.296e-02 - 9.326e-03 6.580e-03 4.635e-03 3.356e-03 2.610e-03 2.276e-03 - 2.276e-03 2.610e-03 3.356e-03 4.635e-03 6.580e-03 9.326e-03 - 1.893e-02 2.531e-02 3.221e-02 3.864e-02 4.330e-02 4.501e-02 - 4.330e-02 3.864e-02 3.221e-02 2.531e-02 1.893e-02 1.363e-02 - 9.563e-03 6.629e-03 4.635e-03 3.394e-03 2.739e-03 2.539e-03 - 2.739e-03 3.394e-03 4.635e-03 6.629e-03 9.563e-03 1.363e-02 - 2.728e-02 3.604e-02 4.502e-02 5.260e-02 5.700e-02 5.700e-02 - 5.260e-02 4.502e-02 3.604e-02 2.728e-02 1.975e-02 1.386e-02 - 9.563e-03 6.580e-03 4.638e-03 3.506e-03 2.998e-03 2.998e-03 - 3.506e-03 4.638e-03 6.580e-03 9.563e-03 1.386e-02 1.975e-02 - 3.820e-02 4.953e-02 6.025e-02 6.809e-02 7.099e-02 6.809e-02 - 6.025e-02 4.953e-02 3.820e-02 2.799e-02 1.975e-02 1.363e-02 - 9.326e-03 6.445e-03 4.651e-03 3.695e-03 3.399e-03 3.695e-03 - 4.651e-03 6.445e-03 9.326e-03 1.363e-02 1.975e-02 2.799e-02 - 6.053e-02 7.300e-02 8.198e-02 8.528e-02 8.198e-02 7.300e-02 - 6.053e-02 4.707e-02 3.469e-02 2.460e-02 1.714e-02 1.196e-02 - 8.479e-03 6.247e-03 4.997e-03 4.595e-03 4.997e-03 6.247e-03 - 8.479e-03 1.196e-02 1.714e-02 2.460e-02 3.469e-02 4.707e-02 - 7.300e-02 8.473e-02 9.146e-02 9.146e-02 8.473e-02 7.300e-02 - 5.881e-02 4.466e-02 3.238e-02 2.286e-02 1.606e-02 1.141e-02 - 8.324e-03 6.418e-03 5.505e-03 5.505e-03 6.418e-03 8.324e-03 - 1.141e-02 1.606e-02 2.286e-02 3.238e-02 4.466e-02 5.881e-02 - 8.198e-02 9.146e-02 9.491e-02 9.146e-02 8.198e-02 6.863e-02 - 5.398e-02 4.029e-02 2.903e-02 2.066e-02 1.480e-02 1.081e-02 - 8.199e-03 6.706e-03 6.220e-03 6.706e-03 8.199e-03 1.081e-02 - 1.480e-02 2.066e-02 2.903e-02 4.029e-02 5.398e-02 6.863e-02 - 8.528e-02 9.146e-02 9.146e-02 8.528e-02 7.430e-02 6.074e-02 - 4.693e-02 3.477e-02 2.524e-02 1.833e-02 1.351e-02 1.022e-02 - 8.149e-03 7.143e-03 7.143e-03 8.149e-03 1.022e-02 1.351e-02 - 1.833e-02 2.524e-02 3.477e-02 4.693e-02 6.074e-02 7.430e-02 - 8.198e-02 8.473e-02 8.198e-02 7.430e-02 6.323e-02 5.077e-02 - 3.892e-02 2.904e-02 2.153e-02 1.612e-02 1.228e-02 9.698e-03 - 8.199e-03 7.708e-03 8.199e-03 9.698e-03 1.228e-02 1.612e-02 - 2.153e-02 2.904e-02 3.892e-02 5.077e-02 6.323e-02 7.430e-02 - 7.300e-02 7.300e-02 6.863e-02 6.074e-02 5.077e-02 4.045e-02 - 3.122e-02 2.381e-02 1.822e-02 1.411e-02 1.116e-02 9.254e-03 - 8.324e-03 8.324e-03 9.254e-03 1.116e-02 1.411e-02 1.822e-02 - 2.381e-02 3.122e-02 4.045e-02 5.077e-02 6.074e-02 6.863e-02 - 6.053e-02 5.881e-02 5.398e-02 4.693e-02 3.892e-02 3.122e-02 - 2.464e-02 1.942e-02 1.538e-02 1.232e-02 1.016e-02 8.892e-03 - 8.479e-03 8.892e-03 1.016e-02 1.232e-02 1.538e-02 1.942e-02 - 2.464e-02 3.122e-02 3.892e-02 4.693e-02 5.398e-02 5.881e-02 - 4.707e-02 4.466e-02 4.029e-02 3.477e-02 2.904e-02 2.381e-02 - 1.942e-02 1.584e-02 1.297e-02 1.078e-02 9.326e-03 8.621e-03 - 8.621e-03 9.326e-03 1.078e-02 1.297e-02 1.584e-02 1.942e-02 - 2.381e-02 2.904e-02 3.477e-02 4.029e-02 4.466e-02 4.707e-02 - 3.469e-02 3.238e-02 2.903e-02 2.524e-02 2.153e-02 1.822e-02 - 1.538e-02 1.297e-02 1.100e-02 9.563e-03 8.723e-03 8.453e-03 - 8.723e-03 9.563e-03 1.100e-02 1.297e-02 1.538e-02 1.822e-02 - 2.153e-02 2.524e-02 2.903e-02 3.238e-02 3.469e-02 3.552e-02 - 2.460e-02 2.286e-02 2.066e-02 1.833e-02 1.612e-02 1.411e-02 - 1.232e-02 1.078e-02 9.563e-03 8.760e-03 8.378e-03 8.378e-03 - 8.760e-03 9.563e-03 1.078e-02 1.232e-02 1.411e-02 1.612e-02 - 1.833e-02 2.066e-02 2.286e-02 2.460e-02 2.558e-02 2.558e-02 - 1.714e-02 1.606e-02 1.480e-02 1.351e-02 1.228e-02 1.116e-02 - 1.016e-02 9.326e-03 8.723e-03 8.378e-03 8.270e-03 8.378e-03 - 8.723e-03 9.326e-03 1.016e-02 1.116e-02 1.228e-02 1.351e-02 - 1.480e-02 1.606e-02 1.714e-02 1.789e-02 1.816e-02 1.789e-02 - 1.196e-02 1.141e-02 1.081e-02 1.022e-02 9.698e-03 9.254e-03 - 8.892e-03 8.621e-03 8.453e-03 8.378e-03 8.378e-03 8.453e-03 - 8.621e-03 8.892e-03 9.254e-03 9.698e-03 1.022e-02 1.081e-02 - 1.141e-02 1.196e-02 1.238e-02 1.262e-02 1.262e-02 1.238e-02 - 8.479e-03 8.324e-03 8.199e-03 8.149e-03 8.199e-03 8.324e-03 - 8.479e-03 8.621e-03 8.723e-03 8.760e-03 8.723e-03 8.621e-03 - 8.479e-03 8.324e-03 8.199e-03 8.149e-03 8.199e-03 8.324e-03 - 8.479e-03 8.621e-03 8.723e-03 8.760e-03 8.723e-03 8.621e-03 - 6.247e-03 6.418e-03 6.706e-03 7.143e-03 7.708e-03 8.324e-03 - 8.892e-03 9.326e-03 9.563e-03 9.563e-03 9.326e-03 8.892e-03 - 8.324e-03 7.708e-03 7.143e-03 6.706e-03 6.418e-03 6.247e-03 - 6.148e-03 6.091e-03 6.065e-03 6.065e-03 6.091e-03 6.148e-03 - 4.997e-03 5.505e-03 6.220e-03 7.143e-03 8.199e-03 9.254e-03 - 1.016e-02 1.078e-02 1.100e-02 1.078e-02 1.016e-02 9.254e-03 - 8.199e-03 7.143e-03 6.220e-03 5.505e-03 4.997e-03 4.651e-03 - 4.420e-03 4.284e-03 4.238e-03 4.284e-03 4.420e-03 4.651e-03 - 4.595e-03 5.505e-03 6.706e-03 8.149e-03 9.698e-03 1.116e-02 - 1.232e-02 1.297e-02 1.297e-02 1.232e-02 1.116e-02 9.698e-03 - 8.149e-03 6.706e-03 5.505e-03 4.595e-03 3.948e-03 3.506e-03 - 3.224e-03 3.084e-03 3.084e-03 3.224e-03 3.506e-03 3.948e-03 - 4.997e-03 6.418e-03 8.199e-03 1.022e-02 1.228e-02 1.411e-02 - 1.538e-02 1.584e-02 1.538e-02 1.411e-02 1.228e-02 1.022e-02 - 8.199e-03 6.418e-03 4.997e-03 3.948e-03 3.218e-03 2.739e-03 - 2.467e-03 2.378e-03 2.467e-03 2.739e-03 3.218e-03 3.948e-03 - 6.247e-03 8.324e-03 1.081e-02 1.351e-02 1.612e-02 1.822e-02 - 1.942e-02 1.942e-02 1.822e-02 1.612e-02 1.351e-02 1.081e-02 - 8.324e-03 6.247e-03 4.651e-03 3.506e-03 2.739e-03 2.276e-03 - 2.060e-03 2.060e-03 2.276e-03 2.739e-03 3.506e-03 4.651e-03 - 8.479e-03 1.141e-02 1.480e-02 1.833e-02 2.153e-02 2.381e-02 - 2.464e-02 2.381e-02 2.153e-02 1.833e-02 1.480e-02 1.141e-02 - 8.479e-03 6.148e-03 4.420e-03 3.224e-03 2.467e-03 2.060e-03 - 1.933e-03 2.060e-03 2.467e-03 3.224e-03 4.420e-03 6.148e-03 - 1.196e-02 1.606e-02 2.066e-02 2.524e-02 2.904e-02 3.122e-02 - 3.122e-02 2.904e-02 2.524e-02 2.066e-02 1.606e-02 1.196e-02 - 8.621e-03 6.091e-03 4.284e-03 3.084e-03 2.378e-03 2.060e-03 - 2.060e-03 2.378e-03 3.084e-03 4.284e-03 6.091e-03 8.621e-03 - 1.714e-02 2.286e-02 2.903e-02 3.477e-02 3.892e-02 4.045e-02 - 3.892e-02 3.477e-02 2.903e-02 2.286e-02 1.714e-02 1.238e-02 - 8.723e-03 6.065e-03 4.238e-03 3.084e-03 2.467e-03 2.276e-03 - 2.467e-03 3.084e-03 4.238e-03 6.065e-03 8.723e-03 1.238e-02 - 2.460e-02 3.238e-02 4.029e-02 4.693e-02 5.077e-02 5.077e-02 - 4.693e-02 4.029e-02 3.238e-02 2.460e-02 1.789e-02 1.262e-02 - 8.760e-03 6.065e-03 4.284e-03 3.224e-03 2.739e-03 2.739e-03 - 3.224e-03 4.284e-03 6.065e-03 8.760e-03 1.262e-02 1.789e-02 - 3.469e-02 4.466e-02 5.398e-02 6.074e-02 6.323e-02 6.074e-02 - 5.398e-02 4.466e-02 3.469e-02 2.558e-02 1.816e-02 1.262e-02 - 8.723e-03 6.091e-03 4.420e-03 3.506e-03 3.218e-03 3.506e-03 - 4.420e-03 6.091e-03 8.723e-03 1.262e-02 1.816e-02 2.558e-02 - 4.707e-02 5.881e-02 6.863e-02 7.430e-02 7.430e-02 6.863e-02 - 5.881e-02 4.707e-02 3.552e-02 2.558e-02 1.789e-02 1.238e-02 - 8.621e-03 6.148e-03 4.651e-03 3.948e-03 3.948e-03 4.651e-03 - 6.148e-03 8.621e-03 1.238e-02 1.789e-02 2.558e-02 3.552e-02 - 6.466e-02 7.277e-02 7.727e-02 7.727e-02 7.277e-02 6.466e-02 - 5.421e-02 4.283e-02 3.206e-02 2.313e-02 1.653e-02 1.196e-02 - 8.892e-03 6.959e-03 6.008e-03 6.008e-03 6.959e-03 8.892e-03 - 1.196e-02 1.653e-02 2.313e-02 3.206e-02 4.283e-02 5.421e-02 - 7.277e-02 7.896e-02 8.117e-02 7.896e-02 7.277e-02 6.353e-02 - 5.237e-02 4.073e-02 3.025e-02 2.199e-02 1.606e-02 1.198e-02 - 9.254e-03 7.650e-03 7.115e-03 7.650e-03 9.254e-03 1.198e-02 - 1.606e-02 2.199e-02 3.025e-02 4.073e-02 5.237e-02 6.353e-02 - 7.727e-02 8.117e-02 8.117e-02 7.727e-02 7.000e-02 6.009e-02 - 4.868e-02 3.742e-02 2.787e-02 2.066e-02 1.554e-02 1.200e-02 - 9.698e-03 8.541e-03 8.541e-03 9.698e-03 1.200e-02 1.554e-02 - 2.066e-02 2.787e-02 3.742e-02 4.868e-02 6.009e-02 7.000e-02 - 7.727e-02 7.896e-02 7.727e-02 7.233e-02 6.446e-02 5.436e-02 - 4.341e-02 3.333e-02 2.524e-02 1.926e-02 1.498e-02 1.201e-02 - 1.022e-02 9.620e-03 1.022e-02 1.201e-02 1.498e-02 1.926e-02 - 2.524e-02 3.333e-02 4.341e-02 5.436e-02 6.446e-02 7.233e-02 - 7.277e-02 7.277e-02 7.000e-02 6.446e-02 5.643e-02 4.685e-02 - 3.728e-02 2.904e-02 2.263e-02 1.784e-02 1.435e-02 1.200e-02 - 1.081e-02 1.081e-02 1.200e-02 1.435e-02 1.784e-02 2.263e-02 - 2.904e-02 3.728e-02 4.685e-02 5.643e-02 6.446e-02 7.000e-02 - 6.466e-02 6.353e-02 6.009e-02 5.436e-02 4.685e-02 3.872e-02 - 3.122e-02 2.502e-02 2.015e-02 1.639e-02 1.366e-02 1.198e-02 - 1.141e-02 1.198e-02 1.366e-02 1.639e-02 2.015e-02 2.502e-02 - 3.122e-02 3.872e-02 4.685e-02 5.436e-02 6.009e-02 6.353e-02 - 5.421e-02 5.237e-02 4.868e-02 4.341e-02 3.728e-02 3.122e-02 - 2.589e-02 2.145e-02 1.781e-02 1.495e-02 1.296e-02 1.196e-02 - 1.196e-02 1.296e-02 1.495e-02 1.781e-02 2.145e-02 2.589e-02 - 3.122e-02 3.728e-02 4.341e-02 4.868e-02 5.237e-02 5.421e-02 - 4.283e-02 4.073e-02 3.742e-02 3.333e-02 2.904e-02 2.502e-02 - 2.145e-02 1.832e-02 1.566e-02 1.363e-02 1.238e-02 1.197e-02 - 1.238e-02 1.363e-02 1.566e-02 1.832e-02 2.145e-02 2.502e-02 - 2.904e-02 3.333e-02 3.742e-02 4.073e-02 4.283e-02 4.355e-02 - 3.206e-02 3.025e-02 2.787e-02 2.524e-02 2.263e-02 2.015e-02 - 1.781e-02 1.566e-02 1.386e-02 1.262e-02 1.201e-02 1.201e-02 - 1.262e-02 1.386e-02 1.566e-02 1.781e-02 2.015e-02 2.263e-02 - 2.524e-02 2.787e-02 3.025e-02 3.206e-02 3.303e-02 3.303e-02 - 2.313e-02 2.199e-02 2.066e-02 1.926e-02 1.784e-02 1.639e-02 - 1.495e-02 1.363e-02 1.262e-02 1.203e-02 1.185e-02 1.203e-02 - 1.262e-02 1.363e-02 1.495e-02 1.639e-02 1.784e-02 1.926e-02 - 2.066e-02 2.199e-02 2.313e-02 2.393e-02 2.422e-02 2.393e-02 - 1.653e-02 1.606e-02 1.554e-02 1.498e-02 1.435e-02 1.366e-02 - 1.296e-02 1.238e-02 1.201e-02 1.185e-02 1.185e-02 1.201e-02 - 1.238e-02 1.296e-02 1.366e-02 1.435e-02 1.498e-02 1.554e-02 - 1.606e-02 1.653e-02 1.693e-02 1.717e-02 1.717e-02 1.693e-02 - 1.196e-02 1.198e-02 1.200e-02 1.201e-02 1.200e-02 1.198e-02 - 1.196e-02 1.197e-02 1.201e-02 1.203e-02 1.201e-02 1.197e-02 - 1.196e-02 1.198e-02 1.200e-02 1.201e-02 1.200e-02 1.198e-02 - 1.196e-02 1.197e-02 1.201e-02 1.203e-02 1.201e-02 1.197e-02 - 8.892e-03 9.254e-03 9.698e-03 1.022e-02 1.081e-02 1.141e-02 - 1.196e-02 1.238e-02 1.262e-02 1.262e-02 1.238e-02 1.196e-02 - 1.141e-02 1.081e-02 1.022e-02 9.698e-03 9.254e-03 8.892e-03 - 8.621e-03 8.453e-03 8.378e-03 8.378e-03 8.453e-03 8.621e-03 - 6.959e-03 7.650e-03 8.541e-03 9.620e-03 1.081e-02 1.198e-02 - 1.296e-02 1.363e-02 1.386e-02 1.363e-02 1.296e-02 1.198e-02 - 1.081e-02 9.620e-03 8.541e-03 7.650e-03 6.959e-03 6.445e-03 - 6.091e-03 5.886e-03 5.820e-03 5.886e-03 6.091e-03 6.445e-03 - 6.008e-03 7.115e-03 8.541e-03 1.022e-02 1.200e-02 1.366e-02 - 1.495e-02 1.566e-02 1.566e-02 1.495e-02 1.366e-02 1.200e-02 - 1.022e-02 8.541e-03 7.115e-03 6.008e-03 5.200e-03 4.638e-03 - 4.284e-03 4.112e-03 4.112e-03 4.284e-03 4.638e-03 5.200e-03 - 6.008e-03 7.650e-03 9.698e-03 1.201e-02 1.435e-02 1.639e-02 - 1.781e-02 1.832e-02 1.781e-02 1.639e-02 1.435e-02 1.201e-02 - 9.698e-03 7.650e-03 6.008e-03 4.792e-03 3.945e-03 3.394e-03 - 3.084e-03 2.984e-03 3.084e-03 3.394e-03 3.945e-03 4.792e-03 - 6.959e-03 9.254e-03 1.200e-02 1.498e-02 1.784e-02 2.015e-02 - 2.145e-02 2.145e-02 2.015e-02 1.784e-02 1.498e-02 1.200e-02 - 9.254e-03 6.959e-03 5.200e-03 3.945e-03 3.110e-03 2.610e-03 - 2.378e-03 2.378e-03 2.610e-03 3.110e-03 3.945e-03 5.200e-03 - 8.892e-03 1.198e-02 1.554e-02 1.926e-02 2.263e-02 2.502e-02 - 2.589e-02 2.502e-02 2.263e-02 1.926e-02 1.554e-02 1.198e-02 - 8.892e-03 6.445e-03 4.638e-03 3.394e-03 2.610e-03 2.190e-03 - 2.060e-03 2.190e-03 2.610e-03 3.394e-03 4.638e-03 6.445e-03 - 1.196e-02 1.606e-02 2.066e-02 2.524e-02 2.904e-02 3.122e-02 - 3.122e-02 2.904e-02 2.524e-02 2.066e-02 1.606e-02 1.196e-02 - 8.621e-03 6.091e-03 4.284e-03 3.084e-03 2.378e-03 2.060e-03 - 2.060e-03 2.378e-03 3.084e-03 4.284e-03 6.091e-03 8.621e-03 - 1.653e-02 2.199e-02 2.787e-02 3.333e-02 3.728e-02 3.872e-02 - 3.728e-02 3.333e-02 2.787e-02 2.199e-02 1.653e-02 1.197e-02 - 8.453e-03 5.886e-03 4.112e-03 2.984e-03 2.378e-03 2.190e-03 - 2.378e-03 2.984e-03 4.112e-03 5.886e-03 8.453e-03 1.197e-02 - 2.313e-02 3.025e-02 3.742e-02 4.341e-02 4.685e-02 4.685e-02 - 4.341e-02 3.742e-02 3.025e-02 2.313e-02 1.693e-02 1.201e-02 - 8.378e-03 5.820e-03 4.112e-03 3.084e-03 2.610e-03 2.610e-03 - 3.084e-03 4.112e-03 5.820e-03 8.378e-03 1.201e-02 1.693e-02 - 3.206e-02 4.073e-02 4.868e-02 5.436e-02 5.643e-02 5.436e-02 - 4.868e-02 4.073e-02 3.206e-02 2.393e-02 1.717e-02 1.203e-02 - 8.378e-03 5.886e-03 4.284e-03 3.394e-03 3.110e-03 3.394e-03 - 4.284e-03 5.886e-03 8.378e-03 1.203e-02 1.717e-02 2.393e-02 - 4.283e-02 5.237e-02 6.009e-02 6.446e-02 6.446e-02 6.009e-02 - 5.237e-02 4.283e-02 3.303e-02 2.422e-02 1.717e-02 1.201e-02 - 8.453e-03 6.091e-03 4.638e-03 3.945e-03 3.945e-03 4.638e-03 - 6.091e-03 8.453e-03 1.201e-02 1.717e-02 2.422e-02 3.303e-02 - 5.421e-02 6.353e-02 7.000e-02 7.233e-02 7.000e-02 6.353e-02 - 5.421e-02 4.355e-02 3.303e-02 2.393e-02 1.693e-02 1.197e-02 - 8.621e-03 6.445e-03 5.200e-03 4.792e-03 5.200e-03 6.445e-03 - 8.621e-03 1.197e-02 1.693e-02 2.393e-02 3.303e-02 4.355e-02 - 5.728e-02 5.903e-02 5.962e-02 5.903e-02 5.728e-02 5.397e-02 - 4.821e-02 4.006e-02 3.107e-02 2.313e-02 1.714e-02 1.296e-02 - 1.016e-02 8.487e-03 7.921e-03 8.487e-03 1.016e-02 1.296e-02 - 1.714e-02 2.313e-02 3.107e-02 4.006e-02 4.821e-02 5.397e-02 - 5.903e-02 5.950e-02 5.950e-02 5.903e-02 5.775e-02 5.442e-02 - 4.798e-02 3.920e-02 3.025e-02 2.286e-02 1.744e-02 1.366e-02 - 1.116e-02 9.883e-03 9.883e-03 1.116e-02 1.366e-02 1.744e-02 - 2.286e-02 3.025e-02 3.920e-02 4.798e-02 5.442e-02 5.775e-02 - 5.962e-02 5.950e-02 5.962e-02 5.968e-02 5.845e-02 5.416e-02 - 4.655e-02 3.742e-02 2.903e-02 2.247e-02 1.770e-02 1.435e-02 - 1.228e-02 1.157e-02 1.228e-02 1.435e-02 1.770e-02 2.247e-02 - 2.903e-02 3.742e-02 4.655e-02 5.416e-02 5.845e-02 5.968e-02 - 5.903e-02 5.903e-02 5.968e-02 5.986e-02 5.759e-02 5.176e-02 - 4.341e-02 3.477e-02 2.748e-02 2.191e-02 1.780e-02 1.498e-02 - 1.351e-02 1.351e-02 1.498e-02 1.780e-02 2.191e-02 2.748e-02 - 3.477e-02 4.341e-02 5.176e-02 5.759e-02 5.986e-02 5.968e-02 - 5.728e-02 5.775e-02 5.845e-02 5.759e-02 5.366e-02 4.685e-02 - 3.892e-02 3.163e-02 2.570e-02 2.110e-02 1.770e-02 1.554e-02 - 1.480e-02 1.554e-02 1.770e-02 2.110e-02 2.570e-02 3.163e-02 - 3.892e-02 4.685e-02 5.366e-02 5.759e-02 5.845e-02 5.775e-02 - 5.397e-02 5.442e-02 5.416e-02 5.176e-02 4.685e-02 4.045e-02 - 3.401e-02 2.838e-02 2.375e-02 2.007e-02 1.744e-02 1.606e-02 - 1.606e-02 1.744e-02 2.007e-02 2.375e-02 2.838e-02 3.401e-02 - 4.045e-02 4.685e-02 5.176e-02 5.416e-02 5.442e-02 5.397e-02 - 4.821e-02 4.798e-02 4.655e-02 4.341e-02 3.892e-02 3.401e-02 - 2.936e-02 2.524e-02 2.171e-02 1.893e-02 1.714e-02 1.653e-02 - 1.714e-02 1.893e-02 2.171e-02 2.524e-02 2.936e-02 3.401e-02 - 3.892e-02 4.341e-02 4.655e-02 4.798e-02 4.821e-02 4.814e-02 - 4.006e-02 3.920e-02 3.742e-02 3.477e-02 3.163e-02 2.838e-02 - 2.524e-02 2.230e-02 1.975e-02 1.789e-02 1.693e-02 1.693e-02 - 1.789e-02 1.975e-02 2.230e-02 2.524e-02 2.838e-02 3.163e-02 - 3.477e-02 3.742e-02 3.920e-02 4.006e-02 4.032e-02 4.032e-02 - 3.107e-02 3.025e-02 2.903e-02 2.748e-02 2.570e-02 2.375e-02 - 2.171e-02 1.975e-02 1.816e-02 1.717e-02 1.684e-02 1.717e-02 - 1.816e-02 1.975e-02 2.171e-02 2.375e-02 2.570e-02 2.748e-02 - 2.903e-02 3.025e-02 3.107e-02 3.151e-02 3.165e-02 3.151e-02 - 2.313e-02 2.286e-02 2.247e-02 2.191e-02 2.110e-02 2.007e-02 - 1.893e-02 1.789e-02 1.717e-02 1.682e-02 1.682e-02 1.717e-02 - 1.789e-02 1.893e-02 2.007e-02 2.110e-02 2.191e-02 2.247e-02 - 2.286e-02 2.313e-02 2.335e-02 2.348e-02 2.348e-02 2.335e-02 - 1.714e-02 1.744e-02 1.770e-02 1.780e-02 1.770e-02 1.744e-02 - 1.714e-02 1.693e-02 1.684e-02 1.682e-02 1.684e-02 1.693e-02 - 1.714e-02 1.744e-02 1.770e-02 1.780e-02 1.770e-02 1.744e-02 - 1.714e-02 1.693e-02 1.684e-02 1.682e-02 1.684e-02 1.693e-02 - 1.296e-02 1.366e-02 1.435e-02 1.498e-02 1.554e-02 1.606e-02 - 1.653e-02 1.693e-02 1.717e-02 1.717e-02 1.693e-02 1.653e-02 - 1.606e-02 1.554e-02 1.498e-02 1.435e-02 1.366e-02 1.296e-02 - 1.238e-02 1.201e-02 1.185e-02 1.185e-02 1.201e-02 1.238e-02 - 1.016e-02 1.116e-02 1.228e-02 1.351e-02 1.480e-02 1.606e-02 - 1.714e-02 1.789e-02 1.816e-02 1.789e-02 1.714e-02 1.606e-02 - 1.480e-02 1.351e-02 1.228e-02 1.116e-02 1.016e-02 9.326e-03 - 8.723e-03 8.378e-03 8.270e-03 8.378e-03 8.723e-03 9.326e-03 - 8.487e-03 9.883e-03 1.157e-02 1.351e-02 1.554e-02 1.744e-02 - 1.893e-02 1.975e-02 1.975e-02 1.893e-02 1.744e-02 1.554e-02 - 1.351e-02 1.157e-02 9.883e-03 8.487e-03 7.387e-03 6.580e-03 - 6.065e-03 5.820e-03 5.820e-03 6.065e-03 6.580e-03 7.387e-03 - 7.921e-03 9.883e-03 1.228e-02 1.498e-02 1.770e-02 2.007e-02 - 2.171e-02 2.230e-02 2.171e-02 2.007e-02 1.770e-02 1.498e-02 - 1.228e-02 9.883e-03 7.921e-03 6.424e-03 5.346e-03 4.635e-03 - 4.238e-03 4.112e-03 4.238e-03 4.635e-03 5.346e-03 6.424e-03 - 8.487e-03 1.116e-02 1.435e-02 1.780e-02 2.110e-02 2.375e-02 - 2.524e-02 2.524e-02 2.375e-02 2.110e-02 1.780e-02 1.435e-02 - 1.116e-02 8.487e-03 6.424e-03 4.940e-03 3.948e-03 3.356e-03 - 3.084e-03 3.084e-03 3.356e-03 3.948e-03 4.940e-03 6.424e-03 - 1.016e-02 1.366e-02 1.770e-02 2.191e-02 2.570e-02 2.838e-02 - 2.936e-02 2.838e-02 2.570e-02 2.191e-02 1.770e-02 1.366e-02 - 1.016e-02 7.387e-03 5.346e-03 3.948e-03 3.074e-03 2.610e-03 - 2.467e-03 2.610e-03 3.074e-03 3.948e-03 5.346e-03 7.387e-03 - 1.296e-02 1.744e-02 2.247e-02 2.748e-02 3.163e-02 3.401e-02 - 3.401e-02 3.163e-02 2.748e-02 2.247e-02 1.744e-02 1.296e-02 - 9.326e-03 6.580e-03 4.635e-03 3.356e-03 2.610e-03 2.276e-03 - 2.276e-03 2.610e-03 3.356e-03 4.635e-03 6.580e-03 9.326e-03 - 1.714e-02 2.286e-02 2.903e-02 3.477e-02 3.892e-02 4.045e-02 - 3.892e-02 3.477e-02 2.903e-02 2.286e-02 1.714e-02 1.238e-02 - 8.723e-03 6.065e-03 4.238e-03 3.084e-03 2.467e-03 2.276e-03 - 2.467e-03 3.084e-03 4.238e-03 6.065e-03 8.723e-03 1.238e-02 - 2.313e-02 3.025e-02 3.742e-02 4.341e-02 4.685e-02 4.685e-02 - 4.341e-02 3.742e-02 3.025e-02 2.313e-02 1.693e-02 1.201e-02 - 8.378e-03 5.820e-03 4.112e-03 3.084e-03 2.610e-03 2.610e-03 - 3.084e-03 4.112e-03 5.820e-03 8.378e-03 1.201e-02 1.693e-02 - 3.107e-02 3.920e-02 4.655e-02 5.176e-02 5.366e-02 5.176e-02 - 4.655e-02 3.920e-02 3.107e-02 2.335e-02 1.684e-02 1.185e-02 - 8.270e-03 5.820e-03 4.238e-03 3.356e-03 3.074e-03 3.356e-03 - 4.238e-03 5.820e-03 8.270e-03 1.185e-02 1.684e-02 2.335e-02 - 4.006e-02 4.798e-02 5.416e-02 5.759e-02 5.759e-02 5.416e-02 - 4.798e-02 4.006e-02 3.151e-02 2.348e-02 1.682e-02 1.185e-02 - 8.378e-03 6.065e-03 4.635e-03 3.948e-03 3.948e-03 4.635e-03 - 6.065e-03 8.378e-03 1.185e-02 1.682e-02 2.348e-02 3.151e-02 - 4.821e-02 5.442e-02 5.845e-02 5.986e-02 5.845e-02 5.442e-02 - 4.821e-02 4.032e-02 3.165e-02 2.348e-02 1.684e-02 1.201e-02 - 8.723e-03 6.580e-03 5.346e-03 4.940e-03 5.346e-03 6.580e-03 - 8.723e-03 1.201e-02 1.684e-02 2.348e-02 3.165e-02 4.032e-02 - 5.397e-02 5.775e-02 5.968e-02 5.968e-02 5.775e-02 5.397e-02 - 4.814e-02 4.032e-02 3.151e-02 2.335e-02 1.693e-02 1.238e-02 - 9.326e-03 7.387e-03 6.424e-03 6.424e-03 7.387e-03 9.326e-03 - 1.238e-02 1.693e-02 2.335e-02 3.151e-02 4.032e-02 4.814e-02 - 3.853e-02 3.604e-02 3.604e-02 3.853e-02 4.294e-02 4.650e-02 - 4.573e-02 4.006e-02 3.206e-02 2.460e-02 1.893e-02 1.495e-02 - 1.232e-02 1.096e-02 1.096e-02 1.232e-02 1.495e-02 1.893e-02 - 2.460e-02 3.206e-02 4.006e-02 4.573e-02 4.650e-02 4.294e-02 - 3.604e-02 3.431e-02 3.604e-02 4.108e-02 4.740e-02 5.065e-02 - 4.798e-02 4.073e-02 3.238e-02 2.531e-02 2.007e-02 1.639e-02 - 1.411e-02 1.331e-02 1.411e-02 1.639e-02 2.007e-02 2.531e-02 - 3.238e-02 4.073e-02 4.798e-02 5.065e-02 4.740e-02 4.108e-02 - 3.604e-02 3.604e-02 4.041e-02 4.765e-02 5.366e-02 5.416e-02 - 4.868e-02 4.029e-02 3.221e-02 2.582e-02 2.110e-02 1.784e-02 - 1.612e-02 1.612e-02 1.784e-02 2.110e-02 2.582e-02 3.221e-02 - 4.029e-02 4.868e-02 5.416e-02 5.366e-02 4.765e-02 4.041e-02 - 3.853e-02 4.108e-02 4.765e-02 5.469e-02 5.759e-02 5.436e-02 - 4.693e-02 3.864e-02 3.153e-02 2.600e-02 2.191e-02 1.926e-02 - 1.833e-02 1.926e-02 2.191e-02 2.600e-02 3.153e-02 3.864e-02 - 4.693e-02 5.436e-02 5.759e-02 5.469e-02 4.765e-02 4.108e-02 - 4.294e-02 4.740e-02 5.366e-02 5.759e-02 5.643e-02 5.077e-02 - 4.330e-02 3.625e-02 3.042e-02 2.582e-02 2.247e-02 2.066e-02 - 2.066e-02 2.247e-02 2.582e-02 3.042e-02 3.625e-02 4.330e-02 - 5.077e-02 5.643e-02 5.759e-02 5.366e-02 4.740e-02 4.294e-02 - 4.650e-02 5.065e-02 5.416e-02 5.436e-02 5.077e-02 4.501e-02 - 3.895e-02 3.354e-02 2.897e-02 2.531e-02 2.286e-02 2.199e-02 - 2.286e-02 2.531e-02 2.897e-02 3.354e-02 3.895e-02 4.501e-02 - 5.077e-02 5.436e-02 5.416e-02 5.065e-02 4.650e-02 4.471e-02 - 4.573e-02 4.798e-02 4.868e-02 4.693e-02 4.330e-02 3.895e-02 - 3.468e-02 3.074e-02 2.728e-02 2.460e-02 2.313e-02 2.313e-02 - 2.460e-02 2.728e-02 3.074e-02 3.468e-02 3.895e-02 4.330e-02 - 4.693e-02 4.868e-02 4.798e-02 4.573e-02 4.385e-02 4.385e-02 - 4.006e-02 4.073e-02 4.029e-02 3.864e-02 3.625e-02 3.354e-02 - 3.074e-02 2.799e-02 2.558e-02 2.393e-02 2.335e-02 2.393e-02 - 2.558e-02 2.799e-02 3.074e-02 3.354e-02 3.625e-02 3.864e-02 - 4.029e-02 4.073e-02 4.006e-02 3.901e-02 3.852e-02 3.901e-02 - 3.206e-02 3.238e-02 3.221e-02 3.153e-02 3.042e-02 2.897e-02 - 2.728e-02 2.558e-02 2.422e-02 2.348e-02 2.348e-02 2.422e-02 - 2.558e-02 2.728e-02 2.897e-02 3.042e-02 3.153e-02 3.221e-02 - 3.238e-02 3.206e-02 3.151e-02 3.112e-02 3.112e-02 3.151e-02 - 2.460e-02 2.531e-02 2.582e-02 2.600e-02 2.582e-02 2.531e-02 - 2.460e-02 2.393e-02 2.348e-02 2.333e-02 2.348e-02 2.393e-02 - 2.460e-02 2.531e-02 2.582e-02 2.600e-02 2.582e-02 2.531e-02 - 2.460e-02 2.393e-02 2.348e-02 2.333e-02 2.348e-02 2.393e-02 - 1.893e-02 2.007e-02 2.110e-02 2.191e-02 2.247e-02 2.286e-02 - 2.313e-02 2.335e-02 2.348e-02 2.348e-02 2.335e-02 2.313e-02 - 2.286e-02 2.247e-02 2.191e-02 2.110e-02 2.007e-02 1.893e-02 - 1.789e-02 1.717e-02 1.682e-02 1.682e-02 1.717e-02 1.789e-02 - 1.495e-02 1.639e-02 1.784e-02 1.926e-02 2.066e-02 2.199e-02 - 2.313e-02 2.393e-02 2.422e-02 2.393e-02 2.313e-02 2.199e-02 - 2.066e-02 1.926e-02 1.784e-02 1.639e-02 1.495e-02 1.363e-02 - 1.262e-02 1.203e-02 1.185e-02 1.203e-02 1.262e-02 1.363e-02 - 1.232e-02 1.411e-02 1.612e-02 1.833e-02 2.066e-02 2.286e-02 - 2.460e-02 2.558e-02 2.558e-02 2.460e-02 2.286e-02 2.066e-02 - 1.833e-02 1.612e-02 1.411e-02 1.232e-02 1.078e-02 9.563e-03 - 8.760e-03 8.378e-03 8.378e-03 8.760e-03 9.563e-03 1.078e-02 - 1.096e-02 1.331e-02 1.612e-02 1.926e-02 2.247e-02 2.531e-02 - 2.728e-02 2.799e-02 2.728e-02 2.531e-02 2.247e-02 1.926e-02 - 1.612e-02 1.331e-02 1.096e-02 9.073e-03 7.626e-03 6.629e-03 - 6.065e-03 5.886e-03 6.065e-03 6.629e-03 7.626e-03 9.073e-03 - 1.096e-02 1.411e-02 1.784e-02 2.191e-02 2.582e-02 2.897e-02 - 3.074e-02 3.074e-02 2.897e-02 2.582e-02 2.191e-02 1.784e-02 - 1.411e-02 1.096e-02 8.494e-03 6.662e-03 5.400e-03 4.635e-03 - 4.284e-03 4.284e-03 4.635e-03 5.400e-03 6.662e-03 8.494e-03 - 1.232e-02 1.639e-02 2.110e-02 2.600e-02 3.042e-02 3.354e-02 - 3.468e-02 3.354e-02 3.042e-02 2.600e-02 2.110e-02 1.639e-02 - 1.232e-02 9.073e-03 6.662e-03 4.995e-03 3.948e-03 3.394e-03 - 3.224e-03 3.394e-03 3.948e-03 4.995e-03 6.662e-03 9.073e-03 - 1.495e-02 2.007e-02 2.582e-02 3.153e-02 3.625e-02 3.895e-02 - 3.895e-02 3.625e-02 3.153e-02 2.582e-02 2.007e-02 1.495e-02 - 1.078e-02 7.626e-03 5.400e-03 3.948e-03 3.110e-03 2.739e-03 - 2.739e-03 3.110e-03 3.948e-03 5.400e-03 7.626e-03 1.078e-02 - 1.893e-02 2.531e-02 3.221e-02 3.864e-02 4.330e-02 4.501e-02 - 4.330e-02 3.864e-02 3.221e-02 2.531e-02 1.893e-02 1.363e-02 - 9.563e-03 6.629e-03 4.635e-03 3.394e-03 2.739e-03 2.539e-03 - 2.739e-03 3.394e-03 4.635e-03 6.629e-03 9.563e-03 1.363e-02 - 2.460e-02 3.238e-02 4.029e-02 4.693e-02 5.077e-02 5.077e-02 - 4.693e-02 4.029e-02 3.238e-02 2.460e-02 1.789e-02 1.262e-02 - 8.760e-03 6.065e-03 4.284e-03 3.224e-03 2.739e-03 2.739e-03 - 3.224e-03 4.284e-03 6.065e-03 8.760e-03 1.262e-02 1.789e-02 - 3.206e-02 4.073e-02 4.868e-02 5.436e-02 5.643e-02 5.436e-02 - 4.868e-02 4.073e-02 3.206e-02 2.393e-02 1.717e-02 1.203e-02 - 8.378e-03 5.886e-03 4.284e-03 3.394e-03 3.110e-03 3.394e-03 - 4.284e-03 5.886e-03 8.378e-03 1.203e-02 1.717e-02 2.393e-02 - 4.006e-02 4.798e-02 5.416e-02 5.759e-02 5.759e-02 5.416e-02 - 4.798e-02 4.006e-02 3.151e-02 2.348e-02 1.682e-02 1.185e-02 - 8.378e-03 6.065e-03 4.635e-03 3.948e-03 3.948e-03 4.635e-03 - 6.065e-03 8.378e-03 1.185e-02 1.682e-02 2.348e-02 3.151e-02 - 4.573e-02 5.065e-02 5.366e-02 5.469e-02 5.366e-02 5.065e-02 - 4.573e-02 3.901e-02 3.112e-02 2.333e-02 1.682e-02 1.203e-02 - 8.760e-03 6.629e-03 5.400e-03 4.995e-03 5.400e-03 6.629e-03 - 8.760e-03 1.203e-02 1.682e-02 2.333e-02 3.112e-02 3.901e-02 - 4.650e-02 4.740e-02 4.765e-02 4.765e-02 4.740e-02 4.650e-02 - 4.385e-02 3.852e-02 3.112e-02 2.348e-02 1.717e-02 1.262e-02 - 9.563e-03 7.626e-03 6.662e-03 6.662e-03 7.626e-03 9.563e-03 - 1.262e-02 1.717e-02 2.348e-02 3.112e-02 3.852e-02 4.385e-02 - 4.294e-02 4.108e-02 4.041e-02 4.108e-02 4.294e-02 4.471e-02 - 4.385e-02 3.901e-02 3.151e-02 2.393e-02 1.789e-02 1.363e-02 - 1.078e-02 9.073e-03 8.494e-03 9.073e-03 1.078e-02 1.363e-02 - 1.789e-02 2.393e-02 3.151e-02 3.901e-02 4.385e-02 4.471e-02 - 1.770e-02 1.527e-02 1.770e-02 2.556e-02 3.719e-02 4.650e-02 - 4.821e-02 4.283e-02 3.469e-02 2.728e-02 2.171e-02 1.781e-02 - 1.538e-02 1.453e-02 1.538e-02 1.781e-02 2.171e-02 2.728e-02 - 3.469e-02 4.283e-02 4.821e-02 4.650e-02 3.719e-02 2.556e-02 - 1.527e-02 1.527e-02 2.162e-02 3.399e-02 4.740e-02 5.442e-02 - 5.237e-02 4.466e-02 3.604e-02 2.897e-02 2.375e-02 2.015e-02 - 1.822e-02 1.822e-02 2.015e-02 2.375e-02 2.897e-02 3.604e-02 - 4.466e-02 5.237e-02 5.442e-02 4.740e-02 3.399e-02 2.162e-02 - 1.770e-02 2.162e-02 3.287e-02 4.765e-02 5.845e-02 6.009e-02 - 5.398e-02 4.502e-02 3.681e-02 3.042e-02 2.570e-02 2.263e-02 - 2.153e-02 2.263e-02 2.570e-02 3.042e-02 3.681e-02 4.502e-02 - 5.398e-02 6.009e-02 5.845e-02 4.765e-02 3.287e-02 2.162e-02 - 2.556e-02 3.399e-02 4.765e-02 5.986e-02 6.446e-02 6.074e-02 - 5.260e-02 4.411e-02 3.705e-02 3.153e-02 2.748e-02 2.524e-02 - 2.524e-02 2.748e-02 3.153e-02 3.705e-02 4.411e-02 5.260e-02 - 6.074e-02 6.446e-02 5.986e-02 4.765e-02 3.399e-02 2.556e-02 - 3.719e-02 4.740e-02 5.845e-02 6.446e-02 6.323e-02 5.700e-02 - 4.939e-02 4.252e-02 3.681e-02 3.221e-02 2.903e-02 2.787e-02 - 2.903e-02 3.221e-02 3.681e-02 4.252e-02 4.939e-02 5.700e-02 - 6.323e-02 6.446e-02 5.845e-02 4.740e-02 3.719e-02 3.313e-02 - 4.650e-02 5.442e-02 6.009e-02 6.074e-02 5.700e-02 5.133e-02 - 4.565e-02 4.056e-02 3.604e-02 3.238e-02 3.025e-02 3.025e-02 - 3.238e-02 3.604e-02 4.056e-02 4.565e-02 5.133e-02 5.700e-02 - 6.074e-02 6.009e-02 5.442e-02 4.650e-02 4.091e-02 4.091e-02 - 4.821e-02 5.237e-02 5.398e-02 5.260e-02 4.939e-02 4.565e-02 - 4.192e-02 3.820e-02 3.469e-02 3.206e-02 3.107e-02 3.206e-02 - 3.469e-02 3.820e-02 4.192e-02 4.565e-02 4.939e-02 5.260e-02 - 5.398e-02 5.237e-02 4.821e-02 4.385e-02 4.201e-02 4.385e-02 - 4.283e-02 4.466e-02 4.502e-02 4.411e-02 4.252e-02 4.056e-02 - 3.820e-02 3.552e-02 3.303e-02 3.151e-02 3.151e-02 3.303e-02 - 3.552e-02 3.820e-02 4.056e-02 4.252e-02 4.411e-02 4.502e-02 - 4.466e-02 4.283e-02 4.032e-02 3.852e-02 3.852e-02 4.032e-02 - 3.469e-02 3.604e-02 3.681e-02 3.705e-02 3.681e-02 3.604e-02 - 3.469e-02 3.303e-02 3.165e-02 3.112e-02 3.165e-02 3.303e-02 - 3.469e-02 3.604e-02 3.681e-02 3.705e-02 3.681e-02 3.604e-02 - 3.469e-02 3.303e-02 3.165e-02 3.112e-02 3.165e-02 3.303e-02 - 2.728e-02 2.897e-02 3.042e-02 3.153e-02 3.221e-02 3.238e-02 - 3.206e-02 3.151e-02 3.112e-02 3.112e-02 3.151e-02 3.206e-02 - 3.238e-02 3.221e-02 3.153e-02 3.042e-02 2.897e-02 2.728e-02 - 2.558e-02 2.422e-02 2.348e-02 2.348e-02 2.422e-02 2.558e-02 - 2.171e-02 2.375e-02 2.570e-02 2.748e-02 2.903e-02 3.025e-02 - 3.107e-02 3.151e-02 3.165e-02 3.151e-02 3.107e-02 3.025e-02 - 2.903e-02 2.748e-02 2.570e-02 2.375e-02 2.171e-02 1.975e-02 - 1.816e-02 1.717e-02 1.684e-02 1.717e-02 1.816e-02 1.975e-02 - 1.781e-02 2.015e-02 2.263e-02 2.524e-02 2.787e-02 3.025e-02 - 3.206e-02 3.303e-02 3.303e-02 3.206e-02 3.025e-02 2.787e-02 - 2.524e-02 2.263e-02 2.015e-02 1.781e-02 1.566e-02 1.386e-02 - 1.262e-02 1.201e-02 1.201e-02 1.262e-02 1.386e-02 1.566e-02 - 1.538e-02 1.822e-02 2.153e-02 2.524e-02 2.903e-02 3.238e-02 - 3.469e-02 3.552e-02 3.469e-02 3.238e-02 2.903e-02 2.524e-02 - 2.153e-02 1.822e-02 1.538e-02 1.297e-02 1.100e-02 9.563e-03 - 8.723e-03 8.453e-03 8.723e-03 9.563e-03 1.100e-02 1.297e-02 - 1.453e-02 1.822e-02 2.263e-02 2.748e-02 3.221e-02 3.604e-02 - 3.820e-02 3.820e-02 3.604e-02 3.221e-02 2.748e-02 2.263e-02 - 1.822e-02 1.453e-02 1.158e-02 9.285e-03 7.626e-03 6.580e-03 - 6.091e-03 6.091e-03 6.580e-03 7.626e-03 9.285e-03 1.158e-02 - 1.538e-02 2.015e-02 2.570e-02 3.153e-02 3.681e-02 4.056e-02 - 4.192e-02 4.056e-02 3.681e-02 3.153e-02 2.570e-02 2.015e-02 - 1.538e-02 1.158e-02 8.703e-03 6.662e-03 5.346e-03 4.638e-03 - 4.420e-03 4.638e-03 5.346e-03 6.662e-03 8.703e-03 1.158e-02 - 1.781e-02 2.375e-02 3.042e-02 3.705e-02 4.252e-02 4.565e-02 - 4.565e-02 4.252e-02 3.705e-02 3.042e-02 2.375e-02 1.781e-02 - 1.297e-02 9.285e-03 6.662e-03 4.940e-03 3.945e-03 3.506e-03 - 3.506e-03 3.945e-03 4.940e-03 6.662e-03 9.285e-03 1.297e-02 - 2.171e-02 2.897e-02 3.681e-02 4.411e-02 4.939e-02 5.133e-02 - 4.939e-02 4.411e-02 3.681e-02 2.897e-02 2.171e-02 1.566e-02 - 1.100e-02 7.626e-03 5.346e-03 3.945e-03 3.218e-03 2.998e-03 - 3.218e-03 3.945e-03 5.346e-03 7.626e-03 1.100e-02 1.566e-02 - 2.728e-02 3.604e-02 4.502e-02 5.260e-02 5.700e-02 5.700e-02 - 5.260e-02 4.502e-02 3.604e-02 2.728e-02 1.975e-02 1.386e-02 - 9.563e-03 6.580e-03 4.638e-03 3.506e-03 2.998e-03 2.998e-03 - 3.506e-03 4.638e-03 6.580e-03 9.563e-03 1.386e-02 1.975e-02 - 3.469e-02 4.466e-02 5.398e-02 6.074e-02 6.323e-02 6.074e-02 - 5.398e-02 4.466e-02 3.469e-02 2.558e-02 1.816e-02 1.262e-02 - 8.723e-03 6.091e-03 4.420e-03 3.506e-03 3.218e-03 3.506e-03 - 4.420e-03 6.091e-03 8.723e-03 1.262e-02 1.816e-02 2.558e-02 - 4.283e-02 5.237e-02 6.009e-02 6.446e-02 6.446e-02 6.009e-02 - 5.237e-02 4.283e-02 3.303e-02 2.422e-02 1.717e-02 1.201e-02 - 8.453e-03 6.091e-03 4.638e-03 3.945e-03 3.945e-03 4.638e-03 - 6.091e-03 8.453e-03 1.201e-02 1.717e-02 2.422e-02 3.303e-02 - 4.821e-02 5.442e-02 5.845e-02 5.986e-02 5.845e-02 5.442e-02 - 4.821e-02 4.032e-02 3.165e-02 2.348e-02 1.684e-02 1.201e-02 - 8.723e-03 6.580e-03 5.346e-03 4.940e-03 5.346e-03 6.580e-03 - 8.723e-03 1.201e-02 1.684e-02 2.348e-02 3.165e-02 4.032e-02 - 4.650e-02 4.740e-02 4.765e-02 4.765e-02 4.740e-02 4.650e-02 - 4.385e-02 3.852e-02 3.112e-02 2.348e-02 1.717e-02 1.262e-02 - 9.563e-03 7.626e-03 6.662e-03 6.662e-03 7.626e-03 9.563e-03 - 1.262e-02 1.717e-02 2.348e-02 3.112e-02 3.852e-02 4.385e-02 - 3.719e-02 3.399e-02 3.287e-02 3.399e-02 3.719e-02 4.091e-02 - 4.201e-02 3.852e-02 3.165e-02 2.422e-02 1.816e-02 1.386e-02 - 1.100e-02 9.285e-03 8.703e-03 9.285e-03 1.100e-02 1.386e-02 - 1.816e-02 2.422e-02 3.165e-02 3.852e-02 4.201e-02 4.091e-02 - 2.556e-02 2.162e-02 2.162e-02 2.556e-02 3.313e-02 4.091e-02 - 4.385e-02 4.032e-02 3.303e-02 2.558e-02 1.975e-02 1.566e-02 - 1.297e-02 1.158e-02 1.158e-02 1.297e-02 1.566e-02 1.975e-02 - 2.558e-02 3.303e-02 4.032e-02 4.385e-02 4.091e-02 3.313e-02 - 4.526e-03 4.526e-03 1.115e-02 2.556e-02 4.294e-02 5.397e-02 - 5.421e-02 4.707e-02 3.820e-02 3.074e-02 2.524e-02 2.145e-02 - 1.942e-02 1.942e-02 2.145e-02 2.524e-02 3.074e-02 3.820e-02 - 4.707e-02 5.421e-02 5.397e-02 4.294e-02 2.556e-02 1.115e-02 - 4.526e-03 8.601e-03 2.162e-02 4.108e-02 5.775e-02 6.353e-02 - 5.881e-02 4.953e-02 4.056e-02 3.354e-02 2.838e-02 2.502e-02 - 2.381e-02 2.502e-02 2.838e-02 3.354e-02 4.056e-02 4.953e-02 - 5.881e-02 6.353e-02 5.775e-02 4.108e-02 2.162e-02 8.601e-03 - 1.115e-02 2.162e-02 4.041e-02 5.968e-02 7.000e-02 6.863e-02 - 6.025e-02 5.061e-02 4.252e-02 3.625e-02 3.163e-02 2.904e-02 - 2.904e-02 3.163e-02 3.625e-02 4.252e-02 5.061e-02 6.025e-02 - 6.863e-02 7.000e-02 5.968e-02 4.041e-02 2.162e-02 1.115e-02 - 2.556e-02 4.108e-02 5.968e-02 7.233e-02 7.430e-02 6.809e-02 - 5.911e-02 5.086e-02 4.411e-02 3.864e-02 3.477e-02 3.333e-02 - 3.477e-02 3.864e-02 4.411e-02 5.086e-02 5.911e-02 6.809e-02 - 7.430e-02 7.233e-02 5.968e-02 4.108e-02 2.556e-02 1.973e-02 - 4.294e-02 5.775e-02 7.000e-02 7.430e-02 7.099e-02 6.404e-02 - 5.689e-02 5.061e-02 4.502e-02 4.029e-02 3.742e-02 3.742e-02 - 4.029e-02 4.502e-02 5.061e-02 5.689e-02 6.404e-02 7.099e-02 - 7.430e-02 7.000e-02 5.775e-02 4.294e-02 3.313e-02 3.313e-02 - 5.397e-02 6.353e-02 6.863e-02 6.809e-02 6.404e-02 5.911e-02 - 5.434e-02 4.953e-02 4.466e-02 4.073e-02 3.920e-02 4.073e-02 - 4.466e-02 4.953e-02 5.434e-02 5.911e-02 6.404e-02 6.809e-02 - 6.863e-02 6.353e-02 5.397e-02 4.471e-02 4.091e-02 4.471e-02 - 5.421e-02 5.881e-02 6.025e-02 5.911e-02 5.689e-02 5.434e-02 - 5.116e-02 4.707e-02 4.283e-02 4.006e-02 4.006e-02 4.283e-02 - 4.707e-02 5.116e-02 5.434e-02 5.689e-02 5.911e-02 6.025e-02 - 5.881e-02 5.421e-02 4.814e-02 4.385e-02 4.385e-02 4.814e-02 - 4.707e-02 4.953e-02 5.061e-02 5.086e-02 5.061e-02 4.953e-02 - 4.707e-02 4.355e-02 4.032e-02 3.901e-02 4.032e-02 4.355e-02 - 4.707e-02 4.953e-02 5.061e-02 5.086e-02 5.061e-02 4.953e-02 - 4.707e-02 4.355e-02 4.032e-02 3.901e-02 4.032e-02 4.355e-02 - 3.820e-02 4.056e-02 4.252e-02 4.411e-02 4.502e-02 4.466e-02 - 4.283e-02 4.032e-02 3.852e-02 3.852e-02 4.032e-02 4.283e-02 - 4.466e-02 4.502e-02 4.411e-02 4.252e-02 4.056e-02 3.820e-02 - 3.552e-02 3.303e-02 3.151e-02 3.151e-02 3.303e-02 3.552e-02 - 3.074e-02 3.354e-02 3.625e-02 3.864e-02 4.029e-02 4.073e-02 - 4.006e-02 3.901e-02 3.852e-02 3.901e-02 4.006e-02 4.073e-02 - 4.029e-02 3.864e-02 3.625e-02 3.354e-02 3.074e-02 2.799e-02 - 2.558e-02 2.393e-02 2.335e-02 2.393e-02 2.558e-02 2.799e-02 - 2.524e-02 2.838e-02 3.163e-02 3.477e-02 3.742e-02 3.920e-02 - 4.006e-02 4.032e-02 4.032e-02 4.006e-02 3.920e-02 3.742e-02 - 3.477e-02 3.163e-02 2.838e-02 2.524e-02 2.230e-02 1.975e-02 - 1.789e-02 1.693e-02 1.693e-02 1.789e-02 1.975e-02 2.230e-02 - 2.145e-02 2.502e-02 2.904e-02 3.333e-02 3.742e-02 4.073e-02 - 4.283e-02 4.355e-02 4.283e-02 4.073e-02 3.742e-02 3.333e-02 - 2.904e-02 2.502e-02 2.145e-02 1.832e-02 1.566e-02 1.363e-02 - 1.238e-02 1.197e-02 1.238e-02 1.363e-02 1.566e-02 1.832e-02 - 1.942e-02 2.381e-02 2.904e-02 3.477e-02 4.029e-02 4.466e-02 - 4.707e-02 4.707e-02 4.466e-02 4.029e-02 3.477e-02 2.904e-02 - 2.381e-02 1.942e-02 1.584e-02 1.297e-02 1.078e-02 9.326e-03 - 8.621e-03 8.621e-03 9.326e-03 1.078e-02 1.297e-02 1.584e-02 - 1.942e-02 2.502e-02 3.163e-02 3.864e-02 4.502e-02 4.953e-02 - 5.116e-02 4.953e-02 4.502e-02 3.864e-02 3.163e-02 2.502e-02 - 1.942e-02 1.498e-02 1.158e-02 9.073e-03 7.387e-03 6.445e-03 - 6.148e-03 6.445e-03 7.387e-03 9.073e-03 1.158e-02 1.498e-02 - 2.145e-02 2.838e-02 3.625e-02 4.411e-02 5.061e-02 5.434e-02 - 5.434e-02 5.061e-02 4.411e-02 3.625e-02 2.838e-02 2.145e-02 - 1.584e-02 1.158e-02 8.494e-03 6.424e-03 5.200e-03 4.651e-03 - 4.651e-03 5.200e-03 6.424e-03 8.494e-03 1.158e-02 1.584e-02 - 2.524e-02 3.354e-02 4.252e-02 5.086e-02 5.689e-02 5.911e-02 - 5.689e-02 5.086e-02 4.252e-02 3.354e-02 2.524e-02 1.832e-02 - 1.297e-02 9.073e-03 6.424e-03 4.792e-03 3.948e-03 3.695e-03 - 3.948e-03 4.792e-03 6.424e-03 9.073e-03 1.297e-02 1.832e-02 - 3.074e-02 4.056e-02 5.061e-02 5.911e-02 6.404e-02 6.404e-02 - 5.911e-02 5.061e-02 4.056e-02 3.074e-02 2.230e-02 1.566e-02 - 1.078e-02 7.387e-03 5.200e-03 3.948e-03 3.399e-03 3.399e-03 - 3.948e-03 5.200e-03 7.387e-03 1.078e-02 1.566e-02 2.230e-02 - 3.820e-02 4.953e-02 6.025e-02 6.809e-02 7.099e-02 6.809e-02 - 6.025e-02 4.953e-02 3.820e-02 2.799e-02 1.975e-02 1.363e-02 - 9.326e-03 6.445e-03 4.651e-03 3.695e-03 3.399e-03 3.695e-03 - 4.651e-03 6.445e-03 9.326e-03 1.363e-02 1.975e-02 2.799e-02 - 4.707e-02 5.881e-02 6.863e-02 7.430e-02 7.430e-02 6.863e-02 - 5.881e-02 4.707e-02 3.552e-02 2.558e-02 1.789e-02 1.238e-02 - 8.621e-03 6.148e-03 4.651e-03 3.948e-03 3.948e-03 4.651e-03 - 6.148e-03 8.621e-03 1.238e-02 1.789e-02 2.558e-02 3.552e-02 - 5.421e-02 6.353e-02 7.000e-02 7.233e-02 7.000e-02 6.353e-02 - 5.421e-02 4.355e-02 3.303e-02 2.393e-02 1.693e-02 1.197e-02 - 8.621e-03 6.445e-03 5.200e-03 4.792e-03 5.200e-03 6.445e-03 - 8.621e-03 1.197e-02 1.693e-02 2.393e-02 3.303e-02 4.355e-02 - 5.397e-02 5.775e-02 5.968e-02 5.968e-02 5.775e-02 5.397e-02 - 4.814e-02 4.032e-02 3.151e-02 2.335e-02 1.693e-02 1.238e-02 - 9.326e-03 7.387e-03 6.424e-03 6.424e-03 7.387e-03 9.326e-03 - 1.238e-02 1.693e-02 2.335e-02 3.151e-02 4.032e-02 4.814e-02 - 4.294e-02 4.108e-02 4.041e-02 4.108e-02 4.294e-02 4.471e-02 - 4.385e-02 3.901e-02 3.151e-02 2.393e-02 1.789e-02 1.363e-02 - 1.078e-02 9.073e-03 8.494e-03 9.073e-03 1.078e-02 1.363e-02 - 1.789e-02 2.393e-02 3.151e-02 3.901e-02 4.385e-02 4.471e-02 - 2.556e-02 2.162e-02 2.162e-02 2.556e-02 3.313e-02 4.091e-02 - 4.385e-02 4.032e-02 3.303e-02 2.558e-02 1.975e-02 1.566e-02 - 1.297e-02 1.158e-02 1.158e-02 1.297e-02 1.566e-02 1.975e-02 - 2.558e-02 3.303e-02 4.032e-02 4.385e-02 4.091e-02 3.313e-02 - 1.115e-02 8.601e-03 1.115e-02 1.973e-02 3.313e-02 4.471e-02 - 4.814e-02 4.355e-02 3.552e-02 2.799e-02 2.230e-02 1.832e-02 - 1.584e-02 1.498e-02 1.584e-02 1.832e-02 2.230e-02 2.799e-02 - 3.552e-02 4.355e-02 4.814e-02 4.471e-02 3.313e-02 1.973e-02 diff --git a/tests/01_PW/203_PW_OK/result.ref b/tests/01_PW/203_PW_OK/result.ref deleted file mode 100644 index 1ebf74fa8d..0000000000 --- a/tests/01_PW/203_PW_OK/result.ref +++ /dev/null @@ -1,5 +0,0 @@ -etotref -213.3867238098172 -etotperatomref -106.6933619049 -chgs1.cube_pass 0 -taus1.cube_pass 0 -totaltimeref 0.84452 diff --git a/tests/01_PW/203_PW_OK/taus1.cube.ref b/tests/01_PW/203_PW_OK/taus1.cube.ref deleted file mode 100644 index c8ed652813..0000000000 --- a/tests/01_PW/203_PW_OK/taus1.cube.ref +++ /dev/null @@ -1,2312 +0,0 @@ -STEP: 0 Cubefile created from ABACUS. Inner loop is z, followed by y and x -1 (nspin) 0.517574 (fermi energy, in Ry) -2 0.0 0.0 0.0 -24 0.000000 0.212500 0.212500 -24 0.212500 0.000000 0.212500 -24 0.212500 0.212500 0.000000 - 14 4 0.000000 0.000000 0.000000 - 14 4 2.550000 2.550000 2.550000 - 9.35850333253e-02 1.05271425072e-01 1.14984029929e-01 9.46618817553e-02 6.13624406409e-02 4.15726567626e-02 - 3.48683159917e-02 3.06058831029e-02 2.62414819209e-02 2.33118163733e-02 2.21386056500e-02 2.19611077293e-02 - 2.19947599998e-02 2.19611077293e-02 2.21386056500e-02 2.33118163733e-02 2.62414819209e-02 3.06058831029e-02 - 3.48683159917e-02 4.15726567626e-02 6.13624406410e-02 9.46618817554e-02 1.14984029929e-01 1.05271425072e-01 - 1.05271425072e-01 1.14284409879e-01 1.02255317231e-01 6.87950359263e-02 4.23899857519e-02 3.31551669202e-02 - 3.03789244340e-02 2.75584598461e-02 2.55791633527e-02 2.52445347088e-02 2.59181147281e-02 2.65858530209e-02 - 2.65858530209e-02 2.59181147281e-02 2.52445347088e-02 2.55791633527e-02 2.75584598461e-02 3.03789244340e-02 - 3.31551669202e-02 4.23899857520e-02 6.87950359263e-02 1.02255317231e-01 1.14284409879e-01 1.05271425072e-01 - 1.14984029929e-01 1.02255317231e-01 7.14595557376e-02 4.26148361403e-02 3.05273339684e-02 2.81921950446e-02 - 2.69081613820e-02 2.62352804996e-02 2.71142998602e-02 2.89473471924e-02 3.06728014251e-02 3.13656133728e-02 - 3.06728014251e-02 2.89473471924e-02 2.71142998602e-02 2.62352804996e-02 2.69081613820e-02 2.81921950446e-02 - 3.05273339684e-02 4.26148361403e-02 7.14595557377e-02 1.02255317231e-01 1.14984029929e-01 1.15476799016e-01 - 9.46618817553e-02 6.87950359263e-02 4.26148361403e-02 2.92890570903e-02 2.61164989591e-02 2.52955690008e-02 - 2.54927185045e-02 2.74769895380e-02 3.04773481040e-02 3.33647463124e-02 3.51262182185e-02 3.51262182185e-02 - 3.33647463124e-02 3.04773481040e-02 2.74769895380e-02 2.54927185045e-02 2.52955690008e-02 2.61164989591e-02 - 2.92890570903e-02 4.26148361403e-02 6.87950359264e-02 9.46618817554e-02 1.07504612680e-01 1.07504612679e-01 - 6.13624406409e-02 4.23899857519e-02 3.05273339684e-02 2.61164989591e-02 2.44579386769e-02 2.45139707404e-02 - 2.69081613820e-02 3.06792139923e-02 3.45751625707e-02 3.75326171916e-02 3.86293456568e-02 3.75326171916e-02 - 3.45751625707e-02 3.06792139923e-02 2.69081613820e-02 2.45139707404e-02 2.44579386769e-02 2.61164989591e-02 - 3.05273339684e-02 4.23899857520e-02 6.13624406410e-02 7.81193802830e-02 8.44119137021e-02 7.81193802830e-02 - 4.15726567626e-02 3.31551669202e-02 2.81921950446e-02 2.52955690008e-02 2.45139707404e-02 2.65224863971e-02 - 3.03789244340e-02 3.48628450776e-02 3.89798518706e-02 4.14583134664e-02 4.14583134664e-02 3.89798518705e-02 - 3.48628450776e-02 3.03789244340e-02 2.65224863971e-02 2.45139707404e-02 2.52955690008e-02 2.81921950446e-02 - 3.31551669202e-02 4.15726567627e-02 5.18158087398e-02 5.87902882083e-02 5.87902882083e-02 5.18158087397e-02 - 3.48683159917e-02 3.03789244340e-02 2.69081613820e-02 2.54927185045e-02 2.69081613820e-02 3.03789244340e-02 - 3.48683159917e-02 3.97328533271e-02 4.36605690195e-02 4.51578187598e-02 4.36605690195e-02 3.97328533271e-02 - 3.48683159917e-02 3.03789244340e-02 2.69081613820e-02 2.54927185045e-02 2.69081613820e-02 3.03789244340e-02 - 3.48683159917e-02 3.97328533271e-02 4.36605690195e-02 4.51578187598e-02 4.36605690195e-02 3.97328533270e-02 - 3.06058831029e-02 2.75584598461e-02 2.62352804996e-02 2.74769895380e-02 3.06792139923e-02 3.48628450776e-02 - 3.97328533271e-02 4.45490987358e-02 4.76134439312e-02 4.76134439312e-02 4.45490987358e-02 3.97328533271e-02 - 3.48628450776e-02 3.06792139923e-02 2.74769895380e-02 2.62352804996e-02 2.75584598461e-02 3.06058831029e-02 - 3.38925854809e-02 3.62673468746e-02 3.73540502296e-02 3.73540502296e-02 3.62673468745e-02 3.38925854809e-02 - 2.62414819209e-02 2.55791633527e-02 2.71142998602e-02 3.04773481040e-02 3.45751625707e-02 3.89798518706e-02 - 4.36605690195e-02 4.76134439312e-02 4.91904413241e-02 4.76134439312e-02 4.36605690195e-02 3.89798518706e-02 - 3.45751625707e-02 3.04773481040e-02 2.71142998602e-02 2.55791633527e-02 2.62414819209e-02 2.81653274579e-02 - 2.99301385615e-02 3.07822057975e-02 3.09609358381e-02 3.07822057975e-02 2.99301385615e-02 2.81653274579e-02 - 2.33118163733e-02 2.52445347087e-02 2.89473471924e-02 3.33647463124e-02 3.75326171916e-02 4.14583134665e-02 - 4.51578187598e-02 4.76134439313e-02 4.76134439313e-02 4.51578187598e-02 4.14583134665e-02 3.75326171916e-02 - 3.33647463124e-02 2.89473471924e-02 2.52445347088e-02 2.33118163733e-02 2.31387869200e-02 2.37301976795e-02 - 2.40967233573e-02 2.40904203272e-02 2.40904203272e-02 2.40967233573e-02 2.37301976795e-02 2.31387869200e-02 - 2.21386056500e-02 2.59181147280e-02 3.06728014251e-02 3.51262182185e-02 3.86293456568e-02 4.14583134665e-02 - 4.36605690195e-02 4.45490987358e-02 4.36605690195e-02 4.14583134665e-02 3.86293456568e-02 3.51262182185e-02 - 3.06728014251e-02 2.59181147281e-02 2.21386056500e-02 1.99975947255e-02 1.91106081253e-02 1.86355176327e-02 - 1.81617046076e-02 1.79266526907e-02 1.81617046076e-02 1.86355176327e-02 1.91106081253e-02 1.99975947255e-02 - 2.19611077293e-02 2.65858530209e-02 3.13656133727e-02 3.51262182185e-02 3.75326171916e-02 3.89798518706e-02 - 3.97328533271e-02 3.97328533271e-02 3.89798518706e-02 3.75326171916e-02 3.51262182185e-02 3.13656133727e-02 - 2.65858530209e-02 2.19611077293e-02 1.85132763207e-02 1.63906429721e-02 1.50739196267e-02 1.40806383265e-02 - 1.34421324248e-02 1.34421324248e-02 1.40806383265e-02 1.50739196267e-02 1.63906429721e-02 1.85132763207e-02 - 2.19947599998e-02 2.65858530209e-02 3.06728014251e-02 3.33647463124e-02 3.45751625707e-02 3.48628450776e-02 - 3.48683159917e-02 3.48628450776e-02 3.45751625707e-02 3.33647463124e-02 3.06728014251e-02 2.65858530209e-02 - 2.19947599998e-02 1.79741436760e-02 1.50424663757e-02 1.30485807277e-02 1.16095381953e-02 1.06051613742e-02 - 1.02248872526e-02 1.06051613742e-02 1.16095381953e-02 1.30485807277e-02 1.50424663757e-02 1.79741436760e-02 - 2.19611077293e-02 2.59181147281e-02 2.89473471924e-02 3.04773481040e-02 3.06792139923e-02 3.03789244340e-02 - 3.03789244340e-02 3.06792139923e-02 3.04773481040e-02 2.89473471924e-02 2.59181147281e-02 2.19611077293e-02 - 1.79741436760e-02 1.46288647205e-02 1.21045128275e-02 1.02401100733e-02 8.89920278515e-03 8.15758815907e-03 - 8.15758815907e-03 8.89920278515e-03 1.02401100733e-02 1.21045128275e-02 1.46288647205e-02 1.79741436760e-02 - 2.21386056500e-02 2.52445347088e-02 2.71142998602e-02 2.74769895380e-02 2.69081613821e-02 2.65224863971e-02 - 2.69081613821e-02 2.74769895380e-02 2.71142998602e-02 2.52445347088e-02 2.21386056500e-02 1.85132763207e-02 - 1.50424663757e-02 1.21045128275e-02 9.78219490488e-03 8.04455907974e-03 6.92803651719e-03 6.53729803366e-03 - 6.92803651720e-03 8.04455907974e-03 9.78219490488e-03 1.21045128275e-02 1.50424663757e-02 1.85132763207e-02 - 2.33118163733e-02 2.55791633528e-02 2.62352804996e-02 2.54927185046e-02 2.45139707405e-02 2.45139707405e-02 - 2.54927185046e-02 2.62352804996e-02 2.55791633528e-02 2.33118163733e-02 1.99975947255e-02 1.63906429721e-02 - 1.30485807277e-02 1.02401100733e-02 8.04455907974e-03 6.50338402317e-03 5.69411798450e-03 5.69411798450e-03 - 6.50338402317e-03 8.04455907974e-03 1.02401100733e-02 1.30485807277e-02 1.63906429721e-02 1.99975947255e-02 - 2.62414819209e-02 2.75584598462e-02 2.69081613821e-02 2.52955690009e-02 2.44579386769e-02 2.52955690009e-02 - 2.69081613821e-02 2.75584598462e-02 2.62414819209e-02 2.31387869200e-02 1.91106081253e-02 1.50739196267e-02 - 1.16095381953e-02 8.89920278516e-03 6.92803651720e-03 5.69411798450e-03 5.26652136817e-03 5.69411798450e-03 - 6.92803651720e-03 8.89920278516e-03 1.16095381953e-02 1.50739196267e-02 1.91106081254e-02 2.31387869200e-02 - 3.06058831030e-02 3.03789244340e-02 2.81921950447e-02 2.61164989592e-02 2.61164989591e-02 2.81921950447e-02 - 3.03789244340e-02 3.06058831030e-02 2.81653274579e-02 2.37301976795e-02 1.86355176327e-02 1.40806383265e-02 - 1.06051613742e-02 8.15758815908e-03 6.53729803367e-03 5.69411798450e-03 5.69411798450e-03 6.53729803367e-03 - 8.15758815908e-03 1.06051613742e-02 1.40806383265e-02 1.86355176327e-02 2.37301976795e-02 2.81653274579e-02 - 3.48683159917e-02 3.31551669202e-02 3.05273339685e-02 2.92890570903e-02 3.05273339685e-02 3.31551669202e-02 - 3.48683159917e-02 3.38925854809e-02 2.99301385615e-02 2.40967233573e-02 1.81617046076e-02 1.34421324248e-02 - 1.02248872526e-02 8.15758815908e-03 6.92803651720e-03 6.50338402317e-03 6.92803651720e-03 8.15758815908e-03 - 1.02248872526e-02 1.34421324248e-02 1.81617046076e-02 2.40967233573e-02 2.99301385615e-02 3.38925854810e-02 - 4.15726567627e-02 4.23899857520e-02 4.26148361404e-02 4.26148361404e-02 4.23899857520e-02 4.15726567627e-02 - 3.97328533271e-02 3.62673468746e-02 3.07822057975e-02 2.40904203272e-02 1.79266526907e-02 1.34421324248e-02 - 1.06051613742e-02 8.89920278516e-03 8.04455907974e-03 8.04455907974e-03 8.89920278516e-03 1.06051613742e-02 - 1.34421324248e-02 1.79266526907e-02 2.40904203272e-02 3.07822057975e-02 3.62673468746e-02 3.97328533271e-02 - 6.13624406410e-02 6.87950359264e-02 7.14595557378e-02 6.87950359264e-02 6.13624406410e-02 5.18158087398e-02 - 4.36605690195e-02 3.73540502297e-02 3.09609358381e-02 2.40904203272e-02 1.81617046076e-02 1.40806383265e-02 - 1.16095381953e-02 1.02401100733e-02 9.78219490488e-03 1.02401100733e-02 1.16095381953e-02 1.40806383265e-02 - 1.81617046076e-02 2.40904203272e-02 3.09609358381e-02 3.73540502297e-02 4.36605690195e-02 5.18158087398e-02 - 9.46618817555e-02 1.02255317232e-01 1.02255317232e-01 9.46618817555e-02 7.81193802831e-02 5.87902882084e-02 - 4.51578187598e-02 3.73540502296e-02 3.07822057975e-02 2.40967233573e-02 1.86355176327e-02 1.50739196267e-02 - 1.30485807277e-02 1.21045128275e-02 1.21045128275e-02 1.30485807277e-02 1.50739196267e-02 1.86355176327e-02 - 2.40967233573e-02 3.07822057975e-02 3.73540502297e-02 4.51578187598e-02 5.87902882084e-02 7.81193802831e-02 - 1.14984029929e-01 1.14284409879e-01 1.14984029929e-01 1.07504612680e-01 8.44119137022e-02 5.87902882084e-02 - 4.36605690195e-02 3.62673468746e-02 2.99301385615e-02 2.37301976795e-02 1.91106081253e-02 1.63906429721e-02 - 1.50424663757e-02 1.46288647205e-02 1.50424663757e-02 1.63906429721e-02 1.91106081253e-02 2.37301976795e-02 - 2.99301385615e-02 3.62673468746e-02 4.36605690195e-02 5.87902882084e-02 8.44119137023e-02 1.07504612680e-01 - 1.05271425072e-01 1.05271425072e-01 1.15476799016e-01 1.07504612680e-01 7.81193802830e-02 5.18158087398e-02 - 3.97328533271e-02 3.38925854809e-02 2.81653274579e-02 2.31387869200e-02 1.99975947255e-02 1.85132763207e-02 - 1.79741436761e-02 1.79741436761e-02 1.85132763207e-02 1.99975947255e-02 2.31387869200e-02 2.81653274579e-02 - 3.38925854809e-02 3.97328533271e-02 5.18158087398e-02 7.81193802831e-02 1.07504612680e-01 1.15476799016e-01 - 1.05271425072e-01 1.14284409879e-01 1.02255317231e-01 6.87950359263e-02 4.23899857520e-02 3.31551669202e-02 - 3.03789244340e-02 2.75584598461e-02 2.55791633527e-02 2.52445347088e-02 2.59181147281e-02 2.65858530209e-02 - 2.65858530209e-02 2.59181147281e-02 2.52445347088e-02 2.55791633527e-02 2.75584598461e-02 3.03789244340e-02 - 3.31551669202e-02 4.23899857520e-02 6.87950359264e-02 1.02255317231e-01 1.14284409879e-01 1.05271425072e-01 - 1.14284409879e-01 1.05382836884e-01 7.44578962493e-02 4.30330806506e-02 2.95749315132e-02 2.73937018060e-02 - 2.65224863971e-02 2.61140936360e-02 2.72051400328e-02 2.92643382604e-02 3.12134113093e-02 3.20070729423e-02 - 3.12134113093e-02 2.92643382604e-02 2.72051400328e-02 2.61140936360e-02 2.65224863971e-02 2.73937018060e-02 - 2.95749315132e-02 4.30330806506e-02 7.44578962494e-02 1.05382836884e-01 1.14284409879e-01 1.12133375345e-01 - 1.02255317231e-01 7.44578962493e-02 4.31931066266e-02 2.67216511960e-02 2.35389825848e-02 2.36141349499e-02 - 2.45139707404e-02 2.70513354759e-02 3.05548189106e-02 3.39942859271e-02 3.61935553818e-02 3.61935553818e-02 - 3.39942859271e-02 3.05548189106e-02 2.70513354759e-02 2.45139707404e-02 2.36141349499e-02 2.35389825848e-02 - 2.67216511960e-02 4.31931066266e-02 7.44578962494e-02 1.02255317231e-01 1.13479602981e-01 1.13479602981e-01 - 6.87950359263e-02 4.30330806506e-02 2.67216511960e-02 2.17746576295e-02 2.10846196163e-02 2.20787139947e-02 - 2.52955690008e-02 2.97974895143e-02 3.46096179590e-02 3.86294987685e-02 4.02266025417e-02 3.86294987685e-02 - 3.46096179590e-02 2.97974895143e-02 2.52955690008e-02 2.20787139947e-02 2.10846196163e-02 2.17746576295e-02 - 2.67216511960e-02 4.30330806506e-02 6.87950359263e-02 9.00454509227e-02 9.74781930219e-02 9.00454509227e-02 - 4.23899857519e-02 2.95749315132e-02 2.35389825848e-02 2.10846196163e-02 2.09116171502e-02 2.36141349499e-02 - 2.81921950446e-02 3.39196724265e-02 4.00842207789e-02 4.42637285519e-02 4.42637285519e-02 4.00842207789e-02 - 3.39196724265e-02 2.81921950446e-02 2.36141349499e-02 2.09116171502e-02 2.10846196163e-02 2.35389825848e-02 - 2.95749315132e-02 4.23899857520e-02 5.87809730550e-02 6.98255714909e-02 6.98255714909e-02 5.87809730550e-02 - 3.31551669201e-02 2.73937018060e-02 2.36141349499e-02 2.20787139947e-02 2.36141349499e-02 2.73937018060e-02 - 3.31551669202e-02 4.11388919901e-02 4.86717503238e-02 5.17382028009e-02 4.86717503238e-02 4.11388919901e-02 - 3.31551669202e-02 2.73937018060e-02 2.36141349499e-02 2.20787139947e-02 2.36141349500e-02 2.73937018060e-02 - 3.31551669202e-02 4.11388919901e-02 4.86717503238e-02 5.17382028008e-02 4.86717503238e-02 4.11388919901e-02 - 3.03789244340e-02 2.65224863971e-02 2.45139707404e-02 2.52955690008e-02 2.81921950446e-02 3.31551669202e-02 - 4.15726567626e-02 5.18158087398e-02 5.87902882083e-02 5.87902882083e-02 5.18158087398e-02 4.15726567626e-02 - 3.31551669202e-02 2.81921950447e-02 2.52955690008e-02 2.45139707405e-02 2.65224863971e-02 3.03789244340e-02 - 3.48628450776e-02 3.89798518705e-02 4.14583134664e-02 4.14583134664e-02 3.89798518705e-02 3.48628450776e-02 - 2.75584598461e-02 2.61140936360e-02 2.70513354759e-02 2.97974895143e-02 3.39196724265e-02 4.11388919902e-02 - 5.18158087398e-02 6.17008685349e-02 6.56428313091e-02 6.17008685349e-02 5.18158087398e-02 4.11388919902e-02 - 3.39196724265e-02 2.97974895143e-02 2.70513354759e-02 2.61140936360e-02 2.75584598461e-02 3.04051143293e-02 - 3.31963581644e-02 3.49769025117e-02 3.55406204185e-02 3.49769025117e-02 3.31963581643e-02 3.04051143293e-02 - 2.55791633527e-02 2.72051400328e-02 3.05548189106e-02 3.46096179590e-02 4.00842207790e-02 4.86717503239e-02 - 5.87902882084e-02 6.56428313091e-02 6.56428313091e-02 5.87902882084e-02 4.86717503239e-02 4.00842207790e-02 - 3.46096179591e-02 3.05548189106e-02 2.72051400328e-02 2.55791633527e-02 2.59618688149e-02 2.73091501295e-02 - 2.84217494631e-02 2.88778389824e-02 2.88778389824e-02 2.84217494631e-02 2.73091501295e-02 2.59618688149e-02 - 2.52445347087e-02 2.92643382604e-02 3.39942859271e-02 3.86294987685e-02 4.42637285519e-02 5.17382028009e-02 - 5.87902882084e-02 6.17008685349e-02 5.87902882084e-02 5.17382028009e-02 4.42637285519e-02 3.86294987685e-02 - 3.39942859271e-02 2.92643382604e-02 2.52445347088e-02 2.30253665657e-02 2.24043982374e-02 2.23752455712e-02 - 2.22713307355e-02 2.21709602700e-02 2.22713307355e-02 2.23752455712e-02 2.24043982374e-02 2.30253665656e-02 - 2.59181147280e-02 3.12134113093e-02 3.61935553818e-02 4.02266025417e-02 4.42637285519e-02 4.86717503239e-02 - 5.18158087398e-02 5.18158087398e-02 4.86717503239e-02 4.42637285519e-02 4.02266025417e-02 3.61935553818e-02 - 3.12134113093e-02 2.59181147281e-02 2.17948830411e-02 1.93871115228e-02 1.81179302207e-02 1.72611853896e-02 - 1.66950035376e-02 1.66950035376e-02 1.72611853896e-02 1.81179302207e-02 1.93871115228e-02 2.17948830411e-02 - 2.65858530209e-02 3.20070729422e-02 3.61935553818e-02 3.86294987685e-02 4.00842207790e-02 4.11388919902e-02 - 4.15726567627e-02 4.11388919902e-02 4.00842207790e-02 3.86294987685e-02 3.61935553818e-02 3.20070729422e-02 - 2.65858530209e-02 2.15195877577e-02 1.78888288560e-02 1.56224022211e-02 1.41149739580e-02 1.30618774824e-02 - 1.26511415702e-02 1.30618774824e-02 1.41149739580e-02 1.56224022211e-02 1.78888288560e-02 2.15195877577e-02 - 2.65858530209e-02 3.12134113093e-02 3.39942859271e-02 3.46096179590e-02 3.39196724265e-02 3.31551669202e-02 - 3.31551669202e-02 3.39196724265e-02 3.46096179590e-02 3.39942859271e-02 3.12134113093e-02 2.65858530209e-02 - 2.15038028103e-02 1.72812015630e-02 1.43188164440e-02 1.22934163580e-02 1.08500532301e-02 1.00210602336e-02 - 1.00210602336e-02 1.08500532301e-02 1.22934163580e-02 1.43188164440e-02 1.72812015630e-02 2.15038028103e-02 - 2.59181147281e-02 2.92643382604e-02 3.05548189106e-02 2.97974895143e-02 2.81921950447e-02 2.73937018061e-02 - 2.81921950447e-02 2.97974895143e-02 3.05548189106e-02 2.92643382604e-02 2.59181147281e-02 2.15195877577e-02 - 1.72812015630e-02 1.38961516944e-02 1.14031750108e-02 9.57619631350e-03 8.36360112567e-03 7.92498387887e-03 - 8.36360112567e-03 9.57619631350e-03 1.14031750108e-02 1.38961516944e-02 1.72812015630e-02 2.15195877577e-02 - 2.52445347088e-02 2.72051400328e-02 2.70513354759e-02 2.52955690009e-02 2.36141349500e-02 2.36141349500e-02 - 2.52955690009e-02 2.70513354759e-02 2.72051400328e-02 2.52445347088e-02 2.17948830411e-02 1.78888288560e-02 - 1.43188164440e-02 1.14031750108e-02 9.13724506496e-03 7.50451749096e-03 6.62087909721e-03 6.62087909721e-03 - 7.50451749096e-03 9.13724506496e-03 1.14031750108e-02 1.43188164440e-02 1.78888288560e-02 2.17948830411e-02 - 2.55791633528e-02 2.61140936361e-02 2.45139707405e-02 2.20787139948e-02 2.09116171503e-02 2.20787139947e-02 - 2.45139707405e-02 2.61140936361e-02 2.55791633528e-02 2.30253665657e-02 1.93871115228e-02 1.56224022211e-02 - 1.22934163580e-02 9.57619631351e-03 7.50451749097e-03 6.16385997204e-03 5.69328932590e-03 6.16385997204e-03 - 7.50451749097e-03 9.57619631351e-03 1.22934163580e-02 1.56224022211e-02 1.93871115228e-02 2.30253665657e-02 - 2.75584598462e-02 2.65224863971e-02 2.36141349500e-02 2.10846196163e-02 2.10846196163e-02 2.36141349500e-02 - 2.65224863971e-02 2.75584598462e-02 2.59618688149e-02 2.24043982374e-02 1.81179302207e-02 1.41149739580e-02 - 1.08500532301e-02 8.36360112567e-03 6.62087909721e-03 5.69328932590e-03 5.69328932590e-03 6.62087909721e-03 - 8.36360112567e-03 1.08500532301e-02 1.41149739580e-02 1.81179302207e-02 2.24043982374e-02 2.59618688149e-02 - 3.03789244340e-02 2.73937018061e-02 2.35389825848e-02 2.17746576296e-02 2.35389825848e-02 2.73937018061e-02 - 3.03789244340e-02 3.04051143294e-02 2.73091501295e-02 2.23752455712e-02 1.72611853896e-02 1.30618774824e-02 - 1.00210602336e-02 7.92498387888e-03 6.62087909721e-03 6.16385997204e-03 6.62087909721e-03 7.92498387888e-03 - 1.00210602336e-02 1.30618774824e-02 1.72611853896e-02 2.23752455712e-02 2.73091501295e-02 3.04051143294e-02 - 3.31551669202e-02 2.95749315132e-02 2.67216511960e-02 2.67216511960e-02 2.95749315132e-02 3.31551669202e-02 - 3.48628450776e-02 3.31963581644e-02 2.84217494631e-02 2.22713307355e-02 1.66950035376e-02 1.26511415702e-02 - 1.00210602336e-02 8.36360112567e-03 7.50451749096e-03 7.50451749096e-03 8.36360112567e-03 1.00210602336e-02 - 1.26511415702e-02 1.66950035376e-02 2.22713307355e-02 2.84217494631e-02 3.31963581644e-02 3.48628450776e-02 - 4.23899857520e-02 4.30330806507e-02 4.31931066267e-02 4.30330806507e-02 4.23899857520e-02 4.11388919902e-02 - 3.89798518706e-02 3.49769025118e-02 2.88778389824e-02 2.21709602700e-02 1.66950035376e-02 1.30618774824e-02 - 1.08500532301e-02 9.57619631350e-03 9.13724506496e-03 9.57619631350e-03 1.08500532301e-02 1.30618774824e-02 - 1.66950035376e-02 2.21709602700e-02 2.88778389824e-02 3.49769025118e-02 3.89798518706e-02 4.11388919902e-02 - 6.87950359264e-02 7.44578962495e-02 7.44578962495e-02 6.87950359264e-02 5.87809730551e-02 4.86717503239e-02 - 4.14583134664e-02 3.55406204185e-02 2.88778389824e-02 2.22713307355e-02 1.72611853896e-02 1.41149739580e-02 - 1.22934163580e-02 1.14031750108e-02 1.14031750108e-02 1.22934163580e-02 1.41149739580e-02 1.72611853896e-02 - 2.22713307355e-02 2.88778389824e-02 3.55406204185e-02 4.14583134665e-02 4.86717503239e-02 5.87809730551e-02 - 1.02255317232e-01 1.05382836884e-01 1.02255317232e-01 9.00454509228e-02 6.98255714910e-02 5.17382028009e-02 - 4.14583134664e-02 3.49769025117e-02 2.84217494631e-02 2.23752455712e-02 1.81179302207e-02 1.56224022211e-02 - 1.43188164440e-02 1.38961516945e-02 1.43188164440e-02 1.56224022211e-02 1.81179302207e-02 2.23752455712e-02 - 2.84217494631e-02 3.49769025118e-02 4.14583134664e-02 5.17382028009e-02 6.98255714910e-02 9.00454509228e-02 - 1.14284409879e-01 1.14284409879e-01 1.13479602981e-01 9.74781930220e-02 6.98255714910e-02 4.86717503239e-02 - 3.89798518706e-02 3.31963581644e-02 2.73091501295e-02 2.24043982374e-02 1.93871115228e-02 1.78888288560e-02 - 1.72812015630e-02 1.72812015630e-02 1.78888288560e-02 1.93871115228e-02 2.24043982374e-02 2.73091501295e-02 - 3.31963581644e-02 3.89798518706e-02 4.86717503239e-02 6.98255714910e-02 9.74781930221e-02 1.13479602981e-01 - 1.05271425072e-01 1.12133375345e-01 1.13479602981e-01 9.00454509227e-02 5.87809730550e-02 4.11388919901e-02 - 3.48628450776e-02 3.04051143293e-02 2.59618688149e-02 2.30253665657e-02 2.17948830411e-02 2.15195877577e-02 - 2.15038028103e-02 2.15195877577e-02 2.17948830411e-02 2.30253665657e-02 2.59618688149e-02 3.04051143293e-02 - 3.48628450776e-02 4.11388919902e-02 5.87809730550e-02 9.00454509228e-02 1.13479602981e-01 1.12133375345e-01 - 1.14984029929e-01 1.02255317231e-01 7.14595557377e-02 4.26148361403e-02 3.05273339684e-02 2.81921950446e-02 - 2.69081613820e-02 2.62352804996e-02 2.71142998602e-02 2.89473471924e-02 3.06728014251e-02 3.13656133728e-02 - 3.06728014251e-02 2.89473471924e-02 2.71142998602e-02 2.62352804996e-02 2.69081613820e-02 2.81921950447e-02 - 3.05273339684e-02 4.26148361403e-02 7.14595557377e-02 1.02255317231e-01 1.14984029929e-01 1.15476799016e-01 - 1.02255317231e-01 7.44578962493e-02 4.31931066266e-02 2.67216511960e-02 2.35389825848e-02 2.36141349499e-02 - 2.45139707404e-02 2.70513354759e-02 3.05548189106e-02 3.39942859271e-02 3.61935553818e-02 3.61935553818e-02 - 3.39942859271e-02 3.05548189106e-02 2.70513354759e-02 2.45139707404e-02 2.36141349500e-02 2.35389825848e-02 - 2.67216511960e-02 4.31931066266e-02 7.44578962494e-02 1.02255317231e-01 1.13479602981e-01 1.13479602981e-01 - 7.14595557376e-02 4.31931066266e-02 2.50661805908e-02 1.98434779695e-02 1.95329704288e-02 2.09116171502e-02 - 2.44579386769e-02 2.92436594720e-02 3.44216532954e-02 3.88811262511e-02 4.06883718959e-02 3.88811262512e-02 - 3.44216532954e-02 2.92436594720e-02 2.44579386769e-02 2.09116171502e-02 1.95329704289e-02 1.98434779696e-02 - 2.50661805908e-02 4.31931066266e-02 7.14595557377e-02 9.40538638177e-02 1.01688733219e-01 9.40538638177e-02 - 4.26148361403e-02 2.67216511960e-02 1.98434779695e-02 1.76763940774e-02 1.79304117733e-02 2.10846196163e-02 - 2.61164989591e-02 3.26920605346e-02 4.03062291682e-02 4.56987320892e-02 4.56987320892e-02 4.03062291682e-02 - 3.26920605346e-02 2.61164989591e-02 2.10846196163e-02 1.79304117733e-02 1.76763940774e-02 1.98434779696e-02 - 2.67216511960e-02 4.26148361403e-02 6.30064198497e-02 7.65071402185e-02 7.65071402185e-02 6.30064198496e-02 - 3.05273339684e-02 2.35389825848e-02 1.95329704288e-02 1.79304117733e-02 1.95329704288e-02 2.35389825848e-02 - 3.05273339684e-02 4.15214050146e-02 5.24371687843e-02 5.69437593911e-02 5.24371687843e-02 4.15214050146e-02 - 3.05273339684e-02 2.35389825848e-02 1.95329704289e-02 1.79304117733e-02 1.95329704289e-02 2.35389825848e-02 - 3.05273339684e-02 4.15214050146e-02 5.24371687843e-02 5.69437593911e-02 5.24371687843e-02 4.15214050146e-02 - 2.81921950446e-02 2.36141349499e-02 2.09116171502e-02 2.10846196163e-02 2.35389825848e-02 2.95749315132e-02 - 4.23899857520e-02 5.87809730550e-02 6.98255714909e-02 6.98255714909e-02 5.87809730550e-02 4.23899857520e-02 - 2.95749315132e-02 2.35389825848e-02 2.10846196163e-02 2.09116171502e-02 2.36141349500e-02 2.81921950446e-02 - 3.39196724265e-02 4.00842207789e-02 4.42637285519e-02 4.42637285519e-02 4.00842207789e-02 3.39196724265e-02 - 2.69081613820e-02 2.45139707404e-02 2.44579386769e-02 2.61164989591e-02 3.05273339684e-02 4.23899857520e-02 - 6.13624406410e-02 7.81193802830e-02 8.44119137022e-02 7.81193802831e-02 6.13624406410e-02 4.23899857520e-02 - 3.05273339685e-02 2.61164989591e-02 2.44579386769e-02 2.45139707405e-02 2.69081613820e-02 3.06792139923e-02 - 3.45751625707e-02 3.75326171916e-02 3.86293456568e-02 3.75326171916e-02 3.45751625707e-02 3.06792139923e-02 - 2.62352804996e-02 2.70513354759e-02 2.92436594720e-02 3.26920605347e-02 4.15214050146e-02 5.87809730550e-02 - 7.81193802831e-02 8.97664201881e-02 8.97664201881e-02 7.81193802831e-02 5.87809730551e-02 4.15214050147e-02 - 3.26920605347e-02 2.92436594720e-02 2.70513354759e-02 2.62352804996e-02 2.73903662614e-02 2.95890354456e-02 - 3.16057035862e-02 3.27029610793e-02 3.27029610793e-02 3.16057035862e-02 2.95890354456e-02 2.73903662614e-02 - 2.71142998602e-02 3.05548189106e-02 3.44216532954e-02 4.03062291683e-02 5.24371687844e-02 6.98255714910e-02 - 8.44119137022e-02 8.97664201881e-02 8.44119137023e-02 6.98255714910e-02 5.24371687844e-02 4.03062291683e-02 - 3.44216532954e-02 3.05548189106e-02 2.71142998602e-02 2.51931467428e-02 2.49964037842e-02 2.55726183949e-02 - 2.60492747623e-02 2.61902387743e-02 2.60492747623e-02 2.55726183949e-02 2.49964037842e-02 2.51931467427e-02 - 2.89473471924e-02 3.39942859271e-02 3.88811262512e-02 4.56987320892e-02 5.69437593912e-02 6.98255714910e-02 - 7.81193802831e-02 7.81193802831e-02 6.98255714910e-02 5.69437593912e-02 4.56987320893e-02 3.88811262512e-02 - 3.39942859271e-02 2.89473471924e-02 2.46286629032e-02 2.20777720561e-02 2.09446754967e-02 2.03920879638e-02 - 2.00583037371e-02 2.00583037371e-02 2.03920879638e-02 2.09446754967e-02 2.20777720561e-02 2.46286629032e-02 - 3.06728014251e-02 3.61935553818e-02 4.06883718959e-02 4.56987320892e-02 5.24371687844e-02 5.87809730551e-02 - 6.13624406410e-02 5.87809730551e-02 5.24371687844e-02 4.56987320893e-02 4.06883718959e-02 3.61935553818e-02 - 3.06728014251e-02 2.49902463304e-02 2.07196781889e-02 1.81502966987e-02 1.66276099946e-02 1.56489970468e-02 - 1.52718999852e-02 1.56489970468e-02 1.66276099946e-02 1.81502966987e-02 2.07196781889e-02 2.49902463304e-02 - 3.13656133727e-02 3.61935553818e-02 3.88811262512e-02 4.03062291683e-02 4.15214050147e-02 4.23899857520e-02 - 4.23899857520e-02 4.15214050147e-02 4.03062291683e-02 3.88811262512e-02 3.61935553818e-02 3.13656133727e-02 - 2.54054430258e-02 2.02040886880e-02 1.66389339973e-02 1.43894839458e-02 1.28937939562e-02 1.20439356208e-02 - 1.20439356208e-02 1.28937939562e-02 1.43894839458e-02 1.66389339973e-02 2.02040886880e-02 2.54054430258e-02 - 3.06728014251e-02 3.39942859271e-02 3.44216532954e-02 3.26920605347e-02 3.05273339685e-02 2.95749315132e-02 - 3.05273339685e-02 3.26920605347e-02 3.44216532954e-02 3.39942859271e-02 3.06728014251e-02 2.54054430258e-02 - 2.00653973118e-02 1.59287126341e-02 1.31234388541e-02 1.12137577955e-02 9.96234500644e-03 9.50248837487e-03 - 9.96234500643e-03 1.12137577955e-02 1.31234388541e-02 1.59287126341e-02 2.00653973118e-02 2.54054430258e-02 - 2.89473471924e-02 3.05548189106e-02 2.92436594720e-02 2.61164989591e-02 2.35389825848e-02 2.35389825848e-02 - 2.61164989591e-02 2.92436594720e-02 3.05548189106e-02 2.89473471924e-02 2.49902463304e-02 2.02040886880e-02 - 1.59287126341e-02 1.26855285494e-02 1.03422447642e-02 8.68876908730e-03 7.77912772161e-03 7.77912772161e-03 - 8.68876908730e-03 1.03422447642e-02 1.26855285494e-02 1.59287126341e-02 2.02040886880e-02 2.49902463304e-02 - 2.71142998602e-02 2.70513354759e-02 2.44579386769e-02 2.10846196163e-02 1.95329704289e-02 2.10846196163e-02 - 2.44579386769e-02 2.70513354759e-02 2.71142998602e-02 2.46286629032e-02 2.07196781889e-02 1.66389339973e-02 - 1.31234388541e-02 1.03422447642e-02 8.23785813084e-03 6.85668012358e-03 6.36555591034e-03 6.85668012358e-03 - 8.23785813084e-03 1.03422447642e-02 1.31234388541e-02 1.66389339973e-02 2.07196781889e-02 2.46286629032e-02 - 2.62352804996e-02 2.45139707405e-02 2.09116171503e-02 1.79304117734e-02 1.79304117734e-02 2.09116171503e-02 - 2.45139707405e-02 2.62352804996e-02 2.51931467428e-02 2.20777720561e-02 1.81502966987e-02 1.43894839458e-02 - 1.12137577956e-02 8.68876908731e-03 6.85668012359e-03 5.86550216408e-03 5.86550216408e-03 6.85668012359e-03 - 8.68876908731e-03 1.12137577956e-02 1.43894839458e-02 1.81502966987e-02 2.20777720561e-02 2.51931467428e-02 - 2.69081613821e-02 2.36141349500e-02 1.95329704289e-02 1.76763940775e-02 1.95329704289e-02 2.36141349500e-02 - 2.69081613821e-02 2.73903662614e-02 2.49964037843e-02 2.09446754967e-02 1.66276099946e-02 1.28937939562e-02 - 9.96234500644e-03 7.77912772162e-03 6.36555591034e-03 5.86550216408e-03 6.36555591034e-03 7.77912772162e-03 - 9.96234500644e-03 1.28937939562e-02 1.66276099946e-02 2.09446754967e-02 2.49964037843e-02 2.73903662614e-02 - 2.81921950447e-02 2.35389825848e-02 1.98434779696e-02 1.98434779696e-02 2.35389825848e-02 2.81921950447e-02 - 3.06792139923e-02 2.95890354456e-02 2.55726183949e-02 2.03920879638e-02 1.56489970468e-02 1.20439356208e-02 - 9.50248837488e-03 7.77912772162e-03 6.85668012358e-03 6.85668012358e-03 7.77912772161e-03 9.50248837488e-03 - 1.20439356208e-02 1.56489970468e-02 2.03920879638e-02 2.55726183949e-02 2.95890354456e-02 3.06792139923e-02 - 3.05273339685e-02 2.67216511960e-02 2.50661805908e-02 2.67216511960e-02 3.05273339685e-02 3.39196724265e-02 - 3.45751625707e-02 3.16057035862e-02 2.60492747623e-02 2.00583037371e-02 1.52718999852e-02 1.20439356208e-02 - 9.96234500644e-03 8.68876908730e-03 8.23785813083e-03 8.68876908731e-03 9.96234500644e-03 1.20439356208e-02 - 1.52718999852e-02 2.00583037371e-02 2.60492747623e-02 3.16057035862e-02 3.45751625707e-02 3.39196724265e-02 - 4.26148361404e-02 4.31931066267e-02 4.31931066267e-02 4.26148361404e-02 4.15214050147e-02 4.00842207790e-02 - 3.75326171916e-02 3.27029610793e-02 2.61902387743e-02 2.00583037371e-02 1.56489970468e-02 1.28937939562e-02 - 1.12137577955e-02 1.03422447642e-02 1.03422447642e-02 1.12137577955e-02 1.28937939562e-02 1.56489970468e-02 - 2.00583037371e-02 2.61902387743e-02 3.27029610793e-02 3.75326171916e-02 4.00842207790e-02 4.15214050147e-02 - 7.14595557378e-02 7.44578962495e-02 7.14595557377e-02 6.30064198497e-02 5.24371687844e-02 4.42637285519e-02 - 3.86293456568e-02 3.27029610793e-02 2.60492747623e-02 2.03920879638e-02 1.66276099946e-02 1.43894839458e-02 - 1.31234388541e-02 1.26855285494e-02 1.31234388541e-02 1.43894839458e-02 1.66276099946e-02 2.03920879638e-02 - 2.60492747623e-02 3.27029610793e-02 3.86293456568e-02 4.42637285519e-02 5.24371687844e-02 6.30064198498e-02 - 1.02255317232e-01 1.02255317232e-01 9.40538638178e-02 7.65071402186e-02 5.69437593911e-02 4.42637285519e-02 - 3.75326171916e-02 3.16057035862e-02 2.55726183949e-02 2.09446754967e-02 1.81502966987e-02 1.66389339974e-02 - 1.59287126341e-02 1.59287126341e-02 1.66389339974e-02 1.81502966987e-02 2.09446754967e-02 2.55726183949e-02 - 3.16057035862e-02 3.75326171916e-02 4.42637285519e-02 5.69437593912e-02 7.65071402186e-02 9.40538638178e-02 - 1.14984029929e-01 1.13479602981e-01 1.01688733220e-01 7.65071402186e-02 5.24371687843e-02 4.00842207790e-02 - 3.45751625707e-02 2.95890354456e-02 2.49964037842e-02 2.20777720561e-02 2.07196781889e-02 2.02040886880e-02 - 2.00653973119e-02 2.02040886880e-02 2.07196781889e-02 2.20777720561e-02 2.49964037842e-02 2.95890354456e-02 - 3.45751625707e-02 4.00842207790e-02 5.24371687844e-02 7.65071402186e-02 1.01688733220e-01 1.13479602981e-01 - 1.15476799016e-01 1.13479602981e-01 9.40538638177e-02 6.30064198497e-02 4.15214050146e-02 3.39196724265e-02 - 3.06792139923e-02 2.73903662614e-02 2.51931467427e-02 2.46286629032e-02 2.49902463304e-02 2.54054430258e-02 - 2.54054430258e-02 2.49902463304e-02 2.46286629032e-02 2.51931467428e-02 2.73903662614e-02 3.06792139923e-02 - 3.39196724265e-02 4.15214050147e-02 6.30064198497e-02 9.40538638178e-02 1.13479602981e-01 1.15476799016e-01 - 9.46618817554e-02 6.87950359263e-02 4.26148361403e-02 2.92890570903e-02 2.61164989591e-02 2.52955690008e-02 - 2.54927185045e-02 2.74769895380e-02 3.04773481039e-02 3.33647463123e-02 3.51262182185e-02 3.51262182185e-02 - 3.33647463124e-02 3.04773481040e-02 2.74769895380e-02 2.54927185045e-02 2.52955690009e-02 2.61164989591e-02 - 2.92890570903e-02 4.26148361403e-02 6.87950359264e-02 9.46618817554e-02 1.07504612680e-01 1.07504612680e-01 - 6.87950359263e-02 4.30330806506e-02 2.67216511960e-02 2.17746576295e-02 2.10846196163e-02 2.20787139947e-02 - 2.52955690008e-02 2.97974895143e-02 3.46096179590e-02 3.86294987685e-02 4.02266025417e-02 3.86294987685e-02 - 3.46096179590e-02 2.97974895143e-02 2.52955690008e-02 2.20787139947e-02 2.10846196163e-02 2.17746576295e-02 - 2.67216511960e-02 4.30330806506e-02 6.87950359263e-02 9.00454509227e-02 9.74781930220e-02 9.00454509227e-02 - 4.26148361403e-02 2.67216511960e-02 1.98434779695e-02 1.76763940774e-02 1.79304117733e-02 2.10846196163e-02 - 2.61164989591e-02 3.26920605346e-02 4.03062291682e-02 4.56987320892e-02 4.56987320892e-02 4.03062291683e-02 - 3.26920605347e-02 2.61164989591e-02 2.10846196163e-02 1.79304117733e-02 1.76763940774e-02 1.98434779696e-02 - 2.67216511960e-02 4.26148361403e-02 6.30064198497e-02 7.65071402185e-02 7.65071402185e-02 6.30064198496e-02 - 2.92890570903e-02 2.17746576295e-02 1.76763940774e-02 1.60510791347e-02 1.76763940774e-02 2.17746576295e-02 - 2.92890570903e-02 4.15474983449e-02 5.38553081705e-02 5.89461275929e-02 5.38553081705e-02 4.15474983449e-02 - 2.92890570903e-02 2.17746576295e-02 1.76763940774e-02 1.60510791348e-02 1.76763940774e-02 2.17746576295e-02 - 2.92890570903e-02 4.15474983449e-02 5.38553081705e-02 5.89461275929e-02 5.38553081705e-02 4.15474983449e-02 - 2.61164989591e-02 2.10846196163e-02 1.79304117733e-02 1.76763940774e-02 1.98434779695e-02 2.67216511960e-02 - 4.26148361403e-02 6.30064198496e-02 7.65071402185e-02 7.65071402185e-02 6.30064198497e-02 4.26148361403e-02 - 2.67216511960e-02 1.98434779696e-02 1.76763940774e-02 1.79304117733e-02 2.10846196163e-02 2.61164989591e-02 - 3.26920605347e-02 4.03062291683e-02 4.56987320892e-02 4.56987320892e-02 4.03062291682e-02 3.26920605346e-02 - 2.52955690008e-02 2.20787139947e-02 2.10846196163e-02 2.17746576295e-02 2.67216511960e-02 4.30330806506e-02 - 6.87950359263e-02 9.00454509227e-02 9.74781930220e-02 9.00454509227e-02 6.87950359263e-02 4.30330806506e-02 - 2.67216511960e-02 2.17746576295e-02 2.10846196163e-02 2.20787139947e-02 2.52955690008e-02 2.97974895143e-02 - 3.46096179590e-02 3.86294987685e-02 4.02266025417e-02 3.86294987685e-02 3.46096179590e-02 2.97974895143e-02 - 2.54927185045e-02 2.52955690008e-02 2.61164989591e-02 2.92890570903e-02 4.26148361403e-02 6.87950359263e-02 - 9.46618817554e-02 1.07504612680e-01 1.07504612680e-01 9.46618817554e-02 6.87950359264e-02 4.26148361403e-02 - 2.92890570903e-02 2.61164989591e-02 2.52955690009e-02 2.54927185045e-02 2.74769895380e-02 3.04773481040e-02 - 3.33647463124e-02 3.51262182185e-02 3.51262182185e-02 3.33647463123e-02 3.04773481039e-02 2.74769895380e-02 - 2.74769895380e-02 2.97974895143e-02 3.26920605347e-02 4.15474983449e-02 6.30064198497e-02 9.00454509228e-02 - 1.07504612680e-01 1.12225405021e-01 1.07504612680e-01 9.00454509228e-02 6.30064198497e-02 4.15474983450e-02 - 3.26920605347e-02 2.97974895143e-02 2.74769895380e-02 2.61756575962e-02 2.65400648390e-02 2.78013937268e-02 - 2.89590113766e-02 2.93979324046e-02 2.89590113766e-02 2.78013937268e-02 2.65400648390e-02 2.61756575962e-02 - 3.04773481040e-02 3.46096179590e-02 4.03062291683e-02 5.38553081705e-02 7.65071402186e-02 9.74781930221e-02 - 1.07504612680e-01 1.07504612680e-01 9.74781930221e-02 7.65071402186e-02 5.38553081706e-02 4.03062291683e-02 - 3.46096179590e-02 3.04773481040e-02 2.65400648390e-02 2.40839675381e-02 2.32030440049e-02 2.30939042850e-02 - 2.31231583381e-02 2.31231583381e-02 2.30939042850e-02 2.32030440049e-02 2.40839675381e-02 2.65400648390e-02 - 3.33647463123e-02 3.86294987685e-02 4.56987320892e-02 5.89461275929e-02 7.65071402186e-02 9.00454509228e-02 - 9.46618817555e-02 9.00454509228e-02 7.65071402186e-02 5.89461275929e-02 4.56987320892e-02 3.86294987685e-02 - 3.33647463124e-02 2.78013937268e-02 2.32030440049e-02 2.03983415996e-02 1.89263764236e-02 1.81430425205e-02 - 1.78657504093e-02 1.81430425204e-02 1.89263764236e-02 2.03983415996e-02 2.32030440049e-02 2.78013937268e-02 - 3.51262182184e-02 4.02266025417e-02 4.56987320892e-02 5.38553081706e-02 6.30064198497e-02 6.87950359264e-02 - 6.87950359264e-02 6.30064198498e-02 5.38553081706e-02 4.56987320892e-02 4.02266025417e-02 3.51262182185e-02 - 2.89590113766e-02 2.30939042849e-02 1.89263764236e-02 1.64062528191e-02 1.48932100517e-02 1.40901390285e-02 - 1.40901390285e-02 1.48932100517e-02 1.64062528191e-02 1.89263764236e-02 2.30939042849e-02 2.89590113766e-02 - 3.51262182185e-02 3.86294987685e-02 4.03062291683e-02 4.15474983450e-02 4.26148361404e-02 4.30330806506e-02 - 4.26148361404e-02 4.15474983450e-02 4.03062291683e-02 3.86294987685e-02 3.51262182185e-02 2.93979324046e-02 - 2.31231583381e-02 1.81430425204e-02 1.48932100517e-02 1.28580577518e-02 1.16029685725e-02 1.11481007476e-02 - 1.16029685725e-02 1.28580577518e-02 1.48932100517e-02 1.81430425204e-02 2.31231583381e-02 2.93979324046e-02 - 3.33647463124e-02 3.46096179590e-02 3.26920605347e-02 2.92890570903e-02 2.67216511960e-02 2.67216511960e-02 - 2.92890570903e-02 3.26920605347e-02 3.46096179591e-02 3.33647463124e-02 2.89590113766e-02 2.31231583381e-02 - 1.78657504093e-02 1.40901390285e-02 1.16029685725e-02 9.96167567605e-03 9.07031679536e-03 9.07031679536e-03 - 9.96167567605e-03 1.16029685725e-02 1.40901390285e-02 1.78657504093e-02 2.31231583381e-02 2.89590113766e-02 - 3.04773481040e-02 2.97974895143e-02 2.61164989591e-02 2.17746576295e-02 1.98434779696e-02 2.17746576295e-02 - 2.61164989591e-02 2.97974895143e-02 3.04773481040e-02 2.78013937268e-02 2.30939042850e-02 1.81430425204e-02 - 1.40901390285e-02 1.11481007476e-02 9.07031679536e-03 7.73176989509e-03 7.25301575416e-03 7.73176989509e-03 - 9.07031679536e-03 1.11481007476e-02 1.40901390285e-02 1.81430425204e-02 2.30939042849e-02 2.78013937268e-02 - 2.74769895380e-02 2.52955690009e-02 2.10846196163e-02 1.76763940775e-02 1.76763940775e-02 2.10846196163e-02 - 2.52955690009e-02 2.74769895380e-02 2.65400648390e-02 2.32030440049e-02 1.89263764236e-02 1.48932100517e-02 - 1.16029685725e-02 9.07031679537e-03 7.25301575416e-03 6.26631005461e-03 6.26631005461e-03 7.25301575416e-03 - 9.07031679537e-03 1.16029685725e-02 1.48932100517e-02 1.89263764236e-02 2.32030440049e-02 2.65400648390e-02 - 2.54927185046e-02 2.20787139947e-02 1.79304117734e-02 1.60510791348e-02 1.79304117734e-02 2.20787139947e-02 - 2.54927185046e-02 2.61756575963e-02 2.40839675381e-02 2.03983415996e-02 1.64062528191e-02 1.28580577518e-02 - 9.96167567605e-03 7.73176989510e-03 6.26631005461e-03 5.74651192180e-03 6.26631005461e-03 7.73176989510e-03 - 9.96167567605e-03 1.28580577518e-02 1.64062528191e-02 2.03983415996e-02 2.40839675381e-02 2.61756575963e-02 - 2.52955690009e-02 2.10846196163e-02 1.76763940775e-02 1.76763940775e-02 2.10846196163e-02 2.52955690009e-02 - 2.74769895380e-02 2.65400648390e-02 2.32030440049e-02 1.89263764236e-02 1.48932100517e-02 1.16029685725e-02 - 9.07031679537e-03 7.25301575416e-03 6.26631005461e-03 6.26631005461e-03 7.25301575416e-03 9.07031679537e-03 - 1.16029685725e-02 1.48932100517e-02 1.89263764236e-02 2.32030440049e-02 2.65400648390e-02 2.74769895380e-02 - 2.61164989591e-02 2.17746576295e-02 1.98434779696e-02 2.17746576295e-02 2.61164989591e-02 2.97974895143e-02 - 3.04773481040e-02 2.78013937268e-02 2.30939042850e-02 1.81430425204e-02 1.40901390285e-02 1.11481007476e-02 - 9.07031679536e-03 7.73176989509e-03 7.25301575416e-03 7.73176989509e-03 9.07031679536e-03 1.11481007476e-02 - 1.40901390285e-02 1.81430425204e-02 2.30939042850e-02 2.78013937268e-02 3.04773481040e-02 2.97974895143e-02 - 2.92890570903e-02 2.67216511960e-02 2.67216511960e-02 2.92890570903e-02 3.26920605347e-02 3.46096179590e-02 - 3.33647463124e-02 2.89590113766e-02 2.31231583381e-02 1.78657504093e-02 1.40901390285e-02 1.16029685725e-02 - 9.96167567605e-03 9.07031679536e-03 9.07031679536e-03 9.96167567605e-03 1.16029685725e-02 1.40901390285e-02 - 1.78657504093e-02 2.31231583381e-02 2.89590113766e-02 3.33647463124e-02 3.46096179591e-02 3.26920605347e-02 - 4.26148361404e-02 4.30330806506e-02 4.26148361404e-02 4.15474983450e-02 4.03062291683e-02 3.86294987685e-02 - 3.51262182185e-02 2.93979324046e-02 2.31231583381e-02 1.81430425204e-02 1.48932100517e-02 1.28580577518e-02 - 1.16029685725e-02 1.11481007476e-02 1.16029685725e-02 1.28580577518e-02 1.48932100517e-02 1.81430425204e-02 - 2.31231583381e-02 2.93979324046e-02 3.51262182185e-02 3.86294987685e-02 4.03062291683e-02 4.15474983450e-02 - 6.87950359264e-02 6.87950359264e-02 6.30064198497e-02 5.38553081706e-02 4.56987320892e-02 4.02266025417e-02 - 3.51262182184e-02 2.89590113766e-02 2.30939042849e-02 1.89263764236e-02 1.64062528191e-02 1.48932100517e-02 - 1.40901390285e-02 1.40901390285e-02 1.48932100517e-02 1.64062528191e-02 1.89263764236e-02 2.30939042849e-02 - 2.89590113766e-02 3.51262182185e-02 4.02266025417e-02 4.56987320892e-02 5.38553081706e-02 6.30064198498e-02 - 9.46618817555e-02 9.00454509228e-02 7.65071402186e-02 5.89461275929e-02 4.56987320892e-02 3.86294987685e-02 - 3.33647463124e-02 2.78013937268e-02 2.32030440049e-02 2.03983415996e-02 1.89263764236e-02 1.81430425204e-02 - 1.78657504093e-02 1.81430425205e-02 1.89263764236e-02 2.03983415996e-02 2.32030440049e-02 2.78013937268e-02 - 3.33647463124e-02 3.86294987685e-02 4.56987320892e-02 5.89461275929e-02 7.65071402186e-02 9.00454509228e-02 - 1.07504612680e-01 9.74781930221e-02 7.65071402186e-02 5.38553081705e-02 4.03062291683e-02 3.46096179590e-02 - 3.04773481040e-02 2.65400648390e-02 2.40839675381e-02 2.32030440049e-02 2.30939042850e-02 2.31231583381e-02 - 2.31231583381e-02 2.30939042850e-02 2.32030440049e-02 2.40839675381e-02 2.65400648390e-02 3.04773481040e-02 - 3.46096179590e-02 4.03062291683e-02 5.38553081706e-02 7.65071402186e-02 9.74781930221e-02 1.07504612680e-01 - 1.07504612680e-01 9.00454509228e-02 6.30064198497e-02 4.15474983449e-02 3.26920605347e-02 2.97974895143e-02 - 2.74769895380e-02 2.61756575962e-02 2.65400648390e-02 2.78013937268e-02 2.89590113766e-02 2.93979324046e-02 - 2.89590113766e-02 2.78013937268e-02 2.65400648390e-02 2.61756575962e-02 2.74769895380e-02 2.97974895143e-02 - 3.26920605347e-02 4.15474983450e-02 6.30064198497e-02 9.00454509228e-02 1.07504612680e-01 1.12225405021e-01 - 6.13624406410e-02 4.23899857520e-02 3.05273339684e-02 2.61164989591e-02 2.44579386769e-02 2.45139707404e-02 - 2.69081613820e-02 3.06792139923e-02 3.45751625707e-02 3.75326171916e-02 3.86293456568e-02 3.75326171916e-02 - 3.45751625707e-02 3.06792139923e-02 2.69081613820e-02 2.45139707405e-02 2.44579386769e-02 2.61164989591e-02 - 3.05273339685e-02 4.23899857520e-02 6.13624406410e-02 7.81193802831e-02 8.44119137022e-02 7.81193802830e-02 - 4.23899857520e-02 2.95749315132e-02 2.35389825848e-02 2.10846196163e-02 2.09116171502e-02 2.36141349499e-02 - 2.81921950446e-02 3.39196724265e-02 4.00842207789e-02 4.42637285519e-02 4.42637285519e-02 4.00842207789e-02 - 3.39196724265e-02 2.81921950446e-02 2.36141349500e-02 2.09116171502e-02 2.10846196163e-02 2.35389825848e-02 - 2.95749315132e-02 4.23899857520e-02 5.87809730550e-02 6.98255714909e-02 6.98255714909e-02 5.87809730550e-02 - 3.05273339684e-02 2.35389825848e-02 1.95329704288e-02 1.79304117733e-02 1.95329704288e-02 2.35389825848e-02 - 3.05273339684e-02 4.15214050146e-02 5.24371687843e-02 5.69437593911e-02 5.24371687843e-02 4.15214050146e-02 - 3.05273339684e-02 2.35389825848e-02 1.95329704289e-02 1.79304117733e-02 1.95329704289e-02 2.35389825848e-02 - 3.05273339684e-02 4.15214050146e-02 5.24371687843e-02 5.69437593911e-02 5.24371687843e-02 4.15214050146e-02 - 2.61164989591e-02 2.10846196163e-02 1.79304117733e-02 1.76763940774e-02 1.98434779695e-02 2.67216511960e-02 - 4.26148361403e-02 6.30064198496e-02 7.65071402185e-02 7.65071402185e-02 6.30064198497e-02 4.26148361403e-02 - 2.67216511960e-02 1.98434779696e-02 1.76763940774e-02 1.79304117733e-02 2.10846196163e-02 2.61164989591e-02 - 3.26920605346e-02 4.03062291682e-02 4.56987320892e-02 4.56987320892e-02 4.03062291682e-02 3.26920605346e-02 - 2.44579386769e-02 2.09116171502e-02 1.95329704288e-02 1.98434779695e-02 2.50661805908e-02 4.31931066266e-02 - 7.14595557376e-02 9.40538638177e-02 1.01688733219e-01 9.40538638177e-02 7.14595557377e-02 4.31931066266e-02 - 2.50661805908e-02 1.98434779696e-02 1.95329704289e-02 2.09116171502e-02 2.44579386769e-02 2.92436594720e-02 - 3.44216532954e-02 3.88811262512e-02 4.06883718959e-02 3.88811262511e-02 3.44216532954e-02 2.92436594720e-02 - 2.45139707404e-02 2.36141349499e-02 2.35389825848e-02 2.67216511960e-02 4.31931066266e-02 7.44578962493e-02 - 1.02255317231e-01 1.13479602981e-01 1.13479602981e-01 1.02255317231e-01 7.44578962494e-02 4.31931066266e-02 - 2.67216511960e-02 2.35389825848e-02 2.36141349500e-02 2.45139707404e-02 2.70513354759e-02 3.05548189106e-02 - 3.39942859271e-02 3.61935553818e-02 3.61935553818e-02 3.39942859271e-02 3.05548189106e-02 2.70513354759e-02 - 2.69081613820e-02 2.81921950446e-02 3.05273339684e-02 4.26148361403e-02 7.14595557377e-02 1.02255317231e-01 - 1.14984029929e-01 1.15476799016e-01 1.14984029929e-01 1.02255317231e-01 7.14595557377e-02 4.26148361403e-02 - 3.05273339684e-02 2.81921950447e-02 2.69081613820e-02 2.62352804996e-02 2.71142998602e-02 2.89473471924e-02 - 3.06728014251e-02 3.13656133728e-02 3.06728014251e-02 2.89473471924e-02 2.71142998602e-02 2.62352804996e-02 - 3.06792139923e-02 3.39196724265e-02 4.15214050146e-02 6.30064198497e-02 9.40538638177e-02 1.13479602981e-01 - 1.15476799016e-01 1.15476799016e-01 1.13479602981e-01 9.40538638178e-02 6.30064198497e-02 4.15214050147e-02 - 3.39196724265e-02 3.06792139923e-02 2.73903662614e-02 2.51931467428e-02 2.46286629032e-02 2.49902463304e-02 - 2.54054430258e-02 2.54054430258e-02 2.49902463304e-02 2.46286629032e-02 2.51931467427e-02 2.73903662614e-02 - 3.45751625707e-02 4.00842207790e-02 5.24371687843e-02 7.65071402186e-02 1.01688733220e-01 1.13479602981e-01 - 1.14984029929e-01 1.13479602981e-01 1.01688733220e-01 7.65071402186e-02 5.24371687844e-02 4.00842207790e-02 - 3.45751625707e-02 2.95890354456e-02 2.49964037842e-02 2.20777720561e-02 2.07196781889e-02 2.02040886880e-02 - 2.00653973119e-02 2.02040886880e-02 2.07196781889e-02 2.20777720561e-02 2.49964037842e-02 2.95890354456e-02 - 3.75326171916e-02 4.42637285519e-02 5.69437593911e-02 7.65071402186e-02 9.40538638178e-02 1.02255317232e-01 - 1.02255317232e-01 9.40538638178e-02 7.65071402186e-02 5.69437593912e-02 4.42637285519e-02 3.75326171916e-02 - 3.16057035862e-02 2.55726183949e-02 2.09446754967e-02 1.81502966987e-02 1.66389339974e-02 1.59287126341e-02 - 1.59287126341e-02 1.66389339974e-02 1.81502966987e-02 2.09446754967e-02 2.55726183949e-02 3.16057035862e-02 - 3.86293456568e-02 4.42637285519e-02 5.24371687844e-02 6.30064198497e-02 7.14595557377e-02 7.44578962495e-02 - 7.14595557378e-02 6.30064198498e-02 5.24371687844e-02 4.42637285519e-02 3.86293456568e-02 3.27029610793e-02 - 2.60492747623e-02 2.03920879638e-02 1.66276099946e-02 1.43894839458e-02 1.31234388541e-02 1.26855285494e-02 - 1.31234388541e-02 1.43894839458e-02 1.66276099946e-02 2.03920879638e-02 2.60492747623e-02 3.27029610793e-02 - 3.75326171916e-02 4.00842207790e-02 4.15214050147e-02 4.26148361404e-02 4.31931066267e-02 4.31931066267e-02 - 4.26148361404e-02 4.15214050147e-02 4.00842207790e-02 3.75326171916e-02 3.27029610793e-02 2.61902387743e-02 - 2.00583037371e-02 1.56489970468e-02 1.28937939562e-02 1.12137577955e-02 1.03422447642e-02 1.03422447642e-02 - 1.12137577955e-02 1.28937939562e-02 1.56489970468e-02 2.00583037371e-02 2.61902387743e-02 3.27029610793e-02 - 3.45751625707e-02 3.39196724265e-02 3.05273339685e-02 2.67216511960e-02 2.50661805908e-02 2.67216511960e-02 - 3.05273339685e-02 3.39196724265e-02 3.45751625707e-02 3.16057035862e-02 2.60492747623e-02 2.00583037371e-02 - 1.52718999852e-02 1.20439356208e-02 9.96234500644e-03 8.68876908731e-03 8.23785813083e-03 8.68876908730e-03 - 9.96234500644e-03 1.20439356208e-02 1.52718999852e-02 2.00583037371e-02 2.60492747623e-02 3.16057035862e-02 - 3.06792139923e-02 2.81921950447e-02 2.35389825848e-02 1.98434779696e-02 1.98434779696e-02 2.35389825848e-02 - 2.81921950447e-02 3.06792139923e-02 2.95890354456e-02 2.55726183949e-02 2.03920879638e-02 1.56489970468e-02 - 1.20439356208e-02 9.50248837488e-03 7.77912772161e-03 6.85668012358e-03 6.85668012358e-03 7.77912772162e-03 - 9.50248837488e-03 1.20439356208e-02 1.56489970468e-02 2.03920879638e-02 2.55726183949e-02 2.95890354456e-02 - 2.69081613821e-02 2.36141349500e-02 1.95329704289e-02 1.76763940775e-02 1.95329704289e-02 2.36141349500e-02 - 2.69081613821e-02 2.73903662614e-02 2.49964037843e-02 2.09446754967e-02 1.66276099946e-02 1.28937939562e-02 - 9.96234500644e-03 7.77912772162e-03 6.36555591034e-03 5.86550216408e-03 6.36555591034e-03 7.77912772162e-03 - 9.96234500644e-03 1.28937939562e-02 1.66276099946e-02 2.09446754967e-02 2.49964037843e-02 2.73903662614e-02 - 2.45139707405e-02 2.09116171503e-02 1.79304117734e-02 1.79304117734e-02 2.09116171503e-02 2.45139707405e-02 - 2.62352804996e-02 2.51931467428e-02 2.20777720561e-02 1.81502966987e-02 1.43894839458e-02 1.12137577956e-02 - 8.68876908731e-03 6.85668012359e-03 5.86550216408e-03 5.86550216408e-03 6.85668012359e-03 8.68876908731e-03 - 1.12137577956e-02 1.43894839458e-02 1.81502966987e-02 2.20777720561e-02 2.51931467428e-02 2.62352804996e-02 - 2.44579386769e-02 2.10846196163e-02 1.95329704289e-02 2.10846196163e-02 2.44579386769e-02 2.70513354759e-02 - 2.71142998602e-02 2.46286629032e-02 2.07196781889e-02 1.66389339973e-02 1.31234388541e-02 1.03422447642e-02 - 8.23785813084e-03 6.85668012358e-03 6.36555591034e-03 6.85668012358e-03 8.23785813084e-03 1.03422447642e-02 - 1.31234388541e-02 1.66389339973e-02 2.07196781889e-02 2.46286629032e-02 2.71142998602e-02 2.70513354759e-02 - 2.61164989591e-02 2.35389825848e-02 2.35389825848e-02 2.61164989591e-02 2.92436594720e-02 3.05548189106e-02 - 2.89473471924e-02 2.49902463304e-02 2.02040886880e-02 1.59287126341e-02 1.26855285494e-02 1.03422447642e-02 - 8.68876908730e-03 7.77912772161e-03 7.77912772161e-03 8.68876908730e-03 1.03422447642e-02 1.26855285494e-02 - 1.59287126341e-02 2.02040886880e-02 2.49902463304e-02 2.89473471924e-02 3.05548189106e-02 2.92436594720e-02 - 3.05273339685e-02 2.95749315132e-02 3.05273339685e-02 3.26920605347e-02 3.44216532954e-02 3.39942859271e-02 - 3.06728014251e-02 2.54054430258e-02 2.00653973118e-02 1.59287126341e-02 1.31234388541e-02 1.12137577955e-02 - 9.96234500643e-03 9.50248837487e-03 9.96234500644e-03 1.12137577955e-02 1.31234388541e-02 1.59287126341e-02 - 2.00653973118e-02 2.54054430258e-02 3.06728014251e-02 3.39942859271e-02 3.44216532954e-02 3.26920605347e-02 - 4.23899857520e-02 4.23899857520e-02 4.15214050147e-02 4.03062291683e-02 3.88811262512e-02 3.61935553818e-02 - 3.13656133727e-02 2.54054430258e-02 2.02040886880e-02 1.66389339973e-02 1.43894839458e-02 1.28937939562e-02 - 1.20439356208e-02 1.20439356208e-02 1.28937939562e-02 1.43894839458e-02 1.66389339973e-02 2.02040886880e-02 - 2.54054430258e-02 3.13656133727e-02 3.61935553818e-02 3.88811262512e-02 4.03062291683e-02 4.15214050147e-02 - 6.13624406410e-02 5.87809730551e-02 5.24371687844e-02 4.56987320892e-02 4.06883718959e-02 3.61935553818e-02 - 3.06728014251e-02 2.49902463304e-02 2.07196781889e-02 1.81502966987e-02 1.66276099946e-02 1.56489970468e-02 - 1.52718999852e-02 1.56489970468e-02 1.66276099946e-02 1.81502966987e-02 2.07196781889e-02 2.49902463304e-02 - 3.06728014251e-02 3.61935553818e-02 4.06883718959e-02 4.56987320893e-02 5.24371687844e-02 5.87809730551e-02 - 7.81193802831e-02 6.98255714910e-02 5.69437593912e-02 4.56987320892e-02 3.88811262512e-02 3.39942859271e-02 - 2.89473471924e-02 2.46286629032e-02 2.20777720561e-02 2.09446754967e-02 2.03920879638e-02 2.00583037371e-02 - 2.00583037371e-02 2.03920879638e-02 2.09446754967e-02 2.20777720561e-02 2.46286629032e-02 2.89473471924e-02 - 3.39942859271e-02 3.88811262512e-02 4.56987320893e-02 5.69437593912e-02 6.98255714910e-02 7.81193802831e-02 - 8.44119137022e-02 6.98255714910e-02 5.24371687844e-02 4.03062291683e-02 3.44216532954e-02 3.05548189106e-02 - 2.71142998602e-02 2.51931467427e-02 2.49964037842e-02 2.55726183949e-02 2.60492747623e-02 2.61902387743e-02 - 2.60492747623e-02 2.55726183949e-02 2.49964037842e-02 2.51931467428e-02 2.71142998602e-02 3.05548189106e-02 - 3.44216532954e-02 4.03062291683e-02 5.24371687844e-02 6.98255714910e-02 8.44119137023e-02 8.97664201881e-02 - 7.81193802831e-02 5.87809730550e-02 4.15214050146e-02 3.26920605347e-02 2.92436594720e-02 2.70513354759e-02 - 2.62352804996e-02 2.73903662614e-02 2.95890354456e-02 3.16057035862e-02 3.27029610793e-02 3.27029610793e-02 - 3.16057035862e-02 2.95890354456e-02 2.73903662614e-02 2.62352804996e-02 2.70513354759e-02 2.92436594720e-02 - 3.26920605347e-02 4.15214050147e-02 5.87809730551e-02 7.81193802831e-02 8.97664201881e-02 8.97664201881e-02 - 4.15726567626e-02 3.31551669202e-02 2.81921950446e-02 2.52955690008e-02 2.45139707404e-02 2.65224863971e-02 - 3.03789244340e-02 3.48628450776e-02 3.89798518705e-02 4.14583134664e-02 4.14583134664e-02 3.89798518705e-02 - 3.48628450776e-02 3.03789244340e-02 2.65224863971e-02 2.45139707405e-02 2.52955690009e-02 2.81921950447e-02 - 3.31551669202e-02 4.15726567626e-02 5.18158087398e-02 5.87902882083e-02 5.87902882083e-02 5.18158087398e-02 - 3.31551669202e-02 2.73937018060e-02 2.36141349499e-02 2.20787139947e-02 2.36141349499e-02 2.73937018060e-02 - 3.31551669201e-02 4.11388919901e-02 4.86717503238e-02 5.17382028008e-02 4.86717503238e-02 4.11388919901e-02 - 3.31551669202e-02 2.73937018060e-02 2.36141349500e-02 2.20787139947e-02 2.36141349499e-02 2.73937018060e-02 - 3.31551669202e-02 4.11388919901e-02 4.86717503238e-02 5.17382028009e-02 4.86717503238e-02 4.11388919901e-02 - 2.81921950446e-02 2.36141349499e-02 2.09116171502e-02 2.10846196163e-02 2.35389825848e-02 2.95749315132e-02 - 4.23899857519e-02 5.87809730550e-02 6.98255714909e-02 6.98255714909e-02 5.87809730550e-02 4.23899857520e-02 - 2.95749315132e-02 2.35389825848e-02 2.10846196163e-02 2.09116171502e-02 2.36141349499e-02 2.81921950446e-02 - 3.39196724265e-02 4.00842207789e-02 4.42637285519e-02 4.42637285519e-02 4.00842207789e-02 3.39196724265e-02 - 2.52955690008e-02 2.20787139947e-02 2.10846196163e-02 2.17746576295e-02 2.67216511960e-02 4.30330806506e-02 - 6.87950359263e-02 9.00454509227e-02 9.74781930219e-02 9.00454509227e-02 6.87950359263e-02 4.30330806506e-02 - 2.67216511960e-02 2.17746576295e-02 2.10846196163e-02 2.20787139947e-02 2.52955690008e-02 2.97974895143e-02 - 3.46096179590e-02 3.86294987685e-02 4.02266025417e-02 3.86294987685e-02 3.46096179590e-02 2.97974895143e-02 - 2.45139707404e-02 2.36141349499e-02 2.35389825848e-02 2.67216511960e-02 4.31931066266e-02 7.44578962493e-02 - 1.02255317231e-01 1.13479602981e-01 1.13479602981e-01 1.02255317231e-01 7.44578962494e-02 4.31931066266e-02 - 2.67216511960e-02 2.35389825848e-02 2.36141349499e-02 2.45139707404e-02 2.70513354759e-02 3.05548189106e-02 - 3.39942859271e-02 3.61935553818e-02 3.61935553818e-02 3.39942859271e-02 3.05548189106e-02 2.70513354759e-02 - 2.65224863971e-02 2.73937018060e-02 2.95749315132e-02 4.30330806506e-02 7.44578962493e-02 1.05382836884e-01 - 1.14284409879e-01 1.12133375345e-01 1.14284409879e-01 1.05382836884e-01 7.44578962494e-02 4.30330806506e-02 - 2.95749315132e-02 2.73937018060e-02 2.65224863971e-02 2.61140936360e-02 2.72051400328e-02 2.92643382604e-02 - 3.12134113093e-02 3.20070729423e-02 3.12134113093e-02 2.92643382604e-02 2.72051400328e-02 2.61140936360e-02 - 3.03789244340e-02 3.31551669202e-02 4.23899857520e-02 6.87950359263e-02 1.02255317231e-01 1.14284409879e-01 - 1.05271425072e-01 1.05271425072e-01 1.14284409879e-01 1.02255317231e-01 6.87950359264e-02 4.23899857520e-02 - 3.31551669202e-02 3.03789244340e-02 2.75584598461e-02 2.55791633527e-02 2.52445347088e-02 2.59181147281e-02 - 2.65858530209e-02 2.65858530209e-02 2.59181147281e-02 2.52445347088e-02 2.55791633527e-02 2.75584598461e-02 - 3.48628450776e-02 4.11388919901e-02 5.87809730550e-02 9.00454509227e-02 1.13479602981e-01 1.12133375345e-01 - 1.05271425072e-01 1.12133375345e-01 1.13479602981e-01 9.00454509228e-02 5.87809730550e-02 4.11388919902e-02 - 3.48628450776e-02 3.04051143293e-02 2.59618688149e-02 2.30253665657e-02 2.17948830411e-02 2.15195877577e-02 - 2.15038028103e-02 2.15195877577e-02 2.17948830411e-02 2.30253665657e-02 2.59618688149e-02 3.04051143293e-02 - 3.89798518706e-02 4.86717503239e-02 6.98255714910e-02 9.74781930220e-02 1.13479602981e-01 1.14284409879e-01 - 1.14284409879e-01 1.13479602981e-01 9.74781930221e-02 6.98255714910e-02 4.86717503239e-02 3.89798518706e-02 - 3.31963581644e-02 2.73091501295e-02 2.24043982374e-02 1.93871115228e-02 1.78888288560e-02 1.72812015630e-02 - 1.72812015630e-02 1.78888288560e-02 1.93871115228e-02 2.24043982374e-02 2.73091501295e-02 3.31963581644e-02 - 4.14583134664e-02 5.17382028009e-02 6.98255714910e-02 9.00454509228e-02 1.02255317232e-01 1.05382836884e-01 - 1.02255317232e-01 9.00454509228e-02 6.98255714910e-02 5.17382028009e-02 4.14583134665e-02 3.49769025118e-02 - 2.84217494631e-02 2.23752455712e-02 1.81179302207e-02 1.56224022211e-02 1.43188164440e-02 1.38961516945e-02 - 1.43188164440e-02 1.56224022211e-02 1.81179302207e-02 2.23752455712e-02 2.84217494631e-02 3.49769025117e-02 - 4.14583134664e-02 4.86717503239e-02 5.87809730551e-02 6.87950359264e-02 7.44578962495e-02 7.44578962495e-02 - 6.87950359264e-02 5.87809730551e-02 4.86717503239e-02 4.14583134665e-02 3.55406204185e-02 2.88778389824e-02 - 2.22713307355e-02 1.72611853896e-02 1.41149739580e-02 1.22934163580e-02 1.14031750108e-02 1.14031750108e-02 - 1.22934163580e-02 1.41149739580e-02 1.72611853896e-02 2.22713307355e-02 2.88778389824e-02 3.55406204185e-02 - 3.89798518706e-02 4.11388919902e-02 4.23899857520e-02 4.30330806507e-02 4.31931066267e-02 4.30330806507e-02 - 4.23899857520e-02 4.11388919902e-02 3.89798518706e-02 3.49769025118e-02 2.88778389824e-02 2.21709602700e-02 - 1.66950035376e-02 1.30618774824e-02 1.08500532301e-02 9.57619631350e-03 9.13724506496e-03 9.57619631350e-03 - 1.08500532301e-02 1.30618774824e-02 1.66950035376e-02 2.21709602700e-02 2.88778389824e-02 3.49769025118e-02 - 3.48628450776e-02 3.31551669202e-02 2.95749315132e-02 2.67216511960e-02 2.67216511960e-02 2.95749315132e-02 - 3.31551669202e-02 3.48628450776e-02 3.31963581644e-02 2.84217494631e-02 2.22713307355e-02 1.66950035376e-02 - 1.26511415702e-02 1.00210602336e-02 8.36360112567e-03 7.50451749096e-03 7.50451749096e-03 8.36360112567e-03 - 1.00210602336e-02 1.26511415702e-02 1.66950035376e-02 2.22713307355e-02 2.84217494631e-02 3.31963581644e-02 - 3.03789244340e-02 2.73937018061e-02 2.35389825848e-02 2.17746576296e-02 2.35389825848e-02 2.73937018061e-02 - 3.03789244340e-02 3.04051143294e-02 2.73091501295e-02 2.23752455712e-02 1.72611853896e-02 1.30618774824e-02 - 1.00210602336e-02 7.92498387888e-03 6.62087909721e-03 6.16385997204e-03 6.62087909721e-03 7.92498387888e-03 - 1.00210602336e-02 1.30618774824e-02 1.72611853896e-02 2.23752455712e-02 2.73091501295e-02 3.04051143294e-02 - 2.65224863971e-02 2.36141349500e-02 2.10846196163e-02 2.10846196163e-02 2.36141349500e-02 2.65224863971e-02 - 2.75584598462e-02 2.59618688149e-02 2.24043982374e-02 1.81179302207e-02 1.41149739580e-02 1.08500532301e-02 - 8.36360112567e-03 6.62087909721e-03 5.69328932590e-03 5.69328932590e-03 6.62087909721e-03 8.36360112567e-03 - 1.08500532301e-02 1.41149739580e-02 1.81179302207e-02 2.24043982374e-02 2.59618688149e-02 2.75584598462e-02 - 2.45139707405e-02 2.20787139947e-02 2.09116171503e-02 2.20787139948e-02 2.45139707405e-02 2.61140936361e-02 - 2.55791633528e-02 2.30253665657e-02 1.93871115228e-02 1.56224022211e-02 1.22934163580e-02 9.57619631351e-03 - 7.50451749097e-03 6.16385997204e-03 5.69328932590e-03 6.16385997204e-03 7.50451749097e-03 9.57619631351e-03 - 1.22934163580e-02 1.56224022211e-02 1.93871115228e-02 2.30253665657e-02 2.55791633528e-02 2.61140936361e-02 - 2.52955690009e-02 2.36141349500e-02 2.36141349500e-02 2.52955690009e-02 2.70513354759e-02 2.72051400328e-02 - 2.52445347088e-02 2.17948830411e-02 1.78888288560e-02 1.43188164440e-02 1.14031750108e-02 9.13724506496e-03 - 7.50451749096e-03 6.62087909721e-03 6.62087909721e-03 7.50451749096e-03 9.13724506496e-03 1.14031750108e-02 - 1.43188164440e-02 1.78888288560e-02 2.17948830411e-02 2.52445347088e-02 2.72051400328e-02 2.70513354759e-02 - 2.81921950447e-02 2.73937018061e-02 2.81921950447e-02 2.97974895143e-02 3.05548189106e-02 2.92643382604e-02 - 2.59181147281e-02 2.15195877577e-02 1.72812015630e-02 1.38961516944e-02 1.14031750108e-02 9.57619631350e-03 - 8.36360112567e-03 7.92498387887e-03 8.36360112567e-03 9.57619631350e-03 1.14031750108e-02 1.38961516944e-02 - 1.72812015630e-02 2.15195877577e-02 2.59181147281e-02 2.92643382604e-02 3.05548189106e-02 2.97974895143e-02 - 3.31551669202e-02 3.31551669202e-02 3.39196724265e-02 3.46096179590e-02 3.39942859271e-02 3.12134113093e-02 - 2.65858530209e-02 2.15038028103e-02 1.72812015630e-02 1.43188164440e-02 1.22934163580e-02 1.08500532301e-02 - 1.00210602336e-02 1.00210602336e-02 1.08500532301e-02 1.22934163580e-02 1.43188164440e-02 1.72812015630e-02 - 2.15038028103e-02 2.65858530209e-02 3.12134113093e-02 3.39942859271e-02 3.46096179590e-02 3.39196724265e-02 - 4.15726567627e-02 4.11388919902e-02 4.00842207790e-02 3.86294987685e-02 3.61935553818e-02 3.20070729422e-02 - 2.65858530209e-02 2.15195877577e-02 1.78888288560e-02 1.56224022211e-02 1.41149739580e-02 1.30618774824e-02 - 1.26511415702e-02 1.30618774824e-02 1.41149739580e-02 1.56224022211e-02 1.78888288560e-02 2.15195877577e-02 - 2.65858530209e-02 3.20070729422e-02 3.61935553818e-02 3.86294987685e-02 4.00842207790e-02 4.11388919902e-02 - 5.18158087398e-02 4.86717503239e-02 4.42637285519e-02 4.02266025417e-02 3.61935553818e-02 3.12134113093e-02 - 2.59181147280e-02 2.17948830411e-02 1.93871115228e-02 1.81179302207e-02 1.72611853896e-02 1.66950035376e-02 - 1.66950035376e-02 1.72611853896e-02 1.81179302207e-02 1.93871115228e-02 2.17948830411e-02 2.59181147281e-02 - 3.12134113093e-02 3.61935553818e-02 4.02266025417e-02 4.42637285519e-02 4.86717503239e-02 5.18158087398e-02 - 5.87902882084e-02 5.17382028009e-02 4.42637285519e-02 3.86294987685e-02 3.39942859271e-02 2.92643382604e-02 - 2.52445347087e-02 2.30253665656e-02 2.24043982374e-02 2.23752455712e-02 2.22713307355e-02 2.21709602700e-02 - 2.22713307355e-02 2.23752455712e-02 2.24043982374e-02 2.30253665657e-02 2.52445347088e-02 2.92643382604e-02 - 3.39942859271e-02 3.86294987685e-02 4.42637285519e-02 5.17382028009e-02 5.87902882084e-02 6.17008685349e-02 - 5.87902882084e-02 4.86717503239e-02 4.00842207790e-02 3.46096179590e-02 3.05548189106e-02 2.72051400328e-02 - 2.55791633527e-02 2.59618688149e-02 2.73091501295e-02 2.84217494631e-02 2.88778389824e-02 2.88778389824e-02 - 2.84217494631e-02 2.73091501295e-02 2.59618688149e-02 2.55791633527e-02 2.72051400328e-02 3.05548189106e-02 - 3.46096179591e-02 4.00842207790e-02 4.86717503239e-02 5.87902882084e-02 6.56428313091e-02 6.56428313091e-02 - 5.18158087398e-02 4.11388919902e-02 3.39196724265e-02 2.97974895143e-02 2.70513354759e-02 2.61140936360e-02 - 2.75584598461e-02 3.04051143293e-02 3.31963581643e-02 3.49769025117e-02 3.55406204185e-02 3.49769025117e-02 - 3.31963581644e-02 3.04051143293e-02 2.75584598461e-02 2.61140936360e-02 2.70513354759e-02 2.97974895143e-02 - 3.39196724265e-02 4.11388919902e-02 5.18158087398e-02 6.17008685349e-02 6.56428313091e-02 6.17008685349e-02 - 3.48683159917e-02 3.03789244340e-02 2.69081613820e-02 2.54927185045e-02 2.69081613820e-02 3.03789244340e-02 - 3.48683159917e-02 3.97328533270e-02 4.36605690195e-02 4.51578187598e-02 4.36605690195e-02 3.97328533271e-02 - 3.48683159917e-02 3.03789244340e-02 2.69081613820e-02 2.54927185045e-02 2.69081613820e-02 3.03789244340e-02 - 3.48683159917e-02 3.97328533271e-02 4.36605690195e-02 4.51578187598e-02 4.36605690195e-02 3.97328533271e-02 - 3.03789244340e-02 2.65224863971e-02 2.45139707404e-02 2.52955690008e-02 2.81921950446e-02 3.31551669202e-02 - 4.15726567626e-02 5.18158087397e-02 5.87902882083e-02 5.87902882083e-02 5.18158087398e-02 4.15726567627e-02 - 3.31551669202e-02 2.81921950447e-02 2.52955690008e-02 2.45139707404e-02 2.65224863971e-02 3.03789244340e-02 - 3.48628450776e-02 3.89798518705e-02 4.14583134664e-02 4.14583134664e-02 3.89798518706e-02 3.48628450776e-02 - 2.69081613820e-02 2.45139707404e-02 2.44579386769e-02 2.61164989591e-02 3.05273339684e-02 4.23899857519e-02 - 6.13624406409e-02 7.81193802830e-02 8.44119137021e-02 7.81193802830e-02 6.13624406410e-02 4.23899857520e-02 - 3.05273339684e-02 2.61164989591e-02 2.44579386769e-02 2.45139707404e-02 2.69081613820e-02 3.06792139923e-02 - 3.45751625707e-02 3.75326171916e-02 3.86293456568e-02 3.75326171916e-02 3.45751625707e-02 3.06792139923e-02 - 2.54927185045e-02 2.52955690008e-02 2.61164989591e-02 2.92890570903e-02 4.26148361403e-02 6.87950359263e-02 - 9.46618817553e-02 1.07504612679e-01 1.07504612680e-01 9.46618817554e-02 6.87950359264e-02 4.26148361403e-02 - 2.92890570903e-02 2.61164989591e-02 2.52955690008e-02 2.54927185045e-02 2.74769895380e-02 3.04773481040e-02 - 3.33647463124e-02 3.51262182185e-02 3.51262182185e-02 3.33647463124e-02 3.04773481040e-02 2.74769895380e-02 - 2.69081613820e-02 2.81921950446e-02 3.05273339684e-02 4.26148361403e-02 7.14595557376e-02 1.02255317231e-01 - 1.14984029929e-01 1.15476799016e-01 1.14984029929e-01 1.02255317231e-01 7.14595557377e-02 4.26148361403e-02 - 3.05273339684e-02 2.81921950446e-02 2.69081613820e-02 2.62352804996e-02 2.71142998602e-02 2.89473471924e-02 - 3.06728014251e-02 3.13656133728e-02 3.06728014251e-02 2.89473471924e-02 2.71142998602e-02 2.62352804996e-02 - 3.03789244340e-02 3.31551669202e-02 4.23899857519e-02 6.87950359263e-02 1.02255317231e-01 1.14284409879e-01 - 1.05271425072e-01 1.05271425072e-01 1.14284409879e-01 1.02255317231e-01 6.87950359263e-02 4.23899857520e-02 - 3.31551669202e-02 3.03789244340e-02 2.75584598461e-02 2.55791633527e-02 2.52445347088e-02 2.59181147281e-02 - 2.65858530209e-02 2.65858530209e-02 2.59181147281e-02 2.52445347088e-02 2.55791633527e-02 2.75584598461e-02 - 3.48683159917e-02 4.15726567626e-02 6.13624406409e-02 9.46618817553e-02 1.14984029929e-01 1.05271425072e-01 - 9.35850333253e-02 1.05271425072e-01 1.14984029929e-01 9.46618817554e-02 6.13624406410e-02 4.15726567626e-02 - 3.48683159917e-02 3.06058831029e-02 2.62414819209e-02 2.33118163733e-02 2.21386056500e-02 2.19611077293e-02 - 2.19947599998e-02 2.19611077293e-02 2.21386056500e-02 2.33118163733e-02 2.62414819209e-02 3.06058831029e-02 - 3.97328533271e-02 5.18158087398e-02 7.81193802830e-02 1.07504612680e-01 1.15476799016e-01 1.05271425072e-01 - 1.05271425072e-01 1.15476799016e-01 1.07504612680e-01 7.81193802831e-02 5.18158087398e-02 3.97328533271e-02 - 3.38925854809e-02 2.81653274579e-02 2.31387869200e-02 1.99975947255e-02 1.85132763207e-02 1.79741436761e-02 - 1.79741436761e-02 1.85132763207e-02 1.99975947255e-02 2.31387869200e-02 2.81653274579e-02 3.38925854809e-02 - 4.36605690195e-02 5.87902882084e-02 8.44119137022e-02 1.07504612680e-01 1.14984029929e-01 1.14284409879e-01 - 1.14984029929e-01 1.07504612680e-01 8.44119137023e-02 5.87902882084e-02 4.36605690195e-02 3.62673468746e-02 - 2.99301385615e-02 2.37301976795e-02 1.91106081253e-02 1.63906429721e-02 1.50424663757e-02 1.46288647205e-02 - 1.50424663757e-02 1.63906429721e-02 1.91106081253e-02 2.37301976795e-02 2.99301385615e-02 3.62673468746e-02 - 4.51578187598e-02 5.87902882084e-02 7.81193802831e-02 9.46618817555e-02 1.02255317232e-01 1.02255317232e-01 - 9.46618817555e-02 7.81193802831e-02 5.87902882084e-02 4.51578187598e-02 3.73540502297e-02 3.07822057975e-02 - 2.40967233573e-02 1.86355176327e-02 1.50739196267e-02 1.30485807277e-02 1.21045128275e-02 1.21045128275e-02 - 1.30485807277e-02 1.50739196267e-02 1.86355176327e-02 2.40967233573e-02 3.07822057975e-02 3.73540502296e-02 - 4.36605690195e-02 5.18158087398e-02 6.13624406410e-02 6.87950359264e-02 7.14595557378e-02 6.87950359264e-02 - 6.13624406410e-02 5.18158087398e-02 4.36605690195e-02 3.73540502297e-02 3.09609358381e-02 2.40904203272e-02 - 1.81617046076e-02 1.40806383265e-02 1.16095381953e-02 1.02401100733e-02 9.78219490488e-03 1.02401100733e-02 - 1.16095381953e-02 1.40806383265e-02 1.81617046076e-02 2.40904203272e-02 3.09609358381e-02 3.73540502297e-02 - 3.97328533271e-02 4.15726567627e-02 4.23899857520e-02 4.26148361404e-02 4.26148361404e-02 4.23899857520e-02 - 4.15726567627e-02 3.97328533271e-02 3.62673468746e-02 3.07822057975e-02 2.40904203272e-02 1.79266526907e-02 - 1.34421324248e-02 1.06051613742e-02 8.89920278516e-03 8.04455907974e-03 8.04455907974e-03 8.89920278516e-03 - 1.06051613742e-02 1.34421324248e-02 1.79266526907e-02 2.40904203272e-02 3.07822057975e-02 3.62673468746e-02 - 3.48683159917e-02 3.31551669202e-02 3.05273339685e-02 2.92890570903e-02 3.05273339685e-02 3.31551669202e-02 - 3.48683159917e-02 3.38925854810e-02 2.99301385615e-02 2.40967233573e-02 1.81617046076e-02 1.34421324248e-02 - 1.02248872526e-02 8.15758815908e-03 6.92803651720e-03 6.50338402317e-03 6.92803651720e-03 8.15758815908e-03 - 1.02248872526e-02 1.34421324248e-02 1.81617046076e-02 2.40967233573e-02 2.99301385615e-02 3.38925854809e-02 - 3.03789244340e-02 2.81921950447e-02 2.61164989591e-02 2.61164989592e-02 2.81921950447e-02 3.03789244340e-02 - 3.06058831030e-02 2.81653274579e-02 2.37301976795e-02 1.86355176327e-02 1.40806383265e-02 1.06051613742e-02 - 8.15758815908e-03 6.53729803367e-03 5.69411798450e-03 5.69411798450e-03 6.53729803367e-03 8.15758815908e-03 - 1.06051613742e-02 1.40806383265e-02 1.86355176327e-02 2.37301976795e-02 2.81653274579e-02 3.06058831030e-02 - 2.69081613821e-02 2.52955690009e-02 2.44579386769e-02 2.52955690009e-02 2.69081613821e-02 2.75584598462e-02 - 2.62414819209e-02 2.31387869200e-02 1.91106081254e-02 1.50739196267e-02 1.16095381953e-02 8.89920278516e-03 - 6.92803651720e-03 5.69411798450e-03 5.26652136817e-03 5.69411798450e-03 6.92803651720e-03 8.89920278516e-03 - 1.16095381953e-02 1.50739196267e-02 1.91106081253e-02 2.31387869200e-02 2.62414819209e-02 2.75584598462e-02 - 2.54927185046e-02 2.45139707405e-02 2.45139707405e-02 2.54927185046e-02 2.62352804996e-02 2.55791633528e-02 - 2.33118163733e-02 1.99975947255e-02 1.63906429721e-02 1.30485807277e-02 1.02401100733e-02 8.04455907974e-03 - 6.50338402317e-03 5.69411798450e-03 5.69411798450e-03 6.50338402317e-03 8.04455907974e-03 1.02401100733e-02 - 1.30485807277e-02 1.63906429721e-02 1.99975947255e-02 2.33118163733e-02 2.55791633528e-02 2.62352804996e-02 - 2.69081613821e-02 2.65224863971e-02 2.69081613821e-02 2.74769895380e-02 2.71142998602e-02 2.52445347088e-02 - 2.21386056500e-02 1.85132763207e-02 1.50424663757e-02 1.21045128275e-02 9.78219490488e-03 8.04455907974e-03 - 6.92803651720e-03 6.53729803366e-03 6.92803651720e-03 8.04455907974e-03 9.78219490488e-03 1.21045128275e-02 - 1.50424663757e-02 1.85132763207e-02 2.21386056500e-02 2.52445347088e-02 2.71142998602e-02 2.74769895380e-02 - 3.03789244340e-02 3.03789244340e-02 3.06792139923e-02 3.04773481040e-02 2.89473471924e-02 2.59181147281e-02 - 2.19611077293e-02 1.79741436760e-02 1.46288647205e-02 1.21045128275e-02 1.02401100733e-02 8.89920278515e-03 - 8.15758815907e-03 8.15758815907e-03 8.89920278515e-03 1.02401100733e-02 1.21045128275e-02 1.46288647205e-02 - 1.79741436760e-02 2.19611077293e-02 2.59181147281e-02 2.89473471924e-02 3.04773481040e-02 3.06792139923e-02 - 3.48683159917e-02 3.48628450777e-02 3.45751625707e-02 3.33647463124e-02 3.06728014251e-02 2.65858530209e-02 - 2.19947599998e-02 1.79741436760e-02 1.50424663757e-02 1.30485807277e-02 1.16095381953e-02 1.06051613742e-02 - 1.02248872526e-02 1.06051613742e-02 1.16095381953e-02 1.30485807277e-02 1.50424663757e-02 1.79741436760e-02 - 2.19947599998e-02 2.65858530209e-02 3.06728014251e-02 3.33647463124e-02 3.45751625707e-02 3.48628450776e-02 - 3.97328533271e-02 3.89798518706e-02 3.75326171916e-02 3.51262182185e-02 3.13656133727e-02 2.65858530209e-02 - 2.19611077293e-02 1.85132763207e-02 1.63906429721e-02 1.50739196267e-02 1.40806383265e-02 1.34421324248e-02 - 1.34421324248e-02 1.40806383265e-02 1.50739196267e-02 1.63906429721e-02 1.85132763207e-02 2.19611077293e-02 - 2.65858530209e-02 3.13656133727e-02 3.51262182185e-02 3.75326171916e-02 3.89798518706e-02 3.97328533271e-02 - 4.36605690195e-02 4.14583134665e-02 3.86293456568e-02 3.51262182185e-02 3.06728014251e-02 2.59181147280e-02 - 2.21386056500e-02 1.99975947255e-02 1.91106081253e-02 1.86355176327e-02 1.81617046076e-02 1.79266526907e-02 - 1.81617046076e-02 1.86355176327e-02 1.91106081253e-02 1.99975947255e-02 2.21386056500e-02 2.59181147281e-02 - 3.06728014251e-02 3.51262182185e-02 3.86293456568e-02 4.14583134665e-02 4.36605690195e-02 4.45490987358e-02 - 4.51578187598e-02 4.14583134665e-02 3.75326171916e-02 3.33647463124e-02 2.89473471924e-02 2.52445347087e-02 - 2.33118163733e-02 2.31387869200e-02 2.37301976795e-02 2.40967233573e-02 2.40904203272e-02 2.40904203272e-02 - 2.40967233573e-02 2.37301976795e-02 2.31387869200e-02 2.33118163733e-02 2.52445347088e-02 2.89473471924e-02 - 3.33647463124e-02 3.75326171916e-02 4.14583134665e-02 4.51578187598e-02 4.76134439313e-02 4.76134439313e-02 - 4.36605690195e-02 3.89798518706e-02 3.45751625707e-02 3.04773481040e-02 2.71142998602e-02 2.55791633527e-02 - 2.62414819209e-02 2.81653274579e-02 2.99301385615e-02 3.07822057975e-02 3.09609358381e-02 3.07822057975e-02 - 2.99301385615e-02 2.81653274579e-02 2.62414819209e-02 2.55791633527e-02 2.71142998602e-02 3.04773481040e-02 - 3.45751625707e-02 3.89798518706e-02 4.36605690195e-02 4.76134439312e-02 4.91904413241e-02 4.76134439312e-02 - 3.97328533271e-02 3.48628450776e-02 3.06792139923e-02 2.74769895380e-02 2.62352804996e-02 2.75584598461e-02 - 3.06058831029e-02 3.38925854809e-02 3.62673468745e-02 3.73540502296e-02 3.73540502296e-02 3.62673468746e-02 - 3.38925854809e-02 3.06058831029e-02 2.75584598461e-02 2.62352804996e-02 2.74769895380e-02 3.06792139923e-02 - 3.48628450776e-02 3.97328533271e-02 4.45490987358e-02 4.76134439312e-02 4.76134439312e-02 4.45490987358e-02 - 3.06058831029e-02 2.75584598461e-02 2.62352804996e-02 2.74769895380e-02 3.06792139923e-02 3.48628450776e-02 - 3.97328533270e-02 4.45490987357e-02 4.76134439312e-02 4.76134439312e-02 4.45490987358e-02 3.97328533271e-02 - 3.48628450776e-02 3.06792139923e-02 2.74769895380e-02 2.62352804996e-02 2.75584598461e-02 3.06058831029e-02 - 3.38925854809e-02 3.62673468746e-02 3.73540502296e-02 3.73540502296e-02 3.62673468746e-02 3.38925854809e-02 - 2.75584598461e-02 2.61140936360e-02 2.70513354759e-02 2.97974895143e-02 3.39196724265e-02 4.11388919901e-02 - 5.18158087397e-02 6.17008685348e-02 6.56428313090e-02 6.17008685349e-02 5.18158087398e-02 4.11388919902e-02 - 3.39196724265e-02 2.97974895143e-02 2.70513354759e-02 2.61140936360e-02 2.75584598461e-02 3.04051143293e-02 - 3.31963581644e-02 3.49769025117e-02 3.55406204185e-02 3.49769025118e-02 3.31963581644e-02 3.04051143293e-02 - 2.62352804996e-02 2.70513354759e-02 2.92436594720e-02 3.26920605347e-02 4.15214050146e-02 5.87809730550e-02 - 7.81193802830e-02 8.97664201879e-02 8.97664201880e-02 7.81193802830e-02 5.87809730550e-02 4.15214050146e-02 - 3.26920605347e-02 2.92436594720e-02 2.70513354759e-02 2.62352804996e-02 2.73903662614e-02 2.95890354456e-02 - 3.16057035862e-02 3.27029610793e-02 3.27029610793e-02 3.16057035862e-02 2.95890354456e-02 2.73903662614e-02 - 2.74769895380e-02 2.97974895143e-02 3.26920605346e-02 4.15474983449e-02 6.30064198496e-02 9.00454509227e-02 - 1.07504612679e-01 1.12225405020e-01 1.07504612680e-01 9.00454509227e-02 6.30064198497e-02 4.15474983449e-02 - 3.26920605347e-02 2.97974895143e-02 2.74769895380e-02 2.61756575962e-02 2.65400648390e-02 2.78013937268e-02 - 2.89590113766e-02 2.93979324046e-02 2.89590113766e-02 2.78013937268e-02 2.65400648390e-02 2.61756575962e-02 - 3.06792139923e-02 3.39196724265e-02 4.15214050146e-02 6.30064198496e-02 9.40538638176e-02 1.13479602981e-01 - 1.15476799016e-01 1.15476799016e-01 1.13479602981e-01 9.40538638177e-02 6.30064198497e-02 4.15214050146e-02 - 3.39196724265e-02 3.06792139923e-02 2.73903662614e-02 2.51931467428e-02 2.46286629032e-02 2.49902463304e-02 - 2.54054430258e-02 2.54054430258e-02 2.49902463304e-02 2.46286629032e-02 2.51931467427e-02 2.73903662614e-02 - 3.48628450776e-02 4.11388919901e-02 5.87809730550e-02 9.00454509227e-02 1.13479602981e-01 1.12133375345e-01 - 1.05271425072e-01 1.12133375345e-01 1.13479602981e-01 9.00454509227e-02 5.87809730550e-02 4.11388919901e-02 - 3.48628450776e-02 3.04051143293e-02 2.59618688149e-02 2.30253665657e-02 2.17948830411e-02 2.15195877577e-02 - 2.15038028103e-02 2.15195877577e-02 2.17948830411e-02 2.30253665657e-02 2.59618688149e-02 3.04051143293e-02 - 3.97328533270e-02 5.18158087397e-02 7.81193802830e-02 1.07504612680e-01 1.15476799016e-01 1.05271425072e-01 - 1.05271425072e-01 1.15476799016e-01 1.07504612680e-01 7.81193802831e-02 5.18158087398e-02 3.97328533271e-02 - 3.38925854809e-02 2.81653274579e-02 2.31387869200e-02 1.99975947255e-02 1.85132763207e-02 1.79741436761e-02 - 1.79741436761e-02 1.85132763207e-02 1.99975947255e-02 2.31387869200e-02 2.81653274579e-02 3.38925854809e-02 - 4.45490987358e-02 6.17008685349e-02 8.97664201880e-02 1.12225405021e-01 1.15476799016e-01 1.12133375345e-01 - 1.15476799016e-01 1.12225405021e-01 8.97664201881e-02 6.17008685349e-02 4.45490987358e-02 3.66854482599e-02 - 3.04404777485e-02 2.42075414898e-02 1.94536795471e-02 1.66439398964e-02 1.52762540169e-02 1.48656767561e-02 - 1.52762540169e-02 1.66439398964e-02 1.94536795471e-02 2.42075414898e-02 3.04404777485e-02 3.66854482599e-02 - 4.76134439312e-02 6.56428313091e-02 8.97664201881e-02 1.07504612680e-01 1.13479602981e-01 1.13479602981e-01 - 1.07504612680e-01 8.97664201881e-02 6.56428313091e-02 4.76134439312e-02 3.82423088608e-02 3.17361436403e-02 - 2.51249889113e-02 1.94290489291e-02 1.55937378378e-02 1.34169388324e-02 1.24265880360e-02 1.24265880360e-02 - 1.34169388324e-02 1.55937378378e-02 1.94290489291e-02 2.51249889113e-02 3.17361436403e-02 3.82423088608e-02 - 4.76134439312e-02 6.17008685349e-02 7.81193802831e-02 9.00454509228e-02 9.40538638178e-02 9.00454509228e-02 - 7.81193802831e-02 6.17008685349e-02 4.76134439313e-02 3.86937384314e-02 3.20848019959e-02 2.53973709283e-02 - 1.92840317465e-02 1.48492046219e-02 1.21090534530e-02 1.06109348738e-02 1.01198499891e-02 1.06109348738e-02 - 1.21090534529e-02 1.48492046219e-02 1.92840317465e-02 2.53973709283e-02 3.20848019959e-02 3.86937384314e-02 - 4.45490987358e-02 5.18158087398e-02 5.87809730551e-02 6.30064198498e-02 6.30064198498e-02 5.87809730551e-02 - 5.18158087398e-02 4.45490987358e-02 3.82423088608e-02 3.20848019959e-02 2.53797374387e-02 1.90345757835e-02 - 1.42308801751e-02 1.11331987338e-02 9.28357359923e-03 8.37400390520e-03 8.37400390520e-03 9.28357359923e-03 - 1.11331987338e-02 1.42308801751e-02 1.90345757835e-02 2.53797374387e-02 3.20848019959e-02 3.82423088608e-02 - 3.97328533271e-02 4.11388919902e-02 4.15214050147e-02 4.15474983450e-02 4.15214050147e-02 4.11388919902e-02 - 3.97328533271e-02 3.66854482599e-02 3.17361436403e-02 2.53973709283e-02 1.90345757835e-02 1.39667079820e-02 - 1.05557815436e-02 8.41997198039e-03 7.17862759620e-03 6.75449318420e-03 7.17862759620e-03 8.41997198039e-03 - 1.05557815436e-02 1.39667079820e-02 1.90345757835e-02 2.53973709283e-02 3.17361436403e-02 3.66854482599e-02 - 3.48628450776e-02 3.39196724265e-02 3.26920605347e-02 3.26920605347e-02 3.39196724265e-02 3.48628450777e-02 - 3.38925854810e-02 3.04404777485e-02 2.51249889113e-02 1.92840317465e-02 1.42308801751e-02 1.05557815436e-02 - 8.11230157085e-03 6.56138198057e-03 5.76667312114e-03 5.76667312114e-03 6.56138198057e-03 8.11230157085e-03 - 1.05557815436e-02 1.42308801751e-02 1.92840317465e-02 2.51249889113e-02 3.04404777485e-02 3.38925854809e-02 - 3.06792139923e-02 2.97974895143e-02 2.92436594720e-02 2.97974895143e-02 3.06792139923e-02 3.04051143294e-02 - 2.81653274579e-02 2.42075414899e-02 1.94290489291e-02 1.48492046219e-02 1.11331987338e-02 8.41997198039e-03 - 6.56138198057e-03 5.43239778449e-03 5.04343778102e-03 5.43239778449e-03 6.56138198057e-03 8.41997198039e-03 - 1.11331987338e-02 1.48492046219e-02 1.94290489291e-02 2.42075414899e-02 2.81653274579e-02 3.04051143294e-02 - 2.74769895380e-02 2.70513354759e-02 2.70513354759e-02 2.74769895380e-02 2.73903662614e-02 2.59618688149e-02 - 2.31387869200e-02 1.94536795471e-02 1.55937378378e-02 1.21090534530e-02 9.28357359923e-03 7.17862759620e-03 - 5.76667312114e-03 5.04343778102e-03 5.04343778102e-03 5.76667312114e-03 7.17862759620e-03 9.28357359923e-03 - 1.21090534530e-02 1.55937378378e-02 1.94536795471e-02 2.31387869200e-02 2.59618688149e-02 2.73903662614e-02 - 2.62352804996e-02 2.61140936361e-02 2.62352804996e-02 2.61756575963e-02 2.51931467428e-02 2.30253665657e-02 - 1.99975947255e-02 1.66439398964e-02 1.34169388324e-02 1.06109348738e-02 8.37400390520e-03 6.75449318420e-03 - 5.76667312114e-03 5.43239778449e-03 5.76667312114e-03 6.75449318420e-03 8.37400390520e-03 1.06109348738e-02 - 1.34169388324e-02 1.66439398964e-02 1.99975947255e-02 2.30253665657e-02 2.51931467428e-02 2.61756575963e-02 - 2.75584598462e-02 2.75584598462e-02 2.73903662614e-02 2.65400648390e-02 2.46286629032e-02 2.17948830411e-02 - 1.85132763207e-02 1.52762540169e-02 1.24265880360e-02 1.01198499891e-02 8.37400390520e-03 7.17862759619e-03 - 6.56138198056e-03 6.56138198056e-03 7.17862759619e-03 8.37400390520e-03 1.01198499891e-02 1.24265880360e-02 - 1.52762540169e-02 1.85132763207e-02 2.17948830411e-02 2.46286629032e-02 2.65400648390e-02 2.73903662614e-02 - 3.06058831030e-02 3.04051143294e-02 2.95890354456e-02 2.78013937268e-02 2.49902463304e-02 2.15195877577e-02 - 1.79741436760e-02 1.48656767560e-02 1.24265880360e-02 1.06109348738e-02 9.28357359922e-03 8.41997198038e-03 - 8.11230157084e-03 8.41997198038e-03 9.28357359922e-03 1.06109348738e-02 1.24265880360e-02 1.48656767560e-02 - 1.79741436760e-02 2.15195877577e-02 2.49902463304e-02 2.78013937268e-02 2.95890354456e-02 3.04051143294e-02 - 3.38925854810e-02 3.31963581644e-02 3.16057035862e-02 2.89590113766e-02 2.54054430258e-02 2.15038028103e-02 - 1.79741436760e-02 1.52762540168e-02 1.34169388324e-02 1.21090534529e-02 1.11331987338e-02 1.05557815436e-02 - 1.05557815436e-02 1.11331987338e-02 1.21090534529e-02 1.34169388324e-02 1.52762540169e-02 1.79741436760e-02 - 2.15038028103e-02 2.54054430258e-02 2.89590113766e-02 3.16057035862e-02 3.31963581644e-02 3.38925854810e-02 - 3.62673468746e-02 3.49769025118e-02 3.27029610793e-02 2.93979324046e-02 2.54054430258e-02 2.15195877577e-02 - 1.85132763207e-02 1.66439398964e-02 1.55937378378e-02 1.48492046219e-02 1.42308801751e-02 1.39667079820e-02 - 1.42308801751e-02 1.48492046219e-02 1.55937378378e-02 1.66439398964e-02 1.85132763207e-02 2.15195877577e-02 - 2.54054430258e-02 2.93979324045e-02 3.27029610793e-02 3.49769025118e-02 3.62673468746e-02 3.66854482599e-02 - 3.73540502297e-02 3.55406204185e-02 3.27029610793e-02 2.89590113766e-02 2.49902463304e-02 2.17948830411e-02 - 1.99975947255e-02 1.94536795471e-02 1.94290489291e-02 1.92840317465e-02 1.90345757835e-02 1.90345757835e-02 - 1.92840317465e-02 1.94290489291e-02 1.94536795471e-02 1.99975947255e-02 2.17948830411e-02 2.49902463304e-02 - 2.89590113766e-02 3.27029610793e-02 3.55406204185e-02 3.73540502297e-02 3.82423088608e-02 3.82423088608e-02 - 3.73540502297e-02 3.49769025118e-02 3.16057035862e-02 2.78013937268e-02 2.46286629032e-02 2.30253665656e-02 - 2.31387869200e-02 2.42075414898e-02 2.51249889113e-02 2.53973709283e-02 2.53797374387e-02 2.53973709283e-02 - 2.51249889113e-02 2.42075414898e-02 2.31387869200e-02 2.30253665657e-02 2.46286629032e-02 2.78013937268e-02 - 3.16057035862e-02 3.49769025118e-02 3.73540502297e-02 3.86937384314e-02 3.91205047681e-02 3.86937384314e-02 - 3.62673468746e-02 3.31963581644e-02 2.95890354456e-02 2.65400648390e-02 2.51931467427e-02 2.59618688149e-02 - 2.81653274579e-02 3.04404777485e-02 3.17361436402e-02 3.20848019958e-02 3.20848019958e-02 3.17361436402e-02 - 3.04404777485e-02 2.81653274579e-02 2.59618688149e-02 2.51931467428e-02 2.65400648390e-02 2.95890354456e-02 - 3.31963581644e-02 3.62673468746e-02 3.82423088608e-02 3.91205047681e-02 3.91205047681e-02 3.82423088608e-02 - 3.38925854809e-02 3.04051143293e-02 2.73903662614e-02 2.61756575962e-02 2.73903662614e-02 3.04051143293e-02 - 3.38925854809e-02 3.66854482599e-02 3.82423088607e-02 3.86937384314e-02 3.82423088607e-02 3.66854482599e-02 - 3.38925854809e-02 3.04051143293e-02 2.73903662614e-02 2.61756575962e-02 2.73903662614e-02 3.04051143293e-02 - 3.38925854809e-02 3.66854482599e-02 3.82423088608e-02 3.86937384314e-02 3.82423088608e-02 3.66854482599e-02 - 2.62414819209e-02 2.55791633527e-02 2.71142998602e-02 3.04773481040e-02 3.45751625707e-02 3.89798518705e-02 - 4.36605690195e-02 4.76134439312e-02 4.91904413240e-02 4.76134439312e-02 4.36605690195e-02 3.89798518706e-02 - 3.45751625707e-02 3.04773481040e-02 2.71142998602e-02 2.55791633527e-02 2.62414819209e-02 2.81653274579e-02 - 2.99301385615e-02 3.07822057975e-02 3.09609358381e-02 3.07822057975e-02 2.99301385615e-02 2.81653274579e-02 - 2.55791633527e-02 2.72051400328e-02 3.05548189106e-02 3.46096179590e-02 4.00842207789e-02 4.86717503238e-02 - 5.87902882083e-02 6.56428313090e-02 6.56428313090e-02 5.87902882083e-02 4.86717503239e-02 4.00842207790e-02 - 3.46096179590e-02 3.05548189106e-02 2.72051400328e-02 2.55791633527e-02 2.59618688149e-02 2.73091501295e-02 - 2.84217494631e-02 2.88778389824e-02 2.88778389824e-02 2.84217494631e-02 2.73091501295e-02 2.59618688149e-02 - 2.71142998602e-02 3.05548189106e-02 3.44216532954e-02 4.03062291682e-02 5.24371687843e-02 6.98255714909e-02 - 8.44119137021e-02 8.97664201879e-02 8.44119137022e-02 6.98255714909e-02 5.24371687843e-02 4.03062291683e-02 - 3.44216532954e-02 3.05548189106e-02 2.71142998602e-02 2.51931467428e-02 2.49964037842e-02 2.55726183949e-02 - 2.60492747623e-02 2.61902387743e-02 2.60492747623e-02 2.55726183949e-02 2.49964037842e-02 2.51931467428e-02 - 3.04773481040e-02 3.46096179590e-02 4.03062291682e-02 5.38553081705e-02 7.65071402185e-02 9.74781930219e-02 - 1.07504612679e-01 1.07504612679e-01 9.74781930219e-02 7.65071402185e-02 5.38553081705e-02 4.03062291683e-02 - 3.46096179590e-02 3.04773481040e-02 2.65400648390e-02 2.40839675381e-02 2.32030440049e-02 2.30939042850e-02 - 2.31231583381e-02 2.31231583381e-02 2.30939042850e-02 2.32030440049e-02 2.40839675381e-02 2.65400648390e-02 - 3.45751625707e-02 4.00842207789e-02 5.24371687843e-02 7.65071402185e-02 1.01688733219e-01 1.13479602981e-01 - 1.14984029929e-01 1.13479602981e-01 1.01688733220e-01 7.65071402185e-02 5.24371687843e-02 4.00842207789e-02 - 3.45751625707e-02 2.95890354456e-02 2.49964037843e-02 2.20777720561e-02 2.07196781889e-02 2.02040886880e-02 - 2.00653973119e-02 2.02040886880e-02 2.07196781889e-02 2.20777720561e-02 2.49964037842e-02 2.95890354456e-02 - 3.89798518705e-02 4.86717503238e-02 6.98255714909e-02 9.74781930219e-02 1.13479602981e-01 1.14284409879e-01 - 1.14284409879e-01 1.13479602981e-01 9.74781930220e-02 6.98255714909e-02 4.86717503238e-02 3.89798518706e-02 - 3.31963581644e-02 2.73091501295e-02 2.24043982374e-02 1.93871115228e-02 1.78888288560e-02 1.72812015630e-02 - 1.72812015630e-02 1.78888288560e-02 1.93871115228e-02 2.24043982374e-02 2.73091501295e-02 3.31963581644e-02 - 4.36605690195e-02 5.87902882083e-02 8.44119137021e-02 1.07504612680e-01 1.14984029929e-01 1.14284409879e-01 - 1.14984029929e-01 1.07504612680e-01 8.44119137022e-02 5.87902882083e-02 4.36605690195e-02 3.62673468746e-02 - 2.99301385615e-02 2.37301976795e-02 1.91106081253e-02 1.63906429721e-02 1.50424663757e-02 1.46288647205e-02 - 1.50424663757e-02 1.63906429721e-02 1.91106081253e-02 2.37301976795e-02 2.99301385615e-02 3.62673468746e-02 - 4.76134439312e-02 6.56428313091e-02 8.97664201880e-02 1.07504612680e-01 1.13479602981e-01 1.13479602981e-01 - 1.07504612680e-01 8.97664201881e-02 6.56428313091e-02 4.76134439312e-02 3.82423088608e-02 3.17361436403e-02 - 2.51249889113e-02 1.94290489291e-02 1.55937378378e-02 1.34169388324e-02 1.24265880360e-02 1.24265880360e-02 - 1.34169388324e-02 1.55937378378e-02 1.94290489291e-02 2.51249889113e-02 3.17361436403e-02 3.82423088608e-02 - 4.91904413241e-02 6.56428313091e-02 8.44119137022e-02 9.74781930220e-02 1.01688733220e-01 9.74781930220e-02 - 8.44119137022e-02 6.56428313091e-02 4.91904413241e-02 3.91205047681e-02 3.24128421387e-02 2.58521940319e-02 - 1.97044449599e-02 1.51354763629e-02 1.22800512627e-02 1.07225418333e-02 1.02153626600e-02 1.07225418333e-02 - 1.22800512627e-02 1.51354763629e-02 1.97044449599e-02 2.58521940319e-02 3.24128421387e-02 3.91205047681e-02 - 4.76134439312e-02 5.87902882084e-02 6.98255714910e-02 7.65071402186e-02 7.65071402186e-02 6.98255714910e-02 - 5.87902882084e-02 4.76134439313e-02 3.91205047681e-02 3.25042138914e-02 2.59777844449e-02 1.96802339930e-02 - 1.47279181689e-02 1.14481144732e-02 9.47290433111e-03 8.50665152157e-03 8.50665152157e-03 9.47290433111e-03 - 1.14481144732e-02 1.47279181688e-02 1.96802339930e-02 2.59777844449e-02 3.25042138914e-02 3.91205047681e-02 - 4.36605690195e-02 4.86717503239e-02 5.24371687844e-02 5.38553081706e-02 5.24371687844e-02 4.86717503239e-02 - 4.36605690195e-02 3.82423088608e-02 3.24128421387e-02 2.59777844449e-02 1.96031535283e-02 1.44210111226e-02 - 1.08699825973e-02 8.62540500906e-03 7.31933010297e-03 6.87426464911e-03 7.31933010297e-03 8.62540500906e-03 - 1.08699825973e-02 1.44210111226e-02 1.96031535282e-02 2.59777844449e-02 3.24128421387e-02 3.82423088608e-02 - 3.89798518706e-02 4.00842207790e-02 4.03062291683e-02 4.03062291683e-02 4.00842207790e-02 3.89798518706e-02 - 3.62673468746e-02 3.17361436403e-02 2.58521940319e-02 1.96802339930e-02 1.44210111226e-02 1.06518186545e-02 - 8.18383164207e-03 6.62684043802e-03 5.82746138702e-03 5.82746138702e-03 6.62684043802e-03 8.18383164206e-03 - 1.06518186545e-02 1.44210111226e-02 1.96802339930e-02 2.58521940319e-02 3.17361436403e-02 3.62673468746e-02 - 3.45751625707e-02 3.46096179591e-02 3.44216532954e-02 3.46096179591e-02 3.45751625707e-02 3.31963581644e-02 - 2.99301385615e-02 2.51249889113e-02 1.97044449599e-02 1.47279181689e-02 1.08699825973e-02 8.18383164207e-03 - 6.39967919814e-03 5.32068131556e-03 4.94632325183e-03 5.32068131556e-03 6.39967919814e-03 8.18383164206e-03 - 1.08699825973e-02 1.47279181689e-02 1.97044449599e-02 2.51249889113e-02 2.99301385615e-02 3.31963581644e-02 - 3.04773481040e-02 3.05548189106e-02 3.05548189106e-02 3.04773481040e-02 2.95890354456e-02 2.73091501295e-02 - 2.37301976795e-02 1.94290489291e-02 1.51354763629e-02 1.14481144732e-02 8.62540500906e-03 6.62684043802e-03 - 5.32068131556e-03 4.65175947716e-03 4.65175947716e-03 5.32068131556e-03 6.62684043802e-03 8.62540500906e-03 - 1.14481144732e-02 1.51354763629e-02 1.94290489291e-02 2.37301976795e-02 2.73091501295e-02 2.95890354456e-02 - 2.71142998602e-02 2.72051400328e-02 2.71142998602e-02 2.65400648390e-02 2.49964037843e-02 2.24043982374e-02 - 1.91106081254e-02 1.55937378378e-02 1.22800512627e-02 9.47290433111e-03 7.31933010297e-03 5.82746138702e-03 - 4.94632325183e-03 4.65175947716e-03 4.94632325183e-03 5.82746138702e-03 7.31933010297e-03 9.47290433111e-03 - 1.22800512627e-02 1.55937378378e-02 1.91106081253e-02 2.24043982374e-02 2.49964037843e-02 2.65400648390e-02 - 2.55791633528e-02 2.55791633528e-02 2.51931467428e-02 2.40839675381e-02 2.20777720561e-02 1.93871115228e-02 - 1.63906429721e-02 1.34169388324e-02 1.07225418333e-02 8.50665152157e-03 6.87426464911e-03 5.82746138702e-03 - 5.32068131556e-03 5.32068131556e-03 5.82746138702e-03 6.87426464911e-03 8.50665152157e-03 1.07225418333e-02 - 1.34169388324e-02 1.63906429721e-02 1.93871115228e-02 2.20777720561e-02 2.40839675381e-02 2.51931467428e-02 - 2.62414819209e-02 2.59618688149e-02 2.49964037843e-02 2.32030440049e-02 2.07196781889e-02 1.78888288560e-02 - 1.50424663757e-02 1.24265880360e-02 1.02153626600e-02 8.50665152157e-03 7.31933010296e-03 6.62684043801e-03 - 6.39967919814e-03 6.62684043801e-03 7.31933010296e-03 8.50665152157e-03 1.02153626600e-02 1.24265880360e-02 - 1.50424663757e-02 1.78888288560e-02 2.07196781889e-02 2.32030440049e-02 2.49964037843e-02 2.59618688149e-02 - 2.81653274579e-02 2.73091501295e-02 2.55726183949e-02 2.30939042850e-02 2.02040886880e-02 1.72812015630e-02 - 1.46288647205e-02 1.24265880360e-02 1.07225418333e-02 9.47290433110e-03 8.62540500905e-03 8.18383164206e-03 - 8.18383164206e-03 8.62540500905e-03 9.47290433110e-03 1.07225418333e-02 1.24265880360e-02 1.46288647205e-02 - 1.72812015630e-02 2.02040886880e-02 2.30939042849e-02 2.55726183949e-02 2.73091501295e-02 2.81653274579e-02 - 2.99301385615e-02 2.84217494631e-02 2.60492747623e-02 2.31231583381e-02 2.00653973118e-02 1.72812015630e-02 - 1.50424663757e-02 1.34169388324e-02 1.22800512627e-02 1.14481144732e-02 1.08699825973e-02 1.06518186545e-02 - 1.08699825973e-02 1.14481144732e-02 1.22800512627e-02 1.34169388324e-02 1.50424663757e-02 1.72812015630e-02 - 2.00653973118e-02 2.31231583381e-02 2.60492747623e-02 2.84217494631e-02 2.99301385615e-02 3.04404777485e-02 - 3.07822057975e-02 2.88778389824e-02 2.61902387743e-02 2.31231583381e-02 2.02040886880e-02 1.78888288560e-02 - 1.63906429721e-02 1.55937378378e-02 1.51354763629e-02 1.47279181688e-02 1.44210111226e-02 1.44210111226e-02 - 1.47279181688e-02 1.51354763629e-02 1.55937378378e-02 1.63906429721e-02 1.78888288560e-02 2.02040886880e-02 - 2.31231583381e-02 2.61902387743e-02 2.88778389824e-02 3.07822057975e-02 3.17361436403e-02 3.17361436403e-02 - 3.09609358381e-02 2.88778389824e-02 2.60492747623e-02 2.30939042849e-02 2.07196781889e-02 1.93871115227e-02 - 1.91106081253e-02 1.94290489291e-02 1.97044449599e-02 1.96802339929e-02 1.96031535282e-02 1.96802339930e-02 - 1.97044449599e-02 1.94290489291e-02 1.91106081253e-02 1.93871115228e-02 2.07196781889e-02 2.30939042849e-02 - 2.60492747622e-02 2.88778389824e-02 3.09609358381e-02 3.20848019959e-02 3.24128421387e-02 3.20848019959e-02 - 3.07822057975e-02 2.84217494631e-02 2.55726183949e-02 2.32030440049e-02 2.20777720560e-02 2.24043982374e-02 - 2.37301976795e-02 2.51249889113e-02 2.58521940319e-02 2.59777844449e-02 2.59777844449e-02 2.58521940319e-02 - 2.51249889113e-02 2.37301976795e-02 2.24043982374e-02 2.20777720561e-02 2.32030440049e-02 2.55726183949e-02 - 2.84217494631e-02 3.07822057975e-02 3.20848019959e-02 3.25042138914e-02 3.25042138914e-02 3.20848019959e-02 - 2.99301385615e-02 2.73091501295e-02 2.49964037842e-02 2.40839675381e-02 2.49964037842e-02 2.73091501295e-02 - 2.99301385615e-02 3.17361436402e-02 3.24128421387e-02 3.25042138914e-02 3.24128421387e-02 3.17361436402e-02 - 2.99301385615e-02 2.73091501295e-02 2.49964037842e-02 2.40839675381e-02 2.49964037842e-02 2.73091501295e-02 - 2.99301385615e-02 3.17361436402e-02 3.24128421387e-02 3.25042138914e-02 3.24128421387e-02 3.17361436403e-02 - 2.81653274579e-02 2.59618688149e-02 2.51931467427e-02 2.65400648390e-02 2.95890354456e-02 3.31963581643e-02 - 3.62673468745e-02 3.82423088607e-02 3.91205047681e-02 3.91205047681e-02 3.82423088608e-02 3.62673468746e-02 - 3.31963581644e-02 2.95890354456e-02 2.65400648390e-02 2.51931467428e-02 2.59618688149e-02 2.81653274579e-02 - 3.04404777485e-02 3.17361436402e-02 3.20848019959e-02 3.20848019959e-02 3.17361436403e-02 3.04404777485e-02 - 2.33118163733e-02 2.52445347088e-02 2.89473471924e-02 3.33647463123e-02 3.75326171916e-02 4.14583134664e-02 - 4.51578187598e-02 4.76134439312e-02 4.76134439312e-02 4.51578187598e-02 4.14583134664e-02 3.75326171916e-02 - 3.33647463123e-02 2.89473471924e-02 2.52445347088e-02 2.33118163733e-02 2.31387869200e-02 2.37301976795e-02 - 2.40967233573e-02 2.40904203272e-02 2.40904203272e-02 2.40967233573e-02 2.37301976795e-02 2.31387869200e-02 - 2.52445347088e-02 2.92643382604e-02 3.39942859271e-02 3.86294987685e-02 4.42637285519e-02 5.17382028008e-02 - 5.87902882083e-02 6.17008685348e-02 5.87902882083e-02 5.17382028008e-02 4.42637285519e-02 3.86294987685e-02 - 3.39942859271e-02 2.92643382604e-02 2.52445347088e-02 2.30253665657e-02 2.24043982374e-02 2.23752455712e-02 - 2.22713307355e-02 2.21709602700e-02 2.22713307355e-02 2.23752455712e-02 2.24043982374e-02 2.30253665657e-02 - 2.89473471924e-02 3.39942859271e-02 3.88811262511e-02 4.56987320892e-02 5.69437593911e-02 6.98255714909e-02 - 7.81193802830e-02 7.81193802830e-02 6.98255714909e-02 5.69437593911e-02 4.56987320892e-02 3.88811262511e-02 - 3.39942859271e-02 2.89473471924e-02 2.46286629032e-02 2.20777720561e-02 2.09446754967e-02 2.03920879638e-02 - 2.00583037371e-02 2.00583037371e-02 2.03920879638e-02 2.09446754967e-02 2.20777720561e-02 2.46286629032e-02 - 3.33647463123e-02 3.86294987685e-02 4.56987320892e-02 5.89461275928e-02 7.65071402184e-02 9.00454509226e-02 - 9.46618817553e-02 9.00454509227e-02 7.65071402185e-02 5.89461275929e-02 4.56987320892e-02 3.86294987685e-02 - 3.33647463124e-02 2.78013937268e-02 2.32030440049e-02 2.03983415996e-02 1.89263764236e-02 1.81430425204e-02 - 1.78657504093e-02 1.81430425204e-02 1.89263764236e-02 2.03983415996e-02 2.32030440049e-02 2.78013937268e-02 - 3.75326171916e-02 4.42637285519e-02 5.69437593911e-02 7.65071402184e-02 9.40538638176e-02 1.02255317231e-01 - 1.02255317231e-01 9.40538638177e-02 7.65071402185e-02 5.69437593911e-02 4.42637285519e-02 3.75326171916e-02 - 3.16057035862e-02 2.55726183949e-02 2.09446754967e-02 1.81502966987e-02 1.66389339973e-02 1.59287126341e-02 - 1.59287126341e-02 1.66389339974e-02 1.81502966987e-02 2.09446754967e-02 2.55726183949e-02 3.16057035862e-02 - 4.14583134664e-02 5.17382028008e-02 6.98255714909e-02 9.00454509227e-02 1.02255317231e-01 1.05382836884e-01 - 1.02255317231e-01 9.00454509227e-02 6.98255714909e-02 5.17382028009e-02 4.14583134664e-02 3.49769025118e-02 - 2.84217494631e-02 2.23752455712e-02 1.81179302207e-02 1.56224022211e-02 1.43188164440e-02 1.38961516945e-02 - 1.43188164440e-02 1.56224022211e-02 1.81179302207e-02 2.23752455712e-02 2.84217494631e-02 3.49769025117e-02 - 4.51578187598e-02 5.87902882083e-02 7.81193802830e-02 9.46618817553e-02 1.02255317231e-01 1.02255317231e-01 - 9.46618817554e-02 7.81193802830e-02 5.87902882083e-02 4.51578187598e-02 3.73540502297e-02 3.07822057975e-02 - 2.40967233573e-02 1.86355176327e-02 1.50739196267e-02 1.30485807277e-02 1.21045128275e-02 1.21045128275e-02 - 1.30485807277e-02 1.50739196267e-02 1.86355176327e-02 2.40967233573e-02 3.07822057975e-02 3.73540502296e-02 - 4.76134439312e-02 6.17008685349e-02 7.81193802831e-02 9.00454509227e-02 9.40538638177e-02 9.00454509227e-02 - 7.81193802831e-02 6.17008685349e-02 4.76134439312e-02 3.86937384314e-02 3.20848019959e-02 2.53973709283e-02 - 1.92840317465e-02 1.48492046219e-02 1.21090534529e-02 1.06109348738e-02 1.01198499891e-02 1.06109348738e-02 - 1.21090534529e-02 1.48492046219e-02 1.92840317465e-02 2.53973709283e-02 3.20848019959e-02 3.86937384314e-02 - 4.76134439312e-02 5.87902882084e-02 6.98255714910e-02 7.65071402186e-02 7.65071402186e-02 6.98255714910e-02 - 5.87902882084e-02 4.76134439312e-02 3.91205047681e-02 3.25042138914e-02 2.59777844449e-02 1.96802339930e-02 - 1.47279181688e-02 1.14481144732e-02 9.47290433111e-03 8.50665152157e-03 8.50665152157e-03 9.47290433111e-03 - 1.14481144732e-02 1.47279181688e-02 1.96802339930e-02 2.59777844449e-02 3.25042138914e-02 3.91205047681e-02 - 4.51578187598e-02 5.17382028009e-02 5.69437593912e-02 5.89461275929e-02 5.69437593912e-02 5.17382028009e-02 - 4.51578187598e-02 3.86937384314e-02 3.25042138914e-02 2.60947919991e-02 1.97871610956e-02 1.45986463266e-02 - 1.09990704821e-02 8.70256016587e-03 7.36052161959e-03 6.90308343843e-03 7.36052161959e-03 8.70256016587e-03 - 1.09990704821e-02 1.45986463266e-02 1.97871610956e-02 2.60947919991e-02 3.25042138914e-02 3.86937384314e-02 - 4.14583134665e-02 4.42637285519e-02 4.56987320893e-02 4.56987320893e-02 4.42637285519e-02 4.14583134665e-02 - 3.73540502297e-02 3.20848019959e-02 2.59777844449e-02 1.97871610956e-02 1.45320680305e-02 1.07546834176e-02 - 8.26409670066e-03 6.67439308889e-03 5.85076317272e-03 5.85076317272e-03 6.67439308889e-03 8.26409670065e-03 - 1.07546834176e-02 1.45320680305e-02 1.97871610956e-02 2.59777844449e-02 3.20848019959e-02 3.73540502297e-02 - 3.75326171916e-02 3.86294987685e-02 3.88811262512e-02 3.86294987685e-02 3.75326171917e-02 3.49769025118e-02 - 3.07822057975e-02 2.53973709283e-02 1.96802339930e-02 1.45986463266e-02 1.07546834176e-02 8.12161313175e-03 - 6.36714430780e-03 5.28636096575e-03 4.90588959931e-03 5.28636096575e-03 6.36714430780e-03 8.12161313175e-03 - 1.07546834176e-02 1.45986463266e-02 1.96802339930e-02 2.53973709283e-02 3.07822057975e-02 3.49769025118e-02 - 3.33647463124e-02 3.39942859272e-02 3.39942859272e-02 3.33647463124e-02 3.16057035862e-02 2.84217494631e-02 - 2.40967233573e-02 1.92840317465e-02 1.47279181689e-02 1.09990704821e-02 8.26409670066e-03 6.36714430780e-03 - 5.11303460195e-03 4.45367296569e-03 4.45367296569e-03 5.11303460195e-03 6.36714430780e-03 8.26409670065e-03 - 1.09990704821e-02 1.47279181689e-02 1.92840317465e-02 2.40967233573e-02 2.84217494631e-02 3.16057035862e-02 - 2.89473471924e-02 2.92643382604e-02 2.89473471924e-02 2.78013937268e-02 2.55726183949e-02 2.23752455712e-02 - 1.86355176327e-02 1.48492046219e-02 1.14481144732e-02 8.70256016587e-03 6.67439308889e-03 5.28636096575e-03 - 4.45367296569e-03 4.16945913194e-03 4.45367296569e-03 5.28636096575e-03 6.67439308889e-03 8.70256016587e-03 - 1.14481144732e-02 1.48492046219e-02 1.86355176327e-02 2.23752455712e-02 2.55726183949e-02 2.78013937268e-02 - 2.52445347088e-02 2.52445347088e-02 2.46286629032e-02 2.32030440050e-02 2.09446754967e-02 1.81179302207e-02 - 1.50739196267e-02 1.21090534530e-02 9.47290433111e-03 7.36052161959e-03 5.85076317272e-03 4.90588959931e-03 - 4.45367296569e-03 4.45367296569e-03 4.90588959931e-03 5.85076317272e-03 7.36052161959e-03 9.47290433111e-03 - 1.21090534529e-02 1.50739196267e-02 1.81179302207e-02 2.09446754967e-02 2.32030440049e-02 2.46286629032e-02 - 2.33118163733e-02 2.30253665657e-02 2.20777720561e-02 2.03983415996e-02 1.81502966987e-02 1.56224022211e-02 - 1.30485807277e-02 1.06109348738e-02 8.50665152157e-03 6.90308343843e-03 5.85076317272e-03 5.28636096575e-03 - 5.11303460195e-03 5.28636096575e-03 5.85076317272e-03 6.90308343843e-03 8.50665152157e-03 1.06109348738e-02 - 1.30485807277e-02 1.56224022211e-02 1.81502966987e-02 2.03983415996e-02 2.20777720561e-02 2.30253665657e-02 - 2.31387869200e-02 2.24043982374e-02 2.09446754967e-02 1.89263764236e-02 1.66389339973e-02 1.43188164440e-02 - 1.21045128275e-02 1.01198499891e-02 8.50665152157e-03 7.36052161958e-03 6.67439308888e-03 6.36714430779e-03 - 6.36714430779e-03 6.67439308888e-03 7.36052161958e-03 8.50665152156e-03 1.01198499891e-02 1.21045128275e-02 - 1.43188164440e-02 1.66389339973e-02 1.89263764236e-02 2.09446754967e-02 2.24043982374e-02 2.31387869200e-02 - 2.37301976795e-02 2.23752455712e-02 2.03920879638e-02 1.81430425204e-02 1.59287126341e-02 1.38961516944e-02 - 1.21045128275e-02 1.06109348738e-02 9.47290433110e-03 8.70256016586e-03 8.26409670065e-03 8.12161313174e-03 - 8.26409670065e-03 8.70256016586e-03 9.47290433110e-03 1.06109348738e-02 1.21045128275e-02 1.38961516944e-02 - 1.59287126341e-02 1.81430425204e-02 2.03920879638e-02 2.23752455712e-02 2.37301976795e-02 2.42075414899e-02 - 2.40967233573e-02 2.22713307355e-02 2.00583037371e-02 1.78657504093e-02 1.59287126341e-02 1.43188164440e-02 - 1.30485807277e-02 1.21090534529e-02 1.14481144732e-02 1.09990704821e-02 1.07546834176e-02 1.07546834176e-02 - 1.09990704821e-02 1.14481144732e-02 1.21090534529e-02 1.30485807277e-02 1.43188164440e-02 1.59287126341e-02 - 1.78657504093e-02 2.00583037371e-02 2.22713307355e-02 2.40967233573e-02 2.51249889113e-02 2.51249889113e-02 - 2.40904203272e-02 2.21709602700e-02 2.00583037371e-02 1.81430425204e-02 1.66389339973e-02 1.56224022211e-02 - 1.50739196267e-02 1.48492046219e-02 1.47279181688e-02 1.45986463266e-02 1.45320680305e-02 1.45986463266e-02 - 1.47279181688e-02 1.48492046219e-02 1.50739196267e-02 1.56224022211e-02 1.66389339973e-02 1.81430425204e-02 - 2.00583037371e-02 2.21709602700e-02 2.40904203272e-02 2.53973709283e-02 2.58521940319e-02 2.53973709283e-02 - 2.40904203272e-02 2.22713307355e-02 2.03920879638e-02 1.89263764236e-02 1.81502966987e-02 1.81179302207e-02 - 1.86355176327e-02 1.92840317465e-02 1.96802339929e-02 1.97871610956e-02 1.97871610956e-02 1.96802339930e-02 - 1.92840317465e-02 1.86355176327e-02 1.81179302207e-02 1.81502966987e-02 1.89263764236e-02 2.03920879638e-02 - 2.22713307355e-02 2.40904203272e-02 2.53797374387e-02 2.59777844449e-02 2.59777844449e-02 2.53797374387e-02 - 2.40967233573e-02 2.23752455712e-02 2.09446754967e-02 2.03983415996e-02 2.09446754967e-02 2.23752455712e-02 - 2.40967233573e-02 2.53973709283e-02 2.59777844449e-02 2.60947919991e-02 2.59777844449e-02 2.53973709283e-02 - 2.40967233573e-02 2.23752455712e-02 2.09446754967e-02 2.03983415996e-02 2.09446754967e-02 2.23752455712e-02 - 2.40967233573e-02 2.53973709283e-02 2.59777844449e-02 2.60947919991e-02 2.59777844449e-02 2.53973709283e-02 - 2.37301976795e-02 2.24043982374e-02 2.20777720561e-02 2.32030440049e-02 2.55726183949e-02 2.84217494631e-02 - 3.07822057975e-02 3.20848019958e-02 3.25042138914e-02 3.25042138914e-02 3.20848019958e-02 3.07822057975e-02 - 2.84217494631e-02 2.55726183949e-02 2.32030440049e-02 2.20777720561e-02 2.24043982374e-02 2.37301976795e-02 - 2.51249889113e-02 2.58521940319e-02 2.59777844449e-02 2.59777844449e-02 2.58521940319e-02 2.51249889113e-02 - 2.31387869200e-02 2.30253665656e-02 2.46286629032e-02 2.78013937268e-02 3.16057035862e-02 3.49769025117e-02 - 3.73540502296e-02 3.86937384314e-02 3.91205047681e-02 3.86937384314e-02 3.73540502296e-02 3.49769025117e-02 - 3.16057035862e-02 2.78013937268e-02 2.46286629032e-02 2.30253665656e-02 2.31387869200e-02 2.42075414898e-02 - 2.51249889113e-02 2.53973709283e-02 2.53797374387e-02 2.53973709283e-02 2.51249889113e-02 2.42075414898e-02 - 2.21386056500e-02 2.59181147281e-02 3.06728014251e-02 3.51262182184e-02 3.86293456568e-02 4.14583134664e-02 - 4.36605690195e-02 4.45490987357e-02 4.36605690195e-02 4.14583134664e-02 3.86293456568e-02 3.51262182184e-02 - 3.06728014251e-02 2.59181147281e-02 2.21386056500e-02 1.99975947255e-02 1.91106081253e-02 1.86355176327e-02 - 1.81617046076e-02 1.79266526907e-02 1.81617046076e-02 1.86355176327e-02 1.91106081253e-02 1.99975947255e-02 - 2.59181147281e-02 3.12134113093e-02 3.61935553818e-02 4.02266025417e-02 4.42637285519e-02 4.86717503238e-02 - 5.18158087397e-02 5.18158087397e-02 4.86717503238e-02 4.42637285519e-02 4.02266025417e-02 3.61935553818e-02 - 3.12134113093e-02 2.59181147281e-02 2.17948830411e-02 1.93871115228e-02 1.81179302207e-02 1.72611853896e-02 - 1.66950035376e-02 1.66950035376e-02 1.72611853896e-02 1.81179302207e-02 1.93871115228e-02 2.17948830411e-02 - 3.06728014251e-02 3.61935553818e-02 4.06883718959e-02 4.56987320892e-02 5.24371687843e-02 5.87809730549e-02 - 6.13624406409e-02 5.87809730550e-02 5.24371687843e-02 4.56987320892e-02 4.06883718959e-02 3.61935553818e-02 - 3.06728014251e-02 2.49902463304e-02 2.07196781889e-02 1.81502966987e-02 1.66276099946e-02 1.56489970468e-02 - 1.52718999852e-02 1.56489970468e-02 1.66276099946e-02 1.81502966987e-02 2.07196781889e-02 2.49902463304e-02 - 3.51262182184e-02 4.02266025417e-02 4.56987320892e-02 5.38553081705e-02 6.30064198496e-02 6.87950359263e-02 - 6.87950359263e-02 6.30064198496e-02 5.38553081705e-02 4.56987320892e-02 4.02266025417e-02 3.51262182185e-02 - 2.89590113766e-02 2.30939042849e-02 1.89263764236e-02 1.64062528191e-02 1.48932100517e-02 1.40901390285e-02 - 1.40901390285e-02 1.48932100517e-02 1.64062528191e-02 1.89263764236e-02 2.30939042849e-02 2.89590113766e-02 - 3.86293456568e-02 4.42637285519e-02 5.24371687843e-02 6.30064198496e-02 7.14595557376e-02 7.44578962493e-02 - 7.14595557376e-02 6.30064198496e-02 5.24371687843e-02 4.42637285519e-02 3.86293456568e-02 3.27029610793e-02 - 2.60492747623e-02 2.03920879638e-02 1.66276099946e-02 1.43894839458e-02 1.31234388541e-02 1.26855285494e-02 - 1.31234388541e-02 1.43894839458e-02 1.66276099946e-02 2.03920879638e-02 2.60492747623e-02 3.27029610793e-02 - 4.14583134664e-02 4.86717503238e-02 5.87809730550e-02 6.87950359263e-02 7.44578962493e-02 7.44578962493e-02 - 6.87950359263e-02 5.87809730550e-02 4.86717503238e-02 4.14583134664e-02 3.55406204185e-02 2.88778389824e-02 - 2.22713307355e-02 1.72611853896e-02 1.41149739580e-02 1.22934163580e-02 1.14031750108e-02 1.14031750108e-02 - 1.22934163580e-02 1.41149739580e-02 1.72611853896e-02 2.22713307355e-02 2.88778389824e-02 3.55406204185e-02 - 4.36605690195e-02 5.18158087397e-02 6.13624406409e-02 6.87950359263e-02 7.14595557376e-02 6.87950359263e-02 - 6.13624406409e-02 5.18158087398e-02 4.36605690195e-02 3.73540502297e-02 3.09609358381e-02 2.40904203272e-02 - 1.81617046076e-02 1.40806383265e-02 1.16095381953e-02 1.02401100733e-02 9.78219490488e-03 1.02401100733e-02 - 1.16095381953e-02 1.40806383265e-02 1.81617046076e-02 2.40904203272e-02 3.09609358381e-02 3.73540502296e-02 - 4.45490987358e-02 5.18158087398e-02 5.87809730550e-02 6.30064198497e-02 6.30064198497e-02 5.87809730550e-02 - 5.18158087398e-02 4.45490987358e-02 3.82423088608e-02 3.20848019959e-02 2.53797374387e-02 1.90345757835e-02 - 1.42308801751e-02 1.11331987338e-02 9.28357359923e-03 8.37400390520e-03 8.37400390520e-03 9.28357359923e-03 - 1.11331987338e-02 1.42308801751e-02 1.90345757835e-02 2.53797374387e-02 3.20848019959e-02 3.82423088608e-02 - 4.36605690195e-02 4.86717503239e-02 5.24371687844e-02 5.38553081705e-02 5.24371687844e-02 4.86717503239e-02 - 4.36605690195e-02 3.82423088608e-02 3.24128421387e-02 2.59777844449e-02 1.96031535282e-02 1.44210111226e-02 - 1.08699825973e-02 8.62540500906e-03 7.31933010296e-03 6.87426464911e-03 7.31933010296e-03 8.62540500906e-03 - 1.08699825973e-02 1.44210111226e-02 1.96031535282e-02 2.59777844449e-02 3.24128421387e-02 3.82423088608e-02 - 4.14583134665e-02 4.42637285519e-02 4.56987320892e-02 4.56987320892e-02 4.42637285519e-02 4.14583134665e-02 - 3.73540502297e-02 3.20848019959e-02 2.59777844449e-02 1.97871610956e-02 1.45320680305e-02 1.07546834176e-02 - 8.26409670065e-03 6.67439308889e-03 5.85076317272e-03 5.85076317272e-03 6.67439308889e-03 8.26409670065e-03 - 1.07546834176e-02 1.45320680305e-02 1.97871610956e-02 2.59777844449e-02 3.20848019959e-02 3.73540502297e-02 - 3.86293456568e-02 4.02266025417e-02 4.06883718959e-02 4.02266025417e-02 3.86293456568e-02 3.55406204185e-02 - 3.09609358382e-02 2.53797374387e-02 1.96031535283e-02 1.45320680305e-02 1.07233722050e-02 8.11874591477e-03 - 6.36996915701e-03 5.27978060753e-03 4.89318523684e-03 5.27978060753e-03 6.36996915701e-03 8.11874591477e-03 - 1.07233722050e-02 1.45320680305e-02 1.96031535283e-02 2.53797374387e-02 3.09609358381e-02 3.55406204185e-02 - 3.51262182185e-02 3.61935553818e-02 3.61935553818e-02 3.51262182185e-02 3.27029610793e-02 2.88778389824e-02 - 2.40904203272e-02 1.90345757835e-02 1.44210111226e-02 1.07546834176e-02 8.11874591477e-03 6.28719817635e-03 - 5.04614391795e-03 4.37599558137e-03 4.37599558137e-03 5.04614391795e-03 6.28719817635e-03 8.11874591477e-03 - 1.07546834176e-02 1.44210111226e-02 1.90345757835e-02 2.40904203272e-02 2.88778389824e-02 3.27029610793e-02 - 3.06728014251e-02 3.12134113093e-02 3.06728014251e-02 2.89590113767e-02 2.60492747623e-02 2.22713307355e-02 - 1.81617046076e-02 1.42308801751e-02 1.08699825973e-02 8.26409670065e-03 6.36996915701e-03 5.04614391795e-03 - 4.21584246473e-03 3.92281290681e-03 4.21584246473e-03 5.04614391795e-03 6.36996915701e-03 8.26409670065e-03 - 1.08699825973e-02 1.42308801751e-02 1.81617046076e-02 2.22713307355e-02 2.60492747623e-02 2.89590113767e-02 - 2.59181147281e-02 2.59181147281e-02 2.49902463304e-02 2.30939042850e-02 2.03920879638e-02 1.72611853896e-02 - 1.40806383265e-02 1.11331987338e-02 8.62540500906e-03 6.67439308889e-03 5.27978060753e-03 4.37599558137e-03 - 3.92281290681e-03 3.92281290681e-03 4.37599558137e-03 5.27978060753e-03 6.67439308888e-03 8.62540500905e-03 - 1.11331987338e-02 1.40806383265e-02 1.72611853896e-02 2.03920879638e-02 2.30939042850e-02 2.49902463304e-02 - 2.21386056500e-02 2.17948830411e-02 2.07196781889e-02 1.89263764236e-02 1.66276099946e-02 1.41149739580e-02 - 1.16095381953e-02 9.28357359923e-03 7.31933010297e-03 5.85076317272e-03 4.89318523683e-03 4.37599558137e-03 - 4.21584246472e-03 4.37599558137e-03 4.89318523683e-03 5.85076317272e-03 7.31933010296e-03 9.28357359923e-03 - 1.16095381953e-02 1.41149739580e-02 1.66276099946e-02 1.89263764236e-02 2.07196781889e-02 2.17948830411e-02 - 1.99975947255e-02 1.93871115228e-02 1.81502966987e-02 1.64062528191e-02 1.43894839458e-02 1.22934163580e-02 - 1.02401100733e-02 8.37400390520e-03 6.87426464911e-03 5.85076317272e-03 5.27978060753e-03 5.04614391795e-03 - 5.04614391795e-03 5.27978060753e-03 5.85076317272e-03 6.87426464911e-03 8.37400390520e-03 1.02401100733e-02 - 1.22934163580e-02 1.43894839458e-02 1.64062528191e-02 1.81502966987e-02 1.93871115228e-02 1.99975947255e-02 - 1.91106081254e-02 1.81179302207e-02 1.66276099946e-02 1.48932100517e-02 1.31234388541e-02 1.14031750108e-02 - 9.78219490488e-03 8.37400390520e-03 7.31933010296e-03 6.67439308888e-03 6.36996915701e-03 6.28719817634e-03 - 6.36996915701e-03 6.67439308888e-03 7.31933010296e-03 8.37400390520e-03 9.78219490488e-03 1.14031750108e-02 - 1.31234388541e-02 1.48932100517e-02 1.66276099946e-02 1.81179302207e-02 1.91106081253e-02 1.94536795471e-02 - 1.86355176327e-02 1.72611853896e-02 1.56489970468e-02 1.40901390285e-02 1.26855285494e-02 1.14031750108e-02 - 1.02401100733e-02 9.28357359922e-03 8.62540500905e-03 8.26409670065e-03 8.11874591476e-03 8.11874591476e-03 - 8.26409670065e-03 8.62540500905e-03 9.28357359922e-03 1.02401100733e-02 1.14031750108e-02 1.26855285494e-02 - 1.40901390285e-02 1.56489970468e-02 1.72611853896e-02 1.86355176327e-02 1.94290489291e-02 1.94290489291e-02 - 1.81617046076e-02 1.66950035376e-02 1.52718999852e-02 1.40901390285e-02 1.31234388541e-02 1.22934163580e-02 - 1.16095381953e-02 1.11331987338e-02 1.08699825973e-02 1.07546834176e-02 1.07233722050e-02 1.07546834176e-02 - 1.08699825973e-02 1.11331987338e-02 1.16095381953e-02 1.22934163580e-02 1.31234388541e-02 1.40901390285e-02 - 1.52718999852e-02 1.66950035376e-02 1.81617046076e-02 1.92840317465e-02 1.97044449599e-02 1.92840317465e-02 - 1.79266526907e-02 1.66950035376e-02 1.56489970468e-02 1.48932100517e-02 1.43894839458e-02 1.41149739580e-02 - 1.40806383265e-02 1.42308801751e-02 1.44210111226e-02 1.45320680305e-02 1.45320680305e-02 1.44210111226e-02 - 1.42308801751e-02 1.40806383265e-02 1.41149739580e-02 1.43894839458e-02 1.48932100517e-02 1.56489970468e-02 - 1.66950035376e-02 1.79266526907e-02 1.90345757835e-02 1.96802339930e-02 1.96802339930e-02 1.90345757835e-02 - 1.81617046076e-02 1.72611853896e-02 1.66276099946e-02 1.64062528191e-02 1.66276099946e-02 1.72611853896e-02 - 1.81617046076e-02 1.90345757835e-02 1.96031535282e-02 1.97871610956e-02 1.96031535282e-02 1.90345757835e-02 - 1.81617046076e-02 1.72611853896e-02 1.66276099946e-02 1.64062528191e-02 1.66276099946e-02 1.72611853896e-02 - 1.81617046076e-02 1.90345757835e-02 1.96031535282e-02 1.97871610956e-02 1.96031535282e-02 1.90345757835e-02 - 1.86355176327e-02 1.81179302207e-02 1.81502966987e-02 1.89263764236e-02 2.03920879637e-02 2.22713307355e-02 - 2.40904203272e-02 2.53797374387e-02 2.59777844449e-02 2.59777844449e-02 2.53797374387e-02 2.40904203272e-02 - 2.22713307355e-02 2.03920879638e-02 1.89263764236e-02 1.81502966987e-02 1.81179302207e-02 1.86355176327e-02 - 1.92840317465e-02 1.96802339930e-02 1.97871610956e-02 1.97871610956e-02 1.96802339930e-02 1.92840317465e-02 - 1.91106081253e-02 1.93871115228e-02 2.07196781889e-02 2.30939042849e-02 2.60492747622e-02 2.88778389824e-02 - 3.09609358381e-02 3.20848019958e-02 3.24128421387e-02 3.20848019958e-02 3.09609358381e-02 2.88778389824e-02 - 2.60492747623e-02 2.30939042849e-02 2.07196781889e-02 1.93871115228e-02 1.91106081253e-02 1.94290489291e-02 - 1.97044449599e-02 1.96802339930e-02 1.96031535282e-02 1.96802339930e-02 1.97044449599e-02 1.94290489291e-02 - 1.99975947255e-02 2.17948830411e-02 2.49902463304e-02 2.89590113766e-02 3.27029610793e-02 3.55406204184e-02 - 3.73540502296e-02 3.82423088607e-02 3.82423088607e-02 3.73540502296e-02 3.55406204185e-02 3.27029610793e-02 - 2.89590113766e-02 2.49902463304e-02 2.17948830411e-02 1.99975947255e-02 1.94536795471e-02 1.94290489291e-02 - 1.92840317465e-02 1.90345757835e-02 1.90345757835e-02 1.92840317465e-02 1.94290489291e-02 1.94536795471e-02 - 2.19611077293e-02 2.65858530209e-02 3.13656133727e-02 3.51262182184e-02 3.75326171916e-02 3.89798518705e-02 - 3.97328533270e-02 3.97328533270e-02 3.89798518705e-02 3.75326171916e-02 3.51262182184e-02 3.13656133727e-02 - 2.65858530209e-02 2.19611077293e-02 1.85132763207e-02 1.63906429721e-02 1.50739196267e-02 1.40806383265e-02 - 1.34421324248e-02 1.34421324248e-02 1.40806383265e-02 1.50739196267e-02 1.63906429721e-02 1.85132763207e-02 - 2.65858530209e-02 3.20070729422e-02 3.61935553818e-02 3.86294987685e-02 4.00842207789e-02 4.11388919901e-02 - 4.15726567626e-02 4.11388919901e-02 4.00842207789e-02 3.86294987685e-02 3.61935553818e-02 3.20070729422e-02 - 2.65858530209e-02 2.15195877577e-02 1.78888288560e-02 1.56224022211e-02 1.41149739580e-02 1.30618774824e-02 - 1.26511415702e-02 1.30618774824e-02 1.41149739580e-02 1.56224022211e-02 1.78888288560e-02 2.15195877577e-02 - 3.13656133727e-02 3.61935553818e-02 3.88811262511e-02 4.03062291682e-02 4.15214050146e-02 4.23899857519e-02 - 4.23899857519e-02 4.15214050146e-02 4.03062291682e-02 3.88811262511e-02 3.61935553818e-02 3.13656133727e-02 - 2.54054430258e-02 2.02040886880e-02 1.66389339973e-02 1.43894839458e-02 1.28937939562e-02 1.20439356208e-02 - 1.20439356208e-02 1.28937939562e-02 1.43894839458e-02 1.66389339973e-02 2.02040886880e-02 2.54054430258e-02 - 3.51262182184e-02 3.86294987685e-02 4.03062291682e-02 4.15474983448e-02 4.26148361403e-02 4.30330806505e-02 - 4.26148361403e-02 4.15474983449e-02 4.03062291682e-02 3.86294987685e-02 3.51262182184e-02 2.93979324046e-02 - 2.31231583381e-02 1.81430425204e-02 1.48932100517e-02 1.28580577518e-02 1.16029685725e-02 1.11481007476e-02 - 1.16029685725e-02 1.28580577518e-02 1.48932100517e-02 1.81430425204e-02 2.31231583381e-02 2.93979324046e-02 - 3.75326171916e-02 4.00842207789e-02 4.15214050146e-02 4.26148361403e-02 4.31931066266e-02 4.31931066266e-02 - 4.26148361403e-02 4.15214050146e-02 4.00842207789e-02 3.75326171916e-02 3.27029610793e-02 2.61902387743e-02 - 2.00583037371e-02 1.56489970468e-02 1.28937939562e-02 1.12137577955e-02 1.03422447642e-02 1.03422447642e-02 - 1.12137577955e-02 1.28937939562e-02 1.56489970468e-02 2.00583037371e-02 2.61902387743e-02 3.27029610793e-02 - 3.89798518705e-02 4.11388919901e-02 4.23899857519e-02 4.30330806506e-02 4.31931066266e-02 4.30330806506e-02 - 4.23899857520e-02 4.11388919901e-02 3.89798518706e-02 3.49769025118e-02 2.88778389824e-02 2.21709602700e-02 - 1.66950035376e-02 1.30618774824e-02 1.08500532301e-02 9.57619631350e-03 9.13724506496e-03 9.57619631350e-03 - 1.08500532301e-02 1.30618774824e-02 1.66950035376e-02 2.21709602700e-02 2.88778389824e-02 3.49769025117e-02 - 3.97328533270e-02 4.15726567626e-02 4.23899857520e-02 4.26148361403e-02 4.26148361403e-02 4.23899857520e-02 - 4.15726567626e-02 3.97328533271e-02 3.62673468746e-02 3.07822057975e-02 2.40904203272e-02 1.79266526907e-02 - 1.34421324248e-02 1.06051613742e-02 8.89920278516e-03 8.04455907974e-03 8.04455907974e-03 8.89920278516e-03 - 1.06051613742e-02 1.34421324248e-02 1.79266526907e-02 2.40904203272e-02 3.07822057975e-02 3.62673468746e-02 - 3.97328533271e-02 4.11388919902e-02 4.15214050146e-02 4.15474983449e-02 4.15214050146e-02 4.11388919902e-02 - 3.97328533271e-02 3.66854482599e-02 3.17361436403e-02 2.53973709283e-02 1.90345757835e-02 1.39667079820e-02 - 1.05557815436e-02 8.41997198039e-03 7.17862759619e-03 6.75449318420e-03 7.17862759619e-03 8.41997198039e-03 - 1.05557815436e-02 1.39667079820e-02 1.90345757835e-02 2.53973709283e-02 3.17361436402e-02 3.66854482599e-02 - 3.89798518706e-02 4.00842207790e-02 4.03062291683e-02 4.03062291683e-02 4.00842207790e-02 3.89798518706e-02 - 3.62673468746e-02 3.17361436403e-02 2.58521940319e-02 1.96802339930e-02 1.44210111226e-02 1.06518186545e-02 - 8.18383164206e-03 6.62684043802e-03 5.82746138702e-03 5.82746138702e-03 6.62684043801e-03 8.18383164206e-03 - 1.06518186545e-02 1.44210111226e-02 1.96802339930e-02 2.58521940319e-02 3.17361436403e-02 3.62673468746e-02 - 3.75326171916e-02 3.86294987685e-02 3.88811262512e-02 3.86294987685e-02 3.75326171916e-02 3.49769025118e-02 - 3.07822057975e-02 2.53973709283e-02 1.96802339930e-02 1.45986463266e-02 1.07546834176e-02 8.12161313175e-03 - 6.36714430780e-03 5.28636096575e-03 4.90588959931e-03 5.28636096575e-03 6.36714430780e-03 8.12161313175e-03 - 1.07546834176e-02 1.45986463266e-02 1.96802339930e-02 2.53973709283e-02 3.07822057975e-02 3.49769025118e-02 - 3.51262182185e-02 3.61935553818e-02 3.61935553818e-02 3.51262182185e-02 3.27029610793e-02 2.88778389824e-02 - 2.40904203272e-02 1.90345757835e-02 1.44210111226e-02 1.07546834176e-02 8.11874591477e-03 6.28719817635e-03 - 5.04614391795e-03 4.37599558137e-03 4.37599558137e-03 5.04614391795e-03 6.28719817635e-03 8.11874591477e-03 - 1.07546834176e-02 1.44210111226e-02 1.90345757835e-02 2.40904203272e-02 2.88778389824e-02 3.27029610793e-02 - 3.13656133728e-02 3.20070729423e-02 3.13656133728e-02 2.93979324046e-02 2.61902387743e-02 2.21709602700e-02 - 1.79266526907e-02 1.39667079820e-02 1.06518186545e-02 8.12161313175e-03 6.28719817635e-03 4.98513742725e-03 - 4.14918646508e-03 3.84964089400e-03 4.14918646508e-03 4.98513742725e-03 6.28719817635e-03 8.12161313174e-03 - 1.06518186545e-02 1.39667079820e-02 1.79266526907e-02 2.21709602700e-02 2.61902387743e-02 2.93979324046e-02 - 2.65858530209e-02 2.65858530209e-02 2.54054430258e-02 2.31231583381e-02 2.00583037371e-02 1.66950035376e-02 - 1.34421324248e-02 1.05557815436e-02 8.18383164206e-03 6.36714430779e-03 5.04614391795e-03 4.14918646508e-03 - 3.67768921534e-03 3.67768921534e-03 4.14918646508e-03 5.04614391795e-03 6.36714430779e-03 8.18383164206e-03 - 1.05557815436e-02 1.34421324248e-02 1.66950035376e-02 2.00583037371e-02 2.31231583381e-02 2.54054430258e-02 - 2.19611077293e-02 2.15195877577e-02 2.02040886880e-02 1.81430425205e-02 1.56489970468e-02 1.30618774824e-02 - 1.06051613742e-02 8.41997198039e-03 6.62684043802e-03 5.28636096575e-03 4.37599558137e-03 3.84964089400e-03 - 3.67768921534e-03 3.84964089400e-03 4.37599558137e-03 5.28636096575e-03 6.62684043801e-03 8.41997198039e-03 - 1.06051613742e-02 1.30618774824e-02 1.56489970468e-02 1.81430425205e-02 2.02040886880e-02 2.15195877577e-02 - 1.85132763207e-02 1.78888288560e-02 1.66389339974e-02 1.48932100517e-02 1.28937939562e-02 1.08500532301e-02 - 8.89920278516e-03 7.17862759619e-03 5.82746138702e-03 4.90588959931e-03 4.37599558137e-03 4.14918646508e-03 - 4.14918646508e-03 4.37599558137e-03 4.90588959931e-03 5.82746138702e-03 7.17862759619e-03 8.89920278516e-03 - 1.08500532301e-02 1.28937939562e-02 1.48932100517e-02 1.66389339974e-02 1.78888288560e-02 1.85132763207e-02 - 1.63906429721e-02 1.56224022211e-02 1.43894839458e-02 1.28580577518e-02 1.12137577955e-02 9.57619631350e-03 - 8.04455907974e-03 6.75449318420e-03 5.82746138702e-03 5.28636096575e-03 5.04614391795e-03 4.98513742725e-03 - 5.04614391795e-03 5.28636096575e-03 5.82746138702e-03 6.75449318420e-03 8.04455907974e-03 9.57619631350e-03 - 1.12137577955e-02 1.28580577518e-02 1.43894839458e-02 1.56224022211e-02 1.63906429721e-02 1.66439398964e-02 - 1.50739196267e-02 1.41149739580e-02 1.28937939562e-02 1.16029685725e-02 1.03422447642e-02 9.13724506496e-03 - 8.04455907974e-03 7.17862759619e-03 6.62684043801e-03 6.36714430779e-03 6.28719817634e-03 6.28719817634e-03 - 6.36714430779e-03 6.62684043801e-03 7.17862759619e-03 8.04455907974e-03 9.13724506496e-03 1.03422447642e-02 - 1.16029685725e-02 1.28937939562e-02 1.41149739580e-02 1.50739196267e-02 1.55937378378e-02 1.55937378378e-02 - 1.40806383265e-02 1.30618774824e-02 1.20439356208e-02 1.11481007476e-02 1.03422447642e-02 9.57619631350e-03 - 8.89920278515e-03 8.41997198038e-03 8.18383164206e-03 8.12161313174e-03 8.11874591476e-03 8.12161313174e-03 - 8.18383164206e-03 8.41997198038e-03 8.89920278515e-03 9.57619631350e-03 1.03422447642e-02 1.11481007476e-02 - 1.20439356208e-02 1.30618774824e-02 1.40806383265e-02 1.48492046219e-02 1.51354763629e-02 1.48492046219e-02 - 1.34421324248e-02 1.26511415702e-02 1.20439356208e-02 1.16029685725e-02 1.12137577955e-02 1.08500532301e-02 - 1.06051613742e-02 1.05557815436e-02 1.06518186545e-02 1.07546834176e-02 1.07546834175e-02 1.06518186545e-02 - 1.05557815436e-02 1.06051613742e-02 1.08500532301e-02 1.12137577955e-02 1.16029685725e-02 1.20439356208e-02 - 1.26511415702e-02 1.34421324248e-02 1.42308801751e-02 1.47279181688e-02 1.47279181688e-02 1.42308801751e-02 - 1.34421324248e-02 1.30618774824e-02 1.28937939562e-02 1.28580577518e-02 1.28937939562e-02 1.30618774824e-02 - 1.34421324248e-02 1.39667079820e-02 1.44210111226e-02 1.45986463266e-02 1.44210111226e-02 1.39667079820e-02 - 1.34421324248e-02 1.30618774824e-02 1.28937939562e-02 1.28580577518e-02 1.28937939562e-02 1.30618774824e-02 - 1.34421324248e-02 1.39667079820e-02 1.44210111226e-02 1.45986463266e-02 1.44210111226e-02 1.39667079820e-02 - 1.40806383265e-02 1.41149739580e-02 1.43894839458e-02 1.48932100517e-02 1.56489970468e-02 1.66950035376e-02 - 1.79266526907e-02 1.90345757835e-02 1.96802339929e-02 1.96802339929e-02 1.90345757835e-02 1.79266526907e-02 - 1.66950035376e-02 1.56489970468e-02 1.48932100517e-02 1.43894839458e-02 1.41149739580e-02 1.40806383265e-02 - 1.42308801751e-02 1.44210111226e-02 1.45320680305e-02 1.45320680305e-02 1.44210111226e-02 1.42308801751e-02 - 1.50739196267e-02 1.56224022211e-02 1.66389339973e-02 1.81430425204e-02 2.00583037371e-02 2.21709602700e-02 - 2.40904203272e-02 2.53973709283e-02 2.58521940319e-02 2.53973709283e-02 2.40904203272e-02 2.21709602700e-02 - 2.00583037371e-02 1.81430425204e-02 1.66389339973e-02 1.56224022211e-02 1.50739196267e-02 1.48492046219e-02 - 1.47279181688e-02 1.45986463266e-02 1.45320680305e-02 1.45986463266e-02 1.47279181688e-02 1.48492046219e-02 - 1.63906429721e-02 1.78888288560e-02 2.02040886880e-02 2.31231583381e-02 2.61902387743e-02 2.88778389824e-02 - 3.07822057975e-02 3.17361436402e-02 3.17361436402e-02 3.07822057975e-02 2.88778389824e-02 2.61902387743e-02 - 2.31231583381e-02 2.02040886880e-02 1.78888288560e-02 1.63906429721e-02 1.55937378378e-02 1.51354763629e-02 - 1.47279181688e-02 1.44210111226e-02 1.44210111226e-02 1.47279181688e-02 1.51354763629e-02 1.55937378378e-02 - 1.85132763207e-02 2.15195877577e-02 2.54054430258e-02 2.93979324045e-02 3.27029610793e-02 3.49769025117e-02 - 3.62673468745e-02 3.66854482599e-02 3.62673468745e-02 3.49769025117e-02 3.27029610793e-02 2.93979324046e-02 - 2.54054430258e-02 2.15195877577e-02 1.85132763207e-02 1.66439398964e-02 1.55937378378e-02 1.48492046219e-02 - 1.42308801751e-02 1.39667079820e-02 1.42308801751e-02 1.48492046219e-02 1.55937378378e-02 1.66439398964e-02 - 2.19947599998e-02 2.65858530209e-02 3.06728014251e-02 3.33647463123e-02 3.45751625707e-02 3.48628450776e-02 - 3.48683159917e-02 3.48628450776e-02 3.45751625707e-02 3.33647463123e-02 3.06728014251e-02 2.65858530209e-02 - 2.19947599998e-02 1.79741436761e-02 1.50424663757e-02 1.30485807277e-02 1.16095381953e-02 1.06051613742e-02 - 1.02248872526e-02 1.06051613742e-02 1.16095381953e-02 1.30485807277e-02 1.50424663757e-02 1.79741436761e-02 - 2.65858530209e-02 3.12134113093e-02 3.39942859271e-02 3.46096179590e-02 3.39196724264e-02 3.31551669201e-02 - 3.31551669202e-02 3.39196724265e-02 3.46096179590e-02 3.39942859271e-02 3.12134113093e-02 2.65858530209e-02 - 2.15038028103e-02 1.72812015630e-02 1.43188164440e-02 1.22934163580e-02 1.08500532301e-02 1.00210602336e-02 - 1.00210602336e-02 1.08500532301e-02 1.22934163580e-02 1.43188164440e-02 1.72812015630e-02 2.15038028103e-02 - 3.06728014251e-02 3.39942859271e-02 3.44216532953e-02 3.26920605346e-02 3.05273339684e-02 2.95749315132e-02 - 3.05273339684e-02 3.26920605346e-02 3.44216532954e-02 3.39942859271e-02 3.06728014251e-02 2.54054430258e-02 - 2.00653973118e-02 1.59287126341e-02 1.31234388541e-02 1.12137577955e-02 9.96234500644e-03 9.50248837487e-03 - 9.96234500644e-03 1.12137577955e-02 1.31234388541e-02 1.59287126341e-02 2.00653973118e-02 2.54054430258e-02 - 3.33647463123e-02 3.46096179590e-02 3.26920605346e-02 2.92890570902e-02 2.67216511959e-02 2.67216511959e-02 - 2.92890570902e-02 3.26920605346e-02 3.46096179590e-02 3.33647463123e-02 2.89590113766e-02 2.31231583381e-02 - 1.78657504093e-02 1.40901390285e-02 1.16029685725e-02 9.96167567605e-03 9.07031679536e-03 9.07031679536e-03 - 9.96167567605e-03 1.16029685725e-02 1.40901390285e-02 1.78657504093e-02 2.31231583381e-02 2.89590113766e-02 - 3.45751625707e-02 3.39196724265e-02 3.05273339684e-02 2.67216511959e-02 2.50661805907e-02 2.67216511959e-02 - 3.05273339684e-02 3.39196724265e-02 3.45751625707e-02 3.16057035862e-02 2.60492747623e-02 2.00583037371e-02 - 1.52718999852e-02 1.20439356208e-02 9.96234500644e-03 8.68876908730e-03 8.23785813083e-03 8.68876908730e-03 - 9.96234500643e-03 1.20439356208e-02 1.52718999852e-02 2.00583037371e-02 2.60492747623e-02 3.16057035862e-02 - 3.48628450776e-02 3.31551669202e-02 2.95749315132e-02 2.67216511960e-02 2.67216511960e-02 2.95749315132e-02 - 3.31551669202e-02 3.48628450776e-02 3.31963581644e-02 2.84217494631e-02 2.22713307355e-02 1.66950035376e-02 - 1.26511415702e-02 1.00210602336e-02 8.36360112567e-03 7.50451749096e-03 7.50451749096e-03 8.36360112567e-03 - 1.00210602336e-02 1.26511415702e-02 1.66950035376e-02 2.22713307355e-02 2.84217494631e-02 3.31963581644e-02 - 3.48683159917e-02 3.31551669202e-02 3.05273339684e-02 2.92890570903e-02 3.05273339684e-02 3.31551669202e-02 - 3.48683159917e-02 3.38925854809e-02 2.99301385615e-02 2.40967233573e-02 1.81617046076e-02 1.34421324248e-02 - 1.02248872526e-02 8.15758815908e-03 6.92803651720e-03 6.50338402317e-03 6.92803651720e-03 8.15758815907e-03 - 1.02248872526e-02 1.34421324248e-02 1.81617046076e-02 2.40967233573e-02 2.99301385615e-02 3.38925854809e-02 - 3.48628450776e-02 3.39196724265e-02 3.26920605347e-02 3.26920605347e-02 3.39196724265e-02 3.48628450776e-02 - 3.38925854809e-02 3.04404777485e-02 2.51249889113e-02 1.92840317465e-02 1.42308801751e-02 1.05557815436e-02 - 8.11230157085e-03 6.56138198057e-03 5.76667312114e-03 5.76667312114e-03 6.56138198057e-03 8.11230157084e-03 - 1.05557815436e-02 1.42308801751e-02 1.92840317465e-02 2.51249889113e-02 3.04404777485e-02 3.38925854809e-02 - 3.45751625707e-02 3.46096179590e-02 3.44216532954e-02 3.46096179590e-02 3.45751625707e-02 3.31963581644e-02 - 2.99301385615e-02 2.51249889113e-02 1.97044449599e-02 1.47279181688e-02 1.08699825973e-02 8.18383164206e-03 - 6.39967919814e-03 5.32068131556e-03 4.94632325183e-03 5.32068131556e-03 6.39967919814e-03 8.18383164206e-03 - 1.08699825973e-02 1.47279181688e-02 1.97044449599e-02 2.51249889113e-02 2.99301385615e-02 3.31963581644e-02 - 3.33647463124e-02 3.39942859271e-02 3.39942859271e-02 3.33647463124e-02 3.16057035862e-02 2.84217494631e-02 - 2.40967233573e-02 1.92840317465e-02 1.47279181688e-02 1.09990704821e-02 8.26409670065e-03 6.36714430780e-03 - 5.11303460195e-03 4.45367296569e-03 4.45367296569e-03 5.11303460195e-03 6.36714430779e-03 8.26409670065e-03 - 1.09990704821e-02 1.47279181688e-02 1.92840317465e-02 2.40967233573e-02 2.84217494631e-02 3.16057035862e-02 - 3.06728014251e-02 3.12134113093e-02 3.06728014251e-02 2.89590113766e-02 2.60492747623e-02 2.22713307355e-02 - 1.81617046076e-02 1.42308801751e-02 1.08699825973e-02 8.26409670065e-03 6.36996915701e-03 5.04614391795e-03 - 4.21584246473e-03 3.92281290681e-03 4.21584246473e-03 5.04614391795e-03 6.36996915701e-03 8.26409670065e-03 - 1.08699825973e-02 1.42308801751e-02 1.81617046076e-02 2.22713307355e-02 2.60492747623e-02 2.89590113767e-02 - 2.65858530209e-02 2.65858530209e-02 2.54054430258e-02 2.31231583381e-02 2.00583037371e-02 1.66950035376e-02 - 1.34421324248e-02 1.05557815436e-02 8.18383164206e-03 6.36714430779e-03 5.04614391795e-03 4.14918646508e-03 - 3.67768921534e-03 3.67768921534e-03 4.14918646508e-03 5.04614391795e-03 6.36714430779e-03 8.18383164206e-03 - 1.05557815436e-02 1.34421324248e-02 1.66950035376e-02 2.00583037371e-02 2.31231583381e-02 2.54054430258e-02 - 2.19947599998e-02 2.15038028103e-02 2.00653973119e-02 1.78657504093e-02 1.52718999852e-02 1.26511415702e-02 - 1.02248872526e-02 8.11230157084e-03 6.39967919814e-03 5.11303460195e-03 4.21584246472e-03 3.67768921534e-03 - 3.49726793106e-03 3.67768921534e-03 4.21584246472e-03 5.11303460195e-03 6.39967919814e-03 8.11230157084e-03 - 1.02248872526e-02 1.26511415702e-02 1.52718999852e-02 1.78657504093e-02 2.00653973119e-02 2.15038028103e-02 - 1.79741436761e-02 1.72812015630e-02 1.59287126341e-02 1.40901390285e-02 1.20439356208e-02 1.00210602336e-02 - 8.15758815908e-03 6.56138198057e-03 5.32068131556e-03 4.45367296569e-03 3.92281290681e-03 3.67768921534e-03 - 3.67768921534e-03 3.92281290681e-03 4.45367296569e-03 5.32068131556e-03 6.56138198057e-03 8.15758815907e-03 - 1.00210602336e-02 1.20439356208e-02 1.40901390285e-02 1.59287126341e-02 1.72812015630e-02 1.79741436761e-02 - 1.50424663757e-02 1.43188164440e-02 1.31234388541e-02 1.16029685725e-02 9.96234500644e-03 8.36360112567e-03 - 6.92803651720e-03 5.76667312114e-03 4.94632325183e-03 4.45367296569e-03 4.21584246472e-03 4.14918646508e-03 - 4.21584246473e-03 4.45367296569e-03 4.94632325183e-03 5.76667312114e-03 6.92803651720e-03 8.36360112567e-03 - 9.96234500644e-03 1.16029685725e-02 1.31234388541e-02 1.43188164440e-02 1.50424663757e-02 1.52762540169e-02 - 1.30485807277e-02 1.22934163580e-02 1.12137577955e-02 9.96167567605e-03 8.68876908730e-03 7.50451749096e-03 - 6.50338402317e-03 5.76667312114e-03 5.32068131556e-03 5.11303460194e-03 5.04614391795e-03 5.04614391795e-03 - 5.11303460195e-03 5.32068131556e-03 5.76667312114e-03 6.50338402317e-03 7.50451749096e-03 8.68876908730e-03 - 9.96167567605e-03 1.12137577955e-02 1.22934163580e-02 1.30485807277e-02 1.34169388324e-02 1.34169388324e-02 - 1.16095381953e-02 1.08500532301e-02 9.96234500644e-03 9.07031679536e-03 8.23785813083e-03 7.50451749096e-03 - 6.92803651719e-03 6.56138198056e-03 6.39967919814e-03 6.36714430779e-03 6.36996915701e-03 6.36714430779e-03 - 6.39967919814e-03 6.56138198056e-03 6.92803651719e-03 7.50451749096e-03 8.23785813083e-03 9.07031679536e-03 - 9.96234500644e-03 1.08500532301e-02 1.16095381953e-02 1.21090534529e-02 1.22800512627e-02 1.21090534529e-02 - 1.06051613742e-02 1.00210602336e-02 9.50248837488e-03 9.07031679536e-03 8.68876908730e-03 8.36360112567e-03 - 8.15758815907e-03 8.11230157084e-03 8.18383164206e-03 8.26409670065e-03 8.26409670065e-03 8.18383164206e-03 - 8.11230157084e-03 8.15758815907e-03 8.36360112566e-03 8.68876908730e-03 9.07031679536e-03 9.50248837488e-03 - 1.00210602336e-02 1.06051613742e-02 1.11331987338e-02 1.14481144732e-02 1.14481144732e-02 1.11331987338e-02 - 1.02248872526e-02 1.00210602336e-02 9.96234500644e-03 9.96167567605e-03 9.96234500643e-03 1.00210602336e-02 - 1.02248872526e-02 1.05557815436e-02 1.08699825973e-02 1.09990704821e-02 1.08699825973e-02 1.05557815436e-02 - 1.02248872526e-02 1.00210602336e-02 9.96234500643e-03 9.96167567604e-03 9.96234500644e-03 1.00210602336e-02 - 1.02248872526e-02 1.05557815436e-02 1.08699825973e-02 1.09990704821e-02 1.08699825973e-02 1.05557815436e-02 - 1.06051613742e-02 1.08500532301e-02 1.12137577955e-02 1.16029685725e-02 1.20439356208e-02 1.26511415702e-02 - 1.34421324248e-02 1.42308801751e-02 1.47279181688e-02 1.47279181688e-02 1.42308801751e-02 1.34421324248e-02 - 1.26511415702e-02 1.20439356208e-02 1.16029685725e-02 1.12137577955e-02 1.08500532301e-02 1.06051613742e-02 - 1.05557815436e-02 1.06518186545e-02 1.07546834176e-02 1.07546834176e-02 1.06518186545e-02 1.05557815436e-02 - 1.16095381953e-02 1.22934163580e-02 1.31234388541e-02 1.40901390285e-02 1.52718999852e-02 1.66950035376e-02 - 1.81617046076e-02 1.92840317465e-02 1.97044449599e-02 1.92840317465e-02 1.81617046076e-02 1.66950035376e-02 - 1.52718999852e-02 1.40901390285e-02 1.31234388541e-02 1.22934163580e-02 1.16095381953e-02 1.11331987338e-02 - 1.08699825973e-02 1.07546834176e-02 1.07233722050e-02 1.07546834176e-02 1.08699825973e-02 1.11331987338e-02 - 1.30485807277e-02 1.43188164440e-02 1.59287126341e-02 1.78657504093e-02 2.00583037371e-02 2.22713307355e-02 - 2.40967233573e-02 2.51249889113e-02 2.51249889113e-02 2.40967233573e-02 2.22713307355e-02 2.00583037371e-02 - 1.78657504093e-02 1.59287126341e-02 1.43188164440e-02 1.30485807277e-02 1.21090534529e-02 1.14481144732e-02 - 1.09990704821e-02 1.07546834176e-02 1.07546834176e-02 1.09990704821e-02 1.14481144732e-02 1.21090534529e-02 - 1.50424663757e-02 1.72812015630e-02 2.00653973118e-02 2.31231583381e-02 2.60492747622e-02 2.84217494631e-02 - 2.99301385615e-02 3.04404777485e-02 2.99301385615e-02 2.84217494631e-02 2.60492747622e-02 2.31231583381e-02 - 2.00653973118e-02 1.72812015630e-02 1.50424663757e-02 1.34169388324e-02 1.22800512627e-02 1.14481144732e-02 - 1.08699825973e-02 1.06518186545e-02 1.08699825973e-02 1.14481144732e-02 1.22800512627e-02 1.34169388324e-02 - 1.79741436761e-02 2.15038028103e-02 2.54054430258e-02 2.89590113766e-02 3.16057035862e-02 3.31963581643e-02 - 3.38925854809e-02 3.38925854809e-02 3.31963581644e-02 3.16057035862e-02 2.89590113766e-02 2.54054430258e-02 - 2.15038028103e-02 1.79741436761e-02 1.52762540169e-02 1.34169388324e-02 1.21090534529e-02 1.11331987338e-02 - 1.05557815436e-02 1.05557815436e-02 1.11331987338e-02 1.21090534529e-02 1.34169388324e-02 1.52762540169e-02 - 2.19611077293e-02 2.59181147281e-02 2.89473471924e-02 3.04773481039e-02 3.06792139923e-02 3.03789244340e-02 - 3.03789244340e-02 3.06792139923e-02 3.04773481040e-02 2.89473471924e-02 2.59181147281e-02 2.19611077293e-02 - 1.79741436761e-02 1.46288647205e-02 1.21045128275e-02 1.02401100733e-02 8.89920278516e-03 8.15758815908e-03 - 8.15758815907e-03 8.89920278515e-03 1.02401100733e-02 1.21045128275e-02 1.46288647205e-02 1.79741436761e-02 - 2.59181147281e-02 2.92643382604e-02 3.05548189106e-02 2.97974895143e-02 2.81921950446e-02 2.73937018060e-02 - 2.81921950446e-02 2.97974895143e-02 3.05548189106e-02 2.92643382604e-02 2.59181147281e-02 2.15195877577e-02 - 1.72812015630e-02 1.38961516944e-02 1.14031750108e-02 9.57619631350e-03 8.36360112567e-03 7.92498387888e-03 - 8.36360112567e-03 9.57619631350e-03 1.14031750108e-02 1.38961516944e-02 1.72812015630e-02 2.15195877577e-02 - 2.89473471924e-02 3.05548189106e-02 2.92436594720e-02 2.61164989591e-02 2.35389825848e-02 2.35389825848e-02 - 2.61164989591e-02 2.92436594720e-02 3.05548189106e-02 2.89473471924e-02 2.49902463304e-02 2.02040886880e-02 - 1.59287126341e-02 1.26855285494e-02 1.03422447642e-02 8.68876908730e-03 7.77912772161e-03 7.77912772161e-03 - 8.68876908730e-03 1.03422447642e-02 1.26855285494e-02 1.59287126341e-02 2.02040886880e-02 2.49902463304e-02 - 3.04773481040e-02 2.97974895143e-02 2.61164989591e-02 2.17746576295e-02 1.98434779695e-02 2.17746576295e-02 - 2.61164989591e-02 2.97974895143e-02 3.04773481040e-02 2.78013937268e-02 2.30939042849e-02 1.81430425204e-02 - 1.40901390285e-02 1.11481007476e-02 9.07031679536e-03 7.73176989509e-03 7.25301575416e-03 7.73176989509e-03 - 9.07031679536e-03 1.11481007476e-02 1.40901390285e-02 1.81430425204e-02 2.30939042849e-02 2.78013937268e-02 - 3.06792139923e-02 2.81921950446e-02 2.35389825848e-02 1.98434779695e-02 1.98434779695e-02 2.35389825848e-02 - 2.81921950446e-02 3.06792139923e-02 2.95890354456e-02 2.55726183949e-02 2.03920879638e-02 1.56489970468e-02 - 1.20439356208e-02 9.50248837488e-03 7.77912772161e-03 6.85668012358e-03 6.85668012358e-03 7.77912772161e-03 - 9.50248837487e-03 1.20439356208e-02 1.56489970468e-02 2.03920879638e-02 2.55726183949e-02 2.95890354456e-02 - 3.03789244340e-02 2.73937018060e-02 2.35389825848e-02 2.17746576295e-02 2.35389825848e-02 2.73937018060e-02 - 3.03789244340e-02 3.04051143293e-02 2.73091501295e-02 2.23752455712e-02 1.72611853896e-02 1.30618774824e-02 - 1.00210602336e-02 7.92498387888e-03 6.62087909721e-03 6.16385997204e-03 6.62087909720e-03 7.92498387887e-03 - 1.00210602336e-02 1.30618774824e-02 1.72611853896e-02 2.23752455712e-02 2.73091501295e-02 3.04051143293e-02 - 3.03789244340e-02 2.81921950446e-02 2.61164989591e-02 2.61164989591e-02 2.81921950446e-02 3.03789244340e-02 - 3.06058831029e-02 2.81653274579e-02 2.37301976795e-02 1.86355176327e-02 1.40806383265e-02 1.06051613742e-02 - 8.15758815908e-03 6.53729803367e-03 5.69411798450e-03 5.69411798450e-03 6.53729803366e-03 8.15758815908e-03 - 1.06051613742e-02 1.40806383265e-02 1.86355176327e-02 2.37301976795e-02 2.81653274579e-02 3.06058831029e-02 - 3.06792139923e-02 2.97974895143e-02 2.92436594720e-02 2.97974895143e-02 3.06792139923e-02 3.04051143293e-02 - 2.81653274579e-02 2.42075414898e-02 1.94290489291e-02 1.48492046219e-02 1.11331987338e-02 8.41997198039e-03 - 6.56138198057e-03 5.43239778449e-03 5.04343778102e-03 5.43239778449e-03 6.56138198057e-03 8.41997198039e-03 - 1.11331987338e-02 1.48492046219e-02 1.94290489291e-02 2.42075414898e-02 2.81653274579e-02 3.04051143293e-02 - 3.04773481040e-02 3.05548189106e-02 3.05548189106e-02 3.04773481040e-02 2.95890354456e-02 2.73091501295e-02 - 2.37301976795e-02 1.94290489291e-02 1.51354763629e-02 1.14481144732e-02 8.62540500906e-03 6.62684043802e-03 - 5.32068131556e-03 4.65175947716e-03 4.65175947716e-03 5.32068131556e-03 6.62684043802e-03 8.62540500906e-03 - 1.14481144732e-02 1.51354763629e-02 1.94290489291e-02 2.37301976795e-02 2.73091501295e-02 2.95890354456e-02 - 2.89473471924e-02 2.92643382604e-02 2.89473471924e-02 2.78013937268e-02 2.55726183949e-02 2.23752455712e-02 - 1.86355176327e-02 1.48492046219e-02 1.14481144732e-02 8.70256016587e-03 6.67439308889e-03 5.28636096575e-03 - 4.45367296569e-03 4.16945913194e-03 4.45367296569e-03 5.28636096575e-03 6.67439308889e-03 8.70256016587e-03 - 1.14481144732e-02 1.48492046219e-02 1.86355176327e-02 2.23752455712e-02 2.55726183949e-02 2.78013937268e-02 - 2.59181147281e-02 2.59181147281e-02 2.49902463304e-02 2.30939042850e-02 2.03920879638e-02 1.72611853896e-02 - 1.40806383265e-02 1.11331987338e-02 8.62540500906e-03 6.67439308888e-03 5.27978060753e-03 4.37599558137e-03 - 3.92281290681e-03 3.92281290681e-03 4.37599558137e-03 5.27978060753e-03 6.67439308888e-03 8.62540500905e-03 - 1.11331987338e-02 1.40806383265e-02 1.72611853896e-02 2.03920879638e-02 2.30939042850e-02 2.49902463304e-02 - 2.19611077293e-02 2.15195877577e-02 2.02040886880e-02 1.81430425204e-02 1.56489970468e-02 1.30618774824e-02 - 1.06051613742e-02 8.41997198039e-03 6.62684043801e-03 5.28636096575e-03 4.37599558137e-03 3.84964089400e-03 - 3.67768921534e-03 3.84964089400e-03 4.37599558137e-03 5.28636096575e-03 6.62684043801e-03 8.41997198039e-03 - 1.06051613742e-02 1.30618774824e-02 1.56489970468e-02 1.81430425205e-02 2.02040886880e-02 2.15195877577e-02 - 1.79741436761e-02 1.72812015630e-02 1.59287126341e-02 1.40901390285e-02 1.20439356208e-02 1.00210602336e-02 - 8.15758815908e-03 6.56138198057e-03 5.32068131556e-03 4.45367296569e-03 3.92281290681e-03 3.67768921534e-03 - 3.67768921534e-03 3.92281290681e-03 4.45367296569e-03 5.32068131556e-03 6.56138198057e-03 8.15758815907e-03 - 1.00210602336e-02 1.20439356208e-02 1.40901390285e-02 1.59287126341e-02 1.72812015630e-02 1.79741436761e-02 - 1.46288647205e-02 1.38961516945e-02 1.26855285494e-02 1.11481007476e-02 9.50248837487e-03 7.92498387888e-03 - 6.53729803366e-03 5.43239778449e-03 4.65175947716e-03 4.16945913194e-03 3.92281290681e-03 3.84964089400e-03 - 3.92281290681e-03 4.16945913194e-03 4.65175947716e-03 5.43239778449e-03 6.53729803366e-03 7.92498387888e-03 - 9.50248837487e-03 1.11481007476e-02 1.26855285494e-02 1.38961516945e-02 1.46288647205e-02 1.48656767561e-02 - 1.21045128275e-02 1.14031750108e-02 1.03422447642e-02 9.07031679536e-03 7.77912772161e-03 6.62087909721e-03 - 5.69411798450e-03 5.04343778102e-03 4.65175947716e-03 4.45367296569e-03 4.37599558137e-03 4.37599558137e-03 - 4.45367296569e-03 4.65175947716e-03 5.04343778102e-03 5.69411798450e-03 6.62087909721e-03 7.77912772161e-03 - 9.07031679536e-03 1.03422447642e-02 1.14031750108e-02 1.21045128275e-02 1.24265880360e-02 1.24265880360e-02 - 1.02401100733e-02 9.57619631350e-03 8.68876908730e-03 7.73176989509e-03 6.85668012358e-03 6.16385997204e-03 - 5.69411798450e-03 5.43239778448e-03 5.32068131556e-03 5.28636096575e-03 5.27978060753e-03 5.28636096575e-03 - 5.32068131556e-03 5.43239778449e-03 5.69411798450e-03 6.16385997204e-03 6.85668012358e-03 7.73176989509e-03 - 8.68876908730e-03 9.57619631350e-03 1.02401100733e-02 1.06109348738e-02 1.07225418333e-02 1.06109348738e-02 - 8.89920278516e-03 8.36360112567e-03 7.77912772161e-03 7.25301575416e-03 6.85668012358e-03 6.62087909720e-03 - 6.53729803366e-03 6.56138198056e-03 6.62684043801e-03 6.67439308888e-03 6.67439308888e-03 6.62684043801e-03 - 6.56138198056e-03 6.53729803366e-03 6.62087909720e-03 6.85668012358e-03 7.25301575416e-03 7.77912772161e-03 - 8.36360112567e-03 8.89920278516e-03 9.28357359923e-03 9.47290433111e-03 9.47290433111e-03 9.28357359923e-03 - 8.15758815908e-03 7.92498387888e-03 7.77912772161e-03 7.73176989509e-03 7.77912772161e-03 7.92498387887e-03 - 8.15758815907e-03 8.41997198038e-03 8.62540500905e-03 8.70256016586e-03 8.62540500905e-03 8.41997198038e-03 - 8.15758815907e-03 7.92498387887e-03 7.77912772161e-03 7.73176989509e-03 7.77912772161e-03 7.92498387888e-03 - 8.15758815908e-03 8.41997198039e-03 8.62540500905e-03 8.70256016587e-03 8.62540500906e-03 8.41997198039e-03 - 8.15758815908e-03 8.36360112567e-03 8.68876908730e-03 9.07031679536e-03 9.50248837487e-03 1.00210602336e-02 - 1.06051613742e-02 1.11331987338e-02 1.14481144732e-02 1.14481144732e-02 1.11331987338e-02 1.06051613742e-02 - 1.00210602336e-02 9.50248837487e-03 9.07031679536e-03 8.68876908730e-03 8.36360112567e-03 8.15758815908e-03 - 8.11230157085e-03 8.18383164206e-03 8.26409670065e-03 8.26409670065e-03 8.18383164206e-03 8.11230157085e-03 - 8.89920278516e-03 9.57619631350e-03 1.03422447642e-02 1.11481007476e-02 1.20439356208e-02 1.30618774824e-02 - 1.40806383265e-02 1.48492046219e-02 1.51354763629e-02 1.48492046219e-02 1.40806383265e-02 1.30618774824e-02 - 1.20439356208e-02 1.11481007476e-02 1.03422447642e-02 9.57619631350e-03 8.89920278516e-03 8.41997198039e-03 - 8.18383164206e-03 8.12161313175e-03 8.11874591477e-03 8.12161313174e-03 8.18383164206e-03 8.41997198039e-03 - 1.02401100733e-02 1.14031750108e-02 1.26855285494e-02 1.40901390285e-02 1.56489970468e-02 1.72611853896e-02 - 1.86355176327e-02 1.94290489291e-02 1.94290489291e-02 1.86355176327e-02 1.72611853896e-02 1.56489970468e-02 - 1.40901390285e-02 1.26855285494e-02 1.14031750108e-02 1.02401100733e-02 9.28357359923e-03 8.62540500906e-03 - 8.26409670065e-03 8.11874591476e-03 8.11874591476e-03 8.26409670065e-03 8.62540500906e-03 9.28357359923e-03 - 1.21045128275e-02 1.38961516944e-02 1.59287126341e-02 1.81430425204e-02 2.03920879638e-02 2.23752455712e-02 - 2.37301976795e-02 2.42075414898e-02 2.37301976795e-02 2.23752455712e-02 2.03920879638e-02 1.81430425204e-02 - 1.59287126341e-02 1.38961516944e-02 1.21045128275e-02 1.06109348738e-02 9.47290433111e-03 8.70256016587e-03 - 8.26409670065e-03 8.12161313174e-03 8.26409670065e-03 8.70256016586e-03 9.47290433111e-03 1.06109348738e-02 - 1.46288647205e-02 1.72812015630e-02 2.02040886880e-02 2.30939042849e-02 2.55726183949e-02 2.73091501295e-02 - 2.81653274579e-02 2.81653274579e-02 2.73091501295e-02 2.55726183949e-02 2.30939042849e-02 2.02040886880e-02 - 1.72812015630e-02 1.46288647205e-02 1.24265880360e-02 1.07225418333e-02 9.47290433111e-03 8.62540500905e-03 - 8.18383164206e-03 8.18383164206e-03 8.62540500905e-03 9.47290433111e-03 1.07225418333e-02 1.24265880360e-02 - 1.79741436761e-02 2.15195877577e-02 2.49902463304e-02 2.78013937268e-02 2.95890354456e-02 3.04051143293e-02 - 3.06058831029e-02 3.04051143293e-02 2.95890354456e-02 2.78013937268e-02 2.49902463304e-02 2.15195877577e-02 - 1.79741436761e-02 1.48656767560e-02 1.24265880360e-02 1.06109348738e-02 9.28357359923e-03 8.41997198039e-03 - 8.11230157084e-03 8.41997198039e-03 9.28357359923e-03 1.06109348738e-02 1.24265880360e-02 1.48656767560e-02 - 2.21386056500e-02 2.52445347087e-02 2.71142998602e-02 2.74769895380e-02 2.69081613820e-02 2.65224863971e-02 - 2.69081613820e-02 2.74769895380e-02 2.71142998602e-02 2.52445347087e-02 2.21386056500e-02 1.85132763207e-02 - 1.50424663757e-02 1.21045128275e-02 9.78219490488e-03 8.04455907974e-03 6.92803651720e-03 6.53729803366e-03 - 6.92803651720e-03 8.04455907974e-03 9.78219490488e-03 1.21045128275e-02 1.50424663757e-02 1.85132763207e-02 - 2.52445347087e-02 2.72051400328e-02 2.70513354759e-02 2.52955690008e-02 2.36141349499e-02 2.36141349499e-02 - 2.52955690008e-02 2.70513354759e-02 2.72051400328e-02 2.52445347087e-02 2.17948830411e-02 1.78888288560e-02 - 1.43188164440e-02 1.14031750108e-02 9.13724506496e-03 7.50451749096e-03 6.62087909721e-03 6.62087909721e-03 - 7.50451749096e-03 9.13724506495e-03 1.14031750108e-02 1.43188164440e-02 1.78888288560e-02 2.17948830411e-02 - 2.71142998602e-02 2.70513354759e-02 2.44579386769e-02 2.10846196163e-02 1.95329704288e-02 2.10846196163e-02 - 2.44579386769e-02 2.70513354759e-02 2.71142998602e-02 2.46286629032e-02 2.07196781889e-02 1.66389339973e-02 - 1.31234388541e-02 1.03422447642e-02 8.23785813083e-03 6.85668012358e-03 6.36555591034e-03 6.85668012358e-03 - 8.23785813083e-03 1.03422447642e-02 1.31234388541e-02 1.66389339973e-02 2.07196781889e-02 2.46286629032e-02 - 2.74769895380e-02 2.52955690008e-02 2.10846196163e-02 1.76763940774e-02 1.76763940774e-02 2.10846196163e-02 - 2.52955690008e-02 2.74769895380e-02 2.65400648390e-02 2.32030440049e-02 1.89263764236e-02 1.48932100517e-02 - 1.16029685725e-02 9.07031679536e-03 7.25301575416e-03 6.26631005461e-03 6.26631005461e-03 7.25301575415e-03 - 9.07031679536e-03 1.16029685725e-02 1.48932100517e-02 1.89263764236e-02 2.32030440049e-02 2.65400648390e-02 - 2.69081613820e-02 2.36141349499e-02 1.95329704288e-02 1.76763940774e-02 1.95329704288e-02 2.36141349499e-02 - 2.69081613820e-02 2.73903662614e-02 2.49964037842e-02 2.09446754967e-02 1.66276099946e-02 1.28937939562e-02 - 9.96234500644e-03 7.77912772161e-03 6.36555591034e-03 5.86550216407e-03 6.36555591033e-03 7.77912772161e-03 - 9.96234500644e-03 1.28937939562e-02 1.66276099946e-02 2.09446754967e-02 2.49964037842e-02 2.73903662614e-02 - 2.65224863971e-02 2.36141349499e-02 2.10846196163e-02 2.10846196163e-02 2.36141349499e-02 2.65224863971e-02 - 2.75584598461e-02 2.59618688149e-02 2.24043982374e-02 1.81179302207e-02 1.41149739580e-02 1.08500532301e-02 - 8.36360112567e-03 6.62087909721e-03 5.69328932590e-03 5.69328932590e-03 6.62087909721e-03 8.36360112567e-03 - 1.08500532301e-02 1.41149739580e-02 1.81179302207e-02 2.24043982374e-02 2.59618688149e-02 2.75584598461e-02 - 2.69081613820e-02 2.52955690008e-02 2.44579386769e-02 2.52955690008e-02 2.69081613820e-02 2.75584598461e-02 - 2.62414819209e-02 2.31387869200e-02 1.91106081253e-02 1.50739196267e-02 1.16095381953e-02 8.89920278516e-03 - 6.92803651720e-03 5.69411798450e-03 5.26652136817e-03 5.69411798450e-03 6.92803651720e-03 8.89920278516e-03 - 1.16095381953e-02 1.50739196267e-02 1.91106081253e-02 2.31387869200e-02 2.62414819209e-02 2.75584598461e-02 - 2.74769895380e-02 2.70513354759e-02 2.70513354759e-02 2.74769895380e-02 2.73903662614e-02 2.59618688149e-02 - 2.31387869200e-02 1.94536795471e-02 1.55937378378e-02 1.21090534529e-02 9.28357359923e-03 7.17862759619e-03 - 5.76667312114e-03 5.04343778102e-03 5.04343778102e-03 5.76667312114e-03 7.17862759619e-03 9.28357359923e-03 - 1.21090534529e-02 1.55937378378e-02 1.94536795471e-02 2.31387869200e-02 2.59618688149e-02 2.73903662614e-02 - 2.71142998602e-02 2.72051400328e-02 2.71142998602e-02 2.65400648390e-02 2.49964037842e-02 2.24043982374e-02 - 1.91106081253e-02 1.55937378378e-02 1.22800512627e-02 9.47290433111e-03 7.31933010296e-03 5.82746138702e-03 - 4.94632325183e-03 4.65175947716e-03 4.94632325183e-03 5.82746138702e-03 7.31933010296e-03 9.47290433111e-03 - 1.22800512627e-02 1.55937378378e-02 1.91106081253e-02 2.24043982374e-02 2.49964037842e-02 2.65400648390e-02 - 2.52445347088e-02 2.52445347088e-02 2.46286629032e-02 2.32030440049e-02 2.09446754967e-02 1.81179302207e-02 - 1.50739196267e-02 1.21090534529e-02 9.47290433111e-03 7.36052161959e-03 5.85076317272e-03 4.90588959931e-03 - 4.45367296569e-03 4.45367296569e-03 4.90588959931e-03 5.85076317272e-03 7.36052161959e-03 9.47290433111e-03 - 1.21090534529e-02 1.50739196267e-02 1.81179302207e-02 2.09446754967e-02 2.32030440049e-02 2.46286629032e-02 - 2.21386056500e-02 2.17948830411e-02 2.07196781889e-02 1.89263764236e-02 1.66276099946e-02 1.41149739580e-02 - 1.16095381953e-02 9.28357359923e-03 7.31933010296e-03 5.85076317272e-03 4.89318523683e-03 4.37599558137e-03 - 4.21584246472e-03 4.37599558137e-03 4.89318523683e-03 5.85076317272e-03 7.31933010296e-03 9.28357359923e-03 - 1.16095381953e-02 1.41149739580e-02 1.66276099946e-02 1.89263764236e-02 2.07196781889e-02 2.17948830411e-02 - 1.85132763207e-02 1.78888288560e-02 1.66389339973e-02 1.48932100517e-02 1.28937939562e-02 1.08500532301e-02 - 8.89920278516e-03 7.17862759619e-03 5.82746138702e-03 4.90588959931e-03 4.37599558137e-03 4.14918646508e-03 - 4.14918646508e-03 4.37599558137e-03 4.90588959931e-03 5.82746138702e-03 7.17862759619e-03 8.89920278516e-03 - 1.08500532301e-02 1.28937939562e-02 1.48932100517e-02 1.66389339973e-02 1.78888288560e-02 1.85132763207e-02 - 1.50424663757e-02 1.43188164440e-02 1.31234388541e-02 1.16029685725e-02 9.96234500644e-03 8.36360112567e-03 - 6.92803651720e-03 5.76667312114e-03 4.94632325183e-03 4.45367296569e-03 4.21584246472e-03 4.14918646508e-03 - 4.21584246473e-03 4.45367296569e-03 4.94632325183e-03 5.76667312114e-03 6.92803651720e-03 8.36360112567e-03 - 9.96234500643e-03 1.16029685725e-02 1.31234388541e-02 1.43188164440e-02 1.50424663757e-02 1.52762540169e-02 - 1.21045128275e-02 1.14031750108e-02 1.03422447642e-02 9.07031679536e-03 7.77912772161e-03 6.62087909721e-03 - 5.69411798450e-03 5.04343778102e-03 4.65175947716e-03 4.45367296569e-03 4.37599558137e-03 4.37599558137e-03 - 4.45367296569e-03 4.65175947716e-03 5.04343778102e-03 5.69411798450e-03 6.62087909721e-03 7.77912772161e-03 - 9.07031679536e-03 1.03422447642e-02 1.14031750108e-02 1.21045128275e-02 1.24265880360e-02 1.24265880360e-02 - 9.78219490488e-03 9.13724506495e-03 8.23785813083e-03 7.25301575416e-03 6.36555591034e-03 5.69328932590e-03 - 5.26652136817e-03 5.04343778102e-03 4.94632325183e-03 4.90588959931e-03 4.89318523683e-03 4.90588959931e-03 - 4.94632325183e-03 5.04343778102e-03 5.26652136817e-03 5.69328932590e-03 6.36555591034e-03 7.25301575416e-03 - 8.23785813083e-03 9.13724506495e-03 9.78219490488e-03 1.01198499891e-02 1.02153626600e-02 1.01198499891e-02 - 8.04455907974e-03 7.50451749096e-03 6.85668012358e-03 6.26631005461e-03 5.86550216407e-03 5.69328932590e-03 - 5.69411798450e-03 5.76667312114e-03 5.82746138702e-03 5.85076317272e-03 5.85076317272e-03 5.82746138702e-03 - 5.76667312114e-03 5.69411798450e-03 5.69328932590e-03 5.86550216407e-03 6.26631005461e-03 6.85668012358e-03 - 7.50451749096e-03 8.04455907974e-03 8.37400390520e-03 8.50665152156e-03 8.50665152157e-03 8.37400390520e-03 - 6.92803651720e-03 6.62087909721e-03 6.36555591034e-03 6.26631005461e-03 6.36555591033e-03 6.62087909720e-03 - 6.92803651719e-03 7.17862759619e-03 7.31933010296e-03 7.36052161958e-03 7.31933010296e-03 7.17862759619e-03 - 6.92803651719e-03 6.62087909720e-03 6.36555591033e-03 6.26631005461e-03 6.36555591034e-03 6.62087909721e-03 - 6.92803651720e-03 7.17862759619e-03 7.31933010296e-03 7.36052161959e-03 7.31933010296e-03 7.17862759619e-03 - 6.53729803367e-03 6.62087909721e-03 6.85668012358e-03 7.25301575416e-03 7.77912772161e-03 8.36360112566e-03 - 8.89920278515e-03 9.28357359922e-03 9.47290433110e-03 9.47290433110e-03 9.28357359922e-03 8.89920278515e-03 - 8.36360112566e-03 7.77912772161e-03 7.25301575415e-03 6.85668012358e-03 6.62087909721e-03 6.53729803366e-03 - 6.56138198057e-03 6.62684043801e-03 6.67439308888e-03 6.67439308889e-03 6.62684043802e-03 6.56138198057e-03 - 6.92803651720e-03 7.50451749096e-03 8.23785813083e-03 9.07031679536e-03 9.96234500643e-03 1.08500532301e-02 - 1.16095381953e-02 1.21090534529e-02 1.22800512627e-02 1.21090534529e-02 1.16095381953e-02 1.08500532301e-02 - 9.96234500643e-03 9.07031679536e-03 8.23785813083e-03 7.50451749096e-03 6.92803651720e-03 6.56138198057e-03 - 6.39967919814e-03 6.36714430779e-03 6.36996915701e-03 6.36714430779e-03 6.39967919814e-03 6.56138198057e-03 - 8.04455907974e-03 9.13724506496e-03 1.03422447642e-02 1.16029685725e-02 1.28937939562e-02 1.41149739580e-02 - 1.50739196267e-02 1.55937378378e-02 1.55937378378e-02 1.50739196267e-02 1.41149739580e-02 1.28937939562e-02 - 1.16029685725e-02 1.03422447642e-02 9.13724506496e-03 8.04455907974e-03 7.17862759619e-03 6.62684043801e-03 - 6.36714430779e-03 6.28719817635e-03 6.28719817635e-03 6.36714430779e-03 6.62684043802e-03 7.17862759619e-03 - 9.78219490488e-03 1.14031750108e-02 1.31234388541e-02 1.48932100517e-02 1.66276099946e-02 1.81179302207e-02 - 1.91106081253e-02 1.94536795471e-02 1.91106081253e-02 1.81179302207e-02 1.66276099946e-02 1.48932100517e-02 - 1.31234388541e-02 1.14031750108e-02 9.78219490488e-03 8.37400390520e-03 7.31933010296e-03 6.67439308888e-03 - 6.36996915701e-03 6.28719817635e-03 6.36996915701e-03 6.67439308888e-03 7.31933010296e-03 8.37400390520e-03 - 1.21045128275e-02 1.43188164440e-02 1.66389339973e-02 1.89263764236e-02 2.09446754967e-02 2.24043982374e-02 - 2.31387869200e-02 2.31387869200e-02 2.24043982374e-02 2.09446754967e-02 1.89263764236e-02 1.66389339973e-02 - 1.43188164440e-02 1.21045128275e-02 1.01198499891e-02 8.50665152157e-03 7.36052161959e-03 6.67439308888e-03 - 6.36714430779e-03 6.36714430779e-03 6.67439308888e-03 7.36052161959e-03 8.50665152157e-03 1.01198499891e-02 - 1.50424663757e-02 1.78888288560e-02 2.07196781889e-02 2.32030440049e-02 2.49964037842e-02 2.59618688149e-02 - 2.62414819209e-02 2.59618688149e-02 2.49964037842e-02 2.32030440049e-02 2.07196781889e-02 1.78888288560e-02 - 1.50424663757e-02 1.24265880360e-02 1.02153626600e-02 8.50665152157e-03 7.31933010296e-03 6.62684043801e-03 - 6.39967919814e-03 6.62684043801e-03 7.31933010296e-03 8.50665152157e-03 1.02153626600e-02 1.24265880360e-02 - 1.85132763207e-02 2.17948830411e-02 2.46286629032e-02 2.65400648390e-02 2.73903662614e-02 2.75584598461e-02 - 2.75584598461e-02 2.73903662614e-02 2.65400648390e-02 2.46286629032e-02 2.17948830411e-02 1.85132763207e-02 - 1.52762540169e-02 1.24265880360e-02 1.01198499891e-02 8.37400390520e-03 7.17862759619e-03 6.56138198057e-03 - 6.56138198057e-03 7.17862759619e-03 8.37400390520e-03 1.01198499891e-02 1.24265880360e-02 1.52762540169e-02 - 2.33118163733e-02 2.55791633527e-02 2.62352804996e-02 2.54927185045e-02 2.45139707404e-02 2.45139707404e-02 - 2.54927185045e-02 2.62352804996e-02 2.55791633527e-02 2.33118163733e-02 1.99975947255e-02 1.63906429721e-02 - 1.30485807277e-02 1.02401100733e-02 8.04455907974e-03 6.50338402317e-03 5.69411798450e-03 5.69411798450e-03 - 6.50338402317e-03 8.04455907974e-03 1.02401100733e-02 1.30485807277e-02 1.63906429721e-02 1.99975947255e-02 - 2.55791633527e-02 2.61140936360e-02 2.45139707404e-02 2.20787139947e-02 2.09116171502e-02 2.20787139947e-02 - 2.45139707404e-02 2.61140936360e-02 2.55791633527e-02 2.30253665656e-02 1.93871115228e-02 1.56224022211e-02 - 1.22934163580e-02 9.57619631350e-03 7.50451749096e-03 6.16385997204e-03 5.69328932590e-03 6.16385997204e-03 - 7.50451749096e-03 9.57619631350e-03 1.22934163580e-02 1.56224022211e-02 1.93871115228e-02 2.30253665656e-02 - 2.62352804996e-02 2.45139707404e-02 2.09116171502e-02 1.79304117733e-02 1.79304117733e-02 2.09116171502e-02 - 2.45139707404e-02 2.62352804996e-02 2.51931467427e-02 2.20777720561e-02 1.81502966987e-02 1.43894839458e-02 - 1.12137577955e-02 8.68876908730e-03 6.85668012358e-03 5.86550216407e-03 5.86550216407e-03 6.85668012358e-03 - 8.68876908730e-03 1.12137577955e-02 1.43894839458e-02 1.81502966987e-02 2.20777720561e-02 2.51931467427e-02 - 2.54927185045e-02 2.20787139947e-02 1.79304117733e-02 1.60510791347e-02 1.79304117733e-02 2.20787139947e-02 - 2.54927185045e-02 2.61756575962e-02 2.40839675381e-02 2.03983415996e-02 1.64062528191e-02 1.28580577518e-02 - 9.96167567605e-03 7.73176989509e-03 6.26631005461e-03 5.74651192180e-03 6.26631005461e-03 7.73176989509e-03 - 9.96167567605e-03 1.28580577518e-02 1.64062528191e-02 2.03983415996e-02 2.40839675381e-02 2.61756575962e-02 - 2.45139707404e-02 2.09116171502e-02 1.79304117733e-02 1.79304117733e-02 2.09116171502e-02 2.45139707404e-02 - 2.62352804996e-02 2.51931467427e-02 2.20777720561e-02 1.81502966987e-02 1.43894839458e-02 1.12137577955e-02 - 8.68876908730e-03 6.85668012358e-03 5.86550216407e-03 5.86550216407e-03 6.85668012358e-03 8.68876908730e-03 - 1.12137577955e-02 1.43894839458e-02 1.81502966987e-02 2.20777720561e-02 2.51931467427e-02 2.62352804996e-02 - 2.45139707404e-02 2.20787139947e-02 2.09116171502e-02 2.20787139947e-02 2.45139707404e-02 2.61140936360e-02 - 2.55791633527e-02 2.30253665656e-02 1.93871115228e-02 1.56224022211e-02 1.22934163580e-02 9.57619631350e-03 - 7.50451749096e-03 6.16385997204e-03 5.69328932590e-03 6.16385997204e-03 7.50451749096e-03 9.57619631350e-03 - 1.22934163580e-02 1.56224022211e-02 1.93871115228e-02 2.30253665656e-02 2.55791633527e-02 2.61140936360e-02 - 2.54927185045e-02 2.45139707404e-02 2.45139707404e-02 2.54927185045e-02 2.62352804996e-02 2.55791633527e-02 - 2.33118163733e-02 1.99975947255e-02 1.63906429721e-02 1.30485807277e-02 1.02401100733e-02 8.04455907974e-03 - 6.50338402317e-03 5.69411798450e-03 5.69411798450e-03 6.50338402317e-03 8.04455907974e-03 1.02401100733e-02 - 1.30485807277e-02 1.63906429721e-02 1.99975947255e-02 2.33118163733e-02 2.55791633527e-02 2.62352804996e-02 - 2.62352804996e-02 2.61140936360e-02 2.62352804996e-02 2.61756575962e-02 2.51931467427e-02 2.30253665656e-02 - 1.99975947255e-02 1.66439398964e-02 1.34169388324e-02 1.06109348738e-02 8.37400390520e-03 6.75449318420e-03 - 5.76667312114e-03 5.43239778449e-03 5.76667312114e-03 6.75449318420e-03 8.37400390520e-03 1.06109348738e-02 - 1.34169388324e-02 1.66439398964e-02 1.99975947255e-02 2.30253665656e-02 2.51931467428e-02 2.61756575962e-02 - 2.55791633527e-02 2.55791633527e-02 2.51931467427e-02 2.40839675381e-02 2.20777720561e-02 1.93871115228e-02 - 1.63906429721e-02 1.34169388324e-02 1.07225418333e-02 8.50665152157e-03 6.87426464911e-03 5.82746138702e-03 - 5.32068131556e-03 5.32068131556e-03 5.82746138702e-03 6.87426464911e-03 8.50665152157e-03 1.07225418333e-02 - 1.34169388324e-02 1.63906429721e-02 1.93871115228e-02 2.20777720561e-02 2.40839675381e-02 2.51931467428e-02 - 2.33118163733e-02 2.30253665656e-02 2.20777720561e-02 2.03983415996e-02 1.81502966987e-02 1.56224022211e-02 - 1.30485807277e-02 1.06109348738e-02 8.50665152157e-03 6.90308343843e-03 5.85076317272e-03 5.28636096575e-03 - 5.11303460195e-03 5.28636096575e-03 5.85076317272e-03 6.90308343843e-03 8.50665152157e-03 1.06109348738e-02 - 1.30485807277e-02 1.56224022211e-02 1.81502966987e-02 2.03983415996e-02 2.20777720561e-02 2.30253665656e-02 - 1.99975947255e-02 1.93871115228e-02 1.81502966987e-02 1.64062528191e-02 1.43894839458e-02 1.22934163580e-02 - 1.02401100733e-02 8.37400390520e-03 6.87426464911e-03 5.85076317272e-03 5.27978060753e-03 5.04614391795e-03 - 5.04614391795e-03 5.27978060753e-03 5.85076317272e-03 6.87426464911e-03 8.37400390520e-03 1.02401100733e-02 - 1.22934163580e-02 1.43894839458e-02 1.64062528191e-02 1.81502966987e-02 1.93871115228e-02 1.99975947255e-02 - 1.63906429721e-02 1.56224022211e-02 1.43894839458e-02 1.28580577518e-02 1.12137577955e-02 9.57619631350e-03 - 8.04455907974e-03 6.75449318420e-03 5.82746138702e-03 5.28636096575e-03 5.04614391795e-03 4.98513742725e-03 - 5.04614391795e-03 5.28636096575e-03 5.82746138702e-03 6.75449318420e-03 8.04455907974e-03 9.57619631350e-03 - 1.12137577955e-02 1.28580577518e-02 1.43894839458e-02 1.56224022211e-02 1.63906429721e-02 1.66439398964e-02 - 1.30485807277e-02 1.22934163580e-02 1.12137577955e-02 9.96167567604e-03 8.68876908730e-03 7.50451749096e-03 - 6.50338402317e-03 5.76667312114e-03 5.32068131556e-03 5.11303460195e-03 5.04614391795e-03 5.04614391795e-03 - 5.11303460195e-03 5.32068131556e-03 5.76667312114e-03 6.50338402317e-03 7.50451749096e-03 8.68876908730e-03 - 9.96167567604e-03 1.12137577955e-02 1.22934163580e-02 1.30485807277e-02 1.34169388324e-02 1.34169388324e-02 - 1.02401100733e-02 9.57619631350e-03 8.68876908730e-03 7.73176989509e-03 6.85668012358e-03 6.16385997204e-03 - 5.69411798450e-03 5.43239778449e-03 5.32068131556e-03 5.28636096575e-03 5.27978060753e-03 5.28636096575e-03 - 5.32068131556e-03 5.43239778449e-03 5.69411798450e-03 6.16385997204e-03 6.85668012358e-03 7.73176989509e-03 - 8.68876908730e-03 9.57619631350e-03 1.02401100733e-02 1.06109348738e-02 1.07225418333e-02 1.06109348738e-02 - 8.04455907974e-03 7.50451749096e-03 6.85668012358e-03 6.26631005461e-03 5.86550216407e-03 5.69328932590e-03 - 5.69411798450e-03 5.76667312114e-03 5.82746138702e-03 5.85076317272e-03 5.85076317272e-03 5.82746138702e-03 - 5.76667312114e-03 5.69411798450e-03 5.69328932590e-03 5.86550216407e-03 6.26631005461e-03 6.85668012358e-03 - 7.50451749096e-03 8.04455907974e-03 8.37400390520e-03 8.50665152156e-03 8.50665152156e-03 8.37400390520e-03 - 6.50338402317e-03 6.16385997204e-03 5.86550216407e-03 5.74651192180e-03 5.86550216407e-03 6.16385997204e-03 - 6.50338402317e-03 6.75449318420e-03 6.87426464911e-03 6.90308343843e-03 6.87426464911e-03 6.75449318420e-03 - 6.50338402317e-03 6.16385997204e-03 5.86550216407e-03 5.74651192180e-03 5.86550216407e-03 6.16385997204e-03 - 6.50338402317e-03 6.75449318420e-03 6.87426464911e-03 6.90308343843e-03 6.87426464911e-03 6.75449318420e-03 - 5.69411798450e-03 5.69328932590e-03 5.86550216407e-03 6.26631005461e-03 6.85668012358e-03 7.50451749096e-03 - 8.04455907974e-03 8.37400390520e-03 8.50665152156e-03 8.50665152156e-03 8.37400390520e-03 8.04455907974e-03 - 7.50451749096e-03 6.85668012358e-03 6.26631005461e-03 5.86550216407e-03 5.69328932590e-03 5.69411798450e-03 - 5.76667312114e-03 5.82746138702e-03 5.85076317272e-03 5.85076317272e-03 5.82746138702e-03 5.76667312114e-03 - 5.69411798450e-03 6.16385997204e-03 6.85668012358e-03 7.73176989509e-03 8.68876908730e-03 9.57619631350e-03 - 1.02401100733e-02 1.06109348738e-02 1.07225418333e-02 1.06109348738e-02 1.02401100733e-02 9.57619631350e-03 - 8.68876908730e-03 7.73176989509e-03 6.85668012358e-03 6.16385997204e-03 5.69411798450e-03 5.43239778449e-03 - 5.32068131556e-03 5.28636096575e-03 5.27978060753e-03 5.28636096575e-03 5.32068131556e-03 5.43239778449e-03 - 6.50338402317e-03 7.50451749096e-03 8.68876908730e-03 9.96167567604e-03 1.12137577955e-02 1.22934163580e-02 - 1.30485807277e-02 1.34169388324e-02 1.34169388324e-02 1.30485807277e-02 1.22934163580e-02 1.12137577955e-02 - 9.96167567604e-03 8.68876908730e-03 7.50451749096e-03 6.50338402317e-03 5.76667312114e-03 5.32068131556e-03 - 5.11303460195e-03 5.04614391795e-03 5.04614391795e-03 5.11303460195e-03 5.32068131556e-03 5.76667312114e-03 - 8.04455907974e-03 9.57619631350e-03 1.12137577955e-02 1.28580577518e-02 1.43894839458e-02 1.56224022211e-02 - 1.63906429721e-02 1.66439398964e-02 1.63906429721e-02 1.56224022211e-02 1.43894839458e-02 1.28580577518e-02 - 1.12137577955e-02 9.57619631350e-03 8.04455907974e-03 6.75449318420e-03 5.82746138702e-03 5.28636096575e-03 - 5.04614391795e-03 4.98513742725e-03 5.04614391795e-03 5.28636096575e-03 5.82746138702e-03 6.75449318420e-03 - 1.02401100733e-02 1.22934163580e-02 1.43894839458e-02 1.64062528191e-02 1.81502966987e-02 1.93871115228e-02 - 1.99975947255e-02 1.99975947255e-02 1.93871115228e-02 1.81502966987e-02 1.64062528191e-02 1.43894839458e-02 - 1.22934163580e-02 1.02401100733e-02 8.37400390520e-03 6.87426464911e-03 5.85076317272e-03 5.27978060753e-03 - 5.04614391795e-03 5.04614391795e-03 5.27978060753e-03 5.85076317272e-03 6.87426464911e-03 8.37400390520e-03 - 1.30485807277e-02 1.56224022211e-02 1.81502966987e-02 2.03983415996e-02 2.20777720561e-02 2.30253665656e-02 - 2.33118163733e-02 2.30253665656e-02 2.20777720561e-02 2.03983415996e-02 1.81502966987e-02 1.56224022211e-02 - 1.30485807277e-02 1.06109348738e-02 8.50665152157e-03 6.90308343843e-03 5.85076317272e-03 5.28636096575e-03 - 5.11303460195e-03 5.28636096575e-03 5.85076317272e-03 6.90308343843e-03 8.50665152157e-03 1.06109348738e-02 - 1.63906429721e-02 1.93871115228e-02 2.20777720561e-02 2.40839675381e-02 2.51931467427e-02 2.55791633527e-02 - 2.55791633527e-02 2.51931467428e-02 2.40839675381e-02 2.20777720561e-02 1.93871115228e-02 1.63906429721e-02 - 1.34169388324e-02 1.07225418333e-02 8.50665152157e-03 6.87426464911e-03 5.82746138702e-03 5.32068131556e-03 - 5.32068131556e-03 5.82746138702e-03 6.87426464911e-03 8.50665152157e-03 1.07225418333e-02 1.34169388324e-02 - 1.99975947255e-02 2.30253665656e-02 2.51931467427e-02 2.61756575962e-02 2.62352804996e-02 2.61140936360e-02 - 2.62352804996e-02 2.61756575962e-02 2.51931467428e-02 2.30253665656e-02 1.99975947255e-02 1.66439398964e-02 - 1.34169388324e-02 1.06109348738e-02 8.37400390520e-03 6.75449318420e-03 5.76667312114e-03 5.43239778449e-03 - 5.76667312114e-03 6.75449318420e-03 8.37400390520e-03 1.06109348738e-02 1.34169388324e-02 1.66439398964e-02 - 2.62414819209e-02 2.75584598461e-02 2.69081613820e-02 2.52955690008e-02 2.44579386769e-02 2.52955690008e-02 - 2.69081613820e-02 2.75584598461e-02 2.62414819209e-02 2.31387869200e-02 1.91106081253e-02 1.50739196267e-02 - 1.16095381953e-02 8.89920278516e-03 6.92803651720e-03 5.69411798450e-03 5.26652136817e-03 5.69411798450e-03 - 6.92803651720e-03 8.89920278516e-03 1.16095381953e-02 1.50739196267e-02 1.91106081253e-02 2.31387869200e-02 - 2.75584598461e-02 2.65224863971e-02 2.36141349499e-02 2.10846196163e-02 2.10846196163e-02 2.36141349499e-02 - 2.65224863971e-02 2.75584598461e-02 2.59618688149e-02 2.24043982374e-02 1.81179302207e-02 1.41149739580e-02 - 1.08500532301e-02 8.36360112567e-03 6.62087909721e-03 5.69328932590e-03 5.69328932590e-03 6.62087909721e-03 - 8.36360112567e-03 1.08500532301e-02 1.41149739580e-02 1.81179302207e-02 2.24043982374e-02 2.59618688149e-02 - 2.69081613820e-02 2.36141349499e-02 1.95329704288e-02 1.76763940774e-02 1.95329704288e-02 2.36141349499e-02 - 2.69081613820e-02 2.73903662614e-02 2.49964037842e-02 2.09446754967e-02 1.66276099946e-02 1.28937939562e-02 - 9.96234500644e-03 7.77912772161e-03 6.36555591033e-03 5.86550216407e-03 6.36555591034e-03 7.77912772161e-03 - 9.96234500644e-03 1.28937939562e-02 1.66276099946e-02 2.09446754967e-02 2.49964037842e-02 2.73903662614e-02 - 2.52955690008e-02 2.10846196163e-02 1.76763940774e-02 1.76763940774e-02 2.10846196163e-02 2.52955690008e-02 - 2.74769895380e-02 2.65400648390e-02 2.32030440049e-02 1.89263764236e-02 1.48932100517e-02 1.16029685725e-02 - 9.07031679536e-03 7.25301575415e-03 6.26631005461e-03 6.26631005461e-03 7.25301575416e-03 9.07031679536e-03 - 1.16029685725e-02 1.48932100517e-02 1.89263764236e-02 2.32030440049e-02 2.65400648390e-02 2.74769895380e-02 - 2.44579386769e-02 2.10846196163e-02 1.95329704288e-02 2.10846196163e-02 2.44579386769e-02 2.70513354759e-02 - 2.71142998602e-02 2.46286629032e-02 2.07196781889e-02 1.66389339973e-02 1.31234388541e-02 1.03422447642e-02 - 8.23785813083e-03 6.85668012358e-03 6.36555591034e-03 6.85668012358e-03 8.23785813083e-03 1.03422447642e-02 - 1.31234388541e-02 1.66389339973e-02 2.07196781889e-02 2.46286629032e-02 2.71142998602e-02 2.70513354759e-02 - 2.52955690008e-02 2.36141349499e-02 2.36141349499e-02 2.52955690008e-02 2.70513354759e-02 2.72051400328e-02 - 2.52445347087e-02 2.17948830411e-02 1.78888288560e-02 1.43188164440e-02 1.14031750108e-02 9.13724506495e-03 - 7.50451749096e-03 6.62087909721e-03 6.62087909721e-03 7.50451749096e-03 9.13724506496e-03 1.14031750108e-02 - 1.43188164440e-02 1.78888288560e-02 2.17948830411e-02 2.52445347087e-02 2.72051400328e-02 2.70513354759e-02 - 2.69081613820e-02 2.65224863971e-02 2.69081613820e-02 2.74769895380e-02 2.71142998602e-02 2.52445347087e-02 - 2.21386056500e-02 1.85132763207e-02 1.50424663757e-02 1.21045128275e-02 9.78219490488e-03 8.04455907974e-03 - 6.92803651720e-03 6.53729803366e-03 6.92803651720e-03 8.04455907974e-03 9.78219490488e-03 1.21045128275e-02 - 1.50424663757e-02 1.85132763207e-02 2.21386056500e-02 2.52445347088e-02 2.71142998602e-02 2.74769895380e-02 - 2.75584598461e-02 2.75584598461e-02 2.73903662614e-02 2.65400648390e-02 2.46286629032e-02 2.17948830411e-02 - 1.85132763207e-02 1.52762540169e-02 1.24265880360e-02 1.01198499891e-02 8.37400390520e-03 7.17862759619e-03 - 6.56138198057e-03 6.56138198057e-03 7.17862759619e-03 8.37400390520e-03 1.01198499891e-02 1.24265880360e-02 - 1.52762540169e-02 1.85132763207e-02 2.17948830411e-02 2.46286629032e-02 2.65400648390e-02 2.73903662614e-02 - 2.62414819209e-02 2.59618688149e-02 2.49964037842e-02 2.32030440049e-02 2.07196781889e-02 1.78888288560e-02 - 1.50424663757e-02 1.24265880360e-02 1.02153626600e-02 8.50665152157e-03 7.31933010296e-03 6.62684043801e-03 - 6.39967919814e-03 6.62684043801e-03 7.31933010296e-03 8.50665152157e-03 1.02153626600e-02 1.24265880360e-02 - 1.50424663757e-02 1.78888288560e-02 2.07196781889e-02 2.32030440049e-02 2.49964037842e-02 2.59618688149e-02 - 2.31387869200e-02 2.24043982374e-02 2.09446754967e-02 1.89263764236e-02 1.66389339973e-02 1.43188164440e-02 - 1.21045128275e-02 1.01198499891e-02 8.50665152157e-03 7.36052161959e-03 6.67439308888e-03 6.36714430779e-03 - 6.36714430779e-03 6.67439308888e-03 7.36052161959e-03 8.50665152157e-03 1.01198499891e-02 1.21045128275e-02 - 1.43188164440e-02 1.66389339973e-02 1.89263764236e-02 2.09446754967e-02 2.24043982374e-02 2.31387869200e-02 - 1.91106081253e-02 1.81179302207e-02 1.66276099946e-02 1.48932100517e-02 1.31234388541e-02 1.14031750108e-02 - 9.78219490488e-03 8.37400390520e-03 7.31933010296e-03 6.67439308888e-03 6.36996915701e-03 6.28719817635e-03 - 6.36996915701e-03 6.67439308888e-03 7.31933010296e-03 8.37400390520e-03 9.78219490488e-03 1.14031750108e-02 - 1.31234388541e-02 1.48932100517e-02 1.66276099946e-02 1.81179302207e-02 1.91106081253e-02 1.94536795471e-02 - 1.50739196267e-02 1.41149739580e-02 1.28937939562e-02 1.16029685725e-02 1.03422447642e-02 9.13724506496e-03 - 8.04455907974e-03 7.17862759619e-03 6.62684043802e-03 6.36714430779e-03 6.28719817635e-03 6.28719817635e-03 - 6.36714430779e-03 6.62684043801e-03 7.17862759619e-03 8.04455907974e-03 9.13724506495e-03 1.03422447642e-02 - 1.16029685725e-02 1.28937939562e-02 1.41149739580e-02 1.50739196267e-02 1.55937378378e-02 1.55937378378e-02 - 1.16095381953e-02 1.08500532301e-02 9.96234500643e-03 9.07031679536e-03 8.23785813083e-03 7.50451749096e-03 - 6.92803651720e-03 6.56138198057e-03 6.39967919814e-03 6.36714430779e-03 6.36996915701e-03 6.36714430779e-03 - 6.39967919814e-03 6.56138198057e-03 6.92803651720e-03 7.50451749096e-03 8.23785813083e-03 9.07031679536e-03 - 9.96234500643e-03 1.08500532301e-02 1.16095381953e-02 1.21090534529e-02 1.22800512627e-02 1.21090534529e-02 - 8.89920278515e-03 8.36360112566e-03 7.77912772161e-03 7.25301575416e-03 6.85668012358e-03 6.62087909721e-03 - 6.53729803367e-03 6.56138198057e-03 6.62684043802e-03 6.67439308889e-03 6.67439308888e-03 6.62684043801e-03 - 6.56138198057e-03 6.53729803366e-03 6.62087909721e-03 6.85668012358e-03 7.25301575415e-03 7.77912772161e-03 - 8.36360112566e-03 8.89920278515e-03 9.28357359922e-03 9.47290433110e-03 9.47290433110e-03 9.28357359922e-03 - 6.92803651719e-03 6.62087909720e-03 6.36555591033e-03 6.26631005461e-03 6.36555591034e-03 6.62087909721e-03 - 6.92803651720e-03 7.17862759619e-03 7.31933010296e-03 7.36052161959e-03 7.31933010296e-03 7.17862759619e-03 - 6.92803651720e-03 6.62087909721e-03 6.36555591034e-03 6.26631005461e-03 6.36555591033e-03 6.62087909720e-03 - 6.92803651719e-03 7.17862759619e-03 7.31933010296e-03 7.36052161958e-03 7.31933010296e-03 7.17862759619e-03 - 5.69411798450e-03 5.69328932590e-03 5.86550216407e-03 6.26631005461e-03 6.85668012358e-03 7.50451749096e-03 - 8.04455907974e-03 8.37400390520e-03 8.50665152157e-03 8.50665152157e-03 8.37400390520e-03 8.04455907974e-03 - 7.50451749096e-03 6.85668012358e-03 6.26631005461e-03 5.86550216407e-03 5.69328932590e-03 5.69411798450e-03 - 5.76667312114e-03 5.82746138702e-03 5.85076317272e-03 5.85076317272e-03 5.82746138702e-03 5.76667312114e-03 - 5.26652136817e-03 5.69328932590e-03 6.36555591034e-03 7.25301575416e-03 8.23785813083e-03 9.13724506495e-03 - 9.78219490488e-03 1.01198499891e-02 1.02153626600e-02 1.01198499891e-02 9.78219490488e-03 9.13724506495e-03 - 8.23785813083e-03 7.25301575416e-03 6.36555591034e-03 5.69328932590e-03 5.26652136817e-03 5.04343778102e-03 - 4.94632325183e-03 4.90588959931e-03 4.89318523683e-03 4.90588959931e-03 4.94632325183e-03 5.04343778102e-03 - 5.69411798450e-03 6.62087909721e-03 7.77912772161e-03 9.07031679536e-03 1.03422447642e-02 1.14031750108e-02 - 1.21045128275e-02 1.24265880360e-02 1.24265880360e-02 1.21045128275e-02 1.14031750108e-02 1.03422447642e-02 - 9.07031679536e-03 7.77912772161e-03 6.62087909721e-03 5.69411798450e-03 5.04343778102e-03 4.65175947716e-03 - 4.45367296569e-03 4.37599558137e-03 4.37599558137e-03 4.45367296569e-03 4.65175947716e-03 5.04343778102e-03 - 6.92803651720e-03 8.36360112567e-03 9.96234500644e-03 1.16029685725e-02 1.31234388541e-02 1.43188164440e-02 - 1.50424663757e-02 1.52762540169e-02 1.50424663757e-02 1.43188164440e-02 1.31234388541e-02 1.16029685725e-02 - 9.96234500643e-03 8.36360112567e-03 6.92803651720e-03 5.76667312114e-03 4.94632325183e-03 4.45367296569e-03 - 4.21584246473e-03 4.14918646508e-03 4.21584246472e-03 4.45367296569e-03 4.94632325183e-03 5.76667312114e-03 - 8.89920278516e-03 1.08500532301e-02 1.28937939562e-02 1.48932100517e-02 1.66389339973e-02 1.78888288560e-02 - 1.85132763207e-02 1.85132763207e-02 1.78888288560e-02 1.66389339973e-02 1.48932100517e-02 1.28937939562e-02 - 1.08500532301e-02 8.89920278516e-03 7.17862759619e-03 5.82746138702e-03 4.90588959931e-03 4.37599558137e-03 - 4.14918646508e-03 4.14918646508e-03 4.37599558137e-03 4.90588959931e-03 5.82746138702e-03 7.17862759619e-03 - 1.16095381953e-02 1.41149739580e-02 1.66276099946e-02 1.89263764236e-02 2.07196781889e-02 2.17948830411e-02 - 2.21386056500e-02 2.17948830411e-02 2.07196781889e-02 1.89263764236e-02 1.66276099946e-02 1.41149739580e-02 - 1.16095381953e-02 9.28357359923e-03 7.31933010296e-03 5.85076317272e-03 4.89318523683e-03 4.37599558137e-03 - 4.21584246472e-03 4.37599558137e-03 4.89318523683e-03 5.85076317272e-03 7.31933010296e-03 9.28357359923e-03 - 1.50739196267e-02 1.81179302207e-02 2.09446754967e-02 2.32030440049e-02 2.46286629032e-02 2.52445347088e-02 - 2.52445347088e-02 2.46286629032e-02 2.32030440049e-02 2.09446754967e-02 1.81179302207e-02 1.50739196267e-02 - 1.21090534529e-02 9.47290433111e-03 7.36052161959e-03 5.85076317272e-03 4.90588959931e-03 4.45367296569e-03 - 4.45367296569e-03 4.90588959931e-03 5.85076317272e-03 7.36052161959e-03 9.47290433111e-03 1.21090534529e-02 - 1.91106081253e-02 2.24043982374e-02 2.49964037842e-02 2.65400648390e-02 2.71142998602e-02 2.72051400328e-02 - 2.71142998602e-02 2.65400648390e-02 2.49964037842e-02 2.24043982374e-02 1.91106081253e-02 1.55937378378e-02 - 1.22800512627e-02 9.47290433111e-03 7.31933010296e-03 5.82746138702e-03 4.94632325183e-03 4.65175947716e-03 - 4.94632325183e-03 5.82746138702e-03 7.31933010296e-03 9.47290433111e-03 1.22800512627e-02 1.55937378378e-02 - 2.31387869200e-02 2.59618688149e-02 2.73903662614e-02 2.74769895380e-02 2.70513354759e-02 2.70513354759e-02 - 2.74769895380e-02 2.73903662614e-02 2.59618688149e-02 2.31387869200e-02 1.94536795471e-02 1.55937378378e-02 - 1.21090534529e-02 9.28357359923e-03 7.17862759619e-03 5.76667312114e-03 5.04343778102e-03 5.04343778102e-03 - 5.76667312114e-03 7.17862759619e-03 9.28357359923e-03 1.21090534529e-02 1.55937378378e-02 1.94536795471e-02 - 3.06058831029e-02 3.03789244340e-02 2.81921950446e-02 2.61164989591e-02 2.61164989591e-02 2.81921950446e-02 - 3.03789244340e-02 3.06058831029e-02 2.81653274579e-02 2.37301976795e-02 1.86355176327e-02 1.40806383265e-02 - 1.06051613742e-02 8.15758815908e-03 6.53729803366e-03 5.69411798450e-03 5.69411798450e-03 6.53729803367e-03 - 8.15758815908e-03 1.06051613742e-02 1.40806383265e-02 1.86355176327e-02 2.37301976795e-02 2.81653274579e-02 - 3.03789244340e-02 2.73937018060e-02 2.35389825848e-02 2.17746576295e-02 2.35389825848e-02 2.73937018060e-02 - 3.03789244340e-02 3.04051143293e-02 2.73091501295e-02 2.23752455712e-02 1.72611853896e-02 1.30618774824e-02 - 1.00210602336e-02 7.92498387887e-03 6.62087909720e-03 6.16385997204e-03 6.62087909721e-03 7.92498387888e-03 - 1.00210602336e-02 1.30618774824e-02 1.72611853896e-02 2.23752455712e-02 2.73091501295e-02 3.04051143293e-02 - 2.81921950446e-02 2.35389825848e-02 1.98434779695e-02 1.98434779695e-02 2.35389825848e-02 2.81921950446e-02 - 3.06792139923e-02 2.95890354456e-02 2.55726183949e-02 2.03920879638e-02 1.56489970468e-02 1.20439356208e-02 - 9.50248837487e-03 7.77912772161e-03 6.85668012358e-03 6.85668012358e-03 7.77912772161e-03 9.50248837488e-03 - 1.20439356208e-02 1.56489970468e-02 2.03920879638e-02 2.55726183949e-02 2.95890354456e-02 3.06792139923e-02 - 2.61164989591e-02 2.17746576295e-02 1.98434779695e-02 2.17746576295e-02 2.61164989591e-02 2.97974895143e-02 - 3.04773481040e-02 2.78013937268e-02 2.30939042849e-02 1.81430425204e-02 1.40901390285e-02 1.11481007476e-02 - 9.07031679536e-03 7.73176989509e-03 7.25301575416e-03 7.73176989509e-03 9.07031679536e-03 1.11481007476e-02 - 1.40901390285e-02 1.81430425204e-02 2.30939042849e-02 2.78013937268e-02 3.04773481040e-02 2.97974895143e-02 - 2.61164989591e-02 2.35389825848e-02 2.35389825848e-02 2.61164989591e-02 2.92436594720e-02 3.05548189106e-02 - 2.89473471924e-02 2.49902463304e-02 2.02040886880e-02 1.59287126341e-02 1.26855285494e-02 1.03422447642e-02 - 8.68876908730e-03 7.77912772161e-03 7.77912772161e-03 8.68876908730e-03 1.03422447642e-02 1.26855285494e-02 - 1.59287126341e-02 2.02040886880e-02 2.49902463304e-02 2.89473471924e-02 3.05548189106e-02 2.92436594720e-02 - 2.81921950446e-02 2.73937018060e-02 2.81921950446e-02 2.97974895143e-02 3.05548189106e-02 2.92643382604e-02 - 2.59181147281e-02 2.15195877577e-02 1.72812015630e-02 1.38961516944e-02 1.14031750108e-02 9.57619631350e-03 - 8.36360112567e-03 7.92498387888e-03 8.36360112567e-03 9.57619631350e-03 1.14031750108e-02 1.38961516944e-02 - 1.72812015630e-02 2.15195877577e-02 2.59181147281e-02 2.92643382604e-02 3.05548189106e-02 2.97974895143e-02 - 3.03789244340e-02 3.03789244340e-02 3.06792139923e-02 3.04773481039e-02 2.89473471924e-02 2.59181147280e-02 - 2.19611077293e-02 1.79741436761e-02 1.46288647205e-02 1.21045128275e-02 1.02401100733e-02 8.89920278515e-03 - 8.15758815907e-03 8.15758815907e-03 8.89920278516e-03 1.02401100733e-02 1.21045128275e-02 1.46288647205e-02 - 1.79741436761e-02 2.19611077293e-02 2.59181147281e-02 2.89473471924e-02 3.04773481040e-02 3.06792139923e-02 - 3.06058831029e-02 3.04051143293e-02 2.95890354456e-02 2.78013937268e-02 2.49902463304e-02 2.15195877577e-02 - 1.79741436761e-02 1.48656767560e-02 1.24265880360e-02 1.06109348738e-02 9.28357359923e-03 8.41997198039e-03 - 8.11230157084e-03 8.41997198039e-03 9.28357359923e-03 1.06109348738e-02 1.24265880360e-02 1.48656767560e-02 - 1.79741436761e-02 2.15195877577e-02 2.49902463304e-02 2.78013937268e-02 2.95890354456e-02 3.04051143293e-02 - 2.81653274579e-02 2.73091501295e-02 2.55726183949e-02 2.30939042849e-02 2.02040886880e-02 1.72812015630e-02 - 1.46288647205e-02 1.24265880360e-02 1.07225418333e-02 9.47290433111e-03 8.62540500905e-03 8.18383164206e-03 - 8.18383164206e-03 8.62540500905e-03 9.47290433111e-03 1.07225418333e-02 1.24265880360e-02 1.46288647205e-02 - 1.72812015630e-02 2.02040886880e-02 2.30939042849e-02 2.55726183949e-02 2.73091501295e-02 2.81653274579e-02 - 2.37301976795e-02 2.23752455712e-02 2.03920879638e-02 1.81430425204e-02 1.59287126341e-02 1.38961516944e-02 - 1.21045128275e-02 1.06109348738e-02 9.47290433111e-03 8.70256016586e-03 8.26409670065e-03 8.12161313174e-03 - 8.26409670065e-03 8.70256016587e-03 9.47290433111e-03 1.06109348738e-02 1.21045128275e-02 1.38961516944e-02 - 1.59287126341e-02 1.81430425204e-02 2.03920879638e-02 2.23752455712e-02 2.37301976795e-02 2.42075414898e-02 - 1.86355176327e-02 1.72611853896e-02 1.56489970468e-02 1.40901390285e-02 1.26855285494e-02 1.14031750108e-02 - 1.02401100733e-02 9.28357359923e-03 8.62540500906e-03 8.26409670065e-03 8.11874591476e-03 8.11874591476e-03 - 8.26409670065e-03 8.62540500906e-03 9.28357359923e-03 1.02401100733e-02 1.14031750108e-02 1.26855285494e-02 - 1.40901390285e-02 1.56489970468e-02 1.72611853896e-02 1.86355176327e-02 1.94290489291e-02 1.94290489291e-02 - 1.40806383265e-02 1.30618774824e-02 1.20439356208e-02 1.11481007476e-02 1.03422447642e-02 9.57619631350e-03 - 8.89920278516e-03 8.41997198039e-03 8.18383164206e-03 8.12161313174e-03 8.11874591477e-03 8.12161313175e-03 - 8.18383164206e-03 8.41997198039e-03 8.89920278516e-03 9.57619631350e-03 1.03422447642e-02 1.11481007476e-02 - 1.20439356208e-02 1.30618774824e-02 1.40806383265e-02 1.48492046219e-02 1.51354763629e-02 1.48492046219e-02 - 1.06051613742e-02 1.00210602336e-02 9.50248837487e-03 9.07031679536e-03 8.68876908730e-03 8.36360112567e-03 - 8.15758815908e-03 8.11230157085e-03 8.18383164206e-03 8.26409670065e-03 8.26409670065e-03 8.18383164206e-03 - 8.11230157085e-03 8.15758815908e-03 8.36360112567e-03 8.68876908730e-03 9.07031679536e-03 9.50248837487e-03 - 1.00210602336e-02 1.06051613742e-02 1.11331987338e-02 1.14481144732e-02 1.14481144732e-02 1.11331987338e-02 - 8.15758815907e-03 7.92498387887e-03 7.77912772161e-03 7.73176989509e-03 7.77912772161e-03 7.92498387888e-03 - 8.15758815908e-03 8.41997198039e-03 8.62540500906e-03 8.70256016587e-03 8.62540500905e-03 8.41997198039e-03 - 8.15758815908e-03 7.92498387888e-03 7.77912772161e-03 7.73176989509e-03 7.77912772161e-03 7.92498387887e-03 - 8.15758815907e-03 8.41997198038e-03 8.62540500905e-03 8.70256016586e-03 8.62540500905e-03 8.41997198038e-03 - 6.53729803366e-03 6.62087909720e-03 6.85668012358e-03 7.25301575416e-03 7.77912772161e-03 8.36360112567e-03 - 8.89920278516e-03 9.28357359923e-03 9.47290433111e-03 9.47290433111e-03 9.28357359923e-03 8.89920278516e-03 - 8.36360112567e-03 7.77912772161e-03 7.25301575416e-03 6.85668012358e-03 6.62087909720e-03 6.53729803366e-03 - 6.56138198056e-03 6.62684043801e-03 6.67439308888e-03 6.67439308888e-03 6.62684043801e-03 6.56138198056e-03 - 5.69411798450e-03 6.16385997204e-03 6.85668012358e-03 7.73176989509e-03 8.68876908730e-03 9.57619631350e-03 - 1.02401100733e-02 1.06109348738e-02 1.07225418333e-02 1.06109348738e-02 1.02401100733e-02 9.57619631350e-03 - 8.68876908730e-03 7.73176989509e-03 6.85668012358e-03 6.16385997204e-03 5.69411798450e-03 5.43239778449e-03 - 5.32068131556e-03 5.28636096575e-03 5.27978060753e-03 5.28636096575e-03 5.32068131556e-03 5.43239778448e-03 - 5.69411798450e-03 6.62087909721e-03 7.77912772161e-03 9.07031679536e-03 1.03422447642e-02 1.14031750108e-02 - 1.21045128275e-02 1.24265880360e-02 1.24265880360e-02 1.21045128275e-02 1.14031750108e-02 1.03422447642e-02 - 9.07031679536e-03 7.77912772161e-03 6.62087909721e-03 5.69411798450e-03 5.04343778102e-03 4.65175947716e-03 - 4.45367296569e-03 4.37599558137e-03 4.37599558137e-03 4.45367296569e-03 4.65175947716e-03 5.04343778102e-03 - 6.53729803366e-03 7.92498387888e-03 9.50248837487e-03 1.11481007476e-02 1.26855285494e-02 1.38961516945e-02 - 1.46288647205e-02 1.48656767561e-02 1.46288647205e-02 1.38961516945e-02 1.26855285494e-02 1.11481007476e-02 - 9.50248837487e-03 7.92498387888e-03 6.53729803366e-03 5.43239778449e-03 4.65175947716e-03 4.16945913194e-03 - 3.92281290681e-03 3.84964089400e-03 3.92281290681e-03 4.16945913194e-03 4.65175947716e-03 5.43239778449e-03 - 8.15758815908e-03 1.00210602336e-02 1.20439356208e-02 1.40901390285e-02 1.59287126341e-02 1.72812015630e-02 - 1.79741436761e-02 1.79741436761e-02 1.72812015630e-02 1.59287126341e-02 1.40901390285e-02 1.20439356208e-02 - 1.00210602336e-02 8.15758815907e-03 6.56138198057e-03 5.32068131556e-03 4.45367296569e-03 3.92281290681e-03 - 3.67768921534e-03 3.67768921534e-03 3.92281290681e-03 4.45367296569e-03 5.32068131556e-03 6.56138198057e-03 - 1.06051613742e-02 1.30618774824e-02 1.56489970468e-02 1.81430425204e-02 2.02040886880e-02 2.15195877577e-02 - 2.19611077293e-02 2.15195877577e-02 2.02040886880e-02 1.81430425205e-02 1.56489970468e-02 1.30618774824e-02 - 1.06051613742e-02 8.41997198039e-03 6.62684043801e-03 5.28636096575e-03 4.37599558137e-03 3.84964089400e-03 - 3.67768921534e-03 3.84964089400e-03 4.37599558137e-03 5.28636096575e-03 6.62684043801e-03 8.41997198039e-03 - 1.40806383265e-02 1.72611853896e-02 2.03920879638e-02 2.30939042850e-02 2.49902463304e-02 2.59181147281e-02 - 2.59181147281e-02 2.49902463304e-02 2.30939042850e-02 2.03920879638e-02 1.72611853896e-02 1.40806383265e-02 - 1.11331987338e-02 8.62540500906e-03 6.67439308888e-03 5.27978060753e-03 4.37599558137e-03 3.92281290681e-03 - 3.92281290681e-03 4.37599558137e-03 5.27978060753e-03 6.67439308888e-03 8.62540500906e-03 1.11331987338e-02 - 1.86355176327e-02 2.23752455712e-02 2.55726183949e-02 2.78013937268e-02 2.89473471924e-02 2.92643382604e-02 - 2.89473471924e-02 2.78013937268e-02 2.55726183949e-02 2.23752455712e-02 1.86355176327e-02 1.48492046219e-02 - 1.14481144732e-02 8.70256016587e-03 6.67439308889e-03 5.28636096575e-03 4.45367296569e-03 4.16945913194e-03 - 4.45367296569e-03 5.28636096575e-03 6.67439308889e-03 8.70256016587e-03 1.14481144732e-02 1.48492046219e-02 - 2.37301976795e-02 2.73091501295e-02 2.95890354456e-02 3.04773481040e-02 3.05548189106e-02 3.05548189106e-02 - 3.04773481040e-02 2.95890354456e-02 2.73091501295e-02 2.37301976795e-02 1.94290489291e-02 1.51354763629e-02 - 1.14481144732e-02 8.62540500906e-03 6.62684043802e-03 5.32068131556e-03 4.65175947716e-03 4.65175947716e-03 - 5.32068131556e-03 6.62684043802e-03 8.62540500906e-03 1.14481144732e-02 1.51354763629e-02 1.94290489291e-02 - 2.81653274579e-02 3.04051143293e-02 3.06792139923e-02 2.97974895143e-02 2.92436594720e-02 2.97974895143e-02 - 3.06792139923e-02 3.04051143293e-02 2.81653274579e-02 2.42075414898e-02 1.94290489291e-02 1.48492046219e-02 - 1.11331987338e-02 8.41997198039e-03 6.56138198057e-03 5.43239778449e-03 5.04343778102e-03 5.43239778449e-03 - 6.56138198057e-03 8.41997198039e-03 1.11331987338e-02 1.48492046219e-02 1.94290489291e-02 2.42075414898e-02 - 3.48683159917e-02 3.31551669202e-02 3.05273339684e-02 2.92890570903e-02 3.05273339684e-02 3.31551669202e-02 - 3.48683159917e-02 3.38925854809e-02 2.99301385615e-02 2.40967233573e-02 1.81617046076e-02 1.34421324248e-02 - 1.02248872526e-02 8.15758815907e-03 6.92803651720e-03 6.50338402317e-03 6.92803651720e-03 8.15758815908e-03 - 1.02248872526e-02 1.34421324248e-02 1.81617046076e-02 2.40967233573e-02 2.99301385615e-02 3.38925854809e-02 - 3.31551669202e-02 2.95749315132e-02 2.67216511960e-02 2.67216511960e-02 2.95749315132e-02 3.31551669202e-02 - 3.48628450776e-02 3.31963581644e-02 2.84217494631e-02 2.22713307355e-02 1.66950035376e-02 1.26511415702e-02 - 1.00210602336e-02 8.36360112567e-03 7.50451749096e-03 7.50451749096e-03 8.36360112567e-03 1.00210602336e-02 - 1.26511415702e-02 1.66950035376e-02 2.22713307355e-02 2.84217494631e-02 3.31963581644e-02 3.48628450776e-02 - 3.05273339684e-02 2.67216511959e-02 2.50661805907e-02 2.67216511959e-02 3.05273339684e-02 3.39196724265e-02 - 3.45751625707e-02 3.16057035862e-02 2.60492747623e-02 2.00583037371e-02 1.52718999852e-02 1.20439356208e-02 - 9.96234500643e-03 8.68876908730e-03 8.23785813083e-03 8.68876908730e-03 9.96234500644e-03 1.20439356208e-02 - 1.52718999852e-02 2.00583037371e-02 2.60492747623e-02 3.16057035862e-02 3.45751625707e-02 3.39196724265e-02 - 2.92890570902e-02 2.67216511959e-02 2.67216511959e-02 2.92890570902e-02 3.26920605346e-02 3.46096179590e-02 - 3.33647463123e-02 2.89590113766e-02 2.31231583381e-02 1.78657504093e-02 1.40901390285e-02 1.16029685725e-02 - 9.96167567605e-03 9.07031679536e-03 9.07031679536e-03 9.96167567605e-03 1.16029685725e-02 1.40901390285e-02 - 1.78657504093e-02 2.31231583381e-02 2.89590113766e-02 3.33647463123e-02 3.46096179590e-02 3.26920605346e-02 - 3.05273339684e-02 2.95749315132e-02 3.05273339684e-02 3.26920605346e-02 3.44216532953e-02 3.39942859271e-02 - 3.06728014251e-02 2.54054430258e-02 2.00653973118e-02 1.59287126341e-02 1.31234388541e-02 1.12137577955e-02 - 9.96234500644e-03 9.50248837487e-03 9.96234500644e-03 1.12137577955e-02 1.31234388541e-02 1.59287126341e-02 - 2.00653973118e-02 2.54054430258e-02 3.06728014251e-02 3.39942859271e-02 3.44216532954e-02 3.26920605346e-02 - 3.31551669202e-02 3.31551669201e-02 3.39196724264e-02 3.46096179590e-02 3.39942859271e-02 3.12134113093e-02 - 2.65858530209e-02 2.15038028103e-02 1.72812015630e-02 1.43188164440e-02 1.22934163580e-02 1.08500532301e-02 - 1.00210602336e-02 1.00210602336e-02 1.08500532301e-02 1.22934163580e-02 1.43188164440e-02 1.72812015630e-02 - 2.15038028103e-02 2.65858530209e-02 3.12134113093e-02 3.39942859271e-02 3.46096179590e-02 3.39196724265e-02 - 3.48683159917e-02 3.48628450776e-02 3.45751625707e-02 3.33647463123e-02 3.06728014251e-02 2.65858530209e-02 - 2.19947599998e-02 1.79741436761e-02 1.50424663757e-02 1.30485807277e-02 1.16095381953e-02 1.06051613742e-02 - 1.02248872526e-02 1.06051613742e-02 1.16095381953e-02 1.30485807277e-02 1.50424663757e-02 1.79741436761e-02 - 2.19947599998e-02 2.65858530209e-02 3.06728014251e-02 3.33647463123e-02 3.45751625707e-02 3.48628450776e-02 - 3.38925854809e-02 3.31963581643e-02 3.16057035862e-02 2.89590113766e-02 2.54054430258e-02 2.15038028103e-02 - 1.79741436761e-02 1.52762540169e-02 1.34169388324e-02 1.21090534529e-02 1.11331987338e-02 1.05557815436e-02 - 1.05557815436e-02 1.11331987338e-02 1.21090534529e-02 1.34169388324e-02 1.52762540169e-02 1.79741436761e-02 - 2.15038028103e-02 2.54054430258e-02 2.89590113766e-02 3.16057035862e-02 3.31963581644e-02 3.38925854809e-02 - 2.99301385615e-02 2.84217494631e-02 2.60492747622e-02 2.31231583381e-02 2.00653973118e-02 1.72812015630e-02 - 1.50424663757e-02 1.34169388324e-02 1.22800512627e-02 1.14481144732e-02 1.08699825973e-02 1.06518186545e-02 - 1.08699825973e-02 1.14481144732e-02 1.22800512627e-02 1.34169388324e-02 1.50424663757e-02 1.72812015630e-02 - 2.00653973118e-02 2.31231583381e-02 2.60492747622e-02 2.84217494631e-02 2.99301385615e-02 3.04404777485e-02 - 2.40967233573e-02 2.22713307355e-02 2.00583037371e-02 1.78657504093e-02 1.59287126341e-02 1.43188164440e-02 - 1.30485807277e-02 1.21090534529e-02 1.14481144732e-02 1.09990704821e-02 1.07546834176e-02 1.07546834176e-02 - 1.09990704821e-02 1.14481144732e-02 1.21090534529e-02 1.30485807277e-02 1.43188164440e-02 1.59287126341e-02 - 1.78657504093e-02 2.00583037371e-02 2.22713307355e-02 2.40967233573e-02 2.51249889113e-02 2.51249889113e-02 - 1.81617046076e-02 1.66950035376e-02 1.52718999852e-02 1.40901390285e-02 1.31234388541e-02 1.22934163580e-02 - 1.16095381953e-02 1.11331987338e-02 1.08699825973e-02 1.07546834176e-02 1.07233722050e-02 1.07546834176e-02 - 1.08699825973e-02 1.11331987338e-02 1.16095381953e-02 1.22934163580e-02 1.31234388541e-02 1.40901390285e-02 - 1.52718999852e-02 1.66950035376e-02 1.81617046076e-02 1.92840317465e-02 1.97044449599e-02 1.92840317465e-02 - 1.34421324248e-02 1.26511415702e-02 1.20439356208e-02 1.16029685725e-02 1.12137577955e-02 1.08500532301e-02 - 1.06051613742e-02 1.05557815436e-02 1.06518186545e-02 1.07546834176e-02 1.07546834176e-02 1.06518186545e-02 - 1.05557815436e-02 1.06051613742e-02 1.08500532301e-02 1.12137577955e-02 1.16029685725e-02 1.20439356208e-02 - 1.26511415702e-02 1.34421324248e-02 1.42308801751e-02 1.47279181688e-02 1.47279181688e-02 1.42308801751e-02 - 1.02248872526e-02 1.00210602336e-02 9.96234500643e-03 9.96167567605e-03 9.96234500644e-03 1.00210602336e-02 - 1.02248872526e-02 1.05557815436e-02 1.08699825973e-02 1.09990704821e-02 1.08699825973e-02 1.05557815436e-02 - 1.02248872526e-02 1.00210602336e-02 9.96234500644e-03 9.96167567604e-03 9.96234500643e-03 1.00210602336e-02 - 1.02248872526e-02 1.05557815436e-02 1.08699825973e-02 1.09990704821e-02 1.08699825973e-02 1.05557815436e-02 - 8.15758815907e-03 8.36360112567e-03 8.68876908730e-03 9.07031679536e-03 9.50248837488e-03 1.00210602336e-02 - 1.06051613742e-02 1.11331987338e-02 1.14481144732e-02 1.14481144732e-02 1.11331987338e-02 1.06051613742e-02 - 1.00210602336e-02 9.50248837488e-03 9.07031679536e-03 8.68876908730e-03 8.36360112566e-03 8.15758815907e-03 - 8.11230157084e-03 8.18383164206e-03 8.26409670065e-03 8.26409670065e-03 8.18383164206e-03 8.11230157084e-03 - 6.92803651719e-03 7.50451749096e-03 8.23785813083e-03 9.07031679536e-03 9.96234500644e-03 1.08500532301e-02 - 1.16095381953e-02 1.21090534529e-02 1.22800512627e-02 1.21090534529e-02 1.16095381953e-02 1.08500532301e-02 - 9.96234500644e-03 9.07031679536e-03 8.23785813083e-03 7.50451749096e-03 6.92803651719e-03 6.56138198056e-03 - 6.39967919814e-03 6.36714430779e-03 6.36996915701e-03 6.36714430779e-03 6.39967919814e-03 6.56138198056e-03 - 6.50338402317e-03 7.50451749096e-03 8.68876908731e-03 9.96167567605e-03 1.12137577955e-02 1.22934163580e-02 - 1.30485807277e-02 1.34169388324e-02 1.34169388324e-02 1.30485807277e-02 1.22934163580e-02 1.12137577955e-02 - 9.96167567605e-03 8.68876908730e-03 7.50451749096e-03 6.50338402317e-03 5.76667312114e-03 5.32068131556e-03 - 5.11303460195e-03 5.04614391795e-03 5.04614391795e-03 5.11303460194e-03 5.32068131556e-03 5.76667312114e-03 - 6.92803651720e-03 8.36360112567e-03 9.96234500644e-03 1.16029685725e-02 1.31234388541e-02 1.43188164440e-02 - 1.50424663757e-02 1.52762540169e-02 1.50424663757e-02 1.43188164440e-02 1.31234388541e-02 1.16029685725e-02 - 9.96234500644e-03 8.36360112567e-03 6.92803651720e-03 5.76667312114e-03 4.94632325183e-03 4.45367296569e-03 - 4.21584246473e-03 4.14918646508e-03 4.21584246472e-03 4.45367296569e-03 4.94632325183e-03 5.76667312114e-03 - 8.15758815908e-03 1.00210602336e-02 1.20439356208e-02 1.40901390285e-02 1.59287126341e-02 1.72812015630e-02 - 1.79741436761e-02 1.79741436761e-02 1.72812015630e-02 1.59287126341e-02 1.40901390285e-02 1.20439356208e-02 - 1.00210602336e-02 8.15758815907e-03 6.56138198057e-03 5.32068131556e-03 4.45367296569e-03 3.92281290681e-03 - 3.67768921534e-03 3.67768921534e-03 3.92281290681e-03 4.45367296569e-03 5.32068131556e-03 6.56138198057e-03 - 1.02248872526e-02 1.26511415702e-02 1.52718999852e-02 1.78657504093e-02 2.00653973119e-02 2.15038028103e-02 - 2.19947599998e-02 2.15038028103e-02 2.00653973119e-02 1.78657504093e-02 1.52718999852e-02 1.26511415702e-02 - 1.02248872526e-02 8.11230157084e-03 6.39967919814e-03 5.11303460195e-03 4.21584246472e-03 3.67768921534e-03 - 3.49726793106e-03 3.67768921534e-03 4.21584246472e-03 5.11303460195e-03 6.39967919814e-03 8.11230157084e-03 - 1.34421324248e-02 1.66950035376e-02 2.00583037371e-02 2.31231583381e-02 2.54054430258e-02 2.65858530209e-02 - 2.65858530209e-02 2.54054430258e-02 2.31231583381e-02 2.00583037371e-02 1.66950035376e-02 1.34421324248e-02 - 1.05557815436e-02 8.18383164206e-03 6.36714430779e-03 5.04614391795e-03 4.14918646508e-03 3.67768921534e-03 - 3.67768921534e-03 4.14918646508e-03 5.04614391795e-03 6.36714430779e-03 8.18383164206e-03 1.05557815436e-02 - 1.81617046076e-02 2.22713307355e-02 2.60492747623e-02 2.89590113767e-02 3.06728014251e-02 3.12134113093e-02 - 3.06728014251e-02 2.89590113767e-02 2.60492747623e-02 2.22713307355e-02 1.81617046076e-02 1.42308801751e-02 - 1.08699825973e-02 8.26409670065e-03 6.36996915701e-03 5.04614391795e-03 4.21584246473e-03 3.92281290681e-03 - 4.21584246473e-03 5.04614391795e-03 6.36996915701e-03 8.26409670065e-03 1.08699825973e-02 1.42308801751e-02 - 2.40967233573e-02 2.84217494631e-02 3.16057035862e-02 3.33647463124e-02 3.39942859271e-02 3.39942859271e-02 - 3.33647463124e-02 3.16057035862e-02 2.84217494631e-02 2.40967233573e-02 1.92840317465e-02 1.47279181688e-02 - 1.09990704821e-02 8.26409670065e-03 6.36714430779e-03 5.11303460195e-03 4.45367296569e-03 4.45367296569e-03 - 5.11303460195e-03 6.36714430780e-03 8.26409670065e-03 1.09990704821e-02 1.47279181688e-02 1.92840317465e-02 - 2.99301385615e-02 3.31963581644e-02 3.45751625707e-02 3.46096179590e-02 3.44216532954e-02 3.46096179590e-02 - 3.45751625707e-02 3.31963581644e-02 2.99301385615e-02 2.51249889113e-02 1.97044449599e-02 1.47279181688e-02 - 1.08699825973e-02 8.18383164206e-03 6.39967919814e-03 5.32068131556e-03 4.94632325183e-03 5.32068131556e-03 - 6.39967919814e-03 8.18383164206e-03 1.08699825973e-02 1.47279181688e-02 1.97044449599e-02 2.51249889113e-02 - 3.38925854809e-02 3.48628450776e-02 3.39196724265e-02 3.26920605347e-02 3.26920605347e-02 3.39196724265e-02 - 3.48628450776e-02 3.38925854809e-02 3.04404777485e-02 2.51249889113e-02 1.92840317465e-02 1.42308801751e-02 - 1.05557815436e-02 8.11230157084e-03 6.56138198057e-03 5.76667312114e-03 5.76667312114e-03 6.56138198057e-03 - 8.11230157085e-03 1.05557815436e-02 1.42308801751e-02 1.92840317465e-02 2.51249889113e-02 3.04404777485e-02 - 4.15726567626e-02 4.23899857520e-02 4.26148361403e-02 4.26148361403e-02 4.23899857520e-02 4.15726567626e-02 - 3.97328533270e-02 3.62673468746e-02 3.07822057975e-02 2.40904203272e-02 1.79266526907e-02 1.34421324248e-02 - 1.06051613742e-02 8.89920278516e-03 8.04455907974e-03 8.04455907974e-03 8.89920278516e-03 1.06051613742e-02 - 1.34421324248e-02 1.79266526907e-02 2.40904203272e-02 3.07822057975e-02 3.62673468746e-02 3.97328533271e-02 - 4.23899857520e-02 4.30330806506e-02 4.31931066266e-02 4.30330806506e-02 4.23899857519e-02 4.11388919901e-02 - 3.89798518705e-02 3.49769025117e-02 2.88778389824e-02 2.21709602700e-02 1.66950035376e-02 1.30618774824e-02 - 1.08500532301e-02 9.57619631350e-03 9.13724506496e-03 9.57619631350e-03 1.08500532301e-02 1.30618774824e-02 - 1.66950035376e-02 2.21709602700e-02 2.88778389824e-02 3.49769025118e-02 3.89798518706e-02 4.11388919901e-02 - 4.26148361403e-02 4.31931066266e-02 4.31931066266e-02 4.26148361403e-02 4.15214050146e-02 4.00842207789e-02 - 3.75326171916e-02 3.27029610793e-02 2.61902387743e-02 2.00583037371e-02 1.56489970468e-02 1.28937939562e-02 - 1.12137577955e-02 1.03422447642e-02 1.03422447642e-02 1.12137577955e-02 1.28937939562e-02 1.56489970468e-02 - 2.00583037371e-02 2.61902387743e-02 3.27029610793e-02 3.75326171916e-02 4.00842207789e-02 4.15214050146e-02 - 4.26148361403e-02 4.30330806505e-02 4.26148361403e-02 4.15474983448e-02 4.03062291682e-02 3.86294987685e-02 - 3.51262182184e-02 2.93979324046e-02 2.31231583381e-02 1.81430425204e-02 1.48932100517e-02 1.28580577518e-02 - 1.16029685725e-02 1.11481007476e-02 1.16029685725e-02 1.28580577518e-02 1.48932100517e-02 1.81430425204e-02 - 2.31231583381e-02 2.93979324046e-02 3.51262182184e-02 3.86294987685e-02 4.03062291682e-02 4.15474983449e-02 - 4.23899857519e-02 4.23899857519e-02 4.15214050146e-02 4.03062291682e-02 3.88811262511e-02 3.61935553818e-02 - 3.13656133727e-02 2.54054430258e-02 2.02040886880e-02 1.66389339973e-02 1.43894839458e-02 1.28937939562e-02 - 1.20439356208e-02 1.20439356208e-02 1.28937939562e-02 1.43894839458e-02 1.66389339973e-02 2.02040886880e-02 - 2.54054430258e-02 3.13656133727e-02 3.61935553818e-02 3.88811262511e-02 4.03062291682e-02 4.15214050146e-02 - 4.15726567626e-02 4.11388919901e-02 4.00842207789e-02 3.86294987685e-02 3.61935553818e-02 3.20070729422e-02 - 2.65858530209e-02 2.15195877577e-02 1.78888288560e-02 1.56224022211e-02 1.41149739580e-02 1.30618774824e-02 - 1.26511415702e-02 1.30618774824e-02 1.41149739580e-02 1.56224022211e-02 1.78888288560e-02 2.15195877577e-02 - 2.65858530209e-02 3.20070729422e-02 3.61935553818e-02 3.86294987685e-02 4.00842207789e-02 4.11388919901e-02 - 3.97328533270e-02 3.89798518705e-02 3.75326171916e-02 3.51262182184e-02 3.13656133727e-02 2.65858530209e-02 - 2.19611077293e-02 1.85132763207e-02 1.63906429721e-02 1.50739196267e-02 1.40806383265e-02 1.34421324248e-02 - 1.34421324248e-02 1.40806383265e-02 1.50739196267e-02 1.63906429721e-02 1.85132763207e-02 2.19611077293e-02 - 2.65858530209e-02 3.13656133727e-02 3.51262182184e-02 3.75326171916e-02 3.89798518705e-02 3.97328533270e-02 - 3.62673468745e-02 3.49769025117e-02 3.27029610793e-02 2.93979324045e-02 2.54054430258e-02 2.15195877577e-02 - 1.85132763207e-02 1.66439398964e-02 1.55937378378e-02 1.48492046219e-02 1.42308801751e-02 1.39667079820e-02 - 1.42308801751e-02 1.48492046219e-02 1.55937378378e-02 1.66439398964e-02 1.85132763207e-02 2.15195877577e-02 - 2.54054430258e-02 2.93979324046e-02 3.27029610793e-02 3.49769025117e-02 3.62673468745e-02 3.66854482599e-02 - 3.07822057975e-02 2.88778389824e-02 2.61902387743e-02 2.31231583381e-02 2.02040886880e-02 1.78888288560e-02 - 1.63906429721e-02 1.55937378378e-02 1.51354763629e-02 1.47279181688e-02 1.44210111226e-02 1.44210111226e-02 - 1.47279181688e-02 1.51354763629e-02 1.55937378378e-02 1.63906429721e-02 1.78888288560e-02 2.02040886880e-02 - 2.31231583381e-02 2.61902387743e-02 2.88778389824e-02 3.07822057975e-02 3.17361436402e-02 3.17361436402e-02 - 2.40904203272e-02 2.21709602700e-02 2.00583037371e-02 1.81430425204e-02 1.66389339973e-02 1.56224022211e-02 - 1.50739196267e-02 1.48492046219e-02 1.47279181688e-02 1.45986463266e-02 1.45320680305e-02 1.45986463266e-02 - 1.47279181688e-02 1.48492046219e-02 1.50739196267e-02 1.56224022211e-02 1.66389339973e-02 1.81430425204e-02 - 2.00583037371e-02 2.21709602700e-02 2.40904203272e-02 2.53973709283e-02 2.58521940319e-02 2.53973709283e-02 - 1.79266526907e-02 1.66950035376e-02 1.56489970468e-02 1.48932100517e-02 1.43894839458e-02 1.41149739580e-02 - 1.40806383265e-02 1.42308801751e-02 1.44210111226e-02 1.45320680305e-02 1.45320680305e-02 1.44210111226e-02 - 1.42308801751e-02 1.40806383265e-02 1.41149739580e-02 1.43894839458e-02 1.48932100517e-02 1.56489970468e-02 - 1.66950035376e-02 1.79266526907e-02 1.90345757835e-02 1.96802339929e-02 1.96802339929e-02 1.90345757835e-02 - 1.34421324248e-02 1.30618774824e-02 1.28937939562e-02 1.28580577518e-02 1.28937939562e-02 1.30618774824e-02 - 1.34421324248e-02 1.39667079820e-02 1.44210111226e-02 1.45986463266e-02 1.44210111226e-02 1.39667079820e-02 - 1.34421324248e-02 1.30618774824e-02 1.28937939562e-02 1.28580577518e-02 1.28937939562e-02 1.30618774824e-02 - 1.34421324248e-02 1.39667079820e-02 1.44210111226e-02 1.45986463266e-02 1.44210111226e-02 1.39667079820e-02 - 1.06051613742e-02 1.08500532301e-02 1.12137577955e-02 1.16029685725e-02 1.20439356208e-02 1.26511415702e-02 - 1.34421324248e-02 1.42308801751e-02 1.47279181688e-02 1.47279181688e-02 1.42308801751e-02 1.34421324248e-02 - 1.26511415702e-02 1.20439356208e-02 1.16029685725e-02 1.12137577955e-02 1.08500532301e-02 1.06051613742e-02 - 1.05557815436e-02 1.06518186545e-02 1.07546834175e-02 1.07546834176e-02 1.06518186545e-02 1.05557815436e-02 - 8.89920278515e-03 9.57619631350e-03 1.03422447642e-02 1.11481007476e-02 1.20439356208e-02 1.30618774824e-02 - 1.40806383265e-02 1.48492046219e-02 1.51354763629e-02 1.48492046219e-02 1.40806383265e-02 1.30618774824e-02 - 1.20439356208e-02 1.11481007476e-02 1.03422447642e-02 9.57619631350e-03 8.89920278515e-03 8.41997198038e-03 - 8.18383164206e-03 8.12161313174e-03 8.11874591476e-03 8.12161313174e-03 8.18383164206e-03 8.41997198038e-03 - 8.04455907974e-03 9.13724506496e-03 1.03422447642e-02 1.16029685725e-02 1.28937939562e-02 1.41149739580e-02 - 1.50739196267e-02 1.55937378378e-02 1.55937378378e-02 1.50739196267e-02 1.41149739580e-02 1.28937939562e-02 - 1.16029685725e-02 1.03422447642e-02 9.13724506496e-03 8.04455907974e-03 7.17862759619e-03 6.62684043801e-03 - 6.36714430779e-03 6.28719817634e-03 6.28719817634e-03 6.36714430779e-03 6.62684043801e-03 7.17862759619e-03 - 8.04455907974e-03 9.57619631350e-03 1.12137577955e-02 1.28580577518e-02 1.43894839458e-02 1.56224022211e-02 - 1.63906429721e-02 1.66439398964e-02 1.63906429721e-02 1.56224022211e-02 1.43894839458e-02 1.28580577518e-02 - 1.12137577955e-02 9.57619631350e-03 8.04455907974e-03 6.75449318420e-03 5.82746138702e-03 5.28636096575e-03 - 5.04614391795e-03 4.98513742725e-03 5.04614391795e-03 5.28636096575e-03 5.82746138702e-03 6.75449318420e-03 - 8.89920278516e-03 1.08500532301e-02 1.28937939562e-02 1.48932100517e-02 1.66389339974e-02 1.78888288560e-02 - 1.85132763207e-02 1.85132763207e-02 1.78888288560e-02 1.66389339974e-02 1.48932100517e-02 1.28937939562e-02 - 1.08500532301e-02 8.89920278516e-03 7.17862759619e-03 5.82746138702e-03 4.90588959931e-03 4.37599558137e-03 - 4.14918646508e-03 4.14918646508e-03 4.37599558137e-03 4.90588959931e-03 5.82746138702e-03 7.17862759619e-03 - 1.06051613742e-02 1.30618774824e-02 1.56489970468e-02 1.81430425205e-02 2.02040886880e-02 2.15195877577e-02 - 2.19611077293e-02 2.15195877577e-02 2.02040886880e-02 1.81430425205e-02 1.56489970468e-02 1.30618774824e-02 - 1.06051613742e-02 8.41997198039e-03 6.62684043801e-03 5.28636096575e-03 4.37599558137e-03 3.84964089400e-03 - 3.67768921534e-03 3.84964089400e-03 4.37599558137e-03 5.28636096575e-03 6.62684043802e-03 8.41997198039e-03 - 1.34421324248e-02 1.66950035376e-02 2.00583037371e-02 2.31231583381e-02 2.54054430258e-02 2.65858530209e-02 - 2.65858530209e-02 2.54054430258e-02 2.31231583381e-02 2.00583037371e-02 1.66950035376e-02 1.34421324248e-02 - 1.05557815436e-02 8.18383164206e-03 6.36714430779e-03 5.04614391795e-03 4.14918646508e-03 3.67768921534e-03 - 3.67768921534e-03 4.14918646508e-03 5.04614391795e-03 6.36714430779e-03 8.18383164206e-03 1.05557815436e-02 - 1.79266526907e-02 2.21709602700e-02 2.61902387743e-02 2.93979324046e-02 3.13656133728e-02 3.20070729423e-02 - 3.13656133728e-02 2.93979324046e-02 2.61902387743e-02 2.21709602700e-02 1.79266526907e-02 1.39667079820e-02 - 1.06518186545e-02 8.12161313174e-03 6.28719817635e-03 4.98513742725e-03 4.14918646508e-03 3.84964089400e-03 - 4.14918646508e-03 4.98513742725e-03 6.28719817635e-03 8.12161313175e-03 1.06518186545e-02 1.39667079820e-02 - 2.40904203272e-02 2.88778389824e-02 3.27029610793e-02 3.51262182185e-02 3.61935553818e-02 3.61935553818e-02 - 3.51262182185e-02 3.27029610793e-02 2.88778389824e-02 2.40904203272e-02 1.90345757835e-02 1.44210111226e-02 - 1.07546834176e-02 8.11874591477e-03 6.28719817635e-03 5.04614391795e-03 4.37599558137e-03 4.37599558137e-03 - 5.04614391795e-03 6.28719817635e-03 8.11874591477e-03 1.07546834176e-02 1.44210111226e-02 1.90345757835e-02 - 3.07822057975e-02 3.49769025118e-02 3.75326171916e-02 3.86294987685e-02 3.88811262512e-02 3.86294987685e-02 - 3.75326171916e-02 3.49769025118e-02 3.07822057975e-02 2.53973709283e-02 1.96802339930e-02 1.45986463266e-02 - 1.07546834176e-02 8.12161313175e-03 6.36714430780e-03 5.28636096575e-03 4.90588959931e-03 5.28636096575e-03 - 6.36714430780e-03 8.12161313175e-03 1.07546834176e-02 1.45986463266e-02 1.96802339930e-02 2.53973709283e-02 - 3.62673468746e-02 3.89798518706e-02 4.00842207790e-02 4.03062291683e-02 4.03062291683e-02 4.00842207790e-02 - 3.89798518706e-02 3.62673468746e-02 3.17361436403e-02 2.58521940319e-02 1.96802339930e-02 1.44210111226e-02 - 1.06518186545e-02 8.18383164206e-03 6.62684043801e-03 5.82746138702e-03 5.82746138702e-03 6.62684043802e-03 - 8.18383164206e-03 1.06518186545e-02 1.44210111226e-02 1.96802339930e-02 2.58521940319e-02 3.17361436403e-02 - 3.97328533271e-02 4.11388919902e-02 4.15214050146e-02 4.15474983449e-02 4.15214050146e-02 4.11388919902e-02 - 3.97328533271e-02 3.66854482599e-02 3.17361436402e-02 2.53973709283e-02 1.90345757835e-02 1.39667079820e-02 - 1.05557815436e-02 8.41997198039e-03 7.17862759619e-03 6.75449318420e-03 7.17862759619e-03 8.41997198039e-03 - 1.05557815436e-02 1.39667079820e-02 1.90345757835e-02 2.53973709283e-02 3.17361436403e-02 3.66854482599e-02 - 6.13624406409e-02 6.87950359263e-02 7.14595557376e-02 6.87950359263e-02 6.13624406409e-02 5.18158087397e-02 - 4.36605690195e-02 3.73540502296e-02 3.09609358381e-02 2.40904203272e-02 1.81617046076e-02 1.40806383265e-02 - 1.16095381953e-02 1.02401100733e-02 9.78219490488e-03 1.02401100733e-02 1.16095381953e-02 1.40806383265e-02 - 1.81617046076e-02 2.40904203272e-02 3.09609358381e-02 3.73540502297e-02 4.36605690195e-02 5.18158087398e-02 - 6.87950359263e-02 7.44578962493e-02 7.44578962493e-02 6.87950359263e-02 5.87809730550e-02 4.86717503238e-02 - 4.14583134664e-02 3.55406204185e-02 2.88778389824e-02 2.22713307355e-02 1.72611853896e-02 1.41149739580e-02 - 1.22934163580e-02 1.14031750108e-02 1.14031750108e-02 1.22934163580e-02 1.41149739580e-02 1.72611853896e-02 - 2.22713307355e-02 2.88778389824e-02 3.55406204185e-02 4.14583134664e-02 4.86717503238e-02 5.87809730550e-02 - 7.14595557376e-02 7.44578962493e-02 7.14595557376e-02 6.30064198496e-02 5.24371687843e-02 4.42637285519e-02 - 3.86293456568e-02 3.27029610793e-02 2.60492747623e-02 2.03920879638e-02 1.66276099946e-02 1.43894839458e-02 - 1.31234388541e-02 1.26855285494e-02 1.31234388541e-02 1.43894839458e-02 1.66276099946e-02 2.03920879638e-02 - 2.60492747623e-02 3.27029610793e-02 3.86293456568e-02 4.42637285519e-02 5.24371687843e-02 6.30064198496e-02 - 6.87950359263e-02 6.87950359263e-02 6.30064198496e-02 5.38553081705e-02 4.56987320892e-02 4.02266025417e-02 - 3.51262182184e-02 2.89590113766e-02 2.30939042849e-02 1.89263764236e-02 1.64062528191e-02 1.48932100517e-02 - 1.40901390285e-02 1.40901390285e-02 1.48932100517e-02 1.64062528191e-02 1.89263764236e-02 2.30939042849e-02 - 2.89590113766e-02 3.51262182185e-02 4.02266025417e-02 4.56987320892e-02 5.38553081705e-02 6.30064198496e-02 - 6.13624406409e-02 5.87809730549e-02 5.24371687843e-02 4.56987320892e-02 4.06883718959e-02 3.61935553818e-02 - 3.06728014251e-02 2.49902463304e-02 2.07196781889e-02 1.81502966987e-02 1.66276099946e-02 1.56489970468e-02 - 1.52718999852e-02 1.56489970468e-02 1.66276099946e-02 1.81502966987e-02 2.07196781889e-02 2.49902463304e-02 - 3.06728014251e-02 3.61935553818e-02 4.06883718959e-02 4.56987320892e-02 5.24371687843e-02 5.87809730550e-02 - 5.18158087397e-02 4.86717503238e-02 4.42637285519e-02 4.02266025417e-02 3.61935553818e-02 3.12134113093e-02 - 2.59181147281e-02 2.17948830411e-02 1.93871115228e-02 1.81179302207e-02 1.72611853896e-02 1.66950035376e-02 - 1.66950035376e-02 1.72611853896e-02 1.81179302207e-02 1.93871115228e-02 2.17948830411e-02 2.59181147281e-02 - 3.12134113093e-02 3.61935553818e-02 4.02266025417e-02 4.42637285519e-02 4.86717503238e-02 5.18158087397e-02 - 4.36605690195e-02 4.14583134664e-02 3.86293456568e-02 3.51262182184e-02 3.06728014251e-02 2.59181147281e-02 - 2.21386056500e-02 1.99975947255e-02 1.91106081253e-02 1.86355176327e-02 1.81617046076e-02 1.79266526907e-02 - 1.81617046076e-02 1.86355176327e-02 1.91106081253e-02 1.99975947255e-02 2.21386056500e-02 2.59181147281e-02 - 3.06728014251e-02 3.51262182184e-02 3.86293456568e-02 4.14583134664e-02 4.36605690195e-02 4.45490987357e-02 - 3.73540502296e-02 3.55406204184e-02 3.27029610793e-02 2.89590113766e-02 2.49902463304e-02 2.17948830411e-02 - 1.99975947255e-02 1.94536795471e-02 1.94290489291e-02 1.92840317465e-02 1.90345757835e-02 1.90345757835e-02 - 1.92840317465e-02 1.94290489291e-02 1.94536795471e-02 1.99975947255e-02 2.17948830411e-02 2.49902463304e-02 - 2.89590113766e-02 3.27029610793e-02 3.55406204185e-02 3.73540502296e-02 3.82423088607e-02 3.82423088607e-02 - 3.09609358381e-02 2.88778389824e-02 2.60492747622e-02 2.30939042849e-02 2.07196781889e-02 1.93871115228e-02 - 1.91106081253e-02 1.94290489291e-02 1.97044449599e-02 1.96802339930e-02 1.96031535282e-02 1.96802339930e-02 - 1.97044449599e-02 1.94290489291e-02 1.91106081253e-02 1.93871115228e-02 2.07196781889e-02 2.30939042849e-02 - 2.60492747623e-02 2.88778389824e-02 3.09609358381e-02 3.20848019958e-02 3.24128421387e-02 3.20848019958e-02 - 2.40904203272e-02 2.22713307355e-02 2.03920879637e-02 1.89263764236e-02 1.81502966987e-02 1.81179302207e-02 - 1.86355176327e-02 1.92840317465e-02 1.96802339930e-02 1.97871610956e-02 1.97871610956e-02 1.96802339930e-02 - 1.92840317465e-02 1.86355176327e-02 1.81179302207e-02 1.81502966987e-02 1.89263764236e-02 2.03920879638e-02 - 2.22713307355e-02 2.40904203272e-02 2.53797374387e-02 2.59777844449e-02 2.59777844449e-02 2.53797374387e-02 - 1.81617046076e-02 1.72611853896e-02 1.66276099946e-02 1.64062528191e-02 1.66276099946e-02 1.72611853896e-02 - 1.81617046076e-02 1.90345757835e-02 1.96031535282e-02 1.97871610956e-02 1.96031535282e-02 1.90345757835e-02 - 1.81617046076e-02 1.72611853896e-02 1.66276099946e-02 1.64062528191e-02 1.66276099946e-02 1.72611853896e-02 - 1.81617046076e-02 1.90345757835e-02 1.96031535282e-02 1.97871610956e-02 1.96031535282e-02 1.90345757835e-02 - 1.40806383265e-02 1.41149739580e-02 1.43894839458e-02 1.48932100517e-02 1.56489970468e-02 1.66950035376e-02 - 1.79266526907e-02 1.90345757835e-02 1.96802339930e-02 1.96802339930e-02 1.90345757835e-02 1.79266526907e-02 - 1.66950035376e-02 1.56489970468e-02 1.48932100517e-02 1.43894839458e-02 1.41149739580e-02 1.40806383265e-02 - 1.42308801751e-02 1.44210111226e-02 1.45320680305e-02 1.45320680305e-02 1.44210111226e-02 1.42308801751e-02 - 1.16095381953e-02 1.22934163580e-02 1.31234388541e-02 1.40901390285e-02 1.52718999852e-02 1.66950035376e-02 - 1.81617046076e-02 1.92840317465e-02 1.97044449599e-02 1.92840317465e-02 1.81617046076e-02 1.66950035376e-02 - 1.52718999852e-02 1.40901390285e-02 1.31234388541e-02 1.22934163580e-02 1.16095381953e-02 1.11331987338e-02 - 1.08699825973e-02 1.07546834176e-02 1.07233722050e-02 1.07546834176e-02 1.08699825973e-02 1.11331987338e-02 - 1.02401100733e-02 1.14031750108e-02 1.26855285494e-02 1.40901390285e-02 1.56489970468e-02 1.72611853896e-02 - 1.86355176327e-02 1.94290489291e-02 1.94290489291e-02 1.86355176327e-02 1.72611853896e-02 1.56489970468e-02 - 1.40901390285e-02 1.26855285494e-02 1.14031750108e-02 1.02401100733e-02 9.28357359922e-03 8.62540500905e-03 - 8.26409670065e-03 8.11874591476e-03 8.11874591476e-03 8.26409670065e-03 8.62540500905e-03 9.28357359922e-03 - 9.78219490488e-03 1.14031750108e-02 1.31234388541e-02 1.48932100517e-02 1.66276099946e-02 1.81179302207e-02 - 1.91106081254e-02 1.94536795471e-02 1.91106081254e-02 1.81179302207e-02 1.66276099946e-02 1.48932100517e-02 - 1.31234388541e-02 1.14031750108e-02 9.78219490488e-03 8.37400390520e-03 7.31933010296e-03 6.67439308888e-03 - 6.36996915701e-03 6.28719817634e-03 6.36996915701e-03 6.67439308888e-03 7.31933010296e-03 8.37400390520e-03 - 1.02401100733e-02 1.22934163580e-02 1.43894839458e-02 1.64062528191e-02 1.81502966987e-02 1.93871115228e-02 - 1.99975947255e-02 1.99975947255e-02 1.93871115228e-02 1.81502966987e-02 1.64062528191e-02 1.43894839458e-02 - 1.22934163580e-02 1.02401100733e-02 8.37400390520e-03 6.87426464911e-03 5.85076317272e-03 5.27978060753e-03 - 5.04614391795e-03 5.04614391795e-03 5.27978060753e-03 5.85076317272e-03 6.87426464911e-03 8.37400390520e-03 - 1.16095381953e-02 1.41149739580e-02 1.66276099946e-02 1.89263764236e-02 2.07196781889e-02 2.17948830411e-02 - 2.21386056500e-02 2.17948830411e-02 2.07196781889e-02 1.89263764236e-02 1.66276099946e-02 1.41149739580e-02 - 1.16095381953e-02 9.28357359923e-03 7.31933010296e-03 5.85076317272e-03 4.89318523683e-03 4.37599558137e-03 - 4.21584246472e-03 4.37599558137e-03 4.89318523683e-03 5.85076317272e-03 7.31933010297e-03 9.28357359923e-03 - 1.40806383265e-02 1.72611853896e-02 2.03920879638e-02 2.30939042850e-02 2.49902463304e-02 2.59181147281e-02 - 2.59181147281e-02 2.49902463304e-02 2.30939042850e-02 2.03920879638e-02 1.72611853896e-02 1.40806383265e-02 - 1.11331987338e-02 8.62540500905e-03 6.67439308888e-03 5.27978060753e-03 4.37599558137e-03 3.92281290681e-03 - 3.92281290681e-03 4.37599558137e-03 5.27978060753e-03 6.67439308889e-03 8.62540500906e-03 1.11331987338e-02 - 1.81617046076e-02 2.22713307355e-02 2.60492747623e-02 2.89590113767e-02 3.06728014251e-02 3.12134113093e-02 - 3.06728014251e-02 2.89590113767e-02 2.60492747623e-02 2.22713307355e-02 1.81617046076e-02 1.42308801751e-02 - 1.08699825973e-02 8.26409670065e-03 6.36996915701e-03 5.04614391795e-03 4.21584246473e-03 3.92281290681e-03 - 4.21584246473e-03 5.04614391795e-03 6.36996915701e-03 8.26409670066e-03 1.08699825973e-02 1.42308801751e-02 - 2.40904203272e-02 2.88778389824e-02 3.27029610793e-02 3.51262182185e-02 3.61935553818e-02 3.61935553818e-02 - 3.51262182185e-02 3.27029610793e-02 2.88778389824e-02 2.40904203272e-02 1.90345757835e-02 1.44210111226e-02 - 1.07546834176e-02 8.11874591477e-03 6.28719817635e-03 5.04614391795e-03 4.37599558137e-03 4.37599558137e-03 - 5.04614391795e-03 6.28719817635e-03 8.11874591477e-03 1.07546834176e-02 1.44210111226e-02 1.90345757835e-02 - 3.09609358382e-02 3.55406204185e-02 3.86293456568e-02 4.02266025417e-02 4.06883718959e-02 4.02266025417e-02 - 3.86293456568e-02 3.55406204185e-02 3.09609358381e-02 2.53797374387e-02 1.96031535283e-02 1.45320680305e-02 - 1.07233722050e-02 8.11874591477e-03 6.36996915701e-03 5.27978060753e-03 4.89318523684e-03 5.27978060753e-03 - 6.36996915701e-03 8.11874591477e-03 1.07233722050e-02 1.45320680305e-02 1.96031535283e-02 2.53797374387e-02 - 3.73540502297e-02 4.14583134665e-02 4.42637285519e-02 4.56987320892e-02 4.56987320892e-02 4.42637285519e-02 - 4.14583134665e-02 3.73540502297e-02 3.20848019959e-02 2.59777844449e-02 1.97871610956e-02 1.45320680305e-02 - 1.07546834176e-02 8.26409670065e-03 6.67439308889e-03 5.85076317272e-03 5.85076317272e-03 6.67439308889e-03 - 8.26409670066e-03 1.07546834176e-02 1.45320680305e-02 1.97871610956e-02 2.59777844449e-02 3.20848019959e-02 - 4.36605690195e-02 4.86717503239e-02 5.24371687844e-02 5.38553081705e-02 5.24371687844e-02 4.86717503239e-02 - 4.36605690195e-02 3.82423088608e-02 3.24128421387e-02 2.59777844449e-02 1.96031535282e-02 1.44210111226e-02 - 1.08699825973e-02 8.62540500906e-03 7.31933010296e-03 6.87426464911e-03 7.31933010296e-03 8.62540500906e-03 - 1.08699825973e-02 1.44210111226e-02 1.96031535282e-02 2.59777844449e-02 3.24128421387e-02 3.82423088608e-02 - 5.18158087398e-02 5.87809730550e-02 6.30064198497e-02 6.30064198497e-02 5.87809730550e-02 5.18158087398e-02 - 4.45490987358e-02 3.82423088608e-02 3.20848019959e-02 2.53797374387e-02 1.90345757835e-02 1.42308801751e-02 - 1.11331987338e-02 9.28357359923e-03 8.37400390520e-03 8.37400390520e-03 9.28357359923e-03 1.11331987338e-02 - 1.42308801751e-02 1.90345757835e-02 2.53797374387e-02 3.20848019959e-02 3.82423088608e-02 4.45490987358e-02 - 9.46618817554e-02 1.02255317231e-01 1.02255317231e-01 9.46618817553e-02 7.81193802830e-02 5.87902882083e-02 - 4.51578187598e-02 3.73540502296e-02 3.07822057975e-02 2.40967233573e-02 1.86355176327e-02 1.50739196267e-02 - 1.30485807277e-02 1.21045128275e-02 1.21045128275e-02 1.30485807277e-02 1.50739196267e-02 1.86355176327e-02 - 2.40967233573e-02 3.07822057975e-02 3.73540502297e-02 4.51578187598e-02 5.87902882083e-02 7.81193802830e-02 - 1.02255317231e-01 1.05382836884e-01 1.02255317231e-01 9.00454509227e-02 6.98255714909e-02 5.17382028008e-02 - 4.14583134664e-02 3.49769025117e-02 2.84217494631e-02 2.23752455712e-02 1.81179302207e-02 1.56224022211e-02 - 1.43188164440e-02 1.38961516945e-02 1.43188164440e-02 1.56224022211e-02 1.81179302207e-02 2.23752455712e-02 - 2.84217494631e-02 3.49769025118e-02 4.14583134664e-02 5.17382028009e-02 6.98255714909e-02 9.00454509227e-02 - 1.02255317231e-01 1.02255317231e-01 9.40538638176e-02 7.65071402184e-02 5.69437593911e-02 4.42637285519e-02 - 3.75326171916e-02 3.16057035862e-02 2.55726183949e-02 2.09446754967e-02 1.81502966987e-02 1.66389339974e-02 - 1.59287126341e-02 1.59287126341e-02 1.66389339973e-02 1.81502966987e-02 2.09446754967e-02 2.55726183949e-02 - 3.16057035862e-02 3.75326171916e-02 4.42637285519e-02 5.69437593911e-02 7.65071402185e-02 9.40538638177e-02 - 9.46618817553e-02 9.00454509226e-02 7.65071402184e-02 5.89461275928e-02 4.56987320892e-02 3.86294987685e-02 - 3.33647463123e-02 2.78013937268e-02 2.32030440049e-02 2.03983415996e-02 1.89263764236e-02 1.81430425204e-02 - 1.78657504093e-02 1.81430425204e-02 1.89263764236e-02 2.03983415996e-02 2.32030440049e-02 2.78013937268e-02 - 3.33647463124e-02 3.86294987685e-02 4.56987320892e-02 5.89461275929e-02 7.65071402185e-02 9.00454509227e-02 - 7.81193802830e-02 6.98255714909e-02 5.69437593911e-02 4.56987320892e-02 3.88811262511e-02 3.39942859271e-02 - 2.89473471924e-02 2.46286629032e-02 2.20777720561e-02 2.09446754967e-02 2.03920879638e-02 2.00583037371e-02 - 2.00583037371e-02 2.03920879638e-02 2.09446754967e-02 2.20777720561e-02 2.46286629032e-02 2.89473471924e-02 - 3.39942859271e-02 3.88811262511e-02 4.56987320892e-02 5.69437593911e-02 6.98255714909e-02 7.81193802830e-02 - 5.87902882083e-02 5.17382028008e-02 4.42637285519e-02 3.86294987685e-02 3.39942859271e-02 2.92643382604e-02 - 2.52445347088e-02 2.30253665657e-02 2.24043982374e-02 2.23752455712e-02 2.22713307355e-02 2.21709602700e-02 - 2.22713307355e-02 2.23752455712e-02 2.24043982374e-02 2.30253665657e-02 2.52445347088e-02 2.92643382604e-02 - 3.39942859271e-02 3.86294987685e-02 4.42637285519e-02 5.17382028008e-02 5.87902882083e-02 6.17008685348e-02 - 4.51578187598e-02 4.14583134664e-02 3.75326171916e-02 3.33647463123e-02 2.89473471924e-02 2.52445347088e-02 - 2.33118163733e-02 2.31387869200e-02 2.37301976795e-02 2.40967233573e-02 2.40904203272e-02 2.40904203272e-02 - 2.40967233573e-02 2.37301976795e-02 2.31387869200e-02 2.33118163733e-02 2.52445347088e-02 2.89473471924e-02 - 3.33647463124e-02 3.75326171916e-02 4.14583134664e-02 4.51578187598e-02 4.76134439312e-02 4.76134439312e-02 - 3.73540502296e-02 3.49769025117e-02 3.16057035862e-02 2.78013937268e-02 2.46286629032e-02 2.30253665656e-02 - 2.31387869200e-02 2.42075414898e-02 2.51249889113e-02 2.53973709283e-02 2.53797374387e-02 2.53973709283e-02 - 2.51249889113e-02 2.42075414898e-02 2.31387869200e-02 2.30253665656e-02 2.46286629032e-02 2.78013937268e-02 - 3.16057035862e-02 3.49769025117e-02 3.73540502296e-02 3.86937384314e-02 3.91205047681e-02 3.86937384314e-02 - 3.07822057975e-02 2.84217494631e-02 2.55726183949e-02 2.32030440049e-02 2.20777720561e-02 2.24043982374e-02 - 2.37301976795e-02 2.51249889113e-02 2.58521940319e-02 2.59777844449e-02 2.59777844449e-02 2.58521940319e-02 - 2.51249889113e-02 2.37301976795e-02 2.24043982374e-02 2.20777720561e-02 2.32030440049e-02 2.55726183949e-02 - 2.84217494631e-02 3.07822057975e-02 3.20848019958e-02 3.25042138914e-02 3.25042138914e-02 3.20848019958e-02 - 2.40967233573e-02 2.23752455712e-02 2.09446754967e-02 2.03983415996e-02 2.09446754967e-02 2.23752455712e-02 - 2.40967233573e-02 2.53973709283e-02 2.59777844449e-02 2.60947919991e-02 2.59777844449e-02 2.53973709283e-02 - 2.40967233573e-02 2.23752455712e-02 2.09446754967e-02 2.03983415996e-02 2.09446754967e-02 2.23752455712e-02 - 2.40967233573e-02 2.53973709283e-02 2.59777844449e-02 2.60947919991e-02 2.59777844449e-02 2.53973709283e-02 - 1.86355176327e-02 1.81179302207e-02 1.81502966987e-02 1.89263764236e-02 2.03920879638e-02 2.22713307355e-02 - 2.40904203272e-02 2.53797374387e-02 2.59777844449e-02 2.59777844449e-02 2.53797374387e-02 2.40904203272e-02 - 2.22713307355e-02 2.03920879638e-02 1.89263764236e-02 1.81502966987e-02 1.81179302207e-02 1.86355176327e-02 - 1.92840317465e-02 1.96802339930e-02 1.97871610956e-02 1.97871610956e-02 1.96802339929e-02 1.92840317465e-02 - 1.50739196267e-02 1.56224022211e-02 1.66389339973e-02 1.81430425204e-02 2.00583037371e-02 2.21709602700e-02 - 2.40904203272e-02 2.53973709283e-02 2.58521940319e-02 2.53973709283e-02 2.40904203272e-02 2.21709602700e-02 - 2.00583037371e-02 1.81430425204e-02 1.66389339973e-02 1.56224022211e-02 1.50739196267e-02 1.48492046219e-02 - 1.47279181688e-02 1.45986463266e-02 1.45320680305e-02 1.45986463266e-02 1.47279181688e-02 1.48492046219e-02 - 1.30485807277e-02 1.43188164440e-02 1.59287126341e-02 1.78657504093e-02 2.00583037371e-02 2.22713307355e-02 - 2.40967233573e-02 2.51249889113e-02 2.51249889113e-02 2.40967233573e-02 2.22713307355e-02 2.00583037371e-02 - 1.78657504093e-02 1.59287126341e-02 1.43188164440e-02 1.30485807277e-02 1.21090534529e-02 1.14481144732e-02 - 1.09990704821e-02 1.07546834176e-02 1.07546834176e-02 1.09990704821e-02 1.14481144732e-02 1.21090534529e-02 - 1.21045128275e-02 1.38961516944e-02 1.59287126341e-02 1.81430425204e-02 2.03920879638e-02 2.23752455712e-02 - 2.37301976795e-02 2.42075414899e-02 2.37301976795e-02 2.23752455712e-02 2.03920879638e-02 1.81430425204e-02 - 1.59287126341e-02 1.38961516944e-02 1.21045128275e-02 1.06109348738e-02 9.47290433110e-03 8.70256016586e-03 - 8.26409670065e-03 8.12161313174e-03 8.26409670065e-03 8.70256016586e-03 9.47290433110e-03 1.06109348738e-02 - 1.21045128275e-02 1.43188164440e-02 1.66389339973e-02 1.89263764236e-02 2.09446754967e-02 2.24043982374e-02 - 2.31387869200e-02 2.31387869200e-02 2.24043982374e-02 2.09446754967e-02 1.89263764236e-02 1.66389339973e-02 - 1.43188164440e-02 1.21045128275e-02 1.01198499891e-02 8.50665152156e-03 7.36052161958e-03 6.67439308888e-03 - 6.36714430779e-03 6.36714430779e-03 6.67439308888e-03 7.36052161959e-03 8.50665152157e-03 1.01198499891e-02 - 1.30485807277e-02 1.56224022211e-02 1.81502966987e-02 2.03983415996e-02 2.20777720561e-02 2.30253665657e-02 - 2.33118163733e-02 2.30253665657e-02 2.20777720561e-02 2.03983415996e-02 1.81502966987e-02 1.56224022211e-02 - 1.30485807277e-02 1.06109348738e-02 8.50665152157e-03 6.90308343843e-03 5.85076317272e-03 5.28636096575e-03 - 5.11303460195e-03 5.28636096575e-03 5.85076317272e-03 6.90308343843e-03 8.50665152157e-03 1.06109348738e-02 - 1.50739196267e-02 1.81179302207e-02 2.09446754967e-02 2.32030440050e-02 2.46286629032e-02 2.52445347088e-02 - 2.52445347088e-02 2.46286629032e-02 2.32030440049e-02 2.09446754967e-02 1.81179302207e-02 1.50739196267e-02 - 1.21090534529e-02 9.47290433111e-03 7.36052161959e-03 5.85076317272e-03 4.90588959931e-03 4.45367296569e-03 - 4.45367296569e-03 4.90588959931e-03 5.85076317272e-03 7.36052161959e-03 9.47290433111e-03 1.21090534530e-02 - 1.86355176327e-02 2.23752455712e-02 2.55726183949e-02 2.78013937268e-02 2.89473471924e-02 2.92643382604e-02 - 2.89473471924e-02 2.78013937268e-02 2.55726183949e-02 2.23752455712e-02 1.86355176327e-02 1.48492046219e-02 - 1.14481144732e-02 8.70256016587e-03 6.67439308889e-03 5.28636096575e-03 4.45367296569e-03 4.16945913194e-03 - 4.45367296569e-03 5.28636096575e-03 6.67439308889e-03 8.70256016587e-03 1.14481144732e-02 1.48492046219e-02 - 2.40967233573e-02 2.84217494631e-02 3.16057035862e-02 3.33647463124e-02 3.39942859272e-02 3.39942859272e-02 - 3.33647463124e-02 3.16057035862e-02 2.84217494631e-02 2.40967233573e-02 1.92840317465e-02 1.47279181689e-02 - 1.09990704821e-02 8.26409670065e-03 6.36714430780e-03 5.11303460195e-03 4.45367296569e-03 4.45367296569e-03 - 5.11303460195e-03 6.36714430780e-03 8.26409670066e-03 1.09990704821e-02 1.47279181689e-02 1.92840317465e-02 - 3.07822057975e-02 3.49769025118e-02 3.75326171917e-02 3.86294987685e-02 3.88811262512e-02 3.86294987685e-02 - 3.75326171916e-02 3.49769025118e-02 3.07822057975e-02 2.53973709283e-02 1.96802339930e-02 1.45986463266e-02 - 1.07546834176e-02 8.12161313175e-03 6.36714430780e-03 5.28636096575e-03 4.90588959931e-03 5.28636096575e-03 - 6.36714430780e-03 8.12161313175e-03 1.07546834176e-02 1.45986463266e-02 1.96802339930e-02 2.53973709283e-02 - 3.73540502297e-02 4.14583134665e-02 4.42637285519e-02 4.56987320893e-02 4.56987320893e-02 4.42637285519e-02 - 4.14583134665e-02 3.73540502297e-02 3.20848019959e-02 2.59777844449e-02 1.97871610956e-02 1.45320680305e-02 - 1.07546834176e-02 8.26409670065e-03 6.67439308889e-03 5.85076317272e-03 5.85076317272e-03 6.67439308889e-03 - 8.26409670066e-03 1.07546834176e-02 1.45320680305e-02 1.97871610956e-02 2.59777844449e-02 3.20848019959e-02 - 4.51578187598e-02 5.17382028009e-02 5.69437593912e-02 5.89461275929e-02 5.69437593912e-02 5.17382028009e-02 - 4.51578187598e-02 3.86937384314e-02 3.25042138914e-02 2.60947919991e-02 1.97871610956e-02 1.45986463266e-02 - 1.09990704821e-02 8.70256016587e-03 7.36052161959e-03 6.90308343843e-03 7.36052161959e-03 8.70256016587e-03 - 1.09990704821e-02 1.45986463266e-02 1.97871610956e-02 2.60947919991e-02 3.25042138914e-02 3.86937384314e-02 - 5.87902882084e-02 6.98255714910e-02 7.65071402186e-02 7.65071402186e-02 6.98255714910e-02 5.87902882084e-02 - 4.76134439312e-02 3.91205047681e-02 3.25042138914e-02 2.59777844449e-02 1.96802339930e-02 1.47279181688e-02 - 1.14481144732e-02 9.47290433111e-03 8.50665152157e-03 8.50665152157e-03 9.47290433111e-03 1.14481144732e-02 - 1.47279181688e-02 1.96802339930e-02 2.59777844449e-02 3.25042138914e-02 3.91205047681e-02 4.76134439313e-02 - 7.81193802831e-02 9.00454509227e-02 9.40538638177e-02 9.00454509227e-02 7.81193802831e-02 6.17008685349e-02 - 4.76134439312e-02 3.86937384314e-02 3.20848019959e-02 2.53973709283e-02 1.92840317465e-02 1.48492046219e-02 - 1.21090534529e-02 1.06109348738e-02 1.01198499891e-02 1.06109348738e-02 1.21090534529e-02 1.48492046219e-02 - 1.92840317465e-02 2.53973709283e-02 3.20848019959e-02 3.86937384314e-02 4.76134439312e-02 6.17008685349e-02 - 1.14984029929e-01 1.14284409879e-01 1.14984029929e-01 1.07504612680e-01 8.44119137021e-02 5.87902882083e-02 - 4.36605690195e-02 3.62673468746e-02 2.99301385615e-02 2.37301976795e-02 1.91106081253e-02 1.63906429721e-02 - 1.50424663757e-02 1.46288647205e-02 1.50424663757e-02 1.63906429721e-02 1.91106081253e-02 2.37301976795e-02 - 2.99301385615e-02 3.62673468746e-02 4.36605690195e-02 5.87902882083e-02 8.44119137022e-02 1.07504612680e-01 - 1.14284409879e-01 1.14284409879e-01 1.13479602981e-01 9.74781930219e-02 6.98255714909e-02 4.86717503238e-02 - 3.89798518705e-02 3.31963581644e-02 2.73091501295e-02 2.24043982374e-02 1.93871115228e-02 1.78888288560e-02 - 1.72812015630e-02 1.72812015630e-02 1.78888288560e-02 1.93871115228e-02 2.24043982374e-02 2.73091501295e-02 - 3.31963581644e-02 3.89798518706e-02 4.86717503238e-02 6.98255714909e-02 9.74781930220e-02 1.13479602981e-01 - 1.14984029929e-01 1.13479602981e-01 1.01688733219e-01 7.65071402185e-02 5.24371687843e-02 4.00842207789e-02 - 3.45751625707e-02 2.95890354456e-02 2.49964037842e-02 2.20777720561e-02 2.07196781889e-02 2.02040886880e-02 - 2.00653973119e-02 2.02040886880e-02 2.07196781889e-02 2.20777720561e-02 2.49964037843e-02 2.95890354456e-02 - 3.45751625707e-02 4.00842207789e-02 5.24371687843e-02 7.65071402185e-02 1.01688733220e-01 1.13479602981e-01 - 1.07504612679e-01 9.74781930219e-02 7.65071402185e-02 5.38553081705e-02 4.03062291682e-02 3.46096179590e-02 - 3.04773481040e-02 2.65400648390e-02 2.40839675381e-02 2.32030440049e-02 2.30939042850e-02 2.31231583381e-02 - 2.31231583381e-02 2.30939042850e-02 2.32030440049e-02 2.40839675381e-02 2.65400648390e-02 3.04773481040e-02 - 3.46096179590e-02 4.03062291683e-02 5.38553081705e-02 7.65071402185e-02 9.74781930219e-02 1.07504612679e-01 - 8.44119137021e-02 6.98255714909e-02 5.24371687843e-02 4.03062291682e-02 3.44216532954e-02 3.05548189106e-02 - 2.71142998602e-02 2.51931467428e-02 2.49964037842e-02 2.55726183949e-02 2.60492747623e-02 2.61902387743e-02 - 2.60492747623e-02 2.55726183949e-02 2.49964037842e-02 2.51931467428e-02 2.71142998602e-02 3.05548189106e-02 - 3.44216532954e-02 4.03062291683e-02 5.24371687843e-02 6.98255714909e-02 8.44119137022e-02 8.97664201879e-02 - 5.87902882083e-02 4.86717503238e-02 4.00842207789e-02 3.46096179590e-02 3.05548189106e-02 2.72051400328e-02 - 2.55791633527e-02 2.59618688149e-02 2.73091501295e-02 2.84217494631e-02 2.88778389824e-02 2.88778389824e-02 - 2.84217494631e-02 2.73091501295e-02 2.59618688149e-02 2.55791633527e-02 2.72051400328e-02 3.05548189106e-02 - 3.46096179590e-02 4.00842207790e-02 4.86717503239e-02 5.87902882083e-02 6.56428313090e-02 6.56428313090e-02 - 4.36605690195e-02 3.89798518705e-02 3.45751625707e-02 3.04773481040e-02 2.71142998602e-02 2.55791633527e-02 - 2.62414819209e-02 2.81653274579e-02 2.99301385615e-02 3.07822057975e-02 3.09609358381e-02 3.07822057975e-02 - 2.99301385615e-02 2.81653274579e-02 2.62414819209e-02 2.55791633527e-02 2.71142998602e-02 3.04773481040e-02 - 3.45751625707e-02 3.89798518706e-02 4.36605690195e-02 4.76134439312e-02 4.91904413240e-02 4.76134439312e-02 - 3.62673468745e-02 3.31963581643e-02 2.95890354456e-02 2.65400648390e-02 2.51931467427e-02 2.59618688149e-02 - 2.81653274579e-02 3.04404777485e-02 3.17361436403e-02 3.20848019959e-02 3.20848019959e-02 3.17361436402e-02 - 3.04404777485e-02 2.81653274579e-02 2.59618688149e-02 2.51931467428e-02 2.65400648390e-02 2.95890354456e-02 - 3.31963581644e-02 3.62673468746e-02 3.82423088608e-02 3.91205047681e-02 3.91205047681e-02 3.82423088607e-02 - 2.99301385615e-02 2.73091501295e-02 2.49964037842e-02 2.40839675381e-02 2.49964037842e-02 2.73091501295e-02 - 2.99301385615e-02 3.17361436403e-02 3.24128421387e-02 3.25042138914e-02 3.24128421387e-02 3.17361436402e-02 - 2.99301385615e-02 2.73091501295e-02 2.49964037842e-02 2.40839675381e-02 2.49964037842e-02 2.73091501295e-02 - 2.99301385615e-02 3.17361436402e-02 3.24128421387e-02 3.25042138914e-02 3.24128421387e-02 3.17361436402e-02 - 2.37301976795e-02 2.24043982374e-02 2.20777720560e-02 2.32030440049e-02 2.55726183949e-02 2.84217494631e-02 - 3.07822057975e-02 3.20848019959e-02 3.25042138914e-02 3.25042138914e-02 3.20848019959e-02 3.07822057975e-02 - 2.84217494631e-02 2.55726183949e-02 2.32030440049e-02 2.20777720561e-02 2.24043982374e-02 2.37301976795e-02 - 2.51249889113e-02 2.58521940319e-02 2.59777844449e-02 2.59777844449e-02 2.58521940319e-02 2.51249889113e-02 - 1.91106081253e-02 1.93871115227e-02 2.07196781889e-02 2.30939042849e-02 2.60492747622e-02 2.88778389824e-02 - 3.09609358381e-02 3.20848019959e-02 3.24128421387e-02 3.20848019959e-02 3.09609358381e-02 2.88778389824e-02 - 2.60492747622e-02 2.30939042849e-02 2.07196781889e-02 1.93871115228e-02 1.91106081253e-02 1.94290489291e-02 - 1.97044449599e-02 1.96802339930e-02 1.96031535282e-02 1.96802339929e-02 1.97044449599e-02 1.94290489291e-02 - 1.63906429721e-02 1.78888288560e-02 2.02040886880e-02 2.31231583381e-02 2.61902387743e-02 2.88778389824e-02 - 3.07822057975e-02 3.17361436403e-02 3.17361436403e-02 3.07822057975e-02 2.88778389824e-02 2.61902387743e-02 - 2.31231583381e-02 2.02040886880e-02 1.78888288560e-02 1.63906429721e-02 1.55937378378e-02 1.51354763629e-02 - 1.47279181688e-02 1.44210111226e-02 1.44210111226e-02 1.47279181688e-02 1.51354763629e-02 1.55937378378e-02 - 1.50424663757e-02 1.72812015630e-02 2.00653973118e-02 2.31231583381e-02 2.60492747623e-02 2.84217494631e-02 - 2.99301385615e-02 3.04404777485e-02 2.99301385615e-02 2.84217494631e-02 2.60492747623e-02 2.31231583381e-02 - 2.00653973118e-02 1.72812015630e-02 1.50424663757e-02 1.34169388324e-02 1.22800512627e-02 1.14481144732e-02 - 1.08699825973e-02 1.06518186545e-02 1.08699825973e-02 1.14481144732e-02 1.22800512627e-02 1.34169388324e-02 - 1.46288647205e-02 1.72812015630e-02 2.02040886880e-02 2.30939042849e-02 2.55726183949e-02 2.73091501295e-02 - 2.81653274579e-02 2.81653274579e-02 2.73091501295e-02 2.55726183949e-02 2.30939042849e-02 2.02040886880e-02 - 1.72812015630e-02 1.46288647205e-02 1.24265880360e-02 1.07225418333e-02 9.47290433110e-03 8.62540500905e-03 - 8.18383164206e-03 8.18383164206e-03 8.62540500905e-03 9.47290433110e-03 1.07225418333e-02 1.24265880360e-02 - 1.50424663757e-02 1.78888288560e-02 2.07196781889e-02 2.32030440049e-02 2.49964037843e-02 2.59618688149e-02 - 2.62414819209e-02 2.59618688149e-02 2.49964037843e-02 2.32030440049e-02 2.07196781889e-02 1.78888288560e-02 - 1.50424663757e-02 1.24265880360e-02 1.02153626600e-02 8.50665152156e-03 7.31933010296e-03 6.62684043801e-03 - 6.39967919814e-03 6.62684043801e-03 7.31933010296e-03 8.50665152157e-03 1.02153626600e-02 1.24265880360e-02 - 1.63906429721e-02 1.93871115228e-02 2.20777720561e-02 2.40839675381e-02 2.51931467428e-02 2.55791633528e-02 - 2.55791633528e-02 2.51931467428e-02 2.40839675381e-02 2.20777720561e-02 1.93871115228e-02 1.63906429721e-02 - 1.34169388324e-02 1.07225418333e-02 8.50665152157e-03 6.87426464911e-03 5.82746138702e-03 5.32068131556e-03 - 5.32068131556e-03 5.82746138702e-03 6.87426464911e-03 8.50665152157e-03 1.07225418333e-02 1.34169388324e-02 - 1.91106081254e-02 2.24043982374e-02 2.49964037843e-02 2.65400648390e-02 2.71142998602e-02 2.72051400328e-02 - 2.71142998602e-02 2.65400648390e-02 2.49964037843e-02 2.24043982374e-02 1.91106081253e-02 1.55937378378e-02 - 1.22800512627e-02 9.47290433111e-03 7.31933010297e-03 5.82746138702e-03 4.94632325183e-03 4.65175947716e-03 - 4.94632325183e-03 5.82746138702e-03 7.31933010297e-03 9.47290433111e-03 1.22800512627e-02 1.55937378378e-02 - 2.37301976795e-02 2.73091501295e-02 2.95890354456e-02 3.04773481040e-02 3.05548189106e-02 3.05548189106e-02 - 3.04773481040e-02 2.95890354456e-02 2.73091501295e-02 2.37301976795e-02 1.94290489291e-02 1.51354763629e-02 - 1.14481144732e-02 8.62540500906e-03 6.62684043802e-03 5.32068131556e-03 4.65175947716e-03 4.65175947716e-03 - 5.32068131556e-03 6.62684043802e-03 8.62540500906e-03 1.14481144732e-02 1.51354763629e-02 1.94290489291e-02 - 2.99301385615e-02 3.31963581644e-02 3.45751625707e-02 3.46096179591e-02 3.44216532954e-02 3.46096179591e-02 - 3.45751625707e-02 3.31963581644e-02 2.99301385615e-02 2.51249889113e-02 1.97044449599e-02 1.47279181689e-02 - 1.08699825973e-02 8.18383164206e-03 6.39967919814e-03 5.32068131556e-03 4.94632325183e-03 5.32068131556e-03 - 6.39967919814e-03 8.18383164207e-03 1.08699825973e-02 1.47279181689e-02 1.97044449599e-02 2.51249889113e-02 - 3.62673468746e-02 3.89798518706e-02 4.00842207790e-02 4.03062291683e-02 4.03062291683e-02 4.00842207790e-02 - 3.89798518706e-02 3.62673468746e-02 3.17361436403e-02 2.58521940319e-02 1.96802339930e-02 1.44210111226e-02 - 1.06518186545e-02 8.18383164206e-03 6.62684043802e-03 5.82746138702e-03 5.82746138702e-03 6.62684043802e-03 - 8.18383164207e-03 1.06518186545e-02 1.44210111226e-02 1.96802339930e-02 2.58521940319e-02 3.17361436403e-02 - 4.36605690195e-02 4.86717503239e-02 5.24371687844e-02 5.38553081706e-02 5.24371687844e-02 4.86717503239e-02 - 4.36605690195e-02 3.82423088608e-02 3.24128421387e-02 2.59777844449e-02 1.96031535282e-02 1.44210111226e-02 - 1.08699825973e-02 8.62540500906e-03 7.31933010297e-03 6.87426464911e-03 7.31933010297e-03 8.62540500906e-03 - 1.08699825973e-02 1.44210111226e-02 1.96031535283e-02 2.59777844449e-02 3.24128421387e-02 3.82423088608e-02 - 5.87902882084e-02 6.98255714910e-02 7.65071402186e-02 7.65071402186e-02 6.98255714910e-02 5.87902882084e-02 - 4.76134439312e-02 3.91205047681e-02 3.25042138914e-02 2.59777844449e-02 1.96802339930e-02 1.47279181688e-02 - 1.14481144732e-02 9.47290433111e-03 8.50665152157e-03 8.50665152157e-03 9.47290433111e-03 1.14481144732e-02 - 1.47279181689e-02 1.96802339930e-02 2.59777844449e-02 3.25042138914e-02 3.91205047681e-02 4.76134439313e-02 - 8.44119137022e-02 9.74781930220e-02 1.01688733220e-01 9.74781930220e-02 8.44119137022e-02 6.56428313091e-02 - 4.91904413241e-02 3.91205047681e-02 3.24128421387e-02 2.58521940319e-02 1.97044449599e-02 1.51354763629e-02 - 1.22800512627e-02 1.07225418333e-02 1.02153626600e-02 1.07225418333e-02 1.22800512627e-02 1.51354763629e-02 - 1.97044449599e-02 2.58521940319e-02 3.24128421387e-02 3.91205047681e-02 4.91904413241e-02 6.56428313091e-02 - 1.07504612680e-01 1.13479602981e-01 1.13479602981e-01 1.07504612680e-01 8.97664201880e-02 6.56428313091e-02 - 4.76134439312e-02 3.82423088608e-02 3.17361436403e-02 2.51249889113e-02 1.94290489291e-02 1.55937378378e-02 - 1.34169388324e-02 1.24265880360e-02 1.24265880360e-02 1.34169388324e-02 1.55937378378e-02 1.94290489291e-02 - 2.51249889113e-02 3.17361436403e-02 3.82423088608e-02 4.76134439312e-02 6.56428313091e-02 8.97664201881e-02 - 1.05271425072e-01 1.05271425072e-01 1.15476799016e-01 1.07504612680e-01 7.81193802830e-02 5.18158087397e-02 - 3.97328533270e-02 3.38925854809e-02 2.81653274579e-02 2.31387869200e-02 1.99975947255e-02 1.85132763207e-02 - 1.79741436761e-02 1.79741436761e-02 1.85132763207e-02 1.99975947255e-02 2.31387869200e-02 2.81653274579e-02 - 3.38925854809e-02 3.97328533271e-02 5.18158087398e-02 7.81193802831e-02 1.07504612680e-01 1.15476799016e-01 - 1.05271425072e-01 1.12133375345e-01 1.13479602981e-01 9.00454509227e-02 5.87809730550e-02 4.11388919901e-02 - 3.48628450776e-02 3.04051143293e-02 2.59618688149e-02 2.30253665657e-02 2.17948830411e-02 2.15195877577e-02 - 2.15038028103e-02 2.15195877577e-02 2.17948830411e-02 2.30253665657e-02 2.59618688149e-02 3.04051143293e-02 - 3.48628450776e-02 4.11388919901e-02 5.87809730550e-02 9.00454509227e-02 1.13479602981e-01 1.12133375345e-01 - 1.15476799016e-01 1.13479602981e-01 9.40538638176e-02 6.30064198496e-02 4.15214050146e-02 3.39196724265e-02 - 3.06792139923e-02 2.73903662614e-02 2.51931467427e-02 2.46286629032e-02 2.49902463304e-02 2.54054430258e-02 - 2.54054430258e-02 2.49902463304e-02 2.46286629032e-02 2.51931467428e-02 2.73903662614e-02 3.06792139923e-02 - 3.39196724265e-02 4.15214050146e-02 6.30064198497e-02 9.40538638177e-02 1.13479602981e-01 1.15476799016e-01 - 1.07504612679e-01 9.00454509227e-02 6.30064198496e-02 4.15474983449e-02 3.26920605346e-02 2.97974895143e-02 - 2.74769895380e-02 2.61756575962e-02 2.65400648390e-02 2.78013937268e-02 2.89590113766e-02 2.93979324046e-02 - 2.89590113766e-02 2.78013937268e-02 2.65400648390e-02 2.61756575962e-02 2.74769895380e-02 2.97974895143e-02 - 3.26920605347e-02 4.15474983449e-02 6.30064198497e-02 9.00454509227e-02 1.07504612680e-01 1.12225405020e-01 - 7.81193802830e-02 5.87809730550e-02 4.15214050146e-02 3.26920605347e-02 2.92436594720e-02 2.70513354759e-02 - 2.62352804996e-02 2.73903662614e-02 2.95890354456e-02 3.16057035862e-02 3.27029610793e-02 3.27029610793e-02 - 3.16057035862e-02 2.95890354456e-02 2.73903662614e-02 2.62352804996e-02 2.70513354759e-02 2.92436594720e-02 - 3.26920605347e-02 4.15214050146e-02 5.87809730550e-02 7.81193802830e-02 8.97664201880e-02 8.97664201879e-02 - 5.18158087397e-02 4.11388919901e-02 3.39196724265e-02 2.97974895143e-02 2.70513354759e-02 2.61140936360e-02 - 2.75584598461e-02 3.04051143293e-02 3.31963581644e-02 3.49769025118e-02 3.55406204185e-02 3.49769025117e-02 - 3.31963581644e-02 3.04051143293e-02 2.75584598461e-02 2.61140936360e-02 2.70513354759e-02 2.97974895143e-02 - 3.39196724265e-02 4.11388919902e-02 5.18158087398e-02 6.17008685349e-02 6.56428313090e-02 6.17008685348e-02 - 3.97328533270e-02 3.48628450776e-02 3.06792139923e-02 2.74769895380e-02 2.62352804996e-02 2.75584598461e-02 - 3.06058831029e-02 3.38925854809e-02 3.62673468746e-02 3.73540502296e-02 3.73540502296e-02 3.62673468746e-02 - 3.38925854809e-02 3.06058831029e-02 2.75584598461e-02 2.62352804996e-02 2.74769895380e-02 3.06792139923e-02 - 3.48628450776e-02 3.97328533271e-02 4.45490987358e-02 4.76134439312e-02 4.76134439312e-02 4.45490987357e-02 - 3.38925854809e-02 3.04051143293e-02 2.73903662614e-02 2.61756575962e-02 2.73903662614e-02 3.04051143293e-02 - 3.38925854809e-02 3.66854482599e-02 3.82423088608e-02 3.86937384314e-02 3.82423088608e-02 3.66854482599e-02 - 3.38925854809e-02 3.04051143293e-02 2.73903662614e-02 2.61756575962e-02 2.73903662614e-02 3.04051143293e-02 - 3.38925854809e-02 3.66854482599e-02 3.82423088607e-02 3.86937384314e-02 3.82423088607e-02 3.66854482599e-02 - 2.81653274579e-02 2.59618688149e-02 2.51931467427e-02 2.65400648390e-02 2.95890354456e-02 3.31963581644e-02 - 3.62673468746e-02 3.82423088608e-02 3.91205047681e-02 3.91205047681e-02 3.82423088608e-02 3.62673468746e-02 - 3.31963581644e-02 2.95890354456e-02 2.65400648390e-02 2.51931467428e-02 2.59618688149e-02 2.81653274579e-02 - 3.04404777485e-02 3.17361436402e-02 3.20848019958e-02 3.20848019958e-02 3.17361436402e-02 3.04404777485e-02 - 2.31387869200e-02 2.30253665656e-02 2.46286629032e-02 2.78013937268e-02 3.16057035862e-02 3.49769025118e-02 - 3.73540502297e-02 3.86937384314e-02 3.91205047681e-02 3.86937384314e-02 3.73540502297e-02 3.49769025118e-02 - 3.16057035862e-02 2.78013937268e-02 2.46286629032e-02 2.30253665657e-02 2.31387869200e-02 2.42075414898e-02 - 2.51249889113e-02 2.53973709283e-02 2.53797374387e-02 2.53973709283e-02 2.51249889113e-02 2.42075414898e-02 - 1.99975947255e-02 2.17948830411e-02 2.49902463304e-02 2.89590113766e-02 3.27029610793e-02 3.55406204185e-02 - 3.73540502297e-02 3.82423088608e-02 3.82423088608e-02 3.73540502297e-02 3.55406204185e-02 3.27029610793e-02 - 2.89590113766e-02 2.49902463304e-02 2.17948830411e-02 1.99975947255e-02 1.94536795471e-02 1.94290489291e-02 - 1.92840317465e-02 1.90345757835e-02 1.90345757835e-02 1.92840317465e-02 1.94290489291e-02 1.94536795471e-02 - 1.85132763207e-02 2.15195877577e-02 2.54054430258e-02 2.93979324046e-02 3.27029610793e-02 3.49769025118e-02 - 3.62673468746e-02 3.66854482599e-02 3.62673468746e-02 3.49769025118e-02 3.27029610793e-02 2.93979324046e-02 - 2.54054430258e-02 2.15195877577e-02 1.85132763207e-02 1.66439398964e-02 1.55937378378e-02 1.48492046219e-02 - 1.42308801751e-02 1.39667079820e-02 1.42308801751e-02 1.48492046219e-02 1.55937378378e-02 1.66439398964e-02 - 1.79741436760e-02 2.15038028103e-02 2.54054430258e-02 2.89590113766e-02 3.16057035862e-02 3.31963581644e-02 - 3.38925854810e-02 3.38925854810e-02 3.31963581644e-02 3.16057035862e-02 2.89590113766e-02 2.54054430258e-02 - 2.15038028103e-02 1.79741436760e-02 1.52762540169e-02 1.34169388324e-02 1.21090534529e-02 1.11331987338e-02 - 1.05557815436e-02 1.05557815436e-02 1.11331987338e-02 1.21090534529e-02 1.34169388324e-02 1.52762540168e-02 - 1.79741436760e-02 2.15195877577e-02 2.49902463304e-02 2.78013937268e-02 2.95890354456e-02 3.04051143294e-02 - 3.06058831030e-02 3.04051143294e-02 2.95890354456e-02 2.78013937268e-02 2.49902463304e-02 2.15195877577e-02 - 1.79741436760e-02 1.48656767560e-02 1.24265880360e-02 1.06109348738e-02 9.28357359922e-03 8.41997198038e-03 - 8.11230157084e-03 8.41997198038e-03 9.28357359923e-03 1.06109348738e-02 1.24265880360e-02 1.48656767560e-02 - 1.85132763207e-02 2.17948830411e-02 2.46286629032e-02 2.65400648390e-02 2.73903662614e-02 2.75584598462e-02 - 2.75584598462e-02 2.73903662614e-02 2.65400648390e-02 2.46286629032e-02 2.17948830411e-02 1.85132763207e-02 - 1.52762540169e-02 1.24265880360e-02 1.01198499891e-02 8.37400390520e-03 7.17862759619e-03 6.56138198056e-03 - 6.56138198056e-03 7.17862759619e-03 8.37400390520e-03 1.01198499891e-02 1.24265880360e-02 1.52762540169e-02 - 1.99975947255e-02 2.30253665657e-02 2.51931467428e-02 2.61756575963e-02 2.62352804996e-02 2.61140936361e-02 - 2.62352804996e-02 2.61756575963e-02 2.51931467428e-02 2.30253665657e-02 1.99975947255e-02 1.66439398964e-02 - 1.34169388324e-02 1.06109348738e-02 8.37400390520e-03 6.75449318420e-03 5.76667312114e-03 5.43239778449e-03 - 5.76667312114e-03 6.75449318420e-03 8.37400390520e-03 1.06109348738e-02 1.34169388324e-02 1.66439398964e-02 - 2.31387869200e-02 2.59618688149e-02 2.73903662614e-02 2.74769895380e-02 2.70513354759e-02 2.70513354759e-02 - 2.74769895380e-02 2.73903662614e-02 2.59618688149e-02 2.31387869200e-02 1.94536795471e-02 1.55937378378e-02 - 1.21090534530e-02 9.28357359923e-03 7.17862759620e-03 5.76667312114e-03 5.04343778102e-03 5.04343778102e-03 - 5.76667312114e-03 7.17862759620e-03 9.28357359923e-03 1.21090534530e-02 1.55937378378e-02 1.94536795471e-02 - 2.81653274579e-02 3.04051143294e-02 3.06792139923e-02 2.97974895143e-02 2.92436594720e-02 2.97974895143e-02 - 3.06792139923e-02 3.04051143294e-02 2.81653274579e-02 2.42075414899e-02 1.94290489291e-02 1.48492046219e-02 - 1.11331987338e-02 8.41997198039e-03 6.56138198057e-03 5.43239778449e-03 5.04343778102e-03 5.43239778449e-03 - 6.56138198057e-03 8.41997198039e-03 1.11331987338e-02 1.48492046219e-02 1.94290489291e-02 2.42075414899e-02 - 3.38925854810e-02 3.48628450777e-02 3.39196724265e-02 3.26920605347e-02 3.26920605347e-02 3.39196724265e-02 - 3.48628450776e-02 3.38925854809e-02 3.04404777485e-02 2.51249889113e-02 1.92840317465e-02 1.42308801751e-02 - 1.05557815436e-02 8.11230157085e-03 6.56138198057e-03 5.76667312114e-03 5.76667312114e-03 6.56138198057e-03 - 8.11230157085e-03 1.05557815436e-02 1.42308801751e-02 1.92840317465e-02 2.51249889113e-02 3.04404777485e-02 - 3.97328533271e-02 4.11388919902e-02 4.15214050147e-02 4.15474983450e-02 4.15214050147e-02 4.11388919902e-02 - 3.97328533271e-02 3.66854482599e-02 3.17361436403e-02 2.53973709283e-02 1.90345757835e-02 1.39667079820e-02 - 1.05557815436e-02 8.41997198039e-03 7.17862759620e-03 6.75449318420e-03 7.17862759620e-03 8.41997198039e-03 - 1.05557815436e-02 1.39667079820e-02 1.90345757835e-02 2.53973709283e-02 3.17361436403e-02 3.66854482599e-02 - 5.18158087398e-02 5.87809730551e-02 6.30064198498e-02 6.30064198498e-02 5.87809730551e-02 5.18158087398e-02 - 4.45490987358e-02 3.82423088608e-02 3.20848019959e-02 2.53797374387e-02 1.90345757835e-02 1.42308801751e-02 - 1.11331987338e-02 9.28357359923e-03 8.37400390520e-03 8.37400390520e-03 9.28357359923e-03 1.11331987338e-02 - 1.42308801751e-02 1.90345757835e-02 2.53797374387e-02 3.20848019959e-02 3.82423088608e-02 4.45490987358e-02 - 7.81193802831e-02 9.00454509228e-02 9.40538638178e-02 9.00454509228e-02 7.81193802831e-02 6.17008685349e-02 - 4.76134439312e-02 3.86937384314e-02 3.20848019959e-02 2.53973709283e-02 1.92840317465e-02 1.48492046219e-02 - 1.21090534529e-02 1.06109348738e-02 1.01198499891e-02 1.06109348738e-02 1.21090534530e-02 1.48492046219e-02 - 1.92840317465e-02 2.53973709283e-02 3.20848019959e-02 3.86937384314e-02 4.76134439313e-02 6.17008685349e-02 - 1.07504612680e-01 1.13479602981e-01 1.13479602981e-01 1.07504612680e-01 8.97664201881e-02 6.56428313091e-02 - 4.76134439312e-02 3.82423088608e-02 3.17361436403e-02 2.51249889113e-02 1.94290489291e-02 1.55937378378e-02 - 1.34169388324e-02 1.24265880360e-02 1.24265880360e-02 1.34169388324e-02 1.55937378378e-02 1.94290489291e-02 - 2.51249889113e-02 3.17361436403e-02 3.82423088608e-02 4.76134439312e-02 6.56428313091e-02 8.97664201881e-02 - 1.15476799016e-01 1.12133375345e-01 1.15476799016e-01 1.12225405021e-01 8.97664201880e-02 6.17008685349e-02 - 4.45490987358e-02 3.66854482599e-02 3.04404777485e-02 2.42075414898e-02 1.94536795471e-02 1.66439398964e-02 - 1.52762540169e-02 1.48656767561e-02 1.52762540169e-02 1.66439398964e-02 1.94536795471e-02 2.42075414898e-02 - 3.04404777485e-02 3.66854482599e-02 4.45490987358e-02 6.17008685349e-02 8.97664201881e-02 1.12225405021e-01 diff --git a/tests/01_PW/204_PW_SY/INPUT b/tests/01_PW/204_PW_SY/INPUT index 45393cdaa7..e62a2bc1ab 100644 --- a/tests/01_PW/204_PW_SY/INPUT +++ b/tests/01_PW/204_PW_SY/INPUT @@ -1,29 +1,30 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf +suffix autotest +calculation scf +init_wfc random -symmetry 1 -pseudo_dir ../../PP_ORB +symmetry 1 +pseudo_dir ../../PP_ORB #Parameters (2.Iteration) -ecutwfc 5 -scf_thr 1e-9 -scf_nmax 100 +ecutwfc 5 +scf_thr 1e-9 +scf_nmax 100 #Parameters (3.Basis) -basis_type pw +basis_type pw #Parameters (4.Smearing) -smearing_method gauss -smearing_sigma 0.002 +smearing_method gauss +smearing_sigma 0.002 #Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.7 +mixing_type broyden +mixing_beta 0.7 -dft_functional XC_GGA_X_PBE+XC_GGA_C_PBE +dft_functional XC_GGA_X_PBE+XC_GGA_C_PBE -cal_force 1 -cal_stress 1 +cal_force 1 +cal_stress 1 -pw_seed 1 +pw_seed 1 diff --git a/tests/01_PW/205_PW_SCAN/INPUT b/tests/01_PW/205_PW_SCAN/INPUT index 2e9a4ec38b..389338e70e 100644 --- a/tests/01_PW/205_PW_SCAN/INPUT +++ b/tests/01_PW/205_PW_SCAN/INPUT @@ -1,32 +1,33 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf -kpar 2 +suffix autotest +calculation scf +kpar 2 +init_wfc random -pseudo_dir ../../PP_ORB +pseudo_dir ../../PP_ORB #Parameters (2.Iteration) -ecutwfc 50 -scf_thr 1e-9 +ecutwfc 50 +scf_thr 1e-9 #pseudo_mesh 1 -dft_functional scan +dft_functional scan #Parameters (3.Basis) -basis_type pw +basis_type pw #Parameters (4.Smearing) -smearing_method gauss -smearing_sigma 0.002 +smearing_method gauss +smearing_sigma 0.002 #Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.7 +mixing_type broyden +mixing_beta 0.7 -cal_force 1 -cal_stress 1 +cal_force 1 +cal_stress 1 -mixing_tau 1 +mixing_tau 1 -pw_seed 1 +pw_seed 1 diff --git a/tests/01_PW/206_PW_SCAN_S2/INPUT b/tests/01_PW/206_PW_SCAN_S2/INPUT index 42dacc7dc7..8ad2100cf4 100644 --- a/tests/01_PW/206_PW_SCAN_S2/INPUT +++ b/tests/01_PW/206_PW_SCAN_S2/INPUT @@ -1,30 +1,31 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf +suffix autotest +calculation scf +init_wfc random -pseudo_dir ../../PP_ORB -pw_seed 1 +pseudo_dir ../../PP_ORB +pw_seed 1 #Parameters (2.Iteration) -ecutwfc 50 -scf_thr 2e-6 +ecutwfc 50 +scf_thr 2e-6 #pseudo_mesh 1 -nspin 2 +nspin 2 -dft_functional scan +dft_functional scan #Parameters (3.Basis) -basis_type pw +basis_type pw #Parameters (4.Smearing) -smearing_method gauss -smearing_sigma 0.002 +smearing_method gauss +smearing_sigma 0.002 #Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.7 +mixing_type broyden +mixing_beta 0.7 -cal_force 1 -cal_stress 1 +cal_force 1 +cal_stress 1 diff --git a/tests/01_PW/207_PW_skip/INPUT b/tests/01_PW/207_PW_skip/INPUT index dac128c01f..f9157f0685 100644 --- a/tests/01_PW/207_PW_skip/INPUT +++ b/tests/01_PW/207_PW_skip/INPUT @@ -1,34 +1,35 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf +suffix autotest +calculation scf +init_wfc random -nbands 10 -symmetry 1 -pseudo_dir ../../PP_ORB -dft_functional scan +nbands 10 +symmetry 1 +pseudo_dir ../../PP_ORB +dft_functional scan #Parameters (2.Iteration) -ecutwfc 20 -scf_thr 1e-9 -scf_nmax 2 +ecutwfc 20 +scf_thr 1e-9 +scf_nmax 2 #Parameters (3.Basis) -basis_type pw +basis_type pw #Parameters (4.Smearing) -smearing_method fd -smearing_sigma 0.1 +smearing_method fd +smearing_sigma 0.1 #Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.7 -mixing_gg0 0.0 +mixing_type broyden +mixing_beta 0.7 +mixing_gg0 0.0 -nx 24 -ny 24 -nz 3 -pw_seed 1 +nx 24 +ny 24 +nz 3 +pw_seed 1 -test_skip_ewald 1 +test_skip_ewald 1 diff --git a/tests/01_PW/208_PW_CG_float/INPUT b/tests/01_PW/208_PW_CG_float/INPUT index c1a7ad556f..1cbe3c95eb 100644 --- a/tests/01_PW/208_PW_CG_float/INPUT +++ b/tests/01_PW/208_PW_CG_float/INPUT @@ -1,29 +1,29 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf +suffix autotest +calculation scf -nbands 6 -symmetry 1 -pseudo_dir ../../PP_ORB +nbands 6 +symmetry 1 +pseudo_dir ../../PP_ORB #Parameters (2.Iteration) -ecutwfc 20 -scf_thr 1e-8 -scf_nmax 100 +ecutwfc 20 +scf_thr 1e-8 +scf_nmax 100 #Parameters (3.Basis) -basis_type pw +basis_type pw #Parameters (4.Smearing) -smearing_method gauss -smearing_sigma 0.002 +smearing_method gauss +smearing_sigma 0.002 #Parameters (5.Mixing) -mixing_type plain -mixing_beta 0.5 +mixing_type plain +mixing_beta 0.5 -ks_solver cg -device cpu -precision single \ No newline at end of file +ks_solver cg +device cpu +precision single diff --git a/tests/01_PW/209_PW_DFTHALF/INPUT b/tests/01_PW/209_PW_DFTHALF/INPUT new file mode 100644 index 0000000000..32036d4b07 --- /dev/null +++ b/tests/01_PW/209_PW_DFTHALF/INPUT @@ -0,0 +1,30 @@ +INPUT_PARAMETERS +#Parameters (1.General) +suffix autotest +calculation scf +ks_solver dav +dfthalf_type 1 +init_wfc random + +symmetry 1 +pseudo_dir ../../PP_ORB + +#Parameters (2.Iteration) +ecutwfc 50 +scf_thr 1e-9 +scf_nmax 100 + +#Parameters (3.Basis) +basis_type pw + +#Parameters (4.Smearing) +smearing_method gauss +smearing_sigma 0.002 + +#Parameters (5.Mixing) +mixing_type broyden +mixing_beta 0.7 + +dft_functional PBE + +pw_seed 1 diff --git a/tests/01_PW/054_PW_OP_nscf/KPT b/tests/01_PW/209_PW_DFTHALF/KPT similarity index 100% rename from tests/01_PW/054_PW_OP_nscf/KPT rename to tests/01_PW/209_PW_DFTHALF/KPT diff --git a/tests/01_PW/209_PW_DFTHALF/README b/tests/01_PW/209_PW_DFTHALF/README new file mode 100644 index 0000000000..cf0b26281c --- /dev/null +++ b/tests/01_PW/209_PW_DFTHALF/README @@ -0,0 +1 @@ +DFT-1/2 method in PW basis, soc off diff --git a/tests/01_PW/209_PW_DFTHALF/STRU b/tests/01_PW/209_PW_DFTHALF/STRU new file mode 100644 index 0000000000..a6f610156f --- /dev/null +++ b/tests/01_PW/209_PW_DFTHALF/STRU @@ -0,0 +1,28 @@ +ATOMIC_SPECIES +Li 0.0 Li_ONCV_PBE-1.2.upf upf201 +F 0.0 F_ONCV_PBE-1.2.upf upf201 + +LATTICE_CONSTANT +1.0000000000 + +LATTICE_VECTORS + 0.0000000000 3.8379626543 3.8379626543 + 3.8379626543 0.0000000000 3.8379626543 + 3.8379626543 3.8379626543 0.0000000000 + +SEP_FILES +Li 0 +F 1 F_pbe_50.sep 0.0 2.2 20.0 1.0 + +ATOMIC_POSITIONS +Direct + +Li #label +0.0000 #magnetism +1 #number of atoms + 0.0000000000 0.0000000000 0.0000000000 m 1 1 1 + +F #label +0.0000 #magnetism +1 #number of atoms + 0.5000000000 0.5000000000 0.5000000000 m 1 1 1 diff --git a/tests/01_PW/209_PW_DFTHALF/result.ref b/tests/01_PW/209_PW_DFTHALF/result.ref new file mode 100644 index 0000000000..e59c803047 --- /dev/null +++ b/tests/01_PW/209_PW_DFTHALF/result.ref @@ -0,0 +1,6 @@ +etotref -906.0447337890729 +etotperatomref -453.0223668945 +pointgroupref O_h +spacegroupref O_h +nksibzref 3 +totaltimeref 0.39 diff --git a/tests/01_PW/801_PW_LT_sc/INPUT b/tests/01_PW/801_PW_LT_sc/INPUT index f24f5a3833..2f959670c4 100644 --- a/tests/01_PW/801_PW_LT_sc/INPUT +++ b/tests/01_PW/801_PW_LT_sc/INPUT @@ -1,20 +1,20 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (System) -suffix autotest +suffix autotest -nbands 4 -stru_file STRU -kpoint_file KPT -pseudo_dir ../../PP_ORB -calculation scf -latname sc +nbands 4 +stru_file STRU +kpoint_file KPT +pseudo_dir ../../PP_ORB +calculation scf +latname sc #Parameters (PW) -ecutwfc 25.0 # Rydberg +ecutwfc 25.0 # Rydberg #Parameters (electronic) -basis_type pw -scf_thr 1e-10 +basis_type pw +scf_thr 1e-10 -cal_force 1 -cal_stress 1 +cal_force 1 +cal_stress 1 -pw_seed 1 +pw_seed 1 diff --git a/tests/01_PW/802_PW_LT_fcc/INPUT b/tests/01_PW/802_PW_LT_fcc/INPUT index 019ebd299c..9ab9377443 100644 --- a/tests/01_PW/802_PW_LT_fcc/INPUT +++ b/tests/01_PW/802_PW_LT_fcc/INPUT @@ -1,18 +1,18 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (System) -suffix autotest +suffix autotest -nbands 4 -stru_file STRU -kpoint_file KPT -pseudo_dir ../../PP_ORB -calculation scf -latname fcc +nbands 4 +stru_file STRU +kpoint_file KPT +pseudo_dir ../../PP_ORB +calculation scf +latname fcc #Parameters (PW) -ecutwfc 25.0 # Rydberg +ecutwfc 25.0 # Rydberg #Parameters (electronic) -basis_type pw -scf_thr 1e-10 +basis_type pw +scf_thr 1e-10 -cal_force 1 -cal_stress 1 +cal_force 1 +cal_stress 1 diff --git a/tests/01_PW/803_PW_LT_bcc/INPUT b/tests/01_PW/803_PW_LT_bcc/INPUT index 4cc74d4750..82d0093cc3 100644 --- a/tests/01_PW/803_PW_LT_bcc/INPUT +++ b/tests/01_PW/803_PW_LT_bcc/INPUT @@ -1,18 +1,18 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (System) -suffix autotest +suffix autotest -nbands 4 -stru_file STRU -kpoint_file KPT -pseudo_dir ../../PP_ORB -calculation scf -latname bcc +nbands 4 +stru_file STRU +kpoint_file KPT +pseudo_dir ../../PP_ORB +calculation scf +latname bcc #Parameters (PW) -ecutwfc 25.0 # Rydberg +ecutwfc 25.0 # Rydberg #Parameters (electronic) -basis_type pw -scf_thr 1e-10 +basis_type pw +scf_thr 1e-10 -cal_force 1 -cal_stress 1 +cal_force 1 +cal_stress 1 diff --git a/tests/01_PW/804_PW_LT_hex/INPUT b/tests/01_PW/804_PW_LT_hex/INPUT index 516af3d7bd..6cac5f3325 100644 --- a/tests/01_PW/804_PW_LT_hex/INPUT +++ b/tests/01_PW/804_PW_LT_hex/INPUT @@ -1,19 +1,19 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (System) -suffix autotest +suffix autotest -nbands 4 -stru_file STRU -kpoint_file KPT -pseudo_dir ../../PP_ORB -pw_seed 1 -calculation scf -latname hexagonal +nbands 4 +stru_file STRU +kpoint_file KPT +pseudo_dir ../../PP_ORB +pw_seed 1 +calculation scf +latname hexagonal #Parameters (PW) -ecutwfc 25.0 # Rydberg +ecutwfc 25.0 # Rydberg #Parameters (electronic) -basis_type pw -scf_thr 1e-10 +basis_type pw +scf_thr 1e-10 -cal_force 1 -cal_stress 1 +cal_force 1 +cal_stress 1 diff --git a/tests/01_PW/805_PW_LT_trigonal/INPUT b/tests/01_PW/805_PW_LT_trigonal/INPUT index f164763edd..8d7d7a8015 100644 --- a/tests/01_PW/805_PW_LT_trigonal/INPUT +++ b/tests/01_PW/805_PW_LT_trigonal/INPUT @@ -1,19 +1,19 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (System) -suffix autotest +suffix autotest -nbands 4 -stru_file STRU -kpoint_file KPT -pseudo_dir ../../PP_ORB -pw_seed 1 -calculation scf -latname trigonal +nbands 4 +stru_file STRU +kpoint_file KPT +pseudo_dir ../../PP_ORB +pw_seed 1 +calculation scf +latname trigonal #Parameters (PW) -ecutwfc 25.0 # Rydberg +ecutwfc 25.0 # Rydberg #Parameters (electronic) -basis_type pw -scf_thr 1e-10 +basis_type pw +scf_thr 1e-10 -cal_force 1 -cal_stress 1 +cal_force 1 +cal_stress 1 diff --git a/tests/01_PW/806_PW_LT_st/INPUT b/tests/01_PW/806_PW_LT_st/INPUT index 7d8a087c0e..1fc70a5340 100644 --- a/tests/01_PW/806_PW_LT_st/INPUT +++ b/tests/01_PW/806_PW_LT_st/INPUT @@ -1,19 +1,19 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (System) -suffix autotest +suffix autotest -nbands 4 -stru_file STRU -kpoint_file KPT -pseudo_dir ../../PP_ORB -pw_seed 1 -calculation scf -latname st +nbands 4 +stru_file STRU +kpoint_file KPT +pseudo_dir ../../PP_ORB +pw_seed 1 +calculation scf +latname st #Parameters (PW) -ecutwfc 25.0 # Rydberg +ecutwfc 25.0 # Rydberg #Parameters (electronic) -basis_type pw -scf_thr 1e-10 +basis_type pw +scf_thr 1e-10 -cal_force 1 -cal_stress 1 +cal_force 1 +cal_stress 1 diff --git a/tests/01_PW/807_PW_LT_bct/INPUT b/tests/01_PW/807_PW_LT_bct/INPUT index b7a0aff06d..20f5b6f35e 100644 --- a/tests/01_PW/807_PW_LT_bct/INPUT +++ b/tests/01_PW/807_PW_LT_bct/INPUT @@ -1,19 +1,19 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (System) -suffix autotest +suffix autotest -nbands 4 -stru_file STRU -kpoint_file KPT -pseudo_dir ../../PP_ORB -pw_seed 1 -calculation scf -latname bct +nbands 4 +stru_file STRU +kpoint_file KPT +pseudo_dir ../../PP_ORB +pw_seed 1 +calculation scf +latname bct #Parameters (PW) -ecutwfc 25.0 # Rydberg +ecutwfc 25.0 # Rydberg #Parameters (electronic) -basis_type pw -scf_thr 1e-10 +basis_type pw +scf_thr 1e-10 -cal_force 1 -cal_stress 1 +cal_force 1 +cal_stress 1 diff --git a/tests/01_PW/808_PW_LT_so/INPUT b/tests/01_PW/808_PW_LT_so/INPUT index bc2228e826..8948f7418f 100644 --- a/tests/01_PW/808_PW_LT_so/INPUT +++ b/tests/01_PW/808_PW_LT_so/INPUT @@ -1,18 +1,18 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (System) -suffix autotest +suffix autotest -nbands 4 -stru_file STRU -kpoint_file KPT -pseudo_dir ../../PP_ORB -calculation scf -latname so +nbands 4 +stru_file STRU +kpoint_file KPT +pseudo_dir ../../PP_ORB +calculation scf +latname so #Parameters (PW) -ecutwfc 25.0 # Rydberg +ecutwfc 25.0 # Rydberg #Parameters (electronic) -basis_type pw -scf_thr 1e-10 +basis_type pw +scf_thr 1e-10 -cal_force 1 -cal_stress 1 +cal_force 1 +cal_stress 1 diff --git a/tests/01_PW/809_PW_LT_baco/INPUT b/tests/01_PW/809_PW_LT_baco/INPUT index 71684a8dbc..c135e74d7d 100644 --- a/tests/01_PW/809_PW_LT_baco/INPUT +++ b/tests/01_PW/809_PW_LT_baco/INPUT @@ -1,19 +1,19 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (System) -suffix autotest +suffix autotest -nbands 4 -stru_file STRU -kpoint_file KPT -pseudo_dir ../../PP_ORB -pw_seed 1 -calculation scf -latname baco +nbands 4 +stru_file STRU +kpoint_file KPT +pseudo_dir ../../PP_ORB +pw_seed 1 +calculation scf +latname baco #Parameters (PW) -ecutwfc 25.0 # Rydberg +ecutwfc 25.0 # Rydberg #Parameters (electronic) -basis_type pw -scf_thr 1e-10 +basis_type pw +scf_thr 1e-10 -cal_force 1 -cal_stress 1 +cal_force 1 +cal_stress 1 diff --git a/tests/01_PW/810_PW_LT_fco/INPUT b/tests/01_PW/810_PW_LT_fco/INPUT index 78c3e07e15..0267f2ba0b 100644 --- a/tests/01_PW/810_PW_LT_fco/INPUT +++ b/tests/01_PW/810_PW_LT_fco/INPUT @@ -1,18 +1,18 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (System) -suffix autotest +suffix autotest -nbands 4 -stru_file STRU -kpoint_file KPT -pseudo_dir ../../PP_ORB -calculation scf -latname fco +nbands 4 +stru_file STRU +kpoint_file KPT +pseudo_dir ../../PP_ORB +calculation scf +latname fco #Parameters (PW) -ecutwfc 25.0 # Rydberg +ecutwfc 25.0 # Rydberg #Parameters (electronic) -basis_type pw -scf_thr 1e-10 +basis_type pw +scf_thr 1e-10 -cal_force 1 -cal_stress 1 +cal_force 1 +cal_stress 1 diff --git a/tests/01_PW/811_PW_LT_bco/INPUT b/tests/01_PW/811_PW_LT_bco/INPUT index a21eea6871..c2d1e174da 100644 --- a/tests/01_PW/811_PW_LT_bco/INPUT +++ b/tests/01_PW/811_PW_LT_bco/INPUT @@ -1,19 +1,19 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (System) -suffix autotest +suffix autotest -nbands 4 -stru_file STRU -kpoint_file KPT -pseudo_dir ../../PP_ORB -pw_seed 1 -calculation scf -latname bco +nbands 4 +stru_file STRU +kpoint_file KPT +pseudo_dir ../../PP_ORB +pw_seed 1 +calculation scf +latname bco #Parameters (PW) -ecutwfc 25.0 # Rydberg +ecutwfc 25.0 # Rydberg #Parameters (electronic) -basis_type pw -scf_thr 1e-10 +basis_type pw +scf_thr 1e-10 -cal_force 1 -cal_stress 1 +cal_force 1 +cal_stress 1 diff --git a/tests/01_PW/812_PW_LT_sm/INPUT b/tests/01_PW/812_PW_LT_sm/INPUT index 9106aeceff..d9ea217c6a 100644 --- a/tests/01_PW/812_PW_LT_sm/INPUT +++ b/tests/01_PW/812_PW_LT_sm/INPUT @@ -1,18 +1,18 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (System) -suffix autotest +suffix autotest -nbands 4 -stru_file STRU -kpoint_file KPT -pseudo_dir ../../PP_ORB -calculation scf -latname sm +nbands 4 +stru_file STRU +kpoint_file KPT +pseudo_dir ../../PP_ORB +calculation scf +latname sm #Parameters (PW) -ecutwfc 25.0 # Rydberg +ecutwfc 25.0 # Rydberg #Parameters (electronic) -basis_type pw -scf_thr 1e-10 +basis_type pw +scf_thr 1e-10 -cal_force 1 -cal_stress 1 +cal_force 1 +cal_stress 1 diff --git a/tests/01_PW/813_PW_LT_bacm/INPUT b/tests/01_PW/813_PW_LT_bacm/INPUT index b0ef096ae8..0c7cfd3f9c 100644 --- a/tests/01_PW/813_PW_LT_bacm/INPUT +++ b/tests/01_PW/813_PW_LT_bacm/INPUT @@ -1,18 +1,18 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (System) -suffix autotest +suffix autotest -nbands 4 -stru_file STRU -kpoint_file KPT -pseudo_dir ../../PP_ORB -calculation scf -latname bacm +nbands 4 +stru_file STRU +kpoint_file KPT +pseudo_dir ../../PP_ORB +calculation scf +latname bacm #Parameters (PW) -ecutwfc 25.0 # Rydberg +ecutwfc 25.0 # Rydberg #Parameters (electronic) -basis_type pw -scf_thr 1e-10 +basis_type pw +scf_thr 1e-10 -cal_force 1 -cal_stress 1 +cal_force 1 +cal_stress 1 diff --git a/tests/01_PW/814_PW_LT_triclinic/INPUT b/tests/01_PW/814_PW_LT_triclinic/INPUT index c5503a2669..cadb15d1be 100644 --- a/tests/01_PW/814_PW_LT_triclinic/INPUT +++ b/tests/01_PW/814_PW_LT_triclinic/INPUT @@ -1,18 +1,18 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (System) -suffix autotest +suffix autotest -nbands 4 -stru_file STRU -kpoint_file KPT -pseudo_dir ../../PP_ORB -calculation scf -latname triclinic +nbands 4 +stru_file STRU +kpoint_file KPT +pseudo_dir ../../PP_ORB +calculation scf +latname triclinic #Parameters (PW) -ecutwfc 25.0 # Rydberg +ecutwfc 25.0 # Rydberg #Parameters (electronic) -basis_type pw -scf_thr 1e-10 +basis_type pw +scf_thr 1e-10 -cal_force 1 -cal_stress 1 +cal_force 1 +cal_stress 1 diff --git a/tests/01_PW/BUG_PW_AF_wfcinit/INPUT b/tests/01_PW/BUG_PW_AF_wfcinit/INPUT index 8735297f47..3a52fc5b62 100644 --- a/tests/01_PW/BUG_PW_AF_wfcinit/INPUT +++ b/tests/01_PW/BUG_PW_AF_wfcinit/INPUT @@ -1,31 +1,31 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS -nbands 10 +nbands 10 -calculation scf -ecutwfc 8 +calculation scf +ecutwfc 8 scf_thr 1.0e-10 scf_nmax 1 -smearing_method gaussian -smearing_sigma 0.02 +smearing_method gaussian +smearing_sigma 0.02 -mixing_type broyden -mixing_beta 0.4 +mixing_type broyden +mixing_beta 0.4 -ks_solver cg -basis_type pw -symmetry 0 -nspin 2 +ks_solver cg +basis_type pw +symmetry 0 +nspin 2 -suffix autotest -pseudo_dir ../../PP_ORB +suffix autotest +pseudo_dir ../../PP_ORB -pw_seed 1 +pw_seed 1 -kpar 2 +kpar 2 # out_wfc_pw 2 -init_wfc file -init_chg wfc +init_wfc file +init_chg wfc -read_file_dir . +read_file_dir . diff --git a/tests/01_PW/BUG_PW_BPCG/INPUT b/tests/01_PW/BUG_PW_BPCG/INPUT index fa0a0109da..456dfbe683 100644 --- a/tests/01_PW/BUG_PW_BPCG/INPUT +++ b/tests/01_PW/BUG_PW_BPCG/INPUT @@ -1,34 +1,34 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (General) -suffix autotest -pseudo_dir ../../PP_ORB -pw_seed 1 +suffix autotest +pseudo_dir ../../PP_ORB +pw_seed 1 -gamma_only 0 -calculation scf -symmetry 1 -out_level ie -smearing_method gaussian -smearing_sigma 0.02 +gamma_only 0 +calculation scf +symmetry 1 +out_level ie +smearing_method gaussian +smearing_sigma 0.02 #Parameters (3.PW) -ecutwfc 5 -scf_thr 1e-6 -scf_nmax 50 +ecutwfc 5 +scf_thr 1e-6 +scf_nmax 50 #Parameters (LCAO) -basis_type pw -ks_solver bpcg -device cpu -chg_extrap second-order -out_dm 0 -pw_diag_thr 0.00001 +basis_type pw +ks_solver bpcg +device cpu +chg_extrap second-order +out_dm 0 +pw_diag_thr 0.00001 -cal_force 1 +cal_force 1 #test_force 1 -cal_stress 1 +cal_stress 1 #test_stress 1 -mixing_type broyden -mixing_beta 0.4 -mixing_gg0 1.5 +mixing_type broyden +mixing_beta 0.4 +mixing_gg0 1.5 diff --git a/tests/01_PW/BUG_PW_BPCG_BP/INPUT b/tests/01_PW/BUG_PW_BPCG_BP/INPUT index 43dd00ab9f..c8bb9987c7 100644 --- a/tests/01_PW/BUG_PW_BPCG_BP/INPUT +++ b/tests/01_PW/BUG_PW_BPCG_BP/INPUT @@ -1,33 +1,33 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (General) -suffix autotest -pseudo_dir ../../PP_ORB -pw_seed 1 +suffix autotest +pseudo_dir ../../PP_ORB +pw_seed 1 -gamma_only 0 -calculation scf -symmetry 1 -out_level ie -smearing_method gaussian -smearing_sigma 0.02 +gamma_only 0 +calculation scf +symmetry 1 +out_level ie +smearing_method gaussian +smearing_sigma 0.02 #Parameters (3.PW) -ecutwfc 40 -scf_thr 1e-7 -scf_nmax 20 -bndpar 2 +ecutwfc 40 +scf_thr 1e-7 +scf_nmax 20 +bndpar 2 #Parameters (LCAO) -basis_type pw -ks_solver bpcg -device cpu -chg_extrap second-order -out_dm 0 -pw_diag_thr 0.00001 +basis_type pw +ks_solver bpcg +device cpu +chg_extrap second-order +out_dm 0 +pw_diag_thr 0.00001 -cal_force 1 -cal_stress 1 +cal_force 1 +cal_stress 1 -mixing_type broyden -mixing_beta 0.4 -mixing_gg0 1.5 +mixing_type broyden +mixing_beta 0.4 +mixing_gg0 1.5 diff --git a/tests/01_PW/CASES_CPU.txt b/tests/01_PW/CASES_CPU.txt index d5a9539192..57758718db 100644 --- a/tests/01_PW/CASES_CPU.txt +++ b/tests/01_PW/CASES_CPU.txt @@ -1,3 +1,7 @@ +nscf_out_pot +scf_out_elf +scf_out_ldos +scf_out_chg_tau 001_PW_UPF100_Al 002_PW_UPF100_RAPPE_Fe 003_PW_UPF100_USPP_Fe @@ -51,7 +55,6 @@ 051_PW_OBOD_MemSaver 052_PW_OB 053_PW_OD -054_PW_OP_nscf 055_PW_OW 056_PW_IW 057_PW_SO_IW @@ -69,7 +72,6 @@ 069_PW_CR_fix_bc 070_PW_CR_fix_c 071_PW_CR_move -072_PW_ELF 073_PW_SY 074_PW_SY_LiRH 075_PW_CHG_BINARY @@ -94,7 +96,8 @@ 094_PW_NPT 095_PW_NVT 096_PW_PBE0 -097_PW_LDOS +096_PW_PBE0_AFM +096_PW_PBE0_FM 098_PW_15_SO_avg 099_PW_DJ_SO 100_PW_W90 @@ -102,12 +105,12 @@ 102_PW_MD_2O 201_PW_UPF201_Ce_f 202_PW_ONCV_Libxc -203_PW_OK 204_PW_SY 205_PW_SCAN 206_PW_SCAN_S2 207_PW_skip 208_PW_CG_float +209_PW_DFTHALF 801_PW_LT_sc 802_PW_LT_fcc 803_PW_LT_bcc diff --git a/tests/01_PW/nscf_out_pot/INPUT b/tests/01_PW/nscf_out_pot/INPUT new file mode 100644 index 0000000000..63fd05c8cc --- /dev/null +++ b/tests/01_PW/nscf_out_pot/INPUT @@ -0,0 +1,27 @@ +INPUT_PARAMETERS +#Parameters (1.General) +suffix autotest +calculation nscf + +nbands 8 +symmetry 1 +out_pot 1 + +#Parameters (2.Iteration) +ecutwfc 5 +scf_thr 1e-9 +scf_nmax 100 + +#Parameters (3.Basis) +basis_type pw + +#Parameters (4.Smearing) +smearing_method gauss +smearing_sigma 0.002 + +#Parameters (5.Mixing) +mixing_type broyden +mixing_beta 0.7 + +read_file_dir ./ +pseudo_dir ../../PP_ORB diff --git a/tests/01_PW/203_PW_OK/KPT b/tests/01_PW/nscf_out_pot/KPT similarity index 100% rename from tests/01_PW/203_PW_OK/KPT rename to tests/01_PW/nscf_out_pot/KPT diff --git a/tests/01_PW/054_PW_OP_nscf/README b/tests/01_PW/nscf_out_pot/README similarity index 100% rename from tests/01_PW/054_PW_OP_nscf/README rename to tests/01_PW/nscf_out_pot/README diff --git a/tests/01_PW/054_PW_OP_nscf/STRU b/tests/01_PW/nscf_out_pot/STRU similarity index 100% rename from tests/01_PW/054_PW_OP_nscf/STRU rename to tests/01_PW/nscf_out_pot/STRU diff --git a/tests/01_PW/nscf_out_pot/chg.cube b/tests/01_PW/nscf_out_pot/chg.cube new file mode 100644 index 0000000000..cecb81ba06 --- /dev/null +++ b/tests/01_PW/nscf_out_pot/chg.cube @@ -0,0 +1,169 @@ +Ionic_Step 1 Cubefile created from ABACUS. Inner loop is z, followed by y and x +1 # number of spin directions 0.875066 # Fermi energy, in Ry +1 0.0 0.0 0.0 +9 0.495556 0.495556 0.000000 +9 0.495556 0.000000 0.495556 +9 0.000000 0.495556 0.495556 + 58 12 0.000000 0.000000 0.000000 + 1.890e-01 2.195e-01 2.017e-01 1.020e-01 4.045e-02 4.045e-02 + 1.020e-01 2.017e-01 2.195e-01 + 2.195e-01 2.182e-01 1.388e-01 5.561e-02 3.185e-02 5.561e-02 + 1.388e-01 2.182e-01 2.195e-01 + 2.017e-01 1.388e-01 6.355e-02 2.969e-02 2.969e-02 6.355e-02 + 1.388e-01 2.017e-01 2.182e-01 + 1.020e-01 5.561e-02 2.969e-02 2.343e-02 2.969e-02 5.561e-02 + 1.020e-01 1.388e-01 1.388e-01 + 4.045e-02 3.185e-02 2.969e-02 2.969e-02 3.185e-02 4.045e-02 + 5.561e-02 6.355e-02 5.561e-02 + 4.045e-02 5.561e-02 6.355e-02 5.561e-02 4.045e-02 3.185e-02 + 2.969e-02 2.969e-02 3.185e-02 + 1.020e-01 1.388e-01 1.388e-01 1.020e-01 5.561e-02 2.969e-02 + 2.343e-02 2.969e-02 5.561e-02 + 2.017e-01 2.182e-01 2.017e-01 1.388e-01 6.355e-02 2.969e-02 + 2.969e-02 6.355e-02 1.388e-01 + 2.195e-01 2.195e-01 2.182e-01 1.388e-01 5.561e-02 3.185e-02 + 5.561e-02 1.388e-01 2.182e-01 + 2.195e-01 2.182e-01 1.388e-01 5.561e-02 3.185e-02 5.561e-02 + 1.388e-01 2.182e-01 2.195e-01 + 2.182e-01 1.600e-01 7.431e-02 3.321e-02 3.321e-02 7.431e-02 + 1.600e-01 2.182e-01 2.259e-01 + 1.388e-01 7.431e-02 3.412e-02 2.462e-02 3.412e-02 7.431e-02 + 1.388e-01 1.815e-01 1.815e-01 + 5.561e-02 3.321e-02 2.462e-02 2.462e-02 3.321e-02 5.561e-02 + 8.704e-02 1.022e-01 8.704e-02 + 3.185e-02 3.321e-02 3.412e-02 3.321e-02 3.185e-02 3.527e-02 + 4.111e-02 4.111e-02 3.527e-02 + 5.561e-02 7.431e-02 7.431e-02 5.561e-02 3.527e-02 2.497e-02 + 2.220e-02 2.497e-02 3.527e-02 + 1.388e-01 1.600e-01 1.388e-01 8.704e-02 4.111e-02 2.220e-02 + 2.220e-02 4.111e-02 8.704e-02 + 2.182e-01 2.182e-01 1.815e-01 1.022e-01 4.111e-02 2.497e-02 + 4.111e-02 1.022e-01 1.815e-01 + 2.195e-01 2.259e-01 1.815e-01 8.704e-02 3.527e-02 3.527e-02 + 8.704e-02 1.815e-01 2.259e-01 + 2.017e-01 1.388e-01 6.355e-02 2.969e-02 2.969e-02 6.355e-02 + 1.388e-01 2.017e-01 2.182e-01 + 1.388e-01 7.431e-02 3.412e-02 2.462e-02 3.412e-02 7.431e-02 + 1.388e-01 1.815e-01 1.815e-01 + 6.355e-02 3.412e-02 2.257e-02 2.257e-02 3.412e-02 6.355e-02 + 1.022e-01 1.199e-01 1.022e-01 + 2.969e-02 2.462e-02 2.257e-02 2.462e-02 2.969e-02 4.111e-02 + 5.385e-02 5.385e-02 4.111e-02 + 2.969e-02 3.412e-02 3.412e-02 2.969e-02 2.497e-02 2.404e-02 + 2.439e-02 2.404e-02 2.497e-02 + 6.355e-02 7.431e-02 6.355e-02 4.111e-02 2.404e-02 1.667e-02 + 1.667e-02 2.404e-02 4.111e-02 + 1.388e-01 1.388e-01 1.022e-01 5.385e-02 2.439e-02 1.667e-02 + 2.439e-02 5.385e-02 1.022e-01 + 2.017e-01 1.815e-01 1.199e-01 5.385e-02 2.404e-02 2.404e-02 + 5.385e-02 1.199e-01 1.815e-01 + 2.182e-01 1.815e-01 1.022e-01 4.111e-02 2.497e-02 4.111e-02 + 1.022e-01 1.815e-01 2.182e-01 + 1.020e-01 5.561e-02 2.969e-02 2.343e-02 2.969e-02 5.561e-02 + 1.020e-01 1.388e-01 1.388e-01 + 5.561e-02 3.321e-02 2.462e-02 2.462e-02 3.321e-02 5.561e-02 + 8.704e-02 1.022e-01 8.704e-02 + 2.969e-02 2.462e-02 2.257e-02 2.462e-02 2.969e-02 4.111e-02 + 5.385e-02 5.385e-02 4.111e-02 + 2.343e-02 2.462e-02 2.462e-02 2.343e-02 2.220e-02 2.439e-02 + 2.630e-02 2.439e-02 2.220e-02 + 2.969e-02 3.321e-02 2.969e-02 2.220e-02 1.667e-02 1.442e-02 + 1.442e-02 1.667e-02 2.220e-02 + 5.561e-02 5.561e-02 4.111e-02 2.439e-02 1.442e-02 1.129e-02 + 1.442e-02 2.439e-02 4.111e-02 + 1.020e-01 8.704e-02 5.385e-02 2.630e-02 1.442e-02 1.442e-02 + 2.630e-02 5.385e-02 8.704e-02 + 1.388e-01 1.022e-01 5.385e-02 2.439e-02 1.667e-02 2.439e-02 + 5.385e-02 1.022e-01 1.388e-01 + 1.388e-01 8.704e-02 4.111e-02 2.220e-02 2.220e-02 4.111e-02 + 8.704e-02 1.388e-01 1.600e-01 + 4.045e-02 3.185e-02 2.969e-02 2.969e-02 3.185e-02 4.045e-02 + 5.561e-02 6.355e-02 5.561e-02 + 3.185e-02 3.321e-02 3.412e-02 3.321e-02 3.185e-02 3.527e-02 + 4.111e-02 4.111e-02 3.527e-02 + 2.969e-02 3.412e-02 3.412e-02 2.969e-02 2.497e-02 2.404e-02 + 2.439e-02 2.404e-02 2.497e-02 + 2.969e-02 3.321e-02 2.969e-02 2.220e-02 1.667e-02 1.442e-02 + 1.442e-02 1.667e-02 2.220e-02 + 3.185e-02 3.185e-02 2.497e-02 1.667e-02 1.129e-02 9.429e-03 + 1.129e-02 1.667e-02 2.497e-02 + 4.045e-02 3.527e-02 2.404e-02 1.442e-02 9.429e-03 9.429e-03 + 1.442e-02 2.404e-02 3.527e-02 + 5.561e-02 4.111e-02 2.439e-02 1.442e-02 1.129e-02 1.442e-02 + 2.439e-02 4.111e-02 5.561e-02 + 6.355e-02 4.111e-02 2.404e-02 1.667e-02 1.667e-02 2.404e-02 + 4.111e-02 6.355e-02 7.431e-02 + 5.561e-02 3.527e-02 2.497e-02 2.220e-02 2.497e-02 3.527e-02 + 5.561e-02 7.431e-02 7.431e-02 + 4.045e-02 5.561e-02 6.355e-02 5.561e-02 4.045e-02 3.185e-02 + 2.969e-02 2.969e-02 3.185e-02 + 5.561e-02 7.431e-02 7.431e-02 5.561e-02 3.527e-02 2.497e-02 + 2.220e-02 2.497e-02 3.527e-02 + 6.355e-02 7.431e-02 6.355e-02 4.111e-02 2.404e-02 1.667e-02 + 1.667e-02 2.404e-02 4.111e-02 + 5.561e-02 5.561e-02 4.111e-02 2.439e-02 1.442e-02 1.129e-02 + 1.442e-02 2.439e-02 4.111e-02 + 4.045e-02 3.527e-02 2.404e-02 1.442e-02 9.429e-03 9.429e-03 + 1.442e-02 2.404e-02 3.527e-02 + 3.185e-02 2.497e-02 1.667e-02 1.129e-02 9.429e-03 1.129e-02 + 1.667e-02 2.497e-02 3.185e-02 + 2.969e-02 2.220e-02 1.667e-02 1.442e-02 1.442e-02 1.667e-02 + 2.220e-02 2.969e-02 3.321e-02 + 2.969e-02 2.497e-02 2.404e-02 2.439e-02 2.404e-02 2.497e-02 + 2.969e-02 3.412e-02 3.412e-02 + 3.185e-02 3.527e-02 4.111e-02 4.111e-02 3.527e-02 3.185e-02 + 3.321e-02 3.412e-02 3.321e-02 + 1.020e-01 1.388e-01 1.388e-01 1.020e-01 5.561e-02 2.969e-02 + 2.343e-02 2.969e-02 5.561e-02 + 1.388e-01 1.600e-01 1.388e-01 8.704e-02 4.111e-02 2.220e-02 + 2.220e-02 4.111e-02 8.704e-02 + 1.388e-01 1.388e-01 1.022e-01 5.385e-02 2.439e-02 1.667e-02 + 2.439e-02 5.385e-02 1.022e-01 + 1.020e-01 8.704e-02 5.385e-02 2.630e-02 1.442e-02 1.442e-02 + 2.630e-02 5.385e-02 8.704e-02 + 5.561e-02 4.111e-02 2.439e-02 1.442e-02 1.129e-02 1.442e-02 + 2.439e-02 4.111e-02 5.561e-02 + 2.969e-02 2.220e-02 1.667e-02 1.442e-02 1.442e-02 1.667e-02 + 2.220e-02 2.969e-02 3.321e-02 + 2.343e-02 2.220e-02 2.439e-02 2.630e-02 2.439e-02 2.220e-02 + 2.343e-02 2.462e-02 2.462e-02 + 2.969e-02 4.111e-02 5.385e-02 5.385e-02 4.111e-02 2.969e-02 + 2.462e-02 2.257e-02 2.462e-02 + 5.561e-02 8.704e-02 1.022e-01 8.704e-02 5.561e-02 3.321e-02 + 2.462e-02 2.462e-02 3.321e-02 + 2.017e-01 2.182e-01 2.017e-01 1.388e-01 6.355e-02 2.969e-02 + 2.969e-02 6.355e-02 1.388e-01 + 2.182e-01 2.182e-01 1.815e-01 1.022e-01 4.111e-02 2.497e-02 + 4.111e-02 1.022e-01 1.815e-01 + 2.017e-01 1.815e-01 1.199e-01 5.385e-02 2.404e-02 2.404e-02 + 5.385e-02 1.199e-01 1.815e-01 + 1.388e-01 1.022e-01 5.385e-02 2.439e-02 1.667e-02 2.439e-02 + 5.385e-02 1.022e-01 1.388e-01 + 6.355e-02 4.111e-02 2.404e-02 1.667e-02 1.667e-02 2.404e-02 + 4.111e-02 6.355e-02 7.431e-02 + 2.969e-02 2.497e-02 2.404e-02 2.439e-02 2.404e-02 2.497e-02 + 2.969e-02 3.412e-02 3.412e-02 + 2.969e-02 4.111e-02 5.385e-02 5.385e-02 4.111e-02 2.969e-02 + 2.462e-02 2.257e-02 2.462e-02 + 6.355e-02 1.022e-01 1.199e-01 1.022e-01 6.355e-02 3.412e-02 + 2.257e-02 2.257e-02 3.412e-02 + 1.388e-01 1.815e-01 1.815e-01 1.388e-01 7.431e-02 3.412e-02 + 2.462e-02 3.412e-02 7.431e-02 + 2.195e-01 2.195e-01 2.182e-01 1.388e-01 5.561e-02 3.185e-02 + 5.561e-02 1.388e-01 2.182e-01 + 2.195e-01 2.259e-01 1.815e-01 8.704e-02 3.527e-02 3.527e-02 + 8.704e-02 1.815e-01 2.259e-01 + 2.182e-01 1.815e-01 1.022e-01 4.111e-02 2.497e-02 4.111e-02 + 1.022e-01 1.815e-01 2.182e-01 + 1.388e-01 8.704e-02 4.111e-02 2.220e-02 2.220e-02 4.111e-02 + 8.704e-02 1.388e-01 1.600e-01 + 5.561e-02 3.527e-02 2.497e-02 2.220e-02 2.497e-02 3.527e-02 + 5.561e-02 7.431e-02 7.431e-02 + 3.185e-02 3.527e-02 4.111e-02 4.111e-02 3.527e-02 3.185e-02 + 3.321e-02 3.412e-02 3.321e-02 + 5.561e-02 8.704e-02 1.022e-01 8.704e-02 5.561e-02 3.321e-02 + 2.462e-02 2.462e-02 3.321e-02 + 1.388e-01 1.815e-01 1.815e-01 1.388e-01 7.431e-02 3.412e-02 + 2.462e-02 3.412e-02 7.431e-02 + 2.182e-01 2.259e-01 2.182e-01 1.600e-01 7.431e-02 3.321e-02 + 3.321e-02 7.431e-02 1.600e-01 diff --git a/tests/01_PW/nscf_out_pot/pot.cube.ref b/tests/01_PW/nscf_out_pot/pot.cube.ref new file mode 100644 index 0000000000..b7de1a905e --- /dev/null +++ b/tests/01_PW/nscf_out_pot/pot.cube.ref @@ -0,0 +1,169 @@ +Ionic_Step 0 Cubefile created from ABACUS. Inner loop is z, followed by y and x +1 # number of spin directions +1 0.0 0.0 0.0 +9 0.000000 0.495556 0.495556 +9 0.495556 0.000000 0.495556 +9 0.495556 0.495556 0.000000 + 58 12 0.000000 0.000000 0.000000 + -1.062e+01 -9.235e+00 -4.737e+00 -1.499e+00 -4.977e-01 -4.977e-01 + -1.499e+00 -4.737e+00 -9.235e+00 + -9.235e+00 -5.730e+00 -2.164e+00 -1.677e-01 -2.142e-01 -1.677e-01 + -2.164e+00 -5.730e+00 -9.235e+00 + -4.737e+00 -2.164e+00 -3.686e-01 2.721e-01 2.721e-01 -3.686e-01 + -2.164e+00 -4.737e+00 -5.730e+00 + -1.499e+00 -1.677e-01 2.721e-01 -8.136e-02 2.721e-01 -1.677e-01 + -1.499e+00 -2.164e+00 -2.164e+00 + -4.977e-01 -2.142e-01 2.721e-01 2.721e-01 -2.142e-01 -4.977e-01 + -1.677e-01 -3.686e-01 -1.677e-01 + -4.977e-01 -1.677e-01 -3.686e-01 -1.677e-01 -4.977e-01 -2.142e-01 + 2.721e-01 2.721e-01 -2.142e-01 + -1.499e+00 -2.164e+00 -2.164e+00 -1.499e+00 -1.677e-01 2.721e-01 + -8.136e-02 2.721e-01 -1.677e-01 + -4.737e+00 -5.730e+00 -4.737e+00 -2.164e+00 -3.686e-01 2.721e-01 + 2.721e-01 -3.686e-01 -2.164e+00 + -9.235e+00 -9.235e+00 -5.730e+00 -2.164e+00 -1.677e-01 -2.142e-01 + -1.677e-01 -2.164e+00 -5.730e+00 + -9.235e+00 -5.730e+00 -2.164e+00 -1.677e-01 -2.142e-01 -1.677e-01 + -2.164e+00 -5.730e+00 -9.235e+00 + -5.730e+00 -3.008e+00 -7.149e-01 -1.812e-02 -1.812e-02 -7.149e-01 + -3.008e+00 -5.730e+00 -7.413e+00 + -2.164e+00 -7.149e-01 -6.406e-01 -7.591e-02 -6.406e-01 -7.149e-01 + -2.164e+00 -3.522e+00 -3.522e+00 + -1.677e-01 -1.812e-02 -7.591e-02 -7.591e-02 -1.812e-02 -1.677e-01 + -7.444e-01 -1.330e+00 -7.444e-01 + -2.142e-01 -1.812e-02 -6.406e-01 -1.812e-02 -2.142e-01 -3.052e-02 + -2.428e-01 -2.428e-01 -3.052e-02 + -1.677e-01 -7.149e-01 -7.149e-01 -1.677e-01 -3.052e-02 -2.155e-01 + 2.945e-01 -2.155e-01 -3.052e-02 + -2.164e+00 -3.008e+00 -2.164e+00 -7.444e-01 -2.428e-01 2.945e-01 + 2.945e-01 -2.428e-01 -7.444e-01 + -5.730e+00 -5.730e+00 -3.522e+00 -1.330e+00 -2.428e-01 -2.155e-01 + -2.428e-01 -1.330e+00 -3.522e+00 + -9.235e+00 -7.413e+00 -3.522e+00 -7.444e-01 -3.052e-02 -3.052e-02 + -7.444e-01 -3.522e+00 -7.413e+00 + -4.737e+00 -2.164e+00 -3.686e-01 2.721e-01 2.721e-01 -3.686e-01 + -2.164e+00 -4.737e+00 -5.730e+00 + -2.164e+00 -7.149e-01 -6.406e-01 -7.591e-02 -6.406e-01 -7.149e-01 + -2.164e+00 -3.522e+00 -3.522e+00 + -3.686e-01 -6.406e-01 -1.414e-01 -1.414e-01 -6.406e-01 -3.686e-01 + -1.330e+00 -2.179e+00 -1.330e+00 + 2.721e-01 -7.591e-02 -1.414e-01 -7.591e-02 2.721e-01 -2.428e-01 + -3.420e-01 -3.420e-01 -2.428e-01 + 2.721e-01 -6.406e-01 -6.406e-01 2.721e-01 -2.155e-01 -1.209e-01 + 2.107e-01 -1.209e-01 -2.155e-01 + -3.686e-01 -7.149e-01 -3.686e-01 -2.428e-01 -1.209e-01 1.346e-01 + 1.346e-01 -1.209e-01 -2.428e-01 + -2.164e+00 -2.164e+00 -1.330e+00 -3.420e-01 2.107e-01 1.346e-01 + 2.107e-01 -3.420e-01 -1.330e+00 + -4.737e+00 -3.522e+00 -2.179e+00 -3.420e-01 -1.209e-01 -1.209e-01 + -3.420e-01 -2.179e+00 -3.522e+00 + -5.730e+00 -3.522e+00 -1.330e+00 -2.428e-01 -2.155e-01 -2.428e-01 + -1.330e+00 -3.522e+00 -5.730e+00 + -1.499e+00 -1.677e-01 2.721e-01 -8.136e-02 2.721e-01 -1.677e-01 + -1.499e+00 -2.164e+00 -2.164e+00 + -1.677e-01 -1.812e-02 -7.591e-02 -7.591e-02 -1.812e-02 -1.677e-01 + -7.444e-01 -1.330e+00 -7.444e-01 + 2.721e-01 -7.591e-02 -1.414e-01 -7.591e-02 2.721e-01 -2.428e-01 + -3.420e-01 -3.420e-01 -2.428e-01 + -8.136e-02 -7.591e-02 -7.591e-02 -8.136e-02 2.945e-01 2.107e-01 + 5.110e-01 2.107e-01 2.945e-01 + 2.721e-01 -1.812e-02 2.721e-01 2.945e-01 1.346e-01 7.844e-01 + 7.844e-01 1.346e-01 2.945e-01 + -1.677e-01 -1.677e-01 -2.428e-01 2.107e-01 7.844e-01 3.880e-01 + 7.844e-01 2.107e-01 -2.428e-01 + -1.499e+00 -7.444e-01 -3.420e-01 5.110e-01 7.844e-01 7.844e-01 + 5.110e-01 -3.420e-01 -7.444e-01 + -2.164e+00 -1.330e+00 -3.420e-01 2.107e-01 1.346e-01 2.107e-01 + -3.420e-01 -1.330e+00 -2.164e+00 + -2.164e+00 -7.444e-01 -2.428e-01 2.945e-01 2.945e-01 -2.428e-01 + -7.444e-01 -2.164e+00 -3.008e+00 + -4.977e-01 -2.142e-01 2.721e-01 2.721e-01 -2.142e-01 -4.977e-01 + -1.677e-01 -3.686e-01 -1.677e-01 + -2.142e-01 -1.812e-02 -6.406e-01 -1.812e-02 -2.142e-01 -3.052e-02 + -2.428e-01 -2.428e-01 -3.052e-02 + 2.721e-01 -6.406e-01 -6.406e-01 2.721e-01 -2.155e-01 -1.209e-01 + 2.107e-01 -1.209e-01 -2.155e-01 + 2.721e-01 -1.812e-02 2.721e-01 2.945e-01 1.346e-01 7.844e-01 + 7.844e-01 1.346e-01 2.945e-01 + -2.142e-01 -2.142e-01 -2.155e-01 1.346e-01 3.880e-01 2.863e-01 + 3.880e-01 1.346e-01 -2.155e-01 + -4.977e-01 -3.052e-02 -1.209e-01 7.844e-01 2.863e-01 2.863e-01 + 7.844e-01 -1.209e-01 -3.052e-02 + -1.677e-01 -2.428e-01 2.107e-01 7.844e-01 3.880e-01 7.844e-01 + 2.107e-01 -2.428e-01 -1.677e-01 + -3.686e-01 -2.428e-01 -1.209e-01 1.346e-01 1.346e-01 -1.209e-01 + -2.428e-01 -3.686e-01 -7.149e-01 + -1.677e-01 -3.052e-02 -2.155e-01 2.945e-01 -2.155e-01 -3.052e-02 + -1.677e-01 -7.149e-01 -7.149e-01 + -4.977e-01 -1.677e-01 -3.686e-01 -1.677e-01 -4.977e-01 -2.142e-01 + 2.721e-01 2.721e-01 -2.142e-01 + -1.677e-01 -7.149e-01 -7.149e-01 -1.677e-01 -3.052e-02 -2.155e-01 + 2.945e-01 -2.155e-01 -3.052e-02 + -3.686e-01 -7.149e-01 -3.686e-01 -2.428e-01 -1.209e-01 1.346e-01 + 1.346e-01 -1.209e-01 -2.428e-01 + -1.677e-01 -1.677e-01 -2.428e-01 2.107e-01 7.844e-01 3.880e-01 + 7.844e-01 2.107e-01 -2.428e-01 + -4.977e-01 -3.052e-02 -1.209e-01 7.844e-01 2.863e-01 2.863e-01 + 7.844e-01 -1.209e-01 -3.052e-02 + -2.142e-01 -2.155e-01 1.346e-01 3.880e-01 2.863e-01 3.880e-01 + 1.346e-01 -2.155e-01 -2.142e-01 + 2.721e-01 2.945e-01 1.346e-01 7.844e-01 7.844e-01 1.346e-01 + 2.945e-01 2.721e-01 -1.812e-02 + 2.721e-01 -2.155e-01 -1.209e-01 2.107e-01 -1.209e-01 -2.155e-01 + 2.721e-01 -6.406e-01 -6.406e-01 + -2.142e-01 -3.052e-02 -2.428e-01 -2.428e-01 -3.052e-02 -2.142e-01 + -1.812e-02 -6.406e-01 -1.812e-02 + -1.499e+00 -2.164e+00 -2.164e+00 -1.499e+00 -1.677e-01 2.721e-01 + -8.136e-02 2.721e-01 -1.677e-01 + -2.164e+00 -3.008e+00 -2.164e+00 -7.444e-01 -2.428e-01 2.945e-01 + 2.945e-01 -2.428e-01 -7.444e-01 + -2.164e+00 -2.164e+00 -1.330e+00 -3.420e-01 2.107e-01 1.346e-01 + 2.107e-01 -3.420e-01 -1.330e+00 + -1.499e+00 -7.444e-01 -3.420e-01 5.110e-01 7.844e-01 7.844e-01 + 5.110e-01 -3.420e-01 -7.444e-01 + -1.677e-01 -2.428e-01 2.107e-01 7.844e-01 3.880e-01 7.844e-01 + 2.107e-01 -2.428e-01 -1.677e-01 + 2.721e-01 2.945e-01 1.346e-01 7.844e-01 7.844e-01 1.346e-01 + 2.945e-01 2.721e-01 -1.812e-02 + -8.136e-02 2.945e-01 2.107e-01 5.110e-01 2.107e-01 2.945e-01 + -8.136e-02 -7.591e-02 -7.591e-02 + 2.721e-01 -2.428e-01 -3.420e-01 -3.420e-01 -2.428e-01 2.721e-01 + -7.591e-02 -1.414e-01 -7.591e-02 + -1.677e-01 -7.444e-01 -1.330e+00 -7.444e-01 -1.677e-01 -1.812e-02 + -7.591e-02 -7.591e-02 -1.812e-02 + -4.737e+00 -5.730e+00 -4.737e+00 -2.164e+00 -3.686e-01 2.721e-01 + 2.721e-01 -3.686e-01 -2.164e+00 + -5.730e+00 -5.730e+00 -3.522e+00 -1.330e+00 -2.428e-01 -2.155e-01 + -2.428e-01 -1.330e+00 -3.522e+00 + -4.737e+00 -3.522e+00 -2.179e+00 -3.420e-01 -1.209e-01 -1.209e-01 + -3.420e-01 -2.179e+00 -3.522e+00 + -2.164e+00 -1.330e+00 -3.420e-01 2.107e-01 1.346e-01 2.107e-01 + -3.420e-01 -1.330e+00 -2.164e+00 + -3.686e-01 -2.428e-01 -1.209e-01 1.346e-01 1.346e-01 -1.209e-01 + -2.428e-01 -3.686e-01 -7.149e-01 + 2.721e-01 -2.155e-01 -1.209e-01 2.107e-01 -1.209e-01 -2.155e-01 + 2.721e-01 -6.406e-01 -6.406e-01 + 2.721e-01 -2.428e-01 -3.420e-01 -3.420e-01 -2.428e-01 2.721e-01 + -7.591e-02 -1.414e-01 -7.591e-02 + -3.686e-01 -1.330e+00 -2.179e+00 -1.330e+00 -3.686e-01 -6.406e-01 + -1.414e-01 -1.414e-01 -6.406e-01 + -2.164e+00 -3.522e+00 -3.522e+00 -2.164e+00 -7.149e-01 -6.406e-01 + -7.591e-02 -6.406e-01 -7.149e-01 + -9.235e+00 -9.235e+00 -5.730e+00 -2.164e+00 -1.677e-01 -2.142e-01 + -1.677e-01 -2.164e+00 -5.730e+00 + -9.235e+00 -7.413e+00 -3.522e+00 -7.444e-01 -3.052e-02 -3.052e-02 + -7.444e-01 -3.522e+00 -7.413e+00 + -5.730e+00 -3.522e+00 -1.330e+00 -2.428e-01 -2.155e-01 -2.428e-01 + -1.330e+00 -3.522e+00 -5.730e+00 + -2.164e+00 -7.444e-01 -2.428e-01 2.945e-01 2.945e-01 -2.428e-01 + -7.444e-01 -2.164e+00 -3.008e+00 + -1.677e-01 -3.052e-02 -2.155e-01 2.945e-01 -2.155e-01 -3.052e-02 + -1.677e-01 -7.149e-01 -7.149e-01 + -2.142e-01 -3.052e-02 -2.428e-01 -2.428e-01 -3.052e-02 -2.142e-01 + -1.812e-02 -6.406e-01 -1.812e-02 + -1.677e-01 -7.444e-01 -1.330e+00 -7.444e-01 -1.677e-01 -1.812e-02 + -7.591e-02 -7.591e-02 -1.812e-02 + -2.164e+00 -3.522e+00 -3.522e+00 -2.164e+00 -7.149e-01 -6.406e-01 + -7.591e-02 -6.406e-01 -7.149e-01 + -5.730e+00 -7.413e+00 -5.730e+00 -3.008e+00 -7.149e-01 -1.812e-02 + -1.812e-02 -7.149e-01 -3.008e+00 diff --git a/tests/01_PW/054_PW_OP_nscf/result.ref b/tests/01_PW/nscf_out_pot/result.ref similarity index 100% rename from tests/01_PW/054_PW_OP_nscf/result.ref rename to tests/01_PW/nscf_out_pot/result.ref diff --git a/tests/01_PW/scf_out_chg_tau/INPUT b/tests/01_PW/scf_out_chg_tau/INPUT new file mode 100644 index 0000000000..e3e4345fe5 --- /dev/null +++ b/tests/01_PW/scf_out_chg_tau/INPUT @@ -0,0 +1,30 @@ +INPUT_PARAMETERS +#Parameters (1.General) +suffix autotest +calculation scf + +nbands 6 +symmetry 0 +pseudo_dir ../../PP_ORB + +#Parameters (2.Iteration) +ecutwfc 20 +scf_thr 1e-8 +scf_nmax 100 +kpar 2 + +out_chg 1 +dft_functional scan +pw_diag_thr 0.00001 + +#Parameters (3.Basis) +basis_type pw + +#Parameters (4.Smearing) +smearing_method gauss +smearing_sigma 0.002 + +#Parameters (5.Mixing) +mixing_type plain +mixing_beta 0.7 +mixing_gg0 0.0 diff --git a/tests/03_NAO_multik/01_NO_KP_15f_ODM/KPT b/tests/01_PW/scf_out_chg_tau/KPT similarity index 100% rename from tests/03_NAO_multik/01_NO_KP_15f_ODM/KPT rename to tests/01_PW/scf_out_chg_tau/KPT diff --git a/tests/01_PW/203_PW_OK/README b/tests/01_PW/scf_out_chg_tau/README similarity index 100% rename from tests/01_PW/203_PW_OK/README rename to tests/01_PW/scf_out_chg_tau/README diff --git a/tests/01_PW/203_PW_OK/STRU b/tests/01_PW/scf_out_chg_tau/STRU similarity index 100% rename from tests/01_PW/203_PW_OK/STRU rename to tests/01_PW/scf_out_chg_tau/STRU diff --git a/tests/01_PW/scf_out_chg_tau/chg.cube.ref b/tests/01_PW/scf_out_chg_tau/chg.cube.ref new file mode 100644 index 0000000000..f1fb5a544f --- /dev/null +++ b/tests/01_PW/scf_out_chg_tau/chg.cube.ref @@ -0,0 +1,2312 @@ +Ionic_Step 1 Cubefile created from ABACUS. Inner loop is z, followed by y and x +1 # number of spin directions 0.517574 # Fermi energy, in Ry +2 0.0 0.0 0.0 +24 0.000000 0.212500 0.212500 +24 0.212500 0.000000 0.212500 +24 0.212500 0.212500 0.000000 + 14 4.000000 0.000000 0.000000 0.000000 + 14 4.000000 2.550000 2.550000 2.550000 + 6.306e-04 4.526e-03 1.770e-02 3.853e-02 5.728e-02 6.466e-02 + 6.053e-02 5.116e-02 4.192e-02 3.468e-02 2.936e-02 2.589e-02 + 2.464e-02 2.589e-02 2.936e-02 3.468e-02 4.192e-02 5.116e-02 + 6.053e-02 6.466e-02 5.728e-02 3.853e-02 1.770e-02 4.526e-03 + 4.526e-03 1.527e-02 3.604e-02 5.903e-02 7.277e-02 7.300e-02 + 6.459e-02 5.434e-02 4.565e-02 3.895e-02 3.401e-02 3.122e-02 + 3.122e-02 3.401e-02 3.895e-02 4.565e-02 5.434e-02 6.459e-02 + 7.300e-02 7.277e-02 5.903e-02 3.604e-02 1.527e-02 4.526e-03 + 1.770e-02 3.604e-02 5.962e-02 7.727e-02 8.198e-02 7.603e-02 + 6.613e-02 5.689e-02 4.939e-02 4.330e-02 3.892e-02 3.728e-02 + 3.892e-02 4.330e-02 4.939e-02 5.689e-02 6.613e-02 7.603e-02 + 8.198e-02 7.727e-02 5.962e-02 3.604e-02 1.770e-02 1.115e-02 + 3.853e-02 5.903e-02 7.727e-02 8.528e-02 8.268e-02 7.478e-02 + 6.639e-02 5.911e-02 5.260e-02 4.693e-02 4.341e-02 4.341e-02 + 4.693e-02 5.260e-02 5.911e-02 6.639e-02 7.478e-02 8.268e-02 + 8.528e-02 7.727e-02 5.903e-02 3.853e-02 2.556e-02 2.556e-02 + 5.728e-02 7.277e-02 8.198e-02 8.268e-02 7.798e-02 7.190e-02 + 6.613e-02 6.025e-02 5.398e-02 4.868e-02 4.655e-02 4.868e-02 + 5.398e-02 6.025e-02 6.613e-02 7.190e-02 7.798e-02 8.268e-02 + 8.198e-02 7.277e-02 5.728e-02 4.294e-02 3.719e-02 4.294e-02 + 6.466e-02 7.300e-02 7.603e-02 7.478e-02 7.190e-02 6.870e-02 + 6.459e-02 5.881e-02 5.237e-02 4.798e-02 4.798e-02 5.237e-02 + 5.881e-02 6.459e-02 6.870e-02 7.190e-02 7.478e-02 7.603e-02 + 7.300e-02 6.466e-02 5.397e-02 4.650e-02 4.650e-02 5.397e-02 + 6.053e-02 6.459e-02 6.613e-02 6.639e-02 6.613e-02 6.459e-02 + 6.053e-02 5.421e-02 4.821e-02 4.573e-02 4.821e-02 5.421e-02 + 6.053e-02 6.459e-02 6.613e-02 6.639e-02 6.613e-02 6.459e-02 + 6.053e-02 5.421e-02 4.821e-02 4.573e-02 4.821e-02 5.421e-02 + 5.116e-02 5.434e-02 5.689e-02 5.911e-02 6.025e-02 5.881e-02 + 5.421e-02 4.814e-02 4.385e-02 4.385e-02 4.814e-02 5.421e-02 + 5.881e-02 6.025e-02 5.911e-02 5.689e-02 5.434e-02 5.116e-02 + 4.707e-02 4.283e-02 4.006e-02 4.006e-02 4.283e-02 4.707e-02 + 4.192e-02 4.565e-02 4.939e-02 5.260e-02 5.398e-02 5.237e-02 + 4.821e-02 4.385e-02 4.201e-02 4.385e-02 4.821e-02 5.237e-02 + 5.398e-02 5.260e-02 4.939e-02 4.565e-02 4.192e-02 3.820e-02 + 3.469e-02 3.206e-02 3.107e-02 3.206e-02 3.469e-02 3.820e-02 + 3.468e-02 3.895e-02 4.330e-02 4.693e-02 4.868e-02 4.798e-02 + 4.573e-02 4.385e-02 4.385e-02 4.573e-02 4.798e-02 4.868e-02 + 4.693e-02 4.330e-02 3.895e-02 3.468e-02 3.074e-02 2.728e-02 + 2.460e-02 2.313e-02 2.313e-02 2.460e-02 2.728e-02 3.074e-02 + 2.936e-02 3.401e-02 3.892e-02 4.341e-02 4.655e-02 4.798e-02 + 4.821e-02 4.814e-02 4.821e-02 4.798e-02 4.655e-02 4.341e-02 + 3.892e-02 3.401e-02 2.936e-02 2.524e-02 2.171e-02 1.893e-02 + 1.714e-02 1.653e-02 1.714e-02 1.893e-02 2.171e-02 2.524e-02 + 2.589e-02 3.122e-02 3.728e-02 4.341e-02 4.868e-02 5.237e-02 + 5.421e-02 5.421e-02 5.237e-02 4.868e-02 4.341e-02 3.728e-02 + 3.122e-02 2.589e-02 2.145e-02 1.781e-02 1.495e-02 1.296e-02 + 1.196e-02 1.196e-02 1.296e-02 1.495e-02 1.781e-02 2.145e-02 + 2.464e-02 3.122e-02 3.892e-02 4.693e-02 5.398e-02 5.881e-02 + 6.053e-02 5.881e-02 5.398e-02 4.693e-02 3.892e-02 3.122e-02 + 2.464e-02 1.942e-02 1.538e-02 1.232e-02 1.016e-02 8.892e-03 + 8.479e-03 8.892e-03 1.016e-02 1.232e-02 1.538e-02 1.942e-02 + 2.589e-02 3.401e-02 4.330e-02 5.260e-02 6.025e-02 6.459e-02 + 6.459e-02 6.025e-02 5.260e-02 4.330e-02 3.401e-02 2.589e-02 + 1.942e-02 1.453e-02 1.096e-02 8.487e-03 6.959e-03 6.247e-03 + 6.247e-03 6.959e-03 8.487e-03 1.096e-02 1.453e-02 1.942e-02 + 2.936e-02 3.895e-02 4.939e-02 5.911e-02 6.613e-02 6.870e-02 + 6.613e-02 5.911e-02 4.939e-02 3.895e-02 2.936e-02 2.145e-02 + 1.538e-02 1.096e-02 7.921e-03 6.008e-03 4.997e-03 4.689e-03 + 4.997e-03 6.008e-03 7.921e-03 1.096e-02 1.538e-02 2.145e-02 + 3.468e-02 4.565e-02 5.689e-02 6.639e-02 7.190e-02 7.190e-02 + 6.639e-02 5.689e-02 4.565e-02 3.468e-02 2.524e-02 1.781e-02 + 1.232e-02 8.487e-03 6.008e-03 4.595e-03 3.979e-03 3.979e-03 + 4.595e-03 6.008e-03 8.487e-03 1.232e-02 1.781e-02 2.524e-02 + 4.192e-02 5.434e-02 6.613e-02 7.478e-02 7.798e-02 7.478e-02 + 6.613e-02 5.434e-02 4.192e-02 3.074e-02 2.171e-02 1.495e-02 + 1.016e-02 6.959e-03 4.997e-03 3.979e-03 3.671e-03 3.979e-03 + 4.997e-03 6.959e-03 1.016e-02 1.495e-02 2.171e-02 3.074e-02 + 5.116e-02 6.459e-02 7.603e-02 8.268e-02 8.268e-02 7.603e-02 + 6.459e-02 5.116e-02 3.820e-02 2.728e-02 1.893e-02 1.296e-02 + 8.892e-03 6.247e-03 4.689e-03 3.979e-03 3.979e-03 4.689e-03 + 6.247e-03 8.892e-03 1.296e-02 1.893e-02 2.728e-02 3.820e-02 + 6.053e-02 7.300e-02 8.198e-02 8.528e-02 8.198e-02 7.300e-02 + 6.053e-02 4.707e-02 3.469e-02 2.460e-02 1.714e-02 1.196e-02 + 8.479e-03 6.247e-03 4.997e-03 4.595e-03 4.997e-03 6.247e-03 + 8.479e-03 1.196e-02 1.714e-02 2.460e-02 3.469e-02 4.707e-02 + 6.466e-02 7.277e-02 7.727e-02 7.727e-02 7.277e-02 6.466e-02 + 5.421e-02 4.283e-02 3.206e-02 2.313e-02 1.653e-02 1.196e-02 + 8.892e-03 6.959e-03 6.008e-03 6.008e-03 6.959e-03 8.892e-03 + 1.196e-02 1.653e-02 2.313e-02 3.206e-02 4.283e-02 5.421e-02 + 5.728e-02 5.903e-02 5.962e-02 5.903e-02 5.728e-02 5.397e-02 + 4.821e-02 4.006e-02 3.107e-02 2.313e-02 1.714e-02 1.296e-02 + 1.016e-02 8.487e-03 7.921e-03 8.487e-03 1.016e-02 1.296e-02 + 1.714e-02 2.313e-02 3.107e-02 4.006e-02 4.821e-02 5.397e-02 + 3.853e-02 3.604e-02 3.604e-02 3.853e-02 4.294e-02 4.650e-02 + 4.573e-02 4.006e-02 3.206e-02 2.460e-02 1.893e-02 1.495e-02 + 1.232e-02 1.096e-02 1.096e-02 1.232e-02 1.495e-02 1.893e-02 + 2.460e-02 3.206e-02 4.006e-02 4.573e-02 4.650e-02 4.294e-02 + 1.770e-02 1.527e-02 1.770e-02 2.556e-02 3.719e-02 4.650e-02 + 4.821e-02 4.283e-02 3.469e-02 2.728e-02 2.171e-02 1.781e-02 + 1.538e-02 1.453e-02 1.538e-02 1.781e-02 2.171e-02 2.728e-02 + 3.469e-02 4.283e-02 4.821e-02 4.650e-02 3.719e-02 2.556e-02 + 4.526e-03 4.526e-03 1.115e-02 2.556e-02 4.294e-02 5.397e-02 + 5.421e-02 4.707e-02 3.820e-02 3.074e-02 2.524e-02 2.145e-02 + 1.942e-02 1.942e-02 2.145e-02 2.524e-02 3.074e-02 3.820e-02 + 4.707e-02 5.421e-02 5.397e-02 4.294e-02 2.556e-02 1.115e-02 + 4.526e-03 1.527e-02 3.604e-02 5.903e-02 7.277e-02 7.300e-02 + 6.459e-02 5.434e-02 4.565e-02 3.895e-02 3.401e-02 3.122e-02 + 3.122e-02 3.401e-02 3.895e-02 4.565e-02 5.434e-02 6.459e-02 + 7.300e-02 7.277e-02 5.903e-02 3.604e-02 1.527e-02 4.526e-03 + 1.527e-02 3.431e-02 5.950e-02 7.896e-02 8.473e-02 7.892e-02 + 6.870e-02 5.911e-02 5.133e-02 4.501e-02 4.045e-02 3.872e-02 + 4.045e-02 4.501e-02 5.133e-02 5.911e-02 6.870e-02 7.892e-02 + 8.473e-02 7.896e-02 5.950e-02 3.431e-02 1.527e-02 8.601e-03 + 3.604e-02 5.950e-02 8.117e-02 9.146e-02 8.941e-02 8.099e-02 + 7.190e-02 6.404e-02 5.700e-02 5.077e-02 4.685e-02 4.685e-02 + 5.077e-02 5.700e-02 6.404e-02 7.190e-02 8.099e-02 8.941e-02 + 9.146e-02 8.117e-02 5.950e-02 3.604e-02 2.162e-02 2.162e-02 + 5.903e-02 7.896e-02 9.146e-02 9.329e-02 8.818e-02 8.128e-02 + 7.478e-02 6.809e-02 6.074e-02 5.436e-02 5.176e-02 5.436e-02 + 6.074e-02 6.809e-02 7.478e-02 8.128e-02 8.818e-02 9.329e-02 + 9.146e-02 7.896e-02 5.903e-02 4.108e-02 3.399e-02 4.108e-02 + 7.277e-02 8.473e-02 8.941e-02 8.818e-02 8.475e-02 8.099e-02 + 7.603e-02 6.863e-02 6.009e-02 5.416e-02 5.416e-02 6.009e-02 + 6.863e-02 7.603e-02 8.099e-02 8.475e-02 8.818e-02 8.941e-02 + 8.473e-02 7.277e-02 5.775e-02 4.740e-02 4.740e-02 5.775e-02 + 7.300e-02 7.892e-02 8.099e-02 8.128e-02 8.099e-02 7.892e-02 + 7.300e-02 6.353e-02 5.442e-02 5.065e-02 5.442e-02 6.353e-02 + 7.300e-02 7.892e-02 8.099e-02 8.128e-02 8.099e-02 7.892e-02 + 7.300e-02 6.353e-02 5.442e-02 5.065e-02 5.442e-02 6.353e-02 + 6.459e-02 6.870e-02 7.190e-02 7.478e-02 7.603e-02 7.300e-02 + 6.466e-02 5.397e-02 4.650e-02 4.650e-02 5.397e-02 6.466e-02 + 7.300e-02 7.603e-02 7.478e-02 7.190e-02 6.870e-02 6.459e-02 + 5.881e-02 5.237e-02 4.798e-02 4.798e-02 5.237e-02 5.881e-02 + 5.434e-02 5.911e-02 6.404e-02 6.809e-02 6.863e-02 6.353e-02 + 5.397e-02 4.471e-02 4.091e-02 4.471e-02 5.397e-02 6.353e-02 + 6.863e-02 6.809e-02 6.404e-02 5.911e-02 5.434e-02 4.953e-02 + 4.466e-02 4.073e-02 3.920e-02 4.073e-02 4.466e-02 4.953e-02 + 4.565e-02 5.133e-02 5.700e-02 6.074e-02 6.009e-02 5.442e-02 + 4.650e-02 4.091e-02 4.091e-02 4.650e-02 5.442e-02 6.009e-02 + 6.074e-02 5.700e-02 5.133e-02 4.565e-02 4.056e-02 3.604e-02 + 3.238e-02 3.025e-02 3.025e-02 3.238e-02 3.604e-02 4.056e-02 + 3.895e-02 4.501e-02 5.077e-02 5.436e-02 5.416e-02 5.065e-02 + 4.650e-02 4.471e-02 4.650e-02 5.065e-02 5.416e-02 5.436e-02 + 5.077e-02 4.501e-02 3.895e-02 3.354e-02 2.897e-02 2.531e-02 + 2.286e-02 2.199e-02 2.286e-02 2.531e-02 2.897e-02 3.354e-02 + 3.401e-02 4.045e-02 4.685e-02 5.176e-02 5.416e-02 5.442e-02 + 5.397e-02 5.397e-02 5.442e-02 5.416e-02 5.176e-02 4.685e-02 + 4.045e-02 3.401e-02 2.838e-02 2.375e-02 2.007e-02 1.744e-02 + 1.606e-02 1.606e-02 1.744e-02 2.007e-02 2.375e-02 2.838e-02 + 3.122e-02 3.872e-02 4.685e-02 5.436e-02 6.009e-02 6.353e-02 + 6.466e-02 6.353e-02 6.009e-02 5.436e-02 4.685e-02 3.872e-02 + 3.122e-02 2.502e-02 2.015e-02 1.639e-02 1.366e-02 1.198e-02 + 1.141e-02 1.198e-02 1.366e-02 1.639e-02 2.015e-02 2.502e-02 + 3.122e-02 4.045e-02 5.077e-02 6.074e-02 6.863e-02 7.300e-02 + 7.300e-02 6.863e-02 6.074e-02 5.077e-02 4.045e-02 3.122e-02 + 2.381e-02 1.822e-02 1.411e-02 1.116e-02 9.254e-03 8.324e-03 + 8.324e-03 9.254e-03 1.116e-02 1.411e-02 1.822e-02 2.381e-02 + 3.401e-02 4.501e-02 5.700e-02 6.809e-02 7.603e-02 7.892e-02 + 7.603e-02 6.809e-02 5.700e-02 4.501e-02 3.401e-02 2.502e-02 + 1.822e-02 1.331e-02 9.883e-03 7.650e-03 6.418e-03 6.030e-03 + 6.418e-03 7.650e-03 9.883e-03 1.331e-02 1.822e-02 2.502e-02 + 3.895e-02 5.133e-02 6.404e-02 7.478e-02 8.099e-02 8.099e-02 + 7.478e-02 6.404e-02 5.133e-02 3.895e-02 2.838e-02 2.015e-02 + 1.411e-02 9.883e-03 7.115e-03 5.505e-03 4.789e-03 4.789e-03 + 5.505e-03 7.115e-03 9.883e-03 1.411e-02 2.015e-02 2.838e-02 + 4.565e-02 5.911e-02 7.190e-02 8.128e-02 8.475e-02 8.128e-02 + 7.190e-02 5.911e-02 4.565e-02 3.354e-02 2.375e-02 1.639e-02 + 1.116e-02 7.650e-03 5.505e-03 4.400e-03 4.068e-03 4.400e-03 + 5.505e-03 7.650e-03 1.116e-02 1.639e-02 2.375e-02 3.354e-02 + 5.434e-02 6.870e-02 8.099e-02 8.818e-02 8.818e-02 8.099e-02 + 6.870e-02 5.434e-02 4.056e-02 2.897e-02 2.007e-02 1.366e-02 + 9.254e-03 6.418e-03 4.789e-03 4.068e-03 4.068e-03 4.789e-03 + 6.418e-03 9.254e-03 1.366e-02 2.007e-02 2.897e-02 4.056e-02 + 6.459e-02 7.892e-02 8.941e-02 9.329e-02 8.941e-02 7.892e-02 + 6.459e-02 4.953e-02 3.604e-02 2.531e-02 1.744e-02 1.198e-02 + 8.324e-03 6.030e-03 4.789e-03 4.400e-03 4.789e-03 6.030e-03 + 8.324e-03 1.198e-02 1.744e-02 2.531e-02 3.604e-02 4.953e-02 + 7.300e-02 8.473e-02 9.146e-02 9.146e-02 8.473e-02 7.300e-02 + 5.881e-02 4.466e-02 3.238e-02 2.286e-02 1.606e-02 1.141e-02 + 8.324e-03 6.418e-03 5.505e-03 5.505e-03 6.418e-03 8.324e-03 + 1.141e-02 1.606e-02 2.286e-02 3.238e-02 4.466e-02 5.881e-02 + 7.277e-02 7.896e-02 8.117e-02 7.896e-02 7.277e-02 6.353e-02 + 5.237e-02 4.073e-02 3.025e-02 2.199e-02 1.606e-02 1.198e-02 + 9.254e-03 7.650e-03 7.115e-03 7.650e-03 9.254e-03 1.198e-02 + 1.606e-02 2.199e-02 3.025e-02 4.073e-02 5.237e-02 6.353e-02 + 5.903e-02 5.950e-02 5.950e-02 5.903e-02 5.775e-02 5.442e-02 + 4.798e-02 3.920e-02 3.025e-02 2.286e-02 1.744e-02 1.366e-02 + 1.116e-02 9.883e-03 9.883e-03 1.116e-02 1.366e-02 1.744e-02 + 2.286e-02 3.025e-02 3.920e-02 4.798e-02 5.442e-02 5.775e-02 + 3.604e-02 3.431e-02 3.604e-02 4.108e-02 4.740e-02 5.065e-02 + 4.798e-02 4.073e-02 3.238e-02 2.531e-02 2.007e-02 1.639e-02 + 1.411e-02 1.331e-02 1.411e-02 1.639e-02 2.007e-02 2.531e-02 + 3.238e-02 4.073e-02 4.798e-02 5.065e-02 4.740e-02 4.108e-02 + 1.527e-02 1.527e-02 2.162e-02 3.399e-02 4.740e-02 5.442e-02 + 5.237e-02 4.466e-02 3.604e-02 2.897e-02 2.375e-02 2.015e-02 + 1.822e-02 1.822e-02 2.015e-02 2.375e-02 2.897e-02 3.604e-02 + 4.466e-02 5.237e-02 5.442e-02 4.740e-02 3.399e-02 2.162e-02 + 4.526e-03 8.601e-03 2.162e-02 4.108e-02 5.775e-02 6.353e-02 + 5.881e-02 4.953e-02 4.056e-02 3.354e-02 2.838e-02 2.502e-02 + 2.381e-02 2.502e-02 2.838e-02 3.354e-02 4.056e-02 4.953e-02 + 5.881e-02 6.353e-02 5.775e-02 4.108e-02 2.162e-02 8.601e-03 + 1.770e-02 3.604e-02 5.962e-02 7.727e-02 8.198e-02 7.603e-02 + 6.613e-02 5.689e-02 4.939e-02 4.330e-02 3.892e-02 3.728e-02 + 3.892e-02 4.330e-02 4.939e-02 5.689e-02 6.613e-02 7.603e-02 + 8.198e-02 7.727e-02 5.962e-02 3.604e-02 1.770e-02 1.115e-02 + 3.604e-02 5.950e-02 8.117e-02 9.146e-02 8.941e-02 8.099e-02 + 7.190e-02 6.404e-02 5.700e-02 5.077e-02 4.685e-02 4.685e-02 + 5.077e-02 5.700e-02 6.404e-02 7.190e-02 8.099e-02 8.941e-02 + 9.146e-02 8.117e-02 5.950e-02 3.604e-02 2.162e-02 2.162e-02 + 5.962e-02 8.117e-02 9.491e-02 9.719e-02 9.194e-02 8.475e-02 + 7.798e-02 7.099e-02 6.323e-02 5.643e-02 5.366e-02 5.643e-02 + 6.323e-02 7.099e-02 7.798e-02 8.475e-02 9.194e-02 9.719e-02 + 9.491e-02 8.117e-02 5.962e-02 4.041e-02 3.287e-02 4.041e-02 + 7.727e-02 9.146e-02 9.719e-02 9.600e-02 9.227e-02 8.818e-02 + 8.268e-02 7.430e-02 6.446e-02 5.759e-02 5.759e-02 6.446e-02 + 7.430e-02 8.268e-02 8.818e-02 9.227e-02 9.600e-02 9.719e-02 + 9.146e-02 7.727e-02 5.968e-02 4.765e-02 4.765e-02 5.968e-02 + 8.198e-02 8.941e-02 9.194e-02 9.227e-02 9.194e-02 8.941e-02 + 8.198e-02 7.000e-02 5.845e-02 5.366e-02 5.845e-02 7.000e-02 + 8.198e-02 8.941e-02 9.194e-02 9.227e-02 9.194e-02 8.941e-02 + 8.198e-02 7.000e-02 5.845e-02 5.366e-02 5.845e-02 7.000e-02 + 7.603e-02 8.099e-02 8.475e-02 8.818e-02 8.941e-02 8.473e-02 + 7.277e-02 5.775e-02 4.740e-02 4.740e-02 5.775e-02 7.277e-02 + 8.473e-02 8.941e-02 8.818e-02 8.475e-02 8.099e-02 7.603e-02 + 6.863e-02 6.009e-02 5.416e-02 5.416e-02 6.009e-02 6.863e-02 + 6.613e-02 7.190e-02 7.798e-02 8.268e-02 8.198e-02 7.277e-02 + 5.728e-02 4.294e-02 3.719e-02 4.294e-02 5.728e-02 7.277e-02 + 8.198e-02 8.268e-02 7.798e-02 7.190e-02 6.613e-02 6.025e-02 + 5.398e-02 4.868e-02 4.655e-02 4.868e-02 5.398e-02 6.025e-02 + 5.689e-02 6.404e-02 7.099e-02 7.430e-02 7.000e-02 5.775e-02 + 4.294e-02 3.313e-02 3.313e-02 4.294e-02 5.775e-02 7.000e-02 + 7.430e-02 7.099e-02 6.404e-02 5.689e-02 5.061e-02 4.502e-02 + 4.029e-02 3.742e-02 3.742e-02 4.029e-02 4.502e-02 5.061e-02 + 4.939e-02 5.700e-02 6.323e-02 6.446e-02 5.845e-02 4.740e-02 + 3.719e-02 3.313e-02 3.719e-02 4.740e-02 5.845e-02 6.446e-02 + 6.323e-02 5.700e-02 4.939e-02 4.252e-02 3.681e-02 3.221e-02 + 2.903e-02 2.787e-02 2.903e-02 3.221e-02 3.681e-02 4.252e-02 + 4.330e-02 5.077e-02 5.643e-02 5.759e-02 5.366e-02 4.740e-02 + 4.294e-02 4.294e-02 4.740e-02 5.366e-02 5.759e-02 5.643e-02 + 5.077e-02 4.330e-02 3.625e-02 3.042e-02 2.582e-02 2.247e-02 + 2.066e-02 2.066e-02 2.247e-02 2.582e-02 3.042e-02 3.625e-02 + 3.892e-02 4.685e-02 5.366e-02 5.759e-02 5.845e-02 5.775e-02 + 5.728e-02 5.775e-02 5.845e-02 5.759e-02 5.366e-02 4.685e-02 + 3.892e-02 3.163e-02 2.570e-02 2.110e-02 1.770e-02 1.554e-02 + 1.480e-02 1.554e-02 1.770e-02 2.110e-02 2.570e-02 3.163e-02 + 3.728e-02 4.685e-02 5.643e-02 6.446e-02 7.000e-02 7.277e-02 + 7.277e-02 7.000e-02 6.446e-02 5.643e-02 4.685e-02 3.728e-02 + 2.904e-02 2.263e-02 1.784e-02 1.435e-02 1.200e-02 1.081e-02 + 1.081e-02 1.200e-02 1.435e-02 1.784e-02 2.263e-02 2.904e-02 + 3.892e-02 5.077e-02 6.323e-02 7.430e-02 8.198e-02 8.473e-02 + 8.198e-02 7.430e-02 6.323e-02 5.077e-02 3.892e-02 2.904e-02 + 2.153e-02 1.612e-02 1.228e-02 9.698e-03 8.199e-03 7.708e-03 + 8.199e-03 9.698e-03 1.228e-02 1.612e-02 2.153e-02 2.904e-02 + 4.330e-02 5.700e-02 7.099e-02 8.268e-02 8.941e-02 8.941e-02 + 8.268e-02 7.099e-02 5.700e-02 4.330e-02 3.163e-02 2.263e-02 + 1.612e-02 1.157e-02 8.541e-03 6.706e-03 5.856e-03 5.856e-03 + 6.706e-03 8.541e-03 1.157e-02 1.612e-02 2.263e-02 3.163e-02 + 4.939e-02 6.404e-02 7.798e-02 8.818e-02 9.194e-02 8.818e-02 + 7.798e-02 6.404e-02 4.939e-02 3.625e-02 2.570e-02 1.784e-02 + 1.228e-02 8.541e-03 6.220e-03 5.001e-03 4.629e-03 5.001e-03 + 6.220e-03 8.541e-03 1.228e-02 1.784e-02 2.570e-02 3.625e-02 + 5.689e-02 7.190e-02 8.475e-02 9.227e-02 9.227e-02 8.475e-02 + 7.190e-02 5.689e-02 4.252e-02 3.042e-02 2.110e-02 1.435e-02 + 9.698e-03 6.706e-03 5.001e-03 4.255e-03 4.255e-03 5.001e-03 + 6.706e-03 9.698e-03 1.435e-02 2.110e-02 3.042e-02 4.252e-02 + 6.613e-02 8.099e-02 9.194e-02 9.600e-02 9.194e-02 8.099e-02 + 6.613e-02 5.061e-02 3.681e-02 2.582e-02 1.770e-02 1.200e-02 + 8.199e-03 5.856e-03 4.629e-03 4.255e-03 4.629e-03 5.856e-03 + 8.199e-03 1.200e-02 1.770e-02 2.582e-02 3.681e-02 5.061e-02 + 7.603e-02 8.941e-02 9.719e-02 9.719e-02 8.941e-02 7.603e-02 + 6.025e-02 4.502e-02 3.221e-02 2.247e-02 1.554e-02 1.081e-02 + 7.708e-03 5.856e-03 5.001e-03 5.001e-03 5.856e-03 7.708e-03 + 1.081e-02 1.554e-02 2.247e-02 3.221e-02 4.502e-02 6.025e-02 + 8.198e-02 9.146e-02 9.491e-02 9.146e-02 8.198e-02 6.863e-02 + 5.398e-02 4.029e-02 2.903e-02 2.066e-02 1.480e-02 1.081e-02 + 8.199e-03 6.706e-03 6.220e-03 6.706e-03 8.199e-03 1.081e-02 + 1.480e-02 2.066e-02 2.903e-02 4.029e-02 5.398e-02 6.863e-02 + 7.727e-02 8.117e-02 8.117e-02 7.727e-02 7.000e-02 6.009e-02 + 4.868e-02 3.742e-02 2.787e-02 2.066e-02 1.554e-02 1.200e-02 + 9.698e-03 8.541e-03 8.541e-03 9.698e-03 1.200e-02 1.554e-02 + 2.066e-02 2.787e-02 3.742e-02 4.868e-02 6.009e-02 7.000e-02 + 5.962e-02 5.950e-02 5.962e-02 5.968e-02 5.845e-02 5.416e-02 + 4.655e-02 3.742e-02 2.903e-02 2.247e-02 1.770e-02 1.435e-02 + 1.228e-02 1.157e-02 1.228e-02 1.435e-02 1.770e-02 2.247e-02 + 2.903e-02 3.742e-02 4.655e-02 5.416e-02 5.845e-02 5.968e-02 + 3.604e-02 3.604e-02 4.041e-02 4.765e-02 5.366e-02 5.416e-02 + 4.868e-02 4.029e-02 3.221e-02 2.582e-02 2.110e-02 1.784e-02 + 1.612e-02 1.612e-02 1.784e-02 2.110e-02 2.582e-02 3.221e-02 + 4.029e-02 4.868e-02 5.416e-02 5.366e-02 4.765e-02 4.041e-02 + 1.770e-02 2.162e-02 3.287e-02 4.765e-02 5.845e-02 6.009e-02 + 5.398e-02 4.502e-02 3.681e-02 3.042e-02 2.570e-02 2.263e-02 + 2.153e-02 2.263e-02 2.570e-02 3.042e-02 3.681e-02 4.502e-02 + 5.398e-02 6.009e-02 5.845e-02 4.765e-02 3.287e-02 2.162e-02 + 1.115e-02 2.162e-02 4.041e-02 5.968e-02 7.000e-02 6.863e-02 + 6.025e-02 5.061e-02 4.252e-02 3.625e-02 3.163e-02 2.904e-02 + 2.904e-02 3.163e-02 3.625e-02 4.252e-02 5.061e-02 6.025e-02 + 6.863e-02 7.000e-02 5.968e-02 4.041e-02 2.162e-02 1.115e-02 + 3.853e-02 5.903e-02 7.727e-02 8.528e-02 8.268e-02 7.478e-02 + 6.639e-02 5.911e-02 5.260e-02 4.693e-02 4.341e-02 4.341e-02 + 4.693e-02 5.260e-02 5.911e-02 6.639e-02 7.478e-02 8.268e-02 + 8.528e-02 7.727e-02 5.903e-02 3.853e-02 2.556e-02 2.556e-02 + 5.903e-02 7.896e-02 9.146e-02 9.329e-02 8.818e-02 8.128e-02 + 7.478e-02 6.809e-02 6.074e-02 5.436e-02 5.176e-02 5.436e-02 + 6.074e-02 6.809e-02 7.478e-02 8.128e-02 8.818e-02 9.329e-02 + 9.146e-02 7.896e-02 5.903e-02 4.108e-02 3.399e-02 4.108e-02 + 7.727e-02 9.146e-02 9.719e-02 9.600e-02 9.227e-02 8.818e-02 + 8.268e-02 7.430e-02 6.446e-02 5.759e-02 5.759e-02 6.446e-02 + 7.430e-02 8.268e-02 8.818e-02 9.227e-02 9.600e-02 9.719e-02 + 9.146e-02 7.727e-02 5.968e-02 4.765e-02 4.765e-02 5.968e-02 + 8.528e-02 9.329e-02 9.600e-02 9.634e-02 9.600e-02 9.329e-02 + 8.528e-02 7.233e-02 5.986e-02 5.469e-02 5.986e-02 7.233e-02 + 8.528e-02 9.329e-02 9.600e-02 9.634e-02 9.600e-02 9.329e-02 + 8.528e-02 7.233e-02 5.986e-02 5.469e-02 5.986e-02 7.233e-02 + 8.268e-02 8.818e-02 9.227e-02 9.600e-02 9.719e-02 9.146e-02 + 7.727e-02 5.968e-02 4.765e-02 4.765e-02 5.968e-02 7.727e-02 + 9.146e-02 9.719e-02 9.600e-02 9.227e-02 8.818e-02 8.268e-02 + 7.430e-02 6.446e-02 5.759e-02 5.759e-02 6.446e-02 7.430e-02 + 7.478e-02 8.128e-02 8.818e-02 9.329e-02 9.146e-02 7.896e-02 + 5.903e-02 4.108e-02 3.399e-02 4.108e-02 5.903e-02 7.896e-02 + 9.146e-02 9.329e-02 8.818e-02 8.128e-02 7.478e-02 6.809e-02 + 6.074e-02 5.436e-02 5.176e-02 5.436e-02 6.074e-02 6.809e-02 + 6.639e-02 7.478e-02 8.268e-02 8.528e-02 7.727e-02 5.903e-02 + 3.853e-02 2.556e-02 2.556e-02 3.853e-02 5.903e-02 7.727e-02 + 8.528e-02 8.268e-02 7.478e-02 6.639e-02 5.911e-02 5.260e-02 + 4.693e-02 4.341e-02 4.341e-02 4.693e-02 5.260e-02 5.911e-02 + 5.911e-02 6.809e-02 7.430e-02 7.233e-02 5.968e-02 4.108e-02 + 2.556e-02 1.973e-02 2.556e-02 4.108e-02 5.968e-02 7.233e-02 + 7.430e-02 6.809e-02 5.911e-02 5.086e-02 4.411e-02 3.864e-02 + 3.477e-02 3.333e-02 3.477e-02 3.864e-02 4.411e-02 5.086e-02 + 5.260e-02 6.074e-02 6.446e-02 5.986e-02 4.765e-02 3.399e-02 + 2.556e-02 2.556e-02 3.399e-02 4.765e-02 5.986e-02 6.446e-02 + 6.074e-02 5.260e-02 4.411e-02 3.705e-02 3.153e-02 2.748e-02 + 2.524e-02 2.524e-02 2.748e-02 3.153e-02 3.705e-02 4.411e-02 + 4.693e-02 5.436e-02 5.759e-02 5.469e-02 4.765e-02 4.108e-02 + 3.853e-02 4.108e-02 4.765e-02 5.469e-02 5.759e-02 5.436e-02 + 4.693e-02 3.864e-02 3.153e-02 2.600e-02 2.191e-02 1.926e-02 + 1.833e-02 1.926e-02 2.191e-02 2.600e-02 3.153e-02 3.864e-02 + 4.341e-02 5.176e-02 5.759e-02 5.986e-02 5.968e-02 5.903e-02 + 5.903e-02 5.968e-02 5.986e-02 5.759e-02 5.176e-02 4.341e-02 + 3.477e-02 2.748e-02 2.191e-02 1.780e-02 1.498e-02 1.351e-02 + 1.351e-02 1.498e-02 1.780e-02 2.191e-02 2.748e-02 3.477e-02 + 4.341e-02 5.436e-02 6.446e-02 7.233e-02 7.727e-02 7.896e-02 + 7.727e-02 7.233e-02 6.446e-02 5.436e-02 4.341e-02 3.333e-02 + 2.524e-02 1.926e-02 1.498e-02 1.201e-02 1.022e-02 9.620e-03 + 1.022e-02 1.201e-02 1.498e-02 1.926e-02 2.524e-02 3.333e-02 + 4.693e-02 6.074e-02 7.430e-02 8.528e-02 9.146e-02 9.146e-02 + 8.528e-02 7.430e-02 6.074e-02 4.693e-02 3.477e-02 2.524e-02 + 1.833e-02 1.351e-02 1.022e-02 8.149e-03 7.143e-03 7.143e-03 + 8.149e-03 1.022e-02 1.351e-02 1.833e-02 2.524e-02 3.477e-02 + 5.260e-02 6.809e-02 8.268e-02 9.329e-02 9.719e-02 9.329e-02 + 8.268e-02 6.809e-02 5.260e-02 3.864e-02 2.748e-02 1.926e-02 + 1.351e-02 9.620e-03 7.143e-03 5.788e-03 5.361e-03 5.788e-03 + 7.143e-03 9.620e-03 1.351e-02 1.926e-02 2.748e-02 3.864e-02 + 5.911e-02 7.478e-02 8.818e-02 9.600e-02 9.600e-02 8.818e-02 + 7.478e-02 5.911e-02 4.411e-02 3.153e-02 2.191e-02 1.498e-02 + 1.022e-02 7.143e-03 5.361e-03 4.569e-03 4.569e-03 5.361e-03 + 7.143e-03 1.022e-02 1.498e-02 2.191e-02 3.153e-02 4.411e-02 + 6.639e-02 8.128e-02 9.227e-02 9.634e-02 9.227e-02 8.128e-02 + 6.639e-02 5.086e-02 3.705e-02 2.600e-02 1.780e-02 1.201e-02 + 8.149e-03 5.788e-03 4.569e-03 4.201e-03 4.569e-03 5.788e-03 + 8.149e-03 1.201e-02 1.780e-02 2.600e-02 3.705e-02 5.086e-02 + 7.478e-02 8.818e-02 9.600e-02 9.600e-02 8.818e-02 7.478e-02 + 5.911e-02 4.411e-02 3.153e-02 2.191e-02 1.498e-02 1.022e-02 + 7.143e-03 5.361e-03 4.569e-03 4.569e-03 5.361e-03 7.143e-03 + 1.022e-02 1.498e-02 2.191e-02 3.153e-02 4.411e-02 5.911e-02 + 8.268e-02 9.329e-02 9.719e-02 9.329e-02 8.268e-02 6.809e-02 + 5.260e-02 3.864e-02 2.748e-02 1.926e-02 1.351e-02 9.620e-03 + 7.143e-03 5.788e-03 5.361e-03 5.788e-03 7.143e-03 9.620e-03 + 1.351e-02 1.926e-02 2.748e-02 3.864e-02 5.260e-02 6.809e-02 + 8.528e-02 9.146e-02 9.146e-02 8.528e-02 7.430e-02 6.074e-02 + 4.693e-02 3.477e-02 2.524e-02 1.833e-02 1.351e-02 1.022e-02 + 8.149e-03 7.143e-03 7.143e-03 8.149e-03 1.022e-02 1.351e-02 + 1.833e-02 2.524e-02 3.477e-02 4.693e-02 6.074e-02 7.430e-02 + 7.727e-02 7.896e-02 7.727e-02 7.233e-02 6.446e-02 5.436e-02 + 4.341e-02 3.333e-02 2.524e-02 1.926e-02 1.498e-02 1.201e-02 + 1.022e-02 9.620e-03 1.022e-02 1.201e-02 1.498e-02 1.926e-02 + 2.524e-02 3.333e-02 4.341e-02 5.436e-02 6.446e-02 7.233e-02 + 5.903e-02 5.903e-02 5.968e-02 5.986e-02 5.759e-02 5.176e-02 + 4.341e-02 3.477e-02 2.748e-02 2.191e-02 1.780e-02 1.498e-02 + 1.351e-02 1.351e-02 1.498e-02 1.780e-02 2.191e-02 2.748e-02 + 3.477e-02 4.341e-02 5.176e-02 5.759e-02 5.986e-02 5.968e-02 + 3.853e-02 4.108e-02 4.765e-02 5.469e-02 5.759e-02 5.436e-02 + 4.693e-02 3.864e-02 3.153e-02 2.600e-02 2.191e-02 1.926e-02 + 1.833e-02 1.926e-02 2.191e-02 2.600e-02 3.153e-02 3.864e-02 + 4.693e-02 5.436e-02 5.759e-02 5.469e-02 4.765e-02 4.108e-02 + 2.556e-02 3.399e-02 4.765e-02 5.986e-02 6.446e-02 6.074e-02 + 5.260e-02 4.411e-02 3.705e-02 3.153e-02 2.748e-02 2.524e-02 + 2.524e-02 2.748e-02 3.153e-02 3.705e-02 4.411e-02 5.260e-02 + 6.074e-02 6.446e-02 5.986e-02 4.765e-02 3.399e-02 2.556e-02 + 2.556e-02 4.108e-02 5.968e-02 7.233e-02 7.430e-02 6.809e-02 + 5.911e-02 5.086e-02 4.411e-02 3.864e-02 3.477e-02 3.333e-02 + 3.477e-02 3.864e-02 4.411e-02 5.086e-02 5.911e-02 6.809e-02 + 7.430e-02 7.233e-02 5.968e-02 4.108e-02 2.556e-02 1.973e-02 + 5.728e-02 7.277e-02 8.198e-02 8.268e-02 7.798e-02 7.190e-02 + 6.613e-02 6.025e-02 5.398e-02 4.868e-02 4.655e-02 4.868e-02 + 5.398e-02 6.025e-02 6.613e-02 7.190e-02 7.798e-02 8.268e-02 + 8.198e-02 7.277e-02 5.728e-02 4.294e-02 3.719e-02 4.294e-02 + 7.277e-02 8.473e-02 8.941e-02 8.818e-02 8.475e-02 8.099e-02 + 7.603e-02 6.863e-02 6.009e-02 5.416e-02 5.416e-02 6.009e-02 + 6.863e-02 7.603e-02 8.099e-02 8.475e-02 8.818e-02 8.941e-02 + 8.473e-02 7.277e-02 5.775e-02 4.740e-02 4.740e-02 5.775e-02 + 8.198e-02 8.941e-02 9.194e-02 9.227e-02 9.194e-02 8.941e-02 + 8.198e-02 7.000e-02 5.845e-02 5.366e-02 5.845e-02 7.000e-02 + 8.198e-02 8.941e-02 9.194e-02 9.227e-02 9.194e-02 8.941e-02 + 8.198e-02 7.000e-02 5.845e-02 5.366e-02 5.845e-02 7.000e-02 + 8.268e-02 8.818e-02 9.227e-02 9.600e-02 9.719e-02 9.146e-02 + 7.727e-02 5.968e-02 4.765e-02 4.765e-02 5.968e-02 7.727e-02 + 9.146e-02 9.719e-02 9.600e-02 9.227e-02 8.818e-02 8.268e-02 + 7.430e-02 6.446e-02 5.759e-02 5.759e-02 6.446e-02 7.430e-02 + 7.798e-02 8.475e-02 9.194e-02 9.719e-02 9.491e-02 8.117e-02 + 5.962e-02 4.041e-02 3.287e-02 4.041e-02 5.962e-02 8.117e-02 + 9.491e-02 9.719e-02 9.194e-02 8.475e-02 7.798e-02 7.099e-02 + 6.323e-02 5.643e-02 5.366e-02 5.643e-02 6.323e-02 7.099e-02 + 7.190e-02 8.099e-02 8.941e-02 9.146e-02 8.117e-02 5.950e-02 + 3.604e-02 2.162e-02 2.162e-02 3.604e-02 5.950e-02 8.117e-02 + 9.146e-02 8.941e-02 8.099e-02 7.190e-02 6.404e-02 5.700e-02 + 5.077e-02 4.685e-02 4.685e-02 5.077e-02 5.700e-02 6.404e-02 + 6.613e-02 7.603e-02 8.198e-02 7.727e-02 5.962e-02 3.604e-02 + 1.770e-02 1.115e-02 1.770e-02 3.604e-02 5.962e-02 7.727e-02 + 8.198e-02 7.603e-02 6.613e-02 5.689e-02 4.939e-02 4.330e-02 + 3.892e-02 3.728e-02 3.892e-02 4.330e-02 4.939e-02 5.689e-02 + 6.025e-02 6.863e-02 7.000e-02 5.968e-02 4.041e-02 2.162e-02 + 1.115e-02 1.115e-02 2.162e-02 4.041e-02 5.968e-02 7.000e-02 + 6.863e-02 6.025e-02 5.061e-02 4.252e-02 3.625e-02 3.163e-02 + 2.904e-02 2.904e-02 3.163e-02 3.625e-02 4.252e-02 5.061e-02 + 5.398e-02 6.009e-02 5.845e-02 4.765e-02 3.287e-02 2.162e-02 + 1.770e-02 2.162e-02 3.287e-02 4.765e-02 5.845e-02 6.009e-02 + 5.398e-02 4.502e-02 3.681e-02 3.042e-02 2.570e-02 2.263e-02 + 2.153e-02 2.263e-02 2.570e-02 3.042e-02 3.681e-02 4.502e-02 + 4.868e-02 5.416e-02 5.366e-02 4.765e-02 4.041e-02 3.604e-02 + 3.604e-02 4.041e-02 4.765e-02 5.366e-02 5.416e-02 4.868e-02 + 4.029e-02 3.221e-02 2.582e-02 2.110e-02 1.784e-02 1.612e-02 + 1.612e-02 1.784e-02 2.110e-02 2.582e-02 3.221e-02 4.029e-02 + 4.655e-02 5.416e-02 5.845e-02 5.968e-02 5.962e-02 5.950e-02 + 5.962e-02 5.968e-02 5.845e-02 5.416e-02 4.655e-02 3.742e-02 + 2.903e-02 2.247e-02 1.770e-02 1.435e-02 1.228e-02 1.157e-02 + 1.228e-02 1.435e-02 1.770e-02 2.247e-02 2.903e-02 3.742e-02 + 4.868e-02 6.009e-02 7.000e-02 7.727e-02 8.117e-02 8.117e-02 + 7.727e-02 7.000e-02 6.009e-02 4.868e-02 3.742e-02 2.787e-02 + 2.066e-02 1.554e-02 1.200e-02 9.698e-03 8.541e-03 8.541e-03 + 9.698e-03 1.200e-02 1.554e-02 2.066e-02 2.787e-02 3.742e-02 + 5.398e-02 6.863e-02 8.198e-02 9.146e-02 9.491e-02 9.146e-02 + 8.198e-02 6.863e-02 5.398e-02 4.029e-02 2.903e-02 2.066e-02 + 1.480e-02 1.081e-02 8.199e-03 6.706e-03 6.220e-03 6.706e-03 + 8.199e-03 1.081e-02 1.480e-02 2.066e-02 2.903e-02 4.029e-02 + 6.025e-02 7.603e-02 8.941e-02 9.719e-02 9.719e-02 8.941e-02 + 7.603e-02 6.025e-02 4.502e-02 3.221e-02 2.247e-02 1.554e-02 + 1.081e-02 7.708e-03 5.856e-03 5.001e-03 5.001e-03 5.856e-03 + 7.708e-03 1.081e-02 1.554e-02 2.247e-02 3.221e-02 4.502e-02 + 6.613e-02 8.099e-02 9.194e-02 9.600e-02 9.194e-02 8.099e-02 + 6.613e-02 5.061e-02 3.681e-02 2.582e-02 1.770e-02 1.200e-02 + 8.199e-03 5.856e-03 4.629e-03 4.255e-03 4.629e-03 5.856e-03 + 8.199e-03 1.200e-02 1.770e-02 2.582e-02 3.681e-02 5.061e-02 + 7.190e-02 8.475e-02 9.227e-02 9.227e-02 8.475e-02 7.190e-02 + 5.689e-02 4.252e-02 3.042e-02 2.110e-02 1.435e-02 9.698e-03 + 6.706e-03 5.001e-03 4.255e-03 4.255e-03 5.001e-03 6.706e-03 + 9.698e-03 1.435e-02 2.110e-02 3.042e-02 4.252e-02 5.689e-02 + 7.798e-02 8.818e-02 9.194e-02 8.818e-02 7.798e-02 6.404e-02 + 4.939e-02 3.625e-02 2.570e-02 1.784e-02 1.228e-02 8.541e-03 + 6.220e-03 5.001e-03 4.629e-03 5.001e-03 6.220e-03 8.541e-03 + 1.228e-02 1.784e-02 2.570e-02 3.625e-02 4.939e-02 6.404e-02 + 8.268e-02 8.941e-02 8.941e-02 8.268e-02 7.099e-02 5.700e-02 + 4.330e-02 3.163e-02 2.263e-02 1.612e-02 1.157e-02 8.541e-03 + 6.706e-03 5.856e-03 5.856e-03 6.706e-03 8.541e-03 1.157e-02 + 1.612e-02 2.263e-02 3.163e-02 4.330e-02 5.700e-02 7.099e-02 + 8.198e-02 8.473e-02 8.198e-02 7.430e-02 6.323e-02 5.077e-02 + 3.892e-02 2.904e-02 2.153e-02 1.612e-02 1.228e-02 9.698e-03 + 8.199e-03 7.708e-03 8.199e-03 9.698e-03 1.228e-02 1.612e-02 + 2.153e-02 2.904e-02 3.892e-02 5.077e-02 6.323e-02 7.430e-02 + 7.277e-02 7.277e-02 7.000e-02 6.446e-02 5.643e-02 4.685e-02 + 3.728e-02 2.904e-02 2.263e-02 1.784e-02 1.435e-02 1.200e-02 + 1.081e-02 1.081e-02 1.200e-02 1.435e-02 1.784e-02 2.263e-02 + 2.904e-02 3.728e-02 4.685e-02 5.643e-02 6.446e-02 7.000e-02 + 5.728e-02 5.775e-02 5.845e-02 5.759e-02 5.366e-02 4.685e-02 + 3.892e-02 3.163e-02 2.570e-02 2.110e-02 1.770e-02 1.554e-02 + 1.480e-02 1.554e-02 1.770e-02 2.110e-02 2.570e-02 3.163e-02 + 3.892e-02 4.685e-02 5.366e-02 5.759e-02 5.845e-02 5.775e-02 + 4.294e-02 4.740e-02 5.366e-02 5.759e-02 5.643e-02 5.077e-02 + 4.330e-02 3.625e-02 3.042e-02 2.582e-02 2.247e-02 2.066e-02 + 2.066e-02 2.247e-02 2.582e-02 3.042e-02 3.625e-02 4.330e-02 + 5.077e-02 5.643e-02 5.759e-02 5.366e-02 4.740e-02 4.294e-02 + 3.719e-02 4.740e-02 5.845e-02 6.446e-02 6.323e-02 5.700e-02 + 4.939e-02 4.252e-02 3.681e-02 3.221e-02 2.903e-02 2.787e-02 + 2.903e-02 3.221e-02 3.681e-02 4.252e-02 4.939e-02 5.700e-02 + 6.323e-02 6.446e-02 5.845e-02 4.740e-02 3.719e-02 3.313e-02 + 4.294e-02 5.775e-02 7.000e-02 7.430e-02 7.099e-02 6.404e-02 + 5.689e-02 5.061e-02 4.502e-02 4.029e-02 3.742e-02 3.742e-02 + 4.029e-02 4.502e-02 5.061e-02 5.689e-02 6.404e-02 7.099e-02 + 7.430e-02 7.000e-02 5.775e-02 4.294e-02 3.313e-02 3.313e-02 + 6.466e-02 7.300e-02 7.603e-02 7.478e-02 7.190e-02 6.870e-02 + 6.459e-02 5.881e-02 5.237e-02 4.798e-02 4.798e-02 5.237e-02 + 5.881e-02 6.459e-02 6.870e-02 7.190e-02 7.478e-02 7.603e-02 + 7.300e-02 6.466e-02 5.397e-02 4.650e-02 4.650e-02 5.397e-02 + 7.300e-02 7.892e-02 8.099e-02 8.128e-02 8.099e-02 7.892e-02 + 7.300e-02 6.353e-02 5.442e-02 5.065e-02 5.442e-02 6.353e-02 + 7.300e-02 7.892e-02 8.099e-02 8.128e-02 8.099e-02 7.892e-02 + 7.300e-02 6.353e-02 5.442e-02 5.065e-02 5.442e-02 6.353e-02 + 7.603e-02 8.099e-02 8.475e-02 8.818e-02 8.941e-02 8.473e-02 + 7.277e-02 5.775e-02 4.740e-02 4.740e-02 5.775e-02 7.277e-02 + 8.473e-02 8.941e-02 8.818e-02 8.475e-02 8.099e-02 7.603e-02 + 6.863e-02 6.009e-02 5.416e-02 5.416e-02 6.009e-02 6.863e-02 + 7.478e-02 8.128e-02 8.818e-02 9.329e-02 9.146e-02 7.896e-02 + 5.903e-02 4.108e-02 3.399e-02 4.108e-02 5.903e-02 7.896e-02 + 9.146e-02 9.329e-02 8.818e-02 8.128e-02 7.478e-02 6.809e-02 + 6.074e-02 5.436e-02 5.176e-02 5.436e-02 6.074e-02 6.809e-02 + 7.190e-02 8.099e-02 8.941e-02 9.146e-02 8.117e-02 5.950e-02 + 3.604e-02 2.162e-02 2.162e-02 3.604e-02 5.950e-02 8.117e-02 + 9.146e-02 8.941e-02 8.099e-02 7.190e-02 6.404e-02 5.700e-02 + 5.077e-02 4.685e-02 4.685e-02 5.077e-02 5.700e-02 6.404e-02 + 6.870e-02 7.892e-02 8.473e-02 7.896e-02 5.950e-02 3.431e-02 + 1.527e-02 8.601e-03 1.527e-02 3.431e-02 5.950e-02 7.896e-02 + 8.473e-02 7.892e-02 6.870e-02 5.911e-02 5.133e-02 4.501e-02 + 4.045e-02 3.872e-02 4.045e-02 4.501e-02 5.133e-02 5.911e-02 + 6.459e-02 7.300e-02 7.277e-02 5.903e-02 3.604e-02 1.527e-02 + 4.526e-03 4.526e-03 1.527e-02 3.604e-02 5.903e-02 7.277e-02 + 7.300e-02 6.459e-02 5.434e-02 4.565e-02 3.895e-02 3.401e-02 + 3.122e-02 3.122e-02 3.401e-02 3.895e-02 4.565e-02 5.434e-02 + 5.881e-02 6.353e-02 5.775e-02 4.108e-02 2.162e-02 8.601e-03 + 4.526e-03 8.601e-03 2.162e-02 4.108e-02 5.775e-02 6.353e-02 + 5.881e-02 4.953e-02 4.056e-02 3.354e-02 2.838e-02 2.502e-02 + 2.381e-02 2.502e-02 2.838e-02 3.354e-02 4.056e-02 4.953e-02 + 5.237e-02 5.442e-02 4.740e-02 3.399e-02 2.162e-02 1.527e-02 + 1.527e-02 2.162e-02 3.399e-02 4.740e-02 5.442e-02 5.237e-02 + 4.466e-02 3.604e-02 2.897e-02 2.375e-02 2.015e-02 1.822e-02 + 1.822e-02 2.015e-02 2.375e-02 2.897e-02 3.604e-02 4.466e-02 + 4.798e-02 5.065e-02 4.740e-02 4.108e-02 3.604e-02 3.431e-02 + 3.604e-02 4.108e-02 4.740e-02 5.065e-02 4.798e-02 4.073e-02 + 3.238e-02 2.531e-02 2.007e-02 1.639e-02 1.411e-02 1.331e-02 + 1.411e-02 1.639e-02 2.007e-02 2.531e-02 3.238e-02 4.073e-02 + 4.798e-02 5.442e-02 5.775e-02 5.903e-02 5.950e-02 5.950e-02 + 5.903e-02 5.775e-02 5.442e-02 4.798e-02 3.920e-02 3.025e-02 + 2.286e-02 1.744e-02 1.366e-02 1.116e-02 9.883e-03 9.883e-03 + 1.116e-02 1.366e-02 1.744e-02 2.286e-02 3.025e-02 3.920e-02 + 5.237e-02 6.353e-02 7.277e-02 7.896e-02 8.117e-02 7.896e-02 + 7.277e-02 6.353e-02 5.237e-02 4.073e-02 3.025e-02 2.199e-02 + 1.606e-02 1.198e-02 9.254e-03 7.650e-03 7.115e-03 7.650e-03 + 9.254e-03 1.198e-02 1.606e-02 2.199e-02 3.025e-02 4.073e-02 + 5.881e-02 7.300e-02 8.473e-02 9.146e-02 9.146e-02 8.473e-02 + 7.300e-02 5.881e-02 4.466e-02 3.238e-02 2.286e-02 1.606e-02 + 1.141e-02 8.324e-03 6.418e-03 5.505e-03 5.505e-03 6.418e-03 + 8.324e-03 1.141e-02 1.606e-02 2.286e-02 3.238e-02 4.466e-02 + 6.459e-02 7.892e-02 8.941e-02 9.329e-02 8.941e-02 7.892e-02 + 6.459e-02 4.953e-02 3.604e-02 2.531e-02 1.744e-02 1.198e-02 + 8.324e-03 6.030e-03 4.789e-03 4.400e-03 4.789e-03 6.030e-03 + 8.324e-03 1.198e-02 1.744e-02 2.531e-02 3.604e-02 4.953e-02 + 6.870e-02 8.099e-02 8.818e-02 8.818e-02 8.099e-02 6.870e-02 + 5.434e-02 4.056e-02 2.897e-02 2.007e-02 1.366e-02 9.254e-03 + 6.418e-03 4.789e-03 4.068e-03 4.068e-03 4.789e-03 6.418e-03 + 9.254e-03 1.366e-02 2.007e-02 2.897e-02 4.056e-02 5.434e-02 + 7.190e-02 8.128e-02 8.475e-02 8.128e-02 7.190e-02 5.911e-02 + 4.565e-02 3.354e-02 2.375e-02 1.639e-02 1.116e-02 7.650e-03 + 5.505e-03 4.400e-03 4.068e-03 4.400e-03 5.505e-03 7.650e-03 + 1.116e-02 1.639e-02 2.375e-02 3.354e-02 4.565e-02 5.911e-02 + 7.478e-02 8.099e-02 8.099e-02 7.478e-02 6.404e-02 5.133e-02 + 3.895e-02 2.838e-02 2.015e-02 1.411e-02 9.883e-03 7.115e-03 + 5.505e-03 4.789e-03 4.789e-03 5.505e-03 7.115e-03 9.883e-03 + 1.411e-02 2.015e-02 2.838e-02 3.895e-02 5.133e-02 6.404e-02 + 7.603e-02 7.892e-02 7.603e-02 6.809e-02 5.700e-02 4.501e-02 + 3.401e-02 2.502e-02 1.822e-02 1.331e-02 9.883e-03 7.650e-03 + 6.418e-03 6.030e-03 6.418e-03 7.650e-03 9.883e-03 1.331e-02 + 1.822e-02 2.502e-02 3.401e-02 4.501e-02 5.700e-02 6.809e-02 + 7.300e-02 7.300e-02 6.863e-02 6.074e-02 5.077e-02 4.045e-02 + 3.122e-02 2.381e-02 1.822e-02 1.411e-02 1.116e-02 9.254e-03 + 8.324e-03 8.324e-03 9.254e-03 1.116e-02 1.411e-02 1.822e-02 + 2.381e-02 3.122e-02 4.045e-02 5.077e-02 6.074e-02 6.863e-02 + 6.466e-02 6.353e-02 6.009e-02 5.436e-02 4.685e-02 3.872e-02 + 3.122e-02 2.502e-02 2.015e-02 1.639e-02 1.366e-02 1.198e-02 + 1.141e-02 1.198e-02 1.366e-02 1.639e-02 2.015e-02 2.502e-02 + 3.122e-02 3.872e-02 4.685e-02 5.436e-02 6.009e-02 6.353e-02 + 5.397e-02 5.442e-02 5.416e-02 5.176e-02 4.685e-02 4.045e-02 + 3.401e-02 2.838e-02 2.375e-02 2.007e-02 1.744e-02 1.606e-02 + 1.606e-02 1.744e-02 2.007e-02 2.375e-02 2.838e-02 3.401e-02 + 4.045e-02 4.685e-02 5.176e-02 5.416e-02 5.442e-02 5.397e-02 + 4.650e-02 5.065e-02 5.416e-02 5.436e-02 5.077e-02 4.501e-02 + 3.895e-02 3.354e-02 2.897e-02 2.531e-02 2.286e-02 2.199e-02 + 2.286e-02 2.531e-02 2.897e-02 3.354e-02 3.895e-02 4.501e-02 + 5.077e-02 5.436e-02 5.416e-02 5.065e-02 4.650e-02 4.471e-02 + 4.650e-02 5.442e-02 6.009e-02 6.074e-02 5.700e-02 5.133e-02 + 4.565e-02 4.056e-02 3.604e-02 3.238e-02 3.025e-02 3.025e-02 + 3.238e-02 3.604e-02 4.056e-02 4.565e-02 5.133e-02 5.700e-02 + 6.074e-02 6.009e-02 5.442e-02 4.650e-02 4.091e-02 4.091e-02 + 5.397e-02 6.353e-02 6.863e-02 6.809e-02 6.404e-02 5.911e-02 + 5.434e-02 4.953e-02 4.466e-02 4.073e-02 3.920e-02 4.073e-02 + 4.466e-02 4.953e-02 5.434e-02 5.911e-02 6.404e-02 6.809e-02 + 6.863e-02 6.353e-02 5.397e-02 4.471e-02 4.091e-02 4.471e-02 + 6.053e-02 6.459e-02 6.613e-02 6.639e-02 6.613e-02 6.459e-02 + 6.053e-02 5.421e-02 4.821e-02 4.573e-02 4.821e-02 5.421e-02 + 6.053e-02 6.459e-02 6.613e-02 6.639e-02 6.613e-02 6.459e-02 + 6.053e-02 5.421e-02 4.821e-02 4.573e-02 4.821e-02 5.421e-02 + 6.459e-02 6.870e-02 7.190e-02 7.478e-02 7.603e-02 7.300e-02 + 6.466e-02 5.397e-02 4.650e-02 4.650e-02 5.397e-02 6.466e-02 + 7.300e-02 7.603e-02 7.478e-02 7.190e-02 6.870e-02 6.459e-02 + 5.881e-02 5.237e-02 4.798e-02 4.798e-02 5.237e-02 5.881e-02 + 6.613e-02 7.190e-02 7.798e-02 8.268e-02 8.198e-02 7.277e-02 + 5.728e-02 4.294e-02 3.719e-02 4.294e-02 5.728e-02 7.277e-02 + 8.198e-02 8.268e-02 7.798e-02 7.190e-02 6.613e-02 6.025e-02 + 5.398e-02 4.868e-02 4.655e-02 4.868e-02 5.398e-02 6.025e-02 + 6.639e-02 7.478e-02 8.268e-02 8.528e-02 7.727e-02 5.903e-02 + 3.853e-02 2.556e-02 2.556e-02 3.853e-02 5.903e-02 7.727e-02 + 8.528e-02 8.268e-02 7.478e-02 6.639e-02 5.911e-02 5.260e-02 + 4.693e-02 4.341e-02 4.341e-02 4.693e-02 5.260e-02 5.911e-02 + 6.613e-02 7.603e-02 8.198e-02 7.727e-02 5.962e-02 3.604e-02 + 1.770e-02 1.115e-02 1.770e-02 3.604e-02 5.962e-02 7.727e-02 + 8.198e-02 7.603e-02 6.613e-02 5.689e-02 4.939e-02 4.330e-02 + 3.892e-02 3.728e-02 3.892e-02 4.330e-02 4.939e-02 5.689e-02 + 6.459e-02 7.300e-02 7.277e-02 5.903e-02 3.604e-02 1.527e-02 + 4.526e-03 4.526e-03 1.527e-02 3.604e-02 5.903e-02 7.277e-02 + 7.300e-02 6.459e-02 5.434e-02 4.565e-02 3.895e-02 3.401e-02 + 3.122e-02 3.122e-02 3.401e-02 3.895e-02 4.565e-02 5.434e-02 + 6.053e-02 6.466e-02 5.728e-02 3.853e-02 1.770e-02 4.526e-03 + 6.306e-04 4.526e-03 1.770e-02 3.853e-02 5.728e-02 6.466e-02 + 6.053e-02 5.116e-02 4.192e-02 3.468e-02 2.936e-02 2.589e-02 + 2.464e-02 2.589e-02 2.936e-02 3.468e-02 4.192e-02 5.116e-02 + 5.421e-02 5.397e-02 4.294e-02 2.556e-02 1.115e-02 4.526e-03 + 4.526e-03 1.115e-02 2.556e-02 4.294e-02 5.397e-02 5.421e-02 + 4.707e-02 3.820e-02 3.074e-02 2.524e-02 2.145e-02 1.942e-02 + 1.942e-02 2.145e-02 2.524e-02 3.074e-02 3.820e-02 4.707e-02 + 4.821e-02 4.650e-02 3.719e-02 2.556e-02 1.770e-02 1.527e-02 + 1.770e-02 2.556e-02 3.719e-02 4.650e-02 4.821e-02 4.283e-02 + 3.469e-02 2.728e-02 2.171e-02 1.781e-02 1.538e-02 1.453e-02 + 1.538e-02 1.781e-02 2.171e-02 2.728e-02 3.469e-02 4.283e-02 + 4.573e-02 4.650e-02 4.294e-02 3.853e-02 3.604e-02 3.604e-02 + 3.853e-02 4.294e-02 4.650e-02 4.573e-02 4.006e-02 3.206e-02 + 2.460e-02 1.893e-02 1.495e-02 1.232e-02 1.096e-02 1.096e-02 + 1.232e-02 1.495e-02 1.893e-02 2.460e-02 3.206e-02 4.006e-02 + 4.821e-02 5.397e-02 5.728e-02 5.903e-02 5.962e-02 5.903e-02 + 5.728e-02 5.397e-02 4.821e-02 4.006e-02 3.107e-02 2.313e-02 + 1.714e-02 1.296e-02 1.016e-02 8.487e-03 7.921e-03 8.487e-03 + 1.016e-02 1.296e-02 1.714e-02 2.313e-02 3.107e-02 4.006e-02 + 5.421e-02 6.466e-02 7.277e-02 7.727e-02 7.727e-02 7.277e-02 + 6.466e-02 5.421e-02 4.283e-02 3.206e-02 2.313e-02 1.653e-02 + 1.196e-02 8.892e-03 6.959e-03 6.008e-03 6.008e-03 6.959e-03 + 8.892e-03 1.196e-02 1.653e-02 2.313e-02 3.206e-02 4.283e-02 + 6.053e-02 7.300e-02 8.198e-02 8.528e-02 8.198e-02 7.300e-02 + 6.053e-02 4.707e-02 3.469e-02 2.460e-02 1.714e-02 1.196e-02 + 8.479e-03 6.247e-03 4.997e-03 4.595e-03 4.997e-03 6.247e-03 + 8.479e-03 1.196e-02 1.714e-02 2.460e-02 3.469e-02 4.707e-02 + 6.459e-02 7.603e-02 8.268e-02 8.268e-02 7.603e-02 6.459e-02 + 5.116e-02 3.820e-02 2.728e-02 1.893e-02 1.296e-02 8.892e-03 + 6.247e-03 4.689e-03 3.979e-03 3.979e-03 4.689e-03 6.247e-03 + 8.892e-03 1.296e-02 1.893e-02 2.728e-02 3.820e-02 5.116e-02 + 6.613e-02 7.478e-02 7.798e-02 7.478e-02 6.613e-02 5.434e-02 + 4.192e-02 3.074e-02 2.171e-02 1.495e-02 1.016e-02 6.959e-03 + 4.997e-03 3.979e-03 3.671e-03 3.979e-03 4.997e-03 6.959e-03 + 1.016e-02 1.495e-02 2.171e-02 3.074e-02 4.192e-02 5.434e-02 + 6.639e-02 7.190e-02 7.190e-02 6.639e-02 5.689e-02 4.565e-02 + 3.468e-02 2.524e-02 1.781e-02 1.232e-02 8.487e-03 6.008e-03 + 4.595e-03 3.979e-03 3.979e-03 4.595e-03 6.008e-03 8.487e-03 + 1.232e-02 1.781e-02 2.524e-02 3.468e-02 4.565e-02 5.689e-02 + 6.613e-02 6.870e-02 6.613e-02 5.911e-02 4.939e-02 3.895e-02 + 2.936e-02 2.145e-02 1.538e-02 1.096e-02 7.921e-03 6.008e-03 + 4.997e-03 4.689e-03 4.997e-03 6.008e-03 7.921e-03 1.096e-02 + 1.538e-02 2.145e-02 2.936e-02 3.895e-02 4.939e-02 5.911e-02 + 6.459e-02 6.459e-02 6.025e-02 5.260e-02 4.330e-02 3.401e-02 + 2.589e-02 1.942e-02 1.453e-02 1.096e-02 8.487e-03 6.959e-03 + 6.247e-03 6.247e-03 6.959e-03 8.487e-03 1.096e-02 1.453e-02 + 1.942e-02 2.589e-02 3.401e-02 4.330e-02 5.260e-02 6.025e-02 + 6.053e-02 5.881e-02 5.398e-02 4.693e-02 3.892e-02 3.122e-02 + 2.464e-02 1.942e-02 1.538e-02 1.232e-02 1.016e-02 8.892e-03 + 8.479e-03 8.892e-03 1.016e-02 1.232e-02 1.538e-02 1.942e-02 + 2.464e-02 3.122e-02 3.892e-02 4.693e-02 5.398e-02 5.881e-02 + 5.421e-02 5.237e-02 4.868e-02 4.341e-02 3.728e-02 3.122e-02 + 2.589e-02 2.145e-02 1.781e-02 1.495e-02 1.296e-02 1.196e-02 + 1.196e-02 1.296e-02 1.495e-02 1.781e-02 2.145e-02 2.589e-02 + 3.122e-02 3.728e-02 4.341e-02 4.868e-02 5.237e-02 5.421e-02 + 4.821e-02 4.798e-02 4.655e-02 4.341e-02 3.892e-02 3.401e-02 + 2.936e-02 2.524e-02 2.171e-02 1.893e-02 1.714e-02 1.653e-02 + 1.714e-02 1.893e-02 2.171e-02 2.524e-02 2.936e-02 3.401e-02 + 3.892e-02 4.341e-02 4.655e-02 4.798e-02 4.821e-02 4.814e-02 + 4.573e-02 4.798e-02 4.868e-02 4.693e-02 4.330e-02 3.895e-02 + 3.468e-02 3.074e-02 2.728e-02 2.460e-02 2.313e-02 2.313e-02 + 2.460e-02 2.728e-02 3.074e-02 3.468e-02 3.895e-02 4.330e-02 + 4.693e-02 4.868e-02 4.798e-02 4.573e-02 4.385e-02 4.385e-02 + 4.821e-02 5.237e-02 5.398e-02 5.260e-02 4.939e-02 4.565e-02 + 4.192e-02 3.820e-02 3.469e-02 3.206e-02 3.107e-02 3.206e-02 + 3.469e-02 3.820e-02 4.192e-02 4.565e-02 4.939e-02 5.260e-02 + 5.398e-02 5.237e-02 4.821e-02 4.385e-02 4.201e-02 4.385e-02 + 5.421e-02 5.881e-02 6.025e-02 5.911e-02 5.689e-02 5.434e-02 + 5.116e-02 4.707e-02 4.283e-02 4.006e-02 4.006e-02 4.283e-02 + 4.707e-02 5.116e-02 5.434e-02 5.689e-02 5.911e-02 6.025e-02 + 5.881e-02 5.421e-02 4.814e-02 4.385e-02 4.385e-02 4.814e-02 + 5.116e-02 5.434e-02 5.689e-02 5.911e-02 6.025e-02 5.881e-02 + 5.421e-02 4.814e-02 4.385e-02 4.385e-02 4.814e-02 5.421e-02 + 5.881e-02 6.025e-02 5.911e-02 5.689e-02 5.434e-02 5.116e-02 + 4.707e-02 4.283e-02 4.006e-02 4.006e-02 4.283e-02 4.707e-02 + 5.434e-02 5.911e-02 6.404e-02 6.809e-02 6.863e-02 6.353e-02 + 5.397e-02 4.471e-02 4.091e-02 4.471e-02 5.397e-02 6.353e-02 + 6.863e-02 6.809e-02 6.404e-02 5.911e-02 5.434e-02 4.953e-02 + 4.466e-02 4.073e-02 3.920e-02 4.073e-02 4.466e-02 4.953e-02 + 5.689e-02 6.404e-02 7.099e-02 7.430e-02 7.000e-02 5.775e-02 + 4.294e-02 3.313e-02 3.313e-02 4.294e-02 5.775e-02 7.000e-02 + 7.430e-02 7.099e-02 6.404e-02 5.689e-02 5.061e-02 4.502e-02 + 4.029e-02 3.742e-02 3.742e-02 4.029e-02 4.502e-02 5.061e-02 + 5.911e-02 6.809e-02 7.430e-02 7.233e-02 5.968e-02 4.108e-02 + 2.556e-02 1.973e-02 2.556e-02 4.108e-02 5.968e-02 7.233e-02 + 7.430e-02 6.809e-02 5.911e-02 5.086e-02 4.411e-02 3.864e-02 + 3.477e-02 3.333e-02 3.477e-02 3.864e-02 4.411e-02 5.086e-02 + 6.025e-02 6.863e-02 7.000e-02 5.968e-02 4.041e-02 2.162e-02 + 1.115e-02 1.115e-02 2.162e-02 4.041e-02 5.968e-02 7.000e-02 + 6.863e-02 6.025e-02 5.061e-02 4.252e-02 3.625e-02 3.163e-02 + 2.904e-02 2.904e-02 3.163e-02 3.625e-02 4.252e-02 5.061e-02 + 5.881e-02 6.353e-02 5.775e-02 4.108e-02 2.162e-02 8.601e-03 + 4.526e-03 8.601e-03 2.162e-02 4.108e-02 5.775e-02 6.353e-02 + 5.881e-02 4.953e-02 4.056e-02 3.354e-02 2.838e-02 2.502e-02 + 2.381e-02 2.502e-02 2.838e-02 3.354e-02 4.056e-02 4.953e-02 + 5.421e-02 5.397e-02 4.294e-02 2.556e-02 1.115e-02 4.526e-03 + 4.526e-03 1.115e-02 2.556e-02 4.294e-02 5.397e-02 5.421e-02 + 4.707e-02 3.820e-02 3.074e-02 2.524e-02 2.145e-02 1.942e-02 + 1.942e-02 2.145e-02 2.524e-02 3.074e-02 3.820e-02 4.707e-02 + 4.814e-02 4.471e-02 3.313e-02 1.973e-02 1.115e-02 8.601e-03 + 1.115e-02 1.973e-02 3.313e-02 4.471e-02 4.814e-02 4.355e-02 + 3.552e-02 2.799e-02 2.230e-02 1.832e-02 1.584e-02 1.498e-02 + 1.584e-02 1.832e-02 2.230e-02 2.799e-02 3.552e-02 4.355e-02 + 4.385e-02 4.091e-02 3.313e-02 2.556e-02 2.162e-02 2.162e-02 + 2.556e-02 3.313e-02 4.091e-02 4.385e-02 4.032e-02 3.303e-02 + 2.558e-02 1.975e-02 1.566e-02 1.297e-02 1.158e-02 1.158e-02 + 1.297e-02 1.566e-02 1.975e-02 2.558e-02 3.303e-02 4.032e-02 + 4.385e-02 4.471e-02 4.294e-02 4.108e-02 4.041e-02 4.108e-02 + 4.294e-02 4.471e-02 4.385e-02 3.901e-02 3.151e-02 2.393e-02 + 1.789e-02 1.363e-02 1.078e-02 9.073e-03 8.494e-03 9.073e-03 + 1.078e-02 1.363e-02 1.789e-02 2.393e-02 3.151e-02 3.901e-02 + 4.814e-02 5.397e-02 5.775e-02 5.968e-02 5.968e-02 5.775e-02 + 5.397e-02 4.814e-02 4.032e-02 3.151e-02 2.335e-02 1.693e-02 + 1.238e-02 9.326e-03 7.387e-03 6.424e-03 6.424e-03 7.387e-03 + 9.326e-03 1.238e-02 1.693e-02 2.335e-02 3.151e-02 4.032e-02 + 5.421e-02 6.353e-02 7.000e-02 7.233e-02 7.000e-02 6.353e-02 + 5.421e-02 4.355e-02 3.303e-02 2.393e-02 1.693e-02 1.197e-02 + 8.621e-03 6.445e-03 5.200e-03 4.792e-03 5.200e-03 6.445e-03 + 8.621e-03 1.197e-02 1.693e-02 2.393e-02 3.303e-02 4.355e-02 + 5.881e-02 6.863e-02 7.430e-02 7.430e-02 6.863e-02 5.881e-02 + 4.707e-02 3.552e-02 2.558e-02 1.789e-02 1.238e-02 8.621e-03 + 6.148e-03 4.651e-03 3.948e-03 3.948e-03 4.651e-03 6.148e-03 + 8.621e-03 1.238e-02 1.789e-02 2.558e-02 3.552e-02 4.707e-02 + 6.025e-02 6.809e-02 7.099e-02 6.809e-02 6.025e-02 4.953e-02 + 3.820e-02 2.799e-02 1.975e-02 1.363e-02 9.326e-03 6.445e-03 + 4.651e-03 3.695e-03 3.399e-03 3.695e-03 4.651e-03 6.445e-03 + 9.326e-03 1.363e-02 1.975e-02 2.799e-02 3.820e-02 4.953e-02 + 5.911e-02 6.404e-02 6.404e-02 5.911e-02 5.061e-02 4.056e-02 + 3.074e-02 2.230e-02 1.566e-02 1.078e-02 7.387e-03 5.200e-03 + 3.948e-03 3.399e-03 3.399e-03 3.948e-03 5.200e-03 7.387e-03 + 1.078e-02 1.566e-02 2.230e-02 3.074e-02 4.056e-02 5.061e-02 + 5.689e-02 5.911e-02 5.689e-02 5.086e-02 4.252e-02 3.354e-02 + 2.524e-02 1.832e-02 1.297e-02 9.073e-03 6.424e-03 4.792e-03 + 3.948e-03 3.695e-03 3.948e-03 4.792e-03 6.424e-03 9.073e-03 + 1.297e-02 1.832e-02 2.524e-02 3.354e-02 4.252e-02 5.086e-02 + 5.434e-02 5.434e-02 5.061e-02 4.411e-02 3.625e-02 2.838e-02 + 2.145e-02 1.584e-02 1.158e-02 8.494e-03 6.424e-03 5.200e-03 + 4.651e-03 4.651e-03 5.200e-03 6.424e-03 8.494e-03 1.158e-02 + 1.584e-02 2.145e-02 2.838e-02 3.625e-02 4.411e-02 5.061e-02 + 5.116e-02 4.953e-02 4.502e-02 3.864e-02 3.163e-02 2.502e-02 + 1.942e-02 1.498e-02 1.158e-02 9.073e-03 7.387e-03 6.445e-03 + 6.148e-03 6.445e-03 7.387e-03 9.073e-03 1.158e-02 1.498e-02 + 1.942e-02 2.502e-02 3.163e-02 3.864e-02 4.502e-02 4.953e-02 + 4.707e-02 4.466e-02 4.029e-02 3.477e-02 2.904e-02 2.381e-02 + 1.942e-02 1.584e-02 1.297e-02 1.078e-02 9.326e-03 8.621e-03 + 8.621e-03 9.326e-03 1.078e-02 1.297e-02 1.584e-02 1.942e-02 + 2.381e-02 2.904e-02 3.477e-02 4.029e-02 4.466e-02 4.707e-02 + 4.283e-02 4.073e-02 3.742e-02 3.333e-02 2.904e-02 2.502e-02 + 2.145e-02 1.832e-02 1.566e-02 1.363e-02 1.238e-02 1.197e-02 + 1.238e-02 1.363e-02 1.566e-02 1.832e-02 2.145e-02 2.502e-02 + 2.904e-02 3.333e-02 3.742e-02 4.073e-02 4.283e-02 4.355e-02 + 4.006e-02 3.920e-02 3.742e-02 3.477e-02 3.163e-02 2.838e-02 + 2.524e-02 2.230e-02 1.975e-02 1.789e-02 1.693e-02 1.693e-02 + 1.789e-02 1.975e-02 2.230e-02 2.524e-02 2.838e-02 3.163e-02 + 3.477e-02 3.742e-02 3.920e-02 4.006e-02 4.032e-02 4.032e-02 + 4.006e-02 4.073e-02 4.029e-02 3.864e-02 3.625e-02 3.354e-02 + 3.074e-02 2.799e-02 2.558e-02 2.393e-02 2.335e-02 2.393e-02 + 2.558e-02 2.799e-02 3.074e-02 3.354e-02 3.625e-02 3.864e-02 + 4.029e-02 4.073e-02 4.006e-02 3.901e-02 3.852e-02 3.901e-02 + 4.283e-02 4.466e-02 4.502e-02 4.411e-02 4.252e-02 4.056e-02 + 3.820e-02 3.552e-02 3.303e-02 3.151e-02 3.151e-02 3.303e-02 + 3.552e-02 3.820e-02 4.056e-02 4.252e-02 4.411e-02 4.502e-02 + 4.466e-02 4.283e-02 4.032e-02 3.852e-02 3.852e-02 4.032e-02 + 4.707e-02 4.953e-02 5.061e-02 5.086e-02 5.061e-02 4.953e-02 + 4.707e-02 4.355e-02 4.032e-02 3.901e-02 4.032e-02 4.355e-02 + 4.707e-02 4.953e-02 5.061e-02 5.086e-02 5.061e-02 4.953e-02 + 4.707e-02 4.355e-02 4.032e-02 3.901e-02 4.032e-02 4.355e-02 + 4.192e-02 4.565e-02 4.939e-02 5.260e-02 5.398e-02 5.237e-02 + 4.821e-02 4.385e-02 4.201e-02 4.385e-02 4.821e-02 5.237e-02 + 5.398e-02 5.260e-02 4.939e-02 4.565e-02 4.192e-02 3.820e-02 + 3.469e-02 3.206e-02 3.107e-02 3.206e-02 3.469e-02 3.820e-02 + 4.565e-02 5.133e-02 5.700e-02 6.074e-02 6.009e-02 5.442e-02 + 4.650e-02 4.091e-02 4.091e-02 4.650e-02 5.442e-02 6.009e-02 + 6.074e-02 5.700e-02 5.133e-02 4.565e-02 4.056e-02 3.604e-02 + 3.238e-02 3.025e-02 3.025e-02 3.238e-02 3.604e-02 4.056e-02 + 4.939e-02 5.700e-02 6.323e-02 6.446e-02 5.845e-02 4.740e-02 + 3.719e-02 3.313e-02 3.719e-02 4.740e-02 5.845e-02 6.446e-02 + 6.323e-02 5.700e-02 4.939e-02 4.252e-02 3.681e-02 3.221e-02 + 2.903e-02 2.787e-02 2.903e-02 3.221e-02 3.681e-02 4.252e-02 + 5.260e-02 6.074e-02 6.446e-02 5.986e-02 4.765e-02 3.399e-02 + 2.556e-02 2.556e-02 3.399e-02 4.765e-02 5.986e-02 6.446e-02 + 6.074e-02 5.260e-02 4.411e-02 3.705e-02 3.153e-02 2.748e-02 + 2.524e-02 2.524e-02 2.748e-02 3.153e-02 3.705e-02 4.411e-02 + 5.398e-02 6.009e-02 5.845e-02 4.765e-02 3.287e-02 2.162e-02 + 1.770e-02 2.162e-02 3.287e-02 4.765e-02 5.845e-02 6.009e-02 + 5.398e-02 4.502e-02 3.681e-02 3.042e-02 2.570e-02 2.263e-02 + 2.153e-02 2.263e-02 2.570e-02 3.042e-02 3.681e-02 4.502e-02 + 5.237e-02 5.442e-02 4.740e-02 3.399e-02 2.162e-02 1.527e-02 + 1.527e-02 2.162e-02 3.399e-02 4.740e-02 5.442e-02 5.237e-02 + 4.466e-02 3.604e-02 2.897e-02 2.375e-02 2.015e-02 1.822e-02 + 1.822e-02 2.015e-02 2.375e-02 2.897e-02 3.604e-02 4.466e-02 + 4.821e-02 4.650e-02 3.719e-02 2.556e-02 1.770e-02 1.527e-02 + 1.770e-02 2.556e-02 3.719e-02 4.650e-02 4.821e-02 4.283e-02 + 3.469e-02 2.728e-02 2.171e-02 1.781e-02 1.538e-02 1.453e-02 + 1.538e-02 1.781e-02 2.171e-02 2.728e-02 3.469e-02 4.283e-02 + 4.385e-02 4.091e-02 3.313e-02 2.556e-02 2.162e-02 2.162e-02 + 2.556e-02 3.313e-02 4.091e-02 4.385e-02 4.032e-02 3.303e-02 + 2.558e-02 1.975e-02 1.566e-02 1.297e-02 1.158e-02 1.158e-02 + 1.297e-02 1.566e-02 1.975e-02 2.558e-02 3.303e-02 4.032e-02 + 4.201e-02 4.091e-02 3.719e-02 3.399e-02 3.287e-02 3.399e-02 + 3.719e-02 4.091e-02 4.201e-02 3.852e-02 3.165e-02 2.422e-02 + 1.816e-02 1.386e-02 1.100e-02 9.285e-03 8.703e-03 9.285e-03 + 1.100e-02 1.386e-02 1.816e-02 2.422e-02 3.165e-02 3.852e-02 + 4.385e-02 4.650e-02 4.740e-02 4.765e-02 4.765e-02 4.740e-02 + 4.650e-02 4.385e-02 3.852e-02 3.112e-02 2.348e-02 1.717e-02 + 1.262e-02 9.563e-03 7.626e-03 6.662e-03 6.662e-03 7.626e-03 + 9.563e-03 1.262e-02 1.717e-02 2.348e-02 3.112e-02 3.852e-02 + 4.821e-02 5.442e-02 5.845e-02 5.986e-02 5.845e-02 5.442e-02 + 4.821e-02 4.032e-02 3.165e-02 2.348e-02 1.684e-02 1.201e-02 + 8.723e-03 6.580e-03 5.346e-03 4.940e-03 5.346e-03 6.580e-03 + 8.723e-03 1.201e-02 1.684e-02 2.348e-02 3.165e-02 4.032e-02 + 5.237e-02 6.009e-02 6.446e-02 6.446e-02 6.009e-02 5.237e-02 + 4.283e-02 3.303e-02 2.422e-02 1.717e-02 1.201e-02 8.453e-03 + 6.091e-03 4.638e-03 3.945e-03 3.945e-03 4.638e-03 6.091e-03 + 8.453e-03 1.201e-02 1.717e-02 2.422e-02 3.303e-02 4.283e-02 + 5.398e-02 6.074e-02 6.323e-02 6.074e-02 5.398e-02 4.466e-02 + 3.469e-02 2.558e-02 1.816e-02 1.262e-02 8.723e-03 6.091e-03 + 4.420e-03 3.506e-03 3.218e-03 3.506e-03 4.420e-03 6.091e-03 + 8.723e-03 1.262e-02 1.816e-02 2.558e-02 3.469e-02 4.466e-02 + 5.260e-02 5.700e-02 5.700e-02 5.260e-02 4.502e-02 3.604e-02 + 2.728e-02 1.975e-02 1.386e-02 9.563e-03 6.580e-03 4.638e-03 + 3.506e-03 2.998e-03 2.998e-03 3.506e-03 4.638e-03 6.580e-03 + 9.563e-03 1.386e-02 1.975e-02 2.728e-02 3.604e-02 4.502e-02 + 4.939e-02 5.133e-02 4.939e-02 4.411e-02 3.681e-02 2.897e-02 + 2.171e-02 1.566e-02 1.100e-02 7.626e-03 5.346e-03 3.945e-03 + 3.218e-03 2.998e-03 3.218e-03 3.945e-03 5.346e-03 7.626e-03 + 1.100e-02 1.566e-02 2.171e-02 2.897e-02 3.681e-02 4.411e-02 + 4.565e-02 4.565e-02 4.252e-02 3.705e-02 3.042e-02 2.375e-02 + 1.781e-02 1.297e-02 9.285e-03 6.662e-03 4.940e-03 3.945e-03 + 3.506e-03 3.506e-03 3.945e-03 4.940e-03 6.662e-03 9.285e-03 + 1.297e-02 1.781e-02 2.375e-02 3.042e-02 3.705e-02 4.252e-02 + 4.192e-02 4.056e-02 3.681e-02 3.153e-02 2.570e-02 2.015e-02 + 1.538e-02 1.158e-02 8.703e-03 6.662e-03 5.346e-03 4.638e-03 + 4.420e-03 4.638e-03 5.346e-03 6.662e-03 8.703e-03 1.158e-02 + 1.538e-02 2.015e-02 2.570e-02 3.153e-02 3.681e-02 4.056e-02 + 3.820e-02 3.604e-02 3.221e-02 2.748e-02 2.263e-02 1.822e-02 + 1.453e-02 1.158e-02 9.285e-03 7.626e-03 6.580e-03 6.091e-03 + 6.091e-03 6.580e-03 7.626e-03 9.285e-03 1.158e-02 1.453e-02 + 1.822e-02 2.263e-02 2.748e-02 3.221e-02 3.604e-02 3.820e-02 + 3.469e-02 3.238e-02 2.903e-02 2.524e-02 2.153e-02 1.822e-02 + 1.538e-02 1.297e-02 1.100e-02 9.563e-03 8.723e-03 8.453e-03 + 8.723e-03 9.563e-03 1.100e-02 1.297e-02 1.538e-02 1.822e-02 + 2.153e-02 2.524e-02 2.903e-02 3.238e-02 3.469e-02 3.552e-02 + 3.206e-02 3.025e-02 2.787e-02 2.524e-02 2.263e-02 2.015e-02 + 1.781e-02 1.566e-02 1.386e-02 1.262e-02 1.201e-02 1.201e-02 + 1.262e-02 1.386e-02 1.566e-02 1.781e-02 2.015e-02 2.263e-02 + 2.524e-02 2.787e-02 3.025e-02 3.206e-02 3.303e-02 3.303e-02 + 3.107e-02 3.025e-02 2.903e-02 2.748e-02 2.570e-02 2.375e-02 + 2.171e-02 1.975e-02 1.816e-02 1.717e-02 1.684e-02 1.717e-02 + 1.816e-02 1.975e-02 2.171e-02 2.375e-02 2.570e-02 2.748e-02 + 2.903e-02 3.025e-02 3.107e-02 3.151e-02 3.165e-02 3.151e-02 + 3.206e-02 3.238e-02 3.221e-02 3.153e-02 3.042e-02 2.897e-02 + 2.728e-02 2.558e-02 2.422e-02 2.348e-02 2.348e-02 2.422e-02 + 2.558e-02 2.728e-02 2.897e-02 3.042e-02 3.153e-02 3.221e-02 + 3.238e-02 3.206e-02 3.151e-02 3.112e-02 3.112e-02 3.151e-02 + 3.469e-02 3.604e-02 3.681e-02 3.705e-02 3.681e-02 3.604e-02 + 3.469e-02 3.303e-02 3.165e-02 3.112e-02 3.165e-02 3.303e-02 + 3.469e-02 3.604e-02 3.681e-02 3.705e-02 3.681e-02 3.604e-02 + 3.469e-02 3.303e-02 3.165e-02 3.112e-02 3.165e-02 3.303e-02 + 3.820e-02 4.056e-02 4.252e-02 4.411e-02 4.502e-02 4.466e-02 + 4.283e-02 4.032e-02 3.852e-02 3.852e-02 4.032e-02 4.283e-02 + 4.466e-02 4.502e-02 4.411e-02 4.252e-02 4.056e-02 3.820e-02 + 3.552e-02 3.303e-02 3.151e-02 3.151e-02 3.303e-02 3.552e-02 + 3.468e-02 3.895e-02 4.330e-02 4.693e-02 4.868e-02 4.798e-02 + 4.573e-02 4.385e-02 4.385e-02 4.573e-02 4.798e-02 4.868e-02 + 4.693e-02 4.330e-02 3.895e-02 3.468e-02 3.074e-02 2.728e-02 + 2.460e-02 2.313e-02 2.313e-02 2.460e-02 2.728e-02 3.074e-02 + 3.895e-02 4.501e-02 5.077e-02 5.436e-02 5.416e-02 5.065e-02 + 4.650e-02 4.471e-02 4.650e-02 5.065e-02 5.416e-02 5.436e-02 + 5.077e-02 4.501e-02 3.895e-02 3.354e-02 2.897e-02 2.531e-02 + 2.286e-02 2.199e-02 2.286e-02 2.531e-02 2.897e-02 3.354e-02 + 4.330e-02 5.077e-02 5.643e-02 5.759e-02 5.366e-02 4.740e-02 + 4.294e-02 4.294e-02 4.740e-02 5.366e-02 5.759e-02 5.643e-02 + 5.077e-02 4.330e-02 3.625e-02 3.042e-02 2.582e-02 2.247e-02 + 2.066e-02 2.066e-02 2.247e-02 2.582e-02 3.042e-02 3.625e-02 + 4.693e-02 5.436e-02 5.759e-02 5.469e-02 4.765e-02 4.108e-02 + 3.853e-02 4.108e-02 4.765e-02 5.469e-02 5.759e-02 5.436e-02 + 4.693e-02 3.864e-02 3.153e-02 2.600e-02 2.191e-02 1.926e-02 + 1.833e-02 1.926e-02 2.191e-02 2.600e-02 3.153e-02 3.864e-02 + 4.868e-02 5.416e-02 5.366e-02 4.765e-02 4.041e-02 3.604e-02 + 3.604e-02 4.041e-02 4.765e-02 5.366e-02 5.416e-02 4.868e-02 + 4.029e-02 3.221e-02 2.582e-02 2.110e-02 1.784e-02 1.612e-02 + 1.612e-02 1.784e-02 2.110e-02 2.582e-02 3.221e-02 4.029e-02 + 4.798e-02 5.065e-02 4.740e-02 4.108e-02 3.604e-02 3.431e-02 + 3.604e-02 4.108e-02 4.740e-02 5.065e-02 4.798e-02 4.073e-02 + 3.238e-02 2.531e-02 2.007e-02 1.639e-02 1.411e-02 1.331e-02 + 1.411e-02 1.639e-02 2.007e-02 2.531e-02 3.238e-02 4.073e-02 + 4.573e-02 4.650e-02 4.294e-02 3.853e-02 3.604e-02 3.604e-02 + 3.853e-02 4.294e-02 4.650e-02 4.573e-02 4.006e-02 3.206e-02 + 2.460e-02 1.893e-02 1.495e-02 1.232e-02 1.096e-02 1.096e-02 + 1.232e-02 1.495e-02 1.893e-02 2.460e-02 3.206e-02 4.006e-02 + 4.385e-02 4.471e-02 4.294e-02 4.108e-02 4.041e-02 4.108e-02 + 4.294e-02 4.471e-02 4.385e-02 3.901e-02 3.151e-02 2.393e-02 + 1.789e-02 1.363e-02 1.078e-02 9.073e-03 8.494e-03 9.073e-03 + 1.078e-02 1.363e-02 1.789e-02 2.393e-02 3.151e-02 3.901e-02 + 4.385e-02 4.650e-02 4.740e-02 4.765e-02 4.765e-02 4.740e-02 + 4.650e-02 4.385e-02 3.852e-02 3.112e-02 2.348e-02 1.717e-02 + 1.262e-02 9.563e-03 7.626e-03 6.662e-03 6.662e-03 7.626e-03 + 9.563e-03 1.262e-02 1.717e-02 2.348e-02 3.112e-02 3.852e-02 + 4.573e-02 5.065e-02 5.366e-02 5.469e-02 5.366e-02 5.065e-02 + 4.573e-02 3.901e-02 3.112e-02 2.333e-02 1.682e-02 1.203e-02 + 8.760e-03 6.629e-03 5.400e-03 4.995e-03 5.400e-03 6.629e-03 + 8.760e-03 1.203e-02 1.682e-02 2.333e-02 3.112e-02 3.901e-02 + 4.798e-02 5.416e-02 5.759e-02 5.759e-02 5.416e-02 4.798e-02 + 4.006e-02 3.151e-02 2.348e-02 1.682e-02 1.185e-02 8.378e-03 + 6.065e-03 4.635e-03 3.948e-03 3.948e-03 4.635e-03 6.065e-03 + 8.378e-03 1.185e-02 1.682e-02 2.348e-02 3.151e-02 4.006e-02 + 4.868e-02 5.436e-02 5.643e-02 5.436e-02 4.868e-02 4.073e-02 + 3.206e-02 2.393e-02 1.717e-02 1.203e-02 8.378e-03 5.886e-03 + 4.284e-03 3.394e-03 3.110e-03 3.394e-03 4.284e-03 5.886e-03 + 8.378e-03 1.203e-02 1.717e-02 2.393e-02 3.206e-02 4.073e-02 + 4.693e-02 5.077e-02 5.077e-02 4.693e-02 4.029e-02 3.238e-02 + 2.460e-02 1.789e-02 1.262e-02 8.760e-03 6.065e-03 4.284e-03 + 3.224e-03 2.739e-03 2.739e-03 3.224e-03 4.284e-03 6.065e-03 + 8.760e-03 1.262e-02 1.789e-02 2.460e-02 3.238e-02 4.029e-02 + 4.330e-02 4.501e-02 4.330e-02 3.864e-02 3.221e-02 2.531e-02 + 1.893e-02 1.363e-02 9.563e-03 6.629e-03 4.635e-03 3.394e-03 + 2.739e-03 2.539e-03 2.739e-03 3.394e-03 4.635e-03 6.629e-03 + 9.563e-03 1.363e-02 1.893e-02 2.531e-02 3.221e-02 3.864e-02 + 3.895e-02 3.895e-02 3.625e-02 3.153e-02 2.582e-02 2.007e-02 + 1.495e-02 1.078e-02 7.626e-03 5.400e-03 3.948e-03 3.110e-03 + 2.739e-03 2.739e-03 3.110e-03 3.948e-03 5.400e-03 7.626e-03 + 1.078e-02 1.495e-02 2.007e-02 2.582e-02 3.153e-02 3.625e-02 + 3.468e-02 3.354e-02 3.042e-02 2.600e-02 2.110e-02 1.639e-02 + 1.232e-02 9.073e-03 6.662e-03 4.995e-03 3.948e-03 3.394e-03 + 3.224e-03 3.394e-03 3.948e-03 4.995e-03 6.662e-03 9.073e-03 + 1.232e-02 1.639e-02 2.110e-02 2.600e-02 3.042e-02 3.354e-02 + 3.074e-02 2.897e-02 2.582e-02 2.191e-02 1.784e-02 1.411e-02 + 1.096e-02 8.494e-03 6.662e-03 5.400e-03 4.635e-03 4.284e-03 + 4.284e-03 4.635e-03 5.400e-03 6.662e-03 8.494e-03 1.096e-02 + 1.411e-02 1.784e-02 2.191e-02 2.582e-02 2.897e-02 3.074e-02 + 2.728e-02 2.531e-02 2.247e-02 1.926e-02 1.612e-02 1.331e-02 + 1.096e-02 9.073e-03 7.626e-03 6.629e-03 6.065e-03 5.886e-03 + 6.065e-03 6.629e-03 7.626e-03 9.073e-03 1.096e-02 1.331e-02 + 1.612e-02 1.926e-02 2.247e-02 2.531e-02 2.728e-02 2.799e-02 + 2.460e-02 2.286e-02 2.066e-02 1.833e-02 1.612e-02 1.411e-02 + 1.232e-02 1.078e-02 9.563e-03 8.760e-03 8.378e-03 8.378e-03 + 8.760e-03 9.563e-03 1.078e-02 1.232e-02 1.411e-02 1.612e-02 + 1.833e-02 2.066e-02 2.286e-02 2.460e-02 2.558e-02 2.558e-02 + 2.313e-02 2.199e-02 2.066e-02 1.926e-02 1.784e-02 1.639e-02 + 1.495e-02 1.363e-02 1.262e-02 1.203e-02 1.185e-02 1.203e-02 + 1.262e-02 1.363e-02 1.495e-02 1.639e-02 1.784e-02 1.926e-02 + 2.066e-02 2.199e-02 2.313e-02 2.393e-02 2.422e-02 2.393e-02 + 2.313e-02 2.286e-02 2.247e-02 2.191e-02 2.110e-02 2.007e-02 + 1.893e-02 1.789e-02 1.717e-02 1.682e-02 1.682e-02 1.717e-02 + 1.789e-02 1.893e-02 2.007e-02 2.110e-02 2.191e-02 2.247e-02 + 2.286e-02 2.313e-02 2.335e-02 2.348e-02 2.348e-02 2.335e-02 + 2.460e-02 2.531e-02 2.582e-02 2.600e-02 2.582e-02 2.531e-02 + 2.460e-02 2.393e-02 2.348e-02 2.333e-02 2.348e-02 2.393e-02 + 2.460e-02 2.531e-02 2.582e-02 2.600e-02 2.582e-02 2.531e-02 + 2.460e-02 2.393e-02 2.348e-02 2.333e-02 2.348e-02 2.393e-02 + 2.728e-02 2.897e-02 3.042e-02 3.153e-02 3.221e-02 3.238e-02 + 3.206e-02 3.151e-02 3.112e-02 3.112e-02 3.151e-02 3.206e-02 + 3.238e-02 3.221e-02 3.153e-02 3.042e-02 2.897e-02 2.728e-02 + 2.558e-02 2.422e-02 2.348e-02 2.348e-02 2.422e-02 2.558e-02 + 3.074e-02 3.354e-02 3.625e-02 3.864e-02 4.029e-02 4.073e-02 + 4.006e-02 3.901e-02 3.852e-02 3.901e-02 4.006e-02 4.073e-02 + 4.029e-02 3.864e-02 3.625e-02 3.354e-02 3.074e-02 2.799e-02 + 2.558e-02 2.393e-02 2.335e-02 2.393e-02 2.558e-02 2.799e-02 + 2.936e-02 3.401e-02 3.892e-02 4.341e-02 4.655e-02 4.798e-02 + 4.821e-02 4.814e-02 4.821e-02 4.798e-02 4.655e-02 4.341e-02 + 3.892e-02 3.401e-02 2.936e-02 2.524e-02 2.171e-02 1.893e-02 + 1.714e-02 1.653e-02 1.714e-02 1.893e-02 2.171e-02 2.524e-02 + 3.401e-02 4.045e-02 4.685e-02 5.176e-02 5.416e-02 5.442e-02 + 5.397e-02 5.397e-02 5.442e-02 5.416e-02 5.176e-02 4.685e-02 + 4.045e-02 3.401e-02 2.838e-02 2.375e-02 2.007e-02 1.744e-02 + 1.606e-02 1.606e-02 1.744e-02 2.007e-02 2.375e-02 2.838e-02 + 3.892e-02 4.685e-02 5.366e-02 5.759e-02 5.845e-02 5.775e-02 + 5.728e-02 5.775e-02 5.845e-02 5.759e-02 5.366e-02 4.685e-02 + 3.892e-02 3.163e-02 2.570e-02 2.110e-02 1.770e-02 1.554e-02 + 1.480e-02 1.554e-02 1.770e-02 2.110e-02 2.570e-02 3.163e-02 + 4.341e-02 5.176e-02 5.759e-02 5.986e-02 5.968e-02 5.903e-02 + 5.903e-02 5.968e-02 5.986e-02 5.759e-02 5.176e-02 4.341e-02 + 3.477e-02 2.748e-02 2.191e-02 1.780e-02 1.498e-02 1.351e-02 + 1.351e-02 1.498e-02 1.780e-02 2.191e-02 2.748e-02 3.477e-02 + 4.655e-02 5.416e-02 5.845e-02 5.968e-02 5.962e-02 5.950e-02 + 5.962e-02 5.968e-02 5.845e-02 5.416e-02 4.655e-02 3.742e-02 + 2.903e-02 2.247e-02 1.770e-02 1.435e-02 1.228e-02 1.157e-02 + 1.228e-02 1.435e-02 1.770e-02 2.247e-02 2.903e-02 3.742e-02 + 4.798e-02 5.442e-02 5.775e-02 5.903e-02 5.950e-02 5.950e-02 + 5.903e-02 5.775e-02 5.442e-02 4.798e-02 3.920e-02 3.025e-02 + 2.286e-02 1.744e-02 1.366e-02 1.116e-02 9.883e-03 9.883e-03 + 1.116e-02 1.366e-02 1.744e-02 2.286e-02 3.025e-02 3.920e-02 + 4.821e-02 5.397e-02 5.728e-02 5.903e-02 5.962e-02 5.903e-02 + 5.728e-02 5.397e-02 4.821e-02 4.006e-02 3.107e-02 2.313e-02 + 1.714e-02 1.296e-02 1.016e-02 8.487e-03 7.921e-03 8.487e-03 + 1.016e-02 1.296e-02 1.714e-02 2.313e-02 3.107e-02 4.006e-02 + 4.814e-02 5.397e-02 5.775e-02 5.968e-02 5.968e-02 5.775e-02 + 5.397e-02 4.814e-02 4.032e-02 3.151e-02 2.335e-02 1.693e-02 + 1.238e-02 9.326e-03 7.387e-03 6.424e-03 6.424e-03 7.387e-03 + 9.326e-03 1.238e-02 1.693e-02 2.335e-02 3.151e-02 4.032e-02 + 4.821e-02 5.442e-02 5.845e-02 5.986e-02 5.845e-02 5.442e-02 + 4.821e-02 4.032e-02 3.165e-02 2.348e-02 1.684e-02 1.201e-02 + 8.723e-03 6.580e-03 5.346e-03 4.940e-03 5.346e-03 6.580e-03 + 8.723e-03 1.201e-02 1.684e-02 2.348e-02 3.165e-02 4.032e-02 + 4.798e-02 5.416e-02 5.759e-02 5.759e-02 5.416e-02 4.798e-02 + 4.006e-02 3.151e-02 2.348e-02 1.682e-02 1.185e-02 8.378e-03 + 6.065e-03 4.635e-03 3.948e-03 3.948e-03 4.635e-03 6.065e-03 + 8.378e-03 1.185e-02 1.682e-02 2.348e-02 3.151e-02 4.006e-02 + 4.655e-02 5.176e-02 5.366e-02 5.176e-02 4.655e-02 3.920e-02 + 3.107e-02 2.335e-02 1.684e-02 1.185e-02 8.270e-03 5.820e-03 + 4.238e-03 3.356e-03 3.074e-03 3.356e-03 4.238e-03 5.820e-03 + 8.270e-03 1.185e-02 1.684e-02 2.335e-02 3.107e-02 3.920e-02 + 4.341e-02 4.685e-02 4.685e-02 4.341e-02 3.742e-02 3.025e-02 + 2.313e-02 1.693e-02 1.201e-02 8.378e-03 5.820e-03 4.112e-03 + 3.084e-03 2.610e-03 2.610e-03 3.084e-03 4.112e-03 5.820e-03 + 8.378e-03 1.201e-02 1.693e-02 2.313e-02 3.025e-02 3.742e-02 + 3.892e-02 4.045e-02 3.892e-02 3.477e-02 2.903e-02 2.286e-02 + 1.714e-02 1.238e-02 8.723e-03 6.065e-03 4.238e-03 3.084e-03 + 2.467e-03 2.276e-03 2.467e-03 3.084e-03 4.238e-03 6.065e-03 + 8.723e-03 1.238e-02 1.714e-02 2.286e-02 2.903e-02 3.477e-02 + 3.401e-02 3.401e-02 3.163e-02 2.748e-02 2.247e-02 1.744e-02 + 1.296e-02 9.326e-03 6.580e-03 4.635e-03 3.356e-03 2.610e-03 + 2.276e-03 2.276e-03 2.610e-03 3.356e-03 4.635e-03 6.580e-03 + 9.326e-03 1.296e-02 1.744e-02 2.247e-02 2.748e-02 3.163e-02 + 2.936e-02 2.838e-02 2.570e-02 2.191e-02 1.770e-02 1.366e-02 + 1.016e-02 7.387e-03 5.346e-03 3.948e-03 3.074e-03 2.610e-03 + 2.467e-03 2.610e-03 3.074e-03 3.948e-03 5.346e-03 7.387e-03 + 1.016e-02 1.366e-02 1.770e-02 2.191e-02 2.570e-02 2.838e-02 + 2.524e-02 2.375e-02 2.110e-02 1.780e-02 1.435e-02 1.116e-02 + 8.487e-03 6.424e-03 4.940e-03 3.948e-03 3.356e-03 3.084e-03 + 3.084e-03 3.356e-03 3.948e-03 4.940e-03 6.424e-03 8.487e-03 + 1.116e-02 1.435e-02 1.780e-02 2.110e-02 2.375e-02 2.524e-02 + 2.171e-02 2.007e-02 1.770e-02 1.498e-02 1.228e-02 9.883e-03 + 7.921e-03 6.424e-03 5.346e-03 4.635e-03 4.238e-03 4.112e-03 + 4.238e-03 4.635e-03 5.346e-03 6.424e-03 7.921e-03 9.883e-03 + 1.228e-02 1.498e-02 1.770e-02 2.007e-02 2.171e-02 2.230e-02 + 1.893e-02 1.744e-02 1.554e-02 1.351e-02 1.157e-02 9.883e-03 + 8.487e-03 7.387e-03 6.580e-03 6.065e-03 5.820e-03 5.820e-03 + 6.065e-03 6.580e-03 7.387e-03 8.487e-03 9.883e-03 1.157e-02 + 1.351e-02 1.554e-02 1.744e-02 1.893e-02 1.975e-02 1.975e-02 + 1.714e-02 1.606e-02 1.480e-02 1.351e-02 1.228e-02 1.116e-02 + 1.016e-02 9.326e-03 8.723e-03 8.378e-03 8.270e-03 8.378e-03 + 8.723e-03 9.326e-03 1.016e-02 1.116e-02 1.228e-02 1.351e-02 + 1.480e-02 1.606e-02 1.714e-02 1.789e-02 1.816e-02 1.789e-02 + 1.653e-02 1.606e-02 1.554e-02 1.498e-02 1.435e-02 1.366e-02 + 1.296e-02 1.238e-02 1.201e-02 1.185e-02 1.185e-02 1.201e-02 + 1.238e-02 1.296e-02 1.366e-02 1.435e-02 1.498e-02 1.554e-02 + 1.606e-02 1.653e-02 1.693e-02 1.717e-02 1.717e-02 1.693e-02 + 1.714e-02 1.744e-02 1.770e-02 1.780e-02 1.770e-02 1.744e-02 + 1.714e-02 1.693e-02 1.684e-02 1.682e-02 1.684e-02 1.693e-02 + 1.714e-02 1.744e-02 1.770e-02 1.780e-02 1.770e-02 1.744e-02 + 1.714e-02 1.693e-02 1.684e-02 1.682e-02 1.684e-02 1.693e-02 + 1.893e-02 2.007e-02 2.110e-02 2.191e-02 2.247e-02 2.286e-02 + 2.313e-02 2.335e-02 2.348e-02 2.348e-02 2.335e-02 2.313e-02 + 2.286e-02 2.247e-02 2.191e-02 2.110e-02 2.007e-02 1.893e-02 + 1.789e-02 1.717e-02 1.682e-02 1.682e-02 1.717e-02 1.789e-02 + 2.171e-02 2.375e-02 2.570e-02 2.748e-02 2.903e-02 3.025e-02 + 3.107e-02 3.151e-02 3.165e-02 3.151e-02 3.107e-02 3.025e-02 + 2.903e-02 2.748e-02 2.570e-02 2.375e-02 2.171e-02 1.975e-02 + 1.816e-02 1.717e-02 1.684e-02 1.717e-02 1.816e-02 1.975e-02 + 2.524e-02 2.838e-02 3.163e-02 3.477e-02 3.742e-02 3.920e-02 + 4.006e-02 4.032e-02 4.032e-02 4.006e-02 3.920e-02 3.742e-02 + 3.477e-02 3.163e-02 2.838e-02 2.524e-02 2.230e-02 1.975e-02 + 1.789e-02 1.693e-02 1.693e-02 1.789e-02 1.975e-02 2.230e-02 + 2.589e-02 3.122e-02 3.728e-02 4.341e-02 4.868e-02 5.237e-02 + 5.421e-02 5.421e-02 5.237e-02 4.868e-02 4.341e-02 3.728e-02 + 3.122e-02 2.589e-02 2.145e-02 1.781e-02 1.495e-02 1.296e-02 + 1.196e-02 1.196e-02 1.296e-02 1.495e-02 1.781e-02 2.145e-02 + 3.122e-02 3.872e-02 4.685e-02 5.436e-02 6.009e-02 6.353e-02 + 6.466e-02 6.353e-02 6.009e-02 5.436e-02 4.685e-02 3.872e-02 + 3.122e-02 2.502e-02 2.015e-02 1.639e-02 1.366e-02 1.198e-02 + 1.141e-02 1.198e-02 1.366e-02 1.639e-02 2.015e-02 2.502e-02 + 3.728e-02 4.685e-02 5.643e-02 6.446e-02 7.000e-02 7.277e-02 + 7.277e-02 7.000e-02 6.446e-02 5.643e-02 4.685e-02 3.728e-02 + 2.904e-02 2.263e-02 1.784e-02 1.435e-02 1.200e-02 1.081e-02 + 1.081e-02 1.200e-02 1.435e-02 1.784e-02 2.263e-02 2.904e-02 + 4.341e-02 5.436e-02 6.446e-02 7.233e-02 7.727e-02 7.896e-02 + 7.727e-02 7.233e-02 6.446e-02 5.436e-02 4.341e-02 3.333e-02 + 2.524e-02 1.926e-02 1.498e-02 1.201e-02 1.022e-02 9.620e-03 + 1.022e-02 1.201e-02 1.498e-02 1.926e-02 2.524e-02 3.333e-02 + 4.868e-02 6.009e-02 7.000e-02 7.727e-02 8.117e-02 8.117e-02 + 7.727e-02 7.000e-02 6.009e-02 4.868e-02 3.742e-02 2.787e-02 + 2.066e-02 1.554e-02 1.200e-02 9.698e-03 8.541e-03 8.541e-03 + 9.698e-03 1.200e-02 1.554e-02 2.066e-02 2.787e-02 3.742e-02 + 5.237e-02 6.353e-02 7.277e-02 7.896e-02 8.117e-02 7.896e-02 + 7.277e-02 6.353e-02 5.237e-02 4.073e-02 3.025e-02 2.199e-02 + 1.606e-02 1.198e-02 9.254e-03 7.650e-03 7.115e-03 7.650e-03 + 9.254e-03 1.198e-02 1.606e-02 2.199e-02 3.025e-02 4.073e-02 + 5.421e-02 6.466e-02 7.277e-02 7.727e-02 7.727e-02 7.277e-02 + 6.466e-02 5.421e-02 4.283e-02 3.206e-02 2.313e-02 1.653e-02 + 1.196e-02 8.892e-03 6.959e-03 6.008e-03 6.008e-03 6.959e-03 + 8.892e-03 1.196e-02 1.653e-02 2.313e-02 3.206e-02 4.283e-02 + 5.421e-02 6.353e-02 7.000e-02 7.233e-02 7.000e-02 6.353e-02 + 5.421e-02 4.355e-02 3.303e-02 2.393e-02 1.693e-02 1.197e-02 + 8.621e-03 6.445e-03 5.200e-03 4.792e-03 5.200e-03 6.445e-03 + 8.621e-03 1.197e-02 1.693e-02 2.393e-02 3.303e-02 4.355e-02 + 5.237e-02 6.009e-02 6.446e-02 6.446e-02 6.009e-02 5.237e-02 + 4.283e-02 3.303e-02 2.422e-02 1.717e-02 1.201e-02 8.453e-03 + 6.091e-03 4.638e-03 3.945e-03 3.945e-03 4.638e-03 6.091e-03 + 8.453e-03 1.201e-02 1.717e-02 2.422e-02 3.303e-02 4.283e-02 + 4.868e-02 5.436e-02 5.643e-02 5.436e-02 4.868e-02 4.073e-02 + 3.206e-02 2.393e-02 1.717e-02 1.203e-02 8.378e-03 5.886e-03 + 4.284e-03 3.394e-03 3.110e-03 3.394e-03 4.284e-03 5.886e-03 + 8.378e-03 1.203e-02 1.717e-02 2.393e-02 3.206e-02 4.073e-02 + 4.341e-02 4.685e-02 4.685e-02 4.341e-02 3.742e-02 3.025e-02 + 2.313e-02 1.693e-02 1.201e-02 8.378e-03 5.820e-03 4.112e-03 + 3.084e-03 2.610e-03 2.610e-03 3.084e-03 4.112e-03 5.820e-03 + 8.378e-03 1.201e-02 1.693e-02 2.313e-02 3.025e-02 3.742e-02 + 3.728e-02 3.872e-02 3.728e-02 3.333e-02 2.787e-02 2.199e-02 + 1.653e-02 1.197e-02 8.453e-03 5.886e-03 4.112e-03 2.984e-03 + 2.378e-03 2.190e-03 2.378e-03 2.984e-03 4.112e-03 5.886e-03 + 8.453e-03 1.197e-02 1.653e-02 2.199e-02 2.787e-02 3.333e-02 + 3.122e-02 3.122e-02 2.904e-02 2.524e-02 2.066e-02 1.606e-02 + 1.196e-02 8.621e-03 6.091e-03 4.284e-03 3.084e-03 2.378e-03 + 2.060e-03 2.060e-03 2.378e-03 3.084e-03 4.284e-03 6.091e-03 + 8.621e-03 1.196e-02 1.606e-02 2.066e-02 2.524e-02 2.904e-02 + 2.589e-02 2.502e-02 2.263e-02 1.926e-02 1.554e-02 1.198e-02 + 8.892e-03 6.445e-03 4.638e-03 3.394e-03 2.610e-03 2.190e-03 + 2.060e-03 2.190e-03 2.610e-03 3.394e-03 4.638e-03 6.445e-03 + 8.892e-03 1.198e-02 1.554e-02 1.926e-02 2.263e-02 2.502e-02 + 2.145e-02 2.015e-02 1.784e-02 1.498e-02 1.200e-02 9.254e-03 + 6.959e-03 5.200e-03 3.945e-03 3.110e-03 2.610e-03 2.378e-03 + 2.378e-03 2.610e-03 3.110e-03 3.945e-03 5.200e-03 6.959e-03 + 9.254e-03 1.200e-02 1.498e-02 1.784e-02 2.015e-02 2.145e-02 + 1.781e-02 1.639e-02 1.435e-02 1.201e-02 9.698e-03 7.650e-03 + 6.008e-03 4.792e-03 3.945e-03 3.394e-03 3.084e-03 2.984e-03 + 3.084e-03 3.394e-03 3.945e-03 4.792e-03 6.008e-03 7.650e-03 + 9.698e-03 1.201e-02 1.435e-02 1.639e-02 1.781e-02 1.832e-02 + 1.495e-02 1.366e-02 1.200e-02 1.022e-02 8.541e-03 7.115e-03 + 6.008e-03 5.200e-03 4.638e-03 4.284e-03 4.112e-03 4.112e-03 + 4.284e-03 4.638e-03 5.200e-03 6.008e-03 7.115e-03 8.541e-03 + 1.022e-02 1.200e-02 1.366e-02 1.495e-02 1.566e-02 1.566e-02 + 1.296e-02 1.198e-02 1.081e-02 9.620e-03 8.541e-03 7.650e-03 + 6.959e-03 6.445e-03 6.091e-03 5.886e-03 5.820e-03 5.886e-03 + 6.091e-03 6.445e-03 6.959e-03 7.650e-03 8.541e-03 9.620e-03 + 1.081e-02 1.198e-02 1.296e-02 1.363e-02 1.386e-02 1.363e-02 + 1.196e-02 1.141e-02 1.081e-02 1.022e-02 9.698e-03 9.254e-03 + 8.892e-03 8.621e-03 8.453e-03 8.378e-03 8.378e-03 8.453e-03 + 8.621e-03 8.892e-03 9.254e-03 9.698e-03 1.022e-02 1.081e-02 + 1.141e-02 1.196e-02 1.238e-02 1.262e-02 1.262e-02 1.238e-02 + 1.196e-02 1.198e-02 1.200e-02 1.201e-02 1.200e-02 1.198e-02 + 1.196e-02 1.197e-02 1.201e-02 1.203e-02 1.201e-02 1.197e-02 + 1.196e-02 1.198e-02 1.200e-02 1.201e-02 1.200e-02 1.198e-02 + 1.196e-02 1.197e-02 1.201e-02 1.203e-02 1.201e-02 1.197e-02 + 1.296e-02 1.366e-02 1.435e-02 1.498e-02 1.554e-02 1.606e-02 + 1.653e-02 1.693e-02 1.717e-02 1.717e-02 1.693e-02 1.653e-02 + 1.606e-02 1.554e-02 1.498e-02 1.435e-02 1.366e-02 1.296e-02 + 1.238e-02 1.201e-02 1.185e-02 1.185e-02 1.201e-02 1.238e-02 + 1.495e-02 1.639e-02 1.784e-02 1.926e-02 2.066e-02 2.199e-02 + 2.313e-02 2.393e-02 2.422e-02 2.393e-02 2.313e-02 2.199e-02 + 2.066e-02 1.926e-02 1.784e-02 1.639e-02 1.495e-02 1.363e-02 + 1.262e-02 1.203e-02 1.185e-02 1.203e-02 1.262e-02 1.363e-02 + 1.781e-02 2.015e-02 2.263e-02 2.524e-02 2.787e-02 3.025e-02 + 3.206e-02 3.303e-02 3.303e-02 3.206e-02 3.025e-02 2.787e-02 + 2.524e-02 2.263e-02 2.015e-02 1.781e-02 1.566e-02 1.386e-02 + 1.262e-02 1.201e-02 1.201e-02 1.262e-02 1.386e-02 1.566e-02 + 2.145e-02 2.502e-02 2.904e-02 3.333e-02 3.742e-02 4.073e-02 + 4.283e-02 4.355e-02 4.283e-02 4.073e-02 3.742e-02 3.333e-02 + 2.904e-02 2.502e-02 2.145e-02 1.832e-02 1.566e-02 1.363e-02 + 1.238e-02 1.197e-02 1.238e-02 1.363e-02 1.566e-02 1.832e-02 + 2.464e-02 3.122e-02 3.892e-02 4.693e-02 5.398e-02 5.881e-02 + 6.053e-02 5.881e-02 5.398e-02 4.693e-02 3.892e-02 3.122e-02 + 2.464e-02 1.942e-02 1.538e-02 1.232e-02 1.016e-02 8.892e-03 + 8.479e-03 8.892e-03 1.016e-02 1.232e-02 1.538e-02 1.942e-02 + 3.122e-02 4.045e-02 5.077e-02 6.074e-02 6.863e-02 7.300e-02 + 7.300e-02 6.863e-02 6.074e-02 5.077e-02 4.045e-02 3.122e-02 + 2.381e-02 1.822e-02 1.411e-02 1.116e-02 9.254e-03 8.324e-03 + 8.324e-03 9.254e-03 1.116e-02 1.411e-02 1.822e-02 2.381e-02 + 3.892e-02 5.077e-02 6.323e-02 7.430e-02 8.198e-02 8.473e-02 + 8.198e-02 7.430e-02 6.323e-02 5.077e-02 3.892e-02 2.904e-02 + 2.153e-02 1.612e-02 1.228e-02 9.698e-03 8.199e-03 7.708e-03 + 8.199e-03 9.698e-03 1.228e-02 1.612e-02 2.153e-02 2.904e-02 + 4.693e-02 6.074e-02 7.430e-02 8.528e-02 9.146e-02 9.146e-02 + 8.528e-02 7.430e-02 6.074e-02 4.693e-02 3.477e-02 2.524e-02 + 1.833e-02 1.351e-02 1.022e-02 8.149e-03 7.143e-03 7.143e-03 + 8.149e-03 1.022e-02 1.351e-02 1.833e-02 2.524e-02 3.477e-02 + 5.398e-02 6.863e-02 8.198e-02 9.146e-02 9.491e-02 9.146e-02 + 8.198e-02 6.863e-02 5.398e-02 4.029e-02 2.903e-02 2.066e-02 + 1.480e-02 1.081e-02 8.199e-03 6.706e-03 6.220e-03 6.706e-03 + 8.199e-03 1.081e-02 1.480e-02 2.066e-02 2.903e-02 4.029e-02 + 5.881e-02 7.300e-02 8.473e-02 9.146e-02 9.146e-02 8.473e-02 + 7.300e-02 5.881e-02 4.466e-02 3.238e-02 2.286e-02 1.606e-02 + 1.141e-02 8.324e-03 6.418e-03 5.505e-03 5.505e-03 6.418e-03 + 8.324e-03 1.141e-02 1.606e-02 2.286e-02 3.238e-02 4.466e-02 + 6.053e-02 7.300e-02 8.198e-02 8.528e-02 8.198e-02 7.300e-02 + 6.053e-02 4.707e-02 3.469e-02 2.460e-02 1.714e-02 1.196e-02 + 8.479e-03 6.247e-03 4.997e-03 4.595e-03 4.997e-03 6.247e-03 + 8.479e-03 1.196e-02 1.714e-02 2.460e-02 3.469e-02 4.707e-02 + 5.881e-02 6.863e-02 7.430e-02 7.430e-02 6.863e-02 5.881e-02 + 4.707e-02 3.552e-02 2.558e-02 1.789e-02 1.238e-02 8.621e-03 + 6.148e-03 4.651e-03 3.948e-03 3.948e-03 4.651e-03 6.148e-03 + 8.621e-03 1.238e-02 1.789e-02 2.558e-02 3.552e-02 4.707e-02 + 5.398e-02 6.074e-02 6.323e-02 6.074e-02 5.398e-02 4.466e-02 + 3.469e-02 2.558e-02 1.816e-02 1.262e-02 8.723e-03 6.091e-03 + 4.420e-03 3.506e-03 3.218e-03 3.506e-03 4.420e-03 6.091e-03 + 8.723e-03 1.262e-02 1.816e-02 2.558e-02 3.469e-02 4.466e-02 + 4.693e-02 5.077e-02 5.077e-02 4.693e-02 4.029e-02 3.238e-02 + 2.460e-02 1.789e-02 1.262e-02 8.760e-03 6.065e-03 4.284e-03 + 3.224e-03 2.739e-03 2.739e-03 3.224e-03 4.284e-03 6.065e-03 + 8.760e-03 1.262e-02 1.789e-02 2.460e-02 3.238e-02 4.029e-02 + 3.892e-02 4.045e-02 3.892e-02 3.477e-02 2.903e-02 2.286e-02 + 1.714e-02 1.238e-02 8.723e-03 6.065e-03 4.238e-03 3.084e-03 + 2.467e-03 2.276e-03 2.467e-03 3.084e-03 4.238e-03 6.065e-03 + 8.723e-03 1.238e-02 1.714e-02 2.286e-02 2.903e-02 3.477e-02 + 3.122e-02 3.122e-02 2.904e-02 2.524e-02 2.066e-02 1.606e-02 + 1.196e-02 8.621e-03 6.091e-03 4.284e-03 3.084e-03 2.378e-03 + 2.060e-03 2.060e-03 2.378e-03 3.084e-03 4.284e-03 6.091e-03 + 8.621e-03 1.196e-02 1.606e-02 2.066e-02 2.524e-02 2.904e-02 + 2.464e-02 2.381e-02 2.153e-02 1.833e-02 1.480e-02 1.141e-02 + 8.479e-03 6.148e-03 4.420e-03 3.224e-03 2.467e-03 2.060e-03 + 1.933e-03 2.060e-03 2.467e-03 3.224e-03 4.420e-03 6.148e-03 + 8.479e-03 1.141e-02 1.480e-02 1.833e-02 2.153e-02 2.381e-02 + 1.942e-02 1.822e-02 1.612e-02 1.351e-02 1.081e-02 8.324e-03 + 6.247e-03 4.651e-03 3.506e-03 2.739e-03 2.276e-03 2.060e-03 + 2.060e-03 2.276e-03 2.739e-03 3.506e-03 4.651e-03 6.247e-03 + 8.324e-03 1.081e-02 1.351e-02 1.612e-02 1.822e-02 1.942e-02 + 1.538e-02 1.411e-02 1.228e-02 1.022e-02 8.199e-03 6.418e-03 + 4.997e-03 3.948e-03 3.218e-03 2.739e-03 2.467e-03 2.378e-03 + 2.467e-03 2.739e-03 3.218e-03 3.948e-03 4.997e-03 6.418e-03 + 8.199e-03 1.022e-02 1.228e-02 1.411e-02 1.538e-02 1.584e-02 + 1.232e-02 1.116e-02 9.698e-03 8.149e-03 6.706e-03 5.505e-03 + 4.595e-03 3.948e-03 3.506e-03 3.224e-03 3.084e-03 3.084e-03 + 3.224e-03 3.506e-03 3.948e-03 4.595e-03 5.505e-03 6.706e-03 + 8.149e-03 9.698e-03 1.116e-02 1.232e-02 1.297e-02 1.297e-02 + 1.016e-02 9.254e-03 8.199e-03 7.143e-03 6.220e-03 5.505e-03 + 4.997e-03 4.651e-03 4.420e-03 4.284e-03 4.238e-03 4.284e-03 + 4.420e-03 4.651e-03 4.997e-03 5.505e-03 6.220e-03 7.143e-03 + 8.199e-03 9.254e-03 1.016e-02 1.078e-02 1.100e-02 1.078e-02 + 8.892e-03 8.324e-03 7.708e-03 7.143e-03 6.706e-03 6.418e-03 + 6.247e-03 6.148e-03 6.091e-03 6.065e-03 6.065e-03 6.091e-03 + 6.148e-03 6.247e-03 6.418e-03 6.706e-03 7.143e-03 7.708e-03 + 8.324e-03 8.892e-03 9.326e-03 9.563e-03 9.563e-03 9.326e-03 + 8.479e-03 8.324e-03 8.199e-03 8.149e-03 8.199e-03 8.324e-03 + 8.479e-03 8.621e-03 8.723e-03 8.760e-03 8.723e-03 8.621e-03 + 8.479e-03 8.324e-03 8.199e-03 8.149e-03 8.199e-03 8.324e-03 + 8.479e-03 8.621e-03 8.723e-03 8.760e-03 8.723e-03 8.621e-03 + 8.892e-03 9.254e-03 9.698e-03 1.022e-02 1.081e-02 1.141e-02 + 1.196e-02 1.238e-02 1.262e-02 1.262e-02 1.238e-02 1.196e-02 + 1.141e-02 1.081e-02 1.022e-02 9.698e-03 9.254e-03 8.892e-03 + 8.621e-03 8.453e-03 8.378e-03 8.378e-03 8.453e-03 8.621e-03 + 1.016e-02 1.116e-02 1.228e-02 1.351e-02 1.480e-02 1.606e-02 + 1.714e-02 1.789e-02 1.816e-02 1.789e-02 1.714e-02 1.606e-02 + 1.480e-02 1.351e-02 1.228e-02 1.116e-02 1.016e-02 9.326e-03 + 8.723e-03 8.378e-03 8.270e-03 8.378e-03 8.723e-03 9.326e-03 + 1.232e-02 1.411e-02 1.612e-02 1.833e-02 2.066e-02 2.286e-02 + 2.460e-02 2.558e-02 2.558e-02 2.460e-02 2.286e-02 2.066e-02 + 1.833e-02 1.612e-02 1.411e-02 1.232e-02 1.078e-02 9.563e-03 + 8.760e-03 8.378e-03 8.378e-03 8.760e-03 9.563e-03 1.078e-02 + 1.538e-02 1.822e-02 2.153e-02 2.524e-02 2.903e-02 3.238e-02 + 3.469e-02 3.552e-02 3.469e-02 3.238e-02 2.903e-02 2.524e-02 + 2.153e-02 1.822e-02 1.538e-02 1.297e-02 1.100e-02 9.563e-03 + 8.723e-03 8.453e-03 8.723e-03 9.563e-03 1.100e-02 1.297e-02 + 1.942e-02 2.381e-02 2.904e-02 3.477e-02 4.029e-02 4.466e-02 + 4.707e-02 4.707e-02 4.466e-02 4.029e-02 3.477e-02 2.904e-02 + 2.381e-02 1.942e-02 1.584e-02 1.297e-02 1.078e-02 9.326e-03 + 8.621e-03 8.621e-03 9.326e-03 1.078e-02 1.297e-02 1.584e-02 + 2.589e-02 3.401e-02 4.330e-02 5.260e-02 6.025e-02 6.459e-02 + 6.459e-02 6.025e-02 5.260e-02 4.330e-02 3.401e-02 2.589e-02 + 1.942e-02 1.453e-02 1.096e-02 8.487e-03 6.959e-03 6.247e-03 + 6.247e-03 6.959e-03 8.487e-03 1.096e-02 1.453e-02 1.942e-02 + 3.401e-02 4.501e-02 5.700e-02 6.809e-02 7.603e-02 7.892e-02 + 7.603e-02 6.809e-02 5.700e-02 4.501e-02 3.401e-02 2.502e-02 + 1.822e-02 1.331e-02 9.883e-03 7.650e-03 6.418e-03 6.030e-03 + 6.418e-03 7.650e-03 9.883e-03 1.331e-02 1.822e-02 2.502e-02 + 4.330e-02 5.700e-02 7.099e-02 8.268e-02 8.941e-02 8.941e-02 + 8.268e-02 7.099e-02 5.700e-02 4.330e-02 3.163e-02 2.263e-02 + 1.612e-02 1.157e-02 8.541e-03 6.706e-03 5.856e-03 5.856e-03 + 6.706e-03 8.541e-03 1.157e-02 1.612e-02 2.263e-02 3.163e-02 + 5.260e-02 6.809e-02 8.268e-02 9.329e-02 9.719e-02 9.329e-02 + 8.268e-02 6.809e-02 5.260e-02 3.864e-02 2.748e-02 1.926e-02 + 1.351e-02 9.620e-03 7.143e-03 5.788e-03 5.361e-03 5.788e-03 + 7.143e-03 9.620e-03 1.351e-02 1.926e-02 2.748e-02 3.864e-02 + 6.025e-02 7.603e-02 8.941e-02 9.719e-02 9.719e-02 8.941e-02 + 7.603e-02 6.025e-02 4.502e-02 3.221e-02 2.247e-02 1.554e-02 + 1.081e-02 7.708e-03 5.856e-03 5.001e-03 5.001e-03 5.856e-03 + 7.708e-03 1.081e-02 1.554e-02 2.247e-02 3.221e-02 4.502e-02 + 6.459e-02 7.892e-02 8.941e-02 9.329e-02 8.941e-02 7.892e-02 + 6.459e-02 4.953e-02 3.604e-02 2.531e-02 1.744e-02 1.198e-02 + 8.324e-03 6.030e-03 4.789e-03 4.400e-03 4.789e-03 6.030e-03 + 8.324e-03 1.198e-02 1.744e-02 2.531e-02 3.604e-02 4.953e-02 + 6.459e-02 7.603e-02 8.268e-02 8.268e-02 7.603e-02 6.459e-02 + 5.116e-02 3.820e-02 2.728e-02 1.893e-02 1.296e-02 8.892e-03 + 6.247e-03 4.689e-03 3.979e-03 3.979e-03 4.689e-03 6.247e-03 + 8.892e-03 1.296e-02 1.893e-02 2.728e-02 3.820e-02 5.116e-02 + 6.025e-02 6.809e-02 7.099e-02 6.809e-02 6.025e-02 4.953e-02 + 3.820e-02 2.799e-02 1.975e-02 1.363e-02 9.326e-03 6.445e-03 + 4.651e-03 3.695e-03 3.399e-03 3.695e-03 4.651e-03 6.445e-03 + 9.326e-03 1.363e-02 1.975e-02 2.799e-02 3.820e-02 4.953e-02 + 5.260e-02 5.700e-02 5.700e-02 5.260e-02 4.502e-02 3.604e-02 + 2.728e-02 1.975e-02 1.386e-02 9.563e-03 6.580e-03 4.638e-03 + 3.506e-03 2.998e-03 2.998e-03 3.506e-03 4.638e-03 6.580e-03 + 9.563e-03 1.386e-02 1.975e-02 2.728e-02 3.604e-02 4.502e-02 + 4.330e-02 4.501e-02 4.330e-02 3.864e-02 3.221e-02 2.531e-02 + 1.893e-02 1.363e-02 9.563e-03 6.629e-03 4.635e-03 3.394e-03 + 2.739e-03 2.539e-03 2.739e-03 3.394e-03 4.635e-03 6.629e-03 + 9.563e-03 1.363e-02 1.893e-02 2.531e-02 3.221e-02 3.864e-02 + 3.401e-02 3.401e-02 3.163e-02 2.748e-02 2.247e-02 1.744e-02 + 1.296e-02 9.326e-03 6.580e-03 4.635e-03 3.356e-03 2.610e-03 + 2.276e-03 2.276e-03 2.610e-03 3.356e-03 4.635e-03 6.580e-03 + 9.326e-03 1.296e-02 1.744e-02 2.247e-02 2.748e-02 3.163e-02 + 2.589e-02 2.502e-02 2.263e-02 1.926e-02 1.554e-02 1.198e-02 + 8.892e-03 6.445e-03 4.638e-03 3.394e-03 2.610e-03 2.190e-03 + 2.060e-03 2.190e-03 2.610e-03 3.394e-03 4.638e-03 6.445e-03 + 8.892e-03 1.198e-02 1.554e-02 1.926e-02 2.263e-02 2.502e-02 + 1.942e-02 1.822e-02 1.612e-02 1.351e-02 1.081e-02 8.324e-03 + 6.247e-03 4.651e-03 3.506e-03 2.739e-03 2.276e-03 2.060e-03 + 2.060e-03 2.276e-03 2.739e-03 3.506e-03 4.651e-03 6.247e-03 + 8.324e-03 1.081e-02 1.351e-02 1.612e-02 1.822e-02 1.942e-02 + 1.453e-02 1.331e-02 1.157e-02 9.620e-03 7.708e-03 6.030e-03 + 4.689e-03 3.695e-03 2.998e-03 2.539e-03 2.276e-03 2.190e-03 + 2.276e-03 2.539e-03 2.998e-03 3.695e-03 4.689e-03 6.030e-03 + 7.708e-03 9.620e-03 1.157e-02 1.331e-02 1.453e-02 1.498e-02 + 1.096e-02 9.883e-03 8.541e-03 7.143e-03 5.856e-03 4.789e-03 + 3.979e-03 3.399e-03 2.998e-03 2.739e-03 2.610e-03 2.610e-03 + 2.739e-03 2.998e-03 3.399e-03 3.979e-03 4.789e-03 5.856e-03 + 7.143e-03 8.541e-03 9.883e-03 1.096e-02 1.158e-02 1.158e-02 + 8.487e-03 7.650e-03 6.706e-03 5.788e-03 5.001e-03 4.400e-03 + 3.979e-03 3.695e-03 3.506e-03 3.394e-03 3.356e-03 3.394e-03 + 3.506e-03 3.695e-03 3.979e-03 4.400e-03 5.001e-03 5.788e-03 + 6.706e-03 7.650e-03 8.487e-03 9.073e-03 9.285e-03 9.073e-03 + 6.959e-03 6.418e-03 5.856e-03 5.361e-03 5.001e-03 4.789e-03 + 4.689e-03 4.651e-03 4.638e-03 4.635e-03 4.635e-03 4.638e-03 + 4.651e-03 4.689e-03 4.789e-03 5.001e-03 5.361e-03 5.856e-03 + 6.418e-03 6.959e-03 7.387e-03 7.626e-03 7.626e-03 7.387e-03 + 6.247e-03 6.030e-03 5.856e-03 5.788e-03 5.856e-03 6.030e-03 + 6.247e-03 6.445e-03 6.580e-03 6.629e-03 6.580e-03 6.445e-03 + 6.247e-03 6.030e-03 5.856e-03 5.788e-03 5.856e-03 6.030e-03 + 6.247e-03 6.445e-03 6.580e-03 6.629e-03 6.580e-03 6.445e-03 + 6.247e-03 6.418e-03 6.706e-03 7.143e-03 7.708e-03 8.324e-03 + 8.892e-03 9.326e-03 9.563e-03 9.563e-03 9.326e-03 8.892e-03 + 8.324e-03 7.708e-03 7.143e-03 6.706e-03 6.418e-03 6.247e-03 + 6.148e-03 6.091e-03 6.065e-03 6.065e-03 6.091e-03 6.148e-03 + 6.959e-03 7.650e-03 8.541e-03 9.620e-03 1.081e-02 1.198e-02 + 1.296e-02 1.363e-02 1.386e-02 1.363e-02 1.296e-02 1.198e-02 + 1.081e-02 9.620e-03 8.541e-03 7.650e-03 6.959e-03 6.445e-03 + 6.091e-03 5.886e-03 5.820e-03 5.886e-03 6.091e-03 6.445e-03 + 8.487e-03 9.883e-03 1.157e-02 1.351e-02 1.554e-02 1.744e-02 + 1.893e-02 1.975e-02 1.975e-02 1.893e-02 1.744e-02 1.554e-02 + 1.351e-02 1.157e-02 9.883e-03 8.487e-03 7.387e-03 6.580e-03 + 6.065e-03 5.820e-03 5.820e-03 6.065e-03 6.580e-03 7.387e-03 + 1.096e-02 1.331e-02 1.612e-02 1.926e-02 2.247e-02 2.531e-02 + 2.728e-02 2.799e-02 2.728e-02 2.531e-02 2.247e-02 1.926e-02 + 1.612e-02 1.331e-02 1.096e-02 9.073e-03 7.626e-03 6.629e-03 + 6.065e-03 5.886e-03 6.065e-03 6.629e-03 7.626e-03 9.073e-03 + 1.453e-02 1.822e-02 2.263e-02 2.748e-02 3.221e-02 3.604e-02 + 3.820e-02 3.820e-02 3.604e-02 3.221e-02 2.748e-02 2.263e-02 + 1.822e-02 1.453e-02 1.158e-02 9.285e-03 7.626e-03 6.580e-03 + 6.091e-03 6.091e-03 6.580e-03 7.626e-03 9.285e-03 1.158e-02 + 1.942e-02 2.502e-02 3.163e-02 3.864e-02 4.502e-02 4.953e-02 + 5.116e-02 4.953e-02 4.502e-02 3.864e-02 3.163e-02 2.502e-02 + 1.942e-02 1.498e-02 1.158e-02 9.073e-03 7.387e-03 6.445e-03 + 6.148e-03 6.445e-03 7.387e-03 9.073e-03 1.158e-02 1.498e-02 + 2.936e-02 3.895e-02 4.939e-02 5.911e-02 6.613e-02 6.870e-02 + 6.613e-02 5.911e-02 4.939e-02 3.895e-02 2.936e-02 2.145e-02 + 1.538e-02 1.096e-02 7.921e-03 6.008e-03 4.997e-03 4.689e-03 + 4.997e-03 6.008e-03 7.921e-03 1.096e-02 1.538e-02 2.145e-02 + 3.895e-02 5.133e-02 6.404e-02 7.478e-02 8.099e-02 8.099e-02 + 7.478e-02 6.404e-02 5.133e-02 3.895e-02 2.838e-02 2.015e-02 + 1.411e-02 9.883e-03 7.115e-03 5.505e-03 4.789e-03 4.789e-03 + 5.505e-03 7.115e-03 9.883e-03 1.411e-02 2.015e-02 2.838e-02 + 4.939e-02 6.404e-02 7.798e-02 8.818e-02 9.194e-02 8.818e-02 + 7.798e-02 6.404e-02 4.939e-02 3.625e-02 2.570e-02 1.784e-02 + 1.228e-02 8.541e-03 6.220e-03 5.001e-03 4.629e-03 5.001e-03 + 6.220e-03 8.541e-03 1.228e-02 1.784e-02 2.570e-02 3.625e-02 + 5.911e-02 7.478e-02 8.818e-02 9.600e-02 9.600e-02 8.818e-02 + 7.478e-02 5.911e-02 4.411e-02 3.153e-02 2.191e-02 1.498e-02 + 1.022e-02 7.143e-03 5.361e-03 4.569e-03 4.569e-03 5.361e-03 + 7.143e-03 1.022e-02 1.498e-02 2.191e-02 3.153e-02 4.411e-02 + 6.613e-02 8.099e-02 9.194e-02 9.600e-02 9.194e-02 8.099e-02 + 6.613e-02 5.061e-02 3.681e-02 2.582e-02 1.770e-02 1.200e-02 + 8.199e-03 5.856e-03 4.629e-03 4.255e-03 4.629e-03 5.856e-03 + 8.199e-03 1.200e-02 1.770e-02 2.582e-02 3.681e-02 5.061e-02 + 6.870e-02 8.099e-02 8.818e-02 8.818e-02 8.099e-02 6.870e-02 + 5.434e-02 4.056e-02 2.897e-02 2.007e-02 1.366e-02 9.254e-03 + 6.418e-03 4.789e-03 4.068e-03 4.068e-03 4.789e-03 6.418e-03 + 9.254e-03 1.366e-02 2.007e-02 2.897e-02 4.056e-02 5.434e-02 + 6.613e-02 7.478e-02 7.798e-02 7.478e-02 6.613e-02 5.434e-02 + 4.192e-02 3.074e-02 2.171e-02 1.495e-02 1.016e-02 6.959e-03 + 4.997e-03 3.979e-03 3.671e-03 3.979e-03 4.997e-03 6.959e-03 + 1.016e-02 1.495e-02 2.171e-02 3.074e-02 4.192e-02 5.434e-02 + 5.911e-02 6.404e-02 6.404e-02 5.911e-02 5.061e-02 4.056e-02 + 3.074e-02 2.230e-02 1.566e-02 1.078e-02 7.387e-03 5.200e-03 + 3.948e-03 3.399e-03 3.399e-03 3.948e-03 5.200e-03 7.387e-03 + 1.078e-02 1.566e-02 2.230e-02 3.074e-02 4.056e-02 5.061e-02 + 4.939e-02 5.133e-02 4.939e-02 4.411e-02 3.681e-02 2.897e-02 + 2.171e-02 1.566e-02 1.100e-02 7.626e-03 5.346e-03 3.945e-03 + 3.218e-03 2.998e-03 3.218e-03 3.945e-03 5.346e-03 7.626e-03 + 1.100e-02 1.566e-02 2.171e-02 2.897e-02 3.681e-02 4.411e-02 + 3.895e-02 3.895e-02 3.625e-02 3.153e-02 2.582e-02 2.007e-02 + 1.495e-02 1.078e-02 7.626e-03 5.400e-03 3.948e-03 3.110e-03 + 2.739e-03 2.739e-03 3.110e-03 3.948e-03 5.400e-03 7.626e-03 + 1.078e-02 1.495e-02 2.007e-02 2.582e-02 3.153e-02 3.625e-02 + 2.936e-02 2.838e-02 2.570e-02 2.191e-02 1.770e-02 1.366e-02 + 1.016e-02 7.387e-03 5.346e-03 3.948e-03 3.074e-03 2.610e-03 + 2.467e-03 2.610e-03 3.074e-03 3.948e-03 5.346e-03 7.387e-03 + 1.016e-02 1.366e-02 1.770e-02 2.191e-02 2.570e-02 2.838e-02 + 2.145e-02 2.015e-02 1.784e-02 1.498e-02 1.200e-02 9.254e-03 + 6.959e-03 5.200e-03 3.945e-03 3.110e-03 2.610e-03 2.378e-03 + 2.378e-03 2.610e-03 3.110e-03 3.945e-03 5.200e-03 6.959e-03 + 9.254e-03 1.200e-02 1.498e-02 1.784e-02 2.015e-02 2.145e-02 + 1.538e-02 1.411e-02 1.228e-02 1.022e-02 8.199e-03 6.418e-03 + 4.997e-03 3.948e-03 3.218e-03 2.739e-03 2.467e-03 2.378e-03 + 2.467e-03 2.739e-03 3.218e-03 3.948e-03 4.997e-03 6.418e-03 + 8.199e-03 1.022e-02 1.228e-02 1.411e-02 1.538e-02 1.584e-02 + 1.096e-02 9.883e-03 8.541e-03 7.143e-03 5.856e-03 4.789e-03 + 3.979e-03 3.399e-03 2.998e-03 2.739e-03 2.610e-03 2.610e-03 + 2.739e-03 2.998e-03 3.399e-03 3.979e-03 4.789e-03 5.856e-03 + 7.143e-03 8.541e-03 9.883e-03 1.096e-02 1.158e-02 1.158e-02 + 7.921e-03 7.115e-03 6.220e-03 5.361e-03 4.629e-03 4.068e-03 + 3.671e-03 3.399e-03 3.218e-03 3.110e-03 3.074e-03 3.110e-03 + 3.218e-03 3.399e-03 3.671e-03 4.068e-03 4.629e-03 5.361e-03 + 6.220e-03 7.115e-03 7.921e-03 8.494e-03 8.703e-03 8.494e-03 + 6.008e-03 5.505e-03 5.001e-03 4.569e-03 4.255e-03 4.068e-03 + 3.979e-03 3.948e-03 3.945e-03 3.948e-03 3.948e-03 3.945e-03 + 3.948e-03 3.979e-03 4.068e-03 4.255e-03 4.569e-03 5.001e-03 + 5.505e-03 6.008e-03 6.424e-03 6.662e-03 6.662e-03 6.424e-03 + 4.997e-03 4.789e-03 4.629e-03 4.569e-03 4.629e-03 4.789e-03 + 4.997e-03 5.200e-03 5.346e-03 5.400e-03 5.346e-03 5.200e-03 + 4.997e-03 4.789e-03 4.629e-03 4.569e-03 4.629e-03 4.789e-03 + 4.997e-03 5.200e-03 5.346e-03 5.400e-03 5.346e-03 5.200e-03 + 4.689e-03 4.789e-03 5.001e-03 5.361e-03 5.856e-03 6.418e-03 + 6.959e-03 7.387e-03 7.626e-03 7.626e-03 7.387e-03 6.959e-03 + 6.418e-03 5.856e-03 5.361e-03 5.001e-03 4.789e-03 4.689e-03 + 4.651e-03 4.638e-03 4.635e-03 4.635e-03 4.638e-03 4.651e-03 + 4.997e-03 5.505e-03 6.220e-03 7.143e-03 8.199e-03 9.254e-03 + 1.016e-02 1.078e-02 1.100e-02 1.078e-02 1.016e-02 9.254e-03 + 8.199e-03 7.143e-03 6.220e-03 5.505e-03 4.997e-03 4.651e-03 + 4.420e-03 4.284e-03 4.238e-03 4.284e-03 4.420e-03 4.651e-03 + 6.008e-03 7.115e-03 8.541e-03 1.022e-02 1.200e-02 1.366e-02 + 1.495e-02 1.566e-02 1.566e-02 1.495e-02 1.366e-02 1.200e-02 + 1.022e-02 8.541e-03 7.115e-03 6.008e-03 5.200e-03 4.638e-03 + 4.284e-03 4.112e-03 4.112e-03 4.284e-03 4.638e-03 5.200e-03 + 7.921e-03 9.883e-03 1.228e-02 1.498e-02 1.770e-02 2.007e-02 + 2.171e-02 2.230e-02 2.171e-02 2.007e-02 1.770e-02 1.498e-02 + 1.228e-02 9.883e-03 7.921e-03 6.424e-03 5.346e-03 4.635e-03 + 4.238e-03 4.112e-03 4.238e-03 4.635e-03 5.346e-03 6.424e-03 + 1.096e-02 1.411e-02 1.784e-02 2.191e-02 2.582e-02 2.897e-02 + 3.074e-02 3.074e-02 2.897e-02 2.582e-02 2.191e-02 1.784e-02 + 1.411e-02 1.096e-02 8.494e-03 6.662e-03 5.400e-03 4.635e-03 + 4.284e-03 4.284e-03 4.635e-03 5.400e-03 6.662e-03 8.494e-03 + 1.538e-02 2.015e-02 2.570e-02 3.153e-02 3.681e-02 4.056e-02 + 4.192e-02 4.056e-02 3.681e-02 3.153e-02 2.570e-02 2.015e-02 + 1.538e-02 1.158e-02 8.703e-03 6.662e-03 5.346e-03 4.638e-03 + 4.420e-03 4.638e-03 5.346e-03 6.662e-03 8.703e-03 1.158e-02 + 2.145e-02 2.838e-02 3.625e-02 4.411e-02 5.061e-02 5.434e-02 + 5.434e-02 5.061e-02 4.411e-02 3.625e-02 2.838e-02 2.145e-02 + 1.584e-02 1.158e-02 8.494e-03 6.424e-03 5.200e-03 4.651e-03 + 4.651e-03 5.200e-03 6.424e-03 8.494e-03 1.158e-02 1.584e-02 + 3.468e-02 4.565e-02 5.689e-02 6.639e-02 7.190e-02 7.190e-02 + 6.639e-02 5.689e-02 4.565e-02 3.468e-02 2.524e-02 1.781e-02 + 1.232e-02 8.487e-03 6.008e-03 4.595e-03 3.979e-03 3.979e-03 + 4.595e-03 6.008e-03 8.487e-03 1.232e-02 1.781e-02 2.524e-02 + 4.565e-02 5.911e-02 7.190e-02 8.128e-02 8.475e-02 8.128e-02 + 7.190e-02 5.911e-02 4.565e-02 3.354e-02 2.375e-02 1.639e-02 + 1.116e-02 7.650e-03 5.505e-03 4.400e-03 4.068e-03 4.400e-03 + 5.505e-03 7.650e-03 1.116e-02 1.639e-02 2.375e-02 3.354e-02 + 5.689e-02 7.190e-02 8.475e-02 9.227e-02 9.227e-02 8.475e-02 + 7.190e-02 5.689e-02 4.252e-02 3.042e-02 2.110e-02 1.435e-02 + 9.698e-03 6.706e-03 5.001e-03 4.255e-03 4.255e-03 5.001e-03 + 6.706e-03 9.698e-03 1.435e-02 2.110e-02 3.042e-02 4.252e-02 + 6.639e-02 8.128e-02 9.227e-02 9.634e-02 9.227e-02 8.128e-02 + 6.639e-02 5.086e-02 3.705e-02 2.600e-02 1.780e-02 1.201e-02 + 8.149e-03 5.788e-03 4.569e-03 4.201e-03 4.569e-03 5.788e-03 + 8.149e-03 1.201e-02 1.780e-02 2.600e-02 3.705e-02 5.086e-02 + 7.190e-02 8.475e-02 9.227e-02 9.227e-02 8.475e-02 7.190e-02 + 5.689e-02 4.252e-02 3.042e-02 2.110e-02 1.435e-02 9.698e-03 + 6.706e-03 5.001e-03 4.255e-03 4.255e-03 5.001e-03 6.706e-03 + 9.698e-03 1.435e-02 2.110e-02 3.042e-02 4.252e-02 5.689e-02 + 7.190e-02 8.128e-02 8.475e-02 8.128e-02 7.190e-02 5.911e-02 + 4.565e-02 3.354e-02 2.375e-02 1.639e-02 1.116e-02 7.650e-03 + 5.505e-03 4.400e-03 4.068e-03 4.400e-03 5.505e-03 7.650e-03 + 1.116e-02 1.639e-02 2.375e-02 3.354e-02 4.565e-02 5.911e-02 + 6.639e-02 7.190e-02 7.190e-02 6.639e-02 5.689e-02 4.565e-02 + 3.468e-02 2.524e-02 1.781e-02 1.232e-02 8.487e-03 6.008e-03 + 4.595e-03 3.979e-03 3.979e-03 4.595e-03 6.008e-03 8.487e-03 + 1.232e-02 1.781e-02 2.524e-02 3.468e-02 4.565e-02 5.689e-02 + 5.689e-02 5.911e-02 5.689e-02 5.086e-02 4.252e-02 3.354e-02 + 2.524e-02 1.832e-02 1.297e-02 9.073e-03 6.424e-03 4.792e-03 + 3.948e-03 3.695e-03 3.948e-03 4.792e-03 6.424e-03 9.073e-03 + 1.297e-02 1.832e-02 2.524e-02 3.354e-02 4.252e-02 5.086e-02 + 4.565e-02 4.565e-02 4.252e-02 3.705e-02 3.042e-02 2.375e-02 + 1.781e-02 1.297e-02 9.285e-03 6.662e-03 4.940e-03 3.945e-03 + 3.506e-03 3.506e-03 3.945e-03 4.940e-03 6.662e-03 9.285e-03 + 1.297e-02 1.781e-02 2.375e-02 3.042e-02 3.705e-02 4.252e-02 + 3.468e-02 3.354e-02 3.042e-02 2.600e-02 2.110e-02 1.639e-02 + 1.232e-02 9.073e-03 6.662e-03 4.995e-03 3.948e-03 3.394e-03 + 3.224e-03 3.394e-03 3.948e-03 4.995e-03 6.662e-03 9.073e-03 + 1.232e-02 1.639e-02 2.110e-02 2.600e-02 3.042e-02 3.354e-02 + 2.524e-02 2.375e-02 2.110e-02 1.780e-02 1.435e-02 1.116e-02 + 8.487e-03 6.424e-03 4.940e-03 3.948e-03 3.356e-03 3.084e-03 + 3.084e-03 3.356e-03 3.948e-03 4.940e-03 6.424e-03 8.487e-03 + 1.116e-02 1.435e-02 1.780e-02 2.110e-02 2.375e-02 2.524e-02 + 1.781e-02 1.639e-02 1.435e-02 1.201e-02 9.698e-03 7.650e-03 + 6.008e-03 4.792e-03 3.945e-03 3.394e-03 3.084e-03 2.984e-03 + 3.084e-03 3.394e-03 3.945e-03 4.792e-03 6.008e-03 7.650e-03 + 9.698e-03 1.201e-02 1.435e-02 1.639e-02 1.781e-02 1.832e-02 + 1.232e-02 1.116e-02 9.698e-03 8.149e-03 6.706e-03 5.505e-03 + 4.595e-03 3.948e-03 3.506e-03 3.224e-03 3.084e-03 3.084e-03 + 3.224e-03 3.506e-03 3.948e-03 4.595e-03 5.505e-03 6.706e-03 + 8.149e-03 9.698e-03 1.116e-02 1.232e-02 1.297e-02 1.297e-02 + 8.487e-03 7.650e-03 6.706e-03 5.788e-03 5.001e-03 4.400e-03 + 3.979e-03 3.695e-03 3.506e-03 3.394e-03 3.356e-03 3.394e-03 + 3.506e-03 3.695e-03 3.979e-03 4.400e-03 5.001e-03 5.788e-03 + 6.706e-03 7.650e-03 8.487e-03 9.073e-03 9.285e-03 9.073e-03 + 6.008e-03 5.505e-03 5.001e-03 4.569e-03 4.255e-03 4.068e-03 + 3.979e-03 3.948e-03 3.945e-03 3.948e-03 3.948e-03 3.945e-03 + 3.948e-03 3.979e-03 4.068e-03 4.255e-03 4.569e-03 5.001e-03 + 5.505e-03 6.008e-03 6.424e-03 6.662e-03 6.662e-03 6.424e-03 + 4.595e-03 4.400e-03 4.255e-03 4.201e-03 4.255e-03 4.400e-03 + 4.595e-03 4.792e-03 4.940e-03 4.995e-03 4.940e-03 4.792e-03 + 4.595e-03 4.400e-03 4.255e-03 4.201e-03 4.255e-03 4.400e-03 + 4.595e-03 4.792e-03 4.940e-03 4.995e-03 4.940e-03 4.792e-03 + 3.979e-03 4.068e-03 4.255e-03 4.569e-03 5.001e-03 5.505e-03 + 6.008e-03 6.424e-03 6.662e-03 6.662e-03 6.424e-03 6.008e-03 + 5.505e-03 5.001e-03 4.569e-03 4.255e-03 4.068e-03 3.979e-03 + 3.948e-03 3.945e-03 3.948e-03 3.948e-03 3.945e-03 3.948e-03 + 3.979e-03 4.400e-03 5.001e-03 5.788e-03 6.706e-03 7.650e-03 + 8.487e-03 9.073e-03 9.285e-03 9.073e-03 8.487e-03 7.650e-03 + 6.706e-03 5.788e-03 5.001e-03 4.400e-03 3.979e-03 3.695e-03 + 3.506e-03 3.394e-03 3.356e-03 3.394e-03 3.506e-03 3.695e-03 + 4.595e-03 5.505e-03 6.706e-03 8.149e-03 9.698e-03 1.116e-02 + 1.232e-02 1.297e-02 1.297e-02 1.232e-02 1.116e-02 9.698e-03 + 8.149e-03 6.706e-03 5.505e-03 4.595e-03 3.948e-03 3.506e-03 + 3.224e-03 3.084e-03 3.084e-03 3.224e-03 3.506e-03 3.948e-03 + 6.008e-03 7.650e-03 9.698e-03 1.201e-02 1.435e-02 1.639e-02 + 1.781e-02 1.832e-02 1.781e-02 1.639e-02 1.435e-02 1.201e-02 + 9.698e-03 7.650e-03 6.008e-03 4.792e-03 3.945e-03 3.394e-03 + 3.084e-03 2.984e-03 3.084e-03 3.394e-03 3.945e-03 4.792e-03 + 8.487e-03 1.116e-02 1.435e-02 1.780e-02 2.110e-02 2.375e-02 + 2.524e-02 2.524e-02 2.375e-02 2.110e-02 1.780e-02 1.435e-02 + 1.116e-02 8.487e-03 6.424e-03 4.940e-03 3.948e-03 3.356e-03 + 3.084e-03 3.084e-03 3.356e-03 3.948e-03 4.940e-03 6.424e-03 + 1.232e-02 1.639e-02 2.110e-02 2.600e-02 3.042e-02 3.354e-02 + 3.468e-02 3.354e-02 3.042e-02 2.600e-02 2.110e-02 1.639e-02 + 1.232e-02 9.073e-03 6.662e-03 4.995e-03 3.948e-03 3.394e-03 + 3.224e-03 3.394e-03 3.948e-03 4.995e-03 6.662e-03 9.073e-03 + 1.781e-02 2.375e-02 3.042e-02 3.705e-02 4.252e-02 4.565e-02 + 4.565e-02 4.252e-02 3.705e-02 3.042e-02 2.375e-02 1.781e-02 + 1.297e-02 9.285e-03 6.662e-03 4.940e-03 3.945e-03 3.506e-03 + 3.506e-03 3.945e-03 4.940e-03 6.662e-03 9.285e-03 1.297e-02 + 2.524e-02 3.354e-02 4.252e-02 5.086e-02 5.689e-02 5.911e-02 + 5.689e-02 5.086e-02 4.252e-02 3.354e-02 2.524e-02 1.832e-02 + 1.297e-02 9.073e-03 6.424e-03 4.792e-03 3.948e-03 3.695e-03 + 3.948e-03 4.792e-03 6.424e-03 9.073e-03 1.297e-02 1.832e-02 + 4.192e-02 5.434e-02 6.613e-02 7.478e-02 7.798e-02 7.478e-02 + 6.613e-02 5.434e-02 4.192e-02 3.074e-02 2.171e-02 1.495e-02 + 1.016e-02 6.959e-03 4.997e-03 3.979e-03 3.671e-03 3.979e-03 + 4.997e-03 6.959e-03 1.016e-02 1.495e-02 2.171e-02 3.074e-02 + 5.434e-02 6.870e-02 8.099e-02 8.818e-02 8.818e-02 8.099e-02 + 6.870e-02 5.434e-02 4.056e-02 2.897e-02 2.007e-02 1.366e-02 + 9.254e-03 6.418e-03 4.789e-03 4.068e-03 4.068e-03 4.789e-03 + 6.418e-03 9.254e-03 1.366e-02 2.007e-02 2.897e-02 4.056e-02 + 6.613e-02 8.099e-02 9.194e-02 9.600e-02 9.194e-02 8.099e-02 + 6.613e-02 5.061e-02 3.681e-02 2.582e-02 1.770e-02 1.200e-02 + 8.199e-03 5.856e-03 4.629e-03 4.255e-03 4.629e-03 5.856e-03 + 8.199e-03 1.200e-02 1.770e-02 2.582e-02 3.681e-02 5.061e-02 + 7.478e-02 8.818e-02 9.600e-02 9.600e-02 8.818e-02 7.478e-02 + 5.911e-02 4.411e-02 3.153e-02 2.191e-02 1.498e-02 1.022e-02 + 7.143e-03 5.361e-03 4.569e-03 4.569e-03 5.361e-03 7.143e-03 + 1.022e-02 1.498e-02 2.191e-02 3.153e-02 4.411e-02 5.911e-02 + 7.798e-02 8.818e-02 9.194e-02 8.818e-02 7.798e-02 6.404e-02 + 4.939e-02 3.625e-02 2.570e-02 1.784e-02 1.228e-02 8.541e-03 + 6.220e-03 5.001e-03 4.629e-03 5.001e-03 6.220e-03 8.541e-03 + 1.228e-02 1.784e-02 2.570e-02 3.625e-02 4.939e-02 6.404e-02 + 7.478e-02 8.099e-02 8.099e-02 7.478e-02 6.404e-02 5.133e-02 + 3.895e-02 2.838e-02 2.015e-02 1.411e-02 9.883e-03 7.115e-03 + 5.505e-03 4.789e-03 4.789e-03 5.505e-03 7.115e-03 9.883e-03 + 1.411e-02 2.015e-02 2.838e-02 3.895e-02 5.133e-02 6.404e-02 + 6.613e-02 6.870e-02 6.613e-02 5.911e-02 4.939e-02 3.895e-02 + 2.936e-02 2.145e-02 1.538e-02 1.096e-02 7.921e-03 6.008e-03 + 4.997e-03 4.689e-03 4.997e-03 6.008e-03 7.921e-03 1.096e-02 + 1.538e-02 2.145e-02 2.936e-02 3.895e-02 4.939e-02 5.911e-02 + 5.434e-02 5.434e-02 5.061e-02 4.411e-02 3.625e-02 2.838e-02 + 2.145e-02 1.584e-02 1.158e-02 8.494e-03 6.424e-03 5.200e-03 + 4.651e-03 4.651e-03 5.200e-03 6.424e-03 8.494e-03 1.158e-02 + 1.584e-02 2.145e-02 2.838e-02 3.625e-02 4.411e-02 5.061e-02 + 4.192e-02 4.056e-02 3.681e-02 3.153e-02 2.570e-02 2.015e-02 + 1.538e-02 1.158e-02 8.703e-03 6.662e-03 5.346e-03 4.638e-03 + 4.420e-03 4.638e-03 5.346e-03 6.662e-03 8.703e-03 1.158e-02 + 1.538e-02 2.015e-02 2.570e-02 3.153e-02 3.681e-02 4.056e-02 + 3.074e-02 2.897e-02 2.582e-02 2.191e-02 1.784e-02 1.411e-02 + 1.096e-02 8.494e-03 6.662e-03 5.400e-03 4.635e-03 4.284e-03 + 4.284e-03 4.635e-03 5.400e-03 6.662e-03 8.494e-03 1.096e-02 + 1.411e-02 1.784e-02 2.191e-02 2.582e-02 2.897e-02 3.074e-02 + 2.171e-02 2.007e-02 1.770e-02 1.498e-02 1.228e-02 9.883e-03 + 7.921e-03 6.424e-03 5.346e-03 4.635e-03 4.238e-03 4.112e-03 + 4.238e-03 4.635e-03 5.346e-03 6.424e-03 7.921e-03 9.883e-03 + 1.228e-02 1.498e-02 1.770e-02 2.007e-02 2.171e-02 2.230e-02 + 1.495e-02 1.366e-02 1.200e-02 1.022e-02 8.541e-03 7.115e-03 + 6.008e-03 5.200e-03 4.638e-03 4.284e-03 4.112e-03 4.112e-03 + 4.284e-03 4.638e-03 5.200e-03 6.008e-03 7.115e-03 8.541e-03 + 1.022e-02 1.200e-02 1.366e-02 1.495e-02 1.566e-02 1.566e-02 + 1.016e-02 9.254e-03 8.199e-03 7.143e-03 6.220e-03 5.505e-03 + 4.997e-03 4.651e-03 4.420e-03 4.284e-03 4.238e-03 4.284e-03 + 4.420e-03 4.651e-03 4.997e-03 5.505e-03 6.220e-03 7.143e-03 + 8.199e-03 9.254e-03 1.016e-02 1.078e-02 1.100e-02 1.078e-02 + 6.959e-03 6.418e-03 5.856e-03 5.361e-03 5.001e-03 4.789e-03 + 4.689e-03 4.651e-03 4.638e-03 4.635e-03 4.635e-03 4.638e-03 + 4.651e-03 4.689e-03 4.789e-03 5.001e-03 5.361e-03 5.856e-03 + 6.418e-03 6.959e-03 7.387e-03 7.626e-03 7.626e-03 7.387e-03 + 4.997e-03 4.789e-03 4.629e-03 4.569e-03 4.629e-03 4.789e-03 + 4.997e-03 5.200e-03 5.346e-03 5.400e-03 5.346e-03 5.200e-03 + 4.997e-03 4.789e-03 4.629e-03 4.569e-03 4.629e-03 4.789e-03 + 4.997e-03 5.200e-03 5.346e-03 5.400e-03 5.346e-03 5.200e-03 + 3.979e-03 4.068e-03 4.255e-03 4.569e-03 5.001e-03 5.505e-03 + 6.008e-03 6.424e-03 6.662e-03 6.662e-03 6.424e-03 6.008e-03 + 5.505e-03 5.001e-03 4.569e-03 4.255e-03 4.068e-03 3.979e-03 + 3.948e-03 3.945e-03 3.948e-03 3.948e-03 3.945e-03 3.948e-03 + 3.671e-03 4.068e-03 4.629e-03 5.361e-03 6.220e-03 7.115e-03 + 7.921e-03 8.494e-03 8.703e-03 8.494e-03 7.921e-03 7.115e-03 + 6.220e-03 5.361e-03 4.629e-03 4.068e-03 3.671e-03 3.399e-03 + 3.218e-03 3.110e-03 3.074e-03 3.110e-03 3.218e-03 3.399e-03 + 3.979e-03 4.789e-03 5.856e-03 7.143e-03 8.541e-03 9.883e-03 + 1.096e-02 1.158e-02 1.158e-02 1.096e-02 9.883e-03 8.541e-03 + 7.143e-03 5.856e-03 4.789e-03 3.979e-03 3.399e-03 2.998e-03 + 2.739e-03 2.610e-03 2.610e-03 2.739e-03 2.998e-03 3.399e-03 + 4.997e-03 6.418e-03 8.199e-03 1.022e-02 1.228e-02 1.411e-02 + 1.538e-02 1.584e-02 1.538e-02 1.411e-02 1.228e-02 1.022e-02 + 8.199e-03 6.418e-03 4.997e-03 3.948e-03 3.218e-03 2.739e-03 + 2.467e-03 2.378e-03 2.467e-03 2.739e-03 3.218e-03 3.948e-03 + 6.959e-03 9.254e-03 1.200e-02 1.498e-02 1.784e-02 2.015e-02 + 2.145e-02 2.145e-02 2.015e-02 1.784e-02 1.498e-02 1.200e-02 + 9.254e-03 6.959e-03 5.200e-03 3.945e-03 3.110e-03 2.610e-03 + 2.378e-03 2.378e-03 2.610e-03 3.110e-03 3.945e-03 5.200e-03 + 1.016e-02 1.366e-02 1.770e-02 2.191e-02 2.570e-02 2.838e-02 + 2.936e-02 2.838e-02 2.570e-02 2.191e-02 1.770e-02 1.366e-02 + 1.016e-02 7.387e-03 5.346e-03 3.948e-03 3.074e-03 2.610e-03 + 2.467e-03 2.610e-03 3.074e-03 3.948e-03 5.346e-03 7.387e-03 + 1.495e-02 2.007e-02 2.582e-02 3.153e-02 3.625e-02 3.895e-02 + 3.895e-02 3.625e-02 3.153e-02 2.582e-02 2.007e-02 1.495e-02 + 1.078e-02 7.626e-03 5.400e-03 3.948e-03 3.110e-03 2.739e-03 + 2.739e-03 3.110e-03 3.948e-03 5.400e-03 7.626e-03 1.078e-02 + 2.171e-02 2.897e-02 3.681e-02 4.411e-02 4.939e-02 5.133e-02 + 4.939e-02 4.411e-02 3.681e-02 2.897e-02 2.171e-02 1.566e-02 + 1.100e-02 7.626e-03 5.346e-03 3.945e-03 3.218e-03 2.998e-03 + 3.218e-03 3.945e-03 5.346e-03 7.626e-03 1.100e-02 1.566e-02 + 3.074e-02 4.056e-02 5.061e-02 5.911e-02 6.404e-02 6.404e-02 + 5.911e-02 5.061e-02 4.056e-02 3.074e-02 2.230e-02 1.566e-02 + 1.078e-02 7.387e-03 5.200e-03 3.948e-03 3.399e-03 3.399e-03 + 3.948e-03 5.200e-03 7.387e-03 1.078e-02 1.566e-02 2.230e-02 + 5.116e-02 6.459e-02 7.603e-02 8.268e-02 8.268e-02 7.603e-02 + 6.459e-02 5.116e-02 3.820e-02 2.728e-02 1.893e-02 1.296e-02 + 8.892e-03 6.247e-03 4.689e-03 3.979e-03 3.979e-03 4.689e-03 + 6.247e-03 8.892e-03 1.296e-02 1.893e-02 2.728e-02 3.820e-02 + 6.459e-02 7.892e-02 8.941e-02 9.329e-02 8.941e-02 7.892e-02 + 6.459e-02 4.953e-02 3.604e-02 2.531e-02 1.744e-02 1.198e-02 + 8.324e-03 6.030e-03 4.789e-03 4.400e-03 4.789e-03 6.030e-03 + 8.324e-03 1.198e-02 1.744e-02 2.531e-02 3.604e-02 4.953e-02 + 7.603e-02 8.941e-02 9.719e-02 9.719e-02 8.941e-02 7.603e-02 + 6.025e-02 4.502e-02 3.221e-02 2.247e-02 1.554e-02 1.081e-02 + 7.708e-03 5.856e-03 5.001e-03 5.001e-03 5.856e-03 7.708e-03 + 1.081e-02 1.554e-02 2.247e-02 3.221e-02 4.502e-02 6.025e-02 + 8.268e-02 9.329e-02 9.719e-02 9.329e-02 8.268e-02 6.809e-02 + 5.260e-02 3.864e-02 2.748e-02 1.926e-02 1.351e-02 9.620e-03 + 7.143e-03 5.788e-03 5.361e-03 5.788e-03 7.143e-03 9.620e-03 + 1.351e-02 1.926e-02 2.748e-02 3.864e-02 5.260e-02 6.809e-02 + 8.268e-02 8.941e-02 8.941e-02 8.268e-02 7.099e-02 5.700e-02 + 4.330e-02 3.163e-02 2.263e-02 1.612e-02 1.157e-02 8.541e-03 + 6.706e-03 5.856e-03 5.856e-03 6.706e-03 8.541e-03 1.157e-02 + 1.612e-02 2.263e-02 3.163e-02 4.330e-02 5.700e-02 7.099e-02 + 7.603e-02 7.892e-02 7.603e-02 6.809e-02 5.700e-02 4.501e-02 + 3.401e-02 2.502e-02 1.822e-02 1.331e-02 9.883e-03 7.650e-03 + 6.418e-03 6.030e-03 6.418e-03 7.650e-03 9.883e-03 1.331e-02 + 1.822e-02 2.502e-02 3.401e-02 4.501e-02 5.700e-02 6.809e-02 + 6.459e-02 6.459e-02 6.025e-02 5.260e-02 4.330e-02 3.401e-02 + 2.589e-02 1.942e-02 1.453e-02 1.096e-02 8.487e-03 6.959e-03 + 6.247e-03 6.247e-03 6.959e-03 8.487e-03 1.096e-02 1.453e-02 + 1.942e-02 2.589e-02 3.401e-02 4.330e-02 5.260e-02 6.025e-02 + 5.116e-02 4.953e-02 4.502e-02 3.864e-02 3.163e-02 2.502e-02 + 1.942e-02 1.498e-02 1.158e-02 9.073e-03 7.387e-03 6.445e-03 + 6.148e-03 6.445e-03 7.387e-03 9.073e-03 1.158e-02 1.498e-02 + 1.942e-02 2.502e-02 3.163e-02 3.864e-02 4.502e-02 4.953e-02 + 3.820e-02 3.604e-02 3.221e-02 2.748e-02 2.263e-02 1.822e-02 + 1.453e-02 1.158e-02 9.285e-03 7.626e-03 6.580e-03 6.091e-03 + 6.091e-03 6.580e-03 7.626e-03 9.285e-03 1.158e-02 1.453e-02 + 1.822e-02 2.263e-02 2.748e-02 3.221e-02 3.604e-02 3.820e-02 + 2.728e-02 2.531e-02 2.247e-02 1.926e-02 1.612e-02 1.331e-02 + 1.096e-02 9.073e-03 7.626e-03 6.629e-03 6.065e-03 5.886e-03 + 6.065e-03 6.629e-03 7.626e-03 9.073e-03 1.096e-02 1.331e-02 + 1.612e-02 1.926e-02 2.247e-02 2.531e-02 2.728e-02 2.799e-02 + 1.893e-02 1.744e-02 1.554e-02 1.351e-02 1.157e-02 9.883e-03 + 8.487e-03 7.387e-03 6.580e-03 6.065e-03 5.820e-03 5.820e-03 + 6.065e-03 6.580e-03 7.387e-03 8.487e-03 9.883e-03 1.157e-02 + 1.351e-02 1.554e-02 1.744e-02 1.893e-02 1.975e-02 1.975e-02 + 1.296e-02 1.198e-02 1.081e-02 9.620e-03 8.541e-03 7.650e-03 + 6.959e-03 6.445e-03 6.091e-03 5.886e-03 5.820e-03 5.886e-03 + 6.091e-03 6.445e-03 6.959e-03 7.650e-03 8.541e-03 9.620e-03 + 1.081e-02 1.198e-02 1.296e-02 1.363e-02 1.386e-02 1.363e-02 + 8.892e-03 8.324e-03 7.708e-03 7.143e-03 6.706e-03 6.418e-03 + 6.247e-03 6.148e-03 6.091e-03 6.065e-03 6.065e-03 6.091e-03 + 6.148e-03 6.247e-03 6.418e-03 6.706e-03 7.143e-03 7.708e-03 + 8.324e-03 8.892e-03 9.326e-03 9.563e-03 9.563e-03 9.326e-03 + 6.247e-03 6.030e-03 5.856e-03 5.788e-03 5.856e-03 6.030e-03 + 6.247e-03 6.445e-03 6.580e-03 6.629e-03 6.580e-03 6.445e-03 + 6.247e-03 6.030e-03 5.856e-03 5.788e-03 5.856e-03 6.030e-03 + 6.247e-03 6.445e-03 6.580e-03 6.629e-03 6.580e-03 6.445e-03 + 4.689e-03 4.789e-03 5.001e-03 5.361e-03 5.856e-03 6.418e-03 + 6.959e-03 7.387e-03 7.626e-03 7.626e-03 7.387e-03 6.959e-03 + 6.418e-03 5.856e-03 5.361e-03 5.001e-03 4.789e-03 4.689e-03 + 4.651e-03 4.638e-03 4.635e-03 4.635e-03 4.638e-03 4.651e-03 + 3.979e-03 4.400e-03 5.001e-03 5.788e-03 6.706e-03 7.650e-03 + 8.487e-03 9.073e-03 9.285e-03 9.073e-03 8.487e-03 7.650e-03 + 6.706e-03 5.788e-03 5.001e-03 4.400e-03 3.979e-03 3.695e-03 + 3.506e-03 3.394e-03 3.356e-03 3.394e-03 3.506e-03 3.695e-03 + 3.979e-03 4.789e-03 5.856e-03 7.143e-03 8.541e-03 9.883e-03 + 1.096e-02 1.158e-02 1.158e-02 1.096e-02 9.883e-03 8.541e-03 + 7.143e-03 5.856e-03 4.789e-03 3.979e-03 3.399e-03 2.998e-03 + 2.739e-03 2.610e-03 2.610e-03 2.739e-03 2.998e-03 3.399e-03 + 4.689e-03 6.030e-03 7.708e-03 9.620e-03 1.157e-02 1.331e-02 + 1.453e-02 1.498e-02 1.453e-02 1.331e-02 1.157e-02 9.620e-03 + 7.708e-03 6.030e-03 4.689e-03 3.695e-03 2.998e-03 2.539e-03 + 2.276e-03 2.190e-03 2.276e-03 2.539e-03 2.998e-03 3.695e-03 + 6.247e-03 8.324e-03 1.081e-02 1.351e-02 1.612e-02 1.822e-02 + 1.942e-02 1.942e-02 1.822e-02 1.612e-02 1.351e-02 1.081e-02 + 8.324e-03 6.247e-03 4.651e-03 3.506e-03 2.739e-03 2.276e-03 + 2.060e-03 2.060e-03 2.276e-03 2.739e-03 3.506e-03 4.651e-03 + 8.892e-03 1.198e-02 1.554e-02 1.926e-02 2.263e-02 2.502e-02 + 2.589e-02 2.502e-02 2.263e-02 1.926e-02 1.554e-02 1.198e-02 + 8.892e-03 6.445e-03 4.638e-03 3.394e-03 2.610e-03 2.190e-03 + 2.060e-03 2.190e-03 2.610e-03 3.394e-03 4.638e-03 6.445e-03 + 1.296e-02 1.744e-02 2.247e-02 2.748e-02 3.163e-02 3.401e-02 + 3.401e-02 3.163e-02 2.748e-02 2.247e-02 1.744e-02 1.296e-02 + 9.326e-03 6.580e-03 4.635e-03 3.356e-03 2.610e-03 2.276e-03 + 2.276e-03 2.610e-03 3.356e-03 4.635e-03 6.580e-03 9.326e-03 + 1.893e-02 2.531e-02 3.221e-02 3.864e-02 4.330e-02 4.501e-02 + 4.330e-02 3.864e-02 3.221e-02 2.531e-02 1.893e-02 1.363e-02 + 9.563e-03 6.629e-03 4.635e-03 3.394e-03 2.739e-03 2.539e-03 + 2.739e-03 3.394e-03 4.635e-03 6.629e-03 9.563e-03 1.363e-02 + 2.728e-02 3.604e-02 4.502e-02 5.260e-02 5.700e-02 5.700e-02 + 5.260e-02 4.502e-02 3.604e-02 2.728e-02 1.975e-02 1.386e-02 + 9.563e-03 6.580e-03 4.638e-03 3.506e-03 2.998e-03 2.998e-03 + 3.506e-03 4.638e-03 6.580e-03 9.563e-03 1.386e-02 1.975e-02 + 3.820e-02 4.953e-02 6.025e-02 6.809e-02 7.099e-02 6.809e-02 + 6.025e-02 4.953e-02 3.820e-02 2.799e-02 1.975e-02 1.363e-02 + 9.326e-03 6.445e-03 4.651e-03 3.695e-03 3.399e-03 3.695e-03 + 4.651e-03 6.445e-03 9.326e-03 1.363e-02 1.975e-02 2.799e-02 + 6.053e-02 7.300e-02 8.198e-02 8.528e-02 8.198e-02 7.300e-02 + 6.053e-02 4.707e-02 3.469e-02 2.460e-02 1.714e-02 1.196e-02 + 8.479e-03 6.247e-03 4.997e-03 4.595e-03 4.997e-03 6.247e-03 + 8.479e-03 1.196e-02 1.714e-02 2.460e-02 3.469e-02 4.707e-02 + 7.300e-02 8.473e-02 9.146e-02 9.146e-02 8.473e-02 7.300e-02 + 5.881e-02 4.466e-02 3.238e-02 2.286e-02 1.606e-02 1.141e-02 + 8.324e-03 6.418e-03 5.505e-03 5.505e-03 6.418e-03 8.324e-03 + 1.141e-02 1.606e-02 2.286e-02 3.238e-02 4.466e-02 5.881e-02 + 8.198e-02 9.146e-02 9.491e-02 9.146e-02 8.198e-02 6.863e-02 + 5.398e-02 4.029e-02 2.903e-02 2.066e-02 1.480e-02 1.081e-02 + 8.199e-03 6.706e-03 6.220e-03 6.706e-03 8.199e-03 1.081e-02 + 1.480e-02 2.066e-02 2.903e-02 4.029e-02 5.398e-02 6.863e-02 + 8.528e-02 9.146e-02 9.146e-02 8.528e-02 7.430e-02 6.074e-02 + 4.693e-02 3.477e-02 2.524e-02 1.833e-02 1.351e-02 1.022e-02 + 8.149e-03 7.143e-03 7.143e-03 8.149e-03 1.022e-02 1.351e-02 + 1.833e-02 2.524e-02 3.477e-02 4.693e-02 6.074e-02 7.430e-02 + 8.198e-02 8.473e-02 8.198e-02 7.430e-02 6.323e-02 5.077e-02 + 3.892e-02 2.904e-02 2.153e-02 1.612e-02 1.228e-02 9.698e-03 + 8.199e-03 7.708e-03 8.199e-03 9.698e-03 1.228e-02 1.612e-02 + 2.153e-02 2.904e-02 3.892e-02 5.077e-02 6.323e-02 7.430e-02 + 7.300e-02 7.300e-02 6.863e-02 6.074e-02 5.077e-02 4.045e-02 + 3.122e-02 2.381e-02 1.822e-02 1.411e-02 1.116e-02 9.254e-03 + 8.324e-03 8.324e-03 9.254e-03 1.116e-02 1.411e-02 1.822e-02 + 2.381e-02 3.122e-02 4.045e-02 5.077e-02 6.074e-02 6.863e-02 + 6.053e-02 5.881e-02 5.398e-02 4.693e-02 3.892e-02 3.122e-02 + 2.464e-02 1.942e-02 1.538e-02 1.232e-02 1.016e-02 8.892e-03 + 8.479e-03 8.892e-03 1.016e-02 1.232e-02 1.538e-02 1.942e-02 + 2.464e-02 3.122e-02 3.892e-02 4.693e-02 5.398e-02 5.881e-02 + 4.707e-02 4.466e-02 4.029e-02 3.477e-02 2.904e-02 2.381e-02 + 1.942e-02 1.584e-02 1.297e-02 1.078e-02 9.326e-03 8.621e-03 + 8.621e-03 9.326e-03 1.078e-02 1.297e-02 1.584e-02 1.942e-02 + 2.381e-02 2.904e-02 3.477e-02 4.029e-02 4.466e-02 4.707e-02 + 3.469e-02 3.238e-02 2.903e-02 2.524e-02 2.153e-02 1.822e-02 + 1.538e-02 1.297e-02 1.100e-02 9.563e-03 8.723e-03 8.453e-03 + 8.723e-03 9.563e-03 1.100e-02 1.297e-02 1.538e-02 1.822e-02 + 2.153e-02 2.524e-02 2.903e-02 3.238e-02 3.469e-02 3.552e-02 + 2.460e-02 2.286e-02 2.066e-02 1.833e-02 1.612e-02 1.411e-02 + 1.232e-02 1.078e-02 9.563e-03 8.760e-03 8.378e-03 8.378e-03 + 8.760e-03 9.563e-03 1.078e-02 1.232e-02 1.411e-02 1.612e-02 + 1.833e-02 2.066e-02 2.286e-02 2.460e-02 2.558e-02 2.558e-02 + 1.714e-02 1.606e-02 1.480e-02 1.351e-02 1.228e-02 1.116e-02 + 1.016e-02 9.326e-03 8.723e-03 8.378e-03 8.270e-03 8.378e-03 + 8.723e-03 9.326e-03 1.016e-02 1.116e-02 1.228e-02 1.351e-02 + 1.480e-02 1.606e-02 1.714e-02 1.789e-02 1.816e-02 1.789e-02 + 1.196e-02 1.141e-02 1.081e-02 1.022e-02 9.698e-03 9.254e-03 + 8.892e-03 8.621e-03 8.453e-03 8.378e-03 8.378e-03 8.453e-03 + 8.621e-03 8.892e-03 9.254e-03 9.698e-03 1.022e-02 1.081e-02 + 1.141e-02 1.196e-02 1.238e-02 1.262e-02 1.262e-02 1.238e-02 + 8.479e-03 8.324e-03 8.199e-03 8.149e-03 8.199e-03 8.324e-03 + 8.479e-03 8.621e-03 8.723e-03 8.760e-03 8.723e-03 8.621e-03 + 8.479e-03 8.324e-03 8.199e-03 8.149e-03 8.199e-03 8.324e-03 + 8.479e-03 8.621e-03 8.723e-03 8.760e-03 8.723e-03 8.621e-03 + 6.247e-03 6.418e-03 6.706e-03 7.143e-03 7.708e-03 8.324e-03 + 8.892e-03 9.326e-03 9.563e-03 9.563e-03 9.326e-03 8.892e-03 + 8.324e-03 7.708e-03 7.143e-03 6.706e-03 6.418e-03 6.247e-03 + 6.148e-03 6.091e-03 6.065e-03 6.065e-03 6.091e-03 6.148e-03 + 4.997e-03 5.505e-03 6.220e-03 7.143e-03 8.199e-03 9.254e-03 + 1.016e-02 1.078e-02 1.100e-02 1.078e-02 1.016e-02 9.254e-03 + 8.199e-03 7.143e-03 6.220e-03 5.505e-03 4.997e-03 4.651e-03 + 4.420e-03 4.284e-03 4.238e-03 4.284e-03 4.420e-03 4.651e-03 + 4.595e-03 5.505e-03 6.706e-03 8.149e-03 9.698e-03 1.116e-02 + 1.232e-02 1.297e-02 1.297e-02 1.232e-02 1.116e-02 9.698e-03 + 8.149e-03 6.706e-03 5.505e-03 4.595e-03 3.948e-03 3.506e-03 + 3.224e-03 3.084e-03 3.084e-03 3.224e-03 3.506e-03 3.948e-03 + 4.997e-03 6.418e-03 8.199e-03 1.022e-02 1.228e-02 1.411e-02 + 1.538e-02 1.584e-02 1.538e-02 1.411e-02 1.228e-02 1.022e-02 + 8.199e-03 6.418e-03 4.997e-03 3.948e-03 3.218e-03 2.739e-03 + 2.467e-03 2.378e-03 2.467e-03 2.739e-03 3.218e-03 3.948e-03 + 6.247e-03 8.324e-03 1.081e-02 1.351e-02 1.612e-02 1.822e-02 + 1.942e-02 1.942e-02 1.822e-02 1.612e-02 1.351e-02 1.081e-02 + 8.324e-03 6.247e-03 4.651e-03 3.506e-03 2.739e-03 2.276e-03 + 2.060e-03 2.060e-03 2.276e-03 2.739e-03 3.506e-03 4.651e-03 + 8.479e-03 1.141e-02 1.480e-02 1.833e-02 2.153e-02 2.381e-02 + 2.464e-02 2.381e-02 2.153e-02 1.833e-02 1.480e-02 1.141e-02 + 8.479e-03 6.148e-03 4.420e-03 3.224e-03 2.467e-03 2.060e-03 + 1.933e-03 2.060e-03 2.467e-03 3.224e-03 4.420e-03 6.148e-03 + 1.196e-02 1.606e-02 2.066e-02 2.524e-02 2.904e-02 3.122e-02 + 3.122e-02 2.904e-02 2.524e-02 2.066e-02 1.606e-02 1.196e-02 + 8.621e-03 6.091e-03 4.284e-03 3.084e-03 2.378e-03 2.060e-03 + 2.060e-03 2.378e-03 3.084e-03 4.284e-03 6.091e-03 8.621e-03 + 1.714e-02 2.286e-02 2.903e-02 3.477e-02 3.892e-02 4.045e-02 + 3.892e-02 3.477e-02 2.903e-02 2.286e-02 1.714e-02 1.238e-02 + 8.723e-03 6.065e-03 4.238e-03 3.084e-03 2.467e-03 2.276e-03 + 2.467e-03 3.084e-03 4.238e-03 6.065e-03 8.723e-03 1.238e-02 + 2.460e-02 3.238e-02 4.029e-02 4.693e-02 5.077e-02 5.077e-02 + 4.693e-02 4.029e-02 3.238e-02 2.460e-02 1.789e-02 1.262e-02 + 8.760e-03 6.065e-03 4.284e-03 3.224e-03 2.739e-03 2.739e-03 + 3.224e-03 4.284e-03 6.065e-03 8.760e-03 1.262e-02 1.789e-02 + 3.469e-02 4.466e-02 5.398e-02 6.074e-02 6.323e-02 6.074e-02 + 5.398e-02 4.466e-02 3.469e-02 2.558e-02 1.816e-02 1.262e-02 + 8.723e-03 6.091e-03 4.420e-03 3.506e-03 3.218e-03 3.506e-03 + 4.420e-03 6.091e-03 8.723e-03 1.262e-02 1.816e-02 2.558e-02 + 4.707e-02 5.881e-02 6.863e-02 7.430e-02 7.430e-02 6.863e-02 + 5.881e-02 4.707e-02 3.552e-02 2.558e-02 1.789e-02 1.238e-02 + 8.621e-03 6.148e-03 4.651e-03 3.948e-03 3.948e-03 4.651e-03 + 6.148e-03 8.621e-03 1.238e-02 1.789e-02 2.558e-02 3.552e-02 + 6.466e-02 7.277e-02 7.727e-02 7.727e-02 7.277e-02 6.466e-02 + 5.421e-02 4.283e-02 3.206e-02 2.313e-02 1.653e-02 1.196e-02 + 8.892e-03 6.959e-03 6.008e-03 6.008e-03 6.959e-03 8.892e-03 + 1.196e-02 1.653e-02 2.313e-02 3.206e-02 4.283e-02 5.421e-02 + 7.277e-02 7.896e-02 8.117e-02 7.896e-02 7.277e-02 6.353e-02 + 5.237e-02 4.073e-02 3.025e-02 2.199e-02 1.606e-02 1.198e-02 + 9.254e-03 7.650e-03 7.115e-03 7.650e-03 9.254e-03 1.198e-02 + 1.606e-02 2.199e-02 3.025e-02 4.073e-02 5.237e-02 6.353e-02 + 7.727e-02 8.117e-02 8.117e-02 7.727e-02 7.000e-02 6.009e-02 + 4.868e-02 3.742e-02 2.787e-02 2.066e-02 1.554e-02 1.200e-02 + 9.698e-03 8.541e-03 8.541e-03 9.698e-03 1.200e-02 1.554e-02 + 2.066e-02 2.787e-02 3.742e-02 4.868e-02 6.009e-02 7.000e-02 + 7.727e-02 7.896e-02 7.727e-02 7.233e-02 6.446e-02 5.436e-02 + 4.341e-02 3.333e-02 2.524e-02 1.926e-02 1.498e-02 1.201e-02 + 1.022e-02 9.620e-03 1.022e-02 1.201e-02 1.498e-02 1.926e-02 + 2.524e-02 3.333e-02 4.341e-02 5.436e-02 6.446e-02 7.233e-02 + 7.277e-02 7.277e-02 7.000e-02 6.446e-02 5.643e-02 4.685e-02 + 3.728e-02 2.904e-02 2.263e-02 1.784e-02 1.435e-02 1.200e-02 + 1.081e-02 1.081e-02 1.200e-02 1.435e-02 1.784e-02 2.263e-02 + 2.904e-02 3.728e-02 4.685e-02 5.643e-02 6.446e-02 7.000e-02 + 6.466e-02 6.353e-02 6.009e-02 5.436e-02 4.685e-02 3.872e-02 + 3.122e-02 2.502e-02 2.015e-02 1.639e-02 1.366e-02 1.198e-02 + 1.141e-02 1.198e-02 1.366e-02 1.639e-02 2.015e-02 2.502e-02 + 3.122e-02 3.872e-02 4.685e-02 5.436e-02 6.009e-02 6.353e-02 + 5.421e-02 5.237e-02 4.868e-02 4.341e-02 3.728e-02 3.122e-02 + 2.589e-02 2.145e-02 1.781e-02 1.495e-02 1.296e-02 1.196e-02 + 1.196e-02 1.296e-02 1.495e-02 1.781e-02 2.145e-02 2.589e-02 + 3.122e-02 3.728e-02 4.341e-02 4.868e-02 5.237e-02 5.421e-02 + 4.283e-02 4.073e-02 3.742e-02 3.333e-02 2.904e-02 2.502e-02 + 2.145e-02 1.832e-02 1.566e-02 1.363e-02 1.238e-02 1.197e-02 + 1.238e-02 1.363e-02 1.566e-02 1.832e-02 2.145e-02 2.502e-02 + 2.904e-02 3.333e-02 3.742e-02 4.073e-02 4.283e-02 4.355e-02 + 3.206e-02 3.025e-02 2.787e-02 2.524e-02 2.263e-02 2.015e-02 + 1.781e-02 1.566e-02 1.386e-02 1.262e-02 1.201e-02 1.201e-02 + 1.262e-02 1.386e-02 1.566e-02 1.781e-02 2.015e-02 2.263e-02 + 2.524e-02 2.787e-02 3.025e-02 3.206e-02 3.303e-02 3.303e-02 + 2.313e-02 2.199e-02 2.066e-02 1.926e-02 1.784e-02 1.639e-02 + 1.495e-02 1.363e-02 1.262e-02 1.203e-02 1.185e-02 1.203e-02 + 1.262e-02 1.363e-02 1.495e-02 1.639e-02 1.784e-02 1.926e-02 + 2.066e-02 2.199e-02 2.313e-02 2.393e-02 2.422e-02 2.393e-02 + 1.653e-02 1.606e-02 1.554e-02 1.498e-02 1.435e-02 1.366e-02 + 1.296e-02 1.238e-02 1.201e-02 1.185e-02 1.185e-02 1.201e-02 + 1.238e-02 1.296e-02 1.366e-02 1.435e-02 1.498e-02 1.554e-02 + 1.606e-02 1.653e-02 1.693e-02 1.717e-02 1.717e-02 1.693e-02 + 1.196e-02 1.198e-02 1.200e-02 1.201e-02 1.200e-02 1.198e-02 + 1.196e-02 1.197e-02 1.201e-02 1.203e-02 1.201e-02 1.197e-02 + 1.196e-02 1.198e-02 1.200e-02 1.201e-02 1.200e-02 1.198e-02 + 1.196e-02 1.197e-02 1.201e-02 1.203e-02 1.201e-02 1.197e-02 + 8.892e-03 9.254e-03 9.698e-03 1.022e-02 1.081e-02 1.141e-02 + 1.196e-02 1.238e-02 1.262e-02 1.262e-02 1.238e-02 1.196e-02 + 1.141e-02 1.081e-02 1.022e-02 9.698e-03 9.254e-03 8.892e-03 + 8.621e-03 8.453e-03 8.378e-03 8.378e-03 8.453e-03 8.621e-03 + 6.959e-03 7.650e-03 8.541e-03 9.620e-03 1.081e-02 1.198e-02 + 1.296e-02 1.363e-02 1.386e-02 1.363e-02 1.296e-02 1.198e-02 + 1.081e-02 9.620e-03 8.541e-03 7.650e-03 6.959e-03 6.445e-03 + 6.091e-03 5.886e-03 5.820e-03 5.886e-03 6.091e-03 6.445e-03 + 6.008e-03 7.115e-03 8.541e-03 1.022e-02 1.200e-02 1.366e-02 + 1.495e-02 1.566e-02 1.566e-02 1.495e-02 1.366e-02 1.200e-02 + 1.022e-02 8.541e-03 7.115e-03 6.008e-03 5.200e-03 4.638e-03 + 4.284e-03 4.112e-03 4.112e-03 4.284e-03 4.638e-03 5.200e-03 + 6.008e-03 7.650e-03 9.698e-03 1.201e-02 1.435e-02 1.639e-02 + 1.781e-02 1.832e-02 1.781e-02 1.639e-02 1.435e-02 1.201e-02 + 9.698e-03 7.650e-03 6.008e-03 4.792e-03 3.945e-03 3.394e-03 + 3.084e-03 2.984e-03 3.084e-03 3.394e-03 3.945e-03 4.792e-03 + 6.959e-03 9.254e-03 1.200e-02 1.498e-02 1.784e-02 2.015e-02 + 2.145e-02 2.145e-02 2.015e-02 1.784e-02 1.498e-02 1.200e-02 + 9.254e-03 6.959e-03 5.200e-03 3.945e-03 3.110e-03 2.610e-03 + 2.378e-03 2.378e-03 2.610e-03 3.110e-03 3.945e-03 5.200e-03 + 8.892e-03 1.198e-02 1.554e-02 1.926e-02 2.263e-02 2.502e-02 + 2.589e-02 2.502e-02 2.263e-02 1.926e-02 1.554e-02 1.198e-02 + 8.892e-03 6.445e-03 4.638e-03 3.394e-03 2.610e-03 2.190e-03 + 2.060e-03 2.190e-03 2.610e-03 3.394e-03 4.638e-03 6.445e-03 + 1.196e-02 1.606e-02 2.066e-02 2.524e-02 2.904e-02 3.122e-02 + 3.122e-02 2.904e-02 2.524e-02 2.066e-02 1.606e-02 1.196e-02 + 8.621e-03 6.091e-03 4.284e-03 3.084e-03 2.378e-03 2.060e-03 + 2.060e-03 2.378e-03 3.084e-03 4.284e-03 6.091e-03 8.621e-03 + 1.653e-02 2.199e-02 2.787e-02 3.333e-02 3.728e-02 3.872e-02 + 3.728e-02 3.333e-02 2.787e-02 2.199e-02 1.653e-02 1.197e-02 + 8.453e-03 5.886e-03 4.112e-03 2.984e-03 2.378e-03 2.190e-03 + 2.378e-03 2.984e-03 4.112e-03 5.886e-03 8.453e-03 1.197e-02 + 2.313e-02 3.025e-02 3.742e-02 4.341e-02 4.685e-02 4.685e-02 + 4.341e-02 3.742e-02 3.025e-02 2.313e-02 1.693e-02 1.201e-02 + 8.378e-03 5.820e-03 4.112e-03 3.084e-03 2.610e-03 2.610e-03 + 3.084e-03 4.112e-03 5.820e-03 8.378e-03 1.201e-02 1.693e-02 + 3.206e-02 4.073e-02 4.868e-02 5.436e-02 5.643e-02 5.436e-02 + 4.868e-02 4.073e-02 3.206e-02 2.393e-02 1.717e-02 1.203e-02 + 8.378e-03 5.886e-03 4.284e-03 3.394e-03 3.110e-03 3.394e-03 + 4.284e-03 5.886e-03 8.378e-03 1.203e-02 1.717e-02 2.393e-02 + 4.283e-02 5.237e-02 6.009e-02 6.446e-02 6.446e-02 6.009e-02 + 5.237e-02 4.283e-02 3.303e-02 2.422e-02 1.717e-02 1.201e-02 + 8.453e-03 6.091e-03 4.638e-03 3.945e-03 3.945e-03 4.638e-03 + 6.091e-03 8.453e-03 1.201e-02 1.717e-02 2.422e-02 3.303e-02 + 5.421e-02 6.353e-02 7.000e-02 7.233e-02 7.000e-02 6.353e-02 + 5.421e-02 4.355e-02 3.303e-02 2.393e-02 1.693e-02 1.197e-02 + 8.621e-03 6.445e-03 5.200e-03 4.792e-03 5.200e-03 6.445e-03 + 8.621e-03 1.197e-02 1.693e-02 2.393e-02 3.303e-02 4.355e-02 + 5.728e-02 5.903e-02 5.962e-02 5.903e-02 5.728e-02 5.397e-02 + 4.821e-02 4.006e-02 3.107e-02 2.313e-02 1.714e-02 1.296e-02 + 1.016e-02 8.487e-03 7.921e-03 8.487e-03 1.016e-02 1.296e-02 + 1.714e-02 2.313e-02 3.107e-02 4.006e-02 4.821e-02 5.397e-02 + 5.903e-02 5.950e-02 5.950e-02 5.903e-02 5.775e-02 5.442e-02 + 4.798e-02 3.920e-02 3.025e-02 2.286e-02 1.744e-02 1.366e-02 + 1.116e-02 9.883e-03 9.883e-03 1.116e-02 1.366e-02 1.744e-02 + 2.286e-02 3.025e-02 3.920e-02 4.798e-02 5.442e-02 5.775e-02 + 5.962e-02 5.950e-02 5.962e-02 5.968e-02 5.845e-02 5.416e-02 + 4.655e-02 3.742e-02 2.903e-02 2.247e-02 1.770e-02 1.435e-02 + 1.228e-02 1.157e-02 1.228e-02 1.435e-02 1.770e-02 2.247e-02 + 2.903e-02 3.742e-02 4.655e-02 5.416e-02 5.845e-02 5.968e-02 + 5.903e-02 5.903e-02 5.968e-02 5.986e-02 5.759e-02 5.176e-02 + 4.341e-02 3.477e-02 2.748e-02 2.191e-02 1.780e-02 1.498e-02 + 1.351e-02 1.351e-02 1.498e-02 1.780e-02 2.191e-02 2.748e-02 + 3.477e-02 4.341e-02 5.176e-02 5.759e-02 5.986e-02 5.968e-02 + 5.728e-02 5.775e-02 5.845e-02 5.759e-02 5.366e-02 4.685e-02 + 3.892e-02 3.163e-02 2.570e-02 2.110e-02 1.770e-02 1.554e-02 + 1.480e-02 1.554e-02 1.770e-02 2.110e-02 2.570e-02 3.163e-02 + 3.892e-02 4.685e-02 5.366e-02 5.759e-02 5.845e-02 5.775e-02 + 5.397e-02 5.442e-02 5.416e-02 5.176e-02 4.685e-02 4.045e-02 + 3.401e-02 2.838e-02 2.375e-02 2.007e-02 1.744e-02 1.606e-02 + 1.606e-02 1.744e-02 2.007e-02 2.375e-02 2.838e-02 3.401e-02 + 4.045e-02 4.685e-02 5.176e-02 5.416e-02 5.442e-02 5.397e-02 + 4.821e-02 4.798e-02 4.655e-02 4.341e-02 3.892e-02 3.401e-02 + 2.936e-02 2.524e-02 2.171e-02 1.893e-02 1.714e-02 1.653e-02 + 1.714e-02 1.893e-02 2.171e-02 2.524e-02 2.936e-02 3.401e-02 + 3.892e-02 4.341e-02 4.655e-02 4.798e-02 4.821e-02 4.814e-02 + 4.006e-02 3.920e-02 3.742e-02 3.477e-02 3.163e-02 2.838e-02 + 2.524e-02 2.230e-02 1.975e-02 1.789e-02 1.693e-02 1.693e-02 + 1.789e-02 1.975e-02 2.230e-02 2.524e-02 2.838e-02 3.163e-02 + 3.477e-02 3.742e-02 3.920e-02 4.006e-02 4.032e-02 4.032e-02 + 3.107e-02 3.025e-02 2.903e-02 2.748e-02 2.570e-02 2.375e-02 + 2.171e-02 1.975e-02 1.816e-02 1.717e-02 1.684e-02 1.717e-02 + 1.816e-02 1.975e-02 2.171e-02 2.375e-02 2.570e-02 2.748e-02 + 2.903e-02 3.025e-02 3.107e-02 3.151e-02 3.165e-02 3.151e-02 + 2.313e-02 2.286e-02 2.247e-02 2.191e-02 2.110e-02 2.007e-02 + 1.893e-02 1.789e-02 1.717e-02 1.682e-02 1.682e-02 1.717e-02 + 1.789e-02 1.893e-02 2.007e-02 2.110e-02 2.191e-02 2.247e-02 + 2.286e-02 2.313e-02 2.335e-02 2.348e-02 2.348e-02 2.335e-02 + 1.714e-02 1.744e-02 1.770e-02 1.780e-02 1.770e-02 1.744e-02 + 1.714e-02 1.693e-02 1.684e-02 1.682e-02 1.684e-02 1.693e-02 + 1.714e-02 1.744e-02 1.770e-02 1.780e-02 1.770e-02 1.744e-02 + 1.714e-02 1.693e-02 1.684e-02 1.682e-02 1.684e-02 1.693e-02 + 1.296e-02 1.366e-02 1.435e-02 1.498e-02 1.554e-02 1.606e-02 + 1.653e-02 1.693e-02 1.717e-02 1.717e-02 1.693e-02 1.653e-02 + 1.606e-02 1.554e-02 1.498e-02 1.435e-02 1.366e-02 1.296e-02 + 1.238e-02 1.201e-02 1.185e-02 1.185e-02 1.201e-02 1.238e-02 + 1.016e-02 1.116e-02 1.228e-02 1.351e-02 1.480e-02 1.606e-02 + 1.714e-02 1.789e-02 1.816e-02 1.789e-02 1.714e-02 1.606e-02 + 1.480e-02 1.351e-02 1.228e-02 1.116e-02 1.016e-02 9.326e-03 + 8.723e-03 8.378e-03 8.270e-03 8.378e-03 8.723e-03 9.326e-03 + 8.487e-03 9.883e-03 1.157e-02 1.351e-02 1.554e-02 1.744e-02 + 1.893e-02 1.975e-02 1.975e-02 1.893e-02 1.744e-02 1.554e-02 + 1.351e-02 1.157e-02 9.883e-03 8.487e-03 7.387e-03 6.580e-03 + 6.065e-03 5.820e-03 5.820e-03 6.065e-03 6.580e-03 7.387e-03 + 7.921e-03 9.883e-03 1.228e-02 1.498e-02 1.770e-02 2.007e-02 + 2.171e-02 2.230e-02 2.171e-02 2.007e-02 1.770e-02 1.498e-02 + 1.228e-02 9.883e-03 7.921e-03 6.424e-03 5.346e-03 4.635e-03 + 4.238e-03 4.112e-03 4.238e-03 4.635e-03 5.346e-03 6.424e-03 + 8.487e-03 1.116e-02 1.435e-02 1.780e-02 2.110e-02 2.375e-02 + 2.524e-02 2.524e-02 2.375e-02 2.110e-02 1.780e-02 1.435e-02 + 1.116e-02 8.487e-03 6.424e-03 4.940e-03 3.948e-03 3.356e-03 + 3.084e-03 3.084e-03 3.356e-03 3.948e-03 4.940e-03 6.424e-03 + 1.016e-02 1.366e-02 1.770e-02 2.191e-02 2.570e-02 2.838e-02 + 2.936e-02 2.838e-02 2.570e-02 2.191e-02 1.770e-02 1.366e-02 + 1.016e-02 7.387e-03 5.346e-03 3.948e-03 3.074e-03 2.610e-03 + 2.467e-03 2.610e-03 3.074e-03 3.948e-03 5.346e-03 7.387e-03 + 1.296e-02 1.744e-02 2.247e-02 2.748e-02 3.163e-02 3.401e-02 + 3.401e-02 3.163e-02 2.748e-02 2.247e-02 1.744e-02 1.296e-02 + 9.326e-03 6.580e-03 4.635e-03 3.356e-03 2.610e-03 2.276e-03 + 2.276e-03 2.610e-03 3.356e-03 4.635e-03 6.580e-03 9.326e-03 + 1.714e-02 2.286e-02 2.903e-02 3.477e-02 3.892e-02 4.045e-02 + 3.892e-02 3.477e-02 2.903e-02 2.286e-02 1.714e-02 1.238e-02 + 8.723e-03 6.065e-03 4.238e-03 3.084e-03 2.467e-03 2.276e-03 + 2.467e-03 3.084e-03 4.238e-03 6.065e-03 8.723e-03 1.238e-02 + 2.313e-02 3.025e-02 3.742e-02 4.341e-02 4.685e-02 4.685e-02 + 4.341e-02 3.742e-02 3.025e-02 2.313e-02 1.693e-02 1.201e-02 + 8.378e-03 5.820e-03 4.112e-03 3.084e-03 2.610e-03 2.610e-03 + 3.084e-03 4.112e-03 5.820e-03 8.378e-03 1.201e-02 1.693e-02 + 3.107e-02 3.920e-02 4.655e-02 5.176e-02 5.366e-02 5.176e-02 + 4.655e-02 3.920e-02 3.107e-02 2.335e-02 1.684e-02 1.185e-02 + 8.270e-03 5.820e-03 4.238e-03 3.356e-03 3.074e-03 3.356e-03 + 4.238e-03 5.820e-03 8.270e-03 1.185e-02 1.684e-02 2.335e-02 + 4.006e-02 4.798e-02 5.416e-02 5.759e-02 5.759e-02 5.416e-02 + 4.798e-02 4.006e-02 3.151e-02 2.348e-02 1.682e-02 1.185e-02 + 8.378e-03 6.065e-03 4.635e-03 3.948e-03 3.948e-03 4.635e-03 + 6.065e-03 8.378e-03 1.185e-02 1.682e-02 2.348e-02 3.151e-02 + 4.821e-02 5.442e-02 5.845e-02 5.986e-02 5.845e-02 5.442e-02 + 4.821e-02 4.032e-02 3.165e-02 2.348e-02 1.684e-02 1.201e-02 + 8.723e-03 6.580e-03 5.346e-03 4.940e-03 5.346e-03 6.580e-03 + 8.723e-03 1.201e-02 1.684e-02 2.348e-02 3.165e-02 4.032e-02 + 5.397e-02 5.775e-02 5.968e-02 5.968e-02 5.775e-02 5.397e-02 + 4.814e-02 4.032e-02 3.151e-02 2.335e-02 1.693e-02 1.238e-02 + 9.326e-03 7.387e-03 6.424e-03 6.424e-03 7.387e-03 9.326e-03 + 1.238e-02 1.693e-02 2.335e-02 3.151e-02 4.032e-02 4.814e-02 + 3.853e-02 3.604e-02 3.604e-02 3.853e-02 4.294e-02 4.650e-02 + 4.573e-02 4.006e-02 3.206e-02 2.460e-02 1.893e-02 1.495e-02 + 1.232e-02 1.096e-02 1.096e-02 1.232e-02 1.495e-02 1.893e-02 + 2.460e-02 3.206e-02 4.006e-02 4.573e-02 4.650e-02 4.294e-02 + 3.604e-02 3.431e-02 3.604e-02 4.108e-02 4.740e-02 5.065e-02 + 4.798e-02 4.073e-02 3.238e-02 2.531e-02 2.007e-02 1.639e-02 + 1.411e-02 1.331e-02 1.411e-02 1.639e-02 2.007e-02 2.531e-02 + 3.238e-02 4.073e-02 4.798e-02 5.065e-02 4.740e-02 4.108e-02 + 3.604e-02 3.604e-02 4.041e-02 4.765e-02 5.366e-02 5.416e-02 + 4.868e-02 4.029e-02 3.221e-02 2.582e-02 2.110e-02 1.784e-02 + 1.612e-02 1.612e-02 1.784e-02 2.110e-02 2.582e-02 3.221e-02 + 4.029e-02 4.868e-02 5.416e-02 5.366e-02 4.765e-02 4.041e-02 + 3.853e-02 4.108e-02 4.765e-02 5.469e-02 5.759e-02 5.436e-02 + 4.693e-02 3.864e-02 3.153e-02 2.600e-02 2.191e-02 1.926e-02 + 1.833e-02 1.926e-02 2.191e-02 2.600e-02 3.153e-02 3.864e-02 + 4.693e-02 5.436e-02 5.759e-02 5.469e-02 4.765e-02 4.108e-02 + 4.294e-02 4.740e-02 5.366e-02 5.759e-02 5.643e-02 5.077e-02 + 4.330e-02 3.625e-02 3.042e-02 2.582e-02 2.247e-02 2.066e-02 + 2.066e-02 2.247e-02 2.582e-02 3.042e-02 3.625e-02 4.330e-02 + 5.077e-02 5.643e-02 5.759e-02 5.366e-02 4.740e-02 4.294e-02 + 4.650e-02 5.065e-02 5.416e-02 5.436e-02 5.077e-02 4.501e-02 + 3.895e-02 3.354e-02 2.897e-02 2.531e-02 2.286e-02 2.199e-02 + 2.286e-02 2.531e-02 2.897e-02 3.354e-02 3.895e-02 4.501e-02 + 5.077e-02 5.436e-02 5.416e-02 5.065e-02 4.650e-02 4.471e-02 + 4.573e-02 4.798e-02 4.868e-02 4.693e-02 4.330e-02 3.895e-02 + 3.468e-02 3.074e-02 2.728e-02 2.460e-02 2.313e-02 2.313e-02 + 2.460e-02 2.728e-02 3.074e-02 3.468e-02 3.895e-02 4.330e-02 + 4.693e-02 4.868e-02 4.798e-02 4.573e-02 4.385e-02 4.385e-02 + 4.006e-02 4.073e-02 4.029e-02 3.864e-02 3.625e-02 3.354e-02 + 3.074e-02 2.799e-02 2.558e-02 2.393e-02 2.335e-02 2.393e-02 + 2.558e-02 2.799e-02 3.074e-02 3.354e-02 3.625e-02 3.864e-02 + 4.029e-02 4.073e-02 4.006e-02 3.901e-02 3.852e-02 3.901e-02 + 3.206e-02 3.238e-02 3.221e-02 3.153e-02 3.042e-02 2.897e-02 + 2.728e-02 2.558e-02 2.422e-02 2.348e-02 2.348e-02 2.422e-02 + 2.558e-02 2.728e-02 2.897e-02 3.042e-02 3.153e-02 3.221e-02 + 3.238e-02 3.206e-02 3.151e-02 3.112e-02 3.112e-02 3.151e-02 + 2.460e-02 2.531e-02 2.582e-02 2.600e-02 2.582e-02 2.531e-02 + 2.460e-02 2.393e-02 2.348e-02 2.333e-02 2.348e-02 2.393e-02 + 2.460e-02 2.531e-02 2.582e-02 2.600e-02 2.582e-02 2.531e-02 + 2.460e-02 2.393e-02 2.348e-02 2.333e-02 2.348e-02 2.393e-02 + 1.893e-02 2.007e-02 2.110e-02 2.191e-02 2.247e-02 2.286e-02 + 2.313e-02 2.335e-02 2.348e-02 2.348e-02 2.335e-02 2.313e-02 + 2.286e-02 2.247e-02 2.191e-02 2.110e-02 2.007e-02 1.893e-02 + 1.789e-02 1.717e-02 1.682e-02 1.682e-02 1.717e-02 1.789e-02 + 1.495e-02 1.639e-02 1.784e-02 1.926e-02 2.066e-02 2.199e-02 + 2.313e-02 2.393e-02 2.422e-02 2.393e-02 2.313e-02 2.199e-02 + 2.066e-02 1.926e-02 1.784e-02 1.639e-02 1.495e-02 1.363e-02 + 1.262e-02 1.203e-02 1.185e-02 1.203e-02 1.262e-02 1.363e-02 + 1.232e-02 1.411e-02 1.612e-02 1.833e-02 2.066e-02 2.286e-02 + 2.460e-02 2.558e-02 2.558e-02 2.460e-02 2.286e-02 2.066e-02 + 1.833e-02 1.612e-02 1.411e-02 1.232e-02 1.078e-02 9.563e-03 + 8.760e-03 8.378e-03 8.378e-03 8.760e-03 9.563e-03 1.078e-02 + 1.096e-02 1.331e-02 1.612e-02 1.926e-02 2.247e-02 2.531e-02 + 2.728e-02 2.799e-02 2.728e-02 2.531e-02 2.247e-02 1.926e-02 + 1.612e-02 1.331e-02 1.096e-02 9.073e-03 7.626e-03 6.629e-03 + 6.065e-03 5.886e-03 6.065e-03 6.629e-03 7.626e-03 9.073e-03 + 1.096e-02 1.411e-02 1.784e-02 2.191e-02 2.582e-02 2.897e-02 + 3.074e-02 3.074e-02 2.897e-02 2.582e-02 2.191e-02 1.784e-02 + 1.411e-02 1.096e-02 8.494e-03 6.662e-03 5.400e-03 4.635e-03 + 4.284e-03 4.284e-03 4.635e-03 5.400e-03 6.662e-03 8.494e-03 + 1.232e-02 1.639e-02 2.110e-02 2.600e-02 3.042e-02 3.354e-02 + 3.468e-02 3.354e-02 3.042e-02 2.600e-02 2.110e-02 1.639e-02 + 1.232e-02 9.073e-03 6.662e-03 4.995e-03 3.948e-03 3.394e-03 + 3.224e-03 3.394e-03 3.948e-03 4.995e-03 6.662e-03 9.073e-03 + 1.495e-02 2.007e-02 2.582e-02 3.153e-02 3.625e-02 3.895e-02 + 3.895e-02 3.625e-02 3.153e-02 2.582e-02 2.007e-02 1.495e-02 + 1.078e-02 7.626e-03 5.400e-03 3.948e-03 3.110e-03 2.739e-03 + 2.739e-03 3.110e-03 3.948e-03 5.400e-03 7.626e-03 1.078e-02 + 1.893e-02 2.531e-02 3.221e-02 3.864e-02 4.330e-02 4.501e-02 + 4.330e-02 3.864e-02 3.221e-02 2.531e-02 1.893e-02 1.363e-02 + 9.563e-03 6.629e-03 4.635e-03 3.394e-03 2.739e-03 2.539e-03 + 2.739e-03 3.394e-03 4.635e-03 6.629e-03 9.563e-03 1.363e-02 + 2.460e-02 3.238e-02 4.029e-02 4.693e-02 5.077e-02 5.077e-02 + 4.693e-02 4.029e-02 3.238e-02 2.460e-02 1.789e-02 1.262e-02 + 8.760e-03 6.065e-03 4.284e-03 3.224e-03 2.739e-03 2.739e-03 + 3.224e-03 4.284e-03 6.065e-03 8.760e-03 1.262e-02 1.789e-02 + 3.206e-02 4.073e-02 4.868e-02 5.436e-02 5.643e-02 5.436e-02 + 4.868e-02 4.073e-02 3.206e-02 2.393e-02 1.717e-02 1.203e-02 + 8.378e-03 5.886e-03 4.284e-03 3.394e-03 3.110e-03 3.394e-03 + 4.284e-03 5.886e-03 8.378e-03 1.203e-02 1.717e-02 2.393e-02 + 4.006e-02 4.798e-02 5.416e-02 5.759e-02 5.759e-02 5.416e-02 + 4.798e-02 4.006e-02 3.151e-02 2.348e-02 1.682e-02 1.185e-02 + 8.378e-03 6.065e-03 4.635e-03 3.948e-03 3.948e-03 4.635e-03 + 6.065e-03 8.378e-03 1.185e-02 1.682e-02 2.348e-02 3.151e-02 + 4.573e-02 5.065e-02 5.366e-02 5.469e-02 5.366e-02 5.065e-02 + 4.573e-02 3.901e-02 3.112e-02 2.333e-02 1.682e-02 1.203e-02 + 8.760e-03 6.629e-03 5.400e-03 4.995e-03 5.400e-03 6.629e-03 + 8.760e-03 1.203e-02 1.682e-02 2.333e-02 3.112e-02 3.901e-02 + 4.650e-02 4.740e-02 4.765e-02 4.765e-02 4.740e-02 4.650e-02 + 4.385e-02 3.852e-02 3.112e-02 2.348e-02 1.717e-02 1.262e-02 + 9.563e-03 7.626e-03 6.662e-03 6.662e-03 7.626e-03 9.563e-03 + 1.262e-02 1.717e-02 2.348e-02 3.112e-02 3.852e-02 4.385e-02 + 4.294e-02 4.108e-02 4.041e-02 4.108e-02 4.294e-02 4.471e-02 + 4.385e-02 3.901e-02 3.151e-02 2.393e-02 1.789e-02 1.363e-02 + 1.078e-02 9.073e-03 8.494e-03 9.073e-03 1.078e-02 1.363e-02 + 1.789e-02 2.393e-02 3.151e-02 3.901e-02 4.385e-02 4.471e-02 + 1.770e-02 1.527e-02 1.770e-02 2.556e-02 3.719e-02 4.650e-02 + 4.821e-02 4.283e-02 3.469e-02 2.728e-02 2.171e-02 1.781e-02 + 1.538e-02 1.453e-02 1.538e-02 1.781e-02 2.171e-02 2.728e-02 + 3.469e-02 4.283e-02 4.821e-02 4.650e-02 3.719e-02 2.556e-02 + 1.527e-02 1.527e-02 2.162e-02 3.399e-02 4.740e-02 5.442e-02 + 5.237e-02 4.466e-02 3.604e-02 2.897e-02 2.375e-02 2.015e-02 + 1.822e-02 1.822e-02 2.015e-02 2.375e-02 2.897e-02 3.604e-02 + 4.466e-02 5.237e-02 5.442e-02 4.740e-02 3.399e-02 2.162e-02 + 1.770e-02 2.162e-02 3.287e-02 4.765e-02 5.845e-02 6.009e-02 + 5.398e-02 4.502e-02 3.681e-02 3.042e-02 2.570e-02 2.263e-02 + 2.153e-02 2.263e-02 2.570e-02 3.042e-02 3.681e-02 4.502e-02 + 5.398e-02 6.009e-02 5.845e-02 4.765e-02 3.287e-02 2.162e-02 + 2.556e-02 3.399e-02 4.765e-02 5.986e-02 6.446e-02 6.074e-02 + 5.260e-02 4.411e-02 3.705e-02 3.153e-02 2.748e-02 2.524e-02 + 2.524e-02 2.748e-02 3.153e-02 3.705e-02 4.411e-02 5.260e-02 + 6.074e-02 6.446e-02 5.986e-02 4.765e-02 3.399e-02 2.556e-02 + 3.719e-02 4.740e-02 5.845e-02 6.446e-02 6.323e-02 5.700e-02 + 4.939e-02 4.252e-02 3.681e-02 3.221e-02 2.903e-02 2.787e-02 + 2.903e-02 3.221e-02 3.681e-02 4.252e-02 4.939e-02 5.700e-02 + 6.323e-02 6.446e-02 5.845e-02 4.740e-02 3.719e-02 3.313e-02 + 4.650e-02 5.442e-02 6.009e-02 6.074e-02 5.700e-02 5.133e-02 + 4.565e-02 4.056e-02 3.604e-02 3.238e-02 3.025e-02 3.025e-02 + 3.238e-02 3.604e-02 4.056e-02 4.565e-02 5.133e-02 5.700e-02 + 6.074e-02 6.009e-02 5.442e-02 4.650e-02 4.091e-02 4.091e-02 + 4.821e-02 5.237e-02 5.398e-02 5.260e-02 4.939e-02 4.565e-02 + 4.192e-02 3.820e-02 3.469e-02 3.206e-02 3.107e-02 3.206e-02 + 3.469e-02 3.820e-02 4.192e-02 4.565e-02 4.939e-02 5.260e-02 + 5.398e-02 5.237e-02 4.821e-02 4.385e-02 4.201e-02 4.385e-02 + 4.283e-02 4.466e-02 4.502e-02 4.411e-02 4.252e-02 4.056e-02 + 3.820e-02 3.552e-02 3.303e-02 3.151e-02 3.151e-02 3.303e-02 + 3.552e-02 3.820e-02 4.056e-02 4.252e-02 4.411e-02 4.502e-02 + 4.466e-02 4.283e-02 4.032e-02 3.852e-02 3.852e-02 4.032e-02 + 3.469e-02 3.604e-02 3.681e-02 3.705e-02 3.681e-02 3.604e-02 + 3.469e-02 3.303e-02 3.165e-02 3.112e-02 3.165e-02 3.303e-02 + 3.469e-02 3.604e-02 3.681e-02 3.705e-02 3.681e-02 3.604e-02 + 3.469e-02 3.303e-02 3.165e-02 3.112e-02 3.165e-02 3.303e-02 + 2.728e-02 2.897e-02 3.042e-02 3.153e-02 3.221e-02 3.238e-02 + 3.206e-02 3.151e-02 3.112e-02 3.112e-02 3.151e-02 3.206e-02 + 3.238e-02 3.221e-02 3.153e-02 3.042e-02 2.897e-02 2.728e-02 + 2.558e-02 2.422e-02 2.348e-02 2.348e-02 2.422e-02 2.558e-02 + 2.171e-02 2.375e-02 2.570e-02 2.748e-02 2.903e-02 3.025e-02 + 3.107e-02 3.151e-02 3.165e-02 3.151e-02 3.107e-02 3.025e-02 + 2.903e-02 2.748e-02 2.570e-02 2.375e-02 2.171e-02 1.975e-02 + 1.816e-02 1.717e-02 1.684e-02 1.717e-02 1.816e-02 1.975e-02 + 1.781e-02 2.015e-02 2.263e-02 2.524e-02 2.787e-02 3.025e-02 + 3.206e-02 3.303e-02 3.303e-02 3.206e-02 3.025e-02 2.787e-02 + 2.524e-02 2.263e-02 2.015e-02 1.781e-02 1.566e-02 1.386e-02 + 1.262e-02 1.201e-02 1.201e-02 1.262e-02 1.386e-02 1.566e-02 + 1.538e-02 1.822e-02 2.153e-02 2.524e-02 2.903e-02 3.238e-02 + 3.469e-02 3.552e-02 3.469e-02 3.238e-02 2.903e-02 2.524e-02 + 2.153e-02 1.822e-02 1.538e-02 1.297e-02 1.100e-02 9.563e-03 + 8.723e-03 8.453e-03 8.723e-03 9.563e-03 1.100e-02 1.297e-02 + 1.453e-02 1.822e-02 2.263e-02 2.748e-02 3.221e-02 3.604e-02 + 3.820e-02 3.820e-02 3.604e-02 3.221e-02 2.748e-02 2.263e-02 + 1.822e-02 1.453e-02 1.158e-02 9.285e-03 7.626e-03 6.580e-03 + 6.091e-03 6.091e-03 6.580e-03 7.626e-03 9.285e-03 1.158e-02 + 1.538e-02 2.015e-02 2.570e-02 3.153e-02 3.681e-02 4.056e-02 + 4.192e-02 4.056e-02 3.681e-02 3.153e-02 2.570e-02 2.015e-02 + 1.538e-02 1.158e-02 8.703e-03 6.662e-03 5.346e-03 4.638e-03 + 4.420e-03 4.638e-03 5.346e-03 6.662e-03 8.703e-03 1.158e-02 + 1.781e-02 2.375e-02 3.042e-02 3.705e-02 4.252e-02 4.565e-02 + 4.565e-02 4.252e-02 3.705e-02 3.042e-02 2.375e-02 1.781e-02 + 1.297e-02 9.285e-03 6.662e-03 4.940e-03 3.945e-03 3.506e-03 + 3.506e-03 3.945e-03 4.940e-03 6.662e-03 9.285e-03 1.297e-02 + 2.171e-02 2.897e-02 3.681e-02 4.411e-02 4.939e-02 5.133e-02 + 4.939e-02 4.411e-02 3.681e-02 2.897e-02 2.171e-02 1.566e-02 + 1.100e-02 7.626e-03 5.346e-03 3.945e-03 3.218e-03 2.998e-03 + 3.218e-03 3.945e-03 5.346e-03 7.626e-03 1.100e-02 1.566e-02 + 2.728e-02 3.604e-02 4.502e-02 5.260e-02 5.700e-02 5.700e-02 + 5.260e-02 4.502e-02 3.604e-02 2.728e-02 1.975e-02 1.386e-02 + 9.563e-03 6.580e-03 4.638e-03 3.506e-03 2.998e-03 2.998e-03 + 3.506e-03 4.638e-03 6.580e-03 9.563e-03 1.386e-02 1.975e-02 + 3.469e-02 4.466e-02 5.398e-02 6.074e-02 6.323e-02 6.074e-02 + 5.398e-02 4.466e-02 3.469e-02 2.558e-02 1.816e-02 1.262e-02 + 8.723e-03 6.091e-03 4.420e-03 3.506e-03 3.218e-03 3.506e-03 + 4.420e-03 6.091e-03 8.723e-03 1.262e-02 1.816e-02 2.558e-02 + 4.283e-02 5.237e-02 6.009e-02 6.446e-02 6.446e-02 6.009e-02 + 5.237e-02 4.283e-02 3.303e-02 2.422e-02 1.717e-02 1.201e-02 + 8.453e-03 6.091e-03 4.638e-03 3.945e-03 3.945e-03 4.638e-03 + 6.091e-03 8.453e-03 1.201e-02 1.717e-02 2.422e-02 3.303e-02 + 4.821e-02 5.442e-02 5.845e-02 5.986e-02 5.845e-02 5.442e-02 + 4.821e-02 4.032e-02 3.165e-02 2.348e-02 1.684e-02 1.201e-02 + 8.723e-03 6.580e-03 5.346e-03 4.940e-03 5.346e-03 6.580e-03 + 8.723e-03 1.201e-02 1.684e-02 2.348e-02 3.165e-02 4.032e-02 + 4.650e-02 4.740e-02 4.765e-02 4.765e-02 4.740e-02 4.650e-02 + 4.385e-02 3.852e-02 3.112e-02 2.348e-02 1.717e-02 1.262e-02 + 9.563e-03 7.626e-03 6.662e-03 6.662e-03 7.626e-03 9.563e-03 + 1.262e-02 1.717e-02 2.348e-02 3.112e-02 3.852e-02 4.385e-02 + 3.719e-02 3.399e-02 3.287e-02 3.399e-02 3.719e-02 4.091e-02 + 4.201e-02 3.852e-02 3.165e-02 2.422e-02 1.816e-02 1.386e-02 + 1.100e-02 9.285e-03 8.703e-03 9.285e-03 1.100e-02 1.386e-02 + 1.816e-02 2.422e-02 3.165e-02 3.852e-02 4.201e-02 4.091e-02 + 2.556e-02 2.162e-02 2.162e-02 2.556e-02 3.313e-02 4.091e-02 + 4.385e-02 4.032e-02 3.303e-02 2.558e-02 1.975e-02 1.566e-02 + 1.297e-02 1.158e-02 1.158e-02 1.297e-02 1.566e-02 1.975e-02 + 2.558e-02 3.303e-02 4.032e-02 4.385e-02 4.091e-02 3.313e-02 + 4.526e-03 4.526e-03 1.115e-02 2.556e-02 4.294e-02 5.397e-02 + 5.421e-02 4.707e-02 3.820e-02 3.074e-02 2.524e-02 2.145e-02 + 1.942e-02 1.942e-02 2.145e-02 2.524e-02 3.074e-02 3.820e-02 + 4.707e-02 5.421e-02 5.397e-02 4.294e-02 2.556e-02 1.115e-02 + 4.526e-03 8.601e-03 2.162e-02 4.108e-02 5.775e-02 6.353e-02 + 5.881e-02 4.953e-02 4.056e-02 3.354e-02 2.838e-02 2.502e-02 + 2.381e-02 2.502e-02 2.838e-02 3.354e-02 4.056e-02 4.953e-02 + 5.881e-02 6.353e-02 5.775e-02 4.108e-02 2.162e-02 8.601e-03 + 1.115e-02 2.162e-02 4.041e-02 5.968e-02 7.000e-02 6.863e-02 + 6.025e-02 5.061e-02 4.252e-02 3.625e-02 3.163e-02 2.904e-02 + 2.904e-02 3.163e-02 3.625e-02 4.252e-02 5.061e-02 6.025e-02 + 6.863e-02 7.000e-02 5.968e-02 4.041e-02 2.162e-02 1.115e-02 + 2.556e-02 4.108e-02 5.968e-02 7.233e-02 7.430e-02 6.809e-02 + 5.911e-02 5.086e-02 4.411e-02 3.864e-02 3.477e-02 3.333e-02 + 3.477e-02 3.864e-02 4.411e-02 5.086e-02 5.911e-02 6.809e-02 + 7.430e-02 7.233e-02 5.968e-02 4.108e-02 2.556e-02 1.973e-02 + 4.294e-02 5.775e-02 7.000e-02 7.430e-02 7.099e-02 6.404e-02 + 5.689e-02 5.061e-02 4.502e-02 4.029e-02 3.742e-02 3.742e-02 + 4.029e-02 4.502e-02 5.061e-02 5.689e-02 6.404e-02 7.099e-02 + 7.430e-02 7.000e-02 5.775e-02 4.294e-02 3.313e-02 3.313e-02 + 5.397e-02 6.353e-02 6.863e-02 6.809e-02 6.404e-02 5.911e-02 + 5.434e-02 4.953e-02 4.466e-02 4.073e-02 3.920e-02 4.073e-02 + 4.466e-02 4.953e-02 5.434e-02 5.911e-02 6.404e-02 6.809e-02 + 6.863e-02 6.353e-02 5.397e-02 4.471e-02 4.091e-02 4.471e-02 + 5.421e-02 5.881e-02 6.025e-02 5.911e-02 5.689e-02 5.434e-02 + 5.116e-02 4.707e-02 4.283e-02 4.006e-02 4.006e-02 4.283e-02 + 4.707e-02 5.116e-02 5.434e-02 5.689e-02 5.911e-02 6.025e-02 + 5.881e-02 5.421e-02 4.814e-02 4.385e-02 4.385e-02 4.814e-02 + 4.707e-02 4.953e-02 5.061e-02 5.086e-02 5.061e-02 4.953e-02 + 4.707e-02 4.355e-02 4.032e-02 3.901e-02 4.032e-02 4.355e-02 + 4.707e-02 4.953e-02 5.061e-02 5.086e-02 5.061e-02 4.953e-02 + 4.707e-02 4.355e-02 4.032e-02 3.901e-02 4.032e-02 4.355e-02 + 3.820e-02 4.056e-02 4.252e-02 4.411e-02 4.502e-02 4.466e-02 + 4.283e-02 4.032e-02 3.852e-02 3.852e-02 4.032e-02 4.283e-02 + 4.466e-02 4.502e-02 4.411e-02 4.252e-02 4.056e-02 3.820e-02 + 3.552e-02 3.303e-02 3.151e-02 3.151e-02 3.303e-02 3.552e-02 + 3.074e-02 3.354e-02 3.625e-02 3.864e-02 4.029e-02 4.073e-02 + 4.006e-02 3.901e-02 3.852e-02 3.901e-02 4.006e-02 4.073e-02 + 4.029e-02 3.864e-02 3.625e-02 3.354e-02 3.074e-02 2.799e-02 + 2.558e-02 2.393e-02 2.335e-02 2.393e-02 2.558e-02 2.799e-02 + 2.524e-02 2.838e-02 3.163e-02 3.477e-02 3.742e-02 3.920e-02 + 4.006e-02 4.032e-02 4.032e-02 4.006e-02 3.920e-02 3.742e-02 + 3.477e-02 3.163e-02 2.838e-02 2.524e-02 2.230e-02 1.975e-02 + 1.789e-02 1.693e-02 1.693e-02 1.789e-02 1.975e-02 2.230e-02 + 2.145e-02 2.502e-02 2.904e-02 3.333e-02 3.742e-02 4.073e-02 + 4.283e-02 4.355e-02 4.283e-02 4.073e-02 3.742e-02 3.333e-02 + 2.904e-02 2.502e-02 2.145e-02 1.832e-02 1.566e-02 1.363e-02 + 1.238e-02 1.197e-02 1.238e-02 1.363e-02 1.566e-02 1.832e-02 + 1.942e-02 2.381e-02 2.904e-02 3.477e-02 4.029e-02 4.466e-02 + 4.707e-02 4.707e-02 4.466e-02 4.029e-02 3.477e-02 2.904e-02 + 2.381e-02 1.942e-02 1.584e-02 1.297e-02 1.078e-02 9.326e-03 + 8.621e-03 8.621e-03 9.326e-03 1.078e-02 1.297e-02 1.584e-02 + 1.942e-02 2.502e-02 3.163e-02 3.864e-02 4.502e-02 4.953e-02 + 5.116e-02 4.953e-02 4.502e-02 3.864e-02 3.163e-02 2.502e-02 + 1.942e-02 1.498e-02 1.158e-02 9.073e-03 7.387e-03 6.445e-03 + 6.148e-03 6.445e-03 7.387e-03 9.073e-03 1.158e-02 1.498e-02 + 2.145e-02 2.838e-02 3.625e-02 4.411e-02 5.061e-02 5.434e-02 + 5.434e-02 5.061e-02 4.411e-02 3.625e-02 2.838e-02 2.145e-02 + 1.584e-02 1.158e-02 8.494e-03 6.424e-03 5.200e-03 4.651e-03 + 4.651e-03 5.200e-03 6.424e-03 8.494e-03 1.158e-02 1.584e-02 + 2.524e-02 3.354e-02 4.252e-02 5.086e-02 5.689e-02 5.911e-02 + 5.689e-02 5.086e-02 4.252e-02 3.354e-02 2.524e-02 1.832e-02 + 1.297e-02 9.073e-03 6.424e-03 4.792e-03 3.948e-03 3.695e-03 + 3.948e-03 4.792e-03 6.424e-03 9.073e-03 1.297e-02 1.832e-02 + 3.074e-02 4.056e-02 5.061e-02 5.911e-02 6.404e-02 6.404e-02 + 5.911e-02 5.061e-02 4.056e-02 3.074e-02 2.230e-02 1.566e-02 + 1.078e-02 7.387e-03 5.200e-03 3.948e-03 3.399e-03 3.399e-03 + 3.948e-03 5.200e-03 7.387e-03 1.078e-02 1.566e-02 2.230e-02 + 3.820e-02 4.953e-02 6.025e-02 6.809e-02 7.099e-02 6.809e-02 + 6.025e-02 4.953e-02 3.820e-02 2.799e-02 1.975e-02 1.363e-02 + 9.326e-03 6.445e-03 4.651e-03 3.695e-03 3.399e-03 3.695e-03 + 4.651e-03 6.445e-03 9.326e-03 1.363e-02 1.975e-02 2.799e-02 + 4.707e-02 5.881e-02 6.863e-02 7.430e-02 7.430e-02 6.863e-02 + 5.881e-02 4.707e-02 3.552e-02 2.558e-02 1.789e-02 1.238e-02 + 8.621e-03 6.148e-03 4.651e-03 3.948e-03 3.948e-03 4.651e-03 + 6.148e-03 8.621e-03 1.238e-02 1.789e-02 2.558e-02 3.552e-02 + 5.421e-02 6.353e-02 7.000e-02 7.233e-02 7.000e-02 6.353e-02 + 5.421e-02 4.355e-02 3.303e-02 2.393e-02 1.693e-02 1.197e-02 + 8.621e-03 6.445e-03 5.200e-03 4.792e-03 5.200e-03 6.445e-03 + 8.621e-03 1.197e-02 1.693e-02 2.393e-02 3.303e-02 4.355e-02 + 5.397e-02 5.775e-02 5.968e-02 5.968e-02 5.775e-02 5.397e-02 + 4.814e-02 4.032e-02 3.151e-02 2.335e-02 1.693e-02 1.238e-02 + 9.326e-03 7.387e-03 6.424e-03 6.424e-03 7.387e-03 9.326e-03 + 1.238e-02 1.693e-02 2.335e-02 3.151e-02 4.032e-02 4.814e-02 + 4.294e-02 4.108e-02 4.041e-02 4.108e-02 4.294e-02 4.471e-02 + 4.385e-02 3.901e-02 3.151e-02 2.393e-02 1.789e-02 1.363e-02 + 1.078e-02 9.073e-03 8.494e-03 9.073e-03 1.078e-02 1.363e-02 + 1.789e-02 2.393e-02 3.151e-02 3.901e-02 4.385e-02 4.471e-02 + 2.556e-02 2.162e-02 2.162e-02 2.556e-02 3.313e-02 4.091e-02 + 4.385e-02 4.032e-02 3.303e-02 2.558e-02 1.975e-02 1.566e-02 + 1.297e-02 1.158e-02 1.158e-02 1.297e-02 1.566e-02 1.975e-02 + 2.558e-02 3.303e-02 4.032e-02 4.385e-02 4.091e-02 3.313e-02 + 1.115e-02 8.601e-03 1.115e-02 1.973e-02 3.313e-02 4.471e-02 + 4.814e-02 4.355e-02 3.552e-02 2.799e-02 2.230e-02 1.832e-02 + 1.584e-02 1.498e-02 1.584e-02 1.832e-02 2.230e-02 2.799e-02 + 3.552e-02 4.355e-02 4.814e-02 4.471e-02 3.313e-02 1.973e-02 diff --git a/tests/01_PW/scf_out_chg_tau/result.ref b/tests/01_PW/scf_out_chg_tau/result.ref new file mode 100644 index 0000000000..785824d57e --- /dev/null +++ b/tests/01_PW/scf_out_chg_tau/result.ref @@ -0,0 +1,5 @@ +etotref -213.3867238098172 +etotperatomref -106.6933619049 +chg.cube_pass 0 +tau.cube_pass 0 +totaltimeref 0.84452 diff --git a/tests/01_PW/scf_out_chg_tau/tau.cube.ref b/tests/01_PW/scf_out_chg_tau/tau.cube.ref new file mode 100644 index 0000000000..3a0219a898 --- /dev/null +++ b/tests/01_PW/scf_out_chg_tau/tau.cube.ref @@ -0,0 +1,2312 @@ +Ionic_Step 1 Cubefile created from ABACUS. Inner loop is z, followed by y and x +1 # number of spin directions 0.517574 # Fermi energy, in Ry +2 0.0 0.0 0.0 +24 0.000000 0.212500 0.212500 +24 0.212500 0.000000 0.212500 +24 0.212500 0.212500 0.000000 + 14 4 0.000000 0.000000 0.000000 + 14 4 2.550000 2.550000 2.550000 + 9.35850333253e-02 1.05271425072e-01 1.14984029929e-01 9.46618817553e-02 6.13624406409e-02 4.15726567626e-02 + 3.48683159917e-02 3.06058831029e-02 2.62414819209e-02 2.33118163733e-02 2.21386056500e-02 2.19611077293e-02 + 2.19947599998e-02 2.19611077293e-02 2.21386056500e-02 2.33118163733e-02 2.62414819209e-02 3.06058831029e-02 + 3.48683159917e-02 4.15726567626e-02 6.13624406410e-02 9.46618817554e-02 1.14984029929e-01 1.05271425072e-01 + 1.05271425072e-01 1.14284409879e-01 1.02255317231e-01 6.87950359263e-02 4.23899857519e-02 3.31551669202e-02 + 3.03789244340e-02 2.75584598461e-02 2.55791633527e-02 2.52445347088e-02 2.59181147281e-02 2.65858530209e-02 + 2.65858530209e-02 2.59181147281e-02 2.52445347088e-02 2.55791633527e-02 2.75584598461e-02 3.03789244340e-02 + 3.31551669202e-02 4.23899857520e-02 6.87950359263e-02 1.02255317231e-01 1.14284409879e-01 1.05271425072e-01 + 1.14984029929e-01 1.02255317231e-01 7.14595557376e-02 4.26148361403e-02 3.05273339684e-02 2.81921950446e-02 + 2.69081613820e-02 2.62352804996e-02 2.71142998602e-02 2.89473471924e-02 3.06728014251e-02 3.13656133728e-02 + 3.06728014251e-02 2.89473471924e-02 2.71142998602e-02 2.62352804996e-02 2.69081613820e-02 2.81921950446e-02 + 3.05273339684e-02 4.26148361403e-02 7.14595557377e-02 1.02255317231e-01 1.14984029929e-01 1.15476799016e-01 + 9.46618817553e-02 6.87950359263e-02 4.26148361403e-02 2.92890570903e-02 2.61164989591e-02 2.52955690008e-02 + 2.54927185045e-02 2.74769895380e-02 3.04773481040e-02 3.33647463124e-02 3.51262182185e-02 3.51262182185e-02 + 3.33647463124e-02 3.04773481040e-02 2.74769895380e-02 2.54927185045e-02 2.52955690008e-02 2.61164989591e-02 + 2.92890570903e-02 4.26148361403e-02 6.87950359264e-02 9.46618817554e-02 1.07504612680e-01 1.07504612679e-01 + 6.13624406409e-02 4.23899857519e-02 3.05273339684e-02 2.61164989591e-02 2.44579386769e-02 2.45139707404e-02 + 2.69081613820e-02 3.06792139923e-02 3.45751625707e-02 3.75326171916e-02 3.86293456568e-02 3.75326171916e-02 + 3.45751625707e-02 3.06792139923e-02 2.69081613820e-02 2.45139707404e-02 2.44579386769e-02 2.61164989591e-02 + 3.05273339684e-02 4.23899857520e-02 6.13624406410e-02 7.81193802830e-02 8.44119137021e-02 7.81193802830e-02 + 4.15726567626e-02 3.31551669202e-02 2.81921950446e-02 2.52955690008e-02 2.45139707404e-02 2.65224863971e-02 + 3.03789244340e-02 3.48628450776e-02 3.89798518706e-02 4.14583134664e-02 4.14583134664e-02 3.89798518705e-02 + 3.48628450776e-02 3.03789244340e-02 2.65224863971e-02 2.45139707404e-02 2.52955690008e-02 2.81921950446e-02 + 3.31551669202e-02 4.15726567627e-02 5.18158087398e-02 5.87902882083e-02 5.87902882083e-02 5.18158087397e-02 + 3.48683159917e-02 3.03789244340e-02 2.69081613820e-02 2.54927185045e-02 2.69081613820e-02 3.03789244340e-02 + 3.48683159917e-02 3.97328533271e-02 4.36605690195e-02 4.51578187598e-02 4.36605690195e-02 3.97328533271e-02 + 3.48683159917e-02 3.03789244340e-02 2.69081613820e-02 2.54927185045e-02 2.69081613820e-02 3.03789244340e-02 + 3.48683159917e-02 3.97328533271e-02 4.36605690195e-02 4.51578187598e-02 4.36605690195e-02 3.97328533270e-02 + 3.06058831029e-02 2.75584598461e-02 2.62352804996e-02 2.74769895380e-02 3.06792139923e-02 3.48628450776e-02 + 3.97328533271e-02 4.45490987358e-02 4.76134439312e-02 4.76134439312e-02 4.45490987358e-02 3.97328533271e-02 + 3.48628450776e-02 3.06792139923e-02 2.74769895380e-02 2.62352804996e-02 2.75584598461e-02 3.06058831029e-02 + 3.38925854809e-02 3.62673468746e-02 3.73540502296e-02 3.73540502296e-02 3.62673468745e-02 3.38925854809e-02 + 2.62414819209e-02 2.55791633527e-02 2.71142998602e-02 3.04773481040e-02 3.45751625707e-02 3.89798518706e-02 + 4.36605690195e-02 4.76134439312e-02 4.91904413241e-02 4.76134439312e-02 4.36605690195e-02 3.89798518706e-02 + 3.45751625707e-02 3.04773481040e-02 2.71142998602e-02 2.55791633527e-02 2.62414819209e-02 2.81653274579e-02 + 2.99301385615e-02 3.07822057975e-02 3.09609358381e-02 3.07822057975e-02 2.99301385615e-02 2.81653274579e-02 + 2.33118163733e-02 2.52445347087e-02 2.89473471924e-02 3.33647463124e-02 3.75326171916e-02 4.14583134665e-02 + 4.51578187598e-02 4.76134439313e-02 4.76134439313e-02 4.51578187598e-02 4.14583134665e-02 3.75326171916e-02 + 3.33647463124e-02 2.89473471924e-02 2.52445347088e-02 2.33118163733e-02 2.31387869200e-02 2.37301976795e-02 + 2.40967233573e-02 2.40904203272e-02 2.40904203272e-02 2.40967233573e-02 2.37301976795e-02 2.31387869200e-02 + 2.21386056500e-02 2.59181147280e-02 3.06728014251e-02 3.51262182185e-02 3.86293456568e-02 4.14583134665e-02 + 4.36605690195e-02 4.45490987358e-02 4.36605690195e-02 4.14583134665e-02 3.86293456568e-02 3.51262182185e-02 + 3.06728014251e-02 2.59181147281e-02 2.21386056500e-02 1.99975947255e-02 1.91106081253e-02 1.86355176327e-02 + 1.81617046076e-02 1.79266526907e-02 1.81617046076e-02 1.86355176327e-02 1.91106081253e-02 1.99975947255e-02 + 2.19611077293e-02 2.65858530209e-02 3.13656133727e-02 3.51262182185e-02 3.75326171916e-02 3.89798518706e-02 + 3.97328533271e-02 3.97328533271e-02 3.89798518706e-02 3.75326171916e-02 3.51262182185e-02 3.13656133727e-02 + 2.65858530209e-02 2.19611077293e-02 1.85132763207e-02 1.63906429721e-02 1.50739196267e-02 1.40806383265e-02 + 1.34421324248e-02 1.34421324248e-02 1.40806383265e-02 1.50739196267e-02 1.63906429721e-02 1.85132763207e-02 + 2.19947599998e-02 2.65858530209e-02 3.06728014251e-02 3.33647463124e-02 3.45751625707e-02 3.48628450776e-02 + 3.48683159917e-02 3.48628450776e-02 3.45751625707e-02 3.33647463124e-02 3.06728014251e-02 2.65858530209e-02 + 2.19947599998e-02 1.79741436760e-02 1.50424663757e-02 1.30485807277e-02 1.16095381953e-02 1.06051613742e-02 + 1.02248872526e-02 1.06051613742e-02 1.16095381953e-02 1.30485807277e-02 1.50424663757e-02 1.79741436760e-02 + 2.19611077293e-02 2.59181147281e-02 2.89473471924e-02 3.04773481040e-02 3.06792139923e-02 3.03789244340e-02 + 3.03789244340e-02 3.06792139923e-02 3.04773481040e-02 2.89473471924e-02 2.59181147281e-02 2.19611077293e-02 + 1.79741436760e-02 1.46288647205e-02 1.21045128275e-02 1.02401100733e-02 8.89920278515e-03 8.15758815907e-03 + 8.15758815907e-03 8.89920278515e-03 1.02401100733e-02 1.21045128275e-02 1.46288647205e-02 1.79741436760e-02 + 2.21386056500e-02 2.52445347088e-02 2.71142998602e-02 2.74769895380e-02 2.69081613821e-02 2.65224863971e-02 + 2.69081613821e-02 2.74769895380e-02 2.71142998602e-02 2.52445347088e-02 2.21386056500e-02 1.85132763207e-02 + 1.50424663757e-02 1.21045128275e-02 9.78219490488e-03 8.04455907974e-03 6.92803651719e-03 6.53729803366e-03 + 6.92803651720e-03 8.04455907974e-03 9.78219490488e-03 1.21045128275e-02 1.50424663757e-02 1.85132763207e-02 + 2.33118163733e-02 2.55791633528e-02 2.62352804996e-02 2.54927185046e-02 2.45139707405e-02 2.45139707405e-02 + 2.54927185046e-02 2.62352804996e-02 2.55791633528e-02 2.33118163733e-02 1.99975947255e-02 1.63906429721e-02 + 1.30485807277e-02 1.02401100733e-02 8.04455907974e-03 6.50338402317e-03 5.69411798450e-03 5.69411798450e-03 + 6.50338402317e-03 8.04455907974e-03 1.02401100733e-02 1.30485807277e-02 1.63906429721e-02 1.99975947255e-02 + 2.62414819209e-02 2.75584598462e-02 2.69081613821e-02 2.52955690009e-02 2.44579386769e-02 2.52955690009e-02 + 2.69081613821e-02 2.75584598462e-02 2.62414819209e-02 2.31387869200e-02 1.91106081253e-02 1.50739196267e-02 + 1.16095381953e-02 8.89920278516e-03 6.92803651720e-03 5.69411798450e-03 5.26652136817e-03 5.69411798450e-03 + 6.92803651720e-03 8.89920278516e-03 1.16095381953e-02 1.50739196267e-02 1.91106081254e-02 2.31387869200e-02 + 3.06058831030e-02 3.03789244340e-02 2.81921950447e-02 2.61164989592e-02 2.61164989591e-02 2.81921950447e-02 + 3.03789244340e-02 3.06058831030e-02 2.81653274579e-02 2.37301976795e-02 1.86355176327e-02 1.40806383265e-02 + 1.06051613742e-02 8.15758815908e-03 6.53729803367e-03 5.69411798450e-03 5.69411798450e-03 6.53729803367e-03 + 8.15758815908e-03 1.06051613742e-02 1.40806383265e-02 1.86355176327e-02 2.37301976795e-02 2.81653274579e-02 + 3.48683159917e-02 3.31551669202e-02 3.05273339685e-02 2.92890570903e-02 3.05273339685e-02 3.31551669202e-02 + 3.48683159917e-02 3.38925854809e-02 2.99301385615e-02 2.40967233573e-02 1.81617046076e-02 1.34421324248e-02 + 1.02248872526e-02 8.15758815908e-03 6.92803651720e-03 6.50338402317e-03 6.92803651720e-03 8.15758815908e-03 + 1.02248872526e-02 1.34421324248e-02 1.81617046076e-02 2.40967233573e-02 2.99301385615e-02 3.38925854810e-02 + 4.15726567627e-02 4.23899857520e-02 4.26148361404e-02 4.26148361404e-02 4.23899857520e-02 4.15726567627e-02 + 3.97328533271e-02 3.62673468746e-02 3.07822057975e-02 2.40904203272e-02 1.79266526907e-02 1.34421324248e-02 + 1.06051613742e-02 8.89920278516e-03 8.04455907974e-03 8.04455907974e-03 8.89920278516e-03 1.06051613742e-02 + 1.34421324248e-02 1.79266526907e-02 2.40904203272e-02 3.07822057975e-02 3.62673468746e-02 3.97328533271e-02 + 6.13624406410e-02 6.87950359264e-02 7.14595557378e-02 6.87950359264e-02 6.13624406410e-02 5.18158087398e-02 + 4.36605690195e-02 3.73540502297e-02 3.09609358381e-02 2.40904203272e-02 1.81617046076e-02 1.40806383265e-02 + 1.16095381953e-02 1.02401100733e-02 9.78219490488e-03 1.02401100733e-02 1.16095381953e-02 1.40806383265e-02 + 1.81617046076e-02 2.40904203272e-02 3.09609358381e-02 3.73540502297e-02 4.36605690195e-02 5.18158087398e-02 + 9.46618817555e-02 1.02255317232e-01 1.02255317232e-01 9.46618817555e-02 7.81193802831e-02 5.87902882084e-02 + 4.51578187598e-02 3.73540502296e-02 3.07822057975e-02 2.40967233573e-02 1.86355176327e-02 1.50739196267e-02 + 1.30485807277e-02 1.21045128275e-02 1.21045128275e-02 1.30485807277e-02 1.50739196267e-02 1.86355176327e-02 + 2.40967233573e-02 3.07822057975e-02 3.73540502297e-02 4.51578187598e-02 5.87902882084e-02 7.81193802831e-02 + 1.14984029929e-01 1.14284409879e-01 1.14984029929e-01 1.07504612680e-01 8.44119137022e-02 5.87902882084e-02 + 4.36605690195e-02 3.62673468746e-02 2.99301385615e-02 2.37301976795e-02 1.91106081253e-02 1.63906429721e-02 + 1.50424663757e-02 1.46288647205e-02 1.50424663757e-02 1.63906429721e-02 1.91106081253e-02 2.37301976795e-02 + 2.99301385615e-02 3.62673468746e-02 4.36605690195e-02 5.87902882084e-02 8.44119137023e-02 1.07504612680e-01 + 1.05271425072e-01 1.05271425072e-01 1.15476799016e-01 1.07504612680e-01 7.81193802830e-02 5.18158087398e-02 + 3.97328533271e-02 3.38925854809e-02 2.81653274579e-02 2.31387869200e-02 1.99975947255e-02 1.85132763207e-02 + 1.79741436761e-02 1.79741436761e-02 1.85132763207e-02 1.99975947255e-02 2.31387869200e-02 2.81653274579e-02 + 3.38925854809e-02 3.97328533271e-02 5.18158087398e-02 7.81193802831e-02 1.07504612680e-01 1.15476799016e-01 + 1.05271425072e-01 1.14284409879e-01 1.02255317231e-01 6.87950359263e-02 4.23899857520e-02 3.31551669202e-02 + 3.03789244340e-02 2.75584598461e-02 2.55791633527e-02 2.52445347088e-02 2.59181147281e-02 2.65858530209e-02 + 2.65858530209e-02 2.59181147281e-02 2.52445347088e-02 2.55791633527e-02 2.75584598461e-02 3.03789244340e-02 + 3.31551669202e-02 4.23899857520e-02 6.87950359264e-02 1.02255317231e-01 1.14284409879e-01 1.05271425072e-01 + 1.14284409879e-01 1.05382836884e-01 7.44578962493e-02 4.30330806506e-02 2.95749315132e-02 2.73937018060e-02 + 2.65224863971e-02 2.61140936360e-02 2.72051400328e-02 2.92643382604e-02 3.12134113093e-02 3.20070729423e-02 + 3.12134113093e-02 2.92643382604e-02 2.72051400328e-02 2.61140936360e-02 2.65224863971e-02 2.73937018060e-02 + 2.95749315132e-02 4.30330806506e-02 7.44578962494e-02 1.05382836884e-01 1.14284409879e-01 1.12133375345e-01 + 1.02255317231e-01 7.44578962493e-02 4.31931066266e-02 2.67216511960e-02 2.35389825848e-02 2.36141349499e-02 + 2.45139707404e-02 2.70513354759e-02 3.05548189106e-02 3.39942859271e-02 3.61935553818e-02 3.61935553818e-02 + 3.39942859271e-02 3.05548189106e-02 2.70513354759e-02 2.45139707404e-02 2.36141349499e-02 2.35389825848e-02 + 2.67216511960e-02 4.31931066266e-02 7.44578962494e-02 1.02255317231e-01 1.13479602981e-01 1.13479602981e-01 + 6.87950359263e-02 4.30330806506e-02 2.67216511960e-02 2.17746576295e-02 2.10846196163e-02 2.20787139947e-02 + 2.52955690008e-02 2.97974895143e-02 3.46096179590e-02 3.86294987685e-02 4.02266025417e-02 3.86294987685e-02 + 3.46096179590e-02 2.97974895143e-02 2.52955690008e-02 2.20787139947e-02 2.10846196163e-02 2.17746576295e-02 + 2.67216511960e-02 4.30330806506e-02 6.87950359263e-02 9.00454509227e-02 9.74781930219e-02 9.00454509227e-02 + 4.23899857519e-02 2.95749315132e-02 2.35389825848e-02 2.10846196163e-02 2.09116171502e-02 2.36141349499e-02 + 2.81921950446e-02 3.39196724265e-02 4.00842207789e-02 4.42637285519e-02 4.42637285519e-02 4.00842207789e-02 + 3.39196724265e-02 2.81921950446e-02 2.36141349499e-02 2.09116171502e-02 2.10846196163e-02 2.35389825848e-02 + 2.95749315132e-02 4.23899857520e-02 5.87809730550e-02 6.98255714909e-02 6.98255714909e-02 5.87809730550e-02 + 3.31551669201e-02 2.73937018060e-02 2.36141349499e-02 2.20787139947e-02 2.36141349499e-02 2.73937018060e-02 + 3.31551669202e-02 4.11388919901e-02 4.86717503238e-02 5.17382028009e-02 4.86717503238e-02 4.11388919901e-02 + 3.31551669202e-02 2.73937018060e-02 2.36141349499e-02 2.20787139947e-02 2.36141349500e-02 2.73937018060e-02 + 3.31551669202e-02 4.11388919901e-02 4.86717503238e-02 5.17382028008e-02 4.86717503238e-02 4.11388919901e-02 + 3.03789244340e-02 2.65224863971e-02 2.45139707404e-02 2.52955690008e-02 2.81921950446e-02 3.31551669202e-02 + 4.15726567626e-02 5.18158087398e-02 5.87902882083e-02 5.87902882083e-02 5.18158087398e-02 4.15726567626e-02 + 3.31551669202e-02 2.81921950447e-02 2.52955690008e-02 2.45139707405e-02 2.65224863971e-02 3.03789244340e-02 + 3.48628450776e-02 3.89798518705e-02 4.14583134664e-02 4.14583134664e-02 3.89798518705e-02 3.48628450776e-02 + 2.75584598461e-02 2.61140936360e-02 2.70513354759e-02 2.97974895143e-02 3.39196724265e-02 4.11388919902e-02 + 5.18158087398e-02 6.17008685349e-02 6.56428313091e-02 6.17008685349e-02 5.18158087398e-02 4.11388919902e-02 + 3.39196724265e-02 2.97974895143e-02 2.70513354759e-02 2.61140936360e-02 2.75584598461e-02 3.04051143293e-02 + 3.31963581644e-02 3.49769025117e-02 3.55406204185e-02 3.49769025117e-02 3.31963581643e-02 3.04051143293e-02 + 2.55791633527e-02 2.72051400328e-02 3.05548189106e-02 3.46096179590e-02 4.00842207790e-02 4.86717503239e-02 + 5.87902882084e-02 6.56428313091e-02 6.56428313091e-02 5.87902882084e-02 4.86717503239e-02 4.00842207790e-02 + 3.46096179591e-02 3.05548189106e-02 2.72051400328e-02 2.55791633527e-02 2.59618688149e-02 2.73091501295e-02 + 2.84217494631e-02 2.88778389824e-02 2.88778389824e-02 2.84217494631e-02 2.73091501295e-02 2.59618688149e-02 + 2.52445347087e-02 2.92643382604e-02 3.39942859271e-02 3.86294987685e-02 4.42637285519e-02 5.17382028009e-02 + 5.87902882084e-02 6.17008685349e-02 5.87902882084e-02 5.17382028009e-02 4.42637285519e-02 3.86294987685e-02 + 3.39942859271e-02 2.92643382604e-02 2.52445347088e-02 2.30253665657e-02 2.24043982374e-02 2.23752455712e-02 + 2.22713307355e-02 2.21709602700e-02 2.22713307355e-02 2.23752455712e-02 2.24043982374e-02 2.30253665656e-02 + 2.59181147280e-02 3.12134113093e-02 3.61935553818e-02 4.02266025417e-02 4.42637285519e-02 4.86717503239e-02 + 5.18158087398e-02 5.18158087398e-02 4.86717503239e-02 4.42637285519e-02 4.02266025417e-02 3.61935553818e-02 + 3.12134113093e-02 2.59181147281e-02 2.17948830411e-02 1.93871115228e-02 1.81179302207e-02 1.72611853896e-02 + 1.66950035376e-02 1.66950035376e-02 1.72611853896e-02 1.81179302207e-02 1.93871115228e-02 2.17948830411e-02 + 2.65858530209e-02 3.20070729422e-02 3.61935553818e-02 3.86294987685e-02 4.00842207790e-02 4.11388919902e-02 + 4.15726567627e-02 4.11388919902e-02 4.00842207790e-02 3.86294987685e-02 3.61935553818e-02 3.20070729422e-02 + 2.65858530209e-02 2.15195877577e-02 1.78888288560e-02 1.56224022211e-02 1.41149739580e-02 1.30618774824e-02 + 1.26511415702e-02 1.30618774824e-02 1.41149739580e-02 1.56224022211e-02 1.78888288560e-02 2.15195877577e-02 + 2.65858530209e-02 3.12134113093e-02 3.39942859271e-02 3.46096179590e-02 3.39196724265e-02 3.31551669202e-02 + 3.31551669202e-02 3.39196724265e-02 3.46096179590e-02 3.39942859271e-02 3.12134113093e-02 2.65858530209e-02 + 2.15038028103e-02 1.72812015630e-02 1.43188164440e-02 1.22934163580e-02 1.08500532301e-02 1.00210602336e-02 + 1.00210602336e-02 1.08500532301e-02 1.22934163580e-02 1.43188164440e-02 1.72812015630e-02 2.15038028103e-02 + 2.59181147281e-02 2.92643382604e-02 3.05548189106e-02 2.97974895143e-02 2.81921950447e-02 2.73937018061e-02 + 2.81921950447e-02 2.97974895143e-02 3.05548189106e-02 2.92643382604e-02 2.59181147281e-02 2.15195877577e-02 + 1.72812015630e-02 1.38961516944e-02 1.14031750108e-02 9.57619631350e-03 8.36360112567e-03 7.92498387887e-03 + 8.36360112567e-03 9.57619631350e-03 1.14031750108e-02 1.38961516944e-02 1.72812015630e-02 2.15195877577e-02 + 2.52445347088e-02 2.72051400328e-02 2.70513354759e-02 2.52955690009e-02 2.36141349500e-02 2.36141349500e-02 + 2.52955690009e-02 2.70513354759e-02 2.72051400328e-02 2.52445347088e-02 2.17948830411e-02 1.78888288560e-02 + 1.43188164440e-02 1.14031750108e-02 9.13724506496e-03 7.50451749096e-03 6.62087909721e-03 6.62087909721e-03 + 7.50451749096e-03 9.13724506496e-03 1.14031750108e-02 1.43188164440e-02 1.78888288560e-02 2.17948830411e-02 + 2.55791633528e-02 2.61140936361e-02 2.45139707405e-02 2.20787139948e-02 2.09116171503e-02 2.20787139947e-02 + 2.45139707405e-02 2.61140936361e-02 2.55791633528e-02 2.30253665657e-02 1.93871115228e-02 1.56224022211e-02 + 1.22934163580e-02 9.57619631351e-03 7.50451749097e-03 6.16385997204e-03 5.69328932590e-03 6.16385997204e-03 + 7.50451749097e-03 9.57619631351e-03 1.22934163580e-02 1.56224022211e-02 1.93871115228e-02 2.30253665657e-02 + 2.75584598462e-02 2.65224863971e-02 2.36141349500e-02 2.10846196163e-02 2.10846196163e-02 2.36141349500e-02 + 2.65224863971e-02 2.75584598462e-02 2.59618688149e-02 2.24043982374e-02 1.81179302207e-02 1.41149739580e-02 + 1.08500532301e-02 8.36360112567e-03 6.62087909721e-03 5.69328932590e-03 5.69328932590e-03 6.62087909721e-03 + 8.36360112567e-03 1.08500532301e-02 1.41149739580e-02 1.81179302207e-02 2.24043982374e-02 2.59618688149e-02 + 3.03789244340e-02 2.73937018061e-02 2.35389825848e-02 2.17746576296e-02 2.35389825848e-02 2.73937018061e-02 + 3.03789244340e-02 3.04051143294e-02 2.73091501295e-02 2.23752455712e-02 1.72611853896e-02 1.30618774824e-02 + 1.00210602336e-02 7.92498387888e-03 6.62087909721e-03 6.16385997204e-03 6.62087909721e-03 7.92498387888e-03 + 1.00210602336e-02 1.30618774824e-02 1.72611853896e-02 2.23752455712e-02 2.73091501295e-02 3.04051143294e-02 + 3.31551669202e-02 2.95749315132e-02 2.67216511960e-02 2.67216511960e-02 2.95749315132e-02 3.31551669202e-02 + 3.48628450776e-02 3.31963581644e-02 2.84217494631e-02 2.22713307355e-02 1.66950035376e-02 1.26511415702e-02 + 1.00210602336e-02 8.36360112567e-03 7.50451749096e-03 7.50451749096e-03 8.36360112567e-03 1.00210602336e-02 + 1.26511415702e-02 1.66950035376e-02 2.22713307355e-02 2.84217494631e-02 3.31963581644e-02 3.48628450776e-02 + 4.23899857520e-02 4.30330806507e-02 4.31931066267e-02 4.30330806507e-02 4.23899857520e-02 4.11388919902e-02 + 3.89798518706e-02 3.49769025118e-02 2.88778389824e-02 2.21709602700e-02 1.66950035376e-02 1.30618774824e-02 + 1.08500532301e-02 9.57619631350e-03 9.13724506496e-03 9.57619631350e-03 1.08500532301e-02 1.30618774824e-02 + 1.66950035376e-02 2.21709602700e-02 2.88778389824e-02 3.49769025118e-02 3.89798518706e-02 4.11388919902e-02 + 6.87950359264e-02 7.44578962495e-02 7.44578962495e-02 6.87950359264e-02 5.87809730551e-02 4.86717503239e-02 + 4.14583134664e-02 3.55406204185e-02 2.88778389824e-02 2.22713307355e-02 1.72611853896e-02 1.41149739580e-02 + 1.22934163580e-02 1.14031750108e-02 1.14031750108e-02 1.22934163580e-02 1.41149739580e-02 1.72611853896e-02 + 2.22713307355e-02 2.88778389824e-02 3.55406204185e-02 4.14583134665e-02 4.86717503239e-02 5.87809730551e-02 + 1.02255317232e-01 1.05382836884e-01 1.02255317232e-01 9.00454509228e-02 6.98255714910e-02 5.17382028009e-02 + 4.14583134664e-02 3.49769025117e-02 2.84217494631e-02 2.23752455712e-02 1.81179302207e-02 1.56224022211e-02 + 1.43188164440e-02 1.38961516945e-02 1.43188164440e-02 1.56224022211e-02 1.81179302207e-02 2.23752455712e-02 + 2.84217494631e-02 3.49769025118e-02 4.14583134664e-02 5.17382028009e-02 6.98255714910e-02 9.00454509228e-02 + 1.14284409879e-01 1.14284409879e-01 1.13479602981e-01 9.74781930220e-02 6.98255714910e-02 4.86717503239e-02 + 3.89798518706e-02 3.31963581644e-02 2.73091501295e-02 2.24043982374e-02 1.93871115228e-02 1.78888288560e-02 + 1.72812015630e-02 1.72812015630e-02 1.78888288560e-02 1.93871115228e-02 2.24043982374e-02 2.73091501295e-02 + 3.31963581644e-02 3.89798518706e-02 4.86717503239e-02 6.98255714910e-02 9.74781930221e-02 1.13479602981e-01 + 1.05271425072e-01 1.12133375345e-01 1.13479602981e-01 9.00454509227e-02 5.87809730550e-02 4.11388919901e-02 + 3.48628450776e-02 3.04051143293e-02 2.59618688149e-02 2.30253665657e-02 2.17948830411e-02 2.15195877577e-02 + 2.15038028103e-02 2.15195877577e-02 2.17948830411e-02 2.30253665657e-02 2.59618688149e-02 3.04051143293e-02 + 3.48628450776e-02 4.11388919902e-02 5.87809730550e-02 9.00454509228e-02 1.13479602981e-01 1.12133375345e-01 + 1.14984029929e-01 1.02255317231e-01 7.14595557377e-02 4.26148361403e-02 3.05273339684e-02 2.81921950446e-02 + 2.69081613820e-02 2.62352804996e-02 2.71142998602e-02 2.89473471924e-02 3.06728014251e-02 3.13656133728e-02 + 3.06728014251e-02 2.89473471924e-02 2.71142998602e-02 2.62352804996e-02 2.69081613820e-02 2.81921950447e-02 + 3.05273339684e-02 4.26148361403e-02 7.14595557377e-02 1.02255317231e-01 1.14984029929e-01 1.15476799016e-01 + 1.02255317231e-01 7.44578962493e-02 4.31931066266e-02 2.67216511960e-02 2.35389825848e-02 2.36141349499e-02 + 2.45139707404e-02 2.70513354759e-02 3.05548189106e-02 3.39942859271e-02 3.61935553818e-02 3.61935553818e-02 + 3.39942859271e-02 3.05548189106e-02 2.70513354759e-02 2.45139707404e-02 2.36141349500e-02 2.35389825848e-02 + 2.67216511960e-02 4.31931066266e-02 7.44578962494e-02 1.02255317231e-01 1.13479602981e-01 1.13479602981e-01 + 7.14595557376e-02 4.31931066266e-02 2.50661805908e-02 1.98434779695e-02 1.95329704288e-02 2.09116171502e-02 + 2.44579386769e-02 2.92436594720e-02 3.44216532954e-02 3.88811262511e-02 4.06883718959e-02 3.88811262512e-02 + 3.44216532954e-02 2.92436594720e-02 2.44579386769e-02 2.09116171502e-02 1.95329704289e-02 1.98434779696e-02 + 2.50661805908e-02 4.31931066266e-02 7.14595557377e-02 9.40538638177e-02 1.01688733219e-01 9.40538638177e-02 + 4.26148361403e-02 2.67216511960e-02 1.98434779695e-02 1.76763940774e-02 1.79304117733e-02 2.10846196163e-02 + 2.61164989591e-02 3.26920605346e-02 4.03062291682e-02 4.56987320892e-02 4.56987320892e-02 4.03062291682e-02 + 3.26920605346e-02 2.61164989591e-02 2.10846196163e-02 1.79304117733e-02 1.76763940774e-02 1.98434779696e-02 + 2.67216511960e-02 4.26148361403e-02 6.30064198497e-02 7.65071402185e-02 7.65071402185e-02 6.30064198496e-02 + 3.05273339684e-02 2.35389825848e-02 1.95329704288e-02 1.79304117733e-02 1.95329704288e-02 2.35389825848e-02 + 3.05273339684e-02 4.15214050146e-02 5.24371687843e-02 5.69437593911e-02 5.24371687843e-02 4.15214050146e-02 + 3.05273339684e-02 2.35389825848e-02 1.95329704289e-02 1.79304117733e-02 1.95329704289e-02 2.35389825848e-02 + 3.05273339684e-02 4.15214050146e-02 5.24371687843e-02 5.69437593911e-02 5.24371687843e-02 4.15214050146e-02 + 2.81921950446e-02 2.36141349499e-02 2.09116171502e-02 2.10846196163e-02 2.35389825848e-02 2.95749315132e-02 + 4.23899857520e-02 5.87809730550e-02 6.98255714909e-02 6.98255714909e-02 5.87809730550e-02 4.23899857520e-02 + 2.95749315132e-02 2.35389825848e-02 2.10846196163e-02 2.09116171502e-02 2.36141349500e-02 2.81921950446e-02 + 3.39196724265e-02 4.00842207789e-02 4.42637285519e-02 4.42637285519e-02 4.00842207789e-02 3.39196724265e-02 + 2.69081613820e-02 2.45139707404e-02 2.44579386769e-02 2.61164989591e-02 3.05273339684e-02 4.23899857520e-02 + 6.13624406410e-02 7.81193802830e-02 8.44119137022e-02 7.81193802831e-02 6.13624406410e-02 4.23899857520e-02 + 3.05273339685e-02 2.61164989591e-02 2.44579386769e-02 2.45139707405e-02 2.69081613820e-02 3.06792139923e-02 + 3.45751625707e-02 3.75326171916e-02 3.86293456568e-02 3.75326171916e-02 3.45751625707e-02 3.06792139923e-02 + 2.62352804996e-02 2.70513354759e-02 2.92436594720e-02 3.26920605347e-02 4.15214050146e-02 5.87809730550e-02 + 7.81193802831e-02 8.97664201881e-02 8.97664201881e-02 7.81193802831e-02 5.87809730551e-02 4.15214050147e-02 + 3.26920605347e-02 2.92436594720e-02 2.70513354759e-02 2.62352804996e-02 2.73903662614e-02 2.95890354456e-02 + 3.16057035862e-02 3.27029610793e-02 3.27029610793e-02 3.16057035862e-02 2.95890354456e-02 2.73903662614e-02 + 2.71142998602e-02 3.05548189106e-02 3.44216532954e-02 4.03062291683e-02 5.24371687844e-02 6.98255714910e-02 + 8.44119137022e-02 8.97664201881e-02 8.44119137023e-02 6.98255714910e-02 5.24371687844e-02 4.03062291683e-02 + 3.44216532954e-02 3.05548189106e-02 2.71142998602e-02 2.51931467428e-02 2.49964037842e-02 2.55726183949e-02 + 2.60492747623e-02 2.61902387743e-02 2.60492747623e-02 2.55726183949e-02 2.49964037842e-02 2.51931467427e-02 + 2.89473471924e-02 3.39942859271e-02 3.88811262512e-02 4.56987320892e-02 5.69437593912e-02 6.98255714910e-02 + 7.81193802831e-02 7.81193802831e-02 6.98255714910e-02 5.69437593912e-02 4.56987320893e-02 3.88811262512e-02 + 3.39942859271e-02 2.89473471924e-02 2.46286629032e-02 2.20777720561e-02 2.09446754967e-02 2.03920879638e-02 + 2.00583037371e-02 2.00583037371e-02 2.03920879638e-02 2.09446754967e-02 2.20777720561e-02 2.46286629032e-02 + 3.06728014251e-02 3.61935553818e-02 4.06883718959e-02 4.56987320892e-02 5.24371687844e-02 5.87809730551e-02 + 6.13624406410e-02 5.87809730551e-02 5.24371687844e-02 4.56987320893e-02 4.06883718959e-02 3.61935553818e-02 + 3.06728014251e-02 2.49902463304e-02 2.07196781889e-02 1.81502966987e-02 1.66276099946e-02 1.56489970468e-02 + 1.52718999852e-02 1.56489970468e-02 1.66276099946e-02 1.81502966987e-02 2.07196781889e-02 2.49902463304e-02 + 3.13656133727e-02 3.61935553818e-02 3.88811262512e-02 4.03062291683e-02 4.15214050147e-02 4.23899857520e-02 + 4.23899857520e-02 4.15214050147e-02 4.03062291683e-02 3.88811262512e-02 3.61935553818e-02 3.13656133727e-02 + 2.54054430258e-02 2.02040886880e-02 1.66389339973e-02 1.43894839458e-02 1.28937939562e-02 1.20439356208e-02 + 1.20439356208e-02 1.28937939562e-02 1.43894839458e-02 1.66389339973e-02 2.02040886880e-02 2.54054430258e-02 + 3.06728014251e-02 3.39942859271e-02 3.44216532954e-02 3.26920605347e-02 3.05273339685e-02 2.95749315132e-02 + 3.05273339685e-02 3.26920605347e-02 3.44216532954e-02 3.39942859271e-02 3.06728014251e-02 2.54054430258e-02 + 2.00653973118e-02 1.59287126341e-02 1.31234388541e-02 1.12137577955e-02 9.96234500644e-03 9.50248837487e-03 + 9.96234500643e-03 1.12137577955e-02 1.31234388541e-02 1.59287126341e-02 2.00653973118e-02 2.54054430258e-02 + 2.89473471924e-02 3.05548189106e-02 2.92436594720e-02 2.61164989591e-02 2.35389825848e-02 2.35389825848e-02 + 2.61164989591e-02 2.92436594720e-02 3.05548189106e-02 2.89473471924e-02 2.49902463304e-02 2.02040886880e-02 + 1.59287126341e-02 1.26855285494e-02 1.03422447642e-02 8.68876908730e-03 7.77912772161e-03 7.77912772161e-03 + 8.68876908730e-03 1.03422447642e-02 1.26855285494e-02 1.59287126341e-02 2.02040886880e-02 2.49902463304e-02 + 2.71142998602e-02 2.70513354759e-02 2.44579386769e-02 2.10846196163e-02 1.95329704289e-02 2.10846196163e-02 + 2.44579386769e-02 2.70513354759e-02 2.71142998602e-02 2.46286629032e-02 2.07196781889e-02 1.66389339973e-02 + 1.31234388541e-02 1.03422447642e-02 8.23785813084e-03 6.85668012358e-03 6.36555591034e-03 6.85668012358e-03 + 8.23785813084e-03 1.03422447642e-02 1.31234388541e-02 1.66389339973e-02 2.07196781889e-02 2.46286629032e-02 + 2.62352804996e-02 2.45139707405e-02 2.09116171503e-02 1.79304117734e-02 1.79304117734e-02 2.09116171503e-02 + 2.45139707405e-02 2.62352804996e-02 2.51931467428e-02 2.20777720561e-02 1.81502966987e-02 1.43894839458e-02 + 1.12137577956e-02 8.68876908731e-03 6.85668012359e-03 5.86550216408e-03 5.86550216408e-03 6.85668012359e-03 + 8.68876908731e-03 1.12137577956e-02 1.43894839458e-02 1.81502966987e-02 2.20777720561e-02 2.51931467428e-02 + 2.69081613821e-02 2.36141349500e-02 1.95329704289e-02 1.76763940775e-02 1.95329704289e-02 2.36141349500e-02 + 2.69081613821e-02 2.73903662614e-02 2.49964037843e-02 2.09446754967e-02 1.66276099946e-02 1.28937939562e-02 + 9.96234500644e-03 7.77912772162e-03 6.36555591034e-03 5.86550216408e-03 6.36555591034e-03 7.77912772162e-03 + 9.96234500644e-03 1.28937939562e-02 1.66276099946e-02 2.09446754967e-02 2.49964037843e-02 2.73903662614e-02 + 2.81921950447e-02 2.35389825848e-02 1.98434779696e-02 1.98434779696e-02 2.35389825848e-02 2.81921950447e-02 + 3.06792139923e-02 2.95890354456e-02 2.55726183949e-02 2.03920879638e-02 1.56489970468e-02 1.20439356208e-02 + 9.50248837488e-03 7.77912772162e-03 6.85668012358e-03 6.85668012358e-03 7.77912772161e-03 9.50248837488e-03 + 1.20439356208e-02 1.56489970468e-02 2.03920879638e-02 2.55726183949e-02 2.95890354456e-02 3.06792139923e-02 + 3.05273339685e-02 2.67216511960e-02 2.50661805908e-02 2.67216511960e-02 3.05273339685e-02 3.39196724265e-02 + 3.45751625707e-02 3.16057035862e-02 2.60492747623e-02 2.00583037371e-02 1.52718999852e-02 1.20439356208e-02 + 9.96234500644e-03 8.68876908730e-03 8.23785813083e-03 8.68876908731e-03 9.96234500644e-03 1.20439356208e-02 + 1.52718999852e-02 2.00583037371e-02 2.60492747623e-02 3.16057035862e-02 3.45751625707e-02 3.39196724265e-02 + 4.26148361404e-02 4.31931066267e-02 4.31931066267e-02 4.26148361404e-02 4.15214050147e-02 4.00842207790e-02 + 3.75326171916e-02 3.27029610793e-02 2.61902387743e-02 2.00583037371e-02 1.56489970468e-02 1.28937939562e-02 + 1.12137577955e-02 1.03422447642e-02 1.03422447642e-02 1.12137577955e-02 1.28937939562e-02 1.56489970468e-02 + 2.00583037371e-02 2.61902387743e-02 3.27029610793e-02 3.75326171916e-02 4.00842207790e-02 4.15214050147e-02 + 7.14595557378e-02 7.44578962495e-02 7.14595557377e-02 6.30064198497e-02 5.24371687844e-02 4.42637285519e-02 + 3.86293456568e-02 3.27029610793e-02 2.60492747623e-02 2.03920879638e-02 1.66276099946e-02 1.43894839458e-02 + 1.31234388541e-02 1.26855285494e-02 1.31234388541e-02 1.43894839458e-02 1.66276099946e-02 2.03920879638e-02 + 2.60492747623e-02 3.27029610793e-02 3.86293456568e-02 4.42637285519e-02 5.24371687844e-02 6.30064198498e-02 + 1.02255317232e-01 1.02255317232e-01 9.40538638178e-02 7.65071402186e-02 5.69437593911e-02 4.42637285519e-02 + 3.75326171916e-02 3.16057035862e-02 2.55726183949e-02 2.09446754967e-02 1.81502966987e-02 1.66389339974e-02 + 1.59287126341e-02 1.59287126341e-02 1.66389339974e-02 1.81502966987e-02 2.09446754967e-02 2.55726183949e-02 + 3.16057035862e-02 3.75326171916e-02 4.42637285519e-02 5.69437593912e-02 7.65071402186e-02 9.40538638178e-02 + 1.14984029929e-01 1.13479602981e-01 1.01688733220e-01 7.65071402186e-02 5.24371687843e-02 4.00842207790e-02 + 3.45751625707e-02 2.95890354456e-02 2.49964037842e-02 2.20777720561e-02 2.07196781889e-02 2.02040886880e-02 + 2.00653973119e-02 2.02040886880e-02 2.07196781889e-02 2.20777720561e-02 2.49964037842e-02 2.95890354456e-02 + 3.45751625707e-02 4.00842207790e-02 5.24371687844e-02 7.65071402186e-02 1.01688733220e-01 1.13479602981e-01 + 1.15476799016e-01 1.13479602981e-01 9.40538638177e-02 6.30064198497e-02 4.15214050146e-02 3.39196724265e-02 + 3.06792139923e-02 2.73903662614e-02 2.51931467427e-02 2.46286629032e-02 2.49902463304e-02 2.54054430258e-02 + 2.54054430258e-02 2.49902463304e-02 2.46286629032e-02 2.51931467428e-02 2.73903662614e-02 3.06792139923e-02 + 3.39196724265e-02 4.15214050147e-02 6.30064198497e-02 9.40538638178e-02 1.13479602981e-01 1.15476799016e-01 + 9.46618817554e-02 6.87950359263e-02 4.26148361403e-02 2.92890570903e-02 2.61164989591e-02 2.52955690008e-02 + 2.54927185045e-02 2.74769895380e-02 3.04773481039e-02 3.33647463123e-02 3.51262182185e-02 3.51262182185e-02 + 3.33647463124e-02 3.04773481040e-02 2.74769895380e-02 2.54927185045e-02 2.52955690009e-02 2.61164989591e-02 + 2.92890570903e-02 4.26148361403e-02 6.87950359264e-02 9.46618817554e-02 1.07504612680e-01 1.07504612680e-01 + 6.87950359263e-02 4.30330806506e-02 2.67216511960e-02 2.17746576295e-02 2.10846196163e-02 2.20787139947e-02 + 2.52955690008e-02 2.97974895143e-02 3.46096179590e-02 3.86294987685e-02 4.02266025417e-02 3.86294987685e-02 + 3.46096179590e-02 2.97974895143e-02 2.52955690008e-02 2.20787139947e-02 2.10846196163e-02 2.17746576295e-02 + 2.67216511960e-02 4.30330806506e-02 6.87950359263e-02 9.00454509227e-02 9.74781930220e-02 9.00454509227e-02 + 4.26148361403e-02 2.67216511960e-02 1.98434779695e-02 1.76763940774e-02 1.79304117733e-02 2.10846196163e-02 + 2.61164989591e-02 3.26920605346e-02 4.03062291682e-02 4.56987320892e-02 4.56987320892e-02 4.03062291683e-02 + 3.26920605347e-02 2.61164989591e-02 2.10846196163e-02 1.79304117733e-02 1.76763940774e-02 1.98434779696e-02 + 2.67216511960e-02 4.26148361403e-02 6.30064198497e-02 7.65071402185e-02 7.65071402185e-02 6.30064198496e-02 + 2.92890570903e-02 2.17746576295e-02 1.76763940774e-02 1.60510791347e-02 1.76763940774e-02 2.17746576295e-02 + 2.92890570903e-02 4.15474983449e-02 5.38553081705e-02 5.89461275929e-02 5.38553081705e-02 4.15474983449e-02 + 2.92890570903e-02 2.17746576295e-02 1.76763940774e-02 1.60510791348e-02 1.76763940774e-02 2.17746576295e-02 + 2.92890570903e-02 4.15474983449e-02 5.38553081705e-02 5.89461275929e-02 5.38553081705e-02 4.15474983449e-02 + 2.61164989591e-02 2.10846196163e-02 1.79304117733e-02 1.76763940774e-02 1.98434779695e-02 2.67216511960e-02 + 4.26148361403e-02 6.30064198496e-02 7.65071402185e-02 7.65071402185e-02 6.30064198497e-02 4.26148361403e-02 + 2.67216511960e-02 1.98434779696e-02 1.76763940774e-02 1.79304117733e-02 2.10846196163e-02 2.61164989591e-02 + 3.26920605347e-02 4.03062291683e-02 4.56987320892e-02 4.56987320892e-02 4.03062291682e-02 3.26920605346e-02 + 2.52955690008e-02 2.20787139947e-02 2.10846196163e-02 2.17746576295e-02 2.67216511960e-02 4.30330806506e-02 + 6.87950359263e-02 9.00454509227e-02 9.74781930220e-02 9.00454509227e-02 6.87950359263e-02 4.30330806506e-02 + 2.67216511960e-02 2.17746576295e-02 2.10846196163e-02 2.20787139947e-02 2.52955690008e-02 2.97974895143e-02 + 3.46096179590e-02 3.86294987685e-02 4.02266025417e-02 3.86294987685e-02 3.46096179590e-02 2.97974895143e-02 + 2.54927185045e-02 2.52955690008e-02 2.61164989591e-02 2.92890570903e-02 4.26148361403e-02 6.87950359263e-02 + 9.46618817554e-02 1.07504612680e-01 1.07504612680e-01 9.46618817554e-02 6.87950359264e-02 4.26148361403e-02 + 2.92890570903e-02 2.61164989591e-02 2.52955690009e-02 2.54927185045e-02 2.74769895380e-02 3.04773481040e-02 + 3.33647463124e-02 3.51262182185e-02 3.51262182185e-02 3.33647463123e-02 3.04773481039e-02 2.74769895380e-02 + 2.74769895380e-02 2.97974895143e-02 3.26920605347e-02 4.15474983449e-02 6.30064198497e-02 9.00454509228e-02 + 1.07504612680e-01 1.12225405021e-01 1.07504612680e-01 9.00454509228e-02 6.30064198497e-02 4.15474983450e-02 + 3.26920605347e-02 2.97974895143e-02 2.74769895380e-02 2.61756575962e-02 2.65400648390e-02 2.78013937268e-02 + 2.89590113766e-02 2.93979324046e-02 2.89590113766e-02 2.78013937268e-02 2.65400648390e-02 2.61756575962e-02 + 3.04773481040e-02 3.46096179590e-02 4.03062291683e-02 5.38553081705e-02 7.65071402186e-02 9.74781930221e-02 + 1.07504612680e-01 1.07504612680e-01 9.74781930221e-02 7.65071402186e-02 5.38553081706e-02 4.03062291683e-02 + 3.46096179590e-02 3.04773481040e-02 2.65400648390e-02 2.40839675381e-02 2.32030440049e-02 2.30939042850e-02 + 2.31231583381e-02 2.31231583381e-02 2.30939042850e-02 2.32030440049e-02 2.40839675381e-02 2.65400648390e-02 + 3.33647463123e-02 3.86294987685e-02 4.56987320892e-02 5.89461275929e-02 7.65071402186e-02 9.00454509228e-02 + 9.46618817555e-02 9.00454509228e-02 7.65071402186e-02 5.89461275929e-02 4.56987320892e-02 3.86294987685e-02 + 3.33647463124e-02 2.78013937268e-02 2.32030440049e-02 2.03983415996e-02 1.89263764236e-02 1.81430425205e-02 + 1.78657504093e-02 1.81430425204e-02 1.89263764236e-02 2.03983415996e-02 2.32030440049e-02 2.78013937268e-02 + 3.51262182184e-02 4.02266025417e-02 4.56987320892e-02 5.38553081706e-02 6.30064198497e-02 6.87950359264e-02 + 6.87950359264e-02 6.30064198498e-02 5.38553081706e-02 4.56987320892e-02 4.02266025417e-02 3.51262182185e-02 + 2.89590113766e-02 2.30939042849e-02 1.89263764236e-02 1.64062528191e-02 1.48932100517e-02 1.40901390285e-02 + 1.40901390285e-02 1.48932100517e-02 1.64062528191e-02 1.89263764236e-02 2.30939042849e-02 2.89590113766e-02 + 3.51262182185e-02 3.86294987685e-02 4.03062291683e-02 4.15474983450e-02 4.26148361404e-02 4.30330806506e-02 + 4.26148361404e-02 4.15474983450e-02 4.03062291683e-02 3.86294987685e-02 3.51262182185e-02 2.93979324046e-02 + 2.31231583381e-02 1.81430425204e-02 1.48932100517e-02 1.28580577518e-02 1.16029685725e-02 1.11481007476e-02 + 1.16029685725e-02 1.28580577518e-02 1.48932100517e-02 1.81430425204e-02 2.31231583381e-02 2.93979324046e-02 + 3.33647463124e-02 3.46096179590e-02 3.26920605347e-02 2.92890570903e-02 2.67216511960e-02 2.67216511960e-02 + 2.92890570903e-02 3.26920605347e-02 3.46096179591e-02 3.33647463124e-02 2.89590113766e-02 2.31231583381e-02 + 1.78657504093e-02 1.40901390285e-02 1.16029685725e-02 9.96167567605e-03 9.07031679536e-03 9.07031679536e-03 + 9.96167567605e-03 1.16029685725e-02 1.40901390285e-02 1.78657504093e-02 2.31231583381e-02 2.89590113766e-02 + 3.04773481040e-02 2.97974895143e-02 2.61164989591e-02 2.17746576295e-02 1.98434779696e-02 2.17746576295e-02 + 2.61164989591e-02 2.97974895143e-02 3.04773481040e-02 2.78013937268e-02 2.30939042850e-02 1.81430425204e-02 + 1.40901390285e-02 1.11481007476e-02 9.07031679536e-03 7.73176989509e-03 7.25301575416e-03 7.73176989509e-03 + 9.07031679536e-03 1.11481007476e-02 1.40901390285e-02 1.81430425204e-02 2.30939042849e-02 2.78013937268e-02 + 2.74769895380e-02 2.52955690009e-02 2.10846196163e-02 1.76763940775e-02 1.76763940775e-02 2.10846196163e-02 + 2.52955690009e-02 2.74769895380e-02 2.65400648390e-02 2.32030440049e-02 1.89263764236e-02 1.48932100517e-02 + 1.16029685725e-02 9.07031679537e-03 7.25301575416e-03 6.26631005461e-03 6.26631005461e-03 7.25301575416e-03 + 9.07031679537e-03 1.16029685725e-02 1.48932100517e-02 1.89263764236e-02 2.32030440049e-02 2.65400648390e-02 + 2.54927185046e-02 2.20787139947e-02 1.79304117734e-02 1.60510791348e-02 1.79304117734e-02 2.20787139947e-02 + 2.54927185046e-02 2.61756575963e-02 2.40839675381e-02 2.03983415996e-02 1.64062528191e-02 1.28580577518e-02 + 9.96167567605e-03 7.73176989510e-03 6.26631005461e-03 5.74651192180e-03 6.26631005461e-03 7.73176989510e-03 + 9.96167567605e-03 1.28580577518e-02 1.64062528191e-02 2.03983415996e-02 2.40839675381e-02 2.61756575963e-02 + 2.52955690009e-02 2.10846196163e-02 1.76763940775e-02 1.76763940775e-02 2.10846196163e-02 2.52955690009e-02 + 2.74769895380e-02 2.65400648390e-02 2.32030440049e-02 1.89263764236e-02 1.48932100517e-02 1.16029685725e-02 + 9.07031679537e-03 7.25301575416e-03 6.26631005461e-03 6.26631005461e-03 7.25301575416e-03 9.07031679537e-03 + 1.16029685725e-02 1.48932100517e-02 1.89263764236e-02 2.32030440049e-02 2.65400648390e-02 2.74769895380e-02 + 2.61164989591e-02 2.17746576295e-02 1.98434779696e-02 2.17746576295e-02 2.61164989591e-02 2.97974895143e-02 + 3.04773481040e-02 2.78013937268e-02 2.30939042850e-02 1.81430425204e-02 1.40901390285e-02 1.11481007476e-02 + 9.07031679536e-03 7.73176989509e-03 7.25301575416e-03 7.73176989509e-03 9.07031679536e-03 1.11481007476e-02 + 1.40901390285e-02 1.81430425204e-02 2.30939042850e-02 2.78013937268e-02 3.04773481040e-02 2.97974895143e-02 + 2.92890570903e-02 2.67216511960e-02 2.67216511960e-02 2.92890570903e-02 3.26920605347e-02 3.46096179590e-02 + 3.33647463124e-02 2.89590113766e-02 2.31231583381e-02 1.78657504093e-02 1.40901390285e-02 1.16029685725e-02 + 9.96167567605e-03 9.07031679536e-03 9.07031679536e-03 9.96167567605e-03 1.16029685725e-02 1.40901390285e-02 + 1.78657504093e-02 2.31231583381e-02 2.89590113766e-02 3.33647463124e-02 3.46096179591e-02 3.26920605347e-02 + 4.26148361404e-02 4.30330806506e-02 4.26148361404e-02 4.15474983450e-02 4.03062291683e-02 3.86294987685e-02 + 3.51262182185e-02 2.93979324046e-02 2.31231583381e-02 1.81430425204e-02 1.48932100517e-02 1.28580577518e-02 + 1.16029685725e-02 1.11481007476e-02 1.16029685725e-02 1.28580577518e-02 1.48932100517e-02 1.81430425204e-02 + 2.31231583381e-02 2.93979324046e-02 3.51262182185e-02 3.86294987685e-02 4.03062291683e-02 4.15474983450e-02 + 6.87950359264e-02 6.87950359264e-02 6.30064198497e-02 5.38553081706e-02 4.56987320892e-02 4.02266025417e-02 + 3.51262182184e-02 2.89590113766e-02 2.30939042849e-02 1.89263764236e-02 1.64062528191e-02 1.48932100517e-02 + 1.40901390285e-02 1.40901390285e-02 1.48932100517e-02 1.64062528191e-02 1.89263764236e-02 2.30939042849e-02 + 2.89590113766e-02 3.51262182185e-02 4.02266025417e-02 4.56987320892e-02 5.38553081706e-02 6.30064198498e-02 + 9.46618817555e-02 9.00454509228e-02 7.65071402186e-02 5.89461275929e-02 4.56987320892e-02 3.86294987685e-02 + 3.33647463124e-02 2.78013937268e-02 2.32030440049e-02 2.03983415996e-02 1.89263764236e-02 1.81430425204e-02 + 1.78657504093e-02 1.81430425205e-02 1.89263764236e-02 2.03983415996e-02 2.32030440049e-02 2.78013937268e-02 + 3.33647463124e-02 3.86294987685e-02 4.56987320892e-02 5.89461275929e-02 7.65071402186e-02 9.00454509228e-02 + 1.07504612680e-01 9.74781930221e-02 7.65071402186e-02 5.38553081705e-02 4.03062291683e-02 3.46096179590e-02 + 3.04773481040e-02 2.65400648390e-02 2.40839675381e-02 2.32030440049e-02 2.30939042850e-02 2.31231583381e-02 + 2.31231583381e-02 2.30939042850e-02 2.32030440049e-02 2.40839675381e-02 2.65400648390e-02 3.04773481040e-02 + 3.46096179590e-02 4.03062291683e-02 5.38553081706e-02 7.65071402186e-02 9.74781930221e-02 1.07504612680e-01 + 1.07504612680e-01 9.00454509228e-02 6.30064198497e-02 4.15474983449e-02 3.26920605347e-02 2.97974895143e-02 + 2.74769895380e-02 2.61756575962e-02 2.65400648390e-02 2.78013937268e-02 2.89590113766e-02 2.93979324046e-02 + 2.89590113766e-02 2.78013937268e-02 2.65400648390e-02 2.61756575962e-02 2.74769895380e-02 2.97974895143e-02 + 3.26920605347e-02 4.15474983450e-02 6.30064198497e-02 9.00454509228e-02 1.07504612680e-01 1.12225405021e-01 + 6.13624406410e-02 4.23899857520e-02 3.05273339684e-02 2.61164989591e-02 2.44579386769e-02 2.45139707404e-02 + 2.69081613820e-02 3.06792139923e-02 3.45751625707e-02 3.75326171916e-02 3.86293456568e-02 3.75326171916e-02 + 3.45751625707e-02 3.06792139923e-02 2.69081613820e-02 2.45139707405e-02 2.44579386769e-02 2.61164989591e-02 + 3.05273339685e-02 4.23899857520e-02 6.13624406410e-02 7.81193802831e-02 8.44119137022e-02 7.81193802830e-02 + 4.23899857520e-02 2.95749315132e-02 2.35389825848e-02 2.10846196163e-02 2.09116171502e-02 2.36141349499e-02 + 2.81921950446e-02 3.39196724265e-02 4.00842207789e-02 4.42637285519e-02 4.42637285519e-02 4.00842207789e-02 + 3.39196724265e-02 2.81921950446e-02 2.36141349500e-02 2.09116171502e-02 2.10846196163e-02 2.35389825848e-02 + 2.95749315132e-02 4.23899857520e-02 5.87809730550e-02 6.98255714909e-02 6.98255714909e-02 5.87809730550e-02 + 3.05273339684e-02 2.35389825848e-02 1.95329704288e-02 1.79304117733e-02 1.95329704288e-02 2.35389825848e-02 + 3.05273339684e-02 4.15214050146e-02 5.24371687843e-02 5.69437593911e-02 5.24371687843e-02 4.15214050146e-02 + 3.05273339684e-02 2.35389825848e-02 1.95329704289e-02 1.79304117733e-02 1.95329704289e-02 2.35389825848e-02 + 3.05273339684e-02 4.15214050146e-02 5.24371687843e-02 5.69437593911e-02 5.24371687843e-02 4.15214050146e-02 + 2.61164989591e-02 2.10846196163e-02 1.79304117733e-02 1.76763940774e-02 1.98434779695e-02 2.67216511960e-02 + 4.26148361403e-02 6.30064198496e-02 7.65071402185e-02 7.65071402185e-02 6.30064198497e-02 4.26148361403e-02 + 2.67216511960e-02 1.98434779696e-02 1.76763940774e-02 1.79304117733e-02 2.10846196163e-02 2.61164989591e-02 + 3.26920605346e-02 4.03062291682e-02 4.56987320892e-02 4.56987320892e-02 4.03062291682e-02 3.26920605346e-02 + 2.44579386769e-02 2.09116171502e-02 1.95329704288e-02 1.98434779695e-02 2.50661805908e-02 4.31931066266e-02 + 7.14595557376e-02 9.40538638177e-02 1.01688733219e-01 9.40538638177e-02 7.14595557377e-02 4.31931066266e-02 + 2.50661805908e-02 1.98434779696e-02 1.95329704289e-02 2.09116171502e-02 2.44579386769e-02 2.92436594720e-02 + 3.44216532954e-02 3.88811262512e-02 4.06883718959e-02 3.88811262511e-02 3.44216532954e-02 2.92436594720e-02 + 2.45139707404e-02 2.36141349499e-02 2.35389825848e-02 2.67216511960e-02 4.31931066266e-02 7.44578962493e-02 + 1.02255317231e-01 1.13479602981e-01 1.13479602981e-01 1.02255317231e-01 7.44578962494e-02 4.31931066266e-02 + 2.67216511960e-02 2.35389825848e-02 2.36141349500e-02 2.45139707404e-02 2.70513354759e-02 3.05548189106e-02 + 3.39942859271e-02 3.61935553818e-02 3.61935553818e-02 3.39942859271e-02 3.05548189106e-02 2.70513354759e-02 + 2.69081613820e-02 2.81921950446e-02 3.05273339684e-02 4.26148361403e-02 7.14595557377e-02 1.02255317231e-01 + 1.14984029929e-01 1.15476799016e-01 1.14984029929e-01 1.02255317231e-01 7.14595557377e-02 4.26148361403e-02 + 3.05273339684e-02 2.81921950447e-02 2.69081613820e-02 2.62352804996e-02 2.71142998602e-02 2.89473471924e-02 + 3.06728014251e-02 3.13656133728e-02 3.06728014251e-02 2.89473471924e-02 2.71142998602e-02 2.62352804996e-02 + 3.06792139923e-02 3.39196724265e-02 4.15214050146e-02 6.30064198497e-02 9.40538638177e-02 1.13479602981e-01 + 1.15476799016e-01 1.15476799016e-01 1.13479602981e-01 9.40538638178e-02 6.30064198497e-02 4.15214050147e-02 + 3.39196724265e-02 3.06792139923e-02 2.73903662614e-02 2.51931467428e-02 2.46286629032e-02 2.49902463304e-02 + 2.54054430258e-02 2.54054430258e-02 2.49902463304e-02 2.46286629032e-02 2.51931467427e-02 2.73903662614e-02 + 3.45751625707e-02 4.00842207790e-02 5.24371687843e-02 7.65071402186e-02 1.01688733220e-01 1.13479602981e-01 + 1.14984029929e-01 1.13479602981e-01 1.01688733220e-01 7.65071402186e-02 5.24371687844e-02 4.00842207790e-02 + 3.45751625707e-02 2.95890354456e-02 2.49964037842e-02 2.20777720561e-02 2.07196781889e-02 2.02040886880e-02 + 2.00653973119e-02 2.02040886880e-02 2.07196781889e-02 2.20777720561e-02 2.49964037842e-02 2.95890354456e-02 + 3.75326171916e-02 4.42637285519e-02 5.69437593911e-02 7.65071402186e-02 9.40538638178e-02 1.02255317232e-01 + 1.02255317232e-01 9.40538638178e-02 7.65071402186e-02 5.69437593912e-02 4.42637285519e-02 3.75326171916e-02 + 3.16057035862e-02 2.55726183949e-02 2.09446754967e-02 1.81502966987e-02 1.66389339974e-02 1.59287126341e-02 + 1.59287126341e-02 1.66389339974e-02 1.81502966987e-02 2.09446754967e-02 2.55726183949e-02 3.16057035862e-02 + 3.86293456568e-02 4.42637285519e-02 5.24371687844e-02 6.30064198497e-02 7.14595557377e-02 7.44578962495e-02 + 7.14595557378e-02 6.30064198498e-02 5.24371687844e-02 4.42637285519e-02 3.86293456568e-02 3.27029610793e-02 + 2.60492747623e-02 2.03920879638e-02 1.66276099946e-02 1.43894839458e-02 1.31234388541e-02 1.26855285494e-02 + 1.31234388541e-02 1.43894839458e-02 1.66276099946e-02 2.03920879638e-02 2.60492747623e-02 3.27029610793e-02 + 3.75326171916e-02 4.00842207790e-02 4.15214050147e-02 4.26148361404e-02 4.31931066267e-02 4.31931066267e-02 + 4.26148361404e-02 4.15214050147e-02 4.00842207790e-02 3.75326171916e-02 3.27029610793e-02 2.61902387743e-02 + 2.00583037371e-02 1.56489970468e-02 1.28937939562e-02 1.12137577955e-02 1.03422447642e-02 1.03422447642e-02 + 1.12137577955e-02 1.28937939562e-02 1.56489970468e-02 2.00583037371e-02 2.61902387743e-02 3.27029610793e-02 + 3.45751625707e-02 3.39196724265e-02 3.05273339685e-02 2.67216511960e-02 2.50661805908e-02 2.67216511960e-02 + 3.05273339685e-02 3.39196724265e-02 3.45751625707e-02 3.16057035862e-02 2.60492747623e-02 2.00583037371e-02 + 1.52718999852e-02 1.20439356208e-02 9.96234500644e-03 8.68876908731e-03 8.23785813083e-03 8.68876908730e-03 + 9.96234500644e-03 1.20439356208e-02 1.52718999852e-02 2.00583037371e-02 2.60492747623e-02 3.16057035862e-02 + 3.06792139923e-02 2.81921950447e-02 2.35389825848e-02 1.98434779696e-02 1.98434779696e-02 2.35389825848e-02 + 2.81921950447e-02 3.06792139923e-02 2.95890354456e-02 2.55726183949e-02 2.03920879638e-02 1.56489970468e-02 + 1.20439356208e-02 9.50248837488e-03 7.77912772161e-03 6.85668012358e-03 6.85668012358e-03 7.77912772162e-03 + 9.50248837488e-03 1.20439356208e-02 1.56489970468e-02 2.03920879638e-02 2.55726183949e-02 2.95890354456e-02 + 2.69081613821e-02 2.36141349500e-02 1.95329704289e-02 1.76763940775e-02 1.95329704289e-02 2.36141349500e-02 + 2.69081613821e-02 2.73903662614e-02 2.49964037843e-02 2.09446754967e-02 1.66276099946e-02 1.28937939562e-02 + 9.96234500644e-03 7.77912772162e-03 6.36555591034e-03 5.86550216408e-03 6.36555591034e-03 7.77912772162e-03 + 9.96234500644e-03 1.28937939562e-02 1.66276099946e-02 2.09446754967e-02 2.49964037843e-02 2.73903662614e-02 + 2.45139707405e-02 2.09116171503e-02 1.79304117734e-02 1.79304117734e-02 2.09116171503e-02 2.45139707405e-02 + 2.62352804996e-02 2.51931467428e-02 2.20777720561e-02 1.81502966987e-02 1.43894839458e-02 1.12137577956e-02 + 8.68876908731e-03 6.85668012359e-03 5.86550216408e-03 5.86550216408e-03 6.85668012359e-03 8.68876908731e-03 + 1.12137577956e-02 1.43894839458e-02 1.81502966987e-02 2.20777720561e-02 2.51931467428e-02 2.62352804996e-02 + 2.44579386769e-02 2.10846196163e-02 1.95329704289e-02 2.10846196163e-02 2.44579386769e-02 2.70513354759e-02 + 2.71142998602e-02 2.46286629032e-02 2.07196781889e-02 1.66389339973e-02 1.31234388541e-02 1.03422447642e-02 + 8.23785813084e-03 6.85668012358e-03 6.36555591034e-03 6.85668012358e-03 8.23785813084e-03 1.03422447642e-02 + 1.31234388541e-02 1.66389339973e-02 2.07196781889e-02 2.46286629032e-02 2.71142998602e-02 2.70513354759e-02 + 2.61164989591e-02 2.35389825848e-02 2.35389825848e-02 2.61164989591e-02 2.92436594720e-02 3.05548189106e-02 + 2.89473471924e-02 2.49902463304e-02 2.02040886880e-02 1.59287126341e-02 1.26855285494e-02 1.03422447642e-02 + 8.68876908730e-03 7.77912772161e-03 7.77912772161e-03 8.68876908730e-03 1.03422447642e-02 1.26855285494e-02 + 1.59287126341e-02 2.02040886880e-02 2.49902463304e-02 2.89473471924e-02 3.05548189106e-02 2.92436594720e-02 + 3.05273339685e-02 2.95749315132e-02 3.05273339685e-02 3.26920605347e-02 3.44216532954e-02 3.39942859271e-02 + 3.06728014251e-02 2.54054430258e-02 2.00653973118e-02 1.59287126341e-02 1.31234388541e-02 1.12137577955e-02 + 9.96234500643e-03 9.50248837487e-03 9.96234500644e-03 1.12137577955e-02 1.31234388541e-02 1.59287126341e-02 + 2.00653973118e-02 2.54054430258e-02 3.06728014251e-02 3.39942859271e-02 3.44216532954e-02 3.26920605347e-02 + 4.23899857520e-02 4.23899857520e-02 4.15214050147e-02 4.03062291683e-02 3.88811262512e-02 3.61935553818e-02 + 3.13656133727e-02 2.54054430258e-02 2.02040886880e-02 1.66389339973e-02 1.43894839458e-02 1.28937939562e-02 + 1.20439356208e-02 1.20439356208e-02 1.28937939562e-02 1.43894839458e-02 1.66389339973e-02 2.02040886880e-02 + 2.54054430258e-02 3.13656133727e-02 3.61935553818e-02 3.88811262512e-02 4.03062291683e-02 4.15214050147e-02 + 6.13624406410e-02 5.87809730551e-02 5.24371687844e-02 4.56987320892e-02 4.06883718959e-02 3.61935553818e-02 + 3.06728014251e-02 2.49902463304e-02 2.07196781889e-02 1.81502966987e-02 1.66276099946e-02 1.56489970468e-02 + 1.52718999852e-02 1.56489970468e-02 1.66276099946e-02 1.81502966987e-02 2.07196781889e-02 2.49902463304e-02 + 3.06728014251e-02 3.61935553818e-02 4.06883718959e-02 4.56987320893e-02 5.24371687844e-02 5.87809730551e-02 + 7.81193802831e-02 6.98255714910e-02 5.69437593912e-02 4.56987320892e-02 3.88811262512e-02 3.39942859271e-02 + 2.89473471924e-02 2.46286629032e-02 2.20777720561e-02 2.09446754967e-02 2.03920879638e-02 2.00583037371e-02 + 2.00583037371e-02 2.03920879638e-02 2.09446754967e-02 2.20777720561e-02 2.46286629032e-02 2.89473471924e-02 + 3.39942859271e-02 3.88811262512e-02 4.56987320893e-02 5.69437593912e-02 6.98255714910e-02 7.81193802831e-02 + 8.44119137022e-02 6.98255714910e-02 5.24371687844e-02 4.03062291683e-02 3.44216532954e-02 3.05548189106e-02 + 2.71142998602e-02 2.51931467427e-02 2.49964037842e-02 2.55726183949e-02 2.60492747623e-02 2.61902387743e-02 + 2.60492747623e-02 2.55726183949e-02 2.49964037842e-02 2.51931467428e-02 2.71142998602e-02 3.05548189106e-02 + 3.44216532954e-02 4.03062291683e-02 5.24371687844e-02 6.98255714910e-02 8.44119137023e-02 8.97664201881e-02 + 7.81193802831e-02 5.87809730550e-02 4.15214050146e-02 3.26920605347e-02 2.92436594720e-02 2.70513354759e-02 + 2.62352804996e-02 2.73903662614e-02 2.95890354456e-02 3.16057035862e-02 3.27029610793e-02 3.27029610793e-02 + 3.16057035862e-02 2.95890354456e-02 2.73903662614e-02 2.62352804996e-02 2.70513354759e-02 2.92436594720e-02 + 3.26920605347e-02 4.15214050147e-02 5.87809730551e-02 7.81193802831e-02 8.97664201881e-02 8.97664201881e-02 + 4.15726567626e-02 3.31551669202e-02 2.81921950446e-02 2.52955690008e-02 2.45139707404e-02 2.65224863971e-02 + 3.03789244340e-02 3.48628450776e-02 3.89798518705e-02 4.14583134664e-02 4.14583134664e-02 3.89798518705e-02 + 3.48628450776e-02 3.03789244340e-02 2.65224863971e-02 2.45139707405e-02 2.52955690009e-02 2.81921950447e-02 + 3.31551669202e-02 4.15726567626e-02 5.18158087398e-02 5.87902882083e-02 5.87902882083e-02 5.18158087398e-02 + 3.31551669202e-02 2.73937018060e-02 2.36141349499e-02 2.20787139947e-02 2.36141349499e-02 2.73937018060e-02 + 3.31551669201e-02 4.11388919901e-02 4.86717503238e-02 5.17382028008e-02 4.86717503238e-02 4.11388919901e-02 + 3.31551669202e-02 2.73937018060e-02 2.36141349500e-02 2.20787139947e-02 2.36141349499e-02 2.73937018060e-02 + 3.31551669202e-02 4.11388919901e-02 4.86717503238e-02 5.17382028009e-02 4.86717503238e-02 4.11388919901e-02 + 2.81921950446e-02 2.36141349499e-02 2.09116171502e-02 2.10846196163e-02 2.35389825848e-02 2.95749315132e-02 + 4.23899857519e-02 5.87809730550e-02 6.98255714909e-02 6.98255714909e-02 5.87809730550e-02 4.23899857520e-02 + 2.95749315132e-02 2.35389825848e-02 2.10846196163e-02 2.09116171502e-02 2.36141349499e-02 2.81921950446e-02 + 3.39196724265e-02 4.00842207789e-02 4.42637285519e-02 4.42637285519e-02 4.00842207789e-02 3.39196724265e-02 + 2.52955690008e-02 2.20787139947e-02 2.10846196163e-02 2.17746576295e-02 2.67216511960e-02 4.30330806506e-02 + 6.87950359263e-02 9.00454509227e-02 9.74781930219e-02 9.00454509227e-02 6.87950359263e-02 4.30330806506e-02 + 2.67216511960e-02 2.17746576295e-02 2.10846196163e-02 2.20787139947e-02 2.52955690008e-02 2.97974895143e-02 + 3.46096179590e-02 3.86294987685e-02 4.02266025417e-02 3.86294987685e-02 3.46096179590e-02 2.97974895143e-02 + 2.45139707404e-02 2.36141349499e-02 2.35389825848e-02 2.67216511960e-02 4.31931066266e-02 7.44578962493e-02 + 1.02255317231e-01 1.13479602981e-01 1.13479602981e-01 1.02255317231e-01 7.44578962494e-02 4.31931066266e-02 + 2.67216511960e-02 2.35389825848e-02 2.36141349499e-02 2.45139707404e-02 2.70513354759e-02 3.05548189106e-02 + 3.39942859271e-02 3.61935553818e-02 3.61935553818e-02 3.39942859271e-02 3.05548189106e-02 2.70513354759e-02 + 2.65224863971e-02 2.73937018060e-02 2.95749315132e-02 4.30330806506e-02 7.44578962493e-02 1.05382836884e-01 + 1.14284409879e-01 1.12133375345e-01 1.14284409879e-01 1.05382836884e-01 7.44578962494e-02 4.30330806506e-02 + 2.95749315132e-02 2.73937018060e-02 2.65224863971e-02 2.61140936360e-02 2.72051400328e-02 2.92643382604e-02 + 3.12134113093e-02 3.20070729423e-02 3.12134113093e-02 2.92643382604e-02 2.72051400328e-02 2.61140936360e-02 + 3.03789244340e-02 3.31551669202e-02 4.23899857520e-02 6.87950359263e-02 1.02255317231e-01 1.14284409879e-01 + 1.05271425072e-01 1.05271425072e-01 1.14284409879e-01 1.02255317231e-01 6.87950359264e-02 4.23899857520e-02 + 3.31551669202e-02 3.03789244340e-02 2.75584598461e-02 2.55791633527e-02 2.52445347088e-02 2.59181147281e-02 + 2.65858530209e-02 2.65858530209e-02 2.59181147281e-02 2.52445347088e-02 2.55791633527e-02 2.75584598461e-02 + 3.48628450776e-02 4.11388919901e-02 5.87809730550e-02 9.00454509227e-02 1.13479602981e-01 1.12133375345e-01 + 1.05271425072e-01 1.12133375345e-01 1.13479602981e-01 9.00454509228e-02 5.87809730550e-02 4.11388919902e-02 + 3.48628450776e-02 3.04051143293e-02 2.59618688149e-02 2.30253665657e-02 2.17948830411e-02 2.15195877577e-02 + 2.15038028103e-02 2.15195877577e-02 2.17948830411e-02 2.30253665657e-02 2.59618688149e-02 3.04051143293e-02 + 3.89798518706e-02 4.86717503239e-02 6.98255714910e-02 9.74781930220e-02 1.13479602981e-01 1.14284409879e-01 + 1.14284409879e-01 1.13479602981e-01 9.74781930221e-02 6.98255714910e-02 4.86717503239e-02 3.89798518706e-02 + 3.31963581644e-02 2.73091501295e-02 2.24043982374e-02 1.93871115228e-02 1.78888288560e-02 1.72812015630e-02 + 1.72812015630e-02 1.78888288560e-02 1.93871115228e-02 2.24043982374e-02 2.73091501295e-02 3.31963581644e-02 + 4.14583134664e-02 5.17382028009e-02 6.98255714910e-02 9.00454509228e-02 1.02255317232e-01 1.05382836884e-01 + 1.02255317232e-01 9.00454509228e-02 6.98255714910e-02 5.17382028009e-02 4.14583134665e-02 3.49769025118e-02 + 2.84217494631e-02 2.23752455712e-02 1.81179302207e-02 1.56224022211e-02 1.43188164440e-02 1.38961516945e-02 + 1.43188164440e-02 1.56224022211e-02 1.81179302207e-02 2.23752455712e-02 2.84217494631e-02 3.49769025117e-02 + 4.14583134664e-02 4.86717503239e-02 5.87809730551e-02 6.87950359264e-02 7.44578962495e-02 7.44578962495e-02 + 6.87950359264e-02 5.87809730551e-02 4.86717503239e-02 4.14583134665e-02 3.55406204185e-02 2.88778389824e-02 + 2.22713307355e-02 1.72611853896e-02 1.41149739580e-02 1.22934163580e-02 1.14031750108e-02 1.14031750108e-02 + 1.22934163580e-02 1.41149739580e-02 1.72611853896e-02 2.22713307355e-02 2.88778389824e-02 3.55406204185e-02 + 3.89798518706e-02 4.11388919902e-02 4.23899857520e-02 4.30330806507e-02 4.31931066267e-02 4.30330806507e-02 + 4.23899857520e-02 4.11388919902e-02 3.89798518706e-02 3.49769025118e-02 2.88778389824e-02 2.21709602700e-02 + 1.66950035376e-02 1.30618774824e-02 1.08500532301e-02 9.57619631350e-03 9.13724506496e-03 9.57619631350e-03 + 1.08500532301e-02 1.30618774824e-02 1.66950035376e-02 2.21709602700e-02 2.88778389824e-02 3.49769025118e-02 + 3.48628450776e-02 3.31551669202e-02 2.95749315132e-02 2.67216511960e-02 2.67216511960e-02 2.95749315132e-02 + 3.31551669202e-02 3.48628450776e-02 3.31963581644e-02 2.84217494631e-02 2.22713307355e-02 1.66950035376e-02 + 1.26511415702e-02 1.00210602336e-02 8.36360112567e-03 7.50451749096e-03 7.50451749096e-03 8.36360112567e-03 + 1.00210602336e-02 1.26511415702e-02 1.66950035376e-02 2.22713307355e-02 2.84217494631e-02 3.31963581644e-02 + 3.03789244340e-02 2.73937018061e-02 2.35389825848e-02 2.17746576296e-02 2.35389825848e-02 2.73937018061e-02 + 3.03789244340e-02 3.04051143294e-02 2.73091501295e-02 2.23752455712e-02 1.72611853896e-02 1.30618774824e-02 + 1.00210602336e-02 7.92498387888e-03 6.62087909721e-03 6.16385997204e-03 6.62087909721e-03 7.92498387888e-03 + 1.00210602336e-02 1.30618774824e-02 1.72611853896e-02 2.23752455712e-02 2.73091501295e-02 3.04051143294e-02 + 2.65224863971e-02 2.36141349500e-02 2.10846196163e-02 2.10846196163e-02 2.36141349500e-02 2.65224863971e-02 + 2.75584598462e-02 2.59618688149e-02 2.24043982374e-02 1.81179302207e-02 1.41149739580e-02 1.08500532301e-02 + 8.36360112567e-03 6.62087909721e-03 5.69328932590e-03 5.69328932590e-03 6.62087909721e-03 8.36360112567e-03 + 1.08500532301e-02 1.41149739580e-02 1.81179302207e-02 2.24043982374e-02 2.59618688149e-02 2.75584598462e-02 + 2.45139707405e-02 2.20787139947e-02 2.09116171503e-02 2.20787139948e-02 2.45139707405e-02 2.61140936361e-02 + 2.55791633528e-02 2.30253665657e-02 1.93871115228e-02 1.56224022211e-02 1.22934163580e-02 9.57619631351e-03 + 7.50451749097e-03 6.16385997204e-03 5.69328932590e-03 6.16385997204e-03 7.50451749097e-03 9.57619631351e-03 + 1.22934163580e-02 1.56224022211e-02 1.93871115228e-02 2.30253665657e-02 2.55791633528e-02 2.61140936361e-02 + 2.52955690009e-02 2.36141349500e-02 2.36141349500e-02 2.52955690009e-02 2.70513354759e-02 2.72051400328e-02 + 2.52445347088e-02 2.17948830411e-02 1.78888288560e-02 1.43188164440e-02 1.14031750108e-02 9.13724506496e-03 + 7.50451749096e-03 6.62087909721e-03 6.62087909721e-03 7.50451749096e-03 9.13724506496e-03 1.14031750108e-02 + 1.43188164440e-02 1.78888288560e-02 2.17948830411e-02 2.52445347088e-02 2.72051400328e-02 2.70513354759e-02 + 2.81921950447e-02 2.73937018061e-02 2.81921950447e-02 2.97974895143e-02 3.05548189106e-02 2.92643382604e-02 + 2.59181147281e-02 2.15195877577e-02 1.72812015630e-02 1.38961516944e-02 1.14031750108e-02 9.57619631350e-03 + 8.36360112567e-03 7.92498387887e-03 8.36360112567e-03 9.57619631350e-03 1.14031750108e-02 1.38961516944e-02 + 1.72812015630e-02 2.15195877577e-02 2.59181147281e-02 2.92643382604e-02 3.05548189106e-02 2.97974895143e-02 + 3.31551669202e-02 3.31551669202e-02 3.39196724265e-02 3.46096179590e-02 3.39942859271e-02 3.12134113093e-02 + 2.65858530209e-02 2.15038028103e-02 1.72812015630e-02 1.43188164440e-02 1.22934163580e-02 1.08500532301e-02 + 1.00210602336e-02 1.00210602336e-02 1.08500532301e-02 1.22934163580e-02 1.43188164440e-02 1.72812015630e-02 + 2.15038028103e-02 2.65858530209e-02 3.12134113093e-02 3.39942859271e-02 3.46096179590e-02 3.39196724265e-02 + 4.15726567627e-02 4.11388919902e-02 4.00842207790e-02 3.86294987685e-02 3.61935553818e-02 3.20070729422e-02 + 2.65858530209e-02 2.15195877577e-02 1.78888288560e-02 1.56224022211e-02 1.41149739580e-02 1.30618774824e-02 + 1.26511415702e-02 1.30618774824e-02 1.41149739580e-02 1.56224022211e-02 1.78888288560e-02 2.15195877577e-02 + 2.65858530209e-02 3.20070729422e-02 3.61935553818e-02 3.86294987685e-02 4.00842207790e-02 4.11388919902e-02 + 5.18158087398e-02 4.86717503239e-02 4.42637285519e-02 4.02266025417e-02 3.61935553818e-02 3.12134113093e-02 + 2.59181147280e-02 2.17948830411e-02 1.93871115228e-02 1.81179302207e-02 1.72611853896e-02 1.66950035376e-02 + 1.66950035376e-02 1.72611853896e-02 1.81179302207e-02 1.93871115228e-02 2.17948830411e-02 2.59181147281e-02 + 3.12134113093e-02 3.61935553818e-02 4.02266025417e-02 4.42637285519e-02 4.86717503239e-02 5.18158087398e-02 + 5.87902882084e-02 5.17382028009e-02 4.42637285519e-02 3.86294987685e-02 3.39942859271e-02 2.92643382604e-02 + 2.52445347087e-02 2.30253665656e-02 2.24043982374e-02 2.23752455712e-02 2.22713307355e-02 2.21709602700e-02 + 2.22713307355e-02 2.23752455712e-02 2.24043982374e-02 2.30253665657e-02 2.52445347088e-02 2.92643382604e-02 + 3.39942859271e-02 3.86294987685e-02 4.42637285519e-02 5.17382028009e-02 5.87902882084e-02 6.17008685349e-02 + 5.87902882084e-02 4.86717503239e-02 4.00842207790e-02 3.46096179590e-02 3.05548189106e-02 2.72051400328e-02 + 2.55791633527e-02 2.59618688149e-02 2.73091501295e-02 2.84217494631e-02 2.88778389824e-02 2.88778389824e-02 + 2.84217494631e-02 2.73091501295e-02 2.59618688149e-02 2.55791633527e-02 2.72051400328e-02 3.05548189106e-02 + 3.46096179591e-02 4.00842207790e-02 4.86717503239e-02 5.87902882084e-02 6.56428313091e-02 6.56428313091e-02 + 5.18158087398e-02 4.11388919902e-02 3.39196724265e-02 2.97974895143e-02 2.70513354759e-02 2.61140936360e-02 + 2.75584598461e-02 3.04051143293e-02 3.31963581643e-02 3.49769025117e-02 3.55406204185e-02 3.49769025117e-02 + 3.31963581644e-02 3.04051143293e-02 2.75584598461e-02 2.61140936360e-02 2.70513354759e-02 2.97974895143e-02 + 3.39196724265e-02 4.11388919902e-02 5.18158087398e-02 6.17008685349e-02 6.56428313091e-02 6.17008685349e-02 + 3.48683159917e-02 3.03789244340e-02 2.69081613820e-02 2.54927185045e-02 2.69081613820e-02 3.03789244340e-02 + 3.48683159917e-02 3.97328533270e-02 4.36605690195e-02 4.51578187598e-02 4.36605690195e-02 3.97328533271e-02 + 3.48683159917e-02 3.03789244340e-02 2.69081613820e-02 2.54927185045e-02 2.69081613820e-02 3.03789244340e-02 + 3.48683159917e-02 3.97328533271e-02 4.36605690195e-02 4.51578187598e-02 4.36605690195e-02 3.97328533271e-02 + 3.03789244340e-02 2.65224863971e-02 2.45139707404e-02 2.52955690008e-02 2.81921950446e-02 3.31551669202e-02 + 4.15726567626e-02 5.18158087397e-02 5.87902882083e-02 5.87902882083e-02 5.18158087398e-02 4.15726567627e-02 + 3.31551669202e-02 2.81921950447e-02 2.52955690008e-02 2.45139707404e-02 2.65224863971e-02 3.03789244340e-02 + 3.48628450776e-02 3.89798518705e-02 4.14583134664e-02 4.14583134664e-02 3.89798518706e-02 3.48628450776e-02 + 2.69081613820e-02 2.45139707404e-02 2.44579386769e-02 2.61164989591e-02 3.05273339684e-02 4.23899857519e-02 + 6.13624406409e-02 7.81193802830e-02 8.44119137021e-02 7.81193802830e-02 6.13624406410e-02 4.23899857520e-02 + 3.05273339684e-02 2.61164989591e-02 2.44579386769e-02 2.45139707404e-02 2.69081613820e-02 3.06792139923e-02 + 3.45751625707e-02 3.75326171916e-02 3.86293456568e-02 3.75326171916e-02 3.45751625707e-02 3.06792139923e-02 + 2.54927185045e-02 2.52955690008e-02 2.61164989591e-02 2.92890570903e-02 4.26148361403e-02 6.87950359263e-02 + 9.46618817553e-02 1.07504612679e-01 1.07504612680e-01 9.46618817554e-02 6.87950359264e-02 4.26148361403e-02 + 2.92890570903e-02 2.61164989591e-02 2.52955690008e-02 2.54927185045e-02 2.74769895380e-02 3.04773481040e-02 + 3.33647463124e-02 3.51262182185e-02 3.51262182185e-02 3.33647463124e-02 3.04773481040e-02 2.74769895380e-02 + 2.69081613820e-02 2.81921950446e-02 3.05273339684e-02 4.26148361403e-02 7.14595557376e-02 1.02255317231e-01 + 1.14984029929e-01 1.15476799016e-01 1.14984029929e-01 1.02255317231e-01 7.14595557377e-02 4.26148361403e-02 + 3.05273339684e-02 2.81921950446e-02 2.69081613820e-02 2.62352804996e-02 2.71142998602e-02 2.89473471924e-02 + 3.06728014251e-02 3.13656133728e-02 3.06728014251e-02 2.89473471924e-02 2.71142998602e-02 2.62352804996e-02 + 3.03789244340e-02 3.31551669202e-02 4.23899857519e-02 6.87950359263e-02 1.02255317231e-01 1.14284409879e-01 + 1.05271425072e-01 1.05271425072e-01 1.14284409879e-01 1.02255317231e-01 6.87950359263e-02 4.23899857520e-02 + 3.31551669202e-02 3.03789244340e-02 2.75584598461e-02 2.55791633527e-02 2.52445347088e-02 2.59181147281e-02 + 2.65858530209e-02 2.65858530209e-02 2.59181147281e-02 2.52445347088e-02 2.55791633527e-02 2.75584598461e-02 + 3.48683159917e-02 4.15726567626e-02 6.13624406409e-02 9.46618817553e-02 1.14984029929e-01 1.05271425072e-01 + 9.35850333253e-02 1.05271425072e-01 1.14984029929e-01 9.46618817554e-02 6.13624406410e-02 4.15726567626e-02 + 3.48683159917e-02 3.06058831029e-02 2.62414819209e-02 2.33118163733e-02 2.21386056500e-02 2.19611077293e-02 + 2.19947599998e-02 2.19611077293e-02 2.21386056500e-02 2.33118163733e-02 2.62414819209e-02 3.06058831029e-02 + 3.97328533271e-02 5.18158087398e-02 7.81193802830e-02 1.07504612680e-01 1.15476799016e-01 1.05271425072e-01 + 1.05271425072e-01 1.15476799016e-01 1.07504612680e-01 7.81193802831e-02 5.18158087398e-02 3.97328533271e-02 + 3.38925854809e-02 2.81653274579e-02 2.31387869200e-02 1.99975947255e-02 1.85132763207e-02 1.79741436761e-02 + 1.79741436761e-02 1.85132763207e-02 1.99975947255e-02 2.31387869200e-02 2.81653274579e-02 3.38925854809e-02 + 4.36605690195e-02 5.87902882084e-02 8.44119137022e-02 1.07504612680e-01 1.14984029929e-01 1.14284409879e-01 + 1.14984029929e-01 1.07504612680e-01 8.44119137023e-02 5.87902882084e-02 4.36605690195e-02 3.62673468746e-02 + 2.99301385615e-02 2.37301976795e-02 1.91106081253e-02 1.63906429721e-02 1.50424663757e-02 1.46288647205e-02 + 1.50424663757e-02 1.63906429721e-02 1.91106081253e-02 2.37301976795e-02 2.99301385615e-02 3.62673468746e-02 + 4.51578187598e-02 5.87902882084e-02 7.81193802831e-02 9.46618817555e-02 1.02255317232e-01 1.02255317232e-01 + 9.46618817555e-02 7.81193802831e-02 5.87902882084e-02 4.51578187598e-02 3.73540502297e-02 3.07822057975e-02 + 2.40967233573e-02 1.86355176327e-02 1.50739196267e-02 1.30485807277e-02 1.21045128275e-02 1.21045128275e-02 + 1.30485807277e-02 1.50739196267e-02 1.86355176327e-02 2.40967233573e-02 3.07822057975e-02 3.73540502296e-02 + 4.36605690195e-02 5.18158087398e-02 6.13624406410e-02 6.87950359264e-02 7.14595557378e-02 6.87950359264e-02 + 6.13624406410e-02 5.18158087398e-02 4.36605690195e-02 3.73540502297e-02 3.09609358381e-02 2.40904203272e-02 + 1.81617046076e-02 1.40806383265e-02 1.16095381953e-02 1.02401100733e-02 9.78219490488e-03 1.02401100733e-02 + 1.16095381953e-02 1.40806383265e-02 1.81617046076e-02 2.40904203272e-02 3.09609358381e-02 3.73540502297e-02 + 3.97328533271e-02 4.15726567627e-02 4.23899857520e-02 4.26148361404e-02 4.26148361404e-02 4.23899857520e-02 + 4.15726567627e-02 3.97328533271e-02 3.62673468746e-02 3.07822057975e-02 2.40904203272e-02 1.79266526907e-02 + 1.34421324248e-02 1.06051613742e-02 8.89920278516e-03 8.04455907974e-03 8.04455907974e-03 8.89920278516e-03 + 1.06051613742e-02 1.34421324248e-02 1.79266526907e-02 2.40904203272e-02 3.07822057975e-02 3.62673468746e-02 + 3.48683159917e-02 3.31551669202e-02 3.05273339685e-02 2.92890570903e-02 3.05273339685e-02 3.31551669202e-02 + 3.48683159917e-02 3.38925854810e-02 2.99301385615e-02 2.40967233573e-02 1.81617046076e-02 1.34421324248e-02 + 1.02248872526e-02 8.15758815908e-03 6.92803651720e-03 6.50338402317e-03 6.92803651720e-03 8.15758815908e-03 + 1.02248872526e-02 1.34421324248e-02 1.81617046076e-02 2.40967233573e-02 2.99301385615e-02 3.38925854809e-02 + 3.03789244340e-02 2.81921950447e-02 2.61164989591e-02 2.61164989592e-02 2.81921950447e-02 3.03789244340e-02 + 3.06058831030e-02 2.81653274579e-02 2.37301976795e-02 1.86355176327e-02 1.40806383265e-02 1.06051613742e-02 + 8.15758815908e-03 6.53729803367e-03 5.69411798450e-03 5.69411798450e-03 6.53729803367e-03 8.15758815908e-03 + 1.06051613742e-02 1.40806383265e-02 1.86355176327e-02 2.37301976795e-02 2.81653274579e-02 3.06058831030e-02 + 2.69081613821e-02 2.52955690009e-02 2.44579386769e-02 2.52955690009e-02 2.69081613821e-02 2.75584598462e-02 + 2.62414819209e-02 2.31387869200e-02 1.91106081254e-02 1.50739196267e-02 1.16095381953e-02 8.89920278516e-03 + 6.92803651720e-03 5.69411798450e-03 5.26652136817e-03 5.69411798450e-03 6.92803651720e-03 8.89920278516e-03 + 1.16095381953e-02 1.50739196267e-02 1.91106081253e-02 2.31387869200e-02 2.62414819209e-02 2.75584598462e-02 + 2.54927185046e-02 2.45139707405e-02 2.45139707405e-02 2.54927185046e-02 2.62352804996e-02 2.55791633528e-02 + 2.33118163733e-02 1.99975947255e-02 1.63906429721e-02 1.30485807277e-02 1.02401100733e-02 8.04455907974e-03 + 6.50338402317e-03 5.69411798450e-03 5.69411798450e-03 6.50338402317e-03 8.04455907974e-03 1.02401100733e-02 + 1.30485807277e-02 1.63906429721e-02 1.99975947255e-02 2.33118163733e-02 2.55791633528e-02 2.62352804996e-02 + 2.69081613821e-02 2.65224863971e-02 2.69081613821e-02 2.74769895380e-02 2.71142998602e-02 2.52445347088e-02 + 2.21386056500e-02 1.85132763207e-02 1.50424663757e-02 1.21045128275e-02 9.78219490488e-03 8.04455907974e-03 + 6.92803651720e-03 6.53729803366e-03 6.92803651720e-03 8.04455907974e-03 9.78219490488e-03 1.21045128275e-02 + 1.50424663757e-02 1.85132763207e-02 2.21386056500e-02 2.52445347088e-02 2.71142998602e-02 2.74769895380e-02 + 3.03789244340e-02 3.03789244340e-02 3.06792139923e-02 3.04773481040e-02 2.89473471924e-02 2.59181147281e-02 + 2.19611077293e-02 1.79741436760e-02 1.46288647205e-02 1.21045128275e-02 1.02401100733e-02 8.89920278515e-03 + 8.15758815907e-03 8.15758815907e-03 8.89920278515e-03 1.02401100733e-02 1.21045128275e-02 1.46288647205e-02 + 1.79741436760e-02 2.19611077293e-02 2.59181147281e-02 2.89473471924e-02 3.04773481040e-02 3.06792139923e-02 + 3.48683159917e-02 3.48628450777e-02 3.45751625707e-02 3.33647463124e-02 3.06728014251e-02 2.65858530209e-02 + 2.19947599998e-02 1.79741436760e-02 1.50424663757e-02 1.30485807277e-02 1.16095381953e-02 1.06051613742e-02 + 1.02248872526e-02 1.06051613742e-02 1.16095381953e-02 1.30485807277e-02 1.50424663757e-02 1.79741436760e-02 + 2.19947599998e-02 2.65858530209e-02 3.06728014251e-02 3.33647463124e-02 3.45751625707e-02 3.48628450776e-02 + 3.97328533271e-02 3.89798518706e-02 3.75326171916e-02 3.51262182185e-02 3.13656133727e-02 2.65858530209e-02 + 2.19611077293e-02 1.85132763207e-02 1.63906429721e-02 1.50739196267e-02 1.40806383265e-02 1.34421324248e-02 + 1.34421324248e-02 1.40806383265e-02 1.50739196267e-02 1.63906429721e-02 1.85132763207e-02 2.19611077293e-02 + 2.65858530209e-02 3.13656133727e-02 3.51262182185e-02 3.75326171916e-02 3.89798518706e-02 3.97328533271e-02 + 4.36605690195e-02 4.14583134665e-02 3.86293456568e-02 3.51262182185e-02 3.06728014251e-02 2.59181147280e-02 + 2.21386056500e-02 1.99975947255e-02 1.91106081253e-02 1.86355176327e-02 1.81617046076e-02 1.79266526907e-02 + 1.81617046076e-02 1.86355176327e-02 1.91106081253e-02 1.99975947255e-02 2.21386056500e-02 2.59181147281e-02 + 3.06728014251e-02 3.51262182185e-02 3.86293456568e-02 4.14583134665e-02 4.36605690195e-02 4.45490987358e-02 + 4.51578187598e-02 4.14583134665e-02 3.75326171916e-02 3.33647463124e-02 2.89473471924e-02 2.52445347087e-02 + 2.33118163733e-02 2.31387869200e-02 2.37301976795e-02 2.40967233573e-02 2.40904203272e-02 2.40904203272e-02 + 2.40967233573e-02 2.37301976795e-02 2.31387869200e-02 2.33118163733e-02 2.52445347088e-02 2.89473471924e-02 + 3.33647463124e-02 3.75326171916e-02 4.14583134665e-02 4.51578187598e-02 4.76134439313e-02 4.76134439313e-02 + 4.36605690195e-02 3.89798518706e-02 3.45751625707e-02 3.04773481040e-02 2.71142998602e-02 2.55791633527e-02 + 2.62414819209e-02 2.81653274579e-02 2.99301385615e-02 3.07822057975e-02 3.09609358381e-02 3.07822057975e-02 + 2.99301385615e-02 2.81653274579e-02 2.62414819209e-02 2.55791633527e-02 2.71142998602e-02 3.04773481040e-02 + 3.45751625707e-02 3.89798518706e-02 4.36605690195e-02 4.76134439312e-02 4.91904413241e-02 4.76134439312e-02 + 3.97328533271e-02 3.48628450776e-02 3.06792139923e-02 2.74769895380e-02 2.62352804996e-02 2.75584598461e-02 + 3.06058831029e-02 3.38925854809e-02 3.62673468745e-02 3.73540502296e-02 3.73540502296e-02 3.62673468746e-02 + 3.38925854809e-02 3.06058831029e-02 2.75584598461e-02 2.62352804996e-02 2.74769895380e-02 3.06792139923e-02 + 3.48628450776e-02 3.97328533271e-02 4.45490987358e-02 4.76134439312e-02 4.76134439312e-02 4.45490987358e-02 + 3.06058831029e-02 2.75584598461e-02 2.62352804996e-02 2.74769895380e-02 3.06792139923e-02 3.48628450776e-02 + 3.97328533270e-02 4.45490987357e-02 4.76134439312e-02 4.76134439312e-02 4.45490987358e-02 3.97328533271e-02 + 3.48628450776e-02 3.06792139923e-02 2.74769895380e-02 2.62352804996e-02 2.75584598461e-02 3.06058831029e-02 + 3.38925854809e-02 3.62673468746e-02 3.73540502296e-02 3.73540502296e-02 3.62673468746e-02 3.38925854809e-02 + 2.75584598461e-02 2.61140936360e-02 2.70513354759e-02 2.97974895143e-02 3.39196724265e-02 4.11388919901e-02 + 5.18158087397e-02 6.17008685348e-02 6.56428313090e-02 6.17008685349e-02 5.18158087398e-02 4.11388919902e-02 + 3.39196724265e-02 2.97974895143e-02 2.70513354759e-02 2.61140936360e-02 2.75584598461e-02 3.04051143293e-02 + 3.31963581644e-02 3.49769025117e-02 3.55406204185e-02 3.49769025118e-02 3.31963581644e-02 3.04051143293e-02 + 2.62352804996e-02 2.70513354759e-02 2.92436594720e-02 3.26920605347e-02 4.15214050146e-02 5.87809730550e-02 + 7.81193802830e-02 8.97664201879e-02 8.97664201880e-02 7.81193802830e-02 5.87809730550e-02 4.15214050146e-02 + 3.26920605347e-02 2.92436594720e-02 2.70513354759e-02 2.62352804996e-02 2.73903662614e-02 2.95890354456e-02 + 3.16057035862e-02 3.27029610793e-02 3.27029610793e-02 3.16057035862e-02 2.95890354456e-02 2.73903662614e-02 + 2.74769895380e-02 2.97974895143e-02 3.26920605346e-02 4.15474983449e-02 6.30064198496e-02 9.00454509227e-02 + 1.07504612679e-01 1.12225405020e-01 1.07504612680e-01 9.00454509227e-02 6.30064198497e-02 4.15474983449e-02 + 3.26920605347e-02 2.97974895143e-02 2.74769895380e-02 2.61756575962e-02 2.65400648390e-02 2.78013937268e-02 + 2.89590113766e-02 2.93979324046e-02 2.89590113766e-02 2.78013937268e-02 2.65400648390e-02 2.61756575962e-02 + 3.06792139923e-02 3.39196724265e-02 4.15214050146e-02 6.30064198496e-02 9.40538638176e-02 1.13479602981e-01 + 1.15476799016e-01 1.15476799016e-01 1.13479602981e-01 9.40538638177e-02 6.30064198497e-02 4.15214050146e-02 + 3.39196724265e-02 3.06792139923e-02 2.73903662614e-02 2.51931467428e-02 2.46286629032e-02 2.49902463304e-02 + 2.54054430258e-02 2.54054430258e-02 2.49902463304e-02 2.46286629032e-02 2.51931467427e-02 2.73903662614e-02 + 3.48628450776e-02 4.11388919901e-02 5.87809730550e-02 9.00454509227e-02 1.13479602981e-01 1.12133375345e-01 + 1.05271425072e-01 1.12133375345e-01 1.13479602981e-01 9.00454509227e-02 5.87809730550e-02 4.11388919901e-02 + 3.48628450776e-02 3.04051143293e-02 2.59618688149e-02 2.30253665657e-02 2.17948830411e-02 2.15195877577e-02 + 2.15038028103e-02 2.15195877577e-02 2.17948830411e-02 2.30253665657e-02 2.59618688149e-02 3.04051143293e-02 + 3.97328533270e-02 5.18158087397e-02 7.81193802830e-02 1.07504612680e-01 1.15476799016e-01 1.05271425072e-01 + 1.05271425072e-01 1.15476799016e-01 1.07504612680e-01 7.81193802831e-02 5.18158087398e-02 3.97328533271e-02 + 3.38925854809e-02 2.81653274579e-02 2.31387869200e-02 1.99975947255e-02 1.85132763207e-02 1.79741436761e-02 + 1.79741436761e-02 1.85132763207e-02 1.99975947255e-02 2.31387869200e-02 2.81653274579e-02 3.38925854809e-02 + 4.45490987358e-02 6.17008685349e-02 8.97664201880e-02 1.12225405021e-01 1.15476799016e-01 1.12133375345e-01 + 1.15476799016e-01 1.12225405021e-01 8.97664201881e-02 6.17008685349e-02 4.45490987358e-02 3.66854482599e-02 + 3.04404777485e-02 2.42075414898e-02 1.94536795471e-02 1.66439398964e-02 1.52762540169e-02 1.48656767561e-02 + 1.52762540169e-02 1.66439398964e-02 1.94536795471e-02 2.42075414898e-02 3.04404777485e-02 3.66854482599e-02 + 4.76134439312e-02 6.56428313091e-02 8.97664201881e-02 1.07504612680e-01 1.13479602981e-01 1.13479602981e-01 + 1.07504612680e-01 8.97664201881e-02 6.56428313091e-02 4.76134439312e-02 3.82423088608e-02 3.17361436403e-02 + 2.51249889113e-02 1.94290489291e-02 1.55937378378e-02 1.34169388324e-02 1.24265880360e-02 1.24265880360e-02 + 1.34169388324e-02 1.55937378378e-02 1.94290489291e-02 2.51249889113e-02 3.17361436403e-02 3.82423088608e-02 + 4.76134439312e-02 6.17008685349e-02 7.81193802831e-02 9.00454509228e-02 9.40538638178e-02 9.00454509228e-02 + 7.81193802831e-02 6.17008685349e-02 4.76134439313e-02 3.86937384314e-02 3.20848019959e-02 2.53973709283e-02 + 1.92840317465e-02 1.48492046219e-02 1.21090534530e-02 1.06109348738e-02 1.01198499891e-02 1.06109348738e-02 + 1.21090534529e-02 1.48492046219e-02 1.92840317465e-02 2.53973709283e-02 3.20848019959e-02 3.86937384314e-02 + 4.45490987358e-02 5.18158087398e-02 5.87809730551e-02 6.30064198498e-02 6.30064198498e-02 5.87809730551e-02 + 5.18158087398e-02 4.45490987358e-02 3.82423088608e-02 3.20848019959e-02 2.53797374387e-02 1.90345757835e-02 + 1.42308801751e-02 1.11331987338e-02 9.28357359923e-03 8.37400390520e-03 8.37400390520e-03 9.28357359923e-03 + 1.11331987338e-02 1.42308801751e-02 1.90345757835e-02 2.53797374387e-02 3.20848019959e-02 3.82423088608e-02 + 3.97328533271e-02 4.11388919902e-02 4.15214050147e-02 4.15474983450e-02 4.15214050147e-02 4.11388919902e-02 + 3.97328533271e-02 3.66854482599e-02 3.17361436403e-02 2.53973709283e-02 1.90345757835e-02 1.39667079820e-02 + 1.05557815436e-02 8.41997198039e-03 7.17862759620e-03 6.75449318420e-03 7.17862759620e-03 8.41997198039e-03 + 1.05557815436e-02 1.39667079820e-02 1.90345757835e-02 2.53973709283e-02 3.17361436403e-02 3.66854482599e-02 + 3.48628450776e-02 3.39196724265e-02 3.26920605347e-02 3.26920605347e-02 3.39196724265e-02 3.48628450777e-02 + 3.38925854810e-02 3.04404777485e-02 2.51249889113e-02 1.92840317465e-02 1.42308801751e-02 1.05557815436e-02 + 8.11230157085e-03 6.56138198057e-03 5.76667312114e-03 5.76667312114e-03 6.56138198057e-03 8.11230157085e-03 + 1.05557815436e-02 1.42308801751e-02 1.92840317465e-02 2.51249889113e-02 3.04404777485e-02 3.38925854809e-02 + 3.06792139923e-02 2.97974895143e-02 2.92436594720e-02 2.97974895143e-02 3.06792139923e-02 3.04051143294e-02 + 2.81653274579e-02 2.42075414899e-02 1.94290489291e-02 1.48492046219e-02 1.11331987338e-02 8.41997198039e-03 + 6.56138198057e-03 5.43239778449e-03 5.04343778102e-03 5.43239778449e-03 6.56138198057e-03 8.41997198039e-03 + 1.11331987338e-02 1.48492046219e-02 1.94290489291e-02 2.42075414899e-02 2.81653274579e-02 3.04051143294e-02 + 2.74769895380e-02 2.70513354759e-02 2.70513354759e-02 2.74769895380e-02 2.73903662614e-02 2.59618688149e-02 + 2.31387869200e-02 1.94536795471e-02 1.55937378378e-02 1.21090534530e-02 9.28357359923e-03 7.17862759620e-03 + 5.76667312114e-03 5.04343778102e-03 5.04343778102e-03 5.76667312114e-03 7.17862759620e-03 9.28357359923e-03 + 1.21090534530e-02 1.55937378378e-02 1.94536795471e-02 2.31387869200e-02 2.59618688149e-02 2.73903662614e-02 + 2.62352804996e-02 2.61140936361e-02 2.62352804996e-02 2.61756575963e-02 2.51931467428e-02 2.30253665657e-02 + 1.99975947255e-02 1.66439398964e-02 1.34169388324e-02 1.06109348738e-02 8.37400390520e-03 6.75449318420e-03 + 5.76667312114e-03 5.43239778449e-03 5.76667312114e-03 6.75449318420e-03 8.37400390520e-03 1.06109348738e-02 + 1.34169388324e-02 1.66439398964e-02 1.99975947255e-02 2.30253665657e-02 2.51931467428e-02 2.61756575963e-02 + 2.75584598462e-02 2.75584598462e-02 2.73903662614e-02 2.65400648390e-02 2.46286629032e-02 2.17948830411e-02 + 1.85132763207e-02 1.52762540169e-02 1.24265880360e-02 1.01198499891e-02 8.37400390520e-03 7.17862759619e-03 + 6.56138198056e-03 6.56138198056e-03 7.17862759619e-03 8.37400390520e-03 1.01198499891e-02 1.24265880360e-02 + 1.52762540169e-02 1.85132763207e-02 2.17948830411e-02 2.46286629032e-02 2.65400648390e-02 2.73903662614e-02 + 3.06058831030e-02 3.04051143294e-02 2.95890354456e-02 2.78013937268e-02 2.49902463304e-02 2.15195877577e-02 + 1.79741436760e-02 1.48656767560e-02 1.24265880360e-02 1.06109348738e-02 9.28357359922e-03 8.41997198038e-03 + 8.11230157084e-03 8.41997198038e-03 9.28357359922e-03 1.06109348738e-02 1.24265880360e-02 1.48656767560e-02 + 1.79741436760e-02 2.15195877577e-02 2.49902463304e-02 2.78013937268e-02 2.95890354456e-02 3.04051143294e-02 + 3.38925854810e-02 3.31963581644e-02 3.16057035862e-02 2.89590113766e-02 2.54054430258e-02 2.15038028103e-02 + 1.79741436760e-02 1.52762540168e-02 1.34169388324e-02 1.21090534529e-02 1.11331987338e-02 1.05557815436e-02 + 1.05557815436e-02 1.11331987338e-02 1.21090534529e-02 1.34169388324e-02 1.52762540169e-02 1.79741436760e-02 + 2.15038028103e-02 2.54054430258e-02 2.89590113766e-02 3.16057035862e-02 3.31963581644e-02 3.38925854810e-02 + 3.62673468746e-02 3.49769025118e-02 3.27029610793e-02 2.93979324046e-02 2.54054430258e-02 2.15195877577e-02 + 1.85132763207e-02 1.66439398964e-02 1.55937378378e-02 1.48492046219e-02 1.42308801751e-02 1.39667079820e-02 + 1.42308801751e-02 1.48492046219e-02 1.55937378378e-02 1.66439398964e-02 1.85132763207e-02 2.15195877577e-02 + 2.54054430258e-02 2.93979324045e-02 3.27029610793e-02 3.49769025118e-02 3.62673468746e-02 3.66854482599e-02 + 3.73540502297e-02 3.55406204185e-02 3.27029610793e-02 2.89590113766e-02 2.49902463304e-02 2.17948830411e-02 + 1.99975947255e-02 1.94536795471e-02 1.94290489291e-02 1.92840317465e-02 1.90345757835e-02 1.90345757835e-02 + 1.92840317465e-02 1.94290489291e-02 1.94536795471e-02 1.99975947255e-02 2.17948830411e-02 2.49902463304e-02 + 2.89590113766e-02 3.27029610793e-02 3.55406204185e-02 3.73540502297e-02 3.82423088608e-02 3.82423088608e-02 + 3.73540502297e-02 3.49769025118e-02 3.16057035862e-02 2.78013937268e-02 2.46286629032e-02 2.30253665656e-02 + 2.31387869200e-02 2.42075414898e-02 2.51249889113e-02 2.53973709283e-02 2.53797374387e-02 2.53973709283e-02 + 2.51249889113e-02 2.42075414898e-02 2.31387869200e-02 2.30253665657e-02 2.46286629032e-02 2.78013937268e-02 + 3.16057035862e-02 3.49769025118e-02 3.73540502297e-02 3.86937384314e-02 3.91205047681e-02 3.86937384314e-02 + 3.62673468746e-02 3.31963581644e-02 2.95890354456e-02 2.65400648390e-02 2.51931467427e-02 2.59618688149e-02 + 2.81653274579e-02 3.04404777485e-02 3.17361436402e-02 3.20848019958e-02 3.20848019958e-02 3.17361436402e-02 + 3.04404777485e-02 2.81653274579e-02 2.59618688149e-02 2.51931467428e-02 2.65400648390e-02 2.95890354456e-02 + 3.31963581644e-02 3.62673468746e-02 3.82423088608e-02 3.91205047681e-02 3.91205047681e-02 3.82423088608e-02 + 3.38925854809e-02 3.04051143293e-02 2.73903662614e-02 2.61756575962e-02 2.73903662614e-02 3.04051143293e-02 + 3.38925854809e-02 3.66854482599e-02 3.82423088607e-02 3.86937384314e-02 3.82423088607e-02 3.66854482599e-02 + 3.38925854809e-02 3.04051143293e-02 2.73903662614e-02 2.61756575962e-02 2.73903662614e-02 3.04051143293e-02 + 3.38925854809e-02 3.66854482599e-02 3.82423088608e-02 3.86937384314e-02 3.82423088608e-02 3.66854482599e-02 + 2.62414819209e-02 2.55791633527e-02 2.71142998602e-02 3.04773481040e-02 3.45751625707e-02 3.89798518705e-02 + 4.36605690195e-02 4.76134439312e-02 4.91904413240e-02 4.76134439312e-02 4.36605690195e-02 3.89798518706e-02 + 3.45751625707e-02 3.04773481040e-02 2.71142998602e-02 2.55791633527e-02 2.62414819209e-02 2.81653274579e-02 + 2.99301385615e-02 3.07822057975e-02 3.09609358381e-02 3.07822057975e-02 2.99301385615e-02 2.81653274579e-02 + 2.55791633527e-02 2.72051400328e-02 3.05548189106e-02 3.46096179590e-02 4.00842207789e-02 4.86717503238e-02 + 5.87902882083e-02 6.56428313090e-02 6.56428313090e-02 5.87902882083e-02 4.86717503239e-02 4.00842207790e-02 + 3.46096179590e-02 3.05548189106e-02 2.72051400328e-02 2.55791633527e-02 2.59618688149e-02 2.73091501295e-02 + 2.84217494631e-02 2.88778389824e-02 2.88778389824e-02 2.84217494631e-02 2.73091501295e-02 2.59618688149e-02 + 2.71142998602e-02 3.05548189106e-02 3.44216532954e-02 4.03062291682e-02 5.24371687843e-02 6.98255714909e-02 + 8.44119137021e-02 8.97664201879e-02 8.44119137022e-02 6.98255714909e-02 5.24371687843e-02 4.03062291683e-02 + 3.44216532954e-02 3.05548189106e-02 2.71142998602e-02 2.51931467428e-02 2.49964037842e-02 2.55726183949e-02 + 2.60492747623e-02 2.61902387743e-02 2.60492747623e-02 2.55726183949e-02 2.49964037842e-02 2.51931467428e-02 + 3.04773481040e-02 3.46096179590e-02 4.03062291682e-02 5.38553081705e-02 7.65071402185e-02 9.74781930219e-02 + 1.07504612679e-01 1.07504612679e-01 9.74781930219e-02 7.65071402185e-02 5.38553081705e-02 4.03062291683e-02 + 3.46096179590e-02 3.04773481040e-02 2.65400648390e-02 2.40839675381e-02 2.32030440049e-02 2.30939042850e-02 + 2.31231583381e-02 2.31231583381e-02 2.30939042850e-02 2.32030440049e-02 2.40839675381e-02 2.65400648390e-02 + 3.45751625707e-02 4.00842207789e-02 5.24371687843e-02 7.65071402185e-02 1.01688733219e-01 1.13479602981e-01 + 1.14984029929e-01 1.13479602981e-01 1.01688733220e-01 7.65071402185e-02 5.24371687843e-02 4.00842207789e-02 + 3.45751625707e-02 2.95890354456e-02 2.49964037843e-02 2.20777720561e-02 2.07196781889e-02 2.02040886880e-02 + 2.00653973119e-02 2.02040886880e-02 2.07196781889e-02 2.20777720561e-02 2.49964037842e-02 2.95890354456e-02 + 3.89798518705e-02 4.86717503238e-02 6.98255714909e-02 9.74781930219e-02 1.13479602981e-01 1.14284409879e-01 + 1.14284409879e-01 1.13479602981e-01 9.74781930220e-02 6.98255714909e-02 4.86717503238e-02 3.89798518706e-02 + 3.31963581644e-02 2.73091501295e-02 2.24043982374e-02 1.93871115228e-02 1.78888288560e-02 1.72812015630e-02 + 1.72812015630e-02 1.78888288560e-02 1.93871115228e-02 2.24043982374e-02 2.73091501295e-02 3.31963581644e-02 + 4.36605690195e-02 5.87902882083e-02 8.44119137021e-02 1.07504612680e-01 1.14984029929e-01 1.14284409879e-01 + 1.14984029929e-01 1.07504612680e-01 8.44119137022e-02 5.87902882083e-02 4.36605690195e-02 3.62673468746e-02 + 2.99301385615e-02 2.37301976795e-02 1.91106081253e-02 1.63906429721e-02 1.50424663757e-02 1.46288647205e-02 + 1.50424663757e-02 1.63906429721e-02 1.91106081253e-02 2.37301976795e-02 2.99301385615e-02 3.62673468746e-02 + 4.76134439312e-02 6.56428313091e-02 8.97664201880e-02 1.07504612680e-01 1.13479602981e-01 1.13479602981e-01 + 1.07504612680e-01 8.97664201881e-02 6.56428313091e-02 4.76134439312e-02 3.82423088608e-02 3.17361436403e-02 + 2.51249889113e-02 1.94290489291e-02 1.55937378378e-02 1.34169388324e-02 1.24265880360e-02 1.24265880360e-02 + 1.34169388324e-02 1.55937378378e-02 1.94290489291e-02 2.51249889113e-02 3.17361436403e-02 3.82423088608e-02 + 4.91904413241e-02 6.56428313091e-02 8.44119137022e-02 9.74781930220e-02 1.01688733220e-01 9.74781930220e-02 + 8.44119137022e-02 6.56428313091e-02 4.91904413241e-02 3.91205047681e-02 3.24128421387e-02 2.58521940319e-02 + 1.97044449599e-02 1.51354763629e-02 1.22800512627e-02 1.07225418333e-02 1.02153626600e-02 1.07225418333e-02 + 1.22800512627e-02 1.51354763629e-02 1.97044449599e-02 2.58521940319e-02 3.24128421387e-02 3.91205047681e-02 + 4.76134439312e-02 5.87902882084e-02 6.98255714910e-02 7.65071402186e-02 7.65071402186e-02 6.98255714910e-02 + 5.87902882084e-02 4.76134439313e-02 3.91205047681e-02 3.25042138914e-02 2.59777844449e-02 1.96802339930e-02 + 1.47279181689e-02 1.14481144732e-02 9.47290433111e-03 8.50665152157e-03 8.50665152157e-03 9.47290433111e-03 + 1.14481144732e-02 1.47279181688e-02 1.96802339930e-02 2.59777844449e-02 3.25042138914e-02 3.91205047681e-02 + 4.36605690195e-02 4.86717503239e-02 5.24371687844e-02 5.38553081706e-02 5.24371687844e-02 4.86717503239e-02 + 4.36605690195e-02 3.82423088608e-02 3.24128421387e-02 2.59777844449e-02 1.96031535283e-02 1.44210111226e-02 + 1.08699825973e-02 8.62540500906e-03 7.31933010297e-03 6.87426464911e-03 7.31933010297e-03 8.62540500906e-03 + 1.08699825973e-02 1.44210111226e-02 1.96031535282e-02 2.59777844449e-02 3.24128421387e-02 3.82423088608e-02 + 3.89798518706e-02 4.00842207790e-02 4.03062291683e-02 4.03062291683e-02 4.00842207790e-02 3.89798518706e-02 + 3.62673468746e-02 3.17361436403e-02 2.58521940319e-02 1.96802339930e-02 1.44210111226e-02 1.06518186545e-02 + 8.18383164207e-03 6.62684043802e-03 5.82746138702e-03 5.82746138702e-03 6.62684043802e-03 8.18383164206e-03 + 1.06518186545e-02 1.44210111226e-02 1.96802339930e-02 2.58521940319e-02 3.17361436403e-02 3.62673468746e-02 + 3.45751625707e-02 3.46096179591e-02 3.44216532954e-02 3.46096179591e-02 3.45751625707e-02 3.31963581644e-02 + 2.99301385615e-02 2.51249889113e-02 1.97044449599e-02 1.47279181689e-02 1.08699825973e-02 8.18383164207e-03 + 6.39967919814e-03 5.32068131556e-03 4.94632325183e-03 5.32068131556e-03 6.39967919814e-03 8.18383164206e-03 + 1.08699825973e-02 1.47279181689e-02 1.97044449599e-02 2.51249889113e-02 2.99301385615e-02 3.31963581644e-02 + 3.04773481040e-02 3.05548189106e-02 3.05548189106e-02 3.04773481040e-02 2.95890354456e-02 2.73091501295e-02 + 2.37301976795e-02 1.94290489291e-02 1.51354763629e-02 1.14481144732e-02 8.62540500906e-03 6.62684043802e-03 + 5.32068131556e-03 4.65175947716e-03 4.65175947716e-03 5.32068131556e-03 6.62684043802e-03 8.62540500906e-03 + 1.14481144732e-02 1.51354763629e-02 1.94290489291e-02 2.37301976795e-02 2.73091501295e-02 2.95890354456e-02 + 2.71142998602e-02 2.72051400328e-02 2.71142998602e-02 2.65400648390e-02 2.49964037843e-02 2.24043982374e-02 + 1.91106081254e-02 1.55937378378e-02 1.22800512627e-02 9.47290433111e-03 7.31933010297e-03 5.82746138702e-03 + 4.94632325183e-03 4.65175947716e-03 4.94632325183e-03 5.82746138702e-03 7.31933010297e-03 9.47290433111e-03 + 1.22800512627e-02 1.55937378378e-02 1.91106081253e-02 2.24043982374e-02 2.49964037843e-02 2.65400648390e-02 + 2.55791633528e-02 2.55791633528e-02 2.51931467428e-02 2.40839675381e-02 2.20777720561e-02 1.93871115228e-02 + 1.63906429721e-02 1.34169388324e-02 1.07225418333e-02 8.50665152157e-03 6.87426464911e-03 5.82746138702e-03 + 5.32068131556e-03 5.32068131556e-03 5.82746138702e-03 6.87426464911e-03 8.50665152157e-03 1.07225418333e-02 + 1.34169388324e-02 1.63906429721e-02 1.93871115228e-02 2.20777720561e-02 2.40839675381e-02 2.51931467428e-02 + 2.62414819209e-02 2.59618688149e-02 2.49964037843e-02 2.32030440049e-02 2.07196781889e-02 1.78888288560e-02 + 1.50424663757e-02 1.24265880360e-02 1.02153626600e-02 8.50665152157e-03 7.31933010296e-03 6.62684043801e-03 + 6.39967919814e-03 6.62684043801e-03 7.31933010296e-03 8.50665152157e-03 1.02153626600e-02 1.24265880360e-02 + 1.50424663757e-02 1.78888288560e-02 2.07196781889e-02 2.32030440049e-02 2.49964037843e-02 2.59618688149e-02 + 2.81653274579e-02 2.73091501295e-02 2.55726183949e-02 2.30939042850e-02 2.02040886880e-02 1.72812015630e-02 + 1.46288647205e-02 1.24265880360e-02 1.07225418333e-02 9.47290433110e-03 8.62540500905e-03 8.18383164206e-03 + 8.18383164206e-03 8.62540500905e-03 9.47290433110e-03 1.07225418333e-02 1.24265880360e-02 1.46288647205e-02 + 1.72812015630e-02 2.02040886880e-02 2.30939042849e-02 2.55726183949e-02 2.73091501295e-02 2.81653274579e-02 + 2.99301385615e-02 2.84217494631e-02 2.60492747623e-02 2.31231583381e-02 2.00653973118e-02 1.72812015630e-02 + 1.50424663757e-02 1.34169388324e-02 1.22800512627e-02 1.14481144732e-02 1.08699825973e-02 1.06518186545e-02 + 1.08699825973e-02 1.14481144732e-02 1.22800512627e-02 1.34169388324e-02 1.50424663757e-02 1.72812015630e-02 + 2.00653973118e-02 2.31231583381e-02 2.60492747623e-02 2.84217494631e-02 2.99301385615e-02 3.04404777485e-02 + 3.07822057975e-02 2.88778389824e-02 2.61902387743e-02 2.31231583381e-02 2.02040886880e-02 1.78888288560e-02 + 1.63906429721e-02 1.55937378378e-02 1.51354763629e-02 1.47279181688e-02 1.44210111226e-02 1.44210111226e-02 + 1.47279181688e-02 1.51354763629e-02 1.55937378378e-02 1.63906429721e-02 1.78888288560e-02 2.02040886880e-02 + 2.31231583381e-02 2.61902387743e-02 2.88778389824e-02 3.07822057975e-02 3.17361436403e-02 3.17361436403e-02 + 3.09609358381e-02 2.88778389824e-02 2.60492747623e-02 2.30939042849e-02 2.07196781889e-02 1.93871115227e-02 + 1.91106081253e-02 1.94290489291e-02 1.97044449599e-02 1.96802339929e-02 1.96031535282e-02 1.96802339930e-02 + 1.97044449599e-02 1.94290489291e-02 1.91106081253e-02 1.93871115228e-02 2.07196781889e-02 2.30939042849e-02 + 2.60492747622e-02 2.88778389824e-02 3.09609358381e-02 3.20848019959e-02 3.24128421387e-02 3.20848019959e-02 + 3.07822057975e-02 2.84217494631e-02 2.55726183949e-02 2.32030440049e-02 2.20777720560e-02 2.24043982374e-02 + 2.37301976795e-02 2.51249889113e-02 2.58521940319e-02 2.59777844449e-02 2.59777844449e-02 2.58521940319e-02 + 2.51249889113e-02 2.37301976795e-02 2.24043982374e-02 2.20777720561e-02 2.32030440049e-02 2.55726183949e-02 + 2.84217494631e-02 3.07822057975e-02 3.20848019959e-02 3.25042138914e-02 3.25042138914e-02 3.20848019959e-02 + 2.99301385615e-02 2.73091501295e-02 2.49964037842e-02 2.40839675381e-02 2.49964037842e-02 2.73091501295e-02 + 2.99301385615e-02 3.17361436402e-02 3.24128421387e-02 3.25042138914e-02 3.24128421387e-02 3.17361436402e-02 + 2.99301385615e-02 2.73091501295e-02 2.49964037842e-02 2.40839675381e-02 2.49964037842e-02 2.73091501295e-02 + 2.99301385615e-02 3.17361436402e-02 3.24128421387e-02 3.25042138914e-02 3.24128421387e-02 3.17361436403e-02 + 2.81653274579e-02 2.59618688149e-02 2.51931467427e-02 2.65400648390e-02 2.95890354456e-02 3.31963581643e-02 + 3.62673468745e-02 3.82423088607e-02 3.91205047681e-02 3.91205047681e-02 3.82423088608e-02 3.62673468746e-02 + 3.31963581644e-02 2.95890354456e-02 2.65400648390e-02 2.51931467428e-02 2.59618688149e-02 2.81653274579e-02 + 3.04404777485e-02 3.17361436402e-02 3.20848019959e-02 3.20848019959e-02 3.17361436403e-02 3.04404777485e-02 + 2.33118163733e-02 2.52445347088e-02 2.89473471924e-02 3.33647463123e-02 3.75326171916e-02 4.14583134664e-02 + 4.51578187598e-02 4.76134439312e-02 4.76134439312e-02 4.51578187598e-02 4.14583134664e-02 3.75326171916e-02 + 3.33647463123e-02 2.89473471924e-02 2.52445347088e-02 2.33118163733e-02 2.31387869200e-02 2.37301976795e-02 + 2.40967233573e-02 2.40904203272e-02 2.40904203272e-02 2.40967233573e-02 2.37301976795e-02 2.31387869200e-02 + 2.52445347088e-02 2.92643382604e-02 3.39942859271e-02 3.86294987685e-02 4.42637285519e-02 5.17382028008e-02 + 5.87902882083e-02 6.17008685348e-02 5.87902882083e-02 5.17382028008e-02 4.42637285519e-02 3.86294987685e-02 + 3.39942859271e-02 2.92643382604e-02 2.52445347088e-02 2.30253665657e-02 2.24043982374e-02 2.23752455712e-02 + 2.22713307355e-02 2.21709602700e-02 2.22713307355e-02 2.23752455712e-02 2.24043982374e-02 2.30253665657e-02 + 2.89473471924e-02 3.39942859271e-02 3.88811262511e-02 4.56987320892e-02 5.69437593911e-02 6.98255714909e-02 + 7.81193802830e-02 7.81193802830e-02 6.98255714909e-02 5.69437593911e-02 4.56987320892e-02 3.88811262511e-02 + 3.39942859271e-02 2.89473471924e-02 2.46286629032e-02 2.20777720561e-02 2.09446754967e-02 2.03920879638e-02 + 2.00583037371e-02 2.00583037371e-02 2.03920879638e-02 2.09446754967e-02 2.20777720561e-02 2.46286629032e-02 + 3.33647463123e-02 3.86294987685e-02 4.56987320892e-02 5.89461275928e-02 7.65071402184e-02 9.00454509226e-02 + 9.46618817553e-02 9.00454509227e-02 7.65071402185e-02 5.89461275929e-02 4.56987320892e-02 3.86294987685e-02 + 3.33647463124e-02 2.78013937268e-02 2.32030440049e-02 2.03983415996e-02 1.89263764236e-02 1.81430425204e-02 + 1.78657504093e-02 1.81430425204e-02 1.89263764236e-02 2.03983415996e-02 2.32030440049e-02 2.78013937268e-02 + 3.75326171916e-02 4.42637285519e-02 5.69437593911e-02 7.65071402184e-02 9.40538638176e-02 1.02255317231e-01 + 1.02255317231e-01 9.40538638177e-02 7.65071402185e-02 5.69437593911e-02 4.42637285519e-02 3.75326171916e-02 + 3.16057035862e-02 2.55726183949e-02 2.09446754967e-02 1.81502966987e-02 1.66389339973e-02 1.59287126341e-02 + 1.59287126341e-02 1.66389339974e-02 1.81502966987e-02 2.09446754967e-02 2.55726183949e-02 3.16057035862e-02 + 4.14583134664e-02 5.17382028008e-02 6.98255714909e-02 9.00454509227e-02 1.02255317231e-01 1.05382836884e-01 + 1.02255317231e-01 9.00454509227e-02 6.98255714909e-02 5.17382028009e-02 4.14583134664e-02 3.49769025118e-02 + 2.84217494631e-02 2.23752455712e-02 1.81179302207e-02 1.56224022211e-02 1.43188164440e-02 1.38961516945e-02 + 1.43188164440e-02 1.56224022211e-02 1.81179302207e-02 2.23752455712e-02 2.84217494631e-02 3.49769025117e-02 + 4.51578187598e-02 5.87902882083e-02 7.81193802830e-02 9.46618817553e-02 1.02255317231e-01 1.02255317231e-01 + 9.46618817554e-02 7.81193802830e-02 5.87902882083e-02 4.51578187598e-02 3.73540502297e-02 3.07822057975e-02 + 2.40967233573e-02 1.86355176327e-02 1.50739196267e-02 1.30485807277e-02 1.21045128275e-02 1.21045128275e-02 + 1.30485807277e-02 1.50739196267e-02 1.86355176327e-02 2.40967233573e-02 3.07822057975e-02 3.73540502296e-02 + 4.76134439312e-02 6.17008685349e-02 7.81193802831e-02 9.00454509227e-02 9.40538638177e-02 9.00454509227e-02 + 7.81193802831e-02 6.17008685349e-02 4.76134439312e-02 3.86937384314e-02 3.20848019959e-02 2.53973709283e-02 + 1.92840317465e-02 1.48492046219e-02 1.21090534529e-02 1.06109348738e-02 1.01198499891e-02 1.06109348738e-02 + 1.21090534529e-02 1.48492046219e-02 1.92840317465e-02 2.53973709283e-02 3.20848019959e-02 3.86937384314e-02 + 4.76134439312e-02 5.87902882084e-02 6.98255714910e-02 7.65071402186e-02 7.65071402186e-02 6.98255714910e-02 + 5.87902882084e-02 4.76134439312e-02 3.91205047681e-02 3.25042138914e-02 2.59777844449e-02 1.96802339930e-02 + 1.47279181688e-02 1.14481144732e-02 9.47290433111e-03 8.50665152157e-03 8.50665152157e-03 9.47290433111e-03 + 1.14481144732e-02 1.47279181688e-02 1.96802339930e-02 2.59777844449e-02 3.25042138914e-02 3.91205047681e-02 + 4.51578187598e-02 5.17382028009e-02 5.69437593912e-02 5.89461275929e-02 5.69437593912e-02 5.17382028009e-02 + 4.51578187598e-02 3.86937384314e-02 3.25042138914e-02 2.60947919991e-02 1.97871610956e-02 1.45986463266e-02 + 1.09990704821e-02 8.70256016587e-03 7.36052161959e-03 6.90308343843e-03 7.36052161959e-03 8.70256016587e-03 + 1.09990704821e-02 1.45986463266e-02 1.97871610956e-02 2.60947919991e-02 3.25042138914e-02 3.86937384314e-02 + 4.14583134665e-02 4.42637285519e-02 4.56987320893e-02 4.56987320893e-02 4.42637285519e-02 4.14583134665e-02 + 3.73540502297e-02 3.20848019959e-02 2.59777844449e-02 1.97871610956e-02 1.45320680305e-02 1.07546834176e-02 + 8.26409670066e-03 6.67439308889e-03 5.85076317272e-03 5.85076317272e-03 6.67439308889e-03 8.26409670065e-03 + 1.07546834176e-02 1.45320680305e-02 1.97871610956e-02 2.59777844449e-02 3.20848019959e-02 3.73540502297e-02 + 3.75326171916e-02 3.86294987685e-02 3.88811262512e-02 3.86294987685e-02 3.75326171917e-02 3.49769025118e-02 + 3.07822057975e-02 2.53973709283e-02 1.96802339930e-02 1.45986463266e-02 1.07546834176e-02 8.12161313175e-03 + 6.36714430780e-03 5.28636096575e-03 4.90588959931e-03 5.28636096575e-03 6.36714430780e-03 8.12161313175e-03 + 1.07546834176e-02 1.45986463266e-02 1.96802339930e-02 2.53973709283e-02 3.07822057975e-02 3.49769025118e-02 + 3.33647463124e-02 3.39942859272e-02 3.39942859272e-02 3.33647463124e-02 3.16057035862e-02 2.84217494631e-02 + 2.40967233573e-02 1.92840317465e-02 1.47279181689e-02 1.09990704821e-02 8.26409670066e-03 6.36714430780e-03 + 5.11303460195e-03 4.45367296569e-03 4.45367296569e-03 5.11303460195e-03 6.36714430780e-03 8.26409670065e-03 + 1.09990704821e-02 1.47279181689e-02 1.92840317465e-02 2.40967233573e-02 2.84217494631e-02 3.16057035862e-02 + 2.89473471924e-02 2.92643382604e-02 2.89473471924e-02 2.78013937268e-02 2.55726183949e-02 2.23752455712e-02 + 1.86355176327e-02 1.48492046219e-02 1.14481144732e-02 8.70256016587e-03 6.67439308889e-03 5.28636096575e-03 + 4.45367296569e-03 4.16945913194e-03 4.45367296569e-03 5.28636096575e-03 6.67439308889e-03 8.70256016587e-03 + 1.14481144732e-02 1.48492046219e-02 1.86355176327e-02 2.23752455712e-02 2.55726183949e-02 2.78013937268e-02 + 2.52445347088e-02 2.52445347088e-02 2.46286629032e-02 2.32030440050e-02 2.09446754967e-02 1.81179302207e-02 + 1.50739196267e-02 1.21090534530e-02 9.47290433111e-03 7.36052161959e-03 5.85076317272e-03 4.90588959931e-03 + 4.45367296569e-03 4.45367296569e-03 4.90588959931e-03 5.85076317272e-03 7.36052161959e-03 9.47290433111e-03 + 1.21090534529e-02 1.50739196267e-02 1.81179302207e-02 2.09446754967e-02 2.32030440049e-02 2.46286629032e-02 + 2.33118163733e-02 2.30253665657e-02 2.20777720561e-02 2.03983415996e-02 1.81502966987e-02 1.56224022211e-02 + 1.30485807277e-02 1.06109348738e-02 8.50665152157e-03 6.90308343843e-03 5.85076317272e-03 5.28636096575e-03 + 5.11303460195e-03 5.28636096575e-03 5.85076317272e-03 6.90308343843e-03 8.50665152157e-03 1.06109348738e-02 + 1.30485807277e-02 1.56224022211e-02 1.81502966987e-02 2.03983415996e-02 2.20777720561e-02 2.30253665657e-02 + 2.31387869200e-02 2.24043982374e-02 2.09446754967e-02 1.89263764236e-02 1.66389339973e-02 1.43188164440e-02 + 1.21045128275e-02 1.01198499891e-02 8.50665152157e-03 7.36052161958e-03 6.67439308888e-03 6.36714430779e-03 + 6.36714430779e-03 6.67439308888e-03 7.36052161958e-03 8.50665152156e-03 1.01198499891e-02 1.21045128275e-02 + 1.43188164440e-02 1.66389339973e-02 1.89263764236e-02 2.09446754967e-02 2.24043982374e-02 2.31387869200e-02 + 2.37301976795e-02 2.23752455712e-02 2.03920879638e-02 1.81430425204e-02 1.59287126341e-02 1.38961516944e-02 + 1.21045128275e-02 1.06109348738e-02 9.47290433110e-03 8.70256016586e-03 8.26409670065e-03 8.12161313174e-03 + 8.26409670065e-03 8.70256016586e-03 9.47290433110e-03 1.06109348738e-02 1.21045128275e-02 1.38961516944e-02 + 1.59287126341e-02 1.81430425204e-02 2.03920879638e-02 2.23752455712e-02 2.37301976795e-02 2.42075414899e-02 + 2.40967233573e-02 2.22713307355e-02 2.00583037371e-02 1.78657504093e-02 1.59287126341e-02 1.43188164440e-02 + 1.30485807277e-02 1.21090534529e-02 1.14481144732e-02 1.09990704821e-02 1.07546834176e-02 1.07546834176e-02 + 1.09990704821e-02 1.14481144732e-02 1.21090534529e-02 1.30485807277e-02 1.43188164440e-02 1.59287126341e-02 + 1.78657504093e-02 2.00583037371e-02 2.22713307355e-02 2.40967233573e-02 2.51249889113e-02 2.51249889113e-02 + 2.40904203272e-02 2.21709602700e-02 2.00583037371e-02 1.81430425204e-02 1.66389339973e-02 1.56224022211e-02 + 1.50739196267e-02 1.48492046219e-02 1.47279181688e-02 1.45986463266e-02 1.45320680305e-02 1.45986463266e-02 + 1.47279181688e-02 1.48492046219e-02 1.50739196267e-02 1.56224022211e-02 1.66389339973e-02 1.81430425204e-02 + 2.00583037371e-02 2.21709602700e-02 2.40904203272e-02 2.53973709283e-02 2.58521940319e-02 2.53973709283e-02 + 2.40904203272e-02 2.22713307355e-02 2.03920879638e-02 1.89263764236e-02 1.81502966987e-02 1.81179302207e-02 + 1.86355176327e-02 1.92840317465e-02 1.96802339929e-02 1.97871610956e-02 1.97871610956e-02 1.96802339930e-02 + 1.92840317465e-02 1.86355176327e-02 1.81179302207e-02 1.81502966987e-02 1.89263764236e-02 2.03920879638e-02 + 2.22713307355e-02 2.40904203272e-02 2.53797374387e-02 2.59777844449e-02 2.59777844449e-02 2.53797374387e-02 + 2.40967233573e-02 2.23752455712e-02 2.09446754967e-02 2.03983415996e-02 2.09446754967e-02 2.23752455712e-02 + 2.40967233573e-02 2.53973709283e-02 2.59777844449e-02 2.60947919991e-02 2.59777844449e-02 2.53973709283e-02 + 2.40967233573e-02 2.23752455712e-02 2.09446754967e-02 2.03983415996e-02 2.09446754967e-02 2.23752455712e-02 + 2.40967233573e-02 2.53973709283e-02 2.59777844449e-02 2.60947919991e-02 2.59777844449e-02 2.53973709283e-02 + 2.37301976795e-02 2.24043982374e-02 2.20777720561e-02 2.32030440049e-02 2.55726183949e-02 2.84217494631e-02 + 3.07822057975e-02 3.20848019958e-02 3.25042138914e-02 3.25042138914e-02 3.20848019958e-02 3.07822057975e-02 + 2.84217494631e-02 2.55726183949e-02 2.32030440049e-02 2.20777720561e-02 2.24043982374e-02 2.37301976795e-02 + 2.51249889113e-02 2.58521940319e-02 2.59777844449e-02 2.59777844449e-02 2.58521940319e-02 2.51249889113e-02 + 2.31387869200e-02 2.30253665656e-02 2.46286629032e-02 2.78013937268e-02 3.16057035862e-02 3.49769025117e-02 + 3.73540502296e-02 3.86937384314e-02 3.91205047681e-02 3.86937384314e-02 3.73540502296e-02 3.49769025117e-02 + 3.16057035862e-02 2.78013937268e-02 2.46286629032e-02 2.30253665656e-02 2.31387869200e-02 2.42075414898e-02 + 2.51249889113e-02 2.53973709283e-02 2.53797374387e-02 2.53973709283e-02 2.51249889113e-02 2.42075414898e-02 + 2.21386056500e-02 2.59181147281e-02 3.06728014251e-02 3.51262182184e-02 3.86293456568e-02 4.14583134664e-02 + 4.36605690195e-02 4.45490987357e-02 4.36605690195e-02 4.14583134664e-02 3.86293456568e-02 3.51262182184e-02 + 3.06728014251e-02 2.59181147281e-02 2.21386056500e-02 1.99975947255e-02 1.91106081253e-02 1.86355176327e-02 + 1.81617046076e-02 1.79266526907e-02 1.81617046076e-02 1.86355176327e-02 1.91106081253e-02 1.99975947255e-02 + 2.59181147281e-02 3.12134113093e-02 3.61935553818e-02 4.02266025417e-02 4.42637285519e-02 4.86717503238e-02 + 5.18158087397e-02 5.18158087397e-02 4.86717503238e-02 4.42637285519e-02 4.02266025417e-02 3.61935553818e-02 + 3.12134113093e-02 2.59181147281e-02 2.17948830411e-02 1.93871115228e-02 1.81179302207e-02 1.72611853896e-02 + 1.66950035376e-02 1.66950035376e-02 1.72611853896e-02 1.81179302207e-02 1.93871115228e-02 2.17948830411e-02 + 3.06728014251e-02 3.61935553818e-02 4.06883718959e-02 4.56987320892e-02 5.24371687843e-02 5.87809730549e-02 + 6.13624406409e-02 5.87809730550e-02 5.24371687843e-02 4.56987320892e-02 4.06883718959e-02 3.61935553818e-02 + 3.06728014251e-02 2.49902463304e-02 2.07196781889e-02 1.81502966987e-02 1.66276099946e-02 1.56489970468e-02 + 1.52718999852e-02 1.56489970468e-02 1.66276099946e-02 1.81502966987e-02 2.07196781889e-02 2.49902463304e-02 + 3.51262182184e-02 4.02266025417e-02 4.56987320892e-02 5.38553081705e-02 6.30064198496e-02 6.87950359263e-02 + 6.87950359263e-02 6.30064198496e-02 5.38553081705e-02 4.56987320892e-02 4.02266025417e-02 3.51262182185e-02 + 2.89590113766e-02 2.30939042849e-02 1.89263764236e-02 1.64062528191e-02 1.48932100517e-02 1.40901390285e-02 + 1.40901390285e-02 1.48932100517e-02 1.64062528191e-02 1.89263764236e-02 2.30939042849e-02 2.89590113766e-02 + 3.86293456568e-02 4.42637285519e-02 5.24371687843e-02 6.30064198496e-02 7.14595557376e-02 7.44578962493e-02 + 7.14595557376e-02 6.30064198496e-02 5.24371687843e-02 4.42637285519e-02 3.86293456568e-02 3.27029610793e-02 + 2.60492747623e-02 2.03920879638e-02 1.66276099946e-02 1.43894839458e-02 1.31234388541e-02 1.26855285494e-02 + 1.31234388541e-02 1.43894839458e-02 1.66276099946e-02 2.03920879638e-02 2.60492747623e-02 3.27029610793e-02 + 4.14583134664e-02 4.86717503238e-02 5.87809730550e-02 6.87950359263e-02 7.44578962493e-02 7.44578962493e-02 + 6.87950359263e-02 5.87809730550e-02 4.86717503238e-02 4.14583134664e-02 3.55406204185e-02 2.88778389824e-02 + 2.22713307355e-02 1.72611853896e-02 1.41149739580e-02 1.22934163580e-02 1.14031750108e-02 1.14031750108e-02 + 1.22934163580e-02 1.41149739580e-02 1.72611853896e-02 2.22713307355e-02 2.88778389824e-02 3.55406204185e-02 + 4.36605690195e-02 5.18158087397e-02 6.13624406409e-02 6.87950359263e-02 7.14595557376e-02 6.87950359263e-02 + 6.13624406409e-02 5.18158087398e-02 4.36605690195e-02 3.73540502297e-02 3.09609358381e-02 2.40904203272e-02 + 1.81617046076e-02 1.40806383265e-02 1.16095381953e-02 1.02401100733e-02 9.78219490488e-03 1.02401100733e-02 + 1.16095381953e-02 1.40806383265e-02 1.81617046076e-02 2.40904203272e-02 3.09609358381e-02 3.73540502296e-02 + 4.45490987358e-02 5.18158087398e-02 5.87809730550e-02 6.30064198497e-02 6.30064198497e-02 5.87809730550e-02 + 5.18158087398e-02 4.45490987358e-02 3.82423088608e-02 3.20848019959e-02 2.53797374387e-02 1.90345757835e-02 + 1.42308801751e-02 1.11331987338e-02 9.28357359923e-03 8.37400390520e-03 8.37400390520e-03 9.28357359923e-03 + 1.11331987338e-02 1.42308801751e-02 1.90345757835e-02 2.53797374387e-02 3.20848019959e-02 3.82423088608e-02 + 4.36605690195e-02 4.86717503239e-02 5.24371687844e-02 5.38553081705e-02 5.24371687844e-02 4.86717503239e-02 + 4.36605690195e-02 3.82423088608e-02 3.24128421387e-02 2.59777844449e-02 1.96031535282e-02 1.44210111226e-02 + 1.08699825973e-02 8.62540500906e-03 7.31933010296e-03 6.87426464911e-03 7.31933010296e-03 8.62540500906e-03 + 1.08699825973e-02 1.44210111226e-02 1.96031535282e-02 2.59777844449e-02 3.24128421387e-02 3.82423088608e-02 + 4.14583134665e-02 4.42637285519e-02 4.56987320892e-02 4.56987320892e-02 4.42637285519e-02 4.14583134665e-02 + 3.73540502297e-02 3.20848019959e-02 2.59777844449e-02 1.97871610956e-02 1.45320680305e-02 1.07546834176e-02 + 8.26409670065e-03 6.67439308889e-03 5.85076317272e-03 5.85076317272e-03 6.67439308889e-03 8.26409670065e-03 + 1.07546834176e-02 1.45320680305e-02 1.97871610956e-02 2.59777844449e-02 3.20848019959e-02 3.73540502297e-02 + 3.86293456568e-02 4.02266025417e-02 4.06883718959e-02 4.02266025417e-02 3.86293456568e-02 3.55406204185e-02 + 3.09609358382e-02 2.53797374387e-02 1.96031535283e-02 1.45320680305e-02 1.07233722050e-02 8.11874591477e-03 + 6.36996915701e-03 5.27978060753e-03 4.89318523684e-03 5.27978060753e-03 6.36996915701e-03 8.11874591477e-03 + 1.07233722050e-02 1.45320680305e-02 1.96031535283e-02 2.53797374387e-02 3.09609358381e-02 3.55406204185e-02 + 3.51262182185e-02 3.61935553818e-02 3.61935553818e-02 3.51262182185e-02 3.27029610793e-02 2.88778389824e-02 + 2.40904203272e-02 1.90345757835e-02 1.44210111226e-02 1.07546834176e-02 8.11874591477e-03 6.28719817635e-03 + 5.04614391795e-03 4.37599558137e-03 4.37599558137e-03 5.04614391795e-03 6.28719817635e-03 8.11874591477e-03 + 1.07546834176e-02 1.44210111226e-02 1.90345757835e-02 2.40904203272e-02 2.88778389824e-02 3.27029610793e-02 + 3.06728014251e-02 3.12134113093e-02 3.06728014251e-02 2.89590113767e-02 2.60492747623e-02 2.22713307355e-02 + 1.81617046076e-02 1.42308801751e-02 1.08699825973e-02 8.26409670065e-03 6.36996915701e-03 5.04614391795e-03 + 4.21584246473e-03 3.92281290681e-03 4.21584246473e-03 5.04614391795e-03 6.36996915701e-03 8.26409670065e-03 + 1.08699825973e-02 1.42308801751e-02 1.81617046076e-02 2.22713307355e-02 2.60492747623e-02 2.89590113767e-02 + 2.59181147281e-02 2.59181147281e-02 2.49902463304e-02 2.30939042850e-02 2.03920879638e-02 1.72611853896e-02 + 1.40806383265e-02 1.11331987338e-02 8.62540500906e-03 6.67439308889e-03 5.27978060753e-03 4.37599558137e-03 + 3.92281290681e-03 3.92281290681e-03 4.37599558137e-03 5.27978060753e-03 6.67439308888e-03 8.62540500905e-03 + 1.11331987338e-02 1.40806383265e-02 1.72611853896e-02 2.03920879638e-02 2.30939042850e-02 2.49902463304e-02 + 2.21386056500e-02 2.17948830411e-02 2.07196781889e-02 1.89263764236e-02 1.66276099946e-02 1.41149739580e-02 + 1.16095381953e-02 9.28357359923e-03 7.31933010297e-03 5.85076317272e-03 4.89318523683e-03 4.37599558137e-03 + 4.21584246472e-03 4.37599558137e-03 4.89318523683e-03 5.85076317272e-03 7.31933010296e-03 9.28357359923e-03 + 1.16095381953e-02 1.41149739580e-02 1.66276099946e-02 1.89263764236e-02 2.07196781889e-02 2.17948830411e-02 + 1.99975947255e-02 1.93871115228e-02 1.81502966987e-02 1.64062528191e-02 1.43894839458e-02 1.22934163580e-02 + 1.02401100733e-02 8.37400390520e-03 6.87426464911e-03 5.85076317272e-03 5.27978060753e-03 5.04614391795e-03 + 5.04614391795e-03 5.27978060753e-03 5.85076317272e-03 6.87426464911e-03 8.37400390520e-03 1.02401100733e-02 + 1.22934163580e-02 1.43894839458e-02 1.64062528191e-02 1.81502966987e-02 1.93871115228e-02 1.99975947255e-02 + 1.91106081254e-02 1.81179302207e-02 1.66276099946e-02 1.48932100517e-02 1.31234388541e-02 1.14031750108e-02 + 9.78219490488e-03 8.37400390520e-03 7.31933010296e-03 6.67439308888e-03 6.36996915701e-03 6.28719817634e-03 + 6.36996915701e-03 6.67439308888e-03 7.31933010296e-03 8.37400390520e-03 9.78219490488e-03 1.14031750108e-02 + 1.31234388541e-02 1.48932100517e-02 1.66276099946e-02 1.81179302207e-02 1.91106081253e-02 1.94536795471e-02 + 1.86355176327e-02 1.72611853896e-02 1.56489970468e-02 1.40901390285e-02 1.26855285494e-02 1.14031750108e-02 + 1.02401100733e-02 9.28357359922e-03 8.62540500905e-03 8.26409670065e-03 8.11874591476e-03 8.11874591476e-03 + 8.26409670065e-03 8.62540500905e-03 9.28357359922e-03 1.02401100733e-02 1.14031750108e-02 1.26855285494e-02 + 1.40901390285e-02 1.56489970468e-02 1.72611853896e-02 1.86355176327e-02 1.94290489291e-02 1.94290489291e-02 + 1.81617046076e-02 1.66950035376e-02 1.52718999852e-02 1.40901390285e-02 1.31234388541e-02 1.22934163580e-02 + 1.16095381953e-02 1.11331987338e-02 1.08699825973e-02 1.07546834176e-02 1.07233722050e-02 1.07546834176e-02 + 1.08699825973e-02 1.11331987338e-02 1.16095381953e-02 1.22934163580e-02 1.31234388541e-02 1.40901390285e-02 + 1.52718999852e-02 1.66950035376e-02 1.81617046076e-02 1.92840317465e-02 1.97044449599e-02 1.92840317465e-02 + 1.79266526907e-02 1.66950035376e-02 1.56489970468e-02 1.48932100517e-02 1.43894839458e-02 1.41149739580e-02 + 1.40806383265e-02 1.42308801751e-02 1.44210111226e-02 1.45320680305e-02 1.45320680305e-02 1.44210111226e-02 + 1.42308801751e-02 1.40806383265e-02 1.41149739580e-02 1.43894839458e-02 1.48932100517e-02 1.56489970468e-02 + 1.66950035376e-02 1.79266526907e-02 1.90345757835e-02 1.96802339930e-02 1.96802339930e-02 1.90345757835e-02 + 1.81617046076e-02 1.72611853896e-02 1.66276099946e-02 1.64062528191e-02 1.66276099946e-02 1.72611853896e-02 + 1.81617046076e-02 1.90345757835e-02 1.96031535282e-02 1.97871610956e-02 1.96031535282e-02 1.90345757835e-02 + 1.81617046076e-02 1.72611853896e-02 1.66276099946e-02 1.64062528191e-02 1.66276099946e-02 1.72611853896e-02 + 1.81617046076e-02 1.90345757835e-02 1.96031535282e-02 1.97871610956e-02 1.96031535282e-02 1.90345757835e-02 + 1.86355176327e-02 1.81179302207e-02 1.81502966987e-02 1.89263764236e-02 2.03920879637e-02 2.22713307355e-02 + 2.40904203272e-02 2.53797374387e-02 2.59777844449e-02 2.59777844449e-02 2.53797374387e-02 2.40904203272e-02 + 2.22713307355e-02 2.03920879638e-02 1.89263764236e-02 1.81502966987e-02 1.81179302207e-02 1.86355176327e-02 + 1.92840317465e-02 1.96802339930e-02 1.97871610956e-02 1.97871610956e-02 1.96802339930e-02 1.92840317465e-02 + 1.91106081253e-02 1.93871115228e-02 2.07196781889e-02 2.30939042849e-02 2.60492747622e-02 2.88778389824e-02 + 3.09609358381e-02 3.20848019958e-02 3.24128421387e-02 3.20848019958e-02 3.09609358381e-02 2.88778389824e-02 + 2.60492747623e-02 2.30939042849e-02 2.07196781889e-02 1.93871115228e-02 1.91106081253e-02 1.94290489291e-02 + 1.97044449599e-02 1.96802339930e-02 1.96031535282e-02 1.96802339930e-02 1.97044449599e-02 1.94290489291e-02 + 1.99975947255e-02 2.17948830411e-02 2.49902463304e-02 2.89590113766e-02 3.27029610793e-02 3.55406204184e-02 + 3.73540502296e-02 3.82423088607e-02 3.82423088607e-02 3.73540502296e-02 3.55406204185e-02 3.27029610793e-02 + 2.89590113766e-02 2.49902463304e-02 2.17948830411e-02 1.99975947255e-02 1.94536795471e-02 1.94290489291e-02 + 1.92840317465e-02 1.90345757835e-02 1.90345757835e-02 1.92840317465e-02 1.94290489291e-02 1.94536795471e-02 + 2.19611077293e-02 2.65858530209e-02 3.13656133727e-02 3.51262182184e-02 3.75326171916e-02 3.89798518705e-02 + 3.97328533270e-02 3.97328533270e-02 3.89798518705e-02 3.75326171916e-02 3.51262182184e-02 3.13656133727e-02 + 2.65858530209e-02 2.19611077293e-02 1.85132763207e-02 1.63906429721e-02 1.50739196267e-02 1.40806383265e-02 + 1.34421324248e-02 1.34421324248e-02 1.40806383265e-02 1.50739196267e-02 1.63906429721e-02 1.85132763207e-02 + 2.65858530209e-02 3.20070729422e-02 3.61935553818e-02 3.86294987685e-02 4.00842207789e-02 4.11388919901e-02 + 4.15726567626e-02 4.11388919901e-02 4.00842207789e-02 3.86294987685e-02 3.61935553818e-02 3.20070729422e-02 + 2.65858530209e-02 2.15195877577e-02 1.78888288560e-02 1.56224022211e-02 1.41149739580e-02 1.30618774824e-02 + 1.26511415702e-02 1.30618774824e-02 1.41149739580e-02 1.56224022211e-02 1.78888288560e-02 2.15195877577e-02 + 3.13656133727e-02 3.61935553818e-02 3.88811262511e-02 4.03062291682e-02 4.15214050146e-02 4.23899857519e-02 + 4.23899857519e-02 4.15214050146e-02 4.03062291682e-02 3.88811262511e-02 3.61935553818e-02 3.13656133727e-02 + 2.54054430258e-02 2.02040886880e-02 1.66389339973e-02 1.43894839458e-02 1.28937939562e-02 1.20439356208e-02 + 1.20439356208e-02 1.28937939562e-02 1.43894839458e-02 1.66389339973e-02 2.02040886880e-02 2.54054430258e-02 + 3.51262182184e-02 3.86294987685e-02 4.03062291682e-02 4.15474983448e-02 4.26148361403e-02 4.30330806505e-02 + 4.26148361403e-02 4.15474983449e-02 4.03062291682e-02 3.86294987685e-02 3.51262182184e-02 2.93979324046e-02 + 2.31231583381e-02 1.81430425204e-02 1.48932100517e-02 1.28580577518e-02 1.16029685725e-02 1.11481007476e-02 + 1.16029685725e-02 1.28580577518e-02 1.48932100517e-02 1.81430425204e-02 2.31231583381e-02 2.93979324046e-02 + 3.75326171916e-02 4.00842207789e-02 4.15214050146e-02 4.26148361403e-02 4.31931066266e-02 4.31931066266e-02 + 4.26148361403e-02 4.15214050146e-02 4.00842207789e-02 3.75326171916e-02 3.27029610793e-02 2.61902387743e-02 + 2.00583037371e-02 1.56489970468e-02 1.28937939562e-02 1.12137577955e-02 1.03422447642e-02 1.03422447642e-02 + 1.12137577955e-02 1.28937939562e-02 1.56489970468e-02 2.00583037371e-02 2.61902387743e-02 3.27029610793e-02 + 3.89798518705e-02 4.11388919901e-02 4.23899857519e-02 4.30330806506e-02 4.31931066266e-02 4.30330806506e-02 + 4.23899857520e-02 4.11388919901e-02 3.89798518706e-02 3.49769025118e-02 2.88778389824e-02 2.21709602700e-02 + 1.66950035376e-02 1.30618774824e-02 1.08500532301e-02 9.57619631350e-03 9.13724506496e-03 9.57619631350e-03 + 1.08500532301e-02 1.30618774824e-02 1.66950035376e-02 2.21709602700e-02 2.88778389824e-02 3.49769025117e-02 + 3.97328533270e-02 4.15726567626e-02 4.23899857520e-02 4.26148361403e-02 4.26148361403e-02 4.23899857520e-02 + 4.15726567626e-02 3.97328533271e-02 3.62673468746e-02 3.07822057975e-02 2.40904203272e-02 1.79266526907e-02 + 1.34421324248e-02 1.06051613742e-02 8.89920278516e-03 8.04455907974e-03 8.04455907974e-03 8.89920278516e-03 + 1.06051613742e-02 1.34421324248e-02 1.79266526907e-02 2.40904203272e-02 3.07822057975e-02 3.62673468746e-02 + 3.97328533271e-02 4.11388919902e-02 4.15214050146e-02 4.15474983449e-02 4.15214050146e-02 4.11388919902e-02 + 3.97328533271e-02 3.66854482599e-02 3.17361436403e-02 2.53973709283e-02 1.90345757835e-02 1.39667079820e-02 + 1.05557815436e-02 8.41997198039e-03 7.17862759619e-03 6.75449318420e-03 7.17862759619e-03 8.41997198039e-03 + 1.05557815436e-02 1.39667079820e-02 1.90345757835e-02 2.53973709283e-02 3.17361436402e-02 3.66854482599e-02 + 3.89798518706e-02 4.00842207790e-02 4.03062291683e-02 4.03062291683e-02 4.00842207790e-02 3.89798518706e-02 + 3.62673468746e-02 3.17361436403e-02 2.58521940319e-02 1.96802339930e-02 1.44210111226e-02 1.06518186545e-02 + 8.18383164206e-03 6.62684043802e-03 5.82746138702e-03 5.82746138702e-03 6.62684043801e-03 8.18383164206e-03 + 1.06518186545e-02 1.44210111226e-02 1.96802339930e-02 2.58521940319e-02 3.17361436403e-02 3.62673468746e-02 + 3.75326171916e-02 3.86294987685e-02 3.88811262512e-02 3.86294987685e-02 3.75326171916e-02 3.49769025118e-02 + 3.07822057975e-02 2.53973709283e-02 1.96802339930e-02 1.45986463266e-02 1.07546834176e-02 8.12161313175e-03 + 6.36714430780e-03 5.28636096575e-03 4.90588959931e-03 5.28636096575e-03 6.36714430780e-03 8.12161313175e-03 + 1.07546834176e-02 1.45986463266e-02 1.96802339930e-02 2.53973709283e-02 3.07822057975e-02 3.49769025118e-02 + 3.51262182185e-02 3.61935553818e-02 3.61935553818e-02 3.51262182185e-02 3.27029610793e-02 2.88778389824e-02 + 2.40904203272e-02 1.90345757835e-02 1.44210111226e-02 1.07546834176e-02 8.11874591477e-03 6.28719817635e-03 + 5.04614391795e-03 4.37599558137e-03 4.37599558137e-03 5.04614391795e-03 6.28719817635e-03 8.11874591477e-03 + 1.07546834176e-02 1.44210111226e-02 1.90345757835e-02 2.40904203272e-02 2.88778389824e-02 3.27029610793e-02 + 3.13656133728e-02 3.20070729423e-02 3.13656133728e-02 2.93979324046e-02 2.61902387743e-02 2.21709602700e-02 + 1.79266526907e-02 1.39667079820e-02 1.06518186545e-02 8.12161313175e-03 6.28719817635e-03 4.98513742725e-03 + 4.14918646508e-03 3.84964089400e-03 4.14918646508e-03 4.98513742725e-03 6.28719817635e-03 8.12161313174e-03 + 1.06518186545e-02 1.39667079820e-02 1.79266526907e-02 2.21709602700e-02 2.61902387743e-02 2.93979324046e-02 + 2.65858530209e-02 2.65858530209e-02 2.54054430258e-02 2.31231583381e-02 2.00583037371e-02 1.66950035376e-02 + 1.34421324248e-02 1.05557815436e-02 8.18383164206e-03 6.36714430779e-03 5.04614391795e-03 4.14918646508e-03 + 3.67768921534e-03 3.67768921534e-03 4.14918646508e-03 5.04614391795e-03 6.36714430779e-03 8.18383164206e-03 + 1.05557815436e-02 1.34421324248e-02 1.66950035376e-02 2.00583037371e-02 2.31231583381e-02 2.54054430258e-02 + 2.19611077293e-02 2.15195877577e-02 2.02040886880e-02 1.81430425205e-02 1.56489970468e-02 1.30618774824e-02 + 1.06051613742e-02 8.41997198039e-03 6.62684043802e-03 5.28636096575e-03 4.37599558137e-03 3.84964089400e-03 + 3.67768921534e-03 3.84964089400e-03 4.37599558137e-03 5.28636096575e-03 6.62684043801e-03 8.41997198039e-03 + 1.06051613742e-02 1.30618774824e-02 1.56489970468e-02 1.81430425205e-02 2.02040886880e-02 2.15195877577e-02 + 1.85132763207e-02 1.78888288560e-02 1.66389339974e-02 1.48932100517e-02 1.28937939562e-02 1.08500532301e-02 + 8.89920278516e-03 7.17862759619e-03 5.82746138702e-03 4.90588959931e-03 4.37599558137e-03 4.14918646508e-03 + 4.14918646508e-03 4.37599558137e-03 4.90588959931e-03 5.82746138702e-03 7.17862759619e-03 8.89920278516e-03 + 1.08500532301e-02 1.28937939562e-02 1.48932100517e-02 1.66389339974e-02 1.78888288560e-02 1.85132763207e-02 + 1.63906429721e-02 1.56224022211e-02 1.43894839458e-02 1.28580577518e-02 1.12137577955e-02 9.57619631350e-03 + 8.04455907974e-03 6.75449318420e-03 5.82746138702e-03 5.28636096575e-03 5.04614391795e-03 4.98513742725e-03 + 5.04614391795e-03 5.28636096575e-03 5.82746138702e-03 6.75449318420e-03 8.04455907974e-03 9.57619631350e-03 + 1.12137577955e-02 1.28580577518e-02 1.43894839458e-02 1.56224022211e-02 1.63906429721e-02 1.66439398964e-02 + 1.50739196267e-02 1.41149739580e-02 1.28937939562e-02 1.16029685725e-02 1.03422447642e-02 9.13724506496e-03 + 8.04455907974e-03 7.17862759619e-03 6.62684043801e-03 6.36714430779e-03 6.28719817634e-03 6.28719817634e-03 + 6.36714430779e-03 6.62684043801e-03 7.17862759619e-03 8.04455907974e-03 9.13724506496e-03 1.03422447642e-02 + 1.16029685725e-02 1.28937939562e-02 1.41149739580e-02 1.50739196267e-02 1.55937378378e-02 1.55937378378e-02 + 1.40806383265e-02 1.30618774824e-02 1.20439356208e-02 1.11481007476e-02 1.03422447642e-02 9.57619631350e-03 + 8.89920278515e-03 8.41997198038e-03 8.18383164206e-03 8.12161313174e-03 8.11874591476e-03 8.12161313174e-03 + 8.18383164206e-03 8.41997198038e-03 8.89920278515e-03 9.57619631350e-03 1.03422447642e-02 1.11481007476e-02 + 1.20439356208e-02 1.30618774824e-02 1.40806383265e-02 1.48492046219e-02 1.51354763629e-02 1.48492046219e-02 + 1.34421324248e-02 1.26511415702e-02 1.20439356208e-02 1.16029685725e-02 1.12137577955e-02 1.08500532301e-02 + 1.06051613742e-02 1.05557815436e-02 1.06518186545e-02 1.07546834176e-02 1.07546834175e-02 1.06518186545e-02 + 1.05557815436e-02 1.06051613742e-02 1.08500532301e-02 1.12137577955e-02 1.16029685725e-02 1.20439356208e-02 + 1.26511415702e-02 1.34421324248e-02 1.42308801751e-02 1.47279181688e-02 1.47279181688e-02 1.42308801751e-02 + 1.34421324248e-02 1.30618774824e-02 1.28937939562e-02 1.28580577518e-02 1.28937939562e-02 1.30618774824e-02 + 1.34421324248e-02 1.39667079820e-02 1.44210111226e-02 1.45986463266e-02 1.44210111226e-02 1.39667079820e-02 + 1.34421324248e-02 1.30618774824e-02 1.28937939562e-02 1.28580577518e-02 1.28937939562e-02 1.30618774824e-02 + 1.34421324248e-02 1.39667079820e-02 1.44210111226e-02 1.45986463266e-02 1.44210111226e-02 1.39667079820e-02 + 1.40806383265e-02 1.41149739580e-02 1.43894839458e-02 1.48932100517e-02 1.56489970468e-02 1.66950035376e-02 + 1.79266526907e-02 1.90345757835e-02 1.96802339929e-02 1.96802339929e-02 1.90345757835e-02 1.79266526907e-02 + 1.66950035376e-02 1.56489970468e-02 1.48932100517e-02 1.43894839458e-02 1.41149739580e-02 1.40806383265e-02 + 1.42308801751e-02 1.44210111226e-02 1.45320680305e-02 1.45320680305e-02 1.44210111226e-02 1.42308801751e-02 + 1.50739196267e-02 1.56224022211e-02 1.66389339973e-02 1.81430425204e-02 2.00583037371e-02 2.21709602700e-02 + 2.40904203272e-02 2.53973709283e-02 2.58521940319e-02 2.53973709283e-02 2.40904203272e-02 2.21709602700e-02 + 2.00583037371e-02 1.81430425204e-02 1.66389339973e-02 1.56224022211e-02 1.50739196267e-02 1.48492046219e-02 + 1.47279181688e-02 1.45986463266e-02 1.45320680305e-02 1.45986463266e-02 1.47279181688e-02 1.48492046219e-02 + 1.63906429721e-02 1.78888288560e-02 2.02040886880e-02 2.31231583381e-02 2.61902387743e-02 2.88778389824e-02 + 3.07822057975e-02 3.17361436402e-02 3.17361436402e-02 3.07822057975e-02 2.88778389824e-02 2.61902387743e-02 + 2.31231583381e-02 2.02040886880e-02 1.78888288560e-02 1.63906429721e-02 1.55937378378e-02 1.51354763629e-02 + 1.47279181688e-02 1.44210111226e-02 1.44210111226e-02 1.47279181688e-02 1.51354763629e-02 1.55937378378e-02 + 1.85132763207e-02 2.15195877577e-02 2.54054430258e-02 2.93979324045e-02 3.27029610793e-02 3.49769025117e-02 + 3.62673468745e-02 3.66854482599e-02 3.62673468745e-02 3.49769025117e-02 3.27029610793e-02 2.93979324046e-02 + 2.54054430258e-02 2.15195877577e-02 1.85132763207e-02 1.66439398964e-02 1.55937378378e-02 1.48492046219e-02 + 1.42308801751e-02 1.39667079820e-02 1.42308801751e-02 1.48492046219e-02 1.55937378378e-02 1.66439398964e-02 + 2.19947599998e-02 2.65858530209e-02 3.06728014251e-02 3.33647463123e-02 3.45751625707e-02 3.48628450776e-02 + 3.48683159917e-02 3.48628450776e-02 3.45751625707e-02 3.33647463123e-02 3.06728014251e-02 2.65858530209e-02 + 2.19947599998e-02 1.79741436761e-02 1.50424663757e-02 1.30485807277e-02 1.16095381953e-02 1.06051613742e-02 + 1.02248872526e-02 1.06051613742e-02 1.16095381953e-02 1.30485807277e-02 1.50424663757e-02 1.79741436761e-02 + 2.65858530209e-02 3.12134113093e-02 3.39942859271e-02 3.46096179590e-02 3.39196724264e-02 3.31551669201e-02 + 3.31551669202e-02 3.39196724265e-02 3.46096179590e-02 3.39942859271e-02 3.12134113093e-02 2.65858530209e-02 + 2.15038028103e-02 1.72812015630e-02 1.43188164440e-02 1.22934163580e-02 1.08500532301e-02 1.00210602336e-02 + 1.00210602336e-02 1.08500532301e-02 1.22934163580e-02 1.43188164440e-02 1.72812015630e-02 2.15038028103e-02 + 3.06728014251e-02 3.39942859271e-02 3.44216532953e-02 3.26920605346e-02 3.05273339684e-02 2.95749315132e-02 + 3.05273339684e-02 3.26920605346e-02 3.44216532954e-02 3.39942859271e-02 3.06728014251e-02 2.54054430258e-02 + 2.00653973118e-02 1.59287126341e-02 1.31234388541e-02 1.12137577955e-02 9.96234500644e-03 9.50248837487e-03 + 9.96234500644e-03 1.12137577955e-02 1.31234388541e-02 1.59287126341e-02 2.00653973118e-02 2.54054430258e-02 + 3.33647463123e-02 3.46096179590e-02 3.26920605346e-02 2.92890570902e-02 2.67216511959e-02 2.67216511959e-02 + 2.92890570902e-02 3.26920605346e-02 3.46096179590e-02 3.33647463123e-02 2.89590113766e-02 2.31231583381e-02 + 1.78657504093e-02 1.40901390285e-02 1.16029685725e-02 9.96167567605e-03 9.07031679536e-03 9.07031679536e-03 + 9.96167567605e-03 1.16029685725e-02 1.40901390285e-02 1.78657504093e-02 2.31231583381e-02 2.89590113766e-02 + 3.45751625707e-02 3.39196724265e-02 3.05273339684e-02 2.67216511959e-02 2.50661805907e-02 2.67216511959e-02 + 3.05273339684e-02 3.39196724265e-02 3.45751625707e-02 3.16057035862e-02 2.60492747623e-02 2.00583037371e-02 + 1.52718999852e-02 1.20439356208e-02 9.96234500644e-03 8.68876908730e-03 8.23785813083e-03 8.68876908730e-03 + 9.96234500643e-03 1.20439356208e-02 1.52718999852e-02 2.00583037371e-02 2.60492747623e-02 3.16057035862e-02 + 3.48628450776e-02 3.31551669202e-02 2.95749315132e-02 2.67216511960e-02 2.67216511960e-02 2.95749315132e-02 + 3.31551669202e-02 3.48628450776e-02 3.31963581644e-02 2.84217494631e-02 2.22713307355e-02 1.66950035376e-02 + 1.26511415702e-02 1.00210602336e-02 8.36360112567e-03 7.50451749096e-03 7.50451749096e-03 8.36360112567e-03 + 1.00210602336e-02 1.26511415702e-02 1.66950035376e-02 2.22713307355e-02 2.84217494631e-02 3.31963581644e-02 + 3.48683159917e-02 3.31551669202e-02 3.05273339684e-02 2.92890570903e-02 3.05273339684e-02 3.31551669202e-02 + 3.48683159917e-02 3.38925854809e-02 2.99301385615e-02 2.40967233573e-02 1.81617046076e-02 1.34421324248e-02 + 1.02248872526e-02 8.15758815908e-03 6.92803651720e-03 6.50338402317e-03 6.92803651720e-03 8.15758815907e-03 + 1.02248872526e-02 1.34421324248e-02 1.81617046076e-02 2.40967233573e-02 2.99301385615e-02 3.38925854809e-02 + 3.48628450776e-02 3.39196724265e-02 3.26920605347e-02 3.26920605347e-02 3.39196724265e-02 3.48628450776e-02 + 3.38925854809e-02 3.04404777485e-02 2.51249889113e-02 1.92840317465e-02 1.42308801751e-02 1.05557815436e-02 + 8.11230157085e-03 6.56138198057e-03 5.76667312114e-03 5.76667312114e-03 6.56138198057e-03 8.11230157084e-03 + 1.05557815436e-02 1.42308801751e-02 1.92840317465e-02 2.51249889113e-02 3.04404777485e-02 3.38925854809e-02 + 3.45751625707e-02 3.46096179590e-02 3.44216532954e-02 3.46096179590e-02 3.45751625707e-02 3.31963581644e-02 + 2.99301385615e-02 2.51249889113e-02 1.97044449599e-02 1.47279181688e-02 1.08699825973e-02 8.18383164206e-03 + 6.39967919814e-03 5.32068131556e-03 4.94632325183e-03 5.32068131556e-03 6.39967919814e-03 8.18383164206e-03 + 1.08699825973e-02 1.47279181688e-02 1.97044449599e-02 2.51249889113e-02 2.99301385615e-02 3.31963581644e-02 + 3.33647463124e-02 3.39942859271e-02 3.39942859271e-02 3.33647463124e-02 3.16057035862e-02 2.84217494631e-02 + 2.40967233573e-02 1.92840317465e-02 1.47279181688e-02 1.09990704821e-02 8.26409670065e-03 6.36714430780e-03 + 5.11303460195e-03 4.45367296569e-03 4.45367296569e-03 5.11303460195e-03 6.36714430779e-03 8.26409670065e-03 + 1.09990704821e-02 1.47279181688e-02 1.92840317465e-02 2.40967233573e-02 2.84217494631e-02 3.16057035862e-02 + 3.06728014251e-02 3.12134113093e-02 3.06728014251e-02 2.89590113766e-02 2.60492747623e-02 2.22713307355e-02 + 1.81617046076e-02 1.42308801751e-02 1.08699825973e-02 8.26409670065e-03 6.36996915701e-03 5.04614391795e-03 + 4.21584246473e-03 3.92281290681e-03 4.21584246473e-03 5.04614391795e-03 6.36996915701e-03 8.26409670065e-03 + 1.08699825973e-02 1.42308801751e-02 1.81617046076e-02 2.22713307355e-02 2.60492747623e-02 2.89590113767e-02 + 2.65858530209e-02 2.65858530209e-02 2.54054430258e-02 2.31231583381e-02 2.00583037371e-02 1.66950035376e-02 + 1.34421324248e-02 1.05557815436e-02 8.18383164206e-03 6.36714430779e-03 5.04614391795e-03 4.14918646508e-03 + 3.67768921534e-03 3.67768921534e-03 4.14918646508e-03 5.04614391795e-03 6.36714430779e-03 8.18383164206e-03 + 1.05557815436e-02 1.34421324248e-02 1.66950035376e-02 2.00583037371e-02 2.31231583381e-02 2.54054430258e-02 + 2.19947599998e-02 2.15038028103e-02 2.00653973119e-02 1.78657504093e-02 1.52718999852e-02 1.26511415702e-02 + 1.02248872526e-02 8.11230157084e-03 6.39967919814e-03 5.11303460195e-03 4.21584246472e-03 3.67768921534e-03 + 3.49726793106e-03 3.67768921534e-03 4.21584246472e-03 5.11303460195e-03 6.39967919814e-03 8.11230157084e-03 + 1.02248872526e-02 1.26511415702e-02 1.52718999852e-02 1.78657504093e-02 2.00653973119e-02 2.15038028103e-02 + 1.79741436761e-02 1.72812015630e-02 1.59287126341e-02 1.40901390285e-02 1.20439356208e-02 1.00210602336e-02 + 8.15758815908e-03 6.56138198057e-03 5.32068131556e-03 4.45367296569e-03 3.92281290681e-03 3.67768921534e-03 + 3.67768921534e-03 3.92281290681e-03 4.45367296569e-03 5.32068131556e-03 6.56138198057e-03 8.15758815907e-03 + 1.00210602336e-02 1.20439356208e-02 1.40901390285e-02 1.59287126341e-02 1.72812015630e-02 1.79741436761e-02 + 1.50424663757e-02 1.43188164440e-02 1.31234388541e-02 1.16029685725e-02 9.96234500644e-03 8.36360112567e-03 + 6.92803651720e-03 5.76667312114e-03 4.94632325183e-03 4.45367296569e-03 4.21584246472e-03 4.14918646508e-03 + 4.21584246473e-03 4.45367296569e-03 4.94632325183e-03 5.76667312114e-03 6.92803651720e-03 8.36360112567e-03 + 9.96234500644e-03 1.16029685725e-02 1.31234388541e-02 1.43188164440e-02 1.50424663757e-02 1.52762540169e-02 + 1.30485807277e-02 1.22934163580e-02 1.12137577955e-02 9.96167567605e-03 8.68876908730e-03 7.50451749096e-03 + 6.50338402317e-03 5.76667312114e-03 5.32068131556e-03 5.11303460194e-03 5.04614391795e-03 5.04614391795e-03 + 5.11303460195e-03 5.32068131556e-03 5.76667312114e-03 6.50338402317e-03 7.50451749096e-03 8.68876908730e-03 + 9.96167567605e-03 1.12137577955e-02 1.22934163580e-02 1.30485807277e-02 1.34169388324e-02 1.34169388324e-02 + 1.16095381953e-02 1.08500532301e-02 9.96234500644e-03 9.07031679536e-03 8.23785813083e-03 7.50451749096e-03 + 6.92803651719e-03 6.56138198056e-03 6.39967919814e-03 6.36714430779e-03 6.36996915701e-03 6.36714430779e-03 + 6.39967919814e-03 6.56138198056e-03 6.92803651719e-03 7.50451749096e-03 8.23785813083e-03 9.07031679536e-03 + 9.96234500644e-03 1.08500532301e-02 1.16095381953e-02 1.21090534529e-02 1.22800512627e-02 1.21090534529e-02 + 1.06051613742e-02 1.00210602336e-02 9.50248837488e-03 9.07031679536e-03 8.68876908730e-03 8.36360112567e-03 + 8.15758815907e-03 8.11230157084e-03 8.18383164206e-03 8.26409670065e-03 8.26409670065e-03 8.18383164206e-03 + 8.11230157084e-03 8.15758815907e-03 8.36360112566e-03 8.68876908730e-03 9.07031679536e-03 9.50248837488e-03 + 1.00210602336e-02 1.06051613742e-02 1.11331987338e-02 1.14481144732e-02 1.14481144732e-02 1.11331987338e-02 + 1.02248872526e-02 1.00210602336e-02 9.96234500644e-03 9.96167567605e-03 9.96234500643e-03 1.00210602336e-02 + 1.02248872526e-02 1.05557815436e-02 1.08699825973e-02 1.09990704821e-02 1.08699825973e-02 1.05557815436e-02 + 1.02248872526e-02 1.00210602336e-02 9.96234500643e-03 9.96167567604e-03 9.96234500644e-03 1.00210602336e-02 + 1.02248872526e-02 1.05557815436e-02 1.08699825973e-02 1.09990704821e-02 1.08699825973e-02 1.05557815436e-02 + 1.06051613742e-02 1.08500532301e-02 1.12137577955e-02 1.16029685725e-02 1.20439356208e-02 1.26511415702e-02 + 1.34421324248e-02 1.42308801751e-02 1.47279181688e-02 1.47279181688e-02 1.42308801751e-02 1.34421324248e-02 + 1.26511415702e-02 1.20439356208e-02 1.16029685725e-02 1.12137577955e-02 1.08500532301e-02 1.06051613742e-02 + 1.05557815436e-02 1.06518186545e-02 1.07546834176e-02 1.07546834176e-02 1.06518186545e-02 1.05557815436e-02 + 1.16095381953e-02 1.22934163580e-02 1.31234388541e-02 1.40901390285e-02 1.52718999852e-02 1.66950035376e-02 + 1.81617046076e-02 1.92840317465e-02 1.97044449599e-02 1.92840317465e-02 1.81617046076e-02 1.66950035376e-02 + 1.52718999852e-02 1.40901390285e-02 1.31234388541e-02 1.22934163580e-02 1.16095381953e-02 1.11331987338e-02 + 1.08699825973e-02 1.07546834176e-02 1.07233722050e-02 1.07546834176e-02 1.08699825973e-02 1.11331987338e-02 + 1.30485807277e-02 1.43188164440e-02 1.59287126341e-02 1.78657504093e-02 2.00583037371e-02 2.22713307355e-02 + 2.40967233573e-02 2.51249889113e-02 2.51249889113e-02 2.40967233573e-02 2.22713307355e-02 2.00583037371e-02 + 1.78657504093e-02 1.59287126341e-02 1.43188164440e-02 1.30485807277e-02 1.21090534529e-02 1.14481144732e-02 + 1.09990704821e-02 1.07546834176e-02 1.07546834176e-02 1.09990704821e-02 1.14481144732e-02 1.21090534529e-02 + 1.50424663757e-02 1.72812015630e-02 2.00653973118e-02 2.31231583381e-02 2.60492747622e-02 2.84217494631e-02 + 2.99301385615e-02 3.04404777485e-02 2.99301385615e-02 2.84217494631e-02 2.60492747622e-02 2.31231583381e-02 + 2.00653973118e-02 1.72812015630e-02 1.50424663757e-02 1.34169388324e-02 1.22800512627e-02 1.14481144732e-02 + 1.08699825973e-02 1.06518186545e-02 1.08699825973e-02 1.14481144732e-02 1.22800512627e-02 1.34169388324e-02 + 1.79741436761e-02 2.15038028103e-02 2.54054430258e-02 2.89590113766e-02 3.16057035862e-02 3.31963581643e-02 + 3.38925854809e-02 3.38925854809e-02 3.31963581644e-02 3.16057035862e-02 2.89590113766e-02 2.54054430258e-02 + 2.15038028103e-02 1.79741436761e-02 1.52762540169e-02 1.34169388324e-02 1.21090534529e-02 1.11331987338e-02 + 1.05557815436e-02 1.05557815436e-02 1.11331987338e-02 1.21090534529e-02 1.34169388324e-02 1.52762540169e-02 + 2.19611077293e-02 2.59181147281e-02 2.89473471924e-02 3.04773481039e-02 3.06792139923e-02 3.03789244340e-02 + 3.03789244340e-02 3.06792139923e-02 3.04773481040e-02 2.89473471924e-02 2.59181147281e-02 2.19611077293e-02 + 1.79741436761e-02 1.46288647205e-02 1.21045128275e-02 1.02401100733e-02 8.89920278516e-03 8.15758815908e-03 + 8.15758815907e-03 8.89920278515e-03 1.02401100733e-02 1.21045128275e-02 1.46288647205e-02 1.79741436761e-02 + 2.59181147281e-02 2.92643382604e-02 3.05548189106e-02 2.97974895143e-02 2.81921950446e-02 2.73937018060e-02 + 2.81921950446e-02 2.97974895143e-02 3.05548189106e-02 2.92643382604e-02 2.59181147281e-02 2.15195877577e-02 + 1.72812015630e-02 1.38961516944e-02 1.14031750108e-02 9.57619631350e-03 8.36360112567e-03 7.92498387888e-03 + 8.36360112567e-03 9.57619631350e-03 1.14031750108e-02 1.38961516944e-02 1.72812015630e-02 2.15195877577e-02 + 2.89473471924e-02 3.05548189106e-02 2.92436594720e-02 2.61164989591e-02 2.35389825848e-02 2.35389825848e-02 + 2.61164989591e-02 2.92436594720e-02 3.05548189106e-02 2.89473471924e-02 2.49902463304e-02 2.02040886880e-02 + 1.59287126341e-02 1.26855285494e-02 1.03422447642e-02 8.68876908730e-03 7.77912772161e-03 7.77912772161e-03 + 8.68876908730e-03 1.03422447642e-02 1.26855285494e-02 1.59287126341e-02 2.02040886880e-02 2.49902463304e-02 + 3.04773481040e-02 2.97974895143e-02 2.61164989591e-02 2.17746576295e-02 1.98434779695e-02 2.17746576295e-02 + 2.61164989591e-02 2.97974895143e-02 3.04773481040e-02 2.78013937268e-02 2.30939042849e-02 1.81430425204e-02 + 1.40901390285e-02 1.11481007476e-02 9.07031679536e-03 7.73176989509e-03 7.25301575416e-03 7.73176989509e-03 + 9.07031679536e-03 1.11481007476e-02 1.40901390285e-02 1.81430425204e-02 2.30939042849e-02 2.78013937268e-02 + 3.06792139923e-02 2.81921950446e-02 2.35389825848e-02 1.98434779695e-02 1.98434779695e-02 2.35389825848e-02 + 2.81921950446e-02 3.06792139923e-02 2.95890354456e-02 2.55726183949e-02 2.03920879638e-02 1.56489970468e-02 + 1.20439356208e-02 9.50248837488e-03 7.77912772161e-03 6.85668012358e-03 6.85668012358e-03 7.77912772161e-03 + 9.50248837487e-03 1.20439356208e-02 1.56489970468e-02 2.03920879638e-02 2.55726183949e-02 2.95890354456e-02 + 3.03789244340e-02 2.73937018060e-02 2.35389825848e-02 2.17746576295e-02 2.35389825848e-02 2.73937018060e-02 + 3.03789244340e-02 3.04051143293e-02 2.73091501295e-02 2.23752455712e-02 1.72611853896e-02 1.30618774824e-02 + 1.00210602336e-02 7.92498387888e-03 6.62087909721e-03 6.16385997204e-03 6.62087909720e-03 7.92498387887e-03 + 1.00210602336e-02 1.30618774824e-02 1.72611853896e-02 2.23752455712e-02 2.73091501295e-02 3.04051143293e-02 + 3.03789244340e-02 2.81921950446e-02 2.61164989591e-02 2.61164989591e-02 2.81921950446e-02 3.03789244340e-02 + 3.06058831029e-02 2.81653274579e-02 2.37301976795e-02 1.86355176327e-02 1.40806383265e-02 1.06051613742e-02 + 8.15758815908e-03 6.53729803367e-03 5.69411798450e-03 5.69411798450e-03 6.53729803366e-03 8.15758815908e-03 + 1.06051613742e-02 1.40806383265e-02 1.86355176327e-02 2.37301976795e-02 2.81653274579e-02 3.06058831029e-02 + 3.06792139923e-02 2.97974895143e-02 2.92436594720e-02 2.97974895143e-02 3.06792139923e-02 3.04051143293e-02 + 2.81653274579e-02 2.42075414898e-02 1.94290489291e-02 1.48492046219e-02 1.11331987338e-02 8.41997198039e-03 + 6.56138198057e-03 5.43239778449e-03 5.04343778102e-03 5.43239778449e-03 6.56138198057e-03 8.41997198039e-03 + 1.11331987338e-02 1.48492046219e-02 1.94290489291e-02 2.42075414898e-02 2.81653274579e-02 3.04051143293e-02 + 3.04773481040e-02 3.05548189106e-02 3.05548189106e-02 3.04773481040e-02 2.95890354456e-02 2.73091501295e-02 + 2.37301976795e-02 1.94290489291e-02 1.51354763629e-02 1.14481144732e-02 8.62540500906e-03 6.62684043802e-03 + 5.32068131556e-03 4.65175947716e-03 4.65175947716e-03 5.32068131556e-03 6.62684043802e-03 8.62540500906e-03 + 1.14481144732e-02 1.51354763629e-02 1.94290489291e-02 2.37301976795e-02 2.73091501295e-02 2.95890354456e-02 + 2.89473471924e-02 2.92643382604e-02 2.89473471924e-02 2.78013937268e-02 2.55726183949e-02 2.23752455712e-02 + 1.86355176327e-02 1.48492046219e-02 1.14481144732e-02 8.70256016587e-03 6.67439308889e-03 5.28636096575e-03 + 4.45367296569e-03 4.16945913194e-03 4.45367296569e-03 5.28636096575e-03 6.67439308889e-03 8.70256016587e-03 + 1.14481144732e-02 1.48492046219e-02 1.86355176327e-02 2.23752455712e-02 2.55726183949e-02 2.78013937268e-02 + 2.59181147281e-02 2.59181147281e-02 2.49902463304e-02 2.30939042850e-02 2.03920879638e-02 1.72611853896e-02 + 1.40806383265e-02 1.11331987338e-02 8.62540500906e-03 6.67439308888e-03 5.27978060753e-03 4.37599558137e-03 + 3.92281290681e-03 3.92281290681e-03 4.37599558137e-03 5.27978060753e-03 6.67439308888e-03 8.62540500905e-03 + 1.11331987338e-02 1.40806383265e-02 1.72611853896e-02 2.03920879638e-02 2.30939042850e-02 2.49902463304e-02 + 2.19611077293e-02 2.15195877577e-02 2.02040886880e-02 1.81430425204e-02 1.56489970468e-02 1.30618774824e-02 + 1.06051613742e-02 8.41997198039e-03 6.62684043801e-03 5.28636096575e-03 4.37599558137e-03 3.84964089400e-03 + 3.67768921534e-03 3.84964089400e-03 4.37599558137e-03 5.28636096575e-03 6.62684043801e-03 8.41997198039e-03 + 1.06051613742e-02 1.30618774824e-02 1.56489970468e-02 1.81430425205e-02 2.02040886880e-02 2.15195877577e-02 + 1.79741436761e-02 1.72812015630e-02 1.59287126341e-02 1.40901390285e-02 1.20439356208e-02 1.00210602336e-02 + 8.15758815908e-03 6.56138198057e-03 5.32068131556e-03 4.45367296569e-03 3.92281290681e-03 3.67768921534e-03 + 3.67768921534e-03 3.92281290681e-03 4.45367296569e-03 5.32068131556e-03 6.56138198057e-03 8.15758815907e-03 + 1.00210602336e-02 1.20439356208e-02 1.40901390285e-02 1.59287126341e-02 1.72812015630e-02 1.79741436761e-02 + 1.46288647205e-02 1.38961516945e-02 1.26855285494e-02 1.11481007476e-02 9.50248837487e-03 7.92498387888e-03 + 6.53729803366e-03 5.43239778449e-03 4.65175947716e-03 4.16945913194e-03 3.92281290681e-03 3.84964089400e-03 + 3.92281290681e-03 4.16945913194e-03 4.65175947716e-03 5.43239778449e-03 6.53729803366e-03 7.92498387888e-03 + 9.50248837487e-03 1.11481007476e-02 1.26855285494e-02 1.38961516945e-02 1.46288647205e-02 1.48656767561e-02 + 1.21045128275e-02 1.14031750108e-02 1.03422447642e-02 9.07031679536e-03 7.77912772161e-03 6.62087909721e-03 + 5.69411798450e-03 5.04343778102e-03 4.65175947716e-03 4.45367296569e-03 4.37599558137e-03 4.37599558137e-03 + 4.45367296569e-03 4.65175947716e-03 5.04343778102e-03 5.69411798450e-03 6.62087909721e-03 7.77912772161e-03 + 9.07031679536e-03 1.03422447642e-02 1.14031750108e-02 1.21045128275e-02 1.24265880360e-02 1.24265880360e-02 + 1.02401100733e-02 9.57619631350e-03 8.68876908730e-03 7.73176989509e-03 6.85668012358e-03 6.16385997204e-03 + 5.69411798450e-03 5.43239778448e-03 5.32068131556e-03 5.28636096575e-03 5.27978060753e-03 5.28636096575e-03 + 5.32068131556e-03 5.43239778449e-03 5.69411798450e-03 6.16385997204e-03 6.85668012358e-03 7.73176989509e-03 + 8.68876908730e-03 9.57619631350e-03 1.02401100733e-02 1.06109348738e-02 1.07225418333e-02 1.06109348738e-02 + 8.89920278516e-03 8.36360112567e-03 7.77912772161e-03 7.25301575416e-03 6.85668012358e-03 6.62087909720e-03 + 6.53729803366e-03 6.56138198056e-03 6.62684043801e-03 6.67439308888e-03 6.67439308888e-03 6.62684043801e-03 + 6.56138198056e-03 6.53729803366e-03 6.62087909720e-03 6.85668012358e-03 7.25301575416e-03 7.77912772161e-03 + 8.36360112567e-03 8.89920278516e-03 9.28357359923e-03 9.47290433111e-03 9.47290433111e-03 9.28357359923e-03 + 8.15758815908e-03 7.92498387888e-03 7.77912772161e-03 7.73176989509e-03 7.77912772161e-03 7.92498387887e-03 + 8.15758815907e-03 8.41997198038e-03 8.62540500905e-03 8.70256016586e-03 8.62540500905e-03 8.41997198038e-03 + 8.15758815907e-03 7.92498387887e-03 7.77912772161e-03 7.73176989509e-03 7.77912772161e-03 7.92498387888e-03 + 8.15758815908e-03 8.41997198039e-03 8.62540500905e-03 8.70256016587e-03 8.62540500906e-03 8.41997198039e-03 + 8.15758815908e-03 8.36360112567e-03 8.68876908730e-03 9.07031679536e-03 9.50248837487e-03 1.00210602336e-02 + 1.06051613742e-02 1.11331987338e-02 1.14481144732e-02 1.14481144732e-02 1.11331987338e-02 1.06051613742e-02 + 1.00210602336e-02 9.50248837487e-03 9.07031679536e-03 8.68876908730e-03 8.36360112567e-03 8.15758815908e-03 + 8.11230157085e-03 8.18383164206e-03 8.26409670065e-03 8.26409670065e-03 8.18383164206e-03 8.11230157085e-03 + 8.89920278516e-03 9.57619631350e-03 1.03422447642e-02 1.11481007476e-02 1.20439356208e-02 1.30618774824e-02 + 1.40806383265e-02 1.48492046219e-02 1.51354763629e-02 1.48492046219e-02 1.40806383265e-02 1.30618774824e-02 + 1.20439356208e-02 1.11481007476e-02 1.03422447642e-02 9.57619631350e-03 8.89920278516e-03 8.41997198039e-03 + 8.18383164206e-03 8.12161313175e-03 8.11874591477e-03 8.12161313174e-03 8.18383164206e-03 8.41997198039e-03 + 1.02401100733e-02 1.14031750108e-02 1.26855285494e-02 1.40901390285e-02 1.56489970468e-02 1.72611853896e-02 + 1.86355176327e-02 1.94290489291e-02 1.94290489291e-02 1.86355176327e-02 1.72611853896e-02 1.56489970468e-02 + 1.40901390285e-02 1.26855285494e-02 1.14031750108e-02 1.02401100733e-02 9.28357359923e-03 8.62540500906e-03 + 8.26409670065e-03 8.11874591476e-03 8.11874591476e-03 8.26409670065e-03 8.62540500906e-03 9.28357359923e-03 + 1.21045128275e-02 1.38961516944e-02 1.59287126341e-02 1.81430425204e-02 2.03920879638e-02 2.23752455712e-02 + 2.37301976795e-02 2.42075414898e-02 2.37301976795e-02 2.23752455712e-02 2.03920879638e-02 1.81430425204e-02 + 1.59287126341e-02 1.38961516944e-02 1.21045128275e-02 1.06109348738e-02 9.47290433111e-03 8.70256016587e-03 + 8.26409670065e-03 8.12161313174e-03 8.26409670065e-03 8.70256016586e-03 9.47290433111e-03 1.06109348738e-02 + 1.46288647205e-02 1.72812015630e-02 2.02040886880e-02 2.30939042849e-02 2.55726183949e-02 2.73091501295e-02 + 2.81653274579e-02 2.81653274579e-02 2.73091501295e-02 2.55726183949e-02 2.30939042849e-02 2.02040886880e-02 + 1.72812015630e-02 1.46288647205e-02 1.24265880360e-02 1.07225418333e-02 9.47290433111e-03 8.62540500905e-03 + 8.18383164206e-03 8.18383164206e-03 8.62540500905e-03 9.47290433111e-03 1.07225418333e-02 1.24265880360e-02 + 1.79741436761e-02 2.15195877577e-02 2.49902463304e-02 2.78013937268e-02 2.95890354456e-02 3.04051143293e-02 + 3.06058831029e-02 3.04051143293e-02 2.95890354456e-02 2.78013937268e-02 2.49902463304e-02 2.15195877577e-02 + 1.79741436761e-02 1.48656767560e-02 1.24265880360e-02 1.06109348738e-02 9.28357359923e-03 8.41997198039e-03 + 8.11230157084e-03 8.41997198039e-03 9.28357359923e-03 1.06109348738e-02 1.24265880360e-02 1.48656767560e-02 + 2.21386056500e-02 2.52445347087e-02 2.71142998602e-02 2.74769895380e-02 2.69081613820e-02 2.65224863971e-02 + 2.69081613820e-02 2.74769895380e-02 2.71142998602e-02 2.52445347087e-02 2.21386056500e-02 1.85132763207e-02 + 1.50424663757e-02 1.21045128275e-02 9.78219490488e-03 8.04455907974e-03 6.92803651720e-03 6.53729803366e-03 + 6.92803651720e-03 8.04455907974e-03 9.78219490488e-03 1.21045128275e-02 1.50424663757e-02 1.85132763207e-02 + 2.52445347087e-02 2.72051400328e-02 2.70513354759e-02 2.52955690008e-02 2.36141349499e-02 2.36141349499e-02 + 2.52955690008e-02 2.70513354759e-02 2.72051400328e-02 2.52445347087e-02 2.17948830411e-02 1.78888288560e-02 + 1.43188164440e-02 1.14031750108e-02 9.13724506496e-03 7.50451749096e-03 6.62087909721e-03 6.62087909721e-03 + 7.50451749096e-03 9.13724506495e-03 1.14031750108e-02 1.43188164440e-02 1.78888288560e-02 2.17948830411e-02 + 2.71142998602e-02 2.70513354759e-02 2.44579386769e-02 2.10846196163e-02 1.95329704288e-02 2.10846196163e-02 + 2.44579386769e-02 2.70513354759e-02 2.71142998602e-02 2.46286629032e-02 2.07196781889e-02 1.66389339973e-02 + 1.31234388541e-02 1.03422447642e-02 8.23785813083e-03 6.85668012358e-03 6.36555591034e-03 6.85668012358e-03 + 8.23785813083e-03 1.03422447642e-02 1.31234388541e-02 1.66389339973e-02 2.07196781889e-02 2.46286629032e-02 + 2.74769895380e-02 2.52955690008e-02 2.10846196163e-02 1.76763940774e-02 1.76763940774e-02 2.10846196163e-02 + 2.52955690008e-02 2.74769895380e-02 2.65400648390e-02 2.32030440049e-02 1.89263764236e-02 1.48932100517e-02 + 1.16029685725e-02 9.07031679536e-03 7.25301575416e-03 6.26631005461e-03 6.26631005461e-03 7.25301575415e-03 + 9.07031679536e-03 1.16029685725e-02 1.48932100517e-02 1.89263764236e-02 2.32030440049e-02 2.65400648390e-02 + 2.69081613820e-02 2.36141349499e-02 1.95329704288e-02 1.76763940774e-02 1.95329704288e-02 2.36141349499e-02 + 2.69081613820e-02 2.73903662614e-02 2.49964037842e-02 2.09446754967e-02 1.66276099946e-02 1.28937939562e-02 + 9.96234500644e-03 7.77912772161e-03 6.36555591034e-03 5.86550216407e-03 6.36555591033e-03 7.77912772161e-03 + 9.96234500644e-03 1.28937939562e-02 1.66276099946e-02 2.09446754967e-02 2.49964037842e-02 2.73903662614e-02 + 2.65224863971e-02 2.36141349499e-02 2.10846196163e-02 2.10846196163e-02 2.36141349499e-02 2.65224863971e-02 + 2.75584598461e-02 2.59618688149e-02 2.24043982374e-02 1.81179302207e-02 1.41149739580e-02 1.08500532301e-02 + 8.36360112567e-03 6.62087909721e-03 5.69328932590e-03 5.69328932590e-03 6.62087909721e-03 8.36360112567e-03 + 1.08500532301e-02 1.41149739580e-02 1.81179302207e-02 2.24043982374e-02 2.59618688149e-02 2.75584598461e-02 + 2.69081613820e-02 2.52955690008e-02 2.44579386769e-02 2.52955690008e-02 2.69081613820e-02 2.75584598461e-02 + 2.62414819209e-02 2.31387869200e-02 1.91106081253e-02 1.50739196267e-02 1.16095381953e-02 8.89920278516e-03 + 6.92803651720e-03 5.69411798450e-03 5.26652136817e-03 5.69411798450e-03 6.92803651720e-03 8.89920278516e-03 + 1.16095381953e-02 1.50739196267e-02 1.91106081253e-02 2.31387869200e-02 2.62414819209e-02 2.75584598461e-02 + 2.74769895380e-02 2.70513354759e-02 2.70513354759e-02 2.74769895380e-02 2.73903662614e-02 2.59618688149e-02 + 2.31387869200e-02 1.94536795471e-02 1.55937378378e-02 1.21090534529e-02 9.28357359923e-03 7.17862759619e-03 + 5.76667312114e-03 5.04343778102e-03 5.04343778102e-03 5.76667312114e-03 7.17862759619e-03 9.28357359923e-03 + 1.21090534529e-02 1.55937378378e-02 1.94536795471e-02 2.31387869200e-02 2.59618688149e-02 2.73903662614e-02 + 2.71142998602e-02 2.72051400328e-02 2.71142998602e-02 2.65400648390e-02 2.49964037842e-02 2.24043982374e-02 + 1.91106081253e-02 1.55937378378e-02 1.22800512627e-02 9.47290433111e-03 7.31933010296e-03 5.82746138702e-03 + 4.94632325183e-03 4.65175947716e-03 4.94632325183e-03 5.82746138702e-03 7.31933010296e-03 9.47290433111e-03 + 1.22800512627e-02 1.55937378378e-02 1.91106081253e-02 2.24043982374e-02 2.49964037842e-02 2.65400648390e-02 + 2.52445347088e-02 2.52445347088e-02 2.46286629032e-02 2.32030440049e-02 2.09446754967e-02 1.81179302207e-02 + 1.50739196267e-02 1.21090534529e-02 9.47290433111e-03 7.36052161959e-03 5.85076317272e-03 4.90588959931e-03 + 4.45367296569e-03 4.45367296569e-03 4.90588959931e-03 5.85076317272e-03 7.36052161959e-03 9.47290433111e-03 + 1.21090534529e-02 1.50739196267e-02 1.81179302207e-02 2.09446754967e-02 2.32030440049e-02 2.46286629032e-02 + 2.21386056500e-02 2.17948830411e-02 2.07196781889e-02 1.89263764236e-02 1.66276099946e-02 1.41149739580e-02 + 1.16095381953e-02 9.28357359923e-03 7.31933010296e-03 5.85076317272e-03 4.89318523683e-03 4.37599558137e-03 + 4.21584246472e-03 4.37599558137e-03 4.89318523683e-03 5.85076317272e-03 7.31933010296e-03 9.28357359923e-03 + 1.16095381953e-02 1.41149739580e-02 1.66276099946e-02 1.89263764236e-02 2.07196781889e-02 2.17948830411e-02 + 1.85132763207e-02 1.78888288560e-02 1.66389339973e-02 1.48932100517e-02 1.28937939562e-02 1.08500532301e-02 + 8.89920278516e-03 7.17862759619e-03 5.82746138702e-03 4.90588959931e-03 4.37599558137e-03 4.14918646508e-03 + 4.14918646508e-03 4.37599558137e-03 4.90588959931e-03 5.82746138702e-03 7.17862759619e-03 8.89920278516e-03 + 1.08500532301e-02 1.28937939562e-02 1.48932100517e-02 1.66389339973e-02 1.78888288560e-02 1.85132763207e-02 + 1.50424663757e-02 1.43188164440e-02 1.31234388541e-02 1.16029685725e-02 9.96234500644e-03 8.36360112567e-03 + 6.92803651720e-03 5.76667312114e-03 4.94632325183e-03 4.45367296569e-03 4.21584246472e-03 4.14918646508e-03 + 4.21584246473e-03 4.45367296569e-03 4.94632325183e-03 5.76667312114e-03 6.92803651720e-03 8.36360112567e-03 + 9.96234500643e-03 1.16029685725e-02 1.31234388541e-02 1.43188164440e-02 1.50424663757e-02 1.52762540169e-02 + 1.21045128275e-02 1.14031750108e-02 1.03422447642e-02 9.07031679536e-03 7.77912772161e-03 6.62087909721e-03 + 5.69411798450e-03 5.04343778102e-03 4.65175947716e-03 4.45367296569e-03 4.37599558137e-03 4.37599558137e-03 + 4.45367296569e-03 4.65175947716e-03 5.04343778102e-03 5.69411798450e-03 6.62087909721e-03 7.77912772161e-03 + 9.07031679536e-03 1.03422447642e-02 1.14031750108e-02 1.21045128275e-02 1.24265880360e-02 1.24265880360e-02 + 9.78219490488e-03 9.13724506495e-03 8.23785813083e-03 7.25301575416e-03 6.36555591034e-03 5.69328932590e-03 + 5.26652136817e-03 5.04343778102e-03 4.94632325183e-03 4.90588959931e-03 4.89318523683e-03 4.90588959931e-03 + 4.94632325183e-03 5.04343778102e-03 5.26652136817e-03 5.69328932590e-03 6.36555591034e-03 7.25301575416e-03 + 8.23785813083e-03 9.13724506495e-03 9.78219490488e-03 1.01198499891e-02 1.02153626600e-02 1.01198499891e-02 + 8.04455907974e-03 7.50451749096e-03 6.85668012358e-03 6.26631005461e-03 5.86550216407e-03 5.69328932590e-03 + 5.69411798450e-03 5.76667312114e-03 5.82746138702e-03 5.85076317272e-03 5.85076317272e-03 5.82746138702e-03 + 5.76667312114e-03 5.69411798450e-03 5.69328932590e-03 5.86550216407e-03 6.26631005461e-03 6.85668012358e-03 + 7.50451749096e-03 8.04455907974e-03 8.37400390520e-03 8.50665152156e-03 8.50665152157e-03 8.37400390520e-03 + 6.92803651720e-03 6.62087909721e-03 6.36555591034e-03 6.26631005461e-03 6.36555591033e-03 6.62087909720e-03 + 6.92803651719e-03 7.17862759619e-03 7.31933010296e-03 7.36052161958e-03 7.31933010296e-03 7.17862759619e-03 + 6.92803651719e-03 6.62087909720e-03 6.36555591033e-03 6.26631005461e-03 6.36555591034e-03 6.62087909721e-03 + 6.92803651720e-03 7.17862759619e-03 7.31933010296e-03 7.36052161959e-03 7.31933010296e-03 7.17862759619e-03 + 6.53729803367e-03 6.62087909721e-03 6.85668012358e-03 7.25301575416e-03 7.77912772161e-03 8.36360112566e-03 + 8.89920278515e-03 9.28357359922e-03 9.47290433110e-03 9.47290433110e-03 9.28357359922e-03 8.89920278515e-03 + 8.36360112566e-03 7.77912772161e-03 7.25301575415e-03 6.85668012358e-03 6.62087909721e-03 6.53729803366e-03 + 6.56138198057e-03 6.62684043801e-03 6.67439308888e-03 6.67439308889e-03 6.62684043802e-03 6.56138198057e-03 + 6.92803651720e-03 7.50451749096e-03 8.23785813083e-03 9.07031679536e-03 9.96234500643e-03 1.08500532301e-02 + 1.16095381953e-02 1.21090534529e-02 1.22800512627e-02 1.21090534529e-02 1.16095381953e-02 1.08500532301e-02 + 9.96234500643e-03 9.07031679536e-03 8.23785813083e-03 7.50451749096e-03 6.92803651720e-03 6.56138198057e-03 + 6.39967919814e-03 6.36714430779e-03 6.36996915701e-03 6.36714430779e-03 6.39967919814e-03 6.56138198057e-03 + 8.04455907974e-03 9.13724506496e-03 1.03422447642e-02 1.16029685725e-02 1.28937939562e-02 1.41149739580e-02 + 1.50739196267e-02 1.55937378378e-02 1.55937378378e-02 1.50739196267e-02 1.41149739580e-02 1.28937939562e-02 + 1.16029685725e-02 1.03422447642e-02 9.13724506496e-03 8.04455907974e-03 7.17862759619e-03 6.62684043801e-03 + 6.36714430779e-03 6.28719817635e-03 6.28719817635e-03 6.36714430779e-03 6.62684043802e-03 7.17862759619e-03 + 9.78219490488e-03 1.14031750108e-02 1.31234388541e-02 1.48932100517e-02 1.66276099946e-02 1.81179302207e-02 + 1.91106081253e-02 1.94536795471e-02 1.91106081253e-02 1.81179302207e-02 1.66276099946e-02 1.48932100517e-02 + 1.31234388541e-02 1.14031750108e-02 9.78219490488e-03 8.37400390520e-03 7.31933010296e-03 6.67439308888e-03 + 6.36996915701e-03 6.28719817635e-03 6.36996915701e-03 6.67439308888e-03 7.31933010296e-03 8.37400390520e-03 + 1.21045128275e-02 1.43188164440e-02 1.66389339973e-02 1.89263764236e-02 2.09446754967e-02 2.24043982374e-02 + 2.31387869200e-02 2.31387869200e-02 2.24043982374e-02 2.09446754967e-02 1.89263764236e-02 1.66389339973e-02 + 1.43188164440e-02 1.21045128275e-02 1.01198499891e-02 8.50665152157e-03 7.36052161959e-03 6.67439308888e-03 + 6.36714430779e-03 6.36714430779e-03 6.67439308888e-03 7.36052161959e-03 8.50665152157e-03 1.01198499891e-02 + 1.50424663757e-02 1.78888288560e-02 2.07196781889e-02 2.32030440049e-02 2.49964037842e-02 2.59618688149e-02 + 2.62414819209e-02 2.59618688149e-02 2.49964037842e-02 2.32030440049e-02 2.07196781889e-02 1.78888288560e-02 + 1.50424663757e-02 1.24265880360e-02 1.02153626600e-02 8.50665152157e-03 7.31933010296e-03 6.62684043801e-03 + 6.39967919814e-03 6.62684043801e-03 7.31933010296e-03 8.50665152157e-03 1.02153626600e-02 1.24265880360e-02 + 1.85132763207e-02 2.17948830411e-02 2.46286629032e-02 2.65400648390e-02 2.73903662614e-02 2.75584598461e-02 + 2.75584598461e-02 2.73903662614e-02 2.65400648390e-02 2.46286629032e-02 2.17948830411e-02 1.85132763207e-02 + 1.52762540169e-02 1.24265880360e-02 1.01198499891e-02 8.37400390520e-03 7.17862759619e-03 6.56138198057e-03 + 6.56138198057e-03 7.17862759619e-03 8.37400390520e-03 1.01198499891e-02 1.24265880360e-02 1.52762540169e-02 + 2.33118163733e-02 2.55791633527e-02 2.62352804996e-02 2.54927185045e-02 2.45139707404e-02 2.45139707404e-02 + 2.54927185045e-02 2.62352804996e-02 2.55791633527e-02 2.33118163733e-02 1.99975947255e-02 1.63906429721e-02 + 1.30485807277e-02 1.02401100733e-02 8.04455907974e-03 6.50338402317e-03 5.69411798450e-03 5.69411798450e-03 + 6.50338402317e-03 8.04455907974e-03 1.02401100733e-02 1.30485807277e-02 1.63906429721e-02 1.99975947255e-02 + 2.55791633527e-02 2.61140936360e-02 2.45139707404e-02 2.20787139947e-02 2.09116171502e-02 2.20787139947e-02 + 2.45139707404e-02 2.61140936360e-02 2.55791633527e-02 2.30253665656e-02 1.93871115228e-02 1.56224022211e-02 + 1.22934163580e-02 9.57619631350e-03 7.50451749096e-03 6.16385997204e-03 5.69328932590e-03 6.16385997204e-03 + 7.50451749096e-03 9.57619631350e-03 1.22934163580e-02 1.56224022211e-02 1.93871115228e-02 2.30253665656e-02 + 2.62352804996e-02 2.45139707404e-02 2.09116171502e-02 1.79304117733e-02 1.79304117733e-02 2.09116171502e-02 + 2.45139707404e-02 2.62352804996e-02 2.51931467427e-02 2.20777720561e-02 1.81502966987e-02 1.43894839458e-02 + 1.12137577955e-02 8.68876908730e-03 6.85668012358e-03 5.86550216407e-03 5.86550216407e-03 6.85668012358e-03 + 8.68876908730e-03 1.12137577955e-02 1.43894839458e-02 1.81502966987e-02 2.20777720561e-02 2.51931467427e-02 + 2.54927185045e-02 2.20787139947e-02 1.79304117733e-02 1.60510791347e-02 1.79304117733e-02 2.20787139947e-02 + 2.54927185045e-02 2.61756575962e-02 2.40839675381e-02 2.03983415996e-02 1.64062528191e-02 1.28580577518e-02 + 9.96167567605e-03 7.73176989509e-03 6.26631005461e-03 5.74651192180e-03 6.26631005461e-03 7.73176989509e-03 + 9.96167567605e-03 1.28580577518e-02 1.64062528191e-02 2.03983415996e-02 2.40839675381e-02 2.61756575962e-02 + 2.45139707404e-02 2.09116171502e-02 1.79304117733e-02 1.79304117733e-02 2.09116171502e-02 2.45139707404e-02 + 2.62352804996e-02 2.51931467427e-02 2.20777720561e-02 1.81502966987e-02 1.43894839458e-02 1.12137577955e-02 + 8.68876908730e-03 6.85668012358e-03 5.86550216407e-03 5.86550216407e-03 6.85668012358e-03 8.68876908730e-03 + 1.12137577955e-02 1.43894839458e-02 1.81502966987e-02 2.20777720561e-02 2.51931467427e-02 2.62352804996e-02 + 2.45139707404e-02 2.20787139947e-02 2.09116171502e-02 2.20787139947e-02 2.45139707404e-02 2.61140936360e-02 + 2.55791633527e-02 2.30253665656e-02 1.93871115228e-02 1.56224022211e-02 1.22934163580e-02 9.57619631350e-03 + 7.50451749096e-03 6.16385997204e-03 5.69328932590e-03 6.16385997204e-03 7.50451749096e-03 9.57619631350e-03 + 1.22934163580e-02 1.56224022211e-02 1.93871115228e-02 2.30253665656e-02 2.55791633527e-02 2.61140936360e-02 + 2.54927185045e-02 2.45139707404e-02 2.45139707404e-02 2.54927185045e-02 2.62352804996e-02 2.55791633527e-02 + 2.33118163733e-02 1.99975947255e-02 1.63906429721e-02 1.30485807277e-02 1.02401100733e-02 8.04455907974e-03 + 6.50338402317e-03 5.69411798450e-03 5.69411798450e-03 6.50338402317e-03 8.04455907974e-03 1.02401100733e-02 + 1.30485807277e-02 1.63906429721e-02 1.99975947255e-02 2.33118163733e-02 2.55791633527e-02 2.62352804996e-02 + 2.62352804996e-02 2.61140936360e-02 2.62352804996e-02 2.61756575962e-02 2.51931467427e-02 2.30253665656e-02 + 1.99975947255e-02 1.66439398964e-02 1.34169388324e-02 1.06109348738e-02 8.37400390520e-03 6.75449318420e-03 + 5.76667312114e-03 5.43239778449e-03 5.76667312114e-03 6.75449318420e-03 8.37400390520e-03 1.06109348738e-02 + 1.34169388324e-02 1.66439398964e-02 1.99975947255e-02 2.30253665656e-02 2.51931467428e-02 2.61756575962e-02 + 2.55791633527e-02 2.55791633527e-02 2.51931467427e-02 2.40839675381e-02 2.20777720561e-02 1.93871115228e-02 + 1.63906429721e-02 1.34169388324e-02 1.07225418333e-02 8.50665152157e-03 6.87426464911e-03 5.82746138702e-03 + 5.32068131556e-03 5.32068131556e-03 5.82746138702e-03 6.87426464911e-03 8.50665152157e-03 1.07225418333e-02 + 1.34169388324e-02 1.63906429721e-02 1.93871115228e-02 2.20777720561e-02 2.40839675381e-02 2.51931467428e-02 + 2.33118163733e-02 2.30253665656e-02 2.20777720561e-02 2.03983415996e-02 1.81502966987e-02 1.56224022211e-02 + 1.30485807277e-02 1.06109348738e-02 8.50665152157e-03 6.90308343843e-03 5.85076317272e-03 5.28636096575e-03 + 5.11303460195e-03 5.28636096575e-03 5.85076317272e-03 6.90308343843e-03 8.50665152157e-03 1.06109348738e-02 + 1.30485807277e-02 1.56224022211e-02 1.81502966987e-02 2.03983415996e-02 2.20777720561e-02 2.30253665656e-02 + 1.99975947255e-02 1.93871115228e-02 1.81502966987e-02 1.64062528191e-02 1.43894839458e-02 1.22934163580e-02 + 1.02401100733e-02 8.37400390520e-03 6.87426464911e-03 5.85076317272e-03 5.27978060753e-03 5.04614391795e-03 + 5.04614391795e-03 5.27978060753e-03 5.85076317272e-03 6.87426464911e-03 8.37400390520e-03 1.02401100733e-02 + 1.22934163580e-02 1.43894839458e-02 1.64062528191e-02 1.81502966987e-02 1.93871115228e-02 1.99975947255e-02 + 1.63906429721e-02 1.56224022211e-02 1.43894839458e-02 1.28580577518e-02 1.12137577955e-02 9.57619631350e-03 + 8.04455907974e-03 6.75449318420e-03 5.82746138702e-03 5.28636096575e-03 5.04614391795e-03 4.98513742725e-03 + 5.04614391795e-03 5.28636096575e-03 5.82746138702e-03 6.75449318420e-03 8.04455907974e-03 9.57619631350e-03 + 1.12137577955e-02 1.28580577518e-02 1.43894839458e-02 1.56224022211e-02 1.63906429721e-02 1.66439398964e-02 + 1.30485807277e-02 1.22934163580e-02 1.12137577955e-02 9.96167567604e-03 8.68876908730e-03 7.50451749096e-03 + 6.50338402317e-03 5.76667312114e-03 5.32068131556e-03 5.11303460195e-03 5.04614391795e-03 5.04614391795e-03 + 5.11303460195e-03 5.32068131556e-03 5.76667312114e-03 6.50338402317e-03 7.50451749096e-03 8.68876908730e-03 + 9.96167567604e-03 1.12137577955e-02 1.22934163580e-02 1.30485807277e-02 1.34169388324e-02 1.34169388324e-02 + 1.02401100733e-02 9.57619631350e-03 8.68876908730e-03 7.73176989509e-03 6.85668012358e-03 6.16385997204e-03 + 5.69411798450e-03 5.43239778449e-03 5.32068131556e-03 5.28636096575e-03 5.27978060753e-03 5.28636096575e-03 + 5.32068131556e-03 5.43239778449e-03 5.69411798450e-03 6.16385997204e-03 6.85668012358e-03 7.73176989509e-03 + 8.68876908730e-03 9.57619631350e-03 1.02401100733e-02 1.06109348738e-02 1.07225418333e-02 1.06109348738e-02 + 8.04455907974e-03 7.50451749096e-03 6.85668012358e-03 6.26631005461e-03 5.86550216407e-03 5.69328932590e-03 + 5.69411798450e-03 5.76667312114e-03 5.82746138702e-03 5.85076317272e-03 5.85076317272e-03 5.82746138702e-03 + 5.76667312114e-03 5.69411798450e-03 5.69328932590e-03 5.86550216407e-03 6.26631005461e-03 6.85668012358e-03 + 7.50451749096e-03 8.04455907974e-03 8.37400390520e-03 8.50665152156e-03 8.50665152156e-03 8.37400390520e-03 + 6.50338402317e-03 6.16385997204e-03 5.86550216407e-03 5.74651192180e-03 5.86550216407e-03 6.16385997204e-03 + 6.50338402317e-03 6.75449318420e-03 6.87426464911e-03 6.90308343843e-03 6.87426464911e-03 6.75449318420e-03 + 6.50338402317e-03 6.16385997204e-03 5.86550216407e-03 5.74651192180e-03 5.86550216407e-03 6.16385997204e-03 + 6.50338402317e-03 6.75449318420e-03 6.87426464911e-03 6.90308343843e-03 6.87426464911e-03 6.75449318420e-03 + 5.69411798450e-03 5.69328932590e-03 5.86550216407e-03 6.26631005461e-03 6.85668012358e-03 7.50451749096e-03 + 8.04455907974e-03 8.37400390520e-03 8.50665152156e-03 8.50665152156e-03 8.37400390520e-03 8.04455907974e-03 + 7.50451749096e-03 6.85668012358e-03 6.26631005461e-03 5.86550216407e-03 5.69328932590e-03 5.69411798450e-03 + 5.76667312114e-03 5.82746138702e-03 5.85076317272e-03 5.85076317272e-03 5.82746138702e-03 5.76667312114e-03 + 5.69411798450e-03 6.16385997204e-03 6.85668012358e-03 7.73176989509e-03 8.68876908730e-03 9.57619631350e-03 + 1.02401100733e-02 1.06109348738e-02 1.07225418333e-02 1.06109348738e-02 1.02401100733e-02 9.57619631350e-03 + 8.68876908730e-03 7.73176989509e-03 6.85668012358e-03 6.16385997204e-03 5.69411798450e-03 5.43239778449e-03 + 5.32068131556e-03 5.28636096575e-03 5.27978060753e-03 5.28636096575e-03 5.32068131556e-03 5.43239778449e-03 + 6.50338402317e-03 7.50451749096e-03 8.68876908730e-03 9.96167567604e-03 1.12137577955e-02 1.22934163580e-02 + 1.30485807277e-02 1.34169388324e-02 1.34169388324e-02 1.30485807277e-02 1.22934163580e-02 1.12137577955e-02 + 9.96167567604e-03 8.68876908730e-03 7.50451749096e-03 6.50338402317e-03 5.76667312114e-03 5.32068131556e-03 + 5.11303460195e-03 5.04614391795e-03 5.04614391795e-03 5.11303460195e-03 5.32068131556e-03 5.76667312114e-03 + 8.04455907974e-03 9.57619631350e-03 1.12137577955e-02 1.28580577518e-02 1.43894839458e-02 1.56224022211e-02 + 1.63906429721e-02 1.66439398964e-02 1.63906429721e-02 1.56224022211e-02 1.43894839458e-02 1.28580577518e-02 + 1.12137577955e-02 9.57619631350e-03 8.04455907974e-03 6.75449318420e-03 5.82746138702e-03 5.28636096575e-03 + 5.04614391795e-03 4.98513742725e-03 5.04614391795e-03 5.28636096575e-03 5.82746138702e-03 6.75449318420e-03 + 1.02401100733e-02 1.22934163580e-02 1.43894839458e-02 1.64062528191e-02 1.81502966987e-02 1.93871115228e-02 + 1.99975947255e-02 1.99975947255e-02 1.93871115228e-02 1.81502966987e-02 1.64062528191e-02 1.43894839458e-02 + 1.22934163580e-02 1.02401100733e-02 8.37400390520e-03 6.87426464911e-03 5.85076317272e-03 5.27978060753e-03 + 5.04614391795e-03 5.04614391795e-03 5.27978060753e-03 5.85076317272e-03 6.87426464911e-03 8.37400390520e-03 + 1.30485807277e-02 1.56224022211e-02 1.81502966987e-02 2.03983415996e-02 2.20777720561e-02 2.30253665656e-02 + 2.33118163733e-02 2.30253665656e-02 2.20777720561e-02 2.03983415996e-02 1.81502966987e-02 1.56224022211e-02 + 1.30485807277e-02 1.06109348738e-02 8.50665152157e-03 6.90308343843e-03 5.85076317272e-03 5.28636096575e-03 + 5.11303460195e-03 5.28636096575e-03 5.85076317272e-03 6.90308343843e-03 8.50665152157e-03 1.06109348738e-02 + 1.63906429721e-02 1.93871115228e-02 2.20777720561e-02 2.40839675381e-02 2.51931467427e-02 2.55791633527e-02 + 2.55791633527e-02 2.51931467428e-02 2.40839675381e-02 2.20777720561e-02 1.93871115228e-02 1.63906429721e-02 + 1.34169388324e-02 1.07225418333e-02 8.50665152157e-03 6.87426464911e-03 5.82746138702e-03 5.32068131556e-03 + 5.32068131556e-03 5.82746138702e-03 6.87426464911e-03 8.50665152157e-03 1.07225418333e-02 1.34169388324e-02 + 1.99975947255e-02 2.30253665656e-02 2.51931467427e-02 2.61756575962e-02 2.62352804996e-02 2.61140936360e-02 + 2.62352804996e-02 2.61756575962e-02 2.51931467428e-02 2.30253665656e-02 1.99975947255e-02 1.66439398964e-02 + 1.34169388324e-02 1.06109348738e-02 8.37400390520e-03 6.75449318420e-03 5.76667312114e-03 5.43239778449e-03 + 5.76667312114e-03 6.75449318420e-03 8.37400390520e-03 1.06109348738e-02 1.34169388324e-02 1.66439398964e-02 + 2.62414819209e-02 2.75584598461e-02 2.69081613820e-02 2.52955690008e-02 2.44579386769e-02 2.52955690008e-02 + 2.69081613820e-02 2.75584598461e-02 2.62414819209e-02 2.31387869200e-02 1.91106081253e-02 1.50739196267e-02 + 1.16095381953e-02 8.89920278516e-03 6.92803651720e-03 5.69411798450e-03 5.26652136817e-03 5.69411798450e-03 + 6.92803651720e-03 8.89920278516e-03 1.16095381953e-02 1.50739196267e-02 1.91106081253e-02 2.31387869200e-02 + 2.75584598461e-02 2.65224863971e-02 2.36141349499e-02 2.10846196163e-02 2.10846196163e-02 2.36141349499e-02 + 2.65224863971e-02 2.75584598461e-02 2.59618688149e-02 2.24043982374e-02 1.81179302207e-02 1.41149739580e-02 + 1.08500532301e-02 8.36360112567e-03 6.62087909721e-03 5.69328932590e-03 5.69328932590e-03 6.62087909721e-03 + 8.36360112567e-03 1.08500532301e-02 1.41149739580e-02 1.81179302207e-02 2.24043982374e-02 2.59618688149e-02 + 2.69081613820e-02 2.36141349499e-02 1.95329704288e-02 1.76763940774e-02 1.95329704288e-02 2.36141349499e-02 + 2.69081613820e-02 2.73903662614e-02 2.49964037842e-02 2.09446754967e-02 1.66276099946e-02 1.28937939562e-02 + 9.96234500644e-03 7.77912772161e-03 6.36555591033e-03 5.86550216407e-03 6.36555591034e-03 7.77912772161e-03 + 9.96234500644e-03 1.28937939562e-02 1.66276099946e-02 2.09446754967e-02 2.49964037842e-02 2.73903662614e-02 + 2.52955690008e-02 2.10846196163e-02 1.76763940774e-02 1.76763940774e-02 2.10846196163e-02 2.52955690008e-02 + 2.74769895380e-02 2.65400648390e-02 2.32030440049e-02 1.89263764236e-02 1.48932100517e-02 1.16029685725e-02 + 9.07031679536e-03 7.25301575415e-03 6.26631005461e-03 6.26631005461e-03 7.25301575416e-03 9.07031679536e-03 + 1.16029685725e-02 1.48932100517e-02 1.89263764236e-02 2.32030440049e-02 2.65400648390e-02 2.74769895380e-02 + 2.44579386769e-02 2.10846196163e-02 1.95329704288e-02 2.10846196163e-02 2.44579386769e-02 2.70513354759e-02 + 2.71142998602e-02 2.46286629032e-02 2.07196781889e-02 1.66389339973e-02 1.31234388541e-02 1.03422447642e-02 + 8.23785813083e-03 6.85668012358e-03 6.36555591034e-03 6.85668012358e-03 8.23785813083e-03 1.03422447642e-02 + 1.31234388541e-02 1.66389339973e-02 2.07196781889e-02 2.46286629032e-02 2.71142998602e-02 2.70513354759e-02 + 2.52955690008e-02 2.36141349499e-02 2.36141349499e-02 2.52955690008e-02 2.70513354759e-02 2.72051400328e-02 + 2.52445347087e-02 2.17948830411e-02 1.78888288560e-02 1.43188164440e-02 1.14031750108e-02 9.13724506495e-03 + 7.50451749096e-03 6.62087909721e-03 6.62087909721e-03 7.50451749096e-03 9.13724506496e-03 1.14031750108e-02 + 1.43188164440e-02 1.78888288560e-02 2.17948830411e-02 2.52445347087e-02 2.72051400328e-02 2.70513354759e-02 + 2.69081613820e-02 2.65224863971e-02 2.69081613820e-02 2.74769895380e-02 2.71142998602e-02 2.52445347087e-02 + 2.21386056500e-02 1.85132763207e-02 1.50424663757e-02 1.21045128275e-02 9.78219490488e-03 8.04455907974e-03 + 6.92803651720e-03 6.53729803366e-03 6.92803651720e-03 8.04455907974e-03 9.78219490488e-03 1.21045128275e-02 + 1.50424663757e-02 1.85132763207e-02 2.21386056500e-02 2.52445347088e-02 2.71142998602e-02 2.74769895380e-02 + 2.75584598461e-02 2.75584598461e-02 2.73903662614e-02 2.65400648390e-02 2.46286629032e-02 2.17948830411e-02 + 1.85132763207e-02 1.52762540169e-02 1.24265880360e-02 1.01198499891e-02 8.37400390520e-03 7.17862759619e-03 + 6.56138198057e-03 6.56138198057e-03 7.17862759619e-03 8.37400390520e-03 1.01198499891e-02 1.24265880360e-02 + 1.52762540169e-02 1.85132763207e-02 2.17948830411e-02 2.46286629032e-02 2.65400648390e-02 2.73903662614e-02 + 2.62414819209e-02 2.59618688149e-02 2.49964037842e-02 2.32030440049e-02 2.07196781889e-02 1.78888288560e-02 + 1.50424663757e-02 1.24265880360e-02 1.02153626600e-02 8.50665152157e-03 7.31933010296e-03 6.62684043801e-03 + 6.39967919814e-03 6.62684043801e-03 7.31933010296e-03 8.50665152157e-03 1.02153626600e-02 1.24265880360e-02 + 1.50424663757e-02 1.78888288560e-02 2.07196781889e-02 2.32030440049e-02 2.49964037842e-02 2.59618688149e-02 + 2.31387869200e-02 2.24043982374e-02 2.09446754967e-02 1.89263764236e-02 1.66389339973e-02 1.43188164440e-02 + 1.21045128275e-02 1.01198499891e-02 8.50665152157e-03 7.36052161959e-03 6.67439308888e-03 6.36714430779e-03 + 6.36714430779e-03 6.67439308888e-03 7.36052161959e-03 8.50665152157e-03 1.01198499891e-02 1.21045128275e-02 + 1.43188164440e-02 1.66389339973e-02 1.89263764236e-02 2.09446754967e-02 2.24043982374e-02 2.31387869200e-02 + 1.91106081253e-02 1.81179302207e-02 1.66276099946e-02 1.48932100517e-02 1.31234388541e-02 1.14031750108e-02 + 9.78219490488e-03 8.37400390520e-03 7.31933010296e-03 6.67439308888e-03 6.36996915701e-03 6.28719817635e-03 + 6.36996915701e-03 6.67439308888e-03 7.31933010296e-03 8.37400390520e-03 9.78219490488e-03 1.14031750108e-02 + 1.31234388541e-02 1.48932100517e-02 1.66276099946e-02 1.81179302207e-02 1.91106081253e-02 1.94536795471e-02 + 1.50739196267e-02 1.41149739580e-02 1.28937939562e-02 1.16029685725e-02 1.03422447642e-02 9.13724506496e-03 + 8.04455907974e-03 7.17862759619e-03 6.62684043802e-03 6.36714430779e-03 6.28719817635e-03 6.28719817635e-03 + 6.36714430779e-03 6.62684043801e-03 7.17862759619e-03 8.04455907974e-03 9.13724506495e-03 1.03422447642e-02 + 1.16029685725e-02 1.28937939562e-02 1.41149739580e-02 1.50739196267e-02 1.55937378378e-02 1.55937378378e-02 + 1.16095381953e-02 1.08500532301e-02 9.96234500643e-03 9.07031679536e-03 8.23785813083e-03 7.50451749096e-03 + 6.92803651720e-03 6.56138198057e-03 6.39967919814e-03 6.36714430779e-03 6.36996915701e-03 6.36714430779e-03 + 6.39967919814e-03 6.56138198057e-03 6.92803651720e-03 7.50451749096e-03 8.23785813083e-03 9.07031679536e-03 + 9.96234500643e-03 1.08500532301e-02 1.16095381953e-02 1.21090534529e-02 1.22800512627e-02 1.21090534529e-02 + 8.89920278515e-03 8.36360112566e-03 7.77912772161e-03 7.25301575416e-03 6.85668012358e-03 6.62087909721e-03 + 6.53729803367e-03 6.56138198057e-03 6.62684043802e-03 6.67439308889e-03 6.67439308888e-03 6.62684043801e-03 + 6.56138198057e-03 6.53729803366e-03 6.62087909721e-03 6.85668012358e-03 7.25301575415e-03 7.77912772161e-03 + 8.36360112566e-03 8.89920278515e-03 9.28357359922e-03 9.47290433110e-03 9.47290433110e-03 9.28357359922e-03 + 6.92803651719e-03 6.62087909720e-03 6.36555591033e-03 6.26631005461e-03 6.36555591034e-03 6.62087909721e-03 + 6.92803651720e-03 7.17862759619e-03 7.31933010296e-03 7.36052161959e-03 7.31933010296e-03 7.17862759619e-03 + 6.92803651720e-03 6.62087909721e-03 6.36555591034e-03 6.26631005461e-03 6.36555591033e-03 6.62087909720e-03 + 6.92803651719e-03 7.17862759619e-03 7.31933010296e-03 7.36052161958e-03 7.31933010296e-03 7.17862759619e-03 + 5.69411798450e-03 5.69328932590e-03 5.86550216407e-03 6.26631005461e-03 6.85668012358e-03 7.50451749096e-03 + 8.04455907974e-03 8.37400390520e-03 8.50665152157e-03 8.50665152157e-03 8.37400390520e-03 8.04455907974e-03 + 7.50451749096e-03 6.85668012358e-03 6.26631005461e-03 5.86550216407e-03 5.69328932590e-03 5.69411798450e-03 + 5.76667312114e-03 5.82746138702e-03 5.85076317272e-03 5.85076317272e-03 5.82746138702e-03 5.76667312114e-03 + 5.26652136817e-03 5.69328932590e-03 6.36555591034e-03 7.25301575416e-03 8.23785813083e-03 9.13724506495e-03 + 9.78219490488e-03 1.01198499891e-02 1.02153626600e-02 1.01198499891e-02 9.78219490488e-03 9.13724506495e-03 + 8.23785813083e-03 7.25301575416e-03 6.36555591034e-03 5.69328932590e-03 5.26652136817e-03 5.04343778102e-03 + 4.94632325183e-03 4.90588959931e-03 4.89318523683e-03 4.90588959931e-03 4.94632325183e-03 5.04343778102e-03 + 5.69411798450e-03 6.62087909721e-03 7.77912772161e-03 9.07031679536e-03 1.03422447642e-02 1.14031750108e-02 + 1.21045128275e-02 1.24265880360e-02 1.24265880360e-02 1.21045128275e-02 1.14031750108e-02 1.03422447642e-02 + 9.07031679536e-03 7.77912772161e-03 6.62087909721e-03 5.69411798450e-03 5.04343778102e-03 4.65175947716e-03 + 4.45367296569e-03 4.37599558137e-03 4.37599558137e-03 4.45367296569e-03 4.65175947716e-03 5.04343778102e-03 + 6.92803651720e-03 8.36360112567e-03 9.96234500644e-03 1.16029685725e-02 1.31234388541e-02 1.43188164440e-02 + 1.50424663757e-02 1.52762540169e-02 1.50424663757e-02 1.43188164440e-02 1.31234388541e-02 1.16029685725e-02 + 9.96234500643e-03 8.36360112567e-03 6.92803651720e-03 5.76667312114e-03 4.94632325183e-03 4.45367296569e-03 + 4.21584246473e-03 4.14918646508e-03 4.21584246472e-03 4.45367296569e-03 4.94632325183e-03 5.76667312114e-03 + 8.89920278516e-03 1.08500532301e-02 1.28937939562e-02 1.48932100517e-02 1.66389339973e-02 1.78888288560e-02 + 1.85132763207e-02 1.85132763207e-02 1.78888288560e-02 1.66389339973e-02 1.48932100517e-02 1.28937939562e-02 + 1.08500532301e-02 8.89920278516e-03 7.17862759619e-03 5.82746138702e-03 4.90588959931e-03 4.37599558137e-03 + 4.14918646508e-03 4.14918646508e-03 4.37599558137e-03 4.90588959931e-03 5.82746138702e-03 7.17862759619e-03 + 1.16095381953e-02 1.41149739580e-02 1.66276099946e-02 1.89263764236e-02 2.07196781889e-02 2.17948830411e-02 + 2.21386056500e-02 2.17948830411e-02 2.07196781889e-02 1.89263764236e-02 1.66276099946e-02 1.41149739580e-02 + 1.16095381953e-02 9.28357359923e-03 7.31933010296e-03 5.85076317272e-03 4.89318523683e-03 4.37599558137e-03 + 4.21584246472e-03 4.37599558137e-03 4.89318523683e-03 5.85076317272e-03 7.31933010296e-03 9.28357359923e-03 + 1.50739196267e-02 1.81179302207e-02 2.09446754967e-02 2.32030440049e-02 2.46286629032e-02 2.52445347088e-02 + 2.52445347088e-02 2.46286629032e-02 2.32030440049e-02 2.09446754967e-02 1.81179302207e-02 1.50739196267e-02 + 1.21090534529e-02 9.47290433111e-03 7.36052161959e-03 5.85076317272e-03 4.90588959931e-03 4.45367296569e-03 + 4.45367296569e-03 4.90588959931e-03 5.85076317272e-03 7.36052161959e-03 9.47290433111e-03 1.21090534529e-02 + 1.91106081253e-02 2.24043982374e-02 2.49964037842e-02 2.65400648390e-02 2.71142998602e-02 2.72051400328e-02 + 2.71142998602e-02 2.65400648390e-02 2.49964037842e-02 2.24043982374e-02 1.91106081253e-02 1.55937378378e-02 + 1.22800512627e-02 9.47290433111e-03 7.31933010296e-03 5.82746138702e-03 4.94632325183e-03 4.65175947716e-03 + 4.94632325183e-03 5.82746138702e-03 7.31933010296e-03 9.47290433111e-03 1.22800512627e-02 1.55937378378e-02 + 2.31387869200e-02 2.59618688149e-02 2.73903662614e-02 2.74769895380e-02 2.70513354759e-02 2.70513354759e-02 + 2.74769895380e-02 2.73903662614e-02 2.59618688149e-02 2.31387869200e-02 1.94536795471e-02 1.55937378378e-02 + 1.21090534529e-02 9.28357359923e-03 7.17862759619e-03 5.76667312114e-03 5.04343778102e-03 5.04343778102e-03 + 5.76667312114e-03 7.17862759619e-03 9.28357359923e-03 1.21090534529e-02 1.55937378378e-02 1.94536795471e-02 + 3.06058831029e-02 3.03789244340e-02 2.81921950446e-02 2.61164989591e-02 2.61164989591e-02 2.81921950446e-02 + 3.03789244340e-02 3.06058831029e-02 2.81653274579e-02 2.37301976795e-02 1.86355176327e-02 1.40806383265e-02 + 1.06051613742e-02 8.15758815908e-03 6.53729803366e-03 5.69411798450e-03 5.69411798450e-03 6.53729803367e-03 + 8.15758815908e-03 1.06051613742e-02 1.40806383265e-02 1.86355176327e-02 2.37301976795e-02 2.81653274579e-02 + 3.03789244340e-02 2.73937018060e-02 2.35389825848e-02 2.17746576295e-02 2.35389825848e-02 2.73937018060e-02 + 3.03789244340e-02 3.04051143293e-02 2.73091501295e-02 2.23752455712e-02 1.72611853896e-02 1.30618774824e-02 + 1.00210602336e-02 7.92498387887e-03 6.62087909720e-03 6.16385997204e-03 6.62087909721e-03 7.92498387888e-03 + 1.00210602336e-02 1.30618774824e-02 1.72611853896e-02 2.23752455712e-02 2.73091501295e-02 3.04051143293e-02 + 2.81921950446e-02 2.35389825848e-02 1.98434779695e-02 1.98434779695e-02 2.35389825848e-02 2.81921950446e-02 + 3.06792139923e-02 2.95890354456e-02 2.55726183949e-02 2.03920879638e-02 1.56489970468e-02 1.20439356208e-02 + 9.50248837487e-03 7.77912772161e-03 6.85668012358e-03 6.85668012358e-03 7.77912772161e-03 9.50248837488e-03 + 1.20439356208e-02 1.56489970468e-02 2.03920879638e-02 2.55726183949e-02 2.95890354456e-02 3.06792139923e-02 + 2.61164989591e-02 2.17746576295e-02 1.98434779695e-02 2.17746576295e-02 2.61164989591e-02 2.97974895143e-02 + 3.04773481040e-02 2.78013937268e-02 2.30939042849e-02 1.81430425204e-02 1.40901390285e-02 1.11481007476e-02 + 9.07031679536e-03 7.73176989509e-03 7.25301575416e-03 7.73176989509e-03 9.07031679536e-03 1.11481007476e-02 + 1.40901390285e-02 1.81430425204e-02 2.30939042849e-02 2.78013937268e-02 3.04773481040e-02 2.97974895143e-02 + 2.61164989591e-02 2.35389825848e-02 2.35389825848e-02 2.61164989591e-02 2.92436594720e-02 3.05548189106e-02 + 2.89473471924e-02 2.49902463304e-02 2.02040886880e-02 1.59287126341e-02 1.26855285494e-02 1.03422447642e-02 + 8.68876908730e-03 7.77912772161e-03 7.77912772161e-03 8.68876908730e-03 1.03422447642e-02 1.26855285494e-02 + 1.59287126341e-02 2.02040886880e-02 2.49902463304e-02 2.89473471924e-02 3.05548189106e-02 2.92436594720e-02 + 2.81921950446e-02 2.73937018060e-02 2.81921950446e-02 2.97974895143e-02 3.05548189106e-02 2.92643382604e-02 + 2.59181147281e-02 2.15195877577e-02 1.72812015630e-02 1.38961516944e-02 1.14031750108e-02 9.57619631350e-03 + 8.36360112567e-03 7.92498387888e-03 8.36360112567e-03 9.57619631350e-03 1.14031750108e-02 1.38961516944e-02 + 1.72812015630e-02 2.15195877577e-02 2.59181147281e-02 2.92643382604e-02 3.05548189106e-02 2.97974895143e-02 + 3.03789244340e-02 3.03789244340e-02 3.06792139923e-02 3.04773481039e-02 2.89473471924e-02 2.59181147280e-02 + 2.19611077293e-02 1.79741436761e-02 1.46288647205e-02 1.21045128275e-02 1.02401100733e-02 8.89920278515e-03 + 8.15758815907e-03 8.15758815907e-03 8.89920278516e-03 1.02401100733e-02 1.21045128275e-02 1.46288647205e-02 + 1.79741436761e-02 2.19611077293e-02 2.59181147281e-02 2.89473471924e-02 3.04773481040e-02 3.06792139923e-02 + 3.06058831029e-02 3.04051143293e-02 2.95890354456e-02 2.78013937268e-02 2.49902463304e-02 2.15195877577e-02 + 1.79741436761e-02 1.48656767560e-02 1.24265880360e-02 1.06109348738e-02 9.28357359923e-03 8.41997198039e-03 + 8.11230157084e-03 8.41997198039e-03 9.28357359923e-03 1.06109348738e-02 1.24265880360e-02 1.48656767560e-02 + 1.79741436761e-02 2.15195877577e-02 2.49902463304e-02 2.78013937268e-02 2.95890354456e-02 3.04051143293e-02 + 2.81653274579e-02 2.73091501295e-02 2.55726183949e-02 2.30939042849e-02 2.02040886880e-02 1.72812015630e-02 + 1.46288647205e-02 1.24265880360e-02 1.07225418333e-02 9.47290433111e-03 8.62540500905e-03 8.18383164206e-03 + 8.18383164206e-03 8.62540500905e-03 9.47290433111e-03 1.07225418333e-02 1.24265880360e-02 1.46288647205e-02 + 1.72812015630e-02 2.02040886880e-02 2.30939042849e-02 2.55726183949e-02 2.73091501295e-02 2.81653274579e-02 + 2.37301976795e-02 2.23752455712e-02 2.03920879638e-02 1.81430425204e-02 1.59287126341e-02 1.38961516944e-02 + 1.21045128275e-02 1.06109348738e-02 9.47290433111e-03 8.70256016586e-03 8.26409670065e-03 8.12161313174e-03 + 8.26409670065e-03 8.70256016587e-03 9.47290433111e-03 1.06109348738e-02 1.21045128275e-02 1.38961516944e-02 + 1.59287126341e-02 1.81430425204e-02 2.03920879638e-02 2.23752455712e-02 2.37301976795e-02 2.42075414898e-02 + 1.86355176327e-02 1.72611853896e-02 1.56489970468e-02 1.40901390285e-02 1.26855285494e-02 1.14031750108e-02 + 1.02401100733e-02 9.28357359923e-03 8.62540500906e-03 8.26409670065e-03 8.11874591476e-03 8.11874591476e-03 + 8.26409670065e-03 8.62540500906e-03 9.28357359923e-03 1.02401100733e-02 1.14031750108e-02 1.26855285494e-02 + 1.40901390285e-02 1.56489970468e-02 1.72611853896e-02 1.86355176327e-02 1.94290489291e-02 1.94290489291e-02 + 1.40806383265e-02 1.30618774824e-02 1.20439356208e-02 1.11481007476e-02 1.03422447642e-02 9.57619631350e-03 + 8.89920278516e-03 8.41997198039e-03 8.18383164206e-03 8.12161313174e-03 8.11874591477e-03 8.12161313175e-03 + 8.18383164206e-03 8.41997198039e-03 8.89920278516e-03 9.57619631350e-03 1.03422447642e-02 1.11481007476e-02 + 1.20439356208e-02 1.30618774824e-02 1.40806383265e-02 1.48492046219e-02 1.51354763629e-02 1.48492046219e-02 + 1.06051613742e-02 1.00210602336e-02 9.50248837487e-03 9.07031679536e-03 8.68876908730e-03 8.36360112567e-03 + 8.15758815908e-03 8.11230157085e-03 8.18383164206e-03 8.26409670065e-03 8.26409670065e-03 8.18383164206e-03 + 8.11230157085e-03 8.15758815908e-03 8.36360112567e-03 8.68876908730e-03 9.07031679536e-03 9.50248837487e-03 + 1.00210602336e-02 1.06051613742e-02 1.11331987338e-02 1.14481144732e-02 1.14481144732e-02 1.11331987338e-02 + 8.15758815907e-03 7.92498387887e-03 7.77912772161e-03 7.73176989509e-03 7.77912772161e-03 7.92498387888e-03 + 8.15758815908e-03 8.41997198039e-03 8.62540500906e-03 8.70256016587e-03 8.62540500905e-03 8.41997198039e-03 + 8.15758815908e-03 7.92498387888e-03 7.77912772161e-03 7.73176989509e-03 7.77912772161e-03 7.92498387887e-03 + 8.15758815907e-03 8.41997198038e-03 8.62540500905e-03 8.70256016586e-03 8.62540500905e-03 8.41997198038e-03 + 6.53729803366e-03 6.62087909720e-03 6.85668012358e-03 7.25301575416e-03 7.77912772161e-03 8.36360112567e-03 + 8.89920278516e-03 9.28357359923e-03 9.47290433111e-03 9.47290433111e-03 9.28357359923e-03 8.89920278516e-03 + 8.36360112567e-03 7.77912772161e-03 7.25301575416e-03 6.85668012358e-03 6.62087909720e-03 6.53729803366e-03 + 6.56138198056e-03 6.62684043801e-03 6.67439308888e-03 6.67439308888e-03 6.62684043801e-03 6.56138198056e-03 + 5.69411798450e-03 6.16385997204e-03 6.85668012358e-03 7.73176989509e-03 8.68876908730e-03 9.57619631350e-03 + 1.02401100733e-02 1.06109348738e-02 1.07225418333e-02 1.06109348738e-02 1.02401100733e-02 9.57619631350e-03 + 8.68876908730e-03 7.73176989509e-03 6.85668012358e-03 6.16385997204e-03 5.69411798450e-03 5.43239778449e-03 + 5.32068131556e-03 5.28636096575e-03 5.27978060753e-03 5.28636096575e-03 5.32068131556e-03 5.43239778448e-03 + 5.69411798450e-03 6.62087909721e-03 7.77912772161e-03 9.07031679536e-03 1.03422447642e-02 1.14031750108e-02 + 1.21045128275e-02 1.24265880360e-02 1.24265880360e-02 1.21045128275e-02 1.14031750108e-02 1.03422447642e-02 + 9.07031679536e-03 7.77912772161e-03 6.62087909721e-03 5.69411798450e-03 5.04343778102e-03 4.65175947716e-03 + 4.45367296569e-03 4.37599558137e-03 4.37599558137e-03 4.45367296569e-03 4.65175947716e-03 5.04343778102e-03 + 6.53729803366e-03 7.92498387888e-03 9.50248837487e-03 1.11481007476e-02 1.26855285494e-02 1.38961516945e-02 + 1.46288647205e-02 1.48656767561e-02 1.46288647205e-02 1.38961516945e-02 1.26855285494e-02 1.11481007476e-02 + 9.50248837487e-03 7.92498387888e-03 6.53729803366e-03 5.43239778449e-03 4.65175947716e-03 4.16945913194e-03 + 3.92281290681e-03 3.84964089400e-03 3.92281290681e-03 4.16945913194e-03 4.65175947716e-03 5.43239778449e-03 + 8.15758815908e-03 1.00210602336e-02 1.20439356208e-02 1.40901390285e-02 1.59287126341e-02 1.72812015630e-02 + 1.79741436761e-02 1.79741436761e-02 1.72812015630e-02 1.59287126341e-02 1.40901390285e-02 1.20439356208e-02 + 1.00210602336e-02 8.15758815907e-03 6.56138198057e-03 5.32068131556e-03 4.45367296569e-03 3.92281290681e-03 + 3.67768921534e-03 3.67768921534e-03 3.92281290681e-03 4.45367296569e-03 5.32068131556e-03 6.56138198057e-03 + 1.06051613742e-02 1.30618774824e-02 1.56489970468e-02 1.81430425204e-02 2.02040886880e-02 2.15195877577e-02 + 2.19611077293e-02 2.15195877577e-02 2.02040886880e-02 1.81430425205e-02 1.56489970468e-02 1.30618774824e-02 + 1.06051613742e-02 8.41997198039e-03 6.62684043801e-03 5.28636096575e-03 4.37599558137e-03 3.84964089400e-03 + 3.67768921534e-03 3.84964089400e-03 4.37599558137e-03 5.28636096575e-03 6.62684043801e-03 8.41997198039e-03 + 1.40806383265e-02 1.72611853896e-02 2.03920879638e-02 2.30939042850e-02 2.49902463304e-02 2.59181147281e-02 + 2.59181147281e-02 2.49902463304e-02 2.30939042850e-02 2.03920879638e-02 1.72611853896e-02 1.40806383265e-02 + 1.11331987338e-02 8.62540500906e-03 6.67439308888e-03 5.27978060753e-03 4.37599558137e-03 3.92281290681e-03 + 3.92281290681e-03 4.37599558137e-03 5.27978060753e-03 6.67439308888e-03 8.62540500906e-03 1.11331987338e-02 + 1.86355176327e-02 2.23752455712e-02 2.55726183949e-02 2.78013937268e-02 2.89473471924e-02 2.92643382604e-02 + 2.89473471924e-02 2.78013937268e-02 2.55726183949e-02 2.23752455712e-02 1.86355176327e-02 1.48492046219e-02 + 1.14481144732e-02 8.70256016587e-03 6.67439308889e-03 5.28636096575e-03 4.45367296569e-03 4.16945913194e-03 + 4.45367296569e-03 5.28636096575e-03 6.67439308889e-03 8.70256016587e-03 1.14481144732e-02 1.48492046219e-02 + 2.37301976795e-02 2.73091501295e-02 2.95890354456e-02 3.04773481040e-02 3.05548189106e-02 3.05548189106e-02 + 3.04773481040e-02 2.95890354456e-02 2.73091501295e-02 2.37301976795e-02 1.94290489291e-02 1.51354763629e-02 + 1.14481144732e-02 8.62540500906e-03 6.62684043802e-03 5.32068131556e-03 4.65175947716e-03 4.65175947716e-03 + 5.32068131556e-03 6.62684043802e-03 8.62540500906e-03 1.14481144732e-02 1.51354763629e-02 1.94290489291e-02 + 2.81653274579e-02 3.04051143293e-02 3.06792139923e-02 2.97974895143e-02 2.92436594720e-02 2.97974895143e-02 + 3.06792139923e-02 3.04051143293e-02 2.81653274579e-02 2.42075414898e-02 1.94290489291e-02 1.48492046219e-02 + 1.11331987338e-02 8.41997198039e-03 6.56138198057e-03 5.43239778449e-03 5.04343778102e-03 5.43239778449e-03 + 6.56138198057e-03 8.41997198039e-03 1.11331987338e-02 1.48492046219e-02 1.94290489291e-02 2.42075414898e-02 + 3.48683159917e-02 3.31551669202e-02 3.05273339684e-02 2.92890570903e-02 3.05273339684e-02 3.31551669202e-02 + 3.48683159917e-02 3.38925854809e-02 2.99301385615e-02 2.40967233573e-02 1.81617046076e-02 1.34421324248e-02 + 1.02248872526e-02 8.15758815907e-03 6.92803651720e-03 6.50338402317e-03 6.92803651720e-03 8.15758815908e-03 + 1.02248872526e-02 1.34421324248e-02 1.81617046076e-02 2.40967233573e-02 2.99301385615e-02 3.38925854809e-02 + 3.31551669202e-02 2.95749315132e-02 2.67216511960e-02 2.67216511960e-02 2.95749315132e-02 3.31551669202e-02 + 3.48628450776e-02 3.31963581644e-02 2.84217494631e-02 2.22713307355e-02 1.66950035376e-02 1.26511415702e-02 + 1.00210602336e-02 8.36360112567e-03 7.50451749096e-03 7.50451749096e-03 8.36360112567e-03 1.00210602336e-02 + 1.26511415702e-02 1.66950035376e-02 2.22713307355e-02 2.84217494631e-02 3.31963581644e-02 3.48628450776e-02 + 3.05273339684e-02 2.67216511959e-02 2.50661805907e-02 2.67216511959e-02 3.05273339684e-02 3.39196724265e-02 + 3.45751625707e-02 3.16057035862e-02 2.60492747623e-02 2.00583037371e-02 1.52718999852e-02 1.20439356208e-02 + 9.96234500643e-03 8.68876908730e-03 8.23785813083e-03 8.68876908730e-03 9.96234500644e-03 1.20439356208e-02 + 1.52718999852e-02 2.00583037371e-02 2.60492747623e-02 3.16057035862e-02 3.45751625707e-02 3.39196724265e-02 + 2.92890570902e-02 2.67216511959e-02 2.67216511959e-02 2.92890570902e-02 3.26920605346e-02 3.46096179590e-02 + 3.33647463123e-02 2.89590113766e-02 2.31231583381e-02 1.78657504093e-02 1.40901390285e-02 1.16029685725e-02 + 9.96167567605e-03 9.07031679536e-03 9.07031679536e-03 9.96167567605e-03 1.16029685725e-02 1.40901390285e-02 + 1.78657504093e-02 2.31231583381e-02 2.89590113766e-02 3.33647463123e-02 3.46096179590e-02 3.26920605346e-02 + 3.05273339684e-02 2.95749315132e-02 3.05273339684e-02 3.26920605346e-02 3.44216532953e-02 3.39942859271e-02 + 3.06728014251e-02 2.54054430258e-02 2.00653973118e-02 1.59287126341e-02 1.31234388541e-02 1.12137577955e-02 + 9.96234500644e-03 9.50248837487e-03 9.96234500644e-03 1.12137577955e-02 1.31234388541e-02 1.59287126341e-02 + 2.00653973118e-02 2.54054430258e-02 3.06728014251e-02 3.39942859271e-02 3.44216532954e-02 3.26920605346e-02 + 3.31551669202e-02 3.31551669201e-02 3.39196724264e-02 3.46096179590e-02 3.39942859271e-02 3.12134113093e-02 + 2.65858530209e-02 2.15038028103e-02 1.72812015630e-02 1.43188164440e-02 1.22934163580e-02 1.08500532301e-02 + 1.00210602336e-02 1.00210602336e-02 1.08500532301e-02 1.22934163580e-02 1.43188164440e-02 1.72812015630e-02 + 2.15038028103e-02 2.65858530209e-02 3.12134113093e-02 3.39942859271e-02 3.46096179590e-02 3.39196724265e-02 + 3.48683159917e-02 3.48628450776e-02 3.45751625707e-02 3.33647463123e-02 3.06728014251e-02 2.65858530209e-02 + 2.19947599998e-02 1.79741436761e-02 1.50424663757e-02 1.30485807277e-02 1.16095381953e-02 1.06051613742e-02 + 1.02248872526e-02 1.06051613742e-02 1.16095381953e-02 1.30485807277e-02 1.50424663757e-02 1.79741436761e-02 + 2.19947599998e-02 2.65858530209e-02 3.06728014251e-02 3.33647463123e-02 3.45751625707e-02 3.48628450776e-02 + 3.38925854809e-02 3.31963581643e-02 3.16057035862e-02 2.89590113766e-02 2.54054430258e-02 2.15038028103e-02 + 1.79741436761e-02 1.52762540169e-02 1.34169388324e-02 1.21090534529e-02 1.11331987338e-02 1.05557815436e-02 + 1.05557815436e-02 1.11331987338e-02 1.21090534529e-02 1.34169388324e-02 1.52762540169e-02 1.79741436761e-02 + 2.15038028103e-02 2.54054430258e-02 2.89590113766e-02 3.16057035862e-02 3.31963581644e-02 3.38925854809e-02 + 2.99301385615e-02 2.84217494631e-02 2.60492747622e-02 2.31231583381e-02 2.00653973118e-02 1.72812015630e-02 + 1.50424663757e-02 1.34169388324e-02 1.22800512627e-02 1.14481144732e-02 1.08699825973e-02 1.06518186545e-02 + 1.08699825973e-02 1.14481144732e-02 1.22800512627e-02 1.34169388324e-02 1.50424663757e-02 1.72812015630e-02 + 2.00653973118e-02 2.31231583381e-02 2.60492747622e-02 2.84217494631e-02 2.99301385615e-02 3.04404777485e-02 + 2.40967233573e-02 2.22713307355e-02 2.00583037371e-02 1.78657504093e-02 1.59287126341e-02 1.43188164440e-02 + 1.30485807277e-02 1.21090534529e-02 1.14481144732e-02 1.09990704821e-02 1.07546834176e-02 1.07546834176e-02 + 1.09990704821e-02 1.14481144732e-02 1.21090534529e-02 1.30485807277e-02 1.43188164440e-02 1.59287126341e-02 + 1.78657504093e-02 2.00583037371e-02 2.22713307355e-02 2.40967233573e-02 2.51249889113e-02 2.51249889113e-02 + 1.81617046076e-02 1.66950035376e-02 1.52718999852e-02 1.40901390285e-02 1.31234388541e-02 1.22934163580e-02 + 1.16095381953e-02 1.11331987338e-02 1.08699825973e-02 1.07546834176e-02 1.07233722050e-02 1.07546834176e-02 + 1.08699825973e-02 1.11331987338e-02 1.16095381953e-02 1.22934163580e-02 1.31234388541e-02 1.40901390285e-02 + 1.52718999852e-02 1.66950035376e-02 1.81617046076e-02 1.92840317465e-02 1.97044449599e-02 1.92840317465e-02 + 1.34421324248e-02 1.26511415702e-02 1.20439356208e-02 1.16029685725e-02 1.12137577955e-02 1.08500532301e-02 + 1.06051613742e-02 1.05557815436e-02 1.06518186545e-02 1.07546834176e-02 1.07546834176e-02 1.06518186545e-02 + 1.05557815436e-02 1.06051613742e-02 1.08500532301e-02 1.12137577955e-02 1.16029685725e-02 1.20439356208e-02 + 1.26511415702e-02 1.34421324248e-02 1.42308801751e-02 1.47279181688e-02 1.47279181688e-02 1.42308801751e-02 + 1.02248872526e-02 1.00210602336e-02 9.96234500643e-03 9.96167567605e-03 9.96234500644e-03 1.00210602336e-02 + 1.02248872526e-02 1.05557815436e-02 1.08699825973e-02 1.09990704821e-02 1.08699825973e-02 1.05557815436e-02 + 1.02248872526e-02 1.00210602336e-02 9.96234500644e-03 9.96167567604e-03 9.96234500643e-03 1.00210602336e-02 + 1.02248872526e-02 1.05557815436e-02 1.08699825973e-02 1.09990704821e-02 1.08699825973e-02 1.05557815436e-02 + 8.15758815907e-03 8.36360112567e-03 8.68876908730e-03 9.07031679536e-03 9.50248837488e-03 1.00210602336e-02 + 1.06051613742e-02 1.11331987338e-02 1.14481144732e-02 1.14481144732e-02 1.11331987338e-02 1.06051613742e-02 + 1.00210602336e-02 9.50248837488e-03 9.07031679536e-03 8.68876908730e-03 8.36360112566e-03 8.15758815907e-03 + 8.11230157084e-03 8.18383164206e-03 8.26409670065e-03 8.26409670065e-03 8.18383164206e-03 8.11230157084e-03 + 6.92803651719e-03 7.50451749096e-03 8.23785813083e-03 9.07031679536e-03 9.96234500644e-03 1.08500532301e-02 + 1.16095381953e-02 1.21090534529e-02 1.22800512627e-02 1.21090534529e-02 1.16095381953e-02 1.08500532301e-02 + 9.96234500644e-03 9.07031679536e-03 8.23785813083e-03 7.50451749096e-03 6.92803651719e-03 6.56138198056e-03 + 6.39967919814e-03 6.36714430779e-03 6.36996915701e-03 6.36714430779e-03 6.39967919814e-03 6.56138198056e-03 + 6.50338402317e-03 7.50451749096e-03 8.68876908731e-03 9.96167567605e-03 1.12137577955e-02 1.22934163580e-02 + 1.30485807277e-02 1.34169388324e-02 1.34169388324e-02 1.30485807277e-02 1.22934163580e-02 1.12137577955e-02 + 9.96167567605e-03 8.68876908730e-03 7.50451749096e-03 6.50338402317e-03 5.76667312114e-03 5.32068131556e-03 + 5.11303460195e-03 5.04614391795e-03 5.04614391795e-03 5.11303460194e-03 5.32068131556e-03 5.76667312114e-03 + 6.92803651720e-03 8.36360112567e-03 9.96234500644e-03 1.16029685725e-02 1.31234388541e-02 1.43188164440e-02 + 1.50424663757e-02 1.52762540169e-02 1.50424663757e-02 1.43188164440e-02 1.31234388541e-02 1.16029685725e-02 + 9.96234500644e-03 8.36360112567e-03 6.92803651720e-03 5.76667312114e-03 4.94632325183e-03 4.45367296569e-03 + 4.21584246473e-03 4.14918646508e-03 4.21584246472e-03 4.45367296569e-03 4.94632325183e-03 5.76667312114e-03 + 8.15758815908e-03 1.00210602336e-02 1.20439356208e-02 1.40901390285e-02 1.59287126341e-02 1.72812015630e-02 + 1.79741436761e-02 1.79741436761e-02 1.72812015630e-02 1.59287126341e-02 1.40901390285e-02 1.20439356208e-02 + 1.00210602336e-02 8.15758815907e-03 6.56138198057e-03 5.32068131556e-03 4.45367296569e-03 3.92281290681e-03 + 3.67768921534e-03 3.67768921534e-03 3.92281290681e-03 4.45367296569e-03 5.32068131556e-03 6.56138198057e-03 + 1.02248872526e-02 1.26511415702e-02 1.52718999852e-02 1.78657504093e-02 2.00653973119e-02 2.15038028103e-02 + 2.19947599998e-02 2.15038028103e-02 2.00653973119e-02 1.78657504093e-02 1.52718999852e-02 1.26511415702e-02 + 1.02248872526e-02 8.11230157084e-03 6.39967919814e-03 5.11303460195e-03 4.21584246472e-03 3.67768921534e-03 + 3.49726793106e-03 3.67768921534e-03 4.21584246472e-03 5.11303460195e-03 6.39967919814e-03 8.11230157084e-03 + 1.34421324248e-02 1.66950035376e-02 2.00583037371e-02 2.31231583381e-02 2.54054430258e-02 2.65858530209e-02 + 2.65858530209e-02 2.54054430258e-02 2.31231583381e-02 2.00583037371e-02 1.66950035376e-02 1.34421324248e-02 + 1.05557815436e-02 8.18383164206e-03 6.36714430779e-03 5.04614391795e-03 4.14918646508e-03 3.67768921534e-03 + 3.67768921534e-03 4.14918646508e-03 5.04614391795e-03 6.36714430779e-03 8.18383164206e-03 1.05557815436e-02 + 1.81617046076e-02 2.22713307355e-02 2.60492747623e-02 2.89590113767e-02 3.06728014251e-02 3.12134113093e-02 + 3.06728014251e-02 2.89590113767e-02 2.60492747623e-02 2.22713307355e-02 1.81617046076e-02 1.42308801751e-02 + 1.08699825973e-02 8.26409670065e-03 6.36996915701e-03 5.04614391795e-03 4.21584246473e-03 3.92281290681e-03 + 4.21584246473e-03 5.04614391795e-03 6.36996915701e-03 8.26409670065e-03 1.08699825973e-02 1.42308801751e-02 + 2.40967233573e-02 2.84217494631e-02 3.16057035862e-02 3.33647463124e-02 3.39942859271e-02 3.39942859271e-02 + 3.33647463124e-02 3.16057035862e-02 2.84217494631e-02 2.40967233573e-02 1.92840317465e-02 1.47279181688e-02 + 1.09990704821e-02 8.26409670065e-03 6.36714430779e-03 5.11303460195e-03 4.45367296569e-03 4.45367296569e-03 + 5.11303460195e-03 6.36714430780e-03 8.26409670065e-03 1.09990704821e-02 1.47279181688e-02 1.92840317465e-02 + 2.99301385615e-02 3.31963581644e-02 3.45751625707e-02 3.46096179590e-02 3.44216532954e-02 3.46096179590e-02 + 3.45751625707e-02 3.31963581644e-02 2.99301385615e-02 2.51249889113e-02 1.97044449599e-02 1.47279181688e-02 + 1.08699825973e-02 8.18383164206e-03 6.39967919814e-03 5.32068131556e-03 4.94632325183e-03 5.32068131556e-03 + 6.39967919814e-03 8.18383164206e-03 1.08699825973e-02 1.47279181688e-02 1.97044449599e-02 2.51249889113e-02 + 3.38925854809e-02 3.48628450776e-02 3.39196724265e-02 3.26920605347e-02 3.26920605347e-02 3.39196724265e-02 + 3.48628450776e-02 3.38925854809e-02 3.04404777485e-02 2.51249889113e-02 1.92840317465e-02 1.42308801751e-02 + 1.05557815436e-02 8.11230157084e-03 6.56138198057e-03 5.76667312114e-03 5.76667312114e-03 6.56138198057e-03 + 8.11230157085e-03 1.05557815436e-02 1.42308801751e-02 1.92840317465e-02 2.51249889113e-02 3.04404777485e-02 + 4.15726567626e-02 4.23899857520e-02 4.26148361403e-02 4.26148361403e-02 4.23899857520e-02 4.15726567626e-02 + 3.97328533270e-02 3.62673468746e-02 3.07822057975e-02 2.40904203272e-02 1.79266526907e-02 1.34421324248e-02 + 1.06051613742e-02 8.89920278516e-03 8.04455907974e-03 8.04455907974e-03 8.89920278516e-03 1.06051613742e-02 + 1.34421324248e-02 1.79266526907e-02 2.40904203272e-02 3.07822057975e-02 3.62673468746e-02 3.97328533271e-02 + 4.23899857520e-02 4.30330806506e-02 4.31931066266e-02 4.30330806506e-02 4.23899857519e-02 4.11388919901e-02 + 3.89798518705e-02 3.49769025117e-02 2.88778389824e-02 2.21709602700e-02 1.66950035376e-02 1.30618774824e-02 + 1.08500532301e-02 9.57619631350e-03 9.13724506496e-03 9.57619631350e-03 1.08500532301e-02 1.30618774824e-02 + 1.66950035376e-02 2.21709602700e-02 2.88778389824e-02 3.49769025118e-02 3.89798518706e-02 4.11388919901e-02 + 4.26148361403e-02 4.31931066266e-02 4.31931066266e-02 4.26148361403e-02 4.15214050146e-02 4.00842207789e-02 + 3.75326171916e-02 3.27029610793e-02 2.61902387743e-02 2.00583037371e-02 1.56489970468e-02 1.28937939562e-02 + 1.12137577955e-02 1.03422447642e-02 1.03422447642e-02 1.12137577955e-02 1.28937939562e-02 1.56489970468e-02 + 2.00583037371e-02 2.61902387743e-02 3.27029610793e-02 3.75326171916e-02 4.00842207789e-02 4.15214050146e-02 + 4.26148361403e-02 4.30330806505e-02 4.26148361403e-02 4.15474983448e-02 4.03062291682e-02 3.86294987685e-02 + 3.51262182184e-02 2.93979324046e-02 2.31231583381e-02 1.81430425204e-02 1.48932100517e-02 1.28580577518e-02 + 1.16029685725e-02 1.11481007476e-02 1.16029685725e-02 1.28580577518e-02 1.48932100517e-02 1.81430425204e-02 + 2.31231583381e-02 2.93979324046e-02 3.51262182184e-02 3.86294987685e-02 4.03062291682e-02 4.15474983449e-02 + 4.23899857519e-02 4.23899857519e-02 4.15214050146e-02 4.03062291682e-02 3.88811262511e-02 3.61935553818e-02 + 3.13656133727e-02 2.54054430258e-02 2.02040886880e-02 1.66389339973e-02 1.43894839458e-02 1.28937939562e-02 + 1.20439356208e-02 1.20439356208e-02 1.28937939562e-02 1.43894839458e-02 1.66389339973e-02 2.02040886880e-02 + 2.54054430258e-02 3.13656133727e-02 3.61935553818e-02 3.88811262511e-02 4.03062291682e-02 4.15214050146e-02 + 4.15726567626e-02 4.11388919901e-02 4.00842207789e-02 3.86294987685e-02 3.61935553818e-02 3.20070729422e-02 + 2.65858530209e-02 2.15195877577e-02 1.78888288560e-02 1.56224022211e-02 1.41149739580e-02 1.30618774824e-02 + 1.26511415702e-02 1.30618774824e-02 1.41149739580e-02 1.56224022211e-02 1.78888288560e-02 2.15195877577e-02 + 2.65858530209e-02 3.20070729422e-02 3.61935553818e-02 3.86294987685e-02 4.00842207789e-02 4.11388919901e-02 + 3.97328533270e-02 3.89798518705e-02 3.75326171916e-02 3.51262182184e-02 3.13656133727e-02 2.65858530209e-02 + 2.19611077293e-02 1.85132763207e-02 1.63906429721e-02 1.50739196267e-02 1.40806383265e-02 1.34421324248e-02 + 1.34421324248e-02 1.40806383265e-02 1.50739196267e-02 1.63906429721e-02 1.85132763207e-02 2.19611077293e-02 + 2.65858530209e-02 3.13656133727e-02 3.51262182184e-02 3.75326171916e-02 3.89798518705e-02 3.97328533270e-02 + 3.62673468745e-02 3.49769025117e-02 3.27029610793e-02 2.93979324045e-02 2.54054430258e-02 2.15195877577e-02 + 1.85132763207e-02 1.66439398964e-02 1.55937378378e-02 1.48492046219e-02 1.42308801751e-02 1.39667079820e-02 + 1.42308801751e-02 1.48492046219e-02 1.55937378378e-02 1.66439398964e-02 1.85132763207e-02 2.15195877577e-02 + 2.54054430258e-02 2.93979324046e-02 3.27029610793e-02 3.49769025117e-02 3.62673468745e-02 3.66854482599e-02 + 3.07822057975e-02 2.88778389824e-02 2.61902387743e-02 2.31231583381e-02 2.02040886880e-02 1.78888288560e-02 + 1.63906429721e-02 1.55937378378e-02 1.51354763629e-02 1.47279181688e-02 1.44210111226e-02 1.44210111226e-02 + 1.47279181688e-02 1.51354763629e-02 1.55937378378e-02 1.63906429721e-02 1.78888288560e-02 2.02040886880e-02 + 2.31231583381e-02 2.61902387743e-02 2.88778389824e-02 3.07822057975e-02 3.17361436402e-02 3.17361436402e-02 + 2.40904203272e-02 2.21709602700e-02 2.00583037371e-02 1.81430425204e-02 1.66389339973e-02 1.56224022211e-02 + 1.50739196267e-02 1.48492046219e-02 1.47279181688e-02 1.45986463266e-02 1.45320680305e-02 1.45986463266e-02 + 1.47279181688e-02 1.48492046219e-02 1.50739196267e-02 1.56224022211e-02 1.66389339973e-02 1.81430425204e-02 + 2.00583037371e-02 2.21709602700e-02 2.40904203272e-02 2.53973709283e-02 2.58521940319e-02 2.53973709283e-02 + 1.79266526907e-02 1.66950035376e-02 1.56489970468e-02 1.48932100517e-02 1.43894839458e-02 1.41149739580e-02 + 1.40806383265e-02 1.42308801751e-02 1.44210111226e-02 1.45320680305e-02 1.45320680305e-02 1.44210111226e-02 + 1.42308801751e-02 1.40806383265e-02 1.41149739580e-02 1.43894839458e-02 1.48932100517e-02 1.56489970468e-02 + 1.66950035376e-02 1.79266526907e-02 1.90345757835e-02 1.96802339929e-02 1.96802339929e-02 1.90345757835e-02 + 1.34421324248e-02 1.30618774824e-02 1.28937939562e-02 1.28580577518e-02 1.28937939562e-02 1.30618774824e-02 + 1.34421324248e-02 1.39667079820e-02 1.44210111226e-02 1.45986463266e-02 1.44210111226e-02 1.39667079820e-02 + 1.34421324248e-02 1.30618774824e-02 1.28937939562e-02 1.28580577518e-02 1.28937939562e-02 1.30618774824e-02 + 1.34421324248e-02 1.39667079820e-02 1.44210111226e-02 1.45986463266e-02 1.44210111226e-02 1.39667079820e-02 + 1.06051613742e-02 1.08500532301e-02 1.12137577955e-02 1.16029685725e-02 1.20439356208e-02 1.26511415702e-02 + 1.34421324248e-02 1.42308801751e-02 1.47279181688e-02 1.47279181688e-02 1.42308801751e-02 1.34421324248e-02 + 1.26511415702e-02 1.20439356208e-02 1.16029685725e-02 1.12137577955e-02 1.08500532301e-02 1.06051613742e-02 + 1.05557815436e-02 1.06518186545e-02 1.07546834175e-02 1.07546834176e-02 1.06518186545e-02 1.05557815436e-02 + 8.89920278515e-03 9.57619631350e-03 1.03422447642e-02 1.11481007476e-02 1.20439356208e-02 1.30618774824e-02 + 1.40806383265e-02 1.48492046219e-02 1.51354763629e-02 1.48492046219e-02 1.40806383265e-02 1.30618774824e-02 + 1.20439356208e-02 1.11481007476e-02 1.03422447642e-02 9.57619631350e-03 8.89920278515e-03 8.41997198038e-03 + 8.18383164206e-03 8.12161313174e-03 8.11874591476e-03 8.12161313174e-03 8.18383164206e-03 8.41997198038e-03 + 8.04455907974e-03 9.13724506496e-03 1.03422447642e-02 1.16029685725e-02 1.28937939562e-02 1.41149739580e-02 + 1.50739196267e-02 1.55937378378e-02 1.55937378378e-02 1.50739196267e-02 1.41149739580e-02 1.28937939562e-02 + 1.16029685725e-02 1.03422447642e-02 9.13724506496e-03 8.04455907974e-03 7.17862759619e-03 6.62684043801e-03 + 6.36714430779e-03 6.28719817634e-03 6.28719817634e-03 6.36714430779e-03 6.62684043801e-03 7.17862759619e-03 + 8.04455907974e-03 9.57619631350e-03 1.12137577955e-02 1.28580577518e-02 1.43894839458e-02 1.56224022211e-02 + 1.63906429721e-02 1.66439398964e-02 1.63906429721e-02 1.56224022211e-02 1.43894839458e-02 1.28580577518e-02 + 1.12137577955e-02 9.57619631350e-03 8.04455907974e-03 6.75449318420e-03 5.82746138702e-03 5.28636096575e-03 + 5.04614391795e-03 4.98513742725e-03 5.04614391795e-03 5.28636096575e-03 5.82746138702e-03 6.75449318420e-03 + 8.89920278516e-03 1.08500532301e-02 1.28937939562e-02 1.48932100517e-02 1.66389339974e-02 1.78888288560e-02 + 1.85132763207e-02 1.85132763207e-02 1.78888288560e-02 1.66389339974e-02 1.48932100517e-02 1.28937939562e-02 + 1.08500532301e-02 8.89920278516e-03 7.17862759619e-03 5.82746138702e-03 4.90588959931e-03 4.37599558137e-03 + 4.14918646508e-03 4.14918646508e-03 4.37599558137e-03 4.90588959931e-03 5.82746138702e-03 7.17862759619e-03 + 1.06051613742e-02 1.30618774824e-02 1.56489970468e-02 1.81430425205e-02 2.02040886880e-02 2.15195877577e-02 + 2.19611077293e-02 2.15195877577e-02 2.02040886880e-02 1.81430425205e-02 1.56489970468e-02 1.30618774824e-02 + 1.06051613742e-02 8.41997198039e-03 6.62684043801e-03 5.28636096575e-03 4.37599558137e-03 3.84964089400e-03 + 3.67768921534e-03 3.84964089400e-03 4.37599558137e-03 5.28636096575e-03 6.62684043802e-03 8.41997198039e-03 + 1.34421324248e-02 1.66950035376e-02 2.00583037371e-02 2.31231583381e-02 2.54054430258e-02 2.65858530209e-02 + 2.65858530209e-02 2.54054430258e-02 2.31231583381e-02 2.00583037371e-02 1.66950035376e-02 1.34421324248e-02 + 1.05557815436e-02 8.18383164206e-03 6.36714430779e-03 5.04614391795e-03 4.14918646508e-03 3.67768921534e-03 + 3.67768921534e-03 4.14918646508e-03 5.04614391795e-03 6.36714430779e-03 8.18383164206e-03 1.05557815436e-02 + 1.79266526907e-02 2.21709602700e-02 2.61902387743e-02 2.93979324046e-02 3.13656133728e-02 3.20070729423e-02 + 3.13656133728e-02 2.93979324046e-02 2.61902387743e-02 2.21709602700e-02 1.79266526907e-02 1.39667079820e-02 + 1.06518186545e-02 8.12161313174e-03 6.28719817635e-03 4.98513742725e-03 4.14918646508e-03 3.84964089400e-03 + 4.14918646508e-03 4.98513742725e-03 6.28719817635e-03 8.12161313175e-03 1.06518186545e-02 1.39667079820e-02 + 2.40904203272e-02 2.88778389824e-02 3.27029610793e-02 3.51262182185e-02 3.61935553818e-02 3.61935553818e-02 + 3.51262182185e-02 3.27029610793e-02 2.88778389824e-02 2.40904203272e-02 1.90345757835e-02 1.44210111226e-02 + 1.07546834176e-02 8.11874591477e-03 6.28719817635e-03 5.04614391795e-03 4.37599558137e-03 4.37599558137e-03 + 5.04614391795e-03 6.28719817635e-03 8.11874591477e-03 1.07546834176e-02 1.44210111226e-02 1.90345757835e-02 + 3.07822057975e-02 3.49769025118e-02 3.75326171916e-02 3.86294987685e-02 3.88811262512e-02 3.86294987685e-02 + 3.75326171916e-02 3.49769025118e-02 3.07822057975e-02 2.53973709283e-02 1.96802339930e-02 1.45986463266e-02 + 1.07546834176e-02 8.12161313175e-03 6.36714430780e-03 5.28636096575e-03 4.90588959931e-03 5.28636096575e-03 + 6.36714430780e-03 8.12161313175e-03 1.07546834176e-02 1.45986463266e-02 1.96802339930e-02 2.53973709283e-02 + 3.62673468746e-02 3.89798518706e-02 4.00842207790e-02 4.03062291683e-02 4.03062291683e-02 4.00842207790e-02 + 3.89798518706e-02 3.62673468746e-02 3.17361436403e-02 2.58521940319e-02 1.96802339930e-02 1.44210111226e-02 + 1.06518186545e-02 8.18383164206e-03 6.62684043801e-03 5.82746138702e-03 5.82746138702e-03 6.62684043802e-03 + 8.18383164206e-03 1.06518186545e-02 1.44210111226e-02 1.96802339930e-02 2.58521940319e-02 3.17361436403e-02 + 3.97328533271e-02 4.11388919902e-02 4.15214050146e-02 4.15474983449e-02 4.15214050146e-02 4.11388919902e-02 + 3.97328533271e-02 3.66854482599e-02 3.17361436402e-02 2.53973709283e-02 1.90345757835e-02 1.39667079820e-02 + 1.05557815436e-02 8.41997198039e-03 7.17862759619e-03 6.75449318420e-03 7.17862759619e-03 8.41997198039e-03 + 1.05557815436e-02 1.39667079820e-02 1.90345757835e-02 2.53973709283e-02 3.17361436403e-02 3.66854482599e-02 + 6.13624406409e-02 6.87950359263e-02 7.14595557376e-02 6.87950359263e-02 6.13624406409e-02 5.18158087397e-02 + 4.36605690195e-02 3.73540502296e-02 3.09609358381e-02 2.40904203272e-02 1.81617046076e-02 1.40806383265e-02 + 1.16095381953e-02 1.02401100733e-02 9.78219490488e-03 1.02401100733e-02 1.16095381953e-02 1.40806383265e-02 + 1.81617046076e-02 2.40904203272e-02 3.09609358381e-02 3.73540502297e-02 4.36605690195e-02 5.18158087398e-02 + 6.87950359263e-02 7.44578962493e-02 7.44578962493e-02 6.87950359263e-02 5.87809730550e-02 4.86717503238e-02 + 4.14583134664e-02 3.55406204185e-02 2.88778389824e-02 2.22713307355e-02 1.72611853896e-02 1.41149739580e-02 + 1.22934163580e-02 1.14031750108e-02 1.14031750108e-02 1.22934163580e-02 1.41149739580e-02 1.72611853896e-02 + 2.22713307355e-02 2.88778389824e-02 3.55406204185e-02 4.14583134664e-02 4.86717503238e-02 5.87809730550e-02 + 7.14595557376e-02 7.44578962493e-02 7.14595557376e-02 6.30064198496e-02 5.24371687843e-02 4.42637285519e-02 + 3.86293456568e-02 3.27029610793e-02 2.60492747623e-02 2.03920879638e-02 1.66276099946e-02 1.43894839458e-02 + 1.31234388541e-02 1.26855285494e-02 1.31234388541e-02 1.43894839458e-02 1.66276099946e-02 2.03920879638e-02 + 2.60492747623e-02 3.27029610793e-02 3.86293456568e-02 4.42637285519e-02 5.24371687843e-02 6.30064198496e-02 + 6.87950359263e-02 6.87950359263e-02 6.30064198496e-02 5.38553081705e-02 4.56987320892e-02 4.02266025417e-02 + 3.51262182184e-02 2.89590113766e-02 2.30939042849e-02 1.89263764236e-02 1.64062528191e-02 1.48932100517e-02 + 1.40901390285e-02 1.40901390285e-02 1.48932100517e-02 1.64062528191e-02 1.89263764236e-02 2.30939042849e-02 + 2.89590113766e-02 3.51262182185e-02 4.02266025417e-02 4.56987320892e-02 5.38553081705e-02 6.30064198496e-02 + 6.13624406409e-02 5.87809730549e-02 5.24371687843e-02 4.56987320892e-02 4.06883718959e-02 3.61935553818e-02 + 3.06728014251e-02 2.49902463304e-02 2.07196781889e-02 1.81502966987e-02 1.66276099946e-02 1.56489970468e-02 + 1.52718999852e-02 1.56489970468e-02 1.66276099946e-02 1.81502966987e-02 2.07196781889e-02 2.49902463304e-02 + 3.06728014251e-02 3.61935553818e-02 4.06883718959e-02 4.56987320892e-02 5.24371687843e-02 5.87809730550e-02 + 5.18158087397e-02 4.86717503238e-02 4.42637285519e-02 4.02266025417e-02 3.61935553818e-02 3.12134113093e-02 + 2.59181147281e-02 2.17948830411e-02 1.93871115228e-02 1.81179302207e-02 1.72611853896e-02 1.66950035376e-02 + 1.66950035376e-02 1.72611853896e-02 1.81179302207e-02 1.93871115228e-02 2.17948830411e-02 2.59181147281e-02 + 3.12134113093e-02 3.61935553818e-02 4.02266025417e-02 4.42637285519e-02 4.86717503238e-02 5.18158087397e-02 + 4.36605690195e-02 4.14583134664e-02 3.86293456568e-02 3.51262182184e-02 3.06728014251e-02 2.59181147281e-02 + 2.21386056500e-02 1.99975947255e-02 1.91106081253e-02 1.86355176327e-02 1.81617046076e-02 1.79266526907e-02 + 1.81617046076e-02 1.86355176327e-02 1.91106081253e-02 1.99975947255e-02 2.21386056500e-02 2.59181147281e-02 + 3.06728014251e-02 3.51262182184e-02 3.86293456568e-02 4.14583134664e-02 4.36605690195e-02 4.45490987357e-02 + 3.73540502296e-02 3.55406204184e-02 3.27029610793e-02 2.89590113766e-02 2.49902463304e-02 2.17948830411e-02 + 1.99975947255e-02 1.94536795471e-02 1.94290489291e-02 1.92840317465e-02 1.90345757835e-02 1.90345757835e-02 + 1.92840317465e-02 1.94290489291e-02 1.94536795471e-02 1.99975947255e-02 2.17948830411e-02 2.49902463304e-02 + 2.89590113766e-02 3.27029610793e-02 3.55406204185e-02 3.73540502296e-02 3.82423088607e-02 3.82423088607e-02 + 3.09609358381e-02 2.88778389824e-02 2.60492747622e-02 2.30939042849e-02 2.07196781889e-02 1.93871115228e-02 + 1.91106081253e-02 1.94290489291e-02 1.97044449599e-02 1.96802339930e-02 1.96031535282e-02 1.96802339930e-02 + 1.97044449599e-02 1.94290489291e-02 1.91106081253e-02 1.93871115228e-02 2.07196781889e-02 2.30939042849e-02 + 2.60492747623e-02 2.88778389824e-02 3.09609358381e-02 3.20848019958e-02 3.24128421387e-02 3.20848019958e-02 + 2.40904203272e-02 2.22713307355e-02 2.03920879637e-02 1.89263764236e-02 1.81502966987e-02 1.81179302207e-02 + 1.86355176327e-02 1.92840317465e-02 1.96802339930e-02 1.97871610956e-02 1.97871610956e-02 1.96802339930e-02 + 1.92840317465e-02 1.86355176327e-02 1.81179302207e-02 1.81502966987e-02 1.89263764236e-02 2.03920879638e-02 + 2.22713307355e-02 2.40904203272e-02 2.53797374387e-02 2.59777844449e-02 2.59777844449e-02 2.53797374387e-02 + 1.81617046076e-02 1.72611853896e-02 1.66276099946e-02 1.64062528191e-02 1.66276099946e-02 1.72611853896e-02 + 1.81617046076e-02 1.90345757835e-02 1.96031535282e-02 1.97871610956e-02 1.96031535282e-02 1.90345757835e-02 + 1.81617046076e-02 1.72611853896e-02 1.66276099946e-02 1.64062528191e-02 1.66276099946e-02 1.72611853896e-02 + 1.81617046076e-02 1.90345757835e-02 1.96031535282e-02 1.97871610956e-02 1.96031535282e-02 1.90345757835e-02 + 1.40806383265e-02 1.41149739580e-02 1.43894839458e-02 1.48932100517e-02 1.56489970468e-02 1.66950035376e-02 + 1.79266526907e-02 1.90345757835e-02 1.96802339930e-02 1.96802339930e-02 1.90345757835e-02 1.79266526907e-02 + 1.66950035376e-02 1.56489970468e-02 1.48932100517e-02 1.43894839458e-02 1.41149739580e-02 1.40806383265e-02 + 1.42308801751e-02 1.44210111226e-02 1.45320680305e-02 1.45320680305e-02 1.44210111226e-02 1.42308801751e-02 + 1.16095381953e-02 1.22934163580e-02 1.31234388541e-02 1.40901390285e-02 1.52718999852e-02 1.66950035376e-02 + 1.81617046076e-02 1.92840317465e-02 1.97044449599e-02 1.92840317465e-02 1.81617046076e-02 1.66950035376e-02 + 1.52718999852e-02 1.40901390285e-02 1.31234388541e-02 1.22934163580e-02 1.16095381953e-02 1.11331987338e-02 + 1.08699825973e-02 1.07546834176e-02 1.07233722050e-02 1.07546834176e-02 1.08699825973e-02 1.11331987338e-02 + 1.02401100733e-02 1.14031750108e-02 1.26855285494e-02 1.40901390285e-02 1.56489970468e-02 1.72611853896e-02 + 1.86355176327e-02 1.94290489291e-02 1.94290489291e-02 1.86355176327e-02 1.72611853896e-02 1.56489970468e-02 + 1.40901390285e-02 1.26855285494e-02 1.14031750108e-02 1.02401100733e-02 9.28357359922e-03 8.62540500905e-03 + 8.26409670065e-03 8.11874591476e-03 8.11874591476e-03 8.26409670065e-03 8.62540500905e-03 9.28357359922e-03 + 9.78219490488e-03 1.14031750108e-02 1.31234388541e-02 1.48932100517e-02 1.66276099946e-02 1.81179302207e-02 + 1.91106081254e-02 1.94536795471e-02 1.91106081254e-02 1.81179302207e-02 1.66276099946e-02 1.48932100517e-02 + 1.31234388541e-02 1.14031750108e-02 9.78219490488e-03 8.37400390520e-03 7.31933010296e-03 6.67439308888e-03 + 6.36996915701e-03 6.28719817634e-03 6.36996915701e-03 6.67439308888e-03 7.31933010296e-03 8.37400390520e-03 + 1.02401100733e-02 1.22934163580e-02 1.43894839458e-02 1.64062528191e-02 1.81502966987e-02 1.93871115228e-02 + 1.99975947255e-02 1.99975947255e-02 1.93871115228e-02 1.81502966987e-02 1.64062528191e-02 1.43894839458e-02 + 1.22934163580e-02 1.02401100733e-02 8.37400390520e-03 6.87426464911e-03 5.85076317272e-03 5.27978060753e-03 + 5.04614391795e-03 5.04614391795e-03 5.27978060753e-03 5.85076317272e-03 6.87426464911e-03 8.37400390520e-03 + 1.16095381953e-02 1.41149739580e-02 1.66276099946e-02 1.89263764236e-02 2.07196781889e-02 2.17948830411e-02 + 2.21386056500e-02 2.17948830411e-02 2.07196781889e-02 1.89263764236e-02 1.66276099946e-02 1.41149739580e-02 + 1.16095381953e-02 9.28357359923e-03 7.31933010296e-03 5.85076317272e-03 4.89318523683e-03 4.37599558137e-03 + 4.21584246472e-03 4.37599558137e-03 4.89318523683e-03 5.85076317272e-03 7.31933010297e-03 9.28357359923e-03 + 1.40806383265e-02 1.72611853896e-02 2.03920879638e-02 2.30939042850e-02 2.49902463304e-02 2.59181147281e-02 + 2.59181147281e-02 2.49902463304e-02 2.30939042850e-02 2.03920879638e-02 1.72611853896e-02 1.40806383265e-02 + 1.11331987338e-02 8.62540500905e-03 6.67439308888e-03 5.27978060753e-03 4.37599558137e-03 3.92281290681e-03 + 3.92281290681e-03 4.37599558137e-03 5.27978060753e-03 6.67439308889e-03 8.62540500906e-03 1.11331987338e-02 + 1.81617046076e-02 2.22713307355e-02 2.60492747623e-02 2.89590113767e-02 3.06728014251e-02 3.12134113093e-02 + 3.06728014251e-02 2.89590113767e-02 2.60492747623e-02 2.22713307355e-02 1.81617046076e-02 1.42308801751e-02 + 1.08699825973e-02 8.26409670065e-03 6.36996915701e-03 5.04614391795e-03 4.21584246473e-03 3.92281290681e-03 + 4.21584246473e-03 5.04614391795e-03 6.36996915701e-03 8.26409670066e-03 1.08699825973e-02 1.42308801751e-02 + 2.40904203272e-02 2.88778389824e-02 3.27029610793e-02 3.51262182185e-02 3.61935553818e-02 3.61935553818e-02 + 3.51262182185e-02 3.27029610793e-02 2.88778389824e-02 2.40904203272e-02 1.90345757835e-02 1.44210111226e-02 + 1.07546834176e-02 8.11874591477e-03 6.28719817635e-03 5.04614391795e-03 4.37599558137e-03 4.37599558137e-03 + 5.04614391795e-03 6.28719817635e-03 8.11874591477e-03 1.07546834176e-02 1.44210111226e-02 1.90345757835e-02 + 3.09609358382e-02 3.55406204185e-02 3.86293456568e-02 4.02266025417e-02 4.06883718959e-02 4.02266025417e-02 + 3.86293456568e-02 3.55406204185e-02 3.09609358381e-02 2.53797374387e-02 1.96031535283e-02 1.45320680305e-02 + 1.07233722050e-02 8.11874591477e-03 6.36996915701e-03 5.27978060753e-03 4.89318523684e-03 5.27978060753e-03 + 6.36996915701e-03 8.11874591477e-03 1.07233722050e-02 1.45320680305e-02 1.96031535283e-02 2.53797374387e-02 + 3.73540502297e-02 4.14583134665e-02 4.42637285519e-02 4.56987320892e-02 4.56987320892e-02 4.42637285519e-02 + 4.14583134665e-02 3.73540502297e-02 3.20848019959e-02 2.59777844449e-02 1.97871610956e-02 1.45320680305e-02 + 1.07546834176e-02 8.26409670065e-03 6.67439308889e-03 5.85076317272e-03 5.85076317272e-03 6.67439308889e-03 + 8.26409670066e-03 1.07546834176e-02 1.45320680305e-02 1.97871610956e-02 2.59777844449e-02 3.20848019959e-02 + 4.36605690195e-02 4.86717503239e-02 5.24371687844e-02 5.38553081705e-02 5.24371687844e-02 4.86717503239e-02 + 4.36605690195e-02 3.82423088608e-02 3.24128421387e-02 2.59777844449e-02 1.96031535282e-02 1.44210111226e-02 + 1.08699825973e-02 8.62540500906e-03 7.31933010296e-03 6.87426464911e-03 7.31933010296e-03 8.62540500906e-03 + 1.08699825973e-02 1.44210111226e-02 1.96031535282e-02 2.59777844449e-02 3.24128421387e-02 3.82423088608e-02 + 5.18158087398e-02 5.87809730550e-02 6.30064198497e-02 6.30064198497e-02 5.87809730550e-02 5.18158087398e-02 + 4.45490987358e-02 3.82423088608e-02 3.20848019959e-02 2.53797374387e-02 1.90345757835e-02 1.42308801751e-02 + 1.11331987338e-02 9.28357359923e-03 8.37400390520e-03 8.37400390520e-03 9.28357359923e-03 1.11331987338e-02 + 1.42308801751e-02 1.90345757835e-02 2.53797374387e-02 3.20848019959e-02 3.82423088608e-02 4.45490987358e-02 + 9.46618817554e-02 1.02255317231e-01 1.02255317231e-01 9.46618817553e-02 7.81193802830e-02 5.87902882083e-02 + 4.51578187598e-02 3.73540502296e-02 3.07822057975e-02 2.40967233573e-02 1.86355176327e-02 1.50739196267e-02 + 1.30485807277e-02 1.21045128275e-02 1.21045128275e-02 1.30485807277e-02 1.50739196267e-02 1.86355176327e-02 + 2.40967233573e-02 3.07822057975e-02 3.73540502297e-02 4.51578187598e-02 5.87902882083e-02 7.81193802830e-02 + 1.02255317231e-01 1.05382836884e-01 1.02255317231e-01 9.00454509227e-02 6.98255714909e-02 5.17382028008e-02 + 4.14583134664e-02 3.49769025117e-02 2.84217494631e-02 2.23752455712e-02 1.81179302207e-02 1.56224022211e-02 + 1.43188164440e-02 1.38961516945e-02 1.43188164440e-02 1.56224022211e-02 1.81179302207e-02 2.23752455712e-02 + 2.84217494631e-02 3.49769025118e-02 4.14583134664e-02 5.17382028009e-02 6.98255714909e-02 9.00454509227e-02 + 1.02255317231e-01 1.02255317231e-01 9.40538638176e-02 7.65071402184e-02 5.69437593911e-02 4.42637285519e-02 + 3.75326171916e-02 3.16057035862e-02 2.55726183949e-02 2.09446754967e-02 1.81502966987e-02 1.66389339974e-02 + 1.59287126341e-02 1.59287126341e-02 1.66389339973e-02 1.81502966987e-02 2.09446754967e-02 2.55726183949e-02 + 3.16057035862e-02 3.75326171916e-02 4.42637285519e-02 5.69437593911e-02 7.65071402185e-02 9.40538638177e-02 + 9.46618817553e-02 9.00454509226e-02 7.65071402184e-02 5.89461275928e-02 4.56987320892e-02 3.86294987685e-02 + 3.33647463123e-02 2.78013937268e-02 2.32030440049e-02 2.03983415996e-02 1.89263764236e-02 1.81430425204e-02 + 1.78657504093e-02 1.81430425204e-02 1.89263764236e-02 2.03983415996e-02 2.32030440049e-02 2.78013937268e-02 + 3.33647463124e-02 3.86294987685e-02 4.56987320892e-02 5.89461275929e-02 7.65071402185e-02 9.00454509227e-02 + 7.81193802830e-02 6.98255714909e-02 5.69437593911e-02 4.56987320892e-02 3.88811262511e-02 3.39942859271e-02 + 2.89473471924e-02 2.46286629032e-02 2.20777720561e-02 2.09446754967e-02 2.03920879638e-02 2.00583037371e-02 + 2.00583037371e-02 2.03920879638e-02 2.09446754967e-02 2.20777720561e-02 2.46286629032e-02 2.89473471924e-02 + 3.39942859271e-02 3.88811262511e-02 4.56987320892e-02 5.69437593911e-02 6.98255714909e-02 7.81193802830e-02 + 5.87902882083e-02 5.17382028008e-02 4.42637285519e-02 3.86294987685e-02 3.39942859271e-02 2.92643382604e-02 + 2.52445347088e-02 2.30253665657e-02 2.24043982374e-02 2.23752455712e-02 2.22713307355e-02 2.21709602700e-02 + 2.22713307355e-02 2.23752455712e-02 2.24043982374e-02 2.30253665657e-02 2.52445347088e-02 2.92643382604e-02 + 3.39942859271e-02 3.86294987685e-02 4.42637285519e-02 5.17382028008e-02 5.87902882083e-02 6.17008685348e-02 + 4.51578187598e-02 4.14583134664e-02 3.75326171916e-02 3.33647463123e-02 2.89473471924e-02 2.52445347088e-02 + 2.33118163733e-02 2.31387869200e-02 2.37301976795e-02 2.40967233573e-02 2.40904203272e-02 2.40904203272e-02 + 2.40967233573e-02 2.37301976795e-02 2.31387869200e-02 2.33118163733e-02 2.52445347088e-02 2.89473471924e-02 + 3.33647463124e-02 3.75326171916e-02 4.14583134664e-02 4.51578187598e-02 4.76134439312e-02 4.76134439312e-02 + 3.73540502296e-02 3.49769025117e-02 3.16057035862e-02 2.78013937268e-02 2.46286629032e-02 2.30253665656e-02 + 2.31387869200e-02 2.42075414898e-02 2.51249889113e-02 2.53973709283e-02 2.53797374387e-02 2.53973709283e-02 + 2.51249889113e-02 2.42075414898e-02 2.31387869200e-02 2.30253665656e-02 2.46286629032e-02 2.78013937268e-02 + 3.16057035862e-02 3.49769025117e-02 3.73540502296e-02 3.86937384314e-02 3.91205047681e-02 3.86937384314e-02 + 3.07822057975e-02 2.84217494631e-02 2.55726183949e-02 2.32030440049e-02 2.20777720561e-02 2.24043982374e-02 + 2.37301976795e-02 2.51249889113e-02 2.58521940319e-02 2.59777844449e-02 2.59777844449e-02 2.58521940319e-02 + 2.51249889113e-02 2.37301976795e-02 2.24043982374e-02 2.20777720561e-02 2.32030440049e-02 2.55726183949e-02 + 2.84217494631e-02 3.07822057975e-02 3.20848019958e-02 3.25042138914e-02 3.25042138914e-02 3.20848019958e-02 + 2.40967233573e-02 2.23752455712e-02 2.09446754967e-02 2.03983415996e-02 2.09446754967e-02 2.23752455712e-02 + 2.40967233573e-02 2.53973709283e-02 2.59777844449e-02 2.60947919991e-02 2.59777844449e-02 2.53973709283e-02 + 2.40967233573e-02 2.23752455712e-02 2.09446754967e-02 2.03983415996e-02 2.09446754967e-02 2.23752455712e-02 + 2.40967233573e-02 2.53973709283e-02 2.59777844449e-02 2.60947919991e-02 2.59777844449e-02 2.53973709283e-02 + 1.86355176327e-02 1.81179302207e-02 1.81502966987e-02 1.89263764236e-02 2.03920879638e-02 2.22713307355e-02 + 2.40904203272e-02 2.53797374387e-02 2.59777844449e-02 2.59777844449e-02 2.53797374387e-02 2.40904203272e-02 + 2.22713307355e-02 2.03920879638e-02 1.89263764236e-02 1.81502966987e-02 1.81179302207e-02 1.86355176327e-02 + 1.92840317465e-02 1.96802339930e-02 1.97871610956e-02 1.97871610956e-02 1.96802339929e-02 1.92840317465e-02 + 1.50739196267e-02 1.56224022211e-02 1.66389339973e-02 1.81430425204e-02 2.00583037371e-02 2.21709602700e-02 + 2.40904203272e-02 2.53973709283e-02 2.58521940319e-02 2.53973709283e-02 2.40904203272e-02 2.21709602700e-02 + 2.00583037371e-02 1.81430425204e-02 1.66389339973e-02 1.56224022211e-02 1.50739196267e-02 1.48492046219e-02 + 1.47279181688e-02 1.45986463266e-02 1.45320680305e-02 1.45986463266e-02 1.47279181688e-02 1.48492046219e-02 + 1.30485807277e-02 1.43188164440e-02 1.59287126341e-02 1.78657504093e-02 2.00583037371e-02 2.22713307355e-02 + 2.40967233573e-02 2.51249889113e-02 2.51249889113e-02 2.40967233573e-02 2.22713307355e-02 2.00583037371e-02 + 1.78657504093e-02 1.59287126341e-02 1.43188164440e-02 1.30485807277e-02 1.21090534529e-02 1.14481144732e-02 + 1.09990704821e-02 1.07546834176e-02 1.07546834176e-02 1.09990704821e-02 1.14481144732e-02 1.21090534529e-02 + 1.21045128275e-02 1.38961516944e-02 1.59287126341e-02 1.81430425204e-02 2.03920879638e-02 2.23752455712e-02 + 2.37301976795e-02 2.42075414899e-02 2.37301976795e-02 2.23752455712e-02 2.03920879638e-02 1.81430425204e-02 + 1.59287126341e-02 1.38961516944e-02 1.21045128275e-02 1.06109348738e-02 9.47290433110e-03 8.70256016586e-03 + 8.26409670065e-03 8.12161313174e-03 8.26409670065e-03 8.70256016586e-03 9.47290433110e-03 1.06109348738e-02 + 1.21045128275e-02 1.43188164440e-02 1.66389339973e-02 1.89263764236e-02 2.09446754967e-02 2.24043982374e-02 + 2.31387869200e-02 2.31387869200e-02 2.24043982374e-02 2.09446754967e-02 1.89263764236e-02 1.66389339973e-02 + 1.43188164440e-02 1.21045128275e-02 1.01198499891e-02 8.50665152156e-03 7.36052161958e-03 6.67439308888e-03 + 6.36714430779e-03 6.36714430779e-03 6.67439308888e-03 7.36052161959e-03 8.50665152157e-03 1.01198499891e-02 + 1.30485807277e-02 1.56224022211e-02 1.81502966987e-02 2.03983415996e-02 2.20777720561e-02 2.30253665657e-02 + 2.33118163733e-02 2.30253665657e-02 2.20777720561e-02 2.03983415996e-02 1.81502966987e-02 1.56224022211e-02 + 1.30485807277e-02 1.06109348738e-02 8.50665152157e-03 6.90308343843e-03 5.85076317272e-03 5.28636096575e-03 + 5.11303460195e-03 5.28636096575e-03 5.85076317272e-03 6.90308343843e-03 8.50665152157e-03 1.06109348738e-02 + 1.50739196267e-02 1.81179302207e-02 2.09446754967e-02 2.32030440050e-02 2.46286629032e-02 2.52445347088e-02 + 2.52445347088e-02 2.46286629032e-02 2.32030440049e-02 2.09446754967e-02 1.81179302207e-02 1.50739196267e-02 + 1.21090534529e-02 9.47290433111e-03 7.36052161959e-03 5.85076317272e-03 4.90588959931e-03 4.45367296569e-03 + 4.45367296569e-03 4.90588959931e-03 5.85076317272e-03 7.36052161959e-03 9.47290433111e-03 1.21090534530e-02 + 1.86355176327e-02 2.23752455712e-02 2.55726183949e-02 2.78013937268e-02 2.89473471924e-02 2.92643382604e-02 + 2.89473471924e-02 2.78013937268e-02 2.55726183949e-02 2.23752455712e-02 1.86355176327e-02 1.48492046219e-02 + 1.14481144732e-02 8.70256016587e-03 6.67439308889e-03 5.28636096575e-03 4.45367296569e-03 4.16945913194e-03 + 4.45367296569e-03 5.28636096575e-03 6.67439308889e-03 8.70256016587e-03 1.14481144732e-02 1.48492046219e-02 + 2.40967233573e-02 2.84217494631e-02 3.16057035862e-02 3.33647463124e-02 3.39942859272e-02 3.39942859272e-02 + 3.33647463124e-02 3.16057035862e-02 2.84217494631e-02 2.40967233573e-02 1.92840317465e-02 1.47279181689e-02 + 1.09990704821e-02 8.26409670065e-03 6.36714430780e-03 5.11303460195e-03 4.45367296569e-03 4.45367296569e-03 + 5.11303460195e-03 6.36714430780e-03 8.26409670066e-03 1.09990704821e-02 1.47279181689e-02 1.92840317465e-02 + 3.07822057975e-02 3.49769025118e-02 3.75326171917e-02 3.86294987685e-02 3.88811262512e-02 3.86294987685e-02 + 3.75326171916e-02 3.49769025118e-02 3.07822057975e-02 2.53973709283e-02 1.96802339930e-02 1.45986463266e-02 + 1.07546834176e-02 8.12161313175e-03 6.36714430780e-03 5.28636096575e-03 4.90588959931e-03 5.28636096575e-03 + 6.36714430780e-03 8.12161313175e-03 1.07546834176e-02 1.45986463266e-02 1.96802339930e-02 2.53973709283e-02 + 3.73540502297e-02 4.14583134665e-02 4.42637285519e-02 4.56987320893e-02 4.56987320893e-02 4.42637285519e-02 + 4.14583134665e-02 3.73540502297e-02 3.20848019959e-02 2.59777844449e-02 1.97871610956e-02 1.45320680305e-02 + 1.07546834176e-02 8.26409670065e-03 6.67439308889e-03 5.85076317272e-03 5.85076317272e-03 6.67439308889e-03 + 8.26409670066e-03 1.07546834176e-02 1.45320680305e-02 1.97871610956e-02 2.59777844449e-02 3.20848019959e-02 + 4.51578187598e-02 5.17382028009e-02 5.69437593912e-02 5.89461275929e-02 5.69437593912e-02 5.17382028009e-02 + 4.51578187598e-02 3.86937384314e-02 3.25042138914e-02 2.60947919991e-02 1.97871610956e-02 1.45986463266e-02 + 1.09990704821e-02 8.70256016587e-03 7.36052161959e-03 6.90308343843e-03 7.36052161959e-03 8.70256016587e-03 + 1.09990704821e-02 1.45986463266e-02 1.97871610956e-02 2.60947919991e-02 3.25042138914e-02 3.86937384314e-02 + 5.87902882084e-02 6.98255714910e-02 7.65071402186e-02 7.65071402186e-02 6.98255714910e-02 5.87902882084e-02 + 4.76134439312e-02 3.91205047681e-02 3.25042138914e-02 2.59777844449e-02 1.96802339930e-02 1.47279181688e-02 + 1.14481144732e-02 9.47290433111e-03 8.50665152157e-03 8.50665152157e-03 9.47290433111e-03 1.14481144732e-02 + 1.47279181688e-02 1.96802339930e-02 2.59777844449e-02 3.25042138914e-02 3.91205047681e-02 4.76134439313e-02 + 7.81193802831e-02 9.00454509227e-02 9.40538638177e-02 9.00454509227e-02 7.81193802831e-02 6.17008685349e-02 + 4.76134439312e-02 3.86937384314e-02 3.20848019959e-02 2.53973709283e-02 1.92840317465e-02 1.48492046219e-02 + 1.21090534529e-02 1.06109348738e-02 1.01198499891e-02 1.06109348738e-02 1.21090534529e-02 1.48492046219e-02 + 1.92840317465e-02 2.53973709283e-02 3.20848019959e-02 3.86937384314e-02 4.76134439312e-02 6.17008685349e-02 + 1.14984029929e-01 1.14284409879e-01 1.14984029929e-01 1.07504612680e-01 8.44119137021e-02 5.87902882083e-02 + 4.36605690195e-02 3.62673468746e-02 2.99301385615e-02 2.37301976795e-02 1.91106081253e-02 1.63906429721e-02 + 1.50424663757e-02 1.46288647205e-02 1.50424663757e-02 1.63906429721e-02 1.91106081253e-02 2.37301976795e-02 + 2.99301385615e-02 3.62673468746e-02 4.36605690195e-02 5.87902882083e-02 8.44119137022e-02 1.07504612680e-01 + 1.14284409879e-01 1.14284409879e-01 1.13479602981e-01 9.74781930219e-02 6.98255714909e-02 4.86717503238e-02 + 3.89798518705e-02 3.31963581644e-02 2.73091501295e-02 2.24043982374e-02 1.93871115228e-02 1.78888288560e-02 + 1.72812015630e-02 1.72812015630e-02 1.78888288560e-02 1.93871115228e-02 2.24043982374e-02 2.73091501295e-02 + 3.31963581644e-02 3.89798518706e-02 4.86717503238e-02 6.98255714909e-02 9.74781930220e-02 1.13479602981e-01 + 1.14984029929e-01 1.13479602981e-01 1.01688733219e-01 7.65071402185e-02 5.24371687843e-02 4.00842207789e-02 + 3.45751625707e-02 2.95890354456e-02 2.49964037842e-02 2.20777720561e-02 2.07196781889e-02 2.02040886880e-02 + 2.00653973119e-02 2.02040886880e-02 2.07196781889e-02 2.20777720561e-02 2.49964037843e-02 2.95890354456e-02 + 3.45751625707e-02 4.00842207789e-02 5.24371687843e-02 7.65071402185e-02 1.01688733220e-01 1.13479602981e-01 + 1.07504612679e-01 9.74781930219e-02 7.65071402185e-02 5.38553081705e-02 4.03062291682e-02 3.46096179590e-02 + 3.04773481040e-02 2.65400648390e-02 2.40839675381e-02 2.32030440049e-02 2.30939042850e-02 2.31231583381e-02 + 2.31231583381e-02 2.30939042850e-02 2.32030440049e-02 2.40839675381e-02 2.65400648390e-02 3.04773481040e-02 + 3.46096179590e-02 4.03062291683e-02 5.38553081705e-02 7.65071402185e-02 9.74781930219e-02 1.07504612679e-01 + 8.44119137021e-02 6.98255714909e-02 5.24371687843e-02 4.03062291682e-02 3.44216532954e-02 3.05548189106e-02 + 2.71142998602e-02 2.51931467428e-02 2.49964037842e-02 2.55726183949e-02 2.60492747623e-02 2.61902387743e-02 + 2.60492747623e-02 2.55726183949e-02 2.49964037842e-02 2.51931467428e-02 2.71142998602e-02 3.05548189106e-02 + 3.44216532954e-02 4.03062291683e-02 5.24371687843e-02 6.98255714909e-02 8.44119137022e-02 8.97664201879e-02 + 5.87902882083e-02 4.86717503238e-02 4.00842207789e-02 3.46096179590e-02 3.05548189106e-02 2.72051400328e-02 + 2.55791633527e-02 2.59618688149e-02 2.73091501295e-02 2.84217494631e-02 2.88778389824e-02 2.88778389824e-02 + 2.84217494631e-02 2.73091501295e-02 2.59618688149e-02 2.55791633527e-02 2.72051400328e-02 3.05548189106e-02 + 3.46096179590e-02 4.00842207790e-02 4.86717503239e-02 5.87902882083e-02 6.56428313090e-02 6.56428313090e-02 + 4.36605690195e-02 3.89798518705e-02 3.45751625707e-02 3.04773481040e-02 2.71142998602e-02 2.55791633527e-02 + 2.62414819209e-02 2.81653274579e-02 2.99301385615e-02 3.07822057975e-02 3.09609358381e-02 3.07822057975e-02 + 2.99301385615e-02 2.81653274579e-02 2.62414819209e-02 2.55791633527e-02 2.71142998602e-02 3.04773481040e-02 + 3.45751625707e-02 3.89798518706e-02 4.36605690195e-02 4.76134439312e-02 4.91904413240e-02 4.76134439312e-02 + 3.62673468745e-02 3.31963581643e-02 2.95890354456e-02 2.65400648390e-02 2.51931467427e-02 2.59618688149e-02 + 2.81653274579e-02 3.04404777485e-02 3.17361436403e-02 3.20848019959e-02 3.20848019959e-02 3.17361436402e-02 + 3.04404777485e-02 2.81653274579e-02 2.59618688149e-02 2.51931467428e-02 2.65400648390e-02 2.95890354456e-02 + 3.31963581644e-02 3.62673468746e-02 3.82423088608e-02 3.91205047681e-02 3.91205047681e-02 3.82423088607e-02 + 2.99301385615e-02 2.73091501295e-02 2.49964037842e-02 2.40839675381e-02 2.49964037842e-02 2.73091501295e-02 + 2.99301385615e-02 3.17361436403e-02 3.24128421387e-02 3.25042138914e-02 3.24128421387e-02 3.17361436402e-02 + 2.99301385615e-02 2.73091501295e-02 2.49964037842e-02 2.40839675381e-02 2.49964037842e-02 2.73091501295e-02 + 2.99301385615e-02 3.17361436402e-02 3.24128421387e-02 3.25042138914e-02 3.24128421387e-02 3.17361436402e-02 + 2.37301976795e-02 2.24043982374e-02 2.20777720560e-02 2.32030440049e-02 2.55726183949e-02 2.84217494631e-02 + 3.07822057975e-02 3.20848019959e-02 3.25042138914e-02 3.25042138914e-02 3.20848019959e-02 3.07822057975e-02 + 2.84217494631e-02 2.55726183949e-02 2.32030440049e-02 2.20777720561e-02 2.24043982374e-02 2.37301976795e-02 + 2.51249889113e-02 2.58521940319e-02 2.59777844449e-02 2.59777844449e-02 2.58521940319e-02 2.51249889113e-02 + 1.91106081253e-02 1.93871115227e-02 2.07196781889e-02 2.30939042849e-02 2.60492747622e-02 2.88778389824e-02 + 3.09609358381e-02 3.20848019959e-02 3.24128421387e-02 3.20848019959e-02 3.09609358381e-02 2.88778389824e-02 + 2.60492747622e-02 2.30939042849e-02 2.07196781889e-02 1.93871115228e-02 1.91106081253e-02 1.94290489291e-02 + 1.97044449599e-02 1.96802339930e-02 1.96031535282e-02 1.96802339929e-02 1.97044449599e-02 1.94290489291e-02 + 1.63906429721e-02 1.78888288560e-02 2.02040886880e-02 2.31231583381e-02 2.61902387743e-02 2.88778389824e-02 + 3.07822057975e-02 3.17361436403e-02 3.17361436403e-02 3.07822057975e-02 2.88778389824e-02 2.61902387743e-02 + 2.31231583381e-02 2.02040886880e-02 1.78888288560e-02 1.63906429721e-02 1.55937378378e-02 1.51354763629e-02 + 1.47279181688e-02 1.44210111226e-02 1.44210111226e-02 1.47279181688e-02 1.51354763629e-02 1.55937378378e-02 + 1.50424663757e-02 1.72812015630e-02 2.00653973118e-02 2.31231583381e-02 2.60492747623e-02 2.84217494631e-02 + 2.99301385615e-02 3.04404777485e-02 2.99301385615e-02 2.84217494631e-02 2.60492747623e-02 2.31231583381e-02 + 2.00653973118e-02 1.72812015630e-02 1.50424663757e-02 1.34169388324e-02 1.22800512627e-02 1.14481144732e-02 + 1.08699825973e-02 1.06518186545e-02 1.08699825973e-02 1.14481144732e-02 1.22800512627e-02 1.34169388324e-02 + 1.46288647205e-02 1.72812015630e-02 2.02040886880e-02 2.30939042849e-02 2.55726183949e-02 2.73091501295e-02 + 2.81653274579e-02 2.81653274579e-02 2.73091501295e-02 2.55726183949e-02 2.30939042849e-02 2.02040886880e-02 + 1.72812015630e-02 1.46288647205e-02 1.24265880360e-02 1.07225418333e-02 9.47290433110e-03 8.62540500905e-03 + 8.18383164206e-03 8.18383164206e-03 8.62540500905e-03 9.47290433110e-03 1.07225418333e-02 1.24265880360e-02 + 1.50424663757e-02 1.78888288560e-02 2.07196781889e-02 2.32030440049e-02 2.49964037843e-02 2.59618688149e-02 + 2.62414819209e-02 2.59618688149e-02 2.49964037843e-02 2.32030440049e-02 2.07196781889e-02 1.78888288560e-02 + 1.50424663757e-02 1.24265880360e-02 1.02153626600e-02 8.50665152156e-03 7.31933010296e-03 6.62684043801e-03 + 6.39967919814e-03 6.62684043801e-03 7.31933010296e-03 8.50665152157e-03 1.02153626600e-02 1.24265880360e-02 + 1.63906429721e-02 1.93871115228e-02 2.20777720561e-02 2.40839675381e-02 2.51931467428e-02 2.55791633528e-02 + 2.55791633528e-02 2.51931467428e-02 2.40839675381e-02 2.20777720561e-02 1.93871115228e-02 1.63906429721e-02 + 1.34169388324e-02 1.07225418333e-02 8.50665152157e-03 6.87426464911e-03 5.82746138702e-03 5.32068131556e-03 + 5.32068131556e-03 5.82746138702e-03 6.87426464911e-03 8.50665152157e-03 1.07225418333e-02 1.34169388324e-02 + 1.91106081254e-02 2.24043982374e-02 2.49964037843e-02 2.65400648390e-02 2.71142998602e-02 2.72051400328e-02 + 2.71142998602e-02 2.65400648390e-02 2.49964037843e-02 2.24043982374e-02 1.91106081253e-02 1.55937378378e-02 + 1.22800512627e-02 9.47290433111e-03 7.31933010297e-03 5.82746138702e-03 4.94632325183e-03 4.65175947716e-03 + 4.94632325183e-03 5.82746138702e-03 7.31933010297e-03 9.47290433111e-03 1.22800512627e-02 1.55937378378e-02 + 2.37301976795e-02 2.73091501295e-02 2.95890354456e-02 3.04773481040e-02 3.05548189106e-02 3.05548189106e-02 + 3.04773481040e-02 2.95890354456e-02 2.73091501295e-02 2.37301976795e-02 1.94290489291e-02 1.51354763629e-02 + 1.14481144732e-02 8.62540500906e-03 6.62684043802e-03 5.32068131556e-03 4.65175947716e-03 4.65175947716e-03 + 5.32068131556e-03 6.62684043802e-03 8.62540500906e-03 1.14481144732e-02 1.51354763629e-02 1.94290489291e-02 + 2.99301385615e-02 3.31963581644e-02 3.45751625707e-02 3.46096179591e-02 3.44216532954e-02 3.46096179591e-02 + 3.45751625707e-02 3.31963581644e-02 2.99301385615e-02 2.51249889113e-02 1.97044449599e-02 1.47279181689e-02 + 1.08699825973e-02 8.18383164206e-03 6.39967919814e-03 5.32068131556e-03 4.94632325183e-03 5.32068131556e-03 + 6.39967919814e-03 8.18383164207e-03 1.08699825973e-02 1.47279181689e-02 1.97044449599e-02 2.51249889113e-02 + 3.62673468746e-02 3.89798518706e-02 4.00842207790e-02 4.03062291683e-02 4.03062291683e-02 4.00842207790e-02 + 3.89798518706e-02 3.62673468746e-02 3.17361436403e-02 2.58521940319e-02 1.96802339930e-02 1.44210111226e-02 + 1.06518186545e-02 8.18383164206e-03 6.62684043802e-03 5.82746138702e-03 5.82746138702e-03 6.62684043802e-03 + 8.18383164207e-03 1.06518186545e-02 1.44210111226e-02 1.96802339930e-02 2.58521940319e-02 3.17361436403e-02 + 4.36605690195e-02 4.86717503239e-02 5.24371687844e-02 5.38553081706e-02 5.24371687844e-02 4.86717503239e-02 + 4.36605690195e-02 3.82423088608e-02 3.24128421387e-02 2.59777844449e-02 1.96031535282e-02 1.44210111226e-02 + 1.08699825973e-02 8.62540500906e-03 7.31933010297e-03 6.87426464911e-03 7.31933010297e-03 8.62540500906e-03 + 1.08699825973e-02 1.44210111226e-02 1.96031535283e-02 2.59777844449e-02 3.24128421387e-02 3.82423088608e-02 + 5.87902882084e-02 6.98255714910e-02 7.65071402186e-02 7.65071402186e-02 6.98255714910e-02 5.87902882084e-02 + 4.76134439312e-02 3.91205047681e-02 3.25042138914e-02 2.59777844449e-02 1.96802339930e-02 1.47279181688e-02 + 1.14481144732e-02 9.47290433111e-03 8.50665152157e-03 8.50665152157e-03 9.47290433111e-03 1.14481144732e-02 + 1.47279181689e-02 1.96802339930e-02 2.59777844449e-02 3.25042138914e-02 3.91205047681e-02 4.76134439313e-02 + 8.44119137022e-02 9.74781930220e-02 1.01688733220e-01 9.74781930220e-02 8.44119137022e-02 6.56428313091e-02 + 4.91904413241e-02 3.91205047681e-02 3.24128421387e-02 2.58521940319e-02 1.97044449599e-02 1.51354763629e-02 + 1.22800512627e-02 1.07225418333e-02 1.02153626600e-02 1.07225418333e-02 1.22800512627e-02 1.51354763629e-02 + 1.97044449599e-02 2.58521940319e-02 3.24128421387e-02 3.91205047681e-02 4.91904413241e-02 6.56428313091e-02 + 1.07504612680e-01 1.13479602981e-01 1.13479602981e-01 1.07504612680e-01 8.97664201880e-02 6.56428313091e-02 + 4.76134439312e-02 3.82423088608e-02 3.17361436403e-02 2.51249889113e-02 1.94290489291e-02 1.55937378378e-02 + 1.34169388324e-02 1.24265880360e-02 1.24265880360e-02 1.34169388324e-02 1.55937378378e-02 1.94290489291e-02 + 2.51249889113e-02 3.17361436403e-02 3.82423088608e-02 4.76134439312e-02 6.56428313091e-02 8.97664201881e-02 + 1.05271425072e-01 1.05271425072e-01 1.15476799016e-01 1.07504612680e-01 7.81193802830e-02 5.18158087397e-02 + 3.97328533270e-02 3.38925854809e-02 2.81653274579e-02 2.31387869200e-02 1.99975947255e-02 1.85132763207e-02 + 1.79741436761e-02 1.79741436761e-02 1.85132763207e-02 1.99975947255e-02 2.31387869200e-02 2.81653274579e-02 + 3.38925854809e-02 3.97328533271e-02 5.18158087398e-02 7.81193802831e-02 1.07504612680e-01 1.15476799016e-01 + 1.05271425072e-01 1.12133375345e-01 1.13479602981e-01 9.00454509227e-02 5.87809730550e-02 4.11388919901e-02 + 3.48628450776e-02 3.04051143293e-02 2.59618688149e-02 2.30253665657e-02 2.17948830411e-02 2.15195877577e-02 + 2.15038028103e-02 2.15195877577e-02 2.17948830411e-02 2.30253665657e-02 2.59618688149e-02 3.04051143293e-02 + 3.48628450776e-02 4.11388919901e-02 5.87809730550e-02 9.00454509227e-02 1.13479602981e-01 1.12133375345e-01 + 1.15476799016e-01 1.13479602981e-01 9.40538638176e-02 6.30064198496e-02 4.15214050146e-02 3.39196724265e-02 + 3.06792139923e-02 2.73903662614e-02 2.51931467427e-02 2.46286629032e-02 2.49902463304e-02 2.54054430258e-02 + 2.54054430258e-02 2.49902463304e-02 2.46286629032e-02 2.51931467428e-02 2.73903662614e-02 3.06792139923e-02 + 3.39196724265e-02 4.15214050146e-02 6.30064198497e-02 9.40538638177e-02 1.13479602981e-01 1.15476799016e-01 + 1.07504612679e-01 9.00454509227e-02 6.30064198496e-02 4.15474983449e-02 3.26920605346e-02 2.97974895143e-02 + 2.74769895380e-02 2.61756575962e-02 2.65400648390e-02 2.78013937268e-02 2.89590113766e-02 2.93979324046e-02 + 2.89590113766e-02 2.78013937268e-02 2.65400648390e-02 2.61756575962e-02 2.74769895380e-02 2.97974895143e-02 + 3.26920605347e-02 4.15474983449e-02 6.30064198497e-02 9.00454509227e-02 1.07504612680e-01 1.12225405020e-01 + 7.81193802830e-02 5.87809730550e-02 4.15214050146e-02 3.26920605347e-02 2.92436594720e-02 2.70513354759e-02 + 2.62352804996e-02 2.73903662614e-02 2.95890354456e-02 3.16057035862e-02 3.27029610793e-02 3.27029610793e-02 + 3.16057035862e-02 2.95890354456e-02 2.73903662614e-02 2.62352804996e-02 2.70513354759e-02 2.92436594720e-02 + 3.26920605347e-02 4.15214050146e-02 5.87809730550e-02 7.81193802830e-02 8.97664201880e-02 8.97664201879e-02 + 5.18158087397e-02 4.11388919901e-02 3.39196724265e-02 2.97974895143e-02 2.70513354759e-02 2.61140936360e-02 + 2.75584598461e-02 3.04051143293e-02 3.31963581644e-02 3.49769025118e-02 3.55406204185e-02 3.49769025117e-02 + 3.31963581644e-02 3.04051143293e-02 2.75584598461e-02 2.61140936360e-02 2.70513354759e-02 2.97974895143e-02 + 3.39196724265e-02 4.11388919902e-02 5.18158087398e-02 6.17008685349e-02 6.56428313090e-02 6.17008685348e-02 + 3.97328533270e-02 3.48628450776e-02 3.06792139923e-02 2.74769895380e-02 2.62352804996e-02 2.75584598461e-02 + 3.06058831029e-02 3.38925854809e-02 3.62673468746e-02 3.73540502296e-02 3.73540502296e-02 3.62673468746e-02 + 3.38925854809e-02 3.06058831029e-02 2.75584598461e-02 2.62352804996e-02 2.74769895380e-02 3.06792139923e-02 + 3.48628450776e-02 3.97328533271e-02 4.45490987358e-02 4.76134439312e-02 4.76134439312e-02 4.45490987357e-02 + 3.38925854809e-02 3.04051143293e-02 2.73903662614e-02 2.61756575962e-02 2.73903662614e-02 3.04051143293e-02 + 3.38925854809e-02 3.66854482599e-02 3.82423088608e-02 3.86937384314e-02 3.82423088608e-02 3.66854482599e-02 + 3.38925854809e-02 3.04051143293e-02 2.73903662614e-02 2.61756575962e-02 2.73903662614e-02 3.04051143293e-02 + 3.38925854809e-02 3.66854482599e-02 3.82423088607e-02 3.86937384314e-02 3.82423088607e-02 3.66854482599e-02 + 2.81653274579e-02 2.59618688149e-02 2.51931467427e-02 2.65400648390e-02 2.95890354456e-02 3.31963581644e-02 + 3.62673468746e-02 3.82423088608e-02 3.91205047681e-02 3.91205047681e-02 3.82423088608e-02 3.62673468746e-02 + 3.31963581644e-02 2.95890354456e-02 2.65400648390e-02 2.51931467428e-02 2.59618688149e-02 2.81653274579e-02 + 3.04404777485e-02 3.17361436402e-02 3.20848019958e-02 3.20848019958e-02 3.17361436402e-02 3.04404777485e-02 + 2.31387869200e-02 2.30253665656e-02 2.46286629032e-02 2.78013937268e-02 3.16057035862e-02 3.49769025118e-02 + 3.73540502297e-02 3.86937384314e-02 3.91205047681e-02 3.86937384314e-02 3.73540502297e-02 3.49769025118e-02 + 3.16057035862e-02 2.78013937268e-02 2.46286629032e-02 2.30253665657e-02 2.31387869200e-02 2.42075414898e-02 + 2.51249889113e-02 2.53973709283e-02 2.53797374387e-02 2.53973709283e-02 2.51249889113e-02 2.42075414898e-02 + 1.99975947255e-02 2.17948830411e-02 2.49902463304e-02 2.89590113766e-02 3.27029610793e-02 3.55406204185e-02 + 3.73540502297e-02 3.82423088608e-02 3.82423088608e-02 3.73540502297e-02 3.55406204185e-02 3.27029610793e-02 + 2.89590113766e-02 2.49902463304e-02 2.17948830411e-02 1.99975947255e-02 1.94536795471e-02 1.94290489291e-02 + 1.92840317465e-02 1.90345757835e-02 1.90345757835e-02 1.92840317465e-02 1.94290489291e-02 1.94536795471e-02 + 1.85132763207e-02 2.15195877577e-02 2.54054430258e-02 2.93979324046e-02 3.27029610793e-02 3.49769025118e-02 + 3.62673468746e-02 3.66854482599e-02 3.62673468746e-02 3.49769025118e-02 3.27029610793e-02 2.93979324046e-02 + 2.54054430258e-02 2.15195877577e-02 1.85132763207e-02 1.66439398964e-02 1.55937378378e-02 1.48492046219e-02 + 1.42308801751e-02 1.39667079820e-02 1.42308801751e-02 1.48492046219e-02 1.55937378378e-02 1.66439398964e-02 + 1.79741436760e-02 2.15038028103e-02 2.54054430258e-02 2.89590113766e-02 3.16057035862e-02 3.31963581644e-02 + 3.38925854810e-02 3.38925854810e-02 3.31963581644e-02 3.16057035862e-02 2.89590113766e-02 2.54054430258e-02 + 2.15038028103e-02 1.79741436760e-02 1.52762540169e-02 1.34169388324e-02 1.21090534529e-02 1.11331987338e-02 + 1.05557815436e-02 1.05557815436e-02 1.11331987338e-02 1.21090534529e-02 1.34169388324e-02 1.52762540168e-02 + 1.79741436760e-02 2.15195877577e-02 2.49902463304e-02 2.78013937268e-02 2.95890354456e-02 3.04051143294e-02 + 3.06058831030e-02 3.04051143294e-02 2.95890354456e-02 2.78013937268e-02 2.49902463304e-02 2.15195877577e-02 + 1.79741436760e-02 1.48656767560e-02 1.24265880360e-02 1.06109348738e-02 9.28357359922e-03 8.41997198038e-03 + 8.11230157084e-03 8.41997198038e-03 9.28357359923e-03 1.06109348738e-02 1.24265880360e-02 1.48656767560e-02 + 1.85132763207e-02 2.17948830411e-02 2.46286629032e-02 2.65400648390e-02 2.73903662614e-02 2.75584598462e-02 + 2.75584598462e-02 2.73903662614e-02 2.65400648390e-02 2.46286629032e-02 2.17948830411e-02 1.85132763207e-02 + 1.52762540169e-02 1.24265880360e-02 1.01198499891e-02 8.37400390520e-03 7.17862759619e-03 6.56138198056e-03 + 6.56138198056e-03 7.17862759619e-03 8.37400390520e-03 1.01198499891e-02 1.24265880360e-02 1.52762540169e-02 + 1.99975947255e-02 2.30253665657e-02 2.51931467428e-02 2.61756575963e-02 2.62352804996e-02 2.61140936361e-02 + 2.62352804996e-02 2.61756575963e-02 2.51931467428e-02 2.30253665657e-02 1.99975947255e-02 1.66439398964e-02 + 1.34169388324e-02 1.06109348738e-02 8.37400390520e-03 6.75449318420e-03 5.76667312114e-03 5.43239778449e-03 + 5.76667312114e-03 6.75449318420e-03 8.37400390520e-03 1.06109348738e-02 1.34169388324e-02 1.66439398964e-02 + 2.31387869200e-02 2.59618688149e-02 2.73903662614e-02 2.74769895380e-02 2.70513354759e-02 2.70513354759e-02 + 2.74769895380e-02 2.73903662614e-02 2.59618688149e-02 2.31387869200e-02 1.94536795471e-02 1.55937378378e-02 + 1.21090534530e-02 9.28357359923e-03 7.17862759620e-03 5.76667312114e-03 5.04343778102e-03 5.04343778102e-03 + 5.76667312114e-03 7.17862759620e-03 9.28357359923e-03 1.21090534530e-02 1.55937378378e-02 1.94536795471e-02 + 2.81653274579e-02 3.04051143294e-02 3.06792139923e-02 2.97974895143e-02 2.92436594720e-02 2.97974895143e-02 + 3.06792139923e-02 3.04051143294e-02 2.81653274579e-02 2.42075414899e-02 1.94290489291e-02 1.48492046219e-02 + 1.11331987338e-02 8.41997198039e-03 6.56138198057e-03 5.43239778449e-03 5.04343778102e-03 5.43239778449e-03 + 6.56138198057e-03 8.41997198039e-03 1.11331987338e-02 1.48492046219e-02 1.94290489291e-02 2.42075414899e-02 + 3.38925854810e-02 3.48628450777e-02 3.39196724265e-02 3.26920605347e-02 3.26920605347e-02 3.39196724265e-02 + 3.48628450776e-02 3.38925854809e-02 3.04404777485e-02 2.51249889113e-02 1.92840317465e-02 1.42308801751e-02 + 1.05557815436e-02 8.11230157085e-03 6.56138198057e-03 5.76667312114e-03 5.76667312114e-03 6.56138198057e-03 + 8.11230157085e-03 1.05557815436e-02 1.42308801751e-02 1.92840317465e-02 2.51249889113e-02 3.04404777485e-02 + 3.97328533271e-02 4.11388919902e-02 4.15214050147e-02 4.15474983450e-02 4.15214050147e-02 4.11388919902e-02 + 3.97328533271e-02 3.66854482599e-02 3.17361436403e-02 2.53973709283e-02 1.90345757835e-02 1.39667079820e-02 + 1.05557815436e-02 8.41997198039e-03 7.17862759620e-03 6.75449318420e-03 7.17862759620e-03 8.41997198039e-03 + 1.05557815436e-02 1.39667079820e-02 1.90345757835e-02 2.53973709283e-02 3.17361436403e-02 3.66854482599e-02 + 5.18158087398e-02 5.87809730551e-02 6.30064198498e-02 6.30064198498e-02 5.87809730551e-02 5.18158087398e-02 + 4.45490987358e-02 3.82423088608e-02 3.20848019959e-02 2.53797374387e-02 1.90345757835e-02 1.42308801751e-02 + 1.11331987338e-02 9.28357359923e-03 8.37400390520e-03 8.37400390520e-03 9.28357359923e-03 1.11331987338e-02 + 1.42308801751e-02 1.90345757835e-02 2.53797374387e-02 3.20848019959e-02 3.82423088608e-02 4.45490987358e-02 + 7.81193802831e-02 9.00454509228e-02 9.40538638178e-02 9.00454509228e-02 7.81193802831e-02 6.17008685349e-02 + 4.76134439312e-02 3.86937384314e-02 3.20848019959e-02 2.53973709283e-02 1.92840317465e-02 1.48492046219e-02 + 1.21090534529e-02 1.06109348738e-02 1.01198499891e-02 1.06109348738e-02 1.21090534530e-02 1.48492046219e-02 + 1.92840317465e-02 2.53973709283e-02 3.20848019959e-02 3.86937384314e-02 4.76134439313e-02 6.17008685349e-02 + 1.07504612680e-01 1.13479602981e-01 1.13479602981e-01 1.07504612680e-01 8.97664201881e-02 6.56428313091e-02 + 4.76134439312e-02 3.82423088608e-02 3.17361436403e-02 2.51249889113e-02 1.94290489291e-02 1.55937378378e-02 + 1.34169388324e-02 1.24265880360e-02 1.24265880360e-02 1.34169388324e-02 1.55937378378e-02 1.94290489291e-02 + 2.51249889113e-02 3.17361436403e-02 3.82423088608e-02 4.76134439312e-02 6.56428313091e-02 8.97664201881e-02 + 1.15476799016e-01 1.12133375345e-01 1.15476799016e-01 1.12225405021e-01 8.97664201880e-02 6.17008685349e-02 + 4.45490987358e-02 3.66854482599e-02 3.04404777485e-02 2.42075414898e-02 1.94536795471e-02 1.66439398964e-02 + 1.52762540169e-02 1.48656767561e-02 1.52762540169e-02 1.66439398964e-02 1.94536795471e-02 2.42075414898e-02 + 3.04404777485e-02 3.66854482599e-02 4.45490987358e-02 6.17008685349e-02 8.97664201881e-02 1.12225405021e-01 diff --git a/tests/01_PW/scf_out_elf/INPUT b/tests/01_PW/scf_out_elf/INPUT new file mode 100644 index 0000000000..553a5fac41 --- /dev/null +++ b/tests/01_PW/scf_out_elf/INPUT @@ -0,0 +1,28 @@ +INPUT_PARAMETERS +#Parameters (1.General) +suffix autotest +calculation scf +init_wfc random + +nbands 6 +symmetry 1 +pseudo_dir ../../PP_ORB + +#Parameters (2.Iteration) +ecutwfc 5 +scf_thr 1e-9 +scf_nmax 100 + + +#Parameters (3.Basis) +basis_type pw + +#Parameters (4.Smearing) +smearing_method gauss +smearing_sigma 0.002 + +#Parameters (5.Mixing) +mixing_type broyden +mixing_beta 0.7 + +out_elf 1 diff --git a/tests/01_PW/072_PW_ELF/KPT b/tests/01_PW/scf_out_elf/KPT similarity index 100% rename from tests/01_PW/072_PW_ELF/KPT rename to tests/01_PW/scf_out_elf/KPT diff --git a/tests/01_PW/072_PW_ELF/README b/tests/01_PW/scf_out_elf/README similarity index 100% rename from tests/01_PW/072_PW_ELF/README rename to tests/01_PW/scf_out_elf/README diff --git a/tests/01_PW/072_PW_ELF/STRU b/tests/01_PW/scf_out_elf/STRU similarity index 100% rename from tests/01_PW/072_PW_ELF/STRU rename to tests/01_PW/scf_out_elf/STRU diff --git a/tests/01_PW/scf_out_elf/refelf.cube b/tests/01_PW/scf_out_elf/refelf.cube new file mode 100644 index 0000000000..4b48a388be --- /dev/null +++ b/tests/01_PW/scf_out_elf/refelf.cube @@ -0,0 +1,296 @@ +Ionic_Step 1 Cubefile created from ABACUS. Inner loop is z, followed by y and x +1 # number of spin directions +2 0.0 0.0 0.0 +12 0.000000 0.425000 0.425000 +12 0.425000 0.000000 0.425000 +12 0.425000 0.425000 0.000000 + 14 4.000000 0.000000 0.000000 0.000000 + 14 4.000000 2.550000 2.550000 2.550000 + 1.318e-04 1.272e-02 4.091e-01 8.466e-01 8.632e-01 5.190e-01 + 2.285e-01 5.190e-01 8.632e-01 8.466e-01 4.091e-01 1.272e-02 + 1.272e-02 5.968e-01 9.596e-01 9.845e-01 9.126e-01 4.434e-01 + 4.434e-01 9.126e-01 9.845e-01 9.596e-01 5.968e-01 1.272e-02 + 4.091e-01 9.596e-01 9.949e-01 9.845e-01 7.287e-01 2.801e-01 + 7.287e-01 9.845e-01 9.949e-01 9.596e-01 4.091e-01 5.200e-02 + 8.466e-01 9.845e-01 9.845e-01 8.466e-01 1.959e-01 1.959e-01 + 8.466e-01 9.845e-01 9.845e-01 8.466e-01 1.959e-01 1.959e-01 + 8.632e-01 9.126e-01 7.287e-01 1.959e-01 5.267e-02 1.959e-01 + 7.287e-01 9.126e-01 8.632e-01 3.716e-01 1.041e-01 3.716e-01 + 5.190e-01 4.434e-01 2.801e-01 1.959e-01 1.959e-01 2.801e-01 + 4.434e-01 5.190e-01 3.029e-01 6.827e-02 6.827e-02 3.029e-01 + 2.285e-01 4.434e-01 7.287e-01 8.466e-01 7.287e-01 4.434e-01 + 2.285e-01 1.268e-01 5.614e-02 3.080e-02 5.614e-02 1.268e-01 + 5.190e-01 9.126e-01 9.845e-01 9.845e-01 9.126e-01 5.190e-01 + 1.268e-01 5.268e-02 6.807e-02 6.807e-02 5.268e-02 1.268e-01 + 8.632e-01 9.845e-01 9.949e-01 9.845e-01 8.632e-01 3.029e-01 + 5.614e-02 6.807e-02 4.047e-01 6.807e-02 5.614e-02 3.029e-01 + 8.466e-01 9.596e-01 9.596e-01 8.466e-01 3.716e-01 6.827e-02 + 3.080e-02 6.807e-02 6.807e-02 3.080e-02 6.827e-02 3.716e-01 + 4.091e-01 5.968e-01 4.091e-01 1.959e-01 1.041e-01 6.827e-02 + 5.614e-02 5.268e-02 5.614e-02 6.827e-02 1.041e-01 1.959e-01 + 1.272e-02 1.272e-02 5.200e-02 1.959e-01 3.716e-01 3.029e-01 + 1.268e-01 1.268e-01 3.029e-01 3.716e-01 1.959e-01 5.200e-02 + 1.272e-02 5.968e-01 9.596e-01 9.845e-01 9.126e-01 4.434e-01 + 4.434e-01 9.126e-01 9.845e-01 9.596e-01 5.968e-01 1.272e-02 + 5.968e-01 9.882e-01 9.994e-01 9.949e-01 8.189e-01 3.674e-01 + 8.189e-01 9.949e-01 9.994e-01 9.882e-01 5.968e-01 5.773e-02 + 9.596e-01 9.994e-01 9.994e-01 9.596e-01 3.573e-01 3.573e-01 + 9.596e-01 9.994e-01 9.994e-01 9.596e-01 3.573e-01 3.573e-01 + 9.845e-01 9.949e-01 9.596e-01 4.091e-01 5.200e-02 4.091e-01 + 9.596e-01 9.949e-01 9.845e-01 7.287e-01 2.801e-01 7.287e-01 + 9.126e-01 8.189e-01 3.573e-01 5.200e-02 5.200e-02 3.573e-01 + 8.189e-01 9.126e-01 7.598e-01 2.591e-01 2.591e-01 7.598e-01 + 4.434e-01 3.674e-01 3.573e-01 4.091e-01 3.573e-01 3.674e-01 + 4.434e-01 4.220e-01 2.017e-01 8.867e-02 2.017e-01 4.220e-01 + 4.434e-01 8.189e-01 9.596e-01 9.596e-01 8.189e-01 4.434e-01 + 1.817e-01 1.035e-01 7.396e-02 7.396e-02 1.035e-01 1.817e-01 + 9.126e-01 9.949e-01 9.994e-01 9.949e-01 9.126e-01 4.220e-01 + 1.035e-01 1.027e-01 4.124e-01 1.027e-01 1.035e-01 4.220e-01 + 9.845e-01 9.994e-01 9.994e-01 9.845e-01 7.598e-01 2.017e-01 + 7.396e-02 4.124e-01 4.124e-01 7.396e-02 2.017e-01 7.598e-01 + 9.596e-01 9.882e-01 9.596e-01 7.287e-01 2.591e-01 8.867e-02 + 7.396e-02 1.027e-01 7.396e-02 8.867e-02 2.591e-01 7.287e-01 + 5.968e-01 5.968e-01 3.573e-01 2.801e-01 2.591e-01 2.017e-01 + 1.035e-01 1.035e-01 2.017e-01 2.591e-01 2.801e-01 3.573e-01 + 1.272e-02 5.773e-02 3.573e-01 7.287e-01 7.598e-01 4.220e-01 + 1.817e-01 4.220e-01 7.598e-01 7.287e-01 3.573e-01 5.773e-02 + 4.091e-01 9.596e-01 9.949e-01 9.845e-01 7.287e-01 2.801e-01 + 7.287e-01 9.845e-01 9.949e-01 9.596e-01 4.091e-01 5.200e-02 + 9.596e-01 9.994e-01 9.994e-01 9.596e-01 3.573e-01 3.573e-01 + 9.596e-01 9.994e-01 9.994e-01 9.596e-01 3.573e-01 3.573e-01 + 9.949e-01 9.994e-01 9.882e-01 5.968e-01 5.773e-02 5.968e-01 + 9.882e-01 9.994e-01 9.949e-01 8.189e-01 3.674e-01 8.189e-01 + 9.845e-01 9.596e-01 5.968e-01 1.272e-02 1.272e-02 5.968e-01 + 9.596e-01 9.845e-01 9.126e-01 4.434e-01 4.434e-01 9.126e-01 + 7.287e-01 3.573e-01 5.773e-02 1.272e-02 5.773e-02 3.573e-01 + 7.287e-01 7.598e-01 4.220e-01 1.817e-01 4.220e-01 7.598e-01 + 2.801e-01 3.573e-01 5.968e-01 5.968e-01 3.573e-01 2.801e-01 + 2.591e-01 2.017e-01 1.035e-01 1.035e-01 2.017e-01 2.591e-01 + 7.287e-01 9.596e-01 9.882e-01 9.596e-01 7.287e-01 2.591e-01 + 8.867e-02 7.396e-02 1.027e-01 7.396e-02 8.867e-02 2.591e-01 + 9.845e-01 9.994e-01 9.994e-01 9.845e-01 7.598e-01 2.017e-01 + 7.396e-02 4.124e-01 4.124e-01 7.396e-02 2.017e-01 7.598e-01 + 9.949e-01 9.994e-01 9.949e-01 9.126e-01 4.220e-01 1.035e-01 + 1.027e-01 4.124e-01 1.027e-01 1.035e-01 4.220e-01 9.126e-01 + 9.596e-01 9.596e-01 8.189e-01 4.434e-01 1.817e-01 1.035e-01 + 7.396e-02 7.396e-02 1.035e-01 1.817e-01 4.434e-01 8.189e-01 + 4.091e-01 3.573e-01 3.674e-01 4.434e-01 4.220e-01 2.017e-01 + 8.867e-02 2.017e-01 4.220e-01 4.434e-01 3.674e-01 3.573e-01 + 5.200e-02 3.573e-01 8.189e-01 9.126e-01 7.598e-01 2.591e-01 + 2.591e-01 7.598e-01 9.126e-01 8.189e-01 3.573e-01 5.200e-02 + 8.466e-01 9.845e-01 9.845e-01 8.466e-01 1.959e-01 1.959e-01 + 8.466e-01 9.845e-01 9.845e-01 8.466e-01 1.959e-01 1.959e-01 + 9.845e-01 9.949e-01 9.596e-01 4.091e-01 5.200e-02 4.091e-01 + 9.596e-01 9.949e-01 9.845e-01 7.287e-01 2.801e-01 7.287e-01 + 9.845e-01 9.596e-01 5.968e-01 1.272e-02 1.272e-02 5.968e-01 + 9.596e-01 9.845e-01 9.126e-01 4.434e-01 4.434e-01 9.126e-01 + 8.466e-01 4.091e-01 1.272e-02 1.318e-04 1.272e-02 4.091e-01 + 8.466e-01 8.632e-01 5.190e-01 2.285e-01 5.190e-01 8.632e-01 + 1.959e-01 5.200e-02 1.272e-02 1.272e-02 5.200e-02 1.959e-01 + 3.716e-01 3.029e-01 1.268e-01 1.268e-01 3.029e-01 3.716e-01 + 1.959e-01 4.091e-01 5.968e-01 4.091e-01 1.959e-01 1.041e-01 + 6.827e-02 5.614e-02 5.268e-02 5.614e-02 6.827e-02 1.041e-01 + 8.466e-01 9.596e-01 9.596e-01 8.466e-01 3.716e-01 6.827e-02 + 3.080e-02 6.807e-02 6.807e-02 3.080e-02 6.827e-02 3.716e-01 + 9.845e-01 9.949e-01 9.845e-01 8.632e-01 3.029e-01 5.614e-02 + 6.807e-02 4.047e-01 6.807e-02 5.614e-02 3.029e-01 8.632e-01 + 9.845e-01 9.845e-01 9.126e-01 5.190e-01 1.268e-01 5.268e-02 + 6.807e-02 6.807e-02 5.268e-02 1.268e-01 5.190e-01 9.126e-01 + 8.466e-01 7.287e-01 4.434e-01 2.285e-01 1.268e-01 5.614e-02 + 3.080e-02 5.614e-02 1.268e-01 2.285e-01 4.434e-01 7.287e-01 + 1.959e-01 2.801e-01 4.434e-01 5.190e-01 3.029e-01 6.827e-02 + 6.827e-02 3.029e-01 5.190e-01 4.434e-01 2.801e-01 1.959e-01 + 1.959e-01 7.287e-01 9.126e-01 8.632e-01 3.716e-01 1.041e-01 + 3.716e-01 8.632e-01 9.126e-01 7.287e-01 1.959e-01 5.267e-02 + 8.632e-01 9.126e-01 7.287e-01 1.959e-01 5.267e-02 1.959e-01 + 7.287e-01 9.126e-01 8.632e-01 3.716e-01 1.041e-01 3.716e-01 + 9.126e-01 8.189e-01 3.573e-01 5.200e-02 5.200e-02 3.573e-01 + 8.189e-01 9.126e-01 7.598e-01 2.591e-01 2.591e-01 7.598e-01 + 7.287e-01 3.573e-01 5.773e-02 1.272e-02 5.773e-02 3.573e-01 + 7.287e-01 7.598e-01 4.220e-01 1.817e-01 4.220e-01 7.598e-01 + 1.959e-01 5.200e-02 1.272e-02 1.272e-02 5.200e-02 1.959e-01 + 3.716e-01 3.029e-01 1.268e-01 1.268e-01 3.029e-01 3.716e-01 + 5.267e-02 5.200e-02 5.773e-02 5.200e-02 5.267e-02 6.177e-02 + 6.176e-02 5.100e-02 4.402e-02 5.100e-02 6.176e-02 6.177e-02 + 1.959e-01 3.573e-01 3.573e-01 1.959e-01 6.177e-02 1.839e-02 + 1.326e-02 2.493e-02 2.493e-02 1.326e-02 1.839e-02 6.177e-02 + 7.287e-01 8.189e-01 7.287e-01 3.716e-01 6.176e-02 1.326e-02 + 2.005e-02 5.983e-02 2.005e-02 1.326e-02 6.176e-02 3.716e-01 + 9.126e-01 9.126e-01 7.598e-01 3.029e-01 5.100e-02 2.493e-02 + 5.983e-02 5.983e-02 2.493e-02 5.100e-02 3.029e-01 7.598e-01 + 8.632e-01 7.598e-01 4.220e-01 1.268e-01 4.402e-02 2.493e-02 + 2.005e-02 2.493e-02 4.402e-02 1.268e-01 4.220e-01 7.598e-01 + 3.716e-01 2.591e-01 1.817e-01 1.268e-01 5.100e-02 1.326e-02 + 1.326e-02 5.100e-02 1.268e-01 1.817e-01 2.591e-01 3.716e-01 + 1.041e-01 2.591e-01 4.220e-01 3.029e-01 6.176e-02 1.839e-02 + 6.176e-02 3.029e-01 4.220e-01 2.591e-01 1.041e-01 6.177e-02 + 3.716e-01 7.598e-01 7.598e-01 3.716e-01 6.177e-02 6.177e-02 + 3.716e-01 7.598e-01 7.598e-01 3.716e-01 6.177e-02 6.177e-02 + 5.190e-01 4.434e-01 2.801e-01 1.959e-01 1.959e-01 2.801e-01 + 4.434e-01 5.190e-01 3.029e-01 6.827e-02 6.827e-02 3.029e-01 + 4.434e-01 3.674e-01 3.573e-01 4.091e-01 3.573e-01 3.674e-01 + 4.434e-01 4.220e-01 2.017e-01 8.867e-02 2.017e-01 4.220e-01 + 2.801e-01 3.573e-01 5.968e-01 5.968e-01 3.573e-01 2.801e-01 + 2.591e-01 2.017e-01 1.035e-01 1.035e-01 2.017e-01 2.591e-01 + 1.959e-01 4.091e-01 5.968e-01 4.091e-01 1.959e-01 1.041e-01 + 6.827e-02 5.614e-02 5.268e-02 5.614e-02 6.827e-02 1.041e-01 + 1.959e-01 3.573e-01 3.573e-01 1.959e-01 6.177e-02 1.839e-02 + 1.326e-02 2.493e-02 2.493e-02 1.326e-02 1.839e-02 6.177e-02 + 2.801e-01 3.674e-01 2.801e-01 1.041e-01 1.839e-02 5.542e-03 + 1.134e-02 3.222e-02 1.134e-02 5.542e-03 1.839e-02 1.041e-01 + 4.434e-01 4.434e-01 2.591e-01 6.827e-02 1.326e-02 1.134e-02 + 4.721e-02 4.721e-02 1.134e-02 1.326e-02 6.827e-02 2.591e-01 + 5.190e-01 4.220e-01 2.017e-01 5.614e-02 2.493e-02 3.222e-02 + 4.721e-02 3.222e-02 2.493e-02 5.614e-02 2.017e-01 4.220e-01 + 3.029e-01 2.017e-01 1.035e-01 5.268e-02 2.493e-02 1.134e-02 + 1.134e-02 2.493e-02 5.268e-02 1.035e-01 2.017e-01 3.029e-01 + 6.827e-02 8.867e-02 1.035e-01 5.614e-02 1.326e-02 5.542e-03 + 1.326e-02 5.614e-02 1.035e-01 8.867e-02 6.827e-02 6.176e-02 + 6.827e-02 2.017e-01 2.017e-01 6.827e-02 1.839e-02 1.839e-02 + 6.827e-02 2.017e-01 2.017e-01 6.827e-02 1.839e-02 1.839e-02 + 3.029e-01 4.220e-01 2.591e-01 1.041e-01 6.177e-02 1.041e-01 + 2.591e-01 4.220e-01 3.029e-01 6.176e-02 1.839e-02 6.176e-02 + 2.285e-01 4.434e-01 7.287e-01 8.466e-01 7.287e-01 4.434e-01 + 2.285e-01 1.268e-01 5.614e-02 3.080e-02 5.614e-02 1.268e-01 + 4.434e-01 8.189e-01 9.596e-01 9.596e-01 8.189e-01 4.434e-01 + 1.817e-01 1.035e-01 7.396e-02 7.396e-02 1.035e-01 1.817e-01 + 7.287e-01 9.596e-01 9.882e-01 9.596e-01 7.287e-01 2.591e-01 + 8.867e-02 7.396e-02 1.027e-01 7.396e-02 8.867e-02 2.591e-01 + 8.466e-01 9.596e-01 9.596e-01 8.466e-01 3.716e-01 6.827e-02 + 3.080e-02 6.807e-02 6.807e-02 3.080e-02 6.827e-02 3.716e-01 + 7.287e-01 8.189e-01 7.287e-01 3.716e-01 6.176e-02 1.326e-02 + 2.005e-02 5.983e-02 2.005e-02 1.326e-02 6.176e-02 3.716e-01 + 4.434e-01 4.434e-01 2.591e-01 6.827e-02 1.326e-02 1.134e-02 + 4.721e-02 4.721e-02 1.134e-02 1.326e-02 6.827e-02 2.591e-01 + 2.285e-01 1.817e-01 8.867e-02 3.080e-02 2.005e-02 4.721e-02 + 9.658e-02 4.721e-02 2.005e-02 3.080e-02 8.867e-02 1.817e-01 + 1.268e-01 1.035e-01 7.396e-02 6.807e-02 5.983e-02 4.721e-02 + 4.721e-02 5.983e-02 6.807e-02 7.396e-02 1.035e-01 1.268e-01 + 5.614e-02 7.396e-02 1.027e-01 6.807e-02 2.005e-02 1.134e-02 + 2.005e-02 6.807e-02 1.027e-01 7.396e-02 5.614e-02 5.100e-02 + 3.080e-02 7.396e-02 7.396e-02 3.080e-02 1.326e-02 1.326e-02 + 3.080e-02 7.396e-02 7.396e-02 3.080e-02 1.326e-02 1.326e-02 + 5.614e-02 1.035e-01 8.867e-02 6.827e-02 6.176e-02 6.827e-02 + 8.867e-02 1.035e-01 5.614e-02 1.326e-02 5.542e-03 1.326e-02 + 1.268e-01 1.817e-01 2.591e-01 3.716e-01 3.716e-01 2.591e-01 + 1.817e-01 1.268e-01 5.100e-02 1.326e-02 1.326e-02 5.100e-02 + 5.190e-01 9.126e-01 9.845e-01 9.845e-01 9.126e-01 5.190e-01 + 1.268e-01 5.268e-02 6.807e-02 6.807e-02 5.268e-02 1.268e-01 + 9.126e-01 9.949e-01 9.994e-01 9.949e-01 9.126e-01 4.220e-01 + 1.035e-01 1.027e-01 4.124e-01 1.027e-01 1.035e-01 4.220e-01 + 9.845e-01 9.994e-01 9.994e-01 9.845e-01 7.598e-01 2.017e-01 + 7.396e-02 4.124e-01 4.124e-01 7.396e-02 2.017e-01 7.598e-01 + 9.845e-01 9.949e-01 9.845e-01 8.632e-01 3.029e-01 5.614e-02 + 6.807e-02 4.047e-01 6.807e-02 5.614e-02 3.029e-01 8.632e-01 + 9.126e-01 9.126e-01 7.598e-01 3.029e-01 5.100e-02 2.493e-02 + 5.983e-02 5.983e-02 2.493e-02 5.100e-02 3.029e-01 7.598e-01 + 5.190e-01 4.220e-01 2.017e-01 5.614e-02 2.493e-02 3.222e-02 + 4.721e-02 3.222e-02 2.493e-02 5.614e-02 2.017e-01 4.220e-01 + 1.268e-01 1.035e-01 7.396e-02 6.807e-02 5.983e-02 4.721e-02 + 4.721e-02 5.983e-02 6.807e-02 7.396e-02 1.035e-01 1.268e-01 + 5.268e-02 1.027e-01 4.124e-01 4.047e-01 5.983e-02 3.222e-02 + 5.983e-02 4.047e-01 4.124e-01 1.027e-01 5.268e-02 4.402e-02 + 6.807e-02 4.124e-01 4.124e-01 6.807e-02 2.493e-02 2.493e-02 + 6.807e-02 4.124e-01 4.124e-01 6.807e-02 2.493e-02 2.493e-02 + 6.807e-02 1.027e-01 7.396e-02 5.614e-02 5.100e-02 5.614e-02 + 7.396e-02 1.027e-01 6.807e-02 2.005e-02 1.134e-02 2.005e-02 + 5.268e-02 1.035e-01 2.017e-01 3.029e-01 3.029e-01 2.017e-01 + 1.035e-01 5.268e-02 2.493e-02 1.134e-02 1.134e-02 2.493e-02 + 1.268e-01 4.220e-01 7.598e-01 8.632e-01 7.598e-01 4.220e-01 + 1.268e-01 4.402e-02 2.493e-02 2.005e-02 2.493e-02 4.402e-02 + 8.632e-01 9.845e-01 9.949e-01 9.845e-01 8.632e-01 3.029e-01 + 5.614e-02 6.807e-02 4.047e-01 6.807e-02 5.614e-02 3.029e-01 + 9.845e-01 9.994e-01 9.994e-01 9.845e-01 7.598e-01 2.017e-01 + 7.396e-02 4.124e-01 4.124e-01 7.396e-02 2.017e-01 7.598e-01 + 9.949e-01 9.994e-01 9.949e-01 9.126e-01 4.220e-01 1.035e-01 + 1.027e-01 4.124e-01 1.027e-01 1.035e-01 4.220e-01 9.126e-01 + 9.845e-01 9.845e-01 9.126e-01 5.190e-01 1.268e-01 5.268e-02 + 6.807e-02 6.807e-02 5.268e-02 1.268e-01 5.190e-01 9.126e-01 + 8.632e-01 7.598e-01 4.220e-01 1.268e-01 4.402e-02 2.493e-02 + 2.005e-02 2.493e-02 4.402e-02 1.268e-01 4.220e-01 7.598e-01 + 3.029e-01 2.017e-01 1.035e-01 5.268e-02 2.493e-02 1.134e-02 + 1.134e-02 2.493e-02 5.268e-02 1.035e-01 2.017e-01 3.029e-01 + 5.614e-02 7.396e-02 1.027e-01 6.807e-02 2.005e-02 1.134e-02 + 2.005e-02 6.807e-02 1.027e-01 7.396e-02 5.614e-02 5.100e-02 + 6.807e-02 4.124e-01 4.124e-01 6.807e-02 2.493e-02 2.493e-02 + 6.807e-02 4.124e-01 4.124e-01 6.807e-02 2.493e-02 2.493e-02 + 4.047e-01 4.124e-01 1.027e-01 5.268e-02 4.402e-02 5.268e-02 + 1.027e-01 4.124e-01 4.047e-01 5.983e-02 3.222e-02 5.983e-02 + 6.807e-02 7.396e-02 1.035e-01 1.268e-01 1.268e-01 1.035e-01 + 7.396e-02 6.807e-02 5.983e-02 4.721e-02 4.721e-02 5.983e-02 + 5.614e-02 2.017e-01 4.220e-01 5.190e-01 4.220e-01 2.017e-01 + 5.614e-02 2.493e-02 3.222e-02 4.721e-02 3.222e-02 2.493e-02 + 3.029e-01 7.598e-01 9.126e-01 9.126e-01 7.598e-01 3.029e-01 + 5.100e-02 2.493e-02 5.983e-02 5.983e-02 2.493e-02 5.100e-02 + 8.466e-01 9.596e-01 9.596e-01 8.466e-01 3.716e-01 6.827e-02 + 3.080e-02 6.807e-02 6.807e-02 3.080e-02 6.827e-02 3.716e-01 + 9.596e-01 9.882e-01 9.596e-01 7.287e-01 2.591e-01 8.867e-02 + 7.396e-02 1.027e-01 7.396e-02 8.867e-02 2.591e-01 7.287e-01 + 9.596e-01 9.596e-01 8.189e-01 4.434e-01 1.817e-01 1.035e-01 + 7.396e-02 7.396e-02 1.035e-01 1.817e-01 4.434e-01 8.189e-01 + 8.466e-01 7.287e-01 4.434e-01 2.285e-01 1.268e-01 5.614e-02 + 3.080e-02 5.614e-02 1.268e-01 2.285e-01 4.434e-01 7.287e-01 + 3.716e-01 2.591e-01 1.817e-01 1.268e-01 5.100e-02 1.326e-02 + 1.326e-02 5.100e-02 1.268e-01 1.817e-01 2.591e-01 3.716e-01 + 6.827e-02 8.867e-02 1.035e-01 5.614e-02 1.326e-02 5.542e-03 + 1.326e-02 5.614e-02 1.035e-01 8.867e-02 6.827e-02 6.176e-02 + 3.080e-02 7.396e-02 7.396e-02 3.080e-02 1.326e-02 1.326e-02 + 3.080e-02 7.396e-02 7.396e-02 3.080e-02 1.326e-02 1.326e-02 + 6.807e-02 1.027e-01 7.396e-02 5.614e-02 5.100e-02 5.614e-02 + 7.396e-02 1.027e-01 6.807e-02 2.005e-02 1.134e-02 2.005e-02 + 6.807e-02 7.396e-02 1.035e-01 1.268e-01 1.268e-01 1.035e-01 + 7.396e-02 6.807e-02 5.983e-02 4.721e-02 4.721e-02 5.983e-02 + 3.080e-02 8.867e-02 1.817e-01 2.285e-01 1.817e-01 8.867e-02 + 3.080e-02 2.005e-02 4.721e-02 9.658e-02 4.721e-02 2.005e-02 + 6.827e-02 2.591e-01 4.434e-01 4.434e-01 2.591e-01 6.827e-02 + 1.326e-02 1.134e-02 4.721e-02 4.721e-02 1.134e-02 1.326e-02 + 3.716e-01 7.287e-01 8.189e-01 7.287e-01 3.716e-01 6.176e-02 + 1.326e-02 2.005e-02 5.983e-02 2.005e-02 1.326e-02 6.176e-02 + 4.091e-01 5.968e-01 4.091e-01 1.959e-01 1.041e-01 6.827e-02 + 5.614e-02 5.268e-02 5.614e-02 6.827e-02 1.041e-01 1.959e-01 + 5.968e-01 5.968e-01 3.573e-01 2.801e-01 2.591e-01 2.017e-01 + 1.035e-01 1.035e-01 2.017e-01 2.591e-01 2.801e-01 3.573e-01 + 4.091e-01 3.573e-01 3.674e-01 4.434e-01 4.220e-01 2.017e-01 + 8.867e-02 2.017e-01 4.220e-01 4.434e-01 3.674e-01 3.573e-01 + 1.959e-01 2.801e-01 4.434e-01 5.190e-01 3.029e-01 6.827e-02 + 6.827e-02 3.029e-01 5.190e-01 4.434e-01 2.801e-01 1.959e-01 + 1.041e-01 2.591e-01 4.220e-01 3.029e-01 6.176e-02 1.839e-02 + 6.176e-02 3.029e-01 4.220e-01 2.591e-01 1.041e-01 6.177e-02 + 6.827e-02 2.017e-01 2.017e-01 6.827e-02 1.839e-02 1.839e-02 + 6.827e-02 2.017e-01 2.017e-01 6.827e-02 1.839e-02 1.839e-02 + 5.614e-02 1.035e-01 8.867e-02 6.827e-02 6.176e-02 6.827e-02 + 8.867e-02 1.035e-01 5.614e-02 1.326e-02 5.542e-03 1.326e-02 + 5.268e-02 1.035e-01 2.017e-01 3.029e-01 3.029e-01 2.017e-01 + 1.035e-01 5.268e-02 2.493e-02 1.134e-02 1.134e-02 2.493e-02 + 5.614e-02 2.017e-01 4.220e-01 5.190e-01 4.220e-01 2.017e-01 + 5.614e-02 2.493e-02 3.222e-02 4.721e-02 3.222e-02 2.493e-02 + 6.827e-02 2.591e-01 4.434e-01 4.434e-01 2.591e-01 6.827e-02 + 1.326e-02 1.134e-02 4.721e-02 4.721e-02 1.134e-02 1.326e-02 + 1.041e-01 2.801e-01 3.674e-01 2.801e-01 1.041e-01 1.839e-02 + 5.542e-03 1.134e-02 3.222e-02 1.134e-02 5.542e-03 1.839e-02 + 1.959e-01 3.573e-01 3.573e-01 1.959e-01 6.177e-02 1.839e-02 + 1.326e-02 2.493e-02 2.493e-02 1.326e-02 1.839e-02 6.177e-02 + 1.272e-02 1.272e-02 5.200e-02 1.959e-01 3.716e-01 3.029e-01 + 1.268e-01 1.268e-01 3.029e-01 3.716e-01 1.959e-01 5.200e-02 + 1.272e-02 5.773e-02 3.573e-01 7.287e-01 7.598e-01 4.220e-01 + 1.817e-01 4.220e-01 7.598e-01 7.287e-01 3.573e-01 5.773e-02 + 5.200e-02 3.573e-01 8.189e-01 9.126e-01 7.598e-01 2.591e-01 + 2.591e-01 7.598e-01 9.126e-01 8.189e-01 3.573e-01 5.200e-02 + 1.959e-01 7.287e-01 9.126e-01 8.632e-01 3.716e-01 1.041e-01 + 3.716e-01 8.632e-01 9.126e-01 7.287e-01 1.959e-01 5.267e-02 + 3.716e-01 7.598e-01 7.598e-01 3.716e-01 6.177e-02 6.177e-02 + 3.716e-01 7.598e-01 7.598e-01 3.716e-01 6.177e-02 6.177e-02 + 3.029e-01 4.220e-01 2.591e-01 1.041e-01 6.177e-02 1.041e-01 + 2.591e-01 4.220e-01 3.029e-01 6.176e-02 1.839e-02 6.176e-02 + 1.268e-01 1.817e-01 2.591e-01 3.716e-01 3.716e-01 2.591e-01 + 1.817e-01 1.268e-01 5.100e-02 1.326e-02 1.326e-02 5.100e-02 + 1.268e-01 4.220e-01 7.598e-01 8.632e-01 7.598e-01 4.220e-01 + 1.268e-01 4.402e-02 2.493e-02 2.005e-02 2.493e-02 4.402e-02 + 3.029e-01 7.598e-01 9.126e-01 9.126e-01 7.598e-01 3.029e-01 + 5.100e-02 2.493e-02 5.983e-02 5.983e-02 2.493e-02 5.100e-02 + 3.716e-01 7.287e-01 8.189e-01 7.287e-01 3.716e-01 6.176e-02 + 1.326e-02 2.005e-02 5.983e-02 2.005e-02 1.326e-02 6.176e-02 + 1.959e-01 3.573e-01 3.573e-01 1.959e-01 6.177e-02 1.839e-02 + 1.326e-02 2.493e-02 2.493e-02 1.326e-02 1.839e-02 6.177e-02 + 5.200e-02 5.773e-02 5.200e-02 5.267e-02 6.177e-02 6.176e-02 + 5.100e-02 4.402e-02 5.100e-02 6.176e-02 6.177e-02 5.267e-02 diff --git a/tests/01_PW/072_PW_ELF/result.ref b/tests/01_PW/scf_out_elf/result.ref similarity index 100% rename from tests/01_PW/072_PW_ELF/result.ref rename to tests/01_PW/scf_out_elf/result.ref diff --git a/tests/01_PW/scf_out_ldos/INPUT b/tests/01_PW/scf_out_ldos/INPUT new file mode 100644 index 0000000000..c7e5b349d3 --- /dev/null +++ b/tests/01_PW/scf_out_ldos/INPUT @@ -0,0 +1,29 @@ +INPUT_PARAMETERS +#Parameters (1.General) +suffix autotest +calculation scf +init_wfc random + +nbands 6 +symmetry 1 +pseudo_dir ../../PP_ORB + +#Parameters (2.Iteration) +ecutwfc 20 +scf_thr 1e-9 +scf_nmax 100 + + +#Parameters (3.Basis) +basis_type pw + +#Parameters (4.Smearing) +smearing_method gauss +smearing_sigma 0.002 + +#Parameters (5.Mixing) +mixing_type broyden +mixing_beta 0.7 + +out_ldos 1 +stm_bias 2 diff --git a/tests/01_PW/097_PW_LDOS/KPT b/tests/01_PW/scf_out_ldos/KPT similarity index 100% rename from tests/01_PW/097_PW_LDOS/KPT rename to tests/01_PW/scf_out_ldos/KPT diff --git a/tests/01_PW/097_PW_LDOS/LDOS.cube.ref b/tests/01_PW/scf_out_ldos/LDOS.cube.ref similarity index 98% rename from tests/01_PW/097_PW_LDOS/LDOS.cube.ref rename to tests/01_PW/scf_out_ldos/LDOS.cube.ref index 768e420757..98e51be3be 100644 --- a/tests/01_PW/097_PW_LDOS/LDOS.cube.ref +++ b/tests/01_PW/scf_out_ldos/LDOS.cube.ref @@ -1,5 +1,5 @@ -STEP: 0 Cubefile created from ABACUS. Inner loop is z, followed by y and x -1 (nspin) +Ionic_Step 1 Cubefile created from ABACUS. Inner loop is z, followed by y and x +1 # number of spin directions 2 0.0 0.0 0.0 9 0.000000 0.277778 0.277778 9 0.277778 0.000000 0.277778 diff --git a/tests/01_PW/097_PW_LDOS/README b/tests/01_PW/scf_out_ldos/README similarity index 100% rename from tests/01_PW/097_PW_LDOS/README rename to tests/01_PW/scf_out_ldos/README diff --git a/tests/01_PW/097_PW_LDOS/STRU b/tests/01_PW/scf_out_ldos/STRU similarity index 100% rename from tests/01_PW/097_PW_LDOS/STRU rename to tests/01_PW/scf_out_ldos/STRU diff --git a/tests/01_PW/097_PW_LDOS/result.ref b/tests/01_PW/scf_out_ldos/result.ref similarity index 100% rename from tests/01_PW/097_PW_LDOS/result.ref rename to tests/01_PW/scf_out_ldos/result.ref diff --git a/tests/02_NAO_Gamma/001_NO_GO_15_CF_CS/INPUT b/tests/02_NAO_Gamma/001_NO_GO_15_CF_CS/INPUT deleted file mode 100644 index 6039d0d4a3..0000000000 --- a/tests/02_NAO_Gamma/001_NO_GO_15_CF_CS/INPUT +++ /dev/null @@ -1,31 +0,0 @@ -INPUT_PARAMETERS -#Parameters (1.General) -suffix autotest -calculation scf - -nbands 6 -symmetry 1 -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB -gamma_only 1 - -#Parameters (2.Iteration) -ecutwfc 20 -scf_thr 1e-8 -scf_nmax 100 - -#Parameters (3.Basis) -basis_type lcao - -#Parameters (4.Smearing) -smearing_method gauss -smearing_sigma 0.002 - -#Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.4 - -ks_solver scalapack_gvx - -cal_force 1 -cal_stress 1 diff --git a/tests/02_NAO_Gamma/002_NO_GO_AF/INPUT b/tests/02_NAO_Gamma/002_NO_GO_AF/INPUT deleted file mode 100644 index b69e1c495c..0000000000 --- a/tests/02_NAO_Gamma/002_NO_GO_AF/INPUT +++ /dev/null @@ -1,35 +0,0 @@ -INPUT_PARAMETERS - -calculation scf -ecutwfc 8 -scf_thr 1.0e-6 -scf_nmax 50 -out_chg 0 - -#init_chg file -#out_dos 1 -#dos_sigma 0.05 -#out_band 1 - -smearing_method gaussian -smearing_sigma 0.02 - -#cal_force 1 -#force_thr_ev 0.01 -#relax_method cg -#relax_bfgs_init 0.5 - -mixing_type broyden -mixing_beta 0.4 -mixing_gg0 0.0 - - -ks_solver scalapack_gvx -basis_type lcao -gamma_only 1 -symmetry 0 -nspin 2 - -suffix autotest -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB diff --git a/tests/02_NAO_Gamma/003_NO_GO_AF_mag/INPUT b/tests/02_NAO_Gamma/003_NO_GO_AF_mag/INPUT deleted file mode 100644 index bae3113467..0000000000 --- a/tests/02_NAO_Gamma/003_NO_GO_AF_mag/INPUT +++ /dev/null @@ -1,36 +0,0 @@ -INPUT_PARAMETERS -calculation scf -ecutwfc 10 -scf_thr 1.0e-8 -scf_nmax 50 -out_chg 0 -out_mul 1 - -#init_chg file -#out_dos 1 -#dos_sigma 0.05 -#out_band 1 - -smearing_method gaussian -smearing_sigma 0.02 - -#cal_force 1 -#force_thr_ev 0.01 -#relax_method cg -#relax_bfgs_init 0.5 - -mixing_type broyden -mixing_beta 0.4 -mixing_gg0 0.0 - -ks_solver scalapack_gvx -basis_type lcao -gamma_only 1 -symmetry 0 -nspin 2 - -suffix autotest -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB - - diff --git a/tests/02_NAO_Gamma/003_NO_GO_AF_mag/mulliken.txt.ref b/tests/02_NAO_Gamma/003_NO_GO_AF_mag/mulliken.txt.ref deleted file mode 100644 index fbe2e8e218..0000000000 --- a/tests/02_NAO_Gamma/003_NO_GO_AF_mag/mulliken.txt.ref +++ /dev/null @@ -1,100 +0,0 @@ -STEP: 0 -CALCULATE THE MULLIkEN ANALYSIS FOR EACH ATOM - Total charge of spin 1: 16 - Total charge of spin 2: 16 - Total charge: 32 -Decomposed Mulliken populations -0 Zeta of Fe1 Spin 1 Spin 2 Sum Diff -s 0 0.9437 0.8381 1.7818 0.1056 -s 1 0.7227 0.6130 1.3357 0.1097 -s 2 0.3242 0.3234 0.6477 0.0008 -s 3 0.0058 0.0045 0.0103 0.0012 -SUM OVER M+Zeta 1.9963 1.7790 3.7754 0.2173 - -pz 0 0.1306 0.1312 0.2619 -0.0006 -px 0 0.1306 0.1312 0.2619 -0.0006 -py 0 0.1306 0.1312 0.2619 -0.0006 -SUM OVER M 0.3918 0.3937 0.7856 -0.0019 -pz 1 0.8694 0.8688 1.7381 0.0006 -px 1 0.8694 0.8688 1.7381 0.0006 -py 1 0.8694 0.8688 1.7381 0.0006 -SUM OVER M 2.6081 2.6063 5.2144 0.0019 -SUM OVER M+Zeta 3.0000 3.0000 5.9999 -0.0000 - -dz^2 0 0.9999 0.0361 1.0360 0.9637 -dxz 0 0.9997 0.3842 1.3839 0.6156 -dyz 0 0.9997 0.3842 1.3839 0.6156 -dx^2-y^2 0 0.9999 0.0361 1.0360 0.9637 -dxy 0 0.9997 0.3842 1.3839 0.6156 -SUM OVER M 4.9990 1.2248 6.2238 3.7742 -dz^2 1 0.0000 0.0000 0.0000 0.0000 -dxz 1 0.0001 0.0001 0.0003 -0.0000 -dyz 1 0.0001 0.0001 0.0003 -0.0000 -dx^2-y^2 1 0.0000 0.0000 0.0000 0.0000 -dxy 1 0.0001 0.0001 0.0003 -0.0000 -SUM OVER M 0.0005 0.0004 0.0009 0.0000 -SUM OVER M+Zeta 4.9994 1.2252 6.2246 3.7742 - -fz^3 0 0.0000 0.0000 0.0000 0.0000 -fxz^2 0 0.0000 0.0000 0.0000 -0.0000 -fyz^2 0 0.0000 0.0000 0.0000 -0.0000 -fzx^2-zy^2 0 0.0000 0.0000 0.0000 -0.0000 -fxyz 0 0.0000 0.0000 0.0000 0.0000 -fx^3-3*xy^2 0 0.0000 0.0000 0.0000 -0.0000 -f3yx^2-y^3 0 0.0000 0.0000 0.0000 -0.0000 -SUM OVER M 0.0000 0.0000 0.0001 0.0000 -SUM OVER M+Zeta 0.0000 0.0000 0.0001 0.0000 - -SUM OVER M+Zeta+L 9.9958 6.0042 16.0000 3.9915 - -Total Charge on atom: Fe1 16.0000 -Total Magnetism on atom: Fe1 3.9915 - - -1 Zeta of Fe2 Spin 1 Spin 2 Sum Diff -s 0 0.8381 0.9437 1.7818 -0.1056 -s 1 0.6130 0.7227 1.3357 -0.1097 -s 2 0.3234 0.3242 0.6477 -0.0008 -s 3 0.0045 0.0058 0.0103 -0.0012 -SUM OVER M+Zeta 1.7790 1.9963 3.7754 -0.2173 - -pz 0 0.1312 0.1306 0.2619 0.0006 -px 0 0.1312 0.1306 0.2619 0.0006 -py 0 0.1312 0.1306 0.2619 0.0006 -SUM OVER M 0.3937 0.3918 0.7856 0.0019 -pz 1 0.8688 0.8694 1.7381 -0.0006 -px 1 0.8688 0.8694 1.7381 -0.0006 -py 1 0.8688 0.8694 1.7381 -0.0006 -SUM OVER M 2.6063 2.6081 5.2144 -0.0019 -SUM OVER M+Zeta 3.0000 3.0000 5.9999 0.0000 - -dz^2 0 0.0361 0.9999 1.0360 -0.9637 -dxz 0 0.3842 0.9997 1.3839 -0.6156 -dyz 0 0.3842 0.9997 1.3839 -0.6156 -dx^2-y^2 0 0.0361 0.9999 1.0360 -0.9637 -dxy 0 0.3842 0.9997 1.3839 -0.6156 -SUM OVER M 1.2248 4.9990 6.2238 -3.7742 -dz^2 1 0.0000 0.0000 0.0000 -0.0000 -dxz 1 0.0001 0.0001 0.0003 0.0000 -dyz 1 0.0001 0.0001 0.0003 0.0000 -dx^2-y^2 1 0.0000 0.0000 0.0000 -0.0000 -dxy 1 0.0001 0.0001 0.0003 0.0000 -SUM OVER M 0.0004 0.0005 0.0009 -0.0000 -SUM OVER M+Zeta 1.2252 4.9994 6.2246 -3.7742 - -fz^3 0 0.0000 0.0000 0.0000 -0.0000 -fxz^2 0 0.0000 0.0000 0.0000 0.0000 -fyz^2 0 0.0000 0.0000 0.0000 0.0000 -fzx^2-zy^2 0 0.0000 0.0000 0.0000 0.0000 -fxyz 0 0.0000 0.0000 0.0000 -0.0000 -fx^3-3*xy^2 0 0.0000 0.0000 0.0000 0.0000 -f3yx^2-y^3 0 0.0000 0.0000 0.0000 0.0000 -SUM OVER M 0.0000 0.0000 0.0001 -0.0000 -SUM OVER M+Zeta 0.0000 0.0000 0.0001 -0.0000 - -SUM OVER M+Zeta+L 6.0042 9.9958 16.0000 -3.9915 - -Total Charge on atom: Fe2 16.0000 -Total Magnetism on atom: Fe2 -3.9915 - - diff --git a/tests/02_NAO_Gamma/004_NO_GO_FM/INPUT b/tests/02_NAO_Gamma/004_NO_GO_FM/INPUT deleted file mode 100644 index 32acfefedb..0000000000 --- a/tests/02_NAO_Gamma/004_NO_GO_FM/INPUT +++ /dev/null @@ -1,28 +0,0 @@ -INPUT_PARAMETERS -#Parameters (1.General) -suffix autotest -calculation scf - -nbands 24 -symmetry 1 -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB -gamma_only 1 - -#Parameters (2.Iteration) -ecutwfc 20 -scf_thr 1e-6 -scf_nmax 100 - -nspin 2 -#Parameters (3.Basis) -basis_type lcao - -#Parameters (4.Smearing) -smearing_method gauss -smearing_sigma 0.002 - -#Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.7 - diff --git a/tests/02_NAO_Gamma/005_NO_GO_ocp/INPUT b/tests/02_NAO_Gamma/005_NO_GO_ocp/INPUT deleted file mode 100644 index 5180616d12..0000000000 --- a/tests/02_NAO_Gamma/005_NO_GO_ocp/INPUT +++ /dev/null @@ -1,31 +0,0 @@ -INPUT_PARAMETERS - -# General paramters -basis_type lcao -nspin 2 -gamma_only 1 -symmetry 1 -nbands 24 -ocp 1 -ocp_set 17*1 7*0 15*1 9*0 - -# SCF parameters -calculation scf -ecutwfc 5 -scf_thr 1e-9 -scf_nmax 100 - -# Smearing -smearing_method gauss -smearing_sigma 0.002 - -# Charge mixing -mixing_type broyden -mixing_beta 0.4 -mixing_ndim 15 -mixing_gg0 1.5 - -# Directories -suffix autotest -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB diff --git a/tests/02_NAO_Gamma/006_NO_GO_OH/INPUT b/tests/02_NAO_Gamma/006_NO_GO_OH/INPUT deleted file mode 100644 index 0446a0c709..0000000000 --- a/tests/02_NAO_Gamma/006_NO_GO_OH/INPUT +++ /dev/null @@ -1,36 +0,0 @@ -INPUT_PARAMETERS -#Parameters (1.General) -suffix autotest -calculation scf - -nbands 6 -symmetry 1 -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB -gamma_only 1 - -#Parameters (2.Iteration) -ecutwfc 20 -scf_thr 1e-8 -scf_nmax 100 - - -#Parameters (3.Basis) -basis_type lcao - -#Parameters (4.Smearing) -smearing_method gauss -smearing_sigma 0.002 - -out_mat_hs 1 5 -out_ndigits 5 -#Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.7 -mixing_gg0 1.5 - -ks_solver scalapack_gvx - -bx 2 -by 2 -bz 2 diff --git a/tests/02_NAO_Gamma/006_NO_GO_OH/hks1_nao.txt.ref b/tests/02_NAO_Gamma/006_NO_GO_OH/hks1_nao.txt.ref deleted file mode 100644 index 15755a4b37..0000000000 --- a/tests/02_NAO_Gamma/006_NO_GO_OH/hks1_nao.txt.ref +++ /dev/null @@ -1,26 +0,0 @@ -26 -0.65628 -0.0050548 -2.3592e-16 3.3304e-16 -2.7756e-16 -1.9429e-16 1.3878e-17 2.7755e-16 2.7783e-17 1.1102e-16 -1.9429e-16 4.6488e-16 3.3307e-16 -0.046491 -0.16408 -2.8189e-18 2.3852e-18 -3.0358e-18 -5.2042e-18 -6.5052e-17 -3.4694e-18 -7.5894e-19 -1.301e-18 -2.5479e-18 2.4215e-18 1.0842e-18 - 0.46098 1.0407e-17 -1.5916e-16 -6.9389e-18 2.0123e-16 -2.0036e-16 -8.6736e-17 -3.8001e-17 7.6328e-17 5.5516e-17 -1.2337e-16 -1.3184e-16 -0.16467 0.013578 3.2526e-18 3.6863e-18 -2.5804e-17 -3.1008e-17 -2.6455e-17 2.3636e-17 7.3014e-18 -1.4095e-18 -6.9389e-18 1.5881e-17 -8.6736e-18 - -0.15165 1.3878e-17 1.5265e-16 0.014221 1.1102e-16 -1.2837e-16 -6.8001e-16 3.3567e-16 -2.498e-16 3.6429e-17 0.00099793 3.3068e-18 -1.0192e-17 0.035773 -2.1684e-19 -9.9747e-18 -0.025158 1.7347e-18 3.1659e-17 8.2128e-18 -5.421e-18 -2.06e-18 1.6424e-18 0.023986 - -0.15165 5.5511e-17 1.1102e-16 0.014221 -1.6654e-16 -1.249e-16 -2.6368e-16 0.00099793 5.8287e-16 5.5511e-17 3.5508e-18 -1.2577e-17 -2.1684e-19 0.035773 4.3368e-19 -2.6021e-18 -0.025158 6.0715e-18 -2.1413e-18 3.4694e-18 0.023986 -1.0842e-18 -6.0715e-18 - -0.15165 -5.8982e-17 -1.1103e-16 0.014221 1.8735e-16 0.00099793 4.8572e-17 -1.1102e-16 5.9328e-16 4.7976e-18 1.8865e-17 1.1059e-17 2.1684e-18 0.035773 -2.1684e-18 1.5613e-17 -0.025158 1.0571e-18 0.023986 2.3852e-18 -1.0842e-18 -9.7036e-18 - 0.6771 2.3592e-16 2.5327e-16 -3.747e-16 2.2638e-16 -6.9389e-17 2.4286e-17 -0.0013395 8.3433e-19 -5.9631e-18 -0.025912 7.0744e-18 1.362e-18 -0.088644 -9.9747e-18 -3.361e-18 -2.6455e-17 8.6736e-18 2.0275e-17 1.44e-18 -0.022421 - 0.6771 -1.6652e-16 -2.2206e-16 -3.5389e-16 -0.0013395 -1.9429e-16 -5.1695e-16 1.2949e-17 -4.12e-17 3.0141e-17 -0.025912 5.2313e-18 -1.301e-17 -0.088644 4.3368e-19 2.7105e-19 -2.6455e-17 -0.022421 -7.481e-18 -7.6978e-18 - 0.6771 2.7756e-17 -0.0013395 -1.6653e-16 -1.9429e-16 -4.0072e-16 -1.4501e-17 2.06e-18 -3.0019e-18 -1.3634e-17 -0.025912 -1.0192e-17 1.3661e-17 -0.088644 9.2699e-18 -0.022421 -1.5287e-17 -1.236e-17 1.5287e-17 - 0.75116 9.7145e-17 -5.7246e-17 -3.0535e-16 2.3592e-16 1.1384e-18 1.1818e-17 -4.7705e-18 -3.2526e-18 -3.4694e-18 -2.4286e-17 -3.0358e-18 9.541e-18 0.011353 -8.6736e-19 -1.0842e-18 -2.015e-18 6.5052e-19 - 0.75043 -2.5674e-16 1.3878e-16 -1.4572e-16 3.2526e-18 6.9389e-18 3.5508e-18 -3.1713e-18 -0.023569 -1.0517e-17 4.0115e-18 0.021812 1.7347e-18 -0.020566 4.6756e-19 -1.4095e-18 -3.2153e-18 - 0.75043 -2.3592e-16 2.7062e-16 5.5836e-18 1.1276e-17 3.3881e-18 -0.023569 -4.4181e-18 -6.8305e-18 0.021812 6.3968e-18 3.5101e-18 2.3039e-19 -0.020566 -7.5894e-19 -5.3261e-18 - 0.75116 1.0408e-16 3.1872e-18 2.3749e-17 -1.0029e-18 5.2042e-18 -1.7347e-18 -7.5894e-18 -7.8063e-18 0 -2.1675e-18 -3.1442e-18 1.1926e-18 0.011353 -2.0329e-20 - 0.75043 4.8789e-18 -5.2042e-18 -0.023569 -1.1926e-18 6.2342e-19 0.021812 -8.9989e-18 1.7998e-17 3.1984e-18 -4.4825e-18 -4.6214e-18 2.5157e-19 -0.020566 - -0.65628 -0.0050572 6.206e-16 3.9853e-16 -5.2475e-17 4.1156e-16 -2.0903e-16 -4.6057e-16 2.3009e-16 3.2201e-16 1.6285e-16 5.6809e-16 -2.871e-16 - 0.46096 1.197e-16 1.1926e-16 -4.1633e-17 -4.5103e-17 2.6715e-16 2.498e-16 -7.2981e-17 6.2016e-17 -1.3883e-17 -1.8516e-16 1.7304e-16 - -0.15165 2.6411e-16 9.7579e-17 0.014226 -1.4313e-17 -1.5916e-16 -9.2526e-16 -1.5005e-16 2.4286e-17 9.1533e-18 -0.00099715 - -0.15165 2.125e-16 -6.6355e-17 0.014226 2.4284e-17 -2.4801e-16 1.0322e-16 -0.00099715 3.6895e-16 2.5804e-16 - -0.15165 -1.0278e-16 5.8542e-17 0.014226 4.288e-17 -0.00099715 -6.8088e-17 -3.3589e-16 4.6491e-16 - 0.67708 1.4615e-16 -7.7629e-17 -5.5197e-16 4.5146e-16 4.0289e-16 -2.8899e-17 0.001338 - 0.67708 1.6741e-16 2.0329e-19 -3.1745e-16 0.001338 8.4535e-16 3.6646e-16 - 0.67708 -1.0842e-18 0.001338 -2.6411e-16 -3.9259e-16 2.6541e-16 - 0.75115 1.313e-16 1.2382e-16 6.1314e-17 1.7748e-16 - 0.75043 6.3534e-17 -1.507e-17 -8.8471e-17 - 0.75043 3.9194e-17 -1.4528e-16 - 0.75115 -5.0131e-18 - 0.75043 diff --git a/tests/02_NAO_Gamma/006_NO_GO_OH/result.ref b/tests/02_NAO_Gamma/006_NO_GO_OH/result.ref deleted file mode 100644 index 4257400dbc..0000000000 --- a/tests/02_NAO_Gamma/006_NO_GO_OH/result.ref +++ /dev/null @@ -1,8 +0,0 @@ -etotref -204.1062806122546 -etotperatomref -102.0531403061 -CompareH_pass 0 -CompareS_pass 0 -pointgroupref T_d -spacegroupref O_h -nksibzref 1 -totaltimeref 0.52294 diff --git a/tests/02_NAO_Gamma/006_NO_GO_OH/sks1_nao.txt.ref b/tests/02_NAO_Gamma/006_NO_GO_OH/sks1_nao.txt.ref deleted file mode 100644 index 5b98bf0dfb..0000000000 --- a/tests/02_NAO_Gamma/006_NO_GO_OH/sks1_nao.txt.ref +++ /dev/null @@ -1,26 +0,0 @@ -26 1.0002 0.0018861 0 1.3553e-20 0 0 5.421e-20 0 -2.7105e-20 0 0 2.8292e-20 0 0.046783 0.23535 0 0 0 0 0 0 0 0 0 -1.2075e-18 0 - 1.0205 0 -2.1684e-19 0 0 8.6736e-19 0 -2.1684e-19 0 0 4.2902e-19 0 0.23535 0.60858 0 0 0 0 0 0 0 0 0 -1.5175e-17 0 - 0.99838 0 0 0.0056966 0 0 0 -4.0658e-20 -6.7763e-20 0 0 0 0 -0.083512 0 0 0.14929 0 0 0 0 0 0 -0.041722 - 0.99838 0 0 0.0056966 0 0 0 0 0 0 0 0 0 -0.083512 0 0 0.14929 0 0 0 -0.041722 0 0 - 0.99838 0 0 0.0056966 0 0 0 -1.6941e-21 0 0 0 0 0 -0.083512 0 0 0.14929 0 -0.041722 0 0 0 - 0.98001 0 0 0 5.421e-20 0 0 0 0 0 0.14929 0 0 -0.13051 0 0 0 0 0 0 0.1394 - 0.98001 0 0 0 0 0 0 0 0 0 0.14929 0 0 -0.13051 0 0 0 0.1394 0 0 - 0.98001 0 0 0 6.7763e-21 0 0 0 0 0 0.14929 0 0 -0.13051 0 0.1394 0 0 0 - 1.0001 0 0 -3.942e-20 0 0 0 0 0 0 0 0 0 0.0062994 0 0 -6.1696e-19 0 - 1.0002 0 0 0 0 0 0 0 0.041722 0 0 -0.1394 0 0.0078948 0 0 0 - 1.0002 0 0 0 0 0 0.041722 0 0 -0.1394 0 0 0 0.0078948 0 0 - 1.0001 0 -1.2075e-18 -1.5175e-17 0 0 0 0 0 0 -6.1696e-19 0 0 0.0062994 0 - 1.0002 0 0 0.041722 0 0 -0.1394 0 0 0 0 0 0 0.0078948 - 1.0002 0.0018861 0 1.3553e-20 0 0 5.421e-20 0 -2.7105e-20 0 0 2.8292e-20 0 - 1.0205 0 -2.1684e-19 0 0 8.6736e-19 0 -2.1684e-19 0 0 4.2902e-19 0 - 0.99838 0 0 0.0056966 0 0 0 -4.0658e-20 -6.7763e-20 0 0 - 0.99838 0 0 0.0056966 0 0 0 0 0 0 - 0.99838 0 0 0.0056966 0 0 0 -1.6941e-21 0 - 0.98001 0 0 0 5.421e-20 0 0 0 - 0.98001 0 0 0 0 0 0 - 0.98001 0 0 0 6.7763e-21 0 - 1.0001 0 0 -3.942e-20 0 - 1.0002 0 0 0 - 1.0002 0 0 - 1.0001 0 - 1.0002 \ No newline at end of file diff --git a/tests/02_NAO_Gamma/007_NO_GO_OXC/INPUT b/tests/02_NAO_Gamma/007_NO_GO_OXC/INPUT deleted file mode 100644 index cf821c8d81..0000000000 --- a/tests/02_NAO_Gamma/007_NO_GO_OXC/INPUT +++ /dev/null @@ -1,38 +0,0 @@ -INPUT_PARAMETERS -#Parameters (1.General) -suffix autotest -calculation scf - -nbands 6 -symmetry 1 -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB -gamma_only 1 - -#Parameters (2.Iteration) -ecutwfc 20 -scf_thr 1e-8 -scf_nmax 100 - - -#Parameters (3.Basis) -basis_type lcao - -#Parameters (4.Smearing) -smearing_method gauss -smearing_sigma 0.002 - -out_mat_xc 1 -out_mat_xc2 1 -out_eband_terms 1 - -#Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.7 -mixing_gg0 1.5 - -ks_solver scalapack_gvx - -bx 2 -by 2 -bz 2 \ No newline at end of file diff --git a/tests/02_NAO_Gamma/007_NO_GO_OXC/vxcs1_nao.txt.ref b/tests/02_NAO_Gamma/007_NO_GO_OXC/vxcs1_nao.txt.ref deleted file mode 100644 index 3e11a37e42..0000000000 --- a/tests/02_NAO_Gamma/007_NO_GO_OXC/vxcs1_nao.txt.ref +++ /dev/null @@ -1,6 +0,0 @@ -6 -0.684691 -8.83712e-07 1.13515e-16 1.82341e-16 2.58361e-17 3.54064e-17 - -0.71493 -8.00801e-18 2.58871e-17 -5.41766e-17 6.18429e-17 - -0.593224 7.78235e-17 -6.23292e-17 -1.32096e-06 - -0.593224 -8.16693e-17 6.51331e-07 - -0.593224 8.8859e-07 - -0.619565 diff --git a/tests/02_NAO_Gamma/008_NO_GO_CF_RE/INPUT b/tests/02_NAO_Gamma/008_NO_GO_CF_RE/INPUT deleted file mode 100644 index b1040a9a1f..0000000000 --- a/tests/02_NAO_Gamma/008_NO_GO_CF_RE/INPUT +++ /dev/null @@ -1,36 +0,0 @@ -INPUT_PARAMETERS -#Parameters (1.General) -suffix autotest -calculation relax - -nbands 8 -symmetry 1 -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB - -#Parameters (2.Iteration) -ecutwfc 10 -scf_thr 1e-7 -scf_nmax 100 - -#Parameters (3.Relaxation) -relax_nmax 2 -cal_force 1 -force_thr_ev 0.01 -relax_method cg -cal_stress 1 - -#Parameters (4.Basis) -basis_type lcao - -#Parameters (5.Smearing) -smearing_method gauss -smearing_sigma 0.002 - -#Parameters (6.Mixing) -mixing_type broyden -mixing_beta 0.5 - -gamma_only 1 - -relax_new 0 diff --git a/tests/02_NAO_Gamma/009_NO_GO_CS_CR/INPUT b/tests/02_NAO_Gamma/009_NO_GO_CS_CR/INPUT deleted file mode 100644 index a37439d05d..0000000000 --- a/tests/02_NAO_Gamma/009_NO_GO_CS_CR/INPUT +++ /dev/null @@ -1,29 +0,0 @@ -INPUT_PARAMETERS -#Parameters (General) -suffix autotest -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB - -nbands 8 -calculation cell-relax -#Parameters (Accuracy) -ecutwfc 20 -scf_nmax 20 - -basis_type lcao - -cal_stress 1 -stress_thr 0.5 -cal_force 1 -force_thr_ev 0.02 - -ks_solver scalapack_gvx -mixing_type broyden -mixing_beta 0.7 - -gamma_only 1 - -relax_method cg -relax_new 1 -relax_nmax 2 -relax_scale_force 0.4 diff --git a/tests/02_NAO_Gamma/010_NO_GO_RE_MB/INPUT b/tests/02_NAO_Gamma/010_NO_GO_RE_MB/INPUT deleted file mode 100644 index 71cb9f7036..0000000000 --- a/tests/02_NAO_Gamma/010_NO_GO_RE_MB/INPUT +++ /dev/null @@ -1,35 +0,0 @@ -INPUT_PARAMETERS -#Parameters (1.General) -suffix autotest -calculation relax - -nbands 8 -symmetry 1 -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB - -#Parameters (2.Iteration) -ecutwfc 20 -scf_thr 1e-9 -scf_nmax 100 - -#Parameters (3.Relaxation) -relax_nmax 2 -cal_force 1 -force_thr_ev 0.01 -relax_method bfgs - -#Parameters (4.Basis) -basis_type lcao - -#Parameters (5.Smearing) -smearing_method gauss -smearing_sigma 0.002 - -#Parameters (6.Mixing) -mixing_type broyden -mixing_beta 0.5 - -gamma_only 1 - -relax_new 0 diff --git a/tests/02_NAO_Gamma/010_NO_GO_RE_OW/INPUT b/tests/02_NAO_Gamma/010_NO_GO_RE_OW/INPUT new file mode 100644 index 0000000000..35a2fcddcb --- /dev/null +++ b/tests/02_NAO_Gamma/010_NO_GO_RE_OW/INPUT @@ -0,0 +1,33 @@ +INPUT_PARAMETERS +#Parameters (1.General) +suffix autotest +calculation relax + +nbands 4 +symmetry 1 +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB + +#Parameters (2.Iteration) +ecutwfc 20 +scf_thr 1e-9 +scf_nmax 100 + +#Parameters (3.Relaxation) +relax_nmax 2 +cal_force 1 +force_thr_ev 0.01 +relax_method bfgs 2 + +#Parameters (4.Basis) +basis_type lcao + +#Parameters (5.Smearing) +smearing_method fixed + +#Parameters (6.Mixing) +mixing_type broyden +mixing_beta 0.5 + +gamma_only 1 +out_wfc_lcao 1 diff --git a/tests/02_NAO_Gamma/010_NO_GO_RE_MB/STRU b/tests/02_NAO_Gamma/010_NO_GO_RE_OW/STRU similarity index 100% rename from tests/02_NAO_Gamma/010_NO_GO_RE_MB/STRU rename to tests/02_NAO_Gamma/010_NO_GO_RE_OW/STRU diff --git a/tests/02_NAO_Gamma/011_NO_GO_RE_OW2/INPUT b/tests/02_NAO_Gamma/011_NO_GO_RE_OW2/INPUT new file mode 100644 index 0000000000..4a03fe40a4 --- /dev/null +++ b/tests/02_NAO_Gamma/011_NO_GO_RE_OW2/INPUT @@ -0,0 +1,34 @@ +INPUT_PARAMETERS +#Parameters (1.General) +suffix autotest +calculation relax +nspin 2 + +nbands 6 +symmetry 1 +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB + +#Parameters (2.Iteration) +ecutwfc 20 +scf_thr 1e-9 +scf_nmax 100 + +#Parameters (3.Relaxation) +relax_nmax 2 +cal_force 1 +force_thr_ev 0.01 +relax_method bfgs 2 + +#Parameters (4.Basis) +basis_type lcao + +#Parameters (5.Smearing) +smearing_method fixed + +#Parameters (6.Mixing) +mixing_type broyden +mixing_beta 0.5 + +gamma_only 1 +out_wfc_lcao 1 diff --git a/tests/03_NAO_multik/26_NO_KP_RE_MB/STRU b/tests/02_NAO_Gamma/011_NO_GO_RE_OW2/STRU similarity index 100% rename from tests/03_NAO_multik/26_NO_KP_RE_MB/STRU rename to tests/02_NAO_Gamma/011_NO_GO_RE_OW2/STRU diff --git a/tests/02_NAO_Gamma/011_NO_GO_elec_minus/INPUT b/tests/02_NAO_Gamma/011_NO_GO_elec_minus/INPUT deleted file mode 100644 index 5870a3c483..0000000000 --- a/tests/02_NAO_Gamma/011_NO_GO_elec_minus/INPUT +++ /dev/null @@ -1,32 +0,0 @@ -INPUT_PARAMETERS -#Parameters (1.General) -suffix autotest -calculation scf - -nbands 8 -symmetry 1 -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB -nelec 10 - -#Parameters (2.Iteration) -ecutwfc 10 -scf_thr 1e-7 -scf_nmax 100 - - -#Parameters (3.Basis) -basis_type lcao - -#Parameters (4.Smearing) -smearing_method gauss -smearing_sigma 0.002 - -#Parameters (5.Mixing) -mixing_type pulay -mixing_beta 0.7 - -cal_force 1 -cal_stress 1 - -gamma_only 1 diff --git a/tests/02_NAO_Gamma/012_NO_GO_MD_OW/INPUT b/tests/02_NAO_Gamma/012_NO_GO_MD_OW/INPUT new file mode 100644 index 0000000000..6f96711b9c --- /dev/null +++ b/tests/02_NAO_Gamma/012_NO_GO_MD_OW/INPUT @@ -0,0 +1,32 @@ +INPUT_PARAMETERS +#Parameters (General) +suffix autotest +nbands 6 +calculation md +basis_type lcao +gamma_only 1 +out_wfc_lcao 1 + +#Parameters (Accuracy) +ecutwfc 10 +scf_nmax 50 +scf_thr 1.0e-6 + +cal_stress 1 +stress_thr 1e-6 +cal_force 1 +force_thr_ev 1.0e-3 + +mixing_type broyden +mixing_beta 0.7 + +md_nstep 2 +md_tchain 4 +md_tfirst 10 +md_tfreq 0.1 +init_vel 1 + +chg_extrap first-order + +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB diff --git a/tests/02_NAO_Gamma/023_NO_GO_NVT_OW/README b/tests/02_NAO_Gamma/012_NO_GO_MD_OW/README similarity index 100% rename from tests/02_NAO_Gamma/023_NO_GO_NVT_OW/README rename to tests/02_NAO_Gamma/012_NO_GO_MD_OW/README diff --git a/tests/02_NAO_Gamma/012_NO_GO_MD_OW/STRU b/tests/02_NAO_Gamma/012_NO_GO_MD_OW/STRU new file mode 100644 index 0000000000..6fc39c63ca --- /dev/null +++ b/tests/02_NAO_Gamma/012_NO_GO_MD_OW/STRU @@ -0,0 +1,22 @@ +ATOMIC_SPECIES +Si 1 Si_ONCV_PBE-1.0.upf + +NUMERICAL_ORBITAL +Si_gga_8au_60Ry_2s2p1d.orb + +LATTICE_CONSTANT +10.2 + +LATTICE_VECTORS +0 0.5 0.5 #latvec1 +0.5 0 0.5 #latvec2 +0.5 0.5 0 #latvec3 + +ATOMIC_POSITIONS +Cartesian + +Si #label +0 #magnetism +2 #number of atoms +0 0 0 m 1 1 1 v 0.000135711648533 3.02182240507e-05 -8.2024241958e-05 +0.25 0.25 0.25 m 1 1 1 v -0.000135711648533 -3.02182240507e-05 8.2024241958e-05 diff --git a/tests/02_NAO_Gamma/023_NO_GO_NVT_OW/result.ref b/tests/02_NAO_Gamma/012_NO_GO_MD_OW/result.ref similarity index 100% rename from tests/02_NAO_Gamma/023_NO_GO_NVT_OW/result.ref rename to tests/02_NAO_Gamma/012_NO_GO_MD_OW/result.ref diff --git a/tests/02_NAO_Gamma/023_NO_GO_NVT_OW/wfs1_nao.txt.ref b/tests/02_NAO_Gamma/012_NO_GO_MD_OW/wf_nao.txt.ref similarity index 100% rename from tests/02_NAO_Gamma/023_NO_GO_NVT_OW/wfs1_nao.txt.ref rename to tests/02_NAO_Gamma/012_NO_GO_MD_OW/wf_nao.txt.ref diff --git a/tests/02_NAO_Gamma/012_NO_GO_S2_elec_minus/INPUT b/tests/02_NAO_Gamma/012_NO_GO_S2_elec_minus/INPUT deleted file mode 100644 index 2443b41220..0000000000 --- a/tests/02_NAO_Gamma/012_NO_GO_S2_elec_minus/INPUT +++ /dev/null @@ -1,33 +0,0 @@ -INPUT_PARAMETERS -#Parameters (1.General) -suffix autotest -calculation scf - -nbands 8 -symmetry 1 -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB -nelec 10 -nspin 2 - -#Parameters (2.Iteration) -ecutwfc 10 -scf_thr 1e-7 -scf_nmax 100 - - -#Parameters (3.Basis) -basis_type lcao - -#Parameters (4.Smearing) -smearing_method gauss -smearing_sigma 0.002 - -#Parameters (5.Mixing) -mixing_type pulay -mixing_beta 0.7 - -cal_force 1 -cal_stress 1 - -gamma_only 1 diff --git a/tests/02_NAO_Gamma/013_NO_GO_MD_OW2/INPUT b/tests/02_NAO_Gamma/013_NO_GO_MD_OW2/INPUT new file mode 100644 index 0000000000..e6e53e57b8 --- /dev/null +++ b/tests/02_NAO_Gamma/013_NO_GO_MD_OW2/INPUT @@ -0,0 +1,33 @@ +INPUT_PARAMETERS +#Parameters (General) +suffix autotest +nbands 6 +calculation md +basis_type lcao +gamma_only 1 +nspin 2 +out_wfc_lcao 1 + +#Parameters (Accuracy) +ecutwfc 10 +scf_nmax 50 +scf_thr 1.0e-6 + +cal_stress 1 +stress_thr 1e-6 +cal_force 1 +force_thr_ev 1.0e-3 + +mixing_type broyden +mixing_beta 0.7 + +md_nstep 2 +md_tchain 4 +md_tfirst 10 +md_tfreq 0.1 +init_vel 1 + +chg_extrap first-order + +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB diff --git a/tests/02_NAO_Gamma/013_NO_GO_MD_OW2/STRU b/tests/02_NAO_Gamma/013_NO_GO_MD_OW2/STRU new file mode 100644 index 0000000000..6fc39c63ca --- /dev/null +++ b/tests/02_NAO_Gamma/013_NO_GO_MD_OW2/STRU @@ -0,0 +1,22 @@ +ATOMIC_SPECIES +Si 1 Si_ONCV_PBE-1.0.upf + +NUMERICAL_ORBITAL +Si_gga_8au_60Ry_2s2p1d.orb + +LATTICE_CONSTANT +10.2 + +LATTICE_VECTORS +0 0.5 0.5 #latvec1 +0.5 0 0.5 #latvec2 +0.5 0.5 0 #latvec3 + +ATOMIC_POSITIONS +Cartesian + +Si #label +0 #magnetism +2 #number of atoms +0 0 0 m 1 1 1 v 0.000135711648533 3.02182240507e-05 -8.2024241958e-05 +0.25 0.25 0.25 m 1 1 1 v -0.000135711648533 -3.02182240507e-05 8.2024241958e-05 diff --git a/tests/02_NAO_Gamma/013_NO_GO_get_wf/INPUT b/tests/02_NAO_Gamma/013_NO_GO_get_wf/INPUT deleted file mode 100644 index faf237933c..0000000000 --- a/tests/02_NAO_Gamma/013_NO_GO_get_wf/INPUT +++ /dev/null @@ -1,27 +0,0 @@ -INPUT_PARAMETERS -suffix autotest -calculation get_wf -out_wfc_norm 1 3*0 -out_wfc_re_im 0 1 2*0 -nbands 4 -latname sc -stru_file STRU -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB -ecutwfc 25.0 # Rydberg -basis_type lcao -scf_thr 1e-7 -gamma_only 1 -nspin 2 -read_file_dir ./ - -bx 2 -by 2 -bz 2 - -#--------------------------------- -# this line if for generting wave -# functions -#--------------------------------- -#calculation scf -#out_wfc_lcao 1 diff --git a/tests/02_NAO_Gamma/014_NO_GO_wfc_file/INPUT b/tests/02_NAO_Gamma/014_NO_GO_wfc_file/INPUT deleted file mode 100644 index 5adb3b80b2..0000000000 --- a/tests/02_NAO_Gamma/014_NO_GO_wfc_file/INPUT +++ /dev/null @@ -1,20 +0,0 @@ -INPUT_PARAMETERS -#Parameters (System) -suffix autotest - -nbands 4 -stru_file STRU -kpoint_file KPT -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB -latname sc -#Parameters (PW) -ecutwfc 25.0 # Rydberg -#Parameters (electronic) -basis_type lcao -scf_thr 1e-10 - -calculation scf -gamma_only 1 -read_file_dir . -init_wfc file diff --git a/tests/02_NAO_Gamma/015_NO_GO_get_pchg/INPUT b/tests/02_NAO_Gamma/015_NO_GO_get_pchg/INPUT deleted file mode 100644 index 2404831564..0000000000 --- a/tests/02_NAO_Gamma/015_NO_GO_get_pchg/INPUT +++ /dev/null @@ -1,18 +0,0 @@ -INPUT_PARAMETERS -basis_type lcao -gamma_only 1 -calculation get_pchg - -nbands 4 -latname sc -ecutwfc 25.0 -scf_thr 1e-10 - -suffix autotest -stru_file STRU -kpoint_file KPT -read_file_dir ./ -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB - -out_pchg 4*1 \ No newline at end of file diff --git a/tests/02_NAO_Gamma/016_NO_GO_OW/INPUT b/tests/02_NAO_Gamma/016_NO_GO_OW/INPUT deleted file mode 100644 index 10dcef49b6..0000000000 --- a/tests/02_NAO_Gamma/016_NO_GO_OW/INPUT +++ /dev/null @@ -1,17 +0,0 @@ -INPUT_PARAMETERS - -calculation scf -basis_type lcao -gamma_only 1 -out_wfc_lcao 1 - -nbands 4 -latname sc -ecutwfc 25.0 # Rydberg -scf_thr 1e-10 - -suffix autotest -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB -stru_file STRU -kpoint_file KPT diff --git a/tests/02_NAO_Gamma/016_NO_GO_OW/README b/tests/02_NAO_Gamma/016_NO_GO_OW/README deleted file mode 100644 index 20528b428c..0000000000 --- a/tests/02_NAO_Gamma/016_NO_GO_OW/README +++ /dev/null @@ -1 +0,0 @@ -test out_wfc_lcao > 0 for gamma only diff --git a/tests/02_NAO_Gamma/017_NO_GO_mulliken/INPUT b/tests/02_NAO_Gamma/017_NO_GO_mulliken/INPUT deleted file mode 100644 index 8a18139859..0000000000 --- a/tests/02_NAO_Gamma/017_NO_GO_mulliken/INPUT +++ /dev/null @@ -1,21 +0,0 @@ -INPUT_PARAMETERS -#Parameters (System) -suffix autotest - -nbands 4 -stru_file STRU -kpoint_file KPT -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB -latname sc -#Parameters (PW) -ecutwfc 25.0 # Rydberg -#Parameters (electronic) -basis_type lcao -scf_thr 1e-10 - -calculation scf -gamma_only 1 -out_mul 1 -cal_force 1 -cal_stress 1 diff --git a/tests/02_NAO_Gamma/017_NO_GO_mulliken/mulliken.txt.ref b/tests/02_NAO_Gamma/017_NO_GO_mulliken/mulliken.txt.ref deleted file mode 100644 index 008254a350..0000000000 --- a/tests/02_NAO_Gamma/017_NO_GO_mulliken/mulliken.txt.ref +++ /dev/null @@ -1,36 +0,0 @@ -STEP: 0 -CALCULATE THE MULLIkEN ANALYSIS FOR EACH ATOM - Total charge: 2 -Decomposed Mulliken populations -0 Zeta of H Spin 1 -s 0 0.9980 -s 1 -0.0052 -SUM OVER M+Zeta 0.9928 - -pz 0 0.0072 -px 0 0.0000 -py 0 0.0000 -SUM OVER M 0.0072 -SUM OVER M+Zeta 0.0072 - -SUM OVER M+Zeta+L 1.0000 - -Total Charge on atom: H 1.0000 - - -1 Zeta of H Spin 1 -s 0 0.9980 -s 1 -0.0052 -SUM OVER M+Zeta 0.9928 - -pz 0 0.0072 -px 0 0.0000 -py 0 0.0000 -SUM OVER M 0.0072 -SUM OVER M+Zeta 0.0072 - -SUM OVER M+Zeta+L 1.0000 - -Total Charge on atom: H 1.0000 - - diff --git a/tests/02_NAO_Gamma/018_NO_GO_ODM/INPUT b/tests/02_NAO_Gamma/018_NO_GO_ODM/INPUT deleted file mode 100644 index df0ce8c0ca..0000000000 --- a/tests/02_NAO_Gamma/018_NO_GO_ODM/INPUT +++ /dev/null @@ -1,17 +0,0 @@ -INPUT_PARAMETERS - -basis_type lcao -calculation scf -gamma_only 1 - -out_dmk 1 // file name is dms1_nao.txt -nbands 4 -latname sc -ecutwfc 25.0 // Rydberg -scf_thr 1e-10 - -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB -suffix autotest -stru_file STRU -kpoint_file KPT diff --git a/tests/02_NAO_Gamma/019_NO_GO_sol_H2O/INPUT b/tests/02_NAO_Gamma/019_NO_GO_sol_H2O/INPUT deleted file mode 100644 index db869719a7..0000000000 --- a/tests/02_NAO_Gamma/019_NO_GO_sol_H2O/INPUT +++ /dev/null @@ -1,23 +0,0 @@ -INPUT_PARAMETERS -#Parameters (General) -suffix autotest -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB - -gamma_only 1 -nbands 5 -calculation scf -basis_type lcao -cal_force 1 - -#Parameters (Accuracy) -ecutwfc 5 -scf_thr 1e-7 -scf_nmax 50 - -#Parameters (Solvation Model) -imp_sol 1 -eb_k 80 -tau 0.000010798 -sigma_k 0.6 -nc_k 0.00037 diff --git a/tests/02_NAO_Gamma/019_NO_GO_sol_H2O/result.ref b/tests/02_NAO_Gamma/019_NO_GO_sol_H2O/result.ref deleted file mode 100644 index 13f380f1d1..0000000000 --- a/tests/02_NAO_Gamma/019_NO_GO_sol_H2O/result.ref +++ /dev/null @@ -1,6 +0,0 @@ -etotref -443.7852518393088 -etotperatomref -147.9284172798 -totalforceref 187.944966 -esolelref -18.2295218889 -esolcavref 0.2142940852 -totaltimeref 0.57 diff --git a/tests/02_NAO_Gamma/020_NO_GO_SCAN_Si2/INPUT b/tests/02_NAO_Gamma/020_NO_GO_SCAN_Si2/INPUT deleted file mode 100644 index 6b9837d2e2..0000000000 --- a/tests/02_NAO_Gamma/020_NO_GO_SCAN_Si2/INPUT +++ /dev/null @@ -1,29 +0,0 @@ -INPUT_PARAMETERS -#Parameters (1.General) -suffix autotest -calculation scf - -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB - -#Parameters (2.Iteration) -ecutwfc 10 -scf_thr 1e-7 -#pseudo_mesh 1 - -dft_functional scan - -#Parameters (3.Basis) -basis_type lcao -gamma_only 1 - -#Parameters (4.Smearing) -smearing_method gauss -smearing_sigma 0.002 - -#Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.7 - -cal_force 1 -cal_stress 1 diff --git a/tests/02_NAO_Gamma/021_NO_GO_MSST/INPUT b/tests/02_NAO_Gamma/021_NO_GO_MSST/INPUT deleted file mode 100644 index bf0bde9d3c..0000000000 --- a/tests/02_NAO_Gamma/021_NO_GO_MSST/INPUT +++ /dev/null @@ -1,37 +0,0 @@ -INPUT_PARAMETERS -#Parameters (General) -suffix autotest -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB - -nbands 8 -calculation md -read_file_dir ./ - -#Parameters (Accuracy) -ecutwfc 20 -scf_nmax 20 - -scf_thr 1E-7 -basis_type lcao -md_nstep 3 - -smearing_method gauss -smearing_sigma 0.01 - -cal_stress 1 -cal_force 1 - -ks_solver scalapack_gvx -mixing_type broyden -mixing_beta 0.3 - -md_type msst -md_tfirst 10 -md_dt 1 -md_restart 0 -init_vel 1 -msst_qmass 1 -msst_vel 10 - -gamma_only 1 diff --git a/tests/02_NAO_Gamma/021_NO_GO_MSST/result.ref b/tests/02_NAO_Gamma/021_NO_GO_MSST/result.ref deleted file mode 100644 index 98da325475..0000000000 --- a/tests/02_NAO_Gamma/021_NO_GO_MSST/result.ref +++ /dev/null @@ -1,5 +0,0 @@ -etotref -207.2084422005094 -etotperatomref -103.6042211003 -totalforceref 0.186002 -totalstressref 63.088667 -totaltimeref +1.0314 diff --git a/tests/02_NAO_Gamma/022_NO_GO_MSST2/INPUT b/tests/02_NAO_Gamma/022_NO_GO_MSST2/INPUT deleted file mode 100644 index e75e4d6324..0000000000 --- a/tests/02_NAO_Gamma/022_NO_GO_MSST2/INPUT +++ /dev/null @@ -1,35 +0,0 @@ -INPUT_PARAMETERS -#Parameters (General) -suffix autotest -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB - -nbands 8 -calculation md - -#Parameters (Accuracy) -ecutwfc 20 -scf_nmax 20 - -gamma_only 1 -basis_type lcao -ks_solver scalapack_gvx - -mixing_type broyden -mixing_beta 0.4 - -smearing_method gauss -smearing_sigma 0.001 - -cal_force 1 -cal_stress 1 - -md_nstep 3 -md_type msst -md_tfirst 10 -md_dt 1 -md_restart 0 -md_prec_level 2 -init_vel 1 -msst_qmass 1 -msst_vel 10 diff --git a/tests/02_NAO_Gamma/022_NO_GO_MSST2/result.ref b/tests/02_NAO_Gamma/022_NO_GO_MSST2/result.ref deleted file mode 100644 index fe1f873c56..0000000000 --- a/tests/02_NAO_Gamma/022_NO_GO_MSST2/result.ref +++ /dev/null @@ -1,5 +0,0 @@ -etotref -207.070585498893 -etotperatomref -103.5352927494 -totalforceref 0.218882 -totalstressref 63.052389 -totaltimeref +1.1941 diff --git a/tests/02_NAO_Gamma/023_NO_GO_NVT_OW/INPUT b/tests/02_NAO_Gamma/023_NO_GO_NVT_OW/INPUT deleted file mode 100644 index b304a903c0..0000000000 --- a/tests/02_NAO_Gamma/023_NO_GO_NVT_OW/INPUT +++ /dev/null @@ -1,42 +0,0 @@ -INPUT_PARAMETERS - -# general -calculation md -md_nstep 2 -basis_type lcao -gamma_only 1 -nbands 8 - -# scf -ecutwfc 20 -scf_nmax 20 -scf_thr 1E-7 - -# solver -ks_solver genelpa -mixing_type broyden -mixing_beta 0.7 - -# force and stress -cal_force 1 -force_thr_ev 1.0e-3 -cal_stress 1 -stress_thr 1e-6 - -# md parameters -md_type nvt -md_tchain 4 -md_tfirst 10 -md_dt 1 -md_restart 0 - -# input and output -init_vel 1 -out_wfc_lcao 1 -out_app_flag 1 - -# directories -suffix autotest -read_file_dir ./ -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB diff --git a/tests/02_NAO_Gamma/023_NO_GO_NVT_OW/STRU b/tests/02_NAO_Gamma/023_NO_GO_NVT_OW/STRU deleted file mode 100644 index 7f7a971c9a..0000000000 --- a/tests/02_NAO_Gamma/023_NO_GO_NVT_OW/STRU +++ /dev/null @@ -1,22 +0,0 @@ -ATOMIC_SPECIES -Si 14 Si_dojo_nsoc.upf - -NUMERICAL_ORBITAL -Si_dojo_6au_sz.orb - -LATTICE_CONSTANT -10.2 - -LATTICE_VECTORS -0 0.5 0.5 #latvec1 -0.5 0 0.5 #latvec2 -0.5 0.5 0 #latvec3 - -ATOMIC_POSITIONS -Cartesian - -Si #label -0 #magnetism -2 #number of atoms -0 0 0 m 1 1 1 v 7.84179508201e-05 0.000114236741577 8.28212578036e-05 -0.241 0.255 0.250999999999 m 1 1 1 v -7.84179508201e-05 -0.000114236741577 -8.28212578036e-05 diff --git a/tests/02_NAO_Gamma/024_NO_GO_FeBiTe/INPUT b/tests/02_NAO_Gamma/024_NO_GO_FeBiTe/INPUT deleted file mode 100644 index 21b10a1890..0000000000 --- a/tests/02_NAO_Gamma/024_NO_GO_FeBiTe/INPUT +++ /dev/null @@ -1,12 +0,0 @@ -INPUT_PARAMETERS -suffix autotest -calculation scf -ks_solver genelpa -gamma_only 1 -cal_stress 1 -cal_force 1 -stru_file STRU -basis_type lcao -dft_functional pbe -ecutwfc 10 -scf_nmax 10 diff --git a/tests/02_NAO_Gamma/025_NO_GO_BS/INPUT b/tests/02_NAO_Gamma/025_NO_GO_BS/INPUT deleted file mode 100644 index 0c64f87754..0000000000 --- a/tests/02_NAO_Gamma/025_NO_GO_BS/INPUT +++ /dev/null @@ -1,16 +0,0 @@ -INPUT_PARAMETERS -suffix autotest - -nbands 6 -ecutwfc 10 -scf_thr 1e-6 -scf_nmax 100 -gamma_only 1 -calculation scf -smearing_method gaussian -smearing_sigma 0.001 -nspin 2 -basis_type lcao -ks_solver scalapack_gvx -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB diff --git a/tests/02_NAO_Gamma/026_NO_GO_PU_AF/INPUT b/tests/02_NAO_Gamma/026_NO_GO_PU_AF/INPUT deleted file mode 100644 index 5b735f3e29..0000000000 --- a/tests/02_NAO_Gamma/026_NO_GO_PU_AF/INPUT +++ /dev/null @@ -1,42 +0,0 @@ -INPUT_PARAMETERS -suffix autotest -nbands 28 - -calculation scf -ecutwfc 6 -scf_thr 1.0e-7 -scf_nmax 30 -out_chg 0 - -#init_chg file -#out_dos 1 -#dos_sigma 0.05 -#out_band 1 - -smearing_method gaussian -smearing_sigma 0.07 - -cal_force 1 -cal_stress 1 - -#force_thr_ev 0.01 -#relax_method cg -#relax_bfgs_init 0.5 - -mixing_type broyden -mixing_beta 0.2 -mixing_gg0 1.0 - -ks_solver scalapack_gvx -basis_type lcao -gamma_only 1 -symmetry 0 -nspin 2 - -#Parameter DFT+U -dft_plus_u 1 -orbital_corr 2 2 -hubbard_u 5.0 5.0 -onsite_radius 5.0 -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB diff --git a/tests/02_NAO_Gamma/CASES_CPU.txt b/tests/02_NAO_Gamma/CASES_CPU.txt index f56b3e3a62..c96202edfb 100644 --- a/tests/02_NAO_Gamma/CASES_CPU.txt +++ b/tests/02_NAO_Gamma/CASES_CPU.txt @@ -1,26 +1,36 @@ -001_NO_GO_15_CF_CS -002_NO_GO_AF -003_NO_GO_AF_mag -004_NO_GO_FM -005_NO_GO_ocp -006_NO_GO_OH -007_NO_GO_OXC -008_NO_GO_CF_RE -009_NO_GO_CS_CR -010_NO_GO_RE_MB -011_NO_GO_elec_minus -012_NO_GO_S2_elec_minus -013_NO_GO_get_wf -014_NO_GO_wfc_file -015_NO_GO_get_pchg -016_NO_GO_OW -017_NO_GO_mulliken -018_NO_GO_ODM -019_NO_GO_sol_H2O -020_NO_GO_SCAN_Si2 -021_NO_GO_MSST -022_NO_GO_MSST2 -023_NO_GO_NVT_OW -024_NO_GO_FeBiTe -025_NO_GO_BS -026_NO_GO_PU_AF +#010_NO_GO_RE_OW +#011_NO_GO_RE_OW2 +#012_NO_GO_MD_OW +#013_NO_GO_MD_OW2 +get_pchg +get_wf_spin2 +md_msst +md_msst2 +md_out_hk_syns +md_out_hk_spin2 +relax_bfgs2 +relax_cell +relax_old_cg +relax_out_hk +relax_out_hk_spin2 +scf_afm +scf_bsse +scf_elenum +scf_elenum_spin2 +scf_FeBiTe +scf_fm +scf_force_stress +scf_in_wf +scf_metagga +scf_ocp_spin2 +scf_out_dm +scf_out_hk +scf_out_hk_spin2 +scf_out_hxc +scf_out_mul +scf_out_mul_spin2 +scf_out_wf +#scf_out_wf_spin2 +scf_solvation +scf_u_spin2 +test.sum diff --git a/tests/02_NAO_Gamma/get_pchg/INPUT b/tests/02_NAO_Gamma/get_pchg/INPUT new file mode 100644 index 0000000000..ec72a30f8b --- /dev/null +++ b/tests/02_NAO_Gamma/get_pchg/INPUT @@ -0,0 +1,19 @@ +INPUT_PARAMETERS +basis_type lcao +nspin 1 +gamma_only 1 +calculation get_pchg + +nbands 4 +latname sc +ecutwfc 25.0 +scf_thr 1e-10 + +suffix autotest +stru_file STRU +kpoint_file KPT +read_file_dir ./ +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB + +out_pchg 4*1 diff --git a/tests/02_NAO_Gamma/001_NO_GO_15_CF_CS/KPT b/tests/02_NAO_Gamma/get_pchg/KPT similarity index 100% rename from tests/02_NAO_Gamma/001_NO_GO_15_CF_CS/KPT rename to tests/02_NAO_Gamma/get_pchg/KPT diff --git a/tests/02_NAO_Gamma/015_NO_GO_get_pchg/README b/tests/02_NAO_Gamma/get_pchg/README similarity index 100% rename from tests/02_NAO_Gamma/015_NO_GO_get_pchg/README rename to tests/02_NAO_Gamma/get_pchg/README diff --git a/tests/02_NAO_Gamma/013_NO_GO_get_wf/STRU b/tests/02_NAO_Gamma/get_pchg/STRU similarity index 100% rename from tests/02_NAO_Gamma/013_NO_GO_get_wf/STRU rename to tests/02_NAO_Gamma/get_pchg/STRU diff --git a/tests/02_NAO_Gamma/015_NO_GO_get_pchg/result.ref b/tests/02_NAO_Gamma/get_pchg/result.ref similarity index 100% rename from tests/02_NAO_Gamma/015_NO_GO_get_pchg/result.ref rename to tests/02_NAO_Gamma/get_pchg/result.ref diff --git a/tests/02_NAO_Gamma/014_NO_GO_wfc_file/wfs1_nao.txt b/tests/02_NAO_Gamma/get_pchg/wf_nao.txt similarity index 100% rename from tests/02_NAO_Gamma/014_NO_GO_wfc_file/wfs1_nao.txt rename to tests/02_NAO_Gamma/get_pchg/wf_nao.txt diff --git a/tests/02_NAO_Gamma/get_wf_spin2/INPUT b/tests/02_NAO_Gamma/get_wf_spin2/INPUT new file mode 100644 index 0000000000..4582332738 --- /dev/null +++ b/tests/02_NAO_Gamma/get_wf_spin2/INPUT @@ -0,0 +1,27 @@ +INPUT_PARAMETERS +suffix autotest +calculation get_wf +out_wfc_norm 1 3*0 +out_wfc_re_im 0 1 2*0 +nbands 4 +latname sc +stru_file STRU +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB +ecutwfc 25.0 # Rydberg +basis_type lcao +scf_thr 1e-7 +gamma_only 1 +nspin 2 +read_file_dir ./ + +bx 2 +by 2 +bz 2 + +#--------------------------------- +# this line if for generting wave +# functions +#--------------------------------- +#calculation scf +#out_wfc_lcao 1 diff --git a/tests/02_NAO_Gamma/002_NO_GO_AF/KPT b/tests/02_NAO_Gamma/get_wf_spin2/KPT similarity index 100% rename from tests/02_NAO_Gamma/002_NO_GO_AF/KPT rename to tests/02_NAO_Gamma/get_wf_spin2/KPT diff --git a/tests/02_NAO_Gamma/013_NO_GO_get_wf/README b/tests/02_NAO_Gamma/get_wf_spin2/README similarity index 100% rename from tests/02_NAO_Gamma/013_NO_GO_get_wf/README rename to tests/02_NAO_Gamma/get_wf_spin2/README diff --git a/tests/02_NAO_Gamma/014_NO_GO_wfc_file/STRU b/tests/02_NAO_Gamma/get_wf_spin2/STRU similarity index 100% rename from tests/02_NAO_Gamma/014_NO_GO_wfc_file/STRU rename to tests/02_NAO_Gamma/get_wf_spin2/STRU diff --git a/tests/02_NAO_Gamma/013_NO_GO_get_wf/result.ref b/tests/02_NAO_Gamma/get_wf_spin2/result.ref similarity index 100% rename from tests/02_NAO_Gamma/013_NO_GO_get_wf/result.ref rename to tests/02_NAO_Gamma/get_wf_spin2/result.ref diff --git a/tests/02_NAO_Gamma/013_NO_GO_get_wf/wfs1_nao.txt b/tests/02_NAO_Gamma/get_wf_spin2/wfs1_nao.txt similarity index 100% rename from tests/02_NAO_Gamma/013_NO_GO_get_wf/wfs1_nao.txt rename to tests/02_NAO_Gamma/get_wf_spin2/wfs1_nao.txt diff --git a/tests/02_NAO_Gamma/013_NO_GO_get_wf/wfs2_nao.txt b/tests/02_NAO_Gamma/get_wf_spin2/wfs2_nao.txt similarity index 100% rename from tests/02_NAO_Gamma/013_NO_GO_get_wf/wfs2_nao.txt rename to tests/02_NAO_Gamma/get_wf_spin2/wfs2_nao.txt diff --git a/tests/02_NAO_Gamma/md_msst/INPUT b/tests/02_NAO_Gamma/md_msst/INPUT new file mode 100644 index 0000000000..ce2fd40b51 --- /dev/null +++ b/tests/02_NAO_Gamma/md_msst/INPUT @@ -0,0 +1,37 @@ +INPUT_PARAMETERS +#Parameters (General) +suffix autotest +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB + +nbands 8 +calculation md +read_file_dir ./ + +#Parameters (Accuracy) +ecutwfc 20 +scf_nmax 20 + +scf_thr 1E-7 +basis_type lcao +md_nstep 3 + +smearing_method gauss +smearing_sigma 0.01 + +cal_stress 1 +cal_force 1 + +ks_solver scalapack_gvx +mixing_type broyden +mixing_beta 0.3 + +md_type msst +md_tfirst 10 +md_dt 1 +md_restart 0 +init_vel 1 +msst_qmass 1 +msst_vel 10 + +gamma_only 1 diff --git a/tests/02_NAO_Gamma/021_NO_GO_MSST/README b/tests/02_NAO_Gamma/md_msst/README similarity index 100% rename from tests/02_NAO_Gamma/021_NO_GO_MSST/README rename to tests/02_NAO_Gamma/md_msst/README diff --git a/tests/02_NAO_Gamma/021_NO_GO_MSST/STRU b/tests/02_NAO_Gamma/md_msst/STRU similarity index 100% rename from tests/02_NAO_Gamma/021_NO_GO_MSST/STRU rename to tests/02_NAO_Gamma/md_msst/STRU diff --git a/tests/02_NAO_Gamma/md_msst/result.ref b/tests/02_NAO_Gamma/md_msst/result.ref new file mode 100644 index 0000000000..36d41df666 --- /dev/null +++ b/tests/02_NAO_Gamma/md_msst/result.ref @@ -0,0 +1,5 @@ +etotref -207.1644382026449 +etotperatomref -103.5822191013 +totalforceref 4.003278 +totalstressref 98.512702 +totaltimeref 2.52 diff --git a/tests/02_NAO_Gamma/md_msst2/INPUT b/tests/02_NAO_Gamma/md_msst2/INPUT new file mode 100644 index 0000000000..989ba5f459 --- /dev/null +++ b/tests/02_NAO_Gamma/md_msst2/INPUT @@ -0,0 +1,35 @@ +INPUT_PARAMETERS +#Parameters (General) +suffix autotest +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB + +nbands 8 +calculation md + +#Parameters (Accuracy) +ecutwfc 20 +scf_nmax 20 + +gamma_only 1 +basis_type lcao +ks_solver scalapack_gvx + +mixing_type broyden +mixing_beta 0.4 + +smearing_method gauss +smearing_sigma 0.001 + +cal_force 1 +cal_stress 1 + +md_nstep 3 +md_type msst +md_tfirst 10 +md_dt 1 +md_restart 0 +md_prec_level 2 +init_vel 1 +msst_qmass 1 +msst_vel 10 diff --git a/tests/02_NAO_Gamma/003_NO_GO_AF_mag/KPT b/tests/02_NAO_Gamma/md_msst2/KPT similarity index 100% rename from tests/02_NAO_Gamma/003_NO_GO_AF_mag/KPT rename to tests/02_NAO_Gamma/md_msst2/KPT diff --git a/tests/02_NAO_Gamma/022_NO_GO_MSST2/README b/tests/02_NAO_Gamma/md_msst2/README similarity index 100% rename from tests/02_NAO_Gamma/022_NO_GO_MSST2/README rename to tests/02_NAO_Gamma/md_msst2/README diff --git a/tests/02_NAO_Gamma/022_NO_GO_MSST2/STRU b/tests/02_NAO_Gamma/md_msst2/STRU similarity index 100% rename from tests/02_NAO_Gamma/022_NO_GO_MSST2/STRU rename to tests/02_NAO_Gamma/md_msst2/STRU diff --git a/tests/02_NAO_Gamma/md_msst2/result.ref b/tests/02_NAO_Gamma/md_msst2/result.ref new file mode 100644 index 0000000000..d7f5a647fa --- /dev/null +++ b/tests/02_NAO_Gamma/md_msst2/result.ref @@ -0,0 +1,5 @@ +etotref -207.0265694269335 +etotperatomref -103.5132847135 +totalforceref 4.002666 +totalstressref 98.468360 +totaltimeref 2.79 diff --git a/tests/02_NAO_Gamma/md_out_hk_spin2/INPUT b/tests/02_NAO_Gamma/md_out_hk_spin2/INPUT new file mode 100644 index 0000000000..02da18f7a6 --- /dev/null +++ b/tests/02_NAO_Gamma/md_out_hk_spin2/INPUT @@ -0,0 +1,33 @@ +INPUT_PARAMETERS +#Parameters (General) +suffix autotest +nbands 8 +calculation md +basis_type lcao +gamma_only 1 +nspin 2 +out_mat_hs 1 5 + +#Parameters (Accuracy) +ecutwfc 5 +scf_nmax 50 +scf_thr 1.0e-8 + +cal_stress 1 +stress_thr 1e-6 +cal_force 1 +force_thr_ev 1.0e-3 + +mixing_type broyden +mixing_beta 0.7 + +md_nstep 2 +md_tchain 4 +md_tfirst 10 +md_tfreq 0.1 +init_vel 1 + +chg_extrap first-order + +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB diff --git a/tests/02_NAO_Gamma/md_out_hk_spin2/STRU b/tests/02_NAO_Gamma/md_out_hk_spin2/STRU new file mode 100644 index 0000000000..6fc39c63ca --- /dev/null +++ b/tests/02_NAO_Gamma/md_out_hk_spin2/STRU @@ -0,0 +1,22 @@ +ATOMIC_SPECIES +Si 1 Si_ONCV_PBE-1.0.upf + +NUMERICAL_ORBITAL +Si_gga_8au_60Ry_2s2p1d.orb + +LATTICE_CONSTANT +10.2 + +LATTICE_VECTORS +0 0.5 0.5 #latvec1 +0.5 0 0.5 #latvec2 +0.5 0.5 0 #latvec3 + +ATOMIC_POSITIONS +Cartesian + +Si #label +0 #magnetism +2 #number of atoms +0 0 0 m 1 1 1 v 0.000135711648533 3.02182240507e-05 -8.2024241958e-05 +0.25 0.25 0.25 m 1 1 1 v -0.000135711648533 -3.02182240507e-05 8.2024241958e-05 diff --git a/tests/02_NAO_Gamma/md_out_hk_spin2/hks1_nao.txt.ref b/tests/02_NAO_Gamma/md_out_hk_spin2/hks1_nao.txt.ref new file mode 100644 index 0000000000..caf41031ba --- /dev/null +++ b/tests/02_NAO_Gamma/md_out_hk_spin2/hks1_nao.txt.ref @@ -0,0 +1,178 @@ +#------------------------------------------------------------------------ +# ionic step 1 +# filename OUT.autotest/hks1_nao.txt +# gamma only 1 +# rows 26 +# columns 26 +#------------------------------------------------------------------------ +Row 1 + -3.31964e-01 -7.79031e-01 7.49401e-16 -1.38778e-16 -4.71845e-16 8.32667e-16 -1.11022e-15 3.88578e-16 + 5.36551e-15 9.29812e-16 1.80411e-16 5.62746e-15 6.66134e-16 -5.55603e-01 -4.17914e-01 3.64292e-16 + -2.56739e-16 -1.35308e-16 -4.33681e-18 -1.76074e-16 -7.63278e-16 -3.24090e-15 3.33067e-16 4.57967e-16 + -2.81710e-15 1.38778e-17 +Row 2 + 8.97102e-01 2.63678e-16 -4.16334e-17 -6.24500e-16 8.32667e-16 -6.38378e-16 -5.27356e-16 4.40430e-15 + 1.66533e-16 1.87350e-16 4.36975e-15 2.22045e-16 -4.17914e-01 9.78300e-02 9.31113e-16 -1.14188e-15 + -4.11997e-16 4.27436e-15 -2.68188e-15 -1.66533e-15 -6.99030e-15 9.71445e-17 -1.80411e-16 -6.13812e-15 + -9.22873e-16 +Row 3 + 3.88003e-01 1.04083e-16 1.83881e-16 4.20473e-01 -2.08167e-17 1.04083e-16 3.88578e-16 1.94289e-16 + 3.33067e-16 -6.09844e-17 6.39674e-02 -2.08167e-16 3.05311e-16 -4.12889e-02 -4.68375e-17 -1.26635e-16 + -1.32845e-02 3.12250e-17 8.67362e-18 3.92048e-16 1.73472e-16 -9.71445e-17 1.22848e-16 -1.77608e-01 +Row 4 + 3.88003e-01 -1.28370e-16 -2.28983e-16 4.20473e-01 0.00000e+00 -7.91034e-16 -3.88578e-16 6.39674e-02 + 3.05311e-16 8.04912e-16 -1.66533e-16 -6.66134e-16 3.12250e-17 -4.12889e-02 2.94903e-17 1.82146e-16 + -1.32845e-02 -1.31839e-16 2.11636e-16 7.63278e-17 -1.77608e-01 1.00614e-16 3.46945e-18 +Row 5 + 3.88003e-01 7.63278e-17 -2.08167e-16 4.20473e-01 -5.41234e-16 6.39674e-02 3.33067e-16 0.00000e+00 + 7.21645e-16 -2.91434e-16 4.44089e-16 1.78677e-16 7.11237e-17 -4.12889e-02 1.37043e-16 8.67362e-18 + -1.32845e-02 4.16334e-17 -1.77608e-01 5.89806e-17 -1.04083e-16 1.04083e-17 +Row 6 + 7.68029e-01 3.46945e-17 6.93889e-18 -8.32667e-16 -1.66533e-16 4.44089e-16 -4.79955e-17 3.92224e-02 + 2.08167e-16 6.10623e-16 -1.32845e-02 -1.21431e-16 -6.24500e-17 1.33549e-01 1.74340e-16 -2.35922e-16 + 1.04083e-16 6.93889e-18 8.67362e-17 8.82915e-17 -3.73234e-02 +Row 7 + 7.68029e-01 -2.91434e-16 -8.88178e-16 5.55112e-17 3.92224e-02 1.11022e-15 1.94289e-16 -1.94289e-16 + -9.43690e-16 4.51028e-17 -1.32845e-02 -7.97973e-17 1.83881e-16 1.33549e-01 -6.33174e-17 1.56125e-16 + 7.28584e-17 -3.73234e-02 1.63064e-16 -5.89806e-17 +Row 8 + 7.68029e-01 -2.49800e-16 3.92224e-02 1.66533e-16 8.88178e-16 7.49401e-16 8.32667e-17 -4.44089e-16 + 1.97758e-16 -6.93889e-17 -1.32845e-02 1.17094e-16 4.85723e-17 1.33549e-01 -3.46945e-18 -3.73234e-02 + 1.14492e-16 2.08167e-17 3.81639e-17 +Row 9 + 1.45535e+00 4.16334e-17 6.24500e-17 2.11263e-15 6.38378e-16 3.59963e-15 6.71948e-15 2.42861e-17 + 1.75207e-16 5.89806e-17 1.70003e-16 2.34188e-16 7.02563e-17 -2.96562e-01 -1.17961e-16 2.98372e-16 + 2.28410e-17 2.49800e-16 +Row 10 + 1.40881e+00 -3.66027e-16 -3.60822e-16 2.42861e-16 3.40006e-16 3.33067e-16 1.04083e-16 0.00000e+00 + 1.77608e-01 1.73472e-18 1.73472e-18 3.73234e-02 -9.80119e-17 1.12412e-01 -2.49800e-16 -2.15973e-16 + 4.57967e-16 +Row 11 + 1.40881e+00 1.38778e-17 4.87457e-16 -2.81025e-16 1.94289e-16 1.73472e-17 1.77608e-01 6.93889e-18 + -2.60209e-17 3.73234e-02 9.10730e-17 -1.17094e-16 -1.66533e-16 1.12412e-01 1.83013e-16 -2.77556e-16 +Row 12 + 1.45535e+00 -2.77862e-18 3.47608e-15 6.79577e-15 3.11462e-17 1.28370e-16 -3.81639e-17 7.33030e-17 + 1.78677e-16 -3.29597e-16 -9.95292e-18 1.11022e-16 -6.93889e-17 -2.96562e-01 6.51102e-17 +Row 13 + 1.40881e+00 5.16948e-16 9.71445e-17 1.77608e-01 2.77556e-17 -6.24500e-17 3.73234e-02 -3.55618e-17 + 7.02563e-17 1.39645e-16 -5.48173e-16 2.42861e-16 -4.85770e-17 1.12412e-01 +Row 14 + -3.31964e-01 -7.79031e-01 -2.05239e-16 4.49456e-16 5.50992e-16 -4.30211e-16 -1.66880e-15 -1.64452e-15 + -4.70639e-15 2.08167e-16 3.19189e-16 -4.59482e-15 -7.21645e-16 +Row 15 + 8.97102e-01 -5.03070e-16 1.00614e-16 1.28370e-16 9.72313e-16 -2.22912e-16 -2.48065e-16 -4.16214e-15 + 6.80012e-16 5.13478e-16 -3.88083e-15 -4.02456e-16 +Row 16 + 3.88003e-01 -1.68268e-16 -1.40513e-16 4.20473e-01 -1.56125e-17 3.46945e-18 1.55258e-16 -5.88939e-16 + -4.68375e-17 -1.56712e-17 -6.39674e-02 +Row 17 + 3.88003e-01 1.02349e-16 -5.20417e-18 4.20473e-01 2.02963e-16 -8.20091e-16 -9.18536e-16 -6.39674e-02 + -4.02456e-16 7.27716e-16 +Row 18 + 3.88003e-01 -1.47451e-16 2.70617e-16 4.20473e-01 -7.09936e-16 -6.39674e-02 -4.41487e-16 3.61690e-16 + 8.67362e-16 +Row 19 + 7.68029e-01 5.37764e-17 -1.19696e-16 -1.45804e-15 5.86337e-16 1.73472e-16 2.52742e-17 -3.92224e-02 +Row 20 + 7.68029e-01 2.98372e-16 -1.08247e-15 1.68268e-16 -3.92224e-02 4.98733e-17 -3.50414e-16 +Row 21 + 7.68029e-01 4.68375e-17 -3.92224e-02 3.78170e-16 -4.49727e-16 1.59595e-16 +Row 22 + 1.45535e+00 -3.12250e-17 6.24500e-17 -2.09684e-15 -9.33281e-16 +Row 23 + 1.40881e+00 6.93889e-18 -3.85109e-16 -3.05311e-16 +Row 24 + 1.40881e+00 -1.21431e-16 -3.08781e-16 +Row 25 + 1.45535e+00 -8.85787e-17 +Row 26 + 1.40881e+00 +#------------------------------------------------------------------------ +# ionic step 2 +# filename OUT.autotest/hks1_nao.txt +# gamma only 1 +# rows 26 +# columns 26 +#------------------------------------------------------------------------ +Row 1 + -3.31972e-01 -7.79028e-01 7.14816e-04 1.18601e-03 2.55992e-04 6.52117e-04 1.08206e-03 2.33033e-04 + 1.28836e-06 -4.54117e-04 -2.04375e-03 -6.71035e-06 -1.23501e-03 -5.55607e-01 -4.17914e-01 -2.74459e-04 + -4.55894e-04 -9.72065e-05 -3.70140e-04 -6.13947e-04 -1.32724e-04 3.16148e-07 -1.41443e-04 -6.41178e-04 + -1.66935e-06 -3.87211e-04 +Row 2 + 8.97124e-01 4.13300e-04 6.86167e-04 1.47246e-04 7.09641e-04 1.17531e-03 2.58553e-04 1.75433e-06 + -6.22688e-04 -2.76647e-03 -9.22457e-06 -1.67368e-03 -4.17914e-01 9.78582e-02 -8.06321e-04 -1.33802e-03 + -2.88550e-04 -9.84118e-04 -1.63254e-03 -3.52887e-04 2.08192e-06 -1.13650e-03 -5.12933e-03 -1.07334e-05 + -3.09869e-03 +Row 3 + 3.87997e-01 1.40062e-04 6.34089e-04 4.20466e-01 1.25482e-04 5.71666e-04 -3.25354e-04 -1.17980e-03 + -2.58013e-04 9.05126e-08 6.39657e-02 2.74459e-04 8.06321e-04 -4.12849e-02 8.86212e-05 3.86770e-04 + -1.32862e-02 -1.30746e-05 -5.42741e-05 -7.55665e-04 -2.76819e-05 -1.60986e-06 7.93547e-09 -1.77600e-01 +Row 4 + 3.88000e-01 3.82956e-04 1.25448e-04 4.20468e-01 3.45051e-04 2.70808e-04 -7.11923e-04 6.39647e-02 + -4.68990e-04 -2.58010e-04 4.55894e-04 1.33802e-03 8.86212e-05 -4.12828e-02 2.34402e-04 -1.30004e-05 + -1.32865e-02 -3.30227e-05 6.24888e-04 -1.55625e-05 -1.77599e-01 -1.08234e-03 -1.59498e-06 +Row 5 + 3.87995e-01 5.71685e-04 3.45096e-04 4.20465e-01 5.62924e-05 6.39661e-02 -7.11918e-04 9.75467e-05 + -1.17979e-03 9.72065e-05 2.88550e-04 3.86770e-04 2.34402e-04 -4.12859e-02 -5.43036e-05 -3.31051e-05 + -1.32860e-02 1.39674e-04 -1.77601e-01 -1.56254e-05 2.41914e-04 -2.77144e-05 +Row 6 + 7.68024e-01 1.19285e-04 5.38466e-04 -3.73100e-04 -8.94456e-04 -1.92126e-04 -3.43987e-07 3.92231e-02 + 3.70140e-04 9.84118e-04 -1.32862e-02 -1.30004e-05 -5.43036e-05 1.33536e-01 -1.55736e-04 -6.60403e-04 + -2.46721e-04 1.23777e-03 2.77104e-04 -1.10668e-07 -3.73205e-02 +Row 7 + 7.68027e-01 3.25302e-04 3.10059e-04 -5.39006e-04 3.92242e-02 -5.37339e-04 -1.92200e-04 6.13947e-04 + 1.63254e-03 -1.30746e-05 -1.32865e-02 -3.31051e-05 -1.55736e-04 1.33532e-01 -4.01356e-04 2.03797e-04 + 7.48369e-04 -3.73229e-02 -3.53085e-04 2.76976e-04 +Row 8 + 7.68023e-01 6.53686e-05 3.92226e-02 -5.38769e-04 1.13042e-04 -8.94298e-04 1.32724e-04 3.52887e-04 + -5.42741e-05 -3.30227e-05 -1.32860e-02 -6.60403e-04 -4.01356e-04 1.33538e-01 4.59822e-05 -3.73193e-02 + 7.48582e-04 7.95927e-05 1.23788e-03 +Row 9 + 1.45534e+00 1.53190e-04 6.95610e-04 -3.65601e-06 -8.39995e-04 3.16148e-07 2.08192e-06 7.55665e-04 + -6.24888e-04 -1.39674e-04 2.46721e-04 -2.03797e-04 -4.59822e-05 -2.96551e-01 -5.05300e-05 -2.09671e-04 + -1.31286e-05 2.55348e-04 +Row 10 + 1.40881e+00 4.37693e-04 2.65290e-04 7.22287e-04 -1.41443e-04 -1.13650e-03 2.76819e-05 1.55625e-05 + 1.77601e-01 -1.23777e-03 -7.48369e-04 3.73193e-02 -5.05300e-05 1.12402e-01 8.72776e-04 -8.75043e-05 + 1.44211e-03 +Row 11 + 1.40880e+00 -1.20483e-03 1.65486e-04 -6.41178e-04 -5.12933e-03 1.60986e-06 1.77599e-01 1.56254e-05 + -2.77104e-04 3.73229e-02 -7.48582e-04 -2.09671e-04 8.72776e-04 1.12414e-01 3.63226e-04 3.26091e-04 +Row 12 + 1.45534e+00 -1.93980e-08 -1.66935e-06 -1.07334e-05 -7.93547e-09 1.08234e-03 -2.41914e-04 1.10668e-07 + 3.53085e-04 -7.95927e-05 -1.31286e-05 -8.75043e-05 3.63226e-04 -2.96546e-01 6.31527e-08 +Row 13 + 1.40881e+00 -3.87211e-04 -3.09869e-03 1.77600e-01 1.59498e-06 2.77144e-05 3.73205e-02 -2.76976e-04 + -1.23788e-03 2.55348e-04 1.44211e-03 3.26091e-04 6.31527e-08 1.12406e-01 +Row 14 + -3.31972e-01 -7.79028e-01 -7.14816e-04 -1.18601e-03 -2.55992e-04 -6.52117e-04 -1.08206e-03 -2.33033e-04 + 1.28836e-06 -4.54117e-04 -2.04375e-03 -6.71035e-06 -1.23501e-03 +Row 15 + 8.97124e-01 -4.13300e-04 -6.86167e-04 -1.47246e-04 -7.09641e-04 -1.17531e-03 -2.58553e-04 1.75433e-06 + -6.22688e-04 -2.76647e-03 -9.22457e-06 -1.67368e-03 +Row 16 + 3.87997e-01 1.40062e-04 6.34089e-04 4.20466e-01 1.25482e-04 5.71666e-04 3.25354e-04 1.17980e-03 + 2.58013e-04 -9.05126e-08 -6.39657e-02 +Row 17 + 3.88000e-01 3.82956e-04 1.25448e-04 4.20468e-01 3.45051e-04 -2.70808e-04 7.11923e-04 -6.39647e-02 + 4.68990e-04 2.58010e-04 +Row 18 + 3.87995e-01 5.71685e-04 3.45096e-04 4.20465e-01 -5.62924e-05 -6.39661e-02 7.11918e-04 -9.75467e-05 + 1.17979e-03 +Row 19 + 7.68024e-01 1.19285e-04 5.38466e-04 3.73100e-04 8.94456e-04 1.92126e-04 3.43987e-07 -3.92231e-02 +Row 20 + 7.68027e-01 3.25302e-04 -3.10059e-04 5.39006e-04 -3.92242e-02 5.37339e-04 1.92200e-04 +Row 21 + 7.68023e-01 -6.53686e-05 -3.92226e-02 5.38769e-04 -1.13042e-04 8.94298e-04 +Row 22 + 1.45534e+00 1.53190e-04 6.95610e-04 -3.65601e-06 -8.39995e-04 +Row 23 + 1.40881e+00 4.37693e-04 2.65290e-04 7.22287e-04 +Row 24 + 1.40880e+00 -1.20483e-03 1.65486e-04 +Row 25 + 1.45534e+00 -1.93980e-08 +Row 26 + 1.40881e+00 diff --git a/tests/02_NAO_Gamma/md_out_hk_spin2/hks2_nao.txt.ref b/tests/02_NAO_Gamma/md_out_hk_spin2/hks2_nao.txt.ref new file mode 100644 index 0000000000..a61ec33508 --- /dev/null +++ b/tests/02_NAO_Gamma/md_out_hk_spin2/hks2_nao.txt.ref @@ -0,0 +1,178 @@ +#------------------------------------------------------------------------ +# ionic step 1 +# filename OUT.autotest/hks2_nao.txt +# gamma only 1 +# rows 26 +# columns 26 +#------------------------------------------------------------------------ +Row 1 + -3.31964e-01 -7.79031e-01 -8.32667e-17 1.66533e-16 7.49401e-16 -3.88578e-16 6.10623e-16 -2.22045e-16 + -3.61572e-15 6.10623e-16 7.63278e-16 -5.94430e-15 -7.07767e-16 -5.55603e-01 -4.17914e-01 1.73472e-16 + -9.02056e-17 -2.18575e-16 5.27356e-16 1.95156e-16 -1.43115e-16 2.49215e-15 -3.33067e-16 1.52656e-16 + 4.65652e-15 1.38778e-17 +Row 2 + 8.97102e-01 -6.66134e-16 4.44089e-16 2.22045e-16 -2.22045e-16 5.55112e-17 -3.33067e-16 -3.03169e-15 + -4.78784e-16 3.40006e-16 -5.08615e-15 1.24900e-16 -4.17914e-01 9.78300e-02 -6.60496e-16 1.24336e-15 + 1.32056e-15 -1.01308e-15 9.95731e-16 -1.63064e-16 5.05095e-15 2.63678e-16 -1.31839e-16 8.90029e-15 + 3.74700e-16 +Row 3 + 3.88003e-01 -1.73472e-17 -3.46945e-18 4.20473e-01 4.02456e-16 2.08167e-16 8.32667e-17 2.22045e-16 + 4.99600e-16 1.60750e-16 6.39674e-02 3.05311e-16 -8.32667e-16 -4.12889e-02 2.22045e-16 1.90820e-16 + -1.32845e-02 1.43982e-16 2.41127e-16 -2.08167e-17 6.24500e-17 -2.46331e-16 -1.10038e-16 -1.77608e-01 +Row 4 + 3.88003e-01 -4.51028e-17 -1.80411e-16 4.20473e-01 2.49800e-16 5.41234e-16 3.88578e-16 6.39674e-02 + -2.22045e-16 -6.93889e-16 3.60822e-16 1.27676e-15 -8.67362e-18 -4.12889e-02 1.42247e-16 -1.25767e-16 + -1.32845e-02 -8.67362e-18 -3.45210e-16 -1.90820e-16 -1.77608e-01 5.55112e-17 -2.02963e-16 +Row 5 + 3.88003e-01 -4.85723e-17 5.82867e-16 4.20473e-01 1.38778e-17 6.39674e-02 -2.77556e-17 1.66533e-16 + -4.99600e-16 5.13478e-16 2.77556e-16 -1.80411e-16 3.29597e-17 -4.12889e-02 -2.73219e-16 -9.97466e-17 + -1.32845e-02 -1.30104e-16 -1.77608e-01 -8.84709e-17 7.97973e-17 1.16226e-16 +Row 6 + 7.68029e-01 8.32667e-17 1.24900e-16 1.66533e-16 2.77556e-17 -9.15934e-16 1.49227e-16 3.92224e-02 + -3.33067e-16 1.05471e-15 -1.32845e-02 1.83881e-16 3.22659e-16 1.33549e-01 -4.33681e-17 1.19696e-16 + -1.38778e-17 4.51028e-17 -3.60822e-16 -5.00242e-19 -3.73234e-02 +Row 7 + 7.68029e-01 2.84495e-16 2.49800e-16 1.11022e-16 3.92224e-02 -1.11022e-16 -4.71845e-16 5.13478e-16 + -2.77556e-16 -7.97973e-17 -1.32845e-02 4.16334e-17 2.94903e-17 1.33549e-01 3.64292e-17 -2.53270e-16 + -9.71445e-17 -3.73234e-02 -6.93889e-18 -2.70617e-16 +Row 8 + 7.68029e-01 3.05311e-16 3.92224e-02 1.94289e-16 -2.77556e-16 -1.74860e-15 2.49800e-16 6.66134e-16 + -5.89806e-17 -1.35308e-16 -1.32845e-02 -1.03216e-16 -1.18829e-16 1.33549e-01 -7.63278e-17 -3.73234e-02 + -8.67362e-17 2.08167e-17 5.55112e-17 +Row 9 + 1.45535e+00 7.63278e-17 -8.32667e-17 -2.49849e-15 1.52656e-16 -2.12639e-15 -4.72244e-15 -5.55112e-17 + -3.40006e-16 -1.04083e-16 -1.17094e-16 -2.50668e-16 -1.40079e-16 -2.96562e-01 -1.38778e-17 -1.94289e-16 + -3.11723e-17 2.77556e-17 +Row 10 + 1.40881e+00 1.56125e-16 -3.88578e-16 -1.09288e-16 1.38778e-17 3.33067e-16 1.38778e-17 -6.93889e-17 + 1.77608e-01 -9.97466e-17 -1.34441e-16 3.73234e-02 6.02816e-17 1.12412e-01 -1.73472e-16 1.51788e-16 + -6.17562e-16 +Row 11 + 1.40881e+00 -1.52656e-16 -1.12757e-16 6.24500e-17 4.16334e-16 -3.12250e-17 1.77608e-01 6.93889e-18 + 1.35308e-16 3.73234e-02 -1.21431e-16 2.99240e-17 9.71445e-17 1.12412e-01 -2.32453e-16 -2.49800e-16 +Row 12 + 1.45535e+00 -2.14484e-18 -4.00842e-15 -8.15517e-15 -6.61672e-17 1.45717e-16 -6.93889e-17 -4.91598e-17 + -6.67869e-17 1.30972e-16 -8.04433e-17 -1.38778e-17 2.08167e-16 -2.96562e-01 -8.27256e-17 +Row 13 + 1.40881e+00 3.92048e-16 -3.19189e-16 1.77608e-01 5.55112e-17 -5.55112e-17 3.73234e-02 1.83013e-16 + -2.60209e-17 2.53270e-16 6.93889e-16 6.80012e-16 1.16037e-16 1.12412e-01 +Row 14 + -3.31964e-01 -7.79031e-01 4.72333e-16 -5.62321e-16 -4.24953e-16 -2.79290e-16 9.36751e-17 -3.72966e-16 + 3.87623e-15 -2.22045e-16 -2.49800e-16 6.76799e-15 1.11022e-15 +Row 15 + 8.97102e-01 3.33067e-16 1.11022e-16 5.79398e-16 2.32453e-16 2.15106e-16 -3.82507e-16 3.26546e-15 + -7.49401e-16 -9.43690e-16 5.65082e-15 5.41234e-16 +Row 16 + 3.88003e-01 3.67761e-16 8.32667e-17 4.20473e-01 -1.04083e-16 7.45931e-17 7.23380e-16 -5.18682e-16 + -4.90059e-16 1.85559e-16 -6.39674e-02 +Row 17 + 3.88003e-01 -1.04083e-16 -1.94289e-16 4.20473e-01 -2.27249e-16 6.29705e-16 2.74086e-16 -6.39674e-02 + -3.20056e-16 -8.06646e-17 +Row 18 + 3.88003e-01 -8.50015e-17 5.55112e-17 4.20473e-01 3.80338e-16 -6.39674e-02 1.97758e-16 2.19443e-16 + -8.46545e-16 +Row 19 + 7.68029e-01 7.97973e-17 -8.32667e-17 2.53270e-16 5.03070e-16 9.54098e-17 2.15085e-16 -3.92224e-02 +Row 20 + 7.68029e-01 -7.33788e-16 8.69530e-16 -2.32453e-16 -3.92224e-02 -3.41741e-16 -4.83988e-16 +Row 21 + 7.68029e-01 6.40113e-16 -3.92224e-02 7.28584e-17 9.88792e-16 -1.18482e-15 +Row 22 + 1.45535e+00 2.61943e-16 3.10516e-16 2.59965e-15 2.70617e-16 +Row 23 + 1.40881e+00 -2.08167e-16 2.11636e-16 2.70617e-16 +Row 24 + 1.40881e+00 -2.77556e-17 5.27356e-16 +Row 25 + 1.45535e+00 3.04353e-17 +Row 26 + 1.40881e+00 +#------------------------------------------------------------------------ +# ionic step 2 +# filename OUT.autotest/hks2_nao.txt +# gamma only 1 +# rows 26 +# columns 26 +#------------------------------------------------------------------------ +Row 1 + -3.31972e-01 -7.79028e-01 7.14816e-04 1.18601e-03 2.55992e-04 6.52117e-04 1.08206e-03 2.33033e-04 + 1.28840e-06 -4.54117e-04 -2.04375e-03 -6.71053e-06 -1.23501e-03 -5.55607e-01 -4.17914e-01 -2.74459e-04 + -4.55894e-04 -9.72065e-05 -3.70140e-04 -6.13947e-04 -1.32724e-04 3.16157e-07 -1.41443e-04 -6.41178e-04 + -1.66939e-06 -3.87212e-04 +Row 2 + 8.97124e-01 4.13300e-04 6.86166e-04 1.47246e-04 7.09641e-04 1.17531e-03 2.58552e-04 1.75433e-06 + -6.22688e-04 -2.76647e-03 -9.22459e-06 -1.67368e-03 -4.17914e-01 9.78582e-02 -8.06321e-04 -1.33802e-03 + -2.88550e-04 -9.84118e-04 -1.63254e-03 -3.52887e-04 2.08197e-06 -1.13650e-03 -5.12933e-03 -1.07336e-05 + -3.09869e-03 +Row 3 + 3.87997e-01 1.40062e-04 6.34089e-04 4.20466e-01 1.25483e-04 5.71666e-04 -3.25354e-04 -1.17980e-03 + -2.58013e-04 9.05122e-08 6.39657e-02 2.74459e-04 8.06321e-04 -4.12849e-02 8.86212e-05 3.86770e-04 + -1.32862e-02 -1.30746e-05 -5.42741e-05 -7.55665e-04 -2.76819e-05 -1.60987e-06 7.93546e-09 -1.77600e-01 +Row 4 + 3.88000e-01 3.82956e-04 1.25448e-04 4.20468e-01 3.45051e-04 2.70808e-04 -7.11923e-04 6.39647e-02 + -4.68990e-04 -2.58010e-04 4.55894e-04 1.33802e-03 8.86212e-05 -4.12828e-02 2.34402e-04 -1.30004e-05 + -1.32865e-02 -3.30227e-05 6.24888e-04 -1.55625e-05 -1.77599e-01 -1.08234e-03 -1.59499e-06 +Row 5 + 3.87995e-01 5.71685e-04 3.45096e-04 4.20465e-01 5.62924e-05 6.39661e-02 -7.11918e-04 9.75468e-05 + -1.17979e-03 9.72065e-05 2.88550e-04 3.86770e-04 2.34402e-04 -4.12859e-02 -5.43036e-05 -3.31051e-05 + -1.32860e-02 1.39674e-04 -1.77601e-01 -1.56255e-05 2.41914e-04 -2.77144e-05 +Row 6 + 7.68024e-01 1.19285e-04 5.38466e-04 -3.73100e-04 -8.94456e-04 -1.92126e-04 -3.43987e-07 3.92231e-02 + 3.70140e-04 9.84118e-04 -1.32862e-02 -1.30004e-05 -5.43036e-05 1.33536e-01 -1.55736e-04 -6.60403e-04 + -2.46721e-04 1.23777e-03 2.77104e-04 -1.10668e-07 -3.73205e-02 +Row 7 + 7.68027e-01 3.25302e-04 3.10060e-04 -5.39006e-04 3.92242e-02 -5.37340e-04 -1.92200e-04 6.13947e-04 + 1.63254e-03 -1.30746e-05 -1.32865e-02 -3.31051e-05 -1.55736e-04 1.33532e-01 -4.01356e-04 2.03797e-04 + 7.48369e-04 -3.73229e-02 -3.53085e-04 2.76976e-04 +Row 8 + 7.68023e-01 6.53687e-05 3.92226e-02 -5.38769e-04 1.13042e-04 -8.94297e-04 1.32724e-04 3.52887e-04 + -5.42741e-05 -3.30227e-05 -1.32860e-02 -6.60403e-04 -4.01356e-04 1.33538e-01 4.59822e-05 -3.73193e-02 + 7.48582e-04 7.95927e-05 1.23788e-03 +Row 9 + 1.45534e+00 1.53190e-04 6.95610e-04 -3.65609e-06 -8.39995e-04 3.16157e-07 2.08197e-06 7.55665e-04 + -6.24888e-04 -1.39674e-04 2.46721e-04 -2.03797e-04 -4.59822e-05 -2.96551e-01 -5.05301e-05 -2.09671e-04 + -1.31286e-05 2.55348e-04 +Row 10 + 1.40881e+00 4.37693e-04 2.65290e-04 7.22287e-04 -1.41443e-04 -1.13650e-03 2.76819e-05 1.55625e-05 + 1.77601e-01 -1.23777e-03 -7.48369e-04 3.73193e-02 -5.05301e-05 1.12402e-01 8.72775e-04 -8.75043e-05 + 1.44211e-03 +Row 11 + 1.40880e+00 -1.20483e-03 1.65486e-04 -6.41178e-04 -5.12933e-03 1.60987e-06 1.77599e-01 1.56255e-05 + -2.77104e-04 3.73229e-02 -7.48582e-04 -2.09671e-04 8.72775e-04 1.12414e-01 3.63226e-04 3.26091e-04 +Row 12 + 1.45534e+00 -1.93977e-08 -1.66939e-06 -1.07336e-05 -7.93546e-09 1.08234e-03 -2.41914e-04 1.10668e-07 + 3.53085e-04 -7.95927e-05 -1.31286e-05 -8.75043e-05 3.63226e-04 -2.96546e-01 6.31525e-08 +Row 13 + 1.40881e+00 -3.87212e-04 -3.09869e-03 1.77600e-01 1.59499e-06 2.77144e-05 3.73205e-02 -2.76976e-04 + -1.23788e-03 2.55348e-04 1.44211e-03 3.26091e-04 6.31525e-08 1.12406e-01 +Row 14 + -3.31972e-01 -7.79028e-01 -7.14816e-04 -1.18601e-03 -2.55992e-04 -6.52117e-04 -1.08206e-03 -2.33033e-04 + 1.28840e-06 -4.54117e-04 -2.04375e-03 -6.71053e-06 -1.23501e-03 +Row 15 + 8.97124e-01 -4.13300e-04 -6.86166e-04 -1.47246e-04 -7.09641e-04 -1.17531e-03 -2.58552e-04 1.75433e-06 + -6.22688e-04 -2.76647e-03 -9.22459e-06 -1.67368e-03 +Row 16 + 3.87997e-01 1.40062e-04 6.34089e-04 4.20466e-01 1.25483e-04 5.71666e-04 3.25354e-04 1.17980e-03 + 2.58013e-04 -9.05122e-08 -6.39657e-02 +Row 17 + 3.88000e-01 3.82956e-04 1.25448e-04 4.20468e-01 3.45051e-04 -2.70808e-04 7.11923e-04 -6.39647e-02 + 4.68990e-04 2.58010e-04 +Row 18 + 3.87995e-01 5.71685e-04 3.45096e-04 4.20465e-01 -5.62924e-05 -6.39661e-02 7.11918e-04 -9.75468e-05 + 1.17979e-03 +Row 19 + 7.68024e-01 1.19285e-04 5.38466e-04 3.73100e-04 8.94456e-04 1.92126e-04 3.43987e-07 -3.92231e-02 +Row 20 + 7.68027e-01 3.25302e-04 -3.10060e-04 5.39006e-04 -3.92242e-02 5.37340e-04 1.92200e-04 +Row 21 + 7.68023e-01 -6.53687e-05 -3.92226e-02 5.38769e-04 -1.13042e-04 8.94297e-04 +Row 22 + 1.45534e+00 1.53190e-04 6.95610e-04 -3.65609e-06 -8.39995e-04 +Row 23 + 1.40881e+00 4.37693e-04 2.65290e-04 7.22287e-04 +Row 24 + 1.40880e+00 -1.20483e-03 1.65486e-04 +Row 25 + 1.45534e+00 -1.93977e-08 +Row 26 + 1.40881e+00 diff --git a/tests/02_NAO_Gamma/md_out_hk_spin2/result.ref b/tests/02_NAO_Gamma/md_out_hk_spin2/result.ref new file mode 100644 index 0000000000..4a8cc1a5b6 --- /dev/null +++ b/tests/02_NAO_Gamma/md_out_hk_spin2/result.ref @@ -0,0 +1,8 @@ +etotref -196.6304397731159 +etotperatomref -98.3152198866 +totalforceref 0.717564 +totalstressref 1315.352680 +CompareH1_pass 0 +CompareH2_pass 0 +CompareS_pass 0 +totaltimeref 1.35 diff --git a/tests/02_NAO_Gamma/md_out_hk_spin2/sk_nao.txt.ref b/tests/02_NAO_Gamma/md_out_hk_spin2/sk_nao.txt.ref new file mode 100644 index 0000000000..fe46bb7516 --- /dev/null +++ b/tests/02_NAO_Gamma/md_out_hk_spin2/sk_nao.txt.ref @@ -0,0 +1,178 @@ +#------------------------------------------------------------------------ +# ionic step 1 +# filename OUT.autotest/sk_nao.txt +# gamma only 1 +# rows 26 +# columns 26 +#------------------------------------------------------------------------ +Row 1 + 1.48885e+00 1.85694e+00 1.50298e-17 6.88468e-18 -2.36492e-17 1.00384e-16 4.09828e-17 -4.11861e-17 + 1.20440e-17 -2.12775e-18 9.48677e-20 -3.03848e-17 -6.11897e-18 1.23629e+00 2.25011e+00 1.25400e-16 + 3.90696e-17 -4.36222e-18 -1.23450e-16 -6.48649e-17 6.48861e-17 5.65987e-17 7.06637e-19 8.47965e-18 + 4.95197e-17 2.35825e-17 +Row 2 + 4.31653e+00 7.86589e-17 1.08420e-17 -3.96276e-17 -3.55618e-17 -5.20417e-17 -8.58688e-17 3.03983e-17 + -3.57787e-18 -4.77049e-18 -8.45678e-17 1.40946e-18 2.25011e+00 3.67664e+00 -5.28278e-17 -1.00353e-16 + 1.02837e-16 -2.69262e-16 3.84011e-17 1.30917e-17 -7.82523e-17 1.54296e-17 -3.71339e-18 -1.51241e-16 + -1.15264e-17 +Row 3 + 5.44536e-01 1.10589e-17 -1.03812e-17 5.83149e-01 -2.42861e-17 2.85145e-17 4.43845e-19 7.04731e-19 + -2.53432e-18 5.42101e-19 -5.42101e-20 -1.25400e-16 5.28278e-17 -1.24841e-01 -5.58517e-17 1.37660e-17 + -1.17065e-01 -2.78979e-17 -4.05898e-17 -3.03102e-17 -2.33866e-18 5.04832e-19 -7.17437e-19 -4.82752e-01 +Row 4 + 5.44536e-01 -6.50521e-18 -2.42861e-17 5.83149e-01 8.67362e-19 4.87891e-19 6.48488e-18 -5.42101e-20 + -4.60786e-19 5.83606e-18 -3.90696e-17 1.00353e-16 -5.58517e-17 -1.24841e-01 6.18385e-17 -2.78979e-17 + -1.17065e-01 4.95379e-17 2.29461e-18 1.69457e-17 -4.82752e-01 -1.11861e-17 -1.63689e-18 +Row 5 + 5.44536e-01 2.85145e-17 8.67362e-19 5.83149e-01 -4.84503e-19 -5.42101e-20 1.80249e-18 -1.35525e-18 + -2.48011e-18 4.36222e-18 -1.02837e-16 1.37660e-17 6.18385e-17 -1.24841e-01 -4.05898e-17 4.95379e-17 + -1.17065e-01 4.80776e-18 -4.82752e-01 -8.40765e-18 -1.76522e-17 -8.61433e-19 +Row 6 + 6.96122e-01 4.68375e-17 -5.29091e-17 8.34836e-18 3.14419e-18 -9.05309e-18 2.62919e-18 0.00000e+00 + 1.23450e-16 2.69262e-16 -1.17065e-01 -2.78979e-17 -4.05898e-17 -6.46175e-02 2.56414e-17 1.96241e-17 + 1.85941e-17 -1.39252e-17 -1.35796e-17 1.20617e-18 -4.19177e-01 +Row 7 + 6.96122e-01 -7.80626e-18 1.30104e-18 3.19840e-18 0.00000e+00 -2.57498e-18 5.48877e-18 6.48649e-17 + -3.84011e-17 -2.78979e-17 -1.17065e-01 4.95379e-17 2.56414e-17 -6.46175e-02 -1.10318e-17 6.36969e-19 + -1.88685e-17 -4.19177e-01 7.40053e-18 1.81858e-17 +Row 8 + 6.96122e-01 -3.21195e-18 0.00000e+00 -1.62630e-18 -4.44523e-18 -2.91379e-18 -6.48861e-17 -1.30917e-17 + -4.05898e-17 4.95379e-17 -1.17065e-01 1.96241e-17 -1.10318e-17 -6.46175e-02 3.91668e-18 -4.19177e-01 + -1.15332e-17 2.62648e-17 -1.16467e-17 +Row 9 + 9.91168e-01 -2.23617e-18 2.94429e-18 4.32444e-17 1.48739e-18 5.65987e-17 -7.82523e-17 3.03102e-17 + -2.29461e-18 -4.80776e-18 -1.85941e-17 -6.36969e-19 -3.91668e-18 -5.10937e-01 -7.31921e-18 6.99310e-18 + -6.37714e-17 -1.47968e-17 +Row 10 + 1.13701e+00 -2.29038e-18 -2.98156e-19 -3.06626e-19 7.06637e-19 1.54296e-17 2.33866e-18 -1.69457e-17 + 4.82752e-01 1.39252e-17 1.88685e-17 4.19177e-01 -7.31921e-18 1.32237e-01 1.45266e-17 1.31640e-17 + -5.73399e-18 +Row 11 + 1.13701e+00 -9.04631e-19 -2.79182e-18 8.47965e-18 -3.71339e-18 -5.04832e-19 4.82752e-01 8.40765e-18 + 1.35796e-17 4.19177e-01 1.15332e-17 6.99310e-18 1.45266e-17 1.32237e-01 1.70262e-17 -6.55604e-19 +Row 12 + 9.91168e-01 2.16091e-20 4.95197e-17 -1.51241e-16 7.17437e-19 1.11861e-17 1.76522e-17 -1.20617e-18 + -7.40053e-18 -2.62648e-17 -6.37714e-17 1.31640e-17 1.70262e-17 -5.10937e-01 -2.84074e-19 +Row 13 + 1.13701e+00 2.35825e-17 -1.15264e-17 4.82752e-01 1.63689e-18 8.61433e-19 4.19177e-01 -1.81858e-17 + 1.16467e-17 -1.47968e-17 -5.73399e-18 -6.55604e-19 -2.84074e-19 1.32237e-01 +Row 14 + 1.48885e+00 1.85694e+00 1.50298e-17 6.88468e-18 -2.36492e-17 1.00384e-16 4.09828e-17 -4.11861e-17 + 1.20440e-17 -2.12775e-18 9.48677e-20 -3.03848e-17 -6.11897e-18 +Row 15 + 4.31653e+00 7.86589e-17 1.08420e-17 -3.96276e-17 -3.55618e-17 -5.20417e-17 -8.58688e-17 3.03983e-17 + -3.57787e-18 -4.77049e-18 -8.45678e-17 1.40946e-18 +Row 16 + 5.44536e-01 1.10589e-17 -1.03812e-17 5.83149e-01 -2.42861e-17 2.85145e-17 4.43845e-19 7.04731e-19 + -2.53432e-18 5.42101e-19 -5.42101e-20 +Row 17 + 5.44536e-01 -6.50521e-18 -2.42861e-17 5.83149e-01 8.67362e-19 4.87891e-19 6.48488e-18 -5.42101e-20 + -4.60786e-19 5.83606e-18 +Row 18 + 5.44536e-01 2.85145e-17 8.67362e-19 5.83149e-01 -4.84503e-19 -5.42101e-20 1.80249e-18 -1.35525e-18 + -2.48011e-18 +Row 19 + 6.96122e-01 4.68375e-17 -5.29091e-17 8.34836e-18 3.14419e-18 -9.05309e-18 2.62919e-18 0.00000e+00 +Row 20 + 6.96122e-01 -7.80626e-18 1.30104e-18 3.19840e-18 0.00000e+00 -2.57498e-18 5.48877e-18 +Row 21 + 6.96122e-01 -3.21195e-18 0.00000e+00 -1.62630e-18 -4.44523e-18 -2.91379e-18 +Row 22 + 9.91168e-01 -2.23617e-18 2.94429e-18 4.32444e-17 1.48739e-18 +Row 23 + 1.13701e+00 -2.29038e-18 -2.98156e-19 -3.06626e-19 +Row 24 + 1.13701e+00 -9.04631e-19 -2.79182e-18 +Row 25 + 9.91168e-01 2.16091e-20 +Row 26 + 1.13701e+00 +#------------------------------------------------------------------------ +# ionic step 2 +# filename OUT.autotest/sk_nao.txt +# gamma only 1 +# rows 26 +# columns 26 +#------------------------------------------------------------------------ +Row 1 + 1.48885e+00 1.85694e+00 -1.34848e-17 6.07695e-17 4.77456e-17 -6.35478e-17 -2.30501e-16 -1.85385e-16 + -3.56855e-18 -5.48877e-18 3.51010e-18 -3.21059e-17 2.27208e-17 1.23629e+00 2.25011e+00 3.55178e-04 + 5.90487e-04 1.24492e-04 4.28563e-04 7.11768e-04 1.51827e-04 -1.15453e-06 5.48551e-04 2.46587e-03 + 5.95842e-06 1.49023e-03 +Row 2 + 4.31653e+00 -3.84350e-17 5.24754e-17 1.42952e-16 -1.47451e-17 9.71445e-17 -6.67869e-17 2.36763e-17 + -4.55365e-18 1.10589e-17 -7.47015e-17 4.55365e-18 2.25011e+00 3.67665e+00 -4.79392e-04 -7.97562e-04 + -1.66751e-04 -5.39661e-04 -8.97294e-04 -1.88913e-04 1.57125e-06 -8.79829e-04 -3.96682e-03 -8.10910e-06 + -2.39668e-03 +Row 3 + 5.44536e-01 -8.45678e-18 2.21448e-17 5.83149e-01 -3.81639e-17 -1.65883e-17 1.12147e-18 9.05309e-17 + 2.60344e-17 5.96311e-19 6.72205e-18 -3.55178e-04 4.79392e-04 -1.24838e-01 5.48802e-04 2.46888e-03 + -1.17064e-01 4.87005e-04 2.19831e-03 -1.79153e-03 4.75245e-04 1.17592e-04 -1.72936e-08 -4.82737e-01 +Row 4 + 5.44536e-01 9.12898e-17 -3.81639e-17 5.83149e-01 -7.37257e-17 6.27753e-17 1.33154e-17 6.83047e-18 + -7.58942e-18 -4.59685e-17 -5.90487e-04 7.97562e-04 5.48802e-04 -1.24830e-01 1.49195e-03 4.87005e-04 + -1.17055e-01 1.32804e-03 1.48203e-03 2.90121e-04 -4.82737e-01 -2.56697e-03 1.17583e-04 +Row 5 + 5.44536e-01 -1.65883e-17 -7.37257e-17 5.83149e-01 1.37999e-17 6.83047e-18 1.85670e-18 -3.42676e-17 + -4.06440e-17 -1.24492e-04 1.66751e-04 2.46888e-03 1.49195e-03 -1.24842e-01 2.19831e-03 1.32804e-03 + -1.17068e-01 3.30013e-04 -4.82737e-01 2.90156e-04 5.71591e-04 4.75264e-04 +Row 6 + 6.96122e-01 3.29597e-17 4.07660e-17 1.84314e-18 -1.48536e-17 -4.14707e-17 2.79182e-18 -9.54098e-18 + -4.28563e-04 5.39661e-04 -1.17064e-01 4.87005e-04 2.19831e-03 -6.46215e-02 4.09418e-04 1.86883e-03 + -1.79747e-03 1.26928e-03 2.91200e-04 -4.08999e-08 -4.19167e-01 +Row 7 + 6.96122e-01 3.46945e-17 -1.02240e-16 -2.76472e-18 -9.54098e-18 4.69731e-17 -2.11419e-18 -7.11768e-04 + 8.97294e-04 4.87005e-04 -1.17055e-01 1.32804e-03 4.09418e-04 -6.46140e-02 1.12787e-03 1.48692e-03 + 7.69230e-04 -4.19167e-01 -2.57547e-03 2.91180e-04 +Row 8 + 6.96122e-01 -1.24277e-17 -9.54098e-18 -1.19262e-18 4.21484e-17 1.01820e-16 -1.51827e-04 1.88913e-04 + 2.19831e-03 1.32804e-03 -1.17068e-01 1.86883e-03 1.12787e-03 -6.46252e-02 3.31113e-04 -4.19167e-01 + 7.69312e-04 5.73485e-04 1.26932e-03 +Row 9 + 9.91168e-01 -7.45389e-19 3.76083e-19 8.49591e-17 3.33155e-17 -1.15453e-06 1.57125e-06 1.79153e-03 + -1.48203e-03 -3.30013e-04 1.79747e-03 -1.48692e-03 -3.31113e-04 -5.10922e-01 -6.05774e-06 -1.33026e-06 + -1.76263e-05 4.43587e-06 +Row 10 + 1.13701e+00 1.31053e-17 -7.51826e-18 -8.62110e-18 5.48551e-04 -8.79829e-04 -4.75245e-04 -2.90121e-04 + 4.82737e-01 -1.26928e-03 -7.69230e-04 4.19167e-01 -6.05774e-06 1.32221e-01 2.17786e-03 -1.04671e-05 + 3.60087e-03 +Row 11 + 1.13701e+00 -1.09979e-17 5.71917e-18 2.46587e-03 -3.96682e-03 -1.17592e-04 4.82737e-01 -2.90156e-04 + -2.91200e-04 4.19167e-01 -7.69312e-04 -1.33026e-06 2.17786e-03 1.32237e-01 2.36050e-06 8.08017e-04 +Row 12 + 9.91168e-01 -6.89463e-19 5.95842e-06 -8.10910e-06 1.72936e-08 2.56697e-03 -5.71591e-04 4.08999e-08 + 2.57547e-03 -5.73485e-04 -1.76263e-05 -1.04671e-05 2.36050e-06 -5.10916e-01 5.13066e-08 +Row 13 + 1.13701e+00 1.49023e-03 -2.39668e-03 4.82737e-01 -1.17583e-04 -4.75264e-04 4.19167e-01 -2.91180e-04 + -1.26932e-03 4.43587e-06 3.60087e-03 8.08017e-04 5.13066e-08 1.32226e-01 +Row 14 + 1.48885e+00 1.85694e+00 -1.51504e-16 8.97177e-17 1.28464e-16 2.93805e-16 -1.79327e-16 -2.05334e-16 + -1.91540e-17 -9.01243e-18 -1.37152e-17 -4.08151e-17 -5.02799e-18 +Row 15 + 4.31653e+00 -1.13028e-16 7.37257e-18 3.97360e-17 -1.74340e-16 6.59195e-17 -2.16840e-17 -2.51128e-17 + -4.77049e-18 -2.64545e-17 -1.05628e-16 -4.39102e-18 +Row 16 + 5.44536e-01 3.64292e-17 -1.34170e-17 5.83149e-01 3.46945e-17 1.46476e-16 2.57600e-17 4.88433e-17 + 4.56585e-17 -2.01458e-17 -1.87838e-17 +Row 17 + 5.44536e-01 -1.85399e-17 3.46945e-17 5.83149e-01 -4.77049e-18 2.44488e-17 -3.18417e-17 -1.87296e-17 + -4.21822e-17 3.01425e-17 +Row 18 + 5.44536e-01 1.46476e-16 -4.77049e-18 5.83149e-01 2.34764e-17 -1.87296e-17 -1.25361e-17 4.38018e-17 + 2.53907e-17 +Row 19 + 6.96122e-01 8.84709e-17 -1.01481e-16 -7.54605e-17 6.78711e-17 6.26127e-17 2.30664e-17 2.74303e-17 +Row 20 + 6.96122e-01 -5.03070e-17 -5.96311e-17 -3.73779e-17 2.72135e-17 8.47846e-17 2.59124e-17 +Row 21 + 6.96122e-01 -5.05916e-17 2.72135e-17 -8.40257e-17 -9.99363e-17 5.90755e-17 +Row 22 + 9.91168e-01 4.06305e-17 3.54907e-17 3.79539e-17 1.84585e-17 +Row 23 + 1.13701e+00 1.26987e-17 1.01881e-17 1.52991e-17 +Row 24 + 1.13701e+00 1.98782e-17 -3.22279e-17 +Row 25 + 9.91168e-01 3.71455e-20 +Row 26 + 1.13701e+00 diff --git a/tests/02_NAO_Gamma/md_out_hk_syns/INPUT b/tests/02_NAO_Gamma/md_out_hk_syns/INPUT new file mode 100644 index 0000000000..b3ad0c1822 --- /dev/null +++ b/tests/02_NAO_Gamma/md_out_hk_syns/INPUT @@ -0,0 +1,33 @@ +INPUT_PARAMETERS +#Parameters (General) +suffix autotest +nbands 8 +calculation md +basis_type lcao +gamma_only 1 +out_mat_hs 1 5 + +#Parameters (Accuracy) +ecutwfc 5 +scf_nmax 50 +scf_thr 1.0e-8 + +cal_stress 1 +stress_thr 1e-6 +cal_force 1 +force_thr_ev 1.0e-3 + +mixing_type broyden +mixing_beta 0.7 + +md_nstep 2 +md_tchain 4 +md_tfirst 10 +md_tfreq 0.1 +init_vel 1 +cal_syns 1 + +chg_extrap first-order + +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB diff --git a/tests/02_NAO_Gamma/md_out_hk_syns/STRU b/tests/02_NAO_Gamma/md_out_hk_syns/STRU new file mode 100644 index 0000000000..6fc39c63ca --- /dev/null +++ b/tests/02_NAO_Gamma/md_out_hk_syns/STRU @@ -0,0 +1,22 @@ +ATOMIC_SPECIES +Si 1 Si_ONCV_PBE-1.0.upf + +NUMERICAL_ORBITAL +Si_gga_8au_60Ry_2s2p1d.orb + +LATTICE_CONSTANT +10.2 + +LATTICE_VECTORS +0 0.5 0.5 #latvec1 +0.5 0 0.5 #latvec2 +0.5 0.5 0 #latvec3 + +ATOMIC_POSITIONS +Cartesian + +Si #label +0 #magnetism +2 #number of atoms +0 0 0 m 1 1 1 v 0.000135711648533 3.02182240507e-05 -8.2024241958e-05 +0.25 0.25 0.25 m 1 1 1 v -0.000135711648533 -3.02182240507e-05 8.2024241958e-05 diff --git a/tests/02_NAO_Gamma/md_out_hk_syns/hk_nao.txt.ref b/tests/02_NAO_Gamma/md_out_hk_syns/hk_nao.txt.ref new file mode 100644 index 0000000000..2b21e72d56 --- /dev/null +++ b/tests/02_NAO_Gamma/md_out_hk_syns/hk_nao.txt.ref @@ -0,0 +1,178 @@ +#------------------------------------------------------------------------ +# ionic step 1 +# filename OUT.autotest/hk_nao.txt +# gamma only 1 +# rows 26 +# columns 26 +#------------------------------------------------------------------------ +Row 1 + -3.31964e-01 -7.79031e-01 -3.88578e-16 8.88178e-16 1.11022e-16 -1.11022e-16 3.33067e-16 -2.22045e-16 + -1.11634e-15 6.93889e-17 1.94289e-16 2.22411e-16 1.94289e-16 -5.55603e-01 -4.17914e-01 -2.22045e-16 + 4.09395e-16 -1.11022e-16 3.94650e-16 -8.58688e-17 -6.99094e-16 1.31213e-15 1.24900e-16 -6.80012e-16 + 6.00266e-16 4.99600e-16 +Row 2 + 8.97102e-01 -1.24900e-16 4.71845e-16 1.24900e-16 8.32667e-17 6.66134e-16 8.88178e-16 -1.07139e-15 + -1.31839e-16 6.17562e-16 -2.25582e-16 -6.93889e-17 -4.17914e-01 9.78300e-02 4.99167e-16 1.25811e-15 + -1.09721e-16 -7.42462e-16 5.20417e-17 -9.36751e-17 1.98278e-15 2.56739e-16 4.85723e-17 1.08715e-15 + -1.04777e-15 +Row 3 + 3.88003e-01 -2.08167e-16 -2.18575e-16 4.20473e-01 4.99600e-16 1.31839e-16 4.71845e-16 -2.77556e-16 + -4.99600e-16 1.17725e-16 6.39674e-02 -2.77556e-16 7.77156e-16 -4.12889e-02 -7.28584e-17 1.04083e-17 + -1.32845e-02 4.33681e-18 4.07660e-17 -2.08167e-17 4.68375e-17 -3.29597e-17 4.11676e-18 -1.77608e-01 +Row 4 + 3.88003e-01 -4.16334e-17 2.91434e-16 4.20473e-01 -1.31839e-16 2.77556e-17 2.77556e-17 6.39674e-02 + 3.60822e-16 -3.33067e-16 2.35922e-16 5.27356e-16 -6.93889e-18 -4.12889e-02 7.45931e-17 9.71445e-17 + -1.32845e-02 -4.85723e-17 -5.03070e-17 -1.12757e-16 -1.77608e-01 9.71445e-17 -4.16334e-17 +Row 5 + 3.88003e-01 -2.15106e-16 -1.17961e-16 4.20473e-01 -2.22045e-16 6.39674e-02 -2.77556e-17 -9.15934e-16 + -5.82867e-16 -8.60423e-16 -3.05311e-16 -2.94903e-17 -2.42861e-17 -4.12889e-02 3.90313e-17 -4.85723e-17 + -1.32845e-02 2.42861e-17 -1.77608e-01 -1.49186e-16 5.55112e-17 2.25514e-16 +Row 6 + 7.68029e-01 7.84095e-16 2.49800e-16 1.94289e-15 1.66533e-16 3.33067e-16 1.82932e-17 3.92224e-02 + 3.60822e-16 2.22045e-16 -1.32845e-02 6.24500e-17 1.00614e-16 1.33549e-01 -9.10730e-17 3.98986e-17 + 6.93889e-18 1.80411e-16 7.63278e-17 1.18341e-17 -3.73234e-02 +Row 7 + 7.68029e-01 -4.23273e-16 2.77556e-16 -1.38778e-16 3.92224e-02 -8.32667e-16 3.05311e-16 1.52656e-16 + -1.44329e-15 5.89806e-17 -1.32845e-02 0.00000e+00 -2.68882e-17 1.33549e-01 3.12250e-17 -1.17961e-16 + 6.24500e-17 -3.73234e-02 2.08167e-17 1.38778e-17 +Row 8 + 7.68029e-01 1.11022e-16 3.92224e-02 -2.22045e-16 1.66533e-16 -9.43690e-16 -4.16334e-16 -1.55431e-15 + -3.46945e-17 2.08167e-17 -1.32845e-02 5.98480e-17 2.60209e-17 1.33549e-01 -6.93889e-18 -3.73234e-02 + 5.89806e-17 9.71445e-17 1.24900e-16 +Row 9 + 1.45535e+00 2.77556e-17 4.16334e-17 -3.70272e-16 8.32667e-17 -1.09877e-15 -1.44173e-15 1.56125e-16 + -2.77556e-17 2.42861e-17 1.81279e-16 -4.51028e-17 3.59955e-17 -2.96562e-01 1.94289e-16 -1.38778e-17 + -6.60954e-18 3.60822e-16 +Row 10 + 1.40881e+00 -1.96024e-16 4.16334e-17 -4.57967e-16 8.18789e-16 -1.15186e-15 -3.46945e-18 3.81639e-17 + 1.77608e-01 -3.38271e-17 -2.60209e-17 3.73234e-02 -2.44596e-16 1.12412e-01 -1.04083e-16 -5.49040e-16 + 1.11022e-16 +Row 11 + 1.40881e+00 7.07767e-16 -1.02349e-16 2.28983e-16 0.00000e+00 -1.49186e-16 1.77608e-01 -4.51028e-17 + -4.85723e-17 3.73234e-02 -1.17961e-16 8.67362e-18 -9.71445e-17 1.12412e-01 1.87350e-16 -2.98372e-16 +Row 12 + 1.45535e+00 4.37652e-17 4.28160e-17 -3.63013e-16 -1.57203e-18 1.21431e-16 1.66533e-16 1.25156e-17 + 5.46438e-17 1.39645e-16 -9.96200e-17 2.08167e-16 3.46945e-16 -2.96562e-01 -6.43394e-18 +Row 13 + 1.40881e+00 -3.19189e-16 1.04083e-15 1.77608e-01 5.89806e-17 -2.42861e-17 3.73234e-02 2.08167e-17 + 3.64292e-17 -1.67401e-16 1.04083e-16 1.38778e-16 8.75060e-18 1.12412e-01 +Row 14 + -3.31964e-01 -7.79031e-01 2.11094e-16 6.60062e-16 8.35920e-17 5.36030e-16 9.10730e-16 -1.47451e-16 + 1.66886e-15 -2.98372e-16 -6.31439e-16 1.43386e-15 -6.93889e-17 +Row 15 + 8.97102e-01 8.01442e-16 -9.08995e-16 -2.74086e-16 7.02563e-16 -1.98626e-16 -8.34402e-16 1.57633e-15 + 3.33067e-16 -6.38378e-16 7.56907e-16 -2.91434e-16 +Row 16 + 3.88003e-01 -1.90820e-16 -3.45210e-16 4.20473e-01 6.07153e-17 -7.28584e-17 -7.32053e-16 -7.02563e-17 + 2.75821e-16 5.18808e-17 -6.39674e-02 +Row 17 + 3.88003e-01 1.04083e-17 -2.56739e-16 4.20473e-01 9.19403e-17 -1.91253e-16 -3.07046e-16 -6.39674e-02 + 2.44596e-16 -7.54605e-17 +Row 18 + 3.88003e-01 -2.18575e-16 1.50921e-16 4.20473e-01 -3.06612e-16 -6.39674e-02 -2.94903e-17 -5.57714e-16 + -2.24647e-16 +Row 19 + 7.68029e-01 -8.84709e-17 9.54098e-17 4.46691e-16 2.93168e-16 4.96131e-16 1.49541e-16 -3.92224e-02 +Row 20 + 7.68029e-01 -2.27249e-16 6.31006e-16 -9.07260e-16 -3.92224e-02 4.20670e-16 4.25007e-16 +Row 21 + 7.68029e-01 2.59775e-16 -3.92224e-02 -7.54605e-16 -8.92082e-16 4.51028e-17 +Row 22 + 1.45535e+00 -2.98372e-16 2.42861e-17 1.51048e-16 -1.14492e-16 +Row 23 + 1.40881e+00 1.28370e-16 -3.81639e-17 -4.85723e-17 +Row 24 + 1.40881e+00 -2.15106e-16 -2.63678e-16 +Row 25 + 1.45535e+00 -6.76992e-17 +Row 26 + 1.40881e+00 +#------------------------------------------------------------------------ +# ionic step 2 +# filename OUT.autotest/hk_nao.txt +# gamma only 1 +# rows 26 +# columns 26 +#------------------------------------------------------------------------ +Row 1 + -3.31972e-01 -7.79028e-01 7.14815e-04 1.18601e-03 2.55992e-04 6.52116e-04 1.08206e-03 2.33033e-04 + 1.28838e-06 -4.54117e-04 -2.04375e-03 -6.71044e-06 -1.23501e-03 -5.55607e-01 -4.17914e-01 -2.74459e-04 + -4.55894e-04 -9.72064e-05 -3.70140e-04 -6.13947e-04 -1.32724e-04 3.16152e-07 -1.41443e-04 -6.41178e-04 + -1.66937e-06 -3.87211e-04 +Row 2 + 8.97124e-01 4.13299e-04 6.86166e-04 1.47246e-04 7.09641e-04 1.17530e-03 2.58552e-04 1.75433e-06 + -6.22688e-04 -2.76647e-03 -9.22457e-06 -1.67368e-03 -4.17914e-01 9.78582e-02 -8.06321e-04 -1.33802e-03 + -2.88550e-04 -9.84117e-04 -1.63254e-03 -3.52887e-04 2.08194e-06 -1.13650e-03 -5.12933e-03 -1.07335e-05 + -3.09869e-03 +Row 3 + 3.87997e-01 1.40062e-04 6.34089e-04 4.20466e-01 1.25482e-04 5.71666e-04 -3.25354e-04 -1.17980e-03 + -2.58013e-04 9.05124e-08 6.39657e-02 2.74459e-04 8.06321e-04 -4.12849e-02 8.86212e-05 3.86770e-04 + -1.32862e-02 -1.30746e-05 -5.42741e-05 -7.55665e-04 -2.76819e-05 -1.60987e-06 7.93538e-09 -1.77600e-01 +Row 4 + 3.88000e-01 3.82956e-04 1.25448e-04 4.20468e-01 3.45051e-04 2.70808e-04 -7.11922e-04 6.39648e-02 + -4.68990e-04 -2.58010e-04 4.55894e-04 1.33802e-03 8.86212e-05 -4.12828e-02 2.34402e-04 -1.30004e-05 + -1.32865e-02 -3.30227e-05 6.24888e-04 -1.55625e-05 -1.77599e-01 -1.08234e-03 -1.59499e-06 +Row 5 + 3.87995e-01 5.71685e-04 3.45096e-04 4.20465e-01 5.62924e-05 6.39661e-02 -7.11918e-04 9.75467e-05 + -1.17979e-03 9.72064e-05 2.88550e-04 3.86770e-04 2.34402e-04 -4.12859e-02 -5.43036e-05 -3.31051e-05 + -1.32860e-02 1.39674e-04 -1.77601e-01 -1.56254e-05 2.41913e-04 -2.77144e-05 +Row 6 + 7.68024e-01 1.19285e-04 5.38466e-04 -3.73100e-04 -8.94455e-04 -1.92126e-04 -3.43987e-07 3.92232e-02 + 3.70140e-04 9.84117e-04 -1.32862e-02 -1.30004e-05 -5.43036e-05 1.33536e-01 -1.55736e-04 -6.60403e-04 + -2.46721e-04 1.23777e-03 2.77104e-04 -1.10668e-07 -3.73205e-02 +Row 7 + 7.68027e-01 3.25302e-04 3.10059e-04 -5.39006e-04 3.92242e-02 -5.37339e-04 -1.92200e-04 6.13947e-04 + 1.63254e-03 -1.30746e-05 -1.32865e-02 -3.31051e-05 -1.55736e-04 1.33532e-01 -4.01356e-04 2.03797e-04 + 7.48369e-04 -3.73229e-02 -3.53085e-04 2.76976e-04 +Row 8 + 7.68023e-01 6.53686e-05 3.92227e-02 -5.38768e-04 1.13042e-04 -8.94297e-04 1.32724e-04 3.52887e-04 + -5.42741e-05 -3.30227e-05 -1.32860e-02 -6.60403e-04 -4.01356e-04 1.33538e-01 4.59822e-05 -3.73193e-02 + 7.48582e-04 7.95927e-05 1.23788e-03 +Row 9 + 1.45534e+00 1.53190e-04 6.95610e-04 -3.65605e-06 -8.39995e-04 3.16152e-07 2.08194e-06 7.55665e-04 + -6.24888e-04 -1.39674e-04 2.46721e-04 -2.03797e-04 -4.59822e-05 -2.96551e-01 -5.05300e-05 -2.09671e-04 + -1.31286e-05 2.55347e-04 +Row 10 + 1.40881e+00 4.37693e-04 2.65290e-04 7.22287e-04 -1.41443e-04 -1.13650e-03 2.76819e-05 1.55625e-05 + 1.77601e-01 -1.23777e-03 -7.48369e-04 3.73193e-02 -5.05300e-05 1.12402e-01 8.72775e-04 -8.75043e-05 + 1.44211e-03 +Row 11 + 1.40880e+00 -1.20483e-03 1.65486e-04 -6.41178e-04 -5.12933e-03 1.60987e-06 1.77599e-01 1.56254e-05 + -2.77104e-04 3.73229e-02 -7.48582e-04 -2.09671e-04 8.72775e-04 1.12414e-01 3.63226e-04 3.26091e-04 +Row 12 + 1.45534e+00 -1.93978e-08 -1.66937e-06 -1.07335e-05 -7.93538e-09 1.08234e-03 -2.41913e-04 1.10668e-07 + 3.53085e-04 -7.95927e-05 -1.31286e-05 -8.75043e-05 3.63226e-04 -2.96546e-01 6.31528e-08 +Row 13 + 1.40881e+00 -3.87211e-04 -3.09869e-03 1.77600e-01 1.59499e-06 2.77144e-05 3.73205e-02 -2.76976e-04 + -1.23788e-03 2.55347e-04 1.44211e-03 3.26091e-04 6.31528e-08 1.12406e-01 +Row 14 + -3.31972e-01 -7.79028e-01 -7.14815e-04 -1.18601e-03 -2.55992e-04 -6.52116e-04 -1.08206e-03 -2.33033e-04 + 1.28838e-06 -4.54117e-04 -2.04375e-03 -6.71044e-06 -1.23501e-03 +Row 15 + 8.97124e-01 -4.13299e-04 -6.86166e-04 -1.47246e-04 -7.09641e-04 -1.17530e-03 -2.58552e-04 1.75433e-06 + -6.22688e-04 -2.76647e-03 -9.22457e-06 -1.67368e-03 +Row 16 + 3.87997e-01 1.40062e-04 6.34089e-04 4.20466e-01 1.25482e-04 5.71666e-04 3.25354e-04 1.17980e-03 + 2.58013e-04 -9.05124e-08 -6.39657e-02 +Row 17 + 3.88000e-01 3.82956e-04 1.25448e-04 4.20468e-01 3.45051e-04 -2.70808e-04 7.11922e-04 -6.39648e-02 + 4.68990e-04 2.58010e-04 +Row 18 + 3.87995e-01 5.71685e-04 3.45096e-04 4.20465e-01 -5.62924e-05 -6.39661e-02 7.11918e-04 -9.75467e-05 + 1.17979e-03 +Row 19 + 7.68024e-01 1.19285e-04 5.38466e-04 3.73100e-04 8.94455e-04 1.92126e-04 3.43987e-07 -3.92232e-02 +Row 20 + 7.68027e-01 3.25302e-04 -3.10059e-04 5.39006e-04 -3.92242e-02 5.37339e-04 1.92200e-04 +Row 21 + 7.68023e-01 -6.53686e-05 -3.92227e-02 5.38768e-04 -1.13042e-04 8.94297e-04 +Row 22 + 1.45534e+00 1.53190e-04 6.95610e-04 -3.65605e-06 -8.39995e-04 +Row 23 + 1.40881e+00 4.37693e-04 2.65290e-04 7.22287e-04 +Row 24 + 1.40880e+00 -1.20483e-03 1.65486e-04 +Row 25 + 1.45534e+00 -1.93978e-08 +Row 26 + 1.40881e+00 diff --git a/tests/02_NAO_Gamma/md_out_hk_syns/result.ref b/tests/02_NAO_Gamma/md_out_hk_syns/result.ref new file mode 100644 index 0000000000..9380ec04cc --- /dev/null +++ b/tests/02_NAO_Gamma/md_out_hk_syns/result.ref @@ -0,0 +1,8 @@ +etotref -196.6304442823057 +etotperatomref -98.3152221412 +totalforceref 0.717564 +totalstressref 1315.352481 +CompareH_pass 0 +CompareS_pass 0 +CompareSYNS_pass 0 +totaltimeref 0.65 diff --git a/tests/02_NAO_Gamma/md_out_hk_syns/sk_nao.txt.ref b/tests/02_NAO_Gamma/md_out_hk_syns/sk_nao.txt.ref new file mode 100644 index 0000000000..8d0685c854 --- /dev/null +++ b/tests/02_NAO_Gamma/md_out_hk_syns/sk_nao.txt.ref @@ -0,0 +1,178 @@ +#------------------------------------------------------------------------ +# ionic step 1 +# filename OUT.autotest/sk_nao.txt +# gamma only 1 +# rows 26 +# columns 26 +#------------------------------------------------------------------------ +Row 1 + 1.48885e+00 1.85694e+00 1.50298e-17 6.88468e-18 -2.36492e-17 1.00384e-16 4.09828e-17 -4.11861e-17 + 1.20440e-17 -2.12775e-18 9.48677e-20 -3.03848e-17 -6.11897e-18 1.23629e+00 2.25011e+00 1.25400e-16 + 3.90696e-17 -4.36222e-18 -1.23450e-16 -6.48649e-17 6.48861e-17 5.65987e-17 7.06637e-19 8.47965e-18 + 4.95197e-17 2.35825e-17 +Row 2 + 4.31653e+00 7.86589e-17 1.08420e-17 -3.96276e-17 -3.55618e-17 -5.20417e-17 -8.58688e-17 3.03983e-17 + -3.57787e-18 -4.77049e-18 -8.45678e-17 1.40946e-18 2.25011e+00 3.67664e+00 -5.28278e-17 -1.00353e-16 + 1.02837e-16 -2.69262e-16 3.84011e-17 1.30917e-17 -7.82523e-17 1.54296e-17 -3.71339e-18 -1.51241e-16 + -1.15264e-17 +Row 3 + 5.44536e-01 1.10589e-17 -1.03812e-17 5.83149e-01 -2.42861e-17 2.85145e-17 4.43845e-19 7.04731e-19 + -2.53432e-18 5.42101e-19 -5.42101e-20 -1.25400e-16 5.28278e-17 -1.24841e-01 -5.58517e-17 1.37660e-17 + -1.17065e-01 -2.78979e-17 -4.05898e-17 -3.03102e-17 -2.33866e-18 5.04832e-19 -7.17437e-19 -4.82752e-01 +Row 4 + 5.44536e-01 -6.50521e-18 -2.42861e-17 5.83149e-01 8.67362e-19 4.87891e-19 6.48488e-18 -5.42101e-20 + -4.60786e-19 5.83606e-18 -3.90696e-17 1.00353e-16 -5.58517e-17 -1.24841e-01 6.18385e-17 -2.78979e-17 + -1.17065e-01 4.95379e-17 2.29461e-18 1.69457e-17 -4.82752e-01 -1.11861e-17 -1.63689e-18 +Row 5 + 5.44536e-01 2.85145e-17 8.67362e-19 5.83149e-01 -4.84503e-19 -5.42101e-20 1.80249e-18 -1.35525e-18 + -2.48011e-18 4.36222e-18 -1.02837e-16 1.37660e-17 6.18385e-17 -1.24841e-01 -4.05898e-17 4.95379e-17 + -1.17065e-01 4.80776e-18 -4.82752e-01 -8.40765e-18 -1.76522e-17 -8.61433e-19 +Row 6 + 6.96122e-01 4.68375e-17 -5.29091e-17 8.34836e-18 3.14419e-18 -9.05309e-18 2.62919e-18 0.00000e+00 + 1.23450e-16 2.69262e-16 -1.17065e-01 -2.78979e-17 -4.05898e-17 -6.46175e-02 2.56414e-17 1.96241e-17 + 1.85941e-17 -1.39252e-17 -1.35796e-17 1.20617e-18 -4.19177e-01 +Row 7 + 6.96122e-01 -7.80626e-18 1.30104e-18 3.19840e-18 0.00000e+00 -2.57498e-18 5.48877e-18 6.48649e-17 + -3.84011e-17 -2.78979e-17 -1.17065e-01 4.95379e-17 2.56414e-17 -6.46175e-02 -1.10318e-17 6.36969e-19 + -1.88685e-17 -4.19177e-01 7.40053e-18 1.81858e-17 +Row 8 + 6.96122e-01 -3.21195e-18 0.00000e+00 -1.62630e-18 -4.44523e-18 -2.91379e-18 -6.48861e-17 -1.30917e-17 + -4.05898e-17 4.95379e-17 -1.17065e-01 1.96241e-17 -1.10318e-17 -6.46175e-02 3.91668e-18 -4.19177e-01 + -1.15332e-17 2.62648e-17 -1.16467e-17 +Row 9 + 9.91168e-01 -2.23617e-18 2.94429e-18 4.32444e-17 1.48739e-18 5.65987e-17 -7.82523e-17 3.03102e-17 + -2.29461e-18 -4.80776e-18 -1.85941e-17 -6.36969e-19 -3.91668e-18 -5.10937e-01 -7.31921e-18 6.99310e-18 + -6.37714e-17 -1.47968e-17 +Row 10 + 1.13701e+00 -2.29038e-18 -2.98156e-19 -3.06626e-19 7.06637e-19 1.54296e-17 2.33866e-18 -1.69457e-17 + 4.82752e-01 1.39252e-17 1.88685e-17 4.19177e-01 -7.31921e-18 1.32237e-01 1.45266e-17 1.31640e-17 + -5.73399e-18 +Row 11 + 1.13701e+00 -9.04631e-19 -2.79182e-18 8.47965e-18 -3.71339e-18 -5.04832e-19 4.82752e-01 8.40765e-18 + 1.35796e-17 4.19177e-01 1.15332e-17 6.99310e-18 1.45266e-17 1.32237e-01 1.70262e-17 -6.55604e-19 +Row 12 + 9.91168e-01 2.16091e-20 4.95197e-17 -1.51241e-16 7.17437e-19 1.11861e-17 1.76522e-17 -1.20617e-18 + -7.40053e-18 -2.62648e-17 -6.37714e-17 1.31640e-17 1.70262e-17 -5.10937e-01 -2.84074e-19 +Row 13 + 1.13701e+00 2.35825e-17 -1.15264e-17 4.82752e-01 1.63689e-18 8.61433e-19 4.19177e-01 -1.81858e-17 + 1.16467e-17 -1.47968e-17 -5.73399e-18 -6.55604e-19 -2.84074e-19 1.32237e-01 +Row 14 + 1.48885e+00 1.85694e+00 1.50298e-17 6.88468e-18 -2.36492e-17 1.00384e-16 4.09828e-17 -4.11861e-17 + 1.20440e-17 -2.12775e-18 9.48677e-20 -3.03848e-17 -6.11897e-18 +Row 15 + 4.31653e+00 7.86589e-17 1.08420e-17 -3.96276e-17 -3.55618e-17 -5.20417e-17 -8.58688e-17 3.03983e-17 + -3.57787e-18 -4.77049e-18 -8.45678e-17 1.40946e-18 +Row 16 + 5.44536e-01 1.10589e-17 -1.03812e-17 5.83149e-01 -2.42861e-17 2.85145e-17 4.43845e-19 7.04731e-19 + -2.53432e-18 5.42101e-19 -5.42101e-20 +Row 17 + 5.44536e-01 -6.50521e-18 -2.42861e-17 5.83149e-01 8.67362e-19 4.87891e-19 6.48488e-18 -5.42101e-20 + -4.60786e-19 5.83606e-18 +Row 18 + 5.44536e-01 2.85145e-17 8.67362e-19 5.83149e-01 -4.84503e-19 -5.42101e-20 1.80249e-18 -1.35525e-18 + -2.48011e-18 +Row 19 + 6.96122e-01 4.68375e-17 -5.29091e-17 8.34836e-18 3.14419e-18 -9.05309e-18 2.62919e-18 0.00000e+00 +Row 20 + 6.96122e-01 -7.80626e-18 1.30104e-18 3.19840e-18 0.00000e+00 -2.57498e-18 5.48877e-18 +Row 21 + 6.96122e-01 -3.21195e-18 0.00000e+00 -1.62630e-18 -4.44523e-18 -2.91379e-18 +Row 22 + 9.91168e-01 -2.23617e-18 2.94429e-18 4.32444e-17 1.48739e-18 +Row 23 + 1.13701e+00 -2.29038e-18 -2.98156e-19 -3.06626e-19 +Row 24 + 1.13701e+00 -9.04631e-19 -2.79182e-18 +Row 25 + 9.91168e-01 2.16091e-20 +Row 26 + 1.13701e+00 +#------------------------------------------------------------------------ +# ionic step 2 +# filename OUT.autotest/sk_nao.txt +# gamma only 1 +# rows 26 +# columns 26 +#------------------------------------------------------------------------ +Row 1 + 1.48885e+00 1.85694e+00 -1.34848e-17 1.16281e-16 3.25125e-17 -6.35478e-17 -2.30501e-16 1.21566e-17 + 5.10507e-18 -5.48877e-18 4.06576e-20 -4.59837e-17 -9.75104e-18 1.23629e+00 2.25011e+00 3.55178e-04 + 5.90487e-04 1.24492e-04 4.28563e-04 7.11768e-04 1.51827e-04 -1.15453e-06 5.48551e-04 2.46587e-03 + 5.95842e-06 1.49023e-03 +Row 2 + 4.31653e+00 -3.84350e-17 5.42101e-17 2.28225e-17 -1.47451e-17 9.71445e-17 7.80626e-18 9.90690e-18 + -4.55365e-18 -4.87891e-18 -1.05927e-16 -5.74627e-18 2.25011e+00 3.67665e+00 -4.79392e-04 -7.97562e-04 + -1.66751e-04 -5.39661e-04 -8.97294e-04 -1.88913e-04 1.57125e-06 -8.79829e-04 -3.96682e-03 -8.10910e-06 + -2.39668e-03 +Row 3 + 5.44536e-01 -8.45678e-18 -9.08019e-18 5.83149e-01 -3.81639e-17 2.24430e-17 -5.04832e-19 7.66531e-17 + -2.58853e-18 5.96311e-19 -4.98733e-18 -3.55178e-04 4.79392e-04 -1.24838e-01 5.48802e-04 2.46888e-03 + -1.17064e-01 4.87005e-04 2.19831e-03 -1.79153e-03 4.75245e-04 1.17592e-04 -1.72936e-08 -4.82737e-01 +Row 4 + 5.44536e-01 -1.77809e-17 -3.81639e-17 5.83149e-01 7.63278e-17 4.54823e-17 6.48488e-18 -4.87891e-18 + -2.16840e-17 -8.00107e-18 -5.90487e-04 7.97562e-04 5.48802e-04 -1.24830e-01 1.49195e-03 4.87005e-04 + -1.17055e-01 1.32804e-03 1.48203e-03 2.90121e-04 -4.82737e-01 -2.56697e-03 1.17583e-04 +Row 5 + 5.44536e-01 2.24430e-17 7.63278e-17 5.83149e-01 -6.20028e-19 -4.87891e-18 1.74828e-18 -1.32815e-18 + -1.26716e-17 -1.24492e-04 1.66751e-04 2.46888e-03 1.49195e-03 -1.24842e-01 2.19831e-03 1.32804e-03 + -1.17068e-01 3.30013e-04 -4.82737e-01 2.90156e-04 5.71591e-04 4.75264e-04 +Row 6 + 6.96122e-01 3.29597e-17 -1.12757e-17 -5.42101e-18 1.96241e-17 4.82470e-18 2.79182e-18 7.37257e-18 + -4.28563e-04 5.39661e-04 -1.17064e-01 4.87005e-04 2.19831e-03 -6.46215e-02 4.09418e-04 1.86883e-03 + -1.79747e-03 1.26928e-03 2.91200e-04 -4.08999e-08 -4.19167e-01 +Row 7 + 6.96122e-01 -6.33174e-17 -1.09288e-16 -2.98156e-18 7.37257e-18 6.13929e-17 4.43168e-18 -7.11768e-04 + 8.97294e-04 4.87005e-04 -1.17055e-01 1.32804e-03 4.09418e-04 -6.46140e-02 1.12787e-03 1.48692e-03 + 7.69230e-04 -4.19167e-01 -2.57547e-03 2.91180e-04 +Row 8 + 6.96122e-01 4.16063e-18 7.37257e-18 -1.19262e-18 -4.49944e-18 1.00953e-16 -1.51827e-04 1.88913e-04 + 2.19831e-03 1.32804e-03 -1.17068e-01 1.86883e-03 1.12787e-03 -6.46252e-02 3.31113e-04 -4.19167e-01 + 7.69312e-04 5.73485e-04 1.26932e-03 +Row 9 + 9.91168e-01 -6.77626e-19 2.86975e-18 9.53674e-17 4.83486e-18 -1.15453e-06 1.57125e-06 1.79153e-03 + -1.48203e-03 -3.30013e-04 1.79747e-03 -1.48692e-03 -3.31113e-04 -5.10922e-01 -6.05774e-06 -1.33026e-06 + -1.76263e-05 4.43587e-06 +Row 10 + 1.13701e+00 4.91957e-18 -7.44373e-18 3.62361e-18 5.48551e-04 -8.79829e-04 -4.75245e-04 -2.90121e-04 + 4.82737e-01 -1.26928e-03 -7.69230e-04 4.19167e-01 -6.05774e-06 1.32221e-01 2.17786e-03 -1.04671e-05 + 3.60087e-03 +Row 11 + 1.13701e+00 -6.94567e-19 5.61075e-18 2.46587e-03 -3.96682e-03 -1.17592e-04 4.82737e-01 -2.90156e-04 + -2.91200e-04 4.19167e-01 -7.69312e-04 -1.33026e-06 2.17786e-03 1.32237e-01 2.36050e-06 8.08017e-04 +Row 12 + 9.91168e-01 -3.10902e-18 5.95842e-06 -8.10910e-06 1.72936e-08 2.56697e-03 -5.71591e-04 4.08999e-08 + 2.57547e-03 -5.73485e-04 -1.76263e-05 -1.04671e-05 2.36050e-06 -5.10916e-01 5.13066e-08 +Row 13 + 1.13701e+00 1.49023e-03 -2.39668e-03 4.82737e-01 -1.17583e-04 -4.75264e-04 4.19167e-01 -2.91180e-04 + -1.26932e-03 4.43587e-06 3.60087e-03 8.08017e-04 5.13066e-08 1.32226e-01 +Row 14 + 1.48885e+00 1.85694e+00 -7.76763e-17 7.57315e-17 1.30158e-16 1.06442e-16 -2.34621e-16 -1.83013e-16 + -1.86686e-18 -5.54298e-18 -3.57787e-18 -3.55652e-17 -4.91957e-18 +Row 15 + 4.31653e+00 -8.65735e-17 6.07153e-17 8.14236e-17 3.36753e-16 1.28370e-16 -9.10730e-18 -8.60314e-17 + -4.33681e-18 -1.30104e-17 -9.74156e-17 -4.28260e-18 +Row 16 + 5.44536e-01 -5.20417e-18 -2.11962e-17 5.83149e-01 -1.99493e-17 7.28042e-17 -1.60564e-17 6.97142e-17 + 6.62041e-17 -2.16840e-19 -1.23057e-17 +Row 17 + 5.44536e-01 -2.14672e-17 -1.99493e-17 5.83149e-01 3.03577e-18 4.19044e-17 8.00277e-18 -1.22515e-17 + -3.68968e-17 3.90889e-17 +Row 18 + 5.44536e-01 7.28042e-17 3.03577e-18 5.83149e-01 4.06677e-17 -1.22515e-17 4.78404e-18 6.81014e-17 + 8.09763e-18 +Row 19 + 6.96122e-01 6.07153e-17 -8.17488e-17 6.91721e-17 1.14925e-17 1.34441e-17 7.15573e-18 1.85399e-17 +Row 20 + 6.96122e-01 -7.89299e-17 -1.08529e-16 -4.14707e-18 1.83230e-17 7.34276e-17 2.51467e-17 +Row 21 + 6.96122e-01 -9.89199e-17 1.83230e-17 -1.82688e-17 -1.26039e-16 1.00899e-16 +Row 22 + 9.91168e-01 7.99599e-19 3.28310e-18 3.65647e-17 1.79300e-17 +Row 23 + 1.13701e+00 1.34034e-17 -7.09475e-18 7.10999e-18 +Row 24 + 1.13701e+00 2.66307e-18 4.17418e-18 +Row 25 + 9.91168e-01 1.79660e-21 +Row 26 + 1.13701e+00 diff --git a/tests/02_NAO_Gamma/md_out_hk_syns/syns_nao.csr.ref b/tests/02_NAO_Gamma/md_out_hk_syns/syns_nao.csr.ref new file mode 100644 index 0000000000..166a780754 --- /dev/null +++ b/tests/02_NAO_Gamma/md_out_hk_syns/syns_nao.csr.ref @@ -0,0 +1,346 @@ +IONIC_STEP: 1 +Matrix Dimension of S_async(R): 26 +Matrix number of S_async(R): 1 + #----------------------------------------------------------------------# + # CSR Format # + # The outer loop corresponds to the number of Bravais lattice vectors. # + # The first line contains the index of the Bravais lattice vector # + # (Rx, Ry, Rz), followed by the number of non-zero elements. # + # The subsequent lines consist of three blocks of data, which are # + # values, column indices, row pointers. # + #----------------------------------------------------------------------# + + 0 0 0 672 + # CSR values + 1.48884702e+00 1.85694239e+00 6.18410216e-04 1.02317953e-03 2.27825967e-04 5.31949313e-04 + 8.80126883e-04 1.95973296e-04 -3.46325130e-08 -4.65312700e-07 -1.03607636e-07 1.78729142e-07 + -1.71423348e-07 1.23628926e+00 2.25011133e+00 -1.79623656e-04 -2.96479664e-04 -6.77644829e-05 + -2.16219916e-04 -3.57062591e-04 -8.11718240e-05 -2.88642704e-07 -2.74679535e-04 -1.23304119e-03 + 1.48962708e-06 -7.45280058e-04 1.85694239e+00 4.31652581e+00 -8.55474517e-04 -1.41541011e-03 + -3.15161843e-04 -6.70323180e-04 -1.10907120e-03 -2.46951009e-04 2.84840274e-07 -8.47693755e-07 + -1.88752173e-07 -1.46999884e-06 -3.12295755e-07 2.25011133e+00 3.67664181e+00 2.42849251e-04 + 4.00695387e-04 9.19329690e-05 2.72995970e-04 4.50568777e-04 1.03049703e-04 3.92825612e-07 + 4.42631910e-04 1.98404692e-03 -2.02729662e-06 1.19936645e-03 -6.18410216e-04 8.55474517e-04 + 5.44530326e-01 -3.18722267e-06 -7.09681414e-07 5.83143304e-01 -3.51939596e-06 -7.83645652e-07 + -1.34332057e-03 -2.33089470e-03 -5.19007331e-04 3.42358410e-09 3.81978048e-09 1.79623656e-04 + -2.42849251e-04 -1.24840188e-01 -2.75135667e-04 -1.23461686e-03 -1.17065004e-01 -2.45460287e-04 + -1.09960094e-03 8.95769861e-04 -2.35566958e-04 -4.95120502e-05 2.16335581e-09 -4.82748090e-01 + -1.02317953e-03 1.41541011e-03 -3.18722267e-06 5.44527701e-01 -1.17419129e-06 -3.51939596e-06 + 5.83139932e-01 -1.29656643e-06 1.11127833e-03 -1.40878816e-03 3.81978048e-09 -1.92478677e-03 + -5.19005646e-04 2.96479664e-04 -4.00695387e-04 -2.75135667e-04 -1.24838174e-01 -7.46258545e-04 + -2.45460287e-04 -1.17062891e-01 -6.64750516e-04 -7.41034221e-04 -1.41651798e-04 -4.82748090e-01 + 1.28351130e-03 -4.95109811e-05 -2.27825967e-04 3.15161843e-04 -7.09681414e-07 -1.17419129e-06 + 5.44531631e-01 -7.83645652e-07 -1.29656643e-06 5.83144981e-01 2.47443628e-04 3.81978048e-09 + -1.40879501e-03 4.28586620e-04 -2.33089846e-03 6.77644829e-05 -9.19329690e-05 -1.23461686e-03 + -7.46258545e-04 -1.24841190e-01 -1.09960094e-03 -6.64750516e-04 -1.17066054e-01 -1.65004430e-04 + -4.82748090e-01 -1.41656124e-04 -2.85794987e-04 -2.35569334e-04 -5.31949313e-04 6.70323180e-04 + 5.83143304e-01 -3.51939596e-06 -7.83645652e-07 6.96112581e-01 -5.32399289e-06 -1.18546653e-06 + -1.90724848e-03 -2.92521245e-03 -6.51341920e-04 7.82857996e-09 4.22299839e-09 2.16219916e-04 + -2.72995970e-04 -1.17065004e-01 -2.45460287e-04 -1.09960094e-03 -6.46184801e-02 -2.10000264e-04 + -9.35600793e-04 8.98733339e-04 -6.33163284e-04 -1.38844494e-04 5.12112671e-09 -4.19174765e-01 + -8.80126883e-04 1.10907120e-03 -3.51939596e-06 5.83139932e-01 -1.29656643e-06 -5.32399289e-06 + 6.96107168e-01 -1.96139102e-06 1.57779626e-03 -1.76799004e-03 4.22299839e-09 -2.73281468e-03 + -6.51338068e-04 3.57062591e-04 -4.50568777e-04 -2.45460287e-04 -1.17062891e-01 -6.64750516e-04 + -2.10000264e-04 -6.46166208e-02 -5.65889231e-04 -7.43482987e-04 -3.82154228e-04 -4.19174765e-01 + 1.28775593e-03 -1.38841966e-04 -1.95973296e-04 2.46951009e-04 -7.83645652e-07 -1.29656643e-06 + 5.83144981e-01 -1.18546653e-06 -1.96139102e-06 6.96115274e-01 3.51320158e-04 4.22299839e-09 + -1.76800570e-03 6.08508216e-04 -2.92522105e-03 8.11718240e-05 -1.03049703e-04 -1.09960094e-03 + -6.64750516e-04 -1.17066054e-01 -9.35600793e-04 -5.65889231e-04 -6.46194049e-02 -1.65551088e-04 + -4.19174765e-01 -3.82164470e-04 -2.86740368e-04 -6.33168911e-04 -3.46325130e-08 2.84840274e-07 + 1.34332057e-03 -1.11127833e-03 -2.47443628e-04 1.90724848e-03 -1.57779626e-03 -3.51320158e-04 + 9.91148755e-01 -3.51624362e-06 -7.82944432e-07 7.65728659e-06 2.59079907e-06 -2.88642704e-07 + 3.92825612e-07 -8.95769861e-04 7.41034221e-04 1.65004430e-04 -8.98733339e-04 7.43482987e-04 + 1.65551088e-04 -5.10933358e-01 -1.51322828e-06 -3.39223792e-07 -4.40662955e-06 1.11837462e-06 + -4.65312700e-07 -8.47693755e-07 2.33089470e-03 1.40878816e-03 -3.81978048e-09 2.92521245e-03 + 1.76799004e-03 -4.22299839e-09 -3.51624362e-06 1.13698095e+00 -3.49408080e-06 -6.09023860e-06 + -2.11180794e-06 -2.74679535e-04 4.42631910e-04 2.35566958e-04 1.41651798e-04 4.82748090e-01 + 6.33163284e-04 3.82154228e-04 4.19174765e-01 -1.51322828e-06 1.32232574e-01 -1.08712966e-03 + -2.62414619e-06 -1.79933501e-03 -1.03607636e-07 -1.88752173e-07 5.19007331e-04 -3.81978048e-09 + 1.40879501e-03 6.51341920e-04 -4.22299839e-09 1.76800570e-03 -7.82944432e-07 -3.49408080e-06 + 1.13699053e+00 1.35610773e-06 -9.48436009e-06 -1.23304119e-03 1.98404692e-03 4.95120502e-05 + 4.82748090e-01 1.41656124e-04 1.38844494e-04 4.19174765e-01 3.82164470e-04 -3.39223792e-07 + -1.08712966e-03 1.32236696e-01 5.80494331e-07 -3.99082369e-04 1.78729142e-07 -1.46999884e-06 + -3.42358410e-09 1.92478677e-03 -4.28586620e-04 -7.82857996e-09 2.73281468e-03 -6.08508216e-04 + 7.65728659e-06 -6.09023860e-06 1.35610773e-06 9.91145788e-01 1.48962708e-06 -2.02729662e-06 + -2.16335581e-09 -1.28351130e-03 2.85794987e-04 -5.12112671e-09 -1.28775593e-03 2.86740368e-04 + -4.40662955e-06 -2.62414619e-06 5.80494331e-07 -5.10931650e-01 -6.41902276e-09 -1.71423348e-07 + -3.12295755e-07 -3.81978048e-09 5.19005646e-04 2.33089846e-03 -4.22299839e-09 6.51338068e-04 + 2.92522105e-03 2.59079907e-06 -2.11180794e-06 -9.48436009e-06 1.13698413e+00 -7.45280058e-04 + 1.19936645e-03 4.82748090e-01 4.95109811e-05 2.35569334e-04 4.19174765e-01 1.38841966e-04 + 6.33168911e-04 1.11837462e-06 -1.79933501e-03 -3.99082369e-04 -6.41902276e-09 1.32233943e-01 + 1.23628926e+00 2.25011133e+00 1.79623656e-04 2.96479664e-04 6.77644829e-05 2.16219916e-04 + 3.57062591e-04 8.11718240e-05 -2.88642704e-07 -2.74679535e-04 -1.23304119e-03 1.48962708e-06 + -7.45280058e-04 1.48884702e+00 1.85694239e+00 -6.18410216e-04 -1.02317953e-03 -2.27825967e-04 + -5.31949313e-04 -8.80126883e-04 -1.95973296e-04 -3.46325130e-08 -4.65312700e-07 -1.03607636e-07 + 1.78729142e-07 -1.71423348e-07 2.25011133e+00 3.67664181e+00 -2.42849251e-04 -4.00695387e-04 + -9.19329690e-05 -2.72995970e-04 -4.50568777e-04 -1.03049703e-04 3.92825612e-07 4.42631910e-04 + 1.98404692e-03 -2.02729662e-06 1.19936645e-03 1.85694239e+00 4.31652581e+00 8.55474517e-04 + 1.41541011e-03 3.15161843e-04 6.70323180e-04 1.10907120e-03 2.46951009e-04 2.84840274e-07 + -8.47693755e-07 -1.88752173e-07 -1.46999884e-06 -3.12295755e-07 -1.79623656e-04 2.42849251e-04 + -1.24840188e-01 -2.75135667e-04 -1.23461686e-03 -1.17065004e-01 -2.45460287e-04 -1.09960094e-03 + -8.95769861e-04 2.35566958e-04 4.95120502e-05 -2.16335581e-09 4.82748090e-01 6.18410216e-04 + -8.55474517e-04 5.44530326e-01 -3.18722267e-06 -7.09681414e-07 5.83143304e-01 -3.51939596e-06 + -7.83645652e-07 1.34332057e-03 2.33089470e-03 5.19007331e-04 -3.42358410e-09 -3.81978048e-09 + -2.96479664e-04 4.00695387e-04 -2.75135667e-04 -1.24838174e-01 -7.46258545e-04 -2.45460287e-04 + -1.17062891e-01 -6.64750516e-04 7.41034221e-04 1.41651798e-04 4.82748090e-01 -1.28351130e-03 + 4.95109811e-05 1.02317953e-03 -1.41541011e-03 -3.18722267e-06 5.44527701e-01 -1.17419129e-06 + -3.51939596e-06 5.83139932e-01 -1.29656643e-06 -1.11127833e-03 1.40878816e-03 -3.81978048e-09 + 1.92478677e-03 5.19005646e-04 -6.77644829e-05 9.19329690e-05 -1.23461686e-03 -7.46258545e-04 + -1.24841190e-01 -1.09960094e-03 -6.64750516e-04 -1.17066054e-01 1.65004430e-04 4.82748090e-01 + 1.41656124e-04 2.85794987e-04 2.35569334e-04 2.27825967e-04 -3.15161843e-04 -7.09681414e-07 + -1.17419129e-06 5.44531631e-01 -7.83645652e-07 -1.29656643e-06 5.83144981e-01 -2.47443628e-04 + -3.81978048e-09 1.40879501e-03 -4.28586620e-04 2.33089846e-03 -2.16219916e-04 2.72995970e-04 + -1.17065004e-01 -2.45460287e-04 -1.09960094e-03 -6.46184801e-02 -2.10000264e-04 -9.35600793e-04 + -8.98733339e-04 6.33163284e-04 1.38844494e-04 -5.12112671e-09 4.19174765e-01 5.31949313e-04 + -6.70323180e-04 5.83143304e-01 -3.51939596e-06 -7.83645652e-07 6.96112581e-01 -5.32399289e-06 + -1.18546653e-06 1.90724848e-03 2.92521245e-03 6.51341920e-04 -7.82857996e-09 -4.22299839e-09 + -3.57062591e-04 4.50568777e-04 -2.45460287e-04 -1.17062891e-01 -6.64750516e-04 -2.10000264e-04 + -6.46166208e-02 -5.65889231e-04 7.43482987e-04 3.82154228e-04 4.19174765e-01 -1.28775593e-03 + 1.38841966e-04 8.80126883e-04 -1.10907120e-03 -3.51939596e-06 5.83139932e-01 -1.29656643e-06 + -5.32399289e-06 6.96107168e-01 -1.96139102e-06 -1.57779626e-03 1.76799004e-03 -4.22299839e-09 + 2.73281468e-03 6.51338068e-04 -8.11718240e-05 1.03049703e-04 -1.09960094e-03 -6.64750516e-04 + -1.17066054e-01 -9.35600793e-04 -5.65889231e-04 -6.46194049e-02 1.65551088e-04 4.19174765e-01 + 3.82164470e-04 2.86740368e-04 6.33168911e-04 1.95973296e-04 -2.46951009e-04 -7.83645652e-07 + -1.29656643e-06 5.83144981e-01 -1.18546653e-06 -1.96139102e-06 6.96115274e-01 -3.51320158e-04 + -4.22299839e-09 1.76800570e-03 -6.08508216e-04 2.92522105e-03 -2.88642704e-07 3.92825612e-07 + 8.95769861e-04 -7.41034221e-04 -1.65004430e-04 8.98733339e-04 -7.43482987e-04 -1.65551088e-04 + -5.10933358e-01 -1.51322828e-06 -3.39223792e-07 -4.40662955e-06 1.11837462e-06 -3.46325130e-08 + 2.84840274e-07 -1.34332057e-03 1.11127833e-03 2.47443628e-04 -1.90724848e-03 1.57779626e-03 + 3.51320158e-04 9.91148755e-01 -3.51624362e-06 -7.82944432e-07 7.65728659e-06 2.59079907e-06 + -2.74679535e-04 4.42631910e-04 -2.35566958e-04 -1.41651798e-04 -4.82748090e-01 -6.33163284e-04 + -3.82154228e-04 -4.19174765e-01 -1.51322828e-06 1.32232574e-01 -1.08712966e-03 -2.62414619e-06 + -1.79933501e-03 -4.65312700e-07 -8.47693755e-07 -2.33089470e-03 -1.40878816e-03 3.81978048e-09 + -2.92521245e-03 -1.76799004e-03 4.22299839e-09 -3.51624362e-06 1.13698095e+00 -3.49408080e-06 + -6.09023860e-06 -2.11180794e-06 -1.23304119e-03 1.98404692e-03 -4.95120502e-05 -4.82748090e-01 + -1.41656124e-04 -1.38844494e-04 -4.19174765e-01 -3.82164470e-04 -3.39223792e-07 -1.08712966e-03 + 1.32236696e-01 5.80494331e-07 -3.99082369e-04 -1.03607636e-07 -1.88752173e-07 -5.19007331e-04 + 3.81978048e-09 -1.40879501e-03 -6.51341920e-04 4.22299839e-09 -1.76800570e-03 -7.82944432e-07 + -3.49408080e-06 1.13699053e+00 1.35610773e-06 -9.48436009e-06 1.48962708e-06 -2.02729662e-06 + 2.16335581e-09 1.28351130e-03 -2.85794987e-04 5.12112671e-09 1.28775593e-03 -2.86740368e-04 + -4.40662955e-06 -2.62414619e-06 5.80494331e-07 -5.10931650e-01 -6.41902276e-09 1.78729142e-07 + -1.46999884e-06 3.42358410e-09 -1.92478677e-03 4.28586620e-04 7.82857996e-09 -2.73281468e-03 + 6.08508216e-04 7.65728659e-06 -6.09023860e-06 1.35610773e-06 9.91145788e-01 -7.45280058e-04 + 1.19936645e-03 -4.82748090e-01 -4.95109811e-05 -2.35569334e-04 -4.19174765e-01 -1.38841966e-04 + -6.33168911e-04 1.11837462e-06 -1.79933501e-03 -3.99082369e-04 -6.41902276e-09 1.32233943e-01 + -1.71423348e-07 -3.12295755e-07 3.81978048e-09 -5.19005646e-04 -2.33089846e-03 4.22299839e-09 + -6.51338068e-04 -2.92522105e-03 2.59079907e-06 -2.11180794e-06 -9.48436009e-06 1.13698413e+00 + # CSR column indices + 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 + 16 17 18 19 20 21 22 23 24 25 0 1 2 3 4 5 + 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 + 22 23 24 25 0 1 2 3 4 5 6 7 8 9 10 11 + 12 13 14 15 16 17 18 19 20 21 22 23 24 25 0 1 + 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 + 18 19 20 21 22 23 24 25 0 1 2 3 4 5 6 7 + 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 + 24 25 0 1 2 3 4 5 6 7 8 9 10 11 12 13 + 14 15 16 17 18 19 20 21 22 23 24 25 0 1 2 3 + 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 + 20 21 22 23 24 25 0 1 2 3 4 5 6 7 8 9 + 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 + 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 + 16 17 18 19 20 21 22 23 24 25 0 1 2 3 4 5 + 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 + 22 23 24 25 0 1 2 3 4 5 6 7 8 9 10 11 + 12 13 14 15 16 17 18 19 20 21 22 23 24 25 0 1 + 2 3 4 5 6 7 8 9 10 11 13 14 15 16 17 18 + 19 20 21 22 23 24 25 0 1 2 3 4 5 6 7 8 + 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 + 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 + 16 17 18 19 20 21 22 23 24 25 0 1 2 3 4 5 + 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 + 22 23 24 25 0 1 2 3 4 5 6 7 8 9 10 11 + 12 13 14 15 16 17 18 19 20 21 22 23 24 25 0 1 + 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 + 18 19 20 21 22 23 24 25 0 1 2 3 4 5 6 7 + 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 + 24 25 0 1 2 3 4 5 6 7 8 9 10 11 12 13 + 14 15 16 17 18 19 20 21 22 23 24 25 0 1 2 3 + 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 + 20 21 22 23 24 25 0 1 2 3 4 5 6 7 8 9 + 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 + 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 + 16 17 18 19 20 21 22 23 24 25 0 1 2 3 4 5 + 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 + 22 23 24 25 0 1 2 3 4 5 6 7 8 9 10 11 + 12 13 14 15 16 17 18 19 20 21 22 23 24 25 0 1 + 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 + 18 19 20 21 22 23 24 0 1 2 3 4 5 6 7 8 + 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 25 + # CSR row pointers + 0 26 52 78 104 130 156 182 208 234 260 286 311 336 362 388 + 414 440 466 492 518 544 570 596 622 647 672 + +IONIC_STEP: 2 +Matrix Dimension of S_async(R): 26 +Matrix number of S_async(R): 1 + #----------------------------------------------------------------------# + # CSR Format # + # The outer loop corresponds to the number of Bravais lattice vectors. # + # The first line contains the index of the Bravais lattice vector # + # (Rx, Ry, Rz), followed by the number of non-zero elements. # + # The subsequent lines consist of three blocks of data, which are # + # values, column indices, row pointers. # + #----------------------------------------------------------------------# + + 0 0 0 672 + # CSR values + 1.48884702e+00 1.85694239e+00 6.18410216e-04 1.02317953e-03 2.27825967e-04 5.31949313e-04 + 8.80126883e-04 1.95973296e-04 -3.46325130e-08 -4.65312700e-07 -1.03607636e-07 1.78729142e-07 + -1.71423348e-07 1.23628926e+00 2.25011133e+00 1.78268263e-04 2.95660465e-04 6.40854004e-05 + 2.14928436e-04 3.56282021e-04 7.76662314e-05 -2.88642782e-07 2.74415143e-04 1.23298232e-03 + 1.48962786e-06 7.45182656e-04 1.85694239e+00 4.31652581e+00 -8.55474517e-04 -1.41541011e-03 + -3.15161843e-04 -6.70323180e-04 -1.10907120e-03 -2.46951009e-04 2.84840274e-07 -8.47693755e-07 + -1.88752173e-07 -1.46999884e-06 -3.12295755e-07 2.25011133e+00 3.67664181e+00 -2.40747321e-04 + -3.99424983e-04 -8.62274868e-05 -2.70885145e-04 -4.49292996e-04 -9.73200783e-05 3.92825601e-07 + -4.40829656e-04 -1.98364563e-03 -2.02729681e-06 -1.19870250e-03 -6.18410216e-04 8.55474517e-04 + 5.44530326e-01 -3.18722267e-06 -7.09681414e-07 5.83143304e-01 -3.51939596e-06 -7.83645652e-07 + -1.34332057e-03 -2.33089470e-03 -5.19007331e-04 3.42358411e-09 3.81978049e-09 -1.78268263e-04 + 2.40747321e-04 -1.24840192e-01 2.74650046e-04 1.23450873e-03 -1.17065007e-01 2.44158702e-04 + 1.09931112e-03 -8.95769864e-04 2.36945101e-04 5.57013837e-05 -2.16062363e-09 -4.82748089e-01 + -1.02317953e-03 1.41541011e-03 -3.18722267e-06 5.44527701e-01 -1.17419129e-06 -3.51939596e-06 + 5.83139932e-01 -1.29656643e-06 1.11127833e-03 -1.40878816e-03 3.81978049e-09 -1.92478677e-03 + -5.19005646e-04 -2.95660465e-04 3.99424983e-04 2.74650046e-04 -1.24838178e-01 7.46079638e-04 + 2.44158702e-04 -1.17062894e-01 6.64271002e-04 7.41034220e-04 1.43931987e-04 -4.82748089e-01 + -1.28351129e-03 5.57003249e-05 -2.27825967e-04 3.15161843e-04 -7.09681414e-07 -1.17419129e-06 + 5.44531631e-01 -7.83645652e-07 -1.29656643e-06 5.83144981e-01 2.47443628e-04 3.81978049e-09 + -1.40879501e-03 4.28586620e-04 -2.33089846e-03 -6.40854004e-05 8.62274868e-05 1.23450873e-03 + 7.46079638e-04 -1.24841194e-01 1.09931112e-03 6.64271002e-04 -1.17066057e-01 1.65004435e-04 + -4.82748089e-01 1.43936308e-04 2.85795006e-04 2.36947476e-04 -5.31949313e-04 6.70323180e-04 + 5.83143304e-01 -3.51939596e-06 -7.83645652e-07 6.96112581e-01 -5.32399289e-06 -1.18546653e-06 + -1.90724848e-03 -2.92521245e-03 -6.51341920e-04 7.82857997e-09 4.22299838e-09 -2.14928436e-04 + 2.70885145e-04 -1.17065007e-01 2.44158702e-04 1.09931112e-03 -6.46184820e-02 2.06474932e-04 + 9.34815817e-04 -8.98733354e-04 6.34166258e-04 1.43348922e-04 -5.11554605e-09 -4.19174763e-01 + -8.80126883e-04 1.10907120e-03 -3.51939596e-06 5.83139932e-01 -1.29656643e-06 -5.32399289e-06 + 6.96107168e-01 -1.96139102e-06 1.57779626e-03 -1.76799004e-03 4.22299838e-09 -2.73281468e-03 + -6.51338068e-04 -3.56282021e-04 4.49292996e-04 2.44158702e-04 -1.17062894e-01 6.64271002e-04 + 2.06474932e-04 -6.46166228e-02 5.64590473e-04 7.43482989e-04 3.83813692e-04 -4.19174763e-01 + -1.28775593e-03 1.43346413e-04 -1.95973296e-04 2.46951009e-04 -7.83645652e-07 -1.29656643e-06 + 5.83144981e-01 -1.18546653e-06 -1.96139102e-06 6.96115274e-01 3.51320158e-04 4.22299838e-09 + -1.76800570e-03 6.08508216e-04 -2.92522105e-03 -7.76662314e-05 9.73200783e-05 1.09931112e-03 + 6.64271002e-04 -1.17066057e-01 9.34815817e-04 5.64590473e-04 -6.46194069e-02 1.65551113e-04 + -4.19174763e-01 3.83823923e-04 2.86740430e-04 6.34171882e-04 -3.46325130e-08 2.84840274e-07 + 1.34332057e-03 -1.11127833e-03 -2.47443628e-04 1.90724848e-03 -1.57779626e-03 -3.51320158e-04 + 9.91148755e-01 -3.51624362e-06 -7.82944432e-07 7.65728659e-06 2.59079907e-06 -2.88642782e-07 + 3.92825601e-07 8.95769864e-04 -7.41034220e-04 -1.65004435e-04 8.98733354e-04 -7.43482989e-04 + -1.65551113e-04 -5.10933352e-01 -1.51406514e-06 -3.34853292e-07 -4.40663006e-06 1.11217954e-06 + -4.65312700e-07 -8.47693755e-07 2.33089470e-03 1.40878816e-03 -3.81978049e-09 2.92521245e-03 + 1.76799004e-03 -4.22299838e-09 -3.51624362e-06 1.13698095e+00 -3.49408080e-06 -6.09023860e-06 + -2.11180794e-06 2.74415143e-04 -4.40829656e-04 -2.36945101e-04 -1.43931987e-04 4.82748089e-01 + -6.34166258e-04 -3.83813692e-04 4.19174763e-01 -1.51406514e-06 1.32232568e-01 1.08834173e-03 + -2.61927937e-06 1.80006758e-03 -1.03607636e-07 -1.88752173e-07 5.19007331e-04 -3.81978049e-09 + 1.40879501e-03 6.51341920e-04 -4.22299838e-09 1.76800570e-03 -7.82944432e-07 -3.49408080e-06 + 1.13699053e+00 1.35610773e-06 -9.48436009e-06 1.23298232e-03 -1.98364563e-03 -5.57013837e-05 + 4.82748089e-01 -1.43936308e-04 -1.43348922e-04 4.19174763e-01 -3.83823923e-04 -3.34853292e-07 + 1.08834173e-03 1.32236691e-01 5.87041999e-07 4.02372404e-04 1.78729142e-07 -1.46999884e-06 + -3.42358411e-09 1.92478677e-03 -4.28586620e-04 -7.82857997e-09 2.73281468e-03 -6.08508216e-04 + 7.65728659e-06 -6.09023860e-06 1.35610773e-06 9.91145788e-01 1.48962786e-06 -2.02729681e-06 + 2.16062363e-09 1.28351129e-03 -2.85795006e-04 5.11554605e-09 1.28775593e-03 -2.86740430e-04 + -4.40663006e-06 -2.61927937e-06 5.87041999e-07 -5.10931644e-01 6.41892957e-09 -1.71423348e-07 + -3.12295755e-07 -3.81978049e-09 5.19005646e-04 2.33089846e-03 -4.22299838e-09 6.51338068e-04 + 2.92522105e-03 2.59079907e-06 -2.11180794e-06 -9.48436009e-06 1.13698413e+00 7.45182656e-04 + -1.19870250e-03 4.82748089e-01 -5.57003249e-05 -2.36947476e-04 4.19174763e-01 -1.43346413e-04 + -6.34171882e-04 1.11217954e-06 1.80006758e-03 4.02372404e-04 6.41892957e-09 1.32233938e-01 + 1.23628926e+00 2.25011133e+00 -1.78268263e-04 -2.95660465e-04 -6.40854004e-05 -2.14928436e-04 + -3.56282021e-04 -7.76662314e-05 -2.88642782e-07 2.74415143e-04 1.23298232e-03 1.48962786e-06 + 7.45182656e-04 1.48884702e+00 1.85694239e+00 -6.18410216e-04 -1.02317953e-03 -2.27825967e-04 + -5.31949313e-04 -8.80126883e-04 -1.95973296e-04 -3.46325130e-08 -4.65312700e-07 -1.03607636e-07 + 1.78729142e-07 -1.71423348e-07 2.25011133e+00 3.67664181e+00 2.40747321e-04 3.99424983e-04 + 8.62274868e-05 2.70885145e-04 4.49292996e-04 9.73200783e-05 3.92825601e-07 -4.40829656e-04 + -1.98364563e-03 -2.02729681e-06 -1.19870250e-03 1.85694239e+00 4.31652581e+00 8.55474517e-04 + 1.41541011e-03 3.15161843e-04 6.70323180e-04 1.10907120e-03 2.46951009e-04 2.84840274e-07 + -8.47693755e-07 -1.88752173e-07 -1.46999884e-06 -3.12295755e-07 1.78268263e-04 -2.40747321e-04 + -1.24840192e-01 2.74650046e-04 1.23450873e-03 -1.17065007e-01 2.44158702e-04 1.09931112e-03 + 8.95769864e-04 -2.36945101e-04 -5.57013837e-05 2.16062367e-09 4.82748089e-01 6.18410216e-04 + -8.55474517e-04 5.44530326e-01 -3.18722267e-06 -7.09681414e-07 5.83143304e-01 -3.51939596e-06 + -7.83645652e-07 1.34332057e-03 2.33089470e-03 5.19007331e-04 -3.42358407e-09 -3.81978049e-09 + 2.95660465e-04 -3.99424983e-04 2.74650046e-04 -1.24838178e-01 7.46079638e-04 2.44158702e-04 + -1.17062894e-01 6.64271002e-04 -7.41034220e-04 -1.43931987e-04 4.82748089e-01 1.28351129e-03 + -5.57003249e-05 1.02317953e-03 -1.41541011e-03 -3.18722267e-06 5.44527701e-01 -1.17419129e-06 + -3.51939596e-06 5.83139932e-01 -1.29656643e-06 -1.11127833e-03 1.40878816e-03 -3.81978049e-09 + 1.92478677e-03 5.19005646e-04 6.40854004e-05 -8.62274868e-05 1.23450873e-03 7.46079638e-04 + -1.24841194e-01 1.09931112e-03 6.64271002e-04 -1.17066057e-01 -1.65004435e-04 4.82748089e-01 + -1.43936308e-04 -2.85795006e-04 -2.36947476e-04 2.27825967e-04 -3.15161843e-04 -7.09681414e-07 + -1.17419129e-06 5.44531631e-01 -7.83645652e-07 -1.29656643e-06 5.83144981e-01 -2.47443628e-04 + -3.81978049e-09 1.40879501e-03 -4.28586620e-04 2.33089846e-03 2.14928436e-04 -2.70885145e-04 + -1.17065007e-01 2.44158702e-04 1.09931112e-03 -6.46184820e-02 2.06474932e-04 9.34815817e-04 + 8.98733354e-04 -6.34166258e-04 -1.43348922e-04 5.11554609e-09 4.19174763e-01 5.31949313e-04 + -6.70323180e-04 5.83143304e-01 -3.51939596e-06 -7.83645652e-07 6.96112581e-01 -5.32399289e-06 + -1.18546653e-06 1.90724848e-03 2.92521245e-03 6.51341920e-04 -7.82858000e-09 -4.22299837e-09 + 3.56282021e-04 -4.49292996e-04 2.44158702e-04 -1.17062894e-01 6.64271002e-04 2.06474932e-04 + -6.46166228e-02 5.64590473e-04 -7.43482989e-04 -3.83813692e-04 4.19174763e-01 1.28775593e-03 + -1.43346413e-04 8.80126883e-04 -1.10907120e-03 -3.51939596e-06 5.83139932e-01 -1.29656643e-06 + -5.32399289e-06 6.96107168e-01 -1.96139102e-06 -1.57779626e-03 1.76799004e-03 -4.22299837e-09 + 2.73281468e-03 6.51338068e-04 7.76662314e-05 -9.73200783e-05 1.09931112e-03 6.64271002e-04 + -1.17066057e-01 9.34815817e-04 5.64590473e-04 -6.46194069e-02 -1.65551113e-04 4.19174763e-01 + -3.83823923e-04 -2.86740430e-04 -6.34171882e-04 1.95973296e-04 -2.46951009e-04 -7.83645652e-07 + -1.29656643e-06 5.83144981e-01 -1.18546653e-06 -1.96139102e-06 6.96115274e-01 -3.51320158e-04 + -4.22299837e-09 1.76800570e-03 -6.08508216e-04 2.92522105e-03 -2.88642782e-07 3.92825601e-07 + -8.95769864e-04 7.41034220e-04 1.65004435e-04 -8.98733354e-04 7.43482989e-04 1.65551113e-04 + -5.10933352e-01 -1.51406514e-06 -3.34853292e-07 -4.40663006e-06 1.11217954e-06 -3.46325130e-08 + 2.84840274e-07 -1.34332057e-03 1.11127833e-03 2.47443628e-04 -1.90724848e-03 1.57779626e-03 + 3.51320158e-04 9.91148755e-01 -3.51624362e-06 -7.82944432e-07 7.65728659e-06 2.59079907e-06 + 2.74415143e-04 -4.40829656e-04 2.36945101e-04 1.43931987e-04 -4.82748089e-01 6.34166258e-04 + 3.83813692e-04 -4.19174763e-01 -1.51406514e-06 1.32232568e-01 1.08834173e-03 -2.61927937e-06 + 1.80006758e-03 -4.65312700e-07 -8.47693755e-07 -2.33089470e-03 -1.40878816e-03 3.81978049e-09 + -2.92521245e-03 -1.76799004e-03 4.22299837e-09 -3.51624362e-06 1.13698095e+00 -3.49408080e-06 + -6.09023860e-06 -2.11180794e-06 1.23298232e-03 -1.98364563e-03 5.57013837e-05 -4.82748089e-01 + 1.43936308e-04 1.43348922e-04 -4.19174763e-01 3.83823923e-04 -3.34853292e-07 1.08834173e-03 + 1.32236691e-01 5.87041999e-07 4.02372404e-04 -1.03607636e-07 -1.88752173e-07 -5.19007331e-04 + 3.81978049e-09 -1.40879501e-03 -6.51341920e-04 4.22299837e-09 -1.76800570e-03 -7.82944432e-07 + -3.49408080e-06 1.13699053e+00 1.35610773e-06 -9.48436009e-06 1.48962786e-06 -2.02729681e-06 + -2.16062367e-09 -1.28351129e-03 2.85795006e-04 -5.11554609e-09 -1.28775593e-03 2.86740430e-04 + -4.40663006e-06 -2.61927937e-06 5.87041999e-07 -5.10931644e-01 6.41892967e-09 1.78729142e-07 + -1.46999884e-06 3.42358407e-09 -1.92478677e-03 4.28586620e-04 7.82858000e-09 -2.73281468e-03 + 6.08508216e-04 7.65728659e-06 -6.09023860e-06 1.35610773e-06 9.91145788e-01 7.45182656e-04 + -1.19870250e-03 -4.82748089e-01 5.57003249e-05 2.36947476e-04 -4.19174763e-01 1.43346413e-04 + 6.34171882e-04 1.11217954e-06 1.80006758e-03 4.02372404e-04 6.41892967e-09 1.32233938e-01 + -1.71423348e-07 -3.12295755e-07 3.81978049e-09 -5.19005646e-04 -2.33089846e-03 4.22299837e-09 + -6.51338068e-04 -2.92522105e-03 2.59079907e-06 -2.11180794e-06 -9.48436009e-06 1.13698413e+00 + # CSR column indices + 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 + 16 17 18 19 20 21 22 23 24 25 0 1 2 3 4 5 + 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 + 22 23 24 25 0 1 2 3 4 5 6 7 8 9 10 11 + 12 13 14 15 16 17 18 19 20 21 22 23 24 25 0 1 + 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 + 18 19 20 21 22 23 24 25 0 1 2 3 4 5 6 7 + 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 + 24 25 0 1 2 3 4 5 6 7 8 9 10 11 12 13 + 14 15 16 17 18 19 20 21 22 23 24 25 0 1 2 3 + 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 + 20 21 22 23 24 25 0 1 2 3 4 5 6 7 8 9 + 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 + 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 + 16 17 18 19 20 21 22 23 24 25 0 1 2 3 4 5 + 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 + 22 23 24 25 0 1 2 3 4 5 6 7 8 9 10 11 + 12 13 14 15 16 17 18 19 20 21 22 23 24 25 0 1 + 2 3 4 5 6 7 8 9 10 11 13 14 15 16 17 18 + 19 20 21 22 23 24 25 0 1 2 3 4 5 6 7 8 + 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 + 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 + 16 17 18 19 20 21 22 23 24 25 0 1 2 3 4 5 + 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 + 22 23 24 25 0 1 2 3 4 5 6 7 8 9 10 11 + 12 13 14 15 16 17 18 19 20 21 22 23 24 25 0 1 + 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 + 18 19 20 21 22 23 24 25 0 1 2 3 4 5 6 7 + 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 + 24 25 0 1 2 3 4 5 6 7 8 9 10 11 12 13 + 14 15 16 17 18 19 20 21 22 23 24 25 0 1 2 3 + 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 + 20 21 22 23 24 25 0 1 2 3 4 5 6 7 8 9 + 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 + 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 + 16 17 18 19 20 21 22 23 24 25 0 1 2 3 4 5 + 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 + 22 23 24 25 0 1 2 3 4 5 6 7 8 9 10 11 + 12 13 14 15 16 17 18 19 20 21 22 23 24 25 0 1 + 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 + 18 19 20 21 22 23 24 0 1 2 3 4 5 6 7 8 + 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 25 + # CSR row pointers + 0 26 52 78 104 130 156 182 208 234 260 286 311 336 362 388 + 414 440 466 492 518 544 570 596 622 647 672 + diff --git a/tests/02_NAO_Gamma/relax_bfgs2/INPUT b/tests/02_NAO_Gamma/relax_bfgs2/INPUT new file mode 100644 index 0000000000..954689e2e8 --- /dev/null +++ b/tests/02_NAO_Gamma/relax_bfgs2/INPUT @@ -0,0 +1,35 @@ +INPUT_PARAMETERS +#Parameters (1.General) +suffix autotest +calculation relax + +nbands 8 +symmetry 1 +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB + +#Parameters (2.Iteration) +ecutwfc 20 +scf_thr 1e-9 +scf_nmax 100 + +#Parameters (3.Relaxation) +relax_nmax 2 +cal_force 1 +force_thr_ev 0.01 +relax_method bfgs 2 + +#Parameters (4.Basis) +basis_type lcao + +#Parameters (5.Smearing) +smearing_method gauss +smearing_sigma 0.002 + +#Parameters (6.Mixing) +mixing_type broyden +mixing_beta 0.5 + +gamma_only 1 + +relax_new 0 diff --git a/tests/02_NAO_Gamma/004_NO_GO_FM/KPT b/tests/02_NAO_Gamma/relax_bfgs2/KPT similarity index 100% rename from tests/02_NAO_Gamma/004_NO_GO_FM/KPT rename to tests/02_NAO_Gamma/relax_bfgs2/KPT diff --git a/tests/02_NAO_Gamma/010_NO_GO_RE_MB/README b/tests/02_NAO_Gamma/relax_bfgs2/README similarity index 100% rename from tests/02_NAO_Gamma/010_NO_GO_RE_MB/README rename to tests/02_NAO_Gamma/relax_bfgs2/README diff --git a/tests/02_NAO_Gamma/relax_bfgs2/STRU b/tests/02_NAO_Gamma/relax_bfgs2/STRU new file mode 100644 index 0000000000..f4a07dbf54 --- /dev/null +++ b/tests/02_NAO_Gamma/relax_bfgs2/STRU @@ -0,0 +1,22 @@ +ATOMIC_SPECIES +Si 28 Si_ONCV_PBE-1.0.upf upf201 + +NUMERICAL_ORBITAL +Si_gga_8au_60Ry_2s2p1d.orb + +LATTICE_CONSTANT +10.2 + +LATTICE_VECTORS +0.0 0.5 0.5 +0.5 0.0 0.5 +0.5 0.5 0.0 + +ATOMIC_POSITIONS +Direct + +Si +0.0 +2 +0.00 0.00 0.00 1 1 1 +0.251 0.251 0.251 1 1 1 diff --git a/tests/02_NAO_Gamma/010_NO_GO_RE_MB/result.ref b/tests/02_NAO_Gamma/relax_bfgs2/result.ref similarity index 100% rename from tests/02_NAO_Gamma/010_NO_GO_RE_MB/result.ref rename to tests/02_NAO_Gamma/relax_bfgs2/result.ref diff --git a/tests/02_NAO_Gamma/relax_cell/INPUT b/tests/02_NAO_Gamma/relax_cell/INPUT new file mode 100644 index 0000000000..1c81cd709b --- /dev/null +++ b/tests/02_NAO_Gamma/relax_cell/INPUT @@ -0,0 +1,29 @@ +INPUT_PARAMETERS +#Parameters (General) +suffix autotest +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB + +nbands 8 +calculation cell-relax +#Parameters (Accuracy) +ecutwfc 20 +scf_nmax 20 + +basis_type lcao + +cal_stress 1 +stress_thr 0.5 +cal_force 1 +force_thr_ev 0.02 + +ks_solver scalapack_gvx +mixing_type broyden +mixing_beta 0.7 + +gamma_only 1 + +relax_method cg +relax_new 1 +relax_nmax 2 +relax_scale_force 0.4 diff --git a/tests/02_NAO_Gamma/005_NO_GO_ocp/KPT b/tests/02_NAO_Gamma/relax_cell/KPT similarity index 100% rename from tests/02_NAO_Gamma/005_NO_GO_ocp/KPT rename to tests/02_NAO_Gamma/relax_cell/KPT diff --git a/tests/02_NAO_Gamma/009_NO_GO_CS_CR/README b/tests/02_NAO_Gamma/relax_cell/README similarity index 100% rename from tests/02_NAO_Gamma/009_NO_GO_CS_CR/README rename to tests/02_NAO_Gamma/relax_cell/README diff --git a/tests/02_NAO_Gamma/009_NO_GO_CS_CR/STRU b/tests/02_NAO_Gamma/relax_cell/STRU similarity index 100% rename from tests/02_NAO_Gamma/009_NO_GO_CS_CR/STRU rename to tests/02_NAO_Gamma/relax_cell/STRU diff --git a/tests/02_NAO_Gamma/009_NO_GO_CS_CR/result.ref b/tests/02_NAO_Gamma/relax_cell/result.ref similarity index 100% rename from tests/02_NAO_Gamma/009_NO_GO_CS_CR/result.ref rename to tests/02_NAO_Gamma/relax_cell/result.ref diff --git a/tests/02_NAO_Gamma/relax_old_cg/INPUT b/tests/02_NAO_Gamma/relax_old_cg/INPUT new file mode 100644 index 0000000000..7e07585cef --- /dev/null +++ b/tests/02_NAO_Gamma/relax_old_cg/INPUT @@ -0,0 +1,36 @@ +INPUT_PARAMETERS +#Parameters (1.General) +suffix autotest +calculation relax + +nbands 8 +symmetry 1 +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB + +#Parameters (2.Iteration) +ecutwfc 10 +scf_thr 1e-7 +scf_nmax 100 + +#Parameters (3.Relaxation) +relax_nmax 2 +cal_force 1 +force_thr_ev 0.01 +relax_method cg +cal_stress 1 + +#Parameters (4.Basis) +basis_type lcao + +#Parameters (5.Smearing) +smearing_method gauss +smearing_sigma 0.002 + +#Parameters (6.Mixing) +mixing_type broyden +mixing_beta 0.5 + +gamma_only 1 + +relax_new 0 diff --git a/tests/02_NAO_Gamma/006_NO_GO_OH/KPT b/tests/02_NAO_Gamma/relax_old_cg/KPT similarity index 100% rename from tests/02_NAO_Gamma/006_NO_GO_OH/KPT rename to tests/02_NAO_Gamma/relax_old_cg/KPT diff --git a/tests/02_NAO_Gamma/008_NO_GO_CF_RE/README b/tests/02_NAO_Gamma/relax_old_cg/README similarity index 100% rename from tests/02_NAO_Gamma/008_NO_GO_CF_RE/README rename to tests/02_NAO_Gamma/relax_old_cg/README diff --git a/tests/02_NAO_Gamma/008_NO_GO_CF_RE/STRU b/tests/02_NAO_Gamma/relax_old_cg/STRU similarity index 100% rename from tests/02_NAO_Gamma/008_NO_GO_CF_RE/STRU rename to tests/02_NAO_Gamma/relax_old_cg/STRU diff --git a/tests/02_NAO_Gamma/008_NO_GO_CF_RE/result.ref b/tests/02_NAO_Gamma/relax_old_cg/result.ref similarity index 100% rename from tests/02_NAO_Gamma/008_NO_GO_CF_RE/result.ref rename to tests/02_NAO_Gamma/relax_old_cg/result.ref diff --git a/tests/02_NAO_Gamma/relax_out_hk/INPUT b/tests/02_NAO_Gamma/relax_out_hk/INPUT new file mode 100644 index 0000000000..2010cbaf9a --- /dev/null +++ b/tests/02_NAO_Gamma/relax_out_hk/INPUT @@ -0,0 +1,34 @@ +INPUT_PARAMETERS +#Parameters (1.General) +suffix autotest +calculation relax + +nbands 4 +symmetry 1 +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB + +#Parameters (2.Iteration) +ecutwfc 5 +scf_thr 1e-8 +scf_nmax 100 + +#Parameters (3.Relaxation) +relax_nmax 2 +cal_force 1 +force_thr_ev 0.01 +relax_method bfgs 2 + +#Parameters (4.Basis) +basis_type lcao + +#Parameters (5.Smearing) +smearing_method fixed + +#Parameters (6.Mixing) +mixing_type broyden +mixing_beta 0.5 + +gamma_only 1 +out_mat_hs 1 5 +out_app_flag 1 diff --git a/tests/02_NAO_Gamma/relax_out_hk/STRU b/tests/02_NAO_Gamma/relax_out_hk/STRU new file mode 100644 index 0000000000..086df89083 --- /dev/null +++ b/tests/02_NAO_Gamma/relax_out_hk/STRU @@ -0,0 +1,22 @@ +ATOMIC_SPECIES +Si 28 Si_dojo_nsoc.upf + +NUMERICAL_ORBITAL +Si_dojo_6au_sz.orb + +LATTICE_CONSTANT +10.2 + +LATTICE_VECTORS +0.0 0.5 0.5 +0.5 0.0 0.5 +0.5 0.5 0.0 + +ATOMIC_POSITIONS +Direct + +Si +0.0 +2 +0.00 0.00 0.00 1 1 1 +0.251 0.251 0.251 1 1 1 diff --git a/tests/02_NAO_Gamma/relax_out_hk/hk_nao.txt.ref b/tests/02_NAO_Gamma/relax_out_hk/hk_nao.txt.ref new file mode 100644 index 0000000000..fc93c840e6 --- /dev/null +++ b/tests/02_NAO_Gamma/relax_out_hk/hk_nao.txt.ref @@ -0,0 +1,46 @@ +#------------------------------------------------------------------------ +# ionic step 1 +# filename OUT.autotest/hk_nao.txt +# gamma only 1 +# rows 8 +# columns 8 +#------------------------------------------------------------------------ +Row 1 + -1.59432e-01 9.24250e-04 -9.24250e-04 -9.24250e-04 -4.72133e-01 -4.06675e-04 4.06675e-04 4.06675e-04 +Row 2 + 1.32251e+00 -9.21838e-04 -9.21838e-04 1.98460e-04 -7.16261e-02 -7.43900e-05 -7.43900e-05 +Row 3 + 1.32251e+00 9.21838e-04 -1.98460e-04 -7.43900e-05 -7.16261e-02 7.43900e-05 +Row 4 + 1.32251e+00 -1.98460e-04 -7.43900e-05 7.43900e-05 -7.16261e-02 +Row 5 + -1.59427e-01 -1.31465e-03 1.31465e-03 1.31465e-03 +Row 6 + 1.32243e+00 -9.14026e-04 -9.14026e-04 +Row 7 + 1.32243e+00 9.14026e-04 +Row 8 + 1.32243e+00 +#------------------------------------------------------------------------ +# ionic step 2 +# filename OUT.autotest/hk_nao.txt +# gamma only 1 +# rows 8 +# columns 8 +#------------------------------------------------------------------------ +Row 1 + -1.46817e-01 -2.23052e-03 2.23052e-03 2.23052e-03 -4.61859e-01 -7.94508e-03 7.94508e-03 7.94508e-03 +Row 2 + 1.33207e+00 3.84287e-03 3.84287e-03 7.80125e-03 -7.60615e-02 1.44866e-02 1.44866e-02 +Row 3 + 1.33207e+00 -3.84287e-03 -7.80125e-03 1.44866e-02 -7.60615e-02 -1.44866e-02 +Row 4 + 1.33207e+00 -7.80125e-03 1.44866e-02 -1.44866e-02 -7.60615e-02 +Row 5 + -1.46819e-01 2.16332e-03 -2.16332e-03 -2.16332e-03 +Row 6 + 1.33292e+00 3.21595e-03 3.21595e-03 +Row 7 + 1.33292e+00 -3.21595e-03 +Row 8 + 1.33292e+00 diff --git a/tests/02_NAO_Gamma/relax_out_hk/result.ref b/tests/02_NAO_Gamma/relax_out_hk/result.ref new file mode 100644 index 0000000000..00650e8a1c --- /dev/null +++ b/tests/02_NAO_Gamma/relax_out_hk/result.ref @@ -0,0 +1,9 @@ +etotref -183.7731368896913 +etotperatomref -91.8865684448 +totalforceref 23.972508 +CompareH_pass 0 +CompareS_pass 0 +pointgroupref C_3v +spacegroupref D_3d +nksibzref 1 +totaltimeref 0.42 diff --git a/tests/02_NAO_Gamma/relax_out_hk/sk_nao.txt.ref b/tests/02_NAO_Gamma/relax_out_hk/sk_nao.txt.ref new file mode 100644 index 0000000000..59f326ca1a --- /dev/null +++ b/tests/02_NAO_Gamma/relax_out_hk/sk_nao.txt.ref @@ -0,0 +1,46 @@ +#------------------------------------------------------------------------ +# ionic step 1 +# filename OUT.autotest/sk_nao.txt +# gamma only 1 +# rows 8 +# columns 8 +#------------------------------------------------------------------------ +Row 1 + 1.15061e+00 -6.50521e-19 0.00000e+00 0.00000e+00 8.22869e-01 9.81584e-04 -9.81584e-04 -9.81584e-04 +Row 2 + 1.16565e+00 0.00000e+00 0.00000e+00 -9.81584e-04 -3.19683e-01 -3.40116e-03 -3.40116e-03 +Row 3 + 1.16565e+00 0.00000e+00 9.81584e-04 -3.40116e-03 -3.19683e-01 3.40116e-03 +Row 4 + 1.16565e+00 9.81584e-04 -3.40116e-03 3.40116e-03 -3.19683e-01 +Row 5 + 1.15061e+00 -6.50521e-19 0.00000e+00 0.00000e+00 +Row 6 + 1.16565e+00 0.00000e+00 0.00000e+00 +Row 7 + 1.16565e+00 0.00000e+00 +Row 8 + 1.16565e+00 +#------------------------------------------------------------------------ +# ionic step 2 +# filename OUT.autotest/sk_nao.txt +# gamma only 1 +# rows 8 +# columns 8 +#------------------------------------------------------------------------ +Row 1 + 1.15061e+00 -6.50521e-19 1.39379e-20 1.39379e-20 8.23962e-01 -1.82457e-02 1.82457e-02 1.82457e-02 +Row 2 + 1.16565e+00 -1.26565e-19 -1.26565e-19 1.82457e-02 -3.15301e-01 5.22531e-02 5.22531e-02 +Row 3 + 1.16565e+00 8.05970e-19 -1.82457e-02 5.22531e-02 -3.15301e-01 -5.22531e-02 +Row 4 + 1.16565e+00 -1.82457e-02 5.22531e-02 -5.22531e-02 -3.15301e-01 +Row 5 + 1.15061e+00 -6.50521e-19 -2.02733e-20 -2.02733e-20 +Row 6 + 1.16565e+00 1.84095e-19 1.84095e-19 +Row 7 + 1.16565e+00 -1.17232e-18 +Row 8 + 1.16565e+00 diff --git a/tests/02_NAO_Gamma/relax_out_hk_spin2/INPUT b/tests/02_NAO_Gamma/relax_out_hk_spin2/INPUT new file mode 100644 index 0000000000..a18590c76e --- /dev/null +++ b/tests/02_NAO_Gamma/relax_out_hk_spin2/INPUT @@ -0,0 +1,35 @@ +INPUT_PARAMETERS +#Parameters (1.General) +suffix autotest +calculation relax +nspin 2 + +nbands 8 +symmetry 1 +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB + +#Parameters (2.Iteration) +ecutwfc 5 +scf_thr 1e-8 +scf_nmax 100 + +#Parameters (3.Relaxation) +relax_nmax 2 +cal_force 1 +force_thr_ev 0.01 +relax_method bfgs 2 + +#Parameters (4.Basis) +basis_type lcao + +#Parameters (5.Smearing) +smearing_method fixed + +#Parameters (6.Mixing) +mixing_type broyden +mixing_beta 0.5 + +gamma_only 1 +out_mat_hs 1 5 +out_app_flag 1 diff --git a/tests/02_NAO_Gamma/relax_out_hk_spin2/STRU b/tests/02_NAO_Gamma/relax_out_hk_spin2/STRU new file mode 100644 index 0000000000..086df89083 --- /dev/null +++ b/tests/02_NAO_Gamma/relax_out_hk_spin2/STRU @@ -0,0 +1,22 @@ +ATOMIC_SPECIES +Si 28 Si_dojo_nsoc.upf + +NUMERICAL_ORBITAL +Si_dojo_6au_sz.orb + +LATTICE_CONSTANT +10.2 + +LATTICE_VECTORS +0.0 0.5 0.5 +0.5 0.0 0.5 +0.5 0.5 0.0 + +ATOMIC_POSITIONS +Direct + +Si +0.0 +2 +0.00 0.00 0.00 1 1 1 +0.251 0.251 0.251 1 1 1 diff --git a/tests/02_NAO_Gamma/relax_out_hk_spin2/hks1_nao.txt.ref b/tests/02_NAO_Gamma/relax_out_hk_spin2/hks1_nao.txt.ref new file mode 100644 index 0000000000..49626df883 --- /dev/null +++ b/tests/02_NAO_Gamma/relax_out_hk_spin2/hks1_nao.txt.ref @@ -0,0 +1,46 @@ +#------------------------------------------------------------------------ +# ionic step 1 +# filename OUT.autotest/hks1_nao.txt +# gamma only 1 +# rows 8 +# columns 8 +#------------------------------------------------------------------------ +Row 1 + -1.59432e-01 9.24250e-04 -9.24250e-04 -9.24250e-04 -4.72133e-01 -4.06675e-04 4.06675e-04 4.06675e-04 +Row 2 + 1.32251e+00 -9.21838e-04 -9.21838e-04 1.98459e-04 -7.16261e-02 -7.43902e-05 -7.43902e-05 +Row 3 + 1.32251e+00 9.21838e-04 -1.98459e-04 -7.43902e-05 -7.16261e-02 7.43902e-05 +Row 4 + 1.32251e+00 -1.98459e-04 -7.43902e-05 7.43902e-05 -7.16261e-02 +Row 5 + -1.59427e-01 -1.31465e-03 1.31465e-03 1.31465e-03 +Row 6 + 1.32243e+00 -9.14026e-04 -9.14026e-04 +Row 7 + 1.32243e+00 9.14026e-04 +Row 8 + 1.32243e+00 +#------------------------------------------------------------------------ +# ionic step 2 +# filename OUT.autotest/hks1_nao.txt +# gamma only 1 +# rows 8 +# columns 8 +#------------------------------------------------------------------------ +Row 1 + -1.46777e-01 -2.23363e-03 2.23363e-03 2.23363e-03 -4.61821e-01 -7.94405e-03 7.94405e-03 7.94405e-03 +Row 2 + 1.33207e+00 3.84212e-03 3.84212e-03 7.79856e-03 -7.60611e-02 1.44855e-02 1.44855e-02 +Row 3 + 1.33207e+00 -3.84212e-03 -7.79856e-03 1.44855e-02 -7.60611e-02 -1.44855e-02 +Row 4 + 1.33207e+00 -7.79856e-03 1.44855e-02 -1.44855e-02 -7.60611e-02 +Row 5 + -1.46781e-01 2.16502e-03 -2.16502e-03 -2.16502e-03 +Row 6 + 1.33292e+00 3.21564e-03 3.21564e-03 +Row 7 + 1.33292e+00 -3.21564e-03 +Row 8 + 1.33292e+00 diff --git a/tests/02_NAO_Gamma/relax_out_hk_spin2/hks2_nao.txt.ref b/tests/02_NAO_Gamma/relax_out_hk_spin2/hks2_nao.txt.ref new file mode 100644 index 0000000000..3040a28b9a --- /dev/null +++ b/tests/02_NAO_Gamma/relax_out_hk_spin2/hks2_nao.txt.ref @@ -0,0 +1,46 @@ +#------------------------------------------------------------------------ +# ionic step 1 +# filename OUT.autotest/hks2_nao.txt +# gamma only 1 +# rows 8 +# columns 8 +#------------------------------------------------------------------------ +Row 1 + -1.59432e-01 9.24250e-04 -9.24250e-04 -9.24250e-04 -4.72133e-01 -4.06675e-04 4.06675e-04 4.06675e-04 +Row 2 + 1.32251e+00 -9.21838e-04 -9.21838e-04 1.98459e-04 -7.16261e-02 -7.43902e-05 -7.43902e-05 +Row 3 + 1.32251e+00 9.21838e-04 -1.98459e-04 -7.43902e-05 -7.16261e-02 7.43902e-05 +Row 4 + 1.32251e+00 -1.98459e-04 -7.43902e-05 7.43902e-05 -7.16261e-02 +Row 5 + -1.59427e-01 -1.31465e-03 1.31465e-03 1.31465e-03 +Row 6 + 1.32243e+00 -9.14026e-04 -9.14026e-04 +Row 7 + 1.32243e+00 9.14026e-04 +Row 8 + 1.32243e+00 +#------------------------------------------------------------------------ +# ionic step 2 +# filename OUT.autotest/hks2_nao.txt +# gamma only 1 +# rows 8 +# columns 8 +#------------------------------------------------------------------------ +Row 1 + -1.46777e-01 -2.23363e-03 2.23363e-03 2.23363e-03 -4.61821e-01 -7.94405e-03 7.94405e-03 7.94405e-03 +Row 2 + 1.33207e+00 3.84212e-03 3.84212e-03 7.79856e-03 -7.60611e-02 1.44855e-02 1.44855e-02 +Row 3 + 1.33207e+00 -3.84212e-03 -7.79856e-03 1.44855e-02 -7.60611e-02 -1.44855e-02 +Row 4 + 1.33207e+00 -7.79856e-03 1.44855e-02 -1.44855e-02 -7.60611e-02 +Row 5 + -1.46781e-01 2.16502e-03 -2.16502e-03 -2.16502e-03 +Row 6 + 1.33292e+00 3.21564e-03 3.21564e-03 +Row 7 + 1.33292e+00 -3.21564e-03 +Row 8 + 1.33292e+00 diff --git a/tests/02_NAO_Gamma/relax_out_hk_spin2/result.ref b/tests/02_NAO_Gamma/relax_out_hk_spin2/result.ref new file mode 100644 index 0000000000..9b76a4a19f --- /dev/null +++ b/tests/02_NAO_Gamma/relax_out_hk_spin2/result.ref @@ -0,0 +1,10 @@ +etotref -183.772932286494 +etotperatomref -91.8864661432 +totalforceref 23.971608 +CompareH1_pass 0 +CompareH2_pass 0 +CompareS_pass 0 +pointgroupref C_3v +spacegroupref D_3d +nksibzref 1 +totaltimeref 0.54 diff --git a/tests/02_NAO_Gamma/relax_out_hk_spin2/sk_nao.txt.ref b/tests/02_NAO_Gamma/relax_out_hk_spin2/sk_nao.txt.ref new file mode 100644 index 0000000000..59f326ca1a --- /dev/null +++ b/tests/02_NAO_Gamma/relax_out_hk_spin2/sk_nao.txt.ref @@ -0,0 +1,46 @@ +#------------------------------------------------------------------------ +# ionic step 1 +# filename OUT.autotest/sk_nao.txt +# gamma only 1 +# rows 8 +# columns 8 +#------------------------------------------------------------------------ +Row 1 + 1.15061e+00 -6.50521e-19 0.00000e+00 0.00000e+00 8.22869e-01 9.81584e-04 -9.81584e-04 -9.81584e-04 +Row 2 + 1.16565e+00 0.00000e+00 0.00000e+00 -9.81584e-04 -3.19683e-01 -3.40116e-03 -3.40116e-03 +Row 3 + 1.16565e+00 0.00000e+00 9.81584e-04 -3.40116e-03 -3.19683e-01 3.40116e-03 +Row 4 + 1.16565e+00 9.81584e-04 -3.40116e-03 3.40116e-03 -3.19683e-01 +Row 5 + 1.15061e+00 -6.50521e-19 0.00000e+00 0.00000e+00 +Row 6 + 1.16565e+00 0.00000e+00 0.00000e+00 +Row 7 + 1.16565e+00 0.00000e+00 +Row 8 + 1.16565e+00 +#------------------------------------------------------------------------ +# ionic step 2 +# filename OUT.autotest/sk_nao.txt +# gamma only 1 +# rows 8 +# columns 8 +#------------------------------------------------------------------------ +Row 1 + 1.15061e+00 -6.50521e-19 1.39379e-20 1.39379e-20 8.23962e-01 -1.82457e-02 1.82457e-02 1.82457e-02 +Row 2 + 1.16565e+00 -1.26565e-19 -1.26565e-19 1.82457e-02 -3.15301e-01 5.22531e-02 5.22531e-02 +Row 3 + 1.16565e+00 8.05970e-19 -1.82457e-02 5.22531e-02 -3.15301e-01 -5.22531e-02 +Row 4 + 1.16565e+00 -1.82457e-02 5.22531e-02 -5.22531e-02 -3.15301e-01 +Row 5 + 1.15061e+00 -6.50521e-19 -2.02733e-20 -2.02733e-20 +Row 6 + 1.16565e+00 1.84095e-19 1.84095e-19 +Row 7 + 1.16565e+00 -1.17232e-18 +Row 8 + 1.16565e+00 diff --git a/tests/02_NAO_Gamma/scf_FeBiTe/INPUT b/tests/02_NAO_Gamma/scf_FeBiTe/INPUT new file mode 100644 index 0000000000..cfead94422 --- /dev/null +++ b/tests/02_NAO_Gamma/scf_FeBiTe/INPUT @@ -0,0 +1,12 @@ +INPUT_PARAMETERS +suffix autotest +calculation scf +ks_solver genelpa +gamma_only 1 +cal_stress 1 +cal_force 1 +stru_file STRU +basis_type lcao +dft_functional pbe +ecutwfc 10 +scf_nmax 10 diff --git a/tests/02_NAO_Gamma/007_NO_GO_OXC/KPT b/tests/02_NAO_Gamma/scf_FeBiTe/KPT similarity index 100% rename from tests/02_NAO_Gamma/007_NO_GO_OXC/KPT rename to tests/02_NAO_Gamma/scf_FeBiTe/KPT diff --git a/tests/02_NAO_Gamma/024_NO_GO_FeBiTe/STRU b/tests/02_NAO_Gamma/scf_FeBiTe/STRU similarity index 100% rename from tests/02_NAO_Gamma/024_NO_GO_FeBiTe/STRU rename to tests/02_NAO_Gamma/scf_FeBiTe/STRU diff --git a/tests/02_NAO_Gamma/024_NO_GO_FeBiTe/result.ref b/tests/02_NAO_Gamma/scf_FeBiTe/result.ref similarity index 100% rename from tests/02_NAO_Gamma/024_NO_GO_FeBiTe/result.ref rename to tests/02_NAO_Gamma/scf_FeBiTe/result.ref diff --git a/tests/02_NAO_Gamma/scf_afm/INPUT b/tests/02_NAO_Gamma/scf_afm/INPUT new file mode 100644 index 0000000000..c6a9a1c04a --- /dev/null +++ b/tests/02_NAO_Gamma/scf_afm/INPUT @@ -0,0 +1,24 @@ +INPUT_PARAMETERS + +calculation scf +ecutwfc 8 +scf_thr 1.0e-8 +scf_nmax 50 +#out_chg 1 + +smearing_method gaussian +smearing_sigma 0.02 + +mixing_type broyden +mixing_beta 0.4 +mixing_gg0 0.0 + +ks_solver scalapack_gvx +basis_type lcao +gamma_only 1 +symmetry 0 +nspin 2 + +suffix autotest +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB diff --git a/tests/02_NAO_Gamma/008_NO_GO_CF_RE/KPT b/tests/02_NAO_Gamma/scf_afm/KPT similarity index 100% rename from tests/02_NAO_Gamma/008_NO_GO_CF_RE/KPT rename to tests/02_NAO_Gamma/scf_afm/KPT diff --git a/tests/02_NAO_Gamma/002_NO_GO_AF/README b/tests/02_NAO_Gamma/scf_afm/README similarity index 100% rename from tests/02_NAO_Gamma/002_NO_GO_AF/README rename to tests/02_NAO_Gamma/scf_afm/README diff --git a/tests/02_NAO_Gamma/002_NO_GO_AF/STRU b/tests/02_NAO_Gamma/scf_afm/STRU similarity index 100% rename from tests/02_NAO_Gamma/002_NO_GO_AF/STRU rename to tests/02_NAO_Gamma/scf_afm/STRU diff --git a/tests/02_NAO_Gamma/002_NO_GO_AF/result.ref b/tests/02_NAO_Gamma/scf_afm/result.ref similarity index 100% rename from tests/02_NAO_Gamma/002_NO_GO_AF/result.ref rename to tests/02_NAO_Gamma/scf_afm/result.ref diff --git a/tests/02_NAO_Gamma/002_NO_GO_AF/threshold b/tests/02_NAO_Gamma/scf_afm/threshold similarity index 100% rename from tests/02_NAO_Gamma/002_NO_GO_AF/threshold rename to tests/02_NAO_Gamma/scf_afm/threshold diff --git a/tests/02_NAO_Gamma/scf_bsse/INPUT b/tests/02_NAO_Gamma/scf_bsse/INPUT new file mode 100644 index 0000000000..60b4b35b1e --- /dev/null +++ b/tests/02_NAO_Gamma/scf_bsse/INPUT @@ -0,0 +1,16 @@ +INPUT_PARAMETERS +suffix autotest + +nbands 6 +ecutwfc 10 +scf_thr 1e-6 +scf_nmax 100 +gamma_only 1 +calculation scf +smearing_method gaussian +smearing_sigma 0.001 +nspin 2 +basis_type lcao +ks_solver scalapack_gvx +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB diff --git a/tests/02_NAO_Gamma/009_NO_GO_CS_CR/KPT b/tests/02_NAO_Gamma/scf_bsse/KPT similarity index 100% rename from tests/02_NAO_Gamma/009_NO_GO_CS_CR/KPT rename to tests/02_NAO_Gamma/scf_bsse/KPT diff --git a/tests/02_NAO_Gamma/025_NO_GO_BS/README b/tests/02_NAO_Gamma/scf_bsse/README similarity index 100% rename from tests/02_NAO_Gamma/025_NO_GO_BS/README rename to tests/02_NAO_Gamma/scf_bsse/README diff --git a/tests/02_NAO_Gamma/025_NO_GO_BS/STRU b/tests/02_NAO_Gamma/scf_bsse/STRU similarity index 100% rename from tests/02_NAO_Gamma/025_NO_GO_BS/STRU rename to tests/02_NAO_Gamma/scf_bsse/STRU diff --git a/tests/02_NAO_Gamma/025_NO_GO_BS/result.ref b/tests/02_NAO_Gamma/scf_bsse/result.ref similarity index 100% rename from tests/02_NAO_Gamma/025_NO_GO_BS/result.ref rename to tests/02_NAO_Gamma/scf_bsse/result.ref diff --git a/tests/02_NAO_Gamma/scf_elenum/INPUT b/tests/02_NAO_Gamma/scf_elenum/INPUT new file mode 100644 index 0000000000..060865ca31 --- /dev/null +++ b/tests/02_NAO_Gamma/scf_elenum/INPUT @@ -0,0 +1,32 @@ +INPUT_PARAMETERS +#Parameters (1.General) +suffix autotest +calculation scf + +nbands 8 +symmetry 1 +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB +nelec 10 + +#Parameters (2.Iteration) +ecutwfc 10 +scf_thr 1e-7 +scf_nmax 100 + + +#Parameters (3.Basis) +basis_type lcao + +#Parameters (4.Smearing) +smearing_method gauss +smearing_sigma 0.002 + +#Parameters (5.Mixing) +mixing_type pulay +mixing_beta 0.7 + +cal_force 1 +cal_stress 1 + +gamma_only 1 diff --git a/tests/02_NAO_Gamma/010_NO_GO_RE_MB/KPT b/tests/02_NAO_Gamma/scf_elenum/KPT similarity index 100% rename from tests/02_NAO_Gamma/010_NO_GO_RE_MB/KPT rename to tests/02_NAO_Gamma/scf_elenum/KPT diff --git a/tests/02_NAO_Gamma/011_NO_GO_elec_minus/README b/tests/02_NAO_Gamma/scf_elenum/README similarity index 100% rename from tests/02_NAO_Gamma/011_NO_GO_elec_minus/README rename to tests/02_NAO_Gamma/scf_elenum/README diff --git a/tests/02_NAO_Gamma/011_NO_GO_elec_minus/STRU b/tests/02_NAO_Gamma/scf_elenum/STRU similarity index 100% rename from tests/02_NAO_Gamma/011_NO_GO_elec_minus/STRU rename to tests/02_NAO_Gamma/scf_elenum/STRU diff --git a/tests/02_NAO_Gamma/011_NO_GO_elec_minus/result.ref b/tests/02_NAO_Gamma/scf_elenum/result.ref similarity index 100% rename from tests/02_NAO_Gamma/011_NO_GO_elec_minus/result.ref rename to tests/02_NAO_Gamma/scf_elenum/result.ref diff --git a/tests/02_NAO_Gamma/scf_elenum_spin2/INPUT b/tests/02_NAO_Gamma/scf_elenum_spin2/INPUT new file mode 100644 index 0000000000..58deed7168 --- /dev/null +++ b/tests/02_NAO_Gamma/scf_elenum_spin2/INPUT @@ -0,0 +1,33 @@ +INPUT_PARAMETERS +#Parameters (1.General) +suffix autotest +calculation scf + +nbands 8 +symmetry 1 +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB +nelec 10 +nspin 2 + +#Parameters (2.Iteration) +ecutwfc 10 +scf_thr 1e-7 +scf_nmax 100 + + +#Parameters (3.Basis) +basis_type lcao + +#Parameters (4.Smearing) +smearing_method gauss +smearing_sigma 0.002 + +#Parameters (5.Mixing) +mixing_type pulay +mixing_beta 0.7 + +cal_force 1 +cal_stress 1 + +gamma_only 1 diff --git a/tests/02_NAO_Gamma/011_NO_GO_elec_minus/KPT b/tests/02_NAO_Gamma/scf_elenum_spin2/KPT similarity index 100% rename from tests/02_NAO_Gamma/011_NO_GO_elec_minus/KPT rename to tests/02_NAO_Gamma/scf_elenum_spin2/KPT diff --git a/tests/02_NAO_Gamma/012_NO_GO_S2_elec_minus/README b/tests/02_NAO_Gamma/scf_elenum_spin2/README similarity index 100% rename from tests/02_NAO_Gamma/012_NO_GO_S2_elec_minus/README rename to tests/02_NAO_Gamma/scf_elenum_spin2/README diff --git a/tests/02_NAO_Gamma/012_NO_GO_S2_elec_minus/STRU b/tests/02_NAO_Gamma/scf_elenum_spin2/STRU similarity index 100% rename from tests/02_NAO_Gamma/012_NO_GO_S2_elec_minus/STRU rename to tests/02_NAO_Gamma/scf_elenum_spin2/STRU diff --git a/tests/02_NAO_Gamma/012_NO_GO_S2_elec_minus/result.ref b/tests/02_NAO_Gamma/scf_elenum_spin2/result.ref similarity index 100% rename from tests/02_NAO_Gamma/012_NO_GO_S2_elec_minus/result.ref rename to tests/02_NAO_Gamma/scf_elenum_spin2/result.ref diff --git a/tests/02_NAO_Gamma/scf_fm/INPUT b/tests/02_NAO_Gamma/scf_fm/INPUT new file mode 100644 index 0000000000..77e6c2fdf1 --- /dev/null +++ b/tests/02_NAO_Gamma/scf_fm/INPUT @@ -0,0 +1,27 @@ +INPUT_PARAMETERS +#Parameters (1.General) +suffix autotest +calculation scf + +nbands 24 +symmetry 1 +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB +gamma_only 1 + +#Parameters (2.Iteration) +ecutwfc 20 +scf_thr 1e-6 +scf_nmax 100 + +nspin 2 +#Parameters (3.Basis) +basis_type lcao + +#Parameters (4.Smearing) +smearing_method gauss +smearing_sigma 0.002 + +#Parameters (5.Mixing) +mixing_type broyden +mixing_beta 0.7 diff --git a/tests/02_NAO_Gamma/012_NO_GO_S2_elec_minus/KPT b/tests/02_NAO_Gamma/scf_fm/KPT similarity index 100% rename from tests/02_NAO_Gamma/012_NO_GO_S2_elec_minus/KPT rename to tests/02_NAO_Gamma/scf_fm/KPT diff --git a/tests/02_NAO_Gamma/004_NO_GO_FM/README b/tests/02_NAO_Gamma/scf_fm/README similarity index 100% rename from tests/02_NAO_Gamma/004_NO_GO_FM/README rename to tests/02_NAO_Gamma/scf_fm/README diff --git a/tests/02_NAO_Gamma/004_NO_GO_FM/STRU b/tests/02_NAO_Gamma/scf_fm/STRU similarity index 100% rename from tests/02_NAO_Gamma/004_NO_GO_FM/STRU rename to tests/02_NAO_Gamma/scf_fm/STRU diff --git a/tests/02_NAO_Gamma/004_NO_GO_FM/result.ref b/tests/02_NAO_Gamma/scf_fm/result.ref similarity index 100% rename from tests/02_NAO_Gamma/004_NO_GO_FM/result.ref rename to tests/02_NAO_Gamma/scf_fm/result.ref diff --git a/tests/02_NAO_Gamma/scf_force_stress/INPUT b/tests/02_NAO_Gamma/scf_force_stress/INPUT new file mode 100644 index 0000000000..a64e6c0e72 --- /dev/null +++ b/tests/02_NAO_Gamma/scf_force_stress/INPUT @@ -0,0 +1,31 @@ +INPUT_PARAMETERS +#Parameters (1.General) +suffix autotest +calculation scf + +nbands 6 +symmetry 1 +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB +gamma_only 1 + +#Parameters (2.Iteration) +ecutwfc 20 +scf_thr 1e-8 +scf_nmax 100 + +#Parameters (3.Basis) +basis_type lcao + +#Parameters (4.Smearing) +smearing_method gauss +smearing_sigma 0.002 + +#Parameters (5.Mixing) +mixing_type broyden +mixing_beta 0.4 + +ks_solver scalapack_gvx + +cal_force 1 +cal_stress 1 diff --git a/tests/02_NAO_Gamma/013_NO_GO_get_wf/KPT b/tests/02_NAO_Gamma/scf_force_stress/KPT similarity index 100% rename from tests/02_NAO_Gamma/013_NO_GO_get_wf/KPT rename to tests/02_NAO_Gamma/scf_force_stress/KPT diff --git a/tests/02_NAO_Gamma/001_NO_GO_15_CF_CS/README b/tests/02_NAO_Gamma/scf_force_stress/README similarity index 100% rename from tests/02_NAO_Gamma/001_NO_GO_15_CF_CS/README rename to tests/02_NAO_Gamma/scf_force_stress/README diff --git a/tests/02_NAO_Gamma/001_NO_GO_15_CF_CS/STRU b/tests/02_NAO_Gamma/scf_force_stress/STRU similarity index 100% rename from tests/02_NAO_Gamma/001_NO_GO_15_CF_CS/STRU rename to tests/02_NAO_Gamma/scf_force_stress/STRU diff --git a/tests/02_NAO_Gamma/001_NO_GO_15_CF_CS/result.ref b/tests/02_NAO_Gamma/scf_force_stress/result.ref similarity index 100% rename from tests/02_NAO_Gamma/001_NO_GO_15_CF_CS/result.ref rename to tests/02_NAO_Gamma/scf_force_stress/result.ref diff --git a/tests/02_NAO_Gamma/scf_in_wf/INPUT b/tests/02_NAO_Gamma/scf_in_wf/INPUT new file mode 100644 index 0000000000..cf2b99f1b6 --- /dev/null +++ b/tests/02_NAO_Gamma/scf_in_wf/INPUT @@ -0,0 +1,22 @@ +INPUT_PARAMETERS +#Parameters (System) +suffix autotest + +nbands 4 +stru_file STRU +kpoint_file KPT +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB +latname sc + +#Parameters (PW) +ecutwfc 25.0 # Rydberg + +#Parameters (electronic) +basis_type lcao +scf_thr 1e-10 + +calculation scf +gamma_only 1 +read_file_dir . +init_wfc file diff --git a/tests/02_NAO_Gamma/014_NO_GO_wfc_file/KPT b/tests/02_NAO_Gamma/scf_in_wf/KPT similarity index 100% rename from tests/02_NAO_Gamma/014_NO_GO_wfc_file/KPT rename to tests/02_NAO_Gamma/scf_in_wf/KPT diff --git a/tests/02_NAO_Gamma/014_NO_GO_wfc_file/README b/tests/02_NAO_Gamma/scf_in_wf/README similarity index 100% rename from tests/02_NAO_Gamma/014_NO_GO_wfc_file/README rename to tests/02_NAO_Gamma/scf_in_wf/README diff --git a/tests/02_NAO_Gamma/015_NO_GO_get_pchg/STRU b/tests/02_NAO_Gamma/scf_in_wf/STRU similarity index 100% rename from tests/02_NAO_Gamma/015_NO_GO_get_pchg/STRU rename to tests/02_NAO_Gamma/scf_in_wf/STRU diff --git a/tests/02_NAO_Gamma/014_NO_GO_wfc_file/result.ref b/tests/02_NAO_Gamma/scf_in_wf/result.ref similarity index 100% rename from tests/02_NAO_Gamma/014_NO_GO_wfc_file/result.ref rename to tests/02_NAO_Gamma/scf_in_wf/result.ref diff --git a/tests/02_NAO_Gamma/015_NO_GO_get_pchg/wfs1_nao.txt b/tests/02_NAO_Gamma/scf_in_wf/wf_nao.txt similarity index 100% rename from tests/02_NAO_Gamma/015_NO_GO_get_pchg/wfs1_nao.txt rename to tests/02_NAO_Gamma/scf_in_wf/wf_nao.txt diff --git a/tests/02_NAO_Gamma/scf_metagga/INPUT b/tests/02_NAO_Gamma/scf_metagga/INPUT new file mode 100644 index 0000000000..c80c1dc3bb --- /dev/null +++ b/tests/02_NAO_Gamma/scf_metagga/INPUT @@ -0,0 +1,29 @@ +INPUT_PARAMETERS +#Parameters (1.General) +suffix autotest +calculation scf + +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB + +#Parameters (2.Iteration) +ecutwfc 10 +scf_thr 1e-7 +#pseudo_mesh 1 + +dft_functional scan + +#Parameters (3.Basis) +basis_type lcao +gamma_only 1 + +#Parameters (4.Smearing) +smearing_method gauss +smearing_sigma 0.002 + +#Parameters (5.Mixing) +mixing_type broyden +mixing_beta 0.7 + +cal_force 1 +cal_stress 1 diff --git a/tests/02_NAO_Gamma/020_NO_GO_SCAN_Si2/README b/tests/02_NAO_Gamma/scf_metagga/README similarity index 100% rename from tests/02_NAO_Gamma/020_NO_GO_SCAN_Si2/README rename to tests/02_NAO_Gamma/scf_metagga/README diff --git a/tests/02_NAO_Gamma/020_NO_GO_SCAN_Si2/STRU b/tests/02_NAO_Gamma/scf_metagga/STRU similarity index 100% rename from tests/02_NAO_Gamma/020_NO_GO_SCAN_Si2/STRU rename to tests/02_NAO_Gamma/scf_metagga/STRU diff --git a/tests/02_NAO_Gamma/020_NO_GO_SCAN_Si2/result.ref b/tests/02_NAO_Gamma/scf_metagga/result.ref similarity index 100% rename from tests/02_NAO_Gamma/020_NO_GO_SCAN_Si2/result.ref rename to tests/02_NAO_Gamma/scf_metagga/result.ref diff --git a/tests/02_NAO_Gamma/scf_ocp_spin2/INPUT b/tests/02_NAO_Gamma/scf_ocp_spin2/INPUT new file mode 100644 index 0000000000..98259274c6 --- /dev/null +++ b/tests/02_NAO_Gamma/scf_ocp_spin2/INPUT @@ -0,0 +1,31 @@ +INPUT_PARAMETERS + +# General paramters +basis_type lcao +nspin 2 +gamma_only 1 +symmetry 1 +nbands 24 +ocp 1 +ocp_set 17*1 7*0 15*1 9*0 + +# SCF parameters +calculation scf +ecutwfc 5 +scf_thr 1e-9 +scf_nmax 100 + +# Smearing +smearing_method gauss +smearing_sigma 0.002 + +# Charge mixing +mixing_type broyden +mixing_beta 0.4 +mixing_ndim 15 +mixing_gg0 1.5 + +# Directories +suffix autotest +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB diff --git a/tests/02_NAO_Gamma/015_NO_GO_get_pchg/KPT b/tests/02_NAO_Gamma/scf_ocp_spin2/KPT similarity index 100% rename from tests/02_NAO_Gamma/015_NO_GO_get_pchg/KPT rename to tests/02_NAO_Gamma/scf_ocp_spin2/KPT diff --git a/tests/02_NAO_Gamma/005_NO_GO_ocp/README b/tests/02_NAO_Gamma/scf_ocp_spin2/README similarity index 100% rename from tests/02_NAO_Gamma/005_NO_GO_ocp/README rename to tests/02_NAO_Gamma/scf_ocp_spin2/README diff --git a/tests/02_NAO_Gamma/005_NO_GO_ocp/STRU b/tests/02_NAO_Gamma/scf_ocp_spin2/STRU similarity index 100% rename from tests/02_NAO_Gamma/005_NO_GO_ocp/STRU rename to tests/02_NAO_Gamma/scf_ocp_spin2/STRU diff --git a/tests/02_NAO_Gamma/005_NO_GO_ocp/result.ref b/tests/02_NAO_Gamma/scf_ocp_spin2/result.ref similarity index 100% rename from tests/02_NAO_Gamma/005_NO_GO_ocp/result.ref rename to tests/02_NAO_Gamma/scf_ocp_spin2/result.ref diff --git a/tests/02_NAO_Gamma/005_NO_GO_ocp/threshold b/tests/02_NAO_Gamma/scf_ocp_spin2/threshold similarity index 100% rename from tests/02_NAO_Gamma/005_NO_GO_ocp/threshold rename to tests/02_NAO_Gamma/scf_ocp_spin2/threshold diff --git a/tests/02_NAO_Gamma/scf_out_dm/INPUT b/tests/02_NAO_Gamma/scf_out_dm/INPUT new file mode 100644 index 0000000000..0a748537cb --- /dev/null +++ b/tests/02_NAO_Gamma/scf_out_dm/INPUT @@ -0,0 +1,17 @@ +INPUT_PARAMETERS + +basis_type lcao +calculation scf +gamma_only 1 + +out_dmk 1 3 // file name is dm_nao.txt +nbands 4 +latname sc +ecutwfc 25.0 // Rydberg +scf_thr 1e-10 + +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB +suffix autotest +stru_file STRU +kpoint_file KPT diff --git a/tests/02_NAO_Gamma/016_NO_GO_OW/KPT b/tests/02_NAO_Gamma/scf_out_dm/KPT similarity index 100% rename from tests/02_NAO_Gamma/016_NO_GO_OW/KPT rename to tests/02_NAO_Gamma/scf_out_dm/KPT diff --git a/tests/02_NAO_Gamma/018_NO_GO_ODM/README b/tests/02_NAO_Gamma/scf_out_dm/README similarity index 100% rename from tests/02_NAO_Gamma/018_NO_GO_ODM/README rename to tests/02_NAO_Gamma/scf_out_dm/README diff --git a/tests/02_NAO_Gamma/016_NO_GO_OW/STRU b/tests/02_NAO_Gamma/scf_out_dm/STRU similarity index 100% rename from tests/02_NAO_Gamma/016_NO_GO_OW/STRU rename to tests/02_NAO_Gamma/scf_out_dm/STRU diff --git a/tests/02_NAO_Gamma/018_NO_GO_ODM/dms1_nao.txt.ref b/tests/02_NAO_Gamma/scf_out_dm/dms1_nao.txt.ref similarity index 100% rename from tests/02_NAO_Gamma/018_NO_GO_ODM/dms1_nao.txt.ref rename to tests/02_NAO_Gamma/scf_out_dm/dms1_nao.txt.ref diff --git a/tests/02_NAO_Gamma/018_NO_GO_ODM/result.ref b/tests/02_NAO_Gamma/scf_out_dm/result.ref similarity index 100% rename from tests/02_NAO_Gamma/018_NO_GO_ODM/result.ref rename to tests/02_NAO_Gamma/scf_out_dm/result.ref diff --git a/tests/02_NAO_Gamma/scf_out_hk/INPUT b/tests/02_NAO_Gamma/scf_out_hk/INPUT new file mode 100644 index 0000000000..adc8abfd9e --- /dev/null +++ b/tests/02_NAO_Gamma/scf_out_hk/INPUT @@ -0,0 +1,35 @@ +INPUT_PARAMETERS +#Parameters (1.General) +suffix autotest +calculation scf + +nbands 6 +symmetry 1 +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB +gamma_only 1 + +#Parameters (2.Iteration) +ecutwfc 20 +scf_thr 1e-8 +scf_nmax 100 + +#Parameters (3.Basis) +basis_type lcao + +#Parameters (4.Smearing) +smearing_method gauss +smearing_sigma 0.002 + +out_mat_hs 1 5 +out_ndigits 5 +#Parameters (5.Mixing) +mixing_type broyden +mixing_beta 0.7 +mixing_gg0 1.5 + +ks_solver scalapack_gvx + +bx 2 +by 2 +bz 2 diff --git a/tests/02_NAO_Gamma/006_NO_GO_OH/README b/tests/02_NAO_Gamma/scf_out_hk/README similarity index 100% rename from tests/02_NAO_Gamma/006_NO_GO_OH/README rename to tests/02_NAO_Gamma/scf_out_hk/README diff --git a/tests/02_NAO_Gamma/006_NO_GO_OH/STRU b/tests/02_NAO_Gamma/scf_out_hk/STRU similarity index 100% rename from tests/02_NAO_Gamma/006_NO_GO_OH/STRU rename to tests/02_NAO_Gamma/scf_out_hk/STRU diff --git a/tests/02_NAO_Gamma/scf_out_hk/hk_nao.txt.ref b/tests/02_NAO_Gamma/scf_out_hk/hk_nao.txt.ref new file mode 100644 index 0000000000..137aa45c0c --- /dev/null +++ b/tests/02_NAO_Gamma/scf_out_hk/hk_nao.txt.ref @@ -0,0 +1,89 @@ +#------------------------------------------------------------------------ +# ionic step 1 +# filename OUT.autotest/hk_nao.txt +# gamma only 1 +# rows 26 +# columns 26 +#------------------------------------------------------------------------ +Row 1 + -6.56277e-01 -5.05476e-03 -1.33227e-15 1.55431e-15 1.11022e-16 -6.10623e-16 1.77636e-15 8.88178e-16 + -1.62299e-16 -1.02002e-15 -2.84495e-16 1.17545e-15 4.30211e-16 -4.64911e-02 -1.64084e-01 1.56125e-17 + 4.33681e-18 4.68375e-17 -2.60209e-17 -9.02056e-17 1.56125e-17 6.75277e-19 1.04083e-17 1.64799e-17 + 5.57536e-18 -2.03830e-17 +Row 2 + 4.60976e-01 3.05311e-16 -1.94289e-16 -3.05311e-16 -5.55112e-16 -4.99600e-16 -4.99600e-16 9.59202e-18 + -4.64906e-16 4.51028e-17 -1.67832e-16 -2.15106e-16 -1.64665e-01 1.35775e-02 -7.45931e-17 1.82146e-17 + 8.06646e-17 5.55112e-17 -5.20417e-18 -3.98986e-17 3.00313e-18 -6.31006e-17 -3.55618e-17 3.42436e-17 + -5.78964e-17 +Row 3 + -1.51652e-01 7.84095e-16 5.20417e-17 1.42215e-02 -6.52256e-16 -1.38778e-17 1.27676e-15 2.77556e-16 + -7.77156e-16 7.33767e-17 9.97934e-04 -1.77809e-17 7.97973e-17 3.57734e-02 -1.30104e-17 -7.80626e-18 + -2.51578e-02 -1.12757e-16 -7.97973e-17 -1.19262e-18 -7.15573e-18 2.84061e-17 -1.45213e-18 2.39861e-02 +Row 4 + -1.51652e-01 1.38778e-16 -9.64506e-16 1.42215e-02 -2.35922e-16 -5.55112e-17 8.32667e-17 9.97934e-04 + -1.66533e-16 5.55112e-16 2.51535e-17 -1.21431e-16 -8.23994e-18 3.57734e-02 -3.03577e-18 -5.20417e-18 + -2.51578e-02 -8.67362e-18 6.12574e-18 1.73472e-18 2.39861e-02 -1.84314e-18 -2.27682e-17 +Row 5 + -1.51652e-01 -3.46945e-17 -1.52656e-16 1.42215e-02 -2.77556e-17 9.97934e-04 5.82867e-16 9.99201e-16 + -1.66533e-16 4.98733e-17 7.97973e-17 -3.90313e-18 -2.03830e-17 3.57734e-02 3.29597e-17 -1.73472e-18 + -2.51578e-02 1.16552e-17 2.39861e-02 -5.20417e-18 -1.26852e-17 -6.50521e-18 +Row 6 + 6.77097e-01 -2.28983e-16 7.63278e-17 2.05391e-15 -8.32667e-16 1.22125e-15 -5.73015e-17 -1.33953e-03 + 6.03901e-17 1.73472e-18 -2.59125e-02 2.42861e-17 2.94903e-17 -8.86435e-02 3.46945e-18 -5.03070e-17 + 8.02310e-18 6.53774e-17 4.97649e-17 3.04771e-18 -2.24211e-02 +Row 7 + 6.77097e-01 -1.14492e-16 6.38378e-16 8.32667e-17 -1.33953e-03 3.88578e-16 1.38778e-16 -1.01915e-17 + 2.68882e-17 -8.32667e-17 -2.59125e-02 -7.41594e-17 -1.21431e-17 -8.86435e-02 7.45931e-17 -3.11166e-17 + -2.82977e-17 -2.24211e-02 -1.08420e-18 -5.72459e-17 +Row 8 + 6.77097e-01 2.49800e-16 -1.33953e-03 -1.38778e-16 1.33227e-15 -6.38378e-16 5.52943e-17 1.73472e-17 + 2.25514e-17 5.20417e-18 -2.59125e-02 -2.77556e-17 8.67362e-17 -8.86435e-02 2.86229e-17 -2.24211e-02 + -1.12757e-17 1.86483e-17 -4.01155e-18 +Row 9 + 7.51161e-01 -2.08167e-16 1.94289e-16 1.34361e-16 6.52256e-16 2.41146e-19 -2.15455e-17 -7.80626e-18 + -6.07153e-18 -3.46945e-18 5.55112e-17 -8.67362e-18 2.60209e-18 1.13528e-02 1.51788e-18 2.16840e-18 + -1.72670e-18 4.33681e-18 +Row 10 + 7.50429e-01 1.50921e-16 -1.04083e-16 -1.01481e-16 -5.63785e-18 1.21431e-17 -1.47451e-17 -2.08167e-17 + -2.35685e-02 -5.55112e-17 1.38778e-17 2.18116e-02 6.05798e-18 -2.05655e-02 9.75782e-18 1.23735e-17 + 1.25767e-17 +Row 11 + 7.50429e-01 7.63278e-17 1.02522e-15 -1.01915e-17 1.73472e-18 1.04083e-17 -2.35685e-02 -3.46945e-17 + -2.60209e-17 2.18116e-02 1.90820e-17 2.97478e-18 2.16840e-17 -2.05655e-02 -1.15603e-17 2.19009e-17 +Row 12 + 7.51161e-01 9.54624e-18 6.69062e-19 2.99309e-18 3.31382e-18 -7.80626e-18 1.51788e-17 -6.51442e-18 + -4.16334e-17 7.28584e-17 -1.40118e-18 -8.67362e-19 -2.60209e-18 1.13528e-02 1.97400e-19 +Row 13 + 7.50429e-01 -2.49366e-18 4.59702e-17 -2.35685e-02 4.33681e-18 9.54098e-18 2.18116e-02 6.07153e-17 + -2.25514e-17 -6.17995e-18 3.90313e-18 9.32414e-18 -4.52633e-19 -2.05655e-02 +Row 14 + -6.56278e-01 -5.05718e-03 1.30234e-15 -3.20967e-15 -1.35655e-15 4.35416e-16 -4.33681e-19 -1.85182e-16 + 1.74350e-16 9.40654e-16 5.16080e-16 -2.56515e-16 -8.67362e-17 +Row 15 + 4.60963e-01 2.92301e-16 -3.22659e-16 -3.50414e-16 2.09902e-16 -6.90420e-16 -1.09288e-16 1.98577e-17 + -2.04264e-16 -9.84456e-17 -1.94494e-16 8.19657e-17 +Row 16 + -1.51655e-01 -4.03323e-16 -1.84748e-16 1.42256e-02 -2.67147e-16 4.77049e-17 1.48536e-16 3.68629e-17 + 1.18482e-15 -5.77429e-17 -9.97149e-04 +Row 17 + -1.51655e-01 3.20924e-17 -1.87350e-16 1.42256e-02 -4.68375e-17 -1.07228e-15 -7.14706e-16 -9.97149e-04 + -2.08167e-17 9.49761e-17 +Row 18 + -1.51655e-01 8.06646e-17 3.72966e-17 1.42256e-02 -9.34691e-16 -9.97149e-04 -8.75602e-16 -4.27284e-16 + 2.20527e-15 +Row 19 + 6.77076e-01 -4.85723e-17 -1.28370e-16 2.68665e-16 1.52135e-15 1.01568e-15 -1.78500e-17 1.33804e-03 +Row 20 + 6.77076e-01 -1.90820e-16 -5.74085e-16 3.15286e-16 1.33804e-03 -1.89931e-15 5.42101e-16 +Row 21 + 6.77076e-01 -6.62990e-16 1.33804e-03 -6.43149e-16 7.92769e-16 1.70870e-15 +Row 22 + 7.51153e-01 7.86047e-18 -2.49150e-16 5.11870e-16 2.03071e-16 +Row 23 + 7.50428e-01 2.36356e-17 1.62305e-16 -2.94903e-16 +Row 24 + 7.50428e-01 -1.48536e-17 -3.10732e-16 +Row 25 + 7.51153e-01 3.68701e-17 +Row 26 + 7.50428e-01 diff --git a/tests/02_NAO_Gamma/scf_out_hk/result.ref b/tests/02_NAO_Gamma/scf_out_hk/result.ref new file mode 100644 index 0000000000..768476ba12 --- /dev/null +++ b/tests/02_NAO_Gamma/scf_out_hk/result.ref @@ -0,0 +1,8 @@ +etotref -204.106280612482 +etotperatomref -102.0531403062 +CompareH_pass 0 +CompareS_pass 0 +pointgroupref T_d +spacegroupref O_h +nksibzref 1 +totaltimeref 1.39 diff --git a/tests/02_NAO_Gamma/scf_out_hk/sk_nao.txt.ref b/tests/02_NAO_Gamma/scf_out_hk/sk_nao.txt.ref new file mode 100644 index 0000000000..4ac100c852 --- /dev/null +++ b/tests/02_NAO_Gamma/scf_out_hk/sk_nao.txt.ref @@ -0,0 +1,89 @@ +#------------------------------------------------------------------------ +# ionic step 1 +# filename OUT.autotest/sk_nao.txt +# gamma only 1 +# rows 26 +# columns 26 +#------------------------------------------------------------------------ +Row 1 + 1.00017e+00 1.88614e-03 -1.35525e-20 0.00000e+00 0.00000e+00 -5.42101e-20 0.00000e+00 0.00000e+00 + -2.71051e-20 0.00000e+00 0.00000e+00 3.04932e-20 0.00000e+00 4.67829e-02 2.35350e-01 0.00000e+00 + 0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00 + -1.20753e-18 0.00000e+00 +Row 2 + 1.02054e+00 0.00000e+00 0.00000e+00 0.00000e+00 -8.67362e-19 0.00000e+00 0.00000e+00 -2.16840e-19 + 0.00000e+00 0.00000e+00 4.33681e-19 0.00000e+00 2.35350e-01 6.08580e-01 0.00000e+00 0.00000e+00 + 0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00 -1.51754e-17 + 0.00000e+00 +Row 3 + 9.98375e-01 0.00000e+00 0.00000e+00 5.69658e-03 0.00000e+00 0.00000e+00 6.77626e-21 0.00000e+00 + 0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00 -8.35117e-02 0.00000e+00 0.00000e+00 + 1.49288e-01 0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00 -4.17224e-02 +Row 4 + 9.98375e-01 0.00000e+00 0.00000e+00 5.69658e-03 0.00000e+00 0.00000e+00 1.35525e-20 0.00000e+00 + 0.00000e+00 6.77626e-21 0.00000e+00 0.00000e+00 0.00000e+00 -8.35117e-02 0.00000e+00 0.00000e+00 + 1.49288e-01 0.00000e+00 0.00000e+00 0.00000e+00 -4.17224e-02 0.00000e+00 0.00000e+00 +Row 5 + 9.98375e-01 0.00000e+00 0.00000e+00 5.69658e-03 0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00 + 6.77626e-21 0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00 -8.35117e-02 0.00000e+00 0.00000e+00 + 1.49288e-01 0.00000e+00 -4.17224e-02 0.00000e+00 0.00000e+00 0.00000e+00 +Row 6 + 9.80005e-01 0.00000e+00 0.00000e+00 2.71051e-20 0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00 + 0.00000e+00 0.00000e+00 1.49288e-01 0.00000e+00 0.00000e+00 -1.30508e-01 0.00000e+00 0.00000e+00 + 0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00 1.39401e-01 +Row 7 + 9.80005e-01 0.00000e+00 0.00000e+00 -5.42101e-20 0.00000e+00 0.00000e+00 -1.35525e-20 0.00000e+00 + 0.00000e+00 0.00000e+00 1.49288e-01 0.00000e+00 0.00000e+00 -1.30508e-01 0.00000e+00 0.00000e+00 + 0.00000e+00 1.39401e-01 0.00000e+00 0.00000e+00 +Row 8 + 9.80005e-01 0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00 1.35525e-20 0.00000e+00 0.00000e+00 + 0.00000e+00 0.00000e+00 1.49288e-01 0.00000e+00 0.00000e+00 -1.30508e-01 0.00000e+00 1.39401e-01 + 0.00000e+00 0.00000e+00 0.00000e+00 +Row 9 + 1.00007e+00 0.00000e+00 0.00000e+00 -2.37169e-20 0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00 + 0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00 6.29942e-03 0.00000e+00 0.00000e+00 + -6.16963e-19 0.00000e+00 +Row 10 + 1.00025e+00 0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00 + 4.17224e-02 0.00000e+00 0.00000e+00 -1.39401e-01 0.00000e+00 7.89480e-03 0.00000e+00 0.00000e+00 + 0.00000e+00 +Row 11 + 1.00025e+00 0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00 4.17224e-02 0.00000e+00 + 0.00000e+00 -1.39401e-01 0.00000e+00 0.00000e+00 0.00000e+00 7.89480e-03 0.00000e+00 0.00000e+00 +Row 12 + 1.00007e+00 0.00000e+00 -1.20753e-18 -1.51754e-17 0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00 + 0.00000e+00 0.00000e+00 -6.16963e-19 0.00000e+00 0.00000e+00 6.29942e-03 0.00000e+00 +Row 13 + 1.00025e+00 0.00000e+00 0.00000e+00 4.17224e-02 0.00000e+00 0.00000e+00 -1.39401e-01 0.00000e+00 + 0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00 7.89480e-03 +Row 14 + 1.00017e+00 1.88614e-03 -1.35525e-20 0.00000e+00 0.00000e+00 -5.42101e-20 0.00000e+00 0.00000e+00 + -2.71051e-20 0.00000e+00 0.00000e+00 3.04932e-20 0.00000e+00 +Row 15 + 1.02054e+00 0.00000e+00 0.00000e+00 0.00000e+00 -8.67362e-19 0.00000e+00 0.00000e+00 -2.16840e-19 + 0.00000e+00 0.00000e+00 4.33681e-19 0.00000e+00 +Row 16 + 9.98375e-01 0.00000e+00 0.00000e+00 5.69658e-03 0.00000e+00 0.00000e+00 6.77626e-21 0.00000e+00 + 0.00000e+00 0.00000e+00 0.00000e+00 +Row 17 + 9.98375e-01 0.00000e+00 0.00000e+00 5.69658e-03 0.00000e+00 0.00000e+00 1.35525e-20 0.00000e+00 + 0.00000e+00 6.77626e-21 +Row 18 + 9.98375e-01 0.00000e+00 0.00000e+00 5.69658e-03 0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00 + 6.77626e-21 +Row 19 + 9.80005e-01 0.00000e+00 0.00000e+00 2.71051e-20 0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00 +Row 20 + 9.80005e-01 0.00000e+00 0.00000e+00 -5.42101e-20 0.00000e+00 0.00000e+00 -1.35525e-20 +Row 21 + 9.80005e-01 0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00 1.35525e-20 +Row 22 + 1.00007e+00 0.00000e+00 0.00000e+00 -2.37169e-20 0.00000e+00 +Row 23 + 1.00025e+00 0.00000e+00 0.00000e+00 0.00000e+00 +Row 24 + 1.00025e+00 0.00000e+00 0.00000e+00 +Row 25 + 1.00007e+00 0.00000e+00 +Row 26 + 1.00025e+00 diff --git a/tests/02_NAO_Gamma/scf_out_hk_spin2/INPUT b/tests/02_NAO_Gamma/scf_out_hk_spin2/INPUT new file mode 100644 index 0000000000..9e25eaf0d6 --- /dev/null +++ b/tests/02_NAO_Gamma/scf_out_hk_spin2/INPUT @@ -0,0 +1,35 @@ +INPUT_PARAMETERS +#Parameters (1.General) +suffix autotest +calculation scf +nspin 2 + +nbands 6 +symmetry 1 +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB +gamma_only 1 + +#Parameters (2.Iteration) +ecutwfc 5 +scf_thr 1e-8 +scf_nmax 100 + +#Parameters (3.Basis) +basis_type lcao + +#Parameters (4.Smearing) +smearing_method gauss +smearing_sigma 0.002 + +out_mat_hs 1 2 +#Parameters (5.Mixing) +mixing_type broyden +mixing_beta 0.7 +mixing_gg0 1.5 + +ks_solver scalapack_gvx + +bx 2 +by 2 +bz 2 diff --git a/tests/02_NAO_Gamma/scf_out_hk_spin2/README b/tests/02_NAO_Gamma/scf_out_hk_spin2/README new file mode 100644 index 0000000000..77810b9c46 --- /dev/null +++ b/tests/02_NAO_Gamma/scf_out_hk_spin2/README @@ -0,0 +1 @@ +test for output H matrix with gamma_only and nspin=2, SZ orbital diff --git a/tests/02_NAO_Gamma/scf_out_hk_spin2/STRU b/tests/02_NAO_Gamma/scf_out_hk_spin2/STRU new file mode 100644 index 0000000000..8482d4e52d --- /dev/null +++ b/tests/02_NAO_Gamma/scf_out_hk_spin2/STRU @@ -0,0 +1,22 @@ +ATOMIC_SPECIES +Si 14 Si_dojo_nsoc.upf + +NUMERICAL_ORBITAL +Si_dojo_6au_sz.orb + +LATTICE_CONSTANT +20 // add lattice constant + +LATTICE_VECTORS +0.0 0.5 0.5 +0.5 0.0 0.5 +0.5 0.5 0.0 + +ATOMIC_POSITIONS +Direct + +Si // Element type +0.0 // magnetism +2 +0.00 0.00 0.00 1 1 1 +0.25 0.25 0.25 1 1 1 diff --git a/tests/02_NAO_Gamma/scf_out_hk_spin2/hks1_nao.txt.ref b/tests/02_NAO_Gamma/scf_out_hk_spin2/hks1_nao.txt.ref new file mode 100644 index 0000000000..00b1f8ae9b --- /dev/null +++ b/tests/02_NAO_Gamma/scf_out_hk_spin2/hks1_nao.txt.ref @@ -0,0 +1,23 @@ +#------------------------------------------------------------------------ +# ionic step 1 +# filename OUT.autotest/hks1_nao.txt +# gamma only 1 +# rows 8 +# columns 8 +#------------------------------------------------------------------------ +Row 1 + -4.41e-01 1.44e-15 -1.83e-15 1.55e-15 -1.34e-02 1.18e-16 3.80e-17 -1.90e-16 +Row 2 + 9.28e-01 -2.33e-15 -1.71e-15 -6.37e-17 -3.35e-02 -6.99e-17 -2.17e-16 +Row 3 + 9.28e-01 -8.05e-16 -1.29e-16 8.38e-17 -3.35e-02 1.23e-16 +Row 4 + 9.28e-01 3.30e-16 -4.16e-17 -2.03e-16 -3.35e-02 +Row 5 + -4.41e-01 1.54e-15 3.61e-16 2.12e-15 +Row 6 + 9.28e-01 1.00e-15 6.24e-16 +Row 7 + 9.28e-01 -4.42e-16 +Row 8 + 9.28e-01 diff --git a/tests/02_NAO_Gamma/scf_out_hk_spin2/hks2_nao.txt.ref b/tests/02_NAO_Gamma/scf_out_hk_spin2/hks2_nao.txt.ref new file mode 100644 index 0000000000..645d43e533 --- /dev/null +++ b/tests/02_NAO_Gamma/scf_out_hk_spin2/hks2_nao.txt.ref @@ -0,0 +1,23 @@ +#------------------------------------------------------------------------ +# ionic step 1 +# filename OUT.autotest/hks2_nao.txt +# gamma only 1 +# rows 8 +# columns 8 +#------------------------------------------------------------------------ +Row 1 + -2.59e-01 -2.50e-15 3.61e-15 -2.16e-15 -1.31e-02 -9.33e-16 5.97e-17 5.03e-16 +Row 2 + 1.12e+00 9.21e-15 2.39e-15 1.10e-15 -3.45e-02 -4.14e-15 -1.24e-16 +Row 3 + 1.12e+00 3.23e-15 4.39e-16 2.31e-15 -3.45e-02 1.86e-15 +Row 4 + 1.12e+00 1.16e-15 1.94e-15 5.00e-15 -3.45e-02 +Row 5 + -2.59e-01 -7.13e-16 -9.52e-16 -2.94e-15 +Row 6 + 1.12e+00 -2.08e-15 -2.20e-15 +Row 7 + 1.12e+00 -2.01e-15 +Row 8 + 1.12e+00 diff --git a/tests/02_NAO_Gamma/scf_out_hk_spin2/result.ref b/tests/02_NAO_Gamma/scf_out_hk_spin2/result.ref new file mode 100644 index 0000000000..bf82a06207 --- /dev/null +++ b/tests/02_NAO_Gamma/scf_out_hk_spin2/result.ref @@ -0,0 +1,9 @@ +etotref -170.3619865737633 +etotperatomref -85.1809932869 +CompareH1_pass 0 +CompareH2_pass 0 +CompareS_pass 0 +pointgroupref T_d +spacegroupref O_h +nksibzref 1 +totaltimeref 0.50 diff --git a/tests/02_NAO_Gamma/scf_out_hk_spin2/sk_nao.txt.ref b/tests/02_NAO_Gamma/scf_out_hk_spin2/sk_nao.txt.ref new file mode 100644 index 0000000000..b48d97c3fb --- /dev/null +++ b/tests/02_NAO_Gamma/scf_out_hk_spin2/sk_nao.txt.ref @@ -0,0 +1,23 @@ +#------------------------------------------------------------------------ +# ionic step 1 +# filename OUT.autotest/sk_nao.txt +# gamma only 1 +# rows 8 +# columns 8 +#------------------------------------------------------------------------ +Row 1 + 1.00e+00 0.00e+00 0.00e+00 0.00e+00 6.14e-03 0.00e+00 0.00e+00 0.00e+00 +Row 2 + 1.00e+00 0.00e+00 0.00e+00 0.00e+00 -1.54e-02 0.00e+00 0.00e+00 +Row 3 + 1.00e+00 0.00e+00 0.00e+00 0.00e+00 -1.54e-02 0.00e+00 +Row 4 + 1.00e+00 0.00e+00 0.00e+00 0.00e+00 -1.54e-02 +Row 5 + 1.00e+00 0.00e+00 0.00e+00 0.00e+00 +Row 6 + 1.00e+00 0.00e+00 0.00e+00 +Row 7 + 1.00e+00 0.00e+00 +Row 8 + 1.00e+00 diff --git a/tests/02_NAO_Gamma/scf_out_hxc/INPUT b/tests/02_NAO_Gamma/scf_out_hxc/INPUT new file mode 100644 index 0000000000..b53704a5dd --- /dev/null +++ b/tests/02_NAO_Gamma/scf_out_hxc/INPUT @@ -0,0 +1,38 @@ +INPUT_PARAMETERS +#Parameters (1.General) +suffix autotest +calculation scf + +nbands 6 +symmetry 1 +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB +gamma_only 1 + +#Parameters (2.Iteration) +ecutwfc 20 +scf_thr 1e-8 +scf_nmax 100 + + +#Parameters (3.Basis) +basis_type lcao + +#Parameters (4.Smearing) +smearing_method gauss +smearing_sigma 0.002 + +out_mat_xc 1 +out_mat_xc2 1 +out_eband_terms 1 + +#Parameters (5.Mixing) +mixing_type broyden +mixing_beta 0.7 +mixing_gg0 1.5 + +ks_solver scalapack_gvx + +bx 2 +by 2 +bz 2 diff --git a/tests/02_NAO_Gamma/017_NO_GO_mulliken/KPT b/tests/02_NAO_Gamma/scf_out_hxc/KPT similarity index 100% rename from tests/02_NAO_Gamma/017_NO_GO_mulliken/KPT rename to tests/02_NAO_Gamma/scf_out_hxc/KPT diff --git a/tests/02_NAO_Gamma/007_NO_GO_OXC/README b/tests/02_NAO_Gamma/scf_out_hxc/README similarity index 100% rename from tests/02_NAO_Gamma/007_NO_GO_OXC/README rename to tests/02_NAO_Gamma/scf_out_hxc/README diff --git a/tests/02_NAO_Gamma/007_NO_GO_OXC/STRU b/tests/02_NAO_Gamma/scf_out_hxc/STRU similarity index 100% rename from tests/02_NAO_Gamma/007_NO_GO_OXC/STRU rename to tests/02_NAO_Gamma/scf_out_hxc/STRU diff --git a/tests/02_NAO_Gamma/007_NO_GO_OXC/Vxc_R_spin0.ref b/tests/02_NAO_Gamma/scf_out_hxc/Vxc_R_spin0.ref similarity index 100% rename from tests/02_NAO_Gamma/007_NO_GO_OXC/Vxc_R_spin0.ref rename to tests/02_NAO_Gamma/scf_out_hxc/Vxc_R_spin0.ref diff --git a/tests/02_NAO_Gamma/007_NO_GO_OXC/kinetic_out.ref b/tests/02_NAO_Gamma/scf_out_hxc/kinetic_out.ref similarity index 100% rename from tests/02_NAO_Gamma/007_NO_GO_OXC/kinetic_out.ref rename to tests/02_NAO_Gamma/scf_out_hxc/kinetic_out.ref diff --git a/tests/02_NAO_Gamma/007_NO_GO_OXC/result.ref b/tests/02_NAO_Gamma/scf_out_hxc/result.ref similarity index 100% rename from tests/02_NAO_Gamma/007_NO_GO_OXC/result.ref rename to tests/02_NAO_Gamma/scf_out_hxc/result.ref diff --git a/tests/02_NAO_Gamma/007_NO_GO_OXC/vhartree_out.ref b/tests/02_NAO_Gamma/scf_out_hxc/vhartree_out.ref similarity index 100% rename from tests/02_NAO_Gamma/007_NO_GO_OXC/vhartree_out.ref rename to tests/02_NAO_Gamma/scf_out_hxc/vhartree_out.ref diff --git a/tests/02_NAO_Gamma/007_NO_GO_OXC/vpp_local_out.ref b/tests/02_NAO_Gamma/scf_out_hxc/vpp_local_out.ref similarity index 100% rename from tests/02_NAO_Gamma/007_NO_GO_OXC/vpp_local_out.ref rename to tests/02_NAO_Gamma/scf_out_hxc/vpp_local_out.ref diff --git a/tests/02_NAO_Gamma/007_NO_GO_OXC/vpp_nonlocal_out.ref b/tests/02_NAO_Gamma/scf_out_hxc/vpp_nonlocal_out.ref similarity index 100% rename from tests/02_NAO_Gamma/007_NO_GO_OXC/vpp_nonlocal_out.ref rename to tests/02_NAO_Gamma/scf_out_hxc/vpp_nonlocal_out.ref diff --git a/tests/02_NAO_Gamma/scf_out_hxc/vxc_nao.txt.ref b/tests/02_NAO_Gamma/scf_out_hxc/vxc_nao.txt.ref new file mode 100644 index 0000000000..928cc55fda --- /dev/null +++ b/tests/02_NAO_Gamma/scf_out_hxc/vxc_nao.txt.ref @@ -0,0 +1,19 @@ +#------------------------------------------------------------------------ +# ionic step 0 +# filename OUT.autotest/vxc_nao.txt +# gamma only 1 +# rows 6 +# columns 6 +#------------------------------------------------------------------------ +Row 1 + -6.84690722e-01 -8.83711720e-07 3.07396085e-16 -2.58938613e-16 4.20655377e-16 -3.02896732e-16 +Row 2 + -7.14929921e-01 3.44009688e-16 3.58682784e-17 2.06556129e-16 -5.92093671e-16 +Row 3 + -5.93223965e-01 -8.19837896e-18 2.92934486e-16 1.71874896e-06 +Row 4 + -5.93223965e-01 1.09189323e-16 -6.32572300e-08 +Row 5 + -5.93223965e-01 -2.56551521e-08 +Row 6 + -6.19565208e-01 diff --git a/tests/02_NAO_Gamma/007_NO_GO_OXC/vxc_out.ref b/tests/02_NAO_Gamma/scf_out_hxc/vxc_out.ref similarity index 100% rename from tests/02_NAO_Gamma/007_NO_GO_OXC/vxc_out.ref rename to tests/02_NAO_Gamma/scf_out_hxc/vxc_out.ref diff --git a/tests/02_NAO_Gamma/scf_out_mul/INPUT b/tests/02_NAO_Gamma/scf_out_mul/INPUT new file mode 100644 index 0000000000..f60afa98dd --- /dev/null +++ b/tests/02_NAO_Gamma/scf_out_mul/INPUT @@ -0,0 +1,21 @@ +INPUT_PARAMETERS +#Parameters (System) +suffix autotest + +nbands 4 +stru_file STRU +kpoint_file KPT +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB +latname sc +#Parameters (PW) +ecutwfc 25.0 # Rydberg +#Parameters (electronic) +basis_type lcao +scf_thr 1e-10 + +calculation scf +gamma_only 1 +out_mul 1 +cal_force 1 +cal_stress 1 diff --git a/tests/02_NAO_Gamma/018_NO_GO_ODM/KPT b/tests/02_NAO_Gamma/scf_out_mul/KPT similarity index 100% rename from tests/02_NAO_Gamma/018_NO_GO_ODM/KPT rename to tests/02_NAO_Gamma/scf_out_mul/KPT diff --git a/tests/02_NAO_Gamma/017_NO_GO_mulliken/README b/tests/02_NAO_Gamma/scf_out_mul/README similarity index 100% rename from tests/02_NAO_Gamma/017_NO_GO_mulliken/README rename to tests/02_NAO_Gamma/scf_out_mul/README diff --git a/tests/02_NAO_Gamma/017_NO_GO_mulliken/STRU b/tests/02_NAO_Gamma/scf_out_mul/STRU similarity index 100% rename from tests/02_NAO_Gamma/017_NO_GO_mulliken/STRU rename to tests/02_NAO_Gamma/scf_out_mul/STRU diff --git a/tests/02_NAO_Gamma/scf_out_mul/mulliken.txt.ref b/tests/02_NAO_Gamma/scf_out_mul/mulliken.txt.ref new file mode 100644 index 0000000000..2b675eaa17 --- /dev/null +++ b/tests/02_NAO_Gamma/scf_out_mul/mulliken.txt.ref @@ -0,0 +1,41 @@ + --- Ionic Step 1 --- + Total charge 2 + Decomposed Mulliken population analysis for each atom + l and m from Ylm, z stands for zeta orbital + + ------------------ + Atom 1 is H + ------------------ + zeta spin1 + s 1 0.9980 + s 2 -0.0052 + sum mz 0.9928 + + pz 1 0.0072 + px 1 0.0000 + py 1 0.0000 + sum m 0.0072 + sum mz 0.0072 + + sum lmz 1.0000 + + total charge on atom 1 1.0000 + + ------------------ + Atom 2 is H + ------------------ + zeta spin1 + s 1 0.9980 + s 2 -0.0052 + sum mz 0.9928 + + pz 1 0.0072 + px 1 0.0000 + py 1 0.0000 + sum m 0.0072 + sum mz 0.0072 + + sum lmz 1.0000 + + total charge on atom 2 1.0000 + diff --git a/tests/02_NAO_Gamma/017_NO_GO_mulliken/result.ref b/tests/02_NAO_Gamma/scf_out_mul/result.ref similarity index 100% rename from tests/02_NAO_Gamma/017_NO_GO_mulliken/result.ref rename to tests/02_NAO_Gamma/scf_out_mul/result.ref diff --git a/tests/02_NAO_Gamma/scf_out_mul_spin2/INPUT b/tests/02_NAO_Gamma/scf_out_mul_spin2/INPUT new file mode 100644 index 0000000000..5a3240e181 --- /dev/null +++ b/tests/02_NAO_Gamma/scf_out_mul_spin2/INPUT @@ -0,0 +1,34 @@ +INPUT_PARAMETERS +calculation scf +ecutwfc 10 +scf_thr 1.0e-8 +scf_nmax 50 +out_chg 0 +out_mul 1 + +#init_chg file +#out_dos 1 +#dos_sigma 0.05 +#out_band 1 + +smearing_method gaussian +smearing_sigma 0.02 + +#cal_force 1 +#force_thr_ev 0.01 +#relax_method cg +#relax_bfgs_init 0.5 + +mixing_type broyden +mixing_beta 0.4 +mixing_gg0 0.0 + +ks_solver scalapack_gvx +basis_type lcao +gamma_only 1 +symmetry 0 +nspin 2 + +suffix autotest +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB diff --git a/tests/02_NAO_Gamma/019_NO_GO_sol_H2O/KPT b/tests/02_NAO_Gamma/scf_out_mul_spin2/KPT similarity index 100% rename from tests/02_NAO_Gamma/019_NO_GO_sol_H2O/KPT rename to tests/02_NAO_Gamma/scf_out_mul_spin2/KPT diff --git a/tests/02_NAO_Gamma/003_NO_GO_AF_mag/README b/tests/02_NAO_Gamma/scf_out_mul_spin2/README similarity index 100% rename from tests/02_NAO_Gamma/003_NO_GO_AF_mag/README rename to tests/02_NAO_Gamma/scf_out_mul_spin2/README diff --git a/tests/02_NAO_Gamma/003_NO_GO_AF_mag/STRU b/tests/02_NAO_Gamma/scf_out_mul_spin2/STRU similarity index 100% rename from tests/02_NAO_Gamma/003_NO_GO_AF_mag/STRU rename to tests/02_NAO_Gamma/scf_out_mul_spin2/STRU diff --git a/tests/02_NAO_Gamma/scf_out_mul_spin2/mulliken.txt.ref b/tests/02_NAO_Gamma/scf_out_mul_spin2/mulliken.txt.ref new file mode 100644 index 0000000000..a2c31534af --- /dev/null +++ b/tests/02_NAO_Gamma/scf_out_mul_spin2/mulliken.txt.ref @@ -0,0 +1,105 @@ + --- Ionic Step 1 --- + Total charge 32 + Total charge of spin1 16 + Total charge of spin2 16 + Decomposed Mulliken population analysis for each atom + l and m from Ylm, z stands for zeta orbital + + ------------------ + Atom 1 is Fe1 + ------------------ + zeta spin1 spin2 sum diff + s 1 0.9437 0.8381 1.7818 0.1056 + s 2 0.7227 0.6130 1.3357 0.1097 + s 3 0.3242 0.3234 0.6477 0.0008 + s 4 0.0058 0.0045 0.0103 0.0012 + sum mz 1.9963 1.7790 3.7754 0.2173 + + pz 1 0.1306 0.1312 0.2619 -0.0006 + px 1 0.1306 0.1312 0.2619 -0.0006 + py 1 0.1306 0.1312 0.2619 -0.0006 + sum m 0.3918 0.3937 0.7856 -0.0019 + pz 2 0.8694 0.8688 1.7381 0.0006 + px 2 0.8694 0.8688 1.7381 0.0006 + py 2 0.8694 0.8688 1.7381 0.0006 + sum m 2.6081 2.6063 5.2144 0.0019 + sum mz 3.0000 3.0000 5.9999 -0.0000 + + dz^2 1 0.9999 0.0361 1.0360 0.9637 + dxz 1 0.9997 0.3842 1.3839 0.6156 + dyz 1 0.9997 0.3842 1.3839 0.6156 + dx^2-y^2 1 0.9999 0.0361 1.0360 0.9637 + dxy 1 0.9997 0.3842 1.3839 0.6156 + sum m 4.9990 1.2248 6.2238 3.7742 + dz^2 2 0.0000 0.0000 0.0000 0.0000 + dxz 2 0.0001 0.0001 0.0003 -0.0000 + dyz 2 0.0001 0.0001 0.0003 -0.0000 + dx^2-y^2 2 0.0000 0.0000 0.0000 0.0000 + dxy 2 0.0001 0.0001 0.0003 -0.0000 + sum m 0.0005 0.0004 0.0009 0.0000 + sum mz 4.9994 1.2252 6.2246 3.7742 + + fz^3 1 0.0000 0.0000 0.0000 0.0000 + fxz^2 1 0.0000 0.0000 0.0000 -0.0000 + fyz^2 1 0.0000 0.0000 0.0000 -0.0000 + fzx^2-zy^2 1 0.0000 0.0000 0.0000 -0.0000 + fxyz 1 0.0000 0.0000 0.0000 0.0000 + fx^3-3*xy^2 1 0.0000 0.0000 0.0000 -0.0000 + f3yx^2-y^3 1 0.0000 0.0000 0.0000 -0.0000 + sum m 0.0000 0.0000 0.0001 0.0000 + sum mz 0.0000 0.0000 0.0001 0.0000 + + sum lmz 9.9958 6.0042 16.0000 3.9915 + + total charge on atom 1 16.0000 + total magnetism on atom 1 3.9915 + + ------------------ + Atom 2 is Fe2 + ------------------ + zeta spin1 spin2 sum diff + s 1 0.8381 0.9437 1.7818 -0.1056 + s 2 0.6130 0.7227 1.3357 -0.1097 + s 3 0.3234 0.3242 0.6477 -0.0008 + s 4 0.0045 0.0058 0.0103 -0.0012 + sum mz 1.7790 1.9963 3.7754 -0.2173 + + pz 1 0.1312 0.1306 0.2619 0.0006 + px 1 0.1312 0.1306 0.2619 0.0006 + py 1 0.1312 0.1306 0.2619 0.0006 + sum m 0.3937 0.3918 0.7856 0.0019 + pz 2 0.8688 0.8694 1.7381 -0.0006 + px 2 0.8688 0.8694 1.7381 -0.0006 + py 2 0.8688 0.8694 1.7381 -0.0006 + sum m 2.6063 2.6081 5.2144 -0.0019 + sum mz 3.0000 3.0000 5.9999 0.0000 + + dz^2 1 0.0361 0.9999 1.0360 -0.9637 + dxz 1 0.3842 0.9997 1.3839 -0.6156 + dyz 1 0.3842 0.9997 1.3839 -0.6156 + dx^2-y^2 1 0.0361 0.9999 1.0360 -0.9637 + dxy 1 0.3842 0.9997 1.3839 -0.6156 + sum m 1.2248 4.9990 6.2238 -3.7742 + dz^2 2 0.0000 0.0000 0.0000 -0.0000 + dxz 2 0.0001 0.0001 0.0003 0.0000 + dyz 2 0.0001 0.0001 0.0003 0.0000 + dx^2-y^2 2 0.0000 0.0000 0.0000 -0.0000 + dxy 2 0.0001 0.0001 0.0003 0.0000 + sum m 0.0004 0.0005 0.0009 -0.0000 + sum mz 1.2252 4.9994 6.2246 -3.7742 + + fz^3 1 0.0000 0.0000 0.0000 -0.0000 + fxz^2 1 0.0000 0.0000 0.0000 0.0000 + fyz^2 1 0.0000 0.0000 0.0000 0.0000 + fzx^2-zy^2 1 0.0000 0.0000 0.0000 0.0000 + fxyz 1 0.0000 0.0000 0.0000 -0.0000 + fx^3-3*xy^2 1 0.0000 0.0000 0.0000 0.0000 + f3yx^2-y^3 1 0.0000 0.0000 0.0000 0.0000 + sum m 0.0000 0.0000 0.0001 -0.0000 + sum mz 0.0000 0.0000 0.0001 -0.0000 + + sum lmz 6.0042 9.9958 16.0000 -3.9915 + + total charge on atom 2 16.0000 + total magnetism on atom 2 -3.9915 + diff --git a/tests/02_NAO_Gamma/003_NO_GO_AF_mag/result.ref b/tests/02_NAO_Gamma/scf_out_mul_spin2/result.ref similarity index 100% rename from tests/02_NAO_Gamma/003_NO_GO_AF_mag/result.ref rename to tests/02_NAO_Gamma/scf_out_mul_spin2/result.ref diff --git a/tests/02_NAO_Gamma/scf_out_wf/INPUT b/tests/02_NAO_Gamma/scf_out_wf/INPUT new file mode 100644 index 0000000000..57d16a17e2 --- /dev/null +++ b/tests/02_NAO_Gamma/scf_out_wf/INPUT @@ -0,0 +1,17 @@ +INPUT_PARAMETERS + +calculation scf +basis_type lcao +gamma_only 1 +out_wfc_lcao 1 + +nbands 4 +latname sc +ecutwfc 25.0 # Rydberg +scf_thr 1e-10 + +suffix autotest +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB +stru_file STRU +kpoint_file KPT diff --git a/tests/02_NAO_Gamma/022_NO_GO_MSST2/KPT b/tests/02_NAO_Gamma/scf_out_wf/KPT similarity index 100% rename from tests/02_NAO_Gamma/022_NO_GO_MSST2/KPT rename to tests/02_NAO_Gamma/scf_out_wf/KPT diff --git a/tests/02_NAO_Gamma/scf_out_wf/README b/tests/02_NAO_Gamma/scf_out_wf/README new file mode 100644 index 0000000000..c24232a9f6 --- /dev/null +++ b/tests/02_NAO_Gamma/scf_out_wf/README @@ -0,0 +1 @@ +test out_wfc_lcao > 0 for gamma only and nspin==1 diff --git a/tests/02_NAO_Gamma/018_NO_GO_ODM/STRU b/tests/02_NAO_Gamma/scf_out_wf/STRU similarity index 100% rename from tests/02_NAO_Gamma/018_NO_GO_ODM/STRU rename to tests/02_NAO_Gamma/scf_out_wf/STRU diff --git a/tests/02_NAO_Gamma/016_NO_GO_OW/result.ref b/tests/02_NAO_Gamma/scf_out_wf/result.ref similarity index 100% rename from tests/02_NAO_Gamma/016_NO_GO_OW/result.ref rename to tests/02_NAO_Gamma/scf_out_wf/result.ref diff --git a/tests/02_NAO_Gamma/016_NO_GO_OW/wfs1_nao.txt.ref b/tests/02_NAO_Gamma/scf_out_wf/wf_nao.txt.ref similarity index 100% rename from tests/02_NAO_Gamma/016_NO_GO_OW/wfs1_nao.txt.ref rename to tests/02_NAO_Gamma/scf_out_wf/wf_nao.txt.ref diff --git a/tests/02_NAO_Gamma/scf_out_wf_spin2/INPUT b/tests/02_NAO_Gamma/scf_out_wf_spin2/INPUT new file mode 100644 index 0000000000..38797b10cc --- /dev/null +++ b/tests/02_NAO_Gamma/scf_out_wf_spin2/INPUT @@ -0,0 +1,21 @@ +INPUT_PARAMETERS + +calculation scf +basis_type lcao +gamma_only 1 +out_wfc_lcao 1 +nspin 2 + +nbands 4 +latname sc +ecutwfc 25.0 # Rydberg +scf_thr 1e-10 + +suffix autotest +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB +stru_file STRU +kpoint_file KPT + +smearing_method gauss +smearing_sigma 0.01 diff --git a/tests/03_NAO_multik/32_NO_KP_get_wf/STRU b/tests/02_NAO_Gamma/scf_out_wf_spin2/STRU similarity index 100% rename from tests/03_NAO_multik/32_NO_KP_get_wf/STRU rename to tests/02_NAO_Gamma/scf_out_wf_spin2/STRU diff --git a/tests/02_NAO_Gamma/scf_solvation/INPUT b/tests/02_NAO_Gamma/scf_solvation/INPUT new file mode 100644 index 0000000000..d075904e45 --- /dev/null +++ b/tests/02_NAO_Gamma/scf_solvation/INPUT @@ -0,0 +1,25 @@ +INPUT_PARAMETERS +#Parameters (General) +suffix autotest +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB + +gamma_only 1 +nbands 5 +calculation scf +basis_type lcao + +#Parameters (Accuracy) +ecutwfc 5 +scf_thr 1e-7 +scf_nmax 50 + +#Parameters (Solvation Model) +imp_sol 1 +eb_k 80 +tau 0.000010798 +sigma_k 0.6 +nc_k 0.00037 + +cal_force 1 +cal_stress 1 diff --git a/tests/02_NAO_Gamma/024_NO_GO_FeBiTe/KPT b/tests/02_NAO_Gamma/scf_solvation/KPT similarity index 100% rename from tests/02_NAO_Gamma/024_NO_GO_FeBiTe/KPT rename to tests/02_NAO_Gamma/scf_solvation/KPT diff --git a/tests/02_NAO_Gamma/019_NO_GO_sol_H2O/README b/tests/02_NAO_Gamma/scf_solvation/README similarity index 100% rename from tests/02_NAO_Gamma/019_NO_GO_sol_H2O/README rename to tests/02_NAO_Gamma/scf_solvation/README diff --git a/tests/02_NAO_Gamma/019_NO_GO_sol_H2O/STRU b/tests/02_NAO_Gamma/scf_solvation/STRU similarity index 100% rename from tests/02_NAO_Gamma/019_NO_GO_sol_H2O/STRU rename to tests/02_NAO_Gamma/scf_solvation/STRU diff --git a/tests/02_NAO_Gamma/scf_solvation/result.ref b/tests/02_NAO_Gamma/scf_solvation/result.ref new file mode 100644 index 0000000000..d5196538b7 --- /dev/null +++ b/tests/02_NAO_Gamma/scf_solvation/result.ref @@ -0,0 +1,7 @@ +etotref -443.7852518392996899 +etotperatomref -147.9284172798 +totalforceref 187.944966 +totalstressref 4511.632916 +esolelref -18.2295218889 +esolcavref 0.2142940852 +totaltimeref 0.26 diff --git a/tests/02_NAO_Gamma/scf_u_spin2/INPUT b/tests/02_NAO_Gamma/scf_u_spin2/INPUT new file mode 100644 index 0000000000..c05b95955d --- /dev/null +++ b/tests/02_NAO_Gamma/scf_u_spin2/INPUT @@ -0,0 +1,42 @@ +INPUT_PARAMETERS +suffix autotest +nbands 28 + +calculation scf +ecutwfc 6 +scf_thr 1.0e-7 +scf_nmax 30 +out_chg 0 + +#init_chg file +#out_dos 1 +#dos_sigma 0.05 +#out_band 1 + +smearing_method gaussian +smearing_sigma 0.07 + +cal_force 1 +cal_stress 1 + +#force_thr_ev 0.01 +#relax_method cg +#relax_bfgs_init 0.5 + +mixing_type broyden +mixing_beta 0.2 +mixing_gg0 1.0 + +ks_solver scalapack_gvx +basis_type lcao +gamma_only 1 +symmetry 0 +nspin 2 + +#Parameter DFT+U +dft_plus_u 1 +orbital_corr 2 2 +hubbard_u 5.0 5.0 +onsite_radius 5.0 +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB diff --git a/tests/02_NAO_Gamma/025_NO_GO_BS/KPT b/tests/02_NAO_Gamma/scf_u_spin2/KPT similarity index 100% rename from tests/02_NAO_Gamma/025_NO_GO_BS/KPT rename to tests/02_NAO_Gamma/scf_u_spin2/KPT diff --git a/tests/02_NAO_Gamma/026_NO_GO_PU_AF/README b/tests/02_NAO_Gamma/scf_u_spin2/README similarity index 100% rename from tests/02_NAO_Gamma/026_NO_GO_PU_AF/README rename to tests/02_NAO_Gamma/scf_u_spin2/README diff --git a/tests/02_NAO_Gamma/026_NO_GO_PU_AF/STRU b/tests/02_NAO_Gamma/scf_u_spin2/STRU similarity index 100% rename from tests/02_NAO_Gamma/026_NO_GO_PU_AF/STRU rename to tests/02_NAO_Gamma/scf_u_spin2/STRU diff --git a/tests/02_NAO_Gamma/026_NO_GO_PU_AF/result.ref b/tests/02_NAO_Gamma/scf_u_spin2/result.ref similarity index 100% rename from tests/02_NAO_Gamma/026_NO_GO_PU_AF/result.ref rename to tests/02_NAO_Gamma/scf_u_spin2/result.ref diff --git a/tests/03_NAO_multik/01_NO_KP_15f_ODM/INPUT b/tests/03_NAO_multik/01_NO_KP_15f_ODM/INPUT deleted file mode 100644 index 8a69604321..0000000000 --- a/tests/03_NAO_multik/01_NO_KP_15f_ODM/INPUT +++ /dev/null @@ -1,29 +0,0 @@ -INPUT_PARAMETERS -#Parameters (1.General) -suffix autotest -calculation scf - -nbands 8 -symmetry 1 -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB - -#Parameters (2.Iteration) -ecutwfc 20 -scf_thr 1e-8 -scf_nmax 50 - -#Parameters (3.Basis) -basis_type lcao - -#Parameters (4.Smearing) -smearing_method gauss -smearing_sigma 0.002 - -#Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.7 -mixing_gg0 0.0 - -out_pot 2 -out_dmr 1 diff --git a/tests/03_NAO_multik/01_NO_KP_15f_ODM/STRU b/tests/03_NAO_multik/01_NO_KP_15f_ODM/STRU deleted file mode 100644 index c736ad2c52..0000000000 --- a/tests/03_NAO_multik/01_NO_KP_15f_ODM/STRU +++ /dev/null @@ -1,21 +0,0 @@ -ATOMIC_SPECIES -Ce 140.115 58_Ce.UPF upf201 - -NUMERICAL_ORBITAL -Ce_gga_8au_80Ry_4s2p2d2f.Orb - -LATTICE_CONSTANT -8.92 - -LATTICE_VECTORS -0.0 0.5 0.5 -0.5 0.0 0.5 -0.5 0.5 0.0 - -ATOMIC_POSITIONS -Direct - -Ce -0.0 -1 -0.00 0.00 0.00 1 1 1 diff --git a/tests/03_NAO_multik/01_NO_KP_15f_ODM/dmrs1_nao.csr.ref b/tests/03_NAO_multik/01_NO_KP_15f_ODM/dmrs1_nao.csr.ref deleted file mode 100644 index 8ab93e5367..0000000000 --- a/tests/03_NAO_multik/01_NO_KP_15f_ODM/dmrs1_nao.csr.ref +++ /dev/null @@ -1,375 +0,0 @@ -IONIC_STEP: 1 -Matrix Dimension of DM(R): 34 -Matrix number of DM(R): 93 --3 1 1 496 - -4.46730500e-01 2.90265885e-01 -6.65919095e-02 3.20736205e-02 -2.50681311e-01 -2.31073552e-01 -2.31073552e-01 2.31073552e-01 4.55715201e-02 9.09946312e-02 9.09946312e-02 -9.09946312e-02 2.90265885e-01 -7.77208948e-02 3.49623849e-02 -1.81562170e-02 1.29637869e-01 1.70706534e-01 1.70706534e-01 -1.70706534e-01 -4.68039666e-02 -8.78615395e-02 -8.78615395e-02 8.78615395e-02 -6.65919095e-02 3.49623849e-02 -8.97965282e-03 4.90391018e-03 -3.43603397e-02 -3.47760262e-02 -3.47760262e-02 3.47760262e-02 8.11017653e-03 1.51409429e-02 1.51409429e-02 -1.51409429e-02 3.20736205e-02 -1.81562170e-02 4.90391018e-03 -2.40214415e-03 1.90677593e-02 2.20810865e-02 2.20810865e-02 -2.20810865e-02 -5.48328334e-03 -1.08124682e-02 -1.08124682e-02 1.08124682e-02 -9.61307016e-02 -9.95491140e-02 -9.95491140e-02 3.84928096e-03 2.53788780e-03 2.53788780e-03 4.96626145e-03 1.19719253e-02 1.19719253e-02 1.34997473e-02 6.86525306e-04 -6.86525306e-04 7.75107441e-03 -7.88241731e-03 -7.88241731e-03 6.96401205e-03 6.65332653e-03 -6.65332653e-03 -9.95491140e-02 5.08101702e-02 9.95491140e-02 2.53788780e-03 9.11909087e-03 -2.53788780e-03 -6.78853114e-03 1.75623651e-03 3.65770659e-03 9.88504715e-03 -1.34997473e-02 2.68064379e-02 -1.14201355e-02 1.00868915e-02 -1.01418763e-02 4.47145138e-03 -2.15728427e-03 -6.96401205e-03 1.75321839e-02 9.29544937e-03 -9.95491140e-02 9.95491140e-02 5.08101702e-02 2.53788780e-03 -2.53788780e-03 9.11909087e-03 -6.78853114e-03 3.65770659e-03 1.75623651e-03 -9.88504715e-03 -1.34997473e-02 1.14201355e-02 -2.68064379e-02 1.00868915e-02 4.47145138e-03 -1.01418763e-02 2.15728427e-03 -6.96401205e-03 -9.29544937e-03 -1.75321839e-02 3.84928096e-03 2.53788780e-03 2.53788780e-03 -1.26047298e-04 7.82240681e-05 7.82240681e-05 -4.95769243e-03 -3.05324736e-03 -3.05324736e-03 -3.98965718e-03 3.80846317e-03 -3.80846317e-03 7.89606128e-05 1.92416159e-04 1.92416159e-04 5.76134452e-04 -2.19325430e-04 2.19325430e-04 2.53788780e-03 9.11909087e-03 -2.53788780e-03 7.82240681e-05 -8.82514067e-05 -7.82240681e-05 4.88057902e-03 3.11404071e-03 2.92421677e-03 -8.16061087e-05 3.98965718e-03 -3.81554628e-03 3.90840983e-03 -2.91222329e-04 -5.41259230e-05 -1.64256895e-04 1.78094826e-05 -5.76134452e-04 1.01124921e-04 -2.41137503e-04 2.53788780e-03 -2.53788780e-03 9.11909087e-03 7.82240681e-05 -7.82240681e-05 -8.82514067e-05 4.88057902e-03 2.92421677e-03 3.11404071e-03 8.16061087e-05 3.98965718e-03 -3.90840983e-03 3.81554628e-03 -2.91222329e-04 -1.64256895e-04 -5.41259230e-05 -1.78094826e-05 -5.76134452e-04 2.41137503e-04 -1.01124921e-04 -2.50681311e-01 1.29637869e-01 -3.43603397e-02 1.90677593e-02 2.55642069e-01 -5.76016724e-02 -2.31073552e-01 1.70706534e-01 -3.47760262e-02 2.20810865e-02 -8.69671403e-02 -8.69671403e-02 8.69671403e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 -2.31073552e-01 1.70706534e-01 -3.47760262e-02 2.20810865e-02 -8.69671403e-02 -8.69671403e-02 8.69671403e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 3.35169819e-01 -3.81033730e-02 -3.81033730e-02 -5.56692551e-02 4.55715201e-02 -4.68039666e-02 8.11017653e-03 -5.48328334e-03 -5.76016724e-02 1.36360519e-02 9.09946312e-02 -8.78615395e-02 1.51409429e-02 -1.08124682e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 -1.70016634e-02 -1.70016634e-02 1.70016634e-02 9.09946312e-02 -8.78615395e-02 1.51409429e-02 -1.08124682e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 -1.70016634e-02 -1.70016634e-02 1.70016634e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 -5.56692551e-02 1.70016634e-02 1.70016634e-02 3.82879364e-03 4.96626145e-03 -6.78853114e-03 -6.78853114e-03 -4.95769243e-03 4.88057902e-03 4.88057902e-03 -2.33214382e-01 -1.42959316e-01 -1.42959316e-01 -1.89783463e-01 1.84466621e-01 -1.84466621e-01 1.05548787e-02 6.47988162e-03 6.47988162e-03 2.78703402e-02 -8.34518149e-03 8.34518149e-03 1.19719253e-02 1.75623651e-03 3.65770659e-03 -3.05324736e-03 3.11404071e-03 2.92421677e-03 -1.42959316e-01 -8.74686860e-02 -8.75173384e-02 1.05433222e-04 -1.16218161e-01 1.13119631e-01 -1.12926204e-01 6.29096583e-03 3.92293329e-03 4.07789392e-03 -2.30094432e-05 1.70670281e-02 -4.94879992e-03 5.25183836e-03 1.19719253e-02 3.65770659e-03 1.75623651e-03 -3.05324736e-03 2.92421677e-03 3.11404071e-03 -1.42959316e-01 -8.75173384e-02 -8.74686860e-02 -1.05433222e-04 -1.16218161e-01 1.12926204e-01 -1.13119631e-01 6.29096583e-03 4.07789392e-03 3.92293329e-03 2.30094432e-05 1.70670281e-02 -5.25183836e-03 4.94879992e-03 9.88504715e-03 -9.88504715e-03 -8.16061087e-05 8.16061087e-05 1.05433222e-04 -1.05433222e-04 -1.78440391e-04 9.58226514e-06 9.58226514e-06 1.23324095e-04 -1.23324095e-04 3.89423179e-05 -1.91006991e-04 -1.91006991e-04 1.34997473e-02 -1.34997473e-02 -1.34997473e-02 -3.98965718e-03 3.98965718e-03 3.98965718e-03 -1.89783463e-01 -1.16218161e-01 -1.16218161e-01 5.86189719e-02 1.50037001e-01 -1.50037001e-01 8.58346559e-03 5.25627773e-03 5.25627773e-03 5.74991859e-03 -6.78582537e-03 6.78582537e-03 6.86525306e-04 2.68064379e-02 1.14201355e-02 3.80846317e-03 -3.81554628e-03 -3.90840983e-03 1.84466621e-01 1.13119631e-01 1.12926204e-01 9.58226514e-06 1.50037001e-01 -1.45660580e-01 1.45949895e-01 -8.49151503e-03 -5.04126819e-03 -5.01287669e-03 -2.09120600e-06 -2.20334385e-02 6.63188133e-03 -6.50712338e-03 -6.86525306e-04 -1.14201355e-02 -2.68064379e-02 -3.80846317e-03 3.90840983e-03 3.81554628e-03 -1.84466621e-01 -1.12926204e-01 -1.13119631e-01 9.58226514e-06 -1.50037001e-01 1.45949895e-01 -1.45660580e-01 8.49151503e-03 5.01287669e-03 5.04126819e-03 -2.09120600e-06 2.20334385e-02 -6.50712338e-03 6.63188133e-03 7.75107441e-03 1.00868915e-02 1.00868915e-02 7.89606128e-05 -2.91222329e-04 -2.91222329e-04 1.05548787e-02 6.29096583e-03 6.29096583e-03 8.58346559e-03 -8.49151503e-03 8.49151503e-03 -7.68391652e-04 -1.37774951e-04 -1.37774951e-04 -1.21596738e-03 2.58595459e-04 -2.58595459e-04 -7.88241731e-03 -1.01418763e-02 4.47145138e-03 1.92416159e-04 -5.41259230e-05 -1.64256895e-04 6.47988162e-03 3.92293329e-03 4.07789392e-03 1.23324095e-04 5.25627773e-03 -5.04126819e-03 5.01287669e-03 -1.37774951e-04 -3.28425304e-04 -1.58824815e-04 -2.69138959e-05 -7.44624905e-04 4.08892304e-04 -1.50120025e-04 -7.88241731e-03 4.47145138e-03 -1.01418763e-02 1.92416159e-04 -1.64256895e-04 -5.41259230e-05 6.47988162e-03 4.07789392e-03 3.92293329e-03 -1.23324095e-04 5.25627773e-03 -5.01287669e-03 5.04126819e-03 -1.37774951e-04 -1.58824815e-04 -3.28425304e-04 2.69138959e-05 -7.44624905e-04 1.50120025e-04 -4.08892304e-04 -2.15728427e-03 2.15728427e-03 1.78094826e-05 -1.78094826e-05 -2.30094432e-05 2.30094432e-05 3.89423179e-05 -2.09120600e-06 -2.09120600e-06 -2.69138959e-05 2.69138959e-05 -8.49865950e-06 4.16848167e-05 4.16848167e-05 6.96401205e-03 -6.96401205e-03 -6.96401205e-03 5.76134452e-04 -5.76134452e-04 -5.76134452e-04 2.78703402e-02 1.70670281e-02 1.70670281e-02 5.74991859e-03 -2.20334385e-02 2.20334385e-02 -1.21596738e-03 -7.44624905e-04 -7.44624905e-04 -2.25860819e-03 9.61306618e-04 -9.61306618e-04 6.65332653e-03 1.75321839e-02 -9.29544937e-03 -2.19325430e-04 1.01124921e-04 2.41137503e-04 -8.34518149e-03 -4.94879992e-03 -5.25183836e-03 -1.91006991e-04 -6.78582537e-03 6.63188133e-03 -6.50712338e-03 2.58595459e-04 4.08892304e-04 1.50120025e-04 4.16848167e-05 9.61306618e-04 -5.05218881e-04 1.34231757e-04 -6.65332653e-03 9.29544937e-03 -1.75321839e-02 2.19325430e-04 -2.41137503e-04 -1.01124921e-04 8.34518149e-03 5.25183836e-03 4.94879992e-03 -1.91006991e-04 6.78582537e-03 -6.50712338e-03 6.63188133e-03 -2.58595459e-04 -1.50120025e-04 -4.08892304e-04 4.16848167e-05 -9.61306618e-04 1.34231757e-04 -5.05218881e-04 - 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 - 0 12 24 36 48 66 86 106 124 144 164 170 180 190 190 200 206 216 226 226 236 254 274 294 308 326 346 366 384 404 424 438 456 476 496 --2 -2 2 496 - 1.46471486e+00 2.54883877e-01 1.24590418e-01 -9.35884290e-03 -2.50681311e-01 2.31073552e-01 2.31073552e-01 -2.31073552e-01 4.55715201e-02 -9.09946312e-02 -9.09946312e-02 9.09946312e-02 2.54883877e-01 1.70428957e+00 -9.34218553e-02 1.65342489e-01 1.29637869e-01 -1.70706534e-01 -1.70706534e-01 1.70706534e-01 -4.68039666e-02 8.78615395e-02 8.78615395e-02 -8.78615395e-02 1.24590418e-01 -9.34218553e-02 1.88920782e-02 -1.20468125e-02 -3.43603397e-02 3.47760262e-02 3.47760262e-02 -3.47760262e-02 8.11017653e-03 -1.51409429e-02 -1.51409429e-02 1.51409429e-02 -9.35884290e-03 1.65342489e-01 -1.20468125e-02 1.72406024e-02 1.90677593e-02 -2.20810865e-02 -2.20810865e-02 2.20810865e-02 -5.48328334e-03 1.08124682e-02 1.08124682e-02 -1.08124682e-02 1.89517553e+00 9.95491140e-02 9.95491140e-02 -9.15785008e-03 -2.53788780e-03 -2.53788780e-03 -2.12388496e-02 -1.19719253e-02 -1.19719253e-02 -1.34997473e-02 -6.86525306e-04 6.86525306e-04 -2.22701900e-02 7.88241731e-03 7.88241731e-03 -6.96401205e-03 -6.65332653e-03 6.65332653e-03 9.95491140e-02 2.04211641e+00 -9.95491140e-02 -2.53788780e-03 -3.88804018e-03 2.53788780e-03 6.78853114e-03 1.78035242e-02 -3.65770659e-03 -9.88504715e-03 1.34997473e-02 6.08947863e-03 1.14201355e-02 -1.00868915e-02 8.24231853e-03 -4.47145138e-03 2.15728427e-03 6.96401205e-03 -6.20170953e-03 -9.29544937e-03 9.95491140e-02 -9.95491140e-02 2.04211641e+00 -2.53788780e-03 2.53788780e-03 -3.88804018e-03 6.78853114e-03 -3.65770659e-03 1.78035242e-02 9.88504715e-03 1.34997473e-02 -1.14201355e-02 -6.08947863e-03 -1.00868915e-02 -4.47145138e-03 8.24231853e-03 -2.15728427e-03 6.96401205e-03 9.29544937e-03 6.20170953e-03 -9.15785008e-03 -2.53788780e-03 -2.53788780e-03 1.79684460e-04 -7.82240681e-05 -7.82240681e-05 4.90771661e-03 3.05324736e-03 3.05324736e-03 3.98965718e-03 -3.80846317e-03 3.80846317e-03 -8.90983131e-05 -1.92416159e-04 -1.92416159e-04 -5.76134452e-04 2.19325430e-04 -2.19325430e-04 -2.53788780e-03 -3.88804018e-03 2.53788780e-03 -7.82240681e-05 2.17480352e-04 7.82240681e-05 -4.88057902e-03 -2.92726385e-03 -2.92421677e-03 8.16061087e-05 -3.98965718e-03 3.98374436e-03 -3.90840983e-03 2.91222329e-04 4.87887308e-05 1.64256895e-04 -1.78094826e-05 5.76134452e-04 -3.17373257e-05 2.41137503e-04 -2.53788780e-03 2.53788780e-03 -3.88804018e-03 -7.82240681e-05 7.82240681e-05 2.17480352e-04 -4.88057902e-03 -2.92421677e-03 -2.92726385e-03 -8.16061087e-05 -3.98965718e-03 3.90840983e-03 -3.98374436e-03 2.91222329e-04 1.64256895e-04 4.87887308e-05 1.78094826e-05 5.76134452e-04 -2.41137503e-04 3.17373257e-05 -2.50681311e-01 1.29637869e-01 -3.43603397e-02 1.90677593e-02 2.55642069e-01 -5.76016724e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 -8.69671403e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 -8.69671403e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 -2.31073552e-01 1.70706534e-01 -3.47760262e-02 2.20810865e-02 -8.69671403e-02 -8.69671403e-02 5.09104100e-01 3.81033730e-02 3.81033730e-02 -1.31876001e-01 4.55715201e-02 -4.68039666e-02 8.11017653e-03 -5.48328334e-03 -5.76016724e-02 1.36360519e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 1.70016634e-02 1.70016634e-02 -1.70016634e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 1.70016634e-02 1.70016634e-02 -1.70016634e-02 9.09946312e-02 -8.78615395e-02 1.51409429e-02 -1.08124682e-02 3.81033730e-02 3.81033730e-02 -1.31876001e-01 -1.70016634e-02 -1.70016634e-02 3.78321204e-02 -2.12388496e-02 6.78853114e-03 6.78853114e-03 4.90771661e-03 -4.88057902e-03 -4.88057902e-03 2.33614448e-01 1.42959316e-01 1.42959316e-01 1.89783463e-01 -1.84466621e-01 1.84466621e-01 -1.02868307e-02 -6.47988162e-03 -6.47988162e-03 -2.78703402e-02 8.34518149e-03 -8.34518149e-03 -1.19719253e-02 1.78035242e-02 -3.65770659e-03 3.05324736e-03 -2.92726385e-03 -2.92421677e-03 1.42959316e-01 8.78151758e-02 8.75173384e-02 -1.05433222e-04 1.16218161e-01 -1.12710131e-01 1.12926204e-01 -6.29096583e-03 -3.94138564e-03 -4.07789392e-03 2.30094432e-05 -1.70670281e-02 5.10344353e-03 -5.25183836e-03 -1.19719253e-02 -3.65770659e-03 1.78035242e-02 3.05324736e-03 -2.92421677e-03 -2.92726385e-03 1.42959316e-01 8.75173384e-02 8.78151758e-02 1.05433222e-04 1.16218161e-01 -1.12926204e-01 1.12710131e-01 -6.29096583e-03 -4.07789392e-03 -3.94138564e-03 -2.30094432e-05 -1.70670281e-02 5.25183836e-03 -5.10344353e-03 -9.88504715e-03 9.88504715e-03 8.16061087e-05 -8.16061087e-05 -1.05433222e-04 1.05433222e-04 1.78440391e-04 -9.58226514e-06 -9.58226514e-06 -1.23324095e-04 1.23324095e-04 -3.89423179e-05 1.91006991e-04 1.91006991e-04 -1.34997473e-02 1.34997473e-02 1.34997473e-02 3.98965718e-03 -3.98965718e-03 -3.98965718e-03 1.89783463e-01 1.16218161e-01 1.16218161e-01 3.67563826e-01 -1.50037001e-01 1.50037001e-01 -8.58346559e-03 -5.25627773e-03 -5.25627773e-03 -3.91967293e-02 6.78582537e-03 -6.78582537e-03 -6.86525306e-04 6.08947863e-03 -1.14201355e-02 -3.80846317e-03 3.98374436e-03 3.90840983e-03 -1.84466621e-01 -1.12710131e-01 -1.12926204e-01 -9.58226514e-06 -1.50037001e-01 1.46241269e-01 -1.45949895e-01 8.49151503e-03 5.01097526e-03 5.01287669e-03 2.09120600e-06 2.20334385e-02 -6.42339379e-03 6.50712338e-03 6.86525306e-04 1.14201355e-02 -6.08947863e-03 3.80846317e-03 -3.90840983e-03 -3.98374436e-03 1.84466621e-01 1.12926204e-01 1.12710131e-01 -9.58226514e-06 1.50037001e-01 -1.45949895e-01 1.46241269e-01 -8.49151503e-03 -5.01287669e-03 -5.01097526e-03 2.09120600e-06 -2.20334385e-02 6.50712338e-03 -6.42339379e-03 -2.22701900e-02 -1.00868915e-02 -1.00868915e-02 -8.90983131e-05 2.91222329e-04 2.91222329e-04 -1.02868307e-02 -6.29096583e-03 -6.29096583e-03 -8.58346559e-03 8.49151503e-03 -8.49151503e-03 9.59486559e-04 1.37774951e-04 1.37774951e-04 1.21596738e-03 -2.58595459e-04 2.58595459e-04 7.88241731e-03 8.24231853e-03 -4.47145138e-03 -1.92416159e-04 4.87887308e-05 1.64256895e-04 -6.47988162e-03 -3.94138564e-03 -4.07789392e-03 -1.23324095e-04 -5.25627773e-03 5.01097526e-03 -5.01287669e-03 1.37774951e-04 3.30152350e-04 1.58824815e-04 2.69138959e-05 7.44624905e-04 -4.19384346e-04 1.50120025e-04 7.88241731e-03 -4.47145138e-03 8.24231853e-03 -1.92416159e-04 1.64256895e-04 4.87887308e-05 -6.47988162e-03 -4.07789392e-03 -3.94138564e-03 1.23324095e-04 -5.25627773e-03 5.01287669e-03 -5.01097526e-03 1.37774951e-04 1.58824815e-04 3.30152350e-04 -2.69138959e-05 7.44624905e-04 -1.50120025e-04 4.19384346e-04 2.15728427e-03 -2.15728427e-03 -1.78094826e-05 1.78094826e-05 2.30094432e-05 -2.30094432e-05 -3.89423179e-05 2.09120600e-06 2.09120600e-06 2.69138959e-05 -2.69138959e-05 8.49865950e-06 -4.16848167e-05 -4.16848167e-05 -6.96401205e-03 6.96401205e-03 6.96401205e-03 -5.76134452e-04 5.76134452e-04 5.76134452e-04 -2.78703402e-02 -1.70670281e-02 -1.70670281e-02 -3.91967293e-02 2.20334385e-02 -2.20334385e-02 1.21596738e-03 7.44624905e-04 7.44624905e-04 4.88351268e-03 -9.61306618e-04 9.61306618e-04 -6.65332653e-03 -6.20170953e-03 9.29544937e-03 2.19325430e-04 -3.17373257e-05 -2.41137503e-04 8.34518149e-03 5.10344353e-03 5.25183836e-03 1.91006991e-04 6.78582537e-03 -6.42339379e-03 6.50712338e-03 -2.58595459e-04 -4.19384346e-04 -1.50120025e-04 -4.16848167e-05 -9.61306618e-04 5.81078995e-04 -1.34231757e-04 6.65332653e-03 -9.29544937e-03 6.20170953e-03 -2.19325430e-04 2.41137503e-04 3.17373257e-05 -8.34518149e-03 -5.25183836e-03 -5.10344353e-03 1.91006991e-04 -6.78582537e-03 6.50712338e-03 -6.42339379e-03 2.58595459e-04 1.50120025e-04 4.19384346e-04 -4.16848167e-05 9.61306618e-04 -1.34231757e-04 5.81078995e-04 - 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 - 0 12 24 36 48 66 86 106 124 144 164 170 180 190 190 200 206 216 226 226 236 254 274 294 308 326 346 366 384 404 424 438 456 476 496 --2 -1 1 496 - 6.10668701e-01 -7.51799909e-02 6.94266500e-02 -1.13818158e-02 2.50681311e-01 2.31073552e-01 2.31073552e-01 -2.31073552e-01 -4.55715201e-02 -9.09946312e-02 -9.09946312e-02 9.09946312e-02 -7.51799909e-02 6.30743818e-01 -3.88656825e-02 8.24503254e-02 -1.29637869e-01 -1.70706534e-01 -1.70706534e-01 1.70706534e-01 4.68039666e-02 8.78615395e-02 8.78615395e-02 -8.78615395e-02 6.94266500e-02 -3.88656825e-02 9.24320123e-03 -5.59159516e-03 3.43603397e-02 3.47760262e-02 3.47760262e-02 -3.47760262e-02 -8.11017653e-03 -1.51409429e-02 -1.51409429e-02 1.51409429e-02 -1.13818158e-02 8.24503254e-02 -5.59159516e-03 1.01087384e-02 -1.90677593e-02 -2.20810865e-02 -2.20810865e-02 2.20810865e-02 5.48328334e-03 1.08124682e-02 1.08124682e-02 -1.08124682e-02 6.62931071e-01 9.95491140e-02 9.95491140e-02 -9.36131516e-03 -2.53788780e-03 -2.53788780e-03 -1.84743808e-04 -1.19719253e-02 -1.19719253e-02 -1.34997473e-02 -6.86525306e-04 6.86525306e-04 -6.96842667e-03 7.88241731e-03 7.88241731e-03 -6.96401205e-03 -6.65332653e-03 6.65332653e-03 9.95491140e-02 5.15990200e-01 -9.95491140e-02 -2.53788780e-03 -1.46311251e-02 2.53788780e-03 6.78853114e-03 -4.68430612e-03 -3.65770659e-03 -9.88504715e-03 1.34997473e-02 -2.30263163e-02 1.14201355e-02 -1.00868915e-02 9.66260440e-03 -4.47145138e-03 2.15728427e-03 6.96401205e-03 -1.69134466e-02 -9.29544937e-03 9.95491140e-02 -9.95491140e-02 5.15990200e-01 -2.53788780e-03 2.53788780e-03 -1.46311251e-02 6.78853114e-03 -3.65770659e-03 -4.68430612e-03 9.88504715e-03 1.34997473e-02 -1.14201355e-02 2.30263163e-02 -1.00868915e-02 -4.47145138e-03 9.66260440e-03 -2.15728427e-03 6.96401205e-03 9.29544937e-03 1.69134466e-02 -9.36131516e-03 -2.53788780e-03 -2.53788780e-03 1.79650864e-04 -7.82240681e-05 -7.82240681e-05 4.91119301e-03 3.05324736e-03 3.05324736e-03 3.98965718e-03 -3.80846317e-03 3.80846317e-03 -8.65717248e-05 -1.92416159e-04 -1.92416159e-04 -5.76134452e-04 2.19325430e-04 -2.19325430e-04 -2.53788780e-03 -1.46311251e-02 2.53788780e-03 -7.82240681e-05 1.41854973e-04 7.82240681e-05 -4.88057902e-03 -3.08556574e-03 -2.92421677e-03 8.16061087e-05 -3.98965718e-03 3.77878526e-03 -3.90840983e-03 2.91222329e-04 5.87867582e-05 1.64256895e-04 -1.78094826e-05 5.76134452e-04 -1.07142033e-04 2.41137503e-04 -2.53788780e-03 2.53788780e-03 -1.46311251e-02 -7.82240681e-05 7.82240681e-05 1.41854973e-04 -4.88057902e-03 -2.92421677e-03 -3.08556574e-03 -8.16061087e-05 -3.98965718e-03 3.90840983e-03 -3.77878526e-03 2.91222329e-04 1.64256895e-04 5.87867582e-05 1.78094826e-05 5.76134452e-04 -2.41137503e-04 1.07142033e-04 2.50681311e-01 -1.29637869e-01 3.43603397e-02 -1.90677593e-02 -2.55642069e-01 5.76016724e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 -8.69671403e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 -8.69671403e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 -2.31073552e-01 1.70706534e-01 -3.47760262e-02 2.20810865e-02 -8.69671403e-02 -8.69671403e-02 -3.35169819e-01 3.81033730e-02 3.81033730e-02 5.56692551e-02 -4.55715201e-02 4.68039666e-02 -8.11017653e-03 5.48328334e-03 5.76016724e-02 -1.36360519e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 1.70016634e-02 1.70016634e-02 -1.70016634e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 1.70016634e-02 1.70016634e-02 -1.70016634e-02 9.09946312e-02 -8.78615395e-02 1.51409429e-02 -1.08124682e-02 3.81033730e-02 3.81033730e-02 5.56692551e-02 -1.70016634e-02 -1.70016634e-02 -3.82879364e-03 -1.84743808e-04 6.78853114e-03 6.78853114e-03 4.91119301e-03 -4.88057902e-03 -4.88057902e-03 2.33254718e-01 1.42959316e-01 1.42959316e-01 1.89783463e-01 -1.84466621e-01 1.84466621e-01 -1.05482763e-02 -6.47988162e-03 -6.47988162e-03 -2.78703402e-02 8.34518149e-03 -8.34518149e-03 -1.19719253e-02 -4.68430612e-03 -3.65770659e-03 3.05324736e-03 -3.08556574e-03 -2.92421677e-03 1.42959316e-01 8.74838123e-02 8.75173384e-02 -1.05433222e-04 1.16218161e-01 -1.13139159e-01 1.12926204e-01 -6.29096583e-03 -3.92045739e-03 -4.07789392e-03 2.30094432e-05 -1.70670281e-02 4.94560355e-03 -5.25183836e-03 -1.19719253e-02 -3.65770659e-03 -4.68430612e-03 3.05324736e-03 -2.92421677e-03 -3.08556574e-03 1.42959316e-01 8.75173384e-02 8.74838123e-02 1.05433222e-04 1.16218161e-01 -1.12926204e-01 1.13139159e-01 -6.29096583e-03 -4.07789392e-03 -3.92045739e-03 -2.30094432e-05 -1.70670281e-02 5.25183836e-03 -4.94560355e-03 -9.88504715e-03 9.88504715e-03 8.16061087e-05 -8.16061087e-05 -1.05433222e-04 1.05433222e-04 1.78440391e-04 -9.58226514e-06 -9.58226514e-06 -1.23324095e-04 1.23324095e-04 -3.89423179e-05 1.91006991e-04 1.91006991e-04 -1.34997473e-02 1.34997473e-02 1.34997473e-02 3.98965718e-03 -3.98965718e-03 -3.98965718e-03 1.89783463e-01 1.16218161e-01 1.16218161e-01 3.67563826e-01 -1.50037001e-01 1.50037001e-01 -8.58346559e-03 -5.25627773e-03 -5.25627773e-03 -3.91967293e-02 6.78582537e-03 -6.78582537e-03 -6.86525306e-04 -2.30263163e-02 -1.14201355e-02 -3.80846317e-03 3.77878526e-03 3.90840983e-03 -1.84466621e-01 -1.13139159e-01 -1.12926204e-01 -9.58226514e-06 -1.50037001e-01 1.45685791e-01 -1.45949895e-01 8.49151503e-03 5.03807181e-03 5.01287669e-03 2.09120600e-06 2.20334385e-02 -6.62775483e-03 6.50712338e-03 6.86525306e-04 1.14201355e-02 2.30263163e-02 3.80846317e-03 -3.90840983e-03 -3.77878526e-03 1.84466621e-01 1.12926204e-01 1.13139159e-01 -9.58226514e-06 1.50037001e-01 -1.45949895e-01 1.45685791e-01 -8.49151503e-03 -5.01287669e-03 -5.03807181e-03 2.09120600e-06 -2.20334385e-02 6.50712338e-03 -6.62775483e-03 -6.96842667e-03 -1.00868915e-02 -1.00868915e-02 -8.65717248e-05 2.91222329e-04 2.91222329e-04 -1.05482763e-02 -6.29096583e-03 -6.29096583e-03 -8.58346559e-03 8.49151503e-03 -8.49151503e-03 7.69472345e-04 1.37774951e-04 1.37774951e-04 1.21596738e-03 -2.58595459e-04 2.58595459e-04 7.88241731e-03 9.66260440e-03 -4.47145138e-03 -1.92416159e-04 5.87867582e-05 1.64256895e-04 -6.47988162e-03 -3.92045739e-03 -4.07789392e-03 -1.23324095e-04 -5.25627773e-03 5.03807181e-03 -5.01287669e-03 1.37774951e-04 3.28830564e-04 1.58824815e-04 2.69138959e-05 7.44624905e-04 -4.09415493e-04 1.50120025e-04 7.88241731e-03 -4.47145138e-03 9.66260440e-03 -1.92416159e-04 1.64256895e-04 5.87867582e-05 -6.47988162e-03 -4.07789392e-03 -3.92045739e-03 1.23324095e-04 -5.25627773e-03 5.01287669e-03 -5.03807181e-03 1.37774951e-04 1.58824815e-04 3.28830564e-04 -2.69138959e-05 7.44624905e-04 -1.50120025e-04 4.09415493e-04 2.15728427e-03 -2.15728427e-03 -1.78094826e-05 1.78094826e-05 2.30094432e-05 -2.30094432e-05 -3.89423179e-05 2.09120600e-06 2.09120600e-06 2.69138959e-05 -2.69138959e-05 8.49865950e-06 -4.16848167e-05 -4.16848167e-05 -6.96401205e-03 6.96401205e-03 6.96401205e-03 -5.76134452e-04 5.76134452e-04 5.76134452e-04 -2.78703402e-02 -1.70670281e-02 -1.70670281e-02 -3.91967293e-02 2.20334385e-02 -2.20334385e-02 1.21596738e-03 7.44624905e-04 7.44624905e-04 4.88351268e-03 -9.61306618e-04 9.61306618e-04 -6.65332653e-03 -1.69134466e-02 9.29544937e-03 2.19325430e-04 -1.07142033e-04 -2.41137503e-04 8.34518149e-03 4.94560355e-03 5.25183836e-03 1.91006991e-04 6.78582537e-03 -6.62775483e-03 6.50712338e-03 -2.58595459e-04 -4.09415493e-04 -1.50120025e-04 -4.16848167e-05 -9.61306618e-04 5.05894315e-04 -1.34231757e-04 6.65332653e-03 -9.29544937e-03 1.69134466e-02 -2.19325430e-04 2.41137503e-04 1.07142033e-04 -8.34518149e-03 -5.25183836e-03 -4.94560355e-03 1.91006991e-04 -6.78582537e-03 6.50712338e-03 -6.62775483e-03 2.58595459e-04 1.50120025e-04 4.09415493e-04 -4.16848167e-05 9.61306618e-04 -1.34231757e-04 5.05894315e-04 - 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 - 0 12 24 36 48 66 86 106 124 144 164 170 180 190 190 200 206 216 226 226 236 254 274 294 308 326 346 366 384 404 424 438 456 476 496 --2 -1 2 496 - -1.30077665e+00 -3.97979828e-02 -1.21755678e-01 3.00506476e-02 2.50681311e-01 -2.31073552e-01 -2.31073552e-01 2.31073552e-01 -4.55715201e-02 9.09946312e-02 9.09946312e-02 -9.09946312e-02 -3.97979828e-02 -1.15126664e+00 8.95185576e-02 -1.01048380e-01 -1.29637869e-01 1.70706534e-01 1.70706534e-01 -1.70706534e-01 4.68039666e-02 -8.78615395e-02 -8.78615395e-02 8.78615395e-02 -1.21755678e-01 8.95185576e-02 -1.86285298e-02 1.13591275e-02 3.43603397e-02 -3.47760262e-02 -3.47760262e-02 3.47760262e-02 -8.11017653e-03 1.51409429e-02 1.51409429e-02 -1.51409429e-02 3.00506476e-02 -1.01048380e-01 1.13591275e-02 -9.53400814e-03 -1.90677593e-02 2.20810865e-02 2.20810865e-02 -2.20810865e-02 5.48328334e-03 -1.08124682e-02 -1.08124682e-02 1.08124682e-02 -1.32837516e+00 -9.95491140e-02 -9.95491140e-02 3.64581589e-03 2.53788780e-03 2.53788780e-03 2.60203672e-02 1.19719253e-02 1.19719253e-02 1.34997473e-02 6.86525306e-04 -6.86525306e-04 2.30528378e-02 -7.88241731e-03 -7.88241731e-03 6.96401205e-03 6.65332653e-03 -6.65332653e-03 -9.95491140e-02 -1.47531604e+00 9.95491140e-02 2.53788780e-03 -1.62399402e-03 -2.53788780e-03 -6.78853114e-03 -2.07315938e-02 3.65770659e-03 9.88504715e-03 -1.34997473e-02 -2.30935703e-03 -1.14201355e-02 1.00868915e-02 -8.72159043e-03 4.47145138e-03 -2.15728427e-03 -6.96401205e-03 6.82044689e-03 9.29544937e-03 -9.95491140e-02 9.95491140e-02 -1.47531604e+00 2.53788780e-03 -2.53788780e-03 -1.62399402e-03 -6.78853114e-03 3.65770659e-03 -2.07315938e-02 -9.88504715e-03 -1.34997473e-02 1.14201355e-02 2.30935703e-03 1.00868915e-02 4.47145138e-03 -8.72159043e-03 2.15728427e-03 -6.96401205e-03 -9.29544937e-03 -6.82044689e-03 3.64581589e-03 2.53788780e-03 2.53788780e-03 -1.26080894e-04 7.82240681e-05 7.82240681e-05 -4.95421603e-03 -3.05324736e-03 -3.05324736e-03 -3.98965718e-03 3.80846317e-03 -3.80846317e-03 8.14872011e-05 1.92416159e-04 1.92416159e-04 5.76134452e-04 -2.19325430e-04 2.19325430e-04 2.53788780e-03 -1.62399402e-03 -2.53788780e-03 7.82240681e-05 -1.63876786e-04 -7.82240681e-05 4.88057902e-03 2.95573881e-03 2.92421677e-03 -8.16061087e-05 3.98965718e-03 -4.02050538e-03 3.90840983e-03 -2.91222329e-04 -4.41278956e-05 -1.64256895e-04 1.78094826e-05 -5.76134452e-04 2.57202134e-05 -2.41137503e-04 2.53788780e-03 -2.53788780e-03 -1.62399402e-03 7.82240681e-05 -7.82240681e-05 -1.63876786e-04 4.88057902e-03 2.92421677e-03 2.95573881e-03 8.16061087e-05 3.98965718e-03 -3.90840983e-03 4.02050538e-03 -2.91222329e-04 -1.64256895e-04 -4.41278956e-05 -1.78094826e-05 -5.76134452e-04 2.41137503e-04 -2.57202134e-05 2.50681311e-01 -1.29637869e-01 3.43603397e-02 -1.90677593e-02 -2.55642069e-01 5.76016724e-02 -2.31073552e-01 1.70706534e-01 -3.47760262e-02 2.20810865e-02 -8.69671403e-02 -8.69671403e-02 8.69671403e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 -2.31073552e-01 1.70706534e-01 -3.47760262e-02 2.20810865e-02 -8.69671403e-02 -8.69671403e-02 8.69671403e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 -5.09104100e-01 -3.81033730e-02 -3.81033730e-02 1.31876001e-01 -4.55715201e-02 4.68039666e-02 -8.11017653e-03 5.48328334e-03 5.76016724e-02 -1.36360519e-02 9.09946312e-02 -8.78615395e-02 1.51409429e-02 -1.08124682e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 -1.70016634e-02 -1.70016634e-02 1.70016634e-02 9.09946312e-02 -8.78615395e-02 1.51409429e-02 -1.08124682e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 -1.70016634e-02 -1.70016634e-02 1.70016634e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 1.31876001e-01 1.70016634e-02 1.70016634e-02 -3.78321204e-02 2.60203672e-02 -6.78853114e-03 -6.78853114e-03 -4.95421603e-03 4.88057902e-03 4.88057902e-03 -2.33574112e-01 -1.42959316e-01 -1.42959316e-01 -1.89783463e-01 1.84466621e-01 -1.84466621e-01 1.02934331e-02 6.47988162e-03 6.47988162e-03 2.78703402e-02 -8.34518149e-03 8.34518149e-03 1.19719253e-02 -2.07315938e-02 3.65770659e-03 -3.05324736e-03 2.95573881e-03 2.92421677e-03 -1.42959316e-01 -8.78000495e-02 -8.75173384e-02 1.05433222e-04 -1.16218161e-01 1.12690603e-01 -1.12926204e-01 6.29096583e-03 3.94386154e-03 4.07789392e-03 -2.30094432e-05 1.70670281e-02 -5.10663990e-03 5.25183836e-03 1.19719253e-02 3.65770659e-03 -2.07315938e-02 -3.05324736e-03 2.92421677e-03 2.95573881e-03 -1.42959316e-01 -8.75173384e-02 -8.78000495e-02 -1.05433222e-04 -1.16218161e-01 1.12926204e-01 -1.12690603e-01 6.29096583e-03 4.07789392e-03 3.94386154e-03 2.30094432e-05 1.70670281e-02 -5.25183836e-03 5.10663990e-03 9.88504715e-03 -9.88504715e-03 -8.16061087e-05 8.16061087e-05 1.05433222e-04 -1.05433222e-04 -1.78440391e-04 9.58226514e-06 9.58226514e-06 1.23324095e-04 -1.23324095e-04 3.89423179e-05 -1.91006991e-04 -1.91006991e-04 1.34997473e-02 -1.34997473e-02 -1.34997473e-02 -3.98965718e-03 3.98965718e-03 3.98965718e-03 -1.89783463e-01 -1.16218161e-01 -1.16218161e-01 5.86189719e-02 1.50037001e-01 -1.50037001e-01 8.58346559e-03 5.25627773e-03 5.25627773e-03 5.74991859e-03 -6.78582537e-03 6.78582537e-03 6.86525306e-04 -2.30935703e-03 1.14201355e-02 3.80846317e-03 -4.02050538e-03 -3.90840983e-03 1.84466621e-01 1.12690603e-01 1.12926204e-01 9.58226514e-06 1.50037001e-01 -1.46216058e-01 1.45949895e-01 -8.49151503e-03 -5.01417164e-03 -5.01287669e-03 -2.09120600e-06 -2.20334385e-02 6.42752029e-03 -6.50712338e-03 -6.86525306e-04 -1.14201355e-02 2.30935703e-03 -3.80846317e-03 3.90840983e-03 4.02050538e-03 -1.84466621e-01 -1.12926204e-01 -1.12690603e-01 9.58226514e-06 -1.50037001e-01 1.45949895e-01 -1.46216058e-01 8.49151503e-03 5.01287669e-03 5.01417164e-03 -2.09120600e-06 2.20334385e-02 -6.50712338e-03 6.42752029e-03 2.30528378e-02 1.00868915e-02 1.00868915e-02 8.14872011e-05 -2.91222329e-04 -2.91222329e-04 1.02934331e-02 6.29096583e-03 6.29096583e-03 8.58346559e-03 -8.49151503e-03 8.49151503e-03 -9.58405865e-04 -1.37774951e-04 -1.37774951e-04 -1.21596738e-03 2.58595459e-04 -2.58595459e-04 -7.88241731e-03 -8.72159043e-03 4.47145138e-03 1.92416159e-04 -4.41278956e-05 -1.64256895e-04 6.47988162e-03 3.94386154e-03 4.07789392e-03 1.23324095e-04 5.25627773e-03 -5.01417164e-03 5.01287669e-03 -1.37774951e-04 -3.29747090e-04 -1.58824815e-04 -2.69138959e-05 -7.44624905e-04 4.18861158e-04 -1.50120025e-04 -7.88241731e-03 4.47145138e-03 -8.72159043e-03 1.92416159e-04 -1.64256895e-04 -4.41278956e-05 6.47988162e-03 4.07789392e-03 3.94386154e-03 -1.23324095e-04 5.25627773e-03 -5.01287669e-03 5.01417164e-03 -1.37774951e-04 -1.58824815e-04 -3.29747090e-04 2.69138959e-05 -7.44624905e-04 1.50120025e-04 -4.18861158e-04 -2.15728427e-03 2.15728427e-03 1.78094826e-05 -1.78094826e-05 -2.30094432e-05 2.30094432e-05 3.89423179e-05 -2.09120600e-06 -2.09120600e-06 -2.69138959e-05 2.69138959e-05 -8.49865950e-06 4.16848167e-05 4.16848167e-05 6.96401205e-03 -6.96401205e-03 -6.96401205e-03 5.76134452e-04 -5.76134452e-04 -5.76134452e-04 2.78703402e-02 1.70670281e-02 1.70670281e-02 5.74991859e-03 -2.20334385e-02 2.20334385e-02 -1.21596738e-03 -7.44624905e-04 -7.44624905e-04 -2.25860819e-03 9.61306618e-04 -9.61306618e-04 6.65332653e-03 6.82044689e-03 -9.29544937e-03 -2.19325430e-04 2.57202134e-05 2.41137503e-04 -8.34518149e-03 -5.10663990e-03 -5.25183836e-03 -1.91006991e-04 -6.78582537e-03 6.42752029e-03 -6.50712338e-03 2.58595459e-04 4.18861158e-04 1.50120025e-04 4.16848167e-05 9.61306618e-04 -5.80403562e-04 1.34231757e-04 -6.65332653e-03 9.29544937e-03 -6.82044689e-03 2.19325430e-04 -2.41137503e-04 -2.57202134e-05 8.34518149e-03 5.25183836e-03 5.10663990e-03 -1.91006991e-04 6.78582537e-03 -6.50712338e-03 6.42752029e-03 -2.58595459e-04 -1.50120025e-04 -4.18861158e-04 4.16848167e-05 -9.61306618e-04 1.34231757e-04 -5.80403562e-04 - 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 - 0 12 24 36 48 66 86 106 124 144 164 170 180 190 190 200 206 216 226 226 236 254 274 294 308 326 346 366 384 404 424 438 456 476 496 --2 0 0 496 - 1.46471486e+00 2.54883877e-01 1.24590418e-01 -9.35884290e-03 -2.50681311e-01 2.31073552e-01 2.31073552e-01 -2.31073552e-01 4.55715201e-02 -9.09946312e-02 -9.09946312e-02 9.09946312e-02 2.54883877e-01 1.70428957e+00 -9.34218553e-02 1.65342489e-01 1.29637869e-01 -1.70706534e-01 -1.70706534e-01 1.70706534e-01 -4.68039666e-02 8.78615395e-02 8.78615395e-02 -8.78615395e-02 1.24590418e-01 -9.34218553e-02 1.88920782e-02 -1.20468125e-02 -3.43603397e-02 3.47760262e-02 3.47760262e-02 -3.47760262e-02 8.11017653e-03 -1.51409429e-02 -1.51409429e-02 1.51409429e-02 -9.35884290e-03 1.65342489e-01 -1.20468125e-02 1.72406024e-02 1.90677593e-02 -2.20810865e-02 -2.20810865e-02 2.20810865e-02 -5.48328334e-03 1.08124682e-02 1.08124682e-02 -1.08124682e-02 1.89517553e+00 9.95491140e-02 9.95491140e-02 -9.15785008e-03 -2.53788780e-03 -2.53788780e-03 -2.12388496e-02 -1.19719253e-02 -1.19719253e-02 -1.34997473e-02 -6.86525306e-04 6.86525306e-04 -2.22701900e-02 7.88241731e-03 7.88241731e-03 -6.96401205e-03 -6.65332653e-03 6.65332653e-03 9.95491140e-02 2.04211641e+00 -9.95491140e-02 -2.53788780e-03 -3.88804018e-03 2.53788780e-03 6.78853114e-03 1.78035242e-02 -3.65770659e-03 -9.88504715e-03 1.34997473e-02 6.08947863e-03 1.14201355e-02 -1.00868915e-02 8.24231853e-03 -4.47145138e-03 2.15728427e-03 6.96401205e-03 -6.20170953e-03 -9.29544937e-03 9.95491140e-02 -9.95491140e-02 2.04211641e+00 -2.53788780e-03 2.53788780e-03 -3.88804018e-03 6.78853114e-03 -3.65770659e-03 1.78035242e-02 9.88504715e-03 1.34997473e-02 -1.14201355e-02 -6.08947863e-03 -1.00868915e-02 -4.47145138e-03 8.24231853e-03 -2.15728427e-03 6.96401205e-03 9.29544937e-03 6.20170953e-03 -9.15785008e-03 -2.53788780e-03 -2.53788780e-03 1.79684460e-04 -7.82240681e-05 -7.82240681e-05 4.90771661e-03 3.05324736e-03 3.05324736e-03 3.98965718e-03 -3.80846317e-03 3.80846317e-03 -8.90983131e-05 -1.92416159e-04 -1.92416159e-04 -5.76134452e-04 2.19325430e-04 -2.19325430e-04 -2.53788780e-03 -3.88804018e-03 2.53788780e-03 -7.82240681e-05 2.17480352e-04 7.82240681e-05 -4.88057902e-03 -2.92726385e-03 -2.92421677e-03 8.16061087e-05 -3.98965718e-03 3.98374436e-03 -3.90840983e-03 2.91222329e-04 4.87887308e-05 1.64256895e-04 -1.78094826e-05 5.76134452e-04 -3.17373257e-05 2.41137503e-04 -2.53788780e-03 2.53788780e-03 -3.88804018e-03 -7.82240681e-05 7.82240681e-05 2.17480352e-04 -4.88057902e-03 -2.92421677e-03 -2.92726385e-03 -8.16061087e-05 -3.98965718e-03 3.90840983e-03 -3.98374436e-03 2.91222329e-04 1.64256895e-04 4.87887308e-05 1.78094826e-05 5.76134452e-04 -2.41137503e-04 3.17373257e-05 -2.50681311e-01 1.29637869e-01 -3.43603397e-02 1.90677593e-02 2.55642069e-01 -5.76016724e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 -8.69671403e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 -8.69671403e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 -2.31073552e-01 1.70706534e-01 -3.47760262e-02 2.20810865e-02 -8.69671403e-02 -8.69671403e-02 5.09104100e-01 3.81033730e-02 3.81033730e-02 -1.31876001e-01 4.55715201e-02 -4.68039666e-02 8.11017653e-03 -5.48328334e-03 -5.76016724e-02 1.36360519e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 1.70016634e-02 1.70016634e-02 -1.70016634e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 1.70016634e-02 1.70016634e-02 -1.70016634e-02 9.09946312e-02 -8.78615395e-02 1.51409429e-02 -1.08124682e-02 3.81033730e-02 3.81033730e-02 -1.31876001e-01 -1.70016634e-02 -1.70016634e-02 3.78321204e-02 -2.12388496e-02 6.78853114e-03 6.78853114e-03 4.90771661e-03 -4.88057902e-03 -4.88057902e-03 2.33614448e-01 1.42959316e-01 1.42959316e-01 1.89783463e-01 -1.84466621e-01 1.84466621e-01 -1.02868307e-02 -6.47988162e-03 -6.47988162e-03 -2.78703402e-02 8.34518149e-03 -8.34518149e-03 -1.19719253e-02 1.78035242e-02 -3.65770659e-03 3.05324736e-03 -2.92726385e-03 -2.92421677e-03 1.42959316e-01 8.78151758e-02 8.75173384e-02 -1.05433222e-04 1.16218161e-01 -1.12710131e-01 1.12926204e-01 -6.29096583e-03 -3.94138564e-03 -4.07789392e-03 2.30094432e-05 -1.70670281e-02 5.10344353e-03 -5.25183836e-03 -1.19719253e-02 -3.65770659e-03 1.78035242e-02 3.05324736e-03 -2.92421677e-03 -2.92726385e-03 1.42959316e-01 8.75173384e-02 8.78151758e-02 1.05433222e-04 1.16218161e-01 -1.12926204e-01 1.12710131e-01 -6.29096583e-03 -4.07789392e-03 -3.94138564e-03 -2.30094432e-05 -1.70670281e-02 5.25183836e-03 -5.10344353e-03 -9.88504715e-03 9.88504715e-03 8.16061087e-05 -8.16061087e-05 -1.05433222e-04 1.05433222e-04 1.78440391e-04 -9.58226514e-06 -9.58226514e-06 -1.23324095e-04 1.23324095e-04 -3.89423179e-05 1.91006991e-04 1.91006991e-04 -1.34997473e-02 1.34997473e-02 1.34997473e-02 3.98965718e-03 -3.98965718e-03 -3.98965718e-03 1.89783463e-01 1.16218161e-01 1.16218161e-01 3.67563826e-01 -1.50037001e-01 1.50037001e-01 -8.58346559e-03 -5.25627773e-03 -5.25627773e-03 -3.91967293e-02 6.78582537e-03 -6.78582537e-03 -6.86525306e-04 6.08947863e-03 -1.14201355e-02 -3.80846317e-03 3.98374436e-03 3.90840983e-03 -1.84466621e-01 -1.12710131e-01 -1.12926204e-01 -9.58226514e-06 -1.50037001e-01 1.46241269e-01 -1.45949895e-01 8.49151503e-03 5.01097526e-03 5.01287669e-03 2.09120600e-06 2.20334385e-02 -6.42339379e-03 6.50712338e-03 6.86525306e-04 1.14201355e-02 -6.08947863e-03 3.80846317e-03 -3.90840983e-03 -3.98374436e-03 1.84466621e-01 1.12926204e-01 1.12710131e-01 -9.58226514e-06 1.50037001e-01 -1.45949895e-01 1.46241269e-01 -8.49151503e-03 -5.01287669e-03 -5.01097526e-03 2.09120600e-06 -2.20334385e-02 6.50712338e-03 -6.42339379e-03 -2.22701900e-02 -1.00868915e-02 -1.00868915e-02 -8.90983131e-05 2.91222329e-04 2.91222329e-04 -1.02868307e-02 -6.29096583e-03 -6.29096583e-03 -8.58346559e-03 8.49151503e-03 -8.49151503e-03 9.59486559e-04 1.37774951e-04 1.37774951e-04 1.21596738e-03 -2.58595459e-04 2.58595459e-04 7.88241731e-03 8.24231853e-03 -4.47145138e-03 -1.92416159e-04 4.87887308e-05 1.64256895e-04 -6.47988162e-03 -3.94138564e-03 -4.07789392e-03 -1.23324095e-04 -5.25627773e-03 5.01097526e-03 -5.01287669e-03 1.37774951e-04 3.30152350e-04 1.58824815e-04 2.69138959e-05 7.44624905e-04 -4.19384346e-04 1.50120025e-04 7.88241731e-03 -4.47145138e-03 8.24231853e-03 -1.92416159e-04 1.64256895e-04 4.87887308e-05 -6.47988162e-03 -4.07789392e-03 -3.94138564e-03 1.23324095e-04 -5.25627773e-03 5.01287669e-03 -5.01097526e-03 1.37774951e-04 1.58824815e-04 3.30152350e-04 -2.69138959e-05 7.44624905e-04 -1.50120025e-04 4.19384346e-04 2.15728427e-03 -2.15728427e-03 -1.78094826e-05 1.78094826e-05 2.30094432e-05 -2.30094432e-05 -3.89423179e-05 2.09120600e-06 2.09120600e-06 2.69138959e-05 -2.69138959e-05 8.49865950e-06 -4.16848167e-05 -4.16848167e-05 -6.96401205e-03 6.96401205e-03 6.96401205e-03 -5.76134452e-04 5.76134452e-04 5.76134452e-04 -2.78703402e-02 -1.70670281e-02 -1.70670281e-02 -3.91967293e-02 2.20334385e-02 -2.20334385e-02 1.21596738e-03 7.44624905e-04 7.44624905e-04 4.88351268e-03 -9.61306618e-04 9.61306618e-04 -6.65332653e-03 -6.20170953e-03 9.29544937e-03 2.19325430e-04 -3.17373257e-05 -2.41137503e-04 8.34518149e-03 5.10344353e-03 5.25183836e-03 1.91006991e-04 6.78582537e-03 -6.42339379e-03 6.50712338e-03 -2.58595459e-04 -4.19384346e-04 -1.50120025e-04 -4.16848167e-05 -9.61306618e-04 5.81078995e-04 -1.34231757e-04 6.65332653e-03 -9.29544937e-03 6.20170953e-03 -2.19325430e-04 2.41137503e-04 3.17373257e-05 -8.34518149e-03 -5.25183836e-03 -5.10344353e-03 1.91006991e-04 -6.78582537e-03 6.50712338e-03 -6.42339379e-03 2.58595459e-04 1.50120025e-04 4.19384346e-04 -4.16848167e-05 9.61306618e-04 -1.34231757e-04 5.81078995e-04 - 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 - 0 12 24 36 48 66 86 106 124 144 164 170 180 190 190 200 206 216 226 226 236 254 274 294 308 326 346 366 384 404 424 438 456 476 496 --2 0 1 496 - -4.46730500e-01 2.90265885e-01 -6.65919095e-02 3.20736205e-02 -2.50681311e-01 -2.31073552e-01 -2.31073552e-01 2.31073552e-01 4.55715201e-02 9.09946312e-02 9.09946312e-02 -9.09946312e-02 2.90265885e-01 -7.77208948e-02 3.49623849e-02 -1.81562170e-02 1.29637869e-01 1.70706534e-01 1.70706534e-01 -1.70706534e-01 -4.68039666e-02 -8.78615395e-02 -8.78615395e-02 8.78615395e-02 -6.65919095e-02 3.49623849e-02 -8.97965282e-03 4.90391018e-03 -3.43603397e-02 -3.47760262e-02 -3.47760262e-02 3.47760262e-02 8.11017653e-03 1.51409429e-02 1.51409429e-02 -1.51409429e-02 3.20736205e-02 -1.81562170e-02 4.90391018e-03 -2.40214415e-03 1.90677593e-02 2.20810865e-02 2.20810865e-02 -2.20810865e-02 -5.48328334e-03 -1.08124682e-02 -1.08124682e-02 1.08124682e-02 -9.61307016e-02 -9.95491140e-02 -9.95491140e-02 3.84928096e-03 2.53788780e-03 2.53788780e-03 4.96626145e-03 1.19719253e-02 1.19719253e-02 1.34997473e-02 6.86525306e-04 -6.86525306e-04 7.75107441e-03 -7.88241731e-03 -7.88241731e-03 6.96401205e-03 6.65332653e-03 -6.65332653e-03 -9.95491140e-02 5.08101702e-02 9.95491140e-02 2.53788780e-03 9.11909087e-03 -2.53788780e-03 -6.78853114e-03 1.75623651e-03 3.65770659e-03 9.88504715e-03 -1.34997473e-02 2.68064379e-02 -1.14201355e-02 1.00868915e-02 -1.01418763e-02 4.47145138e-03 -2.15728427e-03 -6.96401205e-03 1.75321839e-02 9.29544937e-03 -9.95491140e-02 9.95491140e-02 5.08101702e-02 2.53788780e-03 -2.53788780e-03 9.11909087e-03 -6.78853114e-03 3.65770659e-03 1.75623651e-03 -9.88504715e-03 -1.34997473e-02 1.14201355e-02 -2.68064379e-02 1.00868915e-02 4.47145138e-03 -1.01418763e-02 2.15728427e-03 -6.96401205e-03 -9.29544937e-03 -1.75321839e-02 3.84928096e-03 2.53788780e-03 2.53788780e-03 -1.26047298e-04 7.82240681e-05 7.82240681e-05 -4.95769243e-03 -3.05324736e-03 -3.05324736e-03 -3.98965718e-03 3.80846317e-03 -3.80846317e-03 7.89606128e-05 1.92416159e-04 1.92416159e-04 5.76134452e-04 -2.19325430e-04 2.19325430e-04 2.53788780e-03 9.11909087e-03 -2.53788780e-03 7.82240681e-05 -8.82514067e-05 -7.82240681e-05 4.88057902e-03 3.11404071e-03 2.92421677e-03 -8.16061087e-05 3.98965718e-03 -3.81554628e-03 3.90840983e-03 -2.91222329e-04 -5.41259230e-05 -1.64256895e-04 1.78094826e-05 -5.76134452e-04 1.01124921e-04 -2.41137503e-04 2.53788780e-03 -2.53788780e-03 9.11909087e-03 7.82240681e-05 -7.82240681e-05 -8.82514067e-05 4.88057902e-03 2.92421677e-03 3.11404071e-03 8.16061087e-05 3.98965718e-03 -3.90840983e-03 3.81554628e-03 -2.91222329e-04 -1.64256895e-04 -5.41259230e-05 -1.78094826e-05 -5.76134452e-04 2.41137503e-04 -1.01124921e-04 -2.50681311e-01 1.29637869e-01 -3.43603397e-02 1.90677593e-02 2.55642069e-01 -5.76016724e-02 -2.31073552e-01 1.70706534e-01 -3.47760262e-02 2.20810865e-02 -8.69671403e-02 -8.69671403e-02 8.69671403e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 -2.31073552e-01 1.70706534e-01 -3.47760262e-02 2.20810865e-02 -8.69671403e-02 -8.69671403e-02 8.69671403e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 3.35169819e-01 -3.81033730e-02 -3.81033730e-02 -5.56692551e-02 4.55715201e-02 -4.68039666e-02 8.11017653e-03 -5.48328334e-03 -5.76016724e-02 1.36360519e-02 9.09946312e-02 -8.78615395e-02 1.51409429e-02 -1.08124682e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 -1.70016634e-02 -1.70016634e-02 1.70016634e-02 9.09946312e-02 -8.78615395e-02 1.51409429e-02 -1.08124682e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 -1.70016634e-02 -1.70016634e-02 1.70016634e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 -5.56692551e-02 1.70016634e-02 1.70016634e-02 3.82879364e-03 4.96626145e-03 -6.78853114e-03 -6.78853114e-03 -4.95769243e-03 4.88057902e-03 4.88057902e-03 -2.33214382e-01 -1.42959316e-01 -1.42959316e-01 -1.89783463e-01 1.84466621e-01 -1.84466621e-01 1.05548787e-02 6.47988162e-03 6.47988162e-03 2.78703402e-02 -8.34518149e-03 8.34518149e-03 1.19719253e-02 1.75623651e-03 3.65770659e-03 -3.05324736e-03 3.11404071e-03 2.92421677e-03 -1.42959316e-01 -8.74686860e-02 -8.75173384e-02 1.05433222e-04 -1.16218161e-01 1.13119631e-01 -1.12926204e-01 6.29096583e-03 3.92293329e-03 4.07789392e-03 -2.30094432e-05 1.70670281e-02 -4.94879992e-03 5.25183836e-03 1.19719253e-02 3.65770659e-03 1.75623651e-03 -3.05324736e-03 2.92421677e-03 3.11404071e-03 -1.42959316e-01 -8.75173384e-02 -8.74686860e-02 -1.05433222e-04 -1.16218161e-01 1.12926204e-01 -1.13119631e-01 6.29096583e-03 4.07789392e-03 3.92293329e-03 2.30094432e-05 1.70670281e-02 -5.25183836e-03 4.94879992e-03 9.88504715e-03 -9.88504715e-03 -8.16061087e-05 8.16061087e-05 1.05433222e-04 -1.05433222e-04 -1.78440391e-04 9.58226514e-06 9.58226514e-06 1.23324095e-04 -1.23324095e-04 3.89423179e-05 -1.91006991e-04 -1.91006991e-04 1.34997473e-02 -1.34997473e-02 -1.34997473e-02 -3.98965718e-03 3.98965718e-03 3.98965718e-03 -1.89783463e-01 -1.16218161e-01 -1.16218161e-01 5.86189719e-02 1.50037001e-01 -1.50037001e-01 8.58346559e-03 5.25627773e-03 5.25627773e-03 5.74991859e-03 -6.78582537e-03 6.78582537e-03 6.86525306e-04 2.68064379e-02 1.14201355e-02 3.80846317e-03 -3.81554628e-03 -3.90840983e-03 1.84466621e-01 1.13119631e-01 1.12926204e-01 9.58226514e-06 1.50037001e-01 -1.45660580e-01 1.45949895e-01 -8.49151503e-03 -5.04126819e-03 -5.01287669e-03 -2.09120600e-06 -2.20334385e-02 6.63188133e-03 -6.50712338e-03 -6.86525306e-04 -1.14201355e-02 -2.68064379e-02 -3.80846317e-03 3.90840983e-03 3.81554628e-03 -1.84466621e-01 -1.12926204e-01 -1.13119631e-01 9.58226514e-06 -1.50037001e-01 1.45949895e-01 -1.45660580e-01 8.49151503e-03 5.01287669e-03 5.04126819e-03 -2.09120600e-06 2.20334385e-02 -6.50712338e-03 6.63188133e-03 7.75107441e-03 1.00868915e-02 1.00868915e-02 7.89606128e-05 -2.91222329e-04 -2.91222329e-04 1.05548787e-02 6.29096583e-03 6.29096583e-03 8.58346559e-03 -8.49151503e-03 8.49151503e-03 -7.68391652e-04 -1.37774951e-04 -1.37774951e-04 -1.21596738e-03 2.58595459e-04 -2.58595459e-04 -7.88241731e-03 -1.01418763e-02 4.47145138e-03 1.92416159e-04 -5.41259230e-05 -1.64256895e-04 6.47988162e-03 3.92293329e-03 4.07789392e-03 1.23324095e-04 5.25627773e-03 -5.04126819e-03 5.01287669e-03 -1.37774951e-04 -3.28425304e-04 -1.58824815e-04 -2.69138959e-05 -7.44624905e-04 4.08892304e-04 -1.50120025e-04 -7.88241731e-03 4.47145138e-03 -1.01418763e-02 1.92416159e-04 -1.64256895e-04 -5.41259230e-05 6.47988162e-03 4.07789392e-03 3.92293329e-03 -1.23324095e-04 5.25627773e-03 -5.01287669e-03 5.04126819e-03 -1.37774951e-04 -1.58824815e-04 -3.28425304e-04 2.69138959e-05 -7.44624905e-04 1.50120025e-04 -4.08892304e-04 -2.15728427e-03 2.15728427e-03 1.78094826e-05 -1.78094826e-05 -2.30094432e-05 2.30094432e-05 3.89423179e-05 -2.09120600e-06 -2.09120600e-06 -2.69138959e-05 2.69138959e-05 -8.49865950e-06 4.16848167e-05 4.16848167e-05 6.96401205e-03 -6.96401205e-03 -6.96401205e-03 5.76134452e-04 -5.76134452e-04 -5.76134452e-04 2.78703402e-02 1.70670281e-02 1.70670281e-02 5.74991859e-03 -2.20334385e-02 2.20334385e-02 -1.21596738e-03 -7.44624905e-04 -7.44624905e-04 -2.25860819e-03 9.61306618e-04 -9.61306618e-04 6.65332653e-03 1.75321839e-02 -9.29544937e-03 -2.19325430e-04 1.01124921e-04 2.41137503e-04 -8.34518149e-03 -4.94879992e-03 -5.25183836e-03 -1.91006991e-04 -6.78582537e-03 6.63188133e-03 -6.50712338e-03 2.58595459e-04 4.08892304e-04 1.50120025e-04 4.16848167e-05 9.61306618e-04 -5.05218881e-04 1.34231757e-04 -6.65332653e-03 9.29544937e-03 -1.75321839e-02 2.19325430e-04 -2.41137503e-04 -1.01124921e-04 8.34518149e-03 5.25183836e-03 4.94879992e-03 -1.91006991e-04 6.78582537e-03 -6.50712338e-03 6.63188133e-03 -2.58595459e-04 -1.50120025e-04 -4.08892304e-04 4.16848167e-05 -9.61306618e-04 1.34231757e-04 -5.05218881e-04 - 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 - 0 12 24 36 48 66 86 106 124 144 164 170 180 190 190 200 206 216 226 226 236 254 274 294 308 326 346 366 384 404 424 438 456 476 496 --2 0 2 496 - 1.46471486e+00 2.54883877e-01 1.24590418e-01 -9.35884290e-03 -2.50681311e-01 2.31073552e-01 2.31073552e-01 -2.31073552e-01 4.55715201e-02 -9.09946312e-02 -9.09946312e-02 9.09946312e-02 2.54883877e-01 1.70428957e+00 -9.34218553e-02 1.65342489e-01 1.29637869e-01 -1.70706534e-01 -1.70706534e-01 1.70706534e-01 -4.68039666e-02 8.78615395e-02 8.78615395e-02 -8.78615395e-02 1.24590418e-01 -9.34218553e-02 1.88920782e-02 -1.20468125e-02 -3.43603397e-02 3.47760262e-02 3.47760262e-02 -3.47760262e-02 8.11017653e-03 -1.51409429e-02 -1.51409429e-02 1.51409429e-02 -9.35884290e-03 1.65342489e-01 -1.20468125e-02 1.72406024e-02 1.90677593e-02 -2.20810865e-02 -2.20810865e-02 2.20810865e-02 -5.48328334e-03 1.08124682e-02 1.08124682e-02 -1.08124682e-02 1.89517553e+00 9.95491140e-02 9.95491140e-02 -9.15785008e-03 -2.53788780e-03 -2.53788780e-03 -2.12388496e-02 -1.19719253e-02 -1.19719253e-02 -1.34997473e-02 -6.86525306e-04 6.86525306e-04 -2.22701900e-02 7.88241731e-03 7.88241731e-03 -6.96401205e-03 -6.65332653e-03 6.65332653e-03 9.95491140e-02 2.04211641e+00 -9.95491140e-02 -2.53788780e-03 -3.88804018e-03 2.53788780e-03 6.78853114e-03 1.78035242e-02 -3.65770659e-03 -9.88504715e-03 1.34997473e-02 6.08947863e-03 1.14201355e-02 -1.00868915e-02 8.24231853e-03 -4.47145138e-03 2.15728427e-03 6.96401205e-03 -6.20170953e-03 -9.29544937e-03 9.95491140e-02 -9.95491140e-02 2.04211641e+00 -2.53788780e-03 2.53788780e-03 -3.88804018e-03 6.78853114e-03 -3.65770659e-03 1.78035242e-02 9.88504715e-03 1.34997473e-02 -1.14201355e-02 -6.08947863e-03 -1.00868915e-02 -4.47145138e-03 8.24231853e-03 -2.15728427e-03 6.96401205e-03 9.29544937e-03 6.20170953e-03 -9.15785008e-03 -2.53788780e-03 -2.53788780e-03 1.79684460e-04 -7.82240681e-05 -7.82240681e-05 4.90771661e-03 3.05324736e-03 3.05324736e-03 3.98965718e-03 -3.80846317e-03 3.80846317e-03 -8.90983131e-05 -1.92416159e-04 -1.92416159e-04 -5.76134452e-04 2.19325430e-04 -2.19325430e-04 -2.53788780e-03 -3.88804018e-03 2.53788780e-03 -7.82240681e-05 2.17480352e-04 7.82240681e-05 -4.88057902e-03 -2.92726385e-03 -2.92421677e-03 8.16061087e-05 -3.98965718e-03 3.98374436e-03 -3.90840983e-03 2.91222329e-04 4.87887308e-05 1.64256895e-04 -1.78094826e-05 5.76134452e-04 -3.17373257e-05 2.41137503e-04 -2.53788780e-03 2.53788780e-03 -3.88804018e-03 -7.82240681e-05 7.82240681e-05 2.17480352e-04 -4.88057902e-03 -2.92421677e-03 -2.92726385e-03 -8.16061087e-05 -3.98965718e-03 3.90840983e-03 -3.98374436e-03 2.91222329e-04 1.64256895e-04 4.87887308e-05 1.78094826e-05 5.76134452e-04 -2.41137503e-04 3.17373257e-05 -2.50681311e-01 1.29637869e-01 -3.43603397e-02 1.90677593e-02 2.55642069e-01 -5.76016724e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 -8.69671403e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 -8.69671403e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 -2.31073552e-01 1.70706534e-01 -3.47760262e-02 2.20810865e-02 -8.69671403e-02 -8.69671403e-02 5.09104100e-01 3.81033730e-02 3.81033730e-02 -1.31876001e-01 4.55715201e-02 -4.68039666e-02 8.11017653e-03 -5.48328334e-03 -5.76016724e-02 1.36360519e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 1.70016634e-02 1.70016634e-02 -1.70016634e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 1.70016634e-02 1.70016634e-02 -1.70016634e-02 9.09946312e-02 -8.78615395e-02 1.51409429e-02 -1.08124682e-02 3.81033730e-02 3.81033730e-02 -1.31876001e-01 -1.70016634e-02 -1.70016634e-02 3.78321204e-02 -2.12388496e-02 6.78853114e-03 6.78853114e-03 4.90771661e-03 -4.88057902e-03 -4.88057902e-03 2.33614448e-01 1.42959316e-01 1.42959316e-01 1.89783463e-01 -1.84466621e-01 1.84466621e-01 -1.02868307e-02 -6.47988162e-03 -6.47988162e-03 -2.78703402e-02 8.34518149e-03 -8.34518149e-03 -1.19719253e-02 1.78035242e-02 -3.65770659e-03 3.05324736e-03 -2.92726385e-03 -2.92421677e-03 1.42959316e-01 8.78151758e-02 8.75173384e-02 -1.05433222e-04 1.16218161e-01 -1.12710131e-01 1.12926204e-01 -6.29096583e-03 -3.94138564e-03 -4.07789392e-03 2.30094432e-05 -1.70670281e-02 5.10344353e-03 -5.25183836e-03 -1.19719253e-02 -3.65770659e-03 1.78035242e-02 3.05324736e-03 -2.92421677e-03 -2.92726385e-03 1.42959316e-01 8.75173384e-02 8.78151758e-02 1.05433222e-04 1.16218161e-01 -1.12926204e-01 1.12710131e-01 -6.29096583e-03 -4.07789392e-03 -3.94138564e-03 -2.30094432e-05 -1.70670281e-02 5.25183836e-03 -5.10344353e-03 -9.88504715e-03 9.88504715e-03 8.16061087e-05 -8.16061087e-05 -1.05433222e-04 1.05433222e-04 1.78440391e-04 -9.58226514e-06 -9.58226514e-06 -1.23324095e-04 1.23324095e-04 -3.89423179e-05 1.91006991e-04 1.91006991e-04 -1.34997473e-02 1.34997473e-02 1.34997473e-02 3.98965718e-03 -3.98965718e-03 -3.98965718e-03 1.89783463e-01 1.16218161e-01 1.16218161e-01 3.67563826e-01 -1.50037001e-01 1.50037001e-01 -8.58346559e-03 -5.25627773e-03 -5.25627773e-03 -3.91967293e-02 6.78582537e-03 -6.78582537e-03 -6.86525306e-04 6.08947863e-03 -1.14201355e-02 -3.80846317e-03 3.98374436e-03 3.90840983e-03 -1.84466621e-01 -1.12710131e-01 -1.12926204e-01 -9.58226514e-06 -1.50037001e-01 1.46241269e-01 -1.45949895e-01 8.49151503e-03 5.01097526e-03 5.01287669e-03 2.09120600e-06 2.20334385e-02 -6.42339379e-03 6.50712338e-03 6.86525306e-04 1.14201355e-02 -6.08947863e-03 3.80846317e-03 -3.90840983e-03 -3.98374436e-03 1.84466621e-01 1.12926204e-01 1.12710131e-01 -9.58226514e-06 1.50037001e-01 -1.45949895e-01 1.46241269e-01 -8.49151503e-03 -5.01287669e-03 -5.01097526e-03 2.09120600e-06 -2.20334385e-02 6.50712338e-03 -6.42339379e-03 -2.22701900e-02 -1.00868915e-02 -1.00868915e-02 -8.90983131e-05 2.91222329e-04 2.91222329e-04 -1.02868307e-02 -6.29096583e-03 -6.29096583e-03 -8.58346559e-03 8.49151503e-03 -8.49151503e-03 9.59486559e-04 1.37774951e-04 1.37774951e-04 1.21596738e-03 -2.58595459e-04 2.58595459e-04 7.88241731e-03 8.24231853e-03 -4.47145138e-03 -1.92416159e-04 4.87887308e-05 1.64256895e-04 -6.47988162e-03 -3.94138564e-03 -4.07789392e-03 -1.23324095e-04 -5.25627773e-03 5.01097526e-03 -5.01287669e-03 1.37774951e-04 3.30152350e-04 1.58824815e-04 2.69138959e-05 7.44624905e-04 -4.19384346e-04 1.50120025e-04 7.88241731e-03 -4.47145138e-03 8.24231853e-03 -1.92416159e-04 1.64256895e-04 4.87887308e-05 -6.47988162e-03 -4.07789392e-03 -3.94138564e-03 1.23324095e-04 -5.25627773e-03 5.01287669e-03 -5.01097526e-03 1.37774951e-04 1.58824815e-04 3.30152350e-04 -2.69138959e-05 7.44624905e-04 -1.50120025e-04 4.19384346e-04 2.15728427e-03 -2.15728427e-03 -1.78094826e-05 1.78094826e-05 2.30094432e-05 -2.30094432e-05 -3.89423179e-05 2.09120600e-06 2.09120600e-06 2.69138959e-05 -2.69138959e-05 8.49865950e-06 -4.16848167e-05 -4.16848167e-05 -6.96401205e-03 6.96401205e-03 6.96401205e-03 -5.76134452e-04 5.76134452e-04 5.76134452e-04 -2.78703402e-02 -1.70670281e-02 -1.70670281e-02 -3.91967293e-02 2.20334385e-02 -2.20334385e-02 1.21596738e-03 7.44624905e-04 7.44624905e-04 4.88351268e-03 -9.61306618e-04 9.61306618e-04 -6.65332653e-03 -6.20170953e-03 9.29544937e-03 2.19325430e-04 -3.17373257e-05 -2.41137503e-04 8.34518149e-03 5.10344353e-03 5.25183836e-03 1.91006991e-04 6.78582537e-03 -6.42339379e-03 6.50712338e-03 -2.58595459e-04 -4.19384346e-04 -1.50120025e-04 -4.16848167e-05 -9.61306618e-04 5.81078995e-04 -1.34231757e-04 6.65332653e-03 -9.29544937e-03 6.20170953e-03 -2.19325430e-04 2.41137503e-04 3.17373257e-05 -8.34518149e-03 -5.25183836e-03 -5.10344353e-03 1.91006991e-04 -6.78582537e-03 6.50712338e-03 -6.42339379e-03 2.58595459e-04 1.50120025e-04 4.19384346e-04 -4.16848167e-05 9.61306618e-04 -1.34231757e-04 5.81078995e-04 - 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 - 0 12 24 36 48 66 86 106 124 144 164 170 180 190 190 200 206 216 226 226 236 254 274 294 308 326 346 366 384 404 424 438 456 476 496 --2 1 -1 496 - 6.10668701e-01 -7.51799909e-02 6.94266500e-02 -1.13818158e-02 2.50681311e-01 2.31073552e-01 2.31073552e-01 -2.31073552e-01 -4.55715201e-02 -9.09946312e-02 -9.09946312e-02 9.09946312e-02 -7.51799909e-02 6.30743818e-01 -3.88656825e-02 8.24503254e-02 -1.29637869e-01 -1.70706534e-01 -1.70706534e-01 1.70706534e-01 4.68039666e-02 8.78615395e-02 8.78615395e-02 -8.78615395e-02 6.94266500e-02 -3.88656825e-02 9.24320123e-03 -5.59159516e-03 3.43603397e-02 3.47760262e-02 3.47760262e-02 -3.47760262e-02 -8.11017653e-03 -1.51409429e-02 -1.51409429e-02 1.51409429e-02 -1.13818158e-02 8.24503254e-02 -5.59159516e-03 1.01087384e-02 -1.90677593e-02 -2.20810865e-02 -2.20810865e-02 2.20810865e-02 5.48328334e-03 1.08124682e-02 1.08124682e-02 -1.08124682e-02 6.62931071e-01 9.95491140e-02 9.95491140e-02 -9.36131516e-03 -2.53788780e-03 -2.53788780e-03 -1.84743808e-04 -1.19719253e-02 -1.19719253e-02 -1.34997473e-02 -6.86525306e-04 6.86525306e-04 -6.96842667e-03 7.88241731e-03 7.88241731e-03 -6.96401205e-03 -6.65332653e-03 6.65332653e-03 9.95491140e-02 5.15990200e-01 -9.95491140e-02 -2.53788780e-03 -1.46311251e-02 2.53788780e-03 6.78853114e-03 -4.68430612e-03 -3.65770659e-03 -9.88504715e-03 1.34997473e-02 -2.30263163e-02 1.14201355e-02 -1.00868915e-02 9.66260440e-03 -4.47145138e-03 2.15728427e-03 6.96401205e-03 -1.69134466e-02 -9.29544937e-03 9.95491140e-02 -9.95491140e-02 5.15990200e-01 -2.53788780e-03 2.53788780e-03 -1.46311251e-02 6.78853114e-03 -3.65770659e-03 -4.68430612e-03 9.88504715e-03 1.34997473e-02 -1.14201355e-02 2.30263163e-02 -1.00868915e-02 -4.47145138e-03 9.66260440e-03 -2.15728427e-03 6.96401205e-03 9.29544937e-03 1.69134466e-02 -9.36131516e-03 -2.53788780e-03 -2.53788780e-03 1.79650864e-04 -7.82240681e-05 -7.82240681e-05 4.91119301e-03 3.05324736e-03 3.05324736e-03 3.98965718e-03 -3.80846317e-03 3.80846317e-03 -8.65717248e-05 -1.92416159e-04 -1.92416159e-04 -5.76134452e-04 2.19325430e-04 -2.19325430e-04 -2.53788780e-03 -1.46311251e-02 2.53788780e-03 -7.82240681e-05 1.41854973e-04 7.82240681e-05 -4.88057902e-03 -3.08556574e-03 -2.92421677e-03 8.16061087e-05 -3.98965718e-03 3.77878526e-03 -3.90840983e-03 2.91222329e-04 5.87867582e-05 1.64256895e-04 -1.78094826e-05 5.76134452e-04 -1.07142033e-04 2.41137503e-04 -2.53788780e-03 2.53788780e-03 -1.46311251e-02 -7.82240681e-05 7.82240681e-05 1.41854973e-04 -4.88057902e-03 -2.92421677e-03 -3.08556574e-03 -8.16061087e-05 -3.98965718e-03 3.90840983e-03 -3.77878526e-03 2.91222329e-04 1.64256895e-04 5.87867582e-05 1.78094826e-05 5.76134452e-04 -2.41137503e-04 1.07142033e-04 2.50681311e-01 -1.29637869e-01 3.43603397e-02 -1.90677593e-02 -2.55642069e-01 5.76016724e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 -8.69671403e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 -8.69671403e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 -2.31073552e-01 1.70706534e-01 -3.47760262e-02 2.20810865e-02 -8.69671403e-02 -8.69671403e-02 -3.35169819e-01 3.81033730e-02 3.81033730e-02 5.56692551e-02 -4.55715201e-02 4.68039666e-02 -8.11017653e-03 5.48328334e-03 5.76016724e-02 -1.36360519e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 1.70016634e-02 1.70016634e-02 -1.70016634e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 1.70016634e-02 1.70016634e-02 -1.70016634e-02 9.09946312e-02 -8.78615395e-02 1.51409429e-02 -1.08124682e-02 3.81033730e-02 3.81033730e-02 5.56692551e-02 -1.70016634e-02 -1.70016634e-02 -3.82879364e-03 -1.84743808e-04 6.78853114e-03 6.78853114e-03 4.91119301e-03 -4.88057902e-03 -4.88057902e-03 2.33254718e-01 1.42959316e-01 1.42959316e-01 1.89783463e-01 -1.84466621e-01 1.84466621e-01 -1.05482763e-02 -6.47988162e-03 -6.47988162e-03 -2.78703402e-02 8.34518149e-03 -8.34518149e-03 -1.19719253e-02 -4.68430612e-03 -3.65770659e-03 3.05324736e-03 -3.08556574e-03 -2.92421677e-03 1.42959316e-01 8.74838123e-02 8.75173384e-02 -1.05433222e-04 1.16218161e-01 -1.13139159e-01 1.12926204e-01 -6.29096583e-03 -3.92045739e-03 -4.07789392e-03 2.30094432e-05 -1.70670281e-02 4.94560355e-03 -5.25183836e-03 -1.19719253e-02 -3.65770659e-03 -4.68430612e-03 3.05324736e-03 -2.92421677e-03 -3.08556574e-03 1.42959316e-01 8.75173384e-02 8.74838123e-02 1.05433222e-04 1.16218161e-01 -1.12926204e-01 1.13139159e-01 -6.29096583e-03 -4.07789392e-03 -3.92045739e-03 -2.30094432e-05 -1.70670281e-02 5.25183836e-03 -4.94560355e-03 -9.88504715e-03 9.88504715e-03 8.16061087e-05 -8.16061087e-05 -1.05433222e-04 1.05433222e-04 1.78440391e-04 -9.58226514e-06 -9.58226514e-06 -1.23324095e-04 1.23324095e-04 -3.89423179e-05 1.91006991e-04 1.91006991e-04 -1.34997473e-02 1.34997473e-02 1.34997473e-02 3.98965718e-03 -3.98965718e-03 -3.98965718e-03 1.89783463e-01 1.16218161e-01 1.16218161e-01 3.67563826e-01 -1.50037001e-01 1.50037001e-01 -8.58346559e-03 -5.25627773e-03 -5.25627773e-03 -3.91967293e-02 6.78582537e-03 -6.78582537e-03 -6.86525306e-04 -2.30263163e-02 -1.14201355e-02 -3.80846317e-03 3.77878526e-03 3.90840983e-03 -1.84466621e-01 -1.13139159e-01 -1.12926204e-01 -9.58226514e-06 -1.50037001e-01 1.45685791e-01 -1.45949895e-01 8.49151503e-03 5.03807181e-03 5.01287669e-03 2.09120600e-06 2.20334385e-02 -6.62775483e-03 6.50712338e-03 6.86525306e-04 1.14201355e-02 2.30263163e-02 3.80846317e-03 -3.90840983e-03 -3.77878526e-03 1.84466621e-01 1.12926204e-01 1.13139159e-01 -9.58226514e-06 1.50037001e-01 -1.45949895e-01 1.45685791e-01 -8.49151503e-03 -5.01287669e-03 -5.03807181e-03 2.09120600e-06 -2.20334385e-02 6.50712338e-03 -6.62775483e-03 -6.96842667e-03 -1.00868915e-02 -1.00868915e-02 -8.65717248e-05 2.91222329e-04 2.91222329e-04 -1.05482763e-02 -6.29096583e-03 -6.29096583e-03 -8.58346559e-03 8.49151503e-03 -8.49151503e-03 7.69472345e-04 1.37774951e-04 1.37774951e-04 1.21596738e-03 -2.58595459e-04 2.58595459e-04 7.88241731e-03 9.66260440e-03 -4.47145138e-03 -1.92416159e-04 5.87867582e-05 1.64256895e-04 -6.47988162e-03 -3.92045739e-03 -4.07789392e-03 -1.23324095e-04 -5.25627773e-03 5.03807181e-03 -5.01287669e-03 1.37774951e-04 3.28830564e-04 1.58824815e-04 2.69138959e-05 7.44624905e-04 -4.09415493e-04 1.50120025e-04 7.88241731e-03 -4.47145138e-03 9.66260440e-03 -1.92416159e-04 1.64256895e-04 5.87867582e-05 -6.47988162e-03 -4.07789392e-03 -3.92045739e-03 1.23324095e-04 -5.25627773e-03 5.01287669e-03 -5.03807181e-03 1.37774951e-04 1.58824815e-04 3.28830564e-04 -2.69138959e-05 7.44624905e-04 -1.50120025e-04 4.09415493e-04 2.15728427e-03 -2.15728427e-03 -1.78094826e-05 1.78094826e-05 2.30094432e-05 -2.30094432e-05 -3.89423179e-05 2.09120600e-06 2.09120600e-06 2.69138959e-05 -2.69138959e-05 8.49865950e-06 -4.16848167e-05 -4.16848167e-05 -6.96401205e-03 6.96401205e-03 6.96401205e-03 -5.76134452e-04 5.76134452e-04 5.76134452e-04 -2.78703402e-02 -1.70670281e-02 -1.70670281e-02 -3.91967293e-02 2.20334385e-02 -2.20334385e-02 1.21596738e-03 7.44624905e-04 7.44624905e-04 4.88351268e-03 -9.61306618e-04 9.61306618e-04 -6.65332653e-03 -1.69134466e-02 9.29544937e-03 2.19325430e-04 -1.07142033e-04 -2.41137503e-04 8.34518149e-03 4.94560355e-03 5.25183836e-03 1.91006991e-04 6.78582537e-03 -6.62775483e-03 6.50712338e-03 -2.58595459e-04 -4.09415493e-04 -1.50120025e-04 -4.16848167e-05 -9.61306618e-04 5.05894315e-04 -1.34231757e-04 6.65332653e-03 -9.29544937e-03 1.69134466e-02 -2.19325430e-04 2.41137503e-04 1.07142033e-04 -8.34518149e-03 -5.25183836e-03 -4.94560355e-03 1.91006991e-04 -6.78582537e-03 6.50712338e-03 -6.62775483e-03 2.58595459e-04 1.50120025e-04 4.09415493e-04 -4.16848167e-05 9.61306618e-04 -1.34231757e-04 5.05894315e-04 - 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 - 0 12 24 36 48 66 86 106 124 144 164 170 180 190 190 200 206 216 226 226 236 254 274 294 308 326 346 366 384 404 424 438 456 476 496 --2 1 0 496 - -1.30077665e+00 -3.97979828e-02 -1.21755678e-01 3.00506476e-02 2.50681311e-01 -2.31073552e-01 -2.31073552e-01 2.31073552e-01 -4.55715201e-02 9.09946312e-02 9.09946312e-02 -9.09946312e-02 -3.97979828e-02 -1.15126664e+00 8.95185576e-02 -1.01048380e-01 -1.29637869e-01 1.70706534e-01 1.70706534e-01 -1.70706534e-01 4.68039666e-02 -8.78615395e-02 -8.78615395e-02 8.78615395e-02 -1.21755678e-01 8.95185576e-02 -1.86285298e-02 1.13591275e-02 3.43603397e-02 -3.47760262e-02 -3.47760262e-02 3.47760262e-02 -8.11017653e-03 1.51409429e-02 1.51409429e-02 -1.51409429e-02 3.00506476e-02 -1.01048380e-01 1.13591275e-02 -9.53400814e-03 -1.90677593e-02 2.20810865e-02 2.20810865e-02 -2.20810865e-02 5.48328334e-03 -1.08124682e-02 -1.08124682e-02 1.08124682e-02 -1.32837516e+00 -9.95491140e-02 -9.95491140e-02 3.64581589e-03 2.53788780e-03 2.53788780e-03 2.60203672e-02 1.19719253e-02 1.19719253e-02 1.34997473e-02 6.86525306e-04 -6.86525306e-04 2.30528378e-02 -7.88241731e-03 -7.88241731e-03 6.96401205e-03 6.65332653e-03 -6.65332653e-03 -9.95491140e-02 -1.47531604e+00 9.95491140e-02 2.53788780e-03 -1.62399402e-03 -2.53788780e-03 -6.78853114e-03 -2.07315938e-02 3.65770659e-03 9.88504715e-03 -1.34997473e-02 -2.30935703e-03 -1.14201355e-02 1.00868915e-02 -8.72159043e-03 4.47145138e-03 -2.15728427e-03 -6.96401205e-03 6.82044689e-03 9.29544937e-03 -9.95491140e-02 9.95491140e-02 -1.47531604e+00 2.53788780e-03 -2.53788780e-03 -1.62399402e-03 -6.78853114e-03 3.65770659e-03 -2.07315938e-02 -9.88504715e-03 -1.34997473e-02 1.14201355e-02 2.30935703e-03 1.00868915e-02 4.47145138e-03 -8.72159043e-03 2.15728427e-03 -6.96401205e-03 -9.29544937e-03 -6.82044689e-03 3.64581589e-03 2.53788780e-03 2.53788780e-03 -1.26080894e-04 7.82240681e-05 7.82240681e-05 -4.95421603e-03 -3.05324736e-03 -3.05324736e-03 -3.98965718e-03 3.80846317e-03 -3.80846317e-03 8.14872011e-05 1.92416159e-04 1.92416159e-04 5.76134452e-04 -2.19325430e-04 2.19325430e-04 2.53788780e-03 -1.62399402e-03 -2.53788780e-03 7.82240681e-05 -1.63876786e-04 -7.82240681e-05 4.88057902e-03 2.95573881e-03 2.92421677e-03 -8.16061087e-05 3.98965718e-03 -4.02050538e-03 3.90840983e-03 -2.91222329e-04 -4.41278956e-05 -1.64256895e-04 1.78094826e-05 -5.76134452e-04 2.57202134e-05 -2.41137503e-04 2.53788780e-03 -2.53788780e-03 -1.62399402e-03 7.82240681e-05 -7.82240681e-05 -1.63876786e-04 4.88057902e-03 2.92421677e-03 2.95573881e-03 8.16061087e-05 3.98965718e-03 -3.90840983e-03 4.02050538e-03 -2.91222329e-04 -1.64256895e-04 -4.41278956e-05 -1.78094826e-05 -5.76134452e-04 2.41137503e-04 -2.57202134e-05 2.50681311e-01 -1.29637869e-01 3.43603397e-02 -1.90677593e-02 -2.55642069e-01 5.76016724e-02 -2.31073552e-01 1.70706534e-01 -3.47760262e-02 2.20810865e-02 -8.69671403e-02 -8.69671403e-02 8.69671403e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 -2.31073552e-01 1.70706534e-01 -3.47760262e-02 2.20810865e-02 -8.69671403e-02 -8.69671403e-02 8.69671403e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 -5.09104100e-01 -3.81033730e-02 -3.81033730e-02 1.31876001e-01 -4.55715201e-02 4.68039666e-02 -8.11017653e-03 5.48328334e-03 5.76016724e-02 -1.36360519e-02 9.09946312e-02 -8.78615395e-02 1.51409429e-02 -1.08124682e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 -1.70016634e-02 -1.70016634e-02 1.70016634e-02 9.09946312e-02 -8.78615395e-02 1.51409429e-02 -1.08124682e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 -1.70016634e-02 -1.70016634e-02 1.70016634e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 1.31876001e-01 1.70016634e-02 1.70016634e-02 -3.78321204e-02 2.60203672e-02 -6.78853114e-03 -6.78853114e-03 -4.95421603e-03 4.88057902e-03 4.88057902e-03 -2.33574112e-01 -1.42959316e-01 -1.42959316e-01 -1.89783463e-01 1.84466621e-01 -1.84466621e-01 1.02934331e-02 6.47988162e-03 6.47988162e-03 2.78703402e-02 -8.34518149e-03 8.34518149e-03 1.19719253e-02 -2.07315938e-02 3.65770659e-03 -3.05324736e-03 2.95573881e-03 2.92421677e-03 -1.42959316e-01 -8.78000495e-02 -8.75173384e-02 1.05433222e-04 -1.16218161e-01 1.12690603e-01 -1.12926204e-01 6.29096583e-03 3.94386154e-03 4.07789392e-03 -2.30094432e-05 1.70670281e-02 -5.10663990e-03 5.25183836e-03 1.19719253e-02 3.65770659e-03 -2.07315938e-02 -3.05324736e-03 2.92421677e-03 2.95573881e-03 -1.42959316e-01 -8.75173384e-02 -8.78000495e-02 -1.05433222e-04 -1.16218161e-01 1.12926204e-01 -1.12690603e-01 6.29096583e-03 4.07789392e-03 3.94386154e-03 2.30094432e-05 1.70670281e-02 -5.25183836e-03 5.10663990e-03 9.88504715e-03 -9.88504715e-03 -8.16061087e-05 8.16061087e-05 1.05433222e-04 -1.05433222e-04 -1.78440391e-04 9.58226514e-06 9.58226514e-06 1.23324095e-04 -1.23324095e-04 3.89423179e-05 -1.91006991e-04 -1.91006991e-04 1.34997473e-02 -1.34997473e-02 -1.34997473e-02 -3.98965718e-03 3.98965718e-03 3.98965718e-03 -1.89783463e-01 -1.16218161e-01 -1.16218161e-01 5.86189719e-02 1.50037001e-01 -1.50037001e-01 8.58346559e-03 5.25627773e-03 5.25627773e-03 5.74991859e-03 -6.78582537e-03 6.78582537e-03 6.86525306e-04 -2.30935703e-03 1.14201355e-02 3.80846317e-03 -4.02050538e-03 -3.90840983e-03 1.84466621e-01 1.12690603e-01 1.12926204e-01 9.58226514e-06 1.50037001e-01 -1.46216058e-01 1.45949895e-01 -8.49151503e-03 -5.01417164e-03 -5.01287669e-03 -2.09120600e-06 -2.20334385e-02 6.42752029e-03 -6.50712338e-03 -6.86525306e-04 -1.14201355e-02 2.30935703e-03 -3.80846317e-03 3.90840983e-03 4.02050538e-03 -1.84466621e-01 -1.12926204e-01 -1.12690603e-01 9.58226514e-06 -1.50037001e-01 1.45949895e-01 -1.46216058e-01 8.49151503e-03 5.01287669e-03 5.01417164e-03 -2.09120600e-06 2.20334385e-02 -6.50712338e-03 6.42752029e-03 2.30528378e-02 1.00868915e-02 1.00868915e-02 8.14872011e-05 -2.91222329e-04 -2.91222329e-04 1.02934331e-02 6.29096583e-03 6.29096583e-03 8.58346559e-03 -8.49151503e-03 8.49151503e-03 -9.58405865e-04 -1.37774951e-04 -1.37774951e-04 -1.21596738e-03 2.58595459e-04 -2.58595459e-04 -7.88241731e-03 -8.72159043e-03 4.47145138e-03 1.92416159e-04 -4.41278956e-05 -1.64256895e-04 6.47988162e-03 3.94386154e-03 4.07789392e-03 1.23324095e-04 5.25627773e-03 -5.01417164e-03 5.01287669e-03 -1.37774951e-04 -3.29747090e-04 -1.58824815e-04 -2.69138959e-05 -7.44624905e-04 4.18861158e-04 -1.50120025e-04 -7.88241731e-03 4.47145138e-03 -8.72159043e-03 1.92416159e-04 -1.64256895e-04 -4.41278956e-05 6.47988162e-03 4.07789392e-03 3.94386154e-03 -1.23324095e-04 5.25627773e-03 -5.01287669e-03 5.01417164e-03 -1.37774951e-04 -1.58824815e-04 -3.29747090e-04 2.69138959e-05 -7.44624905e-04 1.50120025e-04 -4.18861158e-04 -2.15728427e-03 2.15728427e-03 1.78094826e-05 -1.78094826e-05 -2.30094432e-05 2.30094432e-05 3.89423179e-05 -2.09120600e-06 -2.09120600e-06 -2.69138959e-05 2.69138959e-05 -8.49865950e-06 4.16848167e-05 4.16848167e-05 6.96401205e-03 -6.96401205e-03 -6.96401205e-03 5.76134452e-04 -5.76134452e-04 -5.76134452e-04 2.78703402e-02 1.70670281e-02 1.70670281e-02 5.74991859e-03 -2.20334385e-02 2.20334385e-02 -1.21596738e-03 -7.44624905e-04 -7.44624905e-04 -2.25860819e-03 9.61306618e-04 -9.61306618e-04 6.65332653e-03 6.82044689e-03 -9.29544937e-03 -2.19325430e-04 2.57202134e-05 2.41137503e-04 -8.34518149e-03 -5.10663990e-03 -5.25183836e-03 -1.91006991e-04 -6.78582537e-03 6.42752029e-03 -6.50712338e-03 2.58595459e-04 4.18861158e-04 1.50120025e-04 4.16848167e-05 9.61306618e-04 -5.80403562e-04 1.34231757e-04 -6.65332653e-03 9.29544937e-03 -6.82044689e-03 2.19325430e-04 -2.41137503e-04 -2.57202134e-05 8.34518149e-03 5.25183836e-03 5.10663990e-03 -1.91006991e-04 6.78582537e-03 -6.50712338e-03 6.42752029e-03 -2.58595459e-04 -1.50120025e-04 -4.18861158e-04 4.16848167e-05 -9.61306618e-04 1.34231757e-04 -5.80403562e-04 - 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 - 0 12 24 36 48 66 86 106 124 144 164 170 180 190 190 200 206 216 226 226 236 254 274 294 308 326 346 366 384 404 424 438 456 476 496 --2 1 1 496 - 6.10668701e-01 -7.51799909e-02 6.94266500e-02 -1.13818158e-02 2.50681311e-01 2.31073552e-01 2.31073552e-01 -2.31073552e-01 -4.55715201e-02 -9.09946312e-02 -9.09946312e-02 9.09946312e-02 -7.51799909e-02 6.30743818e-01 -3.88656825e-02 8.24503254e-02 -1.29637869e-01 -1.70706534e-01 -1.70706534e-01 1.70706534e-01 4.68039666e-02 8.78615395e-02 8.78615395e-02 -8.78615395e-02 6.94266500e-02 -3.88656825e-02 9.24320123e-03 -5.59159516e-03 3.43603397e-02 3.47760262e-02 3.47760262e-02 -3.47760262e-02 -8.11017653e-03 -1.51409429e-02 -1.51409429e-02 1.51409429e-02 -1.13818158e-02 8.24503254e-02 -5.59159516e-03 1.01087384e-02 -1.90677593e-02 -2.20810865e-02 -2.20810865e-02 2.20810865e-02 5.48328334e-03 1.08124682e-02 1.08124682e-02 -1.08124682e-02 6.62931071e-01 9.95491140e-02 9.95491140e-02 -9.36131516e-03 -2.53788780e-03 -2.53788780e-03 -1.84743808e-04 -1.19719253e-02 -1.19719253e-02 -1.34997473e-02 -6.86525306e-04 6.86525306e-04 -6.96842667e-03 7.88241731e-03 7.88241731e-03 -6.96401205e-03 -6.65332653e-03 6.65332653e-03 9.95491140e-02 5.15990200e-01 -9.95491140e-02 -2.53788780e-03 -1.46311251e-02 2.53788780e-03 6.78853114e-03 -4.68430612e-03 -3.65770659e-03 -9.88504715e-03 1.34997473e-02 -2.30263163e-02 1.14201355e-02 -1.00868915e-02 9.66260440e-03 -4.47145138e-03 2.15728427e-03 6.96401205e-03 -1.69134466e-02 -9.29544937e-03 9.95491140e-02 -9.95491140e-02 5.15990200e-01 -2.53788780e-03 2.53788780e-03 -1.46311251e-02 6.78853114e-03 -3.65770659e-03 -4.68430612e-03 9.88504715e-03 1.34997473e-02 -1.14201355e-02 2.30263163e-02 -1.00868915e-02 -4.47145138e-03 9.66260440e-03 -2.15728427e-03 6.96401205e-03 9.29544937e-03 1.69134466e-02 -9.36131516e-03 -2.53788780e-03 -2.53788780e-03 1.79650864e-04 -7.82240681e-05 -7.82240681e-05 4.91119301e-03 3.05324736e-03 3.05324736e-03 3.98965718e-03 -3.80846317e-03 3.80846317e-03 -8.65717248e-05 -1.92416159e-04 -1.92416159e-04 -5.76134452e-04 2.19325430e-04 -2.19325430e-04 -2.53788780e-03 -1.46311251e-02 2.53788780e-03 -7.82240681e-05 1.41854973e-04 7.82240681e-05 -4.88057902e-03 -3.08556574e-03 -2.92421677e-03 8.16061087e-05 -3.98965718e-03 3.77878526e-03 -3.90840983e-03 2.91222329e-04 5.87867582e-05 1.64256895e-04 -1.78094826e-05 5.76134452e-04 -1.07142033e-04 2.41137503e-04 -2.53788780e-03 2.53788780e-03 -1.46311251e-02 -7.82240681e-05 7.82240681e-05 1.41854973e-04 -4.88057902e-03 -2.92421677e-03 -3.08556574e-03 -8.16061087e-05 -3.98965718e-03 3.90840983e-03 -3.77878526e-03 2.91222329e-04 1.64256895e-04 5.87867582e-05 1.78094826e-05 5.76134452e-04 -2.41137503e-04 1.07142033e-04 2.50681311e-01 -1.29637869e-01 3.43603397e-02 -1.90677593e-02 -2.55642069e-01 5.76016724e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 -8.69671403e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 -8.69671403e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 -2.31073552e-01 1.70706534e-01 -3.47760262e-02 2.20810865e-02 -8.69671403e-02 -8.69671403e-02 -3.35169819e-01 3.81033730e-02 3.81033730e-02 5.56692551e-02 -4.55715201e-02 4.68039666e-02 -8.11017653e-03 5.48328334e-03 5.76016724e-02 -1.36360519e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 1.70016634e-02 1.70016634e-02 -1.70016634e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 1.70016634e-02 1.70016634e-02 -1.70016634e-02 9.09946312e-02 -8.78615395e-02 1.51409429e-02 -1.08124682e-02 3.81033730e-02 3.81033730e-02 5.56692551e-02 -1.70016634e-02 -1.70016634e-02 -3.82879364e-03 -1.84743808e-04 6.78853114e-03 6.78853114e-03 4.91119301e-03 -4.88057902e-03 -4.88057902e-03 2.33254718e-01 1.42959316e-01 1.42959316e-01 1.89783463e-01 -1.84466621e-01 1.84466621e-01 -1.05482763e-02 -6.47988162e-03 -6.47988162e-03 -2.78703402e-02 8.34518149e-03 -8.34518149e-03 -1.19719253e-02 -4.68430612e-03 -3.65770659e-03 3.05324736e-03 -3.08556574e-03 -2.92421677e-03 1.42959316e-01 8.74838123e-02 8.75173384e-02 -1.05433222e-04 1.16218161e-01 -1.13139159e-01 1.12926204e-01 -6.29096583e-03 -3.92045739e-03 -4.07789392e-03 2.30094432e-05 -1.70670281e-02 4.94560355e-03 -5.25183836e-03 -1.19719253e-02 -3.65770659e-03 -4.68430612e-03 3.05324736e-03 -2.92421677e-03 -3.08556574e-03 1.42959316e-01 8.75173384e-02 8.74838123e-02 1.05433222e-04 1.16218161e-01 -1.12926204e-01 1.13139159e-01 -6.29096583e-03 -4.07789392e-03 -3.92045739e-03 -2.30094432e-05 -1.70670281e-02 5.25183836e-03 -4.94560355e-03 -9.88504715e-03 9.88504715e-03 8.16061087e-05 -8.16061087e-05 -1.05433222e-04 1.05433222e-04 1.78440391e-04 -9.58226514e-06 -9.58226514e-06 -1.23324095e-04 1.23324095e-04 -3.89423179e-05 1.91006991e-04 1.91006991e-04 -1.34997473e-02 1.34997473e-02 1.34997473e-02 3.98965718e-03 -3.98965718e-03 -3.98965718e-03 1.89783463e-01 1.16218161e-01 1.16218161e-01 3.67563826e-01 -1.50037001e-01 1.50037001e-01 -8.58346559e-03 -5.25627773e-03 -5.25627773e-03 -3.91967293e-02 6.78582537e-03 -6.78582537e-03 -6.86525306e-04 -2.30263163e-02 -1.14201355e-02 -3.80846317e-03 3.77878526e-03 3.90840983e-03 -1.84466621e-01 -1.13139159e-01 -1.12926204e-01 -9.58226514e-06 -1.50037001e-01 1.45685791e-01 -1.45949895e-01 8.49151503e-03 5.03807181e-03 5.01287669e-03 2.09120600e-06 2.20334385e-02 -6.62775483e-03 6.50712338e-03 6.86525306e-04 1.14201355e-02 2.30263163e-02 3.80846317e-03 -3.90840983e-03 -3.77878526e-03 1.84466621e-01 1.12926204e-01 1.13139159e-01 -9.58226514e-06 1.50037001e-01 -1.45949895e-01 1.45685791e-01 -8.49151503e-03 -5.01287669e-03 -5.03807181e-03 2.09120600e-06 -2.20334385e-02 6.50712338e-03 -6.62775483e-03 -6.96842667e-03 -1.00868915e-02 -1.00868915e-02 -8.65717248e-05 2.91222329e-04 2.91222329e-04 -1.05482763e-02 -6.29096583e-03 -6.29096583e-03 -8.58346559e-03 8.49151503e-03 -8.49151503e-03 7.69472345e-04 1.37774951e-04 1.37774951e-04 1.21596738e-03 -2.58595459e-04 2.58595459e-04 7.88241731e-03 9.66260440e-03 -4.47145138e-03 -1.92416159e-04 5.87867582e-05 1.64256895e-04 -6.47988162e-03 -3.92045739e-03 -4.07789392e-03 -1.23324095e-04 -5.25627773e-03 5.03807181e-03 -5.01287669e-03 1.37774951e-04 3.28830564e-04 1.58824815e-04 2.69138959e-05 7.44624905e-04 -4.09415493e-04 1.50120025e-04 7.88241731e-03 -4.47145138e-03 9.66260440e-03 -1.92416159e-04 1.64256895e-04 5.87867582e-05 -6.47988162e-03 -4.07789392e-03 -3.92045739e-03 1.23324095e-04 -5.25627773e-03 5.01287669e-03 -5.03807181e-03 1.37774951e-04 1.58824815e-04 3.28830564e-04 -2.69138959e-05 7.44624905e-04 -1.50120025e-04 4.09415493e-04 2.15728427e-03 -2.15728427e-03 -1.78094826e-05 1.78094826e-05 2.30094432e-05 -2.30094432e-05 -3.89423179e-05 2.09120600e-06 2.09120600e-06 2.69138959e-05 -2.69138959e-05 8.49865950e-06 -4.16848167e-05 -4.16848167e-05 -6.96401205e-03 6.96401205e-03 6.96401205e-03 -5.76134452e-04 5.76134452e-04 5.76134452e-04 -2.78703402e-02 -1.70670281e-02 -1.70670281e-02 -3.91967293e-02 2.20334385e-02 -2.20334385e-02 1.21596738e-03 7.44624905e-04 7.44624905e-04 4.88351268e-03 -9.61306618e-04 9.61306618e-04 -6.65332653e-03 -1.69134466e-02 9.29544937e-03 2.19325430e-04 -1.07142033e-04 -2.41137503e-04 8.34518149e-03 4.94560355e-03 5.25183836e-03 1.91006991e-04 6.78582537e-03 -6.62775483e-03 6.50712338e-03 -2.58595459e-04 -4.09415493e-04 -1.50120025e-04 -4.16848167e-05 -9.61306618e-04 5.05894315e-04 -1.34231757e-04 6.65332653e-03 -9.29544937e-03 1.69134466e-02 -2.19325430e-04 2.41137503e-04 1.07142033e-04 -8.34518149e-03 -5.25183836e-03 -4.94560355e-03 1.91006991e-04 -6.78582537e-03 6.50712338e-03 -6.62775483e-03 2.58595459e-04 1.50120025e-04 4.09415493e-04 -4.16848167e-05 9.61306618e-04 -1.34231757e-04 5.05894315e-04 - 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 - 0 12 24 36 48 66 86 106 124 144 164 170 180 190 190 200 206 216 226 226 236 254 274 294 308 326 346 366 384 404 424 438 456 476 496 --2 1 2 496 - -1.30077665e+00 -3.97979828e-02 -1.21755678e-01 3.00506476e-02 2.50681311e-01 -2.31073552e-01 -2.31073552e-01 2.31073552e-01 -4.55715201e-02 9.09946312e-02 9.09946312e-02 -9.09946312e-02 -3.97979828e-02 -1.15126664e+00 8.95185576e-02 -1.01048380e-01 -1.29637869e-01 1.70706534e-01 1.70706534e-01 -1.70706534e-01 4.68039666e-02 -8.78615395e-02 -8.78615395e-02 8.78615395e-02 -1.21755678e-01 8.95185576e-02 -1.86285298e-02 1.13591275e-02 3.43603397e-02 -3.47760262e-02 -3.47760262e-02 3.47760262e-02 -8.11017653e-03 1.51409429e-02 1.51409429e-02 -1.51409429e-02 3.00506476e-02 -1.01048380e-01 1.13591275e-02 -9.53400814e-03 -1.90677593e-02 2.20810865e-02 2.20810865e-02 -2.20810865e-02 5.48328334e-03 -1.08124682e-02 -1.08124682e-02 1.08124682e-02 -1.32837516e+00 -9.95491140e-02 -9.95491140e-02 3.64581589e-03 2.53788780e-03 2.53788780e-03 2.60203672e-02 1.19719253e-02 1.19719253e-02 1.34997473e-02 6.86525306e-04 -6.86525306e-04 2.30528378e-02 -7.88241731e-03 -7.88241731e-03 6.96401205e-03 6.65332653e-03 -6.65332653e-03 -9.95491140e-02 -1.47531604e+00 9.95491140e-02 2.53788780e-03 -1.62399402e-03 -2.53788780e-03 -6.78853114e-03 -2.07315938e-02 3.65770659e-03 9.88504715e-03 -1.34997473e-02 -2.30935703e-03 -1.14201355e-02 1.00868915e-02 -8.72159043e-03 4.47145138e-03 -2.15728427e-03 -6.96401205e-03 6.82044689e-03 9.29544937e-03 -9.95491140e-02 9.95491140e-02 -1.47531604e+00 2.53788780e-03 -2.53788780e-03 -1.62399402e-03 -6.78853114e-03 3.65770659e-03 -2.07315938e-02 -9.88504715e-03 -1.34997473e-02 1.14201355e-02 2.30935703e-03 1.00868915e-02 4.47145138e-03 -8.72159043e-03 2.15728427e-03 -6.96401205e-03 -9.29544937e-03 -6.82044689e-03 3.64581589e-03 2.53788780e-03 2.53788780e-03 -1.26080894e-04 7.82240681e-05 7.82240681e-05 -4.95421603e-03 -3.05324736e-03 -3.05324736e-03 -3.98965718e-03 3.80846317e-03 -3.80846317e-03 8.14872011e-05 1.92416159e-04 1.92416159e-04 5.76134452e-04 -2.19325430e-04 2.19325430e-04 2.53788780e-03 -1.62399402e-03 -2.53788780e-03 7.82240681e-05 -1.63876786e-04 -7.82240681e-05 4.88057902e-03 2.95573881e-03 2.92421677e-03 -8.16061087e-05 3.98965718e-03 -4.02050538e-03 3.90840983e-03 -2.91222329e-04 -4.41278956e-05 -1.64256895e-04 1.78094826e-05 -5.76134452e-04 2.57202134e-05 -2.41137503e-04 2.53788780e-03 -2.53788780e-03 -1.62399402e-03 7.82240681e-05 -7.82240681e-05 -1.63876786e-04 4.88057902e-03 2.92421677e-03 2.95573881e-03 8.16061087e-05 3.98965718e-03 -3.90840983e-03 4.02050538e-03 -2.91222329e-04 -1.64256895e-04 -4.41278956e-05 -1.78094826e-05 -5.76134452e-04 2.41137503e-04 -2.57202134e-05 2.50681311e-01 -1.29637869e-01 3.43603397e-02 -1.90677593e-02 -2.55642069e-01 5.76016724e-02 -2.31073552e-01 1.70706534e-01 -3.47760262e-02 2.20810865e-02 -8.69671403e-02 -8.69671403e-02 8.69671403e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 -2.31073552e-01 1.70706534e-01 -3.47760262e-02 2.20810865e-02 -8.69671403e-02 -8.69671403e-02 8.69671403e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 -5.09104100e-01 -3.81033730e-02 -3.81033730e-02 1.31876001e-01 -4.55715201e-02 4.68039666e-02 -8.11017653e-03 5.48328334e-03 5.76016724e-02 -1.36360519e-02 9.09946312e-02 -8.78615395e-02 1.51409429e-02 -1.08124682e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 -1.70016634e-02 -1.70016634e-02 1.70016634e-02 9.09946312e-02 -8.78615395e-02 1.51409429e-02 -1.08124682e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 -1.70016634e-02 -1.70016634e-02 1.70016634e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 1.31876001e-01 1.70016634e-02 1.70016634e-02 -3.78321204e-02 2.60203672e-02 -6.78853114e-03 -6.78853114e-03 -4.95421603e-03 4.88057902e-03 4.88057902e-03 -2.33574112e-01 -1.42959316e-01 -1.42959316e-01 -1.89783463e-01 1.84466621e-01 -1.84466621e-01 1.02934331e-02 6.47988162e-03 6.47988162e-03 2.78703402e-02 -8.34518149e-03 8.34518149e-03 1.19719253e-02 -2.07315938e-02 3.65770659e-03 -3.05324736e-03 2.95573881e-03 2.92421677e-03 -1.42959316e-01 -8.78000495e-02 -8.75173384e-02 1.05433222e-04 -1.16218161e-01 1.12690603e-01 -1.12926204e-01 6.29096583e-03 3.94386154e-03 4.07789392e-03 -2.30094432e-05 1.70670281e-02 -5.10663990e-03 5.25183836e-03 1.19719253e-02 3.65770659e-03 -2.07315938e-02 -3.05324736e-03 2.92421677e-03 2.95573881e-03 -1.42959316e-01 -8.75173384e-02 -8.78000495e-02 -1.05433222e-04 -1.16218161e-01 1.12926204e-01 -1.12690603e-01 6.29096583e-03 4.07789392e-03 3.94386154e-03 2.30094432e-05 1.70670281e-02 -5.25183836e-03 5.10663990e-03 9.88504715e-03 -9.88504715e-03 -8.16061087e-05 8.16061087e-05 1.05433222e-04 -1.05433222e-04 -1.78440391e-04 9.58226514e-06 9.58226514e-06 1.23324095e-04 -1.23324095e-04 3.89423179e-05 -1.91006991e-04 -1.91006991e-04 1.34997473e-02 -1.34997473e-02 -1.34997473e-02 -3.98965718e-03 3.98965718e-03 3.98965718e-03 -1.89783463e-01 -1.16218161e-01 -1.16218161e-01 5.86189719e-02 1.50037001e-01 -1.50037001e-01 8.58346559e-03 5.25627773e-03 5.25627773e-03 5.74991859e-03 -6.78582537e-03 6.78582537e-03 6.86525306e-04 -2.30935703e-03 1.14201355e-02 3.80846317e-03 -4.02050538e-03 -3.90840983e-03 1.84466621e-01 1.12690603e-01 1.12926204e-01 9.58226514e-06 1.50037001e-01 -1.46216058e-01 1.45949895e-01 -8.49151503e-03 -5.01417164e-03 -5.01287669e-03 -2.09120600e-06 -2.20334385e-02 6.42752029e-03 -6.50712338e-03 -6.86525306e-04 -1.14201355e-02 2.30935703e-03 -3.80846317e-03 3.90840983e-03 4.02050538e-03 -1.84466621e-01 -1.12926204e-01 -1.12690603e-01 9.58226514e-06 -1.50037001e-01 1.45949895e-01 -1.46216058e-01 8.49151503e-03 5.01287669e-03 5.01417164e-03 -2.09120600e-06 2.20334385e-02 -6.50712338e-03 6.42752029e-03 2.30528378e-02 1.00868915e-02 1.00868915e-02 8.14872011e-05 -2.91222329e-04 -2.91222329e-04 1.02934331e-02 6.29096583e-03 6.29096583e-03 8.58346559e-03 -8.49151503e-03 8.49151503e-03 -9.58405865e-04 -1.37774951e-04 -1.37774951e-04 -1.21596738e-03 2.58595459e-04 -2.58595459e-04 -7.88241731e-03 -8.72159043e-03 4.47145138e-03 1.92416159e-04 -4.41278956e-05 -1.64256895e-04 6.47988162e-03 3.94386154e-03 4.07789392e-03 1.23324095e-04 5.25627773e-03 -5.01417164e-03 5.01287669e-03 -1.37774951e-04 -3.29747090e-04 -1.58824815e-04 -2.69138959e-05 -7.44624905e-04 4.18861158e-04 -1.50120025e-04 -7.88241731e-03 4.47145138e-03 -8.72159043e-03 1.92416159e-04 -1.64256895e-04 -4.41278956e-05 6.47988162e-03 4.07789392e-03 3.94386154e-03 -1.23324095e-04 5.25627773e-03 -5.01287669e-03 5.01417164e-03 -1.37774951e-04 -1.58824815e-04 -3.29747090e-04 2.69138959e-05 -7.44624905e-04 1.50120025e-04 -4.18861158e-04 -2.15728427e-03 2.15728427e-03 1.78094826e-05 -1.78094826e-05 -2.30094432e-05 2.30094432e-05 3.89423179e-05 -2.09120600e-06 -2.09120600e-06 -2.69138959e-05 2.69138959e-05 -8.49865950e-06 4.16848167e-05 4.16848167e-05 6.96401205e-03 -6.96401205e-03 -6.96401205e-03 5.76134452e-04 -5.76134452e-04 -5.76134452e-04 2.78703402e-02 1.70670281e-02 1.70670281e-02 5.74991859e-03 -2.20334385e-02 2.20334385e-02 -1.21596738e-03 -7.44624905e-04 -7.44624905e-04 -2.25860819e-03 9.61306618e-04 -9.61306618e-04 6.65332653e-03 6.82044689e-03 -9.29544937e-03 -2.19325430e-04 2.57202134e-05 2.41137503e-04 -8.34518149e-03 -5.10663990e-03 -5.25183836e-03 -1.91006991e-04 -6.78582537e-03 6.42752029e-03 -6.50712338e-03 2.58595459e-04 4.18861158e-04 1.50120025e-04 4.16848167e-05 9.61306618e-04 -5.80403562e-04 1.34231757e-04 -6.65332653e-03 9.29544937e-03 -6.82044689e-03 2.19325430e-04 -2.41137503e-04 -2.57202134e-05 8.34518149e-03 5.25183836e-03 5.10663990e-03 -1.91006991e-04 6.78582537e-03 -6.50712338e-03 6.42752029e-03 -2.58595459e-04 -1.50120025e-04 -4.18861158e-04 4.16848167e-05 -9.61306618e-04 1.34231757e-04 -5.80403562e-04 - 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 - 0 12 24 36 48 66 86 106 124 144 164 170 180 190 190 200 206 216 226 226 236 254 274 294 308 326 346 366 384 404 424 438 456 476 496 --2 2 -2 496 - 1.46471486e+00 2.54883877e-01 1.24590418e-01 -9.35884290e-03 -2.50681311e-01 2.31073552e-01 2.31073552e-01 -2.31073552e-01 4.55715201e-02 -9.09946312e-02 -9.09946312e-02 9.09946312e-02 2.54883877e-01 1.70428957e+00 -9.34218553e-02 1.65342489e-01 1.29637869e-01 -1.70706534e-01 -1.70706534e-01 1.70706534e-01 -4.68039666e-02 8.78615395e-02 8.78615395e-02 -8.78615395e-02 1.24590418e-01 -9.34218553e-02 1.88920782e-02 -1.20468125e-02 -3.43603397e-02 3.47760262e-02 3.47760262e-02 -3.47760262e-02 8.11017653e-03 -1.51409429e-02 -1.51409429e-02 1.51409429e-02 -9.35884290e-03 1.65342489e-01 -1.20468125e-02 1.72406024e-02 1.90677593e-02 -2.20810865e-02 -2.20810865e-02 2.20810865e-02 -5.48328334e-03 1.08124682e-02 1.08124682e-02 -1.08124682e-02 1.89517553e+00 9.95491140e-02 9.95491140e-02 -9.15785008e-03 -2.53788780e-03 -2.53788780e-03 -2.12388496e-02 -1.19719253e-02 -1.19719253e-02 -1.34997473e-02 -6.86525306e-04 6.86525306e-04 -2.22701900e-02 7.88241731e-03 7.88241731e-03 -6.96401205e-03 -6.65332653e-03 6.65332653e-03 9.95491140e-02 2.04211641e+00 -9.95491140e-02 -2.53788780e-03 -3.88804018e-03 2.53788780e-03 6.78853114e-03 1.78035242e-02 -3.65770659e-03 -9.88504715e-03 1.34997473e-02 6.08947863e-03 1.14201355e-02 -1.00868915e-02 8.24231853e-03 -4.47145138e-03 2.15728427e-03 6.96401205e-03 -6.20170953e-03 -9.29544937e-03 9.95491140e-02 -9.95491140e-02 2.04211641e+00 -2.53788780e-03 2.53788780e-03 -3.88804018e-03 6.78853114e-03 -3.65770659e-03 1.78035242e-02 9.88504715e-03 1.34997473e-02 -1.14201355e-02 -6.08947863e-03 -1.00868915e-02 -4.47145138e-03 8.24231853e-03 -2.15728427e-03 6.96401205e-03 9.29544937e-03 6.20170953e-03 -9.15785008e-03 -2.53788780e-03 -2.53788780e-03 1.79684460e-04 -7.82240681e-05 -7.82240681e-05 4.90771661e-03 3.05324736e-03 3.05324736e-03 3.98965718e-03 -3.80846317e-03 3.80846317e-03 -8.90983131e-05 -1.92416159e-04 -1.92416159e-04 -5.76134452e-04 2.19325430e-04 -2.19325430e-04 -2.53788780e-03 -3.88804018e-03 2.53788780e-03 -7.82240681e-05 2.17480352e-04 7.82240681e-05 -4.88057902e-03 -2.92726385e-03 -2.92421677e-03 8.16061087e-05 -3.98965718e-03 3.98374436e-03 -3.90840983e-03 2.91222329e-04 4.87887308e-05 1.64256895e-04 -1.78094826e-05 5.76134452e-04 -3.17373257e-05 2.41137503e-04 -2.53788780e-03 2.53788780e-03 -3.88804018e-03 -7.82240681e-05 7.82240681e-05 2.17480352e-04 -4.88057902e-03 -2.92421677e-03 -2.92726385e-03 -8.16061087e-05 -3.98965718e-03 3.90840983e-03 -3.98374436e-03 2.91222329e-04 1.64256895e-04 4.87887308e-05 1.78094826e-05 5.76134452e-04 -2.41137503e-04 3.17373257e-05 -2.50681311e-01 1.29637869e-01 -3.43603397e-02 1.90677593e-02 2.55642069e-01 -5.76016724e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 -8.69671403e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 -8.69671403e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 -2.31073552e-01 1.70706534e-01 -3.47760262e-02 2.20810865e-02 -8.69671403e-02 -8.69671403e-02 5.09104100e-01 3.81033730e-02 3.81033730e-02 -1.31876001e-01 4.55715201e-02 -4.68039666e-02 8.11017653e-03 -5.48328334e-03 -5.76016724e-02 1.36360519e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 1.70016634e-02 1.70016634e-02 -1.70016634e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 1.70016634e-02 1.70016634e-02 -1.70016634e-02 9.09946312e-02 -8.78615395e-02 1.51409429e-02 -1.08124682e-02 3.81033730e-02 3.81033730e-02 -1.31876001e-01 -1.70016634e-02 -1.70016634e-02 3.78321204e-02 -2.12388496e-02 6.78853114e-03 6.78853114e-03 4.90771661e-03 -4.88057902e-03 -4.88057902e-03 2.33614448e-01 1.42959316e-01 1.42959316e-01 1.89783463e-01 -1.84466621e-01 1.84466621e-01 -1.02868307e-02 -6.47988162e-03 -6.47988162e-03 -2.78703402e-02 8.34518149e-03 -8.34518149e-03 -1.19719253e-02 1.78035242e-02 -3.65770659e-03 3.05324736e-03 -2.92726385e-03 -2.92421677e-03 1.42959316e-01 8.78151758e-02 8.75173384e-02 -1.05433222e-04 1.16218161e-01 -1.12710131e-01 1.12926204e-01 -6.29096583e-03 -3.94138564e-03 -4.07789392e-03 2.30094432e-05 -1.70670281e-02 5.10344353e-03 -5.25183836e-03 -1.19719253e-02 -3.65770659e-03 1.78035242e-02 3.05324736e-03 -2.92421677e-03 -2.92726385e-03 1.42959316e-01 8.75173384e-02 8.78151758e-02 1.05433222e-04 1.16218161e-01 -1.12926204e-01 1.12710131e-01 -6.29096583e-03 -4.07789392e-03 -3.94138564e-03 -2.30094432e-05 -1.70670281e-02 5.25183836e-03 -5.10344353e-03 -9.88504715e-03 9.88504715e-03 8.16061087e-05 -8.16061087e-05 -1.05433222e-04 1.05433222e-04 1.78440391e-04 -9.58226514e-06 -9.58226514e-06 -1.23324095e-04 1.23324095e-04 -3.89423179e-05 1.91006991e-04 1.91006991e-04 -1.34997473e-02 1.34997473e-02 1.34997473e-02 3.98965718e-03 -3.98965718e-03 -3.98965718e-03 1.89783463e-01 1.16218161e-01 1.16218161e-01 3.67563826e-01 -1.50037001e-01 1.50037001e-01 -8.58346559e-03 -5.25627773e-03 -5.25627773e-03 -3.91967293e-02 6.78582537e-03 -6.78582537e-03 -6.86525306e-04 6.08947863e-03 -1.14201355e-02 -3.80846317e-03 3.98374436e-03 3.90840983e-03 -1.84466621e-01 -1.12710131e-01 -1.12926204e-01 -9.58226514e-06 -1.50037001e-01 1.46241269e-01 -1.45949895e-01 8.49151503e-03 5.01097526e-03 5.01287669e-03 2.09120600e-06 2.20334385e-02 -6.42339379e-03 6.50712338e-03 6.86525306e-04 1.14201355e-02 -6.08947863e-03 3.80846317e-03 -3.90840983e-03 -3.98374436e-03 1.84466621e-01 1.12926204e-01 1.12710131e-01 -9.58226514e-06 1.50037001e-01 -1.45949895e-01 1.46241269e-01 -8.49151503e-03 -5.01287669e-03 -5.01097526e-03 2.09120600e-06 -2.20334385e-02 6.50712338e-03 -6.42339379e-03 -2.22701900e-02 -1.00868915e-02 -1.00868915e-02 -8.90983131e-05 2.91222329e-04 2.91222329e-04 -1.02868307e-02 -6.29096583e-03 -6.29096583e-03 -8.58346559e-03 8.49151503e-03 -8.49151503e-03 9.59486559e-04 1.37774951e-04 1.37774951e-04 1.21596738e-03 -2.58595459e-04 2.58595459e-04 7.88241731e-03 8.24231853e-03 -4.47145138e-03 -1.92416159e-04 4.87887308e-05 1.64256895e-04 -6.47988162e-03 -3.94138564e-03 -4.07789392e-03 -1.23324095e-04 -5.25627773e-03 5.01097526e-03 -5.01287669e-03 1.37774951e-04 3.30152350e-04 1.58824815e-04 2.69138959e-05 7.44624905e-04 -4.19384346e-04 1.50120025e-04 7.88241731e-03 -4.47145138e-03 8.24231853e-03 -1.92416159e-04 1.64256895e-04 4.87887308e-05 -6.47988162e-03 -4.07789392e-03 -3.94138564e-03 1.23324095e-04 -5.25627773e-03 5.01287669e-03 -5.01097526e-03 1.37774951e-04 1.58824815e-04 3.30152350e-04 -2.69138959e-05 7.44624905e-04 -1.50120025e-04 4.19384346e-04 2.15728427e-03 -2.15728427e-03 -1.78094826e-05 1.78094826e-05 2.30094432e-05 -2.30094432e-05 -3.89423179e-05 2.09120600e-06 2.09120600e-06 2.69138959e-05 -2.69138959e-05 8.49865950e-06 -4.16848167e-05 -4.16848167e-05 -6.96401205e-03 6.96401205e-03 6.96401205e-03 -5.76134452e-04 5.76134452e-04 5.76134452e-04 -2.78703402e-02 -1.70670281e-02 -1.70670281e-02 -3.91967293e-02 2.20334385e-02 -2.20334385e-02 1.21596738e-03 7.44624905e-04 7.44624905e-04 4.88351268e-03 -9.61306618e-04 9.61306618e-04 -6.65332653e-03 -6.20170953e-03 9.29544937e-03 2.19325430e-04 -3.17373257e-05 -2.41137503e-04 8.34518149e-03 5.10344353e-03 5.25183836e-03 1.91006991e-04 6.78582537e-03 -6.42339379e-03 6.50712338e-03 -2.58595459e-04 -4.19384346e-04 -1.50120025e-04 -4.16848167e-05 -9.61306618e-04 5.81078995e-04 -1.34231757e-04 6.65332653e-03 -9.29544937e-03 6.20170953e-03 -2.19325430e-04 2.41137503e-04 3.17373257e-05 -8.34518149e-03 -5.25183836e-03 -5.10344353e-03 1.91006991e-04 -6.78582537e-03 6.50712338e-03 -6.42339379e-03 2.58595459e-04 1.50120025e-04 4.19384346e-04 -4.16848167e-05 9.61306618e-04 -1.34231757e-04 5.81078995e-04 - 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 - 0 12 24 36 48 66 86 106 124 144 164 170 180 190 190 200 206 216 226 226 236 254 274 294 308 326 346 366 384 404 424 438 456 476 496 --2 2 -1 496 - -4.46730500e-01 2.90265885e-01 -6.65919095e-02 3.20736205e-02 -2.50681311e-01 -2.31073552e-01 -2.31073552e-01 2.31073552e-01 4.55715201e-02 9.09946312e-02 9.09946312e-02 -9.09946312e-02 2.90265885e-01 -7.77208948e-02 3.49623849e-02 -1.81562170e-02 1.29637869e-01 1.70706534e-01 1.70706534e-01 -1.70706534e-01 -4.68039666e-02 -8.78615395e-02 -8.78615395e-02 8.78615395e-02 -6.65919095e-02 3.49623849e-02 -8.97965282e-03 4.90391018e-03 -3.43603397e-02 -3.47760262e-02 -3.47760262e-02 3.47760262e-02 8.11017653e-03 1.51409429e-02 1.51409429e-02 -1.51409429e-02 3.20736205e-02 -1.81562170e-02 4.90391018e-03 -2.40214415e-03 1.90677593e-02 2.20810865e-02 2.20810865e-02 -2.20810865e-02 -5.48328334e-03 -1.08124682e-02 -1.08124682e-02 1.08124682e-02 -9.61307016e-02 -9.95491140e-02 -9.95491140e-02 3.84928096e-03 2.53788780e-03 2.53788780e-03 4.96626145e-03 1.19719253e-02 1.19719253e-02 1.34997473e-02 6.86525306e-04 -6.86525306e-04 7.75107441e-03 -7.88241731e-03 -7.88241731e-03 6.96401205e-03 6.65332653e-03 -6.65332653e-03 -9.95491140e-02 5.08101702e-02 9.95491140e-02 2.53788780e-03 9.11909087e-03 -2.53788780e-03 -6.78853114e-03 1.75623651e-03 3.65770659e-03 9.88504715e-03 -1.34997473e-02 2.68064379e-02 -1.14201355e-02 1.00868915e-02 -1.01418763e-02 4.47145138e-03 -2.15728427e-03 -6.96401205e-03 1.75321839e-02 9.29544937e-03 -9.95491140e-02 9.95491140e-02 5.08101702e-02 2.53788780e-03 -2.53788780e-03 9.11909087e-03 -6.78853114e-03 3.65770659e-03 1.75623651e-03 -9.88504715e-03 -1.34997473e-02 1.14201355e-02 -2.68064379e-02 1.00868915e-02 4.47145138e-03 -1.01418763e-02 2.15728427e-03 -6.96401205e-03 -9.29544937e-03 -1.75321839e-02 3.84928096e-03 2.53788780e-03 2.53788780e-03 -1.26047298e-04 7.82240681e-05 7.82240681e-05 -4.95769243e-03 -3.05324736e-03 -3.05324736e-03 -3.98965718e-03 3.80846317e-03 -3.80846317e-03 7.89606128e-05 1.92416159e-04 1.92416159e-04 5.76134452e-04 -2.19325430e-04 2.19325430e-04 2.53788780e-03 9.11909087e-03 -2.53788780e-03 7.82240681e-05 -8.82514067e-05 -7.82240681e-05 4.88057902e-03 3.11404071e-03 2.92421677e-03 -8.16061087e-05 3.98965718e-03 -3.81554628e-03 3.90840983e-03 -2.91222329e-04 -5.41259230e-05 -1.64256895e-04 1.78094826e-05 -5.76134452e-04 1.01124921e-04 -2.41137503e-04 2.53788780e-03 -2.53788780e-03 9.11909087e-03 7.82240681e-05 -7.82240681e-05 -8.82514067e-05 4.88057902e-03 2.92421677e-03 3.11404071e-03 8.16061087e-05 3.98965718e-03 -3.90840983e-03 3.81554628e-03 -2.91222329e-04 -1.64256895e-04 -5.41259230e-05 -1.78094826e-05 -5.76134452e-04 2.41137503e-04 -1.01124921e-04 -2.50681311e-01 1.29637869e-01 -3.43603397e-02 1.90677593e-02 2.55642069e-01 -5.76016724e-02 -2.31073552e-01 1.70706534e-01 -3.47760262e-02 2.20810865e-02 -8.69671403e-02 -8.69671403e-02 8.69671403e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 -2.31073552e-01 1.70706534e-01 -3.47760262e-02 2.20810865e-02 -8.69671403e-02 -8.69671403e-02 8.69671403e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 3.35169819e-01 -3.81033730e-02 -3.81033730e-02 -5.56692551e-02 4.55715201e-02 -4.68039666e-02 8.11017653e-03 -5.48328334e-03 -5.76016724e-02 1.36360519e-02 9.09946312e-02 -8.78615395e-02 1.51409429e-02 -1.08124682e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 -1.70016634e-02 -1.70016634e-02 1.70016634e-02 9.09946312e-02 -8.78615395e-02 1.51409429e-02 -1.08124682e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 -1.70016634e-02 -1.70016634e-02 1.70016634e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 -5.56692551e-02 1.70016634e-02 1.70016634e-02 3.82879364e-03 4.96626145e-03 -6.78853114e-03 -6.78853114e-03 -4.95769243e-03 4.88057902e-03 4.88057902e-03 -2.33214382e-01 -1.42959316e-01 -1.42959316e-01 -1.89783463e-01 1.84466621e-01 -1.84466621e-01 1.05548787e-02 6.47988162e-03 6.47988162e-03 2.78703402e-02 -8.34518149e-03 8.34518149e-03 1.19719253e-02 1.75623651e-03 3.65770659e-03 -3.05324736e-03 3.11404071e-03 2.92421677e-03 -1.42959316e-01 -8.74686860e-02 -8.75173384e-02 1.05433222e-04 -1.16218161e-01 1.13119631e-01 -1.12926204e-01 6.29096583e-03 3.92293329e-03 4.07789392e-03 -2.30094432e-05 1.70670281e-02 -4.94879992e-03 5.25183836e-03 1.19719253e-02 3.65770659e-03 1.75623651e-03 -3.05324736e-03 2.92421677e-03 3.11404071e-03 -1.42959316e-01 -8.75173384e-02 -8.74686860e-02 -1.05433222e-04 -1.16218161e-01 1.12926204e-01 -1.13119631e-01 6.29096583e-03 4.07789392e-03 3.92293329e-03 2.30094432e-05 1.70670281e-02 -5.25183836e-03 4.94879992e-03 9.88504715e-03 -9.88504715e-03 -8.16061087e-05 8.16061087e-05 1.05433222e-04 -1.05433222e-04 -1.78440391e-04 9.58226514e-06 9.58226514e-06 1.23324095e-04 -1.23324095e-04 3.89423179e-05 -1.91006991e-04 -1.91006991e-04 1.34997473e-02 -1.34997473e-02 -1.34997473e-02 -3.98965718e-03 3.98965718e-03 3.98965718e-03 -1.89783463e-01 -1.16218161e-01 -1.16218161e-01 5.86189719e-02 1.50037001e-01 -1.50037001e-01 8.58346559e-03 5.25627773e-03 5.25627773e-03 5.74991859e-03 -6.78582537e-03 6.78582537e-03 6.86525306e-04 2.68064379e-02 1.14201355e-02 3.80846317e-03 -3.81554628e-03 -3.90840983e-03 1.84466621e-01 1.13119631e-01 1.12926204e-01 9.58226514e-06 1.50037001e-01 -1.45660580e-01 1.45949895e-01 -8.49151503e-03 -5.04126819e-03 -5.01287669e-03 -2.09120600e-06 -2.20334385e-02 6.63188133e-03 -6.50712338e-03 -6.86525306e-04 -1.14201355e-02 -2.68064379e-02 -3.80846317e-03 3.90840983e-03 3.81554628e-03 -1.84466621e-01 -1.12926204e-01 -1.13119631e-01 9.58226514e-06 -1.50037001e-01 1.45949895e-01 -1.45660580e-01 8.49151503e-03 5.01287669e-03 5.04126819e-03 -2.09120600e-06 2.20334385e-02 -6.50712338e-03 6.63188133e-03 7.75107441e-03 1.00868915e-02 1.00868915e-02 7.89606128e-05 -2.91222329e-04 -2.91222329e-04 1.05548787e-02 6.29096583e-03 6.29096583e-03 8.58346559e-03 -8.49151503e-03 8.49151503e-03 -7.68391652e-04 -1.37774951e-04 -1.37774951e-04 -1.21596738e-03 2.58595459e-04 -2.58595459e-04 -7.88241731e-03 -1.01418763e-02 4.47145138e-03 1.92416159e-04 -5.41259230e-05 -1.64256895e-04 6.47988162e-03 3.92293329e-03 4.07789392e-03 1.23324095e-04 5.25627773e-03 -5.04126819e-03 5.01287669e-03 -1.37774951e-04 -3.28425304e-04 -1.58824815e-04 -2.69138959e-05 -7.44624905e-04 4.08892304e-04 -1.50120025e-04 -7.88241731e-03 4.47145138e-03 -1.01418763e-02 1.92416159e-04 -1.64256895e-04 -5.41259230e-05 6.47988162e-03 4.07789392e-03 3.92293329e-03 -1.23324095e-04 5.25627773e-03 -5.01287669e-03 5.04126819e-03 -1.37774951e-04 -1.58824815e-04 -3.28425304e-04 2.69138959e-05 -7.44624905e-04 1.50120025e-04 -4.08892304e-04 -2.15728427e-03 2.15728427e-03 1.78094826e-05 -1.78094826e-05 -2.30094432e-05 2.30094432e-05 3.89423179e-05 -2.09120600e-06 -2.09120600e-06 -2.69138959e-05 2.69138959e-05 -8.49865950e-06 4.16848167e-05 4.16848167e-05 6.96401205e-03 -6.96401205e-03 -6.96401205e-03 5.76134452e-04 -5.76134452e-04 -5.76134452e-04 2.78703402e-02 1.70670281e-02 1.70670281e-02 5.74991859e-03 -2.20334385e-02 2.20334385e-02 -1.21596738e-03 -7.44624905e-04 -7.44624905e-04 -2.25860819e-03 9.61306618e-04 -9.61306618e-04 6.65332653e-03 1.75321839e-02 -9.29544937e-03 -2.19325430e-04 1.01124921e-04 2.41137503e-04 -8.34518149e-03 -4.94879992e-03 -5.25183836e-03 -1.91006991e-04 -6.78582537e-03 6.63188133e-03 -6.50712338e-03 2.58595459e-04 4.08892304e-04 1.50120025e-04 4.16848167e-05 9.61306618e-04 -5.05218881e-04 1.34231757e-04 -6.65332653e-03 9.29544937e-03 -1.75321839e-02 2.19325430e-04 -2.41137503e-04 -1.01124921e-04 8.34518149e-03 5.25183836e-03 4.94879992e-03 -1.91006991e-04 6.78582537e-03 -6.50712338e-03 6.63188133e-03 -2.58595459e-04 -1.50120025e-04 -4.08892304e-04 4.16848167e-05 -9.61306618e-04 1.34231757e-04 -5.05218881e-04 - 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 - 0 12 24 36 48 66 86 106 124 144 164 170 180 190 190 200 206 216 226 226 236 254 274 294 308 326 346 366 384 404 424 438 456 476 496 --2 2 0 496 - 1.46471486e+00 2.54883877e-01 1.24590418e-01 -9.35884290e-03 -2.50681311e-01 2.31073552e-01 2.31073552e-01 -2.31073552e-01 4.55715201e-02 -9.09946312e-02 -9.09946312e-02 9.09946312e-02 2.54883877e-01 1.70428957e+00 -9.34218553e-02 1.65342489e-01 1.29637869e-01 -1.70706534e-01 -1.70706534e-01 1.70706534e-01 -4.68039666e-02 8.78615395e-02 8.78615395e-02 -8.78615395e-02 1.24590418e-01 -9.34218553e-02 1.88920782e-02 -1.20468125e-02 -3.43603397e-02 3.47760262e-02 3.47760262e-02 -3.47760262e-02 8.11017653e-03 -1.51409429e-02 -1.51409429e-02 1.51409429e-02 -9.35884290e-03 1.65342489e-01 -1.20468125e-02 1.72406024e-02 1.90677593e-02 -2.20810865e-02 -2.20810865e-02 2.20810865e-02 -5.48328334e-03 1.08124682e-02 1.08124682e-02 -1.08124682e-02 1.89517553e+00 9.95491140e-02 9.95491140e-02 -9.15785008e-03 -2.53788780e-03 -2.53788780e-03 -2.12388496e-02 -1.19719253e-02 -1.19719253e-02 -1.34997473e-02 -6.86525306e-04 6.86525306e-04 -2.22701900e-02 7.88241731e-03 7.88241731e-03 -6.96401205e-03 -6.65332653e-03 6.65332653e-03 9.95491140e-02 2.04211641e+00 -9.95491140e-02 -2.53788780e-03 -3.88804018e-03 2.53788780e-03 6.78853114e-03 1.78035242e-02 -3.65770659e-03 -9.88504715e-03 1.34997473e-02 6.08947863e-03 1.14201355e-02 -1.00868915e-02 8.24231853e-03 -4.47145138e-03 2.15728427e-03 6.96401205e-03 -6.20170953e-03 -9.29544937e-03 9.95491140e-02 -9.95491140e-02 2.04211641e+00 -2.53788780e-03 2.53788780e-03 -3.88804018e-03 6.78853114e-03 -3.65770659e-03 1.78035242e-02 9.88504715e-03 1.34997473e-02 -1.14201355e-02 -6.08947863e-03 -1.00868915e-02 -4.47145138e-03 8.24231853e-03 -2.15728427e-03 6.96401205e-03 9.29544937e-03 6.20170953e-03 -9.15785008e-03 -2.53788780e-03 -2.53788780e-03 1.79684460e-04 -7.82240681e-05 -7.82240681e-05 4.90771661e-03 3.05324736e-03 3.05324736e-03 3.98965718e-03 -3.80846317e-03 3.80846317e-03 -8.90983131e-05 -1.92416159e-04 -1.92416159e-04 -5.76134452e-04 2.19325430e-04 -2.19325430e-04 -2.53788780e-03 -3.88804018e-03 2.53788780e-03 -7.82240681e-05 2.17480352e-04 7.82240681e-05 -4.88057902e-03 -2.92726385e-03 -2.92421677e-03 8.16061087e-05 -3.98965718e-03 3.98374436e-03 -3.90840983e-03 2.91222329e-04 4.87887308e-05 1.64256895e-04 -1.78094826e-05 5.76134452e-04 -3.17373257e-05 2.41137503e-04 -2.53788780e-03 2.53788780e-03 -3.88804018e-03 -7.82240681e-05 7.82240681e-05 2.17480352e-04 -4.88057902e-03 -2.92421677e-03 -2.92726385e-03 -8.16061087e-05 -3.98965718e-03 3.90840983e-03 -3.98374436e-03 2.91222329e-04 1.64256895e-04 4.87887308e-05 1.78094826e-05 5.76134452e-04 -2.41137503e-04 3.17373257e-05 -2.50681311e-01 1.29637869e-01 -3.43603397e-02 1.90677593e-02 2.55642069e-01 -5.76016724e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 -8.69671403e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 -8.69671403e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 -2.31073552e-01 1.70706534e-01 -3.47760262e-02 2.20810865e-02 -8.69671403e-02 -8.69671403e-02 5.09104100e-01 3.81033730e-02 3.81033730e-02 -1.31876001e-01 4.55715201e-02 -4.68039666e-02 8.11017653e-03 -5.48328334e-03 -5.76016724e-02 1.36360519e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 1.70016634e-02 1.70016634e-02 -1.70016634e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 1.70016634e-02 1.70016634e-02 -1.70016634e-02 9.09946312e-02 -8.78615395e-02 1.51409429e-02 -1.08124682e-02 3.81033730e-02 3.81033730e-02 -1.31876001e-01 -1.70016634e-02 -1.70016634e-02 3.78321204e-02 -2.12388496e-02 6.78853114e-03 6.78853114e-03 4.90771661e-03 -4.88057902e-03 -4.88057902e-03 2.33614448e-01 1.42959316e-01 1.42959316e-01 1.89783463e-01 -1.84466621e-01 1.84466621e-01 -1.02868307e-02 -6.47988162e-03 -6.47988162e-03 -2.78703402e-02 8.34518149e-03 -8.34518149e-03 -1.19719253e-02 1.78035242e-02 -3.65770659e-03 3.05324736e-03 -2.92726385e-03 -2.92421677e-03 1.42959316e-01 8.78151758e-02 8.75173384e-02 -1.05433222e-04 1.16218161e-01 -1.12710131e-01 1.12926204e-01 -6.29096583e-03 -3.94138564e-03 -4.07789392e-03 2.30094432e-05 -1.70670281e-02 5.10344353e-03 -5.25183836e-03 -1.19719253e-02 -3.65770659e-03 1.78035242e-02 3.05324736e-03 -2.92421677e-03 -2.92726385e-03 1.42959316e-01 8.75173384e-02 8.78151758e-02 1.05433222e-04 1.16218161e-01 -1.12926204e-01 1.12710131e-01 -6.29096583e-03 -4.07789392e-03 -3.94138564e-03 -2.30094432e-05 -1.70670281e-02 5.25183836e-03 -5.10344353e-03 -9.88504715e-03 9.88504715e-03 8.16061087e-05 -8.16061087e-05 -1.05433222e-04 1.05433222e-04 1.78440391e-04 -9.58226514e-06 -9.58226514e-06 -1.23324095e-04 1.23324095e-04 -3.89423179e-05 1.91006991e-04 1.91006991e-04 -1.34997473e-02 1.34997473e-02 1.34997473e-02 3.98965718e-03 -3.98965718e-03 -3.98965718e-03 1.89783463e-01 1.16218161e-01 1.16218161e-01 3.67563826e-01 -1.50037001e-01 1.50037001e-01 -8.58346559e-03 -5.25627773e-03 -5.25627773e-03 -3.91967293e-02 6.78582537e-03 -6.78582537e-03 -6.86525306e-04 6.08947863e-03 -1.14201355e-02 -3.80846317e-03 3.98374436e-03 3.90840983e-03 -1.84466621e-01 -1.12710131e-01 -1.12926204e-01 -9.58226514e-06 -1.50037001e-01 1.46241269e-01 -1.45949895e-01 8.49151503e-03 5.01097526e-03 5.01287669e-03 2.09120600e-06 2.20334385e-02 -6.42339379e-03 6.50712338e-03 6.86525306e-04 1.14201355e-02 -6.08947863e-03 3.80846317e-03 -3.90840983e-03 -3.98374436e-03 1.84466621e-01 1.12926204e-01 1.12710131e-01 -9.58226514e-06 1.50037001e-01 -1.45949895e-01 1.46241269e-01 -8.49151503e-03 -5.01287669e-03 -5.01097526e-03 2.09120600e-06 -2.20334385e-02 6.50712338e-03 -6.42339379e-03 -2.22701900e-02 -1.00868915e-02 -1.00868915e-02 -8.90983131e-05 2.91222329e-04 2.91222329e-04 -1.02868307e-02 -6.29096583e-03 -6.29096583e-03 -8.58346559e-03 8.49151503e-03 -8.49151503e-03 9.59486559e-04 1.37774951e-04 1.37774951e-04 1.21596738e-03 -2.58595459e-04 2.58595459e-04 7.88241731e-03 8.24231853e-03 -4.47145138e-03 -1.92416159e-04 4.87887308e-05 1.64256895e-04 -6.47988162e-03 -3.94138564e-03 -4.07789392e-03 -1.23324095e-04 -5.25627773e-03 5.01097526e-03 -5.01287669e-03 1.37774951e-04 3.30152350e-04 1.58824815e-04 2.69138959e-05 7.44624905e-04 -4.19384346e-04 1.50120025e-04 7.88241731e-03 -4.47145138e-03 8.24231853e-03 -1.92416159e-04 1.64256895e-04 4.87887308e-05 -6.47988162e-03 -4.07789392e-03 -3.94138564e-03 1.23324095e-04 -5.25627773e-03 5.01287669e-03 -5.01097526e-03 1.37774951e-04 1.58824815e-04 3.30152350e-04 -2.69138959e-05 7.44624905e-04 -1.50120025e-04 4.19384346e-04 2.15728427e-03 -2.15728427e-03 -1.78094826e-05 1.78094826e-05 2.30094432e-05 -2.30094432e-05 -3.89423179e-05 2.09120600e-06 2.09120600e-06 2.69138959e-05 -2.69138959e-05 8.49865950e-06 -4.16848167e-05 -4.16848167e-05 -6.96401205e-03 6.96401205e-03 6.96401205e-03 -5.76134452e-04 5.76134452e-04 5.76134452e-04 -2.78703402e-02 -1.70670281e-02 -1.70670281e-02 -3.91967293e-02 2.20334385e-02 -2.20334385e-02 1.21596738e-03 7.44624905e-04 7.44624905e-04 4.88351268e-03 -9.61306618e-04 9.61306618e-04 -6.65332653e-03 -6.20170953e-03 9.29544937e-03 2.19325430e-04 -3.17373257e-05 -2.41137503e-04 8.34518149e-03 5.10344353e-03 5.25183836e-03 1.91006991e-04 6.78582537e-03 -6.42339379e-03 6.50712338e-03 -2.58595459e-04 -4.19384346e-04 -1.50120025e-04 -4.16848167e-05 -9.61306618e-04 5.81078995e-04 -1.34231757e-04 6.65332653e-03 -9.29544937e-03 6.20170953e-03 -2.19325430e-04 2.41137503e-04 3.17373257e-05 -8.34518149e-03 -5.25183836e-03 -5.10344353e-03 1.91006991e-04 -6.78582537e-03 6.50712338e-03 -6.42339379e-03 2.58595459e-04 1.50120025e-04 4.19384346e-04 -4.16848167e-05 9.61306618e-04 -1.34231757e-04 5.81078995e-04 - 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 - 0 12 24 36 48 66 86 106 124 144 164 170 180 190 190 200 206 216 226 226 236 254 274 294 308 326 346 366 384 404 424 438 456 476 496 --2 2 1 496 - -4.46730500e-01 2.90265885e-01 -6.65919095e-02 3.20736205e-02 -2.50681311e-01 -2.31073552e-01 -2.31073552e-01 2.31073552e-01 4.55715201e-02 9.09946312e-02 9.09946312e-02 -9.09946312e-02 2.90265885e-01 -7.77208948e-02 3.49623849e-02 -1.81562170e-02 1.29637869e-01 1.70706534e-01 1.70706534e-01 -1.70706534e-01 -4.68039666e-02 -8.78615395e-02 -8.78615395e-02 8.78615395e-02 -6.65919095e-02 3.49623849e-02 -8.97965282e-03 4.90391018e-03 -3.43603397e-02 -3.47760262e-02 -3.47760262e-02 3.47760262e-02 8.11017653e-03 1.51409429e-02 1.51409429e-02 -1.51409429e-02 3.20736205e-02 -1.81562170e-02 4.90391018e-03 -2.40214415e-03 1.90677593e-02 2.20810865e-02 2.20810865e-02 -2.20810865e-02 -5.48328334e-03 -1.08124682e-02 -1.08124682e-02 1.08124682e-02 -9.61307016e-02 -9.95491140e-02 -9.95491140e-02 3.84928096e-03 2.53788780e-03 2.53788780e-03 4.96626145e-03 1.19719253e-02 1.19719253e-02 1.34997473e-02 6.86525306e-04 -6.86525306e-04 7.75107441e-03 -7.88241731e-03 -7.88241731e-03 6.96401205e-03 6.65332653e-03 -6.65332653e-03 -9.95491140e-02 5.08101702e-02 9.95491140e-02 2.53788780e-03 9.11909087e-03 -2.53788780e-03 -6.78853114e-03 1.75623651e-03 3.65770659e-03 9.88504715e-03 -1.34997473e-02 2.68064379e-02 -1.14201355e-02 1.00868915e-02 -1.01418763e-02 4.47145138e-03 -2.15728427e-03 -6.96401205e-03 1.75321839e-02 9.29544937e-03 -9.95491140e-02 9.95491140e-02 5.08101702e-02 2.53788780e-03 -2.53788780e-03 9.11909087e-03 -6.78853114e-03 3.65770659e-03 1.75623651e-03 -9.88504715e-03 -1.34997473e-02 1.14201355e-02 -2.68064379e-02 1.00868915e-02 4.47145138e-03 -1.01418763e-02 2.15728427e-03 -6.96401205e-03 -9.29544937e-03 -1.75321839e-02 3.84928096e-03 2.53788780e-03 2.53788780e-03 -1.26047298e-04 7.82240681e-05 7.82240681e-05 -4.95769243e-03 -3.05324736e-03 -3.05324736e-03 -3.98965718e-03 3.80846317e-03 -3.80846317e-03 7.89606128e-05 1.92416159e-04 1.92416159e-04 5.76134452e-04 -2.19325430e-04 2.19325430e-04 2.53788780e-03 9.11909087e-03 -2.53788780e-03 7.82240681e-05 -8.82514067e-05 -7.82240681e-05 4.88057902e-03 3.11404071e-03 2.92421677e-03 -8.16061087e-05 3.98965718e-03 -3.81554628e-03 3.90840983e-03 -2.91222329e-04 -5.41259230e-05 -1.64256895e-04 1.78094826e-05 -5.76134452e-04 1.01124921e-04 -2.41137503e-04 2.53788780e-03 -2.53788780e-03 9.11909087e-03 7.82240681e-05 -7.82240681e-05 -8.82514067e-05 4.88057902e-03 2.92421677e-03 3.11404071e-03 8.16061087e-05 3.98965718e-03 -3.90840983e-03 3.81554628e-03 -2.91222329e-04 -1.64256895e-04 -5.41259230e-05 -1.78094826e-05 -5.76134452e-04 2.41137503e-04 -1.01124921e-04 -2.50681311e-01 1.29637869e-01 -3.43603397e-02 1.90677593e-02 2.55642069e-01 -5.76016724e-02 -2.31073552e-01 1.70706534e-01 -3.47760262e-02 2.20810865e-02 -8.69671403e-02 -8.69671403e-02 8.69671403e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 -2.31073552e-01 1.70706534e-01 -3.47760262e-02 2.20810865e-02 -8.69671403e-02 -8.69671403e-02 8.69671403e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 3.35169819e-01 -3.81033730e-02 -3.81033730e-02 -5.56692551e-02 4.55715201e-02 -4.68039666e-02 8.11017653e-03 -5.48328334e-03 -5.76016724e-02 1.36360519e-02 9.09946312e-02 -8.78615395e-02 1.51409429e-02 -1.08124682e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 -1.70016634e-02 -1.70016634e-02 1.70016634e-02 9.09946312e-02 -8.78615395e-02 1.51409429e-02 -1.08124682e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 -1.70016634e-02 -1.70016634e-02 1.70016634e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 -5.56692551e-02 1.70016634e-02 1.70016634e-02 3.82879364e-03 4.96626145e-03 -6.78853114e-03 -6.78853114e-03 -4.95769243e-03 4.88057902e-03 4.88057902e-03 -2.33214382e-01 -1.42959316e-01 -1.42959316e-01 -1.89783463e-01 1.84466621e-01 -1.84466621e-01 1.05548787e-02 6.47988162e-03 6.47988162e-03 2.78703402e-02 -8.34518149e-03 8.34518149e-03 1.19719253e-02 1.75623651e-03 3.65770659e-03 -3.05324736e-03 3.11404071e-03 2.92421677e-03 -1.42959316e-01 -8.74686860e-02 -8.75173384e-02 1.05433222e-04 -1.16218161e-01 1.13119631e-01 -1.12926204e-01 6.29096583e-03 3.92293329e-03 4.07789392e-03 -2.30094432e-05 1.70670281e-02 -4.94879992e-03 5.25183836e-03 1.19719253e-02 3.65770659e-03 1.75623651e-03 -3.05324736e-03 2.92421677e-03 3.11404071e-03 -1.42959316e-01 -8.75173384e-02 -8.74686860e-02 -1.05433222e-04 -1.16218161e-01 1.12926204e-01 -1.13119631e-01 6.29096583e-03 4.07789392e-03 3.92293329e-03 2.30094432e-05 1.70670281e-02 -5.25183836e-03 4.94879992e-03 9.88504715e-03 -9.88504715e-03 -8.16061087e-05 8.16061087e-05 1.05433222e-04 -1.05433222e-04 -1.78440391e-04 9.58226514e-06 9.58226514e-06 1.23324095e-04 -1.23324095e-04 3.89423179e-05 -1.91006991e-04 -1.91006991e-04 1.34997473e-02 -1.34997473e-02 -1.34997473e-02 -3.98965718e-03 3.98965718e-03 3.98965718e-03 -1.89783463e-01 -1.16218161e-01 -1.16218161e-01 5.86189719e-02 1.50037001e-01 -1.50037001e-01 8.58346559e-03 5.25627773e-03 5.25627773e-03 5.74991859e-03 -6.78582537e-03 6.78582537e-03 6.86525306e-04 2.68064379e-02 1.14201355e-02 3.80846317e-03 -3.81554628e-03 -3.90840983e-03 1.84466621e-01 1.13119631e-01 1.12926204e-01 9.58226514e-06 1.50037001e-01 -1.45660580e-01 1.45949895e-01 -8.49151503e-03 -5.04126819e-03 -5.01287669e-03 -2.09120600e-06 -2.20334385e-02 6.63188133e-03 -6.50712338e-03 -6.86525306e-04 -1.14201355e-02 -2.68064379e-02 -3.80846317e-03 3.90840983e-03 3.81554628e-03 -1.84466621e-01 -1.12926204e-01 -1.13119631e-01 9.58226514e-06 -1.50037001e-01 1.45949895e-01 -1.45660580e-01 8.49151503e-03 5.01287669e-03 5.04126819e-03 -2.09120600e-06 2.20334385e-02 -6.50712338e-03 6.63188133e-03 7.75107441e-03 1.00868915e-02 1.00868915e-02 7.89606128e-05 -2.91222329e-04 -2.91222329e-04 1.05548787e-02 6.29096583e-03 6.29096583e-03 8.58346559e-03 -8.49151503e-03 8.49151503e-03 -7.68391652e-04 -1.37774951e-04 -1.37774951e-04 -1.21596738e-03 2.58595459e-04 -2.58595459e-04 -7.88241731e-03 -1.01418763e-02 4.47145138e-03 1.92416159e-04 -5.41259230e-05 -1.64256895e-04 6.47988162e-03 3.92293329e-03 4.07789392e-03 1.23324095e-04 5.25627773e-03 -5.04126819e-03 5.01287669e-03 -1.37774951e-04 -3.28425304e-04 -1.58824815e-04 -2.69138959e-05 -7.44624905e-04 4.08892304e-04 -1.50120025e-04 -7.88241731e-03 4.47145138e-03 -1.01418763e-02 1.92416159e-04 -1.64256895e-04 -5.41259230e-05 6.47988162e-03 4.07789392e-03 3.92293329e-03 -1.23324095e-04 5.25627773e-03 -5.01287669e-03 5.04126819e-03 -1.37774951e-04 -1.58824815e-04 -3.28425304e-04 2.69138959e-05 -7.44624905e-04 1.50120025e-04 -4.08892304e-04 -2.15728427e-03 2.15728427e-03 1.78094826e-05 -1.78094826e-05 -2.30094432e-05 2.30094432e-05 3.89423179e-05 -2.09120600e-06 -2.09120600e-06 -2.69138959e-05 2.69138959e-05 -8.49865950e-06 4.16848167e-05 4.16848167e-05 6.96401205e-03 -6.96401205e-03 -6.96401205e-03 5.76134452e-04 -5.76134452e-04 -5.76134452e-04 2.78703402e-02 1.70670281e-02 1.70670281e-02 5.74991859e-03 -2.20334385e-02 2.20334385e-02 -1.21596738e-03 -7.44624905e-04 -7.44624905e-04 -2.25860819e-03 9.61306618e-04 -9.61306618e-04 6.65332653e-03 1.75321839e-02 -9.29544937e-03 -2.19325430e-04 1.01124921e-04 2.41137503e-04 -8.34518149e-03 -4.94879992e-03 -5.25183836e-03 -1.91006991e-04 -6.78582537e-03 6.63188133e-03 -6.50712338e-03 2.58595459e-04 4.08892304e-04 1.50120025e-04 4.16848167e-05 9.61306618e-04 -5.05218881e-04 1.34231757e-04 -6.65332653e-03 9.29544937e-03 -1.75321839e-02 2.19325430e-04 -2.41137503e-04 -1.01124921e-04 8.34518149e-03 5.25183836e-03 4.94879992e-03 -1.91006991e-04 6.78582537e-03 -6.50712338e-03 6.63188133e-03 -2.58595459e-04 -1.50120025e-04 -4.08892304e-04 4.16848167e-05 -9.61306618e-04 1.34231757e-04 -5.05218881e-04 - 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 - 0 12 24 36 48 66 86 106 124 144 164 170 180 190 190 200 206 216 226 226 236 254 274 294 308 326 346 366 384 404 424 438 456 476 496 --2 2 2 496 - 1.46471486e+00 2.54883877e-01 1.24590418e-01 -9.35884290e-03 -2.50681311e-01 2.31073552e-01 2.31073552e-01 -2.31073552e-01 4.55715201e-02 -9.09946312e-02 -9.09946312e-02 9.09946312e-02 2.54883877e-01 1.70428957e+00 -9.34218553e-02 1.65342489e-01 1.29637869e-01 -1.70706534e-01 -1.70706534e-01 1.70706534e-01 -4.68039666e-02 8.78615395e-02 8.78615395e-02 -8.78615395e-02 1.24590418e-01 -9.34218553e-02 1.88920782e-02 -1.20468125e-02 -3.43603397e-02 3.47760262e-02 3.47760262e-02 -3.47760262e-02 8.11017653e-03 -1.51409429e-02 -1.51409429e-02 1.51409429e-02 -9.35884290e-03 1.65342489e-01 -1.20468125e-02 1.72406024e-02 1.90677593e-02 -2.20810865e-02 -2.20810865e-02 2.20810865e-02 -5.48328334e-03 1.08124682e-02 1.08124682e-02 -1.08124682e-02 1.89517553e+00 9.95491140e-02 9.95491140e-02 -9.15785008e-03 -2.53788780e-03 -2.53788780e-03 -2.12388496e-02 -1.19719253e-02 -1.19719253e-02 -1.34997473e-02 -6.86525306e-04 6.86525306e-04 -2.22701900e-02 7.88241731e-03 7.88241731e-03 -6.96401205e-03 -6.65332653e-03 6.65332653e-03 9.95491140e-02 2.04211641e+00 -9.95491140e-02 -2.53788780e-03 -3.88804018e-03 2.53788780e-03 6.78853114e-03 1.78035242e-02 -3.65770659e-03 -9.88504715e-03 1.34997473e-02 6.08947863e-03 1.14201355e-02 -1.00868915e-02 8.24231853e-03 -4.47145138e-03 2.15728427e-03 6.96401205e-03 -6.20170953e-03 -9.29544937e-03 9.95491140e-02 -9.95491140e-02 2.04211641e+00 -2.53788780e-03 2.53788780e-03 -3.88804018e-03 6.78853114e-03 -3.65770659e-03 1.78035242e-02 9.88504715e-03 1.34997473e-02 -1.14201355e-02 -6.08947863e-03 -1.00868915e-02 -4.47145138e-03 8.24231853e-03 -2.15728427e-03 6.96401205e-03 9.29544937e-03 6.20170953e-03 -9.15785008e-03 -2.53788780e-03 -2.53788780e-03 1.79684460e-04 -7.82240681e-05 -7.82240681e-05 4.90771661e-03 3.05324736e-03 3.05324736e-03 3.98965718e-03 -3.80846317e-03 3.80846317e-03 -8.90983131e-05 -1.92416159e-04 -1.92416159e-04 -5.76134452e-04 2.19325430e-04 -2.19325430e-04 -2.53788780e-03 -3.88804018e-03 2.53788780e-03 -7.82240681e-05 2.17480352e-04 7.82240681e-05 -4.88057902e-03 -2.92726385e-03 -2.92421677e-03 8.16061087e-05 -3.98965718e-03 3.98374436e-03 -3.90840983e-03 2.91222329e-04 4.87887308e-05 1.64256895e-04 -1.78094826e-05 5.76134452e-04 -3.17373257e-05 2.41137503e-04 -2.53788780e-03 2.53788780e-03 -3.88804018e-03 -7.82240681e-05 7.82240681e-05 2.17480352e-04 -4.88057902e-03 -2.92421677e-03 -2.92726385e-03 -8.16061087e-05 -3.98965718e-03 3.90840983e-03 -3.98374436e-03 2.91222329e-04 1.64256895e-04 4.87887308e-05 1.78094826e-05 5.76134452e-04 -2.41137503e-04 3.17373257e-05 -2.50681311e-01 1.29637869e-01 -3.43603397e-02 1.90677593e-02 2.55642069e-01 -5.76016724e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 -8.69671403e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 -8.69671403e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 -2.31073552e-01 1.70706534e-01 -3.47760262e-02 2.20810865e-02 -8.69671403e-02 -8.69671403e-02 5.09104100e-01 3.81033730e-02 3.81033730e-02 -1.31876001e-01 4.55715201e-02 -4.68039666e-02 8.11017653e-03 -5.48328334e-03 -5.76016724e-02 1.36360519e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 1.70016634e-02 1.70016634e-02 -1.70016634e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 1.70016634e-02 1.70016634e-02 -1.70016634e-02 9.09946312e-02 -8.78615395e-02 1.51409429e-02 -1.08124682e-02 3.81033730e-02 3.81033730e-02 -1.31876001e-01 -1.70016634e-02 -1.70016634e-02 3.78321204e-02 -2.12388496e-02 6.78853114e-03 6.78853114e-03 4.90771661e-03 -4.88057902e-03 -4.88057902e-03 2.33614448e-01 1.42959316e-01 1.42959316e-01 1.89783463e-01 -1.84466621e-01 1.84466621e-01 -1.02868307e-02 -6.47988162e-03 -6.47988162e-03 -2.78703402e-02 8.34518149e-03 -8.34518149e-03 -1.19719253e-02 1.78035242e-02 -3.65770659e-03 3.05324736e-03 -2.92726385e-03 -2.92421677e-03 1.42959316e-01 8.78151758e-02 8.75173384e-02 -1.05433222e-04 1.16218161e-01 -1.12710131e-01 1.12926204e-01 -6.29096583e-03 -3.94138564e-03 -4.07789392e-03 2.30094432e-05 -1.70670281e-02 5.10344353e-03 -5.25183836e-03 -1.19719253e-02 -3.65770659e-03 1.78035242e-02 3.05324736e-03 -2.92421677e-03 -2.92726385e-03 1.42959316e-01 8.75173384e-02 8.78151758e-02 1.05433222e-04 1.16218161e-01 -1.12926204e-01 1.12710131e-01 -6.29096583e-03 -4.07789392e-03 -3.94138564e-03 -2.30094432e-05 -1.70670281e-02 5.25183836e-03 -5.10344353e-03 -9.88504715e-03 9.88504715e-03 8.16061087e-05 -8.16061087e-05 -1.05433222e-04 1.05433222e-04 1.78440391e-04 -9.58226514e-06 -9.58226514e-06 -1.23324095e-04 1.23324095e-04 -3.89423179e-05 1.91006991e-04 1.91006991e-04 -1.34997473e-02 1.34997473e-02 1.34997473e-02 3.98965718e-03 -3.98965718e-03 -3.98965718e-03 1.89783463e-01 1.16218161e-01 1.16218161e-01 3.67563826e-01 -1.50037001e-01 1.50037001e-01 -8.58346559e-03 -5.25627773e-03 -5.25627773e-03 -3.91967293e-02 6.78582537e-03 -6.78582537e-03 -6.86525306e-04 6.08947863e-03 -1.14201355e-02 -3.80846317e-03 3.98374436e-03 3.90840983e-03 -1.84466621e-01 -1.12710131e-01 -1.12926204e-01 -9.58226514e-06 -1.50037001e-01 1.46241269e-01 -1.45949895e-01 8.49151503e-03 5.01097526e-03 5.01287669e-03 2.09120600e-06 2.20334385e-02 -6.42339379e-03 6.50712338e-03 6.86525306e-04 1.14201355e-02 -6.08947863e-03 3.80846317e-03 -3.90840983e-03 -3.98374436e-03 1.84466621e-01 1.12926204e-01 1.12710131e-01 -9.58226514e-06 1.50037001e-01 -1.45949895e-01 1.46241269e-01 -8.49151503e-03 -5.01287669e-03 -5.01097526e-03 2.09120600e-06 -2.20334385e-02 6.50712338e-03 -6.42339379e-03 -2.22701900e-02 -1.00868915e-02 -1.00868915e-02 -8.90983131e-05 2.91222329e-04 2.91222329e-04 -1.02868307e-02 -6.29096583e-03 -6.29096583e-03 -8.58346559e-03 8.49151503e-03 -8.49151503e-03 9.59486559e-04 1.37774951e-04 1.37774951e-04 1.21596738e-03 -2.58595459e-04 2.58595459e-04 7.88241731e-03 8.24231853e-03 -4.47145138e-03 -1.92416159e-04 4.87887308e-05 1.64256895e-04 -6.47988162e-03 -3.94138564e-03 -4.07789392e-03 -1.23324095e-04 -5.25627773e-03 5.01097526e-03 -5.01287669e-03 1.37774951e-04 3.30152350e-04 1.58824815e-04 2.69138959e-05 7.44624905e-04 -4.19384346e-04 1.50120025e-04 7.88241731e-03 -4.47145138e-03 8.24231853e-03 -1.92416159e-04 1.64256895e-04 4.87887308e-05 -6.47988162e-03 -4.07789392e-03 -3.94138564e-03 1.23324095e-04 -5.25627773e-03 5.01287669e-03 -5.01097526e-03 1.37774951e-04 1.58824815e-04 3.30152350e-04 -2.69138959e-05 7.44624905e-04 -1.50120025e-04 4.19384346e-04 2.15728427e-03 -2.15728427e-03 -1.78094826e-05 1.78094826e-05 2.30094432e-05 -2.30094432e-05 -3.89423179e-05 2.09120600e-06 2.09120600e-06 2.69138959e-05 -2.69138959e-05 8.49865950e-06 -4.16848167e-05 -4.16848167e-05 -6.96401205e-03 6.96401205e-03 6.96401205e-03 -5.76134452e-04 5.76134452e-04 5.76134452e-04 -2.78703402e-02 -1.70670281e-02 -1.70670281e-02 -3.91967293e-02 2.20334385e-02 -2.20334385e-02 1.21596738e-03 7.44624905e-04 7.44624905e-04 4.88351268e-03 -9.61306618e-04 9.61306618e-04 -6.65332653e-03 -6.20170953e-03 9.29544937e-03 2.19325430e-04 -3.17373257e-05 -2.41137503e-04 8.34518149e-03 5.10344353e-03 5.25183836e-03 1.91006991e-04 6.78582537e-03 -6.42339379e-03 6.50712338e-03 -2.58595459e-04 -4.19384346e-04 -1.50120025e-04 -4.16848167e-05 -9.61306618e-04 5.81078995e-04 -1.34231757e-04 6.65332653e-03 -9.29544937e-03 6.20170953e-03 -2.19325430e-04 2.41137503e-04 3.17373257e-05 -8.34518149e-03 -5.25183836e-03 -5.10344353e-03 1.91006991e-04 -6.78582537e-03 6.50712338e-03 -6.42339379e-03 2.58595459e-04 1.50120025e-04 4.19384346e-04 -4.16848167e-05 9.61306618e-04 -1.34231757e-04 5.81078995e-04 - 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 - 0 12 24 36 48 66 86 106 124 144 164 170 180 190 190 200 206 216 226 226 236 254 274 294 308 326 346 366 384 404 424 438 456 476 496 --1 -2 1 496 - 6.10668701e-01 -7.51799909e-02 6.94266500e-02 -1.13818158e-02 2.50681311e-01 2.31073552e-01 2.31073552e-01 -2.31073552e-01 -4.55715201e-02 -9.09946312e-02 -9.09946312e-02 9.09946312e-02 -7.51799909e-02 6.30743818e-01 -3.88656825e-02 8.24503254e-02 -1.29637869e-01 -1.70706534e-01 -1.70706534e-01 1.70706534e-01 4.68039666e-02 8.78615395e-02 8.78615395e-02 -8.78615395e-02 6.94266500e-02 -3.88656825e-02 9.24320123e-03 -5.59159516e-03 3.43603397e-02 3.47760262e-02 3.47760262e-02 -3.47760262e-02 -8.11017653e-03 -1.51409429e-02 -1.51409429e-02 1.51409429e-02 -1.13818158e-02 8.24503254e-02 -5.59159516e-03 1.01087384e-02 -1.90677593e-02 -2.20810865e-02 -2.20810865e-02 2.20810865e-02 5.48328334e-03 1.08124682e-02 1.08124682e-02 -1.08124682e-02 6.62931071e-01 9.95491140e-02 9.95491140e-02 -9.36131516e-03 -2.53788780e-03 -2.53788780e-03 -1.84743808e-04 -1.19719253e-02 -1.19719253e-02 -1.34997473e-02 -6.86525306e-04 6.86525306e-04 -6.96842667e-03 7.88241731e-03 7.88241731e-03 -6.96401205e-03 -6.65332653e-03 6.65332653e-03 9.95491140e-02 5.15990200e-01 -9.95491140e-02 -2.53788780e-03 -1.46311251e-02 2.53788780e-03 6.78853114e-03 -4.68430612e-03 -3.65770659e-03 -9.88504715e-03 1.34997473e-02 -2.30263163e-02 1.14201355e-02 -1.00868915e-02 9.66260440e-03 -4.47145138e-03 2.15728427e-03 6.96401205e-03 -1.69134466e-02 -9.29544937e-03 9.95491140e-02 -9.95491140e-02 5.15990200e-01 -2.53788780e-03 2.53788780e-03 -1.46311251e-02 6.78853114e-03 -3.65770659e-03 -4.68430612e-03 9.88504715e-03 1.34997473e-02 -1.14201355e-02 2.30263163e-02 -1.00868915e-02 -4.47145138e-03 9.66260440e-03 -2.15728427e-03 6.96401205e-03 9.29544937e-03 1.69134466e-02 -9.36131516e-03 -2.53788780e-03 -2.53788780e-03 1.79650864e-04 -7.82240681e-05 -7.82240681e-05 4.91119301e-03 3.05324736e-03 3.05324736e-03 3.98965718e-03 -3.80846317e-03 3.80846317e-03 -8.65717248e-05 -1.92416159e-04 -1.92416159e-04 -5.76134452e-04 2.19325430e-04 -2.19325430e-04 -2.53788780e-03 -1.46311251e-02 2.53788780e-03 -7.82240681e-05 1.41854973e-04 7.82240681e-05 -4.88057902e-03 -3.08556574e-03 -2.92421677e-03 8.16061087e-05 -3.98965718e-03 3.77878526e-03 -3.90840983e-03 2.91222329e-04 5.87867582e-05 1.64256895e-04 -1.78094826e-05 5.76134452e-04 -1.07142033e-04 2.41137503e-04 -2.53788780e-03 2.53788780e-03 -1.46311251e-02 -7.82240681e-05 7.82240681e-05 1.41854973e-04 -4.88057902e-03 -2.92421677e-03 -3.08556574e-03 -8.16061087e-05 -3.98965718e-03 3.90840983e-03 -3.77878526e-03 2.91222329e-04 1.64256895e-04 5.87867582e-05 1.78094826e-05 5.76134452e-04 -2.41137503e-04 1.07142033e-04 2.50681311e-01 -1.29637869e-01 3.43603397e-02 -1.90677593e-02 -2.55642069e-01 5.76016724e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 -8.69671403e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 -8.69671403e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 -2.31073552e-01 1.70706534e-01 -3.47760262e-02 2.20810865e-02 -8.69671403e-02 -8.69671403e-02 -3.35169819e-01 3.81033730e-02 3.81033730e-02 5.56692551e-02 -4.55715201e-02 4.68039666e-02 -8.11017653e-03 5.48328334e-03 5.76016724e-02 -1.36360519e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 1.70016634e-02 1.70016634e-02 -1.70016634e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 1.70016634e-02 1.70016634e-02 -1.70016634e-02 9.09946312e-02 -8.78615395e-02 1.51409429e-02 -1.08124682e-02 3.81033730e-02 3.81033730e-02 5.56692551e-02 -1.70016634e-02 -1.70016634e-02 -3.82879364e-03 -1.84743808e-04 6.78853114e-03 6.78853114e-03 4.91119301e-03 -4.88057902e-03 -4.88057902e-03 2.33254718e-01 1.42959316e-01 1.42959316e-01 1.89783463e-01 -1.84466621e-01 1.84466621e-01 -1.05482763e-02 -6.47988162e-03 -6.47988162e-03 -2.78703402e-02 8.34518149e-03 -8.34518149e-03 -1.19719253e-02 -4.68430612e-03 -3.65770659e-03 3.05324736e-03 -3.08556574e-03 -2.92421677e-03 1.42959316e-01 8.74838123e-02 8.75173384e-02 -1.05433222e-04 1.16218161e-01 -1.13139159e-01 1.12926204e-01 -6.29096583e-03 -3.92045739e-03 -4.07789392e-03 2.30094432e-05 -1.70670281e-02 4.94560355e-03 -5.25183836e-03 -1.19719253e-02 -3.65770659e-03 -4.68430612e-03 3.05324736e-03 -2.92421677e-03 -3.08556574e-03 1.42959316e-01 8.75173384e-02 8.74838123e-02 1.05433222e-04 1.16218161e-01 -1.12926204e-01 1.13139159e-01 -6.29096583e-03 -4.07789392e-03 -3.92045739e-03 -2.30094432e-05 -1.70670281e-02 5.25183836e-03 -4.94560355e-03 -9.88504715e-03 9.88504715e-03 8.16061087e-05 -8.16061087e-05 -1.05433222e-04 1.05433222e-04 1.78440391e-04 -9.58226514e-06 -9.58226514e-06 -1.23324095e-04 1.23324095e-04 -3.89423179e-05 1.91006991e-04 1.91006991e-04 -1.34997473e-02 1.34997473e-02 1.34997473e-02 3.98965718e-03 -3.98965718e-03 -3.98965718e-03 1.89783463e-01 1.16218161e-01 1.16218161e-01 3.67563826e-01 -1.50037001e-01 1.50037001e-01 -8.58346559e-03 -5.25627773e-03 -5.25627773e-03 -3.91967293e-02 6.78582537e-03 -6.78582537e-03 -6.86525306e-04 -2.30263163e-02 -1.14201355e-02 -3.80846317e-03 3.77878526e-03 3.90840983e-03 -1.84466621e-01 -1.13139159e-01 -1.12926204e-01 -9.58226514e-06 -1.50037001e-01 1.45685791e-01 -1.45949895e-01 8.49151503e-03 5.03807181e-03 5.01287669e-03 2.09120600e-06 2.20334385e-02 -6.62775483e-03 6.50712338e-03 6.86525306e-04 1.14201355e-02 2.30263163e-02 3.80846317e-03 -3.90840983e-03 -3.77878526e-03 1.84466621e-01 1.12926204e-01 1.13139159e-01 -9.58226514e-06 1.50037001e-01 -1.45949895e-01 1.45685791e-01 -8.49151503e-03 -5.01287669e-03 -5.03807181e-03 2.09120600e-06 -2.20334385e-02 6.50712338e-03 -6.62775483e-03 -6.96842667e-03 -1.00868915e-02 -1.00868915e-02 -8.65717248e-05 2.91222329e-04 2.91222329e-04 -1.05482763e-02 -6.29096583e-03 -6.29096583e-03 -8.58346559e-03 8.49151503e-03 -8.49151503e-03 7.69472345e-04 1.37774951e-04 1.37774951e-04 1.21596738e-03 -2.58595459e-04 2.58595459e-04 7.88241731e-03 9.66260440e-03 -4.47145138e-03 -1.92416159e-04 5.87867582e-05 1.64256895e-04 -6.47988162e-03 -3.92045739e-03 -4.07789392e-03 -1.23324095e-04 -5.25627773e-03 5.03807181e-03 -5.01287669e-03 1.37774951e-04 3.28830564e-04 1.58824815e-04 2.69138959e-05 7.44624905e-04 -4.09415493e-04 1.50120025e-04 7.88241731e-03 -4.47145138e-03 9.66260440e-03 -1.92416159e-04 1.64256895e-04 5.87867582e-05 -6.47988162e-03 -4.07789392e-03 -3.92045739e-03 1.23324095e-04 -5.25627773e-03 5.01287669e-03 -5.03807181e-03 1.37774951e-04 1.58824815e-04 3.28830564e-04 -2.69138959e-05 7.44624905e-04 -1.50120025e-04 4.09415493e-04 2.15728427e-03 -2.15728427e-03 -1.78094826e-05 1.78094826e-05 2.30094432e-05 -2.30094432e-05 -3.89423179e-05 2.09120600e-06 2.09120600e-06 2.69138959e-05 -2.69138959e-05 8.49865950e-06 -4.16848167e-05 -4.16848167e-05 -6.96401205e-03 6.96401205e-03 6.96401205e-03 -5.76134452e-04 5.76134452e-04 5.76134452e-04 -2.78703402e-02 -1.70670281e-02 -1.70670281e-02 -3.91967293e-02 2.20334385e-02 -2.20334385e-02 1.21596738e-03 7.44624905e-04 7.44624905e-04 4.88351268e-03 -9.61306618e-04 9.61306618e-04 -6.65332653e-03 -1.69134466e-02 9.29544937e-03 2.19325430e-04 -1.07142033e-04 -2.41137503e-04 8.34518149e-03 4.94560355e-03 5.25183836e-03 1.91006991e-04 6.78582537e-03 -6.62775483e-03 6.50712338e-03 -2.58595459e-04 -4.09415493e-04 -1.50120025e-04 -4.16848167e-05 -9.61306618e-04 5.05894315e-04 -1.34231757e-04 6.65332653e-03 -9.29544937e-03 1.69134466e-02 -2.19325430e-04 2.41137503e-04 1.07142033e-04 -8.34518149e-03 -5.25183836e-03 -4.94560355e-03 1.91006991e-04 -6.78582537e-03 6.50712338e-03 -6.62775483e-03 2.58595459e-04 1.50120025e-04 4.09415493e-04 -4.16848167e-05 9.61306618e-04 -1.34231757e-04 5.05894315e-04 - 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 - 0 12 24 36 48 66 86 106 124 144 164 170 180 190 190 200 206 216 226 226 236 254 274 294 308 326 346 366 384 404 424 438 456 476 496 --1 -2 2 496 - -1.30077665e+00 -3.97979828e-02 -1.21755678e-01 3.00506476e-02 2.50681311e-01 -2.31073552e-01 -2.31073552e-01 2.31073552e-01 -4.55715201e-02 9.09946312e-02 9.09946312e-02 -9.09946312e-02 -3.97979828e-02 -1.15126664e+00 8.95185576e-02 -1.01048380e-01 -1.29637869e-01 1.70706534e-01 1.70706534e-01 -1.70706534e-01 4.68039666e-02 -8.78615395e-02 -8.78615395e-02 8.78615395e-02 -1.21755678e-01 8.95185576e-02 -1.86285298e-02 1.13591275e-02 3.43603397e-02 -3.47760262e-02 -3.47760262e-02 3.47760262e-02 -8.11017653e-03 1.51409429e-02 1.51409429e-02 -1.51409429e-02 3.00506476e-02 -1.01048380e-01 1.13591275e-02 -9.53400814e-03 -1.90677593e-02 2.20810865e-02 2.20810865e-02 -2.20810865e-02 5.48328334e-03 -1.08124682e-02 -1.08124682e-02 1.08124682e-02 -1.32837516e+00 -9.95491140e-02 -9.95491140e-02 3.64581589e-03 2.53788780e-03 2.53788780e-03 2.60203672e-02 1.19719253e-02 1.19719253e-02 1.34997473e-02 6.86525306e-04 -6.86525306e-04 2.30528378e-02 -7.88241731e-03 -7.88241731e-03 6.96401205e-03 6.65332653e-03 -6.65332653e-03 -9.95491140e-02 -1.47531604e+00 9.95491140e-02 2.53788780e-03 -1.62399402e-03 -2.53788780e-03 -6.78853114e-03 -2.07315938e-02 3.65770659e-03 9.88504715e-03 -1.34997473e-02 -2.30935703e-03 -1.14201355e-02 1.00868915e-02 -8.72159043e-03 4.47145138e-03 -2.15728427e-03 -6.96401205e-03 6.82044689e-03 9.29544937e-03 -9.95491140e-02 9.95491140e-02 -1.47531604e+00 2.53788780e-03 -2.53788780e-03 -1.62399402e-03 -6.78853114e-03 3.65770659e-03 -2.07315938e-02 -9.88504715e-03 -1.34997473e-02 1.14201355e-02 2.30935703e-03 1.00868915e-02 4.47145138e-03 -8.72159043e-03 2.15728427e-03 -6.96401205e-03 -9.29544937e-03 -6.82044689e-03 3.64581589e-03 2.53788780e-03 2.53788780e-03 -1.26080894e-04 7.82240681e-05 7.82240681e-05 -4.95421603e-03 -3.05324736e-03 -3.05324736e-03 -3.98965718e-03 3.80846317e-03 -3.80846317e-03 8.14872011e-05 1.92416159e-04 1.92416159e-04 5.76134452e-04 -2.19325430e-04 2.19325430e-04 2.53788780e-03 -1.62399402e-03 -2.53788780e-03 7.82240681e-05 -1.63876786e-04 -7.82240681e-05 4.88057902e-03 2.95573881e-03 2.92421677e-03 -8.16061087e-05 3.98965718e-03 -4.02050538e-03 3.90840983e-03 -2.91222329e-04 -4.41278956e-05 -1.64256895e-04 1.78094826e-05 -5.76134452e-04 2.57202134e-05 -2.41137503e-04 2.53788780e-03 -2.53788780e-03 -1.62399402e-03 7.82240681e-05 -7.82240681e-05 -1.63876786e-04 4.88057902e-03 2.92421677e-03 2.95573881e-03 8.16061087e-05 3.98965718e-03 -3.90840983e-03 4.02050538e-03 -2.91222329e-04 -1.64256895e-04 -4.41278956e-05 -1.78094826e-05 -5.76134452e-04 2.41137503e-04 -2.57202134e-05 2.50681311e-01 -1.29637869e-01 3.43603397e-02 -1.90677593e-02 -2.55642069e-01 5.76016724e-02 -2.31073552e-01 1.70706534e-01 -3.47760262e-02 2.20810865e-02 -8.69671403e-02 -8.69671403e-02 8.69671403e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 -2.31073552e-01 1.70706534e-01 -3.47760262e-02 2.20810865e-02 -8.69671403e-02 -8.69671403e-02 8.69671403e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 -5.09104100e-01 -3.81033730e-02 -3.81033730e-02 1.31876001e-01 -4.55715201e-02 4.68039666e-02 -8.11017653e-03 5.48328334e-03 5.76016724e-02 -1.36360519e-02 9.09946312e-02 -8.78615395e-02 1.51409429e-02 -1.08124682e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 -1.70016634e-02 -1.70016634e-02 1.70016634e-02 9.09946312e-02 -8.78615395e-02 1.51409429e-02 -1.08124682e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 -1.70016634e-02 -1.70016634e-02 1.70016634e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 1.31876001e-01 1.70016634e-02 1.70016634e-02 -3.78321204e-02 2.60203672e-02 -6.78853114e-03 -6.78853114e-03 -4.95421603e-03 4.88057902e-03 4.88057902e-03 -2.33574112e-01 -1.42959316e-01 -1.42959316e-01 -1.89783463e-01 1.84466621e-01 -1.84466621e-01 1.02934331e-02 6.47988162e-03 6.47988162e-03 2.78703402e-02 -8.34518149e-03 8.34518149e-03 1.19719253e-02 -2.07315938e-02 3.65770659e-03 -3.05324736e-03 2.95573881e-03 2.92421677e-03 -1.42959316e-01 -8.78000495e-02 -8.75173384e-02 1.05433222e-04 -1.16218161e-01 1.12690603e-01 -1.12926204e-01 6.29096583e-03 3.94386154e-03 4.07789392e-03 -2.30094432e-05 1.70670281e-02 -5.10663990e-03 5.25183836e-03 1.19719253e-02 3.65770659e-03 -2.07315938e-02 -3.05324736e-03 2.92421677e-03 2.95573881e-03 -1.42959316e-01 -8.75173384e-02 -8.78000495e-02 -1.05433222e-04 -1.16218161e-01 1.12926204e-01 -1.12690603e-01 6.29096583e-03 4.07789392e-03 3.94386154e-03 2.30094432e-05 1.70670281e-02 -5.25183836e-03 5.10663990e-03 9.88504715e-03 -9.88504715e-03 -8.16061087e-05 8.16061087e-05 1.05433222e-04 -1.05433222e-04 -1.78440391e-04 9.58226514e-06 9.58226514e-06 1.23324095e-04 -1.23324095e-04 3.89423179e-05 -1.91006991e-04 -1.91006991e-04 1.34997473e-02 -1.34997473e-02 -1.34997473e-02 -3.98965718e-03 3.98965718e-03 3.98965718e-03 -1.89783463e-01 -1.16218161e-01 -1.16218161e-01 5.86189719e-02 1.50037001e-01 -1.50037001e-01 8.58346559e-03 5.25627773e-03 5.25627773e-03 5.74991859e-03 -6.78582537e-03 6.78582537e-03 6.86525306e-04 -2.30935703e-03 1.14201355e-02 3.80846317e-03 -4.02050538e-03 -3.90840983e-03 1.84466621e-01 1.12690603e-01 1.12926204e-01 9.58226514e-06 1.50037001e-01 -1.46216058e-01 1.45949895e-01 -8.49151503e-03 -5.01417164e-03 -5.01287669e-03 -2.09120600e-06 -2.20334385e-02 6.42752029e-03 -6.50712338e-03 -6.86525306e-04 -1.14201355e-02 2.30935703e-03 -3.80846317e-03 3.90840983e-03 4.02050538e-03 -1.84466621e-01 -1.12926204e-01 -1.12690603e-01 9.58226514e-06 -1.50037001e-01 1.45949895e-01 -1.46216058e-01 8.49151503e-03 5.01287669e-03 5.01417164e-03 -2.09120600e-06 2.20334385e-02 -6.50712338e-03 6.42752029e-03 2.30528378e-02 1.00868915e-02 1.00868915e-02 8.14872011e-05 -2.91222329e-04 -2.91222329e-04 1.02934331e-02 6.29096583e-03 6.29096583e-03 8.58346559e-03 -8.49151503e-03 8.49151503e-03 -9.58405865e-04 -1.37774951e-04 -1.37774951e-04 -1.21596738e-03 2.58595459e-04 -2.58595459e-04 -7.88241731e-03 -8.72159043e-03 4.47145138e-03 1.92416159e-04 -4.41278956e-05 -1.64256895e-04 6.47988162e-03 3.94386154e-03 4.07789392e-03 1.23324095e-04 5.25627773e-03 -5.01417164e-03 5.01287669e-03 -1.37774951e-04 -3.29747090e-04 -1.58824815e-04 -2.69138959e-05 -7.44624905e-04 4.18861158e-04 -1.50120025e-04 -7.88241731e-03 4.47145138e-03 -8.72159043e-03 1.92416159e-04 -1.64256895e-04 -4.41278956e-05 6.47988162e-03 4.07789392e-03 3.94386154e-03 -1.23324095e-04 5.25627773e-03 -5.01287669e-03 5.01417164e-03 -1.37774951e-04 -1.58824815e-04 -3.29747090e-04 2.69138959e-05 -7.44624905e-04 1.50120025e-04 -4.18861158e-04 -2.15728427e-03 2.15728427e-03 1.78094826e-05 -1.78094826e-05 -2.30094432e-05 2.30094432e-05 3.89423179e-05 -2.09120600e-06 -2.09120600e-06 -2.69138959e-05 2.69138959e-05 -8.49865950e-06 4.16848167e-05 4.16848167e-05 6.96401205e-03 -6.96401205e-03 -6.96401205e-03 5.76134452e-04 -5.76134452e-04 -5.76134452e-04 2.78703402e-02 1.70670281e-02 1.70670281e-02 5.74991859e-03 -2.20334385e-02 2.20334385e-02 -1.21596738e-03 -7.44624905e-04 -7.44624905e-04 -2.25860819e-03 9.61306618e-04 -9.61306618e-04 6.65332653e-03 6.82044689e-03 -9.29544937e-03 -2.19325430e-04 2.57202134e-05 2.41137503e-04 -8.34518149e-03 -5.10663990e-03 -5.25183836e-03 -1.91006991e-04 -6.78582537e-03 6.42752029e-03 -6.50712338e-03 2.58595459e-04 4.18861158e-04 1.50120025e-04 4.16848167e-05 9.61306618e-04 -5.80403562e-04 1.34231757e-04 -6.65332653e-03 9.29544937e-03 -6.82044689e-03 2.19325430e-04 -2.41137503e-04 -2.57202134e-05 8.34518149e-03 5.25183836e-03 5.10663990e-03 -1.91006991e-04 6.78582537e-03 -6.50712338e-03 6.42752029e-03 -2.58595459e-04 -1.50120025e-04 -4.18861158e-04 4.16848167e-05 -9.61306618e-04 1.34231757e-04 -5.80403562e-04 - 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 - 0 12 24 36 48 66 86 106 124 144 164 170 180 190 190 200 206 216 226 226 236 254 274 294 308 326 346 366 384 404 424 438 456 476 496 --1 -1 -1 496 - -4.46730500e-01 2.90265885e-01 -6.65919095e-02 3.20736205e-02 -2.50681311e-01 -2.31073552e-01 -2.31073552e-01 2.31073552e-01 4.55715201e-02 9.09946312e-02 9.09946312e-02 -9.09946312e-02 2.90265885e-01 -7.77208948e-02 3.49623849e-02 -1.81562170e-02 1.29637869e-01 1.70706534e-01 1.70706534e-01 -1.70706534e-01 -4.68039666e-02 -8.78615395e-02 -8.78615395e-02 8.78615395e-02 -6.65919095e-02 3.49623849e-02 -8.97965282e-03 4.90391018e-03 -3.43603397e-02 -3.47760262e-02 -3.47760262e-02 3.47760262e-02 8.11017653e-03 1.51409429e-02 1.51409429e-02 -1.51409429e-02 3.20736205e-02 -1.81562170e-02 4.90391018e-03 -2.40214415e-03 1.90677593e-02 2.20810865e-02 2.20810865e-02 -2.20810865e-02 -5.48328334e-03 -1.08124682e-02 -1.08124682e-02 1.08124682e-02 -9.61307016e-02 -9.95491140e-02 -9.95491140e-02 3.84928096e-03 2.53788780e-03 2.53788780e-03 4.96626145e-03 1.19719253e-02 1.19719253e-02 1.34997473e-02 6.86525306e-04 -6.86525306e-04 7.75107441e-03 -7.88241731e-03 -7.88241731e-03 6.96401205e-03 6.65332653e-03 -6.65332653e-03 -9.95491140e-02 5.08101702e-02 9.95491140e-02 2.53788780e-03 9.11909087e-03 -2.53788780e-03 -6.78853114e-03 1.75623651e-03 3.65770659e-03 9.88504715e-03 -1.34997473e-02 2.68064379e-02 -1.14201355e-02 1.00868915e-02 -1.01418763e-02 4.47145138e-03 -2.15728427e-03 -6.96401205e-03 1.75321839e-02 9.29544937e-03 -9.95491140e-02 9.95491140e-02 5.08101702e-02 2.53788780e-03 -2.53788780e-03 9.11909087e-03 -6.78853114e-03 3.65770659e-03 1.75623651e-03 -9.88504715e-03 -1.34997473e-02 1.14201355e-02 -2.68064379e-02 1.00868915e-02 4.47145138e-03 -1.01418763e-02 2.15728427e-03 -6.96401205e-03 -9.29544937e-03 -1.75321839e-02 3.84928096e-03 2.53788780e-03 2.53788780e-03 -1.26047298e-04 7.82240681e-05 7.82240681e-05 -4.95769243e-03 -3.05324736e-03 -3.05324736e-03 -3.98965718e-03 3.80846317e-03 -3.80846317e-03 7.89606128e-05 1.92416159e-04 1.92416159e-04 5.76134452e-04 -2.19325430e-04 2.19325430e-04 2.53788780e-03 9.11909087e-03 -2.53788780e-03 7.82240681e-05 -8.82514067e-05 -7.82240681e-05 4.88057902e-03 3.11404071e-03 2.92421677e-03 -8.16061087e-05 3.98965718e-03 -3.81554628e-03 3.90840983e-03 -2.91222329e-04 -5.41259230e-05 -1.64256895e-04 1.78094826e-05 -5.76134452e-04 1.01124921e-04 -2.41137503e-04 2.53788780e-03 -2.53788780e-03 9.11909087e-03 7.82240681e-05 -7.82240681e-05 -8.82514067e-05 4.88057902e-03 2.92421677e-03 3.11404071e-03 8.16061087e-05 3.98965718e-03 -3.90840983e-03 3.81554628e-03 -2.91222329e-04 -1.64256895e-04 -5.41259230e-05 -1.78094826e-05 -5.76134452e-04 2.41137503e-04 -1.01124921e-04 -2.50681311e-01 1.29637869e-01 -3.43603397e-02 1.90677593e-02 2.55642069e-01 -5.76016724e-02 -2.31073552e-01 1.70706534e-01 -3.47760262e-02 2.20810865e-02 -8.69671403e-02 -8.69671403e-02 8.69671403e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 -2.31073552e-01 1.70706534e-01 -3.47760262e-02 2.20810865e-02 -8.69671403e-02 -8.69671403e-02 8.69671403e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 3.35169819e-01 -3.81033730e-02 -3.81033730e-02 -5.56692551e-02 4.55715201e-02 -4.68039666e-02 8.11017653e-03 -5.48328334e-03 -5.76016724e-02 1.36360519e-02 9.09946312e-02 -8.78615395e-02 1.51409429e-02 -1.08124682e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 -1.70016634e-02 -1.70016634e-02 1.70016634e-02 9.09946312e-02 -8.78615395e-02 1.51409429e-02 -1.08124682e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 -1.70016634e-02 -1.70016634e-02 1.70016634e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 -5.56692551e-02 1.70016634e-02 1.70016634e-02 3.82879364e-03 4.96626145e-03 -6.78853114e-03 -6.78853114e-03 -4.95769243e-03 4.88057902e-03 4.88057902e-03 -2.33214382e-01 -1.42959316e-01 -1.42959316e-01 -1.89783463e-01 1.84466621e-01 -1.84466621e-01 1.05548787e-02 6.47988162e-03 6.47988162e-03 2.78703402e-02 -8.34518149e-03 8.34518149e-03 1.19719253e-02 1.75623651e-03 3.65770659e-03 -3.05324736e-03 3.11404071e-03 2.92421677e-03 -1.42959316e-01 -8.74686860e-02 -8.75173384e-02 1.05433222e-04 -1.16218161e-01 1.13119631e-01 -1.12926204e-01 6.29096583e-03 3.92293329e-03 4.07789392e-03 -2.30094432e-05 1.70670281e-02 -4.94879992e-03 5.25183836e-03 1.19719253e-02 3.65770659e-03 1.75623651e-03 -3.05324736e-03 2.92421677e-03 3.11404071e-03 -1.42959316e-01 -8.75173384e-02 -8.74686860e-02 -1.05433222e-04 -1.16218161e-01 1.12926204e-01 -1.13119631e-01 6.29096583e-03 4.07789392e-03 3.92293329e-03 2.30094432e-05 1.70670281e-02 -5.25183836e-03 4.94879992e-03 9.88504715e-03 -9.88504715e-03 -8.16061087e-05 8.16061087e-05 1.05433222e-04 -1.05433222e-04 -1.78440391e-04 9.58226514e-06 9.58226514e-06 1.23324095e-04 -1.23324095e-04 3.89423179e-05 -1.91006991e-04 -1.91006991e-04 1.34997473e-02 -1.34997473e-02 -1.34997473e-02 -3.98965718e-03 3.98965718e-03 3.98965718e-03 -1.89783463e-01 -1.16218161e-01 -1.16218161e-01 5.86189719e-02 1.50037001e-01 -1.50037001e-01 8.58346559e-03 5.25627773e-03 5.25627773e-03 5.74991859e-03 -6.78582537e-03 6.78582537e-03 6.86525306e-04 2.68064379e-02 1.14201355e-02 3.80846317e-03 -3.81554628e-03 -3.90840983e-03 1.84466621e-01 1.13119631e-01 1.12926204e-01 9.58226514e-06 1.50037001e-01 -1.45660580e-01 1.45949895e-01 -8.49151503e-03 -5.04126819e-03 -5.01287669e-03 -2.09120600e-06 -2.20334385e-02 6.63188133e-03 -6.50712338e-03 -6.86525306e-04 -1.14201355e-02 -2.68064379e-02 -3.80846317e-03 3.90840983e-03 3.81554628e-03 -1.84466621e-01 -1.12926204e-01 -1.13119631e-01 9.58226514e-06 -1.50037001e-01 1.45949895e-01 -1.45660580e-01 8.49151503e-03 5.01287669e-03 5.04126819e-03 -2.09120600e-06 2.20334385e-02 -6.50712338e-03 6.63188133e-03 7.75107441e-03 1.00868915e-02 1.00868915e-02 7.89606128e-05 -2.91222329e-04 -2.91222329e-04 1.05548787e-02 6.29096583e-03 6.29096583e-03 8.58346559e-03 -8.49151503e-03 8.49151503e-03 -7.68391652e-04 -1.37774951e-04 -1.37774951e-04 -1.21596738e-03 2.58595459e-04 -2.58595459e-04 -7.88241731e-03 -1.01418763e-02 4.47145138e-03 1.92416159e-04 -5.41259230e-05 -1.64256895e-04 6.47988162e-03 3.92293329e-03 4.07789392e-03 1.23324095e-04 5.25627773e-03 -5.04126819e-03 5.01287669e-03 -1.37774951e-04 -3.28425304e-04 -1.58824815e-04 -2.69138959e-05 -7.44624905e-04 4.08892304e-04 -1.50120025e-04 -7.88241731e-03 4.47145138e-03 -1.01418763e-02 1.92416159e-04 -1.64256895e-04 -5.41259230e-05 6.47988162e-03 4.07789392e-03 3.92293329e-03 -1.23324095e-04 5.25627773e-03 -5.01287669e-03 5.04126819e-03 -1.37774951e-04 -1.58824815e-04 -3.28425304e-04 2.69138959e-05 -7.44624905e-04 1.50120025e-04 -4.08892304e-04 -2.15728427e-03 2.15728427e-03 1.78094826e-05 -1.78094826e-05 -2.30094432e-05 2.30094432e-05 3.89423179e-05 -2.09120600e-06 -2.09120600e-06 -2.69138959e-05 2.69138959e-05 -8.49865950e-06 4.16848167e-05 4.16848167e-05 6.96401205e-03 -6.96401205e-03 -6.96401205e-03 5.76134452e-04 -5.76134452e-04 -5.76134452e-04 2.78703402e-02 1.70670281e-02 1.70670281e-02 5.74991859e-03 -2.20334385e-02 2.20334385e-02 -1.21596738e-03 -7.44624905e-04 -7.44624905e-04 -2.25860819e-03 9.61306618e-04 -9.61306618e-04 6.65332653e-03 1.75321839e-02 -9.29544937e-03 -2.19325430e-04 1.01124921e-04 2.41137503e-04 -8.34518149e-03 -4.94879992e-03 -5.25183836e-03 -1.91006991e-04 -6.78582537e-03 6.63188133e-03 -6.50712338e-03 2.58595459e-04 4.08892304e-04 1.50120025e-04 4.16848167e-05 9.61306618e-04 -5.05218881e-04 1.34231757e-04 -6.65332653e-03 9.29544937e-03 -1.75321839e-02 2.19325430e-04 -2.41137503e-04 -1.01124921e-04 8.34518149e-03 5.25183836e-03 4.94879992e-03 -1.91006991e-04 6.78582537e-03 -6.50712338e-03 6.63188133e-03 -2.58595459e-04 -1.50120025e-04 -4.08892304e-04 4.16848167e-05 -9.61306618e-04 1.34231757e-04 -5.05218881e-04 - 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 - 0 12 24 36 48 66 86 106 124 144 164 170 180 190 190 200 206 216 226 226 236 254 274 294 308 326 346 366 384 404 424 438 456 476 496 --1 -1 0 496 - 1.46471486e+00 2.54883877e-01 1.24590418e-01 -9.35884290e-03 -2.50681311e-01 2.31073552e-01 2.31073552e-01 -2.31073552e-01 4.55715201e-02 -9.09946312e-02 -9.09946312e-02 9.09946312e-02 2.54883877e-01 1.70428957e+00 -9.34218553e-02 1.65342489e-01 1.29637869e-01 -1.70706534e-01 -1.70706534e-01 1.70706534e-01 -4.68039666e-02 8.78615395e-02 8.78615395e-02 -8.78615395e-02 1.24590418e-01 -9.34218553e-02 1.88920782e-02 -1.20468125e-02 -3.43603397e-02 3.47760262e-02 3.47760262e-02 -3.47760262e-02 8.11017653e-03 -1.51409429e-02 -1.51409429e-02 1.51409429e-02 -9.35884290e-03 1.65342489e-01 -1.20468125e-02 1.72406024e-02 1.90677593e-02 -2.20810865e-02 -2.20810865e-02 2.20810865e-02 -5.48328334e-03 1.08124682e-02 1.08124682e-02 -1.08124682e-02 1.89517553e+00 9.95491140e-02 9.95491140e-02 -9.15785008e-03 -2.53788780e-03 -2.53788780e-03 -2.12388496e-02 -1.19719253e-02 -1.19719253e-02 -1.34997473e-02 -6.86525306e-04 6.86525306e-04 -2.22701900e-02 7.88241731e-03 7.88241731e-03 -6.96401205e-03 -6.65332653e-03 6.65332653e-03 9.95491140e-02 2.04211641e+00 -9.95491140e-02 -2.53788780e-03 -3.88804018e-03 2.53788780e-03 6.78853114e-03 1.78035242e-02 -3.65770659e-03 -9.88504715e-03 1.34997473e-02 6.08947863e-03 1.14201355e-02 -1.00868915e-02 8.24231853e-03 -4.47145138e-03 2.15728427e-03 6.96401205e-03 -6.20170953e-03 -9.29544937e-03 9.95491140e-02 -9.95491140e-02 2.04211641e+00 -2.53788780e-03 2.53788780e-03 -3.88804018e-03 6.78853114e-03 -3.65770659e-03 1.78035242e-02 9.88504715e-03 1.34997473e-02 -1.14201355e-02 -6.08947863e-03 -1.00868915e-02 -4.47145138e-03 8.24231853e-03 -2.15728427e-03 6.96401205e-03 9.29544937e-03 6.20170953e-03 -9.15785008e-03 -2.53788780e-03 -2.53788780e-03 1.79684460e-04 -7.82240681e-05 -7.82240681e-05 4.90771661e-03 3.05324736e-03 3.05324736e-03 3.98965718e-03 -3.80846317e-03 3.80846317e-03 -8.90983131e-05 -1.92416159e-04 -1.92416159e-04 -5.76134452e-04 2.19325430e-04 -2.19325430e-04 -2.53788780e-03 -3.88804018e-03 2.53788780e-03 -7.82240681e-05 2.17480352e-04 7.82240681e-05 -4.88057902e-03 -2.92726385e-03 -2.92421677e-03 8.16061087e-05 -3.98965718e-03 3.98374436e-03 -3.90840983e-03 2.91222329e-04 4.87887308e-05 1.64256895e-04 -1.78094826e-05 5.76134452e-04 -3.17373257e-05 2.41137503e-04 -2.53788780e-03 2.53788780e-03 -3.88804018e-03 -7.82240681e-05 7.82240681e-05 2.17480352e-04 -4.88057902e-03 -2.92421677e-03 -2.92726385e-03 -8.16061087e-05 -3.98965718e-03 3.90840983e-03 -3.98374436e-03 2.91222329e-04 1.64256895e-04 4.87887308e-05 1.78094826e-05 5.76134452e-04 -2.41137503e-04 3.17373257e-05 -2.50681311e-01 1.29637869e-01 -3.43603397e-02 1.90677593e-02 2.55642069e-01 -5.76016724e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 -8.69671403e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 -8.69671403e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 -2.31073552e-01 1.70706534e-01 -3.47760262e-02 2.20810865e-02 -8.69671403e-02 -8.69671403e-02 5.09104100e-01 3.81033730e-02 3.81033730e-02 -1.31876001e-01 4.55715201e-02 -4.68039666e-02 8.11017653e-03 -5.48328334e-03 -5.76016724e-02 1.36360519e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 1.70016634e-02 1.70016634e-02 -1.70016634e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 1.70016634e-02 1.70016634e-02 -1.70016634e-02 9.09946312e-02 -8.78615395e-02 1.51409429e-02 -1.08124682e-02 3.81033730e-02 3.81033730e-02 -1.31876001e-01 -1.70016634e-02 -1.70016634e-02 3.78321204e-02 -2.12388496e-02 6.78853114e-03 6.78853114e-03 4.90771661e-03 -4.88057902e-03 -4.88057902e-03 2.33614448e-01 1.42959316e-01 1.42959316e-01 1.89783463e-01 -1.84466621e-01 1.84466621e-01 -1.02868307e-02 -6.47988162e-03 -6.47988162e-03 -2.78703402e-02 8.34518149e-03 -8.34518149e-03 -1.19719253e-02 1.78035242e-02 -3.65770659e-03 3.05324736e-03 -2.92726385e-03 -2.92421677e-03 1.42959316e-01 8.78151758e-02 8.75173384e-02 -1.05433222e-04 1.16218161e-01 -1.12710131e-01 1.12926204e-01 -6.29096583e-03 -3.94138564e-03 -4.07789392e-03 2.30094432e-05 -1.70670281e-02 5.10344353e-03 -5.25183836e-03 -1.19719253e-02 -3.65770659e-03 1.78035242e-02 3.05324736e-03 -2.92421677e-03 -2.92726385e-03 1.42959316e-01 8.75173384e-02 8.78151758e-02 1.05433222e-04 1.16218161e-01 -1.12926204e-01 1.12710131e-01 -6.29096583e-03 -4.07789392e-03 -3.94138564e-03 -2.30094432e-05 -1.70670281e-02 5.25183836e-03 -5.10344353e-03 -9.88504715e-03 9.88504715e-03 8.16061087e-05 -8.16061087e-05 -1.05433222e-04 1.05433222e-04 1.78440391e-04 -9.58226514e-06 -9.58226514e-06 -1.23324095e-04 1.23324095e-04 -3.89423179e-05 1.91006991e-04 1.91006991e-04 -1.34997473e-02 1.34997473e-02 1.34997473e-02 3.98965718e-03 -3.98965718e-03 -3.98965718e-03 1.89783463e-01 1.16218161e-01 1.16218161e-01 3.67563826e-01 -1.50037001e-01 1.50037001e-01 -8.58346559e-03 -5.25627773e-03 -5.25627773e-03 -3.91967293e-02 6.78582537e-03 -6.78582537e-03 -6.86525306e-04 6.08947863e-03 -1.14201355e-02 -3.80846317e-03 3.98374436e-03 3.90840983e-03 -1.84466621e-01 -1.12710131e-01 -1.12926204e-01 -9.58226514e-06 -1.50037001e-01 1.46241269e-01 -1.45949895e-01 8.49151503e-03 5.01097526e-03 5.01287669e-03 2.09120600e-06 2.20334385e-02 -6.42339379e-03 6.50712338e-03 6.86525306e-04 1.14201355e-02 -6.08947863e-03 3.80846317e-03 -3.90840983e-03 -3.98374436e-03 1.84466621e-01 1.12926204e-01 1.12710131e-01 -9.58226514e-06 1.50037001e-01 -1.45949895e-01 1.46241269e-01 -8.49151503e-03 -5.01287669e-03 -5.01097526e-03 2.09120600e-06 -2.20334385e-02 6.50712338e-03 -6.42339379e-03 -2.22701900e-02 -1.00868915e-02 -1.00868915e-02 -8.90983131e-05 2.91222329e-04 2.91222329e-04 -1.02868307e-02 -6.29096583e-03 -6.29096583e-03 -8.58346559e-03 8.49151503e-03 -8.49151503e-03 9.59486559e-04 1.37774951e-04 1.37774951e-04 1.21596738e-03 -2.58595459e-04 2.58595459e-04 7.88241731e-03 8.24231853e-03 -4.47145138e-03 -1.92416159e-04 4.87887308e-05 1.64256895e-04 -6.47988162e-03 -3.94138564e-03 -4.07789392e-03 -1.23324095e-04 -5.25627773e-03 5.01097526e-03 -5.01287669e-03 1.37774951e-04 3.30152350e-04 1.58824815e-04 2.69138959e-05 7.44624905e-04 -4.19384346e-04 1.50120025e-04 7.88241731e-03 -4.47145138e-03 8.24231853e-03 -1.92416159e-04 1.64256895e-04 4.87887308e-05 -6.47988162e-03 -4.07789392e-03 -3.94138564e-03 1.23324095e-04 -5.25627773e-03 5.01287669e-03 -5.01097526e-03 1.37774951e-04 1.58824815e-04 3.30152350e-04 -2.69138959e-05 7.44624905e-04 -1.50120025e-04 4.19384346e-04 2.15728427e-03 -2.15728427e-03 -1.78094826e-05 1.78094826e-05 2.30094432e-05 -2.30094432e-05 -3.89423179e-05 2.09120600e-06 2.09120600e-06 2.69138959e-05 -2.69138959e-05 8.49865950e-06 -4.16848167e-05 -4.16848167e-05 -6.96401205e-03 6.96401205e-03 6.96401205e-03 -5.76134452e-04 5.76134452e-04 5.76134452e-04 -2.78703402e-02 -1.70670281e-02 -1.70670281e-02 -3.91967293e-02 2.20334385e-02 -2.20334385e-02 1.21596738e-03 7.44624905e-04 7.44624905e-04 4.88351268e-03 -9.61306618e-04 9.61306618e-04 -6.65332653e-03 -6.20170953e-03 9.29544937e-03 2.19325430e-04 -3.17373257e-05 -2.41137503e-04 8.34518149e-03 5.10344353e-03 5.25183836e-03 1.91006991e-04 6.78582537e-03 -6.42339379e-03 6.50712338e-03 -2.58595459e-04 -4.19384346e-04 -1.50120025e-04 -4.16848167e-05 -9.61306618e-04 5.81078995e-04 -1.34231757e-04 6.65332653e-03 -9.29544937e-03 6.20170953e-03 -2.19325430e-04 2.41137503e-04 3.17373257e-05 -8.34518149e-03 -5.25183836e-03 -5.10344353e-03 1.91006991e-04 -6.78582537e-03 6.50712338e-03 -6.42339379e-03 2.58595459e-04 1.50120025e-04 4.19384346e-04 -4.16848167e-05 9.61306618e-04 -1.34231757e-04 5.81078995e-04 - 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 - 0 12 24 36 48 66 86 106 124 144 164 170 180 190 190 200 206 216 226 226 236 254 274 294 308 326 346 366 384 404 424 438 456 476 496 --1 -1 1 496 - -4.46730500e-01 2.90265885e-01 -6.65919095e-02 3.20736205e-02 -2.50681311e-01 -2.31073552e-01 -2.31073552e-01 2.31073552e-01 4.55715201e-02 9.09946312e-02 9.09946312e-02 -9.09946312e-02 2.90265885e-01 -7.77208948e-02 3.49623849e-02 -1.81562170e-02 1.29637869e-01 1.70706534e-01 1.70706534e-01 -1.70706534e-01 -4.68039666e-02 -8.78615395e-02 -8.78615395e-02 8.78615395e-02 -6.65919095e-02 3.49623849e-02 -8.97965282e-03 4.90391018e-03 -3.43603397e-02 -3.47760262e-02 -3.47760262e-02 3.47760262e-02 8.11017653e-03 1.51409429e-02 1.51409429e-02 -1.51409429e-02 3.20736205e-02 -1.81562170e-02 4.90391018e-03 -2.40214415e-03 1.90677593e-02 2.20810865e-02 2.20810865e-02 -2.20810865e-02 -5.48328334e-03 -1.08124682e-02 -1.08124682e-02 1.08124682e-02 -9.61307016e-02 -9.95491140e-02 -9.95491140e-02 3.84928096e-03 2.53788780e-03 2.53788780e-03 4.96626145e-03 1.19719253e-02 1.19719253e-02 1.34997473e-02 6.86525306e-04 -6.86525306e-04 7.75107441e-03 -7.88241731e-03 -7.88241731e-03 6.96401205e-03 6.65332653e-03 -6.65332653e-03 -9.95491140e-02 5.08101702e-02 9.95491140e-02 2.53788780e-03 9.11909087e-03 -2.53788780e-03 -6.78853114e-03 1.75623651e-03 3.65770659e-03 9.88504715e-03 -1.34997473e-02 2.68064379e-02 -1.14201355e-02 1.00868915e-02 -1.01418763e-02 4.47145138e-03 -2.15728427e-03 -6.96401205e-03 1.75321839e-02 9.29544937e-03 -9.95491140e-02 9.95491140e-02 5.08101702e-02 2.53788780e-03 -2.53788780e-03 9.11909087e-03 -6.78853114e-03 3.65770659e-03 1.75623651e-03 -9.88504715e-03 -1.34997473e-02 1.14201355e-02 -2.68064379e-02 1.00868915e-02 4.47145138e-03 -1.01418763e-02 2.15728427e-03 -6.96401205e-03 -9.29544937e-03 -1.75321839e-02 3.84928096e-03 2.53788780e-03 2.53788780e-03 -1.26047298e-04 7.82240681e-05 7.82240681e-05 -4.95769243e-03 -3.05324736e-03 -3.05324736e-03 -3.98965718e-03 3.80846317e-03 -3.80846317e-03 7.89606128e-05 1.92416159e-04 1.92416159e-04 5.76134452e-04 -2.19325430e-04 2.19325430e-04 2.53788780e-03 9.11909087e-03 -2.53788780e-03 7.82240681e-05 -8.82514067e-05 -7.82240681e-05 4.88057902e-03 3.11404071e-03 2.92421677e-03 -8.16061087e-05 3.98965718e-03 -3.81554628e-03 3.90840983e-03 -2.91222329e-04 -5.41259230e-05 -1.64256895e-04 1.78094826e-05 -5.76134452e-04 1.01124921e-04 -2.41137503e-04 2.53788780e-03 -2.53788780e-03 9.11909087e-03 7.82240681e-05 -7.82240681e-05 -8.82514067e-05 4.88057902e-03 2.92421677e-03 3.11404071e-03 8.16061087e-05 3.98965718e-03 -3.90840983e-03 3.81554628e-03 -2.91222329e-04 -1.64256895e-04 -5.41259230e-05 -1.78094826e-05 -5.76134452e-04 2.41137503e-04 -1.01124921e-04 -2.50681311e-01 1.29637869e-01 -3.43603397e-02 1.90677593e-02 2.55642069e-01 -5.76016724e-02 -2.31073552e-01 1.70706534e-01 -3.47760262e-02 2.20810865e-02 -8.69671403e-02 -8.69671403e-02 8.69671403e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 -2.31073552e-01 1.70706534e-01 -3.47760262e-02 2.20810865e-02 -8.69671403e-02 -8.69671403e-02 8.69671403e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 3.35169819e-01 -3.81033730e-02 -3.81033730e-02 -5.56692551e-02 4.55715201e-02 -4.68039666e-02 8.11017653e-03 -5.48328334e-03 -5.76016724e-02 1.36360519e-02 9.09946312e-02 -8.78615395e-02 1.51409429e-02 -1.08124682e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 -1.70016634e-02 -1.70016634e-02 1.70016634e-02 9.09946312e-02 -8.78615395e-02 1.51409429e-02 -1.08124682e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 -1.70016634e-02 -1.70016634e-02 1.70016634e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 -5.56692551e-02 1.70016634e-02 1.70016634e-02 3.82879364e-03 4.96626145e-03 -6.78853114e-03 -6.78853114e-03 -4.95769243e-03 4.88057902e-03 4.88057902e-03 -2.33214382e-01 -1.42959316e-01 -1.42959316e-01 -1.89783463e-01 1.84466621e-01 -1.84466621e-01 1.05548787e-02 6.47988162e-03 6.47988162e-03 2.78703402e-02 -8.34518149e-03 8.34518149e-03 1.19719253e-02 1.75623651e-03 3.65770659e-03 -3.05324736e-03 3.11404071e-03 2.92421677e-03 -1.42959316e-01 -8.74686860e-02 -8.75173384e-02 1.05433222e-04 -1.16218161e-01 1.13119631e-01 -1.12926204e-01 6.29096583e-03 3.92293329e-03 4.07789392e-03 -2.30094432e-05 1.70670281e-02 -4.94879992e-03 5.25183836e-03 1.19719253e-02 3.65770659e-03 1.75623651e-03 -3.05324736e-03 2.92421677e-03 3.11404071e-03 -1.42959316e-01 -8.75173384e-02 -8.74686860e-02 -1.05433222e-04 -1.16218161e-01 1.12926204e-01 -1.13119631e-01 6.29096583e-03 4.07789392e-03 3.92293329e-03 2.30094432e-05 1.70670281e-02 -5.25183836e-03 4.94879992e-03 9.88504715e-03 -9.88504715e-03 -8.16061087e-05 8.16061087e-05 1.05433222e-04 -1.05433222e-04 -1.78440391e-04 9.58226514e-06 9.58226514e-06 1.23324095e-04 -1.23324095e-04 3.89423179e-05 -1.91006991e-04 -1.91006991e-04 1.34997473e-02 -1.34997473e-02 -1.34997473e-02 -3.98965718e-03 3.98965718e-03 3.98965718e-03 -1.89783463e-01 -1.16218161e-01 -1.16218161e-01 5.86189719e-02 1.50037001e-01 -1.50037001e-01 8.58346559e-03 5.25627773e-03 5.25627773e-03 5.74991859e-03 -6.78582537e-03 6.78582537e-03 6.86525306e-04 2.68064379e-02 1.14201355e-02 3.80846317e-03 -3.81554628e-03 -3.90840983e-03 1.84466621e-01 1.13119631e-01 1.12926204e-01 9.58226514e-06 1.50037001e-01 -1.45660580e-01 1.45949895e-01 -8.49151503e-03 -5.04126819e-03 -5.01287669e-03 -2.09120600e-06 -2.20334385e-02 6.63188133e-03 -6.50712338e-03 -6.86525306e-04 -1.14201355e-02 -2.68064379e-02 -3.80846317e-03 3.90840983e-03 3.81554628e-03 -1.84466621e-01 -1.12926204e-01 -1.13119631e-01 9.58226514e-06 -1.50037001e-01 1.45949895e-01 -1.45660580e-01 8.49151503e-03 5.01287669e-03 5.04126819e-03 -2.09120600e-06 2.20334385e-02 -6.50712338e-03 6.63188133e-03 7.75107441e-03 1.00868915e-02 1.00868915e-02 7.89606128e-05 -2.91222329e-04 -2.91222329e-04 1.05548787e-02 6.29096583e-03 6.29096583e-03 8.58346559e-03 -8.49151503e-03 8.49151503e-03 -7.68391652e-04 -1.37774951e-04 -1.37774951e-04 -1.21596738e-03 2.58595459e-04 -2.58595459e-04 -7.88241731e-03 -1.01418763e-02 4.47145138e-03 1.92416159e-04 -5.41259230e-05 -1.64256895e-04 6.47988162e-03 3.92293329e-03 4.07789392e-03 1.23324095e-04 5.25627773e-03 -5.04126819e-03 5.01287669e-03 -1.37774951e-04 -3.28425304e-04 -1.58824815e-04 -2.69138959e-05 -7.44624905e-04 4.08892304e-04 -1.50120025e-04 -7.88241731e-03 4.47145138e-03 -1.01418763e-02 1.92416159e-04 -1.64256895e-04 -5.41259230e-05 6.47988162e-03 4.07789392e-03 3.92293329e-03 -1.23324095e-04 5.25627773e-03 -5.01287669e-03 5.04126819e-03 -1.37774951e-04 -1.58824815e-04 -3.28425304e-04 2.69138959e-05 -7.44624905e-04 1.50120025e-04 -4.08892304e-04 -2.15728427e-03 2.15728427e-03 1.78094826e-05 -1.78094826e-05 -2.30094432e-05 2.30094432e-05 3.89423179e-05 -2.09120600e-06 -2.09120600e-06 -2.69138959e-05 2.69138959e-05 -8.49865950e-06 4.16848167e-05 4.16848167e-05 6.96401205e-03 -6.96401205e-03 -6.96401205e-03 5.76134452e-04 -5.76134452e-04 -5.76134452e-04 2.78703402e-02 1.70670281e-02 1.70670281e-02 5.74991859e-03 -2.20334385e-02 2.20334385e-02 -1.21596738e-03 -7.44624905e-04 -7.44624905e-04 -2.25860819e-03 9.61306618e-04 -9.61306618e-04 6.65332653e-03 1.75321839e-02 -9.29544937e-03 -2.19325430e-04 1.01124921e-04 2.41137503e-04 -8.34518149e-03 -4.94879992e-03 -5.25183836e-03 -1.91006991e-04 -6.78582537e-03 6.63188133e-03 -6.50712338e-03 2.58595459e-04 4.08892304e-04 1.50120025e-04 4.16848167e-05 9.61306618e-04 -5.05218881e-04 1.34231757e-04 -6.65332653e-03 9.29544937e-03 -1.75321839e-02 2.19325430e-04 -2.41137503e-04 -1.01124921e-04 8.34518149e-03 5.25183836e-03 4.94879992e-03 -1.91006991e-04 6.78582537e-03 -6.50712338e-03 6.63188133e-03 -2.58595459e-04 -1.50120025e-04 -4.08892304e-04 4.16848167e-05 -9.61306618e-04 1.34231757e-04 -5.05218881e-04 - 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 - 0 12 24 36 48 66 86 106 124 144 164 170 180 190 190 200 206 216 226 226 236 254 274 294 308 326 346 366 384 404 424 438 456 476 496 --1 -1 2 496 - 1.46471486e+00 2.54883877e-01 1.24590418e-01 -9.35884290e-03 -2.50681311e-01 2.31073552e-01 2.31073552e-01 -2.31073552e-01 4.55715201e-02 -9.09946312e-02 -9.09946312e-02 9.09946312e-02 2.54883877e-01 1.70428957e+00 -9.34218553e-02 1.65342489e-01 1.29637869e-01 -1.70706534e-01 -1.70706534e-01 1.70706534e-01 -4.68039666e-02 8.78615395e-02 8.78615395e-02 -8.78615395e-02 1.24590418e-01 -9.34218553e-02 1.88920782e-02 -1.20468125e-02 -3.43603397e-02 3.47760262e-02 3.47760262e-02 -3.47760262e-02 8.11017653e-03 -1.51409429e-02 -1.51409429e-02 1.51409429e-02 -9.35884290e-03 1.65342489e-01 -1.20468125e-02 1.72406024e-02 1.90677593e-02 -2.20810865e-02 -2.20810865e-02 2.20810865e-02 -5.48328334e-03 1.08124682e-02 1.08124682e-02 -1.08124682e-02 1.89517553e+00 9.95491140e-02 9.95491140e-02 -9.15785008e-03 -2.53788780e-03 -2.53788780e-03 -2.12388496e-02 -1.19719253e-02 -1.19719253e-02 -1.34997473e-02 -6.86525306e-04 6.86525306e-04 -2.22701900e-02 7.88241731e-03 7.88241731e-03 -6.96401205e-03 -6.65332653e-03 6.65332653e-03 9.95491140e-02 2.04211641e+00 -9.95491140e-02 -2.53788780e-03 -3.88804018e-03 2.53788780e-03 6.78853114e-03 1.78035242e-02 -3.65770659e-03 -9.88504715e-03 1.34997473e-02 6.08947863e-03 1.14201355e-02 -1.00868915e-02 8.24231853e-03 -4.47145138e-03 2.15728427e-03 6.96401205e-03 -6.20170953e-03 -9.29544937e-03 9.95491140e-02 -9.95491140e-02 2.04211641e+00 -2.53788780e-03 2.53788780e-03 -3.88804018e-03 6.78853114e-03 -3.65770659e-03 1.78035242e-02 9.88504715e-03 1.34997473e-02 -1.14201355e-02 -6.08947863e-03 -1.00868915e-02 -4.47145138e-03 8.24231853e-03 -2.15728427e-03 6.96401205e-03 9.29544937e-03 6.20170953e-03 -9.15785008e-03 -2.53788780e-03 -2.53788780e-03 1.79684460e-04 -7.82240681e-05 -7.82240681e-05 4.90771661e-03 3.05324736e-03 3.05324736e-03 3.98965718e-03 -3.80846317e-03 3.80846317e-03 -8.90983131e-05 -1.92416159e-04 -1.92416159e-04 -5.76134452e-04 2.19325430e-04 -2.19325430e-04 -2.53788780e-03 -3.88804018e-03 2.53788780e-03 -7.82240681e-05 2.17480352e-04 7.82240681e-05 -4.88057902e-03 -2.92726385e-03 -2.92421677e-03 8.16061087e-05 -3.98965718e-03 3.98374436e-03 -3.90840983e-03 2.91222329e-04 4.87887308e-05 1.64256895e-04 -1.78094826e-05 5.76134452e-04 -3.17373257e-05 2.41137503e-04 -2.53788780e-03 2.53788780e-03 -3.88804018e-03 -7.82240681e-05 7.82240681e-05 2.17480352e-04 -4.88057902e-03 -2.92421677e-03 -2.92726385e-03 -8.16061087e-05 -3.98965718e-03 3.90840983e-03 -3.98374436e-03 2.91222329e-04 1.64256895e-04 4.87887308e-05 1.78094826e-05 5.76134452e-04 -2.41137503e-04 3.17373257e-05 -2.50681311e-01 1.29637869e-01 -3.43603397e-02 1.90677593e-02 2.55642069e-01 -5.76016724e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 -8.69671403e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 -8.69671403e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 -2.31073552e-01 1.70706534e-01 -3.47760262e-02 2.20810865e-02 -8.69671403e-02 -8.69671403e-02 5.09104100e-01 3.81033730e-02 3.81033730e-02 -1.31876001e-01 4.55715201e-02 -4.68039666e-02 8.11017653e-03 -5.48328334e-03 -5.76016724e-02 1.36360519e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 1.70016634e-02 1.70016634e-02 -1.70016634e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 1.70016634e-02 1.70016634e-02 -1.70016634e-02 9.09946312e-02 -8.78615395e-02 1.51409429e-02 -1.08124682e-02 3.81033730e-02 3.81033730e-02 -1.31876001e-01 -1.70016634e-02 -1.70016634e-02 3.78321204e-02 -2.12388496e-02 6.78853114e-03 6.78853114e-03 4.90771661e-03 -4.88057902e-03 -4.88057902e-03 2.33614448e-01 1.42959316e-01 1.42959316e-01 1.89783463e-01 -1.84466621e-01 1.84466621e-01 -1.02868307e-02 -6.47988162e-03 -6.47988162e-03 -2.78703402e-02 8.34518149e-03 -8.34518149e-03 -1.19719253e-02 1.78035242e-02 -3.65770659e-03 3.05324736e-03 -2.92726385e-03 -2.92421677e-03 1.42959316e-01 8.78151758e-02 8.75173384e-02 -1.05433222e-04 1.16218161e-01 -1.12710131e-01 1.12926204e-01 -6.29096583e-03 -3.94138564e-03 -4.07789392e-03 2.30094432e-05 -1.70670281e-02 5.10344353e-03 -5.25183836e-03 -1.19719253e-02 -3.65770659e-03 1.78035242e-02 3.05324736e-03 -2.92421677e-03 -2.92726385e-03 1.42959316e-01 8.75173384e-02 8.78151758e-02 1.05433222e-04 1.16218161e-01 -1.12926204e-01 1.12710131e-01 -6.29096583e-03 -4.07789392e-03 -3.94138564e-03 -2.30094432e-05 -1.70670281e-02 5.25183836e-03 -5.10344353e-03 -9.88504715e-03 9.88504715e-03 8.16061087e-05 -8.16061087e-05 -1.05433222e-04 1.05433222e-04 1.78440391e-04 -9.58226514e-06 -9.58226514e-06 -1.23324095e-04 1.23324095e-04 -3.89423179e-05 1.91006991e-04 1.91006991e-04 -1.34997473e-02 1.34997473e-02 1.34997473e-02 3.98965718e-03 -3.98965718e-03 -3.98965718e-03 1.89783463e-01 1.16218161e-01 1.16218161e-01 3.67563826e-01 -1.50037001e-01 1.50037001e-01 -8.58346559e-03 -5.25627773e-03 -5.25627773e-03 -3.91967293e-02 6.78582537e-03 -6.78582537e-03 -6.86525306e-04 6.08947863e-03 -1.14201355e-02 -3.80846317e-03 3.98374436e-03 3.90840983e-03 -1.84466621e-01 -1.12710131e-01 -1.12926204e-01 -9.58226514e-06 -1.50037001e-01 1.46241269e-01 -1.45949895e-01 8.49151503e-03 5.01097526e-03 5.01287669e-03 2.09120600e-06 2.20334385e-02 -6.42339379e-03 6.50712338e-03 6.86525306e-04 1.14201355e-02 -6.08947863e-03 3.80846317e-03 -3.90840983e-03 -3.98374436e-03 1.84466621e-01 1.12926204e-01 1.12710131e-01 -9.58226514e-06 1.50037001e-01 -1.45949895e-01 1.46241269e-01 -8.49151503e-03 -5.01287669e-03 -5.01097526e-03 2.09120600e-06 -2.20334385e-02 6.50712338e-03 -6.42339379e-03 -2.22701900e-02 -1.00868915e-02 -1.00868915e-02 -8.90983131e-05 2.91222329e-04 2.91222329e-04 -1.02868307e-02 -6.29096583e-03 -6.29096583e-03 -8.58346559e-03 8.49151503e-03 -8.49151503e-03 9.59486559e-04 1.37774951e-04 1.37774951e-04 1.21596738e-03 -2.58595459e-04 2.58595459e-04 7.88241731e-03 8.24231853e-03 -4.47145138e-03 -1.92416159e-04 4.87887308e-05 1.64256895e-04 -6.47988162e-03 -3.94138564e-03 -4.07789392e-03 -1.23324095e-04 -5.25627773e-03 5.01097526e-03 -5.01287669e-03 1.37774951e-04 3.30152350e-04 1.58824815e-04 2.69138959e-05 7.44624905e-04 -4.19384346e-04 1.50120025e-04 7.88241731e-03 -4.47145138e-03 8.24231853e-03 -1.92416159e-04 1.64256895e-04 4.87887308e-05 -6.47988162e-03 -4.07789392e-03 -3.94138564e-03 1.23324095e-04 -5.25627773e-03 5.01287669e-03 -5.01097526e-03 1.37774951e-04 1.58824815e-04 3.30152350e-04 -2.69138959e-05 7.44624905e-04 -1.50120025e-04 4.19384346e-04 2.15728427e-03 -2.15728427e-03 -1.78094826e-05 1.78094826e-05 2.30094432e-05 -2.30094432e-05 -3.89423179e-05 2.09120600e-06 2.09120600e-06 2.69138959e-05 -2.69138959e-05 8.49865950e-06 -4.16848167e-05 -4.16848167e-05 -6.96401205e-03 6.96401205e-03 6.96401205e-03 -5.76134452e-04 5.76134452e-04 5.76134452e-04 -2.78703402e-02 -1.70670281e-02 -1.70670281e-02 -3.91967293e-02 2.20334385e-02 -2.20334385e-02 1.21596738e-03 7.44624905e-04 7.44624905e-04 4.88351268e-03 -9.61306618e-04 9.61306618e-04 -6.65332653e-03 -6.20170953e-03 9.29544937e-03 2.19325430e-04 -3.17373257e-05 -2.41137503e-04 8.34518149e-03 5.10344353e-03 5.25183836e-03 1.91006991e-04 6.78582537e-03 -6.42339379e-03 6.50712338e-03 -2.58595459e-04 -4.19384346e-04 -1.50120025e-04 -4.16848167e-05 -9.61306618e-04 5.81078995e-04 -1.34231757e-04 6.65332653e-03 -9.29544937e-03 6.20170953e-03 -2.19325430e-04 2.41137503e-04 3.17373257e-05 -8.34518149e-03 -5.25183836e-03 -5.10344353e-03 1.91006991e-04 -6.78582537e-03 6.50712338e-03 -6.42339379e-03 2.58595459e-04 1.50120025e-04 4.19384346e-04 -4.16848167e-05 9.61306618e-04 -1.34231757e-04 5.81078995e-04 - 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 - 0 12 24 36 48 66 86 106 124 144 164 170 180 190 190 200 206 216 226 226 236 254 274 294 308 326 346 366 384 404 424 438 456 476 496 --1 -1 3 496 - -4.46730500e-01 2.90265885e-01 -6.65919095e-02 3.20736205e-02 -2.50681311e-01 -2.31073552e-01 -2.31073552e-01 2.31073552e-01 4.55715201e-02 9.09946312e-02 9.09946312e-02 -9.09946312e-02 2.90265885e-01 -7.77208948e-02 3.49623849e-02 -1.81562170e-02 1.29637869e-01 1.70706534e-01 1.70706534e-01 -1.70706534e-01 -4.68039666e-02 -8.78615395e-02 -8.78615395e-02 8.78615395e-02 -6.65919095e-02 3.49623849e-02 -8.97965282e-03 4.90391018e-03 -3.43603397e-02 -3.47760262e-02 -3.47760262e-02 3.47760262e-02 8.11017653e-03 1.51409429e-02 1.51409429e-02 -1.51409429e-02 3.20736205e-02 -1.81562170e-02 4.90391018e-03 -2.40214415e-03 1.90677593e-02 2.20810865e-02 2.20810865e-02 -2.20810865e-02 -5.48328334e-03 -1.08124682e-02 -1.08124682e-02 1.08124682e-02 -9.61307016e-02 -9.95491140e-02 -9.95491140e-02 3.84928096e-03 2.53788780e-03 2.53788780e-03 4.96626145e-03 1.19719253e-02 1.19719253e-02 1.34997473e-02 6.86525306e-04 -6.86525306e-04 7.75107441e-03 -7.88241731e-03 -7.88241731e-03 6.96401205e-03 6.65332653e-03 -6.65332653e-03 -9.95491140e-02 5.08101702e-02 9.95491140e-02 2.53788780e-03 9.11909087e-03 -2.53788780e-03 -6.78853114e-03 1.75623651e-03 3.65770659e-03 9.88504715e-03 -1.34997473e-02 2.68064379e-02 -1.14201355e-02 1.00868915e-02 -1.01418763e-02 4.47145138e-03 -2.15728427e-03 -6.96401205e-03 1.75321839e-02 9.29544937e-03 -9.95491140e-02 9.95491140e-02 5.08101702e-02 2.53788780e-03 -2.53788780e-03 9.11909087e-03 -6.78853114e-03 3.65770659e-03 1.75623651e-03 -9.88504715e-03 -1.34997473e-02 1.14201355e-02 -2.68064379e-02 1.00868915e-02 4.47145138e-03 -1.01418763e-02 2.15728427e-03 -6.96401205e-03 -9.29544937e-03 -1.75321839e-02 3.84928096e-03 2.53788780e-03 2.53788780e-03 -1.26047298e-04 7.82240681e-05 7.82240681e-05 -4.95769243e-03 -3.05324736e-03 -3.05324736e-03 -3.98965718e-03 3.80846317e-03 -3.80846317e-03 7.89606128e-05 1.92416159e-04 1.92416159e-04 5.76134452e-04 -2.19325430e-04 2.19325430e-04 2.53788780e-03 9.11909087e-03 -2.53788780e-03 7.82240681e-05 -8.82514067e-05 -7.82240681e-05 4.88057902e-03 3.11404071e-03 2.92421677e-03 -8.16061087e-05 3.98965718e-03 -3.81554628e-03 3.90840983e-03 -2.91222329e-04 -5.41259230e-05 -1.64256895e-04 1.78094826e-05 -5.76134452e-04 1.01124921e-04 -2.41137503e-04 2.53788780e-03 -2.53788780e-03 9.11909087e-03 7.82240681e-05 -7.82240681e-05 -8.82514067e-05 4.88057902e-03 2.92421677e-03 3.11404071e-03 8.16061087e-05 3.98965718e-03 -3.90840983e-03 3.81554628e-03 -2.91222329e-04 -1.64256895e-04 -5.41259230e-05 -1.78094826e-05 -5.76134452e-04 2.41137503e-04 -1.01124921e-04 -2.50681311e-01 1.29637869e-01 -3.43603397e-02 1.90677593e-02 2.55642069e-01 -5.76016724e-02 -2.31073552e-01 1.70706534e-01 -3.47760262e-02 2.20810865e-02 -8.69671403e-02 -8.69671403e-02 8.69671403e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 -2.31073552e-01 1.70706534e-01 -3.47760262e-02 2.20810865e-02 -8.69671403e-02 -8.69671403e-02 8.69671403e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 3.35169819e-01 -3.81033730e-02 -3.81033730e-02 -5.56692551e-02 4.55715201e-02 -4.68039666e-02 8.11017653e-03 -5.48328334e-03 -5.76016724e-02 1.36360519e-02 9.09946312e-02 -8.78615395e-02 1.51409429e-02 -1.08124682e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 -1.70016634e-02 -1.70016634e-02 1.70016634e-02 9.09946312e-02 -8.78615395e-02 1.51409429e-02 -1.08124682e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 -1.70016634e-02 -1.70016634e-02 1.70016634e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 -5.56692551e-02 1.70016634e-02 1.70016634e-02 3.82879364e-03 4.96626145e-03 -6.78853114e-03 -6.78853114e-03 -4.95769243e-03 4.88057902e-03 4.88057902e-03 -2.33214382e-01 -1.42959316e-01 -1.42959316e-01 -1.89783463e-01 1.84466621e-01 -1.84466621e-01 1.05548787e-02 6.47988162e-03 6.47988162e-03 2.78703402e-02 -8.34518149e-03 8.34518149e-03 1.19719253e-02 1.75623651e-03 3.65770659e-03 -3.05324736e-03 3.11404071e-03 2.92421677e-03 -1.42959316e-01 -8.74686860e-02 -8.75173384e-02 1.05433222e-04 -1.16218161e-01 1.13119631e-01 -1.12926204e-01 6.29096583e-03 3.92293329e-03 4.07789392e-03 -2.30094432e-05 1.70670281e-02 -4.94879992e-03 5.25183836e-03 1.19719253e-02 3.65770659e-03 1.75623651e-03 -3.05324736e-03 2.92421677e-03 3.11404071e-03 -1.42959316e-01 -8.75173384e-02 -8.74686860e-02 -1.05433222e-04 -1.16218161e-01 1.12926204e-01 -1.13119631e-01 6.29096583e-03 4.07789392e-03 3.92293329e-03 2.30094432e-05 1.70670281e-02 -5.25183836e-03 4.94879992e-03 9.88504715e-03 -9.88504715e-03 -8.16061087e-05 8.16061087e-05 1.05433222e-04 -1.05433222e-04 -1.78440391e-04 9.58226514e-06 9.58226514e-06 1.23324095e-04 -1.23324095e-04 3.89423179e-05 -1.91006991e-04 -1.91006991e-04 1.34997473e-02 -1.34997473e-02 -1.34997473e-02 -3.98965718e-03 3.98965718e-03 3.98965718e-03 -1.89783463e-01 -1.16218161e-01 -1.16218161e-01 5.86189719e-02 1.50037001e-01 -1.50037001e-01 8.58346559e-03 5.25627773e-03 5.25627773e-03 5.74991859e-03 -6.78582537e-03 6.78582537e-03 6.86525306e-04 2.68064379e-02 1.14201355e-02 3.80846317e-03 -3.81554628e-03 -3.90840983e-03 1.84466621e-01 1.13119631e-01 1.12926204e-01 9.58226514e-06 1.50037001e-01 -1.45660580e-01 1.45949895e-01 -8.49151503e-03 -5.04126819e-03 -5.01287669e-03 -2.09120600e-06 -2.20334385e-02 6.63188133e-03 -6.50712338e-03 -6.86525306e-04 -1.14201355e-02 -2.68064379e-02 -3.80846317e-03 3.90840983e-03 3.81554628e-03 -1.84466621e-01 -1.12926204e-01 -1.13119631e-01 9.58226514e-06 -1.50037001e-01 1.45949895e-01 -1.45660580e-01 8.49151503e-03 5.01287669e-03 5.04126819e-03 -2.09120600e-06 2.20334385e-02 -6.50712338e-03 6.63188133e-03 7.75107441e-03 1.00868915e-02 1.00868915e-02 7.89606128e-05 -2.91222329e-04 -2.91222329e-04 1.05548787e-02 6.29096583e-03 6.29096583e-03 8.58346559e-03 -8.49151503e-03 8.49151503e-03 -7.68391652e-04 -1.37774951e-04 -1.37774951e-04 -1.21596738e-03 2.58595459e-04 -2.58595459e-04 -7.88241731e-03 -1.01418763e-02 4.47145138e-03 1.92416159e-04 -5.41259230e-05 -1.64256895e-04 6.47988162e-03 3.92293329e-03 4.07789392e-03 1.23324095e-04 5.25627773e-03 -5.04126819e-03 5.01287669e-03 -1.37774951e-04 -3.28425304e-04 -1.58824815e-04 -2.69138959e-05 -7.44624905e-04 4.08892304e-04 -1.50120025e-04 -7.88241731e-03 4.47145138e-03 -1.01418763e-02 1.92416159e-04 -1.64256895e-04 -5.41259230e-05 6.47988162e-03 4.07789392e-03 3.92293329e-03 -1.23324095e-04 5.25627773e-03 -5.01287669e-03 5.04126819e-03 -1.37774951e-04 -1.58824815e-04 -3.28425304e-04 2.69138959e-05 -7.44624905e-04 1.50120025e-04 -4.08892304e-04 -2.15728427e-03 2.15728427e-03 1.78094826e-05 -1.78094826e-05 -2.30094432e-05 2.30094432e-05 3.89423179e-05 -2.09120600e-06 -2.09120600e-06 -2.69138959e-05 2.69138959e-05 -8.49865950e-06 4.16848167e-05 4.16848167e-05 6.96401205e-03 -6.96401205e-03 -6.96401205e-03 5.76134452e-04 -5.76134452e-04 -5.76134452e-04 2.78703402e-02 1.70670281e-02 1.70670281e-02 5.74991859e-03 -2.20334385e-02 2.20334385e-02 -1.21596738e-03 -7.44624905e-04 -7.44624905e-04 -2.25860819e-03 9.61306618e-04 -9.61306618e-04 6.65332653e-03 1.75321839e-02 -9.29544937e-03 -2.19325430e-04 1.01124921e-04 2.41137503e-04 -8.34518149e-03 -4.94879992e-03 -5.25183836e-03 -1.91006991e-04 -6.78582537e-03 6.63188133e-03 -6.50712338e-03 2.58595459e-04 4.08892304e-04 1.50120025e-04 4.16848167e-05 9.61306618e-04 -5.05218881e-04 1.34231757e-04 -6.65332653e-03 9.29544937e-03 -1.75321839e-02 2.19325430e-04 -2.41137503e-04 -1.01124921e-04 8.34518149e-03 5.25183836e-03 4.94879992e-03 -1.91006991e-04 6.78582537e-03 -6.50712338e-03 6.63188133e-03 -2.58595459e-04 -1.50120025e-04 -4.08892304e-04 4.16848167e-05 -9.61306618e-04 1.34231757e-04 -5.05218881e-04 - 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 - 0 12 24 36 48 66 86 106 124 144 164 170 180 190 190 200 206 216 226 226 236 254 274 294 308 326 346 366 384 404 424 438 456 476 496 --1 0 -1 496 - 6.10668701e-01 -7.51799909e-02 6.94266500e-02 -1.13818158e-02 2.50681311e-01 2.31073552e-01 2.31073552e-01 -2.31073552e-01 -4.55715201e-02 -9.09946312e-02 -9.09946312e-02 9.09946312e-02 -7.51799909e-02 6.30743818e-01 -3.88656825e-02 8.24503254e-02 -1.29637869e-01 -1.70706534e-01 -1.70706534e-01 1.70706534e-01 4.68039666e-02 8.78615395e-02 8.78615395e-02 -8.78615395e-02 6.94266500e-02 -3.88656825e-02 9.24320123e-03 -5.59159516e-03 3.43603397e-02 3.47760262e-02 3.47760262e-02 -3.47760262e-02 -8.11017653e-03 -1.51409429e-02 -1.51409429e-02 1.51409429e-02 -1.13818158e-02 8.24503254e-02 -5.59159516e-03 1.01087384e-02 -1.90677593e-02 -2.20810865e-02 -2.20810865e-02 2.20810865e-02 5.48328334e-03 1.08124682e-02 1.08124682e-02 -1.08124682e-02 6.62931071e-01 9.95491140e-02 9.95491140e-02 -9.36131516e-03 -2.53788780e-03 -2.53788780e-03 -1.84743808e-04 -1.19719253e-02 -1.19719253e-02 -1.34997473e-02 -6.86525306e-04 6.86525306e-04 -6.96842667e-03 7.88241731e-03 7.88241731e-03 -6.96401205e-03 -6.65332653e-03 6.65332653e-03 9.95491140e-02 5.15990200e-01 -9.95491140e-02 -2.53788780e-03 -1.46311251e-02 2.53788780e-03 6.78853114e-03 -4.68430612e-03 -3.65770659e-03 -9.88504715e-03 1.34997473e-02 -2.30263163e-02 1.14201355e-02 -1.00868915e-02 9.66260440e-03 -4.47145138e-03 2.15728427e-03 6.96401205e-03 -1.69134466e-02 -9.29544937e-03 9.95491140e-02 -9.95491140e-02 5.15990200e-01 -2.53788780e-03 2.53788780e-03 -1.46311251e-02 6.78853114e-03 -3.65770659e-03 -4.68430612e-03 9.88504715e-03 1.34997473e-02 -1.14201355e-02 2.30263163e-02 -1.00868915e-02 -4.47145138e-03 9.66260440e-03 -2.15728427e-03 6.96401205e-03 9.29544937e-03 1.69134466e-02 -9.36131516e-03 -2.53788780e-03 -2.53788780e-03 1.79650864e-04 -7.82240681e-05 -7.82240681e-05 4.91119301e-03 3.05324736e-03 3.05324736e-03 3.98965718e-03 -3.80846317e-03 3.80846317e-03 -8.65717248e-05 -1.92416159e-04 -1.92416159e-04 -5.76134452e-04 2.19325430e-04 -2.19325430e-04 -2.53788780e-03 -1.46311251e-02 2.53788780e-03 -7.82240681e-05 1.41854973e-04 7.82240681e-05 -4.88057902e-03 -3.08556574e-03 -2.92421677e-03 8.16061087e-05 -3.98965718e-03 3.77878526e-03 -3.90840983e-03 2.91222329e-04 5.87867582e-05 1.64256895e-04 -1.78094826e-05 5.76134452e-04 -1.07142033e-04 2.41137503e-04 -2.53788780e-03 2.53788780e-03 -1.46311251e-02 -7.82240681e-05 7.82240681e-05 1.41854973e-04 -4.88057902e-03 -2.92421677e-03 -3.08556574e-03 -8.16061087e-05 -3.98965718e-03 3.90840983e-03 -3.77878526e-03 2.91222329e-04 1.64256895e-04 5.87867582e-05 1.78094826e-05 5.76134452e-04 -2.41137503e-04 1.07142033e-04 2.50681311e-01 -1.29637869e-01 3.43603397e-02 -1.90677593e-02 -2.55642069e-01 5.76016724e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 -8.69671403e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 -8.69671403e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 -2.31073552e-01 1.70706534e-01 -3.47760262e-02 2.20810865e-02 -8.69671403e-02 -8.69671403e-02 -3.35169819e-01 3.81033730e-02 3.81033730e-02 5.56692551e-02 -4.55715201e-02 4.68039666e-02 -8.11017653e-03 5.48328334e-03 5.76016724e-02 -1.36360519e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 1.70016634e-02 1.70016634e-02 -1.70016634e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 1.70016634e-02 1.70016634e-02 -1.70016634e-02 9.09946312e-02 -8.78615395e-02 1.51409429e-02 -1.08124682e-02 3.81033730e-02 3.81033730e-02 5.56692551e-02 -1.70016634e-02 -1.70016634e-02 -3.82879364e-03 -1.84743808e-04 6.78853114e-03 6.78853114e-03 4.91119301e-03 -4.88057902e-03 -4.88057902e-03 2.33254718e-01 1.42959316e-01 1.42959316e-01 1.89783463e-01 -1.84466621e-01 1.84466621e-01 -1.05482763e-02 -6.47988162e-03 -6.47988162e-03 -2.78703402e-02 8.34518149e-03 -8.34518149e-03 -1.19719253e-02 -4.68430612e-03 -3.65770659e-03 3.05324736e-03 -3.08556574e-03 -2.92421677e-03 1.42959316e-01 8.74838123e-02 8.75173384e-02 -1.05433222e-04 1.16218161e-01 -1.13139159e-01 1.12926204e-01 -6.29096583e-03 -3.92045739e-03 -4.07789392e-03 2.30094432e-05 -1.70670281e-02 4.94560355e-03 -5.25183836e-03 -1.19719253e-02 -3.65770659e-03 -4.68430612e-03 3.05324736e-03 -2.92421677e-03 -3.08556574e-03 1.42959316e-01 8.75173384e-02 8.74838123e-02 1.05433222e-04 1.16218161e-01 -1.12926204e-01 1.13139159e-01 -6.29096583e-03 -4.07789392e-03 -3.92045739e-03 -2.30094432e-05 -1.70670281e-02 5.25183836e-03 -4.94560355e-03 -9.88504715e-03 9.88504715e-03 8.16061087e-05 -8.16061087e-05 -1.05433222e-04 1.05433222e-04 1.78440391e-04 -9.58226514e-06 -9.58226514e-06 -1.23324095e-04 1.23324095e-04 -3.89423179e-05 1.91006991e-04 1.91006991e-04 -1.34997473e-02 1.34997473e-02 1.34997473e-02 3.98965718e-03 -3.98965718e-03 -3.98965718e-03 1.89783463e-01 1.16218161e-01 1.16218161e-01 3.67563826e-01 -1.50037001e-01 1.50037001e-01 -8.58346559e-03 -5.25627773e-03 -5.25627773e-03 -3.91967293e-02 6.78582537e-03 -6.78582537e-03 -6.86525306e-04 -2.30263163e-02 -1.14201355e-02 -3.80846317e-03 3.77878526e-03 3.90840983e-03 -1.84466621e-01 -1.13139159e-01 -1.12926204e-01 -9.58226514e-06 -1.50037001e-01 1.45685791e-01 -1.45949895e-01 8.49151503e-03 5.03807181e-03 5.01287669e-03 2.09120600e-06 2.20334385e-02 -6.62775483e-03 6.50712338e-03 6.86525306e-04 1.14201355e-02 2.30263163e-02 3.80846317e-03 -3.90840983e-03 -3.77878526e-03 1.84466621e-01 1.12926204e-01 1.13139159e-01 -9.58226514e-06 1.50037001e-01 -1.45949895e-01 1.45685791e-01 -8.49151503e-03 -5.01287669e-03 -5.03807181e-03 2.09120600e-06 -2.20334385e-02 6.50712338e-03 -6.62775483e-03 -6.96842667e-03 -1.00868915e-02 -1.00868915e-02 -8.65717248e-05 2.91222329e-04 2.91222329e-04 -1.05482763e-02 -6.29096583e-03 -6.29096583e-03 -8.58346559e-03 8.49151503e-03 -8.49151503e-03 7.69472345e-04 1.37774951e-04 1.37774951e-04 1.21596738e-03 -2.58595459e-04 2.58595459e-04 7.88241731e-03 9.66260440e-03 -4.47145138e-03 -1.92416159e-04 5.87867582e-05 1.64256895e-04 -6.47988162e-03 -3.92045739e-03 -4.07789392e-03 -1.23324095e-04 -5.25627773e-03 5.03807181e-03 -5.01287669e-03 1.37774951e-04 3.28830564e-04 1.58824815e-04 2.69138959e-05 7.44624905e-04 -4.09415493e-04 1.50120025e-04 7.88241731e-03 -4.47145138e-03 9.66260440e-03 -1.92416159e-04 1.64256895e-04 5.87867582e-05 -6.47988162e-03 -4.07789392e-03 -3.92045739e-03 1.23324095e-04 -5.25627773e-03 5.01287669e-03 -5.03807181e-03 1.37774951e-04 1.58824815e-04 3.28830564e-04 -2.69138959e-05 7.44624905e-04 -1.50120025e-04 4.09415493e-04 2.15728427e-03 -2.15728427e-03 -1.78094826e-05 1.78094826e-05 2.30094432e-05 -2.30094432e-05 -3.89423179e-05 2.09120600e-06 2.09120600e-06 2.69138959e-05 -2.69138959e-05 8.49865950e-06 -4.16848167e-05 -4.16848167e-05 -6.96401205e-03 6.96401205e-03 6.96401205e-03 -5.76134452e-04 5.76134452e-04 5.76134452e-04 -2.78703402e-02 -1.70670281e-02 -1.70670281e-02 -3.91967293e-02 2.20334385e-02 -2.20334385e-02 1.21596738e-03 7.44624905e-04 7.44624905e-04 4.88351268e-03 -9.61306618e-04 9.61306618e-04 -6.65332653e-03 -1.69134466e-02 9.29544937e-03 2.19325430e-04 -1.07142033e-04 -2.41137503e-04 8.34518149e-03 4.94560355e-03 5.25183836e-03 1.91006991e-04 6.78582537e-03 -6.62775483e-03 6.50712338e-03 -2.58595459e-04 -4.09415493e-04 -1.50120025e-04 -4.16848167e-05 -9.61306618e-04 5.05894315e-04 -1.34231757e-04 6.65332653e-03 -9.29544937e-03 1.69134466e-02 -2.19325430e-04 2.41137503e-04 1.07142033e-04 -8.34518149e-03 -5.25183836e-03 -4.94560355e-03 1.91006991e-04 -6.78582537e-03 6.50712338e-03 -6.62775483e-03 2.58595459e-04 1.50120025e-04 4.09415493e-04 -4.16848167e-05 9.61306618e-04 -1.34231757e-04 5.05894315e-04 - 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 - 0 12 24 36 48 66 86 106 124 144 164 170 180 190 190 200 206 216 226 226 236 254 274 294 308 326 346 366 384 404 424 438 456 476 496 --1 0 0 496 - -1.30077665e+00 -3.97979828e-02 -1.21755678e-01 3.00506476e-02 2.50681311e-01 -2.31073552e-01 -2.31073552e-01 2.31073552e-01 -4.55715201e-02 9.09946312e-02 9.09946312e-02 -9.09946312e-02 -3.97979828e-02 -1.15126664e+00 8.95185576e-02 -1.01048380e-01 -1.29637869e-01 1.70706534e-01 1.70706534e-01 -1.70706534e-01 4.68039666e-02 -8.78615395e-02 -8.78615395e-02 8.78615395e-02 -1.21755678e-01 8.95185576e-02 -1.86285298e-02 1.13591275e-02 3.43603397e-02 -3.47760262e-02 -3.47760262e-02 3.47760262e-02 -8.11017653e-03 1.51409429e-02 1.51409429e-02 -1.51409429e-02 3.00506476e-02 -1.01048380e-01 1.13591275e-02 -9.53400814e-03 -1.90677593e-02 2.20810865e-02 2.20810865e-02 -2.20810865e-02 5.48328334e-03 -1.08124682e-02 -1.08124682e-02 1.08124682e-02 -1.32837516e+00 -9.95491140e-02 -9.95491140e-02 3.64581589e-03 2.53788780e-03 2.53788780e-03 2.60203672e-02 1.19719253e-02 1.19719253e-02 1.34997473e-02 6.86525306e-04 -6.86525306e-04 2.30528378e-02 -7.88241731e-03 -7.88241731e-03 6.96401205e-03 6.65332653e-03 -6.65332653e-03 -9.95491140e-02 -1.47531604e+00 9.95491140e-02 2.53788780e-03 -1.62399402e-03 -2.53788780e-03 -6.78853114e-03 -2.07315938e-02 3.65770659e-03 9.88504715e-03 -1.34997473e-02 -2.30935703e-03 -1.14201355e-02 1.00868915e-02 -8.72159043e-03 4.47145138e-03 -2.15728427e-03 -6.96401205e-03 6.82044689e-03 9.29544937e-03 -9.95491140e-02 9.95491140e-02 -1.47531604e+00 2.53788780e-03 -2.53788780e-03 -1.62399402e-03 -6.78853114e-03 3.65770659e-03 -2.07315938e-02 -9.88504715e-03 -1.34997473e-02 1.14201355e-02 2.30935703e-03 1.00868915e-02 4.47145138e-03 -8.72159043e-03 2.15728427e-03 -6.96401205e-03 -9.29544937e-03 -6.82044689e-03 3.64581589e-03 2.53788780e-03 2.53788780e-03 -1.26080894e-04 7.82240681e-05 7.82240681e-05 -4.95421603e-03 -3.05324736e-03 -3.05324736e-03 -3.98965718e-03 3.80846317e-03 -3.80846317e-03 8.14872011e-05 1.92416159e-04 1.92416159e-04 5.76134452e-04 -2.19325430e-04 2.19325430e-04 2.53788780e-03 -1.62399402e-03 -2.53788780e-03 7.82240681e-05 -1.63876786e-04 -7.82240681e-05 4.88057902e-03 2.95573881e-03 2.92421677e-03 -8.16061087e-05 3.98965718e-03 -4.02050538e-03 3.90840983e-03 -2.91222329e-04 -4.41278956e-05 -1.64256895e-04 1.78094826e-05 -5.76134452e-04 2.57202134e-05 -2.41137503e-04 2.53788780e-03 -2.53788780e-03 -1.62399402e-03 7.82240681e-05 -7.82240681e-05 -1.63876786e-04 4.88057902e-03 2.92421677e-03 2.95573881e-03 8.16061087e-05 3.98965718e-03 -3.90840983e-03 4.02050538e-03 -2.91222329e-04 -1.64256895e-04 -4.41278956e-05 -1.78094826e-05 -5.76134452e-04 2.41137503e-04 -2.57202134e-05 2.50681311e-01 -1.29637869e-01 3.43603397e-02 -1.90677593e-02 -2.55642069e-01 5.76016724e-02 -2.31073552e-01 1.70706534e-01 -3.47760262e-02 2.20810865e-02 -8.69671403e-02 -8.69671403e-02 8.69671403e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 -2.31073552e-01 1.70706534e-01 -3.47760262e-02 2.20810865e-02 -8.69671403e-02 -8.69671403e-02 8.69671403e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 -5.09104100e-01 -3.81033730e-02 -3.81033730e-02 1.31876001e-01 -4.55715201e-02 4.68039666e-02 -8.11017653e-03 5.48328334e-03 5.76016724e-02 -1.36360519e-02 9.09946312e-02 -8.78615395e-02 1.51409429e-02 -1.08124682e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 -1.70016634e-02 -1.70016634e-02 1.70016634e-02 9.09946312e-02 -8.78615395e-02 1.51409429e-02 -1.08124682e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 -1.70016634e-02 -1.70016634e-02 1.70016634e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 1.31876001e-01 1.70016634e-02 1.70016634e-02 -3.78321204e-02 2.60203672e-02 -6.78853114e-03 -6.78853114e-03 -4.95421603e-03 4.88057902e-03 4.88057902e-03 -2.33574112e-01 -1.42959316e-01 -1.42959316e-01 -1.89783463e-01 1.84466621e-01 -1.84466621e-01 1.02934331e-02 6.47988162e-03 6.47988162e-03 2.78703402e-02 -8.34518149e-03 8.34518149e-03 1.19719253e-02 -2.07315938e-02 3.65770659e-03 -3.05324736e-03 2.95573881e-03 2.92421677e-03 -1.42959316e-01 -8.78000495e-02 -8.75173384e-02 1.05433222e-04 -1.16218161e-01 1.12690603e-01 -1.12926204e-01 6.29096583e-03 3.94386154e-03 4.07789392e-03 -2.30094432e-05 1.70670281e-02 -5.10663990e-03 5.25183836e-03 1.19719253e-02 3.65770659e-03 -2.07315938e-02 -3.05324736e-03 2.92421677e-03 2.95573881e-03 -1.42959316e-01 -8.75173384e-02 -8.78000495e-02 -1.05433222e-04 -1.16218161e-01 1.12926204e-01 -1.12690603e-01 6.29096583e-03 4.07789392e-03 3.94386154e-03 2.30094432e-05 1.70670281e-02 -5.25183836e-03 5.10663990e-03 9.88504715e-03 -9.88504715e-03 -8.16061087e-05 8.16061087e-05 1.05433222e-04 -1.05433222e-04 -1.78440391e-04 9.58226514e-06 9.58226514e-06 1.23324095e-04 -1.23324095e-04 3.89423179e-05 -1.91006991e-04 -1.91006991e-04 1.34997473e-02 -1.34997473e-02 -1.34997473e-02 -3.98965718e-03 3.98965718e-03 3.98965718e-03 -1.89783463e-01 -1.16218161e-01 -1.16218161e-01 5.86189719e-02 1.50037001e-01 -1.50037001e-01 8.58346559e-03 5.25627773e-03 5.25627773e-03 5.74991859e-03 -6.78582537e-03 6.78582537e-03 6.86525306e-04 -2.30935703e-03 1.14201355e-02 3.80846317e-03 -4.02050538e-03 -3.90840983e-03 1.84466621e-01 1.12690603e-01 1.12926204e-01 9.58226514e-06 1.50037001e-01 -1.46216058e-01 1.45949895e-01 -8.49151503e-03 -5.01417164e-03 -5.01287669e-03 -2.09120600e-06 -2.20334385e-02 6.42752029e-03 -6.50712338e-03 -6.86525306e-04 -1.14201355e-02 2.30935703e-03 -3.80846317e-03 3.90840983e-03 4.02050538e-03 -1.84466621e-01 -1.12926204e-01 -1.12690603e-01 9.58226514e-06 -1.50037001e-01 1.45949895e-01 -1.46216058e-01 8.49151503e-03 5.01287669e-03 5.01417164e-03 -2.09120600e-06 2.20334385e-02 -6.50712338e-03 6.42752029e-03 2.30528378e-02 1.00868915e-02 1.00868915e-02 8.14872011e-05 -2.91222329e-04 -2.91222329e-04 1.02934331e-02 6.29096583e-03 6.29096583e-03 8.58346559e-03 -8.49151503e-03 8.49151503e-03 -9.58405865e-04 -1.37774951e-04 -1.37774951e-04 -1.21596738e-03 2.58595459e-04 -2.58595459e-04 -7.88241731e-03 -8.72159043e-03 4.47145138e-03 1.92416159e-04 -4.41278956e-05 -1.64256895e-04 6.47988162e-03 3.94386154e-03 4.07789392e-03 1.23324095e-04 5.25627773e-03 -5.01417164e-03 5.01287669e-03 -1.37774951e-04 -3.29747090e-04 -1.58824815e-04 -2.69138959e-05 -7.44624905e-04 4.18861158e-04 -1.50120025e-04 -7.88241731e-03 4.47145138e-03 -8.72159043e-03 1.92416159e-04 -1.64256895e-04 -4.41278956e-05 6.47988162e-03 4.07789392e-03 3.94386154e-03 -1.23324095e-04 5.25627773e-03 -5.01287669e-03 5.01417164e-03 -1.37774951e-04 -1.58824815e-04 -3.29747090e-04 2.69138959e-05 -7.44624905e-04 1.50120025e-04 -4.18861158e-04 -2.15728427e-03 2.15728427e-03 1.78094826e-05 -1.78094826e-05 -2.30094432e-05 2.30094432e-05 3.89423179e-05 -2.09120600e-06 -2.09120600e-06 -2.69138959e-05 2.69138959e-05 -8.49865950e-06 4.16848167e-05 4.16848167e-05 6.96401205e-03 -6.96401205e-03 -6.96401205e-03 5.76134452e-04 -5.76134452e-04 -5.76134452e-04 2.78703402e-02 1.70670281e-02 1.70670281e-02 5.74991859e-03 -2.20334385e-02 2.20334385e-02 -1.21596738e-03 -7.44624905e-04 -7.44624905e-04 -2.25860819e-03 9.61306618e-04 -9.61306618e-04 6.65332653e-03 6.82044689e-03 -9.29544937e-03 -2.19325430e-04 2.57202134e-05 2.41137503e-04 -8.34518149e-03 -5.10663990e-03 -5.25183836e-03 -1.91006991e-04 -6.78582537e-03 6.42752029e-03 -6.50712338e-03 2.58595459e-04 4.18861158e-04 1.50120025e-04 4.16848167e-05 9.61306618e-04 -5.80403562e-04 1.34231757e-04 -6.65332653e-03 9.29544937e-03 -6.82044689e-03 2.19325430e-04 -2.41137503e-04 -2.57202134e-05 8.34518149e-03 5.25183836e-03 5.10663990e-03 -1.91006991e-04 6.78582537e-03 -6.50712338e-03 6.42752029e-03 -2.58595459e-04 -1.50120025e-04 -4.18861158e-04 4.16848167e-05 -9.61306618e-04 1.34231757e-04 -5.80403562e-04 - 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 - 0 12 24 36 48 66 86 106 124 144 164 170 180 190 190 200 206 216 226 226 236 254 274 294 308 326 346 366 384 404 424 438 456 476 496 --1 0 1 496 - 6.10668701e-01 -7.51799909e-02 6.94266500e-02 -1.13818158e-02 2.50681311e-01 2.31073552e-01 2.31073552e-01 -2.31073552e-01 -4.55715201e-02 -9.09946312e-02 -9.09946312e-02 9.09946312e-02 -7.51799909e-02 6.30743818e-01 -3.88656825e-02 8.24503254e-02 -1.29637869e-01 -1.70706534e-01 -1.70706534e-01 1.70706534e-01 4.68039666e-02 8.78615395e-02 8.78615395e-02 -8.78615395e-02 6.94266500e-02 -3.88656825e-02 9.24320123e-03 -5.59159516e-03 3.43603397e-02 3.47760262e-02 3.47760262e-02 -3.47760262e-02 -8.11017653e-03 -1.51409429e-02 -1.51409429e-02 1.51409429e-02 -1.13818158e-02 8.24503254e-02 -5.59159516e-03 1.01087384e-02 -1.90677593e-02 -2.20810865e-02 -2.20810865e-02 2.20810865e-02 5.48328334e-03 1.08124682e-02 1.08124682e-02 -1.08124682e-02 6.62931071e-01 9.95491140e-02 9.95491140e-02 -9.36131516e-03 -2.53788780e-03 -2.53788780e-03 -1.84743808e-04 -1.19719253e-02 -1.19719253e-02 -1.34997473e-02 -6.86525306e-04 6.86525306e-04 -6.96842667e-03 7.88241731e-03 7.88241731e-03 -6.96401205e-03 -6.65332653e-03 6.65332653e-03 9.95491140e-02 5.15990200e-01 -9.95491140e-02 -2.53788780e-03 -1.46311251e-02 2.53788780e-03 6.78853114e-03 -4.68430612e-03 -3.65770659e-03 -9.88504715e-03 1.34997473e-02 -2.30263163e-02 1.14201355e-02 -1.00868915e-02 9.66260440e-03 -4.47145138e-03 2.15728427e-03 6.96401205e-03 -1.69134466e-02 -9.29544937e-03 9.95491140e-02 -9.95491140e-02 5.15990200e-01 -2.53788780e-03 2.53788780e-03 -1.46311251e-02 6.78853114e-03 -3.65770659e-03 -4.68430612e-03 9.88504715e-03 1.34997473e-02 -1.14201355e-02 2.30263163e-02 -1.00868915e-02 -4.47145138e-03 9.66260440e-03 -2.15728427e-03 6.96401205e-03 9.29544937e-03 1.69134466e-02 -9.36131516e-03 -2.53788780e-03 -2.53788780e-03 1.79650864e-04 -7.82240681e-05 -7.82240681e-05 4.91119301e-03 3.05324736e-03 3.05324736e-03 3.98965718e-03 -3.80846317e-03 3.80846317e-03 -8.65717248e-05 -1.92416159e-04 -1.92416159e-04 -5.76134452e-04 2.19325430e-04 -2.19325430e-04 -2.53788780e-03 -1.46311251e-02 2.53788780e-03 -7.82240681e-05 1.41854973e-04 7.82240681e-05 -4.88057902e-03 -3.08556574e-03 -2.92421677e-03 8.16061087e-05 -3.98965718e-03 3.77878526e-03 -3.90840983e-03 2.91222329e-04 5.87867582e-05 1.64256895e-04 -1.78094826e-05 5.76134452e-04 -1.07142033e-04 2.41137503e-04 -2.53788780e-03 2.53788780e-03 -1.46311251e-02 -7.82240681e-05 7.82240681e-05 1.41854973e-04 -4.88057902e-03 -2.92421677e-03 -3.08556574e-03 -8.16061087e-05 -3.98965718e-03 3.90840983e-03 -3.77878526e-03 2.91222329e-04 1.64256895e-04 5.87867582e-05 1.78094826e-05 5.76134452e-04 -2.41137503e-04 1.07142033e-04 2.50681311e-01 -1.29637869e-01 3.43603397e-02 -1.90677593e-02 -2.55642069e-01 5.76016724e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 -8.69671403e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 -8.69671403e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 -2.31073552e-01 1.70706534e-01 -3.47760262e-02 2.20810865e-02 -8.69671403e-02 -8.69671403e-02 -3.35169819e-01 3.81033730e-02 3.81033730e-02 5.56692551e-02 -4.55715201e-02 4.68039666e-02 -8.11017653e-03 5.48328334e-03 5.76016724e-02 -1.36360519e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 1.70016634e-02 1.70016634e-02 -1.70016634e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 1.70016634e-02 1.70016634e-02 -1.70016634e-02 9.09946312e-02 -8.78615395e-02 1.51409429e-02 -1.08124682e-02 3.81033730e-02 3.81033730e-02 5.56692551e-02 -1.70016634e-02 -1.70016634e-02 -3.82879364e-03 -1.84743808e-04 6.78853114e-03 6.78853114e-03 4.91119301e-03 -4.88057902e-03 -4.88057902e-03 2.33254718e-01 1.42959316e-01 1.42959316e-01 1.89783463e-01 -1.84466621e-01 1.84466621e-01 -1.05482763e-02 -6.47988162e-03 -6.47988162e-03 -2.78703402e-02 8.34518149e-03 -8.34518149e-03 -1.19719253e-02 -4.68430612e-03 -3.65770659e-03 3.05324736e-03 -3.08556574e-03 -2.92421677e-03 1.42959316e-01 8.74838123e-02 8.75173384e-02 -1.05433222e-04 1.16218161e-01 -1.13139159e-01 1.12926204e-01 -6.29096583e-03 -3.92045739e-03 -4.07789392e-03 2.30094432e-05 -1.70670281e-02 4.94560355e-03 -5.25183836e-03 -1.19719253e-02 -3.65770659e-03 -4.68430612e-03 3.05324736e-03 -2.92421677e-03 -3.08556574e-03 1.42959316e-01 8.75173384e-02 8.74838123e-02 1.05433222e-04 1.16218161e-01 -1.12926204e-01 1.13139159e-01 -6.29096583e-03 -4.07789392e-03 -3.92045739e-03 -2.30094432e-05 -1.70670281e-02 5.25183836e-03 -4.94560355e-03 -9.88504715e-03 9.88504715e-03 8.16061087e-05 -8.16061087e-05 -1.05433222e-04 1.05433222e-04 1.78440391e-04 -9.58226514e-06 -9.58226514e-06 -1.23324095e-04 1.23324095e-04 -3.89423179e-05 1.91006991e-04 1.91006991e-04 -1.34997473e-02 1.34997473e-02 1.34997473e-02 3.98965718e-03 -3.98965718e-03 -3.98965718e-03 1.89783463e-01 1.16218161e-01 1.16218161e-01 3.67563826e-01 -1.50037001e-01 1.50037001e-01 -8.58346559e-03 -5.25627773e-03 -5.25627773e-03 -3.91967293e-02 6.78582537e-03 -6.78582537e-03 -6.86525306e-04 -2.30263163e-02 -1.14201355e-02 -3.80846317e-03 3.77878526e-03 3.90840983e-03 -1.84466621e-01 -1.13139159e-01 -1.12926204e-01 -9.58226514e-06 -1.50037001e-01 1.45685791e-01 -1.45949895e-01 8.49151503e-03 5.03807181e-03 5.01287669e-03 2.09120600e-06 2.20334385e-02 -6.62775483e-03 6.50712338e-03 6.86525306e-04 1.14201355e-02 2.30263163e-02 3.80846317e-03 -3.90840983e-03 -3.77878526e-03 1.84466621e-01 1.12926204e-01 1.13139159e-01 -9.58226514e-06 1.50037001e-01 -1.45949895e-01 1.45685791e-01 -8.49151503e-03 -5.01287669e-03 -5.03807181e-03 2.09120600e-06 -2.20334385e-02 6.50712338e-03 -6.62775483e-03 -6.96842667e-03 -1.00868915e-02 -1.00868915e-02 -8.65717248e-05 2.91222329e-04 2.91222329e-04 -1.05482763e-02 -6.29096583e-03 -6.29096583e-03 -8.58346559e-03 8.49151503e-03 -8.49151503e-03 7.69472345e-04 1.37774951e-04 1.37774951e-04 1.21596738e-03 -2.58595459e-04 2.58595459e-04 7.88241731e-03 9.66260440e-03 -4.47145138e-03 -1.92416159e-04 5.87867582e-05 1.64256895e-04 -6.47988162e-03 -3.92045739e-03 -4.07789392e-03 -1.23324095e-04 -5.25627773e-03 5.03807181e-03 -5.01287669e-03 1.37774951e-04 3.28830564e-04 1.58824815e-04 2.69138959e-05 7.44624905e-04 -4.09415493e-04 1.50120025e-04 7.88241731e-03 -4.47145138e-03 9.66260440e-03 -1.92416159e-04 1.64256895e-04 5.87867582e-05 -6.47988162e-03 -4.07789392e-03 -3.92045739e-03 1.23324095e-04 -5.25627773e-03 5.01287669e-03 -5.03807181e-03 1.37774951e-04 1.58824815e-04 3.28830564e-04 -2.69138959e-05 7.44624905e-04 -1.50120025e-04 4.09415493e-04 2.15728427e-03 -2.15728427e-03 -1.78094826e-05 1.78094826e-05 2.30094432e-05 -2.30094432e-05 -3.89423179e-05 2.09120600e-06 2.09120600e-06 2.69138959e-05 -2.69138959e-05 8.49865950e-06 -4.16848167e-05 -4.16848167e-05 -6.96401205e-03 6.96401205e-03 6.96401205e-03 -5.76134452e-04 5.76134452e-04 5.76134452e-04 -2.78703402e-02 -1.70670281e-02 -1.70670281e-02 -3.91967293e-02 2.20334385e-02 -2.20334385e-02 1.21596738e-03 7.44624905e-04 7.44624905e-04 4.88351268e-03 -9.61306618e-04 9.61306618e-04 -6.65332653e-03 -1.69134466e-02 9.29544937e-03 2.19325430e-04 -1.07142033e-04 -2.41137503e-04 8.34518149e-03 4.94560355e-03 5.25183836e-03 1.91006991e-04 6.78582537e-03 -6.62775483e-03 6.50712338e-03 -2.58595459e-04 -4.09415493e-04 -1.50120025e-04 -4.16848167e-05 -9.61306618e-04 5.05894315e-04 -1.34231757e-04 6.65332653e-03 -9.29544937e-03 1.69134466e-02 -2.19325430e-04 2.41137503e-04 1.07142033e-04 -8.34518149e-03 -5.25183836e-03 -4.94560355e-03 1.91006991e-04 -6.78582537e-03 6.50712338e-03 -6.62775483e-03 2.58595459e-04 1.50120025e-04 4.09415493e-04 -4.16848167e-05 9.61306618e-04 -1.34231757e-04 5.05894315e-04 - 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 - 0 12 24 36 48 66 86 106 124 144 164 170 180 190 190 200 206 216 226 226 236 254 274 294 308 326 346 366 384 404 424 438 456 476 496 --1 0 2 496 - -1.30077665e+00 -3.97979828e-02 -1.21755678e-01 3.00506476e-02 2.50681311e-01 -2.31073552e-01 -2.31073552e-01 2.31073552e-01 -4.55715201e-02 9.09946312e-02 9.09946312e-02 -9.09946312e-02 -3.97979828e-02 -1.15126664e+00 8.95185576e-02 -1.01048380e-01 -1.29637869e-01 1.70706534e-01 1.70706534e-01 -1.70706534e-01 4.68039666e-02 -8.78615395e-02 -8.78615395e-02 8.78615395e-02 -1.21755678e-01 8.95185576e-02 -1.86285298e-02 1.13591275e-02 3.43603397e-02 -3.47760262e-02 -3.47760262e-02 3.47760262e-02 -8.11017653e-03 1.51409429e-02 1.51409429e-02 -1.51409429e-02 3.00506476e-02 -1.01048380e-01 1.13591275e-02 -9.53400814e-03 -1.90677593e-02 2.20810865e-02 2.20810865e-02 -2.20810865e-02 5.48328334e-03 -1.08124682e-02 -1.08124682e-02 1.08124682e-02 -1.32837516e+00 -9.95491140e-02 -9.95491140e-02 3.64581589e-03 2.53788780e-03 2.53788780e-03 2.60203672e-02 1.19719253e-02 1.19719253e-02 1.34997473e-02 6.86525306e-04 -6.86525306e-04 2.30528378e-02 -7.88241731e-03 -7.88241731e-03 6.96401205e-03 6.65332653e-03 -6.65332653e-03 -9.95491140e-02 -1.47531604e+00 9.95491140e-02 2.53788780e-03 -1.62399402e-03 -2.53788780e-03 -6.78853114e-03 -2.07315938e-02 3.65770659e-03 9.88504715e-03 -1.34997473e-02 -2.30935703e-03 -1.14201355e-02 1.00868915e-02 -8.72159043e-03 4.47145138e-03 -2.15728427e-03 -6.96401205e-03 6.82044689e-03 9.29544937e-03 -9.95491140e-02 9.95491140e-02 -1.47531604e+00 2.53788780e-03 -2.53788780e-03 -1.62399402e-03 -6.78853114e-03 3.65770659e-03 -2.07315938e-02 -9.88504715e-03 -1.34997473e-02 1.14201355e-02 2.30935703e-03 1.00868915e-02 4.47145138e-03 -8.72159043e-03 2.15728427e-03 -6.96401205e-03 -9.29544937e-03 -6.82044689e-03 3.64581589e-03 2.53788780e-03 2.53788780e-03 -1.26080894e-04 7.82240681e-05 7.82240681e-05 -4.95421603e-03 -3.05324736e-03 -3.05324736e-03 -3.98965718e-03 3.80846317e-03 -3.80846317e-03 8.14872011e-05 1.92416159e-04 1.92416159e-04 5.76134452e-04 -2.19325430e-04 2.19325430e-04 2.53788780e-03 -1.62399402e-03 -2.53788780e-03 7.82240681e-05 -1.63876786e-04 -7.82240681e-05 4.88057902e-03 2.95573881e-03 2.92421677e-03 -8.16061087e-05 3.98965718e-03 -4.02050538e-03 3.90840983e-03 -2.91222329e-04 -4.41278956e-05 -1.64256895e-04 1.78094826e-05 -5.76134452e-04 2.57202134e-05 -2.41137503e-04 2.53788780e-03 -2.53788780e-03 -1.62399402e-03 7.82240681e-05 -7.82240681e-05 -1.63876786e-04 4.88057902e-03 2.92421677e-03 2.95573881e-03 8.16061087e-05 3.98965718e-03 -3.90840983e-03 4.02050538e-03 -2.91222329e-04 -1.64256895e-04 -4.41278956e-05 -1.78094826e-05 -5.76134452e-04 2.41137503e-04 -2.57202134e-05 2.50681311e-01 -1.29637869e-01 3.43603397e-02 -1.90677593e-02 -2.55642069e-01 5.76016724e-02 -2.31073552e-01 1.70706534e-01 -3.47760262e-02 2.20810865e-02 -8.69671403e-02 -8.69671403e-02 8.69671403e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 -2.31073552e-01 1.70706534e-01 -3.47760262e-02 2.20810865e-02 -8.69671403e-02 -8.69671403e-02 8.69671403e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 -5.09104100e-01 -3.81033730e-02 -3.81033730e-02 1.31876001e-01 -4.55715201e-02 4.68039666e-02 -8.11017653e-03 5.48328334e-03 5.76016724e-02 -1.36360519e-02 9.09946312e-02 -8.78615395e-02 1.51409429e-02 -1.08124682e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 -1.70016634e-02 -1.70016634e-02 1.70016634e-02 9.09946312e-02 -8.78615395e-02 1.51409429e-02 -1.08124682e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 -1.70016634e-02 -1.70016634e-02 1.70016634e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 1.31876001e-01 1.70016634e-02 1.70016634e-02 -3.78321204e-02 2.60203672e-02 -6.78853114e-03 -6.78853114e-03 -4.95421603e-03 4.88057902e-03 4.88057902e-03 -2.33574112e-01 -1.42959316e-01 -1.42959316e-01 -1.89783463e-01 1.84466621e-01 -1.84466621e-01 1.02934331e-02 6.47988162e-03 6.47988162e-03 2.78703402e-02 -8.34518149e-03 8.34518149e-03 1.19719253e-02 -2.07315938e-02 3.65770659e-03 -3.05324736e-03 2.95573881e-03 2.92421677e-03 -1.42959316e-01 -8.78000495e-02 -8.75173384e-02 1.05433222e-04 -1.16218161e-01 1.12690603e-01 -1.12926204e-01 6.29096583e-03 3.94386154e-03 4.07789392e-03 -2.30094432e-05 1.70670281e-02 -5.10663990e-03 5.25183836e-03 1.19719253e-02 3.65770659e-03 -2.07315938e-02 -3.05324736e-03 2.92421677e-03 2.95573881e-03 -1.42959316e-01 -8.75173384e-02 -8.78000495e-02 -1.05433222e-04 -1.16218161e-01 1.12926204e-01 -1.12690603e-01 6.29096583e-03 4.07789392e-03 3.94386154e-03 2.30094432e-05 1.70670281e-02 -5.25183836e-03 5.10663990e-03 9.88504715e-03 -9.88504715e-03 -8.16061087e-05 8.16061087e-05 1.05433222e-04 -1.05433222e-04 -1.78440391e-04 9.58226514e-06 9.58226514e-06 1.23324095e-04 -1.23324095e-04 3.89423179e-05 -1.91006991e-04 -1.91006991e-04 1.34997473e-02 -1.34997473e-02 -1.34997473e-02 -3.98965718e-03 3.98965718e-03 3.98965718e-03 -1.89783463e-01 -1.16218161e-01 -1.16218161e-01 5.86189719e-02 1.50037001e-01 -1.50037001e-01 8.58346559e-03 5.25627773e-03 5.25627773e-03 5.74991859e-03 -6.78582537e-03 6.78582537e-03 6.86525306e-04 -2.30935703e-03 1.14201355e-02 3.80846317e-03 -4.02050538e-03 -3.90840983e-03 1.84466621e-01 1.12690603e-01 1.12926204e-01 9.58226514e-06 1.50037001e-01 -1.46216058e-01 1.45949895e-01 -8.49151503e-03 -5.01417164e-03 -5.01287669e-03 -2.09120600e-06 -2.20334385e-02 6.42752029e-03 -6.50712338e-03 -6.86525306e-04 -1.14201355e-02 2.30935703e-03 -3.80846317e-03 3.90840983e-03 4.02050538e-03 -1.84466621e-01 -1.12926204e-01 -1.12690603e-01 9.58226514e-06 -1.50037001e-01 1.45949895e-01 -1.46216058e-01 8.49151503e-03 5.01287669e-03 5.01417164e-03 -2.09120600e-06 2.20334385e-02 -6.50712338e-03 6.42752029e-03 2.30528378e-02 1.00868915e-02 1.00868915e-02 8.14872011e-05 -2.91222329e-04 -2.91222329e-04 1.02934331e-02 6.29096583e-03 6.29096583e-03 8.58346559e-03 -8.49151503e-03 8.49151503e-03 -9.58405865e-04 -1.37774951e-04 -1.37774951e-04 -1.21596738e-03 2.58595459e-04 -2.58595459e-04 -7.88241731e-03 -8.72159043e-03 4.47145138e-03 1.92416159e-04 -4.41278956e-05 -1.64256895e-04 6.47988162e-03 3.94386154e-03 4.07789392e-03 1.23324095e-04 5.25627773e-03 -5.01417164e-03 5.01287669e-03 -1.37774951e-04 -3.29747090e-04 -1.58824815e-04 -2.69138959e-05 -7.44624905e-04 4.18861158e-04 -1.50120025e-04 -7.88241731e-03 4.47145138e-03 -8.72159043e-03 1.92416159e-04 -1.64256895e-04 -4.41278956e-05 6.47988162e-03 4.07789392e-03 3.94386154e-03 -1.23324095e-04 5.25627773e-03 -5.01287669e-03 5.01417164e-03 -1.37774951e-04 -1.58824815e-04 -3.29747090e-04 2.69138959e-05 -7.44624905e-04 1.50120025e-04 -4.18861158e-04 -2.15728427e-03 2.15728427e-03 1.78094826e-05 -1.78094826e-05 -2.30094432e-05 2.30094432e-05 3.89423179e-05 -2.09120600e-06 -2.09120600e-06 -2.69138959e-05 2.69138959e-05 -8.49865950e-06 4.16848167e-05 4.16848167e-05 6.96401205e-03 -6.96401205e-03 -6.96401205e-03 5.76134452e-04 -5.76134452e-04 -5.76134452e-04 2.78703402e-02 1.70670281e-02 1.70670281e-02 5.74991859e-03 -2.20334385e-02 2.20334385e-02 -1.21596738e-03 -7.44624905e-04 -7.44624905e-04 -2.25860819e-03 9.61306618e-04 -9.61306618e-04 6.65332653e-03 6.82044689e-03 -9.29544937e-03 -2.19325430e-04 2.57202134e-05 2.41137503e-04 -8.34518149e-03 -5.10663990e-03 -5.25183836e-03 -1.91006991e-04 -6.78582537e-03 6.42752029e-03 -6.50712338e-03 2.58595459e-04 4.18861158e-04 1.50120025e-04 4.16848167e-05 9.61306618e-04 -5.80403562e-04 1.34231757e-04 -6.65332653e-03 9.29544937e-03 -6.82044689e-03 2.19325430e-04 -2.41137503e-04 -2.57202134e-05 8.34518149e-03 5.25183836e-03 5.10663990e-03 -1.91006991e-04 6.78582537e-03 -6.50712338e-03 6.42752029e-03 -2.58595459e-04 -1.50120025e-04 -4.18861158e-04 4.16848167e-05 -9.61306618e-04 1.34231757e-04 -5.80403562e-04 - 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 - 0 12 24 36 48 66 86 106 124 144 164 170 180 190 190 200 206 216 226 226 236 254 274 294 308 326 346 366 384 404 424 438 456 476 496 --1 1 -2 496 - 1.46471486e+00 2.54883877e-01 1.24590418e-01 -9.35884290e-03 -2.50681311e-01 2.31073552e-01 2.31073552e-01 -2.31073552e-01 4.55715201e-02 -9.09946312e-02 -9.09946312e-02 9.09946312e-02 2.54883877e-01 1.70428957e+00 -9.34218553e-02 1.65342489e-01 1.29637869e-01 -1.70706534e-01 -1.70706534e-01 1.70706534e-01 -4.68039666e-02 8.78615395e-02 8.78615395e-02 -8.78615395e-02 1.24590418e-01 -9.34218553e-02 1.88920782e-02 -1.20468125e-02 -3.43603397e-02 3.47760262e-02 3.47760262e-02 -3.47760262e-02 8.11017653e-03 -1.51409429e-02 -1.51409429e-02 1.51409429e-02 -9.35884290e-03 1.65342489e-01 -1.20468125e-02 1.72406024e-02 1.90677593e-02 -2.20810865e-02 -2.20810865e-02 2.20810865e-02 -5.48328334e-03 1.08124682e-02 1.08124682e-02 -1.08124682e-02 1.89517553e+00 9.95491140e-02 9.95491140e-02 -9.15785008e-03 -2.53788780e-03 -2.53788780e-03 -2.12388496e-02 -1.19719253e-02 -1.19719253e-02 -1.34997473e-02 -6.86525306e-04 6.86525306e-04 -2.22701900e-02 7.88241731e-03 7.88241731e-03 -6.96401205e-03 -6.65332653e-03 6.65332653e-03 9.95491140e-02 2.04211641e+00 -9.95491140e-02 -2.53788780e-03 -3.88804018e-03 2.53788780e-03 6.78853114e-03 1.78035242e-02 -3.65770659e-03 -9.88504715e-03 1.34997473e-02 6.08947863e-03 1.14201355e-02 -1.00868915e-02 8.24231853e-03 -4.47145138e-03 2.15728427e-03 6.96401205e-03 -6.20170953e-03 -9.29544937e-03 9.95491140e-02 -9.95491140e-02 2.04211641e+00 -2.53788780e-03 2.53788780e-03 -3.88804018e-03 6.78853114e-03 -3.65770659e-03 1.78035242e-02 9.88504715e-03 1.34997473e-02 -1.14201355e-02 -6.08947863e-03 -1.00868915e-02 -4.47145138e-03 8.24231853e-03 -2.15728427e-03 6.96401205e-03 9.29544937e-03 6.20170953e-03 -9.15785008e-03 -2.53788780e-03 -2.53788780e-03 1.79684460e-04 -7.82240681e-05 -7.82240681e-05 4.90771661e-03 3.05324736e-03 3.05324736e-03 3.98965718e-03 -3.80846317e-03 3.80846317e-03 -8.90983131e-05 -1.92416159e-04 -1.92416159e-04 -5.76134452e-04 2.19325430e-04 -2.19325430e-04 -2.53788780e-03 -3.88804018e-03 2.53788780e-03 -7.82240681e-05 2.17480352e-04 7.82240681e-05 -4.88057902e-03 -2.92726385e-03 -2.92421677e-03 8.16061087e-05 -3.98965718e-03 3.98374436e-03 -3.90840983e-03 2.91222329e-04 4.87887308e-05 1.64256895e-04 -1.78094826e-05 5.76134452e-04 -3.17373257e-05 2.41137503e-04 -2.53788780e-03 2.53788780e-03 -3.88804018e-03 -7.82240681e-05 7.82240681e-05 2.17480352e-04 -4.88057902e-03 -2.92421677e-03 -2.92726385e-03 -8.16061087e-05 -3.98965718e-03 3.90840983e-03 -3.98374436e-03 2.91222329e-04 1.64256895e-04 4.87887308e-05 1.78094826e-05 5.76134452e-04 -2.41137503e-04 3.17373257e-05 -2.50681311e-01 1.29637869e-01 -3.43603397e-02 1.90677593e-02 2.55642069e-01 -5.76016724e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 -8.69671403e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 -8.69671403e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 -2.31073552e-01 1.70706534e-01 -3.47760262e-02 2.20810865e-02 -8.69671403e-02 -8.69671403e-02 5.09104100e-01 3.81033730e-02 3.81033730e-02 -1.31876001e-01 4.55715201e-02 -4.68039666e-02 8.11017653e-03 -5.48328334e-03 -5.76016724e-02 1.36360519e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 1.70016634e-02 1.70016634e-02 -1.70016634e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 1.70016634e-02 1.70016634e-02 -1.70016634e-02 9.09946312e-02 -8.78615395e-02 1.51409429e-02 -1.08124682e-02 3.81033730e-02 3.81033730e-02 -1.31876001e-01 -1.70016634e-02 -1.70016634e-02 3.78321204e-02 -2.12388496e-02 6.78853114e-03 6.78853114e-03 4.90771661e-03 -4.88057902e-03 -4.88057902e-03 2.33614448e-01 1.42959316e-01 1.42959316e-01 1.89783463e-01 -1.84466621e-01 1.84466621e-01 -1.02868307e-02 -6.47988162e-03 -6.47988162e-03 -2.78703402e-02 8.34518149e-03 -8.34518149e-03 -1.19719253e-02 1.78035242e-02 -3.65770659e-03 3.05324736e-03 -2.92726385e-03 -2.92421677e-03 1.42959316e-01 8.78151758e-02 8.75173384e-02 -1.05433222e-04 1.16218161e-01 -1.12710131e-01 1.12926204e-01 -6.29096583e-03 -3.94138564e-03 -4.07789392e-03 2.30094432e-05 -1.70670281e-02 5.10344353e-03 -5.25183836e-03 -1.19719253e-02 -3.65770659e-03 1.78035242e-02 3.05324736e-03 -2.92421677e-03 -2.92726385e-03 1.42959316e-01 8.75173384e-02 8.78151758e-02 1.05433222e-04 1.16218161e-01 -1.12926204e-01 1.12710131e-01 -6.29096583e-03 -4.07789392e-03 -3.94138564e-03 -2.30094432e-05 -1.70670281e-02 5.25183836e-03 -5.10344353e-03 -9.88504715e-03 9.88504715e-03 8.16061087e-05 -8.16061087e-05 -1.05433222e-04 1.05433222e-04 1.78440391e-04 -9.58226514e-06 -9.58226514e-06 -1.23324095e-04 1.23324095e-04 -3.89423179e-05 1.91006991e-04 1.91006991e-04 -1.34997473e-02 1.34997473e-02 1.34997473e-02 3.98965718e-03 -3.98965718e-03 -3.98965718e-03 1.89783463e-01 1.16218161e-01 1.16218161e-01 3.67563826e-01 -1.50037001e-01 1.50037001e-01 -8.58346559e-03 -5.25627773e-03 -5.25627773e-03 -3.91967293e-02 6.78582537e-03 -6.78582537e-03 -6.86525306e-04 6.08947863e-03 -1.14201355e-02 -3.80846317e-03 3.98374436e-03 3.90840983e-03 -1.84466621e-01 -1.12710131e-01 -1.12926204e-01 -9.58226514e-06 -1.50037001e-01 1.46241269e-01 -1.45949895e-01 8.49151503e-03 5.01097526e-03 5.01287669e-03 2.09120600e-06 2.20334385e-02 -6.42339379e-03 6.50712338e-03 6.86525306e-04 1.14201355e-02 -6.08947863e-03 3.80846317e-03 -3.90840983e-03 -3.98374436e-03 1.84466621e-01 1.12926204e-01 1.12710131e-01 -9.58226514e-06 1.50037001e-01 -1.45949895e-01 1.46241269e-01 -8.49151503e-03 -5.01287669e-03 -5.01097526e-03 2.09120600e-06 -2.20334385e-02 6.50712338e-03 -6.42339379e-03 -2.22701900e-02 -1.00868915e-02 -1.00868915e-02 -8.90983131e-05 2.91222329e-04 2.91222329e-04 -1.02868307e-02 -6.29096583e-03 -6.29096583e-03 -8.58346559e-03 8.49151503e-03 -8.49151503e-03 9.59486559e-04 1.37774951e-04 1.37774951e-04 1.21596738e-03 -2.58595459e-04 2.58595459e-04 7.88241731e-03 8.24231853e-03 -4.47145138e-03 -1.92416159e-04 4.87887308e-05 1.64256895e-04 -6.47988162e-03 -3.94138564e-03 -4.07789392e-03 -1.23324095e-04 -5.25627773e-03 5.01097526e-03 -5.01287669e-03 1.37774951e-04 3.30152350e-04 1.58824815e-04 2.69138959e-05 7.44624905e-04 -4.19384346e-04 1.50120025e-04 7.88241731e-03 -4.47145138e-03 8.24231853e-03 -1.92416159e-04 1.64256895e-04 4.87887308e-05 -6.47988162e-03 -4.07789392e-03 -3.94138564e-03 1.23324095e-04 -5.25627773e-03 5.01287669e-03 -5.01097526e-03 1.37774951e-04 1.58824815e-04 3.30152350e-04 -2.69138959e-05 7.44624905e-04 -1.50120025e-04 4.19384346e-04 2.15728427e-03 -2.15728427e-03 -1.78094826e-05 1.78094826e-05 2.30094432e-05 -2.30094432e-05 -3.89423179e-05 2.09120600e-06 2.09120600e-06 2.69138959e-05 -2.69138959e-05 8.49865950e-06 -4.16848167e-05 -4.16848167e-05 -6.96401205e-03 6.96401205e-03 6.96401205e-03 -5.76134452e-04 5.76134452e-04 5.76134452e-04 -2.78703402e-02 -1.70670281e-02 -1.70670281e-02 -3.91967293e-02 2.20334385e-02 -2.20334385e-02 1.21596738e-03 7.44624905e-04 7.44624905e-04 4.88351268e-03 -9.61306618e-04 9.61306618e-04 -6.65332653e-03 -6.20170953e-03 9.29544937e-03 2.19325430e-04 -3.17373257e-05 -2.41137503e-04 8.34518149e-03 5.10344353e-03 5.25183836e-03 1.91006991e-04 6.78582537e-03 -6.42339379e-03 6.50712338e-03 -2.58595459e-04 -4.19384346e-04 -1.50120025e-04 -4.16848167e-05 -9.61306618e-04 5.81078995e-04 -1.34231757e-04 6.65332653e-03 -9.29544937e-03 6.20170953e-03 -2.19325430e-04 2.41137503e-04 3.17373257e-05 -8.34518149e-03 -5.25183836e-03 -5.10344353e-03 1.91006991e-04 -6.78582537e-03 6.50712338e-03 -6.42339379e-03 2.58595459e-04 1.50120025e-04 4.19384346e-04 -4.16848167e-05 9.61306618e-04 -1.34231757e-04 5.81078995e-04 - 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 - 0 12 24 36 48 66 86 106 124 144 164 170 180 190 190 200 206 216 226 226 236 254 274 294 308 326 346 366 384 404 424 438 456 476 496 --1 1 -1 496 - -4.46730500e-01 2.90265885e-01 -6.65919095e-02 3.20736205e-02 -2.50681311e-01 -2.31073552e-01 -2.31073552e-01 2.31073552e-01 4.55715201e-02 9.09946312e-02 9.09946312e-02 -9.09946312e-02 2.90265885e-01 -7.77208948e-02 3.49623849e-02 -1.81562170e-02 1.29637869e-01 1.70706534e-01 1.70706534e-01 -1.70706534e-01 -4.68039666e-02 -8.78615395e-02 -8.78615395e-02 8.78615395e-02 -6.65919095e-02 3.49623849e-02 -8.97965282e-03 4.90391018e-03 -3.43603397e-02 -3.47760262e-02 -3.47760262e-02 3.47760262e-02 8.11017653e-03 1.51409429e-02 1.51409429e-02 -1.51409429e-02 3.20736205e-02 -1.81562170e-02 4.90391018e-03 -2.40214415e-03 1.90677593e-02 2.20810865e-02 2.20810865e-02 -2.20810865e-02 -5.48328334e-03 -1.08124682e-02 -1.08124682e-02 1.08124682e-02 -9.61307016e-02 -9.95491140e-02 -9.95491140e-02 3.84928096e-03 2.53788780e-03 2.53788780e-03 4.96626145e-03 1.19719253e-02 1.19719253e-02 1.34997473e-02 6.86525306e-04 -6.86525306e-04 7.75107441e-03 -7.88241731e-03 -7.88241731e-03 6.96401205e-03 6.65332653e-03 -6.65332653e-03 -9.95491140e-02 5.08101702e-02 9.95491140e-02 2.53788780e-03 9.11909087e-03 -2.53788780e-03 -6.78853114e-03 1.75623651e-03 3.65770659e-03 9.88504715e-03 -1.34997473e-02 2.68064379e-02 -1.14201355e-02 1.00868915e-02 -1.01418763e-02 4.47145138e-03 -2.15728427e-03 -6.96401205e-03 1.75321839e-02 9.29544937e-03 -9.95491140e-02 9.95491140e-02 5.08101702e-02 2.53788780e-03 -2.53788780e-03 9.11909087e-03 -6.78853114e-03 3.65770659e-03 1.75623651e-03 -9.88504715e-03 -1.34997473e-02 1.14201355e-02 -2.68064379e-02 1.00868915e-02 4.47145138e-03 -1.01418763e-02 2.15728427e-03 -6.96401205e-03 -9.29544937e-03 -1.75321839e-02 3.84928096e-03 2.53788780e-03 2.53788780e-03 -1.26047298e-04 7.82240681e-05 7.82240681e-05 -4.95769243e-03 -3.05324736e-03 -3.05324736e-03 -3.98965718e-03 3.80846317e-03 -3.80846317e-03 7.89606128e-05 1.92416159e-04 1.92416159e-04 5.76134452e-04 -2.19325430e-04 2.19325430e-04 2.53788780e-03 9.11909087e-03 -2.53788780e-03 7.82240681e-05 -8.82514067e-05 -7.82240681e-05 4.88057902e-03 3.11404071e-03 2.92421677e-03 -8.16061087e-05 3.98965718e-03 -3.81554628e-03 3.90840983e-03 -2.91222329e-04 -5.41259230e-05 -1.64256895e-04 1.78094826e-05 -5.76134452e-04 1.01124921e-04 -2.41137503e-04 2.53788780e-03 -2.53788780e-03 9.11909087e-03 7.82240681e-05 -7.82240681e-05 -8.82514067e-05 4.88057902e-03 2.92421677e-03 3.11404071e-03 8.16061087e-05 3.98965718e-03 -3.90840983e-03 3.81554628e-03 -2.91222329e-04 -1.64256895e-04 -5.41259230e-05 -1.78094826e-05 -5.76134452e-04 2.41137503e-04 -1.01124921e-04 -2.50681311e-01 1.29637869e-01 -3.43603397e-02 1.90677593e-02 2.55642069e-01 -5.76016724e-02 -2.31073552e-01 1.70706534e-01 -3.47760262e-02 2.20810865e-02 -8.69671403e-02 -8.69671403e-02 8.69671403e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 -2.31073552e-01 1.70706534e-01 -3.47760262e-02 2.20810865e-02 -8.69671403e-02 -8.69671403e-02 8.69671403e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 3.35169819e-01 -3.81033730e-02 -3.81033730e-02 -5.56692551e-02 4.55715201e-02 -4.68039666e-02 8.11017653e-03 -5.48328334e-03 -5.76016724e-02 1.36360519e-02 9.09946312e-02 -8.78615395e-02 1.51409429e-02 -1.08124682e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 -1.70016634e-02 -1.70016634e-02 1.70016634e-02 9.09946312e-02 -8.78615395e-02 1.51409429e-02 -1.08124682e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 -1.70016634e-02 -1.70016634e-02 1.70016634e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 -5.56692551e-02 1.70016634e-02 1.70016634e-02 3.82879364e-03 4.96626145e-03 -6.78853114e-03 -6.78853114e-03 -4.95769243e-03 4.88057902e-03 4.88057902e-03 -2.33214382e-01 -1.42959316e-01 -1.42959316e-01 -1.89783463e-01 1.84466621e-01 -1.84466621e-01 1.05548787e-02 6.47988162e-03 6.47988162e-03 2.78703402e-02 -8.34518149e-03 8.34518149e-03 1.19719253e-02 1.75623651e-03 3.65770659e-03 -3.05324736e-03 3.11404071e-03 2.92421677e-03 -1.42959316e-01 -8.74686860e-02 -8.75173384e-02 1.05433222e-04 -1.16218161e-01 1.13119631e-01 -1.12926204e-01 6.29096583e-03 3.92293329e-03 4.07789392e-03 -2.30094432e-05 1.70670281e-02 -4.94879992e-03 5.25183836e-03 1.19719253e-02 3.65770659e-03 1.75623651e-03 -3.05324736e-03 2.92421677e-03 3.11404071e-03 -1.42959316e-01 -8.75173384e-02 -8.74686860e-02 -1.05433222e-04 -1.16218161e-01 1.12926204e-01 -1.13119631e-01 6.29096583e-03 4.07789392e-03 3.92293329e-03 2.30094432e-05 1.70670281e-02 -5.25183836e-03 4.94879992e-03 9.88504715e-03 -9.88504715e-03 -8.16061087e-05 8.16061087e-05 1.05433222e-04 -1.05433222e-04 -1.78440391e-04 9.58226514e-06 9.58226514e-06 1.23324095e-04 -1.23324095e-04 3.89423179e-05 -1.91006991e-04 -1.91006991e-04 1.34997473e-02 -1.34997473e-02 -1.34997473e-02 -3.98965718e-03 3.98965718e-03 3.98965718e-03 -1.89783463e-01 -1.16218161e-01 -1.16218161e-01 5.86189719e-02 1.50037001e-01 -1.50037001e-01 8.58346559e-03 5.25627773e-03 5.25627773e-03 5.74991859e-03 -6.78582537e-03 6.78582537e-03 6.86525306e-04 2.68064379e-02 1.14201355e-02 3.80846317e-03 -3.81554628e-03 -3.90840983e-03 1.84466621e-01 1.13119631e-01 1.12926204e-01 9.58226514e-06 1.50037001e-01 -1.45660580e-01 1.45949895e-01 -8.49151503e-03 -5.04126819e-03 -5.01287669e-03 -2.09120600e-06 -2.20334385e-02 6.63188133e-03 -6.50712338e-03 -6.86525306e-04 -1.14201355e-02 -2.68064379e-02 -3.80846317e-03 3.90840983e-03 3.81554628e-03 -1.84466621e-01 -1.12926204e-01 -1.13119631e-01 9.58226514e-06 -1.50037001e-01 1.45949895e-01 -1.45660580e-01 8.49151503e-03 5.01287669e-03 5.04126819e-03 -2.09120600e-06 2.20334385e-02 -6.50712338e-03 6.63188133e-03 7.75107441e-03 1.00868915e-02 1.00868915e-02 7.89606128e-05 -2.91222329e-04 -2.91222329e-04 1.05548787e-02 6.29096583e-03 6.29096583e-03 8.58346559e-03 -8.49151503e-03 8.49151503e-03 -7.68391652e-04 -1.37774951e-04 -1.37774951e-04 -1.21596738e-03 2.58595459e-04 -2.58595459e-04 -7.88241731e-03 -1.01418763e-02 4.47145138e-03 1.92416159e-04 -5.41259230e-05 -1.64256895e-04 6.47988162e-03 3.92293329e-03 4.07789392e-03 1.23324095e-04 5.25627773e-03 -5.04126819e-03 5.01287669e-03 -1.37774951e-04 -3.28425304e-04 -1.58824815e-04 -2.69138959e-05 -7.44624905e-04 4.08892304e-04 -1.50120025e-04 -7.88241731e-03 4.47145138e-03 -1.01418763e-02 1.92416159e-04 -1.64256895e-04 -5.41259230e-05 6.47988162e-03 4.07789392e-03 3.92293329e-03 -1.23324095e-04 5.25627773e-03 -5.01287669e-03 5.04126819e-03 -1.37774951e-04 -1.58824815e-04 -3.28425304e-04 2.69138959e-05 -7.44624905e-04 1.50120025e-04 -4.08892304e-04 -2.15728427e-03 2.15728427e-03 1.78094826e-05 -1.78094826e-05 -2.30094432e-05 2.30094432e-05 3.89423179e-05 -2.09120600e-06 -2.09120600e-06 -2.69138959e-05 2.69138959e-05 -8.49865950e-06 4.16848167e-05 4.16848167e-05 6.96401205e-03 -6.96401205e-03 -6.96401205e-03 5.76134452e-04 -5.76134452e-04 -5.76134452e-04 2.78703402e-02 1.70670281e-02 1.70670281e-02 5.74991859e-03 -2.20334385e-02 2.20334385e-02 -1.21596738e-03 -7.44624905e-04 -7.44624905e-04 -2.25860819e-03 9.61306618e-04 -9.61306618e-04 6.65332653e-03 1.75321839e-02 -9.29544937e-03 -2.19325430e-04 1.01124921e-04 2.41137503e-04 -8.34518149e-03 -4.94879992e-03 -5.25183836e-03 -1.91006991e-04 -6.78582537e-03 6.63188133e-03 -6.50712338e-03 2.58595459e-04 4.08892304e-04 1.50120025e-04 4.16848167e-05 9.61306618e-04 -5.05218881e-04 1.34231757e-04 -6.65332653e-03 9.29544937e-03 -1.75321839e-02 2.19325430e-04 -2.41137503e-04 -1.01124921e-04 8.34518149e-03 5.25183836e-03 4.94879992e-03 -1.91006991e-04 6.78582537e-03 -6.50712338e-03 6.63188133e-03 -2.58595459e-04 -1.50120025e-04 -4.08892304e-04 4.16848167e-05 -9.61306618e-04 1.34231757e-04 -5.05218881e-04 - 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 - 0 12 24 36 48 66 86 106 124 144 164 170 180 190 190 200 206 216 226 226 236 254 274 294 308 326 346 366 384 404 424 438 456 476 496 --1 1 0 496 - 1.46471486e+00 2.54883877e-01 1.24590418e-01 -9.35884290e-03 -2.50681311e-01 2.31073552e-01 2.31073552e-01 -2.31073552e-01 4.55715201e-02 -9.09946312e-02 -9.09946312e-02 9.09946312e-02 2.54883877e-01 1.70428957e+00 -9.34218553e-02 1.65342489e-01 1.29637869e-01 -1.70706534e-01 -1.70706534e-01 1.70706534e-01 -4.68039666e-02 8.78615395e-02 8.78615395e-02 -8.78615395e-02 1.24590418e-01 -9.34218553e-02 1.88920782e-02 -1.20468125e-02 -3.43603397e-02 3.47760262e-02 3.47760262e-02 -3.47760262e-02 8.11017653e-03 -1.51409429e-02 -1.51409429e-02 1.51409429e-02 -9.35884290e-03 1.65342489e-01 -1.20468125e-02 1.72406024e-02 1.90677593e-02 -2.20810865e-02 -2.20810865e-02 2.20810865e-02 -5.48328334e-03 1.08124682e-02 1.08124682e-02 -1.08124682e-02 1.89517553e+00 9.95491140e-02 9.95491140e-02 -9.15785008e-03 -2.53788780e-03 -2.53788780e-03 -2.12388496e-02 -1.19719253e-02 -1.19719253e-02 -1.34997473e-02 -6.86525306e-04 6.86525306e-04 -2.22701900e-02 7.88241731e-03 7.88241731e-03 -6.96401205e-03 -6.65332653e-03 6.65332653e-03 9.95491140e-02 2.04211641e+00 -9.95491140e-02 -2.53788780e-03 -3.88804018e-03 2.53788780e-03 6.78853114e-03 1.78035242e-02 -3.65770659e-03 -9.88504715e-03 1.34997473e-02 6.08947863e-03 1.14201355e-02 -1.00868915e-02 8.24231853e-03 -4.47145138e-03 2.15728427e-03 6.96401205e-03 -6.20170953e-03 -9.29544937e-03 9.95491140e-02 -9.95491140e-02 2.04211641e+00 -2.53788780e-03 2.53788780e-03 -3.88804018e-03 6.78853114e-03 -3.65770659e-03 1.78035242e-02 9.88504715e-03 1.34997473e-02 -1.14201355e-02 -6.08947863e-03 -1.00868915e-02 -4.47145138e-03 8.24231853e-03 -2.15728427e-03 6.96401205e-03 9.29544937e-03 6.20170953e-03 -9.15785008e-03 -2.53788780e-03 -2.53788780e-03 1.79684460e-04 -7.82240681e-05 -7.82240681e-05 4.90771661e-03 3.05324736e-03 3.05324736e-03 3.98965718e-03 -3.80846317e-03 3.80846317e-03 -8.90983131e-05 -1.92416159e-04 -1.92416159e-04 -5.76134452e-04 2.19325430e-04 -2.19325430e-04 -2.53788780e-03 -3.88804018e-03 2.53788780e-03 -7.82240681e-05 2.17480352e-04 7.82240681e-05 -4.88057902e-03 -2.92726385e-03 -2.92421677e-03 8.16061087e-05 -3.98965718e-03 3.98374436e-03 -3.90840983e-03 2.91222329e-04 4.87887308e-05 1.64256895e-04 -1.78094826e-05 5.76134452e-04 -3.17373257e-05 2.41137503e-04 -2.53788780e-03 2.53788780e-03 -3.88804018e-03 -7.82240681e-05 7.82240681e-05 2.17480352e-04 -4.88057902e-03 -2.92421677e-03 -2.92726385e-03 -8.16061087e-05 -3.98965718e-03 3.90840983e-03 -3.98374436e-03 2.91222329e-04 1.64256895e-04 4.87887308e-05 1.78094826e-05 5.76134452e-04 -2.41137503e-04 3.17373257e-05 -2.50681311e-01 1.29637869e-01 -3.43603397e-02 1.90677593e-02 2.55642069e-01 -5.76016724e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 -8.69671403e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 -8.69671403e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 -2.31073552e-01 1.70706534e-01 -3.47760262e-02 2.20810865e-02 -8.69671403e-02 -8.69671403e-02 5.09104100e-01 3.81033730e-02 3.81033730e-02 -1.31876001e-01 4.55715201e-02 -4.68039666e-02 8.11017653e-03 -5.48328334e-03 -5.76016724e-02 1.36360519e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 1.70016634e-02 1.70016634e-02 -1.70016634e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 1.70016634e-02 1.70016634e-02 -1.70016634e-02 9.09946312e-02 -8.78615395e-02 1.51409429e-02 -1.08124682e-02 3.81033730e-02 3.81033730e-02 -1.31876001e-01 -1.70016634e-02 -1.70016634e-02 3.78321204e-02 -2.12388496e-02 6.78853114e-03 6.78853114e-03 4.90771661e-03 -4.88057902e-03 -4.88057902e-03 2.33614448e-01 1.42959316e-01 1.42959316e-01 1.89783463e-01 -1.84466621e-01 1.84466621e-01 -1.02868307e-02 -6.47988162e-03 -6.47988162e-03 -2.78703402e-02 8.34518149e-03 -8.34518149e-03 -1.19719253e-02 1.78035242e-02 -3.65770659e-03 3.05324736e-03 -2.92726385e-03 -2.92421677e-03 1.42959316e-01 8.78151758e-02 8.75173384e-02 -1.05433222e-04 1.16218161e-01 -1.12710131e-01 1.12926204e-01 -6.29096583e-03 -3.94138564e-03 -4.07789392e-03 2.30094432e-05 -1.70670281e-02 5.10344353e-03 -5.25183836e-03 -1.19719253e-02 -3.65770659e-03 1.78035242e-02 3.05324736e-03 -2.92421677e-03 -2.92726385e-03 1.42959316e-01 8.75173384e-02 8.78151758e-02 1.05433222e-04 1.16218161e-01 -1.12926204e-01 1.12710131e-01 -6.29096583e-03 -4.07789392e-03 -3.94138564e-03 -2.30094432e-05 -1.70670281e-02 5.25183836e-03 -5.10344353e-03 -9.88504715e-03 9.88504715e-03 8.16061087e-05 -8.16061087e-05 -1.05433222e-04 1.05433222e-04 1.78440391e-04 -9.58226514e-06 -9.58226514e-06 -1.23324095e-04 1.23324095e-04 -3.89423179e-05 1.91006991e-04 1.91006991e-04 -1.34997473e-02 1.34997473e-02 1.34997473e-02 3.98965718e-03 -3.98965718e-03 -3.98965718e-03 1.89783463e-01 1.16218161e-01 1.16218161e-01 3.67563826e-01 -1.50037001e-01 1.50037001e-01 -8.58346559e-03 -5.25627773e-03 -5.25627773e-03 -3.91967293e-02 6.78582537e-03 -6.78582537e-03 -6.86525306e-04 6.08947863e-03 -1.14201355e-02 -3.80846317e-03 3.98374436e-03 3.90840983e-03 -1.84466621e-01 -1.12710131e-01 -1.12926204e-01 -9.58226514e-06 -1.50037001e-01 1.46241269e-01 -1.45949895e-01 8.49151503e-03 5.01097526e-03 5.01287669e-03 2.09120600e-06 2.20334385e-02 -6.42339379e-03 6.50712338e-03 6.86525306e-04 1.14201355e-02 -6.08947863e-03 3.80846317e-03 -3.90840983e-03 -3.98374436e-03 1.84466621e-01 1.12926204e-01 1.12710131e-01 -9.58226514e-06 1.50037001e-01 -1.45949895e-01 1.46241269e-01 -8.49151503e-03 -5.01287669e-03 -5.01097526e-03 2.09120600e-06 -2.20334385e-02 6.50712338e-03 -6.42339379e-03 -2.22701900e-02 -1.00868915e-02 -1.00868915e-02 -8.90983131e-05 2.91222329e-04 2.91222329e-04 -1.02868307e-02 -6.29096583e-03 -6.29096583e-03 -8.58346559e-03 8.49151503e-03 -8.49151503e-03 9.59486559e-04 1.37774951e-04 1.37774951e-04 1.21596738e-03 -2.58595459e-04 2.58595459e-04 7.88241731e-03 8.24231853e-03 -4.47145138e-03 -1.92416159e-04 4.87887308e-05 1.64256895e-04 -6.47988162e-03 -3.94138564e-03 -4.07789392e-03 -1.23324095e-04 -5.25627773e-03 5.01097526e-03 -5.01287669e-03 1.37774951e-04 3.30152350e-04 1.58824815e-04 2.69138959e-05 7.44624905e-04 -4.19384346e-04 1.50120025e-04 7.88241731e-03 -4.47145138e-03 8.24231853e-03 -1.92416159e-04 1.64256895e-04 4.87887308e-05 -6.47988162e-03 -4.07789392e-03 -3.94138564e-03 1.23324095e-04 -5.25627773e-03 5.01287669e-03 -5.01097526e-03 1.37774951e-04 1.58824815e-04 3.30152350e-04 -2.69138959e-05 7.44624905e-04 -1.50120025e-04 4.19384346e-04 2.15728427e-03 -2.15728427e-03 -1.78094826e-05 1.78094826e-05 2.30094432e-05 -2.30094432e-05 -3.89423179e-05 2.09120600e-06 2.09120600e-06 2.69138959e-05 -2.69138959e-05 8.49865950e-06 -4.16848167e-05 -4.16848167e-05 -6.96401205e-03 6.96401205e-03 6.96401205e-03 -5.76134452e-04 5.76134452e-04 5.76134452e-04 -2.78703402e-02 -1.70670281e-02 -1.70670281e-02 -3.91967293e-02 2.20334385e-02 -2.20334385e-02 1.21596738e-03 7.44624905e-04 7.44624905e-04 4.88351268e-03 -9.61306618e-04 9.61306618e-04 -6.65332653e-03 -6.20170953e-03 9.29544937e-03 2.19325430e-04 -3.17373257e-05 -2.41137503e-04 8.34518149e-03 5.10344353e-03 5.25183836e-03 1.91006991e-04 6.78582537e-03 -6.42339379e-03 6.50712338e-03 -2.58595459e-04 -4.19384346e-04 -1.50120025e-04 -4.16848167e-05 -9.61306618e-04 5.81078995e-04 -1.34231757e-04 6.65332653e-03 -9.29544937e-03 6.20170953e-03 -2.19325430e-04 2.41137503e-04 3.17373257e-05 -8.34518149e-03 -5.25183836e-03 -5.10344353e-03 1.91006991e-04 -6.78582537e-03 6.50712338e-03 -6.42339379e-03 2.58595459e-04 1.50120025e-04 4.19384346e-04 -4.16848167e-05 9.61306618e-04 -1.34231757e-04 5.81078995e-04 - 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 - 0 12 24 36 48 66 86 106 124 144 164 170 180 190 190 200 206 216 226 226 236 254 274 294 308 326 346 366 384 404 424 438 456 476 496 --1 1 1 496 - -4.46730500e-01 2.90265885e-01 -6.65919095e-02 3.20736205e-02 -2.50681311e-01 -2.31073552e-01 -2.31073552e-01 2.31073552e-01 4.55715201e-02 9.09946312e-02 9.09946312e-02 -9.09946312e-02 2.90265885e-01 -7.77208948e-02 3.49623849e-02 -1.81562170e-02 1.29637869e-01 1.70706534e-01 1.70706534e-01 -1.70706534e-01 -4.68039666e-02 -8.78615395e-02 -8.78615395e-02 8.78615395e-02 -6.65919095e-02 3.49623849e-02 -8.97965282e-03 4.90391018e-03 -3.43603397e-02 -3.47760262e-02 -3.47760262e-02 3.47760262e-02 8.11017653e-03 1.51409429e-02 1.51409429e-02 -1.51409429e-02 3.20736205e-02 -1.81562170e-02 4.90391018e-03 -2.40214415e-03 1.90677593e-02 2.20810865e-02 2.20810865e-02 -2.20810865e-02 -5.48328334e-03 -1.08124682e-02 -1.08124682e-02 1.08124682e-02 -9.61307016e-02 -9.95491140e-02 -9.95491140e-02 3.84928096e-03 2.53788780e-03 2.53788780e-03 4.96626145e-03 1.19719253e-02 1.19719253e-02 1.34997473e-02 6.86525306e-04 -6.86525306e-04 7.75107441e-03 -7.88241731e-03 -7.88241731e-03 6.96401205e-03 6.65332653e-03 -6.65332653e-03 -9.95491140e-02 5.08101702e-02 9.95491140e-02 2.53788780e-03 9.11909087e-03 -2.53788780e-03 -6.78853114e-03 1.75623651e-03 3.65770659e-03 9.88504715e-03 -1.34997473e-02 2.68064379e-02 -1.14201355e-02 1.00868915e-02 -1.01418763e-02 4.47145138e-03 -2.15728427e-03 -6.96401205e-03 1.75321839e-02 9.29544937e-03 -9.95491140e-02 9.95491140e-02 5.08101702e-02 2.53788780e-03 -2.53788780e-03 9.11909087e-03 -6.78853114e-03 3.65770659e-03 1.75623651e-03 -9.88504715e-03 -1.34997473e-02 1.14201355e-02 -2.68064379e-02 1.00868915e-02 4.47145138e-03 -1.01418763e-02 2.15728427e-03 -6.96401205e-03 -9.29544937e-03 -1.75321839e-02 3.84928096e-03 2.53788780e-03 2.53788780e-03 -1.26047298e-04 7.82240681e-05 7.82240681e-05 -4.95769243e-03 -3.05324736e-03 -3.05324736e-03 -3.98965718e-03 3.80846317e-03 -3.80846317e-03 7.89606128e-05 1.92416159e-04 1.92416159e-04 5.76134452e-04 -2.19325430e-04 2.19325430e-04 2.53788780e-03 9.11909087e-03 -2.53788780e-03 7.82240681e-05 -8.82514067e-05 -7.82240681e-05 4.88057902e-03 3.11404071e-03 2.92421677e-03 -8.16061087e-05 3.98965718e-03 -3.81554628e-03 3.90840983e-03 -2.91222329e-04 -5.41259230e-05 -1.64256895e-04 1.78094826e-05 -5.76134452e-04 1.01124921e-04 -2.41137503e-04 2.53788780e-03 -2.53788780e-03 9.11909087e-03 7.82240681e-05 -7.82240681e-05 -8.82514067e-05 4.88057902e-03 2.92421677e-03 3.11404071e-03 8.16061087e-05 3.98965718e-03 -3.90840983e-03 3.81554628e-03 -2.91222329e-04 -1.64256895e-04 -5.41259230e-05 -1.78094826e-05 -5.76134452e-04 2.41137503e-04 -1.01124921e-04 -2.50681311e-01 1.29637869e-01 -3.43603397e-02 1.90677593e-02 2.55642069e-01 -5.76016724e-02 -2.31073552e-01 1.70706534e-01 -3.47760262e-02 2.20810865e-02 -8.69671403e-02 -8.69671403e-02 8.69671403e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 -2.31073552e-01 1.70706534e-01 -3.47760262e-02 2.20810865e-02 -8.69671403e-02 -8.69671403e-02 8.69671403e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 3.35169819e-01 -3.81033730e-02 -3.81033730e-02 -5.56692551e-02 4.55715201e-02 -4.68039666e-02 8.11017653e-03 -5.48328334e-03 -5.76016724e-02 1.36360519e-02 9.09946312e-02 -8.78615395e-02 1.51409429e-02 -1.08124682e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 -1.70016634e-02 -1.70016634e-02 1.70016634e-02 9.09946312e-02 -8.78615395e-02 1.51409429e-02 -1.08124682e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 -1.70016634e-02 -1.70016634e-02 1.70016634e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 -5.56692551e-02 1.70016634e-02 1.70016634e-02 3.82879364e-03 4.96626145e-03 -6.78853114e-03 -6.78853114e-03 -4.95769243e-03 4.88057902e-03 4.88057902e-03 -2.33214382e-01 -1.42959316e-01 -1.42959316e-01 -1.89783463e-01 1.84466621e-01 -1.84466621e-01 1.05548787e-02 6.47988162e-03 6.47988162e-03 2.78703402e-02 -8.34518149e-03 8.34518149e-03 1.19719253e-02 1.75623651e-03 3.65770659e-03 -3.05324736e-03 3.11404071e-03 2.92421677e-03 -1.42959316e-01 -8.74686860e-02 -8.75173384e-02 1.05433222e-04 -1.16218161e-01 1.13119631e-01 -1.12926204e-01 6.29096583e-03 3.92293329e-03 4.07789392e-03 -2.30094432e-05 1.70670281e-02 -4.94879992e-03 5.25183836e-03 1.19719253e-02 3.65770659e-03 1.75623651e-03 -3.05324736e-03 2.92421677e-03 3.11404071e-03 -1.42959316e-01 -8.75173384e-02 -8.74686860e-02 -1.05433222e-04 -1.16218161e-01 1.12926204e-01 -1.13119631e-01 6.29096583e-03 4.07789392e-03 3.92293329e-03 2.30094432e-05 1.70670281e-02 -5.25183836e-03 4.94879992e-03 9.88504715e-03 -9.88504715e-03 -8.16061087e-05 8.16061087e-05 1.05433222e-04 -1.05433222e-04 -1.78440391e-04 9.58226514e-06 9.58226514e-06 1.23324095e-04 -1.23324095e-04 3.89423179e-05 -1.91006991e-04 -1.91006991e-04 1.34997473e-02 -1.34997473e-02 -1.34997473e-02 -3.98965718e-03 3.98965718e-03 3.98965718e-03 -1.89783463e-01 -1.16218161e-01 -1.16218161e-01 5.86189719e-02 1.50037001e-01 -1.50037001e-01 8.58346559e-03 5.25627773e-03 5.25627773e-03 5.74991859e-03 -6.78582537e-03 6.78582537e-03 6.86525306e-04 2.68064379e-02 1.14201355e-02 3.80846317e-03 -3.81554628e-03 -3.90840983e-03 1.84466621e-01 1.13119631e-01 1.12926204e-01 9.58226514e-06 1.50037001e-01 -1.45660580e-01 1.45949895e-01 -8.49151503e-03 -5.04126819e-03 -5.01287669e-03 -2.09120600e-06 -2.20334385e-02 6.63188133e-03 -6.50712338e-03 -6.86525306e-04 -1.14201355e-02 -2.68064379e-02 -3.80846317e-03 3.90840983e-03 3.81554628e-03 -1.84466621e-01 -1.12926204e-01 -1.13119631e-01 9.58226514e-06 -1.50037001e-01 1.45949895e-01 -1.45660580e-01 8.49151503e-03 5.01287669e-03 5.04126819e-03 -2.09120600e-06 2.20334385e-02 -6.50712338e-03 6.63188133e-03 7.75107441e-03 1.00868915e-02 1.00868915e-02 7.89606128e-05 -2.91222329e-04 -2.91222329e-04 1.05548787e-02 6.29096583e-03 6.29096583e-03 8.58346559e-03 -8.49151503e-03 8.49151503e-03 -7.68391652e-04 -1.37774951e-04 -1.37774951e-04 -1.21596738e-03 2.58595459e-04 -2.58595459e-04 -7.88241731e-03 -1.01418763e-02 4.47145138e-03 1.92416159e-04 -5.41259230e-05 -1.64256895e-04 6.47988162e-03 3.92293329e-03 4.07789392e-03 1.23324095e-04 5.25627773e-03 -5.04126819e-03 5.01287669e-03 -1.37774951e-04 -3.28425304e-04 -1.58824815e-04 -2.69138959e-05 -7.44624905e-04 4.08892304e-04 -1.50120025e-04 -7.88241731e-03 4.47145138e-03 -1.01418763e-02 1.92416159e-04 -1.64256895e-04 -5.41259230e-05 6.47988162e-03 4.07789392e-03 3.92293329e-03 -1.23324095e-04 5.25627773e-03 -5.01287669e-03 5.04126819e-03 -1.37774951e-04 -1.58824815e-04 -3.28425304e-04 2.69138959e-05 -7.44624905e-04 1.50120025e-04 -4.08892304e-04 -2.15728427e-03 2.15728427e-03 1.78094826e-05 -1.78094826e-05 -2.30094432e-05 2.30094432e-05 3.89423179e-05 -2.09120600e-06 -2.09120600e-06 -2.69138959e-05 2.69138959e-05 -8.49865950e-06 4.16848167e-05 4.16848167e-05 6.96401205e-03 -6.96401205e-03 -6.96401205e-03 5.76134452e-04 -5.76134452e-04 -5.76134452e-04 2.78703402e-02 1.70670281e-02 1.70670281e-02 5.74991859e-03 -2.20334385e-02 2.20334385e-02 -1.21596738e-03 -7.44624905e-04 -7.44624905e-04 -2.25860819e-03 9.61306618e-04 -9.61306618e-04 6.65332653e-03 1.75321839e-02 -9.29544937e-03 -2.19325430e-04 1.01124921e-04 2.41137503e-04 -8.34518149e-03 -4.94879992e-03 -5.25183836e-03 -1.91006991e-04 -6.78582537e-03 6.63188133e-03 -6.50712338e-03 2.58595459e-04 4.08892304e-04 1.50120025e-04 4.16848167e-05 9.61306618e-04 -5.05218881e-04 1.34231757e-04 -6.65332653e-03 9.29544937e-03 -1.75321839e-02 2.19325430e-04 -2.41137503e-04 -1.01124921e-04 8.34518149e-03 5.25183836e-03 4.94879992e-03 -1.91006991e-04 6.78582537e-03 -6.50712338e-03 6.63188133e-03 -2.58595459e-04 -1.50120025e-04 -4.08892304e-04 4.16848167e-05 -9.61306618e-04 1.34231757e-04 -5.05218881e-04 - 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 - 0 12 24 36 48 66 86 106 124 144 164 170 180 190 190 200 206 216 226 226 236 254 274 294 308 326 346 366 384 404 424 438 456 476 496 --1 1 2 496 - 1.46471486e+00 2.54883877e-01 1.24590418e-01 -9.35884290e-03 -2.50681311e-01 2.31073552e-01 2.31073552e-01 -2.31073552e-01 4.55715201e-02 -9.09946312e-02 -9.09946312e-02 9.09946312e-02 2.54883877e-01 1.70428957e+00 -9.34218553e-02 1.65342489e-01 1.29637869e-01 -1.70706534e-01 -1.70706534e-01 1.70706534e-01 -4.68039666e-02 8.78615395e-02 8.78615395e-02 -8.78615395e-02 1.24590418e-01 -9.34218553e-02 1.88920782e-02 -1.20468125e-02 -3.43603397e-02 3.47760262e-02 3.47760262e-02 -3.47760262e-02 8.11017653e-03 -1.51409429e-02 -1.51409429e-02 1.51409429e-02 -9.35884290e-03 1.65342489e-01 -1.20468125e-02 1.72406024e-02 1.90677593e-02 -2.20810865e-02 -2.20810865e-02 2.20810865e-02 -5.48328334e-03 1.08124682e-02 1.08124682e-02 -1.08124682e-02 1.89517553e+00 9.95491140e-02 9.95491140e-02 -9.15785008e-03 -2.53788780e-03 -2.53788780e-03 -2.12388496e-02 -1.19719253e-02 -1.19719253e-02 -1.34997473e-02 -6.86525306e-04 6.86525306e-04 -2.22701900e-02 7.88241731e-03 7.88241731e-03 -6.96401205e-03 -6.65332653e-03 6.65332653e-03 9.95491140e-02 2.04211641e+00 -9.95491140e-02 -2.53788780e-03 -3.88804018e-03 2.53788780e-03 6.78853114e-03 1.78035242e-02 -3.65770659e-03 -9.88504715e-03 1.34997473e-02 6.08947863e-03 1.14201355e-02 -1.00868915e-02 8.24231853e-03 -4.47145138e-03 2.15728427e-03 6.96401205e-03 -6.20170953e-03 -9.29544937e-03 9.95491140e-02 -9.95491140e-02 2.04211641e+00 -2.53788780e-03 2.53788780e-03 -3.88804018e-03 6.78853114e-03 -3.65770659e-03 1.78035242e-02 9.88504715e-03 1.34997473e-02 -1.14201355e-02 -6.08947863e-03 -1.00868915e-02 -4.47145138e-03 8.24231853e-03 -2.15728427e-03 6.96401205e-03 9.29544937e-03 6.20170953e-03 -9.15785008e-03 -2.53788780e-03 -2.53788780e-03 1.79684460e-04 -7.82240681e-05 -7.82240681e-05 4.90771661e-03 3.05324736e-03 3.05324736e-03 3.98965718e-03 -3.80846317e-03 3.80846317e-03 -8.90983131e-05 -1.92416159e-04 -1.92416159e-04 -5.76134452e-04 2.19325430e-04 -2.19325430e-04 -2.53788780e-03 -3.88804018e-03 2.53788780e-03 -7.82240681e-05 2.17480352e-04 7.82240681e-05 -4.88057902e-03 -2.92726385e-03 -2.92421677e-03 8.16061087e-05 -3.98965718e-03 3.98374436e-03 -3.90840983e-03 2.91222329e-04 4.87887308e-05 1.64256895e-04 -1.78094826e-05 5.76134452e-04 -3.17373257e-05 2.41137503e-04 -2.53788780e-03 2.53788780e-03 -3.88804018e-03 -7.82240681e-05 7.82240681e-05 2.17480352e-04 -4.88057902e-03 -2.92421677e-03 -2.92726385e-03 -8.16061087e-05 -3.98965718e-03 3.90840983e-03 -3.98374436e-03 2.91222329e-04 1.64256895e-04 4.87887308e-05 1.78094826e-05 5.76134452e-04 -2.41137503e-04 3.17373257e-05 -2.50681311e-01 1.29637869e-01 -3.43603397e-02 1.90677593e-02 2.55642069e-01 -5.76016724e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 -8.69671403e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 -8.69671403e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 -2.31073552e-01 1.70706534e-01 -3.47760262e-02 2.20810865e-02 -8.69671403e-02 -8.69671403e-02 5.09104100e-01 3.81033730e-02 3.81033730e-02 -1.31876001e-01 4.55715201e-02 -4.68039666e-02 8.11017653e-03 -5.48328334e-03 -5.76016724e-02 1.36360519e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 1.70016634e-02 1.70016634e-02 -1.70016634e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 1.70016634e-02 1.70016634e-02 -1.70016634e-02 9.09946312e-02 -8.78615395e-02 1.51409429e-02 -1.08124682e-02 3.81033730e-02 3.81033730e-02 -1.31876001e-01 -1.70016634e-02 -1.70016634e-02 3.78321204e-02 -2.12388496e-02 6.78853114e-03 6.78853114e-03 4.90771661e-03 -4.88057902e-03 -4.88057902e-03 2.33614448e-01 1.42959316e-01 1.42959316e-01 1.89783463e-01 -1.84466621e-01 1.84466621e-01 -1.02868307e-02 -6.47988162e-03 -6.47988162e-03 -2.78703402e-02 8.34518149e-03 -8.34518149e-03 -1.19719253e-02 1.78035242e-02 -3.65770659e-03 3.05324736e-03 -2.92726385e-03 -2.92421677e-03 1.42959316e-01 8.78151758e-02 8.75173384e-02 -1.05433222e-04 1.16218161e-01 -1.12710131e-01 1.12926204e-01 -6.29096583e-03 -3.94138564e-03 -4.07789392e-03 2.30094432e-05 -1.70670281e-02 5.10344353e-03 -5.25183836e-03 -1.19719253e-02 -3.65770659e-03 1.78035242e-02 3.05324736e-03 -2.92421677e-03 -2.92726385e-03 1.42959316e-01 8.75173384e-02 8.78151758e-02 1.05433222e-04 1.16218161e-01 -1.12926204e-01 1.12710131e-01 -6.29096583e-03 -4.07789392e-03 -3.94138564e-03 -2.30094432e-05 -1.70670281e-02 5.25183836e-03 -5.10344353e-03 -9.88504715e-03 9.88504715e-03 8.16061087e-05 -8.16061087e-05 -1.05433222e-04 1.05433222e-04 1.78440391e-04 -9.58226514e-06 -9.58226514e-06 -1.23324095e-04 1.23324095e-04 -3.89423179e-05 1.91006991e-04 1.91006991e-04 -1.34997473e-02 1.34997473e-02 1.34997473e-02 3.98965718e-03 -3.98965718e-03 -3.98965718e-03 1.89783463e-01 1.16218161e-01 1.16218161e-01 3.67563826e-01 -1.50037001e-01 1.50037001e-01 -8.58346559e-03 -5.25627773e-03 -5.25627773e-03 -3.91967293e-02 6.78582537e-03 -6.78582537e-03 -6.86525306e-04 6.08947863e-03 -1.14201355e-02 -3.80846317e-03 3.98374436e-03 3.90840983e-03 -1.84466621e-01 -1.12710131e-01 -1.12926204e-01 -9.58226514e-06 -1.50037001e-01 1.46241269e-01 -1.45949895e-01 8.49151503e-03 5.01097526e-03 5.01287669e-03 2.09120600e-06 2.20334385e-02 -6.42339379e-03 6.50712338e-03 6.86525306e-04 1.14201355e-02 -6.08947863e-03 3.80846317e-03 -3.90840983e-03 -3.98374436e-03 1.84466621e-01 1.12926204e-01 1.12710131e-01 -9.58226514e-06 1.50037001e-01 -1.45949895e-01 1.46241269e-01 -8.49151503e-03 -5.01287669e-03 -5.01097526e-03 2.09120600e-06 -2.20334385e-02 6.50712338e-03 -6.42339379e-03 -2.22701900e-02 -1.00868915e-02 -1.00868915e-02 -8.90983131e-05 2.91222329e-04 2.91222329e-04 -1.02868307e-02 -6.29096583e-03 -6.29096583e-03 -8.58346559e-03 8.49151503e-03 -8.49151503e-03 9.59486559e-04 1.37774951e-04 1.37774951e-04 1.21596738e-03 -2.58595459e-04 2.58595459e-04 7.88241731e-03 8.24231853e-03 -4.47145138e-03 -1.92416159e-04 4.87887308e-05 1.64256895e-04 -6.47988162e-03 -3.94138564e-03 -4.07789392e-03 -1.23324095e-04 -5.25627773e-03 5.01097526e-03 -5.01287669e-03 1.37774951e-04 3.30152350e-04 1.58824815e-04 2.69138959e-05 7.44624905e-04 -4.19384346e-04 1.50120025e-04 7.88241731e-03 -4.47145138e-03 8.24231853e-03 -1.92416159e-04 1.64256895e-04 4.87887308e-05 -6.47988162e-03 -4.07789392e-03 -3.94138564e-03 1.23324095e-04 -5.25627773e-03 5.01287669e-03 -5.01097526e-03 1.37774951e-04 1.58824815e-04 3.30152350e-04 -2.69138959e-05 7.44624905e-04 -1.50120025e-04 4.19384346e-04 2.15728427e-03 -2.15728427e-03 -1.78094826e-05 1.78094826e-05 2.30094432e-05 -2.30094432e-05 -3.89423179e-05 2.09120600e-06 2.09120600e-06 2.69138959e-05 -2.69138959e-05 8.49865950e-06 -4.16848167e-05 -4.16848167e-05 -6.96401205e-03 6.96401205e-03 6.96401205e-03 -5.76134452e-04 5.76134452e-04 5.76134452e-04 -2.78703402e-02 -1.70670281e-02 -1.70670281e-02 -3.91967293e-02 2.20334385e-02 -2.20334385e-02 1.21596738e-03 7.44624905e-04 7.44624905e-04 4.88351268e-03 -9.61306618e-04 9.61306618e-04 -6.65332653e-03 -6.20170953e-03 9.29544937e-03 2.19325430e-04 -3.17373257e-05 -2.41137503e-04 8.34518149e-03 5.10344353e-03 5.25183836e-03 1.91006991e-04 6.78582537e-03 -6.42339379e-03 6.50712338e-03 -2.58595459e-04 -4.19384346e-04 -1.50120025e-04 -4.16848167e-05 -9.61306618e-04 5.81078995e-04 -1.34231757e-04 6.65332653e-03 -9.29544937e-03 6.20170953e-03 -2.19325430e-04 2.41137503e-04 3.17373257e-05 -8.34518149e-03 -5.25183836e-03 -5.10344353e-03 1.91006991e-04 -6.78582537e-03 6.50712338e-03 -6.42339379e-03 2.58595459e-04 1.50120025e-04 4.19384346e-04 -4.16848167e-05 9.61306618e-04 -1.34231757e-04 5.81078995e-04 - 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 - 0 12 24 36 48 66 86 106 124 144 164 170 180 190 190 200 206 216 226 226 236 254 274 294 308 326 346 366 384 404 424 438 456 476 496 --1 2 -2 496 - -1.30077665e+00 -3.97979828e-02 -1.21755678e-01 3.00506476e-02 2.50681311e-01 -2.31073552e-01 -2.31073552e-01 2.31073552e-01 -4.55715201e-02 9.09946312e-02 9.09946312e-02 -9.09946312e-02 -3.97979828e-02 -1.15126664e+00 8.95185576e-02 -1.01048380e-01 -1.29637869e-01 1.70706534e-01 1.70706534e-01 -1.70706534e-01 4.68039666e-02 -8.78615395e-02 -8.78615395e-02 8.78615395e-02 -1.21755678e-01 8.95185576e-02 -1.86285298e-02 1.13591275e-02 3.43603397e-02 -3.47760262e-02 -3.47760262e-02 3.47760262e-02 -8.11017653e-03 1.51409429e-02 1.51409429e-02 -1.51409429e-02 3.00506476e-02 -1.01048380e-01 1.13591275e-02 -9.53400814e-03 -1.90677593e-02 2.20810865e-02 2.20810865e-02 -2.20810865e-02 5.48328334e-03 -1.08124682e-02 -1.08124682e-02 1.08124682e-02 -1.32837516e+00 -9.95491140e-02 -9.95491140e-02 3.64581589e-03 2.53788780e-03 2.53788780e-03 2.60203672e-02 1.19719253e-02 1.19719253e-02 1.34997473e-02 6.86525306e-04 -6.86525306e-04 2.30528378e-02 -7.88241731e-03 -7.88241731e-03 6.96401205e-03 6.65332653e-03 -6.65332653e-03 -9.95491140e-02 -1.47531604e+00 9.95491140e-02 2.53788780e-03 -1.62399402e-03 -2.53788780e-03 -6.78853114e-03 -2.07315938e-02 3.65770659e-03 9.88504715e-03 -1.34997473e-02 -2.30935703e-03 -1.14201355e-02 1.00868915e-02 -8.72159043e-03 4.47145138e-03 -2.15728427e-03 -6.96401205e-03 6.82044689e-03 9.29544937e-03 -9.95491140e-02 9.95491140e-02 -1.47531604e+00 2.53788780e-03 -2.53788780e-03 -1.62399402e-03 -6.78853114e-03 3.65770659e-03 -2.07315938e-02 -9.88504715e-03 -1.34997473e-02 1.14201355e-02 2.30935703e-03 1.00868915e-02 4.47145138e-03 -8.72159043e-03 2.15728427e-03 -6.96401205e-03 -9.29544937e-03 -6.82044689e-03 3.64581589e-03 2.53788780e-03 2.53788780e-03 -1.26080894e-04 7.82240681e-05 7.82240681e-05 -4.95421603e-03 -3.05324736e-03 -3.05324736e-03 -3.98965718e-03 3.80846317e-03 -3.80846317e-03 8.14872011e-05 1.92416159e-04 1.92416159e-04 5.76134452e-04 -2.19325430e-04 2.19325430e-04 2.53788780e-03 -1.62399402e-03 -2.53788780e-03 7.82240681e-05 -1.63876786e-04 -7.82240681e-05 4.88057902e-03 2.95573881e-03 2.92421677e-03 -8.16061087e-05 3.98965718e-03 -4.02050538e-03 3.90840983e-03 -2.91222329e-04 -4.41278956e-05 -1.64256895e-04 1.78094826e-05 -5.76134452e-04 2.57202134e-05 -2.41137503e-04 2.53788780e-03 -2.53788780e-03 -1.62399402e-03 7.82240681e-05 -7.82240681e-05 -1.63876786e-04 4.88057902e-03 2.92421677e-03 2.95573881e-03 8.16061087e-05 3.98965718e-03 -3.90840983e-03 4.02050538e-03 -2.91222329e-04 -1.64256895e-04 -4.41278956e-05 -1.78094826e-05 -5.76134452e-04 2.41137503e-04 -2.57202134e-05 2.50681311e-01 -1.29637869e-01 3.43603397e-02 -1.90677593e-02 -2.55642069e-01 5.76016724e-02 -2.31073552e-01 1.70706534e-01 -3.47760262e-02 2.20810865e-02 -8.69671403e-02 -8.69671403e-02 8.69671403e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 -2.31073552e-01 1.70706534e-01 -3.47760262e-02 2.20810865e-02 -8.69671403e-02 -8.69671403e-02 8.69671403e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 -5.09104100e-01 -3.81033730e-02 -3.81033730e-02 1.31876001e-01 -4.55715201e-02 4.68039666e-02 -8.11017653e-03 5.48328334e-03 5.76016724e-02 -1.36360519e-02 9.09946312e-02 -8.78615395e-02 1.51409429e-02 -1.08124682e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 -1.70016634e-02 -1.70016634e-02 1.70016634e-02 9.09946312e-02 -8.78615395e-02 1.51409429e-02 -1.08124682e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 -1.70016634e-02 -1.70016634e-02 1.70016634e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 1.31876001e-01 1.70016634e-02 1.70016634e-02 -3.78321204e-02 2.60203672e-02 -6.78853114e-03 -6.78853114e-03 -4.95421603e-03 4.88057902e-03 4.88057902e-03 -2.33574112e-01 -1.42959316e-01 -1.42959316e-01 -1.89783463e-01 1.84466621e-01 -1.84466621e-01 1.02934331e-02 6.47988162e-03 6.47988162e-03 2.78703402e-02 -8.34518149e-03 8.34518149e-03 1.19719253e-02 -2.07315938e-02 3.65770659e-03 -3.05324736e-03 2.95573881e-03 2.92421677e-03 -1.42959316e-01 -8.78000495e-02 -8.75173384e-02 1.05433222e-04 -1.16218161e-01 1.12690603e-01 -1.12926204e-01 6.29096583e-03 3.94386154e-03 4.07789392e-03 -2.30094432e-05 1.70670281e-02 -5.10663990e-03 5.25183836e-03 1.19719253e-02 3.65770659e-03 -2.07315938e-02 -3.05324736e-03 2.92421677e-03 2.95573881e-03 -1.42959316e-01 -8.75173384e-02 -8.78000495e-02 -1.05433222e-04 -1.16218161e-01 1.12926204e-01 -1.12690603e-01 6.29096583e-03 4.07789392e-03 3.94386154e-03 2.30094432e-05 1.70670281e-02 -5.25183836e-03 5.10663990e-03 9.88504715e-03 -9.88504715e-03 -8.16061087e-05 8.16061087e-05 1.05433222e-04 -1.05433222e-04 -1.78440391e-04 9.58226514e-06 9.58226514e-06 1.23324095e-04 -1.23324095e-04 3.89423179e-05 -1.91006991e-04 -1.91006991e-04 1.34997473e-02 -1.34997473e-02 -1.34997473e-02 -3.98965718e-03 3.98965718e-03 3.98965718e-03 -1.89783463e-01 -1.16218161e-01 -1.16218161e-01 5.86189719e-02 1.50037001e-01 -1.50037001e-01 8.58346559e-03 5.25627773e-03 5.25627773e-03 5.74991859e-03 -6.78582537e-03 6.78582537e-03 6.86525306e-04 -2.30935703e-03 1.14201355e-02 3.80846317e-03 -4.02050538e-03 -3.90840983e-03 1.84466621e-01 1.12690603e-01 1.12926204e-01 9.58226514e-06 1.50037001e-01 -1.46216058e-01 1.45949895e-01 -8.49151503e-03 -5.01417164e-03 -5.01287669e-03 -2.09120600e-06 -2.20334385e-02 6.42752029e-03 -6.50712338e-03 -6.86525306e-04 -1.14201355e-02 2.30935703e-03 -3.80846317e-03 3.90840983e-03 4.02050538e-03 -1.84466621e-01 -1.12926204e-01 -1.12690603e-01 9.58226514e-06 -1.50037001e-01 1.45949895e-01 -1.46216058e-01 8.49151503e-03 5.01287669e-03 5.01417164e-03 -2.09120600e-06 2.20334385e-02 -6.50712338e-03 6.42752029e-03 2.30528378e-02 1.00868915e-02 1.00868915e-02 8.14872011e-05 -2.91222329e-04 -2.91222329e-04 1.02934331e-02 6.29096583e-03 6.29096583e-03 8.58346559e-03 -8.49151503e-03 8.49151503e-03 -9.58405865e-04 -1.37774951e-04 -1.37774951e-04 -1.21596738e-03 2.58595459e-04 -2.58595459e-04 -7.88241731e-03 -8.72159043e-03 4.47145138e-03 1.92416159e-04 -4.41278956e-05 -1.64256895e-04 6.47988162e-03 3.94386154e-03 4.07789392e-03 1.23324095e-04 5.25627773e-03 -5.01417164e-03 5.01287669e-03 -1.37774951e-04 -3.29747090e-04 -1.58824815e-04 -2.69138959e-05 -7.44624905e-04 4.18861158e-04 -1.50120025e-04 -7.88241731e-03 4.47145138e-03 -8.72159043e-03 1.92416159e-04 -1.64256895e-04 -4.41278956e-05 6.47988162e-03 4.07789392e-03 3.94386154e-03 -1.23324095e-04 5.25627773e-03 -5.01287669e-03 5.01417164e-03 -1.37774951e-04 -1.58824815e-04 -3.29747090e-04 2.69138959e-05 -7.44624905e-04 1.50120025e-04 -4.18861158e-04 -2.15728427e-03 2.15728427e-03 1.78094826e-05 -1.78094826e-05 -2.30094432e-05 2.30094432e-05 3.89423179e-05 -2.09120600e-06 -2.09120600e-06 -2.69138959e-05 2.69138959e-05 -8.49865950e-06 4.16848167e-05 4.16848167e-05 6.96401205e-03 -6.96401205e-03 -6.96401205e-03 5.76134452e-04 -5.76134452e-04 -5.76134452e-04 2.78703402e-02 1.70670281e-02 1.70670281e-02 5.74991859e-03 -2.20334385e-02 2.20334385e-02 -1.21596738e-03 -7.44624905e-04 -7.44624905e-04 -2.25860819e-03 9.61306618e-04 -9.61306618e-04 6.65332653e-03 6.82044689e-03 -9.29544937e-03 -2.19325430e-04 2.57202134e-05 2.41137503e-04 -8.34518149e-03 -5.10663990e-03 -5.25183836e-03 -1.91006991e-04 -6.78582537e-03 6.42752029e-03 -6.50712338e-03 2.58595459e-04 4.18861158e-04 1.50120025e-04 4.16848167e-05 9.61306618e-04 -5.80403562e-04 1.34231757e-04 -6.65332653e-03 9.29544937e-03 -6.82044689e-03 2.19325430e-04 -2.41137503e-04 -2.57202134e-05 8.34518149e-03 5.25183836e-03 5.10663990e-03 -1.91006991e-04 6.78582537e-03 -6.50712338e-03 6.42752029e-03 -2.58595459e-04 -1.50120025e-04 -4.18861158e-04 4.16848167e-05 -9.61306618e-04 1.34231757e-04 -5.80403562e-04 - 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 - 0 12 24 36 48 66 86 106 124 144 164 170 180 190 190 200 206 216 226 226 236 254 274 294 308 326 346 366 384 404 424 438 456 476 496 --1 2 -1 496 - 6.10668701e-01 -7.51799909e-02 6.94266500e-02 -1.13818158e-02 2.50681311e-01 2.31073552e-01 2.31073552e-01 -2.31073552e-01 -4.55715201e-02 -9.09946312e-02 -9.09946312e-02 9.09946312e-02 -7.51799909e-02 6.30743818e-01 -3.88656825e-02 8.24503254e-02 -1.29637869e-01 -1.70706534e-01 -1.70706534e-01 1.70706534e-01 4.68039666e-02 8.78615395e-02 8.78615395e-02 -8.78615395e-02 6.94266500e-02 -3.88656825e-02 9.24320123e-03 -5.59159516e-03 3.43603397e-02 3.47760262e-02 3.47760262e-02 -3.47760262e-02 -8.11017653e-03 -1.51409429e-02 -1.51409429e-02 1.51409429e-02 -1.13818158e-02 8.24503254e-02 -5.59159516e-03 1.01087384e-02 -1.90677593e-02 -2.20810865e-02 -2.20810865e-02 2.20810865e-02 5.48328334e-03 1.08124682e-02 1.08124682e-02 -1.08124682e-02 6.62931071e-01 9.95491140e-02 9.95491140e-02 -9.36131516e-03 -2.53788780e-03 -2.53788780e-03 -1.84743808e-04 -1.19719253e-02 -1.19719253e-02 -1.34997473e-02 -6.86525306e-04 6.86525306e-04 -6.96842667e-03 7.88241731e-03 7.88241731e-03 -6.96401205e-03 -6.65332653e-03 6.65332653e-03 9.95491140e-02 5.15990200e-01 -9.95491140e-02 -2.53788780e-03 -1.46311251e-02 2.53788780e-03 6.78853114e-03 -4.68430612e-03 -3.65770659e-03 -9.88504715e-03 1.34997473e-02 -2.30263163e-02 1.14201355e-02 -1.00868915e-02 9.66260440e-03 -4.47145138e-03 2.15728427e-03 6.96401205e-03 -1.69134466e-02 -9.29544937e-03 9.95491140e-02 -9.95491140e-02 5.15990200e-01 -2.53788780e-03 2.53788780e-03 -1.46311251e-02 6.78853114e-03 -3.65770659e-03 -4.68430612e-03 9.88504715e-03 1.34997473e-02 -1.14201355e-02 2.30263163e-02 -1.00868915e-02 -4.47145138e-03 9.66260440e-03 -2.15728427e-03 6.96401205e-03 9.29544937e-03 1.69134466e-02 -9.36131516e-03 -2.53788780e-03 -2.53788780e-03 1.79650864e-04 -7.82240681e-05 -7.82240681e-05 4.91119301e-03 3.05324736e-03 3.05324736e-03 3.98965718e-03 -3.80846317e-03 3.80846317e-03 -8.65717248e-05 -1.92416159e-04 -1.92416159e-04 -5.76134452e-04 2.19325430e-04 -2.19325430e-04 -2.53788780e-03 -1.46311251e-02 2.53788780e-03 -7.82240681e-05 1.41854973e-04 7.82240681e-05 -4.88057902e-03 -3.08556574e-03 -2.92421677e-03 8.16061087e-05 -3.98965718e-03 3.77878526e-03 -3.90840983e-03 2.91222329e-04 5.87867582e-05 1.64256895e-04 -1.78094826e-05 5.76134452e-04 -1.07142033e-04 2.41137503e-04 -2.53788780e-03 2.53788780e-03 -1.46311251e-02 -7.82240681e-05 7.82240681e-05 1.41854973e-04 -4.88057902e-03 -2.92421677e-03 -3.08556574e-03 -8.16061087e-05 -3.98965718e-03 3.90840983e-03 -3.77878526e-03 2.91222329e-04 1.64256895e-04 5.87867582e-05 1.78094826e-05 5.76134452e-04 -2.41137503e-04 1.07142033e-04 2.50681311e-01 -1.29637869e-01 3.43603397e-02 -1.90677593e-02 -2.55642069e-01 5.76016724e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 -8.69671403e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 -8.69671403e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 -2.31073552e-01 1.70706534e-01 -3.47760262e-02 2.20810865e-02 -8.69671403e-02 -8.69671403e-02 -3.35169819e-01 3.81033730e-02 3.81033730e-02 5.56692551e-02 -4.55715201e-02 4.68039666e-02 -8.11017653e-03 5.48328334e-03 5.76016724e-02 -1.36360519e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 1.70016634e-02 1.70016634e-02 -1.70016634e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 1.70016634e-02 1.70016634e-02 -1.70016634e-02 9.09946312e-02 -8.78615395e-02 1.51409429e-02 -1.08124682e-02 3.81033730e-02 3.81033730e-02 5.56692551e-02 -1.70016634e-02 -1.70016634e-02 -3.82879364e-03 -1.84743808e-04 6.78853114e-03 6.78853114e-03 4.91119301e-03 -4.88057902e-03 -4.88057902e-03 2.33254718e-01 1.42959316e-01 1.42959316e-01 1.89783463e-01 -1.84466621e-01 1.84466621e-01 -1.05482763e-02 -6.47988162e-03 -6.47988162e-03 -2.78703402e-02 8.34518149e-03 -8.34518149e-03 -1.19719253e-02 -4.68430612e-03 -3.65770659e-03 3.05324736e-03 -3.08556574e-03 -2.92421677e-03 1.42959316e-01 8.74838123e-02 8.75173384e-02 -1.05433222e-04 1.16218161e-01 -1.13139159e-01 1.12926204e-01 -6.29096583e-03 -3.92045739e-03 -4.07789392e-03 2.30094432e-05 -1.70670281e-02 4.94560355e-03 -5.25183836e-03 -1.19719253e-02 -3.65770659e-03 -4.68430612e-03 3.05324736e-03 -2.92421677e-03 -3.08556574e-03 1.42959316e-01 8.75173384e-02 8.74838123e-02 1.05433222e-04 1.16218161e-01 -1.12926204e-01 1.13139159e-01 -6.29096583e-03 -4.07789392e-03 -3.92045739e-03 -2.30094432e-05 -1.70670281e-02 5.25183836e-03 -4.94560355e-03 -9.88504715e-03 9.88504715e-03 8.16061087e-05 -8.16061087e-05 -1.05433222e-04 1.05433222e-04 1.78440391e-04 -9.58226514e-06 -9.58226514e-06 -1.23324095e-04 1.23324095e-04 -3.89423179e-05 1.91006991e-04 1.91006991e-04 -1.34997473e-02 1.34997473e-02 1.34997473e-02 3.98965718e-03 -3.98965718e-03 -3.98965718e-03 1.89783463e-01 1.16218161e-01 1.16218161e-01 3.67563826e-01 -1.50037001e-01 1.50037001e-01 -8.58346559e-03 -5.25627773e-03 -5.25627773e-03 -3.91967293e-02 6.78582537e-03 -6.78582537e-03 -6.86525306e-04 -2.30263163e-02 -1.14201355e-02 -3.80846317e-03 3.77878526e-03 3.90840983e-03 -1.84466621e-01 -1.13139159e-01 -1.12926204e-01 -9.58226514e-06 -1.50037001e-01 1.45685791e-01 -1.45949895e-01 8.49151503e-03 5.03807181e-03 5.01287669e-03 2.09120600e-06 2.20334385e-02 -6.62775483e-03 6.50712338e-03 6.86525306e-04 1.14201355e-02 2.30263163e-02 3.80846317e-03 -3.90840983e-03 -3.77878526e-03 1.84466621e-01 1.12926204e-01 1.13139159e-01 -9.58226514e-06 1.50037001e-01 -1.45949895e-01 1.45685791e-01 -8.49151503e-03 -5.01287669e-03 -5.03807181e-03 2.09120600e-06 -2.20334385e-02 6.50712338e-03 -6.62775483e-03 -6.96842667e-03 -1.00868915e-02 -1.00868915e-02 -8.65717248e-05 2.91222329e-04 2.91222329e-04 -1.05482763e-02 -6.29096583e-03 -6.29096583e-03 -8.58346559e-03 8.49151503e-03 -8.49151503e-03 7.69472345e-04 1.37774951e-04 1.37774951e-04 1.21596738e-03 -2.58595459e-04 2.58595459e-04 7.88241731e-03 9.66260440e-03 -4.47145138e-03 -1.92416159e-04 5.87867582e-05 1.64256895e-04 -6.47988162e-03 -3.92045739e-03 -4.07789392e-03 -1.23324095e-04 -5.25627773e-03 5.03807181e-03 -5.01287669e-03 1.37774951e-04 3.28830564e-04 1.58824815e-04 2.69138959e-05 7.44624905e-04 -4.09415493e-04 1.50120025e-04 7.88241731e-03 -4.47145138e-03 9.66260440e-03 -1.92416159e-04 1.64256895e-04 5.87867582e-05 -6.47988162e-03 -4.07789392e-03 -3.92045739e-03 1.23324095e-04 -5.25627773e-03 5.01287669e-03 -5.03807181e-03 1.37774951e-04 1.58824815e-04 3.28830564e-04 -2.69138959e-05 7.44624905e-04 -1.50120025e-04 4.09415493e-04 2.15728427e-03 -2.15728427e-03 -1.78094826e-05 1.78094826e-05 2.30094432e-05 -2.30094432e-05 -3.89423179e-05 2.09120600e-06 2.09120600e-06 2.69138959e-05 -2.69138959e-05 8.49865950e-06 -4.16848167e-05 -4.16848167e-05 -6.96401205e-03 6.96401205e-03 6.96401205e-03 -5.76134452e-04 5.76134452e-04 5.76134452e-04 -2.78703402e-02 -1.70670281e-02 -1.70670281e-02 -3.91967293e-02 2.20334385e-02 -2.20334385e-02 1.21596738e-03 7.44624905e-04 7.44624905e-04 4.88351268e-03 -9.61306618e-04 9.61306618e-04 -6.65332653e-03 -1.69134466e-02 9.29544937e-03 2.19325430e-04 -1.07142033e-04 -2.41137503e-04 8.34518149e-03 4.94560355e-03 5.25183836e-03 1.91006991e-04 6.78582537e-03 -6.62775483e-03 6.50712338e-03 -2.58595459e-04 -4.09415493e-04 -1.50120025e-04 -4.16848167e-05 -9.61306618e-04 5.05894315e-04 -1.34231757e-04 6.65332653e-03 -9.29544937e-03 1.69134466e-02 -2.19325430e-04 2.41137503e-04 1.07142033e-04 -8.34518149e-03 -5.25183836e-03 -4.94560355e-03 1.91006991e-04 -6.78582537e-03 6.50712338e-03 -6.62775483e-03 2.58595459e-04 1.50120025e-04 4.09415493e-04 -4.16848167e-05 9.61306618e-04 -1.34231757e-04 5.05894315e-04 - 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 - 0 12 24 36 48 66 86 106 124 144 164 170 180 190 190 200 206 216 226 226 236 254 274 294 308 326 346 366 384 404 424 438 456 476 496 --1 2 0 496 - -1.30077665e+00 -3.97979828e-02 -1.21755678e-01 3.00506476e-02 2.50681311e-01 -2.31073552e-01 -2.31073552e-01 2.31073552e-01 -4.55715201e-02 9.09946312e-02 9.09946312e-02 -9.09946312e-02 -3.97979828e-02 -1.15126664e+00 8.95185576e-02 -1.01048380e-01 -1.29637869e-01 1.70706534e-01 1.70706534e-01 -1.70706534e-01 4.68039666e-02 -8.78615395e-02 -8.78615395e-02 8.78615395e-02 -1.21755678e-01 8.95185576e-02 -1.86285298e-02 1.13591275e-02 3.43603397e-02 -3.47760262e-02 -3.47760262e-02 3.47760262e-02 -8.11017653e-03 1.51409429e-02 1.51409429e-02 -1.51409429e-02 3.00506476e-02 -1.01048380e-01 1.13591275e-02 -9.53400814e-03 -1.90677593e-02 2.20810865e-02 2.20810865e-02 -2.20810865e-02 5.48328334e-03 -1.08124682e-02 -1.08124682e-02 1.08124682e-02 -1.32837516e+00 -9.95491140e-02 -9.95491140e-02 3.64581589e-03 2.53788780e-03 2.53788780e-03 2.60203672e-02 1.19719253e-02 1.19719253e-02 1.34997473e-02 6.86525306e-04 -6.86525306e-04 2.30528378e-02 -7.88241731e-03 -7.88241731e-03 6.96401205e-03 6.65332653e-03 -6.65332653e-03 -9.95491140e-02 -1.47531604e+00 9.95491140e-02 2.53788780e-03 -1.62399402e-03 -2.53788780e-03 -6.78853114e-03 -2.07315938e-02 3.65770659e-03 9.88504715e-03 -1.34997473e-02 -2.30935703e-03 -1.14201355e-02 1.00868915e-02 -8.72159043e-03 4.47145138e-03 -2.15728427e-03 -6.96401205e-03 6.82044689e-03 9.29544937e-03 -9.95491140e-02 9.95491140e-02 -1.47531604e+00 2.53788780e-03 -2.53788780e-03 -1.62399402e-03 -6.78853114e-03 3.65770659e-03 -2.07315938e-02 -9.88504715e-03 -1.34997473e-02 1.14201355e-02 2.30935703e-03 1.00868915e-02 4.47145138e-03 -8.72159043e-03 2.15728427e-03 -6.96401205e-03 -9.29544937e-03 -6.82044689e-03 3.64581589e-03 2.53788780e-03 2.53788780e-03 -1.26080894e-04 7.82240681e-05 7.82240681e-05 -4.95421603e-03 -3.05324736e-03 -3.05324736e-03 -3.98965718e-03 3.80846317e-03 -3.80846317e-03 8.14872011e-05 1.92416159e-04 1.92416159e-04 5.76134452e-04 -2.19325430e-04 2.19325430e-04 2.53788780e-03 -1.62399402e-03 -2.53788780e-03 7.82240681e-05 -1.63876786e-04 -7.82240681e-05 4.88057902e-03 2.95573881e-03 2.92421677e-03 -8.16061087e-05 3.98965718e-03 -4.02050538e-03 3.90840983e-03 -2.91222329e-04 -4.41278956e-05 -1.64256895e-04 1.78094826e-05 -5.76134452e-04 2.57202134e-05 -2.41137503e-04 2.53788780e-03 -2.53788780e-03 -1.62399402e-03 7.82240681e-05 -7.82240681e-05 -1.63876786e-04 4.88057902e-03 2.92421677e-03 2.95573881e-03 8.16061087e-05 3.98965718e-03 -3.90840983e-03 4.02050538e-03 -2.91222329e-04 -1.64256895e-04 -4.41278956e-05 -1.78094826e-05 -5.76134452e-04 2.41137503e-04 -2.57202134e-05 2.50681311e-01 -1.29637869e-01 3.43603397e-02 -1.90677593e-02 -2.55642069e-01 5.76016724e-02 -2.31073552e-01 1.70706534e-01 -3.47760262e-02 2.20810865e-02 -8.69671403e-02 -8.69671403e-02 8.69671403e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 -2.31073552e-01 1.70706534e-01 -3.47760262e-02 2.20810865e-02 -8.69671403e-02 -8.69671403e-02 8.69671403e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 -5.09104100e-01 -3.81033730e-02 -3.81033730e-02 1.31876001e-01 -4.55715201e-02 4.68039666e-02 -8.11017653e-03 5.48328334e-03 5.76016724e-02 -1.36360519e-02 9.09946312e-02 -8.78615395e-02 1.51409429e-02 -1.08124682e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 -1.70016634e-02 -1.70016634e-02 1.70016634e-02 9.09946312e-02 -8.78615395e-02 1.51409429e-02 -1.08124682e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 -1.70016634e-02 -1.70016634e-02 1.70016634e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 1.31876001e-01 1.70016634e-02 1.70016634e-02 -3.78321204e-02 2.60203672e-02 -6.78853114e-03 -6.78853114e-03 -4.95421603e-03 4.88057902e-03 4.88057902e-03 -2.33574112e-01 -1.42959316e-01 -1.42959316e-01 -1.89783463e-01 1.84466621e-01 -1.84466621e-01 1.02934331e-02 6.47988162e-03 6.47988162e-03 2.78703402e-02 -8.34518149e-03 8.34518149e-03 1.19719253e-02 -2.07315938e-02 3.65770659e-03 -3.05324736e-03 2.95573881e-03 2.92421677e-03 -1.42959316e-01 -8.78000495e-02 -8.75173384e-02 1.05433222e-04 -1.16218161e-01 1.12690603e-01 -1.12926204e-01 6.29096583e-03 3.94386154e-03 4.07789392e-03 -2.30094432e-05 1.70670281e-02 -5.10663990e-03 5.25183836e-03 1.19719253e-02 3.65770659e-03 -2.07315938e-02 -3.05324736e-03 2.92421677e-03 2.95573881e-03 -1.42959316e-01 -8.75173384e-02 -8.78000495e-02 -1.05433222e-04 -1.16218161e-01 1.12926204e-01 -1.12690603e-01 6.29096583e-03 4.07789392e-03 3.94386154e-03 2.30094432e-05 1.70670281e-02 -5.25183836e-03 5.10663990e-03 9.88504715e-03 -9.88504715e-03 -8.16061087e-05 8.16061087e-05 1.05433222e-04 -1.05433222e-04 -1.78440391e-04 9.58226514e-06 9.58226514e-06 1.23324095e-04 -1.23324095e-04 3.89423179e-05 -1.91006991e-04 -1.91006991e-04 1.34997473e-02 -1.34997473e-02 -1.34997473e-02 -3.98965718e-03 3.98965718e-03 3.98965718e-03 -1.89783463e-01 -1.16218161e-01 -1.16218161e-01 5.86189719e-02 1.50037001e-01 -1.50037001e-01 8.58346559e-03 5.25627773e-03 5.25627773e-03 5.74991859e-03 -6.78582537e-03 6.78582537e-03 6.86525306e-04 -2.30935703e-03 1.14201355e-02 3.80846317e-03 -4.02050538e-03 -3.90840983e-03 1.84466621e-01 1.12690603e-01 1.12926204e-01 9.58226514e-06 1.50037001e-01 -1.46216058e-01 1.45949895e-01 -8.49151503e-03 -5.01417164e-03 -5.01287669e-03 -2.09120600e-06 -2.20334385e-02 6.42752029e-03 -6.50712338e-03 -6.86525306e-04 -1.14201355e-02 2.30935703e-03 -3.80846317e-03 3.90840983e-03 4.02050538e-03 -1.84466621e-01 -1.12926204e-01 -1.12690603e-01 9.58226514e-06 -1.50037001e-01 1.45949895e-01 -1.46216058e-01 8.49151503e-03 5.01287669e-03 5.01417164e-03 -2.09120600e-06 2.20334385e-02 -6.50712338e-03 6.42752029e-03 2.30528378e-02 1.00868915e-02 1.00868915e-02 8.14872011e-05 -2.91222329e-04 -2.91222329e-04 1.02934331e-02 6.29096583e-03 6.29096583e-03 8.58346559e-03 -8.49151503e-03 8.49151503e-03 -9.58405865e-04 -1.37774951e-04 -1.37774951e-04 -1.21596738e-03 2.58595459e-04 -2.58595459e-04 -7.88241731e-03 -8.72159043e-03 4.47145138e-03 1.92416159e-04 -4.41278956e-05 -1.64256895e-04 6.47988162e-03 3.94386154e-03 4.07789392e-03 1.23324095e-04 5.25627773e-03 -5.01417164e-03 5.01287669e-03 -1.37774951e-04 -3.29747090e-04 -1.58824815e-04 -2.69138959e-05 -7.44624905e-04 4.18861158e-04 -1.50120025e-04 -7.88241731e-03 4.47145138e-03 -8.72159043e-03 1.92416159e-04 -1.64256895e-04 -4.41278956e-05 6.47988162e-03 4.07789392e-03 3.94386154e-03 -1.23324095e-04 5.25627773e-03 -5.01287669e-03 5.01417164e-03 -1.37774951e-04 -1.58824815e-04 -3.29747090e-04 2.69138959e-05 -7.44624905e-04 1.50120025e-04 -4.18861158e-04 -2.15728427e-03 2.15728427e-03 1.78094826e-05 -1.78094826e-05 -2.30094432e-05 2.30094432e-05 3.89423179e-05 -2.09120600e-06 -2.09120600e-06 -2.69138959e-05 2.69138959e-05 -8.49865950e-06 4.16848167e-05 4.16848167e-05 6.96401205e-03 -6.96401205e-03 -6.96401205e-03 5.76134452e-04 -5.76134452e-04 -5.76134452e-04 2.78703402e-02 1.70670281e-02 1.70670281e-02 5.74991859e-03 -2.20334385e-02 2.20334385e-02 -1.21596738e-03 -7.44624905e-04 -7.44624905e-04 -2.25860819e-03 9.61306618e-04 -9.61306618e-04 6.65332653e-03 6.82044689e-03 -9.29544937e-03 -2.19325430e-04 2.57202134e-05 2.41137503e-04 -8.34518149e-03 -5.10663990e-03 -5.25183836e-03 -1.91006991e-04 -6.78582537e-03 6.42752029e-03 -6.50712338e-03 2.58595459e-04 4.18861158e-04 1.50120025e-04 4.16848167e-05 9.61306618e-04 -5.80403562e-04 1.34231757e-04 -6.65332653e-03 9.29544937e-03 -6.82044689e-03 2.19325430e-04 -2.41137503e-04 -2.57202134e-05 8.34518149e-03 5.25183836e-03 5.10663990e-03 -1.91006991e-04 6.78582537e-03 -6.50712338e-03 6.42752029e-03 -2.58595459e-04 -1.50120025e-04 -4.18861158e-04 4.16848167e-05 -9.61306618e-04 1.34231757e-04 -5.80403562e-04 - 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 - 0 12 24 36 48 66 86 106 124 144 164 170 180 190 190 200 206 216 226 226 236 254 274 294 308 326 346 366 384 404 424 438 456 476 496 --1 2 1 496 - 6.10668701e-01 -7.51799909e-02 6.94266500e-02 -1.13818158e-02 2.50681311e-01 2.31073552e-01 2.31073552e-01 -2.31073552e-01 -4.55715201e-02 -9.09946312e-02 -9.09946312e-02 9.09946312e-02 -7.51799909e-02 6.30743818e-01 -3.88656825e-02 8.24503254e-02 -1.29637869e-01 -1.70706534e-01 -1.70706534e-01 1.70706534e-01 4.68039666e-02 8.78615395e-02 8.78615395e-02 -8.78615395e-02 6.94266500e-02 -3.88656825e-02 9.24320123e-03 -5.59159516e-03 3.43603397e-02 3.47760262e-02 3.47760262e-02 -3.47760262e-02 -8.11017653e-03 -1.51409429e-02 -1.51409429e-02 1.51409429e-02 -1.13818158e-02 8.24503254e-02 -5.59159516e-03 1.01087384e-02 -1.90677593e-02 -2.20810865e-02 -2.20810865e-02 2.20810865e-02 5.48328334e-03 1.08124682e-02 1.08124682e-02 -1.08124682e-02 6.62931071e-01 9.95491140e-02 9.95491140e-02 -9.36131516e-03 -2.53788780e-03 -2.53788780e-03 -1.84743808e-04 -1.19719253e-02 -1.19719253e-02 -1.34997473e-02 -6.86525306e-04 6.86525306e-04 -6.96842667e-03 7.88241731e-03 7.88241731e-03 -6.96401205e-03 -6.65332653e-03 6.65332653e-03 9.95491140e-02 5.15990200e-01 -9.95491140e-02 -2.53788780e-03 -1.46311251e-02 2.53788780e-03 6.78853114e-03 -4.68430612e-03 -3.65770659e-03 -9.88504715e-03 1.34997473e-02 -2.30263163e-02 1.14201355e-02 -1.00868915e-02 9.66260440e-03 -4.47145138e-03 2.15728427e-03 6.96401205e-03 -1.69134466e-02 -9.29544937e-03 9.95491140e-02 -9.95491140e-02 5.15990200e-01 -2.53788780e-03 2.53788780e-03 -1.46311251e-02 6.78853114e-03 -3.65770659e-03 -4.68430612e-03 9.88504715e-03 1.34997473e-02 -1.14201355e-02 2.30263163e-02 -1.00868915e-02 -4.47145138e-03 9.66260440e-03 -2.15728427e-03 6.96401205e-03 9.29544937e-03 1.69134466e-02 -9.36131516e-03 -2.53788780e-03 -2.53788780e-03 1.79650864e-04 -7.82240681e-05 -7.82240681e-05 4.91119301e-03 3.05324736e-03 3.05324736e-03 3.98965718e-03 -3.80846317e-03 3.80846317e-03 -8.65717248e-05 -1.92416159e-04 -1.92416159e-04 -5.76134452e-04 2.19325430e-04 -2.19325430e-04 -2.53788780e-03 -1.46311251e-02 2.53788780e-03 -7.82240681e-05 1.41854973e-04 7.82240681e-05 -4.88057902e-03 -3.08556574e-03 -2.92421677e-03 8.16061087e-05 -3.98965718e-03 3.77878526e-03 -3.90840983e-03 2.91222329e-04 5.87867582e-05 1.64256895e-04 -1.78094826e-05 5.76134452e-04 -1.07142033e-04 2.41137503e-04 -2.53788780e-03 2.53788780e-03 -1.46311251e-02 -7.82240681e-05 7.82240681e-05 1.41854973e-04 -4.88057902e-03 -2.92421677e-03 -3.08556574e-03 -8.16061087e-05 -3.98965718e-03 3.90840983e-03 -3.77878526e-03 2.91222329e-04 1.64256895e-04 5.87867582e-05 1.78094826e-05 5.76134452e-04 -2.41137503e-04 1.07142033e-04 2.50681311e-01 -1.29637869e-01 3.43603397e-02 -1.90677593e-02 -2.55642069e-01 5.76016724e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 -8.69671403e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 -8.69671403e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 -2.31073552e-01 1.70706534e-01 -3.47760262e-02 2.20810865e-02 -8.69671403e-02 -8.69671403e-02 -3.35169819e-01 3.81033730e-02 3.81033730e-02 5.56692551e-02 -4.55715201e-02 4.68039666e-02 -8.11017653e-03 5.48328334e-03 5.76016724e-02 -1.36360519e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 1.70016634e-02 1.70016634e-02 -1.70016634e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 1.70016634e-02 1.70016634e-02 -1.70016634e-02 9.09946312e-02 -8.78615395e-02 1.51409429e-02 -1.08124682e-02 3.81033730e-02 3.81033730e-02 5.56692551e-02 -1.70016634e-02 -1.70016634e-02 -3.82879364e-03 -1.84743808e-04 6.78853114e-03 6.78853114e-03 4.91119301e-03 -4.88057902e-03 -4.88057902e-03 2.33254718e-01 1.42959316e-01 1.42959316e-01 1.89783463e-01 -1.84466621e-01 1.84466621e-01 -1.05482763e-02 -6.47988162e-03 -6.47988162e-03 -2.78703402e-02 8.34518149e-03 -8.34518149e-03 -1.19719253e-02 -4.68430612e-03 -3.65770659e-03 3.05324736e-03 -3.08556574e-03 -2.92421677e-03 1.42959316e-01 8.74838123e-02 8.75173384e-02 -1.05433222e-04 1.16218161e-01 -1.13139159e-01 1.12926204e-01 -6.29096583e-03 -3.92045739e-03 -4.07789392e-03 2.30094432e-05 -1.70670281e-02 4.94560355e-03 -5.25183836e-03 -1.19719253e-02 -3.65770659e-03 -4.68430612e-03 3.05324736e-03 -2.92421677e-03 -3.08556574e-03 1.42959316e-01 8.75173384e-02 8.74838123e-02 1.05433222e-04 1.16218161e-01 -1.12926204e-01 1.13139159e-01 -6.29096583e-03 -4.07789392e-03 -3.92045739e-03 -2.30094432e-05 -1.70670281e-02 5.25183836e-03 -4.94560355e-03 -9.88504715e-03 9.88504715e-03 8.16061087e-05 -8.16061087e-05 -1.05433222e-04 1.05433222e-04 1.78440391e-04 -9.58226514e-06 -9.58226514e-06 -1.23324095e-04 1.23324095e-04 -3.89423179e-05 1.91006991e-04 1.91006991e-04 -1.34997473e-02 1.34997473e-02 1.34997473e-02 3.98965718e-03 -3.98965718e-03 -3.98965718e-03 1.89783463e-01 1.16218161e-01 1.16218161e-01 3.67563826e-01 -1.50037001e-01 1.50037001e-01 -8.58346559e-03 -5.25627773e-03 -5.25627773e-03 -3.91967293e-02 6.78582537e-03 -6.78582537e-03 -6.86525306e-04 -2.30263163e-02 -1.14201355e-02 -3.80846317e-03 3.77878526e-03 3.90840983e-03 -1.84466621e-01 -1.13139159e-01 -1.12926204e-01 -9.58226514e-06 -1.50037001e-01 1.45685791e-01 -1.45949895e-01 8.49151503e-03 5.03807181e-03 5.01287669e-03 2.09120600e-06 2.20334385e-02 -6.62775483e-03 6.50712338e-03 6.86525306e-04 1.14201355e-02 2.30263163e-02 3.80846317e-03 -3.90840983e-03 -3.77878526e-03 1.84466621e-01 1.12926204e-01 1.13139159e-01 -9.58226514e-06 1.50037001e-01 -1.45949895e-01 1.45685791e-01 -8.49151503e-03 -5.01287669e-03 -5.03807181e-03 2.09120600e-06 -2.20334385e-02 6.50712338e-03 -6.62775483e-03 -6.96842667e-03 -1.00868915e-02 -1.00868915e-02 -8.65717248e-05 2.91222329e-04 2.91222329e-04 -1.05482763e-02 -6.29096583e-03 -6.29096583e-03 -8.58346559e-03 8.49151503e-03 -8.49151503e-03 7.69472345e-04 1.37774951e-04 1.37774951e-04 1.21596738e-03 -2.58595459e-04 2.58595459e-04 7.88241731e-03 9.66260440e-03 -4.47145138e-03 -1.92416159e-04 5.87867582e-05 1.64256895e-04 -6.47988162e-03 -3.92045739e-03 -4.07789392e-03 -1.23324095e-04 -5.25627773e-03 5.03807181e-03 -5.01287669e-03 1.37774951e-04 3.28830564e-04 1.58824815e-04 2.69138959e-05 7.44624905e-04 -4.09415493e-04 1.50120025e-04 7.88241731e-03 -4.47145138e-03 9.66260440e-03 -1.92416159e-04 1.64256895e-04 5.87867582e-05 -6.47988162e-03 -4.07789392e-03 -3.92045739e-03 1.23324095e-04 -5.25627773e-03 5.01287669e-03 -5.03807181e-03 1.37774951e-04 1.58824815e-04 3.28830564e-04 -2.69138959e-05 7.44624905e-04 -1.50120025e-04 4.09415493e-04 2.15728427e-03 -2.15728427e-03 -1.78094826e-05 1.78094826e-05 2.30094432e-05 -2.30094432e-05 -3.89423179e-05 2.09120600e-06 2.09120600e-06 2.69138959e-05 -2.69138959e-05 8.49865950e-06 -4.16848167e-05 -4.16848167e-05 -6.96401205e-03 6.96401205e-03 6.96401205e-03 -5.76134452e-04 5.76134452e-04 5.76134452e-04 -2.78703402e-02 -1.70670281e-02 -1.70670281e-02 -3.91967293e-02 2.20334385e-02 -2.20334385e-02 1.21596738e-03 7.44624905e-04 7.44624905e-04 4.88351268e-03 -9.61306618e-04 9.61306618e-04 -6.65332653e-03 -1.69134466e-02 9.29544937e-03 2.19325430e-04 -1.07142033e-04 -2.41137503e-04 8.34518149e-03 4.94560355e-03 5.25183836e-03 1.91006991e-04 6.78582537e-03 -6.62775483e-03 6.50712338e-03 -2.58595459e-04 -4.09415493e-04 -1.50120025e-04 -4.16848167e-05 -9.61306618e-04 5.05894315e-04 -1.34231757e-04 6.65332653e-03 -9.29544937e-03 1.69134466e-02 -2.19325430e-04 2.41137503e-04 1.07142033e-04 -8.34518149e-03 -5.25183836e-03 -4.94560355e-03 1.91006991e-04 -6.78582537e-03 6.50712338e-03 -6.62775483e-03 2.58595459e-04 1.50120025e-04 4.09415493e-04 -4.16848167e-05 9.61306618e-04 -1.34231757e-04 5.05894315e-04 - 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 - 0 12 24 36 48 66 86 106 124 144 164 170 180 190 190 200 206 216 226 226 236 254 274 294 308 326 346 366 384 404 424 438 456 476 496 --1 3 -1 496 - -4.46730500e-01 2.90265885e-01 -6.65919095e-02 3.20736205e-02 -2.50681311e-01 -2.31073552e-01 -2.31073552e-01 2.31073552e-01 4.55715201e-02 9.09946312e-02 9.09946312e-02 -9.09946312e-02 2.90265885e-01 -7.77208948e-02 3.49623849e-02 -1.81562170e-02 1.29637869e-01 1.70706534e-01 1.70706534e-01 -1.70706534e-01 -4.68039666e-02 -8.78615395e-02 -8.78615395e-02 8.78615395e-02 -6.65919095e-02 3.49623849e-02 -8.97965282e-03 4.90391018e-03 -3.43603397e-02 -3.47760262e-02 -3.47760262e-02 3.47760262e-02 8.11017653e-03 1.51409429e-02 1.51409429e-02 -1.51409429e-02 3.20736205e-02 -1.81562170e-02 4.90391018e-03 -2.40214415e-03 1.90677593e-02 2.20810865e-02 2.20810865e-02 -2.20810865e-02 -5.48328334e-03 -1.08124682e-02 -1.08124682e-02 1.08124682e-02 -9.61307016e-02 -9.95491140e-02 -9.95491140e-02 3.84928096e-03 2.53788780e-03 2.53788780e-03 4.96626145e-03 1.19719253e-02 1.19719253e-02 1.34997473e-02 6.86525306e-04 -6.86525306e-04 7.75107441e-03 -7.88241731e-03 -7.88241731e-03 6.96401205e-03 6.65332653e-03 -6.65332653e-03 -9.95491140e-02 5.08101702e-02 9.95491140e-02 2.53788780e-03 9.11909087e-03 -2.53788780e-03 -6.78853114e-03 1.75623651e-03 3.65770659e-03 9.88504715e-03 -1.34997473e-02 2.68064379e-02 -1.14201355e-02 1.00868915e-02 -1.01418763e-02 4.47145138e-03 -2.15728427e-03 -6.96401205e-03 1.75321839e-02 9.29544937e-03 -9.95491140e-02 9.95491140e-02 5.08101702e-02 2.53788780e-03 -2.53788780e-03 9.11909087e-03 -6.78853114e-03 3.65770659e-03 1.75623651e-03 -9.88504715e-03 -1.34997473e-02 1.14201355e-02 -2.68064379e-02 1.00868915e-02 4.47145138e-03 -1.01418763e-02 2.15728427e-03 -6.96401205e-03 -9.29544937e-03 -1.75321839e-02 3.84928096e-03 2.53788780e-03 2.53788780e-03 -1.26047298e-04 7.82240681e-05 7.82240681e-05 -4.95769243e-03 -3.05324736e-03 -3.05324736e-03 -3.98965718e-03 3.80846317e-03 -3.80846317e-03 7.89606128e-05 1.92416159e-04 1.92416159e-04 5.76134452e-04 -2.19325430e-04 2.19325430e-04 2.53788780e-03 9.11909087e-03 -2.53788780e-03 7.82240681e-05 -8.82514067e-05 -7.82240681e-05 4.88057902e-03 3.11404071e-03 2.92421677e-03 -8.16061087e-05 3.98965718e-03 -3.81554628e-03 3.90840983e-03 -2.91222329e-04 -5.41259230e-05 -1.64256895e-04 1.78094826e-05 -5.76134452e-04 1.01124921e-04 -2.41137503e-04 2.53788780e-03 -2.53788780e-03 9.11909087e-03 7.82240681e-05 -7.82240681e-05 -8.82514067e-05 4.88057902e-03 2.92421677e-03 3.11404071e-03 8.16061087e-05 3.98965718e-03 -3.90840983e-03 3.81554628e-03 -2.91222329e-04 -1.64256895e-04 -5.41259230e-05 -1.78094826e-05 -5.76134452e-04 2.41137503e-04 -1.01124921e-04 -2.50681311e-01 1.29637869e-01 -3.43603397e-02 1.90677593e-02 2.55642069e-01 -5.76016724e-02 -2.31073552e-01 1.70706534e-01 -3.47760262e-02 2.20810865e-02 -8.69671403e-02 -8.69671403e-02 8.69671403e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 -2.31073552e-01 1.70706534e-01 -3.47760262e-02 2.20810865e-02 -8.69671403e-02 -8.69671403e-02 8.69671403e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 3.35169819e-01 -3.81033730e-02 -3.81033730e-02 -5.56692551e-02 4.55715201e-02 -4.68039666e-02 8.11017653e-03 -5.48328334e-03 -5.76016724e-02 1.36360519e-02 9.09946312e-02 -8.78615395e-02 1.51409429e-02 -1.08124682e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 -1.70016634e-02 -1.70016634e-02 1.70016634e-02 9.09946312e-02 -8.78615395e-02 1.51409429e-02 -1.08124682e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 -1.70016634e-02 -1.70016634e-02 1.70016634e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 -5.56692551e-02 1.70016634e-02 1.70016634e-02 3.82879364e-03 4.96626145e-03 -6.78853114e-03 -6.78853114e-03 -4.95769243e-03 4.88057902e-03 4.88057902e-03 -2.33214382e-01 -1.42959316e-01 -1.42959316e-01 -1.89783463e-01 1.84466621e-01 -1.84466621e-01 1.05548787e-02 6.47988162e-03 6.47988162e-03 2.78703402e-02 -8.34518149e-03 8.34518149e-03 1.19719253e-02 1.75623651e-03 3.65770659e-03 -3.05324736e-03 3.11404071e-03 2.92421677e-03 -1.42959316e-01 -8.74686860e-02 -8.75173384e-02 1.05433222e-04 -1.16218161e-01 1.13119631e-01 -1.12926204e-01 6.29096583e-03 3.92293329e-03 4.07789392e-03 -2.30094432e-05 1.70670281e-02 -4.94879992e-03 5.25183836e-03 1.19719253e-02 3.65770659e-03 1.75623651e-03 -3.05324736e-03 2.92421677e-03 3.11404071e-03 -1.42959316e-01 -8.75173384e-02 -8.74686860e-02 -1.05433222e-04 -1.16218161e-01 1.12926204e-01 -1.13119631e-01 6.29096583e-03 4.07789392e-03 3.92293329e-03 2.30094432e-05 1.70670281e-02 -5.25183836e-03 4.94879992e-03 9.88504715e-03 -9.88504715e-03 -8.16061087e-05 8.16061087e-05 1.05433222e-04 -1.05433222e-04 -1.78440391e-04 9.58226514e-06 9.58226514e-06 1.23324095e-04 -1.23324095e-04 3.89423179e-05 -1.91006991e-04 -1.91006991e-04 1.34997473e-02 -1.34997473e-02 -1.34997473e-02 -3.98965718e-03 3.98965718e-03 3.98965718e-03 -1.89783463e-01 -1.16218161e-01 -1.16218161e-01 5.86189719e-02 1.50037001e-01 -1.50037001e-01 8.58346559e-03 5.25627773e-03 5.25627773e-03 5.74991859e-03 -6.78582537e-03 6.78582537e-03 6.86525306e-04 2.68064379e-02 1.14201355e-02 3.80846317e-03 -3.81554628e-03 -3.90840983e-03 1.84466621e-01 1.13119631e-01 1.12926204e-01 9.58226514e-06 1.50037001e-01 -1.45660580e-01 1.45949895e-01 -8.49151503e-03 -5.04126819e-03 -5.01287669e-03 -2.09120600e-06 -2.20334385e-02 6.63188133e-03 -6.50712338e-03 -6.86525306e-04 -1.14201355e-02 -2.68064379e-02 -3.80846317e-03 3.90840983e-03 3.81554628e-03 -1.84466621e-01 -1.12926204e-01 -1.13119631e-01 9.58226514e-06 -1.50037001e-01 1.45949895e-01 -1.45660580e-01 8.49151503e-03 5.01287669e-03 5.04126819e-03 -2.09120600e-06 2.20334385e-02 -6.50712338e-03 6.63188133e-03 7.75107441e-03 1.00868915e-02 1.00868915e-02 7.89606128e-05 -2.91222329e-04 -2.91222329e-04 1.05548787e-02 6.29096583e-03 6.29096583e-03 8.58346559e-03 -8.49151503e-03 8.49151503e-03 -7.68391652e-04 -1.37774951e-04 -1.37774951e-04 -1.21596738e-03 2.58595459e-04 -2.58595459e-04 -7.88241731e-03 -1.01418763e-02 4.47145138e-03 1.92416159e-04 -5.41259230e-05 -1.64256895e-04 6.47988162e-03 3.92293329e-03 4.07789392e-03 1.23324095e-04 5.25627773e-03 -5.04126819e-03 5.01287669e-03 -1.37774951e-04 -3.28425304e-04 -1.58824815e-04 -2.69138959e-05 -7.44624905e-04 4.08892304e-04 -1.50120025e-04 -7.88241731e-03 4.47145138e-03 -1.01418763e-02 1.92416159e-04 -1.64256895e-04 -5.41259230e-05 6.47988162e-03 4.07789392e-03 3.92293329e-03 -1.23324095e-04 5.25627773e-03 -5.01287669e-03 5.04126819e-03 -1.37774951e-04 -1.58824815e-04 -3.28425304e-04 2.69138959e-05 -7.44624905e-04 1.50120025e-04 -4.08892304e-04 -2.15728427e-03 2.15728427e-03 1.78094826e-05 -1.78094826e-05 -2.30094432e-05 2.30094432e-05 3.89423179e-05 -2.09120600e-06 -2.09120600e-06 -2.69138959e-05 2.69138959e-05 -8.49865950e-06 4.16848167e-05 4.16848167e-05 6.96401205e-03 -6.96401205e-03 -6.96401205e-03 5.76134452e-04 -5.76134452e-04 -5.76134452e-04 2.78703402e-02 1.70670281e-02 1.70670281e-02 5.74991859e-03 -2.20334385e-02 2.20334385e-02 -1.21596738e-03 -7.44624905e-04 -7.44624905e-04 -2.25860819e-03 9.61306618e-04 -9.61306618e-04 6.65332653e-03 1.75321839e-02 -9.29544937e-03 -2.19325430e-04 1.01124921e-04 2.41137503e-04 -8.34518149e-03 -4.94879992e-03 -5.25183836e-03 -1.91006991e-04 -6.78582537e-03 6.63188133e-03 -6.50712338e-03 2.58595459e-04 4.08892304e-04 1.50120025e-04 4.16848167e-05 9.61306618e-04 -5.05218881e-04 1.34231757e-04 -6.65332653e-03 9.29544937e-03 -1.75321839e-02 2.19325430e-04 -2.41137503e-04 -1.01124921e-04 8.34518149e-03 5.25183836e-03 4.94879992e-03 -1.91006991e-04 6.78582537e-03 -6.50712338e-03 6.63188133e-03 -2.58595459e-04 -1.50120025e-04 -4.08892304e-04 4.16848167e-05 -9.61306618e-04 1.34231757e-04 -5.05218881e-04 - 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 - 0 12 24 36 48 66 86 106 124 144 164 170 180 190 190 200 206 216 226 226 236 254 274 294 308 326 346 366 384 404 424 438 456 476 496 -0 -2 0 496 - 1.46471486e+00 2.54883877e-01 1.24590418e-01 -9.35884290e-03 -2.50681311e-01 2.31073552e-01 2.31073552e-01 -2.31073552e-01 4.55715201e-02 -9.09946312e-02 -9.09946312e-02 9.09946312e-02 2.54883877e-01 1.70428957e+00 -9.34218553e-02 1.65342489e-01 1.29637869e-01 -1.70706534e-01 -1.70706534e-01 1.70706534e-01 -4.68039666e-02 8.78615395e-02 8.78615395e-02 -8.78615395e-02 1.24590418e-01 -9.34218553e-02 1.88920782e-02 -1.20468125e-02 -3.43603397e-02 3.47760262e-02 3.47760262e-02 -3.47760262e-02 8.11017653e-03 -1.51409429e-02 -1.51409429e-02 1.51409429e-02 -9.35884290e-03 1.65342489e-01 -1.20468125e-02 1.72406024e-02 1.90677593e-02 -2.20810865e-02 -2.20810865e-02 2.20810865e-02 -5.48328334e-03 1.08124682e-02 1.08124682e-02 -1.08124682e-02 1.89517553e+00 9.95491140e-02 9.95491140e-02 -9.15785008e-03 -2.53788780e-03 -2.53788780e-03 -2.12388496e-02 -1.19719253e-02 -1.19719253e-02 -1.34997473e-02 -6.86525306e-04 6.86525306e-04 -2.22701900e-02 7.88241731e-03 7.88241731e-03 -6.96401205e-03 -6.65332653e-03 6.65332653e-03 9.95491140e-02 2.04211641e+00 -9.95491140e-02 -2.53788780e-03 -3.88804018e-03 2.53788780e-03 6.78853114e-03 1.78035242e-02 -3.65770659e-03 -9.88504715e-03 1.34997473e-02 6.08947863e-03 1.14201355e-02 -1.00868915e-02 8.24231853e-03 -4.47145138e-03 2.15728427e-03 6.96401205e-03 -6.20170953e-03 -9.29544937e-03 9.95491140e-02 -9.95491140e-02 2.04211641e+00 -2.53788780e-03 2.53788780e-03 -3.88804018e-03 6.78853114e-03 -3.65770659e-03 1.78035242e-02 9.88504715e-03 1.34997473e-02 -1.14201355e-02 -6.08947863e-03 -1.00868915e-02 -4.47145138e-03 8.24231853e-03 -2.15728427e-03 6.96401205e-03 9.29544937e-03 6.20170953e-03 -9.15785008e-03 -2.53788780e-03 -2.53788780e-03 1.79684460e-04 -7.82240681e-05 -7.82240681e-05 4.90771661e-03 3.05324736e-03 3.05324736e-03 3.98965718e-03 -3.80846317e-03 3.80846317e-03 -8.90983131e-05 -1.92416159e-04 -1.92416159e-04 -5.76134452e-04 2.19325430e-04 -2.19325430e-04 -2.53788780e-03 -3.88804018e-03 2.53788780e-03 -7.82240681e-05 2.17480352e-04 7.82240681e-05 -4.88057902e-03 -2.92726385e-03 -2.92421677e-03 8.16061087e-05 -3.98965718e-03 3.98374436e-03 -3.90840983e-03 2.91222329e-04 4.87887308e-05 1.64256895e-04 -1.78094826e-05 5.76134452e-04 -3.17373257e-05 2.41137503e-04 -2.53788780e-03 2.53788780e-03 -3.88804018e-03 -7.82240681e-05 7.82240681e-05 2.17480352e-04 -4.88057902e-03 -2.92421677e-03 -2.92726385e-03 -8.16061087e-05 -3.98965718e-03 3.90840983e-03 -3.98374436e-03 2.91222329e-04 1.64256895e-04 4.87887308e-05 1.78094826e-05 5.76134452e-04 -2.41137503e-04 3.17373257e-05 -2.50681311e-01 1.29637869e-01 -3.43603397e-02 1.90677593e-02 2.55642069e-01 -5.76016724e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 -8.69671403e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 -8.69671403e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 -2.31073552e-01 1.70706534e-01 -3.47760262e-02 2.20810865e-02 -8.69671403e-02 -8.69671403e-02 5.09104100e-01 3.81033730e-02 3.81033730e-02 -1.31876001e-01 4.55715201e-02 -4.68039666e-02 8.11017653e-03 -5.48328334e-03 -5.76016724e-02 1.36360519e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 1.70016634e-02 1.70016634e-02 -1.70016634e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 1.70016634e-02 1.70016634e-02 -1.70016634e-02 9.09946312e-02 -8.78615395e-02 1.51409429e-02 -1.08124682e-02 3.81033730e-02 3.81033730e-02 -1.31876001e-01 -1.70016634e-02 -1.70016634e-02 3.78321204e-02 -2.12388496e-02 6.78853114e-03 6.78853114e-03 4.90771661e-03 -4.88057902e-03 -4.88057902e-03 2.33614448e-01 1.42959316e-01 1.42959316e-01 1.89783463e-01 -1.84466621e-01 1.84466621e-01 -1.02868307e-02 -6.47988162e-03 -6.47988162e-03 -2.78703402e-02 8.34518149e-03 -8.34518149e-03 -1.19719253e-02 1.78035242e-02 -3.65770659e-03 3.05324736e-03 -2.92726385e-03 -2.92421677e-03 1.42959316e-01 8.78151758e-02 8.75173384e-02 -1.05433222e-04 1.16218161e-01 -1.12710131e-01 1.12926204e-01 -6.29096583e-03 -3.94138564e-03 -4.07789392e-03 2.30094432e-05 -1.70670281e-02 5.10344353e-03 -5.25183836e-03 -1.19719253e-02 -3.65770659e-03 1.78035242e-02 3.05324736e-03 -2.92421677e-03 -2.92726385e-03 1.42959316e-01 8.75173384e-02 8.78151758e-02 1.05433222e-04 1.16218161e-01 -1.12926204e-01 1.12710131e-01 -6.29096583e-03 -4.07789392e-03 -3.94138564e-03 -2.30094432e-05 -1.70670281e-02 5.25183836e-03 -5.10344353e-03 -9.88504715e-03 9.88504715e-03 8.16061087e-05 -8.16061087e-05 -1.05433222e-04 1.05433222e-04 1.78440391e-04 -9.58226514e-06 -9.58226514e-06 -1.23324095e-04 1.23324095e-04 -3.89423179e-05 1.91006991e-04 1.91006991e-04 -1.34997473e-02 1.34997473e-02 1.34997473e-02 3.98965718e-03 -3.98965718e-03 -3.98965718e-03 1.89783463e-01 1.16218161e-01 1.16218161e-01 3.67563826e-01 -1.50037001e-01 1.50037001e-01 -8.58346559e-03 -5.25627773e-03 -5.25627773e-03 -3.91967293e-02 6.78582537e-03 -6.78582537e-03 -6.86525306e-04 6.08947863e-03 -1.14201355e-02 -3.80846317e-03 3.98374436e-03 3.90840983e-03 -1.84466621e-01 -1.12710131e-01 -1.12926204e-01 -9.58226514e-06 -1.50037001e-01 1.46241269e-01 -1.45949895e-01 8.49151503e-03 5.01097526e-03 5.01287669e-03 2.09120600e-06 2.20334385e-02 -6.42339379e-03 6.50712338e-03 6.86525306e-04 1.14201355e-02 -6.08947863e-03 3.80846317e-03 -3.90840983e-03 -3.98374436e-03 1.84466621e-01 1.12926204e-01 1.12710131e-01 -9.58226514e-06 1.50037001e-01 -1.45949895e-01 1.46241269e-01 -8.49151503e-03 -5.01287669e-03 -5.01097526e-03 2.09120600e-06 -2.20334385e-02 6.50712338e-03 -6.42339379e-03 -2.22701900e-02 -1.00868915e-02 -1.00868915e-02 -8.90983131e-05 2.91222329e-04 2.91222329e-04 -1.02868307e-02 -6.29096583e-03 -6.29096583e-03 -8.58346559e-03 8.49151503e-03 -8.49151503e-03 9.59486559e-04 1.37774951e-04 1.37774951e-04 1.21596738e-03 -2.58595459e-04 2.58595459e-04 7.88241731e-03 8.24231853e-03 -4.47145138e-03 -1.92416159e-04 4.87887308e-05 1.64256895e-04 -6.47988162e-03 -3.94138564e-03 -4.07789392e-03 -1.23324095e-04 -5.25627773e-03 5.01097526e-03 -5.01287669e-03 1.37774951e-04 3.30152350e-04 1.58824815e-04 2.69138959e-05 7.44624905e-04 -4.19384346e-04 1.50120025e-04 7.88241731e-03 -4.47145138e-03 8.24231853e-03 -1.92416159e-04 1.64256895e-04 4.87887308e-05 -6.47988162e-03 -4.07789392e-03 -3.94138564e-03 1.23324095e-04 -5.25627773e-03 5.01287669e-03 -5.01097526e-03 1.37774951e-04 1.58824815e-04 3.30152350e-04 -2.69138959e-05 7.44624905e-04 -1.50120025e-04 4.19384346e-04 2.15728427e-03 -2.15728427e-03 -1.78094826e-05 1.78094826e-05 2.30094432e-05 -2.30094432e-05 -3.89423179e-05 2.09120600e-06 2.09120600e-06 2.69138959e-05 -2.69138959e-05 8.49865950e-06 -4.16848167e-05 -4.16848167e-05 -6.96401205e-03 6.96401205e-03 6.96401205e-03 -5.76134452e-04 5.76134452e-04 5.76134452e-04 -2.78703402e-02 -1.70670281e-02 -1.70670281e-02 -3.91967293e-02 2.20334385e-02 -2.20334385e-02 1.21596738e-03 7.44624905e-04 7.44624905e-04 4.88351268e-03 -9.61306618e-04 9.61306618e-04 -6.65332653e-03 -6.20170953e-03 9.29544937e-03 2.19325430e-04 -3.17373257e-05 -2.41137503e-04 8.34518149e-03 5.10344353e-03 5.25183836e-03 1.91006991e-04 6.78582537e-03 -6.42339379e-03 6.50712338e-03 -2.58595459e-04 -4.19384346e-04 -1.50120025e-04 -4.16848167e-05 -9.61306618e-04 5.81078995e-04 -1.34231757e-04 6.65332653e-03 -9.29544937e-03 6.20170953e-03 -2.19325430e-04 2.41137503e-04 3.17373257e-05 -8.34518149e-03 -5.25183836e-03 -5.10344353e-03 1.91006991e-04 -6.78582537e-03 6.50712338e-03 -6.42339379e-03 2.58595459e-04 1.50120025e-04 4.19384346e-04 -4.16848167e-05 9.61306618e-04 -1.34231757e-04 5.81078995e-04 - 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 - 0 12 24 36 48 66 86 106 124 144 164 170 180 190 190 200 206 216 226 226 236 254 274 294 308 326 346 366 384 404 424 438 456 476 496 -0 -2 1 496 - -4.46730500e-01 2.90265885e-01 -6.65919095e-02 3.20736205e-02 -2.50681311e-01 -2.31073552e-01 -2.31073552e-01 2.31073552e-01 4.55715201e-02 9.09946312e-02 9.09946312e-02 -9.09946312e-02 2.90265885e-01 -7.77208948e-02 3.49623849e-02 -1.81562170e-02 1.29637869e-01 1.70706534e-01 1.70706534e-01 -1.70706534e-01 -4.68039666e-02 -8.78615395e-02 -8.78615395e-02 8.78615395e-02 -6.65919095e-02 3.49623849e-02 -8.97965282e-03 4.90391018e-03 -3.43603397e-02 -3.47760262e-02 -3.47760262e-02 3.47760262e-02 8.11017653e-03 1.51409429e-02 1.51409429e-02 -1.51409429e-02 3.20736205e-02 -1.81562170e-02 4.90391018e-03 -2.40214415e-03 1.90677593e-02 2.20810865e-02 2.20810865e-02 -2.20810865e-02 -5.48328334e-03 -1.08124682e-02 -1.08124682e-02 1.08124682e-02 -9.61307016e-02 -9.95491140e-02 -9.95491140e-02 3.84928096e-03 2.53788780e-03 2.53788780e-03 4.96626145e-03 1.19719253e-02 1.19719253e-02 1.34997473e-02 6.86525306e-04 -6.86525306e-04 7.75107441e-03 -7.88241731e-03 -7.88241731e-03 6.96401205e-03 6.65332653e-03 -6.65332653e-03 -9.95491140e-02 5.08101702e-02 9.95491140e-02 2.53788780e-03 9.11909087e-03 -2.53788780e-03 -6.78853114e-03 1.75623651e-03 3.65770659e-03 9.88504715e-03 -1.34997473e-02 2.68064379e-02 -1.14201355e-02 1.00868915e-02 -1.01418763e-02 4.47145138e-03 -2.15728427e-03 -6.96401205e-03 1.75321839e-02 9.29544937e-03 -9.95491140e-02 9.95491140e-02 5.08101702e-02 2.53788780e-03 -2.53788780e-03 9.11909087e-03 -6.78853114e-03 3.65770659e-03 1.75623651e-03 -9.88504715e-03 -1.34997473e-02 1.14201355e-02 -2.68064379e-02 1.00868915e-02 4.47145138e-03 -1.01418763e-02 2.15728427e-03 -6.96401205e-03 -9.29544937e-03 -1.75321839e-02 3.84928096e-03 2.53788780e-03 2.53788780e-03 -1.26047298e-04 7.82240681e-05 7.82240681e-05 -4.95769243e-03 -3.05324736e-03 -3.05324736e-03 -3.98965718e-03 3.80846317e-03 -3.80846317e-03 7.89606128e-05 1.92416159e-04 1.92416159e-04 5.76134452e-04 -2.19325430e-04 2.19325430e-04 2.53788780e-03 9.11909087e-03 -2.53788780e-03 7.82240681e-05 -8.82514067e-05 -7.82240681e-05 4.88057902e-03 3.11404071e-03 2.92421677e-03 -8.16061087e-05 3.98965718e-03 -3.81554628e-03 3.90840983e-03 -2.91222329e-04 -5.41259230e-05 -1.64256895e-04 1.78094826e-05 -5.76134452e-04 1.01124921e-04 -2.41137503e-04 2.53788780e-03 -2.53788780e-03 9.11909087e-03 7.82240681e-05 -7.82240681e-05 -8.82514067e-05 4.88057902e-03 2.92421677e-03 3.11404071e-03 8.16061087e-05 3.98965718e-03 -3.90840983e-03 3.81554628e-03 -2.91222329e-04 -1.64256895e-04 -5.41259230e-05 -1.78094826e-05 -5.76134452e-04 2.41137503e-04 -1.01124921e-04 -2.50681311e-01 1.29637869e-01 -3.43603397e-02 1.90677593e-02 2.55642069e-01 -5.76016724e-02 -2.31073552e-01 1.70706534e-01 -3.47760262e-02 2.20810865e-02 -8.69671403e-02 -8.69671403e-02 8.69671403e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 -2.31073552e-01 1.70706534e-01 -3.47760262e-02 2.20810865e-02 -8.69671403e-02 -8.69671403e-02 8.69671403e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 3.35169819e-01 -3.81033730e-02 -3.81033730e-02 -5.56692551e-02 4.55715201e-02 -4.68039666e-02 8.11017653e-03 -5.48328334e-03 -5.76016724e-02 1.36360519e-02 9.09946312e-02 -8.78615395e-02 1.51409429e-02 -1.08124682e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 -1.70016634e-02 -1.70016634e-02 1.70016634e-02 9.09946312e-02 -8.78615395e-02 1.51409429e-02 -1.08124682e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 -1.70016634e-02 -1.70016634e-02 1.70016634e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 -5.56692551e-02 1.70016634e-02 1.70016634e-02 3.82879364e-03 4.96626145e-03 -6.78853114e-03 -6.78853114e-03 -4.95769243e-03 4.88057902e-03 4.88057902e-03 -2.33214382e-01 -1.42959316e-01 -1.42959316e-01 -1.89783463e-01 1.84466621e-01 -1.84466621e-01 1.05548787e-02 6.47988162e-03 6.47988162e-03 2.78703402e-02 -8.34518149e-03 8.34518149e-03 1.19719253e-02 1.75623651e-03 3.65770659e-03 -3.05324736e-03 3.11404071e-03 2.92421677e-03 -1.42959316e-01 -8.74686860e-02 -8.75173384e-02 1.05433222e-04 -1.16218161e-01 1.13119631e-01 -1.12926204e-01 6.29096583e-03 3.92293329e-03 4.07789392e-03 -2.30094432e-05 1.70670281e-02 -4.94879992e-03 5.25183836e-03 1.19719253e-02 3.65770659e-03 1.75623651e-03 -3.05324736e-03 2.92421677e-03 3.11404071e-03 -1.42959316e-01 -8.75173384e-02 -8.74686860e-02 -1.05433222e-04 -1.16218161e-01 1.12926204e-01 -1.13119631e-01 6.29096583e-03 4.07789392e-03 3.92293329e-03 2.30094432e-05 1.70670281e-02 -5.25183836e-03 4.94879992e-03 9.88504715e-03 -9.88504715e-03 -8.16061087e-05 8.16061087e-05 1.05433222e-04 -1.05433222e-04 -1.78440391e-04 9.58226514e-06 9.58226514e-06 1.23324095e-04 -1.23324095e-04 3.89423179e-05 -1.91006991e-04 -1.91006991e-04 1.34997473e-02 -1.34997473e-02 -1.34997473e-02 -3.98965718e-03 3.98965718e-03 3.98965718e-03 -1.89783463e-01 -1.16218161e-01 -1.16218161e-01 5.86189719e-02 1.50037001e-01 -1.50037001e-01 8.58346559e-03 5.25627773e-03 5.25627773e-03 5.74991859e-03 -6.78582537e-03 6.78582537e-03 6.86525306e-04 2.68064379e-02 1.14201355e-02 3.80846317e-03 -3.81554628e-03 -3.90840983e-03 1.84466621e-01 1.13119631e-01 1.12926204e-01 9.58226514e-06 1.50037001e-01 -1.45660580e-01 1.45949895e-01 -8.49151503e-03 -5.04126819e-03 -5.01287669e-03 -2.09120600e-06 -2.20334385e-02 6.63188133e-03 -6.50712338e-03 -6.86525306e-04 -1.14201355e-02 -2.68064379e-02 -3.80846317e-03 3.90840983e-03 3.81554628e-03 -1.84466621e-01 -1.12926204e-01 -1.13119631e-01 9.58226514e-06 -1.50037001e-01 1.45949895e-01 -1.45660580e-01 8.49151503e-03 5.01287669e-03 5.04126819e-03 -2.09120600e-06 2.20334385e-02 -6.50712338e-03 6.63188133e-03 7.75107441e-03 1.00868915e-02 1.00868915e-02 7.89606128e-05 -2.91222329e-04 -2.91222329e-04 1.05548787e-02 6.29096583e-03 6.29096583e-03 8.58346559e-03 -8.49151503e-03 8.49151503e-03 -7.68391652e-04 -1.37774951e-04 -1.37774951e-04 -1.21596738e-03 2.58595459e-04 -2.58595459e-04 -7.88241731e-03 -1.01418763e-02 4.47145138e-03 1.92416159e-04 -5.41259230e-05 -1.64256895e-04 6.47988162e-03 3.92293329e-03 4.07789392e-03 1.23324095e-04 5.25627773e-03 -5.04126819e-03 5.01287669e-03 -1.37774951e-04 -3.28425304e-04 -1.58824815e-04 -2.69138959e-05 -7.44624905e-04 4.08892304e-04 -1.50120025e-04 -7.88241731e-03 4.47145138e-03 -1.01418763e-02 1.92416159e-04 -1.64256895e-04 -5.41259230e-05 6.47988162e-03 4.07789392e-03 3.92293329e-03 -1.23324095e-04 5.25627773e-03 -5.01287669e-03 5.04126819e-03 -1.37774951e-04 -1.58824815e-04 -3.28425304e-04 2.69138959e-05 -7.44624905e-04 1.50120025e-04 -4.08892304e-04 -2.15728427e-03 2.15728427e-03 1.78094826e-05 -1.78094826e-05 -2.30094432e-05 2.30094432e-05 3.89423179e-05 -2.09120600e-06 -2.09120600e-06 -2.69138959e-05 2.69138959e-05 -8.49865950e-06 4.16848167e-05 4.16848167e-05 6.96401205e-03 -6.96401205e-03 -6.96401205e-03 5.76134452e-04 -5.76134452e-04 -5.76134452e-04 2.78703402e-02 1.70670281e-02 1.70670281e-02 5.74991859e-03 -2.20334385e-02 2.20334385e-02 -1.21596738e-03 -7.44624905e-04 -7.44624905e-04 -2.25860819e-03 9.61306618e-04 -9.61306618e-04 6.65332653e-03 1.75321839e-02 -9.29544937e-03 -2.19325430e-04 1.01124921e-04 2.41137503e-04 -8.34518149e-03 -4.94879992e-03 -5.25183836e-03 -1.91006991e-04 -6.78582537e-03 6.63188133e-03 -6.50712338e-03 2.58595459e-04 4.08892304e-04 1.50120025e-04 4.16848167e-05 9.61306618e-04 -5.05218881e-04 1.34231757e-04 -6.65332653e-03 9.29544937e-03 -1.75321839e-02 2.19325430e-04 -2.41137503e-04 -1.01124921e-04 8.34518149e-03 5.25183836e-03 4.94879992e-03 -1.91006991e-04 6.78582537e-03 -6.50712338e-03 6.63188133e-03 -2.58595459e-04 -1.50120025e-04 -4.08892304e-04 4.16848167e-05 -9.61306618e-04 1.34231757e-04 -5.05218881e-04 - 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 - 0 12 24 36 48 66 86 106 124 144 164 170 180 190 190 200 206 216 226 226 236 254 274 294 308 326 346 366 384 404 424 438 456 476 496 -0 -2 2 496 - 1.46471486e+00 2.54883877e-01 1.24590418e-01 -9.35884290e-03 -2.50681311e-01 2.31073552e-01 2.31073552e-01 -2.31073552e-01 4.55715201e-02 -9.09946312e-02 -9.09946312e-02 9.09946312e-02 2.54883877e-01 1.70428957e+00 -9.34218553e-02 1.65342489e-01 1.29637869e-01 -1.70706534e-01 -1.70706534e-01 1.70706534e-01 -4.68039666e-02 8.78615395e-02 8.78615395e-02 -8.78615395e-02 1.24590418e-01 -9.34218553e-02 1.88920782e-02 -1.20468125e-02 -3.43603397e-02 3.47760262e-02 3.47760262e-02 -3.47760262e-02 8.11017653e-03 -1.51409429e-02 -1.51409429e-02 1.51409429e-02 -9.35884290e-03 1.65342489e-01 -1.20468125e-02 1.72406024e-02 1.90677593e-02 -2.20810865e-02 -2.20810865e-02 2.20810865e-02 -5.48328334e-03 1.08124682e-02 1.08124682e-02 -1.08124682e-02 1.89517553e+00 9.95491140e-02 9.95491140e-02 -9.15785008e-03 -2.53788780e-03 -2.53788780e-03 -2.12388496e-02 -1.19719253e-02 -1.19719253e-02 -1.34997473e-02 -6.86525306e-04 6.86525306e-04 -2.22701900e-02 7.88241731e-03 7.88241731e-03 -6.96401205e-03 -6.65332653e-03 6.65332653e-03 9.95491140e-02 2.04211641e+00 -9.95491140e-02 -2.53788780e-03 -3.88804018e-03 2.53788780e-03 6.78853114e-03 1.78035242e-02 -3.65770659e-03 -9.88504715e-03 1.34997473e-02 6.08947863e-03 1.14201355e-02 -1.00868915e-02 8.24231853e-03 -4.47145138e-03 2.15728427e-03 6.96401205e-03 -6.20170953e-03 -9.29544937e-03 9.95491140e-02 -9.95491140e-02 2.04211641e+00 -2.53788780e-03 2.53788780e-03 -3.88804018e-03 6.78853114e-03 -3.65770659e-03 1.78035242e-02 9.88504715e-03 1.34997473e-02 -1.14201355e-02 -6.08947863e-03 -1.00868915e-02 -4.47145138e-03 8.24231853e-03 -2.15728427e-03 6.96401205e-03 9.29544937e-03 6.20170953e-03 -9.15785008e-03 -2.53788780e-03 -2.53788780e-03 1.79684460e-04 -7.82240681e-05 -7.82240681e-05 4.90771661e-03 3.05324736e-03 3.05324736e-03 3.98965718e-03 -3.80846317e-03 3.80846317e-03 -8.90983131e-05 -1.92416159e-04 -1.92416159e-04 -5.76134452e-04 2.19325430e-04 -2.19325430e-04 -2.53788780e-03 -3.88804018e-03 2.53788780e-03 -7.82240681e-05 2.17480352e-04 7.82240681e-05 -4.88057902e-03 -2.92726385e-03 -2.92421677e-03 8.16061087e-05 -3.98965718e-03 3.98374436e-03 -3.90840983e-03 2.91222329e-04 4.87887308e-05 1.64256895e-04 -1.78094826e-05 5.76134452e-04 -3.17373257e-05 2.41137503e-04 -2.53788780e-03 2.53788780e-03 -3.88804018e-03 -7.82240681e-05 7.82240681e-05 2.17480352e-04 -4.88057902e-03 -2.92421677e-03 -2.92726385e-03 -8.16061087e-05 -3.98965718e-03 3.90840983e-03 -3.98374436e-03 2.91222329e-04 1.64256895e-04 4.87887308e-05 1.78094826e-05 5.76134452e-04 -2.41137503e-04 3.17373257e-05 -2.50681311e-01 1.29637869e-01 -3.43603397e-02 1.90677593e-02 2.55642069e-01 -5.76016724e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 -8.69671403e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 -8.69671403e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 -2.31073552e-01 1.70706534e-01 -3.47760262e-02 2.20810865e-02 -8.69671403e-02 -8.69671403e-02 5.09104100e-01 3.81033730e-02 3.81033730e-02 -1.31876001e-01 4.55715201e-02 -4.68039666e-02 8.11017653e-03 -5.48328334e-03 -5.76016724e-02 1.36360519e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 1.70016634e-02 1.70016634e-02 -1.70016634e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 1.70016634e-02 1.70016634e-02 -1.70016634e-02 9.09946312e-02 -8.78615395e-02 1.51409429e-02 -1.08124682e-02 3.81033730e-02 3.81033730e-02 -1.31876001e-01 -1.70016634e-02 -1.70016634e-02 3.78321204e-02 -2.12388496e-02 6.78853114e-03 6.78853114e-03 4.90771661e-03 -4.88057902e-03 -4.88057902e-03 2.33614448e-01 1.42959316e-01 1.42959316e-01 1.89783463e-01 -1.84466621e-01 1.84466621e-01 -1.02868307e-02 -6.47988162e-03 -6.47988162e-03 -2.78703402e-02 8.34518149e-03 -8.34518149e-03 -1.19719253e-02 1.78035242e-02 -3.65770659e-03 3.05324736e-03 -2.92726385e-03 -2.92421677e-03 1.42959316e-01 8.78151758e-02 8.75173384e-02 -1.05433222e-04 1.16218161e-01 -1.12710131e-01 1.12926204e-01 -6.29096583e-03 -3.94138564e-03 -4.07789392e-03 2.30094432e-05 -1.70670281e-02 5.10344353e-03 -5.25183836e-03 -1.19719253e-02 -3.65770659e-03 1.78035242e-02 3.05324736e-03 -2.92421677e-03 -2.92726385e-03 1.42959316e-01 8.75173384e-02 8.78151758e-02 1.05433222e-04 1.16218161e-01 -1.12926204e-01 1.12710131e-01 -6.29096583e-03 -4.07789392e-03 -3.94138564e-03 -2.30094432e-05 -1.70670281e-02 5.25183836e-03 -5.10344353e-03 -9.88504715e-03 9.88504715e-03 8.16061087e-05 -8.16061087e-05 -1.05433222e-04 1.05433222e-04 1.78440391e-04 -9.58226514e-06 -9.58226514e-06 -1.23324095e-04 1.23324095e-04 -3.89423179e-05 1.91006991e-04 1.91006991e-04 -1.34997473e-02 1.34997473e-02 1.34997473e-02 3.98965718e-03 -3.98965718e-03 -3.98965718e-03 1.89783463e-01 1.16218161e-01 1.16218161e-01 3.67563826e-01 -1.50037001e-01 1.50037001e-01 -8.58346559e-03 -5.25627773e-03 -5.25627773e-03 -3.91967293e-02 6.78582537e-03 -6.78582537e-03 -6.86525306e-04 6.08947863e-03 -1.14201355e-02 -3.80846317e-03 3.98374436e-03 3.90840983e-03 -1.84466621e-01 -1.12710131e-01 -1.12926204e-01 -9.58226514e-06 -1.50037001e-01 1.46241269e-01 -1.45949895e-01 8.49151503e-03 5.01097526e-03 5.01287669e-03 2.09120600e-06 2.20334385e-02 -6.42339379e-03 6.50712338e-03 6.86525306e-04 1.14201355e-02 -6.08947863e-03 3.80846317e-03 -3.90840983e-03 -3.98374436e-03 1.84466621e-01 1.12926204e-01 1.12710131e-01 -9.58226514e-06 1.50037001e-01 -1.45949895e-01 1.46241269e-01 -8.49151503e-03 -5.01287669e-03 -5.01097526e-03 2.09120600e-06 -2.20334385e-02 6.50712338e-03 -6.42339379e-03 -2.22701900e-02 -1.00868915e-02 -1.00868915e-02 -8.90983131e-05 2.91222329e-04 2.91222329e-04 -1.02868307e-02 -6.29096583e-03 -6.29096583e-03 -8.58346559e-03 8.49151503e-03 -8.49151503e-03 9.59486559e-04 1.37774951e-04 1.37774951e-04 1.21596738e-03 -2.58595459e-04 2.58595459e-04 7.88241731e-03 8.24231853e-03 -4.47145138e-03 -1.92416159e-04 4.87887308e-05 1.64256895e-04 -6.47988162e-03 -3.94138564e-03 -4.07789392e-03 -1.23324095e-04 -5.25627773e-03 5.01097526e-03 -5.01287669e-03 1.37774951e-04 3.30152350e-04 1.58824815e-04 2.69138959e-05 7.44624905e-04 -4.19384346e-04 1.50120025e-04 7.88241731e-03 -4.47145138e-03 8.24231853e-03 -1.92416159e-04 1.64256895e-04 4.87887308e-05 -6.47988162e-03 -4.07789392e-03 -3.94138564e-03 1.23324095e-04 -5.25627773e-03 5.01287669e-03 -5.01097526e-03 1.37774951e-04 1.58824815e-04 3.30152350e-04 -2.69138959e-05 7.44624905e-04 -1.50120025e-04 4.19384346e-04 2.15728427e-03 -2.15728427e-03 -1.78094826e-05 1.78094826e-05 2.30094432e-05 -2.30094432e-05 -3.89423179e-05 2.09120600e-06 2.09120600e-06 2.69138959e-05 -2.69138959e-05 8.49865950e-06 -4.16848167e-05 -4.16848167e-05 -6.96401205e-03 6.96401205e-03 6.96401205e-03 -5.76134452e-04 5.76134452e-04 5.76134452e-04 -2.78703402e-02 -1.70670281e-02 -1.70670281e-02 -3.91967293e-02 2.20334385e-02 -2.20334385e-02 1.21596738e-03 7.44624905e-04 7.44624905e-04 4.88351268e-03 -9.61306618e-04 9.61306618e-04 -6.65332653e-03 -6.20170953e-03 9.29544937e-03 2.19325430e-04 -3.17373257e-05 -2.41137503e-04 8.34518149e-03 5.10344353e-03 5.25183836e-03 1.91006991e-04 6.78582537e-03 -6.42339379e-03 6.50712338e-03 -2.58595459e-04 -4.19384346e-04 -1.50120025e-04 -4.16848167e-05 -9.61306618e-04 5.81078995e-04 -1.34231757e-04 6.65332653e-03 -9.29544937e-03 6.20170953e-03 -2.19325430e-04 2.41137503e-04 3.17373257e-05 -8.34518149e-03 -5.25183836e-03 -5.10344353e-03 1.91006991e-04 -6.78582537e-03 6.50712338e-03 -6.42339379e-03 2.58595459e-04 1.50120025e-04 4.19384346e-04 -4.16848167e-05 9.61306618e-04 -1.34231757e-04 5.81078995e-04 - 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 - 0 12 24 36 48 66 86 106 124 144 164 170 180 190 190 200 206 216 226 226 236 254 274 294 308 326 346 366 384 404 424 438 456 476 496 -0 -1 -1 496 - 6.10668701e-01 -7.51799909e-02 6.94266500e-02 -1.13818158e-02 2.50681311e-01 2.31073552e-01 2.31073552e-01 -2.31073552e-01 -4.55715201e-02 -9.09946312e-02 -9.09946312e-02 9.09946312e-02 -7.51799909e-02 6.30743818e-01 -3.88656825e-02 8.24503254e-02 -1.29637869e-01 -1.70706534e-01 -1.70706534e-01 1.70706534e-01 4.68039666e-02 8.78615395e-02 8.78615395e-02 -8.78615395e-02 6.94266500e-02 -3.88656825e-02 9.24320123e-03 -5.59159516e-03 3.43603397e-02 3.47760262e-02 3.47760262e-02 -3.47760262e-02 -8.11017653e-03 -1.51409429e-02 -1.51409429e-02 1.51409429e-02 -1.13818158e-02 8.24503254e-02 -5.59159516e-03 1.01087384e-02 -1.90677593e-02 -2.20810865e-02 -2.20810865e-02 2.20810865e-02 5.48328334e-03 1.08124682e-02 1.08124682e-02 -1.08124682e-02 6.62931071e-01 9.95491140e-02 9.95491140e-02 -9.36131516e-03 -2.53788780e-03 -2.53788780e-03 -1.84743808e-04 -1.19719253e-02 -1.19719253e-02 -1.34997473e-02 -6.86525306e-04 6.86525306e-04 -6.96842667e-03 7.88241731e-03 7.88241731e-03 -6.96401205e-03 -6.65332653e-03 6.65332653e-03 9.95491140e-02 5.15990200e-01 -9.95491140e-02 -2.53788780e-03 -1.46311251e-02 2.53788780e-03 6.78853114e-03 -4.68430612e-03 -3.65770659e-03 -9.88504715e-03 1.34997473e-02 -2.30263163e-02 1.14201355e-02 -1.00868915e-02 9.66260440e-03 -4.47145138e-03 2.15728427e-03 6.96401205e-03 -1.69134466e-02 -9.29544937e-03 9.95491140e-02 -9.95491140e-02 5.15990200e-01 -2.53788780e-03 2.53788780e-03 -1.46311251e-02 6.78853114e-03 -3.65770659e-03 -4.68430612e-03 9.88504715e-03 1.34997473e-02 -1.14201355e-02 2.30263163e-02 -1.00868915e-02 -4.47145138e-03 9.66260440e-03 -2.15728427e-03 6.96401205e-03 9.29544937e-03 1.69134466e-02 -9.36131516e-03 -2.53788780e-03 -2.53788780e-03 1.79650864e-04 -7.82240681e-05 -7.82240681e-05 4.91119301e-03 3.05324736e-03 3.05324736e-03 3.98965718e-03 -3.80846317e-03 3.80846317e-03 -8.65717248e-05 -1.92416159e-04 -1.92416159e-04 -5.76134452e-04 2.19325430e-04 -2.19325430e-04 -2.53788780e-03 -1.46311251e-02 2.53788780e-03 -7.82240681e-05 1.41854973e-04 7.82240681e-05 -4.88057902e-03 -3.08556574e-03 -2.92421677e-03 8.16061087e-05 -3.98965718e-03 3.77878526e-03 -3.90840983e-03 2.91222329e-04 5.87867582e-05 1.64256895e-04 -1.78094826e-05 5.76134452e-04 -1.07142033e-04 2.41137503e-04 -2.53788780e-03 2.53788780e-03 -1.46311251e-02 -7.82240681e-05 7.82240681e-05 1.41854973e-04 -4.88057902e-03 -2.92421677e-03 -3.08556574e-03 -8.16061087e-05 -3.98965718e-03 3.90840983e-03 -3.77878526e-03 2.91222329e-04 1.64256895e-04 5.87867582e-05 1.78094826e-05 5.76134452e-04 -2.41137503e-04 1.07142033e-04 2.50681311e-01 -1.29637869e-01 3.43603397e-02 -1.90677593e-02 -2.55642069e-01 5.76016724e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 -8.69671403e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 -8.69671403e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 -2.31073552e-01 1.70706534e-01 -3.47760262e-02 2.20810865e-02 -8.69671403e-02 -8.69671403e-02 -3.35169819e-01 3.81033730e-02 3.81033730e-02 5.56692551e-02 -4.55715201e-02 4.68039666e-02 -8.11017653e-03 5.48328334e-03 5.76016724e-02 -1.36360519e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 1.70016634e-02 1.70016634e-02 -1.70016634e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 1.70016634e-02 1.70016634e-02 -1.70016634e-02 9.09946312e-02 -8.78615395e-02 1.51409429e-02 -1.08124682e-02 3.81033730e-02 3.81033730e-02 5.56692551e-02 -1.70016634e-02 -1.70016634e-02 -3.82879364e-03 -1.84743808e-04 6.78853114e-03 6.78853114e-03 4.91119301e-03 -4.88057902e-03 -4.88057902e-03 2.33254718e-01 1.42959316e-01 1.42959316e-01 1.89783463e-01 -1.84466621e-01 1.84466621e-01 -1.05482763e-02 -6.47988162e-03 -6.47988162e-03 -2.78703402e-02 8.34518149e-03 -8.34518149e-03 -1.19719253e-02 -4.68430612e-03 -3.65770659e-03 3.05324736e-03 -3.08556574e-03 -2.92421677e-03 1.42959316e-01 8.74838123e-02 8.75173384e-02 -1.05433222e-04 1.16218161e-01 -1.13139159e-01 1.12926204e-01 -6.29096583e-03 -3.92045739e-03 -4.07789392e-03 2.30094432e-05 -1.70670281e-02 4.94560355e-03 -5.25183836e-03 -1.19719253e-02 -3.65770659e-03 -4.68430612e-03 3.05324736e-03 -2.92421677e-03 -3.08556574e-03 1.42959316e-01 8.75173384e-02 8.74838123e-02 1.05433222e-04 1.16218161e-01 -1.12926204e-01 1.13139159e-01 -6.29096583e-03 -4.07789392e-03 -3.92045739e-03 -2.30094432e-05 -1.70670281e-02 5.25183836e-03 -4.94560355e-03 -9.88504715e-03 9.88504715e-03 8.16061087e-05 -8.16061087e-05 -1.05433222e-04 1.05433222e-04 1.78440391e-04 -9.58226514e-06 -9.58226514e-06 -1.23324095e-04 1.23324095e-04 -3.89423179e-05 1.91006991e-04 1.91006991e-04 -1.34997473e-02 1.34997473e-02 1.34997473e-02 3.98965718e-03 -3.98965718e-03 -3.98965718e-03 1.89783463e-01 1.16218161e-01 1.16218161e-01 3.67563826e-01 -1.50037001e-01 1.50037001e-01 -8.58346559e-03 -5.25627773e-03 -5.25627773e-03 -3.91967293e-02 6.78582537e-03 -6.78582537e-03 -6.86525306e-04 -2.30263163e-02 -1.14201355e-02 -3.80846317e-03 3.77878526e-03 3.90840983e-03 -1.84466621e-01 -1.13139159e-01 -1.12926204e-01 -9.58226514e-06 -1.50037001e-01 1.45685791e-01 -1.45949895e-01 8.49151503e-03 5.03807181e-03 5.01287669e-03 2.09120600e-06 2.20334385e-02 -6.62775483e-03 6.50712338e-03 6.86525306e-04 1.14201355e-02 2.30263163e-02 3.80846317e-03 -3.90840983e-03 -3.77878526e-03 1.84466621e-01 1.12926204e-01 1.13139159e-01 -9.58226514e-06 1.50037001e-01 -1.45949895e-01 1.45685791e-01 -8.49151503e-03 -5.01287669e-03 -5.03807181e-03 2.09120600e-06 -2.20334385e-02 6.50712338e-03 -6.62775483e-03 -6.96842667e-03 -1.00868915e-02 -1.00868915e-02 -8.65717248e-05 2.91222329e-04 2.91222329e-04 -1.05482763e-02 -6.29096583e-03 -6.29096583e-03 -8.58346559e-03 8.49151503e-03 -8.49151503e-03 7.69472345e-04 1.37774951e-04 1.37774951e-04 1.21596738e-03 -2.58595459e-04 2.58595459e-04 7.88241731e-03 9.66260440e-03 -4.47145138e-03 -1.92416159e-04 5.87867582e-05 1.64256895e-04 -6.47988162e-03 -3.92045739e-03 -4.07789392e-03 -1.23324095e-04 -5.25627773e-03 5.03807181e-03 -5.01287669e-03 1.37774951e-04 3.28830564e-04 1.58824815e-04 2.69138959e-05 7.44624905e-04 -4.09415493e-04 1.50120025e-04 7.88241731e-03 -4.47145138e-03 9.66260440e-03 -1.92416159e-04 1.64256895e-04 5.87867582e-05 -6.47988162e-03 -4.07789392e-03 -3.92045739e-03 1.23324095e-04 -5.25627773e-03 5.01287669e-03 -5.03807181e-03 1.37774951e-04 1.58824815e-04 3.28830564e-04 -2.69138959e-05 7.44624905e-04 -1.50120025e-04 4.09415493e-04 2.15728427e-03 -2.15728427e-03 -1.78094826e-05 1.78094826e-05 2.30094432e-05 -2.30094432e-05 -3.89423179e-05 2.09120600e-06 2.09120600e-06 2.69138959e-05 -2.69138959e-05 8.49865950e-06 -4.16848167e-05 -4.16848167e-05 -6.96401205e-03 6.96401205e-03 6.96401205e-03 -5.76134452e-04 5.76134452e-04 5.76134452e-04 -2.78703402e-02 -1.70670281e-02 -1.70670281e-02 -3.91967293e-02 2.20334385e-02 -2.20334385e-02 1.21596738e-03 7.44624905e-04 7.44624905e-04 4.88351268e-03 -9.61306618e-04 9.61306618e-04 -6.65332653e-03 -1.69134466e-02 9.29544937e-03 2.19325430e-04 -1.07142033e-04 -2.41137503e-04 8.34518149e-03 4.94560355e-03 5.25183836e-03 1.91006991e-04 6.78582537e-03 -6.62775483e-03 6.50712338e-03 -2.58595459e-04 -4.09415493e-04 -1.50120025e-04 -4.16848167e-05 -9.61306618e-04 5.05894315e-04 -1.34231757e-04 6.65332653e-03 -9.29544937e-03 1.69134466e-02 -2.19325430e-04 2.41137503e-04 1.07142033e-04 -8.34518149e-03 -5.25183836e-03 -4.94560355e-03 1.91006991e-04 -6.78582537e-03 6.50712338e-03 -6.62775483e-03 2.58595459e-04 1.50120025e-04 4.09415493e-04 -4.16848167e-05 9.61306618e-04 -1.34231757e-04 5.05894315e-04 - 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 - 0 12 24 36 48 66 86 106 124 144 164 170 180 190 190 200 206 216 226 226 236 254 274 294 308 326 346 366 384 404 424 438 456 476 496 -0 -1 0 496 - -1.30077665e+00 -3.97979828e-02 -1.21755678e-01 3.00506476e-02 2.50681311e-01 -2.31073552e-01 -2.31073552e-01 2.31073552e-01 -4.55715201e-02 9.09946312e-02 9.09946312e-02 -9.09946312e-02 -3.97979828e-02 -1.15126664e+00 8.95185576e-02 -1.01048380e-01 -1.29637869e-01 1.70706534e-01 1.70706534e-01 -1.70706534e-01 4.68039666e-02 -8.78615395e-02 -8.78615395e-02 8.78615395e-02 -1.21755678e-01 8.95185576e-02 -1.86285298e-02 1.13591275e-02 3.43603397e-02 -3.47760262e-02 -3.47760262e-02 3.47760262e-02 -8.11017653e-03 1.51409429e-02 1.51409429e-02 -1.51409429e-02 3.00506476e-02 -1.01048380e-01 1.13591275e-02 -9.53400814e-03 -1.90677593e-02 2.20810865e-02 2.20810865e-02 -2.20810865e-02 5.48328334e-03 -1.08124682e-02 -1.08124682e-02 1.08124682e-02 -1.32837516e+00 -9.95491140e-02 -9.95491140e-02 3.64581589e-03 2.53788780e-03 2.53788780e-03 2.60203672e-02 1.19719253e-02 1.19719253e-02 1.34997473e-02 6.86525306e-04 -6.86525306e-04 2.30528378e-02 -7.88241731e-03 -7.88241731e-03 6.96401205e-03 6.65332653e-03 -6.65332653e-03 -9.95491140e-02 -1.47531604e+00 9.95491140e-02 2.53788780e-03 -1.62399402e-03 -2.53788780e-03 -6.78853114e-03 -2.07315938e-02 3.65770659e-03 9.88504715e-03 -1.34997473e-02 -2.30935703e-03 -1.14201355e-02 1.00868915e-02 -8.72159043e-03 4.47145138e-03 -2.15728427e-03 -6.96401205e-03 6.82044689e-03 9.29544937e-03 -9.95491140e-02 9.95491140e-02 -1.47531604e+00 2.53788780e-03 -2.53788780e-03 -1.62399402e-03 -6.78853114e-03 3.65770659e-03 -2.07315938e-02 -9.88504715e-03 -1.34997473e-02 1.14201355e-02 2.30935703e-03 1.00868915e-02 4.47145138e-03 -8.72159043e-03 2.15728427e-03 -6.96401205e-03 -9.29544937e-03 -6.82044689e-03 3.64581589e-03 2.53788780e-03 2.53788780e-03 -1.26080894e-04 7.82240681e-05 7.82240681e-05 -4.95421603e-03 -3.05324736e-03 -3.05324736e-03 -3.98965718e-03 3.80846317e-03 -3.80846317e-03 8.14872011e-05 1.92416159e-04 1.92416159e-04 5.76134452e-04 -2.19325430e-04 2.19325430e-04 2.53788780e-03 -1.62399402e-03 -2.53788780e-03 7.82240681e-05 -1.63876786e-04 -7.82240681e-05 4.88057902e-03 2.95573881e-03 2.92421677e-03 -8.16061087e-05 3.98965718e-03 -4.02050538e-03 3.90840983e-03 -2.91222329e-04 -4.41278956e-05 -1.64256895e-04 1.78094826e-05 -5.76134452e-04 2.57202134e-05 -2.41137503e-04 2.53788780e-03 -2.53788780e-03 -1.62399402e-03 7.82240681e-05 -7.82240681e-05 -1.63876786e-04 4.88057902e-03 2.92421677e-03 2.95573881e-03 8.16061087e-05 3.98965718e-03 -3.90840983e-03 4.02050538e-03 -2.91222329e-04 -1.64256895e-04 -4.41278956e-05 -1.78094826e-05 -5.76134452e-04 2.41137503e-04 -2.57202134e-05 2.50681311e-01 -1.29637869e-01 3.43603397e-02 -1.90677593e-02 -2.55642069e-01 5.76016724e-02 -2.31073552e-01 1.70706534e-01 -3.47760262e-02 2.20810865e-02 -8.69671403e-02 -8.69671403e-02 8.69671403e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 -2.31073552e-01 1.70706534e-01 -3.47760262e-02 2.20810865e-02 -8.69671403e-02 -8.69671403e-02 8.69671403e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 -5.09104100e-01 -3.81033730e-02 -3.81033730e-02 1.31876001e-01 -4.55715201e-02 4.68039666e-02 -8.11017653e-03 5.48328334e-03 5.76016724e-02 -1.36360519e-02 9.09946312e-02 -8.78615395e-02 1.51409429e-02 -1.08124682e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 -1.70016634e-02 -1.70016634e-02 1.70016634e-02 9.09946312e-02 -8.78615395e-02 1.51409429e-02 -1.08124682e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 -1.70016634e-02 -1.70016634e-02 1.70016634e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 1.31876001e-01 1.70016634e-02 1.70016634e-02 -3.78321204e-02 2.60203672e-02 -6.78853114e-03 -6.78853114e-03 -4.95421603e-03 4.88057902e-03 4.88057902e-03 -2.33574112e-01 -1.42959316e-01 -1.42959316e-01 -1.89783463e-01 1.84466621e-01 -1.84466621e-01 1.02934331e-02 6.47988162e-03 6.47988162e-03 2.78703402e-02 -8.34518149e-03 8.34518149e-03 1.19719253e-02 -2.07315938e-02 3.65770659e-03 -3.05324736e-03 2.95573881e-03 2.92421677e-03 -1.42959316e-01 -8.78000495e-02 -8.75173384e-02 1.05433222e-04 -1.16218161e-01 1.12690603e-01 -1.12926204e-01 6.29096583e-03 3.94386154e-03 4.07789392e-03 -2.30094432e-05 1.70670281e-02 -5.10663990e-03 5.25183836e-03 1.19719253e-02 3.65770659e-03 -2.07315938e-02 -3.05324736e-03 2.92421677e-03 2.95573881e-03 -1.42959316e-01 -8.75173384e-02 -8.78000495e-02 -1.05433222e-04 -1.16218161e-01 1.12926204e-01 -1.12690603e-01 6.29096583e-03 4.07789392e-03 3.94386154e-03 2.30094432e-05 1.70670281e-02 -5.25183836e-03 5.10663990e-03 9.88504715e-03 -9.88504715e-03 -8.16061087e-05 8.16061087e-05 1.05433222e-04 -1.05433222e-04 -1.78440391e-04 9.58226514e-06 9.58226514e-06 1.23324095e-04 -1.23324095e-04 3.89423179e-05 -1.91006991e-04 -1.91006991e-04 1.34997473e-02 -1.34997473e-02 -1.34997473e-02 -3.98965718e-03 3.98965718e-03 3.98965718e-03 -1.89783463e-01 -1.16218161e-01 -1.16218161e-01 5.86189719e-02 1.50037001e-01 -1.50037001e-01 8.58346559e-03 5.25627773e-03 5.25627773e-03 5.74991859e-03 -6.78582537e-03 6.78582537e-03 6.86525306e-04 -2.30935703e-03 1.14201355e-02 3.80846317e-03 -4.02050538e-03 -3.90840983e-03 1.84466621e-01 1.12690603e-01 1.12926204e-01 9.58226514e-06 1.50037001e-01 -1.46216058e-01 1.45949895e-01 -8.49151503e-03 -5.01417164e-03 -5.01287669e-03 -2.09120600e-06 -2.20334385e-02 6.42752029e-03 -6.50712338e-03 -6.86525306e-04 -1.14201355e-02 2.30935703e-03 -3.80846317e-03 3.90840983e-03 4.02050538e-03 -1.84466621e-01 -1.12926204e-01 -1.12690603e-01 9.58226514e-06 -1.50037001e-01 1.45949895e-01 -1.46216058e-01 8.49151503e-03 5.01287669e-03 5.01417164e-03 -2.09120600e-06 2.20334385e-02 -6.50712338e-03 6.42752029e-03 2.30528378e-02 1.00868915e-02 1.00868915e-02 8.14872011e-05 -2.91222329e-04 -2.91222329e-04 1.02934331e-02 6.29096583e-03 6.29096583e-03 8.58346559e-03 -8.49151503e-03 8.49151503e-03 -9.58405865e-04 -1.37774951e-04 -1.37774951e-04 -1.21596738e-03 2.58595459e-04 -2.58595459e-04 -7.88241731e-03 -8.72159043e-03 4.47145138e-03 1.92416159e-04 -4.41278956e-05 -1.64256895e-04 6.47988162e-03 3.94386154e-03 4.07789392e-03 1.23324095e-04 5.25627773e-03 -5.01417164e-03 5.01287669e-03 -1.37774951e-04 -3.29747090e-04 -1.58824815e-04 -2.69138959e-05 -7.44624905e-04 4.18861158e-04 -1.50120025e-04 -7.88241731e-03 4.47145138e-03 -8.72159043e-03 1.92416159e-04 -1.64256895e-04 -4.41278956e-05 6.47988162e-03 4.07789392e-03 3.94386154e-03 -1.23324095e-04 5.25627773e-03 -5.01287669e-03 5.01417164e-03 -1.37774951e-04 -1.58824815e-04 -3.29747090e-04 2.69138959e-05 -7.44624905e-04 1.50120025e-04 -4.18861158e-04 -2.15728427e-03 2.15728427e-03 1.78094826e-05 -1.78094826e-05 -2.30094432e-05 2.30094432e-05 3.89423179e-05 -2.09120600e-06 -2.09120600e-06 -2.69138959e-05 2.69138959e-05 -8.49865950e-06 4.16848167e-05 4.16848167e-05 6.96401205e-03 -6.96401205e-03 -6.96401205e-03 5.76134452e-04 -5.76134452e-04 -5.76134452e-04 2.78703402e-02 1.70670281e-02 1.70670281e-02 5.74991859e-03 -2.20334385e-02 2.20334385e-02 -1.21596738e-03 -7.44624905e-04 -7.44624905e-04 -2.25860819e-03 9.61306618e-04 -9.61306618e-04 6.65332653e-03 6.82044689e-03 -9.29544937e-03 -2.19325430e-04 2.57202134e-05 2.41137503e-04 -8.34518149e-03 -5.10663990e-03 -5.25183836e-03 -1.91006991e-04 -6.78582537e-03 6.42752029e-03 -6.50712338e-03 2.58595459e-04 4.18861158e-04 1.50120025e-04 4.16848167e-05 9.61306618e-04 -5.80403562e-04 1.34231757e-04 -6.65332653e-03 9.29544937e-03 -6.82044689e-03 2.19325430e-04 -2.41137503e-04 -2.57202134e-05 8.34518149e-03 5.25183836e-03 5.10663990e-03 -1.91006991e-04 6.78582537e-03 -6.50712338e-03 6.42752029e-03 -2.58595459e-04 -1.50120025e-04 -4.18861158e-04 4.16848167e-05 -9.61306618e-04 1.34231757e-04 -5.80403562e-04 - 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 - 0 12 24 36 48 66 86 106 124 144 164 170 180 190 190 200 206 216 226 226 236 254 274 294 308 326 346 366 384 404 424 438 456 476 496 -0 -1 1 496 - 6.10668701e-01 -7.51799909e-02 6.94266500e-02 -1.13818158e-02 2.50681311e-01 2.31073552e-01 2.31073552e-01 -2.31073552e-01 -4.55715201e-02 -9.09946312e-02 -9.09946312e-02 9.09946312e-02 -7.51799909e-02 6.30743818e-01 -3.88656825e-02 8.24503254e-02 -1.29637869e-01 -1.70706534e-01 -1.70706534e-01 1.70706534e-01 4.68039666e-02 8.78615395e-02 8.78615395e-02 -8.78615395e-02 6.94266500e-02 -3.88656825e-02 9.24320123e-03 -5.59159516e-03 3.43603397e-02 3.47760262e-02 3.47760262e-02 -3.47760262e-02 -8.11017653e-03 -1.51409429e-02 -1.51409429e-02 1.51409429e-02 -1.13818158e-02 8.24503254e-02 -5.59159516e-03 1.01087384e-02 -1.90677593e-02 -2.20810865e-02 -2.20810865e-02 2.20810865e-02 5.48328334e-03 1.08124682e-02 1.08124682e-02 -1.08124682e-02 6.62931071e-01 9.95491140e-02 9.95491140e-02 -9.36131516e-03 -2.53788780e-03 -2.53788780e-03 -1.84743808e-04 -1.19719253e-02 -1.19719253e-02 -1.34997473e-02 -6.86525306e-04 6.86525306e-04 -6.96842667e-03 7.88241731e-03 7.88241731e-03 -6.96401205e-03 -6.65332653e-03 6.65332653e-03 9.95491140e-02 5.15990200e-01 -9.95491140e-02 -2.53788780e-03 -1.46311251e-02 2.53788780e-03 6.78853114e-03 -4.68430612e-03 -3.65770659e-03 -9.88504715e-03 1.34997473e-02 -2.30263163e-02 1.14201355e-02 -1.00868915e-02 9.66260440e-03 -4.47145138e-03 2.15728427e-03 6.96401205e-03 -1.69134466e-02 -9.29544937e-03 9.95491140e-02 -9.95491140e-02 5.15990200e-01 -2.53788780e-03 2.53788780e-03 -1.46311251e-02 6.78853114e-03 -3.65770659e-03 -4.68430612e-03 9.88504715e-03 1.34997473e-02 -1.14201355e-02 2.30263163e-02 -1.00868915e-02 -4.47145138e-03 9.66260440e-03 -2.15728427e-03 6.96401205e-03 9.29544937e-03 1.69134466e-02 -9.36131516e-03 -2.53788780e-03 -2.53788780e-03 1.79650864e-04 -7.82240681e-05 -7.82240681e-05 4.91119301e-03 3.05324736e-03 3.05324736e-03 3.98965718e-03 -3.80846317e-03 3.80846317e-03 -8.65717248e-05 -1.92416159e-04 -1.92416159e-04 -5.76134452e-04 2.19325430e-04 -2.19325430e-04 -2.53788780e-03 -1.46311251e-02 2.53788780e-03 -7.82240681e-05 1.41854973e-04 7.82240681e-05 -4.88057902e-03 -3.08556574e-03 -2.92421677e-03 8.16061087e-05 -3.98965718e-03 3.77878526e-03 -3.90840983e-03 2.91222329e-04 5.87867582e-05 1.64256895e-04 -1.78094826e-05 5.76134452e-04 -1.07142033e-04 2.41137503e-04 -2.53788780e-03 2.53788780e-03 -1.46311251e-02 -7.82240681e-05 7.82240681e-05 1.41854973e-04 -4.88057902e-03 -2.92421677e-03 -3.08556574e-03 -8.16061087e-05 -3.98965718e-03 3.90840983e-03 -3.77878526e-03 2.91222329e-04 1.64256895e-04 5.87867582e-05 1.78094826e-05 5.76134452e-04 -2.41137503e-04 1.07142033e-04 2.50681311e-01 -1.29637869e-01 3.43603397e-02 -1.90677593e-02 -2.55642069e-01 5.76016724e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 -8.69671403e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 -8.69671403e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 -2.31073552e-01 1.70706534e-01 -3.47760262e-02 2.20810865e-02 -8.69671403e-02 -8.69671403e-02 -3.35169819e-01 3.81033730e-02 3.81033730e-02 5.56692551e-02 -4.55715201e-02 4.68039666e-02 -8.11017653e-03 5.48328334e-03 5.76016724e-02 -1.36360519e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 1.70016634e-02 1.70016634e-02 -1.70016634e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 1.70016634e-02 1.70016634e-02 -1.70016634e-02 9.09946312e-02 -8.78615395e-02 1.51409429e-02 -1.08124682e-02 3.81033730e-02 3.81033730e-02 5.56692551e-02 -1.70016634e-02 -1.70016634e-02 -3.82879364e-03 -1.84743808e-04 6.78853114e-03 6.78853114e-03 4.91119301e-03 -4.88057902e-03 -4.88057902e-03 2.33254718e-01 1.42959316e-01 1.42959316e-01 1.89783463e-01 -1.84466621e-01 1.84466621e-01 -1.05482763e-02 -6.47988162e-03 -6.47988162e-03 -2.78703402e-02 8.34518149e-03 -8.34518149e-03 -1.19719253e-02 -4.68430612e-03 -3.65770659e-03 3.05324736e-03 -3.08556574e-03 -2.92421677e-03 1.42959316e-01 8.74838123e-02 8.75173384e-02 -1.05433222e-04 1.16218161e-01 -1.13139159e-01 1.12926204e-01 -6.29096583e-03 -3.92045739e-03 -4.07789392e-03 2.30094432e-05 -1.70670281e-02 4.94560355e-03 -5.25183836e-03 -1.19719253e-02 -3.65770659e-03 -4.68430612e-03 3.05324736e-03 -2.92421677e-03 -3.08556574e-03 1.42959316e-01 8.75173384e-02 8.74838123e-02 1.05433222e-04 1.16218161e-01 -1.12926204e-01 1.13139159e-01 -6.29096583e-03 -4.07789392e-03 -3.92045739e-03 -2.30094432e-05 -1.70670281e-02 5.25183836e-03 -4.94560355e-03 -9.88504715e-03 9.88504715e-03 8.16061087e-05 -8.16061087e-05 -1.05433222e-04 1.05433222e-04 1.78440391e-04 -9.58226514e-06 -9.58226514e-06 -1.23324095e-04 1.23324095e-04 -3.89423179e-05 1.91006991e-04 1.91006991e-04 -1.34997473e-02 1.34997473e-02 1.34997473e-02 3.98965718e-03 -3.98965718e-03 -3.98965718e-03 1.89783463e-01 1.16218161e-01 1.16218161e-01 3.67563826e-01 -1.50037001e-01 1.50037001e-01 -8.58346559e-03 -5.25627773e-03 -5.25627773e-03 -3.91967293e-02 6.78582537e-03 -6.78582537e-03 -6.86525306e-04 -2.30263163e-02 -1.14201355e-02 -3.80846317e-03 3.77878526e-03 3.90840983e-03 -1.84466621e-01 -1.13139159e-01 -1.12926204e-01 -9.58226514e-06 -1.50037001e-01 1.45685791e-01 -1.45949895e-01 8.49151503e-03 5.03807181e-03 5.01287669e-03 2.09120600e-06 2.20334385e-02 -6.62775483e-03 6.50712338e-03 6.86525306e-04 1.14201355e-02 2.30263163e-02 3.80846317e-03 -3.90840983e-03 -3.77878526e-03 1.84466621e-01 1.12926204e-01 1.13139159e-01 -9.58226514e-06 1.50037001e-01 -1.45949895e-01 1.45685791e-01 -8.49151503e-03 -5.01287669e-03 -5.03807181e-03 2.09120600e-06 -2.20334385e-02 6.50712338e-03 -6.62775483e-03 -6.96842667e-03 -1.00868915e-02 -1.00868915e-02 -8.65717248e-05 2.91222329e-04 2.91222329e-04 -1.05482763e-02 -6.29096583e-03 -6.29096583e-03 -8.58346559e-03 8.49151503e-03 -8.49151503e-03 7.69472345e-04 1.37774951e-04 1.37774951e-04 1.21596738e-03 -2.58595459e-04 2.58595459e-04 7.88241731e-03 9.66260440e-03 -4.47145138e-03 -1.92416159e-04 5.87867582e-05 1.64256895e-04 -6.47988162e-03 -3.92045739e-03 -4.07789392e-03 -1.23324095e-04 -5.25627773e-03 5.03807181e-03 -5.01287669e-03 1.37774951e-04 3.28830564e-04 1.58824815e-04 2.69138959e-05 7.44624905e-04 -4.09415493e-04 1.50120025e-04 7.88241731e-03 -4.47145138e-03 9.66260440e-03 -1.92416159e-04 1.64256895e-04 5.87867582e-05 -6.47988162e-03 -4.07789392e-03 -3.92045739e-03 1.23324095e-04 -5.25627773e-03 5.01287669e-03 -5.03807181e-03 1.37774951e-04 1.58824815e-04 3.28830564e-04 -2.69138959e-05 7.44624905e-04 -1.50120025e-04 4.09415493e-04 2.15728427e-03 -2.15728427e-03 -1.78094826e-05 1.78094826e-05 2.30094432e-05 -2.30094432e-05 -3.89423179e-05 2.09120600e-06 2.09120600e-06 2.69138959e-05 -2.69138959e-05 8.49865950e-06 -4.16848167e-05 -4.16848167e-05 -6.96401205e-03 6.96401205e-03 6.96401205e-03 -5.76134452e-04 5.76134452e-04 5.76134452e-04 -2.78703402e-02 -1.70670281e-02 -1.70670281e-02 -3.91967293e-02 2.20334385e-02 -2.20334385e-02 1.21596738e-03 7.44624905e-04 7.44624905e-04 4.88351268e-03 -9.61306618e-04 9.61306618e-04 -6.65332653e-03 -1.69134466e-02 9.29544937e-03 2.19325430e-04 -1.07142033e-04 -2.41137503e-04 8.34518149e-03 4.94560355e-03 5.25183836e-03 1.91006991e-04 6.78582537e-03 -6.62775483e-03 6.50712338e-03 -2.58595459e-04 -4.09415493e-04 -1.50120025e-04 -4.16848167e-05 -9.61306618e-04 5.05894315e-04 -1.34231757e-04 6.65332653e-03 -9.29544937e-03 1.69134466e-02 -2.19325430e-04 2.41137503e-04 1.07142033e-04 -8.34518149e-03 -5.25183836e-03 -4.94560355e-03 1.91006991e-04 -6.78582537e-03 6.50712338e-03 -6.62775483e-03 2.58595459e-04 1.50120025e-04 4.09415493e-04 -4.16848167e-05 9.61306618e-04 -1.34231757e-04 5.05894315e-04 - 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 - 0 12 24 36 48 66 86 106 124 144 164 170 180 190 190 200 206 216 226 226 236 254 274 294 308 326 346 366 384 404 424 438 456 476 496 -0 -1 2 496 - -1.30077665e+00 -3.97979828e-02 -1.21755678e-01 3.00506476e-02 2.50681311e-01 -2.31073552e-01 -2.31073552e-01 2.31073552e-01 -4.55715201e-02 9.09946312e-02 9.09946312e-02 -9.09946312e-02 -3.97979828e-02 -1.15126664e+00 8.95185576e-02 -1.01048380e-01 -1.29637869e-01 1.70706534e-01 1.70706534e-01 -1.70706534e-01 4.68039666e-02 -8.78615395e-02 -8.78615395e-02 8.78615395e-02 -1.21755678e-01 8.95185576e-02 -1.86285298e-02 1.13591275e-02 3.43603397e-02 -3.47760262e-02 -3.47760262e-02 3.47760262e-02 -8.11017653e-03 1.51409429e-02 1.51409429e-02 -1.51409429e-02 3.00506476e-02 -1.01048380e-01 1.13591275e-02 -9.53400814e-03 -1.90677593e-02 2.20810865e-02 2.20810865e-02 -2.20810865e-02 5.48328334e-03 -1.08124682e-02 -1.08124682e-02 1.08124682e-02 -1.32837516e+00 -9.95491140e-02 -9.95491140e-02 3.64581589e-03 2.53788780e-03 2.53788780e-03 2.60203672e-02 1.19719253e-02 1.19719253e-02 1.34997473e-02 6.86525306e-04 -6.86525306e-04 2.30528378e-02 -7.88241731e-03 -7.88241731e-03 6.96401205e-03 6.65332653e-03 -6.65332653e-03 -9.95491140e-02 -1.47531604e+00 9.95491140e-02 2.53788780e-03 -1.62399402e-03 -2.53788780e-03 -6.78853114e-03 -2.07315938e-02 3.65770659e-03 9.88504715e-03 -1.34997473e-02 -2.30935703e-03 -1.14201355e-02 1.00868915e-02 -8.72159043e-03 4.47145138e-03 -2.15728427e-03 -6.96401205e-03 6.82044689e-03 9.29544937e-03 -9.95491140e-02 9.95491140e-02 -1.47531604e+00 2.53788780e-03 -2.53788780e-03 -1.62399402e-03 -6.78853114e-03 3.65770659e-03 -2.07315938e-02 -9.88504715e-03 -1.34997473e-02 1.14201355e-02 2.30935703e-03 1.00868915e-02 4.47145138e-03 -8.72159043e-03 2.15728427e-03 -6.96401205e-03 -9.29544937e-03 -6.82044689e-03 3.64581589e-03 2.53788780e-03 2.53788780e-03 -1.26080894e-04 7.82240681e-05 7.82240681e-05 -4.95421603e-03 -3.05324736e-03 -3.05324736e-03 -3.98965718e-03 3.80846317e-03 -3.80846317e-03 8.14872011e-05 1.92416159e-04 1.92416159e-04 5.76134452e-04 -2.19325430e-04 2.19325430e-04 2.53788780e-03 -1.62399402e-03 -2.53788780e-03 7.82240681e-05 -1.63876786e-04 -7.82240681e-05 4.88057902e-03 2.95573881e-03 2.92421677e-03 -8.16061087e-05 3.98965718e-03 -4.02050538e-03 3.90840983e-03 -2.91222329e-04 -4.41278956e-05 -1.64256895e-04 1.78094826e-05 -5.76134452e-04 2.57202134e-05 -2.41137503e-04 2.53788780e-03 -2.53788780e-03 -1.62399402e-03 7.82240681e-05 -7.82240681e-05 -1.63876786e-04 4.88057902e-03 2.92421677e-03 2.95573881e-03 8.16061087e-05 3.98965718e-03 -3.90840983e-03 4.02050538e-03 -2.91222329e-04 -1.64256895e-04 -4.41278956e-05 -1.78094826e-05 -5.76134452e-04 2.41137503e-04 -2.57202134e-05 2.50681311e-01 -1.29637869e-01 3.43603397e-02 -1.90677593e-02 -2.55642069e-01 5.76016724e-02 -2.31073552e-01 1.70706534e-01 -3.47760262e-02 2.20810865e-02 -8.69671403e-02 -8.69671403e-02 8.69671403e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 -2.31073552e-01 1.70706534e-01 -3.47760262e-02 2.20810865e-02 -8.69671403e-02 -8.69671403e-02 8.69671403e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 -5.09104100e-01 -3.81033730e-02 -3.81033730e-02 1.31876001e-01 -4.55715201e-02 4.68039666e-02 -8.11017653e-03 5.48328334e-03 5.76016724e-02 -1.36360519e-02 9.09946312e-02 -8.78615395e-02 1.51409429e-02 -1.08124682e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 -1.70016634e-02 -1.70016634e-02 1.70016634e-02 9.09946312e-02 -8.78615395e-02 1.51409429e-02 -1.08124682e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 -1.70016634e-02 -1.70016634e-02 1.70016634e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 1.31876001e-01 1.70016634e-02 1.70016634e-02 -3.78321204e-02 2.60203672e-02 -6.78853114e-03 -6.78853114e-03 -4.95421603e-03 4.88057902e-03 4.88057902e-03 -2.33574112e-01 -1.42959316e-01 -1.42959316e-01 -1.89783463e-01 1.84466621e-01 -1.84466621e-01 1.02934331e-02 6.47988162e-03 6.47988162e-03 2.78703402e-02 -8.34518149e-03 8.34518149e-03 1.19719253e-02 -2.07315938e-02 3.65770659e-03 -3.05324736e-03 2.95573881e-03 2.92421677e-03 -1.42959316e-01 -8.78000495e-02 -8.75173384e-02 1.05433222e-04 -1.16218161e-01 1.12690603e-01 -1.12926204e-01 6.29096583e-03 3.94386154e-03 4.07789392e-03 -2.30094432e-05 1.70670281e-02 -5.10663990e-03 5.25183836e-03 1.19719253e-02 3.65770659e-03 -2.07315938e-02 -3.05324736e-03 2.92421677e-03 2.95573881e-03 -1.42959316e-01 -8.75173384e-02 -8.78000495e-02 -1.05433222e-04 -1.16218161e-01 1.12926204e-01 -1.12690603e-01 6.29096583e-03 4.07789392e-03 3.94386154e-03 2.30094432e-05 1.70670281e-02 -5.25183836e-03 5.10663990e-03 9.88504715e-03 -9.88504715e-03 -8.16061087e-05 8.16061087e-05 1.05433222e-04 -1.05433222e-04 -1.78440391e-04 9.58226514e-06 9.58226514e-06 1.23324095e-04 -1.23324095e-04 3.89423179e-05 -1.91006991e-04 -1.91006991e-04 1.34997473e-02 -1.34997473e-02 -1.34997473e-02 -3.98965718e-03 3.98965718e-03 3.98965718e-03 -1.89783463e-01 -1.16218161e-01 -1.16218161e-01 5.86189719e-02 1.50037001e-01 -1.50037001e-01 8.58346559e-03 5.25627773e-03 5.25627773e-03 5.74991859e-03 -6.78582537e-03 6.78582537e-03 6.86525306e-04 -2.30935703e-03 1.14201355e-02 3.80846317e-03 -4.02050538e-03 -3.90840983e-03 1.84466621e-01 1.12690603e-01 1.12926204e-01 9.58226514e-06 1.50037001e-01 -1.46216058e-01 1.45949895e-01 -8.49151503e-03 -5.01417164e-03 -5.01287669e-03 -2.09120600e-06 -2.20334385e-02 6.42752029e-03 -6.50712338e-03 -6.86525306e-04 -1.14201355e-02 2.30935703e-03 -3.80846317e-03 3.90840983e-03 4.02050538e-03 -1.84466621e-01 -1.12926204e-01 -1.12690603e-01 9.58226514e-06 -1.50037001e-01 1.45949895e-01 -1.46216058e-01 8.49151503e-03 5.01287669e-03 5.01417164e-03 -2.09120600e-06 2.20334385e-02 -6.50712338e-03 6.42752029e-03 2.30528378e-02 1.00868915e-02 1.00868915e-02 8.14872011e-05 -2.91222329e-04 -2.91222329e-04 1.02934331e-02 6.29096583e-03 6.29096583e-03 8.58346559e-03 -8.49151503e-03 8.49151503e-03 -9.58405865e-04 -1.37774951e-04 -1.37774951e-04 -1.21596738e-03 2.58595459e-04 -2.58595459e-04 -7.88241731e-03 -8.72159043e-03 4.47145138e-03 1.92416159e-04 -4.41278956e-05 -1.64256895e-04 6.47988162e-03 3.94386154e-03 4.07789392e-03 1.23324095e-04 5.25627773e-03 -5.01417164e-03 5.01287669e-03 -1.37774951e-04 -3.29747090e-04 -1.58824815e-04 -2.69138959e-05 -7.44624905e-04 4.18861158e-04 -1.50120025e-04 -7.88241731e-03 4.47145138e-03 -8.72159043e-03 1.92416159e-04 -1.64256895e-04 -4.41278956e-05 6.47988162e-03 4.07789392e-03 3.94386154e-03 -1.23324095e-04 5.25627773e-03 -5.01287669e-03 5.01417164e-03 -1.37774951e-04 -1.58824815e-04 -3.29747090e-04 2.69138959e-05 -7.44624905e-04 1.50120025e-04 -4.18861158e-04 -2.15728427e-03 2.15728427e-03 1.78094826e-05 -1.78094826e-05 -2.30094432e-05 2.30094432e-05 3.89423179e-05 -2.09120600e-06 -2.09120600e-06 -2.69138959e-05 2.69138959e-05 -8.49865950e-06 4.16848167e-05 4.16848167e-05 6.96401205e-03 -6.96401205e-03 -6.96401205e-03 5.76134452e-04 -5.76134452e-04 -5.76134452e-04 2.78703402e-02 1.70670281e-02 1.70670281e-02 5.74991859e-03 -2.20334385e-02 2.20334385e-02 -1.21596738e-03 -7.44624905e-04 -7.44624905e-04 -2.25860819e-03 9.61306618e-04 -9.61306618e-04 6.65332653e-03 6.82044689e-03 -9.29544937e-03 -2.19325430e-04 2.57202134e-05 2.41137503e-04 -8.34518149e-03 -5.10663990e-03 -5.25183836e-03 -1.91006991e-04 -6.78582537e-03 6.42752029e-03 -6.50712338e-03 2.58595459e-04 4.18861158e-04 1.50120025e-04 4.16848167e-05 9.61306618e-04 -5.80403562e-04 1.34231757e-04 -6.65332653e-03 9.29544937e-03 -6.82044689e-03 2.19325430e-04 -2.41137503e-04 -2.57202134e-05 8.34518149e-03 5.25183836e-03 5.10663990e-03 -1.91006991e-04 6.78582537e-03 -6.50712338e-03 6.42752029e-03 -2.58595459e-04 -1.50120025e-04 -4.18861158e-04 4.16848167e-05 -9.61306618e-04 1.34231757e-04 -5.80403562e-04 - 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 - 0 12 24 36 48 66 86 106 124 144 164 170 180 190 190 200 206 216 226 226 236 254 274 294 308 326 346 366 384 404 424 438 456 476 496 -0 0 -2 496 - 1.46471486e+00 2.54883877e-01 1.24590418e-01 -9.35884290e-03 -2.50681311e-01 2.31073552e-01 2.31073552e-01 -2.31073552e-01 4.55715201e-02 -9.09946312e-02 -9.09946312e-02 9.09946312e-02 2.54883877e-01 1.70428957e+00 -9.34218553e-02 1.65342489e-01 1.29637869e-01 -1.70706534e-01 -1.70706534e-01 1.70706534e-01 -4.68039666e-02 8.78615395e-02 8.78615395e-02 -8.78615395e-02 1.24590418e-01 -9.34218553e-02 1.88920782e-02 -1.20468125e-02 -3.43603397e-02 3.47760262e-02 3.47760262e-02 -3.47760262e-02 8.11017653e-03 -1.51409429e-02 -1.51409429e-02 1.51409429e-02 -9.35884290e-03 1.65342489e-01 -1.20468125e-02 1.72406024e-02 1.90677593e-02 -2.20810865e-02 -2.20810865e-02 2.20810865e-02 -5.48328334e-03 1.08124682e-02 1.08124682e-02 -1.08124682e-02 1.89517553e+00 9.95491140e-02 9.95491140e-02 -9.15785008e-03 -2.53788780e-03 -2.53788780e-03 -2.12388496e-02 -1.19719253e-02 -1.19719253e-02 -1.34997473e-02 -6.86525306e-04 6.86525306e-04 -2.22701900e-02 7.88241731e-03 7.88241731e-03 -6.96401205e-03 -6.65332653e-03 6.65332653e-03 9.95491140e-02 2.04211641e+00 -9.95491140e-02 -2.53788780e-03 -3.88804018e-03 2.53788780e-03 6.78853114e-03 1.78035242e-02 -3.65770659e-03 -9.88504715e-03 1.34997473e-02 6.08947863e-03 1.14201355e-02 -1.00868915e-02 8.24231853e-03 -4.47145138e-03 2.15728427e-03 6.96401205e-03 -6.20170953e-03 -9.29544937e-03 9.95491140e-02 -9.95491140e-02 2.04211641e+00 -2.53788780e-03 2.53788780e-03 -3.88804018e-03 6.78853114e-03 -3.65770659e-03 1.78035242e-02 9.88504715e-03 1.34997473e-02 -1.14201355e-02 -6.08947863e-03 -1.00868915e-02 -4.47145138e-03 8.24231853e-03 -2.15728427e-03 6.96401205e-03 9.29544937e-03 6.20170953e-03 -9.15785008e-03 -2.53788780e-03 -2.53788780e-03 1.79684460e-04 -7.82240681e-05 -7.82240681e-05 4.90771661e-03 3.05324736e-03 3.05324736e-03 3.98965718e-03 -3.80846317e-03 3.80846317e-03 -8.90983131e-05 -1.92416159e-04 -1.92416159e-04 -5.76134452e-04 2.19325430e-04 -2.19325430e-04 -2.53788780e-03 -3.88804018e-03 2.53788780e-03 -7.82240681e-05 2.17480352e-04 7.82240681e-05 -4.88057902e-03 -2.92726385e-03 -2.92421677e-03 8.16061087e-05 -3.98965718e-03 3.98374436e-03 -3.90840983e-03 2.91222329e-04 4.87887308e-05 1.64256895e-04 -1.78094826e-05 5.76134452e-04 -3.17373257e-05 2.41137503e-04 -2.53788780e-03 2.53788780e-03 -3.88804018e-03 -7.82240681e-05 7.82240681e-05 2.17480352e-04 -4.88057902e-03 -2.92421677e-03 -2.92726385e-03 -8.16061087e-05 -3.98965718e-03 3.90840983e-03 -3.98374436e-03 2.91222329e-04 1.64256895e-04 4.87887308e-05 1.78094826e-05 5.76134452e-04 -2.41137503e-04 3.17373257e-05 -2.50681311e-01 1.29637869e-01 -3.43603397e-02 1.90677593e-02 2.55642069e-01 -5.76016724e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 -8.69671403e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 -8.69671403e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 -2.31073552e-01 1.70706534e-01 -3.47760262e-02 2.20810865e-02 -8.69671403e-02 -8.69671403e-02 5.09104100e-01 3.81033730e-02 3.81033730e-02 -1.31876001e-01 4.55715201e-02 -4.68039666e-02 8.11017653e-03 -5.48328334e-03 -5.76016724e-02 1.36360519e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 1.70016634e-02 1.70016634e-02 -1.70016634e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 1.70016634e-02 1.70016634e-02 -1.70016634e-02 9.09946312e-02 -8.78615395e-02 1.51409429e-02 -1.08124682e-02 3.81033730e-02 3.81033730e-02 -1.31876001e-01 -1.70016634e-02 -1.70016634e-02 3.78321204e-02 -2.12388496e-02 6.78853114e-03 6.78853114e-03 4.90771661e-03 -4.88057902e-03 -4.88057902e-03 2.33614448e-01 1.42959316e-01 1.42959316e-01 1.89783463e-01 -1.84466621e-01 1.84466621e-01 -1.02868307e-02 -6.47988162e-03 -6.47988162e-03 -2.78703402e-02 8.34518149e-03 -8.34518149e-03 -1.19719253e-02 1.78035242e-02 -3.65770659e-03 3.05324736e-03 -2.92726385e-03 -2.92421677e-03 1.42959316e-01 8.78151758e-02 8.75173384e-02 -1.05433222e-04 1.16218161e-01 -1.12710131e-01 1.12926204e-01 -6.29096583e-03 -3.94138564e-03 -4.07789392e-03 2.30094432e-05 -1.70670281e-02 5.10344353e-03 -5.25183836e-03 -1.19719253e-02 -3.65770659e-03 1.78035242e-02 3.05324736e-03 -2.92421677e-03 -2.92726385e-03 1.42959316e-01 8.75173384e-02 8.78151758e-02 1.05433222e-04 1.16218161e-01 -1.12926204e-01 1.12710131e-01 -6.29096583e-03 -4.07789392e-03 -3.94138564e-03 -2.30094432e-05 -1.70670281e-02 5.25183836e-03 -5.10344353e-03 -9.88504715e-03 9.88504715e-03 8.16061087e-05 -8.16061087e-05 -1.05433222e-04 1.05433222e-04 1.78440391e-04 -9.58226514e-06 -9.58226514e-06 -1.23324095e-04 1.23324095e-04 -3.89423179e-05 1.91006991e-04 1.91006991e-04 -1.34997473e-02 1.34997473e-02 1.34997473e-02 3.98965718e-03 -3.98965718e-03 -3.98965718e-03 1.89783463e-01 1.16218161e-01 1.16218161e-01 3.67563826e-01 -1.50037001e-01 1.50037001e-01 -8.58346559e-03 -5.25627773e-03 -5.25627773e-03 -3.91967293e-02 6.78582537e-03 -6.78582537e-03 -6.86525306e-04 6.08947863e-03 -1.14201355e-02 -3.80846317e-03 3.98374436e-03 3.90840983e-03 -1.84466621e-01 -1.12710131e-01 -1.12926204e-01 -9.58226514e-06 -1.50037001e-01 1.46241269e-01 -1.45949895e-01 8.49151503e-03 5.01097526e-03 5.01287669e-03 2.09120600e-06 2.20334385e-02 -6.42339379e-03 6.50712338e-03 6.86525306e-04 1.14201355e-02 -6.08947863e-03 3.80846317e-03 -3.90840983e-03 -3.98374436e-03 1.84466621e-01 1.12926204e-01 1.12710131e-01 -9.58226514e-06 1.50037001e-01 -1.45949895e-01 1.46241269e-01 -8.49151503e-03 -5.01287669e-03 -5.01097526e-03 2.09120600e-06 -2.20334385e-02 6.50712338e-03 -6.42339379e-03 -2.22701900e-02 -1.00868915e-02 -1.00868915e-02 -8.90983131e-05 2.91222329e-04 2.91222329e-04 -1.02868307e-02 -6.29096583e-03 -6.29096583e-03 -8.58346559e-03 8.49151503e-03 -8.49151503e-03 9.59486559e-04 1.37774951e-04 1.37774951e-04 1.21596738e-03 -2.58595459e-04 2.58595459e-04 7.88241731e-03 8.24231853e-03 -4.47145138e-03 -1.92416159e-04 4.87887308e-05 1.64256895e-04 -6.47988162e-03 -3.94138564e-03 -4.07789392e-03 -1.23324095e-04 -5.25627773e-03 5.01097526e-03 -5.01287669e-03 1.37774951e-04 3.30152350e-04 1.58824815e-04 2.69138959e-05 7.44624905e-04 -4.19384346e-04 1.50120025e-04 7.88241731e-03 -4.47145138e-03 8.24231853e-03 -1.92416159e-04 1.64256895e-04 4.87887308e-05 -6.47988162e-03 -4.07789392e-03 -3.94138564e-03 1.23324095e-04 -5.25627773e-03 5.01287669e-03 -5.01097526e-03 1.37774951e-04 1.58824815e-04 3.30152350e-04 -2.69138959e-05 7.44624905e-04 -1.50120025e-04 4.19384346e-04 2.15728427e-03 -2.15728427e-03 -1.78094826e-05 1.78094826e-05 2.30094432e-05 -2.30094432e-05 -3.89423179e-05 2.09120600e-06 2.09120600e-06 2.69138959e-05 -2.69138959e-05 8.49865950e-06 -4.16848167e-05 -4.16848167e-05 -6.96401205e-03 6.96401205e-03 6.96401205e-03 -5.76134452e-04 5.76134452e-04 5.76134452e-04 -2.78703402e-02 -1.70670281e-02 -1.70670281e-02 -3.91967293e-02 2.20334385e-02 -2.20334385e-02 1.21596738e-03 7.44624905e-04 7.44624905e-04 4.88351268e-03 -9.61306618e-04 9.61306618e-04 -6.65332653e-03 -6.20170953e-03 9.29544937e-03 2.19325430e-04 -3.17373257e-05 -2.41137503e-04 8.34518149e-03 5.10344353e-03 5.25183836e-03 1.91006991e-04 6.78582537e-03 -6.42339379e-03 6.50712338e-03 -2.58595459e-04 -4.19384346e-04 -1.50120025e-04 -4.16848167e-05 -9.61306618e-04 5.81078995e-04 -1.34231757e-04 6.65332653e-03 -9.29544937e-03 6.20170953e-03 -2.19325430e-04 2.41137503e-04 3.17373257e-05 -8.34518149e-03 -5.25183836e-03 -5.10344353e-03 1.91006991e-04 -6.78582537e-03 6.50712338e-03 -6.42339379e-03 2.58595459e-04 1.50120025e-04 4.19384346e-04 -4.16848167e-05 9.61306618e-04 -1.34231757e-04 5.81078995e-04 - 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 - 0 12 24 36 48 66 86 106 124 144 164 170 180 190 190 200 206 216 226 226 236 254 274 294 308 326 346 366 384 404 424 438 456 476 496 -0 0 -1 496 - -4.46730500e-01 2.90265885e-01 -6.65919095e-02 3.20736205e-02 -2.50681311e-01 -2.31073552e-01 -2.31073552e-01 2.31073552e-01 4.55715201e-02 9.09946312e-02 9.09946312e-02 -9.09946312e-02 2.90265885e-01 -7.77208948e-02 3.49623849e-02 -1.81562170e-02 1.29637869e-01 1.70706534e-01 1.70706534e-01 -1.70706534e-01 -4.68039666e-02 -8.78615395e-02 -8.78615395e-02 8.78615395e-02 -6.65919095e-02 3.49623849e-02 -8.97965282e-03 4.90391018e-03 -3.43603397e-02 -3.47760262e-02 -3.47760262e-02 3.47760262e-02 8.11017653e-03 1.51409429e-02 1.51409429e-02 -1.51409429e-02 3.20736205e-02 -1.81562170e-02 4.90391018e-03 -2.40214415e-03 1.90677593e-02 2.20810865e-02 2.20810865e-02 -2.20810865e-02 -5.48328334e-03 -1.08124682e-02 -1.08124682e-02 1.08124682e-02 -9.61307016e-02 -9.95491140e-02 -9.95491140e-02 3.84928096e-03 2.53788780e-03 2.53788780e-03 4.96626145e-03 1.19719253e-02 1.19719253e-02 1.34997473e-02 6.86525306e-04 -6.86525306e-04 7.75107441e-03 -7.88241731e-03 -7.88241731e-03 6.96401205e-03 6.65332653e-03 -6.65332653e-03 -9.95491140e-02 5.08101702e-02 9.95491140e-02 2.53788780e-03 9.11909087e-03 -2.53788780e-03 -6.78853114e-03 1.75623651e-03 3.65770659e-03 9.88504715e-03 -1.34997473e-02 2.68064379e-02 -1.14201355e-02 1.00868915e-02 -1.01418763e-02 4.47145138e-03 -2.15728427e-03 -6.96401205e-03 1.75321839e-02 9.29544937e-03 -9.95491140e-02 9.95491140e-02 5.08101702e-02 2.53788780e-03 -2.53788780e-03 9.11909087e-03 -6.78853114e-03 3.65770659e-03 1.75623651e-03 -9.88504715e-03 -1.34997473e-02 1.14201355e-02 -2.68064379e-02 1.00868915e-02 4.47145138e-03 -1.01418763e-02 2.15728427e-03 -6.96401205e-03 -9.29544937e-03 -1.75321839e-02 3.84928096e-03 2.53788780e-03 2.53788780e-03 -1.26047298e-04 7.82240681e-05 7.82240681e-05 -4.95769243e-03 -3.05324736e-03 -3.05324736e-03 -3.98965718e-03 3.80846317e-03 -3.80846317e-03 7.89606128e-05 1.92416159e-04 1.92416159e-04 5.76134452e-04 -2.19325430e-04 2.19325430e-04 2.53788780e-03 9.11909087e-03 -2.53788780e-03 7.82240681e-05 -8.82514067e-05 -7.82240681e-05 4.88057902e-03 3.11404071e-03 2.92421677e-03 -8.16061087e-05 3.98965718e-03 -3.81554628e-03 3.90840983e-03 -2.91222329e-04 -5.41259230e-05 -1.64256895e-04 1.78094826e-05 -5.76134452e-04 1.01124921e-04 -2.41137503e-04 2.53788780e-03 -2.53788780e-03 9.11909087e-03 7.82240681e-05 -7.82240681e-05 -8.82514067e-05 4.88057902e-03 2.92421677e-03 3.11404071e-03 8.16061087e-05 3.98965718e-03 -3.90840983e-03 3.81554628e-03 -2.91222329e-04 -1.64256895e-04 -5.41259230e-05 -1.78094826e-05 -5.76134452e-04 2.41137503e-04 -1.01124921e-04 -2.50681311e-01 1.29637869e-01 -3.43603397e-02 1.90677593e-02 2.55642069e-01 -5.76016724e-02 -2.31073552e-01 1.70706534e-01 -3.47760262e-02 2.20810865e-02 -8.69671403e-02 -8.69671403e-02 8.69671403e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 -2.31073552e-01 1.70706534e-01 -3.47760262e-02 2.20810865e-02 -8.69671403e-02 -8.69671403e-02 8.69671403e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 3.35169819e-01 -3.81033730e-02 -3.81033730e-02 -5.56692551e-02 4.55715201e-02 -4.68039666e-02 8.11017653e-03 -5.48328334e-03 -5.76016724e-02 1.36360519e-02 9.09946312e-02 -8.78615395e-02 1.51409429e-02 -1.08124682e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 -1.70016634e-02 -1.70016634e-02 1.70016634e-02 9.09946312e-02 -8.78615395e-02 1.51409429e-02 -1.08124682e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 -1.70016634e-02 -1.70016634e-02 1.70016634e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 -5.56692551e-02 1.70016634e-02 1.70016634e-02 3.82879364e-03 4.96626145e-03 -6.78853114e-03 -6.78853114e-03 -4.95769243e-03 4.88057902e-03 4.88057902e-03 -2.33214382e-01 -1.42959316e-01 -1.42959316e-01 -1.89783463e-01 1.84466621e-01 -1.84466621e-01 1.05548787e-02 6.47988162e-03 6.47988162e-03 2.78703402e-02 -8.34518149e-03 8.34518149e-03 1.19719253e-02 1.75623651e-03 3.65770659e-03 -3.05324736e-03 3.11404071e-03 2.92421677e-03 -1.42959316e-01 -8.74686860e-02 -8.75173384e-02 1.05433222e-04 -1.16218161e-01 1.13119631e-01 -1.12926204e-01 6.29096583e-03 3.92293329e-03 4.07789392e-03 -2.30094432e-05 1.70670281e-02 -4.94879992e-03 5.25183836e-03 1.19719253e-02 3.65770659e-03 1.75623651e-03 -3.05324736e-03 2.92421677e-03 3.11404071e-03 -1.42959316e-01 -8.75173384e-02 -8.74686860e-02 -1.05433222e-04 -1.16218161e-01 1.12926204e-01 -1.13119631e-01 6.29096583e-03 4.07789392e-03 3.92293329e-03 2.30094432e-05 1.70670281e-02 -5.25183836e-03 4.94879992e-03 9.88504715e-03 -9.88504715e-03 -8.16061087e-05 8.16061087e-05 1.05433222e-04 -1.05433222e-04 -1.78440391e-04 9.58226514e-06 9.58226514e-06 1.23324095e-04 -1.23324095e-04 3.89423179e-05 -1.91006991e-04 -1.91006991e-04 1.34997473e-02 -1.34997473e-02 -1.34997473e-02 -3.98965718e-03 3.98965718e-03 3.98965718e-03 -1.89783463e-01 -1.16218161e-01 -1.16218161e-01 5.86189719e-02 1.50037001e-01 -1.50037001e-01 8.58346559e-03 5.25627773e-03 5.25627773e-03 5.74991859e-03 -6.78582537e-03 6.78582537e-03 6.86525306e-04 2.68064379e-02 1.14201355e-02 3.80846317e-03 -3.81554628e-03 -3.90840983e-03 1.84466621e-01 1.13119631e-01 1.12926204e-01 9.58226514e-06 1.50037001e-01 -1.45660580e-01 1.45949895e-01 -8.49151503e-03 -5.04126819e-03 -5.01287669e-03 -2.09120600e-06 -2.20334385e-02 6.63188133e-03 -6.50712338e-03 -6.86525306e-04 -1.14201355e-02 -2.68064379e-02 -3.80846317e-03 3.90840983e-03 3.81554628e-03 -1.84466621e-01 -1.12926204e-01 -1.13119631e-01 9.58226514e-06 -1.50037001e-01 1.45949895e-01 -1.45660580e-01 8.49151503e-03 5.01287669e-03 5.04126819e-03 -2.09120600e-06 2.20334385e-02 -6.50712338e-03 6.63188133e-03 7.75107441e-03 1.00868915e-02 1.00868915e-02 7.89606128e-05 -2.91222329e-04 -2.91222329e-04 1.05548787e-02 6.29096583e-03 6.29096583e-03 8.58346559e-03 -8.49151503e-03 8.49151503e-03 -7.68391652e-04 -1.37774951e-04 -1.37774951e-04 -1.21596738e-03 2.58595459e-04 -2.58595459e-04 -7.88241731e-03 -1.01418763e-02 4.47145138e-03 1.92416159e-04 -5.41259230e-05 -1.64256895e-04 6.47988162e-03 3.92293329e-03 4.07789392e-03 1.23324095e-04 5.25627773e-03 -5.04126819e-03 5.01287669e-03 -1.37774951e-04 -3.28425304e-04 -1.58824815e-04 -2.69138959e-05 -7.44624905e-04 4.08892304e-04 -1.50120025e-04 -7.88241731e-03 4.47145138e-03 -1.01418763e-02 1.92416159e-04 -1.64256895e-04 -5.41259230e-05 6.47988162e-03 4.07789392e-03 3.92293329e-03 -1.23324095e-04 5.25627773e-03 -5.01287669e-03 5.04126819e-03 -1.37774951e-04 -1.58824815e-04 -3.28425304e-04 2.69138959e-05 -7.44624905e-04 1.50120025e-04 -4.08892304e-04 -2.15728427e-03 2.15728427e-03 1.78094826e-05 -1.78094826e-05 -2.30094432e-05 2.30094432e-05 3.89423179e-05 -2.09120600e-06 -2.09120600e-06 -2.69138959e-05 2.69138959e-05 -8.49865950e-06 4.16848167e-05 4.16848167e-05 6.96401205e-03 -6.96401205e-03 -6.96401205e-03 5.76134452e-04 -5.76134452e-04 -5.76134452e-04 2.78703402e-02 1.70670281e-02 1.70670281e-02 5.74991859e-03 -2.20334385e-02 2.20334385e-02 -1.21596738e-03 -7.44624905e-04 -7.44624905e-04 -2.25860819e-03 9.61306618e-04 -9.61306618e-04 6.65332653e-03 1.75321839e-02 -9.29544937e-03 -2.19325430e-04 1.01124921e-04 2.41137503e-04 -8.34518149e-03 -4.94879992e-03 -5.25183836e-03 -1.91006991e-04 -6.78582537e-03 6.63188133e-03 -6.50712338e-03 2.58595459e-04 4.08892304e-04 1.50120025e-04 4.16848167e-05 9.61306618e-04 -5.05218881e-04 1.34231757e-04 -6.65332653e-03 9.29544937e-03 -1.75321839e-02 2.19325430e-04 -2.41137503e-04 -1.01124921e-04 8.34518149e-03 5.25183836e-03 4.94879992e-03 -1.91006991e-04 6.78582537e-03 -6.50712338e-03 6.63188133e-03 -2.58595459e-04 -1.50120025e-04 -4.08892304e-04 4.16848167e-05 -9.61306618e-04 1.34231757e-04 -5.05218881e-04 - 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 - 0 12 24 36 48 66 86 106 124 144 164 170 180 190 190 200 206 216 226 226 236 254 274 294 308 326 346 366 384 404 424 438 456 476 496 -0 0 0 496 - 1.46471486e+00 2.54883877e-01 1.24590418e-01 -9.35884290e-03 -2.50681311e-01 2.31073552e-01 2.31073552e-01 -2.31073552e-01 4.55715201e-02 -9.09946312e-02 -9.09946312e-02 9.09946312e-02 2.54883877e-01 1.70428957e+00 -9.34218553e-02 1.65342489e-01 1.29637869e-01 -1.70706534e-01 -1.70706534e-01 1.70706534e-01 -4.68039666e-02 8.78615395e-02 8.78615395e-02 -8.78615395e-02 1.24590418e-01 -9.34218553e-02 1.88920782e-02 -1.20468125e-02 -3.43603397e-02 3.47760262e-02 3.47760262e-02 -3.47760262e-02 8.11017653e-03 -1.51409429e-02 -1.51409429e-02 1.51409429e-02 -9.35884290e-03 1.65342489e-01 -1.20468125e-02 1.72406024e-02 1.90677593e-02 -2.20810865e-02 -2.20810865e-02 2.20810865e-02 -5.48328334e-03 1.08124682e-02 1.08124682e-02 -1.08124682e-02 1.89517553e+00 9.95491140e-02 9.95491140e-02 -9.15785008e-03 -2.53788780e-03 -2.53788780e-03 -2.12388496e-02 -1.19719253e-02 -1.19719253e-02 -1.34997473e-02 -6.86525306e-04 6.86525306e-04 -2.22701900e-02 7.88241731e-03 7.88241731e-03 -6.96401205e-03 -6.65332653e-03 6.65332653e-03 9.95491140e-02 2.04211641e+00 -9.95491140e-02 -2.53788780e-03 -3.88804018e-03 2.53788780e-03 6.78853114e-03 1.78035242e-02 -3.65770659e-03 -9.88504715e-03 1.34997473e-02 6.08947863e-03 1.14201355e-02 -1.00868915e-02 8.24231853e-03 -4.47145138e-03 2.15728427e-03 6.96401205e-03 -6.20170953e-03 -9.29544937e-03 9.95491140e-02 -9.95491140e-02 2.04211641e+00 -2.53788780e-03 2.53788780e-03 -3.88804018e-03 6.78853114e-03 -3.65770659e-03 1.78035242e-02 9.88504715e-03 1.34997473e-02 -1.14201355e-02 -6.08947863e-03 -1.00868915e-02 -4.47145138e-03 8.24231853e-03 -2.15728427e-03 6.96401205e-03 9.29544937e-03 6.20170953e-03 -9.15785008e-03 -2.53788780e-03 -2.53788780e-03 1.79684460e-04 -7.82240681e-05 -7.82240681e-05 4.90771661e-03 3.05324736e-03 3.05324736e-03 3.98965718e-03 -3.80846317e-03 3.80846317e-03 -8.90983131e-05 -1.92416159e-04 -1.92416159e-04 -5.76134452e-04 2.19325430e-04 -2.19325430e-04 -2.53788780e-03 -3.88804018e-03 2.53788780e-03 -7.82240681e-05 2.17480352e-04 7.82240681e-05 -4.88057902e-03 -2.92726385e-03 -2.92421677e-03 8.16061087e-05 -3.98965718e-03 3.98374436e-03 -3.90840983e-03 2.91222329e-04 4.87887308e-05 1.64256895e-04 -1.78094826e-05 5.76134452e-04 -3.17373257e-05 2.41137503e-04 -2.53788780e-03 2.53788780e-03 -3.88804018e-03 -7.82240681e-05 7.82240681e-05 2.17480352e-04 -4.88057902e-03 -2.92421677e-03 -2.92726385e-03 -8.16061087e-05 -3.98965718e-03 3.90840983e-03 -3.98374436e-03 2.91222329e-04 1.64256895e-04 4.87887308e-05 1.78094826e-05 5.76134452e-04 -2.41137503e-04 3.17373257e-05 -2.50681311e-01 1.29637869e-01 -3.43603397e-02 1.90677593e-02 2.55642069e-01 -5.76016724e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 -8.69671403e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 -8.69671403e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 -2.31073552e-01 1.70706534e-01 -3.47760262e-02 2.20810865e-02 -8.69671403e-02 -8.69671403e-02 5.09104100e-01 3.81033730e-02 3.81033730e-02 -1.31876001e-01 4.55715201e-02 -4.68039666e-02 8.11017653e-03 -5.48328334e-03 -5.76016724e-02 1.36360519e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 1.70016634e-02 1.70016634e-02 -1.70016634e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 1.70016634e-02 1.70016634e-02 -1.70016634e-02 9.09946312e-02 -8.78615395e-02 1.51409429e-02 -1.08124682e-02 3.81033730e-02 3.81033730e-02 -1.31876001e-01 -1.70016634e-02 -1.70016634e-02 3.78321204e-02 -2.12388496e-02 6.78853114e-03 6.78853114e-03 4.90771661e-03 -4.88057902e-03 -4.88057902e-03 2.33614448e-01 1.42959316e-01 1.42959316e-01 1.89783463e-01 -1.84466621e-01 1.84466621e-01 -1.02868307e-02 -6.47988162e-03 -6.47988162e-03 -2.78703402e-02 8.34518149e-03 -8.34518149e-03 -1.19719253e-02 1.78035242e-02 -3.65770659e-03 3.05324736e-03 -2.92726385e-03 -2.92421677e-03 1.42959316e-01 8.78151758e-02 8.75173384e-02 -1.05433222e-04 1.16218161e-01 -1.12710131e-01 1.12926204e-01 -6.29096583e-03 -3.94138564e-03 -4.07789392e-03 2.30094432e-05 -1.70670281e-02 5.10344353e-03 -5.25183836e-03 -1.19719253e-02 -3.65770659e-03 1.78035242e-02 3.05324736e-03 -2.92421677e-03 -2.92726385e-03 1.42959316e-01 8.75173384e-02 8.78151758e-02 1.05433222e-04 1.16218161e-01 -1.12926204e-01 1.12710131e-01 -6.29096583e-03 -4.07789392e-03 -3.94138564e-03 -2.30094432e-05 -1.70670281e-02 5.25183836e-03 -5.10344353e-03 -9.88504715e-03 9.88504715e-03 8.16061087e-05 -8.16061087e-05 -1.05433222e-04 1.05433222e-04 1.78440391e-04 -9.58226514e-06 -9.58226514e-06 -1.23324095e-04 1.23324095e-04 -3.89423179e-05 1.91006991e-04 1.91006991e-04 -1.34997473e-02 1.34997473e-02 1.34997473e-02 3.98965718e-03 -3.98965718e-03 -3.98965718e-03 1.89783463e-01 1.16218161e-01 1.16218161e-01 3.67563826e-01 -1.50037001e-01 1.50037001e-01 -8.58346559e-03 -5.25627773e-03 -5.25627773e-03 -3.91967293e-02 6.78582537e-03 -6.78582537e-03 -6.86525306e-04 6.08947863e-03 -1.14201355e-02 -3.80846317e-03 3.98374436e-03 3.90840983e-03 -1.84466621e-01 -1.12710131e-01 -1.12926204e-01 -9.58226514e-06 -1.50037001e-01 1.46241269e-01 -1.45949895e-01 8.49151503e-03 5.01097526e-03 5.01287669e-03 2.09120600e-06 2.20334385e-02 -6.42339379e-03 6.50712338e-03 6.86525306e-04 1.14201355e-02 -6.08947863e-03 3.80846317e-03 -3.90840983e-03 -3.98374436e-03 1.84466621e-01 1.12926204e-01 1.12710131e-01 -9.58226514e-06 1.50037001e-01 -1.45949895e-01 1.46241269e-01 -8.49151503e-03 -5.01287669e-03 -5.01097526e-03 2.09120600e-06 -2.20334385e-02 6.50712338e-03 -6.42339379e-03 -2.22701900e-02 -1.00868915e-02 -1.00868915e-02 -8.90983131e-05 2.91222329e-04 2.91222329e-04 -1.02868307e-02 -6.29096583e-03 -6.29096583e-03 -8.58346559e-03 8.49151503e-03 -8.49151503e-03 9.59486559e-04 1.37774951e-04 1.37774951e-04 1.21596738e-03 -2.58595459e-04 2.58595459e-04 7.88241731e-03 8.24231853e-03 -4.47145138e-03 -1.92416159e-04 4.87887308e-05 1.64256895e-04 -6.47988162e-03 -3.94138564e-03 -4.07789392e-03 -1.23324095e-04 -5.25627773e-03 5.01097526e-03 -5.01287669e-03 1.37774951e-04 3.30152350e-04 1.58824815e-04 2.69138959e-05 7.44624905e-04 -4.19384346e-04 1.50120025e-04 7.88241731e-03 -4.47145138e-03 8.24231853e-03 -1.92416159e-04 1.64256895e-04 4.87887308e-05 -6.47988162e-03 -4.07789392e-03 -3.94138564e-03 1.23324095e-04 -5.25627773e-03 5.01287669e-03 -5.01097526e-03 1.37774951e-04 1.58824815e-04 3.30152350e-04 -2.69138959e-05 7.44624905e-04 -1.50120025e-04 4.19384346e-04 2.15728427e-03 -2.15728427e-03 -1.78094826e-05 1.78094826e-05 2.30094432e-05 -2.30094432e-05 -3.89423179e-05 2.09120600e-06 2.09120600e-06 2.69138959e-05 -2.69138959e-05 8.49865950e-06 -4.16848167e-05 -4.16848167e-05 -6.96401205e-03 6.96401205e-03 6.96401205e-03 -5.76134452e-04 5.76134452e-04 5.76134452e-04 -2.78703402e-02 -1.70670281e-02 -1.70670281e-02 -3.91967293e-02 2.20334385e-02 -2.20334385e-02 1.21596738e-03 7.44624905e-04 7.44624905e-04 4.88351268e-03 -9.61306618e-04 9.61306618e-04 -6.65332653e-03 -6.20170953e-03 9.29544937e-03 2.19325430e-04 -3.17373257e-05 -2.41137503e-04 8.34518149e-03 5.10344353e-03 5.25183836e-03 1.91006991e-04 6.78582537e-03 -6.42339379e-03 6.50712338e-03 -2.58595459e-04 -4.19384346e-04 -1.50120025e-04 -4.16848167e-05 -9.61306618e-04 5.81078995e-04 -1.34231757e-04 6.65332653e-03 -9.29544937e-03 6.20170953e-03 -2.19325430e-04 2.41137503e-04 3.17373257e-05 -8.34518149e-03 -5.25183836e-03 -5.10344353e-03 1.91006991e-04 -6.78582537e-03 6.50712338e-03 -6.42339379e-03 2.58595459e-04 1.50120025e-04 4.19384346e-04 -4.16848167e-05 9.61306618e-04 -1.34231757e-04 5.81078995e-04 - 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 - 0 12 24 36 48 66 86 106 124 144 164 170 180 190 190 200 206 216 226 226 236 254 274 294 308 326 346 366 384 404 424 438 456 476 496 -0 0 1 496 - -4.46730500e-01 2.90265885e-01 -6.65919095e-02 3.20736205e-02 -2.50681311e-01 -2.31073552e-01 -2.31073552e-01 2.31073552e-01 4.55715201e-02 9.09946312e-02 9.09946312e-02 -9.09946312e-02 2.90265885e-01 -7.77208948e-02 3.49623849e-02 -1.81562170e-02 1.29637869e-01 1.70706534e-01 1.70706534e-01 -1.70706534e-01 -4.68039666e-02 -8.78615395e-02 -8.78615395e-02 8.78615395e-02 -6.65919095e-02 3.49623849e-02 -8.97965282e-03 4.90391018e-03 -3.43603397e-02 -3.47760262e-02 -3.47760262e-02 3.47760262e-02 8.11017653e-03 1.51409429e-02 1.51409429e-02 -1.51409429e-02 3.20736205e-02 -1.81562170e-02 4.90391018e-03 -2.40214415e-03 1.90677593e-02 2.20810865e-02 2.20810865e-02 -2.20810865e-02 -5.48328334e-03 -1.08124682e-02 -1.08124682e-02 1.08124682e-02 -9.61307016e-02 -9.95491140e-02 -9.95491140e-02 3.84928096e-03 2.53788780e-03 2.53788780e-03 4.96626145e-03 1.19719253e-02 1.19719253e-02 1.34997473e-02 6.86525306e-04 -6.86525306e-04 7.75107441e-03 -7.88241731e-03 -7.88241731e-03 6.96401205e-03 6.65332653e-03 -6.65332653e-03 -9.95491140e-02 5.08101702e-02 9.95491140e-02 2.53788780e-03 9.11909087e-03 -2.53788780e-03 -6.78853114e-03 1.75623651e-03 3.65770659e-03 9.88504715e-03 -1.34997473e-02 2.68064379e-02 -1.14201355e-02 1.00868915e-02 -1.01418763e-02 4.47145138e-03 -2.15728427e-03 -6.96401205e-03 1.75321839e-02 9.29544937e-03 -9.95491140e-02 9.95491140e-02 5.08101702e-02 2.53788780e-03 -2.53788780e-03 9.11909087e-03 -6.78853114e-03 3.65770659e-03 1.75623651e-03 -9.88504715e-03 -1.34997473e-02 1.14201355e-02 -2.68064379e-02 1.00868915e-02 4.47145138e-03 -1.01418763e-02 2.15728427e-03 -6.96401205e-03 -9.29544937e-03 -1.75321839e-02 3.84928096e-03 2.53788780e-03 2.53788780e-03 -1.26047298e-04 7.82240681e-05 7.82240681e-05 -4.95769243e-03 -3.05324736e-03 -3.05324736e-03 -3.98965718e-03 3.80846317e-03 -3.80846317e-03 7.89606128e-05 1.92416159e-04 1.92416159e-04 5.76134452e-04 -2.19325430e-04 2.19325430e-04 2.53788780e-03 9.11909087e-03 -2.53788780e-03 7.82240681e-05 -8.82514067e-05 -7.82240681e-05 4.88057902e-03 3.11404071e-03 2.92421677e-03 -8.16061087e-05 3.98965718e-03 -3.81554628e-03 3.90840983e-03 -2.91222329e-04 -5.41259230e-05 -1.64256895e-04 1.78094826e-05 -5.76134452e-04 1.01124921e-04 -2.41137503e-04 2.53788780e-03 -2.53788780e-03 9.11909087e-03 7.82240681e-05 -7.82240681e-05 -8.82514067e-05 4.88057902e-03 2.92421677e-03 3.11404071e-03 8.16061087e-05 3.98965718e-03 -3.90840983e-03 3.81554628e-03 -2.91222329e-04 -1.64256895e-04 -5.41259230e-05 -1.78094826e-05 -5.76134452e-04 2.41137503e-04 -1.01124921e-04 -2.50681311e-01 1.29637869e-01 -3.43603397e-02 1.90677593e-02 2.55642069e-01 -5.76016724e-02 -2.31073552e-01 1.70706534e-01 -3.47760262e-02 2.20810865e-02 -8.69671403e-02 -8.69671403e-02 8.69671403e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 -2.31073552e-01 1.70706534e-01 -3.47760262e-02 2.20810865e-02 -8.69671403e-02 -8.69671403e-02 8.69671403e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 3.35169819e-01 -3.81033730e-02 -3.81033730e-02 -5.56692551e-02 4.55715201e-02 -4.68039666e-02 8.11017653e-03 -5.48328334e-03 -5.76016724e-02 1.36360519e-02 9.09946312e-02 -8.78615395e-02 1.51409429e-02 -1.08124682e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 -1.70016634e-02 -1.70016634e-02 1.70016634e-02 9.09946312e-02 -8.78615395e-02 1.51409429e-02 -1.08124682e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 -1.70016634e-02 -1.70016634e-02 1.70016634e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 -5.56692551e-02 1.70016634e-02 1.70016634e-02 3.82879364e-03 4.96626145e-03 -6.78853114e-03 -6.78853114e-03 -4.95769243e-03 4.88057902e-03 4.88057902e-03 -2.33214382e-01 -1.42959316e-01 -1.42959316e-01 -1.89783463e-01 1.84466621e-01 -1.84466621e-01 1.05548787e-02 6.47988162e-03 6.47988162e-03 2.78703402e-02 -8.34518149e-03 8.34518149e-03 1.19719253e-02 1.75623651e-03 3.65770659e-03 -3.05324736e-03 3.11404071e-03 2.92421677e-03 -1.42959316e-01 -8.74686860e-02 -8.75173384e-02 1.05433222e-04 -1.16218161e-01 1.13119631e-01 -1.12926204e-01 6.29096583e-03 3.92293329e-03 4.07789392e-03 -2.30094432e-05 1.70670281e-02 -4.94879992e-03 5.25183836e-03 1.19719253e-02 3.65770659e-03 1.75623651e-03 -3.05324736e-03 2.92421677e-03 3.11404071e-03 -1.42959316e-01 -8.75173384e-02 -8.74686860e-02 -1.05433222e-04 -1.16218161e-01 1.12926204e-01 -1.13119631e-01 6.29096583e-03 4.07789392e-03 3.92293329e-03 2.30094432e-05 1.70670281e-02 -5.25183836e-03 4.94879992e-03 9.88504715e-03 -9.88504715e-03 -8.16061087e-05 8.16061087e-05 1.05433222e-04 -1.05433222e-04 -1.78440391e-04 9.58226514e-06 9.58226514e-06 1.23324095e-04 -1.23324095e-04 3.89423179e-05 -1.91006991e-04 -1.91006991e-04 1.34997473e-02 -1.34997473e-02 -1.34997473e-02 -3.98965718e-03 3.98965718e-03 3.98965718e-03 -1.89783463e-01 -1.16218161e-01 -1.16218161e-01 5.86189719e-02 1.50037001e-01 -1.50037001e-01 8.58346559e-03 5.25627773e-03 5.25627773e-03 5.74991859e-03 -6.78582537e-03 6.78582537e-03 6.86525306e-04 2.68064379e-02 1.14201355e-02 3.80846317e-03 -3.81554628e-03 -3.90840983e-03 1.84466621e-01 1.13119631e-01 1.12926204e-01 9.58226514e-06 1.50037001e-01 -1.45660580e-01 1.45949895e-01 -8.49151503e-03 -5.04126819e-03 -5.01287669e-03 -2.09120600e-06 -2.20334385e-02 6.63188133e-03 -6.50712338e-03 -6.86525306e-04 -1.14201355e-02 -2.68064379e-02 -3.80846317e-03 3.90840983e-03 3.81554628e-03 -1.84466621e-01 -1.12926204e-01 -1.13119631e-01 9.58226514e-06 -1.50037001e-01 1.45949895e-01 -1.45660580e-01 8.49151503e-03 5.01287669e-03 5.04126819e-03 -2.09120600e-06 2.20334385e-02 -6.50712338e-03 6.63188133e-03 7.75107441e-03 1.00868915e-02 1.00868915e-02 7.89606128e-05 -2.91222329e-04 -2.91222329e-04 1.05548787e-02 6.29096583e-03 6.29096583e-03 8.58346559e-03 -8.49151503e-03 8.49151503e-03 -7.68391652e-04 -1.37774951e-04 -1.37774951e-04 -1.21596738e-03 2.58595459e-04 -2.58595459e-04 -7.88241731e-03 -1.01418763e-02 4.47145138e-03 1.92416159e-04 -5.41259230e-05 -1.64256895e-04 6.47988162e-03 3.92293329e-03 4.07789392e-03 1.23324095e-04 5.25627773e-03 -5.04126819e-03 5.01287669e-03 -1.37774951e-04 -3.28425304e-04 -1.58824815e-04 -2.69138959e-05 -7.44624905e-04 4.08892304e-04 -1.50120025e-04 -7.88241731e-03 4.47145138e-03 -1.01418763e-02 1.92416159e-04 -1.64256895e-04 -5.41259230e-05 6.47988162e-03 4.07789392e-03 3.92293329e-03 -1.23324095e-04 5.25627773e-03 -5.01287669e-03 5.04126819e-03 -1.37774951e-04 -1.58824815e-04 -3.28425304e-04 2.69138959e-05 -7.44624905e-04 1.50120025e-04 -4.08892304e-04 -2.15728427e-03 2.15728427e-03 1.78094826e-05 -1.78094826e-05 -2.30094432e-05 2.30094432e-05 3.89423179e-05 -2.09120600e-06 -2.09120600e-06 -2.69138959e-05 2.69138959e-05 -8.49865950e-06 4.16848167e-05 4.16848167e-05 6.96401205e-03 -6.96401205e-03 -6.96401205e-03 5.76134452e-04 -5.76134452e-04 -5.76134452e-04 2.78703402e-02 1.70670281e-02 1.70670281e-02 5.74991859e-03 -2.20334385e-02 2.20334385e-02 -1.21596738e-03 -7.44624905e-04 -7.44624905e-04 -2.25860819e-03 9.61306618e-04 -9.61306618e-04 6.65332653e-03 1.75321839e-02 -9.29544937e-03 -2.19325430e-04 1.01124921e-04 2.41137503e-04 -8.34518149e-03 -4.94879992e-03 -5.25183836e-03 -1.91006991e-04 -6.78582537e-03 6.63188133e-03 -6.50712338e-03 2.58595459e-04 4.08892304e-04 1.50120025e-04 4.16848167e-05 9.61306618e-04 -5.05218881e-04 1.34231757e-04 -6.65332653e-03 9.29544937e-03 -1.75321839e-02 2.19325430e-04 -2.41137503e-04 -1.01124921e-04 8.34518149e-03 5.25183836e-03 4.94879992e-03 -1.91006991e-04 6.78582537e-03 -6.50712338e-03 6.63188133e-03 -2.58595459e-04 -1.50120025e-04 -4.08892304e-04 4.16848167e-05 -9.61306618e-04 1.34231757e-04 -5.05218881e-04 - 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 - 0 12 24 36 48 66 86 106 124 144 164 170 180 190 190 200 206 216 226 226 236 254 274 294 308 326 346 366 384 404 424 438 456 476 496 -0 0 2 496 - 1.46471486e+00 2.54883877e-01 1.24590418e-01 -9.35884290e-03 -2.50681311e-01 2.31073552e-01 2.31073552e-01 -2.31073552e-01 4.55715201e-02 -9.09946312e-02 -9.09946312e-02 9.09946312e-02 2.54883877e-01 1.70428957e+00 -9.34218553e-02 1.65342489e-01 1.29637869e-01 -1.70706534e-01 -1.70706534e-01 1.70706534e-01 -4.68039666e-02 8.78615395e-02 8.78615395e-02 -8.78615395e-02 1.24590418e-01 -9.34218553e-02 1.88920782e-02 -1.20468125e-02 -3.43603397e-02 3.47760262e-02 3.47760262e-02 -3.47760262e-02 8.11017653e-03 -1.51409429e-02 -1.51409429e-02 1.51409429e-02 -9.35884290e-03 1.65342489e-01 -1.20468125e-02 1.72406024e-02 1.90677593e-02 -2.20810865e-02 -2.20810865e-02 2.20810865e-02 -5.48328334e-03 1.08124682e-02 1.08124682e-02 -1.08124682e-02 1.89517553e+00 9.95491140e-02 9.95491140e-02 -9.15785008e-03 -2.53788780e-03 -2.53788780e-03 -2.12388496e-02 -1.19719253e-02 -1.19719253e-02 -1.34997473e-02 -6.86525306e-04 6.86525306e-04 -2.22701900e-02 7.88241731e-03 7.88241731e-03 -6.96401205e-03 -6.65332653e-03 6.65332653e-03 9.95491140e-02 2.04211641e+00 -9.95491140e-02 -2.53788780e-03 -3.88804018e-03 2.53788780e-03 6.78853114e-03 1.78035242e-02 -3.65770659e-03 -9.88504715e-03 1.34997473e-02 6.08947863e-03 1.14201355e-02 -1.00868915e-02 8.24231853e-03 -4.47145138e-03 2.15728427e-03 6.96401205e-03 -6.20170953e-03 -9.29544937e-03 9.95491140e-02 -9.95491140e-02 2.04211641e+00 -2.53788780e-03 2.53788780e-03 -3.88804018e-03 6.78853114e-03 -3.65770659e-03 1.78035242e-02 9.88504715e-03 1.34997473e-02 -1.14201355e-02 -6.08947863e-03 -1.00868915e-02 -4.47145138e-03 8.24231853e-03 -2.15728427e-03 6.96401205e-03 9.29544937e-03 6.20170953e-03 -9.15785008e-03 -2.53788780e-03 -2.53788780e-03 1.79684460e-04 -7.82240681e-05 -7.82240681e-05 4.90771661e-03 3.05324736e-03 3.05324736e-03 3.98965718e-03 -3.80846317e-03 3.80846317e-03 -8.90983131e-05 -1.92416159e-04 -1.92416159e-04 -5.76134452e-04 2.19325430e-04 -2.19325430e-04 -2.53788780e-03 -3.88804018e-03 2.53788780e-03 -7.82240681e-05 2.17480352e-04 7.82240681e-05 -4.88057902e-03 -2.92726385e-03 -2.92421677e-03 8.16061087e-05 -3.98965718e-03 3.98374436e-03 -3.90840983e-03 2.91222329e-04 4.87887308e-05 1.64256895e-04 -1.78094826e-05 5.76134452e-04 -3.17373257e-05 2.41137503e-04 -2.53788780e-03 2.53788780e-03 -3.88804018e-03 -7.82240681e-05 7.82240681e-05 2.17480352e-04 -4.88057902e-03 -2.92421677e-03 -2.92726385e-03 -8.16061087e-05 -3.98965718e-03 3.90840983e-03 -3.98374436e-03 2.91222329e-04 1.64256895e-04 4.87887308e-05 1.78094826e-05 5.76134452e-04 -2.41137503e-04 3.17373257e-05 -2.50681311e-01 1.29637869e-01 -3.43603397e-02 1.90677593e-02 2.55642069e-01 -5.76016724e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 -8.69671403e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 -8.69671403e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 -2.31073552e-01 1.70706534e-01 -3.47760262e-02 2.20810865e-02 -8.69671403e-02 -8.69671403e-02 5.09104100e-01 3.81033730e-02 3.81033730e-02 -1.31876001e-01 4.55715201e-02 -4.68039666e-02 8.11017653e-03 -5.48328334e-03 -5.76016724e-02 1.36360519e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 1.70016634e-02 1.70016634e-02 -1.70016634e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 1.70016634e-02 1.70016634e-02 -1.70016634e-02 9.09946312e-02 -8.78615395e-02 1.51409429e-02 -1.08124682e-02 3.81033730e-02 3.81033730e-02 -1.31876001e-01 -1.70016634e-02 -1.70016634e-02 3.78321204e-02 -2.12388496e-02 6.78853114e-03 6.78853114e-03 4.90771661e-03 -4.88057902e-03 -4.88057902e-03 2.33614448e-01 1.42959316e-01 1.42959316e-01 1.89783463e-01 -1.84466621e-01 1.84466621e-01 -1.02868307e-02 -6.47988162e-03 -6.47988162e-03 -2.78703402e-02 8.34518149e-03 -8.34518149e-03 -1.19719253e-02 1.78035242e-02 -3.65770659e-03 3.05324736e-03 -2.92726385e-03 -2.92421677e-03 1.42959316e-01 8.78151758e-02 8.75173384e-02 -1.05433222e-04 1.16218161e-01 -1.12710131e-01 1.12926204e-01 -6.29096583e-03 -3.94138564e-03 -4.07789392e-03 2.30094432e-05 -1.70670281e-02 5.10344353e-03 -5.25183836e-03 -1.19719253e-02 -3.65770659e-03 1.78035242e-02 3.05324736e-03 -2.92421677e-03 -2.92726385e-03 1.42959316e-01 8.75173384e-02 8.78151758e-02 1.05433222e-04 1.16218161e-01 -1.12926204e-01 1.12710131e-01 -6.29096583e-03 -4.07789392e-03 -3.94138564e-03 -2.30094432e-05 -1.70670281e-02 5.25183836e-03 -5.10344353e-03 -9.88504715e-03 9.88504715e-03 8.16061087e-05 -8.16061087e-05 -1.05433222e-04 1.05433222e-04 1.78440391e-04 -9.58226514e-06 -9.58226514e-06 -1.23324095e-04 1.23324095e-04 -3.89423179e-05 1.91006991e-04 1.91006991e-04 -1.34997473e-02 1.34997473e-02 1.34997473e-02 3.98965718e-03 -3.98965718e-03 -3.98965718e-03 1.89783463e-01 1.16218161e-01 1.16218161e-01 3.67563826e-01 -1.50037001e-01 1.50037001e-01 -8.58346559e-03 -5.25627773e-03 -5.25627773e-03 -3.91967293e-02 6.78582537e-03 -6.78582537e-03 -6.86525306e-04 6.08947863e-03 -1.14201355e-02 -3.80846317e-03 3.98374436e-03 3.90840983e-03 -1.84466621e-01 -1.12710131e-01 -1.12926204e-01 -9.58226514e-06 -1.50037001e-01 1.46241269e-01 -1.45949895e-01 8.49151503e-03 5.01097526e-03 5.01287669e-03 2.09120600e-06 2.20334385e-02 -6.42339379e-03 6.50712338e-03 6.86525306e-04 1.14201355e-02 -6.08947863e-03 3.80846317e-03 -3.90840983e-03 -3.98374436e-03 1.84466621e-01 1.12926204e-01 1.12710131e-01 -9.58226514e-06 1.50037001e-01 -1.45949895e-01 1.46241269e-01 -8.49151503e-03 -5.01287669e-03 -5.01097526e-03 2.09120600e-06 -2.20334385e-02 6.50712338e-03 -6.42339379e-03 -2.22701900e-02 -1.00868915e-02 -1.00868915e-02 -8.90983131e-05 2.91222329e-04 2.91222329e-04 -1.02868307e-02 -6.29096583e-03 -6.29096583e-03 -8.58346559e-03 8.49151503e-03 -8.49151503e-03 9.59486559e-04 1.37774951e-04 1.37774951e-04 1.21596738e-03 -2.58595459e-04 2.58595459e-04 7.88241731e-03 8.24231853e-03 -4.47145138e-03 -1.92416159e-04 4.87887308e-05 1.64256895e-04 -6.47988162e-03 -3.94138564e-03 -4.07789392e-03 -1.23324095e-04 -5.25627773e-03 5.01097526e-03 -5.01287669e-03 1.37774951e-04 3.30152350e-04 1.58824815e-04 2.69138959e-05 7.44624905e-04 -4.19384346e-04 1.50120025e-04 7.88241731e-03 -4.47145138e-03 8.24231853e-03 -1.92416159e-04 1.64256895e-04 4.87887308e-05 -6.47988162e-03 -4.07789392e-03 -3.94138564e-03 1.23324095e-04 -5.25627773e-03 5.01287669e-03 -5.01097526e-03 1.37774951e-04 1.58824815e-04 3.30152350e-04 -2.69138959e-05 7.44624905e-04 -1.50120025e-04 4.19384346e-04 2.15728427e-03 -2.15728427e-03 -1.78094826e-05 1.78094826e-05 2.30094432e-05 -2.30094432e-05 -3.89423179e-05 2.09120600e-06 2.09120600e-06 2.69138959e-05 -2.69138959e-05 8.49865950e-06 -4.16848167e-05 -4.16848167e-05 -6.96401205e-03 6.96401205e-03 6.96401205e-03 -5.76134452e-04 5.76134452e-04 5.76134452e-04 -2.78703402e-02 -1.70670281e-02 -1.70670281e-02 -3.91967293e-02 2.20334385e-02 -2.20334385e-02 1.21596738e-03 7.44624905e-04 7.44624905e-04 4.88351268e-03 -9.61306618e-04 9.61306618e-04 -6.65332653e-03 -6.20170953e-03 9.29544937e-03 2.19325430e-04 -3.17373257e-05 -2.41137503e-04 8.34518149e-03 5.10344353e-03 5.25183836e-03 1.91006991e-04 6.78582537e-03 -6.42339379e-03 6.50712338e-03 -2.58595459e-04 -4.19384346e-04 -1.50120025e-04 -4.16848167e-05 -9.61306618e-04 5.81078995e-04 -1.34231757e-04 6.65332653e-03 -9.29544937e-03 6.20170953e-03 -2.19325430e-04 2.41137503e-04 3.17373257e-05 -8.34518149e-03 -5.25183836e-03 -5.10344353e-03 1.91006991e-04 -6.78582537e-03 6.50712338e-03 -6.42339379e-03 2.58595459e-04 1.50120025e-04 4.19384346e-04 -4.16848167e-05 9.61306618e-04 -1.34231757e-04 5.81078995e-04 - 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 - 0 12 24 36 48 66 86 106 124 144 164 170 180 190 190 200 206 216 226 226 236 254 274 294 308 326 346 366 384 404 424 438 456 476 496 -0 1 -2 496 - -1.30077665e+00 -3.97979828e-02 -1.21755678e-01 3.00506476e-02 2.50681311e-01 -2.31073552e-01 -2.31073552e-01 2.31073552e-01 -4.55715201e-02 9.09946312e-02 9.09946312e-02 -9.09946312e-02 -3.97979828e-02 -1.15126664e+00 8.95185576e-02 -1.01048380e-01 -1.29637869e-01 1.70706534e-01 1.70706534e-01 -1.70706534e-01 4.68039666e-02 -8.78615395e-02 -8.78615395e-02 8.78615395e-02 -1.21755678e-01 8.95185576e-02 -1.86285298e-02 1.13591275e-02 3.43603397e-02 -3.47760262e-02 -3.47760262e-02 3.47760262e-02 -8.11017653e-03 1.51409429e-02 1.51409429e-02 -1.51409429e-02 3.00506476e-02 -1.01048380e-01 1.13591275e-02 -9.53400814e-03 -1.90677593e-02 2.20810865e-02 2.20810865e-02 -2.20810865e-02 5.48328334e-03 -1.08124682e-02 -1.08124682e-02 1.08124682e-02 -1.32837516e+00 -9.95491140e-02 -9.95491140e-02 3.64581589e-03 2.53788780e-03 2.53788780e-03 2.60203672e-02 1.19719253e-02 1.19719253e-02 1.34997473e-02 6.86525306e-04 -6.86525306e-04 2.30528378e-02 -7.88241731e-03 -7.88241731e-03 6.96401205e-03 6.65332653e-03 -6.65332653e-03 -9.95491140e-02 -1.47531604e+00 9.95491140e-02 2.53788780e-03 -1.62399402e-03 -2.53788780e-03 -6.78853114e-03 -2.07315938e-02 3.65770659e-03 9.88504715e-03 -1.34997473e-02 -2.30935703e-03 -1.14201355e-02 1.00868915e-02 -8.72159043e-03 4.47145138e-03 -2.15728427e-03 -6.96401205e-03 6.82044689e-03 9.29544937e-03 -9.95491140e-02 9.95491140e-02 -1.47531604e+00 2.53788780e-03 -2.53788780e-03 -1.62399402e-03 -6.78853114e-03 3.65770659e-03 -2.07315938e-02 -9.88504715e-03 -1.34997473e-02 1.14201355e-02 2.30935703e-03 1.00868915e-02 4.47145138e-03 -8.72159043e-03 2.15728427e-03 -6.96401205e-03 -9.29544937e-03 -6.82044689e-03 3.64581589e-03 2.53788780e-03 2.53788780e-03 -1.26080894e-04 7.82240681e-05 7.82240681e-05 -4.95421603e-03 -3.05324736e-03 -3.05324736e-03 -3.98965718e-03 3.80846317e-03 -3.80846317e-03 8.14872011e-05 1.92416159e-04 1.92416159e-04 5.76134452e-04 -2.19325430e-04 2.19325430e-04 2.53788780e-03 -1.62399402e-03 -2.53788780e-03 7.82240681e-05 -1.63876786e-04 -7.82240681e-05 4.88057902e-03 2.95573881e-03 2.92421677e-03 -8.16061087e-05 3.98965718e-03 -4.02050538e-03 3.90840983e-03 -2.91222329e-04 -4.41278956e-05 -1.64256895e-04 1.78094826e-05 -5.76134452e-04 2.57202134e-05 -2.41137503e-04 2.53788780e-03 -2.53788780e-03 -1.62399402e-03 7.82240681e-05 -7.82240681e-05 -1.63876786e-04 4.88057902e-03 2.92421677e-03 2.95573881e-03 8.16061087e-05 3.98965718e-03 -3.90840983e-03 4.02050538e-03 -2.91222329e-04 -1.64256895e-04 -4.41278956e-05 -1.78094826e-05 -5.76134452e-04 2.41137503e-04 -2.57202134e-05 2.50681311e-01 -1.29637869e-01 3.43603397e-02 -1.90677593e-02 -2.55642069e-01 5.76016724e-02 -2.31073552e-01 1.70706534e-01 -3.47760262e-02 2.20810865e-02 -8.69671403e-02 -8.69671403e-02 8.69671403e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 -2.31073552e-01 1.70706534e-01 -3.47760262e-02 2.20810865e-02 -8.69671403e-02 -8.69671403e-02 8.69671403e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 -5.09104100e-01 -3.81033730e-02 -3.81033730e-02 1.31876001e-01 -4.55715201e-02 4.68039666e-02 -8.11017653e-03 5.48328334e-03 5.76016724e-02 -1.36360519e-02 9.09946312e-02 -8.78615395e-02 1.51409429e-02 -1.08124682e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 -1.70016634e-02 -1.70016634e-02 1.70016634e-02 9.09946312e-02 -8.78615395e-02 1.51409429e-02 -1.08124682e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 -1.70016634e-02 -1.70016634e-02 1.70016634e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 1.31876001e-01 1.70016634e-02 1.70016634e-02 -3.78321204e-02 2.60203672e-02 -6.78853114e-03 -6.78853114e-03 -4.95421603e-03 4.88057902e-03 4.88057902e-03 -2.33574112e-01 -1.42959316e-01 -1.42959316e-01 -1.89783463e-01 1.84466621e-01 -1.84466621e-01 1.02934331e-02 6.47988162e-03 6.47988162e-03 2.78703402e-02 -8.34518149e-03 8.34518149e-03 1.19719253e-02 -2.07315938e-02 3.65770659e-03 -3.05324736e-03 2.95573881e-03 2.92421677e-03 -1.42959316e-01 -8.78000495e-02 -8.75173384e-02 1.05433222e-04 -1.16218161e-01 1.12690603e-01 -1.12926204e-01 6.29096583e-03 3.94386154e-03 4.07789392e-03 -2.30094432e-05 1.70670281e-02 -5.10663990e-03 5.25183836e-03 1.19719253e-02 3.65770659e-03 -2.07315938e-02 -3.05324736e-03 2.92421677e-03 2.95573881e-03 -1.42959316e-01 -8.75173384e-02 -8.78000495e-02 -1.05433222e-04 -1.16218161e-01 1.12926204e-01 -1.12690603e-01 6.29096583e-03 4.07789392e-03 3.94386154e-03 2.30094432e-05 1.70670281e-02 -5.25183836e-03 5.10663990e-03 9.88504715e-03 -9.88504715e-03 -8.16061087e-05 8.16061087e-05 1.05433222e-04 -1.05433222e-04 -1.78440391e-04 9.58226514e-06 9.58226514e-06 1.23324095e-04 -1.23324095e-04 3.89423179e-05 -1.91006991e-04 -1.91006991e-04 1.34997473e-02 -1.34997473e-02 -1.34997473e-02 -3.98965718e-03 3.98965718e-03 3.98965718e-03 -1.89783463e-01 -1.16218161e-01 -1.16218161e-01 5.86189719e-02 1.50037001e-01 -1.50037001e-01 8.58346559e-03 5.25627773e-03 5.25627773e-03 5.74991859e-03 -6.78582537e-03 6.78582537e-03 6.86525306e-04 -2.30935703e-03 1.14201355e-02 3.80846317e-03 -4.02050538e-03 -3.90840983e-03 1.84466621e-01 1.12690603e-01 1.12926204e-01 9.58226514e-06 1.50037001e-01 -1.46216058e-01 1.45949895e-01 -8.49151503e-03 -5.01417164e-03 -5.01287669e-03 -2.09120600e-06 -2.20334385e-02 6.42752029e-03 -6.50712338e-03 -6.86525306e-04 -1.14201355e-02 2.30935703e-03 -3.80846317e-03 3.90840983e-03 4.02050538e-03 -1.84466621e-01 -1.12926204e-01 -1.12690603e-01 9.58226514e-06 -1.50037001e-01 1.45949895e-01 -1.46216058e-01 8.49151503e-03 5.01287669e-03 5.01417164e-03 -2.09120600e-06 2.20334385e-02 -6.50712338e-03 6.42752029e-03 2.30528378e-02 1.00868915e-02 1.00868915e-02 8.14872011e-05 -2.91222329e-04 -2.91222329e-04 1.02934331e-02 6.29096583e-03 6.29096583e-03 8.58346559e-03 -8.49151503e-03 8.49151503e-03 -9.58405865e-04 -1.37774951e-04 -1.37774951e-04 -1.21596738e-03 2.58595459e-04 -2.58595459e-04 -7.88241731e-03 -8.72159043e-03 4.47145138e-03 1.92416159e-04 -4.41278956e-05 -1.64256895e-04 6.47988162e-03 3.94386154e-03 4.07789392e-03 1.23324095e-04 5.25627773e-03 -5.01417164e-03 5.01287669e-03 -1.37774951e-04 -3.29747090e-04 -1.58824815e-04 -2.69138959e-05 -7.44624905e-04 4.18861158e-04 -1.50120025e-04 -7.88241731e-03 4.47145138e-03 -8.72159043e-03 1.92416159e-04 -1.64256895e-04 -4.41278956e-05 6.47988162e-03 4.07789392e-03 3.94386154e-03 -1.23324095e-04 5.25627773e-03 -5.01287669e-03 5.01417164e-03 -1.37774951e-04 -1.58824815e-04 -3.29747090e-04 2.69138959e-05 -7.44624905e-04 1.50120025e-04 -4.18861158e-04 -2.15728427e-03 2.15728427e-03 1.78094826e-05 -1.78094826e-05 -2.30094432e-05 2.30094432e-05 3.89423179e-05 -2.09120600e-06 -2.09120600e-06 -2.69138959e-05 2.69138959e-05 -8.49865950e-06 4.16848167e-05 4.16848167e-05 6.96401205e-03 -6.96401205e-03 -6.96401205e-03 5.76134452e-04 -5.76134452e-04 -5.76134452e-04 2.78703402e-02 1.70670281e-02 1.70670281e-02 5.74991859e-03 -2.20334385e-02 2.20334385e-02 -1.21596738e-03 -7.44624905e-04 -7.44624905e-04 -2.25860819e-03 9.61306618e-04 -9.61306618e-04 6.65332653e-03 6.82044689e-03 -9.29544937e-03 -2.19325430e-04 2.57202134e-05 2.41137503e-04 -8.34518149e-03 -5.10663990e-03 -5.25183836e-03 -1.91006991e-04 -6.78582537e-03 6.42752029e-03 -6.50712338e-03 2.58595459e-04 4.18861158e-04 1.50120025e-04 4.16848167e-05 9.61306618e-04 -5.80403562e-04 1.34231757e-04 -6.65332653e-03 9.29544937e-03 -6.82044689e-03 2.19325430e-04 -2.41137503e-04 -2.57202134e-05 8.34518149e-03 5.25183836e-03 5.10663990e-03 -1.91006991e-04 6.78582537e-03 -6.50712338e-03 6.42752029e-03 -2.58595459e-04 -1.50120025e-04 -4.18861158e-04 4.16848167e-05 -9.61306618e-04 1.34231757e-04 -5.80403562e-04 - 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 - 0 12 24 36 48 66 86 106 124 144 164 170 180 190 190 200 206 216 226 226 236 254 274 294 308 326 346 366 384 404 424 438 456 476 496 -0 1 -1 496 - 6.10668701e-01 -7.51799909e-02 6.94266500e-02 -1.13818158e-02 2.50681311e-01 2.31073552e-01 2.31073552e-01 -2.31073552e-01 -4.55715201e-02 -9.09946312e-02 -9.09946312e-02 9.09946312e-02 -7.51799909e-02 6.30743818e-01 -3.88656825e-02 8.24503254e-02 -1.29637869e-01 -1.70706534e-01 -1.70706534e-01 1.70706534e-01 4.68039666e-02 8.78615395e-02 8.78615395e-02 -8.78615395e-02 6.94266500e-02 -3.88656825e-02 9.24320123e-03 -5.59159516e-03 3.43603397e-02 3.47760262e-02 3.47760262e-02 -3.47760262e-02 -8.11017653e-03 -1.51409429e-02 -1.51409429e-02 1.51409429e-02 -1.13818158e-02 8.24503254e-02 -5.59159516e-03 1.01087384e-02 -1.90677593e-02 -2.20810865e-02 -2.20810865e-02 2.20810865e-02 5.48328334e-03 1.08124682e-02 1.08124682e-02 -1.08124682e-02 6.62931071e-01 9.95491140e-02 9.95491140e-02 -9.36131516e-03 -2.53788780e-03 -2.53788780e-03 -1.84743808e-04 -1.19719253e-02 -1.19719253e-02 -1.34997473e-02 -6.86525306e-04 6.86525306e-04 -6.96842667e-03 7.88241731e-03 7.88241731e-03 -6.96401205e-03 -6.65332653e-03 6.65332653e-03 9.95491140e-02 5.15990200e-01 -9.95491140e-02 -2.53788780e-03 -1.46311251e-02 2.53788780e-03 6.78853114e-03 -4.68430612e-03 -3.65770659e-03 -9.88504715e-03 1.34997473e-02 -2.30263163e-02 1.14201355e-02 -1.00868915e-02 9.66260440e-03 -4.47145138e-03 2.15728427e-03 6.96401205e-03 -1.69134466e-02 -9.29544937e-03 9.95491140e-02 -9.95491140e-02 5.15990200e-01 -2.53788780e-03 2.53788780e-03 -1.46311251e-02 6.78853114e-03 -3.65770659e-03 -4.68430612e-03 9.88504715e-03 1.34997473e-02 -1.14201355e-02 2.30263163e-02 -1.00868915e-02 -4.47145138e-03 9.66260440e-03 -2.15728427e-03 6.96401205e-03 9.29544937e-03 1.69134466e-02 -9.36131516e-03 -2.53788780e-03 -2.53788780e-03 1.79650864e-04 -7.82240681e-05 -7.82240681e-05 4.91119301e-03 3.05324736e-03 3.05324736e-03 3.98965718e-03 -3.80846317e-03 3.80846317e-03 -8.65717248e-05 -1.92416159e-04 -1.92416159e-04 -5.76134452e-04 2.19325430e-04 -2.19325430e-04 -2.53788780e-03 -1.46311251e-02 2.53788780e-03 -7.82240681e-05 1.41854973e-04 7.82240681e-05 -4.88057902e-03 -3.08556574e-03 -2.92421677e-03 8.16061087e-05 -3.98965718e-03 3.77878526e-03 -3.90840983e-03 2.91222329e-04 5.87867582e-05 1.64256895e-04 -1.78094826e-05 5.76134452e-04 -1.07142033e-04 2.41137503e-04 -2.53788780e-03 2.53788780e-03 -1.46311251e-02 -7.82240681e-05 7.82240681e-05 1.41854973e-04 -4.88057902e-03 -2.92421677e-03 -3.08556574e-03 -8.16061087e-05 -3.98965718e-03 3.90840983e-03 -3.77878526e-03 2.91222329e-04 1.64256895e-04 5.87867582e-05 1.78094826e-05 5.76134452e-04 -2.41137503e-04 1.07142033e-04 2.50681311e-01 -1.29637869e-01 3.43603397e-02 -1.90677593e-02 -2.55642069e-01 5.76016724e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 -8.69671403e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 -8.69671403e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 -2.31073552e-01 1.70706534e-01 -3.47760262e-02 2.20810865e-02 -8.69671403e-02 -8.69671403e-02 -3.35169819e-01 3.81033730e-02 3.81033730e-02 5.56692551e-02 -4.55715201e-02 4.68039666e-02 -8.11017653e-03 5.48328334e-03 5.76016724e-02 -1.36360519e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 1.70016634e-02 1.70016634e-02 -1.70016634e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 1.70016634e-02 1.70016634e-02 -1.70016634e-02 9.09946312e-02 -8.78615395e-02 1.51409429e-02 -1.08124682e-02 3.81033730e-02 3.81033730e-02 5.56692551e-02 -1.70016634e-02 -1.70016634e-02 -3.82879364e-03 -1.84743808e-04 6.78853114e-03 6.78853114e-03 4.91119301e-03 -4.88057902e-03 -4.88057902e-03 2.33254718e-01 1.42959316e-01 1.42959316e-01 1.89783463e-01 -1.84466621e-01 1.84466621e-01 -1.05482763e-02 -6.47988162e-03 -6.47988162e-03 -2.78703402e-02 8.34518149e-03 -8.34518149e-03 -1.19719253e-02 -4.68430612e-03 -3.65770659e-03 3.05324736e-03 -3.08556574e-03 -2.92421677e-03 1.42959316e-01 8.74838123e-02 8.75173384e-02 -1.05433222e-04 1.16218161e-01 -1.13139159e-01 1.12926204e-01 -6.29096583e-03 -3.92045739e-03 -4.07789392e-03 2.30094432e-05 -1.70670281e-02 4.94560355e-03 -5.25183836e-03 -1.19719253e-02 -3.65770659e-03 -4.68430612e-03 3.05324736e-03 -2.92421677e-03 -3.08556574e-03 1.42959316e-01 8.75173384e-02 8.74838123e-02 1.05433222e-04 1.16218161e-01 -1.12926204e-01 1.13139159e-01 -6.29096583e-03 -4.07789392e-03 -3.92045739e-03 -2.30094432e-05 -1.70670281e-02 5.25183836e-03 -4.94560355e-03 -9.88504715e-03 9.88504715e-03 8.16061087e-05 -8.16061087e-05 -1.05433222e-04 1.05433222e-04 1.78440391e-04 -9.58226514e-06 -9.58226514e-06 -1.23324095e-04 1.23324095e-04 -3.89423179e-05 1.91006991e-04 1.91006991e-04 -1.34997473e-02 1.34997473e-02 1.34997473e-02 3.98965718e-03 -3.98965718e-03 -3.98965718e-03 1.89783463e-01 1.16218161e-01 1.16218161e-01 3.67563826e-01 -1.50037001e-01 1.50037001e-01 -8.58346559e-03 -5.25627773e-03 -5.25627773e-03 -3.91967293e-02 6.78582537e-03 -6.78582537e-03 -6.86525306e-04 -2.30263163e-02 -1.14201355e-02 -3.80846317e-03 3.77878526e-03 3.90840983e-03 -1.84466621e-01 -1.13139159e-01 -1.12926204e-01 -9.58226514e-06 -1.50037001e-01 1.45685791e-01 -1.45949895e-01 8.49151503e-03 5.03807181e-03 5.01287669e-03 2.09120600e-06 2.20334385e-02 -6.62775483e-03 6.50712338e-03 6.86525306e-04 1.14201355e-02 2.30263163e-02 3.80846317e-03 -3.90840983e-03 -3.77878526e-03 1.84466621e-01 1.12926204e-01 1.13139159e-01 -9.58226514e-06 1.50037001e-01 -1.45949895e-01 1.45685791e-01 -8.49151503e-03 -5.01287669e-03 -5.03807181e-03 2.09120600e-06 -2.20334385e-02 6.50712338e-03 -6.62775483e-03 -6.96842667e-03 -1.00868915e-02 -1.00868915e-02 -8.65717248e-05 2.91222329e-04 2.91222329e-04 -1.05482763e-02 -6.29096583e-03 -6.29096583e-03 -8.58346559e-03 8.49151503e-03 -8.49151503e-03 7.69472345e-04 1.37774951e-04 1.37774951e-04 1.21596738e-03 -2.58595459e-04 2.58595459e-04 7.88241731e-03 9.66260440e-03 -4.47145138e-03 -1.92416159e-04 5.87867582e-05 1.64256895e-04 -6.47988162e-03 -3.92045739e-03 -4.07789392e-03 -1.23324095e-04 -5.25627773e-03 5.03807181e-03 -5.01287669e-03 1.37774951e-04 3.28830564e-04 1.58824815e-04 2.69138959e-05 7.44624905e-04 -4.09415493e-04 1.50120025e-04 7.88241731e-03 -4.47145138e-03 9.66260440e-03 -1.92416159e-04 1.64256895e-04 5.87867582e-05 -6.47988162e-03 -4.07789392e-03 -3.92045739e-03 1.23324095e-04 -5.25627773e-03 5.01287669e-03 -5.03807181e-03 1.37774951e-04 1.58824815e-04 3.28830564e-04 -2.69138959e-05 7.44624905e-04 -1.50120025e-04 4.09415493e-04 2.15728427e-03 -2.15728427e-03 -1.78094826e-05 1.78094826e-05 2.30094432e-05 -2.30094432e-05 -3.89423179e-05 2.09120600e-06 2.09120600e-06 2.69138959e-05 -2.69138959e-05 8.49865950e-06 -4.16848167e-05 -4.16848167e-05 -6.96401205e-03 6.96401205e-03 6.96401205e-03 -5.76134452e-04 5.76134452e-04 5.76134452e-04 -2.78703402e-02 -1.70670281e-02 -1.70670281e-02 -3.91967293e-02 2.20334385e-02 -2.20334385e-02 1.21596738e-03 7.44624905e-04 7.44624905e-04 4.88351268e-03 -9.61306618e-04 9.61306618e-04 -6.65332653e-03 -1.69134466e-02 9.29544937e-03 2.19325430e-04 -1.07142033e-04 -2.41137503e-04 8.34518149e-03 4.94560355e-03 5.25183836e-03 1.91006991e-04 6.78582537e-03 -6.62775483e-03 6.50712338e-03 -2.58595459e-04 -4.09415493e-04 -1.50120025e-04 -4.16848167e-05 -9.61306618e-04 5.05894315e-04 -1.34231757e-04 6.65332653e-03 -9.29544937e-03 1.69134466e-02 -2.19325430e-04 2.41137503e-04 1.07142033e-04 -8.34518149e-03 -5.25183836e-03 -4.94560355e-03 1.91006991e-04 -6.78582537e-03 6.50712338e-03 -6.62775483e-03 2.58595459e-04 1.50120025e-04 4.09415493e-04 -4.16848167e-05 9.61306618e-04 -1.34231757e-04 5.05894315e-04 - 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 - 0 12 24 36 48 66 86 106 124 144 164 170 180 190 190 200 206 216 226 226 236 254 274 294 308 326 346 366 384 404 424 438 456 476 496 -0 1 0 496 - -1.30077665e+00 -3.97979828e-02 -1.21755678e-01 3.00506476e-02 2.50681311e-01 -2.31073552e-01 -2.31073552e-01 2.31073552e-01 -4.55715201e-02 9.09946312e-02 9.09946312e-02 -9.09946312e-02 -3.97979828e-02 -1.15126664e+00 8.95185576e-02 -1.01048380e-01 -1.29637869e-01 1.70706534e-01 1.70706534e-01 -1.70706534e-01 4.68039666e-02 -8.78615395e-02 -8.78615395e-02 8.78615395e-02 -1.21755678e-01 8.95185576e-02 -1.86285298e-02 1.13591275e-02 3.43603397e-02 -3.47760262e-02 -3.47760262e-02 3.47760262e-02 -8.11017653e-03 1.51409429e-02 1.51409429e-02 -1.51409429e-02 3.00506476e-02 -1.01048380e-01 1.13591275e-02 -9.53400814e-03 -1.90677593e-02 2.20810865e-02 2.20810865e-02 -2.20810865e-02 5.48328334e-03 -1.08124682e-02 -1.08124682e-02 1.08124682e-02 -1.32837516e+00 -9.95491140e-02 -9.95491140e-02 3.64581589e-03 2.53788780e-03 2.53788780e-03 2.60203672e-02 1.19719253e-02 1.19719253e-02 1.34997473e-02 6.86525306e-04 -6.86525306e-04 2.30528378e-02 -7.88241731e-03 -7.88241731e-03 6.96401205e-03 6.65332653e-03 -6.65332653e-03 -9.95491140e-02 -1.47531604e+00 9.95491140e-02 2.53788780e-03 -1.62399402e-03 -2.53788780e-03 -6.78853114e-03 -2.07315938e-02 3.65770659e-03 9.88504715e-03 -1.34997473e-02 -2.30935703e-03 -1.14201355e-02 1.00868915e-02 -8.72159043e-03 4.47145138e-03 -2.15728427e-03 -6.96401205e-03 6.82044689e-03 9.29544937e-03 -9.95491140e-02 9.95491140e-02 -1.47531604e+00 2.53788780e-03 -2.53788780e-03 -1.62399402e-03 -6.78853114e-03 3.65770659e-03 -2.07315938e-02 -9.88504715e-03 -1.34997473e-02 1.14201355e-02 2.30935703e-03 1.00868915e-02 4.47145138e-03 -8.72159043e-03 2.15728427e-03 -6.96401205e-03 -9.29544937e-03 -6.82044689e-03 3.64581589e-03 2.53788780e-03 2.53788780e-03 -1.26080894e-04 7.82240681e-05 7.82240681e-05 -4.95421603e-03 -3.05324736e-03 -3.05324736e-03 -3.98965718e-03 3.80846317e-03 -3.80846317e-03 8.14872011e-05 1.92416159e-04 1.92416159e-04 5.76134452e-04 -2.19325430e-04 2.19325430e-04 2.53788780e-03 -1.62399402e-03 -2.53788780e-03 7.82240681e-05 -1.63876786e-04 -7.82240681e-05 4.88057902e-03 2.95573881e-03 2.92421677e-03 -8.16061087e-05 3.98965718e-03 -4.02050538e-03 3.90840983e-03 -2.91222329e-04 -4.41278956e-05 -1.64256895e-04 1.78094826e-05 -5.76134452e-04 2.57202134e-05 -2.41137503e-04 2.53788780e-03 -2.53788780e-03 -1.62399402e-03 7.82240681e-05 -7.82240681e-05 -1.63876786e-04 4.88057902e-03 2.92421677e-03 2.95573881e-03 8.16061087e-05 3.98965718e-03 -3.90840983e-03 4.02050538e-03 -2.91222329e-04 -1.64256895e-04 -4.41278956e-05 -1.78094826e-05 -5.76134452e-04 2.41137503e-04 -2.57202134e-05 2.50681311e-01 -1.29637869e-01 3.43603397e-02 -1.90677593e-02 -2.55642069e-01 5.76016724e-02 -2.31073552e-01 1.70706534e-01 -3.47760262e-02 2.20810865e-02 -8.69671403e-02 -8.69671403e-02 8.69671403e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 -2.31073552e-01 1.70706534e-01 -3.47760262e-02 2.20810865e-02 -8.69671403e-02 -8.69671403e-02 8.69671403e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 -5.09104100e-01 -3.81033730e-02 -3.81033730e-02 1.31876001e-01 -4.55715201e-02 4.68039666e-02 -8.11017653e-03 5.48328334e-03 5.76016724e-02 -1.36360519e-02 9.09946312e-02 -8.78615395e-02 1.51409429e-02 -1.08124682e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 -1.70016634e-02 -1.70016634e-02 1.70016634e-02 9.09946312e-02 -8.78615395e-02 1.51409429e-02 -1.08124682e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 -1.70016634e-02 -1.70016634e-02 1.70016634e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 1.31876001e-01 1.70016634e-02 1.70016634e-02 -3.78321204e-02 2.60203672e-02 -6.78853114e-03 -6.78853114e-03 -4.95421603e-03 4.88057902e-03 4.88057902e-03 -2.33574112e-01 -1.42959316e-01 -1.42959316e-01 -1.89783463e-01 1.84466621e-01 -1.84466621e-01 1.02934331e-02 6.47988162e-03 6.47988162e-03 2.78703402e-02 -8.34518149e-03 8.34518149e-03 1.19719253e-02 -2.07315938e-02 3.65770659e-03 -3.05324736e-03 2.95573881e-03 2.92421677e-03 -1.42959316e-01 -8.78000495e-02 -8.75173384e-02 1.05433222e-04 -1.16218161e-01 1.12690603e-01 -1.12926204e-01 6.29096583e-03 3.94386154e-03 4.07789392e-03 -2.30094432e-05 1.70670281e-02 -5.10663990e-03 5.25183836e-03 1.19719253e-02 3.65770659e-03 -2.07315938e-02 -3.05324736e-03 2.92421677e-03 2.95573881e-03 -1.42959316e-01 -8.75173384e-02 -8.78000495e-02 -1.05433222e-04 -1.16218161e-01 1.12926204e-01 -1.12690603e-01 6.29096583e-03 4.07789392e-03 3.94386154e-03 2.30094432e-05 1.70670281e-02 -5.25183836e-03 5.10663990e-03 9.88504715e-03 -9.88504715e-03 -8.16061087e-05 8.16061087e-05 1.05433222e-04 -1.05433222e-04 -1.78440391e-04 9.58226514e-06 9.58226514e-06 1.23324095e-04 -1.23324095e-04 3.89423179e-05 -1.91006991e-04 -1.91006991e-04 1.34997473e-02 -1.34997473e-02 -1.34997473e-02 -3.98965718e-03 3.98965718e-03 3.98965718e-03 -1.89783463e-01 -1.16218161e-01 -1.16218161e-01 5.86189719e-02 1.50037001e-01 -1.50037001e-01 8.58346559e-03 5.25627773e-03 5.25627773e-03 5.74991859e-03 -6.78582537e-03 6.78582537e-03 6.86525306e-04 -2.30935703e-03 1.14201355e-02 3.80846317e-03 -4.02050538e-03 -3.90840983e-03 1.84466621e-01 1.12690603e-01 1.12926204e-01 9.58226514e-06 1.50037001e-01 -1.46216058e-01 1.45949895e-01 -8.49151503e-03 -5.01417164e-03 -5.01287669e-03 -2.09120600e-06 -2.20334385e-02 6.42752029e-03 -6.50712338e-03 -6.86525306e-04 -1.14201355e-02 2.30935703e-03 -3.80846317e-03 3.90840983e-03 4.02050538e-03 -1.84466621e-01 -1.12926204e-01 -1.12690603e-01 9.58226514e-06 -1.50037001e-01 1.45949895e-01 -1.46216058e-01 8.49151503e-03 5.01287669e-03 5.01417164e-03 -2.09120600e-06 2.20334385e-02 -6.50712338e-03 6.42752029e-03 2.30528378e-02 1.00868915e-02 1.00868915e-02 8.14872011e-05 -2.91222329e-04 -2.91222329e-04 1.02934331e-02 6.29096583e-03 6.29096583e-03 8.58346559e-03 -8.49151503e-03 8.49151503e-03 -9.58405865e-04 -1.37774951e-04 -1.37774951e-04 -1.21596738e-03 2.58595459e-04 -2.58595459e-04 -7.88241731e-03 -8.72159043e-03 4.47145138e-03 1.92416159e-04 -4.41278956e-05 -1.64256895e-04 6.47988162e-03 3.94386154e-03 4.07789392e-03 1.23324095e-04 5.25627773e-03 -5.01417164e-03 5.01287669e-03 -1.37774951e-04 -3.29747090e-04 -1.58824815e-04 -2.69138959e-05 -7.44624905e-04 4.18861158e-04 -1.50120025e-04 -7.88241731e-03 4.47145138e-03 -8.72159043e-03 1.92416159e-04 -1.64256895e-04 -4.41278956e-05 6.47988162e-03 4.07789392e-03 3.94386154e-03 -1.23324095e-04 5.25627773e-03 -5.01287669e-03 5.01417164e-03 -1.37774951e-04 -1.58824815e-04 -3.29747090e-04 2.69138959e-05 -7.44624905e-04 1.50120025e-04 -4.18861158e-04 -2.15728427e-03 2.15728427e-03 1.78094826e-05 -1.78094826e-05 -2.30094432e-05 2.30094432e-05 3.89423179e-05 -2.09120600e-06 -2.09120600e-06 -2.69138959e-05 2.69138959e-05 -8.49865950e-06 4.16848167e-05 4.16848167e-05 6.96401205e-03 -6.96401205e-03 -6.96401205e-03 5.76134452e-04 -5.76134452e-04 -5.76134452e-04 2.78703402e-02 1.70670281e-02 1.70670281e-02 5.74991859e-03 -2.20334385e-02 2.20334385e-02 -1.21596738e-03 -7.44624905e-04 -7.44624905e-04 -2.25860819e-03 9.61306618e-04 -9.61306618e-04 6.65332653e-03 6.82044689e-03 -9.29544937e-03 -2.19325430e-04 2.57202134e-05 2.41137503e-04 -8.34518149e-03 -5.10663990e-03 -5.25183836e-03 -1.91006991e-04 -6.78582537e-03 6.42752029e-03 -6.50712338e-03 2.58595459e-04 4.18861158e-04 1.50120025e-04 4.16848167e-05 9.61306618e-04 -5.80403562e-04 1.34231757e-04 -6.65332653e-03 9.29544937e-03 -6.82044689e-03 2.19325430e-04 -2.41137503e-04 -2.57202134e-05 8.34518149e-03 5.25183836e-03 5.10663990e-03 -1.91006991e-04 6.78582537e-03 -6.50712338e-03 6.42752029e-03 -2.58595459e-04 -1.50120025e-04 -4.18861158e-04 4.16848167e-05 -9.61306618e-04 1.34231757e-04 -5.80403562e-04 - 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 - 0 12 24 36 48 66 86 106 124 144 164 170 180 190 190 200 206 216 226 226 236 254 274 294 308 326 346 366 384 404 424 438 456 476 496 -0 1 1 496 - 6.10668701e-01 -7.51799909e-02 6.94266500e-02 -1.13818158e-02 2.50681311e-01 2.31073552e-01 2.31073552e-01 -2.31073552e-01 -4.55715201e-02 -9.09946312e-02 -9.09946312e-02 9.09946312e-02 -7.51799909e-02 6.30743818e-01 -3.88656825e-02 8.24503254e-02 -1.29637869e-01 -1.70706534e-01 -1.70706534e-01 1.70706534e-01 4.68039666e-02 8.78615395e-02 8.78615395e-02 -8.78615395e-02 6.94266500e-02 -3.88656825e-02 9.24320123e-03 -5.59159516e-03 3.43603397e-02 3.47760262e-02 3.47760262e-02 -3.47760262e-02 -8.11017653e-03 -1.51409429e-02 -1.51409429e-02 1.51409429e-02 -1.13818158e-02 8.24503254e-02 -5.59159516e-03 1.01087384e-02 -1.90677593e-02 -2.20810865e-02 -2.20810865e-02 2.20810865e-02 5.48328334e-03 1.08124682e-02 1.08124682e-02 -1.08124682e-02 6.62931071e-01 9.95491140e-02 9.95491140e-02 -9.36131516e-03 -2.53788780e-03 -2.53788780e-03 -1.84743808e-04 -1.19719253e-02 -1.19719253e-02 -1.34997473e-02 -6.86525306e-04 6.86525306e-04 -6.96842667e-03 7.88241731e-03 7.88241731e-03 -6.96401205e-03 -6.65332653e-03 6.65332653e-03 9.95491140e-02 5.15990200e-01 -9.95491140e-02 -2.53788780e-03 -1.46311251e-02 2.53788780e-03 6.78853114e-03 -4.68430612e-03 -3.65770659e-03 -9.88504715e-03 1.34997473e-02 -2.30263163e-02 1.14201355e-02 -1.00868915e-02 9.66260440e-03 -4.47145138e-03 2.15728427e-03 6.96401205e-03 -1.69134466e-02 -9.29544937e-03 9.95491140e-02 -9.95491140e-02 5.15990200e-01 -2.53788780e-03 2.53788780e-03 -1.46311251e-02 6.78853114e-03 -3.65770659e-03 -4.68430612e-03 9.88504715e-03 1.34997473e-02 -1.14201355e-02 2.30263163e-02 -1.00868915e-02 -4.47145138e-03 9.66260440e-03 -2.15728427e-03 6.96401205e-03 9.29544937e-03 1.69134466e-02 -9.36131516e-03 -2.53788780e-03 -2.53788780e-03 1.79650864e-04 -7.82240681e-05 -7.82240681e-05 4.91119301e-03 3.05324736e-03 3.05324736e-03 3.98965718e-03 -3.80846317e-03 3.80846317e-03 -8.65717248e-05 -1.92416159e-04 -1.92416159e-04 -5.76134452e-04 2.19325430e-04 -2.19325430e-04 -2.53788780e-03 -1.46311251e-02 2.53788780e-03 -7.82240681e-05 1.41854973e-04 7.82240681e-05 -4.88057902e-03 -3.08556574e-03 -2.92421677e-03 8.16061087e-05 -3.98965718e-03 3.77878526e-03 -3.90840983e-03 2.91222329e-04 5.87867582e-05 1.64256895e-04 -1.78094826e-05 5.76134452e-04 -1.07142033e-04 2.41137503e-04 -2.53788780e-03 2.53788780e-03 -1.46311251e-02 -7.82240681e-05 7.82240681e-05 1.41854973e-04 -4.88057902e-03 -2.92421677e-03 -3.08556574e-03 -8.16061087e-05 -3.98965718e-03 3.90840983e-03 -3.77878526e-03 2.91222329e-04 1.64256895e-04 5.87867582e-05 1.78094826e-05 5.76134452e-04 -2.41137503e-04 1.07142033e-04 2.50681311e-01 -1.29637869e-01 3.43603397e-02 -1.90677593e-02 -2.55642069e-01 5.76016724e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 -8.69671403e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 -8.69671403e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 -2.31073552e-01 1.70706534e-01 -3.47760262e-02 2.20810865e-02 -8.69671403e-02 -8.69671403e-02 -3.35169819e-01 3.81033730e-02 3.81033730e-02 5.56692551e-02 -4.55715201e-02 4.68039666e-02 -8.11017653e-03 5.48328334e-03 5.76016724e-02 -1.36360519e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 1.70016634e-02 1.70016634e-02 -1.70016634e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 1.70016634e-02 1.70016634e-02 -1.70016634e-02 9.09946312e-02 -8.78615395e-02 1.51409429e-02 -1.08124682e-02 3.81033730e-02 3.81033730e-02 5.56692551e-02 -1.70016634e-02 -1.70016634e-02 -3.82879364e-03 -1.84743808e-04 6.78853114e-03 6.78853114e-03 4.91119301e-03 -4.88057902e-03 -4.88057902e-03 2.33254718e-01 1.42959316e-01 1.42959316e-01 1.89783463e-01 -1.84466621e-01 1.84466621e-01 -1.05482763e-02 -6.47988162e-03 -6.47988162e-03 -2.78703402e-02 8.34518149e-03 -8.34518149e-03 -1.19719253e-02 -4.68430612e-03 -3.65770659e-03 3.05324736e-03 -3.08556574e-03 -2.92421677e-03 1.42959316e-01 8.74838123e-02 8.75173384e-02 -1.05433222e-04 1.16218161e-01 -1.13139159e-01 1.12926204e-01 -6.29096583e-03 -3.92045739e-03 -4.07789392e-03 2.30094432e-05 -1.70670281e-02 4.94560355e-03 -5.25183836e-03 -1.19719253e-02 -3.65770659e-03 -4.68430612e-03 3.05324736e-03 -2.92421677e-03 -3.08556574e-03 1.42959316e-01 8.75173384e-02 8.74838123e-02 1.05433222e-04 1.16218161e-01 -1.12926204e-01 1.13139159e-01 -6.29096583e-03 -4.07789392e-03 -3.92045739e-03 -2.30094432e-05 -1.70670281e-02 5.25183836e-03 -4.94560355e-03 -9.88504715e-03 9.88504715e-03 8.16061087e-05 -8.16061087e-05 -1.05433222e-04 1.05433222e-04 1.78440391e-04 -9.58226514e-06 -9.58226514e-06 -1.23324095e-04 1.23324095e-04 -3.89423179e-05 1.91006991e-04 1.91006991e-04 -1.34997473e-02 1.34997473e-02 1.34997473e-02 3.98965718e-03 -3.98965718e-03 -3.98965718e-03 1.89783463e-01 1.16218161e-01 1.16218161e-01 3.67563826e-01 -1.50037001e-01 1.50037001e-01 -8.58346559e-03 -5.25627773e-03 -5.25627773e-03 -3.91967293e-02 6.78582537e-03 -6.78582537e-03 -6.86525306e-04 -2.30263163e-02 -1.14201355e-02 -3.80846317e-03 3.77878526e-03 3.90840983e-03 -1.84466621e-01 -1.13139159e-01 -1.12926204e-01 -9.58226514e-06 -1.50037001e-01 1.45685791e-01 -1.45949895e-01 8.49151503e-03 5.03807181e-03 5.01287669e-03 2.09120600e-06 2.20334385e-02 -6.62775483e-03 6.50712338e-03 6.86525306e-04 1.14201355e-02 2.30263163e-02 3.80846317e-03 -3.90840983e-03 -3.77878526e-03 1.84466621e-01 1.12926204e-01 1.13139159e-01 -9.58226514e-06 1.50037001e-01 -1.45949895e-01 1.45685791e-01 -8.49151503e-03 -5.01287669e-03 -5.03807181e-03 2.09120600e-06 -2.20334385e-02 6.50712338e-03 -6.62775483e-03 -6.96842667e-03 -1.00868915e-02 -1.00868915e-02 -8.65717248e-05 2.91222329e-04 2.91222329e-04 -1.05482763e-02 -6.29096583e-03 -6.29096583e-03 -8.58346559e-03 8.49151503e-03 -8.49151503e-03 7.69472345e-04 1.37774951e-04 1.37774951e-04 1.21596738e-03 -2.58595459e-04 2.58595459e-04 7.88241731e-03 9.66260440e-03 -4.47145138e-03 -1.92416159e-04 5.87867582e-05 1.64256895e-04 -6.47988162e-03 -3.92045739e-03 -4.07789392e-03 -1.23324095e-04 -5.25627773e-03 5.03807181e-03 -5.01287669e-03 1.37774951e-04 3.28830564e-04 1.58824815e-04 2.69138959e-05 7.44624905e-04 -4.09415493e-04 1.50120025e-04 7.88241731e-03 -4.47145138e-03 9.66260440e-03 -1.92416159e-04 1.64256895e-04 5.87867582e-05 -6.47988162e-03 -4.07789392e-03 -3.92045739e-03 1.23324095e-04 -5.25627773e-03 5.01287669e-03 -5.03807181e-03 1.37774951e-04 1.58824815e-04 3.28830564e-04 -2.69138959e-05 7.44624905e-04 -1.50120025e-04 4.09415493e-04 2.15728427e-03 -2.15728427e-03 -1.78094826e-05 1.78094826e-05 2.30094432e-05 -2.30094432e-05 -3.89423179e-05 2.09120600e-06 2.09120600e-06 2.69138959e-05 -2.69138959e-05 8.49865950e-06 -4.16848167e-05 -4.16848167e-05 -6.96401205e-03 6.96401205e-03 6.96401205e-03 -5.76134452e-04 5.76134452e-04 5.76134452e-04 -2.78703402e-02 -1.70670281e-02 -1.70670281e-02 -3.91967293e-02 2.20334385e-02 -2.20334385e-02 1.21596738e-03 7.44624905e-04 7.44624905e-04 4.88351268e-03 -9.61306618e-04 9.61306618e-04 -6.65332653e-03 -1.69134466e-02 9.29544937e-03 2.19325430e-04 -1.07142033e-04 -2.41137503e-04 8.34518149e-03 4.94560355e-03 5.25183836e-03 1.91006991e-04 6.78582537e-03 -6.62775483e-03 6.50712338e-03 -2.58595459e-04 -4.09415493e-04 -1.50120025e-04 -4.16848167e-05 -9.61306618e-04 5.05894315e-04 -1.34231757e-04 6.65332653e-03 -9.29544937e-03 1.69134466e-02 -2.19325430e-04 2.41137503e-04 1.07142033e-04 -8.34518149e-03 -5.25183836e-03 -4.94560355e-03 1.91006991e-04 -6.78582537e-03 6.50712338e-03 -6.62775483e-03 2.58595459e-04 1.50120025e-04 4.09415493e-04 -4.16848167e-05 9.61306618e-04 -1.34231757e-04 5.05894315e-04 - 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 - 0 12 24 36 48 66 86 106 124 144 164 170 180 190 190 200 206 216 226 226 236 254 274 294 308 326 346 366 384 404 424 438 456 476 496 -0 2 -2 496 - 1.46471486e+00 2.54883877e-01 1.24590418e-01 -9.35884290e-03 -2.50681311e-01 2.31073552e-01 2.31073552e-01 -2.31073552e-01 4.55715201e-02 -9.09946312e-02 -9.09946312e-02 9.09946312e-02 2.54883877e-01 1.70428957e+00 -9.34218553e-02 1.65342489e-01 1.29637869e-01 -1.70706534e-01 -1.70706534e-01 1.70706534e-01 -4.68039666e-02 8.78615395e-02 8.78615395e-02 -8.78615395e-02 1.24590418e-01 -9.34218553e-02 1.88920782e-02 -1.20468125e-02 -3.43603397e-02 3.47760262e-02 3.47760262e-02 -3.47760262e-02 8.11017653e-03 -1.51409429e-02 -1.51409429e-02 1.51409429e-02 -9.35884290e-03 1.65342489e-01 -1.20468125e-02 1.72406024e-02 1.90677593e-02 -2.20810865e-02 -2.20810865e-02 2.20810865e-02 -5.48328334e-03 1.08124682e-02 1.08124682e-02 -1.08124682e-02 1.89517553e+00 9.95491140e-02 9.95491140e-02 -9.15785008e-03 -2.53788780e-03 -2.53788780e-03 -2.12388496e-02 -1.19719253e-02 -1.19719253e-02 -1.34997473e-02 -6.86525306e-04 6.86525306e-04 -2.22701900e-02 7.88241731e-03 7.88241731e-03 -6.96401205e-03 -6.65332653e-03 6.65332653e-03 9.95491140e-02 2.04211641e+00 -9.95491140e-02 -2.53788780e-03 -3.88804018e-03 2.53788780e-03 6.78853114e-03 1.78035242e-02 -3.65770659e-03 -9.88504715e-03 1.34997473e-02 6.08947863e-03 1.14201355e-02 -1.00868915e-02 8.24231853e-03 -4.47145138e-03 2.15728427e-03 6.96401205e-03 -6.20170953e-03 -9.29544937e-03 9.95491140e-02 -9.95491140e-02 2.04211641e+00 -2.53788780e-03 2.53788780e-03 -3.88804018e-03 6.78853114e-03 -3.65770659e-03 1.78035242e-02 9.88504715e-03 1.34997473e-02 -1.14201355e-02 -6.08947863e-03 -1.00868915e-02 -4.47145138e-03 8.24231853e-03 -2.15728427e-03 6.96401205e-03 9.29544937e-03 6.20170953e-03 -9.15785008e-03 -2.53788780e-03 -2.53788780e-03 1.79684460e-04 -7.82240681e-05 -7.82240681e-05 4.90771661e-03 3.05324736e-03 3.05324736e-03 3.98965718e-03 -3.80846317e-03 3.80846317e-03 -8.90983131e-05 -1.92416159e-04 -1.92416159e-04 -5.76134452e-04 2.19325430e-04 -2.19325430e-04 -2.53788780e-03 -3.88804018e-03 2.53788780e-03 -7.82240681e-05 2.17480352e-04 7.82240681e-05 -4.88057902e-03 -2.92726385e-03 -2.92421677e-03 8.16061087e-05 -3.98965718e-03 3.98374436e-03 -3.90840983e-03 2.91222329e-04 4.87887308e-05 1.64256895e-04 -1.78094826e-05 5.76134452e-04 -3.17373257e-05 2.41137503e-04 -2.53788780e-03 2.53788780e-03 -3.88804018e-03 -7.82240681e-05 7.82240681e-05 2.17480352e-04 -4.88057902e-03 -2.92421677e-03 -2.92726385e-03 -8.16061087e-05 -3.98965718e-03 3.90840983e-03 -3.98374436e-03 2.91222329e-04 1.64256895e-04 4.87887308e-05 1.78094826e-05 5.76134452e-04 -2.41137503e-04 3.17373257e-05 -2.50681311e-01 1.29637869e-01 -3.43603397e-02 1.90677593e-02 2.55642069e-01 -5.76016724e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 -8.69671403e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 -8.69671403e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 -2.31073552e-01 1.70706534e-01 -3.47760262e-02 2.20810865e-02 -8.69671403e-02 -8.69671403e-02 5.09104100e-01 3.81033730e-02 3.81033730e-02 -1.31876001e-01 4.55715201e-02 -4.68039666e-02 8.11017653e-03 -5.48328334e-03 -5.76016724e-02 1.36360519e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 1.70016634e-02 1.70016634e-02 -1.70016634e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 1.70016634e-02 1.70016634e-02 -1.70016634e-02 9.09946312e-02 -8.78615395e-02 1.51409429e-02 -1.08124682e-02 3.81033730e-02 3.81033730e-02 -1.31876001e-01 -1.70016634e-02 -1.70016634e-02 3.78321204e-02 -2.12388496e-02 6.78853114e-03 6.78853114e-03 4.90771661e-03 -4.88057902e-03 -4.88057902e-03 2.33614448e-01 1.42959316e-01 1.42959316e-01 1.89783463e-01 -1.84466621e-01 1.84466621e-01 -1.02868307e-02 -6.47988162e-03 -6.47988162e-03 -2.78703402e-02 8.34518149e-03 -8.34518149e-03 -1.19719253e-02 1.78035242e-02 -3.65770659e-03 3.05324736e-03 -2.92726385e-03 -2.92421677e-03 1.42959316e-01 8.78151758e-02 8.75173384e-02 -1.05433222e-04 1.16218161e-01 -1.12710131e-01 1.12926204e-01 -6.29096583e-03 -3.94138564e-03 -4.07789392e-03 2.30094432e-05 -1.70670281e-02 5.10344353e-03 -5.25183836e-03 -1.19719253e-02 -3.65770659e-03 1.78035242e-02 3.05324736e-03 -2.92421677e-03 -2.92726385e-03 1.42959316e-01 8.75173384e-02 8.78151758e-02 1.05433222e-04 1.16218161e-01 -1.12926204e-01 1.12710131e-01 -6.29096583e-03 -4.07789392e-03 -3.94138564e-03 -2.30094432e-05 -1.70670281e-02 5.25183836e-03 -5.10344353e-03 -9.88504715e-03 9.88504715e-03 8.16061087e-05 -8.16061087e-05 -1.05433222e-04 1.05433222e-04 1.78440391e-04 -9.58226514e-06 -9.58226514e-06 -1.23324095e-04 1.23324095e-04 -3.89423179e-05 1.91006991e-04 1.91006991e-04 -1.34997473e-02 1.34997473e-02 1.34997473e-02 3.98965718e-03 -3.98965718e-03 -3.98965718e-03 1.89783463e-01 1.16218161e-01 1.16218161e-01 3.67563826e-01 -1.50037001e-01 1.50037001e-01 -8.58346559e-03 -5.25627773e-03 -5.25627773e-03 -3.91967293e-02 6.78582537e-03 -6.78582537e-03 -6.86525306e-04 6.08947863e-03 -1.14201355e-02 -3.80846317e-03 3.98374436e-03 3.90840983e-03 -1.84466621e-01 -1.12710131e-01 -1.12926204e-01 -9.58226514e-06 -1.50037001e-01 1.46241269e-01 -1.45949895e-01 8.49151503e-03 5.01097526e-03 5.01287669e-03 2.09120600e-06 2.20334385e-02 -6.42339379e-03 6.50712338e-03 6.86525306e-04 1.14201355e-02 -6.08947863e-03 3.80846317e-03 -3.90840983e-03 -3.98374436e-03 1.84466621e-01 1.12926204e-01 1.12710131e-01 -9.58226514e-06 1.50037001e-01 -1.45949895e-01 1.46241269e-01 -8.49151503e-03 -5.01287669e-03 -5.01097526e-03 2.09120600e-06 -2.20334385e-02 6.50712338e-03 -6.42339379e-03 -2.22701900e-02 -1.00868915e-02 -1.00868915e-02 -8.90983131e-05 2.91222329e-04 2.91222329e-04 -1.02868307e-02 -6.29096583e-03 -6.29096583e-03 -8.58346559e-03 8.49151503e-03 -8.49151503e-03 9.59486559e-04 1.37774951e-04 1.37774951e-04 1.21596738e-03 -2.58595459e-04 2.58595459e-04 7.88241731e-03 8.24231853e-03 -4.47145138e-03 -1.92416159e-04 4.87887308e-05 1.64256895e-04 -6.47988162e-03 -3.94138564e-03 -4.07789392e-03 -1.23324095e-04 -5.25627773e-03 5.01097526e-03 -5.01287669e-03 1.37774951e-04 3.30152350e-04 1.58824815e-04 2.69138959e-05 7.44624905e-04 -4.19384346e-04 1.50120025e-04 7.88241731e-03 -4.47145138e-03 8.24231853e-03 -1.92416159e-04 1.64256895e-04 4.87887308e-05 -6.47988162e-03 -4.07789392e-03 -3.94138564e-03 1.23324095e-04 -5.25627773e-03 5.01287669e-03 -5.01097526e-03 1.37774951e-04 1.58824815e-04 3.30152350e-04 -2.69138959e-05 7.44624905e-04 -1.50120025e-04 4.19384346e-04 2.15728427e-03 -2.15728427e-03 -1.78094826e-05 1.78094826e-05 2.30094432e-05 -2.30094432e-05 -3.89423179e-05 2.09120600e-06 2.09120600e-06 2.69138959e-05 -2.69138959e-05 8.49865950e-06 -4.16848167e-05 -4.16848167e-05 -6.96401205e-03 6.96401205e-03 6.96401205e-03 -5.76134452e-04 5.76134452e-04 5.76134452e-04 -2.78703402e-02 -1.70670281e-02 -1.70670281e-02 -3.91967293e-02 2.20334385e-02 -2.20334385e-02 1.21596738e-03 7.44624905e-04 7.44624905e-04 4.88351268e-03 -9.61306618e-04 9.61306618e-04 -6.65332653e-03 -6.20170953e-03 9.29544937e-03 2.19325430e-04 -3.17373257e-05 -2.41137503e-04 8.34518149e-03 5.10344353e-03 5.25183836e-03 1.91006991e-04 6.78582537e-03 -6.42339379e-03 6.50712338e-03 -2.58595459e-04 -4.19384346e-04 -1.50120025e-04 -4.16848167e-05 -9.61306618e-04 5.81078995e-04 -1.34231757e-04 6.65332653e-03 -9.29544937e-03 6.20170953e-03 -2.19325430e-04 2.41137503e-04 3.17373257e-05 -8.34518149e-03 -5.25183836e-03 -5.10344353e-03 1.91006991e-04 -6.78582537e-03 6.50712338e-03 -6.42339379e-03 2.58595459e-04 1.50120025e-04 4.19384346e-04 -4.16848167e-05 9.61306618e-04 -1.34231757e-04 5.81078995e-04 - 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 - 0 12 24 36 48 66 86 106 124 144 164 170 180 190 190 200 206 216 226 226 236 254 274 294 308 326 346 366 384 404 424 438 456 476 496 -0 2 -1 496 - -4.46730500e-01 2.90265885e-01 -6.65919095e-02 3.20736205e-02 -2.50681311e-01 -2.31073552e-01 -2.31073552e-01 2.31073552e-01 4.55715201e-02 9.09946312e-02 9.09946312e-02 -9.09946312e-02 2.90265885e-01 -7.77208948e-02 3.49623849e-02 -1.81562170e-02 1.29637869e-01 1.70706534e-01 1.70706534e-01 -1.70706534e-01 -4.68039666e-02 -8.78615395e-02 -8.78615395e-02 8.78615395e-02 -6.65919095e-02 3.49623849e-02 -8.97965282e-03 4.90391018e-03 -3.43603397e-02 -3.47760262e-02 -3.47760262e-02 3.47760262e-02 8.11017653e-03 1.51409429e-02 1.51409429e-02 -1.51409429e-02 3.20736205e-02 -1.81562170e-02 4.90391018e-03 -2.40214415e-03 1.90677593e-02 2.20810865e-02 2.20810865e-02 -2.20810865e-02 -5.48328334e-03 -1.08124682e-02 -1.08124682e-02 1.08124682e-02 -9.61307016e-02 -9.95491140e-02 -9.95491140e-02 3.84928096e-03 2.53788780e-03 2.53788780e-03 4.96626145e-03 1.19719253e-02 1.19719253e-02 1.34997473e-02 6.86525306e-04 -6.86525306e-04 7.75107441e-03 -7.88241731e-03 -7.88241731e-03 6.96401205e-03 6.65332653e-03 -6.65332653e-03 -9.95491140e-02 5.08101702e-02 9.95491140e-02 2.53788780e-03 9.11909087e-03 -2.53788780e-03 -6.78853114e-03 1.75623651e-03 3.65770659e-03 9.88504715e-03 -1.34997473e-02 2.68064379e-02 -1.14201355e-02 1.00868915e-02 -1.01418763e-02 4.47145138e-03 -2.15728427e-03 -6.96401205e-03 1.75321839e-02 9.29544937e-03 -9.95491140e-02 9.95491140e-02 5.08101702e-02 2.53788780e-03 -2.53788780e-03 9.11909087e-03 -6.78853114e-03 3.65770659e-03 1.75623651e-03 -9.88504715e-03 -1.34997473e-02 1.14201355e-02 -2.68064379e-02 1.00868915e-02 4.47145138e-03 -1.01418763e-02 2.15728427e-03 -6.96401205e-03 -9.29544937e-03 -1.75321839e-02 3.84928096e-03 2.53788780e-03 2.53788780e-03 -1.26047298e-04 7.82240681e-05 7.82240681e-05 -4.95769243e-03 -3.05324736e-03 -3.05324736e-03 -3.98965718e-03 3.80846317e-03 -3.80846317e-03 7.89606128e-05 1.92416159e-04 1.92416159e-04 5.76134452e-04 -2.19325430e-04 2.19325430e-04 2.53788780e-03 9.11909087e-03 -2.53788780e-03 7.82240681e-05 -8.82514067e-05 -7.82240681e-05 4.88057902e-03 3.11404071e-03 2.92421677e-03 -8.16061087e-05 3.98965718e-03 -3.81554628e-03 3.90840983e-03 -2.91222329e-04 -5.41259230e-05 -1.64256895e-04 1.78094826e-05 -5.76134452e-04 1.01124921e-04 -2.41137503e-04 2.53788780e-03 -2.53788780e-03 9.11909087e-03 7.82240681e-05 -7.82240681e-05 -8.82514067e-05 4.88057902e-03 2.92421677e-03 3.11404071e-03 8.16061087e-05 3.98965718e-03 -3.90840983e-03 3.81554628e-03 -2.91222329e-04 -1.64256895e-04 -5.41259230e-05 -1.78094826e-05 -5.76134452e-04 2.41137503e-04 -1.01124921e-04 -2.50681311e-01 1.29637869e-01 -3.43603397e-02 1.90677593e-02 2.55642069e-01 -5.76016724e-02 -2.31073552e-01 1.70706534e-01 -3.47760262e-02 2.20810865e-02 -8.69671403e-02 -8.69671403e-02 8.69671403e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 -2.31073552e-01 1.70706534e-01 -3.47760262e-02 2.20810865e-02 -8.69671403e-02 -8.69671403e-02 8.69671403e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 3.35169819e-01 -3.81033730e-02 -3.81033730e-02 -5.56692551e-02 4.55715201e-02 -4.68039666e-02 8.11017653e-03 -5.48328334e-03 -5.76016724e-02 1.36360519e-02 9.09946312e-02 -8.78615395e-02 1.51409429e-02 -1.08124682e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 -1.70016634e-02 -1.70016634e-02 1.70016634e-02 9.09946312e-02 -8.78615395e-02 1.51409429e-02 -1.08124682e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 -1.70016634e-02 -1.70016634e-02 1.70016634e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 -5.56692551e-02 1.70016634e-02 1.70016634e-02 3.82879364e-03 4.96626145e-03 -6.78853114e-03 -6.78853114e-03 -4.95769243e-03 4.88057902e-03 4.88057902e-03 -2.33214382e-01 -1.42959316e-01 -1.42959316e-01 -1.89783463e-01 1.84466621e-01 -1.84466621e-01 1.05548787e-02 6.47988162e-03 6.47988162e-03 2.78703402e-02 -8.34518149e-03 8.34518149e-03 1.19719253e-02 1.75623651e-03 3.65770659e-03 -3.05324736e-03 3.11404071e-03 2.92421677e-03 -1.42959316e-01 -8.74686860e-02 -8.75173384e-02 1.05433222e-04 -1.16218161e-01 1.13119631e-01 -1.12926204e-01 6.29096583e-03 3.92293329e-03 4.07789392e-03 -2.30094432e-05 1.70670281e-02 -4.94879992e-03 5.25183836e-03 1.19719253e-02 3.65770659e-03 1.75623651e-03 -3.05324736e-03 2.92421677e-03 3.11404071e-03 -1.42959316e-01 -8.75173384e-02 -8.74686860e-02 -1.05433222e-04 -1.16218161e-01 1.12926204e-01 -1.13119631e-01 6.29096583e-03 4.07789392e-03 3.92293329e-03 2.30094432e-05 1.70670281e-02 -5.25183836e-03 4.94879992e-03 9.88504715e-03 -9.88504715e-03 -8.16061087e-05 8.16061087e-05 1.05433222e-04 -1.05433222e-04 -1.78440391e-04 9.58226514e-06 9.58226514e-06 1.23324095e-04 -1.23324095e-04 3.89423179e-05 -1.91006991e-04 -1.91006991e-04 1.34997473e-02 -1.34997473e-02 -1.34997473e-02 -3.98965718e-03 3.98965718e-03 3.98965718e-03 -1.89783463e-01 -1.16218161e-01 -1.16218161e-01 5.86189719e-02 1.50037001e-01 -1.50037001e-01 8.58346559e-03 5.25627773e-03 5.25627773e-03 5.74991859e-03 -6.78582537e-03 6.78582537e-03 6.86525306e-04 2.68064379e-02 1.14201355e-02 3.80846317e-03 -3.81554628e-03 -3.90840983e-03 1.84466621e-01 1.13119631e-01 1.12926204e-01 9.58226514e-06 1.50037001e-01 -1.45660580e-01 1.45949895e-01 -8.49151503e-03 -5.04126819e-03 -5.01287669e-03 -2.09120600e-06 -2.20334385e-02 6.63188133e-03 -6.50712338e-03 -6.86525306e-04 -1.14201355e-02 -2.68064379e-02 -3.80846317e-03 3.90840983e-03 3.81554628e-03 -1.84466621e-01 -1.12926204e-01 -1.13119631e-01 9.58226514e-06 -1.50037001e-01 1.45949895e-01 -1.45660580e-01 8.49151503e-03 5.01287669e-03 5.04126819e-03 -2.09120600e-06 2.20334385e-02 -6.50712338e-03 6.63188133e-03 7.75107441e-03 1.00868915e-02 1.00868915e-02 7.89606128e-05 -2.91222329e-04 -2.91222329e-04 1.05548787e-02 6.29096583e-03 6.29096583e-03 8.58346559e-03 -8.49151503e-03 8.49151503e-03 -7.68391652e-04 -1.37774951e-04 -1.37774951e-04 -1.21596738e-03 2.58595459e-04 -2.58595459e-04 -7.88241731e-03 -1.01418763e-02 4.47145138e-03 1.92416159e-04 -5.41259230e-05 -1.64256895e-04 6.47988162e-03 3.92293329e-03 4.07789392e-03 1.23324095e-04 5.25627773e-03 -5.04126819e-03 5.01287669e-03 -1.37774951e-04 -3.28425304e-04 -1.58824815e-04 -2.69138959e-05 -7.44624905e-04 4.08892304e-04 -1.50120025e-04 -7.88241731e-03 4.47145138e-03 -1.01418763e-02 1.92416159e-04 -1.64256895e-04 -5.41259230e-05 6.47988162e-03 4.07789392e-03 3.92293329e-03 -1.23324095e-04 5.25627773e-03 -5.01287669e-03 5.04126819e-03 -1.37774951e-04 -1.58824815e-04 -3.28425304e-04 2.69138959e-05 -7.44624905e-04 1.50120025e-04 -4.08892304e-04 -2.15728427e-03 2.15728427e-03 1.78094826e-05 -1.78094826e-05 -2.30094432e-05 2.30094432e-05 3.89423179e-05 -2.09120600e-06 -2.09120600e-06 -2.69138959e-05 2.69138959e-05 -8.49865950e-06 4.16848167e-05 4.16848167e-05 6.96401205e-03 -6.96401205e-03 -6.96401205e-03 5.76134452e-04 -5.76134452e-04 -5.76134452e-04 2.78703402e-02 1.70670281e-02 1.70670281e-02 5.74991859e-03 -2.20334385e-02 2.20334385e-02 -1.21596738e-03 -7.44624905e-04 -7.44624905e-04 -2.25860819e-03 9.61306618e-04 -9.61306618e-04 6.65332653e-03 1.75321839e-02 -9.29544937e-03 -2.19325430e-04 1.01124921e-04 2.41137503e-04 -8.34518149e-03 -4.94879992e-03 -5.25183836e-03 -1.91006991e-04 -6.78582537e-03 6.63188133e-03 -6.50712338e-03 2.58595459e-04 4.08892304e-04 1.50120025e-04 4.16848167e-05 9.61306618e-04 -5.05218881e-04 1.34231757e-04 -6.65332653e-03 9.29544937e-03 -1.75321839e-02 2.19325430e-04 -2.41137503e-04 -1.01124921e-04 8.34518149e-03 5.25183836e-03 4.94879992e-03 -1.91006991e-04 6.78582537e-03 -6.50712338e-03 6.63188133e-03 -2.58595459e-04 -1.50120025e-04 -4.08892304e-04 4.16848167e-05 -9.61306618e-04 1.34231757e-04 -5.05218881e-04 - 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 - 0 12 24 36 48 66 86 106 124 144 164 170 180 190 190 200 206 216 226 226 236 254 274 294 308 326 346 366 384 404 424 438 456 476 496 -0 2 0 496 - 1.46471486e+00 2.54883877e-01 1.24590418e-01 -9.35884290e-03 -2.50681311e-01 2.31073552e-01 2.31073552e-01 -2.31073552e-01 4.55715201e-02 -9.09946312e-02 -9.09946312e-02 9.09946312e-02 2.54883877e-01 1.70428957e+00 -9.34218553e-02 1.65342489e-01 1.29637869e-01 -1.70706534e-01 -1.70706534e-01 1.70706534e-01 -4.68039666e-02 8.78615395e-02 8.78615395e-02 -8.78615395e-02 1.24590418e-01 -9.34218553e-02 1.88920782e-02 -1.20468125e-02 -3.43603397e-02 3.47760262e-02 3.47760262e-02 -3.47760262e-02 8.11017653e-03 -1.51409429e-02 -1.51409429e-02 1.51409429e-02 -9.35884290e-03 1.65342489e-01 -1.20468125e-02 1.72406024e-02 1.90677593e-02 -2.20810865e-02 -2.20810865e-02 2.20810865e-02 -5.48328334e-03 1.08124682e-02 1.08124682e-02 -1.08124682e-02 1.89517553e+00 9.95491140e-02 9.95491140e-02 -9.15785008e-03 -2.53788780e-03 -2.53788780e-03 -2.12388496e-02 -1.19719253e-02 -1.19719253e-02 -1.34997473e-02 -6.86525306e-04 6.86525306e-04 -2.22701900e-02 7.88241731e-03 7.88241731e-03 -6.96401205e-03 -6.65332653e-03 6.65332653e-03 9.95491140e-02 2.04211641e+00 -9.95491140e-02 -2.53788780e-03 -3.88804018e-03 2.53788780e-03 6.78853114e-03 1.78035242e-02 -3.65770659e-03 -9.88504715e-03 1.34997473e-02 6.08947863e-03 1.14201355e-02 -1.00868915e-02 8.24231853e-03 -4.47145138e-03 2.15728427e-03 6.96401205e-03 -6.20170953e-03 -9.29544937e-03 9.95491140e-02 -9.95491140e-02 2.04211641e+00 -2.53788780e-03 2.53788780e-03 -3.88804018e-03 6.78853114e-03 -3.65770659e-03 1.78035242e-02 9.88504715e-03 1.34997473e-02 -1.14201355e-02 -6.08947863e-03 -1.00868915e-02 -4.47145138e-03 8.24231853e-03 -2.15728427e-03 6.96401205e-03 9.29544937e-03 6.20170953e-03 -9.15785008e-03 -2.53788780e-03 -2.53788780e-03 1.79684460e-04 -7.82240681e-05 -7.82240681e-05 4.90771661e-03 3.05324736e-03 3.05324736e-03 3.98965718e-03 -3.80846317e-03 3.80846317e-03 -8.90983131e-05 -1.92416159e-04 -1.92416159e-04 -5.76134452e-04 2.19325430e-04 -2.19325430e-04 -2.53788780e-03 -3.88804018e-03 2.53788780e-03 -7.82240681e-05 2.17480352e-04 7.82240681e-05 -4.88057902e-03 -2.92726385e-03 -2.92421677e-03 8.16061087e-05 -3.98965718e-03 3.98374436e-03 -3.90840983e-03 2.91222329e-04 4.87887308e-05 1.64256895e-04 -1.78094826e-05 5.76134452e-04 -3.17373257e-05 2.41137503e-04 -2.53788780e-03 2.53788780e-03 -3.88804018e-03 -7.82240681e-05 7.82240681e-05 2.17480352e-04 -4.88057902e-03 -2.92421677e-03 -2.92726385e-03 -8.16061087e-05 -3.98965718e-03 3.90840983e-03 -3.98374436e-03 2.91222329e-04 1.64256895e-04 4.87887308e-05 1.78094826e-05 5.76134452e-04 -2.41137503e-04 3.17373257e-05 -2.50681311e-01 1.29637869e-01 -3.43603397e-02 1.90677593e-02 2.55642069e-01 -5.76016724e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 -8.69671403e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 -8.69671403e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 -2.31073552e-01 1.70706534e-01 -3.47760262e-02 2.20810865e-02 -8.69671403e-02 -8.69671403e-02 5.09104100e-01 3.81033730e-02 3.81033730e-02 -1.31876001e-01 4.55715201e-02 -4.68039666e-02 8.11017653e-03 -5.48328334e-03 -5.76016724e-02 1.36360519e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 1.70016634e-02 1.70016634e-02 -1.70016634e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 1.70016634e-02 1.70016634e-02 -1.70016634e-02 9.09946312e-02 -8.78615395e-02 1.51409429e-02 -1.08124682e-02 3.81033730e-02 3.81033730e-02 -1.31876001e-01 -1.70016634e-02 -1.70016634e-02 3.78321204e-02 -2.12388496e-02 6.78853114e-03 6.78853114e-03 4.90771661e-03 -4.88057902e-03 -4.88057902e-03 2.33614448e-01 1.42959316e-01 1.42959316e-01 1.89783463e-01 -1.84466621e-01 1.84466621e-01 -1.02868307e-02 -6.47988162e-03 -6.47988162e-03 -2.78703402e-02 8.34518149e-03 -8.34518149e-03 -1.19719253e-02 1.78035242e-02 -3.65770659e-03 3.05324736e-03 -2.92726385e-03 -2.92421677e-03 1.42959316e-01 8.78151758e-02 8.75173384e-02 -1.05433222e-04 1.16218161e-01 -1.12710131e-01 1.12926204e-01 -6.29096583e-03 -3.94138564e-03 -4.07789392e-03 2.30094432e-05 -1.70670281e-02 5.10344353e-03 -5.25183836e-03 -1.19719253e-02 -3.65770659e-03 1.78035242e-02 3.05324736e-03 -2.92421677e-03 -2.92726385e-03 1.42959316e-01 8.75173384e-02 8.78151758e-02 1.05433222e-04 1.16218161e-01 -1.12926204e-01 1.12710131e-01 -6.29096583e-03 -4.07789392e-03 -3.94138564e-03 -2.30094432e-05 -1.70670281e-02 5.25183836e-03 -5.10344353e-03 -9.88504715e-03 9.88504715e-03 8.16061087e-05 -8.16061087e-05 -1.05433222e-04 1.05433222e-04 1.78440391e-04 -9.58226514e-06 -9.58226514e-06 -1.23324095e-04 1.23324095e-04 -3.89423179e-05 1.91006991e-04 1.91006991e-04 -1.34997473e-02 1.34997473e-02 1.34997473e-02 3.98965718e-03 -3.98965718e-03 -3.98965718e-03 1.89783463e-01 1.16218161e-01 1.16218161e-01 3.67563826e-01 -1.50037001e-01 1.50037001e-01 -8.58346559e-03 -5.25627773e-03 -5.25627773e-03 -3.91967293e-02 6.78582537e-03 -6.78582537e-03 -6.86525306e-04 6.08947863e-03 -1.14201355e-02 -3.80846317e-03 3.98374436e-03 3.90840983e-03 -1.84466621e-01 -1.12710131e-01 -1.12926204e-01 -9.58226514e-06 -1.50037001e-01 1.46241269e-01 -1.45949895e-01 8.49151503e-03 5.01097526e-03 5.01287669e-03 2.09120600e-06 2.20334385e-02 -6.42339379e-03 6.50712338e-03 6.86525306e-04 1.14201355e-02 -6.08947863e-03 3.80846317e-03 -3.90840983e-03 -3.98374436e-03 1.84466621e-01 1.12926204e-01 1.12710131e-01 -9.58226514e-06 1.50037001e-01 -1.45949895e-01 1.46241269e-01 -8.49151503e-03 -5.01287669e-03 -5.01097526e-03 2.09120600e-06 -2.20334385e-02 6.50712338e-03 -6.42339379e-03 -2.22701900e-02 -1.00868915e-02 -1.00868915e-02 -8.90983131e-05 2.91222329e-04 2.91222329e-04 -1.02868307e-02 -6.29096583e-03 -6.29096583e-03 -8.58346559e-03 8.49151503e-03 -8.49151503e-03 9.59486559e-04 1.37774951e-04 1.37774951e-04 1.21596738e-03 -2.58595459e-04 2.58595459e-04 7.88241731e-03 8.24231853e-03 -4.47145138e-03 -1.92416159e-04 4.87887308e-05 1.64256895e-04 -6.47988162e-03 -3.94138564e-03 -4.07789392e-03 -1.23324095e-04 -5.25627773e-03 5.01097526e-03 -5.01287669e-03 1.37774951e-04 3.30152350e-04 1.58824815e-04 2.69138959e-05 7.44624905e-04 -4.19384346e-04 1.50120025e-04 7.88241731e-03 -4.47145138e-03 8.24231853e-03 -1.92416159e-04 1.64256895e-04 4.87887308e-05 -6.47988162e-03 -4.07789392e-03 -3.94138564e-03 1.23324095e-04 -5.25627773e-03 5.01287669e-03 -5.01097526e-03 1.37774951e-04 1.58824815e-04 3.30152350e-04 -2.69138959e-05 7.44624905e-04 -1.50120025e-04 4.19384346e-04 2.15728427e-03 -2.15728427e-03 -1.78094826e-05 1.78094826e-05 2.30094432e-05 -2.30094432e-05 -3.89423179e-05 2.09120600e-06 2.09120600e-06 2.69138959e-05 -2.69138959e-05 8.49865950e-06 -4.16848167e-05 -4.16848167e-05 -6.96401205e-03 6.96401205e-03 6.96401205e-03 -5.76134452e-04 5.76134452e-04 5.76134452e-04 -2.78703402e-02 -1.70670281e-02 -1.70670281e-02 -3.91967293e-02 2.20334385e-02 -2.20334385e-02 1.21596738e-03 7.44624905e-04 7.44624905e-04 4.88351268e-03 -9.61306618e-04 9.61306618e-04 -6.65332653e-03 -6.20170953e-03 9.29544937e-03 2.19325430e-04 -3.17373257e-05 -2.41137503e-04 8.34518149e-03 5.10344353e-03 5.25183836e-03 1.91006991e-04 6.78582537e-03 -6.42339379e-03 6.50712338e-03 -2.58595459e-04 -4.19384346e-04 -1.50120025e-04 -4.16848167e-05 -9.61306618e-04 5.81078995e-04 -1.34231757e-04 6.65332653e-03 -9.29544937e-03 6.20170953e-03 -2.19325430e-04 2.41137503e-04 3.17373257e-05 -8.34518149e-03 -5.25183836e-03 -5.10344353e-03 1.91006991e-04 -6.78582537e-03 6.50712338e-03 -6.42339379e-03 2.58595459e-04 1.50120025e-04 4.19384346e-04 -4.16848167e-05 9.61306618e-04 -1.34231757e-04 5.81078995e-04 - 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 - 0 12 24 36 48 66 86 106 124 144 164 170 180 190 190 200 206 216 226 226 236 254 274 294 308 326 346 366 384 404 424 438 456 476 496 -1 -3 1 496 - -4.46730500e-01 2.90265885e-01 -6.65919095e-02 3.20736205e-02 -2.50681311e-01 -2.31073552e-01 -2.31073552e-01 2.31073552e-01 4.55715201e-02 9.09946312e-02 9.09946312e-02 -9.09946312e-02 2.90265885e-01 -7.77208948e-02 3.49623849e-02 -1.81562170e-02 1.29637869e-01 1.70706534e-01 1.70706534e-01 -1.70706534e-01 -4.68039666e-02 -8.78615395e-02 -8.78615395e-02 8.78615395e-02 -6.65919095e-02 3.49623849e-02 -8.97965282e-03 4.90391018e-03 -3.43603397e-02 -3.47760262e-02 -3.47760262e-02 3.47760262e-02 8.11017653e-03 1.51409429e-02 1.51409429e-02 -1.51409429e-02 3.20736205e-02 -1.81562170e-02 4.90391018e-03 -2.40214415e-03 1.90677593e-02 2.20810865e-02 2.20810865e-02 -2.20810865e-02 -5.48328334e-03 -1.08124682e-02 -1.08124682e-02 1.08124682e-02 -9.61307016e-02 -9.95491140e-02 -9.95491140e-02 3.84928096e-03 2.53788780e-03 2.53788780e-03 4.96626145e-03 1.19719253e-02 1.19719253e-02 1.34997473e-02 6.86525306e-04 -6.86525306e-04 7.75107441e-03 -7.88241731e-03 -7.88241731e-03 6.96401205e-03 6.65332653e-03 -6.65332653e-03 -9.95491140e-02 5.08101702e-02 9.95491140e-02 2.53788780e-03 9.11909087e-03 -2.53788780e-03 -6.78853114e-03 1.75623651e-03 3.65770659e-03 9.88504715e-03 -1.34997473e-02 2.68064379e-02 -1.14201355e-02 1.00868915e-02 -1.01418763e-02 4.47145138e-03 -2.15728427e-03 -6.96401205e-03 1.75321839e-02 9.29544937e-03 -9.95491140e-02 9.95491140e-02 5.08101702e-02 2.53788780e-03 -2.53788780e-03 9.11909087e-03 -6.78853114e-03 3.65770659e-03 1.75623651e-03 -9.88504715e-03 -1.34997473e-02 1.14201355e-02 -2.68064379e-02 1.00868915e-02 4.47145138e-03 -1.01418763e-02 2.15728427e-03 -6.96401205e-03 -9.29544937e-03 -1.75321839e-02 3.84928096e-03 2.53788780e-03 2.53788780e-03 -1.26047298e-04 7.82240681e-05 7.82240681e-05 -4.95769243e-03 -3.05324736e-03 -3.05324736e-03 -3.98965718e-03 3.80846317e-03 -3.80846317e-03 7.89606128e-05 1.92416159e-04 1.92416159e-04 5.76134452e-04 -2.19325430e-04 2.19325430e-04 2.53788780e-03 9.11909087e-03 -2.53788780e-03 7.82240681e-05 -8.82514067e-05 -7.82240681e-05 4.88057902e-03 3.11404071e-03 2.92421677e-03 -8.16061087e-05 3.98965718e-03 -3.81554628e-03 3.90840983e-03 -2.91222329e-04 -5.41259230e-05 -1.64256895e-04 1.78094826e-05 -5.76134452e-04 1.01124921e-04 -2.41137503e-04 2.53788780e-03 -2.53788780e-03 9.11909087e-03 7.82240681e-05 -7.82240681e-05 -8.82514067e-05 4.88057902e-03 2.92421677e-03 3.11404071e-03 8.16061087e-05 3.98965718e-03 -3.90840983e-03 3.81554628e-03 -2.91222329e-04 -1.64256895e-04 -5.41259230e-05 -1.78094826e-05 -5.76134452e-04 2.41137503e-04 -1.01124921e-04 -2.50681311e-01 1.29637869e-01 -3.43603397e-02 1.90677593e-02 2.55642069e-01 -5.76016724e-02 -2.31073552e-01 1.70706534e-01 -3.47760262e-02 2.20810865e-02 -8.69671403e-02 -8.69671403e-02 8.69671403e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 -2.31073552e-01 1.70706534e-01 -3.47760262e-02 2.20810865e-02 -8.69671403e-02 -8.69671403e-02 8.69671403e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 3.35169819e-01 -3.81033730e-02 -3.81033730e-02 -5.56692551e-02 4.55715201e-02 -4.68039666e-02 8.11017653e-03 -5.48328334e-03 -5.76016724e-02 1.36360519e-02 9.09946312e-02 -8.78615395e-02 1.51409429e-02 -1.08124682e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 -1.70016634e-02 -1.70016634e-02 1.70016634e-02 9.09946312e-02 -8.78615395e-02 1.51409429e-02 -1.08124682e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 -1.70016634e-02 -1.70016634e-02 1.70016634e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 -5.56692551e-02 1.70016634e-02 1.70016634e-02 3.82879364e-03 4.96626145e-03 -6.78853114e-03 -6.78853114e-03 -4.95769243e-03 4.88057902e-03 4.88057902e-03 -2.33214382e-01 -1.42959316e-01 -1.42959316e-01 -1.89783463e-01 1.84466621e-01 -1.84466621e-01 1.05548787e-02 6.47988162e-03 6.47988162e-03 2.78703402e-02 -8.34518149e-03 8.34518149e-03 1.19719253e-02 1.75623651e-03 3.65770659e-03 -3.05324736e-03 3.11404071e-03 2.92421677e-03 -1.42959316e-01 -8.74686860e-02 -8.75173384e-02 1.05433222e-04 -1.16218161e-01 1.13119631e-01 -1.12926204e-01 6.29096583e-03 3.92293329e-03 4.07789392e-03 -2.30094432e-05 1.70670281e-02 -4.94879992e-03 5.25183836e-03 1.19719253e-02 3.65770659e-03 1.75623651e-03 -3.05324736e-03 2.92421677e-03 3.11404071e-03 -1.42959316e-01 -8.75173384e-02 -8.74686860e-02 -1.05433222e-04 -1.16218161e-01 1.12926204e-01 -1.13119631e-01 6.29096583e-03 4.07789392e-03 3.92293329e-03 2.30094432e-05 1.70670281e-02 -5.25183836e-03 4.94879992e-03 9.88504715e-03 -9.88504715e-03 -8.16061087e-05 8.16061087e-05 1.05433222e-04 -1.05433222e-04 -1.78440391e-04 9.58226514e-06 9.58226514e-06 1.23324095e-04 -1.23324095e-04 3.89423179e-05 -1.91006991e-04 -1.91006991e-04 1.34997473e-02 -1.34997473e-02 -1.34997473e-02 -3.98965718e-03 3.98965718e-03 3.98965718e-03 -1.89783463e-01 -1.16218161e-01 -1.16218161e-01 5.86189719e-02 1.50037001e-01 -1.50037001e-01 8.58346559e-03 5.25627773e-03 5.25627773e-03 5.74991859e-03 -6.78582537e-03 6.78582537e-03 6.86525306e-04 2.68064379e-02 1.14201355e-02 3.80846317e-03 -3.81554628e-03 -3.90840983e-03 1.84466621e-01 1.13119631e-01 1.12926204e-01 9.58226514e-06 1.50037001e-01 -1.45660580e-01 1.45949895e-01 -8.49151503e-03 -5.04126819e-03 -5.01287669e-03 -2.09120600e-06 -2.20334385e-02 6.63188133e-03 -6.50712338e-03 -6.86525306e-04 -1.14201355e-02 -2.68064379e-02 -3.80846317e-03 3.90840983e-03 3.81554628e-03 -1.84466621e-01 -1.12926204e-01 -1.13119631e-01 9.58226514e-06 -1.50037001e-01 1.45949895e-01 -1.45660580e-01 8.49151503e-03 5.01287669e-03 5.04126819e-03 -2.09120600e-06 2.20334385e-02 -6.50712338e-03 6.63188133e-03 7.75107441e-03 1.00868915e-02 1.00868915e-02 7.89606128e-05 -2.91222329e-04 -2.91222329e-04 1.05548787e-02 6.29096583e-03 6.29096583e-03 8.58346559e-03 -8.49151503e-03 8.49151503e-03 -7.68391652e-04 -1.37774951e-04 -1.37774951e-04 -1.21596738e-03 2.58595459e-04 -2.58595459e-04 -7.88241731e-03 -1.01418763e-02 4.47145138e-03 1.92416159e-04 -5.41259230e-05 -1.64256895e-04 6.47988162e-03 3.92293329e-03 4.07789392e-03 1.23324095e-04 5.25627773e-03 -5.04126819e-03 5.01287669e-03 -1.37774951e-04 -3.28425304e-04 -1.58824815e-04 -2.69138959e-05 -7.44624905e-04 4.08892304e-04 -1.50120025e-04 -7.88241731e-03 4.47145138e-03 -1.01418763e-02 1.92416159e-04 -1.64256895e-04 -5.41259230e-05 6.47988162e-03 4.07789392e-03 3.92293329e-03 -1.23324095e-04 5.25627773e-03 -5.01287669e-03 5.04126819e-03 -1.37774951e-04 -1.58824815e-04 -3.28425304e-04 2.69138959e-05 -7.44624905e-04 1.50120025e-04 -4.08892304e-04 -2.15728427e-03 2.15728427e-03 1.78094826e-05 -1.78094826e-05 -2.30094432e-05 2.30094432e-05 3.89423179e-05 -2.09120600e-06 -2.09120600e-06 -2.69138959e-05 2.69138959e-05 -8.49865950e-06 4.16848167e-05 4.16848167e-05 6.96401205e-03 -6.96401205e-03 -6.96401205e-03 5.76134452e-04 -5.76134452e-04 -5.76134452e-04 2.78703402e-02 1.70670281e-02 1.70670281e-02 5.74991859e-03 -2.20334385e-02 2.20334385e-02 -1.21596738e-03 -7.44624905e-04 -7.44624905e-04 -2.25860819e-03 9.61306618e-04 -9.61306618e-04 6.65332653e-03 1.75321839e-02 -9.29544937e-03 -2.19325430e-04 1.01124921e-04 2.41137503e-04 -8.34518149e-03 -4.94879992e-03 -5.25183836e-03 -1.91006991e-04 -6.78582537e-03 6.63188133e-03 -6.50712338e-03 2.58595459e-04 4.08892304e-04 1.50120025e-04 4.16848167e-05 9.61306618e-04 -5.05218881e-04 1.34231757e-04 -6.65332653e-03 9.29544937e-03 -1.75321839e-02 2.19325430e-04 -2.41137503e-04 -1.01124921e-04 8.34518149e-03 5.25183836e-03 4.94879992e-03 -1.91006991e-04 6.78582537e-03 -6.50712338e-03 6.63188133e-03 -2.58595459e-04 -1.50120025e-04 -4.08892304e-04 4.16848167e-05 -9.61306618e-04 1.34231757e-04 -5.05218881e-04 - 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 - 0 12 24 36 48 66 86 106 124 144 164 170 180 190 190 200 206 216 226 226 236 254 274 294 308 326 346 366 384 404 424 438 456 476 496 -1 -2 -1 496 - 6.10668701e-01 -7.51799909e-02 6.94266500e-02 -1.13818158e-02 2.50681311e-01 2.31073552e-01 2.31073552e-01 -2.31073552e-01 -4.55715201e-02 -9.09946312e-02 -9.09946312e-02 9.09946312e-02 -7.51799909e-02 6.30743818e-01 -3.88656825e-02 8.24503254e-02 -1.29637869e-01 -1.70706534e-01 -1.70706534e-01 1.70706534e-01 4.68039666e-02 8.78615395e-02 8.78615395e-02 -8.78615395e-02 6.94266500e-02 -3.88656825e-02 9.24320123e-03 -5.59159516e-03 3.43603397e-02 3.47760262e-02 3.47760262e-02 -3.47760262e-02 -8.11017653e-03 -1.51409429e-02 -1.51409429e-02 1.51409429e-02 -1.13818158e-02 8.24503254e-02 -5.59159516e-03 1.01087384e-02 -1.90677593e-02 -2.20810865e-02 -2.20810865e-02 2.20810865e-02 5.48328334e-03 1.08124682e-02 1.08124682e-02 -1.08124682e-02 6.62931071e-01 9.95491140e-02 9.95491140e-02 -9.36131516e-03 -2.53788780e-03 -2.53788780e-03 -1.84743808e-04 -1.19719253e-02 -1.19719253e-02 -1.34997473e-02 -6.86525306e-04 6.86525306e-04 -6.96842667e-03 7.88241731e-03 7.88241731e-03 -6.96401205e-03 -6.65332653e-03 6.65332653e-03 9.95491140e-02 5.15990200e-01 -9.95491140e-02 -2.53788780e-03 -1.46311251e-02 2.53788780e-03 6.78853114e-03 -4.68430612e-03 -3.65770659e-03 -9.88504715e-03 1.34997473e-02 -2.30263163e-02 1.14201355e-02 -1.00868915e-02 9.66260440e-03 -4.47145138e-03 2.15728427e-03 6.96401205e-03 -1.69134466e-02 -9.29544937e-03 9.95491140e-02 -9.95491140e-02 5.15990200e-01 -2.53788780e-03 2.53788780e-03 -1.46311251e-02 6.78853114e-03 -3.65770659e-03 -4.68430612e-03 9.88504715e-03 1.34997473e-02 -1.14201355e-02 2.30263163e-02 -1.00868915e-02 -4.47145138e-03 9.66260440e-03 -2.15728427e-03 6.96401205e-03 9.29544937e-03 1.69134466e-02 -9.36131516e-03 -2.53788780e-03 -2.53788780e-03 1.79650864e-04 -7.82240681e-05 -7.82240681e-05 4.91119301e-03 3.05324736e-03 3.05324736e-03 3.98965718e-03 -3.80846317e-03 3.80846317e-03 -8.65717248e-05 -1.92416159e-04 -1.92416159e-04 -5.76134452e-04 2.19325430e-04 -2.19325430e-04 -2.53788780e-03 -1.46311251e-02 2.53788780e-03 -7.82240681e-05 1.41854973e-04 7.82240681e-05 -4.88057902e-03 -3.08556574e-03 -2.92421677e-03 8.16061087e-05 -3.98965718e-03 3.77878526e-03 -3.90840983e-03 2.91222329e-04 5.87867582e-05 1.64256895e-04 -1.78094826e-05 5.76134452e-04 -1.07142033e-04 2.41137503e-04 -2.53788780e-03 2.53788780e-03 -1.46311251e-02 -7.82240681e-05 7.82240681e-05 1.41854973e-04 -4.88057902e-03 -2.92421677e-03 -3.08556574e-03 -8.16061087e-05 -3.98965718e-03 3.90840983e-03 -3.77878526e-03 2.91222329e-04 1.64256895e-04 5.87867582e-05 1.78094826e-05 5.76134452e-04 -2.41137503e-04 1.07142033e-04 2.50681311e-01 -1.29637869e-01 3.43603397e-02 -1.90677593e-02 -2.55642069e-01 5.76016724e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 -8.69671403e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 -8.69671403e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 -2.31073552e-01 1.70706534e-01 -3.47760262e-02 2.20810865e-02 -8.69671403e-02 -8.69671403e-02 -3.35169819e-01 3.81033730e-02 3.81033730e-02 5.56692551e-02 -4.55715201e-02 4.68039666e-02 -8.11017653e-03 5.48328334e-03 5.76016724e-02 -1.36360519e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 1.70016634e-02 1.70016634e-02 -1.70016634e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 1.70016634e-02 1.70016634e-02 -1.70016634e-02 9.09946312e-02 -8.78615395e-02 1.51409429e-02 -1.08124682e-02 3.81033730e-02 3.81033730e-02 5.56692551e-02 -1.70016634e-02 -1.70016634e-02 -3.82879364e-03 -1.84743808e-04 6.78853114e-03 6.78853114e-03 4.91119301e-03 -4.88057902e-03 -4.88057902e-03 2.33254718e-01 1.42959316e-01 1.42959316e-01 1.89783463e-01 -1.84466621e-01 1.84466621e-01 -1.05482763e-02 -6.47988162e-03 -6.47988162e-03 -2.78703402e-02 8.34518149e-03 -8.34518149e-03 -1.19719253e-02 -4.68430612e-03 -3.65770659e-03 3.05324736e-03 -3.08556574e-03 -2.92421677e-03 1.42959316e-01 8.74838123e-02 8.75173384e-02 -1.05433222e-04 1.16218161e-01 -1.13139159e-01 1.12926204e-01 -6.29096583e-03 -3.92045739e-03 -4.07789392e-03 2.30094432e-05 -1.70670281e-02 4.94560355e-03 -5.25183836e-03 -1.19719253e-02 -3.65770659e-03 -4.68430612e-03 3.05324736e-03 -2.92421677e-03 -3.08556574e-03 1.42959316e-01 8.75173384e-02 8.74838123e-02 1.05433222e-04 1.16218161e-01 -1.12926204e-01 1.13139159e-01 -6.29096583e-03 -4.07789392e-03 -3.92045739e-03 -2.30094432e-05 -1.70670281e-02 5.25183836e-03 -4.94560355e-03 -9.88504715e-03 9.88504715e-03 8.16061087e-05 -8.16061087e-05 -1.05433222e-04 1.05433222e-04 1.78440391e-04 -9.58226514e-06 -9.58226514e-06 -1.23324095e-04 1.23324095e-04 -3.89423179e-05 1.91006991e-04 1.91006991e-04 -1.34997473e-02 1.34997473e-02 1.34997473e-02 3.98965718e-03 -3.98965718e-03 -3.98965718e-03 1.89783463e-01 1.16218161e-01 1.16218161e-01 3.67563826e-01 -1.50037001e-01 1.50037001e-01 -8.58346559e-03 -5.25627773e-03 -5.25627773e-03 -3.91967293e-02 6.78582537e-03 -6.78582537e-03 -6.86525306e-04 -2.30263163e-02 -1.14201355e-02 -3.80846317e-03 3.77878526e-03 3.90840983e-03 -1.84466621e-01 -1.13139159e-01 -1.12926204e-01 -9.58226514e-06 -1.50037001e-01 1.45685791e-01 -1.45949895e-01 8.49151503e-03 5.03807181e-03 5.01287669e-03 2.09120600e-06 2.20334385e-02 -6.62775483e-03 6.50712338e-03 6.86525306e-04 1.14201355e-02 2.30263163e-02 3.80846317e-03 -3.90840983e-03 -3.77878526e-03 1.84466621e-01 1.12926204e-01 1.13139159e-01 -9.58226514e-06 1.50037001e-01 -1.45949895e-01 1.45685791e-01 -8.49151503e-03 -5.01287669e-03 -5.03807181e-03 2.09120600e-06 -2.20334385e-02 6.50712338e-03 -6.62775483e-03 -6.96842667e-03 -1.00868915e-02 -1.00868915e-02 -8.65717248e-05 2.91222329e-04 2.91222329e-04 -1.05482763e-02 -6.29096583e-03 -6.29096583e-03 -8.58346559e-03 8.49151503e-03 -8.49151503e-03 7.69472345e-04 1.37774951e-04 1.37774951e-04 1.21596738e-03 -2.58595459e-04 2.58595459e-04 7.88241731e-03 9.66260440e-03 -4.47145138e-03 -1.92416159e-04 5.87867582e-05 1.64256895e-04 -6.47988162e-03 -3.92045739e-03 -4.07789392e-03 -1.23324095e-04 -5.25627773e-03 5.03807181e-03 -5.01287669e-03 1.37774951e-04 3.28830564e-04 1.58824815e-04 2.69138959e-05 7.44624905e-04 -4.09415493e-04 1.50120025e-04 7.88241731e-03 -4.47145138e-03 9.66260440e-03 -1.92416159e-04 1.64256895e-04 5.87867582e-05 -6.47988162e-03 -4.07789392e-03 -3.92045739e-03 1.23324095e-04 -5.25627773e-03 5.01287669e-03 -5.03807181e-03 1.37774951e-04 1.58824815e-04 3.28830564e-04 -2.69138959e-05 7.44624905e-04 -1.50120025e-04 4.09415493e-04 2.15728427e-03 -2.15728427e-03 -1.78094826e-05 1.78094826e-05 2.30094432e-05 -2.30094432e-05 -3.89423179e-05 2.09120600e-06 2.09120600e-06 2.69138959e-05 -2.69138959e-05 8.49865950e-06 -4.16848167e-05 -4.16848167e-05 -6.96401205e-03 6.96401205e-03 6.96401205e-03 -5.76134452e-04 5.76134452e-04 5.76134452e-04 -2.78703402e-02 -1.70670281e-02 -1.70670281e-02 -3.91967293e-02 2.20334385e-02 -2.20334385e-02 1.21596738e-03 7.44624905e-04 7.44624905e-04 4.88351268e-03 -9.61306618e-04 9.61306618e-04 -6.65332653e-03 -1.69134466e-02 9.29544937e-03 2.19325430e-04 -1.07142033e-04 -2.41137503e-04 8.34518149e-03 4.94560355e-03 5.25183836e-03 1.91006991e-04 6.78582537e-03 -6.62775483e-03 6.50712338e-03 -2.58595459e-04 -4.09415493e-04 -1.50120025e-04 -4.16848167e-05 -9.61306618e-04 5.05894315e-04 -1.34231757e-04 6.65332653e-03 -9.29544937e-03 1.69134466e-02 -2.19325430e-04 2.41137503e-04 1.07142033e-04 -8.34518149e-03 -5.25183836e-03 -4.94560355e-03 1.91006991e-04 -6.78582537e-03 6.50712338e-03 -6.62775483e-03 2.58595459e-04 1.50120025e-04 4.09415493e-04 -4.16848167e-05 9.61306618e-04 -1.34231757e-04 5.05894315e-04 - 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 - 0 12 24 36 48 66 86 106 124 144 164 170 180 190 190 200 206 216 226 226 236 254 274 294 308 326 346 366 384 404 424 438 456 476 496 -1 -2 0 496 - -1.30077665e+00 -3.97979828e-02 -1.21755678e-01 3.00506476e-02 2.50681311e-01 -2.31073552e-01 -2.31073552e-01 2.31073552e-01 -4.55715201e-02 9.09946312e-02 9.09946312e-02 -9.09946312e-02 -3.97979828e-02 -1.15126664e+00 8.95185576e-02 -1.01048380e-01 -1.29637869e-01 1.70706534e-01 1.70706534e-01 -1.70706534e-01 4.68039666e-02 -8.78615395e-02 -8.78615395e-02 8.78615395e-02 -1.21755678e-01 8.95185576e-02 -1.86285298e-02 1.13591275e-02 3.43603397e-02 -3.47760262e-02 -3.47760262e-02 3.47760262e-02 -8.11017653e-03 1.51409429e-02 1.51409429e-02 -1.51409429e-02 3.00506476e-02 -1.01048380e-01 1.13591275e-02 -9.53400814e-03 -1.90677593e-02 2.20810865e-02 2.20810865e-02 -2.20810865e-02 5.48328334e-03 -1.08124682e-02 -1.08124682e-02 1.08124682e-02 -1.32837516e+00 -9.95491140e-02 -9.95491140e-02 3.64581589e-03 2.53788780e-03 2.53788780e-03 2.60203672e-02 1.19719253e-02 1.19719253e-02 1.34997473e-02 6.86525306e-04 -6.86525306e-04 2.30528378e-02 -7.88241731e-03 -7.88241731e-03 6.96401205e-03 6.65332653e-03 -6.65332653e-03 -9.95491140e-02 -1.47531604e+00 9.95491140e-02 2.53788780e-03 -1.62399402e-03 -2.53788780e-03 -6.78853114e-03 -2.07315938e-02 3.65770659e-03 9.88504715e-03 -1.34997473e-02 -2.30935703e-03 -1.14201355e-02 1.00868915e-02 -8.72159043e-03 4.47145138e-03 -2.15728427e-03 -6.96401205e-03 6.82044689e-03 9.29544937e-03 -9.95491140e-02 9.95491140e-02 -1.47531604e+00 2.53788780e-03 -2.53788780e-03 -1.62399402e-03 -6.78853114e-03 3.65770659e-03 -2.07315938e-02 -9.88504715e-03 -1.34997473e-02 1.14201355e-02 2.30935703e-03 1.00868915e-02 4.47145138e-03 -8.72159043e-03 2.15728427e-03 -6.96401205e-03 -9.29544937e-03 -6.82044689e-03 3.64581589e-03 2.53788780e-03 2.53788780e-03 -1.26080894e-04 7.82240681e-05 7.82240681e-05 -4.95421603e-03 -3.05324736e-03 -3.05324736e-03 -3.98965718e-03 3.80846317e-03 -3.80846317e-03 8.14872011e-05 1.92416159e-04 1.92416159e-04 5.76134452e-04 -2.19325430e-04 2.19325430e-04 2.53788780e-03 -1.62399402e-03 -2.53788780e-03 7.82240681e-05 -1.63876786e-04 -7.82240681e-05 4.88057902e-03 2.95573881e-03 2.92421677e-03 -8.16061087e-05 3.98965718e-03 -4.02050538e-03 3.90840983e-03 -2.91222329e-04 -4.41278956e-05 -1.64256895e-04 1.78094826e-05 -5.76134452e-04 2.57202134e-05 -2.41137503e-04 2.53788780e-03 -2.53788780e-03 -1.62399402e-03 7.82240681e-05 -7.82240681e-05 -1.63876786e-04 4.88057902e-03 2.92421677e-03 2.95573881e-03 8.16061087e-05 3.98965718e-03 -3.90840983e-03 4.02050538e-03 -2.91222329e-04 -1.64256895e-04 -4.41278956e-05 -1.78094826e-05 -5.76134452e-04 2.41137503e-04 -2.57202134e-05 2.50681311e-01 -1.29637869e-01 3.43603397e-02 -1.90677593e-02 -2.55642069e-01 5.76016724e-02 -2.31073552e-01 1.70706534e-01 -3.47760262e-02 2.20810865e-02 -8.69671403e-02 -8.69671403e-02 8.69671403e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 -2.31073552e-01 1.70706534e-01 -3.47760262e-02 2.20810865e-02 -8.69671403e-02 -8.69671403e-02 8.69671403e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 -5.09104100e-01 -3.81033730e-02 -3.81033730e-02 1.31876001e-01 -4.55715201e-02 4.68039666e-02 -8.11017653e-03 5.48328334e-03 5.76016724e-02 -1.36360519e-02 9.09946312e-02 -8.78615395e-02 1.51409429e-02 -1.08124682e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 -1.70016634e-02 -1.70016634e-02 1.70016634e-02 9.09946312e-02 -8.78615395e-02 1.51409429e-02 -1.08124682e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 -1.70016634e-02 -1.70016634e-02 1.70016634e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 1.31876001e-01 1.70016634e-02 1.70016634e-02 -3.78321204e-02 2.60203672e-02 -6.78853114e-03 -6.78853114e-03 -4.95421603e-03 4.88057902e-03 4.88057902e-03 -2.33574112e-01 -1.42959316e-01 -1.42959316e-01 -1.89783463e-01 1.84466621e-01 -1.84466621e-01 1.02934331e-02 6.47988162e-03 6.47988162e-03 2.78703402e-02 -8.34518149e-03 8.34518149e-03 1.19719253e-02 -2.07315938e-02 3.65770659e-03 -3.05324736e-03 2.95573881e-03 2.92421677e-03 -1.42959316e-01 -8.78000495e-02 -8.75173384e-02 1.05433222e-04 -1.16218161e-01 1.12690603e-01 -1.12926204e-01 6.29096583e-03 3.94386154e-03 4.07789392e-03 -2.30094432e-05 1.70670281e-02 -5.10663990e-03 5.25183836e-03 1.19719253e-02 3.65770659e-03 -2.07315938e-02 -3.05324736e-03 2.92421677e-03 2.95573881e-03 -1.42959316e-01 -8.75173384e-02 -8.78000495e-02 -1.05433222e-04 -1.16218161e-01 1.12926204e-01 -1.12690603e-01 6.29096583e-03 4.07789392e-03 3.94386154e-03 2.30094432e-05 1.70670281e-02 -5.25183836e-03 5.10663990e-03 9.88504715e-03 -9.88504715e-03 -8.16061087e-05 8.16061087e-05 1.05433222e-04 -1.05433222e-04 -1.78440391e-04 9.58226514e-06 9.58226514e-06 1.23324095e-04 -1.23324095e-04 3.89423179e-05 -1.91006991e-04 -1.91006991e-04 1.34997473e-02 -1.34997473e-02 -1.34997473e-02 -3.98965718e-03 3.98965718e-03 3.98965718e-03 -1.89783463e-01 -1.16218161e-01 -1.16218161e-01 5.86189719e-02 1.50037001e-01 -1.50037001e-01 8.58346559e-03 5.25627773e-03 5.25627773e-03 5.74991859e-03 -6.78582537e-03 6.78582537e-03 6.86525306e-04 -2.30935703e-03 1.14201355e-02 3.80846317e-03 -4.02050538e-03 -3.90840983e-03 1.84466621e-01 1.12690603e-01 1.12926204e-01 9.58226514e-06 1.50037001e-01 -1.46216058e-01 1.45949895e-01 -8.49151503e-03 -5.01417164e-03 -5.01287669e-03 -2.09120600e-06 -2.20334385e-02 6.42752029e-03 -6.50712338e-03 -6.86525306e-04 -1.14201355e-02 2.30935703e-03 -3.80846317e-03 3.90840983e-03 4.02050538e-03 -1.84466621e-01 -1.12926204e-01 -1.12690603e-01 9.58226514e-06 -1.50037001e-01 1.45949895e-01 -1.46216058e-01 8.49151503e-03 5.01287669e-03 5.01417164e-03 -2.09120600e-06 2.20334385e-02 -6.50712338e-03 6.42752029e-03 2.30528378e-02 1.00868915e-02 1.00868915e-02 8.14872011e-05 -2.91222329e-04 -2.91222329e-04 1.02934331e-02 6.29096583e-03 6.29096583e-03 8.58346559e-03 -8.49151503e-03 8.49151503e-03 -9.58405865e-04 -1.37774951e-04 -1.37774951e-04 -1.21596738e-03 2.58595459e-04 -2.58595459e-04 -7.88241731e-03 -8.72159043e-03 4.47145138e-03 1.92416159e-04 -4.41278956e-05 -1.64256895e-04 6.47988162e-03 3.94386154e-03 4.07789392e-03 1.23324095e-04 5.25627773e-03 -5.01417164e-03 5.01287669e-03 -1.37774951e-04 -3.29747090e-04 -1.58824815e-04 -2.69138959e-05 -7.44624905e-04 4.18861158e-04 -1.50120025e-04 -7.88241731e-03 4.47145138e-03 -8.72159043e-03 1.92416159e-04 -1.64256895e-04 -4.41278956e-05 6.47988162e-03 4.07789392e-03 3.94386154e-03 -1.23324095e-04 5.25627773e-03 -5.01287669e-03 5.01417164e-03 -1.37774951e-04 -1.58824815e-04 -3.29747090e-04 2.69138959e-05 -7.44624905e-04 1.50120025e-04 -4.18861158e-04 -2.15728427e-03 2.15728427e-03 1.78094826e-05 -1.78094826e-05 -2.30094432e-05 2.30094432e-05 3.89423179e-05 -2.09120600e-06 -2.09120600e-06 -2.69138959e-05 2.69138959e-05 -8.49865950e-06 4.16848167e-05 4.16848167e-05 6.96401205e-03 -6.96401205e-03 -6.96401205e-03 5.76134452e-04 -5.76134452e-04 -5.76134452e-04 2.78703402e-02 1.70670281e-02 1.70670281e-02 5.74991859e-03 -2.20334385e-02 2.20334385e-02 -1.21596738e-03 -7.44624905e-04 -7.44624905e-04 -2.25860819e-03 9.61306618e-04 -9.61306618e-04 6.65332653e-03 6.82044689e-03 -9.29544937e-03 -2.19325430e-04 2.57202134e-05 2.41137503e-04 -8.34518149e-03 -5.10663990e-03 -5.25183836e-03 -1.91006991e-04 -6.78582537e-03 6.42752029e-03 -6.50712338e-03 2.58595459e-04 4.18861158e-04 1.50120025e-04 4.16848167e-05 9.61306618e-04 -5.80403562e-04 1.34231757e-04 -6.65332653e-03 9.29544937e-03 -6.82044689e-03 2.19325430e-04 -2.41137503e-04 -2.57202134e-05 8.34518149e-03 5.25183836e-03 5.10663990e-03 -1.91006991e-04 6.78582537e-03 -6.50712338e-03 6.42752029e-03 -2.58595459e-04 -1.50120025e-04 -4.18861158e-04 4.16848167e-05 -9.61306618e-04 1.34231757e-04 -5.80403562e-04 - 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 - 0 12 24 36 48 66 86 106 124 144 164 170 180 190 190 200 206 216 226 226 236 254 274 294 308 326 346 366 384 404 424 438 456 476 496 -1 -2 1 496 - 6.10668701e-01 -7.51799909e-02 6.94266500e-02 -1.13818158e-02 2.50681311e-01 2.31073552e-01 2.31073552e-01 -2.31073552e-01 -4.55715201e-02 -9.09946312e-02 -9.09946312e-02 9.09946312e-02 -7.51799909e-02 6.30743818e-01 -3.88656825e-02 8.24503254e-02 -1.29637869e-01 -1.70706534e-01 -1.70706534e-01 1.70706534e-01 4.68039666e-02 8.78615395e-02 8.78615395e-02 -8.78615395e-02 6.94266500e-02 -3.88656825e-02 9.24320123e-03 -5.59159516e-03 3.43603397e-02 3.47760262e-02 3.47760262e-02 -3.47760262e-02 -8.11017653e-03 -1.51409429e-02 -1.51409429e-02 1.51409429e-02 -1.13818158e-02 8.24503254e-02 -5.59159516e-03 1.01087384e-02 -1.90677593e-02 -2.20810865e-02 -2.20810865e-02 2.20810865e-02 5.48328334e-03 1.08124682e-02 1.08124682e-02 -1.08124682e-02 6.62931071e-01 9.95491140e-02 9.95491140e-02 -9.36131516e-03 -2.53788780e-03 -2.53788780e-03 -1.84743808e-04 -1.19719253e-02 -1.19719253e-02 -1.34997473e-02 -6.86525306e-04 6.86525306e-04 -6.96842667e-03 7.88241731e-03 7.88241731e-03 -6.96401205e-03 -6.65332653e-03 6.65332653e-03 9.95491140e-02 5.15990200e-01 -9.95491140e-02 -2.53788780e-03 -1.46311251e-02 2.53788780e-03 6.78853114e-03 -4.68430612e-03 -3.65770659e-03 -9.88504715e-03 1.34997473e-02 -2.30263163e-02 1.14201355e-02 -1.00868915e-02 9.66260440e-03 -4.47145138e-03 2.15728427e-03 6.96401205e-03 -1.69134466e-02 -9.29544937e-03 9.95491140e-02 -9.95491140e-02 5.15990200e-01 -2.53788780e-03 2.53788780e-03 -1.46311251e-02 6.78853114e-03 -3.65770659e-03 -4.68430612e-03 9.88504715e-03 1.34997473e-02 -1.14201355e-02 2.30263163e-02 -1.00868915e-02 -4.47145138e-03 9.66260440e-03 -2.15728427e-03 6.96401205e-03 9.29544937e-03 1.69134466e-02 -9.36131516e-03 -2.53788780e-03 -2.53788780e-03 1.79650864e-04 -7.82240681e-05 -7.82240681e-05 4.91119301e-03 3.05324736e-03 3.05324736e-03 3.98965718e-03 -3.80846317e-03 3.80846317e-03 -8.65717248e-05 -1.92416159e-04 -1.92416159e-04 -5.76134452e-04 2.19325430e-04 -2.19325430e-04 -2.53788780e-03 -1.46311251e-02 2.53788780e-03 -7.82240681e-05 1.41854973e-04 7.82240681e-05 -4.88057902e-03 -3.08556574e-03 -2.92421677e-03 8.16061087e-05 -3.98965718e-03 3.77878526e-03 -3.90840983e-03 2.91222329e-04 5.87867582e-05 1.64256895e-04 -1.78094826e-05 5.76134452e-04 -1.07142033e-04 2.41137503e-04 -2.53788780e-03 2.53788780e-03 -1.46311251e-02 -7.82240681e-05 7.82240681e-05 1.41854973e-04 -4.88057902e-03 -2.92421677e-03 -3.08556574e-03 -8.16061087e-05 -3.98965718e-03 3.90840983e-03 -3.77878526e-03 2.91222329e-04 1.64256895e-04 5.87867582e-05 1.78094826e-05 5.76134452e-04 -2.41137503e-04 1.07142033e-04 2.50681311e-01 -1.29637869e-01 3.43603397e-02 -1.90677593e-02 -2.55642069e-01 5.76016724e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 -8.69671403e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 -8.69671403e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 -2.31073552e-01 1.70706534e-01 -3.47760262e-02 2.20810865e-02 -8.69671403e-02 -8.69671403e-02 -3.35169819e-01 3.81033730e-02 3.81033730e-02 5.56692551e-02 -4.55715201e-02 4.68039666e-02 -8.11017653e-03 5.48328334e-03 5.76016724e-02 -1.36360519e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 1.70016634e-02 1.70016634e-02 -1.70016634e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 1.70016634e-02 1.70016634e-02 -1.70016634e-02 9.09946312e-02 -8.78615395e-02 1.51409429e-02 -1.08124682e-02 3.81033730e-02 3.81033730e-02 5.56692551e-02 -1.70016634e-02 -1.70016634e-02 -3.82879364e-03 -1.84743808e-04 6.78853114e-03 6.78853114e-03 4.91119301e-03 -4.88057902e-03 -4.88057902e-03 2.33254718e-01 1.42959316e-01 1.42959316e-01 1.89783463e-01 -1.84466621e-01 1.84466621e-01 -1.05482763e-02 -6.47988162e-03 -6.47988162e-03 -2.78703402e-02 8.34518149e-03 -8.34518149e-03 -1.19719253e-02 -4.68430612e-03 -3.65770659e-03 3.05324736e-03 -3.08556574e-03 -2.92421677e-03 1.42959316e-01 8.74838123e-02 8.75173384e-02 -1.05433222e-04 1.16218161e-01 -1.13139159e-01 1.12926204e-01 -6.29096583e-03 -3.92045739e-03 -4.07789392e-03 2.30094432e-05 -1.70670281e-02 4.94560355e-03 -5.25183836e-03 -1.19719253e-02 -3.65770659e-03 -4.68430612e-03 3.05324736e-03 -2.92421677e-03 -3.08556574e-03 1.42959316e-01 8.75173384e-02 8.74838123e-02 1.05433222e-04 1.16218161e-01 -1.12926204e-01 1.13139159e-01 -6.29096583e-03 -4.07789392e-03 -3.92045739e-03 -2.30094432e-05 -1.70670281e-02 5.25183836e-03 -4.94560355e-03 -9.88504715e-03 9.88504715e-03 8.16061087e-05 -8.16061087e-05 -1.05433222e-04 1.05433222e-04 1.78440391e-04 -9.58226514e-06 -9.58226514e-06 -1.23324095e-04 1.23324095e-04 -3.89423179e-05 1.91006991e-04 1.91006991e-04 -1.34997473e-02 1.34997473e-02 1.34997473e-02 3.98965718e-03 -3.98965718e-03 -3.98965718e-03 1.89783463e-01 1.16218161e-01 1.16218161e-01 3.67563826e-01 -1.50037001e-01 1.50037001e-01 -8.58346559e-03 -5.25627773e-03 -5.25627773e-03 -3.91967293e-02 6.78582537e-03 -6.78582537e-03 -6.86525306e-04 -2.30263163e-02 -1.14201355e-02 -3.80846317e-03 3.77878526e-03 3.90840983e-03 -1.84466621e-01 -1.13139159e-01 -1.12926204e-01 -9.58226514e-06 -1.50037001e-01 1.45685791e-01 -1.45949895e-01 8.49151503e-03 5.03807181e-03 5.01287669e-03 2.09120600e-06 2.20334385e-02 -6.62775483e-03 6.50712338e-03 6.86525306e-04 1.14201355e-02 2.30263163e-02 3.80846317e-03 -3.90840983e-03 -3.77878526e-03 1.84466621e-01 1.12926204e-01 1.13139159e-01 -9.58226514e-06 1.50037001e-01 -1.45949895e-01 1.45685791e-01 -8.49151503e-03 -5.01287669e-03 -5.03807181e-03 2.09120600e-06 -2.20334385e-02 6.50712338e-03 -6.62775483e-03 -6.96842667e-03 -1.00868915e-02 -1.00868915e-02 -8.65717248e-05 2.91222329e-04 2.91222329e-04 -1.05482763e-02 -6.29096583e-03 -6.29096583e-03 -8.58346559e-03 8.49151503e-03 -8.49151503e-03 7.69472345e-04 1.37774951e-04 1.37774951e-04 1.21596738e-03 -2.58595459e-04 2.58595459e-04 7.88241731e-03 9.66260440e-03 -4.47145138e-03 -1.92416159e-04 5.87867582e-05 1.64256895e-04 -6.47988162e-03 -3.92045739e-03 -4.07789392e-03 -1.23324095e-04 -5.25627773e-03 5.03807181e-03 -5.01287669e-03 1.37774951e-04 3.28830564e-04 1.58824815e-04 2.69138959e-05 7.44624905e-04 -4.09415493e-04 1.50120025e-04 7.88241731e-03 -4.47145138e-03 9.66260440e-03 -1.92416159e-04 1.64256895e-04 5.87867582e-05 -6.47988162e-03 -4.07789392e-03 -3.92045739e-03 1.23324095e-04 -5.25627773e-03 5.01287669e-03 -5.03807181e-03 1.37774951e-04 1.58824815e-04 3.28830564e-04 -2.69138959e-05 7.44624905e-04 -1.50120025e-04 4.09415493e-04 2.15728427e-03 -2.15728427e-03 -1.78094826e-05 1.78094826e-05 2.30094432e-05 -2.30094432e-05 -3.89423179e-05 2.09120600e-06 2.09120600e-06 2.69138959e-05 -2.69138959e-05 8.49865950e-06 -4.16848167e-05 -4.16848167e-05 -6.96401205e-03 6.96401205e-03 6.96401205e-03 -5.76134452e-04 5.76134452e-04 5.76134452e-04 -2.78703402e-02 -1.70670281e-02 -1.70670281e-02 -3.91967293e-02 2.20334385e-02 -2.20334385e-02 1.21596738e-03 7.44624905e-04 7.44624905e-04 4.88351268e-03 -9.61306618e-04 9.61306618e-04 -6.65332653e-03 -1.69134466e-02 9.29544937e-03 2.19325430e-04 -1.07142033e-04 -2.41137503e-04 8.34518149e-03 4.94560355e-03 5.25183836e-03 1.91006991e-04 6.78582537e-03 -6.62775483e-03 6.50712338e-03 -2.58595459e-04 -4.09415493e-04 -1.50120025e-04 -4.16848167e-05 -9.61306618e-04 5.05894315e-04 -1.34231757e-04 6.65332653e-03 -9.29544937e-03 1.69134466e-02 -2.19325430e-04 2.41137503e-04 1.07142033e-04 -8.34518149e-03 -5.25183836e-03 -4.94560355e-03 1.91006991e-04 -6.78582537e-03 6.50712338e-03 -6.62775483e-03 2.58595459e-04 1.50120025e-04 4.09415493e-04 -4.16848167e-05 9.61306618e-04 -1.34231757e-04 5.05894315e-04 - 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 - 0 12 24 36 48 66 86 106 124 144 164 170 180 190 190 200 206 216 226 226 236 254 274 294 308 326 346 366 384 404 424 438 456 476 496 -1 -2 2 496 - -1.30077665e+00 -3.97979828e-02 -1.21755678e-01 3.00506476e-02 2.50681311e-01 -2.31073552e-01 -2.31073552e-01 2.31073552e-01 -4.55715201e-02 9.09946312e-02 9.09946312e-02 -9.09946312e-02 -3.97979828e-02 -1.15126664e+00 8.95185576e-02 -1.01048380e-01 -1.29637869e-01 1.70706534e-01 1.70706534e-01 -1.70706534e-01 4.68039666e-02 -8.78615395e-02 -8.78615395e-02 8.78615395e-02 -1.21755678e-01 8.95185576e-02 -1.86285298e-02 1.13591275e-02 3.43603397e-02 -3.47760262e-02 -3.47760262e-02 3.47760262e-02 -8.11017653e-03 1.51409429e-02 1.51409429e-02 -1.51409429e-02 3.00506476e-02 -1.01048380e-01 1.13591275e-02 -9.53400814e-03 -1.90677593e-02 2.20810865e-02 2.20810865e-02 -2.20810865e-02 5.48328334e-03 -1.08124682e-02 -1.08124682e-02 1.08124682e-02 -1.32837516e+00 -9.95491140e-02 -9.95491140e-02 3.64581589e-03 2.53788780e-03 2.53788780e-03 2.60203672e-02 1.19719253e-02 1.19719253e-02 1.34997473e-02 6.86525306e-04 -6.86525306e-04 2.30528378e-02 -7.88241731e-03 -7.88241731e-03 6.96401205e-03 6.65332653e-03 -6.65332653e-03 -9.95491140e-02 -1.47531604e+00 9.95491140e-02 2.53788780e-03 -1.62399402e-03 -2.53788780e-03 -6.78853114e-03 -2.07315938e-02 3.65770659e-03 9.88504715e-03 -1.34997473e-02 -2.30935703e-03 -1.14201355e-02 1.00868915e-02 -8.72159043e-03 4.47145138e-03 -2.15728427e-03 -6.96401205e-03 6.82044689e-03 9.29544937e-03 -9.95491140e-02 9.95491140e-02 -1.47531604e+00 2.53788780e-03 -2.53788780e-03 -1.62399402e-03 -6.78853114e-03 3.65770659e-03 -2.07315938e-02 -9.88504715e-03 -1.34997473e-02 1.14201355e-02 2.30935703e-03 1.00868915e-02 4.47145138e-03 -8.72159043e-03 2.15728427e-03 -6.96401205e-03 -9.29544937e-03 -6.82044689e-03 3.64581589e-03 2.53788780e-03 2.53788780e-03 -1.26080894e-04 7.82240681e-05 7.82240681e-05 -4.95421603e-03 -3.05324736e-03 -3.05324736e-03 -3.98965718e-03 3.80846317e-03 -3.80846317e-03 8.14872011e-05 1.92416159e-04 1.92416159e-04 5.76134452e-04 -2.19325430e-04 2.19325430e-04 2.53788780e-03 -1.62399402e-03 -2.53788780e-03 7.82240681e-05 -1.63876786e-04 -7.82240681e-05 4.88057902e-03 2.95573881e-03 2.92421677e-03 -8.16061087e-05 3.98965718e-03 -4.02050538e-03 3.90840983e-03 -2.91222329e-04 -4.41278956e-05 -1.64256895e-04 1.78094826e-05 -5.76134452e-04 2.57202134e-05 -2.41137503e-04 2.53788780e-03 -2.53788780e-03 -1.62399402e-03 7.82240681e-05 -7.82240681e-05 -1.63876786e-04 4.88057902e-03 2.92421677e-03 2.95573881e-03 8.16061087e-05 3.98965718e-03 -3.90840983e-03 4.02050538e-03 -2.91222329e-04 -1.64256895e-04 -4.41278956e-05 -1.78094826e-05 -5.76134452e-04 2.41137503e-04 -2.57202134e-05 2.50681311e-01 -1.29637869e-01 3.43603397e-02 -1.90677593e-02 -2.55642069e-01 5.76016724e-02 -2.31073552e-01 1.70706534e-01 -3.47760262e-02 2.20810865e-02 -8.69671403e-02 -8.69671403e-02 8.69671403e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 -2.31073552e-01 1.70706534e-01 -3.47760262e-02 2.20810865e-02 -8.69671403e-02 -8.69671403e-02 8.69671403e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 -5.09104100e-01 -3.81033730e-02 -3.81033730e-02 1.31876001e-01 -4.55715201e-02 4.68039666e-02 -8.11017653e-03 5.48328334e-03 5.76016724e-02 -1.36360519e-02 9.09946312e-02 -8.78615395e-02 1.51409429e-02 -1.08124682e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 -1.70016634e-02 -1.70016634e-02 1.70016634e-02 9.09946312e-02 -8.78615395e-02 1.51409429e-02 -1.08124682e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 -1.70016634e-02 -1.70016634e-02 1.70016634e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 1.31876001e-01 1.70016634e-02 1.70016634e-02 -3.78321204e-02 2.60203672e-02 -6.78853114e-03 -6.78853114e-03 -4.95421603e-03 4.88057902e-03 4.88057902e-03 -2.33574112e-01 -1.42959316e-01 -1.42959316e-01 -1.89783463e-01 1.84466621e-01 -1.84466621e-01 1.02934331e-02 6.47988162e-03 6.47988162e-03 2.78703402e-02 -8.34518149e-03 8.34518149e-03 1.19719253e-02 -2.07315938e-02 3.65770659e-03 -3.05324736e-03 2.95573881e-03 2.92421677e-03 -1.42959316e-01 -8.78000495e-02 -8.75173384e-02 1.05433222e-04 -1.16218161e-01 1.12690603e-01 -1.12926204e-01 6.29096583e-03 3.94386154e-03 4.07789392e-03 -2.30094432e-05 1.70670281e-02 -5.10663990e-03 5.25183836e-03 1.19719253e-02 3.65770659e-03 -2.07315938e-02 -3.05324736e-03 2.92421677e-03 2.95573881e-03 -1.42959316e-01 -8.75173384e-02 -8.78000495e-02 -1.05433222e-04 -1.16218161e-01 1.12926204e-01 -1.12690603e-01 6.29096583e-03 4.07789392e-03 3.94386154e-03 2.30094432e-05 1.70670281e-02 -5.25183836e-03 5.10663990e-03 9.88504715e-03 -9.88504715e-03 -8.16061087e-05 8.16061087e-05 1.05433222e-04 -1.05433222e-04 -1.78440391e-04 9.58226514e-06 9.58226514e-06 1.23324095e-04 -1.23324095e-04 3.89423179e-05 -1.91006991e-04 -1.91006991e-04 1.34997473e-02 -1.34997473e-02 -1.34997473e-02 -3.98965718e-03 3.98965718e-03 3.98965718e-03 -1.89783463e-01 -1.16218161e-01 -1.16218161e-01 5.86189719e-02 1.50037001e-01 -1.50037001e-01 8.58346559e-03 5.25627773e-03 5.25627773e-03 5.74991859e-03 -6.78582537e-03 6.78582537e-03 6.86525306e-04 -2.30935703e-03 1.14201355e-02 3.80846317e-03 -4.02050538e-03 -3.90840983e-03 1.84466621e-01 1.12690603e-01 1.12926204e-01 9.58226514e-06 1.50037001e-01 -1.46216058e-01 1.45949895e-01 -8.49151503e-03 -5.01417164e-03 -5.01287669e-03 -2.09120600e-06 -2.20334385e-02 6.42752029e-03 -6.50712338e-03 -6.86525306e-04 -1.14201355e-02 2.30935703e-03 -3.80846317e-03 3.90840983e-03 4.02050538e-03 -1.84466621e-01 -1.12926204e-01 -1.12690603e-01 9.58226514e-06 -1.50037001e-01 1.45949895e-01 -1.46216058e-01 8.49151503e-03 5.01287669e-03 5.01417164e-03 -2.09120600e-06 2.20334385e-02 -6.50712338e-03 6.42752029e-03 2.30528378e-02 1.00868915e-02 1.00868915e-02 8.14872011e-05 -2.91222329e-04 -2.91222329e-04 1.02934331e-02 6.29096583e-03 6.29096583e-03 8.58346559e-03 -8.49151503e-03 8.49151503e-03 -9.58405865e-04 -1.37774951e-04 -1.37774951e-04 -1.21596738e-03 2.58595459e-04 -2.58595459e-04 -7.88241731e-03 -8.72159043e-03 4.47145138e-03 1.92416159e-04 -4.41278956e-05 -1.64256895e-04 6.47988162e-03 3.94386154e-03 4.07789392e-03 1.23324095e-04 5.25627773e-03 -5.01417164e-03 5.01287669e-03 -1.37774951e-04 -3.29747090e-04 -1.58824815e-04 -2.69138959e-05 -7.44624905e-04 4.18861158e-04 -1.50120025e-04 -7.88241731e-03 4.47145138e-03 -8.72159043e-03 1.92416159e-04 -1.64256895e-04 -4.41278956e-05 6.47988162e-03 4.07789392e-03 3.94386154e-03 -1.23324095e-04 5.25627773e-03 -5.01287669e-03 5.01417164e-03 -1.37774951e-04 -1.58824815e-04 -3.29747090e-04 2.69138959e-05 -7.44624905e-04 1.50120025e-04 -4.18861158e-04 -2.15728427e-03 2.15728427e-03 1.78094826e-05 -1.78094826e-05 -2.30094432e-05 2.30094432e-05 3.89423179e-05 -2.09120600e-06 -2.09120600e-06 -2.69138959e-05 2.69138959e-05 -8.49865950e-06 4.16848167e-05 4.16848167e-05 6.96401205e-03 -6.96401205e-03 -6.96401205e-03 5.76134452e-04 -5.76134452e-04 -5.76134452e-04 2.78703402e-02 1.70670281e-02 1.70670281e-02 5.74991859e-03 -2.20334385e-02 2.20334385e-02 -1.21596738e-03 -7.44624905e-04 -7.44624905e-04 -2.25860819e-03 9.61306618e-04 -9.61306618e-04 6.65332653e-03 6.82044689e-03 -9.29544937e-03 -2.19325430e-04 2.57202134e-05 2.41137503e-04 -8.34518149e-03 -5.10663990e-03 -5.25183836e-03 -1.91006991e-04 -6.78582537e-03 6.42752029e-03 -6.50712338e-03 2.58595459e-04 4.18861158e-04 1.50120025e-04 4.16848167e-05 9.61306618e-04 -5.80403562e-04 1.34231757e-04 -6.65332653e-03 9.29544937e-03 -6.82044689e-03 2.19325430e-04 -2.41137503e-04 -2.57202134e-05 8.34518149e-03 5.25183836e-03 5.10663990e-03 -1.91006991e-04 6.78582537e-03 -6.50712338e-03 6.42752029e-03 -2.58595459e-04 -1.50120025e-04 -4.18861158e-04 4.16848167e-05 -9.61306618e-04 1.34231757e-04 -5.80403562e-04 - 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 - 0 12 24 36 48 66 86 106 124 144 164 170 180 190 190 200 206 216 226 226 236 254 274 294 308 326 346 366 384 404 424 438 456 476 496 -1 -1 -2 496 - 1.46471486e+00 2.54883877e-01 1.24590418e-01 -9.35884290e-03 -2.50681311e-01 2.31073552e-01 2.31073552e-01 -2.31073552e-01 4.55715201e-02 -9.09946312e-02 -9.09946312e-02 9.09946312e-02 2.54883877e-01 1.70428957e+00 -9.34218553e-02 1.65342489e-01 1.29637869e-01 -1.70706534e-01 -1.70706534e-01 1.70706534e-01 -4.68039666e-02 8.78615395e-02 8.78615395e-02 -8.78615395e-02 1.24590418e-01 -9.34218553e-02 1.88920782e-02 -1.20468125e-02 -3.43603397e-02 3.47760262e-02 3.47760262e-02 -3.47760262e-02 8.11017653e-03 -1.51409429e-02 -1.51409429e-02 1.51409429e-02 -9.35884290e-03 1.65342489e-01 -1.20468125e-02 1.72406024e-02 1.90677593e-02 -2.20810865e-02 -2.20810865e-02 2.20810865e-02 -5.48328334e-03 1.08124682e-02 1.08124682e-02 -1.08124682e-02 1.89517553e+00 9.95491140e-02 9.95491140e-02 -9.15785008e-03 -2.53788780e-03 -2.53788780e-03 -2.12388496e-02 -1.19719253e-02 -1.19719253e-02 -1.34997473e-02 -6.86525306e-04 6.86525306e-04 -2.22701900e-02 7.88241731e-03 7.88241731e-03 -6.96401205e-03 -6.65332653e-03 6.65332653e-03 9.95491140e-02 2.04211641e+00 -9.95491140e-02 -2.53788780e-03 -3.88804018e-03 2.53788780e-03 6.78853114e-03 1.78035242e-02 -3.65770659e-03 -9.88504715e-03 1.34997473e-02 6.08947863e-03 1.14201355e-02 -1.00868915e-02 8.24231853e-03 -4.47145138e-03 2.15728427e-03 6.96401205e-03 -6.20170953e-03 -9.29544937e-03 9.95491140e-02 -9.95491140e-02 2.04211641e+00 -2.53788780e-03 2.53788780e-03 -3.88804018e-03 6.78853114e-03 -3.65770659e-03 1.78035242e-02 9.88504715e-03 1.34997473e-02 -1.14201355e-02 -6.08947863e-03 -1.00868915e-02 -4.47145138e-03 8.24231853e-03 -2.15728427e-03 6.96401205e-03 9.29544937e-03 6.20170953e-03 -9.15785008e-03 -2.53788780e-03 -2.53788780e-03 1.79684460e-04 -7.82240681e-05 -7.82240681e-05 4.90771661e-03 3.05324736e-03 3.05324736e-03 3.98965718e-03 -3.80846317e-03 3.80846317e-03 -8.90983131e-05 -1.92416159e-04 -1.92416159e-04 -5.76134452e-04 2.19325430e-04 -2.19325430e-04 -2.53788780e-03 -3.88804018e-03 2.53788780e-03 -7.82240681e-05 2.17480352e-04 7.82240681e-05 -4.88057902e-03 -2.92726385e-03 -2.92421677e-03 8.16061087e-05 -3.98965718e-03 3.98374436e-03 -3.90840983e-03 2.91222329e-04 4.87887308e-05 1.64256895e-04 -1.78094826e-05 5.76134452e-04 -3.17373257e-05 2.41137503e-04 -2.53788780e-03 2.53788780e-03 -3.88804018e-03 -7.82240681e-05 7.82240681e-05 2.17480352e-04 -4.88057902e-03 -2.92421677e-03 -2.92726385e-03 -8.16061087e-05 -3.98965718e-03 3.90840983e-03 -3.98374436e-03 2.91222329e-04 1.64256895e-04 4.87887308e-05 1.78094826e-05 5.76134452e-04 -2.41137503e-04 3.17373257e-05 -2.50681311e-01 1.29637869e-01 -3.43603397e-02 1.90677593e-02 2.55642069e-01 -5.76016724e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 -8.69671403e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 -8.69671403e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 -2.31073552e-01 1.70706534e-01 -3.47760262e-02 2.20810865e-02 -8.69671403e-02 -8.69671403e-02 5.09104100e-01 3.81033730e-02 3.81033730e-02 -1.31876001e-01 4.55715201e-02 -4.68039666e-02 8.11017653e-03 -5.48328334e-03 -5.76016724e-02 1.36360519e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 1.70016634e-02 1.70016634e-02 -1.70016634e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 1.70016634e-02 1.70016634e-02 -1.70016634e-02 9.09946312e-02 -8.78615395e-02 1.51409429e-02 -1.08124682e-02 3.81033730e-02 3.81033730e-02 -1.31876001e-01 -1.70016634e-02 -1.70016634e-02 3.78321204e-02 -2.12388496e-02 6.78853114e-03 6.78853114e-03 4.90771661e-03 -4.88057902e-03 -4.88057902e-03 2.33614448e-01 1.42959316e-01 1.42959316e-01 1.89783463e-01 -1.84466621e-01 1.84466621e-01 -1.02868307e-02 -6.47988162e-03 -6.47988162e-03 -2.78703402e-02 8.34518149e-03 -8.34518149e-03 -1.19719253e-02 1.78035242e-02 -3.65770659e-03 3.05324736e-03 -2.92726385e-03 -2.92421677e-03 1.42959316e-01 8.78151758e-02 8.75173384e-02 -1.05433222e-04 1.16218161e-01 -1.12710131e-01 1.12926204e-01 -6.29096583e-03 -3.94138564e-03 -4.07789392e-03 2.30094432e-05 -1.70670281e-02 5.10344353e-03 -5.25183836e-03 -1.19719253e-02 -3.65770659e-03 1.78035242e-02 3.05324736e-03 -2.92421677e-03 -2.92726385e-03 1.42959316e-01 8.75173384e-02 8.78151758e-02 1.05433222e-04 1.16218161e-01 -1.12926204e-01 1.12710131e-01 -6.29096583e-03 -4.07789392e-03 -3.94138564e-03 -2.30094432e-05 -1.70670281e-02 5.25183836e-03 -5.10344353e-03 -9.88504715e-03 9.88504715e-03 8.16061087e-05 -8.16061087e-05 -1.05433222e-04 1.05433222e-04 1.78440391e-04 -9.58226514e-06 -9.58226514e-06 -1.23324095e-04 1.23324095e-04 -3.89423179e-05 1.91006991e-04 1.91006991e-04 -1.34997473e-02 1.34997473e-02 1.34997473e-02 3.98965718e-03 -3.98965718e-03 -3.98965718e-03 1.89783463e-01 1.16218161e-01 1.16218161e-01 3.67563826e-01 -1.50037001e-01 1.50037001e-01 -8.58346559e-03 -5.25627773e-03 -5.25627773e-03 -3.91967293e-02 6.78582537e-03 -6.78582537e-03 -6.86525306e-04 6.08947863e-03 -1.14201355e-02 -3.80846317e-03 3.98374436e-03 3.90840983e-03 -1.84466621e-01 -1.12710131e-01 -1.12926204e-01 -9.58226514e-06 -1.50037001e-01 1.46241269e-01 -1.45949895e-01 8.49151503e-03 5.01097526e-03 5.01287669e-03 2.09120600e-06 2.20334385e-02 -6.42339379e-03 6.50712338e-03 6.86525306e-04 1.14201355e-02 -6.08947863e-03 3.80846317e-03 -3.90840983e-03 -3.98374436e-03 1.84466621e-01 1.12926204e-01 1.12710131e-01 -9.58226514e-06 1.50037001e-01 -1.45949895e-01 1.46241269e-01 -8.49151503e-03 -5.01287669e-03 -5.01097526e-03 2.09120600e-06 -2.20334385e-02 6.50712338e-03 -6.42339379e-03 -2.22701900e-02 -1.00868915e-02 -1.00868915e-02 -8.90983131e-05 2.91222329e-04 2.91222329e-04 -1.02868307e-02 -6.29096583e-03 -6.29096583e-03 -8.58346559e-03 8.49151503e-03 -8.49151503e-03 9.59486559e-04 1.37774951e-04 1.37774951e-04 1.21596738e-03 -2.58595459e-04 2.58595459e-04 7.88241731e-03 8.24231853e-03 -4.47145138e-03 -1.92416159e-04 4.87887308e-05 1.64256895e-04 -6.47988162e-03 -3.94138564e-03 -4.07789392e-03 -1.23324095e-04 -5.25627773e-03 5.01097526e-03 -5.01287669e-03 1.37774951e-04 3.30152350e-04 1.58824815e-04 2.69138959e-05 7.44624905e-04 -4.19384346e-04 1.50120025e-04 7.88241731e-03 -4.47145138e-03 8.24231853e-03 -1.92416159e-04 1.64256895e-04 4.87887308e-05 -6.47988162e-03 -4.07789392e-03 -3.94138564e-03 1.23324095e-04 -5.25627773e-03 5.01287669e-03 -5.01097526e-03 1.37774951e-04 1.58824815e-04 3.30152350e-04 -2.69138959e-05 7.44624905e-04 -1.50120025e-04 4.19384346e-04 2.15728427e-03 -2.15728427e-03 -1.78094826e-05 1.78094826e-05 2.30094432e-05 -2.30094432e-05 -3.89423179e-05 2.09120600e-06 2.09120600e-06 2.69138959e-05 -2.69138959e-05 8.49865950e-06 -4.16848167e-05 -4.16848167e-05 -6.96401205e-03 6.96401205e-03 6.96401205e-03 -5.76134452e-04 5.76134452e-04 5.76134452e-04 -2.78703402e-02 -1.70670281e-02 -1.70670281e-02 -3.91967293e-02 2.20334385e-02 -2.20334385e-02 1.21596738e-03 7.44624905e-04 7.44624905e-04 4.88351268e-03 -9.61306618e-04 9.61306618e-04 -6.65332653e-03 -6.20170953e-03 9.29544937e-03 2.19325430e-04 -3.17373257e-05 -2.41137503e-04 8.34518149e-03 5.10344353e-03 5.25183836e-03 1.91006991e-04 6.78582537e-03 -6.42339379e-03 6.50712338e-03 -2.58595459e-04 -4.19384346e-04 -1.50120025e-04 -4.16848167e-05 -9.61306618e-04 5.81078995e-04 -1.34231757e-04 6.65332653e-03 -9.29544937e-03 6.20170953e-03 -2.19325430e-04 2.41137503e-04 3.17373257e-05 -8.34518149e-03 -5.25183836e-03 -5.10344353e-03 1.91006991e-04 -6.78582537e-03 6.50712338e-03 -6.42339379e-03 2.58595459e-04 1.50120025e-04 4.19384346e-04 -4.16848167e-05 9.61306618e-04 -1.34231757e-04 5.81078995e-04 - 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 - 0 12 24 36 48 66 86 106 124 144 164 170 180 190 190 200 206 216 226 226 236 254 274 294 308 326 346 366 384 404 424 438 456 476 496 -1 -1 -1 496 - -4.46730500e-01 2.90265885e-01 -6.65919095e-02 3.20736205e-02 -2.50681311e-01 -2.31073552e-01 -2.31073552e-01 2.31073552e-01 4.55715201e-02 9.09946312e-02 9.09946312e-02 -9.09946312e-02 2.90265885e-01 -7.77208948e-02 3.49623849e-02 -1.81562170e-02 1.29637869e-01 1.70706534e-01 1.70706534e-01 -1.70706534e-01 -4.68039666e-02 -8.78615395e-02 -8.78615395e-02 8.78615395e-02 -6.65919095e-02 3.49623849e-02 -8.97965282e-03 4.90391018e-03 -3.43603397e-02 -3.47760262e-02 -3.47760262e-02 3.47760262e-02 8.11017653e-03 1.51409429e-02 1.51409429e-02 -1.51409429e-02 3.20736205e-02 -1.81562170e-02 4.90391018e-03 -2.40214415e-03 1.90677593e-02 2.20810865e-02 2.20810865e-02 -2.20810865e-02 -5.48328334e-03 -1.08124682e-02 -1.08124682e-02 1.08124682e-02 -9.61307016e-02 -9.95491140e-02 -9.95491140e-02 3.84928096e-03 2.53788780e-03 2.53788780e-03 4.96626145e-03 1.19719253e-02 1.19719253e-02 1.34997473e-02 6.86525306e-04 -6.86525306e-04 7.75107441e-03 -7.88241731e-03 -7.88241731e-03 6.96401205e-03 6.65332653e-03 -6.65332653e-03 -9.95491140e-02 5.08101702e-02 9.95491140e-02 2.53788780e-03 9.11909087e-03 -2.53788780e-03 -6.78853114e-03 1.75623651e-03 3.65770659e-03 9.88504715e-03 -1.34997473e-02 2.68064379e-02 -1.14201355e-02 1.00868915e-02 -1.01418763e-02 4.47145138e-03 -2.15728427e-03 -6.96401205e-03 1.75321839e-02 9.29544937e-03 -9.95491140e-02 9.95491140e-02 5.08101702e-02 2.53788780e-03 -2.53788780e-03 9.11909087e-03 -6.78853114e-03 3.65770659e-03 1.75623651e-03 -9.88504715e-03 -1.34997473e-02 1.14201355e-02 -2.68064379e-02 1.00868915e-02 4.47145138e-03 -1.01418763e-02 2.15728427e-03 -6.96401205e-03 -9.29544937e-03 -1.75321839e-02 3.84928096e-03 2.53788780e-03 2.53788780e-03 -1.26047298e-04 7.82240681e-05 7.82240681e-05 -4.95769243e-03 -3.05324736e-03 -3.05324736e-03 -3.98965718e-03 3.80846317e-03 -3.80846317e-03 7.89606128e-05 1.92416159e-04 1.92416159e-04 5.76134452e-04 -2.19325430e-04 2.19325430e-04 2.53788780e-03 9.11909087e-03 -2.53788780e-03 7.82240681e-05 -8.82514067e-05 -7.82240681e-05 4.88057902e-03 3.11404071e-03 2.92421677e-03 -8.16061087e-05 3.98965718e-03 -3.81554628e-03 3.90840983e-03 -2.91222329e-04 -5.41259230e-05 -1.64256895e-04 1.78094826e-05 -5.76134452e-04 1.01124921e-04 -2.41137503e-04 2.53788780e-03 -2.53788780e-03 9.11909087e-03 7.82240681e-05 -7.82240681e-05 -8.82514067e-05 4.88057902e-03 2.92421677e-03 3.11404071e-03 8.16061087e-05 3.98965718e-03 -3.90840983e-03 3.81554628e-03 -2.91222329e-04 -1.64256895e-04 -5.41259230e-05 -1.78094826e-05 -5.76134452e-04 2.41137503e-04 -1.01124921e-04 -2.50681311e-01 1.29637869e-01 -3.43603397e-02 1.90677593e-02 2.55642069e-01 -5.76016724e-02 -2.31073552e-01 1.70706534e-01 -3.47760262e-02 2.20810865e-02 -8.69671403e-02 -8.69671403e-02 8.69671403e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 -2.31073552e-01 1.70706534e-01 -3.47760262e-02 2.20810865e-02 -8.69671403e-02 -8.69671403e-02 8.69671403e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 3.35169819e-01 -3.81033730e-02 -3.81033730e-02 -5.56692551e-02 4.55715201e-02 -4.68039666e-02 8.11017653e-03 -5.48328334e-03 -5.76016724e-02 1.36360519e-02 9.09946312e-02 -8.78615395e-02 1.51409429e-02 -1.08124682e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 -1.70016634e-02 -1.70016634e-02 1.70016634e-02 9.09946312e-02 -8.78615395e-02 1.51409429e-02 -1.08124682e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 -1.70016634e-02 -1.70016634e-02 1.70016634e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 -5.56692551e-02 1.70016634e-02 1.70016634e-02 3.82879364e-03 4.96626145e-03 -6.78853114e-03 -6.78853114e-03 -4.95769243e-03 4.88057902e-03 4.88057902e-03 -2.33214382e-01 -1.42959316e-01 -1.42959316e-01 -1.89783463e-01 1.84466621e-01 -1.84466621e-01 1.05548787e-02 6.47988162e-03 6.47988162e-03 2.78703402e-02 -8.34518149e-03 8.34518149e-03 1.19719253e-02 1.75623651e-03 3.65770659e-03 -3.05324736e-03 3.11404071e-03 2.92421677e-03 -1.42959316e-01 -8.74686860e-02 -8.75173384e-02 1.05433222e-04 -1.16218161e-01 1.13119631e-01 -1.12926204e-01 6.29096583e-03 3.92293329e-03 4.07789392e-03 -2.30094432e-05 1.70670281e-02 -4.94879992e-03 5.25183836e-03 1.19719253e-02 3.65770659e-03 1.75623651e-03 -3.05324736e-03 2.92421677e-03 3.11404071e-03 -1.42959316e-01 -8.75173384e-02 -8.74686860e-02 -1.05433222e-04 -1.16218161e-01 1.12926204e-01 -1.13119631e-01 6.29096583e-03 4.07789392e-03 3.92293329e-03 2.30094432e-05 1.70670281e-02 -5.25183836e-03 4.94879992e-03 9.88504715e-03 -9.88504715e-03 -8.16061087e-05 8.16061087e-05 1.05433222e-04 -1.05433222e-04 -1.78440391e-04 9.58226514e-06 9.58226514e-06 1.23324095e-04 -1.23324095e-04 3.89423179e-05 -1.91006991e-04 -1.91006991e-04 1.34997473e-02 -1.34997473e-02 -1.34997473e-02 -3.98965718e-03 3.98965718e-03 3.98965718e-03 -1.89783463e-01 -1.16218161e-01 -1.16218161e-01 5.86189719e-02 1.50037001e-01 -1.50037001e-01 8.58346559e-03 5.25627773e-03 5.25627773e-03 5.74991859e-03 -6.78582537e-03 6.78582537e-03 6.86525306e-04 2.68064379e-02 1.14201355e-02 3.80846317e-03 -3.81554628e-03 -3.90840983e-03 1.84466621e-01 1.13119631e-01 1.12926204e-01 9.58226514e-06 1.50037001e-01 -1.45660580e-01 1.45949895e-01 -8.49151503e-03 -5.04126819e-03 -5.01287669e-03 -2.09120600e-06 -2.20334385e-02 6.63188133e-03 -6.50712338e-03 -6.86525306e-04 -1.14201355e-02 -2.68064379e-02 -3.80846317e-03 3.90840983e-03 3.81554628e-03 -1.84466621e-01 -1.12926204e-01 -1.13119631e-01 9.58226514e-06 -1.50037001e-01 1.45949895e-01 -1.45660580e-01 8.49151503e-03 5.01287669e-03 5.04126819e-03 -2.09120600e-06 2.20334385e-02 -6.50712338e-03 6.63188133e-03 7.75107441e-03 1.00868915e-02 1.00868915e-02 7.89606128e-05 -2.91222329e-04 -2.91222329e-04 1.05548787e-02 6.29096583e-03 6.29096583e-03 8.58346559e-03 -8.49151503e-03 8.49151503e-03 -7.68391652e-04 -1.37774951e-04 -1.37774951e-04 -1.21596738e-03 2.58595459e-04 -2.58595459e-04 -7.88241731e-03 -1.01418763e-02 4.47145138e-03 1.92416159e-04 -5.41259230e-05 -1.64256895e-04 6.47988162e-03 3.92293329e-03 4.07789392e-03 1.23324095e-04 5.25627773e-03 -5.04126819e-03 5.01287669e-03 -1.37774951e-04 -3.28425304e-04 -1.58824815e-04 -2.69138959e-05 -7.44624905e-04 4.08892304e-04 -1.50120025e-04 -7.88241731e-03 4.47145138e-03 -1.01418763e-02 1.92416159e-04 -1.64256895e-04 -5.41259230e-05 6.47988162e-03 4.07789392e-03 3.92293329e-03 -1.23324095e-04 5.25627773e-03 -5.01287669e-03 5.04126819e-03 -1.37774951e-04 -1.58824815e-04 -3.28425304e-04 2.69138959e-05 -7.44624905e-04 1.50120025e-04 -4.08892304e-04 -2.15728427e-03 2.15728427e-03 1.78094826e-05 -1.78094826e-05 -2.30094432e-05 2.30094432e-05 3.89423179e-05 -2.09120600e-06 -2.09120600e-06 -2.69138959e-05 2.69138959e-05 -8.49865950e-06 4.16848167e-05 4.16848167e-05 6.96401205e-03 -6.96401205e-03 -6.96401205e-03 5.76134452e-04 -5.76134452e-04 -5.76134452e-04 2.78703402e-02 1.70670281e-02 1.70670281e-02 5.74991859e-03 -2.20334385e-02 2.20334385e-02 -1.21596738e-03 -7.44624905e-04 -7.44624905e-04 -2.25860819e-03 9.61306618e-04 -9.61306618e-04 6.65332653e-03 1.75321839e-02 -9.29544937e-03 -2.19325430e-04 1.01124921e-04 2.41137503e-04 -8.34518149e-03 -4.94879992e-03 -5.25183836e-03 -1.91006991e-04 -6.78582537e-03 6.63188133e-03 -6.50712338e-03 2.58595459e-04 4.08892304e-04 1.50120025e-04 4.16848167e-05 9.61306618e-04 -5.05218881e-04 1.34231757e-04 -6.65332653e-03 9.29544937e-03 -1.75321839e-02 2.19325430e-04 -2.41137503e-04 -1.01124921e-04 8.34518149e-03 5.25183836e-03 4.94879992e-03 -1.91006991e-04 6.78582537e-03 -6.50712338e-03 6.63188133e-03 -2.58595459e-04 -1.50120025e-04 -4.08892304e-04 4.16848167e-05 -9.61306618e-04 1.34231757e-04 -5.05218881e-04 - 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 - 0 12 24 36 48 66 86 106 124 144 164 170 180 190 190 200 206 216 226 226 236 254 274 294 308 326 346 366 384 404 424 438 456 476 496 -1 -1 0 496 - 1.46471486e+00 2.54883877e-01 1.24590418e-01 -9.35884290e-03 -2.50681311e-01 2.31073552e-01 2.31073552e-01 -2.31073552e-01 4.55715201e-02 -9.09946312e-02 -9.09946312e-02 9.09946312e-02 2.54883877e-01 1.70428957e+00 -9.34218553e-02 1.65342489e-01 1.29637869e-01 -1.70706534e-01 -1.70706534e-01 1.70706534e-01 -4.68039666e-02 8.78615395e-02 8.78615395e-02 -8.78615395e-02 1.24590418e-01 -9.34218553e-02 1.88920782e-02 -1.20468125e-02 -3.43603397e-02 3.47760262e-02 3.47760262e-02 -3.47760262e-02 8.11017653e-03 -1.51409429e-02 -1.51409429e-02 1.51409429e-02 -9.35884290e-03 1.65342489e-01 -1.20468125e-02 1.72406024e-02 1.90677593e-02 -2.20810865e-02 -2.20810865e-02 2.20810865e-02 -5.48328334e-03 1.08124682e-02 1.08124682e-02 -1.08124682e-02 1.89517553e+00 9.95491140e-02 9.95491140e-02 -9.15785008e-03 -2.53788780e-03 -2.53788780e-03 -2.12388496e-02 -1.19719253e-02 -1.19719253e-02 -1.34997473e-02 -6.86525306e-04 6.86525306e-04 -2.22701900e-02 7.88241731e-03 7.88241731e-03 -6.96401205e-03 -6.65332653e-03 6.65332653e-03 9.95491140e-02 2.04211641e+00 -9.95491140e-02 -2.53788780e-03 -3.88804018e-03 2.53788780e-03 6.78853114e-03 1.78035242e-02 -3.65770659e-03 -9.88504715e-03 1.34997473e-02 6.08947863e-03 1.14201355e-02 -1.00868915e-02 8.24231853e-03 -4.47145138e-03 2.15728427e-03 6.96401205e-03 -6.20170953e-03 -9.29544937e-03 9.95491140e-02 -9.95491140e-02 2.04211641e+00 -2.53788780e-03 2.53788780e-03 -3.88804018e-03 6.78853114e-03 -3.65770659e-03 1.78035242e-02 9.88504715e-03 1.34997473e-02 -1.14201355e-02 -6.08947863e-03 -1.00868915e-02 -4.47145138e-03 8.24231853e-03 -2.15728427e-03 6.96401205e-03 9.29544937e-03 6.20170953e-03 -9.15785008e-03 -2.53788780e-03 -2.53788780e-03 1.79684460e-04 -7.82240681e-05 -7.82240681e-05 4.90771661e-03 3.05324736e-03 3.05324736e-03 3.98965718e-03 -3.80846317e-03 3.80846317e-03 -8.90983131e-05 -1.92416159e-04 -1.92416159e-04 -5.76134452e-04 2.19325430e-04 -2.19325430e-04 -2.53788780e-03 -3.88804018e-03 2.53788780e-03 -7.82240681e-05 2.17480352e-04 7.82240681e-05 -4.88057902e-03 -2.92726385e-03 -2.92421677e-03 8.16061087e-05 -3.98965718e-03 3.98374436e-03 -3.90840983e-03 2.91222329e-04 4.87887308e-05 1.64256895e-04 -1.78094826e-05 5.76134452e-04 -3.17373257e-05 2.41137503e-04 -2.53788780e-03 2.53788780e-03 -3.88804018e-03 -7.82240681e-05 7.82240681e-05 2.17480352e-04 -4.88057902e-03 -2.92421677e-03 -2.92726385e-03 -8.16061087e-05 -3.98965718e-03 3.90840983e-03 -3.98374436e-03 2.91222329e-04 1.64256895e-04 4.87887308e-05 1.78094826e-05 5.76134452e-04 -2.41137503e-04 3.17373257e-05 -2.50681311e-01 1.29637869e-01 -3.43603397e-02 1.90677593e-02 2.55642069e-01 -5.76016724e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 -8.69671403e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 -8.69671403e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 -2.31073552e-01 1.70706534e-01 -3.47760262e-02 2.20810865e-02 -8.69671403e-02 -8.69671403e-02 5.09104100e-01 3.81033730e-02 3.81033730e-02 -1.31876001e-01 4.55715201e-02 -4.68039666e-02 8.11017653e-03 -5.48328334e-03 -5.76016724e-02 1.36360519e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 1.70016634e-02 1.70016634e-02 -1.70016634e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 1.70016634e-02 1.70016634e-02 -1.70016634e-02 9.09946312e-02 -8.78615395e-02 1.51409429e-02 -1.08124682e-02 3.81033730e-02 3.81033730e-02 -1.31876001e-01 -1.70016634e-02 -1.70016634e-02 3.78321204e-02 -2.12388496e-02 6.78853114e-03 6.78853114e-03 4.90771661e-03 -4.88057902e-03 -4.88057902e-03 2.33614448e-01 1.42959316e-01 1.42959316e-01 1.89783463e-01 -1.84466621e-01 1.84466621e-01 -1.02868307e-02 -6.47988162e-03 -6.47988162e-03 -2.78703402e-02 8.34518149e-03 -8.34518149e-03 -1.19719253e-02 1.78035242e-02 -3.65770659e-03 3.05324736e-03 -2.92726385e-03 -2.92421677e-03 1.42959316e-01 8.78151758e-02 8.75173384e-02 -1.05433222e-04 1.16218161e-01 -1.12710131e-01 1.12926204e-01 -6.29096583e-03 -3.94138564e-03 -4.07789392e-03 2.30094432e-05 -1.70670281e-02 5.10344353e-03 -5.25183836e-03 -1.19719253e-02 -3.65770659e-03 1.78035242e-02 3.05324736e-03 -2.92421677e-03 -2.92726385e-03 1.42959316e-01 8.75173384e-02 8.78151758e-02 1.05433222e-04 1.16218161e-01 -1.12926204e-01 1.12710131e-01 -6.29096583e-03 -4.07789392e-03 -3.94138564e-03 -2.30094432e-05 -1.70670281e-02 5.25183836e-03 -5.10344353e-03 -9.88504715e-03 9.88504715e-03 8.16061087e-05 -8.16061087e-05 -1.05433222e-04 1.05433222e-04 1.78440391e-04 -9.58226514e-06 -9.58226514e-06 -1.23324095e-04 1.23324095e-04 -3.89423179e-05 1.91006991e-04 1.91006991e-04 -1.34997473e-02 1.34997473e-02 1.34997473e-02 3.98965718e-03 -3.98965718e-03 -3.98965718e-03 1.89783463e-01 1.16218161e-01 1.16218161e-01 3.67563826e-01 -1.50037001e-01 1.50037001e-01 -8.58346559e-03 -5.25627773e-03 -5.25627773e-03 -3.91967293e-02 6.78582537e-03 -6.78582537e-03 -6.86525306e-04 6.08947863e-03 -1.14201355e-02 -3.80846317e-03 3.98374436e-03 3.90840983e-03 -1.84466621e-01 -1.12710131e-01 -1.12926204e-01 -9.58226514e-06 -1.50037001e-01 1.46241269e-01 -1.45949895e-01 8.49151503e-03 5.01097526e-03 5.01287669e-03 2.09120600e-06 2.20334385e-02 -6.42339379e-03 6.50712338e-03 6.86525306e-04 1.14201355e-02 -6.08947863e-03 3.80846317e-03 -3.90840983e-03 -3.98374436e-03 1.84466621e-01 1.12926204e-01 1.12710131e-01 -9.58226514e-06 1.50037001e-01 -1.45949895e-01 1.46241269e-01 -8.49151503e-03 -5.01287669e-03 -5.01097526e-03 2.09120600e-06 -2.20334385e-02 6.50712338e-03 -6.42339379e-03 -2.22701900e-02 -1.00868915e-02 -1.00868915e-02 -8.90983131e-05 2.91222329e-04 2.91222329e-04 -1.02868307e-02 -6.29096583e-03 -6.29096583e-03 -8.58346559e-03 8.49151503e-03 -8.49151503e-03 9.59486559e-04 1.37774951e-04 1.37774951e-04 1.21596738e-03 -2.58595459e-04 2.58595459e-04 7.88241731e-03 8.24231853e-03 -4.47145138e-03 -1.92416159e-04 4.87887308e-05 1.64256895e-04 -6.47988162e-03 -3.94138564e-03 -4.07789392e-03 -1.23324095e-04 -5.25627773e-03 5.01097526e-03 -5.01287669e-03 1.37774951e-04 3.30152350e-04 1.58824815e-04 2.69138959e-05 7.44624905e-04 -4.19384346e-04 1.50120025e-04 7.88241731e-03 -4.47145138e-03 8.24231853e-03 -1.92416159e-04 1.64256895e-04 4.87887308e-05 -6.47988162e-03 -4.07789392e-03 -3.94138564e-03 1.23324095e-04 -5.25627773e-03 5.01287669e-03 -5.01097526e-03 1.37774951e-04 1.58824815e-04 3.30152350e-04 -2.69138959e-05 7.44624905e-04 -1.50120025e-04 4.19384346e-04 2.15728427e-03 -2.15728427e-03 -1.78094826e-05 1.78094826e-05 2.30094432e-05 -2.30094432e-05 -3.89423179e-05 2.09120600e-06 2.09120600e-06 2.69138959e-05 -2.69138959e-05 8.49865950e-06 -4.16848167e-05 -4.16848167e-05 -6.96401205e-03 6.96401205e-03 6.96401205e-03 -5.76134452e-04 5.76134452e-04 5.76134452e-04 -2.78703402e-02 -1.70670281e-02 -1.70670281e-02 -3.91967293e-02 2.20334385e-02 -2.20334385e-02 1.21596738e-03 7.44624905e-04 7.44624905e-04 4.88351268e-03 -9.61306618e-04 9.61306618e-04 -6.65332653e-03 -6.20170953e-03 9.29544937e-03 2.19325430e-04 -3.17373257e-05 -2.41137503e-04 8.34518149e-03 5.10344353e-03 5.25183836e-03 1.91006991e-04 6.78582537e-03 -6.42339379e-03 6.50712338e-03 -2.58595459e-04 -4.19384346e-04 -1.50120025e-04 -4.16848167e-05 -9.61306618e-04 5.81078995e-04 -1.34231757e-04 6.65332653e-03 -9.29544937e-03 6.20170953e-03 -2.19325430e-04 2.41137503e-04 3.17373257e-05 -8.34518149e-03 -5.25183836e-03 -5.10344353e-03 1.91006991e-04 -6.78582537e-03 6.50712338e-03 -6.42339379e-03 2.58595459e-04 1.50120025e-04 4.19384346e-04 -4.16848167e-05 9.61306618e-04 -1.34231757e-04 5.81078995e-04 - 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 - 0 12 24 36 48 66 86 106 124 144 164 170 180 190 190 200 206 216 226 226 236 254 274 294 308 326 346 366 384 404 424 438 456 476 496 -1 -1 1 496 - -4.46730500e-01 2.90265885e-01 -6.65919095e-02 3.20736205e-02 -2.50681311e-01 -2.31073552e-01 -2.31073552e-01 2.31073552e-01 4.55715201e-02 9.09946312e-02 9.09946312e-02 -9.09946312e-02 2.90265885e-01 -7.77208948e-02 3.49623849e-02 -1.81562170e-02 1.29637869e-01 1.70706534e-01 1.70706534e-01 -1.70706534e-01 -4.68039666e-02 -8.78615395e-02 -8.78615395e-02 8.78615395e-02 -6.65919095e-02 3.49623849e-02 -8.97965282e-03 4.90391018e-03 -3.43603397e-02 -3.47760262e-02 -3.47760262e-02 3.47760262e-02 8.11017653e-03 1.51409429e-02 1.51409429e-02 -1.51409429e-02 3.20736205e-02 -1.81562170e-02 4.90391018e-03 -2.40214415e-03 1.90677593e-02 2.20810865e-02 2.20810865e-02 -2.20810865e-02 -5.48328334e-03 -1.08124682e-02 -1.08124682e-02 1.08124682e-02 -9.61307016e-02 -9.95491140e-02 -9.95491140e-02 3.84928096e-03 2.53788780e-03 2.53788780e-03 4.96626145e-03 1.19719253e-02 1.19719253e-02 1.34997473e-02 6.86525306e-04 -6.86525306e-04 7.75107441e-03 -7.88241731e-03 -7.88241731e-03 6.96401205e-03 6.65332653e-03 -6.65332653e-03 -9.95491140e-02 5.08101702e-02 9.95491140e-02 2.53788780e-03 9.11909087e-03 -2.53788780e-03 -6.78853114e-03 1.75623651e-03 3.65770659e-03 9.88504715e-03 -1.34997473e-02 2.68064379e-02 -1.14201355e-02 1.00868915e-02 -1.01418763e-02 4.47145138e-03 -2.15728427e-03 -6.96401205e-03 1.75321839e-02 9.29544937e-03 -9.95491140e-02 9.95491140e-02 5.08101702e-02 2.53788780e-03 -2.53788780e-03 9.11909087e-03 -6.78853114e-03 3.65770659e-03 1.75623651e-03 -9.88504715e-03 -1.34997473e-02 1.14201355e-02 -2.68064379e-02 1.00868915e-02 4.47145138e-03 -1.01418763e-02 2.15728427e-03 -6.96401205e-03 -9.29544937e-03 -1.75321839e-02 3.84928096e-03 2.53788780e-03 2.53788780e-03 -1.26047298e-04 7.82240681e-05 7.82240681e-05 -4.95769243e-03 -3.05324736e-03 -3.05324736e-03 -3.98965718e-03 3.80846317e-03 -3.80846317e-03 7.89606128e-05 1.92416159e-04 1.92416159e-04 5.76134452e-04 -2.19325430e-04 2.19325430e-04 2.53788780e-03 9.11909087e-03 -2.53788780e-03 7.82240681e-05 -8.82514067e-05 -7.82240681e-05 4.88057902e-03 3.11404071e-03 2.92421677e-03 -8.16061087e-05 3.98965718e-03 -3.81554628e-03 3.90840983e-03 -2.91222329e-04 -5.41259230e-05 -1.64256895e-04 1.78094826e-05 -5.76134452e-04 1.01124921e-04 -2.41137503e-04 2.53788780e-03 -2.53788780e-03 9.11909087e-03 7.82240681e-05 -7.82240681e-05 -8.82514067e-05 4.88057902e-03 2.92421677e-03 3.11404071e-03 8.16061087e-05 3.98965718e-03 -3.90840983e-03 3.81554628e-03 -2.91222329e-04 -1.64256895e-04 -5.41259230e-05 -1.78094826e-05 -5.76134452e-04 2.41137503e-04 -1.01124921e-04 -2.50681311e-01 1.29637869e-01 -3.43603397e-02 1.90677593e-02 2.55642069e-01 -5.76016724e-02 -2.31073552e-01 1.70706534e-01 -3.47760262e-02 2.20810865e-02 -8.69671403e-02 -8.69671403e-02 8.69671403e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 -2.31073552e-01 1.70706534e-01 -3.47760262e-02 2.20810865e-02 -8.69671403e-02 -8.69671403e-02 8.69671403e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 3.35169819e-01 -3.81033730e-02 -3.81033730e-02 -5.56692551e-02 4.55715201e-02 -4.68039666e-02 8.11017653e-03 -5.48328334e-03 -5.76016724e-02 1.36360519e-02 9.09946312e-02 -8.78615395e-02 1.51409429e-02 -1.08124682e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 -1.70016634e-02 -1.70016634e-02 1.70016634e-02 9.09946312e-02 -8.78615395e-02 1.51409429e-02 -1.08124682e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 -1.70016634e-02 -1.70016634e-02 1.70016634e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 -5.56692551e-02 1.70016634e-02 1.70016634e-02 3.82879364e-03 4.96626145e-03 -6.78853114e-03 -6.78853114e-03 -4.95769243e-03 4.88057902e-03 4.88057902e-03 -2.33214382e-01 -1.42959316e-01 -1.42959316e-01 -1.89783463e-01 1.84466621e-01 -1.84466621e-01 1.05548787e-02 6.47988162e-03 6.47988162e-03 2.78703402e-02 -8.34518149e-03 8.34518149e-03 1.19719253e-02 1.75623651e-03 3.65770659e-03 -3.05324736e-03 3.11404071e-03 2.92421677e-03 -1.42959316e-01 -8.74686860e-02 -8.75173384e-02 1.05433222e-04 -1.16218161e-01 1.13119631e-01 -1.12926204e-01 6.29096583e-03 3.92293329e-03 4.07789392e-03 -2.30094432e-05 1.70670281e-02 -4.94879992e-03 5.25183836e-03 1.19719253e-02 3.65770659e-03 1.75623651e-03 -3.05324736e-03 2.92421677e-03 3.11404071e-03 -1.42959316e-01 -8.75173384e-02 -8.74686860e-02 -1.05433222e-04 -1.16218161e-01 1.12926204e-01 -1.13119631e-01 6.29096583e-03 4.07789392e-03 3.92293329e-03 2.30094432e-05 1.70670281e-02 -5.25183836e-03 4.94879992e-03 9.88504715e-03 -9.88504715e-03 -8.16061087e-05 8.16061087e-05 1.05433222e-04 -1.05433222e-04 -1.78440391e-04 9.58226514e-06 9.58226514e-06 1.23324095e-04 -1.23324095e-04 3.89423179e-05 -1.91006991e-04 -1.91006991e-04 1.34997473e-02 -1.34997473e-02 -1.34997473e-02 -3.98965718e-03 3.98965718e-03 3.98965718e-03 -1.89783463e-01 -1.16218161e-01 -1.16218161e-01 5.86189719e-02 1.50037001e-01 -1.50037001e-01 8.58346559e-03 5.25627773e-03 5.25627773e-03 5.74991859e-03 -6.78582537e-03 6.78582537e-03 6.86525306e-04 2.68064379e-02 1.14201355e-02 3.80846317e-03 -3.81554628e-03 -3.90840983e-03 1.84466621e-01 1.13119631e-01 1.12926204e-01 9.58226514e-06 1.50037001e-01 -1.45660580e-01 1.45949895e-01 -8.49151503e-03 -5.04126819e-03 -5.01287669e-03 -2.09120600e-06 -2.20334385e-02 6.63188133e-03 -6.50712338e-03 -6.86525306e-04 -1.14201355e-02 -2.68064379e-02 -3.80846317e-03 3.90840983e-03 3.81554628e-03 -1.84466621e-01 -1.12926204e-01 -1.13119631e-01 9.58226514e-06 -1.50037001e-01 1.45949895e-01 -1.45660580e-01 8.49151503e-03 5.01287669e-03 5.04126819e-03 -2.09120600e-06 2.20334385e-02 -6.50712338e-03 6.63188133e-03 7.75107441e-03 1.00868915e-02 1.00868915e-02 7.89606128e-05 -2.91222329e-04 -2.91222329e-04 1.05548787e-02 6.29096583e-03 6.29096583e-03 8.58346559e-03 -8.49151503e-03 8.49151503e-03 -7.68391652e-04 -1.37774951e-04 -1.37774951e-04 -1.21596738e-03 2.58595459e-04 -2.58595459e-04 -7.88241731e-03 -1.01418763e-02 4.47145138e-03 1.92416159e-04 -5.41259230e-05 -1.64256895e-04 6.47988162e-03 3.92293329e-03 4.07789392e-03 1.23324095e-04 5.25627773e-03 -5.04126819e-03 5.01287669e-03 -1.37774951e-04 -3.28425304e-04 -1.58824815e-04 -2.69138959e-05 -7.44624905e-04 4.08892304e-04 -1.50120025e-04 -7.88241731e-03 4.47145138e-03 -1.01418763e-02 1.92416159e-04 -1.64256895e-04 -5.41259230e-05 6.47988162e-03 4.07789392e-03 3.92293329e-03 -1.23324095e-04 5.25627773e-03 -5.01287669e-03 5.04126819e-03 -1.37774951e-04 -1.58824815e-04 -3.28425304e-04 2.69138959e-05 -7.44624905e-04 1.50120025e-04 -4.08892304e-04 -2.15728427e-03 2.15728427e-03 1.78094826e-05 -1.78094826e-05 -2.30094432e-05 2.30094432e-05 3.89423179e-05 -2.09120600e-06 -2.09120600e-06 -2.69138959e-05 2.69138959e-05 -8.49865950e-06 4.16848167e-05 4.16848167e-05 6.96401205e-03 -6.96401205e-03 -6.96401205e-03 5.76134452e-04 -5.76134452e-04 -5.76134452e-04 2.78703402e-02 1.70670281e-02 1.70670281e-02 5.74991859e-03 -2.20334385e-02 2.20334385e-02 -1.21596738e-03 -7.44624905e-04 -7.44624905e-04 -2.25860819e-03 9.61306618e-04 -9.61306618e-04 6.65332653e-03 1.75321839e-02 -9.29544937e-03 -2.19325430e-04 1.01124921e-04 2.41137503e-04 -8.34518149e-03 -4.94879992e-03 -5.25183836e-03 -1.91006991e-04 -6.78582537e-03 6.63188133e-03 -6.50712338e-03 2.58595459e-04 4.08892304e-04 1.50120025e-04 4.16848167e-05 9.61306618e-04 -5.05218881e-04 1.34231757e-04 -6.65332653e-03 9.29544937e-03 -1.75321839e-02 2.19325430e-04 -2.41137503e-04 -1.01124921e-04 8.34518149e-03 5.25183836e-03 4.94879992e-03 -1.91006991e-04 6.78582537e-03 -6.50712338e-03 6.63188133e-03 -2.58595459e-04 -1.50120025e-04 -4.08892304e-04 4.16848167e-05 -9.61306618e-04 1.34231757e-04 -5.05218881e-04 - 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 - 0 12 24 36 48 66 86 106 124 144 164 170 180 190 190 200 206 216 226 226 236 254 274 294 308 326 346 366 384 404 424 438 456 476 496 -1 -1 2 496 - 1.46471486e+00 2.54883877e-01 1.24590418e-01 -9.35884290e-03 -2.50681311e-01 2.31073552e-01 2.31073552e-01 -2.31073552e-01 4.55715201e-02 -9.09946312e-02 -9.09946312e-02 9.09946312e-02 2.54883877e-01 1.70428957e+00 -9.34218553e-02 1.65342489e-01 1.29637869e-01 -1.70706534e-01 -1.70706534e-01 1.70706534e-01 -4.68039666e-02 8.78615395e-02 8.78615395e-02 -8.78615395e-02 1.24590418e-01 -9.34218553e-02 1.88920782e-02 -1.20468125e-02 -3.43603397e-02 3.47760262e-02 3.47760262e-02 -3.47760262e-02 8.11017653e-03 -1.51409429e-02 -1.51409429e-02 1.51409429e-02 -9.35884290e-03 1.65342489e-01 -1.20468125e-02 1.72406024e-02 1.90677593e-02 -2.20810865e-02 -2.20810865e-02 2.20810865e-02 -5.48328334e-03 1.08124682e-02 1.08124682e-02 -1.08124682e-02 1.89517553e+00 9.95491140e-02 9.95491140e-02 -9.15785008e-03 -2.53788780e-03 -2.53788780e-03 -2.12388496e-02 -1.19719253e-02 -1.19719253e-02 -1.34997473e-02 -6.86525306e-04 6.86525306e-04 -2.22701900e-02 7.88241731e-03 7.88241731e-03 -6.96401205e-03 -6.65332653e-03 6.65332653e-03 9.95491140e-02 2.04211641e+00 -9.95491140e-02 -2.53788780e-03 -3.88804018e-03 2.53788780e-03 6.78853114e-03 1.78035242e-02 -3.65770659e-03 -9.88504715e-03 1.34997473e-02 6.08947863e-03 1.14201355e-02 -1.00868915e-02 8.24231853e-03 -4.47145138e-03 2.15728427e-03 6.96401205e-03 -6.20170953e-03 -9.29544937e-03 9.95491140e-02 -9.95491140e-02 2.04211641e+00 -2.53788780e-03 2.53788780e-03 -3.88804018e-03 6.78853114e-03 -3.65770659e-03 1.78035242e-02 9.88504715e-03 1.34997473e-02 -1.14201355e-02 -6.08947863e-03 -1.00868915e-02 -4.47145138e-03 8.24231853e-03 -2.15728427e-03 6.96401205e-03 9.29544937e-03 6.20170953e-03 -9.15785008e-03 -2.53788780e-03 -2.53788780e-03 1.79684460e-04 -7.82240681e-05 -7.82240681e-05 4.90771661e-03 3.05324736e-03 3.05324736e-03 3.98965718e-03 -3.80846317e-03 3.80846317e-03 -8.90983131e-05 -1.92416159e-04 -1.92416159e-04 -5.76134452e-04 2.19325430e-04 -2.19325430e-04 -2.53788780e-03 -3.88804018e-03 2.53788780e-03 -7.82240681e-05 2.17480352e-04 7.82240681e-05 -4.88057902e-03 -2.92726385e-03 -2.92421677e-03 8.16061087e-05 -3.98965718e-03 3.98374436e-03 -3.90840983e-03 2.91222329e-04 4.87887308e-05 1.64256895e-04 -1.78094826e-05 5.76134452e-04 -3.17373257e-05 2.41137503e-04 -2.53788780e-03 2.53788780e-03 -3.88804018e-03 -7.82240681e-05 7.82240681e-05 2.17480352e-04 -4.88057902e-03 -2.92421677e-03 -2.92726385e-03 -8.16061087e-05 -3.98965718e-03 3.90840983e-03 -3.98374436e-03 2.91222329e-04 1.64256895e-04 4.87887308e-05 1.78094826e-05 5.76134452e-04 -2.41137503e-04 3.17373257e-05 -2.50681311e-01 1.29637869e-01 -3.43603397e-02 1.90677593e-02 2.55642069e-01 -5.76016724e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 -8.69671403e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 -8.69671403e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 -2.31073552e-01 1.70706534e-01 -3.47760262e-02 2.20810865e-02 -8.69671403e-02 -8.69671403e-02 5.09104100e-01 3.81033730e-02 3.81033730e-02 -1.31876001e-01 4.55715201e-02 -4.68039666e-02 8.11017653e-03 -5.48328334e-03 -5.76016724e-02 1.36360519e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 1.70016634e-02 1.70016634e-02 -1.70016634e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 1.70016634e-02 1.70016634e-02 -1.70016634e-02 9.09946312e-02 -8.78615395e-02 1.51409429e-02 -1.08124682e-02 3.81033730e-02 3.81033730e-02 -1.31876001e-01 -1.70016634e-02 -1.70016634e-02 3.78321204e-02 -2.12388496e-02 6.78853114e-03 6.78853114e-03 4.90771661e-03 -4.88057902e-03 -4.88057902e-03 2.33614448e-01 1.42959316e-01 1.42959316e-01 1.89783463e-01 -1.84466621e-01 1.84466621e-01 -1.02868307e-02 -6.47988162e-03 -6.47988162e-03 -2.78703402e-02 8.34518149e-03 -8.34518149e-03 -1.19719253e-02 1.78035242e-02 -3.65770659e-03 3.05324736e-03 -2.92726385e-03 -2.92421677e-03 1.42959316e-01 8.78151758e-02 8.75173384e-02 -1.05433222e-04 1.16218161e-01 -1.12710131e-01 1.12926204e-01 -6.29096583e-03 -3.94138564e-03 -4.07789392e-03 2.30094432e-05 -1.70670281e-02 5.10344353e-03 -5.25183836e-03 -1.19719253e-02 -3.65770659e-03 1.78035242e-02 3.05324736e-03 -2.92421677e-03 -2.92726385e-03 1.42959316e-01 8.75173384e-02 8.78151758e-02 1.05433222e-04 1.16218161e-01 -1.12926204e-01 1.12710131e-01 -6.29096583e-03 -4.07789392e-03 -3.94138564e-03 -2.30094432e-05 -1.70670281e-02 5.25183836e-03 -5.10344353e-03 -9.88504715e-03 9.88504715e-03 8.16061087e-05 -8.16061087e-05 -1.05433222e-04 1.05433222e-04 1.78440391e-04 -9.58226514e-06 -9.58226514e-06 -1.23324095e-04 1.23324095e-04 -3.89423179e-05 1.91006991e-04 1.91006991e-04 -1.34997473e-02 1.34997473e-02 1.34997473e-02 3.98965718e-03 -3.98965718e-03 -3.98965718e-03 1.89783463e-01 1.16218161e-01 1.16218161e-01 3.67563826e-01 -1.50037001e-01 1.50037001e-01 -8.58346559e-03 -5.25627773e-03 -5.25627773e-03 -3.91967293e-02 6.78582537e-03 -6.78582537e-03 -6.86525306e-04 6.08947863e-03 -1.14201355e-02 -3.80846317e-03 3.98374436e-03 3.90840983e-03 -1.84466621e-01 -1.12710131e-01 -1.12926204e-01 -9.58226514e-06 -1.50037001e-01 1.46241269e-01 -1.45949895e-01 8.49151503e-03 5.01097526e-03 5.01287669e-03 2.09120600e-06 2.20334385e-02 -6.42339379e-03 6.50712338e-03 6.86525306e-04 1.14201355e-02 -6.08947863e-03 3.80846317e-03 -3.90840983e-03 -3.98374436e-03 1.84466621e-01 1.12926204e-01 1.12710131e-01 -9.58226514e-06 1.50037001e-01 -1.45949895e-01 1.46241269e-01 -8.49151503e-03 -5.01287669e-03 -5.01097526e-03 2.09120600e-06 -2.20334385e-02 6.50712338e-03 -6.42339379e-03 -2.22701900e-02 -1.00868915e-02 -1.00868915e-02 -8.90983131e-05 2.91222329e-04 2.91222329e-04 -1.02868307e-02 -6.29096583e-03 -6.29096583e-03 -8.58346559e-03 8.49151503e-03 -8.49151503e-03 9.59486559e-04 1.37774951e-04 1.37774951e-04 1.21596738e-03 -2.58595459e-04 2.58595459e-04 7.88241731e-03 8.24231853e-03 -4.47145138e-03 -1.92416159e-04 4.87887308e-05 1.64256895e-04 -6.47988162e-03 -3.94138564e-03 -4.07789392e-03 -1.23324095e-04 -5.25627773e-03 5.01097526e-03 -5.01287669e-03 1.37774951e-04 3.30152350e-04 1.58824815e-04 2.69138959e-05 7.44624905e-04 -4.19384346e-04 1.50120025e-04 7.88241731e-03 -4.47145138e-03 8.24231853e-03 -1.92416159e-04 1.64256895e-04 4.87887308e-05 -6.47988162e-03 -4.07789392e-03 -3.94138564e-03 1.23324095e-04 -5.25627773e-03 5.01287669e-03 -5.01097526e-03 1.37774951e-04 1.58824815e-04 3.30152350e-04 -2.69138959e-05 7.44624905e-04 -1.50120025e-04 4.19384346e-04 2.15728427e-03 -2.15728427e-03 -1.78094826e-05 1.78094826e-05 2.30094432e-05 -2.30094432e-05 -3.89423179e-05 2.09120600e-06 2.09120600e-06 2.69138959e-05 -2.69138959e-05 8.49865950e-06 -4.16848167e-05 -4.16848167e-05 -6.96401205e-03 6.96401205e-03 6.96401205e-03 -5.76134452e-04 5.76134452e-04 5.76134452e-04 -2.78703402e-02 -1.70670281e-02 -1.70670281e-02 -3.91967293e-02 2.20334385e-02 -2.20334385e-02 1.21596738e-03 7.44624905e-04 7.44624905e-04 4.88351268e-03 -9.61306618e-04 9.61306618e-04 -6.65332653e-03 -6.20170953e-03 9.29544937e-03 2.19325430e-04 -3.17373257e-05 -2.41137503e-04 8.34518149e-03 5.10344353e-03 5.25183836e-03 1.91006991e-04 6.78582537e-03 -6.42339379e-03 6.50712338e-03 -2.58595459e-04 -4.19384346e-04 -1.50120025e-04 -4.16848167e-05 -9.61306618e-04 5.81078995e-04 -1.34231757e-04 6.65332653e-03 -9.29544937e-03 6.20170953e-03 -2.19325430e-04 2.41137503e-04 3.17373257e-05 -8.34518149e-03 -5.25183836e-03 -5.10344353e-03 1.91006991e-04 -6.78582537e-03 6.50712338e-03 -6.42339379e-03 2.58595459e-04 1.50120025e-04 4.19384346e-04 -4.16848167e-05 9.61306618e-04 -1.34231757e-04 5.81078995e-04 - 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 - 0 12 24 36 48 66 86 106 124 144 164 170 180 190 190 200 206 216 226 226 236 254 274 294 308 326 346 366 384 404 424 438 456 476 496 -1 0 -2 496 - -1.30077665e+00 -3.97979828e-02 -1.21755678e-01 3.00506476e-02 2.50681311e-01 -2.31073552e-01 -2.31073552e-01 2.31073552e-01 -4.55715201e-02 9.09946312e-02 9.09946312e-02 -9.09946312e-02 -3.97979828e-02 -1.15126664e+00 8.95185576e-02 -1.01048380e-01 -1.29637869e-01 1.70706534e-01 1.70706534e-01 -1.70706534e-01 4.68039666e-02 -8.78615395e-02 -8.78615395e-02 8.78615395e-02 -1.21755678e-01 8.95185576e-02 -1.86285298e-02 1.13591275e-02 3.43603397e-02 -3.47760262e-02 -3.47760262e-02 3.47760262e-02 -8.11017653e-03 1.51409429e-02 1.51409429e-02 -1.51409429e-02 3.00506476e-02 -1.01048380e-01 1.13591275e-02 -9.53400814e-03 -1.90677593e-02 2.20810865e-02 2.20810865e-02 -2.20810865e-02 5.48328334e-03 -1.08124682e-02 -1.08124682e-02 1.08124682e-02 -1.32837516e+00 -9.95491140e-02 -9.95491140e-02 3.64581589e-03 2.53788780e-03 2.53788780e-03 2.60203672e-02 1.19719253e-02 1.19719253e-02 1.34997473e-02 6.86525306e-04 -6.86525306e-04 2.30528378e-02 -7.88241731e-03 -7.88241731e-03 6.96401205e-03 6.65332653e-03 -6.65332653e-03 -9.95491140e-02 -1.47531604e+00 9.95491140e-02 2.53788780e-03 -1.62399402e-03 -2.53788780e-03 -6.78853114e-03 -2.07315938e-02 3.65770659e-03 9.88504715e-03 -1.34997473e-02 -2.30935703e-03 -1.14201355e-02 1.00868915e-02 -8.72159043e-03 4.47145138e-03 -2.15728427e-03 -6.96401205e-03 6.82044689e-03 9.29544937e-03 -9.95491140e-02 9.95491140e-02 -1.47531604e+00 2.53788780e-03 -2.53788780e-03 -1.62399402e-03 -6.78853114e-03 3.65770659e-03 -2.07315938e-02 -9.88504715e-03 -1.34997473e-02 1.14201355e-02 2.30935703e-03 1.00868915e-02 4.47145138e-03 -8.72159043e-03 2.15728427e-03 -6.96401205e-03 -9.29544937e-03 -6.82044689e-03 3.64581589e-03 2.53788780e-03 2.53788780e-03 -1.26080894e-04 7.82240681e-05 7.82240681e-05 -4.95421603e-03 -3.05324736e-03 -3.05324736e-03 -3.98965718e-03 3.80846317e-03 -3.80846317e-03 8.14872011e-05 1.92416159e-04 1.92416159e-04 5.76134452e-04 -2.19325430e-04 2.19325430e-04 2.53788780e-03 -1.62399402e-03 -2.53788780e-03 7.82240681e-05 -1.63876786e-04 -7.82240681e-05 4.88057902e-03 2.95573881e-03 2.92421677e-03 -8.16061087e-05 3.98965718e-03 -4.02050538e-03 3.90840983e-03 -2.91222329e-04 -4.41278956e-05 -1.64256895e-04 1.78094826e-05 -5.76134452e-04 2.57202134e-05 -2.41137503e-04 2.53788780e-03 -2.53788780e-03 -1.62399402e-03 7.82240681e-05 -7.82240681e-05 -1.63876786e-04 4.88057902e-03 2.92421677e-03 2.95573881e-03 8.16061087e-05 3.98965718e-03 -3.90840983e-03 4.02050538e-03 -2.91222329e-04 -1.64256895e-04 -4.41278956e-05 -1.78094826e-05 -5.76134452e-04 2.41137503e-04 -2.57202134e-05 2.50681311e-01 -1.29637869e-01 3.43603397e-02 -1.90677593e-02 -2.55642069e-01 5.76016724e-02 -2.31073552e-01 1.70706534e-01 -3.47760262e-02 2.20810865e-02 -8.69671403e-02 -8.69671403e-02 8.69671403e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 -2.31073552e-01 1.70706534e-01 -3.47760262e-02 2.20810865e-02 -8.69671403e-02 -8.69671403e-02 8.69671403e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 -5.09104100e-01 -3.81033730e-02 -3.81033730e-02 1.31876001e-01 -4.55715201e-02 4.68039666e-02 -8.11017653e-03 5.48328334e-03 5.76016724e-02 -1.36360519e-02 9.09946312e-02 -8.78615395e-02 1.51409429e-02 -1.08124682e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 -1.70016634e-02 -1.70016634e-02 1.70016634e-02 9.09946312e-02 -8.78615395e-02 1.51409429e-02 -1.08124682e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 -1.70016634e-02 -1.70016634e-02 1.70016634e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 1.31876001e-01 1.70016634e-02 1.70016634e-02 -3.78321204e-02 2.60203672e-02 -6.78853114e-03 -6.78853114e-03 -4.95421603e-03 4.88057902e-03 4.88057902e-03 -2.33574112e-01 -1.42959316e-01 -1.42959316e-01 -1.89783463e-01 1.84466621e-01 -1.84466621e-01 1.02934331e-02 6.47988162e-03 6.47988162e-03 2.78703402e-02 -8.34518149e-03 8.34518149e-03 1.19719253e-02 -2.07315938e-02 3.65770659e-03 -3.05324736e-03 2.95573881e-03 2.92421677e-03 -1.42959316e-01 -8.78000495e-02 -8.75173384e-02 1.05433222e-04 -1.16218161e-01 1.12690603e-01 -1.12926204e-01 6.29096583e-03 3.94386154e-03 4.07789392e-03 -2.30094432e-05 1.70670281e-02 -5.10663990e-03 5.25183836e-03 1.19719253e-02 3.65770659e-03 -2.07315938e-02 -3.05324736e-03 2.92421677e-03 2.95573881e-03 -1.42959316e-01 -8.75173384e-02 -8.78000495e-02 -1.05433222e-04 -1.16218161e-01 1.12926204e-01 -1.12690603e-01 6.29096583e-03 4.07789392e-03 3.94386154e-03 2.30094432e-05 1.70670281e-02 -5.25183836e-03 5.10663990e-03 9.88504715e-03 -9.88504715e-03 -8.16061087e-05 8.16061087e-05 1.05433222e-04 -1.05433222e-04 -1.78440391e-04 9.58226514e-06 9.58226514e-06 1.23324095e-04 -1.23324095e-04 3.89423179e-05 -1.91006991e-04 -1.91006991e-04 1.34997473e-02 -1.34997473e-02 -1.34997473e-02 -3.98965718e-03 3.98965718e-03 3.98965718e-03 -1.89783463e-01 -1.16218161e-01 -1.16218161e-01 5.86189719e-02 1.50037001e-01 -1.50037001e-01 8.58346559e-03 5.25627773e-03 5.25627773e-03 5.74991859e-03 -6.78582537e-03 6.78582537e-03 6.86525306e-04 -2.30935703e-03 1.14201355e-02 3.80846317e-03 -4.02050538e-03 -3.90840983e-03 1.84466621e-01 1.12690603e-01 1.12926204e-01 9.58226514e-06 1.50037001e-01 -1.46216058e-01 1.45949895e-01 -8.49151503e-03 -5.01417164e-03 -5.01287669e-03 -2.09120600e-06 -2.20334385e-02 6.42752029e-03 -6.50712338e-03 -6.86525306e-04 -1.14201355e-02 2.30935703e-03 -3.80846317e-03 3.90840983e-03 4.02050538e-03 -1.84466621e-01 -1.12926204e-01 -1.12690603e-01 9.58226514e-06 -1.50037001e-01 1.45949895e-01 -1.46216058e-01 8.49151503e-03 5.01287669e-03 5.01417164e-03 -2.09120600e-06 2.20334385e-02 -6.50712338e-03 6.42752029e-03 2.30528378e-02 1.00868915e-02 1.00868915e-02 8.14872011e-05 -2.91222329e-04 -2.91222329e-04 1.02934331e-02 6.29096583e-03 6.29096583e-03 8.58346559e-03 -8.49151503e-03 8.49151503e-03 -9.58405865e-04 -1.37774951e-04 -1.37774951e-04 -1.21596738e-03 2.58595459e-04 -2.58595459e-04 -7.88241731e-03 -8.72159043e-03 4.47145138e-03 1.92416159e-04 -4.41278956e-05 -1.64256895e-04 6.47988162e-03 3.94386154e-03 4.07789392e-03 1.23324095e-04 5.25627773e-03 -5.01417164e-03 5.01287669e-03 -1.37774951e-04 -3.29747090e-04 -1.58824815e-04 -2.69138959e-05 -7.44624905e-04 4.18861158e-04 -1.50120025e-04 -7.88241731e-03 4.47145138e-03 -8.72159043e-03 1.92416159e-04 -1.64256895e-04 -4.41278956e-05 6.47988162e-03 4.07789392e-03 3.94386154e-03 -1.23324095e-04 5.25627773e-03 -5.01287669e-03 5.01417164e-03 -1.37774951e-04 -1.58824815e-04 -3.29747090e-04 2.69138959e-05 -7.44624905e-04 1.50120025e-04 -4.18861158e-04 -2.15728427e-03 2.15728427e-03 1.78094826e-05 -1.78094826e-05 -2.30094432e-05 2.30094432e-05 3.89423179e-05 -2.09120600e-06 -2.09120600e-06 -2.69138959e-05 2.69138959e-05 -8.49865950e-06 4.16848167e-05 4.16848167e-05 6.96401205e-03 -6.96401205e-03 -6.96401205e-03 5.76134452e-04 -5.76134452e-04 -5.76134452e-04 2.78703402e-02 1.70670281e-02 1.70670281e-02 5.74991859e-03 -2.20334385e-02 2.20334385e-02 -1.21596738e-03 -7.44624905e-04 -7.44624905e-04 -2.25860819e-03 9.61306618e-04 -9.61306618e-04 6.65332653e-03 6.82044689e-03 -9.29544937e-03 -2.19325430e-04 2.57202134e-05 2.41137503e-04 -8.34518149e-03 -5.10663990e-03 -5.25183836e-03 -1.91006991e-04 -6.78582537e-03 6.42752029e-03 -6.50712338e-03 2.58595459e-04 4.18861158e-04 1.50120025e-04 4.16848167e-05 9.61306618e-04 -5.80403562e-04 1.34231757e-04 -6.65332653e-03 9.29544937e-03 -6.82044689e-03 2.19325430e-04 -2.41137503e-04 -2.57202134e-05 8.34518149e-03 5.25183836e-03 5.10663990e-03 -1.91006991e-04 6.78582537e-03 -6.50712338e-03 6.42752029e-03 -2.58595459e-04 -1.50120025e-04 -4.18861158e-04 4.16848167e-05 -9.61306618e-04 1.34231757e-04 -5.80403562e-04 - 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 - 0 12 24 36 48 66 86 106 124 144 164 170 180 190 190 200 206 216 226 226 236 254 274 294 308 326 346 366 384 404 424 438 456 476 496 -1 0 -1 496 - 6.10668701e-01 -7.51799909e-02 6.94266500e-02 -1.13818158e-02 2.50681311e-01 2.31073552e-01 2.31073552e-01 -2.31073552e-01 -4.55715201e-02 -9.09946312e-02 -9.09946312e-02 9.09946312e-02 -7.51799909e-02 6.30743818e-01 -3.88656825e-02 8.24503254e-02 -1.29637869e-01 -1.70706534e-01 -1.70706534e-01 1.70706534e-01 4.68039666e-02 8.78615395e-02 8.78615395e-02 -8.78615395e-02 6.94266500e-02 -3.88656825e-02 9.24320123e-03 -5.59159516e-03 3.43603397e-02 3.47760262e-02 3.47760262e-02 -3.47760262e-02 -8.11017653e-03 -1.51409429e-02 -1.51409429e-02 1.51409429e-02 -1.13818158e-02 8.24503254e-02 -5.59159516e-03 1.01087384e-02 -1.90677593e-02 -2.20810865e-02 -2.20810865e-02 2.20810865e-02 5.48328334e-03 1.08124682e-02 1.08124682e-02 -1.08124682e-02 6.62931071e-01 9.95491140e-02 9.95491140e-02 -9.36131516e-03 -2.53788780e-03 -2.53788780e-03 -1.84743808e-04 -1.19719253e-02 -1.19719253e-02 -1.34997473e-02 -6.86525306e-04 6.86525306e-04 -6.96842667e-03 7.88241731e-03 7.88241731e-03 -6.96401205e-03 -6.65332653e-03 6.65332653e-03 9.95491140e-02 5.15990200e-01 -9.95491140e-02 -2.53788780e-03 -1.46311251e-02 2.53788780e-03 6.78853114e-03 -4.68430612e-03 -3.65770659e-03 -9.88504715e-03 1.34997473e-02 -2.30263163e-02 1.14201355e-02 -1.00868915e-02 9.66260440e-03 -4.47145138e-03 2.15728427e-03 6.96401205e-03 -1.69134466e-02 -9.29544937e-03 9.95491140e-02 -9.95491140e-02 5.15990200e-01 -2.53788780e-03 2.53788780e-03 -1.46311251e-02 6.78853114e-03 -3.65770659e-03 -4.68430612e-03 9.88504715e-03 1.34997473e-02 -1.14201355e-02 2.30263163e-02 -1.00868915e-02 -4.47145138e-03 9.66260440e-03 -2.15728427e-03 6.96401205e-03 9.29544937e-03 1.69134466e-02 -9.36131516e-03 -2.53788780e-03 -2.53788780e-03 1.79650864e-04 -7.82240681e-05 -7.82240681e-05 4.91119301e-03 3.05324736e-03 3.05324736e-03 3.98965718e-03 -3.80846317e-03 3.80846317e-03 -8.65717248e-05 -1.92416159e-04 -1.92416159e-04 -5.76134452e-04 2.19325430e-04 -2.19325430e-04 -2.53788780e-03 -1.46311251e-02 2.53788780e-03 -7.82240681e-05 1.41854973e-04 7.82240681e-05 -4.88057902e-03 -3.08556574e-03 -2.92421677e-03 8.16061087e-05 -3.98965718e-03 3.77878526e-03 -3.90840983e-03 2.91222329e-04 5.87867582e-05 1.64256895e-04 -1.78094826e-05 5.76134452e-04 -1.07142033e-04 2.41137503e-04 -2.53788780e-03 2.53788780e-03 -1.46311251e-02 -7.82240681e-05 7.82240681e-05 1.41854973e-04 -4.88057902e-03 -2.92421677e-03 -3.08556574e-03 -8.16061087e-05 -3.98965718e-03 3.90840983e-03 -3.77878526e-03 2.91222329e-04 1.64256895e-04 5.87867582e-05 1.78094826e-05 5.76134452e-04 -2.41137503e-04 1.07142033e-04 2.50681311e-01 -1.29637869e-01 3.43603397e-02 -1.90677593e-02 -2.55642069e-01 5.76016724e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 -8.69671403e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 -8.69671403e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 -2.31073552e-01 1.70706534e-01 -3.47760262e-02 2.20810865e-02 -8.69671403e-02 -8.69671403e-02 -3.35169819e-01 3.81033730e-02 3.81033730e-02 5.56692551e-02 -4.55715201e-02 4.68039666e-02 -8.11017653e-03 5.48328334e-03 5.76016724e-02 -1.36360519e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 1.70016634e-02 1.70016634e-02 -1.70016634e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 1.70016634e-02 1.70016634e-02 -1.70016634e-02 9.09946312e-02 -8.78615395e-02 1.51409429e-02 -1.08124682e-02 3.81033730e-02 3.81033730e-02 5.56692551e-02 -1.70016634e-02 -1.70016634e-02 -3.82879364e-03 -1.84743808e-04 6.78853114e-03 6.78853114e-03 4.91119301e-03 -4.88057902e-03 -4.88057902e-03 2.33254718e-01 1.42959316e-01 1.42959316e-01 1.89783463e-01 -1.84466621e-01 1.84466621e-01 -1.05482763e-02 -6.47988162e-03 -6.47988162e-03 -2.78703402e-02 8.34518149e-03 -8.34518149e-03 -1.19719253e-02 -4.68430612e-03 -3.65770659e-03 3.05324736e-03 -3.08556574e-03 -2.92421677e-03 1.42959316e-01 8.74838123e-02 8.75173384e-02 -1.05433222e-04 1.16218161e-01 -1.13139159e-01 1.12926204e-01 -6.29096583e-03 -3.92045739e-03 -4.07789392e-03 2.30094432e-05 -1.70670281e-02 4.94560355e-03 -5.25183836e-03 -1.19719253e-02 -3.65770659e-03 -4.68430612e-03 3.05324736e-03 -2.92421677e-03 -3.08556574e-03 1.42959316e-01 8.75173384e-02 8.74838123e-02 1.05433222e-04 1.16218161e-01 -1.12926204e-01 1.13139159e-01 -6.29096583e-03 -4.07789392e-03 -3.92045739e-03 -2.30094432e-05 -1.70670281e-02 5.25183836e-03 -4.94560355e-03 -9.88504715e-03 9.88504715e-03 8.16061087e-05 -8.16061087e-05 -1.05433222e-04 1.05433222e-04 1.78440391e-04 -9.58226514e-06 -9.58226514e-06 -1.23324095e-04 1.23324095e-04 -3.89423179e-05 1.91006991e-04 1.91006991e-04 -1.34997473e-02 1.34997473e-02 1.34997473e-02 3.98965718e-03 -3.98965718e-03 -3.98965718e-03 1.89783463e-01 1.16218161e-01 1.16218161e-01 3.67563826e-01 -1.50037001e-01 1.50037001e-01 -8.58346559e-03 -5.25627773e-03 -5.25627773e-03 -3.91967293e-02 6.78582537e-03 -6.78582537e-03 -6.86525306e-04 -2.30263163e-02 -1.14201355e-02 -3.80846317e-03 3.77878526e-03 3.90840983e-03 -1.84466621e-01 -1.13139159e-01 -1.12926204e-01 -9.58226514e-06 -1.50037001e-01 1.45685791e-01 -1.45949895e-01 8.49151503e-03 5.03807181e-03 5.01287669e-03 2.09120600e-06 2.20334385e-02 -6.62775483e-03 6.50712338e-03 6.86525306e-04 1.14201355e-02 2.30263163e-02 3.80846317e-03 -3.90840983e-03 -3.77878526e-03 1.84466621e-01 1.12926204e-01 1.13139159e-01 -9.58226514e-06 1.50037001e-01 -1.45949895e-01 1.45685791e-01 -8.49151503e-03 -5.01287669e-03 -5.03807181e-03 2.09120600e-06 -2.20334385e-02 6.50712338e-03 -6.62775483e-03 -6.96842667e-03 -1.00868915e-02 -1.00868915e-02 -8.65717248e-05 2.91222329e-04 2.91222329e-04 -1.05482763e-02 -6.29096583e-03 -6.29096583e-03 -8.58346559e-03 8.49151503e-03 -8.49151503e-03 7.69472345e-04 1.37774951e-04 1.37774951e-04 1.21596738e-03 -2.58595459e-04 2.58595459e-04 7.88241731e-03 9.66260440e-03 -4.47145138e-03 -1.92416159e-04 5.87867582e-05 1.64256895e-04 -6.47988162e-03 -3.92045739e-03 -4.07789392e-03 -1.23324095e-04 -5.25627773e-03 5.03807181e-03 -5.01287669e-03 1.37774951e-04 3.28830564e-04 1.58824815e-04 2.69138959e-05 7.44624905e-04 -4.09415493e-04 1.50120025e-04 7.88241731e-03 -4.47145138e-03 9.66260440e-03 -1.92416159e-04 1.64256895e-04 5.87867582e-05 -6.47988162e-03 -4.07789392e-03 -3.92045739e-03 1.23324095e-04 -5.25627773e-03 5.01287669e-03 -5.03807181e-03 1.37774951e-04 1.58824815e-04 3.28830564e-04 -2.69138959e-05 7.44624905e-04 -1.50120025e-04 4.09415493e-04 2.15728427e-03 -2.15728427e-03 -1.78094826e-05 1.78094826e-05 2.30094432e-05 -2.30094432e-05 -3.89423179e-05 2.09120600e-06 2.09120600e-06 2.69138959e-05 -2.69138959e-05 8.49865950e-06 -4.16848167e-05 -4.16848167e-05 -6.96401205e-03 6.96401205e-03 6.96401205e-03 -5.76134452e-04 5.76134452e-04 5.76134452e-04 -2.78703402e-02 -1.70670281e-02 -1.70670281e-02 -3.91967293e-02 2.20334385e-02 -2.20334385e-02 1.21596738e-03 7.44624905e-04 7.44624905e-04 4.88351268e-03 -9.61306618e-04 9.61306618e-04 -6.65332653e-03 -1.69134466e-02 9.29544937e-03 2.19325430e-04 -1.07142033e-04 -2.41137503e-04 8.34518149e-03 4.94560355e-03 5.25183836e-03 1.91006991e-04 6.78582537e-03 -6.62775483e-03 6.50712338e-03 -2.58595459e-04 -4.09415493e-04 -1.50120025e-04 -4.16848167e-05 -9.61306618e-04 5.05894315e-04 -1.34231757e-04 6.65332653e-03 -9.29544937e-03 1.69134466e-02 -2.19325430e-04 2.41137503e-04 1.07142033e-04 -8.34518149e-03 -5.25183836e-03 -4.94560355e-03 1.91006991e-04 -6.78582537e-03 6.50712338e-03 -6.62775483e-03 2.58595459e-04 1.50120025e-04 4.09415493e-04 -4.16848167e-05 9.61306618e-04 -1.34231757e-04 5.05894315e-04 - 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 - 0 12 24 36 48 66 86 106 124 144 164 170 180 190 190 200 206 216 226 226 236 254 274 294 308 326 346 366 384 404 424 438 456 476 496 -1 0 0 496 - -1.30077665e+00 -3.97979828e-02 -1.21755678e-01 3.00506476e-02 2.50681311e-01 -2.31073552e-01 -2.31073552e-01 2.31073552e-01 -4.55715201e-02 9.09946312e-02 9.09946312e-02 -9.09946312e-02 -3.97979828e-02 -1.15126664e+00 8.95185576e-02 -1.01048380e-01 -1.29637869e-01 1.70706534e-01 1.70706534e-01 -1.70706534e-01 4.68039666e-02 -8.78615395e-02 -8.78615395e-02 8.78615395e-02 -1.21755678e-01 8.95185576e-02 -1.86285298e-02 1.13591275e-02 3.43603397e-02 -3.47760262e-02 -3.47760262e-02 3.47760262e-02 -8.11017653e-03 1.51409429e-02 1.51409429e-02 -1.51409429e-02 3.00506476e-02 -1.01048380e-01 1.13591275e-02 -9.53400814e-03 -1.90677593e-02 2.20810865e-02 2.20810865e-02 -2.20810865e-02 5.48328334e-03 -1.08124682e-02 -1.08124682e-02 1.08124682e-02 -1.32837516e+00 -9.95491140e-02 -9.95491140e-02 3.64581589e-03 2.53788780e-03 2.53788780e-03 2.60203672e-02 1.19719253e-02 1.19719253e-02 1.34997473e-02 6.86525306e-04 -6.86525306e-04 2.30528378e-02 -7.88241731e-03 -7.88241731e-03 6.96401205e-03 6.65332653e-03 -6.65332653e-03 -9.95491140e-02 -1.47531604e+00 9.95491140e-02 2.53788780e-03 -1.62399402e-03 -2.53788780e-03 -6.78853114e-03 -2.07315938e-02 3.65770659e-03 9.88504715e-03 -1.34997473e-02 -2.30935703e-03 -1.14201355e-02 1.00868915e-02 -8.72159043e-03 4.47145138e-03 -2.15728427e-03 -6.96401205e-03 6.82044689e-03 9.29544937e-03 -9.95491140e-02 9.95491140e-02 -1.47531604e+00 2.53788780e-03 -2.53788780e-03 -1.62399402e-03 -6.78853114e-03 3.65770659e-03 -2.07315938e-02 -9.88504715e-03 -1.34997473e-02 1.14201355e-02 2.30935703e-03 1.00868915e-02 4.47145138e-03 -8.72159043e-03 2.15728427e-03 -6.96401205e-03 -9.29544937e-03 -6.82044689e-03 3.64581589e-03 2.53788780e-03 2.53788780e-03 -1.26080894e-04 7.82240681e-05 7.82240681e-05 -4.95421603e-03 -3.05324736e-03 -3.05324736e-03 -3.98965718e-03 3.80846317e-03 -3.80846317e-03 8.14872011e-05 1.92416159e-04 1.92416159e-04 5.76134452e-04 -2.19325430e-04 2.19325430e-04 2.53788780e-03 -1.62399402e-03 -2.53788780e-03 7.82240681e-05 -1.63876786e-04 -7.82240681e-05 4.88057902e-03 2.95573881e-03 2.92421677e-03 -8.16061087e-05 3.98965718e-03 -4.02050538e-03 3.90840983e-03 -2.91222329e-04 -4.41278956e-05 -1.64256895e-04 1.78094826e-05 -5.76134452e-04 2.57202134e-05 -2.41137503e-04 2.53788780e-03 -2.53788780e-03 -1.62399402e-03 7.82240681e-05 -7.82240681e-05 -1.63876786e-04 4.88057902e-03 2.92421677e-03 2.95573881e-03 8.16061087e-05 3.98965718e-03 -3.90840983e-03 4.02050538e-03 -2.91222329e-04 -1.64256895e-04 -4.41278956e-05 -1.78094826e-05 -5.76134452e-04 2.41137503e-04 -2.57202134e-05 2.50681311e-01 -1.29637869e-01 3.43603397e-02 -1.90677593e-02 -2.55642069e-01 5.76016724e-02 -2.31073552e-01 1.70706534e-01 -3.47760262e-02 2.20810865e-02 -8.69671403e-02 -8.69671403e-02 8.69671403e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 -2.31073552e-01 1.70706534e-01 -3.47760262e-02 2.20810865e-02 -8.69671403e-02 -8.69671403e-02 8.69671403e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 -5.09104100e-01 -3.81033730e-02 -3.81033730e-02 1.31876001e-01 -4.55715201e-02 4.68039666e-02 -8.11017653e-03 5.48328334e-03 5.76016724e-02 -1.36360519e-02 9.09946312e-02 -8.78615395e-02 1.51409429e-02 -1.08124682e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 -1.70016634e-02 -1.70016634e-02 1.70016634e-02 9.09946312e-02 -8.78615395e-02 1.51409429e-02 -1.08124682e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 -1.70016634e-02 -1.70016634e-02 1.70016634e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 1.31876001e-01 1.70016634e-02 1.70016634e-02 -3.78321204e-02 2.60203672e-02 -6.78853114e-03 -6.78853114e-03 -4.95421603e-03 4.88057902e-03 4.88057902e-03 -2.33574112e-01 -1.42959316e-01 -1.42959316e-01 -1.89783463e-01 1.84466621e-01 -1.84466621e-01 1.02934331e-02 6.47988162e-03 6.47988162e-03 2.78703402e-02 -8.34518149e-03 8.34518149e-03 1.19719253e-02 -2.07315938e-02 3.65770659e-03 -3.05324736e-03 2.95573881e-03 2.92421677e-03 -1.42959316e-01 -8.78000495e-02 -8.75173384e-02 1.05433222e-04 -1.16218161e-01 1.12690603e-01 -1.12926204e-01 6.29096583e-03 3.94386154e-03 4.07789392e-03 -2.30094432e-05 1.70670281e-02 -5.10663990e-03 5.25183836e-03 1.19719253e-02 3.65770659e-03 -2.07315938e-02 -3.05324736e-03 2.92421677e-03 2.95573881e-03 -1.42959316e-01 -8.75173384e-02 -8.78000495e-02 -1.05433222e-04 -1.16218161e-01 1.12926204e-01 -1.12690603e-01 6.29096583e-03 4.07789392e-03 3.94386154e-03 2.30094432e-05 1.70670281e-02 -5.25183836e-03 5.10663990e-03 9.88504715e-03 -9.88504715e-03 -8.16061087e-05 8.16061087e-05 1.05433222e-04 -1.05433222e-04 -1.78440391e-04 9.58226514e-06 9.58226514e-06 1.23324095e-04 -1.23324095e-04 3.89423179e-05 -1.91006991e-04 -1.91006991e-04 1.34997473e-02 -1.34997473e-02 -1.34997473e-02 -3.98965718e-03 3.98965718e-03 3.98965718e-03 -1.89783463e-01 -1.16218161e-01 -1.16218161e-01 5.86189719e-02 1.50037001e-01 -1.50037001e-01 8.58346559e-03 5.25627773e-03 5.25627773e-03 5.74991859e-03 -6.78582537e-03 6.78582537e-03 6.86525306e-04 -2.30935703e-03 1.14201355e-02 3.80846317e-03 -4.02050538e-03 -3.90840983e-03 1.84466621e-01 1.12690603e-01 1.12926204e-01 9.58226514e-06 1.50037001e-01 -1.46216058e-01 1.45949895e-01 -8.49151503e-03 -5.01417164e-03 -5.01287669e-03 -2.09120600e-06 -2.20334385e-02 6.42752029e-03 -6.50712338e-03 -6.86525306e-04 -1.14201355e-02 2.30935703e-03 -3.80846317e-03 3.90840983e-03 4.02050538e-03 -1.84466621e-01 -1.12926204e-01 -1.12690603e-01 9.58226514e-06 -1.50037001e-01 1.45949895e-01 -1.46216058e-01 8.49151503e-03 5.01287669e-03 5.01417164e-03 -2.09120600e-06 2.20334385e-02 -6.50712338e-03 6.42752029e-03 2.30528378e-02 1.00868915e-02 1.00868915e-02 8.14872011e-05 -2.91222329e-04 -2.91222329e-04 1.02934331e-02 6.29096583e-03 6.29096583e-03 8.58346559e-03 -8.49151503e-03 8.49151503e-03 -9.58405865e-04 -1.37774951e-04 -1.37774951e-04 -1.21596738e-03 2.58595459e-04 -2.58595459e-04 -7.88241731e-03 -8.72159043e-03 4.47145138e-03 1.92416159e-04 -4.41278956e-05 -1.64256895e-04 6.47988162e-03 3.94386154e-03 4.07789392e-03 1.23324095e-04 5.25627773e-03 -5.01417164e-03 5.01287669e-03 -1.37774951e-04 -3.29747090e-04 -1.58824815e-04 -2.69138959e-05 -7.44624905e-04 4.18861158e-04 -1.50120025e-04 -7.88241731e-03 4.47145138e-03 -8.72159043e-03 1.92416159e-04 -1.64256895e-04 -4.41278956e-05 6.47988162e-03 4.07789392e-03 3.94386154e-03 -1.23324095e-04 5.25627773e-03 -5.01287669e-03 5.01417164e-03 -1.37774951e-04 -1.58824815e-04 -3.29747090e-04 2.69138959e-05 -7.44624905e-04 1.50120025e-04 -4.18861158e-04 -2.15728427e-03 2.15728427e-03 1.78094826e-05 -1.78094826e-05 -2.30094432e-05 2.30094432e-05 3.89423179e-05 -2.09120600e-06 -2.09120600e-06 -2.69138959e-05 2.69138959e-05 -8.49865950e-06 4.16848167e-05 4.16848167e-05 6.96401205e-03 -6.96401205e-03 -6.96401205e-03 5.76134452e-04 -5.76134452e-04 -5.76134452e-04 2.78703402e-02 1.70670281e-02 1.70670281e-02 5.74991859e-03 -2.20334385e-02 2.20334385e-02 -1.21596738e-03 -7.44624905e-04 -7.44624905e-04 -2.25860819e-03 9.61306618e-04 -9.61306618e-04 6.65332653e-03 6.82044689e-03 -9.29544937e-03 -2.19325430e-04 2.57202134e-05 2.41137503e-04 -8.34518149e-03 -5.10663990e-03 -5.25183836e-03 -1.91006991e-04 -6.78582537e-03 6.42752029e-03 -6.50712338e-03 2.58595459e-04 4.18861158e-04 1.50120025e-04 4.16848167e-05 9.61306618e-04 -5.80403562e-04 1.34231757e-04 -6.65332653e-03 9.29544937e-03 -6.82044689e-03 2.19325430e-04 -2.41137503e-04 -2.57202134e-05 8.34518149e-03 5.25183836e-03 5.10663990e-03 -1.91006991e-04 6.78582537e-03 -6.50712338e-03 6.42752029e-03 -2.58595459e-04 -1.50120025e-04 -4.18861158e-04 4.16848167e-05 -9.61306618e-04 1.34231757e-04 -5.80403562e-04 - 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 - 0 12 24 36 48 66 86 106 124 144 164 170 180 190 190 200 206 216 226 226 236 254 274 294 308 326 346 366 384 404 424 438 456 476 496 -1 0 1 496 - 6.10668701e-01 -7.51799909e-02 6.94266500e-02 -1.13818158e-02 2.50681311e-01 2.31073552e-01 2.31073552e-01 -2.31073552e-01 -4.55715201e-02 -9.09946312e-02 -9.09946312e-02 9.09946312e-02 -7.51799909e-02 6.30743818e-01 -3.88656825e-02 8.24503254e-02 -1.29637869e-01 -1.70706534e-01 -1.70706534e-01 1.70706534e-01 4.68039666e-02 8.78615395e-02 8.78615395e-02 -8.78615395e-02 6.94266500e-02 -3.88656825e-02 9.24320123e-03 -5.59159516e-03 3.43603397e-02 3.47760262e-02 3.47760262e-02 -3.47760262e-02 -8.11017653e-03 -1.51409429e-02 -1.51409429e-02 1.51409429e-02 -1.13818158e-02 8.24503254e-02 -5.59159516e-03 1.01087384e-02 -1.90677593e-02 -2.20810865e-02 -2.20810865e-02 2.20810865e-02 5.48328334e-03 1.08124682e-02 1.08124682e-02 -1.08124682e-02 6.62931071e-01 9.95491140e-02 9.95491140e-02 -9.36131516e-03 -2.53788780e-03 -2.53788780e-03 -1.84743808e-04 -1.19719253e-02 -1.19719253e-02 -1.34997473e-02 -6.86525306e-04 6.86525306e-04 -6.96842667e-03 7.88241731e-03 7.88241731e-03 -6.96401205e-03 -6.65332653e-03 6.65332653e-03 9.95491140e-02 5.15990200e-01 -9.95491140e-02 -2.53788780e-03 -1.46311251e-02 2.53788780e-03 6.78853114e-03 -4.68430612e-03 -3.65770659e-03 -9.88504715e-03 1.34997473e-02 -2.30263163e-02 1.14201355e-02 -1.00868915e-02 9.66260440e-03 -4.47145138e-03 2.15728427e-03 6.96401205e-03 -1.69134466e-02 -9.29544937e-03 9.95491140e-02 -9.95491140e-02 5.15990200e-01 -2.53788780e-03 2.53788780e-03 -1.46311251e-02 6.78853114e-03 -3.65770659e-03 -4.68430612e-03 9.88504715e-03 1.34997473e-02 -1.14201355e-02 2.30263163e-02 -1.00868915e-02 -4.47145138e-03 9.66260440e-03 -2.15728427e-03 6.96401205e-03 9.29544937e-03 1.69134466e-02 -9.36131516e-03 -2.53788780e-03 -2.53788780e-03 1.79650864e-04 -7.82240681e-05 -7.82240681e-05 4.91119301e-03 3.05324736e-03 3.05324736e-03 3.98965718e-03 -3.80846317e-03 3.80846317e-03 -8.65717248e-05 -1.92416159e-04 -1.92416159e-04 -5.76134452e-04 2.19325430e-04 -2.19325430e-04 -2.53788780e-03 -1.46311251e-02 2.53788780e-03 -7.82240681e-05 1.41854973e-04 7.82240681e-05 -4.88057902e-03 -3.08556574e-03 -2.92421677e-03 8.16061087e-05 -3.98965718e-03 3.77878526e-03 -3.90840983e-03 2.91222329e-04 5.87867582e-05 1.64256895e-04 -1.78094826e-05 5.76134452e-04 -1.07142033e-04 2.41137503e-04 -2.53788780e-03 2.53788780e-03 -1.46311251e-02 -7.82240681e-05 7.82240681e-05 1.41854973e-04 -4.88057902e-03 -2.92421677e-03 -3.08556574e-03 -8.16061087e-05 -3.98965718e-03 3.90840983e-03 -3.77878526e-03 2.91222329e-04 1.64256895e-04 5.87867582e-05 1.78094826e-05 5.76134452e-04 -2.41137503e-04 1.07142033e-04 2.50681311e-01 -1.29637869e-01 3.43603397e-02 -1.90677593e-02 -2.55642069e-01 5.76016724e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 -8.69671403e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 -8.69671403e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 -2.31073552e-01 1.70706534e-01 -3.47760262e-02 2.20810865e-02 -8.69671403e-02 -8.69671403e-02 -3.35169819e-01 3.81033730e-02 3.81033730e-02 5.56692551e-02 -4.55715201e-02 4.68039666e-02 -8.11017653e-03 5.48328334e-03 5.76016724e-02 -1.36360519e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 1.70016634e-02 1.70016634e-02 -1.70016634e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 1.70016634e-02 1.70016634e-02 -1.70016634e-02 9.09946312e-02 -8.78615395e-02 1.51409429e-02 -1.08124682e-02 3.81033730e-02 3.81033730e-02 5.56692551e-02 -1.70016634e-02 -1.70016634e-02 -3.82879364e-03 -1.84743808e-04 6.78853114e-03 6.78853114e-03 4.91119301e-03 -4.88057902e-03 -4.88057902e-03 2.33254718e-01 1.42959316e-01 1.42959316e-01 1.89783463e-01 -1.84466621e-01 1.84466621e-01 -1.05482763e-02 -6.47988162e-03 -6.47988162e-03 -2.78703402e-02 8.34518149e-03 -8.34518149e-03 -1.19719253e-02 -4.68430612e-03 -3.65770659e-03 3.05324736e-03 -3.08556574e-03 -2.92421677e-03 1.42959316e-01 8.74838123e-02 8.75173384e-02 -1.05433222e-04 1.16218161e-01 -1.13139159e-01 1.12926204e-01 -6.29096583e-03 -3.92045739e-03 -4.07789392e-03 2.30094432e-05 -1.70670281e-02 4.94560355e-03 -5.25183836e-03 -1.19719253e-02 -3.65770659e-03 -4.68430612e-03 3.05324736e-03 -2.92421677e-03 -3.08556574e-03 1.42959316e-01 8.75173384e-02 8.74838123e-02 1.05433222e-04 1.16218161e-01 -1.12926204e-01 1.13139159e-01 -6.29096583e-03 -4.07789392e-03 -3.92045739e-03 -2.30094432e-05 -1.70670281e-02 5.25183836e-03 -4.94560355e-03 -9.88504715e-03 9.88504715e-03 8.16061087e-05 -8.16061087e-05 -1.05433222e-04 1.05433222e-04 1.78440391e-04 -9.58226514e-06 -9.58226514e-06 -1.23324095e-04 1.23324095e-04 -3.89423179e-05 1.91006991e-04 1.91006991e-04 -1.34997473e-02 1.34997473e-02 1.34997473e-02 3.98965718e-03 -3.98965718e-03 -3.98965718e-03 1.89783463e-01 1.16218161e-01 1.16218161e-01 3.67563826e-01 -1.50037001e-01 1.50037001e-01 -8.58346559e-03 -5.25627773e-03 -5.25627773e-03 -3.91967293e-02 6.78582537e-03 -6.78582537e-03 -6.86525306e-04 -2.30263163e-02 -1.14201355e-02 -3.80846317e-03 3.77878526e-03 3.90840983e-03 -1.84466621e-01 -1.13139159e-01 -1.12926204e-01 -9.58226514e-06 -1.50037001e-01 1.45685791e-01 -1.45949895e-01 8.49151503e-03 5.03807181e-03 5.01287669e-03 2.09120600e-06 2.20334385e-02 -6.62775483e-03 6.50712338e-03 6.86525306e-04 1.14201355e-02 2.30263163e-02 3.80846317e-03 -3.90840983e-03 -3.77878526e-03 1.84466621e-01 1.12926204e-01 1.13139159e-01 -9.58226514e-06 1.50037001e-01 -1.45949895e-01 1.45685791e-01 -8.49151503e-03 -5.01287669e-03 -5.03807181e-03 2.09120600e-06 -2.20334385e-02 6.50712338e-03 -6.62775483e-03 -6.96842667e-03 -1.00868915e-02 -1.00868915e-02 -8.65717248e-05 2.91222329e-04 2.91222329e-04 -1.05482763e-02 -6.29096583e-03 -6.29096583e-03 -8.58346559e-03 8.49151503e-03 -8.49151503e-03 7.69472345e-04 1.37774951e-04 1.37774951e-04 1.21596738e-03 -2.58595459e-04 2.58595459e-04 7.88241731e-03 9.66260440e-03 -4.47145138e-03 -1.92416159e-04 5.87867582e-05 1.64256895e-04 -6.47988162e-03 -3.92045739e-03 -4.07789392e-03 -1.23324095e-04 -5.25627773e-03 5.03807181e-03 -5.01287669e-03 1.37774951e-04 3.28830564e-04 1.58824815e-04 2.69138959e-05 7.44624905e-04 -4.09415493e-04 1.50120025e-04 7.88241731e-03 -4.47145138e-03 9.66260440e-03 -1.92416159e-04 1.64256895e-04 5.87867582e-05 -6.47988162e-03 -4.07789392e-03 -3.92045739e-03 1.23324095e-04 -5.25627773e-03 5.01287669e-03 -5.03807181e-03 1.37774951e-04 1.58824815e-04 3.28830564e-04 -2.69138959e-05 7.44624905e-04 -1.50120025e-04 4.09415493e-04 2.15728427e-03 -2.15728427e-03 -1.78094826e-05 1.78094826e-05 2.30094432e-05 -2.30094432e-05 -3.89423179e-05 2.09120600e-06 2.09120600e-06 2.69138959e-05 -2.69138959e-05 8.49865950e-06 -4.16848167e-05 -4.16848167e-05 -6.96401205e-03 6.96401205e-03 6.96401205e-03 -5.76134452e-04 5.76134452e-04 5.76134452e-04 -2.78703402e-02 -1.70670281e-02 -1.70670281e-02 -3.91967293e-02 2.20334385e-02 -2.20334385e-02 1.21596738e-03 7.44624905e-04 7.44624905e-04 4.88351268e-03 -9.61306618e-04 9.61306618e-04 -6.65332653e-03 -1.69134466e-02 9.29544937e-03 2.19325430e-04 -1.07142033e-04 -2.41137503e-04 8.34518149e-03 4.94560355e-03 5.25183836e-03 1.91006991e-04 6.78582537e-03 -6.62775483e-03 6.50712338e-03 -2.58595459e-04 -4.09415493e-04 -1.50120025e-04 -4.16848167e-05 -9.61306618e-04 5.05894315e-04 -1.34231757e-04 6.65332653e-03 -9.29544937e-03 1.69134466e-02 -2.19325430e-04 2.41137503e-04 1.07142033e-04 -8.34518149e-03 -5.25183836e-03 -4.94560355e-03 1.91006991e-04 -6.78582537e-03 6.50712338e-03 -6.62775483e-03 2.58595459e-04 1.50120025e-04 4.09415493e-04 -4.16848167e-05 9.61306618e-04 -1.34231757e-04 5.05894315e-04 - 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 - 0 12 24 36 48 66 86 106 124 144 164 170 180 190 190 200 206 216 226 226 236 254 274 294 308 326 346 366 384 404 424 438 456 476 496 -1 1 -3 496 - -4.46730500e-01 2.90265885e-01 -6.65919095e-02 3.20736205e-02 -2.50681311e-01 -2.31073552e-01 -2.31073552e-01 2.31073552e-01 4.55715201e-02 9.09946312e-02 9.09946312e-02 -9.09946312e-02 2.90265885e-01 -7.77208948e-02 3.49623849e-02 -1.81562170e-02 1.29637869e-01 1.70706534e-01 1.70706534e-01 -1.70706534e-01 -4.68039666e-02 -8.78615395e-02 -8.78615395e-02 8.78615395e-02 -6.65919095e-02 3.49623849e-02 -8.97965282e-03 4.90391018e-03 -3.43603397e-02 -3.47760262e-02 -3.47760262e-02 3.47760262e-02 8.11017653e-03 1.51409429e-02 1.51409429e-02 -1.51409429e-02 3.20736205e-02 -1.81562170e-02 4.90391018e-03 -2.40214415e-03 1.90677593e-02 2.20810865e-02 2.20810865e-02 -2.20810865e-02 -5.48328334e-03 -1.08124682e-02 -1.08124682e-02 1.08124682e-02 -9.61307016e-02 -9.95491140e-02 -9.95491140e-02 3.84928096e-03 2.53788780e-03 2.53788780e-03 4.96626145e-03 1.19719253e-02 1.19719253e-02 1.34997473e-02 6.86525306e-04 -6.86525306e-04 7.75107441e-03 -7.88241731e-03 -7.88241731e-03 6.96401205e-03 6.65332653e-03 -6.65332653e-03 -9.95491140e-02 5.08101702e-02 9.95491140e-02 2.53788780e-03 9.11909087e-03 -2.53788780e-03 -6.78853114e-03 1.75623651e-03 3.65770659e-03 9.88504715e-03 -1.34997473e-02 2.68064379e-02 -1.14201355e-02 1.00868915e-02 -1.01418763e-02 4.47145138e-03 -2.15728427e-03 -6.96401205e-03 1.75321839e-02 9.29544937e-03 -9.95491140e-02 9.95491140e-02 5.08101702e-02 2.53788780e-03 -2.53788780e-03 9.11909087e-03 -6.78853114e-03 3.65770659e-03 1.75623651e-03 -9.88504715e-03 -1.34997473e-02 1.14201355e-02 -2.68064379e-02 1.00868915e-02 4.47145138e-03 -1.01418763e-02 2.15728427e-03 -6.96401205e-03 -9.29544937e-03 -1.75321839e-02 3.84928096e-03 2.53788780e-03 2.53788780e-03 -1.26047298e-04 7.82240681e-05 7.82240681e-05 -4.95769243e-03 -3.05324736e-03 -3.05324736e-03 -3.98965718e-03 3.80846317e-03 -3.80846317e-03 7.89606128e-05 1.92416159e-04 1.92416159e-04 5.76134452e-04 -2.19325430e-04 2.19325430e-04 2.53788780e-03 9.11909087e-03 -2.53788780e-03 7.82240681e-05 -8.82514067e-05 -7.82240681e-05 4.88057902e-03 3.11404071e-03 2.92421677e-03 -8.16061087e-05 3.98965718e-03 -3.81554628e-03 3.90840983e-03 -2.91222329e-04 -5.41259230e-05 -1.64256895e-04 1.78094826e-05 -5.76134452e-04 1.01124921e-04 -2.41137503e-04 2.53788780e-03 -2.53788780e-03 9.11909087e-03 7.82240681e-05 -7.82240681e-05 -8.82514067e-05 4.88057902e-03 2.92421677e-03 3.11404071e-03 8.16061087e-05 3.98965718e-03 -3.90840983e-03 3.81554628e-03 -2.91222329e-04 -1.64256895e-04 -5.41259230e-05 -1.78094826e-05 -5.76134452e-04 2.41137503e-04 -1.01124921e-04 -2.50681311e-01 1.29637869e-01 -3.43603397e-02 1.90677593e-02 2.55642069e-01 -5.76016724e-02 -2.31073552e-01 1.70706534e-01 -3.47760262e-02 2.20810865e-02 -8.69671403e-02 -8.69671403e-02 8.69671403e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 -2.31073552e-01 1.70706534e-01 -3.47760262e-02 2.20810865e-02 -8.69671403e-02 -8.69671403e-02 8.69671403e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 3.35169819e-01 -3.81033730e-02 -3.81033730e-02 -5.56692551e-02 4.55715201e-02 -4.68039666e-02 8.11017653e-03 -5.48328334e-03 -5.76016724e-02 1.36360519e-02 9.09946312e-02 -8.78615395e-02 1.51409429e-02 -1.08124682e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 -1.70016634e-02 -1.70016634e-02 1.70016634e-02 9.09946312e-02 -8.78615395e-02 1.51409429e-02 -1.08124682e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 -1.70016634e-02 -1.70016634e-02 1.70016634e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 -5.56692551e-02 1.70016634e-02 1.70016634e-02 3.82879364e-03 4.96626145e-03 -6.78853114e-03 -6.78853114e-03 -4.95769243e-03 4.88057902e-03 4.88057902e-03 -2.33214382e-01 -1.42959316e-01 -1.42959316e-01 -1.89783463e-01 1.84466621e-01 -1.84466621e-01 1.05548787e-02 6.47988162e-03 6.47988162e-03 2.78703402e-02 -8.34518149e-03 8.34518149e-03 1.19719253e-02 1.75623651e-03 3.65770659e-03 -3.05324736e-03 3.11404071e-03 2.92421677e-03 -1.42959316e-01 -8.74686860e-02 -8.75173384e-02 1.05433222e-04 -1.16218161e-01 1.13119631e-01 -1.12926204e-01 6.29096583e-03 3.92293329e-03 4.07789392e-03 -2.30094432e-05 1.70670281e-02 -4.94879992e-03 5.25183836e-03 1.19719253e-02 3.65770659e-03 1.75623651e-03 -3.05324736e-03 2.92421677e-03 3.11404071e-03 -1.42959316e-01 -8.75173384e-02 -8.74686860e-02 -1.05433222e-04 -1.16218161e-01 1.12926204e-01 -1.13119631e-01 6.29096583e-03 4.07789392e-03 3.92293329e-03 2.30094432e-05 1.70670281e-02 -5.25183836e-03 4.94879992e-03 9.88504715e-03 -9.88504715e-03 -8.16061087e-05 8.16061087e-05 1.05433222e-04 -1.05433222e-04 -1.78440391e-04 9.58226514e-06 9.58226514e-06 1.23324095e-04 -1.23324095e-04 3.89423179e-05 -1.91006991e-04 -1.91006991e-04 1.34997473e-02 -1.34997473e-02 -1.34997473e-02 -3.98965718e-03 3.98965718e-03 3.98965718e-03 -1.89783463e-01 -1.16218161e-01 -1.16218161e-01 5.86189719e-02 1.50037001e-01 -1.50037001e-01 8.58346559e-03 5.25627773e-03 5.25627773e-03 5.74991859e-03 -6.78582537e-03 6.78582537e-03 6.86525306e-04 2.68064379e-02 1.14201355e-02 3.80846317e-03 -3.81554628e-03 -3.90840983e-03 1.84466621e-01 1.13119631e-01 1.12926204e-01 9.58226514e-06 1.50037001e-01 -1.45660580e-01 1.45949895e-01 -8.49151503e-03 -5.04126819e-03 -5.01287669e-03 -2.09120600e-06 -2.20334385e-02 6.63188133e-03 -6.50712338e-03 -6.86525306e-04 -1.14201355e-02 -2.68064379e-02 -3.80846317e-03 3.90840983e-03 3.81554628e-03 -1.84466621e-01 -1.12926204e-01 -1.13119631e-01 9.58226514e-06 -1.50037001e-01 1.45949895e-01 -1.45660580e-01 8.49151503e-03 5.01287669e-03 5.04126819e-03 -2.09120600e-06 2.20334385e-02 -6.50712338e-03 6.63188133e-03 7.75107441e-03 1.00868915e-02 1.00868915e-02 7.89606128e-05 -2.91222329e-04 -2.91222329e-04 1.05548787e-02 6.29096583e-03 6.29096583e-03 8.58346559e-03 -8.49151503e-03 8.49151503e-03 -7.68391652e-04 -1.37774951e-04 -1.37774951e-04 -1.21596738e-03 2.58595459e-04 -2.58595459e-04 -7.88241731e-03 -1.01418763e-02 4.47145138e-03 1.92416159e-04 -5.41259230e-05 -1.64256895e-04 6.47988162e-03 3.92293329e-03 4.07789392e-03 1.23324095e-04 5.25627773e-03 -5.04126819e-03 5.01287669e-03 -1.37774951e-04 -3.28425304e-04 -1.58824815e-04 -2.69138959e-05 -7.44624905e-04 4.08892304e-04 -1.50120025e-04 -7.88241731e-03 4.47145138e-03 -1.01418763e-02 1.92416159e-04 -1.64256895e-04 -5.41259230e-05 6.47988162e-03 4.07789392e-03 3.92293329e-03 -1.23324095e-04 5.25627773e-03 -5.01287669e-03 5.04126819e-03 -1.37774951e-04 -1.58824815e-04 -3.28425304e-04 2.69138959e-05 -7.44624905e-04 1.50120025e-04 -4.08892304e-04 -2.15728427e-03 2.15728427e-03 1.78094826e-05 -1.78094826e-05 -2.30094432e-05 2.30094432e-05 3.89423179e-05 -2.09120600e-06 -2.09120600e-06 -2.69138959e-05 2.69138959e-05 -8.49865950e-06 4.16848167e-05 4.16848167e-05 6.96401205e-03 -6.96401205e-03 -6.96401205e-03 5.76134452e-04 -5.76134452e-04 -5.76134452e-04 2.78703402e-02 1.70670281e-02 1.70670281e-02 5.74991859e-03 -2.20334385e-02 2.20334385e-02 -1.21596738e-03 -7.44624905e-04 -7.44624905e-04 -2.25860819e-03 9.61306618e-04 -9.61306618e-04 6.65332653e-03 1.75321839e-02 -9.29544937e-03 -2.19325430e-04 1.01124921e-04 2.41137503e-04 -8.34518149e-03 -4.94879992e-03 -5.25183836e-03 -1.91006991e-04 -6.78582537e-03 6.63188133e-03 -6.50712338e-03 2.58595459e-04 4.08892304e-04 1.50120025e-04 4.16848167e-05 9.61306618e-04 -5.05218881e-04 1.34231757e-04 -6.65332653e-03 9.29544937e-03 -1.75321839e-02 2.19325430e-04 -2.41137503e-04 -1.01124921e-04 8.34518149e-03 5.25183836e-03 4.94879992e-03 -1.91006991e-04 6.78582537e-03 -6.50712338e-03 6.63188133e-03 -2.58595459e-04 -1.50120025e-04 -4.08892304e-04 4.16848167e-05 -9.61306618e-04 1.34231757e-04 -5.05218881e-04 - 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 - 0 12 24 36 48 66 86 106 124 144 164 170 180 190 190 200 206 216 226 226 236 254 274 294 308 326 346 366 384 404 424 438 456 476 496 -1 1 -2 496 - 1.46471486e+00 2.54883877e-01 1.24590418e-01 -9.35884290e-03 -2.50681311e-01 2.31073552e-01 2.31073552e-01 -2.31073552e-01 4.55715201e-02 -9.09946312e-02 -9.09946312e-02 9.09946312e-02 2.54883877e-01 1.70428957e+00 -9.34218553e-02 1.65342489e-01 1.29637869e-01 -1.70706534e-01 -1.70706534e-01 1.70706534e-01 -4.68039666e-02 8.78615395e-02 8.78615395e-02 -8.78615395e-02 1.24590418e-01 -9.34218553e-02 1.88920782e-02 -1.20468125e-02 -3.43603397e-02 3.47760262e-02 3.47760262e-02 -3.47760262e-02 8.11017653e-03 -1.51409429e-02 -1.51409429e-02 1.51409429e-02 -9.35884290e-03 1.65342489e-01 -1.20468125e-02 1.72406024e-02 1.90677593e-02 -2.20810865e-02 -2.20810865e-02 2.20810865e-02 -5.48328334e-03 1.08124682e-02 1.08124682e-02 -1.08124682e-02 1.89517553e+00 9.95491140e-02 9.95491140e-02 -9.15785008e-03 -2.53788780e-03 -2.53788780e-03 -2.12388496e-02 -1.19719253e-02 -1.19719253e-02 -1.34997473e-02 -6.86525306e-04 6.86525306e-04 -2.22701900e-02 7.88241731e-03 7.88241731e-03 -6.96401205e-03 -6.65332653e-03 6.65332653e-03 9.95491140e-02 2.04211641e+00 -9.95491140e-02 -2.53788780e-03 -3.88804018e-03 2.53788780e-03 6.78853114e-03 1.78035242e-02 -3.65770659e-03 -9.88504715e-03 1.34997473e-02 6.08947863e-03 1.14201355e-02 -1.00868915e-02 8.24231853e-03 -4.47145138e-03 2.15728427e-03 6.96401205e-03 -6.20170953e-03 -9.29544937e-03 9.95491140e-02 -9.95491140e-02 2.04211641e+00 -2.53788780e-03 2.53788780e-03 -3.88804018e-03 6.78853114e-03 -3.65770659e-03 1.78035242e-02 9.88504715e-03 1.34997473e-02 -1.14201355e-02 -6.08947863e-03 -1.00868915e-02 -4.47145138e-03 8.24231853e-03 -2.15728427e-03 6.96401205e-03 9.29544937e-03 6.20170953e-03 -9.15785008e-03 -2.53788780e-03 -2.53788780e-03 1.79684460e-04 -7.82240681e-05 -7.82240681e-05 4.90771661e-03 3.05324736e-03 3.05324736e-03 3.98965718e-03 -3.80846317e-03 3.80846317e-03 -8.90983131e-05 -1.92416159e-04 -1.92416159e-04 -5.76134452e-04 2.19325430e-04 -2.19325430e-04 -2.53788780e-03 -3.88804018e-03 2.53788780e-03 -7.82240681e-05 2.17480352e-04 7.82240681e-05 -4.88057902e-03 -2.92726385e-03 -2.92421677e-03 8.16061087e-05 -3.98965718e-03 3.98374436e-03 -3.90840983e-03 2.91222329e-04 4.87887308e-05 1.64256895e-04 -1.78094826e-05 5.76134452e-04 -3.17373257e-05 2.41137503e-04 -2.53788780e-03 2.53788780e-03 -3.88804018e-03 -7.82240681e-05 7.82240681e-05 2.17480352e-04 -4.88057902e-03 -2.92421677e-03 -2.92726385e-03 -8.16061087e-05 -3.98965718e-03 3.90840983e-03 -3.98374436e-03 2.91222329e-04 1.64256895e-04 4.87887308e-05 1.78094826e-05 5.76134452e-04 -2.41137503e-04 3.17373257e-05 -2.50681311e-01 1.29637869e-01 -3.43603397e-02 1.90677593e-02 2.55642069e-01 -5.76016724e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 -8.69671403e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 -8.69671403e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 -2.31073552e-01 1.70706534e-01 -3.47760262e-02 2.20810865e-02 -8.69671403e-02 -8.69671403e-02 5.09104100e-01 3.81033730e-02 3.81033730e-02 -1.31876001e-01 4.55715201e-02 -4.68039666e-02 8.11017653e-03 -5.48328334e-03 -5.76016724e-02 1.36360519e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 1.70016634e-02 1.70016634e-02 -1.70016634e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 1.70016634e-02 1.70016634e-02 -1.70016634e-02 9.09946312e-02 -8.78615395e-02 1.51409429e-02 -1.08124682e-02 3.81033730e-02 3.81033730e-02 -1.31876001e-01 -1.70016634e-02 -1.70016634e-02 3.78321204e-02 -2.12388496e-02 6.78853114e-03 6.78853114e-03 4.90771661e-03 -4.88057902e-03 -4.88057902e-03 2.33614448e-01 1.42959316e-01 1.42959316e-01 1.89783463e-01 -1.84466621e-01 1.84466621e-01 -1.02868307e-02 -6.47988162e-03 -6.47988162e-03 -2.78703402e-02 8.34518149e-03 -8.34518149e-03 -1.19719253e-02 1.78035242e-02 -3.65770659e-03 3.05324736e-03 -2.92726385e-03 -2.92421677e-03 1.42959316e-01 8.78151758e-02 8.75173384e-02 -1.05433222e-04 1.16218161e-01 -1.12710131e-01 1.12926204e-01 -6.29096583e-03 -3.94138564e-03 -4.07789392e-03 2.30094432e-05 -1.70670281e-02 5.10344353e-03 -5.25183836e-03 -1.19719253e-02 -3.65770659e-03 1.78035242e-02 3.05324736e-03 -2.92421677e-03 -2.92726385e-03 1.42959316e-01 8.75173384e-02 8.78151758e-02 1.05433222e-04 1.16218161e-01 -1.12926204e-01 1.12710131e-01 -6.29096583e-03 -4.07789392e-03 -3.94138564e-03 -2.30094432e-05 -1.70670281e-02 5.25183836e-03 -5.10344353e-03 -9.88504715e-03 9.88504715e-03 8.16061087e-05 -8.16061087e-05 -1.05433222e-04 1.05433222e-04 1.78440391e-04 -9.58226514e-06 -9.58226514e-06 -1.23324095e-04 1.23324095e-04 -3.89423179e-05 1.91006991e-04 1.91006991e-04 -1.34997473e-02 1.34997473e-02 1.34997473e-02 3.98965718e-03 -3.98965718e-03 -3.98965718e-03 1.89783463e-01 1.16218161e-01 1.16218161e-01 3.67563826e-01 -1.50037001e-01 1.50037001e-01 -8.58346559e-03 -5.25627773e-03 -5.25627773e-03 -3.91967293e-02 6.78582537e-03 -6.78582537e-03 -6.86525306e-04 6.08947863e-03 -1.14201355e-02 -3.80846317e-03 3.98374436e-03 3.90840983e-03 -1.84466621e-01 -1.12710131e-01 -1.12926204e-01 -9.58226514e-06 -1.50037001e-01 1.46241269e-01 -1.45949895e-01 8.49151503e-03 5.01097526e-03 5.01287669e-03 2.09120600e-06 2.20334385e-02 -6.42339379e-03 6.50712338e-03 6.86525306e-04 1.14201355e-02 -6.08947863e-03 3.80846317e-03 -3.90840983e-03 -3.98374436e-03 1.84466621e-01 1.12926204e-01 1.12710131e-01 -9.58226514e-06 1.50037001e-01 -1.45949895e-01 1.46241269e-01 -8.49151503e-03 -5.01287669e-03 -5.01097526e-03 2.09120600e-06 -2.20334385e-02 6.50712338e-03 -6.42339379e-03 -2.22701900e-02 -1.00868915e-02 -1.00868915e-02 -8.90983131e-05 2.91222329e-04 2.91222329e-04 -1.02868307e-02 -6.29096583e-03 -6.29096583e-03 -8.58346559e-03 8.49151503e-03 -8.49151503e-03 9.59486559e-04 1.37774951e-04 1.37774951e-04 1.21596738e-03 -2.58595459e-04 2.58595459e-04 7.88241731e-03 8.24231853e-03 -4.47145138e-03 -1.92416159e-04 4.87887308e-05 1.64256895e-04 -6.47988162e-03 -3.94138564e-03 -4.07789392e-03 -1.23324095e-04 -5.25627773e-03 5.01097526e-03 -5.01287669e-03 1.37774951e-04 3.30152350e-04 1.58824815e-04 2.69138959e-05 7.44624905e-04 -4.19384346e-04 1.50120025e-04 7.88241731e-03 -4.47145138e-03 8.24231853e-03 -1.92416159e-04 1.64256895e-04 4.87887308e-05 -6.47988162e-03 -4.07789392e-03 -3.94138564e-03 1.23324095e-04 -5.25627773e-03 5.01287669e-03 -5.01097526e-03 1.37774951e-04 1.58824815e-04 3.30152350e-04 -2.69138959e-05 7.44624905e-04 -1.50120025e-04 4.19384346e-04 2.15728427e-03 -2.15728427e-03 -1.78094826e-05 1.78094826e-05 2.30094432e-05 -2.30094432e-05 -3.89423179e-05 2.09120600e-06 2.09120600e-06 2.69138959e-05 -2.69138959e-05 8.49865950e-06 -4.16848167e-05 -4.16848167e-05 -6.96401205e-03 6.96401205e-03 6.96401205e-03 -5.76134452e-04 5.76134452e-04 5.76134452e-04 -2.78703402e-02 -1.70670281e-02 -1.70670281e-02 -3.91967293e-02 2.20334385e-02 -2.20334385e-02 1.21596738e-03 7.44624905e-04 7.44624905e-04 4.88351268e-03 -9.61306618e-04 9.61306618e-04 -6.65332653e-03 -6.20170953e-03 9.29544937e-03 2.19325430e-04 -3.17373257e-05 -2.41137503e-04 8.34518149e-03 5.10344353e-03 5.25183836e-03 1.91006991e-04 6.78582537e-03 -6.42339379e-03 6.50712338e-03 -2.58595459e-04 -4.19384346e-04 -1.50120025e-04 -4.16848167e-05 -9.61306618e-04 5.81078995e-04 -1.34231757e-04 6.65332653e-03 -9.29544937e-03 6.20170953e-03 -2.19325430e-04 2.41137503e-04 3.17373257e-05 -8.34518149e-03 -5.25183836e-03 -5.10344353e-03 1.91006991e-04 -6.78582537e-03 6.50712338e-03 -6.42339379e-03 2.58595459e-04 1.50120025e-04 4.19384346e-04 -4.16848167e-05 9.61306618e-04 -1.34231757e-04 5.81078995e-04 - 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 - 0 12 24 36 48 66 86 106 124 144 164 170 180 190 190 200 206 216 226 226 236 254 274 294 308 326 346 366 384 404 424 438 456 476 496 -1 1 -1 496 - -4.46730500e-01 2.90265885e-01 -6.65919095e-02 3.20736205e-02 -2.50681311e-01 -2.31073552e-01 -2.31073552e-01 2.31073552e-01 4.55715201e-02 9.09946312e-02 9.09946312e-02 -9.09946312e-02 2.90265885e-01 -7.77208948e-02 3.49623849e-02 -1.81562170e-02 1.29637869e-01 1.70706534e-01 1.70706534e-01 -1.70706534e-01 -4.68039666e-02 -8.78615395e-02 -8.78615395e-02 8.78615395e-02 -6.65919095e-02 3.49623849e-02 -8.97965282e-03 4.90391018e-03 -3.43603397e-02 -3.47760262e-02 -3.47760262e-02 3.47760262e-02 8.11017653e-03 1.51409429e-02 1.51409429e-02 -1.51409429e-02 3.20736205e-02 -1.81562170e-02 4.90391018e-03 -2.40214415e-03 1.90677593e-02 2.20810865e-02 2.20810865e-02 -2.20810865e-02 -5.48328334e-03 -1.08124682e-02 -1.08124682e-02 1.08124682e-02 -9.61307016e-02 -9.95491140e-02 -9.95491140e-02 3.84928096e-03 2.53788780e-03 2.53788780e-03 4.96626145e-03 1.19719253e-02 1.19719253e-02 1.34997473e-02 6.86525306e-04 -6.86525306e-04 7.75107441e-03 -7.88241731e-03 -7.88241731e-03 6.96401205e-03 6.65332653e-03 -6.65332653e-03 -9.95491140e-02 5.08101702e-02 9.95491140e-02 2.53788780e-03 9.11909087e-03 -2.53788780e-03 -6.78853114e-03 1.75623651e-03 3.65770659e-03 9.88504715e-03 -1.34997473e-02 2.68064379e-02 -1.14201355e-02 1.00868915e-02 -1.01418763e-02 4.47145138e-03 -2.15728427e-03 -6.96401205e-03 1.75321839e-02 9.29544937e-03 -9.95491140e-02 9.95491140e-02 5.08101702e-02 2.53788780e-03 -2.53788780e-03 9.11909087e-03 -6.78853114e-03 3.65770659e-03 1.75623651e-03 -9.88504715e-03 -1.34997473e-02 1.14201355e-02 -2.68064379e-02 1.00868915e-02 4.47145138e-03 -1.01418763e-02 2.15728427e-03 -6.96401205e-03 -9.29544937e-03 -1.75321839e-02 3.84928096e-03 2.53788780e-03 2.53788780e-03 -1.26047298e-04 7.82240681e-05 7.82240681e-05 -4.95769243e-03 -3.05324736e-03 -3.05324736e-03 -3.98965718e-03 3.80846317e-03 -3.80846317e-03 7.89606128e-05 1.92416159e-04 1.92416159e-04 5.76134452e-04 -2.19325430e-04 2.19325430e-04 2.53788780e-03 9.11909087e-03 -2.53788780e-03 7.82240681e-05 -8.82514067e-05 -7.82240681e-05 4.88057902e-03 3.11404071e-03 2.92421677e-03 -8.16061087e-05 3.98965718e-03 -3.81554628e-03 3.90840983e-03 -2.91222329e-04 -5.41259230e-05 -1.64256895e-04 1.78094826e-05 -5.76134452e-04 1.01124921e-04 -2.41137503e-04 2.53788780e-03 -2.53788780e-03 9.11909087e-03 7.82240681e-05 -7.82240681e-05 -8.82514067e-05 4.88057902e-03 2.92421677e-03 3.11404071e-03 8.16061087e-05 3.98965718e-03 -3.90840983e-03 3.81554628e-03 -2.91222329e-04 -1.64256895e-04 -5.41259230e-05 -1.78094826e-05 -5.76134452e-04 2.41137503e-04 -1.01124921e-04 -2.50681311e-01 1.29637869e-01 -3.43603397e-02 1.90677593e-02 2.55642069e-01 -5.76016724e-02 -2.31073552e-01 1.70706534e-01 -3.47760262e-02 2.20810865e-02 -8.69671403e-02 -8.69671403e-02 8.69671403e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 -2.31073552e-01 1.70706534e-01 -3.47760262e-02 2.20810865e-02 -8.69671403e-02 -8.69671403e-02 8.69671403e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 3.35169819e-01 -3.81033730e-02 -3.81033730e-02 -5.56692551e-02 4.55715201e-02 -4.68039666e-02 8.11017653e-03 -5.48328334e-03 -5.76016724e-02 1.36360519e-02 9.09946312e-02 -8.78615395e-02 1.51409429e-02 -1.08124682e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 -1.70016634e-02 -1.70016634e-02 1.70016634e-02 9.09946312e-02 -8.78615395e-02 1.51409429e-02 -1.08124682e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 -1.70016634e-02 -1.70016634e-02 1.70016634e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 -5.56692551e-02 1.70016634e-02 1.70016634e-02 3.82879364e-03 4.96626145e-03 -6.78853114e-03 -6.78853114e-03 -4.95769243e-03 4.88057902e-03 4.88057902e-03 -2.33214382e-01 -1.42959316e-01 -1.42959316e-01 -1.89783463e-01 1.84466621e-01 -1.84466621e-01 1.05548787e-02 6.47988162e-03 6.47988162e-03 2.78703402e-02 -8.34518149e-03 8.34518149e-03 1.19719253e-02 1.75623651e-03 3.65770659e-03 -3.05324736e-03 3.11404071e-03 2.92421677e-03 -1.42959316e-01 -8.74686860e-02 -8.75173384e-02 1.05433222e-04 -1.16218161e-01 1.13119631e-01 -1.12926204e-01 6.29096583e-03 3.92293329e-03 4.07789392e-03 -2.30094432e-05 1.70670281e-02 -4.94879992e-03 5.25183836e-03 1.19719253e-02 3.65770659e-03 1.75623651e-03 -3.05324736e-03 2.92421677e-03 3.11404071e-03 -1.42959316e-01 -8.75173384e-02 -8.74686860e-02 -1.05433222e-04 -1.16218161e-01 1.12926204e-01 -1.13119631e-01 6.29096583e-03 4.07789392e-03 3.92293329e-03 2.30094432e-05 1.70670281e-02 -5.25183836e-03 4.94879992e-03 9.88504715e-03 -9.88504715e-03 -8.16061087e-05 8.16061087e-05 1.05433222e-04 -1.05433222e-04 -1.78440391e-04 9.58226514e-06 9.58226514e-06 1.23324095e-04 -1.23324095e-04 3.89423179e-05 -1.91006991e-04 -1.91006991e-04 1.34997473e-02 -1.34997473e-02 -1.34997473e-02 -3.98965718e-03 3.98965718e-03 3.98965718e-03 -1.89783463e-01 -1.16218161e-01 -1.16218161e-01 5.86189719e-02 1.50037001e-01 -1.50037001e-01 8.58346559e-03 5.25627773e-03 5.25627773e-03 5.74991859e-03 -6.78582537e-03 6.78582537e-03 6.86525306e-04 2.68064379e-02 1.14201355e-02 3.80846317e-03 -3.81554628e-03 -3.90840983e-03 1.84466621e-01 1.13119631e-01 1.12926204e-01 9.58226514e-06 1.50037001e-01 -1.45660580e-01 1.45949895e-01 -8.49151503e-03 -5.04126819e-03 -5.01287669e-03 -2.09120600e-06 -2.20334385e-02 6.63188133e-03 -6.50712338e-03 -6.86525306e-04 -1.14201355e-02 -2.68064379e-02 -3.80846317e-03 3.90840983e-03 3.81554628e-03 -1.84466621e-01 -1.12926204e-01 -1.13119631e-01 9.58226514e-06 -1.50037001e-01 1.45949895e-01 -1.45660580e-01 8.49151503e-03 5.01287669e-03 5.04126819e-03 -2.09120600e-06 2.20334385e-02 -6.50712338e-03 6.63188133e-03 7.75107441e-03 1.00868915e-02 1.00868915e-02 7.89606128e-05 -2.91222329e-04 -2.91222329e-04 1.05548787e-02 6.29096583e-03 6.29096583e-03 8.58346559e-03 -8.49151503e-03 8.49151503e-03 -7.68391652e-04 -1.37774951e-04 -1.37774951e-04 -1.21596738e-03 2.58595459e-04 -2.58595459e-04 -7.88241731e-03 -1.01418763e-02 4.47145138e-03 1.92416159e-04 -5.41259230e-05 -1.64256895e-04 6.47988162e-03 3.92293329e-03 4.07789392e-03 1.23324095e-04 5.25627773e-03 -5.04126819e-03 5.01287669e-03 -1.37774951e-04 -3.28425304e-04 -1.58824815e-04 -2.69138959e-05 -7.44624905e-04 4.08892304e-04 -1.50120025e-04 -7.88241731e-03 4.47145138e-03 -1.01418763e-02 1.92416159e-04 -1.64256895e-04 -5.41259230e-05 6.47988162e-03 4.07789392e-03 3.92293329e-03 -1.23324095e-04 5.25627773e-03 -5.01287669e-03 5.04126819e-03 -1.37774951e-04 -1.58824815e-04 -3.28425304e-04 2.69138959e-05 -7.44624905e-04 1.50120025e-04 -4.08892304e-04 -2.15728427e-03 2.15728427e-03 1.78094826e-05 -1.78094826e-05 -2.30094432e-05 2.30094432e-05 3.89423179e-05 -2.09120600e-06 -2.09120600e-06 -2.69138959e-05 2.69138959e-05 -8.49865950e-06 4.16848167e-05 4.16848167e-05 6.96401205e-03 -6.96401205e-03 -6.96401205e-03 5.76134452e-04 -5.76134452e-04 -5.76134452e-04 2.78703402e-02 1.70670281e-02 1.70670281e-02 5.74991859e-03 -2.20334385e-02 2.20334385e-02 -1.21596738e-03 -7.44624905e-04 -7.44624905e-04 -2.25860819e-03 9.61306618e-04 -9.61306618e-04 6.65332653e-03 1.75321839e-02 -9.29544937e-03 -2.19325430e-04 1.01124921e-04 2.41137503e-04 -8.34518149e-03 -4.94879992e-03 -5.25183836e-03 -1.91006991e-04 -6.78582537e-03 6.63188133e-03 -6.50712338e-03 2.58595459e-04 4.08892304e-04 1.50120025e-04 4.16848167e-05 9.61306618e-04 -5.05218881e-04 1.34231757e-04 -6.65332653e-03 9.29544937e-03 -1.75321839e-02 2.19325430e-04 -2.41137503e-04 -1.01124921e-04 8.34518149e-03 5.25183836e-03 4.94879992e-03 -1.91006991e-04 6.78582537e-03 -6.50712338e-03 6.63188133e-03 -2.58595459e-04 -1.50120025e-04 -4.08892304e-04 4.16848167e-05 -9.61306618e-04 1.34231757e-04 -5.05218881e-04 - 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 - 0 12 24 36 48 66 86 106 124 144 164 170 180 190 190 200 206 216 226 226 236 254 274 294 308 326 346 366 384 404 424 438 456 476 496 -1 1 0 496 - 1.46471486e+00 2.54883877e-01 1.24590418e-01 -9.35884290e-03 -2.50681311e-01 2.31073552e-01 2.31073552e-01 -2.31073552e-01 4.55715201e-02 -9.09946312e-02 -9.09946312e-02 9.09946312e-02 2.54883877e-01 1.70428957e+00 -9.34218553e-02 1.65342489e-01 1.29637869e-01 -1.70706534e-01 -1.70706534e-01 1.70706534e-01 -4.68039666e-02 8.78615395e-02 8.78615395e-02 -8.78615395e-02 1.24590418e-01 -9.34218553e-02 1.88920782e-02 -1.20468125e-02 -3.43603397e-02 3.47760262e-02 3.47760262e-02 -3.47760262e-02 8.11017653e-03 -1.51409429e-02 -1.51409429e-02 1.51409429e-02 -9.35884290e-03 1.65342489e-01 -1.20468125e-02 1.72406024e-02 1.90677593e-02 -2.20810865e-02 -2.20810865e-02 2.20810865e-02 -5.48328334e-03 1.08124682e-02 1.08124682e-02 -1.08124682e-02 1.89517553e+00 9.95491140e-02 9.95491140e-02 -9.15785008e-03 -2.53788780e-03 -2.53788780e-03 -2.12388496e-02 -1.19719253e-02 -1.19719253e-02 -1.34997473e-02 -6.86525306e-04 6.86525306e-04 -2.22701900e-02 7.88241731e-03 7.88241731e-03 -6.96401205e-03 -6.65332653e-03 6.65332653e-03 9.95491140e-02 2.04211641e+00 -9.95491140e-02 -2.53788780e-03 -3.88804018e-03 2.53788780e-03 6.78853114e-03 1.78035242e-02 -3.65770659e-03 -9.88504715e-03 1.34997473e-02 6.08947863e-03 1.14201355e-02 -1.00868915e-02 8.24231853e-03 -4.47145138e-03 2.15728427e-03 6.96401205e-03 -6.20170953e-03 -9.29544937e-03 9.95491140e-02 -9.95491140e-02 2.04211641e+00 -2.53788780e-03 2.53788780e-03 -3.88804018e-03 6.78853114e-03 -3.65770659e-03 1.78035242e-02 9.88504715e-03 1.34997473e-02 -1.14201355e-02 -6.08947863e-03 -1.00868915e-02 -4.47145138e-03 8.24231853e-03 -2.15728427e-03 6.96401205e-03 9.29544937e-03 6.20170953e-03 -9.15785008e-03 -2.53788780e-03 -2.53788780e-03 1.79684460e-04 -7.82240681e-05 -7.82240681e-05 4.90771661e-03 3.05324736e-03 3.05324736e-03 3.98965718e-03 -3.80846317e-03 3.80846317e-03 -8.90983131e-05 -1.92416159e-04 -1.92416159e-04 -5.76134452e-04 2.19325430e-04 -2.19325430e-04 -2.53788780e-03 -3.88804018e-03 2.53788780e-03 -7.82240681e-05 2.17480352e-04 7.82240681e-05 -4.88057902e-03 -2.92726385e-03 -2.92421677e-03 8.16061087e-05 -3.98965718e-03 3.98374436e-03 -3.90840983e-03 2.91222329e-04 4.87887308e-05 1.64256895e-04 -1.78094826e-05 5.76134452e-04 -3.17373257e-05 2.41137503e-04 -2.53788780e-03 2.53788780e-03 -3.88804018e-03 -7.82240681e-05 7.82240681e-05 2.17480352e-04 -4.88057902e-03 -2.92421677e-03 -2.92726385e-03 -8.16061087e-05 -3.98965718e-03 3.90840983e-03 -3.98374436e-03 2.91222329e-04 1.64256895e-04 4.87887308e-05 1.78094826e-05 5.76134452e-04 -2.41137503e-04 3.17373257e-05 -2.50681311e-01 1.29637869e-01 -3.43603397e-02 1.90677593e-02 2.55642069e-01 -5.76016724e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 -8.69671403e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 -8.69671403e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 -2.31073552e-01 1.70706534e-01 -3.47760262e-02 2.20810865e-02 -8.69671403e-02 -8.69671403e-02 5.09104100e-01 3.81033730e-02 3.81033730e-02 -1.31876001e-01 4.55715201e-02 -4.68039666e-02 8.11017653e-03 -5.48328334e-03 -5.76016724e-02 1.36360519e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 1.70016634e-02 1.70016634e-02 -1.70016634e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 1.70016634e-02 1.70016634e-02 -1.70016634e-02 9.09946312e-02 -8.78615395e-02 1.51409429e-02 -1.08124682e-02 3.81033730e-02 3.81033730e-02 -1.31876001e-01 -1.70016634e-02 -1.70016634e-02 3.78321204e-02 -2.12388496e-02 6.78853114e-03 6.78853114e-03 4.90771661e-03 -4.88057902e-03 -4.88057902e-03 2.33614448e-01 1.42959316e-01 1.42959316e-01 1.89783463e-01 -1.84466621e-01 1.84466621e-01 -1.02868307e-02 -6.47988162e-03 -6.47988162e-03 -2.78703402e-02 8.34518149e-03 -8.34518149e-03 -1.19719253e-02 1.78035242e-02 -3.65770659e-03 3.05324736e-03 -2.92726385e-03 -2.92421677e-03 1.42959316e-01 8.78151758e-02 8.75173384e-02 -1.05433222e-04 1.16218161e-01 -1.12710131e-01 1.12926204e-01 -6.29096583e-03 -3.94138564e-03 -4.07789392e-03 2.30094432e-05 -1.70670281e-02 5.10344353e-03 -5.25183836e-03 -1.19719253e-02 -3.65770659e-03 1.78035242e-02 3.05324736e-03 -2.92421677e-03 -2.92726385e-03 1.42959316e-01 8.75173384e-02 8.78151758e-02 1.05433222e-04 1.16218161e-01 -1.12926204e-01 1.12710131e-01 -6.29096583e-03 -4.07789392e-03 -3.94138564e-03 -2.30094432e-05 -1.70670281e-02 5.25183836e-03 -5.10344353e-03 -9.88504715e-03 9.88504715e-03 8.16061087e-05 -8.16061087e-05 -1.05433222e-04 1.05433222e-04 1.78440391e-04 -9.58226514e-06 -9.58226514e-06 -1.23324095e-04 1.23324095e-04 -3.89423179e-05 1.91006991e-04 1.91006991e-04 -1.34997473e-02 1.34997473e-02 1.34997473e-02 3.98965718e-03 -3.98965718e-03 -3.98965718e-03 1.89783463e-01 1.16218161e-01 1.16218161e-01 3.67563826e-01 -1.50037001e-01 1.50037001e-01 -8.58346559e-03 -5.25627773e-03 -5.25627773e-03 -3.91967293e-02 6.78582537e-03 -6.78582537e-03 -6.86525306e-04 6.08947863e-03 -1.14201355e-02 -3.80846317e-03 3.98374436e-03 3.90840983e-03 -1.84466621e-01 -1.12710131e-01 -1.12926204e-01 -9.58226514e-06 -1.50037001e-01 1.46241269e-01 -1.45949895e-01 8.49151503e-03 5.01097526e-03 5.01287669e-03 2.09120600e-06 2.20334385e-02 -6.42339379e-03 6.50712338e-03 6.86525306e-04 1.14201355e-02 -6.08947863e-03 3.80846317e-03 -3.90840983e-03 -3.98374436e-03 1.84466621e-01 1.12926204e-01 1.12710131e-01 -9.58226514e-06 1.50037001e-01 -1.45949895e-01 1.46241269e-01 -8.49151503e-03 -5.01287669e-03 -5.01097526e-03 2.09120600e-06 -2.20334385e-02 6.50712338e-03 -6.42339379e-03 -2.22701900e-02 -1.00868915e-02 -1.00868915e-02 -8.90983131e-05 2.91222329e-04 2.91222329e-04 -1.02868307e-02 -6.29096583e-03 -6.29096583e-03 -8.58346559e-03 8.49151503e-03 -8.49151503e-03 9.59486559e-04 1.37774951e-04 1.37774951e-04 1.21596738e-03 -2.58595459e-04 2.58595459e-04 7.88241731e-03 8.24231853e-03 -4.47145138e-03 -1.92416159e-04 4.87887308e-05 1.64256895e-04 -6.47988162e-03 -3.94138564e-03 -4.07789392e-03 -1.23324095e-04 -5.25627773e-03 5.01097526e-03 -5.01287669e-03 1.37774951e-04 3.30152350e-04 1.58824815e-04 2.69138959e-05 7.44624905e-04 -4.19384346e-04 1.50120025e-04 7.88241731e-03 -4.47145138e-03 8.24231853e-03 -1.92416159e-04 1.64256895e-04 4.87887308e-05 -6.47988162e-03 -4.07789392e-03 -3.94138564e-03 1.23324095e-04 -5.25627773e-03 5.01287669e-03 -5.01097526e-03 1.37774951e-04 1.58824815e-04 3.30152350e-04 -2.69138959e-05 7.44624905e-04 -1.50120025e-04 4.19384346e-04 2.15728427e-03 -2.15728427e-03 -1.78094826e-05 1.78094826e-05 2.30094432e-05 -2.30094432e-05 -3.89423179e-05 2.09120600e-06 2.09120600e-06 2.69138959e-05 -2.69138959e-05 8.49865950e-06 -4.16848167e-05 -4.16848167e-05 -6.96401205e-03 6.96401205e-03 6.96401205e-03 -5.76134452e-04 5.76134452e-04 5.76134452e-04 -2.78703402e-02 -1.70670281e-02 -1.70670281e-02 -3.91967293e-02 2.20334385e-02 -2.20334385e-02 1.21596738e-03 7.44624905e-04 7.44624905e-04 4.88351268e-03 -9.61306618e-04 9.61306618e-04 -6.65332653e-03 -6.20170953e-03 9.29544937e-03 2.19325430e-04 -3.17373257e-05 -2.41137503e-04 8.34518149e-03 5.10344353e-03 5.25183836e-03 1.91006991e-04 6.78582537e-03 -6.42339379e-03 6.50712338e-03 -2.58595459e-04 -4.19384346e-04 -1.50120025e-04 -4.16848167e-05 -9.61306618e-04 5.81078995e-04 -1.34231757e-04 6.65332653e-03 -9.29544937e-03 6.20170953e-03 -2.19325430e-04 2.41137503e-04 3.17373257e-05 -8.34518149e-03 -5.25183836e-03 -5.10344353e-03 1.91006991e-04 -6.78582537e-03 6.50712338e-03 -6.42339379e-03 2.58595459e-04 1.50120025e-04 4.19384346e-04 -4.16848167e-05 9.61306618e-04 -1.34231757e-04 5.81078995e-04 - 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 - 0 12 24 36 48 66 86 106 124 144 164 170 180 190 190 200 206 216 226 226 236 254 274 294 308 326 346 366 384 404 424 438 456 476 496 -1 1 1 496 - -4.46730500e-01 2.90265885e-01 -6.65919095e-02 3.20736205e-02 -2.50681311e-01 -2.31073552e-01 -2.31073552e-01 2.31073552e-01 4.55715201e-02 9.09946312e-02 9.09946312e-02 -9.09946312e-02 2.90265885e-01 -7.77208948e-02 3.49623849e-02 -1.81562170e-02 1.29637869e-01 1.70706534e-01 1.70706534e-01 -1.70706534e-01 -4.68039666e-02 -8.78615395e-02 -8.78615395e-02 8.78615395e-02 -6.65919095e-02 3.49623849e-02 -8.97965282e-03 4.90391018e-03 -3.43603397e-02 -3.47760262e-02 -3.47760262e-02 3.47760262e-02 8.11017653e-03 1.51409429e-02 1.51409429e-02 -1.51409429e-02 3.20736205e-02 -1.81562170e-02 4.90391018e-03 -2.40214415e-03 1.90677593e-02 2.20810865e-02 2.20810865e-02 -2.20810865e-02 -5.48328334e-03 -1.08124682e-02 -1.08124682e-02 1.08124682e-02 -9.61307016e-02 -9.95491140e-02 -9.95491140e-02 3.84928096e-03 2.53788780e-03 2.53788780e-03 4.96626145e-03 1.19719253e-02 1.19719253e-02 1.34997473e-02 6.86525306e-04 -6.86525306e-04 7.75107441e-03 -7.88241731e-03 -7.88241731e-03 6.96401205e-03 6.65332653e-03 -6.65332653e-03 -9.95491140e-02 5.08101702e-02 9.95491140e-02 2.53788780e-03 9.11909087e-03 -2.53788780e-03 -6.78853114e-03 1.75623651e-03 3.65770659e-03 9.88504715e-03 -1.34997473e-02 2.68064379e-02 -1.14201355e-02 1.00868915e-02 -1.01418763e-02 4.47145138e-03 -2.15728427e-03 -6.96401205e-03 1.75321839e-02 9.29544937e-03 -9.95491140e-02 9.95491140e-02 5.08101702e-02 2.53788780e-03 -2.53788780e-03 9.11909087e-03 -6.78853114e-03 3.65770659e-03 1.75623651e-03 -9.88504715e-03 -1.34997473e-02 1.14201355e-02 -2.68064379e-02 1.00868915e-02 4.47145138e-03 -1.01418763e-02 2.15728427e-03 -6.96401205e-03 -9.29544937e-03 -1.75321839e-02 3.84928096e-03 2.53788780e-03 2.53788780e-03 -1.26047298e-04 7.82240681e-05 7.82240681e-05 -4.95769243e-03 -3.05324736e-03 -3.05324736e-03 -3.98965718e-03 3.80846317e-03 -3.80846317e-03 7.89606128e-05 1.92416159e-04 1.92416159e-04 5.76134452e-04 -2.19325430e-04 2.19325430e-04 2.53788780e-03 9.11909087e-03 -2.53788780e-03 7.82240681e-05 -8.82514067e-05 -7.82240681e-05 4.88057902e-03 3.11404071e-03 2.92421677e-03 -8.16061087e-05 3.98965718e-03 -3.81554628e-03 3.90840983e-03 -2.91222329e-04 -5.41259230e-05 -1.64256895e-04 1.78094826e-05 -5.76134452e-04 1.01124921e-04 -2.41137503e-04 2.53788780e-03 -2.53788780e-03 9.11909087e-03 7.82240681e-05 -7.82240681e-05 -8.82514067e-05 4.88057902e-03 2.92421677e-03 3.11404071e-03 8.16061087e-05 3.98965718e-03 -3.90840983e-03 3.81554628e-03 -2.91222329e-04 -1.64256895e-04 -5.41259230e-05 -1.78094826e-05 -5.76134452e-04 2.41137503e-04 -1.01124921e-04 -2.50681311e-01 1.29637869e-01 -3.43603397e-02 1.90677593e-02 2.55642069e-01 -5.76016724e-02 -2.31073552e-01 1.70706534e-01 -3.47760262e-02 2.20810865e-02 -8.69671403e-02 -8.69671403e-02 8.69671403e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 -2.31073552e-01 1.70706534e-01 -3.47760262e-02 2.20810865e-02 -8.69671403e-02 -8.69671403e-02 8.69671403e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 3.35169819e-01 -3.81033730e-02 -3.81033730e-02 -5.56692551e-02 4.55715201e-02 -4.68039666e-02 8.11017653e-03 -5.48328334e-03 -5.76016724e-02 1.36360519e-02 9.09946312e-02 -8.78615395e-02 1.51409429e-02 -1.08124682e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 -1.70016634e-02 -1.70016634e-02 1.70016634e-02 9.09946312e-02 -8.78615395e-02 1.51409429e-02 -1.08124682e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 -1.70016634e-02 -1.70016634e-02 1.70016634e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 -5.56692551e-02 1.70016634e-02 1.70016634e-02 3.82879364e-03 4.96626145e-03 -6.78853114e-03 -6.78853114e-03 -4.95769243e-03 4.88057902e-03 4.88057902e-03 -2.33214382e-01 -1.42959316e-01 -1.42959316e-01 -1.89783463e-01 1.84466621e-01 -1.84466621e-01 1.05548787e-02 6.47988162e-03 6.47988162e-03 2.78703402e-02 -8.34518149e-03 8.34518149e-03 1.19719253e-02 1.75623651e-03 3.65770659e-03 -3.05324736e-03 3.11404071e-03 2.92421677e-03 -1.42959316e-01 -8.74686860e-02 -8.75173384e-02 1.05433222e-04 -1.16218161e-01 1.13119631e-01 -1.12926204e-01 6.29096583e-03 3.92293329e-03 4.07789392e-03 -2.30094432e-05 1.70670281e-02 -4.94879992e-03 5.25183836e-03 1.19719253e-02 3.65770659e-03 1.75623651e-03 -3.05324736e-03 2.92421677e-03 3.11404071e-03 -1.42959316e-01 -8.75173384e-02 -8.74686860e-02 -1.05433222e-04 -1.16218161e-01 1.12926204e-01 -1.13119631e-01 6.29096583e-03 4.07789392e-03 3.92293329e-03 2.30094432e-05 1.70670281e-02 -5.25183836e-03 4.94879992e-03 9.88504715e-03 -9.88504715e-03 -8.16061087e-05 8.16061087e-05 1.05433222e-04 -1.05433222e-04 -1.78440391e-04 9.58226514e-06 9.58226514e-06 1.23324095e-04 -1.23324095e-04 3.89423179e-05 -1.91006991e-04 -1.91006991e-04 1.34997473e-02 -1.34997473e-02 -1.34997473e-02 -3.98965718e-03 3.98965718e-03 3.98965718e-03 -1.89783463e-01 -1.16218161e-01 -1.16218161e-01 5.86189719e-02 1.50037001e-01 -1.50037001e-01 8.58346559e-03 5.25627773e-03 5.25627773e-03 5.74991859e-03 -6.78582537e-03 6.78582537e-03 6.86525306e-04 2.68064379e-02 1.14201355e-02 3.80846317e-03 -3.81554628e-03 -3.90840983e-03 1.84466621e-01 1.13119631e-01 1.12926204e-01 9.58226514e-06 1.50037001e-01 -1.45660580e-01 1.45949895e-01 -8.49151503e-03 -5.04126819e-03 -5.01287669e-03 -2.09120600e-06 -2.20334385e-02 6.63188133e-03 -6.50712338e-03 -6.86525306e-04 -1.14201355e-02 -2.68064379e-02 -3.80846317e-03 3.90840983e-03 3.81554628e-03 -1.84466621e-01 -1.12926204e-01 -1.13119631e-01 9.58226514e-06 -1.50037001e-01 1.45949895e-01 -1.45660580e-01 8.49151503e-03 5.01287669e-03 5.04126819e-03 -2.09120600e-06 2.20334385e-02 -6.50712338e-03 6.63188133e-03 7.75107441e-03 1.00868915e-02 1.00868915e-02 7.89606128e-05 -2.91222329e-04 -2.91222329e-04 1.05548787e-02 6.29096583e-03 6.29096583e-03 8.58346559e-03 -8.49151503e-03 8.49151503e-03 -7.68391652e-04 -1.37774951e-04 -1.37774951e-04 -1.21596738e-03 2.58595459e-04 -2.58595459e-04 -7.88241731e-03 -1.01418763e-02 4.47145138e-03 1.92416159e-04 -5.41259230e-05 -1.64256895e-04 6.47988162e-03 3.92293329e-03 4.07789392e-03 1.23324095e-04 5.25627773e-03 -5.04126819e-03 5.01287669e-03 -1.37774951e-04 -3.28425304e-04 -1.58824815e-04 -2.69138959e-05 -7.44624905e-04 4.08892304e-04 -1.50120025e-04 -7.88241731e-03 4.47145138e-03 -1.01418763e-02 1.92416159e-04 -1.64256895e-04 -5.41259230e-05 6.47988162e-03 4.07789392e-03 3.92293329e-03 -1.23324095e-04 5.25627773e-03 -5.01287669e-03 5.04126819e-03 -1.37774951e-04 -1.58824815e-04 -3.28425304e-04 2.69138959e-05 -7.44624905e-04 1.50120025e-04 -4.08892304e-04 -2.15728427e-03 2.15728427e-03 1.78094826e-05 -1.78094826e-05 -2.30094432e-05 2.30094432e-05 3.89423179e-05 -2.09120600e-06 -2.09120600e-06 -2.69138959e-05 2.69138959e-05 -8.49865950e-06 4.16848167e-05 4.16848167e-05 6.96401205e-03 -6.96401205e-03 -6.96401205e-03 5.76134452e-04 -5.76134452e-04 -5.76134452e-04 2.78703402e-02 1.70670281e-02 1.70670281e-02 5.74991859e-03 -2.20334385e-02 2.20334385e-02 -1.21596738e-03 -7.44624905e-04 -7.44624905e-04 -2.25860819e-03 9.61306618e-04 -9.61306618e-04 6.65332653e-03 1.75321839e-02 -9.29544937e-03 -2.19325430e-04 1.01124921e-04 2.41137503e-04 -8.34518149e-03 -4.94879992e-03 -5.25183836e-03 -1.91006991e-04 -6.78582537e-03 6.63188133e-03 -6.50712338e-03 2.58595459e-04 4.08892304e-04 1.50120025e-04 4.16848167e-05 9.61306618e-04 -5.05218881e-04 1.34231757e-04 -6.65332653e-03 9.29544937e-03 -1.75321839e-02 2.19325430e-04 -2.41137503e-04 -1.01124921e-04 8.34518149e-03 5.25183836e-03 4.94879992e-03 -1.91006991e-04 6.78582537e-03 -6.50712338e-03 6.63188133e-03 -2.58595459e-04 -1.50120025e-04 -4.08892304e-04 4.16848167e-05 -9.61306618e-04 1.34231757e-04 -5.05218881e-04 - 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 - 0 12 24 36 48 66 86 106 124 144 164 170 180 190 190 200 206 216 226 226 236 254 274 294 308 326 346 366 384 404 424 438 456 476 496 -1 2 -2 496 - -1.30077665e+00 -3.97979828e-02 -1.21755678e-01 3.00506476e-02 2.50681311e-01 -2.31073552e-01 -2.31073552e-01 2.31073552e-01 -4.55715201e-02 9.09946312e-02 9.09946312e-02 -9.09946312e-02 -3.97979828e-02 -1.15126664e+00 8.95185576e-02 -1.01048380e-01 -1.29637869e-01 1.70706534e-01 1.70706534e-01 -1.70706534e-01 4.68039666e-02 -8.78615395e-02 -8.78615395e-02 8.78615395e-02 -1.21755678e-01 8.95185576e-02 -1.86285298e-02 1.13591275e-02 3.43603397e-02 -3.47760262e-02 -3.47760262e-02 3.47760262e-02 -8.11017653e-03 1.51409429e-02 1.51409429e-02 -1.51409429e-02 3.00506476e-02 -1.01048380e-01 1.13591275e-02 -9.53400814e-03 -1.90677593e-02 2.20810865e-02 2.20810865e-02 -2.20810865e-02 5.48328334e-03 -1.08124682e-02 -1.08124682e-02 1.08124682e-02 -1.32837516e+00 -9.95491140e-02 -9.95491140e-02 3.64581589e-03 2.53788780e-03 2.53788780e-03 2.60203672e-02 1.19719253e-02 1.19719253e-02 1.34997473e-02 6.86525306e-04 -6.86525306e-04 2.30528378e-02 -7.88241731e-03 -7.88241731e-03 6.96401205e-03 6.65332653e-03 -6.65332653e-03 -9.95491140e-02 -1.47531604e+00 9.95491140e-02 2.53788780e-03 -1.62399402e-03 -2.53788780e-03 -6.78853114e-03 -2.07315938e-02 3.65770659e-03 9.88504715e-03 -1.34997473e-02 -2.30935703e-03 -1.14201355e-02 1.00868915e-02 -8.72159043e-03 4.47145138e-03 -2.15728427e-03 -6.96401205e-03 6.82044689e-03 9.29544937e-03 -9.95491140e-02 9.95491140e-02 -1.47531604e+00 2.53788780e-03 -2.53788780e-03 -1.62399402e-03 -6.78853114e-03 3.65770659e-03 -2.07315938e-02 -9.88504715e-03 -1.34997473e-02 1.14201355e-02 2.30935703e-03 1.00868915e-02 4.47145138e-03 -8.72159043e-03 2.15728427e-03 -6.96401205e-03 -9.29544937e-03 -6.82044689e-03 3.64581589e-03 2.53788780e-03 2.53788780e-03 -1.26080894e-04 7.82240681e-05 7.82240681e-05 -4.95421603e-03 -3.05324736e-03 -3.05324736e-03 -3.98965718e-03 3.80846317e-03 -3.80846317e-03 8.14872011e-05 1.92416159e-04 1.92416159e-04 5.76134452e-04 -2.19325430e-04 2.19325430e-04 2.53788780e-03 -1.62399402e-03 -2.53788780e-03 7.82240681e-05 -1.63876786e-04 -7.82240681e-05 4.88057902e-03 2.95573881e-03 2.92421677e-03 -8.16061087e-05 3.98965718e-03 -4.02050538e-03 3.90840983e-03 -2.91222329e-04 -4.41278956e-05 -1.64256895e-04 1.78094826e-05 -5.76134452e-04 2.57202134e-05 -2.41137503e-04 2.53788780e-03 -2.53788780e-03 -1.62399402e-03 7.82240681e-05 -7.82240681e-05 -1.63876786e-04 4.88057902e-03 2.92421677e-03 2.95573881e-03 8.16061087e-05 3.98965718e-03 -3.90840983e-03 4.02050538e-03 -2.91222329e-04 -1.64256895e-04 -4.41278956e-05 -1.78094826e-05 -5.76134452e-04 2.41137503e-04 -2.57202134e-05 2.50681311e-01 -1.29637869e-01 3.43603397e-02 -1.90677593e-02 -2.55642069e-01 5.76016724e-02 -2.31073552e-01 1.70706534e-01 -3.47760262e-02 2.20810865e-02 -8.69671403e-02 -8.69671403e-02 8.69671403e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 -2.31073552e-01 1.70706534e-01 -3.47760262e-02 2.20810865e-02 -8.69671403e-02 -8.69671403e-02 8.69671403e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 -5.09104100e-01 -3.81033730e-02 -3.81033730e-02 1.31876001e-01 -4.55715201e-02 4.68039666e-02 -8.11017653e-03 5.48328334e-03 5.76016724e-02 -1.36360519e-02 9.09946312e-02 -8.78615395e-02 1.51409429e-02 -1.08124682e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 -1.70016634e-02 -1.70016634e-02 1.70016634e-02 9.09946312e-02 -8.78615395e-02 1.51409429e-02 -1.08124682e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 -1.70016634e-02 -1.70016634e-02 1.70016634e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 1.31876001e-01 1.70016634e-02 1.70016634e-02 -3.78321204e-02 2.60203672e-02 -6.78853114e-03 -6.78853114e-03 -4.95421603e-03 4.88057902e-03 4.88057902e-03 -2.33574112e-01 -1.42959316e-01 -1.42959316e-01 -1.89783463e-01 1.84466621e-01 -1.84466621e-01 1.02934331e-02 6.47988162e-03 6.47988162e-03 2.78703402e-02 -8.34518149e-03 8.34518149e-03 1.19719253e-02 -2.07315938e-02 3.65770659e-03 -3.05324736e-03 2.95573881e-03 2.92421677e-03 -1.42959316e-01 -8.78000495e-02 -8.75173384e-02 1.05433222e-04 -1.16218161e-01 1.12690603e-01 -1.12926204e-01 6.29096583e-03 3.94386154e-03 4.07789392e-03 -2.30094432e-05 1.70670281e-02 -5.10663990e-03 5.25183836e-03 1.19719253e-02 3.65770659e-03 -2.07315938e-02 -3.05324736e-03 2.92421677e-03 2.95573881e-03 -1.42959316e-01 -8.75173384e-02 -8.78000495e-02 -1.05433222e-04 -1.16218161e-01 1.12926204e-01 -1.12690603e-01 6.29096583e-03 4.07789392e-03 3.94386154e-03 2.30094432e-05 1.70670281e-02 -5.25183836e-03 5.10663990e-03 9.88504715e-03 -9.88504715e-03 -8.16061087e-05 8.16061087e-05 1.05433222e-04 -1.05433222e-04 -1.78440391e-04 9.58226514e-06 9.58226514e-06 1.23324095e-04 -1.23324095e-04 3.89423179e-05 -1.91006991e-04 -1.91006991e-04 1.34997473e-02 -1.34997473e-02 -1.34997473e-02 -3.98965718e-03 3.98965718e-03 3.98965718e-03 -1.89783463e-01 -1.16218161e-01 -1.16218161e-01 5.86189719e-02 1.50037001e-01 -1.50037001e-01 8.58346559e-03 5.25627773e-03 5.25627773e-03 5.74991859e-03 -6.78582537e-03 6.78582537e-03 6.86525306e-04 -2.30935703e-03 1.14201355e-02 3.80846317e-03 -4.02050538e-03 -3.90840983e-03 1.84466621e-01 1.12690603e-01 1.12926204e-01 9.58226514e-06 1.50037001e-01 -1.46216058e-01 1.45949895e-01 -8.49151503e-03 -5.01417164e-03 -5.01287669e-03 -2.09120600e-06 -2.20334385e-02 6.42752029e-03 -6.50712338e-03 -6.86525306e-04 -1.14201355e-02 2.30935703e-03 -3.80846317e-03 3.90840983e-03 4.02050538e-03 -1.84466621e-01 -1.12926204e-01 -1.12690603e-01 9.58226514e-06 -1.50037001e-01 1.45949895e-01 -1.46216058e-01 8.49151503e-03 5.01287669e-03 5.01417164e-03 -2.09120600e-06 2.20334385e-02 -6.50712338e-03 6.42752029e-03 2.30528378e-02 1.00868915e-02 1.00868915e-02 8.14872011e-05 -2.91222329e-04 -2.91222329e-04 1.02934331e-02 6.29096583e-03 6.29096583e-03 8.58346559e-03 -8.49151503e-03 8.49151503e-03 -9.58405865e-04 -1.37774951e-04 -1.37774951e-04 -1.21596738e-03 2.58595459e-04 -2.58595459e-04 -7.88241731e-03 -8.72159043e-03 4.47145138e-03 1.92416159e-04 -4.41278956e-05 -1.64256895e-04 6.47988162e-03 3.94386154e-03 4.07789392e-03 1.23324095e-04 5.25627773e-03 -5.01417164e-03 5.01287669e-03 -1.37774951e-04 -3.29747090e-04 -1.58824815e-04 -2.69138959e-05 -7.44624905e-04 4.18861158e-04 -1.50120025e-04 -7.88241731e-03 4.47145138e-03 -8.72159043e-03 1.92416159e-04 -1.64256895e-04 -4.41278956e-05 6.47988162e-03 4.07789392e-03 3.94386154e-03 -1.23324095e-04 5.25627773e-03 -5.01287669e-03 5.01417164e-03 -1.37774951e-04 -1.58824815e-04 -3.29747090e-04 2.69138959e-05 -7.44624905e-04 1.50120025e-04 -4.18861158e-04 -2.15728427e-03 2.15728427e-03 1.78094826e-05 -1.78094826e-05 -2.30094432e-05 2.30094432e-05 3.89423179e-05 -2.09120600e-06 -2.09120600e-06 -2.69138959e-05 2.69138959e-05 -8.49865950e-06 4.16848167e-05 4.16848167e-05 6.96401205e-03 -6.96401205e-03 -6.96401205e-03 5.76134452e-04 -5.76134452e-04 -5.76134452e-04 2.78703402e-02 1.70670281e-02 1.70670281e-02 5.74991859e-03 -2.20334385e-02 2.20334385e-02 -1.21596738e-03 -7.44624905e-04 -7.44624905e-04 -2.25860819e-03 9.61306618e-04 -9.61306618e-04 6.65332653e-03 6.82044689e-03 -9.29544937e-03 -2.19325430e-04 2.57202134e-05 2.41137503e-04 -8.34518149e-03 -5.10663990e-03 -5.25183836e-03 -1.91006991e-04 -6.78582537e-03 6.42752029e-03 -6.50712338e-03 2.58595459e-04 4.18861158e-04 1.50120025e-04 4.16848167e-05 9.61306618e-04 -5.80403562e-04 1.34231757e-04 -6.65332653e-03 9.29544937e-03 -6.82044689e-03 2.19325430e-04 -2.41137503e-04 -2.57202134e-05 8.34518149e-03 5.25183836e-03 5.10663990e-03 -1.91006991e-04 6.78582537e-03 -6.50712338e-03 6.42752029e-03 -2.58595459e-04 -1.50120025e-04 -4.18861158e-04 4.16848167e-05 -9.61306618e-04 1.34231757e-04 -5.80403562e-04 - 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 - 0 12 24 36 48 66 86 106 124 144 164 170 180 190 190 200 206 216 226 226 236 254 274 294 308 326 346 366 384 404 424 438 456 476 496 -1 2 -1 496 - 6.10668701e-01 -7.51799909e-02 6.94266500e-02 -1.13818158e-02 2.50681311e-01 2.31073552e-01 2.31073552e-01 -2.31073552e-01 -4.55715201e-02 -9.09946312e-02 -9.09946312e-02 9.09946312e-02 -7.51799909e-02 6.30743818e-01 -3.88656825e-02 8.24503254e-02 -1.29637869e-01 -1.70706534e-01 -1.70706534e-01 1.70706534e-01 4.68039666e-02 8.78615395e-02 8.78615395e-02 -8.78615395e-02 6.94266500e-02 -3.88656825e-02 9.24320123e-03 -5.59159516e-03 3.43603397e-02 3.47760262e-02 3.47760262e-02 -3.47760262e-02 -8.11017653e-03 -1.51409429e-02 -1.51409429e-02 1.51409429e-02 -1.13818158e-02 8.24503254e-02 -5.59159516e-03 1.01087384e-02 -1.90677593e-02 -2.20810865e-02 -2.20810865e-02 2.20810865e-02 5.48328334e-03 1.08124682e-02 1.08124682e-02 -1.08124682e-02 6.62931071e-01 9.95491140e-02 9.95491140e-02 -9.36131516e-03 -2.53788780e-03 -2.53788780e-03 -1.84743808e-04 -1.19719253e-02 -1.19719253e-02 -1.34997473e-02 -6.86525306e-04 6.86525306e-04 -6.96842667e-03 7.88241731e-03 7.88241731e-03 -6.96401205e-03 -6.65332653e-03 6.65332653e-03 9.95491140e-02 5.15990200e-01 -9.95491140e-02 -2.53788780e-03 -1.46311251e-02 2.53788780e-03 6.78853114e-03 -4.68430612e-03 -3.65770659e-03 -9.88504715e-03 1.34997473e-02 -2.30263163e-02 1.14201355e-02 -1.00868915e-02 9.66260440e-03 -4.47145138e-03 2.15728427e-03 6.96401205e-03 -1.69134466e-02 -9.29544937e-03 9.95491140e-02 -9.95491140e-02 5.15990200e-01 -2.53788780e-03 2.53788780e-03 -1.46311251e-02 6.78853114e-03 -3.65770659e-03 -4.68430612e-03 9.88504715e-03 1.34997473e-02 -1.14201355e-02 2.30263163e-02 -1.00868915e-02 -4.47145138e-03 9.66260440e-03 -2.15728427e-03 6.96401205e-03 9.29544937e-03 1.69134466e-02 -9.36131516e-03 -2.53788780e-03 -2.53788780e-03 1.79650864e-04 -7.82240681e-05 -7.82240681e-05 4.91119301e-03 3.05324736e-03 3.05324736e-03 3.98965718e-03 -3.80846317e-03 3.80846317e-03 -8.65717248e-05 -1.92416159e-04 -1.92416159e-04 -5.76134452e-04 2.19325430e-04 -2.19325430e-04 -2.53788780e-03 -1.46311251e-02 2.53788780e-03 -7.82240681e-05 1.41854973e-04 7.82240681e-05 -4.88057902e-03 -3.08556574e-03 -2.92421677e-03 8.16061087e-05 -3.98965718e-03 3.77878526e-03 -3.90840983e-03 2.91222329e-04 5.87867582e-05 1.64256895e-04 -1.78094826e-05 5.76134452e-04 -1.07142033e-04 2.41137503e-04 -2.53788780e-03 2.53788780e-03 -1.46311251e-02 -7.82240681e-05 7.82240681e-05 1.41854973e-04 -4.88057902e-03 -2.92421677e-03 -3.08556574e-03 -8.16061087e-05 -3.98965718e-03 3.90840983e-03 -3.77878526e-03 2.91222329e-04 1.64256895e-04 5.87867582e-05 1.78094826e-05 5.76134452e-04 -2.41137503e-04 1.07142033e-04 2.50681311e-01 -1.29637869e-01 3.43603397e-02 -1.90677593e-02 -2.55642069e-01 5.76016724e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 -8.69671403e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 -8.69671403e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 -2.31073552e-01 1.70706534e-01 -3.47760262e-02 2.20810865e-02 -8.69671403e-02 -8.69671403e-02 -3.35169819e-01 3.81033730e-02 3.81033730e-02 5.56692551e-02 -4.55715201e-02 4.68039666e-02 -8.11017653e-03 5.48328334e-03 5.76016724e-02 -1.36360519e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 1.70016634e-02 1.70016634e-02 -1.70016634e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 1.70016634e-02 1.70016634e-02 -1.70016634e-02 9.09946312e-02 -8.78615395e-02 1.51409429e-02 -1.08124682e-02 3.81033730e-02 3.81033730e-02 5.56692551e-02 -1.70016634e-02 -1.70016634e-02 -3.82879364e-03 -1.84743808e-04 6.78853114e-03 6.78853114e-03 4.91119301e-03 -4.88057902e-03 -4.88057902e-03 2.33254718e-01 1.42959316e-01 1.42959316e-01 1.89783463e-01 -1.84466621e-01 1.84466621e-01 -1.05482763e-02 -6.47988162e-03 -6.47988162e-03 -2.78703402e-02 8.34518149e-03 -8.34518149e-03 -1.19719253e-02 -4.68430612e-03 -3.65770659e-03 3.05324736e-03 -3.08556574e-03 -2.92421677e-03 1.42959316e-01 8.74838123e-02 8.75173384e-02 -1.05433222e-04 1.16218161e-01 -1.13139159e-01 1.12926204e-01 -6.29096583e-03 -3.92045739e-03 -4.07789392e-03 2.30094432e-05 -1.70670281e-02 4.94560355e-03 -5.25183836e-03 -1.19719253e-02 -3.65770659e-03 -4.68430612e-03 3.05324736e-03 -2.92421677e-03 -3.08556574e-03 1.42959316e-01 8.75173384e-02 8.74838123e-02 1.05433222e-04 1.16218161e-01 -1.12926204e-01 1.13139159e-01 -6.29096583e-03 -4.07789392e-03 -3.92045739e-03 -2.30094432e-05 -1.70670281e-02 5.25183836e-03 -4.94560355e-03 -9.88504715e-03 9.88504715e-03 8.16061087e-05 -8.16061087e-05 -1.05433222e-04 1.05433222e-04 1.78440391e-04 -9.58226514e-06 -9.58226514e-06 -1.23324095e-04 1.23324095e-04 -3.89423179e-05 1.91006991e-04 1.91006991e-04 -1.34997473e-02 1.34997473e-02 1.34997473e-02 3.98965718e-03 -3.98965718e-03 -3.98965718e-03 1.89783463e-01 1.16218161e-01 1.16218161e-01 3.67563826e-01 -1.50037001e-01 1.50037001e-01 -8.58346559e-03 -5.25627773e-03 -5.25627773e-03 -3.91967293e-02 6.78582537e-03 -6.78582537e-03 -6.86525306e-04 -2.30263163e-02 -1.14201355e-02 -3.80846317e-03 3.77878526e-03 3.90840983e-03 -1.84466621e-01 -1.13139159e-01 -1.12926204e-01 -9.58226514e-06 -1.50037001e-01 1.45685791e-01 -1.45949895e-01 8.49151503e-03 5.03807181e-03 5.01287669e-03 2.09120600e-06 2.20334385e-02 -6.62775483e-03 6.50712338e-03 6.86525306e-04 1.14201355e-02 2.30263163e-02 3.80846317e-03 -3.90840983e-03 -3.77878526e-03 1.84466621e-01 1.12926204e-01 1.13139159e-01 -9.58226514e-06 1.50037001e-01 -1.45949895e-01 1.45685791e-01 -8.49151503e-03 -5.01287669e-03 -5.03807181e-03 2.09120600e-06 -2.20334385e-02 6.50712338e-03 -6.62775483e-03 -6.96842667e-03 -1.00868915e-02 -1.00868915e-02 -8.65717248e-05 2.91222329e-04 2.91222329e-04 -1.05482763e-02 -6.29096583e-03 -6.29096583e-03 -8.58346559e-03 8.49151503e-03 -8.49151503e-03 7.69472345e-04 1.37774951e-04 1.37774951e-04 1.21596738e-03 -2.58595459e-04 2.58595459e-04 7.88241731e-03 9.66260440e-03 -4.47145138e-03 -1.92416159e-04 5.87867582e-05 1.64256895e-04 -6.47988162e-03 -3.92045739e-03 -4.07789392e-03 -1.23324095e-04 -5.25627773e-03 5.03807181e-03 -5.01287669e-03 1.37774951e-04 3.28830564e-04 1.58824815e-04 2.69138959e-05 7.44624905e-04 -4.09415493e-04 1.50120025e-04 7.88241731e-03 -4.47145138e-03 9.66260440e-03 -1.92416159e-04 1.64256895e-04 5.87867582e-05 -6.47988162e-03 -4.07789392e-03 -3.92045739e-03 1.23324095e-04 -5.25627773e-03 5.01287669e-03 -5.03807181e-03 1.37774951e-04 1.58824815e-04 3.28830564e-04 -2.69138959e-05 7.44624905e-04 -1.50120025e-04 4.09415493e-04 2.15728427e-03 -2.15728427e-03 -1.78094826e-05 1.78094826e-05 2.30094432e-05 -2.30094432e-05 -3.89423179e-05 2.09120600e-06 2.09120600e-06 2.69138959e-05 -2.69138959e-05 8.49865950e-06 -4.16848167e-05 -4.16848167e-05 -6.96401205e-03 6.96401205e-03 6.96401205e-03 -5.76134452e-04 5.76134452e-04 5.76134452e-04 -2.78703402e-02 -1.70670281e-02 -1.70670281e-02 -3.91967293e-02 2.20334385e-02 -2.20334385e-02 1.21596738e-03 7.44624905e-04 7.44624905e-04 4.88351268e-03 -9.61306618e-04 9.61306618e-04 -6.65332653e-03 -1.69134466e-02 9.29544937e-03 2.19325430e-04 -1.07142033e-04 -2.41137503e-04 8.34518149e-03 4.94560355e-03 5.25183836e-03 1.91006991e-04 6.78582537e-03 -6.62775483e-03 6.50712338e-03 -2.58595459e-04 -4.09415493e-04 -1.50120025e-04 -4.16848167e-05 -9.61306618e-04 5.05894315e-04 -1.34231757e-04 6.65332653e-03 -9.29544937e-03 1.69134466e-02 -2.19325430e-04 2.41137503e-04 1.07142033e-04 -8.34518149e-03 -5.25183836e-03 -4.94560355e-03 1.91006991e-04 -6.78582537e-03 6.50712338e-03 -6.62775483e-03 2.58595459e-04 1.50120025e-04 4.09415493e-04 -4.16848167e-05 9.61306618e-04 -1.34231757e-04 5.05894315e-04 - 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 - 0 12 24 36 48 66 86 106 124 144 164 170 180 190 190 200 206 216 226 226 236 254 274 294 308 326 346 366 384 404 424 438 456 476 496 -2 -2 -2 496 - 1.46471486e+00 2.54883877e-01 1.24590418e-01 -9.35884290e-03 -2.50681311e-01 2.31073552e-01 2.31073552e-01 -2.31073552e-01 4.55715201e-02 -9.09946312e-02 -9.09946312e-02 9.09946312e-02 2.54883877e-01 1.70428957e+00 -9.34218553e-02 1.65342489e-01 1.29637869e-01 -1.70706534e-01 -1.70706534e-01 1.70706534e-01 -4.68039666e-02 8.78615395e-02 8.78615395e-02 -8.78615395e-02 1.24590418e-01 -9.34218553e-02 1.88920782e-02 -1.20468125e-02 -3.43603397e-02 3.47760262e-02 3.47760262e-02 -3.47760262e-02 8.11017653e-03 -1.51409429e-02 -1.51409429e-02 1.51409429e-02 -9.35884290e-03 1.65342489e-01 -1.20468125e-02 1.72406024e-02 1.90677593e-02 -2.20810865e-02 -2.20810865e-02 2.20810865e-02 -5.48328334e-03 1.08124682e-02 1.08124682e-02 -1.08124682e-02 1.89517553e+00 9.95491140e-02 9.95491140e-02 -9.15785008e-03 -2.53788780e-03 -2.53788780e-03 -2.12388496e-02 -1.19719253e-02 -1.19719253e-02 -1.34997473e-02 -6.86525306e-04 6.86525306e-04 -2.22701900e-02 7.88241731e-03 7.88241731e-03 -6.96401205e-03 -6.65332653e-03 6.65332653e-03 9.95491140e-02 2.04211641e+00 -9.95491140e-02 -2.53788780e-03 -3.88804018e-03 2.53788780e-03 6.78853114e-03 1.78035242e-02 -3.65770659e-03 -9.88504715e-03 1.34997473e-02 6.08947863e-03 1.14201355e-02 -1.00868915e-02 8.24231853e-03 -4.47145138e-03 2.15728427e-03 6.96401205e-03 -6.20170953e-03 -9.29544937e-03 9.95491140e-02 -9.95491140e-02 2.04211641e+00 -2.53788780e-03 2.53788780e-03 -3.88804018e-03 6.78853114e-03 -3.65770659e-03 1.78035242e-02 9.88504715e-03 1.34997473e-02 -1.14201355e-02 -6.08947863e-03 -1.00868915e-02 -4.47145138e-03 8.24231853e-03 -2.15728427e-03 6.96401205e-03 9.29544937e-03 6.20170953e-03 -9.15785008e-03 -2.53788780e-03 -2.53788780e-03 1.79684460e-04 -7.82240681e-05 -7.82240681e-05 4.90771661e-03 3.05324736e-03 3.05324736e-03 3.98965718e-03 -3.80846317e-03 3.80846317e-03 -8.90983131e-05 -1.92416159e-04 -1.92416159e-04 -5.76134452e-04 2.19325430e-04 -2.19325430e-04 -2.53788780e-03 -3.88804018e-03 2.53788780e-03 -7.82240681e-05 2.17480352e-04 7.82240681e-05 -4.88057902e-03 -2.92726385e-03 -2.92421677e-03 8.16061087e-05 -3.98965718e-03 3.98374436e-03 -3.90840983e-03 2.91222329e-04 4.87887308e-05 1.64256895e-04 -1.78094826e-05 5.76134452e-04 -3.17373257e-05 2.41137503e-04 -2.53788780e-03 2.53788780e-03 -3.88804018e-03 -7.82240681e-05 7.82240681e-05 2.17480352e-04 -4.88057902e-03 -2.92421677e-03 -2.92726385e-03 -8.16061087e-05 -3.98965718e-03 3.90840983e-03 -3.98374436e-03 2.91222329e-04 1.64256895e-04 4.87887308e-05 1.78094826e-05 5.76134452e-04 -2.41137503e-04 3.17373257e-05 -2.50681311e-01 1.29637869e-01 -3.43603397e-02 1.90677593e-02 2.55642069e-01 -5.76016724e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 -8.69671403e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 -8.69671403e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 -2.31073552e-01 1.70706534e-01 -3.47760262e-02 2.20810865e-02 -8.69671403e-02 -8.69671403e-02 5.09104100e-01 3.81033730e-02 3.81033730e-02 -1.31876001e-01 4.55715201e-02 -4.68039666e-02 8.11017653e-03 -5.48328334e-03 -5.76016724e-02 1.36360519e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 1.70016634e-02 1.70016634e-02 -1.70016634e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 1.70016634e-02 1.70016634e-02 -1.70016634e-02 9.09946312e-02 -8.78615395e-02 1.51409429e-02 -1.08124682e-02 3.81033730e-02 3.81033730e-02 -1.31876001e-01 -1.70016634e-02 -1.70016634e-02 3.78321204e-02 -2.12388496e-02 6.78853114e-03 6.78853114e-03 4.90771661e-03 -4.88057902e-03 -4.88057902e-03 2.33614448e-01 1.42959316e-01 1.42959316e-01 1.89783463e-01 -1.84466621e-01 1.84466621e-01 -1.02868307e-02 -6.47988162e-03 -6.47988162e-03 -2.78703402e-02 8.34518149e-03 -8.34518149e-03 -1.19719253e-02 1.78035242e-02 -3.65770659e-03 3.05324736e-03 -2.92726385e-03 -2.92421677e-03 1.42959316e-01 8.78151758e-02 8.75173384e-02 -1.05433222e-04 1.16218161e-01 -1.12710131e-01 1.12926204e-01 -6.29096583e-03 -3.94138564e-03 -4.07789392e-03 2.30094432e-05 -1.70670281e-02 5.10344353e-03 -5.25183836e-03 -1.19719253e-02 -3.65770659e-03 1.78035242e-02 3.05324736e-03 -2.92421677e-03 -2.92726385e-03 1.42959316e-01 8.75173384e-02 8.78151758e-02 1.05433222e-04 1.16218161e-01 -1.12926204e-01 1.12710131e-01 -6.29096583e-03 -4.07789392e-03 -3.94138564e-03 -2.30094432e-05 -1.70670281e-02 5.25183836e-03 -5.10344353e-03 -9.88504715e-03 9.88504715e-03 8.16061087e-05 -8.16061087e-05 -1.05433222e-04 1.05433222e-04 1.78440391e-04 -9.58226514e-06 -9.58226514e-06 -1.23324095e-04 1.23324095e-04 -3.89423179e-05 1.91006991e-04 1.91006991e-04 -1.34997473e-02 1.34997473e-02 1.34997473e-02 3.98965718e-03 -3.98965718e-03 -3.98965718e-03 1.89783463e-01 1.16218161e-01 1.16218161e-01 3.67563826e-01 -1.50037001e-01 1.50037001e-01 -8.58346559e-03 -5.25627773e-03 -5.25627773e-03 -3.91967293e-02 6.78582537e-03 -6.78582537e-03 -6.86525306e-04 6.08947863e-03 -1.14201355e-02 -3.80846317e-03 3.98374436e-03 3.90840983e-03 -1.84466621e-01 -1.12710131e-01 -1.12926204e-01 -9.58226514e-06 -1.50037001e-01 1.46241269e-01 -1.45949895e-01 8.49151503e-03 5.01097526e-03 5.01287669e-03 2.09120600e-06 2.20334385e-02 -6.42339379e-03 6.50712338e-03 6.86525306e-04 1.14201355e-02 -6.08947863e-03 3.80846317e-03 -3.90840983e-03 -3.98374436e-03 1.84466621e-01 1.12926204e-01 1.12710131e-01 -9.58226514e-06 1.50037001e-01 -1.45949895e-01 1.46241269e-01 -8.49151503e-03 -5.01287669e-03 -5.01097526e-03 2.09120600e-06 -2.20334385e-02 6.50712338e-03 -6.42339379e-03 -2.22701900e-02 -1.00868915e-02 -1.00868915e-02 -8.90983131e-05 2.91222329e-04 2.91222329e-04 -1.02868307e-02 -6.29096583e-03 -6.29096583e-03 -8.58346559e-03 8.49151503e-03 -8.49151503e-03 9.59486559e-04 1.37774951e-04 1.37774951e-04 1.21596738e-03 -2.58595459e-04 2.58595459e-04 7.88241731e-03 8.24231853e-03 -4.47145138e-03 -1.92416159e-04 4.87887308e-05 1.64256895e-04 -6.47988162e-03 -3.94138564e-03 -4.07789392e-03 -1.23324095e-04 -5.25627773e-03 5.01097526e-03 -5.01287669e-03 1.37774951e-04 3.30152350e-04 1.58824815e-04 2.69138959e-05 7.44624905e-04 -4.19384346e-04 1.50120025e-04 7.88241731e-03 -4.47145138e-03 8.24231853e-03 -1.92416159e-04 1.64256895e-04 4.87887308e-05 -6.47988162e-03 -4.07789392e-03 -3.94138564e-03 1.23324095e-04 -5.25627773e-03 5.01287669e-03 -5.01097526e-03 1.37774951e-04 1.58824815e-04 3.30152350e-04 -2.69138959e-05 7.44624905e-04 -1.50120025e-04 4.19384346e-04 2.15728427e-03 -2.15728427e-03 -1.78094826e-05 1.78094826e-05 2.30094432e-05 -2.30094432e-05 -3.89423179e-05 2.09120600e-06 2.09120600e-06 2.69138959e-05 -2.69138959e-05 8.49865950e-06 -4.16848167e-05 -4.16848167e-05 -6.96401205e-03 6.96401205e-03 6.96401205e-03 -5.76134452e-04 5.76134452e-04 5.76134452e-04 -2.78703402e-02 -1.70670281e-02 -1.70670281e-02 -3.91967293e-02 2.20334385e-02 -2.20334385e-02 1.21596738e-03 7.44624905e-04 7.44624905e-04 4.88351268e-03 -9.61306618e-04 9.61306618e-04 -6.65332653e-03 -6.20170953e-03 9.29544937e-03 2.19325430e-04 -3.17373257e-05 -2.41137503e-04 8.34518149e-03 5.10344353e-03 5.25183836e-03 1.91006991e-04 6.78582537e-03 -6.42339379e-03 6.50712338e-03 -2.58595459e-04 -4.19384346e-04 -1.50120025e-04 -4.16848167e-05 -9.61306618e-04 5.81078995e-04 -1.34231757e-04 6.65332653e-03 -9.29544937e-03 6.20170953e-03 -2.19325430e-04 2.41137503e-04 3.17373257e-05 -8.34518149e-03 -5.25183836e-03 -5.10344353e-03 1.91006991e-04 -6.78582537e-03 6.50712338e-03 -6.42339379e-03 2.58595459e-04 1.50120025e-04 4.19384346e-04 -4.16848167e-05 9.61306618e-04 -1.34231757e-04 5.81078995e-04 - 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 - 0 12 24 36 48 66 86 106 124 144 164 170 180 190 190 200 206 216 226 226 236 254 274 294 308 326 346 366 384 404 424 438 456 476 496 -2 -2 -1 496 - -4.46730500e-01 2.90265885e-01 -6.65919095e-02 3.20736205e-02 -2.50681311e-01 -2.31073552e-01 -2.31073552e-01 2.31073552e-01 4.55715201e-02 9.09946312e-02 9.09946312e-02 -9.09946312e-02 2.90265885e-01 -7.77208948e-02 3.49623849e-02 -1.81562170e-02 1.29637869e-01 1.70706534e-01 1.70706534e-01 -1.70706534e-01 -4.68039666e-02 -8.78615395e-02 -8.78615395e-02 8.78615395e-02 -6.65919095e-02 3.49623849e-02 -8.97965282e-03 4.90391018e-03 -3.43603397e-02 -3.47760262e-02 -3.47760262e-02 3.47760262e-02 8.11017653e-03 1.51409429e-02 1.51409429e-02 -1.51409429e-02 3.20736205e-02 -1.81562170e-02 4.90391018e-03 -2.40214415e-03 1.90677593e-02 2.20810865e-02 2.20810865e-02 -2.20810865e-02 -5.48328334e-03 -1.08124682e-02 -1.08124682e-02 1.08124682e-02 -9.61307016e-02 -9.95491140e-02 -9.95491140e-02 3.84928096e-03 2.53788780e-03 2.53788780e-03 4.96626145e-03 1.19719253e-02 1.19719253e-02 1.34997473e-02 6.86525306e-04 -6.86525306e-04 7.75107441e-03 -7.88241731e-03 -7.88241731e-03 6.96401205e-03 6.65332653e-03 -6.65332653e-03 -9.95491140e-02 5.08101702e-02 9.95491140e-02 2.53788780e-03 9.11909087e-03 -2.53788780e-03 -6.78853114e-03 1.75623651e-03 3.65770659e-03 9.88504715e-03 -1.34997473e-02 2.68064379e-02 -1.14201355e-02 1.00868915e-02 -1.01418763e-02 4.47145138e-03 -2.15728427e-03 -6.96401205e-03 1.75321839e-02 9.29544937e-03 -9.95491140e-02 9.95491140e-02 5.08101702e-02 2.53788780e-03 -2.53788780e-03 9.11909087e-03 -6.78853114e-03 3.65770659e-03 1.75623651e-03 -9.88504715e-03 -1.34997473e-02 1.14201355e-02 -2.68064379e-02 1.00868915e-02 4.47145138e-03 -1.01418763e-02 2.15728427e-03 -6.96401205e-03 -9.29544937e-03 -1.75321839e-02 3.84928096e-03 2.53788780e-03 2.53788780e-03 -1.26047298e-04 7.82240681e-05 7.82240681e-05 -4.95769243e-03 -3.05324736e-03 -3.05324736e-03 -3.98965718e-03 3.80846317e-03 -3.80846317e-03 7.89606128e-05 1.92416159e-04 1.92416159e-04 5.76134452e-04 -2.19325430e-04 2.19325430e-04 2.53788780e-03 9.11909087e-03 -2.53788780e-03 7.82240681e-05 -8.82514067e-05 -7.82240681e-05 4.88057902e-03 3.11404071e-03 2.92421677e-03 -8.16061087e-05 3.98965718e-03 -3.81554628e-03 3.90840983e-03 -2.91222329e-04 -5.41259230e-05 -1.64256895e-04 1.78094826e-05 -5.76134452e-04 1.01124921e-04 -2.41137503e-04 2.53788780e-03 -2.53788780e-03 9.11909087e-03 7.82240681e-05 -7.82240681e-05 -8.82514067e-05 4.88057902e-03 2.92421677e-03 3.11404071e-03 8.16061087e-05 3.98965718e-03 -3.90840983e-03 3.81554628e-03 -2.91222329e-04 -1.64256895e-04 -5.41259230e-05 -1.78094826e-05 -5.76134452e-04 2.41137503e-04 -1.01124921e-04 -2.50681311e-01 1.29637869e-01 -3.43603397e-02 1.90677593e-02 2.55642069e-01 -5.76016724e-02 -2.31073552e-01 1.70706534e-01 -3.47760262e-02 2.20810865e-02 -8.69671403e-02 -8.69671403e-02 8.69671403e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 -2.31073552e-01 1.70706534e-01 -3.47760262e-02 2.20810865e-02 -8.69671403e-02 -8.69671403e-02 8.69671403e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 3.35169819e-01 -3.81033730e-02 -3.81033730e-02 -5.56692551e-02 4.55715201e-02 -4.68039666e-02 8.11017653e-03 -5.48328334e-03 -5.76016724e-02 1.36360519e-02 9.09946312e-02 -8.78615395e-02 1.51409429e-02 -1.08124682e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 -1.70016634e-02 -1.70016634e-02 1.70016634e-02 9.09946312e-02 -8.78615395e-02 1.51409429e-02 -1.08124682e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 -1.70016634e-02 -1.70016634e-02 1.70016634e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 -5.56692551e-02 1.70016634e-02 1.70016634e-02 3.82879364e-03 4.96626145e-03 -6.78853114e-03 -6.78853114e-03 -4.95769243e-03 4.88057902e-03 4.88057902e-03 -2.33214382e-01 -1.42959316e-01 -1.42959316e-01 -1.89783463e-01 1.84466621e-01 -1.84466621e-01 1.05548787e-02 6.47988162e-03 6.47988162e-03 2.78703402e-02 -8.34518149e-03 8.34518149e-03 1.19719253e-02 1.75623651e-03 3.65770659e-03 -3.05324736e-03 3.11404071e-03 2.92421677e-03 -1.42959316e-01 -8.74686860e-02 -8.75173384e-02 1.05433222e-04 -1.16218161e-01 1.13119631e-01 -1.12926204e-01 6.29096583e-03 3.92293329e-03 4.07789392e-03 -2.30094432e-05 1.70670281e-02 -4.94879992e-03 5.25183836e-03 1.19719253e-02 3.65770659e-03 1.75623651e-03 -3.05324736e-03 2.92421677e-03 3.11404071e-03 -1.42959316e-01 -8.75173384e-02 -8.74686860e-02 -1.05433222e-04 -1.16218161e-01 1.12926204e-01 -1.13119631e-01 6.29096583e-03 4.07789392e-03 3.92293329e-03 2.30094432e-05 1.70670281e-02 -5.25183836e-03 4.94879992e-03 9.88504715e-03 -9.88504715e-03 -8.16061087e-05 8.16061087e-05 1.05433222e-04 -1.05433222e-04 -1.78440391e-04 9.58226514e-06 9.58226514e-06 1.23324095e-04 -1.23324095e-04 3.89423179e-05 -1.91006991e-04 -1.91006991e-04 1.34997473e-02 -1.34997473e-02 -1.34997473e-02 -3.98965718e-03 3.98965718e-03 3.98965718e-03 -1.89783463e-01 -1.16218161e-01 -1.16218161e-01 5.86189719e-02 1.50037001e-01 -1.50037001e-01 8.58346559e-03 5.25627773e-03 5.25627773e-03 5.74991859e-03 -6.78582537e-03 6.78582537e-03 6.86525306e-04 2.68064379e-02 1.14201355e-02 3.80846317e-03 -3.81554628e-03 -3.90840983e-03 1.84466621e-01 1.13119631e-01 1.12926204e-01 9.58226514e-06 1.50037001e-01 -1.45660580e-01 1.45949895e-01 -8.49151503e-03 -5.04126819e-03 -5.01287669e-03 -2.09120600e-06 -2.20334385e-02 6.63188133e-03 -6.50712338e-03 -6.86525306e-04 -1.14201355e-02 -2.68064379e-02 -3.80846317e-03 3.90840983e-03 3.81554628e-03 -1.84466621e-01 -1.12926204e-01 -1.13119631e-01 9.58226514e-06 -1.50037001e-01 1.45949895e-01 -1.45660580e-01 8.49151503e-03 5.01287669e-03 5.04126819e-03 -2.09120600e-06 2.20334385e-02 -6.50712338e-03 6.63188133e-03 7.75107441e-03 1.00868915e-02 1.00868915e-02 7.89606128e-05 -2.91222329e-04 -2.91222329e-04 1.05548787e-02 6.29096583e-03 6.29096583e-03 8.58346559e-03 -8.49151503e-03 8.49151503e-03 -7.68391652e-04 -1.37774951e-04 -1.37774951e-04 -1.21596738e-03 2.58595459e-04 -2.58595459e-04 -7.88241731e-03 -1.01418763e-02 4.47145138e-03 1.92416159e-04 -5.41259230e-05 -1.64256895e-04 6.47988162e-03 3.92293329e-03 4.07789392e-03 1.23324095e-04 5.25627773e-03 -5.04126819e-03 5.01287669e-03 -1.37774951e-04 -3.28425304e-04 -1.58824815e-04 -2.69138959e-05 -7.44624905e-04 4.08892304e-04 -1.50120025e-04 -7.88241731e-03 4.47145138e-03 -1.01418763e-02 1.92416159e-04 -1.64256895e-04 -5.41259230e-05 6.47988162e-03 4.07789392e-03 3.92293329e-03 -1.23324095e-04 5.25627773e-03 -5.01287669e-03 5.04126819e-03 -1.37774951e-04 -1.58824815e-04 -3.28425304e-04 2.69138959e-05 -7.44624905e-04 1.50120025e-04 -4.08892304e-04 -2.15728427e-03 2.15728427e-03 1.78094826e-05 -1.78094826e-05 -2.30094432e-05 2.30094432e-05 3.89423179e-05 -2.09120600e-06 -2.09120600e-06 -2.69138959e-05 2.69138959e-05 -8.49865950e-06 4.16848167e-05 4.16848167e-05 6.96401205e-03 -6.96401205e-03 -6.96401205e-03 5.76134452e-04 -5.76134452e-04 -5.76134452e-04 2.78703402e-02 1.70670281e-02 1.70670281e-02 5.74991859e-03 -2.20334385e-02 2.20334385e-02 -1.21596738e-03 -7.44624905e-04 -7.44624905e-04 -2.25860819e-03 9.61306618e-04 -9.61306618e-04 6.65332653e-03 1.75321839e-02 -9.29544937e-03 -2.19325430e-04 1.01124921e-04 2.41137503e-04 -8.34518149e-03 -4.94879992e-03 -5.25183836e-03 -1.91006991e-04 -6.78582537e-03 6.63188133e-03 -6.50712338e-03 2.58595459e-04 4.08892304e-04 1.50120025e-04 4.16848167e-05 9.61306618e-04 -5.05218881e-04 1.34231757e-04 -6.65332653e-03 9.29544937e-03 -1.75321839e-02 2.19325430e-04 -2.41137503e-04 -1.01124921e-04 8.34518149e-03 5.25183836e-03 4.94879992e-03 -1.91006991e-04 6.78582537e-03 -6.50712338e-03 6.63188133e-03 -2.58595459e-04 -1.50120025e-04 -4.08892304e-04 4.16848167e-05 -9.61306618e-04 1.34231757e-04 -5.05218881e-04 - 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 - 0 12 24 36 48 66 86 106 124 144 164 170 180 190 190 200 206 216 226 226 236 254 274 294 308 326 346 366 384 404 424 438 456 476 496 -2 -2 0 496 - 1.46471486e+00 2.54883877e-01 1.24590418e-01 -9.35884290e-03 -2.50681311e-01 2.31073552e-01 2.31073552e-01 -2.31073552e-01 4.55715201e-02 -9.09946312e-02 -9.09946312e-02 9.09946312e-02 2.54883877e-01 1.70428957e+00 -9.34218553e-02 1.65342489e-01 1.29637869e-01 -1.70706534e-01 -1.70706534e-01 1.70706534e-01 -4.68039666e-02 8.78615395e-02 8.78615395e-02 -8.78615395e-02 1.24590418e-01 -9.34218553e-02 1.88920782e-02 -1.20468125e-02 -3.43603397e-02 3.47760262e-02 3.47760262e-02 -3.47760262e-02 8.11017653e-03 -1.51409429e-02 -1.51409429e-02 1.51409429e-02 -9.35884290e-03 1.65342489e-01 -1.20468125e-02 1.72406024e-02 1.90677593e-02 -2.20810865e-02 -2.20810865e-02 2.20810865e-02 -5.48328334e-03 1.08124682e-02 1.08124682e-02 -1.08124682e-02 1.89517553e+00 9.95491140e-02 9.95491140e-02 -9.15785008e-03 -2.53788780e-03 -2.53788780e-03 -2.12388496e-02 -1.19719253e-02 -1.19719253e-02 -1.34997473e-02 -6.86525306e-04 6.86525306e-04 -2.22701900e-02 7.88241731e-03 7.88241731e-03 -6.96401205e-03 -6.65332653e-03 6.65332653e-03 9.95491140e-02 2.04211641e+00 -9.95491140e-02 -2.53788780e-03 -3.88804018e-03 2.53788780e-03 6.78853114e-03 1.78035242e-02 -3.65770659e-03 -9.88504715e-03 1.34997473e-02 6.08947863e-03 1.14201355e-02 -1.00868915e-02 8.24231853e-03 -4.47145138e-03 2.15728427e-03 6.96401205e-03 -6.20170953e-03 -9.29544937e-03 9.95491140e-02 -9.95491140e-02 2.04211641e+00 -2.53788780e-03 2.53788780e-03 -3.88804018e-03 6.78853114e-03 -3.65770659e-03 1.78035242e-02 9.88504715e-03 1.34997473e-02 -1.14201355e-02 -6.08947863e-03 -1.00868915e-02 -4.47145138e-03 8.24231853e-03 -2.15728427e-03 6.96401205e-03 9.29544937e-03 6.20170953e-03 -9.15785008e-03 -2.53788780e-03 -2.53788780e-03 1.79684460e-04 -7.82240681e-05 -7.82240681e-05 4.90771661e-03 3.05324736e-03 3.05324736e-03 3.98965718e-03 -3.80846317e-03 3.80846317e-03 -8.90983131e-05 -1.92416159e-04 -1.92416159e-04 -5.76134452e-04 2.19325430e-04 -2.19325430e-04 -2.53788780e-03 -3.88804018e-03 2.53788780e-03 -7.82240681e-05 2.17480352e-04 7.82240681e-05 -4.88057902e-03 -2.92726385e-03 -2.92421677e-03 8.16061087e-05 -3.98965718e-03 3.98374436e-03 -3.90840983e-03 2.91222329e-04 4.87887308e-05 1.64256895e-04 -1.78094826e-05 5.76134452e-04 -3.17373257e-05 2.41137503e-04 -2.53788780e-03 2.53788780e-03 -3.88804018e-03 -7.82240681e-05 7.82240681e-05 2.17480352e-04 -4.88057902e-03 -2.92421677e-03 -2.92726385e-03 -8.16061087e-05 -3.98965718e-03 3.90840983e-03 -3.98374436e-03 2.91222329e-04 1.64256895e-04 4.87887308e-05 1.78094826e-05 5.76134452e-04 -2.41137503e-04 3.17373257e-05 -2.50681311e-01 1.29637869e-01 -3.43603397e-02 1.90677593e-02 2.55642069e-01 -5.76016724e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 -8.69671403e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 -8.69671403e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 -2.31073552e-01 1.70706534e-01 -3.47760262e-02 2.20810865e-02 -8.69671403e-02 -8.69671403e-02 5.09104100e-01 3.81033730e-02 3.81033730e-02 -1.31876001e-01 4.55715201e-02 -4.68039666e-02 8.11017653e-03 -5.48328334e-03 -5.76016724e-02 1.36360519e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 1.70016634e-02 1.70016634e-02 -1.70016634e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 1.70016634e-02 1.70016634e-02 -1.70016634e-02 9.09946312e-02 -8.78615395e-02 1.51409429e-02 -1.08124682e-02 3.81033730e-02 3.81033730e-02 -1.31876001e-01 -1.70016634e-02 -1.70016634e-02 3.78321204e-02 -2.12388496e-02 6.78853114e-03 6.78853114e-03 4.90771661e-03 -4.88057902e-03 -4.88057902e-03 2.33614448e-01 1.42959316e-01 1.42959316e-01 1.89783463e-01 -1.84466621e-01 1.84466621e-01 -1.02868307e-02 -6.47988162e-03 -6.47988162e-03 -2.78703402e-02 8.34518149e-03 -8.34518149e-03 -1.19719253e-02 1.78035242e-02 -3.65770659e-03 3.05324736e-03 -2.92726385e-03 -2.92421677e-03 1.42959316e-01 8.78151758e-02 8.75173384e-02 -1.05433222e-04 1.16218161e-01 -1.12710131e-01 1.12926204e-01 -6.29096583e-03 -3.94138564e-03 -4.07789392e-03 2.30094432e-05 -1.70670281e-02 5.10344353e-03 -5.25183836e-03 -1.19719253e-02 -3.65770659e-03 1.78035242e-02 3.05324736e-03 -2.92421677e-03 -2.92726385e-03 1.42959316e-01 8.75173384e-02 8.78151758e-02 1.05433222e-04 1.16218161e-01 -1.12926204e-01 1.12710131e-01 -6.29096583e-03 -4.07789392e-03 -3.94138564e-03 -2.30094432e-05 -1.70670281e-02 5.25183836e-03 -5.10344353e-03 -9.88504715e-03 9.88504715e-03 8.16061087e-05 -8.16061087e-05 -1.05433222e-04 1.05433222e-04 1.78440391e-04 -9.58226514e-06 -9.58226514e-06 -1.23324095e-04 1.23324095e-04 -3.89423179e-05 1.91006991e-04 1.91006991e-04 -1.34997473e-02 1.34997473e-02 1.34997473e-02 3.98965718e-03 -3.98965718e-03 -3.98965718e-03 1.89783463e-01 1.16218161e-01 1.16218161e-01 3.67563826e-01 -1.50037001e-01 1.50037001e-01 -8.58346559e-03 -5.25627773e-03 -5.25627773e-03 -3.91967293e-02 6.78582537e-03 -6.78582537e-03 -6.86525306e-04 6.08947863e-03 -1.14201355e-02 -3.80846317e-03 3.98374436e-03 3.90840983e-03 -1.84466621e-01 -1.12710131e-01 -1.12926204e-01 -9.58226514e-06 -1.50037001e-01 1.46241269e-01 -1.45949895e-01 8.49151503e-03 5.01097526e-03 5.01287669e-03 2.09120600e-06 2.20334385e-02 -6.42339379e-03 6.50712338e-03 6.86525306e-04 1.14201355e-02 -6.08947863e-03 3.80846317e-03 -3.90840983e-03 -3.98374436e-03 1.84466621e-01 1.12926204e-01 1.12710131e-01 -9.58226514e-06 1.50037001e-01 -1.45949895e-01 1.46241269e-01 -8.49151503e-03 -5.01287669e-03 -5.01097526e-03 2.09120600e-06 -2.20334385e-02 6.50712338e-03 -6.42339379e-03 -2.22701900e-02 -1.00868915e-02 -1.00868915e-02 -8.90983131e-05 2.91222329e-04 2.91222329e-04 -1.02868307e-02 -6.29096583e-03 -6.29096583e-03 -8.58346559e-03 8.49151503e-03 -8.49151503e-03 9.59486559e-04 1.37774951e-04 1.37774951e-04 1.21596738e-03 -2.58595459e-04 2.58595459e-04 7.88241731e-03 8.24231853e-03 -4.47145138e-03 -1.92416159e-04 4.87887308e-05 1.64256895e-04 -6.47988162e-03 -3.94138564e-03 -4.07789392e-03 -1.23324095e-04 -5.25627773e-03 5.01097526e-03 -5.01287669e-03 1.37774951e-04 3.30152350e-04 1.58824815e-04 2.69138959e-05 7.44624905e-04 -4.19384346e-04 1.50120025e-04 7.88241731e-03 -4.47145138e-03 8.24231853e-03 -1.92416159e-04 1.64256895e-04 4.87887308e-05 -6.47988162e-03 -4.07789392e-03 -3.94138564e-03 1.23324095e-04 -5.25627773e-03 5.01287669e-03 -5.01097526e-03 1.37774951e-04 1.58824815e-04 3.30152350e-04 -2.69138959e-05 7.44624905e-04 -1.50120025e-04 4.19384346e-04 2.15728427e-03 -2.15728427e-03 -1.78094826e-05 1.78094826e-05 2.30094432e-05 -2.30094432e-05 -3.89423179e-05 2.09120600e-06 2.09120600e-06 2.69138959e-05 -2.69138959e-05 8.49865950e-06 -4.16848167e-05 -4.16848167e-05 -6.96401205e-03 6.96401205e-03 6.96401205e-03 -5.76134452e-04 5.76134452e-04 5.76134452e-04 -2.78703402e-02 -1.70670281e-02 -1.70670281e-02 -3.91967293e-02 2.20334385e-02 -2.20334385e-02 1.21596738e-03 7.44624905e-04 7.44624905e-04 4.88351268e-03 -9.61306618e-04 9.61306618e-04 -6.65332653e-03 -6.20170953e-03 9.29544937e-03 2.19325430e-04 -3.17373257e-05 -2.41137503e-04 8.34518149e-03 5.10344353e-03 5.25183836e-03 1.91006991e-04 6.78582537e-03 -6.42339379e-03 6.50712338e-03 -2.58595459e-04 -4.19384346e-04 -1.50120025e-04 -4.16848167e-05 -9.61306618e-04 5.81078995e-04 -1.34231757e-04 6.65332653e-03 -9.29544937e-03 6.20170953e-03 -2.19325430e-04 2.41137503e-04 3.17373257e-05 -8.34518149e-03 -5.25183836e-03 -5.10344353e-03 1.91006991e-04 -6.78582537e-03 6.50712338e-03 -6.42339379e-03 2.58595459e-04 1.50120025e-04 4.19384346e-04 -4.16848167e-05 9.61306618e-04 -1.34231757e-04 5.81078995e-04 - 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 - 0 12 24 36 48 66 86 106 124 144 164 170 180 190 190 200 206 216 226 226 236 254 274 294 308 326 346 366 384 404 424 438 456 476 496 -2 -2 1 496 - -4.46730500e-01 2.90265885e-01 -6.65919095e-02 3.20736205e-02 -2.50681311e-01 -2.31073552e-01 -2.31073552e-01 2.31073552e-01 4.55715201e-02 9.09946312e-02 9.09946312e-02 -9.09946312e-02 2.90265885e-01 -7.77208948e-02 3.49623849e-02 -1.81562170e-02 1.29637869e-01 1.70706534e-01 1.70706534e-01 -1.70706534e-01 -4.68039666e-02 -8.78615395e-02 -8.78615395e-02 8.78615395e-02 -6.65919095e-02 3.49623849e-02 -8.97965282e-03 4.90391018e-03 -3.43603397e-02 -3.47760262e-02 -3.47760262e-02 3.47760262e-02 8.11017653e-03 1.51409429e-02 1.51409429e-02 -1.51409429e-02 3.20736205e-02 -1.81562170e-02 4.90391018e-03 -2.40214415e-03 1.90677593e-02 2.20810865e-02 2.20810865e-02 -2.20810865e-02 -5.48328334e-03 -1.08124682e-02 -1.08124682e-02 1.08124682e-02 -9.61307016e-02 -9.95491140e-02 -9.95491140e-02 3.84928096e-03 2.53788780e-03 2.53788780e-03 4.96626145e-03 1.19719253e-02 1.19719253e-02 1.34997473e-02 6.86525306e-04 -6.86525306e-04 7.75107441e-03 -7.88241731e-03 -7.88241731e-03 6.96401205e-03 6.65332653e-03 -6.65332653e-03 -9.95491140e-02 5.08101702e-02 9.95491140e-02 2.53788780e-03 9.11909087e-03 -2.53788780e-03 -6.78853114e-03 1.75623651e-03 3.65770659e-03 9.88504715e-03 -1.34997473e-02 2.68064379e-02 -1.14201355e-02 1.00868915e-02 -1.01418763e-02 4.47145138e-03 -2.15728427e-03 -6.96401205e-03 1.75321839e-02 9.29544937e-03 -9.95491140e-02 9.95491140e-02 5.08101702e-02 2.53788780e-03 -2.53788780e-03 9.11909087e-03 -6.78853114e-03 3.65770659e-03 1.75623651e-03 -9.88504715e-03 -1.34997473e-02 1.14201355e-02 -2.68064379e-02 1.00868915e-02 4.47145138e-03 -1.01418763e-02 2.15728427e-03 -6.96401205e-03 -9.29544937e-03 -1.75321839e-02 3.84928096e-03 2.53788780e-03 2.53788780e-03 -1.26047298e-04 7.82240681e-05 7.82240681e-05 -4.95769243e-03 -3.05324736e-03 -3.05324736e-03 -3.98965718e-03 3.80846317e-03 -3.80846317e-03 7.89606128e-05 1.92416159e-04 1.92416159e-04 5.76134452e-04 -2.19325430e-04 2.19325430e-04 2.53788780e-03 9.11909087e-03 -2.53788780e-03 7.82240681e-05 -8.82514067e-05 -7.82240681e-05 4.88057902e-03 3.11404071e-03 2.92421677e-03 -8.16061087e-05 3.98965718e-03 -3.81554628e-03 3.90840983e-03 -2.91222329e-04 -5.41259230e-05 -1.64256895e-04 1.78094826e-05 -5.76134452e-04 1.01124921e-04 -2.41137503e-04 2.53788780e-03 -2.53788780e-03 9.11909087e-03 7.82240681e-05 -7.82240681e-05 -8.82514067e-05 4.88057902e-03 2.92421677e-03 3.11404071e-03 8.16061087e-05 3.98965718e-03 -3.90840983e-03 3.81554628e-03 -2.91222329e-04 -1.64256895e-04 -5.41259230e-05 -1.78094826e-05 -5.76134452e-04 2.41137503e-04 -1.01124921e-04 -2.50681311e-01 1.29637869e-01 -3.43603397e-02 1.90677593e-02 2.55642069e-01 -5.76016724e-02 -2.31073552e-01 1.70706534e-01 -3.47760262e-02 2.20810865e-02 -8.69671403e-02 -8.69671403e-02 8.69671403e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 -2.31073552e-01 1.70706534e-01 -3.47760262e-02 2.20810865e-02 -8.69671403e-02 -8.69671403e-02 8.69671403e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 3.35169819e-01 -3.81033730e-02 -3.81033730e-02 -5.56692551e-02 4.55715201e-02 -4.68039666e-02 8.11017653e-03 -5.48328334e-03 -5.76016724e-02 1.36360519e-02 9.09946312e-02 -8.78615395e-02 1.51409429e-02 -1.08124682e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 -1.70016634e-02 -1.70016634e-02 1.70016634e-02 9.09946312e-02 -8.78615395e-02 1.51409429e-02 -1.08124682e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 -1.70016634e-02 -1.70016634e-02 1.70016634e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 -5.56692551e-02 1.70016634e-02 1.70016634e-02 3.82879364e-03 4.96626145e-03 -6.78853114e-03 -6.78853114e-03 -4.95769243e-03 4.88057902e-03 4.88057902e-03 -2.33214382e-01 -1.42959316e-01 -1.42959316e-01 -1.89783463e-01 1.84466621e-01 -1.84466621e-01 1.05548787e-02 6.47988162e-03 6.47988162e-03 2.78703402e-02 -8.34518149e-03 8.34518149e-03 1.19719253e-02 1.75623651e-03 3.65770659e-03 -3.05324736e-03 3.11404071e-03 2.92421677e-03 -1.42959316e-01 -8.74686860e-02 -8.75173384e-02 1.05433222e-04 -1.16218161e-01 1.13119631e-01 -1.12926204e-01 6.29096583e-03 3.92293329e-03 4.07789392e-03 -2.30094432e-05 1.70670281e-02 -4.94879992e-03 5.25183836e-03 1.19719253e-02 3.65770659e-03 1.75623651e-03 -3.05324736e-03 2.92421677e-03 3.11404071e-03 -1.42959316e-01 -8.75173384e-02 -8.74686860e-02 -1.05433222e-04 -1.16218161e-01 1.12926204e-01 -1.13119631e-01 6.29096583e-03 4.07789392e-03 3.92293329e-03 2.30094432e-05 1.70670281e-02 -5.25183836e-03 4.94879992e-03 9.88504715e-03 -9.88504715e-03 -8.16061087e-05 8.16061087e-05 1.05433222e-04 -1.05433222e-04 -1.78440391e-04 9.58226514e-06 9.58226514e-06 1.23324095e-04 -1.23324095e-04 3.89423179e-05 -1.91006991e-04 -1.91006991e-04 1.34997473e-02 -1.34997473e-02 -1.34997473e-02 -3.98965718e-03 3.98965718e-03 3.98965718e-03 -1.89783463e-01 -1.16218161e-01 -1.16218161e-01 5.86189719e-02 1.50037001e-01 -1.50037001e-01 8.58346559e-03 5.25627773e-03 5.25627773e-03 5.74991859e-03 -6.78582537e-03 6.78582537e-03 6.86525306e-04 2.68064379e-02 1.14201355e-02 3.80846317e-03 -3.81554628e-03 -3.90840983e-03 1.84466621e-01 1.13119631e-01 1.12926204e-01 9.58226514e-06 1.50037001e-01 -1.45660580e-01 1.45949895e-01 -8.49151503e-03 -5.04126819e-03 -5.01287669e-03 -2.09120600e-06 -2.20334385e-02 6.63188133e-03 -6.50712338e-03 -6.86525306e-04 -1.14201355e-02 -2.68064379e-02 -3.80846317e-03 3.90840983e-03 3.81554628e-03 -1.84466621e-01 -1.12926204e-01 -1.13119631e-01 9.58226514e-06 -1.50037001e-01 1.45949895e-01 -1.45660580e-01 8.49151503e-03 5.01287669e-03 5.04126819e-03 -2.09120600e-06 2.20334385e-02 -6.50712338e-03 6.63188133e-03 7.75107441e-03 1.00868915e-02 1.00868915e-02 7.89606128e-05 -2.91222329e-04 -2.91222329e-04 1.05548787e-02 6.29096583e-03 6.29096583e-03 8.58346559e-03 -8.49151503e-03 8.49151503e-03 -7.68391652e-04 -1.37774951e-04 -1.37774951e-04 -1.21596738e-03 2.58595459e-04 -2.58595459e-04 -7.88241731e-03 -1.01418763e-02 4.47145138e-03 1.92416159e-04 -5.41259230e-05 -1.64256895e-04 6.47988162e-03 3.92293329e-03 4.07789392e-03 1.23324095e-04 5.25627773e-03 -5.04126819e-03 5.01287669e-03 -1.37774951e-04 -3.28425304e-04 -1.58824815e-04 -2.69138959e-05 -7.44624905e-04 4.08892304e-04 -1.50120025e-04 -7.88241731e-03 4.47145138e-03 -1.01418763e-02 1.92416159e-04 -1.64256895e-04 -5.41259230e-05 6.47988162e-03 4.07789392e-03 3.92293329e-03 -1.23324095e-04 5.25627773e-03 -5.01287669e-03 5.04126819e-03 -1.37774951e-04 -1.58824815e-04 -3.28425304e-04 2.69138959e-05 -7.44624905e-04 1.50120025e-04 -4.08892304e-04 -2.15728427e-03 2.15728427e-03 1.78094826e-05 -1.78094826e-05 -2.30094432e-05 2.30094432e-05 3.89423179e-05 -2.09120600e-06 -2.09120600e-06 -2.69138959e-05 2.69138959e-05 -8.49865950e-06 4.16848167e-05 4.16848167e-05 6.96401205e-03 -6.96401205e-03 -6.96401205e-03 5.76134452e-04 -5.76134452e-04 -5.76134452e-04 2.78703402e-02 1.70670281e-02 1.70670281e-02 5.74991859e-03 -2.20334385e-02 2.20334385e-02 -1.21596738e-03 -7.44624905e-04 -7.44624905e-04 -2.25860819e-03 9.61306618e-04 -9.61306618e-04 6.65332653e-03 1.75321839e-02 -9.29544937e-03 -2.19325430e-04 1.01124921e-04 2.41137503e-04 -8.34518149e-03 -4.94879992e-03 -5.25183836e-03 -1.91006991e-04 -6.78582537e-03 6.63188133e-03 -6.50712338e-03 2.58595459e-04 4.08892304e-04 1.50120025e-04 4.16848167e-05 9.61306618e-04 -5.05218881e-04 1.34231757e-04 -6.65332653e-03 9.29544937e-03 -1.75321839e-02 2.19325430e-04 -2.41137503e-04 -1.01124921e-04 8.34518149e-03 5.25183836e-03 4.94879992e-03 -1.91006991e-04 6.78582537e-03 -6.50712338e-03 6.63188133e-03 -2.58595459e-04 -1.50120025e-04 -4.08892304e-04 4.16848167e-05 -9.61306618e-04 1.34231757e-04 -5.05218881e-04 - 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 - 0 12 24 36 48 66 86 106 124 144 164 170 180 190 190 200 206 216 226 226 236 254 274 294 308 326 346 366 384 404 424 438 456 476 496 -2 -2 2 496 - 1.46471486e+00 2.54883877e-01 1.24590418e-01 -9.35884290e-03 -2.50681311e-01 2.31073552e-01 2.31073552e-01 -2.31073552e-01 4.55715201e-02 -9.09946312e-02 -9.09946312e-02 9.09946312e-02 2.54883877e-01 1.70428957e+00 -9.34218553e-02 1.65342489e-01 1.29637869e-01 -1.70706534e-01 -1.70706534e-01 1.70706534e-01 -4.68039666e-02 8.78615395e-02 8.78615395e-02 -8.78615395e-02 1.24590418e-01 -9.34218553e-02 1.88920782e-02 -1.20468125e-02 -3.43603397e-02 3.47760262e-02 3.47760262e-02 -3.47760262e-02 8.11017653e-03 -1.51409429e-02 -1.51409429e-02 1.51409429e-02 -9.35884290e-03 1.65342489e-01 -1.20468125e-02 1.72406024e-02 1.90677593e-02 -2.20810865e-02 -2.20810865e-02 2.20810865e-02 -5.48328334e-03 1.08124682e-02 1.08124682e-02 -1.08124682e-02 1.89517553e+00 9.95491140e-02 9.95491140e-02 -9.15785008e-03 -2.53788780e-03 -2.53788780e-03 -2.12388496e-02 -1.19719253e-02 -1.19719253e-02 -1.34997473e-02 -6.86525306e-04 6.86525306e-04 -2.22701900e-02 7.88241731e-03 7.88241731e-03 -6.96401205e-03 -6.65332653e-03 6.65332653e-03 9.95491140e-02 2.04211641e+00 -9.95491140e-02 -2.53788780e-03 -3.88804018e-03 2.53788780e-03 6.78853114e-03 1.78035242e-02 -3.65770659e-03 -9.88504715e-03 1.34997473e-02 6.08947863e-03 1.14201355e-02 -1.00868915e-02 8.24231853e-03 -4.47145138e-03 2.15728427e-03 6.96401205e-03 -6.20170953e-03 -9.29544937e-03 9.95491140e-02 -9.95491140e-02 2.04211641e+00 -2.53788780e-03 2.53788780e-03 -3.88804018e-03 6.78853114e-03 -3.65770659e-03 1.78035242e-02 9.88504715e-03 1.34997473e-02 -1.14201355e-02 -6.08947863e-03 -1.00868915e-02 -4.47145138e-03 8.24231853e-03 -2.15728427e-03 6.96401205e-03 9.29544937e-03 6.20170953e-03 -9.15785008e-03 -2.53788780e-03 -2.53788780e-03 1.79684460e-04 -7.82240681e-05 -7.82240681e-05 4.90771661e-03 3.05324736e-03 3.05324736e-03 3.98965718e-03 -3.80846317e-03 3.80846317e-03 -8.90983131e-05 -1.92416159e-04 -1.92416159e-04 -5.76134452e-04 2.19325430e-04 -2.19325430e-04 -2.53788780e-03 -3.88804018e-03 2.53788780e-03 -7.82240681e-05 2.17480352e-04 7.82240681e-05 -4.88057902e-03 -2.92726385e-03 -2.92421677e-03 8.16061087e-05 -3.98965718e-03 3.98374436e-03 -3.90840983e-03 2.91222329e-04 4.87887308e-05 1.64256895e-04 -1.78094826e-05 5.76134452e-04 -3.17373257e-05 2.41137503e-04 -2.53788780e-03 2.53788780e-03 -3.88804018e-03 -7.82240681e-05 7.82240681e-05 2.17480352e-04 -4.88057902e-03 -2.92421677e-03 -2.92726385e-03 -8.16061087e-05 -3.98965718e-03 3.90840983e-03 -3.98374436e-03 2.91222329e-04 1.64256895e-04 4.87887308e-05 1.78094826e-05 5.76134452e-04 -2.41137503e-04 3.17373257e-05 -2.50681311e-01 1.29637869e-01 -3.43603397e-02 1.90677593e-02 2.55642069e-01 -5.76016724e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 -8.69671403e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 -8.69671403e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 -2.31073552e-01 1.70706534e-01 -3.47760262e-02 2.20810865e-02 -8.69671403e-02 -8.69671403e-02 5.09104100e-01 3.81033730e-02 3.81033730e-02 -1.31876001e-01 4.55715201e-02 -4.68039666e-02 8.11017653e-03 -5.48328334e-03 -5.76016724e-02 1.36360519e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 1.70016634e-02 1.70016634e-02 -1.70016634e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 1.70016634e-02 1.70016634e-02 -1.70016634e-02 9.09946312e-02 -8.78615395e-02 1.51409429e-02 -1.08124682e-02 3.81033730e-02 3.81033730e-02 -1.31876001e-01 -1.70016634e-02 -1.70016634e-02 3.78321204e-02 -2.12388496e-02 6.78853114e-03 6.78853114e-03 4.90771661e-03 -4.88057902e-03 -4.88057902e-03 2.33614448e-01 1.42959316e-01 1.42959316e-01 1.89783463e-01 -1.84466621e-01 1.84466621e-01 -1.02868307e-02 -6.47988162e-03 -6.47988162e-03 -2.78703402e-02 8.34518149e-03 -8.34518149e-03 -1.19719253e-02 1.78035242e-02 -3.65770659e-03 3.05324736e-03 -2.92726385e-03 -2.92421677e-03 1.42959316e-01 8.78151758e-02 8.75173384e-02 -1.05433222e-04 1.16218161e-01 -1.12710131e-01 1.12926204e-01 -6.29096583e-03 -3.94138564e-03 -4.07789392e-03 2.30094432e-05 -1.70670281e-02 5.10344353e-03 -5.25183836e-03 -1.19719253e-02 -3.65770659e-03 1.78035242e-02 3.05324736e-03 -2.92421677e-03 -2.92726385e-03 1.42959316e-01 8.75173384e-02 8.78151758e-02 1.05433222e-04 1.16218161e-01 -1.12926204e-01 1.12710131e-01 -6.29096583e-03 -4.07789392e-03 -3.94138564e-03 -2.30094432e-05 -1.70670281e-02 5.25183836e-03 -5.10344353e-03 -9.88504715e-03 9.88504715e-03 8.16061087e-05 -8.16061087e-05 -1.05433222e-04 1.05433222e-04 1.78440391e-04 -9.58226514e-06 -9.58226514e-06 -1.23324095e-04 1.23324095e-04 -3.89423179e-05 1.91006991e-04 1.91006991e-04 -1.34997473e-02 1.34997473e-02 1.34997473e-02 3.98965718e-03 -3.98965718e-03 -3.98965718e-03 1.89783463e-01 1.16218161e-01 1.16218161e-01 3.67563826e-01 -1.50037001e-01 1.50037001e-01 -8.58346559e-03 -5.25627773e-03 -5.25627773e-03 -3.91967293e-02 6.78582537e-03 -6.78582537e-03 -6.86525306e-04 6.08947863e-03 -1.14201355e-02 -3.80846317e-03 3.98374436e-03 3.90840983e-03 -1.84466621e-01 -1.12710131e-01 -1.12926204e-01 -9.58226514e-06 -1.50037001e-01 1.46241269e-01 -1.45949895e-01 8.49151503e-03 5.01097526e-03 5.01287669e-03 2.09120600e-06 2.20334385e-02 -6.42339379e-03 6.50712338e-03 6.86525306e-04 1.14201355e-02 -6.08947863e-03 3.80846317e-03 -3.90840983e-03 -3.98374436e-03 1.84466621e-01 1.12926204e-01 1.12710131e-01 -9.58226514e-06 1.50037001e-01 -1.45949895e-01 1.46241269e-01 -8.49151503e-03 -5.01287669e-03 -5.01097526e-03 2.09120600e-06 -2.20334385e-02 6.50712338e-03 -6.42339379e-03 -2.22701900e-02 -1.00868915e-02 -1.00868915e-02 -8.90983131e-05 2.91222329e-04 2.91222329e-04 -1.02868307e-02 -6.29096583e-03 -6.29096583e-03 -8.58346559e-03 8.49151503e-03 -8.49151503e-03 9.59486559e-04 1.37774951e-04 1.37774951e-04 1.21596738e-03 -2.58595459e-04 2.58595459e-04 7.88241731e-03 8.24231853e-03 -4.47145138e-03 -1.92416159e-04 4.87887308e-05 1.64256895e-04 -6.47988162e-03 -3.94138564e-03 -4.07789392e-03 -1.23324095e-04 -5.25627773e-03 5.01097526e-03 -5.01287669e-03 1.37774951e-04 3.30152350e-04 1.58824815e-04 2.69138959e-05 7.44624905e-04 -4.19384346e-04 1.50120025e-04 7.88241731e-03 -4.47145138e-03 8.24231853e-03 -1.92416159e-04 1.64256895e-04 4.87887308e-05 -6.47988162e-03 -4.07789392e-03 -3.94138564e-03 1.23324095e-04 -5.25627773e-03 5.01287669e-03 -5.01097526e-03 1.37774951e-04 1.58824815e-04 3.30152350e-04 -2.69138959e-05 7.44624905e-04 -1.50120025e-04 4.19384346e-04 2.15728427e-03 -2.15728427e-03 -1.78094826e-05 1.78094826e-05 2.30094432e-05 -2.30094432e-05 -3.89423179e-05 2.09120600e-06 2.09120600e-06 2.69138959e-05 -2.69138959e-05 8.49865950e-06 -4.16848167e-05 -4.16848167e-05 -6.96401205e-03 6.96401205e-03 6.96401205e-03 -5.76134452e-04 5.76134452e-04 5.76134452e-04 -2.78703402e-02 -1.70670281e-02 -1.70670281e-02 -3.91967293e-02 2.20334385e-02 -2.20334385e-02 1.21596738e-03 7.44624905e-04 7.44624905e-04 4.88351268e-03 -9.61306618e-04 9.61306618e-04 -6.65332653e-03 -6.20170953e-03 9.29544937e-03 2.19325430e-04 -3.17373257e-05 -2.41137503e-04 8.34518149e-03 5.10344353e-03 5.25183836e-03 1.91006991e-04 6.78582537e-03 -6.42339379e-03 6.50712338e-03 -2.58595459e-04 -4.19384346e-04 -1.50120025e-04 -4.16848167e-05 -9.61306618e-04 5.81078995e-04 -1.34231757e-04 6.65332653e-03 -9.29544937e-03 6.20170953e-03 -2.19325430e-04 2.41137503e-04 3.17373257e-05 -8.34518149e-03 -5.25183836e-03 -5.10344353e-03 1.91006991e-04 -6.78582537e-03 6.50712338e-03 -6.42339379e-03 2.58595459e-04 1.50120025e-04 4.19384346e-04 -4.16848167e-05 9.61306618e-04 -1.34231757e-04 5.81078995e-04 - 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 - 0 12 24 36 48 66 86 106 124 144 164 170 180 190 190 200 206 216 226 226 236 254 274 294 308 326 346 366 384 404 424 438 456 476 496 -2 -1 -2 496 - -1.30077665e+00 -3.97979828e-02 -1.21755678e-01 3.00506476e-02 2.50681311e-01 -2.31073552e-01 -2.31073552e-01 2.31073552e-01 -4.55715201e-02 9.09946312e-02 9.09946312e-02 -9.09946312e-02 -3.97979828e-02 -1.15126664e+00 8.95185576e-02 -1.01048380e-01 -1.29637869e-01 1.70706534e-01 1.70706534e-01 -1.70706534e-01 4.68039666e-02 -8.78615395e-02 -8.78615395e-02 8.78615395e-02 -1.21755678e-01 8.95185576e-02 -1.86285298e-02 1.13591275e-02 3.43603397e-02 -3.47760262e-02 -3.47760262e-02 3.47760262e-02 -8.11017653e-03 1.51409429e-02 1.51409429e-02 -1.51409429e-02 3.00506476e-02 -1.01048380e-01 1.13591275e-02 -9.53400814e-03 -1.90677593e-02 2.20810865e-02 2.20810865e-02 -2.20810865e-02 5.48328334e-03 -1.08124682e-02 -1.08124682e-02 1.08124682e-02 -1.32837516e+00 -9.95491140e-02 -9.95491140e-02 3.64581589e-03 2.53788780e-03 2.53788780e-03 2.60203672e-02 1.19719253e-02 1.19719253e-02 1.34997473e-02 6.86525306e-04 -6.86525306e-04 2.30528378e-02 -7.88241731e-03 -7.88241731e-03 6.96401205e-03 6.65332653e-03 -6.65332653e-03 -9.95491140e-02 -1.47531604e+00 9.95491140e-02 2.53788780e-03 -1.62399402e-03 -2.53788780e-03 -6.78853114e-03 -2.07315938e-02 3.65770659e-03 9.88504715e-03 -1.34997473e-02 -2.30935703e-03 -1.14201355e-02 1.00868915e-02 -8.72159043e-03 4.47145138e-03 -2.15728427e-03 -6.96401205e-03 6.82044689e-03 9.29544937e-03 -9.95491140e-02 9.95491140e-02 -1.47531604e+00 2.53788780e-03 -2.53788780e-03 -1.62399402e-03 -6.78853114e-03 3.65770659e-03 -2.07315938e-02 -9.88504715e-03 -1.34997473e-02 1.14201355e-02 2.30935703e-03 1.00868915e-02 4.47145138e-03 -8.72159043e-03 2.15728427e-03 -6.96401205e-03 -9.29544937e-03 -6.82044689e-03 3.64581589e-03 2.53788780e-03 2.53788780e-03 -1.26080894e-04 7.82240681e-05 7.82240681e-05 -4.95421603e-03 -3.05324736e-03 -3.05324736e-03 -3.98965718e-03 3.80846317e-03 -3.80846317e-03 8.14872011e-05 1.92416159e-04 1.92416159e-04 5.76134452e-04 -2.19325430e-04 2.19325430e-04 2.53788780e-03 -1.62399402e-03 -2.53788780e-03 7.82240681e-05 -1.63876786e-04 -7.82240681e-05 4.88057902e-03 2.95573881e-03 2.92421677e-03 -8.16061087e-05 3.98965718e-03 -4.02050538e-03 3.90840983e-03 -2.91222329e-04 -4.41278956e-05 -1.64256895e-04 1.78094826e-05 -5.76134452e-04 2.57202134e-05 -2.41137503e-04 2.53788780e-03 -2.53788780e-03 -1.62399402e-03 7.82240681e-05 -7.82240681e-05 -1.63876786e-04 4.88057902e-03 2.92421677e-03 2.95573881e-03 8.16061087e-05 3.98965718e-03 -3.90840983e-03 4.02050538e-03 -2.91222329e-04 -1.64256895e-04 -4.41278956e-05 -1.78094826e-05 -5.76134452e-04 2.41137503e-04 -2.57202134e-05 2.50681311e-01 -1.29637869e-01 3.43603397e-02 -1.90677593e-02 -2.55642069e-01 5.76016724e-02 -2.31073552e-01 1.70706534e-01 -3.47760262e-02 2.20810865e-02 -8.69671403e-02 -8.69671403e-02 8.69671403e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 -2.31073552e-01 1.70706534e-01 -3.47760262e-02 2.20810865e-02 -8.69671403e-02 -8.69671403e-02 8.69671403e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 -5.09104100e-01 -3.81033730e-02 -3.81033730e-02 1.31876001e-01 -4.55715201e-02 4.68039666e-02 -8.11017653e-03 5.48328334e-03 5.76016724e-02 -1.36360519e-02 9.09946312e-02 -8.78615395e-02 1.51409429e-02 -1.08124682e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 -1.70016634e-02 -1.70016634e-02 1.70016634e-02 9.09946312e-02 -8.78615395e-02 1.51409429e-02 -1.08124682e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 -1.70016634e-02 -1.70016634e-02 1.70016634e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 1.31876001e-01 1.70016634e-02 1.70016634e-02 -3.78321204e-02 2.60203672e-02 -6.78853114e-03 -6.78853114e-03 -4.95421603e-03 4.88057902e-03 4.88057902e-03 -2.33574112e-01 -1.42959316e-01 -1.42959316e-01 -1.89783463e-01 1.84466621e-01 -1.84466621e-01 1.02934331e-02 6.47988162e-03 6.47988162e-03 2.78703402e-02 -8.34518149e-03 8.34518149e-03 1.19719253e-02 -2.07315938e-02 3.65770659e-03 -3.05324736e-03 2.95573881e-03 2.92421677e-03 -1.42959316e-01 -8.78000495e-02 -8.75173384e-02 1.05433222e-04 -1.16218161e-01 1.12690603e-01 -1.12926204e-01 6.29096583e-03 3.94386154e-03 4.07789392e-03 -2.30094432e-05 1.70670281e-02 -5.10663990e-03 5.25183836e-03 1.19719253e-02 3.65770659e-03 -2.07315938e-02 -3.05324736e-03 2.92421677e-03 2.95573881e-03 -1.42959316e-01 -8.75173384e-02 -8.78000495e-02 -1.05433222e-04 -1.16218161e-01 1.12926204e-01 -1.12690603e-01 6.29096583e-03 4.07789392e-03 3.94386154e-03 2.30094432e-05 1.70670281e-02 -5.25183836e-03 5.10663990e-03 9.88504715e-03 -9.88504715e-03 -8.16061087e-05 8.16061087e-05 1.05433222e-04 -1.05433222e-04 -1.78440391e-04 9.58226514e-06 9.58226514e-06 1.23324095e-04 -1.23324095e-04 3.89423179e-05 -1.91006991e-04 -1.91006991e-04 1.34997473e-02 -1.34997473e-02 -1.34997473e-02 -3.98965718e-03 3.98965718e-03 3.98965718e-03 -1.89783463e-01 -1.16218161e-01 -1.16218161e-01 5.86189719e-02 1.50037001e-01 -1.50037001e-01 8.58346559e-03 5.25627773e-03 5.25627773e-03 5.74991859e-03 -6.78582537e-03 6.78582537e-03 6.86525306e-04 -2.30935703e-03 1.14201355e-02 3.80846317e-03 -4.02050538e-03 -3.90840983e-03 1.84466621e-01 1.12690603e-01 1.12926204e-01 9.58226514e-06 1.50037001e-01 -1.46216058e-01 1.45949895e-01 -8.49151503e-03 -5.01417164e-03 -5.01287669e-03 -2.09120600e-06 -2.20334385e-02 6.42752029e-03 -6.50712338e-03 -6.86525306e-04 -1.14201355e-02 2.30935703e-03 -3.80846317e-03 3.90840983e-03 4.02050538e-03 -1.84466621e-01 -1.12926204e-01 -1.12690603e-01 9.58226514e-06 -1.50037001e-01 1.45949895e-01 -1.46216058e-01 8.49151503e-03 5.01287669e-03 5.01417164e-03 -2.09120600e-06 2.20334385e-02 -6.50712338e-03 6.42752029e-03 2.30528378e-02 1.00868915e-02 1.00868915e-02 8.14872011e-05 -2.91222329e-04 -2.91222329e-04 1.02934331e-02 6.29096583e-03 6.29096583e-03 8.58346559e-03 -8.49151503e-03 8.49151503e-03 -9.58405865e-04 -1.37774951e-04 -1.37774951e-04 -1.21596738e-03 2.58595459e-04 -2.58595459e-04 -7.88241731e-03 -8.72159043e-03 4.47145138e-03 1.92416159e-04 -4.41278956e-05 -1.64256895e-04 6.47988162e-03 3.94386154e-03 4.07789392e-03 1.23324095e-04 5.25627773e-03 -5.01417164e-03 5.01287669e-03 -1.37774951e-04 -3.29747090e-04 -1.58824815e-04 -2.69138959e-05 -7.44624905e-04 4.18861158e-04 -1.50120025e-04 -7.88241731e-03 4.47145138e-03 -8.72159043e-03 1.92416159e-04 -1.64256895e-04 -4.41278956e-05 6.47988162e-03 4.07789392e-03 3.94386154e-03 -1.23324095e-04 5.25627773e-03 -5.01287669e-03 5.01417164e-03 -1.37774951e-04 -1.58824815e-04 -3.29747090e-04 2.69138959e-05 -7.44624905e-04 1.50120025e-04 -4.18861158e-04 -2.15728427e-03 2.15728427e-03 1.78094826e-05 -1.78094826e-05 -2.30094432e-05 2.30094432e-05 3.89423179e-05 -2.09120600e-06 -2.09120600e-06 -2.69138959e-05 2.69138959e-05 -8.49865950e-06 4.16848167e-05 4.16848167e-05 6.96401205e-03 -6.96401205e-03 -6.96401205e-03 5.76134452e-04 -5.76134452e-04 -5.76134452e-04 2.78703402e-02 1.70670281e-02 1.70670281e-02 5.74991859e-03 -2.20334385e-02 2.20334385e-02 -1.21596738e-03 -7.44624905e-04 -7.44624905e-04 -2.25860819e-03 9.61306618e-04 -9.61306618e-04 6.65332653e-03 6.82044689e-03 -9.29544937e-03 -2.19325430e-04 2.57202134e-05 2.41137503e-04 -8.34518149e-03 -5.10663990e-03 -5.25183836e-03 -1.91006991e-04 -6.78582537e-03 6.42752029e-03 -6.50712338e-03 2.58595459e-04 4.18861158e-04 1.50120025e-04 4.16848167e-05 9.61306618e-04 -5.80403562e-04 1.34231757e-04 -6.65332653e-03 9.29544937e-03 -6.82044689e-03 2.19325430e-04 -2.41137503e-04 -2.57202134e-05 8.34518149e-03 5.25183836e-03 5.10663990e-03 -1.91006991e-04 6.78582537e-03 -6.50712338e-03 6.42752029e-03 -2.58595459e-04 -1.50120025e-04 -4.18861158e-04 4.16848167e-05 -9.61306618e-04 1.34231757e-04 -5.80403562e-04 - 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 - 0 12 24 36 48 66 86 106 124 144 164 170 180 190 190 200 206 216 226 226 236 254 274 294 308 326 346 366 384 404 424 438 456 476 496 -2 -1 -1 496 - 6.10668701e-01 -7.51799909e-02 6.94266500e-02 -1.13818158e-02 2.50681311e-01 2.31073552e-01 2.31073552e-01 -2.31073552e-01 -4.55715201e-02 -9.09946312e-02 -9.09946312e-02 9.09946312e-02 -7.51799909e-02 6.30743818e-01 -3.88656825e-02 8.24503254e-02 -1.29637869e-01 -1.70706534e-01 -1.70706534e-01 1.70706534e-01 4.68039666e-02 8.78615395e-02 8.78615395e-02 -8.78615395e-02 6.94266500e-02 -3.88656825e-02 9.24320123e-03 -5.59159516e-03 3.43603397e-02 3.47760262e-02 3.47760262e-02 -3.47760262e-02 -8.11017653e-03 -1.51409429e-02 -1.51409429e-02 1.51409429e-02 -1.13818158e-02 8.24503254e-02 -5.59159516e-03 1.01087384e-02 -1.90677593e-02 -2.20810865e-02 -2.20810865e-02 2.20810865e-02 5.48328334e-03 1.08124682e-02 1.08124682e-02 -1.08124682e-02 6.62931071e-01 9.95491140e-02 9.95491140e-02 -9.36131516e-03 -2.53788780e-03 -2.53788780e-03 -1.84743808e-04 -1.19719253e-02 -1.19719253e-02 -1.34997473e-02 -6.86525306e-04 6.86525306e-04 -6.96842667e-03 7.88241731e-03 7.88241731e-03 -6.96401205e-03 -6.65332653e-03 6.65332653e-03 9.95491140e-02 5.15990200e-01 -9.95491140e-02 -2.53788780e-03 -1.46311251e-02 2.53788780e-03 6.78853114e-03 -4.68430612e-03 -3.65770659e-03 -9.88504715e-03 1.34997473e-02 -2.30263163e-02 1.14201355e-02 -1.00868915e-02 9.66260440e-03 -4.47145138e-03 2.15728427e-03 6.96401205e-03 -1.69134466e-02 -9.29544937e-03 9.95491140e-02 -9.95491140e-02 5.15990200e-01 -2.53788780e-03 2.53788780e-03 -1.46311251e-02 6.78853114e-03 -3.65770659e-03 -4.68430612e-03 9.88504715e-03 1.34997473e-02 -1.14201355e-02 2.30263163e-02 -1.00868915e-02 -4.47145138e-03 9.66260440e-03 -2.15728427e-03 6.96401205e-03 9.29544937e-03 1.69134466e-02 -9.36131516e-03 -2.53788780e-03 -2.53788780e-03 1.79650864e-04 -7.82240681e-05 -7.82240681e-05 4.91119301e-03 3.05324736e-03 3.05324736e-03 3.98965718e-03 -3.80846317e-03 3.80846317e-03 -8.65717248e-05 -1.92416159e-04 -1.92416159e-04 -5.76134452e-04 2.19325430e-04 -2.19325430e-04 -2.53788780e-03 -1.46311251e-02 2.53788780e-03 -7.82240681e-05 1.41854973e-04 7.82240681e-05 -4.88057902e-03 -3.08556574e-03 -2.92421677e-03 8.16061087e-05 -3.98965718e-03 3.77878526e-03 -3.90840983e-03 2.91222329e-04 5.87867582e-05 1.64256895e-04 -1.78094826e-05 5.76134452e-04 -1.07142033e-04 2.41137503e-04 -2.53788780e-03 2.53788780e-03 -1.46311251e-02 -7.82240681e-05 7.82240681e-05 1.41854973e-04 -4.88057902e-03 -2.92421677e-03 -3.08556574e-03 -8.16061087e-05 -3.98965718e-03 3.90840983e-03 -3.77878526e-03 2.91222329e-04 1.64256895e-04 5.87867582e-05 1.78094826e-05 5.76134452e-04 -2.41137503e-04 1.07142033e-04 2.50681311e-01 -1.29637869e-01 3.43603397e-02 -1.90677593e-02 -2.55642069e-01 5.76016724e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 -8.69671403e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 -8.69671403e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 -2.31073552e-01 1.70706534e-01 -3.47760262e-02 2.20810865e-02 -8.69671403e-02 -8.69671403e-02 -3.35169819e-01 3.81033730e-02 3.81033730e-02 5.56692551e-02 -4.55715201e-02 4.68039666e-02 -8.11017653e-03 5.48328334e-03 5.76016724e-02 -1.36360519e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 1.70016634e-02 1.70016634e-02 -1.70016634e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 1.70016634e-02 1.70016634e-02 -1.70016634e-02 9.09946312e-02 -8.78615395e-02 1.51409429e-02 -1.08124682e-02 3.81033730e-02 3.81033730e-02 5.56692551e-02 -1.70016634e-02 -1.70016634e-02 -3.82879364e-03 -1.84743808e-04 6.78853114e-03 6.78853114e-03 4.91119301e-03 -4.88057902e-03 -4.88057902e-03 2.33254718e-01 1.42959316e-01 1.42959316e-01 1.89783463e-01 -1.84466621e-01 1.84466621e-01 -1.05482763e-02 -6.47988162e-03 -6.47988162e-03 -2.78703402e-02 8.34518149e-03 -8.34518149e-03 -1.19719253e-02 -4.68430612e-03 -3.65770659e-03 3.05324736e-03 -3.08556574e-03 -2.92421677e-03 1.42959316e-01 8.74838123e-02 8.75173384e-02 -1.05433222e-04 1.16218161e-01 -1.13139159e-01 1.12926204e-01 -6.29096583e-03 -3.92045739e-03 -4.07789392e-03 2.30094432e-05 -1.70670281e-02 4.94560355e-03 -5.25183836e-03 -1.19719253e-02 -3.65770659e-03 -4.68430612e-03 3.05324736e-03 -2.92421677e-03 -3.08556574e-03 1.42959316e-01 8.75173384e-02 8.74838123e-02 1.05433222e-04 1.16218161e-01 -1.12926204e-01 1.13139159e-01 -6.29096583e-03 -4.07789392e-03 -3.92045739e-03 -2.30094432e-05 -1.70670281e-02 5.25183836e-03 -4.94560355e-03 -9.88504715e-03 9.88504715e-03 8.16061087e-05 -8.16061087e-05 -1.05433222e-04 1.05433222e-04 1.78440391e-04 -9.58226514e-06 -9.58226514e-06 -1.23324095e-04 1.23324095e-04 -3.89423179e-05 1.91006991e-04 1.91006991e-04 -1.34997473e-02 1.34997473e-02 1.34997473e-02 3.98965718e-03 -3.98965718e-03 -3.98965718e-03 1.89783463e-01 1.16218161e-01 1.16218161e-01 3.67563826e-01 -1.50037001e-01 1.50037001e-01 -8.58346559e-03 -5.25627773e-03 -5.25627773e-03 -3.91967293e-02 6.78582537e-03 -6.78582537e-03 -6.86525306e-04 -2.30263163e-02 -1.14201355e-02 -3.80846317e-03 3.77878526e-03 3.90840983e-03 -1.84466621e-01 -1.13139159e-01 -1.12926204e-01 -9.58226514e-06 -1.50037001e-01 1.45685791e-01 -1.45949895e-01 8.49151503e-03 5.03807181e-03 5.01287669e-03 2.09120600e-06 2.20334385e-02 -6.62775483e-03 6.50712338e-03 6.86525306e-04 1.14201355e-02 2.30263163e-02 3.80846317e-03 -3.90840983e-03 -3.77878526e-03 1.84466621e-01 1.12926204e-01 1.13139159e-01 -9.58226514e-06 1.50037001e-01 -1.45949895e-01 1.45685791e-01 -8.49151503e-03 -5.01287669e-03 -5.03807181e-03 2.09120600e-06 -2.20334385e-02 6.50712338e-03 -6.62775483e-03 -6.96842667e-03 -1.00868915e-02 -1.00868915e-02 -8.65717248e-05 2.91222329e-04 2.91222329e-04 -1.05482763e-02 -6.29096583e-03 -6.29096583e-03 -8.58346559e-03 8.49151503e-03 -8.49151503e-03 7.69472345e-04 1.37774951e-04 1.37774951e-04 1.21596738e-03 -2.58595459e-04 2.58595459e-04 7.88241731e-03 9.66260440e-03 -4.47145138e-03 -1.92416159e-04 5.87867582e-05 1.64256895e-04 -6.47988162e-03 -3.92045739e-03 -4.07789392e-03 -1.23324095e-04 -5.25627773e-03 5.03807181e-03 -5.01287669e-03 1.37774951e-04 3.28830564e-04 1.58824815e-04 2.69138959e-05 7.44624905e-04 -4.09415493e-04 1.50120025e-04 7.88241731e-03 -4.47145138e-03 9.66260440e-03 -1.92416159e-04 1.64256895e-04 5.87867582e-05 -6.47988162e-03 -4.07789392e-03 -3.92045739e-03 1.23324095e-04 -5.25627773e-03 5.01287669e-03 -5.03807181e-03 1.37774951e-04 1.58824815e-04 3.28830564e-04 -2.69138959e-05 7.44624905e-04 -1.50120025e-04 4.09415493e-04 2.15728427e-03 -2.15728427e-03 -1.78094826e-05 1.78094826e-05 2.30094432e-05 -2.30094432e-05 -3.89423179e-05 2.09120600e-06 2.09120600e-06 2.69138959e-05 -2.69138959e-05 8.49865950e-06 -4.16848167e-05 -4.16848167e-05 -6.96401205e-03 6.96401205e-03 6.96401205e-03 -5.76134452e-04 5.76134452e-04 5.76134452e-04 -2.78703402e-02 -1.70670281e-02 -1.70670281e-02 -3.91967293e-02 2.20334385e-02 -2.20334385e-02 1.21596738e-03 7.44624905e-04 7.44624905e-04 4.88351268e-03 -9.61306618e-04 9.61306618e-04 -6.65332653e-03 -1.69134466e-02 9.29544937e-03 2.19325430e-04 -1.07142033e-04 -2.41137503e-04 8.34518149e-03 4.94560355e-03 5.25183836e-03 1.91006991e-04 6.78582537e-03 -6.62775483e-03 6.50712338e-03 -2.58595459e-04 -4.09415493e-04 -1.50120025e-04 -4.16848167e-05 -9.61306618e-04 5.05894315e-04 -1.34231757e-04 6.65332653e-03 -9.29544937e-03 1.69134466e-02 -2.19325430e-04 2.41137503e-04 1.07142033e-04 -8.34518149e-03 -5.25183836e-03 -4.94560355e-03 1.91006991e-04 -6.78582537e-03 6.50712338e-03 -6.62775483e-03 2.58595459e-04 1.50120025e-04 4.09415493e-04 -4.16848167e-05 9.61306618e-04 -1.34231757e-04 5.05894315e-04 - 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 - 0 12 24 36 48 66 86 106 124 144 164 170 180 190 190 200 206 216 226 226 236 254 274 294 308 326 346 366 384 404 424 438 456 476 496 -2 -1 0 496 - -1.30077665e+00 -3.97979828e-02 -1.21755678e-01 3.00506476e-02 2.50681311e-01 -2.31073552e-01 -2.31073552e-01 2.31073552e-01 -4.55715201e-02 9.09946312e-02 9.09946312e-02 -9.09946312e-02 -3.97979828e-02 -1.15126664e+00 8.95185576e-02 -1.01048380e-01 -1.29637869e-01 1.70706534e-01 1.70706534e-01 -1.70706534e-01 4.68039666e-02 -8.78615395e-02 -8.78615395e-02 8.78615395e-02 -1.21755678e-01 8.95185576e-02 -1.86285298e-02 1.13591275e-02 3.43603397e-02 -3.47760262e-02 -3.47760262e-02 3.47760262e-02 -8.11017653e-03 1.51409429e-02 1.51409429e-02 -1.51409429e-02 3.00506476e-02 -1.01048380e-01 1.13591275e-02 -9.53400814e-03 -1.90677593e-02 2.20810865e-02 2.20810865e-02 -2.20810865e-02 5.48328334e-03 -1.08124682e-02 -1.08124682e-02 1.08124682e-02 -1.32837516e+00 -9.95491140e-02 -9.95491140e-02 3.64581589e-03 2.53788780e-03 2.53788780e-03 2.60203672e-02 1.19719253e-02 1.19719253e-02 1.34997473e-02 6.86525306e-04 -6.86525306e-04 2.30528378e-02 -7.88241731e-03 -7.88241731e-03 6.96401205e-03 6.65332653e-03 -6.65332653e-03 -9.95491140e-02 -1.47531604e+00 9.95491140e-02 2.53788780e-03 -1.62399402e-03 -2.53788780e-03 -6.78853114e-03 -2.07315938e-02 3.65770659e-03 9.88504715e-03 -1.34997473e-02 -2.30935703e-03 -1.14201355e-02 1.00868915e-02 -8.72159043e-03 4.47145138e-03 -2.15728427e-03 -6.96401205e-03 6.82044689e-03 9.29544937e-03 -9.95491140e-02 9.95491140e-02 -1.47531604e+00 2.53788780e-03 -2.53788780e-03 -1.62399402e-03 -6.78853114e-03 3.65770659e-03 -2.07315938e-02 -9.88504715e-03 -1.34997473e-02 1.14201355e-02 2.30935703e-03 1.00868915e-02 4.47145138e-03 -8.72159043e-03 2.15728427e-03 -6.96401205e-03 -9.29544937e-03 -6.82044689e-03 3.64581589e-03 2.53788780e-03 2.53788780e-03 -1.26080894e-04 7.82240681e-05 7.82240681e-05 -4.95421603e-03 -3.05324736e-03 -3.05324736e-03 -3.98965718e-03 3.80846317e-03 -3.80846317e-03 8.14872011e-05 1.92416159e-04 1.92416159e-04 5.76134452e-04 -2.19325430e-04 2.19325430e-04 2.53788780e-03 -1.62399402e-03 -2.53788780e-03 7.82240681e-05 -1.63876786e-04 -7.82240681e-05 4.88057902e-03 2.95573881e-03 2.92421677e-03 -8.16061087e-05 3.98965718e-03 -4.02050538e-03 3.90840983e-03 -2.91222329e-04 -4.41278956e-05 -1.64256895e-04 1.78094826e-05 -5.76134452e-04 2.57202134e-05 -2.41137503e-04 2.53788780e-03 -2.53788780e-03 -1.62399402e-03 7.82240681e-05 -7.82240681e-05 -1.63876786e-04 4.88057902e-03 2.92421677e-03 2.95573881e-03 8.16061087e-05 3.98965718e-03 -3.90840983e-03 4.02050538e-03 -2.91222329e-04 -1.64256895e-04 -4.41278956e-05 -1.78094826e-05 -5.76134452e-04 2.41137503e-04 -2.57202134e-05 2.50681311e-01 -1.29637869e-01 3.43603397e-02 -1.90677593e-02 -2.55642069e-01 5.76016724e-02 -2.31073552e-01 1.70706534e-01 -3.47760262e-02 2.20810865e-02 -8.69671403e-02 -8.69671403e-02 8.69671403e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 -2.31073552e-01 1.70706534e-01 -3.47760262e-02 2.20810865e-02 -8.69671403e-02 -8.69671403e-02 8.69671403e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 -5.09104100e-01 -3.81033730e-02 -3.81033730e-02 1.31876001e-01 -4.55715201e-02 4.68039666e-02 -8.11017653e-03 5.48328334e-03 5.76016724e-02 -1.36360519e-02 9.09946312e-02 -8.78615395e-02 1.51409429e-02 -1.08124682e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 -1.70016634e-02 -1.70016634e-02 1.70016634e-02 9.09946312e-02 -8.78615395e-02 1.51409429e-02 -1.08124682e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 -1.70016634e-02 -1.70016634e-02 1.70016634e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 1.31876001e-01 1.70016634e-02 1.70016634e-02 -3.78321204e-02 2.60203672e-02 -6.78853114e-03 -6.78853114e-03 -4.95421603e-03 4.88057902e-03 4.88057902e-03 -2.33574112e-01 -1.42959316e-01 -1.42959316e-01 -1.89783463e-01 1.84466621e-01 -1.84466621e-01 1.02934331e-02 6.47988162e-03 6.47988162e-03 2.78703402e-02 -8.34518149e-03 8.34518149e-03 1.19719253e-02 -2.07315938e-02 3.65770659e-03 -3.05324736e-03 2.95573881e-03 2.92421677e-03 -1.42959316e-01 -8.78000495e-02 -8.75173384e-02 1.05433222e-04 -1.16218161e-01 1.12690603e-01 -1.12926204e-01 6.29096583e-03 3.94386154e-03 4.07789392e-03 -2.30094432e-05 1.70670281e-02 -5.10663990e-03 5.25183836e-03 1.19719253e-02 3.65770659e-03 -2.07315938e-02 -3.05324736e-03 2.92421677e-03 2.95573881e-03 -1.42959316e-01 -8.75173384e-02 -8.78000495e-02 -1.05433222e-04 -1.16218161e-01 1.12926204e-01 -1.12690603e-01 6.29096583e-03 4.07789392e-03 3.94386154e-03 2.30094432e-05 1.70670281e-02 -5.25183836e-03 5.10663990e-03 9.88504715e-03 -9.88504715e-03 -8.16061087e-05 8.16061087e-05 1.05433222e-04 -1.05433222e-04 -1.78440391e-04 9.58226514e-06 9.58226514e-06 1.23324095e-04 -1.23324095e-04 3.89423179e-05 -1.91006991e-04 -1.91006991e-04 1.34997473e-02 -1.34997473e-02 -1.34997473e-02 -3.98965718e-03 3.98965718e-03 3.98965718e-03 -1.89783463e-01 -1.16218161e-01 -1.16218161e-01 5.86189719e-02 1.50037001e-01 -1.50037001e-01 8.58346559e-03 5.25627773e-03 5.25627773e-03 5.74991859e-03 -6.78582537e-03 6.78582537e-03 6.86525306e-04 -2.30935703e-03 1.14201355e-02 3.80846317e-03 -4.02050538e-03 -3.90840983e-03 1.84466621e-01 1.12690603e-01 1.12926204e-01 9.58226514e-06 1.50037001e-01 -1.46216058e-01 1.45949895e-01 -8.49151503e-03 -5.01417164e-03 -5.01287669e-03 -2.09120600e-06 -2.20334385e-02 6.42752029e-03 -6.50712338e-03 -6.86525306e-04 -1.14201355e-02 2.30935703e-03 -3.80846317e-03 3.90840983e-03 4.02050538e-03 -1.84466621e-01 -1.12926204e-01 -1.12690603e-01 9.58226514e-06 -1.50037001e-01 1.45949895e-01 -1.46216058e-01 8.49151503e-03 5.01287669e-03 5.01417164e-03 -2.09120600e-06 2.20334385e-02 -6.50712338e-03 6.42752029e-03 2.30528378e-02 1.00868915e-02 1.00868915e-02 8.14872011e-05 -2.91222329e-04 -2.91222329e-04 1.02934331e-02 6.29096583e-03 6.29096583e-03 8.58346559e-03 -8.49151503e-03 8.49151503e-03 -9.58405865e-04 -1.37774951e-04 -1.37774951e-04 -1.21596738e-03 2.58595459e-04 -2.58595459e-04 -7.88241731e-03 -8.72159043e-03 4.47145138e-03 1.92416159e-04 -4.41278956e-05 -1.64256895e-04 6.47988162e-03 3.94386154e-03 4.07789392e-03 1.23324095e-04 5.25627773e-03 -5.01417164e-03 5.01287669e-03 -1.37774951e-04 -3.29747090e-04 -1.58824815e-04 -2.69138959e-05 -7.44624905e-04 4.18861158e-04 -1.50120025e-04 -7.88241731e-03 4.47145138e-03 -8.72159043e-03 1.92416159e-04 -1.64256895e-04 -4.41278956e-05 6.47988162e-03 4.07789392e-03 3.94386154e-03 -1.23324095e-04 5.25627773e-03 -5.01287669e-03 5.01417164e-03 -1.37774951e-04 -1.58824815e-04 -3.29747090e-04 2.69138959e-05 -7.44624905e-04 1.50120025e-04 -4.18861158e-04 -2.15728427e-03 2.15728427e-03 1.78094826e-05 -1.78094826e-05 -2.30094432e-05 2.30094432e-05 3.89423179e-05 -2.09120600e-06 -2.09120600e-06 -2.69138959e-05 2.69138959e-05 -8.49865950e-06 4.16848167e-05 4.16848167e-05 6.96401205e-03 -6.96401205e-03 -6.96401205e-03 5.76134452e-04 -5.76134452e-04 -5.76134452e-04 2.78703402e-02 1.70670281e-02 1.70670281e-02 5.74991859e-03 -2.20334385e-02 2.20334385e-02 -1.21596738e-03 -7.44624905e-04 -7.44624905e-04 -2.25860819e-03 9.61306618e-04 -9.61306618e-04 6.65332653e-03 6.82044689e-03 -9.29544937e-03 -2.19325430e-04 2.57202134e-05 2.41137503e-04 -8.34518149e-03 -5.10663990e-03 -5.25183836e-03 -1.91006991e-04 -6.78582537e-03 6.42752029e-03 -6.50712338e-03 2.58595459e-04 4.18861158e-04 1.50120025e-04 4.16848167e-05 9.61306618e-04 -5.80403562e-04 1.34231757e-04 -6.65332653e-03 9.29544937e-03 -6.82044689e-03 2.19325430e-04 -2.41137503e-04 -2.57202134e-05 8.34518149e-03 5.25183836e-03 5.10663990e-03 -1.91006991e-04 6.78582537e-03 -6.50712338e-03 6.42752029e-03 -2.58595459e-04 -1.50120025e-04 -4.18861158e-04 4.16848167e-05 -9.61306618e-04 1.34231757e-04 -5.80403562e-04 - 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 - 0 12 24 36 48 66 86 106 124 144 164 170 180 190 190 200 206 216 226 226 236 254 274 294 308 326 346 366 384 404 424 438 456 476 496 -2 -1 1 496 - 6.10668701e-01 -7.51799909e-02 6.94266500e-02 -1.13818158e-02 2.50681311e-01 2.31073552e-01 2.31073552e-01 -2.31073552e-01 -4.55715201e-02 -9.09946312e-02 -9.09946312e-02 9.09946312e-02 -7.51799909e-02 6.30743818e-01 -3.88656825e-02 8.24503254e-02 -1.29637869e-01 -1.70706534e-01 -1.70706534e-01 1.70706534e-01 4.68039666e-02 8.78615395e-02 8.78615395e-02 -8.78615395e-02 6.94266500e-02 -3.88656825e-02 9.24320123e-03 -5.59159516e-03 3.43603397e-02 3.47760262e-02 3.47760262e-02 -3.47760262e-02 -8.11017653e-03 -1.51409429e-02 -1.51409429e-02 1.51409429e-02 -1.13818158e-02 8.24503254e-02 -5.59159516e-03 1.01087384e-02 -1.90677593e-02 -2.20810865e-02 -2.20810865e-02 2.20810865e-02 5.48328334e-03 1.08124682e-02 1.08124682e-02 -1.08124682e-02 6.62931071e-01 9.95491140e-02 9.95491140e-02 -9.36131516e-03 -2.53788780e-03 -2.53788780e-03 -1.84743808e-04 -1.19719253e-02 -1.19719253e-02 -1.34997473e-02 -6.86525306e-04 6.86525306e-04 -6.96842667e-03 7.88241731e-03 7.88241731e-03 -6.96401205e-03 -6.65332653e-03 6.65332653e-03 9.95491140e-02 5.15990200e-01 -9.95491140e-02 -2.53788780e-03 -1.46311251e-02 2.53788780e-03 6.78853114e-03 -4.68430612e-03 -3.65770659e-03 -9.88504715e-03 1.34997473e-02 -2.30263163e-02 1.14201355e-02 -1.00868915e-02 9.66260440e-03 -4.47145138e-03 2.15728427e-03 6.96401205e-03 -1.69134466e-02 -9.29544937e-03 9.95491140e-02 -9.95491140e-02 5.15990200e-01 -2.53788780e-03 2.53788780e-03 -1.46311251e-02 6.78853114e-03 -3.65770659e-03 -4.68430612e-03 9.88504715e-03 1.34997473e-02 -1.14201355e-02 2.30263163e-02 -1.00868915e-02 -4.47145138e-03 9.66260440e-03 -2.15728427e-03 6.96401205e-03 9.29544937e-03 1.69134466e-02 -9.36131516e-03 -2.53788780e-03 -2.53788780e-03 1.79650864e-04 -7.82240681e-05 -7.82240681e-05 4.91119301e-03 3.05324736e-03 3.05324736e-03 3.98965718e-03 -3.80846317e-03 3.80846317e-03 -8.65717248e-05 -1.92416159e-04 -1.92416159e-04 -5.76134452e-04 2.19325430e-04 -2.19325430e-04 -2.53788780e-03 -1.46311251e-02 2.53788780e-03 -7.82240681e-05 1.41854973e-04 7.82240681e-05 -4.88057902e-03 -3.08556574e-03 -2.92421677e-03 8.16061087e-05 -3.98965718e-03 3.77878526e-03 -3.90840983e-03 2.91222329e-04 5.87867582e-05 1.64256895e-04 -1.78094826e-05 5.76134452e-04 -1.07142033e-04 2.41137503e-04 -2.53788780e-03 2.53788780e-03 -1.46311251e-02 -7.82240681e-05 7.82240681e-05 1.41854973e-04 -4.88057902e-03 -2.92421677e-03 -3.08556574e-03 -8.16061087e-05 -3.98965718e-03 3.90840983e-03 -3.77878526e-03 2.91222329e-04 1.64256895e-04 5.87867582e-05 1.78094826e-05 5.76134452e-04 -2.41137503e-04 1.07142033e-04 2.50681311e-01 -1.29637869e-01 3.43603397e-02 -1.90677593e-02 -2.55642069e-01 5.76016724e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 -8.69671403e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 -8.69671403e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 -2.31073552e-01 1.70706534e-01 -3.47760262e-02 2.20810865e-02 -8.69671403e-02 -8.69671403e-02 -3.35169819e-01 3.81033730e-02 3.81033730e-02 5.56692551e-02 -4.55715201e-02 4.68039666e-02 -8.11017653e-03 5.48328334e-03 5.76016724e-02 -1.36360519e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 1.70016634e-02 1.70016634e-02 -1.70016634e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 1.70016634e-02 1.70016634e-02 -1.70016634e-02 9.09946312e-02 -8.78615395e-02 1.51409429e-02 -1.08124682e-02 3.81033730e-02 3.81033730e-02 5.56692551e-02 -1.70016634e-02 -1.70016634e-02 -3.82879364e-03 -1.84743808e-04 6.78853114e-03 6.78853114e-03 4.91119301e-03 -4.88057902e-03 -4.88057902e-03 2.33254718e-01 1.42959316e-01 1.42959316e-01 1.89783463e-01 -1.84466621e-01 1.84466621e-01 -1.05482763e-02 -6.47988162e-03 -6.47988162e-03 -2.78703402e-02 8.34518149e-03 -8.34518149e-03 -1.19719253e-02 -4.68430612e-03 -3.65770659e-03 3.05324736e-03 -3.08556574e-03 -2.92421677e-03 1.42959316e-01 8.74838123e-02 8.75173384e-02 -1.05433222e-04 1.16218161e-01 -1.13139159e-01 1.12926204e-01 -6.29096583e-03 -3.92045739e-03 -4.07789392e-03 2.30094432e-05 -1.70670281e-02 4.94560355e-03 -5.25183836e-03 -1.19719253e-02 -3.65770659e-03 -4.68430612e-03 3.05324736e-03 -2.92421677e-03 -3.08556574e-03 1.42959316e-01 8.75173384e-02 8.74838123e-02 1.05433222e-04 1.16218161e-01 -1.12926204e-01 1.13139159e-01 -6.29096583e-03 -4.07789392e-03 -3.92045739e-03 -2.30094432e-05 -1.70670281e-02 5.25183836e-03 -4.94560355e-03 -9.88504715e-03 9.88504715e-03 8.16061087e-05 -8.16061087e-05 -1.05433222e-04 1.05433222e-04 1.78440391e-04 -9.58226514e-06 -9.58226514e-06 -1.23324095e-04 1.23324095e-04 -3.89423179e-05 1.91006991e-04 1.91006991e-04 -1.34997473e-02 1.34997473e-02 1.34997473e-02 3.98965718e-03 -3.98965718e-03 -3.98965718e-03 1.89783463e-01 1.16218161e-01 1.16218161e-01 3.67563826e-01 -1.50037001e-01 1.50037001e-01 -8.58346559e-03 -5.25627773e-03 -5.25627773e-03 -3.91967293e-02 6.78582537e-03 -6.78582537e-03 -6.86525306e-04 -2.30263163e-02 -1.14201355e-02 -3.80846317e-03 3.77878526e-03 3.90840983e-03 -1.84466621e-01 -1.13139159e-01 -1.12926204e-01 -9.58226514e-06 -1.50037001e-01 1.45685791e-01 -1.45949895e-01 8.49151503e-03 5.03807181e-03 5.01287669e-03 2.09120600e-06 2.20334385e-02 -6.62775483e-03 6.50712338e-03 6.86525306e-04 1.14201355e-02 2.30263163e-02 3.80846317e-03 -3.90840983e-03 -3.77878526e-03 1.84466621e-01 1.12926204e-01 1.13139159e-01 -9.58226514e-06 1.50037001e-01 -1.45949895e-01 1.45685791e-01 -8.49151503e-03 -5.01287669e-03 -5.03807181e-03 2.09120600e-06 -2.20334385e-02 6.50712338e-03 -6.62775483e-03 -6.96842667e-03 -1.00868915e-02 -1.00868915e-02 -8.65717248e-05 2.91222329e-04 2.91222329e-04 -1.05482763e-02 -6.29096583e-03 -6.29096583e-03 -8.58346559e-03 8.49151503e-03 -8.49151503e-03 7.69472345e-04 1.37774951e-04 1.37774951e-04 1.21596738e-03 -2.58595459e-04 2.58595459e-04 7.88241731e-03 9.66260440e-03 -4.47145138e-03 -1.92416159e-04 5.87867582e-05 1.64256895e-04 -6.47988162e-03 -3.92045739e-03 -4.07789392e-03 -1.23324095e-04 -5.25627773e-03 5.03807181e-03 -5.01287669e-03 1.37774951e-04 3.28830564e-04 1.58824815e-04 2.69138959e-05 7.44624905e-04 -4.09415493e-04 1.50120025e-04 7.88241731e-03 -4.47145138e-03 9.66260440e-03 -1.92416159e-04 1.64256895e-04 5.87867582e-05 -6.47988162e-03 -4.07789392e-03 -3.92045739e-03 1.23324095e-04 -5.25627773e-03 5.01287669e-03 -5.03807181e-03 1.37774951e-04 1.58824815e-04 3.28830564e-04 -2.69138959e-05 7.44624905e-04 -1.50120025e-04 4.09415493e-04 2.15728427e-03 -2.15728427e-03 -1.78094826e-05 1.78094826e-05 2.30094432e-05 -2.30094432e-05 -3.89423179e-05 2.09120600e-06 2.09120600e-06 2.69138959e-05 -2.69138959e-05 8.49865950e-06 -4.16848167e-05 -4.16848167e-05 -6.96401205e-03 6.96401205e-03 6.96401205e-03 -5.76134452e-04 5.76134452e-04 5.76134452e-04 -2.78703402e-02 -1.70670281e-02 -1.70670281e-02 -3.91967293e-02 2.20334385e-02 -2.20334385e-02 1.21596738e-03 7.44624905e-04 7.44624905e-04 4.88351268e-03 -9.61306618e-04 9.61306618e-04 -6.65332653e-03 -1.69134466e-02 9.29544937e-03 2.19325430e-04 -1.07142033e-04 -2.41137503e-04 8.34518149e-03 4.94560355e-03 5.25183836e-03 1.91006991e-04 6.78582537e-03 -6.62775483e-03 6.50712338e-03 -2.58595459e-04 -4.09415493e-04 -1.50120025e-04 -4.16848167e-05 -9.61306618e-04 5.05894315e-04 -1.34231757e-04 6.65332653e-03 -9.29544937e-03 1.69134466e-02 -2.19325430e-04 2.41137503e-04 1.07142033e-04 -8.34518149e-03 -5.25183836e-03 -4.94560355e-03 1.91006991e-04 -6.78582537e-03 6.50712338e-03 -6.62775483e-03 2.58595459e-04 1.50120025e-04 4.09415493e-04 -4.16848167e-05 9.61306618e-04 -1.34231757e-04 5.05894315e-04 - 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 - 0 12 24 36 48 66 86 106 124 144 164 170 180 190 190 200 206 216 226 226 236 254 274 294 308 326 346 366 384 404 424 438 456 476 496 -2 0 -2 496 - 1.46471486e+00 2.54883877e-01 1.24590418e-01 -9.35884290e-03 -2.50681311e-01 2.31073552e-01 2.31073552e-01 -2.31073552e-01 4.55715201e-02 -9.09946312e-02 -9.09946312e-02 9.09946312e-02 2.54883877e-01 1.70428957e+00 -9.34218553e-02 1.65342489e-01 1.29637869e-01 -1.70706534e-01 -1.70706534e-01 1.70706534e-01 -4.68039666e-02 8.78615395e-02 8.78615395e-02 -8.78615395e-02 1.24590418e-01 -9.34218553e-02 1.88920782e-02 -1.20468125e-02 -3.43603397e-02 3.47760262e-02 3.47760262e-02 -3.47760262e-02 8.11017653e-03 -1.51409429e-02 -1.51409429e-02 1.51409429e-02 -9.35884290e-03 1.65342489e-01 -1.20468125e-02 1.72406024e-02 1.90677593e-02 -2.20810865e-02 -2.20810865e-02 2.20810865e-02 -5.48328334e-03 1.08124682e-02 1.08124682e-02 -1.08124682e-02 1.89517553e+00 9.95491140e-02 9.95491140e-02 -9.15785008e-03 -2.53788780e-03 -2.53788780e-03 -2.12388496e-02 -1.19719253e-02 -1.19719253e-02 -1.34997473e-02 -6.86525306e-04 6.86525306e-04 -2.22701900e-02 7.88241731e-03 7.88241731e-03 -6.96401205e-03 -6.65332653e-03 6.65332653e-03 9.95491140e-02 2.04211641e+00 -9.95491140e-02 -2.53788780e-03 -3.88804018e-03 2.53788780e-03 6.78853114e-03 1.78035242e-02 -3.65770659e-03 -9.88504715e-03 1.34997473e-02 6.08947863e-03 1.14201355e-02 -1.00868915e-02 8.24231853e-03 -4.47145138e-03 2.15728427e-03 6.96401205e-03 -6.20170953e-03 -9.29544937e-03 9.95491140e-02 -9.95491140e-02 2.04211641e+00 -2.53788780e-03 2.53788780e-03 -3.88804018e-03 6.78853114e-03 -3.65770659e-03 1.78035242e-02 9.88504715e-03 1.34997473e-02 -1.14201355e-02 -6.08947863e-03 -1.00868915e-02 -4.47145138e-03 8.24231853e-03 -2.15728427e-03 6.96401205e-03 9.29544937e-03 6.20170953e-03 -9.15785008e-03 -2.53788780e-03 -2.53788780e-03 1.79684460e-04 -7.82240681e-05 -7.82240681e-05 4.90771661e-03 3.05324736e-03 3.05324736e-03 3.98965718e-03 -3.80846317e-03 3.80846317e-03 -8.90983131e-05 -1.92416159e-04 -1.92416159e-04 -5.76134452e-04 2.19325430e-04 -2.19325430e-04 -2.53788780e-03 -3.88804018e-03 2.53788780e-03 -7.82240681e-05 2.17480352e-04 7.82240681e-05 -4.88057902e-03 -2.92726385e-03 -2.92421677e-03 8.16061087e-05 -3.98965718e-03 3.98374436e-03 -3.90840983e-03 2.91222329e-04 4.87887308e-05 1.64256895e-04 -1.78094826e-05 5.76134452e-04 -3.17373257e-05 2.41137503e-04 -2.53788780e-03 2.53788780e-03 -3.88804018e-03 -7.82240681e-05 7.82240681e-05 2.17480352e-04 -4.88057902e-03 -2.92421677e-03 -2.92726385e-03 -8.16061087e-05 -3.98965718e-03 3.90840983e-03 -3.98374436e-03 2.91222329e-04 1.64256895e-04 4.87887308e-05 1.78094826e-05 5.76134452e-04 -2.41137503e-04 3.17373257e-05 -2.50681311e-01 1.29637869e-01 -3.43603397e-02 1.90677593e-02 2.55642069e-01 -5.76016724e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 -8.69671403e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 -8.69671403e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 -2.31073552e-01 1.70706534e-01 -3.47760262e-02 2.20810865e-02 -8.69671403e-02 -8.69671403e-02 5.09104100e-01 3.81033730e-02 3.81033730e-02 -1.31876001e-01 4.55715201e-02 -4.68039666e-02 8.11017653e-03 -5.48328334e-03 -5.76016724e-02 1.36360519e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 1.70016634e-02 1.70016634e-02 -1.70016634e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 1.70016634e-02 1.70016634e-02 -1.70016634e-02 9.09946312e-02 -8.78615395e-02 1.51409429e-02 -1.08124682e-02 3.81033730e-02 3.81033730e-02 -1.31876001e-01 -1.70016634e-02 -1.70016634e-02 3.78321204e-02 -2.12388496e-02 6.78853114e-03 6.78853114e-03 4.90771661e-03 -4.88057902e-03 -4.88057902e-03 2.33614448e-01 1.42959316e-01 1.42959316e-01 1.89783463e-01 -1.84466621e-01 1.84466621e-01 -1.02868307e-02 -6.47988162e-03 -6.47988162e-03 -2.78703402e-02 8.34518149e-03 -8.34518149e-03 -1.19719253e-02 1.78035242e-02 -3.65770659e-03 3.05324736e-03 -2.92726385e-03 -2.92421677e-03 1.42959316e-01 8.78151758e-02 8.75173384e-02 -1.05433222e-04 1.16218161e-01 -1.12710131e-01 1.12926204e-01 -6.29096583e-03 -3.94138564e-03 -4.07789392e-03 2.30094432e-05 -1.70670281e-02 5.10344353e-03 -5.25183836e-03 -1.19719253e-02 -3.65770659e-03 1.78035242e-02 3.05324736e-03 -2.92421677e-03 -2.92726385e-03 1.42959316e-01 8.75173384e-02 8.78151758e-02 1.05433222e-04 1.16218161e-01 -1.12926204e-01 1.12710131e-01 -6.29096583e-03 -4.07789392e-03 -3.94138564e-03 -2.30094432e-05 -1.70670281e-02 5.25183836e-03 -5.10344353e-03 -9.88504715e-03 9.88504715e-03 8.16061087e-05 -8.16061087e-05 -1.05433222e-04 1.05433222e-04 1.78440391e-04 -9.58226514e-06 -9.58226514e-06 -1.23324095e-04 1.23324095e-04 -3.89423179e-05 1.91006991e-04 1.91006991e-04 -1.34997473e-02 1.34997473e-02 1.34997473e-02 3.98965718e-03 -3.98965718e-03 -3.98965718e-03 1.89783463e-01 1.16218161e-01 1.16218161e-01 3.67563826e-01 -1.50037001e-01 1.50037001e-01 -8.58346559e-03 -5.25627773e-03 -5.25627773e-03 -3.91967293e-02 6.78582537e-03 -6.78582537e-03 -6.86525306e-04 6.08947863e-03 -1.14201355e-02 -3.80846317e-03 3.98374436e-03 3.90840983e-03 -1.84466621e-01 -1.12710131e-01 -1.12926204e-01 -9.58226514e-06 -1.50037001e-01 1.46241269e-01 -1.45949895e-01 8.49151503e-03 5.01097526e-03 5.01287669e-03 2.09120600e-06 2.20334385e-02 -6.42339379e-03 6.50712338e-03 6.86525306e-04 1.14201355e-02 -6.08947863e-03 3.80846317e-03 -3.90840983e-03 -3.98374436e-03 1.84466621e-01 1.12926204e-01 1.12710131e-01 -9.58226514e-06 1.50037001e-01 -1.45949895e-01 1.46241269e-01 -8.49151503e-03 -5.01287669e-03 -5.01097526e-03 2.09120600e-06 -2.20334385e-02 6.50712338e-03 -6.42339379e-03 -2.22701900e-02 -1.00868915e-02 -1.00868915e-02 -8.90983131e-05 2.91222329e-04 2.91222329e-04 -1.02868307e-02 -6.29096583e-03 -6.29096583e-03 -8.58346559e-03 8.49151503e-03 -8.49151503e-03 9.59486559e-04 1.37774951e-04 1.37774951e-04 1.21596738e-03 -2.58595459e-04 2.58595459e-04 7.88241731e-03 8.24231853e-03 -4.47145138e-03 -1.92416159e-04 4.87887308e-05 1.64256895e-04 -6.47988162e-03 -3.94138564e-03 -4.07789392e-03 -1.23324095e-04 -5.25627773e-03 5.01097526e-03 -5.01287669e-03 1.37774951e-04 3.30152350e-04 1.58824815e-04 2.69138959e-05 7.44624905e-04 -4.19384346e-04 1.50120025e-04 7.88241731e-03 -4.47145138e-03 8.24231853e-03 -1.92416159e-04 1.64256895e-04 4.87887308e-05 -6.47988162e-03 -4.07789392e-03 -3.94138564e-03 1.23324095e-04 -5.25627773e-03 5.01287669e-03 -5.01097526e-03 1.37774951e-04 1.58824815e-04 3.30152350e-04 -2.69138959e-05 7.44624905e-04 -1.50120025e-04 4.19384346e-04 2.15728427e-03 -2.15728427e-03 -1.78094826e-05 1.78094826e-05 2.30094432e-05 -2.30094432e-05 -3.89423179e-05 2.09120600e-06 2.09120600e-06 2.69138959e-05 -2.69138959e-05 8.49865950e-06 -4.16848167e-05 -4.16848167e-05 -6.96401205e-03 6.96401205e-03 6.96401205e-03 -5.76134452e-04 5.76134452e-04 5.76134452e-04 -2.78703402e-02 -1.70670281e-02 -1.70670281e-02 -3.91967293e-02 2.20334385e-02 -2.20334385e-02 1.21596738e-03 7.44624905e-04 7.44624905e-04 4.88351268e-03 -9.61306618e-04 9.61306618e-04 -6.65332653e-03 -6.20170953e-03 9.29544937e-03 2.19325430e-04 -3.17373257e-05 -2.41137503e-04 8.34518149e-03 5.10344353e-03 5.25183836e-03 1.91006991e-04 6.78582537e-03 -6.42339379e-03 6.50712338e-03 -2.58595459e-04 -4.19384346e-04 -1.50120025e-04 -4.16848167e-05 -9.61306618e-04 5.81078995e-04 -1.34231757e-04 6.65332653e-03 -9.29544937e-03 6.20170953e-03 -2.19325430e-04 2.41137503e-04 3.17373257e-05 -8.34518149e-03 -5.25183836e-03 -5.10344353e-03 1.91006991e-04 -6.78582537e-03 6.50712338e-03 -6.42339379e-03 2.58595459e-04 1.50120025e-04 4.19384346e-04 -4.16848167e-05 9.61306618e-04 -1.34231757e-04 5.81078995e-04 - 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 - 0 12 24 36 48 66 86 106 124 144 164 170 180 190 190 200 206 216 226 226 236 254 274 294 308 326 346 366 384 404 424 438 456 476 496 -2 0 -1 496 - -4.46730500e-01 2.90265885e-01 -6.65919095e-02 3.20736205e-02 -2.50681311e-01 -2.31073552e-01 -2.31073552e-01 2.31073552e-01 4.55715201e-02 9.09946312e-02 9.09946312e-02 -9.09946312e-02 2.90265885e-01 -7.77208948e-02 3.49623849e-02 -1.81562170e-02 1.29637869e-01 1.70706534e-01 1.70706534e-01 -1.70706534e-01 -4.68039666e-02 -8.78615395e-02 -8.78615395e-02 8.78615395e-02 -6.65919095e-02 3.49623849e-02 -8.97965282e-03 4.90391018e-03 -3.43603397e-02 -3.47760262e-02 -3.47760262e-02 3.47760262e-02 8.11017653e-03 1.51409429e-02 1.51409429e-02 -1.51409429e-02 3.20736205e-02 -1.81562170e-02 4.90391018e-03 -2.40214415e-03 1.90677593e-02 2.20810865e-02 2.20810865e-02 -2.20810865e-02 -5.48328334e-03 -1.08124682e-02 -1.08124682e-02 1.08124682e-02 -9.61307016e-02 -9.95491140e-02 -9.95491140e-02 3.84928096e-03 2.53788780e-03 2.53788780e-03 4.96626145e-03 1.19719253e-02 1.19719253e-02 1.34997473e-02 6.86525306e-04 -6.86525306e-04 7.75107441e-03 -7.88241731e-03 -7.88241731e-03 6.96401205e-03 6.65332653e-03 -6.65332653e-03 -9.95491140e-02 5.08101702e-02 9.95491140e-02 2.53788780e-03 9.11909087e-03 -2.53788780e-03 -6.78853114e-03 1.75623651e-03 3.65770659e-03 9.88504715e-03 -1.34997473e-02 2.68064379e-02 -1.14201355e-02 1.00868915e-02 -1.01418763e-02 4.47145138e-03 -2.15728427e-03 -6.96401205e-03 1.75321839e-02 9.29544937e-03 -9.95491140e-02 9.95491140e-02 5.08101702e-02 2.53788780e-03 -2.53788780e-03 9.11909087e-03 -6.78853114e-03 3.65770659e-03 1.75623651e-03 -9.88504715e-03 -1.34997473e-02 1.14201355e-02 -2.68064379e-02 1.00868915e-02 4.47145138e-03 -1.01418763e-02 2.15728427e-03 -6.96401205e-03 -9.29544937e-03 -1.75321839e-02 3.84928096e-03 2.53788780e-03 2.53788780e-03 -1.26047298e-04 7.82240681e-05 7.82240681e-05 -4.95769243e-03 -3.05324736e-03 -3.05324736e-03 -3.98965718e-03 3.80846317e-03 -3.80846317e-03 7.89606128e-05 1.92416159e-04 1.92416159e-04 5.76134452e-04 -2.19325430e-04 2.19325430e-04 2.53788780e-03 9.11909087e-03 -2.53788780e-03 7.82240681e-05 -8.82514067e-05 -7.82240681e-05 4.88057902e-03 3.11404071e-03 2.92421677e-03 -8.16061087e-05 3.98965718e-03 -3.81554628e-03 3.90840983e-03 -2.91222329e-04 -5.41259230e-05 -1.64256895e-04 1.78094826e-05 -5.76134452e-04 1.01124921e-04 -2.41137503e-04 2.53788780e-03 -2.53788780e-03 9.11909087e-03 7.82240681e-05 -7.82240681e-05 -8.82514067e-05 4.88057902e-03 2.92421677e-03 3.11404071e-03 8.16061087e-05 3.98965718e-03 -3.90840983e-03 3.81554628e-03 -2.91222329e-04 -1.64256895e-04 -5.41259230e-05 -1.78094826e-05 -5.76134452e-04 2.41137503e-04 -1.01124921e-04 -2.50681311e-01 1.29637869e-01 -3.43603397e-02 1.90677593e-02 2.55642069e-01 -5.76016724e-02 -2.31073552e-01 1.70706534e-01 -3.47760262e-02 2.20810865e-02 -8.69671403e-02 -8.69671403e-02 8.69671403e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 -2.31073552e-01 1.70706534e-01 -3.47760262e-02 2.20810865e-02 -8.69671403e-02 -8.69671403e-02 8.69671403e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 3.35169819e-01 -3.81033730e-02 -3.81033730e-02 -5.56692551e-02 4.55715201e-02 -4.68039666e-02 8.11017653e-03 -5.48328334e-03 -5.76016724e-02 1.36360519e-02 9.09946312e-02 -8.78615395e-02 1.51409429e-02 -1.08124682e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 -1.70016634e-02 -1.70016634e-02 1.70016634e-02 9.09946312e-02 -8.78615395e-02 1.51409429e-02 -1.08124682e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 -1.70016634e-02 -1.70016634e-02 1.70016634e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 -5.56692551e-02 1.70016634e-02 1.70016634e-02 3.82879364e-03 4.96626145e-03 -6.78853114e-03 -6.78853114e-03 -4.95769243e-03 4.88057902e-03 4.88057902e-03 -2.33214382e-01 -1.42959316e-01 -1.42959316e-01 -1.89783463e-01 1.84466621e-01 -1.84466621e-01 1.05548787e-02 6.47988162e-03 6.47988162e-03 2.78703402e-02 -8.34518149e-03 8.34518149e-03 1.19719253e-02 1.75623651e-03 3.65770659e-03 -3.05324736e-03 3.11404071e-03 2.92421677e-03 -1.42959316e-01 -8.74686860e-02 -8.75173384e-02 1.05433222e-04 -1.16218161e-01 1.13119631e-01 -1.12926204e-01 6.29096583e-03 3.92293329e-03 4.07789392e-03 -2.30094432e-05 1.70670281e-02 -4.94879992e-03 5.25183836e-03 1.19719253e-02 3.65770659e-03 1.75623651e-03 -3.05324736e-03 2.92421677e-03 3.11404071e-03 -1.42959316e-01 -8.75173384e-02 -8.74686860e-02 -1.05433222e-04 -1.16218161e-01 1.12926204e-01 -1.13119631e-01 6.29096583e-03 4.07789392e-03 3.92293329e-03 2.30094432e-05 1.70670281e-02 -5.25183836e-03 4.94879992e-03 9.88504715e-03 -9.88504715e-03 -8.16061087e-05 8.16061087e-05 1.05433222e-04 -1.05433222e-04 -1.78440391e-04 9.58226514e-06 9.58226514e-06 1.23324095e-04 -1.23324095e-04 3.89423179e-05 -1.91006991e-04 -1.91006991e-04 1.34997473e-02 -1.34997473e-02 -1.34997473e-02 -3.98965718e-03 3.98965718e-03 3.98965718e-03 -1.89783463e-01 -1.16218161e-01 -1.16218161e-01 5.86189719e-02 1.50037001e-01 -1.50037001e-01 8.58346559e-03 5.25627773e-03 5.25627773e-03 5.74991859e-03 -6.78582537e-03 6.78582537e-03 6.86525306e-04 2.68064379e-02 1.14201355e-02 3.80846317e-03 -3.81554628e-03 -3.90840983e-03 1.84466621e-01 1.13119631e-01 1.12926204e-01 9.58226514e-06 1.50037001e-01 -1.45660580e-01 1.45949895e-01 -8.49151503e-03 -5.04126819e-03 -5.01287669e-03 -2.09120600e-06 -2.20334385e-02 6.63188133e-03 -6.50712338e-03 -6.86525306e-04 -1.14201355e-02 -2.68064379e-02 -3.80846317e-03 3.90840983e-03 3.81554628e-03 -1.84466621e-01 -1.12926204e-01 -1.13119631e-01 9.58226514e-06 -1.50037001e-01 1.45949895e-01 -1.45660580e-01 8.49151503e-03 5.01287669e-03 5.04126819e-03 -2.09120600e-06 2.20334385e-02 -6.50712338e-03 6.63188133e-03 7.75107441e-03 1.00868915e-02 1.00868915e-02 7.89606128e-05 -2.91222329e-04 -2.91222329e-04 1.05548787e-02 6.29096583e-03 6.29096583e-03 8.58346559e-03 -8.49151503e-03 8.49151503e-03 -7.68391652e-04 -1.37774951e-04 -1.37774951e-04 -1.21596738e-03 2.58595459e-04 -2.58595459e-04 -7.88241731e-03 -1.01418763e-02 4.47145138e-03 1.92416159e-04 -5.41259230e-05 -1.64256895e-04 6.47988162e-03 3.92293329e-03 4.07789392e-03 1.23324095e-04 5.25627773e-03 -5.04126819e-03 5.01287669e-03 -1.37774951e-04 -3.28425304e-04 -1.58824815e-04 -2.69138959e-05 -7.44624905e-04 4.08892304e-04 -1.50120025e-04 -7.88241731e-03 4.47145138e-03 -1.01418763e-02 1.92416159e-04 -1.64256895e-04 -5.41259230e-05 6.47988162e-03 4.07789392e-03 3.92293329e-03 -1.23324095e-04 5.25627773e-03 -5.01287669e-03 5.04126819e-03 -1.37774951e-04 -1.58824815e-04 -3.28425304e-04 2.69138959e-05 -7.44624905e-04 1.50120025e-04 -4.08892304e-04 -2.15728427e-03 2.15728427e-03 1.78094826e-05 -1.78094826e-05 -2.30094432e-05 2.30094432e-05 3.89423179e-05 -2.09120600e-06 -2.09120600e-06 -2.69138959e-05 2.69138959e-05 -8.49865950e-06 4.16848167e-05 4.16848167e-05 6.96401205e-03 -6.96401205e-03 -6.96401205e-03 5.76134452e-04 -5.76134452e-04 -5.76134452e-04 2.78703402e-02 1.70670281e-02 1.70670281e-02 5.74991859e-03 -2.20334385e-02 2.20334385e-02 -1.21596738e-03 -7.44624905e-04 -7.44624905e-04 -2.25860819e-03 9.61306618e-04 -9.61306618e-04 6.65332653e-03 1.75321839e-02 -9.29544937e-03 -2.19325430e-04 1.01124921e-04 2.41137503e-04 -8.34518149e-03 -4.94879992e-03 -5.25183836e-03 -1.91006991e-04 -6.78582537e-03 6.63188133e-03 -6.50712338e-03 2.58595459e-04 4.08892304e-04 1.50120025e-04 4.16848167e-05 9.61306618e-04 -5.05218881e-04 1.34231757e-04 -6.65332653e-03 9.29544937e-03 -1.75321839e-02 2.19325430e-04 -2.41137503e-04 -1.01124921e-04 8.34518149e-03 5.25183836e-03 4.94879992e-03 -1.91006991e-04 6.78582537e-03 -6.50712338e-03 6.63188133e-03 -2.58595459e-04 -1.50120025e-04 -4.08892304e-04 4.16848167e-05 -9.61306618e-04 1.34231757e-04 -5.05218881e-04 - 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 - 0 12 24 36 48 66 86 106 124 144 164 170 180 190 190 200 206 216 226 226 236 254 274 294 308 326 346 366 384 404 424 438 456 476 496 -2 0 0 496 - 1.46471486e+00 2.54883877e-01 1.24590418e-01 -9.35884290e-03 -2.50681311e-01 2.31073552e-01 2.31073552e-01 -2.31073552e-01 4.55715201e-02 -9.09946312e-02 -9.09946312e-02 9.09946312e-02 2.54883877e-01 1.70428957e+00 -9.34218553e-02 1.65342489e-01 1.29637869e-01 -1.70706534e-01 -1.70706534e-01 1.70706534e-01 -4.68039666e-02 8.78615395e-02 8.78615395e-02 -8.78615395e-02 1.24590418e-01 -9.34218553e-02 1.88920782e-02 -1.20468125e-02 -3.43603397e-02 3.47760262e-02 3.47760262e-02 -3.47760262e-02 8.11017653e-03 -1.51409429e-02 -1.51409429e-02 1.51409429e-02 -9.35884290e-03 1.65342489e-01 -1.20468125e-02 1.72406024e-02 1.90677593e-02 -2.20810865e-02 -2.20810865e-02 2.20810865e-02 -5.48328334e-03 1.08124682e-02 1.08124682e-02 -1.08124682e-02 1.89517553e+00 9.95491140e-02 9.95491140e-02 -9.15785008e-03 -2.53788780e-03 -2.53788780e-03 -2.12388496e-02 -1.19719253e-02 -1.19719253e-02 -1.34997473e-02 -6.86525306e-04 6.86525306e-04 -2.22701900e-02 7.88241731e-03 7.88241731e-03 -6.96401205e-03 -6.65332653e-03 6.65332653e-03 9.95491140e-02 2.04211641e+00 -9.95491140e-02 -2.53788780e-03 -3.88804018e-03 2.53788780e-03 6.78853114e-03 1.78035242e-02 -3.65770659e-03 -9.88504715e-03 1.34997473e-02 6.08947863e-03 1.14201355e-02 -1.00868915e-02 8.24231853e-03 -4.47145138e-03 2.15728427e-03 6.96401205e-03 -6.20170953e-03 -9.29544937e-03 9.95491140e-02 -9.95491140e-02 2.04211641e+00 -2.53788780e-03 2.53788780e-03 -3.88804018e-03 6.78853114e-03 -3.65770659e-03 1.78035242e-02 9.88504715e-03 1.34997473e-02 -1.14201355e-02 -6.08947863e-03 -1.00868915e-02 -4.47145138e-03 8.24231853e-03 -2.15728427e-03 6.96401205e-03 9.29544937e-03 6.20170953e-03 -9.15785008e-03 -2.53788780e-03 -2.53788780e-03 1.79684460e-04 -7.82240681e-05 -7.82240681e-05 4.90771661e-03 3.05324736e-03 3.05324736e-03 3.98965718e-03 -3.80846317e-03 3.80846317e-03 -8.90983131e-05 -1.92416159e-04 -1.92416159e-04 -5.76134452e-04 2.19325430e-04 -2.19325430e-04 -2.53788780e-03 -3.88804018e-03 2.53788780e-03 -7.82240681e-05 2.17480352e-04 7.82240681e-05 -4.88057902e-03 -2.92726385e-03 -2.92421677e-03 8.16061087e-05 -3.98965718e-03 3.98374436e-03 -3.90840983e-03 2.91222329e-04 4.87887308e-05 1.64256895e-04 -1.78094826e-05 5.76134452e-04 -3.17373257e-05 2.41137503e-04 -2.53788780e-03 2.53788780e-03 -3.88804018e-03 -7.82240681e-05 7.82240681e-05 2.17480352e-04 -4.88057902e-03 -2.92421677e-03 -2.92726385e-03 -8.16061087e-05 -3.98965718e-03 3.90840983e-03 -3.98374436e-03 2.91222329e-04 1.64256895e-04 4.87887308e-05 1.78094826e-05 5.76134452e-04 -2.41137503e-04 3.17373257e-05 -2.50681311e-01 1.29637869e-01 -3.43603397e-02 1.90677593e-02 2.55642069e-01 -5.76016724e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 -8.69671403e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 -8.69671403e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 -2.31073552e-01 1.70706534e-01 -3.47760262e-02 2.20810865e-02 -8.69671403e-02 -8.69671403e-02 5.09104100e-01 3.81033730e-02 3.81033730e-02 -1.31876001e-01 4.55715201e-02 -4.68039666e-02 8.11017653e-03 -5.48328334e-03 -5.76016724e-02 1.36360519e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 1.70016634e-02 1.70016634e-02 -1.70016634e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 1.70016634e-02 1.70016634e-02 -1.70016634e-02 9.09946312e-02 -8.78615395e-02 1.51409429e-02 -1.08124682e-02 3.81033730e-02 3.81033730e-02 -1.31876001e-01 -1.70016634e-02 -1.70016634e-02 3.78321204e-02 -2.12388496e-02 6.78853114e-03 6.78853114e-03 4.90771661e-03 -4.88057902e-03 -4.88057902e-03 2.33614448e-01 1.42959316e-01 1.42959316e-01 1.89783463e-01 -1.84466621e-01 1.84466621e-01 -1.02868307e-02 -6.47988162e-03 -6.47988162e-03 -2.78703402e-02 8.34518149e-03 -8.34518149e-03 -1.19719253e-02 1.78035242e-02 -3.65770659e-03 3.05324736e-03 -2.92726385e-03 -2.92421677e-03 1.42959316e-01 8.78151758e-02 8.75173384e-02 -1.05433222e-04 1.16218161e-01 -1.12710131e-01 1.12926204e-01 -6.29096583e-03 -3.94138564e-03 -4.07789392e-03 2.30094432e-05 -1.70670281e-02 5.10344353e-03 -5.25183836e-03 -1.19719253e-02 -3.65770659e-03 1.78035242e-02 3.05324736e-03 -2.92421677e-03 -2.92726385e-03 1.42959316e-01 8.75173384e-02 8.78151758e-02 1.05433222e-04 1.16218161e-01 -1.12926204e-01 1.12710131e-01 -6.29096583e-03 -4.07789392e-03 -3.94138564e-03 -2.30094432e-05 -1.70670281e-02 5.25183836e-03 -5.10344353e-03 -9.88504715e-03 9.88504715e-03 8.16061087e-05 -8.16061087e-05 -1.05433222e-04 1.05433222e-04 1.78440391e-04 -9.58226514e-06 -9.58226514e-06 -1.23324095e-04 1.23324095e-04 -3.89423179e-05 1.91006991e-04 1.91006991e-04 -1.34997473e-02 1.34997473e-02 1.34997473e-02 3.98965718e-03 -3.98965718e-03 -3.98965718e-03 1.89783463e-01 1.16218161e-01 1.16218161e-01 3.67563826e-01 -1.50037001e-01 1.50037001e-01 -8.58346559e-03 -5.25627773e-03 -5.25627773e-03 -3.91967293e-02 6.78582537e-03 -6.78582537e-03 -6.86525306e-04 6.08947863e-03 -1.14201355e-02 -3.80846317e-03 3.98374436e-03 3.90840983e-03 -1.84466621e-01 -1.12710131e-01 -1.12926204e-01 -9.58226514e-06 -1.50037001e-01 1.46241269e-01 -1.45949895e-01 8.49151503e-03 5.01097526e-03 5.01287669e-03 2.09120600e-06 2.20334385e-02 -6.42339379e-03 6.50712338e-03 6.86525306e-04 1.14201355e-02 -6.08947863e-03 3.80846317e-03 -3.90840983e-03 -3.98374436e-03 1.84466621e-01 1.12926204e-01 1.12710131e-01 -9.58226514e-06 1.50037001e-01 -1.45949895e-01 1.46241269e-01 -8.49151503e-03 -5.01287669e-03 -5.01097526e-03 2.09120600e-06 -2.20334385e-02 6.50712338e-03 -6.42339379e-03 -2.22701900e-02 -1.00868915e-02 -1.00868915e-02 -8.90983131e-05 2.91222329e-04 2.91222329e-04 -1.02868307e-02 -6.29096583e-03 -6.29096583e-03 -8.58346559e-03 8.49151503e-03 -8.49151503e-03 9.59486559e-04 1.37774951e-04 1.37774951e-04 1.21596738e-03 -2.58595459e-04 2.58595459e-04 7.88241731e-03 8.24231853e-03 -4.47145138e-03 -1.92416159e-04 4.87887308e-05 1.64256895e-04 -6.47988162e-03 -3.94138564e-03 -4.07789392e-03 -1.23324095e-04 -5.25627773e-03 5.01097526e-03 -5.01287669e-03 1.37774951e-04 3.30152350e-04 1.58824815e-04 2.69138959e-05 7.44624905e-04 -4.19384346e-04 1.50120025e-04 7.88241731e-03 -4.47145138e-03 8.24231853e-03 -1.92416159e-04 1.64256895e-04 4.87887308e-05 -6.47988162e-03 -4.07789392e-03 -3.94138564e-03 1.23324095e-04 -5.25627773e-03 5.01287669e-03 -5.01097526e-03 1.37774951e-04 1.58824815e-04 3.30152350e-04 -2.69138959e-05 7.44624905e-04 -1.50120025e-04 4.19384346e-04 2.15728427e-03 -2.15728427e-03 -1.78094826e-05 1.78094826e-05 2.30094432e-05 -2.30094432e-05 -3.89423179e-05 2.09120600e-06 2.09120600e-06 2.69138959e-05 -2.69138959e-05 8.49865950e-06 -4.16848167e-05 -4.16848167e-05 -6.96401205e-03 6.96401205e-03 6.96401205e-03 -5.76134452e-04 5.76134452e-04 5.76134452e-04 -2.78703402e-02 -1.70670281e-02 -1.70670281e-02 -3.91967293e-02 2.20334385e-02 -2.20334385e-02 1.21596738e-03 7.44624905e-04 7.44624905e-04 4.88351268e-03 -9.61306618e-04 9.61306618e-04 -6.65332653e-03 -6.20170953e-03 9.29544937e-03 2.19325430e-04 -3.17373257e-05 -2.41137503e-04 8.34518149e-03 5.10344353e-03 5.25183836e-03 1.91006991e-04 6.78582537e-03 -6.42339379e-03 6.50712338e-03 -2.58595459e-04 -4.19384346e-04 -1.50120025e-04 -4.16848167e-05 -9.61306618e-04 5.81078995e-04 -1.34231757e-04 6.65332653e-03 -9.29544937e-03 6.20170953e-03 -2.19325430e-04 2.41137503e-04 3.17373257e-05 -8.34518149e-03 -5.25183836e-03 -5.10344353e-03 1.91006991e-04 -6.78582537e-03 6.50712338e-03 -6.42339379e-03 2.58595459e-04 1.50120025e-04 4.19384346e-04 -4.16848167e-05 9.61306618e-04 -1.34231757e-04 5.81078995e-04 - 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 - 0 12 24 36 48 66 86 106 124 144 164 170 180 190 190 200 206 216 226 226 236 254 274 294 308 326 346 366 384 404 424 438 456 476 496 -2 1 -2 496 - -1.30077665e+00 -3.97979828e-02 -1.21755678e-01 3.00506476e-02 2.50681311e-01 -2.31073552e-01 -2.31073552e-01 2.31073552e-01 -4.55715201e-02 9.09946312e-02 9.09946312e-02 -9.09946312e-02 -3.97979828e-02 -1.15126664e+00 8.95185576e-02 -1.01048380e-01 -1.29637869e-01 1.70706534e-01 1.70706534e-01 -1.70706534e-01 4.68039666e-02 -8.78615395e-02 -8.78615395e-02 8.78615395e-02 -1.21755678e-01 8.95185576e-02 -1.86285298e-02 1.13591275e-02 3.43603397e-02 -3.47760262e-02 -3.47760262e-02 3.47760262e-02 -8.11017653e-03 1.51409429e-02 1.51409429e-02 -1.51409429e-02 3.00506476e-02 -1.01048380e-01 1.13591275e-02 -9.53400814e-03 -1.90677593e-02 2.20810865e-02 2.20810865e-02 -2.20810865e-02 5.48328334e-03 -1.08124682e-02 -1.08124682e-02 1.08124682e-02 -1.32837516e+00 -9.95491140e-02 -9.95491140e-02 3.64581589e-03 2.53788780e-03 2.53788780e-03 2.60203672e-02 1.19719253e-02 1.19719253e-02 1.34997473e-02 6.86525306e-04 -6.86525306e-04 2.30528378e-02 -7.88241731e-03 -7.88241731e-03 6.96401205e-03 6.65332653e-03 -6.65332653e-03 -9.95491140e-02 -1.47531604e+00 9.95491140e-02 2.53788780e-03 -1.62399402e-03 -2.53788780e-03 -6.78853114e-03 -2.07315938e-02 3.65770659e-03 9.88504715e-03 -1.34997473e-02 -2.30935703e-03 -1.14201355e-02 1.00868915e-02 -8.72159043e-03 4.47145138e-03 -2.15728427e-03 -6.96401205e-03 6.82044689e-03 9.29544937e-03 -9.95491140e-02 9.95491140e-02 -1.47531604e+00 2.53788780e-03 -2.53788780e-03 -1.62399402e-03 -6.78853114e-03 3.65770659e-03 -2.07315938e-02 -9.88504715e-03 -1.34997473e-02 1.14201355e-02 2.30935703e-03 1.00868915e-02 4.47145138e-03 -8.72159043e-03 2.15728427e-03 -6.96401205e-03 -9.29544937e-03 -6.82044689e-03 3.64581589e-03 2.53788780e-03 2.53788780e-03 -1.26080894e-04 7.82240681e-05 7.82240681e-05 -4.95421603e-03 -3.05324736e-03 -3.05324736e-03 -3.98965718e-03 3.80846317e-03 -3.80846317e-03 8.14872011e-05 1.92416159e-04 1.92416159e-04 5.76134452e-04 -2.19325430e-04 2.19325430e-04 2.53788780e-03 -1.62399402e-03 -2.53788780e-03 7.82240681e-05 -1.63876786e-04 -7.82240681e-05 4.88057902e-03 2.95573881e-03 2.92421677e-03 -8.16061087e-05 3.98965718e-03 -4.02050538e-03 3.90840983e-03 -2.91222329e-04 -4.41278956e-05 -1.64256895e-04 1.78094826e-05 -5.76134452e-04 2.57202134e-05 -2.41137503e-04 2.53788780e-03 -2.53788780e-03 -1.62399402e-03 7.82240681e-05 -7.82240681e-05 -1.63876786e-04 4.88057902e-03 2.92421677e-03 2.95573881e-03 8.16061087e-05 3.98965718e-03 -3.90840983e-03 4.02050538e-03 -2.91222329e-04 -1.64256895e-04 -4.41278956e-05 -1.78094826e-05 -5.76134452e-04 2.41137503e-04 -2.57202134e-05 2.50681311e-01 -1.29637869e-01 3.43603397e-02 -1.90677593e-02 -2.55642069e-01 5.76016724e-02 -2.31073552e-01 1.70706534e-01 -3.47760262e-02 2.20810865e-02 -8.69671403e-02 -8.69671403e-02 8.69671403e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 -2.31073552e-01 1.70706534e-01 -3.47760262e-02 2.20810865e-02 -8.69671403e-02 -8.69671403e-02 8.69671403e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 -5.09104100e-01 -3.81033730e-02 -3.81033730e-02 1.31876001e-01 -4.55715201e-02 4.68039666e-02 -8.11017653e-03 5.48328334e-03 5.76016724e-02 -1.36360519e-02 9.09946312e-02 -8.78615395e-02 1.51409429e-02 -1.08124682e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 -1.70016634e-02 -1.70016634e-02 1.70016634e-02 9.09946312e-02 -8.78615395e-02 1.51409429e-02 -1.08124682e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 -1.70016634e-02 -1.70016634e-02 1.70016634e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 1.31876001e-01 1.70016634e-02 1.70016634e-02 -3.78321204e-02 2.60203672e-02 -6.78853114e-03 -6.78853114e-03 -4.95421603e-03 4.88057902e-03 4.88057902e-03 -2.33574112e-01 -1.42959316e-01 -1.42959316e-01 -1.89783463e-01 1.84466621e-01 -1.84466621e-01 1.02934331e-02 6.47988162e-03 6.47988162e-03 2.78703402e-02 -8.34518149e-03 8.34518149e-03 1.19719253e-02 -2.07315938e-02 3.65770659e-03 -3.05324736e-03 2.95573881e-03 2.92421677e-03 -1.42959316e-01 -8.78000495e-02 -8.75173384e-02 1.05433222e-04 -1.16218161e-01 1.12690603e-01 -1.12926204e-01 6.29096583e-03 3.94386154e-03 4.07789392e-03 -2.30094432e-05 1.70670281e-02 -5.10663990e-03 5.25183836e-03 1.19719253e-02 3.65770659e-03 -2.07315938e-02 -3.05324736e-03 2.92421677e-03 2.95573881e-03 -1.42959316e-01 -8.75173384e-02 -8.78000495e-02 -1.05433222e-04 -1.16218161e-01 1.12926204e-01 -1.12690603e-01 6.29096583e-03 4.07789392e-03 3.94386154e-03 2.30094432e-05 1.70670281e-02 -5.25183836e-03 5.10663990e-03 9.88504715e-03 -9.88504715e-03 -8.16061087e-05 8.16061087e-05 1.05433222e-04 -1.05433222e-04 -1.78440391e-04 9.58226514e-06 9.58226514e-06 1.23324095e-04 -1.23324095e-04 3.89423179e-05 -1.91006991e-04 -1.91006991e-04 1.34997473e-02 -1.34997473e-02 -1.34997473e-02 -3.98965718e-03 3.98965718e-03 3.98965718e-03 -1.89783463e-01 -1.16218161e-01 -1.16218161e-01 5.86189719e-02 1.50037001e-01 -1.50037001e-01 8.58346559e-03 5.25627773e-03 5.25627773e-03 5.74991859e-03 -6.78582537e-03 6.78582537e-03 6.86525306e-04 -2.30935703e-03 1.14201355e-02 3.80846317e-03 -4.02050538e-03 -3.90840983e-03 1.84466621e-01 1.12690603e-01 1.12926204e-01 9.58226514e-06 1.50037001e-01 -1.46216058e-01 1.45949895e-01 -8.49151503e-03 -5.01417164e-03 -5.01287669e-03 -2.09120600e-06 -2.20334385e-02 6.42752029e-03 -6.50712338e-03 -6.86525306e-04 -1.14201355e-02 2.30935703e-03 -3.80846317e-03 3.90840983e-03 4.02050538e-03 -1.84466621e-01 -1.12926204e-01 -1.12690603e-01 9.58226514e-06 -1.50037001e-01 1.45949895e-01 -1.46216058e-01 8.49151503e-03 5.01287669e-03 5.01417164e-03 -2.09120600e-06 2.20334385e-02 -6.50712338e-03 6.42752029e-03 2.30528378e-02 1.00868915e-02 1.00868915e-02 8.14872011e-05 -2.91222329e-04 -2.91222329e-04 1.02934331e-02 6.29096583e-03 6.29096583e-03 8.58346559e-03 -8.49151503e-03 8.49151503e-03 -9.58405865e-04 -1.37774951e-04 -1.37774951e-04 -1.21596738e-03 2.58595459e-04 -2.58595459e-04 -7.88241731e-03 -8.72159043e-03 4.47145138e-03 1.92416159e-04 -4.41278956e-05 -1.64256895e-04 6.47988162e-03 3.94386154e-03 4.07789392e-03 1.23324095e-04 5.25627773e-03 -5.01417164e-03 5.01287669e-03 -1.37774951e-04 -3.29747090e-04 -1.58824815e-04 -2.69138959e-05 -7.44624905e-04 4.18861158e-04 -1.50120025e-04 -7.88241731e-03 4.47145138e-03 -8.72159043e-03 1.92416159e-04 -1.64256895e-04 -4.41278956e-05 6.47988162e-03 4.07789392e-03 3.94386154e-03 -1.23324095e-04 5.25627773e-03 -5.01287669e-03 5.01417164e-03 -1.37774951e-04 -1.58824815e-04 -3.29747090e-04 2.69138959e-05 -7.44624905e-04 1.50120025e-04 -4.18861158e-04 -2.15728427e-03 2.15728427e-03 1.78094826e-05 -1.78094826e-05 -2.30094432e-05 2.30094432e-05 3.89423179e-05 -2.09120600e-06 -2.09120600e-06 -2.69138959e-05 2.69138959e-05 -8.49865950e-06 4.16848167e-05 4.16848167e-05 6.96401205e-03 -6.96401205e-03 -6.96401205e-03 5.76134452e-04 -5.76134452e-04 -5.76134452e-04 2.78703402e-02 1.70670281e-02 1.70670281e-02 5.74991859e-03 -2.20334385e-02 2.20334385e-02 -1.21596738e-03 -7.44624905e-04 -7.44624905e-04 -2.25860819e-03 9.61306618e-04 -9.61306618e-04 6.65332653e-03 6.82044689e-03 -9.29544937e-03 -2.19325430e-04 2.57202134e-05 2.41137503e-04 -8.34518149e-03 -5.10663990e-03 -5.25183836e-03 -1.91006991e-04 -6.78582537e-03 6.42752029e-03 -6.50712338e-03 2.58595459e-04 4.18861158e-04 1.50120025e-04 4.16848167e-05 9.61306618e-04 -5.80403562e-04 1.34231757e-04 -6.65332653e-03 9.29544937e-03 -6.82044689e-03 2.19325430e-04 -2.41137503e-04 -2.57202134e-05 8.34518149e-03 5.25183836e-03 5.10663990e-03 -1.91006991e-04 6.78582537e-03 -6.50712338e-03 6.42752029e-03 -2.58595459e-04 -1.50120025e-04 -4.18861158e-04 4.16848167e-05 -9.61306618e-04 1.34231757e-04 -5.80403562e-04 - 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 - 0 12 24 36 48 66 86 106 124 144 164 170 180 190 190 200 206 216 226 226 236 254 274 294 308 326 346 366 384 404 424 438 456 476 496 -2 1 -1 496 - 6.10668701e-01 -7.51799909e-02 6.94266500e-02 -1.13818158e-02 2.50681311e-01 2.31073552e-01 2.31073552e-01 -2.31073552e-01 -4.55715201e-02 -9.09946312e-02 -9.09946312e-02 9.09946312e-02 -7.51799909e-02 6.30743818e-01 -3.88656825e-02 8.24503254e-02 -1.29637869e-01 -1.70706534e-01 -1.70706534e-01 1.70706534e-01 4.68039666e-02 8.78615395e-02 8.78615395e-02 -8.78615395e-02 6.94266500e-02 -3.88656825e-02 9.24320123e-03 -5.59159516e-03 3.43603397e-02 3.47760262e-02 3.47760262e-02 -3.47760262e-02 -8.11017653e-03 -1.51409429e-02 -1.51409429e-02 1.51409429e-02 -1.13818158e-02 8.24503254e-02 -5.59159516e-03 1.01087384e-02 -1.90677593e-02 -2.20810865e-02 -2.20810865e-02 2.20810865e-02 5.48328334e-03 1.08124682e-02 1.08124682e-02 -1.08124682e-02 6.62931071e-01 9.95491140e-02 9.95491140e-02 -9.36131516e-03 -2.53788780e-03 -2.53788780e-03 -1.84743808e-04 -1.19719253e-02 -1.19719253e-02 -1.34997473e-02 -6.86525306e-04 6.86525306e-04 -6.96842667e-03 7.88241731e-03 7.88241731e-03 -6.96401205e-03 -6.65332653e-03 6.65332653e-03 9.95491140e-02 5.15990200e-01 -9.95491140e-02 -2.53788780e-03 -1.46311251e-02 2.53788780e-03 6.78853114e-03 -4.68430612e-03 -3.65770659e-03 -9.88504715e-03 1.34997473e-02 -2.30263163e-02 1.14201355e-02 -1.00868915e-02 9.66260440e-03 -4.47145138e-03 2.15728427e-03 6.96401205e-03 -1.69134466e-02 -9.29544937e-03 9.95491140e-02 -9.95491140e-02 5.15990200e-01 -2.53788780e-03 2.53788780e-03 -1.46311251e-02 6.78853114e-03 -3.65770659e-03 -4.68430612e-03 9.88504715e-03 1.34997473e-02 -1.14201355e-02 2.30263163e-02 -1.00868915e-02 -4.47145138e-03 9.66260440e-03 -2.15728427e-03 6.96401205e-03 9.29544937e-03 1.69134466e-02 -9.36131516e-03 -2.53788780e-03 -2.53788780e-03 1.79650864e-04 -7.82240681e-05 -7.82240681e-05 4.91119301e-03 3.05324736e-03 3.05324736e-03 3.98965718e-03 -3.80846317e-03 3.80846317e-03 -8.65717248e-05 -1.92416159e-04 -1.92416159e-04 -5.76134452e-04 2.19325430e-04 -2.19325430e-04 -2.53788780e-03 -1.46311251e-02 2.53788780e-03 -7.82240681e-05 1.41854973e-04 7.82240681e-05 -4.88057902e-03 -3.08556574e-03 -2.92421677e-03 8.16061087e-05 -3.98965718e-03 3.77878526e-03 -3.90840983e-03 2.91222329e-04 5.87867582e-05 1.64256895e-04 -1.78094826e-05 5.76134452e-04 -1.07142033e-04 2.41137503e-04 -2.53788780e-03 2.53788780e-03 -1.46311251e-02 -7.82240681e-05 7.82240681e-05 1.41854973e-04 -4.88057902e-03 -2.92421677e-03 -3.08556574e-03 -8.16061087e-05 -3.98965718e-03 3.90840983e-03 -3.77878526e-03 2.91222329e-04 1.64256895e-04 5.87867582e-05 1.78094826e-05 5.76134452e-04 -2.41137503e-04 1.07142033e-04 2.50681311e-01 -1.29637869e-01 3.43603397e-02 -1.90677593e-02 -2.55642069e-01 5.76016724e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 -8.69671403e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 -8.69671403e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 -2.31073552e-01 1.70706534e-01 -3.47760262e-02 2.20810865e-02 -8.69671403e-02 -8.69671403e-02 -3.35169819e-01 3.81033730e-02 3.81033730e-02 5.56692551e-02 -4.55715201e-02 4.68039666e-02 -8.11017653e-03 5.48328334e-03 5.76016724e-02 -1.36360519e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 1.70016634e-02 1.70016634e-02 -1.70016634e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 1.70016634e-02 1.70016634e-02 -1.70016634e-02 9.09946312e-02 -8.78615395e-02 1.51409429e-02 -1.08124682e-02 3.81033730e-02 3.81033730e-02 5.56692551e-02 -1.70016634e-02 -1.70016634e-02 -3.82879364e-03 -1.84743808e-04 6.78853114e-03 6.78853114e-03 4.91119301e-03 -4.88057902e-03 -4.88057902e-03 2.33254718e-01 1.42959316e-01 1.42959316e-01 1.89783463e-01 -1.84466621e-01 1.84466621e-01 -1.05482763e-02 -6.47988162e-03 -6.47988162e-03 -2.78703402e-02 8.34518149e-03 -8.34518149e-03 -1.19719253e-02 -4.68430612e-03 -3.65770659e-03 3.05324736e-03 -3.08556574e-03 -2.92421677e-03 1.42959316e-01 8.74838123e-02 8.75173384e-02 -1.05433222e-04 1.16218161e-01 -1.13139159e-01 1.12926204e-01 -6.29096583e-03 -3.92045739e-03 -4.07789392e-03 2.30094432e-05 -1.70670281e-02 4.94560355e-03 -5.25183836e-03 -1.19719253e-02 -3.65770659e-03 -4.68430612e-03 3.05324736e-03 -2.92421677e-03 -3.08556574e-03 1.42959316e-01 8.75173384e-02 8.74838123e-02 1.05433222e-04 1.16218161e-01 -1.12926204e-01 1.13139159e-01 -6.29096583e-03 -4.07789392e-03 -3.92045739e-03 -2.30094432e-05 -1.70670281e-02 5.25183836e-03 -4.94560355e-03 -9.88504715e-03 9.88504715e-03 8.16061087e-05 -8.16061087e-05 -1.05433222e-04 1.05433222e-04 1.78440391e-04 -9.58226514e-06 -9.58226514e-06 -1.23324095e-04 1.23324095e-04 -3.89423179e-05 1.91006991e-04 1.91006991e-04 -1.34997473e-02 1.34997473e-02 1.34997473e-02 3.98965718e-03 -3.98965718e-03 -3.98965718e-03 1.89783463e-01 1.16218161e-01 1.16218161e-01 3.67563826e-01 -1.50037001e-01 1.50037001e-01 -8.58346559e-03 -5.25627773e-03 -5.25627773e-03 -3.91967293e-02 6.78582537e-03 -6.78582537e-03 -6.86525306e-04 -2.30263163e-02 -1.14201355e-02 -3.80846317e-03 3.77878526e-03 3.90840983e-03 -1.84466621e-01 -1.13139159e-01 -1.12926204e-01 -9.58226514e-06 -1.50037001e-01 1.45685791e-01 -1.45949895e-01 8.49151503e-03 5.03807181e-03 5.01287669e-03 2.09120600e-06 2.20334385e-02 -6.62775483e-03 6.50712338e-03 6.86525306e-04 1.14201355e-02 2.30263163e-02 3.80846317e-03 -3.90840983e-03 -3.77878526e-03 1.84466621e-01 1.12926204e-01 1.13139159e-01 -9.58226514e-06 1.50037001e-01 -1.45949895e-01 1.45685791e-01 -8.49151503e-03 -5.01287669e-03 -5.03807181e-03 2.09120600e-06 -2.20334385e-02 6.50712338e-03 -6.62775483e-03 -6.96842667e-03 -1.00868915e-02 -1.00868915e-02 -8.65717248e-05 2.91222329e-04 2.91222329e-04 -1.05482763e-02 -6.29096583e-03 -6.29096583e-03 -8.58346559e-03 8.49151503e-03 -8.49151503e-03 7.69472345e-04 1.37774951e-04 1.37774951e-04 1.21596738e-03 -2.58595459e-04 2.58595459e-04 7.88241731e-03 9.66260440e-03 -4.47145138e-03 -1.92416159e-04 5.87867582e-05 1.64256895e-04 -6.47988162e-03 -3.92045739e-03 -4.07789392e-03 -1.23324095e-04 -5.25627773e-03 5.03807181e-03 -5.01287669e-03 1.37774951e-04 3.28830564e-04 1.58824815e-04 2.69138959e-05 7.44624905e-04 -4.09415493e-04 1.50120025e-04 7.88241731e-03 -4.47145138e-03 9.66260440e-03 -1.92416159e-04 1.64256895e-04 5.87867582e-05 -6.47988162e-03 -4.07789392e-03 -3.92045739e-03 1.23324095e-04 -5.25627773e-03 5.01287669e-03 -5.03807181e-03 1.37774951e-04 1.58824815e-04 3.28830564e-04 -2.69138959e-05 7.44624905e-04 -1.50120025e-04 4.09415493e-04 2.15728427e-03 -2.15728427e-03 -1.78094826e-05 1.78094826e-05 2.30094432e-05 -2.30094432e-05 -3.89423179e-05 2.09120600e-06 2.09120600e-06 2.69138959e-05 -2.69138959e-05 8.49865950e-06 -4.16848167e-05 -4.16848167e-05 -6.96401205e-03 6.96401205e-03 6.96401205e-03 -5.76134452e-04 5.76134452e-04 5.76134452e-04 -2.78703402e-02 -1.70670281e-02 -1.70670281e-02 -3.91967293e-02 2.20334385e-02 -2.20334385e-02 1.21596738e-03 7.44624905e-04 7.44624905e-04 4.88351268e-03 -9.61306618e-04 9.61306618e-04 -6.65332653e-03 -1.69134466e-02 9.29544937e-03 2.19325430e-04 -1.07142033e-04 -2.41137503e-04 8.34518149e-03 4.94560355e-03 5.25183836e-03 1.91006991e-04 6.78582537e-03 -6.62775483e-03 6.50712338e-03 -2.58595459e-04 -4.09415493e-04 -1.50120025e-04 -4.16848167e-05 -9.61306618e-04 5.05894315e-04 -1.34231757e-04 6.65332653e-03 -9.29544937e-03 1.69134466e-02 -2.19325430e-04 2.41137503e-04 1.07142033e-04 -8.34518149e-03 -5.25183836e-03 -4.94560355e-03 1.91006991e-04 -6.78582537e-03 6.50712338e-03 -6.62775483e-03 2.58595459e-04 1.50120025e-04 4.09415493e-04 -4.16848167e-05 9.61306618e-04 -1.34231757e-04 5.05894315e-04 - 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 - 0 12 24 36 48 66 86 106 124 144 164 170 180 190 190 200 206 216 226 226 236 254 274 294 308 326 346 366 384 404 424 438 456 476 496 -2 2 -2 496 - 1.46471486e+00 2.54883877e-01 1.24590418e-01 -9.35884290e-03 -2.50681311e-01 2.31073552e-01 2.31073552e-01 -2.31073552e-01 4.55715201e-02 -9.09946312e-02 -9.09946312e-02 9.09946312e-02 2.54883877e-01 1.70428957e+00 -9.34218553e-02 1.65342489e-01 1.29637869e-01 -1.70706534e-01 -1.70706534e-01 1.70706534e-01 -4.68039666e-02 8.78615395e-02 8.78615395e-02 -8.78615395e-02 1.24590418e-01 -9.34218553e-02 1.88920782e-02 -1.20468125e-02 -3.43603397e-02 3.47760262e-02 3.47760262e-02 -3.47760262e-02 8.11017653e-03 -1.51409429e-02 -1.51409429e-02 1.51409429e-02 -9.35884290e-03 1.65342489e-01 -1.20468125e-02 1.72406024e-02 1.90677593e-02 -2.20810865e-02 -2.20810865e-02 2.20810865e-02 -5.48328334e-03 1.08124682e-02 1.08124682e-02 -1.08124682e-02 1.89517553e+00 9.95491140e-02 9.95491140e-02 -9.15785008e-03 -2.53788780e-03 -2.53788780e-03 -2.12388496e-02 -1.19719253e-02 -1.19719253e-02 -1.34997473e-02 -6.86525306e-04 6.86525306e-04 -2.22701900e-02 7.88241731e-03 7.88241731e-03 -6.96401205e-03 -6.65332653e-03 6.65332653e-03 9.95491140e-02 2.04211641e+00 -9.95491140e-02 -2.53788780e-03 -3.88804018e-03 2.53788780e-03 6.78853114e-03 1.78035242e-02 -3.65770659e-03 -9.88504715e-03 1.34997473e-02 6.08947863e-03 1.14201355e-02 -1.00868915e-02 8.24231853e-03 -4.47145138e-03 2.15728427e-03 6.96401205e-03 -6.20170953e-03 -9.29544937e-03 9.95491140e-02 -9.95491140e-02 2.04211641e+00 -2.53788780e-03 2.53788780e-03 -3.88804018e-03 6.78853114e-03 -3.65770659e-03 1.78035242e-02 9.88504715e-03 1.34997473e-02 -1.14201355e-02 -6.08947863e-03 -1.00868915e-02 -4.47145138e-03 8.24231853e-03 -2.15728427e-03 6.96401205e-03 9.29544937e-03 6.20170953e-03 -9.15785008e-03 -2.53788780e-03 -2.53788780e-03 1.79684460e-04 -7.82240681e-05 -7.82240681e-05 4.90771661e-03 3.05324736e-03 3.05324736e-03 3.98965718e-03 -3.80846317e-03 3.80846317e-03 -8.90983131e-05 -1.92416159e-04 -1.92416159e-04 -5.76134452e-04 2.19325430e-04 -2.19325430e-04 -2.53788780e-03 -3.88804018e-03 2.53788780e-03 -7.82240681e-05 2.17480352e-04 7.82240681e-05 -4.88057902e-03 -2.92726385e-03 -2.92421677e-03 8.16061087e-05 -3.98965718e-03 3.98374436e-03 -3.90840983e-03 2.91222329e-04 4.87887308e-05 1.64256895e-04 -1.78094826e-05 5.76134452e-04 -3.17373257e-05 2.41137503e-04 -2.53788780e-03 2.53788780e-03 -3.88804018e-03 -7.82240681e-05 7.82240681e-05 2.17480352e-04 -4.88057902e-03 -2.92421677e-03 -2.92726385e-03 -8.16061087e-05 -3.98965718e-03 3.90840983e-03 -3.98374436e-03 2.91222329e-04 1.64256895e-04 4.87887308e-05 1.78094826e-05 5.76134452e-04 -2.41137503e-04 3.17373257e-05 -2.50681311e-01 1.29637869e-01 -3.43603397e-02 1.90677593e-02 2.55642069e-01 -5.76016724e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 -8.69671403e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 -8.69671403e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 -2.31073552e-01 1.70706534e-01 -3.47760262e-02 2.20810865e-02 -8.69671403e-02 -8.69671403e-02 5.09104100e-01 3.81033730e-02 3.81033730e-02 -1.31876001e-01 4.55715201e-02 -4.68039666e-02 8.11017653e-03 -5.48328334e-03 -5.76016724e-02 1.36360519e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 1.70016634e-02 1.70016634e-02 -1.70016634e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 3.81033730e-02 1.70016634e-02 1.70016634e-02 -1.70016634e-02 9.09946312e-02 -8.78615395e-02 1.51409429e-02 -1.08124682e-02 3.81033730e-02 3.81033730e-02 -1.31876001e-01 -1.70016634e-02 -1.70016634e-02 3.78321204e-02 -2.12388496e-02 6.78853114e-03 6.78853114e-03 4.90771661e-03 -4.88057902e-03 -4.88057902e-03 2.33614448e-01 1.42959316e-01 1.42959316e-01 1.89783463e-01 -1.84466621e-01 1.84466621e-01 -1.02868307e-02 -6.47988162e-03 -6.47988162e-03 -2.78703402e-02 8.34518149e-03 -8.34518149e-03 -1.19719253e-02 1.78035242e-02 -3.65770659e-03 3.05324736e-03 -2.92726385e-03 -2.92421677e-03 1.42959316e-01 8.78151758e-02 8.75173384e-02 -1.05433222e-04 1.16218161e-01 -1.12710131e-01 1.12926204e-01 -6.29096583e-03 -3.94138564e-03 -4.07789392e-03 2.30094432e-05 -1.70670281e-02 5.10344353e-03 -5.25183836e-03 -1.19719253e-02 -3.65770659e-03 1.78035242e-02 3.05324736e-03 -2.92421677e-03 -2.92726385e-03 1.42959316e-01 8.75173384e-02 8.78151758e-02 1.05433222e-04 1.16218161e-01 -1.12926204e-01 1.12710131e-01 -6.29096583e-03 -4.07789392e-03 -3.94138564e-03 -2.30094432e-05 -1.70670281e-02 5.25183836e-03 -5.10344353e-03 -9.88504715e-03 9.88504715e-03 8.16061087e-05 -8.16061087e-05 -1.05433222e-04 1.05433222e-04 1.78440391e-04 -9.58226514e-06 -9.58226514e-06 -1.23324095e-04 1.23324095e-04 -3.89423179e-05 1.91006991e-04 1.91006991e-04 -1.34997473e-02 1.34997473e-02 1.34997473e-02 3.98965718e-03 -3.98965718e-03 -3.98965718e-03 1.89783463e-01 1.16218161e-01 1.16218161e-01 3.67563826e-01 -1.50037001e-01 1.50037001e-01 -8.58346559e-03 -5.25627773e-03 -5.25627773e-03 -3.91967293e-02 6.78582537e-03 -6.78582537e-03 -6.86525306e-04 6.08947863e-03 -1.14201355e-02 -3.80846317e-03 3.98374436e-03 3.90840983e-03 -1.84466621e-01 -1.12710131e-01 -1.12926204e-01 -9.58226514e-06 -1.50037001e-01 1.46241269e-01 -1.45949895e-01 8.49151503e-03 5.01097526e-03 5.01287669e-03 2.09120600e-06 2.20334385e-02 -6.42339379e-03 6.50712338e-03 6.86525306e-04 1.14201355e-02 -6.08947863e-03 3.80846317e-03 -3.90840983e-03 -3.98374436e-03 1.84466621e-01 1.12926204e-01 1.12710131e-01 -9.58226514e-06 1.50037001e-01 -1.45949895e-01 1.46241269e-01 -8.49151503e-03 -5.01287669e-03 -5.01097526e-03 2.09120600e-06 -2.20334385e-02 6.50712338e-03 -6.42339379e-03 -2.22701900e-02 -1.00868915e-02 -1.00868915e-02 -8.90983131e-05 2.91222329e-04 2.91222329e-04 -1.02868307e-02 -6.29096583e-03 -6.29096583e-03 -8.58346559e-03 8.49151503e-03 -8.49151503e-03 9.59486559e-04 1.37774951e-04 1.37774951e-04 1.21596738e-03 -2.58595459e-04 2.58595459e-04 7.88241731e-03 8.24231853e-03 -4.47145138e-03 -1.92416159e-04 4.87887308e-05 1.64256895e-04 -6.47988162e-03 -3.94138564e-03 -4.07789392e-03 -1.23324095e-04 -5.25627773e-03 5.01097526e-03 -5.01287669e-03 1.37774951e-04 3.30152350e-04 1.58824815e-04 2.69138959e-05 7.44624905e-04 -4.19384346e-04 1.50120025e-04 7.88241731e-03 -4.47145138e-03 8.24231853e-03 -1.92416159e-04 1.64256895e-04 4.87887308e-05 -6.47988162e-03 -4.07789392e-03 -3.94138564e-03 1.23324095e-04 -5.25627773e-03 5.01287669e-03 -5.01097526e-03 1.37774951e-04 1.58824815e-04 3.30152350e-04 -2.69138959e-05 7.44624905e-04 -1.50120025e-04 4.19384346e-04 2.15728427e-03 -2.15728427e-03 -1.78094826e-05 1.78094826e-05 2.30094432e-05 -2.30094432e-05 -3.89423179e-05 2.09120600e-06 2.09120600e-06 2.69138959e-05 -2.69138959e-05 8.49865950e-06 -4.16848167e-05 -4.16848167e-05 -6.96401205e-03 6.96401205e-03 6.96401205e-03 -5.76134452e-04 5.76134452e-04 5.76134452e-04 -2.78703402e-02 -1.70670281e-02 -1.70670281e-02 -3.91967293e-02 2.20334385e-02 -2.20334385e-02 1.21596738e-03 7.44624905e-04 7.44624905e-04 4.88351268e-03 -9.61306618e-04 9.61306618e-04 -6.65332653e-03 -6.20170953e-03 9.29544937e-03 2.19325430e-04 -3.17373257e-05 -2.41137503e-04 8.34518149e-03 5.10344353e-03 5.25183836e-03 1.91006991e-04 6.78582537e-03 -6.42339379e-03 6.50712338e-03 -2.58595459e-04 -4.19384346e-04 -1.50120025e-04 -4.16848167e-05 -9.61306618e-04 5.81078995e-04 -1.34231757e-04 6.65332653e-03 -9.29544937e-03 6.20170953e-03 -2.19325430e-04 2.41137503e-04 3.17373257e-05 -8.34518149e-03 -5.25183836e-03 -5.10344353e-03 1.91006991e-04 -6.78582537e-03 6.50712338e-03 -6.42339379e-03 2.58595459e-04 1.50120025e-04 4.19384346e-04 -4.16848167e-05 9.61306618e-04 -1.34231757e-04 5.81078995e-04 - 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 - 0 12 24 36 48 66 86 106 124 144 164 170 180 190 190 200 206 216 226 226 236 254 274 294 308 326 346 366 384 404 424 438 456 476 496 -3 -1 -1 496 - -4.46730500e-01 2.90265885e-01 -6.65919095e-02 3.20736205e-02 -2.50681311e-01 -2.31073552e-01 -2.31073552e-01 2.31073552e-01 4.55715201e-02 9.09946312e-02 9.09946312e-02 -9.09946312e-02 2.90265885e-01 -7.77208948e-02 3.49623849e-02 -1.81562170e-02 1.29637869e-01 1.70706534e-01 1.70706534e-01 -1.70706534e-01 -4.68039666e-02 -8.78615395e-02 -8.78615395e-02 8.78615395e-02 -6.65919095e-02 3.49623849e-02 -8.97965282e-03 4.90391018e-03 -3.43603397e-02 -3.47760262e-02 -3.47760262e-02 3.47760262e-02 8.11017653e-03 1.51409429e-02 1.51409429e-02 -1.51409429e-02 3.20736205e-02 -1.81562170e-02 4.90391018e-03 -2.40214415e-03 1.90677593e-02 2.20810865e-02 2.20810865e-02 -2.20810865e-02 -5.48328334e-03 -1.08124682e-02 -1.08124682e-02 1.08124682e-02 -9.61307016e-02 -9.95491140e-02 -9.95491140e-02 3.84928096e-03 2.53788780e-03 2.53788780e-03 4.96626145e-03 1.19719253e-02 1.19719253e-02 1.34997473e-02 6.86525306e-04 -6.86525306e-04 7.75107441e-03 -7.88241731e-03 -7.88241731e-03 6.96401205e-03 6.65332653e-03 -6.65332653e-03 -9.95491140e-02 5.08101702e-02 9.95491140e-02 2.53788780e-03 9.11909087e-03 -2.53788780e-03 -6.78853114e-03 1.75623651e-03 3.65770659e-03 9.88504715e-03 -1.34997473e-02 2.68064379e-02 -1.14201355e-02 1.00868915e-02 -1.01418763e-02 4.47145138e-03 -2.15728427e-03 -6.96401205e-03 1.75321839e-02 9.29544937e-03 -9.95491140e-02 9.95491140e-02 5.08101702e-02 2.53788780e-03 -2.53788780e-03 9.11909087e-03 -6.78853114e-03 3.65770659e-03 1.75623651e-03 -9.88504715e-03 -1.34997473e-02 1.14201355e-02 -2.68064379e-02 1.00868915e-02 4.47145138e-03 -1.01418763e-02 2.15728427e-03 -6.96401205e-03 -9.29544937e-03 -1.75321839e-02 3.84928096e-03 2.53788780e-03 2.53788780e-03 -1.26047298e-04 7.82240681e-05 7.82240681e-05 -4.95769243e-03 -3.05324736e-03 -3.05324736e-03 -3.98965718e-03 3.80846317e-03 -3.80846317e-03 7.89606128e-05 1.92416159e-04 1.92416159e-04 5.76134452e-04 -2.19325430e-04 2.19325430e-04 2.53788780e-03 9.11909087e-03 -2.53788780e-03 7.82240681e-05 -8.82514067e-05 -7.82240681e-05 4.88057902e-03 3.11404071e-03 2.92421677e-03 -8.16061087e-05 3.98965718e-03 -3.81554628e-03 3.90840983e-03 -2.91222329e-04 -5.41259230e-05 -1.64256895e-04 1.78094826e-05 -5.76134452e-04 1.01124921e-04 -2.41137503e-04 2.53788780e-03 -2.53788780e-03 9.11909087e-03 7.82240681e-05 -7.82240681e-05 -8.82514067e-05 4.88057902e-03 2.92421677e-03 3.11404071e-03 8.16061087e-05 3.98965718e-03 -3.90840983e-03 3.81554628e-03 -2.91222329e-04 -1.64256895e-04 -5.41259230e-05 -1.78094826e-05 -5.76134452e-04 2.41137503e-04 -1.01124921e-04 -2.50681311e-01 1.29637869e-01 -3.43603397e-02 1.90677593e-02 2.55642069e-01 -5.76016724e-02 -2.31073552e-01 1.70706534e-01 -3.47760262e-02 2.20810865e-02 -8.69671403e-02 -8.69671403e-02 8.69671403e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 -2.31073552e-01 1.70706534e-01 -3.47760262e-02 2.20810865e-02 -8.69671403e-02 -8.69671403e-02 8.69671403e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 2.31073552e-01 -1.70706534e-01 3.47760262e-02 -2.20810865e-02 8.69671403e-02 8.69671403e-02 3.35169819e-01 -3.81033730e-02 -3.81033730e-02 -5.56692551e-02 4.55715201e-02 -4.68039666e-02 8.11017653e-03 -5.48328334e-03 -5.76016724e-02 1.36360519e-02 9.09946312e-02 -8.78615395e-02 1.51409429e-02 -1.08124682e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 -1.70016634e-02 -1.70016634e-02 1.70016634e-02 9.09946312e-02 -8.78615395e-02 1.51409429e-02 -1.08124682e-02 3.81033730e-02 3.81033730e-02 -3.81033730e-02 -1.70016634e-02 -1.70016634e-02 1.70016634e-02 -9.09946312e-02 8.78615395e-02 -1.51409429e-02 1.08124682e-02 -3.81033730e-02 -3.81033730e-02 -5.56692551e-02 1.70016634e-02 1.70016634e-02 3.82879364e-03 4.96626145e-03 -6.78853114e-03 -6.78853114e-03 -4.95769243e-03 4.88057902e-03 4.88057902e-03 -2.33214382e-01 -1.42959316e-01 -1.42959316e-01 -1.89783463e-01 1.84466621e-01 -1.84466621e-01 1.05548787e-02 6.47988162e-03 6.47988162e-03 2.78703402e-02 -8.34518149e-03 8.34518149e-03 1.19719253e-02 1.75623651e-03 3.65770659e-03 -3.05324736e-03 3.11404071e-03 2.92421677e-03 -1.42959316e-01 -8.74686860e-02 -8.75173384e-02 1.05433222e-04 -1.16218161e-01 1.13119631e-01 -1.12926204e-01 6.29096583e-03 3.92293329e-03 4.07789392e-03 -2.30094432e-05 1.70670281e-02 -4.94879992e-03 5.25183836e-03 1.19719253e-02 3.65770659e-03 1.75623651e-03 -3.05324736e-03 2.92421677e-03 3.11404071e-03 -1.42959316e-01 -8.75173384e-02 -8.74686860e-02 -1.05433222e-04 -1.16218161e-01 1.12926204e-01 -1.13119631e-01 6.29096583e-03 4.07789392e-03 3.92293329e-03 2.30094432e-05 1.70670281e-02 -5.25183836e-03 4.94879992e-03 9.88504715e-03 -9.88504715e-03 -8.16061087e-05 8.16061087e-05 1.05433222e-04 -1.05433222e-04 -1.78440391e-04 9.58226514e-06 9.58226514e-06 1.23324095e-04 -1.23324095e-04 3.89423179e-05 -1.91006991e-04 -1.91006991e-04 1.34997473e-02 -1.34997473e-02 -1.34997473e-02 -3.98965718e-03 3.98965718e-03 3.98965718e-03 -1.89783463e-01 -1.16218161e-01 -1.16218161e-01 5.86189719e-02 1.50037001e-01 -1.50037001e-01 8.58346559e-03 5.25627773e-03 5.25627773e-03 5.74991859e-03 -6.78582537e-03 6.78582537e-03 6.86525306e-04 2.68064379e-02 1.14201355e-02 3.80846317e-03 -3.81554628e-03 -3.90840983e-03 1.84466621e-01 1.13119631e-01 1.12926204e-01 9.58226514e-06 1.50037001e-01 -1.45660580e-01 1.45949895e-01 -8.49151503e-03 -5.04126819e-03 -5.01287669e-03 -2.09120600e-06 -2.20334385e-02 6.63188133e-03 -6.50712338e-03 -6.86525306e-04 -1.14201355e-02 -2.68064379e-02 -3.80846317e-03 3.90840983e-03 3.81554628e-03 -1.84466621e-01 -1.12926204e-01 -1.13119631e-01 9.58226514e-06 -1.50037001e-01 1.45949895e-01 -1.45660580e-01 8.49151503e-03 5.01287669e-03 5.04126819e-03 -2.09120600e-06 2.20334385e-02 -6.50712338e-03 6.63188133e-03 7.75107441e-03 1.00868915e-02 1.00868915e-02 7.89606128e-05 -2.91222329e-04 -2.91222329e-04 1.05548787e-02 6.29096583e-03 6.29096583e-03 8.58346559e-03 -8.49151503e-03 8.49151503e-03 -7.68391652e-04 -1.37774951e-04 -1.37774951e-04 -1.21596738e-03 2.58595459e-04 -2.58595459e-04 -7.88241731e-03 -1.01418763e-02 4.47145138e-03 1.92416159e-04 -5.41259230e-05 -1.64256895e-04 6.47988162e-03 3.92293329e-03 4.07789392e-03 1.23324095e-04 5.25627773e-03 -5.04126819e-03 5.01287669e-03 -1.37774951e-04 -3.28425304e-04 -1.58824815e-04 -2.69138959e-05 -7.44624905e-04 4.08892304e-04 -1.50120025e-04 -7.88241731e-03 4.47145138e-03 -1.01418763e-02 1.92416159e-04 -1.64256895e-04 -5.41259230e-05 6.47988162e-03 4.07789392e-03 3.92293329e-03 -1.23324095e-04 5.25627773e-03 -5.01287669e-03 5.04126819e-03 -1.37774951e-04 -1.58824815e-04 -3.28425304e-04 2.69138959e-05 -7.44624905e-04 1.50120025e-04 -4.08892304e-04 -2.15728427e-03 2.15728427e-03 1.78094826e-05 -1.78094826e-05 -2.30094432e-05 2.30094432e-05 3.89423179e-05 -2.09120600e-06 -2.09120600e-06 -2.69138959e-05 2.69138959e-05 -8.49865950e-06 4.16848167e-05 4.16848167e-05 6.96401205e-03 -6.96401205e-03 -6.96401205e-03 5.76134452e-04 -5.76134452e-04 -5.76134452e-04 2.78703402e-02 1.70670281e-02 1.70670281e-02 5.74991859e-03 -2.20334385e-02 2.20334385e-02 -1.21596738e-03 -7.44624905e-04 -7.44624905e-04 -2.25860819e-03 9.61306618e-04 -9.61306618e-04 6.65332653e-03 1.75321839e-02 -9.29544937e-03 -2.19325430e-04 1.01124921e-04 2.41137503e-04 -8.34518149e-03 -4.94879992e-03 -5.25183836e-03 -1.91006991e-04 -6.78582537e-03 6.63188133e-03 -6.50712338e-03 2.58595459e-04 4.08892304e-04 1.50120025e-04 4.16848167e-05 9.61306618e-04 -5.05218881e-04 1.34231757e-04 -6.65332653e-03 9.29544937e-03 -1.75321839e-02 2.19325430e-04 -2.41137503e-04 -1.01124921e-04 8.34518149e-03 5.25183836e-03 4.94879992e-03 -1.91006991e-04 6.78582537e-03 -6.50712338e-03 6.63188133e-03 -2.58595459e-04 -1.50120025e-04 -4.08892304e-04 4.16848167e-05 -9.61306618e-04 1.34231757e-04 -5.05218881e-04 - 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 0 1 2 3 10 11 12 14 15 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 10 15 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 0 1 2 3 11 12 14 16 17 19 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 6 8 9 21 22 23 25 26 28 29 30 32 33 4 5 6 7 8 9 20 21 22 24 25 26 27 28 29 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 - 0 12 24 36 48 66 86 106 124 144 164 170 180 190 190 200 206 216 226 226 236 254 274 294 308 326 346 366 384 404 424 438 456 476 496 diff --git a/tests/03_NAO_multik/01_NO_KP_15f_ODM/pot_es.cube.ref b/tests/03_NAO_multik/01_NO_KP_15f_ODM/pot_es.cube.ref deleted file mode 100644 index 4997901c8a..0000000000 --- a/tests/03_NAO_multik/01_NO_KP_15f_ODM/pot_es.cube.ref +++ /dev/null @@ -1,979 +0,0 @@ -STEP: 0 Cubefile created from ABACUS. Inner loop is z, followed by y and x -1 (nspin) -1 0.0 0.0 0.0 -18 0.000000 0.247778 0.247778 -18 0.247778 0.000000 0.247778 -18 0.247778 0.247778 0.000000 - 58 12.000000 0.000000 0.000000 0.000000 - -2.863506703e+00 -3.176135718e+00 -3.242906484e+00 -3.166012873e+00 -2.349289445e+00 -7.107805182e-01 - 2.759033881e-01 7.553845437e-01 9.730729696e-01 1.045143285e+00 9.730729696e-01 7.553845437e-01 - 2.759033881e-01 -7.107805182e-01 -2.349289445e+00 -3.166012873e+00 -3.242906484e+00 -3.176135718e+00 - -3.176135718e+00 -3.259958206e+00 -3.168040888e+00 -2.811263827e+00 -1.363678565e+00 -4.762534696e-02 - 5.819872684e-01 9.052606610e-01 1.034058306e+00 1.034058306e+00 9.052606610e-01 5.819872684e-01 - -4.762534696e-02 -1.363678565e+00 -2.811263827e+00 -3.168040888e+00 -3.259958206e+00 -3.176135718e+00 - -3.242906484e+00 -3.168040888e+00 -2.897709599e+00 -1.731196688e+00 -3.167304269e-01 4.329329062e-01 - 8.380484261e-01 1.019185925e+00 1.084400472e+00 1.019185925e+00 8.380484261e-01 4.329329062e-01 - -3.167304269e-01 -1.731196688e+00 -2.897709599e+00 -3.168040888e+00 -3.242906484e+00 -3.259958206e+00 - -3.166012873e+00 -2.811263827e+00 -1.731196688e+00 -4.248045340e-01 3.523457454e-01 7.815290589e-01 - 1.008963694e+00 1.110024431e+00 1.110024431e+00 1.008963694e+00 7.815290589e-01 3.523457454e-01 - -4.248045340e-01 -1.731196688e+00 -2.811263827e+00 -3.166012873e+00 -3.168040888e+00 -3.168040888e+00 - -2.349289445e+00 -1.363678565e+00 -3.167304269e-01 3.523457454e-01 7.596747836e-01 1.004603663e+00 - 1.120222618e+00 1.166031428e+00 1.120222618e+00 1.004603663e+00 7.596747836e-01 3.523457454e-01 - -3.167304269e-01 -1.363678565e+00 -2.349289445e+00 -2.811263827e+00 -2.897709599e+00 -2.811263827e+00 - -7.107805182e-01 -4.762534696e-02 4.329329062e-01 7.815290589e-01 1.004603663e+00 1.129418840e+00 - 1.189160730e+00 1.189160730e+00 1.129418840e+00 1.004603663e+00 7.815290589e-01 4.329329062e-01 - -4.762534696e-02 -7.107805182e-01 -1.363678565e+00 -1.731196688e+00 -1.731196688e+00 -1.363678565e+00 - 2.759033881e-01 5.819872684e-01 8.380484261e-01 1.008963694e+00 1.120222618e+00 1.189160730e+00 - 1.205280147e+00 1.189160730e+00 1.120222618e+00 1.008963694e+00 8.380484261e-01 5.819872684e-01 - 2.759033881e-01 -4.762534696e-02 -3.167304269e-01 -4.248045340e-01 -3.167304269e-01 -4.762534696e-02 - 7.553845437e-01 9.052606610e-01 1.019185925e+00 1.110024431e+00 1.166031428e+00 1.189160730e+00 - 1.189160730e+00 1.166031428e+00 1.110024431e+00 1.019185925e+00 9.052606610e-01 7.553845437e-01 - 5.819872684e-01 4.329329062e-01 3.523457454e-01 3.523457454e-01 4.329329062e-01 5.819872684e-01 - 9.730729696e-01 1.034058306e+00 1.084400472e+00 1.110024431e+00 1.120222618e+00 1.129418840e+00 - 1.120222618e+00 1.110024431e+00 1.084400472e+00 1.034058306e+00 9.730729696e-01 9.052606610e-01 - 8.380484261e-01 7.815290589e-01 7.596747836e-01 7.815290589e-01 8.380484261e-01 9.052606610e-01 - 1.045143285e+00 1.034058306e+00 1.019185925e+00 1.008963694e+00 1.004603663e+00 1.004603663e+00 - 1.008963694e+00 1.019185925e+00 1.034058306e+00 1.045143285e+00 1.034058306e+00 1.019185925e+00 - 1.008963694e+00 1.004603663e+00 1.004603663e+00 1.008963694e+00 1.019185925e+00 1.034058306e+00 - 9.730729696e-01 9.052606610e-01 8.380484261e-01 7.815290589e-01 7.596747836e-01 7.815290589e-01 - 8.380484261e-01 9.052606610e-01 9.730729696e-01 1.034058306e+00 1.084400472e+00 1.110024431e+00 - 1.120222618e+00 1.129418840e+00 1.120222618e+00 1.110024431e+00 1.084400472e+00 1.034058306e+00 - 7.553845437e-01 5.819872684e-01 4.329329062e-01 3.523457454e-01 3.523457454e-01 4.329329062e-01 - 5.819872684e-01 7.553845437e-01 9.052606610e-01 1.019185925e+00 1.110024431e+00 1.166031428e+00 - 1.189160730e+00 1.189160730e+00 1.166031428e+00 1.110024431e+00 1.019185925e+00 9.052606610e-01 - 2.759033881e-01 -4.762534696e-02 -3.167304269e-01 -4.248045340e-01 -3.167304269e-01 -4.762534696e-02 - 2.759033881e-01 5.819872684e-01 8.380484261e-01 1.008963694e+00 1.120222618e+00 1.189160730e+00 - 1.205280147e+00 1.189160730e+00 1.120222618e+00 1.008963694e+00 8.380484261e-01 5.819872684e-01 - -7.107805182e-01 -1.363678565e+00 -1.731196688e+00 -1.731196688e+00 -1.363678565e+00 -7.107805182e-01 - -4.762534696e-02 4.329329062e-01 7.815290589e-01 1.004603663e+00 1.129418840e+00 1.189160730e+00 - 1.189160730e+00 1.129418840e+00 1.004603663e+00 7.815290589e-01 4.329329062e-01 -4.762534696e-02 - -2.349289445e+00 -2.811263827e+00 -2.897709599e+00 -2.811263827e+00 -2.349289445e+00 -1.363678565e+00 - -3.167304269e-01 3.523457454e-01 7.596747836e-01 1.004603663e+00 1.120222618e+00 1.166031428e+00 - 1.120222618e+00 1.004603663e+00 7.596747836e-01 3.523457454e-01 -3.167304269e-01 -1.363678565e+00 - -3.166012873e+00 -3.168040888e+00 -3.168040888e+00 -3.166012873e+00 -2.811263827e+00 -1.731196688e+00 - -4.248045340e-01 3.523457454e-01 7.815290589e-01 1.008963694e+00 1.110024431e+00 1.110024431e+00 - 1.008963694e+00 7.815290589e-01 3.523457454e-01 -4.248045340e-01 -1.731196688e+00 -2.811263827e+00 - -3.242906484e+00 -3.259958206e+00 -3.242906484e+00 -3.168040888e+00 -2.897709599e+00 -1.731196688e+00 - -3.167304269e-01 4.329329062e-01 8.380484261e-01 1.019185925e+00 1.084400472e+00 1.019185925e+00 - 8.380484261e-01 4.329329062e-01 -3.167304269e-01 -1.731196688e+00 -2.897709599e+00 -3.168040888e+00 - -3.176135718e+00 -3.176135718e+00 -3.259958206e+00 -3.168040888e+00 -2.811263827e+00 -1.363678565e+00 - -4.762534696e-02 5.819872684e-01 9.052606610e-01 1.034058306e+00 1.034058306e+00 9.052606610e-01 - 5.819872684e-01 -4.762534696e-02 -1.363678565e+00 -2.811263827e+00 -3.168040888e+00 -3.259958206e+00 - -3.176135718e+00 -3.259958206e+00 -3.168040888e+00 -2.811263827e+00 -1.363678565e+00 -4.762534696e-02 - 5.819872684e-01 9.052606610e-01 1.034058306e+00 1.034058306e+00 9.052606610e-01 5.819872684e-01 - -4.762534696e-02 -1.363678565e+00 -2.811263827e+00 -3.168040888e+00 -3.259958206e+00 -3.176135718e+00 - -3.259958206e+00 -3.149086912e+00 -2.968646894e+00 -1.917098600e+00 -4.275257482e-01 3.890026417e-01 - 8.163506452e-01 1.006361962e+00 1.071693210e+00 1.006361962e+00 8.163506452e-01 3.890026417e-01 - -4.275257482e-01 -1.917098600e+00 -2.968646894e+00 -3.149086912e+00 -3.259958206e+00 -3.266225378e+00 - -3.168040888e+00 -2.968646894e+00 -2.091379679e+00 -6.758660881e-01 2.499862400e-01 7.308639113e-01 - 9.870237318e-01 1.093992270e+00 1.093992270e+00 9.870237318e-01 7.308639113e-01 2.499862400e-01 - -6.758660881e-01 -2.091379679e+00 -2.968646894e+00 -3.168040888e+00 -3.206568329e+00 -3.206568329e+00 - -2.811263827e+00 -1.917098600e+00 -6.758660881e-01 2.013583711e-01 6.804450493e-01 9.686080220e-01 - 1.099799059e+00 1.153649003e+00 1.099799059e+00 9.686080220e-01 6.804450493e-01 2.013583711e-01 - -6.758660881e-01 -1.917098600e+00 -2.811263827e+00 -3.099833569e+00 -3.126510933e+00 -3.099833569e+00 - -1.363678565e+00 -4.275257482e-01 2.499862400e-01 6.804450493e-01 9.604823150e-01 1.107772587e+00 - 1.181735925e+00 1.181735925e+00 1.107772587e+00 9.604823150e-01 6.804450493e-01 2.499862400e-01 - -4.275257482e-01 -1.363678565e+00 -2.146241599e+00 -2.500990004e+00 -2.500990004e+00 -2.146241599e+00 - -4.762534696e-02 3.890026417e-01 7.308639113e-01 9.686080220e-01 1.107772587e+00 1.192455445e+00 - 1.215727713e+00 1.192455445e+00 1.107772587e+00 9.686080220e-01 7.308639113e-01 3.890026417e-01 - -4.762534696e-02 -5.713853056e-01 -1.013496361e+00 -1.186604314e+00 -1.013496361e+00 -5.713853056e-01 - 5.819872684e-01 8.163506452e-01 9.870237318e-01 1.099799059e+00 1.181735925e+00 1.215727713e+00 - 1.215727713e+00 1.181735925e+00 1.099799059e+00 9.870237318e-01 8.163506452e-01 5.819872684e-01 - 3.257521627e-01 9.934167649e-02 -4.122269552e-02 -4.122269552e-02 9.934167649e-02 3.257521627e-01 - 9.052606610e-01 1.006361962e+00 1.093992270e+00 1.153649003e+00 1.181735925e+00 1.192455445e+00 - 1.181735925e+00 1.153649003e+00 1.093992270e+00 1.006361962e+00 9.052606610e-01 7.803048748e-01 - 6.495303394e-01 5.533579927e-01 5.187647195e-01 5.533579927e-01 6.495303394e-01 7.803048748e-01 - 1.034058306e+00 1.071693210e+00 1.093992270e+00 1.099799059e+00 1.107772587e+00 1.107772587e+00 - 1.099799059e+00 1.093992270e+00 1.071693210e+00 1.034058306e+00 9.859929667e-01 9.392496570e-01 - 8.993044483e-01 8.675032008e-01 8.675032008e-01 8.993044483e-01 9.392496570e-01 9.859929667e-01 - 1.034058306e+00 1.006361962e+00 9.870237318e-01 9.686080220e-01 9.604823150e-01 9.686080220e-01 - 9.870237318e-01 1.006361962e+00 1.034058306e+00 1.056013441e+00 1.056733293e+00 1.052107507e+00 - 1.051249653e+00 1.052430419e+00 1.051249653e+00 1.052107507e+00 1.056733293e+00 1.056013441e+00 - 9.052606610e-01 8.163506452e-01 7.308639113e-01 6.804450493e-01 6.804450493e-01 7.308639113e-01 - 8.163506452e-01 9.052606610e-01 9.859929667e-01 1.056733293e+00 1.110866601e+00 1.136253020e+00 - 1.151907167e+00 1.151907167e+00 1.136253020e+00 1.110866601e+00 1.056733293e+00 9.859929667e-01 - 5.819872684e-01 3.890026417e-01 2.499862400e-01 2.013583711e-01 2.499862400e-01 3.890026417e-01 - 5.819872684e-01 7.803048748e-01 9.392496570e-01 1.052107507e+00 1.136253020e+00 1.184158268e+00 - 1.197552582e+00 1.184158268e+00 1.136253020e+00 1.052107507e+00 9.392496570e-01 7.803048748e-01 - -4.762534696e-02 -4.275257482e-01 -6.758660881e-01 -6.758660881e-01 -4.275257482e-01 -4.762534696e-02 - 3.257521627e-01 6.495303394e-01 8.993044483e-01 1.051249653e+00 1.151907167e+00 1.197552582e+00 - 1.197552582e+00 1.151907167e+00 1.051249653e+00 8.993044483e-01 6.495303394e-01 3.257521627e-01 - -1.363678565e+00 -1.917098600e+00 -2.091379679e+00 -1.917098600e+00 -1.363678565e+00 -5.713853056e-01 - 9.934167649e-02 5.533579927e-01 8.675032008e-01 1.052430419e+00 1.151907167e+00 1.184158268e+00 - 1.151907167e+00 1.052430419e+00 8.675032008e-01 5.533579927e-01 9.934167649e-02 -5.713853056e-01 - -2.811263827e+00 -2.968646894e+00 -2.968646894e+00 -2.811263827e+00 -2.146241599e+00 -1.013496361e+00 - -4.122269552e-02 5.187647195e-01 8.675032008e-01 1.051249653e+00 1.136253020e+00 1.136253020e+00 - 1.051249653e+00 8.675032008e-01 5.187647195e-01 -4.122269552e-02 -1.013496361e+00 -2.146241599e+00 - -3.168040888e+00 -3.149086912e+00 -3.168040888e+00 -3.099833569e+00 -2.500990004e+00 -1.186604314e+00 - -4.122269552e-02 5.533579927e-01 8.993044483e-01 1.052107507e+00 1.110866601e+00 1.052107507e+00 - 8.993044483e-01 5.533579927e-01 -4.122269552e-02 -1.186604314e+00 -2.500990004e+00 -3.099833569e+00 - -3.259958206e+00 -3.259958206e+00 -3.206568329e+00 -3.126510933e+00 -2.500990004e+00 -1.013496361e+00 - 9.934167649e-02 6.495303394e-01 9.392496570e-01 1.056733293e+00 1.056733293e+00 9.392496570e-01 - 6.495303394e-01 9.934167649e-02 -1.013496361e+00 -2.500990004e+00 -3.126510933e+00 -3.206568329e+00 - -3.176135718e+00 -3.266225378e+00 -3.206568329e+00 -3.099833569e+00 -2.146241599e+00 -5.713853056e-01 - 3.257521627e-01 7.803048748e-01 9.859929667e-01 1.056013441e+00 9.859929667e-01 7.803048748e-01 - 3.257521627e-01 -5.713853056e-01 -2.146241599e+00 -3.099833569e+00 -3.206568329e+00 -3.266225378e+00 - -3.242906484e+00 -3.168040888e+00 -2.897709599e+00 -1.731196688e+00 -3.167304269e-01 4.329329062e-01 - 8.380484261e-01 1.019185925e+00 1.084400472e+00 1.019185925e+00 8.380484261e-01 4.329329062e-01 - -3.167304269e-01 -1.731196688e+00 -2.897709599e+00 -3.168040888e+00 -3.242906484e+00 -3.259958206e+00 - -3.168040888e+00 -2.968646894e+00 -2.091379679e+00 -6.758660881e-01 2.499862400e-01 7.308639113e-01 - 9.870237318e-01 1.093992270e+00 1.093992270e+00 9.870237318e-01 7.308639113e-01 2.499862400e-01 - -6.758660881e-01 -2.091379679e+00 -2.968646894e+00 -3.168040888e+00 -3.206568329e+00 -3.206568329e+00 - -2.897709599e+00 -2.091379679e+00 -8.182718971e-01 1.418925569e-01 6.528852206e-01 9.594433503e-01 - 1.094930401e+00 1.147828275e+00 1.094930401e+00 9.594433503e-01 6.528852206e-01 1.418925569e-01 - -8.182718971e-01 -2.091379679e+00 -2.897709599e+00 -3.126510933e+00 -3.148949385e+00 -3.126510933e+00 - -1.731196688e+00 -6.758660881e-01 1.418925569e-01 6.265938397e-01 9.358832788e-01 1.098731978e+00 - 1.176108745e+00 1.176108745e+00 1.098731978e+00 9.358832788e-01 6.265938397e-01 1.418925569e-01 - -6.758660881e-01 -1.731196688e+00 -2.500990004e+00 -2.798046014e+00 -2.798046014e+00 -2.500990004e+00 - -3.167304269e-01 2.499862400e-01 6.528852206e-01 9.358832788e-01 1.100315971e+00 1.194132316e+00 - 1.222656906e+00 1.194132316e+00 1.100315971e+00 9.358832788e-01 6.528852206e-01 2.499862400e-01 - -3.167304269e-01 -1.013496361e+00 -1.555475503e+00 -1.748363517e+00 -1.555475503e+00 -1.013496361e+00 - 4.329329062e-01 7.308639113e-01 9.594433503e-01 1.098731978e+00 1.194132316e+00 1.234183067e+00 - 1.234183067e+00 1.194132316e+00 1.098731978e+00 9.594433503e-01 7.308639113e-01 4.329329062e-01 - 9.934167649e-02 -2.299594403e-01 -4.480641362e-01 -4.480641362e-01 -2.299594403e-01 9.934167649e-02 - 8.380484261e-01 9.870237318e-01 1.094930401e+00 1.176108745e+00 1.222656906e+00 1.234183067e+00 - 1.222656906e+00 1.176108745e+00 1.094930401e+00 9.870237318e-01 8.380484261e-01 6.495303394e-01 - 4.634713229e-01 3.322866790e-01 2.858679452e-01 3.322866790e-01 4.634713229e-01 6.495303394e-01 - 1.019185925e+00 1.093992270e+00 1.147828275e+00 1.176108745e+00 1.194132316e+00 1.194132316e+00 - 1.176108745e+00 1.147828275e+00 1.093992270e+00 1.019185925e+00 9.392496570e-01 8.514225078e-01 - 7.682897463e-01 7.165738953e-01 7.165738953e-01 7.682897463e-01 8.514225078e-01 9.392496570e-01 - 1.084400472e+00 1.093992270e+00 1.094930401e+00 1.098731978e+00 1.100315971e+00 1.098731978e+00 - 1.094930401e+00 1.093992270e+00 1.084400472e+00 1.056733293e+00 1.022462643e+00 9.974179707e-01 - 9.771197467e-01 9.643914735e-01 9.771197467e-01 9.974179707e-01 1.022462643e+00 1.056733293e+00 - 1.019185925e+00 9.870237318e-01 9.594433503e-01 9.358832788e-01 9.358832788e-01 9.594433503e-01 - 9.870237318e-01 1.019185925e+00 1.056733293e+00 1.086414223e+00 1.098047131e+00 1.101426237e+00 - 1.104783927e+00 1.104783927e+00 1.101426237e+00 1.098047131e+00 1.086414223e+00 1.056733293e+00 - 8.380484261e-01 7.308639113e-01 6.528852206e-01 6.265938397e-01 6.528852206e-01 7.308639113e-01 - 8.380484261e-01 9.392496570e-01 1.022462643e+00 1.098047131e+00 1.149639911e+00 1.173416309e+00 - 1.183675454e+00 1.173416309e+00 1.149639911e+00 1.098047131e+00 1.022462643e+00 9.392496570e-01 - 4.329329062e-01 2.499862400e-01 1.418925569e-01 1.418925569e-01 2.499862400e-01 4.329329062e-01 - 6.495303394e-01 8.514225078e-01 9.974179707e-01 1.101426237e+00 1.173416309e+00 1.203701774e+00 - 1.203701774e+00 1.173416309e+00 1.101426237e+00 9.974179707e-01 8.514225078e-01 6.495303394e-01 - -3.167304269e-01 -6.758660881e-01 -8.182718971e-01 -6.758660881e-01 -3.167304269e-01 9.934167649e-02 - 4.634713229e-01 7.682897463e-01 9.771197467e-01 1.104783927e+00 1.183675454e+00 1.203701774e+00 - 1.183675454e+00 1.104783927e+00 9.771197467e-01 7.682897463e-01 4.634713229e-01 9.934167649e-02 - -1.731196688e+00 -2.091379679e+00 -2.091379679e+00 -1.731196688e+00 -1.013496361e+00 -2.299594403e-01 - 3.322866790e-01 7.165738953e-01 9.643914735e-01 1.104783927e+00 1.173416309e+00 1.173416309e+00 - 1.104783927e+00 9.643914735e-01 7.165738953e-01 3.322866790e-01 -2.299594403e-01 -1.013496361e+00 - -2.897709599e+00 -2.968646894e+00 -2.897709599e+00 -2.500990004e+00 -1.555475503e+00 -4.480641362e-01 - 2.858679452e-01 7.165738953e-01 9.771197467e-01 1.101426237e+00 1.149639911e+00 1.101426237e+00 - 9.771197467e-01 7.165738953e-01 2.858679452e-01 -4.480641362e-01 -1.555475503e+00 -2.500990004e+00 - -3.168040888e+00 -3.168040888e+00 -3.126510933e+00 -2.798046014e+00 -1.748363517e+00 -4.480641362e-01 - 3.322866790e-01 7.682897463e-01 9.974179707e-01 1.098047131e+00 1.098047131e+00 9.974179707e-01 - 7.682897463e-01 3.322866790e-01 -4.480641362e-01 -1.748363517e+00 -2.798046014e+00 -3.126510933e+00 - -3.242906484e+00 -3.206568329e+00 -3.148949385e+00 -2.798046014e+00 -1.555475503e+00 -2.299594403e-01 - 4.634713229e-01 8.514225078e-01 1.022462643e+00 1.086414223e+00 1.022462643e+00 8.514225078e-01 - 4.634713229e-01 -2.299594403e-01 -1.555475503e+00 -2.798046014e+00 -3.148949385e+00 -3.206568329e+00 - -3.259958206e+00 -3.206568329e+00 -3.126510933e+00 -2.500990004e+00 -1.013496361e+00 9.934167649e-02 - 6.495303394e-01 9.392496570e-01 1.056733293e+00 1.056733293e+00 9.392496570e-01 6.495303394e-01 - 9.934167649e-02 -1.013496361e+00 -2.500990004e+00 -3.126510933e+00 -3.206568329e+00 -3.259958206e+00 - -3.166012873e+00 -2.811263827e+00 -1.731196688e+00 -4.248045340e-01 3.523457454e-01 7.815290589e-01 - 1.008963694e+00 1.110024431e+00 1.110024431e+00 1.008963694e+00 7.815290589e-01 3.523457454e-01 - -4.248045340e-01 -1.731196688e+00 -2.811263827e+00 -3.166012873e+00 -3.168040888e+00 -3.168040888e+00 - -2.811263827e+00 -1.917098600e+00 -6.758660881e-01 2.013583711e-01 6.804450493e-01 9.686080220e-01 - 1.099799059e+00 1.153649003e+00 1.099799059e+00 9.686080220e-01 6.804450493e-01 2.013583711e-01 - -6.758660881e-01 -1.917098600e+00 -2.811263827e+00 -3.099833569e+00 -3.126510933e+00 -3.099833569e+00 - -1.731196688e+00 -6.758660881e-01 1.418925569e-01 6.265938397e-01 9.358832788e-01 1.098731978e+00 - 1.176108745e+00 1.176108745e+00 1.098731978e+00 9.358832788e-01 6.265938397e-01 1.418925569e-01 - -6.758660881e-01 -1.731196688e+00 -2.500990004e+00 -2.798046014e+00 -2.798046014e+00 -2.500990004e+00 - -4.248045340e-01 2.013583711e-01 6.265938397e-01 9.206411871e-01 1.094531051e+00 1.191637226e+00 - 1.221593491e+00 1.191637226e+00 1.094531051e+00 9.206411871e-01 6.265938397e-01 2.013583711e-01 - -4.248045340e-01 -1.186604314e+00 -1.748363517e+00 -1.936557772e+00 -1.748363517e+00 -1.186604314e+00 - 3.523457454e-01 6.804450493e-01 9.358832788e-01 1.094531051e+00 1.197431990e+00 1.243125434e+00 - 1.243125434e+00 1.197431990e+00 1.094531051e+00 9.358832788e-01 6.804450493e-01 3.523457454e-01 - -4.122269552e-02 -4.480641362e-01 -7.098857793e-01 -7.098857793e-01 -4.480641362e-01 -4.122269552e-02 - 7.815290589e-01 9.686080220e-01 1.098731978e+00 1.191637226e+00 1.243125434e+00 1.255969842e+00 - 1.243125434e+00 1.191637226e+00 1.098731978e+00 9.686080220e-01 7.815290589e-01 5.533579927e-01 - 3.322866790e-01 1.635921203e-01 9.901426569e-02 1.635921203e-01 3.322866790e-01 5.533579927e-01 - 1.008963694e+00 1.099799059e+00 1.176108745e+00 1.221593491e+00 1.243125434e+00 1.243125434e+00 - 1.221593491e+00 1.176108745e+00 1.099799059e+00 1.008963694e+00 8.993044483e-01 7.682897463e-01 - 6.501781326e-01 5.877293229e-01 5.877293229e-01 6.501781326e-01 7.682897463e-01 8.993044483e-01 - 1.110024431e+00 1.153649003e+00 1.176108745e+00 1.191637226e+00 1.197431990e+00 1.191637226e+00 - 1.176108745e+00 1.153649003e+00 1.110024431e+00 1.052107507e+00 9.974179707e-01 9.438907282e-01 - 9.023069816e-01 8.865793167e-01 9.023069816e-01 9.438907282e-01 9.974179707e-01 1.052107507e+00 - 1.110024431e+00 1.099799059e+00 1.098731978e+00 1.094531051e+00 1.094531051e+00 1.098731978e+00 - 1.099799059e+00 1.110024431e+00 1.110866601e+00 1.098047131e+00 1.079285252e+00 1.069232947e+00 - 1.062116824e+00 1.062116824e+00 1.069232947e+00 1.079285252e+00 1.098047131e+00 1.110866601e+00 - 1.008963694e+00 9.686080220e-01 9.358832788e-01 9.206411871e-01 9.358832788e-01 9.686080220e-01 - 1.008963694e+00 1.052107507e+00 1.098047131e+00 1.134867296e+00 1.151066629e+00 1.161206667e+00 - 1.166298704e+00 1.161206667e+00 1.151066629e+00 1.134867296e+00 1.098047131e+00 1.052107507e+00 - 7.815290589e-01 6.804450493e-01 6.265938397e-01 6.265938397e-01 6.804450493e-01 7.815290589e-01 - 8.993044483e-01 9.974179707e-01 1.079285252e+00 1.151066629e+00 1.191278335e+00 1.212144334e+00 - 1.212144334e+00 1.191278335e+00 1.151066629e+00 1.079285252e+00 9.974179707e-01 8.993044483e-01 - 3.523457454e-01 2.013583711e-01 1.418925569e-01 2.013583711e-01 3.523457454e-01 5.533579927e-01 - 7.682897463e-01 9.438907282e-01 1.069232947e+00 1.161206667e+00 1.212144334e+00 1.226290582e+00 - 1.212144334e+00 1.161206667e+00 1.069232947e+00 9.438907282e-01 7.682897463e-01 5.533579927e-01 - -4.248045340e-01 -6.758660881e-01 -6.758660881e-01 -4.248045340e-01 -4.122269552e-02 3.322866790e-01 - 6.501781326e-01 9.023069816e-01 1.062116824e+00 1.166298704e+00 1.212144334e+00 1.212144334e+00 - 1.166298704e+00 1.062116824e+00 9.023069816e-01 6.501781326e-01 3.322866790e-01 -4.122269552e-02 - -1.731196688e+00 -1.917098600e+00 -1.731196688e+00 -1.186604314e+00 -4.480641362e-01 1.635921203e-01 - 5.877293229e-01 8.865793167e-01 1.062116824e+00 1.161206667e+00 1.191278335e+00 1.161206667e+00 - 1.062116824e+00 8.865793167e-01 5.877293229e-01 1.635921203e-01 -4.480641362e-01 -1.186604314e+00 - -2.811263827e+00 -2.811263827e+00 -2.500990004e+00 -1.748363517e+00 -7.098857793e-01 9.901426569e-02 - 5.877293229e-01 9.023069816e-01 1.069232947e+00 1.151066629e+00 1.151066629e+00 1.069232947e+00 - 9.023069816e-01 5.877293229e-01 9.901426569e-02 -7.098857793e-01 -1.748363517e+00 -2.500990004e+00 - -3.166012873e+00 -3.099833569e+00 -2.798046014e+00 -1.936557772e+00 -7.098857793e-01 1.635921203e-01 - 6.501781326e-01 9.438907282e-01 1.079285252e+00 1.134867296e+00 1.079285252e+00 9.438907282e-01 - 6.501781326e-01 1.635921203e-01 -7.098857793e-01 -1.936557772e+00 -2.798046014e+00 -3.099833569e+00 - -3.168040888e+00 -3.126510933e+00 -2.798046014e+00 -1.748363517e+00 -4.480641362e-01 3.322866790e-01 - 7.682897463e-01 9.974179707e-01 1.098047131e+00 1.098047131e+00 9.974179707e-01 7.682897463e-01 - 3.322866790e-01 -4.480641362e-01 -1.748363517e+00 -2.798046014e+00 -3.126510933e+00 -3.168040888e+00 - -3.168040888e+00 -3.099833569e+00 -2.500990004e+00 -1.186604314e+00 -4.122269552e-02 5.533579927e-01 - 8.993044483e-01 1.052107507e+00 1.110866601e+00 1.052107507e+00 8.993044483e-01 5.533579927e-01 - -4.122269552e-02 -1.186604314e+00 -2.500990004e+00 -3.099833569e+00 -3.168040888e+00 -3.149086912e+00 - -2.349289445e+00 -1.363678565e+00 -3.167304269e-01 3.523457454e-01 7.596747836e-01 1.004603663e+00 - 1.120222618e+00 1.166031428e+00 1.120222618e+00 1.004603663e+00 7.596747836e-01 3.523457454e-01 - -3.167304269e-01 -1.363678565e+00 -2.349289445e+00 -2.811263827e+00 -2.897709599e+00 -2.811263827e+00 - -1.363678565e+00 -4.275257482e-01 2.499862400e-01 6.804450493e-01 9.604823150e-01 1.107772587e+00 - 1.181735925e+00 1.181735925e+00 1.107772587e+00 9.604823150e-01 6.804450493e-01 2.499862400e-01 - -4.275257482e-01 -1.363678565e+00 -2.146241599e+00 -2.500990004e+00 -2.500990004e+00 -2.146241599e+00 - -3.167304269e-01 2.499862400e-01 6.528852206e-01 9.358832788e-01 1.100315971e+00 1.194132316e+00 - 1.222656906e+00 1.194132316e+00 1.100315971e+00 9.358832788e-01 6.528852206e-01 2.499862400e-01 - -3.167304269e-01 -1.013496361e+00 -1.555475503e+00 -1.748363517e+00 -1.555475503e+00 -1.013496361e+00 - 3.523457454e-01 6.804450493e-01 9.358832788e-01 1.094531051e+00 1.197431990e+00 1.243125434e+00 - 1.243125434e+00 1.197431990e+00 1.094531051e+00 9.358832788e-01 6.804450493e-01 3.523457454e-01 - -4.122269552e-02 -4.480641362e-01 -7.098857793e-01 -7.098857793e-01 -4.480641362e-01 -4.122269552e-02 - 7.596747836e-01 9.604823150e-01 1.100315971e+00 1.197431990e+00 1.253372102e+00 1.271122697e+00 - 1.253372102e+00 1.197431990e+00 1.100315971e+00 9.604823150e-01 7.596747836e-01 5.187647195e-01 - 2.858679452e-01 9.901426569e-02 2.404767180e-02 9.901426569e-02 2.858679452e-01 5.187647195e-01 - 1.004603663e+00 1.107772587e+00 1.194132316e+00 1.243125434e+00 1.271122697e+00 1.271122697e+00 - 1.243125434e+00 1.194132316e+00 1.107772587e+00 1.004603663e+00 8.675032008e-01 7.165738953e-01 - 5.877293229e-01 5.096287760e-01 5.096287760e-01 5.877293229e-01 7.165738953e-01 8.675032008e-01 - 1.120222618e+00 1.181735925e+00 1.222656906e+00 1.243125434e+00 1.253372102e+00 1.243125434e+00 - 1.222656906e+00 1.181735925e+00 1.120222618e+00 1.051249653e+00 9.771197467e-01 9.023069816e-01 - 8.445621675e-01 8.256589913e-01 8.445621675e-01 9.023069816e-01 9.771197467e-01 1.051249653e+00 - 1.166031428e+00 1.181735925e+00 1.194132316e+00 1.197431990e+00 1.197431990e+00 1.194132316e+00 - 1.181735925e+00 1.166031428e+00 1.136253020e+00 1.101426237e+00 1.069232947e+00 1.041763078e+00 - 1.024922193e+00 1.024922193e+00 1.041763078e+00 1.069232947e+00 1.101426237e+00 1.136253020e+00 - 1.120222618e+00 1.107772587e+00 1.100315971e+00 1.094531051e+00 1.100315971e+00 1.107772587e+00 - 1.120222618e+00 1.136253020e+00 1.149639911e+00 1.151066629e+00 1.148218391e+00 1.147820304e+00 - 1.143562349e+00 1.147820304e+00 1.148218391e+00 1.151066629e+00 1.149639911e+00 1.136253020e+00 - 1.004603663e+00 9.604823150e-01 9.358832788e-01 9.358832788e-01 9.604823150e-01 1.004603663e+00 - 1.051249653e+00 1.101426237e+00 1.151066629e+00 1.182887056e+00 1.203670723e+00 1.216784482e+00 - 1.216784482e+00 1.203670723e+00 1.182887056e+00 1.151066629e+00 1.101426237e+00 1.051249653e+00 - 7.596747836e-01 6.804450493e-01 6.528852206e-01 6.804450493e-01 7.596747836e-01 8.675032008e-01 - 9.771197467e-01 1.069232947e+00 1.148218391e+00 1.203670723e+00 1.234376786e+00 1.249960796e+00 - 1.234376786e+00 1.203670723e+00 1.148218391e+00 1.069232947e+00 9.771197467e-01 8.675032008e-01 - 3.523457454e-01 2.499862400e-01 2.499862400e-01 3.523457454e-01 5.187647195e-01 7.165738953e-01 - 9.023069816e-01 1.041763078e+00 1.147820304e+00 1.216784482e+00 1.249960796e+00 1.249960796e+00 - 1.216784482e+00 1.147820304e+00 1.041763078e+00 9.023069816e-01 7.165738953e-01 5.187647195e-01 - -3.167304269e-01 -4.275257482e-01 -3.167304269e-01 -4.122269552e-02 2.858679452e-01 5.877293229e-01 - 8.445621675e-01 1.024922193e+00 1.143562349e+00 1.216784482e+00 1.234376786e+00 1.216784482e+00 - 1.143562349e+00 1.024922193e+00 8.445621675e-01 5.877293229e-01 2.858679452e-01 -4.122269552e-02 - -1.363678565e+00 -1.363678565e+00 -1.013496361e+00 -4.480641362e-01 9.901426569e-02 5.096287760e-01 - 8.256589913e-01 1.024922193e+00 1.147820304e+00 1.203670723e+00 1.203670723e+00 1.147820304e+00 - 1.024922193e+00 8.256589913e-01 5.096287760e-01 9.901426569e-02 -4.480641362e-01 -1.013496361e+00 - -2.349289445e+00 -2.146241599e+00 -1.555475503e+00 -7.098857793e-01 2.404767180e-02 5.096287760e-01 - 8.445621675e-01 1.041763078e+00 1.148218391e+00 1.182887056e+00 1.148218391e+00 1.041763078e+00 - 8.445621675e-01 5.096287760e-01 2.404767180e-02 -7.098857793e-01 -1.555475503e+00 -2.146241599e+00 - -2.811263827e+00 -2.500990004e+00 -1.748363517e+00 -7.098857793e-01 9.901426569e-02 5.877293229e-01 - 9.023069816e-01 1.069232947e+00 1.151066629e+00 1.151066629e+00 1.069232947e+00 9.023069816e-01 - 5.877293229e-01 9.901426569e-02 -7.098857793e-01 -1.748363517e+00 -2.500990004e+00 -2.811263827e+00 - -2.897709599e+00 -2.500990004e+00 -1.555475503e+00 -4.480641362e-01 2.858679452e-01 7.165738953e-01 - 9.771197467e-01 1.101426237e+00 1.149639911e+00 1.101426237e+00 9.771197467e-01 7.165738953e-01 - 2.858679452e-01 -4.480641362e-01 -1.555475503e+00 -2.500990004e+00 -2.897709599e+00 -2.968646894e+00 - -2.811263827e+00 -2.146241599e+00 -1.013496361e+00 -4.122269552e-02 5.187647195e-01 8.675032008e-01 - 1.051249653e+00 1.136253020e+00 1.136253020e+00 1.051249653e+00 8.675032008e-01 5.187647195e-01 - -4.122269552e-02 -1.013496361e+00 -2.146241599e+00 -2.811263827e+00 -2.968646894e+00 -2.968646894e+00 - -7.107805182e-01 -4.762534696e-02 4.329329062e-01 7.815290589e-01 1.004603663e+00 1.129418840e+00 - 1.189160730e+00 1.189160730e+00 1.129418840e+00 1.004603663e+00 7.815290589e-01 4.329329062e-01 - -4.762534696e-02 -7.107805182e-01 -1.363678565e+00 -1.731196688e+00 -1.731196688e+00 -1.363678565e+00 - -4.762534696e-02 3.890026417e-01 7.308639113e-01 9.686080220e-01 1.107772587e+00 1.192455445e+00 - 1.215727713e+00 1.192455445e+00 1.107772587e+00 9.686080220e-01 7.308639113e-01 3.890026417e-01 - -4.762534696e-02 -5.713853056e-01 -1.013496361e+00 -1.186604314e+00 -1.013496361e+00 -5.713853056e-01 - 4.329329062e-01 7.308639113e-01 9.594433503e-01 1.098731978e+00 1.194132316e+00 1.234183067e+00 - 1.234183067e+00 1.194132316e+00 1.098731978e+00 9.594433503e-01 7.308639113e-01 4.329329062e-01 - 9.934167649e-02 -2.299594403e-01 -4.480641362e-01 -4.480641362e-01 -2.299594403e-01 9.934167649e-02 - 7.815290589e-01 9.686080220e-01 1.098731978e+00 1.191637226e+00 1.243125434e+00 1.255969842e+00 - 1.243125434e+00 1.191637226e+00 1.098731978e+00 9.686080220e-01 7.815290589e-01 5.533579927e-01 - 3.322866790e-01 1.635921203e-01 9.901426569e-02 1.635921203e-01 3.322866790e-01 5.533579927e-01 - 1.004603663e+00 1.107772587e+00 1.194132316e+00 1.243125434e+00 1.271122697e+00 1.271122697e+00 - 1.243125434e+00 1.194132316e+00 1.107772587e+00 1.004603663e+00 8.675032008e-01 7.165738953e-01 - 5.877293229e-01 5.096287760e-01 5.096287760e-01 5.877293229e-01 7.165738953e-01 8.675032008e-01 - 1.129418840e+00 1.192455445e+00 1.234183067e+00 1.255969842e+00 1.271122697e+00 1.255969842e+00 - 1.234183067e+00 1.192455445e+00 1.129418840e+00 1.052430419e+00 9.643914735e-01 8.865793167e-01 - 8.256589913e-01 8.035573959e-01 8.256589913e-01 8.865793167e-01 9.643914735e-01 1.052430419e+00 - 1.189160730e+00 1.215727713e+00 1.234183067e+00 1.243125434e+00 1.243125434e+00 1.234183067e+00 - 1.215727713e+00 1.189160730e+00 1.151907167e+00 1.104783927e+00 1.062116824e+00 1.024922193e+00 - 1.006613110e+00 1.006613110e+00 1.024922193e+00 1.062116824e+00 1.104783927e+00 1.151907167e+00 - 1.189160730e+00 1.192455445e+00 1.194132316e+00 1.191637226e+00 1.194132316e+00 1.192455445e+00 - 1.189160730e+00 1.184158268e+00 1.173416309e+00 1.161206667e+00 1.147820304e+00 1.135296667e+00 - 1.128812004e+00 1.135296667e+00 1.147820304e+00 1.161206667e+00 1.173416309e+00 1.184158268e+00 - 1.129418840e+00 1.107772587e+00 1.098731978e+00 1.098731978e+00 1.107772587e+00 1.129418840e+00 - 1.151907167e+00 1.173416309e+00 1.191278335e+00 1.203670723e+00 1.218227799e+00 1.217537257e+00 - 1.217537257e+00 1.218227799e+00 1.203670723e+00 1.191278335e+00 1.173416309e+00 1.151907167e+00 - 1.004603663e+00 9.686080220e-01 9.594433503e-01 9.686080220e-01 1.004603663e+00 1.052430419e+00 - 1.104783927e+00 1.161206667e+00 1.203670723e+00 1.236118215e+00 1.256884277e+00 1.262601881e+00 - 1.256884277e+00 1.236118215e+00 1.203670723e+00 1.161206667e+00 1.104783927e+00 1.052430419e+00 - 7.815290589e-01 7.308639113e-01 7.308639113e-01 7.815290589e-01 8.675032008e-01 9.643914735e-01 - 1.062116824e+00 1.147820304e+00 1.218227799e+00 1.256884277e+00 1.280741853e+00 1.280741853e+00 - 1.256884277e+00 1.218227799e+00 1.147820304e+00 1.062116824e+00 9.643914735e-01 8.675032008e-01 - 4.329329062e-01 3.890026417e-01 4.329329062e-01 5.533579927e-01 7.165738953e-01 8.865793167e-01 - 1.024922193e+00 1.135296667e+00 1.217537257e+00 1.262601881e+00 1.280741853e+00 1.262601881e+00 - 1.217537257e+00 1.135296667e+00 1.024922193e+00 8.865793167e-01 7.165738953e-01 5.533579927e-01 - -4.762534696e-02 -4.762534696e-02 9.934167649e-02 3.322866790e-01 5.877293229e-01 8.256589913e-01 - 1.006613110e+00 1.128812004e+00 1.217537257e+00 1.256884277e+00 1.256884277e+00 1.217537257e+00 - 1.128812004e+00 1.006613110e+00 8.256589913e-01 5.877293229e-01 3.322866790e-01 9.934167649e-02 - -7.107805182e-01 -5.713853056e-01 -2.299594403e-01 1.635921203e-01 5.096287760e-01 8.035573959e-01 - 1.006613110e+00 1.135296667e+00 1.218227799e+00 1.236118215e+00 1.218227799e+00 1.135296667e+00 - 1.006613110e+00 8.035573959e-01 5.096287760e-01 1.635921203e-01 -2.299594403e-01 -5.713853056e-01 - -1.363678565e+00 -1.013496361e+00 -4.480641362e-01 9.901426569e-02 5.096287760e-01 8.256589913e-01 - 1.024922193e+00 1.147820304e+00 1.203670723e+00 1.203670723e+00 1.147820304e+00 1.024922193e+00 - 8.256589913e-01 5.096287760e-01 9.901426569e-02 -4.480641362e-01 -1.013496361e+00 -1.363678565e+00 - -1.731196688e+00 -1.186604314e+00 -4.480641362e-01 1.635921203e-01 5.877293229e-01 8.865793167e-01 - 1.062116824e+00 1.161206667e+00 1.191278335e+00 1.161206667e+00 1.062116824e+00 8.865793167e-01 - 5.877293229e-01 1.635921203e-01 -4.480641362e-01 -1.186604314e+00 -1.731196688e+00 -1.917098600e+00 - -1.731196688e+00 -1.013496361e+00 -2.299594403e-01 3.322866790e-01 7.165738953e-01 9.643914735e-01 - 1.104783927e+00 1.173416309e+00 1.173416309e+00 1.104783927e+00 9.643914735e-01 7.165738953e-01 - 3.322866790e-01 -2.299594403e-01 -1.013496361e+00 -1.731196688e+00 -2.091379679e+00 -2.091379679e+00 - -1.363678565e+00 -5.713853056e-01 9.934167649e-02 5.533579927e-01 8.675032008e-01 1.052430419e+00 - 1.151907167e+00 1.184158268e+00 1.151907167e+00 1.052430419e+00 8.675032008e-01 5.533579927e-01 - 9.934167649e-02 -5.713853056e-01 -1.363678565e+00 -1.917098600e+00 -2.091379679e+00 -1.917098600e+00 - 2.759033881e-01 5.819872684e-01 8.380484261e-01 1.008963694e+00 1.120222618e+00 1.189160730e+00 - 1.205280147e+00 1.189160730e+00 1.120222618e+00 1.008963694e+00 8.380484261e-01 5.819872684e-01 - 2.759033881e-01 -4.762534696e-02 -3.167304269e-01 -4.248045340e-01 -3.167304269e-01 -4.762534696e-02 - 5.819872684e-01 8.163506452e-01 9.870237318e-01 1.099799059e+00 1.181735925e+00 1.215727713e+00 - 1.215727713e+00 1.181735925e+00 1.099799059e+00 9.870237318e-01 8.163506452e-01 5.819872684e-01 - 3.257521627e-01 9.934167649e-02 -4.122269552e-02 -4.122269552e-02 9.934167649e-02 3.257521627e-01 - 8.380484261e-01 9.870237318e-01 1.094930401e+00 1.176108745e+00 1.222656906e+00 1.234183067e+00 - 1.222656906e+00 1.176108745e+00 1.094930401e+00 9.870237318e-01 8.380484261e-01 6.495303394e-01 - 4.634713229e-01 3.322866790e-01 2.858679452e-01 3.322866790e-01 4.634713229e-01 6.495303394e-01 - 1.008963694e+00 1.099799059e+00 1.176108745e+00 1.221593491e+00 1.243125434e+00 1.243125434e+00 - 1.221593491e+00 1.176108745e+00 1.099799059e+00 1.008963694e+00 8.993044483e-01 7.682897463e-01 - 6.501781326e-01 5.877293229e-01 5.877293229e-01 6.501781326e-01 7.682897463e-01 8.993044483e-01 - 1.120222618e+00 1.181735925e+00 1.222656906e+00 1.243125434e+00 1.253372102e+00 1.243125434e+00 - 1.222656906e+00 1.181735925e+00 1.120222618e+00 1.051249653e+00 9.771197467e-01 9.023069816e-01 - 8.445621675e-01 8.256589913e-01 8.445621675e-01 9.023069816e-01 9.771197467e-01 1.051249653e+00 - 1.189160730e+00 1.215727713e+00 1.234183067e+00 1.243125434e+00 1.243125434e+00 1.234183067e+00 - 1.215727713e+00 1.189160730e+00 1.151907167e+00 1.104783927e+00 1.062116824e+00 1.024922193e+00 - 1.006613110e+00 1.006613110e+00 1.024922193e+00 1.062116824e+00 1.104783927e+00 1.151907167e+00 - 1.205280147e+00 1.215727713e+00 1.222656906e+00 1.221593491e+00 1.222656906e+00 1.215727713e+00 - 1.205280147e+00 1.197552582e+00 1.183675454e+00 1.166298704e+00 1.143562349e+00 1.128812004e+00 - 1.128025785e+00 1.128812004e+00 1.143562349e+00 1.166298704e+00 1.183675454e+00 1.197552582e+00 - 1.189160730e+00 1.181735925e+00 1.176108745e+00 1.176108745e+00 1.181735925e+00 1.189160730e+00 - 1.197552582e+00 1.203701774e+00 1.212144334e+00 1.216784482e+00 1.217537257e+00 1.219339666e+00 - 1.219339666e+00 1.217537257e+00 1.216784482e+00 1.212144334e+00 1.203701774e+00 1.197552582e+00 - 1.120222618e+00 1.099799059e+00 1.094930401e+00 1.099799059e+00 1.120222618e+00 1.151907167e+00 - 1.183675454e+00 1.212144334e+00 1.234376786e+00 1.256884277e+00 1.271231743e+00 1.272473931e+00 - 1.271231743e+00 1.256884277e+00 1.234376786e+00 1.212144334e+00 1.183675454e+00 1.151907167e+00 - 1.008963694e+00 9.870237318e-01 9.870237318e-01 1.008963694e+00 1.051249653e+00 1.104783927e+00 - 1.166298704e+00 1.216784482e+00 1.256884277e+00 1.286719282e+00 1.300250521e+00 1.300250521e+00 - 1.286719282e+00 1.256884277e+00 1.216784482e+00 1.166298704e+00 1.104783927e+00 1.051249653e+00 - 8.380484261e-01 8.163506452e-01 8.380484261e-01 8.993044483e-01 9.771197467e-01 1.062116824e+00 - 1.143562349e+00 1.217537257e+00 1.271231743e+00 1.300250521e+00 1.314844217e+00 1.300250521e+00 - 1.271231743e+00 1.217537257e+00 1.143562349e+00 1.062116824e+00 9.771197467e-01 8.993044483e-01 - 5.819872684e-01 5.819872684e-01 6.495303394e-01 7.682897463e-01 9.023069816e-01 1.024922193e+00 - 1.128812004e+00 1.219339666e+00 1.272473931e+00 1.300250521e+00 1.300250521e+00 1.272473931e+00 - 1.219339666e+00 1.128812004e+00 1.024922193e+00 9.023069816e-01 7.682897463e-01 6.495303394e-01 - 2.759033881e-01 3.257521627e-01 4.634713229e-01 6.501781326e-01 8.445621675e-01 1.006613110e+00 - 1.128025785e+00 1.219339666e+00 1.271231743e+00 1.286719282e+00 1.271231743e+00 1.219339666e+00 - 1.128025785e+00 1.006613110e+00 8.445621675e-01 6.501781326e-01 4.634713229e-01 3.257521627e-01 - -4.762534696e-02 9.934167649e-02 3.322866790e-01 5.877293229e-01 8.256589913e-01 1.006613110e+00 - 1.128812004e+00 1.217537257e+00 1.256884277e+00 1.256884277e+00 1.217537257e+00 1.128812004e+00 - 1.006613110e+00 8.256589913e-01 5.877293229e-01 3.322866790e-01 9.934167649e-02 -4.762534696e-02 - -3.167304269e-01 -4.122269552e-02 2.858679452e-01 5.877293229e-01 8.445621675e-01 1.024922193e+00 - 1.143562349e+00 1.216784482e+00 1.234376786e+00 1.216784482e+00 1.143562349e+00 1.024922193e+00 - 8.445621675e-01 5.877293229e-01 2.858679452e-01 -4.122269552e-02 -3.167304269e-01 -4.275257482e-01 - -4.248045340e-01 -4.122269552e-02 3.322866790e-01 6.501781326e-01 9.023069816e-01 1.062116824e+00 - 1.166298704e+00 1.212144334e+00 1.212144334e+00 1.166298704e+00 1.062116824e+00 9.023069816e-01 - 6.501781326e-01 3.322866790e-01 -4.122269552e-02 -4.248045340e-01 -6.758660881e-01 -6.758660881e-01 - -3.167304269e-01 9.934167649e-02 4.634713229e-01 7.682897463e-01 9.771197467e-01 1.104783927e+00 - 1.183675454e+00 1.203701774e+00 1.183675454e+00 1.104783927e+00 9.771197467e-01 7.682897463e-01 - 4.634713229e-01 9.934167649e-02 -3.167304269e-01 -6.758660881e-01 -8.182718971e-01 -6.758660881e-01 - -4.762534696e-02 3.257521627e-01 6.495303394e-01 8.993044483e-01 1.051249653e+00 1.151907167e+00 - 1.197552582e+00 1.197552582e+00 1.151907167e+00 1.051249653e+00 8.993044483e-01 6.495303394e-01 - 3.257521627e-01 -4.762534696e-02 -4.275257482e-01 -6.758660881e-01 -6.758660881e-01 -4.275257482e-01 - 7.553845437e-01 9.052606610e-01 1.019185925e+00 1.110024431e+00 1.166031428e+00 1.189160730e+00 - 1.189160730e+00 1.166031428e+00 1.110024431e+00 1.019185925e+00 9.052606610e-01 7.553845437e-01 - 5.819872684e-01 4.329329062e-01 3.523457454e-01 3.523457454e-01 4.329329062e-01 5.819872684e-01 - 9.052606610e-01 1.006361962e+00 1.093992270e+00 1.153649003e+00 1.181735925e+00 1.192455445e+00 - 1.181735925e+00 1.153649003e+00 1.093992270e+00 1.006361962e+00 9.052606610e-01 7.803048748e-01 - 6.495303394e-01 5.533579927e-01 5.187647195e-01 5.533579927e-01 6.495303394e-01 7.803048748e-01 - 1.019185925e+00 1.093992270e+00 1.147828275e+00 1.176108745e+00 1.194132316e+00 1.194132316e+00 - 1.176108745e+00 1.147828275e+00 1.093992270e+00 1.019185925e+00 9.392496570e-01 8.514225078e-01 - 7.682897463e-01 7.165738953e-01 7.165738953e-01 7.682897463e-01 8.514225078e-01 9.392496570e-01 - 1.110024431e+00 1.153649003e+00 1.176108745e+00 1.191637226e+00 1.197431990e+00 1.191637226e+00 - 1.176108745e+00 1.153649003e+00 1.110024431e+00 1.052107507e+00 9.974179707e-01 9.438907282e-01 - 9.023069816e-01 8.865793167e-01 9.023069816e-01 9.438907282e-01 9.974179707e-01 1.052107507e+00 - 1.166031428e+00 1.181735925e+00 1.194132316e+00 1.197431990e+00 1.197431990e+00 1.194132316e+00 - 1.181735925e+00 1.166031428e+00 1.136253020e+00 1.101426237e+00 1.069232947e+00 1.041763078e+00 - 1.024922193e+00 1.024922193e+00 1.041763078e+00 1.069232947e+00 1.101426237e+00 1.136253020e+00 - 1.189160730e+00 1.192455445e+00 1.194132316e+00 1.191637226e+00 1.194132316e+00 1.192455445e+00 - 1.189160730e+00 1.184158268e+00 1.173416309e+00 1.161206667e+00 1.147820304e+00 1.135296667e+00 - 1.128812004e+00 1.135296667e+00 1.147820304e+00 1.161206667e+00 1.173416309e+00 1.184158268e+00 - 1.189160730e+00 1.181735925e+00 1.176108745e+00 1.176108745e+00 1.181735925e+00 1.189160730e+00 - 1.197552582e+00 1.203701774e+00 1.212144334e+00 1.216784482e+00 1.217537257e+00 1.219339666e+00 - 1.219339666e+00 1.217537257e+00 1.216784482e+00 1.212144334e+00 1.203701774e+00 1.197552582e+00 - 1.166031428e+00 1.153649003e+00 1.147828275e+00 1.153649003e+00 1.166031428e+00 1.184158268e+00 - 1.203701774e+00 1.226290582e+00 1.249960796e+00 1.262601881e+00 1.272473931e+00 1.278764666e+00 - 1.272473931e+00 1.262601881e+00 1.249960796e+00 1.226290582e+00 1.203701774e+00 1.184158268e+00 - 1.110024431e+00 1.093992270e+00 1.093992270e+00 1.110024431e+00 1.136253020e+00 1.173416309e+00 - 1.212144334e+00 1.249960796e+00 1.280741853e+00 1.300250521e+00 1.311117444e+00 1.311117444e+00 - 1.300250521e+00 1.280741853e+00 1.249960796e+00 1.212144334e+00 1.173416309e+00 1.136253020e+00 - 1.019185925e+00 1.006361962e+00 1.019185925e+00 1.052107507e+00 1.101426237e+00 1.161206667e+00 - 1.216784482e+00 1.262601881e+00 1.300250521e+00 1.326156066e+00 1.335211876e+00 1.326156066e+00 - 1.300250521e+00 1.262601881e+00 1.216784482e+00 1.161206667e+00 1.101426237e+00 1.052107507e+00 - 9.052606610e-01 9.052606610e-01 9.392496570e-01 9.974179707e-01 1.069232947e+00 1.147820304e+00 - 1.217537257e+00 1.272473931e+00 1.311117444e+00 1.335211876e+00 1.335211876e+00 1.311117444e+00 - 1.272473931e+00 1.217537257e+00 1.147820304e+00 1.069232947e+00 9.974179707e-01 9.392496570e-01 - 7.553845437e-01 7.803048748e-01 8.514225078e-01 9.438907282e-01 1.041763078e+00 1.135296667e+00 - 1.219339666e+00 1.278764666e+00 1.311117444e+00 1.326156066e+00 1.311117444e+00 1.278764666e+00 - 1.219339666e+00 1.135296667e+00 1.041763078e+00 9.438907282e-01 8.514225078e-01 7.803048748e-01 - 5.819872684e-01 6.495303394e-01 7.682897463e-01 9.023069816e-01 1.024922193e+00 1.128812004e+00 - 1.219339666e+00 1.272473931e+00 1.300250521e+00 1.300250521e+00 1.272473931e+00 1.219339666e+00 - 1.128812004e+00 1.024922193e+00 9.023069816e-01 7.682897463e-01 6.495303394e-01 5.819872684e-01 - 4.329329062e-01 5.533579927e-01 7.165738953e-01 8.865793167e-01 1.024922193e+00 1.135296667e+00 - 1.217537257e+00 1.262601881e+00 1.280741853e+00 1.262601881e+00 1.217537257e+00 1.135296667e+00 - 1.024922193e+00 8.865793167e-01 7.165738953e-01 5.533579927e-01 4.329329062e-01 3.890026417e-01 - 3.523457454e-01 5.187647195e-01 7.165738953e-01 9.023069816e-01 1.041763078e+00 1.147820304e+00 - 1.216784482e+00 1.249960796e+00 1.249960796e+00 1.216784482e+00 1.147820304e+00 1.041763078e+00 - 9.023069816e-01 7.165738953e-01 5.187647195e-01 3.523457454e-01 2.499862400e-01 2.499862400e-01 - 3.523457454e-01 5.533579927e-01 7.682897463e-01 9.438907282e-01 1.069232947e+00 1.161206667e+00 - 1.212144334e+00 1.226290582e+00 1.212144334e+00 1.161206667e+00 1.069232947e+00 9.438907282e-01 - 7.682897463e-01 5.533579927e-01 3.523457454e-01 2.013583711e-01 1.418925569e-01 2.013583711e-01 - 4.329329062e-01 6.495303394e-01 8.514225078e-01 9.974179707e-01 1.101426237e+00 1.173416309e+00 - 1.203701774e+00 1.203701774e+00 1.173416309e+00 1.101426237e+00 9.974179707e-01 8.514225078e-01 - 6.495303394e-01 4.329329062e-01 2.499862400e-01 1.418925569e-01 1.418925569e-01 2.499862400e-01 - 5.819872684e-01 7.803048748e-01 9.392496570e-01 1.052107507e+00 1.136253020e+00 1.184158268e+00 - 1.197552582e+00 1.184158268e+00 1.136253020e+00 1.052107507e+00 9.392496570e-01 7.803048748e-01 - 5.819872684e-01 3.890026417e-01 2.499862400e-01 2.013583711e-01 2.499862400e-01 3.890026417e-01 - 9.730729696e-01 1.034058306e+00 1.084400472e+00 1.110024431e+00 1.120222618e+00 1.129418840e+00 - 1.120222618e+00 1.110024431e+00 1.084400472e+00 1.034058306e+00 9.730729696e-01 9.052606610e-01 - 8.380484261e-01 7.815290589e-01 7.596747836e-01 7.815290589e-01 8.380484261e-01 9.052606610e-01 - 1.034058306e+00 1.071693210e+00 1.093992270e+00 1.099799059e+00 1.107772587e+00 1.107772587e+00 - 1.099799059e+00 1.093992270e+00 1.071693210e+00 1.034058306e+00 9.859929667e-01 9.392496570e-01 - 8.993044483e-01 8.675032008e-01 8.675032008e-01 8.993044483e-01 9.392496570e-01 9.859929667e-01 - 1.084400472e+00 1.093992270e+00 1.094930401e+00 1.098731978e+00 1.100315971e+00 1.098731978e+00 - 1.094930401e+00 1.093992270e+00 1.084400472e+00 1.056733293e+00 1.022462643e+00 9.974179707e-01 - 9.771197467e-01 9.643914735e-01 9.771197467e-01 9.974179707e-01 1.022462643e+00 1.056733293e+00 - 1.110024431e+00 1.099799059e+00 1.098731978e+00 1.094531051e+00 1.094531051e+00 1.098731978e+00 - 1.099799059e+00 1.110024431e+00 1.110866601e+00 1.098047131e+00 1.079285252e+00 1.069232947e+00 - 1.062116824e+00 1.062116824e+00 1.069232947e+00 1.079285252e+00 1.098047131e+00 1.110866601e+00 - 1.120222618e+00 1.107772587e+00 1.100315971e+00 1.094531051e+00 1.100315971e+00 1.107772587e+00 - 1.120222618e+00 1.136253020e+00 1.149639911e+00 1.151066629e+00 1.148218391e+00 1.147820304e+00 - 1.143562349e+00 1.147820304e+00 1.148218391e+00 1.151066629e+00 1.149639911e+00 1.136253020e+00 - 1.129418840e+00 1.107772587e+00 1.098731978e+00 1.098731978e+00 1.107772587e+00 1.129418840e+00 - 1.151907167e+00 1.173416309e+00 1.191278335e+00 1.203670723e+00 1.218227799e+00 1.217537257e+00 - 1.217537257e+00 1.218227799e+00 1.203670723e+00 1.191278335e+00 1.173416309e+00 1.151907167e+00 - 1.120222618e+00 1.099799059e+00 1.094930401e+00 1.099799059e+00 1.120222618e+00 1.151907167e+00 - 1.183675454e+00 1.212144334e+00 1.234376786e+00 1.256884277e+00 1.271231743e+00 1.272473931e+00 - 1.271231743e+00 1.256884277e+00 1.234376786e+00 1.212144334e+00 1.183675454e+00 1.151907167e+00 - 1.110024431e+00 1.093992270e+00 1.093992270e+00 1.110024431e+00 1.136253020e+00 1.173416309e+00 - 1.212144334e+00 1.249960796e+00 1.280741853e+00 1.300250521e+00 1.311117444e+00 1.311117444e+00 - 1.300250521e+00 1.280741853e+00 1.249960796e+00 1.212144334e+00 1.173416309e+00 1.136253020e+00 - 1.084400472e+00 1.071693210e+00 1.084400472e+00 1.110866601e+00 1.149639911e+00 1.191278335e+00 - 1.234376786e+00 1.280741853e+00 1.314844217e+00 1.335211876e+00 1.341367770e+00 1.335211876e+00 - 1.314844217e+00 1.280741853e+00 1.234376786e+00 1.191278335e+00 1.149639911e+00 1.110866601e+00 - 1.034058306e+00 1.034058306e+00 1.056733293e+00 1.098047131e+00 1.151066629e+00 1.203670723e+00 - 1.256884277e+00 1.300250521e+00 1.335211876e+00 1.350387141e+00 1.350387141e+00 1.335211876e+00 - 1.300250521e+00 1.256884277e+00 1.203670723e+00 1.151066629e+00 1.098047131e+00 1.056733293e+00 - 9.730729696e-01 9.859929667e-01 1.022462643e+00 1.079285252e+00 1.148218391e+00 1.218227799e+00 - 1.271231743e+00 1.311117444e+00 1.341367770e+00 1.350387141e+00 1.341367770e+00 1.311117444e+00 - 1.271231743e+00 1.218227799e+00 1.148218391e+00 1.079285252e+00 1.022462643e+00 9.859929667e-01 - 9.052606610e-01 9.392496570e-01 9.974179707e-01 1.069232947e+00 1.147820304e+00 1.217537257e+00 - 1.272473931e+00 1.311117444e+00 1.335211876e+00 1.335211876e+00 1.311117444e+00 1.272473931e+00 - 1.217537257e+00 1.147820304e+00 1.069232947e+00 9.974179707e-01 9.392496570e-01 9.052606610e-01 - 8.380484261e-01 8.993044483e-01 9.771197467e-01 1.062116824e+00 1.143562349e+00 1.217537257e+00 - 1.271231743e+00 1.300250521e+00 1.314844217e+00 1.300250521e+00 1.271231743e+00 1.217537257e+00 - 1.143562349e+00 1.062116824e+00 9.771197467e-01 8.993044483e-01 8.380484261e-01 8.163506452e-01 - 7.815290589e-01 8.675032008e-01 9.643914735e-01 1.062116824e+00 1.147820304e+00 1.218227799e+00 - 1.256884277e+00 1.280741853e+00 1.280741853e+00 1.256884277e+00 1.218227799e+00 1.147820304e+00 - 1.062116824e+00 9.643914735e-01 8.675032008e-01 7.815290589e-01 7.308639113e-01 7.308639113e-01 - 7.596747836e-01 8.675032008e-01 9.771197467e-01 1.069232947e+00 1.148218391e+00 1.203670723e+00 - 1.234376786e+00 1.249960796e+00 1.234376786e+00 1.203670723e+00 1.148218391e+00 1.069232947e+00 - 9.771197467e-01 8.675032008e-01 7.596747836e-01 6.804450493e-01 6.528852206e-01 6.804450493e-01 - 7.815290589e-01 8.993044483e-01 9.974179707e-01 1.079285252e+00 1.151066629e+00 1.191278335e+00 - 1.212144334e+00 1.212144334e+00 1.191278335e+00 1.151066629e+00 1.079285252e+00 9.974179707e-01 - 8.993044483e-01 7.815290589e-01 6.804450493e-01 6.265938397e-01 6.265938397e-01 6.804450493e-01 - 8.380484261e-01 9.392496570e-01 1.022462643e+00 1.098047131e+00 1.149639911e+00 1.173416309e+00 - 1.183675454e+00 1.173416309e+00 1.149639911e+00 1.098047131e+00 1.022462643e+00 9.392496570e-01 - 8.380484261e-01 7.308639113e-01 6.528852206e-01 6.265938397e-01 6.528852206e-01 7.308639113e-01 - 9.052606610e-01 9.859929667e-01 1.056733293e+00 1.110866601e+00 1.136253020e+00 1.151907167e+00 - 1.151907167e+00 1.136253020e+00 1.110866601e+00 1.056733293e+00 9.859929667e-01 9.052606610e-01 - 8.163506452e-01 7.308639113e-01 6.804450493e-01 6.804450493e-01 7.308639113e-01 8.163506452e-01 - 1.045143285e+00 1.034058306e+00 1.019185925e+00 1.008963694e+00 1.004603663e+00 1.004603663e+00 - 1.008963694e+00 1.019185925e+00 1.034058306e+00 1.045143285e+00 1.034058306e+00 1.019185925e+00 - 1.008963694e+00 1.004603663e+00 1.004603663e+00 1.008963694e+00 1.019185925e+00 1.034058306e+00 - 1.034058306e+00 1.006361962e+00 9.870237318e-01 9.686080220e-01 9.604823150e-01 9.686080220e-01 - 9.870237318e-01 1.006361962e+00 1.034058306e+00 1.056013441e+00 1.056733293e+00 1.052107507e+00 - 1.051249653e+00 1.052430419e+00 1.051249653e+00 1.052107507e+00 1.056733293e+00 1.056013441e+00 - 1.019185925e+00 9.870237318e-01 9.594433503e-01 9.358832788e-01 9.358832788e-01 9.594433503e-01 - 9.870237318e-01 1.019185925e+00 1.056733293e+00 1.086414223e+00 1.098047131e+00 1.101426237e+00 - 1.104783927e+00 1.104783927e+00 1.101426237e+00 1.098047131e+00 1.086414223e+00 1.056733293e+00 - 1.008963694e+00 9.686080220e-01 9.358832788e-01 9.206411871e-01 9.358832788e-01 9.686080220e-01 - 1.008963694e+00 1.052107507e+00 1.098047131e+00 1.134867296e+00 1.151066629e+00 1.161206667e+00 - 1.166298704e+00 1.161206667e+00 1.151066629e+00 1.134867296e+00 1.098047131e+00 1.052107507e+00 - 1.004603663e+00 9.604823150e-01 9.358832788e-01 9.358832788e-01 9.604823150e-01 1.004603663e+00 - 1.051249653e+00 1.101426237e+00 1.151066629e+00 1.182887056e+00 1.203670723e+00 1.216784482e+00 - 1.216784482e+00 1.203670723e+00 1.182887056e+00 1.151066629e+00 1.101426237e+00 1.051249653e+00 - 1.004603663e+00 9.686080220e-01 9.594433503e-01 9.686080220e-01 1.004603663e+00 1.052430419e+00 - 1.104783927e+00 1.161206667e+00 1.203670723e+00 1.236118215e+00 1.256884277e+00 1.262601881e+00 - 1.256884277e+00 1.236118215e+00 1.203670723e+00 1.161206667e+00 1.104783927e+00 1.052430419e+00 - 1.008963694e+00 9.870237318e-01 9.870237318e-01 1.008963694e+00 1.051249653e+00 1.104783927e+00 - 1.166298704e+00 1.216784482e+00 1.256884277e+00 1.286719282e+00 1.300250521e+00 1.300250521e+00 - 1.286719282e+00 1.256884277e+00 1.216784482e+00 1.166298704e+00 1.104783927e+00 1.051249653e+00 - 1.019185925e+00 1.006361962e+00 1.019185925e+00 1.052107507e+00 1.101426237e+00 1.161206667e+00 - 1.216784482e+00 1.262601881e+00 1.300250521e+00 1.326156066e+00 1.335211876e+00 1.326156066e+00 - 1.300250521e+00 1.262601881e+00 1.216784482e+00 1.161206667e+00 1.101426237e+00 1.052107507e+00 - 1.034058306e+00 1.034058306e+00 1.056733293e+00 1.098047131e+00 1.151066629e+00 1.203670723e+00 - 1.256884277e+00 1.300250521e+00 1.335211876e+00 1.350387141e+00 1.350387141e+00 1.335211876e+00 - 1.300250521e+00 1.256884277e+00 1.203670723e+00 1.151066629e+00 1.098047131e+00 1.056733293e+00 - 1.045143285e+00 1.056013441e+00 1.086414223e+00 1.134867296e+00 1.182887056e+00 1.236118215e+00 - 1.286719282e+00 1.326156066e+00 1.350387141e+00 1.351648655e+00 1.350387141e+00 1.326156066e+00 - 1.286719282e+00 1.236118215e+00 1.182887056e+00 1.134867296e+00 1.086414223e+00 1.056013441e+00 - 1.034058306e+00 1.056733293e+00 1.098047131e+00 1.151066629e+00 1.203670723e+00 1.256884277e+00 - 1.300250521e+00 1.335211876e+00 1.350387141e+00 1.350387141e+00 1.335211876e+00 1.300250521e+00 - 1.256884277e+00 1.203670723e+00 1.151066629e+00 1.098047131e+00 1.056733293e+00 1.034058306e+00 - 1.019185925e+00 1.052107507e+00 1.101426237e+00 1.161206667e+00 1.216784482e+00 1.262601881e+00 - 1.300250521e+00 1.326156066e+00 1.335211876e+00 1.326156066e+00 1.300250521e+00 1.262601881e+00 - 1.216784482e+00 1.161206667e+00 1.101426237e+00 1.052107507e+00 1.019185925e+00 1.006361962e+00 - 1.008963694e+00 1.051249653e+00 1.104783927e+00 1.166298704e+00 1.216784482e+00 1.256884277e+00 - 1.286719282e+00 1.300250521e+00 1.300250521e+00 1.286719282e+00 1.256884277e+00 1.216784482e+00 - 1.166298704e+00 1.104783927e+00 1.051249653e+00 1.008963694e+00 9.870237318e-01 9.870237318e-01 - 1.004603663e+00 1.052430419e+00 1.104783927e+00 1.161206667e+00 1.203670723e+00 1.236118215e+00 - 1.256884277e+00 1.262601881e+00 1.256884277e+00 1.236118215e+00 1.203670723e+00 1.161206667e+00 - 1.104783927e+00 1.052430419e+00 1.004603663e+00 9.686080220e-01 9.594433503e-01 9.686080220e-01 - 1.004603663e+00 1.051249653e+00 1.101426237e+00 1.151066629e+00 1.182887056e+00 1.203670723e+00 - 1.216784482e+00 1.216784482e+00 1.203670723e+00 1.182887056e+00 1.151066629e+00 1.101426237e+00 - 1.051249653e+00 1.004603663e+00 9.604823150e-01 9.358832788e-01 9.358832788e-01 9.604823150e-01 - 1.008963694e+00 1.052107507e+00 1.098047131e+00 1.134867296e+00 1.151066629e+00 1.161206667e+00 - 1.166298704e+00 1.161206667e+00 1.151066629e+00 1.134867296e+00 1.098047131e+00 1.052107507e+00 - 1.008963694e+00 9.686080220e-01 9.358832788e-01 9.206411871e-01 9.358832788e-01 9.686080220e-01 - 1.019185925e+00 1.056733293e+00 1.086414223e+00 1.098047131e+00 1.101426237e+00 1.104783927e+00 - 1.104783927e+00 1.101426237e+00 1.098047131e+00 1.086414223e+00 1.056733293e+00 1.019185925e+00 - 9.870237318e-01 9.594433503e-01 9.358832788e-01 9.358832788e-01 9.594433503e-01 9.870237318e-01 - 1.034058306e+00 1.056013441e+00 1.056733293e+00 1.052107507e+00 1.051249653e+00 1.052430419e+00 - 1.051249653e+00 1.052107507e+00 1.056733293e+00 1.056013441e+00 1.034058306e+00 1.006361962e+00 - 9.870237318e-01 9.686080220e-01 9.604823150e-01 9.686080220e-01 9.870237318e-01 1.006361962e+00 - 9.730729696e-01 9.052606610e-01 8.380484261e-01 7.815290589e-01 7.596747836e-01 7.815290589e-01 - 8.380484261e-01 9.052606610e-01 9.730729696e-01 1.034058306e+00 1.084400472e+00 1.110024431e+00 - 1.120222618e+00 1.129418840e+00 1.120222618e+00 1.110024431e+00 1.084400472e+00 1.034058306e+00 - 9.052606610e-01 8.163506452e-01 7.308639113e-01 6.804450493e-01 6.804450493e-01 7.308639113e-01 - 8.163506452e-01 9.052606610e-01 9.859929667e-01 1.056733293e+00 1.110866601e+00 1.136253020e+00 - 1.151907167e+00 1.151907167e+00 1.136253020e+00 1.110866601e+00 1.056733293e+00 9.859929667e-01 - 8.380484261e-01 7.308639113e-01 6.528852206e-01 6.265938397e-01 6.528852206e-01 7.308639113e-01 - 8.380484261e-01 9.392496570e-01 1.022462643e+00 1.098047131e+00 1.149639911e+00 1.173416309e+00 - 1.183675454e+00 1.173416309e+00 1.149639911e+00 1.098047131e+00 1.022462643e+00 9.392496570e-01 - 7.815290589e-01 6.804450493e-01 6.265938397e-01 6.265938397e-01 6.804450493e-01 7.815290589e-01 - 8.993044483e-01 9.974179707e-01 1.079285252e+00 1.151066629e+00 1.191278335e+00 1.212144334e+00 - 1.212144334e+00 1.191278335e+00 1.151066629e+00 1.079285252e+00 9.974179707e-01 8.993044483e-01 - 7.596747836e-01 6.804450493e-01 6.528852206e-01 6.804450493e-01 7.596747836e-01 8.675032008e-01 - 9.771197467e-01 1.069232947e+00 1.148218391e+00 1.203670723e+00 1.234376786e+00 1.249960796e+00 - 1.234376786e+00 1.203670723e+00 1.148218391e+00 1.069232947e+00 9.771197467e-01 8.675032008e-01 - 7.815290589e-01 7.308639113e-01 7.308639113e-01 7.815290589e-01 8.675032008e-01 9.643914735e-01 - 1.062116824e+00 1.147820304e+00 1.218227799e+00 1.256884277e+00 1.280741853e+00 1.280741853e+00 - 1.256884277e+00 1.218227799e+00 1.147820304e+00 1.062116824e+00 9.643914735e-01 8.675032008e-01 - 8.380484261e-01 8.163506452e-01 8.380484261e-01 8.993044483e-01 9.771197467e-01 1.062116824e+00 - 1.143562349e+00 1.217537257e+00 1.271231743e+00 1.300250521e+00 1.314844217e+00 1.300250521e+00 - 1.271231743e+00 1.217537257e+00 1.143562349e+00 1.062116824e+00 9.771197467e-01 8.993044483e-01 - 9.052606610e-01 9.052606610e-01 9.392496570e-01 9.974179707e-01 1.069232947e+00 1.147820304e+00 - 1.217537257e+00 1.272473931e+00 1.311117444e+00 1.335211876e+00 1.335211876e+00 1.311117444e+00 - 1.272473931e+00 1.217537257e+00 1.147820304e+00 1.069232947e+00 9.974179707e-01 9.392496570e-01 - 9.730729696e-01 9.859929667e-01 1.022462643e+00 1.079285252e+00 1.148218391e+00 1.218227799e+00 - 1.271231743e+00 1.311117444e+00 1.341367770e+00 1.350387141e+00 1.341367770e+00 1.311117444e+00 - 1.271231743e+00 1.218227799e+00 1.148218391e+00 1.079285252e+00 1.022462643e+00 9.859929667e-01 - 1.034058306e+00 1.056733293e+00 1.098047131e+00 1.151066629e+00 1.203670723e+00 1.256884277e+00 - 1.300250521e+00 1.335211876e+00 1.350387141e+00 1.350387141e+00 1.335211876e+00 1.300250521e+00 - 1.256884277e+00 1.203670723e+00 1.151066629e+00 1.098047131e+00 1.056733293e+00 1.034058306e+00 - 1.084400472e+00 1.110866601e+00 1.149639911e+00 1.191278335e+00 1.234376786e+00 1.280741853e+00 - 1.314844217e+00 1.335211876e+00 1.341367770e+00 1.335211876e+00 1.314844217e+00 1.280741853e+00 - 1.234376786e+00 1.191278335e+00 1.149639911e+00 1.110866601e+00 1.084400472e+00 1.071693210e+00 - 1.110024431e+00 1.136253020e+00 1.173416309e+00 1.212144334e+00 1.249960796e+00 1.280741853e+00 - 1.300250521e+00 1.311117444e+00 1.311117444e+00 1.300250521e+00 1.280741853e+00 1.249960796e+00 - 1.212144334e+00 1.173416309e+00 1.136253020e+00 1.110024431e+00 1.093992270e+00 1.093992270e+00 - 1.120222618e+00 1.151907167e+00 1.183675454e+00 1.212144334e+00 1.234376786e+00 1.256884277e+00 - 1.271231743e+00 1.272473931e+00 1.271231743e+00 1.256884277e+00 1.234376786e+00 1.212144334e+00 - 1.183675454e+00 1.151907167e+00 1.120222618e+00 1.099799059e+00 1.094930401e+00 1.099799059e+00 - 1.129418840e+00 1.151907167e+00 1.173416309e+00 1.191278335e+00 1.203670723e+00 1.218227799e+00 - 1.217537257e+00 1.217537257e+00 1.218227799e+00 1.203670723e+00 1.191278335e+00 1.173416309e+00 - 1.151907167e+00 1.129418840e+00 1.107772587e+00 1.098731978e+00 1.098731978e+00 1.107772587e+00 - 1.120222618e+00 1.136253020e+00 1.149639911e+00 1.151066629e+00 1.148218391e+00 1.147820304e+00 - 1.143562349e+00 1.147820304e+00 1.148218391e+00 1.151066629e+00 1.149639911e+00 1.136253020e+00 - 1.120222618e+00 1.107772587e+00 1.100315971e+00 1.094531051e+00 1.100315971e+00 1.107772587e+00 - 1.110024431e+00 1.110866601e+00 1.098047131e+00 1.079285252e+00 1.069232947e+00 1.062116824e+00 - 1.062116824e+00 1.069232947e+00 1.079285252e+00 1.098047131e+00 1.110866601e+00 1.110024431e+00 - 1.099799059e+00 1.098731978e+00 1.094531051e+00 1.094531051e+00 1.098731978e+00 1.099799059e+00 - 1.084400472e+00 1.056733293e+00 1.022462643e+00 9.974179707e-01 9.771197467e-01 9.643914735e-01 - 9.771197467e-01 9.974179707e-01 1.022462643e+00 1.056733293e+00 1.084400472e+00 1.093992270e+00 - 1.094930401e+00 1.098731978e+00 1.100315971e+00 1.098731978e+00 1.094930401e+00 1.093992270e+00 - 1.034058306e+00 9.859929667e-01 9.392496570e-01 8.993044483e-01 8.675032008e-01 8.675032008e-01 - 8.993044483e-01 9.392496570e-01 9.859929667e-01 1.034058306e+00 1.071693210e+00 1.093992270e+00 - 1.099799059e+00 1.107772587e+00 1.107772587e+00 1.099799059e+00 1.093992270e+00 1.071693210e+00 - 7.553845437e-01 5.819872684e-01 4.329329062e-01 3.523457454e-01 3.523457454e-01 4.329329062e-01 - 5.819872684e-01 7.553845437e-01 9.052606610e-01 1.019185925e+00 1.110024431e+00 1.166031428e+00 - 1.189160730e+00 1.189160730e+00 1.166031428e+00 1.110024431e+00 1.019185925e+00 9.052606610e-01 - 5.819872684e-01 3.890026417e-01 2.499862400e-01 2.013583711e-01 2.499862400e-01 3.890026417e-01 - 5.819872684e-01 7.803048748e-01 9.392496570e-01 1.052107507e+00 1.136253020e+00 1.184158268e+00 - 1.197552582e+00 1.184158268e+00 1.136253020e+00 1.052107507e+00 9.392496570e-01 7.803048748e-01 - 4.329329062e-01 2.499862400e-01 1.418925569e-01 1.418925569e-01 2.499862400e-01 4.329329062e-01 - 6.495303394e-01 8.514225078e-01 9.974179707e-01 1.101426237e+00 1.173416309e+00 1.203701774e+00 - 1.203701774e+00 1.173416309e+00 1.101426237e+00 9.974179707e-01 8.514225078e-01 6.495303394e-01 - 3.523457454e-01 2.013583711e-01 1.418925569e-01 2.013583711e-01 3.523457454e-01 5.533579927e-01 - 7.682897463e-01 9.438907282e-01 1.069232947e+00 1.161206667e+00 1.212144334e+00 1.226290582e+00 - 1.212144334e+00 1.161206667e+00 1.069232947e+00 9.438907282e-01 7.682897463e-01 5.533579927e-01 - 3.523457454e-01 2.499862400e-01 2.499862400e-01 3.523457454e-01 5.187647195e-01 7.165738953e-01 - 9.023069816e-01 1.041763078e+00 1.147820304e+00 1.216784482e+00 1.249960796e+00 1.249960796e+00 - 1.216784482e+00 1.147820304e+00 1.041763078e+00 9.023069816e-01 7.165738953e-01 5.187647195e-01 - 4.329329062e-01 3.890026417e-01 4.329329062e-01 5.533579927e-01 7.165738953e-01 8.865793167e-01 - 1.024922193e+00 1.135296667e+00 1.217537257e+00 1.262601881e+00 1.280741853e+00 1.262601881e+00 - 1.217537257e+00 1.135296667e+00 1.024922193e+00 8.865793167e-01 7.165738953e-01 5.533579927e-01 - 5.819872684e-01 5.819872684e-01 6.495303394e-01 7.682897463e-01 9.023069816e-01 1.024922193e+00 - 1.128812004e+00 1.219339666e+00 1.272473931e+00 1.300250521e+00 1.300250521e+00 1.272473931e+00 - 1.219339666e+00 1.128812004e+00 1.024922193e+00 9.023069816e-01 7.682897463e-01 6.495303394e-01 - 7.553845437e-01 7.803048748e-01 8.514225078e-01 9.438907282e-01 1.041763078e+00 1.135296667e+00 - 1.219339666e+00 1.278764666e+00 1.311117444e+00 1.326156066e+00 1.311117444e+00 1.278764666e+00 - 1.219339666e+00 1.135296667e+00 1.041763078e+00 9.438907282e-01 8.514225078e-01 7.803048748e-01 - 9.052606610e-01 9.392496570e-01 9.974179707e-01 1.069232947e+00 1.147820304e+00 1.217537257e+00 - 1.272473931e+00 1.311117444e+00 1.335211876e+00 1.335211876e+00 1.311117444e+00 1.272473931e+00 - 1.217537257e+00 1.147820304e+00 1.069232947e+00 9.974179707e-01 9.392496570e-01 9.052606610e-01 - 1.019185925e+00 1.052107507e+00 1.101426237e+00 1.161206667e+00 1.216784482e+00 1.262601881e+00 - 1.300250521e+00 1.326156066e+00 1.335211876e+00 1.326156066e+00 1.300250521e+00 1.262601881e+00 - 1.216784482e+00 1.161206667e+00 1.101426237e+00 1.052107507e+00 1.019185925e+00 1.006361962e+00 - 1.110024431e+00 1.136253020e+00 1.173416309e+00 1.212144334e+00 1.249960796e+00 1.280741853e+00 - 1.300250521e+00 1.311117444e+00 1.311117444e+00 1.300250521e+00 1.280741853e+00 1.249960796e+00 - 1.212144334e+00 1.173416309e+00 1.136253020e+00 1.110024431e+00 1.093992270e+00 1.093992270e+00 - 1.166031428e+00 1.184158268e+00 1.203701774e+00 1.226290582e+00 1.249960796e+00 1.262601881e+00 - 1.272473931e+00 1.278764666e+00 1.272473931e+00 1.262601881e+00 1.249960796e+00 1.226290582e+00 - 1.203701774e+00 1.184158268e+00 1.166031428e+00 1.153649003e+00 1.147828275e+00 1.153649003e+00 - 1.189160730e+00 1.197552582e+00 1.203701774e+00 1.212144334e+00 1.216784482e+00 1.217537257e+00 - 1.219339666e+00 1.219339666e+00 1.217537257e+00 1.216784482e+00 1.212144334e+00 1.203701774e+00 - 1.197552582e+00 1.189160730e+00 1.181735925e+00 1.176108745e+00 1.176108745e+00 1.181735925e+00 - 1.189160730e+00 1.184158268e+00 1.173416309e+00 1.161206667e+00 1.147820304e+00 1.135296667e+00 - 1.128812004e+00 1.135296667e+00 1.147820304e+00 1.161206667e+00 1.173416309e+00 1.184158268e+00 - 1.189160730e+00 1.192455445e+00 1.194132316e+00 1.191637226e+00 1.194132316e+00 1.192455445e+00 - 1.166031428e+00 1.136253020e+00 1.101426237e+00 1.069232947e+00 1.041763078e+00 1.024922193e+00 - 1.024922193e+00 1.041763078e+00 1.069232947e+00 1.101426237e+00 1.136253020e+00 1.166031428e+00 - 1.181735925e+00 1.194132316e+00 1.197431990e+00 1.197431990e+00 1.194132316e+00 1.181735925e+00 - 1.110024431e+00 1.052107507e+00 9.974179707e-01 9.438907282e-01 9.023069816e-01 8.865793167e-01 - 9.023069816e-01 9.438907282e-01 9.974179707e-01 1.052107507e+00 1.110024431e+00 1.153649003e+00 - 1.176108745e+00 1.191637226e+00 1.197431990e+00 1.191637226e+00 1.176108745e+00 1.153649003e+00 - 1.019185925e+00 9.392496570e-01 8.514225078e-01 7.682897463e-01 7.165738953e-01 7.165738953e-01 - 7.682897463e-01 8.514225078e-01 9.392496570e-01 1.019185925e+00 1.093992270e+00 1.147828275e+00 - 1.176108745e+00 1.194132316e+00 1.194132316e+00 1.176108745e+00 1.147828275e+00 1.093992270e+00 - 9.052606610e-01 7.803048748e-01 6.495303394e-01 5.533579927e-01 5.187647195e-01 5.533579927e-01 - 6.495303394e-01 7.803048748e-01 9.052606610e-01 1.006361962e+00 1.093992270e+00 1.153649003e+00 - 1.181735925e+00 1.192455445e+00 1.181735925e+00 1.153649003e+00 1.093992270e+00 1.006361962e+00 - 2.759033881e-01 -4.762534696e-02 -3.167304269e-01 -4.248045340e-01 -3.167304269e-01 -4.762534696e-02 - 2.759033881e-01 5.819872684e-01 8.380484261e-01 1.008963694e+00 1.120222618e+00 1.189160730e+00 - 1.205280147e+00 1.189160730e+00 1.120222618e+00 1.008963694e+00 8.380484261e-01 5.819872684e-01 - -4.762534696e-02 -4.275257482e-01 -6.758660881e-01 -6.758660881e-01 -4.275257482e-01 -4.762534696e-02 - 3.257521627e-01 6.495303394e-01 8.993044483e-01 1.051249653e+00 1.151907167e+00 1.197552582e+00 - 1.197552582e+00 1.151907167e+00 1.051249653e+00 8.993044483e-01 6.495303394e-01 3.257521627e-01 - -3.167304269e-01 -6.758660881e-01 -8.182718971e-01 -6.758660881e-01 -3.167304269e-01 9.934167649e-02 - 4.634713229e-01 7.682897463e-01 9.771197467e-01 1.104783927e+00 1.183675454e+00 1.203701774e+00 - 1.183675454e+00 1.104783927e+00 9.771197467e-01 7.682897463e-01 4.634713229e-01 9.934167649e-02 - -4.248045340e-01 -6.758660881e-01 -6.758660881e-01 -4.248045340e-01 -4.122269552e-02 3.322866790e-01 - 6.501781326e-01 9.023069816e-01 1.062116824e+00 1.166298704e+00 1.212144334e+00 1.212144334e+00 - 1.166298704e+00 1.062116824e+00 9.023069816e-01 6.501781326e-01 3.322866790e-01 -4.122269552e-02 - -3.167304269e-01 -4.275257482e-01 -3.167304269e-01 -4.122269552e-02 2.858679452e-01 5.877293229e-01 - 8.445621675e-01 1.024922193e+00 1.143562349e+00 1.216784482e+00 1.234376786e+00 1.216784482e+00 - 1.143562349e+00 1.024922193e+00 8.445621675e-01 5.877293229e-01 2.858679452e-01 -4.122269552e-02 - -4.762534696e-02 -4.762534696e-02 9.934167649e-02 3.322866790e-01 5.877293229e-01 8.256589913e-01 - 1.006613110e+00 1.128812004e+00 1.217537257e+00 1.256884277e+00 1.256884277e+00 1.217537257e+00 - 1.128812004e+00 1.006613110e+00 8.256589913e-01 5.877293229e-01 3.322866790e-01 9.934167649e-02 - 2.759033881e-01 3.257521627e-01 4.634713229e-01 6.501781326e-01 8.445621675e-01 1.006613110e+00 - 1.128025785e+00 1.219339666e+00 1.271231743e+00 1.286719282e+00 1.271231743e+00 1.219339666e+00 - 1.128025785e+00 1.006613110e+00 8.445621675e-01 6.501781326e-01 4.634713229e-01 3.257521627e-01 - 5.819872684e-01 6.495303394e-01 7.682897463e-01 9.023069816e-01 1.024922193e+00 1.128812004e+00 - 1.219339666e+00 1.272473931e+00 1.300250521e+00 1.300250521e+00 1.272473931e+00 1.219339666e+00 - 1.128812004e+00 1.024922193e+00 9.023069816e-01 7.682897463e-01 6.495303394e-01 5.819872684e-01 - 8.380484261e-01 8.993044483e-01 9.771197467e-01 1.062116824e+00 1.143562349e+00 1.217537257e+00 - 1.271231743e+00 1.300250521e+00 1.314844217e+00 1.300250521e+00 1.271231743e+00 1.217537257e+00 - 1.143562349e+00 1.062116824e+00 9.771197467e-01 8.993044483e-01 8.380484261e-01 8.163506452e-01 - 1.008963694e+00 1.051249653e+00 1.104783927e+00 1.166298704e+00 1.216784482e+00 1.256884277e+00 - 1.286719282e+00 1.300250521e+00 1.300250521e+00 1.286719282e+00 1.256884277e+00 1.216784482e+00 - 1.166298704e+00 1.104783927e+00 1.051249653e+00 1.008963694e+00 9.870237318e-01 9.870237318e-01 - 1.120222618e+00 1.151907167e+00 1.183675454e+00 1.212144334e+00 1.234376786e+00 1.256884277e+00 - 1.271231743e+00 1.272473931e+00 1.271231743e+00 1.256884277e+00 1.234376786e+00 1.212144334e+00 - 1.183675454e+00 1.151907167e+00 1.120222618e+00 1.099799059e+00 1.094930401e+00 1.099799059e+00 - 1.189160730e+00 1.197552582e+00 1.203701774e+00 1.212144334e+00 1.216784482e+00 1.217537257e+00 - 1.219339666e+00 1.219339666e+00 1.217537257e+00 1.216784482e+00 1.212144334e+00 1.203701774e+00 - 1.197552582e+00 1.189160730e+00 1.181735925e+00 1.176108745e+00 1.176108745e+00 1.181735925e+00 - 1.205280147e+00 1.197552582e+00 1.183675454e+00 1.166298704e+00 1.143562349e+00 1.128812004e+00 - 1.128025785e+00 1.128812004e+00 1.143562349e+00 1.166298704e+00 1.183675454e+00 1.197552582e+00 - 1.205280147e+00 1.215727713e+00 1.222656906e+00 1.221593491e+00 1.222656906e+00 1.215727713e+00 - 1.189160730e+00 1.151907167e+00 1.104783927e+00 1.062116824e+00 1.024922193e+00 1.006613110e+00 - 1.006613110e+00 1.024922193e+00 1.062116824e+00 1.104783927e+00 1.151907167e+00 1.189160730e+00 - 1.215727713e+00 1.234183067e+00 1.243125434e+00 1.243125434e+00 1.234183067e+00 1.215727713e+00 - 1.120222618e+00 1.051249653e+00 9.771197467e-01 9.023069816e-01 8.445621675e-01 8.256589913e-01 - 8.445621675e-01 9.023069816e-01 9.771197467e-01 1.051249653e+00 1.120222618e+00 1.181735925e+00 - 1.222656906e+00 1.243125434e+00 1.253372102e+00 1.243125434e+00 1.222656906e+00 1.181735925e+00 - 1.008963694e+00 8.993044483e-01 7.682897463e-01 6.501781326e-01 5.877293229e-01 5.877293229e-01 - 6.501781326e-01 7.682897463e-01 8.993044483e-01 1.008963694e+00 1.099799059e+00 1.176108745e+00 - 1.221593491e+00 1.243125434e+00 1.243125434e+00 1.221593491e+00 1.176108745e+00 1.099799059e+00 - 8.380484261e-01 6.495303394e-01 4.634713229e-01 3.322866790e-01 2.858679452e-01 3.322866790e-01 - 4.634713229e-01 6.495303394e-01 8.380484261e-01 9.870237318e-01 1.094930401e+00 1.176108745e+00 - 1.222656906e+00 1.234183067e+00 1.222656906e+00 1.176108745e+00 1.094930401e+00 9.870237318e-01 - 5.819872684e-01 3.257521627e-01 9.934167649e-02 -4.122269552e-02 -4.122269552e-02 9.934167649e-02 - 3.257521627e-01 5.819872684e-01 8.163506452e-01 9.870237318e-01 1.099799059e+00 1.181735925e+00 - 1.215727713e+00 1.215727713e+00 1.181735925e+00 1.099799059e+00 9.870237318e-01 8.163506452e-01 - -7.107805182e-01 -1.363678565e+00 -1.731196688e+00 -1.731196688e+00 -1.363678565e+00 -7.107805182e-01 - -4.762534696e-02 4.329329062e-01 7.815290589e-01 1.004603663e+00 1.129418840e+00 1.189160730e+00 - 1.189160730e+00 1.129418840e+00 1.004603663e+00 7.815290589e-01 4.329329062e-01 -4.762534696e-02 - -1.363678565e+00 -1.917098600e+00 -2.091379679e+00 -1.917098600e+00 -1.363678565e+00 -5.713853056e-01 - 9.934167649e-02 5.533579927e-01 8.675032008e-01 1.052430419e+00 1.151907167e+00 1.184158268e+00 - 1.151907167e+00 1.052430419e+00 8.675032008e-01 5.533579927e-01 9.934167649e-02 -5.713853056e-01 - -1.731196688e+00 -2.091379679e+00 -2.091379679e+00 -1.731196688e+00 -1.013496361e+00 -2.299594403e-01 - 3.322866790e-01 7.165738953e-01 9.643914735e-01 1.104783927e+00 1.173416309e+00 1.173416309e+00 - 1.104783927e+00 9.643914735e-01 7.165738953e-01 3.322866790e-01 -2.299594403e-01 -1.013496361e+00 - -1.731196688e+00 -1.917098600e+00 -1.731196688e+00 -1.186604314e+00 -4.480641362e-01 1.635921203e-01 - 5.877293229e-01 8.865793167e-01 1.062116824e+00 1.161206667e+00 1.191278335e+00 1.161206667e+00 - 1.062116824e+00 8.865793167e-01 5.877293229e-01 1.635921203e-01 -4.480641362e-01 -1.186604314e+00 - -1.363678565e+00 -1.363678565e+00 -1.013496361e+00 -4.480641362e-01 9.901426569e-02 5.096287760e-01 - 8.256589913e-01 1.024922193e+00 1.147820304e+00 1.203670723e+00 1.203670723e+00 1.147820304e+00 - 1.024922193e+00 8.256589913e-01 5.096287760e-01 9.901426569e-02 -4.480641362e-01 -1.013496361e+00 - -7.107805182e-01 -5.713853056e-01 -2.299594403e-01 1.635921203e-01 5.096287760e-01 8.035573959e-01 - 1.006613110e+00 1.135296667e+00 1.218227799e+00 1.236118215e+00 1.218227799e+00 1.135296667e+00 - 1.006613110e+00 8.035573959e-01 5.096287760e-01 1.635921203e-01 -2.299594403e-01 -5.713853056e-01 - -4.762534696e-02 9.934167649e-02 3.322866790e-01 5.877293229e-01 8.256589913e-01 1.006613110e+00 - 1.128812004e+00 1.217537257e+00 1.256884277e+00 1.256884277e+00 1.217537257e+00 1.128812004e+00 - 1.006613110e+00 8.256589913e-01 5.877293229e-01 3.322866790e-01 9.934167649e-02 -4.762534696e-02 - 4.329329062e-01 5.533579927e-01 7.165738953e-01 8.865793167e-01 1.024922193e+00 1.135296667e+00 - 1.217537257e+00 1.262601881e+00 1.280741853e+00 1.262601881e+00 1.217537257e+00 1.135296667e+00 - 1.024922193e+00 8.865793167e-01 7.165738953e-01 5.533579927e-01 4.329329062e-01 3.890026417e-01 - 7.815290589e-01 8.675032008e-01 9.643914735e-01 1.062116824e+00 1.147820304e+00 1.218227799e+00 - 1.256884277e+00 1.280741853e+00 1.280741853e+00 1.256884277e+00 1.218227799e+00 1.147820304e+00 - 1.062116824e+00 9.643914735e-01 8.675032008e-01 7.815290589e-01 7.308639113e-01 7.308639113e-01 - 1.004603663e+00 1.052430419e+00 1.104783927e+00 1.161206667e+00 1.203670723e+00 1.236118215e+00 - 1.256884277e+00 1.262601881e+00 1.256884277e+00 1.236118215e+00 1.203670723e+00 1.161206667e+00 - 1.104783927e+00 1.052430419e+00 1.004603663e+00 9.686080220e-01 9.594433503e-01 9.686080220e-01 - 1.129418840e+00 1.151907167e+00 1.173416309e+00 1.191278335e+00 1.203670723e+00 1.218227799e+00 - 1.217537257e+00 1.217537257e+00 1.218227799e+00 1.203670723e+00 1.191278335e+00 1.173416309e+00 - 1.151907167e+00 1.129418840e+00 1.107772587e+00 1.098731978e+00 1.098731978e+00 1.107772587e+00 - 1.189160730e+00 1.184158268e+00 1.173416309e+00 1.161206667e+00 1.147820304e+00 1.135296667e+00 - 1.128812004e+00 1.135296667e+00 1.147820304e+00 1.161206667e+00 1.173416309e+00 1.184158268e+00 - 1.189160730e+00 1.192455445e+00 1.194132316e+00 1.191637226e+00 1.194132316e+00 1.192455445e+00 - 1.189160730e+00 1.151907167e+00 1.104783927e+00 1.062116824e+00 1.024922193e+00 1.006613110e+00 - 1.006613110e+00 1.024922193e+00 1.062116824e+00 1.104783927e+00 1.151907167e+00 1.189160730e+00 - 1.215727713e+00 1.234183067e+00 1.243125434e+00 1.243125434e+00 1.234183067e+00 1.215727713e+00 - 1.129418840e+00 1.052430419e+00 9.643914735e-01 8.865793167e-01 8.256589913e-01 8.035573959e-01 - 8.256589913e-01 8.865793167e-01 9.643914735e-01 1.052430419e+00 1.129418840e+00 1.192455445e+00 - 1.234183067e+00 1.255969842e+00 1.271122697e+00 1.255969842e+00 1.234183067e+00 1.192455445e+00 - 1.004603663e+00 8.675032008e-01 7.165738953e-01 5.877293229e-01 5.096287760e-01 5.096287760e-01 - 5.877293229e-01 7.165738953e-01 8.675032008e-01 1.004603663e+00 1.107772587e+00 1.194132316e+00 - 1.243125434e+00 1.271122697e+00 1.271122697e+00 1.243125434e+00 1.194132316e+00 1.107772587e+00 - 7.815290589e-01 5.533579927e-01 3.322866790e-01 1.635921203e-01 9.901426569e-02 1.635921203e-01 - 3.322866790e-01 5.533579927e-01 7.815290589e-01 9.686080220e-01 1.098731978e+00 1.191637226e+00 - 1.243125434e+00 1.255969842e+00 1.243125434e+00 1.191637226e+00 1.098731978e+00 9.686080220e-01 - 4.329329062e-01 9.934167649e-02 -2.299594403e-01 -4.480641362e-01 -4.480641362e-01 -2.299594403e-01 - 9.934167649e-02 4.329329062e-01 7.308639113e-01 9.594433503e-01 1.098731978e+00 1.194132316e+00 - 1.234183067e+00 1.234183067e+00 1.194132316e+00 1.098731978e+00 9.594433503e-01 7.308639113e-01 - -4.762534696e-02 -5.713853056e-01 -1.013496361e+00 -1.186604314e+00 -1.013496361e+00 -5.713853056e-01 - -4.762534696e-02 3.890026417e-01 7.308639113e-01 9.686080220e-01 1.107772587e+00 1.192455445e+00 - 1.215727713e+00 1.192455445e+00 1.107772587e+00 9.686080220e-01 7.308639113e-01 3.890026417e-01 - -2.349289445e+00 -2.811263827e+00 -2.897709599e+00 -2.811263827e+00 -2.349289445e+00 -1.363678565e+00 - -3.167304269e-01 3.523457454e-01 7.596747836e-01 1.004603663e+00 1.120222618e+00 1.166031428e+00 - 1.120222618e+00 1.004603663e+00 7.596747836e-01 3.523457454e-01 -3.167304269e-01 -1.363678565e+00 - -2.811263827e+00 -2.968646894e+00 -2.968646894e+00 -2.811263827e+00 -2.146241599e+00 -1.013496361e+00 - -4.122269552e-02 5.187647195e-01 8.675032008e-01 1.051249653e+00 1.136253020e+00 1.136253020e+00 - 1.051249653e+00 8.675032008e-01 5.187647195e-01 -4.122269552e-02 -1.013496361e+00 -2.146241599e+00 - -2.897709599e+00 -2.968646894e+00 -2.897709599e+00 -2.500990004e+00 -1.555475503e+00 -4.480641362e-01 - 2.858679452e-01 7.165738953e-01 9.771197467e-01 1.101426237e+00 1.149639911e+00 1.101426237e+00 - 9.771197467e-01 7.165738953e-01 2.858679452e-01 -4.480641362e-01 -1.555475503e+00 -2.500990004e+00 - -2.811263827e+00 -2.811263827e+00 -2.500990004e+00 -1.748363517e+00 -7.098857793e-01 9.901426569e-02 - 5.877293229e-01 9.023069816e-01 1.069232947e+00 1.151066629e+00 1.151066629e+00 1.069232947e+00 - 9.023069816e-01 5.877293229e-01 9.901426569e-02 -7.098857793e-01 -1.748363517e+00 -2.500990004e+00 - -2.349289445e+00 -2.146241599e+00 -1.555475503e+00 -7.098857793e-01 2.404767180e-02 5.096287760e-01 - 8.445621675e-01 1.041763078e+00 1.148218391e+00 1.182887056e+00 1.148218391e+00 1.041763078e+00 - 8.445621675e-01 5.096287760e-01 2.404767180e-02 -7.098857793e-01 -1.555475503e+00 -2.146241599e+00 - -1.363678565e+00 -1.013496361e+00 -4.480641362e-01 9.901426569e-02 5.096287760e-01 8.256589913e-01 - 1.024922193e+00 1.147820304e+00 1.203670723e+00 1.203670723e+00 1.147820304e+00 1.024922193e+00 - 8.256589913e-01 5.096287760e-01 9.901426569e-02 -4.480641362e-01 -1.013496361e+00 -1.363678565e+00 - -3.167304269e-01 -4.122269552e-02 2.858679452e-01 5.877293229e-01 8.445621675e-01 1.024922193e+00 - 1.143562349e+00 1.216784482e+00 1.234376786e+00 1.216784482e+00 1.143562349e+00 1.024922193e+00 - 8.445621675e-01 5.877293229e-01 2.858679452e-01 -4.122269552e-02 -3.167304269e-01 -4.275257482e-01 - 3.523457454e-01 5.187647195e-01 7.165738953e-01 9.023069816e-01 1.041763078e+00 1.147820304e+00 - 1.216784482e+00 1.249960796e+00 1.249960796e+00 1.216784482e+00 1.147820304e+00 1.041763078e+00 - 9.023069816e-01 7.165738953e-01 5.187647195e-01 3.523457454e-01 2.499862400e-01 2.499862400e-01 - 7.596747836e-01 8.675032008e-01 9.771197467e-01 1.069232947e+00 1.148218391e+00 1.203670723e+00 - 1.234376786e+00 1.249960796e+00 1.234376786e+00 1.203670723e+00 1.148218391e+00 1.069232947e+00 - 9.771197467e-01 8.675032008e-01 7.596747836e-01 6.804450493e-01 6.528852206e-01 6.804450493e-01 - 1.004603663e+00 1.051249653e+00 1.101426237e+00 1.151066629e+00 1.182887056e+00 1.203670723e+00 - 1.216784482e+00 1.216784482e+00 1.203670723e+00 1.182887056e+00 1.151066629e+00 1.101426237e+00 - 1.051249653e+00 1.004603663e+00 9.604823150e-01 9.358832788e-01 9.358832788e-01 9.604823150e-01 - 1.120222618e+00 1.136253020e+00 1.149639911e+00 1.151066629e+00 1.148218391e+00 1.147820304e+00 - 1.143562349e+00 1.147820304e+00 1.148218391e+00 1.151066629e+00 1.149639911e+00 1.136253020e+00 - 1.120222618e+00 1.107772587e+00 1.100315971e+00 1.094531051e+00 1.100315971e+00 1.107772587e+00 - 1.166031428e+00 1.136253020e+00 1.101426237e+00 1.069232947e+00 1.041763078e+00 1.024922193e+00 - 1.024922193e+00 1.041763078e+00 1.069232947e+00 1.101426237e+00 1.136253020e+00 1.166031428e+00 - 1.181735925e+00 1.194132316e+00 1.197431990e+00 1.197431990e+00 1.194132316e+00 1.181735925e+00 - 1.120222618e+00 1.051249653e+00 9.771197467e-01 9.023069816e-01 8.445621675e-01 8.256589913e-01 - 8.445621675e-01 9.023069816e-01 9.771197467e-01 1.051249653e+00 1.120222618e+00 1.181735925e+00 - 1.222656906e+00 1.243125434e+00 1.253372102e+00 1.243125434e+00 1.222656906e+00 1.181735925e+00 - 1.004603663e+00 8.675032008e-01 7.165738953e-01 5.877293229e-01 5.096287760e-01 5.096287760e-01 - 5.877293229e-01 7.165738953e-01 8.675032008e-01 1.004603663e+00 1.107772587e+00 1.194132316e+00 - 1.243125434e+00 1.271122697e+00 1.271122697e+00 1.243125434e+00 1.194132316e+00 1.107772587e+00 - 7.596747836e-01 5.187647195e-01 2.858679452e-01 9.901426569e-02 2.404767180e-02 9.901426569e-02 - 2.858679452e-01 5.187647195e-01 7.596747836e-01 9.604823150e-01 1.100315971e+00 1.197431990e+00 - 1.253372102e+00 1.271122697e+00 1.253372102e+00 1.197431990e+00 1.100315971e+00 9.604823150e-01 - 3.523457454e-01 -4.122269552e-02 -4.480641362e-01 -7.098857793e-01 -7.098857793e-01 -4.480641362e-01 - -4.122269552e-02 3.523457454e-01 6.804450493e-01 9.358832788e-01 1.094531051e+00 1.197431990e+00 - 1.243125434e+00 1.243125434e+00 1.197431990e+00 1.094531051e+00 9.358832788e-01 6.804450493e-01 - -3.167304269e-01 -1.013496361e+00 -1.555475503e+00 -1.748363517e+00 -1.555475503e+00 -1.013496361e+00 - -3.167304269e-01 2.499862400e-01 6.528852206e-01 9.358832788e-01 1.100315971e+00 1.194132316e+00 - 1.222656906e+00 1.194132316e+00 1.100315971e+00 9.358832788e-01 6.528852206e-01 2.499862400e-01 - -1.363678565e+00 -2.146241599e+00 -2.500990004e+00 -2.500990004e+00 -2.146241599e+00 -1.363678565e+00 - -4.275257482e-01 2.499862400e-01 6.804450493e-01 9.604823150e-01 1.107772587e+00 1.181735925e+00 - 1.181735925e+00 1.107772587e+00 9.604823150e-01 6.804450493e-01 2.499862400e-01 -4.275257482e-01 - -3.166012873e+00 -3.168040888e+00 -3.168040888e+00 -3.166012873e+00 -2.811263827e+00 -1.731196688e+00 - -4.248045340e-01 3.523457454e-01 7.815290589e-01 1.008963694e+00 1.110024431e+00 1.110024431e+00 - 1.008963694e+00 7.815290589e-01 3.523457454e-01 -4.248045340e-01 -1.731196688e+00 -2.811263827e+00 - -3.168040888e+00 -3.149086912e+00 -3.168040888e+00 -3.099833569e+00 -2.500990004e+00 -1.186604314e+00 - -4.122269552e-02 5.533579927e-01 8.993044483e-01 1.052107507e+00 1.110866601e+00 1.052107507e+00 - 8.993044483e-01 5.533579927e-01 -4.122269552e-02 -1.186604314e+00 -2.500990004e+00 -3.099833569e+00 - -3.168040888e+00 -3.168040888e+00 -3.126510933e+00 -2.798046014e+00 -1.748363517e+00 -4.480641362e-01 - 3.322866790e-01 7.682897463e-01 9.974179707e-01 1.098047131e+00 1.098047131e+00 9.974179707e-01 - 7.682897463e-01 3.322866790e-01 -4.480641362e-01 -1.748363517e+00 -2.798046014e+00 -3.126510933e+00 - -3.166012873e+00 -3.099833569e+00 -2.798046014e+00 -1.936557772e+00 -7.098857793e-01 1.635921203e-01 - 6.501781326e-01 9.438907282e-01 1.079285252e+00 1.134867296e+00 1.079285252e+00 9.438907282e-01 - 6.501781326e-01 1.635921203e-01 -7.098857793e-01 -1.936557772e+00 -2.798046014e+00 -3.099833569e+00 - -2.811263827e+00 -2.500990004e+00 -1.748363517e+00 -7.098857793e-01 9.901426569e-02 5.877293229e-01 - 9.023069816e-01 1.069232947e+00 1.151066629e+00 1.151066629e+00 1.069232947e+00 9.023069816e-01 - 5.877293229e-01 9.901426569e-02 -7.098857793e-01 -1.748363517e+00 -2.500990004e+00 -2.811263827e+00 - -1.731196688e+00 -1.186604314e+00 -4.480641362e-01 1.635921203e-01 5.877293229e-01 8.865793167e-01 - 1.062116824e+00 1.161206667e+00 1.191278335e+00 1.161206667e+00 1.062116824e+00 8.865793167e-01 - 5.877293229e-01 1.635921203e-01 -4.480641362e-01 -1.186604314e+00 -1.731196688e+00 -1.917098600e+00 - -4.248045340e-01 -4.122269552e-02 3.322866790e-01 6.501781326e-01 9.023069816e-01 1.062116824e+00 - 1.166298704e+00 1.212144334e+00 1.212144334e+00 1.166298704e+00 1.062116824e+00 9.023069816e-01 - 6.501781326e-01 3.322866790e-01 -4.122269552e-02 -4.248045340e-01 -6.758660881e-01 -6.758660881e-01 - 3.523457454e-01 5.533579927e-01 7.682897463e-01 9.438907282e-01 1.069232947e+00 1.161206667e+00 - 1.212144334e+00 1.226290582e+00 1.212144334e+00 1.161206667e+00 1.069232947e+00 9.438907282e-01 - 7.682897463e-01 5.533579927e-01 3.523457454e-01 2.013583711e-01 1.418925569e-01 2.013583711e-01 - 7.815290589e-01 8.993044483e-01 9.974179707e-01 1.079285252e+00 1.151066629e+00 1.191278335e+00 - 1.212144334e+00 1.212144334e+00 1.191278335e+00 1.151066629e+00 1.079285252e+00 9.974179707e-01 - 8.993044483e-01 7.815290589e-01 6.804450493e-01 6.265938397e-01 6.265938397e-01 6.804450493e-01 - 1.008963694e+00 1.052107507e+00 1.098047131e+00 1.134867296e+00 1.151066629e+00 1.161206667e+00 - 1.166298704e+00 1.161206667e+00 1.151066629e+00 1.134867296e+00 1.098047131e+00 1.052107507e+00 - 1.008963694e+00 9.686080220e-01 9.358832788e-01 9.206411871e-01 9.358832788e-01 9.686080220e-01 - 1.110024431e+00 1.110866601e+00 1.098047131e+00 1.079285252e+00 1.069232947e+00 1.062116824e+00 - 1.062116824e+00 1.069232947e+00 1.079285252e+00 1.098047131e+00 1.110866601e+00 1.110024431e+00 - 1.099799059e+00 1.098731978e+00 1.094531051e+00 1.094531051e+00 1.098731978e+00 1.099799059e+00 - 1.110024431e+00 1.052107507e+00 9.974179707e-01 9.438907282e-01 9.023069816e-01 8.865793167e-01 - 9.023069816e-01 9.438907282e-01 9.974179707e-01 1.052107507e+00 1.110024431e+00 1.153649003e+00 - 1.176108745e+00 1.191637226e+00 1.197431990e+00 1.191637226e+00 1.176108745e+00 1.153649003e+00 - 1.008963694e+00 8.993044483e-01 7.682897463e-01 6.501781326e-01 5.877293229e-01 5.877293229e-01 - 6.501781326e-01 7.682897463e-01 8.993044483e-01 1.008963694e+00 1.099799059e+00 1.176108745e+00 - 1.221593491e+00 1.243125434e+00 1.243125434e+00 1.221593491e+00 1.176108745e+00 1.099799059e+00 - 7.815290589e-01 5.533579927e-01 3.322866790e-01 1.635921203e-01 9.901426569e-02 1.635921203e-01 - 3.322866790e-01 5.533579927e-01 7.815290589e-01 9.686080220e-01 1.098731978e+00 1.191637226e+00 - 1.243125434e+00 1.255969842e+00 1.243125434e+00 1.191637226e+00 1.098731978e+00 9.686080220e-01 - 3.523457454e-01 -4.122269552e-02 -4.480641362e-01 -7.098857793e-01 -7.098857793e-01 -4.480641362e-01 - -4.122269552e-02 3.523457454e-01 6.804450493e-01 9.358832788e-01 1.094531051e+00 1.197431990e+00 - 1.243125434e+00 1.243125434e+00 1.197431990e+00 1.094531051e+00 9.358832788e-01 6.804450493e-01 - -4.248045340e-01 -1.186604314e+00 -1.748363517e+00 -1.936557772e+00 -1.748363517e+00 -1.186604314e+00 - -4.248045340e-01 2.013583711e-01 6.265938397e-01 9.206411871e-01 1.094531051e+00 1.191637226e+00 - 1.221593491e+00 1.191637226e+00 1.094531051e+00 9.206411871e-01 6.265938397e-01 2.013583711e-01 - -1.731196688e+00 -2.500990004e+00 -2.798046014e+00 -2.798046014e+00 -2.500990004e+00 -1.731196688e+00 - -6.758660881e-01 1.418925569e-01 6.265938397e-01 9.358832788e-01 1.098731978e+00 1.176108745e+00 - 1.176108745e+00 1.098731978e+00 9.358832788e-01 6.265938397e-01 1.418925569e-01 -6.758660881e-01 - -2.811263827e+00 -3.099833569e+00 -3.126510933e+00 -3.099833569e+00 -2.811263827e+00 -1.917098600e+00 - -6.758660881e-01 2.013583711e-01 6.804450493e-01 9.686080220e-01 1.099799059e+00 1.153649003e+00 - 1.099799059e+00 9.686080220e-01 6.804450493e-01 2.013583711e-01 -6.758660881e-01 -1.917098600e+00 - -3.242906484e+00 -3.259958206e+00 -3.242906484e+00 -3.168040888e+00 -2.897709599e+00 -1.731196688e+00 - -3.167304269e-01 4.329329062e-01 8.380484261e-01 1.019185925e+00 1.084400472e+00 1.019185925e+00 - 8.380484261e-01 4.329329062e-01 -3.167304269e-01 -1.731196688e+00 -2.897709599e+00 -3.168040888e+00 - -3.259958206e+00 -3.259958206e+00 -3.206568329e+00 -3.126510933e+00 -2.500990004e+00 -1.013496361e+00 - 9.934167649e-02 6.495303394e-01 9.392496570e-01 1.056733293e+00 1.056733293e+00 9.392496570e-01 - 6.495303394e-01 9.934167649e-02 -1.013496361e+00 -2.500990004e+00 -3.126510933e+00 -3.206568329e+00 - -3.242906484e+00 -3.206568329e+00 -3.148949385e+00 -2.798046014e+00 -1.555475503e+00 -2.299594403e-01 - 4.634713229e-01 8.514225078e-01 1.022462643e+00 1.086414223e+00 1.022462643e+00 8.514225078e-01 - 4.634713229e-01 -2.299594403e-01 -1.555475503e+00 -2.798046014e+00 -3.148949385e+00 -3.206568329e+00 - -3.168040888e+00 -3.126510933e+00 -2.798046014e+00 -1.748363517e+00 -4.480641362e-01 3.322866790e-01 - 7.682897463e-01 9.974179707e-01 1.098047131e+00 1.098047131e+00 9.974179707e-01 7.682897463e-01 - 3.322866790e-01 -4.480641362e-01 -1.748363517e+00 -2.798046014e+00 -3.126510933e+00 -3.168040888e+00 - -2.897709599e+00 -2.500990004e+00 -1.555475503e+00 -4.480641362e-01 2.858679452e-01 7.165738953e-01 - 9.771197467e-01 1.101426237e+00 1.149639911e+00 1.101426237e+00 9.771197467e-01 7.165738953e-01 - 2.858679452e-01 -4.480641362e-01 -1.555475503e+00 -2.500990004e+00 -2.897709599e+00 -2.968646894e+00 - -1.731196688e+00 -1.013496361e+00 -2.299594403e-01 3.322866790e-01 7.165738953e-01 9.643914735e-01 - 1.104783927e+00 1.173416309e+00 1.173416309e+00 1.104783927e+00 9.643914735e-01 7.165738953e-01 - 3.322866790e-01 -2.299594403e-01 -1.013496361e+00 -1.731196688e+00 -2.091379679e+00 -2.091379679e+00 - -3.167304269e-01 9.934167649e-02 4.634713229e-01 7.682897463e-01 9.771197467e-01 1.104783927e+00 - 1.183675454e+00 1.203701774e+00 1.183675454e+00 1.104783927e+00 9.771197467e-01 7.682897463e-01 - 4.634713229e-01 9.934167649e-02 -3.167304269e-01 -6.758660881e-01 -8.182718971e-01 -6.758660881e-01 - 4.329329062e-01 6.495303394e-01 8.514225078e-01 9.974179707e-01 1.101426237e+00 1.173416309e+00 - 1.203701774e+00 1.203701774e+00 1.173416309e+00 1.101426237e+00 9.974179707e-01 8.514225078e-01 - 6.495303394e-01 4.329329062e-01 2.499862400e-01 1.418925569e-01 1.418925569e-01 2.499862400e-01 - 8.380484261e-01 9.392496570e-01 1.022462643e+00 1.098047131e+00 1.149639911e+00 1.173416309e+00 - 1.183675454e+00 1.173416309e+00 1.149639911e+00 1.098047131e+00 1.022462643e+00 9.392496570e-01 - 8.380484261e-01 7.308639113e-01 6.528852206e-01 6.265938397e-01 6.528852206e-01 7.308639113e-01 - 1.019185925e+00 1.056733293e+00 1.086414223e+00 1.098047131e+00 1.101426237e+00 1.104783927e+00 - 1.104783927e+00 1.101426237e+00 1.098047131e+00 1.086414223e+00 1.056733293e+00 1.019185925e+00 - 9.870237318e-01 9.594433503e-01 9.358832788e-01 9.358832788e-01 9.594433503e-01 9.870237318e-01 - 1.084400472e+00 1.056733293e+00 1.022462643e+00 9.974179707e-01 9.771197467e-01 9.643914735e-01 - 9.771197467e-01 9.974179707e-01 1.022462643e+00 1.056733293e+00 1.084400472e+00 1.093992270e+00 - 1.094930401e+00 1.098731978e+00 1.100315971e+00 1.098731978e+00 1.094930401e+00 1.093992270e+00 - 1.019185925e+00 9.392496570e-01 8.514225078e-01 7.682897463e-01 7.165738953e-01 7.165738953e-01 - 7.682897463e-01 8.514225078e-01 9.392496570e-01 1.019185925e+00 1.093992270e+00 1.147828275e+00 - 1.176108745e+00 1.194132316e+00 1.194132316e+00 1.176108745e+00 1.147828275e+00 1.093992270e+00 - 8.380484261e-01 6.495303394e-01 4.634713229e-01 3.322866790e-01 2.858679452e-01 3.322866790e-01 - 4.634713229e-01 6.495303394e-01 8.380484261e-01 9.870237318e-01 1.094930401e+00 1.176108745e+00 - 1.222656906e+00 1.234183067e+00 1.222656906e+00 1.176108745e+00 1.094930401e+00 9.870237318e-01 - 4.329329062e-01 9.934167649e-02 -2.299594403e-01 -4.480641362e-01 -4.480641362e-01 -2.299594403e-01 - 9.934167649e-02 4.329329062e-01 7.308639113e-01 9.594433503e-01 1.098731978e+00 1.194132316e+00 - 1.234183067e+00 1.234183067e+00 1.194132316e+00 1.098731978e+00 9.594433503e-01 7.308639113e-01 - -3.167304269e-01 -1.013496361e+00 -1.555475503e+00 -1.748363517e+00 -1.555475503e+00 -1.013496361e+00 - -3.167304269e-01 2.499862400e-01 6.528852206e-01 9.358832788e-01 1.100315971e+00 1.194132316e+00 - 1.222656906e+00 1.194132316e+00 1.100315971e+00 9.358832788e-01 6.528852206e-01 2.499862400e-01 - -1.731196688e+00 -2.500990004e+00 -2.798046014e+00 -2.798046014e+00 -2.500990004e+00 -1.731196688e+00 - -6.758660881e-01 1.418925569e-01 6.265938397e-01 9.358832788e-01 1.098731978e+00 1.176108745e+00 - 1.176108745e+00 1.098731978e+00 9.358832788e-01 6.265938397e-01 1.418925569e-01 -6.758660881e-01 - -2.897709599e+00 -3.126510933e+00 -3.148949385e+00 -3.126510933e+00 -2.897709599e+00 -2.091379679e+00 - -8.182718971e-01 1.418925569e-01 6.528852206e-01 9.594433503e-01 1.094930401e+00 1.147828275e+00 - 1.094930401e+00 9.594433503e-01 6.528852206e-01 1.418925569e-01 -8.182718971e-01 -2.091379679e+00 - -3.168040888e+00 -3.206568329e+00 -3.206568329e+00 -3.168040888e+00 -2.968646894e+00 -2.091379679e+00 - -6.758660881e-01 2.499862400e-01 7.308639113e-01 9.870237318e-01 1.093992270e+00 1.093992270e+00 - 9.870237318e-01 7.308639113e-01 2.499862400e-01 -6.758660881e-01 -2.091379679e+00 -2.968646894e+00 - -3.176135718e+00 -3.176135718e+00 -3.259958206e+00 -3.168040888e+00 -2.811263827e+00 -1.363678565e+00 - -4.762534696e-02 5.819872684e-01 9.052606610e-01 1.034058306e+00 1.034058306e+00 9.052606610e-01 - 5.819872684e-01 -4.762534696e-02 -1.363678565e+00 -2.811263827e+00 -3.168040888e+00 -3.259958206e+00 - -3.176135718e+00 -3.266225378e+00 -3.206568329e+00 -3.099833569e+00 -2.146241599e+00 -5.713853056e-01 - 3.257521627e-01 7.803048748e-01 9.859929667e-01 1.056013441e+00 9.859929667e-01 7.803048748e-01 - 3.257521627e-01 -5.713853056e-01 -2.146241599e+00 -3.099833569e+00 -3.206568329e+00 -3.266225378e+00 - -3.259958206e+00 -3.206568329e+00 -3.126510933e+00 -2.500990004e+00 -1.013496361e+00 9.934167649e-02 - 6.495303394e-01 9.392496570e-01 1.056733293e+00 1.056733293e+00 9.392496570e-01 6.495303394e-01 - 9.934167649e-02 -1.013496361e+00 -2.500990004e+00 -3.126510933e+00 -3.206568329e+00 -3.259958206e+00 - -3.168040888e+00 -3.099833569e+00 -2.500990004e+00 -1.186604314e+00 -4.122269552e-02 5.533579927e-01 - 8.993044483e-01 1.052107507e+00 1.110866601e+00 1.052107507e+00 8.993044483e-01 5.533579927e-01 - -4.122269552e-02 -1.186604314e+00 -2.500990004e+00 -3.099833569e+00 -3.168040888e+00 -3.149086912e+00 - -2.811263827e+00 -2.146241599e+00 -1.013496361e+00 -4.122269552e-02 5.187647195e-01 8.675032008e-01 - 1.051249653e+00 1.136253020e+00 1.136253020e+00 1.051249653e+00 8.675032008e-01 5.187647195e-01 - -4.122269552e-02 -1.013496361e+00 -2.146241599e+00 -2.811263827e+00 -2.968646894e+00 -2.968646894e+00 - -1.363678565e+00 -5.713853056e-01 9.934167649e-02 5.533579927e-01 8.675032008e-01 1.052430419e+00 - 1.151907167e+00 1.184158268e+00 1.151907167e+00 1.052430419e+00 8.675032008e-01 5.533579927e-01 - 9.934167649e-02 -5.713853056e-01 -1.363678565e+00 -1.917098600e+00 -2.091379679e+00 -1.917098600e+00 - -4.762534696e-02 3.257521627e-01 6.495303394e-01 8.993044483e-01 1.051249653e+00 1.151907167e+00 - 1.197552582e+00 1.197552582e+00 1.151907167e+00 1.051249653e+00 8.993044483e-01 6.495303394e-01 - 3.257521627e-01 -4.762534696e-02 -4.275257482e-01 -6.758660881e-01 -6.758660881e-01 -4.275257482e-01 - 5.819872684e-01 7.803048748e-01 9.392496570e-01 1.052107507e+00 1.136253020e+00 1.184158268e+00 - 1.197552582e+00 1.184158268e+00 1.136253020e+00 1.052107507e+00 9.392496570e-01 7.803048748e-01 - 5.819872684e-01 3.890026417e-01 2.499862400e-01 2.013583711e-01 2.499862400e-01 3.890026417e-01 - 9.052606610e-01 9.859929667e-01 1.056733293e+00 1.110866601e+00 1.136253020e+00 1.151907167e+00 - 1.151907167e+00 1.136253020e+00 1.110866601e+00 1.056733293e+00 9.859929667e-01 9.052606610e-01 - 8.163506452e-01 7.308639113e-01 6.804450493e-01 6.804450493e-01 7.308639113e-01 8.163506452e-01 - 1.034058306e+00 1.056013441e+00 1.056733293e+00 1.052107507e+00 1.051249653e+00 1.052430419e+00 - 1.051249653e+00 1.052107507e+00 1.056733293e+00 1.056013441e+00 1.034058306e+00 1.006361962e+00 - 9.870237318e-01 9.686080220e-01 9.604823150e-01 9.686080220e-01 9.870237318e-01 1.006361962e+00 - 1.034058306e+00 9.859929667e-01 9.392496570e-01 8.993044483e-01 8.675032008e-01 8.675032008e-01 - 8.993044483e-01 9.392496570e-01 9.859929667e-01 1.034058306e+00 1.071693210e+00 1.093992270e+00 - 1.099799059e+00 1.107772587e+00 1.107772587e+00 1.099799059e+00 1.093992270e+00 1.071693210e+00 - 9.052606610e-01 7.803048748e-01 6.495303394e-01 5.533579927e-01 5.187647195e-01 5.533579927e-01 - 6.495303394e-01 7.803048748e-01 9.052606610e-01 1.006361962e+00 1.093992270e+00 1.153649003e+00 - 1.181735925e+00 1.192455445e+00 1.181735925e+00 1.153649003e+00 1.093992270e+00 1.006361962e+00 - 5.819872684e-01 3.257521627e-01 9.934167649e-02 -4.122269552e-02 -4.122269552e-02 9.934167649e-02 - 3.257521627e-01 5.819872684e-01 8.163506452e-01 9.870237318e-01 1.099799059e+00 1.181735925e+00 - 1.215727713e+00 1.215727713e+00 1.181735925e+00 1.099799059e+00 9.870237318e-01 8.163506452e-01 - -4.762534696e-02 -5.713853056e-01 -1.013496361e+00 -1.186604314e+00 -1.013496361e+00 -5.713853056e-01 - -4.762534696e-02 3.890026417e-01 7.308639113e-01 9.686080220e-01 1.107772587e+00 1.192455445e+00 - 1.215727713e+00 1.192455445e+00 1.107772587e+00 9.686080220e-01 7.308639113e-01 3.890026417e-01 - -1.363678565e+00 -2.146241599e+00 -2.500990004e+00 -2.500990004e+00 -2.146241599e+00 -1.363678565e+00 - -4.275257482e-01 2.499862400e-01 6.804450493e-01 9.604823150e-01 1.107772587e+00 1.181735925e+00 - 1.181735925e+00 1.107772587e+00 9.604823150e-01 6.804450493e-01 2.499862400e-01 -4.275257482e-01 - -2.811263827e+00 -3.099833569e+00 -3.126510933e+00 -3.099833569e+00 -2.811263827e+00 -1.917098600e+00 - -6.758660881e-01 2.013583711e-01 6.804450493e-01 9.686080220e-01 1.099799059e+00 1.153649003e+00 - 1.099799059e+00 9.686080220e-01 6.804450493e-01 2.013583711e-01 -6.758660881e-01 -1.917098600e+00 - -3.168040888e+00 -3.206568329e+00 -3.206568329e+00 -3.168040888e+00 -2.968646894e+00 -2.091379679e+00 - -6.758660881e-01 2.499862400e-01 7.308639113e-01 9.870237318e-01 1.093992270e+00 1.093992270e+00 - 9.870237318e-01 7.308639113e-01 2.499862400e-01 -6.758660881e-01 -2.091379679e+00 -2.968646894e+00 - -3.259958206e+00 -3.266225378e+00 -3.259958206e+00 -3.149086912e+00 -2.968646894e+00 -1.917098600e+00 - -4.275257482e-01 3.890026417e-01 8.163506452e-01 1.006361962e+00 1.071693210e+00 1.006361962e+00 - 8.163506452e-01 3.890026417e-01 -4.275257482e-01 -1.917098600e+00 -2.968646894e+00 -3.149086912e+00 diff --git a/tests/03_NAO_multik/01_NO_KP_15f_ODM/result.ref b/tests/03_NAO_multik/01_NO_KP_15f_ODM/result.ref deleted file mode 100644 index c90dbca3ec..0000000000 --- a/tests/03_NAO_multik/01_NO_KP_15f_ODM/result.ref +++ /dev/null @@ -1,8 +0,0 @@ -etotref -3439.007931317310 -etotperatomref -3439.0079313173 -CompareDM1_pass 0 -ComparePot_pass 0 -pointgroupref O_h -spacegroupref O_h -nksibzref 3 -totaltimeref 2.78 diff --git a/tests/03_NAO_multik/02_NO_KP_15/INPUT b/tests/03_NAO_multik/02_NO_KP_15/INPUT deleted file mode 100644 index 4f0cca65d3..0000000000 --- a/tests/03_NAO_multik/02_NO_KP_15/INPUT +++ /dev/null @@ -1,33 +0,0 @@ -INPUT_PARAMETERS -#Parameters (1.General) -suffix autotest -calculation scf - -nbands 6 -symmetry 1 -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB -gamma_only 0 - -#Parameters (2.Iteration) -ecutwfc 20 -scf_thr 1e-8 -scf_nmax 100 - - -#Parameters (3.Basis) -basis_type lcao - -#Parameters (4.Smearing) -smearing_method gauss -smearing_sigma 0.002 - -#Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.7 -mixing_gg0 1.5 - -ks_solver scalapack_gvx - -cal_force 1 -cal_stress 1 diff --git a/tests/03_NAO_multik/02_NO_KP_15/README b/tests/03_NAO_multik/02_NO_KP_15/README deleted file mode 100644 index 217f874585..0000000000 --- a/tests/03_NAO_multik/02_NO_KP_15/README +++ /dev/null @@ -1 +0,0 @@ -test SG15 pseudopotential diff --git a/tests/03_NAO_multik/02_NO_KP_15/STRU b/tests/03_NAO_multik/02_NO_KP_15/STRU deleted file mode 100644 index 8932c78340..0000000000 --- a/tests/03_NAO_multik/02_NO_KP_15/STRU +++ /dev/null @@ -1,22 +0,0 @@ -ATOMIC_SPECIES -Si 14 Si_ONCV_PBE-1.0.upf upf201 - -NUMERICAL_ORBITAL -Si_gga_8au_60Ry_2s2p1d.orb - -LATTICE_CONSTANT -20 // add lattice constant - -LATTICE_VECTORS -0.0 0.5 0.5 -0.5 0.0 0.5 -0.5 0.5 0.0 - -ATOMIC_POSITIONS -Direct - -Si // Element type -0.0 // magnetism -2 -0.00 0.00 0.00 1 1 1 -0.25 0.25 0.26 1 1 1 diff --git a/tests/03_NAO_multik/02_NO_KP_15/result.ref b/tests/03_NAO_multik/02_NO_KP_15/result.ref deleted file mode 100644 index e549847aad..0000000000 --- a/tests/03_NAO_multik/02_NO_KP_15/result.ref +++ /dev/null @@ -1,8 +0,0 @@ -etotref -204.8201098650446568 -etotperatomref -102.4100549325 -totalforceref 0.393746 -totalstressref 46.724863 -pointgroupref C_1h -spacegroupref C_2h -nksibzref 6 -totaltimeref +0.79966 diff --git a/tests/03_NAO_multik/03_NO_KP_15_kpar/INPUT b/tests/03_NAO_multik/03_NO_KP_15_kpar/INPUT deleted file mode 100644 index d0ae6805c5..0000000000 --- a/tests/03_NAO_multik/03_NO_KP_15_kpar/INPUT +++ /dev/null @@ -1,27 +0,0 @@ -INPUT_PARAMETERS -#Parameters (1.General) -suffix autotest -calculation scf - -nbands 6 -symmetry 1 -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB - -#Parameters (2.Iteration) -ecutwfc 20 -scf_thr 1e-6 -scf_nmax 100 - - -#Parameters (3.Basis) -basis_type lcao - -#Parameters (4.Smearing) -smearing_method gauss -smearing_sigma 0.002 - -#Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.3 -kpar 2 diff --git a/tests/03_NAO_multik/04_NO_KP_GTH/INPUT b/tests/03_NAO_multik/04_NO_KP_GTH/INPUT deleted file mode 100644 index 4b8f81dd79..0000000000 --- a/tests/03_NAO_multik/04_NO_KP_GTH/INPUT +++ /dev/null @@ -1,21 +0,0 @@ -INPUT_PARAMETERS -#Parameters (General) -suffix autotest -calculation scf -nspin 2 - -#Parameters (Accuracy) -ecutwfc 20 -scf_nmax 50 -scf_thr 1.0e-8 - -basis_type lcao - -cal_stress 1 -cal_force 1 - -mixing_type broyden -mixing_beta 0.7 -mixing_gg0 1.5 -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB diff --git a/tests/03_NAO_multik/05_NO_KP_DJ_OC2/INPUT b/tests/03_NAO_multik/05_NO_KP_DJ_OC2/INPUT deleted file mode 100644 index 01a4c87d0d..0000000000 --- a/tests/03_NAO_multik/05_NO_KP_DJ_OC2/INPUT +++ /dev/null @@ -1,40 +0,0 @@ -INPUT_PARAMETERS -suffix autotest -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB - -#nbands 40 -gamma_only 0 - -calculation scf -symmetry 0 - -relax_nmax 1 -force_thr_ev 0.001 -out_level ie - -smearing_method gaussian -smearing_sigma 0.001 - -#Parameters (3.PW) -ecutwfc 20 -scf_thr 1e-6 -scf_nmax 100 - -#Parameters (LCAO) -basis_type lcao -ks_solver scalapack_gvx -chg_extrap second-order -out_dmk 0 -out_chg 2 3 -pw_diag_thr 0.00001 - -mixing_type broyden -mixing_beta 0.4 -mixing_gg0 0.0 -mixing_ndim 5 - -cal_force 1 -cal_stress 1 - -#test_force 1 diff --git a/tests/03_NAO_multik/05_NO_KP_DJ_OC2/result.ref b/tests/03_NAO_multik/05_NO_KP_DJ_OC2/result.ref deleted file mode 100644 index f535918521..0000000000 --- a/tests/03_NAO_multik/05_NO_KP_DJ_OC2/result.ref +++ /dev/null @@ -1,5 +0,0 @@ -etotref -4884.332850270051 -etotperatomref -2442.1664251350 -totalforceref 771.983676 -totalstressref 59946.600686 -totaltimeref 1.72 diff --git a/tests/03_NAO_multik/06_NO_KP_OU/INPUT b/tests/03_NAO_multik/06_NO_KP_OU/INPUT deleted file mode 100644 index 42f1db6e6c..0000000000 --- a/tests/03_NAO_multik/06_NO_KP_OU/INPUT +++ /dev/null @@ -1,29 +0,0 @@ -INPUT_PARAMETERS -#Parameters (1.General) -suffix autotest -calculation scf - -nbands 6 -symmetry 1 -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB - -#Parameters (2.Iteration) -ecutwfc 20 -scf_thr 1e-6 -scf_nmax 100 - - -#Parameters (3.Basis) -basis_type lcao - -#Parameters (4.Smearing) -smearing_method gauss -smearing_sigma 0.002 - -#Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.3 - -cal_force 1 -force_thr_ev 1.0e-3 diff --git a/tests/03_NAO_multik/07_NO_KP_UPF201/INPUT b/tests/03_NAO_multik/07_NO_KP_UPF201/INPUT deleted file mode 100644 index dc5939dfb8..0000000000 --- a/tests/03_NAO_multik/07_NO_KP_UPF201/INPUT +++ /dev/null @@ -1,26 +0,0 @@ -INPUT_PARAMETERS -#Parameters (1.General) -suffix autotest -calculation scf - -nbands 6 -symmetry 1 - -#Parameters (2.Iteration) -ecutwfc 20 -scf_thr 1e-6 -scf_nmax 100 - - -#Parameters (3.Basis) -basis_type lcao - -#Parameters (4.Smearing) -smearing_method gauss -smearing_sigma 0.002 - -#Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.7 -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB diff --git a/tests/03_NAO_multik/08_NO_KP_bspline/INPUT b/tests/03_NAO_multik/08_NO_KP_bspline/INPUT deleted file mode 100644 index 5ab4795fcf..0000000000 --- a/tests/03_NAO_multik/08_NO_KP_bspline/INPUT +++ /dev/null @@ -1,27 +0,0 @@ -INPUT_PARAMETERS -#Parameters (General) -suffix autotest -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB - -calculation scf -symmetry 1 - -#Parameters (3.PW) -ecutwfc 20 -scf_thr 1e-8 -scf_nmax 100 - -#Parameters (LCAO) -basis_type lcao -smearing_method gaussian -smearing_sigma 0.02 - -cal_force 1 -#test_force 1 -cal_stress 1 -#test_stress 1 - -mixing_type broyden -mixing_beta 0.4 -nbspline 10 diff --git a/tests/03_NAO_multik/09_NO_S1_smallg/INPUT b/tests/03_NAO_multik/09_NO_S1_smallg/INPUT deleted file mode 100644 index c7245f9ec6..0000000000 --- a/tests/03_NAO_multik/09_NO_S1_smallg/INPUT +++ /dev/null @@ -1,28 +0,0 @@ -INPUT_PARAMETERS -#Parameters (1.General) -suffix autotest -calculation scf - -nbands 6 -symmetry 1 - -#Parameters (2.Iteration) -ecutwfc 20 -scf_thr 1e-9 -scf_nmax 100 - -cal_stress 1 -cal_force 1 - -#Parameters (3.Basis) -basis_type lcao - -#Parameters (4.Smearing) -smearing_method gauss -smearing_sigma 0.002 - -#Parameters (5.Mixing) -mixing_type plain -mixing_beta 0.7 -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB diff --git a/tests/03_NAO_multik/10_NO_S2_smallg/INPUT b/tests/03_NAO_multik/10_NO_S2_smallg/INPUT deleted file mode 100644 index 1b492976a1..0000000000 --- a/tests/03_NAO_multik/10_NO_S2_smallg/INPUT +++ /dev/null @@ -1,29 +0,0 @@ -INPUT_PARAMETERS -#Parameters (1.General) -suffix autotest -calculation scf - -nbands 6 -symmetry 1 -nspin 2 - -#Parameters (2.Iteration) -ecutwfc 20 -scf_thr 1e-9 -scf_nmax 100 - -cal_stress 1 -cal_force 1 - -#Parameters (3.Basis) -basis_type lcao - -#Parameters (4.Smearing) -smearing_method gauss -smearing_sigma 0.002 - -#Parameters (5.Mixing) -mixing_type plain -mixing_beta 0.7 -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB diff --git a/tests/03_NAO_multik/11_NO_KP_AFM/INPUT b/tests/03_NAO_multik/11_NO_KP_AFM/INPUT deleted file mode 100644 index 2a839a962d..0000000000 --- a/tests/03_NAO_multik/11_NO_KP_AFM/INPUT +++ /dev/null @@ -1,35 +0,0 @@ -INPUT_PARAMETERS -#Parameters (1.General) -suffix autotest -calculation scf -symmetry 1 -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB -gamma_only 0 - -#Parameters (2.Iteration) -ecutwfc 5 -scf_thr 1e-6 -scf_nmax 100 - -nspin 2 -#Parameters (3.Basis) -basis_type lcao - -#Parameters (4.Smearing) -smearing_method gauss -smearing_sigma 0.02 - -#Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.4 -mixing_gg0 1.5 - -out_mul 1 - -bx 3 -by 3 -bz 3 - -cal_force 1 -cal_stress 1 diff --git a/tests/03_NAO_multik/11_NO_KP_AFM/mulliken.txt.ref b/tests/03_NAO_multik/11_NO_KP_AFM/mulliken.txt.ref deleted file mode 100644 index 76bb8d2130..0000000000 --- a/tests/03_NAO_multik/11_NO_KP_AFM/mulliken.txt.ref +++ /dev/null @@ -1,100 +0,0 @@ -STEP: 0 -CALCULATE THE MULLIkEN ANALYSIS FOR EACH ATOM - Total charge of spin 1: 16 - Total charge of spin 2: 16 - Total charge: 32 -Decomposed Mulliken populations -0 Zeta of Fe Spin 1 Spin 2 Sum Diff -s 0 0.8060 0.8060 1.6120 0.0000 -s 1 0.6171 0.6171 1.2342 -0.0000 -s 2 0.2479 0.2479 0.4958 0.0000 -s 3 -0.0100 -0.0100 -0.0199 -0.0000 -SUM OVER M+Zeta 1.6610 1.6610 3.3220 0.0000 - -pz 0 0.1563 0.1563 0.3126 0.0000 -px 0 0.1223 0.1223 0.2445 -0.0000 -py 0 0.1223 0.1223 0.2445 -0.0000 -SUM OVER M 0.4008 0.4008 0.8016 0.0000 -pz 1 0.9180 0.9180 1.8360 -0.0000 -px 1 0.8774 0.8774 1.7549 -0.0000 -py 1 0.8774 0.8774 1.7549 -0.0000 -SUM OVER M 2.6729 2.6729 5.3458 -0.0000 -SUM OVER M+Zeta 3.0737 3.0737 6.1474 0.0000 - -dz^2 0 1.0103 1.0103 2.0207 -0.0000 -dxz 0 0.4572 0.4572 0.9145 -0.0000 -dyz 0 0.4572 0.4572 0.9145 -0.0000 -dx^2-y^2 0 1.0436 1.0436 2.0871 -0.0000 -dxy 0 0.0513 0.0513 0.1026 0.0000 -SUM OVER M 3.0197 3.0197 6.0394 0.0000 -dz^2 1 0.0083 0.0083 0.0165 0.0000 -dxz 1 0.0060 0.0060 0.0121 -0.0000 -dyz 1 0.0060 0.0060 0.0121 -0.0000 -dx^2-y^2 1 -0.0011 -0.0011 -0.0023 0.0000 -dxy 1 0.0097 0.0097 0.0195 -0.0000 -SUM OVER M 0.0289 0.0289 0.0578 -0.0000 -SUM OVER M+Zeta 3.0486 3.0486 6.0973 0.0000 - -fz^3 0 0.0329 0.0329 0.0659 -0.0000 -fxz^2 0 -0.0003 -0.0003 -0.0005 -0.0000 -fyz^2 0 -0.0003 -0.0003 -0.0005 -0.0000 -fzx^2-zy^2 0 0.3515 0.3515 0.7029 0.0000 -fxyz 0 0.0119 0.0119 0.0238 -0.0000 -fx^3-3*xy^2 0 0.0325 0.0325 0.0651 0.0000 -f3yx^2-y^3 0 0.0325 0.0325 0.0651 0.0000 -SUM OVER M 0.4608 0.4608 0.9216 0.0000 -SUM OVER M+Zeta 0.4608 0.4608 0.9216 0.0000 - -SUM OVER M+Zeta+L 8.2441 8.2441 16.4883 0.0000 - -Total Charge on atom: Fe 16.4883 -Total Magnetism on atom: Fe 0.0000 - - -1 Zeta of Fe Spin 1 Spin 2 Sum Diff -s 0 0.8385 0.8385 1.6770 -0.0000 -s 1 0.5180 0.5180 1.0361 0.0000 -s 2 0.2561 0.2561 0.5121 -0.0000 -s 3 -0.0025 -0.0025 -0.0050 0.0000 -SUM OVER M+Zeta 1.6101 1.6101 3.2201 -0.0000 - -pz 0 0.1330 0.1330 0.2659 -0.0000 -px 0 0.1277 0.1277 0.2554 0.0000 -py 0 0.1277 0.1277 0.2554 0.0000 -SUM OVER M 0.3884 0.3884 0.7767 0.0000 -pz 1 0.9200 0.9200 1.8401 0.0000 -px 1 0.8966 0.8966 1.7932 0.0000 -py 1 0.8966 0.8966 1.7932 0.0000 -SUM OVER M 2.7132 2.7132 5.4264 0.0000 -SUM OVER M+Zeta 3.1016 3.1016 6.2031 0.0000 - -dz^2 0 0.0199 0.0199 0.0397 -0.0000 -dxz 0 0.8896 0.8896 1.7793 0.0000 -dyz 0 0.8896 0.8896 1.7793 0.0000 -dx^2-y^2 0 0.1493 0.1493 0.2987 -0.0000 -dxy 0 0.9083 0.9083 1.8167 0.0000 -SUM OVER M 2.8568 2.8568 5.7136 0.0000 -dz^2 1 0.0004 0.0004 0.0007 -0.0000 -dxz 1 0.0145 0.0145 0.0291 -0.0000 -dyz 1 0.0145 0.0145 0.0291 -0.0000 -dx^2-y^2 1 -0.0061 -0.0061 -0.0121 -0.0000 -dxy 1 0.0199 0.0199 0.0399 -0.0000 -SUM OVER M 0.0433 0.0433 0.0867 -0.0000 -SUM OVER M+Zeta 2.9001 2.9001 5.8003 -0.0000 - -fz^3 0 0.0299 0.0299 0.0598 -0.0000 -fxz^2 0 0.0059 0.0059 0.0118 0.0000 -fyz^2 0 0.0059 0.0059 0.0118 0.0000 -fzx^2-zy^2 0 -0.0386 -0.0386 -0.0773 0.0000 -fxyz 0 0.0001 0.0001 0.0001 0.0000 -fx^3-3*xy^2 0 0.0705 0.0705 0.1410 0.0000 -f3yx^2-y^3 0 0.0705 0.0705 0.1410 0.0000 -SUM OVER M 0.1441 0.1441 0.2882 0.0000 -SUM OVER M+Zeta 0.1441 0.1441 0.2882 0.0000 - -SUM OVER M+Zeta+L 7.7559 7.7559 15.5117 -0.0000 - -Total Charge on atom: Fe 15.5117 -Total Magnetism on atom: Fe -0.0000 - - diff --git a/tests/03_NAO_multik/12_NO_KP_FM_OD/INPUT b/tests/03_NAO_multik/12_NO_KP_FM_OD/INPUT deleted file mode 100644 index ffc5d1d3bf..0000000000 --- a/tests/03_NAO_multik/12_NO_KP_FM_OD/INPUT +++ /dev/null @@ -1,30 +0,0 @@ -INPUT_PARAMETERS -#Parameters (1.General) -suffix autotest -calculation scf - -nbands 20 -symmetry 1 -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB -gamma_only 0 - -#Parameters (2.Iteration) -ecutwfc 10 -scf_thr 1e-7 -scf_nmax 100 - -nspin 2 -#Parameters (3.Basis) -basis_type lcao - -#Parameters (4.Smearing) -smearing_method gauss -smearing_sigma 0.002 - -#Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.4 -mixing_beta_mag 0.4 - -out_dos 1 diff --git a/tests/03_NAO_multik/13_NO_KP_NC/INPUT b/tests/03_NAO_multik/13_NO_KP_NC/INPUT deleted file mode 100644 index b320468473..0000000000 --- a/tests/03_NAO_multik/13_NO_KP_NC/INPUT +++ /dev/null @@ -1,30 +0,0 @@ -INPUT_PARAMETERS -#Parameters (1.General) -suffix autotest -calculation scf - -symmetry 0 -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB -gamma_only 0 - -#Parameters (2.Iteration) -ecutwfc 15 -scf_thr 1e-7 -scf_nmax 50 - -noncolin 1 -#Parameters (3.Basis) -basis_type lcao - -#Parameters (4.Smearing) -smearing_method gauss -smearing_sigma 0.02 - -#Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.7 -mixing_ndim 15 -mixing_gg0 1.0 - -cal_force 1 diff --git a/tests/03_NAO_multik/13_NO_KP_NC/result.ref b/tests/03_NAO_multik/13_NO_KP_NC/result.ref deleted file mode 100644 index b03c969e44..0000000000 --- a/tests/03_NAO_multik/13_NO_KP_NC/result.ref +++ /dev/null @@ -1,4 +0,0 @@ -etotref -6267.465188850501 -etotperatomref -3133.7325944253 -totalforceref 0.000000 -totaltimeref 2.26 diff --git a/tests/03_NAO_multik/14_NO_KP_NC/INPUT b/tests/03_NAO_multik/14_NO_KP_NC/INPUT deleted file mode 100644 index ed44368b77..0000000000 --- a/tests/03_NAO_multik/14_NO_KP_NC/INPUT +++ /dev/null @@ -1,29 +0,0 @@ -INPUT_PARAMETERS - -# non-collinear LCAO calculations -basis_type lcao -noncolin 1 -symmetry 1 - -calculation scf -ks_solver scalapack_gvx -ecutwfc 26 -scf_thr 1.0e-8 -scf_nmax 200 - -# smearing method -smearing_method gaussian -smearing_sigma 0.07 - -# charge mixing method -mixing_type broyden -mixing_beta 0.5 -mixing_ndim 10 - -# output Mulliken charge -out_mul 1 - -# pseudopotential and orbital directories -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB -suffix autotest diff --git a/tests/03_NAO_multik/14_NO_KP_NC/mulliken.txt.ref b/tests/03_NAO_multik/14_NO_KP_NC/mulliken.txt.ref deleted file mode 100644 index 2322f10724..0000000000 --- a/tests/03_NAO_multik/14_NO_KP_NC/mulliken.txt.ref +++ /dev/null @@ -1,98 +0,0 @@ -STEP: 0 -CALCULATE THE MULLIkEN ANALYSIS FOR EACH ATOM - Total charge: 32 -Decomposed Mulliken populations -0 Zeta of Fe Spin 1 Spin 2 Spin 3 Spin 4 -s 0 1.4819 -0.0042 -0.0000 0.0000 -s 1 1.1240 0.0128 0.0000 0.0000 -s 2 0.4194 -0.0019 0.0000 -0.0000 -s 3 -0.0253 0.0009 0.0000 -0.0000 -SUM OVER M+Zeta 3.0000 0.0075 -0.0000 0.0000 - -pz 0 0.2288 0.0004 0.0000 -0.0000 -px 0 0.2288 0.0004 0.0000 -0.0000 -py 0 0.2288 0.0004 0.0000 -0.0000 -SUM OVER M 0.6863 0.0011 0.0000 -0.0000 -pz 1 1.7550 0.0005 0.0000 0.0000 -px 1 1.7550 0.0005 0.0000 0.0000 -py 1 1.7550 0.0005 0.0000 0.0000 -SUM OVER M 5.2650 0.0016 0.0000 0.0000 -SUM OVER M+Zeta 5.9514 0.0026 0.0000 0.0000 - -dz^2 0 1.8128 0.0191 0.0000 0.0000 -dxz 0 1.0631 0.3911 -0.0000 0.0000 -dyz 0 1.0631 0.3911 -0.0000 0.0000 -dx^2-y^2 0 1.8128 0.0191 0.0000 0.0000 -dxy 0 1.0631 0.3911 -0.0000 0.0000 -SUM OVER M 6.8147 1.2116 0.0000 0.0000 -dz^2 1 0.0040 0.0000 0.0000 0.0000 -dxz 1 0.0591 -0.0100 0.0000 0.0000 -dyz 1 0.0591 -0.0100 0.0000 0.0000 -dx^2-y^2 1 0.0040 0.0000 0.0000 0.0000 -dxy 1 0.0591 -0.0100 0.0000 0.0000 -SUM OVER M 0.1853 -0.0298 0.0000 0.0000 -SUM OVER M+Zeta 7.0000 1.1818 0.0000 0.0000 - -fz^3 0 0.0162 0.0017 0.0000 0.0000 -fxz^2 0 0.0061 0.0006 0.0000 0.0000 -fyz^2 0 0.0061 0.0006 0.0000 0.0000 -fzx^2-zy^2 0 0.0000 0.0000 0.0000 0.0000 -fxyz 0 0.0000 0.0000 0.0000 0.0000 -fx^3-3*xy^2 0 0.0101 0.0011 0.0000 0.0000 -f3yx^2-y^3 0 0.0101 0.0011 0.0000 0.0000 -SUM OVER M 0.0486 0.0051 0.0000 0.0000 -SUM OVER M+Zeta 0.0486 0.0051 0.0000 0.0000 - -SUM OVER M+Zeta+L 16.0000 1.1970 0.0000 0.0000 - -Total Charge on atom: Fe 16.0000 -Total Magnetism on atom: Fe 1.1970 0.0000 0.0000 - - -1 Zeta of Fe Spin 1 Spin 2 Spin 3 Spin 4 -s 0 1.4819 0.0042 -0.0000 0.0000 -s 1 1.1240 -0.0128 0.0000 0.0000 -s 2 0.4194 0.0019 0.0000 -0.0000 -s 3 -0.0253 -0.0009 0.0000 -0.0000 -SUM OVER M+Zeta 3.0000 -0.0075 -0.0000 -0.0000 - -pz 0 0.2288 -0.0004 0.0000 -0.0000 -px 0 0.2288 -0.0004 0.0000 -0.0000 -py 0 0.2288 -0.0004 0.0000 -0.0000 -SUM OVER M 0.6863 -0.0011 0.0000 -0.0000 -pz 1 1.7550 -0.0005 0.0000 0.0000 -px 1 1.7550 -0.0005 0.0000 0.0000 -py 1 1.7550 -0.0005 0.0000 0.0000 -SUM OVER M 5.2650 -0.0016 0.0000 0.0000 -SUM OVER M+Zeta 5.9514 -0.0026 0.0000 -0.0000 - -dz^2 0 1.8128 -0.0191 0.0000 -0.0000 -dxz 0 1.0631 -0.3911 -0.0000 0.0000 -dyz 0 1.0631 -0.3911 -0.0000 0.0000 -dx^2-y^2 0 1.8128 -0.0191 0.0000 -0.0000 -dxy 0 1.0631 -0.3911 -0.0000 0.0000 -SUM OVER M 6.8147 -1.2116 0.0000 -0.0000 -dz^2 1 0.0040 -0.0000 0.0000 0.0000 -dxz 1 0.0591 0.0100 0.0000 0.0000 -dyz 1 0.0591 0.0100 0.0000 0.0000 -dx^2-y^2 1 0.0040 -0.0000 0.0000 0.0000 -dxy 1 0.0591 0.0100 0.0000 0.0000 -SUM OVER M 0.1853 0.0298 0.0000 0.0000 -SUM OVER M+Zeta 7.0000 -1.1818 0.0000 -0.0000 - -fz^3 0 0.0162 -0.0017 0.0000 0.0000 -fxz^2 0 0.0061 -0.0006 0.0000 0.0000 -fyz^2 0 0.0061 -0.0006 0.0000 0.0000 -fzx^2-zy^2 0 0.0000 0.0000 0.0000 0.0000 -fxyz 0 0.0000 0.0000 0.0000 0.0000 -fx^3-3*xy^2 0 0.0101 -0.0011 0.0000 0.0000 -f3yx^2-y^3 0 0.0101 -0.0011 0.0000 0.0000 -SUM OVER M 0.0486 -0.0051 0.0000 0.0000 -SUM OVER M+Zeta 0.0486 -0.0051 0.0000 0.0000 - -SUM OVER M+Zeta+L 16.0000 -1.1970 0.0000 -0.0000 - -Total Charge on atom: Fe 16.0000 -Total Magnetism on atom: Fe -1.1970 0.0000 -0.0000 - - diff --git a/tests/03_NAO_multik/15_NO_KP_OB/INPUT b/tests/03_NAO_multik/15_NO_KP_OB/INPUT deleted file mode 100644 index 94af54e923..0000000000 --- a/tests/03_NAO_multik/15_NO_KP_OB/INPUT +++ /dev/null @@ -1,27 +0,0 @@ -INPUT_PARAMETERS -#Parameters (1.General) -suffix autotest -calculation nscf - -nbands 6 -symmetry 0 -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB -read_file_dir ./ -gamma_only 0 - -#Parameters (2.Iteration) -ecutwfc 20 -scf_thr 1e-8 -scf_nmax 100 - -#out_chg 1 -init_chg file -out_band 1 -out_proj_band 1 -pw_diag_thr 0.00001 - -#Parameters (3.Basis) -basis_type lcao - -ks_solver scalapack_gvx diff --git a/tests/03_NAO_multik/16_NO_KP_OD/INPUT b/tests/03_NAO_multik/16_NO_KP_OD/INPUT deleted file mode 100644 index 018c953828..0000000000 --- a/tests/03_NAO_multik/16_NO_KP_OD/INPUT +++ /dev/null @@ -1,34 +0,0 @@ -INPUT_PARAMETERS -#Parameters (1.General) -suffix autotest -calculation nscf - -nbands 6 -symmetry 0 -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB -read_file_dir ./ -gamma_only 0 - -#Parameters (2.Iteration) -ecutwfc 20 -scf_thr 1e-8 -scf_nmax 100 - -init_chg file -out_dos 1 -pw_diag_thr 0.00001 - -#Parameters (3.Basis) -basis_type lcao - -#Parameters (4.Smearing) -smearing_method gauss -smearing_sigma 0.002 - -#Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.7 -mixing_gg0 1.5 - -ks_solver scalapack_gvx diff --git a/tests/03_NAO_multik/17_NO_KP_OH/INPUT b/tests/03_NAO_multik/17_NO_KP_OH/INPUT deleted file mode 100644 index 0efe436f03..0000000000 --- a/tests/03_NAO_multik/17_NO_KP_OH/INPUT +++ /dev/null @@ -1,30 +0,0 @@ -INPUT_PARAMETERS -#Parameters (1.General) -suffix autotest -calculation scf - -nbands 6 -symmetry 0 -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB -gamma_only 0 - -#Parameters (2.Iteration) -ecutwfc 20 -scf_thr 1e-8 -scf_nmax 50 - -#Parameters (3.Basis) -basis_type lcao - -#Parameters (4.Smearing) -smearing_method gauss -smearing_sigma 0.002 - -#Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.7 - -out_mat_hs 1 5 -ks_solver scalapack_gvx -out_ndigits 5 diff --git a/tests/03_NAO_multik/17_NO_KP_OH/hks1k2_nao.txt.ref b/tests/03_NAO_multik/17_NO_KP_OH/hks1k2_nao.txt.ref deleted file mode 100644 index 409d3c29fc..0000000000 --- a/tests/03_NAO_multik/17_NO_KP_OH/hks1k2_nao.txt.ref +++ /dev/null @@ -1,26 +0,0 @@ -26 (-0.082776,-9.1297e-33) (-0.11465,2.1006e-17) (-0.020367,-9.5125e-16) (-0.020367,-9.5125e-16) (0.020367,9.5125e-16) (0.029184,1.3014e-15) (0.029184,1.3014e-15) (-0.029184,-1.3014e-15) (1.0922e-16,5.4272e-32) (-0.066314,-1.4078e-16) (0.066314,1.4078e-16) (4.2246e-16,4.4042e-32) (0.066314,1.4078e-16) (-0.19457,-1.035e-15) (0.10188,-2.722e-16) (0.11256,-8.2438e-16) (0.11256,-8.2438e-16) (-0.11256,8.2438e-16) (0.0034458,7.6953e-16) (0.0034458,7.6953e-16) (-0.0034458,-7.6953e-16) (-3.4085e-17,5.981e-31) (-0.038015,8.7631e-17) (0.038015,-8.7631e-17) (1.1196e-16,1.4241e-31) (0.038015,-8.7631e-17) - (0.70902,3.8567e-31) (-0.051417,2.1842e-16) (-0.051417,2.1842e-16) (0.051417,-2.1842e-16) (0.061774,-2.1271e-15) (0.061774,-2.1271e-15) (-0.061774,2.1271e-15) (1.0242e-16,5.9747e-31) (0.029537,-4.4615e-16) (-0.029537,4.4615e-16) (-3.8764e-17,-2.539e-31) (-0.029537,4.4615e-16) (0.10188,-2.722e-16) (0.058306,2.548e-15) (-0.14708,6.1324e-16) (-0.14708,6.1324e-16) (0.14708,-6.1324e-16) (0.16668,-1.8109e-15) (0.16668,-1.8109e-15) (-0.16668,1.8109e-15) (1.9326e-17,-8.9906e-32) (0.0087689,2.0855e-16) (-0.0087689,-2.0855e-16) (1.49e-16,-8.3232e-31) (-0.0087689,-2.0855e-16) - (0.28447,5.7303e-32) (-0.06343,1.9518e-31) (0.06343,8.9706e-31) (0.26975,2.2586e-17) (-0.074643,2.6518e-18) (0.074643,-2.6518e-18) (-0.008018,-5.1887e-17) (-0.031919,-6.006e-17) (0.031919,6.006e-17) (1.6266e-17,-6.8941e-31) (0.10178,-2.8642e-17) (-0.11256,8.2438e-16) (0.14708,-6.1324e-16) (-0.027588,-3.458e-16) (0.013264,-4.1515e-16) (-0.013264,4.1515e-16) (-0.080332,5.945e-16) (-0.12029,8.2169e-16) (0.12029,-8.2169e-16) (0.042437,-1.42e-16) (-0.039652,2.1512e-16) (0.039652,-2.1512e-16) (1.5921e-17,-3.314e-31) (-0.069547,-3.4356e-16) - (0.28447,-5.9725e-33) (0.06343,-1.6844e-31) (-0.074643,2.6518e-18) (0.26975,2.2586e-17) (0.074643,-2.6518e-18) (0.004009,2.5944e-17) (-0.031919,-6.006e-17) (0.10178,-2.8642e-17) (-0.0069438,-4.4936e-17) (0.031919,6.006e-17) (-0.11256,8.2438e-16) (0.14708,-6.1324e-16) (0.013264,-4.1515e-16) (-0.027588,-3.458e-16) (-0.013264,4.1515e-16) (-0.12029,8.2169e-16) (-0.080332,5.945e-16) (0.12029,-8.2169e-16) (-0.021219,7.1e-17) (-0.039652,2.1512e-16) (-0.069547,-3.4356e-16) (0.036752,-1.2298e-16) (0.039652,-2.1512e-16) - (0.28447,6.9645e-32) (0.074643,-2.6518e-18) (0.074643,-2.6518e-18) (0.26975,2.2586e-17) (-0.004009,-2.5944e-17) (0.10178,-2.8642e-17) (-0.031919,-6.006e-17) (-0.0069438,-4.4936e-17) (-0.031919,-6.006e-17) (0.11256,-8.2438e-16) (-0.14708,6.1324e-16) (-0.013264,4.1515e-16) (-0.013264,4.1515e-16) (-0.027588,-3.458e-16) (0.12029,-8.2169e-16) (0.12029,-8.2169e-16) (-0.080332,5.945e-16) (0.021219,-7.1e-17) (-0.069547,-3.4356e-16) (-0.039652,2.1512e-16) (0.036752,-1.2298e-16) (-0.039652,2.1512e-16) - (1.0055,4.7569e-33) (0.28657,3.8931e-30) (-0.28657,-3.3844e-32) (0.00042938,2.1669e-16) (0.061926,-2.9486e-16) (-0.061926,2.9486e-16) (-7.359e-17,1.6781e-30) (-0.026141,1.5691e-16) (-0.0034458,-7.6953e-16) (-0.16668,1.8109e-15) (-0.080332,5.945e-16) (-0.12029,8.2169e-16) (0.12029,-8.2169e-16) (0.31908,-5.8099e-16) (0.15471,-3.9248e-16) (-0.15471,3.9248e-16) (-0.018858,-1.3465e-16) (-0.077067,-2.8751e-16) (0.077067,2.8751e-16) (-1.0408e-17,1.155e-31) (0.073506,2.4706e-16) - (1.0055,-6.6696e-32) (-0.28657,3.3727e-30) (-0.00021469,-1.0834e-16) (0.061926,-2.9486e-16) (-0.026141,1.5691e-16) (0.00037185,1.8766e-16) (-0.061926,2.9486e-16) (-0.0034458,-7.6953e-16) (-0.16668,1.8109e-15) (-0.12029,8.2169e-16) (-0.080332,5.945e-16) (0.12029,-8.2169e-16) (0.15471,-3.9248e-16) (0.31908,-5.8099e-16) (-0.15471,3.9248e-16) (0.0094292,6.7324e-17) (-0.077067,-2.8751e-16) (0.073506,2.4706e-16) (-0.016332,-1.1661e-16) (0.077067,2.8751e-16) - (1.0055,-1.4293e-31) (0.00021469,1.0834e-16) (-0.026141,1.5691e-16) (0.061926,-2.9486e-16) (0.00037185,1.8766e-16) (0.061926,-2.9486e-16) (0.0034458,7.6953e-16) (0.16668,-1.8109e-15) (0.12029,-8.2169e-16) (0.12029,-8.2169e-16) (-0.080332,5.945e-16) (-0.15471,3.9248e-16) (-0.15471,3.9248e-16) (0.31908,-5.8099e-16) (-0.0094292,-6.7324e-17) (0.073506,2.4706e-16) (-0.077067,-2.8751e-16) (-0.016332,-1.1661e-16) (-0.077067,-2.8751e-16) - (1.3565,3.9521e-33) (-0.0083012,-3.7999e-17) (0.0083012,3.7999e-17) (-1.1507e-17,2.6613e-32) (-0.016602,-7.5998e-17) (3.2485e-17,9.6106e-32) (-2.0659e-16,-3.322e-31) (-0.042437,1.42e-16) (0.021219,-7.1e-17) (-0.021219,7.1e-17) (0.018858,1.3465e-16) (-0.0094292,-6.7324e-17) (0.0094292,6.7324e-17) (-0.11025,-5.1483e-16) (0.053608,-2.01e-16) (-0.053608,2.01e-16) (-5.9267e-17,-6.5921e-32) (0.10722,-4.02e-16) - (1.2857,-7.7255e-33) (0.027582,5.2214e-31) (-0.014378,6.5817e-17) (0.027582,1.1109e-31) (-0.038015,8.7631e-17) (0.0087689,2.0855e-16) (0.039652,-2.1512e-16) (0.039652,-2.1512e-16) (0.069547,3.4356e-16) (0.077067,2.8751e-16) (0.077067,2.8751e-16) (-0.073506,-2.4706e-16) (0.053608,-2.01e-16) (0.048247,1.8491e-16) (0.11466,-5.1565e-16) (0.092851,-3.4815e-16) (0.11466,-5.1565e-16) - (1.2857,6.8651e-32) (-0.014378,6.5817e-17) (-0.027582,3.1108e-31) (0.038015,-8.7631e-17) (-0.0087689,-2.0855e-16) (-0.039652,2.1512e-16) (0.069547,3.4356e-16) (0.039652,-2.1512e-16) (-0.077067,-2.8751e-16) (-0.073506,-2.4706e-16) (0.077067,2.8751e-16) (-0.053608,2.01e-16) (0.11466,-5.1565e-16) (0.048247,1.8491e-16) (0.092851,-3.4815e-16) (-0.11466,5.1565e-16) - (1.3565,6.28e-33) (1.1813e-17,-1.2652e-31) (2.0931e-16,6.8859e-31) (1.1554e-16,5.7494e-31) (-2.8145e-16,9.5266e-31) (-0.036752,1.2298e-16) (-0.036752,1.2298e-16) (2.7461e-16,-6.9214e-31) (0.016332,1.1661e-16) (0.016332,1.1661e-16) (-5.2225e-17,-1.7437e-32) (0.092851,-3.4815e-16) (0.092851,-3.4815e-16) (-0.11025,-5.1483e-16) (-1.2277e-16,2.7021e-31) - (1.2857,1.7309e-32) (0.038015,-8.7631e-17) (-0.0087689,-2.0855e-16) (0.069547,3.4356e-16) (-0.039652,2.1512e-16) (0.039652,-2.1512e-16) (-0.073506,-2.4706e-16) (-0.077067,-2.8751e-16) (0.077067,2.8751e-16) (0.10722,-4.02e-16) (0.11466,-5.1565e-16) (-0.11466,5.1565e-16) (-5.1327e-17,1.342e-31) (0.048247,1.8491e-16) - (-0.082776,-5.2578e-33) (-0.11465,-2.1006e-17) (0.020367,-9.5125e-16) (0.020367,-9.5125e-16) (-0.020367,9.5125e-16) (-0.029184,1.3014e-15) (-0.029184,1.3014e-15) (0.029184,-1.3014e-15) (2.9066e-16,4.7894e-32) (-0.066314,1.4078e-16) (0.066314,-1.4078e-16) (1.0835e-16,1.5036e-32) (0.066314,-1.4078e-16) - (0.70902,-2.8462e-31) (0.051417,2.1842e-16) (0.051417,2.1842e-16) (-0.051417,-2.1842e-16) (-0.061774,-2.1271e-15) (-0.061774,-2.1271e-15) (0.061774,2.1271e-15) (-8.627e-17,2.3684e-31) (0.029537,4.4615e-16) (-0.029537,-4.4615e-16) (3.4093e-17,-6.1297e-32) (-0.029537,-4.4615e-16) - (0.28447,-1.1435e-31) (-0.06343,3.2491e-32) (0.06343,6.0296e-31) (0.26975,-2.2586e-17) (-0.074643,-2.6518e-18) (0.074643,2.6518e-18) (0.008018,-5.1887e-17) (0.031919,-6.006e-17) (-0.031919,6.006e-17) (-6.2555e-17,-1.1012e-31) (-0.10178,-2.8642e-17) - (0.28447,9.505e-32) (0.06343,-5.2051e-31) (-0.074643,-2.6518e-18) (0.26975,-2.2586e-17) (0.074643,2.6518e-18) (-0.004009,2.5944e-17) (0.031919,-6.006e-17) (-0.10178,-2.8642e-17) (0.0069438,-4.4936e-17) (-0.031919,6.006e-17) - (0.28447,-8.1192e-32) (0.074643,2.6518e-18) (0.074643,2.6518e-18) (0.26975,-2.2586e-17) (0.004009,-2.5944e-17) (-0.10178,-2.8642e-17) (0.031919,-6.006e-17) (0.0069438,-4.4936e-17) (0.031919,-6.006e-17) - (1.0055,-8.3122e-31) (0.28657,9.0876e-31) (-0.28657,-9.0792e-32) (-0.00042938,2.1669e-16) (-0.061926,-2.9486e-16) (0.061926,2.9486e-16) (1.538e-17,3.5072e-31) (0.026141,1.5691e-16) - (1.0055,-1.3511e-31) (-0.28657,-7.5834e-31) (0.00021469,-1.0834e-16) (-0.061926,-2.9486e-16) (0.026141,1.5691e-16) (-0.00037185,1.8766e-16) (0.061926,2.9486e-16) - (1.0055,-4.6716e-31) (-0.00021469,1.0834e-16) (0.026141,1.5691e-16) (-0.061926,-2.9486e-16) (-0.00037185,1.8766e-16) (-0.061926,-2.9486e-16) - (1.3565,1.5062e-33) (-0.0083012,3.7999e-17) (0.0083012,-3.7999e-17) (-2.1236e-16,-5.9465e-32) (-0.016602,7.5998e-17) - (1.2857,3.5983e-33) (0.027582,-1.4237e-31) (-0.014378,-6.5817e-17) (0.027582,-1.322e-31) - (1.2857,9.3771e-34) (-0.014378,-6.5817e-17) (-0.027582,-1.697e-31) - (1.3565,7.2768e-33) (-8.0332e-18,6.5361e-32) - (1.2857,1.0457e-32) diff --git a/tests/03_NAO_multik/17_NO_KP_OH/result.ref b/tests/03_NAO_multik/17_NO_KP_OH/result.ref deleted file mode 100644 index 3604bdcfc3..0000000000 --- a/tests/03_NAO_multik/17_NO_KP_OH/result.ref +++ /dev/null @@ -1,5 +0,0 @@ -etotref -211.4466153062836 -etotperatomref -105.7233076531 -CompareH_pass 0 -CompareS_pass 0 -totaltimeref 0.62879 diff --git a/tests/03_NAO_multik/17_NO_KP_OH/sks1k2_nao.txt.ref b/tests/03_NAO_multik/17_NO_KP_OH/sks1k2_nao.txt.ref deleted file mode 100644 index fe7ca72f8d..0000000000 --- a/tests/03_NAO_multik/17_NO_KP_OH/sks1k2_nao.txt.ref +++ /dev/null @@ -1,26 +0,0 @@ -26 (0.98506,6.051e-33) (-0.097322,4.5979e-31) (1.4623e-17,2.204e-15) (-2.2985e-17,2.204e-15) (1.0435e-18,-2.204e-15) (-9.3919e-18,-4.7412e-15) (6.7871e-17,-4.7412e-15) (-1.4894e-17,4.7412e-15) (2.6309e-18,-1.509e-33) (0.085054,-2.1775e-33) (-0.085054,5.2285e-33) (-1.4383e-18,1.0987e-33) (-0.085054,5.1332e-33) (0.44884,2.2113e-15) (0.30005,3.5326e-15) (-0.48489,2.7256e-15) (-0.48489,2.7256e-15) (0.48489,-2.7256e-15) (0.50089,-4.1094e-15) (0.50089,-4.1094e-15) (-0.50089,4.1094e-15) (3.0632e-17,9.9267e-32) (0.2435,-8.2215e-16) (-0.2435,8.2215e-16) (3.4849e-17,8.3295e-32) (-0.2435,8.2215e-16) - (0.52584,-1.7849e-31) (2.1305e-17,4.8136e-15) (-8.2399e-18,4.8136e-15) (-5.4698e-17,-4.8136e-15) (-1.1493e-17,-5.5917e-15) (-8.6736e-18,-5.5917e-15) (-3.1876e-17,5.5917e-15) (-5.8276e-19,1.881e-32) (0.19474,1.6187e-32) (-0.19474,2.2817e-32) (6.18e-18,-1.3226e-32) (-0.19474,1.5018e-32) (0.30005,3.5326e-15) (-0.1912,2.4585e-15) (-0.11272,3.2857e-15) (-0.11272,3.2857e-15) (0.11272,-3.2857e-15) (0.11541,-4.3523e-15) (0.11541,-4.3523e-15) (-0.11541,4.3523e-15) (-2.1413e-18,-1.4102e-31) (-0.093884,1.3106e-15) (0.093884,-1.3106e-15) (1.8208e-17,-2.4998e-31) (0.093884,-1.3106e-15) - (1.0467,-4.2517e-32) (0.44713,-3.4401e-32) (-0.44713,3.1086e-32) (-0.11227,-1.9033e-31) (-0.68287,-2.6335e-32) (0.68287,2.0323e-32) (2.2023e-19,4.5287e-17) (-4.7705e-18,4.1314e-16) (2.8189e-18,-4.1314e-16) (8.6736e-19,2.0632e-31) (1.6263e-19,-3.1793e-17) (0.48489,-2.7256e-15) (0.11272,-3.2857e-15) (0.21954,1.3501e-16) (0.50325,-5.4124e-16) (-0.50325,5.4124e-16) (-0.55027,-1.2526e-15) (-0.35946,-1.4452e-15) (0.35946,1.4452e-15) (0.19188,-6.2657e-16) (-0.024506,3.0536e-16) (0.024506,-3.0536e-16) (2.8465e-17,2.7868e-32) (-0.30449,-8.9756e-16) - (1.0467,3.248e-32) (-0.44713,-1.5155e-32) (-0.68287,-2.6335e-32) (-0.11227,-1.0888e-31) (0.68287,9.3286e-32) (-1.1113e-18,-2.2644e-17) (1.2604e-18,4.1314e-16) (5.421e-20,-3.1793e-17) (5.8276e-19,3.922e-17) (-2.4733e-18,-4.1314e-16) (0.48489,-2.7256e-15) (0.11272,-3.2857e-15) (0.50325,-5.4124e-16) (0.21954,1.3501e-16) (-0.50325,5.4124e-16) (-0.35946,-1.4452e-15) (-0.55027,-1.2526e-15) (0.35946,1.4452e-15) (-0.095942,3.1329e-16) (-0.024506,3.0536e-16) (-0.30449,-8.9756e-16) (0.16618,-5.4263e-16) (0.024506,-3.0536e-16) - (1.0467,-4.2902e-32) (0.68287,2.0323e-32) (0.68287,9.3286e-32) (-0.11227,-1.1949e-31) (2.741e-18,2.2644e-17) (5.421e-20,-3.1793e-17) (3.1035e-18,4.1314e-16) (5.2855e-19,3.922e-17) (3.9844e-18,4.1314e-16) (-0.48489,2.7256e-15) (-0.11272,3.2857e-15) (-0.50325,5.4124e-16) (-0.50325,5.4124e-16) (0.21954,1.3501e-16) (0.35946,1.4452e-15) (0.35946,1.4452e-15) (-0.55027,-1.2526e-15) (0.095942,-3.1329e-16) (-0.30449,-8.9756e-16) (-0.024506,3.0536e-16) (0.16618,-5.4263e-16) (-0.024506,3.0536e-16) - (1.2292,4.3876e-33) (0.58205,-2.8391e-32) (-0.58205,2.5082e-32) (-2.575e-19,2.4193e-16) (1.301e-18,-1.3008e-16) (2.8189e-18,1.3008e-16) (-1.3824e-18,-3.5917e-31) (0,8.7897e-17) (-0.50089,4.1094e-15) (-0.11541,4.3523e-15) (-0.55027,-1.2526e-15) (-0.35946,-1.4452e-15) (0.35946,1.4452e-15) (0.38305,2.6688e-15) (0.46484,2.7809e-15) (-0.46484,-2.7809e-15) (0.12648,-6.3282e-16) (-0.26248,4.269e-16) (0.26248,-4.269e-16) (2.9985e-17,-5.2375e-31) (-0.013886,-8.3534e-16) - (1.2292,8.8387e-32) (-0.58205,1.4753e-32) (1.6263e-18,-1.2097e-16) (6.7763e-19,-1.3008e-16) (0,8.7897e-17) (-1.2468e-18,2.0952e-16) (-3.6185e-18,1.3008e-16) (-0.50089,4.1094e-15) (-0.11541,4.3523e-15) (-0.35946,-1.4452e-15) (-0.55027,-1.2526e-15) (0.35946,1.4452e-15) (0.46484,2.7809e-15) (0.38305,2.6688e-15) (-0.46484,-2.7809e-15) (-0.063239,3.1641e-16) (-0.26248,4.269e-16) (-0.013886,-8.3534e-16) (0.10953,-5.4804e-16) (0.26248,-4.269e-16) - (1.2292,-4.8569e-33) (1.0151e-17,1.2097e-16) (0,8.7897e-17) (-3.361e-18,-1.3008e-16) (1.3553e-18,2.0952e-16) (-1.7212e-18,-1.3008e-16) (0.50089,-4.1094e-15) (0.11541,-4.3523e-15) (0.35946,1.4452e-15) (0.35946,1.4452e-15) (-0.55027,-1.2526e-15) (-0.46484,-2.7809e-15) (-0.46484,-2.7809e-15) (0.38305,2.6688e-15) (0.063239,-3.1641e-16) (-0.013886,-8.3534e-16) (-0.26248,4.269e-16) (0.10953,-5.4804e-16) (-0.26248,4.269e-16) - (1.0122,1.2137e-32) (-0.05654,4.7639e-33) (0.05654,-2.6921e-33) (3.1171e-19,-5.4211e-33) (-0.11308,1.0697e-32) (3.0632e-17,9.9267e-32) (-2.1413e-18,-1.4102e-31) (-0.19188,6.2657e-16) (0.095942,-3.1329e-16) (-0.095942,3.1329e-16) (-0.12648,6.3282e-16) (0.063239,-3.1641e-16) (-0.063239,3.1641e-16) (-0.29169,-9.5242e-16) (0.11303,-4.3584e-16) (-0.11303,4.3584e-16) (-2.8155e-17,-1.1033e-31) (0.22606,-8.7168e-16) - (0.99552,6.2322e-33) (-0.030829,9.7026e-34) (-0.097931,-1.2331e-32) (-0.030829,-4.7837e-35) (0.2435,-8.2215e-16) (-0.093884,1.3106e-15) (0.024506,-3.0536e-16) (0.024506,-3.0536e-16) (0.30449,8.9756e-16) (0.26248,-4.269e-16) (0.26248,-4.269e-16) (0.013886,8.3534e-16) (0.11303,-4.3584e-16) (0.038813,2.889e-16) (0.13077,-4.249e-16) (0.19578,-7.549e-16) (0.13077,-4.249e-16) - (0.99552,-2.5219e-32) (-0.097931,-1.1642e-32) (0.030829,4.7012e-35) (-0.2435,8.2215e-16) (0.093884,-1.3106e-15) (-0.024506,3.0536e-16) (0.30449,8.9756e-16) (0.024506,-3.0536e-16) (-0.26248,4.269e-16) (0.013886,8.3534e-16) (0.26248,-4.269e-16) (-0.11303,4.3584e-16) (0.13077,-4.249e-16) (0.038813,2.889e-16) (0.19578,-7.549e-16) (-0.13077,4.249e-16) - (1.0122,-3.2171e-33) (3.4797e-17,-9.2822e-35) (3.4849e-17,8.3295e-32) (1.8208e-17,-2.4998e-31) (-2.8465e-17,-2.7868e-32) (-0.16618,5.4263e-16) (-0.16618,5.4263e-16) (-2.9985e-17,5.2375e-31) (-0.10953,5.4804e-16) (-0.10953,5.4804e-16) (-2.8155e-17,-1.1033e-31) (0.19578,-7.549e-16) (0.19578,-7.549e-16) (-0.29169,-9.5242e-16) (8.0045e-19,5.1353e-33) - (0.99552,-4.3545e-32) (-0.2435,8.2215e-16) (0.093884,-1.3106e-15) (0.30449,8.9756e-16) (-0.024506,3.0536e-16) (0.024506,-3.0536e-16) (0.013886,8.3534e-16) (-0.26248,4.269e-16) (0.26248,-4.269e-16) (0.22606,-8.7168e-16) (0.13077,-4.249e-16) (-0.13077,4.249e-16) (8.0045e-19,5.1353e-33) (0.038813,2.889e-16) - (0.98506,6.051e-33) (-0.097322,4.5979e-31) (1.4623e-17,2.204e-15) (-2.2985e-17,2.204e-15) (1.0435e-18,-2.204e-15) (-9.3919e-18,-4.7412e-15) (6.7871e-17,-4.7412e-15) (-1.4894e-17,4.7412e-15) (2.6309e-18,-1.509e-33) (0.085054,-2.1775e-33) (-0.085054,5.2285e-33) (-1.4383e-18,1.0987e-33) (-0.085054,5.1332e-33) - (0.52584,-1.7849e-31) (2.1305e-17,4.8136e-15) (-8.2399e-18,4.8136e-15) (-5.4698e-17,-4.8136e-15) (-1.1493e-17,-5.5917e-15) (-8.6736e-18,-5.5917e-15) (-3.1876e-17,5.5917e-15) (-5.8276e-19,1.881e-32) (0.19474,1.6187e-32) (-0.19474,2.2817e-32) (6.18e-18,-1.3226e-32) (-0.19474,1.5018e-32) - (1.0467,-4.2517e-32) (0.44713,-3.4401e-32) (-0.44713,3.1086e-32) (-0.11227,-1.9033e-31) (-0.68287,-2.6335e-32) (0.68287,2.0323e-32) (2.2023e-19,4.5287e-17) (-4.7705e-18,4.1314e-16) (2.8189e-18,-4.1314e-16) (8.6736e-19,2.0632e-31) (1.6263e-19,-3.1793e-17) - (1.0467,3.248e-32) (-0.44713,-1.5155e-32) (-0.68287,-2.6335e-32) (-0.11227,-1.0888e-31) (0.68287,9.3286e-32) (-1.1113e-18,-2.2644e-17) (1.2604e-18,4.1314e-16) (5.421e-20,-3.1793e-17) (5.8276e-19,3.922e-17) (-2.4733e-18,-4.1314e-16) - (1.0467,-4.2902e-32) (0.68287,2.0323e-32) (0.68287,9.3286e-32) (-0.11227,-1.1949e-31) (2.741e-18,2.2644e-17) (5.421e-20,-3.1793e-17) (3.1035e-18,4.1314e-16) (5.2855e-19,3.922e-17) (3.9844e-18,4.1314e-16) - (1.2292,4.3876e-33) (0.58205,-2.8391e-32) (-0.58205,2.5082e-32) (-2.575e-19,2.4193e-16) (1.301e-18,-1.3008e-16) (2.8189e-18,1.3008e-16) (-1.3824e-18,-3.5917e-31) (0,8.7897e-17) - (1.2292,8.8387e-32) (-0.58205,1.4753e-32) (1.6263e-18,-1.2097e-16) (6.7763e-19,-1.3008e-16) (0,8.7897e-17) (-1.2468e-18,2.0952e-16) (-3.6185e-18,1.3008e-16) - (1.2292,-4.8569e-33) (1.0151e-17,1.2097e-16) (0,8.7897e-17) (-3.361e-18,-1.3008e-16) (1.3553e-18,2.0952e-16) (-1.7212e-18,-1.3008e-16) - (1.0122,1.2137e-32) (-0.05654,4.7639e-33) (0.05654,-2.6921e-33) (3.1171e-19,-5.4211e-33) (-0.11308,1.0697e-32) - (0.99552,6.2322e-33) (-0.030829,9.7026e-34) (-0.097931,-1.2331e-32) (-0.030829,-4.7837e-35) - (0.99552,-2.5219e-32) (-0.097931,-1.1642e-32) (0.030829,4.7012e-35) - (1.0122,-3.2171e-33) (3.4797e-17,-9.2822e-35) - (0.99552,-4.3545e-32) diff --git a/tests/03_NAO_multik/18_NO_KP_OH2/INPUT b/tests/03_NAO_multik/18_NO_KP_OH2/INPUT deleted file mode 100644 index 538b7bd007..0000000000 --- a/tests/03_NAO_multik/18_NO_KP_OH2/INPUT +++ /dev/null @@ -1,30 +0,0 @@ -INPUT_PARAMETERS -#Parameters (1.General) -suffix autotest -calculation scf - -nbands 6 -symmetry 0 -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB -gamma_only 0 - -#Parameters (2.Iteration) -ecutwfc 20 -scf_thr 1e-8 -scf_nmax 1 - -#Parameters (3.Basis) -basis_type lcao - -#Parameters (4.Smearing) -smearing_method gauss -smearing_sigma 0.002 - -#Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.7 -mixing_gg0 0.0 - -out_mat_hs2 1 5 -ks_solver scalapack_gvx diff --git a/tests/03_NAO_multik/19_NO_KP_OH_nscf/INPUT b/tests/03_NAO_multik/19_NO_KP_OH_nscf/INPUT deleted file mode 100644 index 0c2e3529b6..0000000000 --- a/tests/03_NAO_multik/19_NO_KP_OH_nscf/INPUT +++ /dev/null @@ -1,37 +0,0 @@ -INPUT_PARAMETERS -#Parameters (1.General) -suffix autotest -calculation nscf - -nbands 6 -symmetry 0 -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB -read_file_dir ./ -gamma_only 0 - -#Parameters (2.Iteration) -ecutwfc 20 -scf_thr 1e-8 -scf_nmax 100 - -#out_chg 1 -init_chg file -out_mat_hs2 1 -out_mat_r 1 -out_mat_t 1 -pw_diag_thr 0.00001 - -#Parameters (3.Basis) -basis_type lcao - -#Parameters (4.Smearing) -smearing_method gauss -smearing_sigma 0.002 - -#Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.7 -mixing_gg0 1.5 - -ks_solver scalapack_gvx diff --git a/tests/03_NAO_multik/20_NO_KP_OHS_S4/INPUT b/tests/03_NAO_multik/20_NO_KP_OHS_S4/INPUT deleted file mode 100644 index 28a20ad86b..0000000000 --- a/tests/03_NAO_multik/20_NO_KP_OHS_S4/INPUT +++ /dev/null @@ -1,30 +0,0 @@ -INPUT_PARAMETERS -#Parameters (1.General) -suffix autotest -calculation scf - -nbands 20 -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB - -#Parameters (2.Iteration) -ecutwfc 20 -scf_thr 1e-4 -scf_nmax 100 - -nspin 4 -#Parameters (3.Basis) -basis_type lcao - -#Parameters (4.Smearing) -smearing_method gauss -smearing_sigma 0.002 - -#Parameters (5.Mixing) -mixing_type plain -mixing_beta 0.7 -mixing_gg0 0.0 - -out_mat_hs2 1 -out_mat_r 1 -out_ndigits 5 diff --git a/tests/03_NAO_multik/20_NO_KP_OHS_S4/hks12k2_nao.txt.ref b/tests/03_NAO_multik/20_NO_KP_OHS_S4/hks12k2_nao.txt.ref deleted file mode 100644 index e3da7f3095..0000000000 --- a/tests/03_NAO_multik/20_NO_KP_OHS_S4/hks12k2_nao.txt.ref +++ /dev/null @@ -1,26 +0,0 @@ -26 (-1.0498295478e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (7.3214324318e-03,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (2.2204460493e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (6.6324723277e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (5.0742074686e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-1.1102230246e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (3.5563472949e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-9.9878474313e-17,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-5.2735593670e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (3.4172147560e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-1.0019970121e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-3.7164473895e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (2.5066093626e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) - (-8.3067773120e-01,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (6.2710718058e-02,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (6.6613381478e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (5.3681125921e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (4.6782463368e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (3.4613376138e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-1.0594796265e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-4.7184478547e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (2.7565453862e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-1.1129250214e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-3.5650803412e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (2.3481701075e-16,0.0000000000e+00) - (5.6843861718e-01,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-5.5511151231e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-3.8605324055e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (6.8589011259e-17,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (7.7715611724e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-3.8496355839e-17,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (8.1238398486e-17,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-1.8041124150e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-1.4971525491e-17,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (9.7987027581e-17,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-2.5893394367e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-4.6111817205e-17,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) - (6.6587017216e-01,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-6.1062266354e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-4.3900089579e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (8.0884262509e-17,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (8.3266726847e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-4.3306698075e-17,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (3.6575837664e-17,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-1.8041124150e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-2.6574765592e-17,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (1.0305457299e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-2.1254068839e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-3.9934494580e-17,0.0000000000e+00) - (-4.2150227105e-01,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-5.1664357523e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (2.8131464492e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (5.0003121038e-02,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (1.9593658114e-17,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (1.0524833020e-17,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-7.7715611724e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (8.5001812871e-17,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (3.5562800900e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (1.0361447469e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-3.3742475007e-17,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) - (-2.0019532684e-01,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-4.9813281229e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (2.8051659095e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (1.4240794246e-01,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (4.5273819053e-17,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-9.9766660115e-18,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-7.2164496601e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (2.9708305073e-18,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (3.3545598527e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (1.2957816908e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-2.1455170843e-17,0.0000000000e+00) - (-4.2150227105e-01,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (2.3771359381e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (1.8722484728e-17,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (5.0003121038e-02,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (1.0105136710e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-2.1780916069e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-7.7715611724e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-3.7119811262e-17,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-2.6837318018e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (1.2179493897e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) - (-2.0019532684e-01,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (2.3616223935e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (4.6131439912e-17,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (1.4240794246e-01,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (8.0283266041e-17,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-2.6199985207e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-8.8817841970e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-2.4988561338e-17,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-2.7711762604e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (1.1099240946e-16,0.0000000000e+00) - (-4.2150227105e-01,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (1.4971492226e-17,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (9.7195779421e-17,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (5.0003121038e-02,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (8.4340850862e-17,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-1.7959701984e-17,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-5.5511151231e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-1.7137355436e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-8.9155362615e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) - (-2.0019532684e-01,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-7.2743735532e-18,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (7.7201018612e-17,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (1.4240794246e-01,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (8.1024176302e-17,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-6.0659671503e-18,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-6.6613381478e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-1.6696511734e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-8.7669307131e-16,0.0000000000e+00) - (8.9448451541e-01,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (6.7436406803e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (2.5899701467e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-1.1102230246e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-1.8702862084e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (2.3794650604e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (4.1319998416e-17,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-8.6704607404e-17,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) - (1.0671227230e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (6.4265696847e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (2.3338441216e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-2.2204460493e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-2.0419091002e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (2.4393913508e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (5.0715967890e-17,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-8.6866905500e-17,0.0000000000e+00) - (8.9448451541e-01,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (1.3998641593e-17,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-6.6538744058e-17,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (1.6653345369e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-8.4822239789e-17,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (3.6551790467e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-1.7863438289e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) - (1.0671227230e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-8.7852596818e-18,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-7.8885801557e-17,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (1.1102230246e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-8.4631953493e-17,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (3.6680306460e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-1.6453134098e-16,0.0000000000e+00) - (8.9448451541e-01,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (8.7841454541e-17,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-8.0905712056e-17,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-1.6653345369e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (3.2247626783e-17,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (7.6104025206e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) - (1.0671227230e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (7.6645862028e-17,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-8.1393036401e-17,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-2.2204460493e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (2.4889701975e-17,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (7.8927822207e-16,0.0000000000e+00) - (1.6383220324e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-4.3907562231e-17,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-9.1068443356e-17,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-2.0538889854e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-4.0283515545e-17,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) - (1.8122604198e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-6.1825866509e-17,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-8.2745080004e-17,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-1.9687742426e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-4.5746133514e-17,0.0000000000e+00) - (1.6389428374e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-1.0387293342e-17,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-1.3007712378e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-5.2844067480e-18,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) - (1.8131083153e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-2.2350682012e-17,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-1.4383787301e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-4.6553300870e-18,0.0000000000e+00) - (1.6389428374e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (1.8566170146e-17,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (3.5449683857e-17,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) - (1.8131083153e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (2.2978947892e-17,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-1.4802594023e-17,0.0000000000e+00) - (1.6383220324e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-1.7214871045e-17,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) - (1.8122604198e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-1.5871671860e-17,0.0000000000e+00) - (1.6389428374e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) - (1.8131083153e+00,0.0000000000e+00) diff --git a/tests/03_NAO_multik/20_NO_KP_OHS_S4/sks12k2_nao.txt.ref b/tests/03_NAO_multik/20_NO_KP_OHS_S4/sks12k2_nao.txt.ref deleted file mode 100644 index aead9cb666..0000000000 --- a/tests/03_NAO_multik/20_NO_KP_OHS_S4/sks12k2_nao.txt.ref +++ /dev/null @@ -1,26 +0,0 @@ -26 (1.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (6.8854584276e-15,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) - (1.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (6.8854584276e-15,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) - (1.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) - (1.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) - (1.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-1.5438920649e-14,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) - (1.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-1.5438920649e-14,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) - (1.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-1.5438920649e-14,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) - (1.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-1.5438920649e-14,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) - (1.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-1.5438920649e-14,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) - (1.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-1.5438920649e-14,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) - (1.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) - (1.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) - (1.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) - (1.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) - (1.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) - (1.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) - (1.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) - (1.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) - (1.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) - (1.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) - (1.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) - (1.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) - (1.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) - (1.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) - (1.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) - (1.0000000000e+00,0.0000000000e+00) diff --git a/tests/03_NAO_multik/21_NO_KP_OS/INPUT b/tests/03_NAO_multik/21_NO_KP_OS/INPUT deleted file mode 100644 index 948f0203c3..0000000000 --- a/tests/03_NAO_multik/21_NO_KP_OS/INPUT +++ /dev/null @@ -1,11 +0,0 @@ -INPUT_PARAMETERS -suffix autotest -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB -#ecutwfc 100 -smearing_method fixed -ecutwfc 10 -scf_thr 1e-6 -basis_type lcao -calculation get_s -out_mat_ds 1 diff --git a/tests/03_NAO_multik/22_NO_KP_OTdH/INPUT b/tests/03_NAO_multik/22_NO_KP_OTdH/INPUT deleted file mode 100644 index d82191ff1b..0000000000 --- a/tests/03_NAO_multik/22_NO_KP_OTdH/INPUT +++ /dev/null @@ -1,27 +0,0 @@ -INPUT_PARAMETERS -#Parameters (1.General) -suffix autotest -calculation scf - -nbands 10 -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB - -#Parameters (2.Iteration) -ecutwfc 20 -scf_thr 1e-4 -scf_nmax 100 - -#Parameters (3.Basis) -basis_type lcao - -#Parameters (4.Smearing) -smearing_method gauss -smearing_sigma 0.002 - -#Parameters (5.Mixing) -mixing_type plain -mixing_beta 0.7 - -out_mat_dh 1 -out_mat_t 1 diff --git a/tests/03_NAO_multik/23_NO_KP_OK/INPUT b/tests/03_NAO_multik/23_NO_KP_OK/INPUT deleted file mode 100644 index 69a6a7879c..0000000000 --- a/tests/03_NAO_multik/23_NO_KP_OK/INPUT +++ /dev/null @@ -1,30 +0,0 @@ -INPUT_PARAMETERS -#Parameters (1.General) -suffix autotest -calculation scf - -nbands 6 -symmetry 0 -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB -gamma_only 0 - -#Parameters (2.Iteration) -ecutwfc 10 -scf_thr 1e-4 -scf_nmax 100 - -out_chg 1 -dft_functional scan - -#Parameters (3.Basis) -basis_type lcao - -#Parameters (4.Smearing) -smearing_method gauss -smearing_sigma 0.002 - -#Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.7 -mixing_gg0 0.0 diff --git a/tests/03_NAO_multik/23_NO_KP_OK/chgs1.cube.ref b/tests/03_NAO_multik/23_NO_KP_OK/chgs1.cube.ref deleted file mode 100644 index 40d6199ff1..0000000000 --- a/tests/03_NAO_multik/23_NO_KP_OK/chgs1.cube.ref +++ /dev/null @@ -1,683 +0,0 @@ -STEP: 0 Cubefile created from ABACUS. Inner loop is z, followed by y and x -1 (nspin) 0.644033 (fermi energy, in Ry) -2 0.0 0.0 0.0 -15 0.000000 0.340000 0.340000 -15 0.340000 0.000000 0.340000 -15 0.340000 0.340000 0.000000 - 14 4 0.000000 0.000000 0.000000 - 14 4 2.550000 2.550000 2.550000 - 2.511e-03 1.824e-02 5.185e-02 6.777e-02 6.109e-02 4.496e-02 - 3.013e-02 2.140e-02 2.140e-02 3.013e-02 4.496e-02 6.109e-02 - 6.777e-02 5.185e-02 1.824e-02 - 1.824e-02 6.194e-02 9.277e-02 9.268e-02 7.503e-02 5.407e-02 - 3.750e-02 3.084e-02 3.750e-02 5.407e-02 7.503e-02 9.268e-02 - 9.277e-02 6.194e-02 1.824e-02 - 5.185e-02 9.277e-02 1.077e-01 9.861e-02 7.874e-02 5.687e-02 - 4.149e-02 4.149e-02 5.687e-02 7.874e-02 9.861e-02 1.077e-01 - 9.277e-02 5.185e-02 2.392e-02 - 6.777e-02 9.268e-02 9.861e-02 9.038e-02 7.202e-02 5.019e-02 - 3.965e-02 5.019e-02 7.202e-02 9.038e-02 9.861e-02 9.268e-02 - 6.777e-02 4.007e-02 4.007e-02 - 6.109e-02 7.503e-02 7.874e-02 7.202e-02 5.340e-02 3.517e-02 - 3.517e-02 5.340e-02 7.202e-02 7.874e-02 7.503e-02 6.109e-02 - 4.205e-02 3.244e-02 4.205e-02 - 4.496e-02 5.407e-02 5.687e-02 5.019e-02 3.517e-02 2.639e-02 - 3.517e-02 5.019e-02 5.687e-02 5.407e-02 4.496e-02 3.255e-02 - 2.347e-02 2.347e-02 3.255e-02 - 3.013e-02 3.750e-02 4.149e-02 3.965e-02 3.517e-02 3.517e-02 - 3.965e-02 4.149e-02 3.750e-02 3.013e-02 2.182e-02 1.523e-02 - 1.264e-02 1.523e-02 2.182e-02 - 2.140e-02 3.084e-02 4.149e-02 5.019e-02 5.340e-02 5.019e-02 - 4.149e-02 3.084e-02 2.140e-02 1.445e-02 9.636e-03 7.208e-03 - 7.208e-03 9.636e-03 1.445e-02 - 2.140e-02 3.750e-02 5.687e-02 7.202e-02 7.202e-02 5.687e-02 - 3.750e-02 2.140e-02 1.179e-02 6.907e-03 4.700e-03 4.099e-03 - 4.700e-03 6.907e-03 1.179e-02 - 3.013e-02 5.407e-02 7.874e-02 9.038e-02 7.874e-02 5.407e-02 - 3.013e-02 1.445e-02 6.907e-03 4.025e-03 3.161e-03 3.161e-03 - 4.025e-03 6.907e-03 1.445e-02 - 4.496e-02 7.503e-02 9.861e-02 9.861e-02 7.503e-02 4.496e-02 - 2.182e-02 9.636e-03 4.700e-03 3.161e-03 2.848e-03 3.161e-03 - 4.700e-03 9.636e-03 2.182e-02 - 6.109e-02 9.268e-02 1.077e-01 9.268e-02 6.109e-02 3.255e-02 - 1.523e-02 7.208e-03 4.099e-03 3.161e-03 3.161e-03 4.099e-03 - 7.208e-03 1.523e-02 3.255e-02 - 6.777e-02 9.277e-02 9.277e-02 6.777e-02 4.205e-02 2.347e-02 - 1.264e-02 7.208e-03 4.700e-03 4.025e-03 4.700e-03 7.208e-03 - 1.264e-02 2.347e-02 4.205e-02 - 5.185e-02 6.194e-02 5.185e-02 4.007e-02 3.244e-02 2.347e-02 - 1.523e-02 9.636e-03 6.907e-03 6.907e-03 9.636e-03 1.523e-02 - 2.347e-02 3.244e-02 4.007e-02 - 1.824e-02 1.824e-02 2.392e-02 4.007e-02 4.205e-02 3.255e-02 - 2.182e-02 1.445e-02 1.179e-02 1.445e-02 2.182e-02 3.255e-02 - 4.205e-02 4.007e-02 2.392e-02 - 1.824e-02 6.194e-02 9.277e-02 9.268e-02 7.503e-02 5.407e-02 - 3.750e-02 3.084e-02 3.750e-02 5.407e-02 7.503e-02 9.268e-02 - 9.277e-02 6.194e-02 1.824e-02 - 6.194e-02 1.075e-01 1.242e-01 1.128e-01 9.101e-02 6.610e-02 - 4.772e-02 4.772e-02 6.610e-02 9.101e-02 1.128e-01 1.242e-01 - 1.075e-01 6.194e-02 2.857e-02 - 9.277e-02 1.242e-01 1.311e-01 1.188e-01 9.562e-02 6.682e-02 - 5.234e-02 6.682e-02 9.562e-02 1.188e-01 1.311e-01 1.242e-01 - 9.277e-02 5.272e-02 5.272e-02 - 9.268e-02 1.128e-01 1.188e-01 1.093e-01 8.147e-02 5.147e-02 - 5.147e-02 8.147e-02 1.093e-01 1.188e-01 1.128e-01 9.268e-02 - 6.359e-02 4.810e-02 6.359e-02 - 7.503e-02 9.101e-02 9.562e-02 8.147e-02 4.916e-02 2.974e-02 - 4.916e-02 8.147e-02 9.562e-02 9.101e-02 7.503e-02 5.455e-02 - 3.923e-02 3.923e-02 5.455e-02 - 5.407e-02 6.610e-02 6.682e-02 5.147e-02 2.974e-02 2.974e-02 - 5.147e-02 6.682e-02 6.610e-02 5.407e-02 3.967e-02 2.757e-02 - 2.272e-02 2.757e-02 3.967e-02 - 3.750e-02 4.772e-02 5.234e-02 5.147e-02 4.916e-02 5.147e-02 - 5.234e-02 4.772e-02 3.750e-02 2.653e-02 1.795e-02 1.312e-02 - 1.312e-02 1.795e-02 2.653e-02 - 3.084e-02 4.772e-02 6.682e-02 8.147e-02 8.147e-02 6.682e-02 - 4.772e-02 3.084e-02 1.895e-02 1.184e-02 7.950e-03 6.755e-03 - 7.950e-03 1.184e-02 1.895e-02 - 3.750e-02 6.610e-02 9.562e-02 1.093e-01 9.562e-02 6.610e-02 - 3.750e-02 1.895e-02 9.768e-03 5.832e-03 4.402e-03 4.402e-03 - 5.832e-03 9.768e-03 1.895e-02 - 5.407e-02 9.101e-02 1.188e-01 1.188e-01 9.101e-02 5.407e-02 - 2.653e-02 1.184e-02 5.832e-03 3.833e-03 3.410e-03 3.833e-03 - 5.832e-03 1.184e-02 2.653e-02 - 7.503e-02 1.128e-01 1.311e-01 1.128e-01 7.503e-02 3.967e-02 - 1.795e-02 7.950e-03 4.402e-03 3.410e-03 3.410e-03 4.402e-03 - 7.950e-03 1.795e-02 3.967e-02 - 9.268e-02 1.242e-01 1.242e-01 9.268e-02 5.455e-02 2.757e-02 - 1.312e-02 6.755e-03 4.402e-03 3.833e-03 4.402e-03 6.755e-03 - 1.312e-02 2.757e-02 5.455e-02 - 9.277e-02 1.075e-01 9.277e-02 6.359e-02 3.923e-02 2.272e-02 - 1.312e-02 7.950e-03 5.832e-03 5.832e-03 7.950e-03 1.312e-02 - 2.272e-02 3.923e-02 6.359e-02 - 6.194e-02 6.194e-02 5.272e-02 4.810e-02 3.923e-02 2.757e-02 - 1.795e-02 1.184e-02 9.768e-03 1.184e-02 1.795e-02 2.757e-02 - 3.923e-02 4.810e-02 5.272e-02 - 1.824e-02 2.857e-02 5.272e-02 6.359e-02 5.455e-02 3.967e-02 - 2.653e-02 1.895e-02 1.895e-02 2.653e-02 3.967e-02 5.455e-02 - 6.359e-02 5.272e-02 2.857e-02 - 5.185e-02 9.277e-02 1.077e-01 9.861e-02 7.874e-02 5.687e-02 - 4.149e-02 4.149e-02 5.687e-02 7.874e-02 9.861e-02 1.077e-01 - 9.277e-02 5.185e-02 2.392e-02 - 9.277e-02 1.242e-01 1.311e-01 1.188e-01 9.562e-02 6.682e-02 - 5.234e-02 6.682e-02 9.562e-02 1.188e-01 1.311e-01 1.242e-01 - 9.277e-02 5.272e-02 5.272e-02 - 1.077e-01 1.311e-01 1.384e-01 1.269e-01 9.487e-02 5.924e-02 - 5.924e-02 9.487e-02 1.269e-01 1.384e-01 1.311e-01 1.077e-01 - 7.321e-02 5.525e-02 7.321e-02 - 9.861e-02 1.188e-01 1.269e-01 1.094e-01 6.638e-02 3.678e-02 - 6.638e-02 1.094e-01 1.269e-01 1.188e-01 9.861e-02 7.273e-02 - 5.204e-02 5.204e-02 7.273e-02 - 7.874e-02 9.562e-02 9.487e-02 6.638e-02 2.424e-02 2.424e-02 - 6.638e-02 9.487e-02 9.562e-02 7.874e-02 5.829e-02 4.066e-02 - 3.364e-02 4.066e-02 5.829e-02 - 5.687e-02 6.682e-02 5.924e-02 3.678e-02 2.424e-02 3.678e-02 - 5.924e-02 6.682e-02 5.687e-02 4.213e-02 2.859e-02 2.065e-02 - 2.065e-02 2.859e-02 4.213e-02 - 4.149e-02 5.234e-02 5.924e-02 6.638e-02 6.638e-02 5.924e-02 - 5.234e-02 4.149e-02 2.898e-02 1.892e-02 1.265e-02 1.050e-02 - 1.265e-02 1.892e-02 2.898e-02 - 4.149e-02 6.682e-02 9.487e-02 1.094e-01 9.487e-02 6.682e-02 - 4.149e-02 2.401e-02 1.370e-02 8.411e-03 6.183e-03 6.183e-03 - 8.411e-03 1.370e-02 2.401e-02 - 5.687e-02 9.562e-02 1.269e-01 1.269e-01 9.562e-02 5.687e-02 - 2.898e-02 1.370e-02 7.112e-03 4.615e-03 4.017e-03 4.615e-03 - 7.112e-03 1.370e-02 2.898e-02 - 7.874e-02 1.188e-01 1.384e-01 1.188e-01 7.874e-02 4.213e-02 - 1.892e-02 8.411e-03 4.615e-03 3.559e-03 3.559e-03 4.615e-03 - 8.411e-03 1.892e-02 4.213e-02 - 9.861e-02 1.311e-01 1.311e-01 9.861e-02 5.829e-02 2.859e-02 - 1.265e-02 6.183e-03 4.017e-03 3.559e-03 4.017e-03 6.183e-03 - 1.265e-02 2.859e-02 5.829e-02 - 1.077e-01 1.242e-01 1.077e-01 7.273e-02 4.066e-02 2.065e-02 - 1.050e-02 6.183e-03 4.615e-03 4.615e-03 6.183e-03 1.050e-02 - 2.065e-02 4.066e-02 7.273e-02 - 9.277e-02 9.277e-02 7.321e-02 5.204e-02 3.364e-02 2.065e-02 - 1.265e-02 8.411e-03 7.112e-03 8.411e-03 1.265e-02 2.065e-02 - 3.364e-02 5.204e-02 7.321e-02 - 5.185e-02 5.272e-02 5.525e-02 5.204e-02 4.066e-02 2.859e-02 - 1.892e-02 1.370e-02 1.370e-02 1.892e-02 2.859e-02 4.066e-02 - 5.204e-02 5.525e-02 5.272e-02 - 2.392e-02 5.272e-02 7.321e-02 7.273e-02 5.829e-02 4.213e-02 - 2.898e-02 2.401e-02 2.898e-02 4.213e-02 5.829e-02 7.273e-02 - 7.321e-02 5.272e-02 2.392e-02 - 6.777e-02 9.268e-02 9.861e-02 9.038e-02 7.202e-02 5.019e-02 - 3.965e-02 5.019e-02 7.202e-02 9.038e-02 9.861e-02 9.268e-02 - 6.777e-02 4.007e-02 4.007e-02 - 9.268e-02 1.128e-01 1.188e-01 1.093e-01 8.147e-02 5.147e-02 - 5.147e-02 8.147e-02 1.093e-01 1.188e-01 1.128e-01 9.268e-02 - 6.359e-02 4.810e-02 6.359e-02 - 9.861e-02 1.188e-01 1.269e-01 1.094e-01 6.638e-02 3.678e-02 - 6.638e-02 1.094e-01 1.269e-01 1.188e-01 9.861e-02 7.273e-02 - 5.204e-02 5.204e-02 7.273e-02 - 9.038e-02 1.093e-01 1.094e-01 7.723e-02 2.834e-02 2.834e-02 - 7.723e-02 1.094e-01 1.093e-01 9.038e-02 6.717e-02 4.690e-02 - 3.841e-02 4.690e-02 6.717e-02 - 7.202e-02 8.147e-02 6.638e-02 2.834e-02 6.079e-03 2.834e-02 - 6.638e-02 8.147e-02 7.202e-02 5.348e-02 3.637e-02 2.620e-02 - 2.620e-02 3.637e-02 5.348e-02 - 5.019e-02 5.147e-02 3.678e-02 2.834e-02 2.834e-02 3.678e-02 - 5.147e-02 5.019e-02 3.817e-02 2.583e-02 1.720e-02 1.407e-02 - 1.720e-02 2.583e-02 3.817e-02 - 3.965e-02 5.147e-02 6.638e-02 7.723e-02 6.638e-02 5.147e-02 - 3.965e-02 2.780e-02 1.791e-02 1.127e-02 8.102e-03 8.102e-03 - 1.127e-02 1.791e-02 2.780e-02 - 5.019e-02 8.147e-02 1.094e-01 1.094e-01 8.147e-02 5.019e-02 - 2.780e-02 1.479e-02 8.316e-03 5.415e-03 4.623e-03 5.415e-03 - 8.316e-03 1.479e-02 2.780e-02 - 7.202e-02 1.093e-01 1.269e-01 1.093e-01 7.202e-02 3.817e-02 - 1.791e-02 8.316e-03 4.687e-03 3.581e-03 3.581e-03 4.687e-03 - 8.316e-03 1.791e-02 3.817e-02 - 9.038e-02 1.188e-01 1.188e-01 9.038e-02 5.348e-02 2.583e-02 - 1.127e-02 5.415e-03 3.581e-03 3.198e-03 3.581e-03 5.415e-03 - 1.127e-02 2.583e-02 5.348e-02 - 9.861e-02 1.128e-01 9.861e-02 6.717e-02 3.637e-02 1.720e-02 - 8.102e-03 4.623e-03 3.581e-03 3.581e-03 4.623e-03 8.102e-03 - 1.720e-02 3.637e-02 6.717e-02 - 9.268e-02 9.268e-02 7.273e-02 4.690e-02 2.620e-02 1.407e-02 - 8.102e-03 5.415e-03 4.687e-03 5.415e-03 8.102e-03 1.407e-02 - 2.620e-02 4.690e-02 7.273e-02 - 6.777e-02 6.359e-02 5.204e-02 3.841e-02 2.620e-02 1.720e-02 - 1.127e-02 8.316e-03 8.316e-03 1.127e-02 1.720e-02 2.620e-02 - 3.841e-02 5.204e-02 6.359e-02 - 4.007e-02 4.810e-02 5.204e-02 4.690e-02 3.637e-02 2.583e-02 - 1.791e-02 1.479e-02 1.791e-02 2.583e-02 3.637e-02 4.690e-02 - 5.204e-02 4.810e-02 4.007e-02 - 4.007e-02 6.359e-02 7.273e-02 6.717e-02 5.348e-02 3.817e-02 - 2.780e-02 2.780e-02 3.817e-02 5.348e-02 6.717e-02 7.273e-02 - 6.359e-02 4.007e-02 2.575e-02 - 6.109e-02 7.503e-02 7.874e-02 7.202e-02 5.340e-02 3.517e-02 - 3.517e-02 5.340e-02 7.202e-02 7.874e-02 7.503e-02 6.109e-02 - 4.205e-02 3.244e-02 4.205e-02 - 7.503e-02 9.101e-02 9.562e-02 8.147e-02 4.916e-02 2.974e-02 - 4.916e-02 8.147e-02 9.562e-02 9.101e-02 7.503e-02 5.455e-02 - 3.923e-02 3.923e-02 5.455e-02 - 7.874e-02 9.562e-02 9.487e-02 6.638e-02 2.424e-02 2.424e-02 - 6.638e-02 9.487e-02 9.562e-02 7.874e-02 5.829e-02 4.066e-02 - 3.364e-02 4.066e-02 5.829e-02 - 7.202e-02 8.147e-02 6.638e-02 2.834e-02 6.079e-03 2.834e-02 - 6.638e-02 8.147e-02 7.202e-02 5.348e-02 3.637e-02 2.620e-02 - 2.620e-02 3.637e-02 5.348e-02 - 5.340e-02 4.916e-02 2.424e-02 6.079e-03 6.079e-03 2.424e-02 - 4.916e-02 5.340e-02 4.254e-02 2.919e-02 1.938e-02 1.586e-02 - 1.938e-02 2.919e-02 4.254e-02 - 3.517e-02 2.974e-02 2.424e-02 2.834e-02 2.424e-02 2.974e-02 - 3.517e-02 2.987e-02 2.075e-02 1.340e-02 9.462e-03 9.462e-03 - 1.340e-02 2.075e-02 2.987e-02 - 3.517e-02 4.916e-02 6.638e-02 6.638e-02 4.916e-02 3.517e-02 - 2.402e-02 1.520e-02 9.366e-03 6.160e-03 5.124e-03 6.160e-03 - 9.366e-03 1.520e-02 2.402e-02 - 5.340e-02 8.147e-02 9.487e-02 8.147e-02 5.340e-02 2.987e-02 - 1.520e-02 7.945e-03 4.685e-03 3.516e-03 3.516e-03 4.685e-03 - 7.945e-03 1.520e-02 2.987e-02 - 7.202e-02 9.562e-02 9.562e-02 7.202e-02 4.254e-02 2.075e-02 - 9.366e-03 4.685e-03 3.128e-03 2.806e-03 3.128e-03 4.685e-03 - 9.366e-03 2.075e-02 4.254e-02 - 7.874e-02 9.101e-02 7.874e-02 5.348e-02 2.919e-02 1.340e-02 - 6.160e-03 3.516e-03 2.806e-03 2.806e-03 3.516e-03 6.160e-03 - 1.340e-02 2.919e-02 5.348e-02 - 7.503e-02 7.503e-02 5.829e-02 3.637e-02 1.938e-02 9.462e-03 - 5.124e-03 3.516e-03 3.128e-03 3.516e-03 5.124e-03 9.462e-03 - 1.938e-02 3.637e-02 5.829e-02 - 6.109e-02 5.455e-02 4.066e-02 2.620e-02 1.586e-02 9.462e-03 - 6.160e-03 4.685e-03 4.685e-03 6.160e-03 9.462e-03 1.586e-02 - 2.620e-02 4.066e-02 5.455e-02 - 4.205e-02 3.923e-02 3.364e-02 2.620e-02 1.938e-02 1.340e-02 - 9.366e-03 7.945e-03 9.366e-03 1.340e-02 1.938e-02 2.620e-02 - 3.364e-02 3.923e-02 4.205e-02 - 3.244e-02 3.923e-02 4.066e-02 3.637e-02 2.919e-02 2.075e-02 - 1.520e-02 1.520e-02 2.075e-02 2.919e-02 3.637e-02 4.066e-02 - 3.923e-02 3.244e-02 2.820e-02 - 4.205e-02 5.455e-02 5.829e-02 5.348e-02 4.254e-02 2.987e-02 - 2.402e-02 2.987e-02 4.254e-02 5.348e-02 5.829e-02 5.455e-02 - 4.205e-02 2.820e-02 2.820e-02 - 4.496e-02 5.407e-02 5.687e-02 5.019e-02 3.517e-02 2.639e-02 - 3.517e-02 5.019e-02 5.687e-02 5.407e-02 4.496e-02 3.255e-02 - 2.347e-02 2.347e-02 3.255e-02 - 5.407e-02 6.610e-02 6.682e-02 5.147e-02 2.974e-02 2.974e-02 - 5.147e-02 6.682e-02 6.610e-02 5.407e-02 3.967e-02 2.757e-02 - 2.272e-02 2.757e-02 3.967e-02 - 5.687e-02 6.682e-02 5.924e-02 3.678e-02 2.424e-02 3.678e-02 - 5.924e-02 6.682e-02 5.687e-02 4.213e-02 2.859e-02 2.065e-02 - 2.065e-02 2.859e-02 4.213e-02 - 5.019e-02 5.147e-02 3.678e-02 2.834e-02 2.834e-02 3.678e-02 - 5.147e-02 5.019e-02 3.817e-02 2.583e-02 1.720e-02 1.407e-02 - 1.720e-02 2.583e-02 3.817e-02 - 3.517e-02 2.974e-02 2.424e-02 2.834e-02 2.424e-02 2.974e-02 - 3.517e-02 2.987e-02 2.075e-02 1.340e-02 9.462e-03 9.462e-03 - 1.340e-02 2.075e-02 2.987e-02 - 2.639e-02 2.974e-02 3.678e-02 3.678e-02 2.974e-02 2.639e-02 - 2.189e-02 1.506e-02 9.746e-03 6.238e-03 5.103e-03 6.238e-03 - 9.746e-03 1.506e-02 2.189e-02 - 3.517e-02 5.147e-02 5.924e-02 5.147e-02 3.517e-02 2.189e-02 - 1.272e-02 7.339e-03 4.549e-03 3.386e-03 3.386e-03 4.549e-03 - 7.339e-03 1.272e-02 2.189e-02 - 5.019e-02 6.682e-02 6.682e-02 5.019e-02 2.987e-02 1.506e-02 - 7.339e-03 3.980e-03 2.711e-03 2.404e-03 2.711e-03 3.980e-03 - 7.339e-03 1.506e-02 2.987e-02 - 5.687e-02 6.610e-02 5.687e-02 3.817e-02 2.075e-02 9.746e-03 - 4.549e-03 2.711e-03 2.197e-03 2.197e-03 2.711e-03 4.549e-03 - 9.746e-03 2.075e-02 3.817e-02 - 5.407e-02 5.407e-02 4.213e-02 2.583e-02 1.340e-02 6.238e-03 - 3.386e-03 2.404e-03 2.197e-03 2.404e-03 3.386e-03 6.238e-03 - 1.340e-02 2.583e-02 4.213e-02 - 4.496e-02 3.967e-02 2.859e-02 1.720e-02 9.462e-03 5.103e-03 - 3.386e-03 2.711e-03 2.711e-03 3.386e-03 5.103e-03 9.462e-03 - 1.720e-02 2.859e-02 3.967e-02 - 3.255e-02 2.757e-02 2.065e-02 1.407e-02 9.462e-03 6.238e-03 - 4.549e-03 3.980e-03 4.549e-03 6.238e-03 9.462e-03 1.407e-02 - 2.065e-02 2.757e-02 3.255e-02 - 2.347e-02 2.272e-02 2.065e-02 1.720e-02 1.340e-02 9.746e-03 - 7.339e-03 7.339e-03 9.746e-03 1.340e-02 1.720e-02 2.065e-02 - 2.272e-02 2.347e-02 2.327e-02 - 2.347e-02 2.757e-02 2.859e-02 2.583e-02 2.075e-02 1.506e-02 - 1.272e-02 1.506e-02 2.075e-02 2.583e-02 2.859e-02 2.757e-02 - 2.347e-02 1.916e-02 1.916e-02 - 3.255e-02 3.967e-02 4.213e-02 3.817e-02 2.987e-02 2.189e-02 - 2.189e-02 2.987e-02 3.817e-02 4.213e-02 3.967e-02 3.255e-02 - 2.327e-02 1.916e-02 2.327e-02 - 3.013e-02 3.750e-02 4.149e-02 3.965e-02 3.517e-02 3.517e-02 - 3.965e-02 4.149e-02 3.750e-02 3.013e-02 2.182e-02 1.523e-02 - 1.264e-02 1.523e-02 2.182e-02 - 3.750e-02 4.772e-02 5.234e-02 5.147e-02 4.916e-02 5.147e-02 - 5.234e-02 4.772e-02 3.750e-02 2.653e-02 1.795e-02 1.312e-02 - 1.312e-02 1.795e-02 2.653e-02 - 4.149e-02 5.234e-02 5.924e-02 6.638e-02 6.638e-02 5.924e-02 - 5.234e-02 4.149e-02 2.898e-02 1.892e-02 1.265e-02 1.050e-02 - 1.265e-02 1.892e-02 2.898e-02 - 3.965e-02 5.147e-02 6.638e-02 7.723e-02 6.638e-02 5.147e-02 - 3.965e-02 2.780e-02 1.791e-02 1.127e-02 8.102e-03 8.102e-03 - 1.127e-02 1.791e-02 2.780e-02 - 3.517e-02 4.916e-02 6.638e-02 6.638e-02 4.916e-02 3.517e-02 - 2.402e-02 1.520e-02 9.366e-03 6.160e-03 5.124e-03 6.160e-03 - 9.366e-03 1.520e-02 2.402e-02 - 3.517e-02 5.147e-02 5.924e-02 5.147e-02 3.517e-02 2.189e-02 - 1.272e-02 7.339e-03 4.549e-03 3.386e-03 3.386e-03 4.549e-03 - 7.339e-03 1.272e-02 2.189e-02 - 3.965e-02 5.234e-02 5.234e-02 3.965e-02 2.402e-02 1.272e-02 - 6.592e-03 3.710e-03 2.530e-03 2.234e-03 2.530e-03 3.710e-03 - 6.592e-03 1.272e-02 2.402e-02 - 4.149e-02 4.772e-02 4.149e-02 2.780e-02 1.520e-02 7.339e-03 - 3.710e-03 2.300e-03 1.872e-03 1.872e-03 2.300e-03 3.710e-03 - 7.339e-03 1.520e-02 2.780e-02 - 3.750e-02 3.750e-02 2.898e-02 1.791e-02 9.366e-03 4.549e-03 - 2.530e-03 1.872e-03 1.724e-03 1.872e-03 2.530e-03 4.549e-03 - 9.366e-03 1.791e-02 2.898e-02 - 3.013e-02 2.653e-02 1.892e-02 1.127e-02 6.160e-03 3.386e-03 - 2.234e-03 1.872e-03 1.872e-03 2.234e-03 3.386e-03 6.160e-03 - 1.127e-02 1.892e-02 2.653e-02 - 2.182e-02 1.795e-02 1.265e-02 8.102e-03 5.124e-03 3.386e-03 - 2.530e-03 2.300e-03 2.530e-03 3.386e-03 5.124e-03 8.102e-03 - 1.265e-02 1.795e-02 2.182e-02 - 1.523e-02 1.312e-02 1.050e-02 8.102e-03 6.160e-03 4.549e-03 - 3.710e-03 3.710e-03 4.549e-03 6.160e-03 8.102e-03 1.050e-02 - 1.312e-02 1.523e-02 1.600e-02 - 1.264e-02 1.312e-02 1.265e-02 1.127e-02 9.366e-03 7.339e-03 - 6.592e-03 7.339e-03 9.366e-03 1.127e-02 1.265e-02 1.312e-02 - 1.264e-02 1.184e-02 1.184e-02 - 1.523e-02 1.795e-02 1.892e-02 1.791e-02 1.520e-02 1.272e-02 - 1.272e-02 1.520e-02 1.791e-02 1.892e-02 1.795e-02 1.523e-02 - 1.184e-02 1.044e-02 1.184e-02 - 2.182e-02 2.653e-02 2.898e-02 2.780e-02 2.402e-02 2.189e-02 - 2.402e-02 2.780e-02 2.898e-02 2.653e-02 2.182e-02 1.600e-02 - 1.184e-02 1.184e-02 1.600e-02 - 2.140e-02 3.084e-02 4.149e-02 5.019e-02 5.340e-02 5.019e-02 - 4.149e-02 3.084e-02 2.140e-02 1.445e-02 9.636e-03 7.208e-03 - 7.208e-03 9.636e-03 1.445e-02 - 3.084e-02 4.772e-02 6.682e-02 8.147e-02 8.147e-02 6.682e-02 - 4.772e-02 3.084e-02 1.895e-02 1.184e-02 7.950e-03 6.755e-03 - 7.950e-03 1.184e-02 1.895e-02 - 4.149e-02 6.682e-02 9.487e-02 1.094e-01 9.487e-02 6.682e-02 - 4.149e-02 2.401e-02 1.370e-02 8.411e-03 6.183e-03 6.183e-03 - 8.411e-03 1.370e-02 2.401e-02 - 5.019e-02 8.147e-02 1.094e-01 1.094e-01 8.147e-02 5.019e-02 - 2.780e-02 1.479e-02 8.316e-03 5.415e-03 4.623e-03 5.415e-03 - 8.316e-03 1.479e-02 2.780e-02 - 5.340e-02 8.147e-02 9.487e-02 8.147e-02 5.340e-02 2.987e-02 - 1.520e-02 7.945e-03 4.685e-03 3.516e-03 3.516e-03 4.685e-03 - 7.945e-03 1.520e-02 2.987e-02 - 5.019e-02 6.682e-02 6.682e-02 5.019e-02 2.987e-02 1.506e-02 - 7.339e-03 3.980e-03 2.711e-03 2.404e-03 2.711e-03 3.980e-03 - 7.339e-03 1.506e-02 2.987e-02 - 4.149e-02 4.772e-02 4.149e-02 2.780e-02 1.520e-02 7.339e-03 - 3.710e-03 2.300e-03 1.872e-03 1.872e-03 2.300e-03 3.710e-03 - 7.339e-03 1.520e-02 2.780e-02 - 3.084e-02 3.084e-02 2.401e-02 1.479e-02 7.945e-03 3.980e-03 - 2.300e-03 1.716e-03 1.594e-03 1.716e-03 2.300e-03 3.980e-03 - 7.945e-03 1.479e-02 2.401e-02 - 2.140e-02 1.895e-02 1.370e-02 8.316e-03 4.685e-03 2.711e-03 - 1.872e-03 1.594e-03 1.594e-03 1.872e-03 2.711e-03 4.685e-03 - 8.316e-03 1.370e-02 1.895e-02 - 1.445e-02 1.184e-02 8.411e-03 5.415e-03 3.516e-03 2.404e-03 - 1.872e-03 1.716e-03 1.872e-03 2.404e-03 3.516e-03 5.415e-03 - 8.411e-03 1.184e-02 1.445e-02 - 9.636e-03 7.950e-03 6.183e-03 4.623e-03 3.516e-03 2.711e-03 - 2.300e-03 2.300e-03 2.711e-03 3.516e-03 4.623e-03 6.183e-03 - 7.950e-03 9.636e-03 1.022e-02 - 7.208e-03 6.755e-03 6.183e-03 5.415e-03 4.685e-03 3.980e-03 - 3.710e-03 3.980e-03 4.685e-03 5.415e-03 6.183e-03 6.755e-03 - 7.208e-03 7.335e-03 7.335e-03 - 7.208e-03 7.950e-03 8.411e-03 8.316e-03 7.945e-03 7.339e-03 - 7.339e-03 7.945e-03 8.316e-03 8.411e-03 7.950e-03 7.208e-03 - 6.264e-03 5.856e-03 6.264e-03 - 9.636e-03 1.184e-02 1.370e-02 1.479e-02 1.520e-02 1.506e-02 - 1.520e-02 1.479e-02 1.370e-02 1.184e-02 9.636e-03 7.335e-03 - 5.856e-03 5.856e-03 7.335e-03 - 1.445e-02 1.895e-02 2.401e-02 2.780e-02 2.987e-02 2.987e-02 - 2.780e-02 2.401e-02 1.895e-02 1.445e-02 1.022e-02 7.335e-03 - 6.264e-03 7.335e-03 1.022e-02 - 2.140e-02 3.750e-02 5.687e-02 7.202e-02 7.202e-02 5.687e-02 - 3.750e-02 2.140e-02 1.179e-02 6.907e-03 4.700e-03 4.099e-03 - 4.700e-03 6.907e-03 1.179e-02 - 3.750e-02 6.610e-02 9.562e-02 1.093e-01 9.562e-02 6.610e-02 - 3.750e-02 1.895e-02 9.768e-03 5.832e-03 4.402e-03 4.402e-03 - 5.832e-03 9.768e-03 1.895e-02 - 5.687e-02 9.562e-02 1.269e-01 1.269e-01 9.562e-02 5.687e-02 - 2.898e-02 1.370e-02 7.112e-03 4.615e-03 4.017e-03 4.615e-03 - 7.112e-03 1.370e-02 2.898e-02 - 7.202e-02 1.093e-01 1.269e-01 1.093e-01 7.202e-02 3.817e-02 - 1.791e-02 8.316e-03 4.687e-03 3.581e-03 3.581e-03 4.687e-03 - 8.316e-03 1.791e-02 3.817e-02 - 7.202e-02 9.562e-02 9.562e-02 7.202e-02 4.254e-02 2.075e-02 - 9.366e-03 4.685e-03 3.128e-03 2.806e-03 3.128e-03 4.685e-03 - 9.366e-03 2.075e-02 4.254e-02 - 5.687e-02 6.610e-02 5.687e-02 3.817e-02 2.075e-02 9.746e-03 - 4.549e-03 2.711e-03 2.197e-03 2.197e-03 2.711e-03 4.549e-03 - 9.746e-03 2.075e-02 3.817e-02 - 3.750e-02 3.750e-02 2.898e-02 1.791e-02 9.366e-03 4.549e-03 - 2.530e-03 1.872e-03 1.724e-03 1.872e-03 2.530e-03 4.549e-03 - 9.366e-03 1.791e-02 2.898e-02 - 2.140e-02 1.895e-02 1.370e-02 8.316e-03 4.685e-03 2.711e-03 - 1.872e-03 1.594e-03 1.594e-03 1.872e-03 2.711e-03 4.685e-03 - 8.316e-03 1.370e-02 1.895e-02 - 1.179e-02 9.768e-03 7.112e-03 4.687e-03 3.128e-03 2.197e-03 - 1.724e-03 1.594e-03 1.724e-03 2.197e-03 3.128e-03 4.687e-03 - 7.112e-03 9.768e-03 1.179e-02 - 6.907e-03 5.832e-03 4.615e-03 3.581e-03 2.806e-03 2.197e-03 - 1.872e-03 1.872e-03 2.197e-03 2.806e-03 3.581e-03 4.615e-03 - 5.832e-03 6.907e-03 7.107e-03 - 4.700e-03 4.402e-03 4.017e-03 3.581e-03 3.128e-03 2.711e-03 - 2.530e-03 2.711e-03 3.128e-03 3.581e-03 4.017e-03 4.402e-03 - 4.700e-03 4.859e-03 4.859e-03 - 4.099e-03 4.402e-03 4.615e-03 4.687e-03 4.685e-03 4.549e-03 - 4.549e-03 4.685e-03 4.687e-03 4.615e-03 4.402e-03 4.099e-03 - 3.778e-03 3.600e-03 3.778e-03 - 4.700e-03 5.832e-03 7.112e-03 8.316e-03 9.366e-03 9.746e-03 - 9.366e-03 8.316e-03 7.112e-03 5.832e-03 4.700e-03 3.778e-03 - 3.212e-03 3.212e-03 3.778e-03 - 6.907e-03 9.768e-03 1.370e-02 1.791e-02 2.075e-02 2.075e-02 - 1.791e-02 1.370e-02 9.768e-03 6.907e-03 4.859e-03 3.600e-03 - 3.212e-03 3.600e-03 4.859e-03 - 1.179e-02 1.895e-02 2.898e-02 3.817e-02 4.254e-02 3.817e-02 - 2.898e-02 1.895e-02 1.179e-02 7.107e-03 4.859e-03 3.778e-03 - 3.778e-03 4.859e-03 7.107e-03 - 3.013e-02 5.407e-02 7.874e-02 9.038e-02 7.874e-02 5.407e-02 - 3.013e-02 1.445e-02 6.907e-03 4.025e-03 3.161e-03 3.161e-03 - 4.025e-03 6.907e-03 1.445e-02 - 5.407e-02 9.101e-02 1.188e-01 1.188e-01 9.101e-02 5.407e-02 - 2.653e-02 1.184e-02 5.832e-03 3.833e-03 3.410e-03 3.833e-03 - 5.832e-03 1.184e-02 2.653e-02 - 7.874e-02 1.188e-01 1.384e-01 1.188e-01 7.874e-02 4.213e-02 - 1.892e-02 8.411e-03 4.615e-03 3.559e-03 3.559e-03 4.615e-03 - 8.411e-03 1.892e-02 4.213e-02 - 9.038e-02 1.188e-01 1.188e-01 9.038e-02 5.348e-02 2.583e-02 - 1.127e-02 5.415e-03 3.581e-03 3.198e-03 3.581e-03 5.415e-03 - 1.127e-02 2.583e-02 5.348e-02 - 7.874e-02 9.101e-02 7.874e-02 5.348e-02 2.919e-02 1.340e-02 - 6.160e-03 3.516e-03 2.806e-03 2.806e-03 3.516e-03 6.160e-03 - 1.340e-02 2.919e-02 5.348e-02 - 5.407e-02 5.407e-02 4.213e-02 2.583e-02 1.340e-02 6.238e-03 - 3.386e-03 2.404e-03 2.197e-03 2.404e-03 3.386e-03 6.238e-03 - 1.340e-02 2.583e-02 4.213e-02 - 3.013e-02 2.653e-02 1.892e-02 1.127e-02 6.160e-03 3.386e-03 - 2.234e-03 1.872e-03 1.872e-03 2.234e-03 3.386e-03 6.160e-03 - 1.127e-02 1.892e-02 2.653e-02 - 1.445e-02 1.184e-02 8.411e-03 5.415e-03 3.516e-03 2.404e-03 - 1.872e-03 1.716e-03 1.872e-03 2.404e-03 3.516e-03 5.415e-03 - 8.411e-03 1.184e-02 1.445e-02 - 6.907e-03 5.832e-03 4.615e-03 3.581e-03 2.806e-03 2.197e-03 - 1.872e-03 1.872e-03 2.197e-03 2.806e-03 3.581e-03 4.615e-03 - 5.832e-03 6.907e-03 7.107e-03 - 4.025e-03 3.833e-03 3.559e-03 3.198e-03 2.806e-03 2.404e-03 - 2.234e-03 2.404e-03 2.806e-03 3.198e-03 3.559e-03 3.833e-03 - 4.025e-03 4.050e-03 4.050e-03 - 3.161e-03 3.410e-03 3.559e-03 3.581e-03 3.516e-03 3.386e-03 - 3.386e-03 3.516e-03 3.581e-03 3.559e-03 3.410e-03 3.161e-03 - 2.901e-03 2.741e-03 2.901e-03 - 3.161e-03 3.833e-03 4.615e-03 5.415e-03 6.160e-03 6.238e-03 - 6.160e-03 5.415e-03 4.615e-03 3.833e-03 3.161e-03 2.611e-03 - 2.246e-03 2.246e-03 2.611e-03 - 4.025e-03 5.832e-03 8.411e-03 1.127e-02 1.340e-02 1.340e-02 - 1.127e-02 8.411e-03 5.832e-03 4.025e-03 2.901e-03 2.246e-03 - 2.029e-03 2.246e-03 2.901e-03 - 6.907e-03 1.184e-02 1.892e-02 2.583e-02 2.919e-02 2.583e-02 - 1.892e-02 1.184e-02 6.907e-03 4.050e-03 2.741e-03 2.246e-03 - 2.246e-03 2.741e-03 4.050e-03 - 1.445e-02 2.653e-02 4.213e-02 5.348e-02 5.348e-02 4.213e-02 - 2.653e-02 1.445e-02 7.107e-03 4.050e-03 2.901e-03 2.611e-03 - 2.901e-03 4.050e-03 7.107e-03 - 4.496e-02 7.503e-02 9.861e-02 9.861e-02 7.503e-02 4.496e-02 - 2.182e-02 9.636e-03 4.700e-03 3.161e-03 2.848e-03 3.161e-03 - 4.700e-03 9.636e-03 2.182e-02 - 7.503e-02 1.128e-01 1.311e-01 1.128e-01 7.503e-02 3.967e-02 - 1.795e-02 7.950e-03 4.402e-03 3.410e-03 3.410e-03 4.402e-03 - 7.950e-03 1.795e-02 3.967e-02 - 9.861e-02 1.311e-01 1.311e-01 9.861e-02 5.829e-02 2.859e-02 - 1.265e-02 6.183e-03 4.017e-03 3.559e-03 4.017e-03 6.183e-03 - 1.265e-02 2.859e-02 5.829e-02 - 9.861e-02 1.128e-01 9.861e-02 6.717e-02 3.637e-02 1.720e-02 - 8.102e-03 4.623e-03 3.581e-03 3.581e-03 4.623e-03 8.102e-03 - 1.720e-02 3.637e-02 6.717e-02 - 7.503e-02 7.503e-02 5.829e-02 3.637e-02 1.938e-02 9.462e-03 - 5.124e-03 3.516e-03 3.128e-03 3.516e-03 5.124e-03 9.462e-03 - 1.938e-02 3.637e-02 5.829e-02 - 4.496e-02 3.967e-02 2.859e-02 1.720e-02 9.462e-03 5.103e-03 - 3.386e-03 2.711e-03 2.711e-03 3.386e-03 5.103e-03 9.462e-03 - 1.720e-02 2.859e-02 3.967e-02 - 2.182e-02 1.795e-02 1.265e-02 8.102e-03 5.124e-03 3.386e-03 - 2.530e-03 2.300e-03 2.530e-03 3.386e-03 5.124e-03 8.102e-03 - 1.265e-02 1.795e-02 2.182e-02 - 9.636e-03 7.950e-03 6.183e-03 4.623e-03 3.516e-03 2.711e-03 - 2.300e-03 2.300e-03 2.711e-03 3.516e-03 4.623e-03 6.183e-03 - 7.950e-03 9.636e-03 1.022e-02 - 4.700e-03 4.402e-03 4.017e-03 3.581e-03 3.128e-03 2.711e-03 - 2.530e-03 2.711e-03 3.128e-03 3.581e-03 4.017e-03 4.402e-03 - 4.700e-03 4.859e-03 4.859e-03 - 3.161e-03 3.410e-03 3.559e-03 3.581e-03 3.516e-03 3.386e-03 - 3.386e-03 3.516e-03 3.581e-03 3.559e-03 3.410e-03 3.161e-03 - 2.901e-03 2.741e-03 2.901e-03 - 2.848e-03 3.410e-03 4.017e-03 4.623e-03 5.124e-03 5.103e-03 - 5.124e-03 4.623e-03 4.017e-03 3.410e-03 2.848e-03 2.365e-03 - 2.016e-03 2.016e-03 2.365e-03 - 3.161e-03 4.402e-03 6.183e-03 8.102e-03 9.462e-03 9.462e-03 - 8.102e-03 6.183e-03 4.402e-03 3.161e-03 2.365e-03 1.853e-03 - 1.702e-03 1.853e-03 2.365e-03 - 4.700e-03 7.950e-03 1.265e-02 1.720e-02 1.938e-02 1.720e-02 - 1.265e-02 7.950e-03 4.700e-03 2.901e-03 2.016e-03 1.702e-03 - 1.702e-03 2.016e-03 2.901e-03 - 9.636e-03 1.795e-02 2.859e-02 3.637e-02 3.637e-02 2.859e-02 - 1.795e-02 9.636e-03 4.859e-03 2.741e-03 2.016e-03 1.853e-03 - 2.016e-03 2.741e-03 4.859e-03 - 2.182e-02 3.967e-02 5.829e-02 6.717e-02 5.829e-02 3.967e-02 - 2.182e-02 1.022e-02 4.859e-03 2.901e-03 2.365e-03 2.365e-03 - 2.901e-03 4.859e-03 1.022e-02 - 6.109e-02 9.268e-02 1.077e-01 9.268e-02 6.109e-02 3.255e-02 - 1.523e-02 7.208e-03 4.099e-03 3.161e-03 3.161e-03 4.099e-03 - 7.208e-03 1.523e-02 3.255e-02 - 9.268e-02 1.242e-01 1.242e-01 9.268e-02 5.455e-02 2.757e-02 - 1.312e-02 6.755e-03 4.402e-03 3.833e-03 4.402e-03 6.755e-03 - 1.312e-02 2.757e-02 5.455e-02 - 1.077e-01 1.242e-01 1.077e-01 7.273e-02 4.066e-02 2.065e-02 - 1.050e-02 6.183e-03 4.615e-03 4.615e-03 6.183e-03 1.050e-02 - 2.065e-02 4.066e-02 7.273e-02 - 9.268e-02 9.268e-02 7.273e-02 4.690e-02 2.620e-02 1.407e-02 - 8.102e-03 5.415e-03 4.687e-03 5.415e-03 8.102e-03 1.407e-02 - 2.620e-02 4.690e-02 7.273e-02 - 6.109e-02 5.455e-02 4.066e-02 2.620e-02 1.586e-02 9.462e-03 - 6.160e-03 4.685e-03 4.685e-03 6.160e-03 9.462e-03 1.586e-02 - 2.620e-02 4.066e-02 5.455e-02 - 3.255e-02 2.757e-02 2.065e-02 1.407e-02 9.462e-03 6.238e-03 - 4.549e-03 3.980e-03 4.549e-03 6.238e-03 9.462e-03 1.407e-02 - 2.065e-02 2.757e-02 3.255e-02 - 1.523e-02 1.312e-02 1.050e-02 8.102e-03 6.160e-03 4.549e-03 - 3.710e-03 3.710e-03 4.549e-03 6.160e-03 8.102e-03 1.050e-02 - 1.312e-02 1.523e-02 1.600e-02 - 7.208e-03 6.755e-03 6.183e-03 5.415e-03 4.685e-03 3.980e-03 - 3.710e-03 3.980e-03 4.685e-03 5.415e-03 6.183e-03 6.755e-03 - 7.208e-03 7.335e-03 7.335e-03 - 4.099e-03 4.402e-03 4.615e-03 4.687e-03 4.685e-03 4.549e-03 - 4.549e-03 4.685e-03 4.687e-03 4.615e-03 4.402e-03 4.099e-03 - 3.778e-03 3.600e-03 3.778e-03 - 3.161e-03 3.833e-03 4.615e-03 5.415e-03 6.160e-03 6.238e-03 - 6.160e-03 5.415e-03 4.615e-03 3.833e-03 3.161e-03 2.611e-03 - 2.246e-03 2.246e-03 2.611e-03 - 3.161e-03 4.402e-03 6.183e-03 8.102e-03 9.462e-03 9.462e-03 - 8.102e-03 6.183e-03 4.402e-03 3.161e-03 2.365e-03 1.853e-03 - 1.702e-03 1.853e-03 2.365e-03 - 4.099e-03 6.755e-03 1.050e-02 1.407e-02 1.586e-02 1.407e-02 - 1.050e-02 6.755e-03 4.099e-03 2.611e-03 1.853e-03 1.578e-03 - 1.578e-03 1.853e-03 2.611e-03 - 7.208e-03 1.312e-02 2.065e-02 2.620e-02 2.620e-02 2.065e-02 - 1.312e-02 7.208e-03 3.778e-03 2.246e-03 1.702e-03 1.578e-03 - 1.702e-03 2.246e-03 3.778e-03 - 1.523e-02 2.757e-02 4.066e-02 4.690e-02 4.066e-02 2.757e-02 - 1.523e-02 7.335e-03 3.600e-03 2.246e-03 1.853e-03 1.853e-03 - 2.246e-03 3.600e-03 7.335e-03 - 3.255e-02 5.455e-02 7.273e-02 7.273e-02 5.455e-02 3.255e-02 - 1.600e-02 7.335e-03 3.778e-03 2.611e-03 2.365e-03 2.611e-03 - 3.778e-03 7.335e-03 1.600e-02 - 6.777e-02 9.277e-02 9.277e-02 6.777e-02 4.205e-02 2.347e-02 - 1.264e-02 7.208e-03 4.700e-03 4.025e-03 4.700e-03 7.208e-03 - 1.264e-02 2.347e-02 4.205e-02 - 9.277e-02 1.075e-01 9.277e-02 6.359e-02 3.923e-02 2.272e-02 - 1.312e-02 7.950e-03 5.832e-03 5.832e-03 7.950e-03 1.312e-02 - 2.272e-02 3.923e-02 6.359e-02 - 9.277e-02 9.277e-02 7.321e-02 5.204e-02 3.364e-02 2.065e-02 - 1.265e-02 8.411e-03 7.112e-03 8.411e-03 1.265e-02 2.065e-02 - 3.364e-02 5.204e-02 7.321e-02 - 6.777e-02 6.359e-02 5.204e-02 3.841e-02 2.620e-02 1.720e-02 - 1.127e-02 8.316e-03 8.316e-03 1.127e-02 1.720e-02 2.620e-02 - 3.841e-02 5.204e-02 6.359e-02 - 4.205e-02 3.923e-02 3.364e-02 2.620e-02 1.938e-02 1.340e-02 - 9.366e-03 7.945e-03 9.366e-03 1.340e-02 1.938e-02 2.620e-02 - 3.364e-02 3.923e-02 4.205e-02 - 2.347e-02 2.272e-02 2.065e-02 1.720e-02 1.340e-02 9.746e-03 - 7.339e-03 7.339e-03 9.746e-03 1.340e-02 1.720e-02 2.065e-02 - 2.272e-02 2.347e-02 2.327e-02 - 1.264e-02 1.312e-02 1.265e-02 1.127e-02 9.366e-03 7.339e-03 - 6.592e-03 7.339e-03 9.366e-03 1.127e-02 1.265e-02 1.312e-02 - 1.264e-02 1.184e-02 1.184e-02 - 7.208e-03 7.950e-03 8.411e-03 8.316e-03 7.945e-03 7.339e-03 - 7.339e-03 7.945e-03 8.316e-03 8.411e-03 7.950e-03 7.208e-03 - 6.264e-03 5.856e-03 6.264e-03 - 4.700e-03 5.832e-03 7.112e-03 8.316e-03 9.366e-03 9.746e-03 - 9.366e-03 8.316e-03 7.112e-03 5.832e-03 4.700e-03 3.778e-03 - 3.212e-03 3.212e-03 3.778e-03 - 4.025e-03 5.832e-03 8.411e-03 1.127e-02 1.340e-02 1.340e-02 - 1.127e-02 8.411e-03 5.832e-03 4.025e-03 2.901e-03 2.246e-03 - 2.029e-03 2.246e-03 2.901e-03 - 4.700e-03 7.950e-03 1.265e-02 1.720e-02 1.938e-02 1.720e-02 - 1.265e-02 7.950e-03 4.700e-03 2.901e-03 2.016e-03 1.702e-03 - 1.702e-03 2.016e-03 2.901e-03 - 7.208e-03 1.312e-02 2.065e-02 2.620e-02 2.620e-02 2.065e-02 - 1.312e-02 7.208e-03 3.778e-03 2.246e-03 1.702e-03 1.578e-03 - 1.702e-03 2.246e-03 3.778e-03 - 1.264e-02 2.272e-02 3.364e-02 3.841e-02 3.364e-02 2.272e-02 - 1.264e-02 6.264e-03 3.212e-03 2.029e-03 1.702e-03 1.702e-03 - 2.029e-03 3.212e-03 6.264e-03 - 2.347e-02 3.923e-02 5.204e-02 5.204e-02 3.923e-02 2.347e-02 - 1.184e-02 5.856e-03 3.212e-03 2.246e-03 2.016e-03 2.246e-03 - 3.212e-03 5.856e-03 1.184e-02 - 4.205e-02 6.359e-02 7.321e-02 6.359e-02 4.205e-02 2.327e-02 - 1.184e-02 6.264e-03 3.778e-03 2.901e-03 2.901e-03 3.778e-03 - 6.264e-03 1.184e-02 2.327e-02 - 5.185e-02 6.194e-02 5.185e-02 4.007e-02 3.244e-02 2.347e-02 - 1.523e-02 9.636e-03 6.907e-03 6.907e-03 9.636e-03 1.523e-02 - 2.347e-02 3.244e-02 4.007e-02 - 6.194e-02 6.194e-02 5.272e-02 4.810e-02 3.923e-02 2.757e-02 - 1.795e-02 1.184e-02 9.768e-03 1.184e-02 1.795e-02 2.757e-02 - 3.923e-02 4.810e-02 5.272e-02 - 5.185e-02 5.272e-02 5.525e-02 5.204e-02 4.066e-02 2.859e-02 - 1.892e-02 1.370e-02 1.370e-02 1.892e-02 2.859e-02 4.066e-02 - 5.204e-02 5.525e-02 5.272e-02 - 4.007e-02 4.810e-02 5.204e-02 4.690e-02 3.637e-02 2.583e-02 - 1.791e-02 1.479e-02 1.791e-02 2.583e-02 3.637e-02 4.690e-02 - 5.204e-02 4.810e-02 4.007e-02 - 3.244e-02 3.923e-02 4.066e-02 3.637e-02 2.919e-02 2.075e-02 - 1.520e-02 1.520e-02 2.075e-02 2.919e-02 3.637e-02 4.066e-02 - 3.923e-02 3.244e-02 2.820e-02 - 2.347e-02 2.757e-02 2.859e-02 2.583e-02 2.075e-02 1.506e-02 - 1.272e-02 1.506e-02 2.075e-02 2.583e-02 2.859e-02 2.757e-02 - 2.347e-02 1.916e-02 1.916e-02 - 1.523e-02 1.795e-02 1.892e-02 1.791e-02 1.520e-02 1.272e-02 - 1.272e-02 1.520e-02 1.791e-02 1.892e-02 1.795e-02 1.523e-02 - 1.184e-02 1.044e-02 1.184e-02 - 9.636e-03 1.184e-02 1.370e-02 1.479e-02 1.520e-02 1.506e-02 - 1.520e-02 1.479e-02 1.370e-02 1.184e-02 9.636e-03 7.335e-03 - 5.856e-03 5.856e-03 7.335e-03 - 6.907e-03 9.768e-03 1.370e-02 1.791e-02 2.075e-02 2.075e-02 - 1.791e-02 1.370e-02 9.768e-03 6.907e-03 4.859e-03 3.600e-03 - 3.212e-03 3.600e-03 4.859e-03 - 6.907e-03 1.184e-02 1.892e-02 2.583e-02 2.919e-02 2.583e-02 - 1.892e-02 1.184e-02 6.907e-03 4.050e-03 2.741e-03 2.246e-03 - 2.246e-03 2.741e-03 4.050e-03 - 9.636e-03 1.795e-02 2.859e-02 3.637e-02 3.637e-02 2.859e-02 - 1.795e-02 9.636e-03 4.859e-03 2.741e-03 2.016e-03 1.853e-03 - 2.016e-03 2.741e-03 4.859e-03 - 1.523e-02 2.757e-02 4.066e-02 4.690e-02 4.066e-02 2.757e-02 - 1.523e-02 7.335e-03 3.600e-03 2.246e-03 1.853e-03 1.853e-03 - 2.246e-03 3.600e-03 7.335e-03 - 2.347e-02 3.923e-02 5.204e-02 5.204e-02 3.923e-02 2.347e-02 - 1.184e-02 5.856e-03 3.212e-03 2.246e-03 2.016e-03 2.246e-03 - 3.212e-03 5.856e-03 1.184e-02 - 3.244e-02 4.810e-02 5.525e-02 4.810e-02 3.244e-02 1.916e-02 - 1.044e-02 5.856e-03 3.600e-03 2.741e-03 2.741e-03 3.600e-03 - 5.856e-03 1.044e-02 1.916e-02 - 4.007e-02 5.272e-02 5.272e-02 4.007e-02 2.820e-02 1.916e-02 - 1.184e-02 7.335e-03 4.859e-03 4.050e-03 4.859e-03 7.335e-03 - 1.184e-02 1.916e-02 2.820e-02 - 1.824e-02 1.824e-02 2.392e-02 4.007e-02 4.205e-02 3.255e-02 - 2.182e-02 1.445e-02 1.179e-02 1.445e-02 2.182e-02 3.255e-02 - 4.205e-02 4.007e-02 2.392e-02 - 1.824e-02 2.857e-02 5.272e-02 6.359e-02 5.455e-02 3.967e-02 - 2.653e-02 1.895e-02 1.895e-02 2.653e-02 3.967e-02 5.455e-02 - 6.359e-02 5.272e-02 2.857e-02 - 2.392e-02 5.272e-02 7.321e-02 7.273e-02 5.829e-02 4.213e-02 - 2.898e-02 2.401e-02 2.898e-02 4.213e-02 5.829e-02 7.273e-02 - 7.321e-02 5.272e-02 2.392e-02 - 4.007e-02 6.359e-02 7.273e-02 6.717e-02 5.348e-02 3.817e-02 - 2.780e-02 2.780e-02 3.817e-02 5.348e-02 6.717e-02 7.273e-02 - 6.359e-02 4.007e-02 2.575e-02 - 4.205e-02 5.455e-02 5.829e-02 5.348e-02 4.254e-02 2.987e-02 - 2.402e-02 2.987e-02 4.254e-02 5.348e-02 5.829e-02 5.455e-02 - 4.205e-02 2.820e-02 2.820e-02 - 3.255e-02 3.967e-02 4.213e-02 3.817e-02 2.987e-02 2.189e-02 - 2.189e-02 2.987e-02 3.817e-02 4.213e-02 3.967e-02 3.255e-02 - 2.327e-02 1.916e-02 2.327e-02 - 2.182e-02 2.653e-02 2.898e-02 2.780e-02 2.402e-02 2.189e-02 - 2.402e-02 2.780e-02 2.898e-02 2.653e-02 2.182e-02 1.600e-02 - 1.184e-02 1.184e-02 1.600e-02 - 1.445e-02 1.895e-02 2.401e-02 2.780e-02 2.987e-02 2.987e-02 - 2.780e-02 2.401e-02 1.895e-02 1.445e-02 1.022e-02 7.335e-03 - 6.264e-03 7.335e-03 1.022e-02 - 1.179e-02 1.895e-02 2.898e-02 3.817e-02 4.254e-02 3.817e-02 - 2.898e-02 1.895e-02 1.179e-02 7.107e-03 4.859e-03 3.778e-03 - 3.778e-03 4.859e-03 7.107e-03 - 1.445e-02 2.653e-02 4.213e-02 5.348e-02 5.348e-02 4.213e-02 - 2.653e-02 1.445e-02 7.107e-03 4.050e-03 2.901e-03 2.611e-03 - 2.901e-03 4.050e-03 7.107e-03 - 2.182e-02 3.967e-02 5.829e-02 6.717e-02 5.829e-02 3.967e-02 - 2.182e-02 1.022e-02 4.859e-03 2.901e-03 2.365e-03 2.365e-03 - 2.901e-03 4.859e-03 1.022e-02 - 3.255e-02 5.455e-02 7.273e-02 7.273e-02 5.455e-02 3.255e-02 - 1.600e-02 7.335e-03 3.778e-03 2.611e-03 2.365e-03 2.611e-03 - 3.778e-03 7.335e-03 1.600e-02 - 4.205e-02 6.359e-02 7.321e-02 6.359e-02 4.205e-02 2.327e-02 - 1.184e-02 6.264e-03 3.778e-03 2.901e-03 2.901e-03 3.778e-03 - 6.264e-03 1.184e-02 2.327e-02 - 4.007e-02 5.272e-02 5.272e-02 4.007e-02 2.820e-02 1.916e-02 - 1.184e-02 7.335e-03 4.859e-03 4.050e-03 4.859e-03 7.335e-03 - 1.184e-02 1.916e-02 2.820e-02 - 2.392e-02 2.857e-02 2.392e-02 2.575e-02 2.820e-02 2.327e-02 - 1.600e-02 1.022e-02 7.107e-03 7.107e-03 1.022e-02 1.600e-02 - 2.327e-02 2.820e-02 2.575e-02 diff --git a/tests/03_NAO_multik/23_NO_KP_OK/result.ref b/tests/03_NAO_multik/23_NO_KP_OK/result.ref deleted file mode 100644 index e62d956fce..0000000000 --- a/tests/03_NAO_multik/23_NO_KP_OK/result.ref +++ /dev/null @@ -1,5 +0,0 @@ -etotref -196.4521105421520 -etotperatomref -98.2260552711 -chgs1.cube_pass 0 -taus1.cube_pass 0 -totaltimeref 0.62163 diff --git a/tests/03_NAO_multik/23_NO_KP_OK/taus1.cube.ref b/tests/03_NAO_multik/23_NO_KP_OK/taus1.cube.ref deleted file mode 100644 index e6bbb4ea99..0000000000 --- a/tests/03_NAO_multik/23_NO_KP_OK/taus1.cube.ref +++ /dev/null @@ -1,683 +0,0 @@ -STEP: 0 Cubefile created from ABACUS. Inner loop is z, followed by y and x -1 (nspin) 0.644033 (fermi energy, in Ry) -2 0.0 0.0 0.0 -15 0.000000 0.340000 0.340000 -15 0.340000 0.000000 0.340000 -15 0.340000 0.340000 0.000000 - 14 4 0.000000 0.000000 0.000000 - 14 4 2.550000 2.550000 2.550000 - 1.80281085967e-01 1.82422828268e-01 1.16467735388e-01 6.52691932418e-02 4.77193978469e-02 3.72920735613e-02 - 3.18085146238e-02 2.99172055199e-02 2.99172055199e-02 3.18085146238e-02 3.72920735613e-02 4.77193978469e-02 - 6.52691932418e-02 1.16467735388e-01 1.82422828268e-01 - 1.82422828268e-01 1.02568469446e-01 5.03836760403e-02 3.50294268557e-02 3.42073290623e-02 3.78194924587e-02 - 4.02222959331e-02 4.34116802001e-02 4.02222959331e-02 3.78194924587e-02 3.42073290623e-02 3.50294268557e-02 - 5.03836760403e-02 1.02568469446e-01 1.82422828268e-01 - 1.16467735388e-01 5.03836760403e-02 2.76155885440e-02 2.56381222091e-02 3.16578904846e-02 4.30811551462e-02 - 5.01938086050e-02 5.01938086050e-02 4.30811551462e-02 3.16578904846e-02 2.56381222091e-02 2.76155885440e-02 - 5.03836760403e-02 1.16467735388e-01 1.75978291339e-01 - 6.52691932418e-02 3.50294268557e-02 2.56381222091e-02 2.77650059484e-02 3.92607806531e-02 5.15953878901e-02 - 6.40797263891e-02 5.15953878901e-02 3.92607806531e-02 2.77650059484e-02 2.56381222091e-02 3.50294268557e-02 - 6.52691932418e-02 9.95387143197e-02 9.95387143197e-02 - 4.77193978469e-02 3.42073290623e-02 3.16578904846e-02 3.92607806531e-02 5.77610358000e-02 7.23281111668e-02 - 7.23281111668e-02 5.77610358000e-02 3.92607806531e-02 3.16578904846e-02 3.42073290623e-02 4.77193978469e-02 - 5.61335799375e-02 6.46788103129e-02 5.61335799375e-02 - 3.72920735613e-02 3.78194924587e-02 4.30811551462e-02 5.15953878901e-02 7.23281111668e-02 8.49232065105e-02 - 7.23281111668e-02 5.15953878901e-02 4.30811551462e-02 3.78194924587e-02 3.72920735613e-02 3.85875039457e-02 - 3.97809938382e-02 3.97809938382e-02 3.85875039457e-02 - 3.18085146238e-02 4.02222959331e-02 5.01938086050e-02 6.40797263891e-02 7.23281111668e-02 7.23281111668e-02 - 6.40797263891e-02 5.01938086050e-02 4.02222959331e-02 3.18085146238e-02 2.77237360128e-02 2.42768838976e-02 - 2.38593064853e-02 2.42768838976e-02 2.77237360128e-02 - 2.99172055199e-02 4.34116802001e-02 5.01938086050e-02 5.15953878901e-02 5.77610358000e-02 5.15953878901e-02 - 5.01938086050e-02 4.34116802001e-02 2.99172055199e-02 2.21844351566e-02 1.56599181080e-02 1.25503014842e-02 - 1.25503014842e-02 1.56599181080e-02 2.21844351566e-02 - 2.99172055199e-02 4.02222959331e-02 4.30811551462e-02 3.92607806531e-02 3.92607806531e-02 4.30811551462e-02 - 4.02222959331e-02 2.99172055199e-02 1.95071574201e-02 1.13646063453e-02 6.70218401668e-03 4.59069441377e-03 - 6.70218401668e-03 1.13646063453e-02 1.95071574201e-02 - 3.18085146238e-02 3.78194924587e-02 3.16578904846e-02 2.77650059484e-02 3.16578904846e-02 3.78194924587e-02 - 3.18085146238e-02 2.21844351566e-02 1.13646063453e-02 5.11954914432e-03 1.60658688370e-03 1.60658688370e-03 - 5.11954914432e-03 1.13646063453e-02 2.21844351566e-02 - 3.72920735613e-02 3.42073290623e-02 2.56381222091e-02 2.56381222091e-02 3.42073290623e-02 3.72920735613e-02 - 2.77237360128e-02 1.56599181080e-02 6.70218401668e-03 1.60658688370e-03 2.99179150647e-04 1.60658688370e-03 - 6.70218401668e-03 1.56599181080e-02 2.77237360128e-02 - 4.77193978469e-02 3.50294268557e-02 2.76155885440e-02 3.50294268557e-02 4.77193978469e-02 3.85875039457e-02 - 2.42768838976e-02 1.25503014842e-02 4.59069441377e-03 1.60658688370e-03 1.60658688370e-03 4.59069441377e-03 - 1.25503014842e-02 2.42768838976e-02 3.85875039457e-02 - 6.52691932418e-02 5.03836760403e-02 5.03836760403e-02 6.52691932418e-02 5.61335799375e-02 3.97809938382e-02 - 2.38593064853e-02 1.25503014842e-02 6.70218401668e-03 5.11954914432e-03 6.70218401668e-03 1.25503014842e-02 - 2.38593064853e-02 3.97809938382e-02 5.61335799375e-02 - 1.16467735388e-01 1.02568469446e-01 1.16467735388e-01 9.95387143197e-02 6.46788103129e-02 3.97809938382e-02 - 2.42768838976e-02 1.56599181080e-02 1.13646063453e-02 1.13646063453e-02 1.56599181080e-02 2.42768838976e-02 - 3.97809938382e-02 6.46788103129e-02 9.95387143197e-02 - 1.82422828268e-01 1.82422828268e-01 1.75978291339e-01 9.95387143197e-02 5.61335799375e-02 3.85875039457e-02 - 2.77237360128e-02 2.21844351566e-02 1.95071574201e-02 2.21844351566e-02 2.77237360128e-02 3.85875039457e-02 - 5.61335799375e-02 9.95387143197e-02 1.75978291339e-01 - 1.82422828268e-01 1.02568469446e-01 5.03836760403e-02 3.50294268557e-02 3.42073290623e-02 3.78194924587e-02 - 4.02222959331e-02 4.34116802001e-02 4.02222959331e-02 3.78194924587e-02 3.42073290623e-02 3.50294268557e-02 - 5.03836760403e-02 1.02568469446e-01 1.82422828268e-01 - 1.02568469446e-01 3.75098528213e-02 1.55091198600e-02 1.76415461442e-02 2.80289195955e-02 4.32649438817e-02 - 5.27225154807e-02 5.27225154807e-02 4.32649438817e-02 2.80289195955e-02 1.76415461442e-02 1.55091198600e-02 - 3.75098528213e-02 1.02568469446e-01 1.83280188132e-01 - 5.03836760403e-02 1.55091198600e-02 7.66046977902e-03 1.45740503756e-02 3.18433510883e-02 5.41698533623e-02 - 7.22755322173e-02 5.41698533623e-02 3.18433510883e-02 1.45740503756e-02 7.66046977902e-03 1.55091198600e-02 - 5.03836760403e-02 1.13539754126e-01 1.13539754126e-01 - 3.50294268557e-02 1.76415461442e-02 1.45740503756e-02 2.47958446021e-02 5.21992902722e-02 8.90053073193e-02 - 8.90053073193e-02 5.21992902722e-02 2.47958446021e-02 1.45740503756e-02 1.76415461442e-02 3.50294268557e-02 - 5.92235143217e-02 8.15533129102e-02 5.92235143217e-02 - 3.42073290623e-02 2.80289195955e-02 3.18433510883e-02 5.21992902722e-02 9.62989068912e-02 1.28883911425e-01 - 9.62989068912e-02 5.21992902722e-02 3.18433510883e-02 2.80289195955e-02 3.42073290623e-02 4.46676835001e-02 - 5.23936115453e-02 5.23936115453e-02 4.46676835001e-02 - 3.78194924587e-02 4.32649438817e-02 5.41698533623e-02 8.90053073193e-02 1.28883911425e-01 1.28883911425e-01 - 8.90053073193e-02 5.41698533623e-02 4.32649438817e-02 3.78194924587e-02 3.60022233749e-02 3.49506556165e-02 - 3.70994631101e-02 3.49506556165e-02 3.60022233749e-02 - 4.02222959331e-02 5.27225154807e-02 7.22755322173e-02 8.90053073193e-02 9.62989068912e-02 8.90053073193e-02 - 7.22755322173e-02 5.27225154807e-02 4.02222959331e-02 3.08604739677e-02 2.43879073207e-02 2.13888507874e-02 - 2.13888507874e-02 2.43879073207e-02 3.08604739677e-02 - 4.34116802001e-02 5.27225154807e-02 5.41698533623e-02 5.21992902722e-02 5.21992902722e-02 5.41698533623e-02 - 5.27225154807e-02 4.34116802001e-02 2.79666745937e-02 1.78991060313e-02 1.23746382387e-02 9.66467351917e-03 - 1.23746382387e-02 1.78991060313e-02 2.79666745937e-02 - 4.02222959331e-02 4.32649438817e-02 3.18433510883e-02 2.47958446021e-02 3.18433510883e-02 4.32649438817e-02 - 4.02222959331e-02 2.79666745937e-02 1.52963446205e-02 7.92513025055e-03 3.86875558844e-03 3.86875558844e-03 - 7.92513025055e-03 1.52963446205e-02 2.79666745937e-02 - 3.78194924587e-02 2.80289195955e-02 1.45740503756e-02 1.45740503756e-02 2.80289195955e-02 3.78194924587e-02 - 3.08604739677e-02 1.78991060313e-02 7.92513025055e-03 2.15869962360e-03 6.20007891972e-04 2.15869962360e-03 - 7.92513025055e-03 1.78991060313e-02 3.08604739677e-02 - 3.42073290623e-02 1.76415461442e-02 7.66046977902e-03 1.76415461442e-02 3.42073290623e-02 3.60022233749e-02 - 2.43879073207e-02 1.23746382387e-02 3.86875558844e-03 6.20007891972e-04 6.20007891972e-04 3.86875558844e-03 - 1.23746382387e-02 2.43879073207e-02 3.60022233749e-02 - 3.50294268557e-02 1.55091198600e-02 1.55091198600e-02 3.50294268557e-02 4.46676835001e-02 3.49506556165e-02 - 2.13888507874e-02 9.66467351917e-03 3.86875558844e-03 2.15869962360e-03 3.86875558844e-03 9.66467351917e-03 - 2.13888507874e-02 3.49506556165e-02 4.46676835001e-02 - 5.03836760403e-02 3.75098528213e-02 5.03836760403e-02 5.92235143217e-02 5.23936115453e-02 3.70994631101e-02 - 2.13888507874e-02 1.23746382387e-02 7.92513025055e-03 7.92513025055e-03 1.23746382387e-02 2.13888507874e-02 - 3.70994631101e-02 5.23936115453e-02 5.92235143217e-02 - 1.02568469446e-01 1.02568469446e-01 1.13539754126e-01 8.15533129102e-02 5.23936115453e-02 3.49506556165e-02 - 2.43879073207e-02 1.78991060313e-02 1.52963446205e-02 1.78991060313e-02 2.43879073207e-02 3.49506556165e-02 - 5.23936115453e-02 8.15533129102e-02 1.13539754126e-01 - 1.82422828268e-01 1.83280188132e-01 1.13539754126e-01 5.92235143217e-02 4.46676835001e-02 3.60022233749e-02 - 3.08604739677e-02 2.79666745937e-02 2.79666745937e-02 3.08604739677e-02 3.60022233749e-02 4.46676835001e-02 - 5.92235143217e-02 1.13539754126e-01 1.83280188132e-01 - 1.16467735388e-01 5.03836760403e-02 2.76155885440e-02 2.56381222091e-02 3.16578904846e-02 4.30811551462e-02 - 5.01938086050e-02 5.01938086050e-02 4.30811551462e-02 3.16578904846e-02 2.56381222091e-02 2.76155885440e-02 - 5.03836760403e-02 1.16467735388e-01 1.75978291339e-01 - 5.03836760403e-02 1.55091198600e-02 7.66046977902e-03 1.45740503756e-02 3.18433510883e-02 5.41698533623e-02 - 7.22755322173e-02 5.41698533623e-02 3.18433510883e-02 1.45740503756e-02 7.66046977902e-03 1.55091198600e-02 - 5.03836760403e-02 1.13539754126e-01 1.13539754126e-01 - 2.76155885440e-02 7.66046977902e-03 5.88407505951e-04 1.22283197111e-02 4.60292144819e-02 9.32262743675e-02 - 9.32262743675e-02 4.60292144819e-02 1.22283197111e-02 5.88407505951e-04 7.66046977902e-03 2.76155885440e-02 - 6.09424067177e-02 8.53804463649e-02 6.09424067177e-02 - 2.56381222091e-02 1.45740503756e-02 1.22283197111e-02 3.36135559891e-02 9.58701888529e-02 1.55893621190e-01 - 9.58701888529e-02 3.36135559891e-02 1.22283197111e-02 1.45740503756e-02 2.56381222091e-02 4.40351969320e-02 - 5.84769754663e-02 5.84769754663e-02 4.40351969320e-02 - 3.16578904846e-02 3.18433510883e-02 4.60292144819e-02 9.58701888529e-02 1.78937466321e-01 1.78937466321e-01 - 9.58701888529e-02 4.60292144819e-02 3.18433510883e-02 3.16578904846e-02 3.72212996136e-02 4.27231306029e-02 - 4.57138189196e-02 4.27231306029e-02 3.72212996136e-02 - 4.30811551462e-02 5.41698533623e-02 9.32262743675e-02 1.55893621190e-01 1.78937466321e-01 1.55893621190e-01 - 9.32262743675e-02 5.41698533623e-02 4.30811551462e-02 3.54179538479e-02 3.30817407316e-02 3.00019977593e-02 - 3.00019977593e-02 3.30817407316e-02 3.54179538479e-02 - 5.01938086050e-02 7.22755322173e-02 9.32262743675e-02 9.58701888529e-02 9.58701888529e-02 9.32262743675e-02 - 7.22755322173e-02 5.01938086050e-02 3.49314010620e-02 2.55149658819e-02 1.86401066199e-02 1.63183576357e-02 - 1.86401066199e-02 2.55149658819e-02 3.49314010620e-02 - 5.01938086050e-02 5.41698533623e-02 4.60292144819e-02 3.36135559891e-02 4.60292144819e-02 5.41698533623e-02 - 5.01938086050e-02 3.55073021064e-02 2.15005775831e-02 1.24898667953e-02 8.27412039851e-03 8.27412039851e-03 - 1.24898667953e-02 2.15005775831e-02 3.55073021064e-02 - 4.30811551462e-02 3.18433510883e-02 1.22283197111e-02 1.22283197111e-02 3.18433510883e-02 4.30811551462e-02 - 3.49314010620e-02 2.15005775831e-02 9.79121310155e-03 4.02268913133e-03 2.15067339004e-03 4.02268913133e-03 - 9.79121310155e-03 2.15005775831e-02 3.49314010620e-02 - 3.16578904846e-02 1.45740503756e-02 5.88407505951e-04 1.45740503756e-02 3.16578904846e-02 3.54179538479e-02 - 2.55149658819e-02 1.24898667953e-02 4.02268913133e-03 5.43091896583e-04 5.43091896583e-04 4.02268913133e-03 - 1.24898667953e-02 2.55149658819e-02 3.54179538479e-02 - 2.56381222091e-02 7.66046977902e-03 7.66046977902e-03 2.56381222091e-02 3.72212996136e-02 3.30817407316e-02 - 1.86401066199e-02 8.27412039851e-03 2.15067339004e-03 5.43091896583e-04 2.15067339004e-03 8.27412039851e-03 - 1.86401066199e-02 3.30817407316e-02 3.72212996136e-02 - 2.76155885440e-02 1.55091198600e-02 2.76155885440e-02 4.40351969320e-02 4.27231306029e-02 3.00019977593e-02 - 1.63183576357e-02 8.27412039851e-03 4.02268913133e-03 4.02268913133e-03 8.27412039851e-03 1.63183576357e-02 - 3.00019977593e-02 4.27231306029e-02 4.40351969320e-02 - 5.03836760403e-02 5.03836760403e-02 6.09424067177e-02 5.84769754663e-02 4.57138189196e-02 3.00019977593e-02 - 1.86401066199e-02 1.24898667953e-02 9.79121310155e-03 1.24898667953e-02 1.86401066199e-02 3.00019977593e-02 - 4.57138189196e-02 5.84769754663e-02 6.09424067177e-02 - 1.16467735388e-01 1.13539754126e-01 8.53804463649e-02 5.84769754663e-02 4.27231306029e-02 3.30817407316e-02 - 2.55149658819e-02 2.15005775831e-02 2.15005775831e-02 2.55149658819e-02 3.30817407316e-02 4.27231306029e-02 - 5.84769754663e-02 8.53804463649e-02 1.13539754126e-01 - 1.75978291339e-01 1.13539754126e-01 6.09424067177e-02 4.40351969320e-02 3.72212996136e-02 3.54179538479e-02 - 3.49314010620e-02 3.55073021064e-02 3.49314010620e-02 3.54179538479e-02 3.72212996136e-02 4.40351969320e-02 - 6.09424067177e-02 1.13539754126e-01 1.75978291339e-01 - 6.52691932418e-02 3.50294268557e-02 2.56381222091e-02 2.77650059484e-02 3.92607806531e-02 5.15953878901e-02 - 6.40797263891e-02 5.15953878901e-02 3.92607806531e-02 2.77650059484e-02 2.56381222091e-02 3.50294268557e-02 - 6.52691932418e-02 9.95387143197e-02 9.95387143197e-02 - 3.50294268557e-02 1.76415461442e-02 1.45740503756e-02 2.47958446021e-02 5.21992902722e-02 8.90053073193e-02 - 8.90053073193e-02 5.21992902722e-02 2.47958446021e-02 1.45740503756e-02 1.76415461442e-02 3.50294268557e-02 - 5.92235143217e-02 8.15533129102e-02 5.92235143217e-02 - 2.56381222091e-02 1.45740503756e-02 1.22283197111e-02 3.36135559891e-02 9.58701888529e-02 1.55893621190e-01 - 9.58701888529e-02 3.36135559891e-02 1.22283197111e-02 1.45740503756e-02 2.56381222091e-02 4.40351969320e-02 - 5.84769754663e-02 5.84769754663e-02 4.40351969320e-02 - 2.77650059484e-02 2.47958446021e-02 3.36135559891e-02 6.76894902970e-02 1.65125441372e-01 1.65125441372e-01 - 6.76894902970e-02 3.36135559891e-02 2.47958446021e-02 2.77650059484e-02 3.74646524133e-02 4.48502710858e-02 - 5.02634504938e-02 4.48502710858e-02 3.74646524133e-02 - 3.92607806531e-02 5.21992902722e-02 9.58701888529e-02 1.65125441372e-01 1.94666393607e-01 1.65125441372e-01 - 9.58701888529e-02 5.21992902722e-02 3.92607806531e-02 3.70588268986e-02 3.66436362392e-02 3.62873182074e-02 - 3.62873182074e-02 3.66436362392e-02 3.70588268986e-02 - 5.15953878901e-02 8.90053073193e-02 1.55893621190e-01 1.65125441372e-01 1.65125441372e-01 1.55893621190e-01 - 8.90053073193e-02 5.15953878901e-02 3.88199146511e-02 3.00331874093e-02 2.47929678075e-02 2.24956267167e-02 - 2.47929678075e-02 3.00331874093e-02 3.88199146511e-02 - 6.40797263891e-02 8.90053073193e-02 9.58701888529e-02 6.76894902970e-02 9.58701888529e-02 8.90053073193e-02 - 6.40797263891e-02 4.06623304521e-02 2.56772132883e-02 1.73142648442e-02 1.28060436295e-02 1.28060436295e-02 - 1.73142648442e-02 2.56772132883e-02 4.06623304521e-02 - 5.15953878901e-02 5.21992902722e-02 3.36135559891e-02 3.36135559891e-02 5.21992902722e-02 5.15953878901e-02 - 4.06623304521e-02 2.60569281693e-02 1.40094656991e-02 7.35387417276e-03 5.53145518161e-03 7.35387417276e-03 - 1.40094656991e-02 2.60569281693e-02 4.06623304521e-02 - 3.92607806531e-02 2.47958446021e-02 1.22283197111e-02 2.47958446021e-02 3.92607806531e-02 3.88199146511e-02 - 2.56772132883e-02 1.40094656991e-02 5.18295256070e-03 1.64102393395e-03 1.64102393395e-03 5.18295256070e-03 - 1.40094656991e-02 2.56772132883e-02 3.88199146511e-02 - 2.77650059484e-02 1.45740503756e-02 1.45740503756e-02 2.77650059484e-02 3.70588268986e-02 3.00331874093e-02 - 1.73142648442e-02 7.35387417276e-03 1.64102393395e-03 1.47520974601e-04 1.64102393395e-03 7.35387417276e-03 - 1.73142648442e-02 3.00331874093e-02 3.70588268986e-02 - 2.56381222091e-02 1.76415461442e-02 2.56381222091e-02 3.74646524133e-02 3.66436362392e-02 2.47929678075e-02 - 1.28060436295e-02 5.53145518161e-03 1.64102393395e-03 1.64102393395e-03 5.53145518161e-03 1.28060436295e-02 - 2.47929678075e-02 3.66436362392e-02 3.74646524133e-02 - 3.50294268557e-02 3.50294268557e-02 4.40351969320e-02 4.48502710858e-02 3.62873182074e-02 2.24956267167e-02 - 1.28060436295e-02 7.35387417276e-03 5.18295256070e-03 7.35387417276e-03 1.28060436295e-02 2.24956267167e-02 - 3.62873182074e-02 4.48502710858e-02 4.40351969320e-02 - 6.52691932418e-02 5.92235143217e-02 5.84769754663e-02 5.02634504938e-02 3.62873182074e-02 2.47929678075e-02 - 1.73142648442e-02 1.40094656991e-02 1.40094656991e-02 1.73142648442e-02 2.47929678075e-02 3.62873182074e-02 - 5.02634504938e-02 5.84769754663e-02 5.92235143217e-02 - 9.95387143197e-02 8.15533129102e-02 5.84769754663e-02 4.48502710858e-02 3.66436362392e-02 3.00331874093e-02 - 2.56772132883e-02 2.60569281693e-02 2.56772132883e-02 3.00331874093e-02 3.66436362392e-02 4.48502710858e-02 - 5.84769754663e-02 8.15533129102e-02 9.95387143197e-02 - 9.95387143197e-02 5.92235143217e-02 4.40351969320e-02 3.74646524133e-02 3.70588268986e-02 3.88199146511e-02 - 4.06623304521e-02 4.06623304521e-02 3.88199146511e-02 3.70588268986e-02 3.74646524133e-02 4.40351969320e-02 - 5.92235143217e-02 9.95387143197e-02 1.21879341630e-01 - 4.77193978469e-02 3.42073290623e-02 3.16578904846e-02 3.92607806531e-02 5.77610358000e-02 7.23281111668e-02 - 7.23281111668e-02 5.77610358000e-02 3.92607806531e-02 3.16578904846e-02 3.42073290623e-02 4.77193978469e-02 - 5.61335799375e-02 6.46788103129e-02 5.61335799375e-02 - 3.42073290623e-02 2.80289195955e-02 3.18433510883e-02 5.21992902722e-02 9.62989068912e-02 1.28883911425e-01 - 9.62989068912e-02 5.21992902722e-02 3.18433510883e-02 2.80289195955e-02 3.42073290623e-02 4.46676835001e-02 - 5.23936115453e-02 5.23936115453e-02 4.46676835001e-02 - 3.16578904846e-02 3.18433510883e-02 4.60292144819e-02 9.58701888529e-02 1.78937466321e-01 1.78937466321e-01 - 9.58701888529e-02 4.60292144819e-02 3.18433510883e-02 3.16578904846e-02 3.72212996136e-02 4.27231306029e-02 - 4.57138189196e-02 4.27231306029e-02 3.72212996136e-02 - 3.92607806531e-02 5.21992902722e-02 9.58701888529e-02 1.65125441372e-01 1.94666393607e-01 1.65125441372e-01 - 9.58701888529e-02 5.21992902722e-02 3.92607806531e-02 3.70588268986e-02 3.66436362392e-02 3.62873182074e-02 - 3.62873182074e-02 3.66436362392e-02 3.70588268986e-02 - 5.77610358000e-02 9.62989068912e-02 1.78937466321e-01 1.94666393607e-01 1.94666393607e-01 1.78937466321e-01 - 9.62989068912e-02 5.77610358000e-02 4.31689270135e-02 3.18895470196e-02 2.71142914004e-02 2.45905634624e-02 - 2.71142914004e-02 3.18895470196e-02 4.31689270135e-02 - 7.23281111668e-02 1.28883911425e-01 1.78937466321e-01 1.65125441372e-01 1.78937466321e-01 1.28883911425e-01 - 7.23281111668e-02 4.49581105718e-02 2.94734728104e-02 2.09853466063e-02 1.67257046016e-02 1.67257046016e-02 - 2.09853466063e-02 2.94734728104e-02 4.49581105718e-02 - 7.23281111668e-02 9.62989068912e-02 9.58701888529e-02 9.58701888529e-02 9.62989068912e-02 7.23281111668e-02 - 4.78620662790e-02 2.78871820412e-02 1.64170481704e-02 1.00194370256e-02 8.33783116227e-03 1.00194370256e-02 - 1.64170481704e-02 2.78871820412e-02 4.78620662790e-02 - 5.77610358000e-02 5.21992902722e-02 4.60292144819e-02 5.21992902722e-02 5.77610358000e-02 4.49581105718e-02 - 2.78871820412e-02 1.43763201712e-02 7.08929107284e-03 3.65259578883e-03 3.65259578883e-03 7.08929107284e-03 - 1.43763201712e-02 2.78871820412e-02 4.49581105718e-02 - 3.92607806531e-02 3.18433510883e-02 3.18433510883e-02 3.92607806531e-02 4.31689270135e-02 2.94734728104e-02 - 1.64170481704e-02 7.08929107284e-03 2.06279931440e-03 7.49011933950e-04 2.06279931440e-03 7.08929107284e-03 - 1.64170481704e-02 2.94734728104e-02 4.31689270135e-02 - 3.16578904846e-02 2.80289195955e-02 3.16578904846e-02 3.70588268986e-02 3.18895470196e-02 2.09853466063e-02 - 1.00194370256e-02 3.65259578883e-03 7.49011933950e-04 7.49011933950e-04 3.65259578883e-03 1.00194370256e-02 - 2.09853466063e-02 3.18895470196e-02 3.70588268986e-02 - 3.42073290623e-02 3.42073290623e-02 3.72212996136e-02 3.66436362392e-02 2.71142914004e-02 1.67257046016e-02 - 8.33783116227e-03 3.65259578883e-03 2.06279931440e-03 3.65259578883e-03 8.33783116227e-03 1.67257046016e-02 - 2.71142914004e-02 3.66436362392e-02 3.72212996136e-02 - 4.77193978469e-02 4.46676835001e-02 4.27231306029e-02 3.62873182074e-02 2.45905634624e-02 1.67257046016e-02 - 1.00194370256e-02 7.08929107284e-03 7.08929107284e-03 1.00194370256e-02 1.67257046016e-02 2.45905634624e-02 - 3.62873182074e-02 4.27231306029e-02 4.46676835001e-02 - 5.61335799375e-02 5.23936115453e-02 4.57138189196e-02 3.62873182074e-02 2.71142914004e-02 2.09853466063e-02 - 1.64170481704e-02 1.43763201712e-02 1.64170481704e-02 2.09853466063e-02 2.71142914004e-02 3.62873182074e-02 - 4.57138189196e-02 5.23936115453e-02 5.61335799375e-02 - 6.46788103129e-02 5.23936115453e-02 4.27231306029e-02 3.66436362392e-02 3.18895470196e-02 2.94734728104e-02 - 2.78871820412e-02 2.78871820412e-02 2.94734728104e-02 3.18895470196e-02 3.66436362392e-02 4.27231306029e-02 - 5.23936115453e-02 6.46788103129e-02 7.10707876951e-02 - 5.61335799375e-02 4.46676835001e-02 3.72212996136e-02 3.70588268986e-02 4.31689270135e-02 4.49581105718e-02 - 4.78620662790e-02 4.49581105718e-02 4.31689270135e-02 3.70588268986e-02 3.72212996136e-02 4.46676835001e-02 - 5.61335799375e-02 7.10707876951e-02 7.10707876951e-02 - 3.72920735613e-02 3.78194924587e-02 4.30811551462e-02 5.15953878901e-02 7.23281111668e-02 8.49232065105e-02 - 7.23281111668e-02 5.15953878901e-02 4.30811551462e-02 3.78194924587e-02 3.72920735613e-02 3.85875039457e-02 - 3.97809938382e-02 3.97809938382e-02 3.85875039457e-02 - 3.78194924587e-02 4.32649438817e-02 5.41698533623e-02 8.90053073193e-02 1.28883911425e-01 1.28883911425e-01 - 8.90053073193e-02 5.41698533623e-02 4.32649438817e-02 3.78194924587e-02 3.60022233749e-02 3.49506556165e-02 - 3.70994631101e-02 3.49506556165e-02 3.60022233749e-02 - 4.30811551462e-02 5.41698533623e-02 9.32262743675e-02 1.55893621190e-01 1.78937466321e-01 1.55893621190e-01 - 9.32262743675e-02 5.41698533623e-02 4.30811551462e-02 3.54179538479e-02 3.30817407316e-02 3.00019977593e-02 - 3.00019977593e-02 3.30817407316e-02 3.54179538479e-02 - 5.15953878901e-02 8.90053073193e-02 1.55893621190e-01 1.65125441372e-01 1.65125441372e-01 1.55893621190e-01 - 8.90053073193e-02 5.15953878901e-02 3.88199146511e-02 3.00331874093e-02 2.47929678075e-02 2.24956267167e-02 - 2.47929678075e-02 3.00331874093e-02 3.88199146511e-02 - 7.23281111668e-02 1.28883911425e-01 1.78937466321e-01 1.65125441372e-01 1.78937466321e-01 1.28883911425e-01 - 7.23281111668e-02 4.49581105718e-02 2.94734728104e-02 2.09853466063e-02 1.67257046016e-02 1.67257046016e-02 - 2.09853466063e-02 2.94734728104e-02 4.49581105718e-02 - 8.49232065105e-02 1.28883911425e-01 1.55893621190e-01 1.55893621190e-01 1.28883911425e-01 8.49232065105e-02 - 5.02965815685e-02 3.02094126272e-02 1.68972398574e-02 1.09153312429e-02 9.07395147277e-03 1.09153312429e-02 - 1.68972398574e-02 3.02094126272e-02 5.02965815685e-02 - 7.23281111668e-02 8.90053073193e-02 9.32262743675e-02 8.90053073193e-02 7.23281111668e-02 5.02965815685e-02 - 2.97058195093e-02 1.56734539515e-02 8.96019182257e-03 5.26506660326e-03 5.26506660326e-03 8.96019182257e-03 - 1.56734539515e-02 2.97058195093e-02 5.02965815685e-02 - 5.15953878901e-02 5.41698533623e-02 5.41698533623e-02 5.15953878901e-02 4.49581105718e-02 3.02094126272e-02 - 1.56734539515e-02 7.32490142478e-03 3.29271151918e-03 2.09418534593e-03 3.29271151918e-03 7.32490142478e-03 - 1.56734539515e-02 3.02094126272e-02 4.49581105718e-02 - 4.30811551462e-02 4.32649438817e-02 4.30811551462e-02 3.88199146511e-02 2.94734728104e-02 1.68972398574e-02 - 8.96019182257e-03 3.29271151918e-03 1.38542142842e-03 1.38542142842e-03 3.29271151918e-03 8.96019182257e-03 - 1.68972398574e-02 2.94734728104e-02 3.88199146511e-02 - 3.78194924587e-02 3.78194924587e-02 3.54179538479e-02 3.00331874093e-02 2.09853466063e-02 1.09153312429e-02 - 5.26506660326e-03 2.09418534593e-03 1.38542142842e-03 2.09418534593e-03 5.26506660326e-03 1.09153312429e-02 - 2.09853466063e-02 3.00331874093e-02 3.54179538479e-02 - 3.72920735613e-02 3.60022233749e-02 3.30817407316e-02 2.47929678075e-02 1.67257046016e-02 9.07395147277e-03 - 5.26506660326e-03 3.29271151918e-03 3.29271151918e-03 5.26506660326e-03 9.07395147277e-03 1.67257046016e-02 - 2.47929678075e-02 3.30817407316e-02 3.60022233749e-02 - 3.85875039457e-02 3.49506556165e-02 3.00019977593e-02 2.24956267167e-02 1.67257046016e-02 1.09153312429e-02 - 8.96019182257e-03 7.32490142479e-03 8.96019182257e-03 1.09153312429e-02 1.67257046016e-02 2.24956267167e-02 - 3.00019977593e-02 3.49506556165e-02 3.85875039457e-02 - 3.97809938382e-02 3.70994631101e-02 3.00019977593e-02 2.47929678075e-02 2.09853466063e-02 1.68972398574e-02 - 1.56734539515e-02 1.56734539515e-02 1.68972398574e-02 2.09853466063e-02 2.47929678075e-02 3.00019977593e-02 - 3.70994631101e-02 3.97809938382e-02 4.24295300017e-02 - 3.97809938382e-02 3.49506556165e-02 3.30817407316e-02 3.00331874093e-02 2.94734728104e-02 3.02094126272e-02 - 2.97058195093e-02 3.02094126272e-02 2.94734728104e-02 3.00331874093e-02 3.30817407316e-02 3.49506556165e-02 - 3.97809938382e-02 4.45611403771e-02 4.45611403771e-02 - 3.85875039457e-02 3.60022233749e-02 3.54179538479e-02 3.88199146511e-02 4.49581105718e-02 5.02965815685e-02 - 5.02965815685e-02 4.49581105718e-02 3.88199146511e-02 3.54179538479e-02 3.60022233749e-02 3.85875039457e-02 - 4.24295300017e-02 4.45611403771e-02 4.24295300017e-02 - 3.18085146238e-02 4.02222959331e-02 5.01938086050e-02 6.40797263891e-02 7.23281111668e-02 7.23281111668e-02 - 6.40797263891e-02 5.01938086050e-02 4.02222959331e-02 3.18085146238e-02 2.77237360128e-02 2.42768838976e-02 - 2.38593064853e-02 2.42768838976e-02 2.77237360128e-02 - 4.02222959331e-02 5.27225154807e-02 7.22755322173e-02 8.90053073193e-02 9.62989068912e-02 8.90053073193e-02 - 7.22755322173e-02 5.27225154807e-02 4.02222959331e-02 3.08604739677e-02 2.43879073207e-02 2.13888507874e-02 - 2.13888507874e-02 2.43879073207e-02 3.08604739677e-02 - 5.01938086050e-02 7.22755322173e-02 9.32262743675e-02 9.58701888529e-02 9.58701888529e-02 9.32262743675e-02 - 7.22755322173e-02 5.01938086050e-02 3.49314010620e-02 2.55149658819e-02 1.86401066199e-02 1.63183576357e-02 - 1.86401066199e-02 2.55149658819e-02 3.49314010620e-02 - 6.40797263891e-02 8.90053073193e-02 9.58701888529e-02 6.76894902970e-02 9.58701888529e-02 8.90053073193e-02 - 6.40797263891e-02 4.06623304521e-02 2.56772132883e-02 1.73142648442e-02 1.28060436295e-02 1.28060436295e-02 - 1.73142648442e-02 2.56772132883e-02 4.06623304521e-02 - 7.23281111668e-02 9.62989068912e-02 9.58701888529e-02 9.58701888529e-02 9.62989068912e-02 7.23281111668e-02 - 4.78620662790e-02 2.78871820412e-02 1.64170481704e-02 1.00194370256e-02 8.33783116227e-03 1.00194370256e-02 - 1.64170481704e-02 2.78871820412e-02 4.78620662790e-02 - 7.23281111668e-02 8.90053073193e-02 9.32262743675e-02 8.90053073193e-02 7.23281111668e-02 5.02965815685e-02 - 2.97058195093e-02 1.56734539515e-02 8.96019182257e-03 5.26506660326e-03 5.26506660326e-03 8.96019182257e-03 - 1.56734539515e-02 2.97058195093e-02 5.02965815685e-02 - 6.40797263891e-02 7.22755322173e-02 7.22755322173e-02 6.40797263891e-02 4.78620662790e-02 2.97058195093e-02 - 1.53666013085e-02 7.66605713530e-03 3.60269726266e-03 2.68920014434e-03 3.60269726266e-03 7.66605713530e-03 - 1.53666013085e-02 2.97058195093e-02 4.78620662790e-02 - 5.01938086050e-02 5.27225154807e-02 5.01938086050e-02 4.06623304521e-02 2.78871820412e-02 1.56734539515e-02 - 7.66605713530e-03 2.63663327441e-03 1.11118867375e-03 1.11118867375e-03 2.63663327441e-03 7.66605713530e-03 - 1.56734539515e-02 2.78871820412e-02 4.06623304521e-02 - 4.02222959331e-02 4.02222959331e-02 3.49314010620e-02 2.56772132883e-02 1.64170481704e-02 8.96019182257e-03 - 3.60269726266e-03 1.11118867375e-03 5.28120831661e-04 1.11118867375e-03 3.60269726266e-03 8.96019182257e-03 - 1.64170481704e-02 2.56772132883e-02 3.49314010620e-02 - 3.18085146238e-02 3.08604739677e-02 2.55149658819e-02 1.73142648442e-02 1.00194370256e-02 5.26506660326e-03 - 2.68920014434e-03 1.11118867375e-03 1.11118867375e-03 2.68920014434e-03 5.26506660326e-03 1.00194370256e-02 - 1.73142648442e-02 2.55149658819e-02 3.08604739677e-02 - 2.77237360128e-02 2.43879073207e-02 1.86401066199e-02 1.28060436295e-02 8.33783116227e-03 5.26506660326e-03 - 3.60269726266e-03 2.63663327441e-03 3.60269726266e-03 5.26506660326e-03 8.33783116227e-03 1.28060436295e-02 - 1.86401066199e-02 2.43879073207e-02 2.77237360128e-02 - 2.42768838976e-02 2.13888507874e-02 1.63183576357e-02 1.28060436295e-02 1.00194370256e-02 8.96019182257e-03 - 7.66605713530e-03 7.66605713530e-03 8.96019182257e-03 1.00194370256e-02 1.28060436295e-02 1.63183576357e-02 - 2.13888507874e-02 2.42768838976e-02 2.61642583587e-02 - 2.38593064853e-02 2.13888507874e-02 1.86401066199e-02 1.73142648442e-02 1.64170481704e-02 1.56734539515e-02 - 1.53666013085e-02 1.56734539515e-02 1.64170481704e-02 1.73142648442e-02 1.86401066199e-02 2.13888507874e-02 - 2.38593064853e-02 2.49875482035e-02 2.49875482035e-02 - 2.42768838976e-02 2.43879073207e-02 2.55149658819e-02 2.56772132883e-02 2.78871820412e-02 2.97058195093e-02 - 2.97058195093e-02 2.78871820412e-02 2.56772132883e-02 2.55149658819e-02 2.43879073207e-02 2.42768838976e-02 - 2.49875482035e-02 2.65236093943e-02 2.49875482035e-02 - 2.77237360128e-02 3.08604739677e-02 3.49314010620e-02 4.06623304521e-02 4.78620662790e-02 5.02965815685e-02 - 4.78620662790e-02 4.06623304521e-02 3.49314010620e-02 3.08604739677e-02 2.77237360128e-02 2.61642583587e-02 - 2.49875482035e-02 2.49875482035e-02 2.61642583587e-02 - 2.99172055199e-02 4.34116802001e-02 5.01938086050e-02 5.15953878901e-02 5.77610358000e-02 5.15953878901e-02 - 5.01938086050e-02 4.34116802001e-02 2.99172055199e-02 2.21844351566e-02 1.56599181080e-02 1.25503014842e-02 - 1.25503014842e-02 1.56599181080e-02 2.21844351566e-02 - 4.34116802001e-02 5.27225154807e-02 5.41698533623e-02 5.21992902722e-02 5.21992902722e-02 5.41698533623e-02 - 5.27225154807e-02 4.34116802001e-02 2.79666745937e-02 1.78991060313e-02 1.23746382387e-02 9.66467351917e-03 - 1.23746382387e-02 1.78991060313e-02 2.79666745937e-02 - 5.01938086050e-02 5.41698533623e-02 4.60292144819e-02 3.36135559891e-02 4.60292144819e-02 5.41698533623e-02 - 5.01938086050e-02 3.55073021064e-02 2.15005775831e-02 1.24898667953e-02 8.27412039851e-03 8.27412039851e-03 - 1.24898667953e-02 2.15005775831e-02 3.55073021064e-02 - 5.15953878901e-02 5.21992902722e-02 3.36135559891e-02 3.36135559891e-02 5.21992902722e-02 5.15953878901e-02 - 4.06623304521e-02 2.60569281693e-02 1.40094656991e-02 7.35387417276e-03 5.53145518161e-03 7.35387417276e-03 - 1.40094656991e-02 2.60569281693e-02 4.06623304521e-02 - 5.77610358000e-02 5.21992902722e-02 4.60292144819e-02 5.21992902722e-02 5.77610358000e-02 4.49581105718e-02 - 2.78871820412e-02 1.43763201712e-02 7.08929107284e-03 3.65259578883e-03 3.65259578883e-03 7.08929107284e-03 - 1.43763201712e-02 2.78871820412e-02 4.49581105718e-02 - 5.15953878901e-02 5.41698533623e-02 5.41698533623e-02 5.15953878901e-02 4.49581105718e-02 3.02094126272e-02 - 1.56734539515e-02 7.32490142479e-03 3.29271151918e-03 2.09418534593e-03 3.29271151918e-03 7.32490142478e-03 - 1.56734539515e-02 3.02094126272e-02 4.49581105718e-02 - 5.01938086050e-02 5.27225154807e-02 5.01938086050e-02 4.06623304521e-02 2.78871820412e-02 1.56734539515e-02 - 7.66605713530e-03 2.63663327441e-03 1.11118867375e-03 1.11118867375e-03 2.63663327441e-03 7.66605713530e-03 - 1.56734539515e-02 2.78871820412e-02 4.06623304521e-02 - 4.34116802001e-02 4.34116802001e-02 3.55073021064e-02 2.60569281693e-02 1.43763201712e-02 7.32490142478e-03 - 2.63663327441e-03 9.44908409994e-04 3.22484228196e-04 9.44908409994e-04 2.63663327441e-03 7.32490142478e-03 - 1.43763201712e-02 2.60569281693e-02 3.55073021064e-02 - 2.99172055199e-02 2.79666745937e-02 2.15005775831e-02 1.40094656991e-02 7.08929107284e-03 3.29271151918e-03 - 1.11118867375e-03 3.22484228196e-04 3.22484228196e-04 1.11118867375e-03 3.29271151918e-03 7.08929107284e-03 - 1.40094656991e-02 2.15005775831e-02 2.79666745937e-02 - 2.21844351566e-02 1.78991060313e-02 1.24898667953e-02 7.35387417276e-03 3.65259578883e-03 2.09418534593e-03 - 1.11118867375e-03 9.44908409994e-04 1.11118867375e-03 2.09418534593e-03 3.65259578883e-03 7.35387417276e-03 - 1.24898667953e-02 1.78991060313e-02 2.21844351566e-02 - 1.56599181080e-02 1.23746382387e-02 8.27412039851e-03 5.53145518161e-03 3.65259578883e-03 3.29271151918e-03 - 2.63663327441e-03 2.63663327441e-03 3.29271151918e-03 3.65259578883e-03 5.53145518161e-03 8.27412039851e-03 - 1.23746382387e-02 1.56599181080e-02 1.79880069490e-02 - 1.25503014842e-02 9.66467351917e-03 8.27412039851e-03 7.35387417276e-03 7.08929107284e-03 7.32490142479e-03 - 7.66605713530e-03 7.32490142479e-03 7.08929107284e-03 7.35387417276e-03 8.27412039851e-03 9.66467351917e-03 - 1.25503014842e-02 1.49627569580e-02 1.49627569580e-02 - 1.25503014842e-02 1.23746382387e-02 1.24898667953e-02 1.40094656991e-02 1.43763201712e-02 1.56734539515e-02 - 1.56734539515e-02 1.43763201712e-02 1.40094656991e-02 1.24898667953e-02 1.23746382387e-02 1.25503014842e-02 - 1.36231130391e-02 1.31818719408e-02 1.36231130391e-02 - 1.56599181080e-02 1.78991060313e-02 2.15005775831e-02 2.60569281693e-02 2.78871820412e-02 3.02094126272e-02 - 2.78871820412e-02 2.60569281693e-02 2.15005775831e-02 1.78991060313e-02 1.56599181080e-02 1.49627569580e-02 - 1.31818719408e-02 1.31818719408e-02 1.49627569580e-02 - 2.21844351566e-02 2.79666745937e-02 3.55073021064e-02 4.06623304521e-02 4.49581105718e-02 4.49581105718e-02 - 4.06623304521e-02 3.55073021064e-02 2.79666745937e-02 2.21844351566e-02 1.79880069490e-02 1.49627569580e-02 - 1.36231130391e-02 1.49627569580e-02 1.79880069490e-02 - 2.99172055199e-02 4.02222959331e-02 4.30811551462e-02 3.92607806531e-02 3.92607806531e-02 4.30811551462e-02 - 4.02222959331e-02 2.99172055199e-02 1.95071574201e-02 1.13646063453e-02 6.70218401668e-03 4.59069441377e-03 - 6.70218401668e-03 1.13646063453e-02 1.95071574201e-02 - 4.02222959331e-02 4.32649438817e-02 3.18433510883e-02 2.47958446021e-02 3.18433510883e-02 4.32649438817e-02 - 4.02222959331e-02 2.79666745937e-02 1.52963446205e-02 7.92513025055e-03 3.86875558844e-03 3.86875558844e-03 - 7.92513025055e-03 1.52963446205e-02 2.79666745937e-02 - 4.30811551462e-02 3.18433510883e-02 1.22283197111e-02 1.22283197111e-02 3.18433510883e-02 4.30811551462e-02 - 3.49314010620e-02 2.15005775831e-02 9.79121310155e-03 4.02268913133e-03 2.15067339004e-03 4.02268913133e-03 - 9.79121310155e-03 2.15005775831e-02 3.49314010620e-02 - 3.92607806531e-02 2.47958446021e-02 1.22283197111e-02 2.47958446021e-02 3.92607806531e-02 3.88199146511e-02 - 2.56772132883e-02 1.40094656991e-02 5.18295256070e-03 1.64102393395e-03 1.64102393395e-03 5.18295256070e-03 - 1.40094656991e-02 2.56772132883e-02 3.88199146511e-02 - 3.92607806531e-02 3.18433510883e-02 3.18433510883e-02 3.92607806531e-02 4.31689270135e-02 2.94734728104e-02 - 1.64170481704e-02 7.08929107284e-03 2.06279931440e-03 7.49011933950e-04 2.06279931440e-03 7.08929107284e-03 - 1.64170481704e-02 2.94734728104e-02 4.31689270135e-02 - 4.30811551462e-02 4.32649438817e-02 4.30811551462e-02 3.88199146511e-02 2.94734728104e-02 1.68972398574e-02 - 8.96019182257e-03 3.29271151918e-03 1.38542142842e-03 1.38542142842e-03 3.29271151918e-03 8.96019182257e-03 - 1.68972398574e-02 2.94734728104e-02 3.88199146511e-02 - 4.02222959331e-02 4.02222959331e-02 3.49314010620e-02 2.56772132883e-02 1.64170481704e-02 8.96019182257e-03 - 3.60269726266e-03 1.11118867375e-03 5.28120831661e-04 1.11118867375e-03 3.60269726266e-03 8.96019182257e-03 - 1.64170481704e-02 2.56772132883e-02 3.49314010620e-02 - 2.99172055199e-02 2.79666745937e-02 2.15005775831e-02 1.40094656991e-02 7.08929107284e-03 3.29271151918e-03 - 1.11118867375e-03 3.22484228196e-04 3.22484228196e-04 1.11118867375e-03 3.29271151918e-03 7.08929107284e-03 - 1.40094656991e-02 2.15005775831e-02 2.79666745937e-02 - 1.95071574201e-02 1.52963446205e-02 9.79121310155e-03 5.18295256070e-03 2.06279931440e-03 1.38542142842e-03 - 5.28120831661e-04 3.22484228196e-04 5.28120831661e-04 1.38542142842e-03 2.06279931440e-03 5.18295256070e-03 - 9.79121310155e-03 1.52963446205e-02 1.95071574201e-02 - 1.13646063453e-02 7.92513025055e-03 4.02268913133e-03 1.64102393395e-03 7.49011933950e-04 1.38542142842e-03 - 1.11118867375e-03 1.11118867375e-03 1.38542142842e-03 7.49011933950e-04 1.64102393395e-03 4.02268913133e-03 - 7.92513025055e-03 1.13646063453e-02 1.40786159428e-02 - 6.70218401668e-03 3.86875558844e-03 2.15067339004e-03 1.64102393395e-03 2.06279931440e-03 3.29271151918e-03 - 3.60269726266e-03 3.29271151918e-03 2.06279931440e-03 1.64102393395e-03 2.15067339004e-03 3.86875558844e-03 - 6.70218401668e-03 8.64523106293e-03 8.64523106293e-03 - 4.59069441377e-03 3.86875558844e-03 4.02268913133e-03 5.18295256070e-03 7.08929107284e-03 8.96019182257e-03 - 8.96019182257e-03 7.08929107284e-03 5.18295256070e-03 4.02268913133e-03 3.86875558844e-03 4.59069441377e-03 - 6.75138246715e-03 6.84444382539e-03 6.75138246715e-03 - 6.70218401668e-03 7.92513025055e-03 9.79121310155e-03 1.40094656991e-02 1.64170481704e-02 1.68972398574e-02 - 1.64170481704e-02 1.40094656991e-02 9.79121310155e-03 7.92513025055e-03 6.70218401668e-03 6.75138246715e-03 - 5.80050554995e-03 5.80050554995e-03 6.75138246715e-03 - 1.13646063453e-02 1.52963446205e-02 2.15005775831e-02 2.56772132883e-02 2.94734728104e-02 2.94734728104e-02 - 2.56772132883e-02 2.15005775831e-02 1.52963446205e-02 1.13646063453e-02 8.64523106293e-03 6.84444382539e-03 - 5.80050554995e-03 6.84444382539e-03 8.64523106293e-03 - 1.95071574201e-02 2.79666745937e-02 3.49314010620e-02 3.88199146511e-02 4.31689270135e-02 3.88199146511e-02 - 3.49314010620e-02 2.79666745937e-02 1.95071574201e-02 1.40786159428e-02 8.64523106293e-03 6.75138246715e-03 - 6.75138246715e-03 8.64523106293e-03 1.40786159428e-02 - 3.18085146238e-02 3.78194924587e-02 3.16578904846e-02 2.77650059484e-02 3.16578904846e-02 3.78194924587e-02 - 3.18085146238e-02 2.21844351566e-02 1.13646063453e-02 5.11954914432e-03 1.60658688370e-03 1.60658688370e-03 - 5.11954914432e-03 1.13646063453e-02 2.21844351566e-02 - 3.78194924587e-02 2.80289195955e-02 1.45740503756e-02 1.45740503756e-02 2.80289195955e-02 3.78194924587e-02 - 3.08604739677e-02 1.78991060313e-02 7.92513025055e-03 2.15869962360e-03 6.20007891972e-04 2.15869962360e-03 - 7.92513025055e-03 1.78991060313e-02 3.08604739677e-02 - 3.16578904846e-02 1.45740503756e-02 5.88407505951e-04 1.45740503756e-02 3.16578904846e-02 3.54179538479e-02 - 2.55149658819e-02 1.24898667953e-02 4.02268913133e-03 5.43091896583e-04 5.43091896583e-04 4.02268913133e-03 - 1.24898667953e-02 2.55149658819e-02 3.54179538479e-02 - 2.77650059484e-02 1.45740503756e-02 1.45740503756e-02 2.77650059484e-02 3.70588268986e-02 3.00331874093e-02 - 1.73142648442e-02 7.35387417276e-03 1.64102393395e-03 1.47520974601e-04 1.64102393395e-03 7.35387417276e-03 - 1.73142648442e-02 3.00331874093e-02 3.70588268986e-02 - 3.16578904846e-02 2.80289195955e-02 3.16578904846e-02 3.70588268986e-02 3.18895470196e-02 2.09853466063e-02 - 1.00194370256e-02 3.65259578883e-03 7.49011933950e-04 7.49011933950e-04 3.65259578883e-03 1.00194370256e-02 - 2.09853466063e-02 3.18895470196e-02 3.70588268986e-02 - 3.78194924587e-02 3.78194924587e-02 3.54179538479e-02 3.00331874093e-02 2.09853466063e-02 1.09153312429e-02 - 5.26506660326e-03 2.09418534593e-03 1.38542142842e-03 2.09418534593e-03 5.26506660326e-03 1.09153312429e-02 - 2.09853466063e-02 3.00331874093e-02 3.54179538479e-02 - 3.18085146238e-02 3.08604739677e-02 2.55149658819e-02 1.73142648442e-02 1.00194370256e-02 5.26506660326e-03 - 2.68920014434e-03 1.11118867375e-03 1.11118867375e-03 2.68920014434e-03 5.26506660326e-03 1.00194370256e-02 - 1.73142648442e-02 2.55149658819e-02 3.08604739677e-02 - 2.21844351566e-02 1.78991060313e-02 1.24898667953e-02 7.35387417276e-03 3.65259578883e-03 2.09418534593e-03 - 1.11118867375e-03 9.44908409994e-04 1.11118867375e-03 2.09418534593e-03 3.65259578883e-03 7.35387417276e-03 - 1.24898667953e-02 1.78991060313e-02 2.21844351566e-02 - 1.13646063453e-02 7.92513025055e-03 4.02268913133e-03 1.64102393395e-03 7.49011933950e-04 1.38542142842e-03 - 1.11118867375e-03 1.11118867375e-03 1.38542142842e-03 7.49011933950e-04 1.64102393395e-03 4.02268913133e-03 - 7.92513025055e-03 1.13646063453e-02 1.40786159428e-02 - 5.11954914432e-03 2.15869962360e-03 5.43091896583e-04 1.47520974601e-04 7.49011933950e-04 2.09418534593e-03 - 2.68920014434e-03 2.09418534593e-03 7.49011933950e-04 1.47520974601e-04 5.43091896583e-04 2.15869962360e-03 - 5.11954914432e-03 7.01813743887e-03 7.01813743887e-03 - 1.60658688370e-03 6.20007891972e-04 5.43091896583e-04 1.64102393395e-03 3.65259578883e-03 5.26506660326e-03 - 5.26506660326e-03 3.65259578883e-03 1.64102393395e-03 5.43091896583e-04 6.20007891972e-04 1.60658688370e-03 - 3.53006767470e-03 4.09661395937e-03 3.53006767470e-03 - 1.60658688370e-03 2.15869962360e-03 4.02268913133e-03 7.35387417276e-03 1.00194370256e-02 1.09153312429e-02 - 1.00194370256e-02 7.35387417276e-03 4.02268913133e-03 2.15869962360e-03 1.60658688370e-03 2.37456788896e-03 - 2.19087193687e-03 2.19087193687e-03 2.37456788896e-03 - 5.11954914432e-03 7.92513025055e-03 1.24898667953e-02 1.73142648442e-02 2.09853466063e-02 2.09853466063e-02 - 1.73142648442e-02 1.24898667953e-02 7.92513025055e-03 5.11954914432e-03 3.53006767470e-03 2.19087193687e-03 - 2.26732755529e-03 2.19087193687e-03 3.53006767470e-03 - 1.13646063453e-02 1.78991060313e-02 2.55149658819e-02 3.00331874093e-02 3.18895470196e-02 3.00331874093e-02 - 2.55149658819e-02 1.78991060313e-02 1.13646063453e-02 7.01813743887e-03 4.09661395937e-03 2.19087193687e-03 - 2.19087193687e-03 4.09661395937e-03 7.01813743887e-03 - 2.21844351566e-02 3.08604739677e-02 3.54179538479e-02 3.70588268986e-02 3.70588268986e-02 3.54179538479e-02 - 3.08604739677e-02 2.21844351566e-02 1.40786159428e-02 7.01813743887e-03 3.53006767470e-03 2.37456788896e-03 - 3.53006767470e-03 7.01813743887e-03 1.40786159428e-02 - 3.72920735613e-02 3.42073290623e-02 2.56381222091e-02 2.56381222091e-02 3.42073290623e-02 3.72920735613e-02 - 2.77237360128e-02 1.56599181080e-02 6.70218401668e-03 1.60658688370e-03 2.99179150647e-04 1.60658688370e-03 - 6.70218401668e-03 1.56599181080e-02 2.77237360128e-02 - 3.42073290623e-02 1.76415461442e-02 7.66046977902e-03 1.76415461442e-02 3.42073290623e-02 3.60022233749e-02 - 2.43879073207e-02 1.23746382387e-02 3.86875558844e-03 6.20007891972e-04 6.20007891972e-04 3.86875558844e-03 - 1.23746382387e-02 2.43879073207e-02 3.60022233749e-02 - 2.56381222091e-02 7.66046977902e-03 7.66046977902e-03 2.56381222091e-02 3.72212996136e-02 3.30817407316e-02 - 1.86401066199e-02 8.27412039851e-03 2.15067339004e-03 5.43091896583e-04 2.15067339004e-03 8.27412039851e-03 - 1.86401066199e-02 3.30817407316e-02 3.72212996136e-02 - 2.56381222091e-02 1.76415461442e-02 2.56381222091e-02 3.74646524133e-02 3.66436362392e-02 2.47929678075e-02 - 1.28060436295e-02 5.53145518161e-03 1.64102393395e-03 1.64102393395e-03 5.53145518161e-03 1.28060436295e-02 - 2.47929678075e-02 3.66436362392e-02 3.74646524133e-02 - 3.42073290623e-02 3.42073290623e-02 3.72212996136e-02 3.66436362392e-02 2.71142914004e-02 1.67257046016e-02 - 8.33783116227e-03 3.65259578883e-03 2.06279931440e-03 3.65259578883e-03 8.33783116227e-03 1.67257046016e-02 - 2.71142914004e-02 3.66436362392e-02 3.72212996136e-02 - 3.72920735613e-02 3.60022233749e-02 3.30817407316e-02 2.47929678075e-02 1.67257046016e-02 9.07395147277e-03 - 5.26506660326e-03 3.29271151918e-03 3.29271151918e-03 5.26506660326e-03 9.07395147277e-03 1.67257046016e-02 - 2.47929678075e-02 3.30817407316e-02 3.60022233749e-02 - 2.77237360128e-02 2.43879073207e-02 1.86401066199e-02 1.28060436295e-02 8.33783116227e-03 5.26506660326e-03 - 3.60269726266e-03 2.63663327441e-03 3.60269726266e-03 5.26506660326e-03 8.33783116227e-03 1.28060436295e-02 - 1.86401066199e-02 2.43879073207e-02 2.77237360128e-02 - 1.56599181080e-02 1.23746382387e-02 8.27412039851e-03 5.53145518161e-03 3.65259578883e-03 3.29271151918e-03 - 2.63663327441e-03 2.63663327441e-03 3.29271151918e-03 3.65259578883e-03 5.53145518161e-03 8.27412039851e-03 - 1.23746382387e-02 1.56599181080e-02 1.79880069490e-02 - 6.70218401668e-03 3.86875558844e-03 2.15067339004e-03 1.64102393395e-03 2.06279931440e-03 3.29271151918e-03 - 3.60269726266e-03 3.29271151918e-03 2.06279931440e-03 1.64102393395e-03 2.15067339004e-03 3.86875558844e-03 - 6.70218401668e-03 8.64523106293e-03 8.64523106293e-03 - 1.60658688370e-03 6.20007891972e-04 5.43091896583e-04 1.64102393395e-03 3.65259578883e-03 5.26506660326e-03 - 5.26506660326e-03 3.65259578883e-03 1.64102393395e-03 5.43091896583e-04 6.20007891972e-04 1.60658688370e-03 - 3.53006767470e-03 4.09661395937e-03 3.53006767470e-03 - 2.99179150647e-04 6.20007891972e-04 2.15067339004e-03 5.53145518161e-03 8.33783116227e-03 9.07395147277e-03 - 8.33783116227e-03 5.53145518161e-03 2.15067339004e-03 6.20007891972e-04 2.99179150647e-04 1.09356208174e-03 - 1.38503345990e-03 1.38503345990e-03 1.09356208174e-03 - 1.60658688370e-03 3.86875558844e-03 8.27412039851e-03 1.28060436295e-02 1.67257046016e-02 1.67257046016e-02 - 1.28060436295e-02 8.27412039851e-03 3.86875558844e-03 1.60658688370e-03 1.09356208174e-03 7.14663240551e-04 - 7.65589594291e-04 7.14663240551e-04 1.09356208174e-03 - 6.70218401668e-03 1.23746382387e-02 1.86401066199e-02 2.47929678075e-02 2.71142914004e-02 2.47929678075e-02 - 1.86401066199e-02 1.23746382387e-02 6.70218401668e-03 3.53006767470e-03 1.38503345990e-03 7.65589594291e-04 - 7.65589594291e-04 1.38503345990e-03 3.53006767470e-03 - 1.56599181080e-02 2.43879073207e-02 3.30817407316e-02 3.66436362392e-02 3.66436362392e-02 3.30817407316e-02 - 2.43879073207e-02 1.56599181080e-02 8.64523106293e-03 4.09661395937e-03 1.38503345990e-03 7.14663240551e-04 - 1.38503345990e-03 4.09661395937e-03 8.64523106293e-03 - 2.77237360128e-02 3.60022233749e-02 3.72212996136e-02 3.74646524133e-02 3.72212996136e-02 3.60022233749e-02 - 2.77237360128e-02 1.79880069490e-02 8.64523106293e-03 3.53006767470e-03 1.09356208174e-03 1.09356208174e-03 - 3.53006767470e-03 8.64523106293e-03 1.79880069490e-02 - 4.77193978469e-02 3.50294268557e-02 2.76155885440e-02 3.50294268557e-02 4.77193978469e-02 3.85875039457e-02 - 2.42768838976e-02 1.25503014842e-02 4.59069441377e-03 1.60658688370e-03 1.60658688370e-03 4.59069441377e-03 - 1.25503014842e-02 2.42768838976e-02 3.85875039457e-02 - 3.50294268557e-02 1.55091198600e-02 1.55091198600e-02 3.50294268557e-02 4.46676835001e-02 3.49506556165e-02 - 2.13888507874e-02 9.66467351917e-03 3.86875558844e-03 2.15869962360e-03 3.86875558844e-03 9.66467351917e-03 - 2.13888507874e-02 3.49506556165e-02 4.46676835001e-02 - 2.76155885440e-02 1.55091198600e-02 2.76155885440e-02 4.40351969320e-02 4.27231306029e-02 3.00019977593e-02 - 1.63183576357e-02 8.27412039851e-03 4.02268913133e-03 4.02268913133e-03 8.27412039851e-03 1.63183576357e-02 - 3.00019977593e-02 4.27231306029e-02 4.40351969320e-02 - 3.50294268557e-02 3.50294268557e-02 4.40351969320e-02 4.48502710858e-02 3.62873182074e-02 2.24956267167e-02 - 1.28060436295e-02 7.35387417276e-03 5.18295256070e-03 7.35387417276e-03 1.28060436295e-02 2.24956267167e-02 - 3.62873182074e-02 4.48502710858e-02 4.40351969320e-02 - 4.77193978469e-02 4.46676835001e-02 4.27231306029e-02 3.62873182074e-02 2.45905634624e-02 1.67257046016e-02 - 1.00194370256e-02 7.08929107284e-03 7.08929107284e-03 1.00194370256e-02 1.67257046016e-02 2.45905634624e-02 - 3.62873182074e-02 4.27231306029e-02 4.46676835001e-02 - 3.85875039457e-02 3.49506556165e-02 3.00019977593e-02 2.24956267167e-02 1.67257046016e-02 1.09153312429e-02 - 8.96019182257e-03 7.32490142479e-03 8.96019182257e-03 1.09153312429e-02 1.67257046016e-02 2.24956267167e-02 - 3.00019977593e-02 3.49506556165e-02 3.85875039457e-02 - 2.42768838976e-02 2.13888507874e-02 1.63183576357e-02 1.28060436295e-02 1.00194370256e-02 8.96019182257e-03 - 7.66605713530e-03 7.66605713530e-03 8.96019182257e-03 1.00194370256e-02 1.28060436295e-02 1.63183576357e-02 - 2.13888507874e-02 2.42768838976e-02 2.61642583587e-02 - 1.25503014842e-02 9.66467351917e-03 8.27412039851e-03 7.35387417276e-03 7.08929107284e-03 7.32490142479e-03 - 7.66605713530e-03 7.32490142478e-03 7.08929107284e-03 7.35387417276e-03 8.27412039851e-03 9.66467351917e-03 - 1.25503014842e-02 1.49627569580e-02 1.49627569580e-02 - 4.59069441377e-03 3.86875558844e-03 4.02268913133e-03 5.18295256070e-03 7.08929107284e-03 8.96019182257e-03 - 8.96019182257e-03 7.08929107284e-03 5.18295256070e-03 4.02268913133e-03 3.86875558844e-03 4.59069441377e-03 - 6.75138246715e-03 6.84444382539e-03 6.75138246715e-03 - 1.60658688370e-03 2.15869962360e-03 4.02268913133e-03 7.35387417276e-03 1.00194370256e-02 1.09153312429e-02 - 1.00194370256e-02 7.35387417276e-03 4.02268913133e-03 2.15869962360e-03 1.60658688370e-03 2.37456788896e-03 - 2.19087193687e-03 2.19087193687e-03 2.37456788896e-03 - 1.60658688370e-03 3.86875558844e-03 8.27412039851e-03 1.28060436295e-02 1.67257046016e-02 1.67257046016e-02 - 1.28060436295e-02 8.27412039851e-03 3.86875558844e-03 1.60658688370e-03 1.09356208174e-03 7.14663240551e-04 - 7.65589594291e-04 7.14663240551e-04 1.09356208174e-03 - 4.59069441377e-03 9.66467351917e-03 1.63183576357e-02 2.24956267167e-02 2.45905634624e-02 2.24956267167e-02 - 1.63183576357e-02 9.66467351917e-03 4.59069441377e-03 2.37456788896e-03 7.14663240551e-04 2.93067202991e-04 - 2.93067202991e-04 7.14663240551e-04 2.37456788896e-03 - 1.25503014842e-02 2.13888507874e-02 3.00019977593e-02 3.62873182074e-02 3.62873182074e-02 3.00019977593e-02 - 2.13888507874e-02 1.25503014842e-02 6.75138246715e-03 2.19087193687e-03 7.65589594291e-04 2.93067202991e-04 - 7.65589594291e-04 2.19087193687e-03 6.75138246715e-03 - 2.42768838976e-02 3.49506556165e-02 4.27231306029e-02 4.48502710858e-02 4.27231306029e-02 3.49506556165e-02 - 2.42768838976e-02 1.49627569580e-02 6.84444382539e-03 2.19087193687e-03 7.14663240551e-04 7.14663240551e-04 - 2.19087193687e-03 6.84444382539e-03 1.49627569580e-02 - 3.85875039457e-02 4.46676835001e-02 4.40351969320e-02 4.40351969320e-02 4.46676835001e-02 3.85875039457e-02 - 2.61642583587e-02 1.49627569580e-02 6.75138246715e-03 2.37456788896e-03 1.09356208174e-03 2.37456788896e-03 - 6.75138246715e-03 1.49627569580e-02 2.61642583587e-02 - 6.52691932418e-02 5.03836760403e-02 5.03836760403e-02 6.52691932418e-02 5.61335799375e-02 3.97809938382e-02 - 2.38593064853e-02 1.25503014842e-02 6.70218401668e-03 5.11954914432e-03 6.70218401668e-03 1.25503014842e-02 - 2.38593064853e-02 3.97809938382e-02 5.61335799375e-02 - 5.03836760403e-02 3.75098528213e-02 5.03836760403e-02 5.92235143217e-02 5.23936115453e-02 3.70994631101e-02 - 2.13888507874e-02 1.23746382387e-02 7.92513025055e-03 7.92513025055e-03 1.23746382387e-02 2.13888507874e-02 - 3.70994631101e-02 5.23936115453e-02 5.92235143217e-02 - 5.03836760403e-02 5.03836760403e-02 6.09424067177e-02 5.84769754663e-02 4.57138189196e-02 3.00019977593e-02 - 1.86401066199e-02 1.24898667953e-02 9.79121310155e-03 1.24898667953e-02 1.86401066199e-02 3.00019977593e-02 - 4.57138189196e-02 5.84769754663e-02 6.09424067177e-02 - 6.52691932418e-02 5.92235143217e-02 5.84769754663e-02 5.02634504938e-02 3.62873182074e-02 2.47929678075e-02 - 1.73142648442e-02 1.40094656991e-02 1.40094656991e-02 1.73142648442e-02 2.47929678075e-02 3.62873182074e-02 - 5.02634504938e-02 5.84769754663e-02 5.92235143217e-02 - 5.61335799375e-02 5.23936115453e-02 4.57138189196e-02 3.62873182074e-02 2.71142914004e-02 2.09853466063e-02 - 1.64170481704e-02 1.43763201712e-02 1.64170481704e-02 2.09853466063e-02 2.71142914004e-02 3.62873182074e-02 - 4.57138189196e-02 5.23936115453e-02 5.61335799375e-02 - 3.97809938382e-02 3.70994631101e-02 3.00019977593e-02 2.47929678075e-02 2.09853466063e-02 1.68972398574e-02 - 1.56734539515e-02 1.56734539515e-02 1.68972398574e-02 2.09853466063e-02 2.47929678075e-02 3.00019977593e-02 - 3.70994631101e-02 3.97809938382e-02 4.24295300017e-02 - 2.38593064853e-02 2.13888507874e-02 1.86401066199e-02 1.73142648442e-02 1.64170481704e-02 1.56734539515e-02 - 1.53666013085e-02 1.56734539515e-02 1.64170481704e-02 1.73142648442e-02 1.86401066199e-02 2.13888507874e-02 - 2.38593064853e-02 2.49875482035e-02 2.49875482035e-02 - 1.25503014842e-02 1.23746382387e-02 1.24898667953e-02 1.40094656991e-02 1.43763201712e-02 1.56734539515e-02 - 1.56734539515e-02 1.43763201712e-02 1.40094656991e-02 1.24898667953e-02 1.23746382387e-02 1.25503014842e-02 - 1.36231130391e-02 1.31818719408e-02 1.36231130391e-02 - 6.70218401668e-03 7.92513025055e-03 9.79121310155e-03 1.40094656991e-02 1.64170481704e-02 1.68972398574e-02 - 1.64170481704e-02 1.40094656991e-02 9.79121310155e-03 7.92513025055e-03 6.70218401668e-03 6.75138246715e-03 - 5.80050554995e-03 5.80050554995e-03 6.75138246715e-03 - 5.11954914432e-03 7.92513025055e-03 1.24898667953e-02 1.73142648442e-02 2.09853466063e-02 2.09853466063e-02 - 1.73142648442e-02 1.24898667953e-02 7.92513025055e-03 5.11954914432e-03 3.53006767470e-03 2.19087193687e-03 - 2.26732755529e-03 2.19087193687e-03 3.53006767470e-03 - 6.70218401668e-03 1.23746382387e-02 1.86401066199e-02 2.47929678075e-02 2.71142914004e-02 2.47929678075e-02 - 1.86401066199e-02 1.23746382387e-02 6.70218401668e-03 3.53006767470e-03 1.38503345990e-03 7.65589594291e-04 - 7.65589594291e-04 1.38503345990e-03 3.53006767470e-03 - 1.25503014842e-02 2.13888507874e-02 3.00019977593e-02 3.62873182074e-02 3.62873182074e-02 3.00019977593e-02 - 2.13888507874e-02 1.25503014842e-02 6.75138246715e-03 2.19087193687e-03 7.65589594291e-04 2.93067202991e-04 - 7.65589594291e-04 2.19087193687e-03 6.75138246715e-03 - 2.38593064853e-02 3.70994631101e-02 4.57138189196e-02 5.02634504938e-02 4.57138189196e-02 3.70994631101e-02 - 2.38593064853e-02 1.36231130391e-02 5.80050554995e-03 2.26732755529e-03 7.65589594291e-04 7.65589594291e-04 - 2.26732755529e-03 5.80050554995e-03 1.36231130391e-02 - 3.97809938382e-02 5.23936115453e-02 5.84769754663e-02 5.84769754663e-02 5.23936115453e-02 3.97809938382e-02 - 2.49875482035e-02 1.31818719408e-02 5.80050554995e-03 2.19087193687e-03 1.38503345990e-03 2.19087193687e-03 - 5.80050554995e-03 1.31818719408e-02 2.49875482035e-02 - 5.61335799375e-02 5.92235143217e-02 6.09424067177e-02 5.92235143217e-02 5.61335799375e-02 4.24295300017e-02 - 2.49875482035e-02 1.36231130391e-02 6.75138246715e-03 3.53006767470e-03 3.53006767470e-03 6.75138246715e-03 - 1.36231130391e-02 2.49875482035e-02 4.24295300017e-02 - 1.16467735388e-01 1.02568469446e-01 1.16467735388e-01 9.95387143197e-02 6.46788103129e-02 3.97809938382e-02 - 2.42768838976e-02 1.56599181080e-02 1.13646063453e-02 1.13646063453e-02 1.56599181080e-02 2.42768838976e-02 - 3.97809938382e-02 6.46788103129e-02 9.95387143197e-02 - 1.02568469446e-01 1.02568469446e-01 1.13539754126e-01 8.15533129102e-02 5.23936115453e-02 3.49506556165e-02 - 2.43879073207e-02 1.78991060313e-02 1.52963446205e-02 1.78991060313e-02 2.43879073207e-02 3.49506556165e-02 - 5.23936115453e-02 8.15533129102e-02 1.13539754126e-01 - 1.16467735388e-01 1.13539754126e-01 8.53804463649e-02 5.84769754663e-02 4.27231306029e-02 3.30817407316e-02 - 2.55149658819e-02 2.15005775831e-02 2.15005775831e-02 2.55149658819e-02 3.30817407316e-02 4.27231306029e-02 - 5.84769754663e-02 8.53804463649e-02 1.13539754126e-01 - 9.95387143197e-02 8.15533129102e-02 5.84769754663e-02 4.48502710858e-02 3.66436362392e-02 3.00331874093e-02 - 2.56772132883e-02 2.60569281693e-02 2.56772132883e-02 3.00331874093e-02 3.66436362392e-02 4.48502710858e-02 - 5.84769754663e-02 8.15533129102e-02 9.95387143197e-02 - 6.46788103129e-02 5.23936115453e-02 4.27231306029e-02 3.66436362392e-02 3.18895470196e-02 2.94734728104e-02 - 2.78871820412e-02 2.78871820412e-02 2.94734728104e-02 3.18895470196e-02 3.66436362392e-02 4.27231306029e-02 - 5.23936115453e-02 6.46788103129e-02 7.10707876951e-02 - 3.97809938382e-02 3.49506556165e-02 3.30817407316e-02 3.00331874093e-02 2.94734728104e-02 3.02094126272e-02 - 2.97058195093e-02 3.02094126272e-02 2.94734728104e-02 3.00331874093e-02 3.30817407316e-02 3.49506556165e-02 - 3.97809938382e-02 4.45611403771e-02 4.45611403771e-02 - 2.42768838976e-02 2.43879073207e-02 2.55149658819e-02 2.56772132883e-02 2.78871820412e-02 2.97058195093e-02 - 2.97058195093e-02 2.78871820412e-02 2.56772132883e-02 2.55149658819e-02 2.43879073207e-02 2.42768838976e-02 - 2.49875482035e-02 2.65236093943e-02 2.49875482035e-02 - 1.56599181080e-02 1.78991060313e-02 2.15005775831e-02 2.60569281693e-02 2.78871820412e-02 3.02094126272e-02 - 2.78871820412e-02 2.60569281693e-02 2.15005775831e-02 1.78991060313e-02 1.56599181080e-02 1.49627569580e-02 - 1.31818719408e-02 1.31818719408e-02 1.49627569580e-02 - 1.13646063453e-02 1.52963446205e-02 2.15005775831e-02 2.56772132883e-02 2.94734728104e-02 2.94734728104e-02 - 2.56772132883e-02 2.15005775831e-02 1.52963446205e-02 1.13646063453e-02 8.64523106293e-03 6.84444382539e-03 - 5.80050554995e-03 6.84444382539e-03 8.64523106293e-03 - 1.13646063453e-02 1.78991060313e-02 2.55149658819e-02 3.00331874093e-02 3.18895470196e-02 3.00331874093e-02 - 2.55149658819e-02 1.78991060313e-02 1.13646063453e-02 7.01813743887e-03 4.09661395937e-03 2.19087193687e-03 - 2.19087193687e-03 4.09661395937e-03 7.01813743887e-03 - 1.56599181080e-02 2.43879073207e-02 3.30817407316e-02 3.66436362392e-02 3.66436362392e-02 3.30817407316e-02 - 2.43879073207e-02 1.56599181080e-02 8.64523106293e-03 4.09661395937e-03 1.38503345990e-03 7.14663240551e-04 - 1.38503345990e-03 4.09661395937e-03 8.64523106293e-03 - 2.42768838976e-02 3.49506556165e-02 4.27231306029e-02 4.48502710858e-02 4.27231306029e-02 3.49506556165e-02 - 2.42768838976e-02 1.49627569580e-02 6.84444382539e-03 2.19087193687e-03 7.14663240551e-04 7.14663240551e-04 - 2.19087193687e-03 6.84444382539e-03 1.49627569580e-02 - 3.97809938382e-02 5.23936115453e-02 5.84769754663e-02 5.84769754663e-02 5.23936115453e-02 3.97809938382e-02 - 2.49875482035e-02 1.31818719408e-02 5.80050554995e-03 2.19087193687e-03 1.38503345990e-03 2.19087193687e-03 - 5.80050554995e-03 1.31818719408e-02 2.49875482035e-02 - 6.46788103129e-02 8.15533129102e-02 8.53804463649e-02 8.15533129102e-02 6.46788103129e-02 4.45611403771e-02 - 2.65236093943e-02 1.31818719408e-02 6.84444382539e-03 4.09661395937e-03 4.09661395937e-03 6.84444382539e-03 - 1.31818719408e-02 2.65236093943e-02 4.45611403771e-02 - 9.95387143197e-02 1.13539754126e-01 1.13539754126e-01 9.95387143197e-02 7.10707876951e-02 4.45611403771e-02 - 2.49875482035e-02 1.49627569580e-02 8.64523106293e-03 7.01813743887e-03 8.64523106293e-03 1.49627569580e-02 - 2.49875482035e-02 4.45611403771e-02 7.10707876951e-02 - 1.82422828268e-01 1.82422828268e-01 1.75978291339e-01 9.95387143197e-02 5.61335799375e-02 3.85875039457e-02 - 2.77237360128e-02 2.21844351566e-02 1.95071574201e-02 2.21844351566e-02 2.77237360128e-02 3.85875039457e-02 - 5.61335799375e-02 9.95387143197e-02 1.75978291339e-01 - 1.82422828268e-01 1.83280188132e-01 1.13539754126e-01 5.92235143217e-02 4.46676835001e-02 3.60022233749e-02 - 3.08604739677e-02 2.79666745937e-02 2.79666745937e-02 3.08604739677e-02 3.60022233749e-02 4.46676835001e-02 - 5.92235143217e-02 1.13539754126e-01 1.83280188132e-01 - 1.75978291339e-01 1.13539754126e-01 6.09424067177e-02 4.40351969320e-02 3.72212996136e-02 3.54179538479e-02 - 3.49314010620e-02 3.55073021064e-02 3.49314010620e-02 3.54179538479e-02 3.72212996136e-02 4.40351969320e-02 - 6.09424067177e-02 1.13539754126e-01 1.75978291339e-01 - 9.95387143197e-02 5.92235143217e-02 4.40351969320e-02 3.74646524133e-02 3.70588268986e-02 3.88199146511e-02 - 4.06623304521e-02 4.06623304521e-02 3.88199146511e-02 3.70588268986e-02 3.74646524133e-02 4.40351969320e-02 - 5.92235143217e-02 9.95387143197e-02 1.21879341630e-01 - 5.61335799375e-02 4.46676835001e-02 3.72212996136e-02 3.70588268986e-02 4.31689270135e-02 4.49581105718e-02 - 4.78620662790e-02 4.49581105718e-02 4.31689270135e-02 3.70588268986e-02 3.72212996136e-02 4.46676835001e-02 - 5.61335799375e-02 7.10707876951e-02 7.10707876951e-02 - 3.85875039457e-02 3.60022233749e-02 3.54179538479e-02 3.88199146511e-02 4.49581105718e-02 5.02965815685e-02 - 5.02965815685e-02 4.49581105718e-02 3.88199146511e-02 3.54179538479e-02 3.60022233749e-02 3.85875039457e-02 - 4.24295300017e-02 4.45611403771e-02 4.24295300017e-02 - 2.77237360128e-02 3.08604739677e-02 3.49314010620e-02 4.06623304521e-02 4.78620662790e-02 5.02965815685e-02 - 4.78620662790e-02 4.06623304521e-02 3.49314010620e-02 3.08604739677e-02 2.77237360128e-02 2.61642583587e-02 - 2.49875482035e-02 2.49875482035e-02 2.61642583587e-02 - 2.21844351566e-02 2.79666745937e-02 3.55073021064e-02 4.06623304521e-02 4.49581105718e-02 4.49581105718e-02 - 4.06623304521e-02 3.55073021064e-02 2.79666745937e-02 2.21844351566e-02 1.79880069490e-02 1.49627569580e-02 - 1.36231130391e-02 1.49627569580e-02 1.79880069490e-02 - 1.95071574201e-02 2.79666745937e-02 3.49314010620e-02 3.88199146511e-02 4.31689270135e-02 3.88199146511e-02 - 3.49314010620e-02 2.79666745937e-02 1.95071574201e-02 1.40786159428e-02 8.64523106293e-03 6.75138246715e-03 - 6.75138246715e-03 8.64523106293e-03 1.40786159428e-02 - 2.21844351566e-02 3.08604739677e-02 3.54179538479e-02 3.70588268986e-02 3.70588268986e-02 3.54179538479e-02 - 3.08604739677e-02 2.21844351566e-02 1.40786159428e-02 7.01813743887e-03 3.53006767470e-03 2.37456788896e-03 - 3.53006767470e-03 7.01813743887e-03 1.40786159428e-02 - 2.77237360128e-02 3.60022233749e-02 3.72212996136e-02 3.74646524133e-02 3.72212996136e-02 3.60022233749e-02 - 2.77237360128e-02 1.79880069490e-02 8.64523106293e-03 3.53006767470e-03 1.09356208174e-03 1.09356208174e-03 - 3.53006767470e-03 8.64523106293e-03 1.79880069490e-02 - 3.85875039457e-02 4.46676835001e-02 4.40351969320e-02 4.40351969320e-02 4.46676835001e-02 3.85875039457e-02 - 2.61642583587e-02 1.49627569580e-02 6.75138246715e-03 2.37456788896e-03 1.09356208174e-03 2.37456788896e-03 - 6.75138246715e-03 1.49627569580e-02 2.61642583587e-02 - 5.61335799375e-02 5.92235143217e-02 6.09424067177e-02 5.92235143217e-02 5.61335799375e-02 4.24295300017e-02 - 2.49875482035e-02 1.36231130391e-02 6.75138246715e-03 3.53006767470e-03 3.53006767470e-03 6.75138246715e-03 - 1.36231130391e-02 2.49875482035e-02 4.24295300017e-02 - 9.95387143197e-02 1.13539754126e-01 1.13539754126e-01 9.95387143197e-02 7.10707876951e-02 4.45611403771e-02 - 2.49875482035e-02 1.49627569580e-02 8.64523106293e-03 7.01813743887e-03 8.64523106293e-03 1.49627569580e-02 - 2.49875482035e-02 4.45611403771e-02 7.10707876951e-02 - 1.75978291339e-01 1.83280188132e-01 1.75978291339e-01 1.21879341630e-01 7.10707876951e-02 4.24295300017e-02 - 2.61642583587e-02 1.79880069490e-02 1.40786159428e-02 1.40786159428e-02 1.79880069490e-02 2.61642583587e-02 - 4.24295300017e-02 7.10707876951e-02 1.21879341630e-01 diff --git a/tests/03_NAO_multik/24_NO_KP_RE/INPUT b/tests/03_NAO_multik/24_NO_KP_RE/INPUT deleted file mode 100644 index 739576add1..0000000000 --- a/tests/03_NAO_multik/24_NO_KP_RE/INPUT +++ /dev/null @@ -1,25 +0,0 @@ -INPUT_PARAMETERS -#Parameters (General) -suffix autotest -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB - -nbands 8 -calculation relax -#Parameters (Accuracy) -ecutwfc 10 -scf_nmax 20 - -basis_type lcao -relax_nmax 2 - -cal_stress 1 -stress_thr 1e-6 -cal_force 1 -force_thr_ev 1.0e-3 - -ks_solver scalapack_gvx -mixing_type broyden -mixing_beta 0.7 - -relax_new 0 diff --git a/tests/03_NAO_multik/25_NO_KP_CR/INPUT b/tests/03_NAO_multik/25_NO_KP_CR/INPUT deleted file mode 100644 index b9205d78a6..0000000000 --- a/tests/03_NAO_multik/25_NO_KP_CR/INPUT +++ /dev/null @@ -1,25 +0,0 @@ -INPUT_PARAMETERS -#Parameters (General) -suffix autotest -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB - -nbands 8 -calculation cell-relax -#Parameters (Accuracy) -ecutwfc 10 -scf_nmax 20 - -basis_type lcao -relax_nmax 2 - -cal_stress 1 -stress_thr 1e-6 -cal_force 1 -force_thr_ev 1.0e-3 - -ks_solver scalapack_gvx -mixing_type broyden -mixing_beta 0.7 - -relax_new 0 diff --git a/tests/03_NAO_multik/26_NO_KP_RE_MB/INPUT b/tests/03_NAO_multik/26_NO_KP_RE_MB/INPUT deleted file mode 100644 index 8478291249..0000000000 --- a/tests/03_NAO_multik/26_NO_KP_RE_MB/INPUT +++ /dev/null @@ -1,33 +0,0 @@ -INPUT_PARAMETERS -#Parameters (1.General) -suffix autotest -calculation relax - -nbands 8 -symmetry 1 -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB - -#Parameters (2.Iteration) -ecutwfc 10 -scf_thr 1e-6 -scf_nmax 100 - -#Parameters (3.Relaxation) -relax_nmax 2 -cal_force 1 -force_thr_ev 0.01 -relax_method bfgs - -#Parameters (4.Basis) -basis_type lcao - -#Parameters (5.Smearing) -smearing_method gauss -smearing_sigma 0.002 - -#Parameters (6.Mixing) -mixing_type broyden -mixing_beta 0.5 - -relax_new 0 diff --git a/tests/03_NAO_multik/27_NO_KP_eadd/INPUT b/tests/03_NAO_multik/27_NO_KP_eadd/INPUT deleted file mode 100644 index 91846c4e12..0000000000 --- a/tests/03_NAO_multik/27_NO_KP_eadd/INPUT +++ /dev/null @@ -1,30 +0,0 @@ -INPUT_PARAMETERS -#Parameters (1.General) -suffix autotest -calculation scf - -nbands 8 -symmetry 1 -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB -nelec 9 - -#Parameters (2.Iteration) -ecutwfc 10 -scf_thr 1e-7 -scf_nmax 100 - - -#Parameters (3.Basis) -basis_type lcao - -#Parameters (4.Smearing) -smearing_method gauss -smearing_sigma 0.002 - -#Parameters (5.Mixing) -mixing_type pulay -mixing_beta 0.7 - -cal_force 1 -cal_stress 1 diff --git a/tests/03_NAO_multik/28_NO_KP_eminus/INPUT b/tests/03_NAO_multik/28_NO_KP_eminus/INPUT deleted file mode 100644 index 832fa1a363..0000000000 --- a/tests/03_NAO_multik/28_NO_KP_eminus/INPUT +++ /dev/null @@ -1,30 +0,0 @@ -INPUT_PARAMETERS -#Parameters (1.General) -suffix autotest -calculation scf - -nbands 8 -symmetry 1 -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB -nelec 10 - -#Parameters (2.Iteration) -ecutwfc 10 -scf_thr 1e-7 -scf_nmax 100 - - -#Parameters (3.Basis) -basis_type lcao - -#Parameters (4.Smearing) -smearing_method gauss -smearing_sigma 0.002 - -#Parameters (5.Mixing) -mixing_type pulay -mixing_beta 0.7 - -cal_force 1 -cal_stress 1 diff --git a/tests/03_NAO_multik/29_NO_KP_S2_eadd/INPUT b/tests/03_NAO_multik/29_NO_KP_S2_eadd/INPUT deleted file mode 100644 index 22dd3cb18c..0000000000 --- a/tests/03_NAO_multik/29_NO_KP_S2_eadd/INPUT +++ /dev/null @@ -1,33 +0,0 @@ -INPUT_PARAMETERS -#Parameters (1.General) -suffix autotest -calculation scf - -nbands 8 -symmetry 1 -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB -nspin 2 -nelec 9 - -#Parameters (2.Iteration) -ecutwfc 10 -scf_thr 1e-7 -scf_nmax 100 - - -#Parameters (3.Basis) -basis_type lcao - -#Parameters (4.Smearing) -smearing_method gauss -smearing_sigma 0.002 - -#Parameters (5.Mixing) -mixing_type pulay -mixing_beta 0.7 - -nupdown 1.0 - -cal_force 1 -cal_stress 1 diff --git a/tests/03_NAO_multik/30_NO_KP_S2_eminus/INPUT b/tests/03_NAO_multik/30_NO_KP_S2_eminus/INPUT deleted file mode 100644 index 15a07dcb8a..0000000000 --- a/tests/03_NAO_multik/30_NO_KP_S2_eminus/INPUT +++ /dev/null @@ -1,31 +0,0 @@ -INPUT_PARAMETERS -#Parameters (1.General) -suffix autotest -calculation scf - -nbands 8 -symmetry 1 -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB -nelec 10 -nspin 2 - -#Parameters (2.Iteration) -ecutwfc 10 -scf_thr 1e-7 -scf_nmax 100 - - -#Parameters (3.Basis) -basis_type lcao - -#Parameters (4.Smearing) -smearing_method gauss -smearing_sigma 0.002 - -#Parameters (5.Mixing) -mixing_type pulay -mixing_beta 0.7 - -cal_force 1 -cal_stress 1 diff --git a/tests/03_NAO_multik/31_NO_KP_nupdown0/INPUT b/tests/03_NAO_multik/31_NO_KP_nupdown0/INPUT deleted file mode 100644 index 56f29bd502..0000000000 --- a/tests/03_NAO_multik/31_NO_KP_nupdown0/INPUT +++ /dev/null @@ -1,31 +0,0 @@ -INPUT_PARAMETERS -#Parameters (1.General) -suffix autotest -calculation scf - -nbands 8 -symmetry 1 -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB -nspin 2 -nelec 9 - -#Parameters (2.Iteration) -ecutwfc 10 -scf_thr 1e-7 -scf_nmax 100 - - -#Parameters (3.Basis) -basis_type lcao - -#Parameters (4.Smearing) -smearing_method gauss -smearing_sigma 0.002 - -#Parameters (5.Mixing) -mixing_type pulay -mixing_beta 0.7 - -nupdown 0.0 -out_mul 1 diff --git a/tests/03_NAO_multik/31_NO_KP_nupdown0/mulliken.txt.ref b/tests/03_NAO_multik/31_NO_KP_nupdown0/mulliken.txt.ref deleted file mode 100644 index 89b3f5b3ab..0000000000 --- a/tests/03_NAO_multik/31_NO_KP_nupdown0/mulliken.txt.ref +++ /dev/null @@ -1,64 +0,0 @@ -STEP: 0 -CALCULATE THE MULLIkEN ANALYSIS FOR EACH ATOM - Total charge of spin 1: 4.5 - Total charge of spin 2: 4.5 - Total charge: 9 -Decomposed Mulliken populations -0 Zeta of Si Spin 1 Spin 2 Sum Diff -s 0 0.6711 0.6711 1.3422 0.0000 -s 1 0.0029 0.0029 0.0058 -0.0000 -SUM OVER M+Zeta 0.6740 0.6740 1.3480 0.0000 - -pz 0 0.3982 0.3982 0.7964 -0.0000 -px 0 0.3836 0.3836 0.7673 -0.0000 -py 0 0.3836 0.3836 0.7673 -0.0000 -SUM OVER M 1.1655 1.1655 2.3310 -0.0000 -pz 1 0.0542 0.0542 0.1084 -0.0000 -px 1 0.0519 0.0519 0.1037 0.0000 -py 1 0.0519 0.0519 0.1037 0.0000 -SUM OVER M 0.1579 0.1579 0.3158 0.0000 -SUM OVER M+Zeta 1.3234 1.3234 2.6468 -0.0000 - -dz^2 0 0.0051 0.0051 0.0102 0.0000 -dxz 0 0.0814 0.0814 0.1629 0.0000 -dyz 0 0.0814 0.0814 0.1629 0.0000 -dx^2-y^2 0 0.0079 0.0079 0.0157 -0.0000 -dxy 0 0.0779 0.0779 0.1557 -0.0000 -SUM OVER M 0.2537 0.2537 0.5075 0.0000 -SUM OVER M+Zeta 0.2537 0.2537 0.5075 0.0000 - -SUM OVER M+Zeta+L 2.2512 2.2512 4.5023 -0.0000 - -Total Charge on atom: Si 4.5023 -Total Magnetism on atom: Si -0.0000 - - -1 Zeta of Si Spin 1 Spin 2 Sum Diff -s 0 0.6704 0.6704 1.3407 0.0000 -s 1 0.0021 0.0021 0.0041 -0.0000 -SUM OVER M+Zeta 0.6724 0.6724 1.3449 0.0000 - -pz 0 0.3958 0.3958 0.7917 -0.0000 -px 0 0.3828 0.3828 0.7657 -0.0000 -py 0 0.3828 0.3828 0.7657 -0.0000 -SUM OVER M 1.1615 1.1615 2.3230 -0.0000 -pz 1 0.0548 0.0548 0.1095 -0.0000 -px 1 0.0527 0.0527 0.1055 0.0000 -py 1 0.0527 0.0527 0.1055 0.0000 -SUM OVER M 0.1602 0.1602 0.3205 0.0000 -SUM OVER M+Zeta 1.3217 1.3217 2.6435 -0.0000 - -dz^2 0 0.0051 0.0051 0.0103 0.0000 -dxz 0 0.0817 0.0817 0.1634 0.0000 -dyz 0 0.0817 0.0817 0.1634 0.0000 -dx^2-y^2 0 0.0079 0.0079 0.0158 -0.0000 -dxy 0 0.0783 0.0783 0.1565 -0.0000 -SUM OVER M 0.2547 0.2547 0.5093 0.0000 -SUM OVER M+Zeta 0.2547 0.2547 0.5093 0.0000 - -SUM OVER M+Zeta+L 2.2488 2.2488 4.4977 0.0000 - -Total Charge on atom: Si 4.4977 -Total Magnetism on atom: Si 0.0000 - - diff --git a/tests/03_NAO_multik/32_NO_KP_get_wf/INPUT b/tests/03_NAO_multik/32_NO_KP_get_wf/INPUT deleted file mode 100644 index 6c25a14814..0000000000 --- a/tests/03_NAO_multik/32_NO_KP_get_wf/INPUT +++ /dev/null @@ -1,24 +0,0 @@ -INPUT_PARAMETERS -suffix autotest - -#calculation scf -#out_wfc_lcao 1 - -calculation get_wf -symmetry -1 -nbands 2 -nspin 2 -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB -latname sc -ecutwfc 25.0 -basis_type lcao -scf_thr 1e-10 -read_file_dir ./ - -out_wfc_norm 1 -out_wfc_re_im 1 - -bx 2 -by 2 -bz 2 diff --git a/tests/03_NAO_multik/33_NO_KP_OW/INPUT b/tests/03_NAO_multik/33_NO_KP_OW/INPUT deleted file mode 100644 index 88a9b77253..0000000000 --- a/tests/03_NAO_multik/33_NO_KP_OW/INPUT +++ /dev/null @@ -1,19 +0,0 @@ -INPUT_PARAMETERS - -calculation scf -basis_type lcao -out_wfc_lcao 1 - -symmetry 0 - -nbands 4 -latname sc -ecutwfc 25.0 -scf_thr 1e-10 - - -suffix autotest -stru_file STRU -kpoint_file KPT -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB diff --git a/tests/03_NAO_multik/34_NO_KP_MU/INPUT b/tests/03_NAO_multik/34_NO_KP_MU/INPUT deleted file mode 100644 index 1a20f7d19e..0000000000 --- a/tests/03_NAO_multik/34_NO_KP_MU/INPUT +++ /dev/null @@ -1,20 +0,0 @@ -INPUT_PARAMETERS -#Parameters (System) -suffix autotest - -nbands 4 -stru_file STRU -kpoint_file KPT -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB -latname sc -#Parameters (PW) -ecutwfc 25.0 # Rydberg -#Parameters (electronic) -basis_type lcao -scf_thr 1e-10 - -calculation scf -out_mul 1 -cal_force 1 -cal_stress 1 diff --git a/tests/03_NAO_multik/34_NO_KP_MU/mulliken.txt.ref b/tests/03_NAO_multik/34_NO_KP_MU/mulliken.txt.ref deleted file mode 100644 index 32e657b09e..0000000000 --- a/tests/03_NAO_multik/34_NO_KP_MU/mulliken.txt.ref +++ /dev/null @@ -1,36 +0,0 @@ -STEP: 0 -CALCULATE THE MULLIkEN ANALYSIS FOR EACH ATOM - Total charge: 2 -Decomposed Mulliken populations -0 Zeta of H Spin 1 -s 0 0.9980 -s 1 -0.0051 -SUM OVER M+Zeta 0.9929 - -pz 0 0.0071 -px 0 0.0000 -py 0 0.0000 -SUM OVER M 0.0071 -SUM OVER M+Zeta 0.0071 - -SUM OVER M+Zeta+L 1.0000 - -Total Charge on atom: H 1.0000 - - -1 Zeta of H Spin 1 -s 0 0.9980 -s 1 -0.0051 -SUM OVER M+Zeta 0.9929 - -pz 0 0.0071 -px 0 0.0000 -py 0 0.0000 -SUM OVER M 0.0071 -SUM OVER M+Zeta 0.0071 - -SUM OVER M+Zeta+L 1.0000 - -Total Charge on atom: H 1.0000 - - diff --git a/tests/03_NAO_multik/35_NO_KP_MU_nscf/INPUT b/tests/03_NAO_multik/35_NO_KP_MU_nscf/INPUT deleted file mode 100644 index 9b55d3bce6..0000000000 --- a/tests/03_NAO_multik/35_NO_KP_MU_nscf/INPUT +++ /dev/null @@ -1,19 +0,0 @@ -INPUT_PARAMETERS -#Parameters (System) -suffix autotest - -nbands 4 -stru_file STRU -kpoint_file KPT -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB -latname sc -#Parameters (PW) -ecutwfc 25.0 # Rydberg -#Parameters (electronic) -basis_type lcao -scf_thr 1e-10 - -calculation nscf -out_mul 1 -read_file_dir . diff --git a/tests/03_NAO_multik/35_NO_KP_MU_nscf/mulliken.txt.ref b/tests/03_NAO_multik/35_NO_KP_MU_nscf/mulliken.txt.ref deleted file mode 100644 index 0d258f425a..0000000000 --- a/tests/03_NAO_multik/35_NO_KP_MU_nscf/mulliken.txt.ref +++ /dev/null @@ -1,36 +0,0 @@ -STEP: 0 -CALCULATE THE MULLIkEN ANALYSIS FOR EACH ATOM - Total charge: 2 -Decomposed Mulliken populations -0 Zeta of H Spin 1 -s 0 1.6850 -s 1 -0.6850 -SUM OVER M+Zeta 1.0000 - -pz 0 0.0000 -px 0 0.0000 -py 0 0.0000 -SUM OVER M 0.0000 -SUM OVER M+Zeta 0.0000 - -SUM OVER M+Zeta+L 1.0000 - -Total Charge on atom: H 1.0000 - - -1 Zeta of H Spin 1 -s 0 1.6850 -s 1 -0.6850 -SUM OVER M+Zeta 1.0000 - -pz 0 0.0000 -px 0 0.0000 -py 0 0.0000 -SUM OVER M 0.0000 -SUM OVER M+Zeta 0.0000 - -SUM OVER M+Zeta+L 1.0000 - -Total Charge on atom: H 1.0000 - - diff --git a/tests/03_NAO_multik/36_NO_KP_sol_H2/INPUT b/tests/03_NAO_multik/36_NO_KP_sol_H2/INPUT deleted file mode 100644 index 05a2041623..0000000000 --- a/tests/03_NAO_multik/36_NO_KP_sol_H2/INPUT +++ /dev/null @@ -1,21 +0,0 @@ -INPUT_PARAMETERS -#Parameters (General) -suffix autotest -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB - -nbands 2 -calculation scf -basis_type lcao -scf_thr 1e-7 - -#Parameters (Accuracy) -ecutwfc 10 -scf_nmax 50 - -#Parameters (Solvation Model) -imp_sol 1 -eb_k 80 -tau 0.000010798 -sigma_k 0.6 -nc_k 0.00037 diff --git a/tests/03_NAO_multik/36_NO_KP_sol_H2/result.ref b/tests/03_NAO_multik/36_NO_KP_sol_H2/result.ref deleted file mode 100644 index 9d04017206..0000000000 --- a/tests/03_NAO_multik/36_NO_KP_sol_H2/result.ref +++ /dev/null @@ -1,5 +0,0 @@ -etotref -34.45527983735714 -etotperatomref -17.2276399187 -esolelref -2.7024050741 -esolcavref 0.0838094138 -totaltimeref 1.68 diff --git a/tests/03_NAO_multik/37_NO_KP_restart/INPUT b/tests/03_NAO_multik/37_NO_KP_restart/INPUT deleted file mode 100644 index e2ce8d4a2f..0000000000 --- a/tests/03_NAO_multik/37_NO_KP_restart/INPUT +++ /dev/null @@ -1,36 +0,0 @@ -INPUT_PARAMETERS -#Parameters (1.General) -suffix autotest -calculation scf -symmetry 1 - -#Parameters (2.Iteration) -ecutwfc 20 -scf_thr 1e-7 -scf_nmax 100 -cal_force 1 -cal_stress 1 -#Parameters (3.Basis) -basis_type lcao -#kspacing 0.06 -#Parameters (4.Smearing) -smearing_method gauss -smearing_sigma 0.01 - -#Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.7 - -pseudo_mesh 1 -pseudo_rcut 10.0 - -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB - -#restart_save 1 -restart_load 1 -read_file_dir ./ - -bx 2 -by 2 -bz 2 diff --git a/tests/03_NAO_multik/38_NO_OP3/INPUT b/tests/03_NAO_multik/38_NO_OP3/INPUT deleted file mode 100644 index 1f239fd37f..0000000000 --- a/tests/03_NAO_multik/38_NO_OP3/INPUT +++ /dev/null @@ -1,26 +0,0 @@ -INPUT_PARAMETERS -#Parameters (1.General) -suffix autotest -calculation scf -nbands 6 -symmetry 1 -out_pot 3 - -#Parameters (2.Iteration) -ecutwfc 5 -scf_thr 1e-6 -scf_nmax 100 - -#Parameters (3.Basis) -basis_type lcao - -#Parameters (4.Smearing) -smearing_method gauss -smearing_sigma 0.002 - -#Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.3 - -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB diff --git a/tests/03_NAO_multik/39_NO_OP_nscf/INPUT b/tests/03_NAO_multik/39_NO_OP_nscf/INPUT deleted file mode 100644 index b40fa14e23..0000000000 --- a/tests/03_NAO_multik/39_NO_OP_nscf/INPUT +++ /dev/null @@ -1,28 +0,0 @@ -INPUT_PARAMETERS -#Parameters (1.General) -suffix autotest -calculation nscf - -nbands 6 -symmetry 1 -out_pot 1 - -#Parameters (2.Iteration) -ecutwfc 5 -scf_thr 1e-6 -scf_nmax 100 - -#Parameters (3.Basis) -basis_type lcao - -#Parameters (4.Smearing) -smearing_method gauss -smearing_sigma 0.002 - -#Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.3 - -read_file_dir ./ -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB diff --git a/tests/03_NAO_multik/39_NO_OP_nscf/STRU b/tests/03_NAO_multik/39_NO_OP_nscf/STRU deleted file mode 100644 index 8bff6c3384..0000000000 --- a/tests/03_NAO_multik/39_NO_OP_nscf/STRU +++ /dev/null @@ -1,22 +0,0 @@ -ATOMIC_SPECIES -Si 14 Si_ONCV_PBE-1.0.upf upf201 - -NUMERICAL_ORBITAL -Si_gga_8au_60Ry_2s2p1d.orb - -LATTICE_CONSTANT -10.2 // add lattice constant - -LATTICE_VECTORS -0.0 0.5 0.5 -0.5 0.0 0.5 -0.5 0.5 0.0 - -ATOMIC_POSITIONS -Direct - -Si // Element type -0.0 // magnetism -2 -0.00 0.00 0.00 1 1 1 -0.25 0.25 0.25 1 1 1 diff --git a/tests/03_NAO_multik/39_NO_OP_nscf/pots1.cube.ref b/tests/03_NAO_multik/39_NO_OP_nscf/pots1.cube.ref deleted file mode 100644 index ac71d0f37a..0000000000 --- a/tests/03_NAO_multik/39_NO_OP_nscf/pots1.cube.ref +++ /dev/null @@ -1,296 +0,0 @@ -STEP: 0 Cubefile created from ABACUS. Inner loop is z, followed by y and x -1 (nspin) -2 0.0 0.0 0.0 -12 0.000000 0.425000 0.425000 -12 0.425000 0.000000 0.425000 -12 0.425000 0.425000 0.000000 - 14 4 0.000000 0.000000 0.000000 - 14 4 2.550000 2.550000 2.550000 - -1.898e+01 -1.230e+01 -3.089e+00 -9.384e-01 -6.166e-01 -1.902e-01 - -3.258e-01 -1.902e-01 -6.166e-01 -9.384e-01 -3.089e+00 -1.230e+01 - -1.230e+01 -5.028e+00 -1.031e+00 -6.906e-01 -4.081e-01 -6.339e-01 - -6.339e-01 -4.081e-01 -6.906e-01 -1.031e+00 -5.028e+00 -1.230e+01 - -3.089e+00 -1.031e+00 -7.130e-01 -6.906e-01 -7.237e-01 -8.719e-01 - -7.237e-01 -6.906e-01 -7.130e-01 -1.031e+00 -3.089e+00 -4.726e+00 - -9.384e-01 -6.906e-01 -6.906e-01 -9.384e-01 -1.041e+00 -1.041e+00 - -9.384e-01 -6.906e-01 -6.906e-01 -9.384e-01 -1.041e+00 -1.041e+00 - -6.166e-01 -4.081e-01 -7.237e-01 -1.041e+00 -1.120e+00 -1.041e+00 - -7.237e-01 -4.081e-01 -6.166e-01 -7.714e-01 -6.496e-01 -7.714e-01 - -1.902e-01 -6.339e-01 -8.719e-01 -1.041e+00 -1.041e+00 -8.719e-01 - -6.339e-01 -1.902e-01 -4.816e-02 -1.365e-02 -1.365e-02 -4.816e-02 - -3.258e-01 -6.339e-01 -7.237e-01 -9.384e-01 -7.237e-01 -6.339e-01 - -3.258e-01 1.619e-01 2.312e-01 2.533e-01 2.312e-01 1.619e-01 - -1.902e-01 -4.081e-01 -6.906e-01 -6.906e-01 -4.081e-01 -1.902e-01 - 1.619e-01 1.282e-01 2.618e-01 2.618e-01 1.282e-01 1.619e-01 - -6.166e-01 -6.906e-01 -7.130e-01 -6.906e-01 -6.166e-01 -4.816e-02 - 2.312e-01 2.618e-01 5.409e-01 2.618e-01 2.312e-01 -4.816e-02 - -9.384e-01 -1.031e+00 -1.031e+00 -9.384e-01 -7.714e-01 -1.365e-02 - 2.533e-01 2.618e-01 2.618e-01 2.533e-01 -1.365e-02 -7.714e-01 - -3.089e+00 -5.028e+00 -3.089e+00 -1.041e+00 -6.496e-01 -1.365e-02 - 2.312e-01 1.282e-01 2.312e-01 -1.365e-02 -6.496e-01 -1.041e+00 - -1.230e+01 -1.230e+01 -4.726e+00 -1.041e+00 -7.714e-01 -4.816e-02 - 1.619e-01 1.619e-01 -4.816e-02 -7.714e-01 -1.041e+00 -4.726e+00 - -1.230e+01 -5.028e+00 -1.031e+00 -6.906e-01 -4.081e-01 -6.339e-01 - -6.339e-01 -4.081e-01 -6.906e-01 -1.031e+00 -5.028e+00 -1.230e+01 - -5.028e+00 -1.444e+00 -9.154e-01 -7.130e-01 -7.047e-01 -1.054e+00 - -7.047e-01 -7.130e-01 -9.154e-01 -1.444e+00 -5.028e+00 -7.890e+00 - -1.031e+00 -9.154e-01 -9.154e-01 -1.031e+00 -2.083e+00 -2.083e+00 - -1.031e+00 -9.154e-01 -9.154e-01 -1.031e+00 -2.083e+00 -2.083e+00 - -6.906e-01 -7.130e-01 -1.031e+00 -3.089e+00 -4.726e+00 -3.089e+00 - -1.031e+00 -7.130e-01 -6.906e-01 -7.237e-01 -8.719e-01 -7.237e-01 - -4.081e-01 -7.047e-01 -2.083e+00 -4.726e+00 -4.726e+00 -2.083e+00 - -7.047e-01 -4.081e-01 -2.325e-01 -3.720e-01 -3.720e-01 -2.325e-01 - -6.339e-01 -1.054e+00 -2.083e+00 -3.089e+00 -2.083e+00 -1.054e+00 - -6.339e-01 4.913e-02 1.896e-01 5.565e-02 1.896e-01 4.913e-02 - -6.339e-01 -7.047e-01 -1.031e+00 -1.031e+00 -7.047e-01 -6.339e-01 - -1.454e-01 7.774e-02 4.793e-02 4.793e-02 7.774e-02 -1.454e-01 - -4.081e-01 -7.130e-01 -9.154e-01 -7.130e-01 -4.081e-01 4.913e-02 - 7.774e-02 7.854e-02 4.235e-01 7.854e-02 7.774e-02 4.913e-02 - -6.906e-01 -9.154e-01 -9.154e-01 -6.906e-01 -2.325e-01 1.896e-01 - 4.793e-02 4.235e-01 4.235e-01 4.793e-02 1.896e-01 -2.325e-01 - -1.031e+00 -1.444e+00 -1.031e+00 -7.237e-01 -3.720e-01 5.565e-02 - 4.793e-02 7.854e-02 4.793e-02 5.565e-02 -3.720e-01 -7.237e-01 - -5.028e+00 -5.028e+00 -2.083e+00 -8.719e-01 -3.720e-01 1.896e-01 - 7.774e-02 7.774e-02 1.896e-01 -3.720e-01 -8.719e-01 -2.083e+00 - -1.230e+01 -7.890e+00 -2.083e+00 -7.237e-01 -2.325e-01 4.913e-02 - -1.454e-01 4.913e-02 -2.325e-01 -7.237e-01 -2.083e+00 -7.890e+00 - -3.089e+00 -1.031e+00 -7.130e-01 -6.906e-01 -7.237e-01 -8.719e-01 - -7.237e-01 -6.906e-01 -7.130e-01 -1.031e+00 -3.089e+00 -4.726e+00 - -1.031e+00 -9.154e-01 -9.154e-01 -1.031e+00 -2.083e+00 -2.083e+00 - -1.031e+00 -9.154e-01 -9.154e-01 -1.031e+00 -2.083e+00 -2.083e+00 - -7.130e-01 -9.154e-01 -1.444e+00 -5.028e+00 -7.890e+00 -5.028e+00 - -1.444e+00 -9.154e-01 -7.130e-01 -7.047e-01 -1.054e+00 -7.047e-01 - -6.906e-01 -1.031e+00 -5.028e+00 -1.230e+01 -1.230e+01 -5.028e+00 - -1.031e+00 -6.906e-01 -4.081e-01 -6.339e-01 -6.339e-01 -4.081e-01 - -7.237e-01 -2.083e+00 -7.890e+00 -1.230e+01 -7.890e+00 -2.083e+00 - -7.237e-01 -2.325e-01 4.913e-02 -1.454e-01 4.913e-02 -2.325e-01 - -8.719e-01 -2.083e+00 -5.028e+00 -5.028e+00 -2.083e+00 -8.719e-01 - -3.720e-01 1.896e-01 7.774e-02 7.774e-02 1.896e-01 -3.720e-01 - -7.237e-01 -1.031e+00 -1.444e+00 -1.031e+00 -7.237e-01 -3.720e-01 - 5.565e-02 4.793e-02 7.854e-02 4.793e-02 5.565e-02 -3.720e-01 - -6.906e-01 -9.154e-01 -9.154e-01 -6.906e-01 -2.325e-01 1.896e-01 - 4.793e-02 4.235e-01 4.235e-01 4.793e-02 1.896e-01 -2.325e-01 - -7.130e-01 -9.154e-01 -7.130e-01 -4.081e-01 4.913e-02 7.774e-02 - 7.854e-02 4.235e-01 7.854e-02 7.774e-02 4.913e-02 -4.081e-01 - -1.031e+00 -1.031e+00 -7.047e-01 -6.339e-01 -1.454e-01 7.774e-02 - 4.793e-02 4.793e-02 7.774e-02 -1.454e-01 -6.339e-01 -7.047e-01 - -3.089e+00 -2.083e+00 -1.054e+00 -6.339e-01 4.913e-02 1.896e-01 - 5.565e-02 1.896e-01 4.913e-02 -6.339e-01 -1.054e+00 -2.083e+00 - -4.726e+00 -2.083e+00 -7.047e-01 -4.081e-01 -2.325e-01 -3.720e-01 - -3.720e-01 -2.325e-01 -4.081e-01 -7.047e-01 -2.083e+00 -4.726e+00 - -9.384e-01 -6.906e-01 -6.906e-01 -9.384e-01 -1.041e+00 -1.041e+00 - -9.384e-01 -6.906e-01 -6.906e-01 -9.384e-01 -1.041e+00 -1.041e+00 - -6.906e-01 -7.130e-01 -1.031e+00 -3.089e+00 -4.726e+00 -3.089e+00 - -1.031e+00 -7.130e-01 -6.906e-01 -7.237e-01 -8.719e-01 -7.237e-01 - -6.906e-01 -1.031e+00 -5.028e+00 -1.230e+01 -1.230e+01 -5.028e+00 - -1.031e+00 -6.906e-01 -4.081e-01 -6.339e-01 -6.339e-01 -4.081e-01 - -9.384e-01 -3.089e+00 -1.230e+01 -1.898e+01 -1.230e+01 -3.089e+00 - -9.384e-01 -6.166e-01 -1.902e-01 -3.258e-01 -1.902e-01 -6.166e-01 - -1.041e+00 -4.726e+00 -1.230e+01 -1.230e+01 -4.726e+00 -1.041e+00 - -7.714e-01 -4.816e-02 1.619e-01 1.619e-01 -4.816e-02 -7.714e-01 - -1.041e+00 -3.089e+00 -5.028e+00 -3.089e+00 -1.041e+00 -6.496e-01 - -1.365e-02 2.312e-01 1.282e-01 2.312e-01 -1.365e-02 -6.496e-01 - -9.384e-01 -1.031e+00 -1.031e+00 -9.384e-01 -7.714e-01 -1.365e-02 - 2.533e-01 2.618e-01 2.618e-01 2.533e-01 -1.365e-02 -7.714e-01 - -6.906e-01 -7.130e-01 -6.906e-01 -6.166e-01 -4.816e-02 2.312e-01 - 2.618e-01 5.409e-01 2.618e-01 2.312e-01 -4.816e-02 -6.166e-01 - -6.906e-01 -6.906e-01 -4.081e-01 -1.902e-01 1.619e-01 1.282e-01 - 2.618e-01 2.618e-01 1.282e-01 1.619e-01 -1.902e-01 -4.081e-01 - -9.384e-01 -7.237e-01 -6.339e-01 -3.258e-01 1.619e-01 2.312e-01 - 2.533e-01 2.312e-01 1.619e-01 -3.258e-01 -6.339e-01 -7.237e-01 - -1.041e+00 -8.719e-01 -6.339e-01 -1.902e-01 -4.816e-02 -1.365e-02 - -1.365e-02 -4.816e-02 -1.902e-01 -6.339e-01 -8.719e-01 -1.041e+00 - -1.041e+00 -7.237e-01 -4.081e-01 -6.166e-01 -7.714e-01 -6.496e-01 - -7.714e-01 -6.166e-01 -4.081e-01 -7.237e-01 -1.041e+00 -1.120e+00 - -6.166e-01 -4.081e-01 -7.237e-01 -1.041e+00 -1.120e+00 -1.041e+00 - -7.237e-01 -4.081e-01 -6.166e-01 -7.714e-01 -6.496e-01 -7.714e-01 - -4.081e-01 -7.047e-01 -2.083e+00 -4.726e+00 -4.726e+00 -2.083e+00 - -7.047e-01 -4.081e-01 -2.325e-01 -3.720e-01 -3.720e-01 -2.325e-01 - -7.237e-01 -2.083e+00 -7.890e+00 -1.230e+01 -7.890e+00 -2.083e+00 - -7.237e-01 -2.325e-01 4.913e-02 -1.454e-01 4.913e-02 -2.325e-01 - -1.041e+00 -4.726e+00 -1.230e+01 -1.230e+01 -4.726e+00 -1.041e+00 - -7.714e-01 -4.816e-02 1.619e-01 1.619e-01 -4.816e-02 -7.714e-01 - -1.120e+00 -4.726e+00 -7.890e+00 -4.726e+00 -1.120e+00 -6.578e-01 - -1.706e-01 2.690e-01 2.403e-01 2.690e-01 -1.706e-01 -6.578e-01 - -1.041e+00 -2.083e+00 -2.083e+00 -1.041e+00 -6.578e-01 -3.744e-02 - 3.014e-01 1.503e-01 1.503e-01 3.014e-01 -3.744e-02 -6.578e-01 - -7.237e-01 -7.047e-01 -7.237e-01 -7.714e-01 -1.706e-01 3.014e-01 - 1.983e-01 2.841e-01 1.983e-01 3.014e-01 -1.706e-01 -7.714e-01 - -4.081e-01 -4.081e-01 -2.325e-01 -4.816e-02 2.690e-01 1.503e-01 - 2.841e-01 2.841e-01 1.503e-01 2.690e-01 -4.816e-02 -2.325e-01 - -6.166e-01 -2.325e-01 4.913e-02 1.619e-01 2.403e-01 1.503e-01 - 1.983e-01 1.503e-01 2.403e-01 1.619e-01 4.913e-02 -2.325e-01 - -7.714e-01 -3.720e-01 -1.454e-01 1.619e-01 2.690e-01 3.014e-01 - 3.014e-01 2.690e-01 1.619e-01 -1.454e-01 -3.720e-01 -7.714e-01 - -6.496e-01 -3.720e-01 4.913e-02 -4.816e-02 -1.706e-01 -3.744e-02 - -1.706e-01 -4.816e-02 4.913e-02 -3.720e-01 -6.496e-01 -6.578e-01 - -7.714e-01 -2.325e-01 -2.325e-01 -7.714e-01 -6.578e-01 -6.578e-01 - -7.714e-01 -2.325e-01 -2.325e-01 -7.714e-01 -6.578e-01 -6.578e-01 - -1.902e-01 -6.339e-01 -8.719e-01 -1.041e+00 -1.041e+00 -8.719e-01 - -6.339e-01 -1.902e-01 -4.816e-02 -1.365e-02 -1.365e-02 -4.816e-02 - -6.339e-01 -1.054e+00 -2.083e+00 -3.089e+00 -2.083e+00 -1.054e+00 - -6.339e-01 4.913e-02 1.896e-01 5.565e-02 1.896e-01 4.913e-02 - -8.719e-01 -2.083e+00 -5.028e+00 -5.028e+00 -2.083e+00 -8.719e-01 - -3.720e-01 1.896e-01 7.774e-02 7.774e-02 1.896e-01 -3.720e-01 - -1.041e+00 -3.089e+00 -5.028e+00 -3.089e+00 -1.041e+00 -6.496e-01 - -1.365e-02 2.312e-01 1.282e-01 2.312e-01 -1.365e-02 -6.496e-01 - -1.041e+00 -2.083e+00 -2.083e+00 -1.041e+00 -6.578e-01 -3.744e-02 - 3.014e-01 1.503e-01 1.503e-01 3.014e-01 -3.744e-02 -6.578e-01 - -8.719e-01 -1.054e+00 -8.719e-01 -6.496e-01 -3.744e-02 3.214e-01 - 1.571e-01 1.977e-01 1.571e-01 3.214e-01 -3.744e-02 -6.496e-01 - -6.339e-01 -6.339e-01 -3.720e-01 -1.365e-02 3.014e-01 1.571e-01 - 4.411e-01 4.411e-01 1.571e-01 3.014e-01 -1.365e-02 -3.720e-01 - -1.902e-01 4.913e-02 1.896e-01 2.312e-01 1.503e-01 1.977e-01 - 4.411e-01 1.977e-01 1.503e-01 2.312e-01 1.896e-01 4.913e-02 - -4.816e-02 1.896e-01 7.774e-02 1.282e-01 1.503e-01 1.571e-01 - 1.571e-01 1.503e-01 1.282e-01 7.774e-02 1.896e-01 -4.816e-02 - -1.365e-02 5.565e-02 7.774e-02 2.312e-01 3.014e-01 3.214e-01 - 3.014e-01 2.312e-01 7.774e-02 5.565e-02 -1.365e-02 -1.706e-01 - -1.365e-02 1.896e-01 1.896e-01 -1.365e-02 -3.744e-02 -3.744e-02 - -1.365e-02 1.896e-01 1.896e-01 -1.365e-02 -3.744e-02 -3.744e-02 - -4.816e-02 4.913e-02 -3.720e-01 -6.496e-01 -6.578e-01 -6.496e-01 - -3.720e-01 4.913e-02 -4.816e-02 -1.706e-01 -3.744e-02 -1.706e-01 - -3.258e-01 -6.339e-01 -7.237e-01 -9.384e-01 -7.237e-01 -6.339e-01 - -3.258e-01 1.619e-01 2.312e-01 2.533e-01 2.312e-01 1.619e-01 - -6.339e-01 -7.047e-01 -1.031e+00 -1.031e+00 -7.047e-01 -6.339e-01 - -1.454e-01 7.774e-02 4.793e-02 4.793e-02 7.774e-02 -1.454e-01 - -7.237e-01 -1.031e+00 -1.444e+00 -1.031e+00 -7.237e-01 -3.720e-01 - 5.565e-02 4.793e-02 7.854e-02 4.793e-02 5.565e-02 -3.720e-01 - -9.384e-01 -1.031e+00 -1.031e+00 -9.384e-01 -7.714e-01 -1.365e-02 - 2.533e-01 2.618e-01 2.618e-01 2.533e-01 -1.365e-02 -7.714e-01 - -7.237e-01 -7.047e-01 -7.237e-01 -7.714e-01 -1.706e-01 3.014e-01 - 1.983e-01 2.841e-01 1.983e-01 3.014e-01 -1.706e-01 -7.714e-01 - -6.339e-01 -6.339e-01 -3.720e-01 -1.365e-02 3.014e-01 1.571e-01 - 4.411e-01 4.411e-01 1.571e-01 3.014e-01 -1.365e-02 -3.720e-01 - -3.258e-01 -1.454e-01 5.565e-02 2.533e-01 1.983e-01 4.411e-01 - 8.728e-01 4.411e-01 1.983e-01 2.533e-01 5.565e-02 -1.454e-01 - 1.619e-01 7.774e-02 4.793e-02 2.618e-01 2.841e-01 4.411e-01 - 4.411e-01 2.841e-01 2.618e-01 4.793e-02 7.774e-02 1.619e-01 - 2.312e-01 4.793e-02 7.854e-02 2.618e-01 1.983e-01 1.571e-01 - 1.983e-01 2.618e-01 7.854e-02 4.793e-02 2.312e-01 2.690e-01 - 2.533e-01 4.793e-02 4.793e-02 2.533e-01 3.014e-01 3.014e-01 - 2.533e-01 4.793e-02 4.793e-02 2.533e-01 3.014e-01 3.014e-01 - 2.312e-01 7.774e-02 5.565e-02 -1.365e-02 -1.706e-01 -1.365e-02 - 5.565e-02 7.774e-02 2.312e-01 3.014e-01 3.214e-01 3.014e-01 - 1.619e-01 -1.454e-01 -3.720e-01 -7.714e-01 -7.714e-01 -3.720e-01 - -1.454e-01 1.619e-01 2.690e-01 3.014e-01 3.014e-01 2.690e-01 - -1.902e-01 -4.081e-01 -6.906e-01 -6.906e-01 -4.081e-01 -1.902e-01 - 1.619e-01 1.282e-01 2.618e-01 2.618e-01 1.282e-01 1.619e-01 - -4.081e-01 -7.130e-01 -9.154e-01 -7.130e-01 -4.081e-01 4.913e-02 - 7.774e-02 7.854e-02 4.235e-01 7.854e-02 7.774e-02 4.913e-02 - -6.906e-01 -9.154e-01 -9.154e-01 -6.906e-01 -2.325e-01 1.896e-01 - 4.793e-02 4.235e-01 4.235e-01 4.793e-02 1.896e-01 -2.325e-01 - -6.906e-01 -7.130e-01 -6.906e-01 -6.166e-01 -4.816e-02 2.312e-01 - 2.618e-01 5.409e-01 2.618e-01 2.312e-01 -4.816e-02 -6.166e-01 - -4.081e-01 -4.081e-01 -2.325e-01 -4.816e-02 2.690e-01 1.503e-01 - 2.841e-01 2.841e-01 1.503e-01 2.690e-01 -4.816e-02 -2.325e-01 - -1.902e-01 4.913e-02 1.896e-01 2.312e-01 1.503e-01 1.977e-01 - 4.411e-01 1.977e-01 1.503e-01 2.312e-01 1.896e-01 4.913e-02 - 1.619e-01 7.774e-02 4.793e-02 2.618e-01 2.841e-01 4.411e-01 - 4.411e-01 2.841e-01 2.618e-01 4.793e-02 7.774e-02 1.619e-01 - 1.282e-01 7.854e-02 4.235e-01 5.409e-01 2.841e-01 1.977e-01 - 2.841e-01 5.409e-01 4.235e-01 7.854e-02 1.282e-01 2.403e-01 - 2.618e-01 4.235e-01 4.235e-01 2.618e-01 1.503e-01 1.503e-01 - 2.618e-01 4.235e-01 4.235e-01 2.618e-01 1.503e-01 1.503e-01 - 2.618e-01 7.854e-02 4.793e-02 2.312e-01 2.690e-01 2.312e-01 - 4.793e-02 7.854e-02 2.618e-01 1.983e-01 1.571e-01 1.983e-01 - 1.282e-01 7.774e-02 1.896e-01 -4.816e-02 -4.816e-02 1.896e-01 - 7.774e-02 1.282e-01 1.503e-01 1.571e-01 1.571e-01 1.503e-01 - 1.619e-01 4.913e-02 -2.325e-01 -6.166e-01 -2.325e-01 4.913e-02 - 1.619e-01 2.403e-01 1.503e-01 1.983e-01 1.503e-01 2.403e-01 - -6.166e-01 -6.906e-01 -7.130e-01 -6.906e-01 -6.166e-01 -4.816e-02 - 2.312e-01 2.618e-01 5.409e-01 2.618e-01 2.312e-01 -4.816e-02 - -6.906e-01 -9.154e-01 -9.154e-01 -6.906e-01 -2.325e-01 1.896e-01 - 4.793e-02 4.235e-01 4.235e-01 4.793e-02 1.896e-01 -2.325e-01 - -7.130e-01 -9.154e-01 -7.130e-01 -4.081e-01 4.913e-02 7.774e-02 - 7.854e-02 4.235e-01 7.854e-02 7.774e-02 4.913e-02 -4.081e-01 - -6.906e-01 -6.906e-01 -4.081e-01 -1.902e-01 1.619e-01 1.282e-01 - 2.618e-01 2.618e-01 1.282e-01 1.619e-01 -1.902e-01 -4.081e-01 - -6.166e-01 -2.325e-01 4.913e-02 1.619e-01 2.403e-01 1.503e-01 - 1.983e-01 1.503e-01 2.403e-01 1.619e-01 4.913e-02 -2.325e-01 - -4.816e-02 1.896e-01 7.774e-02 1.282e-01 1.503e-01 1.571e-01 - 1.571e-01 1.503e-01 1.282e-01 7.774e-02 1.896e-01 -4.816e-02 - 2.312e-01 4.793e-02 7.854e-02 2.618e-01 1.983e-01 1.571e-01 - 1.983e-01 2.618e-01 7.854e-02 4.793e-02 2.312e-01 2.690e-01 - 2.618e-01 4.235e-01 4.235e-01 2.618e-01 1.503e-01 1.503e-01 - 2.618e-01 4.235e-01 4.235e-01 2.618e-01 1.503e-01 1.503e-01 - 5.409e-01 4.235e-01 7.854e-02 1.282e-01 2.403e-01 1.282e-01 - 7.854e-02 4.235e-01 5.409e-01 2.841e-01 1.977e-01 2.841e-01 - 2.618e-01 4.793e-02 7.774e-02 1.619e-01 1.619e-01 7.774e-02 - 4.793e-02 2.618e-01 2.841e-01 4.411e-01 4.411e-01 2.841e-01 - 2.312e-01 1.896e-01 4.913e-02 -1.902e-01 4.913e-02 1.896e-01 - 2.312e-01 1.503e-01 1.977e-01 4.411e-01 1.977e-01 1.503e-01 - -4.816e-02 -2.325e-01 -4.081e-01 -4.081e-01 -2.325e-01 -4.816e-02 - 2.690e-01 1.503e-01 2.841e-01 2.841e-01 1.503e-01 2.690e-01 - -9.384e-01 -1.031e+00 -1.031e+00 -9.384e-01 -7.714e-01 -1.365e-02 - 2.533e-01 2.618e-01 2.618e-01 2.533e-01 -1.365e-02 -7.714e-01 - -1.031e+00 -1.444e+00 -1.031e+00 -7.237e-01 -3.720e-01 5.565e-02 - 4.793e-02 7.854e-02 4.793e-02 5.565e-02 -3.720e-01 -7.237e-01 - -1.031e+00 -1.031e+00 -7.047e-01 -6.339e-01 -1.454e-01 7.774e-02 - 4.793e-02 4.793e-02 7.774e-02 -1.454e-01 -6.339e-01 -7.047e-01 - -9.384e-01 -7.237e-01 -6.339e-01 -3.258e-01 1.619e-01 2.312e-01 - 2.533e-01 2.312e-01 1.619e-01 -3.258e-01 -6.339e-01 -7.237e-01 - -7.714e-01 -3.720e-01 -1.454e-01 1.619e-01 2.690e-01 3.014e-01 - 3.014e-01 2.690e-01 1.619e-01 -1.454e-01 -3.720e-01 -7.714e-01 - -1.365e-02 5.565e-02 7.774e-02 2.312e-01 3.014e-01 3.214e-01 - 3.014e-01 2.312e-01 7.774e-02 5.565e-02 -1.365e-02 -1.706e-01 - 2.533e-01 4.793e-02 4.793e-02 2.533e-01 3.014e-01 3.014e-01 - 2.533e-01 4.793e-02 4.793e-02 2.533e-01 3.014e-01 3.014e-01 - 2.618e-01 7.854e-02 4.793e-02 2.312e-01 2.690e-01 2.312e-01 - 4.793e-02 7.854e-02 2.618e-01 1.983e-01 1.571e-01 1.983e-01 - 2.618e-01 4.793e-02 7.774e-02 1.619e-01 1.619e-01 7.774e-02 - 4.793e-02 2.618e-01 2.841e-01 4.411e-01 4.411e-01 2.841e-01 - 2.533e-01 5.565e-02 -1.454e-01 -3.258e-01 -1.454e-01 5.565e-02 - 2.533e-01 1.983e-01 4.411e-01 8.728e-01 4.411e-01 1.983e-01 - -1.365e-02 -3.720e-01 -6.339e-01 -6.339e-01 -3.720e-01 -1.365e-02 - 3.014e-01 1.571e-01 4.411e-01 4.411e-01 1.571e-01 3.014e-01 - -7.714e-01 -7.237e-01 -7.047e-01 -7.237e-01 -7.714e-01 -1.706e-01 - 3.014e-01 1.983e-01 2.841e-01 1.983e-01 3.014e-01 -1.706e-01 - -3.089e+00 -5.028e+00 -3.089e+00 -1.041e+00 -6.496e-01 -1.365e-02 - 2.312e-01 1.282e-01 2.312e-01 -1.365e-02 -6.496e-01 -1.041e+00 - -5.028e+00 -5.028e+00 -2.083e+00 -8.719e-01 -3.720e-01 1.896e-01 - 7.774e-02 7.774e-02 1.896e-01 -3.720e-01 -8.719e-01 -2.083e+00 - -3.089e+00 -2.083e+00 -1.054e+00 -6.339e-01 4.913e-02 1.896e-01 - 5.565e-02 1.896e-01 4.913e-02 -6.339e-01 -1.054e+00 -2.083e+00 - -1.041e+00 -8.719e-01 -6.339e-01 -1.902e-01 -4.816e-02 -1.365e-02 - -1.365e-02 -4.816e-02 -1.902e-01 -6.339e-01 -8.719e-01 -1.041e+00 - -6.496e-01 -3.720e-01 4.913e-02 -4.816e-02 -1.706e-01 -3.744e-02 - -1.706e-01 -4.816e-02 4.913e-02 -3.720e-01 -6.496e-01 -6.578e-01 - -1.365e-02 1.896e-01 1.896e-01 -1.365e-02 -3.744e-02 -3.744e-02 - -1.365e-02 1.896e-01 1.896e-01 -1.365e-02 -3.744e-02 -3.744e-02 - 2.312e-01 7.774e-02 5.565e-02 -1.365e-02 -1.706e-01 -1.365e-02 - 5.565e-02 7.774e-02 2.312e-01 3.014e-01 3.214e-01 3.014e-01 - 1.282e-01 7.774e-02 1.896e-01 -4.816e-02 -4.816e-02 1.896e-01 - 7.774e-02 1.282e-01 1.503e-01 1.571e-01 1.571e-01 1.503e-01 - 2.312e-01 1.896e-01 4.913e-02 -1.902e-01 4.913e-02 1.896e-01 - 2.312e-01 1.503e-01 1.977e-01 4.411e-01 1.977e-01 1.503e-01 - -1.365e-02 -3.720e-01 -6.339e-01 -6.339e-01 -3.720e-01 -1.365e-02 - 3.014e-01 1.571e-01 4.411e-01 4.411e-01 1.571e-01 3.014e-01 - -6.496e-01 -8.719e-01 -1.054e+00 -8.719e-01 -6.496e-01 -3.744e-02 - 3.214e-01 1.571e-01 1.977e-01 1.571e-01 3.214e-01 -3.744e-02 - -1.041e+00 -2.083e+00 -2.083e+00 -1.041e+00 -6.578e-01 -3.744e-02 - 3.014e-01 1.503e-01 1.503e-01 3.014e-01 -3.744e-02 -6.578e-01 - -1.230e+01 -1.230e+01 -4.726e+00 -1.041e+00 -7.714e-01 -4.816e-02 - 1.619e-01 1.619e-01 -4.816e-02 -7.714e-01 -1.041e+00 -4.726e+00 - -1.230e+01 -7.890e+00 -2.083e+00 -7.237e-01 -2.325e-01 4.913e-02 - -1.454e-01 4.913e-02 -2.325e-01 -7.237e-01 -2.083e+00 -7.890e+00 - -4.726e+00 -2.083e+00 -7.047e-01 -4.081e-01 -2.325e-01 -3.720e-01 - -3.720e-01 -2.325e-01 -4.081e-01 -7.047e-01 -2.083e+00 -4.726e+00 - -1.041e+00 -7.237e-01 -4.081e-01 -6.166e-01 -7.714e-01 -6.496e-01 - -7.714e-01 -6.166e-01 -4.081e-01 -7.237e-01 -1.041e+00 -1.120e+00 - -7.714e-01 -2.325e-01 -2.325e-01 -7.714e-01 -6.578e-01 -6.578e-01 - -7.714e-01 -2.325e-01 -2.325e-01 -7.714e-01 -6.578e-01 -6.578e-01 - -4.816e-02 4.913e-02 -3.720e-01 -6.496e-01 -6.578e-01 -6.496e-01 - -3.720e-01 4.913e-02 -4.816e-02 -1.706e-01 -3.744e-02 -1.706e-01 - 1.619e-01 -1.454e-01 -3.720e-01 -7.714e-01 -7.714e-01 -3.720e-01 - -1.454e-01 1.619e-01 2.690e-01 3.014e-01 3.014e-01 2.690e-01 - 1.619e-01 4.913e-02 -2.325e-01 -6.166e-01 -2.325e-01 4.913e-02 - 1.619e-01 2.403e-01 1.503e-01 1.983e-01 1.503e-01 2.403e-01 - -4.816e-02 -2.325e-01 -4.081e-01 -4.081e-01 -2.325e-01 -4.816e-02 - 2.690e-01 1.503e-01 2.841e-01 2.841e-01 1.503e-01 2.690e-01 - -7.714e-01 -7.237e-01 -7.047e-01 -7.237e-01 -7.714e-01 -1.706e-01 - 3.014e-01 1.983e-01 2.841e-01 1.983e-01 3.014e-01 -1.706e-01 - -1.041e+00 -2.083e+00 -2.083e+00 -1.041e+00 -6.578e-01 -3.744e-02 - 3.014e-01 1.503e-01 1.503e-01 3.014e-01 -3.744e-02 -6.578e-01 - -4.726e+00 -7.890e+00 -4.726e+00 -1.120e+00 -6.578e-01 -1.706e-01 - 2.690e-01 2.403e-01 2.690e-01 -1.706e-01 -6.578e-01 -1.120e+00 diff --git a/tests/03_NAO_multik/39_NO_OP_nscf/result.ref b/tests/03_NAO_multik/39_NO_OP_nscf/result.ref deleted file mode 100644 index 32b3897852..0000000000 --- a/tests/03_NAO_multik/39_NO_OP_nscf/result.ref +++ /dev/null @@ -1,7 +0,0 @@ -etotref -196.6254071148604 -etotperatomref -98.3127035574 -ComparePot1_pass 0 -pointgroupref T_d -spacegroupref O_h -nksibzref 1 -totaltimeref 0.35 diff --git a/tests/03_NAO_multik/40_NO_ELF/INPUT b/tests/03_NAO_multik/40_NO_ELF/INPUT deleted file mode 100644 index 6d9116e9a4..0000000000 --- a/tests/03_NAO_multik/40_NO_ELF/INPUT +++ /dev/null @@ -1,27 +0,0 @@ -INPUT_PARAMETERS -#Parameters (1.General) -suffix autotest -calculation scf - -nbands 6 -symmetry 1 -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB -out_elf 1 - -#Parameters (2.Iteration) -ecutwfc 5 -scf_thr 1e-6 -scf_nmax 100 - - -#Parameters (3.Basis) -basis_type lcao - -#Parameters (4.Smearing) -smearing_method gauss -smearing_sigma 0.002 - -#Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.3 diff --git a/tests/03_NAO_multik/40_NO_ELF/README b/tests/03_NAO_multik/40_NO_ELF/README deleted file mode 100644 index 1a48d127fe..0000000000 --- a/tests/03_NAO_multik/40_NO_ELF/README +++ /dev/null @@ -1 +0,0 @@ -test out_elf with LCAO basis, symmetry=on diff --git a/tests/03_NAO_multik/40_NO_ELF/STRU b/tests/03_NAO_multik/40_NO_ELF/STRU deleted file mode 100644 index 8bff6c3384..0000000000 --- a/tests/03_NAO_multik/40_NO_ELF/STRU +++ /dev/null @@ -1,22 +0,0 @@ -ATOMIC_SPECIES -Si 14 Si_ONCV_PBE-1.0.upf upf201 - -NUMERICAL_ORBITAL -Si_gga_8au_60Ry_2s2p1d.orb - -LATTICE_CONSTANT -10.2 // add lattice constant - -LATTICE_VECTORS -0.0 0.5 0.5 -0.5 0.0 0.5 -0.5 0.5 0.0 - -ATOMIC_POSITIONS -Direct - -Si // Element type -0.0 // magnetism -2 -0.00 0.00 0.00 1 1 1 -0.25 0.25 0.25 1 1 1 diff --git a/tests/03_NAO_multik/40_NO_ELF/refELF.cube b/tests/03_NAO_multik/40_NO_ELF/refELF.cube deleted file mode 100644 index 7f1bbbd250..0000000000 --- a/tests/03_NAO_multik/40_NO_ELF/refELF.cube +++ /dev/null @@ -1,296 +0,0 @@ -STEP: 0 Cubefile created from ABACUS. Inner loop is z, followed by y and x -1 (nspin) -2 0.0 0.0 0.0 -12 0.000000 0.425000 0.425000 -12 0.425000 0.000000 0.425000 -12 0.425000 0.425000 0.000000 - 14 4.000000 0.000000 0.000000 0.000000 - 14 4.000000 2.550000 2.550000 2.550000 - 8.615e-08 1.082e-02 5.909e-01 9.349e-01 8.546e-01 5.278e-01 - 1.828e-01 5.278e-01 8.546e-01 9.349e-01 5.909e-01 1.082e-02 - 1.082e-02 9.066e-01 9.940e-01 9.810e-01 8.966e-01 4.310e-01 - 4.310e-01 8.966e-01 9.810e-01 9.940e-01 9.066e-01 1.082e-02 - 5.909e-01 9.940e-01 9.942e-01 9.810e-01 7.888e-01 2.217e-01 - 7.888e-01 9.810e-01 9.942e-01 9.940e-01 5.909e-01 2.875e-02 - 9.349e-01 9.810e-01 9.810e-01 9.349e-01 1.594e-01 1.594e-01 - 9.349e-01 9.810e-01 9.810e-01 9.349e-01 1.594e-01 1.594e-01 - 8.546e-01 8.966e-01 7.888e-01 1.594e-01 2.319e-02 1.594e-01 - 7.888e-01 8.966e-01 8.546e-01 4.340e-01 9.962e-02 4.340e-01 - 5.278e-01 4.310e-01 2.217e-01 1.594e-01 1.594e-01 2.217e-01 - 4.310e-01 5.278e-01 3.280e-01 8.992e-02 8.992e-02 3.280e-01 - 1.828e-01 4.310e-01 7.888e-01 9.349e-01 7.888e-01 4.310e-01 - 1.828e-01 6.095e-02 3.239e-02 1.966e-02 3.239e-02 6.095e-02 - 5.278e-01 8.966e-01 9.810e-01 9.810e-01 8.966e-01 5.278e-01 - 6.095e-02 1.847e-02 2.660e-02 2.660e-02 1.847e-02 6.095e-02 - 8.546e-01 9.810e-01 9.942e-01 9.810e-01 8.546e-01 3.280e-01 - 3.239e-02 2.660e-02 2.247e-02 2.660e-02 3.239e-02 3.280e-01 - 9.349e-01 9.940e-01 9.940e-01 9.349e-01 4.340e-01 8.992e-02 - 1.966e-02 2.660e-02 2.660e-02 1.966e-02 8.992e-02 4.340e-01 - 5.909e-01 9.066e-01 5.909e-01 1.594e-01 9.962e-02 8.992e-02 - 3.239e-02 1.847e-02 3.239e-02 8.992e-02 9.962e-02 1.594e-01 - 1.082e-02 1.082e-02 2.875e-02 1.594e-01 4.340e-01 3.280e-01 - 6.095e-02 6.095e-02 3.280e-01 4.340e-01 1.594e-01 2.875e-02 - 1.082e-02 9.066e-01 9.940e-01 9.810e-01 8.966e-01 4.310e-01 - 4.310e-01 8.966e-01 9.810e-01 9.940e-01 9.066e-01 1.082e-02 - 9.066e-01 9.992e-01 9.994e-01 9.942e-01 8.802e-01 3.150e-01 - 8.802e-01 9.942e-01 9.994e-01 9.992e-01 9.066e-01 5.300e-02 - 9.940e-01 9.994e-01 9.994e-01 9.940e-01 3.746e-01 3.746e-01 - 9.940e-01 9.994e-01 9.994e-01 9.940e-01 3.746e-01 3.746e-01 - 9.810e-01 9.942e-01 9.940e-01 5.909e-01 2.875e-02 5.909e-01 - 9.940e-01 9.942e-01 9.810e-01 7.888e-01 2.217e-01 7.888e-01 - 8.966e-01 8.802e-01 3.746e-01 2.875e-02 2.875e-02 3.746e-01 - 8.802e-01 8.966e-01 7.322e-01 2.353e-01 2.353e-01 7.322e-01 - 4.310e-01 3.150e-01 3.746e-01 5.909e-01 3.746e-01 3.150e-01 - 4.310e-01 4.009e-01 1.938e-01 7.019e-02 1.938e-01 4.009e-01 - 4.310e-01 8.802e-01 9.940e-01 9.940e-01 8.802e-01 4.310e-01 - 1.280e-01 5.829e-02 5.412e-02 5.412e-02 5.829e-02 1.280e-01 - 8.966e-01 9.942e-01 9.994e-01 9.942e-01 8.966e-01 4.009e-01 - 5.829e-02 6.644e-02 2.609e-01 6.644e-02 5.829e-02 4.009e-01 - 9.810e-01 9.994e-01 9.994e-01 9.810e-01 7.322e-01 1.938e-01 - 5.412e-02 2.609e-01 2.609e-01 5.412e-02 1.938e-01 7.322e-01 - 9.940e-01 9.992e-01 9.940e-01 7.888e-01 2.353e-01 7.019e-02 - 5.412e-02 6.644e-02 5.412e-02 7.019e-02 2.353e-01 7.888e-01 - 9.066e-01 9.066e-01 3.746e-01 2.217e-01 2.353e-01 1.938e-01 - 5.829e-02 5.829e-02 1.938e-01 2.353e-01 2.217e-01 3.746e-01 - 1.082e-02 5.300e-02 3.746e-01 7.888e-01 7.322e-01 4.009e-01 - 1.280e-01 4.009e-01 7.322e-01 7.888e-01 3.746e-01 5.300e-02 - 5.909e-01 9.940e-01 9.942e-01 9.810e-01 7.888e-01 2.217e-01 - 7.888e-01 9.810e-01 9.942e-01 9.940e-01 5.909e-01 2.875e-02 - 9.940e-01 9.994e-01 9.994e-01 9.940e-01 3.746e-01 3.746e-01 - 9.940e-01 9.994e-01 9.994e-01 9.940e-01 3.746e-01 3.746e-01 - 9.942e-01 9.994e-01 9.992e-01 9.066e-01 5.300e-02 9.066e-01 - 9.992e-01 9.994e-01 9.942e-01 8.802e-01 3.150e-01 8.802e-01 - 9.810e-01 9.940e-01 9.066e-01 1.082e-02 1.082e-02 9.066e-01 - 9.940e-01 9.810e-01 8.966e-01 4.310e-01 4.310e-01 8.966e-01 - 7.888e-01 3.746e-01 5.300e-02 1.082e-02 5.300e-02 3.746e-01 - 7.888e-01 7.322e-01 4.009e-01 1.280e-01 4.009e-01 7.322e-01 - 2.217e-01 3.746e-01 9.066e-01 9.066e-01 3.746e-01 2.217e-01 - 2.353e-01 1.938e-01 5.829e-02 5.829e-02 1.938e-01 2.353e-01 - 7.888e-01 9.940e-01 9.992e-01 9.940e-01 7.888e-01 2.353e-01 - 7.019e-02 5.412e-02 6.644e-02 5.412e-02 7.019e-02 2.353e-01 - 9.810e-01 9.994e-01 9.994e-01 9.810e-01 7.322e-01 1.938e-01 - 5.412e-02 2.609e-01 2.609e-01 5.412e-02 1.938e-01 7.322e-01 - 9.942e-01 9.994e-01 9.942e-01 8.966e-01 4.009e-01 5.829e-02 - 6.644e-02 2.609e-01 6.644e-02 5.829e-02 4.009e-01 8.966e-01 - 9.940e-01 9.940e-01 8.802e-01 4.310e-01 1.280e-01 5.829e-02 - 5.412e-02 5.412e-02 5.829e-02 1.280e-01 4.310e-01 8.802e-01 - 5.909e-01 3.746e-01 3.150e-01 4.310e-01 4.009e-01 1.938e-01 - 7.019e-02 1.938e-01 4.009e-01 4.310e-01 3.150e-01 3.746e-01 - 2.875e-02 3.746e-01 8.802e-01 8.966e-01 7.322e-01 2.353e-01 - 2.353e-01 7.322e-01 8.966e-01 8.802e-01 3.746e-01 2.875e-02 - 9.349e-01 9.810e-01 9.810e-01 9.349e-01 1.594e-01 1.594e-01 - 9.349e-01 9.810e-01 9.810e-01 9.349e-01 1.594e-01 1.594e-01 - 9.810e-01 9.942e-01 9.940e-01 5.909e-01 2.875e-02 5.909e-01 - 9.940e-01 9.942e-01 9.810e-01 7.888e-01 2.217e-01 7.888e-01 - 9.810e-01 9.940e-01 9.066e-01 1.082e-02 1.082e-02 9.066e-01 - 9.940e-01 9.810e-01 8.966e-01 4.310e-01 4.310e-01 8.966e-01 - 9.349e-01 5.909e-01 1.082e-02 8.615e-08 1.082e-02 5.909e-01 - 9.349e-01 8.546e-01 5.278e-01 1.828e-01 5.278e-01 8.546e-01 - 1.594e-01 2.875e-02 1.082e-02 1.082e-02 2.875e-02 1.594e-01 - 4.340e-01 3.280e-01 6.095e-02 6.095e-02 3.280e-01 4.340e-01 - 1.594e-01 5.909e-01 9.066e-01 5.909e-01 1.594e-01 9.962e-02 - 8.992e-02 3.239e-02 1.847e-02 3.239e-02 8.992e-02 9.962e-02 - 9.349e-01 9.940e-01 9.940e-01 9.349e-01 4.340e-01 8.992e-02 - 1.966e-02 2.660e-02 2.660e-02 1.966e-02 8.992e-02 4.340e-01 - 9.810e-01 9.942e-01 9.810e-01 8.546e-01 3.280e-01 3.239e-02 - 2.660e-02 2.247e-02 2.660e-02 3.239e-02 3.280e-01 8.546e-01 - 9.810e-01 9.810e-01 8.966e-01 5.278e-01 6.095e-02 1.847e-02 - 2.660e-02 2.660e-02 1.847e-02 6.095e-02 5.278e-01 8.966e-01 - 9.349e-01 7.888e-01 4.310e-01 1.828e-01 6.095e-02 3.239e-02 - 1.966e-02 3.239e-02 6.095e-02 1.828e-01 4.310e-01 7.888e-01 - 1.594e-01 2.217e-01 4.310e-01 5.278e-01 3.280e-01 8.992e-02 - 8.992e-02 3.280e-01 5.278e-01 4.310e-01 2.217e-01 1.594e-01 - 1.594e-01 7.888e-01 8.966e-01 8.546e-01 4.340e-01 9.962e-02 - 4.340e-01 8.546e-01 8.966e-01 7.888e-01 1.594e-01 2.319e-02 - 8.546e-01 8.966e-01 7.888e-01 1.594e-01 2.319e-02 1.594e-01 - 7.888e-01 8.966e-01 8.546e-01 4.340e-01 9.962e-02 4.340e-01 - 8.966e-01 8.802e-01 3.746e-01 2.875e-02 2.875e-02 3.746e-01 - 8.802e-01 8.966e-01 7.322e-01 2.353e-01 2.353e-01 7.322e-01 - 7.888e-01 3.746e-01 5.300e-02 1.082e-02 5.300e-02 3.746e-01 - 7.888e-01 7.322e-01 4.009e-01 1.280e-01 4.009e-01 7.322e-01 - 1.594e-01 2.875e-02 1.082e-02 1.082e-02 2.875e-02 1.594e-01 - 4.340e-01 3.280e-01 6.095e-02 6.095e-02 3.280e-01 4.340e-01 - 2.319e-02 2.875e-02 5.300e-02 2.875e-02 2.319e-02 6.768e-02 - 1.133e-01 3.014e-02 1.713e-02 3.014e-02 1.133e-01 6.768e-02 - 1.594e-01 3.746e-01 3.746e-01 1.594e-01 6.768e-02 4.501e-02 - 1.020e-02 4.964e-02 4.964e-02 1.020e-02 4.501e-02 6.768e-02 - 7.888e-01 8.802e-01 7.888e-01 4.340e-01 1.133e-01 1.020e-02 - 1.208e-02 1.178e-01 1.208e-02 1.020e-02 1.133e-01 4.340e-01 - 8.966e-01 8.966e-01 7.322e-01 3.280e-01 3.014e-02 4.964e-02 - 1.178e-01 1.178e-01 4.964e-02 3.014e-02 3.280e-01 7.322e-01 - 8.546e-01 7.322e-01 4.009e-01 6.095e-02 1.713e-02 4.964e-02 - 1.208e-02 4.964e-02 1.713e-02 6.095e-02 4.009e-01 7.322e-01 - 4.340e-01 2.353e-01 1.280e-01 6.095e-02 3.014e-02 1.020e-02 - 1.020e-02 3.014e-02 6.095e-02 1.280e-01 2.353e-01 4.340e-01 - 9.962e-02 2.353e-01 4.009e-01 3.280e-01 1.133e-01 4.501e-02 - 1.133e-01 3.280e-01 4.009e-01 2.353e-01 9.962e-02 6.768e-02 - 4.340e-01 7.322e-01 7.322e-01 4.340e-01 6.768e-02 6.768e-02 - 4.340e-01 7.322e-01 7.322e-01 4.340e-01 6.768e-02 6.768e-02 - 5.278e-01 4.310e-01 2.217e-01 1.594e-01 1.594e-01 2.217e-01 - 4.310e-01 5.278e-01 3.280e-01 8.992e-02 8.992e-02 3.280e-01 - 4.310e-01 3.150e-01 3.746e-01 5.909e-01 3.746e-01 3.150e-01 - 4.310e-01 4.009e-01 1.938e-01 7.019e-02 1.938e-01 4.009e-01 - 2.217e-01 3.746e-01 9.066e-01 9.066e-01 3.746e-01 2.217e-01 - 2.353e-01 1.938e-01 5.829e-02 5.829e-02 1.938e-01 2.353e-01 - 1.594e-01 5.909e-01 9.066e-01 5.909e-01 1.594e-01 9.962e-02 - 8.992e-02 3.239e-02 1.847e-02 3.239e-02 8.992e-02 9.962e-02 - 1.594e-01 3.746e-01 3.746e-01 1.594e-01 6.768e-02 4.501e-02 - 1.020e-02 4.964e-02 4.964e-02 1.020e-02 4.501e-02 6.768e-02 - 2.217e-01 3.150e-01 2.217e-01 9.962e-02 4.501e-02 3.843e-03 - 6.892e-03 1.394e-01 6.892e-03 3.843e-03 4.501e-02 9.962e-02 - 4.310e-01 4.310e-01 2.353e-01 8.992e-02 1.020e-02 6.892e-03 - 1.276e-02 1.276e-02 6.892e-03 1.020e-02 8.992e-02 2.353e-01 - 5.278e-01 4.009e-01 1.938e-01 3.239e-02 4.964e-02 1.394e-01 - 1.276e-02 1.394e-01 4.964e-02 3.239e-02 1.938e-01 4.009e-01 - 3.280e-01 1.938e-01 5.829e-02 1.847e-02 4.964e-02 6.892e-03 - 6.892e-03 4.964e-02 1.847e-02 5.829e-02 1.938e-01 3.280e-01 - 8.992e-02 7.019e-02 5.829e-02 3.239e-02 1.020e-02 3.843e-03 - 1.020e-02 3.239e-02 5.829e-02 7.019e-02 8.992e-02 1.133e-01 - 8.992e-02 1.938e-01 1.938e-01 8.992e-02 4.501e-02 4.501e-02 - 8.992e-02 1.938e-01 1.938e-01 8.992e-02 4.501e-02 4.501e-02 - 3.280e-01 4.009e-01 2.353e-01 9.962e-02 6.768e-02 9.962e-02 - 2.353e-01 4.009e-01 3.280e-01 1.133e-01 4.501e-02 1.133e-01 - 1.828e-01 4.310e-01 7.888e-01 9.349e-01 7.888e-01 4.310e-01 - 1.828e-01 6.095e-02 3.239e-02 1.966e-02 3.239e-02 6.095e-02 - 4.310e-01 8.802e-01 9.940e-01 9.940e-01 8.802e-01 4.310e-01 - 1.280e-01 5.829e-02 5.412e-02 5.412e-02 5.829e-02 1.280e-01 - 7.888e-01 9.940e-01 9.992e-01 9.940e-01 7.888e-01 2.353e-01 - 7.019e-02 5.412e-02 6.644e-02 5.412e-02 7.019e-02 2.353e-01 - 9.349e-01 9.940e-01 9.940e-01 9.349e-01 4.340e-01 8.992e-02 - 1.966e-02 2.660e-02 2.660e-02 1.966e-02 8.992e-02 4.340e-01 - 7.888e-01 8.802e-01 7.888e-01 4.340e-01 1.133e-01 1.020e-02 - 1.208e-02 1.178e-01 1.208e-02 1.020e-02 1.133e-01 4.340e-01 - 4.310e-01 4.310e-01 2.353e-01 8.992e-02 1.020e-02 6.892e-03 - 1.276e-02 1.276e-02 6.892e-03 1.020e-02 8.992e-02 2.353e-01 - 1.828e-01 1.280e-01 7.019e-02 1.966e-02 1.208e-02 1.276e-02 - 8.923e-05 1.276e-02 1.208e-02 1.966e-02 7.019e-02 1.280e-01 - 6.095e-02 5.829e-02 5.412e-02 2.660e-02 1.178e-01 1.276e-02 - 1.276e-02 1.178e-01 2.660e-02 5.412e-02 5.829e-02 6.095e-02 - 3.239e-02 5.412e-02 6.644e-02 2.660e-02 1.208e-02 6.892e-03 - 1.208e-02 2.660e-02 6.644e-02 5.412e-02 3.239e-02 3.014e-02 - 1.966e-02 5.412e-02 5.412e-02 1.966e-02 1.020e-02 1.020e-02 - 1.966e-02 5.412e-02 5.412e-02 1.966e-02 1.020e-02 1.020e-02 - 3.239e-02 5.829e-02 7.019e-02 8.992e-02 1.133e-01 8.992e-02 - 7.019e-02 5.829e-02 3.239e-02 1.020e-02 3.843e-03 1.020e-02 - 6.095e-02 1.280e-01 2.353e-01 4.340e-01 4.340e-01 2.353e-01 - 1.280e-01 6.095e-02 3.014e-02 1.020e-02 1.020e-02 3.014e-02 - 5.278e-01 8.966e-01 9.810e-01 9.810e-01 8.966e-01 5.278e-01 - 6.095e-02 1.847e-02 2.660e-02 2.660e-02 1.847e-02 6.095e-02 - 8.966e-01 9.942e-01 9.994e-01 9.942e-01 8.966e-01 4.009e-01 - 5.829e-02 6.644e-02 2.609e-01 6.644e-02 5.829e-02 4.009e-01 - 9.810e-01 9.994e-01 9.994e-01 9.810e-01 7.322e-01 1.938e-01 - 5.412e-02 2.609e-01 2.609e-01 5.412e-02 1.938e-01 7.322e-01 - 9.810e-01 9.942e-01 9.810e-01 8.546e-01 3.280e-01 3.239e-02 - 2.660e-02 2.247e-02 2.660e-02 3.239e-02 3.280e-01 8.546e-01 - 8.966e-01 8.966e-01 7.322e-01 3.280e-01 3.014e-02 4.964e-02 - 1.178e-01 1.178e-01 4.964e-02 3.014e-02 3.280e-01 7.322e-01 - 5.278e-01 4.009e-01 1.938e-01 3.239e-02 4.964e-02 1.394e-01 - 1.276e-02 1.394e-01 4.964e-02 3.239e-02 1.938e-01 4.009e-01 - 6.095e-02 5.829e-02 5.412e-02 2.660e-02 1.178e-01 1.276e-02 - 1.276e-02 1.178e-01 2.660e-02 5.412e-02 5.829e-02 6.095e-02 - 1.847e-02 6.644e-02 2.609e-01 2.247e-02 1.178e-01 1.394e-01 - 1.178e-01 2.247e-02 2.609e-01 6.644e-02 1.847e-02 1.713e-02 - 2.660e-02 2.609e-01 2.609e-01 2.660e-02 4.964e-02 4.964e-02 - 2.660e-02 2.609e-01 2.609e-01 2.660e-02 4.964e-02 4.964e-02 - 2.660e-02 6.644e-02 5.412e-02 3.239e-02 3.014e-02 3.239e-02 - 5.412e-02 6.644e-02 2.660e-02 1.208e-02 6.892e-03 1.208e-02 - 1.847e-02 5.829e-02 1.938e-01 3.280e-01 3.280e-01 1.938e-01 - 5.829e-02 1.847e-02 4.964e-02 6.892e-03 6.892e-03 4.964e-02 - 6.095e-02 4.009e-01 7.322e-01 8.546e-01 7.322e-01 4.009e-01 - 6.095e-02 1.713e-02 4.964e-02 1.208e-02 4.964e-02 1.713e-02 - 8.546e-01 9.810e-01 9.942e-01 9.810e-01 8.546e-01 3.280e-01 - 3.239e-02 2.660e-02 2.247e-02 2.660e-02 3.239e-02 3.280e-01 - 9.810e-01 9.994e-01 9.994e-01 9.810e-01 7.322e-01 1.938e-01 - 5.412e-02 2.609e-01 2.609e-01 5.412e-02 1.938e-01 7.322e-01 - 9.942e-01 9.994e-01 9.942e-01 8.966e-01 4.009e-01 5.829e-02 - 6.644e-02 2.609e-01 6.644e-02 5.829e-02 4.009e-01 8.966e-01 - 9.810e-01 9.810e-01 8.966e-01 5.278e-01 6.095e-02 1.847e-02 - 2.660e-02 2.660e-02 1.847e-02 6.095e-02 5.278e-01 8.966e-01 - 8.546e-01 7.322e-01 4.009e-01 6.095e-02 1.713e-02 4.964e-02 - 1.208e-02 4.964e-02 1.713e-02 6.095e-02 4.009e-01 7.322e-01 - 3.280e-01 1.938e-01 5.829e-02 1.847e-02 4.964e-02 6.892e-03 - 6.892e-03 4.964e-02 1.847e-02 5.829e-02 1.938e-01 3.280e-01 - 3.239e-02 5.412e-02 6.644e-02 2.660e-02 1.208e-02 6.892e-03 - 1.208e-02 2.660e-02 6.644e-02 5.412e-02 3.239e-02 3.014e-02 - 2.660e-02 2.609e-01 2.609e-01 2.660e-02 4.964e-02 4.964e-02 - 2.660e-02 2.609e-01 2.609e-01 2.660e-02 4.964e-02 4.964e-02 - 2.247e-02 2.609e-01 6.644e-02 1.847e-02 1.713e-02 1.847e-02 - 6.644e-02 2.609e-01 2.247e-02 1.178e-01 1.394e-01 1.178e-01 - 2.660e-02 5.412e-02 5.829e-02 6.095e-02 6.095e-02 5.829e-02 - 5.412e-02 2.660e-02 1.178e-01 1.276e-02 1.276e-02 1.178e-01 - 3.239e-02 1.938e-01 4.009e-01 5.278e-01 4.009e-01 1.938e-01 - 3.239e-02 4.964e-02 1.394e-01 1.276e-02 1.394e-01 4.964e-02 - 3.280e-01 7.322e-01 8.966e-01 8.966e-01 7.322e-01 3.280e-01 - 3.014e-02 4.964e-02 1.178e-01 1.178e-01 4.964e-02 3.014e-02 - 9.349e-01 9.940e-01 9.940e-01 9.349e-01 4.340e-01 8.992e-02 - 1.966e-02 2.660e-02 2.660e-02 1.966e-02 8.992e-02 4.340e-01 - 9.940e-01 9.992e-01 9.940e-01 7.888e-01 2.353e-01 7.019e-02 - 5.412e-02 6.644e-02 5.412e-02 7.019e-02 2.353e-01 7.888e-01 - 9.940e-01 9.940e-01 8.802e-01 4.310e-01 1.280e-01 5.829e-02 - 5.412e-02 5.412e-02 5.829e-02 1.280e-01 4.310e-01 8.802e-01 - 9.349e-01 7.888e-01 4.310e-01 1.828e-01 6.095e-02 3.239e-02 - 1.966e-02 3.239e-02 6.095e-02 1.828e-01 4.310e-01 7.888e-01 - 4.340e-01 2.353e-01 1.280e-01 6.095e-02 3.014e-02 1.020e-02 - 1.020e-02 3.014e-02 6.095e-02 1.280e-01 2.353e-01 4.340e-01 - 8.992e-02 7.019e-02 5.829e-02 3.239e-02 1.020e-02 3.843e-03 - 1.020e-02 3.239e-02 5.829e-02 7.019e-02 8.992e-02 1.133e-01 - 1.966e-02 5.412e-02 5.412e-02 1.966e-02 1.020e-02 1.020e-02 - 1.966e-02 5.412e-02 5.412e-02 1.966e-02 1.020e-02 1.020e-02 - 2.660e-02 6.644e-02 5.412e-02 3.239e-02 3.014e-02 3.239e-02 - 5.412e-02 6.644e-02 2.660e-02 1.208e-02 6.892e-03 1.208e-02 - 2.660e-02 5.412e-02 5.829e-02 6.095e-02 6.095e-02 5.829e-02 - 5.412e-02 2.660e-02 1.178e-01 1.276e-02 1.276e-02 1.178e-01 - 1.966e-02 7.019e-02 1.280e-01 1.828e-01 1.280e-01 7.019e-02 - 1.966e-02 1.208e-02 1.276e-02 8.923e-05 1.276e-02 1.208e-02 - 8.992e-02 2.353e-01 4.310e-01 4.310e-01 2.353e-01 8.992e-02 - 1.020e-02 6.892e-03 1.276e-02 1.276e-02 6.892e-03 1.020e-02 - 4.340e-01 7.888e-01 8.802e-01 7.888e-01 4.340e-01 1.133e-01 - 1.020e-02 1.208e-02 1.178e-01 1.208e-02 1.020e-02 1.133e-01 - 5.909e-01 9.066e-01 5.909e-01 1.594e-01 9.962e-02 8.992e-02 - 3.239e-02 1.847e-02 3.239e-02 8.992e-02 9.962e-02 1.594e-01 - 9.066e-01 9.066e-01 3.746e-01 2.217e-01 2.353e-01 1.938e-01 - 5.829e-02 5.829e-02 1.938e-01 2.353e-01 2.217e-01 3.746e-01 - 5.909e-01 3.746e-01 3.150e-01 4.310e-01 4.009e-01 1.938e-01 - 7.019e-02 1.938e-01 4.009e-01 4.310e-01 3.150e-01 3.746e-01 - 1.594e-01 2.217e-01 4.310e-01 5.278e-01 3.280e-01 8.992e-02 - 8.992e-02 3.280e-01 5.278e-01 4.310e-01 2.217e-01 1.594e-01 - 9.962e-02 2.353e-01 4.009e-01 3.280e-01 1.133e-01 4.501e-02 - 1.133e-01 3.280e-01 4.009e-01 2.353e-01 9.962e-02 6.768e-02 - 8.992e-02 1.938e-01 1.938e-01 8.992e-02 4.501e-02 4.501e-02 - 8.992e-02 1.938e-01 1.938e-01 8.992e-02 4.501e-02 4.501e-02 - 3.239e-02 5.829e-02 7.019e-02 8.992e-02 1.133e-01 8.992e-02 - 7.019e-02 5.829e-02 3.239e-02 1.020e-02 3.843e-03 1.020e-02 - 1.847e-02 5.829e-02 1.938e-01 3.280e-01 3.280e-01 1.938e-01 - 5.829e-02 1.847e-02 4.964e-02 6.892e-03 6.892e-03 4.964e-02 - 3.239e-02 1.938e-01 4.009e-01 5.278e-01 4.009e-01 1.938e-01 - 3.239e-02 4.964e-02 1.394e-01 1.276e-02 1.394e-01 4.964e-02 - 8.992e-02 2.353e-01 4.310e-01 4.310e-01 2.353e-01 8.992e-02 - 1.020e-02 6.892e-03 1.276e-02 1.276e-02 6.892e-03 1.020e-02 - 9.962e-02 2.217e-01 3.150e-01 2.217e-01 9.962e-02 4.501e-02 - 3.843e-03 6.892e-03 1.394e-01 6.892e-03 3.843e-03 4.501e-02 - 1.594e-01 3.746e-01 3.746e-01 1.594e-01 6.768e-02 4.501e-02 - 1.020e-02 4.964e-02 4.964e-02 1.020e-02 4.501e-02 6.768e-02 - 1.082e-02 1.082e-02 2.875e-02 1.594e-01 4.340e-01 3.280e-01 - 6.095e-02 6.095e-02 3.280e-01 4.340e-01 1.594e-01 2.875e-02 - 1.082e-02 5.300e-02 3.746e-01 7.888e-01 7.322e-01 4.009e-01 - 1.280e-01 4.009e-01 7.322e-01 7.888e-01 3.746e-01 5.300e-02 - 2.875e-02 3.746e-01 8.802e-01 8.966e-01 7.322e-01 2.353e-01 - 2.353e-01 7.322e-01 8.966e-01 8.802e-01 3.746e-01 2.875e-02 - 1.594e-01 7.888e-01 8.966e-01 8.546e-01 4.340e-01 9.962e-02 - 4.340e-01 8.546e-01 8.966e-01 7.888e-01 1.594e-01 2.319e-02 - 4.340e-01 7.322e-01 7.322e-01 4.340e-01 6.768e-02 6.768e-02 - 4.340e-01 7.322e-01 7.322e-01 4.340e-01 6.768e-02 6.768e-02 - 3.280e-01 4.009e-01 2.353e-01 9.962e-02 6.768e-02 9.962e-02 - 2.353e-01 4.009e-01 3.280e-01 1.133e-01 4.501e-02 1.133e-01 - 6.095e-02 1.280e-01 2.353e-01 4.340e-01 4.340e-01 2.353e-01 - 1.280e-01 6.095e-02 3.014e-02 1.020e-02 1.020e-02 3.014e-02 - 6.095e-02 4.009e-01 7.322e-01 8.546e-01 7.322e-01 4.009e-01 - 6.095e-02 1.713e-02 4.964e-02 1.208e-02 4.964e-02 1.713e-02 - 3.280e-01 7.322e-01 8.966e-01 8.966e-01 7.322e-01 3.280e-01 - 3.014e-02 4.964e-02 1.178e-01 1.178e-01 4.964e-02 3.014e-02 - 4.340e-01 7.888e-01 8.802e-01 7.888e-01 4.340e-01 1.133e-01 - 1.020e-02 1.208e-02 1.178e-01 1.208e-02 1.020e-02 1.133e-01 - 1.594e-01 3.746e-01 3.746e-01 1.594e-01 6.768e-02 4.501e-02 - 1.020e-02 4.964e-02 4.964e-02 1.020e-02 4.501e-02 6.768e-02 - 2.875e-02 5.300e-02 2.875e-02 2.319e-02 6.768e-02 1.133e-01 - 3.014e-02 1.713e-02 3.014e-02 1.133e-01 6.768e-02 2.319e-02 diff --git a/tests/03_NAO_multik/40_NO_ELF/result.ref b/tests/03_NAO_multik/40_NO_ELF/result.ref deleted file mode 100644 index 2ed696d713..0000000000 --- a/tests/03_NAO_multik/40_NO_ELF/result.ref +++ /dev/null @@ -1,7 +0,0 @@ -etotref -196.6254053459514 -etotperatomref -98.3127026730 -ComparePot1_pass 0 -pointgroupref T_d -spacegroupref O_h -nksibzref 1 -totaltimeref 0.94 diff --git a/tests/03_NAO_multik/41_NO_KP_MSST/INPUT b/tests/03_NAO_multik/41_NO_KP_MSST/INPUT deleted file mode 100644 index 1a90f706c0..0000000000 --- a/tests/03_NAO_multik/41_NO_KP_MSST/INPUT +++ /dev/null @@ -1,35 +0,0 @@ -INPUT_PARAMETERS -#Parameters (General) -suffix autotest -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB - -nbands 8 -calculation md -read_file_dir ./ - -#Parameters (Accuracy) -ecutwfc 10 -scf_nmax 20 -scf_thr 1e-7 - -basis_type lcao -md_nstep 2 - -cal_stress 1 -cal_force 1 - -ks_solver scalapack_gvx -mixing_type broyden -mixing_beta 0.7 -smearing_method gauss -smearing_sigma 0.001 - -md_type msst -md_tfirst 10 -md_dt 1 -md_restart 0 -init_vel 1 - -msst_qmass 1 -msst_vel 10 diff --git a/tests/03_NAO_multik/41_NO_KP_MSST/result.ref b/tests/03_NAO_multik/41_NO_KP_MSST/result.ref deleted file mode 100644 index ffa0d6b1f4..0000000000 --- a/tests/03_NAO_multik/41_NO_KP_MSST/result.ref +++ /dev/null @@ -1,5 +0,0 @@ -etotref -207.6323459951594 -etotperatomref -103.8161729976 -totalforceref 2.520068 -totalstressref 87.760114 -totaltimeref 2.27 diff --git a/tests/03_NAO_multik/42_NO_KP_MSST2/INPUT b/tests/03_NAO_multik/42_NO_KP_MSST2/INPUT deleted file mode 100644 index 5a7d5ceaf5..0000000000 --- a/tests/03_NAO_multik/42_NO_KP_MSST2/INPUT +++ /dev/null @@ -1,35 +0,0 @@ -INPUT_PARAMETERS -#Parameters (General) -suffix autotest -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB - -nbands 8 -calculation md - -#Parameters (Accuracy) -ecutwfc 10 -scf_nmax 20 -scf_thr 1e-7 - -basis_type lcao -ks_solver scalapack_gvx - -mixing_type broyden -mixing_beta 0.7 - -smearing_method gauss -smearing_sigma 0.001 - -cal_force 1 -cal_stress 1 - -md_nstep 2 -md_type msst -md_tfirst 10 -md_dt 1 -md_restart 0 -md_prec_level 2 -init_vel 1 -msst_qmass 1 -msst_vel 10 diff --git a/tests/03_NAO_multik/42_NO_KP_MSST2/README b/tests/03_NAO_multik/42_NO_KP_MSST2/README deleted file mode 100644 index 6161e88332..0000000000 --- a/tests/03_NAO_multik/42_NO_KP_MSST2/README +++ /dev/null @@ -1 +0,0 @@ -This test for MD-MSST level=2 of Si2 crystal, 2 step diff --git a/tests/03_NAO_multik/42_NO_KP_MSST2/STRU b/tests/03_NAO_multik/42_NO_KP_MSST2/STRU deleted file mode 100644 index 2c8b2d9559..0000000000 --- a/tests/03_NAO_multik/42_NO_KP_MSST2/STRU +++ /dev/null @@ -1,22 +0,0 @@ -ATOMIC_SPECIES -Si 1 Si_ONCV_PBE-1.0.upf - -NUMERICAL_ORBITAL -Si_gga_8au_60Ry_2s2p1d.orb - -LATTICE_CONSTANT -10.2 - -LATTICE_VECTORS -1 0 0 -0 1 0 -0 0 1 - -ATOMIC_POSITIONS -Cartesian - -Si #label -0 #magnetism -2 #number of atoms -0 0 0 m 1 1 1 v -0.00016026383234 1.88587389656e-05 4.31519285331e-06 -0.241 0.255 0.250999999999 m 1 1 1 v 0.00016026383234 -1.88587389656e-05 -4.31519285331e-06 diff --git a/tests/03_NAO_multik/42_NO_KP_MSST2/result.ref b/tests/03_NAO_multik/42_NO_KP_MSST2/result.ref deleted file mode 100644 index ffa0d6b1f4..0000000000 --- a/tests/03_NAO_multik/42_NO_KP_MSST2/result.ref +++ /dev/null @@ -1,5 +0,0 @@ -etotref -207.6323459951594 -etotperatomref -103.8161729976 -totalforceref 2.520068 -totalstressref 87.760114 -totaltimeref 2.27 diff --git a/tests/03_NAO_multik/43_NO_KP_NVT/INPUT b/tests/03_NAO_multik/43_NO_KP_NVT/INPUT deleted file mode 100644 index aeaf868a86..0000000000 --- a/tests/03_NAO_multik/43_NO_KP_NVT/INPUT +++ /dev/null @@ -1,31 +0,0 @@ -INPUT_PARAMETERS -#Parameters (General) -suffix autotest -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB - -nbands 8 -calculation md -read_file_dir ./ - -#Parameters (Accuracy) -ecutwfc 10 -scf_nmax 20 -scf_thr 1e-7 - -basis_type lcao -md_nstep 2 - -cal_stress 1 -cal_force 1 - -ks_solver scalapack_gvx -mixing_type broyden -mixing_beta 0.7 - -md_tchain 4 -md_type nvt -md_tfirst 10 -md_dt 1 -md_restart 0 -init_vel 1 diff --git a/tests/03_NAO_multik/43_NO_KP_NVT/result.ref b/tests/03_NAO_multik/43_NO_KP_NVT/result.ref deleted file mode 100644 index 267cfc747e..0000000000 --- a/tests/03_NAO_multik/43_NO_KP_NVT/result.ref +++ /dev/null @@ -1,5 +0,0 @@ -etotref -204.1399519257427 -etotperatomref -102.0699759629 -totalforceref 1.226368 -totalstressref 1450.704608 -totaltimeref 5.85 diff --git a/tests/03_NAO_multik/44_NO_KP_MD_OW/INPUT b/tests/03_NAO_multik/44_NO_KP_MD_OW/INPUT deleted file mode 100644 index 15816b9f56..0000000000 --- a/tests/03_NAO_multik/44_NO_KP_MD_OW/INPUT +++ /dev/null @@ -1,36 +0,0 @@ -INPUT_PARAMETERS - -#Parameters (General) -suffix autotest -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB - -nbands 8 -calculation md -read_file_dir ./ - -#Parameters (Accuracy) -ecutwfc 10 -scf_nmax 20 -scf_thr 1e-7 - -basis_type lcao -md_nstep 2 - -cal_stress 1 -cal_force 1 - -ks_solver scalapack_gvx -mixing_type broyden -mixing_beta 0.7 -mixing_gg0 0.0 - -out_wfc_lcao 1 -out_interval 2 -out_app_flag 0 - -md_type nve -md_tfirst 10 -md_dt 1 -md_restart 0 -init_vel 1 diff --git a/tests/03_NAO_multik/44_NO_KP_MD_OW/result.ref b/tests/03_NAO_multik/44_NO_KP_MD_OW/result.ref deleted file mode 100644 index 274543ff46..0000000000 --- a/tests/03_NAO_multik/44_NO_KP_MD_OW/result.ref +++ /dev/null @@ -1,6 +0,0 @@ -etotref -196.6232944871745 -etotperatomref -98.3116472436 -totalforceref 0.975500 -totalstressref 1500.928040 -Compare_wfc_lcao_pass 0 -totaltimeref 5.81 diff --git a/tests/03_NAO_multik/45_NO_KP_QO/INPUT b/tests/03_NAO_multik/45_NO_KP_QO/INPUT deleted file mode 100644 index 682f1df6b3..0000000000 --- a/tests/03_NAO_multik/45_NO_KP_QO/INPUT +++ /dev/null @@ -1,16 +0,0 @@ -INPUT_PARAMETERS -suffix autotest -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB - -calculation scf -ecutwfc 20 -scf_nmax 100 -scf_thr 1e-6 -basis_type lcao - -qo_switch 1 # turn on QO analysis output -qo_basis pswfc # use pseudowavefunction read from pseudopotentials -qo_screening_coeff 0.5 # controls the shrink of AO basis, larger value means tighter basis -qo_thr 1e-6 # controls the accuracy of QO basis -symmetry -1 # to ensure matrix elements of symmetry kpoints can be cancelled diff --git a/tests/03_NAO_multik/46_NO_0ATOM/INPUT b/tests/03_NAO_multik/46_NO_0ATOM/INPUT deleted file mode 100644 index abe15ed4a0..0000000000 --- a/tests/03_NAO_multik/46_NO_0ATOM/INPUT +++ /dev/null @@ -1,27 +0,0 @@ -INPUT_PARAMETERS -#Parameters (1.General) -suffix autotest -calculation scf - -nbands 6 -symmetry 0 -pseudo_dir ../../PP_ORB/ -orbital_dir ../../PP_ORB/ - -#Parameters (2.Iteration) -ecutwfc 20 - -#Parameters (3.Basis) -basis_type lcao - -#Parameters (4.Smearing) -smearing_method gauss -smearing_sigma 0.0002 - -#Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.7 -cal_force 1 -test_force 1 -cal_stress 1 -test_stress 1 diff --git a/tests/03_NAO_multik/47_NO_KP_SO_OD/INPUT b/tests/03_NAO_multik/47_NO_KP_SO_OD/INPUT deleted file mode 100644 index 03ff221bdd..0000000000 --- a/tests/03_NAO_multik/47_NO_KP_SO_OD/INPUT +++ /dev/null @@ -1,33 +0,0 @@ -INPUT_PARAMETERS -#Parameters (General) -suffix autotest -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB - -#nbands 40 -gamma_only 0 - -calculation scf - -smearing_method gaussian -smearing_sigma 0.001 -#Parameters (3.PW) -ecutwfc 10 -scf_thr 1e-6 -scf_nmax 100 - -#noncolin 1 -lspinorb 1 -cal_force 1 -cal_stress 1 - -#Parameters (LCAO) -basis_type lcao -ks_solver scalapack_gvx -out_dmk 0 -pw_diag_thr 0.00001 - -mixing_type pulay -mixing_beta 0.7 - -out_dos 1 diff --git a/tests/03_NAO_multik/48_NO_KP_symm/INPUT b/tests/03_NAO_multik/48_NO_KP_symm/INPUT deleted file mode 100644 index b88298f0db..0000000000 --- a/tests/03_NAO_multik/48_NO_KP_symm/INPUT +++ /dev/null @@ -1,28 +0,0 @@ -INPUT_PARAMETERS -#Parameters (1.General) -suffix autotest -calculation scf -ntype 1 -#nbands 46 -symmetry 1 -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB - -#Parameters (2.Iteration) -ecutwfc 10 -scf_thr 1e-1 -scf_nmax 1 -cal_force 1 -cal_stress 1 -#Parameters (3.Basis) -basis_type lcao - -#Parameters (4.Smearing) -smearing_method gauss -smearing_sigma 0.002 - -#Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.1 -ks_solver genelpa -symmetry_prec 1e-5 \ No newline at end of file diff --git a/tests/03_NAO_multik/49_NO_KP_CR_VDW3ABC/INPUT b/tests/03_NAO_multik/49_NO_KP_CR_VDW3ABC/INPUT deleted file mode 100644 index 83222fd70c..0000000000 --- a/tests/03_NAO_multik/49_NO_KP_CR_VDW3ABC/INPUT +++ /dev/null @@ -1,20 +0,0 @@ -INPUT_PARAMETERS -ecutwfc 10 -scf_thr 1e-04 -scf_nmax 400 -basis_type lcao -ks_solver scalapack_gvx -smearing_method gaussian -relax_nmax 1 -smearing_sigma 0.02 -mixing_type broyden -mixing_beta 0.4 -vdw_method d3_0 -vdw_abc 1 -suffix autotest -calculation scf -cal_force 1 -cal_stress 1 -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB -dft_functional pbe diff --git a/tests/03_NAO_multik/50_NO_KP_CR_VDW3BJ/INPUT b/tests/03_NAO_multik/50_NO_KP_CR_VDW3BJ/INPUT deleted file mode 100644 index a0753cdbc6..0000000000 --- a/tests/03_NAO_multik/50_NO_KP_CR_VDW3BJ/INPUT +++ /dev/null @@ -1,23 +0,0 @@ -INPUT_PARAMETERS - -ecutwfc 10 -scf_thr 1e-06 -scf_nmax 400 -basis_type lcao -ks_solver scalapack_gvx -smearing_method gaussian -relax_nmax 1 -smearing_sigma 0.02 -mixing_type broyden -mixing_beta 0.7 -vdw_method d3_bj -fixed_axes c -force_thr_ev 0.005 -stress_thr 0.1 -suffix autotest -calculation cell-relax -cal_force 1 -cal_stress 1 -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB -dft_functional pbe diff --git a/tests/03_NAO_multik/51_NO_KP_CR_VDW2/INPUT b/tests/03_NAO_multik/51_NO_KP_CR_VDW2/INPUT deleted file mode 100644 index a66be66b03..0000000000 --- a/tests/03_NAO_multik/51_NO_KP_CR_VDW2/INPUT +++ /dev/null @@ -1,22 +0,0 @@ -INPUT_PARAMETERS - -ecutwfc 10 -scf_thr 1e-06 -scf_nmax 400 -basis_type lcao -ks_solver scalapack_gvx -smearing_method gaussian -relax_nmax 1 -smearing_sigma 0.02 -mixing_type broyden -mixing_beta 0.7 -vdw_method d2 -fixed_axes c -force_thr_ev 0.005 -stress_thr 0.1 -suffix autotest -calculation cell-relax -cal_force 1 -cal_stress 1 -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB diff --git a/tests/03_NAO_multik/52_NO_KP_CR_VDW3/INPUT b/tests/03_NAO_multik/52_NO_KP_CR_VDW3/INPUT deleted file mode 100644 index 62b007f191..0000000000 --- a/tests/03_NAO_multik/52_NO_KP_CR_VDW3/INPUT +++ /dev/null @@ -1,23 +0,0 @@ -INPUT_PARAMETERS - -ecutwfc 10 -scf_thr 1e-06 -scf_nmax 400 -basis_type lcao -ks_solver scalapack_gvx -smearing_method gaussian -relax_nmax 1 -smearing_sigma 0.02 -mixing_type broyden -mixing_beta 0.7 -vdw_method d3_0 -fixed_axes c -force_thr_ev 0.005 -stress_thr 0.1 -suffix autotest -calculation cell-relax -cal_force 1 -cal_stress 1 -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB -dft_functional pbe diff --git a/tests/03_NAO_multik/53_NO_PK_URAMP/INPUT b/tests/03_NAO_multik/53_NO_PK_URAMP/INPUT deleted file mode 100644 index bc546f2806..0000000000 --- a/tests/03_NAO_multik/53_NO_PK_URAMP/INPUT +++ /dev/null @@ -1,36 +0,0 @@ -INPUT_PARAMETERS -suffix autotest -nbands 20 - -calculation scf -ecutwfc 10 -scf_thr 1.0e-6 -scf_nmax 500 -out_chg 0 - -smearing_method gaussian -smearing_sigma 0.01 - -cal_force 1 -cal_stress 1 - -mixing_type broyden -mixing_beta 0.2 -mixing_restart 5e-3 -mixing_dmr 1 -mixing_ndim 15 - -ks_solver genelpa -basis_type lcao -gamma_only 0 -symmetry 0 -nspin 2 - -#Parameters of DFT+U -dft_plus_u 1 -orbital_corr 2 -1 -hubbard_u 5.0 0.0 -uramping 2.5 -onsite_radius 5.0 -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB diff --git a/tests/03_NAO_multik/54_NO_PK_PU/INPUT b/tests/03_NAO_multik/54_NO_PK_PU/INPUT deleted file mode 100644 index afcc106f98..0000000000 --- a/tests/03_NAO_multik/54_NO_PK_PU/INPUT +++ /dev/null @@ -1,43 +0,0 @@ -INPUT_PARAMETERS -suffix autotest -nbands 28 - -calculation scf -ecutwfc 10 -scf_thr 1.0e-4 -scf_nmax 50 -out_chg 0 - -#init_chg file -#out_dos 1 -#dos_sigma 0.05 -#out_band 1 - -smearing_method gaussian -smearing_sigma 0.01 - -cal_force 1 -cal_stress 1 -#force_thr_ev 0.01 -#relax_method cg -#relax_bfgs_init 0.5 - -mixing_type broyden -mixing_beta 0.4 -mixing_restart 1e-3 -mixing_dmr 1 -#mixing_gg0 1.0 - -ks_solver scalapack_gvx -basis_type lcao -gamma_only 0 -symmetry 0 -nspin 2 - -#Parameter DFT+U -dft_plus_u 1 -orbital_corr 2 -1 -hubbard_u 5.0 0.0 -onsite_radius 5.0 -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB diff --git a/tests/03_NAO_multik/55_NO_PK_PU_S1/INPUT b/tests/03_NAO_multik/55_NO_PK_PU_S1/INPUT deleted file mode 100644 index a78d18ab6a..0000000000 --- a/tests/03_NAO_multik/55_NO_PK_PU_S1/INPUT +++ /dev/null @@ -1,43 +0,0 @@ -INPUT_PARAMETERS -suffix autotest -nbands 25 - -calculation scf -ecutwfc 3 -scf_thr 1.0e-6 -scf_nmax 50 -out_chg 0 - -#init_chg file -#out_dos 1 -#dos_sigma 0.05 -#out_band 1 - -smearing_method gaussian -smearing_sigma 0.01 - -cal_force 1 -cal_stress 1 -#force_thr_ev 0.01 -#relax_method cg -#relax_bfgs_init 0.5 - -mixing_type broyden -mixing_beta 0.4 -mixing_restart 1e-3 -mixing_dmr 1 -#mixing_gg0 1.0 - -ks_solver scalapack_gvx -basis_type lcao -gamma_only 0 -symmetry 0 -nspin 1 - -#Parameters of DFT+U -dft_plus_u 1 -orbital_corr 2 -1 -hubbard_u 5.0 0.0 -onsite_radius 5.0 -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB diff --git a/tests/03_NAO_multik/56_NO_PK_PU_SO/INPUT b/tests/03_NAO_multik/56_NO_PK_PU_SO/INPUT deleted file mode 100644 index 73ef70f948..0000000000 --- a/tests/03_NAO_multik/56_NO_PK_PU_SO/INPUT +++ /dev/null @@ -1,43 +0,0 @@ -INPUT_PARAMETERS -suffix autotest -nbands 40 - -calculation scf -ecutwfc 10 -scf_thr 1.0e-4 -scf_nmax 50 -out_chg 0 - -#init_chg file -#out_dos 1 -#dos_sigma 0.05 -#out_band 1 - -smearing_method gaussian -smearing_sigma 0.01 - -#force_thr_ev 0.01 -#relax_method cg -#relax_bfgs_init 0.5 - -mixing_type pulay -mixing_beta 0.3 -mixing_restart 1e-3 -mixing_dmr 1 -mixing_gg0 1.1 - -ks_solver scalapack_gvx -basis_type lcao -gamma_only 0 -noncolin 1 -lspinorb 1 -cal_force 1 -cal_stress 1 - -#Parameter DFT+U -dft_plus_u 1 -orbital_corr 2 -hubbard_u 5.0 -onsite_radius 5.0 -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB diff --git a/tests/03_NAO_multik/57_NO_MD_1O/INPUT b/tests/03_NAO_multik/57_NO_MD_1O/INPUT deleted file mode 100644 index f0c93e9168..0000000000 --- a/tests/03_NAO_multik/57_NO_MD_1O/INPUT +++ /dev/null @@ -1,32 +0,0 @@ -INPUT_PARAMETERS -#Parameters (General) -suffix autotest - -nbands 8 -calculation md - -#Parameters (Accuracy) -ecutwfc 10 -scf_nmax 50 -scf_thr 1.0e-6 - -basis_type lcao -md_nstep 2 - -cal_stress 1 -cal_force 1 - -smearing_method gaussian -smearing_sigma 0.002 -mixing_type broyden -mixing_beta 0.7 - -md_tfirst 10 -md_tfreq 0.1 -init_vel 1 - -chg_extrap first-order - -read_file_dir ./ -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB diff --git a/tests/03_NAO_multik/57_NO_MD_1O/result.ref b/tests/03_NAO_multik/57_NO_MD_1O/result.ref deleted file mode 100644 index a0dd701901..0000000000 --- a/tests/03_NAO_multik/57_NO_MD_1O/result.ref +++ /dev/null @@ -1,5 +0,0 @@ -etotref -203.9507557549999 -etotperatomref -101.9753778775 -totalforceref 6.437138 -totalstressref 1540.841015 -totaltimeref 6.35 diff --git a/tests/03_NAO_multik/58_NO_MD_2O/INPUT b/tests/03_NAO_multik/58_NO_MD_2O/INPUT deleted file mode 100644 index 3ac7645b66..0000000000 --- a/tests/03_NAO_multik/58_NO_MD_2O/INPUT +++ /dev/null @@ -1,34 +0,0 @@ -INPUT_PARAMETERS -#Parameters (General) -suffix autotest - -nbands 8 -calculation md - -#Parameters (Accuracy) -ecutwfc 10 -scf_nmax 50 -scf_thr 1.0e-6 - -basis_type lcao -md_nstep 3 - -cal_stress 1 -stress_thr 1e-6 -cal_force 1 -force_thr_ev 1.0e-3 - -smearing_method gaussian -smearing_sigma 0.002 -mixing_type broyden -mixing_beta 0.7 - -md_tfreq 0.1 -md_tfirst 10 -init_vel 1 - -chg_extrap second-order - -read_file_dir ./ -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB diff --git a/tests/03_NAO_multik/58_NO_MD_2O/STRU b/tests/03_NAO_multik/58_NO_MD_2O/STRU deleted file mode 100644 index c861fd21f8..0000000000 --- a/tests/03_NAO_multik/58_NO_MD_2O/STRU +++ /dev/null @@ -1,22 +0,0 @@ -ATOMIC_SPECIES -Si 1 Si_ONCV_PBE-1.0.upf - -NUMERICAL_ORBITAL -Si_gga_8au_60Ry_2s2p1d.orb - -LATTICE_CONSTANT -10.2 - -LATTICE_VECTORS -0 0.5 0.5 #latvec1 -0.5 0 0.5 #latvec2 -0.5 0.5 0 #latvec3 - -ATOMIC_POSITIONS -Cartesian - -Si #label -0 #magnetism -2 #number of atoms -0 0 0 m 1 1 1 v 0.000120809958223 -0.0001067217544 8.61336248207e-06 -0.299999999999 0.25 0.25 m 1 1 1 v -0.000120809958223 0.0001067217544 -8.61336248207e-06 diff --git a/tests/03_NAO_multik/58_NO_MD_2O/result.ref b/tests/03_NAO_multik/58_NO_MD_2O/result.ref deleted file mode 100644 index 643dc101ab..0000000000 --- a/tests/03_NAO_multik/58_NO_MD_2O/result.ref +++ /dev/null @@ -1,5 +0,0 @@ -etotref -204.0642782467743 -etotperatomref -102.0321391234 -totalforceref 4.405896 -totalstressref 1503.234347 -totaltimeref 8.31 diff --git a/tests/03_NAO_multik/CASES_CPU.txt b/tests/03_NAO_multik/CASES_CPU.txt index c7efa3ad29..c861b3dfe5 100644 --- a/tests/03_NAO_multik/CASES_CPU.txt +++ b/tests/03_NAO_multik/CASES_CPU.txt @@ -1,58 +1,63 @@ -01_NO_KP_15f_ODM -02_NO_KP_15 -03_NO_KP_15_kpar -04_NO_KP_GTH -05_NO_KP_DJ_OC2 -06_NO_KP_OU -07_NO_KP_UPF201 -08_NO_KP_bspline -09_NO_S1_smallg -10_NO_S2_smallg -11_NO_KP_AFM -12_NO_KP_FM_OD -13_NO_KP_NC -14_NO_KP_NC -15_NO_KP_OB -16_NO_KP_OD -17_NO_KP_OH -18_NO_KP_OH2 -19_NO_KP_OH_nscf -20_NO_KP_OHS_S4 -21_NO_KP_OS -22_NO_KP_OTdH -23_NO_KP_OK -24_NO_KP_RE -25_NO_KP_CR -26_NO_KP_RE_MB -27_NO_KP_eadd -28_NO_KP_eminus -29_NO_KP_S2_eadd -30_NO_KP_S2_eminus -31_NO_KP_nupdown0 -32_NO_KP_get_wf -33_NO_KP_OW -34_NO_KP_MU -35_NO_KP_MU_nscf -36_NO_KP_sol_H2 -37_NO_KP_restart -38_NO_OP3 -39_NO_OP_nscf -40_NO_ELF -41_NO_KP_MSST -42_NO_KP_MSST2 -43_NO_KP_NVT -44_NO_KP_MD_OW -45_NO_KP_QO -46_NO_0ATOM -47_NO_KP_SO_OD -48_NO_KP_symm -49_NO_KP_CR_VDW3ABC -50_NO_KP_CR_VDW3BJ -51_NO_KP_CR_VDW2 -52_NO_KP_CR_VDW3 -53_NO_PK_URAMP -54_NO_PK_PU -55_NO_PK_PU_S1 -56_NO_PK_PU_SO -57_NO_MD_1O -58_NO_MD_2O +scf_pp_upf1 +scf_pp_upf201 +scf_pp_sg15 +scf_pp_gth +scf_angle_spin4 +scf_u_spin1 +scf_u_spin2 +scf_u_spin4 +scf_u_ramp +scf_vdw3abc +scf_solvation +scf_eadd +scf_eadd_spin2 +scf_eminus +scf_eminus_spin2 +scf_bspline +scf_0atoms +scf_symm_prec +scf_smallg_spin1 +scf_smallg_spin2 +scf_in_dmr_GaAs +scf_in_dmr_Si +scf_in_restart +#scf_in_dmr_Si_spin2_hasbug +#scf_in_hr_hasbug +scf_out_dos_spin2 +scf_out_wf +scf_out_chg_pot1 +scf_out_chg_tau +scf_out_pot3 +scf_out_dmr_dmk +scf_out_hsk +scf_out_hsr +scf_out_hsr_spin4 +scf_out_dh_t +scf_out_dos_spin4 +scf_out_mul +scf_out_mul_spin2 +scf_out_mul_spin4 +scf_out_mul_nupdw +scf_out_elf +scf_out_qo +nscf_out_dos +nscf_out_band_pband +nscf_out_pot1 +nscf_out_mul +nscf_out_hsr_tr_rr +relax_bfgs2 +relax_old_cg +relax_cell +relax_cell_vdw2 +relax_cell_vdw3 +relax_cell_vdw3bj +md_nvt +md_msst +md_out_wf +md_out_syns +md_chg_extra +get_wf +get_wf0 +get_pchg +get_pchg_k +get_s diff --git a/tests/03_NAO_multik/get_pchg/INPUT b/tests/03_NAO_multik/get_pchg/INPUT new file mode 100644 index 0000000000..97192979f5 --- /dev/null +++ b/tests/03_NAO_multik/get_pchg/INPUT @@ -0,0 +1,21 @@ +INPUT_PARAMETERS +suffix autotest + +calculation get_pchg +symmetry -1 +nbands 2 +nspin 2 +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB +latname sc +ecutwfc 25.0 +basis_type lcao +scf_thr 1e-10 +read_file_dir ../get_wf/ + +out_pchg 1 +#if_separate_k true + +bx 2 +by 2 +bz 2 diff --git a/tests/03_NAO_multik/32_NO_KP_get_wf/KPT b/tests/03_NAO_multik/get_pchg/KPT similarity index 100% rename from tests/03_NAO_multik/32_NO_KP_get_wf/KPT rename to tests/03_NAO_multik/get_pchg/KPT diff --git a/tests/03_NAO_multik/get_pchg/README b/tests/03_NAO_multik/get_pchg/README new file mode 100644 index 0000000000..443f8ac0e6 --- /dev/null +++ b/tests/03_NAO_multik/get_pchg/README @@ -0,0 +1 @@ +Obtain partial charge via 'calculation get_pchg' (multi-k points) diff --git a/tests/03_NAO_multik/33_NO_KP_OW/STRU b/tests/03_NAO_multik/get_pchg/STRU similarity index 100% rename from tests/03_NAO_multik/33_NO_KP_OW/STRU rename to tests/03_NAO_multik/get_pchg/STRU diff --git a/tests/03_NAO_multik/get_pchg/result.ref b/tests/03_NAO_multik/get_pchg/result.ref new file mode 100644 index 0000000000..7d68210df3 --- /dev/null +++ b/tests/03_NAO_multik/get_pchg/result.ref @@ -0,0 +1,3 @@ +pchgi1s1.cube 0.9999969968 +pchgi1s2.cube 0.9999969968 +totaltimeref 0.13 diff --git a/tests/03_NAO_multik/get_pchg_k/INPUT b/tests/03_NAO_multik/get_pchg_k/INPUT new file mode 100644 index 0000000000..c7c572b3cc --- /dev/null +++ b/tests/03_NAO_multik/get_pchg_k/INPUT @@ -0,0 +1,21 @@ +INPUT_PARAMETERS +suffix autotest + +calculation get_pchg +symmetry -1 +nbands 2 +nspin 2 +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB +latname sc +ecutwfc 25.0 +basis_type lcao +scf_thr 1e-10 +read_file_dir ../get_wf/ + +out_pchg 1 +if_separate_k true + +bx 2 +by 2 +bz 2 diff --git a/tests/03_NAO_multik/get_pchg_k/KPT b/tests/03_NAO_multik/get_pchg_k/KPT new file mode 100644 index 0000000000..eb3bd8bfb9 --- /dev/null +++ b/tests/03_NAO_multik/get_pchg_k/KPT @@ -0,0 +1,4 @@ +K_POINTS +0 +Gamma +3 1 1 0 0 0 diff --git a/tests/03_NAO_multik/get_pchg_k/README b/tests/03_NAO_multik/get_pchg_k/README new file mode 100644 index 0000000000..4519a5f1c6 --- /dev/null +++ b/tests/03_NAO_multik/get_pchg_k/README @@ -0,0 +1 @@ +Obtain partial charge for each k-point via 'calculation get_pchg' diff --git a/tests/03_NAO_multik/34_NO_KP_MU/STRU b/tests/03_NAO_multik/get_pchg_k/STRU similarity index 100% rename from tests/03_NAO_multik/34_NO_KP_MU/STRU rename to tests/03_NAO_multik/get_pchg_k/STRU diff --git a/tests/03_NAO_multik/get_pchg_k/result.ref b/tests/03_NAO_multik/get_pchg_k/result.ref new file mode 100644 index 0000000000..7a2a2d3684 --- /dev/null +++ b/tests/03_NAO_multik/get_pchg_k/result.ref @@ -0,0 +1,7 @@ +pchgi1s1k1.cube 0.9999996697 +pchgi1s1k2.cube 0.9999956604 +pchgi1s1k3.cube 0.9999956604 +pchgi1s2k1.cube 0.9999996697 +pchgi1s2k2.cube 0.9999956604 +pchgi1s2k3.cube 0.9999956604 +totaltimeref 0.25 diff --git a/tests/03_NAO_multik/get_s/INPUT b/tests/03_NAO_multik/get_s/INPUT new file mode 100644 index 0000000000..1a5db6608b --- /dev/null +++ b/tests/03_NAO_multik/get_s/INPUT @@ -0,0 +1,11 @@ +INPUT_PARAMETERS +suffix autotest +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB +#ecutwfc 100 +smearing_method fixed +ecutwfc 10 +scf_thr 1e-6 +basis_type lcao +calculation get_s +out_mat_ds 1 diff --git a/tests/03_NAO_multik/18_NO_KP_OH2/KPT b/tests/03_NAO_multik/get_s/KPT similarity index 100% rename from tests/03_NAO_multik/18_NO_KP_OH2/KPT rename to tests/03_NAO_multik/get_s/KPT diff --git a/tests/03_NAO_multik/21_NO_KP_OS/STRU b/tests/03_NAO_multik/get_s/STRU similarity index 100% rename from tests/03_NAO_multik/21_NO_KP_OS/STRU rename to tests/03_NAO_multik/get_s/STRU diff --git a/tests/03_NAO_multik/21_NO_KP_OS/dsrxs1.csr.ref b/tests/03_NAO_multik/get_s/dsrxs1.csr.ref similarity index 100% rename from tests/03_NAO_multik/21_NO_KP_OS/dsrxs1.csr.ref rename to tests/03_NAO_multik/get_s/dsrxs1.csr.ref diff --git a/tests/03_NAO_multik/21_NO_KP_OS/dsrys1.csr.ref b/tests/03_NAO_multik/get_s/dsrys1.csr.ref similarity index 100% rename from tests/03_NAO_multik/21_NO_KP_OS/dsrys1.csr.ref rename to tests/03_NAO_multik/get_s/dsrys1.csr.ref diff --git a/tests/03_NAO_multik/21_NO_KP_OS/dsrzs1.csr.ref b/tests/03_NAO_multik/get_s/dsrzs1.csr.ref similarity index 100% rename from tests/03_NAO_multik/21_NO_KP_OS/dsrzs1.csr.ref rename to tests/03_NAO_multik/get_s/dsrzs1.csr.ref diff --git a/tests/03_NAO_multik/21_NO_KP_OS/result.ref b/tests/03_NAO_multik/get_s/result.ref similarity index 100% rename from tests/03_NAO_multik/21_NO_KP_OS/result.ref rename to tests/03_NAO_multik/get_s/result.ref diff --git a/tests/03_NAO_multik/21_NO_KP_OS/sr_nao.csr.ref b/tests/03_NAO_multik/get_s/sr_nao.csr.ref similarity index 100% rename from tests/03_NAO_multik/21_NO_KP_OS/sr_nao.csr.ref rename to tests/03_NAO_multik/get_s/sr_nao.csr.ref diff --git a/tests/03_NAO_multik/get_wf/INPUT b/tests/03_NAO_multik/get_wf/INPUT new file mode 100644 index 0000000000..dd1632b152 --- /dev/null +++ b/tests/03_NAO_multik/get_wf/INPUT @@ -0,0 +1,21 @@ +INPUT_PARAMETERS +suffix autotest + +calculation get_wf +symmetry -1 +nbands 2 +nspin 2 +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB +latname sc +ecutwfc 25.0 +basis_type lcao +scf_thr 1e-10 +read_file_dir ./ + +out_wfc_norm 1 +out_wfc_re_im 1 + +bx 2 +by 2 +bz 2 diff --git a/tests/03_NAO_multik/get_wf/KPT b/tests/03_NAO_multik/get_wf/KPT new file mode 100644 index 0000000000..eb3bd8bfb9 --- /dev/null +++ b/tests/03_NAO_multik/get_wf/KPT @@ -0,0 +1,4 @@ +K_POINTS +0 +Gamma +3 1 1 0 0 0 diff --git a/tests/03_NAO_multik/32_NO_KP_get_wf/README b/tests/03_NAO_multik/get_wf/README similarity index 100% rename from tests/03_NAO_multik/32_NO_KP_get_wf/README rename to tests/03_NAO_multik/get_wf/README diff --git a/tests/03_NAO_multik/get_wf/STRU b/tests/03_NAO_multik/get_wf/STRU new file mode 100644 index 0000000000..30af97b4b4 --- /dev/null +++ b/tests/03_NAO_multik/get_wf/STRU @@ -0,0 +1,19 @@ +#This is the atom file containing all the information +#about the lattice structure. + +ATOMIC_SPECIES +H 1.0008 H_ONCV_PBE-1.0.upf + +NUMERICAL_ORBITAL +H_gga_6au_60Ry_2s1p.orb + +LATTICE_CONSTANT +10.0 #Lattice constant + +ATOMIC_POSITIONS +Cartesian #Cartesian(Unit is LATTICE_CONSTANT) +H #Name of element +0.0 #Magnetic for this element. +2 #Number of atoms +0.00 0.00 -0.0661400 0 0 0 #x,y,z, move_x, move_y, move_z +0.00 0.00 0.0661400 0 0 0 #x,y,z, move_x, move_y, move_z diff --git a/tests/03_NAO_multik/32_NO_KP_get_wf/result.ref b/tests/03_NAO_multik/get_wf/result.ref similarity index 100% rename from tests/03_NAO_multik/32_NO_KP_get_wf/result.ref rename to tests/03_NAO_multik/get_wf/result.ref diff --git a/tests/03_NAO_multik/32_NO_KP_get_wf/wfs1k1_nao.txt b/tests/03_NAO_multik/get_wf/wfk1s1_nao.txt similarity index 100% rename from tests/03_NAO_multik/32_NO_KP_get_wf/wfs1k1_nao.txt rename to tests/03_NAO_multik/get_wf/wfk1s1_nao.txt diff --git a/tests/03_NAO_multik/32_NO_KP_get_wf/wfs2k1_nao.txt b/tests/03_NAO_multik/get_wf/wfk1s2_nao.txt similarity index 100% rename from tests/03_NAO_multik/32_NO_KP_get_wf/wfs2k1_nao.txt rename to tests/03_NAO_multik/get_wf/wfk1s2_nao.txt diff --git a/tests/03_NAO_multik/32_NO_KP_get_wf/wfs1k2_nao.txt b/tests/03_NAO_multik/get_wf/wfk2s1_nao.txt similarity index 100% rename from tests/03_NAO_multik/32_NO_KP_get_wf/wfs1k2_nao.txt rename to tests/03_NAO_multik/get_wf/wfk2s1_nao.txt diff --git a/tests/03_NAO_multik/32_NO_KP_get_wf/wfs2k2_nao.txt b/tests/03_NAO_multik/get_wf/wfk2s2_nao.txt similarity index 100% rename from tests/03_NAO_multik/32_NO_KP_get_wf/wfs2k2_nao.txt rename to tests/03_NAO_multik/get_wf/wfk2s2_nao.txt diff --git a/tests/03_NAO_multik/32_NO_KP_get_wf/wfs1k3_nao.txt b/tests/03_NAO_multik/get_wf/wfk3s1_nao.txt similarity index 100% rename from tests/03_NAO_multik/32_NO_KP_get_wf/wfs1k3_nao.txt rename to tests/03_NAO_multik/get_wf/wfk3s1_nao.txt diff --git a/tests/03_NAO_multik/32_NO_KP_get_wf/wfs2k3_nao.txt b/tests/03_NAO_multik/get_wf/wfk3s2_nao.txt similarity index 100% rename from tests/03_NAO_multik/32_NO_KP_get_wf/wfs2k3_nao.txt rename to tests/03_NAO_multik/get_wf/wfk3s2_nao.txt diff --git a/tests/03_NAO_multik/get_wf0/INPUT b/tests/03_NAO_multik/get_wf0/INPUT new file mode 100644 index 0000000000..8e5a3867c1 --- /dev/null +++ b/tests/03_NAO_multik/get_wf0/INPUT @@ -0,0 +1,21 @@ +INPUT_PARAMETERS +suffix autotest + +calculation get_wf +symmetry -1 +nbands 2 +nspin 2 +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB +latname sc +ecutwfc 25.0 +basis_type lcao +scf_thr 1e-10 +read_file_dir ../get_wf/ + +out_wfc_norm 1 +out_wfc_re_im 1 + +bx 2 +by 2 +bz 2 diff --git a/tests/03_NAO_multik/get_wf0/KPT b/tests/03_NAO_multik/get_wf0/KPT new file mode 100644 index 0000000000..488317ce5a --- /dev/null +++ b/tests/03_NAO_multik/get_wf0/KPT @@ -0,0 +1,6 @@ +K_POINTS +3 +Direct +0.0000 0.0000 0.0000 0.0 +0.3333 0.0000 0.0000 0.0 +0.6667 0.0000 0.0000 0.0 diff --git a/tests/03_NAO_multik/get_wf0/README b/tests/03_NAO_multik/get_wf0/README new file mode 100644 index 0000000000..54533e01dd --- /dev/null +++ b/tests/03_NAO_multik/get_wf0/README @@ -0,0 +1,3 @@ +Test the 'calculation get_wf' option with zero-weight k-points. +This test verifies that ABACUS can handle k-points with zero weights +by automatically assigning equal weights and issuing a warning. diff --git a/tests/03_NAO_multik/get_wf0/STRU b/tests/03_NAO_multik/get_wf0/STRU new file mode 100644 index 0000000000..30af97b4b4 --- /dev/null +++ b/tests/03_NAO_multik/get_wf0/STRU @@ -0,0 +1,19 @@ +#This is the atom file containing all the information +#about the lattice structure. + +ATOMIC_SPECIES +H 1.0008 H_ONCV_PBE-1.0.upf + +NUMERICAL_ORBITAL +H_gga_6au_60Ry_2s1p.orb + +LATTICE_CONSTANT +10.0 #Lattice constant + +ATOMIC_POSITIONS +Cartesian #Cartesian(Unit is LATTICE_CONSTANT) +H #Name of element +0.0 #Magnetic for this element. +2 #Number of atoms +0.00 0.00 -0.0661400 0 0 0 #x,y,z, move_x, move_y, move_z +0.00 0.00 0.0661400 0 0 0 #x,y,z, move_x, move_y, move_z diff --git a/tests/03_NAO_multik/get_wf0/result.ref b/tests/03_NAO_multik/get_wf0/result.ref new file mode 100644 index 0000000000..e4d060972b --- /dev/null +++ b/tests/03_NAO_multik/get_wf0/result.ref @@ -0,0 +1,19 @@ +wfi1s1k1.cube -11.77152988 +wfi1s1k1im.cube 0 +wfi1s1k1re.cube -11.77169544 +wfi1s1k2.cube -3.754629032 +wfi1s1k2im.cube -5.256421773e-15 +wfi1s1k2re.cube -3.754662163 +wfi1s1k3.cube -3.754629032 +wfi1s1k3im.cube -2.592407863e-14 +wfi1s1k3re.cube -3.754662163 +wfi1s2k1.cube -11.77152988 +wfi1s2k1im.cube 0 +wfi1s2k1re.cube -15.5263576 +wfi1s2k2.cube -3.754629032 +wfi1s2k2im.cube 8.143533574e-14 +wfi1s2k2re.cube -7.509324327 +wfi1s2k3.cube -3.754629032 +wfi1s2k3im.cube -3.563679367e-14 +wfi1s2k3re.cube -7.509324327 +totaltimeref 0.22 diff --git a/tests/03_NAO_multik/md_chg_extra/INPUT b/tests/03_NAO_multik/md_chg_extra/INPUT new file mode 100644 index 0000000000..de47d9597c --- /dev/null +++ b/tests/03_NAO_multik/md_chg_extra/INPUT @@ -0,0 +1,33 @@ +INPUT_PARAMETERS +#Parameters (General) +suffix autotest + +nbands 8 +calculation md + +#Parameters (Accuracy) +ecutwfc 10 +scf_nmax 50 +scf_thr 1.0e-6 + +basis_type lcao +md_nstep 3 + +cal_stress 1 +stress_thr 1e-6 +cal_force 1 +force_thr_ev 1.0e-3 + +smearing_method gaussian +smearing_sigma 0.002 +mixing_type broyden +mixing_beta 0.7 + +md_tfreq 0.1 +md_tfirst 10 +init_vel 1 + +chg_extrap second-order + +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB diff --git a/tests/03_NAO_multik/20_NO_KP_OHS_S4/KPT b/tests/03_NAO_multik/md_chg_extra/KPT similarity index 100% rename from tests/03_NAO_multik/20_NO_KP_OHS_S4/KPT rename to tests/03_NAO_multik/md_chg_extra/KPT diff --git a/tests/03_NAO_multik/58_NO_MD_2O/README b/tests/03_NAO_multik/md_chg_extra/README similarity index 100% rename from tests/03_NAO_multik/58_NO_MD_2O/README rename to tests/03_NAO_multik/md_chg_extra/README diff --git a/tests/03_NAO_multik/57_NO_MD_1O/STRU b/tests/03_NAO_multik/md_chg_extra/STRU similarity index 100% rename from tests/03_NAO_multik/57_NO_MD_1O/STRU rename to tests/03_NAO_multik/md_chg_extra/STRU diff --git a/tests/03_NAO_multik/md_chg_extra/result.ref b/tests/03_NAO_multik/md_chg_extra/result.ref new file mode 100644 index 0000000000..0650225aaf --- /dev/null +++ b/tests/03_NAO_multik/md_chg_extra/result.ref @@ -0,0 +1,5 @@ +etotref -203.9507557549832 +etotperatomref -101.9753778775 +totalforceref 6.437138 +totalstressref 1540.840989 +totaltimeref 2.21 diff --git a/tests/03_NAO_multik/md_msst/INPUT b/tests/03_NAO_multik/md_msst/INPUT new file mode 100644 index 0000000000..ac8d0f9827 --- /dev/null +++ b/tests/03_NAO_multik/md_msst/INPUT @@ -0,0 +1,35 @@ +INPUT_PARAMETERS +#Parameters (General) +suffix autotest +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB + +nbands 8 +calculation md +read_file_dir ./ + +#Parameters (Accuracy) +ecutwfc 10 +scf_nmax 20 +scf_thr 1e-7 + +basis_type lcao +md_nstep 2 + +cal_stress 1 +cal_force 1 + +ks_solver scalapack_gvx +mixing_type broyden +mixing_beta 0.7 +smearing_method gauss +smearing_sigma 0.001 + +md_type msst +md_tfirst 10 +md_dt 1 +md_restart 0 +init_vel 1 + +msst_qmass 1 +msst_vel 10 diff --git a/tests/03_NAO_multik/21_NO_KP_OS/KPT b/tests/03_NAO_multik/md_msst/KPT similarity index 100% rename from tests/03_NAO_multik/21_NO_KP_OS/KPT rename to tests/03_NAO_multik/md_msst/KPT diff --git a/tests/03_NAO_multik/41_NO_KP_MSST/README b/tests/03_NAO_multik/md_msst/README similarity index 100% rename from tests/03_NAO_multik/41_NO_KP_MSST/README rename to tests/03_NAO_multik/md_msst/README diff --git a/tests/03_NAO_multik/41_NO_KP_MSST/STRU b/tests/03_NAO_multik/md_msst/STRU similarity index 100% rename from tests/03_NAO_multik/41_NO_KP_MSST/STRU rename to tests/03_NAO_multik/md_msst/STRU diff --git a/tests/03_NAO_multik/md_msst/result.ref b/tests/03_NAO_multik/md_msst/result.ref new file mode 100644 index 0000000000..598fef7b05 --- /dev/null +++ b/tests/03_NAO_multik/md_msst/result.ref @@ -0,0 +1,5 @@ +etotref -207.6071587315466 +etotperatomref -103.8035793658 +totalforceref 3.619098 +totalstressref 101.484403 +totaltimeref 1.04 diff --git a/tests/03_NAO_multik/md_nvt/INPUT b/tests/03_NAO_multik/md_nvt/INPUT new file mode 100644 index 0000000000..8847fb3634 --- /dev/null +++ b/tests/03_NAO_multik/md_nvt/INPUT @@ -0,0 +1,31 @@ +INPUT_PARAMETERS +#Parameters (General) +suffix autotest +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB + +nbands 8 +calculation md +read_file_dir ./ + +#Parameters (Accuracy) +ecutwfc 10 +scf_nmax 20 +scf_thr 1e-7 + +basis_type lcao +md_nstep 2 + +cal_stress 1 +cal_force 1 + +ks_solver scalapack_gvx +mixing_type broyden +mixing_beta 0.7 + +md_tchain 4 +md_type nvt +md_tfirst 10 +md_dt 1 +md_restart 0 +init_vel 1 diff --git a/tests/03_NAO_multik/11_NO_KP_AFM/KPT b/tests/03_NAO_multik/md_nvt/KPT similarity index 100% rename from tests/03_NAO_multik/11_NO_KP_AFM/KPT rename to tests/03_NAO_multik/md_nvt/KPT diff --git a/tests/03_NAO_multik/43_NO_KP_NVT/README b/tests/03_NAO_multik/md_nvt/README similarity index 100% rename from tests/03_NAO_multik/43_NO_KP_NVT/README rename to tests/03_NAO_multik/md_nvt/README diff --git a/tests/03_NAO_multik/43_NO_KP_NVT/STRU b/tests/03_NAO_multik/md_nvt/STRU similarity index 100% rename from tests/03_NAO_multik/43_NO_KP_NVT/STRU rename to tests/03_NAO_multik/md_nvt/STRU diff --git a/tests/03_NAO_multik/md_nvt/result.ref b/tests/03_NAO_multik/md_nvt/result.ref new file mode 100644 index 0000000000..1eeaf02021 --- /dev/null +++ b/tests/03_NAO_multik/md_nvt/result.ref @@ -0,0 +1,5 @@ +etotref -204.12922883082 +etotperatomref -102.0646144154 +totalforceref 2.248078 +totalstressref 1441.592005 +totaltimeref 1.45 diff --git a/tests/03_NAO_multik/md_out_syns/INPUT b/tests/03_NAO_multik/md_out_syns/INPUT new file mode 100644 index 0000000000..17687090fa --- /dev/null +++ b/tests/03_NAO_multik/md_out_syns/INPUT @@ -0,0 +1,32 @@ +INPUT_PARAMETERS +#Parameters (General) +suffix autotest + +nbands 8 +calculation md + +#Parameters (Accuracy) +ecutwfc 10 +scf_nmax 50 +scf_thr 1.0e-6 + +basis_type lcao +md_nstep 2 + +cal_stress 1 +cal_force 1 + +smearing_method gaussian +smearing_sigma 0.002 +mixing_type broyden +mixing_beta 0.7 + +md_tfirst 10 +md_tfreq 0.1 +init_vel 1 +cal_syns 1 + +chg_extrap first-order + +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB diff --git a/tests/03_NAO_multik/22_NO_KP_OTdH/KPT b/tests/03_NAO_multik/md_out_syns/KPT similarity index 100% rename from tests/03_NAO_multik/22_NO_KP_OTdH/KPT rename to tests/03_NAO_multik/md_out_syns/KPT diff --git a/tests/03_NAO_multik/57_NO_MD_1O/README b/tests/03_NAO_multik/md_out_syns/README similarity index 100% rename from tests/03_NAO_multik/57_NO_MD_1O/README rename to tests/03_NAO_multik/md_out_syns/README diff --git a/tests/03_NAO_multik/md_out_syns/STRU b/tests/03_NAO_multik/md_out_syns/STRU new file mode 100644 index 0000000000..a75d198d1c --- /dev/null +++ b/tests/03_NAO_multik/md_out_syns/STRU @@ -0,0 +1,22 @@ +ATOMIC_SPECIES +Si 1 Si_dojo_nsoc.upf + +NUMERICAL_ORBITAL +Si_dojo_6au_sz.orb + +LATTICE_CONSTANT +20 + +LATTICE_VECTORS +0 0.5 0.5 #latvec1 +0.5 0 0.5 #latvec2 +0.5 0.5 0 #latvec3 + +ATOMIC_POSITIONS +Cartesian + +Si #label +0 #magnetism +2 #number of atoms +0 0 0 m 1 1 1 v 0.000120809958223 -0.0001067217544 8.61336248207e-06 +0.299999999999 0.25 0.25 m 1 1 1 v -0.000120809958223 0.0001067217544 -8.61336248207e-06 diff --git a/tests/03_NAO_multik/md_out_syns/result.ref b/tests/03_NAO_multik/md_out_syns/result.ref new file mode 100644 index 0000000000..a0cfb5098a --- /dev/null +++ b/tests/03_NAO_multik/md_out_syns/result.ref @@ -0,0 +1,6 @@ +etotref -169.4853759244397 +etotperatomref -84.7426879622 +totalforceref 9.556956 +totalstressref 302.065735 +CompareSYNS_pass 0 +totaltimeref 0.59 diff --git a/tests/03_NAO_multik/md_out_syns/syns_nao.csr.ref b/tests/03_NAO_multik/md_out_syns/syns_nao.csr.ref new file mode 100644 index 0000000000..38fff5dd37 --- /dev/null +++ b/tests/03_NAO_multik/md_out_syns/syns_nao.csr.ref @@ -0,0 +1,199 @@ +IONIC_STEP: 1 +Matrix Dimension of S_async(R): 8 +Matrix number of S_async(R): 7 + #----------------------------------------------------------------------# + # CSR Format # + # The outer loop corresponds to the number of Bravais lattice vectors. # + # The first line contains the index of the Bravais lattice vector # + # (Rx, Ry, Rz), followed by the number of non-zero elements. # + # The subsequent lines consist of three blocks of data, which are # + # values, column indices, row pointers. # + #----------------------------------------------------------------------# + + -1 0 0 16 + # CSR values + 5.25090111e-04 -1.85660380e-03 -2.22993791e-03 1.85837442e-03 1.85660380e-03 -3.24040823e-03 + -5.51967817e-03 4.59996159e-03 2.22993791e-03 -5.51967817e-03 -5.27442890e-03 5.52494224e-03 + -1.85837442e-03 4.59996159e-03 5.52494224e-03 -3.24917793e-03 + # CSR column indices + 4 5 6 7 4 5 6 7 4 5 6 7 4 5 6 7 + # CSR row pointers + 0 4 8 12 16 16 16 16 16 + + 0 -1 0 16 + # CSR values + 3.57189324e-03 -8.78620677e-03 7.02068896e-03 -8.77907900e-03 8.78620677e-03 -1.31460930e-03 + 4.03417283e-03 -5.04456503e-03 -7.02068896e-03 4.03417283e-03 5.10513283e-04 4.03090013e-03 + 8.77907900e-03 -5.04456503e-03 4.03090013e-03 -1.30642122e-03 + # CSR column indices + 4 5 6 7 4 5 6 7 4 5 6 7 4 5 6 7 + # CSR row pointers + 0 4 8 12 16 16 16 16 16 + + 0 0 -1 16 + # CSR values + 3.54079453e-03 8.72727333e-03 6.97260451e-03 8.73435228e-03 -8.72727333e-03 -1.37225891e-03 + -4.07192737e-03 -5.10076946e-03 -6.97260451e-03 -4.07192737e-03 4.71133714e-04 -4.07523023e-03 + -8.73435228e-03 -5.10076946e-03 -4.07523023e-03 -1.38053033e-03 + # CSR column indices + 4 5 6 7 4 5 6 7 4 5 6 7 4 5 6 7 + # CSR row pointers + 0 4 8 12 16 16 16 16 16 + + 0 0 0 64 + # CSR values + 9.99994945e-01 -7.28653655e-05 1.02200062e-03 -9.02820433e-04 5.29355637e-04 1.86936509e-03 + -2.24494551e-03 -1.86758254e-03 7.28653655e-05 9.99990032e-01 7.91370584e-07 -6.99085227e-07 + -1.86936509e-03 -3.25104272e-03 5.54063448e-03 4.60928436e-03 -1.02200062e-03 7.91370584e-07 + 9.99978989e-01 9.80528304e-06 2.24494551e-03 5.54063448e-03 -5.29118095e-03 -5.53535118e-03 + 9.02820433e-04 -6.99085227e-07 9.80528304e-06 9.99981427e-01 1.86758254e-03 4.60928436e-03 + -5.53535118e-03 -3.24224812e-03 5.29355637e-04 -1.86936509e-03 2.24494551e-03 1.86758254e-03 + 9.99994945e-01 7.28653655e-05 -1.02200062e-03 9.02820433e-04 1.86936509e-03 -3.25104272e-03 + 5.54063448e-03 4.60928436e-03 -7.28653655e-05 9.99990032e-01 7.91370584e-07 -6.99085227e-07 + -2.24494551e-03 5.54063448e-03 -5.29118095e-03 -5.53535118e-03 1.02200062e-03 7.91370584e-07 + 9.99978989e-01 9.80528304e-06 -1.86758254e-03 4.60928436e-03 -5.53535118e-03 -3.24224812e-03 + -9.02820433e-04 -6.99085227e-07 9.80528304e-06 9.99981427e-01 + # CSR column indices + 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 + 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 + 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 + 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 + # CSR row pointers + 0 8 16 24 32 40 48 56 64 + + 0 0 1 16 + # CSR values + 3.54079453e-03 -8.72727333e-03 -6.97260451e-03 -8.73435228e-03 8.72727333e-03 -1.37225891e-03 + -4.07192737e-03 -5.10076946e-03 6.97260451e-03 -4.07192737e-03 4.71133714e-04 -4.07523023e-03 + 8.73435228e-03 -5.10076946e-03 -4.07523023e-03 -1.38053033e-03 + # CSR column indices + 0 1 2 3 0 1 2 3 0 1 2 3 0 1 2 3 + # CSR row pointers + 0 0 0 0 0 4 8 12 16 + + 0 1 0 16 + # CSR values + 3.57189324e-03 8.78620677e-03 -7.02068896e-03 8.77907900e-03 -8.78620677e-03 -1.31460930e-03 + 4.03417283e-03 -5.04456503e-03 7.02068896e-03 4.03417283e-03 5.10513283e-04 4.03090013e-03 + -8.77907900e-03 -5.04456503e-03 4.03090013e-03 -1.30642122e-03 + # CSR column indices + 0 1 2 3 0 1 2 3 0 1 2 3 0 1 2 3 + # CSR row pointers + 0 0 0 0 0 4 8 12 16 + + 1 0 0 16 + # CSR values + 5.25090111e-04 1.85660380e-03 2.22993791e-03 -1.85837442e-03 -1.85660380e-03 -3.24040823e-03 + -5.51967817e-03 4.59996159e-03 -2.22993791e-03 -5.51967817e-03 -5.27442890e-03 5.52494224e-03 + 1.85837442e-03 4.59996159e-03 5.52494224e-03 -3.24917793e-03 + # CSR column indices + 0 1 2 3 0 1 2 3 0 1 2 3 0 1 2 3 + # CSR row pointers + 0 0 0 0 0 4 8 12 16 + +IONIC_STEP: 2 +Matrix Dimension of S_async(R): 8 +Matrix number of S_async(R): 9 + #----------------------------------------------------------------------# + # CSR Format # + # The outer loop corresponds to the number of Bravais lattice vectors. # + # The first line contains the index of the Bravais lattice vector # + # (Rx, Ry, Rz), followed by the number of non-zero elements. # + # The subsequent lines consist of three blocks of data, which are # + # values, column indices, row pointers. # + #----------------------------------------------------------------------# + + -1 1 1 16 + # CSR values + 4.85977628e-04 -1.74380919e-03 -2.11178126e-03 1.74214872e-03 1.74380919e-03 -3.16476587e-03 + -5.38906833e-03 4.44580065e-03 2.11178126e-03 -5.38906833e-03 -5.24097718e-03 5.38393683e-03 + -1.74214872e-03 4.44580065e-03 5.38393683e-03 -3.15629520e-03 + # CSR column indices + 4 5 6 7 4 5 6 7 4 5 6 7 4 5 6 7 + # CSR row pointers + 0 4 8 12 16 16 16 16 16 + + 0 -1 -1 16 + # CSR values + 4.95928157e-04 -1.76813614e-03 2.14762303e-03 1.76982479e-03 1.76813614e-03 -3.16170499e-03 + 5.42330865e-03 4.46926949e-03 -2.14762303e-03 5.42330865e-03 -5.28398809e-03 -5.42848815e-03 + -1.76982479e-03 4.46926949e-03 -5.42848815e-03 -3.17023761e-03 + # CSR column indices + 0 1 2 3 0 1 2 3 0 1 2 3 0 1 2 3 + # CSR row pointers + 0 0 0 0 0 4 8 12 16 + + 0 -1 0 16 + # CSR values + 3.72862870e-03 -9.07452894e-03 -7.15394909e-03 -9.09290672e-03 9.07452894e-03 -1.01301920e-03 + -3.77880717e-03 -4.80298933e-03 7.15394909e-03 -3.77880717e-03 8.01221716e-04 -3.78646003e-03 + 9.09290672e-03 -4.80298933e-03 -3.78646003e-03 -1.03245361e-03 + # CSR column indices + 0 1 2 3 0 1 2 3 0 1 2 3 0 1 2 3 + # CSR row pointers + 0 0 0 0 0 4 8 12 16 + + 0 0 -1 16 + # CSR values + 3.69620211e-03 9.03944493e-03 -7.10511543e-03 9.02119261e-03 -9.03944493e-03 -1.10200651e-03 + 3.83027850e-03 -4.86321164e-03 7.10511543e-03 3.83027850e-03 7.60398492e-04 3.82254445e-03 + -9.02119261e-03 -4.86321164e-03 3.82254445e-03 -1.08234718e-03 + # CSR column indices + 0 1 2 3 0 1 2 3 0 1 2 3 0 1 2 3 + # CSR row pointers + 0 0 0 0 0 4 8 12 16 + + 0 0 0 32 + # CSR values + 9.99994945e-01 -7.28653655e-05 1.02200062e-03 -9.02820433e-04 7.28653655e-05 9.99990032e-01 + 7.91370584e-07 -6.99085227e-07 -1.02200062e-03 7.91370584e-07 9.99978989e-01 9.80528304e-06 + 9.02820433e-04 -6.99085227e-07 9.80528304e-06 9.99981427e-01 9.99994945e-01 7.28653655e-05 + -1.02200062e-03 9.02820433e-04 -7.28653655e-05 9.99990032e-01 7.91370584e-07 -6.99085227e-07 + 1.02200062e-03 7.91370584e-07 9.99978989e-01 9.80528304e-06 -9.02820433e-04 -6.99085227e-07 + 9.80528304e-06 9.99981427e-01 + # CSR column indices + 0 1 2 3 0 1 2 3 0 1 2 3 0 1 2 3 + 4 5 6 7 4 5 6 7 4 5 6 7 4 5 6 7 + # CSR row pointers + 0 4 8 12 16 20 24 28 32 + + 0 0 1 16 + # CSR values + 3.69620211e-03 -9.03944493e-03 7.10511543e-03 -9.02119261e-03 9.03944493e-03 -1.10200651e-03 + 3.83027850e-03 -4.86321164e-03 -7.10511543e-03 3.83027850e-03 7.60398492e-04 3.82254445e-03 + 9.02119261e-03 -4.86321164e-03 3.82254445e-03 -1.08234718e-03 + # CSR column indices + 4 5 6 7 4 5 6 7 4 5 6 7 4 5 6 7 + # CSR row pointers + 0 4 8 12 16 16 16 16 16 + + 0 1 0 16 + # CSR values + 3.72862870e-03 9.07452894e-03 7.15394909e-03 9.09290672e-03 -9.07452894e-03 -1.01301920e-03 + -3.77880717e-03 -4.80298933e-03 -7.15394909e-03 -3.77880717e-03 8.01221716e-04 -3.78646003e-03 + -9.09290672e-03 -4.80298933e-03 -3.78646003e-03 -1.03245361e-03 + # CSR column indices + 4 5 6 7 4 5 6 7 4 5 6 7 4 5 6 7 + # CSR row pointers + 0 4 8 12 16 16 16 16 16 + + 0 1 1 16 + # CSR values + 4.95928157e-04 1.76813614e-03 -2.14762303e-03 -1.76982479e-03 -1.76813614e-03 -3.16170499e-03 + 5.42330865e-03 4.46926949e-03 2.14762303e-03 5.42330865e-03 -5.28398809e-03 -5.42848815e-03 + 1.76982479e-03 4.46926949e-03 -5.42848815e-03 -3.17023761e-03 + # CSR column indices + 4 5 6 7 4 5 6 7 4 5 6 7 4 5 6 7 + # CSR row pointers + 0 4 8 12 16 16 16 16 16 + + 1 -1 -1 16 + # CSR values + 4.85977628e-04 1.74380919e-03 2.11178126e-03 -1.74214872e-03 -1.74380919e-03 -3.16476587e-03 + -5.38906833e-03 4.44580065e-03 -2.11178126e-03 -5.38906833e-03 -5.24097718e-03 5.38393683e-03 + 1.74214872e-03 4.44580065e-03 5.38393683e-03 -3.15629520e-03 + # CSR column indices + 0 1 2 3 0 1 2 3 0 1 2 3 0 1 2 3 + # CSR row pointers + 0 0 0 0 0 4 8 12 16 + diff --git a/tests/03_NAO_multik/md_out_wf/INPUT b/tests/03_NAO_multik/md_out_wf/INPUT new file mode 100644 index 0000000000..8e3c398858 --- /dev/null +++ b/tests/03_NAO_multik/md_out_wf/INPUT @@ -0,0 +1,36 @@ +INPUT_PARAMETERS + +#Parameters (General) +suffix autotest +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB + +nbands 8 +calculation md +read_file_dir ./ + +#Parameters (Accuracy) +ecutwfc 10 +scf_nmax 20 +scf_thr 1e-7 + +basis_type lcao +md_nstep 3 + +cal_stress 1 +cal_force 1 + +ks_solver scalapack_gvx +mixing_type broyden +mixing_beta 0.7 +mixing_gg0 0.0 + +out_wfc_lcao 1 +out_freq_ion 2 +out_app_flag 0 + +md_type nve +md_tfirst 10 +md_dt 1 +md_restart 0 +init_vel 1 diff --git a/tests/02_NAO_Gamma/026_NO_GO_PU_AF/KPT b/tests/03_NAO_multik/md_out_wf/KPT similarity index 100% rename from tests/02_NAO_Gamma/026_NO_GO_PU_AF/KPT rename to tests/03_NAO_multik/md_out_wf/KPT diff --git a/tests/03_NAO_multik/44_NO_KP_MD_OW/STRU b/tests/03_NAO_multik/md_out_wf/STRU similarity index 100% rename from tests/03_NAO_multik/44_NO_KP_MD_OW/STRU rename to tests/03_NAO_multik/md_out_wf/STRU diff --git a/tests/03_NAO_multik/md_out_wf/result.ref b/tests/03_NAO_multik/md_out_wf/result.ref new file mode 100644 index 0000000000..08e971ac8e --- /dev/null +++ b/tests/03_NAO_multik/md_out_wf/result.ref @@ -0,0 +1,6 @@ +etotref -196.6232944871748 +etotperatomref -98.3116472436 +totalforceref 0.975500 +totalstressref 1500.928040 +Compare_wfc_lcao_pass 0 +totaltimeref 1.94 diff --git a/tests/03_NAO_multik/44_NO_KP_MD_OW/wfs1k1g3_nao_mod.txt.ref b/tests/03_NAO_multik/md_out_wf/wfk1g3_nao_mod.txt.ref similarity index 100% rename from tests/03_NAO_multik/44_NO_KP_MD_OW/wfs1k1g3_nao_mod.txt.ref rename to tests/03_NAO_multik/md_out_wf/wfk1g3_nao_mod.txt.ref diff --git a/tests/03_NAO_multik/nscf_out_band_pband/INPUT b/tests/03_NAO_multik/nscf_out_band_pband/INPUT new file mode 100644 index 0000000000..8abc5597e4 --- /dev/null +++ b/tests/03_NAO_multik/nscf_out_band_pband/INPUT @@ -0,0 +1,26 @@ +INPUT_PARAMETERS +#Parameters (1.General) +suffix autotest +calculation nscf + +nbands 6 +symmetry 0 +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB +read_file_dir ./ +gamma_only 0 + +#Parameters (2.Iteration) +ecutwfc 20 +scf_thr 1e-8 +scf_nmax 100 + +#out_chg 1 +init_chg file +out_band 1 +out_proj_band 1 + +#Parameters (3.Basis) +basis_type lcao + +ks_solver scalapack_gvx diff --git a/tests/03_NAO_multik/15_NO_KP_OB/KPT b/tests/03_NAO_multik/nscf_out_band_pband/KPT similarity index 100% rename from tests/03_NAO_multik/15_NO_KP_OB/KPT rename to tests/03_NAO_multik/nscf_out_band_pband/KPT diff --git a/tests/03_NAO_multik/15_NO_KP_OB/README b/tests/03_NAO_multik/nscf_out_band_pband/README similarity index 100% rename from tests/03_NAO_multik/15_NO_KP_OB/README rename to tests/03_NAO_multik/nscf_out_band_pband/README diff --git a/tests/03_NAO_multik/03_NO_KP_15_kpar/STRU b/tests/03_NAO_multik/nscf_out_band_pband/STRU similarity index 100% rename from tests/03_NAO_multik/03_NO_KP_15_kpar/STRU rename to tests/03_NAO_multik/nscf_out_band_pband/STRU diff --git a/tests/03_NAO_multik/15_NO_KP_OB/eigs1.txt.ref b/tests/03_NAO_multik/nscf_out_band_pband/band.txt.ref similarity index 100% rename from tests/03_NAO_multik/15_NO_KP_OB/eigs1.txt.ref rename to tests/03_NAO_multik/nscf_out_band_pband/band.txt.ref diff --git a/tests/03_NAO_multik/15_NO_KP_OB/chgs1.cube b/tests/03_NAO_multik/nscf_out_band_pband/chg.cube similarity index 100% rename from tests/03_NAO_multik/15_NO_KP_OB/chgs1.cube rename to tests/03_NAO_multik/nscf_out_band_pband/chg.cube diff --git a/tests/03_NAO_multik/15_NO_KP_OB/refOrbital b/tests/03_NAO_multik/nscf_out_band_pband/refOrbital similarity index 100% rename from tests/03_NAO_multik/15_NO_KP_OB/refOrbital rename to tests/03_NAO_multik/nscf_out_band_pband/refOrbital diff --git a/tests/03_NAO_multik/15_NO_KP_OB/result.ref b/tests/03_NAO_multik/nscf_out_band_pband/result.ref similarity index 100% rename from tests/03_NAO_multik/15_NO_KP_OB/result.ref rename to tests/03_NAO_multik/nscf_out_band_pband/result.ref diff --git a/tests/03_NAO_multik/nscf_out_dos/INPUT b/tests/03_NAO_multik/nscf_out_dos/INPUT new file mode 100644 index 0000000000..67c7a598d7 --- /dev/null +++ b/tests/03_NAO_multik/nscf_out_dos/INPUT @@ -0,0 +1,34 @@ +INPUT_PARAMETERS +#Parameters (1.General) +suffix autotest +calculation nscf + +nbands 6 +symmetry 0 +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB +read_file_dir ./ +gamma_only 0 + +#Parameters (2.Iteration) +ecutwfc 20 +scf_thr 1e-8 +scf_nmax 100 + +init_chg file +out_dos 1 +pw_diag_thr 0.00001 + +#Parameters (3.Basis) +basis_type lcao + +#Parameters (4.Smearing) +smearing_method gauss +smearing_sigma 0.002 + +#Parameters (5.Mixing) +mixing_type broyden +mixing_beta 0.7 +mixing_gg0 1.5 + +ks_solver scalapack_gvx diff --git a/tests/03_NAO_multik/16_NO_KP_OD/KPT b/tests/03_NAO_multik/nscf_out_dos/KPT similarity index 100% rename from tests/03_NAO_multik/16_NO_KP_OD/KPT rename to tests/03_NAO_multik/nscf_out_dos/KPT diff --git a/tests/03_NAO_multik/16_NO_KP_OD/README b/tests/03_NAO_multik/nscf_out_dos/README similarity index 100% rename from tests/03_NAO_multik/16_NO_KP_OD/README rename to tests/03_NAO_multik/nscf_out_dos/README diff --git a/tests/03_NAO_multik/15_NO_KP_OB/STRU b/tests/03_NAO_multik/nscf_out_dos/STRU similarity index 100% rename from tests/03_NAO_multik/15_NO_KP_OB/STRU rename to tests/03_NAO_multik/nscf_out_dos/STRU diff --git a/tests/03_NAO_multik/16_NO_KP_OD/chgs1.cube b/tests/03_NAO_multik/nscf_out_dos/chg.cube similarity index 100% rename from tests/03_NAO_multik/16_NO_KP_OD/chgs1.cube rename to tests/03_NAO_multik/nscf_out_dos/chg.cube diff --git a/tests/03_NAO_multik/16_NO_KP_OD/result.ref b/tests/03_NAO_multik/nscf_out_dos/result.ref similarity index 100% rename from tests/03_NAO_multik/16_NO_KP_OD/result.ref rename to tests/03_NAO_multik/nscf_out_dos/result.ref diff --git a/tests/03_NAO_multik/nscf_out_hsr_tr_rr/INPUT b/tests/03_NAO_multik/nscf_out_hsr_tr_rr/INPUT new file mode 100644 index 0000000000..b7fa8176fd --- /dev/null +++ b/tests/03_NAO_multik/nscf_out_hsr_tr_rr/INPUT @@ -0,0 +1,36 @@ +INPUT_PARAMETERS +#Parameters (1.General) +suffix autotest +calculation nscf + +nbands 6 +symmetry 0 +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB +read_file_dir ./ +gamma_only 0 + +#Parameters (2.Iteration) +ecutwfc 20 +scf_thr 1e-8 +scf_nmax 100 + +#out_chg 1 +init_chg file +out_mat_hs2 1 +out_mat_r 1 +out_mat_t 1 + +#Parameters (3.Basis) +basis_type lcao + +#Parameters (4.Smearing) +smearing_method gauss +smearing_sigma 0.002 + +#Parameters (5.Mixing) +mixing_type broyden +mixing_beta 0.7 +mixing_gg0 1.5 + +ks_solver scalapack_gvx diff --git a/tests/03_NAO_multik/19_NO_KP_OH_nscf/KPT b/tests/03_NAO_multik/nscf_out_hsr_tr_rr/KPT similarity index 100% rename from tests/03_NAO_multik/19_NO_KP_OH_nscf/KPT rename to tests/03_NAO_multik/nscf_out_hsr_tr_rr/KPT diff --git a/tests/03_NAO_multik/19_NO_KP_OH_nscf/README b/tests/03_NAO_multik/nscf_out_hsr_tr_rr/README similarity index 100% rename from tests/03_NAO_multik/19_NO_KP_OH_nscf/README rename to tests/03_NAO_multik/nscf_out_hsr_tr_rr/README diff --git a/tests/03_NAO_multik/16_NO_KP_OD/STRU b/tests/03_NAO_multik/nscf_out_hsr_tr_rr/STRU similarity index 100% rename from tests/03_NAO_multik/16_NO_KP_OD/STRU rename to tests/03_NAO_multik/nscf_out_hsr_tr_rr/STRU diff --git a/tests/03_NAO_multik/19_NO_KP_OH_nscf/chgs1.cube b/tests/03_NAO_multik/nscf_out_hsr_tr_rr/chg.cube similarity index 100% rename from tests/03_NAO_multik/19_NO_KP_OH_nscf/chgs1.cube rename to tests/03_NAO_multik/nscf_out_hsr_tr_rr/chg.cube diff --git a/tests/03_NAO_multik/19_NO_KP_OH_nscf/result.ref b/tests/03_NAO_multik/nscf_out_hsr_tr_rr/result.ref similarity index 100% rename from tests/03_NAO_multik/19_NO_KP_OH_nscf/result.ref rename to tests/03_NAO_multik/nscf_out_hsr_tr_rr/result.ref diff --git a/tests/03_NAO_multik/19_NO_KP_OH_nscf/rr.csr.ref b/tests/03_NAO_multik/nscf_out_hsr_tr_rr/rr.csr.ref similarity index 100% rename from tests/03_NAO_multik/19_NO_KP_OH_nscf/rr.csr.ref rename to tests/03_NAO_multik/nscf_out_hsr_tr_rr/rr.csr.ref diff --git a/tests/03_NAO_multik/18_NO_KP_OH2/srs1_nao.csr.ref b/tests/03_NAO_multik/nscf_out_hsr_tr_rr/srs1_nao.csr.ref similarity index 100% rename from tests/03_NAO_multik/18_NO_KP_OH2/srs1_nao.csr.ref rename to tests/03_NAO_multik/nscf_out_hsr_tr_rr/srs1_nao.csr.ref diff --git a/tests/03_NAO_multik/19_NO_KP_OH_nscf/trs1_nao.csr.ref b/tests/03_NAO_multik/nscf_out_hsr_tr_rr/trs1_nao.csr.ref similarity index 100% rename from tests/03_NAO_multik/19_NO_KP_OH_nscf/trs1_nao.csr.ref rename to tests/03_NAO_multik/nscf_out_hsr_tr_rr/trs1_nao.csr.ref diff --git a/tests/03_NAO_multik/nscf_out_mul/INPUT b/tests/03_NAO_multik/nscf_out_mul/INPUT new file mode 100644 index 0000000000..b14291f2bc --- /dev/null +++ b/tests/03_NAO_multik/nscf_out_mul/INPUT @@ -0,0 +1,19 @@ +INPUT_PARAMETERS +#Parameters (System) +suffix autotest + +nbands 4 +stru_file STRU +kpoint_file KPT +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB +latname sc +#Parameters (PW) +ecutwfc 25.0 # Rydberg +#Parameters (electronic) +basis_type lcao +scf_thr 1e-10 + +calculation nscf +out_mul 1 +read_file_dir . diff --git a/tests/03_NAO_multik/27_NO_KP_eadd/KPT b/tests/03_NAO_multik/nscf_out_mul/KPT similarity index 100% rename from tests/03_NAO_multik/27_NO_KP_eadd/KPT rename to tests/03_NAO_multik/nscf_out_mul/KPT diff --git a/tests/03_NAO_multik/35_NO_KP_MU_nscf/README b/tests/03_NAO_multik/nscf_out_mul/README similarity index 100% rename from tests/03_NAO_multik/35_NO_KP_MU_nscf/README rename to tests/03_NAO_multik/nscf_out_mul/README diff --git a/tests/03_NAO_multik/35_NO_KP_MU_nscf/STRU b/tests/03_NAO_multik/nscf_out_mul/STRU similarity index 100% rename from tests/03_NAO_multik/35_NO_KP_MU_nscf/STRU rename to tests/03_NAO_multik/nscf_out_mul/STRU diff --git a/tests/03_NAO_multik/35_NO_KP_MU_nscf/chgs1.cube b/tests/03_NAO_multik/nscf_out_mul/chg.cube similarity index 100% rename from tests/03_NAO_multik/35_NO_KP_MU_nscf/chgs1.cube rename to tests/03_NAO_multik/nscf_out_mul/chg.cube diff --git a/tests/03_NAO_multik/nscf_out_mul/mulliken.txt.ref b/tests/03_NAO_multik/nscf_out_mul/mulliken.txt.ref new file mode 100644 index 0000000000..63c759e0d5 --- /dev/null +++ b/tests/03_NAO_multik/nscf_out_mul/mulliken.txt.ref @@ -0,0 +1,41 @@ + --- Ionic Step 1 --- + Total charge 2 + Decomposed Mulliken population analysis for each atom + l and m from Ylm, z stands for zeta orbital + + ------------------ + Atom 1 is H + ------------------ + zeta spin1 + s 1 1.6850 + s 2 -0.6850 + sum mz 1.0000 + + pz 1 0.0000 + px 1 0.0000 + py 1 0.0000 + sum m 0.0000 + sum mz 0.0000 + + sum lmz 1.0000 + + total charge on atom 1 1.0000 + + ------------------ + Atom 2 is H + ------------------ + zeta spin1 + s 1 1.6850 + s 2 -0.6850 + sum mz 1.0000 + + pz 1 0.0000 + px 1 0.0000 + py 1 0.0000 + sum m 0.0000 + sum mz 0.0000 + + sum lmz 1.0000 + + total charge on atom 2 1.0000 + diff --git a/tests/03_NAO_multik/35_NO_KP_MU_nscf/result.ref b/tests/03_NAO_multik/nscf_out_mul/result.ref similarity index 100% rename from tests/03_NAO_multik/35_NO_KP_MU_nscf/result.ref rename to tests/03_NAO_multik/nscf_out_mul/result.ref diff --git a/tests/03_NAO_multik/nscf_out_pot1/INPUT b/tests/03_NAO_multik/nscf_out_pot1/INPUT new file mode 100644 index 0000000000..ef6e916a6b --- /dev/null +++ b/tests/03_NAO_multik/nscf_out_pot1/INPUT @@ -0,0 +1,28 @@ +INPUT_PARAMETERS +#Parameters (1.General) +suffix autotest +calculation nscf + +nbands 6 +symmetry 1 +out_pot 1 5 + +#Parameters (2.Iteration) +ecutwfc 5 +scf_thr 1e-6 +scf_nmax 100 + +#Parameters (3.Basis) +basis_type lcao + +#Parameters (4.Smearing) +smearing_method gauss +smearing_sigma 0.002 + +#Parameters (5.Mixing) +mixing_type broyden +mixing_beta 0.3 + +read_file_dir ./ +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB diff --git a/tests/03_NAO_multik/03_NO_KP_15_kpar/KPT b/tests/03_NAO_multik/nscf_out_pot1/KPT similarity index 100% rename from tests/03_NAO_multik/03_NO_KP_15_kpar/KPT rename to tests/03_NAO_multik/nscf_out_pot1/KPT diff --git a/tests/03_NAO_multik/39_NO_OP_nscf/README b/tests/03_NAO_multik/nscf_out_pot1/README similarity index 100% rename from tests/03_NAO_multik/39_NO_OP_nscf/README rename to tests/03_NAO_multik/nscf_out_pot1/README diff --git a/tests/03_NAO_multik/17_NO_KP_OH/STRU b/tests/03_NAO_multik/nscf_out_pot1/STRU similarity index 100% rename from tests/03_NAO_multik/17_NO_KP_OH/STRU rename to tests/03_NAO_multik/nscf_out_pot1/STRU diff --git a/tests/03_NAO_multik/39_NO_OP_nscf/chgs1.cube b/tests/03_NAO_multik/nscf_out_pot1/chg.cube similarity index 100% rename from tests/03_NAO_multik/39_NO_OP_nscf/chgs1.cube rename to tests/03_NAO_multik/nscf_out_pot1/chg.cube diff --git a/tests/03_NAO_multik/nscf_out_pot1/pot.cube.ref b/tests/03_NAO_multik/nscf_out_pot1/pot.cube.ref new file mode 100644 index 0000000000..9b45c89cf6 --- /dev/null +++ b/tests/03_NAO_multik/nscf_out_pot1/pot.cube.ref @@ -0,0 +1,296 @@ +Ionic_Step 0 Cubefile created from ABACUS. Inner loop is z, followed by y and x +1 # number of spin directions +2 0.0 0.0 0.0 +12 0.000000 0.425000 0.425000 +12 0.425000 0.000000 0.425000 +12 0.425000 0.425000 0.000000 + 14 4.000000 0.000000 0.000000 0.000000 + 14 4.000000 2.550000 2.550000 2.550000 + -1.89782e+01 -1.23009e+01 -3.08896e+00 -9.38384e-01 -6.16577e-01 -1.90177e-01 + -3.25758e-01 -1.90177e-01 -6.16577e-01 -9.38384e-01 -3.08896e+00 -1.23009e+01 + -1.23009e+01 -5.02842e+00 -1.03066e+00 -6.90567e-01 -4.08126e-01 -6.33934e-01 + -6.33934e-01 -4.08126e-01 -6.90567e-01 -1.03066e+00 -5.02842e+00 -1.23009e+01 + -3.08896e+00 -1.03066e+00 -7.12848e-01 -6.90567e-01 -7.23703e-01 -8.71932e-01 + -7.23703e-01 -6.90567e-01 -7.12848e-01 -1.03066e+00 -3.08896e+00 -4.72594e+00 + -9.38384e-01 -6.90567e-01 -6.90567e-01 -9.38384e-01 -1.04071e+00 -1.04071e+00 + -9.38384e-01 -6.90567e-01 -6.90567e-01 -9.38384e-01 -1.04071e+00 -1.04071e+00 + -6.16577e-01 -4.08126e-01 -7.23703e-01 -1.04071e+00 -1.11955e+00 -1.04071e+00 + -7.23703e-01 -4.08126e-01 -6.16577e-01 -7.71333e-01 -6.49539e-01 -7.71333e-01 + -1.90177e-01 -6.33934e-01 -8.71932e-01 -1.04071e+00 -1.04071e+00 -8.71932e-01 + -6.33934e-01 -1.90177e-01 -4.81791e-02 -1.35771e-02 -1.35771e-02 -4.81791e-02 + -3.25758e-01 -6.33934e-01 -7.23703e-01 -9.38384e-01 -7.23703e-01 -6.33934e-01 + -3.25758e-01 1.61917e-01 2.31181e-01 2.53255e-01 2.31181e-01 1.61917e-01 + -1.90177e-01 -4.08126e-01 -6.90567e-01 -6.90567e-01 -4.08126e-01 -1.90177e-01 + 1.61917e-01 1.28081e-01 2.61798e-01 2.61798e-01 1.28081e-01 1.61917e-01 + -6.16577e-01 -6.90567e-01 -7.12848e-01 -6.90567e-01 -6.16577e-01 -4.81791e-02 + 2.31181e-01 2.61798e-01 5.40953e-01 2.61798e-01 2.31181e-01 -4.81791e-02 + -9.38384e-01 -1.03066e+00 -1.03066e+00 -9.38384e-01 -7.71333e-01 -1.35771e-02 + 2.53255e-01 2.61798e-01 2.61798e-01 2.53255e-01 -1.35771e-02 -7.71333e-01 + -3.08896e+00 -5.02842e+00 -3.08896e+00 -1.04071e+00 -6.49539e-01 -1.35771e-02 + 2.31181e-01 1.28081e-01 2.31181e-01 -1.35771e-02 -6.49539e-01 -1.04071e+00 + -1.23009e+01 -1.23009e+01 -4.72594e+00 -1.04071e+00 -7.71333e-01 -4.81791e-02 + 1.61917e-01 1.61917e-01 -4.81791e-02 -7.71333e-01 -1.04071e+00 -4.72594e+00 + -1.23009e+01 -5.02842e+00 -1.03066e+00 -6.90567e-01 -4.08126e-01 -6.33934e-01 + -6.33934e-01 -4.08126e-01 -6.90567e-01 -1.03066e+00 -5.02842e+00 -1.23009e+01 + -5.02842e+00 -1.44400e+00 -9.15405e-01 -7.12848e-01 -7.04739e-01 -1.05438e+00 + -7.04739e-01 -7.12848e-01 -9.15405e-01 -1.44400e+00 -5.02842e+00 -7.88994e+00 + -1.03066e+00 -9.15405e-01 -9.15405e-01 -1.03066e+00 -2.08280e+00 -2.08280e+00 + -1.03066e+00 -9.15405e-01 -9.15405e-01 -1.03066e+00 -2.08280e+00 -2.08280e+00 + -6.90567e-01 -7.12848e-01 -1.03066e+00 -3.08896e+00 -4.72594e+00 -3.08896e+00 + -1.03066e+00 -7.12848e-01 -6.90567e-01 -7.23703e-01 -8.71932e-01 -7.23703e-01 + -4.08126e-01 -7.04739e-01 -2.08280e+00 -4.72594e+00 -4.72594e+00 -2.08280e+00 + -7.04739e-01 -4.08126e-01 -2.32520e-01 -3.72003e-01 -3.72003e-01 -2.32520e-01 + -6.33934e-01 -1.05438e+00 -2.08280e+00 -3.08896e+00 -2.08280e+00 -1.05438e+00 + -6.33934e-01 4.91615e-02 1.89638e-01 5.55694e-02 1.89638e-01 4.91615e-02 + -6.33934e-01 -7.04739e-01 -1.03066e+00 -1.03066e+00 -7.04739e-01 -6.33934e-01 + -1.45413e-01 7.77690e-02 4.79238e-02 4.79238e-02 7.77690e-02 -1.45413e-01 + -4.08126e-01 -7.12848e-01 -9.15405e-01 -7.12848e-01 -4.08126e-01 4.91615e-02 + 7.77690e-02 7.85392e-02 4.23490e-01 7.85392e-02 7.77690e-02 4.91615e-02 + -6.90567e-01 -9.15405e-01 -9.15405e-01 -6.90567e-01 -2.32520e-01 1.89638e-01 + 4.79238e-02 4.23490e-01 4.23490e-01 4.79238e-02 1.89638e-01 -2.32520e-01 + -1.03066e+00 -1.44400e+00 -1.03066e+00 -7.23703e-01 -3.72003e-01 5.55694e-02 + 4.79238e-02 7.85392e-02 4.79238e-02 5.55694e-02 -3.72003e-01 -7.23703e-01 + -5.02842e+00 -5.02842e+00 -2.08280e+00 -8.71932e-01 -3.72003e-01 1.89638e-01 + 7.77690e-02 7.77690e-02 1.89638e-01 -3.72003e-01 -8.71932e-01 -2.08280e+00 + -1.23009e+01 -7.88994e+00 -2.08280e+00 -7.23703e-01 -2.32520e-01 4.91615e-02 + -1.45413e-01 4.91615e-02 -2.32520e-01 -7.23703e-01 -2.08280e+00 -7.88994e+00 + -3.08896e+00 -1.03066e+00 -7.12848e-01 -6.90567e-01 -7.23703e-01 -8.71932e-01 + -7.23703e-01 -6.90567e-01 -7.12848e-01 -1.03066e+00 -3.08896e+00 -4.72594e+00 + -1.03066e+00 -9.15405e-01 -9.15405e-01 -1.03066e+00 -2.08280e+00 -2.08280e+00 + -1.03066e+00 -9.15405e-01 -9.15405e-01 -1.03066e+00 -2.08280e+00 -2.08280e+00 + -7.12848e-01 -9.15405e-01 -1.44400e+00 -5.02842e+00 -7.88994e+00 -5.02842e+00 + -1.44400e+00 -9.15405e-01 -7.12848e-01 -7.04739e-01 -1.05438e+00 -7.04739e-01 + -6.90567e-01 -1.03066e+00 -5.02842e+00 -1.23009e+01 -1.23009e+01 -5.02842e+00 + -1.03066e+00 -6.90567e-01 -4.08126e-01 -6.33934e-01 -6.33934e-01 -4.08126e-01 + -7.23703e-01 -2.08280e+00 -7.88994e+00 -1.23009e+01 -7.88994e+00 -2.08280e+00 + -7.23703e-01 -2.32520e-01 4.91615e-02 -1.45413e-01 4.91615e-02 -2.32520e-01 + -8.71932e-01 -2.08280e+00 -5.02842e+00 -5.02842e+00 -2.08280e+00 -8.71932e-01 + -3.72003e-01 1.89638e-01 7.77690e-02 7.77690e-02 1.89638e-01 -3.72003e-01 + -7.23703e-01 -1.03066e+00 -1.44400e+00 -1.03066e+00 -7.23703e-01 -3.72003e-01 + 5.55694e-02 4.79238e-02 7.85392e-02 4.79238e-02 5.55694e-02 -3.72003e-01 + -6.90567e-01 -9.15405e-01 -9.15405e-01 -6.90567e-01 -2.32520e-01 1.89638e-01 + 4.79238e-02 4.23490e-01 4.23490e-01 4.79238e-02 1.89638e-01 -2.32520e-01 + -7.12848e-01 -9.15405e-01 -7.12848e-01 -4.08126e-01 4.91615e-02 7.77690e-02 + 7.85392e-02 4.23490e-01 7.85392e-02 7.77690e-02 4.91615e-02 -4.08126e-01 + -1.03066e+00 -1.03066e+00 -7.04739e-01 -6.33934e-01 -1.45413e-01 7.77690e-02 + 4.79238e-02 4.79238e-02 7.77690e-02 -1.45413e-01 -6.33934e-01 -7.04739e-01 + -3.08896e+00 -2.08280e+00 -1.05438e+00 -6.33934e-01 4.91615e-02 1.89638e-01 + 5.55694e-02 1.89638e-01 4.91615e-02 -6.33934e-01 -1.05438e+00 -2.08280e+00 + -4.72594e+00 -2.08280e+00 -7.04739e-01 -4.08126e-01 -2.32520e-01 -3.72003e-01 + -3.72003e-01 -2.32520e-01 -4.08126e-01 -7.04739e-01 -2.08280e+00 -4.72594e+00 + -9.38384e-01 -6.90567e-01 -6.90567e-01 -9.38384e-01 -1.04071e+00 -1.04071e+00 + -9.38384e-01 -6.90567e-01 -6.90567e-01 -9.38384e-01 -1.04071e+00 -1.04071e+00 + -6.90567e-01 -7.12848e-01 -1.03066e+00 -3.08896e+00 -4.72594e+00 -3.08896e+00 + -1.03066e+00 -7.12848e-01 -6.90567e-01 -7.23703e-01 -8.71932e-01 -7.23703e-01 + -6.90567e-01 -1.03066e+00 -5.02842e+00 -1.23009e+01 -1.23009e+01 -5.02842e+00 + -1.03066e+00 -6.90567e-01 -4.08126e-01 -6.33934e-01 -6.33934e-01 -4.08126e-01 + -9.38384e-01 -3.08896e+00 -1.23009e+01 -1.89782e+01 -1.23009e+01 -3.08896e+00 + -9.38384e-01 -6.16577e-01 -1.90177e-01 -3.25758e-01 -1.90177e-01 -6.16577e-01 + -1.04071e+00 -4.72594e+00 -1.23009e+01 -1.23009e+01 -4.72594e+00 -1.04071e+00 + -7.71333e-01 -4.81791e-02 1.61917e-01 1.61917e-01 -4.81791e-02 -7.71333e-01 + -1.04071e+00 -3.08896e+00 -5.02842e+00 -3.08896e+00 -1.04071e+00 -6.49539e-01 + -1.35771e-02 2.31181e-01 1.28081e-01 2.31181e-01 -1.35771e-02 -6.49539e-01 + -9.38384e-01 -1.03066e+00 -1.03066e+00 -9.38384e-01 -7.71333e-01 -1.35771e-02 + 2.53255e-01 2.61798e-01 2.61798e-01 2.53255e-01 -1.35771e-02 -7.71333e-01 + -6.90567e-01 -7.12848e-01 -6.90567e-01 -6.16577e-01 -4.81791e-02 2.31181e-01 + 2.61798e-01 5.40953e-01 2.61798e-01 2.31181e-01 -4.81791e-02 -6.16577e-01 + -6.90567e-01 -6.90567e-01 -4.08126e-01 -1.90177e-01 1.61917e-01 1.28081e-01 + 2.61798e-01 2.61798e-01 1.28081e-01 1.61917e-01 -1.90177e-01 -4.08126e-01 + -9.38384e-01 -7.23703e-01 -6.33934e-01 -3.25758e-01 1.61917e-01 2.31181e-01 + 2.53255e-01 2.31181e-01 1.61917e-01 -3.25758e-01 -6.33934e-01 -7.23703e-01 + -1.04071e+00 -8.71932e-01 -6.33934e-01 -1.90177e-01 -4.81791e-02 -1.35771e-02 + -1.35771e-02 -4.81791e-02 -1.90177e-01 -6.33934e-01 -8.71932e-01 -1.04071e+00 + -1.04071e+00 -7.23703e-01 -4.08126e-01 -6.16577e-01 -7.71333e-01 -6.49539e-01 + -7.71333e-01 -6.16577e-01 -4.08126e-01 -7.23703e-01 -1.04071e+00 -1.11955e+00 + -6.16577e-01 -4.08126e-01 -7.23703e-01 -1.04071e+00 -1.11955e+00 -1.04071e+00 + -7.23703e-01 -4.08126e-01 -6.16577e-01 -7.71333e-01 -6.49539e-01 -7.71333e-01 + -4.08126e-01 -7.04739e-01 -2.08280e+00 -4.72594e+00 -4.72594e+00 -2.08280e+00 + -7.04739e-01 -4.08126e-01 -2.32520e-01 -3.72003e-01 -3.72003e-01 -2.32520e-01 + -7.23703e-01 -2.08280e+00 -7.88994e+00 -1.23009e+01 -7.88994e+00 -2.08280e+00 + -7.23703e-01 -2.32520e-01 4.91615e-02 -1.45413e-01 4.91615e-02 -2.32520e-01 + -1.04071e+00 -4.72594e+00 -1.23009e+01 -1.23009e+01 -4.72594e+00 -1.04071e+00 + -7.71333e-01 -4.81791e-02 1.61917e-01 1.61917e-01 -4.81791e-02 -7.71333e-01 + -1.11955e+00 -4.72594e+00 -7.88994e+00 -4.72594e+00 -1.11955e+00 -6.57834e-01 + -1.70601e-01 2.68953e-01 2.40240e-01 2.68953e-01 -1.70601e-01 -6.57834e-01 + -1.04071e+00 -2.08280e+00 -2.08280e+00 -1.04071e+00 -6.57834e-01 -3.75044e-02 + 3.01432e-01 1.50294e-01 1.50294e-01 3.01432e-01 -3.75044e-02 -6.57834e-01 + -7.23703e-01 -7.04739e-01 -7.23703e-01 -7.71333e-01 -1.70601e-01 3.01432e-01 + 1.98302e-01 2.84144e-01 1.98302e-01 3.01432e-01 -1.70601e-01 -7.71333e-01 + -4.08126e-01 -4.08126e-01 -2.32520e-01 -4.81791e-02 2.68953e-01 1.50294e-01 + 2.84144e-01 2.84144e-01 1.50294e-01 2.68953e-01 -4.81791e-02 -2.32520e-01 + -6.16577e-01 -2.32520e-01 4.91615e-02 1.61917e-01 2.40240e-01 1.50294e-01 + 1.98302e-01 1.50294e-01 2.40240e-01 1.61917e-01 4.91615e-02 -2.32520e-01 + -7.71333e-01 -3.72003e-01 -1.45413e-01 1.61917e-01 2.68953e-01 3.01432e-01 + 3.01432e-01 2.68953e-01 1.61917e-01 -1.45413e-01 -3.72003e-01 -7.71333e-01 + -6.49539e-01 -3.72003e-01 4.91615e-02 -4.81791e-02 -1.70601e-01 -3.75044e-02 + -1.70601e-01 -4.81791e-02 4.91615e-02 -3.72003e-01 -6.49539e-01 -6.57834e-01 + -7.71333e-01 -2.32520e-01 -2.32520e-01 -7.71333e-01 -6.57834e-01 -6.57834e-01 + -7.71333e-01 -2.32520e-01 -2.32520e-01 -7.71333e-01 -6.57834e-01 -6.57834e-01 + -1.90177e-01 -6.33934e-01 -8.71932e-01 -1.04071e+00 -1.04071e+00 -8.71932e-01 + -6.33934e-01 -1.90177e-01 -4.81791e-02 -1.35771e-02 -1.35771e-02 -4.81791e-02 + -6.33934e-01 -1.05438e+00 -2.08280e+00 -3.08896e+00 -2.08280e+00 -1.05438e+00 + -6.33934e-01 4.91615e-02 1.89638e-01 5.55694e-02 1.89638e-01 4.91615e-02 + -8.71932e-01 -2.08280e+00 -5.02842e+00 -5.02842e+00 -2.08280e+00 -8.71932e-01 + -3.72003e-01 1.89638e-01 7.77690e-02 7.77690e-02 1.89638e-01 -3.72003e-01 + -1.04071e+00 -3.08896e+00 -5.02842e+00 -3.08896e+00 -1.04071e+00 -6.49539e-01 + -1.35771e-02 2.31181e-01 1.28081e-01 2.31181e-01 -1.35771e-02 -6.49539e-01 + -1.04071e+00 -2.08280e+00 -2.08280e+00 -1.04071e+00 -6.57834e-01 -3.75044e-02 + 3.01432e-01 1.50294e-01 1.50294e-01 3.01432e-01 -3.75044e-02 -6.57834e-01 + -8.71932e-01 -1.05438e+00 -8.71932e-01 -6.49539e-01 -3.75044e-02 3.21446e-01 + 1.57291e-01 1.97736e-01 1.57291e-01 3.21446e-01 -3.75044e-02 -6.49539e-01 + -6.33934e-01 -6.33934e-01 -3.72003e-01 -1.35771e-02 3.01432e-01 1.57291e-01 + 4.41166e-01 4.41166e-01 1.57291e-01 3.01432e-01 -1.35771e-02 -3.72003e-01 + -1.90177e-01 4.91615e-02 1.89638e-01 2.31181e-01 1.50294e-01 1.97736e-01 + 4.41166e-01 1.97736e-01 1.50294e-01 2.31181e-01 1.89638e-01 4.91615e-02 + -4.81791e-02 1.89638e-01 7.77690e-02 1.28081e-01 1.50294e-01 1.57291e-01 + 1.57291e-01 1.50294e-01 1.28081e-01 7.77690e-02 1.89638e-01 -4.81791e-02 + -1.35771e-02 5.55694e-02 7.77690e-02 2.31181e-01 3.01432e-01 3.21446e-01 + 3.01432e-01 2.31181e-01 7.77690e-02 5.55694e-02 -1.35771e-02 -1.70601e-01 + -1.35771e-02 1.89638e-01 1.89638e-01 -1.35771e-02 -3.75044e-02 -3.75044e-02 + -1.35771e-02 1.89638e-01 1.89638e-01 -1.35771e-02 -3.75044e-02 -3.75044e-02 + -4.81791e-02 4.91615e-02 -3.72003e-01 -6.49539e-01 -6.57834e-01 -6.49539e-01 + -3.72003e-01 4.91615e-02 -4.81791e-02 -1.70601e-01 -3.75044e-02 -1.70601e-01 + -3.25758e-01 -6.33934e-01 -7.23703e-01 -9.38384e-01 -7.23703e-01 -6.33934e-01 + -3.25758e-01 1.61917e-01 2.31181e-01 2.53255e-01 2.31181e-01 1.61917e-01 + -6.33934e-01 -7.04739e-01 -1.03066e+00 -1.03066e+00 -7.04739e-01 -6.33934e-01 + -1.45413e-01 7.77690e-02 4.79238e-02 4.79238e-02 7.77690e-02 -1.45413e-01 + -7.23703e-01 -1.03066e+00 -1.44400e+00 -1.03066e+00 -7.23703e-01 -3.72003e-01 + 5.55694e-02 4.79238e-02 7.85392e-02 4.79238e-02 5.55694e-02 -3.72003e-01 + -9.38384e-01 -1.03066e+00 -1.03066e+00 -9.38384e-01 -7.71333e-01 -1.35771e-02 + 2.53255e-01 2.61798e-01 2.61798e-01 2.53255e-01 -1.35771e-02 -7.71333e-01 + -7.23703e-01 -7.04739e-01 -7.23703e-01 -7.71333e-01 -1.70601e-01 3.01432e-01 + 1.98302e-01 2.84144e-01 1.98302e-01 3.01432e-01 -1.70601e-01 -7.71333e-01 + -6.33934e-01 -6.33934e-01 -3.72003e-01 -1.35771e-02 3.01432e-01 1.57291e-01 + 4.41166e-01 4.41166e-01 1.57291e-01 3.01432e-01 -1.35771e-02 -3.72003e-01 + -3.25758e-01 -1.45413e-01 5.55694e-02 2.53255e-01 1.98302e-01 4.41166e-01 + 8.72239e-01 4.41166e-01 1.98302e-01 2.53255e-01 5.55694e-02 -1.45413e-01 + 1.61917e-01 7.77690e-02 4.79238e-02 2.61798e-01 2.84144e-01 4.41166e-01 + 4.41166e-01 2.84144e-01 2.61798e-01 4.79238e-02 7.77690e-02 1.61917e-01 + 2.31181e-01 4.79238e-02 7.85392e-02 2.61798e-01 1.98302e-01 1.57291e-01 + 1.98302e-01 2.61798e-01 7.85392e-02 4.79238e-02 2.31181e-01 2.68953e-01 + 2.53255e-01 4.79238e-02 4.79238e-02 2.53255e-01 3.01432e-01 3.01432e-01 + 2.53255e-01 4.79238e-02 4.79238e-02 2.53255e-01 3.01432e-01 3.01432e-01 + 2.31181e-01 7.77690e-02 5.55694e-02 -1.35771e-02 -1.70601e-01 -1.35771e-02 + 5.55694e-02 7.77690e-02 2.31181e-01 3.01432e-01 3.21446e-01 3.01432e-01 + 1.61917e-01 -1.45413e-01 -3.72003e-01 -7.71333e-01 -7.71333e-01 -3.72003e-01 + -1.45413e-01 1.61917e-01 2.68953e-01 3.01432e-01 3.01432e-01 2.68953e-01 + -1.90177e-01 -4.08126e-01 -6.90567e-01 -6.90567e-01 -4.08126e-01 -1.90177e-01 + 1.61917e-01 1.28081e-01 2.61798e-01 2.61798e-01 1.28081e-01 1.61917e-01 + -4.08126e-01 -7.12848e-01 -9.15405e-01 -7.12848e-01 -4.08126e-01 4.91615e-02 + 7.77690e-02 7.85392e-02 4.23490e-01 7.85392e-02 7.77690e-02 4.91615e-02 + -6.90567e-01 -9.15405e-01 -9.15405e-01 -6.90567e-01 -2.32520e-01 1.89638e-01 + 4.79238e-02 4.23490e-01 4.23490e-01 4.79238e-02 1.89638e-01 -2.32520e-01 + -6.90567e-01 -7.12848e-01 -6.90567e-01 -6.16577e-01 -4.81791e-02 2.31181e-01 + 2.61798e-01 5.40953e-01 2.61798e-01 2.31181e-01 -4.81791e-02 -6.16577e-01 + -4.08126e-01 -4.08126e-01 -2.32520e-01 -4.81791e-02 2.68953e-01 1.50294e-01 + 2.84144e-01 2.84144e-01 1.50294e-01 2.68953e-01 -4.81791e-02 -2.32520e-01 + -1.90177e-01 4.91615e-02 1.89638e-01 2.31181e-01 1.50294e-01 1.97736e-01 + 4.41166e-01 1.97736e-01 1.50294e-01 2.31181e-01 1.89638e-01 4.91615e-02 + 1.61917e-01 7.77690e-02 4.79238e-02 2.61798e-01 2.84144e-01 4.41166e-01 + 4.41166e-01 2.84144e-01 2.61798e-01 4.79238e-02 7.77690e-02 1.61917e-01 + 1.28081e-01 7.85392e-02 4.23490e-01 5.40953e-01 2.84144e-01 1.97736e-01 + 2.84144e-01 5.40953e-01 4.23490e-01 7.85392e-02 1.28081e-01 2.40240e-01 + 2.61798e-01 4.23490e-01 4.23490e-01 2.61798e-01 1.50294e-01 1.50294e-01 + 2.61798e-01 4.23490e-01 4.23490e-01 2.61798e-01 1.50294e-01 1.50294e-01 + 2.61798e-01 7.85392e-02 4.79238e-02 2.31181e-01 2.68953e-01 2.31181e-01 + 4.79238e-02 7.85392e-02 2.61798e-01 1.98302e-01 1.57291e-01 1.98302e-01 + 1.28081e-01 7.77690e-02 1.89638e-01 -4.81791e-02 -4.81791e-02 1.89638e-01 + 7.77690e-02 1.28081e-01 1.50294e-01 1.57291e-01 1.57291e-01 1.50294e-01 + 1.61917e-01 4.91615e-02 -2.32520e-01 -6.16577e-01 -2.32520e-01 4.91615e-02 + 1.61917e-01 2.40240e-01 1.50294e-01 1.98302e-01 1.50294e-01 2.40240e-01 + -6.16577e-01 -6.90567e-01 -7.12848e-01 -6.90567e-01 -6.16577e-01 -4.81791e-02 + 2.31181e-01 2.61798e-01 5.40953e-01 2.61798e-01 2.31181e-01 -4.81791e-02 + -6.90567e-01 -9.15405e-01 -9.15405e-01 -6.90567e-01 -2.32520e-01 1.89638e-01 + 4.79238e-02 4.23490e-01 4.23490e-01 4.79238e-02 1.89638e-01 -2.32520e-01 + -7.12848e-01 -9.15405e-01 -7.12848e-01 -4.08126e-01 4.91615e-02 7.77690e-02 + 7.85392e-02 4.23490e-01 7.85392e-02 7.77690e-02 4.91615e-02 -4.08126e-01 + -6.90567e-01 -6.90567e-01 -4.08126e-01 -1.90177e-01 1.61917e-01 1.28081e-01 + 2.61798e-01 2.61798e-01 1.28081e-01 1.61917e-01 -1.90177e-01 -4.08126e-01 + -6.16577e-01 -2.32520e-01 4.91615e-02 1.61917e-01 2.40240e-01 1.50294e-01 + 1.98302e-01 1.50294e-01 2.40240e-01 1.61917e-01 4.91615e-02 -2.32520e-01 + -4.81791e-02 1.89638e-01 7.77690e-02 1.28081e-01 1.50294e-01 1.57291e-01 + 1.57291e-01 1.50294e-01 1.28081e-01 7.77690e-02 1.89638e-01 -4.81791e-02 + 2.31181e-01 4.79238e-02 7.85392e-02 2.61798e-01 1.98302e-01 1.57291e-01 + 1.98302e-01 2.61798e-01 7.85392e-02 4.79238e-02 2.31181e-01 2.68953e-01 + 2.61798e-01 4.23490e-01 4.23490e-01 2.61798e-01 1.50294e-01 1.50294e-01 + 2.61798e-01 4.23490e-01 4.23490e-01 2.61798e-01 1.50294e-01 1.50294e-01 + 5.40953e-01 4.23490e-01 7.85392e-02 1.28081e-01 2.40240e-01 1.28081e-01 + 7.85392e-02 4.23490e-01 5.40953e-01 2.84144e-01 1.97736e-01 2.84144e-01 + 2.61798e-01 4.79238e-02 7.77690e-02 1.61917e-01 1.61917e-01 7.77690e-02 + 4.79238e-02 2.61798e-01 2.84144e-01 4.41166e-01 4.41166e-01 2.84144e-01 + 2.31181e-01 1.89638e-01 4.91615e-02 -1.90177e-01 4.91615e-02 1.89638e-01 + 2.31181e-01 1.50294e-01 1.97736e-01 4.41166e-01 1.97736e-01 1.50294e-01 + -4.81791e-02 -2.32520e-01 -4.08126e-01 -4.08126e-01 -2.32520e-01 -4.81791e-02 + 2.68953e-01 1.50294e-01 2.84144e-01 2.84144e-01 1.50294e-01 2.68953e-01 + -9.38384e-01 -1.03066e+00 -1.03066e+00 -9.38384e-01 -7.71333e-01 -1.35771e-02 + 2.53255e-01 2.61798e-01 2.61798e-01 2.53255e-01 -1.35771e-02 -7.71333e-01 + -1.03066e+00 -1.44400e+00 -1.03066e+00 -7.23703e-01 -3.72003e-01 5.55694e-02 + 4.79238e-02 7.85392e-02 4.79238e-02 5.55694e-02 -3.72003e-01 -7.23703e-01 + -1.03066e+00 -1.03066e+00 -7.04739e-01 -6.33934e-01 -1.45413e-01 7.77690e-02 + 4.79238e-02 4.79238e-02 7.77690e-02 -1.45413e-01 -6.33934e-01 -7.04739e-01 + -9.38384e-01 -7.23703e-01 -6.33934e-01 -3.25758e-01 1.61917e-01 2.31181e-01 + 2.53255e-01 2.31181e-01 1.61917e-01 -3.25758e-01 -6.33934e-01 -7.23703e-01 + -7.71333e-01 -3.72003e-01 -1.45413e-01 1.61917e-01 2.68953e-01 3.01432e-01 + 3.01432e-01 2.68953e-01 1.61917e-01 -1.45413e-01 -3.72003e-01 -7.71333e-01 + -1.35771e-02 5.55694e-02 7.77690e-02 2.31181e-01 3.01432e-01 3.21446e-01 + 3.01432e-01 2.31181e-01 7.77690e-02 5.55694e-02 -1.35771e-02 -1.70601e-01 + 2.53255e-01 4.79238e-02 4.79238e-02 2.53255e-01 3.01432e-01 3.01432e-01 + 2.53255e-01 4.79238e-02 4.79238e-02 2.53255e-01 3.01432e-01 3.01432e-01 + 2.61798e-01 7.85392e-02 4.79238e-02 2.31181e-01 2.68953e-01 2.31181e-01 + 4.79238e-02 7.85392e-02 2.61798e-01 1.98302e-01 1.57291e-01 1.98302e-01 + 2.61798e-01 4.79238e-02 7.77690e-02 1.61917e-01 1.61917e-01 7.77690e-02 + 4.79238e-02 2.61798e-01 2.84144e-01 4.41166e-01 4.41166e-01 2.84144e-01 + 2.53255e-01 5.55694e-02 -1.45413e-01 -3.25758e-01 -1.45413e-01 5.55694e-02 + 2.53255e-01 1.98302e-01 4.41166e-01 8.72239e-01 4.41166e-01 1.98302e-01 + -1.35771e-02 -3.72003e-01 -6.33934e-01 -6.33934e-01 -3.72003e-01 -1.35771e-02 + 3.01432e-01 1.57291e-01 4.41166e-01 4.41166e-01 1.57291e-01 3.01432e-01 + -7.71333e-01 -7.23703e-01 -7.04739e-01 -7.23703e-01 -7.71333e-01 -1.70601e-01 + 3.01432e-01 1.98302e-01 2.84144e-01 1.98302e-01 3.01432e-01 -1.70601e-01 + -3.08896e+00 -5.02842e+00 -3.08896e+00 -1.04071e+00 -6.49539e-01 -1.35771e-02 + 2.31181e-01 1.28081e-01 2.31181e-01 -1.35771e-02 -6.49539e-01 -1.04071e+00 + -5.02842e+00 -5.02842e+00 -2.08280e+00 -8.71932e-01 -3.72003e-01 1.89638e-01 + 7.77690e-02 7.77690e-02 1.89638e-01 -3.72003e-01 -8.71932e-01 -2.08280e+00 + -3.08896e+00 -2.08280e+00 -1.05438e+00 -6.33934e-01 4.91615e-02 1.89638e-01 + 5.55694e-02 1.89638e-01 4.91615e-02 -6.33934e-01 -1.05438e+00 -2.08280e+00 + -1.04071e+00 -8.71932e-01 -6.33934e-01 -1.90177e-01 -4.81791e-02 -1.35771e-02 + -1.35771e-02 -4.81791e-02 -1.90177e-01 -6.33934e-01 -8.71932e-01 -1.04071e+00 + -6.49539e-01 -3.72003e-01 4.91615e-02 -4.81791e-02 -1.70601e-01 -3.75044e-02 + -1.70601e-01 -4.81791e-02 4.91615e-02 -3.72003e-01 -6.49539e-01 -6.57834e-01 + -1.35771e-02 1.89638e-01 1.89638e-01 -1.35771e-02 -3.75044e-02 -3.75044e-02 + -1.35771e-02 1.89638e-01 1.89638e-01 -1.35771e-02 -3.75044e-02 -3.75044e-02 + 2.31181e-01 7.77690e-02 5.55694e-02 -1.35771e-02 -1.70601e-01 -1.35771e-02 + 5.55694e-02 7.77690e-02 2.31181e-01 3.01432e-01 3.21446e-01 3.01432e-01 + 1.28081e-01 7.77690e-02 1.89638e-01 -4.81791e-02 -4.81791e-02 1.89638e-01 + 7.77690e-02 1.28081e-01 1.50294e-01 1.57291e-01 1.57291e-01 1.50294e-01 + 2.31181e-01 1.89638e-01 4.91615e-02 -1.90177e-01 4.91615e-02 1.89638e-01 + 2.31181e-01 1.50294e-01 1.97736e-01 4.41166e-01 1.97736e-01 1.50294e-01 + -1.35771e-02 -3.72003e-01 -6.33934e-01 -6.33934e-01 -3.72003e-01 -1.35771e-02 + 3.01432e-01 1.57291e-01 4.41166e-01 4.41166e-01 1.57291e-01 3.01432e-01 + -6.49539e-01 -8.71932e-01 -1.05438e+00 -8.71932e-01 -6.49539e-01 -3.75044e-02 + 3.21446e-01 1.57291e-01 1.97736e-01 1.57291e-01 3.21446e-01 -3.75044e-02 + -1.04071e+00 -2.08280e+00 -2.08280e+00 -1.04071e+00 -6.57834e-01 -3.75044e-02 + 3.01432e-01 1.50294e-01 1.50294e-01 3.01432e-01 -3.75044e-02 -6.57834e-01 + -1.23009e+01 -1.23009e+01 -4.72594e+00 -1.04071e+00 -7.71333e-01 -4.81791e-02 + 1.61917e-01 1.61917e-01 -4.81791e-02 -7.71333e-01 -1.04071e+00 -4.72594e+00 + -1.23009e+01 -7.88994e+00 -2.08280e+00 -7.23703e-01 -2.32520e-01 4.91615e-02 + -1.45413e-01 4.91615e-02 -2.32520e-01 -7.23703e-01 -2.08280e+00 -7.88994e+00 + -4.72594e+00 -2.08280e+00 -7.04739e-01 -4.08126e-01 -2.32520e-01 -3.72003e-01 + -3.72003e-01 -2.32520e-01 -4.08126e-01 -7.04739e-01 -2.08280e+00 -4.72594e+00 + -1.04071e+00 -7.23703e-01 -4.08126e-01 -6.16577e-01 -7.71333e-01 -6.49539e-01 + -7.71333e-01 -6.16577e-01 -4.08126e-01 -7.23703e-01 -1.04071e+00 -1.11955e+00 + -7.71333e-01 -2.32520e-01 -2.32520e-01 -7.71333e-01 -6.57834e-01 -6.57834e-01 + -7.71333e-01 -2.32520e-01 -2.32520e-01 -7.71333e-01 -6.57834e-01 -6.57834e-01 + -4.81791e-02 4.91615e-02 -3.72003e-01 -6.49539e-01 -6.57834e-01 -6.49539e-01 + -3.72003e-01 4.91615e-02 -4.81791e-02 -1.70601e-01 -3.75044e-02 -1.70601e-01 + 1.61917e-01 -1.45413e-01 -3.72003e-01 -7.71333e-01 -7.71333e-01 -3.72003e-01 + -1.45413e-01 1.61917e-01 2.68953e-01 3.01432e-01 3.01432e-01 2.68953e-01 + 1.61917e-01 4.91615e-02 -2.32520e-01 -6.16577e-01 -2.32520e-01 4.91615e-02 + 1.61917e-01 2.40240e-01 1.50294e-01 1.98302e-01 1.50294e-01 2.40240e-01 + -4.81791e-02 -2.32520e-01 -4.08126e-01 -4.08126e-01 -2.32520e-01 -4.81791e-02 + 2.68953e-01 1.50294e-01 2.84144e-01 2.84144e-01 1.50294e-01 2.68953e-01 + -7.71333e-01 -7.23703e-01 -7.04739e-01 -7.23703e-01 -7.71333e-01 -1.70601e-01 + 3.01432e-01 1.98302e-01 2.84144e-01 1.98302e-01 3.01432e-01 -1.70601e-01 + -1.04071e+00 -2.08280e+00 -2.08280e+00 -1.04071e+00 -6.57834e-01 -3.75044e-02 + 3.01432e-01 1.50294e-01 1.50294e-01 3.01432e-01 -3.75044e-02 -6.57834e-01 + -4.72594e+00 -7.88994e+00 -4.72594e+00 -1.11955e+00 -6.57834e-01 -1.70601e-01 + 2.68953e-01 2.40240e-01 2.68953e-01 -1.70601e-01 -6.57834e-01 -1.11955e+00 diff --git a/tests/03_NAO_multik/nscf_out_pot1/result.ref b/tests/03_NAO_multik/nscf_out_pot1/result.ref new file mode 100644 index 0000000000..ceb67d3cdf --- /dev/null +++ b/tests/03_NAO_multik/nscf_out_pot1/result.ref @@ -0,0 +1,7 @@ +etotref -196.6254071148605 +etotperatomref -98.3127035574 +ComparePot1_pass 0 +pointgroupref T_d +spacegroupref O_h +nksibzref 1 +totaltimeref 0.25 diff --git a/tests/03_NAO_multik/relax_bfgs2/INPUT b/tests/03_NAO_multik/relax_bfgs2/INPUT new file mode 100644 index 0000000000..525180360d --- /dev/null +++ b/tests/03_NAO_multik/relax_bfgs2/INPUT @@ -0,0 +1,33 @@ +INPUT_PARAMETERS +#Parameters (1.General) +suffix autotest +calculation relax + +nbands 8 +symmetry 1 +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB + +#Parameters (2.Iteration) +ecutwfc 10 +scf_thr 1e-6 +scf_nmax 100 + +#Parameters (3.Relaxation) +relax_nmax 2 +cal_force 1 +force_thr_ev 0.01 +relax_method bfgs 2 + +#Parameters (4.Basis) +basis_type lcao + +#Parameters (5.Smearing) +smearing_method gauss +smearing_sigma 0.002 + +#Parameters (6.Mixing) +mixing_type broyden +mixing_beta 0.5 + +relax_new 0 diff --git a/tests/03_NAO_multik/02_NO_KP_15/KPT b/tests/03_NAO_multik/relax_bfgs2/KPT similarity index 100% rename from tests/03_NAO_multik/02_NO_KP_15/KPT rename to tests/03_NAO_multik/relax_bfgs2/KPT diff --git a/tests/03_NAO_multik/26_NO_KP_RE_MB/README b/tests/03_NAO_multik/relax_bfgs2/README similarity index 100% rename from tests/03_NAO_multik/26_NO_KP_RE_MB/README rename to tests/03_NAO_multik/relax_bfgs2/README diff --git a/tests/03_NAO_multik/relax_bfgs2/STRU b/tests/03_NAO_multik/relax_bfgs2/STRU new file mode 100644 index 0000000000..f4a07dbf54 --- /dev/null +++ b/tests/03_NAO_multik/relax_bfgs2/STRU @@ -0,0 +1,22 @@ +ATOMIC_SPECIES +Si 28 Si_ONCV_PBE-1.0.upf upf201 + +NUMERICAL_ORBITAL +Si_gga_8au_60Ry_2s2p1d.orb + +LATTICE_CONSTANT +10.2 + +LATTICE_VECTORS +0.0 0.5 0.5 +0.5 0.0 0.5 +0.5 0.5 0.0 + +ATOMIC_POSITIONS +Direct + +Si +0.0 +2 +0.00 0.00 0.00 1 1 1 +0.251 0.251 0.251 1 1 1 diff --git a/tests/03_NAO_multik/26_NO_KP_RE_MB/result.ref b/tests/03_NAO_multik/relax_bfgs2/result.ref similarity index 100% rename from tests/03_NAO_multik/26_NO_KP_RE_MB/result.ref rename to tests/03_NAO_multik/relax_bfgs2/result.ref diff --git a/tests/03_NAO_multik/relax_cell/INPUT b/tests/03_NAO_multik/relax_cell/INPUT new file mode 100644 index 0000000000..8597ed2934 --- /dev/null +++ b/tests/03_NAO_multik/relax_cell/INPUT @@ -0,0 +1,25 @@ +INPUT_PARAMETERS +#Parameters (General) +suffix autotest +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB + +nbands 8 +calculation cell-relax +#Parameters (Accuracy) +ecutwfc 10 +scf_nmax 20 + +basis_type lcao +relax_nmax 2 + +cal_stress 1 +stress_thr 1e-6 +cal_force 1 +force_thr_ev 1.0e-3 + +ks_solver scalapack_gvx +mixing_type broyden +mixing_beta 0.7 + +relax_new 0 diff --git a/tests/03_NAO_multik/04_NO_KP_GTH/KPT b/tests/03_NAO_multik/relax_cell/KPT similarity index 100% rename from tests/03_NAO_multik/04_NO_KP_GTH/KPT rename to tests/03_NAO_multik/relax_cell/KPT diff --git a/tests/03_NAO_multik/25_NO_KP_CR/README b/tests/03_NAO_multik/relax_cell/README similarity index 100% rename from tests/03_NAO_multik/25_NO_KP_CR/README rename to tests/03_NAO_multik/relax_cell/README diff --git a/tests/03_NAO_multik/25_NO_KP_CR/STRU b/tests/03_NAO_multik/relax_cell/STRU similarity index 100% rename from tests/03_NAO_multik/25_NO_KP_CR/STRU rename to tests/03_NAO_multik/relax_cell/STRU diff --git a/tests/03_NAO_multik/25_NO_KP_CR/result.ref b/tests/03_NAO_multik/relax_cell/result.ref similarity index 100% rename from tests/03_NAO_multik/25_NO_KP_CR/result.ref rename to tests/03_NAO_multik/relax_cell/result.ref diff --git a/tests/03_NAO_multik/relax_cell_vdw2/INPUT b/tests/03_NAO_multik/relax_cell_vdw2/INPUT new file mode 100644 index 0000000000..79e889771e --- /dev/null +++ b/tests/03_NAO_multik/relax_cell_vdw2/INPUT @@ -0,0 +1,22 @@ +INPUT_PARAMETERS + +ecutwfc 10 +scf_thr 1e-06 +scf_nmax 400 +basis_type lcao +ks_solver scalapack_gvx +smearing_method gaussian +relax_nmax 1 +smearing_sigma 0.02 +mixing_type broyden +mixing_beta 0.7 +vdw_method d2 +fixed_axes c +force_thr_ev 0.005 +stress_thr 0.1 +suffix autotest +calculation cell-relax +cal_force 1 +cal_stress 1 +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB diff --git a/tests/03_NAO_multik/51_NO_KP_CR_VDW2/KPT b/tests/03_NAO_multik/relax_cell_vdw2/KPT similarity index 100% rename from tests/03_NAO_multik/51_NO_KP_CR_VDW2/KPT rename to tests/03_NAO_multik/relax_cell_vdw2/KPT diff --git a/tests/03_NAO_multik/51_NO_KP_CR_VDW2/README b/tests/03_NAO_multik/relax_cell_vdw2/README similarity index 100% rename from tests/03_NAO_multik/51_NO_KP_CR_VDW2/README rename to tests/03_NAO_multik/relax_cell_vdw2/README diff --git a/tests/03_NAO_multik/50_NO_KP_CR_VDW3BJ/STRU b/tests/03_NAO_multik/relax_cell_vdw2/STRU similarity index 100% rename from tests/03_NAO_multik/50_NO_KP_CR_VDW3BJ/STRU rename to tests/03_NAO_multik/relax_cell_vdw2/STRU diff --git a/tests/03_NAO_multik/51_NO_KP_CR_VDW2/result.ref b/tests/03_NAO_multik/relax_cell_vdw2/result.ref similarity index 100% rename from tests/03_NAO_multik/51_NO_KP_CR_VDW2/result.ref rename to tests/03_NAO_multik/relax_cell_vdw2/result.ref diff --git a/tests/03_NAO_multik/relax_cell_vdw3/INPUT b/tests/03_NAO_multik/relax_cell_vdw3/INPUT new file mode 100644 index 0000000000..04075233e0 --- /dev/null +++ b/tests/03_NAO_multik/relax_cell_vdw3/INPUT @@ -0,0 +1,23 @@ +INPUT_PARAMETERS + +ecutwfc 10 +scf_thr 1e-06 +scf_nmax 400 +basis_type lcao +ks_solver scalapack_gvx +smearing_method gaussian +relax_nmax 1 +smearing_sigma 0.02 +mixing_type broyden +mixing_beta 0.7 +vdw_method d3_0 +fixed_axes c +force_thr_ev 0.005 +stress_thr 0.1 +suffix autotest +calculation cell-relax +cal_force 1 +cal_stress 1 +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB +dft_functional pbe diff --git a/tests/03_NAO_multik/52_NO_KP_CR_VDW3/KPT b/tests/03_NAO_multik/relax_cell_vdw3/KPT similarity index 100% rename from tests/03_NAO_multik/52_NO_KP_CR_VDW3/KPT rename to tests/03_NAO_multik/relax_cell_vdw3/KPT diff --git a/tests/03_NAO_multik/52_NO_KP_CR_VDW3/README b/tests/03_NAO_multik/relax_cell_vdw3/README similarity index 100% rename from tests/03_NAO_multik/52_NO_KP_CR_VDW3/README rename to tests/03_NAO_multik/relax_cell_vdw3/README diff --git a/tests/03_NAO_multik/51_NO_KP_CR_VDW2/STRU b/tests/03_NAO_multik/relax_cell_vdw3/STRU similarity index 100% rename from tests/03_NAO_multik/51_NO_KP_CR_VDW2/STRU rename to tests/03_NAO_multik/relax_cell_vdw3/STRU diff --git a/tests/03_NAO_multik/52_NO_KP_CR_VDW3/result.ref b/tests/03_NAO_multik/relax_cell_vdw3/result.ref similarity index 100% rename from tests/03_NAO_multik/52_NO_KP_CR_VDW3/result.ref rename to tests/03_NAO_multik/relax_cell_vdw3/result.ref diff --git a/tests/03_NAO_multik/relax_cell_vdw3bj/INPUT b/tests/03_NAO_multik/relax_cell_vdw3bj/INPUT new file mode 100644 index 0000000000..e206a5f756 --- /dev/null +++ b/tests/03_NAO_multik/relax_cell_vdw3bj/INPUT @@ -0,0 +1,23 @@ +INPUT_PARAMETERS + +ecutwfc 10 +scf_thr 1e-06 +scf_nmax 400 +basis_type lcao +ks_solver scalapack_gvx +smearing_method gaussian +relax_nmax 1 +smearing_sigma 0.02 +mixing_type broyden +mixing_beta 0.7 +vdw_method d3_bj +fixed_axes c +force_thr_ev 0.005 +stress_thr 0.1 +suffix autotest +calculation cell-relax +cal_force 1 +cal_stress 1 +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB +dft_functional pbe diff --git a/tests/03_NAO_multik/50_NO_KP_CR_VDW3BJ/KPT b/tests/03_NAO_multik/relax_cell_vdw3bj/KPT similarity index 100% rename from tests/03_NAO_multik/50_NO_KP_CR_VDW3BJ/KPT rename to tests/03_NAO_multik/relax_cell_vdw3bj/KPT diff --git a/tests/03_NAO_multik/50_NO_KP_CR_VDW3BJ/README b/tests/03_NAO_multik/relax_cell_vdw3bj/README similarity index 100% rename from tests/03_NAO_multik/50_NO_KP_CR_VDW3BJ/README rename to tests/03_NAO_multik/relax_cell_vdw3bj/README diff --git a/tests/03_NAO_multik/52_NO_KP_CR_VDW3/STRU b/tests/03_NAO_multik/relax_cell_vdw3bj/STRU similarity index 100% rename from tests/03_NAO_multik/52_NO_KP_CR_VDW3/STRU rename to tests/03_NAO_multik/relax_cell_vdw3bj/STRU diff --git a/tests/03_NAO_multik/50_NO_KP_CR_VDW3BJ/result.ref b/tests/03_NAO_multik/relax_cell_vdw3bj/result.ref similarity index 100% rename from tests/03_NAO_multik/50_NO_KP_CR_VDW3BJ/result.ref rename to tests/03_NAO_multik/relax_cell_vdw3bj/result.ref diff --git a/tests/03_NAO_multik/relax_old_cg/INPUT b/tests/03_NAO_multik/relax_old_cg/INPUT new file mode 100644 index 0000000000..027cdbab2a --- /dev/null +++ b/tests/03_NAO_multik/relax_old_cg/INPUT @@ -0,0 +1,25 @@ +INPUT_PARAMETERS +#Parameters (General) +suffix autotest +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB + +nbands 8 +calculation relax +#Parameters (Accuracy) +ecutwfc 10 +scf_nmax 20 + +basis_type lcao +relax_nmax 2 + +cal_stress 1 +stress_thr 1e-6 +cal_force 1 +force_thr_ev 1.0e-3 + +ks_solver scalapack_gvx +mixing_type broyden +mixing_beta 0.7 + +relax_new 0 diff --git a/tests/03_NAO_multik/05_NO_KP_DJ_OC2/KPT b/tests/03_NAO_multik/relax_old_cg/KPT similarity index 100% rename from tests/03_NAO_multik/05_NO_KP_DJ_OC2/KPT rename to tests/03_NAO_multik/relax_old_cg/KPT diff --git a/tests/03_NAO_multik/24_NO_KP_RE/README b/tests/03_NAO_multik/relax_old_cg/README similarity index 100% rename from tests/03_NAO_multik/24_NO_KP_RE/README rename to tests/03_NAO_multik/relax_old_cg/README diff --git a/tests/03_NAO_multik/24_NO_KP_RE/STRU b/tests/03_NAO_multik/relax_old_cg/STRU similarity index 100% rename from tests/03_NAO_multik/24_NO_KP_RE/STRU rename to tests/03_NAO_multik/relax_old_cg/STRU diff --git a/tests/03_NAO_multik/24_NO_KP_RE/result.ref b/tests/03_NAO_multik/relax_old_cg/result.ref similarity index 100% rename from tests/03_NAO_multik/24_NO_KP_RE/result.ref rename to tests/03_NAO_multik/relax_old_cg/result.ref diff --git a/tests/03_NAO_multik/scf_0atoms/INPUT b/tests/03_NAO_multik/scf_0atoms/INPUT new file mode 100644 index 0000000000..26f066737f --- /dev/null +++ b/tests/03_NAO_multik/scf_0atoms/INPUT @@ -0,0 +1,27 @@ +INPUT_PARAMETERS +#Parameters (1.General) +suffix autotest +calculation scf + +nbands 6 +symmetry 0 +pseudo_dir ../../PP_ORB/ +orbital_dir ../../PP_ORB/ + +#Parameters (2.Iteration) +ecutwfc 20 + +#Parameters (3.Basis) +basis_type lcao + +#Parameters (4.Smearing) +smearing_method gauss +smearing_sigma 0.0002 + +#Parameters (5.Mixing) +mixing_type broyden +mixing_beta 0.7 +cal_force 1 +test_force 1 +cal_stress 1 +test_stress 1 diff --git a/tests/03_NAO_multik/06_NO_KP_OU/KPT b/tests/03_NAO_multik/scf_0atoms/KPT similarity index 100% rename from tests/03_NAO_multik/06_NO_KP_OU/KPT rename to tests/03_NAO_multik/scf_0atoms/KPT diff --git a/tests/03_NAO_multik/46_NO_0ATOM/README b/tests/03_NAO_multik/scf_0atoms/README similarity index 100% rename from tests/03_NAO_multik/46_NO_0ATOM/README rename to tests/03_NAO_multik/scf_0atoms/README diff --git a/tests/03_NAO_multik/46_NO_0ATOM/STRU b/tests/03_NAO_multik/scf_0atoms/STRU similarity index 100% rename from tests/03_NAO_multik/46_NO_0ATOM/STRU rename to tests/03_NAO_multik/scf_0atoms/STRU diff --git a/tests/03_NAO_multik/46_NO_0ATOM/result.ref b/tests/03_NAO_multik/scf_0atoms/result.ref similarity index 100% rename from tests/03_NAO_multik/46_NO_0ATOM/result.ref rename to tests/03_NAO_multik/scf_0atoms/result.ref diff --git a/tests/03_NAO_multik/scf_angle_spin4/INPUT b/tests/03_NAO_multik/scf_angle_spin4/INPUT new file mode 100644 index 0000000000..2bc14e6240 --- /dev/null +++ b/tests/03_NAO_multik/scf_angle_spin4/INPUT @@ -0,0 +1,31 @@ +INPUT_PARAMETERS +#Parameters (1.General) +suffix autotest +calculation scf + +symmetry 0 +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB +gamma_only 0 + +#Parameters (2.Iteration) +ecutwfc 15 +scf_thr 1e-7 +scf_nmax 50 + +noncolin 1 +#Parameters (3.Basis) +basis_type lcao + +#Parameters (4.Smearing) +smearing_method gauss +smearing_sigma 0.02 + +#Parameters (5.Mixing) +mixing_type broyden +mixing_beta 0.7 +mixing_ndim 15 +mixing_gg0 1.0 + +cal_force 1 +cal_stress 1 diff --git a/tests/03_NAO_multik/12_NO_KP_FM_OD/KPT b/tests/03_NAO_multik/scf_angle_spin4/KPT similarity index 100% rename from tests/03_NAO_multik/12_NO_KP_FM_OD/KPT rename to tests/03_NAO_multik/scf_angle_spin4/KPT diff --git a/tests/03_NAO_multik/13_NO_KP_NC/README b/tests/03_NAO_multik/scf_angle_spin4/README similarity index 100% rename from tests/03_NAO_multik/13_NO_KP_NC/README rename to tests/03_NAO_multik/scf_angle_spin4/README diff --git a/tests/03_NAO_multik/13_NO_KP_NC/STRU b/tests/03_NAO_multik/scf_angle_spin4/STRU similarity index 100% rename from tests/03_NAO_multik/13_NO_KP_NC/STRU rename to tests/03_NAO_multik/scf_angle_spin4/STRU diff --git a/tests/03_NAO_multik/scf_angle_spin4/result.ref b/tests/03_NAO_multik/scf_angle_spin4/result.ref new file mode 100644 index 0000000000..1a6409ad03 --- /dev/null +++ b/tests/03_NAO_multik/scf_angle_spin4/result.ref @@ -0,0 +1,5 @@ +etotref -6267.4651888505040915 +etotperatomref -3133.7325944253 +totalforceref 0.000000 +totalstressref 3912.920415 +totaltimeref 1.24 diff --git a/tests/03_NAO_multik/scf_bspline/INPUT b/tests/03_NAO_multik/scf_bspline/INPUT new file mode 100644 index 0000000000..0c431bbb4d --- /dev/null +++ b/tests/03_NAO_multik/scf_bspline/INPUT @@ -0,0 +1,27 @@ +INPUT_PARAMETERS +#Parameters (General) +suffix autotest +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB + +calculation scf +symmetry 1 + +#Parameters (3.PW) +ecutwfc 20 +scf_thr 1e-8 +scf_nmax 100 + +#Parameters (LCAO) +basis_type lcao +smearing_method gaussian +smearing_sigma 0.02 + +cal_force 1 +#test_force 1 +cal_stress 1 +#test_stress 1 + +mixing_type broyden +mixing_beta 0.4 +nbspline 10 diff --git a/tests/03_NAO_multik/08_NO_KP_bspline/KPT b/tests/03_NAO_multik/scf_bspline/KPT similarity index 100% rename from tests/03_NAO_multik/08_NO_KP_bspline/KPT rename to tests/03_NAO_multik/scf_bspline/KPT diff --git a/tests/03_NAO_multik/08_NO_KP_bspline/README b/tests/03_NAO_multik/scf_bspline/README similarity index 100% rename from tests/03_NAO_multik/08_NO_KP_bspline/README rename to tests/03_NAO_multik/scf_bspline/README diff --git a/tests/03_NAO_multik/08_NO_KP_bspline/STRU b/tests/03_NAO_multik/scf_bspline/STRU similarity index 100% rename from tests/03_NAO_multik/08_NO_KP_bspline/STRU rename to tests/03_NAO_multik/scf_bspline/STRU diff --git a/tests/03_NAO_multik/08_NO_KP_bspline/result.ref b/tests/03_NAO_multik/scf_bspline/result.ref similarity index 100% rename from tests/03_NAO_multik/08_NO_KP_bspline/result.ref rename to tests/03_NAO_multik/scf_bspline/result.ref diff --git a/tests/03_NAO_multik/scf_eadd/INPUT b/tests/03_NAO_multik/scf_eadd/INPUT new file mode 100644 index 0000000000..c5d4c9dc39 --- /dev/null +++ b/tests/03_NAO_multik/scf_eadd/INPUT @@ -0,0 +1,30 @@ +INPUT_PARAMETERS +#Parameters (1.General) +suffix autotest +calculation scf + +nbands 8 +symmetry 1 +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB +nelec 9 + +#Parameters (2.Iteration) +ecutwfc 10 +scf_thr 1e-7 +scf_nmax 100 + + +#Parameters (3.Basis) +basis_type lcao + +#Parameters (4.Smearing) +smearing_method gauss +smearing_sigma 0.002 + +#Parameters (5.Mixing) +mixing_type pulay +mixing_beta 0.7 + +cal_force 1 +cal_stress 1 diff --git a/tests/03_NAO_multik/28_NO_KP_eminus/KPT b/tests/03_NAO_multik/scf_eadd/KPT similarity index 100% rename from tests/03_NAO_multik/28_NO_KP_eminus/KPT rename to tests/03_NAO_multik/scf_eadd/KPT diff --git a/tests/03_NAO_multik/27_NO_KP_eadd/README b/tests/03_NAO_multik/scf_eadd/README similarity index 100% rename from tests/03_NAO_multik/27_NO_KP_eadd/README rename to tests/03_NAO_multik/scf_eadd/README diff --git a/tests/03_NAO_multik/27_NO_KP_eadd/STRU b/tests/03_NAO_multik/scf_eadd/STRU similarity index 100% rename from tests/03_NAO_multik/27_NO_KP_eadd/STRU rename to tests/03_NAO_multik/scf_eadd/STRU diff --git a/tests/03_NAO_multik/27_NO_KP_eadd/result.ref b/tests/03_NAO_multik/scf_eadd/result.ref similarity index 100% rename from tests/03_NAO_multik/27_NO_KP_eadd/result.ref rename to tests/03_NAO_multik/scf_eadd/result.ref diff --git a/tests/03_NAO_multik/scf_eadd_spin2/INPUT b/tests/03_NAO_multik/scf_eadd_spin2/INPUT new file mode 100644 index 0000000000..704eee24f9 --- /dev/null +++ b/tests/03_NAO_multik/scf_eadd_spin2/INPUT @@ -0,0 +1,33 @@ +INPUT_PARAMETERS +#Parameters (1.General) +suffix autotest +calculation scf + +nbands 8 +symmetry 1 +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB +nspin 2 +nelec 9 + +#Parameters (2.Iteration) +ecutwfc 10 +scf_thr 1e-7 +scf_nmax 100 + + +#Parameters (3.Basis) +basis_type lcao + +#Parameters (4.Smearing) +smearing_method gauss +smearing_sigma 0.002 + +#Parameters (5.Mixing) +mixing_type pulay +mixing_beta 0.7 + +nupdown 1.0 + +cal_force 1 +cal_stress 1 diff --git a/tests/03_NAO_multik/29_NO_KP_S2_eadd/KPT b/tests/03_NAO_multik/scf_eadd_spin2/KPT similarity index 100% rename from tests/03_NAO_multik/29_NO_KP_S2_eadd/KPT rename to tests/03_NAO_multik/scf_eadd_spin2/KPT diff --git a/tests/03_NAO_multik/29_NO_KP_S2_eadd/README b/tests/03_NAO_multik/scf_eadd_spin2/README similarity index 100% rename from tests/03_NAO_multik/29_NO_KP_S2_eadd/README rename to tests/03_NAO_multik/scf_eadd_spin2/README diff --git a/tests/03_NAO_multik/29_NO_KP_S2_eadd/STRU b/tests/03_NAO_multik/scf_eadd_spin2/STRU similarity index 100% rename from tests/03_NAO_multik/29_NO_KP_S2_eadd/STRU rename to tests/03_NAO_multik/scf_eadd_spin2/STRU diff --git a/tests/03_NAO_multik/29_NO_KP_S2_eadd/result.ref b/tests/03_NAO_multik/scf_eadd_spin2/result.ref similarity index 100% rename from tests/03_NAO_multik/29_NO_KP_S2_eadd/result.ref rename to tests/03_NAO_multik/scf_eadd_spin2/result.ref diff --git a/tests/03_NAO_multik/scf_eminus/INPUT b/tests/03_NAO_multik/scf_eminus/INPUT new file mode 100644 index 0000000000..9fc462205a --- /dev/null +++ b/tests/03_NAO_multik/scf_eminus/INPUT @@ -0,0 +1,29 @@ +INPUT_PARAMETERS +#Parameters (1.General) +suffix autotest +calculation scf + +nbands 8 +symmetry 1 +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB +nelec 10 + +#Parameters (2.Iteration) +ecutwfc 10 +scf_thr 1e-7 +scf_nmax 100 + +#Parameters (3.Basis) +basis_type lcao + +#Parameters (4.Smearing) +smearing_method gauss +smearing_sigma 0.002 + +#Parameters (5.Mixing) +mixing_type pulay +mixing_beta 0.7 + +cal_force 1 +cal_stress 1 diff --git a/tests/03_NAO_multik/30_NO_KP_S2_eminus/KPT b/tests/03_NAO_multik/scf_eminus/KPT similarity index 100% rename from tests/03_NAO_multik/30_NO_KP_S2_eminus/KPT rename to tests/03_NAO_multik/scf_eminus/KPT diff --git a/tests/03_NAO_multik/28_NO_KP_eminus/README b/tests/03_NAO_multik/scf_eminus/README similarity index 100% rename from tests/03_NAO_multik/28_NO_KP_eminus/README rename to tests/03_NAO_multik/scf_eminus/README diff --git a/tests/03_NAO_multik/28_NO_KP_eminus/STRU b/tests/03_NAO_multik/scf_eminus/STRU similarity index 100% rename from tests/03_NAO_multik/28_NO_KP_eminus/STRU rename to tests/03_NAO_multik/scf_eminus/STRU diff --git a/tests/03_NAO_multik/28_NO_KP_eminus/result.ref b/tests/03_NAO_multik/scf_eminus/result.ref similarity index 100% rename from tests/03_NAO_multik/28_NO_KP_eminus/result.ref rename to tests/03_NAO_multik/scf_eminus/result.ref diff --git a/tests/03_NAO_multik/scf_eminus_spin2/INPUT b/tests/03_NAO_multik/scf_eminus_spin2/INPUT new file mode 100644 index 0000000000..984d578b03 --- /dev/null +++ b/tests/03_NAO_multik/scf_eminus_spin2/INPUT @@ -0,0 +1,31 @@ +INPUT_PARAMETERS +#Parameters (1.General) +suffix autotest +calculation scf + +nbands 8 +symmetry 1 +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB +nelec 10 +nspin 2 + +#Parameters (2.Iteration) +ecutwfc 10 +scf_thr 1e-7 +scf_nmax 100 + + +#Parameters (3.Basis) +basis_type lcao + +#Parameters (4.Smearing) +smearing_method gauss +smearing_sigma 0.002 + +#Parameters (5.Mixing) +mixing_type pulay +mixing_beta 0.7 + +cal_force 1 +cal_stress 1 diff --git a/tests/03_NAO_multik/34_NO_KP_MU/KPT b/tests/03_NAO_multik/scf_eminus_spin2/KPT similarity index 100% rename from tests/03_NAO_multik/34_NO_KP_MU/KPT rename to tests/03_NAO_multik/scf_eminus_spin2/KPT diff --git a/tests/03_NAO_multik/30_NO_KP_S2_eminus/README b/tests/03_NAO_multik/scf_eminus_spin2/README similarity index 100% rename from tests/03_NAO_multik/30_NO_KP_S2_eminus/README rename to tests/03_NAO_multik/scf_eminus_spin2/README diff --git a/tests/03_NAO_multik/30_NO_KP_S2_eminus/STRU b/tests/03_NAO_multik/scf_eminus_spin2/STRU similarity index 100% rename from tests/03_NAO_multik/30_NO_KP_S2_eminus/STRU rename to tests/03_NAO_multik/scf_eminus_spin2/STRU diff --git a/tests/03_NAO_multik/30_NO_KP_S2_eminus/result.ref b/tests/03_NAO_multik/scf_eminus_spin2/result.ref similarity index 100% rename from tests/03_NAO_multik/30_NO_KP_S2_eminus/result.ref rename to tests/03_NAO_multik/scf_eminus_spin2/result.ref diff --git a/tests/03_NAO_multik/scf_in_dmr_GaAs/INPUT b/tests/03_NAO_multik/scf_in_dmr_GaAs/INPUT new file mode 100644 index 0000000000..463bbc4854 --- /dev/null +++ b/tests/03_NAO_multik/scf_in_dmr_GaAs/INPUT @@ -0,0 +1,27 @@ +INPUT_PARAMETERS +suffix autotest +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB + +gamma_only 0 + +calculation scf +symmetry 0 + +smearing_method gaussian +smearing_sigma 0.001 + +ecutwfc 5 +scf_thr 1e-8 +scf_nmax 100 + +#Parameters (LCAO) +basis_type lcao +ks_solver scalapack_gvx +#out_dmr 1 +init_chg dm +read_file_dir ./ + +cal_force 1 +cal_stress 1 +force_thr_ev 0.001 diff --git a/tests/03_NAO_multik/07_NO_KP_UPF201/KPT b/tests/03_NAO_multik/scf_in_dmr_GaAs/KPT similarity index 100% rename from tests/03_NAO_multik/07_NO_KP_UPF201/KPT rename to tests/03_NAO_multik/scf_in_dmr_GaAs/KPT diff --git a/tests/03_NAO_multik/scf_in_dmr_GaAs/README b/tests/03_NAO_multik/scf_in_dmr_GaAs/README new file mode 100644 index 0000000000..ce3072f1be --- /dev/null +++ b/tests/03_NAO_multik/scf_in_dmr_GaAs/README @@ -0,0 +1 @@ +test dojo pseudopotentials for GaAs and read density matrix (real space) to restart scf calculations diff --git a/tests/03_NAO_multik/scf_in_dmr_GaAs/STRU b/tests/03_NAO_multik/scf_in_dmr_GaAs/STRU new file mode 100644 index 0000000000..159ef863ce --- /dev/null +++ b/tests/03_NAO_multik/scf_in_dmr_GaAs/STRU @@ -0,0 +1,28 @@ +ATOMIC_SPECIES +As 1 As_dojo_nsoc.upf upf201 +Ga 1 Ga_dojo_nsoc.upf upf201 + +LATTICE_CONSTANT +12 + +NUMERICAL_ORBITAL +As_dojo_6au.orb +Ga_dojo_6au.orb + +LATTICE_VECTORS +1 0 0 +0 1 0 +0 0 1 + +ATOMIC_POSITIONS +Direct //Cartesian or Direct coordinate. + +As +0 +1 +0.12500000 0.12500000 0.125000000 0 0 0 + +Ga +0 +1 +0.00000 0.00000 0.000000 0 0 0 diff --git a/tests/03_NAO_multik/scf_in_dmr_GaAs/dmrs1_nao.csr b/tests/03_NAO_multik/scf_in_dmr_GaAs/dmrs1_nao.csr new file mode 100644 index 0000000000..83ea12b6c5 --- /dev/null +++ b/tests/03_NAO_multik/scf_in_dmr_GaAs/dmrs1_nao.csr @@ -0,0 +1,780 @@ + --- Ionic Step 1 --- + # print density matrix in real space DM(R) + 1 # number of spin directions + 1 # spin index + 36 # number of localized basis + 7 # number of Bravais lattice vector R + + user_defined_lattice + 6.35012 + 1 0 0 + 0 1 0 + 0 0 1 + As Ga + 1 1 + Direct + 0.125 0.125 0.125 + 0 0 0 + + #----------------------------------------------------------------------# + # CSR Format # + # The outer loop corresponds to the number of Bravais lattice vectors. # + # The first line contains the index of the Bravais lattice vector # + # (Rx, Ry, Rz), followed by the number of non-zero elements. # + # The subsequent lines consist of three blocks of data, which are # + # values, column indices, row pointers. # + #----------------------------------------------------------------------# + + -1 0 0 324 + # CSR values + 4.83633576e-03 1.77796618e-03 5.35648805e-03 1.23436283e-02 -5.35648805e-03 -1.80572374e-03 + -4.80398852e-03 1.80572374e-03 -1.14054562e-04 -5.23984616e-04 1.18509635e-03 1.97548297e-04 + 5.23984616e-04 -1.31749544e-04 -1.11056189e-04 -4.29770605e-04 2.28196904e-04 1.11056189e-04 + 1.52238262e-03 -2.33195615e-04 3.06854993e-03 8.81302498e-03 -3.06854993e-03 -4.21582298e-04 + -6.61580720e-04 4.21582298e-04 -1.75964220e-05 -5.85385830e-04 7.38795817e-04 3.04778970e-05 + 5.85385830e-04 -2.16172667e-04 -1.97736854e-05 -2.90054585e-04 3.74422042e-04 1.97736854e-05 + -1.19590030e-03 -3.81831212e-04 2.34708053e-04 1.64345455e-03 4.87893917e-04 -1.09531821e-04 + 2.90456558e-04 -1.33863305e-04 1.14738640e-04 -1.50616243e-04 1.73166473e-05 -2.26595905e-04 + 1.77813301e-04 -2.36004310e-05 5.19849980e-05 -5.99996764e-07 -1.26521247e-06 -3.73394965e-05 + -3.82718601e-03 -1.37608422e-03 -5.17453380e-03 -6.68794798e-03 5.17453380e-03 1.22864091e-03 + 2.71659526e-03 -1.22864091e-03 3.59092293e-04 1.78156593e-04 -1.00120812e-03 -6.21966096e-04 + -1.78156593e-04 1.53833614e-04 -6.29980068e-05 3.40108044e-04 -2.66447636e-04 6.29980068e-05 + 1.19590030e-03 3.81831212e-04 4.87893917e-04 -1.64345455e-03 2.34708053e-04 -1.33863305e-04 + -2.90456558e-04 -1.09531821e-04 -1.38868490e-04 1.77813301e-04 -1.73166473e-05 2.12664529e-04 + -1.50616243e-04 -1.28959216e-05 -3.73394965e-05 5.99996764e-07 -1.98059666e-05 5.19849980e-05 + -4.32211930e-05 -7.92112878e-05 1.68344278e-04 1.15764614e-03 -2.46177839e-04 -4.90880038e-05 + -4.11149148e-05 3.37274593e-05 2.38367158e-05 -9.67168221e-05 5.86932725e-05 -3.45638212e-05 + 7.58567405e-05 -1.49714015e-05 8.32396539e-06 -2.94159168e-05 3.47201149e-05 -2.03365325e-06 + 9.84906468e-05 -1.79200616e-04 -9.18613178e-05 1.52770194e-03 9.18613178e-05 4.83216506e-05 + 1.73541755e-04 -4.83216506e-05 -1.97121130e-05 -1.49893680e-04 3.61778330e-06 3.41423812e-05 + 1.49893680e-04 -3.96932939e-05 -4.14035408e-05 -7.66706512e-05 6.87508018e-05 4.14035408e-05 + 4.32211930e-05 7.92112878e-05 -2.46177839e-04 -1.15764614e-03 1.68344278e-04 3.37274593e-05 + 4.11149148e-05 -4.90880038e-05 -1.80147894e-05 7.58567405e-05 -5.86932725e-05 3.79251120e-05 + -9.67168221e-05 2.25828007e-05 -2.03365325e-06 2.94159168e-05 -3.03256715e-05 8.32396539e-06 + 6.67706969e-05 -4.18937837e-05 7.45969181e-05 -6.05429474e-04 1.12273218e-04 2.88076218e-05 + 1.34796907e-05 -3.10442121e-05 1.75276450e-05 7.36902783e-05 -5.24749678e-06 -3.30323248e-05 + -3.69594297e-05 -6.41357712e-06 -1.62988458e-05 2.04077618e-05 2.69404586e-06 5.98147328e-06 + -3.88523055e-04 -8.85973492e-05 -3.47371991e-04 -1.04729953e-04 5.25536569e-04 5.30411328e-05 + 1.44375194e-04 -8.30590853e-05 -1.60028889e-05 2.98642161e-05 -7.80742034e-05 2.79830331e-05 + -2.66165731e-06 1.95490272e-06 1.61583336e-05 2.25812157e-05 -1.13319057e-05 -2.14258848e-05 + 1.31601898e-04 1.82387210e-04 4.62587853e-06 -1.30387872e-03 -4.62587853e-06 -1.29760260e-05 + -4.19828087e-04 1.29760260e-05 -9.68534862e-06 1.09664335e-04 -7.61621286e-05 1.67755159e-05 + -1.09664335e-04 3.65098786e-05 -1.90489347e-05 4.45914109e-05 -6.32369648e-05 1.90489347e-05 + -1.15650239e-04 7.25621619e-05 8.65733944e-05 1.04863461e-03 2.13161289e-05 -5.24788566e-05 + -2.33475092e-05 5.11875606e-05 -3.30323248e-05 -8.52221754e-05 9.08893104e-06 5.56700882e-05 + 1.06428741e-04 2.69404586e-06 1.63169534e-05 -3.53472802e-05 -9.52439333e-06 -2.22736913e-05 + 3.88523055e-04 8.85973492e-05 5.25536569e-04 1.04729953e-04 -3.47371991e-04 -8.30590853e-05 + -1.44375194e-04 5.30411328e-05 1.62325731e-05 -2.66165731e-06 7.80742034e-05 -2.78504249e-05 + 2.98642161e-05 -8.83626684e-06 -2.14258848e-05 -2.25812157e-05 7.35894826e-06 1.61583336e-05 + 5.89296470e-04 4.49830593e-04 3.42761201e-04 1.01588060e-03 -3.65784594e-04 -2.17290983e-04 + -4.34342346e-04 2.00108528e-04 -5.28287564e-05 -8.63365657e-05 7.29340896e-05 9.10888080e-05 + 6.51116936e-05 6.58384394e-06 1.03938418e-05 -3.92585573e-05 -8.49011122e-06 -2.66281581e-06 + -1.49684177e-03 -5.65539978e-04 -1.58939046e-03 2.40029426e-03 2.07736030e-03 2.24506958e-04 + 5.07233723e-04 -2.89908712e-04 -2.93143679e-05 -6.72763016e-05 -2.33495083e-04 8.83093056e-05 + 1.76038044e-04 -4.13904274e-05 3.64525555e-05 6.46450952e-05 2.97080209e-05 -7.28100057e-05 + 1.05802479e-03 1.25876572e-03 2.44658820e-04 -8.58715992e-03 -2.44658820e-04 -1.23986061e-04 + -2.72093126e-03 1.23986061e-04 -8.64887097e-05 7.48922047e-04 -4.42598878e-04 1.49802839e-04 + -7.48922047e-04 2.22815963e-04 -1.02343382e-04 2.55885984e-04 -3.85928570e-04 1.02343382e-04 + -1.02069143e-03 -7.79129442e-04 -6.20264940e-04 -1.75955682e-03 6.06972377e-04 3.56518433e-04 + 7.52303012e-04 -3.66438728e-04 9.10888080e-05 1.25030947e-04 -1.26325549e-04 -1.58009052e-04 + -1.37285133e-04 -8.49011122e-06 -9.07564222e-06 6.79978160e-05 1.63873799e-05 1.35391522e-05 + 1.49684177e-03 5.65539978e-04 2.07736030e-03 -2.40029426e-03 -1.58939046e-03 -2.89908712e-04 + -5.07233723e-04 2.24506958e-04 6.18209181e-05 1.76038044e-04 2.33495083e-04 -6.95416401e-05 + -6.72763016e-05 5.03268705e-06 -7.28100057e-05 -6.46450952e-05 -5.06991721e-05 3.64525555e-05 + # CSR column indices + 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 + 16 17 0 1 2 3 4 5 6 7 8 9 10 11 12 13 + 14 15 16 17 0 1 2 3 4 5 6 7 8 9 10 11 + 12 13 14 15 16 17 0 1 2 3 4 5 6 7 8 9 + 10 11 12 13 14 15 16 17 0 1 2 3 4 5 6 7 + 8 9 10 11 12 13 14 15 16 17 0 1 2 3 4 5 + 6 7 8 9 10 11 12 13 14 15 16 17 0 1 2 3 + 4 5 6 7 8 9 10 11 12 13 14 15 16 17 0 1 + 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 + 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 + 16 17 0 1 2 3 4 5 6 7 8 9 10 11 12 13 + 14 15 16 17 0 1 2 3 4 5 6 7 8 9 10 11 + 12 13 14 15 16 17 0 1 2 3 4 5 6 7 8 9 + 10 11 12 13 14 15 16 17 0 1 2 3 4 5 6 7 + 8 9 10 11 12 13 14 15 16 17 0 1 2 3 4 5 + 6 7 8 9 10 11 12 13 14 15 16 17 0 1 2 3 + 4 5 6 7 8 9 10 11 12 13 14 15 16 17 0 1 + 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 + 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 + 16 17 0 1 2 3 4 5 6 7 8 9 10 11 12 13 + 14 15 16 17 + # CSR row pointers + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 18 36 54 72 90 108 126 144 162 180 198 216 234 + 252 270 288 306 324 + + 0 -1 0 324 + # CSR values + 4.83633576e-03 1.77796618e-03 5.35648805e-03 -5.35648805e-03 1.23436283e-02 -1.80572374e-03 + 1.80572374e-03 -4.80398852e-03 -1.14054562e-04 1.18509635e-03 -5.23984616e-04 -1.97548297e-04 + 5.23984616e-04 -1.31749544e-04 -4.29770605e-04 -1.11056189e-04 -2.28196904e-04 1.11056189e-04 + 1.52238262e-03 -2.33195615e-04 3.06854993e-03 -3.06854993e-03 8.81302498e-03 -4.21582298e-04 + 4.21582298e-04 -6.61580720e-04 -1.75964220e-05 7.38795817e-04 -5.85385830e-04 -3.04778970e-05 + 5.85385830e-04 -2.16172667e-04 -2.90054585e-04 -1.97736854e-05 -3.74422042e-04 1.97736854e-05 + -1.19590030e-03 -3.81831212e-04 2.34708053e-04 4.87893917e-04 1.64345455e-03 -1.09531821e-04 + -1.33863305e-04 2.90456558e-04 1.14738640e-04 1.73166473e-05 -1.50616243e-04 2.26595905e-04 + 1.77813301e-04 -2.36004310e-05 -5.99996764e-07 5.19849980e-05 1.26521247e-06 -3.73394965e-05 + 1.19590030e-03 3.81831212e-04 4.87893917e-04 2.34708053e-04 -1.64345455e-03 -1.33863305e-04 + -1.09531821e-04 -2.90456558e-04 -1.38868490e-04 -1.73166473e-05 1.77813301e-04 -2.12664529e-04 + -1.50616243e-04 -1.28959216e-05 5.99996764e-07 -3.73394965e-05 1.98059666e-05 5.19849980e-05 + -3.82718601e-03 -1.37608422e-03 -5.17453380e-03 5.17453380e-03 -6.68794798e-03 1.22864091e-03 + -1.22864091e-03 2.71659526e-03 3.59092293e-04 -1.00120812e-03 1.78156593e-04 6.21966096e-04 + -1.78156593e-04 1.53833614e-04 3.40108044e-04 -6.29980068e-05 2.66447636e-04 6.29980068e-05 + -4.32211930e-05 -7.92112878e-05 1.68344278e-04 -2.46177839e-04 1.15764614e-03 -4.90880038e-05 + 3.37274593e-05 -4.11149148e-05 2.38367158e-05 5.86932725e-05 -9.67168221e-05 3.45638212e-05 + 7.58567405e-05 -1.49714015e-05 -2.94159168e-05 8.32396539e-06 -3.47201149e-05 -2.03365325e-06 + 4.32211930e-05 7.92112878e-05 -2.46177839e-04 1.68344278e-04 -1.15764614e-03 3.37274593e-05 + -4.90880038e-05 4.11149148e-05 -1.80147894e-05 -5.86932725e-05 7.58567405e-05 -3.79251120e-05 + -9.67168221e-05 2.25828007e-05 2.94159168e-05 -2.03365325e-06 3.03256715e-05 8.32396539e-06 + 9.84906468e-05 -1.79200616e-04 -9.18613178e-05 9.18613178e-05 1.52770194e-03 4.83216506e-05 + -4.83216506e-05 1.73541755e-04 -1.97121130e-05 3.61778330e-06 -1.49893680e-04 -3.41423812e-05 + 1.49893680e-04 -3.96932939e-05 -7.66706512e-05 -4.14035408e-05 -6.87508018e-05 4.14035408e-05 + 6.67706969e-05 -4.18937837e-05 7.45969181e-05 1.12273218e-04 -6.05429474e-04 2.88076218e-05 + -3.10442121e-05 1.34796907e-05 1.75276450e-05 -5.24749678e-06 7.36902783e-05 3.30323248e-05 + -3.69594297e-05 -6.41357712e-06 2.04077618e-05 -1.62988458e-05 -2.69404586e-06 5.98147328e-06 + 1.31601898e-04 1.82387210e-04 4.62587853e-06 -4.62587853e-06 -1.30387872e-03 -1.29760260e-05 + 1.29760260e-05 -4.19828087e-04 -9.68534862e-06 -7.61621286e-05 1.09664335e-04 -1.67755159e-05 + -1.09664335e-04 3.65098786e-05 4.45914109e-05 -1.90489347e-05 6.32369648e-05 1.90489347e-05 + -3.88523055e-04 -8.85973492e-05 -3.47371991e-04 5.25536569e-04 -1.04729953e-04 5.30411328e-05 + -8.30590853e-05 1.44375194e-04 -1.60028889e-05 -7.80742034e-05 2.98642161e-05 -2.79830331e-05 + -2.66165731e-06 1.95490272e-06 2.25812157e-05 1.61583336e-05 1.13319057e-05 -2.14258848e-05 + 1.15650239e-04 -7.25621619e-05 -8.65733944e-05 -2.13161289e-05 -1.04863461e-03 5.24788566e-05 + -5.11875606e-05 2.33475092e-05 3.30323248e-05 -9.08893104e-06 8.52221754e-05 5.56700882e-05 + -1.06428741e-04 -2.69404586e-06 3.53472802e-05 -1.63169534e-05 -9.52439333e-06 2.22736913e-05 + 3.88523055e-04 8.85973492e-05 5.25536569e-04 -3.47371991e-04 1.04729953e-04 -8.30590853e-05 + 5.30411328e-05 -1.44375194e-04 1.62325731e-05 7.80742034e-05 -2.66165731e-06 2.78504249e-05 + 2.98642161e-05 -8.83626684e-06 -2.25812157e-05 -2.14258848e-05 -7.35894826e-06 1.61583336e-05 + 5.89296470e-04 4.49830593e-04 3.42761201e-04 -3.65784594e-04 1.01588060e-03 -2.17290983e-04 + 2.00108528e-04 -4.34342346e-04 -5.28287564e-05 7.29340896e-05 -8.63365657e-05 -9.10888080e-05 + 6.51116936e-05 6.58384394e-06 -3.92585573e-05 1.03938418e-05 8.49011122e-06 -2.66281581e-06 + 1.05802479e-03 1.25876572e-03 2.44658820e-04 -2.44658820e-04 -8.58715992e-03 -1.23986061e-04 + 1.23986061e-04 -2.72093126e-03 -8.64887097e-05 -4.42598878e-04 7.48922047e-04 -1.49802839e-04 + -7.48922047e-04 2.22815963e-04 2.55885984e-04 -1.02343382e-04 3.85928570e-04 1.02343382e-04 + -1.49684177e-03 -5.65539978e-04 -1.58939046e-03 2.07736030e-03 2.40029426e-03 2.24506958e-04 + -2.89908712e-04 5.07233723e-04 -2.93143679e-05 -2.33495083e-04 -6.72763016e-05 -8.83093056e-05 + 1.76038044e-04 -4.13904274e-05 6.46450952e-05 3.64525555e-05 -2.97080209e-05 -7.28100057e-05 + 1.02069143e-03 7.79129442e-04 6.20264940e-04 -6.06972377e-04 1.75955682e-03 -3.56518433e-04 + 3.66438728e-04 -7.52303012e-04 -9.10888080e-05 1.26325549e-04 -1.25030947e-04 -1.58009052e-04 + 1.37285133e-04 8.49011122e-06 -6.79978160e-05 9.07564222e-06 1.63873799e-05 -1.35391522e-05 + 1.49684177e-03 5.65539978e-04 2.07736030e-03 -1.58939046e-03 -2.40029426e-03 -2.89908712e-04 + 2.24506958e-04 -5.07233723e-04 6.18209181e-05 2.33495083e-04 1.76038044e-04 6.95416401e-05 + -6.72763016e-05 5.03268705e-06 -6.46450952e-05 -7.28100057e-05 5.06991721e-05 3.64525555e-05 + # CSR column indices + 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 + 16 17 0 1 2 3 4 5 6 7 8 9 10 11 12 13 + 14 15 16 17 0 1 2 3 4 5 6 7 8 9 10 11 + 12 13 14 15 16 17 0 1 2 3 4 5 6 7 8 9 + 10 11 12 13 14 15 16 17 0 1 2 3 4 5 6 7 + 8 9 10 11 12 13 14 15 16 17 0 1 2 3 4 5 + 6 7 8 9 10 11 12 13 14 15 16 17 0 1 2 3 + 4 5 6 7 8 9 10 11 12 13 14 15 16 17 0 1 + 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 + 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 + 16 17 0 1 2 3 4 5 6 7 8 9 10 11 12 13 + 14 15 16 17 0 1 2 3 4 5 6 7 8 9 10 11 + 12 13 14 15 16 17 0 1 2 3 4 5 6 7 8 9 + 10 11 12 13 14 15 16 17 0 1 2 3 4 5 6 7 + 8 9 10 11 12 13 14 15 16 17 0 1 2 3 4 5 + 6 7 8 9 10 11 12 13 14 15 16 17 0 1 2 3 + 4 5 6 7 8 9 10 11 12 13 14 15 16 17 0 1 + 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 + 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 + 16 17 0 1 2 3 4 5 6 7 8 9 10 11 12 13 + 14 15 16 17 + # CSR row pointers + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 18 36 54 72 90 108 126 144 162 180 198 216 234 + 252 270 288 306 324 + + 0 0 -1 292 + # CSR values + 4.83633576e-03 1.77796618e-03 -1.23436283e-02 -5.35648805e-03 -5.35648805e-03 4.80398852e-03 + 1.80572374e-03 1.80572374e-03 2.28109124e-04 -5.23984616e-04 -5.23984616e-04 -1.18509635e-03 + 2.63499088e-04 -1.11056189e-04 -1.11056189e-04 4.29770605e-04 1.52238262e-03 -2.33195615e-04 + -8.81302498e-03 -3.06854993e-03 -3.06854993e-03 6.61580720e-04 4.21582298e-04 4.21582298e-04 + 3.51928440e-05 -5.85385830e-04 -5.85385830e-04 -7.38795817e-04 4.32345334e-04 -1.97736854e-05 + -1.97736854e-05 2.90054585e-04 3.82718601e-03 1.37608422e-03 -6.68794798e-03 -5.17453380e-03 + -5.17453380e-03 2.71659526e-03 1.22864091e-03 1.22864091e-03 7.18184585e-04 -1.78156593e-04 + -1.78156593e-04 -1.00120812e-03 3.07667228e-04 6.29980068e-05 6.29980068e-05 3.40108044e-04 + 1.19590030e-03 3.81831212e-04 1.64345455e-03 2.34708053e-04 -4.87893917e-04 2.90456558e-04 + -1.09531821e-04 1.33863305e-04 2.53607130e-04 1.50616243e-04 1.77813301e-04 1.39313758e-05 + 1.73166473e-05 -1.07045094e-05 -5.19849980e-05 -3.73394965e-05 2.10711790e-05 -5.99996764e-07 + 1.19590030e-03 3.81831212e-04 1.64345455e-03 -4.87893917e-04 2.34708053e-04 2.90456558e-04 + 1.33863305e-04 -1.09531821e-04 2.53607130e-04 1.77813301e-04 1.50616243e-04 -1.39313758e-05 + 1.73166473e-05 -1.07045094e-05 -3.73394965e-05 -5.19849980e-05 -2.10711790e-05 -5.99996764e-07 + -9.84906468e-05 1.79200616e-04 1.52770194e-03 -9.18613178e-05 -9.18613178e-05 1.73541755e-04 + 4.83216506e-05 4.83216506e-05 -3.94242259e-05 1.49893680e-04 1.49893680e-04 3.61778330e-06 + -7.93865879e-05 4.14035408e-05 4.14035408e-05 -7.66706512e-05 4.32211930e-05 7.92112878e-05 + 1.15764614e-03 1.68344278e-04 2.46177839e-04 -4.11149148e-05 -4.90880038e-05 -3.37274593e-05 + 4.18515051e-05 9.67168221e-05 7.58567405e-05 -3.36129078e-06 5.86932725e-05 -3.75542023e-05 + -8.32396539e-06 -2.03365325e-06 -4.39444337e-06 -2.94159168e-05 4.32211930e-05 7.92112878e-05 + 1.15764614e-03 2.46177839e-04 1.68344278e-04 -4.11149148e-05 -3.37274593e-05 -4.90880038e-05 + 4.18515051e-05 7.58567405e-05 9.67168221e-05 3.36129078e-06 5.86932725e-05 -3.75542023e-05 + -2.03365325e-06 -8.32396539e-06 4.39444337e-06 -2.94159168e-05 -1.33541394e-04 8.37875674e-05 + -1.21085895e-03 -3.76762998e-05 -3.76762998e-05 2.69593815e-05 5.98518339e-05 5.98518339e-05 + 7.47413098e-05 -1.10649708e-04 -1.10649708e-04 -1.04949936e-05 -1.10798014e-05 2.22803191e-05 + 2.22803191e-05 4.08155235e-05 -3.88523055e-04 -8.85973492e-05 1.04729953e-04 3.47371991e-04 + 5.25536569e-04 -1.44375194e-04 -5.30411328e-05 -8.30590853e-05 3.22354620e-05 2.98642161e-05 + 2.66165731e-06 1.32608223e-07 7.80742034e-05 -1.07911696e-05 1.61583336e-05 2.14258848e-05 + -3.97295743e-06 -2.25812157e-05 -3.88523055e-04 -8.85973492e-05 1.04729953e-04 5.25536569e-04 + 3.47371991e-04 -1.44375194e-04 -8.30590853e-05 -5.30411328e-05 3.22354620e-05 2.66165731e-06 + 2.98642161e-05 -1.32608223e-07 7.80742034e-05 -1.07911696e-05 2.14258848e-05 1.61583336e-05 + 3.97295743e-06 -2.25812157e-05 -1.07889523e-04 1.07889523e-04 1.29129602e-06 -1.29129602e-06 + 2.12065653e-05 -2.12065653e-05 -1.54357664e-06 -5.95673782e-06 5.95673782e-06 -4.85816901e-06 + -1.31601898e-04 -1.82387210e-04 -1.30387872e-03 4.62587853e-06 4.62587853e-06 -4.19828087e-04 + -1.29760260e-05 -1.29760260e-05 -1.93706972e-05 -1.09664335e-04 -1.09664335e-04 -7.61621286e-05 + 7.30197573e-05 1.90489347e-05 1.90489347e-05 4.45914109e-05 -1.17859294e-03 -8.99661186e-04 + 2.03176121e-03 7.08545795e-04 7.08545795e-04 -8.68684693e-04 -4.17399512e-04 -4.17399512e-04 + -2.10599200e-04 1.51448259e-04 1.51448259e-04 1.45868179e-04 2.12891479e-05 -1.30566576e-05 + -1.30566576e-05 -7.85171147e-05 -1.49684177e-03 -5.65539978e-04 -2.40029426e-03 1.58939046e-03 + 2.07736030e-03 -5.07233723e-04 -2.24506958e-04 -2.89908712e-04 9.11352860e-05 -6.72763016e-05 + -1.76038044e-04 1.87676655e-05 2.33495083e-04 4.64231145e-05 3.64525555e-05 7.28100057e-05 + -2.09911512e-05 -6.46450952e-05 -1.49684177e-03 -5.65539978e-04 -2.40029426e-03 2.07736030e-03 + 1.58939046e-03 -5.07233723e-04 -2.89908712e-04 -2.24506958e-04 9.11352860e-05 -1.76038044e-04 + -6.72763016e-05 -1.87676655e-05 2.33495083e-04 4.64231145e-05 7.28100057e-05 3.64525555e-05 + 2.09911512e-05 -6.46450952e-05 1.32925626e-05 -1.32925626e-05 9.92029510e-06 -9.92029510e-06 + -1.22541856e-05 1.22541856e-05 -2.38608569e-07 4.46350994e-06 -4.46350994e-06 1.68207595e-06 + -1.05802479e-03 -1.25876572e-03 -8.58715992e-03 2.44658820e-04 2.44658820e-04 -2.72093126e-03 + -1.23986061e-04 -1.23986061e-04 -1.72977419e-04 -7.48922047e-04 -7.48922047e-04 -4.42598878e-04 + 4.45631927e-04 1.02343382e-04 1.02343382e-04 2.55885984e-04 + # CSR column indices + 0 1 2 3 4 5 6 7 8 9 10 12 13 14 15 17 + 0 1 2 3 4 5 6 7 8 9 10 12 13 14 15 17 + 0 1 2 3 4 5 6 7 8 9 10 12 13 14 15 17 + 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 + 16 17 0 1 2 3 4 5 6 7 8 9 10 11 12 13 + 14 15 16 17 0 1 2 3 4 5 6 7 8 9 10 12 + 13 14 15 17 0 1 2 3 4 5 6 7 8 9 10 11 + 12 13 14 15 16 17 0 1 2 3 4 5 6 7 8 9 + 10 11 12 13 14 15 16 17 0 1 2 3 4 5 6 7 + 8 9 10 12 13 14 15 17 0 1 2 3 4 5 6 7 + 8 9 10 11 12 13 14 15 16 17 0 1 2 3 4 5 + 6 7 8 9 10 11 12 13 14 15 16 17 3 4 6 7 + 9 10 11 14 15 16 0 1 2 3 4 5 6 7 8 9 + 10 12 13 14 15 17 0 1 2 3 4 5 6 7 8 9 + 10 12 13 14 15 17 0 1 2 3 4 5 6 7 8 9 + 10 11 12 13 14 15 16 17 0 1 2 3 4 5 6 7 + 8 9 10 11 12 13 14 15 16 17 3 4 6 7 9 10 + 11 14 15 16 0 1 2 3 4 5 6 7 8 9 10 12 + 13 14 15 17 + # CSR row pointers + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 16 32 48 66 84 100 118 136 152 170 188 198 214 + 230 248 266 276 292 + + 0 0 0 1136 + # CSR values + 1.99447523e+00 7.46749003e-02 -2.22379493e-01 2.22379493e-01 2.22379493e-01 7.89929222e-02 + -7.89929222e-02 -7.89929222e-02 -3.74808871e-02 -3.74808871e-02 3.74808871e-02 -4.93891993e-02 + -4.93891993e-02 4.93891993e-02 -4.49629541e-01 7.21713855e-02 -9.51648748e-02 9.51648748e-02 + 9.51648748e-02 -2.41843629e-02 2.41843629e-02 2.41843629e-02 -2.36584799e-03 -2.36584799e-03 + 2.36584799e-03 5.31881801e-04 5.31881801e-04 -5.31881801e-04 7.46749003e-02 2.55470739e-02 + -4.49600797e-02 4.49600797e-02 4.49600797e-02 -7.37722108e-03 7.37722108e-03 7.37722108e-03 + -2.72033596e-02 -2.72033596e-02 2.72033596e-02 -5.41976847e-02 -5.41976847e-02 5.41976847e-02 + -5.24386207e-02 3.30105144e-02 -1.16353130e-02 1.16353130e-02 1.16353130e-02 1.02158120e-03 + -1.02158120e-03 -1.02158120e-03 1.47285739e-02 1.47285739e-02 -1.47285739e-02 8.97505345e-02 + 8.97505345e-02 -8.97505345e-02 -2.22379493e-01 -4.49600797e-02 9.77551266e-01 2.98462552e-01 + 2.98462552e-01 -1.11523319e-01 -6.64806737e-02 -6.64806737e-02 -4.28311414e-02 4.40764987e-02 + 4.40764987e-02 8.23246292e-02 5.70152127e-02 -2.48765263e-02 -2.48765263e-02 -2.05201056e-02 + 2.58533388e-01 -1.22434145e-01 2.94002128e-01 9.14091399e-02 9.14091399e-02 6.21966011e-02 + 3.27961863e-02 3.27961863e-02 -5.23141141e-02 -2.15369064e-02 -2.15369064e-02 2.38019827e-02 + -5.10898584e-03 -1.58453646e-01 -1.58453646e-01 9.58599433e-02 2.22379493e-01 4.49600797e-02 + 2.98462552e-01 9.77551266e-01 -2.98462552e-01 -6.64806737e-02 -1.11523319e-01 6.64806737e-02 + -2.14155707e-02 -4.40764987e-02 8.23246292e-02 3.70928565e-02 4.40764987e-02 2.85076063e-02 + 2.48765263e-02 -2.05201056e-02 -4.93766226e-02 -2.48765263e-02 -2.58533388e-01 1.22434145e-01 + 9.14091399e-02 2.94002128e-01 -9.14091399e-02 3.27961863e-02 6.21966011e-02 -3.27961863e-02 + -2.61570571e-02 2.15369064e-02 2.38019827e-02 4.53053518e-02 -2.15369064e-02 -2.55449292e-03 + 1.58453646e-01 9.58599433e-02 4.42451153e-03 -1.58453646e-01 2.22379493e-01 4.49600797e-02 + 2.98462552e-01 -2.98462552e-01 9.77551266e-01 -6.64806737e-02 6.64806737e-02 -1.11523319e-01 + -2.14155707e-02 8.23246292e-02 -4.40764987e-02 -3.70928565e-02 4.40764987e-02 2.85076063e-02 + -2.05201056e-02 2.48765263e-02 4.93766226e-02 -2.48765263e-02 -2.58533388e-01 1.22434145e-01 + 9.14091399e-02 -9.14091399e-02 2.94002128e-01 3.27961863e-02 -3.27961863e-02 6.21966011e-02 + -2.61570571e-02 2.38019827e-02 2.15369064e-02 -4.53053518e-02 -2.15369064e-02 -2.55449292e-03 + 9.58599433e-02 1.58453646e-01 -4.42451153e-03 -1.58453646e-01 7.89929222e-02 -7.37722108e-03 + -1.11523319e-01 -6.64806737e-02 -6.64806737e-02 3.94435362e-02 2.39363530e-03 2.39363530e-03 + 2.37672555e-02 -7.76925693e-03 -7.76925693e-03 -1.70753474e-02 7.47603687e-02 -8.28614469e-03 + -8.28614469e-03 -3.80660903e-03 -5.02390910e-02 1.86588100e-03 -4.39573676e-02 -2.09111469e-02 + -2.09111469e-02 -1.20335276e-02 -2.79335077e-03 -2.79335077e-03 8.93701818e-03 -4.03979001e-03 + -4.03979001e-03 2.55889373e-02 -1.49764110e-03 -1.74537025e-02 -1.74537025e-02 1.64565616e-01 + -7.89929222e-02 7.37722108e-03 -6.64806737e-02 -1.11523319e-01 6.64806737e-02 2.39363530e-03 + 3.94435362e-02 -2.39363530e-03 1.18836278e-02 7.76925693e-03 -1.70753474e-02 -2.05830471e-02 + -7.76925693e-03 3.73801843e-02 8.28614469e-03 -3.80660903e-03 -6.47443784e-02 -8.28614469e-03 + 5.02390910e-02 -1.86588100e-03 -2.09111469e-02 -4.39573676e-02 2.09111469e-02 -2.79335077e-03 + -1.20335276e-02 2.79335077e-03 4.46850909e-03 4.03979001e-03 2.55889373e-02 -7.73968477e-03 + -4.03979001e-03 -7.48820549e-04 1.74537025e-02 1.64565616e-01 1.29699524e-03 -1.74537025e-02 + -7.89929222e-02 7.37722108e-03 -6.64806737e-02 6.64806737e-02 -1.11523319e-01 2.39363530e-03 + -2.39363530e-03 3.94435362e-02 1.18836278e-02 -1.70753474e-02 7.76925693e-03 2.05830471e-02 + -7.76925693e-03 3.73801843e-02 -3.80660903e-03 8.28614469e-03 6.47443784e-02 -8.28614469e-03 + 5.02390910e-02 -1.86588100e-03 -2.09111469e-02 2.09111469e-02 -4.39573676e-02 -2.79335077e-03 + 2.79335077e-03 -1.20335276e-02 4.46850909e-03 2.55889373e-02 4.03979001e-03 7.73968477e-03 + -4.03979001e-03 -7.48820549e-04 1.64565616e-01 1.74537025e-02 -1.29699524e-03 -1.74537025e-02 + -4.28311414e-02 -2.14155707e-02 -2.14155707e-02 2.37672555e-02 1.18836278e-02 1.18836278e-02 + 3.54669979e-01 7.26576515e-03 7.26576515e-03 1.45315303e-02 7.18261904e-01 7.54444351e-03 + 7.54444351e-03 1.50888870e-02 -1.11667259e-02 -5.58336295e-03 -5.58336295e-03 -8.84179977e-03 + -4.42089989e-03 -4.42089989e-03 1.41554490e-02 -1.96938653e-02 -1.96938653e-02 -3.93877305e-02 + -1.06626529e-02 -1.09187999e-01 -1.09187999e-01 -2.18375999e-01 -3.74808871e-02 -2.72033596e-02 + 4.40764987e-02 -4.40764987e-02 8.23246292e-02 -7.76925693e-03 7.76925693e-03 -1.70753474e-02 + 7.26576515e-03 3.02337851e-01 6.79730921e-03 1.25846744e-02 -6.79730921e-03 1.16106132e-02 + 7.03701958e-01 1.21539340e-02 2.01101720e-02 -1.21539340e-02 2.30584066e-02 -2.08232201e-03 + 1.15678485e-02 -1.15678485e-02 2.92744701e-02 2.43171993e-03 -2.43171993e-03 5.13531195e-03 + 2.10043676e-04 -6.37302926e-03 -5.44142768e-03 3.63806319e-04 5.44142768e-03 -4.27581139e-03 + -4.63962039e-02 -3.19492324e-02 -7.40592258e-03 3.19492324e-02 -3.74808871e-02 -2.72033596e-02 + 4.40764987e-02 8.23246292e-02 -4.40764987e-02 -7.76925693e-03 -1.70753474e-02 7.76925693e-03 + 7.26576515e-03 6.79730921e-03 3.02337851e-01 -1.25846744e-02 -6.79730921e-03 1.16106132e-02 + 1.21539340e-02 7.03701958e-01 -2.01101720e-02 -1.21539340e-02 2.30584066e-02 -2.08232201e-03 + 1.15678485e-02 2.92744701e-02 -1.15678485e-02 2.43171993e-03 5.13531195e-03 -2.43171993e-03 + 2.10043676e-04 -5.44142768e-03 -6.37302926e-03 -3.63806319e-04 5.44142768e-03 -4.27581139e-03 + -3.19492324e-02 -4.63962039e-02 7.40592258e-03 3.19492324e-02 3.70928565e-02 -3.70928565e-02 + -2.05830471e-02 2.05830471e-02 1.25846744e-02 -1.25846744e-02 3.54669979e-01 1.30673595e-02 + -1.30673595e-02 7.18261904e-01 9.67066830e-03 -9.67066830e-03 7.65722322e-03 -7.65722322e-03 + -3.41107753e-02 3.41107753e-02 1.41554490e-02 -1.89119162e-01 1.89119162e-01 -1.06626529e-02 + 3.74808871e-02 2.72033596e-02 8.23246292e-02 4.40764987e-02 4.40764987e-02 -1.70753474e-02 + -7.76925693e-03 -7.76925693e-03 1.45315303e-02 -6.79730921e-03 -6.79730921e-03 3.02337851e-01 + 2.32212265e-02 -1.21539340e-02 -1.21539340e-02 7.03701958e-01 -2.30584066e-02 2.08232201e-03 + 2.92744701e-02 1.15678485e-02 1.15678485e-02 5.13531195e-03 2.43171993e-03 2.43171993e-03 + 4.20087353e-04 5.44142768e-03 5.44142768e-03 -6.37302926e-03 -8.55162279e-03 3.19492324e-02 + 3.19492324e-02 -4.63962039e-02 5.70152127e-02 2.85076063e-02 2.85076063e-02 7.47603687e-02 + 3.73801843e-02 3.73801843e-02 7.18261904e-01 1.16106132e-02 1.16106132e-02 2.32212265e-02 + 1.69229336e+00 -1.06458214e-02 -1.06458214e-02 -2.12916427e-02 -1.12937377e-02 -5.64686886e-03 + -5.64686886e-03 -1.12856250e-02 -5.64281250e-03 -5.64281250e-03 -9.48451602e-03 -2.88605703e-03 + -2.88605703e-03 -5.77211407e-03 8.18637778e-02 4.57878365e-03 4.57878365e-03 9.15756730e-03 + -4.93891993e-02 -5.41976847e-02 -2.48765263e-02 2.48765263e-02 -2.05201056e-02 -8.28614469e-03 + 8.28614469e-03 -3.80660903e-03 7.54444351e-03 7.03701958e-01 1.21539340e-02 1.30673595e-02 + -1.21539340e-02 -1.06458214e-02 1.71139506e+00 -7.09595644e-03 -1.84391035e-02 7.09595644e-03 + 8.39219441e-02 -7.55363348e-03 -1.11462266e-02 1.11462266e-02 2.17842311e-03 -2.14163986e-03 + 2.14163986e-03 -5.01676152e-03 1.02131429e-02 -7.13847641e-04 -6.14514923e-03 1.76896824e-02 + 6.14514923e-03 -1.86800513e-02 -1.05033090e-02 -4.16942861e-02 -3.23547979e-02 4.16942861e-02 + -4.93891993e-02 -5.41976847e-02 -2.48765263e-02 -2.05201056e-02 2.48765263e-02 -8.28614469e-03 + -3.80660903e-03 8.28614469e-03 7.54444351e-03 1.21539340e-02 7.03701958e-01 -1.30673595e-02 + -1.21539340e-02 -1.06458214e-02 -7.09595644e-03 1.71139506e+00 1.84391035e-02 7.09595644e-03 + 8.39219441e-02 -7.55363348e-03 -1.11462266e-02 2.17842311e-03 1.11462266e-02 -2.14163986e-03 + -5.01676152e-03 2.14163986e-03 1.02131429e-02 -6.14514923e-03 -7.13847641e-04 -1.76896824e-02 + 6.14514923e-03 -1.86800513e-02 -4.16942861e-02 -1.05033090e-02 3.23547979e-02 4.16942861e-02 + -4.93766226e-02 4.93766226e-02 -6.47443784e-02 6.47443784e-02 2.01101720e-02 -2.01101720e-02 + 7.18261904e-01 -1.84391035e-02 1.84391035e-02 1.69229336e+00 9.78066377e-03 -9.78066377e-03 + 9.77363794e-03 -9.77363794e-03 -4.99879742e-03 4.99879742e-03 -9.48451602e-03 7.93068592e-03 + -7.93068592e-03 8.18637778e-02 4.93891993e-02 5.41976847e-02 -2.05201056e-02 -2.48765263e-02 + -2.48765263e-02 -3.80660903e-03 -8.28614469e-03 -8.28614469e-03 1.50888870e-02 -1.21539340e-02 + -1.21539340e-02 7.03701958e-01 -2.12916427e-02 7.09595644e-03 7.09595644e-03 1.71139506e+00 + -8.39219441e-02 7.55363348e-03 2.17842311e-03 -1.11462266e-02 -1.11462266e-02 -5.01676152e-03 + -2.14163986e-03 -2.14163986e-03 2.04262857e-02 6.14514923e-03 6.14514923e-03 -7.13847641e-04 + -3.73601025e-02 4.16942861e-02 4.16942861e-02 -1.05033090e-02 -4.49629541e-01 -5.24386207e-02 + 2.58533388e-01 -2.58533388e-01 -2.58533388e-01 -5.02390910e-02 5.02390910e-02 5.02390910e-02 + 2.30584066e-02 2.30584066e-02 -2.30584066e-02 8.39219441e-02 8.39219441e-02 -8.39219441e-02 + 1.26302309e+00 -4.39305480e-01 8.66789462e-02 -8.66789462e-02 -8.66789462e-02 3.97856605e-03 + -3.97856605e-03 -3.97856605e-03 3.62524646e-02 3.62524646e-02 -3.62524646e-02 2.02283620e-01 + 2.02283620e-01 -2.02283620e-01 7.21713855e-02 3.30105144e-02 -1.22434145e-01 1.22434145e-01 + 1.22434145e-01 1.86588100e-03 -1.86588100e-03 -1.86588100e-03 -2.08232201e-03 -2.08232201e-03 + 2.08232201e-03 -7.55363348e-03 -7.55363348e-03 7.55363348e-03 -4.39305480e-01 1.79823310e-01 + -3.58978749e-02 3.58978749e-02 3.58978749e-02 1.76400264e-03 -1.76400264e-03 -1.76400264e-03 + 3.85441406e-03 3.85441406e-03 -3.85441406e-03 2.80573249e-02 2.80573249e-02 -2.80573249e-02 + -9.51648748e-02 -1.16353130e-02 2.94002128e-01 9.14091399e-02 9.14091399e-02 -4.39573676e-02 + -2.09111469e-02 -2.09111469e-02 -1.11667259e-02 1.15678485e-02 1.15678485e-02 2.92744701e-02 + -1.12937377e-02 -1.11462266e-02 -1.11462266e-02 2.17842311e-03 8.66789462e-02 -3.58978749e-02 + 9.50256758e-02 2.98591138e-02 2.98591138e-02 1.98707039e-02 9.51075881e-03 9.51075881e-03 + -2.14929543e-02 -1.01032633e-02 -1.01032633e-02 -7.34339247e-03 1.57247426e-02 -7.11328543e-02 + -7.11328543e-02 -6.12172291e-02 9.51648748e-02 1.16353130e-02 9.14091399e-02 2.94002128e-01 + -9.14091399e-02 -2.09111469e-02 -4.39573676e-02 2.09111469e-02 -5.58336295e-03 -1.15678485e-02 + 2.92744701e-02 9.67066830e-03 1.15678485e-02 -5.64686886e-03 1.11462266e-02 2.17842311e-03 + 9.78066377e-03 -1.11462266e-02 -8.66789462e-02 3.58978749e-02 2.98591138e-02 9.50256758e-02 + -2.98591138e-02 9.51075881e-03 1.98707039e-02 -9.51075881e-03 -1.07464772e-02 1.01032633e-02 + -7.34339247e-03 1.86134444e-02 -1.01032633e-02 7.86237131e-03 7.11328543e-02 -6.12172291e-02 + -1.36180266e-02 -7.11328543e-02 9.51648748e-02 1.16353130e-02 9.14091399e-02 -9.14091399e-02 + 2.94002128e-01 -2.09111469e-02 2.09111469e-02 -4.39573676e-02 -5.58336295e-03 2.92744701e-02 + -1.15678485e-02 -9.67066830e-03 1.15678485e-02 -5.64686886e-03 2.17842311e-03 1.11462266e-02 + -9.78066377e-03 -1.11462266e-02 -8.66789462e-02 3.58978749e-02 2.98591138e-02 -2.98591138e-02 + 9.50256758e-02 9.51075881e-03 -9.51075881e-03 1.98707039e-02 -1.07464772e-02 -7.34339247e-03 + 1.01032633e-02 -1.86134444e-02 -1.01032633e-02 7.86237131e-03 -6.12172291e-02 7.11328543e-02 + 1.36180266e-02 -7.11328543e-02 -2.41843629e-02 1.02158120e-03 6.21966011e-02 3.27961863e-02 + 3.27961863e-02 -1.20335276e-02 -2.79335077e-03 -2.79335077e-03 -8.84179977e-03 2.43171993e-03 + 2.43171993e-03 5.13531195e-03 -1.12856250e-02 -2.14163986e-03 -2.14163986e-03 -5.01676152e-03 + 3.97856605e-03 1.76400264e-03 1.98707039e-02 9.51075881e-03 9.51075881e-03 5.40815424e-03 + 1.95738821e-03 1.95738821e-03 -1.62239407e-03 1.34827237e-03 1.34827237e-03 -2.24275102e-03 + -8.42252001e-03 5.86125691e-03 5.86125691e-03 -1.74708584e-02 2.41843629e-02 -1.02158120e-03 + 3.27961863e-02 6.21966011e-02 -3.27961863e-02 -2.79335077e-03 -1.20335276e-02 2.79335077e-03 + -4.42089989e-03 -2.43171993e-03 5.13531195e-03 7.65722322e-03 2.43171993e-03 -5.64281250e-03 + 2.14163986e-03 -5.01676152e-03 9.77363794e-03 -2.14163986e-03 -3.97856605e-03 -1.76400264e-03 + 9.51075881e-03 1.98707039e-02 -9.51075881e-03 1.95738821e-03 5.40815424e-03 -1.95738821e-03 + -8.11197034e-04 -1.34827237e-03 -2.24275102e-03 1.40503448e-03 1.34827237e-03 -4.21126000e-03 + -5.86125691e-03 -1.74708584e-02 7.29411629e-03 5.86125691e-03 2.41843629e-02 -1.02158120e-03 + 3.27961863e-02 -3.27961863e-02 6.21966011e-02 -2.79335077e-03 2.79335077e-03 -1.20335276e-02 + -4.42089989e-03 5.13531195e-03 -2.43171993e-03 -7.65722322e-03 2.43171993e-03 -5.64281250e-03 + -5.01676152e-03 2.14163986e-03 -9.77363794e-03 -2.14163986e-03 -3.97856605e-03 -1.76400264e-03 + 9.51075881e-03 -9.51075881e-03 1.98707039e-02 1.95738821e-03 -1.95738821e-03 5.40815424e-03 + -8.11197034e-04 -2.24275102e-03 -1.34827237e-03 -1.40503448e-03 1.34827237e-03 -4.21126000e-03 + -1.74708584e-02 -5.86125691e-03 -7.29411629e-03 5.86125691e-03 -5.23141141e-02 -2.61570571e-02 + -2.61570571e-02 8.93701818e-03 4.46850909e-03 4.46850909e-03 1.41554490e-02 2.10043676e-04 + 2.10043676e-04 4.20087353e-04 -9.48451602e-03 1.02131429e-02 1.02131429e-02 2.04262857e-02 + -2.14929543e-02 -1.07464772e-02 -1.07464772e-02 -1.62239407e-03 -8.11197034e-04 -8.11197034e-04 + 1.76258920e-01 -1.10175097e-03 -1.10175097e-03 -2.20350194e-03 -5.62873646e-01 1.01755649e-03 + 1.01755649e-03 2.03511297e-03 -2.36584799e-03 1.47285739e-02 -2.15369064e-02 2.15369064e-02 + 2.38019827e-02 -4.03979001e-03 4.03979001e-03 2.55889373e-02 -1.96938653e-02 -6.37302926e-03 + -5.44142768e-03 -3.41107753e-02 5.44142768e-03 -2.88605703e-03 -7.13847641e-04 -6.14514923e-03 + -4.99879742e-03 6.14514923e-03 3.62524646e-02 3.85441406e-03 -1.01032633e-02 1.01032633e-02 + -7.34339247e-03 1.34827237e-03 -1.34827237e-03 -2.24275102e-03 -1.10175097e-03 4.62212159e-02 + -8.35670247e-04 -1.90828866e-03 8.35670247e-04 3.64237810e-03 2.81524334e-01 -7.48229949e-03 + 6.30878392e-03 7.48229949e-03 -2.36584799e-03 1.47285739e-02 -2.15369064e-02 2.38019827e-02 + 2.15369064e-02 -4.03979001e-03 2.55889373e-02 4.03979001e-03 -1.96938653e-02 -5.44142768e-03 + -6.37302926e-03 3.41107753e-02 5.44142768e-03 -2.88605703e-03 -6.14514923e-03 -7.13847641e-04 + 4.99879742e-03 6.14514923e-03 3.62524646e-02 3.85441406e-03 -1.01032633e-02 -7.34339247e-03 + 1.01032633e-02 1.34827237e-03 -2.24275102e-03 -1.34827237e-03 -1.10175097e-03 -8.35670247e-04 + 4.62212159e-02 1.90828866e-03 8.35670247e-04 3.64237810e-03 -7.48229949e-03 2.81524334e-01 + -6.30878392e-03 7.48229949e-03 4.53053518e-02 -4.53053518e-02 -7.73968477e-03 7.73968477e-03 + 3.63806319e-04 -3.63806319e-04 1.41554490e-02 1.76896824e-02 -1.76896824e-02 -9.48451602e-03 + 1.86134444e-02 -1.86134444e-02 1.40503448e-03 -1.40503448e-03 -1.90828866e-03 1.90828866e-03 + 1.76258920e-01 1.76245953e-03 -1.76245953e-03 -5.62873646e-01 2.36584799e-03 -1.47285739e-02 + 2.38019827e-02 -2.15369064e-02 -2.15369064e-02 2.55889373e-02 -4.03979001e-03 -4.03979001e-03 + -3.93877305e-02 5.44142768e-03 5.44142768e-03 -6.37302926e-03 -5.77211407e-03 6.14514923e-03 + 6.14514923e-03 -7.13847641e-04 -3.62524646e-02 -3.85441406e-03 -7.34339247e-03 -1.01032633e-02 + -1.01032633e-02 -2.24275102e-03 1.34827237e-03 1.34827237e-03 -2.20350194e-03 8.35670247e-04 + 8.35670247e-04 4.62212159e-02 7.28475619e-03 7.48229949e-03 7.48229949e-03 2.81524334e-01 + -5.10898584e-03 -2.55449292e-03 -2.55449292e-03 -1.49764110e-03 -7.48820549e-04 -7.48820549e-04 + -1.06626529e-02 -4.27581139e-03 -4.27581139e-03 -8.55162279e-03 8.18637778e-02 -1.86800513e-02 + -1.86800513e-02 -3.73601025e-02 1.57247426e-02 7.86237131e-03 7.86237131e-03 -8.42252001e-03 + -4.21126000e-03 -4.21126000e-03 -5.62873646e-01 3.64237810e-03 3.64237810e-03 7.28475619e-03 + 1.83584414e+00 3.15252266e-03 3.15252266e-03 6.30504531e-03 5.31881801e-04 8.97505345e-02 + -1.58453646e-01 1.58453646e-01 9.58599433e-02 -1.74537025e-02 1.74537025e-02 1.64565616e-01 + -1.09187999e-01 -4.63962039e-02 -3.19492324e-02 -1.89119162e-01 3.19492324e-02 4.57878365e-03 + -1.05033090e-02 -4.16942861e-02 7.93068592e-03 4.16942861e-02 2.02283620e-01 2.80573249e-02 + -7.11328543e-02 7.11328543e-02 -6.12172291e-02 5.86125691e-03 -5.86125691e-03 -1.74708584e-02 + 1.01755649e-03 2.81524334e-01 -7.48229949e-03 1.76245953e-03 7.48229949e-03 3.15252266e-03 + 1.72060098e+00 -6.24238124e-02 5.46032941e-03 6.24238124e-02 5.31881801e-04 8.97505345e-02 + -1.58453646e-01 9.58599433e-02 1.58453646e-01 -1.74537025e-02 1.64565616e-01 1.74537025e-02 + -1.09187999e-01 -3.19492324e-02 -4.63962039e-02 1.89119162e-01 3.19492324e-02 4.57878365e-03 + -4.16942861e-02 -1.05033090e-02 -7.93068592e-03 4.16942861e-02 2.02283620e-01 2.80573249e-02 + -7.11328543e-02 -6.12172291e-02 7.11328543e-02 5.86125691e-03 -1.74708584e-02 -5.86125691e-03 + 1.01755649e-03 -7.48229949e-03 2.81524334e-01 -1.76245953e-03 7.48229949e-03 3.15252266e-03 + -6.24238124e-02 1.72060098e+00 -5.46032941e-03 6.24238124e-02 4.42451153e-03 -4.42451153e-03 + 1.29699524e-03 -1.29699524e-03 -7.40592258e-03 7.40592258e-03 -1.06626529e-02 -3.23547979e-02 + 3.23547979e-02 8.18637778e-02 -1.36180266e-02 1.36180266e-02 7.29411629e-03 -7.29411629e-03 + 6.30878392e-03 -6.30878392e-03 -5.62873646e-01 5.46032941e-03 -5.46032941e-03 1.83584414e+00 + -5.31881801e-04 -8.97505345e-02 9.58599433e-02 -1.58453646e-01 -1.58453646e-01 1.64565616e-01 + -1.74537025e-02 -1.74537025e-02 -2.18375999e-01 3.19492324e-02 3.19492324e-02 -4.63962039e-02 + 9.15756730e-03 4.16942861e-02 4.16942861e-02 -1.05033090e-02 -2.02283620e-01 -2.80573249e-02 + -6.12172291e-02 -7.11328543e-02 -7.11328543e-02 -1.74708584e-02 5.86125691e-03 5.86125691e-03 + 2.03511297e-03 7.48229949e-03 7.48229949e-03 2.81524334e-01 6.30504531e-03 6.24238124e-02 + 6.24238124e-02 1.72060098e+00 + # CSR column indices + 0 1 2 3 4 5 6 7 9 10 12 14 15 17 18 19 + 20 21 22 23 24 25 27 28 30 32 33 35 0 1 2 3 + 4 5 6 7 9 10 12 14 15 17 18 19 20 21 22 23 + 24 25 27 28 30 32 33 35 0 1 2 3 4 5 6 7 + 8 9 10 12 13 14 15 17 18 19 20 21 22 23 24 25 + 26 27 28 30 31 32 33 35 0 1 2 3 4 5 6 7 + 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 + 24 25 26 27 28 29 30 31 32 33 34 35 0 1 2 3 + 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 + 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 + 0 1 2 3 4 5 6 7 8 9 10 12 13 14 15 17 + 18 19 20 21 22 23 24 25 26 27 28 30 31 32 33 35 + 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 + 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 + 32 33 34 35 0 1 2 3 4 5 6 7 8 9 10 11 + 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 + 28 29 30 31 32 33 34 35 2 3 4 5 6 7 8 9 + 10 12 13 14 15 17 20 21 22 23 24 25 26 27 28 30 + 31 32 33 35 0 1 2 3 4 5 6 7 8 9 10 11 + 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 + 28 29 30 31 32 33 34 35 0 1 2 3 4 5 6 7 + 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 + 24 25 26 27 28 29 30 31 32 33 34 35 3 4 6 7 + 9 10 11 14 15 16 21 22 24 25 27 28 29 32 33 34 + 0 1 2 3 4 5 6 7 8 9 10 12 13 14 15 17 + 18 19 20 21 22 23 24 25 26 27 28 30 31 32 33 35 + 2 3 4 5 6 7 8 9 10 12 13 14 15 17 20 21 + 22 23 24 25 26 27 28 30 31 32 33 35 0 1 2 3 + 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 + 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 + 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 + 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 + 32 33 34 35 3 4 6 7 9 10 11 14 15 16 21 22 + 24 25 27 28 29 32 33 34 0 1 2 3 4 5 6 7 + 8 9 10 12 13 14 15 17 18 19 20 21 22 23 24 25 + 26 27 28 30 31 32 33 35 0 1 2 3 4 5 6 7 + 9 10 12 14 15 17 18 19 20 21 22 23 24 25 27 28 + 30 32 33 35 0 1 2 3 4 5 6 7 9 10 12 14 + 15 17 18 19 20 21 22 23 24 25 27 28 30 32 33 35 + 0 1 2 3 4 5 6 7 8 9 10 12 13 14 15 17 + 18 19 20 21 22 23 24 25 26 27 28 30 31 32 33 35 + 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 + 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 + 32 33 34 35 0 1 2 3 4 5 6 7 8 9 10 11 + 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 + 28 29 30 31 32 33 34 35 0 1 2 3 4 5 6 7 + 8 9 10 12 13 14 15 17 18 19 20 21 22 23 24 25 + 26 27 28 30 31 32 33 35 0 1 2 3 4 5 6 7 + 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 + 24 25 26 27 28 29 30 31 32 33 34 35 0 1 2 3 + 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 + 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 + 2 3 4 5 6 7 8 9 10 12 13 14 15 17 20 21 + 22 23 24 25 26 27 28 30 31 32 33 35 0 1 2 3 + 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 + 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 + 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 + 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 + 32 33 34 35 3 4 6 7 9 10 11 14 15 16 21 22 + 24 25 27 28 29 32 33 34 0 1 2 3 4 5 6 7 + 8 9 10 12 13 14 15 17 18 19 20 21 22 23 24 25 + 26 27 28 30 31 32 33 35 2 3 4 5 6 7 8 9 + 10 12 13 14 15 17 20 21 22 23 24 25 26 27 28 30 + 31 32 33 35 0 1 2 3 4 5 6 7 8 9 10 11 + 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 + 28 29 30 31 32 33 34 35 0 1 2 3 4 5 6 7 + 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 + 24 25 26 27 28 29 30 31 32 33 34 35 3 4 6 7 + 9 10 11 14 15 16 21 22 24 25 27 28 29 32 33 34 + 0 1 2 3 4 5 6 7 8 9 10 12 13 14 15 17 + 18 19 20 21 22 23 24 25 26 27 28 30 31 32 33 35 + # CSR row pointers + 0 28 56 88 124 160 192 228 264 292 328 364 384 416 444 480 + 516 536 568 596 624 656 692 728 760 796 832 860 896 932 952 984 + 1012 1048 1084 1104 1136 + + 0 0 1 292 + # CSR values + 4.83633576e-03 1.52238262e-03 3.82718601e-03 1.19590030e-03 1.19590030e-03 -9.84906468e-05 + 4.32211930e-05 4.32211930e-05 -1.33541394e-04 -3.88523055e-04 -3.88523055e-04 -1.31601898e-04 + -1.17859294e-03 -1.49684177e-03 -1.49684177e-03 -1.05802479e-03 1.77796618e-03 -2.33195615e-04 + 1.37608422e-03 3.81831212e-04 3.81831212e-04 1.79200616e-04 7.92112878e-05 7.92112878e-05 + 8.37875674e-05 -8.85973492e-05 -8.85973492e-05 -1.82387210e-04 -8.99661186e-04 -5.65539978e-04 + -5.65539978e-04 -1.25876572e-03 -1.23436283e-02 -8.81302498e-03 -6.68794798e-03 1.64345455e-03 + 1.64345455e-03 1.52770194e-03 1.15764614e-03 1.15764614e-03 -1.21085895e-03 1.04729953e-04 + 1.04729953e-04 -1.30387872e-03 2.03176121e-03 -2.40029426e-03 -2.40029426e-03 -8.58715992e-03 + -5.35648805e-03 -3.06854993e-03 -5.17453380e-03 2.34708053e-04 -4.87893917e-04 -9.18613178e-05 + 1.68344278e-04 2.46177839e-04 -3.76762998e-05 3.47371991e-04 5.25536569e-04 -1.07889523e-04 + 4.62587853e-06 7.08545795e-04 1.58939046e-03 2.07736030e-03 1.32925626e-05 2.44658820e-04 + -5.35648805e-03 -3.06854993e-03 -5.17453380e-03 -4.87893917e-04 2.34708053e-04 -9.18613178e-05 + 2.46177839e-04 1.68344278e-04 -3.76762998e-05 5.25536569e-04 3.47371991e-04 1.07889523e-04 + 4.62587853e-06 7.08545795e-04 2.07736030e-03 1.58939046e-03 -1.32925626e-05 2.44658820e-04 + 4.80398852e-03 6.61580720e-04 2.71659526e-03 2.90456558e-04 2.90456558e-04 1.73541755e-04 + -4.11149148e-05 -4.11149148e-05 2.69593815e-05 -1.44375194e-04 -1.44375194e-04 -4.19828087e-04 + -8.68684693e-04 -5.07233723e-04 -5.07233723e-04 -2.72093126e-03 1.80572374e-03 4.21582298e-04 + 1.22864091e-03 -1.09531821e-04 1.33863305e-04 4.83216506e-05 -4.90880038e-05 -3.37274593e-05 + 5.98518339e-05 -5.30411328e-05 -8.30590853e-05 1.29129602e-06 -1.29760260e-05 -4.17399512e-04 + -2.24506958e-04 -2.89908712e-04 9.92029510e-06 -1.23986061e-04 1.80572374e-03 4.21582298e-04 + 1.22864091e-03 1.33863305e-04 -1.09531821e-04 4.83216506e-05 -3.37274593e-05 -4.90880038e-05 + 5.98518339e-05 -8.30590853e-05 -5.30411328e-05 -1.29129602e-06 -1.29760260e-05 -4.17399512e-04 + -2.89908712e-04 -2.24506958e-04 -9.92029510e-06 -1.23986061e-04 2.28109124e-04 3.51928440e-05 + 7.18184585e-04 2.53607130e-04 2.53607130e-04 -3.94242259e-05 4.18515051e-05 4.18515051e-05 + 7.47413098e-05 3.22354620e-05 3.22354620e-05 -1.93706972e-05 -2.10599200e-04 9.11352860e-05 + 9.11352860e-05 -1.72977419e-04 -5.23984616e-04 -5.85385830e-04 -1.78156593e-04 1.50616243e-04 + 1.77813301e-04 1.49893680e-04 9.67168221e-05 7.58567405e-05 -1.10649708e-04 2.98642161e-05 + 2.66165731e-06 2.12065653e-05 -1.09664335e-04 1.51448259e-04 -6.72763016e-05 -1.76038044e-04 + -1.22541856e-05 -7.48922047e-04 -5.23984616e-04 -5.85385830e-04 -1.78156593e-04 1.77813301e-04 + 1.50616243e-04 1.49893680e-04 7.58567405e-05 9.67168221e-05 -1.10649708e-04 2.66165731e-06 + 2.98642161e-05 -2.12065653e-05 -1.09664335e-04 1.51448259e-04 -1.76038044e-04 -6.72763016e-05 + 1.22541856e-05 -7.48922047e-04 1.39313758e-05 -1.39313758e-05 -3.36129078e-06 3.36129078e-06 + 1.32608223e-07 -1.32608223e-07 -1.54357664e-06 1.87676655e-05 -1.87676655e-05 -2.38608569e-07 + -1.18509635e-03 -7.38795817e-04 -1.00120812e-03 1.73166473e-05 1.73166473e-05 3.61778330e-06 + 5.86932725e-05 5.86932725e-05 -1.04949936e-05 7.80742034e-05 7.80742034e-05 -7.61621286e-05 + 1.45868179e-04 2.33495083e-04 2.33495083e-04 -4.42598878e-04 2.63499088e-04 4.32345334e-04 + 3.07667228e-04 -1.07045094e-05 -1.07045094e-05 -7.93865879e-05 -3.75542023e-05 -3.75542023e-05 + -1.10798014e-05 -1.07911696e-05 -1.07911696e-05 7.30197573e-05 2.12891479e-05 4.64231145e-05 + 4.64231145e-05 4.45631927e-04 -1.11056189e-04 -1.97736854e-05 6.29980068e-05 -5.19849980e-05 + -3.73394965e-05 4.14035408e-05 -8.32396539e-06 -2.03365325e-06 2.22803191e-05 1.61583336e-05 + 2.14258848e-05 -5.95673782e-06 1.90489347e-05 -1.30566576e-05 3.64525555e-05 7.28100057e-05 + 4.46350994e-06 1.02343382e-04 -1.11056189e-04 -1.97736854e-05 6.29980068e-05 -3.73394965e-05 + -5.19849980e-05 4.14035408e-05 -2.03365325e-06 -8.32396539e-06 2.22803191e-05 2.14258848e-05 + 1.61583336e-05 5.95673782e-06 1.90489347e-05 -1.30566576e-05 7.28100057e-05 3.64525555e-05 + -4.46350994e-06 1.02343382e-04 2.10711790e-05 -2.10711790e-05 -4.39444337e-06 4.39444337e-06 + -3.97295743e-06 3.97295743e-06 -4.85816901e-06 -2.09911512e-05 2.09911512e-05 1.68207595e-06 + 4.29770605e-04 2.90054585e-04 3.40108044e-04 -5.99996764e-07 -5.99996764e-07 -7.66706512e-05 + -2.94159168e-05 -2.94159168e-05 4.08155235e-05 -2.25812157e-05 -2.25812157e-05 4.45914109e-05 + -7.85171147e-05 -6.46450952e-05 -6.46450952e-05 2.55885984e-04 + # CSR column indices + 18 19 20 21 22 23 24 25 26 27 28 30 31 32 33 35 + 18 19 20 21 22 23 24 25 26 27 28 30 31 32 33 35 + 18 19 20 21 22 23 24 25 26 27 28 30 31 32 33 35 + 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 + 34 35 18 19 20 21 22 23 24 25 26 27 28 29 30 31 + 32 33 34 35 18 19 20 21 22 23 24 25 26 27 28 30 + 31 32 33 35 18 19 20 21 22 23 24 25 26 27 28 29 + 30 31 32 33 34 35 18 19 20 21 22 23 24 25 26 27 + 28 29 30 31 32 33 34 35 18 19 20 21 22 23 24 25 + 26 27 28 30 31 32 33 35 18 19 20 21 22 23 24 25 + 26 27 28 29 30 31 32 33 34 35 18 19 20 21 22 23 + 24 25 26 27 28 29 30 31 32 33 34 35 21 22 24 25 + 27 28 29 32 33 34 18 19 20 21 22 23 24 25 26 27 + 28 30 31 32 33 35 18 19 20 21 22 23 24 25 26 27 + 28 30 31 32 33 35 18 19 20 21 22 23 24 25 26 27 + 28 29 30 31 32 33 34 35 18 19 20 21 22 23 24 25 + 26 27 28 29 30 31 32 33 34 35 21 22 24 25 27 28 + 29 32 33 34 18 19 20 21 22 23 24 25 26 27 28 30 + 31 32 33 35 + # CSR row pointers + 0 16 32 48 66 84 100 118 136 152 170 188 198 214 230 248 + 266 276 292 292 292 292 292 292 292 292 292 292 292 292 292 292 + 292 292 292 292 292 + + 0 1 0 324 + # CSR values + 4.83633576e-03 1.52238262e-03 -1.19590030e-03 1.19590030e-03 -3.82718601e-03 -4.32211930e-05 + 4.32211930e-05 9.84906468e-05 6.67706969e-05 1.31601898e-04 -3.88523055e-04 1.15650239e-04 + 3.88523055e-04 5.89296470e-04 1.05802479e-03 -1.49684177e-03 1.02069143e-03 1.49684177e-03 + 1.77796618e-03 -2.33195615e-04 -3.81831212e-04 3.81831212e-04 -1.37608422e-03 -7.92112878e-05 + 7.92112878e-05 -1.79200616e-04 -4.18937837e-05 1.82387210e-04 -8.85973492e-05 -7.25621619e-05 + 8.85973492e-05 4.49830593e-04 1.25876572e-03 -5.65539978e-04 7.79129442e-04 5.65539978e-04 + 5.35648805e-03 3.06854993e-03 2.34708053e-04 4.87893917e-04 -5.17453380e-03 1.68344278e-04 + -2.46177839e-04 -9.18613178e-05 7.45969181e-05 4.62587853e-06 -3.47371991e-04 -8.65733944e-05 + 5.25536569e-04 3.42761201e-04 2.44658820e-04 -1.58939046e-03 6.20264940e-04 2.07736030e-03 + -5.35648805e-03 -3.06854993e-03 4.87893917e-04 2.34708053e-04 5.17453380e-03 -2.46177839e-04 + 1.68344278e-04 9.18613178e-05 1.12273218e-04 -4.62587853e-06 5.25536569e-04 -2.13161289e-05 + -3.47371991e-04 -3.65784594e-04 -2.44658820e-04 2.07736030e-03 -6.06972377e-04 -1.58939046e-03 + 1.23436283e-02 8.81302498e-03 1.64345455e-03 -1.64345455e-03 -6.68794798e-03 1.15764614e-03 + -1.15764614e-03 1.52770194e-03 -6.05429474e-04 -1.30387872e-03 -1.04729953e-04 -1.04863461e-03 + 1.04729953e-04 1.01588060e-03 -8.58715992e-03 2.40029426e-03 1.75955682e-03 -2.40029426e-03 + -1.80572374e-03 -4.21582298e-04 -1.09531821e-04 -1.33863305e-04 1.22864091e-03 -4.90880038e-05 + 3.37274593e-05 4.83216506e-05 2.88076218e-05 -1.29760260e-05 5.30411328e-05 5.24788566e-05 + -8.30590853e-05 -2.17290983e-04 -1.23986061e-04 2.24506958e-04 -3.56518433e-04 -2.89908712e-04 + 1.80572374e-03 4.21582298e-04 -1.33863305e-04 -1.09531821e-04 -1.22864091e-03 3.37274593e-05 + -4.90880038e-05 -4.83216506e-05 -3.10442121e-05 1.29760260e-05 -8.30590853e-05 -5.11875606e-05 + 5.30411328e-05 2.00108528e-04 1.23986061e-04 -2.89908712e-04 3.66438728e-04 2.24506958e-04 + -4.80398852e-03 -6.61580720e-04 2.90456558e-04 -2.90456558e-04 2.71659526e-03 -4.11149148e-05 + 4.11149148e-05 1.73541755e-04 1.34796907e-05 -4.19828087e-04 1.44375194e-04 2.33475092e-05 + -1.44375194e-04 -4.34342346e-04 -2.72093126e-03 5.07233723e-04 -7.52303012e-04 -5.07233723e-04 + -1.14054562e-04 -1.75964220e-05 1.14738640e-04 -1.38868490e-04 3.59092293e-04 2.38367158e-05 + -1.80147894e-05 -1.97121130e-05 1.75276450e-05 -9.68534862e-06 -1.60028889e-05 3.30323248e-05 + 1.62325731e-05 -5.28287564e-05 -8.64887097e-05 -2.93143679e-05 -9.10888080e-05 6.18209181e-05 + 1.18509635e-03 7.38795817e-04 1.73166473e-05 -1.73166473e-05 -1.00120812e-03 5.86932725e-05 + -5.86932725e-05 3.61778330e-06 -5.24749678e-06 -7.61621286e-05 -7.80742034e-05 -9.08893104e-06 + 7.80742034e-05 7.29340896e-05 -4.42598878e-04 -2.33495083e-04 1.26325549e-04 2.33495083e-04 + -5.23984616e-04 -5.85385830e-04 -1.50616243e-04 1.77813301e-04 1.78156593e-04 -9.67168221e-05 + 7.58567405e-05 -1.49893680e-04 7.36902783e-05 1.09664335e-04 2.98642161e-05 8.52221754e-05 + -2.66165731e-06 -8.63365657e-05 7.48922047e-04 -6.72763016e-05 -1.25030947e-04 1.76038044e-04 + -1.97548297e-04 -3.04778970e-05 2.26595905e-04 -2.12664529e-04 6.21966096e-04 3.45638212e-05 + -3.79251120e-05 -3.41423812e-05 3.30323248e-05 -1.67755159e-05 -2.79830331e-05 5.56700882e-05 + 2.78504249e-05 -9.10888080e-05 -1.49802839e-04 -8.83093056e-05 -1.58009052e-04 6.95416401e-05 + 5.23984616e-04 5.85385830e-04 1.77813301e-04 -1.50616243e-04 -1.78156593e-04 7.58567405e-05 + -9.67168221e-05 1.49893680e-04 -3.69594297e-05 -1.09664335e-04 -2.66165731e-06 -1.06428741e-04 + 2.98642161e-05 6.51116936e-05 -7.48922047e-04 1.76038044e-04 1.37285133e-04 -6.72763016e-05 + -1.31749544e-04 -2.16172667e-04 -2.36004310e-05 -1.28959216e-05 1.53833614e-04 -1.49714015e-05 + 2.25828007e-05 -3.96932939e-05 -6.41357712e-06 3.65098786e-05 1.95490272e-06 -2.69404586e-06 + -8.83626684e-06 6.58384394e-06 2.22815963e-04 -4.13904274e-05 8.49011122e-06 5.03268705e-06 + -4.29770605e-04 -2.90054585e-04 -5.99996764e-07 5.99996764e-07 3.40108044e-04 -2.94159168e-05 + 2.94159168e-05 -7.66706512e-05 2.04077618e-05 4.45914109e-05 2.25812157e-05 3.53472802e-05 + -2.25812157e-05 -3.92585573e-05 2.55885984e-04 6.46450952e-05 -6.79978160e-05 -6.46450952e-05 + -1.11056189e-04 -1.97736854e-05 5.19849980e-05 -3.73394965e-05 -6.29980068e-05 8.32396539e-06 + -2.03365325e-06 -4.14035408e-05 -1.62988458e-05 -1.90489347e-05 1.61583336e-05 -1.63169534e-05 + -2.14258848e-05 1.03938418e-05 -1.02343382e-04 3.64525555e-05 9.07564222e-06 -7.28100057e-05 + -2.28196904e-04 -3.74422042e-04 1.26521247e-06 1.98059666e-05 2.66447636e-04 -3.47201149e-05 + 3.03256715e-05 -6.87508018e-05 -2.69404586e-06 6.32369648e-05 1.13319057e-05 -9.52439333e-06 + -7.35894826e-06 8.49011122e-06 3.85928570e-04 -2.97080209e-05 1.63873799e-05 5.06991721e-05 + 1.11056189e-04 1.97736854e-05 -3.73394965e-05 5.19849980e-05 6.29980068e-05 -2.03365325e-06 + 8.32396539e-06 4.14035408e-05 5.98147328e-06 1.90489347e-05 -2.14258848e-05 2.22736913e-05 + 1.61583336e-05 -2.66281581e-06 1.02343382e-04 -7.28100057e-05 -1.35391522e-05 3.64525555e-05 + # CSR column indices + 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 + 34 35 18 19 20 21 22 23 24 25 26 27 28 29 30 31 + 32 33 34 35 18 19 20 21 22 23 24 25 26 27 28 29 + 30 31 32 33 34 35 18 19 20 21 22 23 24 25 26 27 + 28 29 30 31 32 33 34 35 18 19 20 21 22 23 24 25 + 26 27 28 29 30 31 32 33 34 35 18 19 20 21 22 23 + 24 25 26 27 28 29 30 31 32 33 34 35 18 19 20 21 + 22 23 24 25 26 27 28 29 30 31 32 33 34 35 18 19 + 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 + 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 + 34 35 18 19 20 21 22 23 24 25 26 27 28 29 30 31 + 32 33 34 35 18 19 20 21 22 23 24 25 26 27 28 29 + 30 31 32 33 34 35 18 19 20 21 22 23 24 25 26 27 + 28 29 30 31 32 33 34 35 18 19 20 21 22 23 24 25 + 26 27 28 29 30 31 32 33 34 35 18 19 20 21 22 23 + 24 25 26 27 28 29 30 31 32 33 34 35 18 19 20 21 + 22 23 24 25 26 27 28 29 30 31 32 33 34 35 18 19 + 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 + 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 + 34 35 18 19 20 21 22 23 24 25 26 27 28 29 30 31 + 32 33 34 35 + # CSR row pointers + 0 18 36 54 72 90 108 126 144 162 180 198 216 234 252 270 + 288 306 324 324 324 324 324 324 324 324 324 324 324 324 324 324 + 324 324 324 324 324 + + 1 0 0 324 + # CSR values + 4.83633576e-03 1.52238262e-03 -1.19590030e-03 -3.82718601e-03 1.19590030e-03 -4.32211930e-05 + 9.84906468e-05 4.32211930e-05 6.67706969e-05 -3.88523055e-04 1.31601898e-04 -1.15650239e-04 + 3.88523055e-04 5.89296470e-04 -1.49684177e-03 1.05802479e-03 -1.02069143e-03 1.49684177e-03 + 1.77796618e-03 -2.33195615e-04 -3.81831212e-04 -1.37608422e-03 3.81831212e-04 -7.92112878e-05 + -1.79200616e-04 7.92112878e-05 -4.18937837e-05 -8.85973492e-05 1.82387210e-04 7.25621619e-05 + 8.85973492e-05 4.49830593e-04 -5.65539978e-04 1.25876572e-03 -7.79129442e-04 5.65539978e-04 + 5.35648805e-03 3.06854993e-03 2.34708053e-04 -5.17453380e-03 4.87893917e-04 1.68344278e-04 + -9.18613178e-05 -2.46177839e-04 7.45969181e-05 -3.47371991e-04 4.62587853e-06 8.65733944e-05 + 5.25536569e-04 3.42761201e-04 -1.58939046e-03 2.44658820e-04 -6.20264940e-04 2.07736030e-03 + 1.23436283e-02 8.81302498e-03 1.64345455e-03 -6.68794798e-03 -1.64345455e-03 1.15764614e-03 + 1.52770194e-03 -1.15764614e-03 -6.05429474e-04 -1.04729953e-04 -1.30387872e-03 1.04863461e-03 + 1.04729953e-04 1.01588060e-03 2.40029426e-03 -8.58715992e-03 -1.75955682e-03 -2.40029426e-03 + -5.35648805e-03 -3.06854993e-03 4.87893917e-04 5.17453380e-03 2.34708053e-04 -2.46177839e-04 + 9.18613178e-05 1.68344278e-04 1.12273218e-04 5.25536569e-04 -4.62587853e-06 2.13161289e-05 + -3.47371991e-04 -3.65784594e-04 2.07736030e-03 -2.44658820e-04 6.06972377e-04 -1.58939046e-03 + -1.80572374e-03 -4.21582298e-04 -1.09531821e-04 1.22864091e-03 -1.33863305e-04 -4.90880038e-05 + 4.83216506e-05 3.37274593e-05 2.88076218e-05 5.30411328e-05 -1.29760260e-05 -5.24788566e-05 + -8.30590853e-05 -2.17290983e-04 2.24506958e-04 -1.23986061e-04 3.56518433e-04 -2.89908712e-04 + -4.80398852e-03 -6.61580720e-04 2.90456558e-04 2.71659526e-03 -2.90456558e-04 -4.11149148e-05 + 1.73541755e-04 4.11149148e-05 1.34796907e-05 1.44375194e-04 -4.19828087e-04 -2.33475092e-05 + -1.44375194e-04 -4.34342346e-04 5.07233723e-04 -2.72093126e-03 7.52303012e-04 -5.07233723e-04 + 1.80572374e-03 4.21582298e-04 -1.33863305e-04 -1.22864091e-03 -1.09531821e-04 3.37274593e-05 + -4.83216506e-05 -4.90880038e-05 -3.10442121e-05 -8.30590853e-05 1.29760260e-05 5.11875606e-05 + 5.30411328e-05 2.00108528e-04 -2.89908712e-04 1.23986061e-04 -3.66438728e-04 2.24506958e-04 + -1.14054562e-04 -1.75964220e-05 1.14738640e-04 3.59092293e-04 -1.38868490e-04 2.38367158e-05 + -1.97121130e-05 -1.80147894e-05 1.75276450e-05 -1.60028889e-05 -9.68534862e-06 -3.30323248e-05 + 1.62325731e-05 -5.28287564e-05 -2.93143679e-05 -8.64887097e-05 9.10888080e-05 6.18209181e-05 + -5.23984616e-04 -5.85385830e-04 -1.50616243e-04 1.78156593e-04 1.77813301e-04 -9.67168221e-05 + -1.49893680e-04 7.58567405e-05 7.36902783e-05 2.98642161e-05 1.09664335e-04 -8.52221754e-05 + -2.66165731e-06 -8.63365657e-05 -6.72763016e-05 7.48922047e-04 1.25030947e-04 1.76038044e-04 + 1.18509635e-03 7.38795817e-04 1.73166473e-05 -1.00120812e-03 -1.73166473e-05 5.86932725e-05 + 3.61778330e-06 -5.86932725e-05 -5.24749678e-06 -7.80742034e-05 -7.61621286e-05 9.08893104e-06 + 7.80742034e-05 7.29340896e-05 -2.33495083e-04 -4.42598878e-04 -1.26325549e-04 2.33495083e-04 + 1.97548297e-04 3.04778970e-05 -2.26595905e-04 -6.21966096e-04 2.12664529e-04 -3.45638212e-05 + 3.41423812e-05 3.79251120e-05 -3.30323248e-05 2.79830331e-05 1.67755159e-05 5.56700882e-05 + -2.78504249e-05 9.10888080e-05 8.83093056e-05 1.49802839e-04 -1.58009052e-04 -6.95416401e-05 + 5.23984616e-04 5.85385830e-04 1.77813301e-04 -1.78156593e-04 -1.50616243e-04 7.58567405e-05 + 1.49893680e-04 -9.67168221e-05 -3.69594297e-05 -2.66165731e-06 -1.09664335e-04 1.06428741e-04 + 2.98642161e-05 6.51116936e-05 1.76038044e-04 -7.48922047e-04 -1.37285133e-04 -6.72763016e-05 + -1.31749544e-04 -2.16172667e-04 -2.36004310e-05 1.53833614e-04 -1.28959216e-05 -1.49714015e-05 + -3.96932939e-05 2.25828007e-05 -6.41357712e-06 1.95490272e-06 3.65098786e-05 2.69404586e-06 + -8.83626684e-06 6.58384394e-06 -4.13904274e-05 2.22815963e-04 -8.49011122e-06 5.03268705e-06 + -1.11056189e-04 -1.97736854e-05 5.19849980e-05 -6.29980068e-05 -3.73394965e-05 8.32396539e-06 + -4.14035408e-05 -2.03365325e-06 -1.62988458e-05 1.61583336e-05 -1.90489347e-05 1.63169534e-05 + -2.14258848e-05 1.03938418e-05 3.64525555e-05 -1.02343382e-04 -9.07564222e-06 -7.28100057e-05 + -4.29770605e-04 -2.90054585e-04 -5.99996764e-07 3.40108044e-04 5.99996764e-07 -2.94159168e-05 + -7.66706512e-05 2.94159168e-05 2.04077618e-05 2.25812157e-05 4.45914109e-05 -3.53472802e-05 + -2.25812157e-05 -3.92585573e-05 6.46450952e-05 2.55885984e-04 6.79978160e-05 -6.46450952e-05 + 2.28196904e-04 3.74422042e-04 -1.26521247e-06 -2.66447636e-04 -1.98059666e-05 3.47201149e-05 + 6.87508018e-05 -3.03256715e-05 2.69404586e-06 -1.13319057e-05 -6.32369648e-05 -9.52439333e-06 + 7.35894826e-06 -8.49011122e-06 2.97080209e-05 -3.85928570e-04 1.63873799e-05 -5.06991721e-05 + 1.11056189e-04 1.97736854e-05 -3.73394965e-05 6.29980068e-05 5.19849980e-05 -2.03365325e-06 + 4.14035408e-05 8.32396539e-06 5.98147328e-06 -2.14258848e-05 1.90489347e-05 -2.22736913e-05 + 1.61583336e-05 -2.66281581e-06 -7.28100057e-05 1.02343382e-04 1.35391522e-05 3.64525555e-05 + # CSR column indices + 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 + 34 35 18 19 20 21 22 23 24 25 26 27 28 29 30 31 + 32 33 34 35 18 19 20 21 22 23 24 25 26 27 28 29 + 30 31 32 33 34 35 18 19 20 21 22 23 24 25 26 27 + 28 29 30 31 32 33 34 35 18 19 20 21 22 23 24 25 + 26 27 28 29 30 31 32 33 34 35 18 19 20 21 22 23 + 24 25 26 27 28 29 30 31 32 33 34 35 18 19 20 21 + 22 23 24 25 26 27 28 29 30 31 32 33 34 35 18 19 + 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 + 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 + 34 35 18 19 20 21 22 23 24 25 26 27 28 29 30 31 + 32 33 34 35 18 19 20 21 22 23 24 25 26 27 28 29 + 30 31 32 33 34 35 18 19 20 21 22 23 24 25 26 27 + 28 29 30 31 32 33 34 35 18 19 20 21 22 23 24 25 + 26 27 28 29 30 31 32 33 34 35 18 19 20 21 22 23 + 24 25 26 27 28 29 30 31 32 33 34 35 18 19 20 21 + 22 23 24 25 26 27 28 29 30 31 32 33 34 35 18 19 + 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 + 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 + 34 35 18 19 20 21 22 23 24 25 26 27 28 29 30 31 + 32 33 34 35 + # CSR row pointers + 0 18 36 54 72 90 108 126 144 162 180 198 216 234 252 270 + 288 306 324 324 324 324 324 324 324 324 324 324 324 324 324 324 + 324 324 324 324 324 + diff --git a/tests/03_NAO_multik/scf_in_dmr_GaAs/result.ref b/tests/03_NAO_multik/scf_in_dmr_GaAs/result.ref new file mode 100644 index 0000000000..59b7189497 --- /dev/null +++ b/tests/03_NAO_multik/scf_in_dmr_GaAs/result.ref @@ -0,0 +1,5 @@ +etotref -5069.1660720303607377 +etotperatomref -2534.5830360152 +totalforceref 89.291634 +totalstressref 2011.565088 +totaltimeref 0.33 diff --git a/tests/03_NAO_multik/scf_in_dmr_Si/INPUT b/tests/03_NAO_multik/scf_in_dmr_Si/INPUT new file mode 100644 index 0000000000..25cec19623 --- /dev/null +++ b/tests/03_NAO_multik/scf_in_dmr_Si/INPUT @@ -0,0 +1,36 @@ +INPUT_PARAMETERS +#Parameters (1.General) +suffix autotest +calculation scf + +nbands 6 +symmetry 0 +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB +gamma_only 0 + +#Parameters (2.Iteration) +ecutwfc 5 +scf_thr 1e-8 +scf_nmax 100 + + +#Parameters (3.Basis) +basis_type lcao + +#Parameters (4.Smearing) +smearing_method gauss +smearing_sigma 0.002 +init_chg dm +#out_dmr 1 +read_file_dir ./ + +#Parameters (5.Mixing) +mixing_type broyden +mixing_beta 0.7 +mixing_gg0 1.5 + +ks_solver scalapack_gvx + +cal_force 1 +cal_stress 1 diff --git a/tests/03_NAO_multik/scf_in_dmr_Si/KPT b/tests/03_NAO_multik/scf_in_dmr_Si/KPT new file mode 100644 index 0000000000..2b2e42fd6e --- /dev/null +++ b/tests/03_NAO_multik/scf_in_dmr_Si/KPT @@ -0,0 +1,4 @@ +K_POINTS +0 +Gamma +1 2 3 0 0 0 diff --git a/tests/03_NAO_multik/scf_in_dmr_Si/README b/tests/03_NAO_multik/scf_in_dmr_Si/README new file mode 100644 index 0000000000..84a8ca5932 --- /dev/null +++ b/tests/03_NAO_multik/scf_in_dmr_Si/README @@ -0,0 +1 @@ +test dojo-soc pseudopotential for Si and read density matrix (real space) to restart scf calculations diff --git a/tests/03_NAO_multik/scf_in_dmr_Si/STRU b/tests/03_NAO_multik/scf_in_dmr_Si/STRU new file mode 100644 index 0000000000..5c22e76456 --- /dev/null +++ b/tests/03_NAO_multik/scf_in_dmr_Si/STRU @@ -0,0 +1,22 @@ +ATOMIC_SPECIES +Si 14 Si_dojo_soc.upf + +NUMERICAL_ORBITAL +Si_dojo_6au_sz.orb + +LATTICE_CONSTANT +20 // add lattice constant + +LATTICE_VECTORS +0.0 0.5 0.5 +0.5 0.0 0.5 +0.5 0.5 0.0 + +ATOMIC_POSITIONS +Direct + +Si // Element type +0.0 // magnetism +2 +0.000000000000000 0.020000000000000 0.000000000000000 1 1 1 +0.250000000000000 0.260000000000000 0.270000000000000 1 1 1 diff --git a/tests/03_NAO_multik/scf_in_dmr_Si/dmrs1_nao.csr b/tests/03_NAO_multik/scf_in_dmr_Si/dmrs1_nao.csr new file mode 100644 index 0000000000..fa30f6f79f --- /dev/null +++ b/tests/03_NAO_multik/scf_in_dmr_Si/dmrs1_nao.csr @@ -0,0 +1,108 @@ + --- Ionic Step 1 --- + # print density matrix in real space DM(R) + 1 # number of spin directions + 1 # spin index + 8 # number of localized basis + 7 # number of Bravais lattice vector R + + user_defined_lattice + 10.5835 + 0 0.5 0.5 + 0.5 0 0.5 + 0.5 0.5 0 + Si + 2 + Direct + 0 0.0200000000004366 0 + 0.25 0.260000000000218 0.270000000000437 + + #----------------------------------------------------------------------# + # CSR Format # + # The outer loop corresponds to the number of Bravais lattice vectors. # + # The first line contains the index of the Bravais lattice vector # + # (Rx, Ry, Rz), followed by the number of non-zero elements. # + # The subsequent lines consist of three blocks of data, which are # + # values, column indices, row pointers. # + #----------------------------------------------------------------------# + + -1 0 0 16 + # CSR values + -5.45999331e-03 2.73249115e-03 -5.09009757e-03 4.03966773e-03 -1.30628893e-03 4.31132007e-01 + -1.10282273e-01 -2.01101208e-01 5.80757023e-03 -9.60871668e-02 5.10964050e-01 -7.56805750e-02 + -3.62878896e-03 -2.07954927e-01 -1.17153522e-01 3.08509711e-01 + # CSR column indices + 4 5 6 7 4 5 6 7 4 5 6 7 4 5 6 7 + # CSR row pointers + 0 4 8 12 16 16 16 16 16 + + 0 -1 0 16 + # CSR values + -2.45985025e-03 -2.72823781e-03 5.77291787e-03 -3.92265955e-03 2.44087611e-03 3.10784769e-01 + -1.28694637e-01 -3.06522079e-02 -4.99700430e-03 -1.42635224e-01 2.58037184e-01 -1.75699980e-01 + 3.68716340e-03 -4.50848310e-02 -1.51791486e-01 3.59524466e-01 + # CSR column indices + 4 5 6 7 4 5 6 7 4 5 6 7 4 5 6 7 + # CSR row pointers + 0 4 8 12 16 16 16 16 16 + + 0 0 -1 16 + # CSR values + -4.50713746e-03 -2.15568398e-03 -1.79335271e-03 -2.32054117e-03 8.26431190e-04 3.70604495e-01 + 2.30256677e-01 2.41310066e-01 2.35593608e-05 2.17671469e-01 3.19390898e-01 2.76684516e-01 + 6.83678469e-04 2.51337425e-01 2.90983334e-01 3.84097938e-01 + # CSR column indices + 4 5 6 7 4 5 6 7 4 5 6 7 4 5 6 7 + # CSR row pointers + 0 4 8 12 16 16 16 16 16 + + 0 0 0 64 + # CSR values + 1.99975001e+00 -4.75034006e-03 -3.70290805e-03 -5.69770656e-03 -5.45999331e-03 2.73249115e-03 + -5.09009757e-03 4.03966773e-03 -4.75034006e-03 6.96887445e-01 9.97199187e-04 7.49588489e-02 + -1.30628893e-03 4.31132007e-01 -1.10282273e-01 -2.01101208e-01 -3.70290805e-03 9.97199187e-04 + 6.69552465e-01 9.38834187e-02 5.80757023e-03 -9.60871668e-02 5.10964050e-01 -7.56805750e-02 + -5.69770656e-03 7.49588489e-02 9.38834187e-02 6.69274568e-01 -3.62878896e-03 -2.07954927e-01 + -1.17153522e-01 3.08509711e-01 -5.45999331e-03 -1.30628893e-03 5.80757023e-03 -3.62878896e-03 + 1.99970753e+00 4.52207564e-03 3.20074158e-03 5.72738571e-03 2.73249115e-03 4.31132007e-01 + -9.60871668e-02 -2.07954927e-01 4.52207564e-03 6.75428149e-01 1.35926669e-01 1.24304841e-01 + -5.09009757e-03 -1.10282273e-01 5.10964050e-01 -1.17153522e-01 3.20074158e-03 1.35926669e-01 + 6.53887327e-01 1.61841746e-01 4.03966773e-03 -2.01101208e-01 -7.56805750e-02 3.08509711e-01 + 5.72738571e-03 1.24304841e-01 1.61841746e-01 7.04469705e-01 + # CSR column indices + 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 + 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 + 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 + 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 + # CSR row pointers + 0 8 16 24 32 40 48 56 64 + + 0 0 1 16 + # CSR values + -4.50713746e-03 8.26431190e-04 2.35593608e-05 6.83678469e-04 -2.15568398e-03 3.70604495e-01 + 2.17671469e-01 2.51337425e-01 -1.79335271e-03 2.30256677e-01 3.19390898e-01 2.90983334e-01 + -2.32054117e-03 2.41310066e-01 2.76684516e-01 3.84097938e-01 + # CSR column indices + 0 1 2 3 0 1 2 3 0 1 2 3 0 1 2 3 + # CSR row pointers + 0 0 0 0 0 4 8 12 16 + + 0 1 0 16 + # CSR values + -2.45985025e-03 2.44087611e-03 -4.99700430e-03 3.68716340e-03 -2.72823781e-03 3.10784769e-01 + -1.42635224e-01 -4.50848310e-02 5.77291787e-03 -1.28694637e-01 2.58037184e-01 -1.51791486e-01 + -3.92265955e-03 -3.06522079e-02 -1.75699980e-01 3.59524466e-01 + # CSR column indices + 0 1 2 3 0 1 2 3 0 1 2 3 0 1 2 3 + # CSR row pointers + 0 0 0 0 0 4 8 12 16 + + 1 0 0 16 + # CSR values + -5.45999331e-03 -1.30628893e-03 5.80757023e-03 -3.62878896e-03 2.73249115e-03 4.31132007e-01 + -9.60871668e-02 -2.07954927e-01 -5.09009757e-03 -1.10282273e-01 5.10964050e-01 -1.17153522e-01 + 4.03966773e-03 -2.01101208e-01 -7.56805750e-02 3.08509711e-01 + # CSR column indices + 0 1 2 3 0 1 2 3 0 1 2 3 0 1 2 3 + # CSR row pointers + 0 0 0 0 0 4 8 12 16 + diff --git a/tests/03_NAO_multik/scf_in_dmr_Si/result.ref b/tests/03_NAO_multik/scf_in_dmr_Si/result.ref new file mode 100644 index 0000000000..6f3f4832dd --- /dev/null +++ b/tests/03_NAO_multik/scf_in_dmr_Si/result.ref @@ -0,0 +1,5 @@ +etotref -168.5895316605353003 +etotperatomref -84.2947658303 +totalforceref 2.580908 +totalstressref 193.794096 +totaltimeref 0.17 diff --git a/tests/03_NAO_multik/scf_in_dmr_Si_spin2_hasbug/INPUT b/tests/03_NAO_multik/scf_in_dmr_Si_spin2_hasbug/INPUT new file mode 100644 index 0000000000..501b46fabb --- /dev/null +++ b/tests/03_NAO_multik/scf_in_dmr_Si_spin2_hasbug/INPUT @@ -0,0 +1,37 @@ +INPUT_PARAMETERS +#Parameters (1.General) +suffix autotest +calculation scf + +nbands 6 +symmetry 0 +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB +gamma_only 0 + +#Parameters (2.Iteration) +ecutwfc 5 +scf_thr 1e-8 +scf_nmax 100 + + +#Parameters (3.Basis) +basis_type lcao + +#Parameters (4.Smearing) +smearing_method gauss +smearing_sigma 0.002 +nspin 2 +init_chg dm +#out_dmr 1 +read_file_dir ./ + +#Parameters (5.Mixing) +mixing_type broyden +mixing_beta 0.7 +mixing_gg0 1.5 + +ks_solver scalapack_gvx + +cal_force 1 +cal_stress 1 diff --git a/tests/03_NAO_multik/scf_in_dmr_Si_spin2_hasbug/KPT b/tests/03_NAO_multik/scf_in_dmr_Si_spin2_hasbug/KPT new file mode 100644 index 0000000000..2b2e42fd6e --- /dev/null +++ b/tests/03_NAO_multik/scf_in_dmr_Si_spin2_hasbug/KPT @@ -0,0 +1,4 @@ +K_POINTS +0 +Gamma +1 2 3 0 0 0 diff --git a/tests/03_NAO_multik/scf_in_dmr_Si_spin2_hasbug/README b/tests/03_NAO_multik/scf_in_dmr_Si_spin2_hasbug/README new file mode 100644 index 0000000000..bd136b4a5f --- /dev/null +++ b/tests/03_NAO_multik/scf_in_dmr_Si_spin2_hasbug/README @@ -0,0 +1 @@ +test dojo-soc pseudopotential for Si and read density matrix (real space) to restart scf calculations (nspin 2) diff --git a/tests/03_NAO_multik/scf_in_dmr_Si_spin2_hasbug/STRU b/tests/03_NAO_multik/scf_in_dmr_Si_spin2_hasbug/STRU new file mode 100644 index 0000000000..87d28d1f4f --- /dev/null +++ b/tests/03_NAO_multik/scf_in_dmr_Si_spin2_hasbug/STRU @@ -0,0 +1,22 @@ +ATOMIC_SPECIES +Si 14 Si_dojo_soc.upf + +NUMERICAL_ORBITAL +Si_dojo_6au_sz.orb + +LATTICE_CONSTANT +20 // add lattice constant + +LATTICE_VECTORS +0.0 0.5 0.5 +0.5 0.0 0.5 +0.5 0.5 0.0 + +ATOMIC_POSITIONS +Direct + +Si // Element type +0.0 // magnetism +2 +0.000000000000000 0.020000000000000 0.000000000000000 1 1 1 +0.125000000000000 0.126000000000000 0.127000000000000 1 1 1 diff --git a/tests/03_NAO_multik/scf_in_hr_hasbug/INPUT b/tests/03_NAO_multik/scf_in_hr_hasbug/INPUT new file mode 100644 index 0000000000..87f70d417a --- /dev/null +++ b/tests/03_NAO_multik/scf_in_hr_hasbug/INPUT @@ -0,0 +1,30 @@ +INPUT_PARAMETERS +#Parameters (1.General) +suffix autotest +calculation scf + +nbands 6 +symmetry 0 + +#Parameters (2.Iteration) +ecutwfc 20 +scf_thr 1e-6 +scf_nmax 100 + + +#Parameters (3.Basis) +basis_type lcao + +#Parameters (4.Smearing) +smearing_method gauss +smearing_sigma 0.002 + +#Parameters (5.Mixing) +mixing_type broyden +mixing_beta 0.7 +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB + +#out_mat_hs2 1 +init_chg hr +read_file_dir ./ diff --git a/tests/03_NAO_multik/17_NO_KP_OH/KPT b/tests/03_NAO_multik/scf_in_hr_hasbug/KPT similarity index 100% rename from tests/03_NAO_multik/17_NO_KP_OH/KPT rename to tests/03_NAO_multik/scf_in_hr_hasbug/KPT diff --git a/tests/03_NAO_multik/scf_in_hr_hasbug/README b/tests/03_NAO_multik/scf_in_hr_hasbug/README new file mode 100644 index 0000000000..20da67ae65 --- /dev/null +++ b/tests/03_NAO_multik/scf_in_hr_hasbug/README @@ -0,0 +1 @@ +test upf201 pseudopotential, init charge from HR diff --git a/tests/03_NAO_multik/scf_in_hr_hasbug/STRU b/tests/03_NAO_multik/scf_in_hr_hasbug/STRU new file mode 100644 index 0000000000..ea028ef206 --- /dev/null +++ b/tests/03_NAO_multik/scf_in_hr_hasbug/STRU @@ -0,0 +1,22 @@ +ATOMIC_SPECIES +Si 28 Si.pz-n-nc.UPF upf201 + +NUMERICAL_ORBITAL +Si_gga_8au_60Ry_2s2p1d.orb + +LATTICE_CONSTANT +20.2 // add lattice constant + +LATTICE_VECTORS +0.0 0.5 0.5 +0.5 0.0 0.5 +0.5 0.5 0.0 + +ATOMIC_POSITIONS +Direct + +Si // Element type +0.0 // magnetism +2 +0.00 0.00 0.00 1 1 1 +0.25 0.25 0.25 1 1 1 diff --git a/tests/03_NAO_multik/scf_in_hr_hasbug/hrs1_nao.csr b/tests/03_NAO_multik/scf_in_hr_hasbug/hrs1_nao.csr new file mode 100644 index 0000000000..72c436a70f --- /dev/null +++ b/tests/03_NAO_multik/scf_in_hr_hasbug/hrs1_nao.csr @@ -0,0 +1,55 @@ +STEP: 0 +Matrix Dimension of H(R): 26 +Matrix number of H(R): 13 +-1 0 0 491 + -3.08720237e-05 -3.07390885e-04 -1.04971511e-04 1.40312477e-06 1.04971511e-04 3.59371792e-04 -4.82934036e-06 -3.59371792e-04 -9.57555071e-06 1.01771600e-06 3.34354066e-05 1.65853403e-05 -1.01771600e-06 -1.10678938e-02 -4.01898009e-02 -1.59965704e-02 -1.59965704e-02 1.59965704e-02 3.48221871e-02 3.48221871e-02 -3.48221871e-02 2.30243503e-03 -2.30243503e-03 -2.30243503e-03 -3.07390885e-04 -3.02853625e-03 -1.01904693e-03 1.52691305e-05 1.01904693e-03 3.47759038e-03 -5.25303803e-05 -3.47759038e-03 -7.34123089e-05 1.11116241e-05 2.57169624e-04 1.27153849e-04 -1.11116241e-05 -4.02101705e-02 -8.51941384e-04 -2.06513817e-02 -2.06513817e-02 2.06513817e-02 -1.28347617e-02 -1.28347617e-02 1.28347617e-02 5.95672459e-03 -5.95672459e-03 -5.95672459e-03 1.04971511e-04 1.01904693e-03 3.23522367e-04 -5.62416573e-06 -3.63336653e-04 -1.09979124e-03 1.94156142e-05 1.23944563e-03 4.82254533e-06 -3.96066075e-06 -7.77363679e-05 -4.83364399e-05 4.11041279e-06 1.60075545e-02 2.06367891e-02 9.20684060e-03 1.62457954e-02 -1.62457954e-02 -7.47144879e-03 -1.78038327e-02 1.78038327e-02 2.69551701e-03 -3.61086424e-03 3.61086424e-03 5.94234981e-03 1.40312477e-06 1.52691305e-05 5.62416573e-06 -4.12471245e-05 -5.62416573e-06 -1.93518153e-05 1.44520599e-04 1.93518153e-05 9.71049589e-07 -2.10524692e-05 -4.00502527e-06 -1.68190722e-06 2.10524692e-05 1.60075545e-02 2.06367891e-02 1.62457954e-02 9.20684060e-03 -1.62457954e-02 -1.78038327e-02 -7.47144879e-03 1.78038327e-02 -1.34775851e-03 -3.61086424e-03 5.94234981e-03 2.33438621e-03 3.61086424e-03 -1.04971511e-04 -1.01904693e-03 -3.63336653e-04 5.62416573e-06 3.23522367e-04 1.23944563e-03 -1.94156142e-05 -1.09979124e-03 -3.94493122e-05 4.11041279e-06 7.77363679e-05 2.83446667e-05 -3.96066075e-06 -1.60075545e-02 -2.06367891e-02 -1.62457954e-02 -1.62457954e-02 9.20684060e-03 1.78038327e-02 1.78038327e-02 -7.47144879e-03 1.34775851e-03 5.94234981e-03 -3.61086424e-03 2.33438621e-03 -3.61086424e-03 -3.59371792e-04 -3.47759038e-03 -1.09979124e-03 1.93518153e-05 1.23944563e-03 3.72486395e-03 -6.67426116e-05 -4.21589662e-03 -7.62760775e-06 1.37086540e-05 2.41287214e-04 1.54060042e-04 -1.42204009e-05 -3.48613875e-02 1.27621922e-02 -7.53206233e-03 -1.78560844e-02 1.78560844e-02 -2.05536306e-02 -2.16538149e-02 2.16538149e-02 -7.11790393e-03 9.20772072e-04 -9.20772072e-04 -7.07642391e-03 -4.82934036e-06 -5.25303803e-05 -1.94156142e-05 1.44520599e-04 1.94156142e-05 6.67426116e-05 -5.07533292e-04 -6.67426116e-05 -3.38618226e-06 7.40430828e-05 1.39044038e-05 5.86503972e-06 -7.40430828e-05 -3.48613875e-02 1.27621922e-02 -1.78560844e-02 -7.53206233e-03 1.78560844e-02 -2.16538149e-02 -2.05536306e-02 2.16538149e-02 3.55895196e-03 9.20772072e-04 -7.07642391e-03 -6.16428562e-03 -9.20772072e-04 3.59371792e-04 3.47759038e-03 1.23944563e-03 -1.93518153e-05 -1.09979124e-03 -4.21589662e-03 6.67426116e-05 3.72486395e-03 1.29606106e-04 -1.42204009e-05 -2.41287214e-04 -8.36357232e-05 1.37086540e-05 3.48613875e-02 -1.27621922e-02 1.78560844e-02 1.78560844e-02 -7.53206233e-03 2.16538149e-02 2.16538149e-02 -2.05536306e-02 -3.55895196e-03 -7.07642391e-03 9.20772072e-04 -6.16428562e-03 9.20772072e-04 -9.57555071e-06 -7.34123089e-05 -4.82254533e-06 9.71049589e-07 3.94493122e-05 7.62760775e-06 -3.38618226e-06 -1.29606106e-04 1.60708725e-05 5.81086888e-07 -1.86919672e-05 -2.61781210e-06 -7.73544764e-07 -2.69864160e-03 1.34932080e-03 -1.34932080e-03 7.12031599e-03 -3.56015800e-03 3.56015800e-03 2.45879056e-03 7.22168763e-04 -7.22168763e-04 1.44433753e-03 -1.01771600e-06 -1.11116241e-05 -3.96066075e-06 2.10524692e-05 4.11041279e-06 1.37086540e-05 -7.40430828e-05 -1.42204009e-05 -5.81086888e-07 7.46646087e-06 2.81468585e-06 1.22870323e-06 -8.65011321e-06 2.28290009e-03 5.88060035e-03 3.56615668e-03 3.56615668e-03 -5.90018653e-03 -8.44999113e-04 -8.44999113e-04 7.00213894e-03 7.22214326e-04 -4.89935284e-03 6.10850862e-03 1.25091191e-03 6.10850862e-03 3.34354066e-05 2.57169624e-04 7.77363679e-05 -4.00502527e-06 -7.77363679e-05 -2.41287214e-04 1.39044038e-05 2.41287214e-04 -1.86919672e-05 -2.81468585e-06 6.28234069e-05 3.23754368e-05 2.81468585e-06 -2.28290009e-03 -5.88060035e-03 -3.56615668e-03 -5.90018653e-03 3.56615668e-03 8.44999113e-04 7.00213894e-03 -8.44999113e-04 -7.22214326e-04 6.10850862e-03 -4.89935284e-03 1.25091191e-03 -6.10850862e-03 1.65853403e-05 1.27153849e-04 4.83364399e-05 -1.68190722e-06 -2.83446667e-05 -1.54060042e-04 5.86503972e-06 8.36357232e-05 -2.61781210e-06 -1.22870323e-06 3.23754368e-05 1.90936616e-05 1.11758762e-06 -2.33709218e-03 -2.33709218e-03 6.16637453e-03 6.16637453e-03 1.25083299e-03 1.25083299e-03 2.45879056e-03 1.01771600e-06 1.11116241e-05 4.11041279e-06 -2.10524692e-05 -3.96066075e-06 -1.42204009e-05 7.40430828e-05 1.37086540e-05 7.73544764e-07 -8.65011321e-06 -2.81468585e-06 -1.11758762e-06 7.46646087e-06 -2.28290009e-03 -5.88060035e-03 -5.90018653e-03 -3.56615668e-03 3.56615668e-03 7.00213894e-03 8.44999113e-04 -8.44999113e-04 1.44442865e-03 6.10850862e-03 -6.10850862e-03 -4.89935284e-03 -3.08602939e-05 -3.07263521e-04 -1.04923873e-04 -1.41324097e-06 1.04923873e-04 3.59208493e-04 4.86525398e-06 -3.59208493e-04 -9.56706174e-06 -1.02478251e-06 3.34006108e-05 1.65706370e-05 1.02478251e-06 -3.07263521e-04 -3.02715668e-03 -1.01852759e-03 -1.53820756e-05 1.01852759e-03 3.47581608e-03 5.29298815e-05 -3.47581608e-03 -7.33191558e-05 -1.11912408e-05 2.56788439e-04 1.26992503e-04 1.11912408e-05 1.04923873e-04 1.01852759e-03 3.23331675e-04 5.66366604e-06 -3.63143075e-04 -1.09913471e-03 -1.95566627e-05 1.23877805e-03 4.79009339e-06 3.98776946e-06 -7.75974336e-05 -4.82772103e-05 -4.13755885e-06 -1.41324097e-06 -1.53820756e-05 -5.66366604e-06 -4.12162075e-05 5.66366604e-06 1.94925310e-05 1.44413999e-04 -1.94925310e-05 -9.77693072e-07 -2.10289351e-05 4.03239561e-06 1.69341407e-06 2.10289351e-05 -1.04923873e-04 -1.01852759e-03 -3.63143075e-04 -5.66366604e-06 3.23331675e-04 1.23877805e-03 1.95566627e-05 -1.09913471e-03 -3.94142439e-05 -4.13755885e-06 7.75974336e-05 2.82869477e-05 3.98776946e-06 -3.59208493e-04 -3.47581608e-03 -1.09913471e-03 -1.94925310e-05 1.23877805e-03 3.72261408e-03 6.72429653e-05 -4.21360468e-03 -7.51561916e-06 -1.38061213e-05 2.40805687e-04 1.53853854e-04 1.43184607e-05 4.86525398e-06 5.29298815e-05 1.95566627e-05 1.44413999e-04 -1.95566627e-05 -6.72429653e-05 -5.07169119e-04 6.72429653e-05 3.41053946e-06 7.39612442e-05 -1.40030592e-05 -5.90722763e-06 -7.39612442e-05 3.59208493e-04 3.47581608e-03 1.23877805e-03 1.94925310e-05 -1.09913471e-03 -4.21360468e-03 -6.72429653e-05 3.72261408e-03 1.29483537e-04 1.43184607e-05 -2.40805687e-04 -8.34356441e-05 -1.38061213e-05 -9.56706174e-06 -7.33191558e-05 -4.79009339e-06 -9.77693072e-07 3.94142439e-05 7.51561916e-06 3.41053946e-06 -1.29483537e-04 1.60757249e-05 -5.85506643e-07 -1.87156494e-05 -2.62806909e-06 7.77681284e-07 1.02478251e-06 1.11912408e-05 3.98776946e-06 2.10289351e-05 -4.13755885e-06 -1.38061213e-05 -7.39612442e-05 1.43184607e-05 5.85506643e-07 7.44879307e-06 -2.83293240e-06 -1.23603141e-06 -8.63228531e-06 3.34006108e-05 2.56788439e-04 7.75974336e-05 4.03239561e-06 -7.75974336e-05 -2.40805687e-04 -1.40030592e-05 2.40805687e-04 -1.87156494e-05 2.83293240e-06 6.29222274e-05 3.24164557e-05 -2.83293240e-06 1.65706370e-05 1.26992503e-04 4.82772103e-05 1.69341407e-06 -2.82869477e-05 -1.53853854e-04 -5.90722763e-06 8.34356441e-05 -2.62806909e-06 1.23603141e-06 3.24164557e-05 1.91103577e-05 -1.12507933e-06 -1.02478251e-06 -1.11912408e-05 -4.13755885e-06 -2.10289351e-05 3.98776946e-06 1.43184607e-05 7.39612442e-05 -1.38061213e-05 -7.77681284e-07 -8.63228531e-06 2.83293240e-06 1.12507933e-06 7.44879307e-06 + 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 22 23 25 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 22 23 25 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 25 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 25 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 0 1 2 3 4 5 6 7 8 9 10 11 12 15 16 17 18 19 20 21 22 23 25 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 0 1 2 3 4 5 6 7 8 9 10 11 12 16 17 19 20 22 23 24 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 25 13 14 15 16 17 18 19 20 21 22 23 24 25 13 14 15 16 17 18 19 20 21 22 23 24 25 13 14 15 16 17 18 19 20 21 22 23 24 25 13 14 15 16 17 18 19 20 21 22 23 24 25 13 14 15 16 17 18 19 20 21 22 23 24 25 13 14 15 16 17 18 19 20 21 22 23 24 25 13 14 15 16 17 18 19 20 21 22 23 24 25 13 14 15 16 17 18 19 20 21 22 23 24 25 13 14 15 16 17 18 19 20 21 22 23 24 25 13 14 15 16 17 18 19 20 21 22 23 24 25 13 14 15 16 17 18 19 20 21 22 23 24 25 13 14 15 16 17 18 19 20 21 22 23 24 25 13 14 15 16 17 18 19 20 21 22 23 24 25 + 0 24 48 73 99 125 150 176 202 225 251 277 297 322 335 348 361 374 387 400 413 426 439 452 465 478 491 +-1 0 1 338 + -3.08720237e-05 -3.07390885e-04 -1.04971511e-04 -1.04971511e-04 -1.40312477e-06 3.59371792e-04 3.59371792e-04 4.82934036e-06 -9.57555071e-06 -3.34354066e-05 -1.01771600e-06 -1.65853403e-05 -1.01771600e-06 -3.07390885e-04 -3.02853625e-03 -1.01904693e-03 -1.01904693e-03 -1.52691305e-05 3.47759038e-03 3.47759038e-03 5.25303803e-05 -7.34123089e-05 -2.57169624e-04 -1.11116241e-05 -1.27153849e-04 -1.11116241e-05 1.04971511e-04 1.01904693e-03 3.23522367e-04 3.63336653e-04 5.62416573e-06 -1.09979124e-03 -1.23944563e-03 -1.94156142e-05 4.82254533e-06 7.77363679e-05 3.96066075e-06 4.83364399e-05 4.11041279e-06 1.04971511e-04 1.01904693e-03 3.63336653e-04 3.23522367e-04 5.62416573e-06 -1.23944563e-03 -1.09979124e-03 -1.94156142e-05 3.94493122e-05 7.77363679e-05 4.11041279e-06 2.83446667e-05 3.96066075e-06 -1.40312477e-06 -1.52691305e-05 -5.62416573e-06 -5.62416573e-06 -4.12471245e-05 1.93518153e-05 1.93518153e-05 1.44520599e-04 -9.71049589e-07 -4.00502527e-06 -2.10524692e-05 -1.68190722e-06 -2.10524692e-05 -3.59371792e-04 -3.47759038e-03 -1.09979124e-03 -1.23944563e-03 -1.93518153e-05 3.72486395e-03 4.21589662e-03 6.67426116e-05 -7.62760775e-06 -2.41287214e-04 -1.37086540e-05 -1.54060042e-04 -1.42204009e-05 -3.59371792e-04 -3.47759038e-03 -1.23944563e-03 -1.09979124e-03 -1.93518153e-05 4.21589662e-03 3.72486395e-03 6.67426116e-05 -1.29606106e-04 -2.41287214e-04 -1.42204009e-05 -8.36357232e-05 -1.37086540e-05 4.82934036e-06 5.25303803e-05 1.94156142e-05 1.94156142e-05 1.44520599e-04 -6.67426116e-05 -6.67426116e-05 -5.07533292e-04 3.38618226e-06 1.39044038e-05 7.40430828e-05 5.86503972e-06 7.40430828e-05 -9.57555071e-06 -7.34123089e-05 -4.82254533e-06 -3.94493122e-05 -9.71049589e-07 7.62760775e-06 1.29606106e-04 3.38618226e-06 1.60708725e-05 1.86919672e-05 -5.81086888e-07 2.61781210e-06 -7.73544764e-07 -3.34354066e-05 -2.57169624e-04 -7.77363679e-05 -7.77363679e-05 -4.00502527e-06 2.41287214e-04 2.41287214e-04 1.39044038e-05 1.86919672e-05 6.28234069e-05 -2.81468585e-06 3.23754368e-05 -2.81468585e-06 1.01771600e-06 1.11116241e-05 3.96066075e-06 4.11041279e-06 2.10524692e-05 -1.37086540e-05 -1.42204009e-05 -7.40430828e-05 5.81086888e-07 2.81468585e-06 7.46646087e-06 1.22870323e-06 8.65011321e-06 -1.65853403e-05 -1.27153849e-04 -4.83364399e-05 -2.83446667e-05 -1.68190722e-06 1.54060042e-04 8.36357232e-05 5.86503972e-06 2.61781210e-06 3.23754368e-05 -1.22870323e-06 1.90936616e-05 -1.11758762e-06 1.01771600e-06 1.11116241e-05 4.11041279e-06 3.96066075e-06 2.10524692e-05 -1.42204009e-05 -1.37086540e-05 -7.40430828e-05 7.73544764e-07 2.81468585e-06 8.65011321e-06 1.11758762e-06 7.46646087e-06 -3.08602939e-05 -3.07263521e-04 -1.04923873e-04 -1.04923873e-04 1.41324097e-06 3.59208493e-04 3.59208493e-04 -4.86525398e-06 -9.56706174e-06 -3.34006108e-05 1.02478251e-06 -1.65706370e-05 1.02478251e-06 -3.07263521e-04 -3.02715668e-03 -1.01852759e-03 -1.01852759e-03 1.53820756e-05 3.47581608e-03 3.47581608e-03 -5.29298815e-05 -7.33191558e-05 -2.56788439e-04 1.11912408e-05 -1.26992503e-04 1.11912408e-05 1.04923873e-04 1.01852759e-03 3.23331675e-04 3.63143075e-04 -5.66366604e-06 -1.09913471e-03 -1.23877805e-03 1.95566627e-05 4.79009339e-06 7.75974336e-05 -3.98776946e-06 4.82772103e-05 -4.13755885e-06 1.04923873e-04 1.01852759e-03 3.63143075e-04 3.23331675e-04 -5.66366604e-06 -1.23877805e-03 -1.09913471e-03 1.95566627e-05 3.94142439e-05 7.75974336e-05 -4.13755885e-06 2.82869477e-05 -3.98776946e-06 1.41324097e-06 1.53820756e-05 5.66366604e-06 5.66366604e-06 -4.12162075e-05 -1.94925310e-05 -1.94925310e-05 1.44413999e-04 9.77693072e-07 4.03239561e-06 -2.10289351e-05 1.69341407e-06 -2.10289351e-05 -3.59208493e-04 -3.47581608e-03 -1.09913471e-03 -1.23877805e-03 1.94925310e-05 3.72261408e-03 4.21360468e-03 -6.72429653e-05 -7.51561916e-06 -2.40805687e-04 1.38061213e-05 -1.53853854e-04 1.43184607e-05 -3.59208493e-04 -3.47581608e-03 -1.23877805e-03 -1.09913471e-03 1.94925310e-05 4.21360468e-03 3.72261408e-03 -6.72429653e-05 -1.29483537e-04 -2.40805687e-04 1.43184607e-05 -8.34356441e-05 1.38061213e-05 -4.86525398e-06 -5.29298815e-05 -1.95566627e-05 -1.95566627e-05 1.44413999e-04 6.72429653e-05 6.72429653e-05 -5.07169119e-04 -3.41053946e-06 -1.40030592e-05 7.39612442e-05 -5.90722763e-06 7.39612442e-05 -9.56706174e-06 -7.33191558e-05 -4.79009339e-06 -3.94142439e-05 9.77693072e-07 7.51561916e-06 1.29483537e-04 -3.41053946e-06 1.60757249e-05 1.87156494e-05 5.85506643e-07 2.62806909e-06 7.77681284e-07 -3.34006108e-05 -2.56788439e-04 -7.75974336e-05 -7.75974336e-05 4.03239561e-06 2.40805687e-04 2.40805687e-04 -1.40030592e-05 1.87156494e-05 6.29222274e-05 2.83293240e-06 3.24164557e-05 2.83293240e-06 -1.02478251e-06 -1.11912408e-05 -3.98776946e-06 -4.13755885e-06 2.10289351e-05 1.38061213e-05 1.43184607e-05 -7.39612442e-05 -5.85506643e-07 -2.83293240e-06 7.44879307e-06 -1.23603141e-06 8.63228531e-06 -1.65706370e-05 -1.26992503e-04 -4.82772103e-05 -2.82869477e-05 1.69341407e-06 1.53853854e-04 8.34356441e-05 -5.90722763e-06 2.62806909e-06 3.24164557e-05 1.23603141e-06 1.91103577e-05 1.12507933e-06 -1.02478251e-06 -1.11912408e-05 -4.13755885e-06 -3.98776946e-06 2.10289351e-05 1.43184607e-05 1.38061213e-05 -7.39612442e-05 -7.77681284e-07 -2.83293240e-06 8.63228531e-06 -1.12507933e-06 7.44879307e-06 + 0 1 2 3 4 5 6 7 8 9 10 11 12 0 1 2 3 4 5 6 7 8 9 10 11 12 0 1 2 3 4 5 6 7 8 9 10 11 12 0 1 2 3 4 5 6 7 8 9 10 11 12 0 1 2 3 4 5 6 7 8 9 10 11 12 0 1 2 3 4 5 6 7 8 9 10 11 12 0 1 2 3 4 5 6 7 8 9 10 11 12 0 1 2 3 4 5 6 7 8 9 10 11 12 0 1 2 3 4 5 6 7 8 9 10 11 12 0 1 2 3 4 5 6 7 8 9 10 11 12 0 1 2 3 4 5 6 7 8 9 10 11 12 0 1 2 3 4 5 6 7 8 9 10 11 12 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 13 14 15 16 17 18 19 20 21 22 23 24 25 13 14 15 16 17 18 19 20 21 22 23 24 25 13 14 15 16 17 18 19 20 21 22 23 24 25 13 14 15 16 17 18 19 20 21 22 23 24 25 13 14 15 16 17 18 19 20 21 22 23 24 25 13 14 15 16 17 18 19 20 21 22 23 24 25 13 14 15 16 17 18 19 20 21 22 23 24 25 13 14 15 16 17 18 19 20 21 22 23 24 25 13 14 15 16 17 18 19 20 21 22 23 24 25 13 14 15 16 17 18 19 20 21 22 23 24 25 13 14 15 16 17 18 19 20 21 22 23 24 25 13 14 15 16 17 18 19 20 21 22 23 24 25 + 0 13 26 39 52 65 78 91 104 117 130 143 156 169 182 195 208 221 234 247 260 273 286 299 312 325 338 +-1 1 0 314 + -3.08720237e-05 -3.07390885e-04 1.40312477e-06 -1.04971511e-04 1.04971511e-04 -4.82934036e-06 3.59371792e-04 -3.59371792e-04 1.91511014e-05 1.01771600e-06 -1.01771600e-06 3.34354066e-05 -3.07390885e-04 -3.02853625e-03 1.52691305e-05 -1.01904693e-03 1.01904693e-03 -5.25303803e-05 3.47759038e-03 -3.47759038e-03 1.46824618e-04 1.11116241e-05 -1.11116241e-05 2.57169624e-04 1.40312477e-06 1.52691305e-05 -4.12471245e-05 5.62416573e-06 -5.62416573e-06 1.44520599e-04 -1.93518153e-05 1.93518153e-05 -1.94209918e-06 -2.10524692e-05 2.10524692e-05 -4.00502527e-06 1.04971511e-04 1.01904693e-03 -5.62416573e-06 3.23522367e-04 -3.63336653e-04 1.94156142e-05 -1.09979124e-03 1.23944563e-03 -4.42718575e-05 -3.96066075e-06 4.11041279e-06 -1.99917732e-05 -7.77363679e-05 -1.04971511e-04 -1.01904693e-03 5.62416573e-06 -3.63336653e-04 3.23522367e-04 -1.94156142e-05 1.23944563e-03 -1.09979124e-03 4.42718575e-05 4.11041279e-06 -3.96066075e-06 -1.99917732e-05 7.77363679e-05 -4.82934036e-06 -5.25303803e-05 1.44520599e-04 -1.94156142e-05 1.94156142e-05 -5.07533292e-04 6.67426116e-05 -6.67426116e-05 6.77236452e-06 7.40430828e-05 -7.40430828e-05 1.39044038e-05 -3.59371792e-04 -3.47759038e-03 1.93518153e-05 -1.09979124e-03 1.23944563e-03 -6.67426116e-05 3.72486395e-03 -4.21589662e-03 1.37233714e-04 1.37086540e-05 -1.42204009e-05 7.04243190e-05 2.41287214e-04 3.59371792e-04 3.47759038e-03 -1.93518153e-05 1.23944563e-03 -1.09979124e-03 6.67426116e-05 -4.21589662e-03 3.72486395e-03 -1.37233714e-04 -1.42204009e-05 1.37086540e-05 7.04243190e-05 -2.41287214e-04 1.91511014e-05 1.46824618e-04 -1.94209918e-06 4.42718575e-05 -4.42718575e-05 6.77236452e-06 -1.37233714e-04 1.37233714e-04 2.06050561e-05 -1.35463165e-06 1.35463165e-06 3.73839344e-05 -1.01771600e-06 -1.11116241e-05 2.10524692e-05 -3.96066075e-06 4.11041279e-06 -7.40430828e-05 1.37086540e-05 -1.42204009e-05 1.35463165e-06 7.46646087e-06 -8.65011321e-06 1.11115607e-07 2.81468585e-06 1.01771600e-06 1.11116241e-05 -2.10524692e-05 4.11041279e-06 -3.96066075e-06 7.40430828e-05 -1.42204009e-05 1.37086540e-05 -1.35463165e-06 -8.65011321e-06 7.46646087e-06 1.11115607e-07 -2.81468585e-06 1.99917732e-05 1.99917732e-05 -7.04243190e-05 -7.04243190e-05 -1.11115607e-07 -1.11115607e-07 1.45594780e-05 3.34354066e-05 2.57169624e-04 -4.00502527e-06 7.77363679e-05 -7.77363679e-05 1.39044038e-05 -2.41287214e-04 2.41287214e-04 3.73839344e-05 -2.81468585e-06 2.81468585e-06 6.28234069e-05 -3.08602939e-05 -3.07263521e-04 -1.41324097e-06 -1.04923873e-04 1.04923873e-04 4.86525398e-06 3.59208493e-04 -3.59208493e-04 1.91341235e-05 -1.02478251e-06 1.02478251e-06 3.34006108e-05 -3.07263521e-04 -3.02715668e-03 -1.53820756e-05 -1.01852759e-03 1.01852759e-03 5.29298815e-05 3.47581608e-03 -3.47581608e-03 1.46638312e-04 -1.11912408e-05 1.11912408e-05 2.56788439e-04 -1.41324097e-06 -1.53820756e-05 -4.12162075e-05 -5.66366604e-06 5.66366604e-06 1.44413999e-04 1.94925310e-05 -1.94925310e-05 1.95538614e-06 -2.10289351e-05 2.10289351e-05 4.03239561e-06 1.04923873e-04 1.01852759e-03 5.66366604e-06 3.23331675e-04 -3.63143075e-04 -1.95566627e-05 -1.09913471e-03 1.23877805e-03 -4.42043373e-05 3.98776946e-06 -4.13755885e-06 -1.99902626e-05 -7.75974336e-05 -1.04923873e-04 -1.01852759e-03 -5.66366604e-06 -3.63143075e-04 3.23331675e-04 1.95566627e-05 1.23877805e-03 -1.09913471e-03 4.42043373e-05 -4.13755885e-06 3.98776946e-06 -1.99902626e-05 7.75974336e-05 4.86525398e-06 5.29298815e-05 1.44413999e-04 1.95566627e-05 -1.95566627e-05 -5.07169119e-04 -6.72429653e-05 6.72429653e-05 -6.82107892e-06 7.39612442e-05 -7.39612442e-05 -1.40030592e-05 -3.59208493e-04 -3.47581608e-03 -1.94925310e-05 -1.09913471e-03 1.23877805e-03 6.72429653e-05 3.72261408e-03 -4.21360468e-03 1.36999156e-04 -1.38061213e-05 1.43184607e-05 7.04182099e-05 2.40805687e-04 3.59208493e-04 3.47581608e-03 1.94925310e-05 1.23877805e-03 -1.09913471e-03 -6.72429653e-05 -4.21360468e-03 3.72261408e-03 -1.36999156e-04 1.43184607e-05 -1.38061213e-05 7.04182099e-05 -2.40805687e-04 1.91341235e-05 1.46638312e-04 1.95538614e-06 4.42043373e-05 -4.42043373e-05 -6.82107892e-06 -1.36999156e-04 1.36999156e-04 2.06276741e-05 1.36318793e-06 -1.36318793e-06 3.74312988e-05 1.02478251e-06 1.11912408e-05 2.10289351e-05 3.98776946e-06 -4.13755885e-06 -7.39612442e-05 -1.38061213e-05 1.43184607e-05 -1.36318793e-06 7.44879307e-06 -8.63228531e-06 -1.10952081e-07 -2.83293240e-06 -1.02478251e-06 -1.11912408e-05 -2.10289351e-05 -4.13755885e-06 3.98776946e-06 7.39612442e-05 1.43184607e-05 -1.38061213e-05 1.36318793e-06 -8.63228531e-06 7.44879307e-06 -1.10952081e-07 2.83293240e-06 1.99902626e-05 1.99902626e-05 -7.04182099e-05 -7.04182099e-05 1.10952081e-07 1.10952081e-07 1.45584085e-05 3.34006108e-05 2.56788439e-04 4.03239561e-06 7.75974336e-05 -7.75974336e-05 -1.40030592e-05 -2.40805687e-04 2.40805687e-04 3.74312988e-05 2.83293240e-06 -2.83293240e-06 6.29222274e-05 + 0 1 2 3 4 5 6 7 8 9 10 12 0 1 2 3 4 5 6 7 8 9 10 12 0 1 2 3 4 5 6 7 8 9 10 12 0 1 2 3 4 5 6 7 8 9 10 11 12 0 1 2 3 4 5 6 7 8 9 10 11 12 0 1 2 3 4 5 6 7 8 9 10 12 0 1 2 3 4 5 6 7 8 9 10 11 12 0 1 2 3 4 5 6 7 8 9 10 11 12 0 1 2 3 4 5 6 7 8 9 10 12 0 1 2 3 4 5 6 7 8 9 10 11 12 0 1 2 3 4 5 6 7 8 9 10 11 12 3 4 6 7 9 10 11 0 1 2 3 4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 25 13 14 15 16 17 18 19 20 21 22 23 25 13 14 15 16 17 18 19 20 21 22 23 25 13 14 15 16 17 18 19 20 21 22 23 24 25 13 14 15 16 17 18 19 20 21 22 23 24 25 13 14 15 16 17 18 19 20 21 22 23 25 13 14 15 16 17 18 19 20 21 22 23 24 25 13 14 15 16 17 18 19 20 21 22 23 24 25 13 14 15 16 17 18 19 20 21 22 23 25 13 14 15 16 17 18 19 20 21 22 23 24 25 13 14 15 16 17 18 19 20 21 22 23 24 25 16 17 19 20 22 23 24 13 14 15 16 17 18 19 20 21 22 23 25 + 0 12 24 36 49 62 74 87 100 112 125 138 145 157 169 181 193 206 219 231 244 257 269 282 295 302 314 +0 -1 0 491 + -3.08720237e-05 -3.07390885e-04 -1.04971511e-04 1.04971511e-04 1.40312477e-06 3.59371792e-04 -3.59371792e-04 -4.82934036e-06 -9.57555071e-06 3.34354066e-05 1.01771600e-06 -1.65853403e-05 -1.01771600e-06 -1.10678938e-02 -4.01898009e-02 -1.59965704e-02 1.59965704e-02 -1.59965704e-02 3.48221871e-02 -3.48221871e-02 3.48221871e-02 -2.30243503e-03 2.30243503e-03 -2.30243503e-03 -3.07390885e-04 -3.02853625e-03 -1.01904693e-03 1.01904693e-03 1.52691305e-05 3.47759038e-03 -3.47759038e-03 -5.25303803e-05 -7.34123089e-05 2.57169624e-04 1.11116241e-05 -1.27153849e-04 -1.11116241e-05 -4.02101705e-02 -8.51941384e-04 -2.06513817e-02 2.06513817e-02 -2.06513817e-02 -1.28347617e-02 1.28347617e-02 -1.28347617e-02 -5.95672459e-03 5.95672459e-03 -5.95672459e-03 1.04971511e-04 1.01904693e-03 3.23522367e-04 -3.63336653e-04 -5.62416573e-06 -1.09979124e-03 1.23944563e-03 1.94156142e-05 4.82254533e-06 -7.77363679e-05 -3.96066075e-06 4.83364399e-05 4.11041279e-06 1.60075545e-02 2.06367891e-02 9.20684060e-03 -1.62457954e-02 1.62457954e-02 -7.47144879e-03 1.78038327e-02 -1.78038327e-02 2.69551701e-03 3.61086424e-03 -3.61086424e-03 5.94234981e-03 -1.04971511e-04 -1.01904693e-03 -3.63336653e-04 3.23522367e-04 5.62416573e-06 1.23944563e-03 -1.09979124e-03 -1.94156142e-05 -3.94493122e-05 7.77363679e-05 4.11041279e-06 -2.83446667e-05 -3.96066075e-06 -1.60075545e-02 -2.06367891e-02 -1.62457954e-02 9.20684060e-03 -1.62457954e-02 1.78038327e-02 -7.47144879e-03 1.78038327e-02 1.34775851e-03 -3.61086424e-03 5.94234981e-03 -2.33438621e-03 -3.61086424e-03 1.40312477e-06 1.52691305e-05 5.62416573e-06 -5.62416573e-06 -4.12471245e-05 -1.93518153e-05 1.93518153e-05 1.44520599e-04 9.71049589e-07 -4.00502527e-06 -2.10524692e-05 1.68190722e-06 2.10524692e-05 1.60075545e-02 2.06367891e-02 1.62457954e-02 -1.62457954e-02 9.20684060e-03 -1.78038327e-02 1.78038327e-02 -7.47144879e-03 -1.34775851e-03 5.94234981e-03 -3.61086424e-03 -2.33438621e-03 3.61086424e-03 -3.59371792e-04 -3.47759038e-03 -1.09979124e-03 1.23944563e-03 1.93518153e-05 3.72486395e-03 -4.21589662e-03 -6.67426116e-05 -7.62760775e-06 2.41287214e-04 1.37086540e-05 -1.54060042e-04 -1.42204009e-05 -3.48613875e-02 1.27621922e-02 -7.53206233e-03 1.78560844e-02 -1.78560844e-02 -2.05536306e-02 2.16538149e-02 -2.16538149e-02 -7.11790393e-03 -9.20772072e-04 9.20772072e-04 -7.07642391e-03 3.59371792e-04 3.47759038e-03 1.23944563e-03 -1.09979124e-03 -1.93518153e-05 -4.21589662e-03 3.72486395e-03 6.67426116e-05 1.29606106e-04 -2.41287214e-04 -1.42204009e-05 8.36357232e-05 1.37086540e-05 3.48613875e-02 -1.27621922e-02 1.78560844e-02 -7.53206233e-03 1.78560844e-02 2.16538149e-02 -2.05536306e-02 2.16538149e-02 -3.55895196e-03 9.20772072e-04 -7.07642391e-03 6.16428562e-03 9.20772072e-04 -4.82934036e-06 -5.25303803e-05 -1.94156142e-05 1.94156142e-05 1.44520599e-04 6.67426116e-05 -6.67426116e-05 -5.07533292e-04 -3.38618226e-06 1.39044038e-05 7.40430828e-05 -5.86503972e-06 -7.40430828e-05 -3.48613875e-02 1.27621922e-02 -1.78560844e-02 1.78560844e-02 -7.53206233e-03 -2.16538149e-02 2.16538149e-02 -2.05536306e-02 3.55895196e-03 -7.07642391e-03 9.20772072e-04 6.16428562e-03 -9.20772072e-04 -9.57555071e-06 -7.34123089e-05 -4.82254533e-06 3.94493122e-05 9.71049589e-07 7.62760775e-06 -1.29606106e-04 -3.38618226e-06 1.60708725e-05 -1.86919672e-05 5.81086888e-07 2.61781210e-06 -7.73544764e-07 -2.69864160e-03 -1.34932080e-03 1.34932080e-03 7.12031599e-03 3.56015800e-03 -3.56015800e-03 2.45879056e-03 -7.22168763e-04 7.22168763e-04 1.44433753e-03 3.34354066e-05 2.57169624e-04 7.77363679e-05 -7.77363679e-05 -4.00502527e-06 -2.41287214e-04 2.41287214e-04 1.39044038e-05 -1.86919672e-05 6.28234069e-05 -2.81468585e-06 -3.23754368e-05 2.81468585e-06 -2.28290009e-03 -5.88060035e-03 -3.56615668e-03 3.56615668e-03 -5.90018653e-03 8.44999113e-04 -8.44999113e-04 7.00213894e-03 -7.22214326e-04 -4.89935284e-03 6.10850862e-03 -1.25091191e-03 -6.10850862e-03 -1.01771600e-06 -1.11116241e-05 -3.96066075e-06 4.11041279e-06 2.10524692e-05 1.37086540e-05 -1.42204009e-05 -7.40430828e-05 -5.81086888e-07 2.81468585e-06 7.46646087e-06 -1.22870323e-06 -8.65011321e-06 2.28290009e-03 5.88060035e-03 3.56615668e-03 -5.90018653e-03 3.56615668e-03 -8.44999113e-04 7.00213894e-03 -8.44999113e-04 7.22214326e-04 6.10850862e-03 -4.89935284e-03 -1.25091191e-03 6.10850862e-03 -1.65853403e-05 -1.27153849e-04 -4.83364399e-05 2.83446667e-05 1.68190722e-06 1.54060042e-04 -8.36357232e-05 -5.86503972e-06 2.61781210e-06 -3.23754368e-05 1.22870323e-06 1.90936616e-05 -1.11758762e-06 2.33709218e-03 2.33709218e-03 -6.16637453e-03 -6.16637453e-03 -1.25083299e-03 -1.25083299e-03 2.45879056e-03 1.01771600e-06 1.11116241e-05 4.11041279e-06 -3.96066075e-06 -2.10524692e-05 -1.42204009e-05 1.37086540e-05 7.40430828e-05 7.73544764e-07 -2.81468585e-06 -8.65011321e-06 1.11758762e-06 7.46646087e-06 -2.28290009e-03 -5.88060035e-03 -5.90018653e-03 3.56615668e-03 -3.56615668e-03 7.00213894e-03 -8.44999113e-04 8.44999113e-04 1.44442865e-03 -6.10850862e-03 6.10850862e-03 -4.89935284e-03 -3.08602939e-05 -3.07263521e-04 -1.04923873e-04 1.04923873e-04 -1.41324097e-06 3.59208493e-04 -3.59208493e-04 4.86525398e-06 -9.56706174e-06 3.34006108e-05 -1.02478251e-06 -1.65706370e-05 1.02478251e-06 -3.07263521e-04 -3.02715668e-03 -1.01852759e-03 1.01852759e-03 -1.53820756e-05 3.47581608e-03 -3.47581608e-03 5.29298815e-05 -7.33191558e-05 2.56788439e-04 -1.11912408e-05 -1.26992503e-04 1.11912408e-05 1.04923873e-04 1.01852759e-03 3.23331675e-04 -3.63143075e-04 5.66366604e-06 -1.09913471e-03 1.23877805e-03 -1.95566627e-05 4.79009339e-06 -7.75974336e-05 3.98776946e-06 4.82772103e-05 -4.13755885e-06 -1.04923873e-04 -1.01852759e-03 -3.63143075e-04 3.23331675e-04 -5.66366604e-06 1.23877805e-03 -1.09913471e-03 1.95566627e-05 -3.94142439e-05 7.75974336e-05 -4.13755885e-06 -2.82869477e-05 3.98776946e-06 -1.41324097e-06 -1.53820756e-05 -5.66366604e-06 5.66366604e-06 -4.12162075e-05 1.94925310e-05 -1.94925310e-05 1.44413999e-04 -9.77693072e-07 4.03239561e-06 -2.10289351e-05 -1.69341407e-06 2.10289351e-05 -3.59208493e-04 -3.47581608e-03 -1.09913471e-03 1.23877805e-03 -1.94925310e-05 3.72261408e-03 -4.21360468e-03 6.72429653e-05 -7.51561916e-06 2.40805687e-04 -1.38061213e-05 -1.53853854e-04 1.43184607e-05 3.59208493e-04 3.47581608e-03 1.23877805e-03 -1.09913471e-03 1.94925310e-05 -4.21360468e-03 3.72261408e-03 -6.72429653e-05 1.29483537e-04 -2.40805687e-04 1.43184607e-05 8.34356441e-05 -1.38061213e-05 4.86525398e-06 5.29298815e-05 1.95566627e-05 -1.95566627e-05 1.44413999e-04 -6.72429653e-05 6.72429653e-05 -5.07169119e-04 3.41053946e-06 -1.40030592e-05 7.39612442e-05 5.90722763e-06 -7.39612442e-05 -9.56706174e-06 -7.33191558e-05 -4.79009339e-06 3.94142439e-05 -9.77693072e-07 7.51561916e-06 -1.29483537e-04 3.41053946e-06 1.60757249e-05 -1.87156494e-05 -5.85506643e-07 2.62806909e-06 7.77681284e-07 3.34006108e-05 2.56788439e-04 7.75974336e-05 -7.75974336e-05 4.03239561e-06 -2.40805687e-04 2.40805687e-04 -1.40030592e-05 -1.87156494e-05 6.29222274e-05 2.83293240e-06 -3.24164557e-05 -2.83293240e-06 1.02478251e-06 1.11912408e-05 3.98776946e-06 -4.13755885e-06 2.10289351e-05 -1.38061213e-05 1.43184607e-05 -7.39612442e-05 5.85506643e-07 -2.83293240e-06 7.44879307e-06 1.23603141e-06 -8.63228531e-06 -1.65706370e-05 -1.26992503e-04 -4.82772103e-05 2.82869477e-05 -1.69341407e-06 1.53853854e-04 -8.34356441e-05 5.90722763e-06 2.62806909e-06 -3.24164557e-05 -1.23603141e-06 1.91103577e-05 1.12507933e-06 -1.02478251e-06 -1.11912408e-05 -4.13755885e-06 3.98776946e-06 -2.10289351e-05 1.43184607e-05 -1.38061213e-05 7.39612442e-05 -7.77681284e-07 2.83293240e-06 -8.63228531e-06 -1.12507933e-06 7.44879307e-06 + 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 22 23 25 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 22 23 25 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 25 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 25 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 0 1 2 3 4 5 6 7 8 9 10 11 12 15 16 17 18 19 20 21 22 23 25 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 0 1 2 3 4 5 6 7 8 9 10 11 12 16 17 19 20 22 23 24 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 25 13 14 15 16 17 18 19 20 21 22 23 24 25 13 14 15 16 17 18 19 20 21 22 23 24 25 13 14 15 16 17 18 19 20 21 22 23 24 25 13 14 15 16 17 18 19 20 21 22 23 24 25 13 14 15 16 17 18 19 20 21 22 23 24 25 13 14 15 16 17 18 19 20 21 22 23 24 25 13 14 15 16 17 18 19 20 21 22 23 24 25 13 14 15 16 17 18 19 20 21 22 23 24 25 13 14 15 16 17 18 19 20 21 22 23 24 25 13 14 15 16 17 18 19 20 21 22 23 24 25 13 14 15 16 17 18 19 20 21 22 23 24 25 13 14 15 16 17 18 19 20 21 22 23 24 25 13 14 15 16 17 18 19 20 21 22 23 24 25 + 0 24 48 73 99 125 150 176 202 225 251 277 297 322 335 348 361 374 387 400 413 426 439 452 465 478 491 +0 -1 1 338 + -3.08720237e-05 -3.07390885e-04 -1.04971511e-04 -1.40312477e-06 -1.04971511e-04 3.59371792e-04 4.82934036e-06 3.59371792e-04 -9.57555071e-06 -1.01771600e-06 -3.34354066e-05 1.65853403e-05 -1.01771600e-06 -3.07390885e-04 -3.02853625e-03 -1.01904693e-03 -1.52691305e-05 -1.01904693e-03 3.47759038e-03 5.25303803e-05 3.47759038e-03 -7.34123089e-05 -1.11116241e-05 -2.57169624e-04 1.27153849e-04 -1.11116241e-05 1.04971511e-04 1.01904693e-03 3.23522367e-04 5.62416573e-06 3.63336653e-04 -1.09979124e-03 -1.94156142e-05 -1.23944563e-03 4.82254533e-06 3.96066075e-06 7.77363679e-05 -4.83364399e-05 4.11041279e-06 -1.40312477e-06 -1.52691305e-05 -5.62416573e-06 -4.12471245e-05 -5.62416573e-06 1.93518153e-05 1.44520599e-04 1.93518153e-05 -9.71049589e-07 -2.10524692e-05 -4.00502527e-06 1.68190722e-06 -2.10524692e-05 1.04971511e-04 1.01904693e-03 3.63336653e-04 5.62416573e-06 3.23522367e-04 -1.23944563e-03 -1.94156142e-05 -1.09979124e-03 3.94493122e-05 4.11041279e-06 7.77363679e-05 -2.83446667e-05 3.96066075e-06 -3.59371792e-04 -3.47759038e-03 -1.09979124e-03 -1.93518153e-05 -1.23944563e-03 3.72486395e-03 6.67426116e-05 4.21589662e-03 -7.62760775e-06 -1.37086540e-05 -2.41287214e-04 1.54060042e-04 -1.42204009e-05 4.82934036e-06 5.25303803e-05 1.94156142e-05 1.44520599e-04 1.94156142e-05 -6.67426116e-05 -5.07533292e-04 -6.67426116e-05 3.38618226e-06 7.40430828e-05 1.39044038e-05 -5.86503972e-06 7.40430828e-05 -3.59371792e-04 -3.47759038e-03 -1.23944563e-03 -1.93518153e-05 -1.09979124e-03 4.21589662e-03 6.67426116e-05 3.72486395e-03 -1.29606106e-04 -1.42204009e-05 -2.41287214e-04 8.36357232e-05 -1.37086540e-05 -9.57555071e-06 -7.34123089e-05 -4.82254533e-06 -9.71049589e-07 -3.94493122e-05 7.62760775e-06 3.38618226e-06 1.29606106e-04 1.60708725e-05 -5.81086888e-07 1.86919672e-05 -2.61781210e-06 -7.73544764e-07 1.01771600e-06 1.11116241e-05 3.96066075e-06 2.10524692e-05 4.11041279e-06 -1.37086540e-05 -7.40430828e-05 -1.42204009e-05 5.81086888e-07 7.46646087e-06 2.81468585e-06 -1.22870323e-06 8.65011321e-06 -3.34354066e-05 -2.57169624e-04 -7.77363679e-05 -4.00502527e-06 -7.77363679e-05 2.41287214e-04 1.39044038e-05 2.41287214e-04 1.86919672e-05 -2.81468585e-06 6.28234069e-05 -3.23754368e-05 -2.81468585e-06 1.65853403e-05 1.27153849e-04 4.83364399e-05 1.68190722e-06 2.83446667e-05 -1.54060042e-04 -5.86503972e-06 -8.36357232e-05 -2.61781210e-06 1.22870323e-06 -3.23754368e-05 1.90936616e-05 1.11758762e-06 1.01771600e-06 1.11116241e-05 4.11041279e-06 2.10524692e-05 3.96066075e-06 -1.42204009e-05 -7.40430828e-05 -1.37086540e-05 7.73544764e-07 8.65011321e-06 2.81468585e-06 -1.11758762e-06 7.46646087e-06 -3.08602939e-05 -3.07263521e-04 -1.04923873e-04 1.41324097e-06 -1.04923873e-04 3.59208493e-04 -4.86525398e-06 3.59208493e-04 -9.56706174e-06 1.02478251e-06 -3.34006108e-05 1.65706370e-05 1.02478251e-06 -3.07263521e-04 -3.02715668e-03 -1.01852759e-03 1.53820756e-05 -1.01852759e-03 3.47581608e-03 -5.29298815e-05 3.47581608e-03 -7.33191558e-05 1.11912408e-05 -2.56788439e-04 1.26992503e-04 1.11912408e-05 1.04923873e-04 1.01852759e-03 3.23331675e-04 -5.66366604e-06 3.63143075e-04 -1.09913471e-03 1.95566627e-05 -1.23877805e-03 4.79009339e-06 -3.98776946e-06 7.75974336e-05 -4.82772103e-05 -4.13755885e-06 1.41324097e-06 1.53820756e-05 5.66366604e-06 -4.12162075e-05 5.66366604e-06 -1.94925310e-05 1.44413999e-04 -1.94925310e-05 9.77693072e-07 -2.10289351e-05 4.03239561e-06 -1.69341407e-06 -2.10289351e-05 1.04923873e-04 1.01852759e-03 3.63143075e-04 -5.66366604e-06 3.23331675e-04 -1.23877805e-03 1.95566627e-05 -1.09913471e-03 3.94142439e-05 -4.13755885e-06 7.75974336e-05 -2.82869477e-05 -3.98776946e-06 -3.59208493e-04 -3.47581608e-03 -1.09913471e-03 1.94925310e-05 -1.23877805e-03 3.72261408e-03 -6.72429653e-05 4.21360468e-03 -7.51561916e-06 1.38061213e-05 -2.40805687e-04 1.53853854e-04 1.43184607e-05 -4.86525398e-06 -5.29298815e-05 -1.95566627e-05 1.44413999e-04 -1.95566627e-05 6.72429653e-05 -5.07169119e-04 6.72429653e-05 -3.41053946e-06 7.39612442e-05 -1.40030592e-05 5.90722763e-06 7.39612442e-05 -3.59208493e-04 -3.47581608e-03 -1.23877805e-03 1.94925310e-05 -1.09913471e-03 4.21360468e-03 -6.72429653e-05 3.72261408e-03 -1.29483537e-04 1.43184607e-05 -2.40805687e-04 8.34356441e-05 1.38061213e-05 -9.56706174e-06 -7.33191558e-05 -4.79009339e-06 9.77693072e-07 -3.94142439e-05 7.51561916e-06 -3.41053946e-06 1.29483537e-04 1.60757249e-05 5.85506643e-07 1.87156494e-05 -2.62806909e-06 7.77681284e-07 -1.02478251e-06 -1.11912408e-05 -3.98776946e-06 2.10289351e-05 -4.13755885e-06 1.38061213e-05 -7.39612442e-05 1.43184607e-05 -5.85506643e-07 7.44879307e-06 -2.83293240e-06 1.23603141e-06 8.63228531e-06 -3.34006108e-05 -2.56788439e-04 -7.75974336e-05 4.03239561e-06 -7.75974336e-05 2.40805687e-04 -1.40030592e-05 2.40805687e-04 1.87156494e-05 2.83293240e-06 6.29222274e-05 -3.24164557e-05 2.83293240e-06 1.65706370e-05 1.26992503e-04 4.82772103e-05 -1.69341407e-06 2.82869477e-05 -1.53853854e-04 5.90722763e-06 -8.34356441e-05 -2.62806909e-06 -1.23603141e-06 -3.24164557e-05 1.91103577e-05 -1.12507933e-06 -1.02478251e-06 -1.11912408e-05 -4.13755885e-06 2.10289351e-05 -3.98776946e-06 1.43184607e-05 -7.39612442e-05 1.38061213e-05 -7.77681284e-07 8.63228531e-06 -2.83293240e-06 1.12507933e-06 7.44879307e-06 + 0 1 2 3 4 5 6 7 8 9 10 11 12 0 1 2 3 4 5 6 7 8 9 10 11 12 0 1 2 3 4 5 6 7 8 9 10 11 12 0 1 2 3 4 5 6 7 8 9 10 11 12 0 1 2 3 4 5 6 7 8 9 10 11 12 0 1 2 3 4 5 6 7 8 9 10 11 12 0 1 2 3 4 5 6 7 8 9 10 11 12 0 1 2 3 4 5 6 7 8 9 10 11 12 0 1 2 3 4 5 6 7 8 9 10 11 12 0 1 2 3 4 5 6 7 8 9 10 11 12 0 1 2 3 4 5 6 7 8 9 10 11 12 0 1 2 3 4 5 6 7 8 9 10 11 12 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 13 14 15 16 17 18 19 20 21 22 23 24 25 13 14 15 16 17 18 19 20 21 22 23 24 25 13 14 15 16 17 18 19 20 21 22 23 24 25 13 14 15 16 17 18 19 20 21 22 23 24 25 13 14 15 16 17 18 19 20 21 22 23 24 25 13 14 15 16 17 18 19 20 21 22 23 24 25 13 14 15 16 17 18 19 20 21 22 23 24 25 13 14 15 16 17 18 19 20 21 22 23 24 25 13 14 15 16 17 18 19 20 21 22 23 24 25 13 14 15 16 17 18 19 20 21 22 23 24 25 13 14 15 16 17 18 19 20 21 22 23 24 25 13 14 15 16 17 18 19 20 21 22 23 24 25 + 0 13 26 39 52 65 78 91 104 117 130 143 156 169 182 195 208 221 234 247 260 273 286 299 312 325 338 +0 0 -1 467 + -3.08720237e-05 -3.07390885e-04 -1.40312477e-06 1.04971511e-04 1.04971511e-04 4.82934036e-06 -3.59371792e-04 -3.59371792e-04 1.91511014e-05 1.01771600e-06 1.01771600e-06 -3.34354066e-05 -1.10678938e-02 -4.01898009e-02 1.59965704e-02 1.59965704e-02 1.59965704e-02 -3.48221871e-02 -3.48221871e-02 -3.48221871e-02 2.30243503e-03 2.30243503e-03 2.30243503e-03 -3.07390885e-04 -3.02853625e-03 -1.52691305e-05 1.01904693e-03 1.01904693e-03 5.25303803e-05 -3.47759038e-03 -3.47759038e-03 1.46824618e-04 1.11116241e-05 1.11116241e-05 -2.57169624e-04 -4.02101705e-02 -8.51941384e-04 2.06513817e-02 2.06513817e-02 2.06513817e-02 1.28347617e-02 1.28347617e-02 1.28347617e-02 5.95672459e-03 5.95672459e-03 5.95672459e-03 -1.40312477e-06 -1.52691305e-05 -4.12471245e-05 5.62416573e-06 5.62416573e-06 1.44520599e-04 -1.93518153e-05 -1.93518153e-05 1.94209918e-06 2.10524692e-05 2.10524692e-05 -4.00502527e-06 -1.60075545e-02 -2.06367891e-02 9.20684060e-03 1.62457954e-02 1.62457954e-02 -7.47144879e-03 -1.78038327e-02 -1.78038327e-02 -2.69551701e-03 3.61086424e-03 3.61086424e-03 5.94234981e-03 -1.04971511e-04 -1.01904693e-03 -5.62416573e-06 3.23522367e-04 3.63336653e-04 1.94156142e-05 -1.09979124e-03 -1.23944563e-03 4.42718575e-05 3.96066075e-06 4.11041279e-06 1.99917732e-05 -7.77363679e-05 -1.60075545e-02 -2.06367891e-02 1.62457954e-02 9.20684060e-03 1.62457954e-02 -1.78038327e-02 -7.47144879e-03 -1.78038327e-02 1.34775851e-03 3.61086424e-03 5.94234981e-03 -2.33438621e-03 3.61086424e-03 -1.04971511e-04 -1.01904693e-03 -5.62416573e-06 3.63336653e-04 3.23522367e-04 1.94156142e-05 -1.23944563e-03 -1.09979124e-03 4.42718575e-05 4.11041279e-06 3.96066075e-06 -1.99917732e-05 -7.77363679e-05 -1.60075545e-02 -2.06367891e-02 1.62457954e-02 1.62457954e-02 9.20684060e-03 -1.78038327e-02 -1.78038327e-02 -7.47144879e-03 1.34775851e-03 5.94234981e-03 3.61086424e-03 2.33438621e-03 3.61086424e-03 4.82934036e-06 5.25303803e-05 1.44520599e-04 -1.94156142e-05 -1.94156142e-05 -5.07533292e-04 6.67426116e-05 6.67426116e-05 -6.77236452e-06 -7.40430828e-05 -7.40430828e-05 1.39044038e-05 3.48613875e-02 -1.27621922e-02 -7.53206233e-03 -1.78560844e-02 -1.78560844e-02 -2.05536306e-02 -2.16538149e-02 -2.16538149e-02 7.11790393e-03 -9.20772072e-04 -9.20772072e-04 -7.07642391e-03 3.59371792e-04 3.47759038e-03 1.93518153e-05 -1.09979124e-03 -1.23944563e-03 -6.67426116e-05 3.72486395e-03 4.21589662e-03 -1.37233714e-04 -1.37086540e-05 -1.42204009e-05 -7.04243190e-05 2.41287214e-04 3.48613875e-02 -1.27621922e-02 -1.78560844e-02 -7.53206233e-03 -1.78560844e-02 -2.16538149e-02 -2.05536306e-02 -2.16538149e-02 -3.55895196e-03 -9.20772072e-04 -7.07642391e-03 6.16428562e-03 -9.20772072e-04 3.59371792e-04 3.47759038e-03 1.93518153e-05 -1.23944563e-03 -1.09979124e-03 -6.67426116e-05 4.21589662e-03 3.72486395e-03 -1.37233714e-04 -1.42204009e-05 -1.37086540e-05 7.04243190e-05 2.41287214e-04 3.48613875e-02 -1.27621922e-02 -1.78560844e-02 -1.78560844e-02 -7.53206233e-03 -2.16538149e-02 -2.16538149e-02 -2.05536306e-02 -3.55895196e-03 -7.07642391e-03 -9.20772072e-04 -6.16428562e-03 -9.20772072e-04 1.91511014e-05 1.46824618e-04 1.94209918e-06 -4.42718575e-05 -4.42718575e-05 -6.77236452e-06 1.37233714e-04 1.37233714e-04 2.06050561e-05 -1.35463165e-06 -1.35463165e-06 -3.73839344e-05 2.69864160e-03 -1.34932080e-03 -1.34932080e-03 -7.12031599e-03 3.56015800e-03 3.56015800e-03 2.45879056e-03 7.22168763e-04 7.22168763e-04 -1.44433753e-03 -1.01771600e-06 -1.11116241e-05 -2.10524692e-05 3.96066075e-06 4.11041279e-06 7.40430828e-05 -1.37086540e-05 -1.42204009e-05 1.35463165e-06 7.46646087e-06 8.65011321e-06 1.11115607e-07 -2.81468585e-06 2.28290009e-03 5.88060035e-03 -3.56615668e-03 -3.56615668e-03 -5.90018653e-03 8.44999113e-04 8.44999113e-04 7.00213894e-03 7.22214326e-04 -4.89935284e-03 -6.10850862e-03 1.25091191e-03 -6.10850862e-03 -1.01771600e-06 -1.11116241e-05 -2.10524692e-05 4.11041279e-06 3.96066075e-06 7.40430828e-05 -1.42204009e-05 -1.37086540e-05 1.35463165e-06 8.65011321e-06 7.46646087e-06 -1.11115607e-07 -2.81468585e-06 2.28290009e-03 5.88060035e-03 -3.56615668e-03 -5.90018653e-03 -3.56615668e-03 8.44999113e-04 7.00213894e-03 8.44999113e-04 7.22214326e-04 -6.10850862e-03 -4.89935284e-03 -1.25091191e-03 -6.10850862e-03 -1.99917732e-05 1.99917732e-05 7.04243190e-05 -7.04243190e-05 -1.11115607e-07 1.11115607e-07 1.45594780e-05 2.33709218e-03 -2.33709218e-03 -6.16637453e-03 6.16637453e-03 1.25083299e-03 -1.25083299e-03 2.45879056e-03 -3.34354066e-05 -2.57169624e-04 -4.00502527e-06 7.77363679e-05 7.77363679e-05 1.39044038e-05 -2.41287214e-04 -2.41287214e-04 -3.73839344e-05 2.81468585e-06 2.81468585e-06 6.28234069e-05 2.28290009e-03 5.88060035e-03 -5.90018653e-03 -3.56615668e-03 -3.56615668e-03 7.00213894e-03 8.44999113e-04 8.44999113e-04 -1.44442865e-03 -6.10850862e-03 -6.10850862e-03 -4.89935284e-03 -3.08602939e-05 -3.07263521e-04 1.41324097e-06 1.04923873e-04 1.04923873e-04 -4.86525398e-06 -3.59208493e-04 -3.59208493e-04 1.91341235e-05 -1.02478251e-06 -1.02478251e-06 -3.34006108e-05 -3.07263521e-04 -3.02715668e-03 1.53820756e-05 1.01852759e-03 1.01852759e-03 -5.29298815e-05 -3.47581608e-03 -3.47581608e-03 1.46638312e-04 -1.11912408e-05 -1.11912408e-05 -2.56788439e-04 1.41324097e-06 1.53820756e-05 -4.12162075e-05 -5.66366604e-06 -5.66366604e-06 1.44413999e-04 1.94925310e-05 1.94925310e-05 -1.95538614e-06 2.10289351e-05 2.10289351e-05 4.03239561e-06 -1.04923873e-04 -1.01852759e-03 5.66366604e-06 3.23331675e-04 3.63143075e-04 -1.95566627e-05 -1.09913471e-03 -1.23877805e-03 4.42043373e-05 -3.98776946e-06 -4.13755885e-06 1.99902626e-05 -7.75974336e-05 -1.04923873e-04 -1.01852759e-03 5.66366604e-06 3.63143075e-04 3.23331675e-04 -1.95566627e-05 -1.23877805e-03 -1.09913471e-03 4.42043373e-05 -4.13755885e-06 -3.98776946e-06 -1.99902626e-05 -7.75974336e-05 -4.86525398e-06 -5.29298815e-05 1.44413999e-04 1.95566627e-05 1.95566627e-05 -5.07169119e-04 -6.72429653e-05 -6.72429653e-05 6.82107892e-06 -7.39612442e-05 -7.39612442e-05 -1.40030592e-05 3.59208493e-04 3.47581608e-03 -1.94925310e-05 -1.09913471e-03 -1.23877805e-03 6.72429653e-05 3.72261408e-03 4.21360468e-03 -1.36999156e-04 1.38061213e-05 1.43184607e-05 -7.04182099e-05 2.40805687e-04 3.59208493e-04 3.47581608e-03 -1.94925310e-05 -1.23877805e-03 -1.09913471e-03 6.72429653e-05 4.21360468e-03 3.72261408e-03 -1.36999156e-04 1.43184607e-05 1.38061213e-05 7.04182099e-05 2.40805687e-04 1.91341235e-05 1.46638312e-04 -1.95538614e-06 -4.42043373e-05 -4.42043373e-05 6.82107892e-06 1.36999156e-04 1.36999156e-04 2.06276741e-05 1.36318793e-06 1.36318793e-06 -3.74312988e-05 1.02478251e-06 1.11912408e-05 -2.10289351e-05 -3.98776946e-06 -4.13755885e-06 7.39612442e-05 1.38061213e-05 1.43184607e-05 -1.36318793e-06 7.44879307e-06 8.63228531e-06 -1.10952081e-07 2.83293240e-06 1.02478251e-06 1.11912408e-05 -2.10289351e-05 -4.13755885e-06 -3.98776946e-06 7.39612442e-05 1.43184607e-05 1.38061213e-05 -1.36318793e-06 8.63228531e-06 7.44879307e-06 1.10952081e-07 2.83293240e-06 -1.99902626e-05 1.99902626e-05 7.04182099e-05 -7.04182099e-05 1.10952081e-07 -1.10952081e-07 1.45584085e-05 -3.34006108e-05 -2.56788439e-04 4.03239561e-06 7.75974336e-05 7.75974336e-05 -1.40030592e-05 -2.40805687e-04 -2.40805687e-04 -3.74312988e-05 -2.83293240e-06 -2.83293240e-06 6.29222274e-05 + 0 1 2 3 4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 22 23 25 0 1 2 3 4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 22 23 25 0 1 2 3 4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 25 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 0 1 2 3 4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 25 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 0 1 2 3 4 5 6 7 8 9 10 12 15 16 17 18 19 20 21 22 23 25 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 3 4 6 7 9 10 11 16 17 19 20 22 23 24 0 1 2 3 4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 25 13 14 15 16 17 18 19 20 21 22 23 25 13 14 15 16 17 18 19 20 21 22 23 25 13 14 15 16 17 18 19 20 21 22 23 25 13 14 15 16 17 18 19 20 21 22 23 24 25 13 14 15 16 17 18 19 20 21 22 23 24 25 13 14 15 16 17 18 19 20 21 22 23 25 13 14 15 16 17 18 19 20 21 22 23 24 25 13 14 15 16 17 18 19 20 21 22 23 24 25 13 14 15 16 17 18 19 20 21 22 23 25 13 14 15 16 17 18 19 20 21 22 23 24 25 13 14 15 16 17 18 19 20 21 22 23 24 25 16 17 19 20 22 23 24 13 14 15 16 17 18 19 20 21 22 23 25 + 0 23 46 70 96 122 146 172 198 220 246 272 286 310 322 334 346 359 372 384 397 410 422 435 448 455 467 +0 0 0 372 + -6.85962295e-01 -2.49343638e-03 -1.10678938e-02 -4.01898009e-02 1.59965704e-02 -1.59965704e-02 -1.59965704e-02 -3.48221871e-02 3.48221871e-02 3.48221871e-02 -2.30243503e-03 -2.30243503e-03 2.30243503e-03 -2.49343638e-03 4.23563560e-01 -4.02101705e-02 -8.51941384e-04 2.06513817e-02 -2.06513817e-02 -2.06513817e-02 1.28347617e-02 -1.28347617e-02 -1.28347617e-02 -5.95672459e-03 -5.95672459e-03 5.95672459e-03 -1.83358455e-01 1.59157921e-02 7.03211926e-04 -1.60075545e-02 -2.06367891e-02 9.20684060e-03 -1.62457954e-02 -1.62457954e-02 -7.47144879e-03 1.78038327e-02 1.78038327e-02 -2.69551701e-03 -3.61086424e-03 -3.61086424e-03 5.94234981e-03 -1.83358455e-01 1.59157921e-02 7.03211926e-04 1.60075545e-02 2.06367891e-02 -1.62457954e-02 9.20684060e-03 1.62457954e-02 1.78038327e-02 -7.47144879e-03 -1.78038327e-02 -1.34775851e-03 3.61086424e-03 5.94234981e-03 2.33438621e-03 -3.61086424e-03 -1.83358455e-01 1.59157921e-02 7.03211926e-04 1.60075545e-02 2.06367891e-02 -1.62457954e-02 1.62457954e-02 9.20684060e-03 1.78038327e-02 -1.78038327e-02 -7.47144879e-03 -1.34775851e-03 5.94234981e-03 3.61086424e-03 -2.33438621e-03 -3.61086424e-03 1.59157921e-02 6.01587239e-01 -1.47714525e-03 3.48613875e-02 -1.27621922e-02 -7.53206234e-03 1.78560844e-02 1.78560844e-02 -2.05536306e-02 2.16538149e-02 2.16538149e-02 7.11790393e-03 9.20772072e-04 9.20772072e-04 -7.07642391e-03 1.59157921e-02 6.01587239e-01 -1.47714525e-03 -3.48613875e-02 1.27621922e-02 1.78560844e-02 -7.53206234e-03 -1.78560844e-02 2.16538149e-02 -2.05536306e-02 -2.16538149e-02 3.55895196e-03 -9.20772072e-04 -7.07642391e-03 -6.16428562e-03 9.20772072e-04 1.59157921e-02 6.01587239e-01 -1.47714525e-03 -3.48613875e-02 1.27621922e-02 1.78560844e-02 -1.78560844e-02 -7.53206234e-03 2.16538149e-02 -2.16538149e-02 -2.05536306e-02 3.55895196e-03 -7.07642391e-03 -9.20772072e-04 6.16428562e-03 9.20772072e-04 7.26235429e-01 2.69864160e-03 1.34932080e-03 1.34932080e-03 -7.12031599e-03 -3.56015800e-03 -3.56015800e-03 2.45879056e-03 -7.22168763e-04 -7.22168763e-04 -1.44433753e-03 7.03211926e-04 -1.47714525e-03 7.25552655e-01 -2.28290009e-03 -5.88060035e-03 3.56615668e-03 -3.56615668e-03 -5.90018653e-03 -8.44999113e-04 8.44999113e-04 7.00213894e-03 -7.22214326e-04 -4.89935284e-03 -6.10850862e-03 -1.25091191e-03 6.10850862e-03 7.03211926e-04 -1.47714525e-03 7.25552655e-01 -2.28290009e-03 -5.88060035e-03 3.56615668e-03 -5.90018653e-03 -3.56615668e-03 -8.44999113e-04 7.00213894e-03 8.44999113e-04 -7.22214326e-04 -6.10850862e-03 -4.89935284e-03 1.25091191e-03 6.10850862e-03 7.26235429e-01 -2.33709218e-03 2.33709218e-03 6.16637453e-03 -6.16637453e-03 -1.25083299e-03 1.25083299e-03 2.45879056e-03 7.03211926e-04 -1.47714525e-03 7.25552655e-01 2.28290009e-03 5.88060035e-03 -5.90018653e-03 3.56615668e-03 3.56615668e-03 7.00213894e-03 -8.44999113e-04 -8.44999113e-04 -1.44442865e-03 6.10850862e-03 6.10850862e-03 -4.89935284e-03 -1.10678938e-02 -4.02101705e-02 -1.60075545e-02 1.60075545e-02 1.60075545e-02 3.48613875e-02 -3.48613875e-02 -3.48613875e-02 -2.28290009e-03 -2.28290009e-03 2.28290009e-03 -6.85940189e-01 -2.50823111e-03 -4.01898009e-02 -8.51941384e-04 -2.06367891e-02 2.06367891e-02 2.06367891e-02 -1.27621922e-02 1.27621922e-02 1.27621922e-02 -5.88060035e-03 -5.88060035e-03 5.88060035e-03 -2.50823111e-03 4.23515229e-01 1.59965704e-02 2.06513817e-02 9.20684060e-03 -1.62457954e-02 -1.62457954e-02 -7.53206234e-03 1.78560844e-02 1.78560844e-02 2.69864160e-03 3.56615668e-03 3.56615668e-03 -5.90018653e-03 -1.83349369e-01 1.59486915e-02 -7.01697013e-04 -1.59965704e-02 -2.06513817e-02 -1.62457954e-02 9.20684060e-03 1.62457954e-02 1.78560844e-02 -7.53206234e-03 -1.78560844e-02 1.34932080e-03 -3.56615668e-03 -5.90018653e-03 -2.33709218e-03 3.56615668e-03 -1.83349369e-01 1.59486915e-02 -7.01697013e-04 -1.59965704e-02 -2.06513817e-02 -1.62457954e-02 1.62457954e-02 9.20684060e-03 1.78560844e-02 -1.78560844e-02 -7.53206234e-03 1.34932080e-03 -5.90018653e-03 -3.56615668e-03 2.33709218e-03 3.56615668e-03 -1.83349369e-01 1.59486915e-02 -7.01697013e-04 -3.48221871e-02 1.28347617e-02 -7.47144879e-03 1.78038327e-02 1.78038327e-02 -2.05536306e-02 2.16538149e-02 2.16538149e-02 -7.12031599e-03 -8.44999113e-04 -8.44999113e-04 7.00213894e-03 1.59486915e-02 6.01537957e-01 1.46884921e-03 3.48221871e-02 -1.28347617e-02 1.78038327e-02 -7.47144879e-03 -1.78038327e-02 2.16538149e-02 -2.05536306e-02 -2.16538149e-02 -3.56015800e-03 8.44999113e-04 7.00213894e-03 6.16637453e-03 -8.44999113e-04 1.59486915e-02 6.01537957e-01 1.46884921e-03 3.48221871e-02 -1.28347617e-02 1.78038327e-02 -1.78038327e-02 -7.47144879e-03 2.16538149e-02 -2.16538149e-02 -2.05536306e-02 -3.56015800e-03 7.00213894e-03 8.44999113e-04 -6.16637453e-03 -8.44999113e-04 1.59486915e-02 6.01537957e-01 1.46884921e-03 -2.69551701e-03 -1.34775851e-03 -1.34775851e-03 7.11790393e-03 3.55895196e-03 3.55895196e-03 2.45879056e-03 -7.22214326e-04 -7.22214326e-04 -1.44442865e-03 7.26258908e-01 -2.30243503e-03 -5.95672459e-03 -3.61086424e-03 3.61086424e-03 5.94234981e-03 9.20772072e-04 -9.20772072e-04 -7.07642391e-03 -7.22168763e-04 -4.89935284e-03 -6.10850862e-03 -1.25083299e-03 6.10850862e-03 -7.01697013e-04 1.46884921e-03 7.25573052e-01 -2.30243503e-03 -5.95672459e-03 -3.61086424e-03 5.94234981e-03 3.61086424e-03 9.20772072e-04 -7.07642391e-03 -9.20772072e-04 -7.22168763e-04 -6.10850862e-03 -4.89935284e-03 1.25083299e-03 6.10850862e-03 -7.01697013e-04 1.46884921e-03 7.25573052e-01 2.33438621e-03 -2.33438621e-03 -6.16428562e-03 6.16428562e-03 -1.25091191e-03 1.25091191e-03 2.45879056e-03 7.26258908e-01 2.30243503e-03 5.95672459e-03 5.94234981e-03 -3.61086424e-03 -3.61086424e-03 -7.07642391e-03 9.20772072e-04 9.20772072e-04 -1.44433753e-03 6.10850862e-03 6.10850862e-03 -4.89935284e-03 -7.01697013e-04 1.46884921e-03 7.25573052e-01 + 0 1 13 14 15 16 17 18 19 20 22 23 25 0 1 13 14 15 16 17 18 19 20 22 23 25 2 5 12 13 14 15 16 17 18 19 20 21 22 23 25 3 6 10 13 14 15 16 17 18 19 20 21 22 23 24 25 4 7 9 13 14 15 16 17 18 19 20 21 22 23 24 25 2 5 12 13 14 15 16 17 18 19 20 21 22 23 25 3 6 10 13 14 15 16 17 18 19 20 21 22 23 24 25 4 7 9 13 14 15 16 17 18 19 20 21 22 23 24 25 8 15 16 17 18 19 20 21 22 23 25 4 7 9 13 14 15 16 17 18 19 20 21 22 23 24 25 3 6 10 13 14 15 16 17 18 19 20 21 22 23 24 25 11 16 17 19 20 22 23 24 2 5 12 13 14 15 16 17 18 19 20 21 22 23 25 0 1 2 3 4 5 6 7 9 10 12 13 14 0 1 2 3 4 5 6 7 9 10 12 13 14 0 1 2 3 4 5 6 7 8 9 10 12 15 18 25 0 1 2 3 4 5 6 7 8 9 10 11 12 16 19 23 0 1 2 3 4 5 6 7 8 9 10 11 12 17 20 22 0 1 2 3 4 5 6 7 8 9 10 12 15 18 25 0 1 2 3 4 5 6 7 8 9 10 11 12 16 19 23 0 1 2 3 4 5 6 7 8 9 10 11 12 17 20 22 2 3 4 5 6 7 8 9 10 12 21 0 1 2 3 4 5 6 7 8 9 10 11 12 17 20 22 0 1 2 3 4 5 6 7 8 9 10 11 12 16 19 23 3 4 6 7 9 10 11 24 0 1 2 3 4 5 6 7 8 9 10 12 15 18 25 + 0 13 26 41 57 73 88 104 120 131 147 163 171 186 199 212 227 243 259 274 290 306 317 333 349 357 372 +0 0 1 467 + -3.08720237e-05 -3.07390885e-04 -1.40312477e-06 -1.04971511e-04 -1.04971511e-04 4.82934036e-06 3.59371792e-04 3.59371792e-04 1.91511014e-05 -1.01771600e-06 -1.01771600e-06 -3.34354066e-05 -3.07390885e-04 -3.02853625e-03 -1.52691305e-05 -1.01904693e-03 -1.01904693e-03 5.25303803e-05 3.47759038e-03 3.47759038e-03 1.46824618e-04 -1.11116241e-05 -1.11116241e-05 -2.57169624e-04 -1.40312477e-06 -1.52691305e-05 -4.12471245e-05 -5.62416573e-06 -5.62416573e-06 1.44520599e-04 1.93518153e-05 1.93518153e-05 1.94209918e-06 -2.10524692e-05 -2.10524692e-05 -4.00502527e-06 1.04971511e-04 1.01904693e-03 5.62416573e-06 3.23522367e-04 3.63336653e-04 -1.94156142e-05 -1.09979124e-03 -1.23944563e-03 -4.42718575e-05 3.96066075e-06 4.11041279e-06 -1.99917732e-05 7.77363679e-05 1.04971511e-04 1.01904693e-03 5.62416573e-06 3.63336653e-04 3.23522367e-04 -1.94156142e-05 -1.23944563e-03 -1.09979124e-03 -4.42718575e-05 4.11041279e-06 3.96066075e-06 1.99917732e-05 7.77363679e-05 4.82934036e-06 5.25303803e-05 1.44520599e-04 1.94156142e-05 1.94156142e-05 -5.07533292e-04 -6.67426116e-05 -6.67426116e-05 -6.77236452e-06 7.40430828e-05 7.40430828e-05 1.39044038e-05 -3.59371792e-04 -3.47759038e-03 -1.93518153e-05 -1.09979124e-03 -1.23944563e-03 6.67426116e-05 3.72486395e-03 4.21589662e-03 1.37233714e-04 -1.37086540e-05 -1.42204009e-05 7.04243190e-05 -2.41287214e-04 -3.59371792e-04 -3.47759038e-03 -1.93518153e-05 -1.23944563e-03 -1.09979124e-03 6.67426116e-05 4.21589662e-03 3.72486395e-03 1.37233714e-04 -1.42204009e-05 -1.37086540e-05 -7.04243190e-05 -2.41287214e-04 1.91511014e-05 1.46824618e-04 1.94209918e-06 4.42718575e-05 4.42718575e-05 -6.77236452e-06 -1.37233714e-04 -1.37233714e-04 2.06050561e-05 1.35463165e-06 1.35463165e-06 -3.73839344e-05 1.01771600e-06 1.11116241e-05 2.10524692e-05 3.96066075e-06 4.11041279e-06 -7.40430828e-05 -1.37086540e-05 -1.42204009e-05 -1.35463165e-06 7.46646087e-06 8.65011321e-06 -1.11115607e-07 2.81468585e-06 1.01771600e-06 1.11116241e-05 2.10524692e-05 4.11041279e-06 3.96066075e-06 -7.40430828e-05 -1.42204009e-05 -1.37086540e-05 -1.35463165e-06 8.65011321e-06 7.46646087e-06 1.11115607e-07 2.81468585e-06 1.99917732e-05 -1.99917732e-05 -7.04243190e-05 7.04243190e-05 1.11115607e-07 -1.11115607e-07 1.45594780e-05 -3.34354066e-05 -2.57169624e-04 -4.00502527e-06 -7.77363679e-05 -7.77363679e-05 1.39044038e-05 2.41287214e-04 2.41287214e-04 -3.73839344e-05 -2.81468585e-06 -2.81468585e-06 6.28234069e-05 -1.10678938e-02 -4.02101705e-02 -1.60075545e-02 -1.60075545e-02 -1.60075545e-02 3.48613875e-02 3.48613875e-02 3.48613875e-02 2.28290009e-03 2.28290009e-03 2.28290009e-03 -3.08602939e-05 -3.07263521e-04 1.41324097e-06 -1.04923873e-04 -1.04923873e-04 -4.86525398e-06 3.59208493e-04 3.59208493e-04 1.91341235e-05 1.02478251e-06 1.02478251e-06 -3.34006108e-05 -4.01898009e-02 -8.51941384e-04 -2.06367891e-02 -2.06367891e-02 -2.06367891e-02 -1.27621922e-02 -1.27621922e-02 -1.27621922e-02 5.88060035e-03 5.88060035e-03 5.88060035e-03 -3.07263521e-04 -3.02715668e-03 1.53820756e-05 -1.01852759e-03 -1.01852759e-03 -5.29298815e-05 3.47581608e-03 3.47581608e-03 1.46638312e-04 1.11912408e-05 1.11912408e-05 -2.56788439e-04 1.59965704e-02 2.06513817e-02 9.20684060e-03 1.62457954e-02 1.62457954e-02 -7.53206233e-03 -1.78560844e-02 -1.78560844e-02 2.69864160e-03 -3.56615668e-03 -3.56615668e-03 -5.90018653e-03 1.41324097e-06 1.53820756e-05 -4.12162075e-05 5.66366604e-06 5.66366604e-06 1.44413999e-04 -1.94925310e-05 -1.94925310e-05 -1.95538614e-06 -2.10289351e-05 -2.10289351e-05 4.03239561e-06 1.59965704e-02 2.06513817e-02 1.62457954e-02 9.20684060e-03 1.62457954e-02 -1.78560844e-02 -7.53206233e-03 -1.78560844e-02 -1.34932080e-03 -3.56615668e-03 -5.90018653e-03 2.33709218e-03 -3.56615668e-03 1.04923873e-04 1.01852759e-03 -5.66366604e-06 3.23331675e-04 3.63143075e-04 1.95566627e-05 -1.09913471e-03 -1.23877805e-03 -4.42043373e-05 -3.98776946e-06 -4.13755885e-06 -1.99902626e-05 7.75974336e-05 1.59965704e-02 2.06513817e-02 1.62457954e-02 1.62457954e-02 9.20684060e-03 -1.78560844e-02 -1.78560844e-02 -7.53206233e-03 -1.34932080e-03 -5.90018653e-03 -3.56615668e-03 -2.33709218e-03 -3.56615668e-03 1.04923873e-04 1.01852759e-03 -5.66366604e-06 3.63143075e-04 3.23331675e-04 1.95566627e-05 -1.23877805e-03 -1.09913471e-03 -4.42043373e-05 -4.13755885e-06 -3.98776946e-06 1.99902626e-05 7.75974336e-05 -3.48221871e-02 1.28347617e-02 -7.47144879e-03 -1.78038327e-02 -1.78038327e-02 -2.05536306e-02 -2.16538149e-02 -2.16538149e-02 -7.12031599e-03 8.44999113e-04 8.44999113e-04 7.00213894e-03 -4.86525398e-06 -5.29298815e-05 1.44413999e-04 -1.95566627e-05 -1.95566627e-05 -5.07169119e-04 6.72429653e-05 6.72429653e-05 6.82107892e-06 7.39612442e-05 7.39612442e-05 -1.40030592e-05 -3.48221871e-02 1.28347617e-02 -1.78038327e-02 -7.47144879e-03 -1.78038327e-02 -2.16538149e-02 -2.05536306e-02 -2.16538149e-02 3.56015800e-03 8.44999113e-04 7.00213894e-03 -6.16637453e-03 8.44999113e-04 -3.59208493e-04 -3.47581608e-03 1.94925310e-05 -1.09913471e-03 -1.23877805e-03 -6.72429653e-05 3.72261408e-03 4.21360468e-03 1.36999156e-04 1.38061213e-05 1.43184607e-05 7.04182099e-05 -2.40805687e-04 -3.48221871e-02 1.28347617e-02 -1.78038327e-02 -1.78038327e-02 -7.47144879e-03 -2.16538149e-02 -2.16538149e-02 -2.05536306e-02 3.56015800e-03 7.00213894e-03 8.44999113e-04 6.16637453e-03 8.44999113e-04 -3.59208493e-04 -3.47581608e-03 1.94925310e-05 -1.23877805e-03 -1.09913471e-03 -6.72429653e-05 4.21360468e-03 3.72261408e-03 1.36999156e-04 1.43184607e-05 1.38061213e-05 -7.04182099e-05 -2.40805687e-04 -2.69551701e-03 1.34775851e-03 1.34775851e-03 7.11790393e-03 -3.55895196e-03 -3.55895196e-03 2.45879056e-03 7.22214326e-04 7.22214326e-04 -1.44442865e-03 1.91341235e-05 1.46638312e-04 -1.95538614e-06 4.42043373e-05 4.42043373e-05 6.82107892e-06 -1.36999156e-04 -1.36999156e-04 2.06276741e-05 -1.36318793e-06 -1.36318793e-06 -3.74312988e-05 2.30243503e-03 5.95672459e-03 3.61086424e-03 3.61086424e-03 5.94234981e-03 -9.20772072e-04 -9.20772072e-04 -7.07642391e-03 7.22168763e-04 -4.89935284e-03 -6.10850862e-03 1.25083299e-03 -6.10850862e-03 -1.02478251e-06 -1.11912408e-05 2.10289351e-05 -3.98776946e-06 -4.13755885e-06 -7.39612442e-05 1.38061213e-05 1.43184607e-05 1.36318793e-06 7.44879307e-06 8.63228531e-06 1.10952081e-07 -2.83293240e-06 2.30243503e-03 5.95672459e-03 3.61086424e-03 5.94234981e-03 3.61086424e-03 -9.20772072e-04 -7.07642391e-03 -9.20772072e-04 7.22168763e-04 -6.10850862e-03 -4.89935284e-03 -1.25083299e-03 -6.10850862e-03 -1.02478251e-06 -1.11912408e-05 2.10289351e-05 -4.13755885e-06 -3.98776946e-06 -7.39612442e-05 1.43184607e-05 1.38061213e-05 1.36318793e-06 8.63228531e-06 7.44879307e-06 -1.10952081e-07 -2.83293240e-06 -2.33438621e-03 2.33438621e-03 6.16428562e-03 -6.16428562e-03 1.25091191e-03 -1.25091191e-03 2.45879056e-03 1.99902626e-05 -1.99902626e-05 -7.04182099e-05 7.04182099e-05 -1.10952081e-07 1.10952081e-07 1.45584085e-05 2.30243503e-03 5.95672459e-03 5.94234981e-03 3.61086424e-03 3.61086424e-03 -7.07642391e-03 -9.20772072e-04 -9.20772072e-04 -1.44433753e-03 -6.10850862e-03 -6.10850862e-03 -4.89935284e-03 -3.34006108e-05 -2.56788439e-04 4.03239561e-06 -7.75974336e-05 -7.75974336e-05 -1.40030592e-05 2.40805687e-04 2.40805687e-04 -3.74312988e-05 2.83293240e-06 2.83293240e-06 6.29222274e-05 + 0 1 2 3 4 5 6 7 8 9 10 12 0 1 2 3 4 5 6 7 8 9 10 12 0 1 2 3 4 5 6 7 8 9 10 12 0 1 2 3 4 5 6 7 8 9 10 11 12 0 1 2 3 4 5 6 7 8 9 10 11 12 0 1 2 3 4 5 6 7 8 9 10 12 0 1 2 3 4 5 6 7 8 9 10 11 12 0 1 2 3 4 5 6 7 8 9 10 11 12 0 1 2 3 4 5 6 7 8 9 10 12 0 1 2 3 4 5 6 7 8 9 10 11 12 0 1 2 3 4 5 6 7 8 9 10 11 12 3 4 6 7 9 10 11 0 1 2 3 4 5 6 7 8 9 10 12 0 1 2 3 4 5 6 7 9 10 12 13 14 15 16 17 18 19 20 21 22 23 25 0 1 2 3 4 5 6 7 9 10 12 13 14 15 16 17 18 19 20 21 22 23 25 0 1 2 3 4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 25 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 0 1 2 3 4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 25 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 2 3 4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 25 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 3 4 6 7 9 10 11 16 17 19 20 22 23 24 0 1 2 3 4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 25 + 0 12 24 36 49 62 74 87 100 112 125 138 145 157 180 203 227 253 279 303 329 355 377 403 429 443 467 +0 1 -1 338 + -3.08720237e-05 -3.07390885e-04 1.04971511e-04 -1.40312477e-06 1.04971511e-04 -3.59371792e-04 4.82934036e-06 -3.59371792e-04 -9.57555071e-06 1.01771600e-06 -3.34354066e-05 1.65853403e-05 1.01771600e-06 -3.07390885e-04 -3.02853625e-03 1.01904693e-03 -1.52691305e-05 1.01904693e-03 -3.47759038e-03 5.25303803e-05 -3.47759038e-03 -7.34123089e-05 1.11116241e-05 -2.57169624e-04 1.27153849e-04 1.11116241e-05 -1.04971511e-04 -1.01904693e-03 3.23522367e-04 -5.62416573e-06 3.63336653e-04 -1.09979124e-03 1.94156142e-05 -1.23944563e-03 -4.82254533e-06 3.96066075e-06 -7.77363679e-05 4.83364399e-05 4.11041279e-06 -1.40312477e-06 -1.52691305e-05 5.62416573e-06 -4.12471245e-05 5.62416573e-06 -1.93518153e-05 1.44520599e-04 -1.93518153e-05 -9.71049589e-07 2.10524692e-05 -4.00502527e-06 1.68190722e-06 2.10524692e-05 -1.04971511e-04 -1.01904693e-03 3.63336653e-04 -5.62416573e-06 3.23522367e-04 -1.23944563e-03 1.94156142e-05 -1.09979124e-03 -3.94493122e-05 4.11041279e-06 -7.77363679e-05 2.83446667e-05 3.96066075e-06 3.59371792e-04 3.47759038e-03 -1.09979124e-03 1.93518153e-05 -1.23944563e-03 3.72486395e-03 -6.67426116e-05 4.21589662e-03 7.62760775e-06 -1.37086540e-05 2.41287214e-04 -1.54060042e-04 -1.42204009e-05 4.82934036e-06 5.25303803e-05 -1.94156142e-05 1.44520599e-04 -1.94156142e-05 6.67426116e-05 -5.07533292e-04 6.67426116e-05 3.38618226e-06 -7.40430828e-05 1.39044038e-05 -5.86503972e-06 -7.40430828e-05 3.59371792e-04 3.47759038e-03 -1.23944563e-03 1.93518153e-05 -1.09979124e-03 4.21589662e-03 -6.67426116e-05 3.72486395e-03 1.29606106e-04 -1.42204009e-05 2.41287214e-04 -8.36357232e-05 -1.37086540e-05 -9.57555071e-06 -7.34123089e-05 4.82254533e-06 -9.71049589e-07 3.94493122e-05 -7.62760775e-06 3.38618226e-06 -1.29606106e-04 1.60708725e-05 5.81086888e-07 1.86919672e-05 -2.61781210e-06 7.73544764e-07 -1.01771600e-06 -1.11116241e-05 3.96066075e-06 -2.10524692e-05 4.11041279e-06 -1.37086540e-05 7.40430828e-05 -1.42204009e-05 -5.81086888e-07 7.46646087e-06 -2.81468585e-06 1.22870323e-06 8.65011321e-06 -3.34354066e-05 -2.57169624e-04 7.77363679e-05 -4.00502527e-06 7.77363679e-05 -2.41287214e-04 1.39044038e-05 -2.41287214e-04 1.86919672e-05 2.81468585e-06 6.28234069e-05 -3.23754368e-05 2.81468585e-06 1.65853403e-05 1.27153849e-04 -4.83364399e-05 1.68190722e-06 -2.83446667e-05 1.54060042e-04 -5.86503972e-06 8.36357232e-05 -2.61781210e-06 -1.22870323e-06 -3.23754368e-05 1.90936616e-05 -1.11758762e-06 -1.01771600e-06 -1.11116241e-05 4.11041279e-06 -2.10524692e-05 3.96066075e-06 -1.42204009e-05 7.40430828e-05 -1.37086540e-05 -7.73544764e-07 8.65011321e-06 -2.81468585e-06 1.11758762e-06 7.46646087e-06 -3.08602939e-05 -3.07263521e-04 1.04923873e-04 1.41324097e-06 1.04923873e-04 -3.59208493e-04 -4.86525398e-06 -3.59208493e-04 -9.56706174e-06 -1.02478251e-06 -3.34006108e-05 1.65706370e-05 -1.02478251e-06 -3.07263521e-04 -3.02715668e-03 1.01852759e-03 1.53820756e-05 1.01852759e-03 -3.47581608e-03 -5.29298815e-05 -3.47581608e-03 -7.33191558e-05 -1.11912408e-05 -2.56788439e-04 1.26992503e-04 -1.11912408e-05 -1.04923873e-04 -1.01852759e-03 3.23331675e-04 5.66366604e-06 3.63143075e-04 -1.09913471e-03 -1.95566627e-05 -1.23877805e-03 -4.79009339e-06 -3.98776946e-06 -7.75974336e-05 4.82772103e-05 -4.13755885e-06 1.41324097e-06 1.53820756e-05 -5.66366604e-06 -4.12162075e-05 -5.66366604e-06 1.94925310e-05 1.44413999e-04 1.94925310e-05 9.77693072e-07 2.10289351e-05 4.03239561e-06 -1.69341407e-06 2.10289351e-05 -1.04923873e-04 -1.01852759e-03 3.63143075e-04 5.66366604e-06 3.23331675e-04 -1.23877805e-03 -1.95566627e-05 -1.09913471e-03 -3.94142439e-05 -4.13755885e-06 -7.75974336e-05 2.82869477e-05 -3.98776946e-06 3.59208493e-04 3.47581608e-03 -1.09913471e-03 -1.94925310e-05 -1.23877805e-03 3.72261408e-03 6.72429653e-05 4.21360468e-03 7.51561916e-06 1.38061213e-05 2.40805687e-04 -1.53853854e-04 1.43184607e-05 -4.86525398e-06 -5.29298815e-05 1.95566627e-05 1.44413999e-04 1.95566627e-05 -6.72429653e-05 -5.07169119e-04 -6.72429653e-05 -3.41053946e-06 -7.39612442e-05 -1.40030592e-05 5.90722763e-06 -7.39612442e-05 3.59208493e-04 3.47581608e-03 -1.23877805e-03 -1.94925310e-05 -1.09913471e-03 4.21360468e-03 6.72429653e-05 3.72261408e-03 1.29483537e-04 1.43184607e-05 2.40805687e-04 -8.34356441e-05 1.38061213e-05 -9.56706174e-06 -7.33191558e-05 4.79009339e-06 9.77693072e-07 3.94142439e-05 -7.51561916e-06 -3.41053946e-06 -1.29483537e-04 1.60757249e-05 -5.85506643e-07 1.87156494e-05 -2.62806909e-06 -7.77681284e-07 1.02478251e-06 1.11912408e-05 -3.98776946e-06 -2.10289351e-05 -4.13755885e-06 1.38061213e-05 7.39612442e-05 1.43184607e-05 5.85506643e-07 7.44879307e-06 2.83293240e-06 -1.23603141e-06 8.63228531e-06 -3.34006108e-05 -2.56788439e-04 7.75974336e-05 4.03239561e-06 7.75974336e-05 -2.40805687e-04 -1.40030592e-05 -2.40805687e-04 1.87156494e-05 -2.83293240e-06 6.29222274e-05 -3.24164557e-05 -2.83293240e-06 1.65706370e-05 1.26992503e-04 -4.82772103e-05 -1.69341407e-06 -2.82869477e-05 1.53853854e-04 5.90722763e-06 8.34356441e-05 -2.62806909e-06 1.23603141e-06 -3.24164557e-05 1.91103577e-05 1.12507933e-06 1.02478251e-06 1.11912408e-05 -4.13755885e-06 -2.10289351e-05 -3.98776946e-06 1.43184607e-05 7.39612442e-05 1.38061213e-05 7.77681284e-07 8.63228531e-06 2.83293240e-06 -1.12507933e-06 7.44879307e-06 + 0 1 2 3 4 5 6 7 8 9 10 11 12 0 1 2 3 4 5 6 7 8 9 10 11 12 0 1 2 3 4 5 6 7 8 9 10 11 12 0 1 2 3 4 5 6 7 8 9 10 11 12 0 1 2 3 4 5 6 7 8 9 10 11 12 0 1 2 3 4 5 6 7 8 9 10 11 12 0 1 2 3 4 5 6 7 8 9 10 11 12 0 1 2 3 4 5 6 7 8 9 10 11 12 0 1 2 3 4 5 6 7 8 9 10 11 12 0 1 2 3 4 5 6 7 8 9 10 11 12 0 1 2 3 4 5 6 7 8 9 10 11 12 0 1 2 3 4 5 6 7 8 9 10 11 12 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 13 14 15 16 17 18 19 20 21 22 23 24 25 13 14 15 16 17 18 19 20 21 22 23 24 25 13 14 15 16 17 18 19 20 21 22 23 24 25 13 14 15 16 17 18 19 20 21 22 23 24 25 13 14 15 16 17 18 19 20 21 22 23 24 25 13 14 15 16 17 18 19 20 21 22 23 24 25 13 14 15 16 17 18 19 20 21 22 23 24 25 13 14 15 16 17 18 19 20 21 22 23 24 25 13 14 15 16 17 18 19 20 21 22 23 24 25 13 14 15 16 17 18 19 20 21 22 23 24 25 13 14 15 16 17 18 19 20 21 22 23 24 25 13 14 15 16 17 18 19 20 21 22 23 24 25 + 0 13 26 39 52 65 78 91 104 117 130 143 156 169 182 195 208 221 234 247 260 273 286 299 312 325 338 +0 1 0 491 + -3.08720237e-05 -3.07390885e-04 1.04971511e-04 -1.04971511e-04 1.40312477e-06 -3.59371792e-04 3.59371792e-04 -4.82934036e-06 -9.57555071e-06 3.34354066e-05 -1.01771600e-06 -1.65853403e-05 1.01771600e-06 -3.07390885e-04 -3.02853625e-03 1.01904693e-03 -1.01904693e-03 1.52691305e-05 -3.47759038e-03 3.47759038e-03 -5.25303803e-05 -7.34123089e-05 2.57169624e-04 -1.11116241e-05 -1.27153849e-04 1.11116241e-05 -1.04971511e-04 -1.01904693e-03 3.23522367e-04 -3.63336653e-04 5.62416573e-06 -1.09979124e-03 1.23944563e-03 -1.94156142e-05 -4.82254533e-06 7.77363679e-05 -3.96066075e-06 -4.83364399e-05 4.11041279e-06 1.04971511e-04 1.01904693e-03 -3.63336653e-04 3.23522367e-04 -5.62416573e-06 1.23944563e-03 -1.09979124e-03 1.94156142e-05 3.94493122e-05 -7.77363679e-05 4.11041279e-06 2.83446667e-05 -3.96066075e-06 1.40312477e-06 1.52691305e-05 -5.62416573e-06 5.62416573e-06 -4.12471245e-05 1.93518153e-05 -1.93518153e-05 1.44520599e-04 9.71049589e-07 -4.00502527e-06 2.10524692e-05 1.68190722e-06 -2.10524692e-05 3.59371792e-04 3.47759038e-03 -1.09979124e-03 1.23944563e-03 -1.93518153e-05 3.72486395e-03 -4.21589662e-03 6.67426116e-05 7.62760775e-06 -2.41287214e-04 1.37086540e-05 1.54060042e-04 -1.42204009e-05 -3.59371792e-04 -3.47759038e-03 1.23944563e-03 -1.09979124e-03 1.93518153e-05 -4.21589662e-03 3.72486395e-03 -6.67426116e-05 -1.29606106e-04 2.41287214e-04 -1.42204009e-05 -8.36357232e-05 1.37086540e-05 -4.82934036e-06 -5.25303803e-05 1.94156142e-05 -1.94156142e-05 1.44520599e-04 -6.67426116e-05 6.67426116e-05 -5.07533292e-04 -3.38618226e-06 1.39044038e-05 -7.40430828e-05 -5.86503972e-06 7.40430828e-05 -9.57555071e-06 -7.34123089e-05 4.82254533e-06 -3.94493122e-05 9.71049589e-07 -7.62760775e-06 1.29606106e-04 -3.38618226e-06 1.60708725e-05 -1.86919672e-05 -5.81086888e-07 2.61781210e-06 7.73544764e-07 3.34354066e-05 2.57169624e-04 -7.77363679e-05 7.77363679e-05 -4.00502527e-06 2.41287214e-04 -2.41287214e-04 1.39044038e-05 -1.86919672e-05 6.28234069e-05 2.81468585e-06 -3.23754368e-05 -2.81468585e-06 1.01771600e-06 1.11116241e-05 -3.96066075e-06 4.11041279e-06 -2.10524692e-05 1.37086540e-05 -1.42204009e-05 7.40430828e-05 5.81086888e-07 -2.81468585e-06 7.46646087e-06 1.22870323e-06 -8.65011321e-06 -1.65853403e-05 -1.27153849e-04 4.83364399e-05 -2.83446667e-05 1.68190722e-06 -1.54060042e-04 8.36357232e-05 -5.86503972e-06 2.61781210e-06 -3.23754368e-05 -1.22870323e-06 1.90936616e-05 1.11758762e-06 -1.01771600e-06 -1.11116241e-05 4.11041279e-06 -3.96066075e-06 2.10524692e-05 -1.42204009e-05 1.37086540e-05 -7.40430828e-05 -7.73544764e-07 2.81468585e-06 -8.65011321e-06 -1.11758762e-06 7.46646087e-06 -1.10678938e-02 -4.02101705e-02 1.60075545e-02 -1.60075545e-02 1.60075545e-02 -3.48613875e-02 3.48613875e-02 -3.48613875e-02 -2.28290009e-03 2.28290009e-03 -2.28290009e-03 -3.08602939e-05 -3.07263521e-04 1.04923873e-04 -1.04923873e-04 -1.41324097e-06 -3.59208493e-04 3.59208493e-04 4.86525398e-06 -9.56706174e-06 3.34006108e-05 1.02478251e-06 -1.65706370e-05 -1.02478251e-06 -4.01898009e-02 -8.51941384e-04 2.06367891e-02 -2.06367891e-02 2.06367891e-02 1.27621922e-02 -1.27621922e-02 1.27621922e-02 -5.88060035e-03 5.88060035e-03 -5.88060035e-03 -3.07263521e-04 -3.02715668e-03 1.01852759e-03 -1.01852759e-03 -1.53820756e-05 -3.47581608e-03 3.47581608e-03 5.29298815e-05 -7.33191558e-05 2.56788439e-04 1.11912408e-05 -1.26992503e-04 -1.11912408e-05 -1.59965704e-02 -2.06513817e-02 9.20684060e-03 -1.62457954e-02 1.62457954e-02 -7.53206233e-03 1.78560844e-02 -1.78560844e-02 -2.69864160e-03 -3.56615668e-03 3.56615668e-03 -5.90018653e-03 -1.04923873e-04 -1.01852759e-03 3.23331675e-04 -3.63143075e-04 -5.66366604e-06 -1.09913471e-03 1.23877805e-03 1.95566627e-05 -4.79009339e-06 7.75974336e-05 3.98776946e-06 -4.82772103e-05 -4.13755885e-06 1.59965704e-02 2.06513817e-02 -1.62457954e-02 9.20684060e-03 -1.62457954e-02 1.78560844e-02 -7.53206233e-03 1.78560844e-02 -1.34932080e-03 3.56615668e-03 -5.90018653e-03 2.33709218e-03 3.56615668e-03 1.04923873e-04 1.01852759e-03 -3.63143075e-04 3.23331675e-04 5.66366604e-06 1.23877805e-03 -1.09913471e-03 -1.95566627e-05 3.94142439e-05 -7.75974336e-05 -4.13755885e-06 2.82869477e-05 3.98776946e-06 -1.59965704e-02 -2.06513817e-02 1.62457954e-02 -1.62457954e-02 9.20684060e-03 -1.78560844e-02 1.78560844e-02 -7.53206233e-03 1.34932080e-03 -5.90018653e-03 3.56615668e-03 2.33709218e-03 -3.56615668e-03 -1.41324097e-06 -1.53820756e-05 5.66366604e-06 -5.66366604e-06 -4.12162075e-05 -1.94925310e-05 1.94925310e-05 1.44413999e-04 -9.77693072e-07 4.03239561e-06 2.10289351e-05 -1.69341407e-06 -2.10289351e-05 3.48221871e-02 -1.28347617e-02 -7.47144879e-03 1.78038327e-02 -1.78038327e-02 -2.05536306e-02 2.16538149e-02 -2.16538149e-02 7.12031599e-03 8.44999113e-04 -8.44999113e-04 7.00213894e-03 3.59208493e-04 3.47581608e-03 -1.09913471e-03 1.23877805e-03 1.94925310e-05 3.72261408e-03 -4.21360468e-03 -6.72429653e-05 7.51561916e-06 -2.40805687e-04 -1.38061213e-05 1.53853854e-04 1.43184607e-05 -3.48221871e-02 1.28347617e-02 1.78038327e-02 -7.47144879e-03 1.78038327e-02 2.16538149e-02 -2.05536306e-02 2.16538149e-02 3.56015800e-03 -8.44999113e-04 7.00213894e-03 -6.16637453e-03 -8.44999113e-04 -3.59208493e-04 -3.47581608e-03 1.23877805e-03 -1.09913471e-03 -1.94925310e-05 -4.21360468e-03 3.72261408e-03 6.72429653e-05 -1.29483537e-04 2.40805687e-04 1.43184607e-05 -8.34356441e-05 -1.38061213e-05 3.48221871e-02 -1.28347617e-02 -1.78038327e-02 1.78038327e-02 -7.47144879e-03 -2.16538149e-02 2.16538149e-02 -2.05536306e-02 -3.56015800e-03 7.00213894e-03 -8.44999113e-04 -6.16637453e-03 8.44999113e-04 4.86525398e-06 5.29298815e-05 -1.95566627e-05 1.95566627e-05 1.44413999e-04 6.72429653e-05 -6.72429653e-05 -5.07169119e-04 3.41053946e-06 -1.40030592e-05 -7.39612442e-05 5.90722763e-06 7.39612442e-05 2.69551701e-03 1.34775851e-03 -1.34775851e-03 -7.11790393e-03 -3.55895196e-03 3.55895196e-03 2.45879056e-03 -7.22214326e-04 7.22214326e-04 1.44442865e-03 -9.56706174e-06 -7.33191558e-05 4.79009339e-06 -3.94142439e-05 -9.77693072e-07 -7.51561916e-06 1.29483537e-04 3.41053946e-06 1.60757249e-05 -1.87156494e-05 5.85506643e-07 2.62806909e-06 -7.77681284e-07 -2.30243503e-03 -5.95672459e-03 3.61086424e-03 -3.61086424e-03 5.94234981e-03 -9.20772072e-04 9.20772072e-04 -7.07642391e-03 -7.22168763e-04 -4.89935284e-03 6.10850862e-03 -1.25083299e-03 -6.10850862e-03 3.34006108e-05 2.56788439e-04 -7.75974336e-05 7.75974336e-05 4.03239561e-06 2.40805687e-04 -2.40805687e-04 -1.40030592e-05 -1.87156494e-05 6.29222274e-05 -2.83293240e-06 -3.24164557e-05 2.83293240e-06 2.30243503e-03 5.95672459e-03 -3.61086424e-03 5.94234981e-03 -3.61086424e-03 9.20772072e-04 -7.07642391e-03 9.20772072e-04 7.22168763e-04 6.10850862e-03 -4.89935284e-03 -1.25083299e-03 6.10850862e-03 -1.02478251e-06 -1.11912408e-05 3.98776946e-06 -4.13755885e-06 -2.10289351e-05 -1.38061213e-05 1.43184607e-05 7.39612442e-05 -5.85506643e-07 2.83293240e-06 7.44879307e-06 -1.23603141e-06 -8.63228531e-06 -2.33438621e-03 -2.33438621e-03 6.16428562e-03 6.16428562e-03 -1.25091191e-03 -1.25091191e-03 2.45879056e-03 -1.65706370e-05 -1.26992503e-04 4.82772103e-05 -2.82869477e-05 -1.69341407e-06 -1.53853854e-04 8.34356441e-05 5.90722763e-06 2.62806909e-06 -3.24164557e-05 1.23603141e-06 1.91103577e-05 -1.12507933e-06 -2.30243503e-03 -5.95672459e-03 5.94234981e-03 -3.61086424e-03 3.61086424e-03 -7.07642391e-03 9.20772072e-04 -9.20772072e-04 1.44433753e-03 -6.10850862e-03 6.10850862e-03 -4.89935284e-03 1.02478251e-06 1.11912408e-05 -4.13755885e-06 3.98776946e-06 2.10289351e-05 1.43184607e-05 -1.38061213e-05 -7.39612442e-05 7.77681284e-07 -2.83293240e-06 -8.63228531e-06 1.12507933e-06 7.44879307e-06 + 0 1 2 3 4 5 6 7 8 9 10 11 12 0 1 2 3 4 5 6 7 8 9 10 11 12 0 1 2 3 4 5 6 7 8 9 10 11 12 0 1 2 3 4 5 6 7 8 9 10 11 12 0 1 2 3 4 5 6 7 8 9 10 11 12 0 1 2 3 4 5 6 7 8 9 10 11 12 0 1 2 3 4 5 6 7 8 9 10 11 12 0 1 2 3 4 5 6 7 8 9 10 11 12 0 1 2 3 4 5 6 7 8 9 10 11 12 0 1 2 3 4 5 6 7 8 9 10 11 12 0 1 2 3 4 5 6 7 8 9 10 11 12 0 1 2 3 4 5 6 7 8 9 10 11 12 0 1 2 3 4 5 6 7 8 9 10 11 12 0 1 2 3 4 5 6 7 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 0 1 2 3 4 5 6 7 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 0 1 2 3 4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 0 1 2 3 4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 2 3 4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 3 4 6 7 9 10 11 13 14 15 16 17 18 19 20 21 22 23 24 25 0 1 2 3 4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 + 0 13 26 39 52 65 78 91 104 117 130 143 156 169 193 217 242 268 294 319 345 371 394 420 446 466 491 +1 -1 0 314 + -3.08720237e-05 -3.07390885e-04 1.40312477e-06 1.04971511e-04 -1.04971511e-04 -4.82934036e-06 -3.59371792e-04 3.59371792e-04 1.91511014e-05 -1.01771600e-06 1.01771600e-06 3.34354066e-05 -3.07390885e-04 -3.02853625e-03 1.52691305e-05 1.01904693e-03 -1.01904693e-03 -5.25303803e-05 -3.47759038e-03 3.47759038e-03 1.46824618e-04 -1.11116241e-05 1.11116241e-05 2.57169624e-04 1.40312477e-06 1.52691305e-05 -4.12471245e-05 -5.62416573e-06 5.62416573e-06 1.44520599e-04 1.93518153e-05 -1.93518153e-05 -1.94209918e-06 2.10524692e-05 -2.10524692e-05 -4.00502527e-06 -1.04971511e-04 -1.01904693e-03 5.62416573e-06 3.23522367e-04 -3.63336653e-04 -1.94156142e-05 -1.09979124e-03 1.23944563e-03 4.42718575e-05 -3.96066075e-06 4.11041279e-06 1.99917732e-05 7.77363679e-05 1.04971511e-04 1.01904693e-03 -5.62416573e-06 -3.63336653e-04 3.23522367e-04 1.94156142e-05 1.23944563e-03 -1.09979124e-03 -4.42718575e-05 4.11041279e-06 -3.96066075e-06 1.99917732e-05 -7.77363679e-05 -4.82934036e-06 -5.25303803e-05 1.44520599e-04 1.94156142e-05 -1.94156142e-05 -5.07533292e-04 -6.67426116e-05 6.67426116e-05 6.77236452e-06 -7.40430828e-05 7.40430828e-05 1.39044038e-05 3.59371792e-04 3.47759038e-03 -1.93518153e-05 -1.09979124e-03 1.23944563e-03 6.67426116e-05 3.72486395e-03 -4.21589662e-03 -1.37233714e-04 1.37086540e-05 -1.42204009e-05 -7.04243190e-05 -2.41287214e-04 -3.59371792e-04 -3.47759038e-03 1.93518153e-05 1.23944563e-03 -1.09979124e-03 -6.67426116e-05 -4.21589662e-03 3.72486395e-03 1.37233714e-04 -1.42204009e-05 1.37086540e-05 -7.04243190e-05 2.41287214e-04 1.91511014e-05 1.46824618e-04 -1.94209918e-06 -4.42718575e-05 4.42718575e-05 6.77236452e-06 1.37233714e-04 -1.37233714e-04 2.06050561e-05 1.35463165e-06 -1.35463165e-06 3.73839344e-05 1.01771600e-06 1.11116241e-05 -2.10524692e-05 -3.96066075e-06 4.11041279e-06 7.40430828e-05 1.37086540e-05 -1.42204009e-05 -1.35463165e-06 7.46646087e-06 -8.65011321e-06 -1.11115607e-07 -2.81468585e-06 -1.01771600e-06 -1.11116241e-05 2.10524692e-05 4.11041279e-06 -3.96066075e-06 -7.40430828e-05 -1.42204009e-05 1.37086540e-05 1.35463165e-06 -8.65011321e-06 7.46646087e-06 -1.11115607e-07 2.81468585e-06 -1.99917732e-05 -1.99917732e-05 7.04243190e-05 7.04243190e-05 1.11115607e-07 1.11115607e-07 1.45594780e-05 3.34354066e-05 2.57169624e-04 -4.00502527e-06 -7.77363679e-05 7.77363679e-05 1.39044038e-05 2.41287214e-04 -2.41287214e-04 3.73839344e-05 2.81468585e-06 -2.81468585e-06 6.28234069e-05 -3.08602939e-05 -3.07263521e-04 -1.41324097e-06 1.04923873e-04 -1.04923873e-04 4.86525398e-06 -3.59208493e-04 3.59208493e-04 1.91341235e-05 1.02478251e-06 -1.02478251e-06 3.34006108e-05 -3.07263521e-04 -3.02715668e-03 -1.53820756e-05 1.01852759e-03 -1.01852759e-03 5.29298815e-05 -3.47581608e-03 3.47581608e-03 1.46638312e-04 1.11912408e-05 -1.11912408e-05 2.56788439e-04 -1.41324097e-06 -1.53820756e-05 -4.12162075e-05 5.66366604e-06 -5.66366604e-06 1.44413999e-04 -1.94925310e-05 1.94925310e-05 1.95538614e-06 2.10289351e-05 -2.10289351e-05 4.03239561e-06 -1.04923873e-04 -1.01852759e-03 -5.66366604e-06 3.23331675e-04 -3.63143075e-04 1.95566627e-05 -1.09913471e-03 1.23877805e-03 4.42043373e-05 3.98776946e-06 -4.13755885e-06 1.99902626e-05 7.75974336e-05 1.04923873e-04 1.01852759e-03 5.66366604e-06 -3.63143075e-04 3.23331675e-04 -1.95566627e-05 1.23877805e-03 -1.09913471e-03 -4.42043373e-05 -4.13755885e-06 3.98776946e-06 1.99902626e-05 -7.75974336e-05 4.86525398e-06 5.29298815e-05 1.44413999e-04 -1.95566627e-05 1.95566627e-05 -5.07169119e-04 6.72429653e-05 -6.72429653e-05 -6.82107892e-06 -7.39612442e-05 7.39612442e-05 -1.40030592e-05 3.59208493e-04 3.47581608e-03 1.94925310e-05 -1.09913471e-03 1.23877805e-03 -6.72429653e-05 3.72261408e-03 -4.21360468e-03 -1.36999156e-04 -1.38061213e-05 1.43184607e-05 -7.04182099e-05 -2.40805687e-04 -3.59208493e-04 -3.47581608e-03 -1.94925310e-05 1.23877805e-03 -1.09913471e-03 6.72429653e-05 -4.21360468e-03 3.72261408e-03 1.36999156e-04 1.43184607e-05 -1.38061213e-05 -7.04182099e-05 2.40805687e-04 1.91341235e-05 1.46638312e-04 1.95538614e-06 -4.42043373e-05 4.42043373e-05 -6.82107892e-06 1.36999156e-04 -1.36999156e-04 2.06276741e-05 -1.36318793e-06 1.36318793e-06 3.74312988e-05 -1.02478251e-06 -1.11912408e-05 -2.10289351e-05 3.98776946e-06 -4.13755885e-06 7.39612442e-05 -1.38061213e-05 1.43184607e-05 1.36318793e-06 7.44879307e-06 -8.63228531e-06 1.10952081e-07 2.83293240e-06 1.02478251e-06 1.11912408e-05 2.10289351e-05 -4.13755885e-06 3.98776946e-06 -7.39612442e-05 1.43184607e-05 -1.38061213e-05 -1.36318793e-06 -8.63228531e-06 7.44879307e-06 1.10952081e-07 -2.83293240e-06 -1.99902626e-05 -1.99902626e-05 7.04182099e-05 7.04182099e-05 -1.10952081e-07 -1.10952081e-07 1.45584085e-05 3.34006108e-05 2.56788439e-04 4.03239561e-06 -7.75974336e-05 7.75974336e-05 -1.40030592e-05 2.40805687e-04 -2.40805687e-04 3.74312988e-05 -2.83293240e-06 2.83293240e-06 6.29222274e-05 + 0 1 2 3 4 5 6 7 8 9 10 12 0 1 2 3 4 5 6 7 8 9 10 12 0 1 2 3 4 5 6 7 8 9 10 12 0 1 2 3 4 5 6 7 8 9 10 11 12 0 1 2 3 4 5 6 7 8 9 10 11 12 0 1 2 3 4 5 6 7 8 9 10 12 0 1 2 3 4 5 6 7 8 9 10 11 12 0 1 2 3 4 5 6 7 8 9 10 11 12 0 1 2 3 4 5 6 7 8 9 10 12 0 1 2 3 4 5 6 7 8 9 10 11 12 0 1 2 3 4 5 6 7 8 9 10 11 12 3 4 6 7 9 10 11 0 1 2 3 4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 25 13 14 15 16 17 18 19 20 21 22 23 25 13 14 15 16 17 18 19 20 21 22 23 25 13 14 15 16 17 18 19 20 21 22 23 24 25 13 14 15 16 17 18 19 20 21 22 23 24 25 13 14 15 16 17 18 19 20 21 22 23 25 13 14 15 16 17 18 19 20 21 22 23 24 25 13 14 15 16 17 18 19 20 21 22 23 24 25 13 14 15 16 17 18 19 20 21 22 23 25 13 14 15 16 17 18 19 20 21 22 23 24 25 13 14 15 16 17 18 19 20 21 22 23 24 25 16 17 19 20 22 23 24 13 14 15 16 17 18 19 20 21 22 23 25 + 0 12 24 36 49 62 74 87 100 112 125 138 145 157 169 181 193 206 219 231 244 257 269 282 295 302 314 +1 0 -1 338 + -3.08720237e-05 -3.07390885e-04 1.04971511e-04 1.04971511e-04 -1.40312477e-06 -3.59371792e-04 -3.59371792e-04 4.82934036e-06 -9.57555071e-06 -3.34354066e-05 1.01771600e-06 -1.65853403e-05 1.01771600e-06 -3.07390885e-04 -3.02853625e-03 1.01904693e-03 1.01904693e-03 -1.52691305e-05 -3.47759038e-03 -3.47759038e-03 5.25303803e-05 -7.34123089e-05 -2.57169624e-04 1.11116241e-05 -1.27153849e-04 1.11116241e-05 -1.04971511e-04 -1.01904693e-03 3.23522367e-04 3.63336653e-04 -5.62416573e-06 -1.09979124e-03 -1.23944563e-03 1.94156142e-05 -4.82254533e-06 -7.77363679e-05 3.96066075e-06 -4.83364399e-05 4.11041279e-06 -1.04971511e-04 -1.01904693e-03 3.63336653e-04 3.23522367e-04 -5.62416573e-06 -1.23944563e-03 -1.09979124e-03 1.94156142e-05 -3.94493122e-05 -7.77363679e-05 4.11041279e-06 -2.83446667e-05 3.96066075e-06 -1.40312477e-06 -1.52691305e-05 5.62416573e-06 5.62416573e-06 -4.12471245e-05 -1.93518153e-05 -1.93518153e-05 1.44520599e-04 -9.71049589e-07 -4.00502527e-06 2.10524692e-05 -1.68190722e-06 2.10524692e-05 3.59371792e-04 3.47759038e-03 -1.09979124e-03 -1.23944563e-03 1.93518153e-05 3.72486395e-03 4.21589662e-03 -6.67426116e-05 7.62760775e-06 2.41287214e-04 -1.37086540e-05 1.54060042e-04 -1.42204009e-05 3.59371792e-04 3.47759038e-03 -1.23944563e-03 -1.09979124e-03 1.93518153e-05 4.21589662e-03 3.72486395e-03 -6.67426116e-05 1.29606106e-04 2.41287214e-04 -1.42204009e-05 8.36357232e-05 -1.37086540e-05 4.82934036e-06 5.25303803e-05 -1.94156142e-05 -1.94156142e-05 1.44520599e-04 6.67426116e-05 6.67426116e-05 -5.07533292e-04 3.38618226e-06 1.39044038e-05 -7.40430828e-05 5.86503972e-06 -7.40430828e-05 -9.57555071e-06 -7.34123089e-05 4.82254533e-06 3.94493122e-05 -9.71049589e-07 -7.62760775e-06 -1.29606106e-04 3.38618226e-06 1.60708725e-05 1.86919672e-05 5.81086888e-07 2.61781210e-06 7.73544764e-07 -3.34354066e-05 -2.57169624e-04 7.77363679e-05 7.77363679e-05 -4.00502527e-06 -2.41287214e-04 -2.41287214e-04 1.39044038e-05 1.86919672e-05 6.28234069e-05 2.81468585e-06 3.23754368e-05 2.81468585e-06 -1.01771600e-06 -1.11116241e-05 3.96066075e-06 4.11041279e-06 -2.10524692e-05 -1.37086540e-05 -1.42204009e-05 7.40430828e-05 -5.81086888e-07 -2.81468585e-06 7.46646087e-06 -1.22870323e-06 8.65011321e-06 -1.65853403e-05 -1.27153849e-04 4.83364399e-05 2.83446667e-05 -1.68190722e-06 -1.54060042e-04 -8.36357232e-05 5.86503972e-06 2.61781210e-06 3.23754368e-05 1.22870323e-06 1.90936616e-05 1.11758762e-06 -1.01771600e-06 -1.11116241e-05 4.11041279e-06 3.96066075e-06 -2.10524692e-05 -1.42204009e-05 -1.37086540e-05 7.40430828e-05 -7.73544764e-07 -2.81468585e-06 8.65011321e-06 -1.11758762e-06 7.46646087e-06 -3.08602939e-05 -3.07263521e-04 1.04923873e-04 1.04923873e-04 1.41324097e-06 -3.59208493e-04 -3.59208493e-04 -4.86525398e-06 -9.56706174e-06 -3.34006108e-05 -1.02478251e-06 -1.65706370e-05 -1.02478251e-06 -3.07263521e-04 -3.02715668e-03 1.01852759e-03 1.01852759e-03 1.53820756e-05 -3.47581608e-03 -3.47581608e-03 -5.29298815e-05 -7.33191558e-05 -2.56788439e-04 -1.11912408e-05 -1.26992503e-04 -1.11912408e-05 -1.04923873e-04 -1.01852759e-03 3.23331675e-04 3.63143075e-04 5.66366604e-06 -1.09913471e-03 -1.23877805e-03 -1.95566627e-05 -4.79009339e-06 -7.75974336e-05 -3.98776946e-06 -4.82772103e-05 -4.13755885e-06 -1.04923873e-04 -1.01852759e-03 3.63143075e-04 3.23331675e-04 5.66366604e-06 -1.23877805e-03 -1.09913471e-03 -1.95566627e-05 -3.94142439e-05 -7.75974336e-05 -4.13755885e-06 -2.82869477e-05 -3.98776946e-06 1.41324097e-06 1.53820756e-05 -5.66366604e-06 -5.66366604e-06 -4.12162075e-05 1.94925310e-05 1.94925310e-05 1.44413999e-04 9.77693072e-07 4.03239561e-06 2.10289351e-05 1.69341407e-06 2.10289351e-05 3.59208493e-04 3.47581608e-03 -1.09913471e-03 -1.23877805e-03 -1.94925310e-05 3.72261408e-03 4.21360468e-03 6.72429653e-05 7.51561916e-06 2.40805687e-04 1.38061213e-05 1.53853854e-04 1.43184607e-05 3.59208493e-04 3.47581608e-03 -1.23877805e-03 -1.09913471e-03 -1.94925310e-05 4.21360468e-03 3.72261408e-03 6.72429653e-05 1.29483537e-04 2.40805687e-04 1.43184607e-05 8.34356441e-05 1.38061213e-05 -4.86525398e-06 -5.29298815e-05 1.95566627e-05 1.95566627e-05 1.44413999e-04 -6.72429653e-05 -6.72429653e-05 -5.07169119e-04 -3.41053946e-06 -1.40030592e-05 -7.39612442e-05 -5.90722763e-06 -7.39612442e-05 -9.56706174e-06 -7.33191558e-05 4.79009339e-06 3.94142439e-05 9.77693072e-07 -7.51561916e-06 -1.29483537e-04 -3.41053946e-06 1.60757249e-05 1.87156494e-05 -5.85506643e-07 2.62806909e-06 -7.77681284e-07 -3.34006108e-05 -2.56788439e-04 7.75974336e-05 7.75974336e-05 4.03239561e-06 -2.40805687e-04 -2.40805687e-04 -1.40030592e-05 1.87156494e-05 6.29222274e-05 -2.83293240e-06 3.24164557e-05 -2.83293240e-06 1.02478251e-06 1.11912408e-05 -3.98776946e-06 -4.13755885e-06 -2.10289351e-05 1.38061213e-05 1.43184607e-05 7.39612442e-05 5.85506643e-07 2.83293240e-06 7.44879307e-06 1.23603141e-06 8.63228531e-06 -1.65706370e-05 -1.26992503e-04 4.82772103e-05 2.82869477e-05 1.69341407e-06 -1.53853854e-04 -8.34356441e-05 -5.90722763e-06 2.62806909e-06 3.24164557e-05 -1.23603141e-06 1.91103577e-05 -1.12507933e-06 1.02478251e-06 1.11912408e-05 -4.13755885e-06 -3.98776946e-06 -2.10289351e-05 1.43184607e-05 1.38061213e-05 7.39612442e-05 7.77681284e-07 2.83293240e-06 8.63228531e-06 1.12507933e-06 7.44879307e-06 + 0 1 2 3 4 5 6 7 8 9 10 11 12 0 1 2 3 4 5 6 7 8 9 10 11 12 0 1 2 3 4 5 6 7 8 9 10 11 12 0 1 2 3 4 5 6 7 8 9 10 11 12 0 1 2 3 4 5 6 7 8 9 10 11 12 0 1 2 3 4 5 6 7 8 9 10 11 12 0 1 2 3 4 5 6 7 8 9 10 11 12 0 1 2 3 4 5 6 7 8 9 10 11 12 0 1 2 3 4 5 6 7 8 9 10 11 12 0 1 2 3 4 5 6 7 8 9 10 11 12 0 1 2 3 4 5 6 7 8 9 10 11 12 0 1 2 3 4 5 6 7 8 9 10 11 12 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 13 14 15 16 17 18 19 20 21 22 23 24 25 13 14 15 16 17 18 19 20 21 22 23 24 25 13 14 15 16 17 18 19 20 21 22 23 24 25 13 14 15 16 17 18 19 20 21 22 23 24 25 13 14 15 16 17 18 19 20 21 22 23 24 25 13 14 15 16 17 18 19 20 21 22 23 24 25 13 14 15 16 17 18 19 20 21 22 23 24 25 13 14 15 16 17 18 19 20 21 22 23 24 25 13 14 15 16 17 18 19 20 21 22 23 24 25 13 14 15 16 17 18 19 20 21 22 23 24 25 13 14 15 16 17 18 19 20 21 22 23 24 25 13 14 15 16 17 18 19 20 21 22 23 24 25 + 0 13 26 39 52 65 78 91 104 117 130 143 156 169 182 195 208 221 234 247 260 273 286 299 312 325 338 +1 0 0 491 + -3.08720237e-05 -3.07390885e-04 1.04971511e-04 1.40312477e-06 -1.04971511e-04 -3.59371792e-04 -4.82934036e-06 3.59371792e-04 -9.57555071e-06 -1.01771600e-06 3.34354066e-05 1.65853403e-05 1.01771600e-06 -3.07390885e-04 -3.02853625e-03 1.01904693e-03 1.52691305e-05 -1.01904693e-03 -3.47759038e-03 -5.25303803e-05 3.47759038e-03 -7.34123089e-05 -1.11116241e-05 2.57169624e-04 1.27153849e-04 1.11116241e-05 -1.04971511e-04 -1.01904693e-03 3.23522367e-04 5.62416573e-06 -3.63336653e-04 -1.09979124e-03 -1.94156142e-05 1.23944563e-03 -4.82254533e-06 -3.96066075e-06 7.77363679e-05 4.83364399e-05 4.11041279e-06 1.40312477e-06 1.52691305e-05 -5.62416573e-06 -4.12471245e-05 5.62416573e-06 1.93518153e-05 1.44520599e-04 -1.93518153e-05 9.71049589e-07 2.10524692e-05 -4.00502527e-06 -1.68190722e-06 -2.10524692e-05 1.04971511e-04 1.01904693e-03 -3.63336653e-04 -5.62416573e-06 3.23522367e-04 1.23944563e-03 1.94156142e-05 -1.09979124e-03 3.94493122e-05 4.11041279e-06 -7.77363679e-05 -2.83446667e-05 -3.96066075e-06 3.59371792e-04 3.47759038e-03 -1.09979124e-03 -1.93518153e-05 1.23944563e-03 3.72486395e-03 6.67426116e-05 -4.21589662e-03 7.62760775e-06 1.37086540e-05 -2.41287214e-04 -1.54060042e-04 -1.42204009e-05 -4.82934036e-06 -5.25303803e-05 1.94156142e-05 1.44520599e-04 -1.94156142e-05 -6.67426116e-05 -5.07533292e-04 6.67426116e-05 -3.38618226e-06 -7.40430828e-05 1.39044038e-05 5.86503972e-06 7.40430828e-05 -3.59371792e-04 -3.47759038e-03 1.23944563e-03 1.93518153e-05 -1.09979124e-03 -4.21589662e-03 -6.67426116e-05 3.72486395e-03 -1.29606106e-04 -1.42204009e-05 2.41287214e-04 8.36357232e-05 1.37086540e-05 -9.57555071e-06 -7.34123089e-05 4.82254533e-06 9.71049589e-07 -3.94493122e-05 -7.62760775e-06 -3.38618226e-06 1.29606106e-04 1.60708725e-05 -5.81086888e-07 -1.86919672e-05 -2.61781210e-06 7.73544764e-07 1.01771600e-06 1.11116241e-05 -3.96066075e-06 -2.10524692e-05 4.11041279e-06 1.37086540e-05 7.40430828e-05 -1.42204009e-05 5.81086888e-07 7.46646087e-06 -2.81468585e-06 -1.22870323e-06 -8.65011321e-06 3.34354066e-05 2.57169624e-04 -7.77363679e-05 -4.00502527e-06 7.77363679e-05 2.41287214e-04 1.39044038e-05 -2.41287214e-04 -1.86919672e-05 2.81468585e-06 6.28234069e-05 3.23754368e-05 -2.81468585e-06 1.65853403e-05 1.27153849e-04 -4.83364399e-05 -1.68190722e-06 2.83446667e-05 1.54060042e-04 5.86503972e-06 -8.36357232e-05 -2.61781210e-06 1.22870323e-06 3.23754368e-05 1.90936616e-05 -1.11758762e-06 -1.01771600e-06 -1.11116241e-05 4.11041279e-06 2.10524692e-05 -3.96066075e-06 -1.42204009e-05 -7.40430828e-05 1.37086540e-05 -7.73544764e-07 -8.65011321e-06 2.81468585e-06 1.11758762e-06 7.46646087e-06 -1.10678938e-02 -4.02101705e-02 1.60075545e-02 1.60075545e-02 -1.60075545e-02 -3.48613875e-02 -3.48613875e-02 3.48613875e-02 2.28290009e-03 -2.28290009e-03 -2.28290009e-03 -3.08602939e-05 -3.07263521e-04 1.04923873e-04 -1.41324097e-06 -1.04923873e-04 -3.59208493e-04 4.86525398e-06 3.59208493e-04 -9.56706174e-06 1.02478251e-06 3.34006108e-05 1.65706370e-05 -1.02478251e-06 -4.01898009e-02 -8.51941384e-04 2.06367891e-02 2.06367891e-02 -2.06367891e-02 1.27621922e-02 1.27621922e-02 -1.27621922e-02 5.88060035e-03 -5.88060035e-03 -5.88060035e-03 -3.07263521e-04 -3.02715668e-03 1.01852759e-03 -1.53820756e-05 -1.01852759e-03 -3.47581608e-03 5.29298815e-05 3.47581608e-03 -7.33191558e-05 1.11912408e-05 2.56788439e-04 1.26992503e-04 -1.11912408e-05 -1.59965704e-02 -2.06513817e-02 9.20684060e-03 1.62457954e-02 -1.62457954e-02 -7.53206233e-03 -1.78560844e-02 1.78560844e-02 -2.69864160e-03 3.56615668e-03 -3.56615668e-03 -5.90018653e-03 -1.04923873e-04 -1.01852759e-03 3.23331675e-04 -5.66366604e-06 -3.63143075e-04 -1.09913471e-03 1.95566627e-05 1.23877805e-03 -4.79009339e-06 3.98776946e-06 7.75974336e-05 4.82772103e-05 -4.13755885e-06 -1.59965704e-02 -2.06513817e-02 1.62457954e-02 9.20684060e-03 -1.62457954e-02 -1.78560844e-02 -7.53206233e-03 1.78560844e-02 1.34932080e-03 3.56615668e-03 -5.90018653e-03 -2.33709218e-03 -3.56615668e-03 -1.41324097e-06 -1.53820756e-05 5.66366604e-06 -4.12162075e-05 -5.66366604e-06 -1.94925310e-05 1.44413999e-04 1.94925310e-05 -9.77693072e-07 2.10289351e-05 4.03239561e-06 1.69341407e-06 -2.10289351e-05 1.59965704e-02 2.06513817e-02 -1.62457954e-02 -1.62457954e-02 9.20684060e-03 1.78560844e-02 1.78560844e-02 -7.53206233e-03 -1.34932080e-03 -5.90018653e-03 3.56615668e-03 -2.33709218e-03 3.56615668e-03 1.04923873e-04 1.01852759e-03 -3.63143075e-04 5.66366604e-06 3.23331675e-04 1.23877805e-03 -1.95566627e-05 -1.09913471e-03 3.94142439e-05 -4.13755885e-06 -7.75974336e-05 -2.82869477e-05 3.98776946e-06 3.48221871e-02 -1.28347617e-02 -7.47144879e-03 -1.78038327e-02 1.78038327e-02 -2.05536306e-02 -2.16538149e-02 2.16538149e-02 7.12031599e-03 -8.44999113e-04 8.44999113e-04 7.00213894e-03 3.59208493e-04 3.47581608e-03 -1.09913471e-03 1.94925310e-05 1.23877805e-03 3.72261408e-03 -6.72429653e-05 -4.21360468e-03 7.51561916e-06 -1.38061213e-05 -2.40805687e-04 -1.53853854e-04 1.43184607e-05 3.48221871e-02 -1.28347617e-02 -1.78038327e-02 -7.47144879e-03 1.78038327e-02 -2.16538149e-02 -2.05536306e-02 2.16538149e-02 -3.56015800e-03 -8.44999113e-04 7.00213894e-03 6.16637453e-03 8.44999113e-04 4.86525398e-06 5.29298815e-05 -1.95566627e-05 1.44413999e-04 1.95566627e-05 6.72429653e-05 -5.07169119e-04 -6.72429653e-05 3.41053946e-06 -7.39612442e-05 -1.40030592e-05 -5.90722763e-06 7.39612442e-05 -3.48221871e-02 1.28347617e-02 1.78038327e-02 1.78038327e-02 -7.47144879e-03 2.16538149e-02 2.16538149e-02 -2.05536306e-02 3.56015800e-03 7.00213894e-03 -8.44999113e-04 6.16637453e-03 -8.44999113e-04 -3.59208493e-04 -3.47581608e-03 1.23877805e-03 -1.94925310e-05 -1.09913471e-03 -4.21360468e-03 6.72429653e-05 3.72261408e-03 -1.29483537e-04 1.43184607e-05 2.40805687e-04 8.34356441e-05 -1.38061213e-05 2.69551701e-03 -1.34775851e-03 1.34775851e-03 -7.11790393e-03 3.55895196e-03 -3.55895196e-03 2.45879056e-03 7.22214326e-04 -7.22214326e-04 1.44442865e-03 -9.56706174e-06 -7.33191558e-05 4.79009339e-06 -9.77693072e-07 -3.94142439e-05 -7.51561916e-06 3.41053946e-06 1.29483537e-04 1.60757249e-05 5.85506643e-07 -1.87156494e-05 -2.62806909e-06 -7.77681284e-07 2.30243503e-03 5.95672459e-03 -3.61086424e-03 -3.61086424e-03 5.94234981e-03 9.20772072e-04 9.20772072e-04 -7.07642391e-03 7.22168763e-04 -4.89935284e-03 6.10850862e-03 1.25083299e-03 6.10850862e-03 -1.02478251e-06 -1.11912408e-05 3.98776946e-06 -2.10289351e-05 -4.13755885e-06 -1.38061213e-05 7.39612442e-05 1.43184607e-05 -5.85506643e-07 7.44879307e-06 2.83293240e-06 1.23603141e-06 -8.63228531e-06 -2.30243503e-03 -5.95672459e-03 3.61086424e-03 5.94234981e-03 -3.61086424e-03 -9.20772072e-04 -7.07642391e-03 9.20772072e-04 -7.22168763e-04 6.10850862e-03 -4.89935284e-03 1.25083299e-03 -6.10850862e-03 3.34006108e-05 2.56788439e-04 -7.75974336e-05 4.03239561e-06 7.75974336e-05 2.40805687e-04 -1.40030592e-05 -2.40805687e-04 -1.87156494e-05 -2.83293240e-06 6.29222274e-05 3.24164557e-05 2.83293240e-06 2.33438621e-03 2.33438621e-03 -6.16428562e-03 -6.16428562e-03 1.25091191e-03 1.25091191e-03 2.45879056e-03 1.65706370e-05 1.26992503e-04 -4.82772103e-05 1.69341407e-06 2.82869477e-05 1.53853854e-04 -5.90722763e-06 -8.34356441e-05 -2.62806909e-06 -1.23603141e-06 3.24164557e-05 1.91103577e-05 1.12507933e-06 -2.30243503e-03 -5.95672459e-03 5.94234981e-03 3.61086424e-03 -3.61086424e-03 -7.07642391e-03 -9.20772072e-04 9.20772072e-04 1.44433753e-03 6.10850862e-03 -6.10850862e-03 -4.89935284e-03 1.02478251e-06 1.11912408e-05 -4.13755885e-06 2.10289351e-05 3.98776946e-06 1.43184607e-05 -7.39612442e-05 -1.38061213e-05 7.77681284e-07 -8.63228531e-06 -2.83293240e-06 -1.12507933e-06 7.44879307e-06 + 0 1 2 3 4 5 6 7 8 9 10 11 12 0 1 2 3 4 5 6 7 8 9 10 11 12 0 1 2 3 4 5 6 7 8 9 10 11 12 0 1 2 3 4 5 6 7 8 9 10 11 12 0 1 2 3 4 5 6 7 8 9 10 11 12 0 1 2 3 4 5 6 7 8 9 10 11 12 0 1 2 3 4 5 6 7 8 9 10 11 12 0 1 2 3 4 5 6 7 8 9 10 11 12 0 1 2 3 4 5 6 7 8 9 10 11 12 0 1 2 3 4 5 6 7 8 9 10 11 12 0 1 2 3 4 5 6 7 8 9 10 11 12 0 1 2 3 4 5 6 7 8 9 10 11 12 0 1 2 3 4 5 6 7 8 9 10 11 12 0 1 2 3 4 5 6 7 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 0 1 2 3 4 5 6 7 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 0 1 2 3 4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 0 1 2 3 4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 2 3 4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 3 4 6 7 9 10 11 13 14 15 16 17 18 19 20 21 22 23 24 25 0 1 2 3 4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 + 0 13 26 39 52 65 78 91 104 117 130 143 156 169 193 217 242 268 294 319 345 371 394 420 446 466 491 diff --git a/tests/03_NAO_multik/scf_in_hr_hasbug/result.ref b/tests/03_NAO_multik/scf_in_hr_hasbug/result.ref new file mode 100644 index 0000000000..3c21042a34 --- /dev/null +++ b/tests/03_NAO_multik/scf_in_hr_hasbug/result.ref @@ -0,0 +1,3 @@ +etotref -252.9538842277285 +etotperatomref -126.4769421139 +totaltimeref 0.28 diff --git a/tests/03_NAO_multik/scf_in_restart/INPUT b/tests/03_NAO_multik/scf_in_restart/INPUT new file mode 100644 index 0000000000..6f69c927d1 --- /dev/null +++ b/tests/03_NAO_multik/scf_in_restart/INPUT @@ -0,0 +1,36 @@ +INPUT_PARAMETERS +#Parameters (1.General) +suffix autotest +calculation scf +symmetry 1 + +#Parameters (2.Iteration) +ecutwfc 20 +scf_thr 1e-7 +scf_nmax 100 +cal_force 1 +cal_stress 1 +#Parameters (3.Basis) +basis_type lcao +#kspacing 0.06 +#Parameters (4.Smearing) +smearing_method gauss +smearing_sigma 0.01 + +#Parameters (5.Mixing) +mixing_type broyden +mixing_beta 0.7 + +pseudo_mesh 1 +pseudo_rcut 10.0 + +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB + +#restart_save 1 +restart_load 1 +read_file_dir ./ + +bx 2 +by 2 +bz 2 diff --git a/tests/03_NAO_multik/24_NO_KP_RE/KPT b/tests/03_NAO_multik/scf_in_restart/KPT similarity index 100% rename from tests/03_NAO_multik/24_NO_KP_RE/KPT rename to tests/03_NAO_multik/scf_in_restart/KPT diff --git a/tests/03_NAO_multik/37_NO_KP_restart/README b/tests/03_NAO_multik/scf_in_restart/README similarity index 100% rename from tests/03_NAO_multik/37_NO_KP_restart/README rename to tests/03_NAO_multik/scf_in_restart/README diff --git a/tests/03_NAO_multik/37_NO_KP_restart/STRU b/tests/03_NAO_multik/scf_in_restart/STRU similarity index 100% rename from tests/03_NAO_multik/37_NO_KP_restart/STRU rename to tests/03_NAO_multik/scf_in_restart/STRU diff --git a/tests/03_NAO_multik/37_NO_KP_restart/restart/charge_0_0 b/tests/03_NAO_multik/scf_in_restart/restart/charge_0_0 similarity index 100% rename from tests/03_NAO_multik/37_NO_KP_restart/restart/charge_0_0 rename to tests/03_NAO_multik/scf_in_restart/restart/charge_0_0 diff --git a/tests/03_NAO_multik/37_NO_KP_restart/restart/charge_1_0 b/tests/03_NAO_multik/scf_in_restart/restart/charge_1_0 similarity index 100% rename from tests/03_NAO_multik/37_NO_KP_restart/restart/charge_1_0 rename to tests/03_NAO_multik/scf_in_restart/restart/charge_1_0 diff --git a/tests/03_NAO_multik/37_NO_KP_restart/restart/charge_2_0 b/tests/03_NAO_multik/scf_in_restart/restart/charge_2_0 similarity index 100% rename from tests/03_NAO_multik/37_NO_KP_restart/restart/charge_2_0 rename to tests/03_NAO_multik/scf_in_restart/restart/charge_2_0 diff --git a/tests/03_NAO_multik/37_NO_KP_restart/restart/charge_3_0 b/tests/03_NAO_multik/scf_in_restart/restart/charge_3_0 similarity index 100% rename from tests/03_NAO_multik/37_NO_KP_restart/restart/charge_3_0 rename to tests/03_NAO_multik/scf_in_restart/restart/charge_3_0 diff --git a/tests/03_NAO_multik/37_NO_KP_restart/result.ref b/tests/03_NAO_multik/scf_in_restart/result.ref similarity index 100% rename from tests/03_NAO_multik/37_NO_KP_restart/result.ref rename to tests/03_NAO_multik/scf_in_restart/result.ref diff --git a/tests/03_NAO_multik/scf_out_chg_pot1/INPUT b/tests/03_NAO_multik/scf_out_chg_pot1/INPUT new file mode 100644 index 0000000000..e3ee23929c --- /dev/null +++ b/tests/03_NAO_multik/scf_out_chg_pot1/INPUT @@ -0,0 +1,22 @@ +INPUT_PARAMETERS +suffix autotest +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB + +gamma_only 0 + +calculation scf +symmetry 0 + +ecutwfc 5 +scf_thr 1e-6 +scf_nmax 100 + +#Parameters (LCAO) +basis_type lcao +ks_solver scalapack_gvx +out_chg 2 5 // 2 outputs the initial charge density +out_pot 1 5 + +cal_force 1 +cal_stress 1 diff --git a/tests/03_NAO_multik/25_NO_KP_CR/KPT b/tests/03_NAO_multik/scf_out_chg_pot1/KPT similarity index 100% rename from tests/03_NAO_multik/25_NO_KP_CR/KPT rename to tests/03_NAO_multik/scf_out_chg_pot1/KPT diff --git a/tests/03_NAO_multik/05_NO_KP_DJ_OC2/README b/tests/03_NAO_multik/scf_out_chg_pot1/README similarity index 100% rename from tests/03_NAO_multik/05_NO_KP_DJ_OC2/README rename to tests/03_NAO_multik/scf_out_chg_pot1/README diff --git a/tests/03_NAO_multik/05_NO_KP_DJ_OC2/STRU b/tests/03_NAO_multik/scf_out_chg_pot1/STRU similarity index 100% rename from tests/03_NAO_multik/05_NO_KP_DJ_OC2/STRU rename to tests/03_NAO_multik/scf_out_chg_pot1/STRU diff --git a/tests/03_NAO_multik/scf_out_chg_pot1/chg.cube.ref b/tests/03_NAO_multik/scf_out_chg_pot1/chg.cube.ref new file mode 100644 index 0000000000..49b6c6e43d --- /dev/null +++ b/tests/03_NAO_multik/scf_out_chg_pot1/chg.cube.ref @@ -0,0 +1,136 @@ +Ionic_Step 1 Cubefile created from ABACUS. Inner loop is z, followed by y and x +1 # number of spin directions 2.208163 # Fermi energy, in Ry +2 0.0 0.0 0.0 +8 0.662500 0.000000 0.000000 +8 0.000000 0.662500 0.000000 +8 0.000000 0.000000 0.662500 + 33 15.000000 1.325000 1.325000 1.325000 + 31 13.000000 0.000000 0.000000 0.000000 + 5.58354e-03 2.18221e+00 2.07562e-01 1.19126e-01 7.67323e-02 6.02807e-02 + 1.57466e-01 2.19572e+00 + 2.18221e+00 1.16536e+00 2.37646e-01 1.64234e-01 1.16112e-01 6.83896e-02 + 1.27907e-01 1.06722e+00 + 2.07562e-01 2.37646e-01 2.28880e-01 1.63372e-01 1.13633e-01 5.78449e-02 + 7.06533e-02 1.39007e-01 + 1.19126e-01 1.64234e-01 1.63372e-01 1.32380e-01 8.36268e-02 4.41108e-02 + 4.11865e-02 6.42572e-02 + 7.67323e-02 1.16112e-01 1.13633e-01 8.36268e-02 4.37873e-02 3.35748e-02 + 3.83631e-02 4.88584e-02 + 6.02807e-02 6.83896e-02 5.78449e-02 4.41108e-02 3.35748e-02 2.63647e-02 + 2.80467e-02 4.29578e-02 + 1.57466e-01 1.27907e-01 7.06533e-02 4.11865e-02 3.83631e-02 2.80467e-02 + 4.92095e-02 1.04952e-01 + 2.19572e+00 1.06722e+00 1.39007e-01 6.42572e-02 4.88584e-02 4.29578e-02 + 1.04952e-01 1.04625e+00 + 2.18221e+00 1.16536e+00 2.37646e-01 1.64234e-01 1.16112e-01 6.83896e-02 + 1.27907e-01 1.06722e+00 + 1.16536e+00 9.16094e-01 1.27736e+00 4.92662e-01 1.61484e-01 9.29643e-02 + 1.17471e-01 5.45711e-01 + 2.37646e-01 1.27736e+00 2.40739e+00 1.23255e+00 1.64801e-01 8.40243e-02 + 7.82972e-02 1.51620e-01 + 1.64234e-01 4.92662e-01 1.23255e+00 4.81993e-01 1.21578e-01 6.74730e-02 + 5.09510e-02 9.05022e-02 + 1.16112e-01 1.61484e-01 1.64801e-01 1.21578e-01 6.95388e-02 3.99685e-02 + 4.24335e-02 6.00999e-02 + 6.83896e-02 9.29643e-02 8.40243e-02 6.74730e-02 3.99685e-02 2.95603e-02 + 3.21705e-02 4.65705e-02 + 1.27907e-01 1.17471e-01 7.82972e-02 5.09510e-02 4.24335e-02 3.21705e-02 + 4.55573e-02 9.43573e-02 + 1.06722e+00 5.45711e-01 1.51620e-01 9.05022e-02 6.00999e-02 4.65705e-02 + 9.43573e-02 4.94732e-01 + 2.07562e-01 2.37646e-01 2.28880e-01 1.63372e-01 1.13633e-01 5.78449e-02 + 7.06533e-02 1.39007e-01 + 2.37646e-01 1.27736e+00 2.40739e+00 1.23255e+00 1.64801e-01 8.40243e-02 + 7.82972e-02 1.51620e-01 + 2.28880e-01 2.40739e+00 5.81649e-03 2.39320e+00 1.94498e-01 8.51576e-02 + 6.66000e-02 1.16541e-01 + 1.63372e-01 1.23255e+00 2.39320e+00 1.23378e+00 1.32731e-01 7.61344e-02 + 5.52126e-02 8.72644e-02 + 1.13633e-01 1.64801e-01 1.94498e-01 1.32731e-01 8.30022e-02 4.47298e-02 + 4.13448e-02 6.16640e-02 + 5.78449e-02 8.40243e-02 8.51576e-02 7.61344e-02 4.47298e-02 3.48676e-02 + 3.36248e-02 3.85916e-02 + 7.06533e-02 7.82972e-02 6.66000e-02 5.52126e-02 4.13448e-02 3.36248e-02 + 3.36094e-02 5.74526e-02 + 1.39007e-01 1.51620e-01 1.16541e-01 8.72644e-02 6.16640e-02 3.85916e-02 + 5.74526e-02 1.00802e-01 + 1.19126e-01 1.64234e-01 1.63372e-01 1.32380e-01 8.36268e-02 4.41108e-02 + 4.11865e-02 6.42572e-02 + 1.64234e-01 4.92662e-01 1.23255e+00 4.81993e-01 1.21578e-01 6.74730e-02 + 5.09510e-02 9.05022e-02 + 1.63372e-01 1.23255e+00 2.39320e+00 1.23378e+00 1.32731e-01 7.61344e-02 + 5.52126e-02 8.72644e-02 + 1.32380e-01 4.81993e-01 1.23378e+00 4.58434e-01 1.19299e-01 6.83304e-02 + 4.94441e-02 7.37458e-02 + 8.36268e-02 1.21578e-01 1.32731e-01 1.19299e-01 8.49603e-02 4.35048e-02 + 3.27200e-02 4.27881e-02 + 4.41108e-02 6.74730e-02 7.61344e-02 6.83304e-02 4.35048e-02 3.15330e-02 + 3.07987e-02 3.15675e-02 + 4.11865e-02 5.09510e-02 5.52126e-02 4.94441e-02 3.27200e-02 3.07987e-02 + 2.59564e-02 3.28004e-02 + 6.42572e-02 9.05022e-02 8.72644e-02 7.37458e-02 4.27881e-02 3.15675e-02 + 3.28004e-02 4.60122e-02 + 7.67323e-02 1.16112e-01 1.13633e-01 8.36268e-02 4.37873e-02 3.35748e-02 + 3.83631e-02 4.88584e-02 + 1.16112e-01 1.61484e-01 1.64801e-01 1.21578e-01 6.95388e-02 3.99685e-02 + 4.24335e-02 6.00999e-02 + 1.13633e-01 1.64801e-01 1.94498e-01 1.32731e-01 8.30022e-02 4.47298e-02 + 4.13448e-02 6.16640e-02 + 8.36268e-02 1.21578e-01 1.32731e-01 1.19299e-01 8.49603e-02 4.35048e-02 + 3.27200e-02 4.27881e-02 + 4.37873e-02 6.95388e-02 8.30022e-02 8.49603e-02 5.74135e-02 3.62021e-02 + 2.68643e-02 2.91967e-02 + 3.35748e-02 3.99685e-02 4.47298e-02 4.35048e-02 3.62021e-02 2.35001e-02 + 1.96139e-02 2.57121e-02 + 3.83631e-02 4.24335e-02 4.13448e-02 3.27200e-02 2.68643e-02 1.96139e-02 + 2.50516e-02 2.95263e-02 + 4.88584e-02 6.00999e-02 6.16640e-02 4.27881e-02 2.91967e-02 2.57121e-02 + 2.95263e-02 3.70504e-02 + 6.02807e-02 6.83896e-02 5.78449e-02 4.41108e-02 3.35748e-02 2.63647e-02 + 2.80467e-02 4.29578e-02 + 6.83896e-02 9.29643e-02 8.40243e-02 6.74730e-02 3.99685e-02 2.95603e-02 + 3.21705e-02 4.65705e-02 + 5.78449e-02 8.40243e-02 8.51576e-02 7.61344e-02 4.47298e-02 3.48676e-02 + 3.36248e-02 3.85916e-02 + 4.41108e-02 6.74730e-02 7.61344e-02 6.83304e-02 4.35048e-02 3.15330e-02 + 3.07987e-02 3.15675e-02 + 3.35748e-02 3.99685e-02 4.47298e-02 4.35048e-02 3.62021e-02 2.35001e-02 + 1.96139e-02 2.57121e-02 + 2.63647e-02 2.95603e-02 3.48676e-02 3.15330e-02 2.35001e-02 1.97954e-02 + 1.99588e-02 2.25182e-02 + 2.80467e-02 3.21705e-02 3.36248e-02 3.07987e-02 1.96139e-02 1.99588e-02 + 1.89056e-02 2.32253e-02 + 4.29578e-02 4.65705e-02 3.85916e-02 3.15675e-02 2.57121e-02 2.25182e-02 + 2.32253e-02 3.44643e-02 + 1.57466e-01 1.27907e-01 7.06533e-02 4.11865e-02 3.83631e-02 2.80467e-02 + 4.92095e-02 1.04952e-01 + 1.27907e-01 1.17471e-01 7.82972e-02 5.09510e-02 4.24335e-02 3.21705e-02 + 4.55573e-02 9.43573e-02 + 7.06533e-02 7.82972e-02 6.66000e-02 5.52126e-02 4.13448e-02 3.36248e-02 + 3.36094e-02 5.74526e-02 + 4.11865e-02 5.09510e-02 5.52126e-02 4.94441e-02 3.27200e-02 3.07987e-02 + 2.59564e-02 3.28004e-02 + 3.83631e-02 4.24335e-02 4.13448e-02 3.27200e-02 2.68643e-02 1.96139e-02 + 2.50516e-02 2.95263e-02 + 2.80467e-02 3.21705e-02 3.36248e-02 3.07987e-02 1.96139e-02 1.99588e-02 + 1.89056e-02 2.32253e-02 + 4.92095e-02 4.55573e-02 3.36094e-02 2.59564e-02 2.50516e-02 1.89056e-02 + 2.72609e-02 3.99728e-02 + 1.04952e-01 9.43573e-02 5.74526e-02 3.28004e-02 2.95263e-02 2.32253e-02 + 3.99728e-02 7.71535e-02 + 2.19572e+00 1.06722e+00 1.39007e-01 6.42572e-02 4.88584e-02 4.29578e-02 + 1.04952e-01 1.04625e+00 + 1.06722e+00 5.45711e-01 1.51620e-01 9.05022e-02 6.00999e-02 4.65705e-02 + 9.43573e-02 4.94732e-01 + 1.39007e-01 1.51620e-01 1.16541e-01 8.72644e-02 6.16640e-02 3.85916e-02 + 5.74526e-02 1.00802e-01 + 6.42572e-02 9.05022e-02 8.72644e-02 7.37458e-02 4.27881e-02 3.15675e-02 + 3.28004e-02 4.60122e-02 + 4.88584e-02 6.00999e-02 6.16640e-02 4.27881e-02 2.91967e-02 2.57121e-02 + 2.95263e-02 3.70504e-02 + 4.29578e-02 4.65705e-02 3.85916e-02 3.15675e-02 2.57121e-02 2.25182e-02 + 2.32253e-02 3.44643e-02 + 1.04952e-01 9.43573e-02 5.74526e-02 3.28004e-02 2.95263e-02 2.32253e-02 + 3.99728e-02 7.71535e-02 + 1.04625e+00 4.94732e-01 1.00802e-01 4.60122e-02 3.70504e-02 3.44643e-02 + 7.71535e-02 4.57945e-01 diff --git a/tests/03_NAO_multik/scf_out_chg_pot1/pot.cube.ref b/tests/03_NAO_multik/scf_out_chg_pot1/pot.cube.ref new file mode 100644 index 0000000000..2b7ef78896 --- /dev/null +++ b/tests/03_NAO_multik/scf_out_chg_pot1/pot.cube.ref @@ -0,0 +1,136 @@ +Ionic_Step 0 Cubefile created from ABACUS. Inner loop is z, followed by y and x +1 # number of spin directions +2 0.0 0.0 0.0 +8 0.662500 0.000000 0.000000 +8 0.000000 0.662500 0.000000 +8 0.000000 0.000000 0.662500 + 33 15.000000 1.325000 1.325000 1.325000 + 31 13.000000 0.000000 0.000000 0.000000 + -8.55145e+00 -7.06929e+00 -2.65132e+00 -1.06620e+00 3.66163e-01 -1.18349e-01 + -1.85105e+00 -6.51757e+00 + -7.06929e+00 -5.84381e+00 -3.34089e+00 -1.64202e+00 -3.90149e-02 -2.26404e-01 + -1.12285e+00 -4.48635e+00 + -2.65132e+00 -3.34089e+00 -2.75461e+00 -1.26346e+00 3.76261e-04 2.65864e-01 + -6.38145e-02 -1.24479e+00 + -1.06620e+00 -1.64202e+00 -1.26346e+00 -6.14715e-01 -1.12517e-01 6.71299e-01 + 5.10395e-01 -2.46745e-01 + 3.66163e-01 -3.90149e-02 3.76261e-04 -1.12517e-01 1.09613e+00 9.32929e-01 + 4.43243e-01 3.60056e-01 + -1.18349e-01 -2.26404e-01 2.65864e-01 6.71299e-01 9.32929e-01 1.00206e+00 + 4.29231e-01 -1.81642e-01 + -1.85105e+00 -1.12285e+00 -6.38145e-02 5.10395e-01 4.43243e-01 4.29231e-01 + -2.65736e-01 -1.02490e+00 + -6.51757e+00 -4.48635e+00 -1.24479e+00 -2.46745e-01 3.60056e-01 -1.81642e-01 + -1.02490e+00 -4.39556e+00 + -7.06929e+00 -5.84381e+00 -3.34089e+00 -1.64202e+00 -3.90149e-02 -2.26404e-01 + -1.12285e+00 -4.48635e+00 + -5.84381e+00 -6.49776e+00 -6.40188e+00 -3.53978e+00 -7.03825e-01 -5.65377e-01 + -7.62961e-01 -3.24670e+00 + -3.34089e+00 -6.40188e+00 -8.01279e+00 -5.15711e+00 -1.37621e+00 -3.56384e-01 + 3.67036e-01 -1.53280e+00 + -1.64202e+00 -3.53978e+00 -5.15711e+00 -2.98171e+00 -7.00097e-01 6.15406e-02 + 2.96144e-01 -5.64262e-01 + -3.90149e-02 -7.03825e-01 -1.37621e+00 -7.00097e-01 5.00894e-02 7.85088e-01 + 8.51611e-01 4.34894e-01 + -2.26404e-01 -5.65377e-01 -3.56384e-01 6.15406e-02 7.85088e-01 9.26619e-01 + 6.82150e-01 1.68330e-01 + -1.12285e+00 -7.62961e-01 3.67036e-01 2.96144e-01 8.51611e-01 6.82150e-01 + 2.49847e-01 -6.66098e-01 + -4.48635e+00 -3.24670e+00 -1.53280e+00 -5.64262e-01 4.34894e-01 1.68330e-01 + -6.66098e-01 -2.62199e+00 + -2.65132e+00 -3.34089e+00 -2.75461e+00 -1.26346e+00 3.76261e-04 2.65864e-01 + -6.38145e-02 -1.24479e+00 + -3.34089e+00 -6.40188e+00 -8.01279e+00 -5.15711e+00 -1.37621e+00 -3.56384e-01 + 3.67036e-01 -1.53280e+00 + -2.75461e+00 -8.01279e+00 -9.89245e+00 -7.45278e+00 -2.08267e+00 -2.68608e-01 + 2.70382e-01 -1.00653e+00 + -1.26346e+00 -5.15711e+00 -7.45278e+00 -5.01171e+00 -9.69470e-01 -1.72486e-01 + 4.39062e-01 -3.27846e-01 + 3.76261e-04 -1.37621e+00 -2.08267e+00 -9.69470e-01 9.69114e-02 5.41962e-01 + 5.86831e-01 6.77740e-01 + 2.65864e-01 -3.56384e-01 -2.68608e-01 -1.72486e-01 5.41962e-01 1.15404e+00 + 1.04420e+00 8.37294e-01 + -6.38145e-02 3.67036e-01 2.70382e-01 4.39062e-01 5.86831e-01 1.04420e+00 + 5.88782e-01 -8.16311e-02 + -1.24479e+00 -1.53280e+00 -1.00653e+00 -3.27846e-01 6.77740e-01 8.37294e-01 + -8.16311e-02 -5.34398e-01 + -1.06620e+00 -1.64202e+00 -1.26346e+00 -6.14715e-01 -1.12517e-01 6.71299e-01 + 5.10395e-01 -2.46745e-01 + -1.64202e+00 -3.53978e+00 -5.15711e+00 -2.98171e+00 -7.00097e-01 6.15406e-02 + 2.96144e-01 -5.64262e-01 + -1.26346e+00 -5.15711e+00 -7.45278e+00 -5.01171e+00 -9.69470e-01 -1.72486e-01 + 4.39062e-01 -3.27846e-01 + -6.14715e-01 -2.98171e+00 -5.01171e+00 -2.91012e+00 -3.40041e-01 2.18168e-01 + 5.39689e-01 7.74700e-02 + -1.12517e-01 -7.00097e-01 -9.69470e-01 -3.40041e-01 2.65940e-01 1.11977e+00 + 8.89390e-01 8.38124e-01 + 6.71299e-01 6.15406e-02 -1.72486e-01 2.18168e-01 1.11977e+00 1.22874e+00 + 8.00101e-01 1.04677e+00 + 5.10395e-01 2.96144e-01 4.39062e-01 5.39689e-01 8.89390e-01 8.00101e-01 + 8.53903e-01 6.61537e-01 + -2.46745e-01 -5.64262e-01 -3.27846e-01 7.74700e-02 8.38124e-01 1.04677e+00 + 6.61537e-01 1.47342e-01 + 3.66163e-01 -3.90149e-02 3.76261e-04 -1.12517e-01 1.09613e+00 9.32929e-01 + 4.43243e-01 3.60056e-01 + -3.90149e-02 -7.03825e-01 -1.37621e+00 -7.00097e-01 5.00894e-02 7.85088e-01 + 8.51611e-01 4.34894e-01 + 3.76261e-04 -1.37621e+00 -2.08267e+00 -9.69470e-01 9.69114e-02 5.41962e-01 + 5.86831e-01 6.77740e-01 + -1.12517e-01 -7.00097e-01 -9.69470e-01 -3.40041e-01 2.65940e-01 1.11977e+00 + 8.89390e-01 8.38124e-01 + 1.09613e+00 5.00894e-02 9.69114e-02 2.65940e-01 1.40603e-01 1.00889e+00 + 9.77383e-01 9.06140e-01 + 9.32929e-01 7.85088e-01 5.41962e-01 1.11977e+00 1.00889e+00 1.08706e+00 + 7.62284e-01 8.40339e-01 + 4.43243e-01 8.51611e-01 5.86831e-01 8.89390e-01 9.77383e-01 7.62284e-01 + 9.69595e-01 8.12576e-01 + 3.60056e-01 4.34894e-01 6.77740e-01 8.38124e-01 9.06140e-01 8.40339e-01 + 8.12576e-01 5.09431e-01 + -1.18349e-01 -2.26404e-01 2.65864e-01 6.71299e-01 9.32929e-01 1.00206e+00 + 4.29231e-01 -1.81642e-01 + -2.26404e-01 -5.65377e-01 -3.56384e-01 6.15406e-02 7.85088e-01 9.26619e-01 + 6.82150e-01 1.68330e-01 + 2.65864e-01 -3.56384e-01 -2.68608e-01 -1.72486e-01 5.41962e-01 1.15404e+00 + 1.04420e+00 8.37294e-01 + 6.71299e-01 6.15406e-02 -1.72486e-01 2.18168e-01 1.11977e+00 1.22874e+00 + 8.00101e-01 1.04677e+00 + 9.32929e-01 7.85088e-01 5.41962e-01 1.11977e+00 1.00889e+00 1.08706e+00 + 7.62284e-01 8.40339e-01 + 1.00206e+00 9.26619e-01 1.15404e+00 1.22874e+00 1.08706e+00 1.23849e+00 + 1.11022e+00 1.17455e+00 + 4.29231e-01 6.82150e-01 1.04420e+00 8.00101e-01 7.62284e-01 1.11022e+00 + 8.33947e-01 8.81295e-01 + -1.81642e-01 1.68330e-01 8.37294e-01 1.04677e+00 8.40339e-01 1.17455e+00 + 8.81295e-01 1.34812e-01 + -1.85105e+00 -1.12285e+00 -6.38145e-02 5.10395e-01 4.43243e-01 4.29231e-01 + -2.65736e-01 -1.02490e+00 + -1.12285e+00 -7.62961e-01 3.67036e-01 2.96144e-01 8.51611e-01 6.82150e-01 + 2.49847e-01 -6.66098e-01 + -6.38145e-02 3.67036e-01 2.70382e-01 4.39062e-01 5.86831e-01 1.04420e+00 + 5.88782e-01 -8.16311e-02 + 5.10395e-01 2.96144e-01 4.39062e-01 5.39689e-01 8.89390e-01 8.00101e-01 + 8.53903e-01 6.61537e-01 + 4.43243e-01 8.51611e-01 5.86831e-01 8.89390e-01 9.77383e-01 7.62284e-01 + 9.69595e-01 8.12576e-01 + 4.29231e-01 6.82150e-01 1.04420e+00 8.00101e-01 7.62284e-01 1.11022e+00 + 8.33947e-01 8.81295e-01 + -2.65736e-01 2.49847e-01 5.88782e-01 8.53903e-01 9.69595e-01 8.33947e-01 + -9.95903e-02 5.81034e-02 + -1.02490e+00 -6.66098e-01 -8.16311e-02 6.61537e-01 8.12576e-01 8.81295e-01 + 5.81034e-02 -2.29709e-01 + -6.51757e+00 -4.48635e+00 -1.24479e+00 -2.46745e-01 3.60056e-01 -1.81642e-01 + -1.02490e+00 -4.39556e+00 + -4.48635e+00 -3.24670e+00 -1.53280e+00 -5.64262e-01 4.34894e-01 1.68330e-01 + -6.66098e-01 -2.62199e+00 + -1.24479e+00 -1.53280e+00 -1.00653e+00 -3.27846e-01 6.77740e-01 8.37294e-01 + -8.16311e-02 -5.34398e-01 + -2.46745e-01 -5.64262e-01 -3.27846e-01 7.74700e-02 8.38124e-01 1.04677e+00 + 6.61537e-01 1.47342e-01 + 3.60056e-01 4.34894e-01 6.77740e-01 8.38124e-01 9.06140e-01 8.40339e-01 + 8.12576e-01 5.09431e-01 + -1.81642e-01 1.68330e-01 8.37294e-01 1.04677e+00 8.40339e-01 1.17455e+00 + 8.81295e-01 1.34812e-01 + -1.02490e+00 -6.66098e-01 -8.16311e-02 6.61537e-01 8.12576e-01 8.81295e-01 + 5.81034e-02 -2.29709e-01 + -4.39556e+00 -2.62199e+00 -5.34398e-01 1.47342e-01 5.09431e-01 1.34812e-01 + -2.29709e-01 -2.65950e+00 diff --git a/tests/03_NAO_multik/scf_out_chg_pot1/result.ref b/tests/03_NAO_multik/scf_out_chg_pot1/result.ref new file mode 100644 index 0000000000..49d243db8a --- /dev/null +++ b/tests/03_NAO_multik/scf_out_chg_pot1/result.ref @@ -0,0 +1,7 @@ +etotref -5064.4714132185081326 +etotperatomref -2532.2357066093 +totalforceref 812.960394 +totalstressref 54550.561002 +ComparePot1_pass 0 +chg.cube_pass 0 +totaltimeref 0.78 diff --git a/tests/03_NAO_multik/scf_out_chg_tau/INPUT b/tests/03_NAO_multik/scf_out_chg_tau/INPUT new file mode 100644 index 0000000000..e82857fb0d --- /dev/null +++ b/tests/03_NAO_multik/scf_out_chg_tau/INPUT @@ -0,0 +1,33 @@ +INPUT_PARAMETERS +#Parameters (1.General) +suffix autotest +calculation scf + +nbands 6 +symmetry 0 +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB +gamma_only 0 + +#Parameters (2.Iteration) +ecutwfc 10 +scf_thr 1e-4 +scf_nmax 100 + +out_chg 1 +dft_functional scan + +#Parameters (3.Basis) +basis_type lcao + +#Parameters (4.Smearing) +smearing_method gauss +smearing_sigma 0.002 + +#Parameters (5.Mixing) +mixing_type broyden +mixing_beta 0.7 +mixing_gg0 0.0 + +cal_force 1 +cal_stress 1 diff --git a/tests/03_NAO_multik/09_NO_S1_smallg/KPT b/tests/03_NAO_multik/scf_out_chg_tau/KPT similarity index 100% rename from tests/03_NAO_multik/09_NO_S1_smallg/KPT rename to tests/03_NAO_multik/scf_out_chg_tau/KPT diff --git a/tests/03_NAO_multik/23_NO_KP_OK/README b/tests/03_NAO_multik/scf_out_chg_tau/README similarity index 100% rename from tests/03_NAO_multik/23_NO_KP_OK/README rename to tests/03_NAO_multik/scf_out_chg_tau/README diff --git a/tests/03_NAO_multik/18_NO_KP_OH2/STRU b/tests/03_NAO_multik/scf_out_chg_tau/STRU similarity index 100% rename from tests/03_NAO_multik/18_NO_KP_OH2/STRU rename to tests/03_NAO_multik/scf_out_chg_tau/STRU diff --git a/tests/03_NAO_multik/scf_out_chg_tau/chg.cube.ref b/tests/03_NAO_multik/scf_out_chg_tau/chg.cube.ref new file mode 100644 index 0000000000..1ae0be21f2 --- /dev/null +++ b/tests/03_NAO_multik/scf_out_chg_tau/chg.cube.ref @@ -0,0 +1,683 @@ +Ionic_Step 1 Cubefile created from ABACUS. Inner loop is z, followed by y and x +1 # number of spin directions 0.644033 # Fermi energy, in Ry +2 0.0 0.0 0.0 +15 0.000000 0.340000 0.340000 +15 0.340000 0.000000 0.340000 +15 0.340000 0.340000 0.000000 + 14 4.000000 0.000000 0.000000 0.000000 + 14 4.000000 2.550000 2.550000 2.550000 + 2.511e-03 1.824e-02 5.185e-02 6.777e-02 6.109e-02 4.496e-02 + 3.013e-02 2.140e-02 2.140e-02 3.013e-02 4.496e-02 6.109e-02 + 6.777e-02 5.185e-02 1.824e-02 + 1.824e-02 6.194e-02 9.277e-02 9.268e-02 7.503e-02 5.407e-02 + 3.750e-02 3.084e-02 3.750e-02 5.407e-02 7.503e-02 9.268e-02 + 9.277e-02 6.194e-02 1.824e-02 + 5.185e-02 9.277e-02 1.077e-01 9.861e-02 7.874e-02 5.687e-02 + 4.149e-02 4.149e-02 5.687e-02 7.874e-02 9.861e-02 1.077e-01 + 9.277e-02 5.185e-02 2.392e-02 + 6.777e-02 9.268e-02 9.861e-02 9.038e-02 7.202e-02 5.019e-02 + 3.965e-02 5.019e-02 7.202e-02 9.038e-02 9.861e-02 9.268e-02 + 6.777e-02 4.007e-02 4.007e-02 + 6.109e-02 7.503e-02 7.874e-02 7.202e-02 5.340e-02 3.517e-02 + 3.517e-02 5.340e-02 7.202e-02 7.874e-02 7.503e-02 6.109e-02 + 4.205e-02 3.244e-02 4.205e-02 + 4.496e-02 5.407e-02 5.687e-02 5.019e-02 3.517e-02 2.639e-02 + 3.517e-02 5.019e-02 5.687e-02 5.407e-02 4.496e-02 3.255e-02 + 2.347e-02 2.347e-02 3.255e-02 + 3.013e-02 3.750e-02 4.149e-02 3.965e-02 3.517e-02 3.517e-02 + 3.965e-02 4.149e-02 3.750e-02 3.013e-02 2.182e-02 1.523e-02 + 1.264e-02 1.523e-02 2.182e-02 + 2.140e-02 3.084e-02 4.149e-02 5.019e-02 5.340e-02 5.019e-02 + 4.149e-02 3.084e-02 2.140e-02 1.445e-02 9.636e-03 7.208e-03 + 7.208e-03 9.636e-03 1.445e-02 + 2.140e-02 3.750e-02 5.687e-02 7.202e-02 7.202e-02 5.687e-02 + 3.750e-02 2.140e-02 1.179e-02 6.907e-03 4.700e-03 4.099e-03 + 4.700e-03 6.907e-03 1.179e-02 + 3.013e-02 5.407e-02 7.874e-02 9.038e-02 7.874e-02 5.407e-02 + 3.013e-02 1.445e-02 6.907e-03 4.025e-03 3.161e-03 3.161e-03 + 4.025e-03 6.907e-03 1.445e-02 + 4.496e-02 7.503e-02 9.861e-02 9.861e-02 7.503e-02 4.496e-02 + 2.182e-02 9.636e-03 4.700e-03 3.161e-03 2.848e-03 3.161e-03 + 4.700e-03 9.636e-03 2.182e-02 + 6.109e-02 9.268e-02 1.077e-01 9.268e-02 6.109e-02 3.255e-02 + 1.523e-02 7.208e-03 4.099e-03 3.161e-03 3.161e-03 4.099e-03 + 7.208e-03 1.523e-02 3.255e-02 + 6.777e-02 9.277e-02 9.277e-02 6.777e-02 4.205e-02 2.347e-02 + 1.264e-02 7.208e-03 4.700e-03 4.025e-03 4.700e-03 7.208e-03 + 1.264e-02 2.347e-02 4.205e-02 + 5.185e-02 6.194e-02 5.185e-02 4.007e-02 3.244e-02 2.347e-02 + 1.523e-02 9.636e-03 6.907e-03 6.907e-03 9.636e-03 1.523e-02 + 2.347e-02 3.244e-02 4.007e-02 + 1.824e-02 1.824e-02 2.392e-02 4.007e-02 4.205e-02 3.255e-02 + 2.182e-02 1.445e-02 1.179e-02 1.445e-02 2.182e-02 3.255e-02 + 4.205e-02 4.007e-02 2.392e-02 + 1.824e-02 6.194e-02 9.277e-02 9.268e-02 7.503e-02 5.407e-02 + 3.750e-02 3.084e-02 3.750e-02 5.407e-02 7.503e-02 9.268e-02 + 9.277e-02 6.194e-02 1.824e-02 + 6.194e-02 1.075e-01 1.242e-01 1.128e-01 9.101e-02 6.610e-02 + 4.772e-02 4.772e-02 6.610e-02 9.101e-02 1.128e-01 1.242e-01 + 1.075e-01 6.194e-02 2.857e-02 + 9.277e-02 1.242e-01 1.311e-01 1.188e-01 9.562e-02 6.682e-02 + 5.234e-02 6.682e-02 9.562e-02 1.188e-01 1.311e-01 1.242e-01 + 9.277e-02 5.272e-02 5.272e-02 + 9.268e-02 1.128e-01 1.188e-01 1.093e-01 8.147e-02 5.147e-02 + 5.147e-02 8.147e-02 1.093e-01 1.188e-01 1.128e-01 9.268e-02 + 6.359e-02 4.810e-02 6.359e-02 + 7.503e-02 9.101e-02 9.562e-02 8.147e-02 4.916e-02 2.974e-02 + 4.916e-02 8.147e-02 9.562e-02 9.101e-02 7.503e-02 5.455e-02 + 3.923e-02 3.923e-02 5.455e-02 + 5.407e-02 6.610e-02 6.682e-02 5.147e-02 2.974e-02 2.974e-02 + 5.147e-02 6.682e-02 6.610e-02 5.407e-02 3.967e-02 2.757e-02 + 2.272e-02 2.757e-02 3.967e-02 + 3.750e-02 4.772e-02 5.234e-02 5.147e-02 4.916e-02 5.147e-02 + 5.234e-02 4.772e-02 3.750e-02 2.653e-02 1.795e-02 1.312e-02 + 1.312e-02 1.795e-02 2.653e-02 + 3.084e-02 4.772e-02 6.682e-02 8.147e-02 8.147e-02 6.682e-02 + 4.772e-02 3.084e-02 1.895e-02 1.184e-02 7.950e-03 6.755e-03 + 7.950e-03 1.184e-02 1.895e-02 + 3.750e-02 6.610e-02 9.562e-02 1.093e-01 9.562e-02 6.610e-02 + 3.750e-02 1.895e-02 9.768e-03 5.832e-03 4.402e-03 4.402e-03 + 5.832e-03 9.768e-03 1.895e-02 + 5.407e-02 9.101e-02 1.188e-01 1.188e-01 9.101e-02 5.407e-02 + 2.653e-02 1.184e-02 5.832e-03 3.833e-03 3.410e-03 3.833e-03 + 5.832e-03 1.184e-02 2.653e-02 + 7.503e-02 1.128e-01 1.311e-01 1.128e-01 7.503e-02 3.967e-02 + 1.795e-02 7.950e-03 4.402e-03 3.410e-03 3.410e-03 4.402e-03 + 7.950e-03 1.795e-02 3.967e-02 + 9.268e-02 1.242e-01 1.242e-01 9.268e-02 5.455e-02 2.757e-02 + 1.312e-02 6.755e-03 4.402e-03 3.833e-03 4.402e-03 6.755e-03 + 1.312e-02 2.757e-02 5.455e-02 + 9.277e-02 1.075e-01 9.277e-02 6.359e-02 3.923e-02 2.272e-02 + 1.312e-02 7.950e-03 5.832e-03 5.832e-03 7.950e-03 1.312e-02 + 2.272e-02 3.923e-02 6.359e-02 + 6.194e-02 6.194e-02 5.272e-02 4.810e-02 3.923e-02 2.757e-02 + 1.795e-02 1.184e-02 9.768e-03 1.184e-02 1.795e-02 2.757e-02 + 3.923e-02 4.810e-02 5.272e-02 + 1.824e-02 2.857e-02 5.272e-02 6.359e-02 5.455e-02 3.967e-02 + 2.653e-02 1.895e-02 1.895e-02 2.653e-02 3.967e-02 5.455e-02 + 6.359e-02 5.272e-02 2.857e-02 + 5.185e-02 9.277e-02 1.077e-01 9.861e-02 7.874e-02 5.687e-02 + 4.149e-02 4.149e-02 5.687e-02 7.874e-02 9.861e-02 1.077e-01 + 9.277e-02 5.185e-02 2.392e-02 + 9.277e-02 1.242e-01 1.311e-01 1.188e-01 9.562e-02 6.682e-02 + 5.234e-02 6.682e-02 9.562e-02 1.188e-01 1.311e-01 1.242e-01 + 9.277e-02 5.272e-02 5.272e-02 + 1.077e-01 1.311e-01 1.384e-01 1.269e-01 9.487e-02 5.924e-02 + 5.924e-02 9.487e-02 1.269e-01 1.384e-01 1.311e-01 1.077e-01 + 7.321e-02 5.525e-02 7.321e-02 + 9.861e-02 1.188e-01 1.269e-01 1.094e-01 6.638e-02 3.678e-02 + 6.638e-02 1.094e-01 1.269e-01 1.188e-01 9.861e-02 7.273e-02 + 5.204e-02 5.204e-02 7.273e-02 + 7.874e-02 9.562e-02 9.487e-02 6.638e-02 2.424e-02 2.424e-02 + 6.638e-02 9.487e-02 9.562e-02 7.874e-02 5.829e-02 4.066e-02 + 3.364e-02 4.066e-02 5.829e-02 + 5.687e-02 6.682e-02 5.924e-02 3.678e-02 2.424e-02 3.678e-02 + 5.924e-02 6.682e-02 5.687e-02 4.213e-02 2.859e-02 2.065e-02 + 2.065e-02 2.859e-02 4.213e-02 + 4.149e-02 5.234e-02 5.924e-02 6.638e-02 6.638e-02 5.924e-02 + 5.234e-02 4.149e-02 2.898e-02 1.892e-02 1.265e-02 1.050e-02 + 1.265e-02 1.892e-02 2.898e-02 + 4.149e-02 6.682e-02 9.487e-02 1.094e-01 9.487e-02 6.682e-02 + 4.149e-02 2.401e-02 1.370e-02 8.411e-03 6.183e-03 6.183e-03 + 8.411e-03 1.370e-02 2.401e-02 + 5.687e-02 9.562e-02 1.269e-01 1.269e-01 9.562e-02 5.687e-02 + 2.898e-02 1.370e-02 7.112e-03 4.615e-03 4.017e-03 4.615e-03 + 7.112e-03 1.370e-02 2.898e-02 + 7.874e-02 1.188e-01 1.384e-01 1.188e-01 7.874e-02 4.213e-02 + 1.892e-02 8.411e-03 4.615e-03 3.559e-03 3.559e-03 4.615e-03 + 8.411e-03 1.892e-02 4.213e-02 + 9.861e-02 1.311e-01 1.311e-01 9.861e-02 5.829e-02 2.859e-02 + 1.265e-02 6.183e-03 4.017e-03 3.559e-03 4.017e-03 6.183e-03 + 1.265e-02 2.859e-02 5.829e-02 + 1.077e-01 1.242e-01 1.077e-01 7.273e-02 4.066e-02 2.065e-02 + 1.050e-02 6.183e-03 4.615e-03 4.615e-03 6.183e-03 1.050e-02 + 2.065e-02 4.066e-02 7.273e-02 + 9.277e-02 9.277e-02 7.321e-02 5.204e-02 3.364e-02 2.065e-02 + 1.265e-02 8.411e-03 7.112e-03 8.411e-03 1.265e-02 2.065e-02 + 3.364e-02 5.204e-02 7.321e-02 + 5.185e-02 5.272e-02 5.525e-02 5.204e-02 4.066e-02 2.859e-02 + 1.892e-02 1.370e-02 1.370e-02 1.892e-02 2.859e-02 4.066e-02 + 5.204e-02 5.525e-02 5.272e-02 + 2.392e-02 5.272e-02 7.321e-02 7.273e-02 5.829e-02 4.213e-02 + 2.898e-02 2.401e-02 2.898e-02 4.213e-02 5.829e-02 7.273e-02 + 7.321e-02 5.272e-02 2.392e-02 + 6.777e-02 9.268e-02 9.861e-02 9.038e-02 7.202e-02 5.019e-02 + 3.965e-02 5.019e-02 7.202e-02 9.038e-02 9.861e-02 9.268e-02 + 6.777e-02 4.007e-02 4.007e-02 + 9.268e-02 1.128e-01 1.188e-01 1.093e-01 8.147e-02 5.147e-02 + 5.147e-02 8.147e-02 1.093e-01 1.188e-01 1.128e-01 9.268e-02 + 6.359e-02 4.810e-02 6.359e-02 + 9.861e-02 1.188e-01 1.269e-01 1.094e-01 6.638e-02 3.678e-02 + 6.638e-02 1.094e-01 1.269e-01 1.188e-01 9.861e-02 7.273e-02 + 5.204e-02 5.204e-02 7.273e-02 + 9.038e-02 1.093e-01 1.094e-01 7.723e-02 2.834e-02 2.834e-02 + 7.723e-02 1.094e-01 1.093e-01 9.038e-02 6.717e-02 4.690e-02 + 3.841e-02 4.690e-02 6.717e-02 + 7.202e-02 8.147e-02 6.638e-02 2.834e-02 6.079e-03 2.834e-02 + 6.638e-02 8.147e-02 7.202e-02 5.348e-02 3.637e-02 2.620e-02 + 2.620e-02 3.637e-02 5.348e-02 + 5.019e-02 5.147e-02 3.678e-02 2.834e-02 2.834e-02 3.678e-02 + 5.147e-02 5.019e-02 3.817e-02 2.583e-02 1.720e-02 1.407e-02 + 1.720e-02 2.583e-02 3.817e-02 + 3.965e-02 5.147e-02 6.638e-02 7.723e-02 6.638e-02 5.147e-02 + 3.965e-02 2.780e-02 1.791e-02 1.127e-02 8.102e-03 8.102e-03 + 1.127e-02 1.791e-02 2.780e-02 + 5.019e-02 8.147e-02 1.094e-01 1.094e-01 8.147e-02 5.019e-02 + 2.780e-02 1.479e-02 8.316e-03 5.415e-03 4.623e-03 5.415e-03 + 8.316e-03 1.479e-02 2.780e-02 + 7.202e-02 1.093e-01 1.269e-01 1.093e-01 7.202e-02 3.817e-02 + 1.791e-02 8.316e-03 4.687e-03 3.581e-03 3.581e-03 4.687e-03 + 8.316e-03 1.791e-02 3.817e-02 + 9.038e-02 1.188e-01 1.188e-01 9.038e-02 5.348e-02 2.583e-02 + 1.127e-02 5.415e-03 3.581e-03 3.198e-03 3.581e-03 5.415e-03 + 1.127e-02 2.583e-02 5.348e-02 + 9.861e-02 1.128e-01 9.861e-02 6.717e-02 3.637e-02 1.720e-02 + 8.102e-03 4.623e-03 3.581e-03 3.581e-03 4.623e-03 8.102e-03 + 1.720e-02 3.637e-02 6.717e-02 + 9.268e-02 9.268e-02 7.273e-02 4.690e-02 2.620e-02 1.407e-02 + 8.102e-03 5.415e-03 4.687e-03 5.415e-03 8.102e-03 1.407e-02 + 2.620e-02 4.690e-02 7.273e-02 + 6.777e-02 6.359e-02 5.204e-02 3.841e-02 2.620e-02 1.720e-02 + 1.127e-02 8.316e-03 8.316e-03 1.127e-02 1.720e-02 2.620e-02 + 3.841e-02 5.204e-02 6.359e-02 + 4.007e-02 4.810e-02 5.204e-02 4.690e-02 3.637e-02 2.583e-02 + 1.791e-02 1.479e-02 1.791e-02 2.583e-02 3.637e-02 4.690e-02 + 5.204e-02 4.810e-02 4.007e-02 + 4.007e-02 6.359e-02 7.273e-02 6.717e-02 5.348e-02 3.817e-02 + 2.780e-02 2.780e-02 3.817e-02 5.348e-02 6.717e-02 7.273e-02 + 6.359e-02 4.007e-02 2.575e-02 + 6.109e-02 7.503e-02 7.874e-02 7.202e-02 5.340e-02 3.517e-02 + 3.517e-02 5.340e-02 7.202e-02 7.874e-02 7.503e-02 6.109e-02 + 4.205e-02 3.244e-02 4.205e-02 + 7.503e-02 9.101e-02 9.562e-02 8.147e-02 4.916e-02 2.974e-02 + 4.916e-02 8.147e-02 9.562e-02 9.101e-02 7.503e-02 5.455e-02 + 3.923e-02 3.923e-02 5.455e-02 + 7.874e-02 9.562e-02 9.487e-02 6.638e-02 2.424e-02 2.424e-02 + 6.638e-02 9.487e-02 9.562e-02 7.874e-02 5.829e-02 4.066e-02 + 3.364e-02 4.066e-02 5.829e-02 + 7.202e-02 8.147e-02 6.638e-02 2.834e-02 6.079e-03 2.834e-02 + 6.638e-02 8.147e-02 7.202e-02 5.348e-02 3.637e-02 2.620e-02 + 2.620e-02 3.637e-02 5.348e-02 + 5.340e-02 4.916e-02 2.424e-02 6.079e-03 6.079e-03 2.424e-02 + 4.916e-02 5.340e-02 4.254e-02 2.919e-02 1.938e-02 1.586e-02 + 1.938e-02 2.919e-02 4.254e-02 + 3.517e-02 2.974e-02 2.424e-02 2.834e-02 2.424e-02 2.974e-02 + 3.517e-02 2.987e-02 2.075e-02 1.340e-02 9.462e-03 9.462e-03 + 1.340e-02 2.075e-02 2.987e-02 + 3.517e-02 4.916e-02 6.638e-02 6.638e-02 4.916e-02 3.517e-02 + 2.402e-02 1.520e-02 9.366e-03 6.160e-03 5.124e-03 6.160e-03 + 9.366e-03 1.520e-02 2.402e-02 + 5.340e-02 8.147e-02 9.487e-02 8.147e-02 5.340e-02 2.987e-02 + 1.520e-02 7.945e-03 4.685e-03 3.516e-03 3.516e-03 4.685e-03 + 7.945e-03 1.520e-02 2.987e-02 + 7.202e-02 9.562e-02 9.562e-02 7.202e-02 4.254e-02 2.075e-02 + 9.366e-03 4.685e-03 3.128e-03 2.806e-03 3.128e-03 4.685e-03 + 9.366e-03 2.075e-02 4.254e-02 + 7.874e-02 9.101e-02 7.874e-02 5.348e-02 2.919e-02 1.340e-02 + 6.160e-03 3.516e-03 2.806e-03 2.806e-03 3.516e-03 6.160e-03 + 1.340e-02 2.919e-02 5.348e-02 + 7.503e-02 7.503e-02 5.829e-02 3.637e-02 1.938e-02 9.462e-03 + 5.124e-03 3.516e-03 3.128e-03 3.516e-03 5.124e-03 9.462e-03 + 1.938e-02 3.637e-02 5.829e-02 + 6.109e-02 5.455e-02 4.066e-02 2.620e-02 1.586e-02 9.462e-03 + 6.160e-03 4.685e-03 4.685e-03 6.160e-03 9.462e-03 1.586e-02 + 2.620e-02 4.066e-02 5.455e-02 + 4.205e-02 3.923e-02 3.364e-02 2.620e-02 1.938e-02 1.340e-02 + 9.366e-03 7.945e-03 9.366e-03 1.340e-02 1.938e-02 2.620e-02 + 3.364e-02 3.923e-02 4.205e-02 + 3.244e-02 3.923e-02 4.066e-02 3.637e-02 2.919e-02 2.075e-02 + 1.520e-02 1.520e-02 2.075e-02 2.919e-02 3.637e-02 4.066e-02 + 3.923e-02 3.244e-02 2.820e-02 + 4.205e-02 5.455e-02 5.829e-02 5.348e-02 4.254e-02 2.987e-02 + 2.402e-02 2.987e-02 4.254e-02 5.348e-02 5.829e-02 5.455e-02 + 4.205e-02 2.820e-02 2.820e-02 + 4.496e-02 5.407e-02 5.687e-02 5.019e-02 3.517e-02 2.639e-02 + 3.517e-02 5.019e-02 5.687e-02 5.407e-02 4.496e-02 3.255e-02 + 2.347e-02 2.347e-02 3.255e-02 + 5.407e-02 6.610e-02 6.682e-02 5.147e-02 2.974e-02 2.974e-02 + 5.147e-02 6.682e-02 6.610e-02 5.407e-02 3.967e-02 2.757e-02 + 2.272e-02 2.757e-02 3.967e-02 + 5.687e-02 6.682e-02 5.924e-02 3.678e-02 2.424e-02 3.678e-02 + 5.924e-02 6.682e-02 5.687e-02 4.213e-02 2.859e-02 2.065e-02 + 2.065e-02 2.859e-02 4.213e-02 + 5.019e-02 5.147e-02 3.678e-02 2.834e-02 2.834e-02 3.678e-02 + 5.147e-02 5.019e-02 3.817e-02 2.583e-02 1.720e-02 1.407e-02 + 1.720e-02 2.583e-02 3.817e-02 + 3.517e-02 2.974e-02 2.424e-02 2.834e-02 2.424e-02 2.974e-02 + 3.517e-02 2.987e-02 2.075e-02 1.340e-02 9.462e-03 9.462e-03 + 1.340e-02 2.075e-02 2.987e-02 + 2.639e-02 2.974e-02 3.678e-02 3.678e-02 2.974e-02 2.639e-02 + 2.189e-02 1.506e-02 9.746e-03 6.238e-03 5.103e-03 6.238e-03 + 9.746e-03 1.506e-02 2.189e-02 + 3.517e-02 5.147e-02 5.924e-02 5.147e-02 3.517e-02 2.189e-02 + 1.272e-02 7.339e-03 4.549e-03 3.386e-03 3.386e-03 4.549e-03 + 7.339e-03 1.272e-02 2.189e-02 + 5.019e-02 6.682e-02 6.682e-02 5.019e-02 2.987e-02 1.506e-02 + 7.339e-03 3.980e-03 2.711e-03 2.404e-03 2.711e-03 3.980e-03 + 7.339e-03 1.506e-02 2.987e-02 + 5.687e-02 6.610e-02 5.687e-02 3.817e-02 2.075e-02 9.746e-03 + 4.549e-03 2.711e-03 2.197e-03 2.197e-03 2.711e-03 4.549e-03 + 9.746e-03 2.075e-02 3.817e-02 + 5.407e-02 5.407e-02 4.213e-02 2.583e-02 1.340e-02 6.238e-03 + 3.386e-03 2.404e-03 2.197e-03 2.404e-03 3.386e-03 6.238e-03 + 1.340e-02 2.583e-02 4.213e-02 + 4.496e-02 3.967e-02 2.859e-02 1.720e-02 9.462e-03 5.103e-03 + 3.386e-03 2.711e-03 2.711e-03 3.386e-03 5.103e-03 9.462e-03 + 1.720e-02 2.859e-02 3.967e-02 + 3.255e-02 2.757e-02 2.065e-02 1.407e-02 9.462e-03 6.238e-03 + 4.549e-03 3.980e-03 4.549e-03 6.238e-03 9.462e-03 1.407e-02 + 2.065e-02 2.757e-02 3.255e-02 + 2.347e-02 2.272e-02 2.065e-02 1.720e-02 1.340e-02 9.746e-03 + 7.339e-03 7.339e-03 9.746e-03 1.340e-02 1.720e-02 2.065e-02 + 2.272e-02 2.347e-02 2.327e-02 + 2.347e-02 2.757e-02 2.859e-02 2.583e-02 2.075e-02 1.506e-02 + 1.272e-02 1.506e-02 2.075e-02 2.583e-02 2.859e-02 2.757e-02 + 2.347e-02 1.916e-02 1.916e-02 + 3.255e-02 3.967e-02 4.213e-02 3.817e-02 2.987e-02 2.189e-02 + 2.189e-02 2.987e-02 3.817e-02 4.213e-02 3.967e-02 3.255e-02 + 2.327e-02 1.916e-02 2.327e-02 + 3.013e-02 3.750e-02 4.149e-02 3.965e-02 3.517e-02 3.517e-02 + 3.965e-02 4.149e-02 3.750e-02 3.013e-02 2.182e-02 1.523e-02 + 1.264e-02 1.523e-02 2.182e-02 + 3.750e-02 4.772e-02 5.234e-02 5.147e-02 4.916e-02 5.147e-02 + 5.234e-02 4.772e-02 3.750e-02 2.653e-02 1.795e-02 1.312e-02 + 1.312e-02 1.795e-02 2.653e-02 + 4.149e-02 5.234e-02 5.924e-02 6.638e-02 6.638e-02 5.924e-02 + 5.234e-02 4.149e-02 2.898e-02 1.892e-02 1.265e-02 1.050e-02 + 1.265e-02 1.892e-02 2.898e-02 + 3.965e-02 5.147e-02 6.638e-02 7.723e-02 6.638e-02 5.147e-02 + 3.965e-02 2.780e-02 1.791e-02 1.127e-02 8.102e-03 8.102e-03 + 1.127e-02 1.791e-02 2.780e-02 + 3.517e-02 4.916e-02 6.638e-02 6.638e-02 4.916e-02 3.517e-02 + 2.402e-02 1.520e-02 9.366e-03 6.160e-03 5.124e-03 6.160e-03 + 9.366e-03 1.520e-02 2.402e-02 + 3.517e-02 5.147e-02 5.924e-02 5.147e-02 3.517e-02 2.189e-02 + 1.272e-02 7.339e-03 4.549e-03 3.386e-03 3.386e-03 4.549e-03 + 7.339e-03 1.272e-02 2.189e-02 + 3.965e-02 5.234e-02 5.234e-02 3.965e-02 2.402e-02 1.272e-02 + 6.592e-03 3.710e-03 2.530e-03 2.234e-03 2.530e-03 3.710e-03 + 6.592e-03 1.272e-02 2.402e-02 + 4.149e-02 4.772e-02 4.149e-02 2.780e-02 1.520e-02 7.339e-03 + 3.710e-03 2.300e-03 1.872e-03 1.872e-03 2.300e-03 3.710e-03 + 7.339e-03 1.520e-02 2.780e-02 + 3.750e-02 3.750e-02 2.898e-02 1.791e-02 9.366e-03 4.549e-03 + 2.530e-03 1.872e-03 1.724e-03 1.872e-03 2.530e-03 4.549e-03 + 9.366e-03 1.791e-02 2.898e-02 + 3.013e-02 2.653e-02 1.892e-02 1.127e-02 6.160e-03 3.386e-03 + 2.234e-03 1.872e-03 1.872e-03 2.234e-03 3.386e-03 6.160e-03 + 1.127e-02 1.892e-02 2.653e-02 + 2.182e-02 1.795e-02 1.265e-02 8.102e-03 5.124e-03 3.386e-03 + 2.530e-03 2.300e-03 2.530e-03 3.386e-03 5.124e-03 8.102e-03 + 1.265e-02 1.795e-02 2.182e-02 + 1.523e-02 1.312e-02 1.050e-02 8.102e-03 6.160e-03 4.549e-03 + 3.710e-03 3.710e-03 4.549e-03 6.160e-03 8.102e-03 1.050e-02 + 1.312e-02 1.523e-02 1.600e-02 + 1.264e-02 1.312e-02 1.265e-02 1.127e-02 9.366e-03 7.339e-03 + 6.592e-03 7.339e-03 9.366e-03 1.127e-02 1.265e-02 1.312e-02 + 1.264e-02 1.184e-02 1.184e-02 + 1.523e-02 1.795e-02 1.892e-02 1.791e-02 1.520e-02 1.272e-02 + 1.272e-02 1.520e-02 1.791e-02 1.892e-02 1.795e-02 1.523e-02 + 1.184e-02 1.044e-02 1.184e-02 + 2.182e-02 2.653e-02 2.898e-02 2.780e-02 2.402e-02 2.189e-02 + 2.402e-02 2.780e-02 2.898e-02 2.653e-02 2.182e-02 1.600e-02 + 1.184e-02 1.184e-02 1.600e-02 + 2.140e-02 3.084e-02 4.149e-02 5.019e-02 5.340e-02 5.019e-02 + 4.149e-02 3.084e-02 2.140e-02 1.445e-02 9.636e-03 7.208e-03 + 7.208e-03 9.636e-03 1.445e-02 + 3.084e-02 4.772e-02 6.682e-02 8.147e-02 8.147e-02 6.682e-02 + 4.772e-02 3.084e-02 1.895e-02 1.184e-02 7.950e-03 6.755e-03 + 7.950e-03 1.184e-02 1.895e-02 + 4.149e-02 6.682e-02 9.487e-02 1.094e-01 9.487e-02 6.682e-02 + 4.149e-02 2.401e-02 1.370e-02 8.411e-03 6.183e-03 6.183e-03 + 8.411e-03 1.370e-02 2.401e-02 + 5.019e-02 8.147e-02 1.094e-01 1.094e-01 8.147e-02 5.019e-02 + 2.780e-02 1.479e-02 8.316e-03 5.415e-03 4.623e-03 5.415e-03 + 8.316e-03 1.479e-02 2.780e-02 + 5.340e-02 8.147e-02 9.487e-02 8.147e-02 5.340e-02 2.987e-02 + 1.520e-02 7.945e-03 4.685e-03 3.516e-03 3.516e-03 4.685e-03 + 7.945e-03 1.520e-02 2.987e-02 + 5.019e-02 6.682e-02 6.682e-02 5.019e-02 2.987e-02 1.506e-02 + 7.339e-03 3.980e-03 2.711e-03 2.404e-03 2.711e-03 3.980e-03 + 7.339e-03 1.506e-02 2.987e-02 + 4.149e-02 4.772e-02 4.149e-02 2.780e-02 1.520e-02 7.339e-03 + 3.710e-03 2.300e-03 1.872e-03 1.872e-03 2.300e-03 3.710e-03 + 7.339e-03 1.520e-02 2.780e-02 + 3.084e-02 3.084e-02 2.401e-02 1.479e-02 7.945e-03 3.980e-03 + 2.300e-03 1.716e-03 1.594e-03 1.716e-03 2.300e-03 3.980e-03 + 7.945e-03 1.479e-02 2.401e-02 + 2.140e-02 1.895e-02 1.370e-02 8.316e-03 4.685e-03 2.711e-03 + 1.872e-03 1.594e-03 1.594e-03 1.872e-03 2.711e-03 4.685e-03 + 8.316e-03 1.370e-02 1.895e-02 + 1.445e-02 1.184e-02 8.411e-03 5.415e-03 3.516e-03 2.404e-03 + 1.872e-03 1.716e-03 1.872e-03 2.404e-03 3.516e-03 5.415e-03 + 8.411e-03 1.184e-02 1.445e-02 + 9.636e-03 7.950e-03 6.183e-03 4.623e-03 3.516e-03 2.711e-03 + 2.300e-03 2.300e-03 2.711e-03 3.516e-03 4.623e-03 6.183e-03 + 7.950e-03 9.636e-03 1.022e-02 + 7.208e-03 6.755e-03 6.183e-03 5.415e-03 4.685e-03 3.980e-03 + 3.710e-03 3.980e-03 4.685e-03 5.415e-03 6.183e-03 6.755e-03 + 7.208e-03 7.335e-03 7.335e-03 + 7.208e-03 7.950e-03 8.411e-03 8.316e-03 7.945e-03 7.339e-03 + 7.339e-03 7.945e-03 8.316e-03 8.411e-03 7.950e-03 7.208e-03 + 6.264e-03 5.856e-03 6.264e-03 + 9.636e-03 1.184e-02 1.370e-02 1.479e-02 1.520e-02 1.506e-02 + 1.520e-02 1.479e-02 1.370e-02 1.184e-02 9.636e-03 7.335e-03 + 5.856e-03 5.856e-03 7.335e-03 + 1.445e-02 1.895e-02 2.401e-02 2.780e-02 2.987e-02 2.987e-02 + 2.780e-02 2.401e-02 1.895e-02 1.445e-02 1.022e-02 7.335e-03 + 6.264e-03 7.335e-03 1.022e-02 + 2.140e-02 3.750e-02 5.687e-02 7.202e-02 7.202e-02 5.687e-02 + 3.750e-02 2.140e-02 1.179e-02 6.907e-03 4.700e-03 4.099e-03 + 4.700e-03 6.907e-03 1.179e-02 + 3.750e-02 6.610e-02 9.562e-02 1.093e-01 9.562e-02 6.610e-02 + 3.750e-02 1.895e-02 9.768e-03 5.832e-03 4.402e-03 4.402e-03 + 5.832e-03 9.768e-03 1.895e-02 + 5.687e-02 9.562e-02 1.269e-01 1.269e-01 9.562e-02 5.687e-02 + 2.898e-02 1.370e-02 7.112e-03 4.615e-03 4.017e-03 4.615e-03 + 7.112e-03 1.370e-02 2.898e-02 + 7.202e-02 1.093e-01 1.269e-01 1.093e-01 7.202e-02 3.817e-02 + 1.791e-02 8.316e-03 4.687e-03 3.581e-03 3.581e-03 4.687e-03 + 8.316e-03 1.791e-02 3.817e-02 + 7.202e-02 9.562e-02 9.562e-02 7.202e-02 4.254e-02 2.075e-02 + 9.366e-03 4.685e-03 3.128e-03 2.806e-03 3.128e-03 4.685e-03 + 9.366e-03 2.075e-02 4.254e-02 + 5.687e-02 6.610e-02 5.687e-02 3.817e-02 2.075e-02 9.746e-03 + 4.549e-03 2.711e-03 2.197e-03 2.197e-03 2.711e-03 4.549e-03 + 9.746e-03 2.075e-02 3.817e-02 + 3.750e-02 3.750e-02 2.898e-02 1.791e-02 9.366e-03 4.549e-03 + 2.530e-03 1.872e-03 1.724e-03 1.872e-03 2.530e-03 4.549e-03 + 9.366e-03 1.791e-02 2.898e-02 + 2.140e-02 1.895e-02 1.370e-02 8.316e-03 4.685e-03 2.711e-03 + 1.872e-03 1.594e-03 1.594e-03 1.872e-03 2.711e-03 4.685e-03 + 8.316e-03 1.370e-02 1.895e-02 + 1.179e-02 9.768e-03 7.112e-03 4.687e-03 3.128e-03 2.197e-03 + 1.724e-03 1.594e-03 1.724e-03 2.197e-03 3.128e-03 4.687e-03 + 7.112e-03 9.768e-03 1.179e-02 + 6.907e-03 5.832e-03 4.615e-03 3.581e-03 2.806e-03 2.197e-03 + 1.872e-03 1.872e-03 2.197e-03 2.806e-03 3.581e-03 4.615e-03 + 5.832e-03 6.907e-03 7.107e-03 + 4.700e-03 4.402e-03 4.017e-03 3.581e-03 3.128e-03 2.711e-03 + 2.530e-03 2.711e-03 3.128e-03 3.581e-03 4.017e-03 4.402e-03 + 4.700e-03 4.859e-03 4.859e-03 + 4.099e-03 4.402e-03 4.615e-03 4.687e-03 4.685e-03 4.549e-03 + 4.549e-03 4.685e-03 4.687e-03 4.615e-03 4.402e-03 4.099e-03 + 3.778e-03 3.600e-03 3.778e-03 + 4.700e-03 5.832e-03 7.112e-03 8.316e-03 9.366e-03 9.746e-03 + 9.366e-03 8.316e-03 7.112e-03 5.832e-03 4.700e-03 3.778e-03 + 3.212e-03 3.212e-03 3.778e-03 + 6.907e-03 9.768e-03 1.370e-02 1.791e-02 2.075e-02 2.075e-02 + 1.791e-02 1.370e-02 9.768e-03 6.907e-03 4.859e-03 3.600e-03 + 3.212e-03 3.600e-03 4.859e-03 + 1.179e-02 1.895e-02 2.898e-02 3.817e-02 4.254e-02 3.817e-02 + 2.898e-02 1.895e-02 1.179e-02 7.107e-03 4.859e-03 3.778e-03 + 3.778e-03 4.859e-03 7.107e-03 + 3.013e-02 5.407e-02 7.874e-02 9.038e-02 7.874e-02 5.407e-02 + 3.013e-02 1.445e-02 6.907e-03 4.025e-03 3.161e-03 3.161e-03 + 4.025e-03 6.907e-03 1.445e-02 + 5.407e-02 9.101e-02 1.188e-01 1.188e-01 9.101e-02 5.407e-02 + 2.653e-02 1.184e-02 5.832e-03 3.833e-03 3.410e-03 3.833e-03 + 5.832e-03 1.184e-02 2.653e-02 + 7.874e-02 1.188e-01 1.384e-01 1.188e-01 7.874e-02 4.213e-02 + 1.892e-02 8.411e-03 4.615e-03 3.559e-03 3.559e-03 4.615e-03 + 8.411e-03 1.892e-02 4.213e-02 + 9.038e-02 1.188e-01 1.188e-01 9.038e-02 5.348e-02 2.583e-02 + 1.127e-02 5.415e-03 3.581e-03 3.198e-03 3.581e-03 5.415e-03 + 1.127e-02 2.583e-02 5.348e-02 + 7.874e-02 9.101e-02 7.874e-02 5.348e-02 2.919e-02 1.340e-02 + 6.160e-03 3.516e-03 2.806e-03 2.806e-03 3.516e-03 6.160e-03 + 1.340e-02 2.919e-02 5.348e-02 + 5.407e-02 5.407e-02 4.213e-02 2.583e-02 1.340e-02 6.238e-03 + 3.386e-03 2.404e-03 2.197e-03 2.404e-03 3.386e-03 6.238e-03 + 1.340e-02 2.583e-02 4.213e-02 + 3.013e-02 2.653e-02 1.892e-02 1.127e-02 6.160e-03 3.386e-03 + 2.234e-03 1.872e-03 1.872e-03 2.234e-03 3.386e-03 6.160e-03 + 1.127e-02 1.892e-02 2.653e-02 + 1.445e-02 1.184e-02 8.411e-03 5.415e-03 3.516e-03 2.404e-03 + 1.872e-03 1.716e-03 1.872e-03 2.404e-03 3.516e-03 5.415e-03 + 8.411e-03 1.184e-02 1.445e-02 + 6.907e-03 5.832e-03 4.615e-03 3.581e-03 2.806e-03 2.197e-03 + 1.872e-03 1.872e-03 2.197e-03 2.806e-03 3.581e-03 4.615e-03 + 5.832e-03 6.907e-03 7.107e-03 + 4.025e-03 3.833e-03 3.559e-03 3.198e-03 2.806e-03 2.404e-03 + 2.234e-03 2.404e-03 2.806e-03 3.198e-03 3.559e-03 3.833e-03 + 4.025e-03 4.050e-03 4.050e-03 + 3.161e-03 3.410e-03 3.559e-03 3.581e-03 3.516e-03 3.386e-03 + 3.386e-03 3.516e-03 3.581e-03 3.559e-03 3.410e-03 3.161e-03 + 2.901e-03 2.741e-03 2.901e-03 + 3.161e-03 3.833e-03 4.615e-03 5.415e-03 6.160e-03 6.238e-03 + 6.160e-03 5.415e-03 4.615e-03 3.833e-03 3.161e-03 2.611e-03 + 2.246e-03 2.246e-03 2.611e-03 + 4.025e-03 5.832e-03 8.411e-03 1.127e-02 1.340e-02 1.340e-02 + 1.127e-02 8.411e-03 5.832e-03 4.025e-03 2.901e-03 2.246e-03 + 2.029e-03 2.246e-03 2.901e-03 + 6.907e-03 1.184e-02 1.892e-02 2.583e-02 2.919e-02 2.583e-02 + 1.892e-02 1.184e-02 6.907e-03 4.050e-03 2.741e-03 2.246e-03 + 2.246e-03 2.741e-03 4.050e-03 + 1.445e-02 2.653e-02 4.213e-02 5.348e-02 5.348e-02 4.213e-02 + 2.653e-02 1.445e-02 7.107e-03 4.050e-03 2.901e-03 2.611e-03 + 2.901e-03 4.050e-03 7.107e-03 + 4.496e-02 7.503e-02 9.861e-02 9.861e-02 7.503e-02 4.496e-02 + 2.182e-02 9.636e-03 4.700e-03 3.161e-03 2.848e-03 3.161e-03 + 4.700e-03 9.636e-03 2.182e-02 + 7.503e-02 1.128e-01 1.311e-01 1.128e-01 7.503e-02 3.967e-02 + 1.795e-02 7.950e-03 4.402e-03 3.410e-03 3.410e-03 4.402e-03 + 7.950e-03 1.795e-02 3.967e-02 + 9.861e-02 1.311e-01 1.311e-01 9.861e-02 5.829e-02 2.859e-02 + 1.265e-02 6.183e-03 4.017e-03 3.559e-03 4.017e-03 6.183e-03 + 1.265e-02 2.859e-02 5.829e-02 + 9.861e-02 1.128e-01 9.861e-02 6.717e-02 3.637e-02 1.720e-02 + 8.102e-03 4.623e-03 3.581e-03 3.581e-03 4.623e-03 8.102e-03 + 1.720e-02 3.637e-02 6.717e-02 + 7.503e-02 7.503e-02 5.829e-02 3.637e-02 1.938e-02 9.462e-03 + 5.124e-03 3.516e-03 3.128e-03 3.516e-03 5.124e-03 9.462e-03 + 1.938e-02 3.637e-02 5.829e-02 + 4.496e-02 3.967e-02 2.859e-02 1.720e-02 9.462e-03 5.103e-03 + 3.386e-03 2.711e-03 2.711e-03 3.386e-03 5.103e-03 9.462e-03 + 1.720e-02 2.859e-02 3.967e-02 + 2.182e-02 1.795e-02 1.265e-02 8.102e-03 5.124e-03 3.386e-03 + 2.530e-03 2.300e-03 2.530e-03 3.386e-03 5.124e-03 8.102e-03 + 1.265e-02 1.795e-02 2.182e-02 + 9.636e-03 7.950e-03 6.183e-03 4.623e-03 3.516e-03 2.711e-03 + 2.300e-03 2.300e-03 2.711e-03 3.516e-03 4.623e-03 6.183e-03 + 7.950e-03 9.636e-03 1.022e-02 + 4.700e-03 4.402e-03 4.017e-03 3.581e-03 3.128e-03 2.711e-03 + 2.530e-03 2.711e-03 3.128e-03 3.581e-03 4.017e-03 4.402e-03 + 4.700e-03 4.859e-03 4.859e-03 + 3.161e-03 3.410e-03 3.559e-03 3.581e-03 3.516e-03 3.386e-03 + 3.386e-03 3.516e-03 3.581e-03 3.559e-03 3.410e-03 3.161e-03 + 2.901e-03 2.741e-03 2.901e-03 + 2.848e-03 3.410e-03 4.017e-03 4.623e-03 5.124e-03 5.103e-03 + 5.124e-03 4.623e-03 4.017e-03 3.410e-03 2.848e-03 2.365e-03 + 2.016e-03 2.016e-03 2.365e-03 + 3.161e-03 4.402e-03 6.183e-03 8.102e-03 9.462e-03 9.462e-03 + 8.102e-03 6.183e-03 4.402e-03 3.161e-03 2.365e-03 1.853e-03 + 1.702e-03 1.853e-03 2.365e-03 + 4.700e-03 7.950e-03 1.265e-02 1.720e-02 1.938e-02 1.720e-02 + 1.265e-02 7.950e-03 4.700e-03 2.901e-03 2.016e-03 1.702e-03 + 1.702e-03 2.016e-03 2.901e-03 + 9.636e-03 1.795e-02 2.859e-02 3.637e-02 3.637e-02 2.859e-02 + 1.795e-02 9.636e-03 4.859e-03 2.741e-03 2.016e-03 1.853e-03 + 2.016e-03 2.741e-03 4.859e-03 + 2.182e-02 3.967e-02 5.829e-02 6.717e-02 5.829e-02 3.967e-02 + 2.182e-02 1.022e-02 4.859e-03 2.901e-03 2.365e-03 2.365e-03 + 2.901e-03 4.859e-03 1.022e-02 + 6.109e-02 9.268e-02 1.077e-01 9.268e-02 6.109e-02 3.255e-02 + 1.523e-02 7.208e-03 4.099e-03 3.161e-03 3.161e-03 4.099e-03 + 7.208e-03 1.523e-02 3.255e-02 + 9.268e-02 1.242e-01 1.242e-01 9.268e-02 5.455e-02 2.757e-02 + 1.312e-02 6.755e-03 4.402e-03 3.833e-03 4.402e-03 6.755e-03 + 1.312e-02 2.757e-02 5.455e-02 + 1.077e-01 1.242e-01 1.077e-01 7.273e-02 4.066e-02 2.065e-02 + 1.050e-02 6.183e-03 4.615e-03 4.615e-03 6.183e-03 1.050e-02 + 2.065e-02 4.066e-02 7.273e-02 + 9.268e-02 9.268e-02 7.273e-02 4.690e-02 2.620e-02 1.407e-02 + 8.102e-03 5.415e-03 4.687e-03 5.415e-03 8.102e-03 1.407e-02 + 2.620e-02 4.690e-02 7.273e-02 + 6.109e-02 5.455e-02 4.066e-02 2.620e-02 1.586e-02 9.462e-03 + 6.160e-03 4.685e-03 4.685e-03 6.160e-03 9.462e-03 1.586e-02 + 2.620e-02 4.066e-02 5.455e-02 + 3.255e-02 2.757e-02 2.065e-02 1.407e-02 9.462e-03 6.238e-03 + 4.549e-03 3.980e-03 4.549e-03 6.238e-03 9.462e-03 1.407e-02 + 2.065e-02 2.757e-02 3.255e-02 + 1.523e-02 1.312e-02 1.050e-02 8.102e-03 6.160e-03 4.549e-03 + 3.710e-03 3.710e-03 4.549e-03 6.160e-03 8.102e-03 1.050e-02 + 1.312e-02 1.523e-02 1.600e-02 + 7.208e-03 6.755e-03 6.183e-03 5.415e-03 4.685e-03 3.980e-03 + 3.710e-03 3.980e-03 4.685e-03 5.415e-03 6.183e-03 6.755e-03 + 7.208e-03 7.335e-03 7.335e-03 + 4.099e-03 4.402e-03 4.615e-03 4.687e-03 4.685e-03 4.549e-03 + 4.549e-03 4.685e-03 4.687e-03 4.615e-03 4.402e-03 4.099e-03 + 3.778e-03 3.600e-03 3.778e-03 + 3.161e-03 3.833e-03 4.615e-03 5.415e-03 6.160e-03 6.238e-03 + 6.160e-03 5.415e-03 4.615e-03 3.833e-03 3.161e-03 2.611e-03 + 2.246e-03 2.246e-03 2.611e-03 + 3.161e-03 4.402e-03 6.183e-03 8.102e-03 9.462e-03 9.462e-03 + 8.102e-03 6.183e-03 4.402e-03 3.161e-03 2.365e-03 1.853e-03 + 1.702e-03 1.853e-03 2.365e-03 + 4.099e-03 6.755e-03 1.050e-02 1.407e-02 1.586e-02 1.407e-02 + 1.050e-02 6.755e-03 4.099e-03 2.611e-03 1.853e-03 1.578e-03 + 1.578e-03 1.853e-03 2.611e-03 + 7.208e-03 1.312e-02 2.065e-02 2.620e-02 2.620e-02 2.065e-02 + 1.312e-02 7.208e-03 3.778e-03 2.246e-03 1.702e-03 1.578e-03 + 1.702e-03 2.246e-03 3.778e-03 + 1.523e-02 2.757e-02 4.066e-02 4.690e-02 4.066e-02 2.757e-02 + 1.523e-02 7.335e-03 3.600e-03 2.246e-03 1.853e-03 1.853e-03 + 2.246e-03 3.600e-03 7.335e-03 + 3.255e-02 5.455e-02 7.273e-02 7.273e-02 5.455e-02 3.255e-02 + 1.600e-02 7.335e-03 3.778e-03 2.611e-03 2.365e-03 2.611e-03 + 3.778e-03 7.335e-03 1.600e-02 + 6.777e-02 9.277e-02 9.277e-02 6.777e-02 4.205e-02 2.347e-02 + 1.264e-02 7.208e-03 4.700e-03 4.025e-03 4.700e-03 7.208e-03 + 1.264e-02 2.347e-02 4.205e-02 + 9.277e-02 1.075e-01 9.277e-02 6.359e-02 3.923e-02 2.272e-02 + 1.312e-02 7.950e-03 5.832e-03 5.832e-03 7.950e-03 1.312e-02 + 2.272e-02 3.923e-02 6.359e-02 + 9.277e-02 9.277e-02 7.321e-02 5.204e-02 3.364e-02 2.065e-02 + 1.265e-02 8.411e-03 7.112e-03 8.411e-03 1.265e-02 2.065e-02 + 3.364e-02 5.204e-02 7.321e-02 + 6.777e-02 6.359e-02 5.204e-02 3.841e-02 2.620e-02 1.720e-02 + 1.127e-02 8.316e-03 8.316e-03 1.127e-02 1.720e-02 2.620e-02 + 3.841e-02 5.204e-02 6.359e-02 + 4.205e-02 3.923e-02 3.364e-02 2.620e-02 1.938e-02 1.340e-02 + 9.366e-03 7.945e-03 9.366e-03 1.340e-02 1.938e-02 2.620e-02 + 3.364e-02 3.923e-02 4.205e-02 + 2.347e-02 2.272e-02 2.065e-02 1.720e-02 1.340e-02 9.746e-03 + 7.339e-03 7.339e-03 9.746e-03 1.340e-02 1.720e-02 2.065e-02 + 2.272e-02 2.347e-02 2.327e-02 + 1.264e-02 1.312e-02 1.265e-02 1.127e-02 9.366e-03 7.339e-03 + 6.592e-03 7.339e-03 9.366e-03 1.127e-02 1.265e-02 1.312e-02 + 1.264e-02 1.184e-02 1.184e-02 + 7.208e-03 7.950e-03 8.411e-03 8.316e-03 7.945e-03 7.339e-03 + 7.339e-03 7.945e-03 8.316e-03 8.411e-03 7.950e-03 7.208e-03 + 6.264e-03 5.856e-03 6.264e-03 + 4.700e-03 5.832e-03 7.112e-03 8.316e-03 9.366e-03 9.746e-03 + 9.366e-03 8.316e-03 7.112e-03 5.832e-03 4.700e-03 3.778e-03 + 3.212e-03 3.212e-03 3.778e-03 + 4.025e-03 5.832e-03 8.411e-03 1.127e-02 1.340e-02 1.340e-02 + 1.127e-02 8.411e-03 5.832e-03 4.025e-03 2.901e-03 2.246e-03 + 2.029e-03 2.246e-03 2.901e-03 + 4.700e-03 7.950e-03 1.265e-02 1.720e-02 1.938e-02 1.720e-02 + 1.265e-02 7.950e-03 4.700e-03 2.901e-03 2.016e-03 1.702e-03 + 1.702e-03 2.016e-03 2.901e-03 + 7.208e-03 1.312e-02 2.065e-02 2.620e-02 2.620e-02 2.065e-02 + 1.312e-02 7.208e-03 3.778e-03 2.246e-03 1.702e-03 1.578e-03 + 1.702e-03 2.246e-03 3.778e-03 + 1.264e-02 2.272e-02 3.364e-02 3.841e-02 3.364e-02 2.272e-02 + 1.264e-02 6.264e-03 3.212e-03 2.029e-03 1.702e-03 1.702e-03 + 2.029e-03 3.212e-03 6.264e-03 + 2.347e-02 3.923e-02 5.204e-02 5.204e-02 3.923e-02 2.347e-02 + 1.184e-02 5.856e-03 3.212e-03 2.246e-03 2.016e-03 2.246e-03 + 3.212e-03 5.856e-03 1.184e-02 + 4.205e-02 6.359e-02 7.321e-02 6.359e-02 4.205e-02 2.327e-02 + 1.184e-02 6.264e-03 3.778e-03 2.901e-03 2.901e-03 3.778e-03 + 6.264e-03 1.184e-02 2.327e-02 + 5.185e-02 6.194e-02 5.185e-02 4.007e-02 3.244e-02 2.347e-02 + 1.523e-02 9.636e-03 6.907e-03 6.907e-03 9.636e-03 1.523e-02 + 2.347e-02 3.244e-02 4.007e-02 + 6.194e-02 6.194e-02 5.272e-02 4.810e-02 3.923e-02 2.757e-02 + 1.795e-02 1.184e-02 9.768e-03 1.184e-02 1.795e-02 2.757e-02 + 3.923e-02 4.810e-02 5.272e-02 + 5.185e-02 5.272e-02 5.525e-02 5.204e-02 4.066e-02 2.859e-02 + 1.892e-02 1.370e-02 1.370e-02 1.892e-02 2.859e-02 4.066e-02 + 5.204e-02 5.525e-02 5.272e-02 + 4.007e-02 4.810e-02 5.204e-02 4.690e-02 3.637e-02 2.583e-02 + 1.791e-02 1.479e-02 1.791e-02 2.583e-02 3.637e-02 4.690e-02 + 5.204e-02 4.810e-02 4.007e-02 + 3.244e-02 3.923e-02 4.066e-02 3.637e-02 2.919e-02 2.075e-02 + 1.520e-02 1.520e-02 2.075e-02 2.919e-02 3.637e-02 4.066e-02 + 3.923e-02 3.244e-02 2.820e-02 + 2.347e-02 2.757e-02 2.859e-02 2.583e-02 2.075e-02 1.506e-02 + 1.272e-02 1.506e-02 2.075e-02 2.583e-02 2.859e-02 2.757e-02 + 2.347e-02 1.916e-02 1.916e-02 + 1.523e-02 1.795e-02 1.892e-02 1.791e-02 1.520e-02 1.272e-02 + 1.272e-02 1.520e-02 1.791e-02 1.892e-02 1.795e-02 1.523e-02 + 1.184e-02 1.044e-02 1.184e-02 + 9.636e-03 1.184e-02 1.370e-02 1.479e-02 1.520e-02 1.506e-02 + 1.520e-02 1.479e-02 1.370e-02 1.184e-02 9.636e-03 7.335e-03 + 5.856e-03 5.856e-03 7.335e-03 + 6.907e-03 9.768e-03 1.370e-02 1.791e-02 2.075e-02 2.075e-02 + 1.791e-02 1.370e-02 9.768e-03 6.907e-03 4.859e-03 3.600e-03 + 3.212e-03 3.600e-03 4.859e-03 + 6.907e-03 1.184e-02 1.892e-02 2.583e-02 2.919e-02 2.583e-02 + 1.892e-02 1.184e-02 6.907e-03 4.050e-03 2.741e-03 2.246e-03 + 2.246e-03 2.741e-03 4.050e-03 + 9.636e-03 1.795e-02 2.859e-02 3.637e-02 3.637e-02 2.859e-02 + 1.795e-02 9.636e-03 4.859e-03 2.741e-03 2.016e-03 1.853e-03 + 2.016e-03 2.741e-03 4.859e-03 + 1.523e-02 2.757e-02 4.066e-02 4.690e-02 4.066e-02 2.757e-02 + 1.523e-02 7.335e-03 3.600e-03 2.246e-03 1.853e-03 1.853e-03 + 2.246e-03 3.600e-03 7.335e-03 + 2.347e-02 3.923e-02 5.204e-02 5.204e-02 3.923e-02 2.347e-02 + 1.184e-02 5.856e-03 3.212e-03 2.246e-03 2.016e-03 2.246e-03 + 3.212e-03 5.856e-03 1.184e-02 + 3.244e-02 4.810e-02 5.525e-02 4.810e-02 3.244e-02 1.916e-02 + 1.044e-02 5.856e-03 3.600e-03 2.741e-03 2.741e-03 3.600e-03 + 5.856e-03 1.044e-02 1.916e-02 + 4.007e-02 5.272e-02 5.272e-02 4.007e-02 2.820e-02 1.916e-02 + 1.184e-02 7.335e-03 4.859e-03 4.050e-03 4.859e-03 7.335e-03 + 1.184e-02 1.916e-02 2.820e-02 + 1.824e-02 1.824e-02 2.392e-02 4.007e-02 4.205e-02 3.255e-02 + 2.182e-02 1.445e-02 1.179e-02 1.445e-02 2.182e-02 3.255e-02 + 4.205e-02 4.007e-02 2.392e-02 + 1.824e-02 2.857e-02 5.272e-02 6.359e-02 5.455e-02 3.967e-02 + 2.653e-02 1.895e-02 1.895e-02 2.653e-02 3.967e-02 5.455e-02 + 6.359e-02 5.272e-02 2.857e-02 + 2.392e-02 5.272e-02 7.321e-02 7.273e-02 5.829e-02 4.213e-02 + 2.898e-02 2.401e-02 2.898e-02 4.213e-02 5.829e-02 7.273e-02 + 7.321e-02 5.272e-02 2.392e-02 + 4.007e-02 6.359e-02 7.273e-02 6.717e-02 5.348e-02 3.817e-02 + 2.780e-02 2.780e-02 3.817e-02 5.348e-02 6.717e-02 7.273e-02 + 6.359e-02 4.007e-02 2.575e-02 + 4.205e-02 5.455e-02 5.829e-02 5.348e-02 4.254e-02 2.987e-02 + 2.402e-02 2.987e-02 4.254e-02 5.348e-02 5.829e-02 5.455e-02 + 4.205e-02 2.820e-02 2.820e-02 + 3.255e-02 3.967e-02 4.213e-02 3.817e-02 2.987e-02 2.189e-02 + 2.189e-02 2.987e-02 3.817e-02 4.213e-02 3.967e-02 3.255e-02 + 2.327e-02 1.916e-02 2.327e-02 + 2.182e-02 2.653e-02 2.898e-02 2.780e-02 2.402e-02 2.189e-02 + 2.402e-02 2.780e-02 2.898e-02 2.653e-02 2.182e-02 1.600e-02 + 1.184e-02 1.184e-02 1.600e-02 + 1.445e-02 1.895e-02 2.401e-02 2.780e-02 2.987e-02 2.987e-02 + 2.780e-02 2.401e-02 1.895e-02 1.445e-02 1.022e-02 7.335e-03 + 6.264e-03 7.335e-03 1.022e-02 + 1.179e-02 1.895e-02 2.898e-02 3.817e-02 4.254e-02 3.817e-02 + 2.898e-02 1.895e-02 1.179e-02 7.107e-03 4.859e-03 3.778e-03 + 3.778e-03 4.859e-03 7.107e-03 + 1.445e-02 2.653e-02 4.213e-02 5.348e-02 5.348e-02 4.213e-02 + 2.653e-02 1.445e-02 7.107e-03 4.050e-03 2.901e-03 2.611e-03 + 2.901e-03 4.050e-03 7.107e-03 + 2.182e-02 3.967e-02 5.829e-02 6.717e-02 5.829e-02 3.967e-02 + 2.182e-02 1.022e-02 4.859e-03 2.901e-03 2.365e-03 2.365e-03 + 2.901e-03 4.859e-03 1.022e-02 + 3.255e-02 5.455e-02 7.273e-02 7.273e-02 5.455e-02 3.255e-02 + 1.600e-02 7.335e-03 3.778e-03 2.611e-03 2.365e-03 2.611e-03 + 3.778e-03 7.335e-03 1.600e-02 + 4.205e-02 6.359e-02 7.321e-02 6.359e-02 4.205e-02 2.327e-02 + 1.184e-02 6.264e-03 3.778e-03 2.901e-03 2.901e-03 3.778e-03 + 6.264e-03 1.184e-02 2.327e-02 + 4.007e-02 5.272e-02 5.272e-02 4.007e-02 2.820e-02 1.916e-02 + 1.184e-02 7.335e-03 4.859e-03 4.050e-03 4.859e-03 7.335e-03 + 1.184e-02 1.916e-02 2.820e-02 + 2.392e-02 2.857e-02 2.392e-02 2.575e-02 2.820e-02 2.327e-02 + 1.600e-02 1.022e-02 7.107e-03 7.107e-03 1.022e-02 1.600e-02 + 2.327e-02 2.820e-02 2.575e-02 diff --git a/tests/03_NAO_multik/scf_out_chg_tau/result.ref b/tests/03_NAO_multik/scf_out_chg_tau/result.ref new file mode 100644 index 0000000000..7a50e464a6 --- /dev/null +++ b/tests/03_NAO_multik/scf_out_chg_tau/result.ref @@ -0,0 +1,7 @@ +etotref -196.4521105421517859 +etotperatomref -98.2260552711 +totalforceref 0.000000 +totalstressref 1426.533510 +chg.cube_pass 0 +tau.cube_pass 0 +totaltimeref 0.76 diff --git a/tests/03_NAO_multik/scf_out_chg_tau/tau.cube.ref b/tests/03_NAO_multik/scf_out_chg_tau/tau.cube.ref new file mode 100644 index 0000000000..45966ff097 --- /dev/null +++ b/tests/03_NAO_multik/scf_out_chg_tau/tau.cube.ref @@ -0,0 +1,683 @@ +Ionic_Step 1 Cubefile created from ABACUS. Inner loop is z, followed by y and x +1 # number of spin directions 0.644033 # Fermi energy, in Ry +2 0.0 0.0 0.0 +15 0.000000 0.340000 0.340000 +15 0.340000 0.000000 0.340000 +15 0.340000 0.340000 0.000000 + 14 4.000000 0.000000 0.000000 0.000000 + 14 4.000000 2.550000 2.550000 2.550000 + 1.80281085967e-01 1.82422828268e-01 1.16467735388e-01 6.52691932418e-02 4.77193978469e-02 3.72920735613e-02 + 3.18085146238e-02 2.99172055199e-02 2.99172055199e-02 3.18085146238e-02 3.72920735613e-02 4.77193978469e-02 + 6.52691932418e-02 1.16467735388e-01 1.82422828268e-01 + 1.82422828268e-01 1.02568469446e-01 5.03836760403e-02 3.50294268557e-02 3.42073290623e-02 3.78194924587e-02 + 4.02222959331e-02 4.34116802001e-02 4.02222959331e-02 3.78194924587e-02 3.42073290623e-02 3.50294268557e-02 + 5.03836760403e-02 1.02568469446e-01 1.82422828268e-01 + 1.16467735388e-01 5.03836760403e-02 2.76155885440e-02 2.56381222091e-02 3.16578904846e-02 4.30811551462e-02 + 5.01938086050e-02 5.01938086050e-02 4.30811551462e-02 3.16578904846e-02 2.56381222091e-02 2.76155885440e-02 + 5.03836760403e-02 1.16467735388e-01 1.75978291339e-01 + 6.52691932418e-02 3.50294268557e-02 2.56381222091e-02 2.77650059484e-02 3.92607806531e-02 5.15953878901e-02 + 6.40797263891e-02 5.15953878901e-02 3.92607806531e-02 2.77650059484e-02 2.56381222091e-02 3.50294268557e-02 + 6.52691932418e-02 9.95387143197e-02 9.95387143197e-02 + 4.77193978469e-02 3.42073290623e-02 3.16578904846e-02 3.92607806531e-02 5.77610358000e-02 7.23281111668e-02 + 7.23281111668e-02 5.77610358000e-02 3.92607806531e-02 3.16578904846e-02 3.42073290623e-02 4.77193978469e-02 + 5.61335799375e-02 6.46788103129e-02 5.61335799375e-02 + 3.72920735613e-02 3.78194924587e-02 4.30811551462e-02 5.15953878901e-02 7.23281111668e-02 8.49232065105e-02 + 7.23281111668e-02 5.15953878901e-02 4.30811551462e-02 3.78194924587e-02 3.72920735613e-02 3.85875039457e-02 + 3.97809938382e-02 3.97809938382e-02 3.85875039457e-02 + 3.18085146238e-02 4.02222959331e-02 5.01938086050e-02 6.40797263891e-02 7.23281111668e-02 7.23281111668e-02 + 6.40797263891e-02 5.01938086050e-02 4.02222959331e-02 3.18085146238e-02 2.77237360128e-02 2.42768838976e-02 + 2.38593064853e-02 2.42768838976e-02 2.77237360128e-02 + 2.99172055199e-02 4.34116802001e-02 5.01938086050e-02 5.15953878901e-02 5.77610358000e-02 5.15953878901e-02 + 5.01938086050e-02 4.34116802001e-02 2.99172055199e-02 2.21844351566e-02 1.56599181080e-02 1.25503014842e-02 + 1.25503014842e-02 1.56599181080e-02 2.21844351566e-02 + 2.99172055199e-02 4.02222959331e-02 4.30811551462e-02 3.92607806531e-02 3.92607806531e-02 4.30811551462e-02 + 4.02222959331e-02 2.99172055199e-02 1.95071574201e-02 1.13646063453e-02 6.70218401668e-03 4.59069441377e-03 + 6.70218401668e-03 1.13646063453e-02 1.95071574201e-02 + 3.18085146238e-02 3.78194924587e-02 3.16578904846e-02 2.77650059484e-02 3.16578904846e-02 3.78194924587e-02 + 3.18085146238e-02 2.21844351566e-02 1.13646063453e-02 5.11954914432e-03 1.60658688370e-03 1.60658688370e-03 + 5.11954914432e-03 1.13646063453e-02 2.21844351566e-02 + 3.72920735613e-02 3.42073290623e-02 2.56381222091e-02 2.56381222091e-02 3.42073290623e-02 3.72920735613e-02 + 2.77237360128e-02 1.56599181080e-02 6.70218401668e-03 1.60658688370e-03 2.99179150647e-04 1.60658688370e-03 + 6.70218401668e-03 1.56599181080e-02 2.77237360128e-02 + 4.77193978469e-02 3.50294268557e-02 2.76155885440e-02 3.50294268557e-02 4.77193978469e-02 3.85875039457e-02 + 2.42768838976e-02 1.25503014842e-02 4.59069441377e-03 1.60658688370e-03 1.60658688370e-03 4.59069441377e-03 + 1.25503014842e-02 2.42768838976e-02 3.85875039457e-02 + 6.52691932418e-02 5.03836760403e-02 5.03836760403e-02 6.52691932418e-02 5.61335799375e-02 3.97809938382e-02 + 2.38593064853e-02 1.25503014842e-02 6.70218401668e-03 5.11954914432e-03 6.70218401668e-03 1.25503014842e-02 + 2.38593064853e-02 3.97809938382e-02 5.61335799375e-02 + 1.16467735388e-01 1.02568469446e-01 1.16467735388e-01 9.95387143197e-02 6.46788103129e-02 3.97809938382e-02 + 2.42768838976e-02 1.56599181080e-02 1.13646063453e-02 1.13646063453e-02 1.56599181080e-02 2.42768838976e-02 + 3.97809938382e-02 6.46788103129e-02 9.95387143197e-02 + 1.82422828268e-01 1.82422828268e-01 1.75978291339e-01 9.95387143197e-02 5.61335799375e-02 3.85875039457e-02 + 2.77237360128e-02 2.21844351566e-02 1.95071574201e-02 2.21844351566e-02 2.77237360128e-02 3.85875039457e-02 + 5.61335799375e-02 9.95387143197e-02 1.75978291339e-01 + 1.82422828268e-01 1.02568469446e-01 5.03836760403e-02 3.50294268557e-02 3.42073290623e-02 3.78194924587e-02 + 4.02222959331e-02 4.34116802001e-02 4.02222959331e-02 3.78194924587e-02 3.42073290623e-02 3.50294268557e-02 + 5.03836760403e-02 1.02568469446e-01 1.82422828268e-01 + 1.02568469446e-01 3.75098528213e-02 1.55091198600e-02 1.76415461442e-02 2.80289195955e-02 4.32649438817e-02 + 5.27225154807e-02 5.27225154807e-02 4.32649438817e-02 2.80289195955e-02 1.76415461442e-02 1.55091198600e-02 + 3.75098528213e-02 1.02568469446e-01 1.83280188132e-01 + 5.03836760403e-02 1.55091198600e-02 7.66046977902e-03 1.45740503756e-02 3.18433510883e-02 5.41698533623e-02 + 7.22755322173e-02 5.41698533623e-02 3.18433510883e-02 1.45740503756e-02 7.66046977902e-03 1.55091198600e-02 + 5.03836760403e-02 1.13539754126e-01 1.13539754126e-01 + 3.50294268557e-02 1.76415461442e-02 1.45740503756e-02 2.47958446021e-02 5.21992902722e-02 8.90053073193e-02 + 8.90053073193e-02 5.21992902722e-02 2.47958446021e-02 1.45740503756e-02 1.76415461442e-02 3.50294268557e-02 + 5.92235143217e-02 8.15533129102e-02 5.92235143217e-02 + 3.42073290623e-02 2.80289195955e-02 3.18433510883e-02 5.21992902722e-02 9.62989068912e-02 1.28883911425e-01 + 9.62989068912e-02 5.21992902722e-02 3.18433510883e-02 2.80289195955e-02 3.42073290623e-02 4.46676835001e-02 + 5.23936115453e-02 5.23936115453e-02 4.46676835001e-02 + 3.78194924587e-02 4.32649438817e-02 5.41698533623e-02 8.90053073193e-02 1.28883911425e-01 1.28883911425e-01 + 8.90053073193e-02 5.41698533623e-02 4.32649438817e-02 3.78194924587e-02 3.60022233749e-02 3.49506556165e-02 + 3.70994631101e-02 3.49506556165e-02 3.60022233749e-02 + 4.02222959331e-02 5.27225154807e-02 7.22755322173e-02 8.90053073193e-02 9.62989068912e-02 8.90053073193e-02 + 7.22755322173e-02 5.27225154807e-02 4.02222959331e-02 3.08604739677e-02 2.43879073207e-02 2.13888507874e-02 + 2.13888507874e-02 2.43879073207e-02 3.08604739677e-02 + 4.34116802001e-02 5.27225154807e-02 5.41698533623e-02 5.21992902722e-02 5.21992902722e-02 5.41698533623e-02 + 5.27225154807e-02 4.34116802001e-02 2.79666745937e-02 1.78991060313e-02 1.23746382387e-02 9.66467351917e-03 + 1.23746382387e-02 1.78991060313e-02 2.79666745937e-02 + 4.02222959331e-02 4.32649438817e-02 3.18433510883e-02 2.47958446021e-02 3.18433510883e-02 4.32649438817e-02 + 4.02222959331e-02 2.79666745937e-02 1.52963446205e-02 7.92513025055e-03 3.86875558844e-03 3.86875558844e-03 + 7.92513025055e-03 1.52963446205e-02 2.79666745937e-02 + 3.78194924587e-02 2.80289195955e-02 1.45740503756e-02 1.45740503756e-02 2.80289195955e-02 3.78194924587e-02 + 3.08604739677e-02 1.78991060313e-02 7.92513025055e-03 2.15869962360e-03 6.20007891972e-04 2.15869962360e-03 + 7.92513025055e-03 1.78991060313e-02 3.08604739677e-02 + 3.42073290623e-02 1.76415461442e-02 7.66046977902e-03 1.76415461442e-02 3.42073290623e-02 3.60022233749e-02 + 2.43879073207e-02 1.23746382387e-02 3.86875558844e-03 6.20007891972e-04 6.20007891972e-04 3.86875558844e-03 + 1.23746382387e-02 2.43879073207e-02 3.60022233749e-02 + 3.50294268557e-02 1.55091198600e-02 1.55091198600e-02 3.50294268557e-02 4.46676835001e-02 3.49506556165e-02 + 2.13888507874e-02 9.66467351917e-03 3.86875558844e-03 2.15869962360e-03 3.86875558844e-03 9.66467351917e-03 + 2.13888507874e-02 3.49506556165e-02 4.46676835001e-02 + 5.03836760403e-02 3.75098528213e-02 5.03836760403e-02 5.92235143217e-02 5.23936115453e-02 3.70994631101e-02 + 2.13888507874e-02 1.23746382387e-02 7.92513025055e-03 7.92513025055e-03 1.23746382387e-02 2.13888507874e-02 + 3.70994631101e-02 5.23936115453e-02 5.92235143217e-02 + 1.02568469446e-01 1.02568469446e-01 1.13539754126e-01 8.15533129102e-02 5.23936115453e-02 3.49506556165e-02 + 2.43879073207e-02 1.78991060313e-02 1.52963446205e-02 1.78991060313e-02 2.43879073207e-02 3.49506556165e-02 + 5.23936115453e-02 8.15533129102e-02 1.13539754126e-01 + 1.82422828268e-01 1.83280188132e-01 1.13539754126e-01 5.92235143217e-02 4.46676835001e-02 3.60022233749e-02 + 3.08604739677e-02 2.79666745937e-02 2.79666745937e-02 3.08604739677e-02 3.60022233749e-02 4.46676835001e-02 + 5.92235143217e-02 1.13539754126e-01 1.83280188132e-01 + 1.16467735388e-01 5.03836760403e-02 2.76155885440e-02 2.56381222091e-02 3.16578904846e-02 4.30811551462e-02 + 5.01938086050e-02 5.01938086050e-02 4.30811551462e-02 3.16578904846e-02 2.56381222091e-02 2.76155885440e-02 + 5.03836760403e-02 1.16467735388e-01 1.75978291339e-01 + 5.03836760403e-02 1.55091198600e-02 7.66046977902e-03 1.45740503756e-02 3.18433510883e-02 5.41698533623e-02 + 7.22755322173e-02 5.41698533623e-02 3.18433510883e-02 1.45740503756e-02 7.66046977902e-03 1.55091198600e-02 + 5.03836760403e-02 1.13539754126e-01 1.13539754126e-01 + 2.76155885440e-02 7.66046977902e-03 5.88407505951e-04 1.22283197111e-02 4.60292144819e-02 9.32262743675e-02 + 9.32262743675e-02 4.60292144819e-02 1.22283197111e-02 5.88407505951e-04 7.66046977902e-03 2.76155885440e-02 + 6.09424067177e-02 8.53804463649e-02 6.09424067177e-02 + 2.56381222091e-02 1.45740503756e-02 1.22283197111e-02 3.36135559891e-02 9.58701888529e-02 1.55893621190e-01 + 9.58701888529e-02 3.36135559891e-02 1.22283197111e-02 1.45740503756e-02 2.56381222091e-02 4.40351969320e-02 + 5.84769754663e-02 5.84769754663e-02 4.40351969320e-02 + 3.16578904846e-02 3.18433510883e-02 4.60292144819e-02 9.58701888529e-02 1.78937466321e-01 1.78937466321e-01 + 9.58701888529e-02 4.60292144819e-02 3.18433510883e-02 3.16578904846e-02 3.72212996136e-02 4.27231306029e-02 + 4.57138189196e-02 4.27231306029e-02 3.72212996136e-02 + 4.30811551462e-02 5.41698533623e-02 9.32262743675e-02 1.55893621190e-01 1.78937466321e-01 1.55893621190e-01 + 9.32262743675e-02 5.41698533623e-02 4.30811551462e-02 3.54179538479e-02 3.30817407316e-02 3.00019977593e-02 + 3.00019977593e-02 3.30817407316e-02 3.54179538479e-02 + 5.01938086050e-02 7.22755322173e-02 9.32262743675e-02 9.58701888529e-02 9.58701888529e-02 9.32262743675e-02 + 7.22755322173e-02 5.01938086050e-02 3.49314010620e-02 2.55149658819e-02 1.86401066199e-02 1.63183576357e-02 + 1.86401066199e-02 2.55149658819e-02 3.49314010620e-02 + 5.01938086050e-02 5.41698533623e-02 4.60292144819e-02 3.36135559891e-02 4.60292144819e-02 5.41698533623e-02 + 5.01938086050e-02 3.55073021064e-02 2.15005775831e-02 1.24898667953e-02 8.27412039851e-03 8.27412039851e-03 + 1.24898667953e-02 2.15005775831e-02 3.55073021064e-02 + 4.30811551462e-02 3.18433510883e-02 1.22283197111e-02 1.22283197111e-02 3.18433510883e-02 4.30811551462e-02 + 3.49314010620e-02 2.15005775831e-02 9.79121310155e-03 4.02268913133e-03 2.15067339004e-03 4.02268913133e-03 + 9.79121310155e-03 2.15005775831e-02 3.49314010620e-02 + 3.16578904846e-02 1.45740503756e-02 5.88407505951e-04 1.45740503756e-02 3.16578904846e-02 3.54179538479e-02 + 2.55149658819e-02 1.24898667953e-02 4.02268913133e-03 5.43091896583e-04 5.43091896583e-04 4.02268913133e-03 + 1.24898667953e-02 2.55149658819e-02 3.54179538479e-02 + 2.56381222091e-02 7.66046977902e-03 7.66046977902e-03 2.56381222091e-02 3.72212996136e-02 3.30817407316e-02 + 1.86401066199e-02 8.27412039851e-03 2.15067339004e-03 5.43091896583e-04 2.15067339004e-03 8.27412039851e-03 + 1.86401066199e-02 3.30817407316e-02 3.72212996136e-02 + 2.76155885440e-02 1.55091198600e-02 2.76155885440e-02 4.40351969320e-02 4.27231306029e-02 3.00019977593e-02 + 1.63183576357e-02 8.27412039851e-03 4.02268913133e-03 4.02268913133e-03 8.27412039851e-03 1.63183576357e-02 + 3.00019977593e-02 4.27231306029e-02 4.40351969320e-02 + 5.03836760403e-02 5.03836760403e-02 6.09424067177e-02 5.84769754663e-02 4.57138189196e-02 3.00019977593e-02 + 1.86401066199e-02 1.24898667953e-02 9.79121310155e-03 1.24898667953e-02 1.86401066199e-02 3.00019977593e-02 + 4.57138189196e-02 5.84769754663e-02 6.09424067177e-02 + 1.16467735388e-01 1.13539754126e-01 8.53804463649e-02 5.84769754663e-02 4.27231306029e-02 3.30817407316e-02 + 2.55149658819e-02 2.15005775831e-02 2.15005775831e-02 2.55149658819e-02 3.30817407316e-02 4.27231306029e-02 + 5.84769754663e-02 8.53804463649e-02 1.13539754126e-01 + 1.75978291339e-01 1.13539754126e-01 6.09424067177e-02 4.40351969320e-02 3.72212996136e-02 3.54179538479e-02 + 3.49314010620e-02 3.55073021064e-02 3.49314010620e-02 3.54179538479e-02 3.72212996136e-02 4.40351969320e-02 + 6.09424067177e-02 1.13539754126e-01 1.75978291339e-01 + 6.52691932418e-02 3.50294268557e-02 2.56381222091e-02 2.77650059484e-02 3.92607806531e-02 5.15953878901e-02 + 6.40797263891e-02 5.15953878901e-02 3.92607806531e-02 2.77650059484e-02 2.56381222091e-02 3.50294268557e-02 + 6.52691932418e-02 9.95387143197e-02 9.95387143197e-02 + 3.50294268557e-02 1.76415461442e-02 1.45740503756e-02 2.47958446021e-02 5.21992902722e-02 8.90053073193e-02 + 8.90053073193e-02 5.21992902722e-02 2.47958446021e-02 1.45740503756e-02 1.76415461442e-02 3.50294268557e-02 + 5.92235143217e-02 8.15533129102e-02 5.92235143217e-02 + 2.56381222091e-02 1.45740503756e-02 1.22283197111e-02 3.36135559891e-02 9.58701888529e-02 1.55893621190e-01 + 9.58701888529e-02 3.36135559891e-02 1.22283197111e-02 1.45740503756e-02 2.56381222091e-02 4.40351969320e-02 + 5.84769754663e-02 5.84769754663e-02 4.40351969320e-02 + 2.77650059484e-02 2.47958446021e-02 3.36135559891e-02 6.76894902970e-02 1.65125441372e-01 1.65125441372e-01 + 6.76894902970e-02 3.36135559891e-02 2.47958446021e-02 2.77650059484e-02 3.74646524133e-02 4.48502710858e-02 + 5.02634504938e-02 4.48502710858e-02 3.74646524133e-02 + 3.92607806531e-02 5.21992902722e-02 9.58701888529e-02 1.65125441372e-01 1.94666393607e-01 1.65125441372e-01 + 9.58701888529e-02 5.21992902722e-02 3.92607806531e-02 3.70588268986e-02 3.66436362392e-02 3.62873182074e-02 + 3.62873182074e-02 3.66436362392e-02 3.70588268986e-02 + 5.15953878901e-02 8.90053073193e-02 1.55893621190e-01 1.65125441372e-01 1.65125441372e-01 1.55893621190e-01 + 8.90053073193e-02 5.15953878901e-02 3.88199146511e-02 3.00331874093e-02 2.47929678075e-02 2.24956267167e-02 + 2.47929678075e-02 3.00331874093e-02 3.88199146511e-02 + 6.40797263891e-02 8.90053073193e-02 9.58701888529e-02 6.76894902970e-02 9.58701888529e-02 8.90053073193e-02 + 6.40797263891e-02 4.06623304521e-02 2.56772132883e-02 1.73142648442e-02 1.28060436295e-02 1.28060436295e-02 + 1.73142648442e-02 2.56772132883e-02 4.06623304521e-02 + 5.15953878901e-02 5.21992902722e-02 3.36135559891e-02 3.36135559891e-02 5.21992902722e-02 5.15953878901e-02 + 4.06623304521e-02 2.60569281693e-02 1.40094656991e-02 7.35387417276e-03 5.53145518161e-03 7.35387417276e-03 + 1.40094656991e-02 2.60569281693e-02 4.06623304521e-02 + 3.92607806531e-02 2.47958446021e-02 1.22283197111e-02 2.47958446021e-02 3.92607806531e-02 3.88199146511e-02 + 2.56772132883e-02 1.40094656991e-02 5.18295256070e-03 1.64102393395e-03 1.64102393395e-03 5.18295256070e-03 + 1.40094656991e-02 2.56772132883e-02 3.88199146511e-02 + 2.77650059484e-02 1.45740503756e-02 1.45740503756e-02 2.77650059484e-02 3.70588268986e-02 3.00331874093e-02 + 1.73142648442e-02 7.35387417276e-03 1.64102393395e-03 1.47520974601e-04 1.64102393395e-03 7.35387417276e-03 + 1.73142648442e-02 3.00331874093e-02 3.70588268986e-02 + 2.56381222091e-02 1.76415461442e-02 2.56381222091e-02 3.74646524133e-02 3.66436362392e-02 2.47929678075e-02 + 1.28060436295e-02 5.53145518161e-03 1.64102393395e-03 1.64102393395e-03 5.53145518161e-03 1.28060436295e-02 + 2.47929678075e-02 3.66436362392e-02 3.74646524133e-02 + 3.50294268557e-02 3.50294268557e-02 4.40351969320e-02 4.48502710858e-02 3.62873182074e-02 2.24956267167e-02 + 1.28060436295e-02 7.35387417276e-03 5.18295256070e-03 7.35387417276e-03 1.28060436295e-02 2.24956267167e-02 + 3.62873182074e-02 4.48502710858e-02 4.40351969320e-02 + 6.52691932418e-02 5.92235143217e-02 5.84769754663e-02 5.02634504938e-02 3.62873182074e-02 2.47929678075e-02 + 1.73142648442e-02 1.40094656991e-02 1.40094656991e-02 1.73142648442e-02 2.47929678075e-02 3.62873182074e-02 + 5.02634504938e-02 5.84769754663e-02 5.92235143217e-02 + 9.95387143197e-02 8.15533129102e-02 5.84769754663e-02 4.48502710858e-02 3.66436362392e-02 3.00331874093e-02 + 2.56772132883e-02 2.60569281693e-02 2.56772132883e-02 3.00331874093e-02 3.66436362392e-02 4.48502710858e-02 + 5.84769754663e-02 8.15533129102e-02 9.95387143197e-02 + 9.95387143197e-02 5.92235143217e-02 4.40351969320e-02 3.74646524133e-02 3.70588268986e-02 3.88199146511e-02 + 4.06623304521e-02 4.06623304521e-02 3.88199146511e-02 3.70588268986e-02 3.74646524133e-02 4.40351969320e-02 + 5.92235143217e-02 9.95387143197e-02 1.21879341630e-01 + 4.77193978469e-02 3.42073290623e-02 3.16578904846e-02 3.92607806531e-02 5.77610358000e-02 7.23281111668e-02 + 7.23281111668e-02 5.77610358000e-02 3.92607806531e-02 3.16578904846e-02 3.42073290623e-02 4.77193978469e-02 + 5.61335799375e-02 6.46788103129e-02 5.61335799375e-02 + 3.42073290623e-02 2.80289195955e-02 3.18433510883e-02 5.21992902722e-02 9.62989068912e-02 1.28883911425e-01 + 9.62989068912e-02 5.21992902722e-02 3.18433510883e-02 2.80289195955e-02 3.42073290623e-02 4.46676835001e-02 + 5.23936115453e-02 5.23936115453e-02 4.46676835001e-02 + 3.16578904846e-02 3.18433510883e-02 4.60292144819e-02 9.58701888529e-02 1.78937466321e-01 1.78937466321e-01 + 9.58701888529e-02 4.60292144819e-02 3.18433510883e-02 3.16578904846e-02 3.72212996136e-02 4.27231306029e-02 + 4.57138189196e-02 4.27231306029e-02 3.72212996136e-02 + 3.92607806531e-02 5.21992902722e-02 9.58701888529e-02 1.65125441372e-01 1.94666393607e-01 1.65125441372e-01 + 9.58701888529e-02 5.21992902722e-02 3.92607806531e-02 3.70588268986e-02 3.66436362392e-02 3.62873182074e-02 + 3.62873182074e-02 3.66436362392e-02 3.70588268986e-02 + 5.77610358000e-02 9.62989068912e-02 1.78937466321e-01 1.94666393607e-01 1.94666393607e-01 1.78937466321e-01 + 9.62989068912e-02 5.77610358000e-02 4.31689270135e-02 3.18895470196e-02 2.71142914004e-02 2.45905634624e-02 + 2.71142914004e-02 3.18895470196e-02 4.31689270135e-02 + 7.23281111668e-02 1.28883911425e-01 1.78937466321e-01 1.65125441372e-01 1.78937466321e-01 1.28883911425e-01 + 7.23281111668e-02 4.49581105718e-02 2.94734728104e-02 2.09853466063e-02 1.67257046016e-02 1.67257046016e-02 + 2.09853466063e-02 2.94734728104e-02 4.49581105718e-02 + 7.23281111668e-02 9.62989068912e-02 9.58701888529e-02 9.58701888529e-02 9.62989068912e-02 7.23281111668e-02 + 4.78620662790e-02 2.78871820412e-02 1.64170481704e-02 1.00194370256e-02 8.33783116227e-03 1.00194370256e-02 + 1.64170481704e-02 2.78871820412e-02 4.78620662790e-02 + 5.77610358000e-02 5.21992902722e-02 4.60292144819e-02 5.21992902722e-02 5.77610358000e-02 4.49581105718e-02 + 2.78871820412e-02 1.43763201712e-02 7.08929107284e-03 3.65259578883e-03 3.65259578883e-03 7.08929107284e-03 + 1.43763201712e-02 2.78871820412e-02 4.49581105718e-02 + 3.92607806531e-02 3.18433510883e-02 3.18433510883e-02 3.92607806531e-02 4.31689270135e-02 2.94734728104e-02 + 1.64170481704e-02 7.08929107284e-03 2.06279931440e-03 7.49011933950e-04 2.06279931440e-03 7.08929107284e-03 + 1.64170481704e-02 2.94734728104e-02 4.31689270135e-02 + 3.16578904846e-02 2.80289195955e-02 3.16578904846e-02 3.70588268986e-02 3.18895470196e-02 2.09853466063e-02 + 1.00194370256e-02 3.65259578883e-03 7.49011933950e-04 7.49011933950e-04 3.65259578883e-03 1.00194370256e-02 + 2.09853466063e-02 3.18895470196e-02 3.70588268986e-02 + 3.42073290623e-02 3.42073290623e-02 3.72212996136e-02 3.66436362392e-02 2.71142914004e-02 1.67257046016e-02 + 8.33783116227e-03 3.65259578883e-03 2.06279931440e-03 3.65259578883e-03 8.33783116227e-03 1.67257046016e-02 + 2.71142914004e-02 3.66436362392e-02 3.72212996136e-02 + 4.77193978469e-02 4.46676835001e-02 4.27231306029e-02 3.62873182074e-02 2.45905634624e-02 1.67257046016e-02 + 1.00194370256e-02 7.08929107284e-03 7.08929107284e-03 1.00194370256e-02 1.67257046016e-02 2.45905634624e-02 + 3.62873182074e-02 4.27231306029e-02 4.46676835001e-02 + 5.61335799375e-02 5.23936115453e-02 4.57138189196e-02 3.62873182074e-02 2.71142914004e-02 2.09853466063e-02 + 1.64170481704e-02 1.43763201712e-02 1.64170481704e-02 2.09853466063e-02 2.71142914004e-02 3.62873182074e-02 + 4.57138189196e-02 5.23936115453e-02 5.61335799375e-02 + 6.46788103129e-02 5.23936115453e-02 4.27231306029e-02 3.66436362392e-02 3.18895470196e-02 2.94734728104e-02 + 2.78871820412e-02 2.78871820412e-02 2.94734728104e-02 3.18895470196e-02 3.66436362392e-02 4.27231306029e-02 + 5.23936115453e-02 6.46788103129e-02 7.10707876951e-02 + 5.61335799375e-02 4.46676835001e-02 3.72212996136e-02 3.70588268986e-02 4.31689270135e-02 4.49581105718e-02 + 4.78620662790e-02 4.49581105718e-02 4.31689270135e-02 3.70588268986e-02 3.72212996136e-02 4.46676835001e-02 + 5.61335799375e-02 7.10707876951e-02 7.10707876951e-02 + 3.72920735613e-02 3.78194924587e-02 4.30811551462e-02 5.15953878901e-02 7.23281111668e-02 8.49232065105e-02 + 7.23281111668e-02 5.15953878901e-02 4.30811551462e-02 3.78194924587e-02 3.72920735613e-02 3.85875039457e-02 + 3.97809938382e-02 3.97809938382e-02 3.85875039457e-02 + 3.78194924587e-02 4.32649438817e-02 5.41698533623e-02 8.90053073193e-02 1.28883911425e-01 1.28883911425e-01 + 8.90053073193e-02 5.41698533623e-02 4.32649438817e-02 3.78194924587e-02 3.60022233749e-02 3.49506556165e-02 + 3.70994631101e-02 3.49506556165e-02 3.60022233749e-02 + 4.30811551462e-02 5.41698533623e-02 9.32262743675e-02 1.55893621190e-01 1.78937466321e-01 1.55893621190e-01 + 9.32262743675e-02 5.41698533623e-02 4.30811551462e-02 3.54179538479e-02 3.30817407316e-02 3.00019977593e-02 + 3.00019977593e-02 3.30817407316e-02 3.54179538479e-02 + 5.15953878901e-02 8.90053073193e-02 1.55893621190e-01 1.65125441372e-01 1.65125441372e-01 1.55893621190e-01 + 8.90053073193e-02 5.15953878901e-02 3.88199146511e-02 3.00331874093e-02 2.47929678075e-02 2.24956267167e-02 + 2.47929678075e-02 3.00331874093e-02 3.88199146511e-02 + 7.23281111668e-02 1.28883911425e-01 1.78937466321e-01 1.65125441372e-01 1.78937466321e-01 1.28883911425e-01 + 7.23281111668e-02 4.49581105718e-02 2.94734728104e-02 2.09853466063e-02 1.67257046016e-02 1.67257046016e-02 + 2.09853466063e-02 2.94734728104e-02 4.49581105718e-02 + 8.49232065105e-02 1.28883911425e-01 1.55893621190e-01 1.55893621190e-01 1.28883911425e-01 8.49232065105e-02 + 5.02965815685e-02 3.02094126272e-02 1.68972398574e-02 1.09153312429e-02 9.07395147277e-03 1.09153312429e-02 + 1.68972398574e-02 3.02094126272e-02 5.02965815685e-02 + 7.23281111668e-02 8.90053073193e-02 9.32262743675e-02 8.90053073193e-02 7.23281111668e-02 5.02965815685e-02 + 2.97058195093e-02 1.56734539515e-02 8.96019182257e-03 5.26506660326e-03 5.26506660326e-03 8.96019182257e-03 + 1.56734539515e-02 2.97058195093e-02 5.02965815685e-02 + 5.15953878901e-02 5.41698533623e-02 5.41698533623e-02 5.15953878901e-02 4.49581105718e-02 3.02094126272e-02 + 1.56734539515e-02 7.32490142478e-03 3.29271151918e-03 2.09418534593e-03 3.29271151918e-03 7.32490142478e-03 + 1.56734539515e-02 3.02094126272e-02 4.49581105718e-02 + 4.30811551462e-02 4.32649438817e-02 4.30811551462e-02 3.88199146511e-02 2.94734728104e-02 1.68972398574e-02 + 8.96019182257e-03 3.29271151918e-03 1.38542142842e-03 1.38542142842e-03 3.29271151918e-03 8.96019182257e-03 + 1.68972398574e-02 2.94734728104e-02 3.88199146511e-02 + 3.78194924587e-02 3.78194924587e-02 3.54179538479e-02 3.00331874093e-02 2.09853466063e-02 1.09153312429e-02 + 5.26506660326e-03 2.09418534593e-03 1.38542142842e-03 2.09418534593e-03 5.26506660326e-03 1.09153312429e-02 + 2.09853466063e-02 3.00331874093e-02 3.54179538479e-02 + 3.72920735613e-02 3.60022233749e-02 3.30817407316e-02 2.47929678075e-02 1.67257046016e-02 9.07395147277e-03 + 5.26506660326e-03 3.29271151918e-03 3.29271151918e-03 5.26506660326e-03 9.07395147277e-03 1.67257046016e-02 + 2.47929678075e-02 3.30817407316e-02 3.60022233749e-02 + 3.85875039457e-02 3.49506556165e-02 3.00019977593e-02 2.24956267167e-02 1.67257046016e-02 1.09153312429e-02 + 8.96019182257e-03 7.32490142478e-03 8.96019182257e-03 1.09153312429e-02 1.67257046016e-02 2.24956267167e-02 + 3.00019977593e-02 3.49506556165e-02 3.85875039457e-02 + 3.97809938382e-02 3.70994631101e-02 3.00019977593e-02 2.47929678075e-02 2.09853466063e-02 1.68972398574e-02 + 1.56734539515e-02 1.56734539515e-02 1.68972398574e-02 2.09853466063e-02 2.47929678075e-02 3.00019977593e-02 + 3.70994631101e-02 3.97809938382e-02 4.24295300017e-02 + 3.97809938382e-02 3.49506556165e-02 3.30817407316e-02 3.00331874093e-02 2.94734728104e-02 3.02094126272e-02 + 2.97058195093e-02 3.02094126272e-02 2.94734728104e-02 3.00331874093e-02 3.30817407316e-02 3.49506556165e-02 + 3.97809938382e-02 4.45611403771e-02 4.45611403771e-02 + 3.85875039457e-02 3.60022233749e-02 3.54179538479e-02 3.88199146511e-02 4.49581105718e-02 5.02965815685e-02 + 5.02965815685e-02 4.49581105718e-02 3.88199146511e-02 3.54179538479e-02 3.60022233749e-02 3.85875039457e-02 + 4.24295300017e-02 4.45611403771e-02 4.24295300017e-02 + 3.18085146238e-02 4.02222959331e-02 5.01938086050e-02 6.40797263891e-02 7.23281111668e-02 7.23281111668e-02 + 6.40797263891e-02 5.01938086050e-02 4.02222959331e-02 3.18085146238e-02 2.77237360128e-02 2.42768838976e-02 + 2.38593064853e-02 2.42768838976e-02 2.77237360128e-02 + 4.02222959331e-02 5.27225154807e-02 7.22755322173e-02 8.90053073193e-02 9.62989068912e-02 8.90053073193e-02 + 7.22755322173e-02 5.27225154807e-02 4.02222959331e-02 3.08604739677e-02 2.43879073207e-02 2.13888507874e-02 + 2.13888507874e-02 2.43879073207e-02 3.08604739677e-02 + 5.01938086050e-02 7.22755322173e-02 9.32262743675e-02 9.58701888529e-02 9.58701888529e-02 9.32262743675e-02 + 7.22755322173e-02 5.01938086050e-02 3.49314010620e-02 2.55149658819e-02 1.86401066199e-02 1.63183576357e-02 + 1.86401066199e-02 2.55149658819e-02 3.49314010620e-02 + 6.40797263891e-02 8.90053073193e-02 9.58701888529e-02 6.76894902970e-02 9.58701888529e-02 8.90053073193e-02 + 6.40797263891e-02 4.06623304521e-02 2.56772132883e-02 1.73142648442e-02 1.28060436295e-02 1.28060436295e-02 + 1.73142648442e-02 2.56772132883e-02 4.06623304521e-02 + 7.23281111668e-02 9.62989068912e-02 9.58701888529e-02 9.58701888529e-02 9.62989068912e-02 7.23281111668e-02 + 4.78620662790e-02 2.78871820412e-02 1.64170481704e-02 1.00194370256e-02 8.33783116227e-03 1.00194370256e-02 + 1.64170481704e-02 2.78871820412e-02 4.78620662790e-02 + 7.23281111668e-02 8.90053073193e-02 9.32262743675e-02 8.90053073193e-02 7.23281111668e-02 5.02965815685e-02 + 2.97058195093e-02 1.56734539515e-02 8.96019182257e-03 5.26506660326e-03 5.26506660326e-03 8.96019182257e-03 + 1.56734539515e-02 2.97058195093e-02 5.02965815685e-02 + 6.40797263891e-02 7.22755322173e-02 7.22755322173e-02 6.40797263891e-02 4.78620662790e-02 2.97058195093e-02 + 1.53666013085e-02 7.66605713530e-03 3.60269726266e-03 2.68920014434e-03 3.60269726266e-03 7.66605713530e-03 + 1.53666013085e-02 2.97058195093e-02 4.78620662790e-02 + 5.01938086050e-02 5.27225154807e-02 5.01938086050e-02 4.06623304521e-02 2.78871820412e-02 1.56734539515e-02 + 7.66605713530e-03 2.63663327441e-03 1.11118867375e-03 1.11118867375e-03 2.63663327441e-03 7.66605713530e-03 + 1.56734539515e-02 2.78871820412e-02 4.06623304521e-02 + 4.02222959331e-02 4.02222959331e-02 3.49314010620e-02 2.56772132883e-02 1.64170481704e-02 8.96019182257e-03 + 3.60269726266e-03 1.11118867375e-03 5.28120831661e-04 1.11118867375e-03 3.60269726266e-03 8.96019182257e-03 + 1.64170481704e-02 2.56772132883e-02 3.49314010620e-02 + 3.18085146238e-02 3.08604739677e-02 2.55149658819e-02 1.73142648442e-02 1.00194370256e-02 5.26506660326e-03 + 2.68920014434e-03 1.11118867375e-03 1.11118867375e-03 2.68920014434e-03 5.26506660326e-03 1.00194370256e-02 + 1.73142648442e-02 2.55149658819e-02 3.08604739677e-02 + 2.77237360128e-02 2.43879073207e-02 1.86401066199e-02 1.28060436295e-02 8.33783116227e-03 5.26506660326e-03 + 3.60269726266e-03 2.63663327441e-03 3.60269726266e-03 5.26506660326e-03 8.33783116227e-03 1.28060436295e-02 + 1.86401066199e-02 2.43879073207e-02 2.77237360128e-02 + 2.42768838976e-02 2.13888507874e-02 1.63183576357e-02 1.28060436295e-02 1.00194370256e-02 8.96019182257e-03 + 7.66605713530e-03 7.66605713530e-03 8.96019182257e-03 1.00194370256e-02 1.28060436295e-02 1.63183576357e-02 + 2.13888507874e-02 2.42768838976e-02 2.61642583587e-02 + 2.38593064853e-02 2.13888507874e-02 1.86401066199e-02 1.73142648442e-02 1.64170481704e-02 1.56734539515e-02 + 1.53666013085e-02 1.56734539515e-02 1.64170481704e-02 1.73142648442e-02 1.86401066199e-02 2.13888507874e-02 + 2.38593064853e-02 2.49875482035e-02 2.49875482035e-02 + 2.42768838976e-02 2.43879073207e-02 2.55149658819e-02 2.56772132883e-02 2.78871820412e-02 2.97058195093e-02 + 2.97058195093e-02 2.78871820412e-02 2.56772132883e-02 2.55149658819e-02 2.43879073207e-02 2.42768838976e-02 + 2.49875482035e-02 2.65236093943e-02 2.49875482035e-02 + 2.77237360128e-02 3.08604739677e-02 3.49314010620e-02 4.06623304521e-02 4.78620662790e-02 5.02965815685e-02 + 4.78620662790e-02 4.06623304521e-02 3.49314010620e-02 3.08604739677e-02 2.77237360128e-02 2.61642583587e-02 + 2.49875482035e-02 2.49875482035e-02 2.61642583587e-02 + 2.99172055199e-02 4.34116802001e-02 5.01938086050e-02 5.15953878901e-02 5.77610358000e-02 5.15953878901e-02 + 5.01938086050e-02 4.34116802001e-02 2.99172055199e-02 2.21844351566e-02 1.56599181080e-02 1.25503014842e-02 + 1.25503014842e-02 1.56599181080e-02 2.21844351566e-02 + 4.34116802001e-02 5.27225154807e-02 5.41698533623e-02 5.21992902722e-02 5.21992902722e-02 5.41698533623e-02 + 5.27225154807e-02 4.34116802001e-02 2.79666745937e-02 1.78991060313e-02 1.23746382387e-02 9.66467351917e-03 + 1.23746382387e-02 1.78991060313e-02 2.79666745937e-02 + 5.01938086050e-02 5.41698533623e-02 4.60292144819e-02 3.36135559891e-02 4.60292144819e-02 5.41698533623e-02 + 5.01938086050e-02 3.55073021064e-02 2.15005775831e-02 1.24898667953e-02 8.27412039851e-03 8.27412039851e-03 + 1.24898667953e-02 2.15005775831e-02 3.55073021064e-02 + 5.15953878901e-02 5.21992902722e-02 3.36135559891e-02 3.36135559891e-02 5.21992902722e-02 5.15953878901e-02 + 4.06623304521e-02 2.60569281693e-02 1.40094656991e-02 7.35387417276e-03 5.53145518161e-03 7.35387417276e-03 + 1.40094656991e-02 2.60569281693e-02 4.06623304521e-02 + 5.77610358000e-02 5.21992902722e-02 4.60292144819e-02 5.21992902722e-02 5.77610358000e-02 4.49581105718e-02 + 2.78871820412e-02 1.43763201712e-02 7.08929107284e-03 3.65259578883e-03 3.65259578883e-03 7.08929107284e-03 + 1.43763201712e-02 2.78871820412e-02 4.49581105718e-02 + 5.15953878901e-02 5.41698533623e-02 5.41698533623e-02 5.15953878901e-02 4.49581105718e-02 3.02094126272e-02 + 1.56734539515e-02 7.32490142478e-03 3.29271151918e-03 2.09418534593e-03 3.29271151918e-03 7.32490142478e-03 + 1.56734539515e-02 3.02094126272e-02 4.49581105718e-02 + 5.01938086050e-02 5.27225154807e-02 5.01938086050e-02 4.06623304521e-02 2.78871820412e-02 1.56734539515e-02 + 7.66605713530e-03 2.63663327441e-03 1.11118867375e-03 1.11118867375e-03 2.63663327441e-03 7.66605713530e-03 + 1.56734539515e-02 2.78871820412e-02 4.06623304521e-02 + 4.34116802001e-02 4.34116802001e-02 3.55073021064e-02 2.60569281693e-02 1.43763201712e-02 7.32490142479e-03 + 2.63663327441e-03 9.44908409994e-04 3.22484228196e-04 9.44908409994e-04 2.63663327441e-03 7.32490142479e-03 + 1.43763201712e-02 2.60569281693e-02 3.55073021064e-02 + 2.99172055199e-02 2.79666745937e-02 2.15005775831e-02 1.40094656991e-02 7.08929107284e-03 3.29271151918e-03 + 1.11118867375e-03 3.22484228196e-04 3.22484228196e-04 1.11118867375e-03 3.29271151918e-03 7.08929107284e-03 + 1.40094656991e-02 2.15005775831e-02 2.79666745937e-02 + 2.21844351566e-02 1.78991060313e-02 1.24898667953e-02 7.35387417276e-03 3.65259578883e-03 2.09418534593e-03 + 1.11118867375e-03 9.44908409994e-04 1.11118867375e-03 2.09418534593e-03 3.65259578883e-03 7.35387417276e-03 + 1.24898667953e-02 1.78991060313e-02 2.21844351566e-02 + 1.56599181080e-02 1.23746382387e-02 8.27412039851e-03 5.53145518161e-03 3.65259578883e-03 3.29271151918e-03 + 2.63663327441e-03 2.63663327441e-03 3.29271151918e-03 3.65259578883e-03 5.53145518161e-03 8.27412039851e-03 + 1.23746382387e-02 1.56599181080e-02 1.79880069490e-02 + 1.25503014842e-02 9.66467351917e-03 8.27412039851e-03 7.35387417276e-03 7.08929107284e-03 7.32490142478e-03 + 7.66605713530e-03 7.32490142478e-03 7.08929107284e-03 7.35387417276e-03 8.27412039851e-03 9.66467351917e-03 + 1.25503014842e-02 1.49627569580e-02 1.49627569580e-02 + 1.25503014842e-02 1.23746382387e-02 1.24898667953e-02 1.40094656991e-02 1.43763201712e-02 1.56734539515e-02 + 1.56734539515e-02 1.43763201712e-02 1.40094656991e-02 1.24898667953e-02 1.23746382387e-02 1.25503014842e-02 + 1.36231130391e-02 1.31818719408e-02 1.36231130391e-02 + 1.56599181080e-02 1.78991060313e-02 2.15005775831e-02 2.60569281693e-02 2.78871820412e-02 3.02094126272e-02 + 2.78871820412e-02 2.60569281693e-02 2.15005775831e-02 1.78991060313e-02 1.56599181080e-02 1.49627569580e-02 + 1.31818719408e-02 1.31818719408e-02 1.49627569580e-02 + 2.21844351566e-02 2.79666745937e-02 3.55073021064e-02 4.06623304521e-02 4.49581105718e-02 4.49581105718e-02 + 4.06623304521e-02 3.55073021064e-02 2.79666745937e-02 2.21844351566e-02 1.79880069490e-02 1.49627569580e-02 + 1.36231130391e-02 1.49627569580e-02 1.79880069490e-02 + 2.99172055199e-02 4.02222959331e-02 4.30811551462e-02 3.92607806531e-02 3.92607806531e-02 4.30811551462e-02 + 4.02222959331e-02 2.99172055199e-02 1.95071574201e-02 1.13646063453e-02 6.70218401668e-03 4.59069441377e-03 + 6.70218401668e-03 1.13646063453e-02 1.95071574201e-02 + 4.02222959331e-02 4.32649438817e-02 3.18433510883e-02 2.47958446021e-02 3.18433510883e-02 4.32649438817e-02 + 4.02222959331e-02 2.79666745937e-02 1.52963446205e-02 7.92513025055e-03 3.86875558844e-03 3.86875558844e-03 + 7.92513025055e-03 1.52963446205e-02 2.79666745937e-02 + 4.30811551462e-02 3.18433510883e-02 1.22283197111e-02 1.22283197111e-02 3.18433510883e-02 4.30811551462e-02 + 3.49314010620e-02 2.15005775831e-02 9.79121310155e-03 4.02268913133e-03 2.15067339004e-03 4.02268913133e-03 + 9.79121310155e-03 2.15005775831e-02 3.49314010620e-02 + 3.92607806531e-02 2.47958446021e-02 1.22283197111e-02 2.47958446021e-02 3.92607806531e-02 3.88199146511e-02 + 2.56772132883e-02 1.40094656991e-02 5.18295256070e-03 1.64102393395e-03 1.64102393395e-03 5.18295256070e-03 + 1.40094656991e-02 2.56772132883e-02 3.88199146511e-02 + 3.92607806531e-02 3.18433510883e-02 3.18433510883e-02 3.92607806531e-02 4.31689270135e-02 2.94734728104e-02 + 1.64170481704e-02 7.08929107284e-03 2.06279931440e-03 7.49011933950e-04 2.06279931440e-03 7.08929107284e-03 + 1.64170481704e-02 2.94734728104e-02 4.31689270135e-02 + 4.30811551462e-02 4.32649438817e-02 4.30811551462e-02 3.88199146511e-02 2.94734728104e-02 1.68972398574e-02 + 8.96019182257e-03 3.29271151918e-03 1.38542142842e-03 1.38542142842e-03 3.29271151918e-03 8.96019182257e-03 + 1.68972398574e-02 2.94734728104e-02 3.88199146511e-02 + 4.02222959331e-02 4.02222959331e-02 3.49314010620e-02 2.56772132883e-02 1.64170481704e-02 8.96019182257e-03 + 3.60269726266e-03 1.11118867375e-03 5.28120831661e-04 1.11118867375e-03 3.60269726266e-03 8.96019182257e-03 + 1.64170481704e-02 2.56772132883e-02 3.49314010620e-02 + 2.99172055199e-02 2.79666745937e-02 2.15005775831e-02 1.40094656991e-02 7.08929107284e-03 3.29271151918e-03 + 1.11118867375e-03 3.22484228196e-04 3.22484228196e-04 1.11118867375e-03 3.29271151918e-03 7.08929107284e-03 + 1.40094656991e-02 2.15005775831e-02 2.79666745937e-02 + 1.95071574201e-02 1.52963446205e-02 9.79121310155e-03 5.18295256070e-03 2.06279931440e-03 1.38542142842e-03 + 5.28120831661e-04 3.22484228196e-04 5.28120831661e-04 1.38542142842e-03 2.06279931440e-03 5.18295256070e-03 + 9.79121310155e-03 1.52963446205e-02 1.95071574201e-02 + 1.13646063453e-02 7.92513025055e-03 4.02268913133e-03 1.64102393395e-03 7.49011933950e-04 1.38542142842e-03 + 1.11118867375e-03 1.11118867375e-03 1.38542142842e-03 7.49011933950e-04 1.64102393395e-03 4.02268913133e-03 + 7.92513025055e-03 1.13646063453e-02 1.40786159428e-02 + 6.70218401668e-03 3.86875558844e-03 2.15067339004e-03 1.64102393395e-03 2.06279931440e-03 3.29271151918e-03 + 3.60269726266e-03 3.29271151918e-03 2.06279931440e-03 1.64102393395e-03 2.15067339004e-03 3.86875558844e-03 + 6.70218401668e-03 8.64523106293e-03 8.64523106293e-03 + 4.59069441377e-03 3.86875558844e-03 4.02268913133e-03 5.18295256070e-03 7.08929107284e-03 8.96019182257e-03 + 8.96019182257e-03 7.08929107284e-03 5.18295256070e-03 4.02268913133e-03 3.86875558844e-03 4.59069441377e-03 + 6.75138246715e-03 6.84444382539e-03 6.75138246715e-03 + 6.70218401668e-03 7.92513025055e-03 9.79121310155e-03 1.40094656991e-02 1.64170481704e-02 1.68972398574e-02 + 1.64170481704e-02 1.40094656991e-02 9.79121310155e-03 7.92513025055e-03 6.70218401668e-03 6.75138246715e-03 + 5.80050554995e-03 5.80050554995e-03 6.75138246715e-03 + 1.13646063453e-02 1.52963446205e-02 2.15005775831e-02 2.56772132883e-02 2.94734728104e-02 2.94734728104e-02 + 2.56772132883e-02 2.15005775831e-02 1.52963446205e-02 1.13646063453e-02 8.64523106293e-03 6.84444382539e-03 + 5.80050554995e-03 6.84444382539e-03 8.64523106293e-03 + 1.95071574201e-02 2.79666745937e-02 3.49314010620e-02 3.88199146511e-02 4.31689270135e-02 3.88199146511e-02 + 3.49314010620e-02 2.79666745937e-02 1.95071574201e-02 1.40786159428e-02 8.64523106293e-03 6.75138246715e-03 + 6.75138246715e-03 8.64523106293e-03 1.40786159428e-02 + 3.18085146238e-02 3.78194924587e-02 3.16578904846e-02 2.77650059484e-02 3.16578904846e-02 3.78194924587e-02 + 3.18085146238e-02 2.21844351566e-02 1.13646063453e-02 5.11954914432e-03 1.60658688370e-03 1.60658688370e-03 + 5.11954914432e-03 1.13646063453e-02 2.21844351566e-02 + 3.78194924587e-02 2.80289195955e-02 1.45740503756e-02 1.45740503756e-02 2.80289195955e-02 3.78194924587e-02 + 3.08604739677e-02 1.78991060313e-02 7.92513025055e-03 2.15869962360e-03 6.20007891972e-04 2.15869962360e-03 + 7.92513025055e-03 1.78991060313e-02 3.08604739677e-02 + 3.16578904846e-02 1.45740503756e-02 5.88407505951e-04 1.45740503756e-02 3.16578904846e-02 3.54179538479e-02 + 2.55149658819e-02 1.24898667953e-02 4.02268913133e-03 5.43091896583e-04 5.43091896583e-04 4.02268913133e-03 + 1.24898667953e-02 2.55149658819e-02 3.54179538479e-02 + 2.77650059484e-02 1.45740503756e-02 1.45740503756e-02 2.77650059484e-02 3.70588268986e-02 3.00331874093e-02 + 1.73142648442e-02 7.35387417276e-03 1.64102393395e-03 1.47520974601e-04 1.64102393395e-03 7.35387417276e-03 + 1.73142648442e-02 3.00331874093e-02 3.70588268986e-02 + 3.16578904846e-02 2.80289195955e-02 3.16578904846e-02 3.70588268986e-02 3.18895470196e-02 2.09853466063e-02 + 1.00194370256e-02 3.65259578883e-03 7.49011933950e-04 7.49011933950e-04 3.65259578883e-03 1.00194370256e-02 + 2.09853466063e-02 3.18895470196e-02 3.70588268986e-02 + 3.78194924587e-02 3.78194924587e-02 3.54179538479e-02 3.00331874093e-02 2.09853466063e-02 1.09153312429e-02 + 5.26506660326e-03 2.09418534593e-03 1.38542142842e-03 2.09418534593e-03 5.26506660326e-03 1.09153312429e-02 + 2.09853466063e-02 3.00331874093e-02 3.54179538479e-02 + 3.18085146238e-02 3.08604739677e-02 2.55149658819e-02 1.73142648442e-02 1.00194370256e-02 5.26506660326e-03 + 2.68920014434e-03 1.11118867375e-03 1.11118867375e-03 2.68920014434e-03 5.26506660326e-03 1.00194370256e-02 + 1.73142648442e-02 2.55149658819e-02 3.08604739677e-02 + 2.21844351566e-02 1.78991060313e-02 1.24898667953e-02 7.35387417276e-03 3.65259578883e-03 2.09418534593e-03 + 1.11118867375e-03 9.44908409994e-04 1.11118867375e-03 2.09418534593e-03 3.65259578883e-03 7.35387417276e-03 + 1.24898667953e-02 1.78991060313e-02 2.21844351566e-02 + 1.13646063453e-02 7.92513025055e-03 4.02268913133e-03 1.64102393395e-03 7.49011933950e-04 1.38542142842e-03 + 1.11118867375e-03 1.11118867375e-03 1.38542142842e-03 7.49011933950e-04 1.64102393395e-03 4.02268913133e-03 + 7.92513025055e-03 1.13646063453e-02 1.40786159428e-02 + 5.11954914432e-03 2.15869962360e-03 5.43091896583e-04 1.47520974601e-04 7.49011933950e-04 2.09418534593e-03 + 2.68920014434e-03 2.09418534593e-03 7.49011933950e-04 1.47520974601e-04 5.43091896583e-04 2.15869962360e-03 + 5.11954914432e-03 7.01813743887e-03 7.01813743887e-03 + 1.60658688370e-03 6.20007891972e-04 5.43091896583e-04 1.64102393395e-03 3.65259578883e-03 5.26506660326e-03 + 5.26506660326e-03 3.65259578883e-03 1.64102393395e-03 5.43091896583e-04 6.20007891972e-04 1.60658688370e-03 + 3.53006767470e-03 4.09661395937e-03 3.53006767470e-03 + 1.60658688370e-03 2.15869962360e-03 4.02268913133e-03 7.35387417276e-03 1.00194370256e-02 1.09153312429e-02 + 1.00194370256e-02 7.35387417276e-03 4.02268913133e-03 2.15869962360e-03 1.60658688370e-03 2.37456788896e-03 + 2.19087193687e-03 2.19087193687e-03 2.37456788896e-03 + 5.11954914432e-03 7.92513025055e-03 1.24898667953e-02 1.73142648442e-02 2.09853466063e-02 2.09853466063e-02 + 1.73142648442e-02 1.24898667953e-02 7.92513025055e-03 5.11954914432e-03 3.53006767470e-03 2.19087193687e-03 + 2.26732755529e-03 2.19087193687e-03 3.53006767470e-03 + 1.13646063453e-02 1.78991060313e-02 2.55149658819e-02 3.00331874093e-02 3.18895470196e-02 3.00331874093e-02 + 2.55149658819e-02 1.78991060313e-02 1.13646063453e-02 7.01813743887e-03 4.09661395937e-03 2.19087193687e-03 + 2.19087193687e-03 4.09661395937e-03 7.01813743887e-03 + 2.21844351566e-02 3.08604739677e-02 3.54179538479e-02 3.70588268986e-02 3.70588268986e-02 3.54179538479e-02 + 3.08604739677e-02 2.21844351566e-02 1.40786159428e-02 7.01813743887e-03 3.53006767470e-03 2.37456788896e-03 + 3.53006767470e-03 7.01813743887e-03 1.40786159428e-02 + 3.72920735613e-02 3.42073290623e-02 2.56381222091e-02 2.56381222091e-02 3.42073290623e-02 3.72920735613e-02 + 2.77237360128e-02 1.56599181080e-02 6.70218401668e-03 1.60658688370e-03 2.99179150647e-04 1.60658688370e-03 + 6.70218401668e-03 1.56599181080e-02 2.77237360128e-02 + 3.42073290623e-02 1.76415461442e-02 7.66046977902e-03 1.76415461442e-02 3.42073290623e-02 3.60022233749e-02 + 2.43879073207e-02 1.23746382387e-02 3.86875558844e-03 6.20007891972e-04 6.20007891972e-04 3.86875558844e-03 + 1.23746382387e-02 2.43879073207e-02 3.60022233749e-02 + 2.56381222091e-02 7.66046977902e-03 7.66046977902e-03 2.56381222091e-02 3.72212996136e-02 3.30817407316e-02 + 1.86401066199e-02 8.27412039851e-03 2.15067339004e-03 5.43091896583e-04 2.15067339004e-03 8.27412039851e-03 + 1.86401066199e-02 3.30817407316e-02 3.72212996136e-02 + 2.56381222091e-02 1.76415461442e-02 2.56381222091e-02 3.74646524133e-02 3.66436362392e-02 2.47929678075e-02 + 1.28060436295e-02 5.53145518161e-03 1.64102393395e-03 1.64102393395e-03 5.53145518161e-03 1.28060436295e-02 + 2.47929678075e-02 3.66436362392e-02 3.74646524133e-02 + 3.42073290623e-02 3.42073290623e-02 3.72212996136e-02 3.66436362392e-02 2.71142914004e-02 1.67257046016e-02 + 8.33783116227e-03 3.65259578883e-03 2.06279931440e-03 3.65259578883e-03 8.33783116227e-03 1.67257046016e-02 + 2.71142914004e-02 3.66436362392e-02 3.72212996136e-02 + 3.72920735613e-02 3.60022233749e-02 3.30817407316e-02 2.47929678075e-02 1.67257046016e-02 9.07395147277e-03 + 5.26506660326e-03 3.29271151918e-03 3.29271151918e-03 5.26506660326e-03 9.07395147277e-03 1.67257046016e-02 + 2.47929678075e-02 3.30817407316e-02 3.60022233749e-02 + 2.77237360128e-02 2.43879073207e-02 1.86401066199e-02 1.28060436295e-02 8.33783116227e-03 5.26506660326e-03 + 3.60269726266e-03 2.63663327441e-03 3.60269726266e-03 5.26506660326e-03 8.33783116227e-03 1.28060436295e-02 + 1.86401066199e-02 2.43879073207e-02 2.77237360128e-02 + 1.56599181080e-02 1.23746382387e-02 8.27412039851e-03 5.53145518161e-03 3.65259578883e-03 3.29271151918e-03 + 2.63663327441e-03 2.63663327441e-03 3.29271151918e-03 3.65259578883e-03 5.53145518161e-03 8.27412039851e-03 + 1.23746382387e-02 1.56599181080e-02 1.79880069490e-02 + 6.70218401668e-03 3.86875558844e-03 2.15067339004e-03 1.64102393395e-03 2.06279931440e-03 3.29271151918e-03 + 3.60269726266e-03 3.29271151918e-03 2.06279931440e-03 1.64102393395e-03 2.15067339004e-03 3.86875558844e-03 + 6.70218401668e-03 8.64523106293e-03 8.64523106293e-03 + 1.60658688370e-03 6.20007891972e-04 5.43091896583e-04 1.64102393395e-03 3.65259578883e-03 5.26506660326e-03 + 5.26506660326e-03 3.65259578883e-03 1.64102393395e-03 5.43091896583e-04 6.20007891972e-04 1.60658688370e-03 + 3.53006767470e-03 4.09661395937e-03 3.53006767470e-03 + 2.99179150647e-04 6.20007891972e-04 2.15067339004e-03 5.53145518161e-03 8.33783116227e-03 9.07395147277e-03 + 8.33783116227e-03 5.53145518161e-03 2.15067339004e-03 6.20007891972e-04 2.99179150647e-04 1.09356208174e-03 + 1.38503345990e-03 1.38503345990e-03 1.09356208174e-03 + 1.60658688370e-03 3.86875558844e-03 8.27412039851e-03 1.28060436295e-02 1.67257046016e-02 1.67257046016e-02 + 1.28060436295e-02 8.27412039851e-03 3.86875558844e-03 1.60658688370e-03 1.09356208174e-03 7.14663240551e-04 + 7.65589594291e-04 7.14663240551e-04 1.09356208174e-03 + 6.70218401668e-03 1.23746382387e-02 1.86401066199e-02 2.47929678075e-02 2.71142914004e-02 2.47929678075e-02 + 1.86401066199e-02 1.23746382387e-02 6.70218401668e-03 3.53006767470e-03 1.38503345990e-03 7.65589594291e-04 + 7.65589594291e-04 1.38503345990e-03 3.53006767470e-03 + 1.56599181080e-02 2.43879073207e-02 3.30817407316e-02 3.66436362392e-02 3.66436362392e-02 3.30817407316e-02 + 2.43879073207e-02 1.56599181080e-02 8.64523106293e-03 4.09661395937e-03 1.38503345990e-03 7.14663240551e-04 + 1.38503345990e-03 4.09661395937e-03 8.64523106293e-03 + 2.77237360128e-02 3.60022233749e-02 3.72212996136e-02 3.74646524133e-02 3.72212996136e-02 3.60022233749e-02 + 2.77237360128e-02 1.79880069490e-02 8.64523106293e-03 3.53006767470e-03 1.09356208174e-03 1.09356208174e-03 + 3.53006767470e-03 8.64523106293e-03 1.79880069490e-02 + 4.77193978469e-02 3.50294268557e-02 2.76155885440e-02 3.50294268557e-02 4.77193978469e-02 3.85875039457e-02 + 2.42768838976e-02 1.25503014842e-02 4.59069441377e-03 1.60658688370e-03 1.60658688370e-03 4.59069441377e-03 + 1.25503014842e-02 2.42768838976e-02 3.85875039457e-02 + 3.50294268557e-02 1.55091198600e-02 1.55091198600e-02 3.50294268557e-02 4.46676835001e-02 3.49506556165e-02 + 2.13888507874e-02 9.66467351917e-03 3.86875558844e-03 2.15869962360e-03 3.86875558844e-03 9.66467351917e-03 + 2.13888507874e-02 3.49506556165e-02 4.46676835001e-02 + 2.76155885440e-02 1.55091198600e-02 2.76155885440e-02 4.40351969320e-02 4.27231306029e-02 3.00019977593e-02 + 1.63183576357e-02 8.27412039851e-03 4.02268913133e-03 4.02268913133e-03 8.27412039851e-03 1.63183576357e-02 + 3.00019977593e-02 4.27231306029e-02 4.40351969320e-02 + 3.50294268557e-02 3.50294268557e-02 4.40351969320e-02 4.48502710858e-02 3.62873182074e-02 2.24956267167e-02 + 1.28060436295e-02 7.35387417276e-03 5.18295256070e-03 7.35387417276e-03 1.28060436295e-02 2.24956267167e-02 + 3.62873182074e-02 4.48502710858e-02 4.40351969320e-02 + 4.77193978469e-02 4.46676835001e-02 4.27231306029e-02 3.62873182074e-02 2.45905634624e-02 1.67257046016e-02 + 1.00194370256e-02 7.08929107284e-03 7.08929107284e-03 1.00194370256e-02 1.67257046016e-02 2.45905634624e-02 + 3.62873182074e-02 4.27231306029e-02 4.46676835001e-02 + 3.85875039457e-02 3.49506556165e-02 3.00019977593e-02 2.24956267167e-02 1.67257046016e-02 1.09153312429e-02 + 8.96019182257e-03 7.32490142478e-03 8.96019182257e-03 1.09153312429e-02 1.67257046016e-02 2.24956267167e-02 + 3.00019977593e-02 3.49506556165e-02 3.85875039457e-02 + 2.42768838976e-02 2.13888507874e-02 1.63183576357e-02 1.28060436295e-02 1.00194370256e-02 8.96019182257e-03 + 7.66605713530e-03 7.66605713530e-03 8.96019182257e-03 1.00194370256e-02 1.28060436295e-02 1.63183576357e-02 + 2.13888507874e-02 2.42768838976e-02 2.61642583587e-02 + 1.25503014842e-02 9.66467351917e-03 8.27412039851e-03 7.35387417276e-03 7.08929107284e-03 7.32490142478e-03 + 7.66605713530e-03 7.32490142478e-03 7.08929107284e-03 7.35387417276e-03 8.27412039851e-03 9.66467351917e-03 + 1.25503014842e-02 1.49627569580e-02 1.49627569580e-02 + 4.59069441377e-03 3.86875558844e-03 4.02268913133e-03 5.18295256070e-03 7.08929107284e-03 8.96019182257e-03 + 8.96019182257e-03 7.08929107284e-03 5.18295256070e-03 4.02268913133e-03 3.86875558844e-03 4.59069441377e-03 + 6.75138246715e-03 6.84444382539e-03 6.75138246715e-03 + 1.60658688370e-03 2.15869962360e-03 4.02268913133e-03 7.35387417276e-03 1.00194370256e-02 1.09153312429e-02 + 1.00194370256e-02 7.35387417276e-03 4.02268913133e-03 2.15869962360e-03 1.60658688370e-03 2.37456788896e-03 + 2.19087193687e-03 2.19087193687e-03 2.37456788896e-03 + 1.60658688370e-03 3.86875558844e-03 8.27412039851e-03 1.28060436295e-02 1.67257046016e-02 1.67257046016e-02 + 1.28060436295e-02 8.27412039851e-03 3.86875558844e-03 1.60658688370e-03 1.09356208174e-03 7.14663240551e-04 + 7.65589594291e-04 7.14663240551e-04 1.09356208174e-03 + 4.59069441377e-03 9.66467351917e-03 1.63183576357e-02 2.24956267167e-02 2.45905634624e-02 2.24956267167e-02 + 1.63183576357e-02 9.66467351917e-03 4.59069441377e-03 2.37456788896e-03 7.14663240551e-04 2.93067202991e-04 + 2.93067202991e-04 7.14663240551e-04 2.37456788896e-03 + 1.25503014842e-02 2.13888507874e-02 3.00019977593e-02 3.62873182074e-02 3.62873182074e-02 3.00019977593e-02 + 2.13888507874e-02 1.25503014842e-02 6.75138246715e-03 2.19087193687e-03 7.65589594291e-04 2.93067202991e-04 + 7.65589594291e-04 2.19087193687e-03 6.75138246715e-03 + 2.42768838976e-02 3.49506556165e-02 4.27231306029e-02 4.48502710858e-02 4.27231306029e-02 3.49506556165e-02 + 2.42768838976e-02 1.49627569580e-02 6.84444382539e-03 2.19087193687e-03 7.14663240551e-04 7.14663240551e-04 + 2.19087193687e-03 6.84444382539e-03 1.49627569580e-02 + 3.85875039457e-02 4.46676835001e-02 4.40351969320e-02 4.40351969320e-02 4.46676835001e-02 3.85875039457e-02 + 2.61642583587e-02 1.49627569580e-02 6.75138246715e-03 2.37456788896e-03 1.09356208174e-03 2.37456788896e-03 + 6.75138246715e-03 1.49627569580e-02 2.61642583587e-02 + 6.52691932418e-02 5.03836760403e-02 5.03836760403e-02 6.52691932418e-02 5.61335799375e-02 3.97809938382e-02 + 2.38593064853e-02 1.25503014842e-02 6.70218401668e-03 5.11954914432e-03 6.70218401668e-03 1.25503014842e-02 + 2.38593064853e-02 3.97809938382e-02 5.61335799375e-02 + 5.03836760403e-02 3.75098528213e-02 5.03836760403e-02 5.92235143217e-02 5.23936115453e-02 3.70994631101e-02 + 2.13888507874e-02 1.23746382387e-02 7.92513025055e-03 7.92513025055e-03 1.23746382387e-02 2.13888507874e-02 + 3.70994631101e-02 5.23936115453e-02 5.92235143217e-02 + 5.03836760403e-02 5.03836760403e-02 6.09424067177e-02 5.84769754663e-02 4.57138189196e-02 3.00019977593e-02 + 1.86401066199e-02 1.24898667953e-02 9.79121310155e-03 1.24898667953e-02 1.86401066199e-02 3.00019977593e-02 + 4.57138189196e-02 5.84769754663e-02 6.09424067177e-02 + 6.52691932418e-02 5.92235143217e-02 5.84769754663e-02 5.02634504938e-02 3.62873182074e-02 2.47929678075e-02 + 1.73142648442e-02 1.40094656991e-02 1.40094656991e-02 1.73142648442e-02 2.47929678075e-02 3.62873182074e-02 + 5.02634504938e-02 5.84769754663e-02 5.92235143217e-02 + 5.61335799375e-02 5.23936115453e-02 4.57138189196e-02 3.62873182074e-02 2.71142914004e-02 2.09853466063e-02 + 1.64170481704e-02 1.43763201712e-02 1.64170481704e-02 2.09853466063e-02 2.71142914004e-02 3.62873182074e-02 + 4.57138189196e-02 5.23936115453e-02 5.61335799375e-02 + 3.97809938382e-02 3.70994631101e-02 3.00019977593e-02 2.47929678075e-02 2.09853466063e-02 1.68972398574e-02 + 1.56734539515e-02 1.56734539515e-02 1.68972398574e-02 2.09853466063e-02 2.47929678075e-02 3.00019977593e-02 + 3.70994631101e-02 3.97809938382e-02 4.24295300017e-02 + 2.38593064853e-02 2.13888507874e-02 1.86401066199e-02 1.73142648442e-02 1.64170481704e-02 1.56734539515e-02 + 1.53666013085e-02 1.56734539515e-02 1.64170481704e-02 1.73142648442e-02 1.86401066199e-02 2.13888507874e-02 + 2.38593064853e-02 2.49875482035e-02 2.49875482035e-02 + 1.25503014842e-02 1.23746382387e-02 1.24898667953e-02 1.40094656991e-02 1.43763201712e-02 1.56734539515e-02 + 1.56734539515e-02 1.43763201712e-02 1.40094656991e-02 1.24898667953e-02 1.23746382387e-02 1.25503014842e-02 + 1.36231130391e-02 1.31818719408e-02 1.36231130391e-02 + 6.70218401668e-03 7.92513025055e-03 9.79121310155e-03 1.40094656991e-02 1.64170481704e-02 1.68972398574e-02 + 1.64170481704e-02 1.40094656991e-02 9.79121310155e-03 7.92513025055e-03 6.70218401668e-03 6.75138246715e-03 + 5.80050554995e-03 5.80050554995e-03 6.75138246715e-03 + 5.11954914432e-03 7.92513025055e-03 1.24898667953e-02 1.73142648442e-02 2.09853466063e-02 2.09853466063e-02 + 1.73142648442e-02 1.24898667953e-02 7.92513025055e-03 5.11954914432e-03 3.53006767470e-03 2.19087193687e-03 + 2.26732755529e-03 2.19087193687e-03 3.53006767470e-03 + 6.70218401668e-03 1.23746382387e-02 1.86401066199e-02 2.47929678075e-02 2.71142914004e-02 2.47929678075e-02 + 1.86401066199e-02 1.23746382387e-02 6.70218401668e-03 3.53006767470e-03 1.38503345990e-03 7.65589594291e-04 + 7.65589594291e-04 1.38503345990e-03 3.53006767470e-03 + 1.25503014842e-02 2.13888507874e-02 3.00019977593e-02 3.62873182074e-02 3.62873182074e-02 3.00019977593e-02 + 2.13888507874e-02 1.25503014842e-02 6.75138246715e-03 2.19087193687e-03 7.65589594291e-04 2.93067202991e-04 + 7.65589594291e-04 2.19087193687e-03 6.75138246715e-03 + 2.38593064853e-02 3.70994631101e-02 4.57138189196e-02 5.02634504938e-02 4.57138189196e-02 3.70994631101e-02 + 2.38593064853e-02 1.36231130391e-02 5.80050554995e-03 2.26732755529e-03 7.65589594291e-04 7.65589594291e-04 + 2.26732755529e-03 5.80050554995e-03 1.36231130391e-02 + 3.97809938382e-02 5.23936115453e-02 5.84769754663e-02 5.84769754663e-02 5.23936115453e-02 3.97809938382e-02 + 2.49875482035e-02 1.31818719408e-02 5.80050554995e-03 2.19087193687e-03 1.38503345990e-03 2.19087193687e-03 + 5.80050554995e-03 1.31818719408e-02 2.49875482035e-02 + 5.61335799375e-02 5.92235143217e-02 6.09424067177e-02 5.92235143217e-02 5.61335799375e-02 4.24295300017e-02 + 2.49875482035e-02 1.36231130391e-02 6.75138246715e-03 3.53006767470e-03 3.53006767470e-03 6.75138246715e-03 + 1.36231130391e-02 2.49875482035e-02 4.24295300017e-02 + 1.16467735388e-01 1.02568469446e-01 1.16467735388e-01 9.95387143197e-02 6.46788103129e-02 3.97809938382e-02 + 2.42768838976e-02 1.56599181080e-02 1.13646063453e-02 1.13646063453e-02 1.56599181080e-02 2.42768838976e-02 + 3.97809938382e-02 6.46788103129e-02 9.95387143197e-02 + 1.02568469446e-01 1.02568469446e-01 1.13539754126e-01 8.15533129102e-02 5.23936115453e-02 3.49506556165e-02 + 2.43879073207e-02 1.78991060313e-02 1.52963446205e-02 1.78991060313e-02 2.43879073207e-02 3.49506556165e-02 + 5.23936115453e-02 8.15533129102e-02 1.13539754126e-01 + 1.16467735388e-01 1.13539754126e-01 8.53804463649e-02 5.84769754663e-02 4.27231306029e-02 3.30817407316e-02 + 2.55149658819e-02 2.15005775831e-02 2.15005775831e-02 2.55149658819e-02 3.30817407316e-02 4.27231306029e-02 + 5.84769754663e-02 8.53804463649e-02 1.13539754126e-01 + 9.95387143197e-02 8.15533129102e-02 5.84769754663e-02 4.48502710858e-02 3.66436362392e-02 3.00331874093e-02 + 2.56772132883e-02 2.60569281693e-02 2.56772132883e-02 3.00331874093e-02 3.66436362392e-02 4.48502710858e-02 + 5.84769754663e-02 8.15533129102e-02 9.95387143197e-02 + 6.46788103129e-02 5.23936115453e-02 4.27231306029e-02 3.66436362392e-02 3.18895470196e-02 2.94734728104e-02 + 2.78871820412e-02 2.78871820412e-02 2.94734728104e-02 3.18895470196e-02 3.66436362392e-02 4.27231306029e-02 + 5.23936115453e-02 6.46788103129e-02 7.10707876951e-02 + 3.97809938382e-02 3.49506556165e-02 3.30817407316e-02 3.00331874093e-02 2.94734728104e-02 3.02094126272e-02 + 2.97058195093e-02 3.02094126272e-02 2.94734728104e-02 3.00331874093e-02 3.30817407316e-02 3.49506556165e-02 + 3.97809938382e-02 4.45611403771e-02 4.45611403771e-02 + 2.42768838976e-02 2.43879073207e-02 2.55149658819e-02 2.56772132883e-02 2.78871820412e-02 2.97058195093e-02 + 2.97058195093e-02 2.78871820412e-02 2.56772132883e-02 2.55149658819e-02 2.43879073207e-02 2.42768838976e-02 + 2.49875482035e-02 2.65236093943e-02 2.49875482035e-02 + 1.56599181080e-02 1.78991060313e-02 2.15005775831e-02 2.60569281693e-02 2.78871820412e-02 3.02094126272e-02 + 2.78871820412e-02 2.60569281693e-02 2.15005775831e-02 1.78991060313e-02 1.56599181080e-02 1.49627569580e-02 + 1.31818719408e-02 1.31818719408e-02 1.49627569580e-02 + 1.13646063453e-02 1.52963446205e-02 2.15005775831e-02 2.56772132883e-02 2.94734728104e-02 2.94734728104e-02 + 2.56772132883e-02 2.15005775831e-02 1.52963446205e-02 1.13646063453e-02 8.64523106293e-03 6.84444382539e-03 + 5.80050554995e-03 6.84444382539e-03 8.64523106293e-03 + 1.13646063453e-02 1.78991060313e-02 2.55149658819e-02 3.00331874093e-02 3.18895470196e-02 3.00331874093e-02 + 2.55149658819e-02 1.78991060313e-02 1.13646063453e-02 7.01813743887e-03 4.09661395937e-03 2.19087193687e-03 + 2.19087193687e-03 4.09661395937e-03 7.01813743887e-03 + 1.56599181080e-02 2.43879073207e-02 3.30817407316e-02 3.66436362392e-02 3.66436362392e-02 3.30817407316e-02 + 2.43879073207e-02 1.56599181080e-02 8.64523106293e-03 4.09661395937e-03 1.38503345990e-03 7.14663240551e-04 + 1.38503345990e-03 4.09661395937e-03 8.64523106293e-03 + 2.42768838976e-02 3.49506556165e-02 4.27231306029e-02 4.48502710858e-02 4.27231306029e-02 3.49506556165e-02 + 2.42768838976e-02 1.49627569580e-02 6.84444382539e-03 2.19087193687e-03 7.14663240551e-04 7.14663240551e-04 + 2.19087193687e-03 6.84444382539e-03 1.49627569580e-02 + 3.97809938382e-02 5.23936115453e-02 5.84769754663e-02 5.84769754663e-02 5.23936115453e-02 3.97809938382e-02 + 2.49875482035e-02 1.31818719408e-02 5.80050554995e-03 2.19087193687e-03 1.38503345990e-03 2.19087193687e-03 + 5.80050554995e-03 1.31818719408e-02 2.49875482035e-02 + 6.46788103129e-02 8.15533129102e-02 8.53804463649e-02 8.15533129102e-02 6.46788103129e-02 4.45611403771e-02 + 2.65236093943e-02 1.31818719408e-02 6.84444382539e-03 4.09661395937e-03 4.09661395937e-03 6.84444382539e-03 + 1.31818719408e-02 2.65236093943e-02 4.45611403771e-02 + 9.95387143197e-02 1.13539754126e-01 1.13539754126e-01 9.95387143197e-02 7.10707876951e-02 4.45611403771e-02 + 2.49875482035e-02 1.49627569580e-02 8.64523106293e-03 7.01813743887e-03 8.64523106293e-03 1.49627569580e-02 + 2.49875482035e-02 4.45611403771e-02 7.10707876951e-02 + 1.82422828268e-01 1.82422828268e-01 1.75978291339e-01 9.95387143197e-02 5.61335799375e-02 3.85875039457e-02 + 2.77237360128e-02 2.21844351566e-02 1.95071574201e-02 2.21844351566e-02 2.77237360128e-02 3.85875039457e-02 + 5.61335799375e-02 9.95387143197e-02 1.75978291339e-01 + 1.82422828268e-01 1.83280188132e-01 1.13539754126e-01 5.92235143217e-02 4.46676835001e-02 3.60022233749e-02 + 3.08604739677e-02 2.79666745937e-02 2.79666745937e-02 3.08604739677e-02 3.60022233749e-02 4.46676835001e-02 + 5.92235143217e-02 1.13539754126e-01 1.83280188132e-01 + 1.75978291339e-01 1.13539754126e-01 6.09424067177e-02 4.40351969320e-02 3.72212996136e-02 3.54179538479e-02 + 3.49314010620e-02 3.55073021064e-02 3.49314010620e-02 3.54179538479e-02 3.72212996136e-02 4.40351969320e-02 + 6.09424067177e-02 1.13539754126e-01 1.75978291339e-01 + 9.95387143197e-02 5.92235143217e-02 4.40351969320e-02 3.74646524133e-02 3.70588268986e-02 3.88199146511e-02 + 4.06623304521e-02 4.06623304521e-02 3.88199146511e-02 3.70588268986e-02 3.74646524133e-02 4.40351969320e-02 + 5.92235143217e-02 9.95387143197e-02 1.21879341630e-01 + 5.61335799375e-02 4.46676835001e-02 3.72212996136e-02 3.70588268986e-02 4.31689270135e-02 4.49581105718e-02 + 4.78620662790e-02 4.49581105718e-02 4.31689270135e-02 3.70588268986e-02 3.72212996136e-02 4.46676835001e-02 + 5.61335799375e-02 7.10707876951e-02 7.10707876951e-02 + 3.85875039457e-02 3.60022233749e-02 3.54179538479e-02 3.88199146511e-02 4.49581105718e-02 5.02965815685e-02 + 5.02965815685e-02 4.49581105718e-02 3.88199146511e-02 3.54179538479e-02 3.60022233749e-02 3.85875039457e-02 + 4.24295300017e-02 4.45611403771e-02 4.24295300017e-02 + 2.77237360128e-02 3.08604739677e-02 3.49314010620e-02 4.06623304521e-02 4.78620662790e-02 5.02965815685e-02 + 4.78620662790e-02 4.06623304521e-02 3.49314010620e-02 3.08604739677e-02 2.77237360128e-02 2.61642583587e-02 + 2.49875482035e-02 2.49875482035e-02 2.61642583587e-02 + 2.21844351566e-02 2.79666745937e-02 3.55073021064e-02 4.06623304521e-02 4.49581105718e-02 4.49581105718e-02 + 4.06623304521e-02 3.55073021064e-02 2.79666745937e-02 2.21844351566e-02 1.79880069490e-02 1.49627569580e-02 + 1.36231130391e-02 1.49627569580e-02 1.79880069490e-02 + 1.95071574201e-02 2.79666745937e-02 3.49314010620e-02 3.88199146511e-02 4.31689270135e-02 3.88199146511e-02 + 3.49314010620e-02 2.79666745937e-02 1.95071574201e-02 1.40786159428e-02 8.64523106293e-03 6.75138246715e-03 + 6.75138246715e-03 8.64523106293e-03 1.40786159428e-02 + 2.21844351566e-02 3.08604739677e-02 3.54179538479e-02 3.70588268986e-02 3.70588268986e-02 3.54179538479e-02 + 3.08604739677e-02 2.21844351566e-02 1.40786159428e-02 7.01813743887e-03 3.53006767470e-03 2.37456788896e-03 + 3.53006767470e-03 7.01813743887e-03 1.40786159428e-02 + 2.77237360128e-02 3.60022233749e-02 3.72212996136e-02 3.74646524133e-02 3.72212996136e-02 3.60022233749e-02 + 2.77237360128e-02 1.79880069490e-02 8.64523106293e-03 3.53006767470e-03 1.09356208174e-03 1.09356208174e-03 + 3.53006767470e-03 8.64523106293e-03 1.79880069490e-02 + 3.85875039457e-02 4.46676835001e-02 4.40351969320e-02 4.40351969320e-02 4.46676835001e-02 3.85875039457e-02 + 2.61642583587e-02 1.49627569580e-02 6.75138246715e-03 2.37456788896e-03 1.09356208174e-03 2.37456788896e-03 + 6.75138246715e-03 1.49627569580e-02 2.61642583587e-02 + 5.61335799375e-02 5.92235143217e-02 6.09424067177e-02 5.92235143217e-02 5.61335799375e-02 4.24295300017e-02 + 2.49875482035e-02 1.36231130391e-02 6.75138246715e-03 3.53006767470e-03 3.53006767470e-03 6.75138246715e-03 + 1.36231130391e-02 2.49875482035e-02 4.24295300017e-02 + 9.95387143197e-02 1.13539754126e-01 1.13539754126e-01 9.95387143197e-02 7.10707876951e-02 4.45611403771e-02 + 2.49875482035e-02 1.49627569580e-02 8.64523106293e-03 7.01813743887e-03 8.64523106293e-03 1.49627569580e-02 + 2.49875482035e-02 4.45611403771e-02 7.10707876951e-02 + 1.75978291339e-01 1.83280188132e-01 1.75978291339e-01 1.21879341630e-01 7.10707876951e-02 4.24295300017e-02 + 2.61642583587e-02 1.79880069490e-02 1.40786159428e-02 1.40786159428e-02 1.79880069490e-02 2.61642583587e-02 + 4.24295300017e-02 7.10707876951e-02 1.21879341630e-01 diff --git a/tests/03_NAO_multik/scf_out_dh_t/INPUT b/tests/03_NAO_multik/scf_out_dh_t/INPUT new file mode 100644 index 0000000000..89e768efdf --- /dev/null +++ b/tests/03_NAO_multik/scf_out_dh_t/INPUT @@ -0,0 +1,27 @@ +INPUT_PARAMETERS +#Parameters (1.General) +suffix autotest +calculation scf + +nbands 10 +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB + +#Parameters (2.Iteration) +ecutwfc 20 +scf_thr 1e-4 +scf_nmax 100 + +#Parameters (3.Basis) +basis_type lcao + +#Parameters (4.Smearing) +smearing_method gauss +smearing_sigma 0.002 + +#Parameters (5.Mixing) +mixing_type plain +mixing_beta 0.7 + +out_mat_dh 1 +out_mat_t 1 diff --git a/tests/03_NAO_multik/35_NO_KP_MU_nscf/KPT b/tests/03_NAO_multik/scf_out_dh_t/KPT similarity index 100% rename from tests/03_NAO_multik/35_NO_KP_MU_nscf/KPT rename to tests/03_NAO_multik/scf_out_dh_t/KPT diff --git a/tests/03_NAO_multik/22_NO_KP_OTdH/README b/tests/03_NAO_multik/scf_out_dh_t/README similarity index 100% rename from tests/03_NAO_multik/22_NO_KP_OTdH/README rename to tests/03_NAO_multik/scf_out_dh_t/README diff --git a/tests/03_NAO_multik/20_NO_KP_OHS_S4/STRU b/tests/03_NAO_multik/scf_out_dh_t/STRU similarity index 100% rename from tests/03_NAO_multik/20_NO_KP_OHS_S4/STRU rename to tests/03_NAO_multik/scf_out_dh_t/STRU diff --git a/tests/03_NAO_multik/22_NO_KP_OTdH/dhrxs1_nao.csr.ref b/tests/03_NAO_multik/scf_out_dh_t/dhrxs1_nao.csr.ref similarity index 100% rename from tests/03_NAO_multik/22_NO_KP_OTdH/dhrxs1_nao.csr.ref rename to tests/03_NAO_multik/scf_out_dh_t/dhrxs1_nao.csr.ref diff --git a/tests/03_NAO_multik/22_NO_KP_OTdH/dhrys1_nao.csr.ref b/tests/03_NAO_multik/scf_out_dh_t/dhrys1_nao.csr.ref similarity index 100% rename from tests/03_NAO_multik/22_NO_KP_OTdH/dhrys1_nao.csr.ref rename to tests/03_NAO_multik/scf_out_dh_t/dhrys1_nao.csr.ref diff --git a/tests/03_NAO_multik/22_NO_KP_OTdH/dhrzs1_nao.csr.ref b/tests/03_NAO_multik/scf_out_dh_t/dhrzs1_nao.csr.ref similarity index 100% rename from tests/03_NAO_multik/22_NO_KP_OTdH/dhrzs1_nao.csr.ref rename to tests/03_NAO_multik/scf_out_dh_t/dhrzs1_nao.csr.ref diff --git a/tests/03_NAO_multik/22_NO_KP_OTdH/result.ref b/tests/03_NAO_multik/scf_out_dh_t/result.ref similarity index 100% rename from tests/03_NAO_multik/22_NO_KP_OTdH/result.ref rename to tests/03_NAO_multik/scf_out_dh_t/result.ref diff --git a/tests/03_NAO_multik/22_NO_KP_OTdH/trs1_nao.csr.ref b/tests/03_NAO_multik/scf_out_dh_t/trs1_nao.csr.ref similarity index 100% rename from tests/03_NAO_multik/22_NO_KP_OTdH/trs1_nao.csr.ref rename to tests/03_NAO_multik/scf_out_dh_t/trs1_nao.csr.ref diff --git a/tests/03_NAO_multik/scf_out_dmr_dmk/INPUT b/tests/03_NAO_multik/scf_out_dmr_dmk/INPUT new file mode 100644 index 0000000000..c515633625 --- /dev/null +++ b/tests/03_NAO_multik/scf_out_dmr_dmk/INPUT @@ -0,0 +1,25 @@ +INPUT_PARAMETERS +#Parameters (1.General) +suffix autotest +calculation scf + +nbands 8 +symmetry 1 +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB + +#Parameters (2.Iteration) +ecutwfc 10 +scf_thr 1e-8 +scf_nmax 10 + +#Parameters (3.Basis) +basis_type lcao + +#Parameters (4.Smearing) +smearing_method gauss +smearing_sigma 0.002 + +# output dmr, dmk +out_dmr 1 5 +out_dmk 1 3 diff --git a/tests/03_NAO_multik/scf_out_dmr_dmk/KPT b/tests/03_NAO_multik/scf_out_dmr_dmk/KPT new file mode 100644 index 0000000000..2bce8546f1 --- /dev/null +++ b/tests/03_NAO_multik/scf_out_dmr_dmk/KPT @@ -0,0 +1,4 @@ +K_POINTS +0 +Gamma +1 3 1 0 0 0 diff --git a/tests/03_NAO_multik/01_NO_KP_15f_ODM/README b/tests/03_NAO_multik/scf_out_dmr_dmk/README similarity index 100% rename from tests/03_NAO_multik/01_NO_KP_15f_ODM/README rename to tests/03_NAO_multik/scf_out_dmr_dmk/README diff --git a/tests/03_NAO_multik/scf_out_dmr_dmk/STRU b/tests/03_NAO_multik/scf_out_dmr_dmk/STRU new file mode 100644 index 0000000000..5ea22db42e --- /dev/null +++ b/tests/03_NAO_multik/scf_out_dmr_dmk/STRU @@ -0,0 +1,21 @@ +ATOMIC_SPECIES +Ce 140.115 58_Ce.UPF upf201 + +NUMERICAL_ORBITAL +Ce_gga_8au_80Ry_4s2p2d2f.Orb + +LATTICE_CONSTANT +40 + +LATTICE_VECTORS +0.6 0.0 0.0 +0.0 0.2 0.0 +0.0 0.0 0.4 + +ATOMIC_POSITIONS +Direct + +Ce +0.0 +1 +0.00 0.00 0.00 1 1 1 diff --git a/tests/03_NAO_multik/scf_out_dmr_dmk/dmrs1_nao.csr.ref b/tests/03_NAO_multik/scf_out_dmr_dmk/dmrs1_nao.csr.ref new file mode 100644 index 0000000000..c19ee75949 --- /dev/null +++ b/tests/03_NAO_multik/scf_out_dmr_dmk/dmrs1_nao.csr.ref @@ -0,0 +1,408 @@ + --- Ionic Step 1 --- + # print density matrix in real space DM(R) + 1 # number of spin directions + 1 # spin index + 34 # number of localized basis + 5 # number of Bravais lattice vector R + + user_defined_lattice + 21.1671 + 0.6 0 0 + 0 0.2 0 + 0 0 0.4 + Ce + 1 + Direct + 0 0 0 + + #----------------------------------------------------------------------# + # CSR Format # + # The outer loop corresponds to the number of Bravais lattice vectors. # + # The first line contains the index of the Bravais lattice vector # + # (Rx, Ry, Rz), followed by the number of non-zero elements. # + # The subsequent lines consist of three blocks of data, which are # + # values, column indices, row pointers. # + #----------------------------------------------------------------------# + + 0 -2 0 324 + # CSR values + -1.90916e-01 1.08963e-01 -2.60143e-02 1.28408e-02 -1.14493e-01 1.14782e-01 + -5.32481e-02 -8.58925e-02 1.50267e-02 2.44219e-02 -1.24441e-03 -4.47854e-03 + 1.89533e-02 2.49393e-02 1.08963e-01 -5.76288e-02 1.47180e-02 -2.85688e-03 + 8.54004e-02 -9.30856e-02 4.55577e-02 7.21480e-02 -1.76177e-02 -2.92430e-02 + 1.63342e-03 3.89039e-04 -2.21008e-02 -2.91604e-02 -2.60143e-02 1.47180e-02 + -3.44327e-03 1.59819e-03 -1.60756e-02 1.54489e-02 -6.98731e-03 -1.12962e-02 + 2.30513e-03 3.79541e-03 -6.26577e-04 2.49383e-04 3.04171e-03 3.94737e-03 + 1.28408e-02 -2.85688e-03 1.59819e-03 -2.10795e-05 1.50939e-02 -1.22952e-02 + 6.63346e-03 1.01512e-02 -2.16077e-03 -3.57529e-03 -3.06350e-03 4.85025e-03 + -2.38369e-03 -3.59444e-03 -1.11995e-03 2.18493e-03 3.22523e-03 2.44150e-03 + -6.42188e-04 4.74062e-04 -1.83562e-03 -2.47508e-03 -1.66575e-03 1.70626e-03 + 2.91421e-03 2.00991e-03 -1.08699e-04 -4.62961e-04 -6.39299e-04 -2.61025e-03 + 1.14493e-01 -8.54004e-02 1.60756e-02 -1.50939e-02 -1.08144e-03 -1.59836e-03 + 1.57783e-02 2.82060e-02 2.48959e-03 4.11426e-03 7.10957e-04 1.69445e-03 + 6.88934e-03 9.02936e-03 2.18493e-03 4.51099e-05 -7.49305e-05 -1.08110e-05 + 1.00351e-03 -3.63507e-03 -7.16870e-05 1.96358e-04 1.70626e-03 2.18721e-05 + 1.48651e-05 1.02523e-05 1.19912e-05 -1.30922e-05 -5.12927e-06 -1.01084e-05 + -1.14782e-01 9.30856e-02 -1.54489e-02 1.22952e-02 -1.59836e-03 -1.02807e-02 + -6.94730e-03 -1.43985e-02 2.65117e-03 4.56602e-03 4.54508e-03 -5.98578e-03 + -2.33335e-03 -2.54374e-03 -5.32481e-02 4.55577e-02 -6.98731e-03 6.63346e-03 + -1.57783e-02 6.94730e-03 3.59506e-04 1.03446e-03 -7.30172e-04 -4.31935e-04 + 2.06105e-02 -2.98763e-02 4.17588e-04 3.45840e-03 -3.22523e-03 7.49305e-05 + -1.21448e-03 -1.33014e-04 -4.30268e-03 1.40386e-02 2.03451e-04 -9.98986e-04 + -8.58925e-02 7.21480e-02 -1.12962e-02 1.01512e-02 -2.82060e-02 1.43985e-02 + 1.03446e-03 -1.63596e-03 1.27521e-04 3.20274e-04 -1.71637e-02 2.44357e-02 + 3.54229e-03 2.24734e-03 -2.91421e-03 -1.48651e-05 -4.24644e-06 -2.92874e-06 + -2.17430e-05 1.61673e-05 3.72497e-07 -1.68459e-05 1.50267e-02 -1.76177e-02 + 2.30513e-03 -2.16077e-03 -2.48959e-03 -2.65117e-03 -7.30172e-04 1.27521e-04 + -5.40628e-05 1.55548e-05 1.06019e-02 -1.50734e-02 -9.65224e-04 2.12176e-04 + -2.44150e-03 1.08110e-05 -1.33014e-04 -1.67590e-05 -4.90433e-04 1.49889e-03 + 1.75304e-05 -1.15863e-04 2.44219e-02 -2.92430e-02 3.79541e-03 -3.57529e-03 + -4.11426e-03 -4.56602e-03 -4.31935e-04 3.20274e-04 1.55548e-05 -1.03716e-04 + 3.94168e-03 -5.31435e-03 -1.07877e-03 -8.88122e-04 -2.00991e-03 -1.02523e-05 + -2.92874e-06 -2.01993e-06 -1.49960e-05 1.11505e-05 2.56909e-07 -1.16185e-05 + -6.42188e-04 1.00351e-03 4.30268e-03 4.90433e-04 1.25028e-02 -4.97262e-02 + -1.12738e-03 2.20133e-03 -1.08699e-04 1.19912e-05 2.17430e-05 1.49960e-05 + -1.51535e-06 -2.85173e-06 -4.66495e-06 -1.96552e-05 1.24441e-03 -1.63342e-03 + 6.26577e-04 3.06350e-03 7.10957e-04 4.54508e-03 -2.06105e-02 1.71637e-02 + -1.06019e-02 -3.94168e-03 -8.40059e-02 1.32479e-01 -4.31931e-03 -2.65619e-03 + 4.74062e-04 -3.63507e-03 -1.40386e-02 -1.49889e-03 -4.97262e-02 1.95922e-01 + 4.27888e-03 -9.01697e-03 -4.62961e-04 -1.30922e-05 -1.61673e-05 -1.11505e-05 + -2.85173e-06 5.52337e-06 4.06115e-06 1.35981e-05 4.47854e-03 -3.89039e-04 + -2.49383e-04 -4.85025e-03 1.69445e-03 -5.98578e-03 2.98763e-02 -2.44357e-02 + 1.50734e-02 5.31435e-03 1.32479e-01 -2.06442e-01 4.88920e-03 5.09090e-03 + -1.83562e-03 -7.16870e-05 -2.03451e-04 -1.75304e-05 -1.12738e-03 4.27888e-03 + 8.91611e-05 -2.10216e-04 -6.39299e-04 -5.12927e-06 -3.72497e-07 -2.56909e-07 + -4.66495e-06 4.06115e-06 7.78479e-07 -8.62100e-07 -1.89533e-02 2.21008e-02 + -3.04171e-03 2.38369e-03 6.88934e-03 -2.33335e-03 -4.17588e-04 -3.54229e-03 + 9.65224e-04 1.07877e-03 -4.31931e-03 4.88920e-03 8.13507e-04 -1.29210e-03 + -2.47508e-03 1.96358e-04 9.98986e-04 1.15863e-04 2.20133e-03 -9.01697e-03 + -2.10216e-04 3.77716e-04 -2.61025e-03 -1.01084e-05 1.68459e-05 1.16185e-05 + -1.96552e-05 1.35981e-05 -8.62100e-07 -1.99514e-05 -2.49393e-02 2.91604e-02 + -3.94737e-03 3.59444e-03 9.02936e-03 -2.54374e-03 -3.45840e-03 -2.24734e-03 + -2.12176e-04 8.88122e-04 -2.65619e-03 5.09090e-03 -1.29210e-03 -4.44466e-04 + # CSR column indices + 0 1 2 3 6 9 10 13 15 18 22 26 29 33 0 1 + 2 3 6 9 10 13 15 18 22 26 29 33 0 1 2 3 + 6 9 10 13 15 18 22 26 29 33 0 1 2 3 6 9 + 10 13 15 18 22 26 29 33 4 7 12 17 20 23 27 30 + 5 8 14 19 21 25 28 32 0 1 2 3 6 9 10 13 + 15 18 22 26 29 33 4 7 12 17 20 23 27 30 5 8 + 14 19 21 25 28 32 0 1 2 3 6 9 10 13 15 18 + 22 26 29 33 0 1 2 3 6 9 10 13 15 18 22 26 + 29 33 4 7 12 17 20 23 27 30 0 1 2 3 6 9 + 10 13 15 18 22 26 29 33 5 8 14 19 21 25 28 32 + 0 1 2 3 6 9 10 13 15 18 22 26 29 33 4 7 + 12 17 20 23 27 30 0 1 2 3 6 9 10 13 15 18 + 22 26 29 33 5 8 14 19 21 25 28 32 4 7 12 17 + 20 23 27 30 5 8 14 19 21 25 28 32 0 1 2 3 + 6 9 10 13 15 18 22 26 29 33 4 7 12 17 20 23 + 27 30 5 8 14 19 21 25 28 32 0 1 2 3 6 9 + 10 13 15 18 22 26 29 33 4 7 12 17 20 23 27 30 + 5 8 14 19 21 25 28 32 0 1 2 3 6 9 10 13 + 15 18 22 26 29 33 4 7 12 17 20 23 27 30 5 8 + 14 19 21 25 28 32 0 1 2 3 6 9 10 13 15 18 + 22 26 29 33 + # CSR row pointers + 0 14 28 42 56 64 72 86 94 102 116 130 130 138 152 160 + 174 174 182 196 204 212 220 234 242 242 250 264 272 280 294 302 + 302 310 324 + + 0 -1 0 324 + # CSR values + -1.90916e-01 1.08963e-01 -2.60143e-02 1.28408e-02 1.14493e-01 -1.14782e-01 + -5.32481e-02 -8.58925e-02 1.50267e-02 2.44219e-02 1.24441e-03 4.47854e-03 + -1.89533e-02 -2.49393e-02 1.08963e-01 -5.76288e-02 1.47180e-02 -2.85688e-03 + -8.54004e-02 9.30856e-02 4.55577e-02 7.21480e-02 -1.76177e-02 -2.92430e-02 + -1.63342e-03 -3.89039e-04 2.21008e-02 2.91604e-02 -2.60143e-02 1.47180e-02 + -3.44327e-03 1.59819e-03 1.60756e-02 -1.54489e-02 -6.98731e-03 -1.12962e-02 + 2.30513e-03 3.79541e-03 6.26577e-04 -2.49383e-04 -3.04171e-03 -3.94737e-03 + 1.28408e-02 -2.85688e-03 1.59819e-03 -2.10795e-05 -1.50939e-02 1.22952e-02 + 6.63346e-03 1.01512e-02 -2.16077e-03 -3.57529e-03 3.06350e-03 -4.85025e-03 + 2.38369e-03 3.59444e-03 -1.11995e-03 2.18493e-03 -3.22523e-03 -2.44150e-03 + -6.42188e-04 4.74062e-04 -1.83562e-03 -2.47508e-03 -1.66575e-03 1.70626e-03 + -2.91421e-03 -2.00991e-03 -1.08699e-04 -4.62961e-04 -6.39299e-04 -2.61025e-03 + -1.14493e-01 8.54004e-02 -1.60756e-02 1.50939e-02 -1.08144e-03 -1.59836e-03 + -1.57783e-02 -2.82060e-02 -2.48959e-03 -4.11426e-03 7.10957e-04 1.69445e-03 + 6.88934e-03 9.02936e-03 2.18493e-03 4.51099e-05 7.49305e-05 1.08110e-05 + 1.00351e-03 -3.63507e-03 -7.16870e-05 1.96358e-04 1.70626e-03 2.18721e-05 + -1.48651e-05 -1.02523e-05 1.19912e-05 -1.30922e-05 -5.12927e-06 -1.01084e-05 + 1.14782e-01 -9.30856e-02 1.54489e-02 -1.22952e-02 -1.59836e-03 -1.02807e-02 + 6.94730e-03 1.43985e-02 -2.65117e-03 -4.56602e-03 4.54508e-03 -5.98578e-03 + -2.33335e-03 -2.54374e-03 -5.32481e-02 4.55577e-02 -6.98731e-03 6.63346e-03 + 1.57783e-02 -6.94730e-03 3.59506e-04 1.03446e-03 -7.30172e-04 -4.31935e-04 + -2.06105e-02 2.98763e-02 -4.17588e-04 -3.45840e-03 3.22523e-03 -7.49305e-05 + -1.21448e-03 -1.33014e-04 4.30268e-03 -1.40386e-02 -2.03451e-04 9.98986e-04 + -8.58925e-02 7.21480e-02 -1.12962e-02 1.01512e-02 2.82060e-02 -1.43985e-02 + 1.03446e-03 -1.63596e-03 1.27521e-04 3.20274e-04 1.71637e-02 -2.44357e-02 + -3.54229e-03 -2.24734e-03 2.91421e-03 1.48651e-05 -4.24644e-06 -2.92874e-06 + 2.17430e-05 -1.61673e-05 -3.72497e-07 1.68459e-05 1.50267e-02 -1.76177e-02 + 2.30513e-03 -2.16077e-03 2.48959e-03 2.65117e-03 -7.30172e-04 1.27521e-04 + -5.40628e-05 1.55548e-05 -1.06019e-02 1.50734e-02 9.65224e-04 -2.12176e-04 + 2.44150e-03 -1.08110e-05 -1.33014e-04 -1.67590e-05 4.90433e-04 -1.49889e-03 + -1.75304e-05 1.15863e-04 2.44219e-02 -2.92430e-02 3.79541e-03 -3.57529e-03 + 4.11426e-03 4.56602e-03 -4.31935e-04 3.20274e-04 1.55548e-05 -1.03716e-04 + -3.94168e-03 5.31435e-03 1.07877e-03 8.88122e-04 2.00991e-03 1.02523e-05 + -2.92874e-06 -2.01993e-06 1.49960e-05 -1.11505e-05 -2.56909e-07 1.16185e-05 + -6.42188e-04 1.00351e-03 -4.30268e-03 -4.90433e-04 1.25028e-02 -4.97262e-02 + -1.12738e-03 2.20133e-03 -1.08699e-04 1.19912e-05 -2.17430e-05 -1.49960e-05 + -1.51535e-06 -2.85173e-06 -4.66495e-06 -1.96552e-05 -1.24441e-03 1.63342e-03 + -6.26577e-04 -3.06350e-03 7.10957e-04 4.54508e-03 2.06105e-02 -1.71637e-02 + 1.06019e-02 3.94168e-03 -8.40059e-02 1.32479e-01 -4.31931e-03 -2.65619e-03 + 4.74062e-04 -3.63507e-03 1.40386e-02 1.49889e-03 -4.97262e-02 1.95922e-01 + 4.27888e-03 -9.01697e-03 -4.62961e-04 -1.30922e-05 1.61673e-05 1.11505e-05 + -2.85173e-06 5.52337e-06 4.06115e-06 1.35981e-05 -4.47854e-03 3.89039e-04 + 2.49383e-04 4.85025e-03 1.69445e-03 -5.98578e-03 -2.98763e-02 2.44357e-02 + -1.50734e-02 -5.31435e-03 1.32479e-01 -2.06442e-01 4.88920e-03 5.09090e-03 + -1.83562e-03 -7.16870e-05 2.03451e-04 1.75304e-05 -1.12738e-03 4.27888e-03 + 8.91611e-05 -2.10216e-04 -6.39299e-04 -5.12927e-06 3.72497e-07 2.56909e-07 + -4.66495e-06 4.06115e-06 7.78479e-07 -8.62100e-07 1.89533e-02 -2.21008e-02 + 3.04171e-03 -2.38369e-03 6.88934e-03 -2.33335e-03 4.17588e-04 3.54229e-03 + -9.65224e-04 -1.07877e-03 -4.31931e-03 4.88920e-03 8.13507e-04 -1.29210e-03 + -2.47508e-03 1.96358e-04 -9.98986e-04 -1.15863e-04 2.20133e-03 -9.01697e-03 + -2.10216e-04 3.77716e-04 -2.61025e-03 -1.01084e-05 -1.68459e-05 -1.16185e-05 + -1.96552e-05 1.35981e-05 -8.62100e-07 -1.99514e-05 2.49393e-02 -2.91604e-02 + 3.94737e-03 -3.59444e-03 9.02936e-03 -2.54374e-03 3.45840e-03 2.24734e-03 + 2.12176e-04 -8.88122e-04 -2.65619e-03 5.09090e-03 -1.29210e-03 -4.44466e-04 + # CSR column indices + 0 1 2 3 6 9 10 13 15 18 22 26 29 33 0 1 + 2 3 6 9 10 13 15 18 22 26 29 33 0 1 2 3 + 6 9 10 13 15 18 22 26 29 33 0 1 2 3 6 9 + 10 13 15 18 22 26 29 33 4 7 12 17 20 23 27 30 + 5 8 14 19 21 25 28 32 0 1 2 3 6 9 10 13 + 15 18 22 26 29 33 4 7 12 17 20 23 27 30 5 8 + 14 19 21 25 28 32 0 1 2 3 6 9 10 13 15 18 + 22 26 29 33 0 1 2 3 6 9 10 13 15 18 22 26 + 29 33 4 7 12 17 20 23 27 30 0 1 2 3 6 9 + 10 13 15 18 22 26 29 33 5 8 14 19 21 25 28 32 + 0 1 2 3 6 9 10 13 15 18 22 26 29 33 4 7 + 12 17 20 23 27 30 0 1 2 3 6 9 10 13 15 18 + 22 26 29 33 5 8 14 19 21 25 28 32 4 7 12 17 + 20 23 27 30 5 8 14 19 21 25 28 32 0 1 2 3 + 6 9 10 13 15 18 22 26 29 33 4 7 12 17 20 23 + 27 30 5 8 14 19 21 25 28 32 0 1 2 3 6 9 + 10 13 15 18 22 26 29 33 4 7 12 17 20 23 27 30 + 5 8 14 19 21 25 28 32 0 1 2 3 6 9 10 13 + 15 18 22 26 29 33 4 7 12 17 20 23 27 30 5 8 + 14 19 21 25 28 32 0 1 2 3 6 9 10 13 15 18 + 22 26 29 33 + # CSR row pointers + 0 14 28 42 56 64 72 86 94 102 116 130 130 138 152 160 + 174 174 182 196 204 212 220 234 242 242 250 264 272 280 294 302 + 302 310 324 + + 0 0 0 180 + # CSR values + 1.89387e+00 8.17096e-02 1.37457e-01 -8.84817e-02 3.42491e-02 6.35948e-02 + -1.46258e-02 -2.04001e-02 8.17096e-02 1.92772e+00 -1.26768e-01 1.45203e-01 + -1.12364e-02 -5.21007e-02 7.88676e-05 1.61759e-02 1.37457e-01 -1.26768e-01 + 1.91603e-02 -1.66471e-02 3.75333e-03 9.07328e-03 -1.24795e-03 -2.85877e-03 + -8.84817e-02 1.45203e-01 -1.66471e-02 1.58182e-02 -2.10258e-03 -5.96042e-03 + 3.68905e-04 1.81383e-03 1.99789e+00 -4.96467e-04 2.90743e-02 4.92218e-05 + 2.15374e-03 6.32632e-03 1.99827e+00 1.19078e-02 1.48129e-02 -1.15581e-02 + -8.94934e-04 8.95059e-03 1.99250e+00 -4.68018e-02 -1.08540e-02 -2.05009e-02 + -6.63334e-04 6.14383e-04 -4.96467e-04 5.28289e-05 7.15231e-04 -2.81488e-03 + -6.47838e-05 1.27055e-04 1.19078e-02 7.39089e-05 8.81050e-05 -6.96875e-05 + -6.43324e-06 4.88623e-05 -4.68018e-02 2.18267e-02 -1.06893e-02 1.48744e-02 + 4.55392e-03 4.41744e-03 3.42491e-02 -1.12364e-02 3.75333e-03 -2.10258e-03 + 7.79434e-03 9.20634e-03 -1.33009e-03 -3.07145e-03 2.42896e-03 2.66028e-04 + 6.35948e-02 -5.21007e-02 9.07328e-03 -5.96042e-03 9.20634e-03 1.83791e-02 + -3.83594e-03 -5.78367e-03 8.49287e-06 5.85748e-06 -1.46258e-02 7.88676e-05 + -1.24795e-03 3.68905e-04 -1.33009e-03 -3.83594e-03 1.09852e-03 1.30425e-03 + 2.66028e-04 3.35180e-05 -2.04001e-02 1.61759e-02 -2.85877e-03 1.81383e-03 + -3.07145e-03 -5.78367e-03 1.30425e-03 2.05383e-03 5.85748e-06 4.03986e-06 + 2.90743e-02 7.15231e-04 2.79145e-02 -9.91238e-02 -1.80655e-03 5.79706e-03 + 1.48129e-02 8.81050e-05 1.09816e-04 -8.56332e-05 -6.57226e-06 6.66008e-05 + -1.08540e-02 -1.06893e-02 5.28803e-01 -7.50772e-01 -3.39959e-02 4.47095e-02 + 4.92218e-05 -2.81488e-03 -9.91238e-02 3.58882e-01 6.71452e-03 -2.04508e-02 + -1.15581e-02 -6.96875e-05 -8.56332e-05 6.70765e-05 5.47934e-06 -5.05386e-05 + -2.05009e-02 1.48744e-02 -7.50772e-01 1.06749e+00 4.74502e-02 -6.35261e-02 + 2.15374e-03 -6.47838e-05 -1.80655e-03 6.71452e-03 1.33552e-04 -3.63575e-04 + -8.94934e-04 -6.43324e-06 -6.57226e-06 5.47934e-06 8.11154e-07 -2.33982e-06 + -6.63334e-04 4.55392e-03 -3.39959e-02 4.74502e-02 3.48345e-03 -1.95252e-03 + 6.32632e-03 1.27055e-04 5.79706e-03 -2.04508e-02 -3.63575e-04 1.21844e-03 + 8.95059e-03 4.88623e-05 6.66008e-05 -5.05386e-05 -2.33982e-06 4.68772e-05 + 6.14383e-04 4.41744e-03 4.47095e-02 -6.35261e-02 -1.95252e-03 5.38603e-03 + # CSR column indices + 0 1 2 3 10 13 15 18 0 1 2 3 10 13 15 18 + 0 1 2 3 10 13 15 18 0 1 2 3 10 13 15 18 + 4 7 20 23 27 30 5 8 21 25 28 32 6 9 22 26 + 29 33 4 7 20 23 27 30 5 8 21 25 28 32 6 9 + 22 26 29 33 0 1 2 3 10 13 15 18 12 17 0 1 + 2 3 10 13 15 18 14 19 0 1 2 3 10 13 15 18 + 12 17 0 1 2 3 10 13 15 18 14 19 4 7 20 23 + 27 30 5 8 21 25 28 32 6 9 22 26 29 33 4 7 + 20 23 27 30 5 8 21 25 28 32 6 9 22 26 29 33 + 4 7 20 23 27 30 5 8 21 25 28 32 6 9 22 26 + 29 33 4 7 20 23 27 30 5 8 21 25 28 32 6 9 + 22 26 29 33 + # CSR row pointers + 0 8 16 24 32 38 44 50 56 62 68 76 76 78 86 88 + 96 96 98 106 108 114 120 126 132 132 138 144 150 156 162 168 + 168 174 180 + + 0 1 0 324 + # CSR values + -1.90916e-01 1.08963e-01 -2.60143e-02 1.28408e-02 -1.14493e-01 1.14782e-01 + -5.32481e-02 -8.58925e-02 1.50267e-02 2.44219e-02 -1.24441e-03 -4.47854e-03 + 1.89533e-02 2.49393e-02 1.08963e-01 -5.76288e-02 1.47180e-02 -2.85688e-03 + 8.54004e-02 -9.30856e-02 4.55577e-02 7.21480e-02 -1.76177e-02 -2.92430e-02 + 1.63342e-03 3.89039e-04 -2.21008e-02 -2.91604e-02 -2.60143e-02 1.47180e-02 + -3.44327e-03 1.59819e-03 -1.60756e-02 1.54489e-02 -6.98731e-03 -1.12962e-02 + 2.30513e-03 3.79541e-03 -6.26577e-04 2.49383e-04 3.04171e-03 3.94737e-03 + 1.28408e-02 -2.85688e-03 1.59819e-03 -2.10795e-05 1.50939e-02 -1.22952e-02 + 6.63346e-03 1.01512e-02 -2.16077e-03 -3.57529e-03 -3.06350e-03 4.85025e-03 + -2.38369e-03 -3.59444e-03 -1.11995e-03 2.18493e-03 3.22523e-03 2.44150e-03 + -6.42188e-04 4.74062e-04 -1.83562e-03 -2.47508e-03 -1.66575e-03 1.70626e-03 + 2.91421e-03 2.00991e-03 -1.08699e-04 -4.62961e-04 -6.39299e-04 -2.61025e-03 + 1.14493e-01 -8.54004e-02 1.60756e-02 -1.50939e-02 -1.08144e-03 -1.59836e-03 + 1.57783e-02 2.82060e-02 2.48959e-03 4.11426e-03 7.10957e-04 1.69445e-03 + 6.88934e-03 9.02936e-03 2.18493e-03 4.51099e-05 -7.49305e-05 -1.08110e-05 + 1.00351e-03 -3.63507e-03 -7.16870e-05 1.96358e-04 1.70626e-03 2.18721e-05 + 1.48651e-05 1.02523e-05 1.19912e-05 -1.30922e-05 -5.12927e-06 -1.01084e-05 + -1.14782e-01 9.30856e-02 -1.54489e-02 1.22952e-02 -1.59836e-03 -1.02807e-02 + -6.94730e-03 -1.43985e-02 2.65117e-03 4.56602e-03 4.54508e-03 -5.98578e-03 + -2.33335e-03 -2.54374e-03 -5.32481e-02 4.55577e-02 -6.98731e-03 6.63346e-03 + -1.57783e-02 6.94730e-03 3.59506e-04 1.03446e-03 -7.30172e-04 -4.31935e-04 + 2.06105e-02 -2.98763e-02 4.17588e-04 3.45840e-03 -3.22523e-03 7.49305e-05 + -1.21448e-03 -1.33014e-04 -4.30268e-03 1.40386e-02 2.03451e-04 -9.98986e-04 + -8.58925e-02 7.21480e-02 -1.12962e-02 1.01512e-02 -2.82060e-02 1.43985e-02 + 1.03446e-03 -1.63596e-03 1.27521e-04 3.20274e-04 -1.71637e-02 2.44357e-02 + 3.54229e-03 2.24734e-03 -2.91421e-03 -1.48651e-05 -4.24644e-06 -2.92874e-06 + -2.17430e-05 1.61673e-05 3.72497e-07 -1.68459e-05 1.50267e-02 -1.76177e-02 + 2.30513e-03 -2.16077e-03 -2.48959e-03 -2.65117e-03 -7.30172e-04 1.27521e-04 + -5.40628e-05 1.55548e-05 1.06019e-02 -1.50734e-02 -9.65224e-04 2.12176e-04 + -2.44150e-03 1.08110e-05 -1.33014e-04 -1.67590e-05 -4.90433e-04 1.49889e-03 + 1.75304e-05 -1.15863e-04 2.44219e-02 -2.92430e-02 3.79541e-03 -3.57529e-03 + -4.11426e-03 -4.56602e-03 -4.31935e-04 3.20274e-04 1.55548e-05 -1.03716e-04 + 3.94168e-03 -5.31435e-03 -1.07877e-03 -8.88122e-04 -2.00991e-03 -1.02523e-05 + -2.92874e-06 -2.01993e-06 -1.49960e-05 1.11505e-05 2.56909e-07 -1.16185e-05 + -6.42188e-04 1.00351e-03 4.30268e-03 4.90433e-04 1.25028e-02 -4.97262e-02 + -1.12738e-03 2.20133e-03 -1.08699e-04 1.19912e-05 2.17430e-05 1.49960e-05 + -1.51535e-06 -2.85173e-06 -4.66495e-06 -1.96552e-05 1.24441e-03 -1.63342e-03 + 6.26577e-04 3.06350e-03 7.10957e-04 4.54508e-03 -2.06105e-02 1.71637e-02 + -1.06019e-02 -3.94168e-03 -8.40059e-02 1.32479e-01 -4.31931e-03 -2.65619e-03 + 4.74062e-04 -3.63507e-03 -1.40386e-02 -1.49889e-03 -4.97262e-02 1.95922e-01 + 4.27888e-03 -9.01697e-03 -4.62961e-04 -1.30922e-05 -1.61673e-05 -1.11505e-05 + -2.85173e-06 5.52337e-06 4.06115e-06 1.35981e-05 4.47854e-03 -3.89039e-04 + -2.49383e-04 -4.85025e-03 1.69445e-03 -5.98578e-03 2.98763e-02 -2.44357e-02 + 1.50734e-02 5.31435e-03 1.32479e-01 -2.06442e-01 4.88920e-03 5.09090e-03 + -1.83562e-03 -7.16870e-05 -2.03451e-04 -1.75304e-05 -1.12738e-03 4.27888e-03 + 8.91611e-05 -2.10216e-04 -6.39299e-04 -5.12927e-06 -3.72497e-07 -2.56909e-07 + -4.66495e-06 4.06115e-06 7.78479e-07 -8.62100e-07 -1.89533e-02 2.21008e-02 + -3.04171e-03 2.38369e-03 6.88934e-03 -2.33335e-03 -4.17588e-04 -3.54229e-03 + 9.65224e-04 1.07877e-03 -4.31931e-03 4.88920e-03 8.13507e-04 -1.29210e-03 + -2.47508e-03 1.96358e-04 9.98986e-04 1.15863e-04 2.20133e-03 -9.01697e-03 + -2.10216e-04 3.77716e-04 -2.61025e-03 -1.01084e-05 1.68459e-05 1.16185e-05 + -1.96552e-05 1.35981e-05 -8.62100e-07 -1.99514e-05 -2.49393e-02 2.91604e-02 + -3.94737e-03 3.59444e-03 9.02936e-03 -2.54374e-03 -3.45840e-03 -2.24734e-03 + -2.12176e-04 8.88122e-04 -2.65619e-03 5.09090e-03 -1.29210e-03 -4.44466e-04 + # CSR column indices + 0 1 2 3 6 9 10 13 15 18 22 26 29 33 0 1 + 2 3 6 9 10 13 15 18 22 26 29 33 0 1 2 3 + 6 9 10 13 15 18 22 26 29 33 0 1 2 3 6 9 + 10 13 15 18 22 26 29 33 4 7 12 17 20 23 27 30 + 5 8 14 19 21 25 28 32 0 1 2 3 6 9 10 13 + 15 18 22 26 29 33 4 7 12 17 20 23 27 30 5 8 + 14 19 21 25 28 32 0 1 2 3 6 9 10 13 15 18 + 22 26 29 33 0 1 2 3 6 9 10 13 15 18 22 26 + 29 33 4 7 12 17 20 23 27 30 0 1 2 3 6 9 + 10 13 15 18 22 26 29 33 5 8 14 19 21 25 28 32 + 0 1 2 3 6 9 10 13 15 18 22 26 29 33 4 7 + 12 17 20 23 27 30 0 1 2 3 6 9 10 13 15 18 + 22 26 29 33 5 8 14 19 21 25 28 32 4 7 12 17 + 20 23 27 30 5 8 14 19 21 25 28 32 0 1 2 3 + 6 9 10 13 15 18 22 26 29 33 4 7 12 17 20 23 + 27 30 5 8 14 19 21 25 28 32 0 1 2 3 6 9 + 10 13 15 18 22 26 29 33 4 7 12 17 20 23 27 30 + 5 8 14 19 21 25 28 32 0 1 2 3 6 9 10 13 + 15 18 22 26 29 33 4 7 12 17 20 23 27 30 5 8 + 14 19 21 25 28 32 0 1 2 3 6 9 10 13 15 18 + 22 26 29 33 + # CSR row pointers + 0 14 28 42 56 64 72 86 94 102 116 130 130 138 152 160 + 174 174 182 196 204 212 220 234 242 242 250 264 272 280 294 302 + 302 310 324 + + 0 2 0 324 + # CSR values + -1.90916e-01 1.08963e-01 -2.60143e-02 1.28408e-02 1.14493e-01 -1.14782e-01 + -5.32481e-02 -8.58925e-02 1.50267e-02 2.44219e-02 1.24441e-03 4.47854e-03 + -1.89533e-02 -2.49393e-02 1.08963e-01 -5.76288e-02 1.47180e-02 -2.85688e-03 + -8.54004e-02 9.30856e-02 4.55577e-02 7.21480e-02 -1.76177e-02 -2.92430e-02 + -1.63342e-03 -3.89039e-04 2.21008e-02 2.91604e-02 -2.60143e-02 1.47180e-02 + -3.44327e-03 1.59819e-03 1.60756e-02 -1.54489e-02 -6.98731e-03 -1.12962e-02 + 2.30513e-03 3.79541e-03 6.26577e-04 -2.49383e-04 -3.04171e-03 -3.94737e-03 + 1.28408e-02 -2.85688e-03 1.59819e-03 -2.10795e-05 -1.50939e-02 1.22952e-02 + 6.63346e-03 1.01512e-02 -2.16077e-03 -3.57529e-03 3.06350e-03 -4.85025e-03 + 2.38369e-03 3.59444e-03 -1.11995e-03 2.18493e-03 -3.22523e-03 -2.44150e-03 + -6.42188e-04 4.74062e-04 -1.83562e-03 -2.47508e-03 -1.66575e-03 1.70626e-03 + -2.91421e-03 -2.00991e-03 -1.08699e-04 -4.62961e-04 -6.39299e-04 -2.61025e-03 + -1.14493e-01 8.54004e-02 -1.60756e-02 1.50939e-02 -1.08144e-03 -1.59836e-03 + -1.57783e-02 -2.82060e-02 -2.48959e-03 -4.11426e-03 7.10957e-04 1.69445e-03 + 6.88934e-03 9.02936e-03 2.18493e-03 4.51099e-05 7.49305e-05 1.08110e-05 + 1.00351e-03 -3.63507e-03 -7.16870e-05 1.96358e-04 1.70626e-03 2.18721e-05 + -1.48651e-05 -1.02523e-05 1.19912e-05 -1.30922e-05 -5.12927e-06 -1.01084e-05 + 1.14782e-01 -9.30856e-02 1.54489e-02 -1.22952e-02 -1.59836e-03 -1.02807e-02 + 6.94730e-03 1.43985e-02 -2.65117e-03 -4.56602e-03 4.54508e-03 -5.98578e-03 + -2.33335e-03 -2.54374e-03 -5.32481e-02 4.55577e-02 -6.98731e-03 6.63346e-03 + 1.57783e-02 -6.94730e-03 3.59506e-04 1.03446e-03 -7.30172e-04 -4.31935e-04 + -2.06105e-02 2.98763e-02 -4.17588e-04 -3.45840e-03 3.22523e-03 -7.49305e-05 + -1.21448e-03 -1.33014e-04 4.30268e-03 -1.40386e-02 -2.03451e-04 9.98986e-04 + -8.58925e-02 7.21480e-02 -1.12962e-02 1.01512e-02 2.82060e-02 -1.43985e-02 + 1.03446e-03 -1.63596e-03 1.27521e-04 3.20274e-04 1.71637e-02 -2.44357e-02 + -3.54229e-03 -2.24734e-03 2.91421e-03 1.48651e-05 -4.24644e-06 -2.92874e-06 + 2.17430e-05 -1.61673e-05 -3.72497e-07 1.68459e-05 1.50267e-02 -1.76177e-02 + 2.30513e-03 -2.16077e-03 2.48959e-03 2.65117e-03 -7.30172e-04 1.27521e-04 + -5.40628e-05 1.55548e-05 -1.06019e-02 1.50734e-02 9.65224e-04 -2.12176e-04 + 2.44150e-03 -1.08110e-05 -1.33014e-04 -1.67590e-05 4.90433e-04 -1.49889e-03 + -1.75304e-05 1.15863e-04 2.44219e-02 -2.92430e-02 3.79541e-03 -3.57529e-03 + 4.11426e-03 4.56602e-03 -4.31935e-04 3.20274e-04 1.55548e-05 -1.03716e-04 + -3.94168e-03 5.31435e-03 1.07877e-03 8.88122e-04 2.00991e-03 1.02523e-05 + -2.92874e-06 -2.01993e-06 1.49960e-05 -1.11505e-05 -2.56909e-07 1.16185e-05 + -6.42188e-04 1.00351e-03 -4.30268e-03 -4.90433e-04 1.25028e-02 -4.97262e-02 + -1.12738e-03 2.20133e-03 -1.08699e-04 1.19912e-05 -2.17430e-05 -1.49960e-05 + -1.51535e-06 -2.85173e-06 -4.66495e-06 -1.96552e-05 -1.24441e-03 1.63342e-03 + -6.26577e-04 -3.06350e-03 7.10957e-04 4.54508e-03 2.06105e-02 -1.71637e-02 + 1.06019e-02 3.94168e-03 -8.40059e-02 1.32479e-01 -4.31931e-03 -2.65619e-03 + 4.74062e-04 -3.63507e-03 1.40386e-02 1.49889e-03 -4.97262e-02 1.95922e-01 + 4.27888e-03 -9.01697e-03 -4.62961e-04 -1.30922e-05 1.61673e-05 1.11505e-05 + -2.85173e-06 5.52337e-06 4.06115e-06 1.35981e-05 -4.47854e-03 3.89039e-04 + 2.49383e-04 4.85025e-03 1.69445e-03 -5.98578e-03 -2.98763e-02 2.44357e-02 + -1.50734e-02 -5.31435e-03 1.32479e-01 -2.06442e-01 4.88920e-03 5.09090e-03 + -1.83562e-03 -7.16870e-05 2.03451e-04 1.75304e-05 -1.12738e-03 4.27888e-03 + 8.91611e-05 -2.10216e-04 -6.39299e-04 -5.12927e-06 3.72497e-07 2.56909e-07 + -4.66495e-06 4.06115e-06 7.78479e-07 -8.62100e-07 1.89533e-02 -2.21008e-02 + 3.04171e-03 -2.38369e-03 6.88934e-03 -2.33335e-03 4.17588e-04 3.54229e-03 + -9.65224e-04 -1.07877e-03 -4.31931e-03 4.88920e-03 8.13507e-04 -1.29210e-03 + -2.47508e-03 1.96358e-04 -9.98986e-04 -1.15863e-04 2.20133e-03 -9.01697e-03 + -2.10216e-04 3.77716e-04 -2.61025e-03 -1.01084e-05 -1.68459e-05 -1.16185e-05 + -1.96552e-05 1.35981e-05 -8.62100e-07 -1.99514e-05 2.49393e-02 -2.91604e-02 + 3.94737e-03 -3.59444e-03 9.02936e-03 -2.54374e-03 3.45840e-03 2.24734e-03 + 2.12176e-04 -8.88122e-04 -2.65619e-03 5.09090e-03 -1.29210e-03 -4.44466e-04 + # CSR column indices + 0 1 2 3 6 9 10 13 15 18 22 26 29 33 0 1 + 2 3 6 9 10 13 15 18 22 26 29 33 0 1 2 3 + 6 9 10 13 15 18 22 26 29 33 0 1 2 3 6 9 + 10 13 15 18 22 26 29 33 4 7 12 17 20 23 27 30 + 5 8 14 19 21 25 28 32 0 1 2 3 6 9 10 13 + 15 18 22 26 29 33 4 7 12 17 20 23 27 30 5 8 + 14 19 21 25 28 32 0 1 2 3 6 9 10 13 15 18 + 22 26 29 33 0 1 2 3 6 9 10 13 15 18 22 26 + 29 33 4 7 12 17 20 23 27 30 0 1 2 3 6 9 + 10 13 15 18 22 26 29 33 5 8 14 19 21 25 28 32 + 0 1 2 3 6 9 10 13 15 18 22 26 29 33 4 7 + 12 17 20 23 27 30 0 1 2 3 6 9 10 13 15 18 + 22 26 29 33 5 8 14 19 21 25 28 32 4 7 12 17 + 20 23 27 30 5 8 14 19 21 25 28 32 0 1 2 3 + 6 9 10 13 15 18 22 26 29 33 4 7 12 17 20 23 + 27 30 5 8 14 19 21 25 28 32 0 1 2 3 6 9 + 10 13 15 18 22 26 29 33 4 7 12 17 20 23 27 30 + 5 8 14 19 21 25 28 32 0 1 2 3 6 9 10 13 + 15 18 22 26 29 33 4 7 12 17 20 23 27 30 5 8 + 14 19 21 25 28 32 0 1 2 3 6 9 10 13 15 18 + 22 26 29 33 + # CSR row pointers + 0 14 28 42 56 64 72 86 94 102 116 130 130 138 152 160 + 174 174 182 196 204 212 220 234 242 242 250 264 272 280 294 302 + 302 310 324 + diff --git a/tests/03_NAO_multik/scf_out_dmr_dmk/result.ref b/tests/03_NAO_multik/scf_out_dmr_dmk/result.ref new file mode 100644 index 0000000000..48b0b32198 --- /dev/null +++ b/tests/03_NAO_multik/scf_out_dmr_dmk/result.ref @@ -0,0 +1,6 @@ +etotref -3461.88590513654 +etotperatomref -3461.8859051365 +pointgroupref D_2h +spacegroupref D_2h +nksibzref 2 +totaltimeref 0.80 diff --git a/tests/03_NAO_multik/scf_out_dos_spin2/INPUT b/tests/03_NAO_multik/scf_out_dos_spin2/INPUT new file mode 100644 index 0000000000..acebda9070 --- /dev/null +++ b/tests/03_NAO_multik/scf_out_dos_spin2/INPUT @@ -0,0 +1,30 @@ +INPUT_PARAMETERS +#Parameters (1.General) +suffix autotest +calculation scf + +nbands 20 +symmetry 1 +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB +gamma_only 0 + +#Parameters (2.Iteration) +ecutwfc 10 +scf_thr 1e-7 +scf_nmax 100 + +nspin 2 +#Parameters (3.Basis) +basis_type lcao + +#Parameters (4.Smearing) +smearing_method gauss +smearing_sigma 0.002 + +#Parameters (5.Mixing) +mixing_type broyden +mixing_beta 0.4 +mixing_beta_mag 0.4 + +out_dos 1 diff --git a/tests/03_NAO_multik/13_NO_KP_NC/KPT b/tests/03_NAO_multik/scf_out_dos_spin2/KPT similarity index 100% rename from tests/03_NAO_multik/13_NO_KP_NC/KPT rename to tests/03_NAO_multik/scf_out_dos_spin2/KPT diff --git a/tests/03_NAO_multik/12_NO_KP_FM_OD/README b/tests/03_NAO_multik/scf_out_dos_spin2/README similarity index 100% rename from tests/03_NAO_multik/12_NO_KP_FM_OD/README rename to tests/03_NAO_multik/scf_out_dos_spin2/README diff --git a/tests/03_NAO_multik/12_NO_KP_FM_OD/STRU b/tests/03_NAO_multik/scf_out_dos_spin2/STRU similarity index 100% rename from tests/03_NAO_multik/12_NO_KP_FM_OD/STRU rename to tests/03_NAO_multik/scf_out_dos_spin2/STRU diff --git a/tests/03_NAO_multik/12_NO_KP_FM_OD/result.ref b/tests/03_NAO_multik/scf_out_dos_spin2/result.ref similarity index 100% rename from tests/03_NAO_multik/12_NO_KP_FM_OD/result.ref rename to tests/03_NAO_multik/scf_out_dos_spin2/result.ref diff --git a/tests/03_NAO_multik/scf_out_dos_spin4/INPUT b/tests/03_NAO_multik/scf_out_dos_spin4/INPUT new file mode 100644 index 0000000000..cc94233170 --- /dev/null +++ b/tests/03_NAO_multik/scf_out_dos_spin4/INPUT @@ -0,0 +1,31 @@ +INPUT_PARAMETERS +#Parameters (General) +suffix autotest +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB + +gamma_only 0 + +calculation scf + +smearing_method gaussian +smearing_sigma 0.001 +#Parameters (3.PW) +ecutwfc 10 +scf_thr 1e-6 +scf_nmax 100 + +#noncolin 1 +lspinorb 1 +cal_force 1 +cal_stress 1 + +#Parameters (LCAO) +basis_type lcao +ks_solver scalapack_gvx +pw_diag_thr 0.00001 + +mixing_type pulay +mixing_beta 0.7 + +out_dos 1 diff --git a/tests/03_NAO_multik/47_NO_KP_SO_OD/KPT b/tests/03_NAO_multik/scf_out_dos_spin4/KPT similarity index 100% rename from tests/03_NAO_multik/47_NO_KP_SO_OD/KPT rename to tests/03_NAO_multik/scf_out_dos_spin4/KPT diff --git a/tests/03_NAO_multik/47_NO_KP_SO_OD/README b/tests/03_NAO_multik/scf_out_dos_spin4/README similarity index 100% rename from tests/03_NAO_multik/47_NO_KP_SO_OD/README rename to tests/03_NAO_multik/scf_out_dos_spin4/README diff --git a/tests/03_NAO_multik/47_NO_KP_SO_OD/STRU b/tests/03_NAO_multik/scf_out_dos_spin4/STRU similarity index 100% rename from tests/03_NAO_multik/47_NO_KP_SO_OD/STRU rename to tests/03_NAO_multik/scf_out_dos_spin4/STRU diff --git a/tests/03_NAO_multik/47_NO_KP_SO_OD/result.ref b/tests/03_NAO_multik/scf_out_dos_spin4/result.ref similarity index 100% rename from tests/03_NAO_multik/47_NO_KP_SO_OD/result.ref rename to tests/03_NAO_multik/scf_out_dos_spin4/result.ref diff --git a/tests/03_NAO_multik/scf_out_elf/INPUT b/tests/03_NAO_multik/scf_out_elf/INPUT new file mode 100644 index 0000000000..a67a28ba25 --- /dev/null +++ b/tests/03_NAO_multik/scf_out_elf/INPUT @@ -0,0 +1,28 @@ +INPUT_PARAMETERS +#Parameters (1.General) +suffix autotest +calculation scf + +nbands 20 +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB + +#Parameters (2.Iteration) +ecutwfc 5 +scf_thr 1e-7 +scf_nmax 100 + +nspin 4 +#Parameters (3.Basis) +basis_type lcao + +#Parameters (4.Smearing) +smearing_method gauss +smearing_sigma 0.002 + +#Parameters (5.Mixing) +mixing_type plain +mixing_beta 0.7 +mixing_gg0 0.0 + +out_elf 1 diff --git a/tests/03_NAO_multik/36_NO_KP_sol_H2/KPT b/tests/03_NAO_multik/scf_out_elf/KPT similarity index 100% rename from tests/03_NAO_multik/36_NO_KP_sol_H2/KPT rename to tests/03_NAO_multik/scf_out_elf/KPT diff --git a/tests/03_NAO_multik/scf_out_elf/README b/tests/03_NAO_multik/scf_out_elf/README new file mode 100644 index 0000000000..d79ca6f30b --- /dev/null +++ b/tests/03_NAO_multik/scf_out_elf/README @@ -0,0 +1 @@ +test out_elf for nspin=4 diff --git a/tests/03_NAO_multik/scf_out_elf/STRU b/tests/03_NAO_multik/scf_out_elf/STRU new file mode 100644 index 0000000000..40f8c4857a --- /dev/null +++ b/tests/03_NAO_multik/scf_out_elf/STRU @@ -0,0 +1,22 @@ +ATOMIC_SPECIES +C 12.0 C_ONCV_PBE-1.0.upf + +NUMERICAL_ORBITAL +C_gga_8au_100Ry_2s2p1d.orb + +LATTICE_CONSTANT +1.89035917 + +LATTICE_VECTORS +4.0 0.0 0.0 #latvec3 +0.0 4.0 0.0 +0.0 0.0 4.0 + +ATOMIC_POSITIONS +Direct + +C #label +0 #magnetism +1 #number of atoms +0.0 0.0000000000000000 0.0000000000000000 1 1 1 + diff --git a/tests/03_NAO_multik/scf_out_elf/refelf.cube b/tests/03_NAO_multik/scf_out_elf/refelf.cube new file mode 100644 index 0000000000..24c713447e --- /dev/null +++ b/tests/03_NAO_multik/scf_out_elf/refelf.cube @@ -0,0 +1,295 @@ +Ionic_Step 1 Cubefile created from ABACUS. Inner loop is z, followed by y and x +4 # number of spin directions +1 0.0 0.0 0.0 +12 0.630120 0.000000 0.000000 +12 0.000000 0.630120 0.000000 +12 0.000000 0.000000 0.630120 + 6 4.000000 0.000000 0.000000 0.000000 + 4.485e-02 1.509e-01 9.975e-01 8.082e-02 1.589e-02 1.478e-03 + 5.736e-04 1.478e-03 1.589e-02 8.082e-02 9.975e-01 1.509e-01 + 1.509e-01 3.764e-01 7.635e-01 6.868e-02 5.471e-02 1.544e-02 + 6.055e-07 1.544e-02 5.471e-02 6.868e-02 7.635e-01 3.764e-01 + 9.975e-01 7.635e-01 9.510e-01 7.489e-03 3.927e-03 3.699e-05 + 3.190e-04 3.699e-05 3.927e-03 7.489e-03 9.510e-01 7.635e-01 + 8.082e-02 6.868e-02 7.489e-03 9.488e-02 2.017e-03 1.419e-07 + 3.688e-04 1.419e-07 2.017e-03 9.488e-02 7.489e-03 6.868e-02 + 1.589e-02 5.471e-02 3.927e-03 2.017e-03 9.237e-11 3.368e-02 + 1.140e-04 3.368e-02 9.237e-11 2.017e-03 3.927e-03 5.471e-02 + 1.478e-03 1.544e-02 3.699e-05 1.419e-07 3.368e-02 9.707e-05 + 0.000e+00 9.707e-05 3.368e-02 1.419e-07 3.699e-05 1.544e-02 + 5.736e-04 6.055e-07 3.190e-04 3.688e-04 1.140e-04 0.000e+00 + 0.000e+00 0.000e+00 1.140e-04 3.688e-04 3.190e-04 6.055e-07 + 1.478e-03 1.544e-02 3.699e-05 1.419e-07 3.368e-02 9.707e-05 + 0.000e+00 9.707e-05 3.368e-02 1.419e-07 3.699e-05 1.544e-02 + 1.589e-02 5.471e-02 3.927e-03 2.017e-03 9.237e-11 3.368e-02 + 1.140e-04 3.368e-02 9.237e-11 2.017e-03 3.927e-03 5.471e-02 + 8.082e-02 6.868e-02 7.489e-03 9.488e-02 2.017e-03 1.419e-07 + 3.688e-04 1.419e-07 2.017e-03 9.488e-02 7.489e-03 6.868e-02 + 9.975e-01 7.635e-01 9.510e-01 7.489e-03 3.927e-03 3.699e-05 + 3.190e-04 3.699e-05 3.927e-03 7.489e-03 9.510e-01 7.635e-01 + 1.509e-01 3.764e-01 7.635e-01 6.868e-02 5.471e-02 1.544e-02 + 6.055e-07 1.544e-02 5.471e-02 6.868e-02 7.635e-01 3.764e-01 + 1.509e-01 3.764e-01 7.635e-01 6.868e-02 5.471e-02 1.544e-02 + 6.055e-07 1.544e-02 5.471e-02 6.868e-02 7.635e-01 3.764e-01 + 3.764e-01 7.933e-01 5.081e-01 6.566e-02 7.184e-03 1.439e-06 + 0.000e+00 1.439e-06 7.184e-03 6.566e-02 5.081e-01 7.933e-01 + 7.635e-01 5.081e-01 5.054e-01 2.038e-02 2.287e-03 0.000e+00 + 2.610e-04 0.000e+00 2.287e-03 2.038e-02 5.054e-01 5.081e-01 + 6.868e-02 6.566e-02 2.038e-02 1.182e-02 1.111e-03 0.000e+00 + 2.192e-04 0.000e+00 1.111e-03 1.182e-02 2.038e-02 6.566e-02 + 5.471e-02 7.184e-03 2.287e-03 1.111e-03 1.433e-03 1.332e-07 + 0.000e+00 1.332e-07 1.433e-03 1.111e-03 2.287e-03 7.184e-03 + 1.544e-02 1.439e-06 0.000e+00 0.000e+00 1.332e-07 1.549e-04 + 4.913e-05 1.549e-04 1.332e-07 0.000e+00 0.000e+00 1.439e-06 + 6.055e-07 0.000e+00 2.610e-04 2.192e-04 0.000e+00 4.913e-05 + 0.000e+00 4.913e-05 0.000e+00 2.192e-04 2.610e-04 0.000e+00 + 1.544e-02 1.439e-06 0.000e+00 0.000e+00 1.332e-07 1.549e-04 + 4.913e-05 1.549e-04 1.332e-07 0.000e+00 0.000e+00 1.439e-06 + 5.471e-02 7.184e-03 2.287e-03 1.111e-03 1.433e-03 1.332e-07 + 0.000e+00 1.332e-07 1.433e-03 1.111e-03 2.287e-03 7.184e-03 + 6.868e-02 6.566e-02 2.038e-02 1.182e-02 1.111e-03 0.000e+00 + 2.192e-04 0.000e+00 1.111e-03 1.182e-02 2.038e-02 6.566e-02 + 7.635e-01 5.081e-01 5.054e-01 2.038e-02 2.287e-03 0.000e+00 + 2.610e-04 0.000e+00 2.287e-03 2.038e-02 5.054e-01 5.081e-01 + 3.764e-01 7.933e-01 5.081e-01 6.566e-02 7.184e-03 1.439e-06 + 0.000e+00 1.439e-06 7.184e-03 6.566e-02 5.081e-01 7.933e-01 + 9.975e-01 7.635e-01 9.510e-01 7.489e-03 3.927e-03 3.699e-05 + 3.190e-04 3.699e-05 3.927e-03 7.489e-03 9.510e-01 7.635e-01 + 7.635e-01 5.081e-01 5.054e-01 2.038e-02 2.287e-03 0.000e+00 + 2.610e-04 0.000e+00 2.287e-03 2.038e-02 5.054e-01 5.081e-01 + 9.510e-01 5.054e-01 4.380e-03 8.176e-01 1.579e-03 0.000e+00 + 4.735e-04 0.000e+00 1.579e-03 8.176e-01 4.380e-03 5.054e-01 + 7.489e-03 2.038e-02 8.176e-01 3.283e-03 1.333e-04 0.000e+00 + 2.131e-04 0.000e+00 1.333e-04 3.283e-03 8.176e-01 2.038e-02 + 3.927e-03 2.287e-03 1.579e-03 1.333e-04 3.439e-04 2.366e-04 + 0.000e+00 2.366e-04 3.439e-04 1.333e-04 1.579e-03 2.287e-03 + 3.699e-05 0.000e+00 0.000e+00 0.000e+00 2.366e-04 1.055e-04 + 0.000e+00 1.055e-04 2.366e-04 0.000e+00 0.000e+00 0.000e+00 + 3.190e-04 2.610e-04 4.735e-04 2.131e-04 0.000e+00 0.000e+00 + 1.909e-06 0.000e+00 0.000e+00 2.131e-04 4.735e-04 2.610e-04 + 3.699e-05 0.000e+00 0.000e+00 0.000e+00 2.366e-04 1.055e-04 + 0.000e+00 1.055e-04 2.366e-04 0.000e+00 0.000e+00 0.000e+00 + 3.927e-03 2.287e-03 1.579e-03 1.333e-04 3.439e-04 2.366e-04 + 0.000e+00 2.366e-04 3.439e-04 1.333e-04 1.579e-03 2.287e-03 + 7.489e-03 2.038e-02 8.176e-01 3.283e-03 1.333e-04 0.000e+00 + 2.131e-04 0.000e+00 1.333e-04 3.283e-03 8.176e-01 2.038e-02 + 9.510e-01 5.054e-01 4.380e-03 8.176e-01 1.579e-03 0.000e+00 + 4.735e-04 0.000e+00 1.579e-03 8.176e-01 4.380e-03 5.054e-01 + 7.635e-01 5.081e-01 5.054e-01 2.038e-02 2.287e-03 0.000e+00 + 2.610e-04 0.000e+00 2.287e-03 2.038e-02 5.054e-01 5.081e-01 + 8.082e-02 6.868e-02 7.489e-03 9.488e-02 2.017e-03 1.419e-07 + 3.688e-04 1.419e-07 2.017e-03 9.488e-02 7.489e-03 6.868e-02 + 6.868e-02 6.566e-02 2.038e-02 1.182e-02 1.111e-03 0.000e+00 + 2.192e-04 0.000e+00 1.111e-03 1.182e-02 2.038e-02 6.566e-02 + 7.489e-03 2.038e-02 8.176e-01 3.283e-03 1.333e-04 0.000e+00 + 2.131e-04 0.000e+00 1.333e-04 3.283e-03 8.176e-01 2.038e-02 + 9.488e-02 1.182e-02 3.283e-03 4.084e-04 0.000e+00 8.567e-04 + 1.907e-04 8.567e-04 0.000e+00 4.084e-04 3.283e-03 1.182e-02 + 2.017e-03 1.111e-03 1.333e-04 0.000e+00 1.924e-04 1.041e-04 + 0.000e+00 1.041e-04 1.924e-04 0.000e+00 1.333e-04 1.111e-03 + 1.419e-07 0.000e+00 0.000e+00 8.567e-04 1.041e-04 5.037e-05 + 0.000e+00 5.037e-05 1.041e-04 8.567e-04 0.000e+00 0.000e+00 + 3.688e-04 2.192e-04 2.131e-04 1.907e-04 0.000e+00 0.000e+00 + 0.000e+00 0.000e+00 0.000e+00 1.907e-04 2.131e-04 2.192e-04 + 1.419e-07 0.000e+00 0.000e+00 8.567e-04 1.041e-04 5.037e-05 + 0.000e+00 5.037e-05 1.041e-04 8.567e-04 0.000e+00 0.000e+00 + 2.017e-03 1.111e-03 1.333e-04 0.000e+00 1.924e-04 1.041e-04 + 0.000e+00 1.041e-04 1.924e-04 0.000e+00 1.333e-04 1.111e-03 + 9.488e-02 1.182e-02 3.283e-03 4.084e-04 0.000e+00 8.567e-04 + 1.907e-04 8.567e-04 0.000e+00 4.084e-04 3.283e-03 1.182e-02 + 7.489e-03 2.038e-02 8.176e-01 3.283e-03 1.333e-04 0.000e+00 + 2.131e-04 0.000e+00 1.333e-04 3.283e-03 8.176e-01 2.038e-02 + 6.868e-02 6.566e-02 2.038e-02 1.182e-02 1.111e-03 0.000e+00 + 2.192e-04 0.000e+00 1.111e-03 1.182e-02 2.038e-02 6.566e-02 + 1.589e-02 5.471e-02 3.927e-03 2.017e-03 9.237e-11 3.368e-02 + 1.140e-04 3.368e-02 9.237e-11 2.017e-03 3.927e-03 5.471e-02 + 5.471e-02 7.184e-03 2.287e-03 1.111e-03 1.433e-03 1.332e-07 + 0.000e+00 1.332e-07 1.433e-03 1.111e-03 2.287e-03 7.184e-03 + 3.927e-03 2.287e-03 1.579e-03 1.333e-04 3.439e-04 2.366e-04 + 0.000e+00 2.366e-04 3.439e-04 1.333e-04 1.579e-03 2.287e-03 + 2.017e-03 1.111e-03 1.333e-04 0.000e+00 1.924e-04 1.041e-04 + 0.000e+00 1.041e-04 1.924e-04 0.000e+00 1.333e-04 1.111e-03 + 9.237e-11 1.433e-03 3.439e-04 1.924e-04 9.639e-05 0.000e+00 + 0.000e+00 0.000e+00 9.639e-05 1.924e-04 3.439e-04 1.433e-03 + 3.368e-02 1.332e-07 2.366e-04 1.041e-04 0.000e+00 0.000e+00 + 3.073e-05 0.000e+00 0.000e+00 1.041e-04 2.366e-04 1.332e-07 + 1.140e-04 0.000e+00 0.000e+00 0.000e+00 0.000e+00 3.073e-05 + 1.965e-04 3.073e-05 0.000e+00 0.000e+00 0.000e+00 0.000e+00 + 3.368e-02 1.332e-07 2.366e-04 1.041e-04 0.000e+00 0.000e+00 + 3.073e-05 0.000e+00 0.000e+00 1.041e-04 2.366e-04 1.332e-07 + 9.237e-11 1.433e-03 3.439e-04 1.924e-04 9.639e-05 0.000e+00 + 0.000e+00 0.000e+00 9.639e-05 1.924e-04 3.439e-04 1.433e-03 + 2.017e-03 1.111e-03 1.333e-04 0.000e+00 1.924e-04 1.041e-04 + 0.000e+00 1.041e-04 1.924e-04 0.000e+00 1.333e-04 1.111e-03 + 3.927e-03 2.287e-03 1.579e-03 1.333e-04 3.439e-04 2.366e-04 + 0.000e+00 2.366e-04 3.439e-04 1.333e-04 1.579e-03 2.287e-03 + 5.471e-02 7.184e-03 2.287e-03 1.111e-03 1.433e-03 1.332e-07 + 0.000e+00 1.332e-07 1.433e-03 1.111e-03 2.287e-03 7.184e-03 + 1.478e-03 1.544e-02 3.699e-05 1.419e-07 3.368e-02 9.707e-05 + 0.000e+00 9.707e-05 3.368e-02 1.419e-07 3.699e-05 1.544e-02 + 1.544e-02 1.439e-06 0.000e+00 0.000e+00 1.332e-07 1.549e-04 + 4.913e-05 1.549e-04 1.332e-07 0.000e+00 0.000e+00 1.439e-06 + 3.699e-05 0.000e+00 0.000e+00 0.000e+00 2.366e-04 1.055e-04 + 0.000e+00 1.055e-04 2.366e-04 0.000e+00 0.000e+00 0.000e+00 + 1.419e-07 0.000e+00 0.000e+00 8.567e-04 1.041e-04 5.037e-05 + 0.000e+00 5.037e-05 1.041e-04 8.567e-04 0.000e+00 0.000e+00 + 3.368e-02 1.332e-07 2.366e-04 1.041e-04 0.000e+00 0.000e+00 + 3.073e-05 0.000e+00 0.000e+00 1.041e-04 2.366e-04 1.332e-07 + 9.707e-05 1.549e-04 1.055e-04 5.037e-05 0.000e+00 0.000e+00 + 2.542e-05 0.000e+00 0.000e+00 5.037e-05 1.055e-04 1.549e-04 + 0.000e+00 4.913e-05 0.000e+00 0.000e+00 3.073e-05 2.542e-05 + 0.000e+00 2.542e-05 3.073e-05 0.000e+00 0.000e+00 4.913e-05 + 9.707e-05 1.549e-04 1.055e-04 5.037e-05 0.000e+00 0.000e+00 + 2.542e-05 0.000e+00 0.000e+00 5.037e-05 1.055e-04 1.549e-04 + 3.368e-02 1.332e-07 2.366e-04 1.041e-04 0.000e+00 0.000e+00 + 3.073e-05 0.000e+00 0.000e+00 1.041e-04 2.366e-04 1.332e-07 + 1.419e-07 0.000e+00 0.000e+00 8.567e-04 1.041e-04 5.037e-05 + 0.000e+00 5.037e-05 1.041e-04 8.567e-04 0.000e+00 0.000e+00 + 3.699e-05 0.000e+00 0.000e+00 0.000e+00 2.366e-04 1.055e-04 + 0.000e+00 1.055e-04 2.366e-04 0.000e+00 0.000e+00 0.000e+00 + 1.544e-02 1.439e-06 0.000e+00 0.000e+00 1.332e-07 1.549e-04 + 4.913e-05 1.549e-04 1.332e-07 0.000e+00 0.000e+00 1.439e-06 + 5.736e-04 6.055e-07 3.190e-04 3.688e-04 1.140e-04 0.000e+00 + 0.000e+00 0.000e+00 1.140e-04 3.688e-04 3.190e-04 6.055e-07 + 6.055e-07 0.000e+00 2.610e-04 2.192e-04 0.000e+00 4.913e-05 + 0.000e+00 4.913e-05 0.000e+00 2.192e-04 2.610e-04 0.000e+00 + 3.190e-04 2.610e-04 4.735e-04 2.131e-04 0.000e+00 0.000e+00 + 1.909e-06 0.000e+00 0.000e+00 2.131e-04 4.735e-04 2.610e-04 + 3.688e-04 2.192e-04 2.131e-04 1.907e-04 0.000e+00 0.000e+00 + 0.000e+00 0.000e+00 0.000e+00 1.907e-04 2.131e-04 2.192e-04 + 1.140e-04 0.000e+00 0.000e+00 0.000e+00 0.000e+00 3.073e-05 + 1.965e-04 3.073e-05 0.000e+00 0.000e+00 0.000e+00 0.000e+00 + 0.000e+00 4.913e-05 0.000e+00 0.000e+00 3.073e-05 2.542e-05 + 0.000e+00 2.542e-05 3.073e-05 0.000e+00 0.000e+00 4.913e-05 + 0.000e+00 0.000e+00 1.909e-06 0.000e+00 1.965e-04 0.000e+00 + 0.000e+00 0.000e+00 1.965e-04 0.000e+00 1.909e-06 0.000e+00 + 0.000e+00 4.913e-05 0.000e+00 0.000e+00 3.073e-05 2.542e-05 + 0.000e+00 2.542e-05 3.073e-05 0.000e+00 0.000e+00 4.913e-05 + 1.140e-04 0.000e+00 0.000e+00 0.000e+00 0.000e+00 3.073e-05 + 1.965e-04 3.073e-05 0.000e+00 0.000e+00 0.000e+00 0.000e+00 + 3.688e-04 2.192e-04 2.131e-04 1.907e-04 0.000e+00 0.000e+00 + 0.000e+00 0.000e+00 0.000e+00 1.907e-04 2.131e-04 2.192e-04 + 3.190e-04 2.610e-04 4.735e-04 2.131e-04 0.000e+00 0.000e+00 + 1.909e-06 0.000e+00 0.000e+00 2.131e-04 4.735e-04 2.610e-04 + 6.055e-07 0.000e+00 2.610e-04 2.192e-04 0.000e+00 4.913e-05 + 0.000e+00 4.913e-05 0.000e+00 2.192e-04 2.610e-04 0.000e+00 + 1.478e-03 1.544e-02 3.699e-05 1.419e-07 3.368e-02 9.707e-05 + 0.000e+00 9.707e-05 3.368e-02 1.419e-07 3.699e-05 1.544e-02 + 1.544e-02 1.439e-06 0.000e+00 0.000e+00 1.332e-07 1.549e-04 + 4.913e-05 1.549e-04 1.332e-07 0.000e+00 0.000e+00 1.439e-06 + 3.699e-05 0.000e+00 0.000e+00 0.000e+00 2.366e-04 1.055e-04 + 0.000e+00 1.055e-04 2.366e-04 0.000e+00 0.000e+00 0.000e+00 + 1.419e-07 0.000e+00 0.000e+00 8.567e-04 1.041e-04 5.037e-05 + 0.000e+00 5.037e-05 1.041e-04 8.567e-04 0.000e+00 0.000e+00 + 3.368e-02 1.332e-07 2.366e-04 1.041e-04 0.000e+00 0.000e+00 + 3.073e-05 0.000e+00 0.000e+00 1.041e-04 2.366e-04 1.332e-07 + 9.707e-05 1.549e-04 1.055e-04 5.037e-05 0.000e+00 0.000e+00 + 2.542e-05 0.000e+00 0.000e+00 5.037e-05 1.055e-04 1.549e-04 + 0.000e+00 4.913e-05 0.000e+00 0.000e+00 3.073e-05 2.542e-05 + 0.000e+00 2.542e-05 3.073e-05 0.000e+00 0.000e+00 4.913e-05 + 9.707e-05 1.549e-04 1.055e-04 5.037e-05 0.000e+00 0.000e+00 + 2.542e-05 0.000e+00 0.000e+00 5.037e-05 1.055e-04 1.549e-04 + 3.368e-02 1.332e-07 2.366e-04 1.041e-04 0.000e+00 0.000e+00 + 3.073e-05 0.000e+00 0.000e+00 1.041e-04 2.366e-04 1.332e-07 + 1.419e-07 0.000e+00 0.000e+00 8.567e-04 1.041e-04 5.037e-05 + 0.000e+00 5.037e-05 1.041e-04 8.567e-04 0.000e+00 0.000e+00 + 3.699e-05 0.000e+00 0.000e+00 0.000e+00 2.366e-04 1.055e-04 + 0.000e+00 1.055e-04 2.366e-04 0.000e+00 0.000e+00 0.000e+00 + 1.544e-02 1.439e-06 0.000e+00 0.000e+00 1.332e-07 1.549e-04 + 4.913e-05 1.549e-04 1.332e-07 0.000e+00 0.000e+00 1.439e-06 + 1.589e-02 5.471e-02 3.927e-03 2.017e-03 9.237e-11 3.368e-02 + 1.140e-04 3.368e-02 9.237e-11 2.017e-03 3.927e-03 5.471e-02 + 5.471e-02 7.184e-03 2.287e-03 1.111e-03 1.433e-03 1.332e-07 + 0.000e+00 1.332e-07 1.433e-03 1.111e-03 2.287e-03 7.184e-03 + 3.927e-03 2.287e-03 1.579e-03 1.333e-04 3.439e-04 2.366e-04 + 0.000e+00 2.366e-04 3.439e-04 1.333e-04 1.579e-03 2.287e-03 + 2.017e-03 1.111e-03 1.333e-04 0.000e+00 1.924e-04 1.041e-04 + 0.000e+00 1.041e-04 1.924e-04 0.000e+00 1.333e-04 1.111e-03 + 9.237e-11 1.433e-03 3.439e-04 1.924e-04 9.639e-05 0.000e+00 + 0.000e+00 0.000e+00 9.639e-05 1.924e-04 3.439e-04 1.433e-03 + 3.368e-02 1.332e-07 2.366e-04 1.041e-04 0.000e+00 0.000e+00 + 3.073e-05 0.000e+00 0.000e+00 1.041e-04 2.366e-04 1.332e-07 + 1.140e-04 0.000e+00 0.000e+00 0.000e+00 0.000e+00 3.073e-05 + 1.965e-04 3.073e-05 0.000e+00 0.000e+00 0.000e+00 0.000e+00 + 3.368e-02 1.332e-07 2.366e-04 1.041e-04 0.000e+00 0.000e+00 + 3.073e-05 0.000e+00 0.000e+00 1.041e-04 2.366e-04 1.332e-07 + 9.237e-11 1.433e-03 3.439e-04 1.924e-04 9.639e-05 0.000e+00 + 0.000e+00 0.000e+00 9.639e-05 1.924e-04 3.439e-04 1.433e-03 + 2.017e-03 1.111e-03 1.333e-04 0.000e+00 1.924e-04 1.041e-04 + 0.000e+00 1.041e-04 1.924e-04 0.000e+00 1.333e-04 1.111e-03 + 3.927e-03 2.287e-03 1.579e-03 1.333e-04 3.439e-04 2.366e-04 + 0.000e+00 2.366e-04 3.439e-04 1.333e-04 1.579e-03 2.287e-03 + 5.471e-02 7.184e-03 2.287e-03 1.111e-03 1.433e-03 1.332e-07 + 0.000e+00 1.332e-07 1.433e-03 1.111e-03 2.287e-03 7.184e-03 + 8.082e-02 6.868e-02 7.489e-03 9.488e-02 2.017e-03 1.419e-07 + 3.688e-04 1.419e-07 2.017e-03 9.488e-02 7.489e-03 6.868e-02 + 6.868e-02 6.566e-02 2.038e-02 1.182e-02 1.111e-03 0.000e+00 + 2.192e-04 0.000e+00 1.111e-03 1.182e-02 2.038e-02 6.566e-02 + 7.489e-03 2.038e-02 8.176e-01 3.283e-03 1.333e-04 0.000e+00 + 2.131e-04 0.000e+00 1.333e-04 3.283e-03 8.176e-01 2.038e-02 + 9.488e-02 1.182e-02 3.283e-03 4.084e-04 0.000e+00 8.567e-04 + 1.907e-04 8.567e-04 0.000e+00 4.084e-04 3.283e-03 1.182e-02 + 2.017e-03 1.111e-03 1.333e-04 0.000e+00 1.924e-04 1.041e-04 + 0.000e+00 1.041e-04 1.924e-04 0.000e+00 1.333e-04 1.111e-03 + 1.419e-07 0.000e+00 0.000e+00 8.567e-04 1.041e-04 5.037e-05 + 0.000e+00 5.037e-05 1.041e-04 8.567e-04 0.000e+00 0.000e+00 + 3.688e-04 2.192e-04 2.131e-04 1.907e-04 0.000e+00 0.000e+00 + 0.000e+00 0.000e+00 0.000e+00 1.907e-04 2.131e-04 2.192e-04 + 1.419e-07 0.000e+00 0.000e+00 8.567e-04 1.041e-04 5.037e-05 + 0.000e+00 5.037e-05 1.041e-04 8.567e-04 0.000e+00 0.000e+00 + 2.017e-03 1.111e-03 1.333e-04 0.000e+00 1.924e-04 1.041e-04 + 0.000e+00 1.041e-04 1.924e-04 0.000e+00 1.333e-04 1.111e-03 + 9.488e-02 1.182e-02 3.283e-03 4.084e-04 0.000e+00 8.567e-04 + 1.907e-04 8.567e-04 0.000e+00 4.084e-04 3.283e-03 1.182e-02 + 7.489e-03 2.038e-02 8.176e-01 3.283e-03 1.333e-04 0.000e+00 + 2.131e-04 0.000e+00 1.333e-04 3.283e-03 8.176e-01 2.038e-02 + 6.868e-02 6.566e-02 2.038e-02 1.182e-02 1.111e-03 0.000e+00 + 2.192e-04 0.000e+00 1.111e-03 1.182e-02 2.038e-02 6.566e-02 + 9.975e-01 7.635e-01 9.510e-01 7.489e-03 3.927e-03 3.699e-05 + 3.190e-04 3.699e-05 3.927e-03 7.489e-03 9.510e-01 7.635e-01 + 7.635e-01 5.081e-01 5.054e-01 2.038e-02 2.287e-03 0.000e+00 + 2.610e-04 0.000e+00 2.287e-03 2.038e-02 5.054e-01 5.081e-01 + 9.510e-01 5.054e-01 4.380e-03 8.176e-01 1.579e-03 0.000e+00 + 4.735e-04 0.000e+00 1.579e-03 8.176e-01 4.380e-03 5.054e-01 + 7.489e-03 2.038e-02 8.176e-01 3.283e-03 1.333e-04 0.000e+00 + 2.131e-04 0.000e+00 1.333e-04 3.283e-03 8.176e-01 2.038e-02 + 3.927e-03 2.287e-03 1.579e-03 1.333e-04 3.439e-04 2.366e-04 + 0.000e+00 2.366e-04 3.439e-04 1.333e-04 1.579e-03 2.287e-03 + 3.699e-05 0.000e+00 0.000e+00 0.000e+00 2.366e-04 1.055e-04 + 0.000e+00 1.055e-04 2.366e-04 0.000e+00 0.000e+00 0.000e+00 + 3.190e-04 2.610e-04 4.735e-04 2.131e-04 0.000e+00 0.000e+00 + 1.909e-06 0.000e+00 0.000e+00 2.131e-04 4.735e-04 2.610e-04 + 3.699e-05 0.000e+00 0.000e+00 0.000e+00 2.366e-04 1.055e-04 + 0.000e+00 1.055e-04 2.366e-04 0.000e+00 0.000e+00 0.000e+00 + 3.927e-03 2.287e-03 1.579e-03 1.333e-04 3.439e-04 2.366e-04 + 0.000e+00 2.366e-04 3.439e-04 1.333e-04 1.579e-03 2.287e-03 + 7.489e-03 2.038e-02 8.176e-01 3.283e-03 1.333e-04 0.000e+00 + 2.131e-04 0.000e+00 1.333e-04 3.283e-03 8.176e-01 2.038e-02 + 9.510e-01 5.054e-01 4.380e-03 8.176e-01 1.579e-03 0.000e+00 + 4.735e-04 0.000e+00 1.579e-03 8.176e-01 4.380e-03 5.054e-01 + 7.635e-01 5.081e-01 5.054e-01 2.038e-02 2.287e-03 0.000e+00 + 2.610e-04 0.000e+00 2.287e-03 2.038e-02 5.054e-01 5.081e-01 + 1.509e-01 3.764e-01 7.635e-01 6.868e-02 5.471e-02 1.544e-02 + 6.055e-07 1.544e-02 5.471e-02 6.868e-02 7.635e-01 3.764e-01 + 3.764e-01 7.933e-01 5.081e-01 6.566e-02 7.184e-03 1.439e-06 + 0.000e+00 1.439e-06 7.184e-03 6.566e-02 5.081e-01 7.933e-01 + 7.635e-01 5.081e-01 5.054e-01 2.038e-02 2.287e-03 0.000e+00 + 2.610e-04 0.000e+00 2.287e-03 2.038e-02 5.054e-01 5.081e-01 + 6.868e-02 6.566e-02 2.038e-02 1.182e-02 1.111e-03 0.000e+00 + 2.192e-04 0.000e+00 1.111e-03 1.182e-02 2.038e-02 6.566e-02 + 5.471e-02 7.184e-03 2.287e-03 1.111e-03 1.433e-03 1.332e-07 + 0.000e+00 1.332e-07 1.433e-03 1.111e-03 2.287e-03 7.184e-03 + 1.544e-02 1.439e-06 0.000e+00 0.000e+00 1.332e-07 1.549e-04 + 4.913e-05 1.549e-04 1.332e-07 0.000e+00 0.000e+00 1.439e-06 + 6.055e-07 0.000e+00 2.610e-04 2.192e-04 0.000e+00 4.913e-05 + 0.000e+00 4.913e-05 0.000e+00 2.192e-04 2.610e-04 0.000e+00 + 1.544e-02 1.439e-06 0.000e+00 0.000e+00 1.332e-07 1.549e-04 + 4.913e-05 1.549e-04 1.332e-07 0.000e+00 0.000e+00 1.439e-06 + 5.471e-02 7.184e-03 2.287e-03 1.111e-03 1.433e-03 1.332e-07 + 0.000e+00 1.332e-07 1.433e-03 1.111e-03 2.287e-03 7.184e-03 + 6.868e-02 6.566e-02 2.038e-02 1.182e-02 1.111e-03 0.000e+00 + 2.192e-04 0.000e+00 1.111e-03 1.182e-02 2.038e-02 6.566e-02 + 7.635e-01 5.081e-01 5.054e-01 2.038e-02 2.287e-03 0.000e+00 + 2.610e-04 0.000e+00 2.287e-03 2.038e-02 5.054e-01 5.081e-01 + 3.764e-01 7.933e-01 5.081e-01 6.566e-02 7.184e-03 1.439e-06 + 0.000e+00 1.439e-06 7.184e-03 6.566e-02 5.081e-01 7.933e-01 diff --git a/tests/03_NAO_multik/scf_out_elf/result.ref b/tests/03_NAO_multik/scf_out_elf/result.ref new file mode 100644 index 0000000000..dc363cbe4c --- /dev/null +++ b/tests/03_NAO_multik/scf_out_elf/result.ref @@ -0,0 +1,4 @@ +etotref -146.7749964274117 +etotperatomref -146.7749964274 +ComparePot1_pass 0 +totaltimeref 1.39 diff --git a/tests/03_NAO_multik/scf_out_hsk/INPUT b/tests/03_NAO_multik/scf_out_hsk/INPUT new file mode 100644 index 0000000000..a61a460531 --- /dev/null +++ b/tests/03_NAO_multik/scf_out_hsk/INPUT @@ -0,0 +1,29 @@ +INPUT_PARAMETERS +#Parameters (1.General) +suffix autotest +calculation scf + +nbands 6 +symmetry 0 +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB +gamma_only 0 + +#Parameters (2.Iteration) +ecutwfc 20 +scf_thr 1e-8 +scf_nmax 50 + +#Parameters (3.Basis) +basis_type lcao + +#Parameters (4.Smearing) +smearing_method gauss +smearing_sigma 0.002 + +#Parameters (5.Mixing) +mixing_type broyden +mixing_beta 0.7 + +out_mat_hs 1 3 +ks_solver scalapack_gvx diff --git a/tests/03_NAO_multik/26_NO_KP_RE_MB/KPT b/tests/03_NAO_multik/scf_out_hsk/KPT similarity index 100% rename from tests/03_NAO_multik/26_NO_KP_RE_MB/KPT rename to tests/03_NAO_multik/scf_out_hsk/KPT diff --git a/tests/03_NAO_multik/17_NO_KP_OH/README b/tests/03_NAO_multik/scf_out_hsk/README similarity index 100% rename from tests/03_NAO_multik/17_NO_KP_OH/README rename to tests/03_NAO_multik/scf_out_hsk/README diff --git a/tests/03_NAO_multik/scf_out_hsk/STRU b/tests/03_NAO_multik/scf_out_hsk/STRU new file mode 100644 index 0000000000..b1c8ce954a --- /dev/null +++ b/tests/03_NAO_multik/scf_out_hsk/STRU @@ -0,0 +1,22 @@ +ATOMIC_SPECIES +Si 14 Si_dojo_nsoc.upf + +NUMERICAL_ORBITAL +Si_dojo_6au_sz.orb + +LATTICE_CONSTANT +10.2 // add lattice constant + +LATTICE_VECTORS +0.0 0.5 0.5 +0.5 0.0 0.5 +0.5 0.5 0.0 + +ATOMIC_POSITIONS +Direct + +Si // Element type +0.0 // magnetism +2 +0.00 0.00 0.00 1 1 1 +0.25 0.25 0.25 1 1 1 diff --git a/tests/03_NAO_multik/scf_out_hsk/hk2_nao.txt.ref b/tests/03_NAO_multik/scf_out_hsk/hk2_nao.txt.ref new file mode 100644 index 0000000000..2febe1208f --- /dev/null +++ b/tests/03_NAO_multik/scf_out_hsk/hk2_nao.txt.ref @@ -0,0 +1,23 @@ +#------------------------------------------------------------------------ +# ionic step 1 +# filename OUT.autotest/hk2_nao.txt +# gamma only 0 +# rows 8 +# columns 8 +#------------------------------------------------------------------------ +Row 1 + (5.166e-02,-3.852e-32) (6.663e-03,1.288e-16) (6.663e-03,1.288e-16) (-6.663e-03,-1.288e-16) (-1.844e-01,-8.423e-16) (9.209e-02,-2.027e-16) (9.209e-02,-2.027e-16) (-9.209e-02,2.027e-16) +Row 2 + (1.445e+00,-6.019e-36) (1.126e-01,2.138e-29) (-1.126e-01,-2.586e-29) (-9.209e-02,2.027e-16) (1.090e-01,-3.838e-16) (-3.637e-02,4.150e-16) (3.637e-02,-4.150e-16) +Row 3 + (1.445e+00,-5.381e-33) (-1.126e-01,-4.535e-30) (-9.209e-02,2.027e-16) (-3.637e-02,4.150e-16) (1.090e-01,-3.838e-16) (3.637e-02,-4.150e-16) +Row 4 + (1.445e+00,1.852e-32) (9.209e-02,-2.027e-16) (3.637e-02,-4.150e-16) (3.637e-02,-4.150e-16) (1.090e-01,-3.838e-16) +Row 5 + (5.166e-02,-1.233e-32) (-6.663e-03,1.288e-16) (-6.663e-03,1.288e-16) (6.663e-03,-1.288e-16) +Row 6 + (1.445e+00,-2.312e-32) (1.126e-01,-2.271e-29) (-1.126e-01,2.667e-29) +Row 7 + (1.445e+00,2.543e-32) (-1.126e-01,3.883e-30) +Row 8 + (1.445e+00,-5.621e-32) diff --git a/tests/03_NAO_multik/scf_out_hsk/result.ref b/tests/03_NAO_multik/scf_out_hsk/result.ref new file mode 100644 index 0000000000..e92647c437 --- /dev/null +++ b/tests/03_NAO_multik/scf_out_hsk/result.ref @@ -0,0 +1,5 @@ +etotref -194.1602102900063 +etotperatomref -97.0801051450 +CompareH_pass 0 +CompareS_pass 0 +totaltimeref 0.33 diff --git a/tests/03_NAO_multik/scf_out_hsk/sk2_nao.txt.ref b/tests/03_NAO_multik/scf_out_hsk/sk2_nao.txt.ref new file mode 100644 index 0000000000..40dc7dd22e --- /dev/null +++ b/tests/03_NAO_multik/scf_out_hsk/sk2_nao.txt.ref @@ -0,0 +1,23 @@ +#------------------------------------------------------------------------ +# ionic step 1 +# filename OUT.autotest/sk2_nao.txt +# gamma only 0 +# rows 8 +# columns 8 +#------------------------------------------------------------------------ +Row 1 + (9.996e-01,2.696e-32) (6.505e-19,-6.918e-16) (0.000e+00,-6.918e-16) (0.000e+00,6.918e-16) (3.859e-01,1.528e-15) (-1.288e-02,-1.723e-16) (-1.288e-02,-1.723e-16) (1.288e-02,1.723e-16) +Row 2 + (1.012e+00,0.000e+00) (-7.121e-02,0.000e+00) (7.121e-02,0.000e+00) (1.288e-02,1.723e-16) (-1.220e-01,-5.729e-16) (9.660e-02,-1.723e-16) (-9.660e-02,1.723e-16) +Row 3 + (1.012e+00,2.196e-32) (7.121e-02,0.000e+00) (1.288e-02,1.723e-16) (9.660e-02,-1.723e-16) (-1.220e-01,-5.729e-16) (-9.660e-02,1.723e-16) +Row 4 + (1.012e+00,3.852e-34) (-1.288e-02,-1.723e-16) (-9.660e-02,1.723e-16) (-9.660e-02,1.723e-16) (-1.220e-01,-5.729e-16) +Row 5 + (9.996e-01,2.696e-32) (6.505e-19,-6.918e-16) (0.000e+00,-6.918e-16) (0.000e+00,6.918e-16) +Row 6 + (1.012e+00,0.000e+00) (-7.121e-02,0.000e+00) (7.121e-02,0.000e+00) +Row 7 + (1.012e+00,2.196e-32) (7.121e-02,0.000e+00) +Row 8 + (1.012e+00,3.852e-34) diff --git a/tests/03_NAO_multik/scf_out_hsr/INPUT b/tests/03_NAO_multik/scf_out_hsr/INPUT new file mode 100644 index 0000000000..ed21e1725e --- /dev/null +++ b/tests/03_NAO_multik/scf_out_hsr/INPUT @@ -0,0 +1,30 @@ +INPUT_PARAMETERS +#Parameters (1.General) +suffix autotest +calculation scf + +nbands 6 +symmetry 0 +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB +gamma_only 0 + +#Parameters (2.Iteration) +ecutwfc 20 +scf_thr 1e-8 +scf_nmax 1 + +#Parameters (3.Basis) +basis_type lcao + +#Parameters (4.Smearing) +smearing_method gauss +smearing_sigma 0.002 + +#Parameters (5.Mixing) +mixing_type broyden +mixing_beta 0.7 +mixing_gg0 0.0 + +out_mat_hs2 1 5 +ks_solver scalapack_gvx diff --git a/tests/03_NAO_multik/41_NO_KP_MSST/KPT b/tests/03_NAO_multik/scf_out_hsr/KPT similarity index 100% rename from tests/03_NAO_multik/41_NO_KP_MSST/KPT rename to tests/03_NAO_multik/scf_out_hsr/KPT diff --git a/tests/03_NAO_multik/18_NO_KP_OH2/README b/tests/03_NAO_multik/scf_out_hsr/README similarity index 100% rename from tests/03_NAO_multik/18_NO_KP_OH2/README rename to tests/03_NAO_multik/scf_out_hsr/README diff --git a/tests/03_NAO_multik/19_NO_KP_OH_nscf/STRU b/tests/03_NAO_multik/scf_out_hsr/STRU similarity index 100% rename from tests/03_NAO_multik/19_NO_KP_OH_nscf/STRU rename to tests/03_NAO_multik/scf_out_hsr/STRU diff --git a/tests/03_NAO_multik/18_NO_KP_OH2/hrs1_nao.csr.ref b/tests/03_NAO_multik/scf_out_hsr/hrs1_nao.csr.ref similarity index 100% rename from tests/03_NAO_multik/18_NO_KP_OH2/hrs1_nao.csr.ref rename to tests/03_NAO_multik/scf_out_hsr/hrs1_nao.csr.ref diff --git a/tests/03_NAO_multik/18_NO_KP_OH2/result.ref b/tests/03_NAO_multik/scf_out_hsr/result.ref similarity index 100% rename from tests/03_NAO_multik/18_NO_KP_OH2/result.ref rename to tests/03_NAO_multik/scf_out_hsr/result.ref diff --git a/tests/03_NAO_multik/19_NO_KP_OH_nscf/srs1_nao.csr.ref b/tests/03_NAO_multik/scf_out_hsr/srs1_nao.csr.ref similarity index 100% rename from tests/03_NAO_multik/19_NO_KP_OH_nscf/srs1_nao.csr.ref rename to tests/03_NAO_multik/scf_out_hsr/srs1_nao.csr.ref diff --git a/tests/03_NAO_multik/scf_out_hsr_spin4/INPUT b/tests/03_NAO_multik/scf_out_hsr_spin4/INPUT new file mode 100644 index 0000000000..4c44f6cb40 --- /dev/null +++ b/tests/03_NAO_multik/scf_out_hsr_spin4/INPUT @@ -0,0 +1,30 @@ +INPUT_PARAMETERS +#Parameters (1.General) +suffix autotest +calculation scf + +nbands 20 +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB + +#Parameters (2.Iteration) +ecutwfc 20 +scf_thr 1e-4 +scf_nmax 100 + +nspin 4 +#Parameters (3.Basis) +basis_type lcao + +#Parameters (4.Smearing) +smearing_method gauss +smearing_sigma 0.002 + +#Parameters (5.Mixing) +mixing_type plain +mixing_beta 0.7 +mixing_gg0 0.0 + +out_mat_hs2 1 +out_mat_r 1 +out_ndigits 5 diff --git a/tests/03_NAO_multik/42_NO_KP_MSST2/KPT b/tests/03_NAO_multik/scf_out_hsr_spin4/KPT similarity index 100% rename from tests/03_NAO_multik/42_NO_KP_MSST2/KPT rename to tests/03_NAO_multik/scf_out_hsr_spin4/KPT diff --git a/tests/03_NAO_multik/20_NO_KP_OHS_S4/README b/tests/03_NAO_multik/scf_out_hsr_spin4/README similarity index 100% rename from tests/03_NAO_multik/20_NO_KP_OHS_S4/README rename to tests/03_NAO_multik/scf_out_hsr_spin4/README diff --git a/tests/03_NAO_multik/22_NO_KP_OTdH/STRU b/tests/03_NAO_multik/scf_out_hsr_spin4/STRU similarity index 100% rename from tests/03_NAO_multik/22_NO_KP_OTdH/STRU rename to tests/03_NAO_multik/scf_out_hsr_spin4/STRU diff --git a/tests/03_NAO_multik/20_NO_KP_OHS_S4/hrs1_nao.csr.ref b/tests/03_NAO_multik/scf_out_hsr_spin4/hrs1_nao.csr.ref similarity index 100% rename from tests/03_NAO_multik/20_NO_KP_OHS_S4/hrs1_nao.csr.ref rename to tests/03_NAO_multik/scf_out_hsr_spin4/hrs1_nao.csr.ref diff --git a/tests/03_NAO_multik/20_NO_KP_OHS_S4/result.ref b/tests/03_NAO_multik/scf_out_hsr_spin4/result.ref similarity index 100% rename from tests/03_NAO_multik/20_NO_KP_OHS_S4/result.ref rename to tests/03_NAO_multik/scf_out_hsr_spin4/result.ref diff --git a/tests/03_NAO_multik/20_NO_KP_OHS_S4/rr.csr.ref b/tests/03_NAO_multik/scf_out_hsr_spin4/rr.csr.ref similarity index 100% rename from tests/03_NAO_multik/20_NO_KP_OHS_S4/rr.csr.ref rename to tests/03_NAO_multik/scf_out_hsr_spin4/rr.csr.ref diff --git a/tests/03_NAO_multik/20_NO_KP_OHS_S4/srs1_nao.csr.ref b/tests/03_NAO_multik/scf_out_hsr_spin4/srs1_nao.csr.ref similarity index 100% rename from tests/03_NAO_multik/20_NO_KP_OHS_S4/srs1_nao.csr.ref rename to tests/03_NAO_multik/scf_out_hsr_spin4/srs1_nao.csr.ref diff --git a/tests/03_NAO_multik/scf_out_mul/INPUT b/tests/03_NAO_multik/scf_out_mul/INPUT new file mode 100644 index 0000000000..51bc881397 --- /dev/null +++ b/tests/03_NAO_multik/scf_out_mul/INPUT @@ -0,0 +1,20 @@ +INPUT_PARAMETERS +#Parameters (System) +suffix autotest + +nbands 4 +stru_file STRU +kpoint_file KPT +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB +latname sc +#Parameters (PW) +ecutwfc 25.0 # Rydberg +#Parameters (electronic) +basis_type lcao +scf_thr 1e-10 + +calculation scf +out_mul 1 +cal_force 1 +cal_stress 1 diff --git a/tests/03_NAO_multik/53_NO_PK_URAMP/KPT b/tests/03_NAO_multik/scf_out_mul/KPT similarity index 100% rename from tests/03_NAO_multik/53_NO_PK_URAMP/KPT rename to tests/03_NAO_multik/scf_out_mul/KPT diff --git a/tests/03_NAO_multik/34_NO_KP_MU/README b/tests/03_NAO_multik/scf_out_mul/README similarity index 100% rename from tests/03_NAO_multik/34_NO_KP_MU/README rename to tests/03_NAO_multik/scf_out_mul/README diff --git a/tests/03_NAO_multik/scf_out_mul/STRU b/tests/03_NAO_multik/scf_out_mul/STRU new file mode 100644 index 0000000000..30af97b4b4 --- /dev/null +++ b/tests/03_NAO_multik/scf_out_mul/STRU @@ -0,0 +1,19 @@ +#This is the atom file containing all the information +#about the lattice structure. + +ATOMIC_SPECIES +H 1.0008 H_ONCV_PBE-1.0.upf + +NUMERICAL_ORBITAL +H_gga_6au_60Ry_2s1p.orb + +LATTICE_CONSTANT +10.0 #Lattice constant + +ATOMIC_POSITIONS +Cartesian #Cartesian(Unit is LATTICE_CONSTANT) +H #Name of element +0.0 #Magnetic for this element. +2 #Number of atoms +0.00 0.00 -0.0661400 0 0 0 #x,y,z, move_x, move_y, move_z +0.00 0.00 0.0661400 0 0 0 #x,y,z, move_x, move_y, move_z diff --git a/tests/03_NAO_multik/scf_out_mul/mulliken.txt.ref b/tests/03_NAO_multik/scf_out_mul/mulliken.txt.ref new file mode 100644 index 0000000000..54b2d9a58c --- /dev/null +++ b/tests/03_NAO_multik/scf_out_mul/mulliken.txt.ref @@ -0,0 +1,41 @@ + --- Ionic Step 1 --- + Total charge 2 + Decomposed Mulliken population analysis for each atom + l and m from Ylm, z stands for zeta orbital + + ------------------ + Atom 1 is H + ------------------ + zeta spin1 + s 1 0.9980 + s 2 -0.0051 + sum mz 0.9929 + + pz 1 0.0071 + px 1 0.0000 + py 1 0.0000 + sum m 0.0071 + sum mz 0.0071 + + sum lmz 1.0000 + + total charge on atom 1 1.0000 + + ------------------ + Atom 2 is H + ------------------ + zeta spin1 + s 1 0.9980 + s 2 -0.0051 + sum mz 0.9929 + + pz 1 0.0071 + px 1 0.0000 + py 1 0.0000 + sum m 0.0071 + sum mz 0.0071 + + sum lmz 1.0000 + + total charge on atom 2 1.0000 + diff --git a/tests/03_NAO_multik/34_NO_KP_MU/result.ref b/tests/03_NAO_multik/scf_out_mul/result.ref similarity index 100% rename from tests/03_NAO_multik/34_NO_KP_MU/result.ref rename to tests/03_NAO_multik/scf_out_mul/result.ref diff --git a/tests/03_NAO_multik/scf_out_mul_nupdw/INPUT b/tests/03_NAO_multik/scf_out_mul_nupdw/INPUT new file mode 100644 index 0000000000..c3de8edf8a --- /dev/null +++ b/tests/03_NAO_multik/scf_out_mul_nupdw/INPUT @@ -0,0 +1,31 @@ +INPUT_PARAMETERS +#Parameters (1.General) +suffix autotest +calculation scf + +nbands 8 +symmetry 1 +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB +nspin 2 +nelec 9 + +#Parameters (2.Iteration) +ecutwfc 10 +scf_thr 1e-7 +scf_nmax 100 + + +#Parameters (3.Basis) +basis_type lcao + +#Parameters (4.Smearing) +smearing_method gauss +smearing_sigma 0.002 + +#Parameters (5.Mixing) +mixing_type pulay +mixing_beta 0.7 + +nupdown 0.0 +out_mul 1 diff --git a/tests/03_NAO_multik/31_NO_KP_nupdown0/KPT b/tests/03_NAO_multik/scf_out_mul_nupdw/KPT similarity index 100% rename from tests/03_NAO_multik/31_NO_KP_nupdown0/KPT rename to tests/03_NAO_multik/scf_out_mul_nupdw/KPT diff --git a/tests/03_NAO_multik/31_NO_KP_nupdown0/README b/tests/03_NAO_multik/scf_out_mul_nupdw/README similarity index 100% rename from tests/03_NAO_multik/31_NO_KP_nupdown0/README rename to tests/03_NAO_multik/scf_out_mul_nupdw/README diff --git a/tests/03_NAO_multik/31_NO_KP_nupdown0/STRU b/tests/03_NAO_multik/scf_out_mul_nupdw/STRU similarity index 100% rename from tests/03_NAO_multik/31_NO_KP_nupdown0/STRU rename to tests/03_NAO_multik/scf_out_mul_nupdw/STRU diff --git a/tests/03_NAO_multik/scf_out_mul_nupdw/mulliken.txt.ref b/tests/03_NAO_multik/scf_out_mul_nupdw/mulliken.txt.ref new file mode 100644 index 0000000000..6b62c3db24 --- /dev/null +++ b/tests/03_NAO_multik/scf_out_mul_nupdw/mulliken.txt.ref @@ -0,0 +1,69 @@ + --- Ionic Step 1 --- + Total charge 9 + Total charge of spin1 4.5 + Total charge of spin2 4.5 + Decomposed Mulliken population analysis for each atom + l and m from Ylm, z stands for zeta orbital + + ------------------ + Atom 1 is Si + ------------------ + zeta spin1 spin2 sum diff + s 1 0.6711 0.6711 1.3422 0.0000 + s 2 0.0029 0.0029 0.0058 -0.0000 + sum mz 0.6740 0.6740 1.3480 0.0000 + + pz 1 0.3982 0.3982 0.7964 -0.0000 + px 1 0.3836 0.3836 0.7673 -0.0000 + py 1 0.3836 0.3836 0.7673 -0.0000 + sum m 1.1655 1.1655 2.3310 -0.0000 + pz 2 0.0542 0.0542 0.1084 -0.0000 + px 2 0.0519 0.0519 0.1037 0.0000 + py 2 0.0519 0.0519 0.1037 0.0000 + sum m 0.1579 0.1579 0.3158 0.0000 + sum mz 1.3234 1.3234 2.6468 -0.0000 + + dz^2 1 0.0051 0.0051 0.0102 0.0000 + dxz 1 0.0814 0.0814 0.1629 0.0000 + dyz 1 0.0814 0.0814 0.1629 0.0000 + dx^2-y^2 1 0.0079 0.0079 0.0157 -0.0000 + dxy 1 0.0779 0.0779 0.1557 -0.0000 + sum m 0.2537 0.2537 0.5075 0.0000 + sum mz 0.2537 0.2537 0.5075 0.0000 + + sum lmz 2.2512 2.2512 4.5023 -0.0000 + + total charge on atom 1 4.5023 + total magnetism on atom 1 -0.0000 + + ------------------ + Atom 2 is Si + ------------------ + zeta spin1 spin2 sum diff + s 1 0.6704 0.6704 1.3407 0.0000 + s 2 0.0021 0.0021 0.0041 -0.0000 + sum mz 0.6724 0.6724 1.3449 0.0000 + + pz 1 0.3958 0.3958 0.7917 -0.0000 + px 1 0.3828 0.3828 0.7657 -0.0000 + py 1 0.3828 0.3828 0.7657 -0.0000 + sum m 1.1615 1.1615 2.3230 -0.0000 + pz 2 0.0548 0.0548 0.1095 -0.0000 + px 2 0.0527 0.0527 0.1055 0.0000 + py 2 0.0527 0.0527 0.1055 0.0000 + sum m 0.1602 0.1602 0.3205 0.0000 + sum mz 1.3217 1.3217 2.6435 -0.0000 + + dz^2 1 0.0051 0.0051 0.0103 0.0000 + dxz 1 0.0817 0.0817 0.1634 0.0000 + dyz 1 0.0817 0.0817 0.1634 0.0000 + dx^2-y^2 1 0.0079 0.0079 0.0158 -0.0000 + dxy 1 0.0783 0.0783 0.1565 -0.0000 + sum m 0.2547 0.2547 0.5093 0.0000 + sum mz 0.2547 0.2547 0.5093 0.0000 + + sum lmz 2.2488 2.2488 4.4977 0.0000 + + total charge on atom 2 4.4977 + total magnetism on atom 2 0.0000 + diff --git a/tests/03_NAO_multik/31_NO_KP_nupdown0/result.ref b/tests/03_NAO_multik/scf_out_mul_nupdw/result.ref similarity index 100% rename from tests/03_NAO_multik/31_NO_KP_nupdown0/result.ref rename to tests/03_NAO_multik/scf_out_mul_nupdw/result.ref diff --git a/tests/03_NAO_multik/scf_out_mul_spin2/INPUT b/tests/03_NAO_multik/scf_out_mul_spin2/INPUT new file mode 100644 index 0000000000..c9e699e8a4 --- /dev/null +++ b/tests/03_NAO_multik/scf_out_mul_spin2/INPUT @@ -0,0 +1,35 @@ +INPUT_PARAMETERS +#Parameters (1.General) +suffix autotest +calculation scf +symmetry 1 +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB +gamma_only 0 + +#Parameters (2.Iteration) +ecutwfc 5 +scf_thr 1e-6 +scf_nmax 100 + +nspin 2 +#Parameters (3.Basis) +basis_type lcao + +#Parameters (4.Smearing) +smearing_method gauss +smearing_sigma 0.02 + +#Parameters (5.Mixing) +mixing_type broyden +mixing_beta 0.4 +mixing_gg0 1.5 + +out_mul 1 + +bx 3 +by 3 +bz 3 + +cal_force 1 +cal_stress 1 diff --git a/tests/03_NAO_multik/43_NO_KP_NVT/KPT b/tests/03_NAO_multik/scf_out_mul_spin2/KPT similarity index 100% rename from tests/03_NAO_multik/43_NO_KP_NVT/KPT rename to tests/03_NAO_multik/scf_out_mul_spin2/KPT diff --git a/tests/03_NAO_multik/11_NO_KP_AFM/README b/tests/03_NAO_multik/scf_out_mul_spin2/README similarity index 100% rename from tests/03_NAO_multik/11_NO_KP_AFM/README rename to tests/03_NAO_multik/scf_out_mul_spin2/README diff --git a/tests/03_NAO_multik/11_NO_KP_AFM/STRU b/tests/03_NAO_multik/scf_out_mul_spin2/STRU similarity index 100% rename from tests/03_NAO_multik/11_NO_KP_AFM/STRU rename to tests/03_NAO_multik/scf_out_mul_spin2/STRU diff --git a/tests/03_NAO_multik/scf_out_mul_spin2/mulliken.txt.ref b/tests/03_NAO_multik/scf_out_mul_spin2/mulliken.txt.ref new file mode 100644 index 0000000000..e5f742addb --- /dev/null +++ b/tests/03_NAO_multik/scf_out_mul_spin2/mulliken.txt.ref @@ -0,0 +1,105 @@ + --- Ionic Step 1 --- + Total charge 32 + Total charge of spin1 16 + Total charge of spin2 16 + Decomposed Mulliken population analysis for each atom + l and m from Ylm, z stands for zeta orbital + + ------------------ + Atom 1 is Fe + ------------------ + zeta spin1 spin2 sum diff + s 1 0.8060 0.8060 1.6120 0.0000 + s 2 0.6171 0.6171 1.2342 -0.0000 + s 3 0.2479 0.2479 0.4958 0.0000 + s 4 -0.0100 -0.0100 -0.0199 -0.0000 + sum mz 1.6610 1.6610 3.3220 0.0000 + + pz 1 0.1563 0.1563 0.3126 0.0000 + px 1 0.1223 0.1223 0.2445 -0.0000 + py 1 0.1223 0.1223 0.2445 -0.0000 + sum m 0.4008 0.4008 0.8016 0.0000 + pz 2 0.9180 0.9180 1.8360 -0.0000 + px 2 0.8774 0.8774 1.7549 -0.0000 + py 2 0.8774 0.8774 1.7549 -0.0000 + sum m 2.6729 2.6729 5.3458 -0.0000 + sum mz 3.0737 3.0737 6.1474 0.0000 + + dz^2 1 1.0103 1.0103 2.0207 -0.0000 + dxz 1 0.4572 0.4572 0.9145 -0.0000 + dyz 1 0.4572 0.4572 0.9145 -0.0000 + dx^2-y^2 1 1.0436 1.0436 2.0871 -0.0000 + dxy 1 0.0513 0.0513 0.1026 0.0000 + sum m 3.0197 3.0197 6.0394 0.0000 + dz^2 2 0.0083 0.0083 0.0165 0.0000 + dxz 2 0.0060 0.0060 0.0121 -0.0000 + dyz 2 0.0060 0.0060 0.0121 -0.0000 + dx^2-y^2 2 -0.0011 -0.0011 -0.0023 0.0000 + dxy 2 0.0097 0.0097 0.0195 -0.0000 + sum m 0.0289 0.0289 0.0578 -0.0000 + sum mz 3.0486 3.0486 6.0973 0.0000 + + fz^3 1 0.0329 0.0329 0.0659 -0.0000 + fxz^2 1 -0.0003 -0.0003 -0.0005 -0.0000 + fyz^2 1 -0.0003 -0.0003 -0.0005 -0.0000 + fzx^2-zy^2 1 0.3515 0.3515 0.7029 0.0000 + fxyz 1 0.0119 0.0119 0.0238 -0.0000 + fx^3-3*xy^2 1 0.0325 0.0325 0.0651 0.0000 + f3yx^2-y^3 1 0.0325 0.0325 0.0651 0.0000 + sum m 0.4608 0.4608 0.9216 0.0000 + sum mz 0.4608 0.4608 0.9216 0.0000 + + sum lmz 8.2441 8.2441 16.4883 0.0000 + + total charge on atom 1 16.4883 + total magnetism on atom 1 0.0000 + + ------------------ + Atom 2 is Fe + ------------------ + zeta spin1 spin2 sum diff + s 1 0.8385 0.8385 1.6770 -0.0000 + s 2 0.5180 0.5180 1.0361 0.0000 + s 3 0.2561 0.2561 0.5121 -0.0000 + s 4 -0.0025 -0.0025 -0.0050 0.0000 + sum mz 1.6101 1.6101 3.2201 -0.0000 + + pz 1 0.1330 0.1330 0.2659 -0.0000 + px 1 0.1277 0.1277 0.2554 0.0000 + py 1 0.1277 0.1277 0.2554 0.0000 + sum m 0.3884 0.3884 0.7767 0.0000 + pz 2 0.9200 0.9200 1.8401 0.0000 + px 2 0.8966 0.8966 1.7932 0.0000 + py 2 0.8966 0.8966 1.7932 0.0000 + sum m 2.7132 2.7132 5.4264 0.0000 + sum mz 3.1016 3.1016 6.2031 0.0000 + + dz^2 1 0.0199 0.0199 0.0397 -0.0000 + dxz 1 0.8896 0.8896 1.7793 0.0000 + dyz 1 0.8896 0.8896 1.7793 0.0000 + dx^2-y^2 1 0.1493 0.1493 0.2987 -0.0000 + dxy 1 0.9083 0.9083 1.8167 0.0000 + sum m 2.8568 2.8568 5.7136 0.0000 + dz^2 2 0.0004 0.0004 0.0007 -0.0000 + dxz 2 0.0145 0.0145 0.0291 -0.0000 + dyz 2 0.0145 0.0145 0.0291 -0.0000 + dx^2-y^2 2 -0.0061 -0.0061 -0.0121 -0.0000 + dxy 2 0.0199 0.0199 0.0399 -0.0000 + sum m 0.0433 0.0433 0.0867 -0.0000 + sum mz 2.9001 2.9001 5.8003 -0.0000 + + fz^3 1 0.0299 0.0299 0.0598 -0.0000 + fxz^2 1 0.0059 0.0059 0.0118 0.0000 + fyz^2 1 0.0059 0.0059 0.0118 0.0000 + fzx^2-zy^2 1 -0.0386 -0.0386 -0.0773 0.0000 + fxyz 1 0.0001 0.0001 0.0001 0.0000 + fx^3-3*xy^2 1 0.0705 0.0705 0.1410 0.0000 + f3yx^2-y^3 1 0.0705 0.0705 0.1410 0.0000 + sum m 0.1441 0.1441 0.2882 0.0000 + sum mz 0.1441 0.1441 0.2882 0.0000 + + sum lmz 7.7559 7.7559 15.5117 -0.0000 + + total charge on atom 2 15.5117 + total magnetism on atom 2 -0.0000 + diff --git a/tests/03_NAO_multik/11_NO_KP_AFM/result.ref b/tests/03_NAO_multik/scf_out_mul_spin2/result.ref similarity index 100% rename from tests/03_NAO_multik/11_NO_KP_AFM/result.ref rename to tests/03_NAO_multik/scf_out_mul_spin2/result.ref diff --git a/tests/03_NAO_multik/scf_out_mul_spin4/INPUT b/tests/03_NAO_multik/scf_out_mul_spin4/INPUT new file mode 100644 index 0000000000..a992ca583d --- /dev/null +++ b/tests/03_NAO_multik/scf_out_mul_spin4/INPUT @@ -0,0 +1,29 @@ +INPUT_PARAMETERS + +# non-collinear LCAO calculations +basis_type lcao +noncolin 1 +symmetry 1 + +calculation scf +ks_solver scalapack_gvx +ecutwfc 26 +scf_thr 1.0e-8 +scf_nmax 200 + +# smearing method +smearing_method gaussian +smearing_sigma 0.07 + +# charge mixing method +mixing_type broyden +mixing_beta 0.5 +mixing_ndim 10 + +# output Mulliken charge +out_mul 1 + +# pseudopotential and orbital directories +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB +suffix autotest diff --git a/tests/03_NAO_multik/14_NO_KP_NC/KPT b/tests/03_NAO_multik/scf_out_mul_spin4/KPT similarity index 100% rename from tests/03_NAO_multik/14_NO_KP_NC/KPT rename to tests/03_NAO_multik/scf_out_mul_spin4/KPT diff --git a/tests/03_NAO_multik/14_NO_KP_NC/README b/tests/03_NAO_multik/scf_out_mul_spin4/README similarity index 100% rename from tests/03_NAO_multik/14_NO_KP_NC/README rename to tests/03_NAO_multik/scf_out_mul_spin4/README diff --git a/tests/03_NAO_multik/14_NO_KP_NC/STRU b/tests/03_NAO_multik/scf_out_mul_spin4/STRU similarity index 100% rename from tests/03_NAO_multik/14_NO_KP_NC/STRU rename to tests/03_NAO_multik/scf_out_mul_spin4/STRU diff --git a/tests/03_NAO_multik/scf_out_mul_spin4/mulliken.txt.ref b/tests/03_NAO_multik/scf_out_mul_spin4/mulliken.txt.ref new file mode 100644 index 0000000000..837fb51bfa --- /dev/null +++ b/tests/03_NAO_multik/scf_out_mul_spin4/mulliken.txt.ref @@ -0,0 +1,103 @@ + --- Ionic Step 1 --- + Total charge 32 + Decomposed Mulliken population analysis for each atom + l and m from Ylm, z stands for zeta orbital + + ------------------ + Atom 1 is Fe + ------------------ + zeta spin1 spin2 spin3 spin4 + s 1 1.4819 -0.0042 0.0000 -0.0000 + s 2 1.1240 0.0128 0.0000 -0.0000 + s 3 0.4194 -0.0019 -0.0000 -0.0000 + s 4 -0.0253 0.0009 0.0000 0.0000 + sum mz 3.0000 0.0075 -0.0000 -0.0000 + + pz 1 0.2288 0.0004 0.0000 -0.0000 + px 1 0.2288 0.0004 0.0000 -0.0000 + py 1 0.2288 0.0004 0.0000 -0.0000 + sum m 0.6863 0.0011 0.0000 -0.0000 + pz 2 1.7550 0.0005 0.0000 0.0000 + px 2 1.7550 0.0005 0.0000 0.0000 + py 2 1.7550 0.0005 0.0000 0.0000 + sum m 5.2650 0.0016 0.0000 0.0000 + sum mz 5.9514 0.0026 0.0000 -0.0000 + + dz^2 1 1.8128 0.0191 -0.0000 -0.0000 + dxz 1 1.0631 0.3911 0.0000 0.0000 + dyz 1 1.0631 0.3911 0.0000 0.0000 + dx^2-y^2 1 1.8128 0.0191 -0.0000 -0.0000 + dxy 1 1.0631 0.3911 0.0000 0.0000 + sum m 6.8147 1.2116 -0.0000 -0.0000 + dz^2 2 0.0040 0.0000 0.0000 0.0000 + dxz 2 0.0591 -0.0100 0.0000 0.0000 + dyz 2 0.0591 -0.0100 0.0000 0.0000 + dx^2-y^2 2 0.0040 0.0000 0.0000 0.0000 + dxy 2 0.0591 -0.0100 0.0000 0.0000 + sum m 0.1853 -0.0298 0.0000 0.0000 + sum mz 7.0000 1.1818 -0.0000 -0.0000 + + fz^3 1 0.0162 0.0017 0.0000 0.0000 + fxz^2 1 0.0061 0.0006 0.0000 0.0000 + fyz^2 1 0.0061 0.0006 0.0000 0.0000 + fzx^2-zy^2 1 0.0000 0.0000 0.0000 0.0000 + fxyz 1 0.0000 0.0000 0.0000 0.0000 + fx^3-3*xy^2 1 0.0101 0.0011 0.0000 0.0000 + f3yx^2-y^3 1 0.0101 0.0011 0.0000 0.0000 + sum m 0.0486 0.0051 0.0000 0.0000 + sum mz 0.0486 0.0051 0.0000 0.0000 + + sum lmz 16.0000 1.1970 -0.0000 -0.0000 + + total charge on atom 1 16.0000 + total magnetism on atom 1 1.1970 -0.0000 -0.0000 + + ------------------ + Atom 2 is Fe + ------------------ + zeta spin1 spin2 spin3 spin4 + s 1 1.4819 0.0042 0.0000 0.0000 + s 2 1.1240 -0.0128 0.0000 0.0000 + s 3 0.4194 0.0019 0.0000 -0.0000 + s 4 -0.0253 -0.0009 0.0000 -0.0000 + sum mz 3.0000 -0.0075 0.0000 0.0000 + + pz 1 0.2288 -0.0004 0.0000 0.0000 + px 1 0.2288 -0.0004 0.0000 0.0000 + py 1 0.2288 -0.0004 0.0000 0.0000 + sum m 0.6863 -0.0011 0.0000 0.0000 + pz 2 1.7550 -0.0005 0.0000 0.0000 + px 2 1.7550 -0.0005 0.0000 0.0000 + py 2 1.7550 -0.0005 0.0000 0.0000 + sum m 5.2650 -0.0016 0.0000 0.0000 + sum mz 5.9514 -0.0026 0.0000 0.0000 + + dz^2 1 1.8128 -0.0191 -0.0000 0.0000 + dxz 1 1.0631 -0.3911 0.0000 -0.0000 + dyz 1 1.0631 -0.3911 0.0000 -0.0000 + dx^2-y^2 1 1.8128 -0.0191 -0.0000 0.0000 + dxy 1 1.0631 -0.3911 0.0000 -0.0000 + sum m 6.8147 -1.2116 -0.0000 0.0000 + dz^2 2 0.0040 -0.0000 0.0000 0.0000 + dxz 2 0.0591 0.0100 0.0000 0.0000 + dyz 2 0.0591 0.0100 0.0000 0.0000 + dx^2-y^2 2 0.0040 -0.0000 0.0000 0.0000 + dxy 2 0.0591 0.0100 0.0000 0.0000 + sum m 0.1853 0.0298 0.0000 0.0000 + sum mz 7.0000 -1.1818 -0.0000 0.0000 + + fz^3 1 0.0162 -0.0017 0.0000 -0.0000 + fxz^2 1 0.0061 -0.0006 0.0000 0.0000 + fyz^2 1 0.0061 -0.0006 0.0000 0.0000 + fzx^2-zy^2 1 0.0000 0.0000 0.0000 0.0000 + fxyz 1 0.0000 0.0000 0.0000 0.0000 + fx^3-3*xy^2 1 0.0101 -0.0011 0.0000 -0.0000 + f3yx^2-y^3 1 0.0101 -0.0011 0.0000 -0.0000 + sum m 0.0486 -0.0051 0.0000 -0.0000 + sum mz 0.0486 -0.0051 0.0000 -0.0000 + + sum lmz 16.0000 -1.1970 -0.0000 0.0000 + + total charge on atom 2 16.0000 + total magnetism on atom 2 -1.1970 -0.0000 0.0000 + diff --git a/tests/03_NAO_multik/14_NO_KP_NC/result.ref b/tests/03_NAO_multik/scf_out_mul_spin4/result.ref similarity index 100% rename from tests/03_NAO_multik/14_NO_KP_NC/result.ref rename to tests/03_NAO_multik/scf_out_mul_spin4/result.ref diff --git a/tests/03_NAO_multik/scf_out_pot3/INPUT b/tests/03_NAO_multik/scf_out_pot3/INPUT new file mode 100644 index 0000000000..b95eaeddd1 --- /dev/null +++ b/tests/03_NAO_multik/scf_out_pot3/INPUT @@ -0,0 +1,26 @@ +INPUT_PARAMETERS +#Parameters (1.General) +suffix autotest +calculation scf +nbands 6 +symmetry 1 +out_pot 3 + +#Parameters (2.Iteration) +ecutwfc 5 +scf_thr 1e-6 +scf_nmax 100 + +#Parameters (3.Basis) +basis_type lcao + +#Parameters (4.Smearing) +smearing_method gauss +smearing_sigma 0.002 + +#Parameters (5.Mixing) +mixing_type broyden +mixing_beta 0.3 + +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB diff --git a/tests/03_NAO_multik/10_NO_S2_smallg/KPT b/tests/03_NAO_multik/scf_out_pot3/KPT similarity index 100% rename from tests/03_NAO_multik/10_NO_S2_smallg/KPT rename to tests/03_NAO_multik/scf_out_pot3/KPT diff --git a/tests/03_NAO_multik/38_NO_OP3/README b/tests/03_NAO_multik/scf_out_pot3/README similarity index 100% rename from tests/03_NAO_multik/38_NO_OP3/README rename to tests/03_NAO_multik/scf_out_pot3/README diff --git a/tests/03_NAO_multik/23_NO_KP_OK/STRU b/tests/03_NAO_multik/scf_out_pot3/STRU similarity index 100% rename from tests/03_NAO_multik/23_NO_KP_OK/STRU rename to tests/03_NAO_multik/scf_out_pot3/STRU diff --git a/tests/03_NAO_multik/38_NO_OP3/pots1.cube.ref b/tests/03_NAO_multik/scf_out_pot3/pots1.cube.ref similarity index 100% rename from tests/03_NAO_multik/38_NO_OP3/pots1.cube.ref rename to tests/03_NAO_multik/scf_out_pot3/pots1.cube.ref diff --git a/tests/03_NAO_multik/38_NO_OP3/result.ref b/tests/03_NAO_multik/scf_out_pot3/result.ref similarity index 100% rename from tests/03_NAO_multik/38_NO_OP3/result.ref rename to tests/03_NAO_multik/scf_out_pot3/result.ref diff --git a/tests/03_NAO_multik/scf_out_qo/INPUT b/tests/03_NAO_multik/scf_out_qo/INPUT new file mode 100644 index 0000000000..e5e75e105d --- /dev/null +++ b/tests/03_NAO_multik/scf_out_qo/INPUT @@ -0,0 +1,16 @@ +INPUT_PARAMETERS +suffix autotest +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB + +calculation scf +ecutwfc 20 +scf_nmax 100 +scf_thr 1e-6 +basis_type lcao + +qo_switch 1 # turn on QO analysis output +qo_basis pswfc # use pseudowavefunction read from pseudopotentials +qo_screening_coeff 0.5 # controls the shrink of AO basis, larger value means tighter basis +qo_thr 1e-6 # controls the accuracy of QO basis +symmetry -1 # to ensure matrix elements of symmetry kpoints can be cancelled diff --git a/tests/03_NAO_multik/45_NO_KP_QO/KPT b/tests/03_NAO_multik/scf_out_qo/KPT similarity index 100% rename from tests/03_NAO_multik/45_NO_KP_QO/KPT rename to tests/03_NAO_multik/scf_out_qo/KPT diff --git a/tests/03_NAO_multik/45_NO_KP_QO/STRU b/tests/03_NAO_multik/scf_out_qo/STRU similarity index 100% rename from tests/03_NAO_multik/45_NO_KP_QO/STRU rename to tests/03_NAO_multik/scf_out_qo/STRU diff --git a/tests/03_NAO_multik/45_NO_KP_QO/result.ref b/tests/03_NAO_multik/scf_out_qo/result.ref similarity index 100% rename from tests/03_NAO_multik/45_NO_KP_QO/result.ref rename to tests/03_NAO_multik/scf_out_qo/result.ref diff --git a/tests/03_NAO_multik/scf_out_wf/INPUT b/tests/03_NAO_multik/scf_out_wf/INPUT new file mode 100644 index 0000000000..94a4c1dca1 --- /dev/null +++ b/tests/03_NAO_multik/scf_out_wf/INPUT @@ -0,0 +1,19 @@ +INPUT_PARAMETERS + +calculation scf +basis_type lcao +out_wfc_lcao 1 + +symmetry 0 + +nbands 4 +latname sc +ecutwfc 25.0 +scf_thr 1e-10 + + +suffix autotest +stru_file STRU +kpoint_file KPT +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB diff --git a/tests/03_NAO_multik/33_NO_KP_OW/KPT b/tests/03_NAO_multik/scf_out_wf/KPT similarity index 100% rename from tests/03_NAO_multik/33_NO_KP_OW/KPT rename to tests/03_NAO_multik/scf_out_wf/KPT diff --git a/tests/03_NAO_multik/33_NO_KP_OW/README b/tests/03_NAO_multik/scf_out_wf/README similarity index 100% rename from tests/03_NAO_multik/33_NO_KP_OW/README rename to tests/03_NAO_multik/scf_out_wf/README diff --git a/tests/03_NAO_multik/scf_out_wf/STRU b/tests/03_NAO_multik/scf_out_wf/STRU new file mode 100644 index 0000000000..30af97b4b4 --- /dev/null +++ b/tests/03_NAO_multik/scf_out_wf/STRU @@ -0,0 +1,19 @@ +#This is the atom file containing all the information +#about the lattice structure. + +ATOMIC_SPECIES +H 1.0008 H_ONCV_PBE-1.0.upf + +NUMERICAL_ORBITAL +H_gga_6au_60Ry_2s1p.orb + +LATTICE_CONSTANT +10.0 #Lattice constant + +ATOMIC_POSITIONS +Cartesian #Cartesian(Unit is LATTICE_CONSTANT) +H #Name of element +0.0 #Magnetic for this element. +2 #Number of atoms +0.00 0.00 -0.0661400 0 0 0 #x,y,z, move_x, move_y, move_z +0.00 0.00 0.0661400 0 0 0 #x,y,z, move_x, move_y, move_z diff --git a/tests/03_NAO_multik/33_NO_KP_OW/result.ref b/tests/03_NAO_multik/scf_out_wf/result.ref similarity index 100% rename from tests/03_NAO_multik/33_NO_KP_OW/result.ref rename to tests/03_NAO_multik/scf_out_wf/result.ref diff --git a/tests/03_NAO_multik/33_NO_KP_OW/wfs1k2_nao_mod.txt.ref b/tests/03_NAO_multik/scf_out_wf/wfk2_nao_mod.txt.ref similarity index 100% rename from tests/03_NAO_multik/33_NO_KP_OW/wfs1k2_nao_mod.txt.ref rename to tests/03_NAO_multik/scf_out_wf/wfk2_nao_mod.txt.ref diff --git a/tests/03_NAO_multik/scf_pp_gth/INPUT b/tests/03_NAO_multik/scf_pp_gth/INPUT new file mode 100644 index 0000000000..556ecf1ad7 --- /dev/null +++ b/tests/03_NAO_multik/scf_pp_gth/INPUT @@ -0,0 +1,21 @@ +INPUT_PARAMETERS +#Parameters (General) +suffix autotest +calculation scf +nspin 2 + +#Parameters (Accuracy) +ecutwfc 20 +scf_nmax 50 +scf_thr 1.0e-8 + +basis_type lcao + +cal_stress 1 +cal_force 1 + +mixing_type broyden +mixing_beta 0.7 +mixing_gg0 1.5 +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB diff --git a/tests/03_NAO_multik/37_NO_KP_restart/KPT b/tests/03_NAO_multik/scf_pp_gth/KPT similarity index 100% rename from tests/03_NAO_multik/37_NO_KP_restart/KPT rename to tests/03_NAO_multik/scf_pp_gth/KPT diff --git a/tests/03_NAO_multik/04_NO_KP_GTH/README b/tests/03_NAO_multik/scf_pp_gth/README similarity index 100% rename from tests/03_NAO_multik/04_NO_KP_GTH/README rename to tests/03_NAO_multik/scf_pp_gth/README diff --git a/tests/03_NAO_multik/04_NO_KP_GTH/STRU b/tests/03_NAO_multik/scf_pp_gth/STRU similarity index 100% rename from tests/03_NAO_multik/04_NO_KP_GTH/STRU rename to tests/03_NAO_multik/scf_pp_gth/STRU diff --git a/tests/03_NAO_multik/04_NO_KP_GTH/result.ref b/tests/03_NAO_multik/scf_pp_gth/result.ref similarity index 100% rename from tests/03_NAO_multik/04_NO_KP_GTH/result.ref rename to tests/03_NAO_multik/scf_pp_gth/result.ref diff --git a/tests/03_NAO_multik/scf_pp_sg15/INPUT b/tests/03_NAO_multik/scf_pp_sg15/INPUT new file mode 100644 index 0000000000..b61c7bb67b --- /dev/null +++ b/tests/03_NAO_multik/scf_pp_sg15/INPUT @@ -0,0 +1,27 @@ +INPUT_PARAMETERS +#Parameters (1.General) +suffix autotest +calculation scf + +nbands 6 +symmetry 1 +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB + +#Parameters (2.Iteration) +ecutwfc 20 +scf_thr 1e-6 +scf_nmax 100 + + +#Parameters (3.Basis) +basis_type lcao + +#Parameters (4.Smearing) +smearing_method gauss +smearing_sigma 0.002 + +#Parameters (5.Mixing) +mixing_type broyden +mixing_beta 0.3 +kpar 2 diff --git a/tests/03_NAO_multik/23_NO_KP_OK/KPT b/tests/03_NAO_multik/scf_pp_sg15/KPT similarity index 100% rename from tests/03_NAO_multik/23_NO_KP_OK/KPT rename to tests/03_NAO_multik/scf_pp_sg15/KPT diff --git a/tests/03_NAO_multik/03_NO_KP_15_kpar/README b/tests/03_NAO_multik/scf_pp_sg15/README similarity index 100% rename from tests/03_NAO_multik/03_NO_KP_15_kpar/README rename to tests/03_NAO_multik/scf_pp_sg15/README diff --git a/tests/03_NAO_multik/38_NO_OP3/STRU b/tests/03_NAO_multik/scf_pp_sg15/STRU similarity index 100% rename from tests/03_NAO_multik/38_NO_OP3/STRU rename to tests/03_NAO_multik/scf_pp_sg15/STRU diff --git a/tests/03_NAO_multik/03_NO_KP_15_kpar/result.ref b/tests/03_NAO_multik/scf_pp_sg15/result.ref similarity index 100% rename from tests/03_NAO_multik/03_NO_KP_15_kpar/result.ref rename to tests/03_NAO_multik/scf_pp_sg15/result.ref diff --git a/tests/03_NAO_multik/scf_pp_upf1/INPUT b/tests/03_NAO_multik/scf_pp_upf1/INPUT new file mode 100644 index 0000000000..95efdf6616 --- /dev/null +++ b/tests/03_NAO_multik/scf_pp_upf1/INPUT @@ -0,0 +1,28 @@ +INPUT_PARAMETERS +#Parameters (1.General) +suffix autotest +calculation scf + +nbands 6 +symmetry 1 +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB + +#Parameters (2.Iteration) +ecutwfc 20 +scf_thr 1e-6 +scf_nmax 100 + +#Parameters (3.Basis) +basis_type lcao + +#Parameters (4.Smearing) +smearing_method gauss +smearing_sigma 0.002 + +#Parameters (5.Mixing) +mixing_type broyden +mixing_beta 0.3 + +cal_force 1 +force_thr_ev 1.0e-3 diff --git a/tests/03_NAO_multik/46_NO_0ATOM/KPT b/tests/03_NAO_multik/scf_pp_upf1/KPT similarity index 100% rename from tests/03_NAO_multik/46_NO_0ATOM/KPT rename to tests/03_NAO_multik/scf_pp_upf1/KPT diff --git a/tests/03_NAO_multik/06_NO_KP_OU/README b/tests/03_NAO_multik/scf_pp_upf1/README similarity index 100% rename from tests/03_NAO_multik/06_NO_KP_OU/README rename to tests/03_NAO_multik/scf_pp_upf1/README diff --git a/tests/03_NAO_multik/06_NO_KP_OU/STRU b/tests/03_NAO_multik/scf_pp_upf1/STRU similarity index 100% rename from tests/03_NAO_multik/06_NO_KP_OU/STRU rename to tests/03_NAO_multik/scf_pp_upf1/STRU diff --git a/tests/03_NAO_multik/06_NO_KP_OU/result.ref b/tests/03_NAO_multik/scf_pp_upf1/result.ref similarity index 100% rename from tests/03_NAO_multik/06_NO_KP_OU/result.ref rename to tests/03_NAO_multik/scf_pp_upf1/result.ref diff --git a/tests/03_NAO_multik/scf_pp_upf201/INPUT b/tests/03_NAO_multik/scf_pp_upf201/INPUT new file mode 100644 index 0000000000..d23e06bda1 --- /dev/null +++ b/tests/03_NAO_multik/scf_pp_upf201/INPUT @@ -0,0 +1,26 @@ +INPUT_PARAMETERS +#Parameters (1.General) +suffix autotest +calculation scf + +nbands 6 +symmetry 1 + +#Parameters (2.Iteration) +ecutwfc 20 +scf_thr 1e-6 +scf_nmax 100 + + +#Parameters (3.Basis) +basis_type lcao + +#Parameters (4.Smearing) +smearing_method gauss +smearing_sigma 0.002 + +#Parameters (5.Mixing) +mixing_type broyden +mixing_beta 0.7 +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB diff --git a/tests/03_NAO_multik/48_NO_KP_symm/KPT b/tests/03_NAO_multik/scf_pp_upf201/KPT similarity index 100% rename from tests/03_NAO_multik/48_NO_KP_symm/KPT rename to tests/03_NAO_multik/scf_pp_upf201/KPT diff --git a/tests/03_NAO_multik/07_NO_KP_UPF201/README b/tests/03_NAO_multik/scf_pp_upf201/README similarity index 100% rename from tests/03_NAO_multik/07_NO_KP_UPF201/README rename to tests/03_NAO_multik/scf_pp_upf201/README diff --git a/tests/03_NAO_multik/07_NO_KP_UPF201/STRU b/tests/03_NAO_multik/scf_pp_upf201/STRU similarity index 100% rename from tests/03_NAO_multik/07_NO_KP_UPF201/STRU rename to tests/03_NAO_multik/scf_pp_upf201/STRU diff --git a/tests/03_NAO_multik/07_NO_KP_UPF201/result.ref b/tests/03_NAO_multik/scf_pp_upf201/result.ref similarity index 100% rename from tests/03_NAO_multik/07_NO_KP_UPF201/result.ref rename to tests/03_NAO_multik/scf_pp_upf201/result.ref diff --git a/tests/03_NAO_multik/scf_smallg_spin1/INPUT b/tests/03_NAO_multik/scf_smallg_spin1/INPUT new file mode 100644 index 0000000000..d022fd7c89 --- /dev/null +++ b/tests/03_NAO_multik/scf_smallg_spin1/INPUT @@ -0,0 +1,28 @@ +INPUT_PARAMETERS +#Parameters (1.General) +suffix autotest +calculation scf + +nbands 6 +symmetry 1 + +#Parameters (2.Iteration) +ecutwfc 20 +scf_thr 1e-9 +scf_nmax 100 + +cal_stress 1 +cal_force 1 + +#Parameters (3.Basis) +basis_type lcao + +#Parameters (4.Smearing) +smearing_method gauss +smearing_sigma 0.002 + +#Parameters (5.Mixing) +mixing_type plain +mixing_beta 0.7 +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB diff --git a/tests/03_NAO_multik/38_NO_OP3/KPT b/tests/03_NAO_multik/scf_smallg_spin1/KPT similarity index 100% rename from tests/03_NAO_multik/38_NO_OP3/KPT rename to tests/03_NAO_multik/scf_smallg_spin1/KPT diff --git a/tests/03_NAO_multik/09_NO_S1_smallg/README b/tests/03_NAO_multik/scf_smallg_spin1/README similarity index 100% rename from tests/03_NAO_multik/09_NO_S1_smallg/README rename to tests/03_NAO_multik/scf_smallg_spin1/README diff --git a/tests/03_NAO_multik/09_NO_S1_smallg/STRU b/tests/03_NAO_multik/scf_smallg_spin1/STRU similarity index 100% rename from tests/03_NAO_multik/09_NO_S1_smallg/STRU rename to tests/03_NAO_multik/scf_smallg_spin1/STRU diff --git a/tests/03_NAO_multik/09_NO_S1_smallg/result.ref b/tests/03_NAO_multik/scf_smallg_spin1/result.ref similarity index 100% rename from tests/03_NAO_multik/09_NO_S1_smallg/result.ref rename to tests/03_NAO_multik/scf_smallg_spin1/result.ref diff --git a/tests/03_NAO_multik/scf_smallg_spin2/INPUT b/tests/03_NAO_multik/scf_smallg_spin2/INPUT new file mode 100644 index 0000000000..db6ac9e338 --- /dev/null +++ b/tests/03_NAO_multik/scf_smallg_spin2/INPUT @@ -0,0 +1,29 @@ +INPUT_PARAMETERS +#Parameters (1.General) +suffix autotest +calculation scf + +nbands 6 +symmetry 1 +nspin 2 + +#Parameters (2.Iteration) +ecutwfc 20 +scf_thr 1e-9 +scf_nmax 100 + +cal_stress 1 +cal_force 1 + +#Parameters (3.Basis) +basis_type lcao + +#Parameters (4.Smearing) +smearing_method gauss +smearing_sigma 0.002 + +#Parameters (5.Mixing) +mixing_type plain +mixing_beta 0.7 +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB diff --git a/tests/03_NAO_multik/39_NO_OP_nscf/KPT b/tests/03_NAO_multik/scf_smallg_spin2/KPT similarity index 100% rename from tests/03_NAO_multik/39_NO_OP_nscf/KPT rename to tests/03_NAO_multik/scf_smallg_spin2/KPT diff --git a/tests/03_NAO_multik/10_NO_S2_smallg/README b/tests/03_NAO_multik/scf_smallg_spin2/README similarity index 100% rename from tests/03_NAO_multik/10_NO_S2_smallg/README rename to tests/03_NAO_multik/scf_smallg_spin2/README diff --git a/tests/03_NAO_multik/10_NO_S2_smallg/STRU b/tests/03_NAO_multik/scf_smallg_spin2/STRU similarity index 100% rename from tests/03_NAO_multik/10_NO_S2_smallg/STRU rename to tests/03_NAO_multik/scf_smallg_spin2/STRU diff --git a/tests/03_NAO_multik/10_NO_S2_smallg/result.ref b/tests/03_NAO_multik/scf_smallg_spin2/result.ref similarity index 100% rename from tests/03_NAO_multik/10_NO_S2_smallg/result.ref rename to tests/03_NAO_multik/scf_smallg_spin2/result.ref diff --git a/tests/03_NAO_multik/scf_solvation/INPUT b/tests/03_NAO_multik/scf_solvation/INPUT new file mode 100644 index 0000000000..6dc636b006 --- /dev/null +++ b/tests/03_NAO_multik/scf_solvation/INPUT @@ -0,0 +1,24 @@ +INPUT_PARAMETERS +#Parameters (General) +suffix autotest +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB + +nbands 2 +calculation scf +basis_type lcao +scf_thr 1e-7 + +#Parameters (Accuracy) +ecutwfc 10 +scf_nmax 50 + +#Parameters (Solvation Model) +imp_sol 1 +eb_k 80 +tau 0.000010798 +sigma_k 0.6 +nc_k 0.00037 + +cal_force 1 +cal_stress 1 diff --git a/tests/03_NAO_multik/54_NO_PK_PU/KPT b/tests/03_NAO_multik/scf_solvation/KPT similarity index 100% rename from tests/03_NAO_multik/54_NO_PK_PU/KPT rename to tests/03_NAO_multik/scf_solvation/KPT diff --git a/tests/03_NAO_multik/36_NO_KP_sol_H2/README b/tests/03_NAO_multik/scf_solvation/README similarity index 100% rename from tests/03_NAO_multik/36_NO_KP_sol_H2/README rename to tests/03_NAO_multik/scf_solvation/README diff --git a/tests/03_NAO_multik/36_NO_KP_sol_H2/STRU b/tests/03_NAO_multik/scf_solvation/STRU similarity index 100% rename from tests/03_NAO_multik/36_NO_KP_sol_H2/STRU rename to tests/03_NAO_multik/scf_solvation/STRU diff --git a/tests/03_NAO_multik/scf_solvation/result.ref b/tests/03_NAO_multik/scf_solvation/result.ref new file mode 100644 index 0000000000..7ea8a52d6d --- /dev/null +++ b/tests/03_NAO_multik/scf_solvation/result.ref @@ -0,0 +1,7 @@ +etotref -34.4552798373570326 +etotperatomref -17.2276399187 +totalforceref 0.895154 +totalstressref 18.915916 +esolelref -2.7024050741 +esolcavref 0.0838094138 +totaltimeref 0.77 diff --git a/tests/03_NAO_multik/scf_symm_prec/INPUT b/tests/03_NAO_multik/scf_symm_prec/INPUT new file mode 100644 index 0000000000..71fd6049a8 --- /dev/null +++ b/tests/03_NAO_multik/scf_symm_prec/INPUT @@ -0,0 +1,27 @@ +INPUT_PARAMETERS +#Parameters (1.General) +suffix autotest +calculation scf +symmetry 1 +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB + +#Parameters (2.Iteration) +ecutwfc 10 +scf_thr 1e-1 +scf_nmax 1 +cal_force 1 +cal_stress 1 + +#Parameters (3.Basis) +basis_type lcao + +#Parameters (4.Smearing) +smearing_method gauss +smearing_sigma 0.002 + +#Parameters (5.Mixing) +mixing_type broyden +mixing_beta 0.1 +ks_solver genelpa +symmetry_prec 1e-5 diff --git a/tests/11_PW_GPU/BUG_PW_OW_GPU/KPT b/tests/03_NAO_multik/scf_symm_prec/KPT similarity index 100% rename from tests/11_PW_GPU/BUG_PW_OW_GPU/KPT rename to tests/03_NAO_multik/scf_symm_prec/KPT diff --git a/tests/03_NAO_multik/48_NO_KP_symm/README b/tests/03_NAO_multik/scf_symm_prec/README similarity index 100% rename from tests/03_NAO_multik/48_NO_KP_symm/README rename to tests/03_NAO_multik/scf_symm_prec/README diff --git a/tests/03_NAO_multik/48_NO_KP_symm/STRU b/tests/03_NAO_multik/scf_symm_prec/STRU similarity index 100% rename from tests/03_NAO_multik/48_NO_KP_symm/STRU rename to tests/03_NAO_multik/scf_symm_prec/STRU diff --git a/tests/03_NAO_multik/48_NO_KP_symm/result.ref b/tests/03_NAO_multik/scf_symm_prec/result.ref similarity index 100% rename from tests/03_NAO_multik/48_NO_KP_symm/result.ref rename to tests/03_NAO_multik/scf_symm_prec/result.ref diff --git a/tests/03_NAO_multik/scf_u_ramp/INPUT b/tests/03_NAO_multik/scf_u_ramp/INPUT new file mode 100644 index 0000000000..4baa8e134c --- /dev/null +++ b/tests/03_NAO_multik/scf_u_ramp/INPUT @@ -0,0 +1,36 @@ +INPUT_PARAMETERS +suffix autotest +nbands 20 + +calculation scf +ecutwfc 10 +scf_thr 1.0e-6 +scf_nmax 500 +out_chg 0 + +smearing_method gaussian +smearing_sigma 0.01 + +cal_force 1 +cal_stress 1 + +mixing_type broyden +mixing_beta 0.2 +mixing_restart 5e-3 +mixing_dmr 1 +mixing_ndim 15 + +ks_solver genelpa +basis_type lcao +gamma_only 0 +symmetry 0 +nspin 2 + +#Parameters of DFT+U +dft_plus_u 1 +orbital_corr 2 -1 +hubbard_u 5.0 0.0 +uramping 2.5 +onsite_radius 5.0 +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB diff --git a/tests/03_NAO_multik/55_NO_PK_PU_S1/KPT b/tests/03_NAO_multik/scf_u_ramp/KPT similarity index 100% rename from tests/03_NAO_multik/55_NO_PK_PU_S1/KPT rename to tests/03_NAO_multik/scf_u_ramp/KPT diff --git a/tests/03_NAO_multik/53_NO_PK_URAMP/README b/tests/03_NAO_multik/scf_u_ramp/README similarity index 100% rename from tests/03_NAO_multik/53_NO_PK_URAMP/README rename to tests/03_NAO_multik/scf_u_ramp/README diff --git a/tests/03_NAO_multik/53_NO_PK_URAMP/STRU b/tests/03_NAO_multik/scf_u_ramp/STRU similarity index 100% rename from tests/03_NAO_multik/53_NO_PK_URAMP/STRU rename to tests/03_NAO_multik/scf_u_ramp/STRU diff --git a/tests/03_NAO_multik/53_NO_PK_URAMP/result.ref b/tests/03_NAO_multik/scf_u_ramp/result.ref similarity index 100% rename from tests/03_NAO_multik/53_NO_PK_URAMP/result.ref rename to tests/03_NAO_multik/scf_u_ramp/result.ref diff --git a/tests/03_NAO_multik/scf_u_spin1/INPUT b/tests/03_NAO_multik/scf_u_spin1/INPUT new file mode 100644 index 0000000000..e90fa5a98d --- /dev/null +++ b/tests/03_NAO_multik/scf_u_spin1/INPUT @@ -0,0 +1,38 @@ +INPUT_PARAMETERS +suffix autotest +nbands 25 + +calculation scf +ecutwfc 3 +scf_thr 1.0e-6 +scf_nmax 50 +out_chg 0 + +smearing_method gaussian +smearing_sigma 0.01 + +cal_force 1 +cal_stress 1 +#force_thr_ev 0.01 +#relax_method cg +#relax_bfgs_init 0.5 + +mixing_type broyden +mixing_beta 0.4 +mixing_restart 1e-3 +mixing_dmr 1 +#mixing_gg0 1.0 + +ks_solver scalapack_gvx +basis_type lcao +gamma_only 0 +symmetry 0 +nspin 1 + +#Parameters of DFT+U +dft_plus_u 1 +orbital_corr 2 -1 +hubbard_u 5.0 0.0 +onsite_radius 5.0 +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB diff --git a/tests/03_NAO_multik/56_NO_PK_PU_SO/KPT b/tests/03_NAO_multik/scf_u_spin1/KPT similarity index 100% rename from tests/03_NAO_multik/56_NO_PK_PU_SO/KPT rename to tests/03_NAO_multik/scf_u_spin1/KPT diff --git a/tests/03_NAO_multik/55_NO_PK_PU_S1/README b/tests/03_NAO_multik/scf_u_spin1/README similarity index 100% rename from tests/03_NAO_multik/55_NO_PK_PU_S1/README rename to tests/03_NAO_multik/scf_u_spin1/README diff --git a/tests/03_NAO_multik/55_NO_PK_PU_S1/STRU b/tests/03_NAO_multik/scf_u_spin1/STRU similarity index 100% rename from tests/03_NAO_multik/55_NO_PK_PU_S1/STRU rename to tests/03_NAO_multik/scf_u_spin1/STRU diff --git a/tests/03_NAO_multik/55_NO_PK_PU_S1/result.ref b/tests/03_NAO_multik/scf_u_spin1/result.ref similarity index 100% rename from tests/03_NAO_multik/55_NO_PK_PU_S1/result.ref rename to tests/03_NAO_multik/scf_u_spin1/result.ref diff --git a/tests/03_NAO_multik/scf_u_spin2/INPUT b/tests/03_NAO_multik/scf_u_spin2/INPUT new file mode 100644 index 0000000000..180200467e --- /dev/null +++ b/tests/03_NAO_multik/scf_u_spin2/INPUT @@ -0,0 +1,38 @@ +INPUT_PARAMETERS +suffix autotest +nbands 28 + +calculation scf +ecutwfc 10 +scf_thr 1.0e-4 +scf_nmax 50 +out_chg 0 + +smearing_method gaussian +smearing_sigma 0.01 + +cal_force 1 +cal_stress 1 +#force_thr_ev 0.01 +#relax_method cg +#relax_bfgs_init 0.5 + +mixing_type broyden +mixing_beta 0.4 +mixing_restart 1e-3 +mixing_dmr 1 +#mixing_gg0 1.0 + +ks_solver scalapack_gvx +basis_type lcao +gamma_only 0 +symmetry 0 +nspin 2 + +#Parameter DFT+U +dft_plus_u 1 +orbital_corr 2 -1 +hubbard_u 5.0 0.0 +onsite_radius 5.0 +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB diff --git a/tests/03_NAO_multik/57_NO_MD_1O/KPT b/tests/03_NAO_multik/scf_u_spin2/KPT similarity index 100% rename from tests/03_NAO_multik/57_NO_MD_1O/KPT rename to tests/03_NAO_multik/scf_u_spin2/KPT diff --git a/tests/03_NAO_multik/54_NO_PK_PU/README b/tests/03_NAO_multik/scf_u_spin2/README similarity index 100% rename from tests/03_NAO_multik/54_NO_PK_PU/README rename to tests/03_NAO_multik/scf_u_spin2/README diff --git a/tests/03_NAO_multik/54_NO_PK_PU/STRU b/tests/03_NAO_multik/scf_u_spin2/STRU similarity index 100% rename from tests/03_NAO_multik/54_NO_PK_PU/STRU rename to tests/03_NAO_multik/scf_u_spin2/STRU diff --git a/tests/03_NAO_multik/54_NO_PK_PU/result.ref b/tests/03_NAO_multik/scf_u_spin2/result.ref similarity index 100% rename from tests/03_NAO_multik/54_NO_PK_PU/result.ref rename to tests/03_NAO_multik/scf_u_spin2/result.ref diff --git a/tests/03_NAO_multik/scf_u_spin4/INPUT b/tests/03_NAO_multik/scf_u_spin4/INPUT new file mode 100644 index 0000000000..eb558ee779 --- /dev/null +++ b/tests/03_NAO_multik/scf_u_spin4/INPUT @@ -0,0 +1,38 @@ +INPUT_PARAMETERS +suffix autotest +nbands 40 + +calculation scf +ecutwfc 10 +scf_thr 1.0e-4 +scf_nmax 50 +out_chg 0 + +smearing_method gaussian +smearing_sigma 0.01 + +#force_thr_ev 0.01 +#relax_method cg +#relax_bfgs_init 0.5 + +mixing_type pulay +mixing_beta 0.3 +mixing_restart 1e-3 +mixing_dmr 1 +mixing_gg0 1.1 + +ks_solver scalapack_gvx +basis_type lcao +gamma_only 0 +noncolin 1 +lspinorb 1 +cal_force 1 +cal_stress 1 + +#Parameter DFT+U +dft_plus_u 1 +orbital_corr 2 +hubbard_u 5.0 +onsite_radius 5.0 +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB diff --git a/tests/03_NAO_multik/58_NO_MD_2O/KPT b/tests/03_NAO_multik/scf_u_spin4/KPT similarity index 100% rename from tests/03_NAO_multik/58_NO_MD_2O/KPT rename to tests/03_NAO_multik/scf_u_spin4/KPT diff --git a/tests/03_NAO_multik/56_NO_PK_PU_SO/README b/tests/03_NAO_multik/scf_u_spin4/README similarity index 100% rename from tests/03_NAO_multik/56_NO_PK_PU_SO/README rename to tests/03_NAO_multik/scf_u_spin4/README diff --git a/tests/03_NAO_multik/56_NO_PK_PU_SO/STRU b/tests/03_NAO_multik/scf_u_spin4/STRU similarity index 100% rename from tests/03_NAO_multik/56_NO_PK_PU_SO/STRU rename to tests/03_NAO_multik/scf_u_spin4/STRU diff --git a/tests/03_NAO_multik/56_NO_PK_PU_SO/result.ref b/tests/03_NAO_multik/scf_u_spin4/result.ref similarity index 100% rename from tests/03_NAO_multik/56_NO_PK_PU_SO/result.ref rename to tests/03_NAO_multik/scf_u_spin4/result.ref diff --git a/tests/03_NAO_multik/scf_vdw3abc/INPUT b/tests/03_NAO_multik/scf_vdw3abc/INPUT new file mode 100644 index 0000000000..b1fad0806d --- /dev/null +++ b/tests/03_NAO_multik/scf_vdw3abc/INPUT @@ -0,0 +1,20 @@ +INPUT_PARAMETERS +ecutwfc 10 +scf_thr 1e-04 +scf_nmax 400 +basis_type lcao +ks_solver scalapack_gvx +smearing_method gaussian +relax_nmax 1 +smearing_sigma 0.02 +mixing_type broyden +mixing_beta 0.4 +vdw_method d3_0 +vdw_abc 1 +suffix autotest +calculation scf +cal_force 1 +cal_stress 1 +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB +dft_functional pbe diff --git a/tests/03_NAO_multik/49_NO_KP_CR_VDW3ABC/KPT b/tests/03_NAO_multik/scf_vdw3abc/KPT similarity index 100% rename from tests/03_NAO_multik/49_NO_KP_CR_VDW3ABC/KPT rename to tests/03_NAO_multik/scf_vdw3abc/KPT diff --git a/tests/03_NAO_multik/49_NO_KP_CR_VDW3ABC/README b/tests/03_NAO_multik/scf_vdw3abc/README similarity index 100% rename from tests/03_NAO_multik/49_NO_KP_CR_VDW3ABC/README rename to tests/03_NAO_multik/scf_vdw3abc/README diff --git a/tests/03_NAO_multik/49_NO_KP_CR_VDW3ABC/STRU b/tests/03_NAO_multik/scf_vdw3abc/STRU similarity index 100% rename from tests/03_NAO_multik/49_NO_KP_CR_VDW3ABC/STRU rename to tests/03_NAO_multik/scf_vdw3abc/STRU diff --git a/tests/03_NAO_multik/49_NO_KP_CR_VDW3ABC/result.ref b/tests/03_NAO_multik/scf_vdw3abc/result.ref similarity index 100% rename from tests/03_NAO_multik/49_NO_KP_CR_VDW3ABC/result.ref rename to tests/03_NAO_multik/scf_vdw3abc/result.ref diff --git a/tests/04_FF/01_LJ_Anderson/INPUT b/tests/04_FF/01_LJ_Anderson/INPUT new file mode 100644 index 0000000000..3ce91002e7 --- /dev/null +++ b/tests/04_FF/01_LJ_Anderson/INPUT @@ -0,0 +1,27 @@ +INPUT_PARAMETERS +#Parameters (General) +suffix autotest + +calculation md +pseudo_dir ../../PP_ORB + +#Parameters (esolver) +esolver_type lj +lj_rcut 8.5 +lj_epsilon 0.01032 +lj_sigma 3.405 + +cal_force 1 +cal_stress 1 + +#Parameters (MD) +md_nstep 6 +md_type nvt +md_dt 1 +md_tfirst 300 + +init_vel 1 + +#Parameters (thermostat) +md_thermostat anderson +md_nraise 40 diff --git a/tests/04_LJ_DP/01_LJ_Anderson/README b/tests/04_FF/01_LJ_Anderson/README similarity index 100% rename from tests/04_LJ_DP/01_LJ_Anderson/README rename to tests/04_FF/01_LJ_Anderson/README diff --git a/tests/04_LJ_DP/01_LJ_Anderson/STRU b/tests/04_FF/01_LJ_Anderson/STRU similarity index 100% rename from tests/04_LJ_DP/01_LJ_Anderson/STRU rename to tests/04_FF/01_LJ_Anderson/STRU diff --git a/tests/04_LJ_DP/01_LJ_Anderson/result.ref b/tests/04_FF/01_LJ_Anderson/result.ref similarity index 100% rename from tests/04_LJ_DP/01_LJ_Anderson/result.ref rename to tests/04_FF/01_LJ_Anderson/result.ref diff --git a/tests/04_FF/02_LJ_Berendsen/INPUT b/tests/04_FF/02_LJ_Berendsen/INPUT new file mode 100644 index 0000000000..ecd821a333 --- /dev/null +++ b/tests/04_FF/02_LJ_Berendsen/INPUT @@ -0,0 +1,27 @@ +INPUT_PARAMETERS +#Parameters (General) +suffix autotest + +calculation md +pseudo_dir ../../PP_ORB + +#Parameters (esolver) +esolver_type lj +lj_rcut 8.5 +lj_epsilon 0.01032 +lj_sigma 3.405 + +cal_force 1 +cal_stress 1 + +#Parameters (MD) +md_nstep 6 +md_type nvt +md_dt 1 +md_tfirst 300 + +init_vel 1 + +#Parameters (thermostat) +md_thermostat berendsen +md_nraise 40 diff --git a/tests/04_LJ_DP/02_LJ_Berendsen/README b/tests/04_FF/02_LJ_Berendsen/README similarity index 100% rename from tests/04_LJ_DP/02_LJ_Berendsen/README rename to tests/04_FF/02_LJ_Berendsen/README diff --git a/tests/04_LJ_DP/02_LJ_Berendsen/STRU b/tests/04_FF/02_LJ_Berendsen/STRU similarity index 100% rename from tests/04_LJ_DP/02_LJ_Berendsen/STRU rename to tests/04_FF/02_LJ_Berendsen/STRU diff --git a/tests/04_LJ_DP/02_LJ_Berendsen/result.ref b/tests/04_FF/02_LJ_Berendsen/result.ref similarity index 100% rename from tests/04_LJ_DP/02_LJ_Berendsen/result.ref rename to tests/04_FF/02_LJ_Berendsen/result.ref diff --git a/tests/04_FF/03_LJ_FIRE/INPUT b/tests/04_FF/03_LJ_FIRE/INPUT new file mode 100644 index 0000000000..5ce0c3acc8 --- /dev/null +++ b/tests/04_FF/03_LJ_FIRE/INPUT @@ -0,0 +1,25 @@ +INPUT_PARAMETERS +#Parameters (General) +suffix autotest + +calculation md +pseudo_dir ../../PP_ORB + +#Parameters (esolver) +esolver_type lj +lj_rcut 8.5 +lj_epsilon 0.01032 +lj_sigma 3.405 + +cal_force 1 +cal_stress 1 +force_thr_ev 1e-3 +stress_thr 1e-6 + +#Parameters (MD) +md_nstep 5 +md_type fire +md_dt 1 +md_tfirst 300 + +init_vel 1 diff --git a/tests/04_LJ_DP/03_LJ_FIRE/README b/tests/04_FF/03_LJ_FIRE/README similarity index 100% rename from tests/04_LJ_DP/03_LJ_FIRE/README rename to tests/04_FF/03_LJ_FIRE/README diff --git a/tests/04_LJ_DP/03_LJ_FIRE/STRU b/tests/04_FF/03_LJ_FIRE/STRU similarity index 100% rename from tests/04_LJ_DP/03_LJ_FIRE/STRU rename to tests/04_FF/03_LJ_FIRE/STRU diff --git a/tests/04_LJ_DP/03_LJ_FIRE/result.ref b/tests/04_FF/03_LJ_FIRE/result.ref similarity index 100% rename from tests/04_LJ_DP/03_LJ_FIRE/result.ref rename to tests/04_FF/03_LJ_FIRE/result.ref diff --git a/tests/04_FF/04_LJ_Langevin/INPUT b/tests/04_FF/04_LJ_Langevin/INPUT new file mode 100644 index 0000000000..5028760617 --- /dev/null +++ b/tests/04_FF/04_LJ_Langevin/INPUT @@ -0,0 +1,26 @@ +INPUT_PARAMETERS +#Parameters (General) +suffix autotest + +calculation md +pseudo_dir ../../PP_ORB + +#Parameters (esolver) +esolver_type lj +lj_rcut 8.5 +lj_epsilon 0.01032 +lj_sigma 3.405 + +cal_force 1 +cal_stress 1 + +#Parameters (MD) +md_nstep 6 +md_type langevin +md_dt 1 +md_tfirst 300 + +init_vel 1 + +#Parameters (Langevin) +md_damp 10 diff --git a/tests/04_LJ_DP/04_LJ_Langevin/README b/tests/04_FF/04_LJ_Langevin/README similarity index 100% rename from tests/04_LJ_DP/04_LJ_Langevin/README rename to tests/04_FF/04_LJ_Langevin/README diff --git a/tests/04_LJ_DP/04_LJ_Langevin/STRU b/tests/04_FF/04_LJ_Langevin/STRU similarity index 100% rename from tests/04_LJ_DP/04_LJ_Langevin/STRU rename to tests/04_FF/04_LJ_Langevin/STRU diff --git a/tests/04_LJ_DP/04_LJ_Langevin/result.ref b/tests/04_FF/04_LJ_Langevin/result.ref similarity index 100% rename from tests/04_LJ_DP/04_LJ_Langevin/result.ref rename to tests/04_FF/04_LJ_Langevin/result.ref diff --git a/tests/04_FF/05_LJ_MSST/INPUT b/tests/04_FF/05_LJ_MSST/INPUT new file mode 100644 index 0000000000..66e31bf134 --- /dev/null +++ b/tests/04_FF/05_LJ_MSST/INPUT @@ -0,0 +1,28 @@ +INPUT_PARAMETERS +#Parameters (General) +suffix autotest + +calculation md +pseudo_dir ../../PP_ORB + +#Parameters (esolver) +esolver_type lj +lj_rcut 8.5 +lj_epsilon 0.01032 +lj_sigma 3.405 + +cal_force 1 +cal_stress 1 + +#Parameters (MD) +md_nstep 6 +md_type msst +md_dt 1 +md_tfirst 300 + +init_vel 1 + +#Parameters (MSST) +msst_qmass 200 +msst_vel 0.028 +msst_vis 0.3 diff --git a/tests/04_LJ_DP/05_LJ_MSST/README b/tests/04_FF/05_LJ_MSST/README similarity index 100% rename from tests/04_LJ_DP/05_LJ_MSST/README rename to tests/04_FF/05_LJ_MSST/README diff --git a/tests/04_LJ_DP/05_LJ_MSST/STRU b/tests/04_FF/05_LJ_MSST/STRU similarity index 100% rename from tests/04_LJ_DP/05_LJ_MSST/STRU rename to tests/04_FF/05_LJ_MSST/STRU diff --git a/tests/04_LJ_DP/05_LJ_MSST/result.ref b/tests/04_FF/05_LJ_MSST/result.ref similarity index 100% rename from tests/04_LJ_DP/05_LJ_MSST/result.ref rename to tests/04_FF/05_LJ_MSST/result.ref diff --git a/tests/04_FF/06_LJ_NHC_NVT/INPUT b/tests/04_FF/06_LJ_NHC_NVT/INPUT new file mode 100644 index 0000000000..55373c1e5a --- /dev/null +++ b/tests/04_FF/06_LJ_NHC_NVT/INPUT @@ -0,0 +1,26 @@ +INPUT_PARAMETERS +#Parameters (General) +suffix autotest + +calculation md +pseudo_dir ../../PP_ORB + +#Parameters (esolver) +esolver_type lj +lj_rcut 8.5 +lj_epsilon 0.01032 +lj_sigma 3.405 + +cal_force 1 +cal_stress 1 + +#Parameters (MD) +md_nstep 6 +md_type nvt +md_dt 1 +md_tfirst 300 +md_tlast 300 +md_tchain 3 +md_tfreq 0.01 + +init_vel 1 diff --git a/tests/04_LJ_DP/06_LJ_NHC_NVT/README b/tests/04_FF/06_LJ_NHC_NVT/README similarity index 100% rename from tests/04_LJ_DP/06_LJ_NHC_NVT/README rename to tests/04_FF/06_LJ_NHC_NVT/README diff --git a/tests/04_LJ_DP/06_LJ_NHC_NVT/STRU b/tests/04_FF/06_LJ_NHC_NVT/STRU similarity index 100% rename from tests/04_LJ_DP/06_LJ_NHC_NVT/STRU rename to tests/04_FF/06_LJ_NHC_NVT/STRU diff --git a/tests/04_LJ_DP/06_LJ_NHC_NVT/result.ref b/tests/04_FF/06_LJ_NHC_NVT/result.ref similarity index 100% rename from tests/04_LJ_DP/06_LJ_NHC_NVT/result.ref rename to tests/04_FF/06_LJ_NHC_NVT/result.ref diff --git a/tests/04_FF/07_LJ_NPT_aniso_none/INPUT b/tests/04_FF/07_LJ_NPT_aniso_none/INPUT new file mode 100644 index 0000000000..bdc2602684 --- /dev/null +++ b/tests/04_FF/07_LJ_NPT_aniso_none/INPUT @@ -0,0 +1,34 @@ +INPUT_PARAMETERS +#Parameters (General) +suffix autotest + +calculation md +pseudo_dir ../../PP_ORB + +#Parameters (esolver) +esolver_type lj +lj_rcut 8.5 +lj_epsilon 0.01032 +lj_sigma 3.405 + +cal_force 1 +cal_stress 1 + +#Parameters (MD) +md_nstep 6 +md_type npt +md_dt 1 +md_tchain 3 +md_tfirst 300 +md_tlast 300 +md_tfreq 0.01 + +init_vel 1 + +#Parameters (NPT) +md_pmode aniso +md_pcouple none +md_pchain 3 +md_pfirst 10 +md_plast 10 +md_pfreq 0.001 diff --git a/tests/04_LJ_DP/07_LJ_NPT_aniso_none/README b/tests/04_FF/07_LJ_NPT_aniso_none/README similarity index 100% rename from tests/04_LJ_DP/07_LJ_NPT_aniso_none/README rename to tests/04_FF/07_LJ_NPT_aniso_none/README diff --git a/tests/04_LJ_DP/07_LJ_NPT_aniso_none/STRU b/tests/04_FF/07_LJ_NPT_aniso_none/STRU similarity index 100% rename from tests/04_LJ_DP/07_LJ_NPT_aniso_none/STRU rename to tests/04_FF/07_LJ_NPT_aniso_none/STRU diff --git a/tests/04_LJ_DP/07_LJ_NPT_aniso_none/result.ref b/tests/04_FF/07_LJ_NPT_aniso_none/result.ref similarity index 100% rename from tests/04_LJ_DP/07_LJ_NPT_aniso_none/result.ref rename to tests/04_FF/07_LJ_NPT_aniso_none/result.ref diff --git a/tests/04_FF/08_LJ_NPT_aniso_xy/INPUT b/tests/04_FF/08_LJ_NPT_aniso_xy/INPUT new file mode 100644 index 0000000000..10cb899f9f --- /dev/null +++ b/tests/04_FF/08_LJ_NPT_aniso_xy/INPUT @@ -0,0 +1,34 @@ +INPUT_PARAMETERS +#Parameters (General) +suffix autotest + +calculation md +pseudo_dir ../../PP_ORB + +#Parameters (esolver) +esolver_type lj +lj_rcut 8.5 +lj_epsilon 0.01032 +lj_sigma 3.405 + +cal_force 1 +cal_stress 1 + +#Parameters (MD) +md_nstep 6 +md_type npt +md_dt 1 +md_tchain 3 +md_tfirst 300 +md_tlast 300 +md_tfreq 0.01 + +init_vel 1 + +#Parameters (NPT) +md_pmode aniso +md_pcouple xy +md_pchain 3 +md_pfirst 10 +md_plast 10 +md_pfreq 0.001 diff --git a/tests/04_LJ_DP/08_LJ_NPT_aniso_xy/README b/tests/04_FF/08_LJ_NPT_aniso_xy/README similarity index 100% rename from tests/04_LJ_DP/08_LJ_NPT_aniso_xy/README rename to tests/04_FF/08_LJ_NPT_aniso_xy/README diff --git a/tests/04_LJ_DP/08_LJ_NPT_aniso_xy/STRU b/tests/04_FF/08_LJ_NPT_aniso_xy/STRU similarity index 100% rename from tests/04_LJ_DP/08_LJ_NPT_aniso_xy/STRU rename to tests/04_FF/08_LJ_NPT_aniso_xy/STRU diff --git a/tests/04_LJ_DP/08_LJ_NPT_aniso_xy/result.ref b/tests/04_FF/08_LJ_NPT_aniso_xy/result.ref similarity index 100% rename from tests/04_LJ_DP/08_LJ_NPT_aniso_xy/result.ref rename to tests/04_FF/08_LJ_NPT_aniso_xy/result.ref diff --git a/tests/04_FF/09_LJ_NPT_aniso_xz/INPUT b/tests/04_FF/09_LJ_NPT_aniso_xz/INPUT new file mode 100644 index 0000000000..6d64a221b5 --- /dev/null +++ b/tests/04_FF/09_LJ_NPT_aniso_xz/INPUT @@ -0,0 +1,34 @@ +INPUT_PARAMETERS +#Parameters (General) +suffix autotest + +calculation md +pseudo_dir ../../PP_ORB + +#Parameters (esolver) +esolver_type lj +lj_rcut 8.5 +lj_epsilon 0.01032 +lj_sigma 3.405 + +cal_force 1 +cal_stress 1 + +#Parameters (MD) +md_nstep 6 +md_type npt +md_dt 1 +md_tchain 3 +md_tfirst 300 +md_tlast 300 +md_tfreq 0.01 + +init_vel 1 + +#Parameters (NPT) +md_pmode aniso +md_pcouple xz +md_pchain 3 +md_pfirst 10 +md_plast 10 +md_pfreq 0.001 diff --git a/tests/04_LJ_DP/09_LJ_NPT_aniso_xz/README b/tests/04_FF/09_LJ_NPT_aniso_xz/README similarity index 100% rename from tests/04_LJ_DP/09_LJ_NPT_aniso_xz/README rename to tests/04_FF/09_LJ_NPT_aniso_xz/README diff --git a/tests/04_LJ_DP/09_LJ_NPT_aniso_xz/STRU b/tests/04_FF/09_LJ_NPT_aniso_xz/STRU similarity index 100% rename from tests/04_LJ_DP/09_LJ_NPT_aniso_xz/STRU rename to tests/04_FF/09_LJ_NPT_aniso_xz/STRU diff --git a/tests/04_LJ_DP/09_LJ_NPT_aniso_xz/result.ref b/tests/04_FF/09_LJ_NPT_aniso_xz/result.ref similarity index 100% rename from tests/04_LJ_DP/09_LJ_NPT_aniso_xz/result.ref rename to tests/04_FF/09_LJ_NPT_aniso_xz/result.ref diff --git a/tests/04_FF/101_NEP_HfO2/INPUT b/tests/04_FF/101_NEP_HfO2/INPUT new file mode 100644 index 0000000000..391b4ae66c --- /dev/null +++ b/tests/04_FF/101_NEP_HfO2/INPUT @@ -0,0 +1,21 @@ +INPUT_PARAMETERS +#Parameters (General) +suffix autotest +calculation md +pseudo_dir ../../PP_ORB + +esolver_type nep +pot_file ../../PP_ORB/nep_hfo2.txt + +cal_force 1 +cal_stress 1 + +md_nstep 4 +md_type npt +md_dt 1 +md_tfirst 300 +md_thermostat nhc +md_dumpfreq 1 +md_seed 1 + +init_vel 1 diff --git a/tests/04_FF/101_NEP_HfO2/README b/tests/04_FF/101_NEP_HfO2/README new file mode 100644 index 0000000000..59471a3d63 --- /dev/null +++ b/tests/04_FF/101_NEP_HfO2/README @@ -0,0 +1 @@ +This test is for NEP potential in source_esolver diff --git a/tests/04_FF/101_NEP_HfO2/STRU b/tests/04_FF/101_NEP_HfO2/STRU new file mode 100644 index 0000000000..392b39a9de --- /dev/null +++ b/tests/04_FF/101_NEP_HfO2/STRU @@ -0,0 +1,46 @@ +ATOMIC_SPECIES +Hf 178.4900 Hf_ONCV_PBE-1.0.upf auto +O 15.9990 O_ONCV_PBE-1.0.upf auto + +LATTICE_CONSTANT +1.8897261258 + +LATTICE_VECTORS + 5.1413473800 0.0000000000 0.0000000000 + -0.0000000000 5.2590020200 0.0000000000 + 0.0000000000 0.0000000000 10.0937313500 + +ATOMIC_POSITIONS +Cartesian + +Hf #label +0.0000 #magnetism +8 #number of atoms + 4.9321554152 1.8022228111 1.3940670392 m 1 1 1 v 0.0000268564 -0.0000166075 0.0000474562 + 2.7798656548 4.4317238211 1.3940670392 m 1 1 1 v 0.0000000200 -0.0000374927 0.0000788386 + 2.3614817252 1.8022228111 3.6527986358 m 1 1 1 v -0.0001343687 0.0000268300 -0.0000099511 + 0.2091919648 4.4317238211 3.6527986358 m 1 1 1 v 0.0000934051 -0.0001263072 0.0000256511 + 4.9321554152 0.8272781989 6.4409327142 m 1 1 1 v 0.0000128512 0.0000820486 -0.0000459705 + 2.7798656548 3.4567792089 6.4409327142 m 1 1 1 v -0.0000189326 -0.0000173409 0.0000299337 + 2.3614817252 0.8272781989 8.6996643108 m 1 1 1 v -0.0000999091 -0.0000152428 0.0000155321 + 0.2091919648 3.4567792089 8.6996643108 m 1 1 1 v 0.0000343673 0.0000511675 -0.0000742881 + +O #label +0.0000 #magnetism +16 #number of atoms + 4.2746040259 3.5082243969 0.3396171169 m 1 1 1 v 0.0003865583 0.0000777522 0.0000116095 + 3.4374170441 0.8787233869 0.3396171169 m 1 1 1 v 0.0000534470 -0.0001395648 0.0001993588 + 1.2729952463 0.4601737732 2.2581040693 m 1 1 1 v -0.0000071474 0.0002991102 -0.0000305321 + 1.2976784437 3.0896747832 2.2581040693 m 1 1 1 v 0.0001336825 -0.0002496113 -0.0001592126 + 3.8436689363 0.4601737732 2.7887616057 m 1 1 1 v -0.0000261747 -0.0001610814 -0.0001891739 + 3.8683521337 3.0896747832 2.7887616057 m 1 1 1 v 0.0000706455 0.0001527269 -0.0000451254 + 0.8667433541 0.8787233869 4.7072485581 m 1 1 1 v -0.0000497111 -0.0001335833 -0.0003114608 + 1.7039303359 3.5082243969 4.7072485581 m 1 1 1 v 0.0000187769 -0.0001188673 0.0002670967 + 3.4374170441 1.7507776231 5.3864827919 m 1 1 1 v -0.0000068889 0.0003990208 0.0000201697 + 4.2746040259 4.3802786331 5.3864827919 m 1 1 1 v -0.0001434703 -0.0000170121 0.0001518021 + 1.2729952463 2.1693272368 7.3049697443 m 1 1 1 v 0.0000242375 0.0000341991 -0.0001566654 + 1.2976784437 4.7988282468 7.3049697443 m 1 1 1 v 0.0001509503 0.0002535810 -0.0002483829 + 3.8436689363 2.1693272368 7.8356272807 m 1 1 1 v 0.0000596892 -0.0001679403 -0.0000174792 + 3.8683521337 4.7988282468 7.8356272807 m 1 1 1 v 0.0001558498 0.0001883150 -0.0000826476 + 0.8667433541 1.7507776231 9.7541142331 m 1 1 1 v -0.0000825808 0.0000699638 -0.0001914502 + 1.7039303359 4.3802786331 9.7541142331 m 1 1 1 v 0.0002183493 0.0001036635 0.0000323666 diff --git a/tests/04_FF/101_NEP_HfO2/result.ref b/tests/04_FF/101_NEP_HfO2/result.ref new file mode 100644 index 0000000000..65d0d35b78 --- /dev/null +++ b/tests/04_FF/101_NEP_HfO2/result.ref @@ -0,0 +1,5 @@ +etotref -243.9772424704458 +etotperatomref -10.1657184363 +totalforceref 11.696847 +totalstressref 186.519888 +totaltimeref 0.02 diff --git a/tests/04_FF/10_LJ_NPT_aniso_yz/INPUT b/tests/04_FF/10_LJ_NPT_aniso_yz/INPUT new file mode 100644 index 0000000000..59f89816bd --- /dev/null +++ b/tests/04_FF/10_LJ_NPT_aniso_yz/INPUT @@ -0,0 +1,34 @@ +INPUT_PARAMETERS +#Parameters (General) +suffix autotest + +calculation md +pseudo_dir ../../PP_ORB + +#Parameters (esolver) +esolver_type lj +lj_rcut 8.5 +lj_epsilon 0.01032 +lj_sigma 3.405 + +cal_force 1 +cal_stress 1 + +#Parameters (MD) +md_nstep 6 +md_type npt +md_dt 1 +md_tchain 3 +md_tfirst 300 +md_tlast 300 +md_tfreq 0.01 + +init_vel 1 + +#Parameters (NPT) +md_pmode aniso +md_pcouple yz +md_pchain 3 +md_pfirst 10 +md_plast 10 +md_pfreq 0.001 diff --git a/tests/04_LJ_DP/10_LJ_NPT_aniso_yz/README b/tests/04_FF/10_LJ_NPT_aniso_yz/README similarity index 100% rename from tests/04_LJ_DP/10_LJ_NPT_aniso_yz/README rename to tests/04_FF/10_LJ_NPT_aniso_yz/README diff --git a/tests/04_LJ_DP/10_LJ_NPT_aniso_yz/STRU b/tests/04_FF/10_LJ_NPT_aniso_yz/STRU similarity index 100% rename from tests/04_LJ_DP/10_LJ_NPT_aniso_yz/STRU rename to tests/04_FF/10_LJ_NPT_aniso_yz/STRU diff --git a/tests/04_LJ_DP/10_LJ_NPT_aniso_yz/result.ref b/tests/04_FF/10_LJ_NPT_aniso_yz/result.ref similarity index 100% rename from tests/04_LJ_DP/10_LJ_NPT_aniso_yz/result.ref rename to tests/04_FF/10_LJ_NPT_aniso_yz/result.ref diff --git a/tests/04_FF/11_LJ_NPT_iso/INPUT b/tests/04_FF/11_LJ_NPT_iso/INPUT new file mode 100644 index 0000000000..5d8b0106f7 --- /dev/null +++ b/tests/04_FF/11_LJ_NPT_iso/INPUT @@ -0,0 +1,34 @@ +INPUT_PARAMETERS +#Parameters (General) +suffix autotest + +calculation md +pseudo_dir ../../PP_ORB + +#Parameters (esolver) +esolver_type lj +lj_rcut 8.5 +lj_epsilon 0.01032 +lj_sigma 3.405 + +cal_force 1 +cal_stress 1 + +#Parameters (MD) +md_nstep 6 +md_type npt +md_dt 1 +md_tchain 3 +md_tfirst 300 +md_tlast 300 +md_tfreq 0.01 + +init_vel 1 + +#Parameters (NPT) +md_pmode iso +md_pcouple xyz +md_pchain 3 +md_pfirst 10 +md_plast 10 +md_pfreq 0.001 diff --git a/tests/04_LJ_DP/11_LJ_NPT_iso/README b/tests/04_FF/11_LJ_NPT_iso/README similarity index 100% rename from tests/04_LJ_DP/11_LJ_NPT_iso/README rename to tests/04_FF/11_LJ_NPT_iso/README diff --git a/tests/04_LJ_DP/11_LJ_NPT_iso/STRU b/tests/04_FF/11_LJ_NPT_iso/STRU similarity index 100% rename from tests/04_LJ_DP/11_LJ_NPT_iso/STRU rename to tests/04_FF/11_LJ_NPT_iso/STRU diff --git a/tests/04_LJ_DP/11_LJ_NPT_iso/result.ref b/tests/04_FF/11_LJ_NPT_iso/result.ref similarity index 100% rename from tests/04_LJ_DP/11_LJ_NPT_iso/result.ref rename to tests/04_FF/11_LJ_NPT_iso/result.ref diff --git a/tests/04_FF/12_LJ_NPT_tri/INPUT b/tests/04_FF/12_LJ_NPT_tri/INPUT new file mode 100644 index 0000000000..83305060ef --- /dev/null +++ b/tests/04_FF/12_LJ_NPT_tri/INPUT @@ -0,0 +1,34 @@ +INPUT_PARAMETERS +#Parameters (General) +suffix autotest + +calculation md +pseudo_dir ../../PP_ORB + +#Parameters (esolver) +esolver_type lj +lj_rcut 8.5 +lj_epsilon 0.01032 +lj_sigma 3.405 + +cal_force 1 +cal_stress 1 + +#Parameters (MD) +md_nstep 6 +md_type npt +md_dt 1 +md_tchain 3 +md_tfirst 300 +md_tlast 300 +md_tfreq 0.01 + +init_vel 1 + +#Parameters (NPT) +md_pmode tri +md_pcouple none +md_pchain 3 +md_pfirst 10 +md_plast 10 +md_pfreq 0.001 diff --git a/tests/04_LJ_DP/12_LJ_NPT_tri/README b/tests/04_FF/12_LJ_NPT_tri/README similarity index 100% rename from tests/04_LJ_DP/12_LJ_NPT_tri/README rename to tests/04_FF/12_LJ_NPT_tri/README diff --git a/tests/04_LJ_DP/12_LJ_NPT_tri/STRU b/tests/04_FF/12_LJ_NPT_tri/STRU similarity index 100% rename from tests/04_LJ_DP/12_LJ_NPT_tri/STRU rename to tests/04_FF/12_LJ_NPT_tri/STRU diff --git a/tests/04_LJ_DP/12_LJ_NPT_tri/result.ref b/tests/04_FF/12_LJ_NPT_tri/result.ref similarity index 100% rename from tests/04_LJ_DP/12_LJ_NPT_tri/result.ref rename to tests/04_FF/12_LJ_NPT_tri/result.ref diff --git a/tests/04_FF/13_LJ_NVE/INPUT b/tests/04_FF/13_LJ_NVE/INPUT new file mode 100644 index 0000000000..522d07f4f3 --- /dev/null +++ b/tests/04_FF/13_LJ_NVE/INPUT @@ -0,0 +1,26 @@ +INPUT_PARAMETERS +#Parameters (General) +suffix autotest + +calculation md +pseudo_dir ../../PP_ORB + +#Parameters (esolver) +esolver_type lj +lj_rcut 8.5 +lj_epsilon 0.01032 +lj_sigma 3.405 + +cal_force 1 +cal_stress 1 + +#Parameters (MD) +md_nstep 161 +md_type nve +md_dt 1 +md_tfirst 300 + +init_vel 1 + +md_restart 1 +read_file_dir . diff --git a/tests/04_LJ_DP/13_LJ_NVE/README b/tests/04_FF/13_LJ_NVE/README similarity index 100% rename from tests/04_LJ_DP/13_LJ_NVE/README rename to tests/04_FF/13_LJ_NVE/README diff --git a/tests/04_LJ_DP/13_LJ_NVE/Restart_md.dat b/tests/04_FF/13_LJ_NVE/Restart_md.txt similarity index 100% rename from tests/04_LJ_DP/13_LJ_NVE/Restart_md.dat rename to tests/04_FF/13_LJ_NVE/Restart_md.txt diff --git a/tests/04_LJ_DP/13_LJ_NVE/STRU_MD_155 b/tests/04_FF/13_LJ_NVE/STRU_MD_155 similarity index 100% rename from tests/04_LJ_DP/13_LJ_NVE/STRU_MD_155 rename to tests/04_FF/13_LJ_NVE/STRU_MD_155 diff --git a/tests/04_LJ_DP/13_LJ_NVE/result.ref b/tests/04_FF/13_LJ_NVE/result.ref similarity index 100% rename from tests/04_LJ_DP/13_LJ_NVE/result.ref rename to tests/04_FF/13_LJ_NVE/result.ref diff --git a/tests/04_FF/14_LJ_rescale_v/INPUT b/tests/04_FF/14_LJ_rescale_v/INPUT new file mode 100644 index 0000000000..5915109bea --- /dev/null +++ b/tests/04_FF/14_LJ_rescale_v/INPUT @@ -0,0 +1,27 @@ +INPUT_PARAMETERS +#Parameters (General) +suffix autotest + +calculation md +pseudo_dir ../../PP_ORB + +#Parameters (esolver) +esolver_type lj +lj_rcut 8.5 +lj_epsilon 0.01032 +lj_sigma 3.405 + +cal_force 1 +cal_stress 1 + +#Parameters (MD) +md_nstep 15 +md_type nvt +md_dt 1 +md_tfirst 300 +md_restart 1 +init_vel 1 + +#Parameters (thermostat) +md_thermostat rescale_v +md_nraise 2 diff --git a/tests/04_LJ_DP/14_LJ_rescale_v/OUT.autotest/Restart_md.dat b/tests/04_FF/14_LJ_rescale_v/OUT.autotest/Restart_md.txt similarity index 100% rename from tests/04_LJ_DP/14_LJ_rescale_v/OUT.autotest/Restart_md.dat rename to tests/04_FF/14_LJ_rescale_v/OUT.autotest/Restart_md.txt diff --git a/tests/04_LJ_DP/14_LJ_rescale_v/OUT.autotest/STRU/STRU_MD_10 b/tests/04_FF/14_LJ_rescale_v/OUT.autotest/STRU/STRU_MD_10 similarity index 100% rename from tests/04_LJ_DP/14_LJ_rescale_v/OUT.autotest/STRU/STRU_MD_10 rename to tests/04_FF/14_LJ_rescale_v/OUT.autotest/STRU/STRU_MD_10 diff --git a/tests/04_LJ_DP/14_LJ_rescale_v/README b/tests/04_FF/14_LJ_rescale_v/README similarity index 100% rename from tests/04_LJ_DP/14_LJ_rescale_v/README rename to tests/04_FF/14_LJ_rescale_v/README diff --git a/tests/04_LJ_DP/14_LJ_rescale_v/result.ref b/tests/04_FF/14_LJ_rescale_v/result.ref similarity index 100% rename from tests/04_LJ_DP/14_LJ_rescale_v/result.ref rename to tests/04_FF/14_LJ_rescale_v/result.ref diff --git a/tests/04_FF/15_LJ_rescaling/INPUT b/tests/04_FF/15_LJ_rescaling/INPUT new file mode 100644 index 0000000000..b551b27402 --- /dev/null +++ b/tests/04_FF/15_LJ_rescaling/INPUT @@ -0,0 +1,27 @@ +INPUT_PARAMETERS +#Parameters (General) +suffix autotest + +calculation md +pseudo_dir ../../PP_ORB + +#Parameters (esolver) +esolver_type lj +lj_rcut 8.5 +lj_epsilon 0.01032 +lj_sigma 3.405 + +cal_force 1 +cal_stress 1 + +#Parameters (MD) +md_nstep 6 +md_type nvt +md_dt 1 +md_tfirst 300 + +init_vel 1 + +#Parameters (thermostat) +md_thermostat rescaling +md_tolerance 0 diff --git a/tests/04_LJ_DP/15_LJ_rescaling/README b/tests/04_FF/15_LJ_rescaling/README similarity index 100% rename from tests/04_LJ_DP/15_LJ_rescaling/README rename to tests/04_FF/15_LJ_rescaling/README diff --git a/tests/04_LJ_DP/15_LJ_rescaling/STRU b/tests/04_FF/15_LJ_rescaling/STRU similarity index 100% rename from tests/04_LJ_DP/15_LJ_rescaling/STRU rename to tests/04_FF/15_LJ_rescaling/STRU diff --git a/tests/04_LJ_DP/15_LJ_rescaling/result.ref b/tests/04_FF/15_LJ_rescaling/result.ref similarity index 100% rename from tests/04_LJ_DP/15_LJ_rescaling/result.ref rename to tests/04_FF/15_LJ_rescaling/result.ref diff --git a/tests/04_FF/16_LJ_RE_rule1/INPUT b/tests/04_FF/16_LJ_RE_rule1/INPUT new file mode 100644 index 0000000000..327bf75a49 --- /dev/null +++ b/tests/04_FF/16_LJ_RE_rule1/INPUT @@ -0,0 +1,19 @@ +INPUT_PARAMETERS +#Parameters (General) +suffix autotest +calculation relax +pseudo_dir ../../PP_ORB + +#Parameters (esolver) +esolver_type lj +lj_rule 1 +lj_rcut 8.5 8 8.4 +lj_epsilon 0.01 0.02 +lj_sigma 3.4 3.5 + +#Parameters (relax) +relax_new 1 +relax_nmax 5 +force_thr_ev 0.01 +cal_force 1 +cal_stress 1 diff --git a/tests/04_LJ_DP/16_LJ_RE_rule1/README b/tests/04_FF/16_LJ_RE_rule1/README similarity index 100% rename from tests/04_LJ_DP/16_LJ_RE_rule1/README rename to tests/04_FF/16_LJ_RE_rule1/README diff --git a/tests/04_LJ_DP/16_LJ_RE_rule1/STRU b/tests/04_FF/16_LJ_RE_rule1/STRU similarity index 100% rename from tests/04_LJ_DP/16_LJ_RE_rule1/STRU rename to tests/04_FF/16_LJ_RE_rule1/STRU diff --git a/tests/04_LJ_DP/16_LJ_RE_rule1/result.ref b/tests/04_FF/16_LJ_RE_rule1/result.ref similarity index 100% rename from tests/04_LJ_DP/16_LJ_RE_rule1/result.ref rename to tests/04_FF/16_LJ_RE_rule1/result.ref diff --git a/tests/04_FF/17_LJ_CR_multi_ele/INPUT b/tests/04_FF/17_LJ_CR_multi_ele/INPUT new file mode 100644 index 0000000000..838606b33c --- /dev/null +++ b/tests/04_FF/17_LJ_CR_multi_ele/INPUT @@ -0,0 +1,19 @@ +INPUT_PARAMETERS +#Parameters (General) +suffix autotest +calculation cell-relax +pseudo_dir ../../PP_ORB + +#Parameters (esolver) +esolver_type lj +lj_rcut 8.5 8 8.4 +lj_epsilon 0.01 0.02 0.03 +lj_sigma 3.4 3.5 3.6 + +#Parameters (relax) +relax_new 1 +relax_nmax 5 +force_thr_ev 0.01 +stress_thr 0.1 +cal_force 1 +cal_stress 1 diff --git a/tests/04_LJ_DP/17_LJ_CR_multi_ele/README b/tests/04_FF/17_LJ_CR_multi_ele/README similarity index 100% rename from tests/04_LJ_DP/17_LJ_CR_multi_ele/README rename to tests/04_FF/17_LJ_CR_multi_ele/README diff --git a/tests/04_LJ_DP/17_LJ_CR_multi_ele/STRU b/tests/04_FF/17_LJ_CR_multi_ele/STRU similarity index 100% rename from tests/04_LJ_DP/17_LJ_CR_multi_ele/STRU rename to tests/04_FF/17_LJ_CR_multi_ele/STRU diff --git a/tests/04_LJ_DP/17_LJ_CR_multi_ele/result.ref b/tests/04_FF/17_LJ_CR_multi_ele/result.ref similarity index 100% rename from tests/04_LJ_DP/17_LJ_CR_multi_ele/result.ref rename to tests/04_FF/17_LJ_CR_multi_ele/result.ref diff --git a/tests/04_FF/18_LJ_single_rule2/INPUT b/tests/04_FF/18_LJ_single_rule2/INPUT new file mode 100644 index 0000000000..de52751200 --- /dev/null +++ b/tests/04_FF/18_LJ_single_rule2/INPUT @@ -0,0 +1,15 @@ +INPUT_PARAMETERS +#Parameters (General) +suffix autotest +calculation scf + +#Parameters (esolver) +esolver_type lj +lj_eshift true +lj_rule 2 +lj_rcut 8.5 +lj_epsilon 0.01 0.02 +lj_sigma 3.4 3.5 + +cal_force 1 +cal_stress 1 diff --git a/tests/04_LJ_DP/18_LJ_single_rule2/README b/tests/04_FF/18_LJ_single_rule2/README similarity index 100% rename from tests/04_LJ_DP/18_LJ_single_rule2/README rename to tests/04_FF/18_LJ_single_rule2/README diff --git a/tests/04_LJ_DP/18_LJ_single_rule2/STRU b/tests/04_FF/18_LJ_single_rule2/STRU similarity index 100% rename from tests/04_LJ_DP/18_LJ_single_rule2/STRU rename to tests/04_FF/18_LJ_single_rule2/STRU diff --git a/tests/04_LJ_DP/18_LJ_single_rule2/result.ref b/tests/04_FF/18_LJ_single_rule2/result.ref similarity index 100% rename from tests/04_LJ_DP/18_LJ_single_rule2/result.ref rename to tests/04_FF/18_LJ_single_rule2/result.ref diff --git a/tests/04_LJ_DP/19_LJ_RE_stop/EXIT b/tests/04_FF/19_LJ_RE_stop/EXIT similarity index 100% rename from tests/04_LJ_DP/19_LJ_RE_stop/EXIT rename to tests/04_FF/19_LJ_RE_stop/EXIT diff --git a/tests/04_FF/19_LJ_RE_stop/INPUT b/tests/04_FF/19_LJ_RE_stop/INPUT new file mode 100644 index 0000000000..327bf75a49 --- /dev/null +++ b/tests/04_FF/19_LJ_RE_stop/INPUT @@ -0,0 +1,19 @@ +INPUT_PARAMETERS +#Parameters (General) +suffix autotest +calculation relax +pseudo_dir ../../PP_ORB + +#Parameters (esolver) +esolver_type lj +lj_rule 1 +lj_rcut 8.5 8 8.4 +lj_epsilon 0.01 0.02 +lj_sigma 3.4 3.5 + +#Parameters (relax) +relax_new 1 +relax_nmax 5 +force_thr_ev 0.01 +cal_force 1 +cal_stress 1 diff --git a/tests/04_LJ_DP/19_LJ_RE_stop/README b/tests/04_FF/19_LJ_RE_stop/README similarity index 100% rename from tests/04_LJ_DP/19_LJ_RE_stop/README rename to tests/04_FF/19_LJ_RE_stop/README diff --git a/tests/04_LJ_DP/19_LJ_RE_stop/STRU b/tests/04_FF/19_LJ_RE_stop/STRU similarity index 100% rename from tests/04_LJ_DP/19_LJ_RE_stop/STRU rename to tests/04_FF/19_LJ_RE_stop/STRU diff --git a/tests/04_LJ_DP/19_LJ_RE_stop/result.ref b/tests/04_FF/19_LJ_RE_stop/result.ref similarity index 100% rename from tests/04_LJ_DP/19_LJ_RE_stop/result.ref rename to tests/04_FF/19_LJ_RE_stop/result.ref diff --git a/tests/04_FF/20_LJ_dry_run/INPUT b/tests/04_FF/20_LJ_dry_run/INPUT new file mode 100644 index 0000000000..0d0b450f61 --- /dev/null +++ b/tests/04_FF/20_LJ_dry_run/INPUT @@ -0,0 +1,15 @@ +INPUT_PARAMETERS +#Parameters (General) +suffix autotest +calculation relax + +#Parameters (esolver) +esolver_type lj +lj_rule 1 +lj_rcut 8.5 8 8.4 +lj_epsilon 0.01 0.02 +lj_sigma 3.4 3.5 + +#Parameters (relax) +relax_new 1 +relax_nmax 0 diff --git a/tests/04_LJ_DP/20_LJ_dry_run/README b/tests/04_FF/20_LJ_dry_run/README similarity index 100% rename from tests/04_LJ_DP/20_LJ_dry_run/README rename to tests/04_FF/20_LJ_dry_run/README diff --git a/tests/04_LJ_DP/20_LJ_dry_run/STRU b/tests/04_FF/20_LJ_dry_run/STRU similarity index 100% rename from tests/04_LJ_DP/20_LJ_dry_run/STRU rename to tests/04_FF/20_LJ_dry_run/STRU diff --git a/tests/04_LJ_DP/20_LJ_dry_run/result.ref b/tests/04_FF/20_LJ_dry_run/result.ref similarity index 100% rename from tests/04_LJ_DP/20_LJ_dry_run/result.ref rename to tests/04_FF/20_LJ_dry_run/result.ref diff --git a/tests/04_FF/50_DP_Al/INPUT b/tests/04_FF/50_DP_Al/INPUT new file mode 100644 index 0000000000..f982962b56 --- /dev/null +++ b/tests/04_FF/50_DP_Al/INPUT @@ -0,0 +1,24 @@ +INPUT_PARAMETERS +#Parameters (General) +suffix autotest +calculation md +pseudo_dir ../../PP_ORB + +esolver_type dp +pot_file ../../PP_ORB/Al-SCAN.pb + +cal_force 1 +cal_stress 1 + +md_nstep 4 +md_type msst +md_dt 1 +md_tfirst 200 +md_dumpfreq 1 +md_restartfreq 1 + +msst_qmass 200 +msst_vel 0.028 +msst_vis 0.3 + +init_vel 1 diff --git a/tests/04_LJ_DP/50_DP_Al/README b/tests/04_FF/50_DP_Al/README similarity index 100% rename from tests/04_LJ_DP/50_DP_Al/README rename to tests/04_FF/50_DP_Al/README diff --git a/tests/04_LJ_DP/50_DP_Al/STRU b/tests/04_FF/50_DP_Al/STRU similarity index 100% rename from tests/04_LJ_DP/50_DP_Al/STRU rename to tests/04_FF/50_DP_Al/STRU diff --git a/tests/04_LJ_DP/50_DP_Al/result.ref b/tests/04_FF/50_DP_Al/result.ref similarity index 100% rename from tests/04_LJ_DP/50_DP_Al/result.ref rename to tests/04_FF/50_DP_Al/result.ref diff --git a/tests/04_LJ_DP/CASES_CPU.txt b/tests/04_FF/CASES_CPU.txt similarity index 95% rename from tests/04_LJ_DP/CASES_CPU.txt rename to tests/04_FF/CASES_CPU.txt index 8d21e87079..886fac4f08 100644 --- a/tests/04_LJ_DP/CASES_CPU.txt +++ b/tests/04_FF/CASES_CPU.txt @@ -19,3 +19,4 @@ 19_LJ_RE_stop 20_LJ_dry_run #50_DP_Al +#101_NEP_HfO2 diff --git a/tests/04_FF/CMakeLists.txt b/tests/04_FF/CMakeLists.txt new file mode 100644 index 0000000000..e40cc5079a --- /dev/null +++ b/tests/04_FF/CMakeLists.txt @@ -0,0 +1,16 @@ +enable_testing() + +find_program(BASH bash) +if(ENABLE_ASAN) + add_test( + NAME 04_FF_test_with_asan + COMMAND ${BASH} ../integrate/Autotest.sh -a ${ABACUS_BIN_PATH} -n 2 -s true + WORKING_DIRECTORY ${ABACUS_TEST_DIR}/04_FF + ) +else() + add_test( + NAME 04_FF + COMMAND ${BASH} ../integrate/Autotest.sh -a ${ABACUS_BIN_PATH} -n 4 + WORKING_DIRECTORY ${ABACUS_TEST_DIR}/04_FF + ) +endif() diff --git a/tests/04_LJ_DP/01_LJ_Anderson/INPUT b/tests/04_LJ_DP/01_LJ_Anderson/INPUT deleted file mode 100644 index 1a9900435a..0000000000 --- a/tests/04_LJ_DP/01_LJ_Anderson/INPUT +++ /dev/null @@ -1,27 +0,0 @@ -INPUT_PARAMETERS -#Parameters (General) -suffix autotest - -calculation md -pseudo_dir ../../PP_ORB - -#Parameters (esolver) -esolver_type lj -lj_rcut 8.5 -lj_epsilon 0.01032 -lj_sigma 3.405 - -cal_force 1 -cal_stress 1 - -#Parameters (MD) -md_nstep 5 -md_type nvt -md_dt 1 -md_tfirst 300 - -init_vel 1 - -#Parameters (thermostat) -md_thermostat anderson -md_nraise 40 diff --git a/tests/04_LJ_DP/02_LJ_Berendsen/INPUT b/tests/04_LJ_DP/02_LJ_Berendsen/INPUT deleted file mode 100644 index c015bbb9b9..0000000000 --- a/tests/04_LJ_DP/02_LJ_Berendsen/INPUT +++ /dev/null @@ -1,27 +0,0 @@ -INPUT_PARAMETERS -#Parameters (General) -suffix autotest - -calculation md -pseudo_dir ../../PP_ORB - -#Parameters (esolver) -esolver_type lj -lj_rcut 8.5 -lj_epsilon 0.01032 -lj_sigma 3.405 - -cal_force 1 -cal_stress 1 - -#Parameters (MD) -md_nstep 5 -md_type nvt -md_dt 1 -md_tfirst 300 - -init_vel 1 - -#Parameters (thermostat) -md_thermostat berendsen -md_nraise 40 diff --git a/tests/04_LJ_DP/03_LJ_FIRE/INPUT b/tests/04_LJ_DP/03_LJ_FIRE/INPUT deleted file mode 100644 index fa932e9c52..0000000000 --- a/tests/04_LJ_DP/03_LJ_FIRE/INPUT +++ /dev/null @@ -1,25 +0,0 @@ -INPUT_PARAMETERS -#Parameters (General) -suffix autotest - -calculation md -pseudo_dir ../../PP_ORB - -#Parameters (esolver) -esolver_type lj -lj_rcut 8.5 -lj_epsilon 0.01032 -lj_sigma 3.405 - -cal_force 1 -cal_stress 1 -force_thr_ev 1e-3 -stress_thr 1e-6 - -#Parameters (MD) -md_nstep 5 -md_type fire -md_dt 1 -md_tfirst 300 - -init_vel 1 diff --git a/tests/04_LJ_DP/04_LJ_Langevin/INPUT b/tests/04_LJ_DP/04_LJ_Langevin/INPUT deleted file mode 100644 index c585cacca6..0000000000 --- a/tests/04_LJ_DP/04_LJ_Langevin/INPUT +++ /dev/null @@ -1,26 +0,0 @@ -INPUT_PARAMETERS -#Parameters (General) -suffix autotest - -calculation md -pseudo_dir ../../PP_ORB - -#Parameters (esolver) -esolver_type lj -lj_rcut 8.5 -lj_epsilon 0.01032 -lj_sigma 3.405 - -cal_force 1 -cal_stress 1 - -#Parameters (MD) -md_nstep 5 -md_type langevin -md_dt 1 -md_tfirst 300 - -init_vel 1 - -#Parameters (Langevin) -md_damp 10 diff --git a/tests/04_LJ_DP/05_LJ_MSST/INPUT b/tests/04_LJ_DP/05_LJ_MSST/INPUT deleted file mode 100644 index 233aac73f8..0000000000 --- a/tests/04_LJ_DP/05_LJ_MSST/INPUT +++ /dev/null @@ -1,28 +0,0 @@ -INPUT_PARAMETERS -#Parameters (General) -suffix autotest - -calculation md -pseudo_dir ../../PP_ORB - -#Parameters (esolver) -esolver_type lj -lj_rcut 8.5 -lj_epsilon 0.01032 -lj_sigma 3.405 - -cal_force 1 -cal_stress 1 - -#Parameters (MD) -md_nstep 5 -md_type msst -md_dt 1 -md_tfirst 300 - -init_vel 1 - -#Parameters (MSST) -msst_qmass 200 -msst_vel 0.028 -msst_vis 0.3 diff --git a/tests/04_LJ_DP/06_LJ_NHC_NVT/INPUT b/tests/04_LJ_DP/06_LJ_NHC_NVT/INPUT deleted file mode 100644 index 435d4d71f5..0000000000 --- a/tests/04_LJ_DP/06_LJ_NHC_NVT/INPUT +++ /dev/null @@ -1,26 +0,0 @@ -INPUT_PARAMETERS -#Parameters (General) -suffix autotest - -calculation md -pseudo_dir ../../PP_ORB - -#Parameters (esolver) -esolver_type lj -lj_rcut 8.5 -lj_epsilon 0.01032 -lj_sigma 3.405 - -cal_force 1 -cal_stress 1 - -#Parameters (MD) -md_nstep 5 -md_type nvt -md_dt 1 -md_tfirst 300 -md_tlast 300 -md_tchain 3 -md_tfreq 0.01 - -init_vel 1 diff --git a/tests/04_LJ_DP/07_LJ_NPT_aniso_none/INPUT b/tests/04_LJ_DP/07_LJ_NPT_aniso_none/INPUT deleted file mode 100644 index 427d6c30ca..0000000000 --- a/tests/04_LJ_DP/07_LJ_NPT_aniso_none/INPUT +++ /dev/null @@ -1,34 +0,0 @@ -INPUT_PARAMETERS -#Parameters (General) -suffix autotest - -calculation md -pseudo_dir ../../PP_ORB - -#Parameters (esolver) -esolver_type lj -lj_rcut 8.5 -lj_epsilon 0.01032 -lj_sigma 3.405 - -cal_force 1 -cal_stress 1 - -#Parameters (MD) -md_nstep 5 -md_type npt -md_dt 1 -md_tchain 3 -md_tfirst 300 -md_tlast 300 -md_tfreq 0.01 - -init_vel 1 - -#Parameters (NPT) -md_pmode aniso -md_pcouple none -md_pchain 3 -md_pfirst 10 -md_plast 10 -md_pfreq 0.001 diff --git a/tests/04_LJ_DP/08_LJ_NPT_aniso_xy/INPUT b/tests/04_LJ_DP/08_LJ_NPT_aniso_xy/INPUT deleted file mode 100644 index b5e4b05980..0000000000 --- a/tests/04_LJ_DP/08_LJ_NPT_aniso_xy/INPUT +++ /dev/null @@ -1,34 +0,0 @@ -INPUT_PARAMETERS -#Parameters (General) -suffix autotest - -calculation md -pseudo_dir ../../PP_ORB - -#Parameters (esolver) -esolver_type lj -lj_rcut 8.5 -lj_epsilon 0.01032 -lj_sigma 3.405 - -cal_force 1 -cal_stress 1 - -#Parameters (MD) -md_nstep 5 -md_type npt -md_dt 1 -md_tchain 3 -md_tfirst 300 -md_tlast 300 -md_tfreq 0.01 - -init_vel 1 - -#Parameters (NPT) -md_pmode aniso -md_pcouple xy -md_pchain 3 -md_pfirst 10 -md_plast 10 -md_pfreq 0.001 diff --git a/tests/04_LJ_DP/09_LJ_NPT_aniso_xz/INPUT b/tests/04_LJ_DP/09_LJ_NPT_aniso_xz/INPUT deleted file mode 100644 index 90105325a5..0000000000 --- a/tests/04_LJ_DP/09_LJ_NPT_aniso_xz/INPUT +++ /dev/null @@ -1,34 +0,0 @@ -INPUT_PARAMETERS -#Parameters (General) -suffix autotest - -calculation md -pseudo_dir ../../PP_ORB - -#Parameters (esolver) -esolver_type lj -lj_rcut 8.5 -lj_epsilon 0.01032 -lj_sigma 3.405 - -cal_force 1 -cal_stress 1 - -#Parameters (MD) -md_nstep 5 -md_type npt -md_dt 1 -md_tchain 3 -md_tfirst 300 -md_tlast 300 -md_tfreq 0.01 - -init_vel 1 - -#Parameters (NPT) -md_pmode aniso -md_pcouple xz -md_pchain 3 -md_pfirst 10 -md_plast 10 -md_pfreq 0.001 diff --git a/tests/04_LJ_DP/10_LJ_NPT_aniso_yz/INPUT b/tests/04_LJ_DP/10_LJ_NPT_aniso_yz/INPUT deleted file mode 100644 index 64f323152c..0000000000 --- a/tests/04_LJ_DP/10_LJ_NPT_aniso_yz/INPUT +++ /dev/null @@ -1,34 +0,0 @@ -INPUT_PARAMETERS -#Parameters (General) -suffix autotest - -calculation md -pseudo_dir ../../PP_ORB - -#Parameters (esolver) -esolver_type lj -lj_rcut 8.5 -lj_epsilon 0.01032 -lj_sigma 3.405 - -cal_force 1 -cal_stress 1 - -#Parameters (MD) -md_nstep 5 -md_type npt -md_dt 1 -md_tchain 3 -md_tfirst 300 -md_tlast 300 -md_tfreq 0.01 - -init_vel 1 - -#Parameters (NPT) -md_pmode aniso -md_pcouple yz -md_pchain 3 -md_pfirst 10 -md_plast 10 -md_pfreq 0.001 diff --git a/tests/04_LJ_DP/11_LJ_NPT_iso/INPUT b/tests/04_LJ_DP/11_LJ_NPT_iso/INPUT deleted file mode 100644 index ec888fcd77..0000000000 --- a/tests/04_LJ_DP/11_LJ_NPT_iso/INPUT +++ /dev/null @@ -1,34 +0,0 @@ -INPUT_PARAMETERS -#Parameters (General) -suffix autotest - -calculation md -pseudo_dir ../../PP_ORB - -#Parameters (esolver) -esolver_type lj -lj_rcut 8.5 -lj_epsilon 0.01032 -lj_sigma 3.405 - -cal_force 1 -cal_stress 1 - -#Parameters (MD) -md_nstep 5 -md_type npt -md_dt 1 -md_tchain 3 -md_tfirst 300 -md_tlast 300 -md_tfreq 0.01 - -init_vel 1 - -#Parameters (NPT) -md_pmode iso -md_pcouple xyz -md_pchain 3 -md_pfirst 10 -md_plast 10 -md_pfreq 0.001 diff --git a/tests/04_LJ_DP/12_LJ_NPT_tri/INPUT b/tests/04_LJ_DP/12_LJ_NPT_tri/INPUT deleted file mode 100644 index 33c05e6132..0000000000 --- a/tests/04_LJ_DP/12_LJ_NPT_tri/INPUT +++ /dev/null @@ -1,34 +0,0 @@ -INPUT_PARAMETERS -#Parameters (General) -suffix autotest - -calculation md -pseudo_dir ../../PP_ORB - -#Parameters (esolver) -esolver_type lj -lj_rcut 8.5 -lj_epsilon 0.01032 -lj_sigma 3.405 - -cal_force 1 -cal_stress 1 - -#Parameters (MD) -md_nstep 5 -md_type npt -md_dt 1 -md_tchain 3 -md_tfirst 300 -md_tlast 300 -md_tfreq 0.01 - -init_vel 1 - -#Parameters (NPT) -md_pmode tri -md_pcouple none -md_pchain 3 -md_pfirst 10 -md_plast 10 -md_pfreq 0.001 diff --git a/tests/04_LJ_DP/13_LJ_NVE/INPUT b/tests/04_LJ_DP/13_LJ_NVE/INPUT deleted file mode 100644 index 9673def0f2..0000000000 --- a/tests/04_LJ_DP/13_LJ_NVE/INPUT +++ /dev/null @@ -1,26 +0,0 @@ -INPUT_PARAMETERS -#Parameters (General) -suffix autotest - -calculation md -pseudo_dir ../../PP_ORB - -#Parameters (esolver) -esolver_type lj -lj_rcut 8.5 -lj_epsilon 0.01032 -lj_sigma 3.405 - -cal_force 1 -cal_stress 1 - -#Parameters (MD) -md_nstep 160 -md_type nve -md_dt 1 -md_tfirst 300 - -init_vel 1 - -md_restart 1 -read_file_dir . diff --git a/tests/04_LJ_DP/14_LJ_rescale_v/INPUT b/tests/04_LJ_DP/14_LJ_rescale_v/INPUT deleted file mode 100644 index 41bcb07bcd..0000000000 --- a/tests/04_LJ_DP/14_LJ_rescale_v/INPUT +++ /dev/null @@ -1,27 +0,0 @@ -INPUT_PARAMETERS -#Parameters (General) -suffix autotest - -calculation md -pseudo_dir ../../PP_ORB - -#Parameters (esolver) -esolver_type lj -lj_rcut 8.5 -lj_epsilon 0.01032 -lj_sigma 3.405 - -cal_force 1 -cal_stress 1 - -#Parameters (MD) -md_nstep 14 -md_type nvt -md_dt 1 -md_tfirst 300 -md_restart 1 -init_vel 1 - -#Parameters (thermostat) -md_thermostat rescale_v -md_nraise 2 diff --git a/tests/04_LJ_DP/15_LJ_rescaling/INPUT b/tests/04_LJ_DP/15_LJ_rescaling/INPUT deleted file mode 100644 index 714eaf3434..0000000000 --- a/tests/04_LJ_DP/15_LJ_rescaling/INPUT +++ /dev/null @@ -1,27 +0,0 @@ -INPUT_PARAMETERS -#Parameters (General) -suffix autotest - -calculation md -pseudo_dir ../../PP_ORB - -#Parameters (esolver) -esolver_type lj -lj_rcut 8.5 -lj_epsilon 0.01032 -lj_sigma 3.405 - -cal_force 1 -cal_stress 1 - -#Parameters (MD) -md_nstep 5 -md_type nvt -md_dt 1 -md_tfirst 300 - -init_vel 1 - -#Parameters (thermostat) -md_thermostat rescaling -md_tolerance 0 diff --git a/tests/04_LJ_DP/16_LJ_RE_rule1/INPUT b/tests/04_LJ_DP/16_LJ_RE_rule1/INPUT deleted file mode 100644 index 8bb25f691f..0000000000 --- a/tests/04_LJ_DP/16_LJ_RE_rule1/INPUT +++ /dev/null @@ -1,19 +0,0 @@ -INPUT_PARAMETERS -#Parameters (General) -suffix autotest -calculation relax -pseudo_dir ../../PP_ORB - -#Parameters (esolver) -esolver_type lj -lj_rule 1 -lj_rcut 8.5 8 8.4 -lj_epsilon 0.01 0.02 -lj_sigma 3.4 3.5 - -#Parameters (relax) -relax_new 1 -relax_nmax 5 -force_thr_ev 0.01 -cal_force 1 -cal_stress 1 diff --git a/tests/04_LJ_DP/17_LJ_CR_multi_ele/INPUT b/tests/04_LJ_DP/17_LJ_CR_multi_ele/INPUT deleted file mode 100644 index c2e180ed63..0000000000 --- a/tests/04_LJ_DP/17_LJ_CR_multi_ele/INPUT +++ /dev/null @@ -1,19 +0,0 @@ -INPUT_PARAMETERS -#Parameters (General) -suffix autotest -calculation cell-relax -pseudo_dir ../../PP_ORB - -#Parameters (esolver) -esolver_type lj -lj_rcut 8.5 8 8.4 -lj_epsilon 0.01 0.02 0.03 -lj_sigma 3.4 3.5 3.6 - -#Parameters (relax) -relax_new 1 -relax_nmax 5 -force_thr_ev 0.01 -stress_thr 0.1 -cal_force 1 -cal_stress 1 diff --git a/tests/04_LJ_DP/18_LJ_single_rule2/INPUT b/tests/04_LJ_DP/18_LJ_single_rule2/INPUT deleted file mode 100644 index b84a77ac21..0000000000 --- a/tests/04_LJ_DP/18_LJ_single_rule2/INPUT +++ /dev/null @@ -1,15 +0,0 @@ -INPUT_PARAMETERS -#Parameters (General) -suffix autotest -calculation scf - -#Parameters (esolver) -esolver_type lj -lj_eshift true -lj_rule 2 -lj_rcut 8.5 -lj_epsilon 0.01 0.02 -lj_sigma 3.4 3.5 - -cal_force 1 -cal_stress 1 diff --git a/tests/04_LJ_DP/19_LJ_RE_stop/INPUT b/tests/04_LJ_DP/19_LJ_RE_stop/INPUT deleted file mode 100644 index 8bb25f691f..0000000000 --- a/tests/04_LJ_DP/19_LJ_RE_stop/INPUT +++ /dev/null @@ -1,19 +0,0 @@ -INPUT_PARAMETERS -#Parameters (General) -suffix autotest -calculation relax -pseudo_dir ../../PP_ORB - -#Parameters (esolver) -esolver_type lj -lj_rule 1 -lj_rcut 8.5 8 8.4 -lj_epsilon 0.01 0.02 -lj_sigma 3.4 3.5 - -#Parameters (relax) -relax_new 1 -relax_nmax 5 -force_thr_ev 0.01 -cal_force 1 -cal_stress 1 diff --git a/tests/04_LJ_DP/20_LJ_dry_run/INPUT b/tests/04_LJ_DP/20_LJ_dry_run/INPUT deleted file mode 100644 index d5d5105486..0000000000 --- a/tests/04_LJ_DP/20_LJ_dry_run/INPUT +++ /dev/null @@ -1,15 +0,0 @@ -INPUT_PARAMETERS -#Parameters (General) -suffix autotest -calculation relax - -#Parameters (esolver) -esolver_type lj -lj_rule 1 -lj_rcut 8.5 8 8.4 -lj_epsilon 0.01 0.02 -lj_sigma 3.4 3.5 - -#Parameters (relax) -relax_new 1 -relax_nmax 0 diff --git a/tests/04_LJ_DP/50_DP_Al/INPUT b/tests/04_LJ_DP/50_DP_Al/INPUT deleted file mode 100644 index 5a0498ea07..0000000000 --- a/tests/04_LJ_DP/50_DP_Al/INPUT +++ /dev/null @@ -1,24 +0,0 @@ -INPUT_PARAMETERS -#Parameters (General) -suffix autotest -calculation md -pseudo_dir ../../PP_ORB - -esolver_type dp -pot_file ../../PP_ORB/Al-SCAN.pb - -cal_force 1 -cal_stress 1 - -md_nstep 3 -md_type msst -md_dt 1 -md_tfirst 200 -md_dumpfreq 1 -md_restartfreq 1 - -msst_qmass 200 -msst_vel 0.028 -msst_vis 0.3 - -init_vel 1 diff --git a/tests/04_LJ_DP/CMakeLists.txt b/tests/04_LJ_DP/CMakeLists.txt deleted file mode 100644 index a047d2b969..0000000000 --- a/tests/04_LJ_DP/CMakeLists.txt +++ /dev/null @@ -1,16 +0,0 @@ -enable_testing() - -find_program(BASH bash) -if(ENABLE_ASAN) - add_test( - NAME 04_LJ_DP_test_with_asan - COMMAND ${BASH} ../integrate/Autotest.sh -a ${ABACUS_BIN_PATH} -n 2 -s true - WORKING_DIRECTORY ${ABACUS_TEST_DIR}/04_LJ_DP - ) -else() - add_test( - NAME 04_LJ_DP - COMMAND ${BASH} ../integrate/Autotest.sh -a ${ABACUS_BIN_PATH} -n 4 - WORKING_DIRECTORY ${ABACUS_TEST_DIR}/04_LJ_DP - ) -endif() diff --git a/tests/05_rtTDDFT/01_NO_KP_ocp_TDDFT/INPUT b/tests/05_rtTDDFT/01_NO_KP_ocp_TDDFT/INPUT index 673a3b581c..98b4a5fabc 100644 --- a/tests/05_rtTDDFT/01_NO_KP_ocp_TDDFT/INPUT +++ b/tests/05_rtTDDFT/01_NO_KP_ocp_TDDFT/INPUT @@ -1,35 +1,36 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (General) -suffix autotest -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB +suffix autotest +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB -nbands 5 -calculation md -esolver_type tddft +esolver_type tddft +calculation md +basis_type lcao +gamma_only 0 +ecutwfc 20 +nbands 5 -#Parameter (Accuracy) -ecutwfc 20 -scf_nmax 50 +#Parameter (Electronic Structure) +scf_nmax 50 -ks_solver scalapack_gvx -basis_type lcao -gamma_only 0 -md_nstep 2 -estep_per_md 1 +ks_solver scalapack_gvx +md_nstep 3 +estep_per_md 1 -mixing_type broyden -mixing_beta 0.7 -mixing_gg0 0.0 -scf_thr 1.0e-6 +mixing_type broyden +mixing_beta 0.7 +mixing_gg0 0.0 +scf_thr 1.0e-6 -cal_stress 1 -stress_thr 1e-6 -cal_force 1 -force_thr_ev 1.0e-3 +cal_stress 1 +stress_thr 1e-6 +cal_force 1 +force_thr_ev 1.0e-3 -md_type nve -md_dt 0.05 -init_vel 1 -ocp 1 -ocp_set 1*1 1*1 3*0 +#Paramter (MD) +md_type nve +md_dt 0.05 +init_vel 1 +ocp 1 +ocp_set 1*1 1*1 3*0 diff --git a/tests/05_rtTDDFT/01_NO_KP_ocp_TDDFT/README b/tests/05_rtTDDFT/01_NO_KP_ocp_TDDFT/README new file mode 100644 index 0000000000..e199572a48 --- /dev/null +++ b/tests/05_rtTDDFT/01_NO_KP_ocp_TDDFT/README @@ -0,0 +1 @@ +set different occupations in rt-TDDFT (LCAO) diff --git a/tests/05_rtTDDFT/02_NO_CH_OW_TDDFT/INPUT b/tests/05_rtTDDFT/02_NO_CH_OW_TDDFT/INPUT index 63e34a60ee..0837320368 100644 --- a/tests/05_rtTDDFT/02_NO_CH_OW_TDDFT/INPUT +++ b/tests/05_rtTDDFT/02_NO_CH_OW_TDDFT/INPUT @@ -1,38 +1,42 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (General) -suffix autotest -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB - -nbands 10 -calculation md -esolver_type tddft - -#Parameter (Accuracy) -ecutwfc 5 -scf_nmax 50 - -smearing_method gaussian -smearing_sigma 0.02 - -ks_solver scalapack_gvx -basis_type lcao -gamma_only 0 -md_nstep 2 -estep_per_md 1 - -mixing_type broyden -mixing_beta 0.7 -mixing_gg0 0.0 -scf_thr 1.0e-6 - -cal_stress 1 -stress_thr 1e-6 -cal_force 1 -force_thr_ev 1e-3 - -md_type nve -md_dt 0.01 -init_vel 1 -out_wfc_lcao 1 -out_app_flag 0 +suffix autotest +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB + +nbands 10 +calculation md +esolver_type tddft +basis_type lcao +gamma_only 0 +ecutwfc 5 + +#Parameter (Electronic Structure) +scf_nmax 50 + +smearing_method gaussian +smearing_sigma 0.02 + +ks_solver scalapack_gvx + +mixing_type broyden +mixing_beta 0.7 +mixing_gg0 0.0 +scf_thr 1.0e-6 + +cal_stress 1 +stress_thr 1e-6 +cal_force 1 +force_thr_ev 1e-3 + +#Paramters (Output) +out_dipole 1 +out_wfc_lcao 1 +out_app_flag 0 + +#Parameters (MD) +md_nstep 3 +estep_per_md 1 +md_type nve +md_dt 0.01 +init_vel 1 diff --git a/tests/05_rtTDDFT/02_NO_CH_OW_TDDFT/README b/tests/05_rtTDDFT/02_NO_CH_OW_TDDFT/README new file mode 100644 index 0000000000..3e72b0c4a9 --- /dev/null +++ b/tests/05_rtTDDFT/02_NO_CH_OW_TDDFT/README @@ -0,0 +1 @@ +output wave functions, dipole from rt-TDDFT (LCAO) diff --git a/tests/05_rtTDDFT/02_NO_CH_OW_TDDFT/wfs1k1g3_nao_mod.txt.ref b/tests/05_rtTDDFT/02_NO_CH_OW_TDDFT/wfk1g3_nao_mod.txt.ref similarity index 100% rename from tests/05_rtTDDFT/02_NO_CH_OW_TDDFT/wfs1k1g3_nao_mod.txt.ref rename to tests/05_rtTDDFT/02_NO_CH_OW_TDDFT/wfk1g3_nao_mod.txt.ref diff --git a/tests/05_rtTDDFT/03_NO_CO_TDDFT/INPUT b/tests/05_rtTDDFT/03_NO_CO_TDDFT/INPUT index 22cbe3b7dc..9884b99af8 100644 --- a/tests/05_rtTDDFT/03_NO_CO_TDDFT/INPUT +++ b/tests/05_rtTDDFT/03_NO_CO_TDDFT/INPUT @@ -1,35 +1,36 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (General) -suffix autotest -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB +suffix autotest +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB -nbands 10 -calculation md -esolver_type tddft +calculation md +esolver_type tddft +basis_type lcao +gamma_only 0 +nbands 10 +ecutwfc 20 -#Parameter (Accuracy) -ecutwfc 20 -scf_nmax 50 +#Parameter (Electronic Structure) +scf_nmax 50 -ks_solver scalapack_gvx -basis_type lcao -gamma_only 0 -md_nstep 2 -estep_per_md 1 +ks_solver scalapack_gvx -mixing_type broyden -mixing_beta 0.7 -mixing_gg0 0.0 -scf_thr 1.0e-6 +mixing_type broyden +mixing_beta 0.7 +mixing_gg0 0.0 +scf_thr 1.0e-6 -cal_stress 1 -stress_thr 1e-6 -cal_force 1 -force_thr_ev 1.0e-3 +cal_stress 1 +stress_thr 1e-6 +cal_force 1 +force_thr_ev 1.0e-3 -md_type nve -md_dt 0.05 -init_vel 1 -ocp 1 -ocp_set 4*2 2*1 4*0 +#Paramter (MD) +md_type nve +md_nstep 3 +estep_per_md 1 +md_dt 0.05 +init_vel 1 +ocp 1 +ocp_set 4*2 2*1 4*0 diff --git a/tests/05_rtTDDFT/03_NO_CO_TDDFT/README b/tests/05_rtTDDFT/03_NO_CO_TDDFT/README new file mode 100644 index 0000000000..fa6de273a2 --- /dev/null +++ b/tests/05_rtTDDFT/03_NO_CO_TDDFT/README @@ -0,0 +1 @@ +rt-TDDFT for CO (two elements) diff --git a/tests/05_rtTDDFT/04_NO_CO_ocp_TDDFT/INPUT b/tests/05_rtTDDFT/04_NO_CO_ocp_TDDFT/INPUT index e5a908356c..4c637ea472 100644 --- a/tests/05_rtTDDFT/04_NO_CO_ocp_TDDFT/INPUT +++ b/tests/05_rtTDDFT/04_NO_CO_ocp_TDDFT/INPUT @@ -1,35 +1,36 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (General) -suffix autotest -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB +suffix autotest +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB -nbands 10 -calculation md -esolver_type tddft +nbands 10 +calculation md +esolver_type tddft +basis_type lcao +gamma_only 0 +ecutwfc 20 -#Parameter (Accuracy) -ecutwfc 20 -scf_nmax 50 +#Parameter (Electronic Structure) +scf_nmax 50 -ks_solver scalapack_gvx -basis_type lcao -gamma_only 0 -md_nstep 2 -estep_per_md 1 +ks_solver scalapack_gvx -mixing_type broyden -mixing_beta 0.7 -mixing_gg0 0.0 -scf_thr 1.0e-6 +mixing_type broyden +mixing_beta 0.7 +mixing_gg0 0.0 +scf_thr 1.0e-6 -cal_stress 1 -stress_thr 1e-6 -cal_force 1 -force_thr_ev 1.0e-3 +cal_stress 1 +stress_thr 1e-6 +cal_force 1 +force_thr_ev 1.0e-3 -md_type nve -md_dt 0.05 -init_vel 1 -ocp 1 -ocp_set 4*2 1*1 1*0 1*1 3*0 +#Parameter (MD) +md_type nve +md_nstep 3 +estep_per_md 1 +md_dt 0.05 +init_vel 1 +ocp 1 +ocp_set 4*2 1*1 1*0 1*1 3*0 diff --git a/tests/05_rtTDDFT/05_NO_cur_TDDFT/INPUT b/tests/05_rtTDDFT/05_NO_cur_TDDFT/INPUT index cae0409438..3716b8d081 100644 --- a/tests/05_rtTDDFT/05_NO_cur_TDDFT/INPUT +++ b/tests/05_rtTDDFT/05_NO_cur_TDDFT/INPUT @@ -1,50 +1,52 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (General) -suffix autotest -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB -nbands 5 -calculation md -esolver_type tddft - -#Parameter (Accuracy) -ecutwfc 20 -scf_nmax 50 - -ks_solver scalapack_gvx -basis_type lcao -gamma_only 0 -md_nstep 3 -estep_per_md 1 - -mixing_type broyden -mixing_beta 0.7 -mixing_gg0 0.0 -scf_thr 1.0e-6 - -cal_stress 1 -stress_thr 1e-6 -cal_force 1 -force_thr_ev 1.0e-3 - -md_type nve -md_dt 0.05 -init_vel 1 - -td_vext 1 -td_vext_dire 1 -td_stype 0 -td_ttype 0 -td_tstart 1 -td_tend 2 - -# Gauss external field -td_gauss_freq 2.44 -td_gauss_phase 0.0 -td_gauss_sigma 0.5 -td_gauss_t0 0 -td_gauss_amp 0.1 - -# print out information -out_current 1 -out_current_k 1 +suffix autotest +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB +nbands 5 +calculation md +esolver_type tddft +basis_type lcao +gamma_only 0 + +#Parameter (Electronic Structure) +ecutwfc 20 +scf_nmax 50 + +ks_solver scalapack_gvx + +mixing_type broyden +mixing_beta 0.7 +mixing_gg0 0.0 +scf_thr 1.0e-6 + +cal_stress 1 +stress_thr 1e-6 +cal_force 1 +force_thr_ev 1.0e-3 + +#Parameter (MD) +md_nstep 4 +estep_per_md 1 +md_type nve +md_dt 0.05 +init_vel 1 + +#Parameter (External Field) +td_vext 1 +td_vext_dire 1 +td_stype 0 +td_ttype 0 +td_tstart 1 +td_tend 2 + +#Parameter (Gauss external field) +td_gauss_freq 2.44 +td_gauss_phase 0.0 +td_gauss_sigma 0.5 +td_gauss_t0 0 +td_gauss_amp 0.1 + +#Parameter (print out information) +out_current 1 +out_current_k 1 diff --git a/tests/05_rtTDDFT/05_NO_cur_TDDFT/README b/tests/05_rtTDDFT/05_NO_cur_TDDFT/README index 26c2f588bb..203dc22d46 100644 --- a/tests/05_rtTDDFT/05_NO_cur_TDDFT/README +++ b/tests/05_rtTDDFT/05_NO_cur_TDDFT/README @@ -1 +1 @@ -test TDDFT length-gauge current output for non-periodic system +Test rt-TDDFT length gauge current output for non-periodic system (output currents) diff --git a/tests/05_rtTDDFT/05_NO_cur_TDDFT/current_tot.txt.ref b/tests/05_rtTDDFT/05_NO_cur_TDDFT/current_tot.txt.ref new file mode 100644 index 0000000000..82c0d4abd5 --- /dev/null +++ b/tests/05_rtTDDFT/05_NO_cur_TDDFT/current_tot.txt.ref @@ -0,0 +1,4 @@ +1 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2 1.3253329345180294e-07 -1.1309759467631443e-08 -1.8100967210899005e-08 +3 -1.8712729254912170e-07 -1.9255546268413473e-08 -3.0821009248506392e-08 +4 1.6157844599855616e-08 1.2274265605918762e-08 1.9637494049601714e-08 diff --git a/tests/05_rtTDDFT/05_NO_cur_TDDFT/refcurrent_total.dat b/tests/05_rtTDDFT/05_NO_cur_TDDFT/refcurrent_total.dat deleted file mode 100644 index 56a9f6e13b..0000000000 --- a/tests/05_rtTDDFT/05_NO_cur_TDDFT/refcurrent_total.dat +++ /dev/null @@ -1,4 +0,0 @@ -0 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1 1.3253329345174151e-07 -1.1309759467952081e-08 -1.8100967211240555e-08 -2 -1.8712729254901428e-07 -1.9255546268328018e-08 -3.0821009248708681e-08 -3 1.6157844599780660e-08 1.2274265606089292e-08 1.9637494050295524e-08 diff --git a/tests/05_rtTDDFT/05_NO_cur_TDDFT/result.ref b/tests/05_rtTDDFT/05_NO_cur_TDDFT/result.ref index d3cd1841df..6f2c4d9b7b 100644 --- a/tests/05_rtTDDFT/05_NO_cur_TDDFT/result.ref +++ b/tests/05_rtTDDFT/05_NO_cur_TDDFT/result.ref @@ -1,6 +1,6 @@ -etotref -30.91255300422832 +etotref -30.91255300422819 etotperatomref -15.4562765021 totalforceref 0.479532 totalstressref 0.981046 CompareCurrent_pass 0 -totaltimeref 1.72 +totaltimeref 1.73 diff --git a/tests/05_rtTDDFT/06_NO_dir_TDDFT/INPUT b/tests/05_rtTDDFT/06_NO_dir_TDDFT/INPUT index aefea252be..4501e1e8ec 100644 --- a/tests/05_rtTDDFT/06_NO_dir_TDDFT/INPUT +++ b/tests/05_rtTDDFT/06_NO_dir_TDDFT/INPUT @@ -1,47 +1,49 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (General) -suffix autotest -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB +suffix autotest +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB -nbands 5 -calculation md -esolver_type tddft +calculation md +esolver_type tddft +basis_type lcao +gamma_only 0 +nbands 5 -#Parameter (Accuracy) -ecutwfc 20 -scf_nmax 50 +#Parameter (Electronic Structure) +ecutwfc 20 +scf_nmax 50 -ks_solver scalapack_gvx -basis_type lcao -gamma_only 0 -md_nstep 2 -estep_per_md 1 +ks_solver scalapack_gvx -mixing_type broyden -mixing_beta 0.7 -mixing_gg0 0.0 -scf_thr 1.0e-6 +mixing_type broyden +mixing_beta 0.7 +mixing_gg0 0.0 +scf_thr 1.0e-6 -cal_stress 1 -stress_thr 1e-6 -cal_force 1 -force_thr_ev 1.0e-3 +cal_stress 1 +stress_thr 1e-6 +cal_force 1 +force_thr_ev 1.0e-3 -md_type nve -md_dt 0.05 -init_vel 1 +#Parameter (MD) +md_type nve +md_nstep 3 +estep_per_md 1 +md_dt 0.05 +init_vel 1 -td_vext 1 -td_vext_dire 2 -td_stype 0 -td_ttype 0 -td_tstart 1 -td_tend 2 -td_lcut1 0.05 -td_lcut2 0.95 -td_gauss_freq 22.13 -td_gauss_phase 0.0 -td_gauss_sigma 30.0 -td_gauss_t0 0.0 -td_gauss_amp 0.25 +#Parameter (External Field) +td_vext 1 +td_vext_dire 2 +td_stype 0 +td_ttype 0 +td_tstart 1 +td_tend 2 +td_lcut1 0.05 +td_lcut2 0.95 +td_gauss_freq 22.13 +td_gauss_phase 0.0 +td_gauss_sigma 30.0 +td_gauss_t0 0.0 +td_gauss_amp 0.25 diff --git a/tests/05_rtTDDFT/07_NO_EDM_TDDFT/INPUT b/tests/05_rtTDDFT/07_NO_EDM_TDDFT/INPUT index 2ef3cb7c96..02e726300f 100644 --- a/tests/05_rtTDDFT/07_NO_EDM_TDDFT/INPUT +++ b/tests/05_rtTDDFT/07_NO_EDM_TDDFT/INPUT @@ -1,36 +1,37 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (General) -suffix autotest -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB +suffix autotest +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB -nbands 5 -calculation md -esolver_type tddft +nbands 5 +calculation md +esolver_type tddft +basis_type lcao +gamma_only 0 #Parameter (Accuracy) -ecutwfc 20 -scf_nmax 50 +ecutwfc 20 +scf_nmax 50 -ks_solver scalapack_gvx -basis_type lcao -gamma_only 0 -md_nstep 2 -estep_per_md 1 +ks_solver scalapack_gvx -mixing_type broyden -mixing_beta 0.7 -mixing_gg0 0.0 -scf_thr 1.0e-6 +mixing_type broyden +mixing_beta 0.7 +mixing_gg0 0.0 +scf_thr 1.0e-6 -cal_stress 1 -stress_thr 1e-6 -cal_force 1 -force_thr_ev 1.0e-3 +cal_stress 1 +stress_thr 1e-6 +cal_force 1 +force_thr_ev 1.0e-3 -md_type nve -md_dt 0.05 -init_vel 1 -ocp 1 -ocp_set 1*0.5 1*0.5 3*0 1*0.5 1*0.5 3*0 -td_edm 1 +#Parameter (MD) +md_type nve +md_nstep 3 +estep_per_md 1 +md_dt 0.05 +init_vel 1 +ocp 1 +ocp_set 1*0.5 1*0.5 3*0 1*0.5 1*0.5 3*0 +td_edm 1 diff --git a/tests/05_rtTDDFT/08_NO_ETRS_TDDFT/INPUT b/tests/05_rtTDDFT/08_NO_ETRS_TDDFT/INPUT index d0144baf53..2e6e85d7e3 100644 --- a/tests/05_rtTDDFT/08_NO_ETRS_TDDFT/INPUT +++ b/tests/05_rtTDDFT/08_NO_ETRS_TDDFT/INPUT @@ -1,40 +1,40 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS # rt-TDDFT key parameters -calculation md -esolver_type tddft -gamma_only 0 # multiple k points -md_type nve -md_dt 0.05 # MD time step -md_nstep 2 # number of MD steps -estep_per_md 1 -init_vel 1 # initial velocity +calculation md +esolver_type tddft +gamma_only 0 # multiple k points +md_type nve +md_dt 0.05 # MD time step +md_nstep 3 # number of MD steps +estep_per_md 1 +init_vel 1 # initial velocity # occupations of bands -nbands 5 # number of bands -ocp 1 # set band occupations -ocp_set 1*1 1*1 3*0 +nbands 5 # number of bands +ocp 1 # set band occupations +ocp_set 1*1 1*1 3*0 # propagator and ecut -td_propagator 2 # ETRS algorithm -ecutwfc 20 -scf_nmax 50 -ks_solver scalapack_gvx -basis_type lcao +td_propagator 2 # ETRS algorithm +ecutwfc 20 +scf_nmax 50 +ks_solver scalapack_gvx +basis_type lcao # charge mixing -mixing_type broyden -mixing_beta 0.7 -mixing_gg0 0.0 -scf_thr 1.0e-6 +mixing_type broyden +mixing_beta 0.7 +mixing_gg0 0.0 +scf_thr 1.0e-6 # force and stress -cal_stress 1 -stress_thr 1e-6 -cal_force 1 -force_thr_ev 1e-3 +cal_stress 1 +stress_thr 1e-6 +cal_force 1 +force_thr_ev 1e-3 # output directory and pp, orbs -suffix autotest -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB +suffix autotest +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB diff --git a/tests/05_rtTDDFT/09_NO_HEAV_TDDFT/INPUT b/tests/05_rtTDDFT/09_NO_HEAV_TDDFT/INPUT index 51499b8a4e..8102c2f865 100644 --- a/tests/05_rtTDDFT/09_NO_HEAV_TDDFT/INPUT +++ b/tests/05_rtTDDFT/09_NO_HEAV_TDDFT/INPUT @@ -1,44 +1,45 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (General) -suffix autotest -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB +suffix autotest +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB -nbands 5 -calculation md -esolver_type tddft +nbands 5 +calculation md +esolver_type tddft +basis_type lcao +gamma_only 0 +ecutwfc 20 -#Parameter (Accuracy) -ecutwfc 20 -scf_nmax 50 +#Parameter (Electronic Structure) +scf_nmax 50 -ks_solver scalapack_gvx -basis_type lcao -gamma_only 0 -md_nstep 2 -estep_per_md 1 +ks_solver scalapack_gvx -mixing_type broyden -mixing_beta 0.7 -mixing_gg0 0.0 -scf_thr 1.0e-6 +mixing_type broyden +mixing_beta 0.7 +mixing_gg0 0.0 +scf_thr 1.0e-6 -cal_stress 1 -stress_thr 1e-6 -cal_force 1 -force_thr_ev 1.0e-3 +cal_stress 1 +stress_thr 1e-6 +cal_force 1 +force_thr_ev 1.0e-3 -md_type nve -md_dt 0.05 -init_vel 1 +#Parameter (MD) +md_type nve +md_nstep 3 +estep_per_md 1 +md_dt 0.05 +init_vel 1 -td_vext 1 -td_vext_dire 1 -td_stype 0 -td_ttype 3 -td_tstart 1 -td_tend 2 -td_lcut1 0.05 -td_lcut2 0.95 -td_heavi_t0 100 -td_heavi_amp 1.0 +td_vext 1 +td_vext_dire 1 +td_stype 0 +td_ttype 3 +td_tstart 1 +td_tend 2 +td_lcut1 0.05 +td_lcut2 0.95 +td_heavi_t0 100 +td_heavi_amp 1.0 diff --git a/tests/05_rtTDDFT/10_NO_HHG_TDDFT/INPUT b/tests/05_rtTDDFT/10_NO_HHG_TDDFT/INPUT index 67adfbee74..75df0cf317 100644 --- a/tests/05_rtTDDFT/10_NO_HHG_TDDFT/INPUT +++ b/tests/05_rtTDDFT/10_NO_HHG_TDDFT/INPUT @@ -1,46 +1,47 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (General) -suffix autotest -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB -nbands 5 -calculation md -esolver_type tddft +suffix autotest +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB +calculation md +esolver_type tddft +basis_type lcao +gamma_only 0 +nbands 5 +ecutwfc 20 -#Parameter (Accuracy) -ecutwfc 20 -scf_nmax 50 +#Parameter (Electronic Structure) +scf_nmax 50 -ks_solver scalapack_gvx -basis_type lcao -gamma_only 0 -md_nstep 2 -estep_per_md 1 +ks_solver scalapack_gvx -mixing_type broyden -mixing_beta 0.7 -mixing_gg0 0.0 -scf_thr 1.0e-6 +mixing_type broyden +mixing_beta 0.7 +mixing_gg0 0.0 +scf_thr 1.0e-6 -cal_stress 1 -stress_thr 1e-6 -cal_force 1 -force_thr_ev 1.0e-3 +cal_stress 1 +stress_thr 1e-6 +cal_force 1 +force_thr_ev 1.0e-3 -md_type nve -md_dt 0.05 -init_vel 1 +#Parameter (MD) +md_type nve +md_nstep 3 +estep_per_md 1 +md_dt 0.05 +init_vel 1 -td_vext 1 -td_vext_dire 2*1 -td_stype 0 -td_ttype 2*0 -td_tstart 1 -td_tend 2 -td_lcut1 0.05 -td_lcut2 0.95 -td_gauss_freq 1.164656 0.029116 -td_gauss_amp 2.0 5.0 -td_gauss_phase 2*0.0 -td_gauss_t0 2*0 -td_gauss_sigma 2*30 +td_vext 1 +td_vext_dire 2*1 +td_stype 0 +td_ttype 2*0 +td_tstart 1 +td_tend 2 +td_lcut1 0.05 +td_lcut2 0.95 +td_gauss_freq 1.164656 0.029116 +td_gauss_amp 2.0 5.0 +td_gauss_phase 2*0.0 +td_gauss_t0 2*0 +td_gauss_sigma 2*30 diff --git a/tests/05_rtTDDFT/11_NO_O3_TDDFT/INPUT b/tests/05_rtTDDFT/11_NO_O3_TDDFT/INPUT index 9fb483ce2f..488caa564b 100644 --- a/tests/05_rtTDDFT/11_NO_O3_TDDFT/INPUT +++ b/tests/05_rtTDDFT/11_NO_O3_TDDFT/INPUT @@ -1,36 +1,37 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (General) -suffix autotest -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB +suffix autotest +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB -nbands 18 -calculation md -esolver_type tddft +calculation md +esolver_type tddft +basis_type lcao +gamma_only 0 +nbands 18 -#Parameter (Accuracy) -ecutwfc 20 -scf_nmax 30 +#Parameter (Electronic Structure) +ecutwfc 20 +scf_nmax 30 -ks_solver genelpa -basis_type lcao -out_chg 1 -gamma_only 0 -md_nstep 2 -estep_per_md 1 +ks_solver genelpa +# out_chg 1 -mixing_type broyden -mixing_beta 0.7 -mixing_gg0 0.0 -scf_thr 1.0e-6 +mixing_type broyden +mixing_beta 0.7 +mixing_gg0 0.0 +scf_thr 1.0e-6 -cal_stress 1 -stress_thr 1e-6 -cal_force 1 -force_thr_ev 1.0e-3 +cal_stress 1 +stress_thr 1e-6 +cal_force 1 +force_thr_ev 1.0e-3 -md_type nve -md_dt 0.05 -init_vel 1 -ocp 1 -ocp_set 8*2 1*1 1*1 8*0 +#Parameter (MD) +md_type nve +md_nstep 3 +estep_per_md 1 +md_dt 0.05 +init_vel 1 +ocp 1 +ocp_set 8*2 1*1 1*1 8*0 diff --git a/tests/05_rtTDDFT/12_NO_re_TDDFT/INPUT b/tests/05_rtTDDFT/12_NO_re_TDDFT/INPUT index 679c171d33..d560888c7d 100644 --- a/tests/05_rtTDDFT/12_NO_re_TDDFT/INPUT +++ b/tests/05_rtTDDFT/12_NO_re_TDDFT/INPUT @@ -1,39 +1,40 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (General) -suffix autotest -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB +suffix autotest +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB -nbands 5 -calculation md -esolver_type tddft +calculation md +esolver_type tddft +basis_type lcao +gamma_only 0 +ecutwfc 100 +nbands 5 -#Parameter (Accuracy) -ecutwfc 100 -scf_nmax 50 +#Parameter (Electronic Structure) +scf_nmax 50 -ks_solver scalapack_gvx -basis_type lcao -gamma_only 0 -md_nstep 2 -estep_per_md 1 +ks_solver scalapack_gvx -mixing_type broyden -mixing_beta 0.7 -mixing_gg0 0.0 -scf_thr 1.0e-6 +mixing_type broyden +mixing_beta 0.7 +mixing_gg0 0.0 +scf_thr 1.0e-6 -read_file_dir restart -init_wfc file +cal_stress 1 +stress_thr 1e-6 +cal_force 1 +force_thr_ev 1e-3 -cal_stress 1 -stress_thr 1e-6 -cal_force 1 -force_thr_ev 1e-3 +#Parameter (MD) +md_type nve +md_nstep 2 +estep_per_md 1 +md_dt 0.05 +md_restart 1 +init_vel 1 +ocp 1 +ocp_set 1*1 1*1 3*0 -md_type nve -md_dt 0.05 -md_restart 1 -init_vel 1 -ocp 1 -ocp_set 1*1 1*1 3*0 +read_file_dir restart +init_wfc file diff --git a/tests/05_rtTDDFT/12_NO_re_TDDFT/restart/Restart_md.dat b/tests/05_rtTDDFT/12_NO_re_TDDFT/restart/Restart_md.txt similarity index 100% rename from tests/05_rtTDDFT/12_NO_re_TDDFT/restart/Restart_md.dat rename to tests/05_rtTDDFT/12_NO_re_TDDFT/restart/Restart_md.txt diff --git a/tests/05_rtTDDFT/12_NO_re_TDDFT/restart/WFC/wfs1k1g6_nao.txt b/tests/05_rtTDDFT/12_NO_re_TDDFT/restart/WFC/wfk1g6_nao.txt similarity index 100% rename from tests/05_rtTDDFT/12_NO_re_TDDFT/restart/WFC/wfs1k1g6_nao.txt rename to tests/05_rtTDDFT/12_NO_re_TDDFT/restart/WFC/wfk1g6_nao.txt diff --git a/tests/05_rtTDDFT/13_NO_Taylor_TDDFT/INPUT b/tests/05_rtTDDFT/13_NO_Taylor_TDDFT/INPUT index 64c81c8fc9..0fe2a5ff75 100644 --- a/tests/05_rtTDDFT/13_NO_Taylor_TDDFT/INPUT +++ b/tests/05_rtTDDFT/13_NO_Taylor_TDDFT/INPUT @@ -1,37 +1,37 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (General) -suffix autotest -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB +suffix autotest +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB -nbands 5 -calculation md -esolver_type tddft +calculation md +esolver_type tddft +basis_type lcao +gamma_only 0 +ecutwfc 20 +nbands 5 #Parameter (Accuracy) -ecutwfc 20 -scf_nmax 50 +scf_nmax 50 -ks_solver scalapack_gvx -basis_type lcao -gamma_only 0 -md_nstep 2 -estep_per_md 1 +ks_solver scalapack_gvx -mixing_type broyden -mixing_beta 0.7 -mixing_gg0 0.0 -scf_thr 1.0e-6 +mixing_type broyden +mixing_beta 0.7 +mixing_gg0 0.0 +scf_thr 1.0e-6 -cal_stress 1 -stress_thr 1e-6 -cal_force 1 -force_thr_ev 1e-3 +cal_stress 1 +stress_thr 1e-6 +cal_force 1 +force_thr_ev 1e-3 -td_propagator 1 - -md_type nve -md_dt 0.05 -init_vel 1 -ocp 1 -ocp_set 1*1 1*1 3*0 +#Parameter (MD) +md_type nve +md_nstep 3 +estep_per_md 1 +md_dt 0.05 +init_vel 1 +ocp 1 +ocp_set 1*1 1*1 3*0 +td_propagator 1 diff --git a/tests/05_rtTDDFT/14_NO_TRAP_TDDFT/INPUT b/tests/05_rtTDDFT/14_NO_TRAP_TDDFT/INPUT index 8b3cc43a28..77d676e237 100644 --- a/tests/05_rtTDDFT/14_NO_TRAP_TDDFT/INPUT +++ b/tests/05_rtTDDFT/14_NO_TRAP_TDDFT/INPUT @@ -1,47 +1,50 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (General) -suffix autotest -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB -nbands 5 -calculation md -esolver_type tddft +suffix autotest +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB + +calculation md +esolver_type tddft +basis_type lcao +gamma_only 0 +nbands 5 +ecutwfc 20 #Parameter (Accuracy) -ecutwfc 20 -scf_nmax 50 +scf_nmax 50 -ks_solver scalapack_gvx -basis_type lcao -gamma_only 0 -md_nstep 2 -estep_per_md 1 +ks_solver scalapack_gvx -mixing_type broyden -mixing_beta 0.7 -mixing_gg0 0.0 -scf_thr 1.0e-6 +mixing_type broyden +mixing_beta 0.7 +mixing_gg0 0.0 +scf_thr 1.0e-6 -cal_stress 1 -stress_thr 1e-6 -cal_force 1 -force_thr_ev 1.0e-3 +cal_stress 1 +stress_thr 1e-6 +cal_force 1 +force_thr_ev 1.0e-3 -md_type nve -md_dt 0.05 -init_vel 1 +#Parameter (MD) +md_type nve +md_nstep 3 +estep_per_md 1 +md_dt 0.05 +init_vel 1 -td_vext 1 -td_vext_dire 1 -td_stype 0 -td_ttype 1 -td_tstart 1 -td_tend 2 -td_lcut1 0.05 -td_lcut2 0.95 -td_trape_freq 1.60 -td_trape_phase 0.0 -td_trape_t1 1875 -td_trape_t2 5625 -td_trape_t3 7500 -td_trape_amp 2.74 +#Parameter (External Field) +td_vext 1 +td_vext_dire 1 +td_stype 0 +td_ttype 1 +td_tstart 1 +td_tend 2 +td_lcut1 0.05 +td_lcut2 0.95 +td_trape_freq 1.60 +td_trape_phase 0.0 +td_trape_t1 1875 +td_trape_t2 5625 +td_trape_t3 7500 +td_trape_amp 2.74 diff --git a/tests/05_rtTDDFT/15_NO_TRI_TDDFT/INPUT b/tests/05_rtTDDFT/15_NO_TRI_TDDFT/INPUT index 4e255477d6..880ce9901d 100644 --- a/tests/05_rtTDDFT/15_NO_TRI_TDDFT/INPUT +++ b/tests/05_rtTDDFT/15_NO_TRI_TDDFT/INPUT @@ -1,46 +1,49 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (General) -suffix autotest -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB -nbands 5 -calculation md -esolver_type tddft +suffix autotest +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB -#Parameter (Accuracy) -ecutwfc 20 -scf_nmax 50 +calculation md +esolver_type tddft +basis_type lcao +gamma_only 0 +ecutwfc 20 +nbands 5 -ks_solver scalapack_gvx -basis_type lcao -gamma_only 0 -md_nstep 2 -estep_per_md 1 +#Parameter (Electronic Structure) +scf_nmax 50 -mixing_type broyden -mixing_beta 0.7 -mixing_gg0 0.0 -scf_thr 1.0e-6 +ks_solver scalapack_gvx -cal_stress 1 -stress_thr 1e-6 -cal_force 1 -force_thr_ev 1.0e-3 +mixing_type broyden +mixing_beta 0.7 +mixing_gg0 0.0 +scf_thr 1.0e-6 -md_type nve -md_dt 0.05 -init_vel 1 +cal_stress 1 +stress_thr 1e-6 +cal_force 1 +force_thr_ev 1.0e-3 -td_vext 1 -td_vext_dire 1 -td_stype 0 -td_ttype 2 -td_tstart 1 -td_tend 2 -td_lcut1 0.05 -td_lcut2 0.95 -td_trigo_freq1 1.164656 -td_trigo_freq2 0.029116 -td_trigo_phase1 0.0 -td_trigo_phase2 0.0 -td_trigo_amp 1.50 +#Parameter (MD) +md_type nve +md_nstep 3 +estep_per_md 1 +md_dt 0.05 +init_vel 1 + +#Parameter (External Field) +td_vext 1 +td_vext_dire 1 +td_stype 0 +td_ttype 2 +td_tstart 1 +td_tend 2 +td_lcut1 0.05 +td_lcut2 0.95 +td_trigo_freq1 1.164656 +td_trigo_freq2 0.029116 +td_trigo_phase1 0.0 +td_trigo_phase2 0.0 +td_trigo_amp 1.50 diff --git a/tests/05_rtTDDFT/16_NO_vel_TDDFT/INPUT b/tests/05_rtTDDFT/16_NO_vel_TDDFT/INPUT index 7a258e2e94..667f555469 100644 --- a/tests/05_rtTDDFT/16_NO_vel_TDDFT/INPUT +++ b/tests/05_rtTDDFT/16_NO_vel_TDDFT/INPUT @@ -1,46 +1,49 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (General) -suffix autotest -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB -nbands 5 -calculation md -esolver_type tddft +suffix autotest +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB +calculation md +esolver_type tddft +basis_type lcao +gamma_only 0 +nbands 5 +ecutwfc 20 #Parameter (Accuracy) -ecutwfc 20 -scf_nmax 50 +scf_nmax 50 -ks_solver scalapack_gvx -basis_type lcao -gamma_only 0 -md_nstep 3 -estep_per_md 1 +ks_solver scalapack_gvx -mixing_type broyden -mixing_beta 0.7 -mixing_gg0 0.0 -scf_thr 1.0e-6 +mixing_type broyden +mixing_beta 0.7 +mixing_gg0 0.0 +scf_thr 1.0e-6 -cal_stress 1 -stress_thr 1e-6 -cal_force 1 -force_thr_ev 1.0e-3 +cal_stress 1 +stress_thr 1e-6 +cal_force 1 +force_thr_ev 1.0e-3 -md_type nve -md_dt 0.05 -init_vel 1 +#Parameter (MD) +md_type nve +md_nstep 4 +estep_per_md 1 +md_dt 0.05 +init_vel 1 -td_vext 1 -td_vext_dire 1 -td_stype 1 -td_ttype 0 -td_tstart 1 -td_tend 2 -td_gauss_freq 2.44 -td_gauss_phase 0.0 -td_gauss_sigma 0.5 -td_gauss_t0 0 -td_gauss_amp 0.1 +#Parameter (External Field) +td_vext 1 +td_vext_dire 1 +td_stype 1 +td_ttype 0 +td_tstart 1 +td_tend 2 +td_gauss_freq 2.44 +td_gauss_phase 0.0 +td_gauss_sigma 0.5 +td_gauss_t0 0 +td_gauss_amp 0.1 -out_current 1 +#Parameter (Output) +out_current 1 diff --git a/tests/05_rtTDDFT/16_NO_vel_TDDFT/README b/tests/05_rtTDDFT/16_NO_vel_TDDFT/README index 127af73539..18c2e75edd 100644 --- a/tests/05_rtTDDFT/16_NO_vel_TDDFT/README +++ b/tests/05_rtTDDFT/16_NO_vel_TDDFT/README @@ -1 +1 @@ -test TDDFT velocity-gauge output for non-periodic system +Test RT-TDDFT velocity gauge output for non-periodic system diff --git a/tests/05_rtTDDFT/16_NO_vel_TDDFT/current_tot.txt.ref b/tests/05_rtTDDFT/16_NO_vel_TDDFT/current_tot.txt.ref new file mode 100644 index 0000000000..3dff6c2cc8 --- /dev/null +++ b/tests/05_rtTDDFT/16_NO_vel_TDDFT/current_tot.txt.ref @@ -0,0 +1,4 @@ +1 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2 2.7669187278007763e-07 -1.3892875564214303e-09 -2.2297436845106647e-09 +3 2.2955881029815729e-07 3.4521250840365067e-09 5.5110950480092966e-09 +4 1.3457006814280224e-07 1.5269022219512386e-08 2.4393767949903552e-08 diff --git a/tests/05_rtTDDFT/16_NO_vel_TDDFT/refcurrent_total.dat b/tests/05_rtTDDFT/16_NO_vel_TDDFT/refcurrent_total.dat deleted file mode 100644 index 77e00cbc27..0000000000 --- a/tests/05_rtTDDFT/16_NO_vel_TDDFT/refcurrent_total.dat +++ /dev/null @@ -1,4 +0,0 @@ -0 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1 2.7669187278007260e-07 -1.3892875565558252e-09 -2.2297436846799228e-09 -2 2.2955881029817558e-07 3.4521250836946458e-09 5.5110950473557321e-09 -3 1.3457006814286624e-07 1.5269022218929118e-08 2.4393767948848288e-08 diff --git a/tests/05_rtTDDFT/16_NO_vel_TDDFT/result.ref b/tests/05_rtTDDFT/16_NO_vel_TDDFT/result.ref index dcbb5f1498..ea0efc68e2 100644 --- a/tests/05_rtTDDFT/16_NO_vel_TDDFT/result.ref +++ b/tests/05_rtTDDFT/16_NO_vel_TDDFT/result.ref @@ -1,6 +1,6 @@ -etotref -30.91272578807960 +etotref -30.91272578807966 etotperatomref -15.4563628940 totalforceref 0.479236 totalstressref 0.980314 CompareCurrent_pass 0 -totaltimeref 1.81 +totaltimeref 1.10 diff --git a/tests/05_rtTDDFT/17_NO_vel_TDDFT/INPUT b/tests/05_rtTDDFT/17_NO_vel_TDDFT/INPUT index 9148d55634..2ac1a015f0 100644 --- a/tests/05_rtTDDFT/17_NO_vel_TDDFT/INPUT +++ b/tests/05_rtTDDFT/17_NO_vel_TDDFT/INPUT @@ -1,43 +1,43 @@ -INPUT_PARAMETERS - +INPUT_PARAMETERS + # general information -calculation md -esolver_type tddft -md_type nve -md_nstep 2 -estep_per_md 1 -md_dt 0.05 -md_tfirst 0 - +calculation md +esolver_type tddft +md_type nve +md_nstep 3 +estep_per_md 1 +md_dt 0.05 +md_tfirst 0 + # rt-TDDFT parameters -td_vext 1 # add time-dependent external potential -td_vext_dire 3 # direction along z -td_stype 1 # 1: velocity gauge -td_ttype 0 # Gaussian type potential -td_tstart 1 # the step electric field starts -td_tend 2 # the step electric field ends -td_gauss_freq 0.32 -td_gauss_phase 0.0 -td_gauss_sigma 0.5 -td_gauss_t0 1 -td_gauss_amp 0.01 - +td_vext 1 # add time-dependent external potential +td_vext_dire 3 # direction along z +td_stype 1 # 1: velocity gauge +td_ttype 0 # Gaussian type potential +td_tstart 1 # the step electric field starts +td_tend 2 # the step electric field ends +td_gauss_freq 0.32 +td_gauss_phase 0.0 +td_gauss_sigma 0.5 +td_gauss_t0 1 +td_gauss_amp 0.01 + # print out current information -out_current 1 - -suffix autotest -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB -basis_type lcao -gamma_only 0 - +out_current 1 + +suffix autotest +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB +basis_type lcao +gamma_only 0 + # electronic structure calculations -ecutwfc 20 -scf_nmax 50 -scf_thr 1e-6 -ks_solver scalapack_gvx - +ecutwfc 20 +scf_nmax 50 +scf_thr 1e-6 +ks_solver scalapack_gvx + # charge mixing -mixing_type broyden -mixing_beta 0.7 -mixing_gg0 0.0 +mixing_type broyden +mixing_beta 0.7 +mixing_gg0 0.0 diff --git a/tests/05_rtTDDFT/17_NO_vel_TDDFT/README b/tests/05_rtTDDFT/17_NO_vel_TDDFT/README index cf7f610eb0..3d074619ac 100644 --- a/tests/05_rtTDDFT/17_NO_vel_TDDFT/README +++ b/tests/05_rtTDDFT/17_NO_vel_TDDFT/README @@ -1 +1 @@ -test TDDFT velocity gauge output for periodic system +Test RT-TDDFT velocity gauge output for periodic system diff --git a/tests/05_rtTDDFT/17_NO_vel_TDDFT/current_tot.txt.ref b/tests/05_rtTDDFT/17_NO_vel_TDDFT/current_tot.txt.ref new file mode 100644 index 0000000000..02366c9d8d --- /dev/null +++ b/tests/05_rtTDDFT/17_NO_vel_TDDFT/current_tot.txt.ref @@ -0,0 +1,3 @@ +1 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2 6.8191006588607104e-18 1.3391450275092762e-18 5.1985933203095592e-06 +3 1.1447467359283047e-17 1.3353524657917940e-18 1.3886066143094786e-05 diff --git a/tests/05_rtTDDFT/17_NO_vel_TDDFT/refcurrent_total.dat b/tests/05_rtTDDFT/17_NO_vel_TDDFT/refcurrent_total.dat deleted file mode 100644 index b17941d582..0000000000 --- a/tests/05_rtTDDFT/17_NO_vel_TDDFT/refcurrent_total.dat +++ /dev/null @@ -1,3 +0,0 @@ -0 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1 -1.4281057782732242e-18 5.1480765086224919e-18 5.1985933203093457e-06 -2 -3.1989018653041680e-18 1.4638762354532585e-17 1.3886066143094195e-05 diff --git a/tests/05_rtTDDFT/17_NO_vel_TDDFT/result.ref b/tests/05_rtTDDFT/17_NO_vel_TDDFT/result.ref index 2ab84c92e8..aa36e31008 100644 --- a/tests/05_rtTDDFT/17_NO_vel_TDDFT/result.ref +++ b/tests/05_rtTDDFT/17_NO_vel_TDDFT/result.ref @@ -1,4 +1,4 @@ etotref -194.7715239600903 etotperatomref -97.3857619800 CompareCurrent_pass 0 -totaltimeref 6.74 +totaltimeref 3.65 diff --git a/tests/05_rtTDDFT/18_NO_hyb_TDDFT/INPUT b/tests/05_rtTDDFT/18_NO_hyb_TDDFT/INPUT new file mode 100644 index 0000000000..dd533ca95f --- /dev/null +++ b/tests/05_rtTDDFT/18_NO_hyb_TDDFT/INPUT @@ -0,0 +1,40 @@ +INPUT_PARAMETERS + +# general information +calculation md +esolver_type tddft +md_type nve +md_nstep 1 +estep_per_md 10 +td_dt 0.005 +md_tfirst 0 + +# rt-TDDFT parameters +td_vext 1 # add time-dependent external potential +td_vext_dire 3 # direction along z +td_stype 2 # 2: hybrid gauge +td_ttype 3 # Heaviside type potential +td_tstart 1 # the step electric field starts +td_tend 10 # the step electric field ends +td_heavi_t0 3 +td_heavi_amp 0.05 + +# print out current information +out_current 1 + +suffix autotest +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB +basis_type lcao +gamma_only 0 + +# electronic structure calculations +ecutwfc 20 +scf_nmax 50 +scf_thr 1e-6 +ks_solver scalapack_gvx + +# charge mixing +mixing_type broyden +mixing_beta 0.7 +mixing_gg0 0.0 diff --git a/tests/09_DeePKS/103_NO_KP_deepks_basic/KPT b/tests/05_rtTDDFT/18_NO_hyb_TDDFT/KPT similarity index 100% rename from tests/09_DeePKS/103_NO_KP_deepks_basic/KPT rename to tests/05_rtTDDFT/18_NO_hyb_TDDFT/KPT diff --git a/tests/05_rtTDDFT/18_NO_hyb_TDDFT/README b/tests/05_rtTDDFT/18_NO_hyb_TDDFT/README new file mode 100644 index 0000000000..a47d3411f7 --- /dev/null +++ b/tests/05_rtTDDFT/18_NO_hyb_TDDFT/README @@ -0,0 +1 @@ +Test RT-TDDFT hybrid gauge output and parameter td_dt for periodic system diff --git a/tests/05_rtTDDFT/18_NO_hyb_TDDFT/STRU b/tests/05_rtTDDFT/18_NO_hyb_TDDFT/STRU new file mode 100644 index 0000000000..822d2c7cc6 --- /dev/null +++ b/tests/05_rtTDDFT/18_NO_hyb_TDDFT/STRU @@ -0,0 +1,22 @@ +ATOMIC_SPECIES +Si 28.085 Si_ONCV_PBE-1.0.upf + +NUMERICAL_ORBITAL +Si_gga_6au_100Ry_2s2p1d.orb + +LATTICE_CONSTANT +10.2 // add lattice constant + +LATTICE_VECTORS +0.0 0.5 0.5 +0.5 0.0 0.5 +0.5 0.5 0.0 + +ATOMIC_POSITIONS +Cartesian //Cartesian or Direct coordinate. + +Si // Element type +0.0 // magnetism +2 // number of atoms +0.00 0.00 0.00 0 0 0 +0.25 0.25 0.25 1 1 1 diff --git a/tests/05_rtTDDFT/18_NO_hyb_TDDFT/current_tot.txt.ref b/tests/05_rtTDDFT/18_NO_hyb_TDDFT/current_tot.txt.ref new file mode 100644 index 0000000000..e19d79a92b --- /dev/null +++ b/tests/05_rtTDDFT/18_NO_hyb_TDDFT/current_tot.txt.ref @@ -0,0 +1,11 @@ +1 -1.2080528880846261e-19 1.2080528880846066e-19 1.2080528880845773e-19 +2 9.6988649203065955e-09 -9.6988647723290744e-09 2.4283263685858898e-06 +3 2.6772041590862983e-08 -2.6772038966231164e-08 7.2673271979666816e-06 +4 2.7319060127512691e-08 -2.7319057936239790e-08 9.6256951598233973e-06 +5 9.5656716023055945e-09 -9.5656714606956783e-09 9.4882668471607465e-06 +6 -1.5805949584040751e-08 1.5805949767647706e-08 9.2880215292310497e-06 +7 -4.7582174004461010e-08 4.7582174205200823e-08 9.0311994708317000e-06 +8 -8.4545887860098823e-08 8.4545888087037147e-08 8.7249297042081756e-06 +9 -1.2566554788492410e-07 1.2566554814454782e-07 8.3765586452439330e-06 +10 -1.7019855732619671e-07 1.7019855762999082e-07 7.9931205849008677e-06 +11 -2.1769144339022118e-07 2.1769144375450180e-07 7.5810111633604005e-06 diff --git a/tests/05_rtTDDFT/18_NO_hyb_TDDFT/result.ref b/tests/05_rtTDDFT/18_NO_hyb_TDDFT/result.ref new file mode 100644 index 0000000000..fe01bf77eb --- /dev/null +++ b/tests/05_rtTDDFT/18_NO_hyb_TDDFT/result.ref @@ -0,0 +1,4 @@ +etotref -202.3030324186811 +etotperatomref -101.1515162093 +CompareCurrent_pass 0 +totaltimeref 5.26 diff --git a/tests/05_rtTDDFT/CASES_CPU.txt b/tests/05_rtTDDFT/CASES_CPU.txt index 90ead8173b..1d0ef0832a 100644 --- a/tests/05_rtTDDFT/CASES_CPU.txt +++ b/tests/05_rtTDDFT/CASES_CPU.txt @@ -15,3 +15,4 @@ 15_NO_TRI_TDDFT 16_NO_vel_TDDFT 17_NO_vel_TDDFT +18_NO_hyb_TDDFT \ No newline at end of file diff --git a/tests/06_SDFT/01_PW_SDFT_10S_M/INPUT b/tests/06_SDFT/01_PW_SDFT_10S_M/INPUT index 9cf2dd3026..3116118f0d 100644 --- a/tests/06_SDFT/01_PW_SDFT_10S_M/INPUT +++ b/tests/06_SDFT/01_PW_SDFT_10S_M/INPUT @@ -1,34 +1,35 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf -esolver_type sdft -method_sto 1 +suffix autotest +calculation scf +esolver_type sdft +method_sto 1 +init_wfc random -symmetry 0 -pseudo_dir ../../PP_ORB +symmetry 0 +pseudo_dir ../../PP_ORB -nbands_sto 10 +nbands_sto 10 -nche_sto 120 -seed_sto -20000 -kpar 1 -cal_force 1 -cal_stress 1 +nche_sto 120 +seed_sto -20000 +kpar 1 +cal_force 1 +cal_stress 1 #Parameters (2.Iteration) -ecutwfc 20 -scf_thr 1e-4 -scf_nmax 20 +ecutwfc 20 +scf_thr 1e-4 +scf_nmax 20 #Parameters (3.Basis) -basis_type pw +basis_type pw #Parameters (4.Smearing) -smearing_method fd -smearing_sigma 0.6 +smearing_method fd +smearing_sigma 0.6 #Parameters (5.Mixing) -mixing_type plain -mixing_beta 0.7 +mixing_type plain +mixing_beta 0.7 diff --git a/tests/06_SDFT/02_PW_SDFT_10S_P/INPUT b/tests/06_SDFT/02_PW_SDFT_10S_P/INPUT index b77a0ebafc..e9c189cb6e 100644 --- a/tests/06_SDFT/02_PW_SDFT_10S_P/INPUT +++ b/tests/06_SDFT/02_PW_SDFT_10S_P/INPUT @@ -1,35 +1,35 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf -esolver_type sdft -method_sto 1 +suffix autotest +calculation scf +esolver_type sdft +method_sto 1 -symmetry 0 -pseudo_dir ../../PP_ORB +symmetry 0 +pseudo_dir ../../PP_ORB -nbands 0 -nbands_sto 10 +nbands 0 +nbands_sto 10 -nche_sto 120 -seed_sto 20000 -kpar 1 -cal_force 1 -cal_stress 1 +nche_sto 120 +seed_sto 20000 +kpar 1 +cal_force 1 +cal_stress 1 #Parameters (2.Iteration) -ecutwfc 20 -scf_thr 1e-4 -scf_nmax 20 +ecutwfc 20 +scf_thr 1e-4 +scf_nmax 20 #Parameters (3.Basis) -basis_type pw +basis_type pw #Parameters (4.Smearing) -smearing_method fd -smearing_sigma 0.6 +smearing_method fd +smearing_sigma 0.6 #Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.4 +mixing_type broyden +mixing_beta 0.4 diff --git a/tests/06_SDFT/03_PW_SDFT_5D10S/INPUT b/tests/06_SDFT/03_PW_SDFT_5D10S/INPUT index 6a7b12a9e0..63800c64be 100644 --- a/tests/06_SDFT/03_PW_SDFT_5D10S/INPUT +++ b/tests/06_SDFT/03_PW_SDFT_5D10S/INPUT @@ -1,35 +1,35 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf -esolver_type sdft -method_sto 1 +suffix autotest +calculation scf +esolver_type sdft +method_sto 1 -symmetry 0 -pseudo_dir ../../PP_ORB +symmetry 0 +pseudo_dir ../../PP_ORB -nbands 5 -nbands_sto 10 +nbands 5 +nbands_sto 10 -nche_sto 120 -seed_sto 20000 -kpar 1 -cal_force 1 -cal_stress 1 +nche_sto 120 +seed_sto 20000 +kpar 1 +cal_force 1 +cal_stress 1 #Parameters (2.Iteration) -ecutwfc 20 -scf_thr 1e-4 -scf_nmax 20 +ecutwfc 20 +scf_thr 1e-4 +scf_nmax 20 #Parameters (3.Basis) -basis_type pw +basis_type pw #Parameters (4.Smearing) -smearing_method fd -smearing_sigma 0.6 +smearing_method fd +smearing_sigma 0.6 #Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.4 +mixing_type broyden +mixing_beta 0.4 diff --git a/tests/06_SDFT/04_PW_SDFT_ALL/INPUT b/tests/06_SDFT/04_PW_SDFT_ALL/INPUT index 3b1ae838aa..dc0dba9e8b 100644 --- a/tests/06_SDFT/04_PW_SDFT_ALL/INPUT +++ b/tests/06_SDFT/04_PW_SDFT_ALL/INPUT @@ -1,38 +1,38 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf -esolver_type sdft -method_sto 1 +suffix autotest +calculation scf +esolver_type sdft +method_sto 1 -symmetry 0 -pseudo_dir ../../PP_ORB +symmetry 0 +pseudo_dir ../../PP_ORB -nbands 0 -nbands_sto all +nbands 0 +nbands_sto all -nche_sto 120 -seed_sto 20000 -emax_sto 23.5079108951 -emin_sto -4.40353816868 -kpar 1 -cal_force 1 -cal_stress 1 +nche_sto 120 +seed_sto 20000 +emax_sto 23.5079108951 +emin_sto -4.40353816868 +kpar 1 +cal_force 1 +cal_stress 1 #Parameters (2.Iteration) -ecutwfc 20 -scf_thr 1e-4 -scf_nmax 20 +ecutwfc 20 +scf_thr 1e-4 +scf_nmax 20 #Parameters (3.Basis) -basis_type pw +basis_type pw #Parameters (4.Smearing) -smearing_method fd -smearing_sigma 0.6 +smearing_method fd +smearing_sigma 0.6 #Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.4 +mixing_type broyden +mixing_beta 0.4 diff --git a/tests/06_SDFT/05_PW_MD_SDFT_10S/INPUT b/tests/06_SDFT/05_PW_MD_SDFT_10S/INPUT index e0dd83a2dc..857fcab3e7 100644 --- a/tests/06_SDFT/05_PW_MD_SDFT_10S/INPUT +++ b/tests/06_SDFT/05_PW_MD_SDFT_10S/INPUT @@ -1,41 +1,41 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation md -esolver_type sdft -method_sto 1 +suffix autotest +calculation md +esolver_type sdft +method_sto 1 -symmetry 0 -pseudo_dir ../../PP_ORB +symmetry 0 +pseudo_dir ../../PP_ORB -nbands 0 -nbands_sto 10 +nbands 0 +nbands_sto 10 -nche_sto 120 -seed_sto 20000 -kpar 1 -cal_stress 1 -cal_force 1 +nche_sto 120 +seed_sto 20000 +kpar 1 +cal_stress 1 +cal_force 1 #Parameters (2.Iteration) -ecutwfc 20 -scf_thr 1e-4 -scf_nmax 20 +ecutwfc 20 +scf_thr 1e-4 +scf_nmax 20 #Parameters (3.Basis) -basis_type pw +basis_type pw #Parameters (4.Smearing) -smearing_method fd -smearing_sigma 0.6 +smearing_method fd +smearing_sigma 0.6 #Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.4 +mixing_type broyden +mixing_beta 0.4 #MD -md_tfirst 10 -md_tfreq 0.1 -md_nstep 3 -init_vel 1 +md_tfirst 10 +md_tfreq 0.1 +md_nstep 4 +init_vel 1 diff --git a/tests/06_SDFT/06_PW_MD_SDFT_5D10S/INPUT b/tests/06_SDFT/06_PW_MD_SDFT_5D10S/INPUT index 615cdc3cd7..2c8f0cb7d5 100644 --- a/tests/06_SDFT/06_PW_MD_SDFT_5D10S/INPUT +++ b/tests/06_SDFT/06_PW_MD_SDFT_5D10S/INPUT @@ -1,41 +1,41 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation md -esolver_type sdft -method_sto 1 +suffix autotest +calculation md +esolver_type sdft +method_sto 1 -symmetry 0 -pseudo_dir ../../PP_ORB +symmetry 0 +pseudo_dir ../../PP_ORB -nbands 5 -nbands_sto 10 +nbands 5 +nbands_sto 10 -nche_sto 120 -seed_sto 20000 -kpar 1 -cal_force 1 -cal_stress 1 +nche_sto 120 +seed_sto 20000 +kpar 1 +cal_force 1 +cal_stress 1 #Parameters (2.Iteration) -ecutwfc 20 -scf_thr 1e-4 -scf_nmax 20 +ecutwfc 20 +scf_thr 1e-4 +scf_nmax 20 #Parameters (3.Basis) -basis_type pw +basis_type pw #Parameters (4.Smearing) -smearing_method fd -smearing_sigma 0.6 +smearing_method fd +smearing_sigma 0.6 #Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.4 +mixing_type broyden +mixing_beta 0.4 #MD -md_tfirst 10 -md_tfreq 0.1 -md_nstep 3 -init_vel 1 +md_tfirst 10 +md_tfreq 0.1 +md_nstep 4 +init_vel 1 diff --git a/tests/06_SDFT/07_PW_MD_SDFT_ALL/INPUT b/tests/06_SDFT/07_PW_MD_SDFT_ALL/INPUT index 1428d2eef9..56c09692b2 100644 --- a/tests/06_SDFT/07_PW_MD_SDFT_ALL/INPUT +++ b/tests/06_SDFT/07_PW_MD_SDFT_ALL/INPUT @@ -1,43 +1,43 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation md -esolver_type sdft -method_sto 1 +suffix autotest +calculation md +esolver_type sdft +method_sto 1 -symmetry 0 -pseudo_dir ../../PP_ORB +symmetry 0 +pseudo_dir ../../PP_ORB -nbands 0 -nbands_sto all +nbands 0 +nbands_sto all -nche_sto 90 -seed_sto 20000 -emax_sto 23.5079108951 -emin_sto -4.40353816868 -kpar 1 -cal_force 1 -cal_stress 1 +nche_sto 90 +seed_sto 20000 +emax_sto 23.5079108951 +emin_sto -4.40353816868 +kpar 1 +cal_force 1 +cal_stress 1 #Parameters (2.Iteration) -ecutwfc 20 -scf_thr 1e-4 -scf_nmax 20 +ecutwfc 20 +scf_thr 1e-4 +scf_nmax 20 #Parameters (3.Basis) -basis_type pw +basis_type pw #Parameters (4.Smearing) -smearing_method fd -smearing_sigma 0.6 +smearing_method fd +smearing_sigma 0.6 #Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.4 +mixing_type broyden +mixing_beta 0.4 #MD -md_tfirst 10 -md_tfreq 0.1 -md_nstep 2 -init_vel 1 +md_tfirst 10 +md_tfreq 0.1 +md_nstep 3 +init_vel 1 diff --git a/tests/06_SDFT/08_PW_BNDKPAR_SDFT_ALL/INPUT b/tests/06_SDFT/08_PW_BNDKPAR_SDFT_ALL/INPUT index 29c0f4e647..a2a137f049 100644 --- a/tests/06_SDFT/08_PW_BNDKPAR_SDFT_ALL/INPUT +++ b/tests/06_SDFT/08_PW_BNDKPAR_SDFT_ALL/INPUT @@ -1,37 +1,37 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf -esolver_type sdft -method_sto 1 +suffix autotest +calculation scf +esolver_type sdft +method_sto 1 -symmetry 0 -pseudo_dir ../../PP_ORB +symmetry 0 +pseudo_dir ../../PP_ORB -kpar 2 -bndpar 2 +kpar 2 +bndpar 2 -nbands 0 -nbands_sto all +nbands 0 +nbands_sto all -nche_sto 120 -seed_sto 20000 -cal_force 1 -cal_stress 1 +nche_sto 120 +seed_sto 20000 +cal_force 1 +cal_stress 1 #Parameters (2.Iteration) -ecutwfc 5 -scf_thr 1e-7 -scf_nmax 20 +ecutwfc 5 +scf_thr 1e-7 +scf_nmax 20 #Parameters (3.Basis) -basis_type pw +basis_type pw #Parameters (4.Smearing) -smearing_method fd -smearing_sigma 0.6 +smearing_method fd +smearing_sigma 0.6 #Parameters (5.Mixing) -mixing_type plain -mixing_beta 0.7 +mixing_type plain +mixing_beta 0.7 diff --git a/tests/06_SDFT/09_PW_BNDKPAR_SDFT_MALL/INPUT b/tests/06_SDFT/09_PW_BNDKPAR_SDFT_MALL/INPUT index 73dfe5798e..258722bf05 100644 --- a/tests/06_SDFT/09_PW_BNDKPAR_SDFT_MALL/INPUT +++ b/tests/06_SDFT/09_PW_BNDKPAR_SDFT_MALL/INPUT @@ -1,37 +1,37 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf -esolver_type sdft -method_sto 1 +suffix autotest +calculation scf +esolver_type sdft +method_sto 1 -symmetry 0 -pseudo_dir ../../PP_ORB +symmetry 0 +pseudo_dir ../../PP_ORB -kpar 2 -bndpar 1 +kpar 2 +bndpar 1 -nbands 3 -nbands_sto all +nbands 3 +nbands_sto all -nche_sto 120 -seed_sto 20000 -cal_force 1 -cal_stress 1 +nche_sto 120 +seed_sto 20000 +cal_force 1 +cal_stress 1 #Parameters (2.Iteration) -ecutwfc 5 -scf_thr 1e-6 -scf_nmax 20 +ecutwfc 5 +scf_thr 1e-6 +scf_nmax 20 #Parameters (3.Basis) -basis_type pw +basis_type pw #Parameters (4.Smearing) -smearing_method fd -smearing_sigma 0.6 +smearing_method fd +smearing_sigma 0.6 #Parameters (5.Mixing) -mixing_type plain -mixing_beta 0.7 +mixing_type plain +mixing_beta 0.7 diff --git a/tests/06_SDFT/10_PW_BNDPAR_SDFT_10S/INPUT b/tests/06_SDFT/10_PW_BNDPAR_SDFT_10S/INPUT index 52ec558c61..05687aebe1 100644 --- a/tests/06_SDFT/10_PW_BNDPAR_SDFT_10S/INPUT +++ b/tests/06_SDFT/10_PW_BNDPAR_SDFT_10S/INPUT @@ -1,37 +1,37 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf -esolver_type sdft -method_sto 1 +suffix autotest +calculation scf +esolver_type sdft +method_sto 1 -symmetry 0 -pseudo_dir ../../PP_ORB +symmetry 0 +pseudo_dir ../../PP_ORB -bndpar 2 +bndpar 2 -nbands 0 -nbands_sto 10 +nbands 0 +nbands_sto 10 -nche_sto 120 -seed_sto 20000 -kpar 1 -cal_force 1 -cal_stress 1 +nche_sto 120 +seed_sto 20000 +kpar 1 +cal_force 1 +cal_stress 1 #Parameters (2.Iteration) -ecutwfc 20 -scf_thr 1e-4 -scf_nmax 20 +ecutwfc 20 +scf_thr 1e-4 +scf_nmax 20 #Parameters (3.Basis) -basis_type pw +basis_type pw #Parameters (4.Smearing) -smearing_method fd -smearing_sigma 0.6 +smearing_method fd +smearing_sigma 0.6 #Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.4 +mixing_type broyden +mixing_beta 0.4 diff --git a/tests/06_SDFT/11_PW_BNDPAR_SDFT_5D10S/INPUT b/tests/06_SDFT/11_PW_BNDPAR_SDFT_5D10S/INPUT index 73ce0b7514..a4598104a5 100644 --- a/tests/06_SDFT/11_PW_BNDPAR_SDFT_5D10S/INPUT +++ b/tests/06_SDFT/11_PW_BNDPAR_SDFT_5D10S/INPUT @@ -1,37 +1,37 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf -esolver_type sdft -method_sto 1 +suffix autotest +calculation scf +esolver_type sdft +method_sto 1 -symmetry 0 -pseudo_dir ../../PP_ORB +symmetry 0 +pseudo_dir ../../PP_ORB -bndpar 2 +bndpar 2 -nbands 5 -nbands_sto 10 +nbands 5 +nbands_sto 10 -nche_sto 120 -seed_sto 20000 -kpar 1 -cal_force 1 -cal_stress 1 +nche_sto 120 +seed_sto 20000 +kpar 1 +cal_force 1 +cal_stress 1 #Parameters (2.Iteration) -ecutwfc 20 -scf_thr 1e-4 -scf_nmax 20 +ecutwfc 20 +scf_thr 1e-4 +scf_nmax 20 #Parameters (3.Basis) -basis_type pw +basis_type pw #Parameters (4.Smearing) -smearing_method fd -smearing_sigma 0.6 +smearing_method fd +smearing_sigma 0.6 #Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.4 +mixing_type broyden +mixing_beta 0.4 diff --git a/tests/06_SDFT/12_PW_BPCG_SDFT_5D11S/INPUT b/tests/06_SDFT/12_PW_BPCG_SDFT_5D11S/INPUT index dc7807efb9..be527289f8 100644 --- a/tests/06_SDFT/12_PW_BPCG_SDFT_5D11S/INPUT +++ b/tests/06_SDFT/12_PW_BPCG_SDFT_5D11S/INPUT @@ -1,38 +1,38 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf -esolver_type sdft -ks_solver bpcg -method_sto 1 +suffix autotest +calculation scf +esolver_type sdft +ks_solver bpcg +method_sto 1 -symmetry 0 -pseudo_dir ../../PP_ORB +symmetry 0 +pseudo_dir ../../PP_ORB -bndpar 2 +bndpar 2 -nbands 5 -nbands_sto 11 +nbands 5 +nbands_sto 11 -nche_sto 120 -seed_sto 20000 -kpar 1 -cal_force 1 -cal_stress 1 +nche_sto 120 +seed_sto 20000 +kpar 1 +cal_force 1 +cal_stress 1 #Parameters (2.Iteration) -ecutwfc 20 -scf_thr 1e-4 -scf_nmax 20 +ecutwfc 20 +scf_thr 1e-4 +scf_nmax 20 #Parameters (3.Basis) -basis_type pw +basis_type pw #Parameters (4.Smearing) -smearing_method fd -smearing_sigma 0.6 +smearing_method fd +smearing_sigma 0.6 #Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.4 +mixing_type broyden +mixing_beta 0.4 diff --git a/tests/06_SDFT/13_PW_KPAR_SDFT_ALL/INPUT b/tests/06_SDFT/13_PW_KPAR_SDFT_ALL/INPUT index f9832d5a23..d2c23a23f2 100644 --- a/tests/06_SDFT/13_PW_KPAR_SDFT_ALL/INPUT +++ b/tests/06_SDFT/13_PW_KPAR_SDFT_ALL/INPUT @@ -1,37 +1,37 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf -esolver_type sdft -method_sto 1 +suffix autotest +calculation scf +esolver_type sdft +method_sto 1 -symmetry 0 -pseudo_dir ../../PP_ORB +symmetry 0 +pseudo_dir ../../PP_ORB -kpar 2 -bndpar 1 +kpar 2 +bndpar 1 -nbands 0 -nbands_sto all +nbands 0 +nbands_sto all -nche_sto 120 -seed_sto 20000 -cal_force 1 -cal_stress 1 +nche_sto 120 +seed_sto 20000 +cal_force 1 +cal_stress 1 #Parameters (2.Iteration) -ecutwfc 20 -scf_thr 1e-6 -scf_nmax 20 +ecutwfc 20 +scf_thr 1e-6 +scf_nmax 20 #Parameters (3.Basis) -basis_type pw +basis_type pw #Parameters (4.Smearing) -smearing_method fd -smearing_sigma 0.6 +smearing_method fd +smearing_sigma 0.6 #Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.7 +mixing_type broyden +mixing_beta 0.7 diff --git a/tests/06_SDFT/14_PW_SDFT_10D10S_METHD2/INPUT b/tests/06_SDFT/14_PW_SDFT_10D10S_METHD2/INPUT index f720f7b1e8..b9d05e13a6 100644 --- a/tests/06_SDFT/14_PW_SDFT_10D10S_METHD2/INPUT +++ b/tests/06_SDFT/14_PW_SDFT_10D10S_METHD2/INPUT @@ -1,38 +1,37 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf -esolver_type sdft -method_sto 2 +suffix autotest +calculation scf +esolver_type sdft +method_sto 2 -symmetry 0 -pseudo_dir ../../PP_ORB -pw_seed 1 +symmetry 0 +pseudo_dir ../../PP_ORB +pw_seed 1 -nbands 10 -nbands_sto 10 +nbands 10 +nbands_sto 10 -nche_sto 120 -seed_sto 20000 -kpar 2 -bndpar 2 -cal_force 1 -cal_stress 1 +nche_sto 120 +seed_sto 20000 +kpar 2 +bndpar 2 +cal_force 1 +cal_stress 1 #Parameters (2.Iteration) -ecutwfc 20 -scf_thr 1e-4 -scf_nmax 20 +ecutwfc 20 +scf_thr 1e-4 +scf_nmax 20 #Parameters (3.Basis) -basis_type pw +basis_type pw #Parameters (4.Smearing) -smearing_method fd -smearing_sigma 0.6 +smearing_method fd +smearing_sigma 0.6 #Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.4 - +mixing_type broyden +mixing_beta 0.4 diff --git a/tests/06_SDFT/15_PW_SDFT_10S_METHD2/INPUT b/tests/06_SDFT/15_PW_SDFT_10S_METHD2/INPUT index b02d063237..8739418300 100644 --- a/tests/06_SDFT/15_PW_SDFT_10S_METHD2/INPUT +++ b/tests/06_SDFT/15_PW_SDFT_10S_METHD2/INPUT @@ -1,36 +1,35 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf -esolver_type sdft -method_sto 2 +suffix autotest +calculation scf +esolver_type sdft +method_sto 2 -symmetry 0 -pseudo_dir ../../PP_ORB +symmetry 0 +pseudo_dir ../../PP_ORB -nbands 0 -nbands_sto 10 +nbands 0 +nbands_sto 10 -nche_sto 120 -seed_sto 20000 -bndpar 2 -cal_force 1 -cal_stress 1 +nche_sto 120 +seed_sto 20000 +bndpar 2 +cal_force 1 +cal_stress 1 #Parameters (2.Iteration) -ecutwfc 20 -scf_thr 1e-4 -scf_nmax 20 +ecutwfc 20 +scf_thr 1e-4 +scf_nmax 20 #Parameters (3.Basis) -basis_type pw +basis_type pw #Parameters (4.Smearing) -smearing_method fd -smearing_sigma 0.6 +smearing_method fd +smearing_sigma 0.6 #Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.4 - +mixing_type broyden +mixing_beta 0.4 diff --git a/tests/06_SDFT/16_PW_KG_100/INPUT b/tests/06_SDFT/16_PW_KG_100/INPUT index a51bb74d94..da5ce4d012 100644 --- a/tests/06_SDFT/16_PW_KG_100/INPUT +++ b/tests/06_SDFT/16_PW_KG_100/INPUT @@ -1,37 +1,37 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf -esolver_type sdft +suffix autotest +calculation scf +esolver_type sdft -nbands 100 -nbands_sto 0 #execute KSDFT -pseudo_dir ../../PP_ORB -symmetry 1 -kpar 2 +nbands 100 +nbands_sto 0 #execute KSDFT +pseudo_dir ../../PP_ORB +symmetry 1 +kpar 2 #Parameters (2.Iteration) -ecutwfc 20 -scf_thr 1e-6 -scf_nmax 50 +ecutwfc 20 +scf_thr 1e-6 +scf_nmax 50 #Parameters (3.Basis) -basis_type pw +basis_type pw #Parameters (4.Smearing) -smearing_method fd -smearing_sigma 0.6 +smearing_method fd +smearing_sigma 0.6 #Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.4 -mixing_gg0 0.0 +mixing_type broyden +mixing_beta 0.4 +mixing_gg0 0.0 -cal_cond 1 -cond_fwhm 8 -cond_wcut 20 -cond_dw 0.02 -cond_dt 0.237464 -cond_dtbatch 1 -cond_nonlocal 0 +cal_cond 1 +cond_fwhm 8 +cond_wcut 20 +cond_dw 0.02 +cond_dt 0.237464 +cond_dtbatch 1 +cond_nonlocal 0 diff --git a/tests/06_SDFT/17_PW_NLKG_100/INPUT b/tests/06_SDFT/17_PW_NLKG_100/INPUT index 06d7f7c673..7480e08c5b 100644 --- a/tests/06_SDFT/17_PW_NLKG_100/INPUT +++ b/tests/06_SDFT/17_PW_NLKG_100/INPUT @@ -1,36 +1,36 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf +suffix autotest +calculation scf -nbands 100 -pseudo_dir ../../PP_ORB -symmetry 1 -kpar 2 +nbands 100 +pseudo_dir ../../PP_ORB +symmetry 1 +kpar 2 #Parameters (2.Iteration) -ecutwfc 20 -scf_thr 1e-6 -scf_nmax 50 +ecutwfc 20 +scf_thr 1e-6 +scf_nmax 50 #Parameters (3.Basis) -basis_type pw +basis_type pw #Parameters (4.Smearing) -smearing_method fd -smearing_sigma 0.6 +smearing_method fd +smearing_sigma 0.6 #Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.4 -mixing_gg0 0.0 +mixing_type broyden +mixing_beta 0.4 +mixing_gg0 0.0 -cal_cond 1 -cond_smear 2 -cond_fwhm 8 -cond_wcut 20 -cond_dw 0.02 -cond_dt 0.237464 -cond_dtbatch 1 -cond_nonlocal 1 +cal_cond 1 +cond_smear 2 +cond_fwhm 8 +cond_wcut 20 +cond_dw 0.02 +cond_dt 0.237464 +cond_dtbatch 1 +cond_nonlocal 1 diff --git a/tests/06_SDFT/18_PW_NSCF_KG_100/INPUT b/tests/06_SDFT/18_PW_NSCF_KG_100/INPUT index 7427b20472..94bac3bd35 100644 --- a/tests/06_SDFT/18_PW_NSCF_KG_100/INPUT +++ b/tests/06_SDFT/18_PW_NSCF_KG_100/INPUT @@ -1,37 +1,37 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation nscf +suffix autotest +calculation nscf -nbands 100 -pseudo_dir ../../PP_ORB -symmetry 1 -kpar 2 -read_file_dir ./ -init_chg file +nbands 100 +pseudo_dir ../../PP_ORB +symmetry 1 +kpar 2 +read_file_dir ./ +init_chg file #Parameters (2.Iteration) -ecutwfc 20 -scf_thr 1e-6 -scf_nmax 50 +ecutwfc 20 +scf_thr 1e-6 +scf_nmax 50 #Parameters (3.Basis) -basis_type pw +basis_type pw #Parameters (4.Smearing) -smearing_method fd -smearing_sigma 0.6 +smearing_method fd +smearing_sigma 0.6 #Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.4 -mixing_gg0 0.0 +mixing_type broyden +mixing_beta 0.4 +mixing_gg0 0.0 -cal_cond 1 -cond_fwhm 8 -cond_wcut 20 -cond_dw 0.02 -cond_dt 0.237464 -cond_dtbatch 1 -cond_nonlocal 0 +cal_cond 1 +cond_fwhm 8 +cond_wcut 20 +cond_dw 0.02 +cond_dt 0.237464 +cond_dtbatch 1 +cond_nonlocal 0 diff --git a/tests/06_SDFT/18_PW_NSCF_KG_100/chgs1.cube b/tests/06_SDFT/18_PW_NSCF_KG_100/chg.cube similarity index 100% rename from tests/06_SDFT/18_PW_NSCF_KG_100/chgs1.cube rename to tests/06_SDFT/18_PW_NSCF_KG_100/chg.cube diff --git a/tests/06_SDFT/19_PW_SDOS_10D10S/INPUT b/tests/06_SDFT/19_PW_SDOS_10D10S/INPUT index 3e5e9202bb..e609be5466 100644 --- a/tests/06_SDFT/19_PW_SDOS_10D10S/INPUT +++ b/tests/06_SDFT/19_PW_SDOS_10D10S/INPUT @@ -1,45 +1,45 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf -esolver_type sdft -method_sto 2 - -nbands 10 -nbands_sto 10 -nche_sto 120 -emax_sto 0 -emin_sto 0 -seed_sto 20000 -pseudo_dir ../../PP_ORB -pw_seed 1 -symmetry 1 -kpar 1 -bndpar 2 +suffix autotest +calculation scf +esolver_type sdft +method_sto 2 + +nbands 10 +nbands_sto 10 +nche_sto 120 +emax_sto 0 +emin_sto 0 +seed_sto 20000 +pseudo_dir ../../PP_ORB +pw_seed 1 +symmetry 1 +kpar 1 +bndpar 2 #Parameters (2.Iteration) -ecutwfc 20 -scf_thr 1e-6 -scf_nmax 20 +ecutwfc 20 +scf_thr 1e-6 +scf_nmax 20 #Parameters (3.Basis) -basis_type pw +basis_type pw #Parameters (4.Smearing) -smearing_method fd -smearing_sigma 0.6 +smearing_method fd +smearing_sigma 0.6 #Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.4 -mixing_gg0 0.0 - -out_dos 1 -dos_emin_ev -20 -dos_emax_ev 100 -dos_edelta_ev 0.1 -dos_sigma 4 -dos_nche 240 -npart_sto 2 +mixing_type broyden +mixing_beta 0.4 +mixing_gg0 0.0 + +out_dos 1 +dos_emin_ev -20 +dos_emax_ev 100 +dos_edelta_ev 0.1 +dos_sigma 4 +dos_nche 240 +npart_sto 2 diff --git a/tests/06_SDFT/20_PW_SDOS_MALL/INPUT b/tests/06_SDFT/20_PW_SDOS_MALL/INPUT index acf7d5265d..d8a9bf4a6b 100644 --- a/tests/06_SDFT/20_PW_SDOS_MALL/INPUT +++ b/tests/06_SDFT/20_PW_SDOS_MALL/INPUT @@ -1,44 +1,43 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation nscf -esolver_type sdft -method_sto 1 - -nbands 10 -nbands_sto all -nche_sto 120 -emax_sto 0 -emin_sto 0 -seed_sto 20000 -pseudo_dir ../../PP_ORB -symmetry 1 -kpar 2 -bndpar 2 +suffix autotest +calculation nscf +esolver_type sdft +method_sto 1 + +nbands 10 +nbands_sto all +nche_sto 120 +emax_sto 0 +emin_sto 0 +seed_sto 20000 +pseudo_dir ../../PP_ORB +symmetry 1 +kpar 2 +bndpar 2 #Parameters (2.Iteration) -ecutwfc 20 -read_file_dir ./ -init_chg file +ecutwfc 20 +read_file_dir ./ +init_chg file #Parameters (3.Basis) -basis_type pw +basis_type pw #Parameters (4.Smearing) -smearing_method fd -smearing_sigma 0.6 +smearing_method fd +smearing_sigma 0.6 #Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.4 -mixing_gg0 0.0 - -out_dos 1 -dos_emin_ev -20 -dos_emax_ev 100 -dos_edelta_ev 0.1 -dos_sigma 4 -dos_nche 240 - +mixing_type broyden +mixing_beta 0.4 +mixing_gg0 0.0 + +out_dos 1 +dos_emin_ev -20 +dos_emax_ev 100 +dos_edelta_ev 0.1 +dos_sigma 4 +dos_nche 240 diff --git a/tests/06_SDFT/20_PW_SDOS_MALL/chgs1.cube b/tests/06_SDFT/20_PW_SDOS_MALL/chg.cube similarity index 100% rename from tests/06_SDFT/20_PW_SDOS_MALL/chgs1.cube rename to tests/06_SDFT/20_PW_SDOS_MALL/chg.cube diff --git a/tests/06_SDFT/21_PW_SKG_10D10S/INPUT b/tests/06_SDFT/21_PW_SKG_10D10S/INPUT index 7659e98ff6..5ad3ef4e69 100644 --- a/tests/06_SDFT/21_PW_SKG_10D10S/INPUT +++ b/tests/06_SDFT/21_PW_SKG_10D10S/INPUT @@ -1,46 +1,46 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation nscf -esolver_type sdft -method_sto 2 +suffix autotest +calculation nscf +esolver_type sdft +method_sto 2 -nbands 10 -nbands_sto 10 -nche_sto 120 -emax_sto 0 -emin_sto 0 -seed_sto 20000 -pseudo_dir ../../PP_ORB -pw_seed 1 -symmetry 1 -kpar 2 -bndpar 2 -out_chg 0 -init_chg file -read_file_dir ./ +nbands 10 +nbands_sto 10 +nche_sto 120 +emax_sto 0 +emin_sto 0 +seed_sto 20000 +pseudo_dir ../../PP_ORB +pw_seed 1 +symmetry 1 +kpar 2 +bndpar 2 +out_chg 0 +init_chg file +read_file_dir ./ #Parameters (2.Iteration) -ecutwfc 20 +ecutwfc 20 #Parameters (3.Basis) -basis_type pw +basis_type pw #Parameters (4.Smearing) -smearing_method fd -smearing_sigma 0.6 +smearing_method fd +smearing_sigma 0.6 #Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.4 -mixing_gg0 0.0 +mixing_type broyden +mixing_beta 0.4 +mixing_gg0 0.0 -cal_cond 1 -cond_fwhm 8 -cond_wcut 20 -cond_dw 0.02 -cond_dt 0.237464 -cond_dtbatch 1 -cond_nonlocal 0 -symmetry_prec 1e-5 +cal_cond 1 +cond_fwhm 8 +cond_wcut 20 +cond_dw 0.02 +cond_dt 0.237464 +cond_dtbatch 1 +cond_nonlocal 0 +symmetry_prec 1e-5 diff --git a/tests/06_SDFT/21_PW_SKG_10D10S/chgs1.cube b/tests/06_SDFT/21_PW_SKG_10D10S/chg.cube similarity index 100% rename from tests/06_SDFT/21_PW_SKG_10D10S/chgs1.cube rename to tests/06_SDFT/21_PW_SKG_10D10S/chg.cube diff --git a/tests/06_SDFT/22_PW_SKG_ALL/INPUT b/tests/06_SDFT/22_PW_SKG_ALL/INPUT index e2201f982a..c28d1d9335 100644 --- a/tests/06_SDFT/22_PW_SKG_ALL/INPUT +++ b/tests/06_SDFT/22_PW_SKG_ALL/INPUT @@ -1,43 +1,43 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf -esolver_type sdft -method_sto 1 +suffix autotest +calculation scf +esolver_type sdft +method_sto 1 -nbands 0 -nbands_sto all -nche_sto 120 -emax_sto 0 -emin_sto 0 -seed_sto 20000 -pseudo_dir ../../PP_ORB -symmetry 1 -kpar 1 -bndpar 2 +nbands 0 +nbands_sto all +nche_sto 120 +emax_sto 0 +emin_sto 0 +seed_sto 20000 +pseudo_dir ../../PP_ORB +symmetry 1 +kpar 1 +bndpar 2 #Parameters (2.Iteration) -ecutwfc 5 -scf_thr 1e-6 -scf_nmax 20 +ecutwfc 5 +scf_thr 1e-6 +scf_nmax 20 #Parameters (3.Basis) -basis_type pw +basis_type pw #Parameters (4.Smearing) -smearing_method fd -smearing_sigma 0.6 +smearing_method fd +smearing_sigma 0.6 #Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.4 -mixing_gg0 0.0 +mixing_type broyden +mixing_beta 0.4 +mixing_gg0 0.0 -cal_cond 1 -cond_fwhm 16 -cond_wcut 20 -cond_dw 0.02 -cond_dt 0.237464 -cond_dtbatch 0 -cond_nonlocal 0 +cal_cond 1 +cond_fwhm 16 +cond_wcut 20 +cond_dw 0.02 +cond_dt 0.237464 +cond_dtbatch 0 +cond_nonlocal 0 diff --git a/tests/06_SDFT/23_PW_SNLKG_10D10S/INPUT b/tests/06_SDFT/23_PW_SNLKG_10D10S/INPUT index 0c5e85cc6d..502e54e1c9 100644 --- a/tests/06_SDFT/23_PW_SNLKG_10D10S/INPUT +++ b/tests/06_SDFT/23_PW_SNLKG_10D10S/INPUT @@ -1,47 +1,47 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf -esolver_type sdft -method_sto 2 +suffix autotest +calculation scf +esolver_type sdft +method_sto 2 -nbands 10 -nbands_sto 10 -nche_sto 120 -emax_sto 0 -emin_sto 0 -seed_sto 20000 -pseudo_dir ../../PP_ORB -pw_seed 1 -symmetry 1 -kpar 1 -bndpar 2 -out_chg 0 -read_file_dir ./ +nbands 10 +nbands_sto 10 +nche_sto 120 +emax_sto 0 +emin_sto 0 +seed_sto 20000 +pseudo_dir ../../PP_ORB +pw_seed 1 +symmetry 1 +kpar 1 +bndpar 2 +out_chg 0 +read_file_dir ./ #Parameters (2.Iteration) -ecutwfc 20 -scf_thr 1e-6 -scf_nmax 5 +ecutwfc 20 +scf_thr 1e-6 +scf_nmax 5 #Parameters (3.Basis) -basis_type pw +basis_type pw #Parameters (4.Smearing) -smearing_method fd -smearing_sigma 0.6 +smearing_method fd +smearing_sigma 0.6 #Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.4 -mixing_gg0 0.0 +mixing_type broyden +mixing_beta 0.4 +mixing_gg0 0.0 -cal_cond 1 -cond_fwhm 8 -cond_wcut 20 -cond_dw 0.02 -cond_dt 0.237464 -cond_dtbatch 4 -cond_nonlocal 1 -symmetry_prec 1e-5 +cal_cond 1 +cond_fwhm 8 +cond_wcut 20 +cond_dw 0.02 +cond_dt 0.237464 +cond_dtbatch 4 +cond_nonlocal 1 +symmetry_prec 1e-5 diff --git a/tests/07_OFDFT/01_OF_OP_CG1/INPUT b/tests/07_OFDFT/01_OF_OP_CG1/INPUT index f0b98a58a6..18c42c7691 100644 --- a/tests/07_OFDFT/01_OF_OP_CG1/INPUT +++ b/tests/07_OFDFT/01_OF_OP_CG1/INPUT @@ -1,24 +1,23 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf -esolver_type ofdft +suffix autotest +calculation scf +esolver_type ofdft -symmetry 1 -pseudo_dir ../../PP_ORB/ -pseudo_rcut 16 -nspin 1 +symmetry 1 +pseudo_dir ../../PP_ORB/ +pseudo_rcut 16 +nspin 1 #Parameters (2.Iteration) -ecutwfc 20 -scf_nmax 50 +ecutwfc 20 +scf_nmax 50 #OFDFT -of_kinetic wt -of_method cg1 -of_full_pw 1 -of_full_pw_dim 0 +of_kinetic wt +of_method cg1 +of_full_pw 1 +of_full_pw_dim 0 #Parameters (3.Basis) -basis_type pw - +basis_type pw diff --git a/tests/07_OFDFT/02_OF_OP_CG2/INPUT b/tests/07_OFDFT/02_OF_OP_CG2/INPUT index c80a4a1f96..b020c023df 100644 --- a/tests/07_OFDFT/02_OF_OP_CG2/INPUT +++ b/tests/07_OFDFT/02_OF_OP_CG2/INPUT @@ -1,24 +1,23 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf -esolver_type ofdft +suffix autotest +calculation scf +esolver_type ofdft -symmetry 1 -pseudo_dir ../../PP_ORB/ -pseudo_rcut 16 -nspin 1 +symmetry 1 +pseudo_dir ../../PP_ORB/ +pseudo_rcut 16 +nspin 1 #Parameters (2.Iteration) -ecutwfc 20 -scf_nmax 50 +ecutwfc 20 +scf_nmax 50 #OFDFT -of_kinetic wt -of_method cg2 -of_full_pw 1 -of_full_pw_dim 0 +of_kinetic wt +of_method cg2 +of_full_pw 1 +of_full_pw_dim 0 #Parameters (3.Basis) -basis_type pw - +basis_type pw diff --git a/tests/07_OFDFT/03_OF_OP_TN/INPUT b/tests/07_OFDFT/03_OF_OP_TN/INPUT index 0374036b70..17786c5ffb 100644 --- a/tests/07_OFDFT/03_OF_OP_TN/INPUT +++ b/tests/07_OFDFT/03_OF_OP_TN/INPUT @@ -1,24 +1,23 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf -esolver_type ofdft +suffix autotest +calculation scf +esolver_type ofdft -symmetry 1 -pseudo_dir ../../PP_ORB/ -pseudo_rcut 16 -nspin 1 +symmetry 1 +pseudo_dir ../../PP_ORB/ +pseudo_rcut 16 +nspin 1 #Parameters (2.Iteration) -ecutwfc 20 -scf_nmax 50 +ecutwfc 20 +scf_nmax 50 #OFDFT -of_kinetic wt -of_method tn -of_full_pw 1 -of_full_pw_dim 0 +of_kinetic wt +of_method tn +of_full_pw 1 +of_full_pw_dim 0 #Parameters (3.Basis) -basis_type pw - +basis_type pw diff --git a/tests/07_OFDFT/04_OF_KE_CPN5/INPUT b/tests/07_OFDFT/04_OF_KE_CPN5/INPUT index 432af30174..bb013c5c6b 100644 --- a/tests/07_OFDFT/04_OF_KE_CPN5/INPUT +++ b/tests/07_OFDFT/04_OF_KE_CPN5/INPUT @@ -1,29 +1,28 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf -esolver_type ofdft -ntype 1 -symmetry 1 -out_chg 1 -pseudo_dir ../../PP_ORB/ -pseudo_rcut 16 +suffix autotest +calculation scf +esolver_type ofdft +ntype 1 +symmetry 1 +pseudo_dir ../../PP_ORB/ +pseudo_rcut 16 #Parameters (2.Iteration) -ecutwfc 20 -scf_nmax 200 +ecutwfc 20 +scf_nmax 200 #OFDFT -of_kinetic cpn5 -of_method tn -of_conv energy -of_tole 2e-6 -of_full_pw 1 -of_full_pw_dim 0 +of_kinetic cpn5 +of_method tn +of_conv energy +of_tole 2e-6 +of_full_pw 1 +of_full_pw_dim 0 #Parameters (3.Basis) -basis_type pw -of_ml_device cpu +basis_type pw +of_ml_device cpu # of_ml_feg 3 # of_ml_nkernel 5 # of_ml_chi_xi 0.6 0.8 1.0 1.5 3.0 diff --git a/tests/07_OFDFT/05_OF_KE_LKT/INPUT b/tests/07_OFDFT/05_OF_KE_LKT/INPUT index f1c65473a4..1e74214c75 100644 --- a/tests/07_OFDFT/05_OF_KE_LKT/INPUT +++ b/tests/07_OFDFT/05_OF_KE_LKT/INPUT @@ -1,28 +1,27 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf -esolver_type ofdft +suffix autotest +calculation scf +esolver_type ofdft -symmetry 1 -pseudo_dir ../../PP_ORB/ -pseudo_rcut 16 -nspin 1 -cal_force 1 -test_force 1 -cal_stress 1 -test_stress 1 +symmetry 1 +pseudo_dir ../../PP_ORB/ +pseudo_rcut 16 +nspin 1 +cal_force 1 +test_force 1 +cal_stress 1 +test_stress 1 #Parameters (2.Iteration) -ecutwfc 20 -scf_nmax 50 +ecutwfc 20 +scf_nmax 50 #OFDFT -of_kinetic lkt -of_method tn -of_conv energy -of_tole 2e-6 +of_kinetic lkt +of_method tn +of_conv energy +of_tole 2e-6 #Parameters (3.Basis) -basis_type pw - +basis_type pw diff --git a/tests/07_OFDFT/06_OF_KE_MPN/INPUT b/tests/07_OFDFT/06_OF_KE_MPN/INPUT index aca1a6227d..e846e2ce17 100644 --- a/tests/07_OFDFT/06_OF_KE_MPN/INPUT +++ b/tests/07_OFDFT/06_OF_KE_MPN/INPUT @@ -1,25 +1,25 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf -esolver_type ofdft +suffix autotest +calculation scf +esolver_type ofdft -symmetry 1 -pseudo_dir ../../PP_ORB/ -pseudo_rcut 16 +symmetry 1 +pseudo_dir ../../PP_ORB/ +pseudo_rcut 16 #Parameters (2.Iteration) -ecutwfc 20 -scf_nmax 100 -dft_functional XC_GGA_X_PBE+XC_GGA_C_PBE +ecutwfc 20 +scf_nmax 100 +dft_functional XC_GGA_X_PBE+XC_GGA_C_PBE #Parameters (3.Basis) -basis_type pw +basis_type pw #OFDFT -of_kinetic mpn -of_ml_device cpu +of_kinetic mpn +of_ml_device cpu #of_ml_chi_xi 1 #of_ml_chi_p 0.2 @@ -31,4 +31,4 @@ of_ml_device cpu #of_ml_tanhxi_nl 1 #of_ml_tanhp 1 #of_ml_tanhp_nl 1 -#of_ml_feg 3 \ No newline at end of file +#of_ml_feg 3 diff --git a/tests/07_OFDFT/07_OF_KE_TF/INPUT b/tests/07_OFDFT/07_OF_KE_TF/INPUT index 9f4014c61b..d3b3c66845 100644 --- a/tests/07_OFDFT/07_OF_KE_TF/INPUT +++ b/tests/07_OFDFT/07_OF_KE_TF/INPUT @@ -1,29 +1,28 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf -esolver_type ofdft +suffix autotest +calculation scf +esolver_type ofdft -symmetry 1 -pseudo_dir ../../PP_ORB/ -pseudo_rcut 16 -nspin 1 -cal_force 1 -test_force 1 -cal_stress 1 -test_stress 1 +symmetry 1 +pseudo_dir ../../PP_ORB/ +pseudo_rcut 16 +nspin 1 +cal_force 1 +test_force 1 +cal_stress 1 +test_stress 1 #Parameters (2.Iteration) -ecutwfc 20 -scf_nmax 50 +ecutwfc 20 +scf_nmax 50 #OFDFT -of_kinetic tf -of_method tn -of_conv energy -of_tole 2e-6 +of_kinetic tf +of_method tn +of_conv energy +of_tole 2e-6 #Parameters (3.Basis) -basis_type pw - +basis_type pw diff --git a/tests/07_OFDFT/08_OF_KE_TF+/INPUT b/tests/07_OFDFT/08_OF_KE_TF+/INPUT index 2371599920..e8a9f2c126 100644 --- a/tests/07_OFDFT/08_OF_KE_TF+/INPUT +++ b/tests/07_OFDFT/08_OF_KE_TF+/INPUT @@ -1,30 +1,29 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf -esolver_type ofdft +suffix autotest +calculation scf +esolver_type ofdft -symmetry 1 -pseudo_dir ../../PP_ORB/ -pseudo_rcut 16 -nspin 1 -cal_force 1 -test_force 1 -cal_stress 1 -test_stress 1 +symmetry 1 +pseudo_dir ../../PP_ORB/ +pseudo_rcut 16 +nspin 1 +cal_force 1 +test_force 1 +cal_stress 1 +test_stress 1 #Parameters (2.Iteration) -ecutwfc 20 -scf_nmax 50 +ecutwfc 20 +scf_nmax 50 #OFDFT -of_kinetic tf+ -of_vw_weight 0.111111111 -of_method tn -of_conv energy -of_tole 2e-6 +of_kinetic tf+ +of_vw_weight 0.111111111 +of_method tn +of_conv energy +of_tole 2e-6 #Parameters (3.Basis) -basis_type pw - +basis_type pw diff --git a/tests/07_OFDFT/09_OF_KE_WT/INPUT b/tests/07_OFDFT/09_OF_KE_WT/INPUT index c5ddddea3c..457d4ac9a5 100644 --- a/tests/07_OFDFT/09_OF_KE_WT/INPUT +++ b/tests/07_OFDFT/09_OF_KE_WT/INPUT @@ -1,28 +1,27 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf -esolver_type ofdft +suffix autotest +calculation scf +esolver_type ofdft -symmetry 1 -pseudo_dir ../../PP_ORB/ -pseudo_rcut 16 -nspin 1 -cal_force 1 -test_force 1 -cal_stress 1 -test_stress 1 +symmetry 1 +pseudo_dir ../../PP_ORB/ +pseudo_rcut 16 +nspin 1 +cal_force 1 +test_force 1 +cal_stress 1 +test_stress 1 #Parameters (2.Iteration) -ecutwfc 20 -scf_nmax 50 +ecutwfc 20 +scf_nmax 50 #OFDFT -of_kinetic wt -of_method tn -of_conv energy -of_tole 2e-6 +of_kinetic wt +of_method tn +of_conv energy +of_tole 2e-6 #Parameters (3.Basis) -basis_type pw - +basis_type pw diff --git a/tests/07_OFDFT/10_OF_KE_vW/INPUT b/tests/07_OFDFT/10_OF_KE_vW/INPUT index 6f2fa257d0..7bbbf196ef 100644 --- a/tests/07_OFDFT/10_OF_KE_vW/INPUT +++ b/tests/07_OFDFT/10_OF_KE_vW/INPUT @@ -1,28 +1,27 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf -esolver_type ofdft +suffix autotest +calculation scf +esolver_type ofdft -symmetry 1 -pseudo_dir ../../PP_ORB/ -pseudo_rcut 16 -nspin 1 -cal_force 1 -test_force 1 -cal_stress 1 -test_stress 1 +symmetry 1 +pseudo_dir ../../PP_ORB/ +pseudo_rcut 16 +nspin 1 +cal_force 1 +test_force 1 +cal_stress 1 +test_stress 1 #Parameters (2.Iteration) -ecutwfc 60 -scf_nmax 50 +ecutwfc 60 +scf_nmax 50 #OFDFT -of_kinetic vw -of_method tn -of_conv energy -of_tole 2e-6 +of_kinetic vw +of_method tn +of_conv energy +of_tole 2e-6 #Parameters (3.Basis) -basis_type pw - +basis_type pw diff --git a/tests/07_OFDFT/11_OF_TF_weight/INPUT b/tests/07_OFDFT/11_OF_TF_weight/INPUT index 09e0eac947..f0648b5acb 100644 --- a/tests/07_OFDFT/11_OF_TF_weight/INPUT +++ b/tests/07_OFDFT/11_OF_TF_weight/INPUT @@ -1,29 +1,28 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf -esolver_type ofdft +suffix autotest +calculation scf +esolver_type ofdft -symmetry 1 -pseudo_dir ../../PP_ORB/ -pseudo_rcut 16 -nspin 1 -cal_force 1 -test_force 1 -cal_stress 1 -test_stress 1 +symmetry 1 +pseudo_dir ../../PP_ORB/ +pseudo_rcut 16 +nspin 1 +cal_force 1 +test_force 1 +cal_stress 1 +test_stress 1 #Parameters (2.Iteration) -ecutwfc 20 -scf_nmax 50 +ecutwfc 20 +scf_nmax 50 #OFDFT -of_kinetic wt -of_tf_weight 1.1 -of_method tn -of_conv energy -of_tole 2e-6 +of_kinetic wt +of_tf_weight 1.1 +of_method tn +of_conv energy +of_tole 2e-6 #Parameters (3.Basis) -basis_type pw - +basis_type pw diff --git a/tests/07_OFDFT/12_OF_WT_HOLD/INPUT b/tests/07_OFDFT/12_OF_WT_HOLD/INPUT index 575db79b70..16edfaa168 100644 --- a/tests/07_OFDFT/12_OF_WT_HOLD/INPUT +++ b/tests/07_OFDFT/12_OF_WT_HOLD/INPUT @@ -1,29 +1,28 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf -esolver_type ofdft +suffix autotest +calculation scf +esolver_type ofdft -symmetry 1 -pseudo_dir ../../PP_ORB/ -pseudo_rcut 16 -nspin 1 -cal_force 1 -test_force 1 -cal_stress 1 -test_stress 1 +symmetry 1 +pseudo_dir ../../PP_ORB/ +pseudo_rcut 16 +nspin 1 +cal_force 1 +test_force 1 +cal_stress 1 +test_stress 1 #Parameters (2.Iteration) -ecutwfc 20 -scf_nmax 50 +ecutwfc 20 +scf_nmax 50 #OFDFT -of_kinetic wt -of_method tn -of_conv energy -of_tole 2e-6 -of_hold_rho0 1 +of_kinetic wt +of_method tn +of_conv energy +of_tole 2e-6 +of_hold_rho0 1 #Parameters (3.Basis) -basis_type pw - +basis_type pw diff --git a/tests/07_OFDFT/13_OF_WT_RHO0/INPUT b/tests/07_OFDFT/13_OF_WT_RHO0/INPUT index f1d8e39f85..6477d95707 100644 --- a/tests/07_OFDFT/13_OF_WT_RHO0/INPUT +++ b/tests/07_OFDFT/13_OF_WT_RHO0/INPUT @@ -1,29 +1,28 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf -esolver_type ofdft +suffix autotest +calculation scf +esolver_type ofdft -symmetry 1 -pseudo_dir ../../PP_ORB/ -pseudo_rcut 16 -nspin 1 -cal_force 1 -test_force 1 -cal_stress 1 -test_stress 1 +symmetry 1 +pseudo_dir ../../PP_ORB/ +pseudo_rcut 16 +nspin 1 +cal_force 1 +test_force 1 +cal_stress 1 +test_stress 1 #Parameters (2.Iteration) -ecutwfc 20 -scf_nmax 50 +ecutwfc 20 +scf_nmax 50 #OFDFT -of_kinetic wt -of_method tn -of_conv energy -of_tole 2e-6 -of_wt_rho0 1 +of_kinetic wt +of_method tn +of_conv energy +of_tole 2e-6 +of_wt_rho0 1 #Parameters (3.Basis) -basis_type pw - +basis_type pw diff --git a/tests/07_OFDFT/14_OF_WT_alphabeta/INPUT b/tests/07_OFDFT/14_OF_WT_alphabeta/INPUT index e052c49bd3..932ba0616d 100644 --- a/tests/07_OFDFT/14_OF_WT_alphabeta/INPUT +++ b/tests/07_OFDFT/14_OF_WT_alphabeta/INPUT @@ -1,30 +1,29 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf -esolver_type ofdft +suffix autotest +calculation scf +esolver_type ofdft -symmetry 1 -pseudo_dir ../../PP_ORB/ -pseudo_rcut 16 -nspin 1 -cal_force 1 -test_force 1 -cal_stress 1 -test_stress 1 +symmetry 1 +pseudo_dir ../../PP_ORB/ +pseudo_rcut 16 +nspin 1 +cal_force 1 +test_force 1 +cal_stress 1 +test_stress 1 #Parameters (2.Iteration) -ecutwfc 20 -scf_nmax 50 +ecutwfc 20 +scf_nmax 50 #OFDFT -of_kinetic wt -of_wt_alpha 0.9333333333333333 -of_wt_beta 0.7333333333333333 -of_method tn -of_conv energy -of_tole 2e-6 +of_kinetic wt +of_wt_alpha 0.9333333333333333 +of_wt_beta 0.7333333333333333 +of_method tn +of_conv energy +of_tole 2e-6 #Parameters (3.Basis) -basis_type pw - +basis_type pw diff --git a/tests/07_OFDFT/15_OF_WT_readKernel/INPUT b/tests/07_OFDFT/15_OF_WT_readKernel/INPUT index 7c1c1d4771..afd5fd2b52 100644 --- a/tests/07_OFDFT/15_OF_WT_readKernel/INPUT +++ b/tests/07_OFDFT/15_OF_WT_readKernel/INPUT @@ -1,26 +1,25 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf -esolver_type ofdft +suffix autotest +calculation scf +esolver_type ofdft -symmetry 1 -pseudo_dir ../../PP_ORB/ -pseudo_rcut 16 -nspin 1 +symmetry 1 +pseudo_dir ../../PP_ORB/ +pseudo_rcut 16 +nspin 1 #Parameters (2.Iteration) -ecutwfc 20 -scf_nmax 50 +ecutwfc 20 +scf_nmax 50 #OFDFT -of_kinetic wt -of_method tn -of_conv energy -of_tole 2e-6 -of_read_kernel 1 -of_kernel_file kernel.txt +of_kinetic wt +of_method tn +of_conv energy +of_tole 2e-6 +of_read_kernel 1 +of_kernel_file kernel.txt #Parameters (3.Basis) -basis_type pw - +basis_type pw diff --git a/tests/07_OFDFT/16_OF_vW_weight/INPUT b/tests/07_OFDFT/16_OF_vW_weight/INPUT index acf01a7db8..cf56a13509 100644 --- a/tests/07_OFDFT/16_OF_vW_weight/INPUT +++ b/tests/07_OFDFT/16_OF_vW_weight/INPUT @@ -1,29 +1,28 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf -esolver_type ofdft +suffix autotest +calculation scf +esolver_type ofdft -symmetry 1 -pseudo_dir ../../PP_ORB/ -pseudo_rcut 16 -nspin 1 -cal_force 1 -test_force 1 -cal_stress 1 -test_stress 1 +symmetry 1 +pseudo_dir ../../PP_ORB/ +pseudo_rcut 16 +nspin 1 +cal_force 1 +test_force 1 +cal_stress 1 +test_stress 1 #Parameters (2.Iteration) -ecutwfc 20 -scf_nmax 50 +ecutwfc 20 +scf_nmax 50 #OFDFT -of_kinetic wt -of_vw_weight 1.1 -of_method tn -of_conv energy -of_tole 2e-6 +of_kinetic wt +of_vw_weight 1.1 +of_method tn +of_conv energy +of_tole 2e-6 #Parameters (3.Basis) -basis_type pw - +basis_type pw diff --git a/tests/07_OFDFT/17_OF_CO_Energy/INPUT b/tests/07_OFDFT/17_OF_CO_Energy/INPUT index 33b054603f..54697e9f9e 100644 --- a/tests/07_OFDFT/17_OF_CO_Energy/INPUT +++ b/tests/07_OFDFT/17_OF_CO_Energy/INPUT @@ -1,28 +1,27 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf -esolver_type ofdft +suffix autotest +calculation scf +esolver_type ofdft -symmetry 1 -pseudo_dir ../../PP_ORB/ -pseudo_rcut 16 -nspin 1 +symmetry 1 +pseudo_dir ../../PP_ORB/ +pseudo_rcut 16 +nspin 1 #cal_force 1 #test_force 1 #cal_stress 1 #test_stress 1 #Parameters (2.Iteration) -ecutwfc 20 -scf_nmax 50 +ecutwfc 20 +scf_nmax 50 #OFDFT -of_kinetic wt -of_method tn -of_conv energy -of_tole 2e-8 +of_kinetic wt +of_method tn +of_conv energy +of_tole 2e-8 #Parameters (3.Basis) -basis_type pw - +basis_type pw diff --git a/tests/07_OFDFT/18_OF_CO_Potential/INPUT b/tests/07_OFDFT/18_OF_CO_Potential/INPUT index 2f0a158a2c..198927a4fa 100644 --- a/tests/07_OFDFT/18_OF_CO_Potential/INPUT +++ b/tests/07_OFDFT/18_OF_CO_Potential/INPUT @@ -1,24 +1,23 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf -esolver_type ofdft +suffix autotest +calculation scf +esolver_type ofdft -symmetry 1 -pseudo_dir ../../PP_ORB/ -pseudo_rcut 16 -nspin 1 +symmetry 1 +pseudo_dir ../../PP_ORB/ +pseudo_rcut 16 +nspin 1 #Parameters (2.Iteration) -ecutwfc 30 -scf_nmax 50 +ecutwfc 30 +scf_nmax 50 #OFDFT -of_kinetic wt -of_method tn -of_conv potential -of_tolp 1e-7 +of_kinetic wt +of_method tn +of_conv potential +of_tolp 1e-7 #Parameters (3.Basis) -basis_type pw - +basis_type pw diff --git a/tests/07_OFDFT/19_OF_FFT_fullpw_off/INPUT b/tests/07_OFDFT/19_OF_FFT_fullpw_off/INPUT index 6a05a0e796..e46298944d 100644 --- a/tests/07_OFDFT/19_OF_FFT_fullpw_off/INPUT +++ b/tests/07_OFDFT/19_OF_FFT_fullpw_off/INPUT @@ -1,23 +1,22 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf -esolver_type ofdft +suffix autotest +calculation scf +esolver_type ofdft -symmetry 1 -pseudo_dir ../../PP_ORB/ -pseudo_rcut 16 -nspin 1 +symmetry 1 +pseudo_dir ../../PP_ORB/ +pseudo_rcut 16 +nspin 1 #Parameters (2.Iteration) -ecutwfc 30 -scf_nmax 50 +ecutwfc 30 +scf_nmax 50 #OFDFT -of_kinetic wt -of_method tn -of_full_pw 0 +of_kinetic wt +of_method tn +of_full_pw 0 #Parameters (3.Basis) -basis_type pw - +basis_type pw diff --git a/tests/07_OFDFT/20_OF_FFT_fullpwdim_1/INPUT b/tests/07_OFDFT/20_OF_FFT_fullpwdim_1/INPUT index 18bd998ada..3a12574499 100644 --- a/tests/07_OFDFT/20_OF_FFT_fullpwdim_1/INPUT +++ b/tests/07_OFDFT/20_OF_FFT_fullpwdim_1/INPUT @@ -1,24 +1,23 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf -esolver_type ofdft +suffix autotest +calculation scf +esolver_type ofdft -symmetry 1 -pseudo_dir ../../PP_ORB/ -pseudo_rcut 16 -nspin 1 +symmetry 1 +pseudo_dir ../../PP_ORB/ +pseudo_rcut 16 +nspin 1 #Parameters (2.Iteration) -ecutwfc 20 -scf_nmax 50 +ecutwfc 20 +scf_nmax 50 #OFDFT -of_kinetic wt -of_method tn -of_full_pw 1 -of_full_pw_dim 1 +of_kinetic wt +of_method tn +of_full_pw 1 +of_full_pw_dim 1 #Parameters (3.Basis) -basis_type pw - +basis_type pw diff --git a/tests/07_OFDFT/21_OF_FFT_fullpwdim_2/INPUT b/tests/07_OFDFT/21_OF_FFT_fullpwdim_2/INPUT index ce92eb9a09..6e0db632dd 100644 --- a/tests/07_OFDFT/21_OF_FFT_fullpwdim_2/INPUT +++ b/tests/07_OFDFT/21_OF_FFT_fullpwdim_2/INPUT @@ -1,24 +1,23 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf -esolver_type ofdft +suffix autotest +calculation scf +esolver_type ofdft -symmetry 1 -pseudo_dir ../../PP_ORB/ -pseudo_rcut 16 -nspin 1 +symmetry 1 +pseudo_dir ../../PP_ORB/ +pseudo_rcut 16 +nspin 1 #Parameters (2.Iteration) -ecutwfc 20 -scf_nmax 50 +ecutwfc 20 +scf_nmax 50 #OFDFT -of_kinetic wt -of_method tn -of_full_pw 1 -of_full_pw_dim 2 +of_kinetic wt +of_method tn +of_full_pw 1 +of_full_pw_dim 2 #Parameters (3.Basis) -basis_type pw - +basis_type pw diff --git a/tests/07_OFDFT/22_OF_LibxcPBE/INPUT b/tests/07_OFDFT/22_OF_LibxcPBE/INPUT index a13b1bfaac..892e6b4906 100644 --- a/tests/07_OFDFT/22_OF_LibxcPBE/INPUT +++ b/tests/07_OFDFT/22_OF_LibxcPBE/INPUT @@ -1,25 +1,25 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf -esolver_type ofdft +suffix autotest +calculation scf +esolver_type ofdft -symmetry 1 -pseudo_dir ../../PP_ORB/ -pseudo_rcut 16 -nspin 1 +symmetry 1 +pseudo_dir ../../PP_ORB/ +pseudo_rcut 16 +nspin 1 #Parameters (2.Iteration) -ecutwfc 20 -scf_nmax 50 +ecutwfc 20 +scf_nmax 50 #OFDFT -of_kinetic wt -of_method tn -of_conv energy -of_tole 2e-6 +of_kinetic wt +of_method tn +of_conv energy +of_tole 2e-6 #Parameters (3.Basis) -basis_type pw +basis_type pw -dft_functional XC_GGA_X_PBE+XC_GGA_C_PBE \ No newline at end of file +dft_functional XC_GGA_X_PBE+XC_GGA_C_PBE diff --git a/tests/07_OFDFT/23_OF_LPS/INPUT b/tests/07_OFDFT/23_OF_LPS/INPUT index 3c0bc2e6c5..7f60d8c693 100644 --- a/tests/07_OFDFT/23_OF_LPS/INPUT +++ b/tests/07_OFDFT/23_OF_LPS/INPUT @@ -1,28 +1,27 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf -esolver_type ofdft +suffix autotest +calculation scf +esolver_type ofdft -symmetry 1 -pseudo_dir ../../PP_ORB -pseudo_rcut 10 -nspin 1 -cal_force 1 -test_force 1 -cal_stress 1 -test_stress 1 +symmetry 1 +pseudo_dir ../../PP_ORB +pseudo_rcut 10 +nspin 1 +cal_force 1 +test_force 1 +cal_stress 1 +test_stress 1 #Parameters (2.Iteration) -ecutwfc 20 -scf_nmax 50 +ecutwfc 20 +scf_nmax 50 #OFDFT -of_kinetic wt -of_method tn -of_conv energy -of_tole 2e-6 +of_kinetic wt +of_method tn +of_conv energy +of_tole 2e-10 #Parameters (3.Basis) -basis_type pw - +basis_type pw diff --git a/tests/07_OFDFT/23_OF_LPS/result.ref b/tests/07_OFDFT/23_OF_LPS/result.ref index db38ca5101..98a09f87f3 100644 --- a/tests/07_OFDFT/23_OF_LPS/result.ref +++ b/tests/07_OFDFT/23_OF_LPS/result.ref @@ -1,8 +1,8 @@ -etotref -55.9081453813626368 -etotperatomref -55.9081453814 +etotref -55.9081453854520234 +etotperatomref -55.9081453855 totalforceref 0.000000 -totalstressref 282.735417 +totalstressref 282.762102 pointgroupref O_h spacegroupref O_h nksibzref 1 -totaltimeref 0.54 +totaltimeref 0.96 diff --git a/tests/07_OFDFT/24_OF_out_elf/INPUT b/tests/07_OFDFT/24_OF_out_elf/INPUT index 94b23cd9d1..ed5a839613 100644 --- a/tests/07_OFDFT/24_OF_out_elf/INPUT +++ b/tests/07_OFDFT/24_OF_out_elf/INPUT @@ -1,25 +1,25 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf -esolver_type ofdft +suffix autotest +calculation scf +esolver_type ofdft -symmetry 1 -pseudo_dir ../../PP_ORB/ -pseudo_rcut 16 -nspin 1 +symmetry 1 +pseudo_dir ../../PP_ORB/ +pseudo_rcut 16 +nspin 1 #Parameters (2.Iteration) -ecutwfc 20 -scf_nmax 50 +ecutwfc 20 +scf_nmax 50 #OFDFT -of_kinetic wt -of_method tn -of_conv energy -of_tole 2e-6 +of_kinetic wt +of_method tn +of_conv energy +of_tole 2e-6 #Parameters (3.Basis) -basis_type pw +basis_type pw -out_elf 1 +out_elf 1 diff --git a/tests/07_OFDFT/24_OF_out_elf/refELF.cube b/tests/07_OFDFT/24_OF_out_elf/refELF.cube deleted file mode 100644 index b5b44de5fb..0000000000 --- a/tests/07_OFDFT/24_OF_out_elf/refELF.cube +++ /dev/null @@ -1,682 +0,0 @@ -STEP: 0 Cubefile created from ABACUS. Inner loop is z, followed by y and x -1 (nspin) -1 0.0 0.0 0.0 -15 0.000000 0.250080 0.250080 -15 0.250080 0.000000 0.250080 -15 0.250080 0.250080 0.000000 - 13 3.000000 0.000000 0.000000 0.000000 - 2.474e-02 4.023e-02 1.191e-01 3.125e-01 5.123e-01 5.931e-01 - 5.921e-01 5.743e-01 5.743e-01 5.921e-01 5.931e-01 5.123e-01 - 3.125e-01 1.191e-01 4.023e-02 - 4.023e-02 8.701e-02 2.335e-01 4.446e-01 5.723e-01 5.958e-01 - 5.777e-01 5.665e-01 5.777e-01 5.958e-01 5.723e-01 4.445e-01 - 2.336e-01 8.700e-02 4.072e-02 - 1.191e-01 2.335e-01 4.158e-01 5.524e-01 5.920e-01 5.767e-01 - 5.564e-01 5.565e-01 5.767e-01 5.920e-01 5.524e-01 4.158e-01 - 2.333e-01 1.187e-01 8.700e-02 - 3.125e-01 4.446e-01 5.524e-01 5.892e-01 5.743e-01 5.475e-01 - 5.361e-01 5.475e-01 5.743e-01 5.892e-01 5.523e-01 4.448e-01 - 3.128e-01 2.333e-01 2.336e-01 - 5.123e-01 5.723e-01 5.920e-01 5.743e-01 5.439e-01 5.238e-01 - 5.238e-01 5.439e-01 5.743e-01 5.920e-01 5.723e-01 5.121e-01 - 4.448e-01 4.158e-01 4.445e-01 - 5.931e-01 5.958e-01 5.767e-01 5.475e-01 5.238e-01 5.151e-01 - 5.238e-01 5.475e-01 5.767e-01 5.958e-01 5.932e-01 5.723e-01 - 5.523e-01 5.524e-01 5.723e-01 - 5.921e-01 5.777e-01 5.564e-01 5.361e-01 5.238e-01 5.238e-01 - 5.361e-01 5.564e-01 5.777e-01 5.921e-01 5.958e-01 5.920e-01 - 5.892e-01 5.920e-01 5.958e-01 - 5.743e-01 5.665e-01 5.565e-01 5.475e-01 5.439e-01 5.475e-01 - 5.564e-01 5.665e-01 5.743e-01 5.777e-01 5.767e-01 5.743e-01 - 5.743e-01 5.767e-01 5.777e-01 - 5.743e-01 5.777e-01 5.767e-01 5.743e-01 5.743e-01 5.767e-01 - 5.777e-01 5.743e-01 5.665e-01 5.564e-01 5.475e-01 5.439e-01 - 5.475e-01 5.565e-01 5.665e-01 - 5.921e-01 5.958e-01 5.920e-01 5.892e-01 5.920e-01 5.958e-01 - 5.921e-01 5.777e-01 5.564e-01 5.361e-01 5.238e-01 5.238e-01 - 5.361e-01 5.564e-01 5.777e-01 - 5.931e-01 5.723e-01 5.524e-01 5.523e-01 5.723e-01 5.932e-01 - 5.958e-01 5.767e-01 5.475e-01 5.238e-01 5.151e-01 5.238e-01 - 5.475e-01 5.767e-01 5.958e-01 - 5.123e-01 4.445e-01 4.158e-01 4.448e-01 5.121e-01 5.723e-01 - 5.920e-01 5.743e-01 5.439e-01 5.238e-01 5.238e-01 5.439e-01 - 5.743e-01 5.920e-01 5.723e-01 - 3.125e-01 2.336e-01 2.333e-01 3.128e-01 4.448e-01 5.523e-01 - 5.892e-01 5.743e-01 5.475e-01 5.361e-01 5.475e-01 5.743e-01 - 5.892e-01 5.524e-01 4.446e-01 - 1.191e-01 8.700e-02 1.187e-01 2.333e-01 4.158e-01 5.524e-01 - 5.920e-01 5.767e-01 5.565e-01 5.564e-01 5.767e-01 5.920e-01 - 5.524e-01 4.158e-01 2.335e-01 - 4.023e-02 4.072e-02 8.700e-02 2.336e-01 4.445e-01 5.723e-01 - 5.958e-01 5.777e-01 5.665e-01 5.777e-01 5.958e-01 5.723e-01 - 4.446e-01 2.335e-01 8.701e-02 - 4.023e-02 8.701e-02 2.335e-01 4.446e-01 5.723e-01 5.958e-01 - 5.777e-01 5.665e-01 5.777e-01 5.958e-01 5.723e-01 4.445e-01 - 2.336e-01 8.700e-02 4.072e-02 - 8.701e-02 1.939e-01 3.867e-01 5.450e-01 5.980e-01 5.877e-01 - 5.685e-01 5.685e-01 5.877e-01 5.980e-01 5.451e-01 3.866e-01 - 1.939e-01 8.766e-02 6.094e-02 - 2.335e-01 3.867e-01 5.316e-01 5.945e-01 5.910e-01 5.675e-01 - 5.564e-01 5.675e-01 5.910e-01 5.945e-01 5.316e-01 3.869e-01 - 2.329e-01 1.534e-01 1.536e-01 - 4.446e-01 5.450e-01 5.945e-01 5.914e-01 5.655e-01 5.462e-01 - 5.462e-01 5.655e-01 5.914e-01 5.945e-01 5.450e-01 4.448e-01 - 3.473e-01 3.092e-01 3.470e-01 - 5.723e-01 5.980e-01 5.910e-01 5.655e-01 5.421e-01 5.333e-01 - 5.421e-01 5.655e-01 5.910e-01 5.980e-01 5.722e-01 5.234e-01 - 4.842e-01 4.842e-01 5.235e-01 - 5.958e-01 5.877e-01 5.675e-01 5.462e-01 5.333e-01 5.333e-01 - 5.462e-01 5.675e-01 5.877e-01 5.958e-01 5.877e-01 5.719e-01 - 5.639e-01 5.719e-01 5.877e-01 - 5.777e-01 5.685e-01 5.564e-01 5.462e-01 5.421e-01 5.462e-01 - 5.564e-01 5.685e-01 5.777e-01 5.803e-01 5.765e-01 5.716e-01 - 5.716e-01 5.765e-01 5.803e-01 - 5.665e-01 5.685e-01 5.675e-01 5.655e-01 5.655e-01 5.675e-01 - 5.685e-01 5.665e-01 5.608e-01 5.525e-01 5.444e-01 5.409e-01 - 5.444e-01 5.525e-01 5.609e-01 - 5.777e-01 5.877e-01 5.910e-01 5.914e-01 5.910e-01 5.877e-01 - 5.777e-01 5.608e-01 5.404e-01 5.216e-01 5.101e-01 5.101e-01 - 5.216e-01 5.404e-01 5.609e-01 - 5.958e-01 5.980e-01 5.945e-01 5.945e-01 5.980e-01 5.958e-01 - 5.803e-01 5.525e-01 5.216e-01 4.982e-01 4.896e-01 4.982e-01 - 5.216e-01 5.525e-01 5.803e-01 - 5.723e-01 5.451e-01 5.316e-01 5.450e-01 5.722e-01 5.877e-01 - 5.765e-01 5.444e-01 5.101e-01 4.896e-01 4.896e-01 5.101e-01 - 5.444e-01 5.765e-01 5.877e-01 - 4.445e-01 3.866e-01 3.869e-01 4.448e-01 5.234e-01 5.719e-01 - 5.716e-01 5.409e-01 5.101e-01 4.982e-01 5.101e-01 5.409e-01 - 5.716e-01 5.719e-01 5.235e-01 - 2.336e-01 1.939e-01 2.329e-01 3.473e-01 4.842e-01 5.639e-01 - 5.716e-01 5.444e-01 5.216e-01 5.216e-01 5.444e-01 5.716e-01 - 5.639e-01 4.842e-01 3.470e-01 - 8.700e-02 8.766e-02 1.534e-01 3.092e-01 4.842e-01 5.719e-01 - 5.765e-01 5.525e-01 5.404e-01 5.525e-01 5.765e-01 5.719e-01 - 4.842e-01 3.093e-01 1.536e-01 - 4.072e-02 6.094e-02 1.536e-01 3.470e-01 5.235e-01 5.877e-01 - 5.803e-01 5.609e-01 5.609e-01 5.803e-01 5.877e-01 5.235e-01 - 3.470e-01 1.536e-01 6.094e-02 - 1.191e-01 2.335e-01 4.158e-01 5.524e-01 5.920e-01 5.767e-01 - 5.564e-01 5.565e-01 5.767e-01 5.920e-01 5.524e-01 4.158e-01 - 2.333e-01 1.187e-01 8.700e-02 - 2.335e-01 3.867e-01 5.316e-01 5.945e-01 5.910e-01 5.675e-01 - 5.564e-01 5.675e-01 5.910e-01 5.945e-01 5.316e-01 3.869e-01 - 2.329e-01 1.534e-01 1.536e-01 - 4.158e-01 5.316e-01 5.936e-01 5.967e-01 5.729e-01 5.538e-01 - 5.538e-01 5.729e-01 5.967e-01 5.936e-01 5.317e-01 4.160e-01 - 3.090e-01 2.689e-01 3.093e-01 - 5.524e-01 5.945e-01 5.967e-01 5.743e-01 5.514e-01 5.425e-01 - 5.514e-01 5.743e-01 5.967e-01 5.945e-01 5.523e-01 4.843e-01 - 4.328e-01 4.328e-01 4.842e-01 - 5.920e-01 5.910e-01 5.729e-01 5.514e-01 5.382e-01 5.382e-01 - 5.514e-01 5.729e-01 5.910e-01 5.920e-01 5.719e-01 5.440e-01 - 5.309e-01 5.440e-01 5.719e-01 - 5.767e-01 5.675e-01 5.538e-01 5.425e-01 5.382e-01 5.425e-01 - 5.538e-01 5.675e-01 5.767e-01 5.765e-01 5.679e-01 5.592e-01 - 5.592e-01 5.679e-01 5.765e-01 - 5.564e-01 5.564e-01 5.538e-01 5.514e-01 5.514e-01 5.538e-01 - 5.564e-01 5.564e-01 5.525e-01 5.450e-01 5.368e-01 5.332e-01 - 5.368e-01 5.450e-01 5.525e-01 - 5.565e-01 5.675e-01 5.729e-01 5.743e-01 5.729e-01 5.675e-01 - 5.564e-01 5.404e-01 5.219e-01 5.049e-01 4.943e-01 4.943e-01 - 5.049e-01 5.219e-01 5.404e-01 - 5.767e-01 5.910e-01 5.967e-01 5.967e-01 5.910e-01 5.767e-01 - 5.525e-01 5.219e-01 4.916e-01 4.693e-01 4.610e-01 4.693e-01 - 4.916e-01 5.219e-01 5.525e-01 - 5.920e-01 5.945e-01 5.936e-01 5.945e-01 5.920e-01 5.765e-01 - 5.450e-01 5.049e-01 4.693e-01 4.489e-01 4.489e-01 4.693e-01 - 5.049e-01 5.450e-01 5.765e-01 - 5.524e-01 5.316e-01 5.317e-01 5.523e-01 5.719e-01 5.679e-01 - 5.368e-01 4.943e-01 4.610e-01 4.489e-01 4.610e-01 4.943e-01 - 5.368e-01 5.679e-01 5.719e-01 - 4.158e-01 3.869e-01 4.160e-01 4.843e-01 5.440e-01 5.592e-01 - 5.332e-01 4.943e-01 4.693e-01 4.693e-01 4.943e-01 5.332e-01 - 5.592e-01 5.440e-01 4.842e-01 - 2.333e-01 2.329e-01 3.090e-01 4.328e-01 5.309e-01 5.592e-01 - 5.368e-01 5.049e-01 4.916e-01 5.049e-01 5.368e-01 5.592e-01 - 5.309e-01 4.328e-01 3.092e-01 - 1.187e-01 1.534e-01 2.689e-01 4.328e-01 5.440e-01 5.679e-01 - 5.450e-01 5.219e-01 5.219e-01 5.450e-01 5.679e-01 5.440e-01 - 4.328e-01 2.689e-01 1.534e-01 - 8.700e-02 1.536e-01 3.093e-01 4.842e-01 5.719e-01 5.765e-01 - 5.525e-01 5.404e-01 5.525e-01 5.765e-01 5.719e-01 4.842e-01 - 3.092e-01 1.534e-01 8.766e-02 - 3.125e-01 4.446e-01 5.524e-01 5.892e-01 5.743e-01 5.475e-01 - 5.361e-01 5.475e-01 5.743e-01 5.892e-01 5.523e-01 4.448e-01 - 3.128e-01 2.333e-01 2.336e-01 - 4.446e-01 5.450e-01 5.945e-01 5.914e-01 5.655e-01 5.462e-01 - 5.462e-01 5.655e-01 5.914e-01 5.945e-01 5.450e-01 4.448e-01 - 3.473e-01 3.092e-01 3.470e-01 - 5.524e-01 5.945e-01 5.967e-01 5.743e-01 5.514e-01 5.425e-01 - 5.514e-01 5.743e-01 5.967e-01 5.945e-01 5.523e-01 4.843e-01 - 4.328e-01 4.328e-01 4.842e-01 - 5.892e-01 5.914e-01 5.743e-01 5.528e-01 5.396e-01 5.396e-01 - 5.528e-01 5.743e-01 5.914e-01 5.892e-01 5.639e-01 5.309e-01 - 5.158e-01 5.309e-01 5.639e-01 - 5.743e-01 5.655e-01 5.514e-01 5.396e-01 5.353e-01 5.396e-01 - 5.514e-01 5.655e-01 5.743e-01 5.716e-01 5.592e-01 5.478e-01 - 5.478e-01 5.592e-01 5.716e-01 - 5.475e-01 5.462e-01 5.425e-01 5.396e-01 5.396e-01 5.425e-01 - 5.462e-01 5.475e-01 5.444e-01 5.368e-01 5.282e-01 5.243e-01 - 5.282e-01 5.368e-01 5.444e-01 - 5.361e-01 5.462e-01 5.514e-01 5.528e-01 5.514e-01 5.462e-01 - 5.361e-01 5.216e-01 5.049e-01 4.895e-01 4.799e-01 4.799e-01 - 4.895e-01 5.049e-01 5.216e-01 - 5.475e-01 5.655e-01 5.743e-01 5.743e-01 5.655e-01 5.475e-01 - 5.216e-01 4.916e-01 4.632e-01 4.424e-01 4.347e-01 4.424e-01 - 4.632e-01 4.916e-01 5.216e-01 - 5.743e-01 5.914e-01 5.967e-01 5.914e-01 5.743e-01 5.444e-01 - 5.049e-01 4.632e-01 4.286e-01 4.091e-01 4.091e-01 4.286e-01 - 4.632e-01 5.049e-01 5.444e-01 - 5.892e-01 5.945e-01 5.945e-01 5.892e-01 5.716e-01 5.368e-01 - 4.895e-01 4.424e-01 4.091e-01 3.972e-01 4.091e-01 4.424e-01 - 4.895e-01 5.368e-01 5.716e-01 - 5.523e-01 5.450e-01 5.523e-01 5.639e-01 5.592e-01 5.282e-01 - 4.799e-01 4.347e-01 4.091e-01 4.091e-01 4.347e-01 4.799e-01 - 5.282e-01 5.592e-01 5.639e-01 - 4.448e-01 4.448e-01 4.843e-01 5.309e-01 5.478e-01 5.243e-01 - 4.799e-01 4.424e-01 4.286e-01 4.424e-01 4.799e-01 5.243e-01 - 5.478e-01 5.309e-01 4.842e-01 - 3.128e-01 3.473e-01 4.328e-01 5.158e-01 5.478e-01 5.282e-01 - 4.895e-01 4.632e-01 4.632e-01 4.895e-01 5.282e-01 5.478e-01 - 5.158e-01 4.328e-01 3.473e-01 - 2.333e-01 3.092e-01 4.328e-01 5.309e-01 5.592e-01 5.368e-01 - 5.049e-01 4.916e-01 5.049e-01 5.368e-01 5.592e-01 5.309e-01 - 4.328e-01 3.090e-01 2.329e-01 - 2.336e-01 3.470e-01 4.842e-01 5.639e-01 5.716e-01 5.444e-01 - 5.216e-01 5.216e-01 5.444e-01 5.716e-01 5.639e-01 4.842e-01 - 3.473e-01 2.329e-01 1.939e-01 - 5.123e-01 5.723e-01 5.920e-01 5.743e-01 5.439e-01 5.238e-01 - 5.238e-01 5.439e-01 5.743e-01 5.920e-01 5.723e-01 5.121e-01 - 4.448e-01 4.158e-01 4.445e-01 - 5.723e-01 5.980e-01 5.910e-01 5.655e-01 5.421e-01 5.333e-01 - 5.421e-01 5.655e-01 5.910e-01 5.980e-01 5.722e-01 5.234e-01 - 4.842e-01 4.842e-01 5.235e-01 - 5.920e-01 5.910e-01 5.729e-01 5.514e-01 5.382e-01 5.382e-01 - 5.514e-01 5.729e-01 5.910e-01 5.920e-01 5.719e-01 5.440e-01 - 5.309e-01 5.440e-01 5.719e-01 - 5.743e-01 5.655e-01 5.514e-01 5.396e-01 5.353e-01 5.396e-01 - 5.514e-01 5.655e-01 5.743e-01 5.716e-01 5.592e-01 5.478e-01 - 5.478e-01 5.592e-01 5.716e-01 - 5.439e-01 5.421e-01 5.382e-01 5.353e-01 5.353e-01 5.382e-01 - 5.421e-01 5.439e-01 5.409e-01 5.332e-01 5.243e-01 5.204e-01 - 5.243e-01 5.332e-01 5.409e-01 - 5.238e-01 5.333e-01 5.382e-01 5.396e-01 5.382e-01 5.333e-01 - 5.238e-01 5.101e-01 4.943e-01 4.799e-01 4.710e-01 4.710e-01 - 4.799e-01 4.943e-01 5.101e-01 - 5.238e-01 5.421e-01 5.514e-01 5.514e-01 5.421e-01 5.238e-01 - 4.982e-01 4.693e-01 4.424e-01 4.233e-01 4.163e-01 4.233e-01 - 4.424e-01 4.693e-01 4.982e-01 - 5.439e-01 5.655e-01 5.729e-01 5.655e-01 5.439e-01 5.101e-01 - 4.693e-01 4.286e-01 3.959e-01 3.777e-01 3.777e-01 3.959e-01 - 4.286e-01 4.693e-01 5.101e-01 - 5.743e-01 5.910e-01 5.910e-01 5.743e-01 5.409e-01 4.943e-01 - 4.424e-01 3.959e-01 3.641e-01 3.528e-01 3.641e-01 3.959e-01 - 4.424e-01 4.943e-01 5.409e-01 - 5.920e-01 5.980e-01 5.920e-01 5.716e-01 5.332e-01 4.799e-01 - 4.233e-01 3.777e-01 3.528e-01 3.529e-01 3.777e-01 4.233e-01 - 4.799e-01 5.332e-01 5.716e-01 - 5.723e-01 5.722e-01 5.719e-01 5.592e-01 5.243e-01 4.710e-01 - 4.163e-01 3.777e-01 3.641e-01 3.777e-01 4.163e-01 4.710e-01 - 5.243e-01 5.592e-01 5.719e-01 - 5.121e-01 5.234e-01 5.440e-01 5.478e-01 5.204e-01 4.710e-01 - 4.233e-01 3.959e-01 3.959e-01 4.233e-01 4.710e-01 5.204e-01 - 5.478e-01 5.440e-01 5.234e-01 - 4.448e-01 4.842e-01 5.309e-01 5.478e-01 5.243e-01 4.799e-01 - 4.424e-01 4.286e-01 4.424e-01 4.799e-01 5.243e-01 5.478e-01 - 5.309e-01 4.843e-01 4.448e-01 - 4.158e-01 4.842e-01 5.440e-01 5.592e-01 5.332e-01 4.943e-01 - 4.693e-01 4.693e-01 4.943e-01 5.332e-01 5.592e-01 5.440e-01 - 4.843e-01 4.160e-01 3.869e-01 - 4.445e-01 5.235e-01 5.719e-01 5.716e-01 5.409e-01 5.101e-01 - 4.982e-01 5.101e-01 5.409e-01 5.716e-01 5.719e-01 5.234e-01 - 4.448e-01 3.869e-01 3.866e-01 - 5.931e-01 5.958e-01 5.767e-01 5.475e-01 5.238e-01 5.151e-01 - 5.238e-01 5.475e-01 5.767e-01 5.958e-01 5.932e-01 5.723e-01 - 5.523e-01 5.524e-01 5.723e-01 - 5.958e-01 5.877e-01 5.675e-01 5.462e-01 5.333e-01 5.333e-01 - 5.462e-01 5.675e-01 5.877e-01 5.958e-01 5.877e-01 5.719e-01 - 5.639e-01 5.719e-01 5.877e-01 - 5.767e-01 5.675e-01 5.538e-01 5.425e-01 5.382e-01 5.425e-01 - 5.538e-01 5.675e-01 5.767e-01 5.765e-01 5.679e-01 5.592e-01 - 5.592e-01 5.679e-01 5.765e-01 - 5.475e-01 5.462e-01 5.425e-01 5.396e-01 5.396e-01 5.425e-01 - 5.462e-01 5.475e-01 5.444e-01 5.368e-01 5.282e-01 5.243e-01 - 5.282e-01 5.368e-01 5.444e-01 - 5.238e-01 5.333e-01 5.382e-01 5.396e-01 5.382e-01 5.333e-01 - 5.238e-01 5.101e-01 4.943e-01 4.799e-01 4.710e-01 4.710e-01 - 4.799e-01 4.943e-01 5.101e-01 - 5.151e-01 5.333e-01 5.425e-01 5.425e-01 5.333e-01 5.151e-01 - 4.896e-01 4.610e-01 4.347e-01 4.163e-01 4.097e-01 4.163e-01 - 4.347e-01 4.610e-01 4.896e-01 - 5.238e-01 5.462e-01 5.538e-01 5.462e-01 5.238e-01 4.896e-01 - 4.489e-01 4.091e-01 3.777e-01 3.605e-01 3.605e-01 3.777e-01 - 4.091e-01 4.489e-01 4.896e-01 - 5.475e-01 5.675e-01 5.675e-01 5.475e-01 5.101e-01 4.610e-01 - 4.091e-01 3.641e-01 3.340e-01 3.234e-01 3.340e-01 3.641e-01 - 4.091e-01 4.610e-01 5.101e-01 - 5.767e-01 5.877e-01 5.767e-01 5.444e-01 4.943e-01 4.347e-01 - 3.777e-01 3.340e-01 3.106e-01 3.106e-01 3.340e-01 3.777e-01 - 4.347e-01 4.943e-01 5.444e-01 - 5.958e-01 5.958e-01 5.765e-01 5.368e-01 4.799e-01 4.163e-01 - 3.605e-01 3.234e-01 3.106e-01 3.234e-01 3.605e-01 4.163e-01 - 4.799e-01 5.368e-01 5.765e-01 - 5.932e-01 5.877e-01 5.679e-01 5.282e-01 4.710e-01 4.097e-01 - 3.605e-01 3.340e-01 3.340e-01 3.605e-01 4.097e-01 4.710e-01 - 5.282e-01 5.679e-01 5.877e-01 - 5.723e-01 5.719e-01 5.592e-01 5.243e-01 4.710e-01 4.163e-01 - 3.777e-01 3.641e-01 3.777e-01 4.163e-01 4.710e-01 5.243e-01 - 5.592e-01 5.719e-01 5.722e-01 - 5.523e-01 5.639e-01 5.592e-01 5.282e-01 4.799e-01 4.347e-01 - 4.091e-01 4.091e-01 4.347e-01 4.799e-01 5.282e-01 5.592e-01 - 5.639e-01 5.523e-01 5.450e-01 - 5.524e-01 5.719e-01 5.679e-01 5.368e-01 4.943e-01 4.610e-01 - 4.489e-01 4.610e-01 4.943e-01 5.368e-01 5.679e-01 5.719e-01 - 5.523e-01 5.317e-01 5.316e-01 - 5.723e-01 5.877e-01 5.765e-01 5.444e-01 5.101e-01 4.896e-01 - 4.896e-01 5.101e-01 5.444e-01 5.765e-01 5.877e-01 5.722e-01 - 5.450e-01 5.316e-01 5.451e-01 - 5.921e-01 5.777e-01 5.564e-01 5.361e-01 5.238e-01 5.238e-01 - 5.361e-01 5.564e-01 5.777e-01 5.921e-01 5.958e-01 5.920e-01 - 5.892e-01 5.920e-01 5.958e-01 - 5.777e-01 5.685e-01 5.564e-01 5.462e-01 5.421e-01 5.462e-01 - 5.564e-01 5.685e-01 5.777e-01 5.803e-01 5.765e-01 5.716e-01 - 5.716e-01 5.765e-01 5.803e-01 - 5.564e-01 5.564e-01 5.538e-01 5.514e-01 5.514e-01 5.538e-01 - 5.564e-01 5.564e-01 5.525e-01 5.450e-01 5.368e-01 5.332e-01 - 5.368e-01 5.450e-01 5.525e-01 - 5.361e-01 5.462e-01 5.514e-01 5.528e-01 5.514e-01 5.462e-01 - 5.361e-01 5.216e-01 5.049e-01 4.895e-01 4.799e-01 4.799e-01 - 4.895e-01 5.049e-01 5.216e-01 - 5.238e-01 5.421e-01 5.514e-01 5.514e-01 5.421e-01 5.238e-01 - 4.982e-01 4.693e-01 4.424e-01 4.233e-01 4.163e-01 4.233e-01 - 4.424e-01 4.693e-01 4.982e-01 - 5.238e-01 5.462e-01 5.538e-01 5.462e-01 5.238e-01 4.896e-01 - 4.489e-01 4.091e-01 3.777e-01 3.605e-01 3.605e-01 3.777e-01 - 4.091e-01 4.489e-01 4.896e-01 - 5.361e-01 5.564e-01 5.564e-01 5.361e-01 4.982e-01 4.489e-01 - 3.972e-01 3.528e-01 3.234e-01 3.132e-01 3.234e-01 3.529e-01 - 3.972e-01 4.489e-01 4.982e-01 - 5.564e-01 5.685e-01 5.564e-01 5.216e-01 4.693e-01 4.091e-01 - 3.528e-01 3.106e-01 2.883e-01 2.883e-01 3.106e-01 3.528e-01 - 4.091e-01 4.693e-01 5.216e-01 - 5.777e-01 5.777e-01 5.525e-01 5.049e-01 4.424e-01 3.777e-01 - 3.234e-01 2.883e-01 2.763e-01 2.883e-01 3.234e-01 3.777e-01 - 4.424e-01 5.049e-01 5.525e-01 - 5.921e-01 5.803e-01 5.450e-01 4.895e-01 4.233e-01 3.605e-01 - 3.132e-01 2.883e-01 2.883e-01 3.132e-01 3.605e-01 4.233e-01 - 4.895e-01 5.450e-01 5.803e-01 - 5.958e-01 5.765e-01 5.368e-01 4.799e-01 4.163e-01 3.605e-01 - 3.234e-01 3.106e-01 3.234e-01 3.605e-01 4.163e-01 4.799e-01 - 5.368e-01 5.765e-01 5.958e-01 - 5.920e-01 5.716e-01 5.332e-01 4.799e-01 4.233e-01 3.777e-01 - 3.529e-01 3.528e-01 3.777e-01 4.233e-01 4.799e-01 5.332e-01 - 5.716e-01 5.920e-01 5.980e-01 - 5.892e-01 5.716e-01 5.368e-01 4.895e-01 4.424e-01 4.091e-01 - 3.972e-01 4.091e-01 4.424e-01 4.895e-01 5.368e-01 5.716e-01 - 5.892e-01 5.945e-01 5.945e-01 - 5.920e-01 5.765e-01 5.450e-01 5.049e-01 4.693e-01 4.489e-01 - 4.489e-01 4.693e-01 5.049e-01 5.450e-01 5.765e-01 5.920e-01 - 5.945e-01 5.936e-01 5.945e-01 - 5.958e-01 5.803e-01 5.525e-01 5.216e-01 4.982e-01 4.896e-01 - 4.982e-01 5.216e-01 5.525e-01 5.803e-01 5.958e-01 5.980e-01 - 5.945e-01 5.945e-01 5.980e-01 - 5.743e-01 5.665e-01 5.565e-01 5.475e-01 5.439e-01 5.475e-01 - 5.564e-01 5.665e-01 5.743e-01 5.777e-01 5.767e-01 5.743e-01 - 5.743e-01 5.767e-01 5.777e-01 - 5.665e-01 5.685e-01 5.675e-01 5.655e-01 5.655e-01 5.675e-01 - 5.685e-01 5.665e-01 5.608e-01 5.525e-01 5.444e-01 5.409e-01 - 5.444e-01 5.525e-01 5.609e-01 - 5.565e-01 5.675e-01 5.729e-01 5.743e-01 5.729e-01 5.675e-01 - 5.564e-01 5.404e-01 5.219e-01 5.049e-01 4.943e-01 4.943e-01 - 5.049e-01 5.219e-01 5.404e-01 - 5.475e-01 5.655e-01 5.743e-01 5.743e-01 5.655e-01 5.475e-01 - 5.216e-01 4.916e-01 4.632e-01 4.424e-01 4.347e-01 4.424e-01 - 4.632e-01 4.916e-01 5.216e-01 - 5.439e-01 5.655e-01 5.729e-01 5.655e-01 5.439e-01 5.101e-01 - 4.693e-01 4.286e-01 3.959e-01 3.777e-01 3.777e-01 3.959e-01 - 4.286e-01 4.693e-01 5.101e-01 - 5.475e-01 5.675e-01 5.675e-01 5.475e-01 5.101e-01 4.610e-01 - 4.091e-01 3.641e-01 3.340e-01 3.234e-01 3.340e-01 3.641e-01 - 4.091e-01 4.610e-01 5.101e-01 - 5.564e-01 5.685e-01 5.564e-01 5.216e-01 4.693e-01 4.091e-01 - 3.528e-01 3.106e-01 2.883e-01 2.883e-01 3.106e-01 3.528e-01 - 4.091e-01 4.693e-01 5.216e-01 - 5.665e-01 5.665e-01 5.404e-01 4.916e-01 4.286e-01 3.641e-01 - 3.106e-01 2.763e-01 2.646e-01 2.763e-01 3.106e-01 3.641e-01 - 4.286e-01 4.916e-01 5.404e-01 - 5.743e-01 5.608e-01 5.219e-01 4.632e-01 3.959e-01 3.340e-01 - 2.883e-01 2.646e-01 2.646e-01 2.883e-01 3.340e-01 3.959e-01 - 4.632e-01 5.219e-01 5.608e-01 - 5.777e-01 5.525e-01 5.049e-01 4.424e-01 3.777e-01 3.234e-01 - 2.883e-01 2.763e-01 2.883e-01 3.234e-01 3.777e-01 4.424e-01 - 5.049e-01 5.525e-01 5.777e-01 - 5.767e-01 5.444e-01 4.943e-01 4.347e-01 3.777e-01 3.340e-01 - 3.106e-01 3.106e-01 3.340e-01 3.777e-01 4.347e-01 4.943e-01 - 5.444e-01 5.767e-01 5.877e-01 - 5.743e-01 5.409e-01 4.943e-01 4.424e-01 3.959e-01 3.641e-01 - 3.528e-01 3.641e-01 3.959e-01 4.424e-01 4.943e-01 5.409e-01 - 5.743e-01 5.910e-01 5.910e-01 - 5.743e-01 5.444e-01 5.049e-01 4.632e-01 4.286e-01 4.091e-01 - 4.091e-01 4.286e-01 4.632e-01 5.049e-01 5.444e-01 5.743e-01 - 5.914e-01 5.967e-01 5.914e-01 - 5.767e-01 5.525e-01 5.219e-01 4.916e-01 4.693e-01 4.610e-01 - 4.693e-01 4.916e-01 5.219e-01 5.525e-01 5.767e-01 5.910e-01 - 5.967e-01 5.967e-01 5.910e-01 - 5.777e-01 5.609e-01 5.404e-01 5.216e-01 5.101e-01 5.101e-01 - 5.216e-01 5.404e-01 5.608e-01 5.777e-01 5.877e-01 5.910e-01 - 5.914e-01 5.910e-01 5.877e-01 - 5.743e-01 5.777e-01 5.767e-01 5.743e-01 5.743e-01 5.767e-01 - 5.777e-01 5.743e-01 5.665e-01 5.564e-01 5.475e-01 5.439e-01 - 5.475e-01 5.565e-01 5.665e-01 - 5.777e-01 5.877e-01 5.910e-01 5.914e-01 5.910e-01 5.877e-01 - 5.777e-01 5.608e-01 5.404e-01 5.216e-01 5.101e-01 5.101e-01 - 5.216e-01 5.404e-01 5.609e-01 - 5.767e-01 5.910e-01 5.967e-01 5.967e-01 5.910e-01 5.767e-01 - 5.525e-01 5.219e-01 4.916e-01 4.693e-01 4.610e-01 4.693e-01 - 4.916e-01 5.219e-01 5.525e-01 - 5.743e-01 5.914e-01 5.967e-01 5.914e-01 5.743e-01 5.444e-01 - 5.049e-01 4.632e-01 4.286e-01 4.091e-01 4.091e-01 4.286e-01 - 4.632e-01 5.049e-01 5.444e-01 - 5.743e-01 5.910e-01 5.910e-01 5.743e-01 5.409e-01 4.943e-01 - 4.424e-01 3.959e-01 3.641e-01 3.528e-01 3.641e-01 3.959e-01 - 4.424e-01 4.943e-01 5.409e-01 - 5.767e-01 5.877e-01 5.767e-01 5.444e-01 4.943e-01 4.347e-01 - 3.777e-01 3.340e-01 3.106e-01 3.106e-01 3.340e-01 3.777e-01 - 4.347e-01 4.943e-01 5.444e-01 - 5.777e-01 5.777e-01 5.525e-01 5.049e-01 4.424e-01 3.777e-01 - 3.234e-01 2.883e-01 2.763e-01 2.883e-01 3.234e-01 3.777e-01 - 4.424e-01 5.049e-01 5.525e-01 - 5.743e-01 5.608e-01 5.219e-01 4.632e-01 3.959e-01 3.340e-01 - 2.883e-01 2.646e-01 2.646e-01 2.883e-01 3.340e-01 3.959e-01 - 4.632e-01 5.219e-01 5.608e-01 - 5.665e-01 5.404e-01 4.916e-01 4.286e-01 3.641e-01 3.106e-01 - 2.763e-01 2.646e-01 2.763e-01 3.106e-01 3.641e-01 4.286e-01 - 4.916e-01 5.404e-01 5.665e-01 - 5.564e-01 5.216e-01 4.693e-01 4.091e-01 3.528e-01 3.106e-01 - 2.883e-01 2.883e-01 3.106e-01 3.528e-01 4.091e-01 4.693e-01 - 5.216e-01 5.564e-01 5.685e-01 - 5.475e-01 5.101e-01 4.610e-01 4.091e-01 3.641e-01 3.340e-01 - 3.234e-01 3.340e-01 3.641e-01 4.091e-01 4.610e-01 5.101e-01 - 5.475e-01 5.675e-01 5.675e-01 - 5.439e-01 5.101e-01 4.693e-01 4.286e-01 3.959e-01 3.777e-01 - 3.777e-01 3.959e-01 4.286e-01 4.693e-01 5.101e-01 5.439e-01 - 5.655e-01 5.729e-01 5.655e-01 - 5.475e-01 5.216e-01 4.916e-01 4.632e-01 4.424e-01 4.347e-01 - 4.424e-01 4.632e-01 4.916e-01 5.216e-01 5.475e-01 5.655e-01 - 5.743e-01 5.743e-01 5.655e-01 - 5.565e-01 5.404e-01 5.219e-01 5.049e-01 4.943e-01 4.943e-01 - 5.049e-01 5.219e-01 5.404e-01 5.564e-01 5.675e-01 5.729e-01 - 5.743e-01 5.729e-01 5.675e-01 - 5.665e-01 5.609e-01 5.525e-01 5.444e-01 5.409e-01 5.444e-01 - 5.525e-01 5.608e-01 5.665e-01 5.685e-01 5.675e-01 5.655e-01 - 5.655e-01 5.675e-01 5.685e-01 - 5.921e-01 5.958e-01 5.920e-01 5.892e-01 5.920e-01 5.958e-01 - 5.921e-01 5.777e-01 5.564e-01 5.361e-01 5.238e-01 5.238e-01 - 5.361e-01 5.564e-01 5.777e-01 - 5.958e-01 5.980e-01 5.945e-01 5.945e-01 5.980e-01 5.958e-01 - 5.803e-01 5.525e-01 5.216e-01 4.982e-01 4.896e-01 4.982e-01 - 5.216e-01 5.525e-01 5.803e-01 - 5.920e-01 5.945e-01 5.936e-01 5.945e-01 5.920e-01 5.765e-01 - 5.450e-01 5.049e-01 4.693e-01 4.489e-01 4.489e-01 4.693e-01 - 5.049e-01 5.450e-01 5.765e-01 - 5.892e-01 5.945e-01 5.945e-01 5.892e-01 5.716e-01 5.368e-01 - 4.895e-01 4.424e-01 4.091e-01 3.972e-01 4.091e-01 4.424e-01 - 4.895e-01 5.368e-01 5.716e-01 - 5.920e-01 5.980e-01 5.920e-01 5.716e-01 5.332e-01 4.799e-01 - 4.233e-01 3.777e-01 3.528e-01 3.529e-01 3.777e-01 4.233e-01 - 4.799e-01 5.332e-01 5.716e-01 - 5.958e-01 5.958e-01 5.765e-01 5.368e-01 4.799e-01 4.163e-01 - 3.605e-01 3.234e-01 3.106e-01 3.234e-01 3.605e-01 4.163e-01 - 4.799e-01 5.368e-01 5.765e-01 - 5.921e-01 5.803e-01 5.450e-01 4.895e-01 4.233e-01 3.605e-01 - 3.132e-01 2.883e-01 2.883e-01 3.132e-01 3.605e-01 4.233e-01 - 4.895e-01 5.450e-01 5.803e-01 - 5.777e-01 5.525e-01 5.049e-01 4.424e-01 3.777e-01 3.234e-01 - 2.883e-01 2.763e-01 2.883e-01 3.234e-01 3.777e-01 4.424e-01 - 5.049e-01 5.525e-01 5.777e-01 - 5.564e-01 5.216e-01 4.693e-01 4.091e-01 3.528e-01 3.106e-01 - 2.883e-01 2.883e-01 3.106e-01 3.528e-01 4.091e-01 4.693e-01 - 5.216e-01 5.564e-01 5.685e-01 - 5.361e-01 4.982e-01 4.489e-01 3.972e-01 3.529e-01 3.234e-01 - 3.132e-01 3.234e-01 3.528e-01 3.972e-01 4.489e-01 4.982e-01 - 5.361e-01 5.564e-01 5.564e-01 - 5.238e-01 4.896e-01 4.489e-01 4.091e-01 3.777e-01 3.605e-01 - 3.605e-01 3.777e-01 4.091e-01 4.489e-01 4.896e-01 5.238e-01 - 5.462e-01 5.538e-01 5.462e-01 - 5.238e-01 4.982e-01 4.693e-01 4.424e-01 4.233e-01 4.163e-01 - 4.233e-01 4.424e-01 4.693e-01 4.982e-01 5.238e-01 5.421e-01 - 5.514e-01 5.514e-01 5.421e-01 - 5.361e-01 5.216e-01 5.049e-01 4.895e-01 4.799e-01 4.799e-01 - 4.895e-01 5.049e-01 5.216e-01 5.361e-01 5.462e-01 5.514e-01 - 5.528e-01 5.514e-01 5.462e-01 - 5.564e-01 5.525e-01 5.450e-01 5.368e-01 5.332e-01 5.368e-01 - 5.450e-01 5.525e-01 5.564e-01 5.564e-01 5.538e-01 5.514e-01 - 5.514e-01 5.538e-01 5.564e-01 - 5.777e-01 5.803e-01 5.765e-01 5.716e-01 5.716e-01 5.765e-01 - 5.803e-01 5.777e-01 5.685e-01 5.564e-01 5.462e-01 5.421e-01 - 5.462e-01 5.564e-01 5.685e-01 - 5.931e-01 5.723e-01 5.524e-01 5.523e-01 5.723e-01 5.932e-01 - 5.958e-01 5.767e-01 5.475e-01 5.238e-01 5.151e-01 5.238e-01 - 5.475e-01 5.767e-01 5.958e-01 - 5.723e-01 5.451e-01 5.316e-01 5.450e-01 5.722e-01 5.877e-01 - 5.765e-01 5.444e-01 5.101e-01 4.896e-01 4.896e-01 5.101e-01 - 5.444e-01 5.765e-01 5.877e-01 - 5.524e-01 5.316e-01 5.317e-01 5.523e-01 5.719e-01 5.679e-01 - 5.368e-01 4.943e-01 4.610e-01 4.489e-01 4.610e-01 4.943e-01 - 5.368e-01 5.679e-01 5.719e-01 - 5.523e-01 5.450e-01 5.523e-01 5.639e-01 5.592e-01 5.282e-01 - 4.799e-01 4.347e-01 4.091e-01 4.091e-01 4.347e-01 4.799e-01 - 5.282e-01 5.592e-01 5.639e-01 - 5.723e-01 5.722e-01 5.719e-01 5.592e-01 5.243e-01 4.710e-01 - 4.163e-01 3.777e-01 3.641e-01 3.777e-01 4.163e-01 4.710e-01 - 5.243e-01 5.592e-01 5.719e-01 - 5.932e-01 5.877e-01 5.679e-01 5.282e-01 4.710e-01 4.097e-01 - 3.605e-01 3.340e-01 3.340e-01 3.605e-01 4.097e-01 4.710e-01 - 5.282e-01 5.679e-01 5.877e-01 - 5.958e-01 5.765e-01 5.368e-01 4.799e-01 4.163e-01 3.605e-01 - 3.234e-01 3.106e-01 3.234e-01 3.605e-01 4.163e-01 4.799e-01 - 5.368e-01 5.765e-01 5.958e-01 - 5.767e-01 5.444e-01 4.943e-01 4.347e-01 3.777e-01 3.340e-01 - 3.106e-01 3.106e-01 3.340e-01 3.777e-01 4.347e-01 4.943e-01 - 5.444e-01 5.767e-01 5.877e-01 - 5.475e-01 5.101e-01 4.610e-01 4.091e-01 3.641e-01 3.340e-01 - 3.234e-01 3.340e-01 3.641e-01 4.091e-01 4.610e-01 5.101e-01 - 5.475e-01 5.675e-01 5.675e-01 - 5.238e-01 4.896e-01 4.489e-01 4.091e-01 3.777e-01 3.605e-01 - 3.605e-01 3.777e-01 4.091e-01 4.489e-01 4.896e-01 5.238e-01 - 5.462e-01 5.538e-01 5.462e-01 - 5.151e-01 4.896e-01 4.610e-01 4.347e-01 4.163e-01 4.097e-01 - 4.163e-01 4.347e-01 4.610e-01 4.896e-01 5.151e-01 5.333e-01 - 5.425e-01 5.425e-01 5.333e-01 - 5.238e-01 5.101e-01 4.943e-01 4.799e-01 4.710e-01 4.710e-01 - 4.799e-01 4.943e-01 5.101e-01 5.238e-01 5.333e-01 5.382e-01 - 5.396e-01 5.382e-01 5.333e-01 - 5.475e-01 5.444e-01 5.368e-01 5.282e-01 5.243e-01 5.282e-01 - 5.368e-01 5.444e-01 5.475e-01 5.462e-01 5.425e-01 5.396e-01 - 5.396e-01 5.425e-01 5.462e-01 - 5.767e-01 5.765e-01 5.679e-01 5.592e-01 5.592e-01 5.679e-01 - 5.765e-01 5.767e-01 5.675e-01 5.538e-01 5.425e-01 5.382e-01 - 5.425e-01 5.538e-01 5.675e-01 - 5.958e-01 5.877e-01 5.719e-01 5.639e-01 5.719e-01 5.877e-01 - 5.958e-01 5.877e-01 5.675e-01 5.462e-01 5.333e-01 5.333e-01 - 5.462e-01 5.675e-01 5.877e-01 - 5.123e-01 4.445e-01 4.158e-01 4.448e-01 5.121e-01 5.723e-01 - 5.920e-01 5.743e-01 5.439e-01 5.238e-01 5.238e-01 5.439e-01 - 5.743e-01 5.920e-01 5.723e-01 - 4.445e-01 3.866e-01 3.869e-01 4.448e-01 5.234e-01 5.719e-01 - 5.716e-01 5.409e-01 5.101e-01 4.982e-01 5.101e-01 5.409e-01 - 5.716e-01 5.719e-01 5.235e-01 - 4.158e-01 3.869e-01 4.160e-01 4.843e-01 5.440e-01 5.592e-01 - 5.332e-01 4.943e-01 4.693e-01 4.693e-01 4.943e-01 5.332e-01 - 5.592e-01 5.440e-01 4.842e-01 - 4.448e-01 4.448e-01 4.843e-01 5.309e-01 5.478e-01 5.243e-01 - 4.799e-01 4.424e-01 4.286e-01 4.424e-01 4.799e-01 5.243e-01 - 5.478e-01 5.309e-01 4.842e-01 - 5.121e-01 5.234e-01 5.440e-01 5.478e-01 5.204e-01 4.710e-01 - 4.233e-01 3.959e-01 3.959e-01 4.233e-01 4.710e-01 5.204e-01 - 5.478e-01 5.440e-01 5.234e-01 - 5.723e-01 5.719e-01 5.592e-01 5.243e-01 4.710e-01 4.163e-01 - 3.777e-01 3.641e-01 3.777e-01 4.163e-01 4.710e-01 5.243e-01 - 5.592e-01 5.719e-01 5.722e-01 - 5.920e-01 5.716e-01 5.332e-01 4.799e-01 4.233e-01 3.777e-01 - 3.529e-01 3.528e-01 3.777e-01 4.233e-01 4.799e-01 5.332e-01 - 5.716e-01 5.920e-01 5.980e-01 - 5.743e-01 5.409e-01 4.943e-01 4.424e-01 3.959e-01 3.641e-01 - 3.528e-01 3.641e-01 3.959e-01 4.424e-01 4.943e-01 5.409e-01 - 5.743e-01 5.910e-01 5.910e-01 - 5.439e-01 5.101e-01 4.693e-01 4.286e-01 3.959e-01 3.777e-01 - 3.777e-01 3.959e-01 4.286e-01 4.693e-01 5.101e-01 5.439e-01 - 5.655e-01 5.729e-01 5.655e-01 - 5.238e-01 4.982e-01 4.693e-01 4.424e-01 4.233e-01 4.163e-01 - 4.233e-01 4.424e-01 4.693e-01 4.982e-01 5.238e-01 5.421e-01 - 5.514e-01 5.514e-01 5.421e-01 - 5.238e-01 5.101e-01 4.943e-01 4.799e-01 4.710e-01 4.710e-01 - 4.799e-01 4.943e-01 5.101e-01 5.238e-01 5.333e-01 5.382e-01 - 5.396e-01 5.382e-01 5.333e-01 - 5.439e-01 5.409e-01 5.332e-01 5.243e-01 5.204e-01 5.243e-01 - 5.332e-01 5.409e-01 5.439e-01 5.421e-01 5.382e-01 5.353e-01 - 5.353e-01 5.382e-01 5.421e-01 - 5.743e-01 5.716e-01 5.592e-01 5.478e-01 5.478e-01 5.592e-01 - 5.716e-01 5.743e-01 5.655e-01 5.514e-01 5.396e-01 5.353e-01 - 5.396e-01 5.514e-01 5.655e-01 - 5.920e-01 5.719e-01 5.440e-01 5.309e-01 5.440e-01 5.719e-01 - 5.920e-01 5.910e-01 5.729e-01 5.514e-01 5.382e-01 5.382e-01 - 5.514e-01 5.729e-01 5.910e-01 - 5.723e-01 5.235e-01 4.842e-01 4.842e-01 5.234e-01 5.722e-01 - 5.980e-01 5.910e-01 5.655e-01 5.421e-01 5.333e-01 5.421e-01 - 5.655e-01 5.910e-01 5.980e-01 - 3.125e-01 2.336e-01 2.333e-01 3.128e-01 4.448e-01 5.523e-01 - 5.892e-01 5.743e-01 5.475e-01 5.361e-01 5.475e-01 5.743e-01 - 5.892e-01 5.524e-01 4.446e-01 - 2.336e-01 1.939e-01 2.329e-01 3.473e-01 4.842e-01 5.639e-01 - 5.716e-01 5.444e-01 5.216e-01 5.216e-01 5.444e-01 5.716e-01 - 5.639e-01 4.842e-01 3.470e-01 - 2.333e-01 2.329e-01 3.090e-01 4.328e-01 5.309e-01 5.592e-01 - 5.368e-01 5.049e-01 4.916e-01 5.049e-01 5.368e-01 5.592e-01 - 5.309e-01 4.328e-01 3.092e-01 - 3.128e-01 3.473e-01 4.328e-01 5.158e-01 5.478e-01 5.282e-01 - 4.895e-01 4.632e-01 4.632e-01 4.895e-01 5.282e-01 5.478e-01 - 5.158e-01 4.328e-01 3.473e-01 - 4.448e-01 4.842e-01 5.309e-01 5.478e-01 5.243e-01 4.799e-01 - 4.424e-01 4.286e-01 4.424e-01 4.799e-01 5.243e-01 5.478e-01 - 5.309e-01 4.843e-01 4.448e-01 - 5.523e-01 5.639e-01 5.592e-01 5.282e-01 4.799e-01 4.347e-01 - 4.091e-01 4.091e-01 4.347e-01 4.799e-01 5.282e-01 5.592e-01 - 5.639e-01 5.523e-01 5.450e-01 - 5.892e-01 5.716e-01 5.368e-01 4.895e-01 4.424e-01 4.091e-01 - 3.972e-01 4.091e-01 4.424e-01 4.895e-01 5.368e-01 5.716e-01 - 5.892e-01 5.945e-01 5.945e-01 - 5.743e-01 5.444e-01 5.049e-01 4.632e-01 4.286e-01 4.091e-01 - 4.091e-01 4.286e-01 4.632e-01 5.049e-01 5.444e-01 5.743e-01 - 5.914e-01 5.967e-01 5.914e-01 - 5.475e-01 5.216e-01 4.916e-01 4.632e-01 4.424e-01 4.347e-01 - 4.424e-01 4.632e-01 4.916e-01 5.216e-01 5.475e-01 5.655e-01 - 5.743e-01 5.743e-01 5.655e-01 - 5.361e-01 5.216e-01 5.049e-01 4.895e-01 4.799e-01 4.799e-01 - 4.895e-01 5.049e-01 5.216e-01 5.361e-01 5.462e-01 5.514e-01 - 5.528e-01 5.514e-01 5.462e-01 - 5.475e-01 5.444e-01 5.368e-01 5.282e-01 5.243e-01 5.282e-01 - 5.368e-01 5.444e-01 5.475e-01 5.462e-01 5.425e-01 5.396e-01 - 5.396e-01 5.425e-01 5.462e-01 - 5.743e-01 5.716e-01 5.592e-01 5.478e-01 5.478e-01 5.592e-01 - 5.716e-01 5.743e-01 5.655e-01 5.514e-01 5.396e-01 5.353e-01 - 5.396e-01 5.514e-01 5.655e-01 - 5.892e-01 5.639e-01 5.309e-01 5.158e-01 5.309e-01 5.639e-01 - 5.892e-01 5.914e-01 5.743e-01 5.528e-01 5.396e-01 5.396e-01 - 5.528e-01 5.743e-01 5.914e-01 - 5.524e-01 4.842e-01 4.328e-01 4.328e-01 4.843e-01 5.523e-01 - 5.945e-01 5.967e-01 5.743e-01 5.514e-01 5.425e-01 5.514e-01 - 5.743e-01 5.967e-01 5.945e-01 - 4.446e-01 3.470e-01 3.092e-01 3.473e-01 4.448e-01 5.450e-01 - 5.945e-01 5.914e-01 5.655e-01 5.462e-01 5.462e-01 5.655e-01 - 5.914e-01 5.945e-01 5.450e-01 - 1.191e-01 8.700e-02 1.187e-01 2.333e-01 4.158e-01 5.524e-01 - 5.920e-01 5.767e-01 5.565e-01 5.564e-01 5.767e-01 5.920e-01 - 5.524e-01 4.158e-01 2.335e-01 - 8.700e-02 8.766e-02 1.534e-01 3.092e-01 4.842e-01 5.719e-01 - 5.765e-01 5.525e-01 5.404e-01 5.525e-01 5.765e-01 5.719e-01 - 4.842e-01 3.093e-01 1.536e-01 - 1.187e-01 1.534e-01 2.689e-01 4.328e-01 5.440e-01 5.679e-01 - 5.450e-01 5.219e-01 5.219e-01 5.450e-01 5.679e-01 5.440e-01 - 4.328e-01 2.689e-01 1.534e-01 - 2.333e-01 3.092e-01 4.328e-01 5.309e-01 5.592e-01 5.368e-01 - 5.049e-01 4.916e-01 5.049e-01 5.368e-01 5.592e-01 5.309e-01 - 4.328e-01 3.090e-01 2.329e-01 - 4.158e-01 4.842e-01 5.440e-01 5.592e-01 5.332e-01 4.943e-01 - 4.693e-01 4.693e-01 4.943e-01 5.332e-01 5.592e-01 5.440e-01 - 4.843e-01 4.160e-01 3.869e-01 - 5.524e-01 5.719e-01 5.679e-01 5.368e-01 4.943e-01 4.610e-01 - 4.489e-01 4.610e-01 4.943e-01 5.368e-01 5.679e-01 5.719e-01 - 5.523e-01 5.317e-01 5.316e-01 - 5.920e-01 5.765e-01 5.450e-01 5.049e-01 4.693e-01 4.489e-01 - 4.489e-01 4.693e-01 5.049e-01 5.450e-01 5.765e-01 5.920e-01 - 5.945e-01 5.936e-01 5.945e-01 - 5.767e-01 5.525e-01 5.219e-01 4.916e-01 4.693e-01 4.610e-01 - 4.693e-01 4.916e-01 5.219e-01 5.525e-01 5.767e-01 5.910e-01 - 5.967e-01 5.967e-01 5.910e-01 - 5.565e-01 5.404e-01 5.219e-01 5.049e-01 4.943e-01 4.943e-01 - 5.049e-01 5.219e-01 5.404e-01 5.564e-01 5.675e-01 5.729e-01 - 5.743e-01 5.729e-01 5.675e-01 - 5.564e-01 5.525e-01 5.450e-01 5.368e-01 5.332e-01 5.368e-01 - 5.450e-01 5.525e-01 5.564e-01 5.564e-01 5.538e-01 5.514e-01 - 5.514e-01 5.538e-01 5.564e-01 - 5.767e-01 5.765e-01 5.679e-01 5.592e-01 5.592e-01 5.679e-01 - 5.765e-01 5.767e-01 5.675e-01 5.538e-01 5.425e-01 5.382e-01 - 5.425e-01 5.538e-01 5.675e-01 - 5.920e-01 5.719e-01 5.440e-01 5.309e-01 5.440e-01 5.719e-01 - 5.920e-01 5.910e-01 5.729e-01 5.514e-01 5.382e-01 5.382e-01 - 5.514e-01 5.729e-01 5.910e-01 - 5.524e-01 4.842e-01 4.328e-01 4.328e-01 4.843e-01 5.523e-01 - 5.945e-01 5.967e-01 5.743e-01 5.514e-01 5.425e-01 5.514e-01 - 5.743e-01 5.967e-01 5.945e-01 - 4.158e-01 3.093e-01 2.689e-01 3.090e-01 4.160e-01 5.317e-01 - 5.936e-01 5.967e-01 5.729e-01 5.538e-01 5.538e-01 5.729e-01 - 5.967e-01 5.936e-01 5.316e-01 - 2.335e-01 1.536e-01 1.534e-01 2.329e-01 3.869e-01 5.316e-01 - 5.945e-01 5.910e-01 5.675e-01 5.564e-01 5.675e-01 5.910e-01 - 5.945e-01 5.316e-01 3.867e-01 - 4.023e-02 4.072e-02 8.700e-02 2.336e-01 4.445e-01 5.723e-01 - 5.958e-01 5.777e-01 5.665e-01 5.777e-01 5.958e-01 5.723e-01 - 4.446e-01 2.335e-01 8.701e-02 - 4.072e-02 6.094e-02 1.536e-01 3.470e-01 5.235e-01 5.877e-01 - 5.803e-01 5.609e-01 5.609e-01 5.803e-01 5.877e-01 5.235e-01 - 3.470e-01 1.536e-01 6.094e-02 - 8.700e-02 1.536e-01 3.093e-01 4.842e-01 5.719e-01 5.765e-01 - 5.525e-01 5.404e-01 5.525e-01 5.765e-01 5.719e-01 4.842e-01 - 3.092e-01 1.534e-01 8.766e-02 - 2.336e-01 3.470e-01 4.842e-01 5.639e-01 5.716e-01 5.444e-01 - 5.216e-01 5.216e-01 5.444e-01 5.716e-01 5.639e-01 4.842e-01 - 3.473e-01 2.329e-01 1.939e-01 - 4.445e-01 5.235e-01 5.719e-01 5.716e-01 5.409e-01 5.101e-01 - 4.982e-01 5.101e-01 5.409e-01 5.716e-01 5.719e-01 5.234e-01 - 4.448e-01 3.869e-01 3.866e-01 - 5.723e-01 5.877e-01 5.765e-01 5.444e-01 5.101e-01 4.896e-01 - 4.896e-01 5.101e-01 5.444e-01 5.765e-01 5.877e-01 5.722e-01 - 5.450e-01 5.316e-01 5.451e-01 - 5.958e-01 5.803e-01 5.525e-01 5.216e-01 4.982e-01 4.896e-01 - 4.982e-01 5.216e-01 5.525e-01 5.803e-01 5.958e-01 5.980e-01 - 5.945e-01 5.945e-01 5.980e-01 - 5.777e-01 5.609e-01 5.404e-01 5.216e-01 5.101e-01 5.101e-01 - 5.216e-01 5.404e-01 5.608e-01 5.777e-01 5.877e-01 5.910e-01 - 5.914e-01 5.910e-01 5.877e-01 - 5.665e-01 5.609e-01 5.525e-01 5.444e-01 5.409e-01 5.444e-01 - 5.525e-01 5.608e-01 5.665e-01 5.685e-01 5.675e-01 5.655e-01 - 5.655e-01 5.675e-01 5.685e-01 - 5.777e-01 5.803e-01 5.765e-01 5.716e-01 5.716e-01 5.765e-01 - 5.803e-01 5.777e-01 5.685e-01 5.564e-01 5.462e-01 5.421e-01 - 5.462e-01 5.564e-01 5.685e-01 - 5.958e-01 5.877e-01 5.719e-01 5.639e-01 5.719e-01 5.877e-01 - 5.958e-01 5.877e-01 5.675e-01 5.462e-01 5.333e-01 5.333e-01 - 5.462e-01 5.675e-01 5.877e-01 - 5.723e-01 5.235e-01 4.842e-01 4.842e-01 5.234e-01 5.722e-01 - 5.980e-01 5.910e-01 5.655e-01 5.421e-01 5.333e-01 5.421e-01 - 5.655e-01 5.910e-01 5.980e-01 - 4.446e-01 3.470e-01 3.092e-01 3.473e-01 4.448e-01 5.450e-01 - 5.945e-01 5.914e-01 5.655e-01 5.462e-01 5.462e-01 5.655e-01 - 5.914e-01 5.945e-01 5.450e-01 - 2.335e-01 1.536e-01 1.534e-01 2.329e-01 3.869e-01 5.316e-01 - 5.945e-01 5.910e-01 5.675e-01 5.564e-01 5.675e-01 5.910e-01 - 5.945e-01 5.316e-01 3.867e-01 - 8.701e-02 6.094e-02 8.766e-02 1.939e-01 3.866e-01 5.451e-01 - 5.980e-01 5.877e-01 5.685e-01 5.685e-01 5.877e-01 5.980e-01 - 5.450e-01 3.867e-01 1.939e-01 diff --git a/tests/07_OFDFT/24_OF_out_elf/refelf.cube b/tests/07_OFDFT/24_OF_out_elf/refelf.cube new file mode 100644 index 0000000000..18e6d4470a --- /dev/null +++ b/tests/07_OFDFT/24_OF_out_elf/refelf.cube @@ -0,0 +1,682 @@ +Ionic_Step 1 Cubefile created from ABACUS. Inner loop is z, followed by y and x +1 # number of spin directions +1 0.0 0.0 0.0 +15 0.000000 0.250080 0.250080 +15 0.250080 0.000000 0.250080 +15 0.250080 0.250080 0.000000 + 13 3.000000 0.000000 0.000000 0.000000 + 2.474e-02 4.023e-02 1.191e-01 3.125e-01 5.123e-01 5.931e-01 + 5.921e-01 5.743e-01 5.743e-01 5.921e-01 5.931e-01 5.123e-01 + 3.125e-01 1.191e-01 4.023e-02 + 4.023e-02 8.701e-02 2.335e-01 4.446e-01 5.723e-01 5.958e-01 + 5.777e-01 5.665e-01 5.777e-01 5.958e-01 5.723e-01 4.445e-01 + 2.336e-01 8.700e-02 4.072e-02 + 1.191e-01 2.335e-01 4.158e-01 5.524e-01 5.920e-01 5.767e-01 + 5.564e-01 5.565e-01 5.767e-01 5.920e-01 5.524e-01 4.158e-01 + 2.333e-01 1.187e-01 8.700e-02 + 3.125e-01 4.446e-01 5.524e-01 5.892e-01 5.743e-01 5.475e-01 + 5.361e-01 5.475e-01 5.743e-01 5.892e-01 5.523e-01 4.448e-01 + 3.128e-01 2.333e-01 2.336e-01 + 5.123e-01 5.723e-01 5.920e-01 5.743e-01 5.439e-01 5.238e-01 + 5.238e-01 5.439e-01 5.743e-01 5.920e-01 5.723e-01 5.121e-01 + 4.448e-01 4.158e-01 4.445e-01 + 5.931e-01 5.958e-01 5.767e-01 5.475e-01 5.238e-01 5.151e-01 + 5.238e-01 5.475e-01 5.767e-01 5.958e-01 5.932e-01 5.723e-01 + 5.523e-01 5.524e-01 5.723e-01 + 5.921e-01 5.777e-01 5.564e-01 5.361e-01 5.238e-01 5.238e-01 + 5.361e-01 5.564e-01 5.777e-01 5.921e-01 5.958e-01 5.920e-01 + 5.892e-01 5.920e-01 5.958e-01 + 5.743e-01 5.665e-01 5.565e-01 5.475e-01 5.439e-01 5.475e-01 + 5.564e-01 5.665e-01 5.743e-01 5.777e-01 5.767e-01 5.743e-01 + 5.743e-01 5.767e-01 5.777e-01 + 5.743e-01 5.777e-01 5.767e-01 5.743e-01 5.743e-01 5.767e-01 + 5.777e-01 5.743e-01 5.665e-01 5.564e-01 5.475e-01 5.439e-01 + 5.475e-01 5.565e-01 5.665e-01 + 5.921e-01 5.958e-01 5.920e-01 5.892e-01 5.920e-01 5.958e-01 + 5.921e-01 5.777e-01 5.564e-01 5.361e-01 5.238e-01 5.238e-01 + 5.361e-01 5.564e-01 5.777e-01 + 5.931e-01 5.723e-01 5.524e-01 5.523e-01 5.723e-01 5.932e-01 + 5.958e-01 5.767e-01 5.475e-01 5.238e-01 5.151e-01 5.238e-01 + 5.475e-01 5.767e-01 5.958e-01 + 5.123e-01 4.445e-01 4.158e-01 4.448e-01 5.121e-01 5.723e-01 + 5.920e-01 5.743e-01 5.439e-01 5.238e-01 5.238e-01 5.439e-01 + 5.743e-01 5.920e-01 5.723e-01 + 3.125e-01 2.336e-01 2.333e-01 3.128e-01 4.448e-01 5.523e-01 + 5.892e-01 5.743e-01 5.475e-01 5.361e-01 5.475e-01 5.743e-01 + 5.892e-01 5.524e-01 4.446e-01 + 1.191e-01 8.700e-02 1.187e-01 2.333e-01 4.158e-01 5.524e-01 + 5.920e-01 5.767e-01 5.565e-01 5.564e-01 5.767e-01 5.920e-01 + 5.524e-01 4.158e-01 2.335e-01 + 4.023e-02 4.072e-02 8.700e-02 2.336e-01 4.445e-01 5.723e-01 + 5.958e-01 5.777e-01 5.665e-01 5.777e-01 5.958e-01 5.723e-01 + 4.446e-01 2.335e-01 8.701e-02 + 4.023e-02 8.701e-02 2.335e-01 4.446e-01 5.723e-01 5.958e-01 + 5.777e-01 5.665e-01 5.777e-01 5.958e-01 5.723e-01 4.445e-01 + 2.336e-01 8.700e-02 4.072e-02 + 8.701e-02 1.939e-01 3.867e-01 5.450e-01 5.980e-01 5.877e-01 + 5.685e-01 5.685e-01 5.877e-01 5.980e-01 5.451e-01 3.866e-01 + 1.939e-01 8.766e-02 6.094e-02 + 2.335e-01 3.867e-01 5.316e-01 5.945e-01 5.910e-01 5.675e-01 + 5.564e-01 5.675e-01 5.910e-01 5.945e-01 5.316e-01 3.869e-01 + 2.329e-01 1.534e-01 1.536e-01 + 4.446e-01 5.450e-01 5.945e-01 5.914e-01 5.655e-01 5.462e-01 + 5.462e-01 5.655e-01 5.914e-01 5.945e-01 5.450e-01 4.448e-01 + 3.473e-01 3.092e-01 3.470e-01 + 5.723e-01 5.980e-01 5.910e-01 5.655e-01 5.421e-01 5.333e-01 + 5.421e-01 5.655e-01 5.910e-01 5.980e-01 5.722e-01 5.234e-01 + 4.842e-01 4.842e-01 5.235e-01 + 5.958e-01 5.877e-01 5.675e-01 5.462e-01 5.333e-01 5.333e-01 + 5.462e-01 5.675e-01 5.877e-01 5.958e-01 5.877e-01 5.719e-01 + 5.639e-01 5.719e-01 5.877e-01 + 5.777e-01 5.685e-01 5.564e-01 5.462e-01 5.421e-01 5.462e-01 + 5.564e-01 5.685e-01 5.777e-01 5.803e-01 5.765e-01 5.716e-01 + 5.716e-01 5.765e-01 5.803e-01 + 5.665e-01 5.685e-01 5.675e-01 5.655e-01 5.655e-01 5.675e-01 + 5.685e-01 5.665e-01 5.608e-01 5.525e-01 5.444e-01 5.409e-01 + 5.444e-01 5.525e-01 5.609e-01 + 5.777e-01 5.877e-01 5.910e-01 5.914e-01 5.910e-01 5.877e-01 + 5.777e-01 5.608e-01 5.404e-01 5.216e-01 5.101e-01 5.101e-01 + 5.216e-01 5.404e-01 5.609e-01 + 5.958e-01 5.980e-01 5.945e-01 5.945e-01 5.980e-01 5.958e-01 + 5.803e-01 5.525e-01 5.216e-01 4.982e-01 4.896e-01 4.982e-01 + 5.216e-01 5.525e-01 5.803e-01 + 5.723e-01 5.451e-01 5.316e-01 5.450e-01 5.722e-01 5.877e-01 + 5.765e-01 5.444e-01 5.101e-01 4.896e-01 4.896e-01 5.101e-01 + 5.444e-01 5.765e-01 5.877e-01 + 4.445e-01 3.866e-01 3.869e-01 4.448e-01 5.234e-01 5.719e-01 + 5.716e-01 5.409e-01 5.101e-01 4.982e-01 5.101e-01 5.409e-01 + 5.716e-01 5.719e-01 5.235e-01 + 2.336e-01 1.939e-01 2.329e-01 3.473e-01 4.842e-01 5.639e-01 + 5.716e-01 5.444e-01 5.216e-01 5.216e-01 5.444e-01 5.716e-01 + 5.639e-01 4.842e-01 3.470e-01 + 8.700e-02 8.766e-02 1.534e-01 3.092e-01 4.842e-01 5.719e-01 + 5.765e-01 5.525e-01 5.404e-01 5.525e-01 5.765e-01 5.719e-01 + 4.842e-01 3.093e-01 1.536e-01 + 4.072e-02 6.094e-02 1.536e-01 3.470e-01 5.235e-01 5.877e-01 + 5.803e-01 5.609e-01 5.609e-01 5.803e-01 5.877e-01 5.235e-01 + 3.470e-01 1.536e-01 6.094e-02 + 1.191e-01 2.335e-01 4.158e-01 5.524e-01 5.920e-01 5.767e-01 + 5.564e-01 5.565e-01 5.767e-01 5.920e-01 5.524e-01 4.158e-01 + 2.333e-01 1.187e-01 8.700e-02 + 2.335e-01 3.867e-01 5.316e-01 5.945e-01 5.910e-01 5.675e-01 + 5.564e-01 5.675e-01 5.910e-01 5.945e-01 5.316e-01 3.869e-01 + 2.329e-01 1.534e-01 1.536e-01 + 4.158e-01 5.316e-01 5.936e-01 5.967e-01 5.729e-01 5.538e-01 + 5.538e-01 5.729e-01 5.967e-01 5.936e-01 5.317e-01 4.160e-01 + 3.090e-01 2.689e-01 3.093e-01 + 5.524e-01 5.945e-01 5.967e-01 5.743e-01 5.514e-01 5.425e-01 + 5.514e-01 5.743e-01 5.967e-01 5.945e-01 5.523e-01 4.843e-01 + 4.328e-01 4.328e-01 4.842e-01 + 5.920e-01 5.910e-01 5.729e-01 5.514e-01 5.382e-01 5.382e-01 + 5.514e-01 5.729e-01 5.910e-01 5.920e-01 5.719e-01 5.440e-01 + 5.309e-01 5.440e-01 5.719e-01 + 5.767e-01 5.675e-01 5.538e-01 5.425e-01 5.382e-01 5.425e-01 + 5.538e-01 5.675e-01 5.767e-01 5.765e-01 5.679e-01 5.592e-01 + 5.592e-01 5.679e-01 5.765e-01 + 5.564e-01 5.564e-01 5.538e-01 5.514e-01 5.514e-01 5.538e-01 + 5.564e-01 5.564e-01 5.525e-01 5.450e-01 5.368e-01 5.332e-01 + 5.368e-01 5.450e-01 5.525e-01 + 5.565e-01 5.675e-01 5.729e-01 5.743e-01 5.729e-01 5.675e-01 + 5.564e-01 5.404e-01 5.219e-01 5.049e-01 4.943e-01 4.943e-01 + 5.049e-01 5.219e-01 5.404e-01 + 5.767e-01 5.910e-01 5.967e-01 5.967e-01 5.910e-01 5.767e-01 + 5.525e-01 5.219e-01 4.916e-01 4.693e-01 4.610e-01 4.693e-01 + 4.916e-01 5.219e-01 5.525e-01 + 5.920e-01 5.945e-01 5.936e-01 5.945e-01 5.920e-01 5.765e-01 + 5.450e-01 5.049e-01 4.693e-01 4.489e-01 4.489e-01 4.693e-01 + 5.049e-01 5.450e-01 5.765e-01 + 5.524e-01 5.316e-01 5.317e-01 5.523e-01 5.719e-01 5.679e-01 + 5.368e-01 4.943e-01 4.610e-01 4.489e-01 4.610e-01 4.943e-01 + 5.368e-01 5.679e-01 5.719e-01 + 4.158e-01 3.869e-01 4.160e-01 4.843e-01 5.440e-01 5.592e-01 + 5.332e-01 4.943e-01 4.693e-01 4.693e-01 4.943e-01 5.332e-01 + 5.592e-01 5.440e-01 4.842e-01 + 2.333e-01 2.329e-01 3.090e-01 4.328e-01 5.309e-01 5.592e-01 + 5.368e-01 5.049e-01 4.916e-01 5.049e-01 5.368e-01 5.592e-01 + 5.309e-01 4.328e-01 3.092e-01 + 1.187e-01 1.534e-01 2.689e-01 4.328e-01 5.440e-01 5.679e-01 + 5.450e-01 5.219e-01 5.219e-01 5.450e-01 5.679e-01 5.440e-01 + 4.328e-01 2.689e-01 1.534e-01 + 8.700e-02 1.536e-01 3.093e-01 4.842e-01 5.719e-01 5.765e-01 + 5.525e-01 5.404e-01 5.525e-01 5.765e-01 5.719e-01 4.842e-01 + 3.092e-01 1.534e-01 8.766e-02 + 3.125e-01 4.446e-01 5.524e-01 5.892e-01 5.743e-01 5.475e-01 + 5.361e-01 5.475e-01 5.743e-01 5.892e-01 5.523e-01 4.448e-01 + 3.128e-01 2.333e-01 2.336e-01 + 4.446e-01 5.450e-01 5.945e-01 5.914e-01 5.655e-01 5.462e-01 + 5.462e-01 5.655e-01 5.914e-01 5.945e-01 5.450e-01 4.448e-01 + 3.473e-01 3.092e-01 3.470e-01 + 5.524e-01 5.945e-01 5.967e-01 5.743e-01 5.514e-01 5.425e-01 + 5.514e-01 5.743e-01 5.967e-01 5.945e-01 5.523e-01 4.843e-01 + 4.328e-01 4.328e-01 4.842e-01 + 5.892e-01 5.914e-01 5.743e-01 5.528e-01 5.396e-01 5.396e-01 + 5.528e-01 5.743e-01 5.914e-01 5.892e-01 5.639e-01 5.309e-01 + 5.158e-01 5.309e-01 5.639e-01 + 5.743e-01 5.655e-01 5.514e-01 5.396e-01 5.353e-01 5.396e-01 + 5.514e-01 5.655e-01 5.743e-01 5.716e-01 5.592e-01 5.478e-01 + 5.478e-01 5.592e-01 5.716e-01 + 5.475e-01 5.462e-01 5.425e-01 5.396e-01 5.396e-01 5.425e-01 + 5.462e-01 5.475e-01 5.444e-01 5.368e-01 5.282e-01 5.243e-01 + 5.282e-01 5.368e-01 5.444e-01 + 5.361e-01 5.462e-01 5.514e-01 5.528e-01 5.514e-01 5.462e-01 + 5.361e-01 5.216e-01 5.049e-01 4.895e-01 4.799e-01 4.799e-01 + 4.895e-01 5.049e-01 5.216e-01 + 5.475e-01 5.655e-01 5.743e-01 5.743e-01 5.655e-01 5.475e-01 + 5.216e-01 4.916e-01 4.632e-01 4.424e-01 4.347e-01 4.424e-01 + 4.632e-01 4.916e-01 5.216e-01 + 5.743e-01 5.914e-01 5.967e-01 5.914e-01 5.743e-01 5.444e-01 + 5.049e-01 4.632e-01 4.286e-01 4.091e-01 4.091e-01 4.286e-01 + 4.632e-01 5.049e-01 5.444e-01 + 5.892e-01 5.945e-01 5.945e-01 5.892e-01 5.716e-01 5.368e-01 + 4.895e-01 4.424e-01 4.091e-01 3.972e-01 4.091e-01 4.424e-01 + 4.895e-01 5.368e-01 5.716e-01 + 5.523e-01 5.450e-01 5.523e-01 5.639e-01 5.592e-01 5.282e-01 + 4.799e-01 4.347e-01 4.091e-01 4.091e-01 4.347e-01 4.799e-01 + 5.282e-01 5.592e-01 5.639e-01 + 4.448e-01 4.448e-01 4.843e-01 5.309e-01 5.478e-01 5.243e-01 + 4.799e-01 4.424e-01 4.286e-01 4.424e-01 4.799e-01 5.243e-01 + 5.478e-01 5.309e-01 4.842e-01 + 3.128e-01 3.473e-01 4.328e-01 5.158e-01 5.478e-01 5.282e-01 + 4.895e-01 4.632e-01 4.632e-01 4.895e-01 5.282e-01 5.478e-01 + 5.158e-01 4.328e-01 3.473e-01 + 2.333e-01 3.092e-01 4.328e-01 5.309e-01 5.592e-01 5.368e-01 + 5.049e-01 4.916e-01 5.049e-01 5.368e-01 5.592e-01 5.309e-01 + 4.328e-01 3.090e-01 2.329e-01 + 2.336e-01 3.470e-01 4.842e-01 5.639e-01 5.716e-01 5.444e-01 + 5.216e-01 5.216e-01 5.444e-01 5.716e-01 5.639e-01 4.842e-01 + 3.473e-01 2.329e-01 1.939e-01 + 5.123e-01 5.723e-01 5.920e-01 5.743e-01 5.439e-01 5.238e-01 + 5.238e-01 5.439e-01 5.743e-01 5.920e-01 5.723e-01 5.121e-01 + 4.448e-01 4.158e-01 4.445e-01 + 5.723e-01 5.980e-01 5.910e-01 5.655e-01 5.421e-01 5.333e-01 + 5.421e-01 5.655e-01 5.910e-01 5.980e-01 5.722e-01 5.234e-01 + 4.842e-01 4.842e-01 5.235e-01 + 5.920e-01 5.910e-01 5.729e-01 5.514e-01 5.382e-01 5.382e-01 + 5.514e-01 5.729e-01 5.910e-01 5.920e-01 5.719e-01 5.440e-01 + 5.309e-01 5.440e-01 5.719e-01 + 5.743e-01 5.655e-01 5.514e-01 5.396e-01 5.353e-01 5.396e-01 + 5.514e-01 5.655e-01 5.743e-01 5.716e-01 5.592e-01 5.478e-01 + 5.478e-01 5.592e-01 5.716e-01 + 5.439e-01 5.421e-01 5.382e-01 5.353e-01 5.353e-01 5.382e-01 + 5.421e-01 5.439e-01 5.409e-01 5.332e-01 5.243e-01 5.204e-01 + 5.243e-01 5.332e-01 5.409e-01 + 5.238e-01 5.333e-01 5.382e-01 5.396e-01 5.382e-01 5.333e-01 + 5.238e-01 5.101e-01 4.943e-01 4.799e-01 4.710e-01 4.710e-01 + 4.799e-01 4.943e-01 5.101e-01 + 5.238e-01 5.421e-01 5.514e-01 5.514e-01 5.421e-01 5.238e-01 + 4.982e-01 4.693e-01 4.424e-01 4.233e-01 4.163e-01 4.233e-01 + 4.424e-01 4.693e-01 4.982e-01 + 5.439e-01 5.655e-01 5.729e-01 5.655e-01 5.439e-01 5.101e-01 + 4.693e-01 4.286e-01 3.959e-01 3.777e-01 3.777e-01 3.959e-01 + 4.286e-01 4.693e-01 5.101e-01 + 5.743e-01 5.910e-01 5.910e-01 5.743e-01 5.409e-01 4.943e-01 + 4.424e-01 3.959e-01 3.641e-01 3.528e-01 3.641e-01 3.959e-01 + 4.424e-01 4.943e-01 5.409e-01 + 5.920e-01 5.980e-01 5.920e-01 5.716e-01 5.332e-01 4.799e-01 + 4.233e-01 3.777e-01 3.528e-01 3.529e-01 3.777e-01 4.233e-01 + 4.799e-01 5.332e-01 5.716e-01 + 5.723e-01 5.722e-01 5.719e-01 5.592e-01 5.243e-01 4.710e-01 + 4.163e-01 3.777e-01 3.641e-01 3.777e-01 4.163e-01 4.710e-01 + 5.243e-01 5.592e-01 5.719e-01 + 5.121e-01 5.234e-01 5.440e-01 5.478e-01 5.204e-01 4.710e-01 + 4.233e-01 3.959e-01 3.959e-01 4.233e-01 4.710e-01 5.204e-01 + 5.478e-01 5.440e-01 5.234e-01 + 4.448e-01 4.842e-01 5.309e-01 5.478e-01 5.243e-01 4.799e-01 + 4.424e-01 4.286e-01 4.424e-01 4.799e-01 5.243e-01 5.478e-01 + 5.309e-01 4.843e-01 4.448e-01 + 4.158e-01 4.842e-01 5.440e-01 5.592e-01 5.332e-01 4.943e-01 + 4.693e-01 4.693e-01 4.943e-01 5.332e-01 5.592e-01 5.440e-01 + 4.843e-01 4.160e-01 3.869e-01 + 4.445e-01 5.235e-01 5.719e-01 5.716e-01 5.409e-01 5.101e-01 + 4.982e-01 5.101e-01 5.409e-01 5.716e-01 5.719e-01 5.234e-01 + 4.448e-01 3.869e-01 3.866e-01 + 5.931e-01 5.958e-01 5.767e-01 5.475e-01 5.238e-01 5.151e-01 + 5.238e-01 5.475e-01 5.767e-01 5.958e-01 5.932e-01 5.723e-01 + 5.523e-01 5.524e-01 5.723e-01 + 5.958e-01 5.877e-01 5.675e-01 5.462e-01 5.333e-01 5.333e-01 + 5.462e-01 5.675e-01 5.877e-01 5.958e-01 5.877e-01 5.719e-01 + 5.639e-01 5.719e-01 5.877e-01 + 5.767e-01 5.675e-01 5.538e-01 5.425e-01 5.382e-01 5.425e-01 + 5.538e-01 5.675e-01 5.767e-01 5.765e-01 5.679e-01 5.592e-01 + 5.592e-01 5.679e-01 5.765e-01 + 5.475e-01 5.462e-01 5.425e-01 5.396e-01 5.396e-01 5.425e-01 + 5.462e-01 5.475e-01 5.444e-01 5.368e-01 5.282e-01 5.243e-01 + 5.282e-01 5.368e-01 5.444e-01 + 5.238e-01 5.333e-01 5.382e-01 5.396e-01 5.382e-01 5.333e-01 + 5.238e-01 5.101e-01 4.943e-01 4.799e-01 4.710e-01 4.710e-01 + 4.799e-01 4.943e-01 5.101e-01 + 5.151e-01 5.333e-01 5.425e-01 5.425e-01 5.333e-01 5.151e-01 + 4.896e-01 4.610e-01 4.347e-01 4.163e-01 4.097e-01 4.163e-01 + 4.347e-01 4.610e-01 4.896e-01 + 5.238e-01 5.462e-01 5.538e-01 5.462e-01 5.238e-01 4.896e-01 + 4.489e-01 4.091e-01 3.777e-01 3.605e-01 3.605e-01 3.777e-01 + 4.091e-01 4.489e-01 4.896e-01 + 5.475e-01 5.675e-01 5.675e-01 5.475e-01 5.101e-01 4.610e-01 + 4.091e-01 3.641e-01 3.340e-01 3.234e-01 3.340e-01 3.641e-01 + 4.091e-01 4.610e-01 5.101e-01 + 5.767e-01 5.877e-01 5.767e-01 5.444e-01 4.943e-01 4.347e-01 + 3.777e-01 3.340e-01 3.106e-01 3.106e-01 3.340e-01 3.777e-01 + 4.347e-01 4.943e-01 5.444e-01 + 5.958e-01 5.958e-01 5.765e-01 5.368e-01 4.799e-01 4.163e-01 + 3.605e-01 3.234e-01 3.106e-01 3.234e-01 3.605e-01 4.163e-01 + 4.799e-01 5.368e-01 5.765e-01 + 5.932e-01 5.877e-01 5.679e-01 5.282e-01 4.710e-01 4.097e-01 + 3.605e-01 3.340e-01 3.340e-01 3.605e-01 4.097e-01 4.710e-01 + 5.282e-01 5.679e-01 5.877e-01 + 5.723e-01 5.719e-01 5.592e-01 5.243e-01 4.710e-01 4.163e-01 + 3.777e-01 3.641e-01 3.777e-01 4.163e-01 4.710e-01 5.243e-01 + 5.592e-01 5.719e-01 5.722e-01 + 5.523e-01 5.639e-01 5.592e-01 5.282e-01 4.799e-01 4.347e-01 + 4.091e-01 4.091e-01 4.347e-01 4.799e-01 5.282e-01 5.592e-01 + 5.639e-01 5.523e-01 5.450e-01 + 5.524e-01 5.719e-01 5.679e-01 5.368e-01 4.943e-01 4.610e-01 + 4.489e-01 4.610e-01 4.943e-01 5.368e-01 5.679e-01 5.719e-01 + 5.523e-01 5.317e-01 5.316e-01 + 5.723e-01 5.877e-01 5.765e-01 5.444e-01 5.101e-01 4.896e-01 + 4.896e-01 5.101e-01 5.444e-01 5.765e-01 5.877e-01 5.722e-01 + 5.450e-01 5.316e-01 5.451e-01 + 5.921e-01 5.777e-01 5.564e-01 5.361e-01 5.238e-01 5.238e-01 + 5.361e-01 5.564e-01 5.777e-01 5.921e-01 5.958e-01 5.920e-01 + 5.892e-01 5.920e-01 5.958e-01 + 5.777e-01 5.685e-01 5.564e-01 5.462e-01 5.421e-01 5.462e-01 + 5.564e-01 5.685e-01 5.777e-01 5.803e-01 5.765e-01 5.716e-01 + 5.716e-01 5.765e-01 5.803e-01 + 5.564e-01 5.564e-01 5.538e-01 5.514e-01 5.514e-01 5.538e-01 + 5.564e-01 5.564e-01 5.525e-01 5.450e-01 5.368e-01 5.332e-01 + 5.368e-01 5.450e-01 5.525e-01 + 5.361e-01 5.462e-01 5.514e-01 5.528e-01 5.514e-01 5.462e-01 + 5.361e-01 5.216e-01 5.049e-01 4.895e-01 4.799e-01 4.799e-01 + 4.895e-01 5.049e-01 5.216e-01 + 5.238e-01 5.421e-01 5.514e-01 5.514e-01 5.421e-01 5.238e-01 + 4.982e-01 4.693e-01 4.424e-01 4.233e-01 4.163e-01 4.233e-01 + 4.424e-01 4.693e-01 4.982e-01 + 5.238e-01 5.462e-01 5.538e-01 5.462e-01 5.238e-01 4.896e-01 + 4.489e-01 4.091e-01 3.777e-01 3.605e-01 3.605e-01 3.777e-01 + 4.091e-01 4.489e-01 4.896e-01 + 5.361e-01 5.564e-01 5.564e-01 5.361e-01 4.982e-01 4.489e-01 + 3.972e-01 3.528e-01 3.234e-01 3.132e-01 3.234e-01 3.529e-01 + 3.972e-01 4.489e-01 4.982e-01 + 5.564e-01 5.685e-01 5.564e-01 5.216e-01 4.693e-01 4.091e-01 + 3.528e-01 3.106e-01 2.883e-01 2.883e-01 3.106e-01 3.528e-01 + 4.091e-01 4.693e-01 5.216e-01 + 5.777e-01 5.777e-01 5.525e-01 5.049e-01 4.424e-01 3.777e-01 + 3.234e-01 2.883e-01 2.763e-01 2.883e-01 3.234e-01 3.777e-01 + 4.424e-01 5.049e-01 5.525e-01 + 5.921e-01 5.803e-01 5.450e-01 4.895e-01 4.233e-01 3.605e-01 + 3.132e-01 2.883e-01 2.883e-01 3.132e-01 3.605e-01 4.233e-01 + 4.895e-01 5.450e-01 5.803e-01 + 5.958e-01 5.765e-01 5.368e-01 4.799e-01 4.163e-01 3.605e-01 + 3.234e-01 3.106e-01 3.234e-01 3.605e-01 4.163e-01 4.799e-01 + 5.368e-01 5.765e-01 5.958e-01 + 5.920e-01 5.716e-01 5.332e-01 4.799e-01 4.233e-01 3.777e-01 + 3.529e-01 3.528e-01 3.777e-01 4.233e-01 4.799e-01 5.332e-01 + 5.716e-01 5.920e-01 5.980e-01 + 5.892e-01 5.716e-01 5.368e-01 4.895e-01 4.424e-01 4.091e-01 + 3.972e-01 4.091e-01 4.424e-01 4.895e-01 5.368e-01 5.716e-01 + 5.892e-01 5.945e-01 5.945e-01 + 5.920e-01 5.765e-01 5.450e-01 5.049e-01 4.693e-01 4.489e-01 + 4.489e-01 4.693e-01 5.049e-01 5.450e-01 5.765e-01 5.920e-01 + 5.945e-01 5.936e-01 5.945e-01 + 5.958e-01 5.803e-01 5.525e-01 5.216e-01 4.982e-01 4.896e-01 + 4.982e-01 5.216e-01 5.525e-01 5.803e-01 5.958e-01 5.980e-01 + 5.945e-01 5.945e-01 5.980e-01 + 5.743e-01 5.665e-01 5.565e-01 5.475e-01 5.439e-01 5.475e-01 + 5.564e-01 5.665e-01 5.743e-01 5.777e-01 5.767e-01 5.743e-01 + 5.743e-01 5.767e-01 5.777e-01 + 5.665e-01 5.685e-01 5.675e-01 5.655e-01 5.655e-01 5.675e-01 + 5.685e-01 5.665e-01 5.608e-01 5.525e-01 5.444e-01 5.409e-01 + 5.444e-01 5.525e-01 5.609e-01 + 5.565e-01 5.675e-01 5.729e-01 5.743e-01 5.729e-01 5.675e-01 + 5.564e-01 5.404e-01 5.219e-01 5.049e-01 4.943e-01 4.943e-01 + 5.049e-01 5.219e-01 5.404e-01 + 5.475e-01 5.655e-01 5.743e-01 5.743e-01 5.655e-01 5.475e-01 + 5.216e-01 4.916e-01 4.632e-01 4.424e-01 4.347e-01 4.424e-01 + 4.632e-01 4.916e-01 5.216e-01 + 5.439e-01 5.655e-01 5.729e-01 5.655e-01 5.439e-01 5.101e-01 + 4.693e-01 4.286e-01 3.959e-01 3.777e-01 3.777e-01 3.959e-01 + 4.286e-01 4.693e-01 5.101e-01 + 5.475e-01 5.675e-01 5.675e-01 5.475e-01 5.101e-01 4.610e-01 + 4.091e-01 3.641e-01 3.340e-01 3.234e-01 3.340e-01 3.641e-01 + 4.091e-01 4.610e-01 5.101e-01 + 5.564e-01 5.685e-01 5.564e-01 5.216e-01 4.693e-01 4.091e-01 + 3.528e-01 3.106e-01 2.883e-01 2.883e-01 3.106e-01 3.528e-01 + 4.091e-01 4.693e-01 5.216e-01 + 5.665e-01 5.665e-01 5.404e-01 4.916e-01 4.286e-01 3.641e-01 + 3.106e-01 2.763e-01 2.646e-01 2.763e-01 3.106e-01 3.641e-01 + 4.286e-01 4.916e-01 5.404e-01 + 5.743e-01 5.608e-01 5.219e-01 4.632e-01 3.959e-01 3.340e-01 + 2.883e-01 2.646e-01 2.646e-01 2.883e-01 3.340e-01 3.959e-01 + 4.632e-01 5.219e-01 5.608e-01 + 5.777e-01 5.525e-01 5.049e-01 4.424e-01 3.777e-01 3.234e-01 + 2.883e-01 2.763e-01 2.883e-01 3.234e-01 3.777e-01 4.424e-01 + 5.049e-01 5.525e-01 5.777e-01 + 5.767e-01 5.444e-01 4.943e-01 4.347e-01 3.777e-01 3.340e-01 + 3.106e-01 3.106e-01 3.340e-01 3.777e-01 4.347e-01 4.943e-01 + 5.444e-01 5.767e-01 5.877e-01 + 5.743e-01 5.409e-01 4.943e-01 4.424e-01 3.959e-01 3.641e-01 + 3.528e-01 3.641e-01 3.959e-01 4.424e-01 4.943e-01 5.409e-01 + 5.743e-01 5.910e-01 5.910e-01 + 5.743e-01 5.444e-01 5.049e-01 4.632e-01 4.286e-01 4.091e-01 + 4.091e-01 4.286e-01 4.632e-01 5.049e-01 5.444e-01 5.743e-01 + 5.914e-01 5.967e-01 5.914e-01 + 5.767e-01 5.525e-01 5.219e-01 4.916e-01 4.693e-01 4.610e-01 + 4.693e-01 4.916e-01 5.219e-01 5.525e-01 5.767e-01 5.910e-01 + 5.967e-01 5.967e-01 5.910e-01 + 5.777e-01 5.609e-01 5.404e-01 5.216e-01 5.101e-01 5.101e-01 + 5.216e-01 5.404e-01 5.608e-01 5.777e-01 5.877e-01 5.910e-01 + 5.914e-01 5.910e-01 5.877e-01 + 5.743e-01 5.777e-01 5.767e-01 5.743e-01 5.743e-01 5.767e-01 + 5.777e-01 5.743e-01 5.665e-01 5.564e-01 5.475e-01 5.439e-01 + 5.475e-01 5.565e-01 5.665e-01 + 5.777e-01 5.877e-01 5.910e-01 5.914e-01 5.910e-01 5.877e-01 + 5.777e-01 5.608e-01 5.404e-01 5.216e-01 5.101e-01 5.101e-01 + 5.216e-01 5.404e-01 5.609e-01 + 5.767e-01 5.910e-01 5.967e-01 5.967e-01 5.910e-01 5.767e-01 + 5.525e-01 5.219e-01 4.916e-01 4.693e-01 4.610e-01 4.693e-01 + 4.916e-01 5.219e-01 5.525e-01 + 5.743e-01 5.914e-01 5.967e-01 5.914e-01 5.743e-01 5.444e-01 + 5.049e-01 4.632e-01 4.286e-01 4.091e-01 4.091e-01 4.286e-01 + 4.632e-01 5.049e-01 5.444e-01 + 5.743e-01 5.910e-01 5.910e-01 5.743e-01 5.409e-01 4.943e-01 + 4.424e-01 3.959e-01 3.641e-01 3.528e-01 3.641e-01 3.959e-01 + 4.424e-01 4.943e-01 5.409e-01 + 5.767e-01 5.877e-01 5.767e-01 5.444e-01 4.943e-01 4.347e-01 + 3.777e-01 3.340e-01 3.106e-01 3.106e-01 3.340e-01 3.777e-01 + 4.347e-01 4.943e-01 5.444e-01 + 5.777e-01 5.777e-01 5.525e-01 5.049e-01 4.424e-01 3.777e-01 + 3.234e-01 2.883e-01 2.763e-01 2.883e-01 3.234e-01 3.777e-01 + 4.424e-01 5.049e-01 5.525e-01 + 5.743e-01 5.608e-01 5.219e-01 4.632e-01 3.959e-01 3.340e-01 + 2.883e-01 2.646e-01 2.646e-01 2.883e-01 3.340e-01 3.959e-01 + 4.632e-01 5.219e-01 5.608e-01 + 5.665e-01 5.404e-01 4.916e-01 4.286e-01 3.641e-01 3.106e-01 + 2.763e-01 2.646e-01 2.763e-01 3.106e-01 3.641e-01 4.286e-01 + 4.916e-01 5.404e-01 5.665e-01 + 5.564e-01 5.216e-01 4.693e-01 4.091e-01 3.528e-01 3.106e-01 + 2.883e-01 2.883e-01 3.106e-01 3.528e-01 4.091e-01 4.693e-01 + 5.216e-01 5.564e-01 5.685e-01 + 5.475e-01 5.101e-01 4.610e-01 4.091e-01 3.641e-01 3.340e-01 + 3.234e-01 3.340e-01 3.641e-01 4.091e-01 4.610e-01 5.101e-01 + 5.475e-01 5.675e-01 5.675e-01 + 5.439e-01 5.101e-01 4.693e-01 4.286e-01 3.959e-01 3.777e-01 + 3.777e-01 3.959e-01 4.286e-01 4.693e-01 5.101e-01 5.439e-01 + 5.655e-01 5.729e-01 5.655e-01 + 5.475e-01 5.216e-01 4.916e-01 4.632e-01 4.424e-01 4.347e-01 + 4.424e-01 4.632e-01 4.916e-01 5.216e-01 5.475e-01 5.655e-01 + 5.743e-01 5.743e-01 5.655e-01 + 5.565e-01 5.404e-01 5.219e-01 5.049e-01 4.943e-01 4.943e-01 + 5.049e-01 5.219e-01 5.404e-01 5.564e-01 5.675e-01 5.729e-01 + 5.743e-01 5.729e-01 5.675e-01 + 5.665e-01 5.609e-01 5.525e-01 5.444e-01 5.409e-01 5.444e-01 + 5.525e-01 5.608e-01 5.665e-01 5.685e-01 5.675e-01 5.655e-01 + 5.655e-01 5.675e-01 5.685e-01 + 5.921e-01 5.958e-01 5.920e-01 5.892e-01 5.920e-01 5.958e-01 + 5.921e-01 5.777e-01 5.564e-01 5.361e-01 5.238e-01 5.238e-01 + 5.361e-01 5.564e-01 5.777e-01 + 5.958e-01 5.980e-01 5.945e-01 5.945e-01 5.980e-01 5.958e-01 + 5.803e-01 5.525e-01 5.216e-01 4.982e-01 4.896e-01 4.982e-01 + 5.216e-01 5.525e-01 5.803e-01 + 5.920e-01 5.945e-01 5.936e-01 5.945e-01 5.920e-01 5.765e-01 + 5.450e-01 5.049e-01 4.693e-01 4.489e-01 4.489e-01 4.693e-01 + 5.049e-01 5.450e-01 5.765e-01 + 5.892e-01 5.945e-01 5.945e-01 5.892e-01 5.716e-01 5.368e-01 + 4.895e-01 4.424e-01 4.091e-01 3.972e-01 4.091e-01 4.424e-01 + 4.895e-01 5.368e-01 5.716e-01 + 5.920e-01 5.980e-01 5.920e-01 5.716e-01 5.332e-01 4.799e-01 + 4.233e-01 3.777e-01 3.528e-01 3.529e-01 3.777e-01 4.233e-01 + 4.799e-01 5.332e-01 5.716e-01 + 5.958e-01 5.958e-01 5.765e-01 5.368e-01 4.799e-01 4.163e-01 + 3.605e-01 3.234e-01 3.106e-01 3.234e-01 3.605e-01 4.163e-01 + 4.799e-01 5.368e-01 5.765e-01 + 5.921e-01 5.803e-01 5.450e-01 4.895e-01 4.233e-01 3.605e-01 + 3.132e-01 2.883e-01 2.883e-01 3.132e-01 3.605e-01 4.233e-01 + 4.895e-01 5.450e-01 5.803e-01 + 5.777e-01 5.525e-01 5.049e-01 4.424e-01 3.777e-01 3.234e-01 + 2.883e-01 2.763e-01 2.883e-01 3.234e-01 3.777e-01 4.424e-01 + 5.049e-01 5.525e-01 5.777e-01 + 5.564e-01 5.216e-01 4.693e-01 4.091e-01 3.528e-01 3.106e-01 + 2.883e-01 2.883e-01 3.106e-01 3.528e-01 4.091e-01 4.693e-01 + 5.216e-01 5.564e-01 5.685e-01 + 5.361e-01 4.982e-01 4.489e-01 3.972e-01 3.529e-01 3.234e-01 + 3.132e-01 3.234e-01 3.528e-01 3.972e-01 4.489e-01 4.982e-01 + 5.361e-01 5.564e-01 5.564e-01 + 5.238e-01 4.896e-01 4.489e-01 4.091e-01 3.777e-01 3.605e-01 + 3.605e-01 3.777e-01 4.091e-01 4.489e-01 4.896e-01 5.238e-01 + 5.462e-01 5.538e-01 5.462e-01 + 5.238e-01 4.982e-01 4.693e-01 4.424e-01 4.233e-01 4.163e-01 + 4.233e-01 4.424e-01 4.693e-01 4.982e-01 5.238e-01 5.421e-01 + 5.514e-01 5.514e-01 5.421e-01 + 5.361e-01 5.216e-01 5.049e-01 4.895e-01 4.799e-01 4.799e-01 + 4.895e-01 5.049e-01 5.216e-01 5.361e-01 5.462e-01 5.514e-01 + 5.528e-01 5.514e-01 5.462e-01 + 5.564e-01 5.525e-01 5.450e-01 5.368e-01 5.332e-01 5.368e-01 + 5.450e-01 5.525e-01 5.564e-01 5.564e-01 5.538e-01 5.514e-01 + 5.514e-01 5.538e-01 5.564e-01 + 5.777e-01 5.803e-01 5.765e-01 5.716e-01 5.716e-01 5.765e-01 + 5.803e-01 5.777e-01 5.685e-01 5.564e-01 5.462e-01 5.421e-01 + 5.462e-01 5.564e-01 5.685e-01 + 5.931e-01 5.723e-01 5.524e-01 5.523e-01 5.723e-01 5.932e-01 + 5.958e-01 5.767e-01 5.475e-01 5.238e-01 5.151e-01 5.238e-01 + 5.475e-01 5.767e-01 5.958e-01 + 5.723e-01 5.451e-01 5.316e-01 5.450e-01 5.722e-01 5.877e-01 + 5.765e-01 5.444e-01 5.101e-01 4.896e-01 4.896e-01 5.101e-01 + 5.444e-01 5.765e-01 5.877e-01 + 5.524e-01 5.316e-01 5.317e-01 5.523e-01 5.719e-01 5.679e-01 + 5.368e-01 4.943e-01 4.610e-01 4.489e-01 4.610e-01 4.943e-01 + 5.368e-01 5.679e-01 5.719e-01 + 5.523e-01 5.450e-01 5.523e-01 5.639e-01 5.592e-01 5.282e-01 + 4.799e-01 4.347e-01 4.091e-01 4.091e-01 4.347e-01 4.799e-01 + 5.282e-01 5.592e-01 5.639e-01 + 5.723e-01 5.722e-01 5.719e-01 5.592e-01 5.243e-01 4.710e-01 + 4.163e-01 3.777e-01 3.641e-01 3.777e-01 4.163e-01 4.710e-01 + 5.243e-01 5.592e-01 5.719e-01 + 5.932e-01 5.877e-01 5.679e-01 5.282e-01 4.710e-01 4.097e-01 + 3.605e-01 3.340e-01 3.340e-01 3.605e-01 4.097e-01 4.710e-01 + 5.282e-01 5.679e-01 5.877e-01 + 5.958e-01 5.765e-01 5.368e-01 4.799e-01 4.163e-01 3.605e-01 + 3.234e-01 3.106e-01 3.234e-01 3.605e-01 4.163e-01 4.799e-01 + 5.368e-01 5.765e-01 5.958e-01 + 5.767e-01 5.444e-01 4.943e-01 4.347e-01 3.777e-01 3.340e-01 + 3.106e-01 3.106e-01 3.340e-01 3.777e-01 4.347e-01 4.943e-01 + 5.444e-01 5.767e-01 5.877e-01 + 5.475e-01 5.101e-01 4.610e-01 4.091e-01 3.641e-01 3.340e-01 + 3.234e-01 3.340e-01 3.641e-01 4.091e-01 4.610e-01 5.101e-01 + 5.475e-01 5.675e-01 5.675e-01 + 5.238e-01 4.896e-01 4.489e-01 4.091e-01 3.777e-01 3.605e-01 + 3.605e-01 3.777e-01 4.091e-01 4.489e-01 4.896e-01 5.238e-01 + 5.462e-01 5.538e-01 5.462e-01 + 5.151e-01 4.896e-01 4.610e-01 4.347e-01 4.163e-01 4.097e-01 + 4.163e-01 4.347e-01 4.610e-01 4.896e-01 5.151e-01 5.333e-01 + 5.425e-01 5.425e-01 5.333e-01 + 5.238e-01 5.101e-01 4.943e-01 4.799e-01 4.710e-01 4.710e-01 + 4.799e-01 4.943e-01 5.101e-01 5.238e-01 5.333e-01 5.382e-01 + 5.396e-01 5.382e-01 5.333e-01 + 5.475e-01 5.444e-01 5.368e-01 5.282e-01 5.243e-01 5.282e-01 + 5.368e-01 5.444e-01 5.475e-01 5.462e-01 5.425e-01 5.396e-01 + 5.396e-01 5.425e-01 5.462e-01 + 5.767e-01 5.765e-01 5.679e-01 5.592e-01 5.592e-01 5.679e-01 + 5.765e-01 5.767e-01 5.675e-01 5.538e-01 5.425e-01 5.382e-01 + 5.425e-01 5.538e-01 5.675e-01 + 5.958e-01 5.877e-01 5.719e-01 5.639e-01 5.719e-01 5.877e-01 + 5.958e-01 5.877e-01 5.675e-01 5.462e-01 5.333e-01 5.333e-01 + 5.462e-01 5.675e-01 5.877e-01 + 5.123e-01 4.445e-01 4.158e-01 4.448e-01 5.121e-01 5.723e-01 + 5.920e-01 5.743e-01 5.439e-01 5.238e-01 5.238e-01 5.439e-01 + 5.743e-01 5.920e-01 5.723e-01 + 4.445e-01 3.866e-01 3.869e-01 4.448e-01 5.234e-01 5.719e-01 + 5.716e-01 5.409e-01 5.101e-01 4.982e-01 5.101e-01 5.409e-01 + 5.716e-01 5.719e-01 5.235e-01 + 4.158e-01 3.869e-01 4.160e-01 4.843e-01 5.440e-01 5.592e-01 + 5.332e-01 4.943e-01 4.693e-01 4.693e-01 4.943e-01 5.332e-01 + 5.592e-01 5.440e-01 4.842e-01 + 4.448e-01 4.448e-01 4.843e-01 5.309e-01 5.478e-01 5.243e-01 + 4.799e-01 4.424e-01 4.286e-01 4.424e-01 4.799e-01 5.243e-01 + 5.478e-01 5.309e-01 4.842e-01 + 5.121e-01 5.234e-01 5.440e-01 5.478e-01 5.204e-01 4.710e-01 + 4.233e-01 3.959e-01 3.959e-01 4.233e-01 4.710e-01 5.204e-01 + 5.478e-01 5.440e-01 5.234e-01 + 5.723e-01 5.719e-01 5.592e-01 5.243e-01 4.710e-01 4.163e-01 + 3.777e-01 3.641e-01 3.777e-01 4.163e-01 4.710e-01 5.243e-01 + 5.592e-01 5.719e-01 5.722e-01 + 5.920e-01 5.716e-01 5.332e-01 4.799e-01 4.233e-01 3.777e-01 + 3.529e-01 3.528e-01 3.777e-01 4.233e-01 4.799e-01 5.332e-01 + 5.716e-01 5.920e-01 5.980e-01 + 5.743e-01 5.409e-01 4.943e-01 4.424e-01 3.959e-01 3.641e-01 + 3.528e-01 3.641e-01 3.959e-01 4.424e-01 4.943e-01 5.409e-01 + 5.743e-01 5.910e-01 5.910e-01 + 5.439e-01 5.101e-01 4.693e-01 4.286e-01 3.959e-01 3.777e-01 + 3.777e-01 3.959e-01 4.286e-01 4.693e-01 5.101e-01 5.439e-01 + 5.655e-01 5.729e-01 5.655e-01 + 5.238e-01 4.982e-01 4.693e-01 4.424e-01 4.233e-01 4.163e-01 + 4.233e-01 4.424e-01 4.693e-01 4.982e-01 5.238e-01 5.421e-01 + 5.514e-01 5.514e-01 5.421e-01 + 5.238e-01 5.101e-01 4.943e-01 4.799e-01 4.710e-01 4.710e-01 + 4.799e-01 4.943e-01 5.101e-01 5.238e-01 5.333e-01 5.382e-01 + 5.396e-01 5.382e-01 5.333e-01 + 5.439e-01 5.409e-01 5.332e-01 5.243e-01 5.204e-01 5.243e-01 + 5.332e-01 5.409e-01 5.439e-01 5.421e-01 5.382e-01 5.353e-01 + 5.353e-01 5.382e-01 5.421e-01 + 5.743e-01 5.716e-01 5.592e-01 5.478e-01 5.478e-01 5.592e-01 + 5.716e-01 5.743e-01 5.655e-01 5.514e-01 5.396e-01 5.353e-01 + 5.396e-01 5.514e-01 5.655e-01 + 5.920e-01 5.719e-01 5.440e-01 5.309e-01 5.440e-01 5.719e-01 + 5.920e-01 5.910e-01 5.729e-01 5.514e-01 5.382e-01 5.382e-01 + 5.514e-01 5.729e-01 5.910e-01 + 5.723e-01 5.235e-01 4.842e-01 4.842e-01 5.234e-01 5.722e-01 + 5.980e-01 5.910e-01 5.655e-01 5.421e-01 5.333e-01 5.421e-01 + 5.655e-01 5.910e-01 5.980e-01 + 3.125e-01 2.336e-01 2.333e-01 3.128e-01 4.448e-01 5.523e-01 + 5.892e-01 5.743e-01 5.475e-01 5.361e-01 5.475e-01 5.743e-01 + 5.892e-01 5.524e-01 4.446e-01 + 2.336e-01 1.939e-01 2.329e-01 3.473e-01 4.842e-01 5.639e-01 + 5.716e-01 5.444e-01 5.216e-01 5.216e-01 5.444e-01 5.716e-01 + 5.639e-01 4.842e-01 3.470e-01 + 2.333e-01 2.329e-01 3.090e-01 4.328e-01 5.309e-01 5.592e-01 + 5.368e-01 5.049e-01 4.916e-01 5.049e-01 5.368e-01 5.592e-01 + 5.309e-01 4.328e-01 3.092e-01 + 3.128e-01 3.473e-01 4.328e-01 5.158e-01 5.478e-01 5.282e-01 + 4.895e-01 4.632e-01 4.632e-01 4.895e-01 5.282e-01 5.478e-01 + 5.158e-01 4.328e-01 3.473e-01 + 4.448e-01 4.842e-01 5.309e-01 5.478e-01 5.243e-01 4.799e-01 + 4.424e-01 4.286e-01 4.424e-01 4.799e-01 5.243e-01 5.478e-01 + 5.309e-01 4.843e-01 4.448e-01 + 5.523e-01 5.639e-01 5.592e-01 5.282e-01 4.799e-01 4.347e-01 + 4.091e-01 4.091e-01 4.347e-01 4.799e-01 5.282e-01 5.592e-01 + 5.639e-01 5.523e-01 5.450e-01 + 5.892e-01 5.716e-01 5.368e-01 4.895e-01 4.424e-01 4.091e-01 + 3.972e-01 4.091e-01 4.424e-01 4.895e-01 5.368e-01 5.716e-01 + 5.892e-01 5.945e-01 5.945e-01 + 5.743e-01 5.444e-01 5.049e-01 4.632e-01 4.286e-01 4.091e-01 + 4.091e-01 4.286e-01 4.632e-01 5.049e-01 5.444e-01 5.743e-01 + 5.914e-01 5.967e-01 5.914e-01 + 5.475e-01 5.216e-01 4.916e-01 4.632e-01 4.424e-01 4.347e-01 + 4.424e-01 4.632e-01 4.916e-01 5.216e-01 5.475e-01 5.655e-01 + 5.743e-01 5.743e-01 5.655e-01 + 5.361e-01 5.216e-01 5.049e-01 4.895e-01 4.799e-01 4.799e-01 + 4.895e-01 5.049e-01 5.216e-01 5.361e-01 5.462e-01 5.514e-01 + 5.528e-01 5.514e-01 5.462e-01 + 5.475e-01 5.444e-01 5.368e-01 5.282e-01 5.243e-01 5.282e-01 + 5.368e-01 5.444e-01 5.475e-01 5.462e-01 5.425e-01 5.396e-01 + 5.396e-01 5.425e-01 5.462e-01 + 5.743e-01 5.716e-01 5.592e-01 5.478e-01 5.478e-01 5.592e-01 + 5.716e-01 5.743e-01 5.655e-01 5.514e-01 5.396e-01 5.353e-01 + 5.396e-01 5.514e-01 5.655e-01 + 5.892e-01 5.639e-01 5.309e-01 5.158e-01 5.309e-01 5.639e-01 + 5.892e-01 5.914e-01 5.743e-01 5.528e-01 5.396e-01 5.396e-01 + 5.528e-01 5.743e-01 5.914e-01 + 5.524e-01 4.842e-01 4.328e-01 4.328e-01 4.843e-01 5.523e-01 + 5.945e-01 5.967e-01 5.743e-01 5.514e-01 5.425e-01 5.514e-01 + 5.743e-01 5.967e-01 5.945e-01 + 4.446e-01 3.470e-01 3.092e-01 3.473e-01 4.448e-01 5.450e-01 + 5.945e-01 5.914e-01 5.655e-01 5.462e-01 5.462e-01 5.655e-01 + 5.914e-01 5.945e-01 5.450e-01 + 1.191e-01 8.700e-02 1.187e-01 2.333e-01 4.158e-01 5.524e-01 + 5.920e-01 5.767e-01 5.565e-01 5.564e-01 5.767e-01 5.920e-01 + 5.524e-01 4.158e-01 2.335e-01 + 8.700e-02 8.766e-02 1.534e-01 3.092e-01 4.842e-01 5.719e-01 + 5.765e-01 5.525e-01 5.404e-01 5.525e-01 5.765e-01 5.719e-01 + 4.842e-01 3.093e-01 1.536e-01 + 1.187e-01 1.534e-01 2.689e-01 4.328e-01 5.440e-01 5.679e-01 + 5.450e-01 5.219e-01 5.219e-01 5.450e-01 5.679e-01 5.440e-01 + 4.328e-01 2.689e-01 1.534e-01 + 2.333e-01 3.092e-01 4.328e-01 5.309e-01 5.592e-01 5.368e-01 + 5.049e-01 4.916e-01 5.049e-01 5.368e-01 5.592e-01 5.309e-01 + 4.328e-01 3.090e-01 2.329e-01 + 4.158e-01 4.842e-01 5.440e-01 5.592e-01 5.332e-01 4.943e-01 + 4.693e-01 4.693e-01 4.943e-01 5.332e-01 5.592e-01 5.440e-01 + 4.843e-01 4.160e-01 3.869e-01 + 5.524e-01 5.719e-01 5.679e-01 5.368e-01 4.943e-01 4.610e-01 + 4.489e-01 4.610e-01 4.943e-01 5.368e-01 5.679e-01 5.719e-01 + 5.523e-01 5.317e-01 5.316e-01 + 5.920e-01 5.765e-01 5.450e-01 5.049e-01 4.693e-01 4.489e-01 + 4.489e-01 4.693e-01 5.049e-01 5.450e-01 5.765e-01 5.920e-01 + 5.945e-01 5.936e-01 5.945e-01 + 5.767e-01 5.525e-01 5.219e-01 4.916e-01 4.693e-01 4.610e-01 + 4.693e-01 4.916e-01 5.219e-01 5.525e-01 5.767e-01 5.910e-01 + 5.967e-01 5.967e-01 5.910e-01 + 5.565e-01 5.404e-01 5.219e-01 5.049e-01 4.943e-01 4.943e-01 + 5.049e-01 5.219e-01 5.404e-01 5.564e-01 5.675e-01 5.729e-01 + 5.743e-01 5.729e-01 5.675e-01 + 5.564e-01 5.525e-01 5.450e-01 5.368e-01 5.332e-01 5.368e-01 + 5.450e-01 5.525e-01 5.564e-01 5.564e-01 5.538e-01 5.514e-01 + 5.514e-01 5.538e-01 5.564e-01 + 5.767e-01 5.765e-01 5.679e-01 5.592e-01 5.592e-01 5.679e-01 + 5.765e-01 5.767e-01 5.675e-01 5.538e-01 5.425e-01 5.382e-01 + 5.425e-01 5.538e-01 5.675e-01 + 5.920e-01 5.719e-01 5.440e-01 5.309e-01 5.440e-01 5.719e-01 + 5.920e-01 5.910e-01 5.729e-01 5.514e-01 5.382e-01 5.382e-01 + 5.514e-01 5.729e-01 5.910e-01 + 5.524e-01 4.842e-01 4.328e-01 4.328e-01 4.843e-01 5.523e-01 + 5.945e-01 5.967e-01 5.743e-01 5.514e-01 5.425e-01 5.514e-01 + 5.743e-01 5.967e-01 5.945e-01 + 4.158e-01 3.093e-01 2.689e-01 3.090e-01 4.160e-01 5.317e-01 + 5.936e-01 5.967e-01 5.729e-01 5.538e-01 5.538e-01 5.729e-01 + 5.967e-01 5.936e-01 5.316e-01 + 2.335e-01 1.536e-01 1.534e-01 2.329e-01 3.869e-01 5.316e-01 + 5.945e-01 5.910e-01 5.675e-01 5.564e-01 5.675e-01 5.910e-01 + 5.945e-01 5.316e-01 3.867e-01 + 4.023e-02 4.072e-02 8.700e-02 2.336e-01 4.445e-01 5.723e-01 + 5.958e-01 5.777e-01 5.665e-01 5.777e-01 5.958e-01 5.723e-01 + 4.446e-01 2.335e-01 8.701e-02 + 4.072e-02 6.094e-02 1.536e-01 3.470e-01 5.235e-01 5.877e-01 + 5.803e-01 5.609e-01 5.609e-01 5.803e-01 5.877e-01 5.235e-01 + 3.470e-01 1.536e-01 6.094e-02 + 8.700e-02 1.536e-01 3.093e-01 4.842e-01 5.719e-01 5.765e-01 + 5.525e-01 5.404e-01 5.525e-01 5.765e-01 5.719e-01 4.842e-01 + 3.092e-01 1.534e-01 8.766e-02 + 2.336e-01 3.470e-01 4.842e-01 5.639e-01 5.716e-01 5.444e-01 + 5.216e-01 5.216e-01 5.444e-01 5.716e-01 5.639e-01 4.842e-01 + 3.473e-01 2.329e-01 1.939e-01 + 4.445e-01 5.235e-01 5.719e-01 5.716e-01 5.409e-01 5.101e-01 + 4.982e-01 5.101e-01 5.409e-01 5.716e-01 5.719e-01 5.234e-01 + 4.448e-01 3.869e-01 3.866e-01 + 5.723e-01 5.877e-01 5.765e-01 5.444e-01 5.101e-01 4.896e-01 + 4.896e-01 5.101e-01 5.444e-01 5.765e-01 5.877e-01 5.722e-01 + 5.450e-01 5.316e-01 5.451e-01 + 5.958e-01 5.803e-01 5.525e-01 5.216e-01 4.982e-01 4.896e-01 + 4.982e-01 5.216e-01 5.525e-01 5.803e-01 5.958e-01 5.980e-01 + 5.945e-01 5.945e-01 5.980e-01 + 5.777e-01 5.609e-01 5.404e-01 5.216e-01 5.101e-01 5.101e-01 + 5.216e-01 5.404e-01 5.608e-01 5.777e-01 5.877e-01 5.910e-01 + 5.914e-01 5.910e-01 5.877e-01 + 5.665e-01 5.609e-01 5.525e-01 5.444e-01 5.409e-01 5.444e-01 + 5.525e-01 5.608e-01 5.665e-01 5.685e-01 5.675e-01 5.655e-01 + 5.655e-01 5.675e-01 5.685e-01 + 5.777e-01 5.803e-01 5.765e-01 5.716e-01 5.716e-01 5.765e-01 + 5.803e-01 5.777e-01 5.685e-01 5.564e-01 5.462e-01 5.421e-01 + 5.462e-01 5.564e-01 5.685e-01 + 5.958e-01 5.877e-01 5.719e-01 5.639e-01 5.719e-01 5.877e-01 + 5.958e-01 5.877e-01 5.675e-01 5.462e-01 5.333e-01 5.333e-01 + 5.462e-01 5.675e-01 5.877e-01 + 5.723e-01 5.235e-01 4.842e-01 4.842e-01 5.234e-01 5.722e-01 + 5.980e-01 5.910e-01 5.655e-01 5.421e-01 5.333e-01 5.421e-01 + 5.655e-01 5.910e-01 5.980e-01 + 4.446e-01 3.470e-01 3.092e-01 3.473e-01 4.448e-01 5.450e-01 + 5.945e-01 5.914e-01 5.655e-01 5.462e-01 5.462e-01 5.655e-01 + 5.914e-01 5.945e-01 5.450e-01 + 2.335e-01 1.536e-01 1.534e-01 2.329e-01 3.869e-01 5.316e-01 + 5.945e-01 5.910e-01 5.675e-01 5.564e-01 5.675e-01 5.910e-01 + 5.945e-01 5.316e-01 3.867e-01 + 8.701e-02 6.094e-02 8.766e-02 1.939e-01 3.866e-01 5.451e-01 + 5.980e-01 5.877e-01 5.685e-01 5.685e-01 5.877e-01 5.980e-01 + 5.450e-01 3.867e-01 1.939e-01 diff --git a/tests/07_OFDFT/25_OF_MD_LDA/INPUT b/tests/07_OFDFT/25_OF_MD_LDA/INPUT index 47a88e2397..f859f72dff 100644 --- a/tests/07_OFDFT/25_OF_MD_LDA/INPUT +++ b/tests/07_OFDFT/25_OF_MD_LDA/INPUT @@ -1,33 +1,33 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation md -esolver_type ofdft +suffix autotest +calculation md +esolver_type ofdft -pseudo_dir ../../PP_ORB -pseudo_rcut 16 -cal_force 1 -cal_stress 1 +pseudo_dir ../../PP_ORB +pseudo_rcut 16 +cal_force 1 +cal_stress 1 #Parameters (2.Iteration) -ecutwfc 17 -scf_nmax 100 +ecutwfc 17 +scf_nmax 100 #OFDFT -of_kinetic wt -of_method tn -of_full_pw 1 -of_full_pw_dim 1 +of_kinetic wt +of_method tn +of_full_pw 1 +of_full_pw_dim 1 #Parameters (3.Basis) -basis_type pw +basis_type pw -md_restart 0 -md_type nvt -md_nstep 2 -md_dt 0.25 -md_tfirst 58022.52706 -md_dumpfreq 10 -md_tfreq 1.08 -md_tchain 1 -nbspline 10 # be sure fft dimension is odd +md_restart 0 +md_type nvt +md_nstep 3 +md_dt 0.25 +md_tfirst 58022.52706 +md_dumpfreq 10 +md_tfreq 1.08 +md_tchain 1 +nbspline 10 # be sure fft dimension is odd diff --git a/tests/07_OFDFT/26_OF_MD_LibxcPBE/INPUT b/tests/07_OFDFT/26_OF_MD_LibxcPBE/INPUT index c72751096f..99034663a6 100644 --- a/tests/07_OFDFT/26_OF_MD_LibxcPBE/INPUT +++ b/tests/07_OFDFT/26_OF_MD_LibxcPBE/INPUT @@ -1,35 +1,35 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation md -esolver_type ofdft +suffix autotest +calculation md +esolver_type ofdft -pseudo_dir ../../PP_ORB -pseudo_rcut 16 -cal_force 1 -cal_stress 1 +pseudo_dir ../../PP_ORB +pseudo_rcut 16 +cal_force 1 +cal_stress 1 #Parameters (2.Iteration) -ecutwfc 17 -scf_nmax 100 +ecutwfc 17 +scf_nmax 100 #OFDFT -of_kinetic wt -of_method tn -of_full_pw 1 -of_full_pw_dim 1 +of_kinetic wt +of_method tn +of_full_pw 1 +of_full_pw_dim 1 #Parameters (3.Basis) -basis_type pw +basis_type pw -md_restart 0 -md_type nvt -md_nstep 2 -md_dt 0.25 -md_tfirst 58022.52706 -md_dumpfreq 10 -md_tfreq 1.08 -md_tchain 1 -nbspline 10 # be sure fft dimension is odd +md_restart 0 +md_type nvt +md_nstep 3 +md_dt 0.25 +md_tfirst 58022.52706 +md_dumpfreq 10 +md_tfreq 1.08 +md_tchain 1 +nbspline 10 # be sure fft dimension is odd -dft_functional XC_GGA_X_PBE+XC_GGA_C_PBE +dft_functional XC_GGA_X_PBE+XC_GGA_C_PBE diff --git a/tests/07_OFDFT/27_OF_CR_LDA/INPUT b/tests/07_OFDFT/27_OF_CR_LDA/INPUT index b7baed4110..1faf123ec6 100644 --- a/tests/07_OFDFT/27_OF_CR_LDA/INPUT +++ b/tests/07_OFDFT/27_OF_CR_LDA/INPUT @@ -1,23 +1,23 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation cell-relax -esolver_type ofdft -pseudo_dir ../../PP_ORB -pseudo_rcut 16 +suffix autotest +calculation cell-relax +esolver_type ofdft +pseudo_dir ../../PP_ORB +pseudo_rcut 16 #out_stru 1 #Parameters (2.Iteration) -ecutwfc 20 -scf_nmax 100 +ecutwfc 20 +scf_nmax 100 #OFDFT -of_kinetic wt -of_method tn -of_full_pw 1 -of_full_pw_dim 1 +of_kinetic wt +of_method tn +of_full_pw 1 +of_full_pw_dim 1 #Parameters (3.Basis) -basis_type pw +basis_type pw -relax_nmax 5 +relax_nmax 5 diff --git a/tests/07_OFDFT/28_OF_KE_XWM/INPUT b/tests/07_OFDFT/28_OF_KE_XWM/INPUT index 50408c9273..c16f16cc03 100644 --- a/tests/07_OFDFT/28_OF_KE_XWM/INPUT +++ b/tests/07_OFDFT/28_OF_KE_XWM/INPUT @@ -1,26 +1,25 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf -esolver_type ofdft +suffix autotest +calculation scf +esolver_type ofdft -symmetry 1 -pseudo_dir ../../PP_ORB/ -pseudo_rcut 16 -nspin 1 -cal_force 1 -test_force 1 +symmetry 1 +pseudo_dir ../../PP_ORB/ +pseudo_rcut 16 +nspin 1 +cal_force 1 +test_force 1 #Parameters (2.Iteration) -ecutwfc 20 -scf_nmax 50 +ecutwfc 20 +scf_nmax 50 #OFDFT -of_kinetic xwm -of_method tn -of_conv energy -of_tole 2e-6 +of_kinetic xwm +of_method tn +of_conv energy +of_tole 2e-6 #Parameters (3.Basis) -basis_type pw - +basis_type pw diff --git a/tests/07_OFDFT/29_OF_XWM_para/INPUT b/tests/07_OFDFT/29_OF_XWM_para/INPUT index b8d23401f2..c58ecba4ea 100644 --- a/tests/07_OFDFT/29_OF_XWM_para/INPUT +++ b/tests/07_OFDFT/29_OF_XWM_para/INPUT @@ -1,28 +1,27 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf -esolver_type ofdft +suffix autotest +calculation scf +esolver_type ofdft -symmetry 1 -pseudo_dir ../../PP_ORB/ -pseudo_rcut 16 -nspin 1 -cal_force 1 -test_force 1 +symmetry 1 +pseudo_dir ../../PP_ORB/ +pseudo_rcut 16 +nspin 1 +cal_force 1 +test_force 1 #Parameters (2.Iteration) -ecutwfc 20 -scf_nmax 50 +ecutwfc 20 +scf_nmax 50 #OFDFT -of_kinetic xwm -of_xwm_rho_ref 0.01 -of_xwm_kappa 0.1 -of_method tn -of_conv energy -of_tole 2e-6 +of_kinetic xwm +of_xwm_rho_ref 0.01 +of_xwm_kappa 0.1 +of_method tn +of_conv energy +of_tole 2e-6 #Parameters (3.Basis) -basis_type pw - +basis_type pw diff --git a/tests/07_OFDFT/30_TDOFDFT_Al/INPUT b/tests/07_OFDFT/30_TDOFDFT_Al/INPUT new file mode 100644 index 0000000000..8c5bc4f8b9 --- /dev/null +++ b/tests/07_OFDFT/30_TDOFDFT_Al/INPUT @@ -0,0 +1,36 @@ +INPUT_PARAMETERS +#Parameters (1.General) +suffix autotest +calculation md +esolver_type tdofdft + +pseudo_dir ../../PP_ORB +pseudo_rcut 16 +cal_force 1 +cal_stress 1 + +#Parameters (2.Iteration) +ecutwfc 17 +scf_nmax 100 + +#OFDFT +of_kinetic tf+ +of_method tn +of_full_pw 1 +of_full_pw_dim 1 +of_cd 0 + +#Parameters (3.Basis) +basis_type pw + +init_vel 1 + +md_restart 0 +md_type nve +md_nstep 3 +md_dt 0.25 +md_tfirst 58022.52706 +md_dumpfreq 10 +md_tfreq 1.08 +md_tchain 1 +nbspline 10 # be sure fft dimension is odd diff --git a/tests/03_NAO_multik/40_NO_ELF/KPT b/tests/07_OFDFT/30_TDOFDFT_Al/KPT similarity index 100% rename from tests/03_NAO_multik/40_NO_ELF/KPT rename to tests/07_OFDFT/30_TDOFDFT_Al/KPT diff --git a/tests/07_OFDFT/30_TDOFDFT_Al/README b/tests/07_OFDFT/30_TDOFDFT_Al/README new file mode 100644 index 0000000000..be31e1c21f --- /dev/null +++ b/tests/07_OFDFT/30_TDOFDFT_Al/README @@ -0,0 +1 @@ +Test case without current dependent potential in TDOFDFT diff --git a/tests/07_OFDFT/30_TDOFDFT_Al/STRU b/tests/07_OFDFT/30_TDOFDFT_Al/STRU new file mode 100644 index 0000000000..1498bc2cc1 --- /dev/null +++ b/tests/07_OFDFT/30_TDOFDFT_Al/STRU @@ -0,0 +1,19 @@ +ATOMIC_SPECIES +Al 26.98 al.lda.lps blps + +LATTICE_CONSTANT +7.50241114482312 // add lattice constant + +LATTICE_VECTORS +0.000000000000 0.500000000000 0.500000000000 +0.500000000000 0.000000000000 0.500000000000 +0.500000000000 0.500000000000 0.000000000000 + +ATOMIC_POSITIONS +Direct + +Al +0 +2 +0.000000000000 0.000000000000 0.000000000000 1 1 1 v 0 0 0.5 +0.500000000000 0.500000000000 0.500000000000 1 1 1 v 0 0 -0.5 diff --git a/tests/07_OFDFT/30_TDOFDFT_Al/result.ref b/tests/07_OFDFT/30_TDOFDFT_Al/result.ref new file mode 100644 index 0000000000..b53afa1a10 --- /dev/null +++ b/tests/07_OFDFT/30_TDOFDFT_Al/result.ref @@ -0,0 +1,5 @@ +etotref 226.9979568201541724 +etotperatomref 113.4989784101 +totalforceref 562.524006 +totalstressref 194931.772028 +totaltimeref 0.45 diff --git a/tests/07_OFDFT/30_TDOFDFT_Al/threshold b/tests/07_OFDFT/30_TDOFDFT_Al/threshold new file mode 100644 index 0000000000..a137b5cae7 --- /dev/null +++ b/tests/07_OFDFT/30_TDOFDFT_Al/threshold @@ -0,0 +1,4 @@ +threshold 0.0001 +force_threshold 0.001 +stress_threshold 0.01 +fatal_threshold 1 diff --git a/tests/07_OFDFT/31_TDOFDFT_Al_CD/INPUT b/tests/07_OFDFT/31_TDOFDFT_Al_CD/INPUT new file mode 100644 index 0000000000..0e8a48f680 --- /dev/null +++ b/tests/07_OFDFT/31_TDOFDFT_Al_CD/INPUT @@ -0,0 +1,37 @@ +INPUT_PARAMETERS +#Parameters (1.General) +suffix autotest +calculation md +esolver_type tdofdft + +pseudo_dir ../../PP_ORB +pseudo_rcut 16 +cal_force 1 +cal_stress 1 + +#Parameters (2.Iteration) +ecutwfc 17 +scf_nmax 100 + +#OFDFT +of_kinetic tf+ +of_method tn +of_full_pw 1 +of_full_pw_dim 1 +of_cd 1 +of_mcd_alpha 1.0 + +#Parameters (3.Basis) +basis_type pw + +init_vel 1 + +md_restart 0 +md_type nve +md_nstep 3 +md_dt 0.25 +md_tfirst 58022.52706 +md_dumpfreq 10 +md_tfreq 1.08 +md_tchain 1 +nbspline 10 # be sure fft dimension is odd diff --git a/tests/03_NAO_multik/44_NO_KP_MD_OW/KPT b/tests/07_OFDFT/31_TDOFDFT_Al_CD/KPT similarity index 100% rename from tests/03_NAO_multik/44_NO_KP_MD_OW/KPT rename to tests/07_OFDFT/31_TDOFDFT_Al_CD/KPT diff --git a/tests/07_OFDFT/31_TDOFDFT_Al_CD/README b/tests/07_OFDFT/31_TDOFDFT_Al_CD/README new file mode 100644 index 0000000000..d09f6a4ab9 --- /dev/null +++ b/tests/07_OFDFT/31_TDOFDFT_Al_CD/README @@ -0,0 +1 @@ +Test case with current dependent potential in TDOFDFT diff --git a/tests/07_OFDFT/31_TDOFDFT_Al_CD/STRU b/tests/07_OFDFT/31_TDOFDFT_Al_CD/STRU new file mode 100644 index 0000000000..1498bc2cc1 --- /dev/null +++ b/tests/07_OFDFT/31_TDOFDFT_Al_CD/STRU @@ -0,0 +1,19 @@ +ATOMIC_SPECIES +Al 26.98 al.lda.lps blps + +LATTICE_CONSTANT +7.50241114482312 // add lattice constant + +LATTICE_VECTORS +0.000000000000 0.500000000000 0.500000000000 +0.500000000000 0.000000000000 0.500000000000 +0.500000000000 0.500000000000 0.000000000000 + +ATOMIC_POSITIONS +Direct + +Al +0 +2 +0.000000000000 0.000000000000 0.000000000000 1 1 1 v 0 0 0.5 +0.500000000000 0.500000000000 0.500000000000 1 1 1 v 0 0 -0.5 diff --git a/tests/07_OFDFT/31_TDOFDFT_Al_CD/result.ref b/tests/07_OFDFT/31_TDOFDFT_Al_CD/result.ref new file mode 100644 index 0000000000..286a081395 --- /dev/null +++ b/tests/07_OFDFT/31_TDOFDFT_Al_CD/result.ref @@ -0,0 +1,5 @@ +etotref 225.6175831066692297 +etotperatomref 112.8087915533 +totalforceref 488.530072 +totalstressref 185999.479726 +totaltimeref 0.09 diff --git a/tests/07_OFDFT/31_TDOFDFT_Al_CD/threshold b/tests/07_OFDFT/31_TDOFDFT_Al_CD/threshold new file mode 100644 index 0000000000..a137b5cae7 --- /dev/null +++ b/tests/07_OFDFT/31_TDOFDFT_Al_CD/threshold @@ -0,0 +1,4 @@ +threshold 0.0001 +force_threshold 0.001 +stress_threshold 0.01 +fatal_threshold 1 diff --git a/tests/07_OFDFT/32_TDOFDFT_Al_mCD/INPUT b/tests/07_OFDFT/32_TDOFDFT_Al_mCD/INPUT new file mode 100644 index 0000000000..cfccd2470f --- /dev/null +++ b/tests/07_OFDFT/32_TDOFDFT_Al_mCD/INPUT @@ -0,0 +1,37 @@ +INPUT_PARAMETERS +#Parameters (1.General) +suffix autotest +calculation md +esolver_type tdofdft + +pseudo_dir ../../PP_ORB +pseudo_rcut 16 +cal_force 1 +cal_stress 1 + +#Parameters (2.Iteration) +ecutwfc 17 +scf_nmax 100 + +#OFDFT +of_kinetic tf+ +of_method tn +of_full_pw 1 +of_full_pw_dim 1 +of_cd 1 +of_mcd_alpha 2.0 + +#Parameters (3.Basis) +basis_type pw + +init_vel 1 + +md_restart 0 +md_type nve +md_nstep 3 +md_dt 0.25 +md_tfirst 58022.52706 +md_dumpfreq 10 +md_tfreq 1.08 +md_tchain 1 +nbspline 10 # be sure fft dimension is odd diff --git a/tests/09_DeePKS/100_NO_GO_deepks_UT/KPT b/tests/07_OFDFT/32_TDOFDFT_Al_mCD/KPT similarity index 100% rename from tests/09_DeePKS/100_NO_GO_deepks_UT/KPT rename to tests/07_OFDFT/32_TDOFDFT_Al_mCD/KPT diff --git a/tests/07_OFDFT/32_TDOFDFT_Al_mCD/README b/tests/07_OFDFT/32_TDOFDFT_Al_mCD/README new file mode 100644 index 0000000000..cedbc26afd --- /dev/null +++ b/tests/07_OFDFT/32_TDOFDFT_Al_mCD/README @@ -0,0 +1 @@ +Test case with modified current dependent potential (alpha=2.0) in TDOFDFT diff --git a/tests/07_OFDFT/32_TDOFDFT_Al_mCD/STRU b/tests/07_OFDFT/32_TDOFDFT_Al_mCD/STRU new file mode 100644 index 0000000000..1498bc2cc1 --- /dev/null +++ b/tests/07_OFDFT/32_TDOFDFT_Al_mCD/STRU @@ -0,0 +1,19 @@ +ATOMIC_SPECIES +Al 26.98 al.lda.lps blps + +LATTICE_CONSTANT +7.50241114482312 // add lattice constant + +LATTICE_VECTORS +0.000000000000 0.500000000000 0.500000000000 +0.500000000000 0.000000000000 0.500000000000 +0.500000000000 0.500000000000 0.000000000000 + +ATOMIC_POSITIONS +Direct + +Al +0 +2 +0.000000000000 0.000000000000 0.000000000000 1 1 1 v 0 0 0.5 +0.500000000000 0.500000000000 0.500000000000 1 1 1 v 0 0 -0.5 diff --git a/tests/07_OFDFT/32_TDOFDFT_Al_mCD/result.ref b/tests/07_OFDFT/32_TDOFDFT_Al_mCD/result.ref new file mode 100644 index 0000000000..a6e3cab7f3 --- /dev/null +++ b/tests/07_OFDFT/32_TDOFDFT_Al_mCD/result.ref @@ -0,0 +1,5 @@ +etotref 223.1193797466232809 +etotperatomref 111.5596898733 +totalforceref 386.437466 +totalstressref 181323.311310 +totaltimeref 0.08 diff --git a/tests/07_OFDFT/32_TDOFDFT_Al_mCD/threshold b/tests/07_OFDFT/32_TDOFDFT_Al_mCD/threshold new file mode 100644 index 0000000000..a137b5cae7 --- /dev/null +++ b/tests/07_OFDFT/32_TDOFDFT_Al_mCD/threshold @@ -0,0 +1,4 @@ +threshold 0.0001 +force_threshold 0.001 +stress_threshold 0.01 +fatal_threshold 1 diff --git a/tests/07_OFDFT/33_OF_out_chg/INPUT b/tests/07_OFDFT/33_OF_out_chg/INPUT new file mode 100644 index 0000000000..443eb7305c --- /dev/null +++ b/tests/07_OFDFT/33_OF_out_chg/INPUT @@ -0,0 +1,25 @@ +INPUT_PARAMETERS +#Parameters (1.General) +suffix autotest +calculation scf +esolver_type ofdft + +symmetry 1 +pseudo_dir ../../PP_ORB/ +pseudo_rcut 16 +nspin 1 + +#Parameters (2.Iteration) +ecutwfc 20 +scf_nmax 50 + +#OFDFT +of_kinetic wt +of_method tn +of_conv energy +of_tole 2e-6 + +#Parameters (3.Basis) +basis_type pw + +out_chg 1 diff --git a/tests/09_DeePKS/101_PW_ORB_deepks_d/KPT b/tests/07_OFDFT/33_OF_out_chg/KPT similarity index 100% rename from tests/09_DeePKS/101_PW_ORB_deepks_d/KPT rename to tests/07_OFDFT/33_OF_out_chg/KPT diff --git a/tests/07_OFDFT/33_OF_out_chg/README b/tests/07_OFDFT/33_OF_out_chg/README new file mode 100644 index 0000000000..2466695ab4 --- /dev/null +++ b/tests/07_OFDFT/33_OF_out_chg/README @@ -0,0 +1 @@ +Test out_chg in OFDFT, symmetry=on diff --git a/tests/07_OFDFT/33_OF_out_chg/STRU b/tests/07_OFDFT/33_OF_out_chg/STRU new file mode 100644 index 0000000000..e797c06432 --- /dev/null +++ b/tests/07_OFDFT/33_OF_out_chg/STRU @@ -0,0 +1,18 @@ +ATOMIC_SPECIES +Al 26.98 al.lda.lps blps + +LATTICE_CONSTANT +7.50241114482312 // add lattice constant + +LATTICE_VECTORS +0.000000000000 0.500000000000 0.500000000000 +0.500000000000 0.000000000000 0.500000000000 +0.500000000000 0.500000000000 0.000000000000 + +ATOMIC_POSITIONS +Direct + +Al +0 +1 + 0.000000000000 0.000000000000 0.000000000000 1 1 1 diff --git a/tests/07_OFDFT/33_OF_out_chg/chg.cube.ref b/tests/07_OFDFT/33_OF_out_chg/chg.cube.ref new file mode 100644 index 0000000000..5209f0206c --- /dev/null +++ b/tests/07_OFDFT/33_OF_out_chg/chg.cube.ref @@ -0,0 +1,682 @@ +Ionic_Step 1 Cubefile created from ABACUS. Inner loop is z, followed by y and x +1 # number of spin directions 0.603379 # Fermi energy, in Ry +1 0.0 0.0 0.0 +15 0.000000 0.250080 0.250080 +15 0.250080 0.000000 0.250080 +15 0.250080 0.250080 0.000000 + 13 3.000000 0.000000 0.000000 0.000000 + 4.393e-03 5.807e-03 1.087e-02 2.000e-02 2.921e-02 3.333e-02 + 3.299e-02 3.184e-02 3.184e-02 3.299e-02 3.333e-02 2.921e-02 + 2.000e-02 1.087e-02 5.807e-03 + 5.807e-03 9.080e-03 1.644e-02 2.596e-02 3.227e-02 3.332e-02 + 3.208e-02 3.140e-02 3.208e-02 3.332e-02 3.227e-02 2.596e-02 + 1.644e-02 9.080e-03 5.807e-03 + 1.087e-02 1.644e-02 2.463e-02 3.124e-02 3.319e-02 3.209e-02 + 3.088e-02 3.088e-02 3.209e-02 3.319e-02 3.124e-02 2.463e-02 + 1.644e-02 1.087e-02 9.080e-03 + 2.000e-02 2.596e-02 3.124e-02 3.306e-02 3.200e-02 3.044e-02 + 2.980e-02 3.044e-02 3.200e-02 3.306e-02 3.124e-02 2.596e-02 + 2.000e-02 1.644e-02 1.644e-02 + 2.921e-02 3.227e-02 3.319e-02 3.200e-02 3.026e-02 2.918e-02 + 2.918e-02 3.026e-02 3.200e-02 3.319e-02 3.227e-02 2.921e-02 + 2.596e-02 2.463e-02 2.596e-02 + 3.333e-02 3.332e-02 3.209e-02 3.044e-02 2.918e-02 2.874e-02 + 2.918e-02 3.044e-02 3.209e-02 3.332e-02 3.333e-02 3.227e-02 + 3.124e-02 3.124e-02 3.227e-02 + 3.299e-02 3.208e-02 3.088e-02 2.980e-02 2.918e-02 2.918e-02 + 2.980e-02 3.088e-02 3.208e-02 3.299e-02 3.332e-02 3.319e-02 + 3.306e-02 3.319e-02 3.332e-02 + 3.184e-02 3.140e-02 3.088e-02 3.044e-02 3.026e-02 3.044e-02 + 3.088e-02 3.140e-02 3.184e-02 3.208e-02 3.209e-02 3.200e-02 + 3.200e-02 3.209e-02 3.208e-02 + 3.184e-02 3.208e-02 3.209e-02 3.200e-02 3.200e-02 3.209e-02 + 3.208e-02 3.184e-02 3.140e-02 3.088e-02 3.044e-02 3.026e-02 + 3.044e-02 3.088e-02 3.140e-02 + 3.299e-02 3.332e-02 3.319e-02 3.306e-02 3.319e-02 3.332e-02 + 3.299e-02 3.208e-02 3.088e-02 2.980e-02 2.918e-02 2.918e-02 + 2.980e-02 3.088e-02 3.208e-02 + 3.333e-02 3.227e-02 3.124e-02 3.124e-02 3.227e-02 3.333e-02 + 3.332e-02 3.209e-02 3.044e-02 2.918e-02 2.874e-02 2.918e-02 + 3.044e-02 3.209e-02 3.332e-02 + 2.921e-02 2.596e-02 2.463e-02 2.596e-02 2.921e-02 3.227e-02 + 3.319e-02 3.200e-02 3.026e-02 2.918e-02 2.918e-02 3.026e-02 + 3.200e-02 3.319e-02 3.227e-02 + 2.000e-02 1.644e-02 1.644e-02 2.000e-02 2.596e-02 3.124e-02 + 3.306e-02 3.200e-02 3.044e-02 2.980e-02 3.044e-02 3.200e-02 + 3.306e-02 3.124e-02 2.596e-02 + 1.087e-02 9.080e-03 1.087e-02 1.644e-02 2.463e-02 3.124e-02 + 3.319e-02 3.209e-02 3.088e-02 3.088e-02 3.209e-02 3.319e-02 + 3.124e-02 2.463e-02 1.644e-02 + 5.807e-03 5.807e-03 9.080e-03 1.644e-02 2.596e-02 3.227e-02 + 3.332e-02 3.208e-02 3.140e-02 3.208e-02 3.332e-02 3.227e-02 + 2.596e-02 1.644e-02 9.080e-03 + 5.807e-03 9.080e-03 1.644e-02 2.596e-02 3.227e-02 3.332e-02 + 3.208e-02 3.140e-02 3.208e-02 3.332e-02 3.227e-02 2.596e-02 + 1.644e-02 9.080e-03 5.807e-03 + 9.080e-03 1.461e-02 2.329e-02 3.085e-02 3.352e-02 3.267e-02 + 3.148e-02 3.148e-02 3.267e-02 3.352e-02 3.085e-02 2.329e-02 + 1.461e-02 9.080e-03 7.373e-03 + 1.644e-02 2.329e-02 3.016e-02 3.336e-02 3.290e-02 3.142e-02 + 3.078e-02 3.142e-02 3.290e-02 3.336e-02 3.016e-02 2.329e-02 + 1.644e-02 1.268e-02 1.268e-02 + 2.596e-02 3.085e-02 3.336e-02 3.293e-02 3.132e-02 3.022e-02 + 3.022e-02 3.132e-02 3.293e-02 3.336e-02 3.085e-02 2.596e-02 + 2.154e-02 1.985e-02 2.154e-02 + 3.227e-02 3.352e-02 3.290e-02 3.132e-02 3.001e-02 2.953e-02 + 3.001e-02 3.132e-02 3.290e-02 3.352e-02 3.227e-02 2.979e-02 + 2.787e-02 2.787e-02 2.979e-02 + 3.332e-02 3.267e-02 3.142e-02 3.022e-02 2.953e-02 2.953e-02 + 3.022e-02 3.142e-02 3.267e-02 3.332e-02 3.303e-02 3.226e-02 + 3.186e-02 3.226e-02 3.303e-02 + 3.208e-02 3.148e-02 3.078e-02 3.022e-02 3.001e-02 3.022e-02 + 3.078e-02 3.148e-02 3.208e-02 3.236e-02 3.228e-02 3.208e-02 + 3.208e-02 3.228e-02 3.236e-02 + 3.140e-02 3.148e-02 3.142e-02 3.132e-02 3.132e-02 3.142e-02 + 3.148e-02 3.140e-02 3.117e-02 3.081e-02 3.046e-02 3.030e-02 + 3.046e-02 3.081e-02 3.117e-02 + 3.208e-02 3.267e-02 3.290e-02 3.293e-02 3.290e-02 3.267e-02 + 3.208e-02 3.117e-02 3.012e-02 2.921e-02 2.866e-02 2.866e-02 + 2.921e-02 3.012e-02 3.117e-02 + 3.332e-02 3.352e-02 3.336e-02 3.336e-02 3.352e-02 3.332e-02 + 3.236e-02 3.081e-02 2.921e-02 2.806e-02 2.765e-02 2.806e-02 + 2.921e-02 3.081e-02 3.236e-02 + 3.227e-02 3.085e-02 3.016e-02 3.085e-02 3.227e-02 3.303e-02 + 3.228e-02 3.046e-02 2.866e-02 2.765e-02 2.765e-02 2.866e-02 + 3.046e-02 3.228e-02 3.303e-02 + 2.596e-02 2.329e-02 2.329e-02 2.596e-02 2.979e-02 3.226e-02 + 3.208e-02 3.030e-02 2.866e-02 2.806e-02 2.866e-02 3.030e-02 + 3.208e-02 3.226e-02 2.979e-02 + 1.644e-02 1.461e-02 1.644e-02 2.154e-02 2.787e-02 3.186e-02 + 3.208e-02 3.046e-02 2.921e-02 2.921e-02 3.046e-02 3.208e-02 + 3.186e-02 2.787e-02 2.154e-02 + 9.080e-03 9.080e-03 1.268e-02 1.985e-02 2.787e-02 3.226e-02 + 3.228e-02 3.081e-02 3.012e-02 3.081e-02 3.228e-02 3.226e-02 + 2.787e-02 1.985e-02 1.268e-02 + 5.807e-03 7.373e-03 1.268e-02 2.154e-02 2.979e-02 3.303e-02 + 3.236e-02 3.117e-02 3.117e-02 3.236e-02 3.303e-02 2.979e-02 + 2.154e-02 1.268e-02 7.373e-03 + 1.087e-02 1.644e-02 2.463e-02 3.124e-02 3.319e-02 3.209e-02 + 3.088e-02 3.088e-02 3.209e-02 3.319e-02 3.124e-02 2.463e-02 + 1.644e-02 1.087e-02 9.080e-03 + 1.644e-02 2.329e-02 3.016e-02 3.336e-02 3.290e-02 3.142e-02 + 3.078e-02 3.142e-02 3.290e-02 3.336e-02 3.016e-02 2.329e-02 + 1.644e-02 1.268e-02 1.268e-02 + 2.463e-02 3.016e-02 3.332e-02 3.322e-02 3.169e-02 3.059e-02 + 3.059e-02 3.169e-02 3.322e-02 3.332e-02 3.016e-02 2.463e-02 + 1.985e-02 1.806e-02 1.985e-02 + 3.124e-02 3.336e-02 3.322e-02 3.177e-02 3.043e-02 2.994e-02 + 3.043e-02 3.177e-02 3.322e-02 3.336e-02 3.124e-02 2.787e-02 + 2.546e-02 2.546e-02 2.787e-02 + 3.319e-02 3.290e-02 3.169e-02 3.043e-02 2.971e-02 2.971e-02 + 3.043e-02 3.169e-02 3.290e-02 3.319e-02 3.226e-02 3.088e-02 + 3.024e-02 3.088e-02 3.226e-02 + 3.209e-02 3.142e-02 3.059e-02 2.994e-02 2.971e-02 2.994e-02 + 3.059e-02 3.142e-02 3.209e-02 3.228e-02 3.197e-02 3.160e-02 + 3.160e-02 3.197e-02 3.228e-02 + 3.088e-02 3.078e-02 3.059e-02 3.043e-02 3.043e-02 3.059e-02 + 3.078e-02 3.088e-02 3.081e-02 3.056e-02 3.024e-02 3.010e-02 + 3.024e-02 3.056e-02 3.081e-02 + 3.088e-02 3.142e-02 3.169e-02 3.177e-02 3.169e-02 3.142e-02 + 3.088e-02 3.012e-02 2.929e-02 2.853e-02 2.806e-02 2.806e-02 + 2.853e-02 2.929e-02 3.012e-02 + 3.209e-02 3.290e-02 3.322e-02 3.322e-02 3.290e-02 3.209e-02 + 3.081e-02 2.929e-02 2.785e-02 2.683e-02 2.646e-02 2.683e-02 + 2.785e-02 2.929e-02 3.081e-02 + 3.319e-02 3.336e-02 3.332e-02 3.336e-02 3.319e-02 3.228e-02 + 3.056e-02 2.853e-02 2.683e-02 2.590e-02 2.590e-02 2.683e-02 + 2.853e-02 3.056e-02 3.228e-02 + 3.124e-02 3.016e-02 3.016e-02 3.124e-02 3.226e-02 3.197e-02 + 3.024e-02 2.806e-02 2.646e-02 2.590e-02 2.646e-02 2.806e-02 + 3.024e-02 3.197e-02 3.226e-02 + 2.463e-02 2.329e-02 2.463e-02 2.787e-02 3.088e-02 3.160e-02 + 3.010e-02 2.806e-02 2.683e-02 2.683e-02 2.806e-02 3.010e-02 + 3.160e-02 3.088e-02 2.787e-02 + 1.644e-02 1.644e-02 1.985e-02 2.546e-02 3.024e-02 3.160e-02 + 3.024e-02 2.853e-02 2.785e-02 2.853e-02 3.024e-02 3.160e-02 + 3.024e-02 2.546e-02 1.985e-02 + 1.087e-02 1.268e-02 1.806e-02 2.546e-02 3.088e-02 3.197e-02 + 3.056e-02 2.929e-02 2.929e-02 3.056e-02 3.197e-02 3.088e-02 + 2.546e-02 1.806e-02 1.268e-02 + 9.080e-03 1.268e-02 1.985e-02 2.787e-02 3.226e-02 3.228e-02 + 3.081e-02 3.012e-02 3.081e-02 3.228e-02 3.226e-02 2.787e-02 + 1.985e-02 1.268e-02 9.080e-03 + 2.000e-02 2.596e-02 3.124e-02 3.306e-02 3.200e-02 3.044e-02 + 2.980e-02 3.044e-02 3.200e-02 3.306e-02 3.124e-02 2.596e-02 + 2.000e-02 1.644e-02 1.644e-02 + 2.596e-02 3.085e-02 3.336e-02 3.293e-02 3.132e-02 3.022e-02 + 3.022e-02 3.132e-02 3.293e-02 3.336e-02 3.085e-02 2.596e-02 + 2.154e-02 1.985e-02 2.154e-02 + 3.124e-02 3.336e-02 3.322e-02 3.177e-02 3.043e-02 2.994e-02 + 3.043e-02 3.177e-02 3.322e-02 3.336e-02 3.124e-02 2.787e-02 + 2.546e-02 2.546e-02 2.787e-02 + 3.306e-02 3.293e-02 3.177e-02 3.049e-02 2.975e-02 2.975e-02 + 3.049e-02 3.177e-02 3.293e-02 3.306e-02 3.186e-02 3.024e-02 + 2.950e-02 3.024e-02 3.186e-02 + 3.200e-02 3.132e-02 3.043e-02 2.975e-02 2.951e-02 2.975e-02 + 3.043e-02 3.132e-02 3.200e-02 3.208e-02 3.160e-02 3.108e-02 + 3.108e-02 3.160e-02 3.208e-02 + 3.044e-02 3.022e-02 2.994e-02 2.975e-02 2.975e-02 2.994e-02 + 3.022e-02 3.044e-02 3.046e-02 3.024e-02 2.993e-02 2.978e-02 + 2.993e-02 3.024e-02 3.046e-02 + 2.980e-02 3.022e-02 3.043e-02 3.049e-02 3.043e-02 3.022e-02 + 2.980e-02 2.921e-02 2.853e-02 2.791e-02 2.752e-02 2.752e-02 + 2.791e-02 2.853e-02 2.921e-02 + 3.044e-02 3.132e-02 3.177e-02 3.177e-02 3.132e-02 3.044e-02 + 2.921e-02 2.785e-02 2.661e-02 2.572e-02 2.540e-02 2.572e-02 + 2.661e-02 2.785e-02 2.921e-02 + 3.200e-02 3.293e-02 3.322e-02 3.293e-02 3.200e-02 3.046e-02 + 2.853e-02 2.661e-02 2.508e-02 2.424e-02 2.424e-02 2.508e-02 + 2.661e-02 2.853e-02 3.046e-02 + 3.306e-02 3.336e-02 3.336e-02 3.306e-02 3.208e-02 3.024e-02 + 2.791e-02 2.572e-02 2.424e-02 2.372e-02 2.424e-02 2.572e-02 + 2.791e-02 3.024e-02 3.208e-02 + 3.124e-02 3.085e-02 3.124e-02 3.186e-02 3.160e-02 2.993e-02 + 2.752e-02 2.540e-02 2.424e-02 2.424e-02 2.540e-02 2.752e-02 + 2.993e-02 3.160e-02 3.186e-02 + 2.596e-02 2.596e-02 2.787e-02 3.024e-02 3.108e-02 2.978e-02 + 2.752e-02 2.572e-02 2.508e-02 2.572e-02 2.752e-02 2.978e-02 + 3.108e-02 3.024e-02 2.787e-02 + 2.000e-02 2.154e-02 2.546e-02 2.950e-02 3.108e-02 2.993e-02 + 2.791e-02 2.661e-02 2.661e-02 2.791e-02 2.993e-02 3.108e-02 + 2.950e-02 2.546e-02 2.154e-02 + 1.644e-02 1.985e-02 2.546e-02 3.024e-02 3.160e-02 3.024e-02 + 2.853e-02 2.785e-02 2.853e-02 3.024e-02 3.160e-02 3.024e-02 + 2.546e-02 1.985e-02 1.644e-02 + 1.644e-02 2.154e-02 2.787e-02 3.186e-02 3.208e-02 3.046e-02 + 2.921e-02 2.921e-02 3.046e-02 3.208e-02 3.186e-02 2.787e-02 + 2.154e-02 1.644e-02 1.461e-02 + 2.921e-02 3.227e-02 3.319e-02 3.200e-02 3.026e-02 2.918e-02 + 2.918e-02 3.026e-02 3.200e-02 3.319e-02 3.227e-02 2.921e-02 + 2.596e-02 2.463e-02 2.596e-02 + 3.227e-02 3.352e-02 3.290e-02 3.132e-02 3.001e-02 2.953e-02 + 3.001e-02 3.132e-02 3.290e-02 3.352e-02 3.227e-02 2.979e-02 + 2.787e-02 2.787e-02 2.979e-02 + 3.319e-02 3.290e-02 3.169e-02 3.043e-02 2.971e-02 2.971e-02 + 3.043e-02 3.169e-02 3.290e-02 3.319e-02 3.226e-02 3.088e-02 + 3.024e-02 3.088e-02 3.226e-02 + 3.200e-02 3.132e-02 3.043e-02 2.975e-02 2.951e-02 2.975e-02 + 3.043e-02 3.132e-02 3.200e-02 3.208e-02 3.160e-02 3.108e-02 + 3.108e-02 3.160e-02 3.208e-02 + 3.026e-02 3.001e-02 2.971e-02 2.951e-02 2.951e-02 2.971e-02 + 3.001e-02 3.026e-02 3.030e-02 3.010e-02 2.978e-02 2.963e-02 + 2.978e-02 3.010e-02 3.030e-02 + 2.918e-02 2.953e-02 2.971e-02 2.975e-02 2.971e-02 2.953e-02 + 2.918e-02 2.866e-02 2.806e-02 2.751e-02 2.718e-02 2.718e-02 + 2.752e-02 2.806e-02 2.866e-02 + 2.918e-02 3.001e-02 3.043e-02 3.043e-02 3.001e-02 2.918e-02 + 2.806e-02 2.683e-02 2.572e-02 2.494e-02 2.466e-02 2.494e-02 + 2.572e-02 2.683e-02 2.806e-02 + 3.026e-02 3.132e-02 3.169e-02 3.132e-02 3.026e-02 2.866e-02 + 2.683e-02 2.508e-02 2.371e-02 2.295e-02 2.295e-02 2.371e-02 + 2.508e-02 2.683e-02 2.866e-02 + 3.200e-02 3.290e-02 3.290e-02 3.200e-02 3.030e-02 2.806e-02 + 2.572e-02 2.371e-02 2.236e-02 2.189e-02 2.236e-02 2.371e-02 + 2.572e-02 2.806e-02 3.030e-02 + 3.319e-02 3.352e-02 3.319e-02 3.208e-02 3.010e-02 2.751e-02 + 2.494e-02 2.295e-02 2.189e-02 2.189e-02 2.295e-02 2.494e-02 + 2.752e-02 3.010e-02 3.208e-02 + 3.227e-02 3.227e-02 3.226e-02 3.160e-02 2.978e-02 2.718e-02 + 2.466e-02 2.295e-02 2.236e-02 2.295e-02 2.466e-02 2.718e-02 + 2.978e-02 3.160e-02 3.226e-02 + 2.921e-02 2.979e-02 3.088e-02 3.108e-02 2.963e-02 2.718e-02 + 2.494e-02 2.371e-02 2.371e-02 2.494e-02 2.718e-02 2.963e-02 + 3.108e-02 3.088e-02 2.979e-02 + 2.596e-02 2.787e-02 3.024e-02 3.108e-02 2.978e-02 2.752e-02 + 2.572e-02 2.508e-02 2.572e-02 2.752e-02 2.978e-02 3.108e-02 + 3.024e-02 2.787e-02 2.596e-02 + 2.463e-02 2.787e-02 3.088e-02 3.160e-02 3.010e-02 2.806e-02 + 2.683e-02 2.683e-02 2.806e-02 3.010e-02 3.160e-02 3.088e-02 + 2.787e-02 2.463e-02 2.329e-02 + 2.596e-02 2.979e-02 3.226e-02 3.208e-02 3.030e-02 2.866e-02 + 2.806e-02 2.866e-02 3.030e-02 3.208e-02 3.226e-02 2.979e-02 + 2.596e-02 2.329e-02 2.329e-02 + 3.333e-02 3.332e-02 3.209e-02 3.044e-02 2.918e-02 2.874e-02 + 2.918e-02 3.044e-02 3.209e-02 3.332e-02 3.333e-02 3.227e-02 + 3.124e-02 3.124e-02 3.227e-02 + 3.332e-02 3.267e-02 3.142e-02 3.022e-02 2.953e-02 2.953e-02 + 3.022e-02 3.142e-02 3.267e-02 3.332e-02 3.303e-02 3.226e-02 + 3.186e-02 3.226e-02 3.303e-02 + 3.209e-02 3.142e-02 3.059e-02 2.994e-02 2.971e-02 2.994e-02 + 3.059e-02 3.142e-02 3.209e-02 3.228e-02 3.197e-02 3.160e-02 + 3.160e-02 3.197e-02 3.228e-02 + 3.044e-02 3.022e-02 2.994e-02 2.975e-02 2.975e-02 2.994e-02 + 3.022e-02 3.044e-02 3.046e-02 3.024e-02 2.993e-02 2.978e-02 + 2.993e-02 3.024e-02 3.046e-02 + 2.918e-02 2.953e-02 2.971e-02 2.975e-02 2.971e-02 2.953e-02 + 2.918e-02 2.866e-02 2.806e-02 2.751e-02 2.718e-02 2.718e-02 + 2.752e-02 2.806e-02 2.866e-02 + 2.874e-02 2.953e-02 2.994e-02 2.994e-02 2.953e-02 2.874e-02 + 2.765e-02 2.646e-02 2.540e-02 2.466e-02 2.440e-02 2.466e-02 + 2.540e-02 2.646e-02 2.765e-02 + 2.918e-02 3.022e-02 3.059e-02 3.022e-02 2.918e-02 2.765e-02 + 2.590e-02 2.424e-02 2.295e-02 2.226e-02 2.226e-02 2.295e-02 + 2.424e-02 2.590e-02 2.765e-02 + 3.044e-02 3.142e-02 3.142e-02 3.044e-02 2.866e-02 2.646e-02 + 2.424e-02 2.236e-02 2.112e-02 2.069e-02 2.112e-02 2.236e-02 + 2.424e-02 2.646e-02 2.866e-02 + 3.209e-02 3.267e-02 3.209e-02 3.046e-02 2.806e-02 2.540e-02 + 2.295e-02 2.112e-02 2.014e-02 2.014e-02 2.112e-02 2.295e-02 + 2.540e-02 2.806e-02 3.046e-02 + 3.332e-02 3.332e-02 3.228e-02 3.024e-02 2.751e-02 2.466e-02 + 2.226e-02 2.069e-02 2.014e-02 2.069e-02 2.226e-02 2.466e-02 + 2.752e-02 3.024e-02 3.228e-02 + 3.333e-02 3.303e-02 3.197e-02 2.993e-02 2.718e-02 2.440e-02 + 2.226e-02 2.112e-02 2.112e-02 2.226e-02 2.440e-02 2.718e-02 + 2.993e-02 3.197e-02 3.303e-02 + 3.227e-02 3.226e-02 3.160e-02 2.978e-02 2.718e-02 2.466e-02 + 2.295e-02 2.236e-02 2.295e-02 2.466e-02 2.718e-02 2.978e-02 + 3.160e-02 3.226e-02 3.227e-02 + 3.124e-02 3.186e-02 3.160e-02 2.993e-02 2.752e-02 2.540e-02 + 2.424e-02 2.424e-02 2.540e-02 2.752e-02 2.993e-02 3.160e-02 + 3.186e-02 3.124e-02 3.085e-02 + 3.124e-02 3.226e-02 3.197e-02 3.024e-02 2.806e-02 2.646e-02 + 2.590e-02 2.646e-02 2.806e-02 3.024e-02 3.197e-02 3.226e-02 + 3.124e-02 3.016e-02 3.016e-02 + 3.227e-02 3.303e-02 3.228e-02 3.046e-02 2.866e-02 2.765e-02 + 2.765e-02 2.866e-02 3.046e-02 3.228e-02 3.303e-02 3.227e-02 + 3.085e-02 3.016e-02 3.085e-02 + 3.299e-02 3.208e-02 3.088e-02 2.980e-02 2.918e-02 2.918e-02 + 2.980e-02 3.088e-02 3.208e-02 3.299e-02 3.332e-02 3.319e-02 + 3.306e-02 3.319e-02 3.332e-02 + 3.208e-02 3.148e-02 3.078e-02 3.022e-02 3.001e-02 3.022e-02 + 3.078e-02 3.148e-02 3.208e-02 3.236e-02 3.228e-02 3.208e-02 + 3.208e-02 3.228e-02 3.236e-02 + 3.088e-02 3.078e-02 3.059e-02 3.043e-02 3.043e-02 3.059e-02 + 3.078e-02 3.088e-02 3.081e-02 3.056e-02 3.024e-02 3.010e-02 + 3.024e-02 3.056e-02 3.081e-02 + 2.980e-02 3.022e-02 3.043e-02 3.049e-02 3.043e-02 3.022e-02 + 2.980e-02 2.921e-02 2.853e-02 2.791e-02 2.752e-02 2.752e-02 + 2.791e-02 2.853e-02 2.921e-02 + 2.918e-02 3.001e-02 3.043e-02 3.043e-02 3.001e-02 2.918e-02 + 2.806e-02 2.683e-02 2.572e-02 2.494e-02 2.466e-02 2.494e-02 + 2.572e-02 2.683e-02 2.806e-02 + 2.918e-02 3.022e-02 3.059e-02 3.022e-02 2.918e-02 2.765e-02 + 2.590e-02 2.424e-02 2.295e-02 2.226e-02 2.226e-02 2.295e-02 + 2.424e-02 2.590e-02 2.765e-02 + 2.980e-02 3.078e-02 3.078e-02 2.980e-02 2.806e-02 2.590e-02 + 2.372e-02 2.189e-02 2.069e-02 2.027e-02 2.069e-02 2.189e-02 + 2.372e-02 2.590e-02 2.806e-02 + 3.088e-02 3.148e-02 3.088e-02 2.921e-02 2.683e-02 2.424e-02 + 2.189e-02 2.014e-02 1.922e-02 1.922e-02 2.014e-02 2.189e-02 + 2.424e-02 2.683e-02 2.921e-02 + 3.208e-02 3.208e-02 3.081e-02 2.853e-02 2.572e-02 2.295e-02 + 2.069e-02 1.922e-02 1.871e-02 1.922e-02 2.069e-02 2.295e-02 + 2.572e-02 2.853e-02 3.081e-02 + 3.299e-02 3.236e-02 3.056e-02 2.791e-02 2.494e-02 2.226e-02 + 2.027e-02 1.922e-02 1.922e-02 2.027e-02 2.226e-02 2.494e-02 + 2.791e-02 3.056e-02 3.236e-02 + 3.332e-02 3.228e-02 3.024e-02 2.752e-02 2.466e-02 2.226e-02 + 2.069e-02 2.014e-02 2.069e-02 2.226e-02 2.466e-02 2.751e-02 + 3.024e-02 3.228e-02 3.332e-02 + 3.319e-02 3.208e-02 3.010e-02 2.752e-02 2.494e-02 2.295e-02 + 2.189e-02 2.189e-02 2.295e-02 2.494e-02 2.751e-02 3.010e-02 + 3.208e-02 3.319e-02 3.352e-02 + 3.306e-02 3.208e-02 3.024e-02 2.791e-02 2.572e-02 2.424e-02 + 2.372e-02 2.424e-02 2.572e-02 2.791e-02 3.024e-02 3.208e-02 + 3.306e-02 3.336e-02 3.336e-02 + 3.319e-02 3.228e-02 3.056e-02 2.853e-02 2.683e-02 2.590e-02 + 2.590e-02 2.683e-02 2.853e-02 3.056e-02 3.228e-02 3.319e-02 + 3.336e-02 3.332e-02 3.336e-02 + 3.332e-02 3.236e-02 3.081e-02 2.921e-02 2.806e-02 2.765e-02 + 2.806e-02 2.921e-02 3.081e-02 3.236e-02 3.332e-02 3.352e-02 + 3.336e-02 3.336e-02 3.352e-02 + 3.184e-02 3.140e-02 3.088e-02 3.044e-02 3.026e-02 3.044e-02 + 3.088e-02 3.140e-02 3.184e-02 3.208e-02 3.209e-02 3.200e-02 + 3.200e-02 3.209e-02 3.208e-02 + 3.140e-02 3.148e-02 3.142e-02 3.132e-02 3.132e-02 3.142e-02 + 3.148e-02 3.140e-02 3.117e-02 3.081e-02 3.046e-02 3.030e-02 + 3.046e-02 3.081e-02 3.117e-02 + 3.088e-02 3.142e-02 3.169e-02 3.177e-02 3.169e-02 3.142e-02 + 3.088e-02 3.012e-02 2.929e-02 2.853e-02 2.806e-02 2.806e-02 + 2.853e-02 2.929e-02 3.012e-02 + 3.044e-02 3.132e-02 3.177e-02 3.177e-02 3.132e-02 3.044e-02 + 2.921e-02 2.785e-02 2.661e-02 2.572e-02 2.540e-02 2.572e-02 + 2.661e-02 2.785e-02 2.921e-02 + 3.026e-02 3.132e-02 3.169e-02 3.132e-02 3.026e-02 2.866e-02 + 2.683e-02 2.508e-02 2.371e-02 2.295e-02 2.295e-02 2.371e-02 + 2.508e-02 2.683e-02 2.866e-02 + 3.044e-02 3.142e-02 3.142e-02 3.044e-02 2.866e-02 2.646e-02 + 2.424e-02 2.236e-02 2.112e-02 2.069e-02 2.112e-02 2.236e-02 + 2.424e-02 2.646e-02 2.866e-02 + 3.088e-02 3.148e-02 3.088e-02 2.921e-02 2.683e-02 2.424e-02 + 2.189e-02 2.014e-02 1.922e-02 1.922e-02 2.014e-02 2.189e-02 + 2.424e-02 2.683e-02 2.921e-02 + 3.140e-02 3.140e-02 3.012e-02 2.785e-02 2.508e-02 2.236e-02 + 2.014e-02 1.871e-02 1.822e-02 1.871e-02 2.014e-02 2.236e-02 + 2.508e-02 2.785e-02 3.012e-02 + 3.184e-02 3.117e-02 2.929e-02 2.661e-02 2.371e-02 2.112e-02 + 1.922e-02 1.822e-02 1.822e-02 1.922e-02 2.112e-02 2.371e-02 + 2.661e-02 2.929e-02 3.117e-02 + 3.208e-02 3.081e-02 2.853e-02 2.572e-02 2.295e-02 2.069e-02 + 1.922e-02 1.871e-02 1.922e-02 2.069e-02 2.295e-02 2.572e-02 + 2.853e-02 3.081e-02 3.208e-02 + 3.209e-02 3.046e-02 2.806e-02 2.540e-02 2.295e-02 2.112e-02 + 2.014e-02 2.014e-02 2.112e-02 2.295e-02 2.540e-02 2.806e-02 + 3.046e-02 3.209e-02 3.267e-02 + 3.200e-02 3.030e-02 2.806e-02 2.572e-02 2.371e-02 2.236e-02 + 2.189e-02 2.236e-02 2.371e-02 2.572e-02 2.806e-02 3.030e-02 + 3.200e-02 3.290e-02 3.290e-02 + 3.200e-02 3.046e-02 2.853e-02 2.661e-02 2.508e-02 2.424e-02 + 2.424e-02 2.508e-02 2.661e-02 2.853e-02 3.046e-02 3.200e-02 + 3.293e-02 3.322e-02 3.293e-02 + 3.209e-02 3.081e-02 2.929e-02 2.785e-02 2.683e-02 2.646e-02 + 2.683e-02 2.785e-02 2.929e-02 3.081e-02 3.209e-02 3.290e-02 + 3.322e-02 3.322e-02 3.290e-02 + 3.208e-02 3.117e-02 3.012e-02 2.921e-02 2.866e-02 2.866e-02 + 2.921e-02 3.012e-02 3.117e-02 3.208e-02 3.267e-02 3.290e-02 + 3.293e-02 3.290e-02 3.267e-02 + 3.184e-02 3.208e-02 3.209e-02 3.200e-02 3.200e-02 3.209e-02 + 3.208e-02 3.184e-02 3.140e-02 3.088e-02 3.044e-02 3.026e-02 + 3.044e-02 3.088e-02 3.140e-02 + 3.208e-02 3.267e-02 3.290e-02 3.293e-02 3.290e-02 3.267e-02 + 3.208e-02 3.117e-02 3.012e-02 2.921e-02 2.866e-02 2.866e-02 + 2.921e-02 3.012e-02 3.117e-02 + 3.209e-02 3.290e-02 3.322e-02 3.322e-02 3.290e-02 3.209e-02 + 3.081e-02 2.929e-02 2.785e-02 2.683e-02 2.646e-02 2.683e-02 + 2.785e-02 2.929e-02 3.081e-02 + 3.200e-02 3.293e-02 3.322e-02 3.293e-02 3.200e-02 3.046e-02 + 2.853e-02 2.661e-02 2.508e-02 2.424e-02 2.424e-02 2.508e-02 + 2.661e-02 2.853e-02 3.046e-02 + 3.200e-02 3.290e-02 3.290e-02 3.200e-02 3.030e-02 2.806e-02 + 2.572e-02 2.371e-02 2.236e-02 2.189e-02 2.236e-02 2.371e-02 + 2.572e-02 2.806e-02 3.030e-02 + 3.209e-02 3.267e-02 3.209e-02 3.046e-02 2.806e-02 2.540e-02 + 2.295e-02 2.112e-02 2.014e-02 2.014e-02 2.112e-02 2.295e-02 + 2.540e-02 2.806e-02 3.046e-02 + 3.208e-02 3.208e-02 3.081e-02 2.853e-02 2.572e-02 2.295e-02 + 2.069e-02 1.922e-02 1.871e-02 1.922e-02 2.069e-02 2.295e-02 + 2.572e-02 2.853e-02 3.081e-02 + 3.184e-02 3.117e-02 2.929e-02 2.661e-02 2.371e-02 2.112e-02 + 1.922e-02 1.822e-02 1.822e-02 1.922e-02 2.112e-02 2.371e-02 + 2.661e-02 2.929e-02 3.117e-02 + 3.140e-02 3.012e-02 2.785e-02 2.508e-02 2.236e-02 2.014e-02 + 1.871e-02 1.822e-02 1.871e-02 2.014e-02 2.236e-02 2.508e-02 + 2.785e-02 3.012e-02 3.140e-02 + 3.088e-02 2.921e-02 2.683e-02 2.424e-02 2.189e-02 2.014e-02 + 1.922e-02 1.922e-02 2.014e-02 2.189e-02 2.424e-02 2.683e-02 + 2.921e-02 3.088e-02 3.148e-02 + 3.044e-02 2.866e-02 2.646e-02 2.424e-02 2.236e-02 2.112e-02 + 2.069e-02 2.112e-02 2.236e-02 2.424e-02 2.646e-02 2.866e-02 + 3.044e-02 3.142e-02 3.142e-02 + 3.026e-02 2.866e-02 2.683e-02 2.508e-02 2.371e-02 2.295e-02 + 2.295e-02 2.371e-02 2.508e-02 2.683e-02 2.866e-02 3.026e-02 + 3.132e-02 3.169e-02 3.132e-02 + 3.044e-02 2.921e-02 2.785e-02 2.661e-02 2.572e-02 2.540e-02 + 2.572e-02 2.661e-02 2.785e-02 2.921e-02 3.044e-02 3.132e-02 + 3.177e-02 3.177e-02 3.132e-02 + 3.088e-02 3.012e-02 2.929e-02 2.853e-02 2.806e-02 2.806e-02 + 2.853e-02 2.929e-02 3.012e-02 3.088e-02 3.142e-02 3.169e-02 + 3.177e-02 3.169e-02 3.142e-02 + 3.140e-02 3.117e-02 3.081e-02 3.046e-02 3.030e-02 3.046e-02 + 3.081e-02 3.117e-02 3.140e-02 3.148e-02 3.142e-02 3.132e-02 + 3.132e-02 3.142e-02 3.148e-02 + 3.299e-02 3.332e-02 3.319e-02 3.306e-02 3.319e-02 3.332e-02 + 3.299e-02 3.208e-02 3.088e-02 2.980e-02 2.918e-02 2.918e-02 + 2.980e-02 3.088e-02 3.208e-02 + 3.332e-02 3.352e-02 3.336e-02 3.336e-02 3.352e-02 3.332e-02 + 3.236e-02 3.081e-02 2.921e-02 2.806e-02 2.765e-02 2.806e-02 + 2.921e-02 3.081e-02 3.236e-02 + 3.319e-02 3.336e-02 3.332e-02 3.336e-02 3.319e-02 3.228e-02 + 3.056e-02 2.853e-02 2.683e-02 2.590e-02 2.590e-02 2.683e-02 + 2.853e-02 3.056e-02 3.228e-02 + 3.306e-02 3.336e-02 3.336e-02 3.306e-02 3.208e-02 3.024e-02 + 2.791e-02 2.572e-02 2.424e-02 2.372e-02 2.424e-02 2.572e-02 + 2.791e-02 3.024e-02 3.208e-02 + 3.319e-02 3.352e-02 3.319e-02 3.208e-02 3.010e-02 2.751e-02 + 2.494e-02 2.295e-02 2.189e-02 2.189e-02 2.295e-02 2.494e-02 + 2.752e-02 3.010e-02 3.208e-02 + 3.332e-02 3.332e-02 3.228e-02 3.024e-02 2.751e-02 2.466e-02 + 2.226e-02 2.069e-02 2.014e-02 2.069e-02 2.226e-02 2.466e-02 + 2.752e-02 3.024e-02 3.228e-02 + 3.299e-02 3.236e-02 3.056e-02 2.791e-02 2.494e-02 2.226e-02 + 2.027e-02 1.922e-02 1.922e-02 2.027e-02 2.226e-02 2.494e-02 + 2.791e-02 3.056e-02 3.236e-02 + 3.208e-02 3.081e-02 2.853e-02 2.572e-02 2.295e-02 2.069e-02 + 1.922e-02 1.871e-02 1.922e-02 2.069e-02 2.295e-02 2.572e-02 + 2.853e-02 3.081e-02 3.208e-02 + 3.088e-02 2.921e-02 2.683e-02 2.424e-02 2.189e-02 2.014e-02 + 1.922e-02 1.922e-02 2.014e-02 2.189e-02 2.424e-02 2.683e-02 + 2.921e-02 3.088e-02 3.148e-02 + 2.980e-02 2.806e-02 2.590e-02 2.372e-02 2.189e-02 2.069e-02 + 2.027e-02 2.069e-02 2.189e-02 2.372e-02 2.590e-02 2.806e-02 + 2.980e-02 3.078e-02 3.078e-02 + 2.918e-02 2.765e-02 2.590e-02 2.424e-02 2.295e-02 2.226e-02 + 2.226e-02 2.295e-02 2.424e-02 2.590e-02 2.765e-02 2.918e-02 + 3.022e-02 3.059e-02 3.022e-02 + 2.918e-02 2.806e-02 2.683e-02 2.572e-02 2.494e-02 2.466e-02 + 2.494e-02 2.572e-02 2.683e-02 2.806e-02 2.918e-02 3.001e-02 + 3.043e-02 3.043e-02 3.001e-02 + 2.980e-02 2.921e-02 2.853e-02 2.791e-02 2.752e-02 2.752e-02 + 2.791e-02 2.853e-02 2.921e-02 2.980e-02 3.022e-02 3.043e-02 + 3.049e-02 3.043e-02 3.022e-02 + 3.088e-02 3.081e-02 3.056e-02 3.024e-02 3.010e-02 3.024e-02 + 3.056e-02 3.081e-02 3.088e-02 3.078e-02 3.059e-02 3.043e-02 + 3.043e-02 3.059e-02 3.078e-02 + 3.208e-02 3.236e-02 3.228e-02 3.208e-02 3.208e-02 3.228e-02 + 3.236e-02 3.208e-02 3.148e-02 3.078e-02 3.022e-02 3.001e-02 + 3.022e-02 3.078e-02 3.148e-02 + 3.333e-02 3.227e-02 3.124e-02 3.124e-02 3.227e-02 3.333e-02 + 3.332e-02 3.209e-02 3.044e-02 2.918e-02 2.874e-02 2.918e-02 + 3.044e-02 3.209e-02 3.332e-02 + 3.227e-02 3.085e-02 3.016e-02 3.085e-02 3.227e-02 3.303e-02 + 3.228e-02 3.046e-02 2.866e-02 2.765e-02 2.765e-02 2.866e-02 + 3.046e-02 3.228e-02 3.303e-02 + 3.124e-02 3.016e-02 3.016e-02 3.124e-02 3.226e-02 3.197e-02 + 3.024e-02 2.806e-02 2.646e-02 2.590e-02 2.646e-02 2.806e-02 + 3.024e-02 3.197e-02 3.226e-02 + 3.124e-02 3.085e-02 3.124e-02 3.186e-02 3.160e-02 2.993e-02 + 2.752e-02 2.540e-02 2.424e-02 2.424e-02 2.540e-02 2.752e-02 + 2.993e-02 3.160e-02 3.186e-02 + 3.227e-02 3.227e-02 3.226e-02 3.160e-02 2.978e-02 2.718e-02 + 2.466e-02 2.295e-02 2.236e-02 2.295e-02 2.466e-02 2.718e-02 + 2.978e-02 3.160e-02 3.226e-02 + 3.333e-02 3.303e-02 3.197e-02 2.993e-02 2.718e-02 2.440e-02 + 2.226e-02 2.112e-02 2.112e-02 2.226e-02 2.440e-02 2.718e-02 + 2.993e-02 3.197e-02 3.303e-02 + 3.332e-02 3.228e-02 3.024e-02 2.752e-02 2.466e-02 2.226e-02 + 2.069e-02 2.014e-02 2.069e-02 2.226e-02 2.466e-02 2.751e-02 + 3.024e-02 3.228e-02 3.332e-02 + 3.209e-02 3.046e-02 2.806e-02 2.540e-02 2.295e-02 2.112e-02 + 2.014e-02 2.014e-02 2.112e-02 2.295e-02 2.540e-02 2.806e-02 + 3.046e-02 3.209e-02 3.267e-02 + 3.044e-02 2.866e-02 2.646e-02 2.424e-02 2.236e-02 2.112e-02 + 2.069e-02 2.112e-02 2.236e-02 2.424e-02 2.646e-02 2.866e-02 + 3.044e-02 3.142e-02 3.142e-02 + 2.918e-02 2.765e-02 2.590e-02 2.424e-02 2.295e-02 2.226e-02 + 2.226e-02 2.295e-02 2.424e-02 2.590e-02 2.765e-02 2.918e-02 + 3.022e-02 3.059e-02 3.022e-02 + 2.874e-02 2.765e-02 2.646e-02 2.540e-02 2.466e-02 2.440e-02 + 2.466e-02 2.540e-02 2.646e-02 2.765e-02 2.874e-02 2.953e-02 + 2.994e-02 2.994e-02 2.953e-02 + 2.918e-02 2.866e-02 2.806e-02 2.752e-02 2.718e-02 2.718e-02 + 2.751e-02 2.806e-02 2.866e-02 2.918e-02 2.953e-02 2.971e-02 + 2.975e-02 2.971e-02 2.953e-02 + 3.044e-02 3.046e-02 3.024e-02 2.993e-02 2.978e-02 2.993e-02 + 3.024e-02 3.046e-02 3.044e-02 3.022e-02 2.994e-02 2.975e-02 + 2.975e-02 2.994e-02 3.022e-02 + 3.209e-02 3.228e-02 3.197e-02 3.160e-02 3.160e-02 3.197e-02 + 3.228e-02 3.209e-02 3.142e-02 3.059e-02 2.994e-02 2.971e-02 + 2.994e-02 3.059e-02 3.142e-02 + 3.332e-02 3.303e-02 3.226e-02 3.186e-02 3.226e-02 3.303e-02 + 3.332e-02 3.267e-02 3.142e-02 3.022e-02 2.953e-02 2.953e-02 + 3.022e-02 3.142e-02 3.267e-02 + 2.921e-02 2.596e-02 2.463e-02 2.596e-02 2.921e-02 3.227e-02 + 3.319e-02 3.200e-02 3.026e-02 2.918e-02 2.918e-02 3.026e-02 + 3.200e-02 3.319e-02 3.227e-02 + 2.596e-02 2.329e-02 2.329e-02 2.596e-02 2.979e-02 3.226e-02 + 3.208e-02 3.030e-02 2.866e-02 2.806e-02 2.866e-02 3.030e-02 + 3.208e-02 3.226e-02 2.979e-02 + 2.463e-02 2.329e-02 2.463e-02 2.787e-02 3.088e-02 3.160e-02 + 3.010e-02 2.806e-02 2.683e-02 2.683e-02 2.806e-02 3.010e-02 + 3.160e-02 3.088e-02 2.787e-02 + 2.596e-02 2.596e-02 2.787e-02 3.024e-02 3.108e-02 2.978e-02 + 2.752e-02 2.572e-02 2.508e-02 2.572e-02 2.752e-02 2.978e-02 + 3.108e-02 3.024e-02 2.787e-02 + 2.921e-02 2.979e-02 3.088e-02 3.108e-02 2.963e-02 2.718e-02 + 2.494e-02 2.371e-02 2.371e-02 2.494e-02 2.718e-02 2.963e-02 + 3.108e-02 3.088e-02 2.979e-02 + 3.227e-02 3.226e-02 3.160e-02 2.978e-02 2.718e-02 2.466e-02 + 2.295e-02 2.236e-02 2.295e-02 2.466e-02 2.718e-02 2.978e-02 + 3.160e-02 3.226e-02 3.227e-02 + 3.319e-02 3.208e-02 3.010e-02 2.752e-02 2.494e-02 2.295e-02 + 2.189e-02 2.189e-02 2.295e-02 2.494e-02 2.751e-02 3.010e-02 + 3.208e-02 3.319e-02 3.352e-02 + 3.200e-02 3.030e-02 2.806e-02 2.572e-02 2.371e-02 2.236e-02 + 2.189e-02 2.236e-02 2.371e-02 2.572e-02 2.806e-02 3.030e-02 + 3.200e-02 3.290e-02 3.290e-02 + 3.026e-02 2.866e-02 2.683e-02 2.508e-02 2.371e-02 2.295e-02 + 2.295e-02 2.371e-02 2.508e-02 2.683e-02 2.866e-02 3.026e-02 + 3.132e-02 3.169e-02 3.132e-02 + 2.918e-02 2.806e-02 2.683e-02 2.572e-02 2.494e-02 2.466e-02 + 2.494e-02 2.572e-02 2.683e-02 2.806e-02 2.918e-02 3.001e-02 + 3.043e-02 3.043e-02 3.001e-02 + 2.918e-02 2.866e-02 2.806e-02 2.752e-02 2.718e-02 2.718e-02 + 2.751e-02 2.806e-02 2.866e-02 2.918e-02 2.953e-02 2.971e-02 + 2.975e-02 2.971e-02 2.953e-02 + 3.026e-02 3.030e-02 3.010e-02 2.978e-02 2.963e-02 2.978e-02 + 3.010e-02 3.030e-02 3.026e-02 3.001e-02 2.971e-02 2.951e-02 + 2.951e-02 2.971e-02 3.001e-02 + 3.200e-02 3.208e-02 3.160e-02 3.108e-02 3.108e-02 3.160e-02 + 3.208e-02 3.200e-02 3.132e-02 3.043e-02 2.975e-02 2.951e-02 + 2.975e-02 3.043e-02 3.132e-02 + 3.319e-02 3.226e-02 3.088e-02 3.024e-02 3.088e-02 3.226e-02 + 3.319e-02 3.290e-02 3.169e-02 3.043e-02 2.971e-02 2.971e-02 + 3.043e-02 3.169e-02 3.290e-02 + 3.227e-02 2.979e-02 2.787e-02 2.787e-02 2.979e-02 3.227e-02 + 3.352e-02 3.290e-02 3.132e-02 3.001e-02 2.953e-02 3.001e-02 + 3.132e-02 3.290e-02 3.352e-02 + 2.000e-02 1.644e-02 1.644e-02 2.000e-02 2.596e-02 3.124e-02 + 3.306e-02 3.200e-02 3.044e-02 2.980e-02 3.044e-02 3.200e-02 + 3.306e-02 3.124e-02 2.596e-02 + 1.644e-02 1.461e-02 1.644e-02 2.154e-02 2.787e-02 3.186e-02 + 3.208e-02 3.046e-02 2.921e-02 2.921e-02 3.046e-02 3.208e-02 + 3.186e-02 2.787e-02 2.154e-02 + 1.644e-02 1.644e-02 1.985e-02 2.546e-02 3.024e-02 3.160e-02 + 3.024e-02 2.853e-02 2.785e-02 2.853e-02 3.024e-02 3.160e-02 + 3.024e-02 2.546e-02 1.985e-02 + 2.000e-02 2.154e-02 2.546e-02 2.950e-02 3.108e-02 2.993e-02 + 2.791e-02 2.661e-02 2.661e-02 2.791e-02 2.993e-02 3.108e-02 + 2.950e-02 2.546e-02 2.154e-02 + 2.596e-02 2.787e-02 3.024e-02 3.108e-02 2.978e-02 2.752e-02 + 2.572e-02 2.508e-02 2.572e-02 2.752e-02 2.978e-02 3.108e-02 + 3.024e-02 2.787e-02 2.596e-02 + 3.124e-02 3.186e-02 3.160e-02 2.993e-02 2.752e-02 2.540e-02 + 2.424e-02 2.424e-02 2.540e-02 2.752e-02 2.993e-02 3.160e-02 + 3.186e-02 3.124e-02 3.085e-02 + 3.306e-02 3.208e-02 3.024e-02 2.791e-02 2.572e-02 2.424e-02 + 2.372e-02 2.424e-02 2.572e-02 2.791e-02 3.024e-02 3.208e-02 + 3.306e-02 3.336e-02 3.336e-02 + 3.200e-02 3.046e-02 2.853e-02 2.661e-02 2.508e-02 2.424e-02 + 2.424e-02 2.508e-02 2.661e-02 2.853e-02 3.046e-02 3.200e-02 + 3.293e-02 3.322e-02 3.293e-02 + 3.044e-02 2.921e-02 2.785e-02 2.661e-02 2.572e-02 2.540e-02 + 2.572e-02 2.661e-02 2.785e-02 2.921e-02 3.044e-02 3.132e-02 + 3.177e-02 3.177e-02 3.132e-02 + 2.980e-02 2.921e-02 2.853e-02 2.791e-02 2.752e-02 2.752e-02 + 2.791e-02 2.853e-02 2.921e-02 2.980e-02 3.022e-02 3.043e-02 + 3.049e-02 3.043e-02 3.022e-02 + 3.044e-02 3.046e-02 3.024e-02 2.993e-02 2.978e-02 2.993e-02 + 3.024e-02 3.046e-02 3.044e-02 3.022e-02 2.994e-02 2.975e-02 + 2.975e-02 2.994e-02 3.022e-02 + 3.200e-02 3.208e-02 3.160e-02 3.108e-02 3.108e-02 3.160e-02 + 3.208e-02 3.200e-02 3.132e-02 3.043e-02 2.975e-02 2.951e-02 + 2.975e-02 3.043e-02 3.132e-02 + 3.306e-02 3.186e-02 3.024e-02 2.950e-02 3.024e-02 3.186e-02 + 3.306e-02 3.293e-02 3.177e-02 3.049e-02 2.975e-02 2.975e-02 + 3.049e-02 3.177e-02 3.293e-02 + 3.124e-02 2.787e-02 2.546e-02 2.546e-02 2.787e-02 3.124e-02 + 3.336e-02 3.322e-02 3.177e-02 3.043e-02 2.994e-02 3.043e-02 + 3.177e-02 3.322e-02 3.336e-02 + 2.596e-02 2.154e-02 1.985e-02 2.154e-02 2.596e-02 3.085e-02 + 3.336e-02 3.293e-02 3.132e-02 3.022e-02 3.022e-02 3.132e-02 + 3.293e-02 3.336e-02 3.085e-02 + 1.087e-02 9.080e-03 1.087e-02 1.644e-02 2.463e-02 3.124e-02 + 3.319e-02 3.209e-02 3.088e-02 3.088e-02 3.209e-02 3.319e-02 + 3.124e-02 2.463e-02 1.644e-02 + 9.080e-03 9.080e-03 1.268e-02 1.985e-02 2.787e-02 3.226e-02 + 3.228e-02 3.081e-02 3.012e-02 3.081e-02 3.228e-02 3.226e-02 + 2.787e-02 1.985e-02 1.268e-02 + 1.087e-02 1.268e-02 1.806e-02 2.546e-02 3.088e-02 3.197e-02 + 3.056e-02 2.929e-02 2.929e-02 3.056e-02 3.197e-02 3.088e-02 + 2.546e-02 1.806e-02 1.268e-02 + 1.644e-02 1.985e-02 2.546e-02 3.024e-02 3.160e-02 3.024e-02 + 2.853e-02 2.785e-02 2.853e-02 3.024e-02 3.160e-02 3.024e-02 + 2.546e-02 1.985e-02 1.644e-02 + 2.463e-02 2.787e-02 3.088e-02 3.160e-02 3.010e-02 2.806e-02 + 2.683e-02 2.683e-02 2.806e-02 3.010e-02 3.160e-02 3.088e-02 + 2.787e-02 2.463e-02 2.329e-02 + 3.124e-02 3.226e-02 3.197e-02 3.024e-02 2.806e-02 2.646e-02 + 2.590e-02 2.646e-02 2.806e-02 3.024e-02 3.197e-02 3.226e-02 + 3.124e-02 3.016e-02 3.016e-02 + 3.319e-02 3.228e-02 3.056e-02 2.853e-02 2.683e-02 2.590e-02 + 2.590e-02 2.683e-02 2.853e-02 3.056e-02 3.228e-02 3.319e-02 + 3.336e-02 3.332e-02 3.336e-02 + 3.209e-02 3.081e-02 2.929e-02 2.785e-02 2.683e-02 2.646e-02 + 2.683e-02 2.785e-02 2.929e-02 3.081e-02 3.209e-02 3.290e-02 + 3.322e-02 3.322e-02 3.290e-02 + 3.088e-02 3.012e-02 2.929e-02 2.853e-02 2.806e-02 2.806e-02 + 2.853e-02 2.929e-02 3.012e-02 3.088e-02 3.142e-02 3.169e-02 + 3.177e-02 3.169e-02 3.142e-02 + 3.088e-02 3.081e-02 3.056e-02 3.024e-02 3.010e-02 3.024e-02 + 3.056e-02 3.081e-02 3.088e-02 3.078e-02 3.059e-02 3.043e-02 + 3.043e-02 3.059e-02 3.078e-02 + 3.209e-02 3.228e-02 3.197e-02 3.160e-02 3.160e-02 3.197e-02 + 3.228e-02 3.209e-02 3.142e-02 3.059e-02 2.994e-02 2.971e-02 + 2.994e-02 3.059e-02 3.142e-02 + 3.319e-02 3.226e-02 3.088e-02 3.024e-02 3.088e-02 3.226e-02 + 3.319e-02 3.290e-02 3.169e-02 3.043e-02 2.971e-02 2.971e-02 + 3.043e-02 3.169e-02 3.290e-02 + 3.124e-02 2.787e-02 2.546e-02 2.546e-02 2.787e-02 3.124e-02 + 3.336e-02 3.322e-02 3.177e-02 3.043e-02 2.994e-02 3.043e-02 + 3.177e-02 3.322e-02 3.336e-02 + 2.463e-02 1.985e-02 1.806e-02 1.985e-02 2.463e-02 3.016e-02 + 3.332e-02 3.322e-02 3.169e-02 3.059e-02 3.059e-02 3.169e-02 + 3.322e-02 3.332e-02 3.016e-02 + 1.644e-02 1.268e-02 1.268e-02 1.644e-02 2.329e-02 3.016e-02 + 3.336e-02 3.290e-02 3.142e-02 3.078e-02 3.142e-02 3.290e-02 + 3.336e-02 3.016e-02 2.329e-02 + 5.807e-03 5.807e-03 9.080e-03 1.644e-02 2.596e-02 3.227e-02 + 3.332e-02 3.208e-02 3.140e-02 3.208e-02 3.332e-02 3.227e-02 + 2.596e-02 1.644e-02 9.080e-03 + 5.807e-03 7.373e-03 1.268e-02 2.154e-02 2.979e-02 3.303e-02 + 3.236e-02 3.117e-02 3.117e-02 3.236e-02 3.303e-02 2.979e-02 + 2.154e-02 1.268e-02 7.373e-03 + 9.080e-03 1.268e-02 1.985e-02 2.787e-02 3.226e-02 3.228e-02 + 3.081e-02 3.012e-02 3.081e-02 3.228e-02 3.226e-02 2.787e-02 + 1.985e-02 1.268e-02 9.080e-03 + 1.644e-02 2.154e-02 2.787e-02 3.186e-02 3.208e-02 3.046e-02 + 2.921e-02 2.921e-02 3.046e-02 3.208e-02 3.186e-02 2.787e-02 + 2.154e-02 1.644e-02 1.461e-02 + 2.596e-02 2.979e-02 3.226e-02 3.208e-02 3.030e-02 2.866e-02 + 2.806e-02 2.866e-02 3.030e-02 3.208e-02 3.226e-02 2.979e-02 + 2.596e-02 2.329e-02 2.329e-02 + 3.227e-02 3.303e-02 3.228e-02 3.046e-02 2.866e-02 2.765e-02 + 2.765e-02 2.866e-02 3.046e-02 3.228e-02 3.303e-02 3.227e-02 + 3.085e-02 3.016e-02 3.085e-02 + 3.332e-02 3.236e-02 3.081e-02 2.921e-02 2.806e-02 2.765e-02 + 2.806e-02 2.921e-02 3.081e-02 3.236e-02 3.332e-02 3.352e-02 + 3.336e-02 3.336e-02 3.352e-02 + 3.208e-02 3.117e-02 3.012e-02 2.921e-02 2.866e-02 2.866e-02 + 2.921e-02 3.012e-02 3.117e-02 3.208e-02 3.267e-02 3.290e-02 + 3.293e-02 3.290e-02 3.267e-02 + 3.140e-02 3.117e-02 3.081e-02 3.046e-02 3.030e-02 3.046e-02 + 3.081e-02 3.117e-02 3.140e-02 3.148e-02 3.142e-02 3.132e-02 + 3.132e-02 3.142e-02 3.148e-02 + 3.208e-02 3.236e-02 3.228e-02 3.208e-02 3.208e-02 3.228e-02 + 3.236e-02 3.208e-02 3.148e-02 3.078e-02 3.022e-02 3.001e-02 + 3.022e-02 3.078e-02 3.148e-02 + 3.332e-02 3.303e-02 3.226e-02 3.186e-02 3.226e-02 3.303e-02 + 3.332e-02 3.267e-02 3.142e-02 3.022e-02 2.953e-02 2.953e-02 + 3.022e-02 3.142e-02 3.267e-02 + 3.227e-02 2.979e-02 2.787e-02 2.787e-02 2.979e-02 3.227e-02 + 3.352e-02 3.290e-02 3.132e-02 3.001e-02 2.953e-02 3.001e-02 + 3.132e-02 3.290e-02 3.352e-02 + 2.596e-02 2.154e-02 1.985e-02 2.154e-02 2.596e-02 3.085e-02 + 3.336e-02 3.293e-02 3.132e-02 3.022e-02 3.022e-02 3.132e-02 + 3.293e-02 3.336e-02 3.085e-02 + 1.644e-02 1.268e-02 1.268e-02 1.644e-02 2.329e-02 3.016e-02 + 3.336e-02 3.290e-02 3.142e-02 3.078e-02 3.142e-02 3.290e-02 + 3.336e-02 3.016e-02 2.329e-02 + 9.080e-03 7.373e-03 9.080e-03 1.461e-02 2.329e-02 3.085e-02 + 3.352e-02 3.267e-02 3.148e-02 3.148e-02 3.267e-02 3.352e-02 + 3.085e-02 2.329e-02 1.461e-02 diff --git a/tests/07_OFDFT/33_OF_out_chg/result.ref b/tests/07_OFDFT/33_OF_out_chg/result.ref new file mode 100644 index 0000000000..9ab70af1b8 --- /dev/null +++ b/tests/07_OFDFT/33_OF_out_chg/result.ref @@ -0,0 +1,7 @@ +etotref -57.93385514279165 +etotperatomref -57.9338551428 +pointgroupref O_h +spacegroupref O_h +chg.cube_pass 0 +nksibzref 1 +totaltimeref 0.34 diff --git a/tests/07_OFDFT/CASES_CPU.txt b/tests/07_OFDFT/CASES_CPU.txt index 67e095d710..a6e6110ca3 100644 --- a/tests/07_OFDFT/CASES_CPU.txt +++ b/tests/07_OFDFT/CASES_CPU.txt @@ -26,4 +26,8 @@ 26_OF_MD_LibxcPBE 27_OF_CR_LDA 28_OF_KE_XWM -29_OF_XWM_para \ No newline at end of file +29_OF_XWM_para +30_TDOFDFT_Al +31_TDOFDFT_Al_CD +32_TDOFDFT_Al_mCD +33_OF_out_chg diff --git a/tests/08_EXX/01_GO_S1_HSE/INPUT b/tests/08_EXX/01_GO_S1_HSE/INPUT index 152ee6b330..81569c598f 100644 --- a/tests/08_EXX/01_GO_S1_HSE/INPUT +++ b/tests/08_EXX/01_GO_S1_HSE/INPUT @@ -1,38 +1,38 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf -symmetry 0 -nspin 1 -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB +suffix autotest +calculation scf +symmetry 0 +nspin 1 +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB # Force and Stress -cal_force 1 -cal_stress 1 +cal_force 1 +cal_stress 1 #Parameters (2.PW) -ecutwfc 5 -scf_thr 1e-7 +ecutwfc 5 +scf_thr 1e-7 #Parameters (4.Relaxation) -scf_nmax 100 +scf_nmax 100 #Parameters (5.LCAO) -basis_type lcao -gamma_only 1 +basis_type lcao +gamma_only 1 #Parameters (6.Smearing) -smearing_method gaussian -smearing_sigma 0.02 +smearing_method gaussian +smearing_sigma 0.02 #Parameters (7.Charge Mixing) -mixing_type broyden -mixing_beta 0.4 +mixing_type broyden +mixing_beta 0.4 #Parameters (14.exx) -dft_functional hse -exx_pca_threshold 1E-1 -exx_ccp_rmesh_times 1 -exx_separate_loop 1 -exx_hybrid_step 2 +dft_functional hse +exx_pca_threshold 1E-1 +exx_ccp_rmesh_times 1 +exx_separate_loop 1 +exx_hybrid_step 2 diff --git a/tests/08_EXX/02_GO_S2_HSE/INPUT b/tests/08_EXX/02_GO_S2_HSE/INPUT index c93a53a8ae..e68c466ca7 100644 --- a/tests/08_EXX/02_GO_S2_HSE/INPUT +++ b/tests/08_EXX/02_GO_S2_HSE/INPUT @@ -1,38 +1,38 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf -symmetry 0 -nspin 2 -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB +suffix autotest +calculation scf +symmetry 0 +nspin 2 +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB # Force and Stress -cal_force 1 -cal_stress 1 +cal_force 1 +cal_stress 1 #Parameters (2.PW) -ecutwfc 5 -scf_thr 1e-7 +ecutwfc 5 +scf_thr 1e-7 #Parameters (4.Relaxation) -scf_nmax 100 +scf_nmax 100 #Parameters (5.LCAO) -basis_type lcao -gamma_only 1 +basis_type lcao +gamma_only 1 #Parameters (6.Smearing) -smearing_method gaussian -smearing_sigma 0.02 +smearing_method gaussian +smearing_sigma 0.02 #Parameters (7.Charge Mixing) -mixing_type broyden -mixing_beta 0.4 +mixing_type broyden +mixing_beta 0.4 #Parameters (14.exx) -dft_functional hse -exx_pca_threshold 1E-1 -exx_ccp_rmesh_times 1 -exx_separate_loop 1 -exx_hybrid_step 2 +dft_functional hse +exx_pca_threshold 1E-1 +exx_ccp_rmesh_times 1 +exx_separate_loop 1 +exx_hybrid_step 2 diff --git a/tests/08_EXX/03_KP_S4_HSE/INPUT b/tests/08_EXX/03_KP_S4_HSE/INPUT index cd1ef415d8..56e2c0f499 100644 --- a/tests/08_EXX/03_KP_S4_HSE/INPUT +++ b/tests/08_EXX/03_KP_S4_HSE/INPUT @@ -1,40 +1,40 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf -symmetry 0 -nspin 4 -lspinorb 1 -noncolin 1 -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB +suffix autotest +calculation scf +symmetry 0 +nspin 4 +lspinorb 1 +noncolin 1 +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB # Force and Stress -cal_force 1 -cal_stress 1 +cal_force 1 +cal_stress 1 #Parameters (2.PW) -ecutwfc 5 -scf_thr 1e-7 +ecutwfc 5 +scf_thr 1e-7 #Parameters (4.Relaxation) -scf_nmax 100 +scf_nmax 100 #Parameters (5.LCAO) -basis_type lcao -gamma_only 0 +basis_type lcao +gamma_only 0 #Parameters (6.Smearing) -smearing_method gaussian -smearing_sigma 0.02 +smearing_method gaussian +smearing_sigma 0.02 #Parameters (7.Charge Mixing) -mixing_type broyden -mixing_beta 0.4 +mixing_type broyden +mixing_beta 0.4 #Parameters (14.exx) -dft_functional hse -exx_pca_threshold 1E-1 -exx_ccp_rmesh_times 1 -exx_separate_loop 1 -exx_hybrid_step 2 +dft_functional hse +exx_pca_threshold 1E-1 +exx_ccp_rmesh_times 1 +exx_separate_loop 1 +exx_hybrid_step 2 diff --git a/tests/08_EXX/04_GO_S1_HSE_loop0/INPUT b/tests/08_EXX/04_GO_S1_HSE_loop0/INPUT index a03bc062e8..80723d67a8 100644 --- a/tests/08_EXX/04_GO_S1_HSE_loop0/INPUT +++ b/tests/08_EXX/04_GO_S1_HSE_loop0/INPUT @@ -1,33 +1,33 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf -symmetry -1 -nspin 1 -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB +suffix autotest +calculation scf +symmetry -1 +nspin 1 +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB #Parameters (2.PW) -ecutwfc 5 -scf_thr 1e-7 +ecutwfc 5 +scf_thr 1e-7 #Parameters (4.Relaxation) -scf_nmax 100 +scf_nmax 100 #Parameters (5.LCAO) -basis_type lcao -gamma_only 1 +basis_type lcao +gamma_only 1 #Parameters (6.Smearing) -smearing_method gaussian -smearing_sigma 0.02 +smearing_method gaussian +smearing_sigma 0.02 #Parameters (7.Charge Mixing) -mixing_type broyden -mixing_beta 0.4 +mixing_type broyden +mixing_beta 0.4 #Parameters (14.exx) -dft_functional hse -exx_pca_threshold 1E-1 -exx_ccp_rmesh_times 1 -exx_separate_loop 0 +dft_functional hse +exx_pca_threshold 1E-1 +exx_ccp_rmesh_times 1 +exx_separate_loop 0 diff --git a/tests/08_EXX/05_GO_RE_HSE/INPUT b/tests/08_EXX/05_GO_RE_HSE/INPUT index 1232a8e0de..54ecd2a783 100644 --- a/tests/08_EXX/05_GO_RE_HSE/INPUT +++ b/tests/08_EXX/05_GO_RE_HSE/INPUT @@ -1,35 +1,35 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation relax -symmetry 0 -nspin 1 -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB +suffix autotest +calculation relax +symmetry 0 +nspin 1 +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB #Parameters (2.PW) -ecutwfc 5 -scf_thr 1e-7 +ecutwfc 5 +scf_thr 1e-7 #Parameters (4.Relaxation) -scf_nmax 100 -relax_nmax 2 +scf_nmax 100 +relax_nmax 2 #Parameters (5.LCAO) -basis_type lcao -gamma_only 1 +basis_type lcao +gamma_only 1 #Parameters (6.Smearing) -smearing_method gaussian -smearing_sigma 0.02 +smearing_method gaussian +smearing_sigma 0.02 #Parameters (7.Charge Mixing) -mixing_type broyden -mixing_beta 0.4 +mixing_type broyden +mixing_beta 0.4 #Parameters (14.exx) -dft_functional hsE -exx_pca_threshold 1E-1 -exx_ccp_rmesh_times 1 -exx_separate_loop 1 -exx_hybrid_step 2 +dft_functional hsE +exx_pca_threshold 1E-1 +exx_ccp_rmesh_times 1 +exx_separate_loop 1 +exx_hybrid_step 2 diff --git a/tests/08_EXX/06_KP_MD_HSE/INPUT b/tests/08_EXX/06_KP_MD_HSE/INPUT index 61dc49d3ea..ce89ab2dde 100644 --- a/tests/08_EXX/06_KP_MD_HSE/INPUT +++ b/tests/08_EXX/06_KP_MD_HSE/INPUT @@ -1,40 +1,40 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation md -symmetry 0 -nspin 1 -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB +suffix autotest +calculation md +symmetry 0 +nspin 1 +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB #Parameters (2.PW) -ecutwfc 5 -scf_thr 1e-7 +ecutwfc 5 +scf_thr 1e-7 #Parameters (4.Relaxation) -scf_nmax 100 +scf_nmax 100 #Parameters (5.LCAO) -basis_type lcao -gamma_only 0 +basis_type lcao +gamma_only 0 #Parameters (6.Smearing) -smearing_method gaussian -smearing_sigma 0.02 +smearing_method gaussian +smearing_sigma 0.02 #Parameters (7.Charge Mixing) -mixing_type broyden -mixing_beta 0.4 +mixing_type broyden +mixing_beta 0.4 #Parameters (9.Molecular dynamics) -md_type nve -md_nstep 2 -md_dt 1 -md_tfirst 300 +md_type nve +md_nstep 3 +md_dt 1 +md_tfirst 300 #Parameters (14.exx) -dft_functional hse -exx_pca_threshold 1E-1 -exx_ccp_rmesh_times 1 -exx_separate_loop 1 -exx_hybrid_step 2 +dft_functional hse +exx_pca_threshold 1E-1 +exx_ccp_rmesh_times 1 +exx_separate_loop 1 +exx_hybrid_step 2 diff --git a/tests/08_EXX/07_KP_CR_HSE/INPUT b/tests/08_EXX/07_KP_CR_HSE/INPUT index 27e3eb61d8..17e153ded6 100644 --- a/tests/08_EXX/07_KP_CR_HSE/INPUT +++ b/tests/08_EXX/07_KP_CR_HSE/INPUT @@ -1,39 +1,39 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -symmetry 0 -gamma_only 0 -nspin 1 +suffix autotest +symmetry 0 +gamma_only 0 +nspin 1 #Parameters (2.Iteration) -ecutwfc 10 -scf_thr 1e-7 -scf_nmax 100 +ecutwfc 10 +scf_thr 1e-7 +scf_nmax 100 -calculation cell-relax -relax_nmax 2 +calculation cell-relax +relax_nmax 2 #Parameters (3.Basis) -basis_type lcao -ks_solver genelpa +basis_type lcao +ks_solver genelpa #Parameters (4.Smearing) -smearing_method gauss -smearing_sigma 0.002 +smearing_method gauss +smearing_sigma 0.002 #Parameters (5.Mixing) -mixing_type broyden +mixing_type broyden #Parameters (7.Hybrid) -dft_functional hse -exx_real_number 1 -exx_pca_threshold 1E-3 -exx_c_threshold 1E-3 -exx_v_threshold 1 -exx_dm_threshold 1E-3 -exx_ccp_rmesh_times 1 -exx_separate_loop 1 -exx_hybrid_step 2 +dft_functional hse +exx_real_number 1 +exx_pca_threshold 1E-3 +exx_c_threshold 1E-3 +exx_v_threshold 1 +exx_dm_threshold 1E-3 +exx_ccp_rmesh_times 1 +exx_separate_loop 1 +exx_hybrid_step 2 -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB diff --git a/tests/08_EXX/08_KP_HSE_symm/INPUT b/tests/08_EXX/08_KP_HSE_symm/INPUT index aa98760d7a..a3faa405e5 100644 --- a/tests/08_EXX/08_KP_HSE_symm/INPUT +++ b/tests/08_EXX/08_KP_HSE_symm/INPUT @@ -1,40 +1,40 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -symmetry 1 -gamma_only 0 -nspin 1 +suffix autotest +symmetry 1 +gamma_only 0 +nspin 1 #Parameters (2.Iteration) -ecutwfc 10 -scf_thr 1E-7 -scf_nmax 100 +ecutwfc 10 +scf_thr 1E-7 +scf_nmax 100 -calculation scf -cal_force 1 -cal_stress 1 +calculation scf +cal_force 1 +cal_stress 1 #Parameters (3.Basis) -basis_type lcao -ks_solver genelpa +basis_type lcao +ks_solver genelpa #Parameters (4.Smearing) -smearing_method gauss -smearing_sigma 0.002 +smearing_method gauss +smearing_sigma 0.002 #Parameters (5.Mixing) -mixing_type broyden +mixing_type broyden #Parameters (7.Hybrid) -dft_functional hse -exx_real_number 1 -exx_pca_threshold 1E-4 -exx_c_threshold 1E-4 -exx_v_threshold 1 -exx_dm_threshold 1E-4 -exx_ccp_rmesh_times 1 -exx_separate_loop 1 -exx_hybrid_step 3 +dft_functional hse +exx_real_number 1 +exx_pca_threshold 1E-4 +exx_c_threshold 1E-4 +exx_v_threshold 1 +exx_dm_threshold 1E-4 +exx_ccp_rmesh_times 1 +exx_separate_loop 1 +exx_hybrid_step 3 -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB diff --git a/tests/08_EXX/09_KP_HSE_comp/INPUT b/tests/08_EXX/09_KP_HSE_comp/INPUT index c1bcc5c5cc..ceea722e10 100644 --- a/tests/08_EXX/09_KP_HSE_comp/INPUT +++ b/tests/08_EXX/09_KP_HSE_comp/INPUT @@ -1,38 +1,38 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -symmetry -1 -gamma_only 0 -nspin 1 +suffix autotest +symmetry -1 +gamma_only 0 +nspin 1 #Parameters (2.Iteration) -ecutwfc 10 -scf_thr 1E-5 -scf_nmax 100 +ecutwfc 10 +scf_thr 1E-5 +scf_nmax 100 -calculation scf +calculation scf #Parameters (3.Basis) -basis_type lcao -ks_solver genelpa +basis_type lcao +ks_solver genelpa #Parameters (4.Smearing) -smearing_method gauss -smearing_sigma 0.002 +smearing_method gauss +smearing_sigma 0.002 #Parameters (5.Mixing) -mixing_type broyden +mixing_type broyden #Parameters (7.Hybrid) -dft_functional hse -exx_real_number 0 -exx_pca_threshold 1E-3 -exx_c_threshold 1E-3 -exx_v_threshold 1 -exx_dm_threshold 1E-3 -exx_ccp_rmesh_times 1 -exx_separate_loop 1 -exx_hybrid_step 2 +dft_functional hse +exx_real_number 0 +exx_pca_threshold 1E-3 +exx_c_threshold 1E-3 +exx_v_threshold 1 +exx_dm_threshold 1E-3 +exx_ccp_rmesh_times 1 +exx_separate_loop 1 +exx_hybrid_step 2 -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB diff --git a/tests/08_EXX/10_KP_HF/INPUT b/tests/08_EXX/10_KP_HF/INPUT index 9e7990ac1c..ea53e4110d 100644 --- a/tests/08_EXX/10_KP_HF/INPUT +++ b/tests/08_EXX/10_KP_HF/INPUT @@ -1,39 +1,39 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -ntype 1 -symmetry 0 -gamma_only 0 -nspin 1 +suffix autotest +ntype 1 +symmetry 0 +gamma_only 0 +nspin 1 #Parameters (2.Iteration) -ecutwfc 10 -scf_thr 1E-7 -scf_nmax 100 +ecutwfc 10 +scf_thr 1E-7 +scf_nmax 100 -calculation scf +calculation scf #Parameters (3.Basis) -basis_type lcao -ks_solver genelpa +basis_type lcao +ks_solver genelpa #Parameters (4.Smearing) -smearing_method gauss -smearing_sigma 0.002 +smearing_method gauss +smearing_sigma 0.002 #Parameters (5.Mixing) -mixing_type broyden +mixing_type broyden #Parameters (7.Hybrid) -dft_functional hf -exx_real_number 1 -exx_pca_threshold 1E-3 -exx_c_threshold 1E-3 -exx_v_threshold 1 -exx_dm_threshold 1E-3 -exx_ccp_rmesh_times 2 -exx_separate_loop 1 -exx_hybrid_step 2 +dft_functional hf +exx_real_number 1 +exx_pca_threshold 1E-3 +exx_c_threshold 1E-3 +exx_v_threshold 1 +exx_dm_threshold 1E-3 +exx_ccp_rmesh_times 2 +exx_separate_loop 1 +exx_hybrid_step 2 -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB diff --git a/tests/08_EXX/11_KP_PBE0/INPUT b/tests/08_EXX/11_KP_PBE0/INPUT index fdf3f3c4db..9f35cbc982 100644 --- a/tests/08_EXX/11_KP_PBE0/INPUT +++ b/tests/08_EXX/11_KP_PBE0/INPUT @@ -1,39 +1,39 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -ntype 1 -symmetry 0 -gamma_only 0 -nspin 1 +suffix autotest +ntype 1 +symmetry 0 +gamma_only 0 +nspin 1 #Parameters (2.Iteration) -ecutwfc 10 -scf_thr 1E-7 -scf_nmax 100 +ecutwfc 10 +scf_thr 1E-7 +scf_nmax 100 -calculation scf +calculation scf #Parameters (3.Basis) -basis_type lcao -ks_solver genelpa +basis_type lcao +ks_solver genelpa #Parameters (4.Smearing) -smearing_method gauss -smearing_sigma 0.002 +smearing_method gauss +smearing_sigma 0.002 #Parameters (5.Mixing) -mixing_type broyden +mixing_type broyden #Parameters (7.Hybrid) -dft_functional pbe0 -exx_real_number 1 -exx_pca_threshold 1E-3 -exx_c_threshold 1E-3 -exx_v_threshold 1 -exx_dm_threshold 1E-3 -exx_ccp_rmesh_times 2 -exx_separate_loop 1 -exx_hybrid_step 2 +dft_functional pbe0 +exx_real_number 1 +exx_pca_threshold 1E-3 +exx_c_threshold 1E-3 +exx_v_threshold 1 +exx_dm_threshold 1E-3 +exx_ccp_rmesh_times 2 +exx_separate_loop 1 +exx_hybrid_step 2 -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB diff --git a/tests/08_EXX/12_KP_OXC/INPUT b/tests/08_EXX/12_KP_OXC/INPUT index 1b3f014ab2..90aec1200f 100644 --- a/tests/08_EXX/12_KP_OXC/INPUT +++ b/tests/08_EXX/12_KP_OXC/INPUT @@ -1,40 +1,40 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf +suffix autotest +calculation scf -nbands 6 -symmetry 0 -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB -gamma_only 0 +nbands 6 +symmetry 0 +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB +gamma_only 0 #Parameters (2.Iteration) -ecutwfc 10 -scf_thr 1e-7 -scf_nmax 50 +ecutwfc 10 +scf_thr 1e-7 +scf_nmax 50 #Parameters (3.Basis) -basis_type lcao +basis_type lcao #Parameters (4.Smearing) -smearing_method gauss -smearing_sigma 0.002 +smearing_method gauss +smearing_sigma 0.002 #Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.7 +mixing_type broyden +mixing_beta 0.7 -out_mat_xc 1 -out_eband_terms 1 -ks_solver scalapack_gvx +out_mat_xc 1 +out_eband_terms 1 +ks_solver scalapack_gvx -dft_functional hse -exx_real_number 1 -exx_pca_threshold 1E-2 -exx_c_threshold 1E-2 -exx_v_threshold 1 -exx_dm_threshold 1E-2 +dft_functional hse +exx_real_number 1 +exx_pca_threshold 1E-2 +exx_c_threshold 1E-2 +exx_v_threshold 1 +exx_dm_threshold 1E-2 exx_ccp_rmesh_times 1 -exx_separate_loop 1 -exx_hybrid_step 1 +exx_separate_loop 1 +exx_hybrid_step 1 diff --git a/tests/08_EXX/12_KP_OXC/vxck2_nao.txt.ref b/tests/08_EXX/12_KP_OXC/vxck2_nao.txt.ref new file mode 100644 index 0000000000..ff015bac04 --- /dev/null +++ b/tests/08_EXX/12_KP_OXC/vxck2_nao.txt.ref @@ -0,0 +1,19 @@ +#------------------------------------------------------------------------ +# ionic step 0 +# filename OUT.autotest/vxck2_nao.txt +# gamma only 0 +# rows 6 +# columns 6 +#------------------------------------------------------------------------ +Row 1 + (-1.04521692e+00,1.21238377e-15) (-2.94170695e-11,1.41798087e-15) (-1.99490049e-04,-2.26049394e-17) (2.79409680e-10,-1.86234457e-17) (-1.03725452e-10,-6.59450471e-18) (-4.06431774e-12,1.49751217e-23) +Row 2 + (-1.09707710e+00,-2.36477591e-15) (1.01850879e-10,-2.69600684e-19) (-5.02033582e-12,9.26336605e-24) (-3.65275222e-04,-3.06863320e-17) (-3.82248902e-11,1.47984502e-16) +Row 3 + (-1.10514811e+00,1.16179705e-15) (-3.34409897e-10,-3.33120847e-17) (2.31186850e-10,-1.41182530e-15) (-1.79607311e-13,8.86811471e-22) +Row 4 + (-1.10467119e+00,1.16025891e-15) (1.96365784e-13,8.74104627e-22) (-3.08273934e-10,1.40935092e-15) +Row 5 + (-8.01253751e-01,-1.73913949e-15) (1.18411485e-10,3.77818493e-17) +Row 6 + (-8.00580320e-01,-1.73052617e-15) diff --git a/tests/08_EXX/12_KP_OXC/vxcs1k2_nao.txt.ref b/tests/08_EXX/12_KP_OXC/vxcs1k2_nao.txt.ref deleted file mode 100644 index 6730bdcb9b..0000000000 --- a/tests/08_EXX/12_KP_OXC/vxcs1k2_nao.txt.ref +++ /dev/null @@ -1,6 +0,0 @@ -6 (-1.0452169,1.2123838e-15) (4.9059386e-11,1.4179809e-15) (-0.00019949431,-2.2604179e-17) (-2.2290933e-10,-1.8623075e-17) (-1.1384613e-11,-6.5945089e-18) (-2.7169425e-11,-6.6468877e-24) - (-1.0970771,-2.3647759e-15) (2.3737271e-11,-2.6964156e-19) (-3.3538934e-11,-1.2422321e-24) (-0.000365275,-3.0685935e-17) (3.0494717e-11,1.4798433e-16) - (-1.1051481,1.1617971e-15) (2.667783e-10,-3.3313604e-17) (-2.1070688e-10,-1.4118254e-15) (-1.2088768e-12,-7.0485115e-22) - (-1.1046712,1.1602589e-15) (1.2991642e-12,-6.9476958e-22) (2.3448149e-10,1.4093508e-15) - (-0.80125376,-1.73914e-15) (-9.4467851e-11,3.7782225e-17) - (-0.80058031,-1.7305258e-15) diff --git a/tests/08_EXX/13_NO_KP_CAMPBEH/INPUT b/tests/08_EXX/13_NO_KP_CAMPBEH/INPUT index 421c087953..4e2699a5b9 100644 --- a/tests/08_EXX/13_NO_KP_CAMPBEH/INPUT +++ b/tests/08_EXX/13_NO_KP_CAMPBEH/INPUT @@ -1,39 +1,39 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -ntype 1 -symmetry 0 -gamma_only 0 -nspin 1 +suffix autotest +ntype 1 +symmetry 0 +gamma_only 0 +nspin 1 #Parameters (2.Iteration) -ecutwfc 10 -scf_thr 1E-7 -scf_nmax 100 +ecutwfc 10 +scf_thr 1E-7 +scf_nmax 100 -calculation scf +calculation scf #Parameters (3.Basis) -basis_type lcao -ks_solver genelpa +basis_type lcao +ks_solver genelpa #Parameters (4.Smearing) -smearing_method gauss -smearing_sigma 0.002 +smearing_method gauss +smearing_sigma 0.002 #Parameters (5.Mixing) -mixing_type broyden +mixing_type broyden #Parameters (7.Hybrid) -dft_functional cam_pbeh -exx_real_number 1 -exx_pca_threshold 1E-3 -exx_c_threshold 1E-3 -exx_v_threshold 1 -exx_dm_threshold 1E-3 -exx_ccp_rmesh_times 2 -exx_separate_loop 1 -exx_hybrid_step 2 +dft_functional cam_pbeh +exx_real_number 1 +exx_pca_threshold 1E-3 +exx_c_threshold 1E-3 +exx_v_threshold 1 +exx_dm_threshold 1E-3 +exx_ccp_rmesh_times 2 +exx_separate_loop 1 +exx_hybrid_step 2 -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB diff --git a/tests/08_EXX/51_GO_LR/INPUT b/tests/08_EXX/51_GO_LR/INPUT index 38476bd933..df3c352eb4 100644 --- a/tests/08_EXX/51_GO_LR/INPUT +++ b/tests/08_EXX/51_GO_LR/INPUT @@ -1,39 +1,39 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -pseudo_dir ../../../tests/PP_ORB -orbital_dir ../../../tests/PP_ORB -calculation scf -nbands 6 -symmetry -1 -nspin 2 +suffix autotest +pseudo_dir ../../../tests/PP_ORB +orbital_dir ../../../tests/PP_ORB +calculation scf +nbands 6 +symmetry -1 +nspin 2 #Parameters (2.Iteration) -ecutwfc 10 -scf_thr 1e-3 -scf_nmax 20 +ecutwfc 10 +scf_thr 1e-3 +scf_nmax 20 #Parameters (3.Basis) -basis_type lcao -gamma_only 1 +basis_type lcao +gamma_only 1 #Parameters (4.Smearing) -smearing_method gaussian -smearing_sigma 0.02 +smearing_method gaussian +smearing_sigma 0.02 #Parameters (5.Mixing) -mixing_type pulay -mixing_beta 0.4 -mixing_gg0 0 +mixing_type pulay +mixing_beta 0.4 +mixing_gg0 0 -lr_nstates 2 -xc_kernel lda -lr_solver dav -lr_thr 1e-2 -pw_diag_ndim 2 +lr_nstates 2 +xc_kernel lda +lr_solver dav +lr_thr 1e-2 +pw_diag_ndim 2 -esolver_type ks-lr +esolver_type ks-lr -nvirt 2 +nvirt 2 abs_wavelen_range 40 180 -abs_broadening 0.01 \ No newline at end of file +abs_broadening 0.01 diff --git a/tests/08_EXX/52_GO_LR_PBE/INPUT b/tests/08_EXX/52_GO_LR_PBE/INPUT index c2ddd36882..9641538f48 100644 --- a/tests/08_EXX/52_GO_LR_PBE/INPUT +++ b/tests/08_EXX/52_GO_LR_PBE/INPUT @@ -1,39 +1,39 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -pseudo_dir ../../../tests/PP_ORB -orbital_dir ../../../tests/PP_ORB -calculation scf -nbands 6 -symmetry -1 -nspin 2 +suffix autotest +pseudo_dir ../../../tests/PP_ORB +orbital_dir ../../../tests/PP_ORB +calculation scf +nbands 6 +symmetry -1 +nspin 2 #Parameters (2.Iteration) -ecutwfc 10 -scf_thr 1e-3 -scf_nmax 20 +ecutwfc 10 +scf_thr 1e-3 +scf_nmax 20 #Parameters (3.Basis) -basis_type lcao -gamma_only 1 +basis_type lcao +gamma_only 1 #Parameters (4.Smearing) -smearing_method gaussian -smearing_sigma 0.02 +smearing_method gaussian +smearing_sigma 0.02 #Parameters (5.Mixing) -mixing_type pulay -mixing_beta 0.4 -mixing_gg0 0 +mixing_type pulay +mixing_beta 0.4 +mixing_gg0 0 -lr_nstates 2 -xc_kernel pbe -lr_solver dav -lr_thr 1e-2 -pw_diag_ndim 2 +lr_nstates 2 +xc_kernel pbe +lr_solver dav +lr_thr 1e-2 +pw_diag_ndim 2 -esolver_type ks-lr +esolver_type ks-lr -nvirt 2 +nvirt 2 abs_wavelen_range 40 180 -abs_broadening 0.01 \ No newline at end of file +abs_broadening 0.01 diff --git a/tests/08_EXX/53_GO_LR_HF/INPUT b/tests/08_EXX/53_GO_LR_HF/INPUT index 05bfb23a1e..5fbb2944db 100644 --- a/tests/08_EXX/53_GO_LR_HF/INPUT +++ b/tests/08_EXX/53_GO_LR_HF/INPUT @@ -1,4 +1,4 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) suffix autotest pseudo_dir ../../../tests/PP_ORB @@ -12,10 +12,10 @@ nspin 2 ecutwfc 10 scf_thr 1e-7 scf_nmax 20 -exx_hybrid_step 1 +exx_hybrid_step 1 #Parameters (3.Basis) -basis_type lcao +basis_type lcao gamma_only 1 #Parameters (4.Smearing) @@ -28,21 +28,21 @@ mixing_beta 0.4 mixing_gg0 0 # DFT Funcitonal Hartree-Fock -dft_functional hf -exx_real_number 1 -exx_ccp_rmesh_times 1 +dft_functional hf +exx_real_number 1 +exx_ccp_rmesh_times 1 # Parameters of Linear Response TDDFT -lr_nstates 2 -xc_kernel hf -lr_solver dav -lr_thr 1e-2 -pw_diag_ndim 2 +lr_nstates 2 +xc_kernel hf +lr_solver dav +lr_thr 1e-2 +pw_diag_ndim 2 # energy solver for LR-TDDFT -esolver_type ks-lr +esolver_type ks-lr -nocc 4 -nvirt 2 +nocc 4 +nvirt 2 abs_wavelen_range 40 180 -abs_broadening 0.01 +abs_broadening 0.01 diff --git a/tests/08_EXX/54_GO_ULR_HF/INPUT b/tests/08_EXX/54_GO_ULR_HF/INPUT index 35b206c9b1..6c3da3549a 100644 --- a/tests/08_EXX/54_GO_ULR_HF/INPUT +++ b/tests/08_EXX/54_GO_ULR_HF/INPUT @@ -1,44 +1,44 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -pseudo_dir ../../../tests/PP_ORB -orbital_dir ../../../tests/PP_ORB -calculation scf -nbands 6 -symmetry -1 -nspin 2 +suffix autotest +pseudo_dir ../../../tests/PP_ORB +orbital_dir ../../../tests/PP_ORB +calculation scf +nbands 6 +symmetry -1 +nspin 2 #Parameters (2.Iteration) -ecutwfc 10 -scf_thr 1e-7 -scf_nmax 20 -exx_hybrid_step 1 +ecutwfc 10 +scf_thr 1e-7 +scf_nmax 20 +exx_hybrid_step 1 #Parameters (3.Basis) -basis_type lcao -gamma_only 1 +basis_type lcao +gamma_only 1 #Parameters (4.Smearing) -smearing_method gaussian -smearing_sigma 0.02 +smearing_method gaussian +smearing_sigma 0.02 #Parameters (5.Mixing) -mixing_type pulay -mixing_beta 0.4 -mixing_gg0 0 +mixing_type pulay +mixing_beta 0.4 +mixing_gg0 0 -dft_functional hf -exx_real_number 1 -exx_ccp_rmesh_times 1 +dft_functional hf +exx_real_number 1 +exx_ccp_rmesh_times 1 -lr_nstates 3 -xc_kernel hf -lr_solver lapack -lr_thr 1e-2 -lr_unrestricted 1 -pw_diag_ndim 2 +lr_nstates 3 +xc_kernel hf +lr_solver lapack +lr_thr 1e-2 +lr_unrestricted 1 +pw_diag_ndim 2 -esolver_type ks-lr +esolver_type ks-lr -nvirt 2 -nocc 2 +nvirt 2 +nocc 2 diff --git a/tests/08_EXX/55_KP_LR/INPUT b/tests/08_EXX/55_KP_LR/INPUT index 80f9424e8e..875aae1968 100644 --- a/tests/08_EXX/55_KP_LR/INPUT +++ b/tests/08_EXX/55_KP_LR/INPUT @@ -1,37 +1,37 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -pseudo_dir ../../../tests/PP_ORB -orbital_dir ../../../tests/PP_ORB -calculation scf -nbands 6 -symmetry -1 -nspin 2 +suffix autotest +pseudo_dir ../../../tests/PP_ORB +orbital_dir ../../../tests/PP_ORB +calculation scf +nbands 6 +symmetry -1 +nspin 2 #Parameters (2.Iteration) -ecutwfc 10 -scf_thr 1e-6 -scf_nmax 20 +ecutwfc 10 +scf_thr 1e-6 +scf_nmax 20 #Parameters (3.Basis) -basis_type lcao -gamma_only 0 +basis_type lcao +gamma_only 0 #Parameters (4.Smearing) -smearing_method gaussian -smearing_sigma 0.02 +smearing_method gaussian +smearing_sigma 0.02 #Parameters (5.Mixing) -mixing_type pulay -mixing_beta 0.4 +mixing_type pulay +mixing_beta 0.4 -lr_nstates 2 # for test/debug, you can try a smaller one like 2 -xc_kernel lda -lr_solver dav_subspace -lr_thr 1e-2 -pw_diag_ndim 4 +lr_nstates 2 # for test/debug, you can try a smaller one like 2 +xc_kernel lda +lr_solver dav_subspace +lr_thr 1e-2 +pw_diag_ndim 4 -esolver_type ks-lr +esolver_type ks-lr -nvirt 2 +nvirt 2 abs_wavelen_range 200 600 diff --git a/tests/09_DeePKS/01_NO_GO_deepks_scf/INPUT b/tests/09_DeePKS/01_NO_GO_deepks_scf/INPUT new file mode 100644 index 0000000000..c9d4452cd1 --- /dev/null +++ b/tests/09_DeePKS/01_NO_GO_deepks_scf/INPUT @@ -0,0 +1,33 @@ +INPUT_PARAMETERS +#Parameters (1.General) +suffix autotest +calculation scf +dft_functional lda + +nbands 6 +symmetry 0 +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB + +#Parameters (2.Iteration) +ecutwfc 20 +scf_thr 1e-7 +scf_nmax 50 + +#Parameters (3.Basis) +basis_type lcao +gamma_only 1 + +#Parameters (4.Smearing) +smearing_method gaussian +smearing_sigma 0.02 + +#Parameters (5.Mixing) +mixing_type broyden +mixing_beta 0.4 + +cal_force 1 +cal_stress 1 +deepks_scf 1 +deepks_out_labels 0 +deepks_model ../Model_ProjOrb/model_lda_pbe_18.ptg diff --git a/tests/09_DeePKS/101_PW_ORB_deepks_p/KPT b/tests/09_DeePKS/01_NO_GO_deepks_scf/KPT similarity index 100% rename from tests/09_DeePKS/101_PW_ORB_deepks_p/KPT rename to tests/09_DeePKS/01_NO_GO_deepks_scf/KPT diff --git a/tests/09_DeePKS/102_NO_GO_deepks_scf/README b/tests/09_DeePKS/01_NO_GO_deepks_scf/README similarity index 100% rename from tests/09_DeePKS/102_NO_GO_deepks_scf/README rename to tests/09_DeePKS/01_NO_GO_deepks_scf/README diff --git a/tests/09_DeePKS/102_NO_GO_deepks_nscf/STRU b/tests/09_DeePKS/01_NO_GO_deepks_scf/STRU similarity index 100% rename from tests/09_DeePKS/102_NO_GO_deepks_nscf/STRU rename to tests/09_DeePKS/01_NO_GO_deepks_scf/STRU diff --git a/tests/09_DeePKS/102_NO_GO_deepks_scf/result.ref b/tests/09_DeePKS/01_NO_GO_deepks_scf/result.ref similarity index 100% rename from tests/09_DeePKS/102_NO_GO_deepks_scf/result.ref rename to tests/09_DeePKS/01_NO_GO_deepks_scf/result.ref diff --git a/tests/09_DeePKS/02_NO_KP_deepks_scf/INPUT b/tests/09_DeePKS/02_NO_KP_deepks_scf/INPUT new file mode 100644 index 0000000000..835f957061 --- /dev/null +++ b/tests/09_DeePKS/02_NO_KP_deepks_scf/INPUT @@ -0,0 +1,22 @@ +INPUT_PARAMETERS +calculation scf +suffix autotest + +ecutwfc 50 +scf_thr 1e-06 +scf_nmax 35 +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB +basis_type lcao +dft_functional lda +gamma_only 0 +mixing_type broyden +mixing_beta 0.8 +smearing_method gaussian +smearing_sigma 0.02 + +cal_force 1 +cal_stress 1 +deepks_out_labels 0 +deepks_scf 1 +deepks_model ../Model_ProjOrb/model_lda_pbe_18.ptg diff --git a/tests/09_DeePKS/102_NO_KP_deepks_nscf/KPT b/tests/09_DeePKS/02_NO_KP_deepks_scf/KPT similarity index 100% rename from tests/09_DeePKS/102_NO_KP_deepks_nscf/KPT rename to tests/09_DeePKS/02_NO_KP_deepks_scf/KPT diff --git a/tests/09_DeePKS/102_NO_KP_deepks_scf/README b/tests/09_DeePKS/02_NO_KP_deepks_scf/README similarity index 100% rename from tests/09_DeePKS/102_NO_KP_deepks_scf/README rename to tests/09_DeePKS/02_NO_KP_deepks_scf/README diff --git a/tests/09_DeePKS/102_NO_KP_deepks_nscf/STRU b/tests/09_DeePKS/02_NO_KP_deepks_scf/STRU similarity index 100% rename from tests/09_DeePKS/102_NO_KP_deepks_nscf/STRU rename to tests/09_DeePKS/02_NO_KP_deepks_scf/STRU diff --git a/tests/09_DeePKS/102_NO_KP_deepks_scf/result.ref b/tests/09_DeePKS/02_NO_KP_deepks_scf/result.ref similarity index 100% rename from tests/09_DeePKS/102_NO_KP_deepks_scf/result.ref rename to tests/09_DeePKS/02_NO_KP_deepks_scf/result.ref diff --git a/tests/09_DeePKS/03_NO_GO_deepks_md/INPUT b/tests/09_DeePKS/03_NO_GO_deepks_md/INPUT new file mode 100644 index 0000000000..ab5322ec71 --- /dev/null +++ b/tests/09_DeePKS/03_NO_GO_deepks_md/INPUT @@ -0,0 +1,42 @@ +INPUT_PARAMETERS +#Parameters (1.General) +suffix autotest +calculation md + +nbands 6 +symmetry 0 +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB + +#Parameters (2.Iteration) +ecutwfc 50 +scf_thr 1e-6 +scf_nmax 50 + +#Parameters (3.Basis) +basis_type lcao +gamma_only 1 +mixing_restart 1e-3 +mixing_dmr 1 + +#Parameters (4.Smearing) +smearing_method gaussian +smearing_sigma 0.02 + +#Parameters (5.Mixing) +mixing_type broyden +mixing_beta 0.4 + +#Parameters (6.File) +deepks_out_labels 0 +deepks_scf 1 +deepks_model ../Model_ProjOrb/model_lda_pbe_18.ptg +cal_force 1 +cal_stress 1 + +md_type nvt +md_nstep 2 +md_dt 1 +md_tfirst 300 +md_tfreq 0.025 +md_tchain 1 diff --git a/tests/09_DeePKS/101_PW_ORB_deepks_s/KPT b/tests/09_DeePKS/03_NO_GO_deepks_md/KPT similarity index 100% rename from tests/09_DeePKS/101_PW_ORB_deepks_s/KPT rename to tests/09_DeePKS/03_NO_GO_deepks_md/KPT diff --git a/tests/09_DeePKS/102_NO_GO_deepks_md/README b/tests/09_DeePKS/03_NO_GO_deepks_md/README similarity index 100% rename from tests/09_DeePKS/102_NO_GO_deepks_md/README rename to tests/09_DeePKS/03_NO_GO_deepks_md/README diff --git a/tests/09_DeePKS/102_NO_GO_deepks_md/STRU b/tests/09_DeePKS/03_NO_GO_deepks_md/STRU similarity index 100% rename from tests/09_DeePKS/102_NO_GO_deepks_md/STRU rename to tests/09_DeePKS/03_NO_GO_deepks_md/STRU diff --git a/tests/09_DeePKS/102_NO_GO_deepks_md/result.ref b/tests/09_DeePKS/03_NO_GO_deepks_md/result.ref similarity index 100% rename from tests/09_DeePKS/102_NO_GO_deepks_md/result.ref rename to tests/09_DeePKS/03_NO_GO_deepks_md/result.ref diff --git a/tests/09_DeePKS/04_NO_KP_deepks_md/INPUT b/tests/09_DeePKS/04_NO_KP_deepks_md/INPUT new file mode 100644 index 0000000000..4064c9e606 --- /dev/null +++ b/tests/09_DeePKS/04_NO_KP_deepks_md/INPUT @@ -0,0 +1,42 @@ +INPUT_PARAMETERS +#Parameters (1.General) +suffix autotest +calculation md +dft_functional lda + +nbands 12 +symmetry 0 +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB + +#Parameters (2.Iteration) +ecutwfc 50 +scf_thr 1e-6 +scf_nmax 50 + +#Parameters (3.Basis) +basis_type lcao +gamma_only 0 + +#Parameters (4.Smearing) +smearing_method gaussian +smearing_sigma 0.02 + +#Parameters (5.Mixing) +mixing_type broyden +mixing_beta 0.8 +mixing_gg0 0.0 + +#Parameters (6.File) +deepks_out_labels 0 +deepks_scf 1 +cal_force 1 +cal_stress 1 +deepks_model ../Model_ProjOrb/model_lda_pbe_18.ptg + +md_type nvt +md_nstep 2 +md_dt 1 +md_tfirst 300 +md_tfreq 0.025 +md_tchain 1 diff --git a/tests/09_DeePKS/102_NO_KP_deepks_md/KPT b/tests/09_DeePKS/04_NO_KP_deepks_md/KPT similarity index 100% rename from tests/09_DeePKS/102_NO_KP_deepks_md/KPT rename to tests/09_DeePKS/04_NO_KP_deepks_md/KPT diff --git a/tests/09_DeePKS/102_NO_KP_deepks_md/README b/tests/09_DeePKS/04_NO_KP_deepks_md/README similarity index 100% rename from tests/09_DeePKS/102_NO_KP_deepks_md/README rename to tests/09_DeePKS/04_NO_KP_deepks_md/README diff --git a/tests/09_DeePKS/102_NO_KP_deepks_md/STRU b/tests/09_DeePKS/04_NO_KP_deepks_md/STRU similarity index 100% rename from tests/09_DeePKS/102_NO_KP_deepks_md/STRU rename to tests/09_DeePKS/04_NO_KP_deepks_md/STRU diff --git a/tests/09_DeePKS/102_NO_KP_deepks_md/result.ref b/tests/09_DeePKS/04_NO_KP_deepks_md/result.ref similarity index 100% rename from tests/09_DeePKS/102_NO_KP_deepks_md/result.ref rename to tests/09_DeePKS/04_NO_KP_deepks_md/result.ref diff --git a/tests/09_DeePKS/05_NO_GO_deepks_nscf/INPUT b/tests/09_DeePKS/05_NO_GO_deepks_nscf/INPUT new file mode 100644 index 0000000000..f40c52235d --- /dev/null +++ b/tests/09_DeePKS/05_NO_GO_deepks_nscf/INPUT @@ -0,0 +1,37 @@ +INPUT_PARAMETERS +#Parameters (1.General) +suffix autotest +calculation nscf +dft_functional pbe + +nbands 6 +symmetry 0 +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB +read_file_dir ./ + +#Parameters (2.Iteration) +ecutwfc 20 +scf_thr 1e-7 +scf_nmax 50 + +#Parameters (3.Basis) +basis_type lcao +gamma_only 1 + +#Parameters (4.Smearing) +smearing_method gaussian +smearing_sigma 0.02 + +#Parameters (5.Mixing) +mixing_type broyden +mixing_beta 0.4 + +cal_force 1 +cal_stress 1 +deepks_scf 1 +deepks_out_labels 0 +deepks_model ../Model_ProjOrb/model_lda_pbe_18.ptg + +init_chg file +out_dos 1 diff --git a/tests/09_DeePKS/102_NO_GO_deepks_md/KPT b/tests/09_DeePKS/05_NO_GO_deepks_nscf/KPT similarity index 100% rename from tests/09_DeePKS/102_NO_GO_deepks_md/KPT rename to tests/09_DeePKS/05_NO_GO_deepks_nscf/KPT diff --git a/tests/09_DeePKS/102_NO_GO_deepks_nscf/README b/tests/09_DeePKS/05_NO_GO_deepks_nscf/README similarity index 100% rename from tests/09_DeePKS/102_NO_GO_deepks_nscf/README rename to tests/09_DeePKS/05_NO_GO_deepks_nscf/README diff --git a/tests/09_DeePKS/102_NO_GO_deepks_scf/STRU b/tests/09_DeePKS/05_NO_GO_deepks_nscf/STRU similarity index 100% rename from tests/09_DeePKS/102_NO_GO_deepks_scf/STRU rename to tests/09_DeePKS/05_NO_GO_deepks_nscf/STRU diff --git a/tests/09_DeePKS/102_NO_GO_deepks_nscf/chgs1.cube b/tests/09_DeePKS/05_NO_GO_deepks_nscf/chg.cube similarity index 100% rename from tests/09_DeePKS/102_NO_GO_deepks_nscf/chgs1.cube rename to tests/09_DeePKS/05_NO_GO_deepks_nscf/chg.cube diff --git a/tests/09_DeePKS/102_NO_GO_deepks_nscf/OUT.autotest/deepks_projdm.dat b/tests/09_DeePKS/05_NO_GO_deepks_nscf/deepks_projdm.dat similarity index 100% rename from tests/09_DeePKS/102_NO_GO_deepks_nscf/OUT.autotest/deepks_projdm.dat rename to tests/09_DeePKS/05_NO_GO_deepks_nscf/deepks_projdm.dat diff --git a/tests/09_DeePKS/102_NO_GO_deepks_nscf/result.ref b/tests/09_DeePKS/05_NO_GO_deepks_nscf/result.ref similarity index 100% rename from tests/09_DeePKS/102_NO_GO_deepks_nscf/result.ref rename to tests/09_DeePKS/05_NO_GO_deepks_nscf/result.ref diff --git a/tests/09_DeePKS/06_NO_KP_deepks_nscf/INPUT b/tests/09_DeePKS/06_NO_KP_deepks_nscf/INPUT new file mode 100644 index 0000000000..0a095a7e64 --- /dev/null +++ b/tests/09_DeePKS/06_NO_KP_deepks_nscf/INPUT @@ -0,0 +1,26 @@ +INPUT_PARAMETERS +calculation nscf +suffix autotest + +ecutwfc 50 +scf_thr 1e-06 +scf_nmax 35 +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB +read_file_dir ./ +basis_type lcao +dft_functional pbe +gamma_only 0 +mixing_type broyden +mixing_beta 0.8 +smearing_method gaussian +smearing_sigma 0.02 + +cal_force 1 +cal_stress 1 +deepks_out_labels 0 +deepks_scf 1 +deepks_model ../Model_ProjOrb/model_lda_pbe_18.ptg + +init_chg file +out_dos 1 diff --git a/tests/09_DeePKS/102_NO_KP_deepks_scf/KPT b/tests/09_DeePKS/06_NO_KP_deepks_nscf/KPT similarity index 100% rename from tests/09_DeePKS/102_NO_KP_deepks_scf/KPT rename to tests/09_DeePKS/06_NO_KP_deepks_nscf/KPT diff --git a/tests/09_DeePKS/102_NO_KP_deepks_nscf/README b/tests/09_DeePKS/06_NO_KP_deepks_nscf/README similarity index 100% rename from tests/09_DeePKS/102_NO_KP_deepks_nscf/README rename to tests/09_DeePKS/06_NO_KP_deepks_nscf/README diff --git a/tests/09_DeePKS/102_NO_KP_deepks_scf/STRU b/tests/09_DeePKS/06_NO_KP_deepks_nscf/STRU similarity index 100% rename from tests/09_DeePKS/102_NO_KP_deepks_scf/STRU rename to tests/09_DeePKS/06_NO_KP_deepks_nscf/STRU diff --git a/tests/09_DeePKS/102_NO_KP_deepks_nscf/chgs1.cube b/tests/09_DeePKS/06_NO_KP_deepks_nscf/chg.cube similarity index 100% rename from tests/09_DeePKS/102_NO_KP_deepks_nscf/chgs1.cube rename to tests/09_DeePKS/06_NO_KP_deepks_nscf/chg.cube diff --git a/tests/09_DeePKS/102_NO_KP_deepks_nscf/OUT.autotest/deepks_projdm.dat b/tests/09_DeePKS/06_NO_KP_deepks_nscf/deepks_projdm.dat similarity index 100% rename from tests/09_DeePKS/102_NO_KP_deepks_nscf/OUT.autotest/deepks_projdm.dat rename to tests/09_DeePKS/06_NO_KP_deepks_nscf/deepks_projdm.dat diff --git a/tests/09_DeePKS/102_NO_KP_deepks_nscf/result.ref b/tests/09_DeePKS/06_NO_KP_deepks_nscf/result.ref similarity index 100% rename from tests/09_DeePKS/102_NO_KP_deepks_nscf/result.ref rename to tests/09_DeePKS/06_NO_KP_deepks_nscf/result.ref diff --git a/tests/09_DeePKS/07_NO_GO_deepks_relax/INPUT b/tests/09_DeePKS/07_NO_GO_deepks_relax/INPUT new file mode 100644 index 0000000000..4dc7e157c9 --- /dev/null +++ b/tests/09_DeePKS/07_NO_GO_deepks_relax/INPUT @@ -0,0 +1,35 @@ +INPUT_PARAMETERS +#Parameters (1.General) +suffix autotest +calculation relax +relax_method bfgs 2 +relax_nmax 10 +dft_functional pbe + +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB + +#Parameters (2.Iteration) +ecutwfc 20 +scf_thr 5e-6 +scf_nmax 50 + +#Parameters (3.Basis) +basis_type lcao +gamma_only 1 + +#Parameters (4.Smearing) +smearing_method gaussian +smearing_sigma 0.02 + +#Parameters (5.Mixing) +mixing_type broyden +mixing_beta 0.8 + +cal_force 1 +force_thr_ev 1e-4 +cal_stress 1 +stress_thr 1e-7 +deepks_scf 1 +deepks_out_labels 0 +deepks_model ../Model_ProjOrb/model_Si_135.ptg diff --git a/tests/09_DeePKS/102_NO_GO_deepks_nscf/KPT b/tests/09_DeePKS/07_NO_GO_deepks_relax/KPT similarity index 100% rename from tests/09_DeePKS/102_NO_GO_deepks_nscf/KPT rename to tests/09_DeePKS/07_NO_GO_deepks_relax/KPT diff --git a/tests/09_DeePKS/102_NO_GO_deepks_relax/README b/tests/09_DeePKS/07_NO_GO_deepks_relax/README similarity index 100% rename from tests/09_DeePKS/102_NO_GO_deepks_relax/README rename to tests/09_DeePKS/07_NO_GO_deepks_relax/README diff --git a/tests/09_DeePKS/102_NO_GO_deepks_relax/STRU b/tests/09_DeePKS/07_NO_GO_deepks_relax/STRU similarity index 100% rename from tests/09_DeePKS/102_NO_GO_deepks_relax/STRU rename to tests/09_DeePKS/07_NO_GO_deepks_relax/STRU diff --git a/tests/09_DeePKS/102_NO_GO_deepks_relax/result.ref b/tests/09_DeePKS/07_NO_GO_deepks_relax/result.ref similarity index 100% rename from tests/09_DeePKS/102_NO_GO_deepks_relax/result.ref rename to tests/09_DeePKS/07_NO_GO_deepks_relax/result.ref diff --git a/tests/09_DeePKS/08_NO_KP_deepks_relax/INPUT b/tests/09_DeePKS/08_NO_KP_deepks_relax/INPUT new file mode 100644 index 0000000000..6326955803 --- /dev/null +++ b/tests/09_DeePKS/08_NO_KP_deepks_relax/INPUT @@ -0,0 +1,35 @@ +INPUT_PARAMETERS +#Parameters (1.General) +suffix autotest +calculation relax +relax_method bfgs 2 +relax_nmax 10 +dft_functional pbe + +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB + +#Parameters (2.Iteration) +ecutwfc 20 +scf_thr 1e-7 +scf_nmax 50 + +#Parameters (3.Basis) +basis_type lcao +gamma_only 0 + +#Parameters (4.Smearing) +smearing_method gaussian +smearing_sigma 0.02 + +#Parameters (5.Mixing) +mixing_type broyden +mixing_beta 0.8 + +cal_force 1 +force_thr_ev 1e-4 +cal_stress 1 +stress_thr 1e-7 +deepks_scf 1 +deepks_out_labels 0 +deepks_model ../Model_ProjOrb/model_Si_135.ptg diff --git a/tests/09_DeePKS/102_NO_KP_deepks_relax/KPT b/tests/09_DeePKS/08_NO_KP_deepks_relax/KPT similarity index 100% rename from tests/09_DeePKS/102_NO_KP_deepks_relax/KPT rename to tests/09_DeePKS/08_NO_KP_deepks_relax/KPT diff --git a/tests/09_DeePKS/102_NO_KP_deepks_relax/README b/tests/09_DeePKS/08_NO_KP_deepks_relax/README similarity index 100% rename from tests/09_DeePKS/102_NO_KP_deepks_relax/README rename to tests/09_DeePKS/08_NO_KP_deepks_relax/README diff --git a/tests/09_DeePKS/102_NO_KP_deepks_relax/STRU b/tests/09_DeePKS/08_NO_KP_deepks_relax/STRU similarity index 100% rename from tests/09_DeePKS/102_NO_KP_deepks_relax/STRU rename to tests/09_DeePKS/08_NO_KP_deepks_relax/STRU diff --git a/tests/09_DeePKS/102_NO_KP_deepks_relax/result.ref b/tests/09_DeePKS/08_NO_KP_deepks_relax/result.ref similarity index 100% rename from tests/09_DeePKS/102_NO_KP_deepks_relax/result.ref rename to tests/09_DeePKS/08_NO_KP_deepks_relax/result.ref diff --git a/tests/09_DeePKS/09_NO_GO_deepks_basic/INPUT b/tests/09_DeePKS/09_NO_GO_deepks_basic/INPUT new file mode 100644 index 0000000000..f3b2c8ad30 --- /dev/null +++ b/tests/09_DeePKS/09_NO_GO_deepks_basic/INPUT @@ -0,0 +1,33 @@ +INPUT_PARAMETERS +#Parameters (1.General) +suffix autotest +calculation scf + +nbands 6 +symmetry 0 +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB + +#Parameters (2.Iteration) +ecutwfc 50 +scf_thr 1e-6 +scf_nmax 50 + +#Parameters (3.Basis) +basis_type lcao +gamma_only 1 + +#Parameters (4.Smearing) +smearing_method gaussian +smearing_sigma 0.02 + +#Parameters (5.Mixing) +mixing_type broyden +mixing_beta 0.8 + +#Parameters (6.File) +deepks_out_labels 1 +deepks_scf 1 +deepks_model ../Model_ProjOrb/model_lda_pbe_18.ptg +cal_force 1 +cal_stress 1 diff --git a/tests/09_DeePKS/102_NO_GO_deepks_relax/KPT b/tests/09_DeePKS/09_NO_GO_deepks_basic/KPT similarity index 100% rename from tests/09_DeePKS/102_NO_GO_deepks_relax/KPT rename to tests/09_DeePKS/09_NO_GO_deepks_basic/KPT diff --git a/tests/09_DeePKS/103_NO_GO_deepks_basic/README b/tests/09_DeePKS/09_NO_GO_deepks_basic/README similarity index 100% rename from tests/09_DeePKS/103_NO_GO_deepks_basic/README rename to tests/09_DeePKS/09_NO_GO_deepks_basic/README diff --git a/tests/09_DeePKS/103_NO_GO_deepks_basic/STRU b/tests/09_DeePKS/09_NO_GO_deepks_basic/STRU similarity index 100% rename from tests/09_DeePKS/103_NO_GO_deepks_basic/STRU rename to tests/09_DeePKS/09_NO_GO_deepks_basic/STRU diff --git a/tests/09_DeePKS/103_NO_GO_deepks_basic/result.ref b/tests/09_DeePKS/09_NO_GO_deepks_basic/result.ref similarity index 100% rename from tests/09_DeePKS/103_NO_GO_deepks_basic/result.ref rename to tests/09_DeePKS/09_NO_GO_deepks_basic/result.ref diff --git a/tests/09_DeePKS/100_NO_GO_deepks_UT/E_delta_bands_ref.dat b/tests/09_DeePKS/100_NO_GO_deepks_UT/E_delta_bands_ref.dat deleted file mode 100644 index a764a14cfc..0000000000 --- a/tests/09_DeePKS/100_NO_GO_deepks_UT/E_delta_bands_ref.dat +++ /dev/null @@ -1 +0,0 @@ --0.007602894356 diff --git a/tests/09_DeePKS/100_NO_GO_deepks_UT/E_delta_ref.dat b/tests/09_DeePKS/100_NO_GO_deepks_UT/E_delta_ref.dat deleted file mode 100644 index fa51fec592..0000000000 --- a/tests/09_DeePKS/100_NO_GO_deepks_UT/E_delta_ref.dat +++ /dev/null @@ -1 +0,0 @@ --0.1377737748 diff --git a/tests/09_DeePKS/100_NO_GO_deepks_UT/F_delta_ref.dat b/tests/09_DeePKS/100_NO_GO_deepks_UT/F_delta_ref.dat deleted file mode 100644 index eff645c525..0000000000 --- a/tests/09_DeePKS/100_NO_GO_deepks_UT/F_delta_ref.dat +++ /dev/null @@ -1,5 +0,0 @@ --0.0003706779237 8.336190151e-06 0.001631126762 -9.708686281e-05 1.690692748e-05 -0.005582105144 --0.003585987888 2.035424355e-05 0.001126977947 -0.001908170566 0.00362839126 0.001398407512 -0.001951408382 -0.003673988622 0.001425592923 diff --git a/tests/09_DeePKS/100_NO_GO_deepks_UT/INPUT b/tests/09_DeePKS/100_NO_GO_deepks_UT/INPUT deleted file mode 100644 index 9c968267b4..0000000000 --- a/tests/09_DeePKS/100_NO_GO_deepks_UT/INPUT +++ /dev/null @@ -1 +0,0 @@ -gamma_only_local 1 diff --git a/tests/09_DeePKS/100_NO_GO_deepks_UT/descriptor_ref.dat b/tests/09_DeePKS/100_NO_GO_deepks_UT/descriptor_ref.dat deleted file mode 100644 index 568fa37104..0000000000 --- a/tests/09_DeePKS/100_NO_GO_deepks_UT/descriptor_ref.dat +++ /dev/null @@ -1,85 +0,0 @@ -C atom_index 1 n_descriptor 117 -1.324860831 0.5600247713 0.08683995213 0.002391330993 0.0002024558499 0.001941592692 0.0009357014709 0.001285464024 -0.0003747383084 0.0003981271759 3.380417477e-05 6.431403684e-05 2.556932909e-06 0.8695818932 0.916560116 0.9348722622 -0.5671462004 0.5827725011 0.6038780645 0.2225610471 0.2375338231 0.2689329217 0.05107183751 0.0550662635 -0.06725417066 0.0274640254 0.02763567155 0.03036736102 0.009236827855 0.009784456469 0.01047491505 0.007756248553 -0.008939652399 0.009556260509 0.00269143549 0.002988436311 0.0030097818 0.002698641498 0.00275369074 0.002809538324 -0.0004430358294 0.000473965429 0.0005461798262 0.0006207625589 0.0006252586984 0.0006801435171 4.150871189e-05 4.330816918e-05 -4.667738734e-05 0.0001557875346 0.0001718841495 0.0001850356996 -1.183981499e-19 6.063545581e-07 0.04038715139 0.05269214728 -0.06114420692 1.292616484e-18 5.575625058e-07 0.04171422912 0.04594499957 0.04814794243 -7.089220973e-20 1.765877947e-07 -0.0123284183 0.01390481134 0.01663859359 -3.852003475e-20 3.615081622e-09 0.0001736888643 0.0005485798217 0.002063123394 --2.168214613e-20 4.401821355e-10 1.690595317e-05 7.715571121e-05 0.0001213088347 -5.227637072e-20 2.690574911e-09 0.0001582957773 -0.0003014056198 0.0003098393785 -2.578746165e-21 2.002926017e-11 1.091401345e-06 9.842946442e-06 2.886364082e-05 -1.467890701e-21 -3.781819455e-11 2.738852614e-07 1.682185927e-06 3.057534856e-05 -6.145488072e-21 4.629796289e-11 4.595018067e-06 2.141227898e-05 -2.536254421e-05 -8.938399573e-23 3.772623386e-12 2.778571396e-08 4.457119135e-07 3.033763681e-06 -1.039006993e-21 5.051850135e-11 -2.864461584e-06 4.258478683e-06 6.253775845e-06 1.263644019e-21 3.715492028e-11 2.13443985e-06 6.156461998e-06 6.427224849e-06 -8.615639474e-23 2.171014683e-11 1.415717567e-06 1.797491267e-06 2.149757784e-06 - -H atom_index 1 n_descriptor 117 -1.098605102 0.7495795634 0.3252209747 0.06672575817 0.005898566349 0.000519189802 0.0002552736779 0.0003234603839 -0.0002335484133 0.0004497605392 0.0001012210655 8.786165673e-05 3.539866253e-05 0.5905397681 0.598461126 0.8795152914 -0.1044141671 0.1114081517 0.1266379876 0.009515278265 0.009902643111 0.06160116406 4.612177997e-05 9.115920963e-05 -0.05014362463 0.0002442240299 0.0002958040607 0.004301186338 0.0003868073526 0.0004226864861 0.0005105677415 1.449869113e-05 -1.580735669e-05 0.001406025591 0.0001296467764 0.0001356599856 0.0001724887798 0.0001272755945 0.0001385483305 0.0004430266012 -4.65141336e-05 5.300624993e-05 0.0001647060554 2.272102161e-05 5.384463551e-05 5.551241557e-05 4.849594913e-05 4.997326859e-05 -0.0001351349529 3.923290381e-05 4.204567163e-05 6.184414284e-05 -7.325504269e-14 4.743830918e-08 0.3119131633 0.4891762159 -0.5011445533 -4.583638385e-15 5.374932893e-08 0.08730883866 0.1769972762 0.186367201 -2.371984657e-16 1.693664909e-06 -0.004676598456 0.03183582515 0.03379273604 -2.400925284e-15 1.919260555e-07 0.001195586854 0.001365496543 0.01930914966 --6.043462235e-17 6.483234972e-08 0.000982477601 0.001206386856 0.00839954464 -1.255767316e-18 4.504838611e-08 0.0001187273216 -0.0001537274649 0.003235584061 -1.067876998e-16 9.335912398e-08 3.936269894e-06 3.957751825e-06 0.0001799379967 -4.812116629e-17 -1.130748427e-10 6.236657691e-05 0.0002721719788 0.0002786798993 -3.910423899e-18 1.098368929e-09 6.058274681e-05 7.539783521e-05 -0.0004622823936 -1.412067608e-18 1.508439812e-09 1.417642678e-05 2.631797473e-05 3.28595603e-05 -1.314050125e-17 1.6384074e-11 -1.969568504e-05 5.901670367e-05 5.913736007e-05 -6.071600775e-18 2.700911728e-11 3.929750348e-05 4.006934305e-05 5.969216787e-05 --3.278345683e-18 2.297319961e-12 8.799274201e-06 3.001252069e-05 3.388745239e-05 - -H atom_index 2 n_descriptor 117 -1.066059296 0.7453159715 0.2272757978 0.02268097303 0.00210041428 0.0006983231607 0.0009453295944 0.001533508085 -0.0004715005968 0.0002363166266 7.650629389e-05 7.034243271e-05 3.474045631e-05 0.4707547845 0.4852871597 0.8459050647 -0.0425861505 0.04975191971 0.1333461159 0.0009068345858 0.0009986348456 0.08651615735 0.0009734263907 0.001277773457 -0.02389125178 9.440348353e-05 0.0001230076263 0.002068445798 0.0002898134263 0.000405323856 0.0009215389789 0.0001136309834 -0.0001336591021 0.001354683766 5.971564529e-05 6.357551643e-05 0.0003786453155 4.784147073e-05 0.0001139331031 0.0001214582535 -7.640800882e-05 9.309400337e-05 0.0002991784943 4.485703977e-05 5.470324742e-05 0.0001456595214 4.57071795e-05 5.133796737e-05 -6.113873751e-05 4.230789719e-05 4.610390344e-05 0.0001052539477 -9.942399523e-15 1.635602839e-07 0.4166274084 0.5201712957 -0.5458105194 -2.881672179e-17 8.251041194e-07 0.05825466592 0.1171892841 0.1341075864 -4.887469832e-16 2.717085945e-06 -0.01015981041 0.01176405702 0.02713831111 -2.638235092e-17 1.345076142e-07 0.0002893168385 0.0005239157678 0.03049069728 --5.221577314e-17 1.410609052e-07 9.404937335e-05 0.0001948845312 0.001713559167 -7.268488418e-18 2.881045976e-10 9.810194935e-05 -0.0004344160694 0.0006252264378 -3.39040841e-19 4.644683891e-10 4.306033514e-05 4.674548199e-05 0.001581342823 -7.409489793e-19 -3.055740839e-09 6.97100551e-05 7.978386841e-05 0.0001000042475 -3.283402357e-18 5.219274745e-09 2.136057469e-05 0.0001516153737 -0.0001798260934 -1.376225085e-18 6.24846001e-09 6.160379901e-05 8.814700702e-05 0.0002389709743 -7.25718242e-19 1.921027202e-11 -2.698746144e-05 4.690575194e-05 5.34539035e-05 -1.023580241e-18 3.513446915e-10 3.104686508e-05 5.335830712e-05 5.651805483e-05 --8.762999951e-19 1.312018938e-09 4.196691081e-05 5.130099515e-05 6.00940637e-05 - -H atom_index 3 n_descriptor 117 -1.072875794 0.7492115734 0.2520946 0.03085946079 0.002353586074 0.0004022672543 0.0005672046673 0.001282863354 -0.000496264943 0.0003186440715 7.841854164e-05 5.784777788e-05 3.522718558e-05 0.495726934 0.513259289 0.8554494483 -0.05270001399 0.06314503126 0.1284387793 0.002010572212 0.002245774641 0.08459686849 0.0006781104219 0.001043545509 -0.0321046318 7.477142908e-05 0.0001198309287 0.0008740942697 0.000314370922 0.0004766160339 0.0006031258316 8.621238219e-05 -0.0001035671389 0.001839325965 6.135074924e-05 6.792331266e-05 0.0002019288118 3.748894875e-05 0.0001227724732 0.0001358936561 -6.614301922e-05 8.667688695e-05 0.0003637961651 4.325828215e-05 5.320922396e-05 9.256091574e-05 4.717813107e-05 5.26975738e-05 -6.512425766e-05 4.036925952e-05 4.582077217e-05 0.0001115153413 -4.205279615e-14 2.318992809e-07 0.3946701482 0.5114627326 -0.5430379672 -1.530603065e-15 1.321771425e-06 0.06358728311 0.1289176481 0.1518655472 -2.813829039e-15 5.329534275e-06 -0.01423222587 0.01686477908 0.01947627673 -2.237125186e-15 1.789596519e-06 7.945394706e-05 0.0002056196701 0.03075041389 --7.171536746e-17 3.570102327e-08 0.000128020796 0.0003106019487 0.00349602538 -4.14699737e-17 5.72335645e-07 0.0001428120485 -0.0004176966772 0.0006499234709 -1.095915408e-19 3.240749442e-10 1.447820741e-05 2.195383392e-05 0.001351212072 -1.065894228e-17 -1.654236155e-09 9.240769839e-05 0.000111777506 0.0001497317319 -2.119091765e-17 1.747308723e-08 9.276902073e-05 0.0001425894753 -0.0001793036357 -5.935703804e-18 4.431695181e-09 4.29546023e-05 7.150592423e-05 0.0001874481269 -4.41374928e-18 1.117382431e-09 -1.218200499e-05 4.835160026e-05 5.541954064e-05 -4.95657466e-18 6.770259067e-10 4.529460622e-05 5.182849641e-05 5.54090552e-05 --4.59078958e-18 1.28291777e-09 3.529558353e-05 4.647622419e-05 5.018985314e-05 - -H atom_index 4 n_descriptor 117 -1.076905759 0.7505672105 0.2654735826 0.03602771298 0.002602551235 0.0003282954594 0.0004230428263 0.001104631382 -0.000484227278 0.0003667222204 7.970678348e-05 5.526037756e-05 3.597855097e-05 0.5093264096 0.5295797518 0.8603779172 -0.05978648191 0.07011888455 0.1267264325 0.002799184517 0.00320095235 0.08227264164 0.0005340127392 0.0008612190756 -0.03636668558 7.341019579e-05 0.0001326467689 0.0007106140273 0.0002726371094 0.0004284535045 0.000531731561 7.25178725e-05 -8.169619072e-05 0.00199688686 6.526238644e-05 7.214393049e-05 0.0001522542184 5.168144081e-05 0.0001273129985 0.0001438518239 -6.099455487e-05 8.211188965e-05 0.0003724476668 4.329148742e-05 5.2767521e-05 6.939157346e-05 4.797154716e-05 5.365169042e-05 -7.187699257e-05 3.916720294e-05 4.558041043e-05 0.0001095943866 -5.333407762e-14 4.884262051e-07 0.381812448 0.5064834489 -0.5400106478 -5.167787288e-15 9.055336292e-07 0.0673416006 0.1362313965 0.1599758942 -2.88206e-15 6.863623229e-06 -0.0154092469 0.01667488876 0.02016716968 -8.95122582e-15 2.61519226e-06 0.0001008043504 0.000122793475 0.02994082585 --2.320235995e-18 4.284069415e-09 0.0001755709327 0.0004102819955 0.004612884769 -3.990181075e-17 5.16398016e-07 0.0003206919486 -0.0004590677531 0.0006049351942 -5.061440383e-18 1.603035762e-09 5.661183523e-06 1.284970954e-05 0.001120873834 -1.306564849e-17 -2.826054946e-09 0.0001133291171 0.0001310638632 0.0001793411122 -2.139171125e-17 2.417480231e-08 0.0001201588268 0.0001716169249 -0.0001768421225 -5.145551842e-18 3.09719065e-09 3.627318582e-05 6.258724207e-05 0.0001430005699 -5.616122447e-18 1.758833697e-09 -8.498437259e-06 5.075844714e-05 5.56219579e-05 -5.638988892e-18 1.008359145e-09 5.013459407e-05 5.306528676e-05 5.506585846e-05 --4.655884534e-18 1.326652709e-09 3.17974234e-05 4.146664705e-05 4.554097626e-05 - diff --git a/tests/09_DeePKS/100_NO_GO_deepks_UT/dphialpha_x_ref.dat b/tests/09_DeePKS/100_NO_GO_deepks_UT/dphialpha_x_ref.dat deleted file mode 100644 index 11af4570b5..0000000000 --- a/tests/09_DeePKS/100_NO_GO_deepks_UT/dphialpha_x_ref.dat +++ /dev/null @@ -1,870 +0,0 @@ -iat : 0 -ad : 0 2.003222249 -iw : 6 --0.05049612269 -0.1196778774 -0.07940397858 -0.01557328695 0.02113192621 0.01571037924 -0.005022529568 -0.004957416241 -0.004733445364 -0.002375809462 0.002519307608 0.0008764020239 -0.0006617332614 0.01740517535 0.2242165536 -0.04205856012 0.04360372101 0.09708956734 --0.1053657711 0.04103742188 0.0007647111047 -0.09916446348 0.0183248609 -0.0357883053 --0.04428092496 0.00058035741 -0.01092256156 -0.0014023988 -0.006995100477 0.0002679120117 -0.01690323987 -0.005647806797 0.01086172703 0.01364758567 -0.0003954975947 0.0003715329919 -0.0009556961667 0.001941571702 0.001182691945 -0.004691691323 0.001430414057 -0.00414737546 --0.003456509595 0.0004815340735 0.0005532731213 -0.001163598147 -0.0004475305332 -0.00128306526 -0.001081430635 -0.0007611501307 0.002583600515 0.001839273543 -0.05139674818 -0.07093888351 -0.01592788191 0.1209190823 0.1714195483 -0.02660607556 -0.0482065624 0.04530343964 -0.1368081035 0.1164882606 0.003664572036 -0.01107183104 0.05091279545 0.09561114451 -0.02675441424 0.01916540714 0.01338996318 0.03621161289 0.03932220533 -0.03235604124 -0.0103149816 0.009207307563 0.01303335471 0.008234627669 -0.02224890533 0.001671590366 -0.003535668068 -0.004482235713 -0.01187144036 -0.008543729378 -0.004434578207 -0.00336242855 --0.007526274256 -0.007391261973 0.008125106496 -0.003152373447 -0.002521436681 -0.004926734474 --0.004406246702 0.006092900192 -0.001448786964 -0.001786814247 -0.0002378000919 0.002033152274 -0.004317729233 0.002040783191 0.001792516815 0.002672560081 0.001817349919 -0.004331509147 -0.0006523086106 0.0003031534762 0.001724854847 0.002324376392 -0.0007325521547 0.0003814670284 -0.0006253518637 -0.0004371692711 -0.001536198937 -0.001511125193 -0.0003626171853 -0.0004475048397 --5.860668182e-05 0.0005107051812 0.001081368548 -ad : 1 1.950638213 -iw : 7 --0.04943631382 -0.1193639747 -0.08359218663 -0.02069917269 0.0184952385 0.0163465701 -0.007227997823 -0.003617072158 -0.004993635851 -0.003126815688 0.001886730247 0.0007542358207 -0.00112751067 0.01676741657 0.2282152504 0.0401149638 0.04283184637 0.1060762143 -0.1024724327 0.0417980023 0.007365529964 0.09999902741 0.02041870897 -0.03503282249 -0.0488504456 0.002603146149 -0.01334498415 0.006227859437 -0.00639250614 -0.001775114541 --0.01529365906 -0.006117988857 0.01040759375 -0.01463689415 -0.001221597812 0.001331259479 --0.002922594056 0.001420987333 0.002192449992 0.003399620638 0.001581245757 -0.004071198837 -0.003783028591 0.0008986727763 0.0001211812756 0.002150016715 -0.0003264896965 -0.001517437293 --0.0007811055627 -0.0007747368081 0.00245914261 -0.001853507896 -0.05134695765 -0.07116715987 --0.0149519678 0.1184574744 -0.1702628446 -0.02922892153 -0.05110965629 -0.04337520604 -0.1362682169 -0.1222765596 0.0007188401668 -0.01432920807 -0.05020554014 0.09788333537 --0.03428170706 0.01799027278 0.01182960218 -0.03787159098 0.04361555238 0.02830156102 -0.01111575679 0.009650005967 -0.01569971462 0.01174526925 0.02308701751 0.003240899009 -0.004897774395 0.002278886404 -0.01011295238 0.01171760967 -0.003583706203 -0.002539938415 -0.006940626664 -0.007496769369 -0.006076639007 -0.00347410616 -0.002703911172 0.005933425683 --0.005697932745 -0.006468933263 -0.002024558301 -0.002255411816 0.001221834878 0.001094184155 --0.00539592745 0.00163662558 0.001416562937 -0.002325534758 0.001756936889 0.003389035555 -0.000600770207 0.0002321048416 -0.001800681108 0.002514792957 0.0005552958786 0.0007128169875 -0.0009045436046 -6.68649822e-05 -0.001102613576 0.002164062293 -0.0001826835223 -0.0002989425778 --0.0002036701928 0.0007185540562 -0.0007152008563 -ad : 2 1.709269535 -iw : 4 --0.001906233814 -0.004969763301 -0.00427261119 -0.001910493969 5.248550005e-05 0.0005783916132 -0.0006351002597 0.0001767735295 -7.944349401e-05 -0.0001730405835 -8.14673288e-05 -5.411943811e-05 -7.888454267e-05 -0.001661674077 0.2631875757 -4.689242281e-06 -0.00460768555 0.196774913 --1.300288318e-05 -0.005182561547 0.09840674725 -1.462518256e-05 -0.003441748503 0.01266960686 --9.712610208e-06 -0.001518182755 -0.00357475365 -4.284309941e-06 0.0001051856997 -0.01356243435 -2.968339204e-07 0.0006379681254 -0.002825554445 1.800345296e-06 0.0005191103337 -0.002741128819 -1.464928748e-06 0.0002504356879 0.003856969179 7.067292153e-07 -8.290848723e-05 -0.000846998014 --2.33967653e-07 -0.0001844134227 0.002517468495 -5.204144609e-07 -6.634842024e-05 -0.001857434491 --1.872351635e-07 -3.629256546e-05 0.001134125042 -1.024175768e-07 -0.003351525604 0.2151861897 --4.49538975e-06 0.00421204458 0.000607255173 -0.005490558151 0.228852132 -1.419401187e-05 -0.0044801933 0.0006458204461 -0.005507173323 0.1530063896 -1.846365612e-05 0.002995997831 -0.0004317838507 -0.004248829922 0.06186365026 -1.73474183e-05 0.001212028625 0.0001745791479 --0.002406461935 0.01785265297 -1.077432678e-05 0.0003501676716 5.038016559e-05 -0.0006913972806 --0.01218151334 -4.051511789e-06 -0.0002381420394 -3.437621624e-05 0.0001128679253 -0.007194030538 -1.54299885e-07 -0.0001408159008 -2.030154568e-05 0.0006633038063 -0.008097130948 2.794368688e-06 --0.0001586747578 -2.285009397e-05 0.0003691593514 0.001001958108 1.85938681e-06 1.948200329e-05 -2.827524597e-06 0.0001296808771 0.0002008887841 6.448349337e-07 3.887219398e-06 5.669079114e-07 --4.291839606e-05 0.003072071398 -4.00894292e-08 6.013091529e-05 8.669381856e-06 -0.0001310295011 --0.001160690834 -7.044289349e-07 -2.266882234e-05 -3.275468161e-06 -9.398371615e-05 0.00169904143 --3.654651632e-07 3.327982099e-05 4.794692909e-06 -ad : 3 2.100474535 -iw : 5 -0.1083959897 0.2477616301 0.1470294523 0.01325828564 -0.05127318523 -0.0279669025 --0.001909961502 0.01397221654 0.007171530368 0.001694688779 -0.006536474784 -0.001423910185 -0.0002774902093 -0.03561091284 0.1329346535 3.087036588e-05 -0.08591907134 -0.1212308148 -7.448147088e-05 -0.07517004875 -0.1867984341 6.516336489e-05 -0.02741770227 -0.1001890009 -2.376784061e-05 0.005421455664 0.006845700548 -4.699748098e-06 0.01438792524 0.03721274253 --1.247259564e-05 0.008311901229 0.03028645831 -7.205415744e-06 -0.001958938613 -0.006271806089 -1.698163481e-06 -0.004755791141 -0.01148004899 4.122697253e-06 -0.001755772211 -0.007970661122 -1.522042717e-06 0.0006020371753 0.003024751862 -5.218936104e-07 0.0009759757456 0.001259493196 --8.460532446e-07 0.0009697837113 0.004732877444 -8.406854977e-07 0.1041827662 -0.03492406155 --1.113842299e-05 -0.167600981 3.027494866e-05 0.03933736813 0.04323560982 -3.050407748e-05 --0.03294597058 -3.748005842e-05 -0.02363439111 0.08268094041 -3.231802948e-05 0.07821682225 --7.167440196e-05 -0.04580690964 0.06945606413 -2.031903295e-05 0.1027791625 -6.021002947e-05 --0.01778126602 0.02073184666 -4.983835762e-06 0.03654722054 -1.797201028e-05 0.003196006044 --0.01233826489 4.909814057e-06 -0.01119942058 1.069578735e-05 0.01215999139 -0.01726384826 -4.846684609e-06 -0.02665267489 1.496567399e-05 0.0044804803 -0.006063537162 1.647141803e-06 --0.009660499986 5.256355306e-06 0.0004690547704 0.001651547571 -8.932223734e-07 0.0002179608407 --1.431692526e-06 -0.005232180589 0.006559584591 -1.68053364e-06 0.01100100264 -5.686368591e-06 --0.001041362651 0.002191175007 -7.472643082e-07 0.002665708853 -1.899484421e-06 0.0004498783732 --0.001776717613 7.097394704e-07 -0.001597940799 1.540199854e-06 0.001441977313 -0.001408879786 -2.772112815e-07 -0.002817358415 1.221328829e-06 -ad : 4 0 -iw : 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0.3323408577 0 0 0.3381829911 -0 0 0.1941332719 0 0 0.04638680834 -0 0 -0.04028417335 0 0 -0.08462892004 -0 0 -0.08958563666 0 0 -0.08083690751 -0 0 -0.05951877109 0 0 -0.04132486996 -0 0 -0.02364071707 0 0 -0.01300175494 -0 0 -0.003849155413 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 -iw : 1 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0.2775418879 -0 0 0 0 0.3405120677 0 -0 0 0 0.3362776137 0 0 -0 0 0.2791435086 0 0 0 -0 0.2353955451 0 0 0 0 -0.1851183885 0 0 0 0 0.1526566016 -0 0 0 0 0.1173755327 0 -0 0 0 0.09486198903 0 0 -0 0 0.06752677913 0 0 0 -0 0.05189252662 0 0 0 0 -0.03329269882 0 0 0 0 0.02312125451 -0 0 0 -iw : 2 --0.1246276028 -0.36586141 -0.4376268693 -0.4231135336 -0.3565090714 -0.2974409008 --0.2377487477 -0.193381104 -0.1514250008 -0.1200356898 -0.08743554786 -0.06534687476 --0.04344417142 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 -0.1602388837 0 -0 0.2775418879 0 -0.196594734 0 0 -0.3405120677 0 -0.1941499708 0 0 0.3362776137 -0 -0.1611635798 0 0 0.2791435086 0 --0.1359056813 0 0 0.2353955451 0 -0.1068781514 -0 0 0.1851183885 0 -0.08813633004 0 -0 0.1526566016 0 -0.06776679537 0 0 -0.1173755327 0 -0.0547685949 0 0 0.09486198903 -0 -0.03898660411 0 0 0.06752677913 0 --0.02996016421 0 0 0.05189252662 0 -0.01922154863 -0 0 0.03329269882 0 -0.01334906251 0 -0 0.02312125451 0 -iw : 3 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0.2775418879 0 0 0 -0 0.3405120677 0 0 0 0 -0.3362776137 0 0 0 0 0.2791435086 -0 0 0 0 0.2353955451 0 -0 0 0 0.1851183885 0 0 -0 0 0.1526566016 0 0 0 -0 0.1173755327 0 0 0 0 -0.09486198903 0 0 0 0 0.06752677913 -0 0 0 0 0.05189252662 0 -0 0 0 0.03329269882 0 0 -0 0 0.02312125451 -iat : 1 -ad : 0 3.03052076 -iw : 6 --0.04085782418 -0.05645149359 0.01142653251 0.01755186815 -0.00122510922 -0.008268824929 -0.002273562711 0.002071756675 0.0001659589024 -0.002126625134 0.001097888488 2.232716697e-06 -0.0002569301859 0.04700579041 0.1656850969 -0.03226389442 0.06874722846 0.002690854844 --0.04718681043 0.008493309252 -0.02070468192 -0.005829648446 -0.01964880866 -0.005187033397 -0.01348657437 -0.006043404255 0.01197139803 0.004148079527 0.00804303874 -0.005003358419 --0.005520591198 0.002135257927 0.0008835265928 -0.001465601061 -0.002718702046 -0.002486186968 -0.001866066181 -0.001777601692 0.003912336977 0.001220112518 0.00175713701 -0.002843938444 --0.001206065944 0.0003828348371 0.001747325854 -0.0002627706642 -0.0002297879902 -0.001920773131 -0.000157722174 -0.0006507616215 0.002164884151 0.0004466705924 -0.06579338749 -0.1745014763 -0.04066494441 0.08262373017 0.119774546 -0.05467377531 -0.03218999124 0.068211178 -0.04213866197 0.02209460728 -0.01180759283 0.01994216113 0.02293603287 0.002778336398 --0.01368792601 0.01338139007 0.01322965815 -0.01506213042 -0.01157135 -0.009080589652 -0.00459342813 -0.01263427086 -0.01041031429 6.545980722e-05 0.008671926961 -0.003247528896 -0.002199576161 0.005305997018 0.001536429049 -0.001509747893 -0.003235988413 -0.0004013555982 -0.004496033557 0.002140545479 0.0002754829678 0.002214400809 0.003563173719 -0.002073391676 --0.002237834017 -0.002445695725 0.0007575788033 -0.004168125862 -0.00235284678 0.0005007856317 -0.00286092355 -0.0003268325156 0.002528824359 0.00123795717 -0.0003877987087 -0.001735737692 --0.001027208253 -0.001735372119 0.0009366283474 0.001057472034 0.00119112693 0.0008160355735 -0.001983687579 -0.0005594815915 -0.0009823149696 -0.001361566013 -8.175768775e-05 -0.00212931658 --0.0005329256838 0.0005522463192 0.001461523032 -ad : 1 2.994710688 -iw : 7 --0.03998728222 -0.05671805793 0.009467802864 0.01776361079 -0.0001588082202 -0.00827995989 -0.001583722348 0.002122808159 0.0005240081833 -0.002093070624 0.0008471530753 3.451584892e-06 -0.0003561500439 0.04588064815 0.1689161012 0.03096893175 0.06883063931 0.006836783236 -0.0464599228 0.01076169996 -0.02094971704 0.007264028845 -0.0191659024 -0.006542397759 --0.01293677285 -0.007199930086 0.01199216583 -0.004859873442 0.007630815156 -0.004376387037 -0.005150716115 0.002837850666 0.0007777563923 0.001915517917 -0.002511118416 -0.002721189425 --0.00169497725 -0.002155705513 0.003931034038 -0.001455077458 0.001615763861 -0.002689637235 -0.001090622796 0.000637443377 0.001685343428 0.0004302672528 -0.0002029917558 -0.001943838133 --0.0001370171976 -0.0007777744641 0.002167863571 -0.0005249891897 -0.06495534276 -0.1776348296 --0.03892980974 0.08110841225 -0.1199015519 -0.05585812597 -0.03794384219 -0.06692177829 -0.04277558052 -0.02561167522 -0.01366258023 0.01888197294 -0.0245723456 0.003846276074 -0.0127451236 0.01290975821 0.01503457952 0.01364176539 -0.01135804556 0.01014817545 -0.005368507623 -0.01206255479 0.01100786323 -0.000420502453 -0.008142091518 -0.002843555198 -0.001302115677 -0.004348730678 0.001417858169 0.0008789137285 -0.003546729725 -0.0006096984277 --0.004773420242 0.002293272951 -0.0004115397179 0.001915174066 0.003984638616 0.001512766933 --0.002097106996 0.002689587143 0.0009083134186 -0.004005626442 0.002434765654 0.0003904341669 --0.002703753694 -0.0001677911337 0.002246611172 -0.0008886505452 -0.0004260887352 0.001516437777 --0.001061789193 -0.001787002504 -0.0009616509622 0.00106348527 -0.001206206992 0.000723756088 -0.002096732176 0.0003995546752 -0.0009313347991 0.001415271106 -9.370131008e-05 -0.002043230395 -0.0004643792117 0.0005368250185 -0.001379157994 -ad : 2 1.709269535 -iw : 0 -0.002003027398 0.005350290244 0.003502338518 0.0008734329637 -4.246828655e-05 0.0003621815261 -0.0004593249833 0.0002454972783 -0.0001202086191 -0.0001544611445 -0.0001165580223 1.001231146e-05 --1.880862745e-06 -0.001842020004 0.282131922 -5.198178274e-06 -0.004540294558 0.1983836263 --1.281270588e-05 -0.003378162744 0.06316094512 -9.533171271e-06 -0.0008110155381 0.001616157415 --2.28868489e-06 0.000398255837 0.00421967824 1.123877501e-06 -5.491664527e-05 0.005268247269 --1.549747081e-07 -0.0006073275437 0.006850623153 -1.713877611e-06 -0.0006421634447 -0.0009835693136 --1.812184482e-06 -0.0002213341819 -0.0004000151007 -6.246047999e-07 6.14712455e-05 -0.002587230875 -1.734717822e-07 0.0001389011597 0.000694000358 3.919789086e-07 4.888293028e-05 -0.0009156962771 -1.379475715e-07 1.549896245e-05 0.001002373421 4.373805372e-08 0.003667511107 -0.2333849762 -5.034592563e-06 -0.004568277808 -0.0006586121271 0.004677962848 -0.1963686141 1.20167614e-05 --0.003844258579 -0.0005541519969 0.002671003874 -0.07437432959 8.94581468e-06 -0.00145631187 --0.0002098842702 -2.076732255e-05 0.002442141515 3.337452399e-08 4.779651852e-05 6.891720469e-06 --0.001108291047 0.004338389286 -5.176559489e-06 8.527181293e-05 1.224292944e-05 -0.0006661123421 --0.00494113617 -3.528109063e-06 -9.646597375e-05 -1.394388043e-05 0.0002566971368 -0.01286769022 -5.438651629e-07 -0.0002518906335 -3.631260659e-05 0.0006297028207 -0.005090763729 2.796184383e-06 --9.98327414e-05 -1.436612923e-05 0.0004544273969 -0.001968542777 2.112045011e-06 -3.867565037e-05 --5.555225389e-06 0.0001140327199 0.002633832627 7.027185287e-07 5.150201831e-05 7.432672562e-06 --4.194388042e-05 1.253326616e-06 -2.04907542e-07 3.872784654e-08 3.536886228e-09 -5.88203823e-05 -0.001233809765 -2.193160529e-07 2.416394516e-05 3.4818097e-06 -3.285770791e-06 -0.0009079376911 --6.619658221e-08 -1.776602998e-05 -2.562199091e-06 -iw : 1 -0.0004131054314 0.003551264227 0.007214406179 0.007448296404 0.004646929856 0.00117686772 --0.001027824559 -0.001566671927 -0.000951538314 -0.0001164657075 0.0003604474975 0.0003517313279 -0.0001455475826 0.001393048037 0.09523430657 -1.32946208e-06 0.001132143559 0.2250705722 --9.240087698e-06 -0.002940977645 0.2216532401 -2.055001158e-05 -0.006404206026 0.142080475 --2.593020879e-05 -0.006802675328 0.05112428017 -2.202935694e-05 -0.004384413181 -0.0006109130191 --1.234379409e-05 -0.001275763425 -0.02055352537 -2.465903772e-06 0.0009584069599 -0.01492011767 -3.530064567e-06 0.001534195923 -0.006154101842 4.671198765e-06 0.001002651639 0.00239634704 -2.698154886e-06 0.0001496699335 0.002870682821 2.639114976e-07 -0.0002805285689 0.002582414137 --9.346440915e-07 -0.0003125710044 -0.0001949152381 -8.716418671e-07 -0.0006795341881 0.1422627538 --3.321159582e-06 -0.001717626111 -0.0002476351413 -0.0005170279163 -0.02503029229 -2.525196807e-06 --0.004438636724 -0.000639870617 0.001863859626 -0.1506999547 9.11505203e-06 -0.00545847579 --0.0007867677678 0.004779101704 -0.1870807627 2.336658769e-05 -0.004546973078 -0.0006552289911 -0.006238931753 -0.1226322207 3.050236313e-05 -0.002656972547 -0.0003827073456 0.005452314999 --0.05670376788 2.665580995e-05 -0.0009527509764 -0.0001370761334 0.003125482975 0.002860397904 -1.527979922e-05 0.0001213505329 1.764578324e-05 0.0006252122445 0.0175010978 3.05629356e-06 -0.0004490444709 6.476190649e-05 -0.0009147641443 0.02010129798 -4.472293547e-06 0.0003577496977 -5.152621547e-05 -0.001186591544 0.004325442231 -5.801067227e-06 0.00010933164 1.57025859e-05 --0.0006749671976 0.0007820060809 -3.299761671e-06 -3.155588304e-05 -4.581863375e-06 -8.818752911e-05 --0.005265579955 -4.310902603e-07 -7.522886718e-05 -1.0848818e-05 0.0001902342456 -0.0002211871258 -9.300344461e-07 -3.323513871e-05 -4.781671829e-06 -iw : 2 --0.1137917283 -0.263287392 -0.1905369997 -0.08075047369 0.002017475376 0.0208773693 -0.02045503814 0.004094841907 -0.0006445638297 -0.005660047764 -0.001049503668 -0.001478969768 -0.001767038467 0.09523430657 0.005592283229 0.0002687511006 0.2250705722 0.01321809442 -0.0006351488887 0.2216532401 0.0130205076 0.0006255051815 0.142080475 0.008349652648 -0.0004009509324 0.05112428017 0.003007871347 0.0001442726582 -0.0006109130191 -3.252016327e-05 --1.723995818e-06 -0.02055352537 -0.001206182102 -5.80020243e-05 -0.01492011767 -0.0008770297452 --4.210455443e-05 -0.006154101842 -0.0003626207828 -1.736686813e-05 0.00239634704 0.000139975586 -6.762488516e-06 0.002870682821 0.0001684876738 8.101063528e-06 0.002582414137 0.000151886264 -7.287569643e-06 -0.0001949152381 -1.120870901e-05 -5.500505715e-07 -0.1834330364 -0.005152975469 --0.0002476351413 0.2299643563 -1.454169068e-05 -0.2472941324 -0.01331654673 -0.000639870617 -0.2015840494 -3.757927914e-05 -0.2348284266 -0.01637698792 -0.0007867677678 0.1279389361 --4.621584055e-05 -0.160016704 -0.01364322295 -0.0006552289911 0.04497277816 -3.850115904e-05 --0.08574841449 -0.007973335902 -0.0003827073456 0.01290599041 -2.250074449e-05 -0.02333436513 --0.002860120423 -0.0001370761334 -0.008157435773 -8.071256454e-06 0.00556675328 0.0003631005367 -1.764578324e-05 -0.003389011454 1.024669286e-06 0.0163872365 0.001347018491 6.476190649e-05 --0.005434760143 3.80128459e-06 0.009471808976 0.001073596566 5.152621547e-05 0.001852965995 -3.029688239e-06 0.003925993192 0.0003283825746 1.57025859e-05 -0.001235715135 9.266952375e-07 --0.0023257528 -9.446380173e-05 -4.581863375e-06 0.002404711525 -2.665767369e-07 -0.001397732452 --0.0002256725079 -1.0848818e-05 -0.001423399449 -6.368475506e-07 -0.001828286057 -9.977011037e-05 --4.781671829e-06 0.001472270538 -2.815511336e-07 -iw : 3 -1.165783039e-06 1.002166345e-05 2.035904571e-05 2.101908365e-05 1.311363056e-05 3.321119316e-06 --2.900519692e-06 -4.421146326e-06 -2.685239998e-06 -3.28666089e-07 1.017182412e-06 9.925853918e-07 -4.10735106e-07 -1.32946208e-06 0.0002687511006 0.001864150819 -9.240087698e-06 0.0006351488887 -0.004406423496 -2.055001158e-05 0.0006255051815 0.00434104097 -2.593020879e-05 0.0004009509324 -0.002784317414 -2.202935694e-05 0.0001442726582 0.0010035581 -1.234379409e-05 -1.723995818e-06 --1.031645476e-05 -2.465903772e-06 -5.80020243e-05 -0.0004019557828 3.530064567e-06 -4.210455443e-05 --0.0002924923785 4.671198765e-06 -1.736686813e-05 -0.0001210710933 2.698154886e-06 6.762488516e-06 -4.654443512e-05 2.639114976e-07 8.101063528e-06 5.615132738e-05 -9.346440915e-07 7.287569643e-06 -5.066811417e-05 -8.716418671e-07 -5.500505715e-07 -3.699533573e-06 6.478341931e-06 -0.0002476351413 --0.001717723247 2.862722084e-10 0.2300137364 2.023956699e-05 -0.000639870617 -0.004439273282 -1.876023102e-09 0.20171166 3.194796105e-05 -0.0007867677678 -0.005460036337 4.599160095e-09 -0.1280958751 3.572328009e-05 -0.0006552289911 -0.004549276793 6.789405672e-09 0.04510352062 -3.060547323e-05 -0.0003827073456 -0.002659390807 7.127005054e-09 0.0129823995 2.005285876e-05 --0.0001370761334 -0.0009546184704 5.503799726e-09 -0.008130026149 8.231821347e-06 1.764578324e-05 -0.000120399471 2.802874232e-09 -0.003392490156 -4.299253042e-07 6.476190649e-05 0.0004489295493 -3.385590462e-10 -0.00544766828 -4.331862543e-06 5.152621547e-05 0.0003580971701 -1.02423052e-09 -0.001842677603 -3.884935164e-06 1.57025859e-05 0.0001097192946 -1.142624599e-09 -0.001238862313 --1.751557028e-06 -4.581863375e-06 -3.135203565e-05 -6.00830957e-10 0.002405616572 1.187700582e-07 --1.0848818e-05 -7.521477352e-05 -4.151504603e-11 -0.001421236882 6.996193739e-07 -4.781671829e-06 --3.329983295e-05 1.907220129e-10 0.001473226677 -ad : 3 3.113220902 -iw : 5 -0.09210255759 0.1194240892 -0.03420934809 -0.03576349534 0.007778280569 0.01700191485 --0.008169599296 -0.003634947939 0.001247354388 0.004355623889 -0.003455578806 0.0002668374287 --0.0002332841824 -0.10406378 0.08796830669 -0.0001877756196 -0.1431458584 -0.1029421729 --0.000258296424 -0.006637814684 -0.02394864911 -1.197746002e-05 0.04251126538 0.02642871901 -7.670852618e-05 0.006742734249 0.01607351795 1.216677984e-05 -0.01802965459 -0.01850525756 --3.253321722e-05 -0.0007300246887 0.0008998706941 -1.317277137e-06 0.006059821715 0.002049460082 -1.09345132e-05 0.001629158803 0.004805266983 2.939700091e-06 -0.003951628223 -0.005806537739 --7.130429413e-06 0.0006531078647 0.002445573106 1.17848625e-06 0.0003669809289 -0.001665096887 -6.621907379e-07 0.0006157635983 0.002508983347 1.111101203e-06 0.1397588484 -0.07623735545 -0.0002324076561 -0.1132713399 -0.0001375648343 0.1022989397 0.118415794 0.0003675266402 -0.02649276582 0.0002136727983 0.01414542313 0.05711370945 9.698303242e-05 0.02924647165 -0.0001030575881 -0.02793918576 -0.0260746437 -9.327590208e-05 -0.003300517984 -4.704982247e-05 --0.004748464313 -0.02968877426 -4.447244525e-05 -0.0164216197 -5.357126157e-05 0.007394119776 -0.01829563835 3.759742841e-05 0.008029141858 3.301316583e-05 0.004687163931 0.006442563779 -1.799178102e-05 0.001852465813 1.162514378e-05 -0.005370493727 -0.003578838634 -1.630552093e-05 -0.0002656052237 -6.457757363e-06 -0.0003750975696 -0.007875789528 -9.779853743e-06 -0.004770212774 --1.421129674e-05 0.0009199559615 0.006730888021 9.725376444e-06 0.003796299562 1.214540417e-05 -0.00174181583 -0.0003981540803 3.521974999e-06 -0.001065068866 -7.184404516e-07 -0.001873686816 -0.0002345345741 -4.008177749e-06 0.00102402723 4.232008e-07 0.0003388392022 -0.003356787599 --3.030754058e-06 -0.002266501444 -6.057082215e-06 -ad : 4 0 -iw : 4 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0.3077382577 0 0 0.340113108 -0 0 0.2965292449 0 0 0.2106036639 -0 0 0.1684140928 0 0 0.1131428086 -0 0 0.1019205506 0 0 0.06113809996 -0 0 0.06480538679 0 0 0.02956059757 -0 0 0.04222106929 0 0 0.008651775987 -0 0 0.0303465245 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 -iat : 2 -ad : 0 3.347258395 -iw : 6 --0.125250151 -0.1322633867 0.07199553683 0.02855363232 -0.02321695176 -0.01215473054 -0.01727590414 -0.00251908848 -0.003222937441 -0.002039670329 0.004946188747 -0.002885189043 -0.00148552754 0.001757933547 -0.01025971856 -0.09697804215 0.001988014882 -0.1940534019 --0.1096706933 -0.0003672083141 0.01893833768 0.02025738881 -0.0005609271349 0.05057919519 -0.03094406806 0.0001485764814 -0.004492485678 -0.008196360037 0.0002184178553 -0.02680086774 --0.01204922451 -0.000141959579 0.01605929671 0.007831332452 -3.352717538e-05 0.0007885103192 -0.00184955787 5.222299172e-05 -0.001871579675 -0.002880929999 2.692908247e-05 -0.005494941673 --0.001485567926 -5.773072489e-05 0.007887293175 0.003184769231 1.933846456e-05 -0.003922152091 --0.001066824417 7.755267513e-06 0.001194925414 -0.0004278265586 -0.02121018741 0.0005254601307 -0.001490706086 0.1189462903 -0.02898749773 0.1085316417 0.003104396981 0.001955630667 --0.08013357963 -0.1712569521 0.01761027028 0.0003724166172 0.0001001108743 -0.02498098791 --0.0205447097 -0.03104254817 -0.0009027902427 -0.0005839400695 0.02156425774 0.04980326495 --0.008828151059 -0.0001690304844 -2.096411745e-05 0.01413468112 0.009324724171 0.01897168929 -0.0004854299799 0.00024717802 -0.01922860459 -0.02677919716 -0.003568566036 -8.519112045e-05 --3.637311554e-05 0.004175040214 0.00469964754 -0.003858788619 -0.0001219657241 -8.870531914e-05 -0.001791714331 0.006728352813 -0.00132241624 -1.271113087e-05 1.771827381e-05 0.00326761602 -0.0007012213786 0.004841648653 0.0001113502475 4.234706807e-05 -0.006050633622 -0.006142740155 --0.003031065945 -6.779091817e-05 -2.333673093e-05 0.00396299074 0.003739749167 0.001474630709 -2.695377682e-05 1.383279108e-06 -0.002477850504 -0.001486930213 -0.001549132638 -2.818104283e-05 --1.230657623e-06 0.002615308371 0.001554633486 -ad : 1 3.303653192 -iw : 7 --0.1254741982 -0.1381147446 0.06816681006 0.03282017257 -0.02173153757 -0.01455759627 -0.01687267716 -0.0009443445761 -0.00352962835 -0.002832276014 0.00531352736 -0.002400737997 -0.00105025918 0.001058404368 -0.006670372595 0.094871103 0.001244917912 -0.197693091 -0.1115894255 -0.0001742847026 0.010679363 -0.01562217851 -0.0003614416658 0.05323921877 --0.03239817458 6.507128261e-05 -0.000276742574 0.005832727584 0.0001462668388 -0.02872300844 -0.01311077009 -7.246817554e-05 0.01368296012 -0.006495755263 -3.120021059e-05 0.002486914378 --0.002796661164 2.631656171e-05 -0.0009421581137 0.002358910556 2.226030981e-05 -0.00641005737 -0.001995324479 -3.273248094e-05 0.007444038088 -0.002934007704 8.514069694e-06 -0.003380599382 -0.0007631669021 5.089672198e-06 0.00114359027 0.0004562177082 -0.02444628828 0.0002868575355 --0.0008764727263 0.1208959189 0.02571275366 0.107854319 0.001901309213 -0.00119354734 --0.0798377014 0.170425697 0.02274323861 0.0003119945356 -0.0001095728959 -0.02957199433 -0.02796593307 -0.030489797 -0.000547284831 0.0003530616333 0.02116679412 -0.0490564071 --0.01159776378 -0.0001484992301 3.893749438e-05 0.01659815041 -0.01331087265 0.01896060186 -0.0002980401448 -0.0001519680464 -0.0192206178 0.0267151177 -0.001800744976 -2.314530679e-05 -6.186853146e-06 0.002564486225 -0.002074652042 -0.004402260324 -8.425148316e-05 5.933690732e-05 -0.002306879237 -0.00755196348 -0.002189245503 -2.173087025e-05 -2.717701592e-06 0.004035457942 --0.00194786765 0.005323138827 7.612927247e-05 -3.060876872e-05 -0.006476641686 0.00682392124 --0.002494010756 -3.265112186e-05 9.519710406e-06 0.003466551065 -0.002926715004 0.0009717582361 -8.108056699e-06 3.663615608e-06 -0.002011485507 0.0007267735331 -0.001768669293 -2.073969715e-05 -2.891456218e-06 0.00280427885 -0.001859022887 -ad : 2 2.100474535 -iw : 0 --0.114106211 -0.2662472869 -0.120739825 -0.007064026188 0.001313341311 -0.01771783593 -0.001522075293 0.01240165908 0.01148565895 -0.00209120645 -0.002802712662 -0.002771906088 -0.001203312594 -0.03923940207 0.1385415731 3.401582835e-05 -0.08506375815 -0.1163289744 -7.374001751e-05 -0.04847595871 -0.1209767294 4.20228088e-05 -0.007051874071 -0.026979494 -6.113124188e-06 -0.0009116860912 0.003205323708 7.903218691e-07 -0.01067803242 -0.03221660697 -9.256566075e-06 -0.006892586117 -0.0211666876 5.975040746e-06 0.001367285072 -0.0002654664903 --1.185271229e-06 0.0053840539 0.01728750765 -4.667325281e-06 0.001806521639 0.004705550783 --1.56603635e-06 -0.0001621922659 0.001214478625 1.406011301e-07 -0.001120883616 -0.004533724659 -9.716708886e-07 0.0001345169221 0.001439523245 -1.166099454e-07 -0.1119249245 0.03668783681 -1.235373846e-05 0.1796088506 -3.180392905e-05 -0.03457602382 -0.03622000231 2.598111444e-05 -0.02991659938 3.139837297e-05 0.01081598038 -0.03938332816 1.551026813e-05 -0.03662588603 -3.41405949e-05 0.002036493325 -0.001382210125 1.083288426e-07 -0.003652273963 1.19820945e-06 --0.01107398825 0.01117845134 -2.296069819e-06 0.02182936957 -9.690368916e-06 0.004865416323 --0.01081257956 3.759372841e-06 -0.01276381854 9.37320221e-06 0.01086987296 -0.01778847988 -5.430720676e-06 -0.02509184613 1.542046633e-05 0.007932970731 -0.008859254832 2.041675829e-06 --0.01609550835 7.679905293e-06 -0.002593143832 0.0042229392 -1.285906419e-06 0.005974829861 --3.660778895e-06 -0.002460718467 0.004444730636 -1.424132281e-06 0.005904914524 -3.853045317e-06 --0.001999585712 0.001950004916 -3.826907002e-07 0.00390484156 -1.690419043e-06 0.001015577013 --0.0009650908814 1.825718325e-07 -0.001969638945 8.366173802e-07 -0.0005502741948 0.0002216707563 -4.148830436e-08 0.0009052435254 -1.921618067e-07 -iw : 1 -0.009165946355 0.07118074161 0.1201570225 0.08520812423 0.01472733708 -0.02878889488 --0.02723131426 -0.005744322555 0.009911842029 0.009113874884 0.001619270351 -0.003480323272 --0.002387645667 -0.1003970471 -0.0220575786 -3.373160216e-06 -0.1921841965 0.004524622993 --2.123746261e-05 -0.117908969 0.08764519279 -3.986283013e-05 -0.01668262464 0.1140686333 --3.778456062e-05 0.03336887611 0.06765731348 -1.795222442e-05 0.02193577702 0.0006125437014 -2.067082427e-06 0.001228499904 -0.03164071814 1.013049876e-05 -0.01092191628 -0.02460640825 -6.654202173e-06 -0.005069646215 -0.001405614089 -7.807636289e-08 0.0003650621178 0.01063680013 --3.325428686e-06 0.003861637069 0.007953968578 -2.116827788e-06 0.0007439424368 0.0001627903108 -2.52041377e-08 -8.270232708e-06 -0.002970683463 9.383936879e-07 -0.02438988973 0.09141702319 -2.977618078e-05 -0.0281308336 5.717928937e-06 -0.06853239706 -0.09840983892 6.250300781e-05 --0.03540388297 -3.163877939e-06 -0.09117242333 -0.1413333634 5.226796614e-05 0.01658086024 --3.227068044e-05 -0.07810270995 -0.07974378717 1.934124262e-05 0.06664841882 -5.075488716e-05 --0.04146803916 0.01477891466 -6.379201365e-06 0.06971490441 -4.2075145e-05 -0.005864374814 -0.03290153423 -1.12630574e-05 0.03122302624 -1.536452485e-05 0.01318133866 0.02177297373 --4.811276739e-06 -0.008058176983 7.160148317e-06 0.01313565673 -0.008976067798 2.429805703e-06 --0.02292683632 1.369968616e-05 0.004110637842 -0.009265604105 3.403647893e-06 -0.01262503697 -6.68891182e-06 -0.003052711585 -0.007185389498 1.285215881e-06 0.001513711895 -1.502908752e-06 --0.003854534796 0.00500508524 -1.005919802e-06 0.007331650429 -4.28619918e-06 -0.001292124456 -0.001161864663 -8.311132182e-07 0.003476156791 -1.885608109e-06 0.0006597105013 0.002840262697 --3.148970075e-07 -0.0002505122618 2.910296212e-07 -iw : 2 --0.08036308957 -0.001480700788 0.2589200306 0.2516972307 0.07803291957 -0.07251419055 --0.08099895131 -0.02608295728 0.02818224115 0.02668899255 0.008052729249 -0.01110640425 --0.006303413682 -0.0220575786 -0.2762440517 1.912125995e-05 0.004524622993 -0.4194853816 --3.922302353e-06 0.08764519279 -0.05891093875 -7.597780996e-05 0.1140686333 0.2293977049 --9.88837456e-05 0.06765731348 0.2328770181 -5.865072963e-05 0.0006125437014 0.05051975615 --5.310015011e-07 -0.03164071814 -0.07123717322 2.742868597e-05 -0.02460640825 -0.08197862279 -2.133078781e-05 -0.001405614089 -0.01463155531 1.218497864e-06 0.01063680013 0.02568920139 --9.220822651e-06 0.007953968578 0.02724045162 -6.895131311e-06 0.0001627903108 0.002045452035 --1.411195629e-07 -0.002970683463 -0.006964916136 2.575224224e-06 0.02133357082 -0.0922883251 -5.717928937e-06 -0.04354681505 8.00028456e-05 0.1963601174 -0.1528120685 -3.163877939e-06 --0.3364559701 0.0001324696305 0.1669845445 -0.04787826407 -3.227068044e-05 -0.2519994792 -4.150467964e-05 0.03661908488 0.08697877319 -5.075488716e-05 -0.004877198034 -7.540010455e-05 --0.06757999675 0.1299611769 -4.2075145e-05 0.1655882833 -0.0001126606639 -0.06098082529 -0.07051904435 -1.536452485e-05 0.1233458222 -6.11315051e-05 -0.01600293985 -0.006893899182 -7.160148317e-06 0.0194582287 5.976179016e-06 0.02521454525 -0.04322595823 1.369968616e-05 --0.05947631308 3.747169166e-05 0.02019919518 -0.02682895845 6.68891182e-06 -0.04270210792 -2.325747074e-05 0.005498374742 0.0007362628614 -1.502908752e-06 -0.007789765739 -6.382510892e-07 --0.009718835766 0.01415831179 -4.28619918e-06 0.02177791454 -1.227354848e-05 -0.004563461909 -0.007231704705 -1.885608109e-06 0.01007931406 -6.269015656e-06 -0.002052162041 2.786152569e-05 -2.910296212e-07 0.003218728161 -2.415258198e-08 -iw : 3 --7.94576985e-06 -6.170511681e-05 -0.0001041616446 -7.38651655e-05 -1.276682477e-05 2.49564992e-05 -2.360626469e-05 4.979634747e-06 -8.592371425e-06 -7.900630165e-06 -1.40371207e-06 3.017020463e-06 -2.069800784e-06 -3.373160216e-06 1.912125995e-05 -0.1042881971 -2.123746261e-05 -3.922302353e-06 --0.2166829298 -3.986283013e-05 -7.597780996e-05 -0.1638932216 -3.778456062e-05 -9.88837456e-05 --0.06026946418 -1.795222442e-05 -5.865072963e-05 0.01265986924 2.067082427e-06 -5.310015011e-07 -0.0243202851 1.013049876e-05 2.742868597e-05 0.01291465998 6.654202173e-06 2.133078781e-05 --0.003245880417 -7.807636289e-08 1.218497864e-06 -0.005159712153 -3.325428686e-06 -9.220822651e-06 --0.003471026596 -2.116827788e-06 -6.895131311e-06 0.001419744623 2.52041377e-08 -1.411195629e-07 -0.0007730169764 9.383936879e-07 2.575224224e-06 0.001074225221 -3.295018421e-05 5.717928937e-06 --0.03602665791 -6.84472834e-06 0.09801300967 -6.371843787e-05 -3.163877939e-06 -0.08200430259 --4.03969491e-05 -0.1020595688 -4.264437489e-05 -3.227068044e-05 -0.08103998456 -8.462551046e-05 --0.1785595994 -1.84000544e-06 -5.075488716e-05 -0.04631806446 -9.792833008e-05 -0.1382927047 -2.17308158e-05 -4.2075145e-05 -0.009468631888 -6.864258543e-05 -0.03375738069 1.720512877e-05 --1.536452485e-05 0.008072991869 -2.006829054e-05 0.01517759968 2.420696834e-06 7.160148317e-06 -0.009222454784 1.498022566e-05 0.03003264992 -7.441565456e-06 1.369968616e-05 0.002627714405 -2.21527165e-05 0.006827371824 -5.934086655e-06 6.68891182e-06 -0.001578884518 9.575683261e-06 --0.001549528507 -7.937985e-07 -1.502908752e-06 -0.002291160929 -3.298366303e-06 -0.008919088172 -2.58318429e-06 -4.28619918e-06 -0.0005049890707 -6.793422238e-06 6.068803614e-05 1.539615211e-06 --1.885608109e-06 0.0002793911221 -2.771210669e-06 -0.00101330151 2.222221205e-07 2.910296212e-07 -0.0005288860492 6.756444288e-07 0.003175983456 -ad : 3 3.113220902 -iw : 4 --0.09210255759 -0.1194240892 0.03420934809 0.03576349534 -0.007778280569 -0.01700191485 -0.008169599296 0.003634947939 -0.001247354388 -0.004355623889 0.003455578806 -0.0002668374287 -0.0002332841824 -0.10406378 0.08796830669 -0.0001877756196 -0.1431458584 -0.1029421729 --0.000258296424 -0.006637814684 -0.02394864911 -1.197746002e-05 0.04251126538 0.02642871901 -7.670852618e-05 0.006742734249 0.01607351795 1.216677984e-05 -0.01802965459 -0.01850525756 --3.253321722e-05 -0.0007300246887 0.0008998706941 -1.317277137e-06 0.006059821715 0.002049460082 -1.09345132e-05 0.001629158803 0.004805266983 2.939700091e-06 -0.003951628223 -0.005806537739 --7.130429413e-06 0.0006531078647 0.002445573106 1.17848625e-06 0.0003669809289 -0.001665096887 -6.621907379e-07 0.0006157635983 0.002508983347 1.111101203e-06 -0.1397588484 0.07623735545 --0.0002324076561 0.1132713399 0.0001375648343 -0.1022989397 -0.118415794 -0.0003675266402 --0.02649276582 -0.0002136727983 -0.01414542313 -0.05711370945 -9.698303242e-05 -0.02924647165 --0.0001030575881 0.02793918576 0.0260746437 9.327590208e-05 0.003300517984 4.704982247e-05 -0.004748464313 0.02968877426 4.447244525e-05 0.0164216197 5.357126157e-05 -0.007394119776 --0.01829563835 -3.759742841e-05 -0.008029141858 -3.301316583e-05 -0.004687163931 -0.006442563779 --1.799178102e-05 -0.001852465813 -1.162514378e-05 0.005370493727 0.003578838634 1.630552093e-05 --0.0002656052237 6.457757363e-06 0.0003750975696 0.007875789528 9.779853743e-06 0.004770212774 -1.421129674e-05 -0.0009199559615 -0.006730888021 -9.725376444e-06 -0.003796299562 -1.214540417e-05 --0.00174181583 0.0003981540803 -3.521974999e-06 0.001065068866 7.184404516e-07 0.001873686816 --0.0002345345741 4.008177749e-06 -0.00102402723 -4.232008e-07 -0.0003388392022 0.003356787599 -3.030754058e-06 0.002266501444 6.057082215e-06 -ad : 4 0 -iw : 5 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0.3077382577 0 0 0.340113108 -0 0 0.2965292449 0 0 0.2106036639 -0 0 0.1684140928 0 0 0.1131428086 -0 0 0.1019205506 0 0 0.06113809996 -0 0 0.06480538679 0 0 0.02956059757 -0 0 0.04222106929 0 0 0.008651775987 -0 0 0.0303465245 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 -iat : 3 -ad : 0 3.245352337 -iw : 7 -0.001116775942 0.00129620617 -0.0005545366424 -0.0003397506626 0.000169764751 0.0001563893924 --0.0001402900814 -9.872022548e-06 3.127438262e-05 3.479228806e-05 -4.915911844e-05 1.517459569e-05 --5.179206692e-06 6.33196742e-06 0.1685459137 -0.001719194225 7.832955213e-06 0.008519335656 --0.002126727836 -6.383986497e-07 -0.01804955998 0.0001733317939 -2.328826506e-06 -0.006649638414 -0.0006323003286 1.702117738e-07 0.01042912955 -4.621424577e-05 9.746308407e-07 -0.004476813165 --0.0002646222891 -3.080516344e-07 0.001723717523 8.363918444e-05 -2.642491557e-07 -0.002702999739 -7.174636134e-05 9.73716732e-08 0.003396942544 -2.643740991e-05 1.779569024e-07 -0.002710715974 --4.831712779e-05 -1.638238984e-07 0.00203426698 4.447987194e-05 2.478712665e-08 -0.001979224499 --6.729959611e-06 2.232499018e-08 0.001984338396 -6.061464258e-06 0.0002557617969 0.0008915021144 --1.067639247e-05 -0.003341703375 -0.2420519856 -0.0009458068261 0.0002037130797 -1.525360502e-05 --0.002503268859 -0.0553101946 -0.0002624530305 -7.237395036e-05 -2.217173456e-06 -0.0001473952287 -0.01965027128 0.0002582460339 -7.027321364e-05 4.393976361e-06 0.0007456983017 0.01907989967 -0.0001354349672 5.073808751e-05 9.347590759e-07 1.921300801e-05 -0.01377591217 -0.0001631433081 --1.154793074e-05 -1.901102609e-06 -0.0002335893946 0.003135381869 -5.14182051e-06 8.145379199e-06 --1.929725477e-07 -4.348742467e-05 -0.002211554159 4.16530511e-05 -1.705788633e-05 7.982064894e-07 -0.000144573124 0.004631391435 3.034173041e-05 1.774461887e-05 1.09692004e-07 -2.277131633e-05 --0.004817846376 -5.056798268e-05 -1.303110956e-05 -4.414763845e-07 -3.227743399e-05 0.003538080159 -1.51333428e-05 1.017661083e-05 3.397269164e-08 -1.698790884e-05 -0.00276305442 -3.588048988e-06 --1.003384929e-05 1.111102728e-07 3.638185481e-05 0.002724293195 1.834694489e-05 1.026327712e-05 -7.362235327e-08 -1.178888638e-05 -0.00278658521 -ad : 1 2.003222249 -iw : 0 -0.05313301447 0.1286680393 0.06517620847 0.007472252791 -0.0006570116273 0.009648489909 -0.002701841246 -0.004204341885 -0.006654797904 -0.0008599562261 0.0007120250877 0.001629385081 --0.0002778088774 0.01920531896 0.2390925999 -0.04640849895 0.04311818406 0.09987945243 --0.1041925002 0.02655052661 -0.000123043826 -0.06415775176 0.004543585305 -0.01021304657 --0.0109793008 -0.0003388288342 0.006482812572 0.000818759513 0.0050843439 -0.004670819845 --0.01228601145 0.00494269421 -0.005367783514 -0.01194372348 0.0009578834066 -0.005718893876 --0.00231466768 -0.002287486172 0.003060469891 0.005527572849 -0.001515471155 0.0008221766565 -0.003662044961 -0.0004055129126 0.0022111326 0.0009798975805 0.0004553027313 -0.00154584638 --0.001100211685 9.688088572e-06 0.001005773637 -2.341068374e-05 0.05531768482 0.07652261642 --0.01769791485 -0.1312550258 -0.1849123033 0.02318366944 0.04171504285 -0.03853825564 --0.1173323109 -0.1008018938 -0.001551598068 0.005597003162 -0.02449038179 -0.04635718684 --0.01352482174 -0.0009002984412 -0.001109166184 -0.0001516048289 0.001255757605 0.002680233418 -0.00615240244 0.006002985478 0.006124024444 0.001607746488 -0.01450585361 0.0003342346836 -0.001410691101 -0.003167074193 -0.006921319443 -0.003408850259 -0.003856446465 -0.002262674751 --0.008679317147 -0.0107017084 0.005467617542 -0.004677049612 -0.004273944976 -0.005589710817 --0.003093111822 0.01032773115 -0.0002162521096 -0.0003528028887 0.0002423227069 0.0008598370229 -0.0008525269758 0.0006956281023 0.0002539650561 0.00206308977 0.002926696781 -0.0006136912939 -0.001182254339 0.001158501333 0.00116079864 0.000276900015 -0.002799448842 -0.0002434233547 --0.0003135552925 3.081828248e-06 0.0004277933119 0.0007576875185 0.0002771508332 0.0003690389612 --4.235723098e-05 -0.0005648642525 -0.0008917604691 -iw : 1 --0.004434869179 -0.03542222125 -0.06296459969 -0.05010339901 -0.01541423611 0.01076808903 -0.01551334377 0.00691363842 -0.002587209354 -0.005170285736 -0.002584157319 0.0006779445738 -0.001411811693 0.04681525403 -0.03350547565 0.004792275253 0.09222228228 -0.06059218776 -0.03096916525 0.06053321819 -0.02956017213 0.06095721959 0.01200646291 0.006890398373 -0.06283399294 -0.01546054828 0.02063043935 0.03647592104 -0.01295505854 0.01074183426 -0.004522297057 -0.002908509865 -0.001194654192 -0.0133335208 0.00494321241 -0.006984100466 --0.0132060984 0.003688339935 -0.003730301453 -0.003961568389 0.0009385972063 0.0001540228098 -0.003381817098 -0.001762751952 0.002378779731 0.004264740234 -0.0008660441348 0.001030258986 -0.001544399574 -0.0003781485969 9.15101331e-05 -0.000751492539 0.01168668606 0.1783255734 --0.04061963359 0.01950770206 0.02880090282 0.03299097888 0.08259866035 -0.08765787282 -0.05267825644 0.05699425583 0.04480271139 0.007624627423 -0.07722976259 0.06783707207 -0.03976761357 0.04043829497 -0.02708304678 -0.03229553432 0.05791688072 0.002222679007 -0.02441982922 -0.00545215461 0.006780896791 0.03264795009 -0.02231372175 0.007159953059 -0.001071390591 0.01792449384 0.008161613185 -0.02088564328 -0.004129119807 0.009745602543 -0.01037962667 -0.006540867586 -0.006600993493 -0.006686967916 -0.0007425184934 -0.001454585297 --0.008975789762 0.005748146334 -0.003736297075 0.0003321396618 -0.005541162917 -0.004596551167 -0.007467473162 0.0001516248894 -0.004328285797 -0.003508317569 0.000517050282 0.003056959875 -0.001672699301 0.001543628765 0.0004543893562 0.002237245301 -0.001519321744 0.001170788646 --0.001150454971 0.0014310236 0.001467400698 -0.002065153595 0.0001079762479 0.00218769172 -0.0009591287437 6.209993218e-05 -0.0009349260225 -iw : 2 --0.1039118588 -0.1831869295 -0.04403335488 0.0433690457 0.05010717646 0.005265929088 --0.01378932476 -0.01625732965 5.095234039e-05 0.004151010891 0.006036686805 -0.0009483426263 --0.0004600809192 -0.03350547565 0.1427876306 0.08096396812 -0.06059218776 0.2918007385 -0.1464173799 -0.02956017213 0.2113880267 0.07143037929 0.006890398373 0.0667249212 --0.01665023353 0.02063043935 -0.02855672559 -0.04985221673 0.01074183426 -0.03665535066 --0.02595699687 -0.001194654192 -0.01524149211 0.002886810052 -0.006984100466 0.008375994931 -0.016876659 -0.003730301453 0.009129105626 0.009014049256 0.0001540228098 0.004468522052 --0.0003721868625 0.002378779731 -0.003204074081 -0.005748178247 0.001030258986 -0.001843404526 --0.002489558917 9.15101331e-05 -0.001501728589 -0.0002211287365 -0.07658154545 0.05148755303 -0.02880090282 0.1903200449 -0.1244165773 0.009711544053 0.1152617743 0.05699425583 -0.09731626271 -0.2785231499 0.04714678456 0.1099552632 0.03976761357 -0.00202168677 --0.2657002847 0.03854091738 0.05757290422 0.002222679007 -0.0623036724 -0.1391214627 -0.0003829055874 0.005490500862 -0.02231372175 -0.04534884873 -0.01326746533 -0.01149210275 --0.01614130463 -0.02088564328 -0.02192084964 0.03900449249 -0.01243728305 -0.01376723887 --0.006600993493 0.008322804035 0.03326770528 0.000931749128 -0.001951639915 0.005748146334 -0.009897446778 0.004716020553 0.003075044205 0.004176428498 0.007467473162 0.009628288399 --0.01009208845 0.004723669345 0.003988852535 0.003056959875 -0.002059743124 -0.009638822406 --0.00107419296 0.000387380657 -0.001519321744 -0.001182049036 -0.0009360820747 -0.0001666432587 --0.0009685854809 -0.002065153595 -0.003847058438 0.002340528599 -0.001861992343 -0.001010680207 --0.0009349260225 0.001352775045 0.002442247974 -iw : 3 -0.01071659482 0.08559566864 0.1521501707 0.1210718523 0.03724757511 -0.02602043993 --0.03748706282 -0.01670639171 0.006251835904 0.01249368473 0.006244460845 -0.001638212316 --0.0034115581 0.004792275253 0.08096396812 0.03721820546 0.03096916525 0.1464173799 -0.03020318542 0.06095721959 0.07143037929 -0.06154019501 0.06283399294 -0.01665023353 --0.1138253915 0.03647592104 -0.04985221673 -0.08850751812 0.004522297057 -0.02595699687 --0.02201144663 -0.0133335208 0.002886810052 0.02379330504 -0.0132060984 0.016876659 -0.03138985019 -0.003961568389 0.009014049256 0.01162180833 0.003381817098 -0.0003721868625 --0.005833856635 0.004264740234 -0.005748178247 -0.01030335469 0.001544399574 -0.002489558917 --0.003958871015 -0.000751492539 -0.0002211287365 0.001126796344 0.04586663358 0.02880090282 -0.01247214891 -0.004353603965 0.1206486561 0.09491483776 0.05699425583 0.009905261381 --0.02646795564 -0.03153849009 0.07538926176 0.03976761357 -0.02571888098 -0.05789249042 --0.07201431208 0.02016976244 0.002222679007 -0.05826085722 -0.07189087505 -0.03153420146 --0.02145539515 -0.02231372175 -0.05980539931 -0.05721019663 0.03923348219 -0.02668481057 --0.02088564328 -0.032464531 -0.02513944905 0.04289714608 -0.01112247971 -0.006600993493 --0.000685503702 0.003623378633 0.02296480466 0.005360390854 0.005748146334 0.01599993961 -0.01545507516 -0.0122538021 0.009046143443 0.007467473162 0.01336953083 0.01111745453 --0.01462228154 0.004410338878 0.003056959875 0.002954751971 0.001508426178 -0.01045017798 --0.001456707276 -0.001519321744 -0.004087109946 -0.003913562445 0.004586234585 -0.002443911237 --0.002065153595 -0.003903386877 -0.003323473433 0.002985238058 -0.001283916299 -0.0009349260225 --0.001134880071 -0.0007406890314 0.004059982016 -ad : 2 3.03052076 -iw : 4 -0.04085782418 0.05645149359 -0.01142653251 -0.01755186815 0.00122510922 0.008268824929 --0.002273562711 -0.002071756675 -0.0001659589024 0.002126625134 -0.001097888488 -2.232716697e-06 --0.0002569301859 0.04700579041 0.1656850969 -0.03226389442 0.06874722846 0.002690854844 --0.04718681043 0.008493309252 -0.02070468192 -0.005829648446 -0.01964880866 -0.005187033397 -0.01348657437 -0.006043404255 0.01197139803 0.004148079527 0.00804303874 -0.005003358419 --0.005520591198 0.002135257927 0.0008835265928 -0.001465601061 -0.002718702046 -0.002486186968 -0.001866066181 -0.001777601692 0.003912336977 0.001220112518 0.00175713701 -0.002843938444 --0.001206065944 0.0003828348371 0.001747325854 -0.0002627706642 -0.0002297879902 -0.001920773131 -0.000157722174 -0.0006507616215 0.002164884151 0.0004466705924 0.06579338749 0.1745014763 --0.04066494441 -0.08262373017 -0.119774546 0.05467377531 0.03218999124 -0.068211178 --0.04213866197 -0.02209460728 0.01180759283 -0.01994216113 -0.02293603287 -0.002778336398 -0.01368792601 -0.01338139007 -0.01322965815 0.01506213042 0.01157135 0.009080589652 --0.00459342813 0.01263427086 0.01041031429 -6.545980722e-05 -0.008671926961 0.003247528896 --0.002199576161 -0.005305997018 -0.001536429049 0.001509747893 0.003235988413 0.0004013555982 --0.004496033557 -0.002140545479 -0.0002754829678 -0.002214400809 -0.003563173719 0.002073391676 -0.002237834017 0.002445695725 -0.0007575788033 0.004168125862 0.00235284678 -0.0005007856317 --0.00286092355 0.0003268325156 -0.002528824359 -0.00123795717 0.0003877987087 0.001735737692 -0.001027208253 0.001735372119 -0.0009366283474 -0.001057472034 -0.00119112693 -0.0008160355735 --0.001983687579 0.0005594815915 0.0009823149696 0.001361566013 8.175768775e-05 0.00212931658 -0.0005329256838 -0.0005522463192 -0.001461523032 -ad : 3 3.347258395 -iw : 5 -0.125250151 0.1322633867 -0.07199553683 -0.02855363232 0.02321695176 0.01215473054 --0.01727590414 0.00251908848 0.003222937441 0.002039670329 -0.004946188747 0.002885189043 --0.00148552754 0.001757933547 -0.01025971856 -0.09697804215 0.001988014882 -0.1940534019 --0.1096706933 -0.0003672083141 0.01893833768 0.02025738881 -0.0005609271349 0.05057919519 -0.03094406806 0.0001485764814 -0.004492485678 -0.008196360037 0.0002184178553 -0.02680086774 --0.01204922451 -0.000141959579 0.01605929671 0.007831332452 -3.352717538e-05 0.0007885103192 -0.00184955787 5.222299172e-05 -0.001871579675 -0.002880929999 2.692908247e-05 -0.005494941673 --0.001485567926 -5.773072489e-05 0.007887293175 0.003184769231 1.933846456e-05 -0.003922152091 --0.001066824417 7.755267513e-06 0.001194925414 -0.0004278265586 0.02121018741 -0.0005254601307 --0.001490706086 -0.1189462903 0.02898749773 -0.1085316417 -0.003104396981 -0.001955630667 -0.08013357963 0.1712569521 -0.01761027028 -0.0003724166172 -0.0001001108743 0.02498098791 -0.0205447097 0.03104254817 0.0009027902427 0.0005839400695 -0.02156425774 -0.04980326495 -0.008828151059 0.0001690304844 2.096411745e-05 -0.01413468112 -0.009324724171 -0.01897168929 --0.0004854299799 -0.00024717802 0.01922860459 0.02677919716 0.003568566036 8.519112045e-05 -3.637311554e-05 -0.004175040214 -0.00469964754 0.003858788619 0.0001219657241 8.870531914e-05 --0.001791714331 -0.006728352813 0.00132241624 1.271113087e-05 -1.771827381e-05 -0.00326761602 --0.0007012213786 -0.004841648653 -0.0001113502475 -4.234706807e-05 0.006050633622 0.006142740155 -0.003031065945 6.779091817e-05 2.333673093e-05 -0.00396299074 -0.003739749167 -0.001474630709 --2.695377682e-05 -1.383279108e-06 0.002477850504 0.001486930213 0.001549132638 2.818104283e-05 -1.230657623e-06 -0.002615308371 -0.001554633486 -ad : 4 0 -iw : 6 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0.3077382577 0 0 0.340113108 -0 0 0.2965292449 0 0 0.2106036639 -0 0 0.1684140928 0 0 0.1131428086 -0 0 0.1019205506 0 0 0.06113809996 -0 0 0.06480538679 0 0 0.02956059757 -0 0 0.04222106929 0 0 0.008651775987 -0 0 0.0303465245 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 -iat : 4 -ad : 0 3.245352337 -iw : 6 --0.001116775942 -0.00129620617 0.0005545366424 0.0003397506626 -0.000169764751 -0.0001563893924 -0.0001402900814 9.872022548e-06 -3.127438262e-05 -3.479228806e-05 4.915911844e-05 -1.517459569e-05 -5.179206692e-06 6.33196742e-06 0.1685459137 -0.001719194225 7.832955213e-06 0.008519335656 --0.002126727836 -6.383986497e-07 -0.01804955998 0.0001733317939 -2.328826506e-06 -0.006649638414 -0.0006323003286 1.702117738e-07 0.01042912955 -4.621424577e-05 9.746308407e-07 -0.004476813165 --0.0002646222891 -3.080516344e-07 0.001723717523 8.363918444e-05 -2.642491557e-07 -0.002702999739 -7.174636134e-05 9.73716732e-08 0.003396942544 -2.643740991e-05 1.779569024e-07 -0.002710715974 --4.831712779e-05 -1.638238984e-07 0.00203426698 4.447987194e-05 2.478712665e-08 -0.001979224499 --6.729959611e-06 2.232499018e-08 0.001984338396 -6.061464258e-06 -0.0002557617969 -0.0008915021144 -1.067639247e-05 0.003341703375 0.2420519856 0.0009458068261 -0.0002037130797 1.525360502e-05 -0.002503268859 0.0553101946 0.0002624530305 7.237395036e-05 2.217173456e-06 0.0001473952287 --0.01965027128 -0.0002582460339 7.027321364e-05 -4.393976361e-06 -0.0007456983017 -0.01907989967 --0.0001354349672 -5.073808751e-05 -9.347590759e-07 -1.921300801e-05 0.01377591217 0.0001631433081 -1.154793074e-05 1.901102609e-06 0.0002335893946 -0.003135381869 5.14182051e-06 -8.145379199e-06 -1.929725477e-07 4.348742467e-05 0.002211554159 -4.16530511e-05 1.705788633e-05 -7.982064894e-07 --0.000144573124 -0.004631391435 -3.034173041e-05 -1.774461887e-05 -1.09692004e-07 2.277131633e-05 -0.004817846376 5.056798268e-05 1.303110956e-05 4.414763845e-07 3.227743399e-05 -0.003538080159 --1.51333428e-05 -1.017661083e-05 -3.397269164e-08 1.698790884e-05 0.00276305442 3.588048988e-06 -1.003384929e-05 -1.111102728e-07 -3.638185481e-05 -0.002724293195 -1.834694489e-05 -1.026327712e-05 --7.362235327e-08 1.178888638e-05 0.00278658521 -ad : 1 1.950638213 -iw : 0 -0.05200549356 0.1283623673 0.06859735187 0.009746705202 -0.0006889193902 0.00995919682 -0.004532324493 -0.002797238223 -0.006784772713 -0.001813582803 0.0001533600954 0.001628351584 --0.0001295695695 0.01851604131 0.243486829 0.04429843583 0.04232783217 0.1087998431 -0.1012666112 0.02708488509 0.004094774289 0.06479884247 0.004993283389 -0.009938953852 -0.01194610878 -0.0008295120218 0.007034073825 -0.001984554066 0.004594160092 -0.003120752651 -0.01099123201 0.005454416684 -0.00509549877 0.01304934048 0.001918403712 -0.006743021229 -0.004589657275 -0.001770347013 0.001991299199 -0.004235441163 -0.001663976755 0.0007270967499 --0.003980957174 -0.0006753792216 0.002473515549 -0.001615801272 0.0003237925779 -0.0012972451 -0.0007746528802 2.876743362e-05 0.0009840056195 6.882423142e-05 0.0553000848 0.07680699484 -0.01663199818 -0.12862163 0.1837557864 0.02541657714 0.04418610179 0.03687136002 --0.1168235143 0.1057124016 -0.0001591949482 0.007143756606 0.0241795874 -0.04746568841 -0.0170909774 -0.0008610783333 -0.001074595046 0.0001402741366 0.001214466946 -0.002570899411 -0.00652214722 0.006205813558 -0.007423243197 0.003360143161 0.01484700909 0.00164230799 -0.002536495745 0.00133434377 -0.005479157913 0.006068402639 -0.003007112038 -0.001422243715 -0.008156371394 -0.01089588874 -0.003402626452 -0.004905220663 -0.004368818459 0.00656484213 --0.004465870852 -0.01045211668 -0.0009359866516 -0.000947364215 0.0008785372655 -0.0001134527689 --0.002266507845 0.0003269185913 -8.289358978e-05 -0.001668044079 0.002727232491 -0.0001983175726 -0.001205100062 0.001157974792 -0.001334345044 0.0005473050125 0.002770380079 -0.0001264214975 --0.0002176626867 -0.0001764299121 0.000567320758 -0.0005207439537 0.0002933359397 0.0003830726274 -8.136735868e-06 -0.0005241383414 0.0009164765792 -iw : 1 --0.004250698777 -0.03444477438 -0.06285629416 -0.05285023305 -0.01969837362 0.007849418645 -0.01552086361 0.008835181344 -0.0008051620705 -0.004855025169 -0.003331571452 -0.0001186769411 -0.001235217821 0.04601001979 -0.03336831634 -0.004483920613 0.09268307552 -0.06223698594 --0.02937221604 0.06426030908 -0.03363484708 -0.05922752823 0.01628772983 0.003378402888 --0.06362509905 -0.01360809341 0.02006561873 -0.04031495757 -0.01392377002 0.01264602246 --0.009048566476 -0.004761378696 0.0008883415485 0.01093829754 0.004005611476 -0.006389021329 -0.01383777257 0.004066657512 -0.004538470121 0.006093639708 0.001755467287 -0.0008676450696 --0.001827019805 -0.00135916666 0.002049986286 -0.004213832618 -0.000993189815 0.00130233848 --0.002280169931 -0.0006516488195 0.000452423315 0.0001459009472 0.0112011946 0.1825465418 -0.03893503702 0.01874946701 -0.02799864435 0.03187083324 0.09083814193 0.08588214813 -0.05117918652 -0.05712519163 0.04399070431 0.01333731556 0.07901990204 0.06719931102 --0.04307373659 0.04095526111 -0.02641683276 0.03688274522 0.05936718356 -0.006894513786 -0.02637162789 -0.007694966435 -0.002900320781 0.03590611668 0.01968384075 0.00961792565 --0.0005918283323 -0.01725988991 0.01168401912 0.02184505053 -0.002436917991 0.009841889477 --0.01222816323 -0.004406378233 0.009492646373 -0.006378691628 0.00038498633 -0.0006494163313 --0.008802520086 -0.003538206429 -0.004478867604 0.001023949 0.004960445526 -0.005709015211 --0.00738736672 -0.0007002645879 -0.004415373196 0.004207834554 -0.0005936492074 -0.004261907792 -0.001310362888 0.001055824757 0.0004517629707 0.001836008733 0.000438676032 0.001318194356 --0.001382672614 -0.001174501039 0.001705102125 0.001915838525 0.0003545692766 0.002204158283 --0.001133026538 0.0003874715179 0.001254971728 -iw : 2 --0.1049577673 -0.1909248486 -0.05575377979 0.03758148223 0.05262561288 0.01089972671 --0.01093758996 -0.01738368137 -0.002654801611 0.00280038641 0.006492457277 0.0001728529859 -2.300704848e-05 -0.03336831634 0.1403127791 -0.07983154687 -0.06223698594 0.2930023294 --0.1488979789 -0.03363484708 0.2229330665 -0.0804692045 0.003378402888 0.08125408375 -0.008082611236 0.02006561873 -0.02030033825 0.04800569996 0.01264602246 -0.03716475604 -0.03025479394 0.0008883415485 -0.01985268235 0.002125299918 -0.006389021329 0.004972185848 --0.01528532188 -0.004538470121 0.009097759801 -0.01085799735 -0.0008676450696 0.006196499104 --0.002075784926 0.002049986286 -0.001932298401 0.004904460105 0.00130233848 -0.001818760884 -0.003115760903 0.000452423315 -0.002029214961 0.001082393631 -0.0803644529 0.04983745509 --0.02799864435 0.1944772803 0.1192329002 0.003350690986 0.1139572158 -0.05712519163 -0.1069873522 0.2726352964 0.0448413683 0.1130959964 -0.04307373659 0.007379474808 -0.2705748845 0.04145202208 0.06426774722 -0.006894513786 -0.05818412537 0.1537564444 -0.004811355085 0.01158060598 0.01968384075 -0.04719829996 0.02770585365 -0.009556560634 --0.01389528527 0.02184505053 -0.02657954379 -0.03324357473 -0.01345418064 -0.01504457456 -0.009492646373 0.004560554766 -0.03599317529 -0.001147962535 -0.004311818974 -0.003538206429 -0.008974346357 -0.01031574908 0.002112815413 0.003029606872 -0.00738736672 0.01092649352 -0.00724813924 0.005097319034 0.004311980497 -0.004261907792 -0.0004138853997 0.01031613551 --0.0002222904938 0.001241777575 0.000438676032 -0.0004811261115 0.002970872838 0.0001792039371 --0.0005724657212 0.001915838525 -0.004093120535 -0.001369587353 -0.00194506265 -0.001067751629 -0.001254971728 0.0008910665462 -0.002554526976 -iw : 3 --0.01016952295 -0.08240690338 -0.1503796339 -0.1264407774 -0.04712708969 0.01877922836 -0.03713266615 0.0211376021 -0.001926298376 -0.0116153349 -0.00797057004 -0.0002839269351 -0.00295517905 -0.004483920613 -0.07983154687 0.0371567361 -0.02937221604 -0.1488979789 -0.03468906008 -0.05922752823 -0.0804692045 -0.05268157172 -0.06362509905 0.008082611236 --0.1093369412 -0.04031495757 0.04800569996 -0.09320802107 -0.009048566476 0.03025479394 --0.0317897255 0.01093829754 0.002125299918 0.01683575907 0.01383777257 -0.01528532188 -0.03132762202 0.006093639708 -0.01085799735 0.01609825346 -0.001827019805 -0.002075784926 --0.001851894671 -0.004213832618 0.004904460105 -0.009679174711 -0.002280169931 0.003115760903 --0.005495274711 0.0001459009472 0.001082393631 -0.0003635744782 -0.04409184978 -0.02799864435 -0.01233852108 0.003928539179 0.127264577 -0.09381876088 -0.05712519163 0.01159884276 -0.02425428773 -0.02195277727 -0.07928302079 -0.04307373659 -0.02130262561 0.05423276229 --0.07170968743 -0.02720354414 -0.006894513786 -0.05446661989 0.06975577855 -0.04002971571 -0.01634230662 0.01968384075 -0.06023162737 0.0589118798 0.03116982207 0.02654537921 -0.02184505053 -0.03726332352 0.02999426067 0.04254016402 0.01436656977 0.009492646373 --0.006231818091 0.001118616712 0.02858465916 -0.002236435122 -0.003538206429 0.0132932212 --0.01353995201 -0.006601030592 -0.008452065379 -0.00738736672 0.01444763729 -0.01235171295 --0.01356204816 -0.005682262568 -0.004261907792 0.005499278912 -0.00373366651 -0.01283030334 -5.495228671e-05 0.000438676032 -0.002430239892 0.00261429002 0.001921969298 0.002124920281 -0.001915838525 -0.003982669971 0.003485383574 0.002400057597 0.001609719521 0.001254971728 --0.001842694665 0.001366615559 0.00468203907 -ad : 2 2.994710688 -iw : 4 -0.03998728222 0.05671805793 -0.009467802864 -0.01776361079 0.0001588082202 0.00827995989 --0.001583722348 -0.002122808159 -0.0005240081833 0.002093070624 -0.0008471530753 -3.451584892e-06 --0.0003561500439 0.04588064815 0.1689161012 0.03096893175 0.06883063931 0.006836783236 -0.0464599228 0.01076169996 -0.02094971704 0.007264028845 -0.0191659024 -0.006542397759 --0.01293677285 -0.007199930086 0.01199216583 -0.004859873442 0.007630815156 -0.004376387037 -0.005150716115 0.002837850666 0.0007777563923 0.001915517917 -0.002511118416 -0.002721189425 --0.00169497725 -0.002155705513 0.003931034038 -0.001455077458 0.001615763861 -0.002689637235 -0.001090622796 0.000637443377 0.001685343428 0.0004302672528 -0.0002029917558 -0.001943838133 --0.0001370171976 -0.0007777744641 0.002167863571 -0.0005249891897 0.06495534276 0.1776348296 -0.03892980974 -0.08110841225 0.1199015519 0.05585812597 0.03794384219 0.06692177829 --0.04277558052 0.02561167522 0.01366258023 -0.01888197294 0.0245723456 -0.003846276074 --0.0127451236 -0.01290975821 -0.01503457952 -0.01364176539 0.01135804556 -0.01014817545 --0.005368507623 0.01206255479 -0.01100786323 0.000420502453 0.008142091518 0.002843555198 --0.001302115677 0.004348730678 -0.001417858169 -0.0008789137285 0.003546729725 0.0006096984277 -0.004773420242 -0.002293272951 0.0004115397179 -0.001915174066 -0.003984638616 -0.001512766933 -0.002097106996 -0.002689587143 -0.0009083134186 0.004005626442 -0.002434765654 -0.0003904341669 -0.002703753694 0.0001677911337 -0.002246611172 0.0008886505452 0.0004260887352 -0.001516437777 -0.001061789193 0.001787002504 0.0009616509622 -0.00106348527 0.001206206992 -0.000723756088 --0.002096732176 -0.0003995546752 0.0009313347991 -0.001415271106 9.370131008e-05 0.002043230395 --0.0004643792117 -0.0005368250185 0.001379157994 -ad : 3 3.303653192 -iw : 5 -0.1254741982 0.1381147446 -0.06816681006 -0.03282017257 0.02173153757 0.01455759627 --0.01687267716 0.0009443445761 0.00352962835 0.002832276014 -0.00531352736 0.002400737997 --0.00105025918 0.001058404368 -0.006670372595 0.094871103 0.001244917912 -0.197693091 -0.1115894255 -0.0001742847026 0.010679363 -0.01562217851 -0.0003614416658 0.05323921877 --0.03239817458 6.507128261e-05 -0.000276742574 0.005832727584 0.0001462668388 -0.02872300844 -0.01311077009 -7.246817554e-05 0.01368296012 -0.006495755263 -3.120021059e-05 0.002486914378 --0.002796661164 2.631656171e-05 -0.0009421581137 0.002358910556 2.226030981e-05 -0.00641005737 -0.001995324479 -3.273248094e-05 0.007444038088 -0.002934007704 8.514069694e-06 -0.003380599382 -0.0007631669021 5.089672198e-06 0.00114359027 0.0004562177082 0.02444628828 -0.0002868575355 -0.0008764727263 -0.1208959189 -0.02571275366 -0.107854319 -0.001901309213 0.00119354734 -0.0798377014 -0.170425697 -0.02274323861 -0.0003119945356 0.0001095728959 0.02957199433 --0.02796593307 0.030489797 0.000547284831 -0.0003530616333 -0.02116679412 0.0490564071 -0.01159776378 0.0001484992301 -3.893749438e-05 -0.01659815041 0.01331087265 -0.01896060186 --0.0002980401448 0.0001519680464 0.0192206178 -0.0267151177 0.001800744976 2.314530679e-05 --6.186853146e-06 -0.002564486225 0.002074652042 0.004402260324 8.425148316e-05 -5.933690732e-05 --0.002306879237 0.00755196348 0.002189245503 2.173087025e-05 2.717701592e-06 -0.004035457942 -0.00194786765 -0.005323138827 -7.612927247e-05 3.060876872e-05 0.006476641686 -0.00682392124 -0.002494010756 3.265112186e-05 -9.519710406e-06 -0.003466551065 0.002926715004 -0.0009717582361 --8.108056699e-06 -3.663615608e-06 0.002011485507 -0.0007267735331 0.001768669293 2.073969715e-05 --2.891456218e-06 -0.00280427885 0.001859022887 -ad : 4 0 -iw : 7 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0.3077382577 0 0 0.340113108 -0 0 0.2965292449 0 0 0.2106036639 -0 0 0.1684140928 0 0 0.1131428086 -0 0 0.1019205506 0 0 0.06113809996 -0 0 0.06480538679 0 0 0.02956059757 -0 0 0.04222106929 0 0 0.008651775987 -0 0 0.0303465245 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 diff --git a/tests/09_DeePKS/100_NO_GO_deepks_UT/dphialpha_y_ref.dat b/tests/09_DeePKS/100_NO_GO_deepks_UT/dphialpha_y_ref.dat deleted file mode 100644 index 7e2989d798..0000000000 --- a/tests/09_DeePKS/100_NO_GO_deepks_UT/dphialpha_y_ref.dat +++ /dev/null @@ -1,870 +0,0 @@ -iat : 0 -ad : 0 2.003222249 -iw : 6 --0.09046914024 -0.214415565 -0.142260619 -0.02790118937 0.03786007902 0.02814680468 -0.008998392502 -0.008881735096 -0.0084804676 -0.004256513726 0.00451360582 0.001570166844 -0.00118556507 0.03118321102 -0.04205856012 0.1723395426 0.07812067423 -0.1053657711 --0.03287354227 0.07352287815 -0.09916446348 -0.1215494134 0.03283092487 -0.04428092496 --0.09040648582 0.001039771632 -0.0014023988 -0.01265234635 -0.01253246175 0.01690323987 -0.02111716499 -0.01011864274 0.01364758567 0.02769530263 -0.0007085757372 0.0009556961667 -0.001550333701 0.00347853089 -0.004691691323 -0.004604261327 0.002562737949 -0.003456509595 --0.008410797356 0.0008627191813 -0.001163598147 -0.000881963692 -0.0008017982453 0.001081430635 -5.082227107e-05 -0.001363680898 0.001839273543 0.004852247217 -0.09208270598 0.01592788191 --0.05129268302 -0.169165452 0.06918134219 -0.04766759609 0.04530343964 0.007672835938 --0.1100769678 -0.01034878773 0.006565468075 0.05091279545 0.05172641121 -0.0195492916 --0.06976633594 0.03433685229 0.03621161289 0.05805507376 0.03748066875 -0.078302161 -0.01848037963 0.01303335471 0.02528326173 0.02409337131 -0.03410096486 0.002994830795 --0.004482235713 -0.00199293278 0.007909408325 0.002687981141 -0.007945015504 -0.007526274256 --0.01264569005 -0.009190216525 0.01705595729 -0.005647810173 -0.004926734474 -0.008598303258 --0.00679012622 0.01159701784 -0.002595654954 -0.0002378000919 -0.002080128091 -0.00435138244 -0.002805586388 0.003656278757 0.002672560081 0.00508897842 0.004709726901 -0.006863792977 -0.001168679812 0.001724854847 0.002430670765 0.0009766517097 -0.003278383116 0.0006834384949 --0.0004371692711 8.612667388e-05 0.00144925748 -0.0001161639155 -0.000649667009 -5.860668182e-05 --0.0005197930841 -0.001089662501 0.0007010743269 -ad : 1 1.950638213 -iw : 7 -0.08859888324 0.2139219946 0.1498124316 0.03709668951 -0.03314683781 -0.02929603248 --0.01295388927 0.006482452452 0.008949505444 0.005603823519 -0.003381364425 -0.001351728036 --0.00202070459 -0.03005026605 0.0401149638 0.1787052314 -0.07676247401 0.1024724327 --0.02039559621 -0.07490963705 0.09999902741 -0.1160535956 -0.03659404741 0.0488504456 --0.09532420167 -0.004665312274 0.006227859437 -0.02103142856 0.01145653592 -0.01529365906 -0.01710036932 0.01096455092 -0.01463689415 0.02847249622 0.002189325893 -0.002922594056 -0.004938334589 -0.00254666825 0.003399620638 -0.002003372881 -0.002833880549 0.003783028591 --0.008740225054 -0.001610585382 0.002150016715 -0.002532376362 0.0005851290329 -0.0007811055627 --0.0005533942619 0.001388469542 -0.001853507896 0.004746748097 0.09202310515 -0.0149519678 --0.05271339248 0.1681479314 0.0703686226 0.05238355382 -0.04337520604 0.002424164378 -0.1161412604 -0.003236086699 -0.001288292574 -0.05020554014 0.04763463321 0.02718027657 --0.0635888409 -0.03224184723 -0.03787159098 0.05857084321 -0.03365838956 -0.07818790193 --0.01992146181 -0.01569971462 0.02902664492 -0.02530769738 -0.03874850254 -0.005808281618 -0.002278886404 0.002085165367 -0.01139526769 -0.002783547176 0.006422654581 0.006940626664 --0.01110608247 0.007058370857 0.01482582867 0.006226231331 0.005933425683 -0.01002696449 -0.007308199406 0.01338528307 0.003628377414 0.001221834878 -0.003763404405 0.005568752509 -0.005023876701 -0.002933131284 -0.002325534758 0.004286745515 -0.003717975815 -0.00572249979 --0.00107668969 -0.001800681108 0.002454511334 -0.0008099970865 -0.003276597723 -0.00127749794 --6.68649822e-05 0.0009870685835 -0.002173520154 -0.001317666221 0.0003274021628 -0.0002036701928 --4.757216199e-05 0.0006863922883 6.350544626e-05 -ad : 2 1.709269535 -iw : 4 --0.0002748441824 -0.0007165493136 -0.0006160326821 -0.0002754584191 7.567452766e-06 8.339353173e-05 -9.156988526e-05 2.548752195e-05 -1.145430429e-05 -2.494929917e-05 -1.174610439e-05 -7.803036862e-06 -1.137371369e-05 -0.0002395831244 -4.689242281e-06 0.2632194228 -0.0006643442995 -1.300288318e-05 -0.1968632222 -0.0007472309434 -1.462518256e-05 0.09850607428 -0.0004962374219 -9.712610208e-06 -0.01273557013 -0.0002188942904 -4.284309941e-06 -0.003545656728 1.516586131e-05 2.968339204e-07 --0.0135644503 9.198337924e-05 1.800345296e-06 -0.002837781504 7.484625139e-05 1.464928748e-06 --0.002751077894 3.610826299e-05 7.067292153e-07 0.003852169422 -1.195389318e-05 -2.33967653e-07 --0.000845409021 -2.658905535e-05 -5.204144609e-07 0.002521002893 -9.566233261e-06 -1.872351635e-07 --0.001856162882 -5.23272665e-06 -1.024175768e-07 0.001134820612 -0.0004832289237 -4.49538975e-06 -0.2152167201 -0.0006073862375 0.004212330673 -0.0007916384417 -1.419401187e-05 0.2289485308 --0.0006462342771 0.004481096627 -0.0007940340467 -1.846365612e-05 0.1531317857 -0.0004323221645 -0.002997172884 -0.0006126038566 -1.73474183e-05 0.06198146538 -0.0001750849175 0.00121313264 --0.0003469679627 -1.077432678e-05 0.01792582689 -5.069429453e-05 0.000350853365 -9.968688987e-05 --4.051511789e-06 -0.01215399746 3.425809312e-05 -0.0002378841954 1.627349826e-05 1.54299885e-07 --0.007195078467 2.030604434e-05 -0.0001408257207 9.563632277e-05 2.794368688e-06 -0.008116108924 -2.293156468e-05 -0.0001588525954 5.322605199e-05 1.85938681e-06 0.0009893300689 -2.773313581e-06 -1.936366929e-05 1.869761956e-05 6.448349337e-07 0.0001965093829 -5.481075429e-07 3.846181191e-06 --6.188050693e-06 -4.00894292e-08 0.003072343666 -8.670550676e-06 6.013346664e-05 -1.889206656e-05 --7.044289349e-07 -0.001155906699 3.25493031e-06 -2.262399149e-05 -1.355073939e-05 -3.654651632e-07 -0.00170152349 -4.805348162e-06 3.330307971e-05 -ad : 3 2.100474535 -iw : 5 --3.063011411e-05 -7.001151081e-05 -4.154700663e-05 -3.746474417e-06 1.448857582e-05 7.902777747e-06 -5.397094389e-07 -3.948214212e-06 -2.026502956e-06 -4.788785161e-07 1.847051437e-06 4.023629618e-07 --7.841209627e-08 1.006279224e-05 3.087036588e-05 0.2421808542 2.427867459e-05 7.448147088e-05 -0.1423494015 2.124125789e-05 6.516336489e-05 0.04380621975 7.747586897e-06 2.376784061e-05 --0.01607771132 -1.531973703e-06 -4.699748098e-06 -0.009786095328 -4.065683549e-06 -1.247259564e-05 --0.006926147572 -2.348744487e-06 -7.205415744e-06 0.004787431261 5.535491989e-07 1.698163481e-06 --0.0002622268984 1.34387283e-06 4.122697253e-06 0.003109639169 4.961392331e-07 1.522042717e-06 --0.002584350353 -1.701213065e-07 -5.218936104e-07 0.001177838407 -2.757874028e-07 -8.460532446e-07 --0.001734578948 -2.74037682e-07 -8.406854977e-07 0.001757801056 -2.943955793e-05 -1.113842299e-05 --0.07434148854 -8.153018311e-05 -0.2280628374 -1.111579938e-05 -3.050407748e-05 -0.06471434399 --0.0001028893318 -0.1985289399 6.67851365e-06 -3.231802948e-05 -0.03168835306 -7.704217845e-05 --0.09721268504 1.294393708e-05 -2.031903295e-05 -0.002450344769 -3.329124973e-05 -0.007517102381 -5.024560493e-06 -4.983835762e-06 0.003094701577 -4.961906908e-06 0.009493843024 -9.031148675e-07 -4.909814057e-06 0.005036927036 1.189750712e-05 0.01545215053 -3.436122729e-06 4.846684609e-06 --0.0001120632253 7.337120235e-06 -0.000343784576 -1.266076571e-06 1.647141803e-06 -0.0002345170358 -2.323231085e-06 -0.0007194451125 -1.325436595e-07 -8.932223734e-07 -0.001509449971 -2.678613054e-06 --0.004630650395 1.478489094e-06 -1.68053364e-06 0.0006123951084 -2.046875674e-06 0.001878689393 -2.942641783e-07 -7.472643082e-07 -0.0004532959683 -1.539171782e-06 -0.001390609291 -1.271248683e-07 -7.097394704e-07 0.0007349578532 1.725779808e-06 0.002254684116 -4.074683e-07 2.772112815e-07 --0.0004278651971 5.430321014e-08 -0.001312593449 -ad : 4 0 -iw : 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0.3323408577 0 0 -0.3381829911 0 0 0.1941332719 0 0 -0.04638680834 0 0 -0.04028417335 0 0 --0.08462892004 0 0 -0.08958563666 0 0 --0.08083690751 0 0 -0.05951877109 0 0 --0.04132486996 0 0 -0.02364071707 0 0 --0.01300175494 0 0 -0.003849155413 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 -iw : 1 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0.2775418879 0 0 0 0 0.3405120677 -0 0 0 0 0.3362776137 0 -0 0 0 0.2791435086 0 0 -0 0 0.2353955451 0 0 0 -0 0.1851183885 0 0 0 0 -0.1526566016 0 0 0 0 0.1173755327 -0 0 0 0 0.09486198903 0 -0 0 0 0.06752677913 0 0 -0 0 0.05189252662 0 0 0 -0 0.03329269882 0 0 0 0 -0.02312125451 0 0 -iw : 2 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0.2775418879 0 0 0 -0 0.3405120677 0 0 0 0 -0.3362776137 0 0 0 0 0.2791435086 -0 0 0 0 0.2353955451 0 -0 0 0 0.1851183885 0 0 -0 0 0.1526566016 0 0 0 -0 0.1173755327 0 0 0 0 -0.09486198903 0 0 0 0 0.06752677913 -0 0 0 0 0.05189252662 0 -0 0 0 0.03329269882 0 0 -0 0 0.02312125451 -iw : 3 --0.1246276028 -0.36586141 -0.4376268693 -0.4231135336 -0.3565090714 -0.2974409008 --0.2377487477 -0.193381104 -0.1514250008 -0.1200356898 -0.08743554786 -0.06534687476 --0.04344417142 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 -0.1602388837 0 -0 -0.2775418879 0 -0.196594734 0 0 --0.3405120677 0 -0.1941499708 0 0 -0.3362776137 -0 -0.1611635798 0 0 -0.2791435086 0 --0.1359056813 0 0 -0.2353955451 0 -0.1068781514 -0 0 -0.1851183885 0 -0.08813633004 0 -0 -0.1526566016 0 -0.06776679537 0 0 --0.1173755327 0 -0.0547685949 0 0 -0.09486198903 -0 -0.03898660411 0 0 -0.06752677913 0 --0.02996016421 0 0 -0.05189252662 0 -0.01922154863 -0 0 -0.03329269882 0 -0.01334906251 0 -0 -0.02312125451 0 -iat : 1 -ad : 0 3.03052076 -iw : 6 --0.07574572706 -0.1046546044 0.02118348272 0.03253915354 -0.002271212197 -0.01532945449 -0.004214924901 0.003840799621 0.0003076687997 -0.003942519461 0.002035359528 4.139201069e-06 -0.0004763191414 0.08714335238 -0.03226389442 0.1232749227 0.1274494887 -0.04718681043 --0.05933516169 0.01574562271 -0.005829648446 -0.0283676256 -0.0364266411 0.01348657437 -0.01254076971 -0.01120377941 0.004148079527 0.01742395664 0.01491087275 -0.005520591198 --0.0122600532 0.00395852367 -0.001465601061 -0.001042973521 -0.005040162252 0.001866066181 --3.328432979e-05 -0.003295469968 0.001220112518 0.005516147841 0.003257530791 -0.001206065944 --0.004429285397 0.0007097319464 -0.0002627706642 0.00140191964 -0.0004260006189 0.000157722174 --0.001713450828 -0.001206437522 0.0004466705924 0.002752022746 -0.1219734059 0.04066494441 --0.1210483081 -0.11648568 0.04481684174 -0.1013589183 0.068211178 0.05747209051 --0.01657787951 -0.02127842698 -0.02188992492 0.02293603287 0.05009106802 0.01554292769 --0.01854568232 0.02480756478 -0.01506213042 -0.006569178465 0.007862407008 0.002432168085 -0.008515689721 -0.01041031429 -0.02631839828 -0.009513883831 0.009744105548 -0.006020546671 -0.005305997018 0.009174191647 0.001938881973 -0.00339664636 -0.005999151937 0.004496033557 -0.005508580869 8.814355065e-05 -0.002039493165 0.004105245511 -0.002073391676 0.0008377463125 -0.002278005652 -0.0003101666144 0.001404464345 -0.00235284678 -0.007260890809 -0.003051215164 -0.002688267184 -0.0006059100555 0.00123795717 0.004156091623 0.001835860178 -0.001538748484 --0.001904326467 0.0009366283474 -0.0005041949139 -0.00111537507 0.0001866727757 0.001512836502 --0.0005594815915 0.001248261427 0.001316316719 -0.000462155446 -0.0001515693903 -0.0005329256838 --0.00282983558 -0.001504624559 0.001047716365 -ad : 1 2.994710688 -iw : 7 -0.07467809645 0.1059235929 -0.01768155914 -0.03317436361 0.0002965816861 0.01546320753 --0.002957674633 -0.003964442285 -0.0009786094851 0.003908906063 -0.001582097496 -6.445994205e-06 --0.0006651266567 -0.08568422954 0.03096893175 0.1276628766 -0.128544398 0.0464599228 --0.0550517457 -0.02009797173 0.007264028845 -0.03062601507 0.03579320796 -0.01293677285 -0.01069047291 0.01344620198 -0.004859873442 0.01846592644 -0.01425089975 0.005150716115 --0.01123757457 -0.005299817191 0.001915517917 -0.001773874753 0.004689629624 -0.00169497725 --0.0004633370163 0.004025879612 -0.001455077458 0.005869319725 -0.003017513639 0.001090622796 --0.004142438625 -0.001190454948 0.0004302672528 0.00111219122 0.0003790964797 -0.0001370171976 --0.001761319689 0.001452529735 -0.0005249891897 0.002867193374 0.1213071027 -0.03892980974 --0.1257770453 0.1164702733 0.0454597159 0.1043176302 -0.06692177829 0.05120160107 -0.01971318078 -0.01850584288 0.02551549962 -0.0245723456 0.05161440619 -0.01491093341 --0.01865504342 -0.02410956974 0.01364176539 -0.00313740057 -0.008945788431 0.001133953642 --0.01002593594 0.01100786323 -0.02672595544 0.009112326047 0.009659587237 0.00531047067 --0.004348730678 0.007094991087 -0.001262211428 -0.002564349309 0.006623681577 -0.004773420242 -0.005748899239 -9.190176754e-06 -0.002077830065 -0.003576676026 0.001512766933 0.001969505692 --0.002556251664 -0.0007118402964 -0.001696317262 0.002434765654 -0.007248939292 0.002918354262 -0.002619990953 0.000313357692 -0.0008886505452 0.00343036852 -0.001594763554 -0.001239841324 -0.001982940359 -0.0009616509622 -0.0005060024549 0.001121446948 0.0001828849437 -0.001351647923 -0.0003995546752 0.001564491708 -0.001380054304 -0.0005654557109 0.0001749915244 0.0004643792117 --0.002661822604 0.001420088439 0.0009620650498 -ad : 2 1.709269535 -iw : 0 -0.0002888000535 0.0007714143653 0.000504973398 0.0001259331185 -6.123153103e-06 5.221997674e-05 -6.622629321e-05 3.539623431e-05 -1.733189254e-05 -2.227048259e-05 -1.6805543e-05 1.443592877e-06 --2.711861366e-07 -0.000265585721 -5.198178274e-06 0.2821672255 -0.0006546277463 -1.281270588e-05 -0.1984706439 -0.000487069514 -9.533171271e-06 0.06322568972 -0.000116933663 -2.28868489e-06 -0.001631701036 5.742123506e-05 1.123877501e-06 0.004212045417 -7.917979609e-06 -1.549747081e-07 -0.005269299781 -8.756556566e-05 -1.713877611e-06 0.006862262965 -9.258826783e-05 -1.812184482e-06 --0.0009712618494 -3.19123561e-05 -6.246047999e-07 -0.0003957730926 8.863033531e-06 1.734717822e-07 --0.00258840901 2.002701631e-05 3.919789086e-07 0.0006913382303 7.048027849e-06 1.379475715e-07 --0.0009166331491 2.234667978e-06 4.373805372e-08 0.001002076374 0.0005287882757 5.034592563e-06 --0.2334191687 0.0006587589122 -0.004568598217 0.0006744770053 1.20167614e-05 -0.196450226 -0.0005545023495 -0.003845023343 0.0003851100901 8.94581468e-06 -0.07443508516 0.0002101450883 --0.001456881195 -2.994269509e-06 3.337452399e-08 0.002441914851 -6.890747424e-06 4.779439452e-05 --0.0001597953747 -5.176559489e-06 0.004373545928 -1.239385368e-05 8.560125649e-05 -9.604126246e-05 --3.528109063e-06 -0.004917174991 1.384101728e-05 -9.62414399e-05 3.701104983e-05 5.438651629e-07 --0.01287138388 3.632846316e-05 -0.0002519252459 9.07916729e-05 2.796184383e-06 -0.005109754036 -1.444765288e-05 -0.0001000106945 6.552015049e-05 2.112045011e-06 -0.001982886746 5.616802736e-06 --3.881006389e-05 1.644144041e-05 7.027185287e-07 0.002629060109 -7.412184579e-06 5.145729631e-05 --6.047543295e-06 -2.04907542e-07 2.644957698e-06 -9.511031078e-09 5.176845196e-08 -8.480827358e-06 --2.193160529e-07 0.001235299252 -3.488203929e-06 2.417790274e-05 -4.737482778e-07 -6.619658221e-08 --0.0009074881165 2.560269109e-06 -1.776181714e-05 -iw : 1 -5.956227599e-05 0.0005120275937 0.001040185917 0.001073908626 0.0006700026133 0.0001696828815 --0.0001481935734 -0.0002258855454 -0.0001371944868 -1.67922329e-05 5.196996141e-05 5.071324857e-05 -2.098530938e-05 0.0002008521442 -1.32946208e-06 0.09524333562 0.0001632344723 -9.240087698e-06 -0.2251333263 -0.0004240353887 -2.055001158e-05 0.2217928056 -0.0009233698176 -2.593020879e-05 -0.1422565802 -0.0009808218304 -2.202935694e-05 0.05127389271 -0.0006321524921 -1.234379409e-05 --0.0005270800505 -0.0001839418401 -2.465903772e-06 -0.02053677816 0.0001381848204 3.530064567e-06 --0.01494409213 0.0002212030975 4.671198765e-06 -0.006185826323 0.000144564097 2.698154886e-06 -0.002378022501 2.157967726e-05 2.639114976e-07 0.002868890464 -4.044710812e-05 -9.346440915e-07 -0.002588761779 -4.506704346e-05 -8.716418671e-07 -0.0001889954759 -9.797644809e-05 -3.321159582e-06 -0.1422853094 0.0002476796401 -0.001717723245 -7.454600474e-05 -2.525196807e-06 -0.0250131424 -0.0006401622433 -0.004439273298 0.0002687345966 9.11505203e-06 -0.1507618597 0.0007874827572 --0.005460036498 0.0006890593854 2.336658769e-05 -0.187239457 0.0006562845574 -0.004549277211 -0.0008995402788 3.050236313e-05 -0.1228393777 0.0003838154653 -0.002659391396 0.000786124476 -2.665580995e-05 -0.05688480101 0.0001379318413 -0.0009546188503 0.0004506376954 1.527979922e-05 -0.002756625035 -1.721019837e-05 0.0001203997206 9.014421364e-05 3.05629356e-06 0.01748034096 --6.470973511e-05 0.0004489305891 -0.0001318923216 -4.472293547e-06 0.0201316716 -5.16860708e-05 -0.0003580986364 -0.0001710848797 -5.801067227e-06 0.004364840222 -1.588074658e-05 0.0001097205364 --9.731797128e-05 -3.299761671e-06 0.0008044164366 4.488236553e-06 -3.135151062e-05 -1.271503483e-05 --4.310902603e-07 -0.005262652202 1.084243777e-05 -7.521494015e-05 2.742831194e-05 9.300344461e-07 --0.0002275034616 4.811527305e-06 -3.330030845e-05 -iw : 2 -1.165783039e-06 1.002166345e-05 2.035904571e-05 2.101908365e-05 1.311363056e-05 3.321119316e-06 --2.900519692e-06 -4.421146326e-06 -2.685239998e-06 -3.28666089e-07 1.017182412e-06 9.925853918e-07 -4.10735106e-07 -1.32946208e-06 0.0002687511013 0.001864150814 -9.240087698e-06 0.0006351488864 -0.004406423512 -2.055001158e-05 0.0006255051557 0.004341041149 -2.593020879e-05 0.0004009508692 -0.002784317852 -2.202935694e-05 0.0001442725858 0.001003558603 -1.234379409e-05 -1.724021338e-06 --1.031627776e-05 -2.465903772e-06 -5.800196041e-05 -0.0004019562259 3.530064567e-06 -4.210441556e-05 --0.0002924933416 4.671198765e-06 -1.736671916e-05 -0.0001210721265 2.698154886e-06 6.762571283e-06 -4.654386107e-05 2.639114976e-07 8.101056302e-06 5.61513775e-05 -9.346440915e-07 7.287505798e-06 -5.066855698e-05 -8.716418671e-07 -5.501108936e-07 -3.699115197e-06 6.478341931e-06 -0.0002476351417 --0.001717723245 2.862595107e-10 0.2300137364 2.023956699e-05 -0.0006398706148 -0.004439273298 -1.876110617e-09 0.20171166 3.194796105e-05 -0.0007867677447 -0.005460036498 4.600065238e-09 -0.1280958751 3.572328009e-05 -0.0006552289308 -0.004549277211 6.791763562e-09 0.04510352061 -3.060547323e-05 -0.0003827072607 -0.002659391396 7.130329455e-09 0.01298239949 2.005285876e-05 --0.0001370760786 -0.0009546188503 5.50594376e-09 -0.008130026156 8.231821347e-06 1.764574725e-05 -0.0001203997206 2.801465317e-09 -0.003392490151 -4.299253042e-07 6.476175657e-05 0.0004489305891 -3.326904311e-10 -0.00544766826 -4.331862543e-06 5.152600406e-05 0.0003580986364 -1.032506416e-09 -0.001842677631 -3.884935164e-06 1.570240685e-05 0.0001097205364 -1.149633491e-09 -0.001238862289 --1.751557028e-06 -4.581939074e-06 -3.135151062e-05 -6.037942095e-10 0.002405616582 1.187700582e-07 --1.084879398e-05 -7.521494015e-05 -4.057456955e-11 -0.001421236886 6.996193739e-07 -4.781603272e-06 --3.330030845e-05 1.934056985e-10 0.001473226668 -iw : 3 --0.1137996457 -0.2633554542 -0.1906752683 -0.08089322496 0.001928414057 0.02085481389 -0.02047473704 0.004124868154 -0.0006263270024 -0.005657815626 -0.00105641187 -0.001485710919 -0.001764248956 0.09524333562 0.001864150814 0.0008063308243 0.2251333263 0.004406423512 -0.001905985459 0.2217928056 0.004341041149 0.001877713803 0.1422565802 0.002784317852 -0.001204364741 0.05127389271 0.001003558603 0.0004341024481 -0.0005270800505 -1.031627776e-05 --4.452238453e-06 -0.02053677816 -0.0004019562259 -0.0001738622206 -0.01494409213 -0.0002924933416 --0.0001265193647 -0.006185826323 -0.0001210721265 -5.2372836e-05 0.002378022501 4.654386107e-05 -2.013021718e-05 0.002868890464 5.61513775e-05 2.428779451e-05 0.002588761779 5.066855698e-05 -2.191714478e-05 -0.0001889954759 -3.699115197e-06 -1.599386042e-06 -0.1834770342 -0.001717723245 --0.0007429944218 -0.2300631182 -1.454226322e-05 -0.2474315895 -0.004439273298 -0.001920195101 --0.2018392821 -3.758303127e-05 -0.2350454014 -0.005460036498 -0.002361733259 -0.1282528426 --4.622503977e-05 -0.160259319 -0.004549277211 -0.001967798046 -0.04523430519 -3.851474021e-05 --0.08595627179 -0.002659391396 -0.001150338191 -0.0130588528 -2.251500183e-05 -0.02347055426 --0.0009546188503 -0.0004129397613 0.008102582388 -8.082266198e-06 0.005510846805 0.0001203997206 -5.206614398e-05 0.003395951472 1.019064946e-06 0.01639015634 0.0004489305891 0.0001941812268 -0.005460574316 3.80061334e-06 0.009501228852 0.0003580986364 0.0001548981456 -0.00183238286 -3.031744976e-06 0.003952377758 0.0001097205364 4.746390001e-05 0.001242016576 9.289874956e-07 --0.002313857088 -3.135151062e-05 -1.355841218e-05 -0.002406517892 -2.653721117e-07 -0.00139853908 --7.521494015e-05 -3.253366952e-05 0.001419074573 -6.36765461e-07 -0.001833037527 -3.330030845e-05 --1.440465788e-05 -0.001474183999 -2.819352613e-07 -ad : 3 3.113220902 -iw : 5 -0.0001931541906 0.0002504519297 -7.174262165e-05 -7.50019237e-05 1.631233189e-05 3.565580792e-05 --1.713299154e-05 -7.623082849e-06 2.615907022e-06 9.134458682e-06 -7.246916316e-06 5.596019145e-07 --4.892352461e-07 -0.0002182388386 -0.0001877756196 0.1775057829 -0.000300200376 -0.000258296424 -0.02022189911 -1.392058762e-05 -1.197746002e-05 -0.01823740958 8.915310574e-05 7.670852618e-05 --0.01014838219 1.414062118e-05 1.216677984e-05 0.01027200461 -3.781114694e-05 -3.253321722e-05 --0.00299236952 -1.530981675e-06 -1.317277137e-06 0.001527990951 1.270844143e-05 1.09345132e-05 --0.003164468747 3.416613591e-06 2.939700091e-06 0.003403523095 -8.287213418e-06 -7.130429413e-06 --0.002406518846 1.369674462e-06 1.17848625e-06 0.001883632824 7.696192824e-07 6.621907379e-07 --0.001980850804 1.291357401e-06 1.111101203e-06 0.00197917443 0.0002930972596 0.0002324076561 --0.1870568273 0.0004375143843 -0.1609461994 0.0002145376786 0.0003675266402 -0.05683277072 -0.0002606637714 -0.04889967707 2.966527561e-05 9.698303242e-05 0.01086906928 2.211047834e-05 -0.009351892771 -5.859306139e-05 -9.327590208e-05 0.01840231707 -7.333375408e-05 0.01583360006 --9.958309574e-06 -4.447244525e-05 -0.008482876927 -3.825685528e-06 -0.007298780916 1.550668361e-05 -3.759742841e-05 0.0003679709525 1.551075944e-05 0.0003166071356 9.829752605e-06 1.799178102e-05 --0.002136498129 1.159537619e-05 -0.001838271604 -1.126280742e-05 -1.630552093e-05 0.004196160037 --1.458644466e-05 0.003610432294 -7.866412112e-07 -9.779853743e-06 -0.003212439599 1.589239538e-06 --0.002764026054 1.929298749e-06 9.725376444e-06 0.002093514627 4.063436364e-07 0.001801288023 -3.652873879e-06 3.521974999e-06 -0.002077545438 5.263965474e-06 -0.001787547919 -3.929428997e-06 --4.008177749e-06 0.002145763097 -5.59622794e-06 0.001846243306 7.106014596e-07 -3.030754058e-06 --0.001911626241 2.145535877e-06 -0.00164478882 -ad : 4 0 -iw : 4 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0.3077382577 0 0 -0.340113108 0 0 0.2965292449 0 0 -0.2106036639 0 0 0.1684140928 0 0 -0.1131428086 0 0 0.1019205506 0 0 -0.06113809996 0 0 0.06480538679 0 0 -0.02956059757 0 0 0.04222106929 0 0 -0.008651775987 0 0 0.0303465245 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 -iat : 2 -ad : 0 3.347258395 -iw : 6 --0.07065428613 -0.07461049022 0.04061307087 0.01610725809 -0.01309680778 -0.006856549094 -0.009745430757 -0.001421031406 -0.001818076404 -0.00115058904 0.002790171766 -0.00162755071 -0.0008379941022 0.0009916598011 -0.09697804215 0.1069492014 0.001121449923 -0.1096706933 --0.06150397901 -0.0002071441917 0.02025738881 -0.005545005264 -0.000316422024 0.03094406806 -0.01317979306 8.381279498e-05 -0.008196360037 0.005413741405 0.0001232106909 -0.01204922451 --0.01223801867 -8.008016464e-05 0.007831332452 0.0065942467 -1.891286057e-05 0.00184955787 --0.001446889319 2.945927146e-05 -0.002880929999 0.001610349699 1.519084075e-05 -0.001485567926 --0.003699465003 -3.256621347e-05 0.003184769231 0.004038139762 1.090893222e-05 -0.001066824417 --0.00263277426 4.374788257e-06 -0.0004278265586 0.001712002143 -0.01196478119 0.001490706086 --0.001276226586 -0.1664899708 0.1248068698 0.0612232848 0.001955630667 0.0007407963829 --0.08518644461 -0.07244519015 0.009934048501 0.0001001108743 0.0002514213156 0.007417091546 --0.02458741084 -0.01751126895 -0.0005839400695 -0.0001970326984 0.02676925837 0.01926854886 --0.004980007656 -2.096411745e-05 -0.00014369298 -0.006575682864 0.01405226254 0.01070203231 -0.00024717802 0.0001866874179 -0.005633452174 -0.01825684601 -0.002013047359 -3.637311554e-05 --4.123010109e-05 6.998787927e-05 0.004032042518 -0.002176763485 -8.870531914e-05 -1.475532445e-05 -0.004903645867 0.001442977193 -0.0007459821378 1.771827381e-05 -3.412566648e-05 -0.003024632642 -0.00333727385 0.002731200134 4.234706807e-05 6.016903156e-05 0.0005897356153 -0.005884149859 --0.001709840658 -2.333673093e-05 -3.958584239e-05 -0.0006795851772 0.003871244441 0.000831847141 -1.383279108e-06 2.528192774e-05 0.001305539729 -0.002472412264 -0.0008738740814 -1.230657623e-06 --2.669365406e-05 -0.001393256379 0.002610470149 -ad : 1 3.303653192 -iw : 7 -0.06949993455 0.07650151067 -0.03775747449 -0.01817903504 0.01203705989 0.008063426606 --0.009345745778 0.0005230707761 0.001955054846 0.001568792632 -0.002943153326 0.001329764494 --0.0005817366865 -0.0005862482916 0.094871103 0.1120596393 -0.0006895578105 0.1115894255 --0.0580403052 9.653598589e-05 -0.01562217851 -0.008871600166 0.0002002018939 -0.03239817458 -0.01269330402 -3.604286736e-05 0.005832727584 0.007022843851 -8.101694112e-05 0.01311077009 --0.01231504185 4.013999316e-05 -0.006495755263 0.005553602758 1.728174099e-05 -0.002796661164 --0.001013072476 -1.457669659e-05 0.002358910556 0.002009989268 -1.23299459e-05 0.001995324479 --0.003912933465 1.81304628e-05 -0.002934007704 0.003772163737 -4.715928016e-06 0.0007631669021 --0.002425505444 -2.819160351e-06 0.0004562177082 0.001714541089 0.01354075547 -0.0008764727263 --0.0008100372401 0.1652852618 0.131086312 -0.0597403149 -0.00119354734 0.0004075994811 -0.08966816149 -0.0659608103 -0.01259743929 -0.0001095728959 0.0001748654118 -0.004088172775 --0.02829803469 0.01688824417 0.0003530616333 -0.0001054325641 -0.02788160737 0.01706188962 -0.00642398067 3.893749438e-05 -9.976943756e-05 0.004825743642 0.01614543995 -0.01050224355 --0.0001519680464 0.0001078540145 0.006401252508 -0.01745374692 0.0009974294301 6.186853146e-06 --1.54025366e-05 0.0007264336234 0.002492554191 0.002438404141 5.933690732e-05 -9.99207761e-06 --0.00537853761 0.001616993069 0.001212619179 -2.717701592e-06 -2.513204017e-05 0.002540100123 -0.004067055557 -0.002948477101 -3.060876872e-05 3.782277703e-05 -0.0001537603716 -0.006120765939 -0.001381428109 9.519710406e-06 -2.073732204e-05 0.000852211439 0.003355869251 -0.0005382551535 -3.663615608e-06 1.269302632e-05 -0.001525136437 -0.002054080881 0.0009796627663 2.891456218e-06 --1.712107546e-05 0.001228926384 0.00277066106 -ad : 2 2.100474535 -iw : 0 -3.22436861e-05 7.523511528e-05 3.411818674e-05 1.996124846e-06 -3.711188426e-07 5.006636667e-06 --4.301020735e-07 -3.504412238e-06 -3.245572511e-06 5.909249262e-07 7.919795643e-07 7.832743632e-07 --3.400273589e-07 1.108811651e-05 3.401582835e-05 0.2589191554 2.403698354e-05 7.374001751e-05 -0.1446273351 1.369814651e-05 4.20228088e-05 0.02773651296 1.992690949e-06 6.113124188e-06 --0.00534594438 2.576206841e-07 7.903218691e-07 0.006002169779 3.01735657e-06 9.256566075e-06 -0.0005411737197 1.947679983e-06 5.975040746e-06 -2.179728749e-05 -3.863620592e-07 -1.185271229e-06 --0.004459986862 -1.521404859e-06 -4.667325281e-06 0.0007704518928 -5.104798077e-07 -1.56603635e-06 --0.0008364477161 4.58316551e-08 1.406011301e-07 0.001712047696 3.167349011e-07 9.716708886e-07 --0.001095108048 -3.801126488e-08 -1.166099454e-07 0.001026855849 3.162730669e-05 1.235373846e-05 -0.08040610683 8.865163197e-05 0.2466677117 9.770357359e-06 2.598111444e-05 0.05572377487 -8.815787957e-05 0.1709479115 -3.056337364e-06 1.551026813e-05 0.01550548889 3.723238404e-05 -0.04756732561 -5.754643058e-07 1.083288426e-07 -0.0009988484728 -6.997169585e-07 -0.003064240726 -3.129244218e-06 -2.296069819e-06 0.003052959562 -8.753635042e-07 0.009365787984 -1.374850284e-06 -3.759372841e-06 0.00249135087 7.926153054e-06 0.007642899806 -3.071566117e-06 5.430720676e-06 -0.001430132657 9.569863251e-06 0.004387322854 -2.241667791e-06 2.041675829e-06 -0.001634030219 -1.715192503e-06 -0.00501283436 7.327604253e-07 -1.285906419e-06 -0.0003277159919 -2.256525114e-06 --0.001005358386 6.953401844e-07 -1.424132281e-06 -0.0005950878599 -2.700327096e-06 -0.001825594678 -5.65035097e-07 -3.826907002e-07 0.0005957124141 -7.05934074e-08 0.001827510668 -2.869777739e-07 -1.825718325e-07 -0.0003189929657 3.516100708e-09 -0.000978598119 1.554943262e-07 4.148830436e-08 -0.0003684924572 3.830768734e-07 0.00113045134 -iw : 1 --2.590077213e-06 -2.011397511e-05 -3.395350071e-05 -2.407777794e-05 -4.161593217e-06 8.135053132e-06 -7.694918102e-06 1.623208164e-06 -2.80084949e-06 -2.575363061e-06 -4.575670723e-07 9.834561158e-07 -6.746915588e-07 2.836980426e-05 -3.373160216e-06 -0.03399475289 5.430665736e-05 -2.123746261e-05 --0.07063198874 3.331825455e-05 -3.986283013e-05 -0.05342416665 4.714110716e-06 -3.778456062e-05 --0.01964600121 -9.429246287e-06 -1.795222442e-05 0.004126731438 -6.198525936e-06 2.067082427e-06 -0.007927678954 -3.4714469e-07 1.013049876e-05 0.004209796378 3.086272315e-06 6.654202173e-06 --0.001058054181 1.432560767e-06 -7.807636289e-08 -0.00168191616 -1.031578231e-07 -3.325428686e-06 --0.001131458498 -1.091206275e-06 -2.116827788e-06 0.0004627909779 -2.102203394e-07 2.52041377e-08 -0.0002519844686 2.336969959e-09 9.383936879e-07 0.0003501694726 6.891999491e-06 2.977618078e-05 -0.1967910454 -1.241144367e-05 -0.03602665792 1.936561628e-05 6.250300781e-05 0.122780158 --3.634062333e-05 -0.08200430354 2.576314621e-05 5.226796614e-05 0.04363615531 -5.048528849e-05 --0.08103998885 2.206995781e-05 1.934124262e-05 -0.01129765079 -4.501001685e-05 -0.04631807005 -1.171787605e-05 -6.379201365e-06 -0.007796247402 -2.505098912e-05 -0.009468631167 1.657132061e-06 --1.12630574e-05 -0.006956957678 -4.260406305e-06 0.008073004945 -3.724731039e-06 -4.811276739e-06 -0.004746492532 7.489150824e-06 0.00922247406 -3.71182242e-06 2.429805703e-06 -0.0003773021552 -7.963643246e-06 0.002627726553 -1.161567938e-06 3.403647893e-06 0.0027794621 2.675222183e-06 --0.001578888582 8.626232807e-07 1.285215881e-06 -0.002637178032 -1.72260083e-06 -0.00229117358 -1.089199342e-06 -1.005919802e-06 0.00144526619 -2.357150483e-06 -0.0005049980121 3.651234667e-07 --8.311132182e-07 -0.001779336675 -8.243796259e-07 0.0002793927734 -1.86418409e-07 -3.148970075e-07 -0.001725883236 3.696928515e-07 0.0005288912016 -iw : 2 --7.94576985e-06 -6.170511681e-05 -0.0001041616446 -7.38651655e-05 -1.276682477e-05 2.49564992e-05 -2.360626469e-05 4.979634747e-06 -8.592371425e-06 -7.900630165e-06 -1.40371207e-06 3.017020463e-06 -2.069800784e-06 -3.373160216e-06 1.912125999e-05 -0.104288197 -2.123746261e-05 -3.922303169e-06 --0.2166829327 -3.986283013e-05 -7.597781366e-05 -0.1638932347 -3.778456062e-05 -9.888374978e-05 --0.06026947895 -1.795222442e-05 -5.865072752e-05 0.01265987673 2.067082427e-06 -5.309910108e-07 -0.02432032222 1.013049876e-05 2.74286976e-05 0.01291470114 6.654202173e-06 2.133079064e-05 --0.003245870421 -7.807636289e-08 1.218490681e-06 -0.005159737573 -3.325428686e-06 -9.220831589e-06 --0.003471058226 -2.116827788e-06 -6.895133231e-06 0.001419737829 2.52041377e-08 -1.411155331e-07 -0.0007730312374 9.383936879e-07 2.575228563e-06 0.001074240576 -3.295018421e-05 5.717928935e-06 --0.03602665792 -6.844728353e-06 0.09801300965 -6.371843787e-05 -3.163878207e-06 -0.08200430354 --4.039695074e-05 -0.1020595717 -4.264437489e-05 -3.227068166e-05 -0.08103998885 -8.462551791e-05 --0.1785596126 -1.84000544e-06 -5.075488874e-05 -0.04631807005 -9.792833978e-05 -0.1382927218 -2.17308158e-05 -4.20751448e-05 -0.009468631167 -6.864258418e-05 -0.03375737847 1.720512877e-05 --1.536452116e-05 0.008073004945 -2.006826787e-05 0.0151776398 2.420696834e-06 7.160153764e-06 -0.00922247406 1.498025908e-05 0.03003270906 -7.441565456e-06 1.369968959e-05 0.002627726553 -2.215273756e-05 0.006827409093 -5.934086655e-06 6.688910672e-06 -0.001578888582 9.575676216e-06 --0.001549540973 -7.937985e-07 -1.502912327e-06 -0.00229117358 -3.298388237e-06 -0.008919126983 -2.58318429e-06 -4.286201706e-06 -0.0005049980121 -6.79343774e-06 6.066060593e-05 1.539615211e-06 --1.885607643e-06 0.0002793927734 -2.771207806e-06 -0.001013296444 2.222221205e-07 2.910310772e-07 -0.0005288912016 6.756533618e-07 0.003175999263 -iw : 3 --0.1084821333 -0.2198470655 -0.1096944515 -0.009701961142 0.03285279095 0.01580360688 -0.00254054219 -0.008460679041 -0.002225041253 -0.001270307707 0.003085175215 -0.0004295621219 -0.001021341479 -0.03399475289 -0.104288197 8.840805213e-05 -0.07063198874 -0.2166829327 -0.0001836882524 -0.05342416665 -0.1638932347 0.0001389369405 -0.01964600121 -0.06026947895 -5.109215409e-05 0.004126731438 0.01265987673 -1.07321242e-05 0.007927678954 0.02432032222 --2.061701466e-05 0.004209796378 0.01291470114 -1.094815029e-05 -0.001058054181 -0.003245870421 -2.751615608e-06 -0.00168191616 -0.005159737573 4.374048145e-06 -0.001131458498 -0.003471058226 -2.942506798e-06 0.0004627909779 0.001419737829 -1.203552744e-06 0.0002519844686 0.0007730312374 --6.553163986e-07 0.0003501694726 0.001074240576 -9.106602017e-07 -0.09527283581 -0.03602665792 -3.054081628e-05 -0.263795428 9.369230229e-05 -0.02913112807 -0.08200430354 6.951736845e-05 --0.2752963237 0.0002132635303 0.01607166078 -0.08103998885 6.869989531e-05 -0.1943588348 -0.000210755708 0.03010754548 -0.04631807005 3.926514496e-05 -0.07484727257 0.0001204565653 -0.009322527619 -0.009468631167 8.026833454e-06 -0.009814039582 2.462450576e-05 -9.411738932e-05 -0.008073004945 -6.843708549e-06 0.02197158138 -2.09949467e-05 -0.007436409312 0.00922247406 --7.818147884e-06 0.01240597777 -2.398430573e-05 -0.001120184847 0.002627726553 -2.227596899e-06 -0.00526449418 -6.833762402e-06 -0.0008007639492 -0.001578888582 1.338466305e-06 -0.005715966918 -4.10611126e-06 0.002689225328 -0.00229117358 1.942289332e-06 -0.001624074051 5.958503451e-06 --0.0005772832977 -0.0005049980121 4.280992604e-07 -0.002384489586 1.313311502e-06 0.0008850356236 -0.0002793927734 -2.36848391e-07 0.002298966898 -7.265971819e-07 -0.001265746925 0.0005288912016 --4.483546258e-07 -0.0007422219567 -1.375450373e-06 -ad : 3 3.113220902 -iw : 4 --0.0001931541906 -0.0002504519297 7.174262165e-05 7.50019237e-05 -1.631233189e-05 -3.565580792e-05 -1.713299154e-05 7.623082849e-06 -2.615907022e-06 -9.134458682e-06 7.246916316e-06 -5.596019145e-07 -4.892352461e-07 -0.0002182388386 -0.0001877756196 0.1775057829 -0.000300200376 -0.000258296424 -0.02022189911 -1.392058762e-05 -1.197746002e-05 -0.01823740958 8.915310574e-05 7.670852618e-05 --0.01014838219 1.414062118e-05 1.216677984e-05 0.01027200461 -3.781114694e-05 -3.253321722e-05 --0.00299236952 -1.530981675e-06 -1.317277137e-06 0.001527990951 1.270844143e-05 1.09345132e-05 --0.003164468747 3.416613591e-06 2.939700091e-06 0.003403523095 -8.287213418e-06 -7.130429413e-06 --0.002406518846 1.369674462e-06 1.17848625e-06 0.001883632824 7.696192824e-07 6.621907379e-07 --0.001980850804 1.291357401e-06 1.111101203e-06 0.00197917443 -0.0002930972596 -0.0002324076561 -0.1870568273 -0.0004375143843 0.1609461994 -0.0002145376786 -0.0003675266402 0.05683277072 --0.0002606637714 0.04889967707 -2.966527561e-05 -9.698303242e-05 -0.01086906928 -2.211047834e-05 --0.009351892771 5.859306139e-05 9.327590208e-05 -0.01840231707 7.333375408e-05 -0.01583360006 -9.958309574e-06 4.447244525e-05 0.008482876927 3.825685528e-06 0.007298780916 -1.550668361e-05 --3.759742841e-05 -0.0003679709525 -1.551075944e-05 -0.0003166071356 -9.829752605e-06 -1.799178102e-05 -0.002136498129 -1.159537619e-05 0.001838271604 1.126280742e-05 1.630552093e-05 -0.004196160037 -1.458644466e-05 -0.003610432294 7.866412112e-07 9.779853743e-06 0.003212439599 -1.589239538e-06 -0.002764026054 -1.929298749e-06 -9.725376444e-06 -0.002093514627 -4.063436364e-07 -0.001801288023 --3.652873879e-06 -3.521974999e-06 0.002077545438 -5.263965474e-06 0.001787547919 3.929428997e-06 -4.008177749e-06 -0.002145763097 5.59622794e-06 -0.001846243306 -7.106014596e-07 3.030754058e-06 -0.001911626241 -2.145535877e-06 0.00164478882 -ad : 4 0 -iw : 5 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0.3077382577 0 0 -0.340113108 0 0 0.2965292449 0 0 -0.2106036639 0 0 0.1684140928 0 0 -0.1131428086 0 0 0.1019205506 0 0 -0.06113809996 0 0 0.06480538679 0 0 -0.02956059757 0 0 0.04222106929 0 0 -0.008651775987 0 0 0.0303465245 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 -iat : 3 -ad : 0 3.245352337 -iw : 7 -0.1428560236 0.1658084243 -0.07093535661 -0.04346031005 0.02171600979 0.02000505732 --0.01794566164 -0.001262811844 0.004000564281 0.004450568587 -0.006288348381 0.001941107719 --0.0006625150542 0.0008099741886 -0.001719194225 -0.05135696244 0.00100197792 -0.002126727836 --0.2635113407 -8.166283779e-05 0.0001733317939 0.004121384667 -0.0002978994102 0.0006323003286 -0.07422816981 2.177319216e-05 -4.621424577e-05 0.004517845403 0.0001246730711 -0.0002646222891 --0.03832476449 -3.940542585e-05 8.363918444e-05 0.01242204174 -3.380228945e-05 7.174636134e-05 -0.006474108339 1.245561399e-05 -2.643740991e-05 1.532201941e-05 2.276393546e-05 -4.831712779e-05 --0.008890980666 -2.095606631e-05 4.447987194e-05 0.007723706619 3.170725853e-06 -6.729959611e-06 --0.002840056541 2.855773666e-06 -6.061464258e-06 0.001209013884 0.03271660137 -1.067639247e-05 --0.000474119859 0.05668444674 0.001006333455 -0.1209859536 -1.525360502e-05 -0.001747382129 --0.2095286289 0.003708870365 -0.03357253225 -2.217173456e-06 -0.0003559735651 -0.05814567017 -0.0007555644439 0.03303438062 4.393976361e-06 0.0004917622012 0.05720996944 -0.001043779849 -0.01732460394 9.347590759e-07 0.0001703035248 0.03000555058 -0.0003614742796 -0.0208690064 --1.901102609e-06 -0.0002547187869 -0.03614303992 0.0005406481757 -0.0006577326792 -1.929725477e-07 --1.653782275e-05 -0.001138907745 3.510201901e-05 0.005328185386 7.982064894e-07 8.50410506e-05 -0.009227369647 -0.0001805021507 0.003881261042 1.09692004e-07 3.177537049e-05 0.006722360178 --6.744416578e-05 -0.006468567829 -4.414763845e-07 -6.950054465e-05 -0.01120315908 0.0001475169662 -0.001935830721 3.397269164e-08 1.45220725e-05 0.003352901061 -3.082352934e-05 -0.0004589769459 -1.111102728e-07 4.178313712e-06 -0.0007951548766 -8.86859471e-06 0.002346909075 7.362235327e-08 -1.968034414e-05 0.004064844179 -4.177211381e-05 -ad : 1 2.003222249 -iw : 0 -0.09519341052 0.23052239 0.1167700653 0.01338733054 -0.001177105763 0.01728628933 -0.004840634123 -0.007532522803 -0.01192277373 -0.001540702459 0.001275668192 0.002919215566 --0.0004977239628 0.03440835853 -0.04640849895 0.1818501693 0.07725078347 -0.1041925002 --0.0286364896 0.04756807428 -0.06415775176 -0.07925823963 0.008140313241 -0.0109793008 --0.02375543381 -0.000607047664 0.000818759513 0.007492709156 0.009109139412 -0.01228601145 --0.0198249656 0.008855359021 -0.01194372348 -0.02009973516 0.001716149352 -0.00231466768 --0.008573914119 -0.004098273219 0.005527572849 0.009878438846 -0.002715126729 0.003662044961 -0.005339115562 -0.0007265192376 0.0009798975805 0.003419784474 0.0008157229596 -0.001100211685 --0.002902899342 1.735723452e-05 -2.341068374e-05 0.0009768977961 0.09910747833 -0.01769791485 -0.05469317385 0.1824077139 -0.07376777648 0.04153599386 -0.03853825564 -0.005819858587 -0.0953480024 0.00784957239 -0.002779851911 -0.02449038179 -0.02461058836 0.01005896993 -0.03319369226 -0.001612979801 -0.0001516048289 -0.001296162727 -0.002701688366 0.001748207968 -0.01102267916 0.006124024444 0.01355664595 0.01537251879 -0.01828461502 0.0005988167576 --0.003167074193 -0.002495727523 0.002960649413 0.003366128844 -0.006909231391 -0.008679317147 --0.01296815372 -0.006695904929 0.01749088227 -0.00837942865 -0.005589710817 -0.01116855783 --0.01111878086 0.01506366553 -0.000387438508 0.0002423227069 -5.391063751e-05 -0.0008182337337 -7.271232546e-05 0.001246291259 0.00206308977 0.002798677246 0.0009056574821 -0.003774734267 -0.002118133589 0.00116079864 0.002590285103 0.002963723785 -0.003493664 -0.000436118665 -3.081828248e-06 -0.0003097540202 -0.0007572513815 0.0004177827637 0.0004965450071 -4.235723098e-05 -0.0003167935555 0.0008857661205 -0.0004272773831 -iw : 1 --0.007945536811 -0.06346265279 -0.1128077345 -0.08976553425 -0.02761623297 0.01929216947 -0.02779379482 0.01238651386 -0.004635258975 -0.009263113292 -0.004629790932 0.001214609349 -0.002529409848 0.08387447504 0.004792275253 -0.02759445742 0.1652259648 0.03096916525 --0.02239335926 0.1084516576 0.06095721959 0.0456273364 0.02151084715 0.06283399294 -0.08439280764 -0.02769920612 0.03647592104 0.06562156006 -0.02321035647 0.004522297057 -0.01631984866 -0.005210902794 -0.0133335208 -0.01764084738 0.008856287431 -0.0132060984 --0.02327312484 0.006608050778 -0.003961568389 -0.008616686676 0.001681596086 0.003381817098 -0.004325315458 -0.003158156409 0.004264740234 0.007639111401 -0.001551609591 0.001544399574 -0.002935194233 -0.0006774931742 -0.000751492539 -0.0008354161944 0.02093793313 -0.04061963359 -0.1282234022 -0.02849437969 0.01247214883 0.05910682516 -0.08765787282 -0.02552269271 --0.05513073329 0.009905263116 0.08026879221 -0.07722976259 -0.08763420284 -0.03569159276 --0.02571887209 0.07244947896 -0.03229553432 -0.06691788143 0.002838921499 -0.05826084173 -0.04375070473 0.006780896791 0.002911723185 0.02634170466 -0.05980539156 0.01282781257 -0.01792449384 0.02318030636 0.02265563321 -0.03246454824 -0.0073977545 0.01037962667 -0.02254832344 0.006345890386 -0.0006855461402 -0.0119804097 -0.001454585297 -0.002536672577 --0.006836280407 0.01599989494 -0.006693971063 -0.005541162917 -0.006502591924 -0.008250213899 -0.01336951233 0.0002716520131 -0.003508317569 -0.00865561009 -0.003163165627 0.002954765849 -0.002996817569 0.0004543893562 0.002104094019 0.00179485843 -0.004087083249 0.002097591588 -0.0014310236 0.0006146370045 0.002299145999 -0.003903371762 0.0001934508591 0.0009591287437 -0.003370726332 0.0009870758019 -0.001134881653 -iw : 2 -0.01071659482 0.08559566864 0.1521501707 0.1210718523 0.03724757511 -0.02602043993 --0.03748706282 -0.01670639171 0.006251835904 0.01249368473 0.006244460845 -0.001638212316 --0.0034115581 0.004792275253 0.0809639686 0.03721820519 0.03096916525 0.1464173717 -0.03020318998 0.06095721959 0.0714303324 -0.06154016884 0.06283399294 -0.01665030421 --0.1138253521 0.03647592104 -0.04985223315 -0.08850750896 0.004522297057 -0.02595689627 --0.02201150278 -0.0133335208 0.002886983108 0.02379320845 -0.0132060984 0.01687678551 -0.03138977957 -0.003961568389 0.00901404161 0.0116218126 0.003381817098 -0.0003722927105 --0.005833797555 0.004264740234 -0.005748273477 -0.01030330154 0.001544399574 -0.002489574268 --0.003958862447 -0.000751492539 -0.0002210870287 0.001126773064 0.04586663358 0.02880090296 -0.01247214883 -0.004353604332 0.1206486559 0.09491483776 0.05699425272 0.009905263116 --0.02646794726 -0.03153848491 0.07538926176 0.03976759764 -0.02571887209 -0.05789244746 --0.07201428558 0.02016976244 0.002222651244 -0.05826084173 -0.07189080016 -0.03153415527 --0.02145539515 -0.02231373563 -0.05980539156 -0.05721015919 0.03923350528 -0.02668481057 --0.02088561239 -0.03246454824 -0.02513953236 0.0428970947 -0.01112247971 -0.00660091746 --0.0006855461402 0.003623173534 0.02296467817 0.005360390854 0.005748226356 0.01599989494 -0.0154548593 -0.01225393523 0.009046143443 0.0074675063 0.01336951233 0.01111736513 --0.01462233667 0.004410338878 0.00305693501 0.002954765849 0.00150849325 -0.01045013661 --0.001456707276 -0.001519369574 -0.004087083249 -0.003913433423 0.004586314155 -0.002443911237 --0.002065180675 -0.003903371762 -0.003323400384 0.002985283109 -0.001283916299 -0.0009349231887 --0.001134881653 -0.0007406966756 0.004059977301 -iw : 3 --0.09069350553 -0.0776091963 0.143635839 0.1927047764 0.09605009167 -0.02682890829 --0.06002763541 -0.03686378082 0.007762261494 0.01956131066 0.01373889921 -0.002968990932 --0.004668057522 -0.02759445742 0.03721820519 0.2415355098 -0.02239335926 0.03020318998 -0.4304866873 0.0456273364 -0.06154016884 0.197037894 0.08439280764 -0.1138253521 --0.06773516599 0.06562156006 -0.08850750896 -0.1598807308 0.01631984866 -0.02201150278 --0.07915087098 -0.01764084738 0.02379320845 0.01243449352 -0.02327312484 0.03138977957 -0.05436792847 -0.008616686676 0.0116218126 0.0281634137 0.004325315458 -0.005833797555 --0.002073848485 0.007639111401 -0.01030330154 -0.01845171264 0.002935194233 -0.003958862447 --0.00790581555 -0.0008354161944 0.001126773064 -0.0004506437117 -0.02000747715 0.01247214883 -0.08578966233 -0.04222871332 -0.115709369 0.1267839798 0.009905263116 0.1672557193 -0.2135805024 -0.225587247 0.1401354543 -0.02571887209 0.1111507832 0.2583416441 --0.1499153468 0.0634192533 -0.05826084173 -0.003455191754 0.1452290951 0.00466021251 --0.02608119033 -0.05980539156 -0.07499714495 -0.008852164685 0.1011528905 -0.0444064062 --0.03246454824 -0.06619687882 -0.05719736338 0.0892834739 -0.02615627391 -0.0006855461402 --0.01929269823 -0.04488764062 0.02602115311 0.007543507929 0.01599989494 0.01942078717 -0.003348476352 -0.02619391391 0.01423298402 0.01336951233 0.0239679341 0.01653250672 --0.03232690811 0.01016358925 0.002954765849 0.009383266263 0.01580932644 -0.01265574183 --0.002870964392 -0.004087083249 -0.005109086434 -0.002490436058 0.006890913793 -0.003181078599 --0.003903371762 -0.006663472674 -0.003139143652 0.008987402416 -0.003445635237 -0.001134881653 --0.002909074793 -0.005278764326 0.003923633681 -ad : 2 3.03052076 -iw : 4 -0.07574572706 0.1046546044 -0.02118348272 -0.03253915354 0.002271212197 0.01532945449 --0.004214924901 -0.003840799621 -0.0003076687997 0.003942519461 -0.002035359528 -4.139201069e-06 --0.0004763191414 0.08714335238 -0.03226389442 0.1232749227 0.1274494887 -0.04718681043 --0.05933516169 0.01574562271 -0.005829648446 -0.0283676256 -0.0364266411 0.01348657437 -0.01254076971 -0.01120377941 0.004148079527 0.01742395664 0.01491087275 -0.005520591198 --0.0122600532 0.00395852367 -0.001465601061 -0.001042973521 -0.005040162252 0.001866066181 --3.328432979e-05 -0.003295469968 0.001220112518 0.005516147841 0.003257530791 -0.001206065944 --0.004429285397 0.0007097319464 -0.0002627706642 0.00140191964 -0.0004260006189 0.000157722174 --0.001713450828 -0.001206437522 0.0004466705924 0.002752022746 0.1219734059 -0.04066494441 -0.1210483081 0.11648568 -0.04481684174 0.1013589183 -0.068211178 -0.05747209051 -0.01657787951 0.02127842698 0.02188992492 -0.02293603287 -0.05009106802 -0.01554292769 -0.01854568232 -0.02480756478 0.01506213042 0.006569178465 -0.007862407008 -0.002432168085 --0.008515689721 0.01041031429 0.02631839828 0.009513883831 -0.009744105548 0.006020546671 --0.005305997018 -0.009174191647 -0.001938881973 0.00339664636 0.005999151937 -0.004496033557 --0.005508580869 -8.814355065e-05 0.002039493165 -0.004105245511 0.002073391676 -0.0008377463125 --0.002278005652 0.0003101666144 -0.001404464345 0.00235284678 0.007260890809 0.003051215164 --0.002688267184 0.0006059100555 -0.00123795717 -0.004156091623 -0.001835860178 0.001538748484 -0.001904326467 -0.0009366283474 0.0005041949139 0.00111537507 -0.0001866727757 -0.001512836502 -0.0005594815915 -0.001248261427 -0.001316316719 0.000462155446 0.0001515693903 0.0005329256838 -0.00282983558 0.001504624559 -0.001047716365 -ad : 3 3.347258395 -iw : 5 -0.07065428613 0.07461049022 -0.04061307087 -0.01610725809 0.01309680778 0.006856549094 --0.009745430757 0.001421031406 0.001818076404 0.00115058904 -0.002790171766 0.00162755071 --0.0008379941022 0.0009916598011 -0.09697804215 0.1069492014 0.001121449923 -0.1096706933 --0.06150397901 -0.0002071441917 0.02025738881 -0.005545005264 -0.000316422024 0.03094406806 -0.01317979306 8.381279498e-05 -0.008196360037 0.005413741405 0.0001232106909 -0.01204922451 --0.01223801867 -8.008016464e-05 0.007831332452 0.0065942467 -1.891286057e-05 0.00184955787 --0.001446889319 2.945927146e-05 -0.002880929999 0.001610349699 1.519084075e-05 -0.001485567926 --0.003699465003 -3.256621347e-05 0.003184769231 0.004038139762 1.090893222e-05 -0.001066824417 --0.00263277426 4.374788257e-06 -0.0004278265586 0.001712002143 0.01196478119 -0.001490706086 -0.001276226586 0.1664899708 -0.1248068698 -0.0612232848 -0.001955630667 -0.0007407963829 -0.08518644461 0.07244519015 -0.009934048501 -0.0001001108743 -0.0002514213156 -0.007417091546 -0.02458741084 0.01751126895 0.0005839400695 0.0001970326984 -0.02676925837 -0.01926854886 -0.004980007656 2.096411745e-05 0.00014369298 0.006575682864 -0.01405226254 -0.01070203231 --0.00024717802 -0.0001866874179 0.005633452174 0.01825684601 0.002013047359 3.637311554e-05 -4.123010109e-05 -6.998787927e-05 -0.004032042518 0.002176763485 8.870531914e-05 1.475532445e-05 --0.004903645867 -0.001442977193 0.0007459821378 -1.771827381e-05 3.412566648e-05 0.003024632642 --0.00333727385 -0.002731200134 -4.234706807e-05 -6.016903156e-05 -0.0005897356153 0.005884149859 -0.001709840658 2.333673093e-05 3.958584239e-05 0.0006795851772 -0.003871244441 -0.000831847141 --1.383279108e-06 -2.528192774e-05 -0.001305539729 0.002472412264 0.0008738740814 1.230657623e-06 -2.669365406e-05 0.001393256379 -0.002610470149 -ad : 4 0 -iw : 6 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0.3077382577 0 0 -0.340113108 0 0 0.2965292449 0 0 -0.2106036639 0 0 0.1684140928 0 0 -0.1131428086 0 0 0.1019205506 0 0 -0.06113809996 0 0 0.06480538679 0 0 -0.02956059757 0 0 0.04222106929 0 0 -0.008651775987 0 0 0.0303465245 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 -iat : 4 -ad : 0 3.245352337 -iw : 6 --0.1428560236 -0.1658084243 0.07093535661 0.04346031005 -0.02171600979 -0.02000505732 -0.01794566164 0.001262811844 -0.004000564281 -0.004450568587 0.006288348381 -0.001941107719 -0.0006625150542 0.0008099741886 -0.001719194225 -0.05135696244 0.00100197792 -0.002126727836 --0.2635113407 -8.166283779e-05 0.0001733317939 0.004121384667 -0.0002978994102 0.0006323003286 -0.07422816981 2.177319216e-05 -4.621424577e-05 0.004517845403 0.0001246730711 -0.0002646222891 --0.03832476449 -3.940542585e-05 8.363918444e-05 0.01242204174 -3.380228945e-05 7.174636134e-05 -0.006474108339 1.245561399e-05 -2.643740991e-05 1.532201941e-05 2.276393546e-05 -4.831712779e-05 --0.008890980666 -2.095606631e-05 4.447987194e-05 0.007723706619 3.170725853e-06 -6.729959611e-06 --0.002840056541 2.855773666e-06 -6.061464258e-06 0.001209013884 -0.03271660137 1.067639247e-05 -0.000474119859 -0.05668444674 -0.001006333455 0.1209859536 1.525360502e-05 0.001747382129 -0.2095286289 -0.003708870365 0.03357253225 2.217173456e-06 0.0003559735651 0.05814567017 --0.0007555644439 -0.03303438062 -4.393976361e-06 -0.0004917622012 -0.05720996944 0.001043779849 --0.01732460394 -9.347590759e-07 -0.0001703035248 -0.03000555058 0.0003614742796 0.0208690064 -1.901102609e-06 0.0002547187869 0.03614303992 -0.0005406481757 0.0006577326792 1.929725477e-07 -1.653782275e-05 0.001138907745 -3.510201901e-05 -0.005328185386 -7.982064894e-07 -8.50410506e-05 --0.009227369647 0.0001805021507 -0.003881261042 -1.09692004e-07 -3.177537049e-05 -0.006722360178 -6.744416578e-05 0.006468567829 4.414763845e-07 6.950054465e-05 0.01120315908 -0.0001475169662 --0.001935830721 -3.397269164e-08 -1.45220725e-05 -0.003352901061 3.082352934e-05 0.0004589769459 --1.111102728e-07 -4.178313712e-06 0.0007951548766 8.86859471e-06 -0.002346909075 -7.362235327e-08 --1.968034414e-05 -0.004064844179 4.177211381e-05 -ad : 1 1.950638213 -iw : 0 --0.09320332151 -0.2300487538 -0.1229389552 -0.01746787188 0.00123466909 -0.01784869558 --0.008122751426 0.005013160642 0.0121595491 0.003250270876 -0.0002748492381 -0.002918302775 -0.0002322122802 -0.03318412024 0.04429843583 0.1888135551 -0.07585918873 0.1012666112 --0.01618373858 -0.04854104981 0.06479884247 -0.0758801683 -0.008948873768 0.01194610878 --0.02468288025 0.001486636707 -0.001984554066 0.009483416921 -0.008233572087 0.01099123201 --0.01668616703 -0.009775308665 0.01304934048 -0.02120103733 -0.003438129045 0.004589657275 --0.0124075912 0.003172784461 -0.004235441163 0.007218694488 0.002982149574 -0.003980957174 -0.00564040707 0.001210402641 -0.001615801272 0.004467742745 -0.0005802953048 0.0007746528802 --0.002253324209 -5.155648339e-05 6.882423142e-05 0.0008990625288 -0.09910782939 0.01663199818 -0.05627972847 -0.1814032377 -0.07512942702 -0.04555113795 0.03687136002 -0.001320650922 --0.1004970528 0.001762974871 0.0002853063575 0.0241795874 -0.02269876898 -0.01367084371 -0.03030123907 0.001543209289 0.0001402741366 -0.001247721843 0.002590740788 0.001665619748 --0.01168887636 -0.007423243197 0.01536760451 -0.01589700567 -0.02051465692 -0.002943315199 -0.00133434377 0.0008896443144 -0.005879663518 -0.001187611764 0.005389292764 0.008156371394 --0.01148886388 0.004556321927 0.01533681458 0.008791049315 0.00656484213 -0.01247116801 -0.01138069487 0.0166481206 0.001677458646 0.0008785372655 -0.002031657772 0.002390774435 -0.002712118349 -0.0005858976907 -0.001668044079 0.001975811849 -3.76225057e-05 -0.002637568023 --0.002159758918 -0.001334345044 0.002804827794 -0.002959119381 -0.003744245233 0.0002265703615 --0.0001764299121 8.768585841e-08 0.0004957884457 -1.170543725e-07 -0.000525711459 8.136735868e-06 -0.0003730302415 -0.0009153256611 -0.0004979687903 -iw : 1 -0.007618026821 0.06173131262 0.1126499336 0.09471724861 0.03530307519 -0.01406758863 --0.02781621598 -0.01583425502 0.001442997157 0.008701089842 0.005970783159 0.0002126907052 --0.002213735431 -0.08245833995 -0.004483920613 -0.0278342469 -0.1661049611 -0.02937221604 --0.02598570117 -0.1151661841 -0.05922752823 0.03946396131 -0.02919058 -0.06362509905 -0.08190470752 0.02438818322 -0.04031495757 0.06982247077 0.02495393323 -0.009048566476 -0.0238137927 0.008533258298 0.01093829754 -0.01261174092 -0.007178785715 0.01383777257 --0.02346764534 -0.007288191336 0.006093639708 -0.01205926011 -0.00314611728 -0.001827019805 -0.001387268728 0.002435874339 -0.004213832618 0.007250712237 0.001779977139 -0.002280169931 -0.004116531641 0.001167873436 0.0001459009472 0.0002723518904 -0.02007458193 0.03893503702 -0.1344927922 0.02771669554 0.01233852109 -0.05711834105 0.08588214813 -0.01515788522 -0.05538447649 0.01159884248 -0.07883935863 0.07901990204 -0.08418930511 0.03918148484 --0.02130262709 -0.07339929127 0.03688274522 -0.07193763713 0.001888184651 -0.05446662251 --0.04726276292 -0.002900320781 -0.004115381074 -0.02391190983 -0.06023162878 -0.01723707546 --0.01725988991 0.02071038405 -0.02399771942 -0.03726332079 0.004367401125 -0.01222816323 -0.0249339284 -0.009572927603 -0.006231811142 0.0114317778 -0.0006494163313 0.001186498083 -0.004509961607 0.01329322862 0.008026946939 0.004960445526 -0.005098249037 0.008273841973 -0.01444764034 0.001255001752 0.004207834554 -0.009608696317 0.004529870294 0.005499276509 --0.002348409085 0.0004517629707 0.0004982574264 -0.0006263027899 -0.002430244522 -0.002362444503 --0.001174501039 6.690039578e-05 -0.002165982776 -0.00398267258 -0.0006354527574 -0.001133026538 -0.003602543329 -0.001353052825 -0.001842694378 -iw : 2 --0.01016952295 -0.08240690338 -0.1503796339 -0.1264407774 -0.04712708969 0.01877922836 -0.03713266615 0.0211376021 -0.001926298376 -0.0116153349 -0.00797057004 -0.0002839269351 -0.00295517905 -0.004483920613 -0.07983154678 0.03715673615 -0.02937221604 -0.1488979802 -0.03468905932 -0.05922752823 -0.08046921244 -0.05268157615 -0.06362509905 0.008082598994 --0.109336948 -0.04031495757 0.04800569662 -0.09320802294 -0.009048566476 0.03025481045 --0.03178971628 0.01093829754 0.002125329226 0.01683577542 0.01383777257 -0.01528529999 -0.03132763423 0.006093639708 -0.01085799833 0.01609825291 -0.001827019805 -0.00207580325 --0.001851904896 -0.004213832618 0.004904443185 -0.009679184152 -0.002280169931 0.00311575788 --0.005495276398 0.0001459009472 0.001082401001 -0.0003635703659 -0.04409184978 -0.02799864433 -0.01233852109 0.003928539123 0.127264577 -0.09381876088 -0.05712519213 0.01159884248 -0.02425428906 -0.02195277809 -0.07928302079 -0.04307373925 -0.02130262709 0.05423276939 --0.0717096918 -0.02720354414 -0.00689451847 -0.05446662251 0.06975579105 -0.04002972343 -0.01634230662 0.01968383822 -0.06023162878 0.05891188653 0.03116981791 0.02654537921 -0.02184505542 -0.03726332079 0.02999424762 0.04254017208 0.01436656977 0.009492658828 --0.006231811142 0.001118583458 0.02858467968 -0.002236435122 -0.003538193134 0.01329322862 --0.01353998751 -0.006601008687 -0.008452065379 -0.007387361255 0.01444764034 -0.01235172754 --0.01356203915 -0.005682262568 -0.004261912098 0.005499276509 -0.003733655014 -0.01283031044 -5.495228671e-05 0.0004386677346 -0.002430244522 0.002614312173 0.001921955627 0.002124920281 -0.001915833849 -0.00398267258 0.003485396057 0.002400049894 0.001609719521 0.001254972243 --0.001842694378 0.001366614185 0.004682039918 -iw : 3 --0.09240650892 -0.08921797981 0.1298452545 0.1936351018 0.1107900206 -0.01227765814 --0.05676684756 -0.04347177879 -0.0002773578769 0.0171360706 0.0163297608 0.0005232765347 --0.003624284568 -0.0278342469 0.03715673615 -0.238226165 -0.02598570117 0.03468905932 --0.4383847055 0.03946396131 -0.05268157615 -0.2246524915 0.08190470752 -0.109336948 -0.04224699912 0.06982247077 -0.09320802294 0.1554219681 0.0238137927 -0.03178971628 -0.09332418617 -0.01261174092 0.01683577542 0.003281547073 -0.02346764534 0.03132763423 --0.04977057069 -0.01205926011 0.01609825291 -0.03429784894 0.001387268728 -0.001851904896 --0.005710519618 0.007250712237 -0.009679184152 0.01590543261 0.004116531641 -0.005495276398 -0.009992326756 0.0002723518904 -0.0003635703659 0.003205913717 -0.02594614818 0.01233852109 --0.08343203541 -0.05216826207 0.1113758219 0.1191421115 0.01159884248 -0.1678941451 -0.1995652975 0.2241267196 0.142692731 -0.02130262709 -0.1214367089 0.2596306732 -0.1621093529 0.07502672493 -0.05446662251 -0.01067088777 0.1618580132 0.01424487477 --0.01535837301 -0.06023162878 0.06750765788 0.008683716617 -0.09011791268 -0.04231895418 --0.03726332079 0.06984049426 -0.05146879073 -0.09323208302 -0.03118544788 -0.006231811142 -0.02863851403 -0.05036402889 -0.03823037546 0.001612252983 0.01329322862 -0.01255811635 --0.004995002689 0.01676419043 0.01254438205 0.01444764034 -0.0239350452 0.01326371695 -0.03195157973 0.01211038602 0.005499276509 -0.01332165269 0.01775418976 0.01778345704 --0.0002901127852 -0.002430244522 0.001691273314 0.0009212081172 -0.002257729355 -0.0024433796 --0.00398267258 0.006247799402 -0.001898908111 -0.008340366984 -0.00393178373 -0.001842694378 -0.003961077892 -0.005730552596 -0.00528775672 -ad : 2 2.994710688 -iw : 4 --0.07467809645 -0.1059235929 0.01768155914 0.03317436361 -0.0002965816861 -0.01546320753 -0.002957674633 0.003964442285 0.0009786094851 -0.003908906063 0.001582097496 6.445994205e-06 -0.0006651266567 -0.08568422954 0.03096893175 0.1276628766 -0.128544398 0.0464599228 --0.0550517457 -0.02009797173 0.007264028845 -0.03062601507 0.03579320796 -0.01293677285 -0.01069047291 0.01344620198 -0.004859873442 0.01846592644 -0.01425089975 0.005150716115 --0.01123757457 -0.005299817191 0.001915517917 -0.001773874753 0.004689629624 -0.00169497725 --0.0004633370163 0.004025879612 -0.001455077458 0.005869319725 -0.003017513639 0.001090622796 --0.004142438625 -0.001190454948 0.0004302672528 0.00111219122 0.0003790964797 -0.0001370171976 --0.001761319689 0.001452529735 -0.0005249891897 0.002867193374 -0.1213071027 0.03892980974 -0.1257770453 -0.1164702733 -0.0454597159 -0.1043176302 0.06692177829 -0.05120160107 --0.01971318078 0.01850584288 -0.02551549962 0.0245723456 -0.05161440619 0.01491093341 -0.01865504342 0.02410956974 -0.01364176539 0.00313740057 0.008945788431 -0.001133953642 -0.01002593594 -0.01100786323 0.02672595544 -0.009112326047 -0.009659587237 -0.00531047067 -0.004348730678 -0.007094991087 0.001262211428 0.002564349309 -0.006623681577 0.004773420242 --0.005748899239 9.190176754e-06 0.002077830065 0.003576676026 -0.001512766933 -0.001969505692 -0.002556251664 0.0007118402964 0.001696317262 -0.002434765654 0.007248939292 -0.002918354262 --0.002619990953 -0.000313357692 0.0008886505452 -0.00343036852 0.001594763554 0.001239841324 --0.001982940359 0.0009616509622 0.0005060024549 -0.001121446948 -0.0001828849437 0.001351647923 --0.0003995546752 -0.001564491708 0.001380054304 0.0005654557109 -0.0001749915244 -0.0004643792117 -0.002661822604 -0.001420088439 -0.0009620650498 -ad : 3 3.303653192 -iw : 5 --0.06949993455 -0.07650151067 0.03775747449 0.01817903504 -0.01203705989 -0.008063426606 -0.009345745778 -0.0005230707761 -0.001955054846 -0.001568792632 0.002943153326 -0.001329764494 -0.0005817366865 -0.0005862482916 0.094871103 0.1120596393 -0.0006895578105 0.1115894255 --0.0580403052 9.653598589e-05 -0.01562217851 -0.008871600166 0.0002002018939 -0.03239817458 -0.01269330402 -3.604286736e-05 0.005832727584 0.007022843851 -8.101694112e-05 0.01311077009 --0.01231504185 4.013999316e-05 -0.006495755263 0.005553602758 1.728174099e-05 -0.002796661164 --0.001013072476 -1.457669659e-05 0.002358910556 0.002009989268 -1.23299459e-05 0.001995324479 --0.003912933465 1.81304628e-05 -0.002934007704 0.003772163737 -4.715928016e-06 0.0007631669021 --0.002425505444 -2.819160351e-06 0.0004562177082 0.001714541089 -0.01354075547 0.0008764727263 -0.0008100372401 -0.1652852618 -0.131086312 0.0597403149 0.00119354734 -0.0004075994811 --0.08966816149 0.0659608103 0.01259743929 0.0001095728959 -0.0001748654118 0.004088172775 -0.02829803469 -0.01688824417 -0.0003530616333 0.0001054325641 0.02788160737 -0.01706188962 --0.00642398067 -3.893749438e-05 9.976943756e-05 -0.004825743642 -0.01614543995 0.01050224355 -0.0001519680464 -0.0001078540145 -0.006401252508 0.01745374692 -0.0009974294301 -6.186853146e-06 -1.54025366e-05 -0.0007264336234 -0.002492554191 -0.002438404141 -5.933690732e-05 9.99207761e-06 -0.00537853761 -0.001616993069 -0.001212619179 2.717701592e-06 2.513204017e-05 -0.002540100123 --0.004067055557 0.002948477101 3.060876872e-05 -3.782277703e-05 0.0001537603716 0.006120765939 --0.001381428109 -9.519710406e-06 2.073732204e-05 -0.000852211439 -0.003355869251 0.0005382551535 --3.663615608e-06 -1.269302632e-05 0.001525136437 0.002054080881 -0.0009796627663 -2.891456218e-06 -1.712107546e-05 -0.001228926384 -0.00277066106 -ad : 4 0 -iw : 7 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0.3077382577 0 0 -0.340113108 0 0 0.2965292449 0 0 -0.2106036639 0 0 0.1684140928 0 0 -0.1131428086 0 0 0.1019205506 0 0 -0.06113809996 0 0 0.06480538679 0 0 -0.02956059757 0 0 0.04222106929 0 0 -0.008651775987 0 0 0.0303465245 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 diff --git a/tests/09_DeePKS/100_NO_GO_deepks_UT/dphialpha_z_ref.dat b/tests/09_DeePKS/100_NO_GO_deepks_UT/dphialpha_z_ref.dat deleted file mode 100644 index d604201535..0000000000 --- a/tests/09_DeePKS/100_NO_GO_deepks_UT/dphialpha_z_ref.dat +++ /dev/null @@ -1,870 +0,0 @@ -iat : 0 -ad : 0 2.003222249 -iw : 6 --0.03743901944 -0.08873200832 -0.05887198737 -0.01154640321 0.01566770979 0.01164804667 -0.003723822188 -0.003675545628 -0.003509488323 -0.001761481315 0.001867874234 0.0006497851846 -0.0004906246879 -0.2347872893 -0.01740517535 -0.03118321102 -0.1235715418 -0.04360372101 --0.07812067423 -0.02568808768 -0.04103742188 -0.07352287815 0.02465901433 -0.0183248609 --0.03283092487 0.01057009141 -0.00058035741 -0.001039771632 0.00398044267 0.006995100477 -0.01253246175 -0.007431628133 0.005647806797 0.01011864274 -0.0001313342894 0.0003954975947 -0.0007085757372 -0.002361872324 -0.001941571702 -0.00347853089 0.003278637938 -0.001430414057 --0.002562737949 -0.0008457246082 -0.0004815340735 -0.0008627191813 0.001554865278 0.0004475305332 -0.0008017982453 -0.002121328996 0.0007611501307 0.001363680898 0.1001614082 -0.1010786453 --0.1810930751 0.009823100245 -0.01592788191 0.107567347 -0.08037624113 -0.1440025302 -0.02793969917 -0.04530343964 0.0711143744 -0.03219203352 -0.05767543012 0.03139912112 --0.05091279545 0.02602548999 0.00578449676 0.01036353725 0.02233255529 -0.03621161289 -0.004300358952 0.008000264979 0.01433332018 0.008037977083 -0.01303335471 -0.009217841551 -0.006288179778 0.01126593861 -0.002764300424 0.004482235713 -0.00474009698 -0.00198378055 --0.003554152501 -0.004641630751 0.007526274256 -0.002732952373 -0.001730700162 -0.00310073224 --0.003038433288 0.004926734474 0.00179079278 -0.002329366031 -0.004173305413 -0.0001466569224 -0.0002378000919 0.0009920760688 0.001511702884 0.002708375474 0.001648230802 -0.002672560081 -0.001626078649 -0.0001758249324 -0.0003150089476 0.001063758644 -0.001724854847 -0.001222949826 -0.000991642578 0.001776632475 -0.0002696125949 0.0004371692711 0.0004495896294 -0.0005837081193 --0.001045774782 -3.614412222e-05 5.860668182e-05 -ad : 1 1.950638213 -iw : 7 --0.03703292344 -0.08941598988 -0.06261921264 -0.01550582595 0.01385485078 0.01224527543 -0.005414519596 -0.002709561978 -0.003740750874 -0.002342309065 0.001413356526 0.0005650008109 -0.0008446223656 -0.2380380237 -0.01676741657 0.03005026605 -0.1311681843 -0.04283184637 -0.07676247401 -0.03185184817 -0.0417980023 0.07490963705 0.02307103059 -0.02041870897 -0.03659404741 0.01181999584 -0.002603146149 0.004665312274 0.005520004987 0.00639250614 --0.01145653592 -0.006823522416 0.006117988857 -0.01096455092 -0.0006156168379 0.001221597812 --0.002189325893 -0.003024900015 -0.001420987333 0.00254666825 0.003144865409 -0.001581245757 -0.002833880549 -0.0006476463302 -0.0008986727763 0.001610585382 0.001708703147 0.0003264896965 --0.0005851290329 -0.002005282355 0.0007747368081 -0.001388469542 0.09925124134 -0.09989055756 -0.1790220824 0.009226883696 0.0149519678 0.1085489075 -0.08240615307 0.1476868433 -0.02676691033 0.04337520604 0.07387844253 -0.03553956216 0.06369337182 0.03098192064 -0.05020554014 0.02958802781 0.00341228305 -0.006115433052 0.02337062051 0.03787159098 -0.006785510114 0.007750177762 -0.01388973088 0.009688319478 0.01569971462 -0.008257849846 -0.007283097811 -0.01305263849 -0.001406304514 -0.002278886404 -0.004993019306 -0.001121898083 -0.002010645809 -0.004283072025 -0.006940626664 -0.003653501065 -0.001670021949 0.002992983664 --0.003661526659 -0.005933425683 0.001209044043 -0.002611423017 0.00468014593 -0.0007539962946 --0.001221834878 0.00101995148 0.001130844243 -0.00202667896 0.001435091289 0.002325534758 -0.001788286309 -0.0002787597565 0.0004995882826 0.001111203246 0.001800681108 -0.0009681201456 -0.001185644558 -0.002124891109 4.126248949e-05 6.68649822e-05 0.0005777714751 -0.0004656423601 -0.0008345159641 0.0001256852079 0.0002036701928 -ad : 2 1.709269535 -iw : 4 -0.09739344347 0.2539155258 0.2182965769 0.09761110364 -0.002681593173 -0.02955122844 --0.03244859093 -0.009031726657 0.004058933058 0.008841002698 0.004162334979 0.002765074461 --0.004030375073 -0.1783217201 0.001661674077 0.0002395831244 0.03855112479 0.00460768555 -0.0006643442995 0.166279647 0.005182561547 0.0007472309434 0.1631091066 0.003441748503 -0.0004962374219 0.08111214818 0.001518182755 0.0002188942904 0.008190337299 -0.0001051856997 --1.516586131e-05 -0.02975707506 -0.0006379681254 -9.198337924e-05 -0.02377113567 -0.0005191103337 --7.484625139e-05 -0.0166473468 -0.0002504356879 -3.610826299e-05 0.005081342043 8.290848723e-05 -1.195389318e-05 0.006900986736 0.0001844134227 2.658905535e-05 0.005246014436 6.634842024e-05 -9.566233261e-06 0.0007194271447 3.629256546e-05 5.23272665e-06 -0.2015310147 -0.002619362624 --0.0003776643629 1.526523631e-05 4.49538975e-06 -0.1160300163 0.0005486357537 7.910327896e-05 -4.819936812e-05 1.419401187e-05 0.01613627568 0.003545533288 0.0005112012967 6.269802833e-05 -1.846365612e-05 0.1097221632 0.004934028033 0.0007113969392 5.890755964e-05 1.73474183e-05 -0.09190000318 0.003467093301 0.0004998916799 3.658695989e-05 1.077432678e-05 0.05637525195 -0.001673561453 0.0002412970675 1.375793609e-05 4.051511789e-06 0.00669562335 8.614864033e-05 -1.242106422e-05 -5.239644031e-07 -1.54299885e-07 -0.01983135783 -0.0008313485401 -0.0001198653114 --9.488987771e-06 -2.794368688e-06 -0.02057422335 -0.0006782484252 -9.779106452e-05 -6.314019614e-06 --1.85938681e-06 -0.00696586847 -0.0002323472685 -3.350024251e-05 -2.189700603e-06 -6.448349337e-07 --0.003128675373 -4.592753938e-05 -6.62191433e-06 1.36133827e-07 4.00894292e-08 0.008696482482 -0.000272242567 3.925241761e-05 2.392067152e-06 7.044289349e-07 0.001854606795 9.620167076e-05 -1.387052803e-05 1.241029675e-06 3.654651632e-07 -ad : 3 2.100474535 -iw : 5 --0.03533376729 -0.08076269065 -0.04792709091 -0.004321794386 0.01671348544 0.009116352255 -0.0006225888565 -0.004554513955 -0.002337698894 -0.0005524165528 0.002130690256 0.000464151038 --9.045329549e-05 -0.2305727978 0.03561091284 -1.006279224e-05 -0.1143424411 0.08591907134 --2.427867459e-05 -0.01930310831 0.07517004875 -2.124125789e-05 0.02501503443 0.02741770227 --7.747586897e-06 0.008018868428 -0.005421455664 1.531973703e-06 0.002236128856 -0.01438792524 -4.065683549e-06 -0.007496854036 -0.008311901229 2.348744487e-06 0.0009007803105 0.001958938613 --5.535491989e-07 -0.001559398319 0.004755791141 -1.34387283e-06 0.0031566778 0.001755772211 --4.961392331e-07 -0.001374083909 -0.0006020371753 1.701213065e-07 0.001416441034 -0.0009759757456 -2.757874028e-07 -0.002073920558 -0.0009697837113 2.74037682e-07 0.09480285502 0.215213974 --6.081432167e-05 -0.0197087135 1.113842299e-05 0.09926577146 0.1633405902 -4.615614409e-05 --0.0539749769 3.050407748e-05 0.06258993978 0.05993182899 -1.693530145e-05 -0.05718464674 -3.231802948e-05 0.01917577887 -0.01592216525 4.499223081e-06 -0.03595320445 2.031903295e-05 -0.0004359693088 -0.01524300739 4.307309314e-06 -0.008818572544 4.983835762e-06 -0.009766015867 --0.009788374796 2.765960604e-06 0.00868759596 -4.909814057e-06 -0.003769687324 0.005934736565 --1.677014609e-06 0.008575892517 -4.846684609e-06 -0.001054304512 0.002619525577 -7.402152753e-07 -0.002914510063 -1.647141803e-06 0.002461547013 0.00360026286 -1.017348175e-06 -0.001580498771 -8.932223734e-07 0.0006448317413 -0.003817289416 1.078674689e-06 -0.002973594741 1.68053364e-06 -0.001124584291 0.0005285934586 -1.493678687e-07 -0.001322235488 7.472643082e-07 -0.001419631239 --0.001435955516 4.057666843e-07 0.001255837733 -7.097394704e-07 0.0002710437571 0.001632373895 --4.612698204e-07 0.0004905072945 -2.772112815e-07 -ad : 4 0 -iw : 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 -0.3323408577 0 0 -0.3381829911 0 -0 -0.1941332719 0 0 -0.04638680834 0 -0 0.04028417335 0 0 0.08462892004 0 -0 0.08958563666 0 0 0.08083690751 0 -0 0.05951877109 0 0 0.04132486996 0 -0 0.02364071707 0 0 0.01300175494 0 -0 0.003849155413 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 -iw : 1 -0.1246276028 0.36586141 0.4376268693 0.4231135336 0.3565090714 0.2974409008 -0.2377487477 0.193381104 0.1514250008 0.1200356898 0.08743554786 0.06534687476 -0.04344417142 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 -0.3204777674 0 -0 0 0 -0.3931894679 0 0 -0 0 -0.3882999415 0 0 0 -0 -0.3223271597 0 0 0 0 --0.2718113627 0 0 0 0 -0.2137563028 -0 0 0 0 -0.1762726601 0 -0 0 0 -0.1355335907 0 0 -0 0 -0.1095371898 0 0 0 -0 -0.07797320822 0 0 0 0 --0.05992032843 0 0 0 0 -0.03844309726 -0 0 0 0 -0.02669812503 0 -0 0 0 -iw : 2 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 -0.2775418879 -0 0 0 0 -0.3405120677 0 -0 0 0 -0.3362776137 0 0 -0 0 -0.2791435086 0 0 0 -0 -0.2353955451 0 0 0 0 --0.1851183885 0 0 0 0 -0.1526566016 -0 0 0 0 -0.1173755327 0 -0 0 0 -0.09486198903 0 0 -0 0 -0.06752677913 0 0 0 -0 -0.05189252662 0 0 0 0 --0.03329269882 0 0 0 0 -0.02312125451 -0 0 0 -iw : 3 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 --0.2775418879 0 0 0 0 -0.3405120677 -0 0 0 0 -0.3362776137 0 -0 0 0 -0.2791435086 0 0 -0 0 -0.2353955451 0 0 0 -0 -0.1851183885 0 0 0 0 --0.1526566016 0 0 0 0 -0.1173755327 -0 0 0 0 -0.09486198903 0 -0 0 0 -0.06752677913 0 0 -0 0 -0.05189252662 0 0 0 -0 -0.03329269882 0 0 0 0 --0.02312125451 0 0 -iat : 1 -ad : 0 3.03052076 -iw : 6 --0.1103551767 -0.1524729883 0.03086255911 0.04740681987 -0.00330896584 -0.02233373055 -0.006140792364 0.005595723182 0.000448247658 -0.005743920465 0.002965348266 6.030469086e-06 -0.0006939570726 -0.05612792653 -0.04700579041 -0.08714335238 0.1575394435 -0.06874722846 --0.1274494887 0.04050017777 -0.008493309252 -0.01574562271 -0.04060876876 0.01964880866 -0.0364266411 -0.02605685993 0.006043404255 0.01120377941 0.02374940137 -0.00804303874 --0.01491087275 0.004093154248 -0.002135257927 -0.00395852367 -0.003850336698 0.002718702046 -0.005040162252 -0.008055422536 0.001777601692 0.003295469968 0.006939326631 -0.00175713701 --0.003257530791 -0.0008550463899 -0.0003828348371 -0.0007097319464 0.001385202475 0.0002297879902 -0.0004260006189 -0.003681624987 0.0006507616215 0.001206437522 0.1625328952 -0.01348308198 --0.02499608993 0.02672658409 -0.04066494441 -0.02818831157 0.07383752169 0.1368863095 -0.04483104087 -0.068211178 -0.04500391253 0.03621869662 0.06714531583 0.01507445344 --0.02293603287 -0.0008441661022 -0.01403806557 -0.02602496595 -0.00989941831 0.01506213042 -0.02456368186 -0.01776561626 -0.03293541805 -0.006842063709 0.01041031429 -0.007623915071 -0.007485102358 0.01387652259 0.003487307743 -0.005305997018 -0.003844532615 0.00550384403 -0.01020349654 0.002954968233 -0.004496033557 -0.002127730606 -0.001287454078 -0.002386792424 --0.001362713703 0.002073391676 0.007067371529 -0.004501217793 -0.008344742316 -0.001546382474 -0.00235284678 -0.004106212034 0.002492637715 0.00462106487 0.0008136336318 -0.00123795717 -0.001106383089 0.0005350320748 0.0009918881957 0.0006155886023 -0.0009366283474 -0.001754484939 -3.10553416e-05 5.757304692e-05 -0.0003677130763 0.0005594815915 0.002969358024 -0.001458354215 --0.002703621707 -0.0003502595002 0.0005329256838 -ad : 1 2.994710688 -iw : 7 --0.1106360237 -0.156926404 0.02619533022 0.04914800796 -0.0004393874512 -0.02290882971 -0.004381811755 0.005873343744 0.001449815506 -0.005791066517 0.002343886419 9.549776998e-06 -0.0009853889168 -0.05855711466 -0.04588064815 0.08568422954 0.1587249492 -0.06883063931 -0.128544398 0.04683536488 -0.01076169996 0.02009797173 -0.03955829282 0.0191659024 --0.03579320796 -0.02931051287 0.007199930086 -0.01344620198 0.02273116319 -0.007630815156 -0.01425089975 0.006048265817 -0.002837850666 0.005299817191 -0.003318927586 0.002511118416 --0.004689629624 -0.009116258858 0.002155705513 -0.004025879612 0.006576113763 -0.001615763861 -0.003017513639 -0.0001520694252 -0.000637443377 0.001190454948 0.001455572048 0.0002029917558 --0.0003790964797 -0.004038682861 0.0007777744641 -0.001452529735 0.1640607388 -0.01406217428 -0.02626175996 0.02592889216 0.03892980974 -0.02676007114 0.07247937456 -0.1353585796 -0.04457272163 0.06692177829 -0.04771633658 0.03847305047 -0.07185019873 0.01636621662 -0.0245723456 -0.00297421069 -0.01213626523 0.02266503585 -0.009085990044 -0.01364176539 -0.02553722493 -0.01853761275 0.03461984801 -0.007331700324 -0.01100786323 -0.006089604098 -0.006071673218 -0.01133913017 0.002896437705 0.004348730678 -0.004329897125 0.005927673199 --0.01107020348 0.003179298834 0.004773420242 -0.003005742421 -0.0005082314961 0.0009491457929 --0.001007566462 -0.001512766933 0.007192935152 -0.00458367011 0.00856021564 -0.001621656425 --0.002434765654 -0.00353130928 0.001956552828 -0.003653952774 0.0005918786737 0.0008886505452 -0.001049322394 0.0005927026155 -0.00110689951 0.0006405000246 0.0009616509622 -0.001999738525 -0.0002432081933 -0.0004542025342 -0.0002661202343 -0.0003995546752 0.002849040638 -0.001336594638 -0.002496152221 -0.0003092961046 -0.0004643792117 -ad : 2 1.709269535 -iw : 0 --0.1023388287 -0.2733574374 -0.1789417468 -0.04462550363 0.002169792937 -0.01850460617 --0.0234678671 -0.01254296567 0.006141707938 0.007891740578 0.005955191367 -0.0005115497809 -9.60971829e-05 -0.1880553484 0.001842020004 0.000265585721 0.03350058474 0.004540294558 -0.0006546277463 0.1093702844 0.003378162744 0.000487069514 0.03980443673 0.0008110155381 -0.000116933663 -0.02455960099 -0.000398255837 -5.742123506e-05 -0.002463516694 5.491664527e-05 -7.917979609e-06 0.02416711513 0.0006073275437 8.756556566e-05 0.03378046428 0.0006421634447 -9.258826783e-05 0.01170410595 0.0002213341819 3.19123561e-05 -0.0005522595438 -6.14712455e-05 --8.863033531e-06 -0.007788030366 -0.0001389011597 -2.002701631e-05 -0.001580877365 -4.888293028e-05 --7.048027849e-06 -0.00179394424 -1.549896245e-05 -2.234667978e-06 0.2169143596 0.00278456045 -0.0004014828793 -1.709623625e-05 -5.034592563e-06 0.1012579388 -0.0004131874059 -5.957409522e-05 --4.080596181e-05 -1.20167614e-05 -0.00753955032 -0.001713121351 -0.000247000884 -3.037778317e-05 --8.94581468e-06 -0.003168466628 -5.962085525e-05 -8.596240972e-06 -1.133316629e-07 -3.337452399e-08 -0.04904839424 0.001748743333 0.0002521369247 1.757832097e-05 5.176559489e-06 0.04254897845 -0.001346447834 0.0001941332439 1.198058935e-05 3.528109063e-06 0.009178836971 5.920339629e-05 -8.536050997e-06 -1.846832131e-06 -5.438651629e-07 -0.02332177267 -0.0008908338432 -0.0001284420083 --9.495153424e-06 -2.796184383e-06 -0.01978265121 -0.0007096056255 -0.0001023122014 -7.17198463e-06 --2.112045011e-06 -0.01037965862 -0.0003004697792 -4.332226729e-05 -2.386259034e-06 -7.027185287e-07 -0.002138367566 7.255843566e-05 1.046160433e-05 6.95815541e-07 2.04907542e-07 0.000865599624 -5.353804276e-05 7.719210246e-06 7.447432951e-07 2.193160529e-07 0.001739675846 4.121896907e-05 -5.943024287e-06 2.24787288e-07 6.619658221e-08 -iw : 1 -0.09269339957 0.08191543633 -0.1779207873 -0.2996526727 -0.2393478181 -0.08098295041 -0.03203853558 0.07591901602 0.04924200798 0.01160824305 -0.01735945252 -0.01648482981 --0.009200517931 -0.2616607712 -0.001393048032 -0.0002008521435 -0.5081128822 -0.001132143575 --0.0001632344747 -0.2933308829 0.002940977466 0.0004240353628 0.0426835453 0.006404205587 -0.0009233697543 0.245008669 0.006802674825 0.0009808217579 0.2250593734 0.004384413004 -0.0006321524666 0.1062542475 0.001275763868 0.000183941904 -0.01907779932 -0.0009584059967 --0.0001381846816 -0.06601225553 -0.00153419489 -0.0002212029485 -0.05598282099 -0.001002651065 --0.0001445640142 -0.01338465249 -0.0001496699836 -2.157968449e-05 0.009154993974 0.0002805281261 -4.044704427e-05 0.01634764121 0.000312570586 4.506698314e-05 -0.02824943372 0.004612337093 -0.0006650149671 1.127783987e-05 3.321159576e-06 0.3171739403 0.009773428658 0.00140915033 -8.574946515e-06 2.525196851e-06 0.4009510266 0.007690212877 0.001108788573 -3.095246999e-05 --9.115051577e-06 0.2404043288 0.0008186037412 0.0001180277437 -7.934717226e-05 -2.336658651e-05 --0.02002763193 -0.005489782248 -0.0007915265705 -0.0001035785064 -3.050236147e-05 -0.1565626261 --0.007536316391 -0.001086599504 -9.051656125e-05 -2.665580888e-05 -0.1699678734 -0.005655245814 --0.0008153834019 -5.188643693e-05 -1.527979993e-05 -0.07860968545 -0.001980875473 -0.0002856061495 --1.037843009e-05 -3.056296495e-06 0.002365151116 0.0008685681744 0.0001252317045 1.518679325e-05 -4.472289409e-06 0.04911091406 0.001836183423 0.0002647441925 1.969898352e-05 5.801063722e-06 -0.03540496592 0.001231984348 0.000177629695 1.120517282e-05 3.299760189e-06 0.01501931351 -0.000303189255 4.371436614e-05 1.463877937e-06 4.310907305e-07 -0.007492044378 -0.000262959456 --3.791396216e-05 -3.158163342e-06 -9.300331042e-07 -iw : 2 --0.0004131054314 -0.003551264227 -0.007214406179 -0.007448296404 -0.004646929856 -0.00117686772 -0.001027824559 0.001566671927 0.000951538314 0.0001164657075 -0.0003604474975 -0.0003517313279 --0.0001455475826 -0.001393048032 -0.09523430682 1.32946208e-06 -0.001132143575 -0.2250705714 -9.240087698e-06 0.002940977466 -0.2216532309 2.055001158e-05 0.006404205587 -0.1420804525 -2.593020879e-05 0.006802674825 -0.05112425449 2.202935694e-05 0.004384413004 0.0006109220625 -1.234379409e-05 0.001275763868 0.02055350273 2.465903772e-06 -0.0009584059967 0.01492006846 --3.530064567e-06 -0.00153419489 0.006154049055 -4.671198765e-06 -0.001002651065 -0.002396376369 --2.698154886e-06 -0.0001496699836 -0.00287068026 -2.639114976e-07 0.0002805281261 -0.002582391513 -9.346440915e-07 0.000312570586 0.0001949366137 8.716418671e-07 0.0006795341842 -0.1422627537 -3.321159576e-06 0.001717626113 0.0002476351417 0.0005170279432 0.0250302915 2.525196851e-06 -0.004438636709 0.0006398706148 -0.001863859348 0.1506999466 -9.115051577e-06 0.005458475629 -0.0007867677447 -0.00477910098 0.1870807413 -2.336658651e-05 0.00454697266 0.0006552289308 --0.006238930732 0.1226321906 -3.050236147e-05 0.002656971958 0.0003827072607 -0.005452314341 -0.05670374848 -2.665580888e-05 0.0009527505965 0.0001370760786 -0.003125483408 -0.002860385155 --1.527979993e-05 -0.0001213502833 -1.764574725e-05 -0.0006252140455 -0.01750104469 -3.056296495e-06 --0.0004490434311 -6.476175657e-05 0.0009147616045 -0.02010122309 4.472289409e-06 -0.0003577482314 --5.152600406e-05 0.001186589393 -0.004325378808 5.801063722e-06 -0.0001093303982 -1.570240685e-05 -0.0006749662882 -0.0007819792664 3.299760189e-06 3.155640807e-05 4.581939074e-06 8.818781773e-05 -0.005265571444 4.310907305e-07 7.522870055e-05 1.084879398e-05 -0.000190233422 0.0002211628411 --9.300331042e-07 3.323466321e-05 4.781603272e-06 -iw : 3 --5.956227599e-05 -0.0005120275937 -0.001040185917 -0.001073908626 -0.0006700026133 -0.0001696828815 -0.0001481935734 0.0002258855454 0.0001371944868 1.67922329e-05 -5.196996141e-05 -5.071324857e-05 --2.098530938e-05 -0.0002008521435 1.32946208e-06 -0.09524333587 -0.0001632344747 9.240087698e-06 --0.2251333255 0.0004240353628 2.055001158e-05 -0.2217927965 0.0009233697543 2.593020879e-05 --0.1422565577 0.0009808217579 2.202935694e-05 -0.05127386703 0.0006321524666 1.234379409e-05 -0.0005270890939 0.000183941904 2.465903772e-06 0.02053675553 -0.0001381846816 -3.530064567e-06 -0.01494404292 -0.0002212029485 -4.671198765e-06 0.006185773536 -0.0001445640142 -2.698154886e-06 --0.002378051831 -2.157968449e-05 -2.639114976e-07 -0.002868887903 4.044704427e-05 9.346440915e-07 --0.002588739155 4.506698314e-05 8.716418671e-07 0.0001890168516 9.797644753e-05 3.321159576e-06 --0.1422853093 -0.0002476796404 0.001717723247 7.454600861e-05 2.525196851e-06 0.02501314161 --0.0006401622411 0.004439273282 -0.0002687345565 -9.115051577e-06 0.1507618515 -0.0007874827341 -0.005460036337 -0.0006890592811 -2.336658651e-05 0.1872394357 -0.0006562844971 0.004549276793 --0.0008995401317 -3.050236147e-05 0.1228393476 -0.0003838153804 0.002659390807 -0.0007861243811 --2.665580888e-05 0.0568847816 -0.0001379317866 0.0009546184704 -0.0004506377578 -1.527979993e-05 --0.002756612281 1.721016237e-05 -0.000120399471 -9.014447331e-05 -3.056296495e-06 -0.01748028783 -6.470958519e-05 -0.0004489295493 0.0001318919555 4.472289409e-06 -0.02013159668 5.168585938e-05 --0.0003580971701 0.0001710845695 5.801063722e-06 -0.004364776775 1.588056753e-05 -0.0001097192946 -9.731784016e-05 3.299760189e-06 -0.000804389612 -4.488312252e-06 3.135203565e-05 1.271507644e-05 -4.310907305e-07 0.005262643689 -1.084241374e-05 7.521477352e-05 -2.74281932e-05 -9.300331042e-07 -0.0002274791678 -4.811458747e-06 3.329983295e-05 -ad : 3 3.113220902 -iw : 5 --0.107044542 -0.138798501 0.03975919992 0.04156547963 -0.009040166779 -0.01976016993 -0.009494969936 0.004224652905 -0.001449715216 -0.005062245574 0.004016184354 -0.0003101270051 -0.0002711303477 -0.0565599189 0.10406378 0.0002182388386 0.1461462601 0.1431458584 -0.000300200376 0.02595206527 0.006637814684 1.392058762e-05 -0.039259411 -0.04251126538 --8.915310574e-05 -0.01810860078 -0.006742734249 -1.414062118e-05 0.02394694326 0.01802965459 -3.781114694e-05 -0.0006795356408 0.0007300246887 1.530981675e-06 -0.003878427186 -0.006059821715 --1.270844143e-05 -0.005296977465 -0.001629158803 -3.416613591e-06 0.006999212765 0.003951628223 -8.287213418e-06 -0.002642693229 -0.0006531078647 -1.369674462e-06 0.001554335205 -0.0003669809289 --7.696192824e-07 -0.002694832274 -0.0006157635983 -1.291357401e-06 0.1615605636 0.03214811309 -6.741987331e-05 -0.05540973591 -0.0002324076561 -0.02045652244 -0.1547800498 -0.0003245991863 --0.08762428235 -0.0003675266402 -0.03526569171 -0.06309895597 -0.0001323288743 -0.02312232009 --9.698303242e-05 0.0005977294908 0.03585900718 7.520222769e-05 0.02223848039 9.327590208e-05 -0.02021142959 0.03194498207 6.699387418e-05 0.01060294866 4.447244525e-05 -0.009230890619 --0.02115274012 -4.436077026e-05 -0.008963833699 -3.759742841e-05 -0.001746983366 -0.008132600282 --1.705539853e-05 -0.004289530954 -1.799178102e-05 -0.001026261808 0.005425930479 1.137906739e-05 -0.003887499335 1.630552093e-05 0.006000023486 0.008183926877 1.716303883e-05 0.002331674964 -9.779853743e-06 -0.004695240654 -0.007190998051 -1.508070399e-05 -0.002318686697 -9.725376444e-06 -0.001574032908 -0.0001642967295 -3.445572266e-07 -0.0008396956791 -3.521974999e-06 -0.00153892644 -0.0003750502277 7.865419274e-07 0.0009556142613 4.008177749e-06 0.002917212993 0.00332440355 -6.97182026e-06 0.0007225806791 3.030754058e-06 -ad : 4 0 -iw : 4 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 -0.3077382577 0 0 -0.340113108 0 -0 -0.2965292449 0 0 -0.2106036639 0 -0 -0.1684140928 0 0 -0.1131428086 0 -0 -0.1019205506 0 0 -0.06113809996 0 -0 -0.06480538679 0 0 -0.02956059757 0 -0 -0.04222106929 0 0 -0.008651775987 0 -0 -0.0303465245 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 -iat : 2 -ad : 0 3.347258395 -iw : 6 --0.001280759408 -0.001352474033 0.0007361984028 0.0002919783563 -0.0002374075332 -0.0001242895547 -0.0001766566872 -2.57592206e-05 -3.295650676e-05 -2.085687675e-05 5.057780546e-05 -2.950282279e-05 -1.519042777e-05 -0.1616370624 -0.001757933547 -0.0009916598011 -0.000341522301 -0.001988014882 --0.001121449923 0.01696855268 0.0003672083141 0.0002071441917 0.004270186912 0.0005609271349 -0.000316422024 -0.01003583305 -0.0001485764814 -8.381279498e-05 0.005443219552 -0.0002184178553 --0.0001232106909 -0.002178001424 0.000141959579 8.008016464e-05 0.002489892059 3.352717538e-05 -1.891286057e-05 -0.003234963847 -5.222299172e-05 -2.945927146e-05 0.002861723485 -2.692908247e-05 --1.519084075e-05 -0.002242184583 5.773072489e-05 3.256621347e-05 0.002031170596 -1.933846456e-05 --1.090893222e-05 -0.001953262112 -7.755267513e-06 -4.374788257e-06 0.003450110257 -0.2070160378 --0.1167788641 -0.0009008433584 -0.001490706086 0.001737472401 -0.03540354788 -0.01997133242 --0.001181800299 -0.001955630667 -0.0001575844557 0.0190665159 0.01075552452 -6.049765077e-05 --0.0001001108743 -0.0005467024207 0.01293446402 0.007296400957 0.0003528787721 0.0005839400695 -0.0001381271135 -0.01289613749 -0.007274780753 1.266875217e-05 2.096411745e-05 0.0001121525953 -0.004625520843 0.00260928127 -0.000149371281 -0.00024717802 -6.168281322e-07 -0.002026145047 --0.001142959356 2.198050968e-05 3.637311554e-05 -0.0001005718512 0.003448926419 0.001945558006 -5.36051998e-05 8.870531914e-05 6.289667581e-05 -0.004314397753 -0.002433775056 -1.070726781e-05 --1.771827381e-05 -1.333140787e-05 0.003548802022 0.002001898372 -2.559060795e-05 -4.234706807e-05 -1.476881909e-05 -0.002584274962 -0.001457803453 1.410253789e-05 2.333673093e-05 -2.735903676e-05 -0.002396127458 0.00135166843 -8.359245386e-07 -1.383279108e-06 2.91915109e-05 -0.002542602083 --0.001434295557 7.436943853e-07 1.230657623e-06 -ad : 1 3.303653192 -iw : 7 --0.0007753576379 -0.00085346887 0.0004212312777 0.0002028095963 -0.000134288275 -8.995748625e-05 -0.0001042633409 -5.835500768e-06 -2.181105231e-05 -1.750182007e-05 3.283451166e-05 -1.483516587e-05 -6.489991481e-06 -0.1646020337 -0.001058404368 0.0005862482916 -0.00376118566 -0.001244917912 -0.0006895578105 0.01752362 0.0001742847026 -9.653598589e-05 0.005249753592 0.0003614416658 --0.0002002018939 -0.01025317915 -6.507128261e-05 3.604286736e-05 0.005053913527 -0.0001462668388 -8.101694112e-05 -0.001956063316 7.246817554e-05 -4.013999316e-05 0.002561945307 3.120021059e-05 --1.728174099e-05 -0.003316422996 -2.631656171e-05 1.457669659e-05 0.002807864352 -2.226030981e-05 -1.23299459e-05 -0.002147224371 3.273248094e-05 -1.81304628e-05 0.002002841271 -8.514069694e-06 -4.715928016e-06 -0.001967207812 -5.089672198e-06 2.819160351e-06 0.002092832074 -0.2096400175 -0.1161192317 -0.0005484473878 0.0008764727263 0.001105559283 -0.04101064864 0.02271572512 --0.0007468548662 0.00119354734 -5.721374937e-05 0.01847758422 -0.01023470094 -6.856456191e-05 -0.0001095728959 -0.0003445148893 0.01458119377 -0.008076497219 0.0002209261335 -0.0003530616333 -6.378244601e-05 -0.01265567424 0.007009955385 2.436489629e-05 -3.893749438e-05 7.615195157e-05 -0.00383363895 -0.002123445776 -9.509306519e-05 0.0001519680464 9.614876069e-06 -0.001938058626 -0.001073487215 3.871385093e-06 -6.186853146e-06 -6.682325817e-05 0.003701066243 -0.00205001399 -3.712970278e-05 -5.933690732e-05 3.260901349e-05 -0.004310629058 0.002387649746 -1.700584963e-06 -2.717701592e-06 -3.251630541e-06 0.003377460721 -0.001870769468 -1.915324772e-05 3.060876872e-05 -1.13735397e-05 -0.002502666972 0.001386222771 5.95689991e-06 -9.519710406e-06 -1.949486422e-05 -0.00238243175 -0.001319624696 2.292484809e-06 -3.663615608e-06 1.595121919e-05 -0.002511514833 -0.001391123586 1.809310846e-06 -2.891456218e-06 -ad : 2 2.100474535 -iw : 0 -0.03719512428 0.08678844766 0.03935747893 0.002302655829 -0.0004281089771 0.005775470971 --0.0004961498518 -0.004042560405 -0.003743972464 0.0006816691493 0.0009135983472 0.0009035563489 --0.0003922429909 -0.2461283237 0.03923940207 -1.108811651e-05 -0.1168991803 0.08506375815 --2.403698354e-05 -0.01193484942 0.04847595871 -1.369814651e-05 0.007644637265 0.007051874071 --1.992690949e-06 -0.005704988305 0.0009116860912 -2.576206841e-07 0.002939534657 0.01067803242 --3.01735657e-06 0.002268567225 0.006892586117 -1.947679983e-06 0.004014294208 -0.001367285072 -3.863620592e-07 -0.002525486975 -0.0053840539 1.521404859e-06 0.0002475775241 -0.001806521639 -5.104798077e-07 -0.001659178033 0.0001621922659 -4.58316551e-08 0.001460481446 0.001120883616 --3.167349011e-07 -0.001070704206 -0.0001345169221 3.801126488e-08 -0.1027833765 -0.2324169064 -6.567545892e-05 0.02185913501 -1.235373846e-05 -0.08524569893 -0.1409770809 3.983675124e-05 -0.04597188859 -2.598111444e-05 -0.03038197995 -0.02967526713 8.385520732e-06 0.02744440852 --1.551026813e-05 0.001066221902 0.00318920478 -9.011929928e-07 0.0001916808263 -1.083288426e-07 --0.001678099505 -0.01201444725 3.394995438e-06 -0.004062745891 2.296069819e-06 -0.005901124588 --0.003306229534 9.342613893e-07 0.006651965213 -3.759372841e-06 -0.006020310203 0.001877351044 --5.304945035e-07 0.009609306271 -5.430720676e-06 0.0002443172687 0.007368034349 -2.082030282e-06 -0.003612612306 -2.041675829e-06 0.001412906715 -0.0004780146062 1.350754948e-07 -0.002275327596 -1.285906419e-06 0.001832841836 0.0001827695614 -5.164630665e-08 -0.002519909248 1.424132281e-06 --0.0003800003812 -0.002268968181 6.411561398e-07 -0.000677146251 3.826907002e-07 0.0002214649836 -0.001189206077 -3.360411945e-07 0.0003230489579 -1.825718325e-07 -0.000458875172 -0.001082592002 -3.059146068e-07 7.341085043e-05 -4.148830436e-08 -iw : 1 -0.1054943182 0.1966443448 0.07052697775 -0.0180732525 -0.03765344743 -0.006419317377 -0.006336024193 0.01033315056 -0.001005912748 -0.00170053368 -0.003613007277 0.001564039888 --0.000243042824 0.1007158651 0.100397047 -2.836980422e-05 0.2039101418 0.1921841994 --5.430665817e-05 0.1452830626 0.1179089821 -3.331825825e-05 0.04473004762 0.01668263941 --4.71411489e-06 -0.01913068266 -0.0333688836 9.429248402e-06 -0.02300574945 -0.02193581414 -6.198536426e-06 -0.008820051762 -0.001228541064 3.47156321e-07 0.00567631425 0.01092190628 --3.086269491e-06 0.005016381505 0.005069671635 -1.43256795e-06 0.002143919823 -0.0003650304873 -1.031488851e-07 -0.002184355978 -0.003861630274 1.091204355e-06 -0.0007464713634 -0.0007439566978 -2.102243692e-07 -0.0006976436334 8.254877674e-06 -2.332630994e-09 -0.2376289028 0.1064020197 --3.00666659e-05 0.05268701114 -2.977618078e-05 -0.1611908974 0.2361097811 -6.671897698e-05 -0.1105949999 -6.250300863e-05 -0.06193229931 0.2223744024 -6.283768746e-05 0.09248476594 --5.226796986e-05 0.01491963817 0.1149475187 -3.248141951e-05 0.03422307677 -1.934124747e-05 -0.01769827459 0.01157847676 -3.271800603e-06 -0.01128758214 6.37920199e-06 0.01405552849 --0.02913864913 8.233885319e-06 -0.01992926601 1.126306873e-05 -0.005081467269 -0.02399506462 -6.780431358e-06 -0.008513270167 4.811293449e-06 -0.00250812886 -0.002452527235 6.930255383e-07 -0.004299364187 -2.429795172e-06 -0.005353347446 0.007084096016 -2.0017961e-06 0.006022539335 --3.403651415e-06 0.002873590934 0.006064925903 -1.713803002e-06 0.002274125139 -1.285226848e-06 --0.0006695313155 -0.0001503933688 4.249756897e-08 -0.00177989581 1.005912051e-06 0.002618058807 --0.001517526009 4.288165547e-07 -0.001470603202 8.311146496e-07 -0.001938615821 -0.001421036199 -4.015508421e-07 -0.0005571976336 3.149014741e-07 -iw : 2 --0.009165946355 -0.07118074161 -0.1201570225 -0.08520812423 -0.01472733708 0.02878889488 -0.02723131426 0.005744322555 -0.009911842029 -0.009113874884 -0.001619270351 0.003480323272 -0.002387645667 0.100397047 0.02205757864 3.373160216e-06 0.1921841994 -0.004524623935 -2.123746261e-05 0.1179089821 -0.08764519706 3.986283013e-05 0.01668263941 -0.1140686382 -3.778456062e-05 -0.0333688836 -0.06765731104 1.795222442e-05 -0.02193581414 -0.0006125316001 --2.067082427e-06 -0.001228541064 0.03164073156 -1.013049876e-05 0.01092190628 0.02460641151 --6.654202173e-06 0.005069671635 0.001405605803 7.807636289e-08 -0.0003650304873 -0.01063681044 -3.325428686e-06 -0.003861630274 -0.007953970793 2.116827788e-06 -0.0007439566978 -0.0001627856621 --2.52041377e-08 8.254877674e-06 0.002970688468 -9.383936879e-07 0.02438988974 -0.09141702317 --2.977618078e-05 0.02813083359 -5.717928935e-06 0.06853239871 0.09840984153 -6.250300863e-05 -0.03540388202 3.163878207e-06 0.09117243077 0.1413333752 -5.226796986e-05 -0.01658086454 -3.227068166e-05 0.07810271963 0.0797438025 -1.934124747e-05 -0.06664842442 5.075488874e-05 -0.04146803791 -0.01477891663 6.37920199e-06 -0.06971490369 4.20751448e-05 0.005864352165 --0.03290157008 1.126306873e-05 -0.03122301316 1.536452116e-05 -0.01318137204 -0.02177302658 -4.811293449e-06 0.008058196259 -7.160153764e-06 -0.01313567777 0.00897603449 -2.429795172e-06 -0.02292684847 -1.369968959e-05 -0.004110630804 0.009265615246 -3.403651415e-06 0.0126250329 --6.688910672e-06 0.003052733498 0.007185424185 -1.285226848e-06 -0.001513724546 1.502912327e-06 -0.003854550283 -0.005005060724 1.005912051e-06 -0.007331659371 4.286201706e-06 0.001292121596 --0.00116186919 8.311146496e-07 -0.00347615514 1.885607643e-06 -0.0006597194256 -0.002840276823 -3.149014741e-07 0.0002505174142 -2.910310772e-07 -iw : 3 -2.590077213e-06 2.011397511e-05 3.395350071e-05 2.407777794e-05 4.161593217e-06 -8.135053132e-06 --7.694918102e-06 -1.623208164e-06 2.80084949e-06 2.575363061e-06 4.575670723e-07 -9.834561158e-07 --6.746915588e-07 -2.836980422e-05 3.373160216e-06 0.03399475293 -5.430665817e-05 2.123746261e-05 -0.0706319878 -3.331825825e-05 3.986283013e-05 0.05342416239 -4.71411489e-06 3.778456062e-05 -0.01964599639 9.429248402e-06 1.795222442e-05 -0.004126728998 6.198536426e-06 -2.067082427e-06 --0.007927666852 3.47156321e-07 -1.013049876e-05 -0.004209782961 -3.086269491e-06 -6.654202173e-06 -0.00105805744 -1.43256795e-06 7.807636289e-08 0.001681907874 1.031488851e-07 3.325428686e-06 -0.001131448187 1.091204355e-06 2.116827788e-06 -0.0004627931927 2.102243692e-07 -2.52041377e-08 --0.0002519798199 -2.332630994e-09 -9.383936879e-07 -0.0003501644673 -6.891999494e-06 -2.977618078e-05 --0.1967910454 1.241144367e-05 0.03602665791 -1.936561675e-05 -6.250300863e-05 -0.1227801583 -3.634062306e-05 0.08200430259 -2.576314831e-05 -5.226796986e-05 -0.04363615671 5.048528727e-05 -0.08103998456 -2.206996054e-05 -1.934124747e-05 0.01129764896 4.501001527e-05 0.04631806446 --1.17178757e-05 6.37920199e-06 0.007796247637 2.505098933e-05 0.009468631888 -1.657125661e-06 -1.126306873e-05 0.006956961941 4.26041e-06 -0.008072991869 3.724740474e-06 4.811293449e-06 --0.004746486248 -7.489145377e-06 -0.009222454784 3.711828366e-06 -2.429795172e-06 0.0003773061153 --7.963639813e-06 -0.002627714405 1.161565949e-06 -3.403651415e-06 -0.002779463425 -2.675223332e-06 -0.001578884518 -8.626294727e-07 -1.285226848e-06 0.002637173908 1.722597255e-06 0.002291160929 --1.089203719e-06 1.005912051e-06 -0.001445269104 2.357147957e-06 0.0005049890707 -3.651226585e-07 -8.311146496e-07 0.001779337214 8.243800925e-07 -0.0002793911221 1.864209308e-07 3.149014741e-07 --0.001725881556 -3.696913955e-07 -0.0005288860492 -ad : 3 3.113220902 -iw : 4 -0.107044542 0.138798501 -0.03975919992 -0.04156547963 0.009040166779 0.01976016993 --0.009494969936 -0.004224652905 0.001449715216 0.005062245574 -0.004016184354 0.0003101270051 --0.0002711303477 -0.0565599189 0.10406378 0.0002182388386 0.1461462601 0.1431458584 -0.000300200376 0.02595206527 0.006637814684 1.392058762e-05 -0.039259411 -0.04251126538 --8.915310574e-05 -0.01810860078 -0.006742734249 -1.414062118e-05 0.02394694326 0.01802965459 -3.781114694e-05 -0.0006795356408 0.0007300246887 1.530981675e-06 -0.003878427186 -0.006059821715 --1.270844143e-05 -0.005296977465 -0.001629158803 -3.416613591e-06 0.006999212765 0.003951628223 -8.287213418e-06 -0.002642693229 -0.0006531078647 -1.369674462e-06 0.001554335205 -0.0003669809289 --7.696192824e-07 -0.002694832274 -0.0006157635983 -1.291357401e-06 -0.1615605636 -0.03214811309 --6.741987331e-05 0.05540973591 0.0002324076561 0.02045652244 0.1547800498 0.0003245991863 -0.08762428235 0.0003675266402 0.03526569171 0.06309895597 0.0001323288743 0.02312232009 -9.698303242e-05 -0.0005977294908 -0.03585900718 -7.520222769e-05 -0.02223848039 -9.327590208e-05 --0.02021142959 -0.03194498207 -6.699387418e-05 -0.01060294866 -4.447244525e-05 0.009230890619 -0.02115274012 4.436077026e-05 0.008963833699 3.759742841e-05 0.001746983366 0.008132600282 -1.705539853e-05 0.004289530954 1.799178102e-05 0.001026261808 -0.005425930479 -1.137906739e-05 --0.003887499335 -1.630552093e-05 -0.006000023486 -0.008183926877 -1.716303883e-05 -0.002331674964 --9.779853743e-06 0.004695240654 0.007190998051 1.508070399e-05 0.002318686697 9.725376444e-06 --0.001574032908 0.0001642967295 3.445572266e-07 0.0008396956791 3.521974999e-06 0.00153892644 --0.0003750502277 -7.865419274e-07 -0.0009556142613 -4.008177749e-06 -0.002917212993 -0.00332440355 --6.97182026e-06 -0.0007225806791 -3.030754058e-06 -ad : 4 0 -iw : 5 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 -0.3077382577 0 0 -0.340113108 0 -0 -0.2965292449 0 0 -0.2106036639 0 -0 -0.1684140928 0 0 -0.1131428086 0 -0 -0.1019205506 0 0 -0.06113809996 0 -0 -0.06480538679 0 0 -0.02956059757 0 -0 -0.04222106929 0 0 -0.008651775987 0 -0 -0.0303465245 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 -iat : 3 -ad : 0 3.245352337 -iw : 7 -0.0005261532839 0.0006106893134 -0.0002612621427 -0.0001600687481 7.99822757e-05 7.36806635e-05 --6.609569948e-05 -4.651064631e-06 1.473448568e-05 1.639189737e-05 -2.316062751e-05 7.149297419e-06 --2.440110418e-06 -0.1685563703 -6.33196742e-06 -0.0008099741886 -0.008532270949 -7.832955213e-06 --0.00100197792 0.01805061423 6.383986497e-07 8.166283779e-05 0.006653484224 2.328826506e-06 -0.0002978994102 -0.01042941063 -1.702117738e-07 -2.177319216e-05 0.004475203666 -9.746308407e-07 --0.0001246730711 -0.001723208808 3.080516344e-07 3.940542585e-05 0.002703436119 2.642491557e-07 -3.380228945e-05 -0.003397103343 -9.73716732e-08 -1.245561399e-05 0.002710422097 -1.779569024e-07 --2.276393546e-05 -0.002033996442 1.638238984e-07 2.095606631e-05 0.001979183566 -2.478712665e-08 --3.170725853e-06 -0.001984375264 -2.232499018e-08 -2.855773666e-06 -0.001423772944 0.001892377494 -0.2420696165 -0.0006828109867 1.067639247e-05 -0.0007986515314 0.0004325839706 0.05533538431 --0.0009755476043 1.525360502e-05 1.67428257e-06 -0.0001535872318 -0.01964660985 -0.0001417998074 -2.217173456e-06 0.0002434452603 -0.0001492137042 -0.01908715585 0.0002810177074 -4.393976361e-06 --2.406000783e-05 0.0001076810272 0.01377436851 5.978271864e-05 -9.347590759e-07 -5.688681467e-05 --2.448628253e-05 -0.0031322424 -0.0001215854281 1.901102609e-06 -1.653331997e-05 1.729130003e-05 -0.002211872832 -1.234160097e-05 1.929725477e-07 4.918018317e-05 -3.621617404e-05 -0.004632709589 -5.104946847e-05 -7.982064894e-07 -1.643801648e-05 3.766206345e-05 0.004817665232 7.015375812e-06 --1.09692004e-07 -1.259827987e-06 -2.765321695e-05 -0.003537351107 -2.823471755e-05 4.414763845e-07 --1.049608531e-05 2.159971957e-05 0.002762998318 2.172730833e-06 -3.397269164e-08 1.569018239e-05 --2.129857695e-05 -0.002724476682 7.1060815e-06 -1.111102728e-07 -9.131615421e-06 2.178315948e-05 -0.00278646363 4.708533508e-06 -7.362235327e-08 -ad : 1 2.003222249 -iw : 0 -0.03939407335 0.09539752689 0.04832318217 0.005540104914 -0.0004871239567 0.007153618575 -0.00200320899 -0.003117198493 -0.004934024531 -0.0006375918813 0.0005279122371 0.001208064629 --0.000205974071 -0.250756622 -0.01920531896 -0.03440835853 -0.1260665443 -0.04311818406 --0.07725078347 -0.01600196458 -0.02655052661 -0.04756807428 0.007453577712 -0.004543585305 --0.008140313241 -0.006277030672 0.0003388288342 0.000607047664 0.001582930503 -0.0050843439 --0.009109139412 0.00236592269 -0.00494269421 -0.008855359021 0.005137139766 -0.0009578834066 --0.001716149352 -0.001671204273 0.002287486172 0.004098273219 9.821884001e-05 0.001515471155 -0.002715126729 -0.001964851266 0.0004055129126 0.0007265192376 0.00126932605 -0.0004553027313 --0.0008157229596 -0.001011657532 -9.688088572e-06 -1.735723452e-05 -0.1086368373 0.1092097616 -0.1956608293 -0.01091472128 0.01769791485 -0.09232085607 0.06932744514 0.1242074445 --0.02376745072 0.03853825564 -0.03452098087 0.01585094127 0.02839863641 -0.01510379576 -0.02449038179 0.001107064307 -0.001444602931 -0.002588158817 -9.349827175e-05 0.0001516048289 -8.451618548e-05 0.006020594923 0.01078653206 0.003776830237 -0.006124024444 -0.005257376452 -0.002976279146 0.005332318623 -0.001953209312 0.003167074193 -0.007331000413 -0.0001096126574 --0.0001963826596 -0.005352739483 0.008679317147 -0.001468888235 -0.00386966615 -0.006932915854 --0.003447306427 0.005589710817 0.0006850057437 -0.0005579897072 -0.0009996975289 0.0001494461256 --0.0002423227069 0.002070385223 -0.0003568257309 -0.0006392910063 0.001272356095 -0.00206308977 --7.819384208e-06 0.001169039402 0.002094457634 0.000715891885 -0.00116079864 0.0003655932512 --0.0004239544575 -0.0007595592142 1.900636129e-06 -3.081828248e-06 -0.000474657281 0.000512102311 -0.0009174854092 -2.612270284e-05 4.235723098e-05 -iw : 1 -0.1066053008 0.20470001 0.08227382802 -0.01293960292 -0.04074560369 -0.01180574386 -0.00436756065 0.01205844955 0.001520345028 -0.001010926244 -0.004467243037 0.00053660458 --0.0003973587751 0.1070705863 -0.04681525376 -0.08387447456 0.2241315641 -0.09222228684 --0.1652259729 0.1720486883 -0.06053324436 -0.1084517044 0.06526373755 -0.01200650236 --0.02151091783 -0.01200500157 0.01546053912 0.02769918971 -0.02604053788 0.01295511469 -0.02321045706 -0.01465156646 0.002908606457 0.005211075849 0.00289102246 -0.004943141799 --0.008856160924 0.005772858942 -0.003688344203 -0.006608058424 0.004163032692 -0.0009386562863 --0.001681701934 -0.001303703129 0.001762698798 0.003158061179 -0.0009785839683 0.0008660355664 -0.00155159424 -0.001302292526 0.0003781718765 0.0006775348821 -0.2372911634 -0.05222178485 --0.09356084636 -0.02505108545 0.0406196334 -0.160082834 -0.1197255729 -0.2145010165 --0.05406067911 0.08765787701 -0.05971864055 -0.1197187813 -0.2144888486 -0.04762942838 -0.07722978407 0.01838613232 -0.06969723595 -0.1248699638 -0.01991744041 0.03229557177 -0.02174592272 -0.01513895118 -0.02712303093 0.004181927354 -0.006780878074 0.01737926823 -0.01190154982 0.02132288426 0.01105448358 -0.0179245355 -0.003677532863 0.01437830146 -0.02576024657 0.006401423694 -0.01037972922 -0.003017830949 0.004558107662 0.008166331577 --0.0008970104791 0.001454477368 -0.006728292601 -0.002301486305 -0.004123355937 -0.003417338228 -0.005541118221 0.001955530753 -0.003734452022 -0.006690665455 -0.002163682829 0.003508351105 --0.0007330602981 -0.001047388924 -0.001876507946 0.0002801928421 -0.0004543248456 0.003046705053 -0.0004080905293 0.0007311373102 0.0008825234622 -0.001430987076 -0.001636527277 0.0008857629551 -0.001586937942 0.000591519663 -0.0009591325658 -iw : 2 -0.004434869179 0.03542222125 0.06296459969 0.05010339901 0.01541423611 -0.01076808903 --0.01551334377 -0.00691363842 0.002587209354 0.005170285736 0.002584157319 -0.0006779445738 --0.001411811693 -0.04681525376 0.03350547585 -0.004792275253 -0.09222228684 0.06059218437 --0.03096916525 -0.06053324436 0.02956015273 -0.06095721959 -0.01200650236 -0.006890427622 --0.06283399294 0.01546053912 -0.02063044615 -0.03647592104 0.01295511469 -0.01074179263 --0.004522297057 0.002908606457 0.001194725808 0.0133335208 -0.004943141799 0.006984152818 -0.0132060984 -0.003688344203 0.003730298289 0.003961568389 -0.0009386562863 -0.0001540666131 --0.003381817098 0.001762698798 -0.002378819141 -0.004264740234 0.0008660355664 -0.001030265339 --0.001544399574 0.0003781718765 -9.149287305e-05 0.000751492539 -0.01168668593 -0.1783255734 -0.0406196334 -0.01950770213 -0.02880090296 -0.03299098189 -0.08259865929 0.08765787701 --0.05267825471 -0.05699425272 -0.04480272679 -0.007624622024 0.07722978407 -0.06783706318 --0.03976759764 -0.04043832181 0.02708305619 0.03229557177 -0.05791686523 -0.002222651244 --0.02441984263 0.005452159314 -0.006780878074 -0.03264794234 0.02231373563 -0.007159923198 --0.001071401061 -0.0179245355 -0.008161630425 0.02088561239 0.004129193312 -0.009745628317 --0.01037972922 0.006540825148 0.00660091746 0.006687045278 0.000742491367 0.001454477368 -0.008975745097 -0.005748226356 0.003736329112 -0.0003321508952 0.005541118221 0.00459653267 --0.0074675063 -0.0001516489275 0.004328294226 0.003508351105 -0.0005170364036 -0.00305693501 --0.001672745541 -0.001543612551 -0.0004543248456 -0.002237218605 0.001519369574 -0.001170814826 -0.001150464151 -0.001430987076 -0.001467385583 0.002065180675 -0.0001079735083 -0.002187692681 --0.0009591325658 -6.210151389e-05 0.0009349231887 -iw : 3 -0.007945536811 0.06346265279 0.1128077345 0.08976553425 0.02761623297 -0.01929216947 --0.02779379482 -0.01238651386 0.004635258975 0.009263113292 0.004629790932 -0.001214609349 --0.002529409848 -0.08387447456 -0.004792275253 0.02759445762 -0.1652259729 -0.03096916525 -0.02239335588 -0.1084517044 -0.06095721959 -0.04562735581 -0.02151091783 -0.06283399294 --0.08439283689 0.02769918971 -0.03647592104 -0.06562156685 0.02321045706 -0.004522297057 --0.01631980703 0.005211075849 0.0133335208 0.01764091899 -0.008856160924 0.0132060984 -0.0232731772 -0.006608058424 0.003961568389 0.008616683512 -0.001681701934 -0.003381817098 --0.004325359261 0.003158061179 -0.004264740234 -0.00763915081 0.00155159424 -0.001544399574 --0.002935200585 0.0006775348821 0.000751492539 0.0008354334545 -0.0209379329 0.0406196334 --0.1282234025 0.02849437982 -0.01247214891 -0.05910683055 0.08765787701 0.02552269893 -0.05513073018 -0.009905261381 -0.0802688198 0.07722978407 0.08763423473 0.03569157683 -0.02571888098 -0.07244952705 0.03229557177 0.06691793702 -0.002838949261 0.05826085722 --0.04375072877 -0.006780878074 -0.002911695395 -0.02634171854 0.05980539931 -0.01282775907 --0.0179245355 -0.02318036821 -0.02265560233 0.032464531 0.007397886192 -0.01037972922 --0.0225484757 -0.006345814353 0.000685503702 0.0119805483 0.001454477368 0.002536512325 -0.006836360429 -0.01599993961 0.00669402846 0.005541118221 0.006502525561 0.008250247037 --0.01336953083 -0.0002716950799 0.003508351105 0.008655659884 0.003163140762 -0.002954751971 --0.002996900413 -0.0004543248456 -0.002103998235 -0.00179490626 0.004087109946 -0.002097638493 --0.001430987076 -0.0006145827731 -0.00229917308 0.003903386877 -0.0001934459508 -0.0009591325658 --0.003370732007 -0.0009870729681 0.001134880071 -ad : 2 3.03052076 -iw : 4 -0.1103551767 0.1524729883 -0.03086255911 -0.04740681987 0.00330896584 0.02233373055 --0.006140792364 -0.005595723182 -0.000448247658 0.005743920465 -0.002965348266 -6.030469086e-06 --0.0006939570726 -0.05612792653 -0.04700579041 -0.08714335238 0.1575394435 -0.06874722846 --0.1274494887 0.04050017777 -0.008493309252 -0.01574562271 -0.04060876876 0.01964880866 -0.0364266411 -0.02605685993 0.006043404255 0.01120377941 0.02374940137 -0.00804303874 --0.01491087275 0.004093154248 -0.002135257927 -0.00395852367 -0.003850336698 0.002718702046 -0.005040162252 -0.008055422536 0.001777601692 0.003295469968 0.006939326631 -0.00175713701 --0.003257530791 -0.0008550463899 -0.0003828348371 -0.0007097319464 0.001385202475 0.0002297879902 -0.0004260006189 -0.003681624987 0.0006507616215 0.001206437522 -0.1625328952 0.01348308198 -0.02499608993 -0.02672658409 0.04066494441 0.02818831157 -0.07383752169 -0.1368863095 --0.04483104087 0.068211178 0.04500391253 -0.03621869662 -0.06714531583 -0.01507445344 -0.02293603287 0.0008441661022 0.01403806557 0.02602496595 0.00989941831 -0.01506213042 --0.02456368186 0.01776561626 0.03293541805 0.006842063709 -0.01041031429 0.007623915071 --0.007485102358 -0.01387652259 -0.003487307743 0.005305997018 0.003844532615 -0.00550384403 --0.01020349654 -0.002954968233 0.004496033557 0.002127730606 0.001287454078 0.002386792424 -0.001362713703 -0.002073391676 -0.007067371529 0.004501217793 0.008344742316 0.001546382474 --0.00235284678 0.004106212034 -0.002492637715 -0.00462106487 -0.0008136336318 0.00123795717 --0.001106383089 -0.0005350320748 -0.0009918881957 -0.0006155886023 0.0009366283474 0.001754484939 --3.10553416e-05 -5.757304692e-05 0.0003677130763 -0.0005594815915 -0.002969358024 0.001458354215 -0.002703621707 0.0003502595002 -0.0005329256838 -ad : 3 3.347258395 -iw : 5 -0.001280759408 0.001352474033 -0.0007361984028 -0.0002919783563 0.0002374075332 0.0001242895547 --0.0001766566872 2.57592206e-05 3.295650676e-05 2.085687675e-05 -5.057780546e-05 2.950282279e-05 --1.519042777e-05 -0.1616370624 -0.001757933547 -0.0009916598011 -0.000341522301 -0.001988014882 --0.001121449923 0.01696855268 0.0003672083141 0.0002071441917 0.004270186912 0.0005609271349 -0.000316422024 -0.01003583305 -0.0001485764814 -8.381279498e-05 0.005443219552 -0.0002184178553 --0.0001232106909 -0.002178001424 0.000141959579 8.008016464e-05 0.002489892059 3.352717538e-05 -1.891286057e-05 -0.003234963847 -5.222299172e-05 -2.945927146e-05 0.002861723485 -2.692908247e-05 --1.519084075e-05 -0.002242184583 5.773072489e-05 3.256621347e-05 0.002031170596 -1.933846456e-05 --1.090893222e-05 -0.001953262112 -7.755267513e-06 -4.374788257e-06 -0.003450110257 0.2070160378 -0.1167788641 0.0009008433584 0.001490706086 -0.001737472401 0.03540354788 0.01997133242 -0.001181800299 0.001955630667 0.0001575844557 -0.0190665159 -0.01075552452 6.049765077e-05 -0.0001001108743 0.0005467024207 -0.01293446402 -0.007296400957 -0.0003528787721 -0.0005839400695 --0.0001381271135 0.01289613749 0.007274780753 -1.266875217e-05 -2.096411745e-05 -0.0001121525953 --0.004625520843 -0.00260928127 0.000149371281 0.00024717802 6.168281322e-07 0.002026145047 -0.001142959356 -2.198050968e-05 -3.637311554e-05 0.0001005718512 -0.003448926419 -0.001945558006 --5.36051998e-05 -8.870531914e-05 -6.289667581e-05 0.004314397753 0.002433775056 1.070726781e-05 -1.771827381e-05 1.333140787e-05 -0.003548802022 -0.002001898372 2.559060795e-05 4.234706807e-05 --1.476881909e-05 0.002584274962 0.001457803453 -1.410253789e-05 -2.333673093e-05 2.735903676e-05 --0.002396127458 -0.00135166843 8.359245386e-07 1.383279108e-06 -2.91915109e-05 0.002542602083 -0.001434295557 -7.436943853e-07 -1.230657623e-06 -ad : 4 0 -iw : 6 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 -0.3077382577 0 0 -0.340113108 0 -0 -0.2965292449 0 0 -0.2106036639 0 -0 -0.1684140928 0 0 -0.1131428086 0 -0 -0.1019205506 0 0 -0.06113809996 0 -0 -0.06480538679 0 0 -0.02956059757 0 -0 -0.04222106929 0 0 -0.008651775987 0 -0 -0.0303465245 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 -iat : 4 -ad : 0 3.245352337 -iw : 6 --0.0005261532839 -0.0006106893134 0.0002612621427 0.0001600687481 -7.99822757e-05 -7.36806635e-05 -6.609569948e-05 4.651064631e-06 -1.473448568e-05 -1.639189737e-05 2.316062751e-05 -7.149297419e-06 -2.440110418e-06 -0.1685563703 -6.33196742e-06 -0.0008099741886 -0.008532270949 -7.832955213e-06 --0.00100197792 0.01805061423 6.383986497e-07 8.166283779e-05 0.006653484224 2.328826506e-06 -0.0002978994102 -0.01042941063 -1.702117738e-07 -2.177319216e-05 0.004475203666 -9.746308407e-07 --0.0001246730711 -0.001723208808 3.080516344e-07 3.940542585e-05 0.002703436119 2.642491557e-07 -3.380228945e-05 -0.003397103343 -9.73716732e-08 -1.245561399e-05 0.002710422097 -1.779569024e-07 --2.276393546e-05 -0.002033996442 1.638238984e-07 2.095606631e-05 0.001979183566 -2.478712665e-08 --3.170725853e-06 -0.001984375264 -2.232499018e-08 -2.855773666e-06 0.001423772944 -0.001892377494 --0.2420696165 0.0006828109867 -1.067639247e-05 0.0007986515314 -0.0004325839706 -0.05533538431 -0.0009755476043 -1.525360502e-05 -1.67428257e-06 0.0001535872318 0.01964660985 0.0001417998074 --2.217173456e-06 -0.0002434452603 0.0001492137042 0.01908715585 -0.0002810177074 4.393976361e-06 -2.406000783e-05 -0.0001076810272 -0.01377436851 -5.978271864e-05 9.347590759e-07 5.688681467e-05 -2.448628253e-05 0.0031322424 0.0001215854281 -1.901102609e-06 1.653331997e-05 -1.729130003e-05 --0.002211872832 1.234160097e-05 -1.929725477e-07 -4.918018317e-05 3.621617404e-05 0.004632709589 --5.104946847e-05 7.982064894e-07 1.643801648e-05 -3.766206345e-05 -0.004817665232 -7.015375812e-06 -1.09692004e-07 1.259827987e-06 2.765321695e-05 0.003537351107 2.823471755e-05 -4.414763845e-07 -1.049608531e-05 -2.159971957e-05 -0.002762998318 -2.172730833e-06 3.397269164e-08 -1.569018239e-05 -2.129857695e-05 0.002724476682 -7.1060815e-06 1.111102728e-07 9.131615421e-06 -2.178315948e-05 --0.00278646363 -4.708533508e-06 7.362235327e-08 -ad : 1 1.950638213 -iw : 0 -0.03895750537 0.09615671863 0.05138652709 0.007301292503 -0.0005160720341 0.007460470751 -0.003395180849 -0.00209542138 -0.005082498046 -0.001358561509 0.0001148826082 0.001219804125 --9.706103823e-05 -0.2543339905 -0.01851604131 0.03318412024 -0.1335965489 -0.04232783217 -0.07585918873 -0.01996177937 -0.02708488509 0.04854104981 0.007013763192 -0.004993283389 -0.008948873768 -0.006548124875 0.0008295120218 -0.001486636707 0.0004293784301 -0.004594160092 -0.008233572087 0.001900164659 -0.005454416684 0.009775308665 0.005619172214 -0.001918403712 -0.003438129045 -0.0009541855119 0.001770347013 -0.003172784461 0.0002477025723 0.001663976755 --0.002982149574 -0.002077861459 0.0006753792216 -0.001210402641 0.001107559286 -0.0003237925779 -0.0005802953048 -0.001000858304 -2.876743362e-05 5.155648339e-05 -0.1076820819 0.1079685005 --0.1934992281 -0.01026363319 -0.01663199818 -0.09312717198 0.0710377365 -0.1273125692 --0.02275337636 -0.03687136002 -0.0358609151 0.01744018307 -0.03125598622 -0.01492126279 --0.0241795874 0.001080648641 -0.001388655271 0.002488723303 -8.656339828e-05 -0.0001402741366 -0.001311157963 0.005857823403 -0.01049828702 0.004580895475 0.007423243197 -0.004452654357 -0.003822208796 -0.00685009469 -0.0008234257151 -0.00133434377 -0.007671948495 0.0007675449963 --0.001375580505 -0.00503331008 -0.008156371394 -0.002452081278 -0.003686158342 0.006606267484 --0.004051174777 -0.00656484213 9.067140931e-05 -0.0009774891449 0.001751838677 -0.0005421467783 --0.0008785372655 0.002000549568 -0.0006559040785 0.001175499635 0.00102935272 0.001668044079 -0.0001866486944 0.001109645686 -0.001988687282 0.0008234265012 0.001334345044 0.0004528103496 --0.0003482352468 0.0006241010217 0.0001088751863 0.0001764299121 -0.0004516259603 0.0005140343804 --0.0009212432831 -5.021192965e-06 -8.136735868e-06 -iw : 1 -0.1074479333 0.2111034614 0.09257657359 -0.006620490016 -0.04108581151 -0.01549811305 -0.001845078739 0.01220781052 0.003126485749 4.380911652e-05 -0.004540739151 -0.000103329057 --0.0007466286322 0.1062067736 -0.04601001984 0.08245834004 0.2266813605 -0.09268307477 -0.1661049598 0.1815027573 -0.06426030464 0.1151661762 0.07644732696 -0.016287723 -0.02919056775 -0.005335312798 0.01360809528 -0.02438818656 -0.0256245723 0.01392376081 --0.02495391672 -0.01755012932 0.004761362343 -0.00853322899 0.0003362886177 -0.004005623686 -0.007178807597 0.005323042608 -0.004066656963 0.007288190352 0.005089194368 -0.001755457062 -0.003146098956 -0.0004156692986 0.001359176101 -0.002435891259 -0.0008041053325 0.0009931915015 --0.001779980162 -0.001555818464 0.0006516447072 -0.001167866066 -0.2404509372 -0.05048902625 -0.09048553575 -0.02402687481 -0.03893503705 -0.1674641388 -0.1179799312 0.2114415364 --0.05299801316 -0.08588214746 -0.06711904131 -0.1220908174 0.2188089936 -0.04876330814 --0.0790198985 0.01451676313 -0.07583715152 0.1359139955 -0.02276039833 -0.03688273897 -0.02195614618 -0.02135148586 0.03826575359 0.001789794758 0.002900324148 0.0196554821 -0.008920563048 -0.01598727459 0.01065110216 0.01725988338 -0.001616336942 0.0148590482 --0.02663012216 0.0075460092 0.01222814661 -0.002421643729 0.006557502036 -0.01175223863 -0.000400744924 0.0006493985831 -0.007319420757 -0.000981001931 0.00175813423 -0.00306110352 --0.004960452822 0.001129690948 -0.003692731054 0.006618046981 -0.002596658013 -0.004207828805 --0.001092121608 -0.00167537468 0.003002576733 -0.0002787768301 -0.0004517518942 0.003152552755 --5.606535399e-06 1.004793312e-05 0.0007247903566 0.00117450728 -0.001410220836 0.0008410905712 --0.001507387577 0.0006991920992 0.001133025851 -iw : 2 -0.004250698777 0.03444477438 0.06285629416 0.05285023305 0.01969837362 -0.007849418645 --0.01552086361 -0.008835181344 0.0008051620705 0.004855025169 0.003331571452 0.0001186769411 --0.001235217821 -0.04601001984 0.0333683163 0.004483920613 -0.09268307477 0.06223698651 -0.02937221604 -0.06426030464 0.0336348504 0.05922752823 -0.016287723 -0.003378397771 -0.06362509905 0.01360809528 -0.02006561734 0.04031495757 0.01392376081 -0.01264602936 -0.009048566476 0.004761362343 -0.0008883537989 -0.01093829754 -0.004005623686 0.006389012182 --0.01383777257 -0.004066656963 0.004538470533 -0.006093639708 -0.001755457062 0.0008676527289 -0.001827019805 0.001359176101 -0.002049979213 0.004213832618 0.0009931915015 -0.001302337217 -0.002280169931 0.0006516447072 -0.0004524263955 -0.0001459009472 -0.01120119462 -0.1825465418 --0.03893503705 -0.018749467 0.02799864433 -0.03187083276 -0.09083814209 -0.08588214746 --0.0511791868 0.05712519213 -0.04399070175 -0.01333731643 -0.0790198985 -0.0671993125 -0.04307373925 -0.04095525659 0.02641683123 -0.03688273897 -0.05936718617 0.00689451847 --0.02637162545 0.007694965611 0.002900324148 -0.03590611808 -0.01968383822 -0.009617930377 -0.000591829931 0.01725988338 -0.01168401639 -0.02184505542 0.002436905954 -0.009841885405 -0.01222814661 0.004406385182 -0.009492658828 0.006378678778 -0.000384981984 0.0006493985831 -0.008802527504 0.003538193134 0.004478862323 -0.001023947213 -0.004960452822 0.00570901826 -0.007387361255 0.0007002687496 0.004415371788 -0.004207828805 0.0005936468047 0.004261912098 --0.001310354869 -0.001055827469 -0.0004517518942 -0.001836013363 -0.0004386677346 -0.001318189838 -0.001382671086 0.00117450728 -0.001705104734 -0.001915833849 -0.0003545697737 -0.002204158115 -0.001133025851 -0.0003874712309 -0.001254972243 -iw : 3 --0.007618026821 -0.06173131262 -0.1126499336 -0.09471724861 -0.03530307519 0.01406758863 -0.02781621598 0.01583425502 -0.001442997157 -0.008701089842 -0.005970783159 -0.0002126907052 -0.002213735431 0.08245834004 0.004483920613 0.02783424686 0.1661049598 0.02937221604 -0.02598570174 0.1151661762 0.05922752823 -0.03946395799 0.02919056775 0.06362509905 --0.0819047024 -0.02438818656 0.04031495757 -0.06982246937 -0.02495391672 0.009048566476 --0.0238137996 -0.00853322899 -0.01093829754 0.01261172867 0.007178807597 -0.01383777257 -0.0234676362 0.007288190352 -0.006093639708 0.01205926052 0.003146098956 0.001827019805 --0.001387261069 -0.002435891259 0.004213832618 -0.007250705165 -0.001779980162 0.002280169931 --0.004116530378 -0.001167866066 -0.0001459009472 -0.0002723549709 0.02007458197 -0.03893503705 --0.1344927921 -0.02771669552 -0.01233852108 0.05711834019 -0.08588214746 0.01515788423 --0.05538447699 -0.01159884276 0.07883935403 -0.0790198985 0.08418929986 -0.0391814875 -0.02130262561 0.07339928316 -0.03688273897 0.07193762788 -0.001888189335 0.05446661989 -0.04726275855 0.002900324148 0.004115376094 0.02391190731 0.06023162737 0.01723708393 -0.01725988338 -0.02071037439 0.02399772431 0.03726332352 -0.004367379552 0.01222814661 --0.0249339038 0.009572940058 0.006231818091 -0.01143175477 0.0006493985831 -0.001186471832 --0.004509948312 -0.0132932212 -0.008026937473 -0.004960452822 0.005098259827 -0.008273836508 --0.01444763729 -0.00125500921 -0.004207828805 0.009608687815 -0.0045298746 -0.005499278912 -0.002348394713 -0.0004517518942 -0.0004982738092 0.0006262944925 0.002430239892 0.002362436405 -0.00117450728 -6.690962706e-05 0.002165978101 0.003982669971 0.0006354536483 0.001133025851 --0.003602542314 0.001353053339 0.001842694665 -ad : 2 2.994710688 -iw : 4 -0.1106360237 0.156926404 -0.02619533022 -0.04914800796 0.0004393874512 0.02290882971 --0.004381811755 -0.005873343744 -0.001449815506 0.005791066517 -0.002343886419 -9.549776998e-06 --0.0009853889168 -0.05855711466 -0.04588064815 0.08568422954 0.1587249492 -0.06883063931 -0.128544398 0.04683536488 -0.01076169996 0.02009797173 -0.03955829282 0.0191659024 --0.03579320796 -0.02931051287 0.007199930086 -0.01344620198 0.02273116319 -0.007630815156 -0.01425089975 0.006048265817 -0.002837850666 0.005299817191 -0.003318927586 0.002511118416 --0.004689629624 -0.009116258858 0.002155705513 -0.004025879612 0.006576113763 -0.001615763861 -0.003017513639 -0.0001520694252 -0.000637443377 0.001190454948 0.001455572048 0.0002029917558 --0.0003790964797 -0.004038682861 0.0007777744641 -0.001452529735 -0.1640607388 0.01406217428 --0.02626175996 -0.02592889216 -0.03892980974 0.02676007114 -0.07247937456 0.1353585796 --0.04457272163 -0.06692177829 0.04771633658 -0.03847305047 0.07185019873 -0.01636621662 --0.0245723456 0.00297421069 0.01213626523 -0.02266503585 0.009085990044 0.01364176539 --0.02553722493 0.01853761275 -0.03461984801 0.007331700324 0.01100786323 0.006089604098 --0.006071673218 0.01133913017 -0.002896437705 -0.004348730678 0.004329897125 -0.005927673199 -0.01107020348 -0.003179298834 -0.004773420242 0.003005742421 0.0005082314961 -0.0009491457929 -0.001007566462 0.001512766933 -0.007192935152 0.00458367011 -0.00856021564 0.001621656425 -0.002434765654 0.00353130928 -0.001956552828 0.003653952774 -0.0005918786737 -0.0008886505452 --0.001049322394 -0.0005927026155 0.00110689951 -0.0006405000246 -0.0009616509622 0.001999738525 --0.0002432081933 0.0004542025342 0.0002661202343 0.0003995546752 -0.002849040638 0.001336594638 --0.002496152221 0.0003092961046 0.0004643792117 -ad : 3 3.303653192 -iw : 5 -0.0007753576379 0.00085346887 -0.0004212312777 -0.0002028095963 0.000134288275 8.995748625e-05 --0.0001042633409 5.835500768e-06 2.181105231e-05 1.750182007e-05 -3.283451166e-05 1.483516587e-05 --6.489991481e-06 -0.1646020337 -0.001058404368 0.0005862482916 -0.00376118566 -0.001244917912 -0.0006895578105 0.01752362 0.0001742847026 -9.653598589e-05 0.005249753592 0.0003614416658 --0.0002002018939 -0.01025317915 -6.507128261e-05 3.604286736e-05 0.005053913527 -0.0001462668388 -8.101694112e-05 -0.001956063316 7.246817554e-05 -4.013999316e-05 0.002561945307 3.120021059e-05 --1.728174099e-05 -0.003316422996 -2.631656171e-05 1.457669659e-05 0.002807864352 -2.226030981e-05 -1.23299459e-05 -0.002147224371 3.273248094e-05 -1.81304628e-05 0.002002841271 -8.514069694e-06 -4.715928016e-06 -0.001967207812 -5.089672198e-06 2.819160351e-06 -0.002092832074 0.2096400175 --0.1161192317 0.0005484473878 -0.0008764727263 -0.001105559283 0.04101064864 -0.02271572512 -0.0007468548662 -0.00119354734 5.721374937e-05 -0.01847758422 0.01023470094 6.856456191e-05 --0.0001095728959 0.0003445148893 -0.01458119377 0.008076497219 -0.0002209261335 0.0003530616333 --6.378244601e-05 0.01265567424 -0.007009955385 -2.436489629e-05 3.893749438e-05 -7.615195157e-05 --0.00383363895 0.002123445776 9.509306519e-05 -0.0001519680464 -9.614876069e-06 0.001938058626 --0.001073487215 -3.871385093e-06 6.186853146e-06 6.682325817e-05 -0.003701066243 0.00205001399 --3.712970278e-05 5.933690732e-05 -3.260901349e-05 0.004310629058 -0.002387649746 1.700584963e-06 --2.717701592e-06 3.251630541e-06 -0.003377460721 0.001870769468 1.915324772e-05 -3.060876872e-05 --1.13735397e-05 0.002502666972 -0.001386222771 -5.95689991e-06 9.519710406e-06 1.949486422e-05 --0.00238243175 0.001319624696 -2.292484809e-06 3.663615608e-06 -1.595121919e-05 0.002511514833 --0.001391123586 -1.809310846e-06 2.891456218e-06 -ad : 4 0 -iw : 7 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 -0.3077382577 0 0 -0.340113108 0 -0 -0.2965292449 0 0 -0.2106036639 0 -0 -0.1684140928 0 0 -0.1131428086 0 -0 -0.1019205506 0 0 -0.06113809996 0 -0 -0.06480538679 0 0 -0.02956059757 0 -0 -0.04222106929 0 0 -0.008651775987 0 -0 -0.0303465245 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 diff --git a/tests/09_DeePKS/100_NO_GO_deepks_UT/gdmepsl_ref.dat b/tests/09_DeePKS/100_NO_GO_deepks_UT/gdmepsl_ref.dat deleted file mode 100644 index bf5801392e..0000000000 --- a/tests/09_DeePKS/100_NO_GO_deepks_UT/gdmepsl_ref.dat +++ /dev/null @@ -1,5850 +0,0 @@ -0.1454413692 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.1944948489 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.04069268286 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0006548023108 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -5.401391561e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.001113789936 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0001497408684 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0005517480338 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0002044555516 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --7.445868663e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -2.951769811e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.404748462e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --7.352705162e-07 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.04382278235 0.068638404 -0.001514595763 0 0 -0.06472500428 -0.5542284543 -0.003843258643 0 0 --0.001402839913 0.001650026592 0.07564406261 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.08719490988 0.1264090136 -0.002438484549 0 0 -0.1438504175 0.1454767552 0.002957987633 0 0 --0.001809762058 0.00192099433 0.152473817 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.05142220065 0.06697147004 -0.000749582847 0 0 -0.0807314053 0.2170607713 0.001444533602 0 0 --0.0001181026101 -5.928553605e-05 0.09321248408 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.01022400205 0.01062673074 0.0002547446874 0 0 -0.01338465869 0.06496839394 -0.0001409930455 0 0 -0.0004550352274 -0.0005606869724 0.02096517698 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0005685484952 -0.002531159933 0.0003256005946 0 0 --0.002830233814 -0.0006913998812 -0.0003053756215 0 0 -0.0003560187213 -0.0004183474552 0.001202750646 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.001826679963 -0.00297527895 9.658605883e-05 0 0 --0.003270142159 -0.009479594851 -0.000167755422 0 0 -0.0001026677733 -0.0001209417318 -0.003061906236 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.001137143598 -0.001435765025 -1.222120191e-05 0 0 --0.001623153636 -0.008527025998 -7.70919414e-05 0 0 --8.940673689e-06 1.825618018e-05 -0.002568115354 0 0 -0 0 0 0 0 -0 0 0 0 0 -5.229349007e-05 0.0003153613366 -4.276236147e-05 0 0 -0.0003341298118 0.0008099188746 4.526233529e-05 0 0 --4.370975871e-05 5.553979616e-05 -0.0002017323352 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0002922317878 0.0005255516604 -3.265319474e-05 0 0 -0.0005883287893 0.001402786436 4.054630934e-05 0 0 --3.23456534e-05 3.840188548e-05 0.0004130193636 0 0 -0 0 0 0 0 -0 0 0 0 0 -6.467221158e-05 5.740446825e-05 1.725367341e-06 0 0 -7.270000743e-05 0.0005112177546 -1.337901816e-08 0 0 -2.843027091e-06 -3.650727583e-06 0.0001512140239 0 0 -0 0 0 0 0 -0 0 0 0 0 -2.094059494e-06 -5.595025781e-05 9.637575301e-06 0 0 --6.366311175e-05 -0.0001980654171 -9.652811995e-06 0 0 -1.066672304e-05 -1.262119383e-05 7.898652688e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --8.09576109e-06 -1.342497367e-05 9.135112336e-07 0 0 --1.516437623e-05 -1.105445297e-05 -1.00929911e-06 0 0 -9.94847975e-07 -1.140985075e-06 -1.157057825e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.960289637e-05 -2.217953002e-05 3.736067959e-07 0 0 --2.740826523e-05 -0.0001976918627 -3.020130433e-06 0 0 -4.698233863e-07 -5.270969003e-07 -4.651618374e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.032161473 0.02709099457 -0.0004686092419 0.0422464178 0.0004959554494 --0.006061288424 -0.02233295524 -0.0005264958412 -0.03357290373 0.0008045317246 -0.0001955312783 0.0001348261778 0.004073928503 0.000214303681 -0.005467667943 -0.05806580009 -0.03803857557 0.001362483962 -0.05980882763 -0.00163973174 -0.001302482737 0.000822234156 0.04503914855 0.001390177654 -0.06044457856 --0.0129991709 0.007721879922 0.0001079491886 0.0122032208 -0.0001906154993 --0.01960136992 0.005811523734 1.871987602e-05 0.009581787151 -7.2809215e-05 -0.0003654340501 0.0002125412498 0.01091618398 0.0003536315156 -0.01464930103 -0.03042135222 0.009016884917 0.0008316035915 0.01246735553 -0.001140275989 -2.123104089e-05 -0.0001659817341 0.0293630365 -0.0001282216708 -0.03940166369 -0.003013328671 -0.003290088014 0.0002516177119 -0.005105924962 -0.0003163388106 --0.0118231534 0.01110242059 3.369248893e-05 0.01730522941 -0.0001216818457 -6.097005895e-05 -8.928763254e-06 0.006838226835 1.149400645e-05 -0.0091754234 -0.001321424381 0.01848018128 -0.0002362921773 0.02794249691 0.0002234081762 --0.0003882003367 -0.0003033722917 0.00412426411 -0.0004272403174 -0.005532932159 -0.001873520354 -0.0004062377596 5.534216026e-05 -0.0007061311116 -6.183501169e-05 --0.00148998422 0.001104825908 -0.0001141601497 0.001752596332 0.0001356392694 --0.0001034085195 -8.013620431e-05 0.0009854680507 -0.0001142994649 -0.001321484957 --0.001198160687 0.001933183802 -0.0003009086528 0.002999922641 0.0003797553356 --1.088283233e-05 3.135889312e-05 -0.0008017189569 4.587950861e-05 0.001074972229 -8.048990345e-05 0.0001937969389 2.455519961e-07 0.0002862939208 8.803782346e-07 -4.572333357e-05 -0.0003037754103 -2.385188062e-05 -0.0004592655069 3.212971458e-05 --2.669309103e-05 -9.986620546e-06 -6.610942573e-05 -1.44611795e-05 8.879809116e-05 -5.304325828e-05 -0.0005092201284 -2.777812942e-05 -0.0007682028334 3.710732697e-05 -3.090040934e-05 2.207676094e-05 0.000106398918 3.29979785e-05 -0.0001430344998 -1.516841175e-05 -0.0001006497156 1.517551209e-05 -0.000152953781 -1.98647163e-05 --0.000223362013 0.0002388399976 1.041202005e-05 0.0003700686167 -1.505824043e-05 -1.404547207e-05 1.256534795e-05 6.871921745e-05 1.880723584e-05 -9.228681343e-05 --2.559411672e-05 0.000379407971 2.110242156e-05 0.0005757538828 -3.022526761e-05 --1.454889408e-05 -1.578666213e-05 0.0002038309664 -2.252609048e-05 -0.0002734293428 -4.079254739e-05 2.877504119e-06 3.586356258e-06 2.100232587e-06 -4.449341648e-06 --2.053304974e-05 6.893125123e-06 -5.129693824e-06 1.207323316e-05 6.393941772e-06 --1.907225768e-06 -2.509832357e-06 2.569640668e-05 -3.672364944e-06 -3.444280133e-05 --1.567648737e-05 1.50397615e-05 -1.166404034e-05 2.459673929e-05 1.491584753e-05 --1.459418596e-06 1.47472596e-06 -2.490403524e-05 2.247901838e-06 3.337827107e-05 -2.456317702e-05 4.865459238e-06 -3.267465774e-07 6.070881525e-06 6.04260243e-07 --6.334679303e-06 -3.367724657e-06 -2.505077553e-06 -4.602903097e-06 3.23888159e-06 --4.045464595e-06 -2.006602665e-06 7.592262121e-06 -2.863427211e-06 -1.017309434e-05 --3.19486173e-06 -4.575053254e-06 -5.038241818e-06 -6.470630028e-06 6.597011879e-06 -3.105610276e-06 2.14594782e-06 -8.638401223e-06 3.120793467e-06 1.156838013e-05 --5.039919103e-06 -1.941608689e-06 1.148241584e-06 -2.781090723e-06 -1.512299874e-06 --9.410995909e-06 5.266646811e-06 8.420769662e-07 8.272145092e-06 -1.122265477e-06 -8.615691338e-07 1.350417293e-06 -3.783836915e-06 2.00326469e-06 5.067430703e-06 -2.65669401e-06 6.227906004e-06 2.885124468e-06 9.364844476e-06 -3.913249886e-06 --4.209222105e-08 -8.706723397e-07 2.582391972e-05 -1.209021886e-06 -3.464850739e-05 --7.176694775e-06 1.172226207e-05 2.106187812e-08 1.793997556e-05 -4.136953342e-08 -9.096491357e-06 -1.737404256e-05 -1.18449474e-06 -2.656404502e-05 1.623480576e-06 --5.397588235e-07 -5.553384575e-07 -1.793304079e-06 -8.347258545e-07 2.412593027e-06 -1.5271772e-05 -2.848473298e-05 -1.5907541e-06 -4.355775026e-05 2.18722139e-06 -8.122440164e-07 1.01336053e-06 2.815124694e-06 1.52621325e-06 -3.788027324e-06 -3.321688217e-06 -1.493215297e-06 1.065732775e-07 -2.402942264e-06 -1.273809142e-07 --3.99968216e-06 5.04140958e-06 -9.321669611e-08 7.813280678e-06 8.637888862e-08 --1.885665463e-07 -1.684066855e-07 4.16961734e-06 -2.32443865e-07 -5.593296704e-06 --8.242295255e-08 8.708665839e-06 -5.5456092e-07 1.320634314e-05 6.92876772e-07 --1.421499605e-07 -6.763362298e-08 -1.517539202e-06 -1.020546747e-07 2.036006175e-06 -2.448360106e-08 -2.362601682e-06 4.323395643e-07 -3.577911514e-06 -5.682044287e-07 --4.240940689e-06 4.78958381e-06 3.304450833e-07 7.402910105e-06 -4.601421804e-07 -3.6882792e-07 3.997981565e-07 5.528055097e-07 5.952961027e-07 -7.445370557e-07 --9.310825844e-07 7.451608417e-06 7.259393679e-07 1.132298988e-05 -1.01034687e-06 --3.199706876e-07 -4.325559384e-07 5.252160556e-06 -6.220993952e-07 -7.045109792e-06 --2.498133881e-06 2.493987631e-06 -1.400332783e-07 3.874884177e-06 1.737822234e-07 -1.629455868e-06 -2.962012429e-06 -1.132340452e-07 -4.548417247e-06 1.666054806e-07 --1.423350786e-07 -1.04341259e-07 9.363424118e-08 -1.517122592e-07 -1.254052724e-07 -4.969790886e-06 -4.812368978e-06 -1.056871029e-07 -7.484704898e-06 1.693570075e-07 -2.345658032e-07 1.712400621e-07 1.237464811e-06 2.550735671e-07 -1.661094727e-06 -0.06799027659 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0715619195 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.01992819508 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.01149427301 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0001442782027 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0003370889339 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0001306328117 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0001047843743 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.521375529e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0001457312801 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.242861256e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.761837667e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.205407029e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.1637297135 0.1736251329 -0.002692534808 0 0 -0.06191801259 -0.3053837469 -0.001972896798 0 0 --0.001027299435 0.001320521004 0.04508593624 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.04994019074 0.09819387477 -0.00140544364 0 0 -0.02003232937 0.08273045677 0.0006546786039 0 0 -4.663136935e-05 0.0004722228409 0.02902971272 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.00253452717 0.001877384142 0.000155451686 0 0 --0.004699765454 0.007971141766 -2.345332225e-05 0 0 --8.368735496e-05 -6.455838751e-05 0.001227746956 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.01299410712 0.000696481194 2.159322954e-05 0 0 -0.00492185286 0.000465102506 1.274700866e-05 0 0 --4.201178731e-05 -3.598395163e-06 0.0002305465555 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0005384660702 -0.0001223132097 -7.4699298e-06 0 0 --3.290771791e-05 -0.0009117869787 -1.729281733e-05 0 0 -1.824164001e-05 2.612314051e-06 -0.0001292782365 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0004112662051 -0.0008477398553 1.642394161e-05 0 0 --0.0002844381912 -0.001149134765 -1.832648374e-05 0 0 -8.141436817e-06 -9.596019491e-06 -0.0002005160077 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0001241113383 -5.375483707e-06 2.755935936e-06 0 0 --5.555426161e-05 -1.31682231e-05 -5.506786827e-07 0 0 -8.293772631e-06 -7.777813727e-07 1.23210339e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --5.425015086e-05 0.0001511229882 -4.494573799e-06 0 0 --3.622362927e-05 2.698355498e-05 1.066369139e-06 0 0 -5.586070639e-07 1.628052122e-06 3.861435528e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --7.473077473e-05 -3.101215578e-05 -2.933611288e-06 0 0 --4.363003114e-05 -0.0001924020231 -2.142919785e-06 0 0 --1.491004417e-06 8.310198516e-07 -2.799539397e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --8.95531754e-05 -6.42149069e-05 1.333108556e-06 0 0 --6.32008637e-05 -0.0001303026197 -2.238318601e-06 0 0 -1.211979708e-06 -8.062558389e-07 -1.456752019e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.139556458e-06 -1.499022274e-05 1.630195541e-06 0 0 --4.85331277e-06 -5.943320461e-05 -7.447961688e-07 0 0 -3.776874472e-07 -6.119734328e-07 4.707108143e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 -7.718790892e-06 4.040880461e-06 -2.448086536e-07 0 0 --1.394197398e-06 -4.404482643e-05 -3.260354971e-07 0 0 --1.475029684e-07 1.027700726e-07 1.882187557e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.2145513e-05 -5.74078052e-06 -5.211896076e-07 0 0 --7.35803098e-06 -5.608607507e-05 -6.297770285e-07 0 0 --1.920084149e-07 1.544690382e-07 -5.634591566e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.1279745282 0.2091911536 -0.002671586364 0.04617420016 0.0009587456907 -0.05443875529 -0.2575895386 -0.002224175096 -0.05806963911 0.0003287940024 --0.0007866945568 0.001537383246 0.05089101305 0.0003116037276 -0.00867194852 --0.1217463376 -0.1527612258 0.003428986292 -0.03355742547 -0.001028151202 --0.00120687087 0.001229716374 0.1435210063 0.0001765302774 -0.02445596004 -0.05031556594 0.09055780346 -0.0007631177009 0.01114375935 0.0003096871153 -0.04624194964 0.1104093176 0.001203985055 0.01372104177 0.0001860324852 --0.0002933361537 0.0009448075801 0.05384344849 -2.866645822e-05 -0.004873451631 --0.005975270156 0.04126406949 8.920827073e-05 0.005349773339 0.0001061386696 -0.0005854056142 -0.0004231484628 0.01378578475 -9.891018841e-05 -0.001249705928 -0.0004117288118 0.006431524574 0.0001883027413 -0.0001731669302 2.905801678e-05 --0.0007729008306 0.02933299868 6.070347002e-05 -0.0006695015299 0.000136609661 -1.464562447e-05 -7.721841157e-05 0.008120889438 -4.276310147e-05 0.0003544334314 -0.0001475441659 0.01234764251 -0.0002683188783 -0.0002931675483 4.01921877e-05 -2.239509977e-05 -5.017496629e-05 -0.005889375991 3.145344959e-05 -0.0002581800733 -0.005561318189 -0.001481460779 7.382554521e-05 0.0006310177118 1.253731468e-05 -0.00386535452 -0.001639294799 -3.97089835e-06 0.0006796449127 -1.957989333e-05 --7.332338694e-05 -4.671888327e-05 -0.0008201168745 1.971151588e-05 -0.000397489451 --0.0009886642618 -0.0008127723497 -3.038391165e-05 0.0003203258366 -1.231641496e-05 -7.119461005e-05 7.68489255e-06 -0.0006363357063 -1.557257702e-06 -0.0003088290913 -0.0008100831604 -4.612444397e-05 -5.628015048e-06 -1.809892733e-05 -3.757164363e-07 -0.0009638635809 -0.0029706488 -4.889361056e-05 -0.0005839538897 9.855109524e-06 -2.873558526e-05 -6.717968818e-06 -0.0006125090366 -2.824659466e-06 7.407789685e-05 -0.001391730844 -0.001424697113 1.624240121e-05 -0.0002899466208 -1.133906528e-06 -2.12095774e-05 1.632017532e-05 0.0004619225659 3.801070261e-06 -5.595159774e-05 --0.0004862969206 -0.0002339192492 3.390126922e-06 -7.945448941e-06 3.169637481e-08 --0.001035442153 -0.0006472818263 -1.596346221e-05 -1.908479897e-05 -9.474803405e-07 -2.312481711e-05 -8.656629827e-06 -9.816126818e-05 -2.891404352e-07 -6.887778135e-06 --0.0003435914713 -0.0002936119123 -4.516384051e-06 -8.086277968e-06 -9.589535653e-08 --1.668419753e-05 2.697113528e-06 1.896253007e-05 -6.629767714e-09 1.306785135e-06 -8.829989475e-05 -7.751078855e-06 7.668727688e-07 1.25470785e-05 -3.413470801e-07 -6.524949166e-05 -1.497521456e-05 -5.337056661e-07 2.644391754e-05 -6.015157213e-08 -2.64377459e-06 -9.815277272e-07 -5.418091284e-08 -3.747464191e-07 -1.700939883e-05 --4.03502757e-06 -6.575157556e-06 -9.456364876e-07 1.27001532e-05 3.609996687e-07 -9.405579908e-07 -6.904751634e-08 1.246853412e-08 -1.069112842e-07 -1.661877674e-06 --7.39288338e-05 0.0001960122046 -7.217277056e-06 4.362276044e-05 1.52868922e-06 --7.3723089e-05 7.963357518e-05 3.044945282e-06 1.792467231e-05 -3.412935566e-07 -1.92098001e-06 6.00149674e-06 5.521552925e-05 1.255032903e-06 -9.465577825e-06 -1.798238966e-05 2.134517795e-05 3.612275011e-06 4.622800406e-06 -6.274409027e-07 --7.082073643e-07 -1.167358469e-06 7.27653137e-05 -3.342071241e-07 -1.247748878e-05 --2.403880494e-05 -6.691318715e-06 -8.229034043e-07 -1.820375413e-06 1.245001127e-07 --0.0001238202166 -0.0002078205511 -4.504056531e-06 -6.058110725e-05 9.745491381e-07 -4.022243106e-08 -7.436570365e-07 -3.38866102e-05 -2.753216517e-07 7.613752965e-06 --0.0001179291371 -0.0001036001011 8.456529325e-08 -2.983704137e-05 -2.08230436e-07 --3.182564728e-06 1.204476458e-06 3.84160867e-05 4.396850879e-07 -8.641127111e-06 --1.53512805e-06 -1.043039e-05 8.090173906e-07 -3.086273119e-06 -1.955686364e-07 --7.529269957e-06 -0.0001084715461 -2.297159679e-06 -3.181857545e-05 5.0829497e-07 -3.410162784e-07 -1.282422282e-06 -9.893247108e-06 -3.808025986e-07 2.190247876e-06 --5.866844899e-06 -5.212175428e-05 -1.715297182e-07 -1.536027057e-05 -6.520078642e-09 --3.669423316e-07 7.294378194e-07 1.47583887e-05 2.261632543e-07 -3.263711375e-06 -1.232040463e-05 2.617598469e-05 -1.467065556e-07 5.97009507e-06 9.12478271e-08 -6.442520185e-06 -2.104270618e-05 -5.295811722e-08 -4.920427671e-06 4.068130252e-09 -3.799578156e-08 7.845245213e-08 1.330423667e-05 2.850358117e-09 -2.388092386e-06 --9.397600002e-06 -1.320825284e-05 3.027382484e-07 -2.989143473e-06 -9.62534587e-08 --1.434871121e-08 6.144005208e-08 1.570269622e-05 -3.410943005e-09 -2.818816977e-06 -2.147705861e-05 2.413979331e-05 -7.121994096e-07 6.751176488e-06 2.291865444e-07 -1.187333929e-05 -1.617192774e-05 1.86549287e-07 -4.751697198e-06 -1.384955011e-08 --6.522292119e-07 6.005997818e-07 5.416533373e-06 1.769074275e-07 -1.246326091e-06 --1.605631816e-05 -1.073764172e-05 5.077678019e-07 -2.946236851e-06 -1.636613676e-07 -7.007582613e-08 -6.221879702e-09 1.518848292e-05 -6.381926851e-09 -3.490055907e-06 -1.409078738e-06 5.02160001e-06 4.373851381e-08 1.351179357e-06 -2.352907336e-09 --4.562397215e-06 -6.019939094e-05 -1.043484673e-06 -1.61992789e-05 2.089468923e-07 -1.600479217e-07 -3.141034323e-07 -4.956965243e-06 -8.720118468e-08 1.017604999e-06 --9.503042373e-06 -3.021912806e-05 2.015901096e-07 -8.130796381e-06 -8.728773876e-08 --3.155965958e-07 3.673905772e-07 1.366250493e-05 1.062356643e-07 -2.803804902e-06 -0.4883887919 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.09180895673 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.5832564661 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.1559430082 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.004629739133 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.008581633878 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.007920322478 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.003594768609 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.001193480854 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.001328755201 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --8.567300879e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0004203334368 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.455512095e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.4676551549 0.1663769908 -0.001009820216 0 0 --0.3073308032 0.1105143794 0.007827603008 0 0 --0.002386084436 0.006304323199 0.6698026188 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.2460505976 0.01154840827 0.0006891527627 0 0 --0.2363910607 -0.08724350761 -0.004427309689 0 0 -0.0004751311587 -0.007122129596 0.2998382737 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.03163179095 0.04507105187 -5.384475928e-05 0 0 --0.01154994986 -0.01104447034 -0.0007023344827 0 0 -0.0007013858279 0.00149919228 0.01421395525 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.01699342262 0.05877922627 -0.0001668144604 0 0 -0.05177121035 0.1529360629 -0.0005107769203 0 0 --8.386375237e-06 -0.0002652805624 -0.0005974591775 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.003386679054 -0.009068292467 -7.290375035e-06 0 0 --0.009594157712 -0.030055814 0.0001296779253 0 0 -1.561237534e-05 0.0001999059716 -1.907857193e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0002511624737 -0.0009326119764 -1.54558588e-05 0 0 --0.001033823041 -0.003803452746 6.605970717e-05 0 0 --3.827016838e-05 1.356185412e-06 0.0001817172198 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0008300615462 0.003974504384 1.985209223e-05 0 0 -0.003480329878 0.008142759454 -8.174551393e-05 0 0 -6.722057616e-06 -0.0001139894575 -0.001040052017 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0003278606594 -0.001119387528 7.971208534e-07 0 0 --0.001287917591 -0.004030012697 -3.864120176e-05 0 0 -4.558234389e-06 -3.087607532e-05 2.124098193e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -7.732191214e-05 -0.0001763402922 -1.373773578e-06 0 0 --0.0004040798925 -0.000287079488 3.152202752e-05 0 0 --9.16198816e-06 7.929486652e-06 0.0003800982519 0 0 -0 0 0 0 0 -0 0 0 0 0 --6.104607948e-07 0.0006114179677 2.689010702e-06 0 0 -0.0004983489287 0.001166795119 2.564802544e-05 0 0 --3.75427679e-06 1.142405941e-05 -0.0002221773682 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0001279077065 -0.0002818882087 -5.146442522e-07 0 0 --0.000235715965 -0.001386654174 -2.260298232e-05 0 0 -1.918748622e-06 -1.159193656e-05 -0.0001767785759 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.736984912e-05 -1.864274255e-05 5.07108132e-08 0 0 -4.666101596e-06 -0.0001730478959 -1.468874428e-05 0 0 -2.588303875e-06 -5.560996479e-06 -2.082056472e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --5.12604998e-06 8.639991775e-05 9.27946557e-08 0 0 -4.660758143e-05 0.0001344432465 -1.613098079e-06 0 0 -1.179962917e-07 -6.460095438e-07 -7.445213883e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.04415801223 0.3560073897 -0.000641563875 0.1901039195 -0.005004937351 --0.2582262272 -0.3346036034 -0.0006085817478 0.07653954964 -0.0001231229025 -0.0007248635808 0.0005363440335 0.0142309958 -0.0007106524382 0.08804591259 -0.3032328109 -0.1559972359 9.611203168e-05 -0.4628954929 -0.002894617757 --0.004013319751 -0.001805396325 -0.02119836891 0.00382829594 -0.1311149348 -0.2351526592 0.294528693 -0.0005150743966 -0.1263249185 0.00148529822 -0.06426451236 0.189527248 -0.0001686511403 0.03536738286 -0.001158767471 -0.001200640203 0.0004960776213 0.02425200077 -0.001000829407 0.09338504754 --0.1251141683 -0.08341725778 0.0004867239716 0.1147575962 -0.001397236132 -0.002709659914 -0.000807865397 0.1217975908 -0.002711321381 0.4689500064 -0.0004724570948 0.09309725529 0.0004923877935 0.04010185513 0.001806830056 -0.04581695634 0.02773605788 -4.069081593e-05 -0.05697110253 0.0001401480757 -0.0001504001162 -6.719543101e-06 0.01173902416 -5.92405784e-05 0.02648722501 -0.03371962464 -0.1011460576 -0.0003815426685 -0.0952796834 -0.001588240547 -0.0006635719095 0.001755283054 0.03201488311 0.0002069200909 0.07225415104 --0.0009872548223 -0.003517132313 -1.886217913e-06 -0.002459524288 -0.0001082190549 --0.01852232477 0.0155086407 -2.55182602e-05 0.0301167963 -0.0003375775058 --9.886783211e-05 -1.931564758e-05 0.0004010357856 9.70359525e-05 -0.002833256576 --0.004370197039 0.01305110443 4.831816616e-06 0.01592840622 7.222771589e-05 --0.0002524294388 7.300135388e-05 0.0004475708776 0.0003156379862 -0.003167178277 -0.003109055654 -0.005177095476 2.204589669e-05 -0.007497759502 -4.10734551e-05 --0.004952470886 0.008914813687 5.149782338e-06 0.0127115612 -0.0001229126502 --1.053425618e-05 -3.48182813e-06 -9.846632281e-05 2.405123793e-06 0.0004611851814 --0.007351385313 0.01219280701 -1.626272946e-05 0.01768450839 -6.745801398e-05 --6.134234427e-05 -8.52222308e-05 -0.0001470960634 -5.665577346e-05 0.0006906080341 --0.0006591967766 -0.0001118906965 5.947408095e-06 0.0009150469211 7.855253536e-06 -0.0001010056172 -0.001109284349 4.52982482e-07 -0.0009514155986 7.799520374e-05 --1.947055744e-05 -6.623597394e-06 0.0001643722572 1.462411856e-05 0.0007281885363 -0.0006451458623 -0.0009995947943 -8.193442109e-06 -0.001693996861 5.379966427e-05 -6.368110692e-05 1.622547347e-05 -0.0006085884496 -4.74296605e-05 -0.002695902369 --0.000880815308 0.0005865238139 4.722947362e-06 0.001451446017 4.128592498e-05 --0.000508907645 -6.950670831e-06 -3.960283401e-07 0.0005878585316 1.021670812e-05 -2.074543911e-06 1.169408121e-06 -3.198822813e-05 -5.017351722e-07 -0.0002123873878 -0.000959594318 -0.0006423129891 -4.194126232e-06 -0.001585596806 -3.633511852e-05 -8.242110917e-05 -4.723565464e-05 -0.0001250290804 -0.0001258862988 -0.0008312009632 -0.0003466256748 0.0002539737624 1.751880361e-06 -0.000180300993 1.071329007e-05 -8.96232797e-07 0.0003357992875 3.751426531e-07 0.0002754780834 1.041433561e-05 -1.447724547e-06 5.205984271e-07 5.904487492e-06 -1.260133719e-06 7.413908363e-05 --0.0003099552275 1.875075679e-05 -1.303416624e-06 0.0003661396645 -5.128147707e-07 -1.643883492e-05 7.601918727e-06 4.535988491e-05 -1.242984011e-05 0.0005695399122 -0.0001230633972 -0.0001206357944 -4.532611216e-06 -0.0002193257304 -3.638250567e-05 --0.000295111484 1.395201823e-05 -7.706642719e-07 0.0003429600869 2.280703478e-06 --2.57214564e-07 -2.31655742e-07 1.024819793e-05 -1.153734797e-07 7.367100729e-05 --0.0002592375145 0.0002449415441 3.432356017e-06 0.0004568878425 3.245813876e-05 --2.214180136e-05 -1.7403669e-05 -4.878443623e-06 1.326415993e-05 -3.4501453e-05 --0.0003551696848 -9.19890931e-06 -1.87983508e-06 0.0003970781198 -3.830937216e-06 --0.0001864471707 -0.0002878504828 -4.290044435e-07 4.556197339e-06 6.481420798e-06 -9.68093071e-07 -4.64256973e-08 -8.280028712e-06 -6.654125784e-07 -7.381831457e-05 -0.0003812311619 -0.0001511220044 1.520179968e-06 -0.0005422284561 1.717253298e-06 --1.234031987e-06 1.491774823e-06 -7.490081864e-05 6.60700519e-06 -0.0006673723964 --0.0001020090587 8.524456334e-05 1.463408543e-06 0.0001735803497 1.642304443e-05 -7.403934782e-05 -0.0001155592662 2.064060362e-07 -0.0001635263677 -2.031656766e-06 --3.248759623e-07 -1.591835372e-08 1.699574545e-06 2.845170263e-07 1.373534239e-05 -0.0002090050516 -0.0001447498128 -1.20120939e-06 -0.0003347346921 -1.905606463e-05 -1.14842477e-05 4.66440895e-06 -1.859492084e-05 -8.835178277e-06 -0.0001505771343 -1.627328134e-05 -1.461609413e-05 1.738592572e-06 -2.926712485e-05 1.204800636e-05 --6.294567279e-05 3.083783209e-05 -3.059771602e-08 9.404030219e-05 1.136226784e-06 --5.851885803e-08 8.186615962e-09 1.035050958e-06 4.603657504e-08 7.334924744e-06 --1.171946268e-05 9.365897009e-05 -1.635528963e-06 7.954057856e-05 -1.151526288e-05 -9.702952511e-06 4.465139195e-06 -1.094014728e-05 -7.710145534e-06 -7.774163655e-05 --7.809196932e-05 -1.586006343e-06 -6.330529025e-07 8.705273273e-05 -3.104623777e-06 --5.616135442e-05 -0.0001104509267 -1.508575644e-07 -1.472940571e-05 5.771590318e-07 -1.108805448e-07 -1.758537497e-08 -1.613245703e-06 -8.057844055e-08 -1.327877958e-05 -0.0001038165631 -3.985750276e-05 5.063232928e-07 -0.0001453875526 1.480350216e-06 --2.527234273e-06 -7.319025977e-07 -1.883577251e-05 2.992640589e-06 -0.0001549321569 -0.1579692184 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0429065983 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.1490579882 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.04533316801 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.002373125614 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.001057299745 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.001333387549 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.001424303465 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.752507295e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0003330512114 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --5.584489205e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --7.224046997e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.047746172e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.09812544067 -0.05574073268 -0.01625766687 0 0 -0.2267670911 0.02212656913 -0.2209384724 0 0 -0.0317473048 0.4006269406 0.1334649772 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.05930579629 -0.02532677772 0.01060109524 0 0 -0.1301448407 0.1423724662 -0.1735511489 0 0 -0.04048803623 0.1330065108 -0.01014682602 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.008567029953 -0.006616974442 -0.0036447946 0 0 -0.02463817936 -0.02693247154 -0.06526878852 0 0 --0.007681520283 0.01656290989 0.02169652426 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.004642620849 -0.006498675504 -0.01391067206 0 0 --1.784200307e-05 0.00435449262 0.005211198034 0 0 --0.01519332917 0.02043524541 0.03530755461 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0003098053372 0.0004206628911 0.000741573164 0 0 -0.0005458260483 -0.0004788890707 -0.0011449778 0 0 -0.0006097385511 -0.0005334525131 -0.001499678333 0 0 -0 0 0 0 0 -0 0 0 0 0 --5.787979427e-05 1.422805497e-05 0.00052647116 0 0 --0.0002782844437 -0.001708822337 -0.0005765087291 0 0 -0.0002214513835 -0.0008184383416 -0.0006050471575 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0001928268897 -0.0003076916198 -0.0007273339904 0 0 -0.0001218650297 -0.001324670255 -0.0007804984235 0 0 --0.0006834753991 0.0002510536164 0.001267957756 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.864384761e-05 7.13104196e-05 0.000138408611 0 0 -0.0001500868359 -0.0001157853205 -0.0002735992852 0 0 -0.0001506616485 -0.0001227521935 -0.0003301585146 0 0 -0 0 0 0 0 -0 0 0 0 0 -9.996029989e-06 -2.719945778e-05 7.667171609e-06 0 0 -7.323835075e-05 0.0001657047916 9.210719461e-06 0 0 -6.91564606e-05 0.0001786053514 1.158313552e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.289017189e-05 -2.430139795e-05 -8.884064381e-05 0 0 -1.244212972e-05 -0.0003268462567 -0.0001176118939 0 0 --7.750533303e-05 -4.664717622e-06 0.0001584840656 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.638571376e-05 3.238756978e-05 5.250980496e-05 0 0 --1.079473974e-06 -0.000301968193 -0.0001489927075 0 0 -2.68000278e-05 -0.0001755396167 -0.0001511336314 0 0 -0 0 0 0 0 -0 0 0 0 0 -9.495831478e-06 -8.685507216e-06 -1.263338508e-05 0 0 --1.915695044e-05 -0.0001027145746 -4.948613754e-06 0 0 --2.108251843e-05 -9.185810691e-06 2.839289954e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --8.351677627e-06 3.794407745e-07 -8.824667711e-06 0 0 -1.589439802e-05 -5.985807046e-05 -2.710611202e-05 0 0 --3.593096281e-06 1.171217351e-05 1.857052214e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.007232636198 -0.05931727264 -0.04871761331 0.1038453303 0.1270494307 -0.1903009257 -0.1451396588 -0.2790651828 -0.03920537493 -0.01073766962 --0.02246764924 0.04080613658 0.0642416394 -0.00759441844 -0.03730990751 -0.2104437489 0.1056363875 0.009643087185 -0.2688866824 -0.4723033787 -0.003622898192 0.02595128432 0.1494861375 0.288207712 0.0459634376 -0.09040241673 -0.01532096148 -0.08634359265 -0.05092614361 -0.09938322308 -0.04840874312 -0.02335688264 -0.06886935545 -0.03019041117 -0.03382296403 --0.03282472439 0.04321914426 0.06188739904 -0.01875182739 -0.02217468774 --0.01421073663 0.01119007328 0.03974630244 0.03242401616 0.009465864258 --0.08585390787 -0.04660970624 0.1047368782 0.2356981961 0.2169810089 -0.004823490249 -0.009614092717 -0.02379368427 -0.008563285807 0.001254357258 --0.004051860367 -0.001242958925 -0.01531958019 -0.01805389517 0.003427334309 --0.01100551346 0.0099933639 0.009858777016 -0.01165877138 0.002818116123 -0.009292372858 0.002656238082 0.008529610981 0.01260214134 -0.01303348894 -0.01215524271 -0.00181049606 0.03682596882 0.05211413308 -0.005206484062 --0.0001390454693 -0.0002181177518 0.0004857865199 -0.0001851035674 -0.000335879322 --0.003078620201 -0.002804136379 -0.006184200168 -0.004277111703 0.007756450303 -0.004377240257 0.003211599905 0.005035871659 0.00480009514 -0.006918791743 -0.007486092876 0.00777165983 0.01348826714 0.011177634 -0.01770881348 -0.0042821598 0.004188687335 0.007760000184 0.006130333321 -0.01015088355 -0.0007795166709 0.0007542652375 0.001317468089 0.001242242745 -0.001600068644 -0.0003487505063 0.0003720633864 0.0007395607564 0.0001807901966 -0.001081139693 -0.001540433239 0.001638803137 0.00298301297 0.002107021932 -0.003804757538 -0.00236093774 0.001740385748 0.003178693193 0.002330223236 -0.004579453421 --0.001046788209 -0.0009400815186 -0.001738602065 -0.001102355359 0.002384080056 --0.0003550758044 -4.935772912e-05 0.0007830440692 0.001368104299 0.0008673219293 -0.0003490293329 -9.859812933e-08 -6.861980242e-05 5.995856451e-05 -0.000412778598 -0.0002824928682 0.000166327577 0.0002514881142 0.0001540944467 -0.0004855195006 -0.0009292319332 0.00024636908 -0.0005329420434 -0.001141712385 -0.001728313299 -0.0003691476814 -0.0001431120281 -0.00110467788 -0.001415700658 -0.0006939390576 --0.0003726635039 -0.0002366532349 -0.0004160978584 -0.0003198654943 0.0006724187932 --0.0002476687934 -0.0002460035039 -0.0004374144054 -0.0002909943404 0.000579570957 --3.715429236e-05 -6.862339511e-05 -0.0001209244802 -5.04089882e-05 0.0001447157266 -0.0003083441755 0.0002677811888 0.0004735945948 0.0003108093414 -0.0006717634425 -0.0008004663657 0.0005983059818 0.001057131271 0.0007685111281 -0.001577952694 -0.0001369681842 -3.345298132e-05 -9.994990159e-05 -9.386440613e-05 -0.0001224776418 -3.114985213e-05 3.046228893e-06 -1.427092061e-05 -5.346818143e-05 -5.831814896e-05 -7.322502432e-06 9.187590555e-05 0.000153597779 3.227206213e-05 -0.0001528652253 -9.561411087e-05 8.042196581e-05 0.0001611468704 0.0001836819078 -0.0001712532729 --0.0001400542236 2.664564864e-05 0.0001430943096 0.0002966942028 0.0002118714766 -2.324284551e-05 3.840498084e-05 0.0001002789709 0.0001317828519 -3.921515573e-05 -0.0001195995313 -8.784863063e-06 -1.706592048e-05 5.900607377e-05 -0.0001008799568 -0.0001147531361 5.410719888e-05 9.631392489e-05 0.0001020091248 -0.0001741927492 -0.0001642341817 7.659569469e-05 6.929889426e-05 -5.058726903e-05 -0.0003122124573 --0.0001091209344 -7.351432632e-05 -0.0001288342189 -0.0001055026882 0.0001952640515 --0.0001507213444 -4.522198038e-05 -4.262352026e-05 3.865514979e-05 0.0002508173476 --1.968299215e-05 -5.11995466e-05 -8.516774546e-05 -2.240309543e-05 9.498243668e-05 --1.381137607e-05 -3.558053317e-05 -5.990045031e-05 -1.91412971e-05 6.514888313e-05 -0.0001167827573 3.868248944e-05 2.169752543e-05 -0.0001002136103 -0.0002253748981 -0.0002305847735 0.0001062237019 0.0001394959991 1.760802379e-09 -0.0004210038381 --2.724255985e-05 -1.036175146e-05 4.141442252e-06 5.012127269e-05 6.196587792e-05 -1.194659312e-05 -9.839397597e-06 -2.153221179e-05 -1.194671465e-05 -2.010769551e-06 --1.854252259e-05 3.977875536e-06 5.069568501e-06 -1.29038229e-05 9.419353636e-06 -4.226414153e-05 -3.20602972e-07 -3.286666362e-05 -7.798371415e-05 -7.162136867e-05 -4.413562617e-05 5.923790461e-06 -5.111476921e-06 -2.279299163e-05 -6.416226924e-05 --1.061458999e-05 7.88748262e-07 1.707971455e-05 4.081498549e-05 2.357634447e-05 -2.798545472e-05 -1.025087735e-05 -1.805689161e-05 9.763201843e-06 -1.182520916e-05 -1.491063196e-05 1.371673828e-05 2.51014388e-05 2.005265196e-05 -3.092839185e-05 -4.837608169e-05 2.347276414e-05 1.595420255e-05 -3.236974222e-05 -9.948919061e-05 -5.773623394e-06 -7.166515252e-06 -2.198902196e-05 -2.907548013e-05 -4.627703654e-06 --3.146391706e-05 -8.025097126e-06 -1.599924422e-06 2.062414992e-05 5.395268079e-05 -9.641438608e-06 -1.755053242e-05 -3.041002275e-05 -3.459301077e-06 1.56504374e-05 --1.739828911e-06 -7.614108231e-06 -1.294171603e-05 -4.008732167e-06 1.238217342e-05 -3.300566388e-05 8.90730057e-06 -5.012619467e-06 -4.739049828e-05 -6.633467304e-05 -3.97952357e-05 1.854432703e-05 2.333719201e-05 1.33509759e-06 -7.166395484e-05 -0.1564468625 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.05022320962 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.1426945041 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.04969736155 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.003035206731 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0006683975075 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0009824575382 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.001468864668 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0001417394342 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0002831313549 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.945719855e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.815311266e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --4.957402391e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.09480409366 -0.05211866263 0.01478635482 0 0 -0.2248624175 0.009200902809 0.2096759236 0 0 --0.03304998669 -0.3908302575 0.1296356814 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.06151029377 -0.02619230985 -0.009805415038 0 0 -0.1332919577 0.1645558903 0.1611253473 0 0 --0.0426726322 -0.1443336878 -0.005654667265 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.009041413544 -0.00610646782 0.0009581753863 0 0 -0.02744949653 -0.02668370639 0.07114972265 0 0 -0.004474037339 -0.01468359476 0.01507937157 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.00451456762 -0.006374946932 0.01361470451 0 0 -0.001029579705 0.002676900102 -0.00263687866 0 0 -0.01532261636 -0.02029538217 0.03526078615 0 0 -0 0 0 0 0 -0 0 0 0 0 -7.49682272e-05 -5.884380798e-05 3.387580809e-05 0 0 -7.219150508e-05 2.584456458e-05 0.0001654614283 0 0 -0.0001719607384 -0.0004513910831 0.000271028661 0 0 -0 0 0 0 0 -0 0 0 0 0 --9.118172279e-05 2.420662756e-05 -0.0005293141996 0 0 --0.0004304835314 -0.001832798327 0.0003282654978 0 0 --0.0001980179549 0.0009461858819 -0.0005839859504 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0001300631541 -0.0002117456858 0.0005547808344 0 0 -0.0003146442986 -0.00134472999 0.001115537101 0 0 -0.0004936486241 -9.924730359e-05 0.0008497901675 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.353102484e-05 2.153200034e-05 -7.073948022e-05 0 0 -0.0001264145335 2.840902345e-05 0.0001606238012 0 0 --9.794790081e-05 -2.646523389e-05 -0.0001496051691 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.421162762e-05 -4.574637272e-05 3.963698015e-05 0 0 -3.226819424e-05 0.0001464539087 -8.446367401e-05 0 0 --1.939850191e-05 -0.0002072971161 0.0001213784055 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.87864015e-05 2.787643475e-06 4.319822185e-05 0 0 -4.048609465e-05 -0.0004026180769 0.0002087067202 0 0 -3.471003779e-05 9.134307863e-05 3.362587231e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --6.852060468e-06 2.233585249e-05 -4.290448182e-05 0 0 --1.345357351e-05 -0.0002499045173 0.0001048171273 0 0 --1.53485031e-05 0.0001383323579 -0.0001137416689 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.144137427e-05 -1.346267818e-05 2.357157884e-05 0 0 --1.892543461e-05 -8.458945569e-05 -8.30948992e-06 0 0 -2.87920355e-05 -1.02145976e-05 5.28579546e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.260596651e-05 5.760692013e-06 -4.497351033e-07 0 0 -2.05925686e-05 -6.475190455e-05 3.768753512e-05 0 0 --5.708144315e-06 2.440270961e-07 -3.48901238e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.01317897148 -0.05744976912 0.04416979148 0.1072391944 -0.133027706 -0.1888524322 -0.1420028431 0.2732968903 -0.03698007071 0.008811419528 -0.02162688056 -0.03737520965 0.05947689667 0.006422175106 -0.03363357438 -0.2093873868 0.1017297033 -0.006118735733 -0.2697108369 0.4651025038 --0.004054751219 -0.02809034789 0.1425959139 -0.2655427403 0.03683737656 -0.09310847947 -0.01483829201 0.08427875668 -0.04907859583 0.1013640091 -0.05321280171 -0.02609273483 0.07270508858 -0.0282154493 0.03445162711 -0.03189606529 -0.04225708802 0.06117382542 0.01693221617 -0.02245823481 --0.01592322507 0.01177490491 -0.03893178779 0.02893740231 -0.009533743522 -0.09249090434 0.04750406741 0.1024343402 -0.2337481775 0.2242794738 -0.007076930386 -0.00962847624 0.02529973447 -0.008895713915 0.001546996092 --0.002109101258 -0.001098381544 0.01583123323 -0.01759023216 -0.0008003379669 -0.01188294884 -0.0106370787 0.0105079132 0.01231982586 0.00286060791 -0.00762333657 0.00169651939 -0.007589630137 0.01167349347 0.009862374504 --0.008975266669 0.004784375924 0.03692873046 -0.05466302728 0.002453197556 --0.0006322874895 -0.0008819153745 0.0003397342279 -0.0005290939544 -0.0008685620602 --0.003773571704 -0.00290932048 0.006954486946 -0.005357095764 -0.008603529747 --0.003339194803 -0.002873938094 0.004052859709 -0.003368839387 -0.005283692323 -0.007011587665 0.007147686433 -0.01211382537 0.01026180104 0.01664113754 --0.005436311017 -0.004836865346 0.009328656382 -0.007601964202 -0.0123005366 -0.0007801045708 0.0007641971711 -0.001350735511 0.001392910346 0.001553633157 -0.0002175666106 0.0002964571762 -0.0005643692685 -0.0001426754009 0.0009382351142 --0.001621126086 -0.001852796355 0.003347512051 -0.002203489884 -0.004227262462 -0.002744239353 0.00199178545 -0.003585559944 0.002556226388 0.005343468371 -0.000806581937 0.0008068335035 -0.001464605026 0.0008018976889 0.002030038369 --0.0002901102407 8.636473059e-06 -0.00090846198 0.001421377073 -0.0007330683004 -0.0004525888496 5.512199591e-05 -7.624691544e-05 0.0002712094666 0.0005588878083 --0.000540561041 -0.0003105334243 0.0005377033376 -0.0004867589624 -0.0009004057465 -0.001143900645 0.0005034137248 9.445795362e-05 -0.0007714419455 0.002211269593 --0.0002237570403 0.0002306744074 -0.001356344003 0.001681005887 -0.0004737030613 --0.0003358947729 -0.0002423619694 0.0004433811616 -0.0003501223631 -0.0006276030832 --0.0002628308508 -0.0002492197689 0.0004588884849 -0.0003298436965 -0.0005955823505 -0.0001265160704 0.000132687032 -0.0002456102902 0.0001693074648 0.0003115456376 -0.0001469039796 0.0001396449266 -0.0002632749051 0.0001703624741 0.000345097411 --0.0007313944924 -0.000586252766 0.001077376015 -0.0008128483863 -0.001473290801 -0.0001424626762 -5.550510818e-05 0.000153442122 -0.0001437382053 0.0001086836886 -2.276626612e-05 -4.583365227e-06 3.531004052e-05 -8.39654587e-05 4.683305161e-05 -1.249666947e-05 -9.298997481e-05 0.0001520886644 -1.238824617e-05 -0.0001391396738 -9.977399676e-05 8.535560741e-05 -0.0001788454263 0.0002172871162 0.0001724424355 -0.0001278984213 -6.268204982e-05 0.0002414401428 -0.0004213179461 0.0001799308608 -2.123284606e-06 4.77657906e-05 -0.0001305005494 0.0001698313145 1.64919358e-05 -0.0001243770433 -5.991045472e-06 5.979519089e-06 8.350199576e-05 0.0001001711865 --0.0001551033773 -7.03811795e-05 0.0001291227055 -0.0001499450288 -0.0002259602916 -0.0002182617466 0.0001147943599 -0.0001281668136 -2.442206776e-05 0.0004204610951 -8.577521561e-05 7.778717743e-05 -0.0001675889956 0.0001898535674 0.0001468654675 --0.0001484665192 -4.757581696e-05 5.143592892e-05 3.224912229e-05 -0.0002486828908 --2.529398801e-05 -4.620575883e-05 7.853827647e-05 -2.844514684e-05 -9.15009432e-05 -3.158885325e-05 4.007684951e-05 -6.924961234e-05 3.558262821e-05 8.566293602e-05 -9.37163391e-05 2.17701525e-05 1.880000555e-06 -0.0001140155405 0.0001795071115 --0.0002287987187 -0.0001034035079 0.0001405339754 -4.429190415e-06 -0.0004112762365 --1.571936399e-05 -8.870107566e-06 -2.826390052e-06 4.317766682e-05 -4.47485375e-05 -1.432578842e-05 -8.370442789e-06 2.001950439e-05 -1.287630982e-05 6.922467082e-06 -1.729942006e-05 -6.422691693e-06 8.999512162e-06 1.267070941e-05 4.170525644e-06 -3.721754329e-05 -9.381106015e-07 3.060198283e-05 -6.855820873e-05 6.157403955e-05 --2.773517127e-05 -2.198547915e-06 -4.747183367e-06 1.03291171e-05 -3.619549128e-05 --7.230426659e-06 2.449332557e-06 -1.592183189e-05 3.270519914e-05 -1.481475607e-05 -2.762920236e-05 -1.136923587e-05 1.943809384e-05 1.098749148e-05 8.502034519e-06 --1.881890836e-05 -1.317421638e-05 2.46079647e-05 -2.363727539e-05 -3.299504026e-05 -4.454171201e-05 2.583458937e-05 -2.485758549e-05 -2.05233135e-05 9.511110882e-05 -1.076430535e-06 6.176066036e-06 -1.64673542e-05 2.167780276e-05 3.675319413e-06 --3.237969711e-05 -8.45155402e-06 2.34686572e-06 2.146231357e-05 -5.569578292e-05 -7.955425461e-06 -1.588034129e-05 2.795115184e-05 -4.647488262e-06 -1.479332662e-05 -4.803990623e-06 8.035538023e-06 -1.394235179e-05 6.741714403e-06 1.536278892e-05 -3.081128127e-05 5.938302751e-06 9.497917039e-06 -5.051215344e-05 6.05585187e-05 --4.150673615e-05 -1.817612987e-05 2.199947935e-05 1.565219601e-06 -7.346787084e-05 -0.002251016997 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.000392008583 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.001676198375 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.000195846796 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --4.769292049e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --5.494133299e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --4.392171177e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.744674153e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.69565811e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -7.510288037e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.592220718e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -7.164200196e-07 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -3.649749878e-07 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0008977603466 -0.001147492263 -0.05636165102 0 0 --0.001402839913 0.001650026592 0.07564406261 0 0 --0.06809613942 -0.7665594993 0.001116409688 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.001046000966 -0.001258194732 -0.1136147375 0 0 --0.001809762058 0.00192099433 0.152473817 0 0 --0.1202064538 -0.2458435493 0.01116232136 0 0 -0 0 0 0 0 -0 0 0 0 0 --9.766074613e-05 0.000158225321 -0.06946433988 0 0 --0.0001181026101 -5.928553605e-05 0.09321248408 0 0 --0.07477822583 0.00946208197 0.00427388677 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.000378797166 0.0004475886114 -0.01562756258 0 0 -0.0004550352274 -0.0005606869724 0.02096517698 0 0 --0.01742241976 0.03188273627 -0.0007616563603 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0002650849304 0.0003164682097 -0.0008992439619 0 0 -0.0003560187213 -0.0004183474552 0.001202750646 0 0 --0.001025150246 0.007043204125 -0.00126540618 0 0 -0 0 0 0 0 -0 0 0 0 0 --7.01972864e-05 8.690764993e-05 0.002281050292 0 0 -0.0001026677733 -0.0001209417318 -0.003061906236 0 0 -0.002275897015 -0.0002799237541 -0.0004728803717 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.117366706e-05 -1.729670741e-05 0.001914016092 0 0 --8.940673689e-06 1.825618018e-05 -0.002568115354 0 0 -0.001811582619 -0.004061316955 -5.604092873e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -3.266279936e-05 -4.207547052e-05 0.0001507254663 0 0 --4.370975871e-05 5.553979616e-05 -0.0002017323352 0 0 -0.0001662095988 -0.0001524974325 0.000171052233 0 0 -0 0 0 0 0 -0 0 0 0 0 -2.310761571e-05 -2.831996509e-05 -0.000307526699 0 0 --3.23456534e-05 3.840188548e-05 0.0004130193636 0 0 --0.0003022165851 -0.0002188686901 0.0001401280915 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.419347463e-06 2.953729619e-06 -0.0001127135475 0 0 -2.843027091e-06 -3.650727583e-06 0.0001512140239 0 0 --0.0001223462826 0.0003316051901 -4.179337094e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 --8.049631172e-06 9.610466942e-06 -5.895149151e-05 0 0 -1.066672304e-05 -1.262119383e-05 7.898652688e-05 0 0 --6.782256796e-05 -2.834455777e-05 -3.780389084e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --7.121726067e-07 8.403447623e-07 8.61502485e-06 0 0 -9.94847975e-07 -1.140985075e-06 -1.157057825e-05 0 0 -9.507390899e-06 3.039850653e-05 -3.792723728e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.589524395e-07 3.225245403e-07 3.466282138e-05 0 0 -4.698233863e-07 -5.270969003e-07 -4.651618374e-05 0 0 -3.193623968e-05 -0.0001285439471 -4.401545147e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0006495391799 -0.000405247102 -0.02426580513 -0.0006938359267 0.032565645 -0.0001955312783 0.0001348261778 0.004073928503 0.000214303681 -0.005467667943 -0.006055795101 -0.03263776209 -0.0001975361369 -0.04963746243 0.0004136513657 --0.001263550203 -0.0008196557052 -0.0444627223 -0.001385266654 0.05967102969 -0.06315708377 -0.06568631568 0.0005155840069 -0.1018691818 -0.0003718924374 -0.000198872441 0.0002185450963 -0.01229819982 0.0002712206587 0.01650213021 -0.0003654340501 0.0002125412498 0.01091618398 0.0003536315156 -0.01464930103 -0.01244170998 -0.01836108282 0.0007836661259 -0.02827677513 -0.0009611274972 -5.921385242e-05 0.0001563680969 -0.02781832136 0.0001170319578 0.03732889823 -0.04033341882 -0.05916252626 -0.0005547358038 -0.09117700703 0.001057875013 -0.0002894608027 0.0001914202192 0.000533375676 0.0002803615703 -0.0007162568446 -6.097005895e-05 -8.928763254e-06 0.006838226835 1.149400645e-05 -0.0091754234 -0.008187403629 -0.001043365651 0.0003893210449 -0.001906395013 -0.0005082830897 -0.0004137583839 0.0002811956202 -0.003156459468 0.0003964970819 0.004234478902 -0.004091419367 -0.01905823557 -0.000268103785 -0.02903984274 0.0004638085426 --2.812810651e-05 -4.952710074e-05 0.0008822451358 -7.149701967e-05 -0.001182982517 --0.0001034085195 -8.013620431e-05 0.0009854680507 -0.0001142994649 -0.001321484957 -0.00203556941 0.0006725555869 -0.0001099588856 0.0009295867512 0.0001501400076 --1.332065635e-06 -4.393384549e-05 0.000941289844 -6.404766684e-05 -0.001262110165 --0.002616518851 -0.00106283214 0.0001561461102 -0.001496477677 -0.0002112161553 --2.845764743e-05 -1.725560957e-05 -8.967213514e-05 -2.56397655e-05 0.000120524124 --2.669309103e-05 -9.986620546e-06 -6.610942573e-05 -1.44611795e-05 8.879809116e-05 -0.0001731815649 -0.0001355819364 -2.640421156e-05 -0.0002142271303 3.724716161e-05 --3.466471473e-05 -2.32023113e-05 -0.0001157382177 -3.461295195e-05 0.0001555796161 --0.0002495072647 3.482666747e-06 2.768041358e-05 2.031064776e-05 -3.999872357e-05 -1.461412402e-05 1.462420254e-05 -8.825130714e-05 2.124766939e-05 0.0001183395847 -1.404547207e-05 1.256534795e-05 6.871921745e-05 1.880723584e-05 -9.228681343e-05 -6.279061513e-05 -0.0001168676851 4.175235227e-05 -0.0001791124462 -5.549925006e-05 -1.683691754e-05 1.705960381e-05 -0.0001941048261 2.441125008e-05 0.0002603699402 -0.0002105402776 -0.000357157117 -5.331140455e-05 -0.0005489594194 7.320952778e-05 -2.416769335e-07 -1.861911609e-06 2.531630275e-05 -2.782457943e-06 -3.393162593e-05 --1.907225768e-06 -2.509832357e-06 2.569640668e-05 -3.672364944e-06 -3.444280133e-05 -5.200515119e-05 1.541568206e-05 -2.331092112e-06 2.115691049e-05 3.160423947e-06 -1.231026937e-06 -1.833595572e-06 2.854629265e-05 -2.775887366e-06 -3.825965108e-05 --7.295024511e-05 -2.079950348e-05 2.732263363e-06 -2.83912255e-05 -3.73645686e-06 --3.35698442e-06 -2.075357655e-06 8.206138564e-06 -3.001314762e-06 -1.099119827e-05 --4.045464595e-06 -2.006602665e-06 7.592262121e-06 -2.863427211e-06 -1.017309434e-05 -3.517599397e-05 4.173400874e-06 -4.350711187e-06 4.681979853e-06 5.966527298e-06 --3.659215588e-06 -2.424366474e-06 9.714264495e-06 -3.51873309e-06 -1.300977756e-05 --5.241202369e-05 -6.526864486e-06 5.536118936e-06 -7.398314511e-06 -7.644079824e-06 -3.80655528e-07 1.060974904e-06 -1.650660338e-05 1.526102104e-06 2.214336119e-05 -8.615691338e-07 1.350417293e-06 -3.783836915e-06 2.00326469e-06 5.067430703e-06 --1.186546088e-06 -1.889304503e-05 3.747337235e-06 -2.85679447e-05 -4.927742345e-06 -1.765026336e-07 1.034480115e-06 -2.635934133e-05 1.450778534e-06 3.536565373e-05 -2.245379028e-05 -2.007298957e-05 -5.19309766e-06 -3.112153896e-05 6.988072571e-06 --6.998469053e-07 -8.296512055e-07 -2.393456476e-06 -1.24891657e-06 3.220477458e-06 --5.397588235e-07 -5.553384575e-07 -1.793304079e-06 -8.347258545e-07 2.412593027e-06 -9.91427117e-07 -4.705882197e-06 -1.364930521e-06 -7.170727351e-06 1.854911217e-06 --8.989572777e-07 -1.07339635e-06 -3.068065744e-06 -1.615962839e-06 4.128290007e-06 -2.406224086e-06 -3.788838316e-07 1.565466433e-06 -6.157630011e-07 -2.121052545e-06 -2.575469502e-08 -2.040632711e-08 2.651807314e-06 -2.247857639e-08 -3.55744832e-06 --1.885665463e-07 -1.684066855e-07 4.16961734e-06 -2.32443865e-07 -5.593296704e-06 -5.651850203e-06 1.965301701e-06 -1.202150411e-07 2.744585937e-06 1.6049388e-07 -1.220312407e-07 3.66752416e-08 2.107714883e-06 5.808016635e-08 -2.827636982e-06 --4.177806436e-06 -6.986460727e-06 2.763161553e-07 -1.041744005e-05 -3.384828362e-07 -3.432922089e-07 4.203682663e-07 -2.792172844e-06 6.132257486e-07 3.74405018e-06 -3.6882792e-07 3.997981565e-07 5.528055097e-07 5.952961027e-07 -7.445370557e-07 -5.021850066e-07 -3.295886029e-06 1.252216613e-06 -5.004209279e-06 -1.664758993e-06 -3.777124544e-07 4.784737173e-07 -5.173909139e-06 6.900047021e-07 6.939762192e-06 -4.910124444e-06 -6.49788192e-06 -1.657754494e-06 -1.001879592e-05 2.248465973e-06 --1.952295916e-07 -1.426262424e-07 -6.756472271e-07 -2.108965988e-07 9.070668569e-07 --1.423350786e-07 -1.04341259e-07 9.363424118e-08 -1.517122592e-07 -1.254052724e-07 -2.254746796e-07 -1.044288084e-06 -3.344128332e-07 -1.590315862e-06 4.532513719e-07 --2.565896241e-07 -1.836706888e-07 -1.224227932e-06 -2.729329216e-07 1.643353844e-06 -2.434354399e-06 -2.155889283e-06 4.575190919e-07 -3.359273829e-06 -6.013780874e-07 -0.001167868092 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0007412733243 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.000826526002 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --4.727748894e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.669128808e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.715985335e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --7.262168278e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.189014315e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.555620234e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.609331967e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.435252947e-07 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.213058143e-08 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -3.910243265e-07 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.002576231355 -0.001303906761 -0.1186109084 0 0 --0.001027299435 0.001320521004 0.04508593624 0 0 --0.08073220954 -0.4496860808 0.0005625685873 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.000243919481 7.354651709e-05 -0.0746319742 0 0 -4.663136935e-05 0.0004722228408 0.02902971272 0 0 --0.02376360653 0.002766692133 0.00196518745 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0002623293417 0.0002150932106 -0.001977495812 0 0 --8.368735494e-05 -6.455838766e-05 0.001227746957 0 0 --0.00252049791 0.007457295728 -0.0001589482331 0 0 -0 0 0 0 0 -0 0 0 0 0 -9.40827531e-05 2.011060037e-05 -0.0007152974333 0 0 --4.201178734e-05 -3.598395129e-06 0.0002305465552 0 0 --0.006351937619 -0.0001769734909 -3.876368226e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 --5.251996165e-05 -1.053525622e-05 0.0004040060596 0 0 -1.824163999e-05 2.612313985e-06 -0.0001292782361 0 0 --0.000485433572 -0.0007679742094 -9.703085557e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.180661823e-05 1.527925663e-05 0.0005484001886 0 0 -8.141436826e-06 -9.59601946e-06 -0.000200516008 0 0 -7.74328242e-05 -0.0004258571734 -3.3627723e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.511277339e-05 2.369097139e-06 -3.885020462e-05 0 0 -8.293772629e-06 -7.777813571e-07 1.232103379e-05 0 0 --0.0001684884448 -1.210002956e-05 -2.998897938e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.475610941e-06 -2.461524712e-06 -9.457416846e-05 0 0 -5.58607073e-07 1.628052027e-06 3.861435595e-05 0 0 -1.066132764e-05 -9.341322469e-05 5.198119195e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 -5.036130279e-06 -3.191307181e-06 7.220588384e-05 0 0 --1.491004398e-06 8.31019951e-07 -2.799539467e-05 0 0 -2.361237247e-05 -0.0001701638274 3.784381442e-07 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.340617187e-06 1.385240827e-06 3.876752315e-05 0 0 -1.211979699e-06 -8.062558728e-07 -1.456751996e-05 0 0 -1.418527209e-05 -7.640744004e-05 -3.491955257e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.122049094e-06 1.684453387e-06 -1.15820989e-05 0 0 -3.776874471e-07 -6.11973436e-07 4.707108165e-06 0 0 --3.97785074e-06 -4.533332128e-05 -2.19162883e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 -4.15419687e-07 -2.106580325e-07 -6.271389762e-06 0 0 --1.475029668e-07 1.02770099e-07 1.882187373e-06 0 0 --8.002171432e-06 -4.835315847e-05 -1.105327688e-07 0 0 -0 0 0 0 0 -0 0 0 0 0 -5.960188355e-07 -6.002467616e-07 1.534007211e-05 0 0 --1.920084183e-07 1.544690158e-07 -5.63459141e-06 0 0 -3.221088983e-06 -5.139677747e-05 -1.736209462e-07 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.001578946293 -0.001258420158 -0.1477428888 -0.0001819810098 0.02517627686 --0.0007866945568 0.001537383246 0.05089101305 0.0003116037276 -0.00867194852 --0.04762079047 -0.4170304545 0.0005441882047 -0.09323722251 -0.000538855108 -0.001405667645 -0.0007050473313 -0.1392328963 -6.319647573e-05 0.02372627003 --0.1283640673 -0.2627004086 0.001277235977 -0.05816912339 -0.0007629080856 --0.0001248242036 0.0004453167645 -0.07542608516 0.0002721430848 0.006831871067 --0.0002933361537 0.0009448075801 0.05384344849 -2.866645823e-05 -0.004873451631 --0.03846651601 -0.03666403088 0.0034646387 -0.004351954487 -0.0004089362374 --0.000389398028 0.0008657711877 -0.009249070862 0.0001409778618 0.0008400424875 --0.008222356738 -0.06529881334 -0.001028895478 -0.008296286945 -8.478143906e-05 --4.676677793e-05 0.0003172963637 -0.005472173386 2.485885455e-05 -0.000236928092 -1.464562448e-05 -7.721841183e-05 0.00812088944 -4.276310148e-05 0.0003544334315 --0.002139786527 0.01444601908 -3.780187485e-05 -0.0002468472248 9.195727547e-05 --1.745028694e-05 7.954038504e-05 0.006572498748 -3.609138248e-05 0.0002880839781 -0.0007417699892 -0.000686030745 -9.703420773e-05 -2.650275742e-05 -2.154370114e-05 -4.461063601e-05 3.233432428e-05 0.001707242122 -1.5619311e-05 0.0008277608394 --7.332338696e-05 -4.671888339e-05 -0.0008201168737 1.971151593e-05 -0.0003974894506 --0.004721634522 0.001297871897 -0.0001365528868 -0.0005557485894 -4.691563937e-05 --5.515368384e-05 -1.898730208e-05 0.0005669392184 6.321743865e-06 0.0002750990815 --0.002029596399 0.001291630727 2.519804534e-05 -0.0005322942982 2.189256881e-05 --5.674760126e-05 -1.324843965e-05 0.0006928710011 -5.303807098e-07 -8.371722803e-05 -2.873558524e-05 -6.717968974e-06 -0.0006125090355 -2.824659494e-06 7.407789671e-05 --0.001937111406 -0.001701112542 -6.040435459e-05 -0.0003066348736 1.28838856e-05 --1.121647204e-05 -2.003947491e-05 -0.0005139114824 -4.732872286e-06 6.223464868e-05 -0.001349010036 -0.0002909220239 2.862274329e-05 -7.134091287e-05 -4.833343348e-06 --1.830609908e-05 5.699819166e-06 9.913623701e-05 2.600425051e-07 6.971580843e-06 -2.312481711e-05 -8.65662979e-06 -9.816126842e-05 -2.891404351e-07 -6.887778153e-06 -0.0001394239461 -0.0001083068245 -2.63135374e-05 -5.161480664e-07 -1.13281708e-06 -1.560107918e-05 -4.770581533e-06 -2.719201357e-05 -6.468062328e-08 -1.885744144e-06 --0.0001483572943 1.52848567e-05 9.886317132e-06 -6.828657264e-07 4.015601718e-07 --4.629398998e-06 1.191915741e-06 2.892113605e-08 9.172220586e-07 2.383513008e-05 -2.643774586e-06 -9.815277274e-07 -5.418091297e-08 -3.747464148e-07 -1.70093988e-05 --9.541183704e-05 -1.058691946e-07 -1.875449778e-06 2.333404627e-06 3.427782834e-07 --2.964045887e-07 -5.042893445e-08 -1.320716763e-08 1.336740097e-07 2.22874455e-07 -1.877523487e-06 6.035382267e-06 8.339908357e-07 -1.160118872e-05 -1.396043313e-07 --2.332842093e-06 -5.083788762e-06 -0.000101075391 -1.000121045e-06 1.733081259e-05 -1.920980018e-06 6.001496597e-06 5.521553026e-05 1.255032871e-06 -9.465578e-06 -2.745672701e-05 -0.0001928404754 1.744434437e-05 -4.271148584e-05 -3.213579331e-06 -6.11356635e-07 2.351047142e-06 -6.816372193e-05 5.908874563e-07 1.168965591e-05 -4.294209858e-05 -0.0001416026338 -4.893987078e-06 -3.145302374e-05 6.443049743e-07 -2.420836523e-06 -6.625228141e-07 1.74775275e-05 -1.832992194e-07 -3.918236015e-06 -4.022244486e-08 -7.436569421e-07 -3.388661086e-05 -2.753216249e-07 7.613753114e-06 -4.514316877e-05 -0.0001278375081 -4.089697974e-06 -3.805871508e-05 1.255520802e-06 -2.744637399e-06 -1.462762454e-06 -4.12709842e-05 -5.177823475e-07 9.28157783e-06 --0.0001161193981 -4.220495633e-05 1.185173886e-06 -1.170384337e-05 -5.421757168e-07 --2.460411432e-07 8.653929214e-07 5.493929347e-06 2.540748198e-07 -1.217715524e-06 -3.410162738e-07 -1.282422336e-06 -9.893246738e-06 -3.808026139e-07 2.190247795e-06 -7.467944867e-07 -5.033226992e-05 -4.65348528e-06 -1.464478464e-05 1.107161813e-06 -3.744462968e-07 -9.835341147e-07 -1.558952246e-05 -3.014029805e-07 3.447511488e-06 --4.26573174e-06 -1.844085644e-05 1.772401831e-06 -5.485784106e-06 -4.432623834e-07 --6.93065048e-08 1.562746523e-07 -2.61701165e-05 6.627109813e-08 4.697850429e-06 -3.799578002e-08 7.845248589e-08 1.330423643e-05 2.850366214e-09 -2.388092343e-06 --6.48517842e-06 -4.339786532e-05 4.10852729e-08 -1.000122174e-05 -7.523440792e-08 -5.147339393e-08 -4.59697769e-10 -1.457970271e-05 1.598720487e-08 2.617400091e-06 --8.281623459e-06 -3.367519682e-05 2.022651759e-07 -7.73669252e-06 -9.835510121e-08 -8.100389168e-07 -5.990314298e-07 -1.673454076e-05 -1.748648549e-07 3.847594664e-06 --6.522292121e-07 6.005997903e-07 5.416533312e-06 1.769074299e-07 -1.246326078e-06 --8.851366504e-06 -4.217079608e-05 1.487367266e-06 -1.204393768e-05 -3.766951115e-07 --7.165603914e-08 1.221427184e-07 -1.473293032e-05 3.959559614e-08 3.38539871e-06 --1.924736373e-05 -2.629928429e-05 -4.545804345e-07 -7.391023286e-06 4.453155141e-08 --2.574152893e-08 5.40178515e-08 -1.033922305e-06 1.39825305e-08 2.11851956e-07 -1.600479209e-07 -3.14103454e-07 -4.956965091e-06 -8.720119045e-08 1.017604968e-06 -2.542901528e-06 -4.302206689e-05 -1.617679892e-06 -1.157790742e-05 3.630744668e-07 -3.106892085e-07 -4.366844639e-07 -1.408029884e-05 -1.251063002e-07 2.889478129e-06 --8.920530856e-06 -1.864700723e-05 6.860217928e-07 -5.016647237e-06 -1.874450016e-07 -0.002603600421 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.00225812302 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.001809795384 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0004065454268 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -4.75222115e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -4.67792367e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.531053468e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --4.40365507e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -7.624034242e-07 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -7.658838324e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --4.321963687e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --5.251700546e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.79514931e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0006007296745 -0.0004958601357 0.08077406274 0 0 --0.002386084436 0.006304323198 0.6698026185 0 0 --0.3378724732 -1.00713807 0.00437167834 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0002799686825 -0.001239819958 0.05070693974 0 0 -0.0004751311583 -0.007122129644 0.2998382758 0 0 --0.15633803 -0.2950297621 0.001666898049 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.484523231e-05 2.493185474e-05 0.005748466168 0 0 -0.0007013858258 0.001499192298 0.01421395665 0 0 --0.05859992185 -0.1824181604 -0.0002464102899 0 0 -0 0 0 0 0 -0 0 0 0 0 -8.823311702e-06 6.532563604e-05 -0.002231534287 0 0 --8.38637549e-06 -0.0002652804941 -0.000597460818 0 0 --0.01258864378 -0.0291824181 9.948313997e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -6.001628826e-08 -2.037125749e-06 -0.0001667826176 0 0 -1.56123753e-05 0.0001999059714 -1.907886702e-05 0 0 --0.00113919032 -0.003608825007 4.860817536e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --4.077758056e-06 2.384178761e-05 0.0005795622106 0 0 --3.827017337e-05 1.356286804e-06 0.0001817198742 0 0 --5.368068581e-05 -0.002182437573 -1.481002369e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --6.923993336e-08 -4.911558112e-06 -0.0001683865626 0 0 -6.722060426e-06 -0.0001139895175 -0.001040053705 0 0 --0.0005365537492 -0.002374246582 -5.010732096e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -4.827195503e-07 5.483714478e-07 -2.992138693e-05 0 0 -4.558234354e-06 -3.087607583e-05 2.124125648e-05 0 0 --0.0001944468546 -0.0005079454892 -1.103465447e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -6.685050141e-08 -2.326667362e-07 6.438130406e-05 0 0 --9.161988992e-06 7.929485656e-06 0.0003800992476 0 0 --3.451695366e-05 -4.900374421e-05 1.198339005e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.080348057e-07 -8.557800523e-07 -3.797561625e-05 0 0 --3.75427538e-06 1.142403933e-05 -0.0002221784527 0 0 --6.952799801e-05 -0.0004837707697 2.076505445e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 --6.58840969e-08 9.547351998e-08 -1.100205351e-05 0 0 -1.918748394e-06 -1.15919312e-05 -0.0001767783973 0 0 --1.686983013e-05 -0.0002928114551 -1.018768439e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --4.71816487e-08 2.211490581e-07 6.77230392e-06 0 0 -2.588303498e-06 -5.560990689e-06 -2.08202011e-05 0 0 -3.645782565e-06 -9.624087612e-05 -6.361397598e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 --7.424839467e-09 -1.239256304e-07 -8.600777899e-06 0 0 -1.179966332e-07 -6.460121273e-07 -7.445584412e-06 0 0 --3.060840552e-05 -0.0001322177012 -9.749053521e-07 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.001326469693 0.000853698029 0.04916153084 -0.001748021933 0.3041738951 -0.0007248635808 0.0005363440335 0.0142309958 -0.0007106524382 0.08804591261 --0.4026746815 -0.7958375877 -0.0008216575934 -0.06735387811 0.0009322744996 --0.005878790729 -0.002130498034 0.2309048821 0.001871263677 1.42881996 -0.4888971339 -0.2963325597 0.001671005835 -0.7772054031 0.004728275534 -0.0003085892935 0.0009154541877 -0.02315529587 -9.463220111e-05 -0.08914193426 -0.001200640212 0.0004960776209 0.02425200106 -0.001000829415 0.09338504866 --0.1093200352 -0.2179873699 -0.0001946926758 0.007430216057 -0.001805545021 -0.005826904898 0.001414262706 0.1305632665 -0.005337921758 0.5027435875 --0.009536892573 -0.1072116253 0.00187161533 -0.05382839054 0.006689804458 --0.0001494395311 -0.0006256561574 -0.005163741649 -0.0001143936247 -0.01165742513 -0.000150400124 -6.719543401e-06 0.01173902478 -5.92405811e-05 0.02648722642 -0.004498279503 -0.03899353425 2.773399321e-05 -0.02420770737 -0.0001730202315 -0.0004715007658 0.0007864381375 0.02676493473 9.55098152e-06 0.06039891653 -0.04650332933 -0.06312678445 -0.0004089265718 -0.09904409355 -0.001174143184 -8.062278735e-05 -5.438976773e-05 -2.3916065e-06 -0.0001185386282 1.976863115e-05 --9.886784761e-05 -1.931564795e-05 0.0004010358332 9.703596897e-05 -0.002833256913 -0.01080204605 -0.0174190224 2.690756025e-06 -0.02544313784 6.978413383e-05 -3.98036128e-05 -0.0001038562477 0.0002341516005 -0.0001116732827 -0.001651390588 -0.02787305884 -0.04591114106 -1.628981214e-05 -0.06660015034 0.000289338774 -1.547815314e-05 2.866858923e-05 -5.488052969e-06 2.208722235e-05 2.510792866e-05 --1.053425535e-05 -3.481828047e-06 -9.846631535e-05 2.405123387e-06 0.0004611851464 -0.0004957567333 -0.0008426341334 -2.673484422e-07 -0.00123365446 5.863487784e-06 --4.175640423e-05 -4.232181873e-05 -0.0002040291233 -2.141204785e-05 0.000956358439 -0.001893804248 -0.002181136786 -1.3463299e-05 -0.003559795259 6.935065716e-05 --4.099265985e-05 -1.521318087e-05 0.0003568715816 2.922655035e-05 0.001581082754 --1.947058234e-05 -6.623600116e-06 0.0001643725125 1.462413866e-05 0.0007281896669 --0.0003779261164 -0.0006384793325 1.050422746e-06 0.0001111806816 3.134704654e-05 --3.661831143e-05 -3.039758404e-05 0.0002254741385 1.971938463e-05 0.0009998580604 -0.0009407019698 0.001127759628 -1.874596597e-05 -0.0006067527189 -0.0001201889187 --3.063872996e-05 1.862190544e-05 3.498135518e-05 4.79469434e-05 0.0002326658033 -2.07454953e-06 1.169408527e-06 -3.198829526e-05 -5.017391694e-07 -0.0002123878335 -0.0005008546023 -0.0008495868648 2.419040587e-07 -0.00119416695 -1.530688286e-07 -2.569984964e-05 -1.495160758e-05 -4.122271791e-05 -3.933707761e-05 -0.0002740256286 -0.001788603249 -0.002470625327 -3.859810153e-06 -0.00386085965 -3.730663295e-05 --4.703400291e-06 -2.193585457e-06 -1.209319399e-05 3.518181759e-06 -0.0001518424887 -1.447728601e-06 5.205984042e-07 5.904516185e-06 -1.260138648e-06 7.413944397e-05 --4.906296961e-05 -0.0001554291884 -2.706574013e-07 -6.918786637e-05 -1.543982835e-06 -1.06083457e-05 4.448431181e-06 3.348235394e-05 -8.472744083e-06 0.0004204201861 -1.931972503e-05 -0.0002265147963 -5.345161793e-07 -0.0001992506685 -5.84704989e-06 -7.593984013e-06 6.117866311e-06 1.639064364e-05 -4.808773661e-06 0.0001176241094 --2.572155523e-07 -2.316560414e-07 1.024822461e-05 -1.153732287e-07 7.367119907e-05 --0.0001489690411 -0.0001741176147 -2.851069443e-07 5.21487379e-05 1.127655457e-06 --1.15151415e-05 -7.737238322e-06 6.918338184e-05 6.01486958e-06 0.0004975979037 -9.735099624e-05 8.257644428e-05 3.900735495e-06 -5.379225709e-05 2.556805993e-05 --3.578733524e-07 -6.942000788e-07 2.828284288e-05 -1.657311009e-06 0.0002520358105 -9.680999791e-07 -4.642488461e-08 -8.280075728e-06 -6.654171907e-07 -7.381873379e-05 -1.4054068e-05 -0.0001599402203 -5.101159353e-09 -0.0001298568101 8.227875055e-07 --7.726782622e-06 1.936698971e-07 -3.64387627e-06 9.061139525e-06 -3.2164466e-05 -0.0004250124958 -0.0002823515475 9.977615882e-07 -0.0006821771771 -4.889925744e-06 --4.915480095e-06 -1.862067884e-06 1.037209078e-05 3.779836513e-06 8.393379057e-05 --3.248787158e-07 -1.591868068e-08 1.699603031e-06 2.845187443e-07 1.37355725e-05 --3.922443769e-05 -6.33024753e-05 -6.095901725e-08 -4.959543743e-07 8.453505686e-07 -8.314085845e-07 8.461291079e-07 1.182487228e-05 -8.069437211e-07 9.544347265e-05 -8.732383807e-05 6.956514477e-06 -1.457290125e-06 -9.275041007e-05 -1.520608173e-05 --3.877573695e-06 -1.71527876e-06 7.732038787e-06 3.043578341e-06 5.487415375e-05 --5.851911957e-08 8.186561993e-09 1.035057118e-06 4.603667963e-08 7.334968394e-06 --4.561656047e-05 -7.487393663e-05 -7.866162718e-08 1.187945194e-07 4.703539299e-07 -1.84021477e-06 1.102157587e-06 1.772412741e-05 -1.78908239e-06 0.0001255341827 -5.689238699e-05 -5.989896299e-06 -1.416928531e-06 -6.914323721e-05 -1.141975725e-05 -6.945782491e-07 1.929433197e-07 8.818598522e-06 -9.562818652e-07 7.255051382e-05 -1.108815883e-07 -1.758517922e-08 -1.613261525e-06 -8.057892165e-08 -1.327890982e-05 --2.516041627e-05 -6.968526936e-05 -6.209369973e-08 -2.090052995e-05 3.633441228e-07 --2.778915554e-06 -6.392602707e-07 9.256080825e-06 2.354058199e-06 7.624848416e-05 -9.945255018e-05 -4.649394892e-05 4.331797369e-07 -0.0001451416786 1.010642212e-06 -0.1769258718 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.04387037427 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.2207160399 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.07533872057 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.003315553281 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.001518701407 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.002298830926 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.002398077028 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -6.02243067e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0006671999118 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.243166318e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --8.054683477e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --4.839167468e-08 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.1799356286 -0.01732118436 -0.07012788035 0 0 -0.0317473048 0.4006269412 0.1334649769 0 0 -0.1020239273 -0.4209349429 -0.04527919858 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.1086306036 0.00767088451 -0.01344438332 0 0 -0.04048803621 0.1330065078 -0.01014682414 0 0 -0.0773015248 -0.05293938599 -0.03628009851 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.01533593544 -0.003490261387 -0.01107463948 0 0 --0.007681520309 0.01656290646 0.0216965262 0 0 -0.02405707214 -0.03311871028 -0.03848034569 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.008373639467 -0.01360112635 -0.02345079648 0 0 --0.01519332916 0.02043524827 0.0353075526 0 0 --0.01693048459 0.02274997158 0.03298965126 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0005596050691 0.0007565022346 0.001340987264 0 0 -0.0006097385513 -0.0005334528132 -0.001499678179 0 0 -0.001308552548 -0.002258478474 -0.003610820968 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0001199270241 0.000561016758 0.0006922794116 0 0 -0.0002214513788 -0.0008184421539 -0.0006050454394 0 0 -0.001139665269 -0.002548068634 -0.001486479442 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0003485675421 -0.0007571555476 -0.001226324056 0 0 --0.0006834754054 0.0002510566241 0.001267956437 0 0 --0.0007986060871 0.0007621499487 0.001283961877 0 0 -0 0 0 0 0 -0 0 0 0 0 --4.915255365e-05 0.00013767334 0.0002426840854 0 0 -0.0001506616441 -0.0001227538098 -0.0003301575958 0 0 -0.0003042584498 -0.0004473300152 -0.0007020358422 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.771951171e-05 5.942579893e-06 -1.530480568e-05 0 0 -6.915646025e-05 0.000178605205 1.158321615e-05 0 0 -5.147585037e-05 -7.026320973e-05 0.0001341913972 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.435326486e-05 -9.36601339e-05 -0.0001356402361 0 0 --7.750533386e-05 -4.663052796e-06 0.0001584832579 0 0 --6.814917384e-05 -1.63827064e-05 6.326724615e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.958737743e-05 5.579228686e-05 9.348969918e-05 0 0 -2.680002732e-05 -0.0001755408074 -0.0001511330765 0 0 -7.774280393e-05 -0.0002705651421 -0.0002768416543 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.696130776e-05 -1.258678729e-05 -2.46262717e-05 0 0 --2.108251816e-05 -9.185623146e-06 2.839280412e-05 0 0 --2.626864633e-05 -4.849326448e-05 4.756717363e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.524751081e-05 -9.280366402e-06 -1.023101614e-05 0 0 --3.593095803e-06 1.171264188e-05 1.857027494e-05 0 0 -6.536387863e-06 -4.365440749e-05 -2.961900302e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.02480518551 -0.06228688497 -0.1253083353 -0.06474038268 0.04412881633 --0.02246764924 0.04080613661 0.06424163938 -0.007594418598 -0.03730990761 -0.1551501343 -0.1106512864 -0.1868491396 0.04353055987 0.003001918033 --0.246617594 -0.09428030943 -0.03081663347 0.1476097747 0.4588153264 -0.1462838088 0.07767500796 -0.04262754584 -0.3322116595 -0.3789215474 -0.09440350044 -0.03293211352 -0.1064133488 -0.04054739856 -0.0786173895 --0.03282472437 0.04321914375 0.06188739932 -0.01875182565 -0.02217468672 -0.005652755645 0.001939914505 0.02749473359 0.04807253406 0.001000842072 --0.04005041971 -0.03635118359 0.03400672363 0.1205194207 0.1223770852 --0.06594761198 0.002755636546 0.02493558163 -0.009765661517 0.07355224274 -0.007236311639 -0.01858052813 -0.03608948952 -0.007316796902 0.007001941265 --0.0110055134 0.009993362595 0.009858777762 -0.01165876862 0.002818117814 --0.01711287495 -0.003976124978 0.005720130215 -0.0004504790459 0.02666172966 --0.01157292692 -0.02577369586 -0.01867385799 0.008248627509 0.04223393752 -0.001387928014 0.01329800538 0.03024665966 0.01467695224 -0.01185957054 --0.003696796765 -0.002398565739 -0.003136369352 -0.003585687628 0.00461540064 -0.004377240199 0.00321159959 0.005035871843 0.004800094829 -0.006918791803 -0.0019564288 -0.0002107559965 0.0007060582477 0.0002527259835 -0.0009005557177 --0.01101256545 -0.008989859674 -0.01419009324 -0.01321111734 0.01925362124 --0.001523271455 -0.002116361135 -0.004032447258 -0.002993515766 0.005070518892 -0.001446987865 0.00115546568 0.001985201999 0.002108637205 -0.002508270148 -0.001540433208 0.001638803169 0.002983012952 0.00210702232 -0.003804757302 -0.002177181827 0.00248110751 0.004372385974 0.00383796095 -0.005143063998 -0.001183912132 0.001254615312 0.001966268493 0.003108048139 -0.001786392004 --0.003483432269 -0.003333162318 -0.005901957537 -0.005127042064 0.007387714012 -7.454364762e-05 0.0001014553873 0.0005896886323 0.0008221412127 3.445592949e-05 -0.0002824927915 0.0001663272482 0.0002514882967 0.0001540956219 -0.0004855187194 -0.0006975349308 0.0001047838455 0.0002717504399 0.0005747916376 -0.0008116500657 -0.0006131732546 0.0001529144512 0.0001425942731 0.0001380980446 -0.0008590367921 --0.0002576846246 -0.0001181868714 -0.001111655508 -0.001828625742 -6.225283034e-05 --0.0005587023948 -0.0003670836243 -0.0006554246676 -0.0005917411045 0.0009786274226 --3.715426197e-05 -6.862337231e-05 -0.0001209244852 -5.040944781e-05 0.0001447154352 --0.0002822279406 -0.0003208729976 -0.000581926456 -0.0004780112144 0.0006690941377 --0.0006859465534 -0.000533454802 -0.0009689597835 -0.0009525668652 0.001252941918 -0.0006615170778 0.0004385552177 0.0007755070392 0.0006246610446 -0.001202472723 -0.0001982232505 -4.597161083e-05 -9.981924488e-05 1.965098681e-05 -0.0001252618112 -7.322519146e-06 9.187575486e-05 0.0001535978686 3.227332302e-05 -0.0001528645268 -3.878376476e-05 9.750977835e-05 0.0001919619883 0.0001631224817 -0.0001488482863 -3.662226658e-05 -3.971137452e-06 7.604406699e-05 0.0003353071503 8.822813099e-05 --0.0002156897182 -6.049060934e-05 -8.466917979e-05 -8.720159605e-05 0.0003009591572 -7.689258645e-05 8.54948544e-05 0.0001569231764 0.0001144075748 -0.0001740026211 -0.0001147531567 5.410731523e-05 9.631386057e-05 0.0001020084239 -0.0001741931755 -0.0002615486196 5.683510725e-05 0.0001004528392 0.000186421423 -0.0003140354359 -7.522566246e-05 7.66215759e-05 0.0001674836083 0.0001850794815 -0.0001363486232 --0.0001682782377 -0.0001260493611 -0.0002946266672 -0.0003854787856 0.0002470111587 --0.0001580594485 -4.783302892e-05 -7.112451579e-05 -6.305821382e-05 0.0002256412896 --1.381135377e-05 -3.558049291e-05 -5.990047109e-05 -1.914162617e-05 6.514867251e-05 --3.023144995e-05 -8.72170393e-05 -0.000163596213 -0.0001111168774 0.0001315666242 --0.0001271994567 -7.082129999e-05 -0.0001443440785 -0.0001914798542 0.0001811995896 -0.0002379817706 0.0001065919231 0.0001427245941 1.564772012e-05 -0.0004244146215 --5.782362838e-06 -1.711331786e-05 -1.931782208e-05 2.1886939e-05 3.949738992e-05 --1.854254571e-05 3.977789711e-06 5.069616373e-06 -1.290326518e-05 9.419697658e-06 --1.187087322e-05 -9.367958228e-06 -1.266999438e-05 1.499568601e-06 2.730128681e-05 --1.191438915e-05 -1.416066601e-05 -1.275432781e-05 2.445620468e-05 4.25170226e-05 -5.132888147e-05 1.57143024e-05 -2.224432791e-06 -5.893029951e-05 -9.878711614e-05 -5.217473089e-06 8.395684065e-06 1.919837851e-05 2.149408024e-05 -1.173192134e-05 -1.491064038e-05 1.371679041e-05 2.510140981e-05 2.005233355e-05 -3.092858433e-05 -4.635682583e-05 7.57662353e-06 1.276143174e-05 2.991746489e-05 -5.28307846e-05 --1.010521414e-06 1.068156561e-05 2.391219982e-05 2.144563959e-05 -8.461672984e-06 -5.145084727e-07 -2.014107892e-05 -6.263727043e-05 -9.281895321e-05 4.324615317e-07 --3.193472393e-05 -7.67041038e-06 -1.007594847e-05 -1.065521199e-05 4.292103306e-05 --1.739827731e-06 -7.614103903e-06 -1.294171838e-05 -4.008763064e-06 1.238215449e-05 -8.104088254e-06 -2.549044022e-05 -4.746628806e-05 -1.968806391e-05 2.401902916e-05 --3.810949043e-05 -1.608617921e-05 -2.647630237e-05 -2.45070244e-05 5.783889799e-05 -5.660684438e-05 2.25520923e-05 1.918287485e-05 -2.524641951e-05 -0.00010557962 --0.1706695708 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0335837107 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.2098431572 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.08131601825 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.004721303535 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0007767522701 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.001620299735 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.002575381094 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.000216109082 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0006139385663 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --9.684592783e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -2.886431809e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --4.722959568e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.1738082006 0.01497007182 -0.06734993115 0 0 --0.03304998669 -0.3908302574 0.1296356815 0 0 -0.09810901218 -0.4338627493 0.05470464129 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.1125716567 -0.008453261944 -0.0148228946 0 0 --0.0426726322 -0.1443336883 -0.005654667574 0 0 -0.07412224189 -0.04650041064 0.02862149176 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.01623998467 0.000905956593 -0.007331193802 0 0 -0.004474037335 -0.01468359542 0.01507937119 0 0 -0.02943364078 -0.03917362787 0.0463307764 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.008160423804 0.01344666442 -0.02309799256 0 0 -0.01532261636 -0.02029538174 0.03526078643 0 0 --0.0150276001 0.01997348359 -0.02824051803 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0001297034066 1.987782224e-05 -0.0001010131663 0 0 -0.0001719607384 -0.0004513911454 0.0002710286287 0 0 --0.0002146273792 -0.0004111123306 -6.495099432e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0001781787176 -0.0005363452516 0.0006929080796 0 0 --0.0001980179547 0.000946185263 -0.0005839862565 0 0 -0.001098898371 -0.002433375601 0.001246056811 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0002374142038 0.0005716609689 -0.0009118922288 0 0 -0.0004936486228 -9.924686955e-05 0.0008497903756 0 0 --0.0004107727348 0.0002907661228 -0.0003706816973 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.667507329e-05 -7.021492773e-05 0.0001091576686 0 0 --9.794790174e-05 -2.646551443e-05 -0.0001496053283 0 0 -0.0001795749598 -0.0002502162328 0.0003178461258 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.409974217e-05 4.157382116e-05 -9.271155771e-05 0 0 --1.939850192e-05 -0.000207297135 0.0001213783951 0 0 --2.939304817e-05 2.77197706e-05 -0.0003041688549 0 0 -0 0 0 0 0 -0 0 0 0 0 -5.279525039e-05 4.58582948e-05 -5.213005727e-05 0 0 -3.47100373e-05 9.134334897e-05 3.362600951e-05 0 0 -1.371039809e-05 -0.0001448832053 0.0001547049062 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.218669542e-05 -4.524159574e-05 7.339972052e-05 0 0 --1.534850313e-05 0.0001383321563 -0.0001137417706 0 0 -5.466440083e-05 -0.0002240245478 0.0001943233061 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.055380769e-05 2.38078564e-05 -4.264852724e-05 0 0 -2.879203552e-05 -1.021456185e-05 5.28579735e-05 0 0 --4.107727336e-05 -1.822083507e-05 -8.41626018e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -2.300526312e-05 -1.745161522e-07 6.536029661e-06 0 0 --5.70814432e-06 2.441071075e-07 -3.488969461e-06 0 0 -2.246809654e-05 -6.534345392e-05 6.889636318e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0195321587 0.05949056662 -0.1187072567 0.06191071545 0.04730330833 -0.02162688056 -0.03737520964 0.05947689667 0.006422175083 -0.03363357437 -0.1567348635 -0.1100505407 0.1882605277 0.03975249736 -0.003049440846 -0.2433017506 0.09016440954 -0.02995393168 -0.1401275804 0.4447668144 -0.1555413992 0.07712642471 0.04388317412 -0.3346749132 0.3896088198 --0.09443775895 0.0304527034 -0.1038263684 0.04438336888 -0.08111078534 -0.0318960653 -0.0422570881 0.06117382538 0.01693221645 -0.02245823497 -0.01130820613 -0.0009522581648 -0.0219325038 0.04905945121 0.001779101077 -0.04739742112 0.03359167404 0.03690722821 -0.1156524436 0.1258202865 --0.06472215012 0.00327867032 -0.01972488408 -0.01758585593 -0.06892676638 --0.01015904932 0.01818938519 -0.03705537844 0.007284968809 0.003123523691 -0.01188294885 -0.01063707893 0.01050791307 0.01231982634 0.002860607612 --0.01651437182 -0.003956527678 -0.006604278788 0.001348976533 -0.02558856353 -0.01006278026 0.02447935527 -0.01472543451 -0.01206070001 0.03935660705 --0.0009094122597 0.01303730246 -0.03035716927 0.01379250978 0.008743738037 -0.00436035336 0.003708577068 -0.005029819554 0.004203916788 0.006580910935 --0.003339194806 -0.002873938168 0.004052859666 -0.003368839391 -0.005283692334 -0.0002202290655 -0.001370259055 0.0008455941309 -0.001350354964 -0.002422633009 -0.01174610565 0.01079377273 -0.01650064759 0.01378488804 0.02190357789 -0.0003124460961 -0.000198202155 0.0006146860023 -0.0006140673725 -0.001098712663 --0.001444729506 -0.001010692 0.001766620272 -0.002156886663 -0.002241178996 --0.00162112609 -0.001852796353 0.003347512052 -0.002203489804 -0.004227262509 -0.002163586737 0.002619753119 -0.004675717708 0.004083910889 0.005275177656 --0.00102279228 -0.0008892240565 0.001481527285 -0.003129821151 -0.001001275609 --0.003664875077 -0.003503690161 0.00624993959 -0.005461302274 -0.007759983414 --0.0002282149848 -0.0003033460348 0.0009333496113 -0.00101053421 -0.0003497905508 --0.0005405610479 -0.0003105334751 0.0005377033098 -0.0004867587856 -0.0009004058602 -0.00113084122 0.0004010837929 -0.0007443683503 0.0009833690805 0.001612190023 --0.0008881582694 -0.0004717701995 0.0005567900578 -0.000296488552 -0.001547688614 --0.0006913727448 -0.0004913133648 0.001778588061 -0.002321467198 -0.0008006479918 -0.000553228324 0.0004164096693 -0.0007439795736 0.0006344359886 0.001024624309 -0.0001265160734 0.0001326870251 -0.0002456102951 0.0001693074192 0.0003115456654 --0.0004127656786 -0.0004216921207 0.0007489280343 -0.0006107639555 -0.0009289212334 -0.0007206305426 0.0006088761594 -0.001064752867 0.0009537947467 0.001389382778 -0.0007401842942 0.0005593941322 -0.001014698657 0.0008179361285 0.001407574512 --0.0001990743031 7.741413899e-05 -0.0001621608625 1.775196413e-05 -8.810784971e-05 -1.24966698e-05 -9.299000417e-05 0.0001520886473 -1.238802357e-05 -0.0001391398013 -4.786323045e-06 8.227569838e-05 -0.0001732354099 0.0001572495213 8.925265293e-05 --4.453463945e-06 3.280720799e-05 5.361716366e-05 -0.0003742078148 0.0001801541476 --0.0002011110495 -2.576726607e-05 1.561265887e-05 -3.749394693e-05 -0.000244766517 --6.538553875e-05 -0.0001101551509 0.0002065053238 -0.0001429246155 -0.0001884289781 --0.0001551033747 -7.038116165e-05 0.0001291227151 -0.0001499451395 -0.0002259602244 -0.0003182049354 8.718676363e-05 -0.0001472484746 0.0002220335459 0.0004069647003 --9.389724778e-05 -0.0001007079636 0.0001862136236 -0.0001434556608 -0.0002060521635 --0.0001906633312 -0.0001692651367 0.00038218976 -0.0004686783253 -0.0003057765389 -0.0001538745706 5.541267165e-05 -8.476999187e-05 6.23485464e-05 0.0002303821878 -3.158885576e-05 4.007685522e-05 -6.924960951e-05 3.558257578e-05 8.56629687e-05 --6.04275111e-05 -9.025222943e-05 0.0001670961505 -0.000123007322 -0.0001643105157 -0.0001199742476 7.279762707e-05 -0.0001432577377 0.0001769198533 0.000177791947 -0.0002497291647 0.0001168082103 -0.0001689377878 4.606461022e-05 0.0004397155572 --6.160885671e-06 1.607686828e-05 -1.954038753e-05 -2.15459407e-05 2.508420813e-05 -1.729941749e-05 -6.422706529e-06 8.999503963e-06 1.267080454e-05 4.170467894e-06 --8.171073851e-06 -5.783927175e-06 5.518620659e-06 6.953844143e-06 -1.966629813e-05 -6.907726826e-06 1.274315263e-05 -6.610215485e-06 -3.766447316e-05 3.950175087e-05 -3.45859512e-05 1.116172219e-05 6.681483711e-06 -5.616662583e-05 7.248372624e-05 --3.444130938e-06 -1.078747924e-05 2.096465958e-05 -1.49013966e-05 -1.565416468e-05 --1.881890732e-05 -1.317420805e-05 2.460796923e-05 -2.363732796e-05 -3.299500863e-05 -5.08219749e-05 6.867322667e-06 -1.019802921e-05 2.855473543e-05 5.613903795e-05 -7.028832677e-06 -1.020097553e-05 2.187396281e-05 -1.437452354e-05 -3.670647686e-06 --3.363092084e-06 -2.218406021e-05 6.226283691e-05 -8.668922741e-05 -9.48357371e-06 -3.122400598e-05 9.132817218e-06 -1.197078312e-05 8.44595899e-06 4.464103938e-05 -4.803990777e-06 8.035538739e-06 -1.394235141e-05 6.741709051e-06 1.536279217e-05 -2.486126144e-06 -2.483008645e-05 4.597217201e-05 -2.11370233e-05 -2.874956267e-05 -3.468394728e-05 1.617100477e-05 -2.634028366e-05 2.154593791e-05 5.459938152e-05 -5.900290266e-05 2.379722112e-05 -2.250594984e-05 -2.181747973e-05 0.0001084548354 --0.003547788951 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.001443919023 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.002557681148 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0001507101849 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0001672729621 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0001075115376 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -5.626398616e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -5.769274702e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --9.789699423e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.011445021e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.229941134e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -9.624882424e-07 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.272676231e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.004909669675 0.8009929054 0.004131020386 0 0 --0.04382278235 -0.068638404 0.001514595763 0 0 --0.0008977603466 0.001147492263 0.05636165102 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0113230764 0.3178957524 -0.003718467329 0 0 --0.08719490988 -0.1264090136 0.002438484549 0 0 --0.001046000966 0.001258194732 0.1136147375 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.008298790895 0.03736233983 -0.002748033736 0 0 --0.05142220065 -0.06697147004 0.000749582847 0 0 -9.766074613e-05 -0.000158225321 0.06946433988 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.001857436719 -0.01992467253 -0.0003616521459 0 0 --0.01022400205 -0.01062673074 -0.0002547446874 0 0 -0.000378797166 -0.0004475886114 0.01562756258 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0001346296617 -0.005321170112 0.0001537391942 0 0 -0.0005685484952 0.002531159933 -0.0003256005946 0 0 -0.0002650849304 -0.0003164682097 0.0008992439619 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0001681249921 -0.00108423113 0.0001259400034 0 0 -0.001826679963 0.00297527895 -9.658605883e-05 0 0 -7.01972864e-05 -8.690764993e-05 -0.002281050292 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0001649993614 0.002575611174 8.472637227e-05 0 0 -0.001137143598 0.001435765025 1.222120191e-05 0 0 --1.117366706e-05 1.729670741e-05 -0.001914016092 0 0 -0 0 0 0 0 -0 0 0 0 0 --5.818457802e-06 -0.0001012208013 -2.40328159e-05 0 0 --5.229349007e-05 -0.0003153613366 4.276236147e-05 0 0 --3.266279936e-05 4.207547052e-05 -0.0001507254663 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.600977481e-05 0.0003551047285 -3.009233907e-05 0 0 --0.0002922317878 -0.0005255516604 3.265319474e-05 0 0 --2.310761571e-05 2.831996509e-05 0.000307526699 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.532934578e-06 -0.0002387578125 -2.897396738e-06 0 0 --6.467221158e-05 -5.740446825e-05 -1.725367341e-06 0 0 -2.419347463e-06 -2.953729619e-06 0.0001127135475 0 0 -0 0 0 0 0 -0 0 0 0 0 -6.471204459e-06 0.0001057017145 4.861905523e-06 0 0 --2.094059494e-06 5.595025781e-05 -9.637575301e-06 0 0 -8.049631172e-06 -9.610466942e-06 5.895149151e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --5.083651175e-07 -3.481284365e-05 6.296929763e-07 0 0 -8.09576109e-06 1.342497367e-05 -9.135112336e-07 0 0 -7.121726067e-07 -8.403447623e-07 -8.61502485e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 -8.097727521e-07 0.0001002970489 2.72692278e-06 0 0 -1.960289637e-05 2.217953002e-05 -3.736067959e-07 0 0 -2.589524395e-07 -3.225245403e-07 -3.466282138e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.002643660957 0.04659904812 0.000873104565 0.07064981299 -0.001386019012 --0.06551757858 0.05680191223 -0.001066412953 0.08850506735 0.001152604141 --0.00144099808 -0.0009399812909 -0.04747226349 -0.001573685231 0.06371025653 -0.006058541762 -0.005152403428 0.0001644798521 -0.00803227935 -0.0001954401794 --0.0001955312783 -0.0001348261778 -0.004073928503 -0.000214303681 0.005467667943 --0.001127344626 0.04393481681 0.0002624510631 0.06657312828 -0.0005630329568 --0.04823954659 0.03677095298 -0.0004638412671 0.05757305306 0.0004125567054 --0.0003064743604 -5.618137947e-05 -0.03588025093 -0.0002245143323 0.04814803396 -0.01602153995 -0.01208630328 0.0003824731249 -0.01892928114 -0.0004441591411 --0.0003654340501 -0.0002125412498 -0.01091618398 -0.0003536315156 0.01464930103 -0.0004506381296 0.01442542801 -0.0002572244557 0.02183536464 0.0002709928565 --0.01063208211 0.006276653887 6.858130123e-05 0.009941067282 -0.0001393018265 -0.0003005979036 0.0002530183666 -0.008204557348 0.000338136915 0.01100800431 -0.01000527851 -0.006072893119 0.000177814278 -0.00960581221 -0.000193300622 --6.097005895e-05 8.928763254e-06 -0.006838226835 -1.149400645e-05 0.0091754234 -0.0002812482371 0.000593975817 -0.0001278221808 0.0008919888194 0.0001667230898 -0.0005696470961 -0.0001667272228 4.89071092e-05 -0.0002803900016 -6.143779828e-05 -5.827007629e-05 1.049071623e-05 0.0002149154011 1.390929521e-05 -0.0002880965713 -0.001762776815 -0.0002161351605 2.100632058e-06 -0.0004115047904 7.2503691e-06 -0.0001034085195 8.013620431e-05 -0.0009854680507 0.0001142994649 0.001321484957 --5.700378879e-06 -2.80010063e-05 -2.778551599e-07 -4.199488273e-05 4.078031431e-07 -5.70514041e-05 0.0001700713171 -3.275926988e-07 0.0002520165689 1.366536768e-06 --1.627503286e-05 -1.539147975e-05 -6.682044169e-05 -2.320155389e-05 8.986020961e-05 -6.372911566e-05 8.409673694e-05 -1.276165465e-06 0.0001225191883 2.558723515e-06 -2.669309103e-05 9.986620546e-06 6.610942573e-05 1.44611795e-05 -8.879809116e-05 --3.217971569e-06 0.000322931145 1.229139288e-05 0.0004891376863 -1.802193301e-05 --0.0002112186207 0.0001520795673 5.924225021e-06 0.0002381292565 -8.577562263e-06 -6.073406313e-06 7.51640411e-06 -0.0002450800447 1.013529764e-05 0.0003288291097 -0.0001430763141 -0.0001778538413 1.567016611e-05 -0.0002745905314 -2.022050482e-05 --1.404547207e-05 -1.256534795e-05 -6.871921745e-05 -1.880723584e-05 9.228681343e-05 -1.679693583e-05 7.433145149e-06 -3.739333669e-06 1.069500523e-05 4.934318432e-06 -1.797196783e-05 7.757586438e-07 2.720025726e-06 1.56776666e-07 -3.472904881e-06 -2.271848805e-06 -8.339602556e-08 9.601205269e-06 -2.044306764e-07 -1.286662206e-05 -3.626910046e-05 4.261278468e-06 1.399300856e-06 4.541838665e-06 -1.616758912e-06 -1.907225768e-06 2.509832357e-06 -2.569640668e-05 3.672364944e-06 3.444280133e-05 -5.560467947e-06 4.918211514e-07 -1.962438325e-06 5.352613851e-07 2.626016679e-06 -1.306221482e-05 2.674695137e-06 6.806455476e-08 3.353869291e-06 4.585029536e-10 --9.503582876e-07 -9.756893919e-07 4.139216791e-06 -1.4410969e-06 -5.540843844e-06 -2.075533664e-05 3.770562765e-06 -9.228168172e-07 4.642441475e-06 1.363822854e-06 -4.045464595e-06 2.006602665e-06 -7.592262121e-06 2.863427211e-06 1.017309434e-05 --3.113988059e-06 2.135380738e-05 2.033579325e-06 3.24442316e-05 -2.822033076e-06 --1.638108833e-05 1.720804846e-05 3.191604287e-07 2.657368492e-05 -4.554424671e-07 --4.4071986e-07 6.74900155e-08 -2.359298533e-05 1.651403767e-08 3.166073448e-05 -4.11222491e-06 -1.207984592e-05 1.452630134e-06 -1.84200449e-05 -1.902738434e-06 --8.615691338e-07 -1.350417293e-06 3.783836915e-06 -2.00326469e-06 -5.067430703e-06 -9.171123765e-07 -2.223664859e-06 -2.93572624e-07 -3.396823466e-06 4.012747572e-07 --5.2475961e-06 8.560063333e-06 -1.119257616e-08 1.310056411e-05 5.485288242e-09 --4.990308966e-07 -6.4975884e-07 -1.737602217e-06 -9.789891357e-07 2.33828675e-06 --4.05253212e-06 6.33408018e-06 -9.021789035e-08 9.696658835e-06 1.157153203e-07 -5.397588235e-07 5.553384575e-07 1.793304079e-06 8.347258545e-07 -2.412593027e-06 -1.742864154e-06 4.530659005e-06 -3.697986747e-07 6.793582006e-06 4.741842935e-07 --1.49310337e-06 8.641196505e-07 9.365443326e-08 1.373114998e-06 -1.337637205e-07 -2.195727609e-07 1.396536599e-07 -9.678109157e-07 1.990688774e-07 1.298038077e-06 -4.825766181e-06 -1.538053939e-06 -1.349917248e-08 -2.53434737e-06 3.70574957e-08 -1.885665463e-07 1.684066855e-07 -4.16961734e-06 2.32443865e-07 5.593296704e-06 --4.506357117e-07 6.521118706e-06 4.537739533e-07 9.892268001e-06 -6.394454829e-07 --4.021448701e-06 3.138419653e-06 1.829810347e-07 4.892930561e-06 -2.539601632e-07 -1.030835944e-07 1.829304606e-07 -5.589884465e-06 2.499659443e-07 7.499986847e-06 -2.371562848e-06 -4.04273492e-06 4.608857646e-07 -6.203559692e-06 -6.023084064e-07 --3.6882792e-07 -3.997981565e-07 -5.528055097e-07 -5.952961027e-07 7.445370557e-07 -3.659993412e-08 9.239879406e-07 -6.716728276e-08 1.397186913e-06 8.585942713e-08 --3.077250478e-06 2.64854497e-06 -1.092872361e-07 4.132482459e-06 1.310214396e-07 --1.530078556e-07 -1.078748526e-07 -1.291437417e-06 -1.627228644e-07 1.733362689e-06 --7.019905941e-07 9.588621724e-07 -1.10589394e-07 1.479050693e-06 1.433229456e-07 -1.423350786e-07 1.04341259e-07 -9.363424118e-08 1.517122592e-07 1.254052724e-07 --0.01294210574 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.002866384581 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.01322658661 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.003786998537 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0007359722459 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.023428272e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -6.457865293e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0001051376931 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -4.777917118e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -2.211751692e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.169638066e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --5.047194432e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.558036243e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.004044527003 0.1569990717 -0.0003893873877 0 0 --0.1637297135 -0.1736251329 0.002692534808 0 0 --0.002576231355 0.001303906761 0.1186109083 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.006994429763 -0.1730632226 -0.0002393237412 0 0 --0.04994019074 -0.09819387475 0.00140544364 0 0 -0.0002439194811 -7.354651715e-05 0.07463197422 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.002131784059 -0.01075766227 0.0005197787122 0 0 -0.002534527168 -0.001877384088 -0.0001554516862 0 0 --0.0002623293411 -0.0002150932108 0.001977495867 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0009993783207 -0.0009735716211 2.162107587e-05 0 0 --0.01299410712 -0.000696481203 -2.15932291e-05 0 0 --9.408275401e-05 -2.011059997e-05 0.0007152974206 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0005138703571 0.001273308909 -1.582367424e-05 0 0 --0.0005384660682 0.000122313236 7.469930256e-06 0 0 -5.251996069e-05 1.053525664e-05 -0.0004040060357 0 0 -0 0 0 0 0 -0 0 0 0 0 --9.236776899e-05 0.001848657287 5.022536606e-05 0 0 -0.0004112662043 0.0008477398434 -1.642394174e-05 0 0 -2.180661858e-05 -1.527925674e-05 -0.0005484001995 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0004247207032 -6.233128798e-06 8.154357968e-06 0 0 --0.000124111338 5.375478547e-06 -2.755935883e-06 0 0 -2.511277332e-05 -2.369097088e-06 3.885019927e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.198050778e-05 -0.0001537669427 -6.324972903e-06 0 0 -5.425014918e-05 -0.0001511229547 4.494573749e-06 0 0 -1.47561116e-06 2.461524669e-06 9.457420258e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0001269495979 0.000258532354 -6.029089694e-06 0 0 -7.473077369e-05 3.101211866e-05 2.933610986e-06 0 0 --5.036129457e-06 3.191306909e-06 -7.220591936e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -6.196068288e-05 0.000182500537 4.99210972e-06 0 0 -8.955317614e-05 6.421491969e-05 -1.333108427e-06 0 0 -3.340616841e-06 -1.385240712e-06 -3.876751122e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.196843648e-05 5.406132208e-05 4.747673555e-06 0 0 -1.139556453e-06 1.499022388e-05 -1.630195539e-06 0 0 -1.122049089e-06 -1.684453385e-06 1.158210002e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.207996022e-06 3.81106501e-05 -1.271313444e-07 0 0 --7.718790866e-06 -4.040890012e-06 2.448086226e-07 0 0 --4.154195979e-07 2.10658005e-07 6.271380377e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.713262595e-06 7.040080315e-05 -9.343803281e-07 0 0 -1.214551317e-05 5.740788821e-06 5.211896653e-07 0 0 --5.960189863e-07 6.002468135e-07 -1.534006412e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.003267010323 0.3997470679 0.002639996213 0.08961435073 -0.0001356082038 -0.02845202004 0.05313192796 -7.889895142e-05 0.01175048819 0.0001304630394 --0.0001222766871 0.0002448839458 -0.02685571273 7.547360185e-05 0.004575639406 --0.05102977288 -0.07972045797 0.00138418165 -0.0175837917 -0.0004338245552 -0.0007866945568 -0.001537383246 -0.05089101305 -0.0003116037276 0.00867194852 -0.0005712040789 -0.03334595319 -0.000764785361 -0.004277189916 -2.127847958e-05 --0.07295148972 -0.1328159727 0.002261445837 -0.01635504377 -0.0005577510487 --0.0007586017796 0.0005176083889 0.1076069561 -0.0002314775996 -0.009743399386 --0.04235423282 -0.07353667423 0.001130326823 -0.009036498128 -0.0002974843613 -0.0002933361537 -0.0009448075801 -0.05384344849 2.866645823e-05 0.004873451631 -0.001851588559 -0.0243493266 0.0003785839613 0.0005120261783 -0.0001087431495 --0.00160244938 -0.02280133901 3.920317039e-05 0.0006196042252 -6.897844756e-05 -4.115704876e-05 -0.000419858072 0.02193995716 -0.0001106016316 0.0009566355484 --0.0006834428482 -0.007443489798 -4.925267257e-05 0.0002113271525 -2.232619276e-05 --1.464562448e-05 7.721841182e-05 -0.008120889438 4.276310147e-05 -0.0003544334314 -0.001656264611 5.012666763e-05 7.300458839e-05 -4.470029673e-06 2.991338301e-05 --0.006614225 0.002087107005 -0.0001226837286 -0.0008809862932 -3.129141965e-05 --0.0002036161828 -8.267688685e-05 -0.001753755132 3.493244162e-05 -0.0008497956383 --0.004293494521 0.001468583349 -6.629099426e-05 -0.0006176967512 -1.366787305e-05 -7.332338695e-05 4.671888339e-05 0.0008201168745 -1.971151593e-05 0.000397489451 -3.14540881e-05 0.002640359955 3.275616852e-05 0.0005080841421 -9.073998195e-06 --0.004143846072 0.001795509079 -3.511713556e-05 0.0003926358071 6.618009599e-06 -6.586367838e-05 -1.341267878e-05 -0.002175921769 -7.615295928e-06 0.0002631887321 --0.001450487494 0.0006347681298 -5.755372085e-06 0.0001386595082 1.514388045e-06 --2.873558526e-05 6.717968991e-06 0.0006125090366 2.824659499e-06 -7.407789685e-05 --0.0003478914698 0.0003604195665 2.104743461e-05 5.858795074e-06 1.800253724e-07 -0.001334239739 0.0006834870656 -1.124180536e-05 2.253106467e-05 -3.605645215e-07 -6.399237078e-05 -1.734007163e-05 -0.0002178635556 -5.084577237e-07 -1.52676624e-05 -0.0005874330498 0.0002694875008 -5.17503758e-06 9.284325447e-06 -9.266836827e-08 --2.312481711e-05 8.656629787e-06 9.816126818e-05 2.891404344e-07 6.887778135e-06 -4.641143199e-05 5.410829375e-06 2.849873233e-06 -1.696774526e-05 -1.261272897e-06 --0.0001507823996 1.396503838e-05 -1.216616849e-06 -2.283114326e-05 3.698351287e-07 -6.781391558e-06 -2.045839951e-06 -7.576857156e-08 -1.348089887e-06 -3.939890266e-05 --8.033066435e-05 7.434672689e-06 -6.708720549e-07 -1.205525647e-05 2.014649254e-07 --2.643774589e-06 9.815277292e-07 5.418091311e-08 3.747464153e-07 1.700939883e-05 -3.874744894e-05 8.742956258e-05 -1.167102515e-05 1.910164999e-05 2.063155825e-06 -6.712400547e-05 -0.0002192455904 1.378240266e-05 -4.872660284e-05 -2.664631425e-06 -5.360165093e-06 1.232378608e-05 3.413872906e-05 2.657354995e-06 -5.850712176e-06 -5.058990798e-05 -0.0001362370248 7.199699473e-06 -3.031807896e-05 -1.436142874e-06 --1.920980017e-06 -6.001496596e-06 -5.521552925e-05 -1.255032871e-06 9.465577825e-06 --1.250321854e-05 0.0001865279471 3.57010464e-06 5.518108757e-05 -1.134368695e-06 -0.0002756849665 0.0001573947242 1.55570718e-07 4.469385644e-05 5.347658242e-07 -1.734190954e-06 -1.519716283e-06 -0.0001099590705 -6.39984096e-07 2.470929643e-05 -8.448169267e-05 3.999152113e-05 2.071793208e-07 1.126119598e-05 1.404858232e-07 --4.02224315e-08 7.436569315e-07 3.388661019e-05 2.753216206e-07 -7.613752965e-06 --1.137189749e-07 8.811115263e-05 3.865433354e-06 2.589673966e-05 -8.676946926e-07 -1.279149643e-05 8.862859692e-05 -3.002131072e-06 2.61916426e-05 7.885171973e-07 -1.167544155e-06 -3.211876206e-06 -3.986365699e-05 -9.676366403e-07 8.820363837e-06 -4.138032223e-06 2.906963829e-05 -1.178162825e-06 8.586895465e-06 2.994334265e-07 --3.410162784e-07 1.282422341e-06 9.893247108e-06 3.808026157e-07 -2.190247877e-06 --7.321827975e-06 3.793381925e-05 5.12626814e-07 8.83912253e-06 -6.323443876e-08 --3.660342812e-06 1.54530226e-06 -2.509002195e-07 3.853252269e-07 3.656267569e-08 -1.858644895e-07 -3.325753907e-07 1.504556042e-05 -9.53867482e-08 -2.700696392e-06 --6.463849297e-06 -1.117757969e-05 4.702171209e-08 -2.54039706e-06 -3.965127226e-08 --3.799578009e-08 -7.845248594e-08 -1.330423667e-05 -2.850365957e-09 2.388092386e-06 -4.058096888e-06 3.5609725e-05 -9.783062866e-07 1.01985988e-05 2.423206865e-07 --1.895674685e-06 -4.774425569e-06 1.180378185e-06 -1.35612144e-06 -2.778329214e-07 --1.544760418e-06 1.165917461e-06 -9.363415057e-07 3.488523343e-07 2.11225885e-07 --1.03623529e-05 -1.29994342e-05 6.504089936e-07 -3.64612025e-06 -1.814227817e-07 -6.522292123e-07 -6.005997905e-07 -5.416533373e-06 -1.7690743e-07 1.246326091e-06 -1.492551082e-06 5.859616837e-05 1.43112787e-06 1.576801003e-05 -3.065927441e-07 -1.598297711e-05 4.016847708e-05 -9.633691597e-07 1.080713451e-05 2.788080769e-07 -6.708713761e-07 -8.976366406e-07 -2.595199004e-05 -2.555603964e-07 5.326343087e-06 -3.55264937e-06 8.588662106e-06 -2.870976198e-07 2.310685766e-06 7.706378932e-08 --1.600479222e-07 3.141034553e-07 4.956965243e-06 8.720119086e-08 -1.017604999e-06 --0.1313078157 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0618324269 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.1732064856 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.05157283049 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.001097301509 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.002848458223 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.002540163952 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.001017227178 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0003925628327 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0004254507803 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.809130134e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0001132708909 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -3.791050763e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.1451013308 1.136880975 0.001749937321 0 0 --0.4676551546 -0.1663769909 0.001009820215 0 0 --0.0006007296745 0.0004958601355 -0.08077406284 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.09635059004 0.3297103242 -0.003062799224 0 0 --0.2460506 -0.0115484078 -0.0006891527791 0 0 --0.000279968682 0.001239819942 -0.05070693904 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.04527418809 0.1765041946 6.898845961e-06 0 0 --0.03163179243 -0.04507105144 5.384476626e-05 0 0 -3.484523203e-05 -2.493184903e-05 -0.005748465711 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.004824607774 0.01232611995 -0.0001221818126 0 0 --0.01699342061 -0.05877922648 0.000166814484 0 0 --8.823312352e-06 -6.53256137e-05 0.002231533753 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.002633712013 0.007340298421 3.782334697e-06 0 0 -0.003386679301 0.009068292344 7.290374658e-06 0 0 --6.0016371e-08 2.037125717e-06 0.0001667825214 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0005097327362 0.002251364086 3.44024045e-05 0 0 --0.0002511645407 0.0009326132877 1.545589949e-05 0 0 -4.077757014e-06 -2.384175493e-05 -0.0005795613454 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0004330412563 0.0005697605755 6.999014234e-06 0 0 --0.0008300600429 -0.003974505075 -1.985211608e-05 0 0 -6.924042459e-08 4.911538755e-06 0.0001683860122 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0001880666809 0.0008701801499 -1.208326887e-06 0 0 -0.0003278603698 0.0011193876 -7.971208845e-07 0 0 --4.827194798e-07 -5.483716331e-07 2.992147642e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --6.491961582e-05 0.000169308548 -3.775040964e-08 0 0 --7.73228652e-05 0.0001763406321 1.373774383e-06 0 0 --6.685050338e-08 2.326663157e-07 -6.438097949e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0002005804974 0.0002327967393 3.875705217e-06 0 0 -6.114068031e-07 -0.0006114184195 -2.689019384e-06 0 0 -2.08034998e-07 8.557736352e-07 3.797526274e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -9.9590595e-05 0.0003002046196 4.933392757e-06 0 0 -0.0001279075503 0.0002818882829 5.146463932e-07 0 0 -6.588406643e-08 -9.547179319e-08 1.100211172e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.26235186e-05 8.662745123e-05 2.159150662e-06 0 0 --1.737018885e-05 1.864287482e-05 -5.070832139e-08 0 0 -4.71816219e-08 -2.211472081e-07 -6.772185391e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 -4.661302148e-05 0.0001136244445 8.148803521e-07 0 0 -5.1263999e-06 -8.640004939e-05 -9.279600572e-08 0 0 -7.424851894e-09 1.239248254e-07 8.600657118e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.4128193969 0.8598995319 0.0004786702608 0.09901585155 -0.003263095582 --0.8686138655 -0.1642930912 -0.0006558966389 0.9108312487 0.006835148004 --0.004162983881 -0.00180375007 0.1669529818 0.001070630538 1.033090255 --0.07222422717 -0.2306169922 -0.0001065379229 -0.07194671387 0.0005276987011 --0.0007248635808 -0.0005363440335 -0.0142309958 0.0007106524382 -0.08804591259 -0.0916121237 0.2035474432 -0.0001586454013 0.006875224441 0.0002095523213 --0.2726452931 -0.3195097786 -0.001466204277 0.1578719717 -0.007865180315 -0.002582752625 0.0006365149394 0.04887182382 -0.002462692575 0.1881919372 --0.08679227486 -0.2037573106 -1.302076784e-05 -0.01396858298 -0.000323388786 --0.001200640203 -0.0004960776204 -0.02425200077 0.001000829407 -0.09338504754 --0.006440170656 0.04380507636 -4.445069258e-05 0.02940212939 0.0001449719673 --0.08104127442 0.003023664319 -6.237143306e-05 0.1248653269 -0.0003671377346 -6.676569589e-05 0.0001148233374 0.003693912795 7.664680252e-07 0.008336014256 --0.02065933959 -0.03336479832 3.421240864e-05 0.01638169838 -0.0001565841638 --0.0001504001156 6.719544377e-06 -0.01173902416 5.924057795e-05 -0.02648722501 --0.01752815632 0.02464188121 -7.358755873e-06 0.03789025123 -0.000174041315 --0.02179288596 0.03895188885 1.472502233e-05 0.0549317652 -0.0001741255738 -0.00015259033 -8.265175953e-05 -0.0002092770235 -0.0002219963873 0.001481548338 -0.01466218592 -0.01646383101 1.410451056e-05 -0.02777996698 0.0002036808417 -9.886783182e-05 1.931564727e-05 -0.0004010357856 -9.703595255e-05 0.002833256576 --0.001541625208 0.003134506918 2.421670046e-06 0.0043871544 -3.711790682e-05 -7.253873264e-05 -0.001044677817 -8.458584554e-06 -0.001138212731 6.924866712e-05 --7.223009892e-06 -6.755041295e-06 -4.742749372e-05 -3.012464577e-06 0.0002222622925 -0.002724113847 -0.004878723895 -2.708565151e-06 -0.006972607835 6.438806777e-05 -1.053425616e-05 3.481828122e-06 9.846632281e-05 -2.405123791e-06 -0.0004611851814 -0.0008169653383 0.0008283226907 1.061874006e-06 -0.0006366389503 -1.778362309e-05 --0.0004440861226 6.56348042e-05 1.663819478e-05 0.0007158421977 5.278357965e-05 --2.92979803e-05 -2.027304763e-05 0.0002159421771 1.652711978e-05 0.0009572416689 --0.0002394667867 0.0002354013833 2.98720048e-07 0.0005312987181 -2.332404098e-05 -1.947055796e-05 6.62359803e-06 -0.0001643722572 -1.462411889e-05 -0.0007281885363 --0.0007354689425 0.001041103477 -3.480579622e-07 0.001605304153 2.705544947e-06 --0.001222580398 0.002097049647 -1.264477623e-07 0.002932478126 2.132426655e-06 --3.653438046e-06 2.995948933e-08 2.321706207e-05 3.502690154e-06 0.0001541875642 -0.0005048815887 -0.0004213175188 3.1896709e-07 -0.0008910128709 -5.184896972e-06 --2.074544174e-06 -1.169408447e-06 3.198822813e-05 5.017352457e-07 0.0002123873878 --2.777530508e-05 0.000156995782 6.622771461e-08 0.0001562110211 2.100344018e-06 --0.0003097380454 -0.0002321317418 -1.196413753e-06 0.0001454015195 -1.219610203e-05 -2.316028009e-06 6.459140696e-07 9.068416782e-06 -2.136560022e-06 0.0001138781911 --2.49800121e-05 -0.0002456147304 -3.229011531e-07 -0.0001723329212 -5.979164782e-06 --1.447724314e-06 -5.205981488e-07 -5.904487491e-06 1.260133689e-06 -7.413908363e-05 -0.00017913758 0.0003058553653 2.613694102e-07 1.322163171e-06 -1.446829696e-06 --5.126565751e-05 -0.0001185707998 5.176211717e-07 -2.321223341e-05 4.990150549e-06 --2.526503534e-06 -9.30023747e-07 4.567232477e-05 1.079749257e-06 0.0003283678973 -7.307103848e-05 -9.403502595e-05 2.427783461e-07 -0.0001454056078 -5.765223258e-07 -2.572146674e-07 2.316558604e-07 -1.024819793e-05 1.15373442e-07 -7.367100729e-05 --2.276604815e-05 0.0002433832745 1.086902301e-07 0.0001985071407 5.224380172e-09 --0.0001910714654 0.0004494067885 7.38028897e-07 0.0005366460523 9.808043906e-06 --5.872914819e-06 -9.571741967e-08 2.226975042e-05 5.324693881e-06 0.0001986702507 -0.0001002510074 6.395552744e-05 2.119524701e-07 -6.720666165e-05 -2.829327139e-06 --9.680932903e-07 4.642547339e-08 8.280028711e-06 6.654126677e-07 7.381831458e-05 -5.714948262e-05 3.900605428e-05 1.265173873e-07 -3.651490048e-05 -1.198103518e-06 --0.0001196441649 -9.854784095e-06 1.238012281e-07 0.000126835165 5.816601524e-06 --2.138970261e-06 -5.930827154e-07 1.24547268e-05 1.481360947e-06 0.0001006423863 --5.663211927e-05 2.612813832e-05 -1.336830034e-07 8.151527984e-05 1.438507898e-06 -3.248760903e-07 1.591849903e-08 -1.699574545e-06 -2.845170676e-07 -1.37353424e-05 -3.459926179e-05 8.537797633e-05 7.1417196e-08 1.992195065e-05 -2.895397937e-07 --7.335910274e-05 -6.235329005e-05 4.112676676e-08 4.029481471e-05 2.067261209e-06 --1.146582367e-06 -3.920314898e-07 1.527197377e-05 6.49430531e-07 0.0001082308772 -8.664512695e-06 -5.285593636e-05 -2.403203599e-08 -4.696074029e-05 -3.329359985e-07 -5.851888259e-08 -8.186586574e-09 -1.035050958e-06 -4.60365827e-08 -7.334924744e-06 -3.270755241e-05 9.102036049e-05 8.453788369e-08 2.745909619e-05 -4.369091782e-07 --6.80097726e-05 8.909858625e-05 1.569769438e-07 0.0001397494468 2.886372732e-06 --1.454728983e-06 -2.415458681e-07 1.281763603e-05 1.017747714e-06 0.000105519822 -1.550059512e-05 2.038296829e-05 4.438218904e-08 -3.085605668e-06 -1.069091189e-07 --1.10880616e-07 1.758529607e-08 1.613245703e-06 8.057846516e-08 1.327877958e-05 -0.0651799823 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.02586884108 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.08383658385 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.03210024488 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.001284129654 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0006929474058 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0008690991639 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0009136745361 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -2.89055074e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0002662894195 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.326263856e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.429724938e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -3.158723993e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.06695943257 0.59107623 0.3017613427 0 0 --0.09812544036 0.05574073291 0.01625766687 0 0 --0.1799356281 0.01732118436 0.07012788058 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.06057289722 0.0707010989 0.1266994852 0 0 --0.05930579827 0.02532677658 -0.01060109503 0 0 --0.1086306072 -0.007670884319 0.0134443823 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.02179291112 0.04188457937 0.07994821182 0 0 --0.008567032027 0.006616973056 0.003644794686 0 0 --0.01533593914 0.003490261448 0.0110746382 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.005201873843 0.005479781681 0.00910998114 0 0 --0.004642618547 0.006498676417 0.01391067157 0 0 --0.008373635347 0.01360112587 0.0234507971 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0005845160149 0.001099367125 0.0012375601 0 0 -0.0003098052205 -0.0004206630306 -0.0007415731915 0 0 -0.0005596048598 -0.000756502262 -0.001340987427 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0002056862647 0.0008254689295 0.0007167069464 0 0 -5.787829887e-05 -1.422984867e-05 -0.0005264715407 0 0 -0.0001199243484 -0.000561017145 -0.0006922813675 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0003515641933 0.0003964042857 0.0005671477268 0 0 --0.0001928254569 0.0003076929416 0.0007273341307 0 0 --0.0003485649704 0.0007571556858 0.001226325285 0 0 -0 0 0 0 0 -0 0 0 0 0 --7.34626797e-06 0.0001761087856 0.0001886437997 0 0 -2.864285724e-05 -7.131105052e-05 -0.0001384085373 0 0 -4.915078256e-05 -0.000137673272 -0.0002426846344 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.288721001e-05 0.0001179785369 -3.229921291e-05 0 0 --9.996105152e-06 2.719939538e-05 -7.667174468e-06 0 0 --1.771964611e-05 -5.942583112e-06 1.530474077e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0001307592045 0.0001727046886 0.0001355573683 0 0 -1.289091383e-05 2.430214753e-05 8.884075258e-05 0 0 -2.435459476e-05 9.366024251e-05 0.0001356410298 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.334645885e-05 0.0001031738919 7.252639508e-05 0 0 -1.638515767e-05 -3.238809695e-05 -5.250986496e-05 0 0 -2.958638149e-05 -5.579234857e-05 -9.349021806e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.041111572e-05 5.655177418e-05 3.812593703e-06 0 0 --9.495736189e-06 8.685587486e-06 1.263338944e-05 0 0 --1.696113724e-05 1.258679205e-05 2.462635026e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.683298697e-05 7.124218902e-05 4.141218647e-05 0 0 -8.351914023e-06 -3.792397837e-07 8.824679919e-06 0 0 -1.524793398e-05 9.280379237e-06 1.023122129e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.1959074896 0.1813380442 0.3272034525 0.01788854654 -0.04278895104 --0.3442002642 -0.08057086561 0.1173658401 0.421232954 0.6311688573 --0.2932043337 -0.01234754437 0.03673763227 -0.02846430539 0.3364185367 --0.01757539559 0.01724418619 0.04610802151 0.04136796749 0.006869793842 -0.02246764909 -0.04080613652 -0.06424163924 0.007594418534 0.03730990763 --0.04724603779 0.04559826771 0.08129029887 -0.0009506520303 -0.003952011915 --0.07642323104 0.01259097536 0.08486960548 0.06554830972 0.08911868287 --0.1177081722 0.06729861667 0.1135831739 -0.04494861915 0.04156539085 --0.02137799478 0.01264839943 0.04818204557 0.03913147164 0.01741190294 -0.03282472605 -0.04321914492 -0.06188740116 0.01875182643 0.02217468643 -0.0001840048523 0.00970755614 0.0174148338 0.005349494871 -0.008902654177 --0.01903483218 0.0006978571259 0.002435599265 -0.01244705361 0.02272044595 --0.03626183077 0.008219218848 0.00700900607 -0.03119243896 0.03531270647 --0.006530508811 -0.001366581288 0.010519857 0.008801706389 0.01161719773 -0.01100551584 -0.009993364823 -0.009858781016 0.01165877009 -0.002818118668 -0.007901497334 0.006573670259 0.01182178888 0.009813871256 -0.01557457266 --0.005721987177 -0.005277507098 -0.01029722738 -0.007863508857 0.01322005495 --0.008891684956 -0.009024109815 -0.01651774247 -0.01313085798 0.02141039664 -0.002517524977 0.001296690189 0.003445128856 0.002264918888 -0.004328502717 --0.004377240945 -0.003211599445 -0.005035871357 -0.004800094761 0.006918791354 -0.00118332259 0.001347885011 0.002420285964 0.001878946999 -0.002959289889 --0.0002276680229 0.0002863508151 0.0004413427647 0.0006451904505 -3.686086118e-05 --0.0002755564432 0.0001933716498 0.0002663999016 0.0005581371543 0.0001739796202 -0.0009142154674 0.001054522087 0.001816412692 0.001828585191 -0.002030962196 --0.001540432881 -0.001638803224 -0.002983013079 -0.002107022194 0.003804757266 --0.0001847553356 0.0002591255014 0.0004694358898 4.004402537e-05 -3.399632294e-05 --5.653819049e-05 -4.269122359e-05 0.0002883254157 0.0006007093972 0.0002883190713 -0.0001149114228 0.000120300566 0.0002259023392 0.0001298095408 -0.0002247758244 -0.0001742522698 5.244165938e-05 0.0001701855793 0.0002574158792 -0.0001994357216 --0.0002824918988 -0.0001663278089 -0.000251489122 -0.0001540950879 0.000485518346 -0.0001989820428 0.0001561518324 0.000279924786 0.0002351615012 -0.000385356898 --0.0003243889525 -0.000296441146 -0.0005283992119 -0.0003814461326 0.0007095732493 --0.0005187115162 -0.0004959534813 -0.0008908626297 -0.0006961528741 0.001135861828 --1.727922628e-05 -3.743493296e-05 -7.225635124e-05 -9.350824112e-05 4.476169333e-05 -3.715368506e-05 6.86236638e-05 0.000120925016 5.040933819e-05 -0.0001447154704 -3.75719242e-05 7.465388673e-05 0.0001331494549 7.696243814e-05 -0.0001386417981 --0.0001171608386 3.801151016e-05 9.664095675e-05 6.609489228e-05 8.243022298e-05 --0.0001666572289 4.900871656e-05 0.000105842812 4.577797686e-06 9.331743151e-05 -3.816119434e-06 4.723226616e-05 0.0001031172031 0.0001082946945 -4.526525217e-05 --7.321169734e-06 -9.187648351e-05 -0.000153599123 -3.227286061e-05 0.0001528645082 --4.048607305e-05 9.70788819e-05 0.0001752320235 4.759165319e-05 -8.226283268e-05 --3.621351798e-05 -1.706607801e-05 5.163941278e-05 0.0002078129831 0.000133124745 -5.116521787e-05 2.054388734e-06 2.45184383e-05 9.242170729e-05 -3.023195755e-05 -7.097492077e-05 3.280975404e-05 5.875907521e-05 6.370804908e-05 -0.0001065776941 --0.0001147537767 -5.410699313e-05 -9.631333754e-05 -0.000102008714 0.0001741932946 --1.074736008e-05 2.980896054e-05 5.404202682e-05 1.789839667e-05 -2.881626919e-05 --9.370742984e-05 -6.694777684e-05 -9.059606037e-05 1.761391834e-05 0.0002153615263 --8.401699606e-05 -9.419580326e-05 -0.0001606489832 -8.226193444e-05 0.0002113809198 --5.274061596e-06 -1.800883413e-05 -3.921435488e-05 -4.435672074e-05 1.829211441e-05 -1.38110724e-05 3.558061702e-05 5.990067683e-05 1.914149904e-05 -6.514861068e-05 --2.197086203e-05 8.805908652e-06 1.607166437e-05 -4.448576204e-06 8.656336257e-06 --4.640769831e-05 2.553669096e-06 2.791800596e-05 5.010021947e-05 6.307977695e-05 --4.603509336e-05 9.556772833e-06 2.581701026e-05 9.340503291e-06 3.826832343e-05 --1.190905369e-05 2.359175171e-07 4.431384186e-06 6.722857144e-06 1.465597685e-05 -1.854307588e-05 -3.978071653e-06 -5.070084725e-06 1.290347407e-05 -9.4197701e-06 --1.112028603e-05 2.366737322e-05 4.280968101e-05 1.1773137e-05 -2.031120048e-05 --3.050547106e-05 -4.698011067e-06 1.710007764e-05 5.449575543e-05 5.82216721e-05 --1.582083476e-05 3.306275465e-06 1.26484098e-05 1.329194247e-05 1.648602631e-05 -9.185872167e-06 8.913632469e-06 1.540899851e-05 1.007729628e-05 -2.050275778e-05 --1.491094677e-05 -1.371662271e-05 -2.510113214e-05 -2.005245661e-05 3.092862288e-05 --1.849720863e-05 1.525294101e-05 2.769521141e-05 1.608489333e-06 -3.041650585e-06 --3.511539606e-05 -1.755953132e-05 -1.139910981e-05 3.691490916e-05 7.846554469e-05 --2.259213936e-05 -2.13449702e-05 -3.236145994e-05 -7.386786138e-06 5.516141393e-05 --7.686581946e-07 -3.969963669e-06 -8.528146204e-06 -8.114365307e-06 4.184298329e-06 -1.739799661e-06 7.614117785e-06 1.294174141e-05 4.008750922e-06 -1.23821499e-05 -0.06314684687 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0234515164 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.08000296359 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.03473968385 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.001918500921 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0003881036914 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0005838641132 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.001012948374 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --8.301512563e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0002530377204 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -2.114694716e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --4.984036157e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -4.009556415e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.06650469847 0.6002201729 -0.2916620501 0 0 --0.09480409372 0.05211866259 -0.01478635482 0 0 -0.1738082007 -0.01497007182 0.06734993111 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.06854528989 0.07003400993 -0.1190607763 0 0 --0.06151029343 0.02619231005 0.00980541507 0 0 -0.1125716561 0.008453261974 0.01482289477 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.02024428886 0.04243931598 -0.08208409634 0 0 --0.009041413133 0.006106468087 -0.0009581753628 0 0 -0.01623998393 -0.0009059565736 0.007331194046 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.006997843657 0.007494402214 -0.01264895254 0 0 --0.004514567978 0.006374946792 -0.01361470459 0 0 -0.008160424445 -0.01344666449 0.02309799249 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0001799040583 0.0006611851535 -0.0004028767511 0 0 --7.496820515e-05 5.884383782e-05 -3.387581497e-05 0 0 -0.0001297033671 -1.987782903e-05 0.0001010132029 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0001686080569 0.0006990582223 -0.0005268610712 0 0 -9.118196897e-05 -2.420633621e-05 0.0005293141407 0 0 --0.0001781791589 0.0005363451931 -0.0006929077448 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0004448249549 0.0005141376189 -0.0008041677386 0 0 --0.000130063371 0.0002117454965 -0.0005547808195 0 0 -0.0002374145936 -0.0005716609548 0.0009118920461 0 0 -0 0 0 0 0 -0 0 0 0 0 -4.30970523e-05 0.0001415531935 -0.0001181646511 0 0 --1.35308519e-05 -2.153189013e-05 7.073949394e-05 0 0 -2.667476404e-05 7.021494036e-05 -0.000109157574 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.731330925e-06 0.0001051058665 6.807639498e-05 0 0 --1.421161819e-05 4.574638091e-05 -3.963698067e-05 0 0 -2.409972527e-05 -4.15738217e-05 9.27115664e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0001435598265 0.0001917965592 -0.0001774182467 0 0 -2.878628287e-05 -2.787766699e-06 -4.319820299e-05 0 0 --5.279503741e-05 -4.585827647e-05 5.212992069e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -4.993367488e-06 8.696983202e-05 -5.047462328e-05 0 0 -6.852157575e-06 -2.23357636e-05 4.290447367e-05 0 0 --1.218686943e-05 4.524158747e-05 -7.33996298e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -8.284752155e-06 5.256218344e-05 1.863436933e-06 0 0 --1.14413926e-05 1.346266281e-05 -2.357157812e-05 0 0 -2.055384052e-05 -2.380785565e-05 4.264851179e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --4.120899574e-05 7.474226955e-05 -4.744338429e-05 0 0 -1.260592674e-05 -5.760726823e-06 4.497375691e-07 0 0 --2.300519185e-05 1.745186026e-07 -6.536066231e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.1959074085 0.1749776237 -0.3182742347 0.01864636768 0.03803106266 --0.3421021379 -0.07935020902 -0.1142687614 0.4186420167 -0.6243005779 -0.2811871931 0.01521407348 0.03305715436 0.01818265521 0.3259977045 --0.01605878437 0.01597615121 -0.04251818133 0.03836628402 -0.005930430185 --0.02162688059 0.03737520966 -0.05947689669 -0.006422175092 0.03363357436 --0.05112581433 0.04690125687 -0.08424382781 -0.0008600391001 0.002196645286 --0.08062324175 0.01064710019 -0.08731841666 0.07365507576 -0.09710710423 -0.1184775132 -0.06665802286 0.114305433 0.04122148431 0.04202881367 --0.02095229762 0.0125702382 -0.04731879602 0.03863745041 -0.01633626303 --0.03189606503 0.04225708792 -0.06117382509 -0.01693221633 0.02245823502 --0.001897031476 0.009632859577 -0.01720912651 0.003856109847 0.006449892148 --0.01897152711 0.001943187588 -0.00587362613 -0.01005817372 -0.0212855889 -0.0366340362 -0.01180995997 0.01252763257 0.02998439162 0.03149330725 --0.00720263501 -0.00142907337 -0.0112177557 0.009469604637 -0.01239411277 --0.01188294842 0.01063707854 -0.01050791251 -0.01231982609 -0.002860607464 -0.00747790786 0.006407025665 -0.011515271 0.009303105669 0.01484853339 --0.006228879745 -0.005421962193 0.01091070233 -0.008731316047 -0.01403803124 -0.009630063168 0.009207194077 -0.01711740098 0.01410545473 0.0228056423 -0.001996900332 0.0007695306844 -0.003054446439 0.002003370424 0.003090448419 -0.003339194721 0.002873938156 -0.004052859697 0.003368839433 0.00528369242 -0.001385900308 0.001642088405 -0.002952183526 0.002224023813 0.003535021963 --0.0004305450085 0.0001882763817 -0.0003248370988 0.000492484566 -0.0002744566117 -0.000672970638 5.451234766e-05 -0.0001137437779 -0.000195881468 0.0008505218417 -0.0009730101013 0.001161647963 -0.002055674202 0.002113293185 0.002168471263 -0.001621126154 0.001852796339 -0.003347512023 0.002203489833 0.004227262518 -2.408161103e-06 0.0003566768171 -0.0006411646588 0.0002146574165 0.0003411323303 -4.995781862e-05 -2.705930545e-05 -0.0002995437124 0.0006310122205 -0.0001409102612 --0.0002691213891 -0.0001770338677 0.0002965249842 -0.0002271976715 -0.0004681307393 -0.0003391262652 0.0001729808328 -0.0003340606501 0.0003560799088 0.0005266511095 -0.0005405611808 0.0003105333916 -0.0005377031882 0.0004867588706 0.0009004059148 -0.0001170981383 8.801149012e-05 -0.0001575993946 0.0001329889002 0.000216684914 --0.0003053014862 -0.0002792558147 0.0005100148265 -0.0003818689726 -0.0006656314347 -0.000493805529 0.0004738861887 -0.0008535184195 0.0006677677085 0.001087972242 --7.49674587e-05 -8.623615847e-05 0.0001450197336 -0.0001404601446 -0.0001666694236 --0.0001265161474 -0.0001326869937 0.0002456102307 -0.0001693074231 -0.0003115456491 -2.663405031e-05 8.630400963e-05 -0.0001550243098 8.313834856e-05 0.0001435987792 --0.0001454154424 3.654921533e-05 -0.000102536727 6.916917857e-05 -0.0001159218381 -0.0002124547477 -3.859590874e-05 9.304768847e-05 1.636306407e-05 0.0001528303838 --8.989827313e-06 4.342944568e-05 -0.0001042725962 0.000120607602 2.120976917e-05 --1.249643625e-05 9.298987789e-05 -0.0001520884304 1.238810443e-05 0.0001391398079 --5.277592203e-06 0.0001154093401 -0.000208823527 8.349239957e-05 0.0001382624852 --3.127608723e-05 -2.826194395e-05 -2.798937821e-05 0.0001989436896 -0.000143249302 --6.642131261e-05 1.229916488e-05 -3.875022202e-06 -8.575664538e-05 -2.654896374e-05 -9.691388741e-05 4.658893921e-05 -7.661404253e-05 6.92657154e-05 0.0001533967642 -0.0001551032785 7.038120974e-05 -0.0001291227934 0.0001499450928 0.0002259602059 --1.968332821e-05 1.530867417e-05 -2.814144004e-05 2.34622363e-06 2.776714012e-06 --8.6293963e-05 -5.617461167e-05 7.796813774e-05 1.20936997e-05 -0.0001884912062 -8.22544285e-05 8.022356615e-05 -0.0001369657533 7.335813936e-05 0.0001900345794 --1.756678819e-05 -2.202322236e-05 4.427891875e-05 -4.72811152e-05 -3.640478262e-05 --3.158890009e-05 -4.007683685e-05 6.924957862e-05 -3.55825968e-05 -8.566297759e-05 --2.129826376e-05 9.478246902e-06 -1.741844383e-05 -3.858804218e-06 -6.756029239e-06 --4.457672453e-05 5.139815982e-06 -3.238799802e-05 4.993912495e-05 -5.655113472e-05 -4.531379366e-05 -1.290423591e-05 3.198184083e-05 -1.06748266e-05 3.225003392e-05 --1.124837583e-05 1.293223984e-06 -7.250394642e-06 9.915126027e-06 -1.329439197e-05 --1.72993267e-05 6.422658427e-06 -8.999423733e-06 -1.267076807e-05 -4.170456951e-06 --8.770779299e-06 2.577191427e-05 -4.681338097e-05 1.528758275e-05 2.557642508e-05 --2.865517272e-05 -7.892869857e-06 -9.827839527e-06 5.056536197e-05 -5.996756487e-05 -1.191785126e-05 2.307411447e-06 2.029501302e-06 -1.024240512e-05 1.976788801e-05 -1.159635529e-05 9.118298265e-06 -1.481808809e-05 8.783594669e-06 2.381850698e-05 -1.881885665e-05 1.317423507e-05 -2.460801432e-05 2.363730748e-05 3.299500287e-05 --1.913453074e-05 1.217914984e-05 -2.235562026e-05 -6.8307398e-07 -1.092044512e-06 --3.373090511e-05 -1.509700053e-05 8.943141277e-06 3.515580417e-05 -7.254542225e-05 -2.210912247e-05 1.852863043e-05 -2.760575504e-05 5.351882681e-06 5.074670894e-05 --2.734652589e-06 -4.474870961e-06 9.010507817e-06 -8.244770333e-06 -6.978117572e-06 --4.803995595e-06 -8.035536438e-06 1.394234756e-05 -6.741711192e-06 -1.536279291e-05 -0.135553984 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.2027622963 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.05088000428 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.00145011892 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0005568395734 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.001483043333 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0003720548272 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.000354780514 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0002312310408 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0001375325211 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -3.144123342e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.582658641e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --4.314977267e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.04515113839 -0.05637151063 -0.003923850458 0 0 --0.06059489242 0.07565560481 0.005963456281 0 0 --0.001769190901 0.0004950287866 -0.5785590409 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.09450380684 -0.1123747165 -0.005019336928 0 0 --0.1268176417 0.1508041756 0.008142752829 0 0 --0.008884673343 0.009523334418 0.07026481773 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.059936372 -0.06811880297 -0.0003226146201 0 0 --0.08042051519 0.0914024134 0.001293515943 0 0 --0.003111103229 0.00301172682 0.1993251619 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.01387596623 -0.01530849053 0.001240182213 0 0 --0.01861350963 0.02053597817 -0.001470509673 0 0 -0.0007895724159 -0.001040034655 0.07493690099 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0007632257432 -0.0009004138475 0.001007805033 0 0 --0.001020497729 0.001204302818 -0.00134117258 0 0 -0.001070810823 -0.001272206083 0.00957714165 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.001810662009 0.002314170513 0.0002804510707 0 0 -0.00243048207 -0.003106315412 -0.0004045808236 0 0 -0.0003822811378 -0.0004668005109 -0.006521023269 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.001472314283 0.001940295498 -5.172786182e-05 0 0 -0.001975404018 -0.002603349714 4.569786992e-05 0 0 -5.014466341e-05 -4.951700451e-05 -0.009143161863 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0001185115585 0.0001508815182 -0.0001339853651 0 0 -0.0001585841474 -0.0002019390154 0.0001779197035 0 0 --0.000133976503 0.0001723623132 -0.0006046530388 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0002489936562 -0.0003044491696 -9.407651552e-05 0 0 --0.0003344138289 0.0004088713267 0.000130045651 0 0 --0.0001119693678 0.000135004822 0.0006066784697 0 0 -0 0 0 0 0 -0 0 0 0 0 -9.777860621e-05 -0.0001107062912 8.035258479e-06 0 0 --0.0001311710086 0.0001485134246 -9.385617424e-06 0 0 -4.303637368e-06 -6.142574504e-06 0.00064210009 0 0 -0 0 0 0 0 -0 0 0 0 0 -4.985031185e-05 -5.889087879e-05 3.034960921e-05 0 0 --6.678520876e-05 7.890335152e-05 -3.999398991e-05 0 0 -3.210856621e-05 -3.850742809e-05 0.0001453932689 0 0 -0 0 0 0 0 -0 0 0 0 0 --7.282219335e-06 8.691508751e-06 2.717666784e-06 0 0 -9.781014203e-06 -1.167297842e-05 -3.753408756e-06 0 0 -3.184530934e-06 -3.732288718e-06 5.439457745e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.711322407e-05 3.516396175e-05 1.04736862e-06 0 0 -3.638547677e-05 -4.718834428e-05 -1.834840104e-06 0 0 -3.450297155e-06 -4.375046023e-06 -0.0002167471671 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0280890869 -0.02465832297 -0.00131919043 -0.0362675276 0.001882255198 -0.004717588362 0.004139572001 0.0004493922481 0.006089400506 -0.0006218610795 --0.000711141253 -0.0002044717241 -0.02455491334 -0.0003869102 0.03295171172 --0.05147012957 -0.04518171749 -0.002631507411 -0.06645423334 0.003736512143 -0.0006856739715 0.0003905206759 0.03294972811 0.0007077569871 -0.04421907962 --0.01544985236 -0.01225551094 0.0005796454437 -0.01795207821 -0.0007282186991 -0.01371822278 0.01087343911 0.00083294397 0.01593285857 -0.001161740239 -0.0005600545594 0.0006556082676 0.002249652193 0.0009822923823 -0.003022629968 --0.03495172858 -0.02771830873 0.0002967056513 -0.04060617204 -0.000285955331 --0.001169578486 -0.0008799434116 -0.003027965528 -0.001299513447 0.004066752014 -0.0007606509149 0.0005106926457 0.000645446102 0.0007453925304 -0.0008676379715 -0.009763733218 0.006611331305 0.0001629822834 0.009620208553 -0.000239239036 -0.0003035194501 0.0002089923436 0.01204306041 0.000353462867 -0.01616045999 --0.004509184474 -0.003059574871 0.0008889446864 -0.004448515281 -0.001183265283 --0.0006448915717 -0.0003276754246 -0.01616365767 -0.0005352157503 0.02168923454 -0.002139374894 0.0007274705812 -6.127408969e-05 0.001008164808 8.498625152e-05 -0.002387505043 0.0008161894866 -0.000163160493 0.001131430159 0.0002219265517 --0.0002442866181 -0.0002036826023 0.002776541134 -0.000290512946 -0.003723288435 -0.002282925391 0.0007746174564 -2.777858464e-05 0.001073387227 4.026336845e-05 -0.0002774232828 0.0002627996724 -0.003724000057 0.0003762415594 0.00499364479 -0.0002306379136 -0.0001209061569 -3.621259322e-05 -0.000195661986 5.108607595e-05 -0.000174318096 -8.900224725e-05 -2.038469994e-05 -0.000144200689 2.920086113e-05 --8.399018836e-05 -3.824374972e-05 -0.0002253143711 -5.602250093e-05 0.0003027140995 -0.0002959593814 -0.0001561285911 -4.928620274e-05 -0.0002525922298 6.935051097e-05 -0.000108752374 5.238878257e-05 0.000302680143 7.700923158e-05 -0.0004066931886 --9.037170033e-05 -8.592089755e-05 4.752000078e-05 -0.0001266417214 -6.327078936e-05 -7.081916807e-05 6.669370165e-05 4.243700377e-05 9.86099964e-05 -5.733124325e-05 -4.133691993e-05 3.998749797e-05 -1.102098413e-07 5.906407694e-05 -8.578257404e-08 --0.0001990318285 -0.0001888507824 5.566592713e-05 -0.0002785435318 -7.360734326e-05 --5.677919016e-05 -5.356985612e-05 -3.643953187e-07 -7.906810448e-05 7.983978564e-07 -5.81577372e-05 1.666096985e-05 -6.449557125e-07 2.276912553e-05 9.163834754e-07 -5.894116579e-05 1.711644933e-05 -3.678811374e-06 2.342008445e-05 4.983396628e-06 --3.527699093e-06 -6.717980146e-06 7.537698672e-05 -9.881877668e-06 -0.0001010329745 -6.560585539e-05 1.869468227e-05 5.824660856e-07 2.553609409e-05 -7.220936691e-07 -3.740650168e-06 8.787862467e-06 -0.0001011079904 1.296108149e-05 0.0001355196691 -4.301379506e-05 5.027929273e-06 -4.533448556e-06 5.592293256e-06 6.252174393e-06 -3.949782681e-05 4.738563756e-06 -4.730411345e-06 5.320535646e-06 6.500240141e-06 --1.167106676e-05 -6.070035989e-06 2.32401136e-05 -8.688136228e-06 -3.113761067e-05 -5.101161882e-05 5.920047819e-06 -5.176331348e-06 6.566953326e-06 7.147087601e-06 -1.480233671e-05 8.062106454e-06 -3.112538843e-05 1.157427187e-05 4.169810609e-05 --1.135506891e-05 -1.650716221e-05 3.636931781e-06 -2.464131844e-05 -4.753896873e-06 --2.516490749e-06 -3.769050323e-06 4.404242848e-06 -5.613619261e-06 -5.881451257e-06 -1.961624793e-06 3.700877167e-06 -2.76205961e-05 5.429821475e-06 3.703784734e-05 --1.818186404e-05 -2.636882299e-05 3.744810493e-06 -3.936982872e-05 -4.822922675e-06 --2.579224406e-06 -4.847050393e-06 3.70150862e-05 -7.107528715e-06 -4.963619399e-05 -1.517850842e-07 -4.036784103e-06 -1.736277537e-06 -6.139618557e-06 2.356442177e-06 -1.545694496e-07 -3.029837079e-06 -1.190152362e-06 -4.608852561e-06 1.616797844e-06 --1.799967051e-06 -1.96953304e-06 -6.057485026e-06 -2.962399626e-06 8.149830732e-06 -1.810277851e-07 -5.173577398e-06 -2.26275358e-06 -7.868350296e-06 3.070452284e-06 -2.41256428e-06 2.683926486e-06 8.144454581e-06 4.037644076e-06 -1.095787708e-05 -4.201626788e-06 2.436374719e-06 8.780298951e-08 3.518544552e-06 -1.233757405e-07 -6.609438468e-06 3.838990501e-06 -3.287014539e-07 5.542945935e-06 4.321640228e-07 --3.690343329e-07 -3.292726925e-07 1.034939249e-05 -4.462936676e-07 -1.388355361e-05 -3.338019085e-06 1.932884e-06 2.678283821e-07 2.791934157e-06 -3.637318585e-07 -3.658598293e-07 4.023561794e-07 -1.388480549e-05 5.447840875e-07 1.862603417e-05 --2.428169573e-06 -2.721751544e-06 1.38431852e-06 -4.033781426e-06 -1.839239151e-06 -4.992359595e-07 5.387238142e-07 1.324692734e-06 8.045243997e-07 -1.781288015e-06 -1.052926274e-06 1.218597454e-06 -2.69588604e-06 1.798509525e-06 3.609423137e-06 --4.51034353e-06 -5.04333627e-06 1.596777452e-06 -7.478204574e-06 -2.108633952e-06 --1.418270112e-06 -1.622561416e-06 3.60190173e-06 -2.394010695e-06 -4.822509014e-06 --9.771180705e-07 -7.173984739e-07 -4.327250428e-07 -1.047901074e-06 5.824539508e-07 -1.34420272e-07 1.002808736e-07 -3.160826042e-07 1.449087239e-07 4.239382469e-07 --5.017867625e-07 -3.550946074e-07 -7.140106425e-07 -5.200593291e-07 9.589907598e-07 --1.77003885e-06 -1.300379257e-06 -5.627392431e-07 -1.898526662e-06 7.58344836e-07 -6.558912286e-07 4.799551897e-07 9.621367208e-07 7.039446654e-07 -1.292349192e-06 -0.06277837037 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.06875729086 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.01475740487 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.01250936213 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --4.577734578e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0002571176452 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --5.872938491e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.000130356071 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -4.782578756e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.000141437206 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -2.279663323e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -9.629673871e-08 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --5.557320193e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.162908328 -0.1263420045 -0.005035044835 0 0 --0.05961324233 0.04623591187 0.003091832751 0 0 --0.002430957327 -4.759478084e-05 -0.3320411669 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0610302437 -0.08085728727 -0.0003229840917 0 0 --0.02232023824 0.02958196636 0.001015145938 0 0 --0.001399626541 0.00145579179 0.06580162161 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.00456547292 -0.003530384071 0.00084947682 0 0 -0.001668698056 0.001289950947 -0.0002108605758 0 0 --0.0006731476094 -0.0002037465955 0.01009093763 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.01327336725 -0.0003080761889 4.49429267e-05 0 0 --0.004856141225 0.0001127006132 -1.571171427e-05 0 0 --0.000607980216 -7.297865629e-06 0.0003773049867 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.000878976762 0.0004078505292 -2.618516529e-05 0 0 --0.0003210377205 -0.0001490441506 9.320507306e-06 0 0 -4.51336839e-05 -6.785542584e-06 -0.0009676167034 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0003059639295 0.0005924359262 5.229104061e-05 0 0 -0.0001121454556 -0.0002168694382 -2.358299963e-05 0 0 -3.673127261e-05 -3.458730008e-05 -0.0008216129841 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0003305447474 -2.853811401e-05 9.121643274e-06 0 0 --0.0001207448327 1.042113054e-05 -3.327719745e-06 0 0 -1.872410569e-05 -2.495716853e-06 1.925121963e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.924126842e-05 -0.0001097314233 -8.448600649e-06 0 0 -1.437221445e-05 4.016922489e-05 4.526352461e-06 0 0 -1.990425278e-07 4.575805412e-06 -9.822714837e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0001323323981 7.924390299e-05 -1.150892844e-05 0 0 -4.83901269e-05 -2.89671703e-05 3.353039542e-06 0 0 --1.586026725e-06 5.767250052e-07 -0.0002213963236 0 0 -0 0 0 0 0 -0 0 0 0 0 --7.799401083e-05 4.15724582e-05 4.561270338e-06 0 0 -2.855356654e-05 -1.522226187e-05 -2.047968487e-06 0 0 -6.608005767e-06 -3.584604134e-06 -0.0001009587198 0 0 -0 0 0 0 0 -0 0 0 0 0 -8.914623689e-06 -1.342911447e-05 5.840451916e-06 0 0 --3.252387285e-06 4.899187805e-06 -1.961719624e-06 0 0 -1.616724389e-06 -2.36701098e-06 -3.18271696e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -8.95257771e-06 -5.319196269e-06 -8.838848266e-07 0 0 --3.276184383e-06 1.947138146e-06 3.062613863e-07 0 0 --2.688565486e-07 -1.301789657e-07 -4.167704957e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.042142658e-05 1.606418748e-05 -2.029031976e-06 0 0 -7.464440542e-06 -5.871995866e-06 6.120515009e-07 0 0 -4.079327321e-07 -1.268307561e-07 -6.071088639e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.1420797802 -0.1577486695 -0.004435424919 -0.03618289007 0.001018346511 --0.04649442491 0.05162915049 0.003618233429 0.01184056455 -0.0007024233894 --0.002544064634 -1.732293157e-05 -0.2929968063 0.000227237509 0.04991488042 -0.1360447563 -0.1510466497 -0.003185965979 -0.03464643605 0.0007943053991 --0.0004315139695 -0.001517563894 0.1071851675 -0.0004170585239 -0.01826492282 -0.06490327911 -0.08233178784 0.001496223051 -0.01117977781 -0.0003718577313 --0.04264467169 0.05410204246 0.002024651861 0.007337908489 -2.803749404e-05 --0.002516288284 0.002624348808 0.08044258849 0.0001320679977 -0.007277414141 -0.01144935626 -0.01452263234 0.002780469455 -0.001979160578 -0.0002934923325 -0.0009295421882 -0.002028254217 -0.02944815405 -0.0001855045381 0.002661123061 -0.001473551826 -0.008312236898 0.001361615538 0.0001010105616 -5.330914092e-06 --0.001477496227 0.00833051968 -0.0003541506137 -0.0001066208749 4.953792493e-05 --6.684844626e-05 -0.0002210240967 0.03212458717 -0.0001690272491 0.0014031965 --0.000947546595 0.005338946457 0.0005004226903 -7.219233292e-05 6.356904335e-05 -1.930037241e-05 -0.0001821175676 -0.01174955527 6.626629317e-05 -0.0005149090904 -0.005637779721 0.001768931377 0.0001765115277 -0.0006751727591 6.720209639e-05 --0.00330793954 -0.001038349628 -0.0001314094997 0.0003963789485 -5.29323147e-05 --0.0006179443832 -0.0001334276561 -0.0005282690664 4.999005141e-05 -0.0002541305667 -0.001938480276 0.0006068894116 -1.289896939e-05 -0.0002314856783 -1.258073069e-05 -0.000138620533 3.870507519e-05 0.0001935648311 -1.501104776e-05 9.340219019e-05 -0.001301911452 0.000628735345 -1.684800833e-05 0.0001060418321 -1.087671175e-06 --0.001503119638 -0.0007270810997 -1.483488185e-05 -0.0001227227195 5.406918437e-06 --4.189451865e-05 -5.079813976e-05 -0.002848344152 -1.509753669e-05 0.0003446875356 --0.001306539202 -0.0006334058436 -5.949384132e-05 -0.0001070357886 1.034076163e-05 --3.579213501e-06 2.010671096e-05 0.001042127461 5.953743662e-06 -0.0001261207163 --0.0004532811314 0.0001133248597 1.632386425e-05 -8.720201913e-07 4.591374852e-08 -0.0003868231252 -9.672369724e-05 -2.246809799e-05 7.186378751e-07 -6.440678359e-07 -6.657525971e-05 -2.807136374e-05 -0.0003059690374 -8.577810162e-07 -2.144911828e-05 -0.0001285544083 -3.218617951e-05 -1.339641643e-05 2.208669264e-07 -6.339594701e-07 --3.801131135e-05 9.63788086e-06 0.0001120909019 2.471319079e-07 7.846044953e-06 -0.0001275054581 1.048302718e-05 3.996454784e-06 -2.365273325e-05 -2.142309495e-06 --9.359788537e-05 -7.731335777e-06 -2.938162758e-06 1.736325798e-05 1.024900026e-06 -3.352855925e-06 -2.179257381e-06 -1.568712112e-07 -9.190986884e-07 -3.847117589e-05 --9.647838926e-07 -9.505070548e-08 -3.206683345e-08 1.800281723e-07 -2.111790425e-07 --1.404023489e-06 8.183215051e-07 6.189940693e-08 2.765841467e-07 1.40720927e-05 --4.945367309e-05 -0.0001228723425 -1.650671589e-05 -2.687024267e-05 2.793732706e-06 -2.310283969e-05 5.742971192e-05 1.77405577e-05 1.254802333e-05 -3.024878489e-06 -5.961910635e-06 1.718042278e-05 -7.893659873e-05 3.851183171e-06 1.35416829e-05 --3.107655104e-05 -7.721054556e-05 6.230768872e-06 -1.690295875e-05 -1.091519448e-06 --2.424197327e-06 -7.292640446e-06 2.875005742e-05 -1.629827235e-06 -4.932910501e-06 --5.713959929e-05 2.183512265e-05 -3.25703404e-06 6.824295373e-06 5.319388263e-07 -8.840438026e-05 -3.383780893e-05 -7.879434375e-07 -1.058416582e-05 4.861209838e-07 -1.392587277e-06 -4.60358335e-06 -0.0001902635797 -1.676615019e-06 4.275500547e-05 -0.0001103187699 -4.225142465e-05 -3.914807224e-06 -1.322021962e-05 1.265219808e-06 --3.312536981e-06 1.751265016e-06 6.962448981e-05 6.530554891e-07 -1.565319396e-05 --1.07280479e-06 4.676672101e-06 2.942260985e-06 1.34280401e-06 -6.720825465e-07 -2.44075109e-06 -1.076168982e-05 -3.580435238e-06 -3.086104912e-06 8.419889346e-07 -1.593545203e-06 -4.934188162e-06 -6.569948289e-05 -1.494539513e-06 1.45325791e-05 -3.898181623e-06 -1.730904419e-05 -2.946323974e-06 -4.960130215e-06 7.331394206e-07 --6.813796983e-07 1.838651048e-06 2.407084217e-05 5.561564986e-07 -5.325182859e-06 -1.705214447e-05 -2.773588119e-05 4.461194308e-07 -6.549639962e-06 -6.296658554e-08 --8.325382859e-06 1.354594193e-05 3.174979812e-08 3.198479606e-06 -1.405330773e-08 --3.571349969e-08 -1.458505612e-07 -1.316095034e-05 -1.863222034e-08 2.362319459e-06 -9.810949199e-06 -1.596279988e-05 -1.837536276e-07 -3.768986018e-06 4.283092256e-08 --3.334904431e-08 -1.70755959e-07 4.816158132e-06 -4.473556131e-08 -8.648547382e-07 -2.12821308e-05 -1.617318617e-05 -2.246187159e-06 -4.833960256e-06 5.702766003e-07 --7.132162264e-06 5.423872e-06 1.838998531e-06 1.62079787e-06 -4.407270796e-07 --2.565929818e-06 1.448604508e-06 -2.956056106e-05 4.465876226e-07 6.786339561e-06 -2.00210027e-05 -1.520412061e-05 2.975219149e-07 -4.54507369e-06 -1.746142898e-08 -6.664498583e-07 -6.254065453e-07 1.080072593e-05 -1.884127745e-07 -2.480295841e-06 -1.004088407e-06 -1.696559361e-06 2.272323866e-07 -4.564817707e-07 -3.991686587e-08 -3.083169097e-06 -5.201363703e-06 -8.582774002e-07 -1.400333252e-06 1.965199679e-07 -1.014792117e-06 -1.648497743e-06 -5.083191702e-05 -4.710288462e-07 1.043080927e-05 -9.030346701e-06 -1.523823571e-05 -1.376121272e-06 -4.101889966e-06 3.422838794e-07 --4.655067358e-07 5.869414853e-07 1.860806611e-05 1.679870292e-07 -3.818974735e-06 -0.04945767301 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.05813377112 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.02183901395 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.002773431955 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0005683478927 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0003045087541 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0001197365695 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --5.409970668e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --8.595807151e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.421739079e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --4.216267193e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.353259715e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --6.530509697e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0006752477586 -0.001617522924 -0.0005457304798 0 0 --0.08167360545 0.1959778208 0.00680033178 0 0 --0.001386741188 0.001927535828 -0.2625389508 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0003778939193 -0.0001629215055 -0.000174013445 0 0 --0.04596799987 0.02033143769 -2.050187732e-05 0 0 --0.001054342678 -0.0004411421361 0.04252014529 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.630797781e-05 -4.891721287e-05 4.46593318e-06 0 0 -0.00309903234 0.005765362641 -0.0002861920287 0 0 -0.0002861770773 0.0005548074547 0.0007439349815 0 0 -0 0 0 0 0 -0 0 0 0 0 -2.271138146e-07 -5.830572958e-05 -5.688215445e-06 0 0 --2.42132161e-05 0.007162446533 -6.974772584e-05 0 0 --5.089998244e-07 3.949141471e-05 0.001391690811 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.922687484e-07 -5.398968175e-06 -9.097616958e-07 0 0 -4.565520843e-05 0.0006299679817 5.037543677e-05 0 0 -4.233525487e-06 6.509960527e-05 -0.0002368845872 0 0 -0 0 0 0 0 -0 0 0 0 0 --4.425866931e-06 -8.339693694e-07 1.535114009e-06 0 0 -0.0005428735732 0.00011029976 7.492828784e-06 0 0 -6.776952872e-06 -3.051209717e-05 -0.0008504372318 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.902081266e-07 3.638373437e-06 9.173240065e-07 0 0 -3.436269594e-05 -0.0004296583647 -3.530676663e-05 0 0 -3.360969387e-06 -4.375381932e-05 -0.0002420570327 0 0 -0 0 0 0 0 -0 0 0 0 0 -8.747748267e-08 -6.948931988e-07 -2.169182167e-08 0 0 --1.109921518e-05 8.900867742e-05 -1.152182311e-05 0 0 -9.958976725e-07 -8.832686029e-06 -3.282653496e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -4.022281401e-07 -3.775500718e-07 -3.161114236e-07 0 0 --4.771202551e-05 4.482426946e-05 1.164668458e-05 0 0 --3.33237641e-06 3.137790199e-06 -6.855361626e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.156003071e-07 4.98393524e-07 7.003310352e-08 0 0 -1.449663224e-05 -6.256288591e-05 7.039098701e-06 0 0 --3.997540468e-07 -1.422436998e-07 -0.0001263473152 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.67628206e-07 6.975220078e-07 2.06237752e-07 0 0 -2.013123195e-05 -8.336376733e-05 -5.474362044e-06 0 0 -1.288881854e-06 -7.881941653e-06 -9.954809293e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --7.18944992e-08 1.501656682e-07 7.93517686e-08 0 0 -8.392939045e-06 -1.745962724e-05 -4.303647735e-06 0 0 -1.246510703e-06 -3.547283811e-06 -6.253959899e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -2.608248416e-08 -8.121681052e-08 -1.755062844e-08 0 0 --3.198441737e-06 9.933985419e-06 -1.089300702e-07 0 0 -1.241448469e-07 -7.236605852e-07 -4.005238534e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.01751505567 -0.006839448736 -0.0002640990078 0.01597649899 -0.001409069332 -0.001635002619 0.0006396219723 -0.0001350873585 -0.001488092345 -0.0008568762987 --0.0005981445435 -0.0006792830213 0.0004234899002 0.0002354380494 0.002628642879 --0.228096653 -0.08909041846 0.0010835202 0.2079753324 0.009635427914 --0.001689891029 -0.0009315260113 -0.05189983613 0.00216566258 -0.3211128312 -0.03266655873 0.02464151024 -0.0005326155055 -0.02772954871 -0.001552307208 -0.0008499077131 0.0006443408159 -0.0001281002332 -0.0007207237623 -0.0004802144045 -6.342885384e-05 1.700732073e-05 -0.0001711548536 -7.544323282e-05 -0.0006576109051 --0.04722630701 -0.03559896715 -0.0002393429717 0.04009339514 -0.001641720842 --0.001690052055 -0.001814151506 0.0205268113 0.001327535073 0.07900104778 -0.0004468307068 0.002977886608 0.0001556831 0.0005880570783 0.0003811107129 -4.142207812e-06 2.778239071e-05 -2.959561735e-06 5.463096916e-06 -6.399557728e-06 -4.031883615e-06 2.658424772e-05 -3.009509794e-05 5.078245163e-06 -6.769516234e-05 -0.0002251890779 0.001528762443 -0.0002585614824 0.0003033314093 -0.0005680899164 -9.550773947e-05 0.0004174695828 0.003713851259 8.697187256e-05 0.008383826348 -0.002050801494 -0.001654976949 8.368110611e-06 -0.00326347594 9.182060551e-06 -5.576489182e-05 -4.518310492e-05 9.963872874e-07 -8.884718762e-05 -5.175563657e-06 -2.890986913e-06 -5.132859787e-06 1.255335254e-06 -7.101932634e-06 -8.802349868e-06 --0.003259380043 0.002628048369 -4.694142666e-06 0.00518530744 -7.532143645e-05 --0.0001182069148 0.0001374713959 -0.0001501322206 0.0002154706594 0.001055671395 --7.756513457e-05 -0.0001246432058 5.39033032e-06 -9.005400586e-05 -2.263628416e-05 --4.004201762e-07 -6.514856877e-07 1.081728585e-07 -4.737860774e-07 -4.929783484e-07 --1.115835605e-06 -2.828119887e-07 -1.228777676e-06 3.345888121e-07 5.761009654e-06 --7.959351827e-05 -0.0001252544879 -1.055641276e-05 -8.95147009e-05 5.205928536e-05 -4.114609094e-06 -1.607134779e-05 0.0001509704625 -2.002182408e-05 -0.0007066895135 --0.0002343881183 -0.000457316396 5.183362706e-06 2.500620666e-05 4.327138499e-05 --4.507725165e-06 -8.644271525e-06 9.178128562e-07 5.394162235e-07 4.448533914e-06 --1.108116863e-06 -1.658260462e-06 2.797626893e-06 3.113622513e-07 1.246294587e-05 -0.0001320998008 0.00025922708 5.270249491e-06 -1.352444974e-05 1.182289174e-05 -4.68603445e-05 3.062727366e-05 -0.0003378236002 -2.817456992e-05 -0.001497421385 --4.6101707e-05 3.07049548e-05 1.751913404e-06 7.579463483e-05 1.230149271e-05 --6.579275618e-07 4.370281483e-07 6.064444918e-08 1.079635531e-06 4.121584952e-07 --5.375606183e-07 3.439519622e-07 9.574317623e-08 8.714208663e-07 6.431848472e-07 --9.718805285e-06 6.584395174e-06 -1.32103142e-06 1.611551871e-05 -8.62804334e-06 -2.511182974e-05 -1.583851131e-05 -1.10289168e-05 -4.030866591e-05 -7.358357821e-05 -3.247645383e-05 2.579986983e-05 2.898191786e-07 -1.413792415e-05 3.310814722e-06 -1.039155198e-06 8.312117757e-07 -3.567132495e-08 -4.469491383e-07 -4.585726403e-07 --9.00805439e-08 -1.232737293e-07 -2.871608391e-08 1.792007919e-09 -3.577632146e-07 --7.234577998e-05 -5.748654958e-05 -5.239798615e-07 3.14807164e-05 -5.847624064e-06 -1.317630083e-06 6.223892335e-07 3.499290085e-06 -9.79084919e-07 4.393918672e-05 --1.958479688e-05 -1.497377761e-05 -1.413019531e-06 1.193943516e-05 -9.654609019e-06 -2.089758965e-07 1.58490683e-07 -5.13799622e-08 -1.266213157e-07 -3.746913098e-07 --1.941606167e-07 -2.145870721e-07 1.884503357e-07 7.117756381e-08 1.358883313e-06 --5.608787595e-05 -4.27887138e-05 1.735193862e-06 3.411387798e-05 1.391172433e-05 --5.625414884e-06 -4.752374389e-06 -2.351655505e-05 3.695864504e-06 -0.000168897513 --6.02437639e-05 1.89715831e-06 -3.175415261e-07 6.936124959e-05 -4.563659344e-07 --7.801159409e-07 2.343972533e-08 2.45135946e-08 8.957956527e-07 2.49167965e-07 --3.155255809e-07 -5.528245952e-08 1.765258905e-07 3.075048614e-07 1.585681067e-06 --8.070844097e-06 2.337419315e-07 7.964022541e-07 9.231327355e-06 7.414464685e-06 -2.165886302e-06 4.43567677e-07 -2.160438072e-05 -9.317918384e-07 -0.0001925965714 --2.026854107e-05 -8.960060398e-06 5.501506232e-07 1.636531954e-05 5.220722861e-06 --2.177001547e-07 -9.57198216e-08 2.133220276e-08 1.755266595e-07 1.806024513e-07 --1.685552912e-07 -1.158660073e-07 9.322701729e-08 1.036058661e-07 7.590177977e-07 --9.965858117e-06 -4.420452336e-06 -2.467406185e-07 8.056816849e-06 -1.609284031e-06 -4.997880033e-06 1.851238919e-06 -1.115888434e-05 -3.848237086e-06 -9.0289741e-05 --9.230747535e-06 -4.418197233e-06 5.572296702e-07 7.466770033e-06 4.166344856e-06 -1.455746376e-08 7.172780477e-09 8.778462568e-09 -1.187885918e-08 6.185225539e-08 --1.236854523e-07 -1.069955894e-07 6.874241488e-08 6.527451527e-08 4.899286851e-07 --1.89380324e-05 -9.078968822e-06 -3.419745572e-07 1.534675092e-05 -1.975047595e-06 -3.492630272e-06 1.549076805e-06 -8.187128268e-06 -2.707389596e-06 -5.808941823e-05 --1.310471628e-05 -3.151138808e-06 -1.331941625e-07 1.254374835e-05 -7.269287114e-07 --2.895604894e-08 -7.053515747e-09 -1.955222135e-09 2.771084951e-08 -1.527405678e-08 --1.02227107e-07 -7.002493023e-08 6.519218008e-08 6.350472727e-08 5.394463065e-07 --1.859781465e-05 -4.471393138e-06 2.794803892e-07 1.778567492e-05 2.823792912e-06 --1.66685611e-07 -8.453048351e-08 -8.001362076e-06 4.093321667e-07 -6.584011451e-05 -0.3604552665 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.01957955409 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.4130133555 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.1407343575 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.006252578156 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.003005583138 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.003971235496 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.004144103765 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -8.934049981e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.001105534499 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --4.988557843e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.000143296498 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -3.572381072e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.327197601 -0.02705813112 -0.12823946 0 0 --0.02516830935 0.3676379204 0.1809034136 0 0 -0.3231218536 -0.4227641517 0.1415901811 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.1969727509 0.01534471742 -0.02485486781 0 0 -0.02141524015 0.1386929442 0.006687028825 0 0 -0.2287218507 -0.2882970316 0.1193259349 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.02746314277 -0.006224182699 -0.01969086715 0 0 --0.009214732607 0.02959208577 0.03135690744 0 0 -0.04093593082 -0.0582623194 -0.06626245588 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.01514169508 -0.02438920094 -0.04217064342 0 0 --0.02633310965 0.02996575668 0.05772631297 0 0 --0.03184470765 0.04175163742 0.07729959387 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.00101098333 0.001363629384 0.002408459818 0 0 -0.001098853861 -0.001534003269 -0.002988216359 0 0 -0.002352430373 -0.003658537203 -0.006587201571 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0002270071088 0.0009780084474 0.001233245515 0 0 -0.0009687779125 -0.0004821570392 -0.001568411256 0 0 -0.0008774915997 -0.00107727083 -0.004171046416 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0006284727343 -0.001363750361 -0.002200886484 0 0 --0.00126313034 0.001033163094 0.002656403029 0 0 --0.001421349483 0.001794848187 0.001703471879 0 0 -0 0 0 0 0 -0 0 0 0 0 --8.473318529e-05 0.0002471294846 0.0004326180635 0 0 -0.0002539087282 -0.0002966027927 -0.0006087337401 0 0 -0.0006121386163 -0.0008000766793 -0.001002713622 0 0 -0 0 0 0 0 -0 0 0 0 0 -2.966235775e-05 1.223670375e-05 -2.827654836e-05 0 0 -7.083673894e-05 0.0001734083017 3.118462779e-05 0 0 -0.000126410778 -4.356558761e-05 0.0002351487906 0 0 -0 0 0 0 0 -0 0 0 0 0 --4.572391173e-05 -0.0001684294461 -0.0002415101073 0 0 --0.0001311293827 7.290163865e-05 0.0003131070533 0 0 --0.0001484594557 0.0002375669471 -0.0002375699592 0 0 -0 0 0 0 0 -0 0 0 0 0 --5.273963051e-05 9.845577775e-05 0.0001677711221 0 0 -7.081089594e-05 -0.0001896044421 -0.0002420222553 0 0 -0.0001121843368 -0.0002508233367 -0.0006929370412 0 0 -0 0 0 0 0 -0 0 0 0 0 -3.053469997e-05 -2.299234603e-05 -4.411431532e-05 0 0 --2.832424768e-05 2.239764048e-05 5.658649477e-05 0 0 --4.797952985e-05 4.098772602e-05 1.9497419e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.790568935e-05 -1.637234013e-05 -1.823114204e-05 0 0 --8.834657829e-06 5.457947497e-06 2.921230458e-05 0 0 -1.6023353e-05 -6.972543391e-06 -7.423612552e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.02032438212 -0.09169808444 -0.2307995808 -0.2253837521 0.04325253867 --0.04353301768 0.07360058122 0.1176318323 -0.01089101709 -0.0630803911 -0.2835775675 -0.2008155372 -0.3404216844 0.07675027573 0.002526724921 --0.2620032566 -0.09522598028 -0.1537056707 -0.1773661457 0.3779619869 -0.06780654964 0.1089058111 0.003779346038 -0.3815664236 -0.3523676854 -0.2086432067 -0.1265608832 -0.1820160861 0.1337474142 -0.05321771594 --0.06093617846 0.0779169014 0.1133475625 -0.03192192938 -0.03745410463 -0.01000531424 0.003211507225 0.05056265293 0.088970844 0.002914419829 -0.1148779494 -0.1504114329 -0.02066855239 0.4099092283 0.1512477381 --0.07463478381 0.01774232584 0.007012518751 -0.0841254488 0.04795428378 -0.01558762773 -0.04310260499 -0.06678862459 0.0008292219038 0.02098599993 --0.01984360728 0.01796832336 0.01781996866 -0.02090088664 0.005152830265 --0.03090242532 -0.007083463802 0.01054475264 -0.0007157603022 0.04806798955 --0.01561715958 -0.06273577854 -0.04031918435 0.03527423456 0.0883746186 -0.004636430108 0.0246852097 0.0455312048 0.01724124936 -0.02673965318 --0.004924442635 -0.002352093054 -0.004700652025 -0.003973571804 0.006399709332 -0.007788914678 0.005748753329 0.008981407808 0.008578907275 -0.01234597514 -0.003541677881 -0.0003355743999 0.001305927571 0.0005084172511 -0.001675019117 --0.01057870229 -0.01000684889 -0.01578836707 -0.01436866552 0.02136136477 --0.0007565978416 -0.002979434077 -0.004655920911 -0.003812021015 0.005948044708 -0.002580592257 0.002238333131 0.004086407452 0.002901980235 -0.005556729935 -0.002769845318 0.002937325889 0.005346613768 0.0037782606 -0.006825406316 -0.003926389965 0.00444874539 0.007842704086 0.006872518104 -0.009246981562 -0.002098971174 0.00260091725 0.004528725446 0.004232623663 -0.00505848525 --0.006415720484 -0.005584813083 -0.01003349526 -0.008019372835 0.01328798813 --2.734369248e-05 0.0009641743822 0.0009859150117 -0.0008403691288 -0.001245443328 -0.0005193430434 0.0002973359462 0.0004363185019 0.0002592010779 -0.0008902462642 -0.001257011031 0.0001936912502 0.0004765731664 0.0009997350919 -0.001478644763 --6.526399123e-05 0.001473365214 0.001120663138 -0.001992548541 -0.002073122545 --0.001125926144 -0.000342373589 -0.00124542573 -0.001905223562 0.001215422511 --0.0009254688719 -0.0006206547843 -0.001110311271 -0.00101131754 0.001630512211 --6.49869074e-05 -0.0001206216751 -0.0002124989794 -8.792537726e-05 0.0002543872883 --0.0005033807883 -0.0005718711575 -0.001037194169 -0.0008529538056 0.00119238818 --0.00120138063 -0.0009421023272 -0.001710449758 -0.001667457156 0.002209800605 -0.001065698076 0.0007225921301 0.001282057469 0.001060610387 -0.001942447655 -0.000400658144 -0.0001382846684 -0.0002174840699 0.0002540315103 -9.730838441e-05 -1.090731818e-05 0.0001655604287 0.0002777941691 6.060087018e-05 -0.0002721523149 -7.087155038e-05 0.0001735211504 0.0003425870478 0.000295150528 -0.0002650762014 -0.0002535310708 -0.0001521839492 -0.0001009959939 0.0006908456991 0.000240571436 --0.0003704434651 -0.0001142254127 -0.0001775149549 -0.0002091896201 0.0005130833814 -6.946148684e-05 0.0001974974218 0.0002924230036 -7.54909747e-07 -0.0003698174243 -0.00020615467 9.615354439e-05 0.0001714302462 0.0001833723581 -0.0003113635954 -0.0004719104695 9.998960319e-05 0.0001755510357 0.0003313739647 -0.000564504984 -6.348325018e-05 0.0002171824744 0.0002948924792 -8.430472932e-05 -0.0004210804556 --0.0003870987529 -0.0002350656001 -0.0004851180287 -0.0005727198849 0.0005896035439 --0.000338557398 -6.32486345e-05 -0.0001502953974 -0.000377532222 0.0003304368729 --2.357820653e-05 -6.380043369e-05 -0.0001077657924 -3.510711853e-05 0.0001152355298 --5.332822892e-05 -0.0001568117863 -0.0002950454404 -0.0002028286994 0.0002342899808 --0.0004167742151 -0.000111325638 -0.0003068776321 -0.0007357076057 0.0003593325566 -0.0002959174008 0.0001589635016 0.0002464116711 0.0001267919701 -0.0005309161017 --8.46316188e-06 -1.768959683e-05 -4.075187517e-05 -4.2507307e-05 2.136065478e-05 --3.315597835e-05 7.301534319e-06 9.193623783e-06 -2.360306035e-05 1.637688066e-05 --2.073910498e-05 -1.676880195e-05 -2.313785696e-05 1.528819115e-06 4.792897528e-05 --5.081196241e-05 -3.034163065e-06 -1.319037687e-05 -5.099106811e-05 4.188932579e-05 -3.774943805e-05 2.709280918e-05 2.913782714e-05 -2.552712485e-05 -8.990366147e-05 -1.649167946e-05 1.893022797e-05 2.978485444e-05 1.125813048e-05 -4.364033549e-05 -2.659469902e-05 2.469850112e-05 4.51850919e-05 3.592188466e-05 -5.54714459e-05 -8.383182747e-05 1.333258098e-05 2.220943111e-05 5.32229485e-05 -9.525643121e-05 -8.080633034e-06 2.587957601e-05 3.617800628e-05 -6.330586217e-06 -5.084188556e-05 --3.857063582e-05 -4.098314966e-05 -9.728362787e-05 -0.0001224532213 6.571054441e-05 --7.454860955e-05 -2.980117016e-06 -1.976481174e-05 -9.293203386e-05 5.2870834e-05 --2.988878126e-06 -1.373506896e-05 -2.336755799e-05 -7.2221383e-06 2.217606892e-05 -1.525678999e-05 -4.604765813e-05 -8.606216553e-05 -3.630001223e-05 4.245800591e-05 --9.989149737e-05 -1.067849228e-05 -5.038726466e-05 -0.0001699216744 6.51743922e-05 -6.163350936e-05 3.450754676e-05 4.393999312e-05 -2.404636589e-06 -0.0001217253331 -0.3562023 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.002193818211 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.3962837069 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.1515937321 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.008754426351 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.001633176947 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.002863467616 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.00451803618 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.000407134755 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.001011574411 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.204251125e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --5.743536142e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -8.458485312e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.3181807133 -0.02603679085 0.1187375903 0 0 --0.0255817835 0.3573671498 -0.1631140271 0 0 --0.3256833348 0.4258706027 0.1374355301 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.2054588451 0.01533963322 0.02587798453 0 0 -0.02016599994 0.1499740696 -0.008218292007 0 0 --0.2320560069 0.288554435 0.1489385215 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.02910178341 -0.001525545243 0.01295442633 0 0 --0.004173872945 0.02666184686 -0.02109726963 0 0 --0.04954706546 0.06932901622 -0.07922661682 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.01476705056 -0.0241289899 0.04143684605 0 0 --0.02604989378 0.02929775162 -0.05625727011 0 0 -0.02929199019 -0.03811189867 0.06940464558 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.000223410182 -3.319247812e-05 0.00017796023 0 0 --0.0003443577512 0.0004409723114 -0.0003664773269 0 0 -0.0003577848373 0.0002366039776 -1.583532101e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0003433312035 0.0009529735691 -0.001223607773 0 0 -0.001002877968 -0.0006230664297 0.00153218919 0 0 --0.0007555137242 0.000777369072 -0.004109652691 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0004319258247 -0.001030479971 0.001644594323 0 0 --0.0009426924356 0.0006423408184 -0.001883910836 0 0 -0.0006989164985 -0.0007927974057 -1.816319015e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -5.207737335e-05 0.000125701185 -0.0001961016746 0 0 -0.000141064326 -5.927766319e-05 0.0002826990378 0 0 --0.0004104797571 0.0004959400546 -0.0003544565472 0 0 -0 0 0 0 0 -0 0 0 0 0 -4.016905629e-05 -7.427321601e-05 0.0001660053963 0 0 --7.622238641e-06 0.00024642839 -0.0002183056149 0 0 -1.104477677e-05 -0.0001575996091 0.0005435376562 0 0 -0 0 0 0 0 -0 0 0 0 0 --9.703147175e-05 -8.226280128e-05 9.400420073e-05 0 0 --5.366468953e-05 -5.734217876e-05 -0.0001071939904 0 0 --2.490091509e-06 -6.859026328e-06 -0.0006416619137 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.149302944e-05 8.06253131e-05 -0.0001307294117 0 0 -5.211276475e-05 -0.0001401669161 0.0001828908405 0 0 --6.339753619e-05 0.000175131526 -0.0005540363078 0 0 -0 0 0 0 0 -0 0 0 0 0 -3.699545309e-05 -4.281665586e-05 7.658880939e-05 0 0 --4.493136573e-05 4.604741997e-05 -9.959984957e-05 0 0 -7.697088247e-05 -8.801109118e-05 7.940910384e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --4.202409393e-05 4.917219716e-07 -1.203650345e-05 0 0 -7.742170235e-06 -1.680343475e-05 1.107150021e-05 0 0 --4.450225174e-05 4.594365615e-05 -0.0001458360157 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.01221741547 -0.08654105547 0.2203336668 -0.2254996606 -0.0443728364 --0.04122353824 0.06773162879 -0.1089181598 -0.009851244665 0.0581596692 --0.2851168879 0.1998879765 -0.3435799961 -0.06813427942 0.003794169916 --0.2601676911 -0.08907989876 0.1497430539 -0.1904794454 -0.3585232074 --0.07731902845 -0.1060507396 0.003858803213 0.371835988 -0.3579438204 -0.2122254028 -0.1250670158 0.1788720851 0.1348859891 0.05566434264 --0.05903244907 0.07647143059 -0.1119780586 -0.02928430917 0.03879237643 --0.01799219311 0.0001971621475 0.04114617544 -0.08593292538 -0.002941182175 -0.1166389091 -0.1483604094 0.01829713823 0.4109436894 -0.148267741 -0.06888603817 -0.01461080797 -0.0002956671701 0.08380888849 0.04462298188 -0.02115991029 -0.04340862425 0.06761679984 0.00365502909 -0.0150885395 --0.02146662228 0.0191543352 -0.01904478264 -0.02209713078 -0.005256737888 -0.02999333923 0.006788194727 0.01232301063 -0.002231454195 0.04605006659 --0.01128728837 -0.0616874656 0.03452376639 0.04377133492 -0.08263074897 --0.001797517415 -0.02414168985 0.04383806645 -0.01443005292 -0.02292129209 --0.006240025093 -0.004027035314 0.008006331981 -0.005995055638 -0.009340695572 -0.005962001576 0.005156298047 -0.007246689452 0.006034956684 0.009469548348 --0.0003370474019 0.002506207208 -0.001578725108 0.002473081387 0.004423463632 --0.01236801577 -0.01224702966 0.01876342973 -0.01605152792 -0.02584213571 --0.002433697741 -0.0005003946934 0.001692266911 -0.0007666950076 -0.0008884127087 -0.002581995659 0.002086200282 -0.003751441025 0.002696733992 0.005322246311 -0.002919855395 0.003322215243 -0.006002142652 0.003953719944 0.007590123958 --0.003913243392 -0.00469413527 0.008376863255 -0.007335261861 -0.00947485603 -0.001804686764 0.002278859624 -0.004024365381 0.004218888506 0.004119128897 -0.006709599584 0.005753490624 -0.01030485739 0.008233876651 0.0138169065 -0.0001320437251 0.001310509688 -0.001555799433 -0.0005462455033 0.001783348894 -0.000978038908 0.0005557513996 -0.0009542046354 0.0008633541053 0.001627027543 --0.002044743808 -0.0007079974117 0.001320473518 -0.001777451784 -0.002895993988 -0.0001714041726 0.00191692028 -0.001617876185 -0.0019813659 0.002902045283 -0.001932237945 0.00104021742 -0.002587738657 0.003091819071 0.002760115952 --0.0009505748342 -0.0007252814799 0.001294930376 -0.001103373463 -0.00177405527 --0.0002258195872 -0.0002357078714 0.0004363554122 -0.0003009711358 -0.0005542889852 -0.00073883937 0.0007533737501 -0.001337798971 0.001092011939 0.00166012049 --0.001245029053 -0.001063910832 0.001860542506 -0.001662497452 -0.002418407219 --0.001261851223 -0.0009676383502 0.001749032403 -0.001423493087 -0.002409464374 -0.0003982098697 -0.0002066670696 0.0003342349403 0.0002160297081 -4.265157902e-08 --2.420117409e-05 0.0001674463478 -0.0002747209227 2.426608809e-05 0.0002480569709 --8.68255596e-06 -0.0001483750866 0.0003113979304 -0.0002800546543 -0.0001622521707 -0.000201811502 -0.0002439298509 0.0002120236044 0.0007309954159 -0.0004513583615 -0.0003375450531 6.038129063e-05 -7.054002054e-05 0.0001241252694 0.0004183898806 -5.373673797e-05 0.0002385502676 -0.0003700259351 2.676437555e-05 0.0004077732886 -0.0002790100779 0.0001252165647 -0.000229767916 0.0002687220225 0.0004047481538 --0.0005750516061 -0.0001533652676 0.0002586224515 -0.0003984481264 -0.000730146666 -7.292404766e-05 0.0002513996874 -0.0003256234947 -0.0001541634988 0.0005108515152 -0.0004541860445 0.0003189379069 -0.0006462574945 0.0007159358953 0.0007364114108 --0.0003297004812 -7.949814901e-05 0.0001713414734 -0.0003709584209 -0.0003355849266 --5.581825658e-05 -7.189600646e-05 0.0001244525955 -6.433675618e-05 -0.0001525708972 -0.0001056196603 0.0001624669769 -0.0003006666732 0.0002190660435 0.0002933456015 --0.0004097240761 -0.0001201899463 0.0003000921787 -0.0006919983391 -0.000360789594 --0.0003189954344 -0.0001807153868 0.0002919283698 -0.0001695377543 -0.0005704522138 -6.903886398e-06 -1.511380073e-05 3.788168683e-05 -3.834056525e-05 -2.238635707e-06 --3.120854366e-05 1.170981888e-05 -1.640945914e-05 -2.292680789e-05 -7.316545227e-06 -1.401273516e-05 1.058304473e-05 -1.036640315e-05 -1.239747257e-05 3.488404867e-05 --4.114691292e-05 1.655616205e-06 1.228585194e-06 -3.352906966e-05 -2.951327804e-05 --1.623486083e-05 -2.089003441e-05 2.025665433e-05 3.106359211e-05 -5.909080871e-05 -8.369337832e-06 2.253766645e-05 -3.49283555e-05 4.792618292e-06 4.272323612e-05 -3.355466993e-05 2.370345628e-05 -4.430752175e-05 4.244671877e-05 5.906355739e-05 --9.167443142e-05 -1.195882541e-05 1.748561895e-05 -5.076813018e-05 -0.0001008440798 -4.439993953e-07 2.54477803e-05 -3.211407121e-05 -2.207779003e-05 4.773763182e-05 -3.902697694e-05 4.440263972e-05 -0.0001010806206 0.0001206919234 7.131798903e-05 --7.255241538e-05 -5.633716565e-06 2.283695405e-05 -9.07511224e-05 -5.309434132e-05 --8.456784513e-06 -1.448807081e-05 2.51685158e-05 -1.214623123e-05 -2.748286381e-05 --5.605478245e-06 4.50728663e-05 -8.345031071e-05 3.774058565e-05 5.124900031e-05 --9.750437195e-05 -1.153727844e-05 4.833904738e-05 -0.0001622503443 -6.276029548e-05 --6.426035714e-05 -3.752889557e-05 5.064422656e-05 -3.49362673e-06 -0.0001265567772 -0.001218420573 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.001099693352 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.001520877974 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0001666719917 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.691881489e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --4.750592852e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.633753849e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.785060879e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.450010928e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -6.105065749e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.178996108e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -5.414505232e-07 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -2.708264947e-07 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.002532729875 0.00428462652 0.7794416246 0 0 --0.0008977603466 0.001147492263 0.05636165102 0 0 --0.04515113839 0.05637151063 0.003923850458 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.002749765883 -0.003649456262 0.3346354434 0 0 --0.001046000966 0.001258194732 0.1136147375 0 0 --0.09450380684 0.1123747165 0.005019336928 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.001809553371 -0.002721800585 0.04819219681 0 0 -9.766074613e-05 -0.000158225321 0.06946433988 0 0 --0.059936372 0.06811880297 0.0003226146201 0 0 -0 0 0 0 0 -0 0 0 0 0 -9.886300353e-05 -0.0003590665138 -0.01927106838 0 0 -0.000378797166 -0.0004475886114 0.01562756258 0 0 --0.01387596623 0.01530849053 -0.001240182213 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0002142502266 0.000158148336 -0.006387117361 0 0 -0.0002650849304 -0.0003164682097 0.0008992439619 0 0 --0.0007632257432 0.0009004138475 -0.001007805033 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0001031102843 0.0001287257191 -0.001610758839 0 0 -7.01972864e-05 -8.690764993e-05 -0.002281050292 0 0 -0.001810662009 -0.002314170513 -0.0002804510707 0 0 -0 0 0 0 0 -0 0 0 0 0 --5.265524804e-05 8.662540481e-05 0.00232378187 0 0 --1.117366706e-05 1.729670741e-05 -0.001914016092 0 0 -0.001472314283 -0.001940295498 5.172786182e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -2.702848295e-05 -2.467809344e-05 6.944824738e-05 0 0 --3.266279936e-05 4.207547052e-05 -0.0001507254663 0 0 -0.0001185115585 -0.0001508815182 0.0001339853651 0 0 -0 0 0 0 0 -0 0 0 0 0 -2.984462943e-05 -3.044655661e-05 0.0004904264581 0 0 --2.310761571e-05 2.831996509e-05 0.000307526699 0 0 --0.0002489936562 0.0003044491696 9.407651552e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -2.366544675e-06 -2.945023819e-06 -0.0002405891291 0 0 -2.419347463e-06 -2.953729619e-06 0.0001127135475 0 0 --9.777860621e-05 0.0001107062912 -8.035258479e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 --5.520469079e-06 5.091798605e-06 6.424064807e-05 0 0 -8.049631172e-06 -9.610466942e-06 5.895149151e-05 0 0 --4.985031185e-05 5.889087879e-05 -3.034960921e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --6.753468674e-07 6.310193234e-07 -3.617449282e-05 0 0 -7.121726067e-07 -8.403447623e-07 -8.61502485e-06 0 0 -7.282219335e-06 -8.691508751e-06 -2.717666784e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.277169614e-06 2.769710238e-06 9.322099081e-05 0 0 -2.589524395e-07 -3.225245403e-07 -3.466282138e-05 0 0 -2.711322407e-05 -3.516396175e-05 -1.04736862e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.001657422 0.000875320201 0.04710399583 0.001464208531 -0.06321482949 --0.00144099808 -0.0009399812909 -0.04747226349 -0.001573685231 0.06371025653 --0.05495600075 -0.04823965947 -0.003041953215 -0.07095283432 0.00430119692 -0.0002107043266 0.0001538152416 0.00450335235 0.0002443347213 -0.006044026432 --0.004717588362 -0.004139572001 -0.0004493922481 -0.006089400506 0.0006218610795 -0.0008348679534 0.0002640581064 0.0476443634 0.000567328149 -0.06393455438 --0.0003064743604 -5.618137947e-05 -0.03588025093 -0.0002245143323 0.04814803396 --0.04508443647 -0.03574788223 -0.0005291131276 -0.0523727024 0.000854709303 -0.0003895630101 0.000246172431 0.01206687926 0.0004084752393 -0.01619357566 --0.01371822278 -0.01087343911 -0.00083294397 -0.01593285857 0.001161740239 --0.0002311590136 -0.0002626058813 0.01756698115 -0.0003177386794 -0.02357043806 -0.0003005979036 0.0002530183666 -0.008204557348 0.000338136915 0.01100800431 --0.01171725469 -0.007939092045 0.0006364452143 -0.01154919479 -0.000829299507 -5.839250608e-05 -4.20882728e-06 0.007559104994 2.164888402e-05 -0.01014272847 --0.009763733218 -0.006611331305 -0.0001629822834 -0.009620208553 0.000239239036 --0.0002462047612 -0.0001352292497 0.00132979222 -0.0001904341428 -0.001783491091 -5.827007629e-05 1.049071623e-05 0.0002149154011 1.390929521e-05 -0.0002880965713 -0.0005225612679 0.0001737467728 7.35937952e-05 0.0002405104131 -9.798769887e-05 --0.0001159094204 -8.83740027e-05 0.001089372371 -0.0001259539039 -0.001460827092 --0.002387505043 -0.0008161894866 0.000163160493 -0.001131430159 -0.0002219265517 --3.349243491e-05 -2.870741671e-06 -4.396240993e-05 -3.070948563e-06 5.890769811e-05 --1.627503286e-05 -1.539147975e-05 -6.682044169e-05 -2.320155389e-05 8.986020961e-05 -0.0001677809305 -9.024853375e-05 -3.296201314e-05 -0.000145884945 4.608020625e-05 --2.956951719e-05 -1.111880878e-05 -7.307927853e-05 -1.610129867e-05 9.815920153e-05 --0.000174318096 8.900224725e-05 2.038469994e-05 0.000144200689 -2.920086113e-05 -1.983058932e-05 1.237583478e-05 0.0003164529082 1.931643478e-05 -0.0004247058635 -6.073406313e-06 7.51640411e-06 -0.0002450800447 1.013529764e-05 0.0003288291097 --0.0002515558378 -0.0002383191906 2.30162665e-05 -0.0003516902486 -2.950913541e-05 -1.540166316e-05 1.405340076e-05 7.595190854e-05 2.104192291e-05 -0.0001020007381 --7.081916807e-05 -6.669370165e-05 -4.243700377e-05 -9.86099964e-05 5.733124325e-05 --4.738238235e-06 -3.77848129e-06 3.122091666e-05 -5.464854875e-06 -4.184900146e-05 -2.271848805e-06 -8.339602556e-08 9.601205269e-06 -2.044306764e-07 -1.286662206e-05 -2.21405163e-05 6.110191542e-06 2.800867714e-06 8.321595223e-06 -3.734264465e-06 --2.139871486e-06 -2.777933525e-06 2.840452636e-05 -4.063148594e-06 -3.807292904e-05 --5.894116579e-05 -1.711644933e-05 3.678811374e-06 -2.342008445e-05 -4.983396628e-06 --6.158210289e-06 -2.299883352e-06 8.11623951e-06 -3.206431457e-06 -1.08845714e-05 --9.503582876e-07 -9.756893919e-07 4.139216791e-06 -1.4410969e-06 -5.540843844e-06 -2.193316407e-05 2.461171763e-06 -1.831714276e-06 2.695191967e-06 2.546071492e-06 --4.491003196e-06 -2.221566741e-06 8.393543145e-06 -3.169497702e-06 -1.124687272e-05 --3.949782681e-05 -4.738563756e-06 4.730411345e-06 -5.320535646e-06 -6.500240141e-06 -1.885712331e-06 1.969943873e-06 1.448666659e-05 2.985845984e-06 -1.945607057e-05 --4.4071986e-07 6.74900155e-08 -2.359298533e-05 1.651403767e-08 3.166073448e-05 --1.634018492e-05 -2.361324066e-05 5.673879404e-07 -3.526555127e-05 -5.80054568e-07 -9.488346143e-07 1.503682743e-06 -4.184019676e-06 2.231070788e-06 5.603329277e-06 -2.516490749e-06 3.769050323e-06 -4.404242848e-06 5.613619261e-06 5.881451257e-06 --3.991835881e-07 -2.971743702e-07 -1.263305214e-06 -4.448795291e-07 1.699099724e-06 --4.990308966e-07 -6.4975884e-07 -1.737602217e-06 -9.789891357e-07 2.33828675e-06 -7.731880356e-08 -2.926527981e-06 -1.349684363e-06 -4.450432937e-06 1.830522106e-06 --5.929952109e-07 -6.197082117e-07 -1.982342525e-06 -9.31640571e-07 2.666918452e-06 --1.545694496e-07 3.029837079e-06 1.190152362e-06 4.608852561e-06 -1.616797844e-06 --4.478975723e-07 -3.843228624e-07 7.239722291e-06 -5.381874113e-07 -9.711233745e-06 -2.195727609e-07 1.396536599e-07 -9.678109157e-07 1.990688774e-07 1.298038077e-06 --1.536502095e-06 -8.973000693e-07 4.298152384e-07 -1.294650712e-06 -5.745550662e-07 --2.126755027e-07 -1.846762099e-07 4.609273898e-06 -2.545204639e-07 -6.183087583e-06 --6.609438468e-06 -3.838990501e-06 3.287014539e-07 -5.542945935e-06 -4.321640228e-07 -5.365142263e-07 4.468570771e-07 5.658862426e-06 6.818615154e-07 -7.596675649e-06 -1.030835944e-07 1.829304606e-07 -5.589884465e-06 2.499659443e-07 7.499986847e-06 --4.885630104e-06 -5.448709748e-06 6.083878336e-07 -8.083564449e-06 -7.795423733e-07 -4.056412406e-07 4.456377098e-07 6.107084134e-07 6.637152368e-07 -8.225391798e-07 --4.992359595e-07 -5.387238142e-07 -1.324692734e-06 -8.045243997e-07 1.781288015e-06 --1.077766846e-07 -7.313244174e-08 1.254930219e-06 -1.006704698e-07 -1.684006246e-06 --1.530078556e-07 -1.078748526e-07 -1.291437417e-06 -1.627228644e-07 1.733362689e-06 --1.866668787e-06 -1.372368541e-06 -3.312624244e-07 -2.002526728e-06 4.478778326e-07 --1.567390179e-07 -1.162115597e-07 1.035997475e-07 -1.690470726e-07 -1.387479721e-07 --1.34420272e-07 -1.002808736e-07 3.160826042e-07 -1.449087239e-07 -4.239382469e-07 -0.001003785764 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0009871072136 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0008269037695 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0011050467 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0001760657763 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --5.49830036e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.169128568e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -6.306967991e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.655514342e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.084248197e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.289312562e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.253820555e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.314276302e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0006813495942 -0.0003832511084 0.1517471741 0 0 --0.002593607016 0.0006770324249 0.1229686991 0 0 --0.162908328 0.1263420045 0.005035044833 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.001191682354 -0.0002593340323 -0.1818427785 0 0 -0.0003142536055 -0.00071787107 0.07911076095 0 0 --0.0610302437 0.08085728727 0.0003229840941 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.001173045012 0.000600948362 -0.01493008362 0 0 --0.0002408312969 -0.0004064819495 0.003290902683 0 0 -0.004565472921 0.003530384071 -0.0008494768122 0 0 -0 0 0 0 0 -0 0 0 0 0 -6.918954588e-05 2.879601742e-05 -0.001311342262 0 0 --0.0001036326025 -9.30073205e-06 0.0006343551019 0 0 --0.01327336725 0.0003080761889 -4.494292853e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0002979596592 -1.795411046e-05 0.001489897733 0 0 -5.00234143e-05 3.783584054e-06 -0.0003562924875 0 0 --0.0008789767621 -0.0004078505292 2.618516874e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0001000714043 4.827055988e-05 0.001624482505 0 0 -2.178003512e-05 -1.537192024e-05 -0.0005477669936 0 0 -0.0003059639296 -0.0005924359262 -5.229104218e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.995076898e-05 6.846436787e-06 -6.926980487e-05 0 0 -2.501025183e-05 -1.647745688e-06 3.399475385e-05 0 0 --0.0003305447474 2.853811402e-05 -9.121644045e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.927548829e-06 -6.836485915e-06 -0.0001439092146 0 0 -1.61591852e-06 9.825287785e-07 0.000104938752 0 0 -3.924126845e-05 0.0001097314233 8.448605569e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.768405799e-06 -7.02423524e-06 0.00033368269 0 0 --4.922305676e-06 3.786797305e-06 -7.636315024e-05 0 0 -0.0001323323982 -7.924390303e-05 1.150892332e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --4.801350937e-06 5.345105353e-06 0.000159146984 0 0 -3.377357443e-06 -1.244975881e-06 -3.973343643e-05 0 0 -7.799401078e-05 -4.157245818e-05 -4.561268617e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.43681831e-06 5.19017167e-06 1.287868919e-05 0 0 -1.116853195e-06 -1.866370428e-06 1.283508704e-05 0 0 --8.91462369e-06 1.342911447e-05 -5.840451755e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 --5.702542962e-07 -1.361707196e-07 3.406374457e-05 0 0 --4.056489332e-07 3.650966532e-07 5.197988073e-06 0 0 --8.952577697e-06 5.319196265e-06 8.838834735e-07 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.886196386e-06 -9.999008671e-07 8.336088824e-05 0 0 --5.944687446e-07 6.103635758e-07 -1.541058605e-05 0 0 -2.042142656e-05 -1.606418747e-05 2.029033128e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0004025903139 0.002760725531 0.3877856772 0.0003347894851 -0.06607111734 --0.0001361577492 0.001076897367 -0.03269573101 0.0002664288605 0.005571276309 -0.02992325753 -0.03322184721 0.001348600371 -0.007621805886 -0.0001744669336 --0.000901131248 0.0008054658028 0.06254367921 0.0001395289147 -0.01065823724 -0.04649442491 -0.05162915049 -0.003618233429 -0.01184056455 0.0007024233894 -0.0001701805752 -0.0007193728775 -0.04065825414 2.192528747e-05 0.003680189429 --0.000753633246 0.0004260969396 0.1082470415 -0.0002450783132 -0.009801617739 --0.0859156903 0.1089874889 0.003162265759 0.01478475396 2.650654792e-05 --0.0002664990689 8.567728081e-05 0.06613974526 -0.00017399365 -0.005989373681 -0.04264467169 -0.05410204246 -0.002024651861 -0.007337908489 2.803749403e-05 -3.057196714e-05 0.00043386892 -0.02927852751 0.0001539610185 -0.001276133561 -5.196066856e-05 -0.0006589291276 0.02358794331 -0.0001145121456 0.001027434397 --0.004322384999 0.02437004683 -0.00127265498 -0.0003106074597 0.0001345810743 -2.78422947e-05 -0.0002454441559 0.009928716678 -4.935447679e-05 0.0004324758844 -0.001477496227 -0.00833051968 0.0003541506139 0.0001066208749 -4.953792492e-05 -0.0005324159859 8.507165174e-05 -0.0001980771162 -2.969458114e-05 -9.782333767e-05 --0.0002108151336 -0.0001357613308 -0.001407104158 5.563911861e-05 -0.0006817537665 --0.005608983882 -0.001762584573 -0.0003259494998 0.0006730645194 -0.0001397654271 --9.010164799e-05 -4.006920196e-05 -0.00101912848 1.727154909e-05 -0.000493920499 -0.00330793954 0.001038349628 0.0001314094998 -0.0003963789485 5.293231475e-05 --0.0001113124389 3.014479914e-05 0.002688264928 1.242480477e-05 -0.0003251162077 -6.283074372e-05 -4.596725418e-05 -0.00194839892 -1.339230334e-05 0.0002357320931 --0.004740850001 -0.002294371567 -9.268472449e-05 -0.0003873810196 2.260820153e-05 -3.893835268e-05 1.391858808e-06 -0.0007599773493 -1.67135453e-06 9.18887235e-05 -0.001503119638 0.0007270810997 1.483488201e-05 0.0001227227195 -5.406918456e-06 --0.0001442686507 1.742563317e-05 0.000257581421 2.486248882e-07 1.798655016e-05 -6.52348107e-05 -1.177984897e-05 -0.0002546421587 -4.977875178e-07 -1.788629415e-05 -0.001009693615 -0.0002525278771 -5.383151576e-05 1.889778039e-06 -1.339598877e-06 -2.895854318e-05 -7.563323404e-06 -0.0001199232384 -2.893464715e-07 -8.421872201e-06 --0.0003868231252 9.672369724e-05 2.246809795e-05 -7.186378752e-07 6.440678334e-07 --3.733772323e-06 9.821777357e-07 1.893343766e-07 1.041053622e-06 2.789569321e-05 -6.742827034e-06 -2.048401027e-06 -7.72493765e-08 -1.30057998e-06 -3.907275288e-05 --0.0002148483923 -1.77000061e-05 -6.73820902e-06 3.985697827e-05 3.086681683e-06 -3.554566228e-06 -1.085123306e-06 -4.410729164e-08 -7.088287604e-07 -2.096604083e-05 -9.359788537e-05 7.731335777e-06 2.938162758e-06 -1.736325798e-05 -1.024900021e-06 --7.076380526e-07 -1.268210099e-05 0.0001450121911 -2.959042152e-06 -2.487064495e-05 -5.503271838e-06 9.914019686e-06 5.125787194e-05 2.105968625e-06 -8.788634341e-06 -2.156511171e-05 5.358025466e-05 3.992624495e-05 1.16812113e-05 -6.83032934e-06 -2.524630563e-06 5.72313353e-06 6.733028926e-05 1.177439383e-06 -1.154413559e-05 --2.310283969e-05 -5.742971192e-05 -1.774055756e-05 -1.254802333e-05 3.024878464e-06 --3.434040348e-06 3.354673143e-06 0.000186938658 1.314789212e-06 -4.201260771e-05 -1.923771422e-06 -2.238224921e-07 -0.0001190619536 -2.731873495e-07 2.67528107e-05 -0.0003121364624 -0.0001194652831 -2.350836416e-06 -3.736712635e-05 1.619499972e-06 --1.78909456e-07 -2.479983453e-07 -4.151229759e-05 -1.398423525e-07 9.325457003e-06 --8.840438026e-05 3.383780893e-05 7.879433416e-07 1.058416582e-05 -4.861209623e-07 --1.856979644e-06 4.362327858e-06 6.607450552e-05 1.35181768e-06 -1.460564749e-05 -1.151292343e-06 -3.40182927e-06 -3.856302573e-05 -1.02157377e-06 8.533243842e-06 -9.45065003e-06 -4.181612068e-05 -1.075296969e-05 -1.198742142e-05 2.573983344e-06 -4.268729297e-07 -1.278136135e-06 -1.219447015e-05 -3.808535219e-07 2.699526749e-06 --2.440751091e-06 1.076168982e-05 3.580435292e-06 3.086104912e-06 -8.419889464e-07 --1.547915155e-06 5.939581072e-07 2.809185506e-05 1.174693866e-07 -5.045679196e-06 -1.83514466e-07 -2.808127515e-07 1.468294776e-05 -8.297330751e-08 -2.635550549e-06 --9.209482596e-06 1.496932732e-05 -1.052976125e-06 3.535869994e-06 1.797700438e-07 -7.692529801e-08 -1.165198745e-07 1.636209521e-05 -4.604213991e-08 -2.937129226e-06 -8.325382859e-06 -1.354594193e-05 -3.174983222e-08 -3.198479606e-06 1.405331385e-08 -2.536773802e-06 -9.724157659e-07 3.948331279e-05 -3.122371606e-07 -9.066852551e-06 --1.551340538e-06 1.435703127e-06 -2.85112325e-06 4.26955649e-07 6.512867282e-07 -3.778385221e-06 -2.850409852e-06 4.36668291e-06 -8.534416415e-07 -9.938341722e-07 --8.109323547e-07 6.02657981e-07 6.688988035e-06 1.785512526e-07 -1.53916643e-06 -7.132162264e-06 -5.423872e-06 -1.83899854e-06 -1.62079787e-06 4.407270816e-07 --7.247288756e-07 1.490911171e-06 5.384251203e-05 4.301768835e-07 -1.104642301e-05 -6.704728768e-07 -9.080403645e-07 -2.587929398e-05 -2.583207628e-07 5.311436831e-06 -1.606214264e-05 -2.710003502e-05 -3.106756705e-06 -7.295252356e-06 7.439688913e-07 -1.941714761e-07 -2.789761959e-07 -6.109557645e-06 -7.837162843e-08 1.254159203e-06 --3.083169097e-06 5.201363703e-06 8.582774221e-07 1.400333252e-06 -1.965199724e-07 -0.0001346851614 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --5.242337523e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -9.845413557e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -7.88252662e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -2.112643134e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --8.682492265e-07 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.008922137e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.214462545e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.002697913e-07 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -2.240457311e-07 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.20973304e-07 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.535761101e-07 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --4.238567953e-08 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0006786040899 0.00176247141 0.3911849015 0 0 --0.0006602036968 0.0006970643441 0.003392012913 0 0 --0.0006752477586 0.001617522924 0.0005457304799 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0005264563447 -0.000416351824 0.00144664505 0 0 --0.0002895419078 6.804365865e-05 0.001150765242 0 0 --0.0003778939193 0.0001629215055 0.0001740134448 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.922067004e-05 -7.541618546e-05 -0.001788336059 0 0 -2.613091796e-05 4.819394741e-05 -2.832682707e-05 0 0 -2.630797781e-05 4.891721287e-05 -4.465933309e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.400239598e-05 -0.0001337108177 0.000511880788 0 0 --9.160211297e-06 2.557094474e-05 4.949451906e-05 0 0 --2.271138144e-07 5.830572957e-05 5.688215596e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 -8.170554875e-07 1.40816978e-06 0.0003873287794 0 0 --8.22640119e-08 1.924673117e-06 4.110569454e-06 0 0 -3.922687484e-07 5.398968175e-06 9.09761723e-07 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.057316913e-05 8.60962589e-06 0.0003640585125 0 0 -3.01245642e-06 -2.189933524e-06 -1.272920274e-05 0 0 -4.425866932e-06 8.339693602e-07 -1.535114254e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 --8.85401573e-07 1.101343028e-05 8.229423875e-05 0 0 -3.566530955e-07 -1.223299038e-06 -4.299464e-06 0 0 -2.902081265e-07 -3.638373431e-06 -9.17323851e-07 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.250556796e-07 -7.052330197e-07 6.719306974e-05 0 0 --4.790275419e-07 -4.948114141e-07 8.605904578e-07 0 0 --8.747748269e-08 6.948931988e-07 2.169179639e-08 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.771895681e-07 -2.104064078e-07 0.0001242751897 0 0 --1.219149594e-07 1.667972479e-07 1.499384567e-06 0 0 --4.022281401e-07 3.775500719e-07 3.161113319e-07 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.233565194e-07 4.083498583e-06 9.419102196e-05 0 0 -2.584688153e-07 1.375707748e-07 -8.182237143e-07 0 0 -1.15600307e-07 -4.983935222e-07 -7.003300362e-08 0 0 -0 0 0 0 0 -0 0 0 0 0 --4.985587864e-07 3.671728465e-06 5.592557038e-05 0 0 -8.147212491e-08 -4.60674471e-07 -1.161611287e-06 0 0 -1.676282061e-07 -6.975220083e-07 -2.062377685e-07 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.659613508e-07 1.526307447e-06 4.983474145e-05 0 0 -4.052542873e-08 -1.188453269e-07 -3.473293426e-07 0 0 -7.18944992e-08 -1.501656687e-07 -7.935180209e-08 0 0 -0 0 0 0 0 -0 0 0 0 0 --8.64068103e-08 7.198920292e-07 4.582319786e-05 0 0 -1.521172788e-08 6.500790976e-08 1.509024039e-07 0 0 --2.608248416e-08 8.121681075e-08 1.755066257e-08 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.001199551708 0.0008137430946 -0.001127283271 -0.0008412246505 -0.00699102509 --0.002903270773 -0.001285429535 0.08452406893 0.001225856158 0.5230377679 --0.1601164893 -0.06253922301 0.0007214843559 0.1459921567 0.00652175213 --0.0003478109478 -0.0002645342174 0.0002946446003 0.0002249742549 0.001827777459 --0.001635002619 -0.0006396219723 0.0001350873585 0.001488092345 0.0008568762987 -0.0001222105898 3.815099118e-05 -0.0004229856419 -0.0001426334651 -0.001626238783 -0.001496401264 0.0006823689904 0.0113090004 -0.001422700837 0.0435622768 --0.01153129616 -0.008686554835 -0.0003077886358 0.009790387698 -0.001360823484 --0.0001786437585 -0.0002157203619 0.0002867283407 0.0001036587582 0.001101663784 --0.0008499077131 -0.0006443408159 0.0001281002332 0.0007207237623 0.0004802144042 --1.316527821e-05 -4.117751113e-05 1.525319363e-05 2.04990179e-06 3.409930926e-05 --1.157134362e-05 0.0001178781219 -0.00264116609 2.822619438e-05 -0.005958078959 -0.0004143394742 0.002779343346 -6.848766552e-05 0.0005498280178 -0.0001266868052 --2.534773956e-06 3.458615155e-07 9.046649833e-06 4.103898501e-06 2.041409561e-05 --4.142207814e-06 -2.778239071e-05 2.959561559e-06 -5.463096915e-06 6.399557331e-06 -1.652290121e-05 -1.743118554e-05 3.70969667e-06 -2.988141005e-05 -2.573449101e-05 -0.0001212904409 -8.338848911e-05 -0.0001131622118 -0.0001887284283 0.0008022165868 --0.0009171428932 0.0007389414572 6.831580721e-07 0.001458714998 -3.533738698e-05 --1.089464836e-05 4.768525207e-06 -2.398977486e-06 1.33979666e-05 1.647915919e-05 --5.576489182e-05 4.518310492e-05 -9.963873008e-07 8.884718761e-05 5.175563752e-06 -2.307633201e-06 -5.469234986e-08 1.027464348e-06 -1.384993227e-06 -4.814188792e-06 --1.623249658e-05 -7.654110399e-06 -0.0001280582049 1.379736655e-06 0.0005999002934 --9.848547624e-05 -0.000156545316 -3.62622081e-06 -0.0001124673317 2.025813117e-05 --1.811446102e-07 1.244953353e-06 1.867567894e-07 1.505712028e-06 -8.823523265e-07 -4.004201759e-07 6.514856876e-07 -1.081728606e-07 4.737860775e-07 4.929783583e-07 --1.149988744e-07 -4.26436703e-07 1.787537208e-06 -2.391221413e-07 7.944247431e-06 --1.604912977e-05 -1.882500531e-05 8.011995472e-05 5.83434451e-06 0.000355684043 --5.277828933e-05 -0.0001022320688 5.291059672e-06 5.914209211e-06 2.797336394e-05 -1.623807481e-06 1.834310328e-06 -2.319256353e-06 -9.898298733e-07 -1.033551094e-05 -4.507725172e-06 8.644271526e-06 -9.178129283e-07 -5.394162291e-07 -4.448534233e-06 -6.815302797e-08 -3.262454129e-07 -1.501782385e-08 -3.127783622e-07 -9.798788387e-08 --2.269982341e-06 1.299439351e-07 6.687348266e-06 2.518429757e-06 4.4435944e-05 --3.371868237e-05 2.253034952e-05 1.465207838e-07 5.552663283e-05 1.46382131e-06 -1.728989593e-07 -3.994106602e-07 -4.424543647e-08 -4.864972276e-07 -2.93577366e-07 -6.579275603e-07 -4.370281483e-07 -6.064443021e-08 -1.07963553e-06 -4.121583693e-07 -2.665534095e-07 2.058348551e-07 -1.914657021e-07 -1.182090016e-07 -2.408357009e-06 -2.190119594e-06 6.466252099e-07 8.177271929e-06 -1.983467137e-06 0.0001026868301 --2.810736153e-05 -2.234574573e-05 -1.109021618e-07 1.221976548e-05 -1.107931116e-06 --2.281119245e-07 -2.115142407e-07 1.034827392e-07 7.754818107e-08 1.304866682e-06 --1.039155199e-06 -8.312117758e-07 3.567131684e-08 4.469491397e-07 4.585725384e-07 -5.225250911e-07 5.077117907e-07 -3.041759909e-07 -2.417575727e-07 -2.198564616e-06 --1.85048276e-06 -7.252235321e-07 2.742558883e-05 9.080450658e-07 0.0001971896167 --4.850379899e-05 -3.702173615e-05 3.192589441e-07 2.951742058e-05 3.539185667e-06 --1.929570119e-08 9.102916973e-08 4.001737401e-08 7.986282318e-08 2.889214319e-07 --2.089758963e-07 -1.584906829e-07 5.137995466e-08 1.266213156e-07 3.746912556e-07 -1.981455612e-07 1.635463603e-07 -2.964306406e-08 -1.065216979e-07 -2.729405427e-07 --4.432908046e-06 7.368692351e-08 1.246924035e-05 4.363265234e-06 0.0001112836572 --4.11874819e-05 1.285555497e-06 2.853095232e-07 4.738492699e-05 4.164799374e-06 -9.655549915e-08 9.731323793e-08 -8.049812005e-08 -3.589616939e-08 -7.216342388e-07 -7.80115939e-07 -2.34397255e-08 -2.451358131e-08 -8.957956514e-07 -2.491678466e-07 -4.426718683e-08 5.767322173e-08 -4.030958809e-08 -7.513600311e-09 -3.269841e-07 --1.693888863e-06 -5.402338931e-07 7.850330303e-06 1.203666851e-06 6.344906661e-05 --1.859419983e-05 -8.230235608e-06 1.495637725e-07 1.50202803e-05 1.922026221e-06 -5.677768674e-08 -1.321819503e-08 -3.109726256e-08 -7.147885802e-08 -2.534512977e-07 -2.177001555e-07 9.571982166e-08 -2.13322108e-08 -1.7552666e-07 -1.806025163e-07 -8.359414363e-08 6.524553914e-08 -8.472834388e-08 -4.809570154e-08 -6.0225142e-07 --8.64755124e-07 -3.338780427e-07 8.634240569e-06 5.367304027e-07 6.119505021e-05 --1.791036936e-05 -8.582258773e-06 1.100192208e-07 1.450574457e-05 1.203077779e-06 --2.182220442e-09 -1.313380617e-08 2.501337895e-09 -6.603835623e-09 1.773562813e-08 --1.455746369e-08 -7.17278047e-09 -8.778464308e-09 1.187885915e-08 -6.185226773e-08 -1.437899595e-07 1.079065586e-07 -6.715842689e-08 -8.354169871e-08 -5.568551051e-07 --1.105186905e-06 -1.759792797e-07 7.517684966e-06 8.565964935e-07 6.18955676e-05 --2.001413487e-05 -4.812020947e-06 1.011951791e-07 1.914708151e-05 1.396543988e-06 -1.115208074e-09 1.956171798e-08 -3.745512205e-09 1.267036055e-08 -3.08944526e-08 -2.895604866e-08 7.053515714e-09 1.955226606e-09 -2.771084939e-08 1.527409358e-08 -0.1172619211 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.04533430621 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.1502557946 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.05770092911 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.00229602364 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.001243899764 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.001553507779 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.001629680041 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -5.204525531e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0004749774316 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -2.409695209e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --4.312635046e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -5.729056931e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.1235622128 0.3063927475 0.9394174931 0 0 --0.1798004727 0.09376530931 0.02843743257 0 0 --0.3271976 0.02705813112 0.1282394604 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.1150702893 0.1219725883 0.2327645939 0 0 --0.108408884 0.04354934414 -0.01862808168 0 0 --0.1969727572 -0.01534471708 0.02485486597 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.03900183171 0.08004169974 0.1405992994 0 0 --0.01527469178 0.01182602749 0.006345827608 0 0 --0.02746314939 0.006224182808 0.01969086484 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.009197486733 0.009151724329 0.01722643276 0 0 --0.008376910881 0.01156184683 0.02489008657 0 0 --0.0151416877 0.02438920008 0.04217064454 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.001056184691 0.001244930817 0.002575204029 0 0 -0.0005596102071 -0.0007653810197 -0.001336429031 0 0 -0.001010982955 -0.001363629433 -0.002408460111 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0004435873472 0.000736988328 0.001598079171 0 0 -0.000120606799 -3.044670776e-06 -0.0009437385363 0 0 -0.000227002315 -0.0009780091408 -0.00123324902 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0006214049335 0.0005551000835 0.00103326555 0 0 --0.0003481564411 0.000562622568 0.001311623426 0 0 --0.0006284681268 0.001363750609 0.002200888686 0 0 -0 0 0 0 0 -0 0 0 0 0 --8.21213276e-06 0.0001880535409 0.0004096710928 0 0 -4.917493103e-05 -0.0001288164214 -0.0002477194957 0 0 -8.473001219e-05 -0.0002471293629 -0.0004326190472 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.865792434e-05 -3.324170036e-05 7.500237446e-05 0 0 --1.759356781e-05 4.618754212e-05 -1.339654995e-05 0 0 --2.966259854e-05 -1.223670952e-05 2.827643208e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0002382999074 0.0001340975058 0.0003140152299 0 0 -2.437907357e-05 4.481096454e-05 0.0001593410878 0 0 -4.572629437e-05 0.0001684296407 0.0002415115294 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.562325052e-05 7.719879875e-05 0.0001707075192 0 0 -2.958639576e-05 -5.575691085e-05 -9.350673189e-05 0 0 -5.273784619e-05 -9.84558883e-05 -0.0001677720517 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.7428797e-05 5.073658427e-06 5.155669442e-05 0 0 --1.69557423e-05 1.626933538e-05 2.275266951e-05 0 0 --3.053439447e-05 2.299235456e-05 4.411445606e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --6.733517956e-05 4.160037028e-05 0.0001172383029 0 0 -1.523744426e-05 -9.995164988e-07 1.56569293e-05 0 0 -2.790644751e-05 1.637236313e-05 1.82315096e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.3583231289 0.3266702496 0.5945310243 0.04228604608 -0.0679763406 --0.3008840508 -0.09072859834 0.08038232426 0.3908808195 0.5884816583 --0.682004987 0.1512457532 0.03614463482 -0.9071139404 0.2607609467 --0.02981411537 0.03129535365 0.08297177765 0.07446651055 0.009958726819 -0.04353301742 -0.07360058107 -0.117631832 0.01089101698 0.06308039114 --0.08485879591 0.08071808244 0.1458088006 0.0008054762097 -0.004978718152 --0.1158982101 0.02915314995 0.1351968571 0.08661167793 0.118928537 --0.2352129234 0.151277123 0.2056686251 -0.168087381 0.04365125195 --0.03753462024 0.02291170885 0.08648789795 0.07032928961 0.0299916245 -0.06093618147 -0.0779169035 -0.1133475657 0.03192193078 0.03745410411 -0.0005739287005 0.017264361 0.03090588351 0.009624459682 -0.01614500825 --0.03592539915 0.0007693486678 0.01126544726 -0.0154592797 0.04496067614 --0.06427017839 0.009077353294 0.01348128993 -0.04612007089 0.06955363796 --0.01175791476 -0.002442169207 0.01888287741 0.01575823957 0.02088126918 -0.01984361165 -0.01796832736 -0.01781997449 0.02090088926 -0.005152831795 -0.01412426764 0.01177364876 0.02113131792 0.01756617358 -0.02784910486 --0.008857350599 -0.008840426684 -0.01662558939 -0.01294908944 0.02144554607 --0.01721038754 -0.01740702478 -0.03048586727 -0.02516482922 0.03988388592 -0.004585577087 0.002377936707 0.006276841575 0.004142333257 -0.007890133443 --0.007788916016 -0.005748753069 -0.008981406937 -0.008578907154 0.01234597434 -0.002095486394 0.002414061996 0.004333537427 0.003366436224 -0.005279682429 --0.0002384084753 0.0001554883988 0.0002878153498 9.585787534e-05 -0.0001074984479 --0.0004265183169 0.0003938706824 0.0007782014474 4.889410634e-05 -0.0005716803772 -0.00164395413 0.001891901803 0.003259306294 0.003278891754 -0.003648041872 --0.002769844733 -0.002937325987 -0.005346613994 -0.003778260375 0.00682540625 --0.0003342912928 0.0004701398943 0.0008432879363 5.752234168e-05 -6.672399454e-05 -7.513034801e-05 -5.005595584e-05 0.000320427513 0.0007387646352 0.0001800496594 -0.0002303556135 0.0003329089773 0.000341377795 -0.0001842112989 -0.0006781462854 -0.0003061545754 9.569557795e-05 0.0003105149247 0.0004640198097 -0.0003514357157 --0.0005193414441 -0.0002973369509 -0.0004363199807 -0.0002592001212 0.0008902455952 -0.0003565123267 0.0002784769197 0.0004991929517 0.0004203064763 -0.0006884421448 --0.0005215409594 -0.0004980773571 -0.0008903927039 -0.0006533509876 0.001162992011 --0.0009521365718 -0.000895516891 -0.001612067064 -0.00130487816 0.002043754688 --3.094902927e-05 -6.608771352e-05 -0.000127630043 -0.0001661723432 7.895340532e-05 -6.49858738e-05 0.0001206221973 0.0002124999303 8.792518086e-05 -0.0002543873513 -6.556954394e-05 0.0001341733218 0.0002406886895 0.0001423820158 -0.0002456296314 --0.0001666831749 4.924264843e-05 0.0001057036304 2.620381392e-06 9.223303521e-05 --0.0003368650597 0.000135862772 0.0002216911267 -0.0001837108301 5.565763504e-05 -7.500246554e-06 8.397445315e-05 0.0001834754663 0.0001935123452 -8.086946769e-05 --1.090490057e-05 -0.0001655617342 -0.0002777964165 -6.060004172e-05 0.0002721522816 --7.685400441e-05 0.0001757875027 0.0003186929261 8.816399139e-05 -0.0001443465211 -4.73503248e-05 -1.94916133e-05 3.642814139e-05 0.0002221927783 4.869241458e-05 -5.010282924e-05 5.976372945e-05 3.338170947e-05 -0.0001416025085 -0.0001927001119 -0.0001279488513 5.840332271e-05 0.0001042900187 0.0001134519636 -0.0001914976783 --0.0002061557808 -9.615296732e-05 -0.0001714293091 -0.0001833728777 0.0003113638088 --2.030253178e-05 5.42844483e-05 9.852405537e-05 3.264856675e-05 -5.166584315e-05 --8.782534036e-05 -0.0001010719089 -0.0001571007767 -2.606520561e-05 0.0002473494269 --0.0001684588016 -0.0001548497606 -0.0003014992801 -0.0003006348687 0.0003191170038 --1.039379867e-05 -3.256085058e-05 -7.076814993e-05 -8.011013728e-05 3.4031804e-05 -2.357770242e-05 6.380065605e-05 0.000107766161 3.510689076e-05 -0.0001152354191 --3.975897086e-05 1.590326442e-05 2.923835543e-05 -7.422064893e-06 1.592877922e-05 --4.715238574e-05 5.409539267e-06 2.813028239e-05 3.629078354e-05 5.489215681e-05 --9.465185928e-05 3.607998912e-05 4.714788907e-05 -7.979865043e-05 2.020534214e-05 --2.173350233e-05 5.452184916e-07 8.274868247e-06 1.227688678e-05 2.657815007e-05 -3.31569282e-05 -7.302039448e-06 -9.194462884e-06 2.360343461e-05 -1.637701044e-05 --2.058491498e-05 4.264076405e-05 7.752412603e-05 2.20589542e-05 -3.571609409e-05 --1.690621004e-05 -3.415525645e-06 1.638668035e-05 5.435292391e-05 4.130685809e-05 --4.514617807e-05 2.361783734e-05 2.020042924e-05 -7.374755177e-05 -1.087914984e-05 -1.645015822e-05 1.60086836e-05 2.774291142e-05 1.827267587e-05 -3.671353858e-05 --2.659524796e-05 -2.469820067e-05 -4.518459441e-05 -3.592210513e-05 5.547151498e-05 --3.408282717e-05 2.776530442e-05 5.070177215e-05 3.684208147e-06 -4.823080716e-06 --2.382499367e-05 -2.586649951e-05 -2.990250886e-05 2.489043854e-05 7.493212284e-05 --5.443788962e-05 -2.502033369e-05 -6.225543503e-05 -0.0001073352984 6.016246305e-05 --1.37787415e-06 -7.16016932e-06 -1.538975368e-05 -1.465810671e-05 7.528671541e-06 -2.988827835e-06 1.373509383e-05 2.336759925e-05 7.222116546e-06 -2.217606069e-05 --0.1135226662 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.04115390523 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.1433057039 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.06246830661 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.003431712366 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0006939808282 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.001043949679 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.001808665623 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0001480021231 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0004516587818 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.848716859e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -8.585771795e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --7.134997343e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.1242874614 -0.2960453488 0.9408472971 0 0 -0.173732361 -0.08980066503 0.02632420307 0 0 --0.3181807135 0.02603679085 -0.1187375902 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.1287467293 -0.1171083349 0.2203081386 0 0 -0.1123839631 -0.0456717528 -0.01739252518 0 0 --0.205458844 -0.01533963327 -0.02587798484 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.03617623427 -0.08212398256 0.1438811212 0 0 -0.016182666 -0.01090801494 0.001579995611 0 0 --0.0291017821 0.001525545208 -0.01295442676 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0123854831 -0.01263557897 0.02329732362 0 0 -0.008161941388 -0.01139676567 0.02441520806 0 0 --0.01476705171 0.02412899004 -0.04143684592 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0003349919433 -0.0004062740868 0.001112036789 0 0 -0.0001297356939 -0.0001011156159 5.882496469e-05 0 0 --0.0002234101111 3.319249029e-05 -0.0001779602955 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0003556014254 -0.0005198443141 0.001276546157 0 0 --0.0001780019255 2.591810408e-05 -0.0009453187703 0 0 -0.0003433319945 -0.0009529734642 0.001223607173 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0007859111799 -0.0007963303098 0.001466065541 0 0 -0.0002368285519 -0.0003860931305 0.001000860453 0 0 --0.0004319265233 0.001030479946 -0.001644593995 0 0 -0 0 0 0 0 -0 0 0 0 0 --8.222664105e-05 -0.0001185643052 0.0002878160613 0 0 -2.657283039e-05 3.960716371e-05 -0.0001265307532 0 0 --5.207681912e-05 -0.0001257012077 0.0001961015049 0 0 -0 0 0 0 0 -0 0 0 0 0 -2.826086086e-06 7.019803095e-05 1.775454407e-05 0 0 -2.406542325e-05 -8.071133171e-05 7.124469727e-05 0 0 --4.016902601e-05 7.427321696e-05 -0.0001660054118 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0002606165935 -0.0001767853545 0.0003943072255 0 0 --5.288560046e-05 4.036794903e-06 7.745240348e-05 0 0 -9.703109006e-05 8.226276843e-05 -9.400395595e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --8.511397005e-06 -5.368357935e-05 0.0001369327213 0 0 --1.218784909e-05 3.880766718e-05 -7.664211214e-05 0 0 -2.14933413e-05 -8.062529829e-05 0.0001307292491 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.430602549e-05 1.271954182e-06 4.45476735e-05 0 0 -2.055342095e-05 -2.444500452e-05 4.231180632e-05 0 0 --3.699551193e-05 4.281665452e-05 -7.658878171e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -7.532131463e-05 -4.750762006e-05 0.0001300817468 0 0 --2.300587842e-05 1.056121461e-05 -9.644091364e-07 0 0 -4.20239662e-05 -4.917263631e-07 1.203656899e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.3611412033 -0.3180311673 0.5795012231 -0.0335774598 -0.06364752861 -0.2876167149 0.09140149112 0.07486109646 -0.3956313329 0.575000017 --0.6733804556 0.1470456644 -0.0333117922 -0.9046653288 -0.2403747623 -0.02967456824 -0.0298292479 0.07718547956 -0.06600327023 0.008978418945 -0.04122353828 -0.06773162881 0.1089181598 0.009851244682 -0.05815966919 -0.09247626814 -0.08388865935 0.1510114727 0.001656276237 -0.002729347266 -0.1178154783 -0.02661183534 0.1368191879 -0.09697967004 0.124720396 --0.2364956059 0.152182132 -0.2062271951 -0.1679431735 -0.03986885217 -0.03842272143 -0.02375565074 0.08573207461 -0.06728902101 0.02824606491 -0.05903244859 -0.07647143026 0.1119780581 0.02928430895 -0.03879237651 -0.003086203426 -0.01707985701 0.0304845538 -0.007005742281 -0.01177048939 -0.03636478348 -0.002974303809 0.01755522161 0.01125101437 0.04305473426 --0.0648099173 0.01506810798 -0.0233999967 -0.04309614609 -0.0630934297 -0.01302374021 0.002451658081 0.02021832281 -0.01685548784 0.02223545073 -0.02146662151 -0.01915433451 0.01904478162 0.02209713033 0.005256737624 --0.01334435758 -0.01144689274 0.02056421653 -0.01661987971 -0.02653040361 -0.009624125738 0.009042423261 -0.01721343046 0.01409545048 0.02278091549 --0.01833414031 -0.0180750836 0.03149953976 -0.02632130984 -0.04251987136 --0.003582355667 -0.001373756797 0.005502533138 -0.003607075147 -0.005566006477 --0.005962001423 -0.005156298025 0.007246689508 -0.006034956758 -0.009469548502 --0.002450284651 -0.002938935586 0.005284350992 -0.003971638142 -0.00630461311 -0.0006470362054 6.691085059e-05 -0.0001059226593 0.000332284958 0.000534911296 --0.001141812777 7.095810302e-05 -0.0001765712812 -0.0007306702338 -0.0004400413069 --0.001753229152 -0.002082922809 0.00368546753 -0.003797278856 -0.003891217992 --0.00291985551 -0.003322215217 0.0060021426 -0.003953719997 -0.007590123974 --4.268999767e-06 -0.0006415661214 0.001151933104 -0.0003832754481 -0.0006138467043 --0.0002430956337 1.348220351e-05 0.0004006585409 -0.0008896010054 -4.229351942e-05 -0.0004714951616 0.0004312839652 -0.0004832547155 2.081836346e-05 0.001059077815 --0.000610355842 -0.0003036232774 0.0005976732806 -0.0006546073487 -0.000935642702 --0.0009780391461 -0.00055575125 0.0009542044174 -0.0008633542577 -0.001627027641 --0.0002085272259 -0.0001555325127 0.0002784715945 -0.0002355464412 -0.000383920488 -0.000495097766 0.0004708591089 -0.0008556291196 0.0006479418099 0.001100017915 --0.0009084960852 -0.0008632269818 0.001545274845 -0.001240049112 -0.001967832193 -0.0001342522253 0.0001534573811 -0.0002578786446 0.000250606498 0.0002967852632 -0.0002258197198 0.0002357078152 -0.0004363552967 0.0003009711428 0.0005542889559 --4.413702729e-05 -0.0001566850163 0.0002818243173 -0.0001496769138 -0.0002566953632 -0.0002124557784 -3.868549652e-05 9.299556197e-05 1.704212157e-05 0.0001524413535 --0.0004161985447 0.0001281865619 -0.0002053650105 -0.0002417948399 -0.0001370823645 -1.700236283e-05 -7.863142353e-05 0.0001874190023 -0.0002130970886 -3.948569626e-05 -2.420075551e-05 -0.0001674461215 0.0002747205341 -2.426623299e-05 -0.0002480569828 -1.402791716e-05 -0.0002095315873 0.0003795142061 -0.0001500987446 -0.0002465965101 --6.316130051e-05 3.449943683e-05 7.995047681e-06 -0.0002233617146 5.698690016e-05 -6.894657524e-05 2.875925783e-05 2.230917933e-05 -0.0001590239104 0.0001751278741 --0.0001746465283 -8.28337907e-05 0.0001361622129 -0.0001243720225 -0.0002749104175 --0.0002790099054 -0.0001252166509 0.0002297680564 -0.0002687219389 -0.0004047481207 -3.601154924e-05 -2.828046077e-05 5.201178718e-05 -4.664108966e-06 -5.388272042e-06 -8.441382297e-05 8.514169367e-05 -0.0001345266297 2.82423062e-05 0.0002181544592 --0.0001708508152 -0.0001326473414 0.0002573388861 -0.0002774981693 -0.0002897019345 -3.126100269e-05 3.972992599e-05 -7.954614504e-05 8.35723558e-05 6.589162679e-05 -5.581833601e-05 7.189597353e-05 -0.0001244525401 6.433679385e-05 0.0001525709132 -3.881454852e-05 -1.728570233e-05 3.179053602e-05 6.957204924e-06 1.232412867e-05 -4.604083783e-05 -8.71303149e-06 3.429799205e-05 -3.754926698e-05 4.856415104e-05 --9.638465663e-05 4.360864047e-05 -6.033277156e-05 -7.850315775e-05 -9.39877363e-06 -2.043498885e-05 -2.436316402e-06 1.328564253e-05 -1.793655323e-05 2.39963725e-05 -3.120838096e-05 -1.170973267e-05 1.640931536e-05 2.292674253e-05 7.316525614e-06 -1.684130847e-05 -4.673174559e-05 8.49566436e-05 -2.738529343e-05 -4.547743522e-05 -1.272921927e-05 8.811679286e-06 5.575174072e-06 -5.131276724e-05 4.44748968e-05 --4.060061536e-05 1.248525147e-05 -8.542623448e-07 -7.994113251e-05 2.539945846e-06 --2.063714878e-05 -1.645051608e-05 2.668058671e-05 -1.551795694e-05 -4.277415386e-05 --3.355457912e-05 -2.370350471e-05 4.430760256e-05 -4.244668206e-05 -5.906354707e-05 -3.533070052e-05 -2.24001373e-05 4.118006743e-05 1.106303864e-06 2.208563276e-06 -2.294961916e-05 2.244779883e-05 -2.552899553e-05 -2.396621959e-05 6.854435646e-05 --5.542700381e-05 -2.047011072e-05 5.277532969e-05 -0.0001030390184 -5.351193693e-05 -4.791169537e-06 8.102961015e-06 -1.626027936e-05 1.463784811e-05 1.257015787e-05 -8.456793147e-06 1.448806668e-05 -2.51685089e-05 1.214623507e-05 2.748286514e-05 -0.1042346798 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.193192565 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.07087139199 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.006443565709 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0001346346402 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.001576037354 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.001051986844 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -9.080582815e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --9.021952525e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0001049739842 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.125219698e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --9.805920513e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -3.021475406e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.5713639857 -0.005656870873 0.002209209607 0 0 -0.002591577329 0.04122219874 0.0007160262062 0 0 --8.544245319e-05 0.0007146784006 0.04199748968 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.02381004684 0.007314818496 -0.001919891886 0 0 -0.00471188849 0.07875197251 0.0006988988016 0 0 -0.000556055785 0.0006565207389 0.0846683744 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.1778008985 0.004274174574 -0.0006698736191 0 0 -0.002656501528 0.0445779916 -0.0002323370901 0 0 -0.001058510861 -0.0002875258711 0.05177457549 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0993621733 0.0004752120576 0.0003231057334 0 0 -0.0006663468417 0.008577914432 -0.0003472011669 0 0 -0.0005993357537 -0.0003701916147 0.01165140227 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.03281971448 -5.411503119e-05 0.0002372468988 0 0 -0.000139282179 -0.0005177311953 -0.0002295055947 0 0 -0.000284784153 -0.0002361681202 0.0006726741664 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.00208808284 -0.0001602002489 9.651162678e-05 0 0 --1.353993696e-05 -0.001742160529 -5.764045529e-05 0 0 -4.5572444e-05 -5.875170392e-05 -0.001699385376 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.006327063519 -0.0001594216354 6.182169809e-05 0 0 --1.177962754e-06 -0.001117643933 1.701242639e-05 0 0 --2.919645815e-05 1.733319177e-05 -0.001426556645 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.002692791809 2.881373102e-05 -2.584705928e-05 0 0 --1.806993628e-06 5.177921839e-05 3.090028646e-05 0 0 --3.322854763e-05 3.151119997e-05 -0.0001126398059 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.002016420571 3.353364895e-05 -3.131914318e-05 0 0 --1.618746899e-05 0.0002726352883 2.000989856e-05 0 0 --2.093645109e-05 2.023682014e-05 0.0002289681543 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0003307342228 -1.125395268e-07 -1.267386067e-06 0 0 --7.291791414e-06 5.566604701e-05 -2.308883592e-06 0 0 -2.628339641e-06 -2.464342883e-06 8.402300649e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0003738236028 -8.68871144e-06 5.752175292e-06 0 0 --5.433845263e-06 1.546194821e-06 -7.052004584e-06 0 0 -7.660194783e-06 -7.259765582e-06 4.400624132e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -8.885819794e-05 3.91244102e-07 5.840198774e-07 0 0 -7.819884212e-07 -7.258641303e-06 -5.90378004e-07 0 0 -6.630669045e-07 -6.004773462e-07 -6.414401812e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 --5.078958052e-06 -7.660042649e-07 1.92306989e-06 0 0 -3.63946434e-06 -1.894144609e-05 -1.602177364e-07 0 0 -2.831549229e-07 -1.521277849e-07 -2.583071504e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.06749780147 -0.001895800656 0.0001489477599 0.0003066173636 -0.0005114882315 -0.001899794956 -0.0346426094 -0.0005804206859 -0.05252052285 0.0009387220029 --0.001136422324 -0.0005805292566 -0.03537368663 -0.0009875618431 0.04747216957 --0.0002289545536 0.003206077093 0.0001021131924 0.004863540782 -0.000152180598 --0.0001309565066 -9.553115436e-05 -0.003035169037 -0.0001527917566 0.004073522632 --0.03081204072 -0.0004846612469 0.0001742407061 0.0008121425429 -0.0004273705156 -0.0009258138014 -0.02390307061 4.517011333e-05 -0.03623626721 5.700784773e-05 --0.0001065311419 5.062946847e-05 -0.02673910454 -3.224481177e-05 0.03588119749 --0.0001428357733 0.007950216086 0.0001556536817 0.01204584674 -0.0002475376318 --0.0002297165504 -0.0001444313623 -0.008133571442 -0.0002440995982 0.01091507212 -0.01276513366 0.001187632311 -9.349572511e-05 0.001252811839 0.0001515113755 -0.0005542561562 -0.004646652858 0.0002043550703 -0.007067336635 -0.0002462677561 -0.0003939773423 0.0002153703768 -0.006116195641 0.0002848113342 0.008206624043 -0.000356996117 0.0044187306 -1.4739136e-05 0.00667960122 -2.489474769e-06 --1.518513713e-05 1.60256871e-05 -0.005095863012 4.372450489e-06 0.006837557945 -0.01212217457 0.0009505731364 -0.0001841789052 0.0008476760716 0.0003108194374 -0.0004895276258 0.0001471622533 2.931778954e-06 0.000199808402 -2.310135502e-06 -0.0001161804735 1.251211679e-05 0.0001592443935 1.389391534e-05 -0.00021306557 -0.0003121455661 0.0003720804055 -6.335098375e-05 0.0005520311187 8.285840825e-05 -8.455091562e-05 6.129582792e-05 -0.0007347661071 8.722406333e-05 0.0009853226862 -0.002274317677 0.0001881033719 -4.981748956e-05 0.0001623717795 8.466652613e-05 -0.0001215988573 -7.802012942e-05 -1.26077636e-05 -0.0001239561654 1.788950137e-05 --9.394633947e-08 -1.011364728e-05 -4.999718837e-05 -1.588471516e-05 6.732856136e-05 -4.446932867e-05 -6.013348411e-05 -6.958486143e-06 -9.301147283e-05 9.749509337e-06 -2.053630046e-05 7.345179269e-06 4.922283643e-05 1.059422849e-05 -6.610993787e-05 --0.001357918503 -7.432572807e-05 7.579194596e-06 -5.219802423e-05 -1.43992048e-05 --5.865490281e-05 -0.0001312242207 6.162172191e-06 -0.0001962883541 -7.727827997e-06 --1.388574557e-06 5.867825587e-06 -0.0001827081448 8.219117014e-06 0.0002451220754 --2.091255443e-05 8.252306368e-05 1.037302547e-05 0.0001258182635 -1.432554348e-05 --1.035163681e-05 -9.348397298e-06 -5.112246226e-05 -1.399505455e-05 6.865470081e-05 --6.001017004e-05 -3.508965764e-06 1.339838362e-07 -2.282623747e-06 -5.551937242e-07 -5.149336586e-07 1.681353067e-06 5.088440963e-08 2.617127302e-06 -1.233620019e-07 -1.500502459e-06 -9.096357334e-08 7.153191807e-06 -1.868917024e-07 -9.586818549e-06 -9.925988498e-06 4.93039041e-06 -1.87636347e-06 7.166630337e-06 2.450022667e-06 -1.559212514e-06 1.906368707e-06 -1.915689022e-05 2.785133135e-06 2.567767001e-05 -0.0002595330592 1.898311329e-05 -4.783463406e-06 1.564033568e-05 8.013518946e-06 -1.343331001e-05 6.813046508e-07 -7.882518e-07 3.895500486e-07 1.12173582e-06 -7.734610827e-07 -6.243547459e-07 3.067300877e-06 -9.93509107e-07 -4.096565485e-06 -7.929674616e-06 5.317941055e-07 -1.464175803e-06 4.626312481e-07 1.980812608e-06 -3.139505914e-06 1.509402235e-06 -5.668445901e-06 2.149103014e-06 7.595929265e-06 --7.002537979e-05 -4.050724956e-06 -1.669065514e-08 -3.537300758e-06 7.257208582e-08 --2.565074787e-06 -1.355108901e-05 8.62556145e-08 -2.043430647e-05 -4.451706639e-08 --6.581322481e-07 9.896277387e-08 -1.759077932e-05 9.828332198e-08 2.360590464e-05 --2.293504854e-06 2.543680877e-06 1.159698548e-06 3.929020415e-06 -1.560780931e-06 --6.51343599e-07 -1.021198927e-06 2.829227241e-06 -1.514988918e-06 -3.788924053e-06 -1.090564736e-06 -2.114619273e-06 6.716218499e-07 -3.181788509e-06 -9.217023428e-07 -1.78175867e-06 -3.836371625e-06 -4.166736112e-07 -5.860165777e-06 5.679408846e-07 --3.671299724e-07 -4.855474017e-07 -1.288041891e-06 -7.314198481e-07 1.733183629e-06 -1.379750161e-06 -3.181420867e-06 -4.048532634e-07 -4.859510063e-06 5.522709826e-07 -4.002337508e-07 4.116454678e-07 1.334201416e-06 6.187417096e-07 -1.794921622e-06 --1.384271955e-05 -2.913609892e-07 -5.636320191e-08 2.329435903e-07 -6.374529777e-10 --2.77468713e-07 -5.965983486e-07 1.168213989e-07 -8.911758958e-07 -1.545346186e-07 -1.29656084e-07 1.040974161e-07 -7.219029571e-07 1.500124861e-07 9.680477022e-07 -8.657489094e-07 1.917650138e-06 -1.271107227e-07 2.870980636e-06 1.611038746e-07 -1.564633747e-07 1.320164829e-07 -3.108107346e-06 1.8243067e-07 4.169338939e-06 --2.296355376e-05 -1.488175966e-06 2.045079494e-07 -1.284618626e-06 -3.177780167e-07 --1.094751987e-06 -2.878840344e-06 1.503235493e-07 -4.31709301e-06 -1.879565646e-07 --2.76166116e-08 1.439328269e-07 -4.167814936e-06 2.022096023e-07 5.591713404e-06 --5.966531016e-07 1.515168978e-06 3.369204506e-07 2.31718758e-06 -4.587420529e-07 --2.745208519e-07 -2.99459482e-07 -4.091540872e-07 -4.459168921e-07 5.51075734e-07 -6.401548973e-06 2.712579559e-07 -2.123048816e-08 1.153216546e-07 5.451662811e-08 -6.819635132e-07 -1.314406399e-06 -7.082583488e-08 -2.018916103e-06 1.025892862e-07 --6.642575477e-08 -7.555348492e-08 -9.615245321e-07 -1.161400386e-07 1.290739158e-06 -2.826376862e-07 -2.752321688e-07 -8.07346695e-08 -4.283586952e-07 1.09930824e-07 -1.070809441e-07 7.856172763e-08 -7.045455958e-08 1.142254919e-07 9.436392265e-08 -0.4439020615 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.07403857836 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.4033597397 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.2741830495 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0442282963 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.004717757531 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0007495504351 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.003824452351 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.001995961369 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.001079054519 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0002118081478 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0004328526706 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --6.611379991e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.1702469709 -0.01433944737 -0.003771512754 0 0 -0.01417200412 0.5637136761 0.003361109924 0 0 --0.003026633994 0.003425151492 0.558771512 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.1686340372 -0.02124089835 -0.0006225706139 0 0 --0.01788468712 0.4229064774 -0.001551311256 0 0 -0.004669122624 -0.001502364616 0.4449475579 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.2064804725 -0.01236125824 0.0007428198604 0 0 --0.001109490141 0.07063928713 -0.0008570182462 0 0 --0.0001636843348 -0.0009159515267 0.07606809176 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.05828386933 0.001017359799 0.0002095891262 0 0 -0.003817811881 -0.001665592958 0.0001081058196 0 0 -0.0001053668298 8.963417954e-05 -0.002377283126 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.04844787887 0.0007249387146 0.0002313827872 0 0 -0.000885491592 0.002031419636 8.149289365e-05 0 0 -0.0002209551368 7.936781991e-05 0.00147128334 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.01235760615 0.0005021845891 2.564486924e-06 0 0 -0.000129417838 -0.001604519065 -3.980636708e-05 0 0 -9.097397581e-05 -3.724872606e-05 -0.001464408988 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.009768064125 -0.0002330465994 -1.48937646e-05 0 0 --0.0003655678371 -0.0002103755544 -6.029557894e-06 0 0 -4.783281107e-05 -4.813384009e-06 -0.0001546729577 0 0 -0 0 0 0 0 -0 0 0 0 0 --8.887184324e-05 -1.468385342e-06 -2.183676994e-05 0 0 --3.438379441e-05 0.0008068453942 4.906707162e-06 0 0 -8.134232926e-06 5.509023457e-06 0.0008161101103 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.003693582066 0.0002234309224 -2.777501841e-05 0 0 -0.0001455009229 -0.0003396460638 7.183646281e-06 0 0 -2.664815137e-06 8.445790107e-06 -0.0004216414105 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.002157745406 -8.660863968e-05 1.484102375e-05 0 0 --5.0645754e-05 -0.0001743165969 -4.084759472e-06 0 0 -3.855485717e-06 -4.338863493e-06 -0.000157958408 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.973399767e-06 -4.918084788e-05 1.300140443e-05 0 0 --1.150519525e-05 6.138337526e-05 -4.389337517e-06 0 0 -2.892471573e-06 -4.836078286e-06 9.922386306e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0002515391843 4.771417114e-06 -1.380152794e-07 0 0 -7.083389698e-06 -4.365218707e-05 3.595245381e-07 0 0 -8.606042824e-07 4.039075278e-07 -4.067037511e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0004673113422 4.516936165e-06 -2.954329271e-06 0 0 -2.453003837e-06 -2.862344856e-05 1.693816179e-06 0 0 --2.953380846e-06 1.783464043e-06 -4.576868879e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.6615177489 -0.03032925719 0.002779820636 -0.003074991573 -0.00235776379 -0.01095621019 -0.3920370709 -1.112060448e-05 -0.08796918748 -0.0002682882039 --0.0001657247752 5.047335811e-05 -0.3878848696 0.0002987858566 0.06608850163 --0.00513165469 0.1676834616 0.001393990358 0.03762740822 -0.0001238846528 -0.00188533624 -0.001129377453 -0.1352648325 -0.0001640329189 0.02305113859 -0.1555245007 -0.01286868922 -0.001597584931 -0.003312990464 2.86798715e-05 --0.007038916927 0.307971691 0.0007127811028 0.03956846107 0.0007807681506 -0.0008594629967 0.0007123617112 0.3285475218 -0.0008487667265 -0.02975179616 --0.01003693561 0.1659218628 -0.0009486785105 0.02138291997 0.000542991306 -0.0004807666191 0.0007288834877 -0.1410575751 0.0004888520097 0.01277617451 --0.02343338952 -0.01412675527 0.0007543146631 -0.001223691585 -0.0005092212498 --0.00723160484 0.1338800655 -0.001687392023 -0.002739758598 0.000637991051 -0.0001166246448 -0.001788464771 0.1486332485 -0.0007722684859 0.006486036398 --0.001390035725 0.02309853383 -0.001127398394 -0.0004493063973 7.965944655e-05 --8.507597706e-05 0.0009635187486 -0.01900047056 8.483217238e-05 -0.000824827974 --0.1015492682 -0.004025478786 -0.0006917083781 0.0007032871029 6.300182363e-06 --0.0003154024441 0.01466098603 -6.053439429e-05 -0.005900055584 -5.554804716e-06 --0.001066415302 -0.0001124676021 0.01388580321 1.431265534e-05 0.006737295905 -0.000411167904 -0.00268006036 -0.0001401118254 0.001080092616 -7.374727947e-05 -0.0001835841704 0.000154237021 0.002694243611 -6.542068243e-05 0.001306047775 -0.01294147196 -0.0001388374299 7.825079211e-05 -0.00019880233 -3.823706684e-05 -0.0002807484928 0.007795941849 0.0001735559928 0.00149724322 -3.675785462e-05 -0.000247503413 0.0001668100379 0.006329683741 4.193869681e-05 -0.0007663999732 --0.0003835869919 -0.001475679919 -2.800564134e-05 -0.0002795198994 6.892171129e-06 --8.945757657e-05 3.681460931e-05 0.00194064248 1.192772215e-05 -0.0002347340595 -0.02501669798 0.001150647105 9.891899598e-05 0.0001350119059 3.19052904e-05 -0.000589250364 -0.003131216638 -8.017018244e-05 -5.985391724e-05 3.41015627e-06 -0.0003712009174 -6.854697057e-05 -0.002578466425 -6.584116763e-06 -0.0001819016151 --0.0001366817132 -0.0004816496777 -1.813207135e-05 -1.040731205e-05 -1.842374627e-07 --5.911171979e-05 1.122833625e-05 0.0002345409234 4.688851718e-07 1.64740503e-05 --0.0009391606292 0.0001266300438 -6.317128269e-05 5.283488356e-05 1.299394692e-05 --8.856141708e-05 -2.445993318e-05 -7.18746642e-06 5.901983851e-05 3.477324374e-06 -1.757131876e-05 -3.760285894e-06 -3.317510692e-07 -3.473313993e-06 -9.015861328e-05 --3.637655828e-05 -1.896108536e-05 -3.262436312e-06 3.746538646e-05 1.577476508e-06 --8.205661011e-06 2.489206809e-06 9.498530427e-08 1.550876149e-06 4.728640358e-05 --0.001584667915 -4.033254579e-05 -4.856913027e-05 -9.40560171e-09 8.607509325e-06 --0.0001421956827 0.00115088684 3.172276574e-05 0.0002547147379 -4.239261958e-06 -7.748989444e-06 3.472749169e-05 0.001014041725 6.521405226e-06 -0.0001738726578 --2.830047383e-05 0.000259251017 1.13544871e-05 5.734584764e-05 -1.667727033e-06 --5.789266201e-06 -9.480667392e-06 -0.0001269799937 -1.925851929e-06 2.177400307e-05 --0.0001627954058 4.749946557e-05 5.629865156e-07 1.661905954e-05 1.61192392e-07 -6.666070249e-05 -0.0008139912874 -1.226172634e-05 -0.0002409793705 4.185112284e-06 -1.34640059e-05 -1.096460282e-05 -0.0007917973367 -4.619828478e-06 0.0001779312483 -2.482953997e-05 -0.0001021664025 7.164540546e-07 -3.035452473e-05 6.47433522e-08 -9.48511309e-07 -9.213744909e-07 8.385590021e-05 -1.417487534e-07 -1.883383321e-05 -8.52831422e-05 -5.706565914e-05 1.844650412e-05 -2.336745039e-05 -6.549639577e-06 -2.515520397e-07 -7.981276818e-05 -7.085940248e-06 -2.363733262e-05 1.499914754e-06 -2.76433391e-06 -8.182125763e-06 -3.859431567e-05 -2.428427768e-06 8.548975566e-06 --1.382497113e-06 -4.688175003e-05 -3.515308397e-06 -1.372837361e-05 7.991305692e-07 --9.477962916e-07 3.074742765e-06 2.874886334e-05 9.162082531e-07 -6.363786936e-06 -0.0004281935753 2.753487055e-06 3.81228245e-06 -2.611146541e-06 2.114952633e-07 -9.777403626e-06 -2.405047926e-06 -9.123150584e-07 -6.30739386e-07 1.776231659e-07 -3.018259533e-06 -1.075279564e-06 2.164375369e-05 -2.961845028e-07 -3.879596994e-06 --3.906671677e-06 3.246116356e-05 -5.058277846e-07 7.546334909e-06 1.165252463e-07 --1.51880901e-07 3.965263926e-07 -3.561054482e-05 1.331824108e-07 6.392558579e-06 --0.0003838568096 -5.032992345e-06 -3.947498783e-06 1.987288538e-06 1.551871138e-08 -1.856652966e-06 -9.321162144e-05 2.919672223e-06 -2.680654354e-05 -6.860014322e-07 --5.333634595e-06 2.955696573e-06 -0.0001057462368 9.241563187e-07 2.428676509e-05 -2.17904414e-06 2.1244355e-05 1.829727675e-06 6.086807939e-06 -4.087244363e-07 -1.778514871e-06 -1.518000515e-06 -1.624938976e-05 -4.475882805e-07 3.738527549e-06 --0.0001008341734 -1.063403745e-05 3.438950139e-06 -2.839252173e-06 -1.297882866e-06 --2.586413741e-06 -7.356402454e-05 -2.253799612e-06 -1.97958171e-05 4.745063746e-07 -1.112459327e-06 -2.365558671e-06 -6.697087477e-05 -6.725927175e-07 1.374134572e-05 -1.094403513e-07 -1.662580102e-05 -7.829231374e-07 -4.474249791e-06 1.674289213e-07 --4.353661185e-07 6.866271154e-07 1.410981598e-05 1.923907726e-07 -2.896373821e-06 -0.07704793255 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0304665172 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.06983588379 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0215074914 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0005621090573 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.00121273192 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0006648662614 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0002042264568 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.000123096335 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -8.295549821e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --9.450360431e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.936103147e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.257103016e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.1264752965 -0.1920575428 0.0007042307428 0 0 -0.3187331326 0.09392586748 0.0007541307587 0 0 -0.0004378734096 0.0001766767824 0.02746683218 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.1009237445 -0.1141987318 0.0008312397877 0 0 -0.148386379 -0.002882060351 0.000929920122 0 0 -0.0001790720971 -0.0004027450968 0.01691556158 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0128455376 -0.05933847677 -2.55002414e-06 0 0 -0.0103735207 0.01343607864 -2.316902858e-05 0 0 --5.421006796e-06 1.615155738e-05 0.001864344865 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.002924871763 0.0007977343798 3.959669956e-05 0 0 -0.01041154532 0.02373947544 -1.375812937e-05 0 0 -1.306140794e-05 3.825032461e-05 -0.0007107316089 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.001381958508 -0.002437652204 -1.887437489e-06 0 0 --0.001313116509 -0.003169333507 -2.081697343e-06 0 0 --3.256540614e-07 1.854655918e-07 -5.29906793e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0008876624598 6.864645797e-05 7.152376983e-06 0 0 --0.0003545745151 0.0003213622987 -3.902020582e-06 0 0 --1.676336171e-06 9.034163247e-06 0.0001846702164 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0001663840491 -0.0001233468581 1.799350296e-06 0 0 -0.0002916242306 0.001304171671 5.511836585e-06 0 0 -8.241240809e-08 -2.359106229e-06 -5.633031201e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.652198798e-05 -0.0001723849923 6.789663593e-07 0 0 -2.594100642e-05 -0.0002808745353 7.496444126e-07 0 0 -4.330589437e-07 3.752194417e-07 -9.464472965e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0001318511332 -8.4381835e-06 -3.227335428e-07 0 0 --1.133477058e-05 -5.299404153e-05 -3.028264872e-07 0 0 --1.376524882e-07 1.025035543e-08 2.148787527e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0002259131648 -6.167382145e-05 5.044700501e-07 0 0 --8.271631409e-05 0.0001722477524 8.099692618e-07 0 0 --2.328966602e-07 -3.732179139e-07 -1.26526638e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --8.331638998e-05 -7.501570642e-05 7.899683947e-08 0 0 --5.195043349e-05 -9.581180525e-05 -3.553553451e-07 0 0 --1.342508959e-08 -1.082111148e-07 -3.975071447e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.075943146e-05 -8.433007819e-06 1.148346711e-07 0 0 -1.136808305e-05 -5.509201731e-06 -6.294222981e-08 0 0 -1.391923766e-08 3.585425474e-08 2.091202952e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 --6.536004436e-05 -2.261521192e-05 2.432405602e-08 0 0 --1.122329714e-05 2.552517739e-05 2.763327837e-08 0 0 --2.597074954e-08 -3.486839261e-08 -2.7531376e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.2434651761 -0.5125442627 -0.000713457542 -0.06209829473 -0.0007397880309 -0.08980470094 -0.05970811621 0.0003166932083 -0.1463033608 0.0009419945506 --0.0002936911633 -0.0002059216392 -0.02617511317 0.0006140588804 -0.1619569633 -0.06107770662 0.1548983875 0.0002116488881 0.03351077103 0.0003558991874 -0.0001302495451 0.0004056062491 0.004927248431 4.581207336e-05 0.03048565502 --0.02225061955 -0.05133433873 1.107347953e-05 -0.00283060398 -0.0001749925323 -0.1306586247 0.205843461 0.0002207904373 -0.04249938819 0.001709290812 --0.0002408723892 0.0002998550122 -0.01215242756 0.0003701105254 -0.04679063627 -0.05862344288 0.1290163674 0.0001262661366 0.003957747877 0.0007537114778 -0.0004001374537 0.0003280707852 0.008185680507 -0.0002293306207 0.03151862428 -0.006711289059 -0.008981128155 2.324217625e-05 -0.01420029698 1.132296763e-05 -0.03511668756 0.01149566359 -2.389436276e-05 -0.04836787946 0.0001194394255 --6.741711177e-06 4.045234331e-05 -0.002086868188 -2.360504959e-06 -0.004708390355 -0.009758320464 0.01435056909 -8.527670797e-06 -0.008366319555 8.243296347e-05 -6.191212101e-05 1.300806971e-05 0.003835381759 -3.191823278e-05 0.008654036931 -0.00573785599 -0.007995889881 3.049104956e-06 -0.01233686653 5.427265856e-05 -0.005674559129 -0.00816953871 9.412695792e-07 -0.01246489567 4.815260768e-05 --1.567394095e-05 1.659641527e-05 3.042041726e-05 3.115097944e-05 -0.000214900302 --0.005077400159 0.007700705037 -2.362164895e-06 0.01149413772 -4.280330046e-05 --4.118400182e-05 1.032153218e-05 0.0001284063687 5.450735685e-05 -0.0009072807458 -7.117894631e-05 -0.001011601843 -2.107456442e-06 -0.001183577637 1.531874978e-05 --0.0008119510561 0.0001871173008 -2.624610862e-06 0.0006388437669 1.509500526e-06 --5.471709361e-06 -9.311262828e-07 -2.735182479e-05 2.145498333e-06 0.0001281043041 --0.001114563272 0.001595183479 3.367842693e-08 0.002401851889 -1.855117717e-05 --4.436532473e-06 -1.22727489e-06 -3.192256622e-05 1.232983166e-06 0.0001495111999 --0.0005189384542 -0.0005029367365 -6.047138897e-07 0.0004205719582 1.035677031e-05 --0.0004875755927 -0.0006587649341 -1.400089934e-06 0.0002607958142 1.828806309e-05 -2.21457793e-06 -1.624952905e-06 -4.360200376e-05 -1.863485786e-06 -0.0001930546074 --0.0001643896554 -0.0002973991309 -8.851760425e-07 3.335693654e-05 9.40860045e-06 --6.495867996e-06 -1.79781248e-06 5.131481207e-05 5.385323704e-06 0.0002272993575 -0.0002353061423 -0.0002919834305 1.606242297e-07 -0.0004841992516 -8.872958342e-07 -0.0003414678353 -0.0004386506386 3.259157235e-07 -0.0007139955339 2.425851293e-07 -1.410399614e-07 9.795299713e-07 -5.332416191e-06 7.172743108e-07 -3.540772515e-05 --0.0001754220838 0.0002536589677 -3.177126956e-08 0.0003863364697 1.386797226e-06 -9.11266712e-07 6.843731638e-07 -1.046989766e-05 -2.19922394e-07 -6.952271352e-05 --1.906497624e-06 -6.744594819e-05 -8.517803356e-08 -5.184420246e-05 -1.167750493e-06 -0.000132548879 0.0001407526087 4.268776598e-07 -3.102527075e-05 3.037626088e-06 -4.23545662e-08 1.807305193e-07 -2.233624949e-07 9.795035253e-08 -2.809119775e-06 -5.193900348e-05 0.0001435157015 2.704103069e-07 5.86954911e-05 2.804828227e-06 -5.422101408e-07 3.335378042e-07 2.026534316e-06 -3.626173627e-07 2.544236524e-05 --0.0001437656943 -0.0002216423617 -4.036591344e-07 1.523257557e-05 -2.136693579e-07 --0.0001523807982 -0.000167862841 -3.75642582e-07 6.097051651e-05 4.242079415e-07 --3.178548065e-07 -5.819859954e-07 -5.7232926e-06 1.137606622e-07 -4.113436571e-05 --5.729595348e-05 -1.696448945e-05 -1.626015434e-07 5.366709058e-05 2.189641618e-07 --3.167494061e-07 -3.452091842e-07 3.379262654e-06 4.444880686e-08 2.429743483e-05 --1.987121448e-05 -0.0001619749166 -1.79792711e-07 -9.234642716e-05 3.208464908e-07 --2.369542145e-05 -0.0002716793316 -2.278441202e-07 -0.0001664291962 1.120821869e-06 -1.505362706e-07 -2.832481254e-07 -3.092176051e-06 -1.982821987e-07 -2.755745267e-05 --4.592427656e-05 -6.16652532e-05 -1.42125176e-07 7.99066184e-06 1.056871599e-06 -3.492317366e-07 -1.872210799e-07 -2.777865781e-06 -3.722532649e-07 -2.476516376e-05 --2.981207714e-05 -3.28150528e-05 -8.483876813e-08 1.032803581e-05 4.077016611e-07 -2.030530525e-05 -3.482726353e-06 6.79112949e-08 -2.51342559e-05 -2.972522162e-07 -6.183211416e-08 -9.016046585e-09 -1.436095412e-06 -1.839279488e-08 -1.159747133e-05 -2.456018979e-05 2.264963075e-06 5.745794136e-08 -2.583953836e-05 -5.589202467e-07 --2.25566506e-08 6.473657188e-08 5.237141878e-07 4.974063355e-08 4.229629857e-06 --2.267058517e-05 -4.926150852e-05 -7.24198271e-08 -8.363417854e-06 7.505671998e-10 -7.587319496e-06 1.639436679e-05 5.306168098e-08 2.792702924e-06 1.867944725e-07 -2.705535734e-08 -2.144818899e-09 -2.092602831e-06 2.085235398e-08 -1.482697568e-05 -4.361219552e-06 3.059049091e-05 2.945202632e-08 1.637855199e-05 1.010056188e-07 -3.111727399e-08 6.834373187e-08 3.399184477e-07 3.208243797e-09 2.407692112e-06 --2.828101787e-05 -6.796221982e-05 -1.08854853e-07 -1.610596337e-05 4.134167939e-08 --1.952444031e-05 -7.787785841e-05 -7.515255891e-08 -3.302823056e-05 1.178661968e-07 --2.978563046e-08 -1.207870119e-07 -1.665958403e-06 6.972305693e-09 -1.370846477e-05 --9.453906375e-06 -1.613795321e-05 -3.069437698e-08 -7.312613173e-07 4.3030042e-08 -1.101561147e-08 -4.716000174e-08 -5.295966503e-07 -2.704635305e-08 -4.358371359e-06 -0.08492008587 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.03457858964 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.07322623009 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.03058795793 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0009972052725 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0006732227052 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0005626570199 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0005026941523 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -2.437593925e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0001241440791 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -2.637868389e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.767408909e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.36060998e-07 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.1265775035 0.1009943871 0.176170032 0 0 --0.1529678668 0.04461698639 0.02537335238 0 0 --0.2809811773 0.02379636752 0.077568876 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.1335541795 0.0549375205 0.09878072147 0 0 --0.08325177627 0.01654034807 -0.009705243867 0 0 --0.1526511214 -0.008463104726 0.006217849423 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.01250447225 0.03505994083 0.06273665334 0 0 --0.006586276006 0.004050875103 0.001107488102 0 0 --0.01186901667 0.00100399593 0.005358954904 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.001192430616 0.0008949663759 0.001638979637 0 0 --0.005836737857 0.006011559818 0.01249583241 0 0 --0.01066100292 0.0123897814 0.02151237771 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.001041564093 0.0005641317363 0.001012782202 0 0 -0.0003713505314 -0.0003575632654 -0.0006267844305 0 0 -0.0006774675188 -0.0006375223541 -0.001132707026 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0009079077737 -0.0001037398913 -0.000107414907 0 0 -0.000252015033 0.0001546589126 -0.0001352884353 0 0 -0.000468504806 -0.0001231084444 -3.370678336e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0001331851302 0.0001497878112 0.0002662432161 0 0 --0.0002066199992 0.0002591934994 0.0005900986218 0 0 --0.000375920545 0.0006108373048 0.0009980459663 0 0 -0 0 0 0 0 -0 0 0 0 0 -6.533868519e-05 5.478753392e-05 9.610301895e-05 0 0 --3.763464267e-05 -4.332621908e-05 -8.357960082e-05 0 0 --7.248566622e-05 -8.331532259e-05 -0.0001443546142 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0002124408008 -2.520030117e-05 -4.173532459e-05 0 0 -3.292310837e-05 2.193624952e-05 -3.350180692e-07 0 0 -6.23954612e-05 9.097558799e-07 2.113355187e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0002486472646 5.984974262e-05 0.0001127033118 0 0 -4.594969423e-05 1.262676989e-05 5.382109989e-05 0 0 -8.542386148e-05 5.831790298e-05 7.779258345e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.301091861e-05 2.521046618e-05 4.312845969e-05 0 0 -6.43106737e-06 -2.22831347e-05 -3.766530539e-05 0 0 -1.101331086e-05 -3.989186751e-05 -6.738504476e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.532746664e-05 -1.045311846e-06 -1.63567983e-06 0 0 --1.060870699e-05 7.016629777e-06 9.819896703e-06 0 0 --1.932415699e-05 9.861612923e-06 1.901677418e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --9.190046329e-05 1.791888309e-05 3.306926299e-05 0 0 -1.629881871e-05 -1.700465471e-06 4.040277505e-06 0 0 -3.007845879e-05 4.464731153e-06 3.004443052e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.2746940763 0.2444081678 0.4456085914 0.02985475774 -0.0440594483 --0.05523870786 -0.03746041659 -0.006980993606 0.09759597123 0.1465229067 --0.09036042209 -0.008716878665 -0.04746544331 -0.1422270106 0.07007514749 --0.03297381126 0.03109040346 0.0670207158 0.03188172127 0.0007748819088 -0.04961753087 -0.05767030364 -0.09865701017 0.0008299020824 0.02976961667 --0.02389743884 0.0232739052 0.04195314935 0.0003955140429 -0.002049483631 --0.07425926014 0.03979916196 0.1013018353 0.03000615856 0.0426393977 --0.1369364943 0.1020710899 0.1695551958 -0.04440062161 0.01865828726 --0.03415028582 0.02598594887 0.06534869651 0.02806195745 0.01259136899 -0.0535860024 -0.05696259524 -0.09212830877 0.01343512797 0.01435395899 -0.007405595019 0.003024159347 0.005351121125 0.007002853616 -0.01167982281 --0.02094068873 0.003553931107 0.01187554755 -0.007606006256 0.02335675778 --0.0382781643 0.01215328615 0.01869748321 -0.02541153237 0.03509802501 --0.007270928465 0.0003866638598 0.01030839101 0.005484238396 0.01030002831 -0.01186547007 -0.009535859512 -0.01116694856 0.0101874327 -0.004680535399 -0.005839633085 0.004897105778 0.008790036762 0.007299753391 -0.01157895668 --0.003130932554 -0.002909990409 -0.005389482461 -0.004291858347 0.007027257208 --0.005604472576 -0.005294453573 -0.009464109564 -0.007746830259 0.01242703109 -0.002084229148 0.001423398986 0.003410097687 0.00230769633 -0.004270861817 --0.003504331639 -0.003052840443 -0.004942942346 -0.004456858419 0.006630771296 -0.0001524762734 0.0008673328142 0.001573177244 0.001023876802 -0.00154869907 -0.0004460321931 9.3495381e-05 0.0001842754095 0.0001154118675 -0.00050592805 -0.0008178977023 0.0002011343538 0.0003251091514 0.0005606166704 -0.0007411068843 -0.0008793666894 0.0008194756936 0.001409573648 0.001461120906 -0.001685518131 --0.001449052667 -0.001271628791 -0.002306347451 -0.00172052386 0.003094425024 --0.0003210498505 0.0002946974944 0.0005300417346 -3.383056642e-05 8.689038821e-05 -0.0002432419406 -0.0001148138561 -8.127207989e-05 0.0003019261585 -9.889294404e-05 -0.0004824562804 -8.731676189e-05 -0.0002330102288 9.008489786e-05 -0.0004908725915 -0.000211236033 -8.412688997e-06 4.533813828e-05 0.0002241951825 -0.0001949369367 --0.0003447264685 -5.31324236e-05 -5.180714007e-05 -0.0001443282667 0.0004519024205 -0.0001339172386 6.832899918e-05 0.0001215201482 0.0001239817774 -0.0002052738967 --0.0001855838615 -0.0001333362836 -0.0002371577254 -0.0001937952556 0.0003482407623 --0.0003283248496 -0.0002312669246 -0.0004143241899 -0.00037274483 0.0005931073779 --2.725637939e-06 8.515056007e-06 1.221076734e-05 -3.079335885e-05 -2.797213632e-05 -1.097960104e-05 -4.945216675e-06 -1.15183042e-05 -2.184194263e-05 -1.207940884e-05 --7.819516495e-06 7.058340624e-05 0.0001275876258 5.286101737e-05 -9.240564331e-05 --8.154865348e-05 2.551484428e-05 4.758309278e-05 -2.305387304e-05 3.406317001e-05 --0.0001476716194 4.632792355e-05 8.634708292e-05 -4.181415821e-05 6.146160832e-05 --1.911559088e-05 4.437626485e-05 9.354586984e-05 7.526308059e-05 -2.803033379e-05 -2.926440315e-05 -8.293085475e-05 -0.0001419007117 -1.965298451e-05 0.0001033025174 --0.0001274822121 0.0001415212793 0.0002577205169 3.57084077e-05 -5.410350336e-05 -0.000100805006 -4.981296285e-05 -7.480229379e-05 6.623479064e-05 -1.749608702e-05 -0.0001894462881 -7.67638265e-05 -0.0001502670159 2.015789403e-05 -9.220239591e-05 -7.390166906e-05 9.103960217e-06 1.562473184e-05 4.720506726e-05 -8.044642072e-05 --0.0001169355101 -1.689920762e-05 -2.914912862e-05 -7.628242065e-05 0.0001304330346 --3.091890471e-05 5.194950636e-05 9.453227531e-05 2.638494474e-05 -3.889418673e-05 --7.925617385e-06 -5.621579313e-05 -9.643849776e-05 -2.843501745e-05 8.771597699e-05 --9.605567203e-06 -9.696273706e-05 -0.0001782406204 -9.430925327e-05 0.000130059966 -2.586850429e-07 -1.935864026e-05 -3.989635772e-05 -3.521626572e-05 1.769384495e-05 -2.805134751e-06 3.525421775e-05 6.079080417e-05 1.850877401e-05 -5.269333758e-05 --2.620015281e-05 1.281986656e-05 2.354590696e-05 -3.363014096e-06 7.52847371e-06 --1.745944773e-05 5.289685338e-06 1.308164605e-05 5.490583207e-06 1.265310802e-05 --3.060558224e-05 1.288712243e-05 2.202315827e-05 -1.094166448e-05 9.731093353e-06 --1.439296558e-05 3.674267208e-06 9.786421413e-06 5.020702953e-06 1.156294123e-05 -2.183723819e-05 -8.279933933e-06 -1.342144215e-05 1.00586582e-05 -7.444974426e-06 --2.259453853e-05 2.947355161e-05 5.371532591e-05 1.076170294e-05 -1.69464929e-05 -2.915734147e-07 -7.814771926e-07 3.783824931e-06 1.493528942e-05 5.70011457e-06 -1.596520989e-06 3.670501746e-06 3.848892931e-06 -4.39537616e-06 -8.84878687e-06 -3.849351301e-06 9.114285437e-06 1.601288999e-05 7.845370231e-06 -1.567346358e-05 --6.575135013e-06 -1.398510287e-05 -2.558226495e-05 -1.54085745e-05 2.36912458e-05 --3.331146342e-05 2.821629651e-05 5.158749245e-05 4.707422305e-06 -6.008961207e-06 -6.733176587e-06 -1.790170877e-05 -2.903951403e-05 1.572134513e-06 2.110473029e-05 -1.405710344e-05 -2.933736759e-05 -5.524299629e-05 -2.192831976e-05 2.265192155e-05 -1.70351898e-06 -4.943483677e-06 -9.977157468e-06 -6.390722548e-06 3.609581811e-06 --2.190542164e-06 8.685156195e-06 1.516019818e-05 3.564930568e-06 -9.915830614e-06 -0.08491837286 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.03725370429 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.06973771224 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.03382171645 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.001439061879 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0003769054565 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0003932654044 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0005809124761 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --5.146955418e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0001097620757 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.188578209e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.52244674e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.136360459e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.1344330849 0.09860549301 -0.1705998469 0 0 --0.1498626728 0.0434587455 -0.02458045444 0 0 -0.2767328839 -0.02249824565 0.07623005417 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.1456528774 0.05267214675 -0.09252376227 0 0 --0.08780749583 0.01782666303 0.008477745603 0 0 -0.1617846123 0.008715676964 0.008812243549 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.01012934954 0.03684668608 -0.06595632708 0 0 --0.007316232083 0.003484137306 0.001250908988 0 0 -0.01321355151 0.001361214704 0.001866628352 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0002921382299 0.00214458841 -0.00381405237 0 0 --0.005702649458 0.006076804749 -0.01257709556 0 0 -0.01045983179 -0.01256528651 0.02180405777 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0007272115083 0.0001315986879 -0.0002458410367 0 0 -7.898169184e-05 3.543507384e-05 -8.544128513e-06 0 0 --0.0001555648582 -1.985605421e-06 4.525340152e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0008778540776 -0.0001489988253 0.0002018707512 0 0 -0.0002760337414 0.0001303662867 0.0001605609411 0 0 --0.0005158888448 0.0001340222921 -7.399304212e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.000145427912 0.0002189581708 -0.000385858088 0 0 --0.0001812377544 0.0002004884644 -0.0004898093395 0 0 -0.0003338756018 -0.0005023587504 0.0008186203295 0 0 -0 0 0 0 0 -0 0 0 0 0 -8.416157151e-05 4.006272628e-05 -6.845567027e-05 0 0 --6.298284276e-05 -1.181741431e-05 4.295080443e-05 0 0 -0.0001183929247 4.359624641e-05 -6.291190232e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0002483109486 -4.242401692e-05 7.017115105e-05 0 0 -3.951021346e-05 3.694266478e-05 -3.465176961e-05 0 0 --7.599489922e-05 -3.724352038e-05 7.86965297e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0002459583692 7.889618262e-05 -0.0001452127372 0 0 -5.407271038e-05 -7.627587843e-06 -2.04171974e-05 0 0 --0.0001001948597 -2.306811156e-05 1.635581551e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --9.289744206e-06 1.765392325e-05 -2.956962323e-05 0 0 --4.448812358e-06 -1.56685047e-05 3.102476049e-05 0 0 -8.97994371e-06 3.285714352e-05 -5.307233913e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.786263958e-05 -3.143798917e-06 5.509278124e-06 0 0 --1.181325988e-05 1.045551692e-05 -1.811904458e-05 0 0 -2.151119257e-05 -1.828201071e-05 3.276929724e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --9.971847483e-05 2.109522429e-05 -3.897159523e-05 0 0 -2.131936329e-05 -5.871714145e-06 3.268456378e-06 0 0 --3.943678916e-05 2.893193033e-06 -1.033120489e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.2763961501 0.2406065501 -0.4409030698 0.03013417733 0.04322326002 --0.05191561084 -0.03747987205 0.009037216922 0.09651024226 -0.1426788725 -0.08381814509 0.01128599824 -0.05026714151 0.1368960712 0.06613083854 --0.03170907193 0.02941062291 -0.06352759875 0.03038707721 -0.0007442673769 --0.04731257367 0.053930903 -0.09274128126 -0.0005815380121 0.02809946022 --0.02721216049 0.02494014401 -0.04502445932 -0.0001182647208 0.00102954888 --0.07510194623 0.03932560879 -0.1024537388 0.0339410865 -0.04360291418 -0.1380130869 -0.1032422738 0.1717407912 0.04263124368 0.01597564274 --0.03460590873 0.02629035395 -0.06591085172 0.02863093645 -0.01200184278 --0.05321667123 0.05676040176 -0.09229081213 -0.01194300479 0.01550418901 -0.006799748524 0.002246889834 -0.00387768641 0.005974192492 0.010104784 --0.02209535215 0.005040525666 -0.01569642974 -0.005879437997 -0.02305590707 -0.04050732779 -0.01608421956 0.02516841061 0.02481137457 0.03311418673 --0.0082092099 0.0006359437405 -0.01147565466 0.006015466539 -0.01107937315 --0.01314046849 0.01052537309 -0.01253080147 -0.01079978221 -0.00487081686 -0.005660310535 0.004911469414 -0.008816430823 0.007142792072 0.01141327269 --0.00343229343 -0.003182977757 0.005890250877 -0.004839378265 -0.007815228803 -0.006105508507 0.005765654148 -0.01036842432 0.008581779982 0.01386330072 -0.00175416369 0.0009521189933 -0.002989530609 0.002110785006 0.003322478322 -0.002846680033 0.002698932997 -0.004024737772 0.00339715707 0.005405768762 -0.0001561973156 0.001051816094 -0.001911446226 0.00114270953 0.001765908203 -0.0003777269207 2.76346765e-05 -4.84090639e-05 1.204122608e-05 0.0003997581729 --0.0007244230092 -6.835409071e-05 9.65449039e-05 -0.0004507207698 -0.0005418980633 -0.0009818994221 0.0009221968269 -0.001627446334 0.001735815683 0.001877794827 -0.00159462732 0.00146456399 -0.002636595236 0.001875548604 0.003546897238 --0.0001258462641 0.0003573214252 -0.0006411312384 0.0001265224263 0.0001955388222 -0.0002552241642 -8.620652055e-05 1.542393298e-05 0.0003573282846 0.0001334681397 --0.000491528423 2.114252239e-05 -0.000123312649 -0.0001468434344 -0.0005663507367 -0.000313403067 8.633930183e-05 -0.0001749411527 0.0002853225884 0.00042035275 -0.0005008748522 0.0001695160347 -0.0002837466716 0.0003812247373 0.0007268049828 -6.926208917e-05 1.721239649e-05 -2.931565119e-05 4.251622595e-05 7.047258374e-05 --0.0001732209511 -0.0001264859635 0.0002287079068 -0.0001882176037 -0.0003206624837 -0.0003063759554 0.0002217830902 -0.0003952443986 0.0003436558728 0.0005518859322 --4.277921637e-05 -2.892003132e-05 4.365624688e-05 -6.340125355e-05 -5.771094875e-05 --7.449679935e-05 -4.572602205e-05 8.622871254e-05 -6.391926584e-05 -0.0001322460266 --3.61828916e-05 8.521347133e-05 -0.0001552763291 5.132973218e-05 8.640185286e-05 --8.951949171e-05 1.498418143e-05 -2.907364497e-05 -3.54717962e-05 -5.655637867e-05 -0.0001608833901 -2.670832857e-05 5.192832617e-05 6.366632622e-05 0.0001020523553 --2.508891336e-05 3.917278262e-05 -9.036342394e-05 8.530498655e-05 9.337033563e-06 --3.781261367e-05 8.011718975e-05 -0.0001340077284 4.362343857e-06 9.334046351e-05 --9.247374945e-05 0.0001582527229 -0.0002885608726 7.000550942e-05 0.0001096264963 -0.0001023576367 -5.605551747e-05 8.647787607e-05 6.374682969e-05 8.272173938e-06 --0.0001928343688 8.861444635e-05 -0.0001728509513 -1.075634471e-05 -7.811714331e-05 -9.246434192e-05 1.869834744e-05 -2.76334944e-05 5.031153393e-05 0.000113387928 -0.0001459292647 2.838448852e-05 -5.207556969e-05 0.0001100565246 0.0001668355775 --3.328300911e-05 3.451177773e-05 -6.332768076e-05 1.165575189e-05 1.598421583e-05 --1.277439276e-05 -4.523308021e-05 7.823037551e-05 -2.678354735e-05 -7.704871154e-05 -1.955812276e-05 7.861420529e-05 -0.0001443626271 8.224224976e-05 0.0001170251646 --1.029383891e-05 -2.041621665e-05 4.027111525e-05 -3.689828647e-05 -3.002045628e-05 --1.863116409e-05 -3.573584747e-05 6.247486718e-05 -2.941386845e-05 -6.703530156e-05 --2.577390905e-05 1.296362378e-05 -2.395863031e-05 -3.272981992e-06 -6.490635484e-06 --1.861222914e-05 6.88395181e-06 -1.607695698e-05 5.630898252e-06 -1.13136182e-05 -3.304743709e-05 -1.574074564e-05 2.750528509e-05 1.014258403e-05 7.873257619e-06 --1.441163575e-05 4.547518033e-06 -1.208520541e-05 7.182139953e-06 -1.081915452e-05 --2.179607678e-05 1.018241791e-05 -1.662618679e-05 -1.009248352e-05 -4.181257714e-06 --2.218016856e-05 3.293228667e-05 -6.024129247e-05 1.430893288e-05 2.254196055e-05 -3.352543607e-06 -4.271837828e-06 2.827578977e-06 1.362190081e-05 -7.550083305e-06 --7.19565497e-06 2.971557326e-06 -8.127560318e-06 6.352432067e-06 -5.30877374e-06 -6.65643756e-06 8.650750861e-06 -1.443565361e-05 6.910624086e-06 1.837026421e-05 -1.098068622e-05 1.259176569e-05 -2.346294582e-05 1.827549025e-05 2.539619346e-05 --3.276262438e-05 2.43648074e-05 -4.486846264e-05 2.338560578e-06 2.380563438e-06 -5.447239594e-06 -1.549380518e-05 2.526924491e-05 1.340926514e-06 -1.902258086e-05 --1.164237904e-05 2.557971125e-05 -4.826967315e-05 1.967125363e-05 2.055842006e-05 --7.897468328e-08 -5.01099125e-06 9.795151298e-06 -6.451955609e-06 -5.626660835e-06 --5.923521211e-07 -8.503356735e-06 1.502859514e-05 -5.517657284e-06 -1.202539237e-05 diff --git a/tests/09_DeePKS/100_NO_GO_deepks_UT/gdmx_ref.dat b/tests/09_DeePKS/100_NO_GO_deepks_UT/gdmx_ref.dat deleted file mode 100644 index 26a20dd2e0..0000000000 --- a/tests/09_DeePKS/100_NO_GO_deepks_UT/gdmx_ref.dat +++ /dev/null @@ -1,14625 +0,0 @@ -0.004264241577 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.005660860289 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.005766717256 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0004705695994 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0002523341852 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.000198737253 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0001228478458 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0001015391237 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.362290068e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -3.244311953e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --7.063499268e-07 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --7.150719929e-07 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.749007251e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.002638031266 0.05782964746 0.0008530522436 0 0 -0.05782964746 0.09952063528 -0.0004198457211 0 0 -0.0008530522436 -0.0004198457211 -0.08349973243 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0082542325 0.1401398236 0.0005634463365 0 0 -0.1401398236 0.2063475568 -0.003782600316 0 0 -0.0005634463365 -0.003782600316 -0.1683414068 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.007742578845 0.08601256415 -0.000718254345 0 0 -0.08601256415 0.1122837165 -0.001517639339 0 0 --0.000718254345 -0.001517639339 -0.1029445657 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.002996203448 0.01834358595 -0.0006529541849 0 0 -0.01834358595 0.01855535588 0.0002252291858 0 0 --0.0006529541849 0.0002252291858 -0.02316933616 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.00101548011 -6.060508629e-05 -0.0003757769461 0 0 --6.060508629e-05 -0.003810302821 0.0004467544689 0 0 --0.0003757769461 0.0004467544689 -0.001340082424 0 0 -0 0 0 0 0 -0 0 0 0 0 -3.153059767e-06 -0.002942657942 -8.171233781e-05 0 0 --0.002942657942 -0.004906589014 0.0001676980626 0 0 --8.171233781e-05 0.0001676980626 0.003378480404 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0002396170272 -0.002077727731 3.189105049e-05 0 0 --0.002077727731 -0.002520448343 1.808807886e-05 0 0 -3.189105049e-05 1.808807886e-05 0.002836965886 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0001206944725 1.181973503e-06 4.827007874e-05 0 0 -1.181973503e-06 0.0004834344829 -6.036360159e-05 0 0 -4.827007874e-05 -6.036360159e-05 0.0002243586611 0 0 -0 0 0 0 0 -0 0 0 0 0 -3.905145875e-05 0.0004236688266 3.039029414e-05 0 0 -0.0004236688266 0.0008566604466 -4.93967013e-05 0 0 -3.039029414e-05 -4.93967013e-05 -0.000455067112 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.906609172e-05 0.000113961084 -4.219363662e-06 0 0 -0.000113961084 0.0001048642356 1.08461584e-06 0 0 --4.219363662e-06 1.08461584e-06 -0.0001671013903 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.024397521e-05 2.168763881e-05 -1.161185725e-05 0 0 -2.168763881e-05 -8.376533876e-05 1.350983765e-05 0 0 --1.161185725e-05 1.350983765e-05 -8.758915684e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.013305536e-06 -1.109343198e-05 -9.19114728e-07 0 0 --1.109343198e-05 -2.146697578e-05 1.3364722e-06 0 0 --9.19114728e-07 1.3364722e-06 1.274761839e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -3.147993931e-06 -3.426450544e-05 -1.189527245e-07 0 0 --3.426450544e-05 -4.088765503e-05 1.446249627e-06 0 0 --1.189527245e-07 1.446249627e-06 5.136290606e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.002928453387 0.04878901627 2.280876649e-05 0.01836084336 -0.0006347466869 -0.04878901627 0.007571609286 0.0002350254082 -0.01969035103 -0.0005568506397 -2.280876649e-05 0.0002350254082 -0.004495917348 -0.0005331891059 -0.02184473673 -0.01836084336 -0.01969035103 -0.0005331891059 -0.07218763209 0.0002356620508 --0.0006347466869 -0.0005568506397 -0.02184473673 0.0002356620508 0.06672966133 --0.0002323270941 0.03714041747 -0.0003099547983 -0.0031657519 0.0004370059752 -0.03714041747 0.01617319052 -0.0001845552743 -0.001920435672 0.0004387477619 --0.0003099547983 -0.0001845552743 -0.01205004731 -0.0002883866115 -0.008131510136 --0.0031657519 -0.001920435672 -0.0002883866115 -0.0376691429 0.0005025354331 -0.0004370059752 0.0004387477619 -0.008131510136 0.0005025354331 0.04352172323 -0.0002029587963 0.01006228441 -8.534325244e-05 -0.009261581224 0.0004126668983 -0.01006228441 0.008304536433 -0.0001641373024 0.004735209572 0.0004719690209 --8.534325244e-05 -0.0001641373024 -0.007551545643 0.0001263267697 0.002784831281 --0.009261581224 0.004735209572 0.0001263267697 -0.002489543351 0.0001140192226 -0.0004126668983 0.0004719690209 0.002784831281 0.0001140192226 0.006121465487 --0.0003898764379 0.0008522498471 0.0001015544426 -0.001899942586 -4.028282469e-05 -0.0008522498471 0.0005690565272 3.956576757e-06 0.0004488915986 4.337038291e-05 -0.0001015544426 3.956576757e-06 -0.001089830493 0.0001080774333 0.001173540903 --0.001899942586 0.0004488915986 0.0001080774333 0.0003640560268 -9.164731432e-05 --4.028282469e-05 4.337038291e-05 0.001173540903 -9.164731432e-05 -0.001187412693 --0.0001102139388 0.000167638184 2.454515013e-05 7.958837394e-05 -3.058195426e-05 -0.000167638184 -7.572730995e-05 4.486601759e-06 -0.0001616331775 -9.933580657e-06 -2.454515013e-05 4.486601759e-06 7.285269468e-05 3.297507151e-06 -0.0001074790817 -7.958837394e-05 -0.0001616331775 3.297507151e-06 -0.0002965636403 -1.19471253e-05 --3.058195426e-05 -9.933580657e-06 -0.0001074790817 -1.19471253e-05 0.0001574250355 -6.367163958e-05 7.463048343e-05 -1.580707998e-05 -0.0001131922164 2.064950964e-05 -7.463048343e-05 0.0002028989031 -1.423172233e-05 0.000148538355 1.922179777e-05 --1.580707998e-05 -1.423172233e-05 -7.553537423e-05 -2.11351108e-05 -6.206295515e-05 --0.0001131922164 0.000148538355 -2.11351108e-05 2.933794575e-06 2.82997721e-05 -2.064950964e-05 1.922179777e-05 -6.206295515e-05 2.82997721e-05 0.0003025775457 --9.438560625e-06 5.926087303e-06 2.487848436e-06 -3.597644049e-05 -8.497069119e-07 -5.926087303e-06 2.595999132e-06 -4.553916546e-07 -2.627738522e-06 1.691905343e-06 -2.487848436e-06 -4.553916546e-07 -2.841193271e-05 2.109256087e-06 3.279287208e-05 --3.597644049e-05 -2.627738522e-06 2.109256087e-06 -9.567127591e-06 -1.511912946e-06 --8.497069119e-07 1.691905343e-06 3.279287208e-05 -1.511912946e-06 -3.685991262e-05 --1.418590515e-05 1.99551345e-05 3.518824164e-06 -1.67843336e-05 -3.339975722e-06 -1.99551345e-05 5.945888198e-07 9.549760151e-07 -3.697299622e-06 -8.414598354e-07 -3.518824164e-06 9.549760151e-07 -8.425852784e-06 2.555348438e-06 1.043574447e-05 --1.67843336e-05 -3.697299622e-06 2.555348438e-06 -7.787387842e-06 -3.115390047e-06 --3.339975722e-06 -8.414598354e-07 1.043574447e-05 -3.115390047e-06 -1.282992627e-05 -3.955919718e-06 5.705403183e-06 -1.165721755e-06 3.482769443e-06 9.987057384e-07 -5.705403183e-06 1.232849134e-05 -1.242532652e-06 7.033838663e-06 1.187017965e-06 --1.165721755e-06 -1.242532652e-06 4.217425907e-06 -2.658472784e-06 -1.709916348e-05 -3.482769443e-06 7.033838663e-06 -2.658472784e-06 -6.65539467e-06 2.881376751e-06 -9.987057384e-07 1.187017965e-06 -1.709916348e-05 2.881376751e-06 3.8305022e-05 --3.690228341e-06 6.184743899e-06 7.217317336e-07 9.793442827e-06 -1.035481078e-06 -6.184743899e-06 -6.904775329e-06 3.701534966e-07 -1.146274402e-05 -6.229974499e-07 -7.217317336e-07 3.701534966e-07 1.970740477e-06 3.665860552e-07 -2.870779132e-06 -9.793442827e-06 -1.146274402e-05 3.665860552e-07 -1.890509996e-05 -6.803241175e-07 --1.035481078e-06 -6.229974499e-07 -2.870779132e-06 -6.803241175e-07 4.158174725e-06 --5.775379084e-07 2.59291078e-06 1.501475176e-07 -5.475148252e-06 6.751917586e-08 -2.59291078e-06 2.619392485e-06 -7.584378664e-09 1.629712139e-06 1.982323421e-07 -1.501475176e-07 -7.584378664e-09 -4.608239531e-06 3.381959816e-07 3.927550477e-06 --5.475148252e-06 1.629712139e-06 3.381959816e-07 -2.065624978e-07 -2.158353515e-07 -6.751917586e-08 1.982323421e-07 3.927550477e-06 -2.158353515e-07 -2.245016099e-06 -1.452466157e-06 8.78926848e-07 -4.48858374e-07 -1.592107325e-06 5.338527575e-07 -8.78926848e-07 4.40610564e-06 -4.205728818e-07 3.509336645e-06 5.166077567e-07 --4.48858374e-07 -4.205728818e-07 -5.991451867e-07 -7.045432467e-07 -2.503171371e-06 --1.592107325e-06 3.509336645e-06 -7.045432467e-07 7.407183921e-07 8.772617316e-07 -5.338527575e-07 5.166077567e-07 -2.503171371e-06 8.772617316e-07 7.797603687e-06 --9.402385583e-07 3.134540516e-06 1.483611174e-07 1.965948742e-06 -2.171415445e-07 -3.134540516e-06 -9.253608544e-07 1.288386839e-07 -2.407503673e-06 -1.712626454e-07 -1.483611174e-07 1.288386839e-07 -1.061566158e-07 1.581706214e-07 -6.100702252e-07 -1.965948742e-06 -2.407503673e-06 1.581706214e-07 -4.912395866e-06 -2.198965332e-07 --2.171415445e-07 -1.712626454e-07 -6.100702252e-07 -2.198965332e-07 1.82867734e-06 --0.004106501462 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.002676718886 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.005046258454 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.00331976488 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0005069334605 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0001198735964 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -2.567679553e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -5.113072615e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -2.25898373e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.246442207e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.250573766e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --4.762230257e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.173199228e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.004306311685 0.06940186736 -0.0001189960032 0 0 -0.06940186736 0.001487094754 -0.0001242295495 0 0 --0.0001189960032 -0.0001242295495 -0.002551393032 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.00434577981 0.002603436488 0.0002425511693 0 0 -0.002603436488 -0.00205740842 -2.167089405e-05 0 0 -0.0002425511693 -2.167089405e-05 -0.002618003146 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.001978225946 0.03163025501 8.507919807e-05 0 0 -0.03163025501 0.0006896035135 7.074444299e-05 0 0 -8.507919807e-05 7.074444299e-05 -0.0007675901662 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.00218649673 0.02903421779 -4.57276818e-05 0 0 -0.02903421779 0.0009304055127 0.0001154981048 0 0 --4.57276818e-05 0.0001154981048 4.687975377e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0007477046949 0.002117258358 -1.609943889e-05 0 0 -0.002117258358 3.224588611e-06 1.427082892e-05 0 0 --1.609943889e-05 1.427082892e-05 -2.808491362e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0001575040461 -2.818179047e-07 2.096649985e-07 0 0 --2.818179047e-07 -6.381124679e-06 9.396999995e-07 0 0 -2.096649985e-07 9.396999995e-07 -3.687369424e-07 0 0 -0 0 0 0 0 -0 0 0 0 0 -8.246341586e-05 0.0007981856667 -4.311545382e-07 0 0 -0.0007981856667 3.178135938e-05 2.954966143e-06 0 0 --4.311545382e-07 2.954966143e-06 2.833929964e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 -9.282339321e-06 5.772020528e-06 2.375678571e-07 0 0 -5.772020528e-06 -3.799018498e-06 -1.403769313e-07 0 0 -2.375678571e-07 -1.403769313e-07 -6.062257855e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 --4.992356234e-05 0.0001756350007 4.580034121e-07 0 0 -0.0001756350007 1.138509609e-05 1.375689456e-07 0 0 -4.580034121e-07 1.375689456e-07 2.438771216e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 -2.054529572e-05 5.607463e-05 1.514459054e-07 0 0 -5.607463e-05 4.374940037e-06 -8.713362391e-08 0 0 -1.514459054e-07 -8.713362391e-08 5.668396673e-07 0 0 -0 0 0 0 0 -0 0 0 0 0 -8.72905734e-08 -2.39557105e-05 -3.243414376e-08 0 0 --2.39557105e-05 -1.869814516e-06 -4.821032134e-08 0 0 --3.243414376e-08 -4.821032134e-08 -7.33597189e-07 0 0 -0 0 0 0 0 -0 0 0 0 0 --4.898180589e-06 4.480700775e-05 3.929847708e-08 0 0 -4.480700775e-05 2.696968054e-06 6.907573337e-08 0 0 -3.929847708e-08 6.907573337e-08 6.2868297e-07 0 0 -0 0 0 0 0 -0 0 0 0 0 -3.837984393e-06 6.393763906e-06 7.396389817e-09 0 0 -6.393763906e-06 4.874754679e-07 -2.073731586e-08 0 0 -7.396389817e-09 -2.073731586e-08 4.132296111e-08 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.002575066572 0.01551458622 -0.0002802334839 -0.02803093118 -8.298084936e-05 -0.01551458622 0.00141221143 -0.0004145449384 0.1412098749 0.0007365060648 --0.0002802334839 -0.0004145449384 -0.0021093629 0.0003266959736 0.1413567167 --0.02803093118 0.1412098749 0.0003266959736 0.06361076751 9.634678832e-06 --8.298084936e-05 0.0007365060648 0.1413567167 9.634678832e-06 -0.04810815143 -0.005327285248 -0.05620963909 0.0002866169741 -0.01486343599 -0.0001166141733 --0.05620963909 -0.007888031194 -0.0001743473117 0.07422778428 -0.0002317863034 -0.0002866169741 -0.0001743473117 -0.003393483563 -0.000252874144 0.0772824584 --0.01486343599 0.07422778428 -0.000252874144 0.01931245042 -2.095304321e-05 --0.0001166141733 -0.0002317863034 0.0772824584 -2.095304321e-05 -0.01397094187 -0.003349603068 -0.02959612055 0.0002044441455 -4.907070199e-05 -0.0001697783485 --0.02959612055 -0.003448577055 -0.0001668693489 0.02050654048 -9.068550509e-05 -0.0002044441455 -0.0001668693489 -0.001781752815 -9.756290706e-05 0.02087637157 --4.907070199e-05 0.02050654048 -9.756290706e-05 -0.0008293424305 -4.671388187e-06 --0.0001697783485 -9.068550509e-05 0.02087637157 -4.671388187e-06 0.001828587346 --0.0004821875147 0.01812809521 -2.886917322e-05 0.002431316726 1.845108365e-05 -0.01812809521 0.000654333964 0.0001370018957 0.001467654399 7.005068025e-06 --2.886917322e-05 0.0001370018957 -0.0002523025553 2.078292509e-05 0.001188767819 -0.002431316726 0.001467654399 2.078292509e-05 -0.001110266882 1.286786554e-06 -1.845108365e-05 7.005068025e-06 0.001188767819 1.286786554e-06 0.001212057727 --0.0007253542209 0.007382958718 -4.285531216e-05 -0.0003051729937 3.388104534e-05 -0.007382958718 7.829768052e-05 7.775206139e-05 0.0003122996405 -1.081766705e-05 --4.285531216e-05 7.775206139e-05 -0.0001479907679 5.362919834e-06 0.0003695590255 --0.0003051729937 0.0003122996405 5.362919834e-06 0.0001493972301 -2.848500378e-07 -3.388104534e-05 -1.081766705e-05 0.0003695590255 -2.848500378e-07 -8.728559327e-05 --0.000482802363 0.003123294442 1.808349486e-06 6.272740678e-05 5.105378542e-06 -0.003123294442 0.0002847304613 8.763584812e-06 0.000104528823 3.892182651e-06 -1.808349486e-06 8.763584812e-06 1.85337628e-05 1.419820432e-06 7.941880509e-05 -6.272740678e-05 0.000104528823 1.419820432e-06 4.003884104e-06 1.535458177e-07 -5.105378542e-06 3.892182651e-06 7.941880509e-05 1.535458177e-07 1.115561284e-05 --2.494335227e-06 0.000157830808 -2.958236837e-07 1.271024295e-05 -3.117528056e-08 -0.000157830808 3.130677673e-06 2.089633739e-06 1.825994158e-06 1.759385028e-08 --2.958236837e-07 2.089633739e-06 -2.752563014e-09 4.523951835e-07 -1.778802613e-07 -1.271024295e-05 1.825994158e-06 4.523951835e-07 -1.072928073e-05 1.77637893e-08 --3.117528056e-08 1.759385028e-08 -1.778802613e-07 1.77637893e-08 1.198549718e-05 -3.386237737e-05 -0.0001055256438 -1.443222477e-08 -5.337444255e-05 2.476734801e-07 --0.0001055256438 -1.805466076e-05 -4.130536702e-07 7.564270404e-05 -1.964614137e-07 --1.443222477e-08 -4.130536702e-07 -1.314632349e-05 -1.205408743e-07 8.089160682e-05 --5.337444255e-05 7.564270404e-05 -1.205408743e-07 3.457291307e-05 -2.111293296e-08 -2.476734801e-07 -1.964614137e-07 8.089160682e-05 -2.111293296e-08 -2.735652175e-05 --2.994079315e-05 0.0004551007284 1.06334421e-06 2.828729663e-05 4.291164571e-07 -0.0004551007284 4.802752214e-05 3.881750492e-07 1.827187274e-05 1.167098544e-06 -1.06334421e-06 3.881750492e-07 4.866171117e-06 3.429963675e-07 1.19383444e-05 -2.828729663e-05 1.827187274e-05 3.429963675e-07 8.206304486e-06 4.216290091e-08 -4.291164571e-07 1.167098544e-06 1.19383444e-05 4.216290091e-08 -5.60676414e-06 --2.202534495e-06 -5.00908923e-06 -3.013912477e-07 -5.267356768e-06 7.03985788e-08 --5.00908923e-06 -2.079249307e-06 3.253037726e-08 5.573625551e-06 3.793539968e-08 --3.013912477e-07 3.253037726e-08 -9.819246766e-07 5.649752668e-08 5.637583372e-06 --5.267356768e-06 5.573625551e-06 5.649752668e-08 3.532497469e-06 1.156553485e-09 -7.03985788e-08 3.793539968e-08 5.637583372e-06 1.156553485e-09 -2.442862067e-06 --4.01655239e-06 -1.254304257e-05 -2.733110042e-08 -4.218378816e-06 -5.766373823e-09 --1.254304257e-05 -1.26234165e-06 -6.093009629e-08 1.588807329e-05 1.274900319e-08 --2.733110042e-08 -6.093009629e-08 -4.223237426e-07 -3.359593053e-09 1.6239421e-05 --4.218378816e-06 1.588807329e-05 -3.359593053e-09 7.445729841e-06 -2.240314803e-09 --5.766373823e-09 1.274900319e-08 1.6239421e-05 -2.240314803e-09 -5.816711769e-06 -6.277102538e-07 4.475422792e-05 2.593083102e-08 2.595095304e-06 8.337870535e-08 -4.475422792e-05 4.100606583e-06 1.555638031e-07 7.995287683e-06 9.748391043e-08 -2.593083102e-08 1.555638031e-07 8.189388662e-07 4.209508258e-08 7.639620159e-06 -2.595095304e-06 7.995287683e-06 4.209508258e-08 4.439674394e-06 2.526226899e-09 -8.337870535e-08 9.748391043e-08 7.639620159e-06 2.526226899e-09 -3.553896646e-06 -9.839183396e-07 -8.005531152e-06 -7.795727268e-08 -2.575792368e-06 -3.201928326e-08 --8.005531152e-06 -7.410905833e-07 -6.60007794e-08 7.279192387e-06 7.262386557e-08 --7.795727268e-08 -6.60007794e-08 -3.18853368e-07 5.664236964e-08 7.07552291e-06 --2.575792368e-06 7.279192387e-06 5.664236964e-08 3.970855732e-06 2.537981188e-09 --3.201928326e-08 7.262386557e-08 7.07552291e-06 2.537981188e-09 -2.88922744e-06 -0.1479046236 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.1649512493 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.2502830925 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.07122777737 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.001305346886 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.00366360697 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.004241950341 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.001779955805 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0006138794545 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0007488960997 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -3.235430303e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0001717021979 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --6.382726676e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.1330943533 0.0001320133227 -7.536715407e-05 0 0 -0.0001320133227 0.05904995212 0.0001910954206 0 0 --7.536715407e-05 0.0001910954206 0.1292915842 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0815377711 -0.03243372868 0.0001243169713 0 0 --0.03243372868 -0.07302262441 -0.001548599012 0 0 -0.0001243169713 -0.001548599012 0.07966153451 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0158604559 0.00764068317 -2.78657916e-05 0 0 -0.00764068317 -0.006962845158 6.890866109e-05 0 0 --2.78657916e-05 6.890866109e-05 0.008786986415 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.005591416573 0.02548347313 -5.183062956e-05 0 0 -0.02548347313 0.06437930596 6.217541607e-06 0 0 --5.183062956e-05 6.217541607e-06 -0.003351899714 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.001569724603 -0.004459978192 -3.113941538e-07 0 0 --0.004459978192 -0.01492931252 -1.623141933e-06 0 0 --3.113941538e-07 -1.623141933e-06 -0.0002498867435 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0003969899064 -0.001079847637 -6.675644444e-06 0 0 --0.001079847637 -0.002506579214 2.324519757e-05 0 0 --6.675644444e-06 2.324519757e-05 0.0008707381112 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.000403686203 0.001835574079 4.271559254e-06 0 0 -0.001835574079 0.004884432016 1.008102643e-06 0 0 -4.271559254e-06 1.008102643e-06 -0.0002652750862 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0002438928986 -0.0006370418476 1.656738931e-07 0 0 --0.0006370418476 -0.002091128771 5.539270698e-07 0 0 -1.656738931e-07 5.539270698e-07 -4.464202492e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -5.969979961e-05 -0.0001028739116 -9.544409877e-08 0 0 --0.0001028739116 -0.0001725114668 -1.030522007e-07 0 0 --9.544409877e-08 -1.030522007e-07 0.0001012021843 0 0 -0 0 0 0 0 -0 0 0 0 0 -4.93617136e-05 0.0002994996119 6.302262356e-07 0 0 -0.0002994996119 0.0007997580822 3.687911329e-07 0 0 -6.302262356e-07 3.687911329e-07 -5.95933105e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --5.753283139e-05 -0.0001400755575 -2.582607321e-07 0 0 --0.0001400755575 -0.0005003014969 -1.597332553e-06 0 0 --2.582607321e-07 -1.597332553e-06 -1.868461199e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -5.441396972e-06 -1.115712126e-05 -5.44127216e-08 0 0 --1.115712126e-05 -2.250493027e-05 1.543684955e-08 0 0 --5.44127216e-08 1.543684955e-08 9.869573658e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 -3.09449147e-06 4.200863397e-05 4.413978641e-08 0 0 -4.200863397e-05 9.752628041e-05 -2.636851159e-08 0 0 -4.413978641e-08 -2.636851159e-08 -1.298012918e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.007381473561 -0.01495489262 -4.362547e-05 0.05301538946 0.0002676000952 --0.01495489262 -0.1018711465 -0.0001186106441 0.004350717961 0.0002745677032 --4.362547e-05 -0.0001186106441 0.00755626927 -5.108370623e-06 0.0130996642 -0.05301538946 0.004350717961 -5.108370623e-06 -0.08547833182 -0.000198355881 -0.0002676000952 0.0002745677032 0.0130996642 -0.000198355881 -0.1272048947 -0.0439778531 0.03512857089 0.0001798866385 -0.02385378761 0.0006649874985 -0.03512857089 0.04314483312 -1.822515652e-05 -0.00226572933 -0.0001856982352 -0.0001798866385 -1.822515652e-05 0.01256252074 -0.0001681434995 0.03200241302 --0.02385378761 -0.00226572933 -0.0001681434995 0.0247635252 -0.0007409357535 -0.0006649874985 -0.0001856982352 0.03200241302 -0.0007409357535 0.0602002146 --0.001589833875 0.02950693574 9.397833991e-06 0.0179032779 0.0001692095064 -0.02950693574 0.008653084662 -1.571212216e-05 -0.03544570237 2.222454838e-05 -9.397833991e-06 -1.571212216e-05 0.005891367395 1.769847364e-05 0.01313678559 -0.0179032779 -0.03544570237 1.769847364e-05 -0.04414227759 -0.0001171190124 -0.0001692095064 2.222454838e-05 0.01313678559 -0.0001171190124 0.02928903473 --0.00357221949 -0.005005184936 -3.611911341e-05 0.001153255178 -0.0001513638148 --0.005005184936 0.006201269215 -1.074689411e-05 0.009001138474 -9.501940402e-05 --3.611911341e-05 -1.074689411e-05 0.0001973217366 3.490469943e-05 -0.0004027128884 -0.001153255178 0.009001138474 3.490469943e-05 0.004130542394 0.0001282985949 --0.0001513638148 -9.501940402e-05 -0.0004027128884 0.0001282985949 -0.004163935266 -0.001742019153 -0.002245603627 -1.937850079e-06 -0.003651562157 2.93619932e-06 --0.002245603627 0.004459343159 1.073765366e-06 0.005975589827 -3.582997847e-05 --1.937850079e-06 1.073765366e-06 -4.903679256e-05 6.410740908e-07 2.742935534e-05 --0.003651562157 0.005975589827 6.410740908e-07 0.008518432031 -3.129521904e-05 -2.93619932e-06 -3.582997847e-05 2.742935534e-05 -3.129521904e-05 0.0008188253217 -0.0001654406058 0.0005719898821 -3.540937389e-06 0.0001951942734 -2.778320696e-05 -0.0005719898821 -0.0002667510747 -8.483972629e-07 -0.0009265708833 1.300891214e-05 --3.540937389e-06 -8.483972629e-07 7.89217827e-05 2.51143684e-06 0.0002489585371 -0.0001951942734 -0.0009265708833 2.51143684e-06 -0.0009189979152 4.053121409e-05 --2.778320696e-05 1.300891214e-05 0.0002489585371 4.053121409e-05 0.0006571234076 --0.0003603913478 -3.739729347e-05 5.599425833e-07 0.0004672080168 3.190007597e-06 --3.739729347e-05 -0.0001092211842 -1.779711548e-07 -4.252269512e-05 2.394114309e-06 -5.599425833e-07 -1.779711548e-07 -1.608224584e-05 -4.337026385e-07 -7.957738688e-05 -0.0004672080168 -4.252269512e-05 -4.337026385e-07 -0.0006674524068 -1.947612911e-06 -3.190007597e-06 2.394114309e-06 -7.957738688e-05 -1.947612911e-06 -0.0003477309646 -8.490742705e-05 3.92587495e-06 2.896801808e-07 -9.851867234e-05 -6.135004964e-07 -3.92587495e-06 0.0001319678676 4.497434106e-08 8.48627782e-05 2.629801962e-06 -2.896801808e-07 4.497434106e-08 3.107690784e-06 -3.351351007e-07 2.355066382e-05 --9.851867234e-05 8.48627782e-05 -3.351351007e-07 0.0001721287353 2.502449339e-06 --6.135004964e-07 2.629801962e-06 2.355066382e-05 2.502449339e-06 0.000101400177 -9.63547375e-05 -5.581876405e-05 7.157588355e-10 -0.0001421074047 -7.737820751e-07 --5.581876405e-05 0.0001034128182 -1.287631534e-07 0.0001448467757 6.928972326e-07 -7.157588355e-10 -1.287631534e-07 5.190224173e-06 -1.418711249e-07 2.120332263e-05 --0.0001421074047 0.0001448467757 -1.418711249e-07 0.0002611637589 1.303122154e-06 --7.737820751e-07 6.928972326e-07 2.120332263e-05 1.303122154e-06 3.661773976e-05 --7.806850706e-05 -3.300412516e-05 2.639427759e-07 8.798538452e-05 1.904156917e-06 --3.300412516e-05 -7.325869145e-05 -3.928382027e-08 -4.035936252e-06 1.290309396e-06 -2.639427759e-07 -3.928382027e-08 -4.263553663e-06 -1.680913346e-07 -2.730732292e-05 -8.798538452e-05 -4.035936252e-06 -1.680913346e-07 -0.0001211159486 -1.346160281e-06 -1.904156917e-06 1.290309396e-06 -2.730732292e-05 -1.346160281e-06 -0.0001479915097 --2.615379671e-05 4.152100557e-05 -6.43874783e-08 6.272695181e-05 4.932812904e-07 -4.152100557e-05 -5.455239957e-05 3.131823782e-08 -8.285849761e-05 -6.95825485e-07 --6.43874783e-08 3.131823782e-08 8.055724041e-07 8.690514087e-08 3.205512982e-06 -6.272695181e-05 -8.285849761e-05 8.690514087e-08 -0.0001318460664 -1.138102019e-06 -4.932812904e-07 -6.95825485e-07 3.205512982e-06 -1.138102019e-06 -7.807376466e-07 -1.443758902e-05 -2.31033898e-05 9.738667217e-10 -2.803586119e-05 -2.983176585e-08 --2.31033898e-05 1.75069629e-05 -2.863661323e-08 4.480990523e-05 1.708796097e-07 -9.738667217e-10 -2.863661323e-08 5.219002689e-07 -1.863136646e-08 9.026727508e-07 --2.803586119e-05 4.480990523e-05 -1.863136646e-08 6.236368474e-05 1.329079435e-07 --2.983176585e-08 1.708796097e-07 9.026727508e-07 1.329079435e-07 -1.341305486e-05 --1.932559995e-05 -6.972728315e-06 1.353703926e-08 2.4453944e-05 2.865472441e-07 --6.972728315e-06 -2.881661515e-05 -1.255339538e-08 -6.625676288e-06 1.287330384e-07 -1.353703926e-08 -1.255339538e-08 -8.132618763e-07 4.012218575e-09 -5.788908907e-06 -2.4453944e-05 -6.625676288e-06 4.012218575e-09 -3.668232042e-05 -2.506106225e-07 -2.865472441e-07 1.287330384e-07 -5.788908907e-06 -2.506106225e-07 -4.019800227e-05 --0.07122073454 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.06589395339 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.1196292908 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.04278451261 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.001769679533 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0007062062178 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.001419613871 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.001457088469 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --4.450482064e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0004388006575 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.49815972e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -3.515851061e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --4.921960449e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.06408907338 -0.0169652623 0.008311370634 0 0 --0.0169652623 -0.003715370827 0.04519280125 0 0 -0.008311370634 0.04519280125 -0.0834811956 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.04388814701 -0.01691211474 -0.01169592846 0 0 --0.01691211474 -0.0004176374282 0.04705680387 0 0 --0.01169592846 0.04705680387 -0.01061502468 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.009098364099 -0.01165642451 0.004436964994 0 0 --0.01165642451 0.02822365802 0.02848488154 0 0 -0.004436964994 0.02848488154 -0.01753897088 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.003704151628 0.002626944944 0.01429539245 0 0 -0.002626944944 0.004794514199 -0.006748187461 0 0 -0.01429539245 -0.006748187461 -0.03248833684 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0002587438843 -0.0004428470045 -0.0006922547544 0 0 --0.0004428470045 0.0007590598127 0.001192530581 0 0 --0.0006922547544 0.001192530581 0.001873959103 0 0 -0 0 0 0 0 -0 0 0 0 0 --4.037570346e-05 -0.0004293790178 -0.0007020336533 0 0 --0.0004293790178 1.56281039e-05 0.0008828005242 0 0 --0.0007020336533 0.0008828005242 0.001186666101 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0001754518407 0.0001404218954 0.0007629906951 0 0 -0.0001404218954 0.0003757364152 -0.0003263556367 0 0 -0.0007629906951 -0.0003263556367 -0.00170912313 0 0 -0 0 0 0 0 -0 0 0 0 0 -6.357543344e-05 -0.0001063311374 -0.0001673102883 0 0 --0.0001063311374 0.0001498816715 0.000250142203 0 0 --0.0001673102883 0.000250142203 0.0003849380224 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.450573828e-05 1.327446244e-05 -1.12566342e-05 0 0 -1.327446244e-05 -9.150829157e-05 -3.687411558e-05 0 0 --1.12566342e-05 -3.687411558e-05 -1.890824079e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --6.028805208e-06 1.331750658e-05 9.801376907e-05 0 0 -1.331750658e-05 8.455425513e-05 -2.882559597e-05 0 0 -9.801376907e-05 -2.882559597e-05 -0.0002055330486 0 0 -0 0 0 0 0 -0 0 0 0 0 -2.153626368e-05 -3.419983641e-05 -5.46630655e-05 0 0 --3.419983641e-05 5.461026653e-05 8.707730461e-05 0 0 --5.46630655e-05 8.707730461e-05 0.0001382533612 0 0 -0 0 0 0 0 -0 0 0 0 0 --8.146641318e-06 8.244747002e-06 1.334478215e-05 0 0 -8.244747002e-06 -1.515615293e-05 -2.024116119e-05 0 0 -1.334478215e-05 -2.024116119e-05 -3.60088061e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -3.419869932e-06 -2.614649953e-06 1.052295653e-05 0 0 --2.614649953e-06 2.472114169e-05 7.263945556e-06 0 0 -1.052295653e-05 7.263945556e-06 -1.743988644e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.00736980496 -0.048122369 0.01420259996 -0.09305186018 -0.08868949537 --0.048122369 0.09226493448 0.07725976811 -0.01142495209 0.0151140149 -0.01420259996 0.07725976811 -0.04274173433 -0.005921346213 -0.01487231351 --0.09305186018 -0.01142495209 -0.005921346213 0.1137622269 -0.01265477349 --0.08868949537 0.0151140149 -0.01487231351 -0.01265477349 0.01034552742 --0.02515515127 -0.0114865098 0.02218641803 -0.03281074364 -0.004867873017 --0.0114865098 0.01928464129 0.01437396134 0.007990518435 0.03240094445 -0.02218641803 0.01437396134 -0.04294343877 0.01408959792 -0.001978901851 --0.03281074364 0.007990518435 0.01408959792 0.02529387295 -0.02732054191 --0.004867873017 0.03240094445 -0.001978901851 -0.02732054191 -0.06142579931 --0.002840182107 0.00648009087 0.01461646972 -0.004073372627 -0.009533416888 -0.00648009087 0.002391359311 0.004361501651 0.007702008896 -0.0008821726328 -0.01461646972 0.004361501651 -0.00863607422 0.005296360661 -0.01828370341 --0.004073372627 0.007702008896 0.005296360661 -0.005840877264 -0.01529467526 --0.009533416888 -0.0008821726328 -0.01828370341 -0.01529467526 0.008698547158 -0.002989924575 0.002242705101 -0.0009302941483 -0.00397471913 -0.006458320711 -0.002242705101 0.002755570605 0.001570795191 -0.002396362996 -0.00710684049 --0.0009302941483 0.001570795191 -0.004713262644 -0.01074131563 -0.003793482648 --0.00397471913 -0.002396362996 -0.01074131563 -0.01344736249 0.005845495864 --0.006458320711 -0.00710684049 -0.003793482648 0.005845495864 0.01807668664 --0.001017251912 -0.0003949249902 -0.001327058613 -0.001583962194 0.001459227493 --0.0003949249902 -0.0003625762528 -0.001243929992 -0.001162584004 0.0008779620886 --0.001327058613 -0.001243929992 -0.003195066793 -0.003082589237 0.002753606335 --0.001583962194 -0.001162584004 -0.003082589237 -0.003574797234 0.00270747829 -0.001459227493 0.0008779620886 0.002753606335 0.00270747829 -0.002475364434 --0.0002806784514 -0.0001964481753 -0.0001791582404 -0.0003176586809 0.0003749036105 --0.0001964481753 -1.895081969e-05 -7.957414452e-05 -9.900541292e-05 0.0003878711121 --0.0001791582404 -7.957414452e-05 -0.0003363022555 -0.0001365531849 0.0003710809003 --0.0003176586809 -9.900541292e-05 -0.0001365531849 5.025640407e-06 0.000223756819 -0.0003749036105 0.0003878711121 0.0003710809003 0.000223756819 -0.0009371523215 -0.0003065606022 0.0002268328012 0.0001893959833 2.879809208e-05 -0.0006393086143 -0.0002268328012 0.0002640001631 0.0002872460254 4.641387205e-05 -0.0006040349819 -0.0001893959833 0.0002872460254 0.0001867711388 -0.0001527219862 -0.0006234934583 -2.879809208e-05 4.641387205e-05 -0.0001527219862 -0.0002710297877 -0.0001307798024 --0.0006393086143 -0.0006040349819 -0.0006234934583 -0.0001307798024 0.001498135303 --8.492003074e-05 4.153645229e-06 -5.199946592e-07 -7.649899588e-05 6.36469263e-05 -4.153645229e-06 -1.779056826e-05 -5.24027353e-05 -4.735669854e-06 3.346165737e-05 --5.199946592e-07 -5.24027353e-05 -0.0001538529595 -8.443827394e-05 7.508206434e-05 --7.649899588e-05 -4.735669854e-06 -8.443827394e-05 -0.0001507667364 4.495669062e-05 -6.36469263e-05 3.346165737e-05 7.508206434e-05 4.495669062e-05 -0.0001288236517 --6.128654777e-05 -6.993786822e-05 -9.686628884e-05 -0.000105608748 0.0001043131261 --6.993786822e-05 -1.329242029e-05 -4.738981749e-05 -6.807575547e-05 0.0001028338509 --9.686628884e-05 -4.738981749e-05 -0.0001286480502 -0.0001090098158 0.0001745239195 --0.000105608748 -6.807575547e-05 -0.0001090098158 -4.464847339e-05 0.0001540763026 -0.0001043131261 0.0001028338509 0.0001745239195 0.0001540763026 -0.0002385248413 -6.614724552e-05 2.70333453e-05 2.955543354e-05 9.789046596e-06 -0.0001192955119 -2.70333453e-05 4.498793558e-05 5.373184478e-05 5.166932702e-06 -8.617175029e-05 -2.955543354e-05 5.373184478e-05 5.603963439e-05 4.075132683e-06 -9.783902595e-05 -9.789046596e-06 5.166932702e-06 4.075132683e-06 2.445573458e-05 -2.414092919e-05 --0.0001192955119 -8.617175029e-05 -9.783902595e-05 -2.414092919e-05 0.0002407184675 --3.15678222e-06 1.046597709e-06 1.394696954e-05 -5.373246565e-07 -7.250107142e-06 -1.046597709e-06 5.216794614e-06 6.258859769e-06 9.476178144e-06 3.300861671e-07 -1.394696954e-05 6.258859769e-06 9.291648571e-08 1.306658101e-05 -1.272883609e-05 --5.373246565e-07 9.476178144e-06 1.306658101e-05 1.276950015e-05 -2.15839781e-05 --7.250107142e-06 3.300861671e-07 -1.272883609e-05 -2.15839781e-05 -3.926015529e-06 --5.567892714e-06 -1.431281068e-05 -1.76068969e-05 -2.187404436e-05 9.105664112e-06 --1.431281068e-05 3.600637626e-06 -3.380687941e-06 -1.433018567e-05 1.524429427e-05 --1.76068969e-05 -3.380687941e-06 -2.345236778e-05 -2.258941492e-05 2.938858445e-05 --2.187404436e-05 -1.433018567e-05 -2.258941492e-05 -3.37890006e-06 2.9699023e-05 -9.105664112e-06 1.524429427e-05 2.938858445e-05 2.9699023e-05 -3.058402146e-05 -1.343927447e-05 1.088538587e-06 4.972221984e-06 -1.415665011e-06 -2.51477149e-05 -1.088538587e-06 1.230311404e-05 1.372739184e-05 9.820565416e-08 -1.362009901e-05 -4.972221984e-06 1.372739184e-05 1.100685359e-05 2.250458594e-06 -1.743866842e-05 --1.415665011e-06 9.820565416e-08 2.250458594e-06 1.486055846e-05 -5.074680564e-06 --2.51477149e-05 -1.362009901e-05 -1.743866842e-05 -5.074680564e-06 4.127145782e-05 --0.07008092128 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.06090680002 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.1167352951 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.04715619178 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.002773565759 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0002931945489 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.001004090865 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.001633730266 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0001270899251 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0004261153704 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.693929132e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -7.191283012e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --6.945001064e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.06353758305 -0.01710255114 -0.007690958569 0 0 --0.01710255114 -0.003670597047 -0.04595513699 0 0 --0.007690958569 -0.04595513699 -0.08188131451 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.04647662989 -0.01562961204 0.01215641507 0 0 --0.01562961204 -0.008237771254 -0.04299003442 0 0 -0.01215641507 -0.04299003442 -0.01214252314 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.009772204205 -0.01315273084 -0.001714794648 0 0 --0.01315273084 0.02848835684 -0.03200336038 0 0 --0.001714794648 -0.03200336038 -0.01232047464 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.003748155073 0.001729091036 -0.01440761756 0 0 -0.001729091036 0.007252869337 0.004550284721 0 0 --0.01440761756 0.004550284721 -0.03241844496 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0001595235559 5.615085912e-05 -0.000162255927 0 0 -5.615085912e-05 -1.998751526e-05 -2.966010236e-06 0 0 --0.000162255927 -2.966010236e-06 -0.0002044212866 0 0 -0 0 0 0 0 -0 0 0 0 0 --4.483937227e-06 -0.0003973847051 0.0007232433749 0 0 --0.0003973847051 -5.830947171e-05 -0.0007843469142 0 0 -0.0007232433749 -0.0007843469142 0.001197168029 0 0 -0 0 0 0 0 -0 0 0 0 0 --9.991450037e-05 -7.077399401e-06 -0.0005783388726 0 0 --7.077399401e-06 0.0006188894457 -2.649410841e-05 0 0 --0.0005783388726 -2.649410841e-05 -0.001243723262 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.373443321e-05 -5.583437363e-05 9.258745186e-05 0 0 --5.583437363e-05 5.154174595e-05 -0.0001271791112 0 0 -9.258745186e-05 -0.0001271791112 0.0001826781545 0 0 -0 0 0 0 0 -0 0 0 0 0 --4.43548651e-05 3.953763457e-05 -3.89457206e-05 0 0 -3.953763457e-05 -0.000115723481 0.0001030475382 0 0 --3.89457206e-05 0.0001030475382 -0.0001356408516 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.429910503e-05 -1.781596513e-05 -4.993794206e-05 0 0 --1.781596513e-05 0.0001345828539 -4.841299981e-05 0 0 --4.993794206e-05 -4.841299981e-05 -8.277926528e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.333101316e-05 -2.536879258e-05 4.568878896e-05 0 0 --2.536879258e-05 3.080104138e-05 -6.432903435e-05 0 0 -4.568878896e-05 -6.432903435e-05 0.0001100206891 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.092219495e-05 1.363627888e-05 -2.558578314e-05 0 0 -1.363627888e-05 -1.786948004e-05 3.312491246e-05 0 0 --2.558578314e-05 3.312491246e-05 -6.32514093e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -7.488389816e-06 -8.298864799e-06 -8.055509151e-07 0 0 --8.298864799e-06 3.301089249e-05 -2.125263294e-05 0 0 --8.055509151e-07 -2.125263294e-05 6.93752412e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.008824225891 -0.04984269086 -0.01367866273 -0.09330949118 0.09137867718 --0.04984269086 0.09309633737 -0.07875485041 -0.01200297342 -0.01428328129 --0.01367866273 -0.07875485041 -0.04053324605 0.005534575753 -0.0149656151 --0.09330949118 -0.01200297342 0.005534575753 0.1183001229 0.01275201205 -0.09137867718 -0.01428328129 -0.0149656151 0.01275201205 0.0114524867 --0.02537593994 -0.0142247662 -0.02121473512 -0.03533966857 0.005298073855 --0.0142247662 0.02156837251 -0.01643721647 0.00699181161 -0.03495154791 --0.02121473512 -0.01643721647 -0.04349537646 -0.01431231307 -4.234317768e-05 --0.03533966857 0.00699181161 -0.01431231307 0.03036318371 0.02605330797 -0.005298073855 -0.03495154791 -4.234317768e-05 0.02605330797 -0.0655054221 --0.004284722834 0.00568363985 -0.01519092462 -0.004596406638 0.008053336066 -0.00568363985 0.002332576519 -0.00455821395 0.008108446843 -0.001896134492 --0.01519092462 -0.00455821395 -0.009232011181 -0.007261162475 -0.0176163804 --0.004596406638 0.008108446843 -0.007261162475 -0.003191218272 0.01651440933 -0.008053336066 -0.001896134492 -0.0176163804 0.01651440933 0.003044091551 -0.003374820185 0.002980727476 -0.0003357667086 -0.003346781201 0.007554408764 -0.002980727476 0.002940408739 -0.002172507091 -0.001543176943 0.007981655294 --0.0003357667086 -0.002172507091 -0.003921800078 0.009672018231 -0.00598369655 --0.003346781201 -0.001543176943 0.009672018231 -0.0130585604 -0.004114831532 -0.007554408764 0.007981655294 -0.00598369655 -0.004114831532 0.02020525319 --0.001059828969 -0.0002768502881 0.001290368123 -0.001773215054 -0.00131846953 --0.0002768502881 -0.0002806447039 0.001288299026 -0.001199985922 -0.0006538055452 -0.001290368123 0.001288299026 -0.003675035773 0.003585261793 0.00272991095 --0.001773215054 -0.001199985922 0.003585261793 -0.004320273597 -0.002837409425 --0.00131846953 -0.0006538055452 0.00272991095 -0.002837409425 -0.002071030898 --0.0003704979247 -0.0003316754091 0.0004769542395 -0.0005501726678 -0.0005881211268 --0.0003316754091 -7.512864612e-05 0.0002401447248 -0.0003403964829 -0.000576002519 -0.0004769542395 0.0002401447248 -0.000661947504 0.0005140093773 0.0008538698501 --0.0005501726678 -0.0003403964829 0.0005140093773 -0.000240549994 -0.0007388009724 --0.0005881211268 -0.000576002519 0.0008538698501 -0.0007388009724 -0.001310871109 -0.000325271114 0.0002595729233 -0.00028207034 0.000120016104 0.0006785976752 -0.0002595729233 0.0002750359435 -0.0003423770684 0.0001273368614 0.0006436337582 --0.00028207034 -0.0003423770684 0.0003291408652 -9.791386213e-06 -0.0007777139289 -0.000120016104 0.0001273368614 -9.791386213e-06 -0.000134543012 0.0003106704232 -0.0006785976752 0.0006436337582 -0.0007777139289 0.0003106704232 0.001561060799 --8.821582328e-05 2.151515511e-05 -3.016762952e-05 -7.383587715e-05 -4.019115088e-05 -2.151515511e-05 -1.032759166e-05 4.463149503e-05 1.370145394e-05 -1.266609343e-05 --3.016762952e-05 4.463149503e-05 -0.0001609877129 7.702644707e-05 3.838220794e-05 --7.383587715e-05 1.370145394e-05 7.702644707e-05 -0.0001681237964 -7.819220543e-06 --4.019115088e-05 -1.266609343e-05 3.838220794e-05 -7.819220543e-06 -8.837539398e-05 --6.192775192e-05 -8.472832327e-05 0.0001380728373 -0.0001382516191 -0.0001170254655 --8.472832327e-05 -1.559198477e-05 6.311946206e-05 -0.0001030124884 -0.0001125986943 -0.0001380728373 6.311946206e-05 -0.0001694348683 0.0001709212775 0.0002268493109 --0.0001382516191 -0.0001030124884 0.0001709212775 -8.66375803e-05 -0.0002291082388 --0.0001170254655 -0.0001125986943 0.0002268493109 -0.0002291082388 -0.000247850548 -6.690064945e-05 3.224061244e-05 -4.379965886e-05 2.520646599e-05 0.000121256614 -3.224061244e-05 4.328282072e-05 -5.722772311e-05 1.718784098e-05 8.804562372e-05 --4.379965886e-05 -5.722772311e-05 7.160942355e-05 -2.7093582e-05 -0.0001147677955 -2.520646599e-05 1.718784098e-05 -2.7093582e-05 4.053258672e-05 5.193579479e-05 -0.000121256614 8.804562372e-05 -0.0001147677955 5.193579479e-05 0.0002384517446 --7.39090981e-06 -9.523617292e-08 -1.327704947e-05 -2.793539842e-06 2.460106569e-06 --9.523617292e-08 3.839513236e-06 -4.120921792e-06 9.651882566e-06 -4.064573119e-06 --1.327704947e-05 -4.120921792e-06 -4.480290723e-06 -1.229830705e-05 -8.345533645e-06 --2.793539842e-06 9.651882566e-06 -1.229830705e-05 1.075070506e-05 2.076465859e-05 -2.460106569e-06 -4.064573119e-06 -8.345533645e-06 2.076465859e-05 -1.482592092e-05 --2.911386703e-06 -1.48022385e-05 2.061270398e-05 -2.355812025e-05 -6.376718521e-06 --1.48022385e-05 4.770626884e-06 3.021544579e-06 -1.746986083e-05 -1.289138091e-05 -2.061270398e-05 3.021544579e-06 -2.479223343e-05 2.833228845e-05 3.076057157e-05 --2.355812025e-05 -1.746986083e-05 2.833228845e-05 -6.78125617e-06 -3.55457995e-05 --6.376718521e-06 -1.289138091e-05 3.076057157e-05 -3.55457995e-05 -2.298700655e-05 -1.309744014e-05 2.061590441e-06 -7.4190828e-06 9.701518308e-07 2.506378609e-05 -2.061590441e-06 1.167441883e-05 -1.390263038e-05 2.187819208e-06 1.37945414e-05 --7.4190828e-06 -1.390263038e-05 1.308363507e-05 -5.922600495e-06 -1.995977554e-05 -9.701518308e-07 2.187819208e-06 -5.922600495e-06 1.691614811e-05 9.659229961e-06 -2.506378609e-05 1.37945414e-05 -1.995977554e-05 9.659229961e-06 4.011977683e-05 -0.0007997406674 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.001651144474 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0006806214651 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -7.067415794e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -5.82406205e-07 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.431752309e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.12690231e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -2.278633793e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --4.141147868e-07 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --8.910756391e-07 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.151201875e-07 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.547406636e-07 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -4.242804756e-08 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.001983502018 -0.1570676896 5.914561811e-06 0 0 --0.1570676896 -0.004048286195 -0.0004934727516 0 0 -5.914561811e-06 -0.0004934727516 1.758580282e-08 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.004602264149 -0.09825467187 1.850996719e-05 0 0 --0.09825467187 -0.001453874822 -0.0005131123786 0 0 -1.850996719e-05 -0.0005131123786 6.781926438e-08 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.003468800914 -0.03292675428 1.663340549e-05 0 0 --0.03292675428 -0.0002328499215 -0.0002228820977 0 0 -1.663340549e-05 -0.0002228820977 6.625449006e-08 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.001156331608 -0.00212662654 5.753425735e-06 0 0 --0.00212662654 -1.244909626e-05 -1.5168366e-05 0 0 -5.753425735e-06 -1.5168366e-05 2.326366943e-08 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.000341386073 0.0004037827556 1.171235219e-06 0 0 -0.0004037827556 8.779811295e-06 1.628869785e-06 0 0 -1.171235219e-06 1.628869785e-06 3.891760279e-09 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.298006123e-05 0.0008366902343 -2.08032751e-08 0 0 -0.0008366902343 3.129836263e-05 3.205089389e-07 0 0 --2.08032751e-08 3.205089389e-07 -1.404461613e-11 0 0 -0 0 0 0 0 -0 0 0 0 0 --7.167760973e-05 0.0001580637789 -9.969790059e-08 0 0 -0.0001580637789 5.898788812e-06 -8.253296511e-09 0 0 --9.969790059e-08 -8.253296511e-09 8.122640417e-12 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.442080179e-05 9.070203697e-05 -9.432758974e-08 0 0 -9.070203697e-05 1.862737384e-06 2.411342518e-07 0 0 --9.432758974e-08 2.411342518e-07 -2.582685346e-10 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.673521537e-05 -0.0001289273959 -6.265376696e-08 0 0 --0.0001289273959 -1.773096213e-06 -6.014248874e-07 0 0 --6.265376696e-08 -6.014248874e-07 -2.203438574e-10 0 0 -0 0 0 0 0 -0 0 0 0 0 -2.504439051e-06 1.279678471e-05 1.216883596e-08 0 0 -1.279678471e-05 8.246199098e-08 8.822781586e-08 0 0 -1.216883596e-08 8.822781586e-08 4.873633688e-11 0 0 -0 0 0 0 0 -0 0 0 0 0 -6.20083267e-06 -4.228971535e-05 2.253828406e-08 0 0 --4.228971535e-05 -9.488967947e-07 -1.881374257e-07 0 0 -2.253828406e-08 -1.881374257e-07 7.782459141e-11 0 0 -0 0 0 0 0 -0 0 0 0 0 -5.846104245e-07 8.187713559e-06 1.332222221e-09 0 0 -8.187713559e-06 2.566053403e-07 1.421591985e-08 0 0 -1.332222221e-09 1.421591985e-08 2.86341028e-12 0 0 -0 0 0 0 0 -0 0 0 0 0 -5.795708353e-07 -9.049947552e-06 7.624681979e-10 0 0 --9.049947552e-06 -3.566191176e-07 1.74438508e-09 0 0 -7.624681979e-10 1.74438508e-09 -3.121464156e-13 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0008476469813 -0.02719868612 2.740948874e-06 -0.0005319167301 -7.819389548e-05 --0.02719868612 -0.001680808771 -0.0001394672223 -6.301892013e-05 8.766350668e-05 -2.740948874e-06 -0.0001394672223 5.827868848e-09 -2.729295792e-06 -3.955067781e-07 --0.0005319167301 -6.301892013e-05 -2.729295792e-06 -1.823074362e-06 1.630926099e-06 --7.819389548e-05 8.766350668e-05 -3.955067781e-07 1.630926099e-06 5.081580432e-07 -0.001425471799 -0.02967972126 3.34005129e-06 -0.000572004829 -8.308265057e-05 --0.02967972126 -0.002321370093 -6.234576099e-05 -0.0004217935743 -3.462256889e-05 -3.34005129e-06 -6.234576099e-05 7.742626409e-09 -1.197188605e-06 -1.741985852e-07 --0.000572004829 -0.0004217935743 -1.197188605e-06 -1.562507215e-05 -1.739854452e-06 --8.308265057e-05 -3.462256889e-05 -1.741985852e-07 -1.739854452e-06 -1.769230546e-07 -0.0009130539267 -0.01266154666 7.86083595e-07 -0.0002360484985 -3.283369184e-05 --0.01266154666 -0.001233077639 2.075876008e-05 -0.0003540849156 -8.397234817e-05 -7.86083595e-07 2.075876008e-05 -4.992065057e-09 4.462892202e-07 6.829443634e-08 --0.0002360484985 -0.0003540849156 4.462892202e-07 -1.339380483e-05 -2.575342231e-06 --3.283369184e-05 -8.397234817e-05 6.829443634e-08 -2.575342231e-06 -4.641199022e-07 -0.0002540348528 -0.001840553983 -8.148688065e-07 -2.908448555e-05 -2.736335006e-06 --0.001840553983 -0.000257431551 1.945155066e-05 -0.0001066084081 -3.651107035e-05 --8.148688065e-07 1.945155066e-05 -1.088872229e-08 4.095736933e-07 6.492674659e-08 --2.908448555e-05 -0.0001066084081 4.095736933e-07 -4.078516503e-06 -1.001938342e-06 --2.736335006e-06 -3.651107035e-05 6.492674659e-08 -1.001938342e-06 -2.040182929e-07 -3.440816581e-05 -0.0001260986689 -3.006008942e-07 -1.109839281e-06 2.808198122e-07 --0.0001260986689 -2.273176658e-05 2.808341043e-06 -1.056117537e-05 -4.787369574e-06 --3.006008942e-07 2.808341043e-06 -3.381466944e-09 6.118843351e-08 1.077566504e-08 --1.109839281e-06 -1.056117537e-05 6.118843351e-08 -4.055551726e-07 -1.2244639e-07 -2.808198122e-07 -4.787369574e-06 1.077566504e-08 -1.2244639e-07 -2.68388741e-08 --1.059877905e-05 -9.362698636e-05 -3.878791883e-08 -1.984975173e-06 -2.680377021e-07 --9.362698636e-05 -9.115661467e-06 -1.377802738e-07 -2.902370997e-06 -9.307107003e-08 --3.878791883e-08 -1.377802738e-07 -9.064172114e-11 -3.599574177e-09 -4.112149478e-10 --1.984975173e-06 -2.902370997e-06 -3.599574177e-09 -1.099957494e-07 -9.507079005e-09 --2.680377021e-07 -9.307107003e-08 -4.112149478e-10 -9.507079005e-09 -4.526987127e-10 -7.783799588e-07 -2.476608887e-05 -7.884029862e-09 -4.4372156e-07 -5.662764658e-08 --2.476608887e-05 -5.136136924e-06 5.364835916e-07 -2.716979192e-06 -8.598084219e-07 --7.884029862e-09 5.364835916e-07 -2.301098309e-11 1.055724422e-08 1.532086634e-09 --4.4372156e-07 -2.716979192e-06 1.055724422e-08 -1.043963958e-07 -2.421348697e-08 --5.662764658e-08 -8.598084219e-07 1.532086634e-09 -2.421348697e-08 -4.811854164e-09 -4.872860642e-06 -2.957065088e-05 -2.423991868e-08 -4.46402447e-07 -2.24706237e-08 --2.957065088e-05 -4.187590559e-06 4.219238242e-07 -1.706561417e-06 -7.561890556e-07 --2.423991868e-08 4.219238242e-07 -2.907181746e-10 8.828819988e-09 1.447555686e-09 --4.46402447e-07 -1.706561417e-06 8.828819988e-09 -6.527686296e-08 -1.940293245e-08 --2.24706237e-08 -7.561890556e-07 1.447555686e-09 -1.940293245e-08 -4.234580623e-09 --7.865518249e-07 -1.077617466e-06 -9.195872057e-09 -2.180651414e-08 6.971509886e-09 --1.077617466e-06 -5.538580659e-08 -1.963410629e-08 -3.39317123e-09 2.7019366e-08 --9.195872057e-09 -1.963410629e-08 -7.268136636e-11 -3.860625823e-10 -4.976102267e-12 --2.180651414e-08 -3.39317123e-09 -3.860625823e-10 -1.110136543e-10 5.18826196e-10 -6.971509886e-09 2.7019366e-08 -4.976102267e-12 5.18826196e-10 1.529383126e-10 -1.460242115e-08 -3.488476812e-10 4.403708097e-09 -1.734882083e-08 -5.95264363e-09 --3.488476812e-10 -3.612243643e-08 6.707573741e-09 -2.756359292e-08 -9.321659016e-09 -4.403708097e-09 6.707573741e-09 4.343360551e-11 4.355925287e-11 -1.066571197e-11 --1.734882083e-08 -2.756359292e-08 4.355925287e-11 -1.053191723e-09 -2.561870218e-10 --5.95264363e-09 -9.321659016e-09 -1.066571197e-11 -2.561870218e-10 -5.232375402e-11 -1.381870625e-07 -4.941465047e-06 -5.035291816e-10 -9.370435139e-08 -1.287835861e-08 --4.941465047e-06 -6.021004806e-07 4.066590294e-08 -2.277382058e-07 -7.803493111e-08 --5.035291816e-10 4.066590294e-08 -1.061248344e-12 7.98788531e-10 1.157552849e-10 --9.370435139e-08 -2.277382058e-07 7.98788531e-10 -8.684551109e-09 -2.136828999e-09 --1.287835861e-08 -7.803493111e-08 1.157552849e-10 -2.136828999e-09 -4.356340328e-10 --2.197680554e-07 -9.787106383e-07 -1.144481933e-09 -2.252104218e-08 -2.185012496e-09 --9.787106383e-07 -9.44552977e-08 -4.933766116e-09 -3.201925481e-08 4.843835022e-09 --1.144481933e-09 -4.933766116e-09 -5.953862443e-12 -1.146717579e-10 -1.082156286e-11 --2.252104218e-08 -3.201925481e-08 -1.146717579e-10 -1.214672444e-09 9.449908842e-12 --2.185012496e-09 4.843835022e-09 -1.082156286e-11 9.449908842e-12 2.809080493e-11 -1.733514276e-07 -1.565032625e-06 7.823895659e-10 -3.186400404e-08 -4.635866007e-09 --1.565032625e-06 -6.849560085e-08 -8.043549554e-09 2.051593711e-08 3.772047542e-09 -7.823895659e-10 -8.043549554e-09 3.463516994e-12 -1.622538871e-10 -2.355183557e-11 --3.186400404e-08 2.051593711e-08 -1.622538871e-10 8.29987617e-10 1.355667305e-10 --4.635866007e-09 3.772047542e-09 -2.355183557e-11 1.355667305e-10 2.183490427e-11 -0.00780054048 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.00531682413 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.007793324578 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.003003158698 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0004493253224 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -7.356225089e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --6.177710073e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --6.042349769e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.622789246e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.706412193e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.012733729e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -3.279909411e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --9.984863115e-08 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.007740243746 -0.119245355 0.001135415949 0 0 --0.119245355 0.06359016526 -0.0005688020927 0 0 -0.001135415949 -0.0005688020927 -0.04903203915 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.008574263837 0.04468635888 -0.0005326988196 0 0 -0.04468635888 0.04542131888 -0.0008120760921 0 0 --0.0005326988196 -0.0008120760921 -0.03056791867 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.001030685031 -0.03331032718 -0.0001519978232 0 0 --0.03331032718 -0.00036795441 -3.171044381e-05 0 0 --0.0001519978232 -3.171044381e-05 -0.0006129896712 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.002265314069 -0.02805002677 5.19479096e-05 0 0 --0.02805002677 -0.0006412307899 -0.0001218455117 0 0 -5.19479096e-05 -0.0001218455117 -0.0003132070516 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0005843250692 -0.001841656656 1.078465442e-05 0 0 --0.001841656656 -0.0001018682139 -1.110894566e-05 0 0 -1.078465442e-05 -1.110894566e-05 0.0001775074104 0 0 -0 0 0 0 0 -0 0 0 0 0 -9.723299582e-05 -0.0004622744446 -1.247542872e-05 0 0 --0.0004622744446 -0.0003916686053 1.042278073e-05 0 0 --1.247542872e-05 1.042278073e-05 0.0002301326402 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0001765890453 -0.0008194157406 -6.522970249e-06 0 0 --0.0008194157406 -3.324136593e-05 -2.315043373e-06 0 0 --6.522970249e-06 -2.315043373e-06 -1.71027922e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.726370736e-05 5.782426366e-05 5.639163257e-07 0 0 -5.782426366e-05 6.87460677e-05 -1.76223659e-06 0 0 -5.639163257e-07 -1.76223659e-06 -3.795361081e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -7.499203911e-05 -0.0002725316281 2.525977206e-06 0 0 --0.0002725316281 -3.098768371e-05 -3.913031144e-07 0 0 -2.525977206e-06 -3.913031144e-07 2.960446738e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.739316498e-05 -0.0001266393997 -1.550178773e-06 0 0 --0.0001266393997 -3.619562492e-05 1.156840946e-06 0 0 --1.550178773e-06 1.156840946e-06 1.609945653e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --4.87127609e-06 1.472621688e-05 -1.159377347e-06 0 0 -1.472621688e-05 -5.983495005e-06 7.717388397e-07 0 0 --1.159377347e-06 7.717388397e-07 -4.65413986e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 -4.383117819e-06 -6.105907851e-05 1.449656047e-07 0 0 --6.105907851e-05 -1.874112266e-06 -9.410585728e-08 0 0 -1.449656047e-07 -9.410585728e-08 -2.808660558e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 --8.642746621e-08 -2.801534732e-05 4.958244467e-07 0 0 --2.801534732e-05 -4.994711464e-06 4.685412701e-08 0 0 -4.958244467e-07 4.685412701e-08 6.424665359e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.006776836063 -0.003575980524 0.001092300523 0.05964658036 6.289613233e-05 --0.003575980524 0.07288479333 -0.0002655958349 -0.2144980744 -0.001067459067 -0.001092300523 -0.0002655958349 -0.05614349229 -0.001163692054 -0.2240874615 -0.05964658036 -0.2144980744 -0.001163692054 -0.1005432247 0.0001101484988 -6.289613233e-05 -0.001067459067 -0.2240874615 0.0001101484988 0.07799110381 --0.01119000704 0.09871088063 -0.0006397075853 0.03034170595 -8.901630374e-05 -0.09871088063 0.08687094524 -0.001282377881 -0.07275541705 0.0009961863137 --0.0006397075853 -0.001282377881 -0.05821264079 0.0004570191434 -0.08536773679 -0.03034170595 -0.07275541705 0.0004570191434 -0.02042525879 0.0001003171641 --8.901630374e-05 0.0009961863137 -0.08536773679 0.0001003171641 0.01594359159 --0.003789447092 0.03300203843 -0.0004142647992 0.0001083221555 0.0001691496229 -0.03300203843 0.01184133952 0.0001350394719 -0.01776515437 0.0001433877993 --0.0004142647992 0.0001350394719 -0.007467260132 0.0001978012091 -0.01850497813 -0.0001083221555 -0.01776515437 0.0001978012091 0.0006830913575 4.177216788e-06 -0.0001691496229 0.0001433877993 -0.01850497813 4.177216788e-06 -0.001602824894 -0.0005435109881 -0.01909743567 5.447610175e-05 -0.001155305095 -7.278546807e-05 --0.01909743567 -0.002350167618 -9.635014488e-05 -0.0009396656511 -7.347523842e-06 -5.447610175e-05 -9.635014488e-05 0.001201500835 -1.390640403e-05 -0.0006416724807 --0.001155305095 -0.0009396656511 -1.390640403e-05 0.0009710799176 5.966492012e-06 --7.278546807e-05 -7.347523842e-06 -0.0006416724807 5.966492012e-06 -0.0009042341277 -0.0004958596116 -0.00642095547 3.080977522e-05 0.0006244865706 -3.825312309e-05 --0.00642095547 -0.0008002468458 -5.638950383e-05 -0.0007341587721 -3.693712896e-06 -3.080977522e-05 -5.638950383e-05 0.0008560039234 -1.189296582e-05 -0.0006907646455 -0.0006244865706 -0.0007341587721 -1.189296582e-05 -0.0002880634318 -1.262193791e-06 --3.825312309e-05 -3.693712896e-06 -0.0006907646455 -1.262193791e-06 0.0001547074835 -0.0004501226269 -0.00347310407 -1.818839248e-05 -0.0002001213379 2.407882766e-06 --0.00347310407 -0.0005677939015 -1.220391209e-06 -0.000166908404 -6.087461383e-06 --1.818839248e-05 -1.220391209e-06 9.311338843e-05 -9.551075201e-07 -8.934278985e-05 --0.0002001213379 -0.000166908404 -9.551075201e-07 -8.12372218e-06 -2.403703733e-07 -2.407882766e-06 -6.087461383e-06 -8.934278985e-05 -2.403703733e-07 -1.307692307e-05 --1.444941473e-05 -0.0001480728151 -2.241577645e-06 1.49281118e-05 4.329398296e-08 --0.0001480728151 -1.116391306e-05 -1.831651072e-06 5.560378889e-06 2.899441451e-07 --2.241577645e-06 -1.831651072e-06 3.607973358e-08 2.952852776e-07 9.934710631e-06 -1.49281118e-05 5.560378889e-06 2.952852776e-07 9.486477565e-06 -1.156852137e-07 -4.329398296e-08 2.899441451e-07 9.934710631e-06 -1.156852137e-07 -1.053422744e-05 --4.630513262e-05 0.0001843675972 1.399179023e-06 6.173997196e-05 -1.26414468e-07 -0.0001843675972 0.0001632214073 -5.645171136e-06 -8.362067699e-05 2.094180547e-06 -1.399179023e-06 -5.645171136e-06 -4.952189884e-05 -1.885948913e-06 -0.0001203255354 -6.173997196e-05 -8.362067699e-05 -1.885948913e-06 -4.508058783e-05 5.858199286e-07 --1.26414468e-07 2.094180547e-06 -0.0001203255354 5.858199286e-07 4.272374077e-05 -4.468559214e-05 -0.0005514310902 -4.008745644e-07 -5.16637834e-05 5.626391894e-07 --0.0005514310902 -9.863762427e-05 5.967579187e-07 -5.321693307e-05 -2.380732244e-06 --4.008745644e-07 5.967579187e-07 3.380048483e-05 -1.019163781e-06 -3.877228612e-05 --5.16637834e-05 -5.321693307e-05 -1.019163781e-06 -2.451130542e-05 -1.745971308e-07 -5.626391894e-07 -2.380732244e-06 -3.877228612e-05 -1.745971308e-07 1.572051261e-05 -1.917308267e-06 -2.986715321e-06 -3.511832288e-07 3.060681856e-06 2.1297601e-07 --2.986715321e-06 -3.016730119e-05 1.498810284e-06 -2.491567398e-05 -7.876378585e-07 --3.511832288e-07 1.498810284e-06 1.233310425e-05 1.445460619e-07 -1.555684958e-05 -3.060681856e-06 -2.491567398e-05 1.445460619e-07 -1.207116193e-05 -1.611861901e-07 -2.1297601e-07 -7.876378585e-07 -1.555684958e-05 -1.611861901e-07 6.273371813e-06 -1.945444577e-06 2.012934e-05 -1.5968856e-07 8.953477761e-06 6.925593302e-10 -2.012934e-05 1.302303175e-05 -1.781055198e-08 -2.414328267e-05 3.640536485e-08 --1.5968856e-07 -1.781055198e-08 -1.481970645e-05 4.216663998e-08 -2.449610612e-05 -8.953477761e-06 -2.414328267e-05 4.216663998e-08 -1.194374669e-05 1.211067769e-08 -6.925593302e-10 3.640536485e-08 -2.449610612e-05 1.211067769e-08 9.272071166e-06 --1.155063595e-07 -4.46682355e-05 6.62115839e-07 2.560902119e-06 -2.92130832e-07 --4.46682355e-05 8.274625385e-06 -7.277076216e-07 -1.340375552e-05 1.369691047e-08 -6.62115839e-07 -7.277076216e-07 -7.045895739e-06 -3.15658749e-07 -1.592986775e-05 -2.560902119e-06 -1.340375552e-05 -3.15658749e-07 -8.660818186e-06 6.919241645e-08 --2.92130832e-07 1.369691047e-08 -1.592986775e-05 6.919241645e-08 7.692550495e-06 --7.497778327e-07 2.716302919e-06 -3.4949659e-08 2.11443175e-06 1.644639736e-07 -2.716302919e-06 -9.773975164e-06 5.864919734e-07 -1.851112245e-05 -4.115102962e-07 --3.4949659e-08 5.864919734e-07 6.008263926e-06 -1.142125848e-07 -1.575785069e-05 -2.11443175e-06 -1.851112245e-05 -1.142125848e-07 -9.254618372e-06 -4.831937574e-08 -1.644639736e-07 -4.115102962e-07 -1.575785069e-05 -4.831937574e-08 6.21239204e-06 -0.01713196725 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.02539244665 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.006680163896 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.002367614667 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0001010369664 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0001426832559 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -8.215666825e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -6.48004306e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.428531499e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.809126667e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --7.588403564e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.127912909e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --4.870681928e-07 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.09835545479 -0.03039156402 0.0002506513043 0 0 --0.03039156402 -0.01890138804 -0.0001166972695 0 0 -0.0002506513043 -0.0001166972695 5.843230264e-07 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.04039026074 0.01251474729 0.0001964066528 0 0 -0.01251474729 -0.002888671118 0.0001114141913 0 0 -0.0001964066528 0.0001114141913 5.772942875e-07 0 0 -0 0 0 0 0 -0 0 0 0 0 -2.03249794e-05 -0.0003484152428 2.188149636e-07 0 0 --0.0003484152428 -0.002778673645 2.8454734e-08 0 0 -2.188149636e-07 2.8454734e-08 7.234944401e-10 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.002869453701 0.00222203605 1.267043237e-05 0 0 -0.00222203605 0.0016537935 8.667627582e-06 0 0 -1.267043237e-05 8.667627582e-06 3.638294129e-08 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0001234246155 -0.0002116250589 -3.166986475e-07 0 0 --0.0002116250589 -0.0003075783454 -6.059129407e-07 0 0 --3.166986475e-07 -6.059129407e-07 -7.41054191e-10 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0002598096982 5.055059073e-05 6.066689556e-07 0 0 -5.055059073e-05 0.0003774656117 1.195061743e-06 0 0 -6.066689556e-07 1.195061743e-06 3.035311427e-09 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.221471562e-05 -3.854365729e-06 -7.212199666e-09 0 0 --3.854365729e-06 -9.057365754e-06 2.910374023e-08 0 0 --7.212199666e-09 2.910374023e-08 -6.579843232e-11 0 0 -0 0 0 0 0 -0 0 0 0 0 -7.827072084e-05 3.775485041e-05 2.072786812e-07 0 0 -3.775485041e-05 1.658494094e-05 9.046257245e-08 0 0 -2.072786812e-07 9.046257245e-08 4.931925708e-10 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.126644654e-05 -3.01601044e-05 -6.695732292e-08 0 0 --3.01601044e-05 7.096586837e-06 -1.387300219e-07 0 0 --6.695732292e-08 -1.387300219e-07 -1.723966402e-10 0 0 -0 0 0 0 0 -0 0 0 0 0 --4.866809454e-05 -4.356670654e-05 -4.666867917e-08 0 0 --4.356670654e-05 -2.295256931e-05 -1.814790237e-08 0 0 --4.666867917e-08 -1.814790237e-08 -9.959137228e-12 0 0 -0 0 0 0 0 -0 0 0 0 0 --6.145377777e-06 -1.244264963e-05 5.840926785e-10 0 0 --1.244264963e-05 -7.016592521e-06 2.125781824e-08 0 0 -5.840926785e-10 2.125781824e-08 2.211701783e-11 0 0 -0 0 0 0 0 -0 0 0 0 0 -3.315242686e-06 -7.306848061e-06 4.403846871e-09 0 0 --7.306848061e-06 -1.944240892e-06 -6.023620272e-09 0 0 -4.403846871e-09 -6.023620272e-09 5.098549638e-12 0 0 -0 0 0 0 0 -0 0 0 0 0 --5.6090657e-06 -1.222978041e-05 -1.178535572e-08 0 0 --1.222978041e-05 -6.539411502e-06 -2.884868852e-08 0 0 --1.178535572e-08 -2.884868852e-08 -2.426875653e-11 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.05664242547 0.04393621964 0.0001454675037 -0.01588745222 0.000154136528 -0.04393621964 -0.06478834226 4.509186777e-05 -0.05198493641 -0.0001577396951 -0.0001454675037 4.509186777e-05 3.271680835e-07 -6.797735291e-05 2.058457962e-07 --0.01588745222 -0.05198493641 -6.797735291e-05 -0.0114540522 -0.0001544727833 -0.000154136528 -0.0001577396951 2.058457962e-07 -0.0001544727833 -3.583115843e-07 -0.02106825047 0.03379403237 6.571166116e-05 0.002432636389 0.0001922861088 -0.03379403237 0.05000668878 0.0001098589703 0.005251941931 0.0002422276922 -6.571166116e-05 0.0001098589703 2.002268072e-07 6.155191055e-06 6.699764722e-07 -0.002432636389 0.005251941931 6.155191055e-06 -0.0001530164364 4.348190419e-05 -0.0001922861088 0.0002422276922 6.699764722e-07 4.348190419e-05 7.113451231e-07 -0.001090036638 0.002828334745 4.253687786e-06 0.0005820482259 9.743703022e-06 -0.002828334745 0.005069325314 6.391334736e-06 -0.0009017878612 2.788245724e-05 -4.253687786e-06 6.391334736e-06 7.088766855e-09 -2.666429318e-06 4.334641142e-08 -0.0005820482259 -0.0009017878612 -2.666429318e-06 -0.002252844794 7.966618004e-06 -9.743703022e-06 2.788245724e-05 4.334641142e-08 7.966618004e-06 8.411825818e-08 --0.0002053794868 0.000761489313 6.239575053e-07 0.0008780285047 7.818597551e-06 -0.000761489313 0.001600223406 3.764482489e-06 0.0009320318463 8.901951581e-06 -6.239575053e-07 3.764482489e-06 6.455325451e-09 3.086036162e-06 2.830806566e-08 -0.0008780285047 0.0009320318463 3.086036162e-06 0.0002103130257 2.443092916e-06 -7.818597551e-06 8.901951581e-06 2.830806566e-08 2.443092916e-06 2.691559976e-08 --5.979937798e-05 -0.0001863312416 -3.878199259e-07 -8.641446508e-05 -3.490510144e-08 --0.0001863312416 7.63122313e-06 -6.682184608e-07 0.0001083223106 1.897686438e-06 --3.878199259e-07 -6.682184608e-07 -2.019045716e-09 -2.136696734e-07 1.616269656e-09 --8.641446508e-05 0.0001083223106 -2.136696734e-07 0.0001174969195 1.237502159e-06 --3.490510144e-08 1.897686438e-06 1.616269656e-09 1.237502159e-06 6.823630892e-09 --0.0001185786442 -0.000201068663 -4.13815748e-07 -1.416537288e-05 5.578806071e-07 --0.000201068663 -0.00026904171 -5.544152875e-07 6.521632386e-05 1.79265393e-06 --4.13815748e-07 -5.544152875e-07 -1.142476946e-09 1.333450036e-07 3.6811213e-09 --1.416537288e-05 6.521632386e-05 1.333450036e-07 0.0001090569511 1.117443875e-06 -5.578806071e-07 1.79265393e-06 3.6811213e-09 1.117443875e-06 7.345419969e-09 --7.132761189e-06 3.257599883e-05 1.546733169e-08 2.957032777e-05 -6.598781384e-08 -3.257599883e-05 0.0001030280216 1.839368424e-07 5.739426858e-05 1.441034696e-08 -1.546733169e-08 1.839368424e-07 2.238392651e-10 1.304402227e-07 -1.47027184e-10 -2.957032777e-05 5.739426858e-05 1.304402227e-07 2.448776646e-05 5.425255613e-08 --6.598781384e-08 1.441034696e-08 -1.47027184e-10 5.425255613e-08 -2.834503616e-10 -3.594118622e-05 3.791093026e-05 1.171899747e-07 6.974073623e-08 3.109731535e-07 -3.791093026e-05 3.456630031e-05 1.204788574e-07 -6.439423766e-07 2.240154871e-07 -1.171899747e-07 1.204788574e-07 3.80299084e-10 -1.872640142e-10 9.538563206e-10 -6.974073623e-08 -6.439423766e-07 -1.872640142e-10 -9.4808032e-08 -1.31583664e-08 -3.109731535e-07 2.240154871e-07 9.538563206e-10 -1.31583664e-08 6.958931949e-10 --3.164414819e-06 -3.547391931e-05 -4.60267186e-08 -1.982653789e-05 -6.446460753e-08 --3.547391931e-05 -9.46056702e-05 -1.589789148e-07 -2.246053944e-05 -1.80251422e-07 --4.60267186e-08 -1.589789148e-07 -2.489485487e-10 -5.302711903e-08 -2.987152784e-10 --1.982653789e-05 -2.246053944e-05 -5.302711903e-08 7.498167133e-06 -4.630800603e-08 --6.446460753e-08 -1.80251422e-07 -2.987152784e-10 -4.630800603e-08 -3.424691131e-10 --3.161619306e-06 -1.633369447e-05 -2.441031498e-08 -8.110918179e-06 3.599470197e-09 --1.633369447e-05 -6.976531672e-05 -1.067291589e-07 -3.128946536e-05 1.160891559e-07 --2.441031498e-08 -1.067291589e-07 -1.627742121e-10 -4.855216051e-08 1.570425206e-10 --8.110918179e-06 -3.128946536e-05 -4.855216051e-08 -1.310226024e-05 8.001750894e-08 -3.599470197e-09 1.160891559e-07 1.570425206e-10 8.001750894e-08 6.461022538e-10 -7.35473882e-06 5.723762563e-06 2.05732282e-08 -1.762457635e-06 -1.701925796e-08 -5.723762563e-06 -3.001035169e-06 1.027016432e-08 -4.125035558e-06 8.360649829e-10 -2.05732282e-08 1.027016432e-08 5.312855598e-11 -7.050224143e-09 -3.676498849e-11 --1.762457635e-06 -4.125035558e-06 -7.050224143e-09 -5.945265827e-07 9.278781472e-09 --1.701925796e-08 8.360649829e-10 -3.676498849e-11 9.278781472e-09 1.278849235e-11 -8.30361629e-06 7.195872255e-06 2.330634381e-08 -1.65351291e-06 8.413726723e-09 -7.195872255e-06 -1.931557477e-06 1.46994887e-08 -4.293846427e-06 -2.913228579e-09 -2.330634381e-08 1.46994887e-08 6.171496903e-11 -6.566769685e-09 1.67465451e-11 --1.65351291e-06 -4.293846427e-06 -6.566769685e-09 -6.728638009e-07 -5.24990562e-09 -8.413726723e-09 -2.913228579e-09 1.67465451e-11 -5.24990562e-09 -4.224347533e-12 -1.218388828e-06 -4.723871462e-06 -3.079385547e-09 -3.836474999e-06 -1.100029486e-08 --4.723871462e-06 -2.598042253e-05 -3.520316125e-08 -1.113311761e-05 -2.234670852e-08 --3.079385547e-09 -3.520316125e-08 -4.238926394e-11 -1.798277688e-08 -4.137129612e-11 --3.836474999e-06 -1.113311761e-05 -1.798277688e-08 -3.189822149e-06 -3.524174507e-09 --1.100029486e-08 -2.234670852e-08 -4.137129612e-11 -3.524174507e-09 3.94518391e-12 --0.007951417174 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.01162898931 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.002422787134 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.001457206784 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.081627248e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -3.465637553e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.73778962e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.712245155e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --5.90686461e-07 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.574043427e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.645497741e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --8.851846967e-09 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -5.950052392e-07 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.04575806323 -0.0786095556 0.01974328601 0 0 --0.0786095556 0.0143388821 0.01284241031 0 0 -0.01974328601 0.01284241031 -0.005545338972 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.02233772061 -0.0007758396679 0.007060637623 0 0 --0.0007758396679 -2.651243741e-05 0.0002087625102 0 0 -0.007060637623 0.0002087625102 0.0008311514006 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0001638347047 -4.656643847e-05 -0.0003803183292 0 0 --4.656643847e-05 0.00120065521 0.001233222624 0 0 --0.0003803183292 0.001233222624 0.0005992724449 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.001387127395 0.0001819300585 0.001123287453 0 0 -0.0001819300585 0.0001927222373 -7.968163837e-05 0 0 -0.001123287453 -7.968163837e-05 -0.0008885045243 0 0 -0 0 0 0 0 -0 0 0 0 0 -8.16836117e-05 -9.227796085e-05 -4.928576276e-05 0 0 --9.227796085e-05 4.50627808e-05 4.990667042e-05 0 0 --4.928576276e-05 4.990667042e-05 2.917492708e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0001169972711 8.254622758e-06 3.490672607e-05 0 0 -8.254622758e-06 -5.554497729e-05 -7.733577544e-05 0 0 -3.490672607e-05 -7.733577544e-05 -0.0001030383138 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.648168228e-05 -4.056562599e-07 2.596665216e-05 0 0 --4.056562599e-07 5.910459838e-06 6.617226103e-07 0 0 -2.596665216e-05 6.617226103e-07 -1.845882468e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.386067114e-05 -1.249204633e-05 1.717483098e-05 0 0 --1.249204633e-05 5.469175961e-06 3.026640124e-06 0 0 -1.717483098e-05 3.026640124e-06 -7.624550606e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 -2.36035821e-05 -2.500944864e-05 -6.586873821e-06 0 0 --2.500944864e-05 -4.248642207e-06 -3.993910609e-06 0 0 --6.586873821e-06 -3.993910609e-06 -2.077888333e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 -2.094575678e-05 -1.875763487e-05 -1.076177147e-05 0 0 --1.875763487e-05 5.84995906e-06 7.023980621e-06 0 0 --1.076177147e-05 7.023980621e-06 4.905407513e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.442507864e-06 -7.744677477e-06 1.45308197e-06 0 0 --7.744677477e-06 1.017169332e-06 1.163354832e-06 0 0 -1.45308197e-06 1.163354832e-06 -3.72904769e-07 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.117897343e-06 -8.806002544e-06 8.391725551e-07 0 0 --8.806002544e-06 7.629272995e-07 9.076310566e-07 0 0 -8.391725551e-07 9.076310566e-07 -1.542024372e-07 0 0 -0 0 0 0 0 -0 0 0 0 0 -5.845877856e-06 -1.008491982e-05 -2.714913797e-06 0 0 --1.008491982e-05 2.403198074e-06 2.605425481e-06 0 0 --2.714913797e-06 2.605425481e-06 9.728263647e-07 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0294848068 -0.02620281988 0.03266156989 0.02003584984 0.02476983649 --0.02620281988 0.06841747753 0.05448827636 -0.01215989141 -0.02896562497 -0.03266156989 0.05448827636 -0.02911077762 -0.03051474662 -0.04159316195 -0.02003584984 -0.01215989141 -0.03051474662 -0.003823304683 -0.0001739596001 -0.02476983649 -0.02896562497 -0.04159316195 -0.0001739596001 0.007530134116 --0.01318343063 0.001921305227 0.01877272515 0.004958467153 0.002836649682 -0.001921305227 0.006832349655 -0.001028128144 -0.004543786223 -0.00224304527 -0.01877272515 -0.001028128144 -0.02632163304 -0.007978171129 -0.004478599529 -0.004958467153 -0.004543786223 -0.007978171129 0.0001879942585 -8.391549439e-05 -0.002836649682 -0.00224304527 -0.004478599529 -8.391549439e-05 -0.0001396829397 --0.00109882109 0.001243888621 0.001636792086 -0.0001030502873 -0.0002541092364 -0.001243888621 -0.001067315236 -0.001575740179 0.0003180343625 -0.0002802180285 -0.001636792086 -0.001575740179 -0.002212766992 0.0003172702278 -8.329453418e-05 --0.0001030502873 0.0003180343625 0.0003172702278 0.0001093334931 -0.0003593962979 --0.0002541092364 -0.0002802180285 -8.329453418e-05 -0.0003593962979 0.0008875055769 -0.000152005754 0.000251418878 0.0002366825762 0.0001721316013 -0.000451423295 -0.000251418878 0.0003485579623 0.0001201590479 8.272338223e-05 -0.0005149358102 -0.0002366825762 0.0001201590479 -0.0007254096613 -0.0005463738504 0.0002314040236 -0.0001721316013 8.272338223e-05 -0.0005463738504 -0.0004113609814 0.0001843549738 --0.000451423295 -0.0005149358102 0.0002314040236 0.0001843549738 0.0005426722293 -7.80787654e-05 -0.0001001335224 -7.636675696e-05 2.08350046e-05 3.890328778e-05 --0.0001001335224 -3.985322781e-05 -4.972806667e-05 -5.567342956e-05 0.0001093925661 --7.636675696e-05 -4.972806667e-05 -5.489160002e-05 -4.578596483e-05 0.000101729663 -2.08350046e-05 -5.567342956e-05 -4.578596483e-05 5.779724424e-07 3.778814976e-05 -3.890328778e-05 0.0001093925661 0.000101729663 3.778814976e-05 -0.0001313943953 -4.583263519e-05 -2.807189856e-05 -6.013770019e-05 -3.636383009e-06 -3.706067537e-06 --2.807189856e-05 1.700110115e-05 3.587770612e-05 1.057398053e-06 3.89129148e-06 --6.013770019e-05 3.587770612e-05 7.416311055e-05 -1.035231847e-06 1.291059144e-05 --3.636383009e-06 1.057398053e-06 -1.035231847e-06 -6.817937317e-06 1.014342884e-05 --3.706067537e-06 3.89129148e-06 1.291059144e-05 1.014342884e-05 -1.335136536e-05 -6.613651206e-06 1.19286093e-05 1.628926932e-05 1.004123395e-05 -1.981199665e-05 -1.19286093e-05 2.857242342e-06 -1.341340367e-05 -6.102547318e-06 -3.402920248e-06 -1.628926932e-05 -1.341340367e-05 -5.803106032e-05 -3.080447393e-05 2.535750676e-05 -1.004123395e-05 -6.102547318e-06 -3.080447393e-05 -1.617802667e-05 1.187801114e-05 --1.981199665e-05 -3.402920248e-06 2.535750676e-05 1.187801114e-05 3.3252996e-06 --2.095228419e-05 -1.238753527e-05 1.811569606e-05 8.729137871e-06 1.440166737e-05 --1.238753527e-05 1.438378836e-05 9.181245983e-06 -7.506308874e-06 -3.805787096e-07 -1.811569606e-05 9.181245983e-06 -1.5555406e-05 -6.654999613e-06 -1.182528647e-05 -8.729137871e-06 -7.506308874e-06 -6.654999613e-06 3.755050029e-06 -8.093305668e-07 -1.440166737e-05 -3.805787096e-07 -1.182528647e-05 -8.093305668e-07 -6.254035479e-06 -5.966375739e-06 -1.856636191e-05 -1.32014067e-05 1.998706124e-06 1.110363824e-05 --1.856636191e-05 2.369283361e-05 2.834474404e-05 -1.570296248e-06 -7.239387634e-06 --1.32014067e-05 2.834474404e-05 2.445081881e-05 -2.685060181e-06 -1.436198822e-05 -1.998706124e-06 -1.570296248e-06 -2.685060181e-06 3.532090643e-08 -6.251263817e-09 -1.110363824e-05 -7.239387634e-06 -1.436198822e-05 -6.251263817e-09 -1.224189909e-06 -1.045416535e-06 -4.730546512e-06 -3.230420718e-06 3.220703611e-07 3.185505972e-06 --4.730546512e-06 1.061813059e-05 1.227485922e-05 1.492683299e-06 -6.812604618e-06 --3.230420718e-06 1.227485922e-05 9.473420794e-06 -3.545223379e-07 -8.192467034e-06 -3.220703611e-07 1.492683299e-06 -3.545223379e-07 -7.075129116e-07 -1.097465599e-06 -3.185505972e-06 -6.812604618e-06 -8.192467034e-06 -1.097465599e-06 4.349682718e-06 --5.240679681e-06 -2.74187192e-06 5.483051156e-06 2.632093854e-06 3.282973176e-06 --2.74187192e-06 5.693119477e-06 3.690275361e-06 -1.845155326e-06 -1.540786226e-06 -5.483051156e-06 3.690275361e-06 -5.641927045e-06 -3.1252482e-06 -3.81039811e-06 -2.632093854e-06 -1.845155326e-06 -3.1252482e-06 1.347501658e-07 -1.758001628e-07 -3.282973176e-06 -1.540786226e-06 -3.81039811e-06 -1.758001628e-07 -5.670045837e-07 --3.780099939e-06 -2.990342398e-06 4.230474641e-06 2.509010284e-06 2.842980924e-06 --2.990342398e-06 7.799000683e-06 6.033945889e-06 -1.362594106e-06 -3.431557388e-06 -4.230474641e-06 6.033945889e-06 -4.024031366e-06 -3.69293422e-06 -4.683538262e-06 -2.509010284e-06 -1.362594106e-06 -3.69293422e-06 -5.629635124e-07 -1.627600289e-08 -2.842980924e-06 -3.431557388e-06 -4.683538262e-06 -1.627600289e-08 1.036454075e-06 --3.069792995e-07 -3.862952725e-06 -7.544051485e-07 1.062479146e-06 2.710448165e-06 --3.862952725e-06 7.009444804e-06 7.286518222e-06 -2.394440562e-07 -3.274808837e-06 --7.544051485e-07 7.286518222e-06 3.208269105e-06 -1.494723377e-06 -4.616813556e-06 -1.062479146e-06 -2.394440562e-07 -1.494723377e-06 -3.472845619e-07 -2.341064157e-07 -2.710448165e-06 -3.274808837e-06 -4.616813556e-06 -2.341064157e-07 1.193250514e-06 --0.007923874883 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.01151770907 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.002079371511 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.001631365138 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --9.323058964e-07 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.833714431e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --9.104313272e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.703922777e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.204989324e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.671081644e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -8.846342134e-07 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.358431943e-08 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -8.728931594e-07 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.04515613397 -0.08118481338 -0.01925768197 0 0 --0.08118481338 0.01428135596 -0.01348269678 0 0 --0.01925768197 -0.01348269678 -0.005423854529 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.02385648312 -0.001490085486 -0.007686436356 0 0 --0.001490085486 -6.064580648e-05 -0.0001698076792 0 0 --0.007686436356 -0.0001698076792 0.0004927354877 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0003280463634 4.107956144e-06 0.0004456687678 0 0 -4.107956144e-06 0.001227174059 -0.001295858604 0 0 -0.0004456687678 -0.001295858604 0.0007511042539 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.001343976294 0.0001594857004 -0.001152516913 0 0 -0.0001594857004 0.0002654883136 2.390014502e-05 0 0 --0.001152516913 2.390014502e-05 -0.0009435432243 0 0 -0 0 0 0 0 -0 0 0 0 0 -7.808765078e-05 -6.681292433e-05 3.098348165e-05 0 0 --6.681292433e-05 5.93529138e-06 -8.913237972e-06 0 0 -3.098348165e-05 -8.913237972e-06 6.249493298e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0001173651534 7.067240963e-06 -2.939439096e-05 0 0 -7.067240963e-06 -4.671002136e-05 6.706239937e-05 0 0 --2.939439096e-05 6.706239937e-05 -9.315453127e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --4.811827533e-05 4.586339231e-06 -3.696113779e-05 0 0 -4.586339231e-06 6.12816258e-06 1.867413698e-06 0 0 --3.696113779e-05 1.867413698e-06 -2.797354802e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.035230512e-05 -1.499425246e-05 -1.316302634e-05 0 0 --1.499425246e-05 3.145814694e-06 -2.183773728e-06 0 0 --1.316302634e-05 -2.183773728e-06 -3.940978024e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 -2.909192103e-05 -2.551143677e-05 8.39159201e-06 0 0 --2.551143677e-05 -3.697540366e-06 3.286111165e-06 0 0 -8.39159201e-06 3.286111165e-06 -1.926109391e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.871898209e-05 -1.738346992e-05 9.847700841e-06 0 0 --1.738346992e-05 6.004122597e-06 -7.093671667e-06 0 0 -9.847700841e-06 -7.093671667e-06 4.765621374e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 --5.620300069e-06 -7.332096331e-06 -2.180545788e-06 0 0 --7.332096331e-06 5.165656551e-07 -6.842054263e-07 0 0 --2.180545788e-06 -6.842054263e-07 -3.830231583e-07 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.895774457e-06 -9.023737851e-06 -7.639030581e-07 0 0 --9.023737851e-06 1.018483342e-06 -1.152380186e-06 0 0 --7.639030581e-07 -1.152380186e-06 -1.675182613e-07 0 0 -0 0 0 0 0 -0 0 0 0 0 -6.859674087e-06 -9.977025087e-06 3.151641885e-06 0 0 --9.977025087e-06 2.32547213e-06 -2.61323637e-06 0 0 -3.151641885e-06 -2.61323637e-06 1.129310137e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.02915914345 -0.02733100872 -0.03176623178 0.01980571824 -0.02485833873 --0.02733100872 0.06858723318 -0.05546014823 -0.01128159788 0.02876548402 --0.03176623178 -0.05546014823 -0.02760310524 0.0297141136 -0.04127683159 -0.01980571824 -0.01128159788 0.0297141136 -0.003997034099 0.0003893432246 --0.02485833873 0.02876548402 -0.04127683159 0.0003893432246 0.007583731792 --0.01388352148 0.00135519562 -0.01940982416 0.005344608297 -0.003292846121 -0.00135519562 0.00824747372 -0.0002623881693 -0.004629368813 0.002708783065 --0.01940982416 -0.0002623881693 -0.02658062533 0.008529364401 -0.005218081791 -0.005344608297 -0.004629368813 0.008529364401 -4.392424762e-05 9.735503162e-05 --0.003292846121 0.002708783065 -0.005218081791 9.735503162e-05 -0.0001008350625 --0.001356837856 0.001347965725 -0.001963319872 -6.482940961e-05 0.0001982251356 -0.001347965725 -0.001134297924 0.001765149744 0.0002380160045 0.0002178585116 --0.001963319872 0.001765149744 -0.002673217176 -0.0002508734126 -8.843245071e-05 --6.482940961e-05 0.0002380160045 -0.0002508734126 0.0001440348302 0.0003609974872 -0.0001982251356 0.0002178585116 -8.843245071e-05 0.0003609974872 0.0008109017996 -0.0002004236729 0.0002682533787 -0.0001729853618 0.0001561831245 0.0004829690608 -0.0002682533787 0.0003529818389 -0.0001646395698 0.0001512353361 0.0005898498191 --0.0001729853618 -0.0001646395698 -0.0005893847449 0.0005035638589 0.0002078894369 -0.0001561831245 0.0001512353361 0.0005035638589 -0.000429959452 -0.0001635312457 -0.0004829690608 0.0005898498191 0.0002078894369 -0.0001635312457 0.0006354621542 -0.0001068919152 -0.0001092068216 9.127341298e-05 2.776191367e-05 -2.75705451e-05 --0.0001092068216 -4.889927472e-05 6.346385645e-05 -7.263707531e-05 -0.0001366853267 -9.127341298e-05 6.346385645e-05 -7.510769422e-05 6.694280871e-05 0.0001374510802 -2.776191367e-05 -7.263707531e-05 6.694280871e-05 -5.00485462e-06 -5.264348546e-05 --2.75705451e-05 -0.0001366853267 0.0001374510802 -5.264348546e-05 -0.0001622431733 -3.48512393e-05 -2.005342298e-05 4.851361824e-05 -4.464256628e-06 3.163052662e-06 --2.005342298e-05 1.105773047e-05 -2.847696182e-05 4.085823924e-06 -1.828804362e-07 -4.851361824e-05 -2.847696182e-05 6.687484595e-05 -4.441220153e-06 6.31646026e-06 --4.464256628e-06 4.085823924e-06 -4.441220153e-06 -4.212888673e-06 -5.568542939e-06 -3.163052662e-06 -1.828804362e-07 6.31646026e-06 -5.568542939e-06 -5.284898452e-06 -8.647050562e-06 1.22310819e-05 -1.510403273e-05 1.066930603e-05 2.213368854e-05 -1.22310819e-05 3.949623431e-06 1.186435542e-05 -5.113239328e-06 5.051614497e-06 --1.510403273e-05 1.186435542e-05 -5.63188482e-05 3.165037398e-05 2.668601569e-05 -1.066930603e-05 -5.113239328e-06 3.165037398e-05 -1.741241582e-05 -1.242462726e-05 -2.213368854e-05 5.051614497e-06 2.668601569e-05 -1.242462726e-05 5.020079801e-06 --2.043549597e-05 -1.753344966e-05 -1.508319477e-05 8.894638235e-06 -1.812710078e-05 --1.753344966e-05 1.55010606e-05 -1.164714455e-05 -8.851377071e-06 -2.628300247e-06 --1.508319477e-05 -1.164714455e-05 -1.107789879e-05 5.866694252e-06 -1.283181975e-05 -8.894638235e-06 -8.851377071e-06 5.866694252e-06 5.023291642e-06 9.153657737e-07 --1.812710078e-05 -2.628300247e-06 -1.283181975e-05 9.153657737e-07 -1.061058745e-05 -6.408053146e-06 -1.674702789e-05 1.339328905e-05 1.127785507e-06 -9.7908264e-06 --1.674702789e-05 2.30852334e-05 -2.820493385e-05 -2.501097595e-08 8.908980873e-06 -1.339328905e-05 -2.820493385e-05 2.575878378e-05 1.396654359e-06 -1.498174633e-05 -1.127785507e-06 -2.501097595e-08 1.396654359e-06 -2.144497292e-07 6.33573737e-07 --9.7908264e-06 8.908980873e-06 -1.498174633e-05 6.33573737e-07 1.509061836e-06 -5.068905941e-07 -3.709318801e-06 1.921165886e-06 5.083844904e-07 -2.482001184e-06 --3.709318801e-06 8.458191156e-06 -9.423591425e-06 1.00834676e-06 5.417993028e-06 -1.921165886e-06 -9.423591425e-06 6.131655174e-06 7.538795366e-07 -6.245638582e-06 -5.083844904e-07 1.00834676e-06 7.538795366e-07 -6.867267407e-07 7.358501091e-07 --2.482001184e-06 5.417993028e-06 -6.245638582e-06 7.358501091e-07 3.460533663e-06 --5.67618445e-06 -3.066134986e-06 -5.734832442e-06 2.689483789e-06 -3.599168381e-06 --3.066134986e-06 5.757257638e-06 -3.776629301e-06 -1.970876082e-06 1.311817904e-06 --5.734832442e-06 -3.776629301e-06 -5.731931134e-06 3.030758829e-06 -3.934490023e-06 -2.689483789e-06 -1.970876082e-06 3.030758829e-06 3.067731245e-07 2.016847187e-07 --3.599168381e-06 1.311817904e-06 -3.934490023e-06 2.016847187e-07 -8.521395869e-07 --3.218879771e-06 -3.237687036e-06 -3.509529553e-06 2.348855007e-06 -2.761879194e-06 --3.237687036e-06 8.255822149e-06 -6.806536422e-06 -1.028715922e-06 3.902528992e-06 --3.509529553e-06 -6.806536422e-06 -2.893912893e-06 3.526127234e-06 -4.912584788e-06 -2.348855007e-06 -1.028715922e-06 3.526127234e-06 -7.14990448e-07 4.744193459e-08 --2.761879194e-06 3.902528992e-06 -4.912584788e-06 4.744193459e-08 1.506891992e-06 --3.468702648e-07 -3.637168395e-06 5.931674106e-07 1.019234762e-06 -2.520174781e-06 --3.637168395e-06 6.311482877e-06 -6.525607739e-06 -2.707603786e-07 2.840053442e-06 -5.931674106e-07 -6.525607739e-06 2.640222183e-06 1.39915392e-06 -4.08195092e-06 -1.019234762e-06 -2.707603786e-07 1.39915392e-06 -2.933989523e-07 1.903548719e-07 --2.520174781e-06 2.840053442e-06 -4.08195092e-06 1.903548719e-07 9.584340711e-07 --0.05167482111 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.06574267786 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.01243044652 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0001005796204 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -5.979780871e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0003262026191 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.677534424e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0002209875871 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -6.631097991e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.582191136e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --9.880799355e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --4.568458848e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.040047881e-07 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.01486931205 0.00617305182 7.72081239e-05 0 0 -0.00617305182 0.1611177061 -0.0002454496245 0 0 -7.72081239e-05 -0.0002454496245 -1.22686272e-07 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.02884723166 -0.06076264294 0.0002267332935 0 0 --0.06076264294 -0.1140391545 0.0003373072472 0 0 -0.0002267332935 0.0003373072472 -3.714227183e-07 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.01634424313 -0.04238684994 0.0001666730377 0 0 --0.04238684994 -0.1097333061 0.0004157198447 0 0 -0.0001666730377 0.0004157198447 -2.766884682e-07 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.002936378384 -0.009219251398 3.356191881e-05 0 0 --0.009219251398 -0.02816807923 0.0001213313609 0 0 -3.356191881e-05 0.0001213313609 -5.598164122e-08 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.000409375701 0.0008220196022 -3.142985926e-06 0 0 -0.0008220196022 0.00142321827 -4.233148657e-06 0 0 --3.142985926e-06 -4.233148657e-06 5.14154176e-09 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0006320924452 0.001742784709 -2.485420021e-06 0 0 -0.001742784709 0.004786713667 -6.521836778e-06 0 0 --2.485420021e-06 -6.521836778e-06 3.834113973e-09 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0003386114781 0.001127660902 -1.034370851e-06 0 0 -0.001127660902 0.003722114139 -3.676962658e-06 0 0 --1.034370851e-06 -3.676962658e-06 1.53888981e-09 0 0 -0 0 0 0 0 -0 0 0 0 0 --4.523704572e-05 -0.0001396127549 2.844691584e-07 0 0 --0.0001396127549 -0.0004302773372 9.062414749e-07 0 0 -2.844691584e-07 9.062414749e-07 -4.592061643e-10 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0001077773069 -0.000285405805 8.719614079e-07 0 0 --0.000285405805 -0.0007498736072 2.12671688e-06 0 0 -8.719614079e-07 2.12671688e-06 -1.430778246e-09 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.709377826e-05 -6.180465105e-05 1.970571289e-07 0 0 --6.180465105e-05 -0.0002088659143 8.80885177e-07 0 0 -1.970571289e-07 8.80885177e-07 -3.288038916e-10 0 0 -0 0 0 0 0 -0 0 0 0 0 -6.828046315e-06 2.656991129e-05 -5.181653503e-08 0 0 -2.656991129e-05 9.462763798e-05 -2.536305861e-07 0 0 --5.181653503e-08 -2.536305861e-07 8.47062318e-11 0 0 -0 0 0 0 0 -0 0 0 0 0 -2.927854438e-06 5.928224014e-06 -1.767784461e-08 0 0 -5.928224014e-06 1.042471051e-05 -2.467684555e-08 0 0 --1.767784461e-08 -2.467684555e-08 2.844889416e-11 0 0 -0 0 0 0 0 -0 0 0 0 0 -5.597221059e-06 2.195326709e-05 -1.273953319e-08 0 0 -2.195326709e-05 8.096574387e-05 -5.752414058e-08 0 0 --1.273953319e-08 -5.752414058e-08 1.788107829e-11 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.01173801515 -0.01067268187 1.277898364e-05 -0.0228467666 2.574337576e-05 --0.01067268187 0.005836352291 -3.563398568e-06 0.01849803238 -1.058766311e-05 -1.277898364e-05 -3.563398568e-06 -2.866630426e-09 -2.013406118e-05 1.325897484e-09 --0.0228467666 0.01849803238 -2.013406118e-05 0.04313035803 -4.256569781e-05 -2.574337576e-05 -1.058766311e-05 1.325897484e-09 -4.256569781e-05 1.397055241e-08 -0.004123507354 -0.0006224012376 1.604402649e-05 -0.006181717487 -1.026872613e-05 --0.0006224012376 -0.006349421117 2.163102805e-05 -0.002477264075 -6.375165423e-06 -1.604402649e-05 2.163102805e-05 -2.736215648e-08 -1.132168562e-05 -1.03702401e-08 --0.006181717487 -0.002477264075 -1.132168562e-05 0.007462251237 1.11996718e-05 --1.026872613e-05 -6.375165423e-06 -1.03702401e-08 1.11996718e-05 1.582446087e-08 --0.001375044897 0.003269116528 -1.359708263e-05 0.003612025153 9.479315517e-06 -0.003269116528 -0.006044661951 4.545958126e-05 -0.007535384294 -3.783582368e-05 --1.359708263e-05 4.545958126e-05 -3.461462633e-08 4.371537891e-05 -2.257065274e-08 -0.003612025153 -0.007535384294 4.371537891e-05 -0.008847511075 -3.421779315e-05 -9.479315517e-06 -3.783582368e-05 -2.257065274e-08 -3.421779315e-05 7.014063205e-08 --0.0006002820936 0.000613676381 -1.874947094e-05 0.0009289616252 2.170198763e-05 -0.000613676381 -0.0004808993369 2.829790286e-05 -0.0007432515627 -3.3296026e-05 --1.874947094e-05 2.829790286e-05 -1.651567041e-08 4.188370712e-05 -1.466832156e-08 -0.0009289616252 -0.0007432515627 4.188370712e-05 -0.001146648341 -4.924311885e-05 -2.170198763e-05 -3.3296026e-05 -1.466832156e-08 -4.924311885e-05 5.808866259e-08 --3.766332552e-06 -5.572802405e-05 -2.896001181e-06 -8.304320254e-05 3.77720239e-06 --5.572802405e-05 0.0001350707894 3.359706079e-06 0.0002203911381 -4.464746545e-06 --2.896001181e-06 3.359706079e-06 -1.623119934e-09 5.926931131e-06 -1.867304301e-09 --8.304320254e-05 0.0002203911381 5.926931131e-06 0.0003572814865 -7.855336481e-06 -3.77720239e-06 -4.464746545e-06 -1.867304301e-09 -7.855336481e-06 7.639290414e-09 --2.186392652e-05 6.069935434e-05 -1.14991037e-07 6.67259768e-05 8.622204503e-09 -6.069935434e-05 -0.0001428103155 4.075065435e-07 -0.0001745238158 -1.126240248e-07 --1.14991037e-07 4.075065435e-07 -3.017071354e-10 3.877582517e-07 -2.591781517e-10 -6.67259768e-05 -0.0001745238158 3.877582517e-07 -0.000199166198 -6.330994072e-08 -8.622204503e-09 -1.126240248e-07 -2.591781517e-10 -6.330994072e-08 3.025819631e-10 --1.134368977e-05 8.631751615e-06 -9.494651657e-07 1.368190133e-05 1.177148521e-06 -8.631751615e-06 -1.644864115e-06 1.345001153e-06 -3.044593486e-06 -1.68042508e-06 --9.494651657e-07 1.345001153e-06 -7.550665684e-10 2.076612721e-06 -6.937878126e-10 -1.368190133e-05 -3.044593486e-06 2.076612721e-06 -5.480295529e-06 -2.593874917e-06 -1.177148521e-06 -1.68042508e-06 -6.937878126e-10 -2.593874917e-06 2.914687769e-09 --5.510922052e-06 2.905683052e-06 -2.729070154e-07 4.85936826e-06 3.335217656e-07 -2.905683052e-06 2.228505673e-06 3.676577761e-07 3.239218645e-06 -4.567033848e-07 --2.729070154e-07 3.676577761e-07 -1.99910725e-10 5.858413234e-07 -1.951776096e-10 -4.85936826e-06 3.239218645e-06 5.858413234e-07 4.664853553e-06 -7.273554716e-07 -3.335217656e-07 -4.567033848e-07 -1.951776096e-10 -7.273554716e-07 7.901388126e-10 -7.397995178e-07 5.012707098e-07 -5.460505901e-09 -1.053173526e-06 7.979984185e-09 -5.012707098e-07 -5.641723881e-06 -1.522066879e-08 -4.685726978e-06 3.451834079e-08 --5.460505901e-09 -1.522066879e-08 1.811412825e-11 1.228117821e-10 -2.829321563e-12 --1.053173526e-06 -4.685726978e-06 1.228117821e-10 -1.13852321e-06 7.972030181e-09 -7.979984185e-09 3.451834079e-08 -2.829321563e-12 7.972030181e-09 -5.560683356e-11 -3.617493534e-06 -5.517515639e-06 -1.401135874e-07 -8.773706549e-06 1.961123617e-07 --5.517515639e-06 8.148773646e-06 1.753449036e-07 1.306487029e-05 -2.469335911e-07 --1.401135874e-07 1.753449036e-07 -9.037987389e-11 2.942229492e-07 -9.054945992e-11 --8.773706549e-06 1.306487029e-05 2.942229492e-07 2.090243635e-05 -4.136081474e-07 -1.961123617e-07 -2.469335911e-07 -9.054945992e-11 -4.136081474e-07 4.21999635e-10 --1.005748878e-06 1.62201955e-06 -2.008728147e-08 2.163303256e-06 2.121273879e-08 -1.62201955e-06 -2.373052594e-06 4.19118516e-08 -3.286782002e-06 -4.553609097e-08 --2.008728147e-08 4.19118516e-08 -2.831070423e-11 5.112487823e-08 -2.010162515e-11 -2.163303256e-06 -3.286782002e-06 5.112487823e-08 -4.484978656e-06 -5.50510722e-08 -2.121273879e-08 -4.553609097e-08 -2.010162515e-11 -5.50510722e-08 8.073189739e-11 --3.945593299e-07 1.158345679e-06 -7.480194122e-10 1.281958013e-06 -1.651822795e-09 -1.158345679e-06 -2.995355928e-06 2.3232841e-09 -3.642457165e-06 5.154500976e-09 --7.480194122e-10 2.3232841e-09 -1.378169338e-12 2.468404763e-09 -3.035798353e-12 -1.281958013e-06 -3.642457165e-06 2.468404763e-09 -4.129005891e-06 5.45807991e-09 --1.651822795e-09 5.154500976e-09 -3.035798353e-12 5.45807991e-09 -6.685711543e-12 -1.10139542e-06 -1.218388681e-06 1.401115514e-09 -2.12785172e-06 2.410873451e-09 --1.218388681e-06 1.329431025e-06 -1.39630708e-09 2.35698756e-06 -2.476040025e-09 -1.401115514e-09 -1.39630708e-09 4.980066607e-13 -2.732894219e-09 1.470858225e-12 --2.12785172e-06 2.35698756e-06 -2.732894219e-09 4.11039794e-06 -4.690014411e-09 -2.410873451e-09 -2.476040025e-09 1.470858225e-12 -4.690014411e-09 3.293815432e-12 --0.02448470597 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.02541610372 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.007631025207 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.003827021899 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -7.280678188e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0001313900767 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -5.553726607e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.390261254e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -2.041993493e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -5.144144138e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.481843675e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.451723763e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -7.694565647e-07 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0573866176 -0.0264028563 9.094565819e-05 0 0 --0.0264028563 0.08564584641 -0.0002120552334 0 0 -9.094565819e-05 -0.0002120552334 5.150584179e-07 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.01598697328 -0.03460490624 0.0001818581206 0 0 --0.03460490624 -0.04150376808 8.90850432e-05 0 0 -0.0001818581206 8.90850432e-05 7.083528072e-07 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0005664631434 0.0006267769465 4.576880743e-06 0 0 -0.0006267769465 -0.002850954119 1.395615716e-05 0 0 -4.576880743e-06 1.395615716e-05 1.46729234e-08 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.004475228568 -0.001598443761 -5.218966403e-06 0 0 --0.001598443761 -0.0002578101727 -1.108574692e-06 0 0 --5.218966403e-06 -1.108574692e-06 -4.263330028e-09 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0001279684787 -8.043724463e-05 -2.616904996e-08 0 0 --8.043724463e-05 0.0003437011133 3.429237918e-07 0 0 --2.616904996e-08 3.429237918e-07 3.2222005e-10 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0001615590504 0.0003340482023 3.393146154e-07 0 0 -0.0003340482023 0.0005155250919 6.518196316e-07 0 0 -3.393146154e-07 6.518196316e-07 6.985077337e-10 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.550069189e-05 7.684168114e-06 -1.779861313e-08 0 0 -7.684168114e-06 4.608555281e-06 1.327830366e-09 0 0 --1.779861313e-08 1.327830366e-09 -1.376298859e-11 0 0 -0 0 0 0 0 -0 0 0 0 0 -2.097795283e-05 -3.896887133e-05 3.125648263e-07 0 0 --3.896887133e-05 -2.875841831e-05 2.259222476e-08 0 0 -3.125648263e-07 2.259222476e-08 1.059698176e-09 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.880463151e-05 3.99449623e-05 2.851481038e-08 0 0 -3.99449623e-05 7.204229377e-05 5.610076384e-08 0 0 -2.851481038e-08 5.610076384e-08 4.167870668e-11 0 0 -0 0 0 0 0 -0 0 0 0 0 -3.266635902e-05 4.251013952e-05 7.198607909e-08 0 0 -4.251013952e-05 5.43976322e-05 9.587042971e-08 0 0 -7.198607909e-08 9.587042971e-08 1.534270271e-10 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.825821286e-06 6.470295669e-06 -9.145243482e-09 0 0 -6.470295669e-06 2.285568031e-05 -3.49058769e-08 0 0 --9.145243482e-09 -3.49058769e-08 -3.894867367e-11 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.447224935e-06 3.910356387e-06 3.620886519e-10 0 0 -3.910356387e-06 1.489610033e-05 -1.462287202e-08 0 0 -3.620886519e-10 -1.462287202e-08 9.274795237e-12 0 0 -0 0 0 0 0 -0 0 0 0 0 -3.01499728e-06 8.67896707e-06 2.405819912e-09 0 0 -8.67896707e-06 2.067063475e-05 3.296127e-09 0 0 -2.405819912e-09 3.296127e-09 -1.134455377e-12 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.04285556915 -0.04918206695 8.32974328e-05 0.003840707601 -0.0001031297001 --0.04918206695 0.06640903909 -0.0001660985799 0.05671268844 0.0001276768066 -8.32974328e-05 -0.0001660985799 3.955422815e-07 -0.0001188827981 -3.236327084e-07 -0.003840707601 0.05671268844 -0.0001188827981 0.02192505795 0.0001139920316 --0.0001031297001 0.0001276768066 -3.236327084e-07 0.0001139920316 2.445420109e-07 --0.01563626615 -0.03568862346 0.0001172363954 -0.005368564559 -0.000101372723 --0.03568862346 -0.06167123695 7.251537132e-05 -0.01076943587 -0.0001540817965 -0.0001172363954 7.251537132e-05 1.044206037e-06 2.562180279e-05 -1.990894103e-09 --0.005368564559 -0.01076943587 2.562180279e-05 -0.001731951491 -2.900828009e-05 --0.000101372723 -0.0001540817965 -1.990894103e-09 -2.900828009e-05 -3.552599275e-07 --4.844833421e-05 -0.001656570171 1.289974295e-05 -1.27273887e-05 -6.080553201e-06 --0.001656570171 -0.01258735113 4.206762509e-05 -0.0030719956 -3.519480531e-05 -1.289974295e-05 4.206762509e-05 1.791623395e-07 2.727047354e-05 5.471299103e-08 --1.27273887e-05 -0.0030719956 2.727047354e-05 0.0001544773834 -1.193482381e-05 --6.080553201e-06 -3.519480531e-05 5.471299103e-08 -1.193482381e-05 -8.602907247e-08 --0.001928835937 -0.0003286257449 -1.000232456e-05 -0.0003497826911 -3.789545921e-07 --0.0003286257449 0.001066592422 -4.422200702e-06 -0.0001526095558 2.124333169e-06 --1.000232456e-05 -4.422200702e-06 -4.528775883e-08 -1.588647538e-06 -7.265007498e-09 --0.0003497826911 -0.0001526095558 -1.588647538e-06 -5.572387859e-05 -2.500895058e-07 --3.789545921e-07 2.124333169e-06 -7.265007498e-09 -2.500895058e-07 4.193629891e-09 --0.0002019589518 -0.000532241032 -1.174287868e-06 -0.000328999337 -1.16423906e-06 --0.000532241032 0.001239352604 -5.00711403e-07 0.0004691682326 9.618039824e-07 --1.174287868e-06 -5.00711403e-07 -4.281031001e-09 -6.01037863e-07 -2.812669489e-09 --0.000328999337 0.0004691682326 -6.01037863e-07 0.0001398405774 1.416114685e-07 --1.16423906e-06 9.618039824e-07 -2.812669489e-09 1.416114685e-07 -5.642714531e-10 -0.0001828737381 0.0002878267533 1.007247042e-06 0.0001011209445 4.343335166e-07 -0.0002878267533 0.0003047407163 1.654987816e-06 7.139982617e-05 3.394907775e-07 -1.007247042e-06 1.654987816e-06 5.515060069e-09 5.981977153e-07 2.553952447e-09 -0.0001011209445 7.139982617e-05 5.981977153e-07 3.977131305e-06 3.650418486e-08 -4.343335166e-07 3.394907775e-07 2.553952447e-09 3.650418486e-08 2.329495374e-10 --2.531619304e-05 -1.465705738e-05 5.213367728e-08 -9.911296937e-06 -8.466373586e-08 --1.465705738e-05 7.536862744e-06 1.489675749e-07 -5.663304969e-06 -6.641904786e-08 -5.213367728e-08 1.489675749e-07 7.732476263e-10 2.09658968e-08 4.533741537e-11 --9.911296937e-06 -5.663304969e-06 2.09658968e-08 -3.879925156e-06 -3.322726603e-08 --8.466373586e-08 -6.641904786e-08 4.533741537e-11 -3.322726603e-08 -2.642365385e-10 -2.881311556e-05 -4.354042462e-05 3.699287922e-07 -1.251055858e-05 -1.091132779e-07 --4.354042462e-05 -7.082490026e-05 5.602612761e-08 -5.233948477e-06 -1.481551078e-07 -3.699287922e-07 5.602612761e-08 1.980702449e-09 -5.195256923e-08 8.348291099e-12 --1.251055858e-05 -5.233948477e-06 -5.195256923e-08 1.1669791e-06 -7.933504944e-09 --1.091132779e-07 -1.481551078e-07 8.348291099e-12 -7.933504944e-09 -3.04067387e-10 -4.203631673e-06 4.61848101e-05 7.195180095e-08 2.732241204e-05 7.884504333e-08 -4.61848101e-05 8.624306333e-05 4.136710386e-07 3.85704922e-05 6.1299757e-08 -7.195180095e-08 4.136710386e-07 8.943773011e-10 2.335835228e-07 6.293171494e-10 -2.732241204e-05 3.85704922e-05 2.335835228e-07 1.508461763e-05 1.247009823e-08 -7.884504333e-08 6.1299757e-08 6.293171494e-10 1.247009823e-08 -5.958204199e-11 -6.393329686e-07 5.556080406e-06 1.049970748e-08 2.266237274e-06 4.696822341e-09 -5.556080406e-06 4.707793904e-05 8.610730535e-08 2.020573016e-05 4.596096322e-08 -1.049970748e-08 8.610730535e-08 1.505461329e-10 3.939514654e-08 9.904146591e-11 -2.266237274e-06 2.020573016e-05 3.939514654e-08 7.816611075e-06 1.447021548e-08 -4.696822341e-09 4.596096322e-08 9.904146591e-11 1.447021548e-08 1.258257653e-11 --3.57664528e-06 -7.753743978e-06 2.736733592e-08 -7.833953604e-07 -1.923833199e-08 --7.753743978e-06 3.731673706e-06 -2.358709134e-08 5.42017777e-06 7.932985014e-09 -2.736733592e-08 -2.358709134e-08 1.252974927e-10 -2.274052174e-08 -5.317123832e-11 --7.833953604e-07 5.42017777e-06 -2.274052174e-08 2.295339842e-06 1.298886452e-08 --1.923833199e-08 7.932985014e-09 -5.317123832e-11 1.298886452e-08 1.647881921e-11 --7.558636724e-06 -6.747180913e-06 -3.408243905e-09 2.319084221e-08 -1.254433336e-08 --6.747180913e-06 1.807557092e-06 -1.603086943e-08 4.201730187e-06 3.307862069e-09 --3.408243905e-09 -1.603086943e-08 2.00076478e-11 -6.924743592e-09 -2.971704853e-11 -2.319084221e-08 4.201730187e-06 -6.924743592e-09 2.232383471e-06 7.783679817e-09 --1.254433336e-08 3.307862069e-09 -2.971704853e-11 7.783679817e-09 6.052263566e-12 --5.672125627e-07 1.603072314e-06 1.681957709e-09 1.572402677e-06 3.987636259e-09 -1.603072314e-06 2.390568201e-05 1.925981923e-08 1.128672007e-05 3.22881474e-08 -1.681957709e-09 1.925981923e-08 1.529091432e-11 8.621325855e-09 2.495864561e-11 -1.572402677e-06 1.128672007e-05 8.621325855e-09 4.343109381e-06 1.304155229e-08 -3.987636259e-09 3.22881474e-08 2.495864561e-11 1.304155229e-08 3.868731595e-11 --0.2195481507 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.07545823539 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.2810316 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.07665946689 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.002032566429 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.004142467893 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.004027314339 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.001774185354 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0006019607672 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0006829544062 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -2.169986311e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0001987065543 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.403625262e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.2321889666 0.03336767616 0.0004186624035 0 0 -0.03336767616 -0.05080766962 -0.002167683123 0 0 -0.0004186624035 -0.002167683123 -0.2710863586 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.1223420321 0.04509081445 -0.0003618107034 0 0 -0.04509081445 0.05369655184 0.002654182139 0 0 --0.0003618107034 0.002654182139 -0.1281557335 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0158520067 -0.008052450315 -9.871393058e-05 0 0 --0.008052450315 0.006815635675 -0.0001530954648 0 0 --9.871393058e-05 -0.0001530954648 -0.007639003383 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.008461090017 -0.02766127556 4.24438342e-05 0 0 --0.02766127556 -0.0732726556 0.0001463143639 0 0 -4.24438342e-05 0.0001463143639 0.001251216565 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.001693576404 0.004669793201 -1.185407835e-06 0 0 -0.004669793201 0.0151053263 -5.511609611e-05 0 0 --1.185407835e-06 -5.511609611e-05 8.46570397e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0001323255038 0.0006603835183 1.190373785e-05 0 0 -0.0006603835183 0.001978725023 -2.166243397e-05 0 0 -1.190373785e-05 -2.166243397e-05 -0.0003342011969 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0004155833324 -0.001855653431 -5.8561421e-06 0 0 --0.001855653431 -0.004326688854 3.201950303e-05 0 0 --5.8561421e-06 3.201950303e-05 0.000440993075 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0001655265576 0.0006020855965 -1.052625409e-06 0 0 -0.0006020855965 0.002035729185 1.195383767e-05 0 0 --1.052625409e-06 1.195383767e-05 6.575733018e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.887363091e-05 0.0001411272446 1.798612722e-06 0 0 -0.0001411272446 0.0001506128936 -6.589812803e-06 0 0 -1.798612722e-06 -6.589812803e-06 -0.0001624961397 0 0 -0 0 0 0 0 -0 0 0 0 0 --5.66960947e-07 -0.0002715199082 2.157084683e-08 0 0 --0.0002715199082 -0.0006445573779 -6.846039222e-06 0 0 -2.157084683e-08 -6.846039222e-06 9.515719461e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -6.386175001e-05 0.0001366038324 -1.328255651e-07 0 0 -0.0001366038324 0.000635888881 6.007255673e-06 0 0 --1.328255651e-07 6.007255673e-06 6.672099808e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --8.678046571e-06 8.087308046e-06 -4.27203171e-07 0 0 -8.087308046e-06 6.720620798e-05 3.340218118e-06 0 0 --4.27203171e-07 3.340218118e-06 4.083298061e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 -2.485901765e-06 -3.234282836e-05 -5.105172703e-08 0 0 --3.234282836e-05 -7.47813522e-05 3.826177743e-07 0 0 --5.105172703e-08 3.826177743e-07 6.613816784e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.02992308136 -0.0253776314 -2.977750721e-05 -0.09675216626 0.001450192241 --0.0253776314 0.1665248623 3.653448117e-05 0.02794857046 0.0002727820294 --2.977750721e-05 3.653448117e-05 -0.007260664985 6.035430303e-05 -0.01560217223 --0.09675216626 0.02794857046 6.035430303e-05 0.1895895091 -0.0004118140862 -0.001450192241 0.0002727820294 -0.01560217223 -0.0004118140862 0.08486883486 --0.1010669921 -0.08291780113 -0.0002359978094 0.05002580056 -0.001278396373 --0.08291780113 -0.09377998525 -8.385985641e-05 0.007405510946 0.0002263724914 --0.0002359978094 -8.385985641e-05 -0.01227486438 0.0001701212652 -0.04705169248 -0.05002580056 0.007405510946 0.0001701212652 -0.04721769286 0.001154249399 --0.001278396373 0.0002263724914 -0.04705169248 0.001154249399 -0.1803444887 -5.345193119e-06 -0.03398549409 -0.000118748957 -0.01847672455 -0.0004911924366 --0.03398549409 -0.01377824169 1.112094623e-05 0.03856721624 -0.0003506121421 --0.000118748957 1.112094623e-05 -0.005882290366 7.637927667e-05 -0.01417660908 --0.01847672455 0.03856721624 7.637927667e-05 0.04727421045 0.000282041672 --0.0004911924366 -0.0003506121421 -0.01417660908 0.000282041672 -0.0340336881 -0.001516133549 0.005129214377 2.885303787e-05 0.0005530044353 9.664597808e-05 -0.005129214377 -0.007758515554 9.892230601e-06 -0.01052428568 7.889217419e-05 -2.885303787e-05 9.892230601e-06 -0.0001997234585 -2.97207754e-05 0.0005365598885 -0.0005530044353 -0.01052428568 -2.97207754e-05 -0.006839549475 -9.326647068e-05 -9.664597808e-05 7.889217419e-05 0.0005365598885 -9.326647068e-05 0.002389929786 --0.001596610843 0.00250151458 -1.399902173e-06 0.003723111003 1.758611649e-05 -0.00250151458 -0.004464830033 -4.245695417e-07 -0.006186842933 4.680491291e-05 --1.399902173e-06 -4.245695417e-07 4.922272053e-05 2.457679384e-06 -6.268740315e-05 -0.003723111003 -0.006186842933 2.457679384e-06 -0.008785584161 3.004424149e-05 -1.758611649e-05 4.680491291e-05 -6.268740315e-05 3.004424149e-05 -0.0004931715668 -0.0002110264607 -0.0001161681297 4.035500636e-06 -0.0003253127042 -8.887586278e-07 --0.0001161681297 0.0005462134049 1.492587707e-06 0.0006055591337 -1.922974239e-05 -4.035500636e-06 1.492587707e-06 -8.124838218e-05 -2.420212935e-06 -9.826903339e-05 --0.0003253127042 0.0006055591337 -2.420212935e-06 0.0008374762654 -1.632997493e-05 --8.887586278e-07 -1.922974239e-05 -9.826903339e-05 -1.632997493e-05 0.0007236223569 -0.0004179606241 -1.14679552e-05 -1.33896966e-06 -0.0005698735098 -2.206467125e-05 --1.14679552e-05 5.515697678e-06 -1.321372808e-07 5.382478121e-06 5.534695559e-06 --1.33896966e-06 -1.321372808e-07 1.603791695e-05 8.911683337e-07 8.294415854e-05 --0.0005698735098 5.382478121e-06 8.911683337e-07 0.0007470313494 2.820491938e-05 --2.206467125e-05 5.534695559e-06 8.294415854e-05 2.820491938e-05 0.0003947666464 --0.0001567211887 -5.65228613e-05 -6.880877032e-07 0.0001151763305 -4.87463251e-06 --5.65228613e-05 -0.0001672452235 -2.037309725e-07 -7.696169966e-05 -4.102787817e-06 --6.880877032e-07 -2.037309725e-07 -3.003936184e-06 5.519295463e-07 -2.793448172e-05 -0.0001151763305 -7.696169966e-05 5.519295463e-07 -0.0001798203848 1.591129477e-06 --4.87463251e-06 -4.102787817e-06 -2.793448172e-05 1.591129477e-06 -0.0002278881025 --7.148488317e-05 9.969783878e-05 8.54024568e-07 0.0001327118389 1.048571745e-05 -9.969783878e-05 -8.644372148e-06 2.609555097e-07 -0.0001397199573 2.471465719e-06 -8.54024568e-07 2.609555097e-07 -5.14998423e-06 -5.426384288e-07 -1.846013547e-05 -0.0001327118389 -0.0001397199573 -5.426384288e-07 -0.0002411242531 -8.515146025e-06 -1.048571745e-05 2.471465719e-06 -1.846013547e-05 -8.515146025e-06 5.379736233e-07 -0.0001476753191 4.890467698e-05 1.056466242e-07 -0.0001590915045 6.820311703e-07 -4.890467698e-05 0.0001429862763 1.267062319e-07 3.59089313e-05 -1.812672843e-06 -1.056466242e-07 1.267062319e-07 4.182862556e-06 -1.093834586e-07 3.413965443e-05 --0.0001590915045 3.59089313e-05 -1.093834586e-07 0.000228539023 -1.521854631e-06 -6.820311703e-07 -1.812672843e-06 3.413965443e-05 -1.521854631e-06 0.0002761109905 -4.108220955e-05 -4.2114043e-05 -1.710331437e-07 -8.493366979e-05 -4.80442968e-06 --4.2114043e-05 5.773286777e-05 -4.558952761e-08 8.019520864e-05 -2.09010014e-07 --1.710331437e-07 -4.558952761e-08 -8.368152797e-07 1.177165912e-07 -1.643050532e-07 --8.493366979e-05 8.019520864e-05 1.177165912e-07 0.0001566254061 4.984522921e-06 --4.80442968e-06 -2.09010014e-07 -1.643050532e-07 4.984522921e-06 5.208961623e-05 --1.261500932e-05 1.840406539e-05 -2.907461829e-07 1.631202152e-05 -3.677726698e-06 -1.840406539e-05 -1.550581472e-05 8.47291871e-09 -4.502031751e-05 -1.007128006e-06 --2.907461829e-07 8.47291871e-09 -5.194097074e-07 2.706543545e-07 3.376697559e-07 -1.631202152e-05 -4.502031751e-05 2.706543545e-07 -4.666417226e-05 3.178192925e-06 --3.677726698e-06 -1.007128006e-06 3.376697559e-07 3.178192925e-06 3.09411288e-05 -3.257067452e-05 1.354251323e-05 9.32598619e-08 -3.935849238e-05 9.712176123e-07 -1.354251323e-05 5.484845243e-05 4.359769617e-08 1.48149338e-05 1.833884602e-09 -9.32598619e-08 4.359769617e-08 8.095190415e-07 -8.000719385e-08 7.338676265e-06 --3.935849238e-05 1.48149338e-05 -8.000719385e-08 6.249422758e-05 -8.117145704e-07 -9.712176123e-07 1.833884602e-09 7.338676265e-06 -8.117145704e-07 6.592672859e-05 --0.029339154 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.03194044399 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.01271441505 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.001632033707 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0002533395362 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0001297141981 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.552351787e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -4.089764797e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -8.184656915e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.918479072e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -2.337372886e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.370832395e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -4.963539048e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0004142313897 -0.0003260303819 -0.01126448559 0 0 --0.0003260303819 -0.01030383271 -0.0496385739 0 0 --0.01126448559 -0.0496385739 -0.01779042892 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0002595965653 -0.01242044247 -0.007220040505 0 0 --0.01242044247 -0.04868504841 -0.007939964594 0 0 --0.007220040505 -0.007939964594 0.006575480929 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.325427025e-05 0.0005999373813 0.0006604546581 0 0 -0.0005999373813 -2.904001816e-05 -0.0009971315705 0 0 -0.0006604546581 -0.0009971315705 -0.002099936982 0 0 -0 0 0 0 0 -0 0 0 0 0 --4.841371593e-06 0.0002352606464 0.0001481164439 0 0 -0.0002352606464 -0.003063225374 -0.002251455508 0 0 -0.0001481164439 -0.002251455508 -0.001608313799 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.684375593e-08 1.716835686e-06 1.2319389e-06 0 0 -1.716835686e-06 -8.842372898e-05 -0.0001038646678 0 0 -1.2319389e-06 -0.0001038646678 -8.466184862e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.936879687e-06 0.000177743887 8.223112411e-05 0 0 -0.000177743887 0.0005988925035 -1.547498642e-05 0 0 -8.223112411e-05 -1.547498642e-05 -0.0001349658656 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.900347723e-07 -1.222616075e-05 -6.229363572e-06 0 0 --1.222616075e-05 0.0003342278239 0.0001932209802 0 0 --6.229363572e-06 0.0001932209802 0.0001089682642 0 0 -0 0 0 0 0 -0 0 0 0 0 -7.773810094e-08 -7.21001733e-07 -2.092851134e-06 0 0 --7.21001733e-07 -9.084823069e-06 -1.186360715e-05 0 0 --2.092851134e-06 -1.186360715e-05 -5.670644331e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 -2.757913345e-07 -4.572071502e-06 -7.630848439e-06 0 0 --4.572071502e-06 -2.651064133e-05 -1.955440558e-05 0 0 --7.630848439e-06 -1.955440558e-05 2.615468172e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.64409134e-08 3.512679297e-06 9.24683282e-07 0 0 -3.512679297e-06 8.376229713e-05 2.774175646e-05 0 0 -9.24683282e-07 2.774175646e-05 8.877874295e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.178044352e-07 7.732143868e-06 3.173206256e-06 0 0 -7.732143868e-06 8.612687815e-05 2.77975276e-05 0 0 -3.173206256e-06 2.77975276e-05 8.406125358e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 --4.856727568e-08 4.82690444e-06 1.324687811e-06 0 0 -4.82690444e-06 3.983650803e-05 8.448177282e-06 0 0 -1.324687811e-06 8.448177282e-06 1.64854539e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.345851465e-08 1.07597304e-06 -3.606049891e-07 0 0 -1.07597304e-06 1.205961113e-05 -5.224502661e-07 0 0 --3.606049891e-07 -5.224502661e-07 -1.171808402e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.009107213062 0.0006428701442 -0.002176872224 -0.03067093496 -0.001536998853 -0.0006428701442 -3.744240554e-05 -7.110094268e-06 -0.004110643683 0.001225026204 --0.002176872224 -7.110094268e-06 0.000261005941 0.01077394068 -0.001992278511 --0.03067093496 -0.004110643683 0.01077394068 0.05758726364 0.03650259643 --0.001536998853 0.001225026204 -0.001992278511 0.03650259643 -0.02121169893 --0.01908414606 -0.002640906483 0.0077529798 0.02000493837 0.03249031506 --0.002640906483 -0.0001354649179 0.0001840128828 0.002119064983 0.004235183836 -0.0077529798 0.0001840128828 0.0002855980629 -0.005617788904 -0.0121909514 -0.02000493837 0.002119064983 -0.005617788904 -0.01913728303 -0.03332142485 -0.03249031506 0.004235183836 -0.0121909514 -0.03332142485 -0.05501804582 --0.0004264343859 -7.477113666e-05 0.0008678922671 0.00118934196 0.0007773399723 --7.477113666e-05 -2.97176221e-06 1.798012771e-05 0.0001184255771 9.314855831e-05 -0.0008678922671 1.798012771e-05 9.881369951e-06 -0.001227823231 -0.001010920252 -0.00118934196 0.0001184255771 -0.001227823231 -0.002516170892 -0.001784501922 -0.0007773399723 9.314855831e-05 -0.001010920252 -0.001784501922 -0.00123334944 --0.0009400920309 -0.0002172402949 -0.0006128426424 -5.237431381e-05 0.001497125979 --0.0002172402949 -1.184060255e-05 -2.139510893e-05 0.0001303943873 0.0003482072774 --0.0006128426424 -2.139510893e-05 -2.272366082e-05 0.0004124522945 0.0009830080202 --5.237431381e-05 0.0001303943873 0.0004124522945 0.0005264194197 9.174842753e-05 -0.001497125979 0.0003482072774 0.0009830080202 9.174842753e-05 -0.002384088549 -2.931342293e-05 -3.439705138e-05 -4.899446672e-05 -0.000125414278 -1.739631863e-05 --3.439705138e-05 -1.327930388e-06 -1.021100394e-06 5.357018733e-05 3.659158904e-05 --4.899446672e-05 -1.021100394e-06 -2.328585922e-07 7.825827609e-05 5.178256275e-05 --0.000125414278 5.357018733e-05 7.825827609e-05 0.0003264547477 0.0001107483513 --1.739631863e-05 3.659158904e-05 5.178256275e-05 0.0001107483513 4.045822513e-06 -0.0001962816614 1.900491643e-05 -0.0001080664627 -0.0002928862834 -0.0003289185752 -1.900491643e-05 8.440550694e-07 -2.582927536e-06 -2.166609931e-05 -2.815304923e-05 --0.0001080664627 -2.582927536e-06 -2.849267602e-06 0.0001083058932 0.0001518638832 --0.0002928862834 -2.166609931e-05 0.0001083058932 0.0003920713565 0.000465981641 --0.0003289185752 -2.815304923e-05 0.0001518638832 0.000465981641 0.0005374824497 -2.926780765e-05 8.000778547e-06 1.314030837e-05 -1.014013604e-05 -4.516276766e-05 -8.000778547e-06 3.653197176e-07 3.881214257e-07 -8.785131209e-06 -1.069467724e-05 -1.314030837e-05 3.881214257e-07 2.648282832e-07 -1.512783039e-05 -1.737267756e-05 --1.014013604e-05 -8.785131209e-06 -1.512783039e-05 -1.63343244e-05 2.109722726e-05 --4.516276766e-05 -1.069467724e-05 -1.737267756e-05 2.109722726e-05 6.819346869e-05 --1.387546014e-05 2.845270849e-06 1.055150884e-05 2.114960295e-05 2.069478661e-05 -2.845270849e-06 1.937242588e-07 4.089926399e-07 -8.562711944e-07 -5.071734957e-06 -1.055150884e-05 4.089926399e-07 4.924457379e-07 -4.5611997e-06 -1.84785091e-05 -2.114960295e-05 -8.562711944e-07 -4.5611997e-06 -1.664892653e-05 -3.525268268e-05 -2.069478661e-05 -5.071734957e-06 -1.84785091e-05 -3.525268268e-05 -2.998319873e-05 -9.517915751e-06 5.634530642e-07 -2.363722013e-06 -1.811448579e-05 -1.06375832e-05 -5.634530642e-07 9.952503383e-09 -2.90438126e-08 -1.340319682e-06 -3.525127838e-07 --2.363722013e-06 -2.90438126e-08 6.163159796e-08 5.768222289e-06 1.328287388e-06 --1.811448579e-05 -1.340319682e-06 5.768222289e-06 3.14075175e-05 2.341948994e-05 --1.06375832e-05 -3.525127838e-07 1.328287388e-06 2.341948994e-05 8.605137575e-06 -3.054658273e-05 4.052702199e-06 1.350268782e-06 -2.984338743e-05 -4.587074757e-05 -4.052702199e-06 1.702545423e-07 6.035609984e-08 -4.873087074e-06 -5.305424085e-06 -1.350268782e-06 6.035609984e-08 2.128321539e-08 -1.614572999e-06 -1.775359531e-06 --2.984338743e-05 -4.873087074e-06 -1.614572999e-06 2.688434715e-05 4.675533874e-05 --4.587074757e-05 -5.305424085e-06 -1.775359531e-06 4.675533874e-05 6.722507781e-05 -1.192910096e-05 2.306566732e-07 -3.586895454e-06 -1.647489467e-05 -1.686636981e-05 -2.306566732e-07 4.350390607e-09 -8.050051675e-08 -3.212128689e-07 -3.32630265e-07 --3.586895454e-06 -8.050051675e-08 -5.593945417e-08 4.682953709e-06 4.408996158e-06 --1.647489467e-05 -3.212128689e-07 4.682953709e-06 2.268830633e-05 2.313547053e-05 --1.686636981e-05 -3.32630265e-07 4.408996158e-06 2.313547053e-05 2.346026016e-05 -6.541843921e-06 4.803877823e-07 -1.224986147e-06 -9.168496057e-06 -8.712623678e-06 -4.803877823e-07 1.537575528e-08 -2.205223095e-08 -7.738672168e-07 -5.230754493e-07 --1.224986147e-06 -2.205223095e-08 -2.303955884e-09 2.060078821e-06 1.233218313e-06 --9.168496057e-06 -7.738672168e-07 2.060078821e-06 1.234128224e-05 1.280088668e-05 --8.712623678e-06 -5.230754493e-07 1.233218313e-06 1.280088668e-05 1.091916013e-05 -6.652360502e-06 5.522218479e-07 -7.64316952e-07 -9.075077769e-06 -8.930936127e-06 -5.522218479e-07 1.789001538e-08 -1.356151305e-08 -8.930677312e-07 -5.952037278e-07 --7.64316952e-07 -1.356151305e-08 -1.218571372e-09 1.29206332e-06 7.652396075e-07 --9.075077769e-06 -8.930677312e-07 1.29206332e-06 1.16815628e-05 1.291420655e-05 --8.930936127e-06 -5.952037278e-07 7.652396075e-07 1.291420655e-05 1.122560996e-05 --0.03012520863 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.03276853498 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.01269173634 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.002142441306 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0001930831899 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0001352398315 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -3.245075241e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.454263771e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.043631594e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -2.87051646e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -2.171191299e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.098390683e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -3.601384624e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0002534895001 -0.0002608633115 0.01126085507 0 0 --0.0002608633115 -0.006780244648 0.04884733448 0 0 -0.01126085507 0.04884733448 -0.01793322393 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0001690645768 -0.01325247875 0.007608180121 0 0 --0.01325247875 -0.05439133592 0.01042063964 0 0 -0.007608180121 0.01042063964 0.005565746496 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.190208084e-05 0.0003639887851 -0.0005425462411 0 0 -0.0003639887851 8.131651843e-05 0.0004992911337 0 0 --0.0005425462411 0.0004992911337 -0.001634772957 0 0 -0 0 0 0 0 -0 0 0 0 0 --4.505714661e-06 0.0003428534317 -0.0002125604416 0 0 -0.0003428534317 -0.003244844685 0.00255209986 0 0 --0.0002125604416 0.00255209986 -0.001904475366 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.223496031e-07 3.141325335e-07 5.302289186e-06 0 0 -3.141325335e-07 -4.884928655e-06 5.224878589e-05 0 0 -5.302289186e-06 5.224878589e-05 -3.247933155e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.965045239e-06 0.0001912479199 -8.885095341e-05 0 0 -0.0001912479199 0.0006653173284 1.639108245e-06 0 0 --8.885095341e-05 1.639108245e-06 -0.0001401161972 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.723952649e-07 -1.699644137e-05 8.275853164e-06 0 0 --1.699644137e-05 0.0002723354416 -0.0001683858399 0 0 -8.275853164e-06 -0.0001683858399 9.850001888e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.006986895e-07 -3.845230846e-06 4.49362918e-06 0 0 --3.845230846e-06 -2.678637733e-05 1.661429178e-05 0 0 -4.49362918e-06 1.661429178e-05 -3.492793216e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.345895953e-07 -2.213114597e-06 6.034721137e-06 0 0 --2.213114597e-06 -1.40413941e-05 1.748175368e-05 0 0 -6.034721137e-06 1.748175368e-05 4.816364978e-07 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.340282351e-08 3.202999031e-06 -9.790536582e-07 0 0 -3.202999031e-06 9.59066151e-05 -3.503041759e-05 0 0 --9.790536582e-07 -3.503041759e-05 1.251564538e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --7.627805332e-08 8.504870309e-06 -3.388075755e-06 0 0 -8.504870309e-06 7.674408394e-05 -2.207239333e-05 0 0 --3.388075755e-06 -2.207239333e-05 5.477281763e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.086027243e-08 4.098039054e-06 -9.276609769e-07 0 0 -4.098039054e-06 3.44285827e-05 -6.766546439e-06 0 0 --9.276609769e-07 -6.766546439e-06 1.300511733e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 -8.570101215e-09 9.883318328e-07 3.770027616e-07 0 0 -9.883318328e-07 1.14729019e-05 6.949989621e-07 0 0 -3.770027616e-07 6.949989621e-07 -1.271380351e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.01050444454 0.0007905272686 0.002288800574 -0.03183751998 0.003343242812 -0.0007905272686 -1.999877484e-05 5.904822267e-06 -0.004145433618 -0.001000358507 -0.002288800574 5.904822267e-06 0.0001506179185 -0.0105979299 -0.001891382185 --0.03183751998 -0.004145433618 -0.0105979299 0.05799278289 -0.03768626803 -0.003343242812 -0.001000358507 -0.001891382185 -0.03768626803 -0.01865391037 --0.02024816824 -0.002648417617 -0.00777340811 0.02057928763 -0.03414822376 --0.002648417617 -8.708283032e-05 -0.0001116753708 0.002059013684 -0.004222846184 --0.00777340811 -0.0001116753708 0.0001745252486 0.005692290223 -0.01225930158 -0.02057928763 0.002059013684 0.005692290223 -0.01937209414 0.03411213442 --0.03414822376 -0.004222846184 -0.01225930158 0.03411213442 -0.05736149408 --0.0007214786397 -0.0001261477361 -0.001155992071 0.001659651079 -0.001265211624 --0.0001261477361 -3.325247401e-06 -1.52979671e-05 0.000173922387 -0.0001603021533 --0.001155992071 -1.52979671e-05 1.115547669e-05 0.00149960741 -0.001419629495 -0.001659651079 0.000173922387 0.00149960741 -0.003096160963 0.002532335925 --0.001265211624 -0.0001603021533 -0.001419629495 0.002532335925 -0.002020621367 --0.0008834063665 -0.000195181731 0.0006740964053 -0.0001338836483 -0.001384113971 --0.000195181731 -6.722305768e-06 1.417639614e-05 0.0001220886589 -0.0003133682555 -0.0006740964053 1.417639614e-05 -1.549316626e-05 -0.0004593229622 0.001084152849 --0.0001338836483 0.0001220886589 -0.0004593229622 0.0006116477179 -0.0002412632099 --0.001384113971 -0.0003133682555 0.001084152849 -0.0002412632099 -0.002167048897 -2.570892488e-05 -5.184611863e-05 8.836257081e-05 -0.0001762128535 7.252559003e-06 --5.184611863e-05 -1.33190335e-06 1.306575081e-06 7.241447597e-05 -5.978926398e-05 -8.836257081e-05 1.306575081e-06 -5.936140071e-07 -0.0001259920984 0.0001014893438 --0.0001762128535 7.241447597e-05 -0.0001259920984 0.0004517175385 -0.0001703927011 -7.252559003e-06 -5.978926398e-05 0.0001014893438 -0.0001703927011 -1.721712229e-05 -0.0002044764161 2.864299193e-05 8.891786479e-05 -0.0002725565901 0.0003464480642 -2.864299193e-05 8.499507509e-07 1.193882015e-06 -3.006185668e-05 4.127453313e-05 -8.891786479e-05 1.193882015e-06 -1.438477736e-06 -8.96140548e-05 0.000124815905 --0.0002725565901 -3.006185668e-05 -8.96140548e-05 0.0003424655432 -0.00044317181 -0.0003464480642 4.127453313e-05 0.000124815905 -0.00044317181 0.000570345222 -1.316539636e-05 3.572896979e-06 -6.963093113e-06 -5.090672586e-06 1.896209369e-05 -3.572896979e-06 8.967122497e-08 -1.01192004e-07 -4.912697266e-06 4.16512868e-06 --6.963093113e-06 -1.01192004e-07 4.769105162e-08 9.86938932e-06 -8.035268359e-06 --5.090672586e-06 -4.912697266e-06 9.86938932e-06 -1.220165799e-05 -1.126833298e-05 -1.896209369e-05 4.16512868e-06 -8.035268359e-06 -1.126833298e-05 2.621763064e-05 --1.596345418e-05 4.230070489e-06 -1.490316752e-05 2.77775252e-05 -2.304408458e-05 -4.230070489e-06 1.677591136e-07 -3.463542161e-07 -1.845130337e-06 7.339651662e-06 --1.490316752e-05 -3.463542161e-07 4.046519208e-07 7.547927105e-06 -2.56245062e-05 -2.77775252e-05 -1.845130337e-06 7.547927105e-06 -2.472850132e-05 4.537694796e-05 --2.304408458e-05 7.339651662e-06 -2.56245062e-05 4.537694796e-05 -3.208498738e-05 -1.649051972e-05 1.37371646e-06 2.772886927e-06 -2.476958068e-05 2.153130321e-05 -1.37371646e-06 2.564674646e-08 2.902632074e-08 -2.476324955e-06 1.29033913e-06 -2.772886927e-06 2.902632074e-08 6.859040711e-09 -5.104303987e-06 2.475673631e-06 --2.476958068e-05 -2.476324955e-06 -5.104303987e-06 3.528468054e-05 -3.468177991e-05 -2.153130321e-05 1.29033913e-06 2.475673631e-06 -3.468177991e-05 2.526006582e-05 -3.055186415e-05 3.749609177e-06 -1.403603141e-06 -2.973591826e-05 4.59706048e-05 -3.749609177e-06 1.010017108e-07 -3.912203375e-08 -4.455782049e-06 4.904080937e-06 --1.403603141e-06 -3.912203375e-08 1.51316475e-08 1.66499794e-06 -1.838458997e-06 --2.973591826e-05 -4.455782049e-06 1.66499794e-06 2.713171938e-05 -4.639924873e-05 -4.59706048e-05 4.904080937e-06 -1.838458997e-06 -4.639924873e-05 6.765503255e-05 -9.410364389e-06 -2.704219183e-09 3.303246585e-06 -1.384663003e-05 1.289595954e-05 --2.704219183e-09 -1.683700951e-09 4.372606097e-08 -6.278644397e-09 2.108471256e-08 -3.303246585e-06 4.372606097e-08 -2.535427968e-08 -4.588422188e-06 3.869278445e-06 --1.384663003e-05 -6.278644397e-09 -4.588422188e-06 2.031179031e-05 -1.8824453e-05 -1.289595954e-05 2.108471256e-08 3.869278445e-06 -1.8824453e-05 1.730777323e-05 -4.358538967e-06 3.317927482e-07 6.859849764e-07 -6.78449956e-06 5.222493552e-06 -3.317927482e-07 5.233326944e-09 6.837435147e-09 -6.68124067e-07 2.645229705e-07 -6.859849764e-07 6.837435147e-09 5.110499211e-09 -1.411515426e-06 5.204448107e-07 --6.78449956e-06 -6.68124067e-07 -1.411515426e-06 9.412173433e-06 -9.136904795e-06 -5.222493552e-06 2.645229705e-07 5.204448107e-07 -9.136904795e-06 5.37381988e-06 -7.260421256e-06 5.304343921e-07 8.78524606e-07 -9.647436547e-06 9.87266666e-06 -5.304343921e-07 1.144158765e-08 9.573737724e-09 -8.191601381e-07 5.838143043e-07 -8.78524606e-07 9.573737724e-09 -2.891863946e-09 -1.395975031e-06 9.197404021e-07 --9.647436547e-06 -8.191601381e-07 -1.395975031e-06 1.234058675e-05 -1.369399802e-05 -9.87266666e-06 5.838143043e-07 9.197404021e-07 -1.369399802e-05 1.273286067e-05 -0.02368413948 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.03428144091 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.008121632139 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0001863357907 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -7.994039579e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0002348813993 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -4.974034653e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --7.160157644e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --4.005088591e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.104615183e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -5.819015789e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -2.903268458e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --6.209620183e-07 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.007930717391 0.04613093963 -0.01848138333 0 0 -0.04613093963 -0.1275725581 -0.1026777413 0 0 --0.01848138333 -0.1026777413 0.04300940362 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.01634508434 0.008482601392 -0.03744276531 0 0 -0.008482601392 -0.04326203022 -0.01592385744 0 0 --0.03744276531 -0.01592385744 0.08551446528 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.01013385285 -0.00565480977 -0.02282937728 0 0 --0.00565480977 -0.000214267822 0.01369541265 0 0 --0.02282937728 0.01369541265 0.05115822728 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.002237124155 -0.003414144858 -0.004973041896 0 0 --0.003414144858 0.004802806157 0.007404754219 0 0 --0.004973041896 0.007404754219 0.0109711391 0 0 -0 0 0 0 0 -0 0 0 0 0 -4.826339849e-05 -0.0004825299999 -0.0001095211159 0 0 --0.0004825299999 0.001067555272 0.001032295443 0 0 --0.0001095211159 0.001032295443 0.0002474836311 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0003285459238 0.0002156038202 0.0007674429406 0 0 -0.0002156038202 -1.603329236e-05 -0.0005199799291 0 0 -0.0007674429406 -0.0005199799291 -0.00179052011 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0002462775427 0.0003986556363 0.0005840864135 0 0 -0.0003986556363 -0.0006224863104 -0.0009421177019 0 0 -0.0005840864135 -0.0009421177019 -0.001384760087 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.011031208e-05 1.11615415e-05 2.376152241e-05 0 0 -1.11615415e-05 -1.204825468e-05 -2.634231882e-05 0 0 -2.376152241e-05 -2.634231882e-05 -5.580063147e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -4.930292673e-05 -1.50813427e-05 -0.0001142890534 0 0 --1.50813427e-05 -3.666736253e-05 3.939658436e-05 0 0 --0.0001142890534 3.939658436e-05 0.0002644565057 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.584844025e-05 -3.191162067e-05 -3.559858542e-05 0 0 --3.191162067e-05 5.18182236e-05 6.928923822e-05 0 0 --3.559858542e-05 6.928923822e-05 7.950176069e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -5.99750593e-06 -8.989396897e-08 -1.363258924e-05 0 0 --8.989396897e-08 -8.12421337e-06 1.205373203e-06 0 0 --1.363258924e-05 1.205373203e-06 3.086413775e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.453106373e-06 -1.218880196e-06 3.295573244e-06 0 0 --1.218880196e-06 4.954960478e-06 2.326737671e-06 0 0 -3.295573244e-06 2.326737671e-06 -7.442157088e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 --4.679460987e-06 1.097162861e-05 1.101112915e-05 0 0 -1.097162861e-05 -2.056828334e-05 -2.550583598e-05 0 0 -1.101112915e-05 -2.550583598e-05 -2.589124026e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.004965194229 -0.005577891488 -0.003030742607 0.002661751951 0.01338936973 --0.005577891488 -0.005938700619 -0.004578272802 0.0006737530324 0.01422730104 --0.003030742607 -0.004578272802 0.002355306913 0.009925506105 0.01109078582 -0.002661751951 0.0006737530324 0.009925506105 0.0149580035 -0.00141806221 -0.01338936973 0.01422730104 0.01109078582 -0.00141806221 -0.03408168328 --0.002563069494 -0.003327668698 0.000362051909 0.005109118462 0.008057328124 --0.003327668698 -0.003644393369 -0.001585273837 0.002488820189 0.008835840008 -0.000362051909 -0.001585273837 0.006198270443 0.01187976885 0.003803105959 -0.005109118462 0.002488820189 0.01187976885 0.01522559906 -0.006097470569 -0.008057328124 0.008835840008 0.003803105959 -0.006097470569 -0.02142227729 -0.0002158006437 -0.0002537788247 0.001634897261 0.002920771522 0.0006053064838 --0.0002537788247 -0.0004364120366 0.0005930701748 0.001565335288 0.001078536976 -0.001634897261 0.0005930701748 0.003773730419 0.005010262974 -0.001543358451 -0.002920771522 0.001565335288 0.005010262974 0.005509289992 -0.003989562717 -0.0006053064838 0.001078536976 -0.001543358451 -0.003989562717 -0.002664150345 -0.0003540245513 0.0001777968714 0.0004633547874 0.0004377598958 -0.0004714458142 -0.0001777968714 7.563162587e-05 0.0001923271072 0.0001631581146 -0.000211970199 -0.0004633547874 0.0001923271072 0.0004871062042 0.0004053855665 -0.000543744465 -0.0004377598958 0.0001631581146 0.0004053855665 0.0003060309576 -0.0004800452713 --0.0004714458142 -0.000211970199 -0.000543744465 -0.0004800452713 0.00058279968 -3.041558165e-05 7.056167823e-07 2.516077395e-06 -8.337511955e-06 -1.015283753e-05 -7.056167823e-07 -2.29742787e-05 -3.116680066e-05 -2.855272067e-05 4.797536882e-05 -2.516077395e-06 -3.116680066e-05 -4.220090234e-05 -3.920640707e-05 6.463865212e-05 --8.337511955e-06 -2.855272067e-05 -3.920640707e-05 -3.26961262e-05 6.225194332e-05 --1.015283753e-05 4.797536882e-05 6.463865212e-05 6.225194332e-05 -9.770820111e-05 --1.086557447e-05 -1.655799291e-05 5.184191653e-06 3.10675865e-05 4.038853376e-05 --1.655799291e-05 -2.143419512e-05 -6.261028352e-06 2.008768071e-05 5.259215079e-05 -5.184191653e-06 -6.261028352e-06 5.032163008e-05 8.679180209e-05 1.411813045e-05 -3.10675865e-05 2.008768071e-05 8.679180209e-05 0.0001067475131 -5.121907099e-05 -4.038853376e-05 5.259215079e-05 1.411813045e-05 -5.121907099e-05 -0.0001290133814 -9.938723284e-06 4.89775008e-06 1.22272598e-05 9.790426757e-06 -1.418479985e-05 -4.89775008e-06 1.713345525e-06 4.793768538e-06 3.02640694e-06 -5.921794336e-06 -1.22272598e-05 4.793768538e-06 1.287603141e-05 8.881571569e-06 -1.557168373e-05 -9.790426757e-06 3.02640694e-06 8.881571569e-06 5.026279803e-06 -1.122942379e-05 --1.418479985e-05 -5.921794336e-06 -1.557168373e-05 -1.122942379e-05 1.861478422e-05 -6.268628556e-06 2.617834357e-06 5.761406821e-06 4.39907115e-06 -7.198490822e-06 -2.617834357e-06 1.773152876e-07 8.634222935e-07 1.693812518e-07 -1.126464974e-06 -5.761406821e-06 8.634222935e-07 2.697181331e-06 1.234353898e-06 -3.450244566e-06 -4.39907115e-06 1.693812518e-07 1.234353898e-06 5.050578443e-08 -1.629052793e-06 --7.198490822e-06 -1.126464974e-06 -3.450244566e-06 -1.629052793e-06 4.408693613e-06 --1.809181005e-06 -2.354181791e-06 -2.348899328e-06 -5.881711278e-07 5.658327467e-06 --2.354181791e-06 -3.055012521e-06 -2.91710893e-06 -5.529480916e-07 7.344747308e-06 --2.348899328e-06 -2.91710893e-06 -7.22343061e-07 2.783052171e-06 7.044026763e-06 --5.881711278e-07 -5.529480916e-07 2.783052171e-06 5.213792524e-06 1.378843518e-06 -5.658327467e-06 7.344747308e-06 7.044026763e-06 1.378843518e-06 -1.765750742e-05 --1.876409924e-07 -5.502854757e-07 -6.338860292e-07 -7.9318604e-07 8.884420464e-07 --5.502854757e-07 -8.219197822e-07 -1.061576292e-06 -1.039961464e-06 1.598514021e-06 --6.338860292e-07 -1.061576292e-06 -1.338441336e-06 -1.384396213e-06 1.987332996e-06 --7.9318604e-07 -1.039961464e-06 -1.384396213e-06 -1.263886793e-06 2.120028842e-06 -8.884420464e-07 1.598514021e-06 1.987332996e-06 2.120028842e-06 -2.926087099e-06 -7.204502439e-07 3.708311611e-07 1.363023673e-06 1.578423863e-06 -9.557118242e-07 -3.708311611e-07 1.890749026e-07 7.28668405e-07 8.618689149e-07 -4.84596182e-07 -1.363023673e-06 7.28668405e-07 2.170941024e-06 2.242357132e-06 -1.918434093e-06 -1.578423863e-06 8.618689149e-07 2.242357132e-06 2.101146221e-06 -2.295101026e-06 --9.557118242e-07 -4.84596182e-07 -1.918434093e-06 -2.295101026e-06 1.237952371e-06 --3.070876401e-07 -4.187011929e-07 -1.310214566e-07 3.693459381e-07 1.021324187e-06 --4.187011929e-07 -5.475099791e-07 -3.118765573e-07 2.643149829e-07 1.33869358e-06 --1.310214566e-07 -3.118765573e-07 7.036246894e-07 1.521602444e-06 7.426773778e-07 -3.693459381e-07 2.643149829e-07 1.521602444e-06 2.005386789e-06 -6.771917952e-07 -1.021324187e-06 1.33869358e-06 7.426773778e-07 -6.771917952e-07 -3.272734861e-06 --2.25546188e-07 -2.215788744e-07 -1.576194473e-07 3.808476883e-08 5.235673665e-07 --2.215788744e-07 -2.033938217e-07 -1.853429472e-07 -3.294962756e-08 4.768467953e-07 --1.576194473e-07 -1.853429472e-07 -4.505774167e-08 1.768043973e-07 4.459525088e-07 -3.808476883e-08 -3.294962756e-08 1.768043973e-07 3.401066144e-07 9.633083066e-08 -5.235673665e-07 4.768467953e-07 4.459525088e-07 9.633083066e-08 -1.116889744e-06 -0.01061100472 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.01148087107 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.002653836334 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.002027081997 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.33317158e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --4.706867628e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.187888728e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -2.101693102e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -3.479445308e-07 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.391307772e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -2.993720289e-07 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.206717864e-08 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --7.912840721e-07 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.02740047709 0.03767462007 -0.02867852567 0 0 -0.03767462007 -0.0748361294 -0.06065350087 0 0 --0.02867852567 -0.06065350087 0.02645991372 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.009886450889 -0.006453536373 -0.01557354515 0 0 --0.006453536373 -0.0005203458494 0.004085625826 0 0 --0.01557354515 0.004085625826 0.01672108221 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0006708756523 0.0005617792185 -0.0002189723592 0 0 -0.0005617792185 0.001247837539 0.00127074107 0 0 --0.0002189723592 0.00127074107 0.0006166594936 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.002197112156 0.0002671372193 -0.0008465029974 0 0 -0.0002671372193 -1.207344855e-05 -8.716309865e-06 0 0 --0.0008465029974 -8.716309865e-06 0.0001269457701 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0001273963404 -9.442975247e-05 8.049256461e-06 0 0 --9.442975247e-05 -0.0001257879323 -0.0001243450255 0 0 -8.049256461e-06 -0.0001243450255 -7.106858705e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --5.682670563e-05 6.886033041e-05 0.0001075733128 0 0 -6.886033041e-05 -6.368181045e-05 -8.991908024e-05 0 0 -0.0001075733128 -8.991908024e-05 -0.0001209004601 0 0 -0 0 0 0 0 -0 0 0 0 0 -4.661249685e-05 7.659569855e-06 -2.039368567e-05 0 0 -7.659569855e-06 -1.641948498e-06 -4.57432341e-07 0 0 --2.039368567e-05 -4.57432341e-07 6.035643138e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 --6.884238357e-06 -1.256593038e-05 -1.450399196e-05 0 0 --1.256593038e-05 -1.722542288e-05 -8.95962078e-06 0 0 --1.450399196e-05 -8.95962078e-06 2.315383429e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.023072501e-05 2.828563751e-05 1.773186645e-05 0 0 -2.828563751e-05 -2.651063503e-05 -2.78791486e-05 0 0 -1.773186645e-05 -2.78791486e-05 -1.481055813e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.37361739e-05 1.475943321e-05 1.117760943e-05 0 0 -1.475943321e-05 -1.17936937e-05 -1.296194481e-05 0 0 -1.117760943e-05 -1.296194481e-05 -8.872827613e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.121370308e-06 1.720391361e-06 -1.884745136e-06 0 0 -1.720391361e-06 -7.655719736e-06 -6.27016415e-06 0 0 --1.884745136e-06 -6.27016415e-06 2.059008399e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.579544539e-06 6.131955282e-06 -1.396884937e-06 0 0 -6.131955282e-06 -7.851780244e-06 -6.82281156e-06 0 0 --1.396884937e-06 -6.82281156e-06 1.173437483e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.153641643e-06 6.473108306e-06 3.274356537e-06 0 0 -6.473108306e-06 -8.167094376e-06 -8.134837761e-06 0 0 -3.274356537e-06 -8.134837761e-06 -3.009172732e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.02370141309 0.01823486045 -0.03152997181 -0.01789121819 -0.01742771282 -0.01823486045 -0.07000042365 -0.05604285675 0.008591311273 0.03501999498 --0.03152997181 -0.05604285675 0.02992128313 0.03225707992 0.04150251051 --0.01789121819 0.008591311273 0.03225707992 0.007557515592 0.000271159304 --0.01742771282 0.03501999498 0.04150251051 0.000271159304 -0.01509559016 -0.01056638191 -0.003597108973 -0.01904977521 -0.00494702973 -0.001026039565 --0.003597108973 -0.007898473944 0.001033409486 0.00465455142 0.003363615478 --0.01904977521 0.001033409486 0.03108640255 0.01069389192 0.003651095024 --0.00494702973 0.00465455142 0.01069389192 0.001348962904 -0.0005010777944 --0.001026039565 0.003363615478 0.003651095024 -0.0005010777944 -0.0008963221966 -0.0002268040272 -0.0008238823841 -0.001368901869 -1.23335069e-05 7.628278028e-05 --0.0008238823841 0.002136001633 0.003168273489 0.0001245573418 -0.0006398637254 --0.001368901869 0.003168273489 0.00446234871 0.0002423965957 -0.001224353078 --1.23335069e-05 0.0001245573418 0.0002423965957 -6.753171982e-06 2.961878901e-05 -7.628278028e-05 -0.0006398637254 -0.001224353078 2.961878901e-05 -0.0001279305402 -0.0009359992208 0.0006129720816 -0.000300110463 -0.000462487064 -0.0002091876797 -0.0006129720816 0.0002971502234 5.494637486e-05 -0.0001870878947 5.187817697e-06 --0.000300110463 5.494637486e-05 -0.0005102835268 -0.0001309599925 -0.0002758296768 --0.000462487064 -0.0001870878947 -0.0001309599925 9.994885793e-05 -5.451653351e-05 --0.0002091876797 5.187817697e-06 -0.0002758296768 -5.451653351e-05 -0.0001471148343 -0.0001952053218 -0.0002192559384 -0.0001428939353 9.894463148e-06 0.0001745511801 --0.0002192559384 -0.0002706566641 -0.0003268935285 -2.268795205e-05 0.0001196018672 --0.0001428939353 -0.0003268935285 -0.0003549458134 -1.815607633e-05 0.0001698497363 -9.894463148e-06 -2.268795205e-05 -1.815607633e-05 2.423640231e-07 1.591543022e-05 -0.0001745511801 0.0001196018672 0.0001698497363 1.591543022e-05 -3.667339814e-05 --8.055672043e-05 3.753217319e-05 8.481780141e-05 1.903215392e-05 -1.747788058e-05 -3.753217319e-05 -1.388661078e-05 -2.962396617e-05 -4.833841088e-06 3.921031476e-06 -8.481780141e-05 -2.962396617e-05 -6.211508559e-05 -8.954238915e-06 6.799282708e-06 -1.903215392e-05 -4.833841088e-06 -8.954238915e-06 2.25436998e-08 -6.011249988e-07 --1.747788058e-05 3.921031476e-06 6.799282708e-06 -6.011249988e-07 1.159604569e-06 -1.946050158e-05 2.24389956e-06 -1.31871737e-05 -8.242319312e-06 2.534834988e-06 -2.24389956e-06 2.572526732e-07 -1.399723728e-06 -9.099901071e-07 3.28844437e-07 --1.31871737e-05 -1.399723728e-06 -9.222464339e-07 2.289608668e-06 -4.701007284e-06 --8.242319312e-06 -9.099901071e-07 2.289608668e-06 2.389192549e-06 -2.070939419e-06 -2.534834988e-06 3.28844437e-07 -4.701007284e-06 -2.070939419e-06 -5.72622017e-07 --8.768237124e-06 -1.796728308e-05 -1.535390476e-05 2.063762307e-06 8.175485363e-06 --1.796728308e-05 -3.511950131e-05 -2.109314779e-05 7.219999212e-06 1.741650098e-05 --1.535390476e-05 -2.109314779e-05 3.643949032e-05 2.1880807e-05 1.837015763e-05 -2.063762307e-06 7.219999212e-06 2.1880807e-05 4.783590441e-06 -7.547616157e-07 -8.175485363e-06 1.741650098e-05 1.837015763e-05 -7.547616157e-07 -7.363247e-06 --8.6917645e-06 2.561039467e-05 1.661386028e-05 -2.336710743e-06 -1.712720412e-05 -2.561039467e-05 -1.870391699e-05 -2.242659341e-05 -1.825783334e-06 1.035505718e-05 -1.661386028e-05 -2.242659341e-05 -1.935908587e-05 3.953304788e-07 1.399159809e-05 --2.336710743e-06 -1.825783334e-06 3.953304788e-07 7.087171907e-07 1.551502538e-06 --1.712720412e-05 1.035505718e-05 1.399159809e-05 1.551502538e-06 -5.403259254e-06 --2.488437821e-07 1.480258157e-06 1.358177398e-06 1.690573015e-09 -8.591106383e-07 -1.480258157e-06 -8.009104961e-06 -8.822652617e-06 -5.412536124e-07 4.283222296e-06 -1.358177398e-06 -8.822652617e-06 -6.718691837e-06 4.867465203e-07 5.461365803e-06 -1.690573015e-09 -5.412536124e-07 4.867465203e-07 3.543512658e-07 5.576867904e-07 --8.591106383e-07 4.283222296e-06 5.461365803e-06 5.576867904e-07 -2.106603597e-06 -2.759066557e-06 7.179468892e-08 -5.396440589e-06 -1.948791053e-06 -8.553803701e-07 -7.179468892e-08 -7.632053746e-06 -4.932086496e-06 1.432303239e-06 3.876665247e-06 --5.396440589e-06 -4.932086496e-06 7.547229803e-06 4.742486507e-06 4.120311069e-06 --1.948791053e-06 1.432303239e-06 4.742486507e-06 1.088375681e-06 -1.53254779e-07 --8.553803701e-07 3.876665247e-06 4.120311069e-06 -1.53254779e-07 -1.726133393e-06 -3.726063482e-06 3.103232926e-06 -3.937356963e-06 -2.667982199e-06 -2.492491547e-06 -3.103232926e-06 -6.930841197e-06 -5.488868834e-06 6.8213606e-07 3.876027208e-06 --3.937356963e-06 -5.488868834e-06 3.647503329e-06 3.493679038e-06 4.015983709e-06 --2.667982199e-06 6.8213606e-07 3.493679038e-06 1.023994654e-06 -3.185200002e-08 --2.492491547e-06 3.876027208e-06 4.015983709e-06 -3.185200002e-08 -2.055612253e-06 -1.584996659e-07 1.930991675e-06 2.804205995e-07 -5.712313099e-07 -1.367736048e-06 -1.930991675e-06 -6.928274367e-06 -7.017559529e-06 -3.719497374e-08 3.652737386e-06 -2.804205995e-07 -7.017559529e-06 -3.078723587e-06 1.360999525e-06 4.540737436e-06 --5.712313099e-07 -3.719497374e-08 1.360999525e-06 4.853194425e-07 3.115194632e-07 --1.367736048e-06 3.652737386e-06 4.540737436e-06 3.115194632e-07 -1.750297629e-06 -0.02743123901 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.03168066388 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.01216632568 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.001381393209 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0003204925236 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0001567980395 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -5.540789475e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --4.29296079e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --4.422186622e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.602862585e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.35139174e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.436588731e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --4.301602532e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0004621132313 -0.001902400881 -0.01339955576 0 0 --0.001902400881 0.006465378403 0.03436804127 0 0 --0.01339955576 0.03436804127 0.07205798937 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0002546063734 -0.01247747262 -0.007239663068 0 0 --0.01247747262 0.009995278402 0.02399291892 0 0 --0.007239663068 0.02399291892 0.02392702628 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.951363692e-05 0.0004851260221 0.0005441616175 0 0 -0.0004851260221 0.001863922928 0.0006916772522 0 0 -0.0005441616175 0.0006916772522 -0.0006529038021 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.381477896e-07 -2.536346621e-05 -1.300160861e-05 0 0 --2.536346621e-05 0.003450837284 0.001884367871 0 0 --1.300160861e-05 0.001884367871 0.001014069298 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.96368619e-07 2.43161292e-06 7.295746237e-06 0 0 -2.43161292e-06 0.0001239115258 0.0001396133757 0 0 -7.295746237e-06 0.0001396133757 9.697942121e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.912908057e-06 0.0001785101751 8.272300326e-05 0 0 -0.0001785101751 4.991170687e-05 -0.0002803704418 0 0 -8.272300326e-05 -0.0002803704418 -0.0002621881918 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.123803256e-07 1.334933153e-05 6.742670763e-06 0 0 -1.334933153e-05 -0.0003023808684 -0.0001737983251 0 0 -6.742670763e-06 -0.0001737983251 -9.759862703e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -4.965893163e-08 -7.817277912e-07 -1.50766828e-06 0 0 --7.817277912e-07 9.302756395e-06 1.415429594e-05 0 0 --1.50766828e-06 1.415429594e-05 1.521781611e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -2.930211648e-07 -5.387692683e-06 -8.389102062e-06 0 0 --5.387692683e-06 9.820570776e-06 1.85503395e-05 0 0 --8.389102062e-06 1.85503395e-05 3.383980504e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --6.96755565e-08 7.260840081e-06 2.061285077e-06 0 0 -7.260840081e-06 -6.207708452e-05 -3.684164525e-05 0 0 -2.061285077e-06 -3.684164525e-05 -1.538319421e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.175774537e-07 8.280175906e-06 3.473205467e-06 0 0 -8.280175906e-06 -6.785644885e-05 -4.513242767e-05 0 0 -3.473205467e-06 -4.513242767e-05 -2.538411485e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --5.465766485e-08 5.600348259e-06 1.582002365e-06 0 0 -5.600348259e-06 -2.337287947e-05 -1.826454801e-05 0 0 -1.582002365e-06 -1.826454801e-05 -8.20668922e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.735341439e-08 1.309875211e-06 -5.067953318e-07 0 0 -1.309875211e-06 -8.327947529e-06 -2.844426043e-06 0 0 --5.067953318e-07 -2.844426043e-06 3.104373955e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.009017346414 -0.00165256425 0.001642111447 0.02937293596 0.002096017917 --0.00165256425 8.741547337e-05 9.116563537e-05 0.009792658475 -0.002615759387 -0.001642111447 9.116563537e-05 -0.0001862811461 -0.007719206998 0.001230775423 -0.02937293596 0.009792658475 -0.007719206998 -0.04585521571 -0.04072274534 -0.002096017917 -0.002615759387 0.001230775423 -0.04072274534 0.02257184338 -0.017762981 0.007072443219 -0.004814562084 -0.01407688443 -0.0330307736 -0.007072443219 0.0003900617667 -1.943076265e-05 -0.005249397476 -0.01130299444 --0.004814562084 -1.943076265e-05 -0.0001792744574 0.003537469218 0.007506986941 --0.01407688443 -0.005249397476 0.003537469218 0.01110364225 0.02590556872 --0.0330307736 -0.01130299444 0.007506986941 0.02590556872 0.06001325571 -0.0002050235559 0.0007202256948 -0.0003836228061 -1.828619418e-06 -0.0009793031978 -0.0007202256948 3.037053438e-05 -4.043046522e-06 -0.001015561837 -0.0008558902911 --0.0003836228061 -4.043046522e-06 -4.368264022e-06 0.0005458297493 0.0004433393351 --1.828619418e-06 -0.001015561837 0.0005458297493 -0.0004073756643 0.001052022457 --0.0009793031978 -0.0008558902911 0.0004433393351 0.001052022457 0.002005930049 -0.001114257166 -0.0004435318332 5.095656443e-05 -0.001279986972 -0.001160939268 --0.0004435318332 -2.674031563e-05 -7.47089522e-06 0.0002933931007 0.0007298091065 -5.095656443e-05 -7.47089522e-06 1.522801302e-06 -4.491525769e-05 -6.996312291e-05 --0.001279986972 0.0002933931007 -4.491525769e-05 0.001240631765 0.001618187948 --0.001160939268 0.0007298091065 -6.996312291e-05 0.001618187948 0.0008570697697 --4.039546095e-05 -3.033091277e-05 -1.392445382e-05 1.163459483e-05 8.69476118e-05 --3.033091277e-05 -1.146668468e-06 -3.367979817e-07 4.754699143e-05 3.288480855e-05 --1.392445382e-05 -3.367979817e-07 -6.590471193e-08 2.21683713e-05 1.481283911e-05 -1.163459483e-05 4.754699143e-05 2.21683713e-05 6.629746166e-05 -8.318530212e-05 -8.69476118e-05 3.288480855e-05 1.481283911e-05 -8.318530212e-05 -0.0001386089617 --0.0001397060594 -0.000128311774 5.453267227e-05 8.198585752e-05 0.0003497500745 --0.000128311774 -6.474779886e-06 -2.29841242e-07 0.0001285240774 0.0001850198285 -5.453267227e-05 -2.29841242e-07 1.44470368e-06 -5.604782888e-05 -7.498721499e-05 -8.198585752e-05 0.0001285240774 -5.604782888e-05 -2.267673728e-05 -0.0002703418478 -0.0003497500745 0.0001850198285 -7.498721499e-05 -0.0002703418478 -0.0007090141503 --3.370439043e-05 1.074258105e-05 1.674917109e-06 4.732492453e-05 3.469820676e-05 -1.074258105e-05 5.321159534e-07 1.576811202e-07 -1.237985675e-05 -1.437881846e-05 -1.674917109e-06 1.576811202e-07 3.764520782e-08 -1.879122074e-06 -2.304550312e-06 -4.732492453e-05 -1.237985675e-05 -1.879122074e-06 -6.460157817e-05 -5.098922326e-05 -3.469820676e-05 -1.437881846e-05 -2.304550312e-06 -5.098922326e-05 -3.293601808e-05 -1.632762244e-05 6.912954911e-06 -1.156879426e-06 -7.181040482e-06 -3.120496734e-05 -6.912954911e-06 4.206874865e-07 1.104849221e-07 -3.197176615e-06 -1.214018971e-05 --1.156879426e-06 1.104849221e-07 -6.18165824e-08 5.463626619e-07 1.954304391e-06 --7.181040482e-06 -3.197176615e-06 5.463626619e-07 3.148478976e-06 1.379128328e-05 --3.120496734e-05 -1.214018971e-05 1.954304391e-06 1.379128328e-05 5.917992793e-05 --8.285247441e-06 -3.181288664e-06 1.348760807e-06 1.273991113e-05 1.15990796e-05 --3.181288664e-06 -6.039192423e-08 5.452153787e-08 7.786460171e-06 1.756164931e-06 -1.348760807e-06 5.452153787e-08 -3.46551524e-08 -3.229109185e-06 -8.117365546e-07 -1.273991113e-05 7.786460171e-06 -3.229109185e-06 -1.237310868e-05 -2.456047131e-05 -1.15990796e-05 1.756164931e-06 -8.117365546e-07 -2.456047131e-05 -9.971412606e-06 --3.244132467e-05 7.063306523e-08 2.527434712e-06 3.874629081e-05 4.500410146e-05 -7.063306523e-08 2.040799345e-08 6.527047175e-08 -1.295711148e-07 -1.188730166e-09 -2.527434712e-06 6.527047175e-08 4.66937394e-08 -3.174255197e-06 -3.173001101e-06 -3.874629081e-05 -1.295711148e-07 -3.174255197e-06 -4.617721875e-05 -5.396347445e-05 -4.500410146e-05 -1.188730166e-09 -3.173001101e-06 -5.396347445e-05 -6.19760841e-05 --1.24652657e-05 -2.858127927e-06 1.387086022e-06 1.315655519e-05 1.951620162e-05 --2.858127927e-06 -1.21610941e-07 1.116390326e-08 3.666626282e-06 3.618890892e-06 -1.387086022e-06 1.116390326e-08 2.209776655e-08 -1.837741489e-06 -1.679548414e-06 -1.315655519e-05 3.666626282e-06 -1.837741489e-06 -1.309458424e-05 -2.164091042e-05 -1.951620162e-05 3.618890892e-06 -1.679548414e-06 -2.164091042e-05 -2.918282794e-05 --6.154791303e-06 -1.523086884e-06 8.162568449e-07 7.648453217e-06 8.979573281e-06 --1.523086884e-06 -5.362265096e-08 1.359660308e-08 2.510038561e-06 1.5864845e-06 -8.162568449e-07 1.359660308e-08 1.536797275e-09 -1.374098864e-06 -8.204633924e-07 -7.648453217e-06 2.510038561e-06 -1.374098864e-06 -8.325800124e-06 -1.237252273e-05 -8.979573281e-06 1.5864845e-06 -8.204633924e-07 -1.237252273e-05 -1.18510486e-05 --6.846042908e-06 -8.844693845e-07 7.042181159e-07 9.029949834e-06 9.34913471e-06 --8.844693845e-07 -2.991408054e-08 1.220708108e-08 1.447212214e-06 9.327028236e-07 -7.042181159e-07 1.220708108e-08 1.123206506e-09 -1.190897645e-06 -7.04749552e-07 -9.029949834e-06 1.447212214e-06 -1.190897645e-06 -1.097716416e-05 -1.324679457e-05 -9.34913471e-06 9.327028236e-07 -7.04749552e-07 -1.324679457e-05 -1.186991676e-05 -0.1087602295 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.02202570648 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.1348715373 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.04589550365 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.00203584534 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0008719033557 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.001417480361 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.00146070253 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -3.682499841e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.000403565291 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.021995618e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --4.892312043e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --6.519750515e-07 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.1094312275 0.07357299623 -0.01656537386 0 0 -0.07357299623 0.05341378031 -0.08747719601 0 0 --0.01656537386 -0.08747719601 0.1084246406 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.06596515599 0.02950265628 0.01200591075 0 0 -0.02950265628 0.05052555544 -0.04036471592 0 0 -0.01200591075 -0.04036471592 0.003640173761 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.009285495583 0.01170395821 -0.004722891086 0 0 -0.01170395821 -0.03094677275 -0.02924928129 0 0 --0.004722891086 -0.02924928129 0.0190499253 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.005096138733 -0.003017973933 -0.01556938679 0 0 --0.003017973933 -0.00203105327 0.0087960328 0 0 --0.01556938679 0.0087960328 0.03503999827 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0003404106848 0.0005324123842 0.0007403111577 0 0 -0.0005324123842 -0.0007084354456 -0.001250912193 0 0 -0.0007403111577 -0.001250912193 -0.001817476711 0 0 -0 0 0 0 0 -0 0 0 0 0 --7.3670676e-05 0.0002111897184 0.0005829977013 0 0 -0.0002111897184 -0.0004676456736 -0.0008060900336 0 0 -0.0005829977013 -0.0008060900336 -0.0009508843809 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0002117431627 -0.0001268789593 -0.0007826801974 0 0 --0.0001268789593 -0.0007185686983 0.0001123300236 0 0 --0.0007826801974 0.0001123300236 0.001616665263 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.979320197e-05 0.0001159563845 0.0001523220246 0 0 -0.0001159563845 -0.0001386605191 -0.0002570110552 0 0 -0.0001523220246 -0.0002570110552 -0.0003708144193 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.06258041e-05 6.52627294e-06 2.554992881e-05 0 0 -6.52627294e-06 0.0001473162732 4.108764021e-05 0 0 -2.554992881e-05 4.108764021e-05 1.867009779e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.488021549e-05 -3.208101484e-07 -8.821540941e-05 0 0 --3.208101484e-07 -0.0001679141897 -2.63245595e-05 0 0 --8.821540941e-05 -2.63245595e-05 0.0001910210967 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.797557167e-05 3.185461812e-05 4.998600863e-05 0 0 -3.185461812e-05 -0.0001354843823 -0.0001256403739 0 0 -4.998600863e-05 -0.0001256403739 -0.0001467094889 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.031317535e-05 -7.036900372e-06 -1.551795609e-05 0 0 --7.036900372e-06 -1.842699919e-05 2.164724727e-06 0 0 --1.551795609e-05 2.164724727e-06 3.44550765e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --9.27925063e-06 9.653613901e-06 -7.441528596e-06 0 0 -9.653613901e-06 -3.427126381e-05 -1.900286666e-05 0 0 --7.441528596e-06 -1.900286666e-05 1.769781375e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.01289659431 0.07351232074 -0.04467763324 0.1043054304 0.1180676791 -0.07351232074 -0.1604790808 -0.1317163304 0.02700836696 -0.009914539813 --0.04467763324 -0.1317163304 0.07159089292 0.02557070894 0.05150808844 -0.1043054304 0.02700836696 0.02557070894 -0.1647058043 0.07854970879 -0.1180676791 -0.009914539813 0.05150808844 0.07854970879 0.01466744522 -0.05761008417 0.01211653217 -0.04873651593 0.008283453291 -0.02495973976 -0.01211653217 -0.02595162966 -0.01352538607 -0.00579001418 -0.03845621524 --0.04873651593 -0.01352538607 0.06897863821 -0.0005591625501 0.01713395812 -0.008283453291 -0.00579001418 -0.0005591625501 -0.005348486481 0.07178624929 --0.02495973976 -0.03845621524 0.01713395812 0.07178624929 0.1190530788 -0.004373674814 -0.007659635233 -0.01712786594 0.003001988304 0.008709619155 --0.007659635233 -0.001327449323 -0.002805699736 -0.008141489474 0.001937105073 --0.01712786594 -0.002805699736 0.01083884585 -0.004389490229 0.01988311725 -0.003001988304 -0.008141489474 -0.004389490229 0.008261860746 0.01649999826 -0.008709619155 0.001937105073 0.01988311725 0.01649999826 -0.009520729505 --0.002193013685 -0.002274660197 0.001310710532 0.003872624165 0.005732563276 --0.002274660197 -0.003094151507 -0.001670638658 0.002191793392 0.007528200076 -0.001310710532 -0.001670638658 0.005461538251 0.01088739447 0.002887889039 -0.003872624165 0.002191793392 0.01088739447 0.01336072659 -0.005775443587 -0.005732563276 0.007528200076 0.002887889039 -0.005775443587 -0.01712889705 -0.000909705716 0.0005298050093 0.001453311207 0.001687968463 -0.001474199593 -0.0005298050093 0.0004040408515 0.001295015903 0.001164530339 -0.001062910885 -0.001453311207 0.001295015903 0.003250203564 0.003050239573 -0.002997848186 -0.001687968463 0.001164530339 0.003050239573 0.003247605038 -0.002799026258 --0.001474199593 -0.001062910885 -0.002997848186 -0.002799026258 0.002866695223 -3.721447354e-05 0.0002063386749 0.0003478019352 0.0006113449234 -2.997091001e-05 -0.0002063386749 1.229009541e-06 4.632118744e-05 0.0001207292459 -0.0003804010354 -0.0003478019352 4.632118744e-05 0.0002649988395 2.990131407e-05 -0.0005444613936 -0.0006113449234 0.0001207292459 2.990131407e-05 -0.000395634536 -0.0006648866457 --2.997091001e-05 -0.0003804010354 -0.0005444613936 -0.0006648866457 0.0004384442513 --0.0003424002841 -0.0002467849246 -0.0002188055143 -2.849422746e-05 0.0007132405348 --0.0002467849246 -0.0002672555318 -0.0002742508695 -3.14834434e-05 0.000622629338 --0.0002188055143 -0.0002742508695 -0.0001290034609 0.0001988182694 0.0006237927476 --2.849422746e-05 -3.14834434e-05 0.0001988182694 0.0003040207798 0.0001097451898 -0.0007132405348 0.000622629338 0.0006237927476 0.0001097451898 -0.001593050228 -0.0001199221894 5.270595389e-06 -2.824350107e-05 4.710136767e-05 -8.893326214e-05 -5.270595389e-06 3.280471718e-06 4.285103704e-05 1.273948976e-05 -3.720793488e-05 --2.824350107e-05 4.285103704e-05 0.0001689121652 9.531787724e-05 -5.566845993e-05 -4.710136767e-05 1.273948976e-05 9.531787724e-05 0.0001648992083 1.133870737e-05 --8.893326214e-05 -3.720793488e-05 -5.566845993e-05 1.133870737e-05 0.0001903184344 -4.558993917e-05 8.792974739e-05 0.0001124551719 0.0001215842386 -8.795363709e-05 -8.792974739e-05 -1.03506498e-05 1.908841841e-05 7.081941664e-05 -0.0001033668156 -0.0001124551719 1.908841841e-05 0.0001041357743 0.000105907743 -0.0001653231244 -0.0001215842386 7.081941664e-05 0.000105907743 1.353579364e-05 -0.0001425396079 --8.795363709e-05 -0.0001033668156 -0.0001653231244 -0.0001425396079 0.0002409770566 --9.802492846e-05 -2.63833134e-05 -2.771077643e-05 1.937089458e-05 0.000172015522 --2.63833134e-05 -5.577168365e-05 -6.607580703e-05 -1.850415257e-06 9.76707317e-05 --2.771077643e-05 -6.607580703e-05 -6.553493639e-05 -2.130256567e-06 0.0001102034138 -1.937089458e-05 -1.850415257e-06 -2.130256567e-06 -5.09775053e-05 -2.585992336e-06 -0.000172015522 9.76707317e-05 0.0001102034138 -2.585992336e-06 -0.0003179719324 --3.587145812e-06 1.461739906e-06 -1.583200178e-05 1.435422808e-05 2.588733123e-05 -1.461739906e-06 -1.089303418e-05 -9.861077159e-06 -7.365895204e-06 -1.347803287e-06 --1.583200178e-05 -9.861077159e-06 5.605000235e-06 -1.463697116e-05 1.008790301e-05 -1.435422808e-05 -7.365895204e-06 -1.463697116e-05 -3.54644696e-05 9.055919384e-06 -2.588733123e-05 -1.347803287e-06 1.008790301e-05 9.055919384e-06 -1.407409815e-05 -2.790395843e-06 1.680381517e-05 1.460280857e-05 2.859827604e-05 2.743308328e-06 -1.680381517e-05 -1.139780987e-05 -2.628067565e-06 1.639317643e-05 -1.362803766e-05 -1.460280857e-05 -2.628067565e-06 2.747863149e-05 2.421101446e-05 -2.681613682e-05 -2.859827604e-05 1.639317643e-05 2.421101446e-05 -8.092810649e-06 -3.09939244e-05 -2.743308328e-06 -1.362803766e-05 -2.681613682e-05 -3.09939244e-05 2.015913492e-05 --1.985989036e-05 2.211904491e-06 -3.45189906e-06 9.379300662e-06 3.707985436e-05 -2.211904491e-06 -1.93184158e-05 -2.099932545e-05 9.864840546e-07 1.585556857e-05 --3.45189906e-06 -2.099932545e-05 -1.421389007e-05 -2.049217616e-06 2.102417093e-05 -9.379300662e-06 9.864840546e-07 -2.049217616e-06 -2.61008516e-05 3.503533947e-06 -3.707985436e-05 1.585556857e-05 2.102417093e-05 3.503533947e-06 -5.315109061e-05 -0.0002591462567 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0002991883947 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0001071689887 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -2.354227291e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.604964346e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.204305912e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --5.943413238e-08 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.525404695e-07 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --9.688022439e-08 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.411210377e-07 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.718248433e-07 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --6.52787836e-08 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.672153165e-08 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.711288803e-06 0.02277472502 -0.0002353346622 0 0 -0.02277472502 -0.05507470989 -0.08006402904 0 0 --0.0002353346622 -0.08006402904 0.00163906095 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.162179835e-06 0.0006313405988 -0.0001586296337 0 0 -0.0006313405988 -0.001454460494 -0.0007513693174 0 0 --0.0001586296337 -0.0007513693174 0.000465775605 0 0 -0 0 0 0 0 -0 0 0 0 0 --4.588887108e-08 -0.0006486830864 6.213421648e-06 0 0 --0.0006486830864 0.001643877198 -0.0004667213244 0 0 -6.213421648e-06 -0.0004667213244 8.812348739e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.74342495e-08 -3.914322849e-05 3.62226752e-06 0 0 --3.914322849e-05 0.0001376452753 -0.0002979988456 0 0 -3.62226752e-06 -0.0002979988456 5.542763546e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -3.819157246e-10 1.16999461e-05 -5.331475112e-08 0 0 -1.16999461e-05 -4.01041634e-05 -8.984109857e-05 0 0 --5.331475112e-08 -8.984109857e-05 7.97007077e-07 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.404324426e-08 3.226258777e-05 1.91192441e-06 0 0 -3.226258777e-05 -9.070118269e-05 -2.786063728e-05 0 0 -1.91192441e-06 -2.786063728e-05 -2.976753842e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 -6.517822502e-10 -1.824009353e-06 -8.476930038e-08 0 0 --1.824009353e-06 5.261092448e-06 -2.065136352e-05 0 0 --8.476930038e-08 -2.065136352e-05 -2.016500912e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 -9.499290503e-10 4.857866788e-06 -1.302646095e-07 0 0 -4.857866788e-06 -1.097728813e-05 -1.322215934e-05 0 0 --1.302646095e-07 -1.322215934e-05 7.096517809e-07 0 0 -0 0 0 0 0 -0 0 0 0 0 -5.464405376e-10 9.531305314e-06 -7.478364028e-08 0 0 -9.531305314e-06 -2.465600501e-05 -2.088922716e-05 0 0 --7.478364028e-08 -2.088922716e-05 3.266429135e-07 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.427552747e-10 1.849051514e-06 3.432704847e-08 0 0 -1.849051514e-06 -5.33767244e-06 -2.094300003e-05 0 0 -3.432704847e-08 -2.094300003e-05 -7.449007139e-07 0 0 -0 0 0 0 0 -0 0 0 0 0 --4.296828018e-10 2.668052836e-06 5.907582263e-08 0 0 -2.668052836e-06 -6.980747528e-06 -9.317030602e-06 0 0 -5.907582263e-08 -9.317030602e-06 -4.041020309e-07 0 0 -0 0 0 0 0 -0 0 0 0 0 --6.812100619e-11 2.71973617e-06 9.361924925e-09 0 0 -2.71973617e-06 -6.846824067e-06 -9.126256345e-06 0 0 -9.361924925e-09 -9.126256345e-06 -6.198487907e-08 0 0 -0 0 0 0 0 -0 0 0 0 0 -4.339644186e-11 1.928601005e-06 -6.000881001e-09 0 0 -1.928601005e-06 -4.892514149e-06 -9.733436677e-06 0 0 --6.000881001e-09 -9.733436677e-06 5.951018508e-08 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0001119778598 -0.0001717207567 -5.15692101e-06 0.0006235454189 0.05299453515 --0.0001717207567 0.0001633970228 -2.710036751e-05 -0.0006826506057 -0.02215819153 --5.15692101e-06 -2.710036751e-05 6.256594935e-07 0.0001024233044 0.007092097762 -0.0006235454189 -0.0006826506057 0.0001024233044 0.002821884278 0.10211059 -0.05299453515 -0.02215819153 0.007092097762 0.10211059 -0.0129205692 -0.0001934502802 -9.118771915e-05 2.694687218e-05 0.0004490979912 0.005635314497 --9.118771915e-05 3.030669011e-05 -6.602626459e-06 -0.0002277974106 -0.004109741794 -2.694687218e-05 -6.602626459e-06 8.188609805e-07 7.030579779e-05 0.001484271197 -0.0004490979912 -0.0002277974106 7.030579779e-05 0.001022131796 0.01123622094 -0.005635314497 -0.004109741794 0.001484271197 0.01123622094 -0.002469174958 -1.00227788e-05 -1.076965233e-05 6.713803336e-06 1.698422867e-05 -0.0003827396858 --1.076965233e-05 -6.701836575e-06 1.73706619e-06 -2.916948758e-06 0.0009077325352 -6.713803336e-06 1.73706619e-06 1.127196058e-07 3.866441975e-06 -0.0004995668858 -1.698422867e-05 -2.916948758e-06 3.866441975e-06 1.591569477e-05 -0.001065143721 --0.0003827396858 0.0009077325352 -0.0004995668858 -0.001065143721 0.001127427775 -7.957888006e-06 2.95393063e-06 -4.359898304e-06 1.546217365e-05 0.000300176452 -2.95393063e-06 -2.196895559e-06 1.273508928e-06 1.057502567e-05 0.0002965523111 --4.359898304e-06 1.273508928e-06 -1.506684474e-07 -1.271731683e-05 -0.0003270171867 -1.546217365e-05 1.057502567e-05 -1.271731683e-05 2.294316844e-05 0.0003114263618 -0.000300176452 0.0002965523111 -0.0003270171867 0.0003114263618 0.000916373904 --1.075025127e-07 5.543779329e-07 -1.117192413e-06 -6.436361581e-07 7.068922458e-06 -5.543779329e-07 4.304616865e-07 -4.144302723e-07 -1.567676421e-07 -5.783739379e-05 --1.117192413e-06 -4.144302723e-07 -1.541638745e-08 -1.628236522e-07 0.0001136097366 --6.436361581e-07 -1.567676421e-07 -1.628236522e-07 -1.804509312e-07 6.491972878e-05 -7.068922458e-06 -5.783739379e-05 0.0001136097366 6.491972878e-05 -0.0003258079702 --1.610782885e-06 7.231015046e-07 -2.867647641e-07 -3.156600576e-06 1.590154578e-05 -7.231015046e-07 1.104386064e-07 -1.054343162e-08 9.751545617e-07 -1.49626617e-05 --2.867647641e-07 -1.054343162e-08 -6.464586609e-09 -4.204994122e-07 5.335770013e-06 --3.156600576e-06 9.751545617e-07 -4.204994122e-07 -5.737062362e-06 3.910896018e-05 -1.590154578e-05 -1.49626617e-05 5.335770013e-06 3.910896018e-05 -1.626160884e-05 -3.768102873e-08 -1.802600824e-08 -1.825547428e-08 1.830140558e-07 8.130104372e-06 --1.802600824e-08 -3.744933659e-08 3.048301271e-08 6.247473329e-08 5.041817961e-06 --1.825547428e-08 3.048301271e-08 -1.423329845e-09 -1.594893187e-07 -8.155009449e-06 -1.830140558e-07 6.247473329e-08 -1.594893187e-07 4.003596997e-07 1.040503663e-05 -8.130104372e-06 5.041817961e-06 -8.155009449e-06 1.040503663e-05 2.287306024e-05 -1.677253132e-07 -1.34595853e-07 1.220795099e-07 4.737082696e-07 9.180002459e-06 --1.34595853e-07 8.211114806e-08 -5.125739679e-08 -4.227554494e-07 -1.10877672e-05 -1.220795099e-07 -5.125739679e-08 4.617278886e-09 4.21646242e-07 1.339252472e-05 -4.737082696e-07 -4.227554494e-07 4.21646242e-07 1.267778943e-06 1.980450043e-05 -9.180002459e-06 -1.10877672e-05 1.339252472e-05 1.980450043e-05 -3.217019995e-05 --2.265342466e-07 -2.421934207e-08 -1.195544007e-08 -1.424615207e-07 1.800156984e-05 --2.421934207e-08 4.915127007e-08 -6.600449802e-09 -1.645664773e-07 -6.662993067e-06 --1.195544007e-08 -6.600449802e-09 -8.348231173e-11 7.842834555e-09 1.833396612e-06 --1.424615207e-07 -1.645664773e-07 7.842834555e-09 3.414270758e-07 3.610650706e-05 -1.800156984e-05 -6.662993067e-06 1.833396612e-06 3.610650706e-05 -5.182803589e-06 --2.718338172e-07 -2.821099215e-08 2.824070786e-08 -3.421961146e-07 9.477181521e-06 --2.821099215e-08 3.511915889e-09 7.642756358e-09 -6.147631946e-08 -4.851331984e-07 -2.824070786e-08 7.642756358e-09 5.13821671e-10 1.655330147e-08 -2.059218538e-06 --3.421961146e-07 -6.147631946e-08 1.655330147e-08 -3.260944236e-07 1.785162727e-05 -9.477181521e-06 -4.851331984e-07 -2.059218538e-06 1.785162727e-05 4.546478323e-06 --5.577210776e-08 -1.686301512e-09 -1.32116381e-08 -2.574298901e-08 5.107358775e-06 --1.686301512e-09 2.295254739e-08 -8.803927505e-09 -5.751905446e-08 -3.105229351e-06 --1.32116381e-08 -8.803927505e-09 -5.903628619e-11 1.463236665e-08 2.400794431e-06 --2.574298901e-08 -5.751905446e-08 1.463236665e-08 1.280747563e-07 1.039771399e-05 -5.107358775e-06 -3.105229351e-06 2.400794431e-06 1.039771399e-05 -5.80863336e-06 --1.62296891e-08 -1.995375944e-08 -5.526078917e-10 6.703874608e-08 6.161963951e-06 --1.995375944e-08 1.531964419e-08 -2.332894145e-09 -7.040202339e-08 -2.07799585e-06 --5.526078917e-10 -2.332894145e-09 4.978826594e-11 8.623359139e-09 6.103557614e-07 -6.703874608e-08 -7.040202339e-08 8.623359139e-09 3.091320779e-07 1.156773645e-05 -6.161963951e-06 -2.07799585e-06 6.103557614e-07 1.156773645e-05 -9.364745196e-07 --7.370735402e-08 -1.012165671e-08 -2.74628829e-09 -4.78032827e-08 5.60089211e-06 --1.012165671e-08 1.174099884e-08 -1.411434449e-09 -4.67311158e-08 -1.591969448e-06 --2.74628829e-09 -1.411434449e-09 -2.085366256e-11 1.382762661e-09 3.946664645e-07 --4.78032827e-08 -4.67311158e-08 1.382762661e-09 9.186418154e-08 1.085492948e-05 -5.60089211e-06 -1.591969448e-06 3.946664645e-07 1.085492948e-05 -1.048829429e-06 -0.02292669939 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.03547095276 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.00939491017 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0003141392712 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0001120135745 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0002757409497 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -7.86138204e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --5.012552072e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.94688799e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.632780342e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -4.98325368e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -2.535003047e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --8.664684922e-07 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.007593123903 0.04693405066 0.0175452084 0 0 -0.04693405066 -0.129017497 0.1038365094 0 0 -0.0175452084 0.1038365094 0.04049043391 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.01615411566 0.01039488978 0.03663407571 0 0 -0.01039488978 -0.04759249725 0.01988226288 0 0 -0.03663407571 0.01988226288 0.08282724511 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.01048416821 -0.005044150165 0.02336432518 0 0 --0.005044150165 -0.002103292687 -0.01237061105 0 0 -0.02336432518 -0.01237061105 0.05178654887 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.002539126069 -0.003583563159 0.005586680736 0 0 --0.003583563159 0.004822366294 -0.0077361464 0 0 -0.005586680736 -0.0077361464 0.01219822978 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0002164549373 -0.0006826672716 0.0004872698127 0 0 --0.0006826672716 0.001310749468 -0.001476445633 0 0 -0.0004872698127 -0.001476445633 0.001092589759 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.00029371952 0.0001475791785 -0.0006832243795 0 0 -0.0001475791785 0.0001046102774 0.0003584831943 0 0 --0.0006832243795 0.0003584831943 -0.001587964113 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0002602733529 0.0003933474139 -0.0006148433953 0 0 -0.0003933474139 -0.0005850782748 0.000927714839 0 0 --0.0006148433953 0.000927714839 -0.001452207346 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.09263129e-05 3.656720291e-05 -7.222174271e-05 0 0 -3.656720291e-05 -4.297162841e-05 8.555854468e-05 0 0 --7.222174271e-05 8.555854468e-05 -0.0001685573121 0 0 -0 0 0 0 0 -0 0 0 0 0 -3.61581368e-05 5.745716958e-06 8.308945162e-05 0 0 -5.745716958e-06 -6.834638065e-05 8.474824951e-06 0 0 -8.308945162e-05 8.474824951e-06 0.0001906122575 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.780699067e-05 -3.304159703e-05 3.960872312e-05 0 0 --3.304159703e-05 5.210099305e-05 -7.134296705e-05 0 0 -3.960872312e-05 -7.134296705e-05 8.759990966e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.12175903e-05 -5.877940788e-06 2.527372474e-05 0 0 --5.877940788e-06 -1.789189055e-06 -1.427344284e-05 0 0 -2.527372474e-05 -1.427344284e-05 5.672485657e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.046052953e-06 -1.803625396e-06 -2.360112893e-06 0 0 --1.803625396e-06 5.830699447e-06 -3.652748945e-06 0 0 --2.360112893e-06 -3.652748945e-06 -5.305492619e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 --4.645324838e-06 1.03895573e-05 -1.088019936e-05 0 0 -1.03895573e-05 -1.915318638e-05 2.411536611e-05 0 0 --1.088019936e-05 2.411536611e-05 -2.547168337e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.004692014516 -0.005339756796 0.002992413908 0.002356088028 -0.01270217252 --0.005339756796 -0.005788452187 0.004486278014 0.000581584544 -0.01374752624 -0.002992413908 0.004486278014 0.002140607473 -0.009369453642 0.01075434509 -0.002356088028 0.000581584544 -0.009369453642 0.01410109363 0.001223334931 --0.01270217252 -0.01374752624 0.01075434509 0.001223334931 -0.03264850018 --0.002753582565 -0.00351062627 -7.148118846e-05 0.004810355754 -0.008400982723 --0.00351062627 -0.003858005945 0.001810543844 0.002330673132 -0.009233590035 --7.148118846e-05 0.001810543844 0.005851796489 -0.01157886336 0.004328588746 -0.004810355754 0.002330673132 -0.01157886336 0.01499691767 0.005585475318 --0.008400982723 -0.009233590035 0.004328588746 0.005585475318 -0.02209928484 -4.32315304e-05 -0.0004160754533 -0.00153674301 0.002964833047 -0.0009946190058 --0.0004160754533 -0.0005903848057 -0.0004951512137 0.00158892435 -0.001428697825 --0.00153674301 -0.0004951512137 0.003777854831 -0.005180751411 -0.001241518553 -0.002964833047 0.00158892435 -0.005180751411 0.005841158239 0.00391233663 --0.0009946190058 -0.001428697825 -0.001241518553 0.00391233663 -0.003456921163 -0.0003820991274 0.0001968308831 -0.0005453448903 0.0005623055508 0.0004927629863 -0.0001968308831 9.364273479e-05 -0.0002440331374 0.0002378102576 0.0002384069124 --0.0005453448903 -0.0002440331374 0.0006027516935 -0.0005557562806 -0.0006298466967 -0.0005623055508 0.0002378102576 -0.0005557562806 0.0004806398732 0.0006219376428 -0.0004927629863 0.0002384069124 -0.0006298466967 0.0006219376428 0.0006047589428 -4.915652385e-05 1.348289221e-05 -2.386462545e-05 1.290217984e-05 3.667676959e-05 -1.348289221e-05 -1.36374342e-05 2.051215178e-05 -1.964406464e-05 -2.878967205e-05 --2.386462545e-05 2.051215178e-05 -3.064678776e-05 2.992078035e-05 4.283152127e-05 -1.290217984e-05 -1.964406464e-05 2.992078035e-05 -2.761616479e-05 -4.232703515e-05 -3.667676959e-05 -2.878967205e-05 4.283152127e-05 -4.232703515e-05 -5.969763475e-05 --2.034335954e-05 -2.514485849e-05 1.077666728e-05 1.738362827e-05 -6.07786279e-05 --2.514485849e-05 -2.953873099e-05 2.022302441e-05 8.800151094e-06 -7.160825347e-05 -1.077666728e-05 2.022302441e-05 2.52141365e-05 -6.604084997e-05 4.794549509e-05 -1.738362827e-05 8.800151094e-06 -6.604084997e-05 8.959488609e-05 2.299211591e-05 --6.07786279e-05 -7.160825347e-05 4.794549509e-05 2.299211591e-05 -0.0001735640142 -1.006514716e-05 5.310499869e-06 -1.375775905e-05 1.294783396e-05 1.391398589e-05 -5.310499869e-06 2.471656383e-06 -6.219861628e-06 5.362904259e-06 6.770122495e-06 --1.375775905e-05 -6.219861628e-06 1.553667938e-05 -1.307799762e-05 -1.722202665e-05 -1.294783396e-05 5.362904259e-06 -1.307799762e-05 1.012553971e-05 1.535942514e-05 -1.391398589e-05 6.770122495e-06 -1.722202665e-05 1.535942514e-05 1.824702557e-05 -8.555338006e-06 4.091998966e-06 -8.983084051e-06 7.972296635e-06 1.02274154e-05 -4.091998966e-06 1.187180779e-06 -2.607979909e-06 1.995261143e-06 3.18081725e-06 --8.983084051e-06 -2.607979909e-06 5.729162082e-06 -4.384372479e-06 -6.986752282e-06 -7.972296635e-06 1.995261143e-06 -4.384372479e-06 3.137305368e-06 5.491201243e-06 -1.02274154e-05 3.18081725e-06 -6.986752282e-06 5.491201243e-06 8.424677102e-06 --2.099986406e-06 -2.774874635e-06 3.529277461e-06 -1.819618276e-06 -6.6719847e-06 --2.774874635e-06 -3.576369131e-06 4.194496357e-06 -1.791770422e-06 -8.59330298e-06 -3.529277461e-06 4.194496357e-06 -3.495028279e-06 -1.243161361e-07 1.005514453e-05 --1.819618276e-06 -1.791770422e-06 -1.243161361e-07 2.580236369e-06 -4.268711125e-06 --6.6719847e-06 -8.59330298e-06 1.005514453e-05 -4.268711125e-06 -2.064761192e-05 -2.457733779e-07 -1.165939369e-07 4.786417498e-08 -2.092014179e-07 -4.312068611e-08 --1.165939369e-07 -3.859560993e-07 5.093703183e-07 -5.346012084e-07 -7.192613208e-07 -4.786417498e-08 5.093703183e-07 -6.322521949e-07 7.235436496e-07 8.835473518e-07 --2.092014179e-07 -5.346012084e-07 7.235436496e-07 -7.323964116e-07 -1.02584039e-06 --4.312068611e-08 -7.192613208e-07 8.835473518e-07 -1.02584039e-06 -1.232457302e-06 -7.246494795e-07 3.557035559e-07 -1.49258038e-06 1.827125484e-06 8.798582682e-07 -3.557035559e-07 1.666856869e-07 -8.036617809e-07 1.022939154e-06 4.09934862e-07 --1.49258038e-06 -8.036617809e-07 2.437327879e-06 -2.63247678e-06 -2.009212037e-06 -1.827125484e-06 1.022939154e-06 -2.63247678e-06 2.599079484e-06 2.568124278e-06 -8.798582682e-07 4.09934862e-07 -2.009212037e-06 2.568124278e-06 1.00741863e-06 --5.310511317e-07 -6.398606961e-07 5.81772332e-07 -3.667558445e-08 -1.551340109e-06 --6.398606961e-07 -7.687844352e-07 7.350599211e-07 -9.917520798e-08 -1.865299673e-06 -5.81772332e-07 7.350599211e-07 -1.044721707e-07 -8.194129299e-07 1.760507851e-06 --3.667558445e-08 -9.917520798e-08 -8.194129299e-07 1.384115382e-06 -2.055374662e-07 --1.551340109e-06 -1.865299673e-06 1.760507851e-06 -2.055374662e-07 -4.524890231e-06 --1.089621017e-07 -1.295403355e-07 7.074824819e-09 1.556822132e-07 -3.042008295e-07 --1.295403355e-07 -1.321807477e-07 6.594411996e-08 6.294980398e-08 -3.068801573e-07 -7.074824819e-09 6.594411996e-08 1.512103959e-07 -3.320798706e-07 1.641397974e-07 -1.556822132e-07 6.294980398e-08 -3.320798706e-07 4.610613241e-07 1.281201502e-07 --3.042008295e-07 -3.068801573e-07 1.641397974e-07 1.281201502e-07 -7.118127239e-07 -0.01017966223 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.01129512741 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.002230122749 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.002116546085 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.86692803e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.801005489e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --7.558073592e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -2.217845306e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.248117143e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.29286638e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -4.56624333e-07 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.85299045e-08 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.05152309e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.02655220845 0.03857172385 0.02757116007 0 0 -0.03857172385 -0.07588697703 0.06155858775 0 0 -0.02757116007 0.06155858775 0.0251230034 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.01032900641 -0.006231352751 0.01568183468 0 0 --0.006231352751 -0.001339796533 -0.003340963883 0 0 -0.01568183468 -0.003340963883 0.01646413125 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0008431284053 0.0004915160006 0.0002813141037 0 0 -0.0004915160006 0.001281467476 -0.001323731226 0 0 -0.0002813141037 -0.001323731226 0.000763905671 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.002199299074 0.0003471155161 0.000845501736 0 0 -0.0003471155161 -1.929110163e-05 1.617229142e-05 0 0 -0.000845501736 1.617229142e-05 0.000139385791 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.000163951764 -0.0001007347059 -2.708302939e-06 0 0 --0.0001007347059 -0.0001192695556 0.0001208402184 0 0 --2.708302939e-06 0.0001208402184 -7.835423196e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --4.446129448e-05 5.964772979e-05 -9.564686366e-05 0 0 -5.964772979e-05 -5.379355149e-05 7.790477988e-05 0 0 --9.564686366e-05 7.790477988e-05 -0.0001088641416 0 0 -0 0 0 0 0 -0 0 0 0 0 -6.30138245e-05 5.886335885e-06 2.736560907e-05 0 0 -5.886335885e-06 -1.506600234e-06 -1.838182593e-07 0 0 -2.736560907e-05 -1.838182593e-07 8.233232864e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 --6.11234644e-06 -1.206148248e-05 1.338994295e-05 0 0 --1.206148248e-05 -1.896320801e-05 1.083964208e-05 0 0 -1.338994295e-05 1.083964208e-05 2.086097467e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.364238327e-05 2.866602765e-05 -2.074436188e-05 0 0 -2.866602765e-05 -2.592907112e-05 2.807678201e-05 0 0 --2.074436188e-05 2.807678201e-05 -1.723272215e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.208231587e-05 1.329519698e-05 -9.850862637e-06 0 0 -1.329519698e-05 -1.078325362e-05 1.179636705e-05 0 0 --9.850862637e-06 1.179636705e-05 -7.793622015e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.836793922e-06 1.038806594e-06 3.08570187e-06 0 0 -1.038806594e-06 -7.346651055e-06 5.581541509e-06 0 0 -3.08570187e-06 5.581541509e-06 3.328767599e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.382743166e-06 6.209759091e-06 1.212258766e-06 0 0 -6.209759091e-06 -7.867175874e-06 6.862464556e-06 0 0 -1.212258766e-06 6.862464556e-06 1.00653083e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.612912564e-06 6.469508034e-06 -3.779983193e-06 0 0 -6.469508034e-06 -7.996304376e-06 8.105424823e-06 0 0 --3.779983193e-06 8.105424823e-06 -3.456814454e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.02335592555 0.01900860081 0.03063460734 -0.01756513858 0.01755092724 -0.01900860081 -0.0707056202 0.05688909611 0.007984199801 -0.03481671879 -0.03063460734 0.05688909611 0.02833117652 -0.03130120105 0.04122855791 --0.01756513858 0.007984199801 -0.03130120105 0.007449883651 -0.0005049345132 -0.01755092724 -0.03481671879 0.04122855791 -0.0005049345132 -0.01478760676 -0.01093260603 -0.003215509102 0.01928562943 -0.005162675668 0.001333042765 --0.003215509102 -0.009413203147 0.0003508003356 0.00464251722 -0.003973933691 -0.01928562943 0.0003508003356 0.03051867759 -0.01092365872 0.004434185352 --0.005162675668 0.00464251722 -0.01092365872 0.001495796957 0.0004507219536 -0.001333042765 -0.003973933691 0.004434185352 0.0004507219536 -0.001075972268 -0.0002614883311 -0.0009254653273 0.001565822779 -3.41905579e-05 -6.957350155e-05 --0.0009254653273 0.00205858703 -0.003178511237 0.0002060521463 0.0006223562365 -0.001565822779 -0.003178511237 0.004786485074 -0.0003699053712 -0.001147095073 --3.41905579e-05 0.0002060521463 -0.0003699053712 -1.473138471e-06 -1.718979379e-05 --6.957350155e-05 0.0006223562365 -0.001147095073 -1.718979379e-05 -9.77458826e-05 -0.0009315132433 0.0006849941234 0.000284505859 -0.0004637418766 0.0002639010188 -0.0006849941234 0.0003320910086 -9.1175925e-05 -0.0001882912977 -6.96969505e-06 -0.000284505859 -9.1175925e-05 -0.0004388694648 0.000125672119 -0.0002712583969 --0.0004637418766 -0.0001882912977 0.000125672119 9.496198547e-05 4.751334445e-05 -0.0002639010188 -6.96969505e-06 -0.0002712583969 4.751334445e-05 -0.0001607129586 -0.0002362482392 -0.0002105062773 0.0001561137601 -2.087030718e-07 -0.0001690148633 --0.0002105062773 -0.0002467467746 0.0003060316824 -2.462114896e-05 -0.0001060522912 -0.0001561137601 0.0003060316824 -0.0003530630611 2.528716018e-05 0.0001513586964 --2.087030718e-07 -2.462114896e-05 2.528716018e-05 -1.416739751e-06 -1.450999786e-05 --0.0001690148633 -0.0001060522912 0.0001513586964 -1.450999786e-05 -3.074792779e-05 --6.963728157e-05 2.445070172e-05 -6.944500545e-05 1.724083268e-05 9.530285756e-06 -2.445070172e-05 -7.79066529e-06 2.042578475e-05 -4.18640411e-06 -2.065243522e-06 --6.944500545e-05 2.042578475e-05 -4.953758071e-05 7.891328287e-06 3.122148097e-06 -1.724083268e-05 -4.18640411e-06 7.891328287e-06 1.201630707e-07 6.514453696e-07 -9.530285756e-06 -2.065243522e-06 3.122148097e-06 6.514453696e-07 7.614727143e-07 -2.279944141e-05 2.655164876e-06 1.567244135e-05 -9.484738503e-06 -2.462289955e-06 -2.655164876e-06 2.39119971e-07 9.927734853e-07 -8.130779712e-07 -5.699633844e-07 -1.567244135e-05 9.927734853e-07 8.881460158e-07 -3.058255026e-06 -5.055868423e-06 --9.484738503e-06 -8.130779712e-07 -3.058255026e-06 2.733535767e-06 2.20208811e-06 --2.462289955e-06 -5.699633844e-07 -5.055868423e-06 2.20208811e-06 -8.783834818e-07 --7.602123196e-06 -1.733424574e-05 1.359922917e-05 2.081266865e-06 -8.187631098e-06 --1.733424574e-05 -3.9222345e-05 2.709534647e-05 5.991922209e-06 -1.916606501e-05 -1.359922917e-05 2.709534647e-05 2.62267513e-05 -1.982236465e-05 2.106376263e-05 -2.081266865e-06 5.991922209e-06 -1.982236465e-05 4.557105217e-06 1.97988125e-07 --8.187631098e-06 -1.916606501e-05 2.106376263e-05 1.97988125e-07 -8.003667955e-06 --1.025666616e-05 2.453515702e-05 -1.734828173e-05 -1.609214531e-06 1.605660343e-05 -2.453515702e-05 -1.692904421e-05 2.10279894e-05 -1.799648534e-06 -9.202723232e-06 --1.734828173e-05 2.10279894e-05 -1.930846445e-05 4.725341187e-08 1.284171432e-05 --1.609214531e-06 -1.799648534e-06 4.725341187e-08 5.116661092e-07 -1.431538406e-06 -1.605660343e-05 -9.202723232e-06 1.284171432e-05 -1.431538406e-06 -4.710429631e-06 --1.052629582e-07 9.59465987e-07 -7.161026291e-07 -6.12529341e-08 5.710392271e-07 -9.59465987e-07 -6.822283584e-06 7.20520465e-06 -3.224281115e-07 -3.5794808e-06 --7.161026291e-07 7.20520465e-06 -4.632638282e-06 -7.271852555e-07 4.457801363e-06 --6.12529341e-08 -3.224281115e-07 -7.271852555e-07 3.677021249e-07 -4.121273693e-07 -5.710392271e-07 -3.5794808e-06 4.457801363e-06 -4.121273693e-07 -1.723918731e-06 -2.888686536e-06 9.565185807e-08 5.556092913e-06 -2.002912533e-06 8.796925166e-07 -9.565185807e-08 -7.860310063e-06 5.034414235e-06 1.402728367e-06 -3.9337526e-06 -5.556092913e-06 5.034414235e-06 7.694675096e-06 -4.758553032e-06 4.136427221e-06 --2.002912533e-06 1.402728367e-06 -4.758553032e-06 1.11430133e-06 1.303955516e-07 -8.796925166e-07 -3.9337526e-06 4.136427221e-06 1.303955516e-07 -1.729242483e-06 -3.320369348e-06 3.557955562e-06 3.252718537e-06 -2.511206066e-06 2.713788007e-06 -3.557955562e-06 -7.251947864e-06 6.077043522e-06 5.246015868e-07 -3.990515891e-06 -3.252718537e-06 6.077043522e-06 2.579433536e-06 -3.213190627e-06 4.274293598e-06 --2.511206066e-06 5.246015868e-07 -3.213190627e-06 9.647656667e-07 -4.765032314e-08 -2.713788007e-06 -3.990515891e-06 4.274293598e-06 -4.765032314e-08 -2.083047648e-06 -1.745723899e-07 1.755164244e-06 -1.691956255e-07 -5.398107489e-07 1.231303721e-06 -1.755164244e-06 -6.462341898e-06 6.477808516e-06 -1.759502957e-08 -3.346139103e-06 --1.691956255e-07 6.477808516e-06 -2.610702262e-06 -1.312050635e-06 4.141565387e-06 --5.398107489e-07 -1.759502957e-08 -1.312050635e-06 4.553338171e-07 -2.787796209e-07 -1.231303721e-06 -3.346139103e-06 4.141565387e-06 -2.787796209e-07 -1.572905659e-06 -0.02708032077 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.03241990335 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.01190201794 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.001682681646 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0003056900521 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0001793796271 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -7.707143934e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.610037144e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --5.067969148e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.182180097e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.295184517e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.15105561e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.864855222e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0002770453058 -0.001205724586 0.0128056092 0 0 --0.001205724586 0.004193727136 -0.03227475629 0 0 -0.0128056092 -0.03227475629 0.06973620074 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0001593939292 -0.01269436044 0.007280750147 0 0 --0.01269436044 0.01221946529 -0.02520991624 0 0 -0.007280750147 -0.02520991624 0.02456659541 0 0 -0 0 0 0 0 -0 0 0 0 0 --9.260547804e-06 0.000275056365 -0.0004178007103 0 0 -0.000275056365 0.001061960201 -0.0006075189032 0 0 --0.0004178007103 -0.0006075189032 -0.0004950799531 0 0 -0 0 0 0 0 -0 0 0 0 0 -8.159479916e-08 -1.88701563e-05 9.71797159e-06 0 0 --1.88701563e-05 0.003788718861 -0.002045567404 0 0 -9.71797159e-06 -0.002045567404 0.001086577469 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.308170771e-07 -6.215633272e-07 -5.4822456e-06 0 0 --6.215633272e-07 7.653035714e-06 -8.226822467e-05 0 0 --5.4822456e-06 -8.226822467e-05 6.825102368e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.941796323e-06 0.0001904033533 -8.855776562e-05 0 0 -0.0001904033533 0.0001004768722 0.0002775926164 0 0 --8.855776562e-05 0.0002775926164 -0.0002743517578 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.052059133e-07 1.058438571e-05 -5.150875717e-06 0 0 -1.058438571e-05 -0.0002463049283 0.0001407416157 0 0 --5.150875717e-06 0.0001407416157 -7.811929598e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -4.596128898e-08 -2.016871513e-06 2.187341115e-06 0 0 --2.016871513e-06 2.951188858e-05 -2.675252326e-05 0 0 -2.187341115e-06 -2.675252326e-05 2.28479826e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.472566707e-07 -2.705535905e-06 6.752890761e-06 0 0 --2.705535905e-06 4.981415547e-06 -1.171874448e-05 0 0 -6.752890761e-06 -1.171874448e-05 2.74543227e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --5.698255398e-08 8.326162748e-06 -2.66641348e-06 0 0 -8.326162748e-06 -7.017105053e-05 4.333704124e-05 0 0 --2.66641348e-06 4.333704124e-05 -2.018067994e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --6.596338675e-08 7.634198857e-06 -3.082703263e-06 0 0 -7.634198857e-06 -6.07143427e-05 4.070124673e-05 0 0 --3.082703263e-06 4.070124673e-05 -2.265229335e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.393542234e-08 4.776313018e-06 -1.10479032e-06 0 0 -4.776313018e-06 -1.938415735e-05 1.491491666e-05 0 0 --1.10479032e-06 1.491491666e-05 -5.746187597e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.131904997e-08 1.25409959e-06 5.254926282e-07 0 0 -1.25409959e-06 -7.877569178e-06 2.517025469e-06 0 0 -5.254926282e-07 2.517025469e-06 3.261962713e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.01032052413 -0.001951131373 -0.001714175974 0.03025129306 -0.003967946781 --0.001951131373 4.721096243e-05 -5.418134016e-05 0.009892989513 0.002226149349 --0.001714175974 -5.418134016e-05 -0.0001096503073 0.007731938418 0.001271526762 -0.03025129306 0.009892989513 0.007731938418 -0.04680190942 0.04148738809 --0.003967946781 0.002226149349 0.001271526762 0.04148738809 0.01976457479 -0.01825790753 0.006922754655 0.004804961593 -0.01452776491 0.03345189637 -0.006922754655 0.0002384015808 1.165680525e-05 -0.005142326071 0.01102009249 -0.004804961593 1.165680525e-05 -0.0001085821265 -0.003545602175 0.007541622543 --0.01452776491 -0.005142326071 -0.003545602175 0.01150354185 -0.02636236426 -0.03345189637 0.01102009249 0.007541622543 -0.02636236426 0.06013030704 -0.0002894284877 0.0009299979109 0.0004887202414 -6.772960004e-06 0.001291542425 -0.0009299979109 2.546118408e-05 2.242887712e-06 -0.001204164167 0.001156395428 -0.0004887202414 2.242887712e-06 -4.71585319e-06 -0.0006372410703 0.0005964408091 --6.772960004e-06 -0.001204164167 -0.0006372410703 -0.000471712404 -0.001224911735 -0.001291542425 0.001156395428 0.0005964408091 -0.001224911735 0.002738639204 -0.001147208261 -0.0004419869206 -4.431444638e-05 -0.001304301146 0.001207838507 --0.0004419869206 -1.623675066e-05 4.561076242e-06 0.0002977222567 -0.0007225838282 --4.431444638e-05 4.561076242e-06 8.724652865e-07 3.664529751e-05 -6.391218523e-05 --0.001304301146 0.0002977222567 3.664529751e-05 0.001258062289 -0.001655663165 -0.001207838507 -0.0007225838282 -6.391218523e-05 -0.001655663165 0.0009169087951 --4.521347087e-05 -3.924879835e-05 1.7650026e-05 3.231023808e-06 -0.0001074350225 --3.924879835e-05 -9.976805764e-07 3.558206186e-07 5.538380422e-05 -4.575742943e-05 -1.7650026e-05 3.558206186e-07 -1.180042143e-07 -2.50534551e-05 2.044359243e-05 -3.231023808e-06 5.538380422e-05 -2.50534551e-05 8.335774829e-05 8.319877751e-05 --0.0001074350225 -4.575742943e-05 2.044359243e-05 8.319877751e-05 -0.0001870516168 --0.0001181823629 -0.0001264413154 -5.461341977e-05 6.229794622e-05 -0.0003216359895 --0.0001264413154 -3.945840307e-06 1.400660856e-07 0.0001272713484 -0.0001805916522 --5.461341977e-05 1.400660856e-07 8.830382796e-07 5.582325997e-05 -7.570596985e-05 -6.229794622e-05 0.0001272713484 5.582325997e-05 -4.858563952e-06 0.0002450231648 --0.0003216359895 -0.0001805916522 -7.570596985e-05 0.0002450231648 -0.0006717389596 --1.673212468e-05 5.546668798e-06 -9.113573639e-07 2.577024069e-05 -1.575755529e-05 -5.546668798e-06 1.453489306e-07 -3.150952697e-08 -7.874194827e-06 6.435598243e-06 --9.113573639e-07 -3.150952697e-08 6.459843756e-09 1.291216156e-06 -1.062074319e-06 -2.577024069e-05 -7.874194827e-06 1.291216156e-06 -3.946513091e-05 2.467766424e-05 --1.575755529e-05 6.435598243e-06 -1.062074319e-06 2.467766424e-05 -1.409938028e-05 -1.954495298e-05 7.773101174e-06 1.438096974e-06 -9.546358395e-06 3.638212719e-05 -7.773101174e-06 2.903680723e-07 -7.220714804e-08 -4.059959553e-06 1.338916007e-05 -1.438096974e-06 -7.220714804e-08 -4.231831614e-08 -7.629698435e-07 2.42855965e-06 --9.546358395e-06 -4.059959553e-06 -7.629698435e-07 4.637978629e-06 -1.787170373e-05 -3.638212719e-05 1.338916007e-05 2.42855965e-06 -1.787170373e-05 6.730730168e-05 --1.342019207e-05 -5.223866758e-06 -2.157474416e-06 1.648219259e-05 -2.124655037e-05 --5.223866758e-06 -1.023839225e-07 -2.773497933e-08 9.547260903e-06 -4.740276461e-06 --2.157474416e-06 -2.773497933e-08 -5.335841649e-09 3.966645857e-06 -1.931151893e-06 -1.648219259e-05 9.547260903e-06 3.966645857e-06 -1.516456427e-05 3.181880318e-05 --2.124655037e-05 -4.740276461e-06 -1.931151893e-06 3.181880318e-05 -2.718395831e-05 --3.400386804e-05 3.625095782e-07 -2.872613797e-06 4.047074732e-05 -4.759388902e-05 -3.625095782e-07 1.732389966e-08 -4.596372451e-08 -4.539585766e-07 4.074630214e-07 --2.872613797e-06 -4.596372451e-08 3.416014206e-08 3.500282151e-06 -3.659487451e-06 -4.047074732e-05 -4.539585766e-07 3.500282151e-06 -4.814359542e-05 5.675147186e-05 --4.759388902e-05 4.074630214e-07 -3.659487451e-06 5.675147186e-05 -6.614404287e-05 --9.817885954e-06 -2.272597197e-06 -1.172238628e-06 1.081262043e-05 -1.518803397e-05 --2.272597197e-06 -5.782209193e-08 -7.162777784e-09 3.121698248e-06 -2.714891458e-06 --1.172238628e-06 -7.162777784e-09 9.091980481e-09 1.640169981e-06 -1.36162275e-06 -1.081262043e-05 3.121698248e-06 1.640169981e-06 -1.109022889e-05 1.778521074e-05 --1.518803397e-05 -2.714891458e-06 -1.36162275e-06 1.778521074e-05 -2.212606344e-05 --3.971404694e-06 -9.734609551e-07 -5.497908725e-07 5.728899364e-06 -5.280428544e-06 --9.734609551e-07 -1.596804892e-08 -8.132397262e-09 1.994220154e-06 -7.473228753e-07 --5.497908725e-07 -8.132397262e-09 -4.089073827e-09 1.128642646e-06 -4.198958609e-07 -5.728899364e-06 1.994220154e-06 1.128642646e-06 -6.700848547e-06 9.066671768e-06 --5.280428544e-06 -7.473228753e-07 -4.198958609e-07 9.066671768e-06 -5.67702112e-06 --7.617420484e-06 -9.614440681e-07 -8.079356316e-07 9.711073543e-06 -1.059589927e-05 --9.614440681e-07 -2.150067515e-08 -8.048220618e-09 1.496647886e-06 -1.040923038e-06 --8.079356316e-07 -8.048220618e-09 2.662017518e-09 1.284875397e-06 -8.449764344e-07 -9.711073543e-06 1.496647886e-06 1.284875397e-06 -1.164492085e-05 1.431264394e-05 --1.059589927e-05 -1.040923038e-06 -8.449764344e-07 1.431264394e-05 -1.385881352e-05 --0.0002489238229 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0002988136131 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0001050442716 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.175054822e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.009998387e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.326564211e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.791313279e-07 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.611355788e-07 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -8.585177399e-08 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -3.101414689e-07 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.823267747e-07 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -6.513771828e-08 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.539121333e-08 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.677710479e-06 0.02232785205 -0.0002247971988 0 0 -0.02232785205 -0.05373345886 0.07908055835 0 0 --0.0002247971988 0.07908055835 -0.001607677102 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.115055775e-06 0.0006057406034 -0.0001505794035 0 0 -0.0006057406034 -0.001396357157 0.001039114141 0 0 --0.0001505794035 0.001039114141 -0.0004317814083 0 0 -0 0 0 0 0 -0 0 0 0 0 --4.250898449e-08 -0.000600904649 5.789762414e-06 0 0 --0.000600904649 0.001551499532 0.0005283086948 0 0 -5.789762414e-06 0.0005283086948 -1.028988489e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.833776358e-08 -2.616171566e-05 2.590442003e-06 0 0 --2.616171566e-05 0.0001070422072 0.0002832918072 0 0 -2.590442003e-06 0.0002832918072 -5.484310605e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -3.250466442e-11 9.957453906e-07 -2.57946517e-09 0 0 -9.957453906e-07 -7.263418923e-06 0.0001123396098 0 0 --2.57946517e-09 0.0001123396098 -9.95470731e-07 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.401195266e-08 3.21907897e-05 1.898101799e-06 0 0 -3.21907897e-05 -9.132995651e-05 1.610027128e-05 0 0 -1.898101799e-06 1.610027128e-05 2.222459691e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 -3.255725566e-10 -9.111190637e-07 -4.778627725e-08 0 0 --9.111190637e-07 2.693999374e-06 2.014291034e-05 0 0 --4.778627725e-08 2.014291034e-05 1.948428237e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 -7.015698893e-10 3.587800965e-06 -9.371616155e-08 0 0 -3.587800965e-06 -7.605505308e-06 1.570581918e-05 0 0 --9.371616155e-08 1.570581918e-05 -8.284081371e-07 0 0 -0 0 0 0 0 -0 0 0 0 0 -5.607432693e-10 9.780784759e-06 -7.557235187e-08 0 0 -9.780784759e-06 -2.504869811e-05 1.933479157e-05 0 0 --7.557235187e-08 1.933479157e-05 -2.994368382e-07 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.951668223e-10 2.24825914e-06 3.872852962e-08 0 0 -2.24825914e-06 -6.252321573e-06 2.03844184e-05 0 0 -3.872852962e-08 2.03844184e-05 7.286701342e-07 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.797090073e-10 2.3577519e-06 5.076864377e-08 0 0 -2.3577519e-06 -6.269931667e-06 9.602186851e-06 0 0 -5.076864377e-08 9.602186851e-06 4.229071278e-07 0 0 -0 0 0 0 0 -0 0 0 0 0 --6.941129951e-11 2.771251474e-06 9.313577023e-09 0 0 -2.771251474e-06 -7.016283207e-06 8.720628126e-06 0 0 -9.313577023e-09 8.720628126e-06 5.938664868e-08 0 0 -0 0 0 0 0 -0 0 0 0 0 -4.432758479e-11 1.969982828e-06 -5.909146669e-09 0 0 -1.969982828e-06 -4.912687081e-06 9.655945887e-06 0 0 --5.909146669e-09 9.655945887e-06 -5.894527883e-08 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0001111944648 0.0001699979965 -9.664381322e-06 -0.000618485131 -0.05261102133 -0.0001699979965 -0.0001658887951 -2.46039263e-05 0.0006871202246 0.02254112368 --9.664381322e-06 -2.46039263e-05 6.130916437e-07 9.144321603e-05 0.006949665538 --0.000618485131 0.0006871202246 9.144321603e-05 -0.002820381498 -0.1022235721 --0.05261102133 0.02254112368 0.006949665538 -0.1022235721 -0.01133140783 --0.0001873562092 8.95788827e-05 2.439294622e-05 -0.0004361151818 -0.005499351974 -8.95788827e-05 -2.989635954e-05 -4.460004187e-06 0.0002242169846 0.004063132226 -2.439294622e-05 -4.460004187e-06 8.355312407e-07 6.552466084e-05 0.001514494667 --0.0004361151818 0.0002242169846 6.552466084e-05 -0.0009960976999 -0.01106036704 --0.005499351974 0.004063132226 0.001514494667 -0.01106036704 -0.002469550752 --8.237230295e-06 1.04268781e-05 6.711867936e-06 -1.490735025e-05 0.0003005669973 -1.04268781e-05 6.377010853e-06 1.958136635e-06 3.020639018e-06 -0.0008678629698 -6.711867936e-06 1.958136635e-06 1.139900639e-07 3.68257111e-06 -0.0005051990576 --1.490735025e-05 3.020639018e-06 3.68257111e-06 -1.414608407e-05 0.0009385752214 -0.0003005669973 -0.0008678629698 -0.0005051990576 0.0009385752214 0.00116802621 --8.824612722e-06 -2.223486992e-06 -4.256317665e-06 -1.766232263e-05 -0.0003199452486 --2.223486992e-06 1.863541937e-06 1.079527847e-06 -8.548165549e-06 -0.0002546310525 --4.256317665e-06 1.079527847e-06 -1.422851335e-07 -1.215728848e-05 -0.000308818435 --1.766232263e-05 -8.548165549e-06 -1.215728848e-05 -2.842254592e-05 -0.0003461556784 --0.0003199452486 -0.0002546310525 -0.000308818435 -0.0003461556784 0.0008936267335 -1.540073764e-07 -3.494453413e-07 -8.913695975e-07 5.730043709e-07 -6.534869621e-06 --3.494453413e-07 -2.834405033e-07 -3.36744406e-07 1.569073245e-07 3.89646414e-05 --8.913695975e-07 -3.36744406e-07 -1.231163025e-08 -1.226470008e-07 9.072962495e-05 -5.730043709e-07 1.569073245e-07 -1.226470008e-07 1.594751725e-07 -5.698853334e-05 --6.534869621e-06 3.89646414e-05 9.072962495e-05 -5.698853334e-05 -0.0002639822163 -1.349681304e-06 -8.235174811e-07 -4.395319863e-07 2.836423834e-06 -1.230805776e-05 --8.235174811e-07 -1.233460734e-07 -4.182151021e-08 -1.115131692e-06 1.679168102e-05 --4.395319863e-07 -4.182151021e-08 -1.042697345e-08 -6.187904516e-07 8.606018622e-06 -2.836423834e-06 -1.115131692e-06 -6.187904516e-07 5.355476393e-06 -3.499524319e-05 --1.230805776e-05 1.679168102e-05 8.606018622e-06 -3.499524319e-05 -2.542301411e-05 --4.177689735e-08 2.273558627e-08 -2.004673165e-08 -2.049625292e-07 -8.95715617e-06 -2.273558627e-08 3.280666598e-08 3.012639965e-08 -4.275011731e-08 -4.496758689e-06 --2.004673165e-08 3.012639965e-08 -1.445865052e-09 -1.639787888e-07 -8.284118545e-06 --2.049625292e-07 -4.275011731e-08 -1.639787888e-07 -4.786411284e-07 -1.194062581e-05 --8.95715617e-06 -4.496758689e-06 -8.284118545e-06 -1.194062581e-05 2.339615637e-05 --1.74414304e-07 1.180238065e-07 9.629082618e-08 -4.811126071e-07 -9.810118145e-06 -1.180238065e-07 -6.741607153e-08 -3.854036622e-08 3.587601663e-07 9.198591173e-06 -9.629082618e-08 -3.854036622e-08 3.75453412e-09 3.365960094e-07 1.089019117e-05 --4.811126071e-07 3.587601663e-07 3.365960094e-07 -1.238595461e-06 -2.023338474e-05 --9.810118145e-06 9.198591173e-06 1.089019117e-05 -2.023338474e-05 -2.525754847e-05 -2.123171097e-07 1.102967342e-08 -2.375430042e-08 1.402891366e-07 -1.682554404e-05 -1.102967342e-08 -5.971602211e-08 -1.43011431e-08 1.669547676e-07 8.124865108e-06 --2.375430042e-08 -1.43011431e-08 -1.745289464e-10 1.891071876e-08 3.832905677e-06 -1.402891366e-07 1.669547676e-07 1.891071876e-08 -3.301586503e-07 -3.494993334e-05 --1.682554404e-05 8.124865108e-06 3.832905677e-06 -3.494993334e-05 -9.833163002e-06 -2.856836786e-07 2.781241481e-08 3.549482909e-08 3.613758944e-07 -1.003476846e-05 -2.781241481e-08 -4.637061375e-09 8.746925651e-09 6.388632986e-08 6.190472849e-07 -3.549482909e-08 8.746925651e-09 5.979902917e-10 2.421922094e-08 -2.396561268e-06 -3.613758944e-07 6.388632986e-08 2.421922094e-08 3.449364798e-07 -1.893095161e-05 --1.003476846e-05 6.190472849e-07 -2.396561268e-06 -1.893095161e-05 5.678704345e-06 -5.550675283e-08 2.877631116e-09 -1.11234702e-08 2.58973982e-08 -5.053827453e-06 -2.877631116e-09 -2.123030242e-08 -7.557453787e-09 5.60852548e-08 2.89113361e-06 --1.11234702e-08 -7.557453787e-09 -5.022166458e-11 1.268464671e-08 2.042335027e-06 -2.58973982e-08 5.60852548e-08 1.268464671e-08 -1.280870421e-07 -1.043161164e-05 --5.053827453e-06 2.89113361e-06 2.042335027e-06 -1.043161164e-05 -4.893141891e-06 -1.575288939e-08 1.895013112e-08 -1.400156877e-09 -6.47458992e-08 -5.979329687e-06 -1.895013112e-08 -1.72041909e-08 -3.138152452e-09 7.347056533e-08 2.338376227e-06 --1.400156877e-09 -3.138152452e-09 7.161057529e-11 1.125586263e-08 8.778723215e-07 --6.47458992e-08 7.347056533e-08 1.125586263e-08 -3.066080201e-07 -1.148970928e-05 --5.979329687e-06 2.338376227e-06 8.778723215e-07 -1.148970928e-05 -1.530727661e-06 -7.523468034e-08 1.028779927e-08 -1.600823572e-09 4.896297194e-08 -5.7116515e-06 -1.028779927e-08 -1.203306197e-08 -1.023100788e-09 4.782207869e-08 1.634543007e-06 --1.600823572e-09 -1.023100788e-09 -1.405898549e-11 1.419079241e-09 2.660714317e-07 -4.896297194e-08 4.782207869e-08 1.419079241e-09 -9.398509946e-08 -1.110895352e-05 --5.7116515e-06 1.634543007e-06 2.660714317e-07 -1.110895352e-05 -5.392276835e-07 -0.1078708585 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.01691974436 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.131399234 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.05090645595 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.00296597629 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0004455672188 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.00102737787 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.001611386216 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0001352243715 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0003810405104 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -4.514568965e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.809632674e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -2.487444812e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.1084385162 0.07577350281 0.01592312013 0 0 -0.07577350281 0.05124419562 0.09065452833 0 0 -0.01592312013 0.09065452833 0.103599332 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.07016288626 0.02974083568 -0.0119195292 0 0 -0.02974083568 0.06414421348 0.03349057178 0 0 --0.0119195292 0.03349057178 0.005618265552 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.01011219854 0.01343331719 0.0018054587 0 0 -0.01343331719 -0.03144072461 0.03326664918 0 0 -0.0018054587 0.03326664918 0.01319533099 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.005096664516 -0.002192286939 0.01576907265 0 0 --0.002192286939 -0.004411158241 -0.00682828588 0 0 -0.01576907265 -0.00682828588 0.03521103591 0 0 -0 0 0 0 0 -0 0 0 0 0 -8.131317357e-05 -1.352013429e-06 0.0001260234709 0 0 --1.352013429e-06 5.904131594e-05 4.947156089e-05 0 0 -0.0001260234709 4.947156089e-05 0.0002298541177 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0001109021277 0.0001668069565 -0.0006069099549 0 0 -0.0001668069565 -0.0004695966526 0.0007435060439 0 0 --0.0006069099549 0.0007435060439 -0.0009609205468 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0001478597287 2.131151089e-05 0.0006071089266 0 0 -2.131151089e-05 -0.0009026141423 0.0002136638981 0 0 -0.0006071089266 0.0002136638981 0.001175213292 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.651622329e-05 6.981599014e-05 -8.378779008e-05 0 0 -6.981599014e-05 -1.692389518e-05 0.0001259707525 0 0 --8.378779008e-05 0.0001259707525 -0.000175954035 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.512780803e-05 -2.134438852e-05 2.459419109e-05 0 0 --2.134438852e-05 0.0001581184205 -0.0001029261758 0 0 -2.459419109e-05 -0.0001029261758 0.0001367586816 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.299444154e-05 3.014738451e-05 4.103496783e-05 0 0 -3.014738451e-05 -0.0002311559192 0.0001114800891 0 0 -4.103496783e-05 0.0001114800891 6.624289924e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --7.634005353e-06 2.152796577e-05 -4.017924324e-05 0 0 -2.152796577e-05 -0.0001010809435 9.64026637e-05 0 0 --4.017924324e-05 9.64026637e-05 -0.0001147108456 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.28388978e-05 -1.143031626e-05 2.726798525e-05 0 0 --1.143031626e-05 -1.073076193e-05 -1.607972949e-05 0 0 -2.726798525e-05 -1.607972949e-05 6.218040071e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.43566774e-05 1.535895705e-05 -2.717092851e-06 0 0 -1.535895705e-05 -4.191675237e-05 3.290430703e-05 0 0 --2.717092851e-06 3.290430703e-05 -6.854964091e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.009942450875 0.07655489308 0.04316125086 0.1047177475 -0.1228581164 -0.07655489308 -0.1618269688 0.1342361942 0.02811265553 0.008676347307 -0.04316125086 0.1342361942 0.06798510772 -0.02475318275 0.05104173112 -0.1047177475 0.02811265553 -0.02475318275 -0.175117756 -0.07756567726 --0.1228581164 0.008676347307 0.05104173112 -0.07756567726 0.01253826108 -0.05931417938 0.01560917592 0.04837102052 0.008966674651 0.02650768153 -0.01560917592 -0.02975907009 0.01681788263 -0.00419365907 0.04057535282 -0.04837102052 0.01681788263 0.06990065768 2.035264585e-05 0.01603545535 -0.008966674651 -0.00419365907 2.035264585e-05 -0.01196929712 -0.07149901836 -0.02650768153 0.04057535282 0.01603545535 -0.07149901836 0.1254369262 -0.006353016552 -0.006894688186 0.01830352276 0.00298460074 -0.006603609892 --0.006894688186 -0.001188251511 0.002806625107 -0.008517468286 0.0009308455989 -0.01830352276 0.002806625107 0.01189396016 0.006008562035 0.01962400923 -0.00298460074 -0.008517468286 0.006008562035 0.00612742871 -0.01834259902 --0.006603609892 0.0009308455989 0.01962400923 -0.01834259902 -0.002961799759 --0.00269979538 -0.003056753055 -0.0001609844366 0.003309019551 -0.006953440307 --0.003056753055 -0.003284471377 0.002321696756 0.001259277922 -0.008554689169 --0.0001609844366 0.002321696756 0.004526828658 -0.009703541811 0.005018671451 -0.003309019551 0.001259277922 -0.009703541811 0.01285392897 0.004208199626 --0.006953440307 -0.008554689169 0.005018671451 0.004208199626 -0.01959004035 -0.0009273356315 0.0004373488504 -0.001468886914 0.00192230963 0.001331718594 -0.0004373488504 0.0003304454203 -0.001352655027 0.001200365289 0.0009081175297 --0.001468886914 -0.001352655027 0.003750752498 -0.003526049679 -0.00308246111 -0.00192230963 0.001200365289 -0.003526049679 0.003873741364 0.002995525883 -0.001331718594 0.0009081175297 -0.00308246111 0.002995525883 0.002576299164 -0.0001327810522 0.0003223627386 -0.0006140989578 0.0008303501151 0.0002226084642 -0.0003223627386 6.311052629e-05 -0.0002128511016 0.0003653973611 0.000549873528 --0.0006140989578 -0.0002128511016 0.0005965176004 -0.000419533603 -0.0009903379853 -0.0008303501151 0.0003653973611 -0.000419533603 -9.196559818e-05 0.001148432365 -0.0002226084642 0.000549873528 -0.0009903379853 0.001148432365 0.0007620723944 --0.000347121242 -0.0002753588762 0.0003041557213 -0.0001257777515 -0.0007278235618 --0.0002753588762 -0.0002790377889 0.000330583422 -0.0001173733996 -0.0006578923193 -0.0003041557213 0.000330583422 -0.0002728682847 -3.156888777e-05 0.000767218191 --0.0001257777515 -0.0001173733996 -3.156888777e-05 0.0001637567261 -0.0002973824996 --0.0007278235618 -0.0006578923193 0.000767218191 -0.0002973824996 -0.00161517157 -0.0001244470481 -8.077180087e-06 6.00319123e-05 3.669000545e-05 7.218233378e-05 --8.077180087e-06 -5.4233392e-06 -3.258673887e-05 -2.582191084e-06 1.904250921e-05 -6.00319123e-05 -3.258673887e-05 0.0001716563425 -9.086271467e-05 -1.331840671e-05 -3.669000545e-05 -2.582191084e-06 -9.086271467e-05 0.0001865612271 -5.827759362e-05 -7.218233378e-05 1.904250921e-05 -1.331840671e-05 -5.827759362e-05 0.0001632411688 -3.92557133e-05 0.000100125854 -0.0001542270578 0.0001620358758 8.728341888e-05 -0.000100125854 -7.568046649e-06 -3.493695409e-05 0.0001056783908 0.0001090623674 --0.0001542270578 -3.493695409e-05 0.000143669309 -0.0001672214707 -0.0002161766348 -0.0001620358758 0.0001056783908 -0.0001672214707 5.122592241e-05 0.0002270499379 -8.728341888e-05 0.0001090623674 -0.0002161766348 0.0002270499379 0.0002262642239 --9.768757037e-05 -3.225269182e-05 4.325385541e-05 4.363263894e-06 -0.0001742223992 --3.225269182e-05 -5.18455255e-05 6.668279381e-05 -1.367892937e-05 -9.788256449e-05 -4.325385541e-05 6.668279381e-05 -7.775672419e-05 2.465815122e-05 0.0001249111116 -4.363263894e-06 -1.367892937e-05 2.465815122e-05 -6.665148494e-05 -2.412402344e-05 --0.0001742223992 -9.788256449e-05 0.0001249111116 -2.412402344e-05 -0.0003141137891 -3.712501978e-06 3.165761679e-06 1.572184697e-05 1.397642908e-05 -1.68642565e-05 -3.165761679e-06 -9.61803972e-06 7.862628959e-06 -7.617208786e-06 5.836899853e-06 -1.572184697e-05 7.862628959e-06 1.023763517e-05 1.384133804e-05 6.009950791e-06 -1.397642908e-05 -7.617208786e-06 1.384133804e-05 -3.149734325e-05 -1.25396043e-05 --1.68642565e-05 5.836899853e-06 6.009950791e-06 -1.25396043e-05 4.178920635e-06 -1.787957197e-06 1.772808654e-05 -1.778860679e-05 2.792672605e-05 -2.245859788e-06 -1.772808654e-05 -1.3047002e-05 3.780487302e-06 1.923710284e-05 1.08023248e-05 --1.778860679e-05 3.780487302e-06 2.768098603e-05 -3.045552362e-05 -2.697878735e-05 -2.792672605e-05 1.923710284e-05 -3.045552362e-05 -2.225058893e-06 3.306752591e-05 --2.245859788e-06 1.08023248e-05 -2.697878735e-05 3.306752591e-05 1.70427692e-05 --1.993728377e-05 1.055265218e-06 5.950137071e-06 7.705853237e-06 -3.801717008e-05 -1.055265218e-06 -1.800908429e-05 2.042007581e-05 -1.051167576e-06 -1.56264397e-05 -5.950137071e-06 2.042007581e-05 -1.572094454e-05 5.918038845e-06 2.272731959e-05 -7.705853237e-06 -1.051167576e-06 5.918038845e-06 -2.905520009e-05 -7.010516291e-06 --3.801717008e-05 -1.56264397e-05 2.272731959e-05 -7.010516291e-06 -5.276224214e-05 --0.00147372564 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.001894944774 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.002184983043 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0002189362119 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -5.745999586e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -7.120667834e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -5.014567663e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -3.81816318e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.098415134e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --9.344868572e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.466258704e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --6.373049952e-07 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --4.465536128e-07 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0008906431428 0.0008588011494 0.05792085549 0 0 -0.0008588011494 -0.001289265906 -0.08694592389 0 0 -0.05792085549 -0.08694592389 -0.002192536016 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.00100454106 0.0005763471541 0.1471491481 0 0 -0.0005763471541 -0.001044360631 -0.1622953308 0 0 -0.1471491481 -0.1622953308 -0.008457880088 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0001289152828 -0.0007117322218 0.09612642655 0 0 --0.0007117322218 0.0007319644541 -0.09782135977 0 0 -0.09612642655 -0.09782135977 -0.001973470769 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0003749805835 -0.0006543214059 0.0230811533 0 0 --0.0006543214059 0.0007751896065 -0.02194540831 0 0 -0.0230811533 -0.02194540831 0.001396313229 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0002523517421 -0.0003793297594 0.001872194087 0 0 --0.0003793297594 0.0004756008806 -0.001308301286 0 0 -0.001872194087 -0.001308301286 0.001442959106 0 0 -0 0 0 0 0 -0 0 0 0 0 -6.427594089e-05 -8.246103626e-05 -0.002832112797 0 0 --8.246103626e-05 0.0001119063639 0.00325480546 0 0 --0.002832112797 0.00325480546 0.0004585626717 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.479474522e-05 3.251859337e-05 -0.002523688176 0 0 -3.251859337e-05 -3.980131204e-05 0.002715261948 0 0 --0.002523688176 0.002715261948 -1.375906841e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.23618264e-05 4.86600525e-05 -0.0002543193702 0 0 -4.86600525e-05 -6.34619236e-05 0.0002250791858 0 0 --0.0002543193702 0.0002250791858 -0.0001948488172 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.114697543e-05 3.048575777e-05 0.0003468582203 0 0 -3.048575777e-05 -3.974878194e-05 -0.0004308082507 0 0 -0.0003468582203 -0.0004308082507 -0.0001449216321 0 0 -0 0 0 0 0 -0 0 0 0 0 -3.153291942e-06 -4.294188596e-06 0.0001579009707 0 0 --4.294188596e-06 5.18684661e-06 -0.0001582007578 0 0 -0.0001579009707 -0.0001582007578 8.201184376e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 -8.466682688e-06 -1.173626643e-05 8.968821292e-05 0 0 --1.173626643e-05 1.467402485e-05 -8.691352394e-05 0 0 -8.968821292e-05 -8.691352394e-05 4.398713492e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -6.452132864e-07 -9.274695722e-07 -9.51786785e-06 0 0 --9.274695722e-07 1.181891069e-06 1.245900448e-05 0 0 --9.51786785e-06 1.245900448e-05 4.021846988e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.350166398e-08 -1.149723738e-07 -4.42964008e-05 0 0 --1.149723738e-07 2.208143112e-07 4.862421222e-05 0 0 --4.42964008e-05 4.862421222e-05 3.106645788e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0003678267688 2.148864341e-05 0.04968482597 0.0006307135436 -0.01115303995 -2.148864341e-05 -0.0001191775554 -0.003328492322 0.0001368216744 -0.02178055818 -0.04968482597 -0.003328492322 0.0003362107139 0.02133471009 -0.0001636909634 -0.0006307135436 0.0001368216744 0.02133471009 0.0008887501497 -0.07074911904 --0.01115303995 -0.02178055818 -0.0001636909634 -0.07074911904 0.0003629388599 --0.0005472737391 -0.000319330604 0.0394223448 -0.0004797628149 0.002521059337 --0.000319330604 -0.0001553704065 -0.009997229088 -0.0003710135462 -0.005956261751 -0.0394223448 -0.009997229088 -0.0005397891413 0.007874424279 0.00108407117 --0.0004797628149 -0.0003710135462 0.007874424279 -0.0005567686646 -0.04233856344 -0.002521059337 -0.005956261751 0.00108407117 -0.04233856344 -0.001400878691 --0.0004411851726 -9.578784755e-05 0.0103688252 -0.0004274192421 0.007434134601 --9.578784755e-05 5.923127301e-05 -0.006317813594 -0.000149924045 0.004209698496 -0.0103688252 -0.006317813594 -0.0002570994004 -0.002614262627 0.0004852814196 --0.0004274192421 -0.000149924045 -0.002614262627 -0.0005061559591 -0.003928082414 -0.007434134601 0.004209698496 0.0004852814196 -0.003928082414 -0.0006268880572 -1.372204764e-05 9.675334567e-05 0.00022344212 4.932711327e-05 0.002292411888 -9.675334567e-05 9.504035481e-05 -0.0008202182106 9.450449436e-05 0.001237838226 -0.00022344212 -0.0008202182106 0.000114344 -0.0009778858118 -0.0001607865809 -4.932711327e-05 9.450449436e-05 -0.0009778858118 7.825324006e-05 0.001392667421 -0.002292411888 0.001237838226 -0.0001607865809 0.001392667421 0.0002545304692 -2.864262495e-05 2.416435242e-05 7.578515434e-05 3.311765358e-05 7.103014279e-05 -2.416435242e-05 1.035295692e-05 8.981159153e-05 1.959653808e-05 -0.000149548433 -7.578515434e-05 8.981159153e-05 1.856950841e-05 0.0001432888712 -3.154569761e-05 -3.311765358e-05 1.959653808e-05 0.0001432888712 3.61491564e-05 -0.0002450947485 -7.103014279e-05 -0.000149548433 -3.154569761e-05 -0.0002450947485 5.378549897e-05 --1.547020996e-05 -1.576212094e-05 0.0001593979584 -2.251345952e-05 -1.095027525e-05 --1.576212094e-05 -1.348226462e-05 -6.21233098e-05 -2.056984729e-05 -3.886399304e-05 -0.0001593979584 -6.21233098e-05 -4.486379496e-05 6.57350466e-05 6.146395426e-05 --2.251345952e-05 -2.056984729e-05 6.57350466e-05 -3.006177857e-05 -0.0002817003671 --1.095027525e-05 -3.886399304e-05 6.146395426e-05 -0.0002817003671 -8.225404748e-05 -1.168711396e-07 2.409640074e-06 -1.899301496e-05 1.177210565e-06 5.90003766e-05 -2.409640074e-06 2.918409538e-06 -2.025778556e-05 3.212836235e-06 3.066740519e-05 --1.899301496e-05 -2.025778556e-05 2.136249171e-06 -2.488073966e-05 -3.366816451e-06 -1.177210565e-06 3.212836235e-06 -2.488073966e-05 3.267229366e-06 3.702096609e-05 -5.90003766e-05 3.066740519e-05 -3.366816451e-06 3.702096609e-05 5.544015825e-06 -3.397679264e-06 3.541366726e-06 4.225385451e-06 3.8263086e-06 3.424177964e-05 -3.541366726e-06 2.257830136e-06 -4.660871327e-06 2.965188232e-06 8.900806605e-06 -4.225385451e-06 -4.660871327e-06 4.101725376e-06 -6.582535186e-06 -5.988483178e-06 -3.8263086e-06 2.965188232e-06 -6.582535186e-06 3.937782372e-06 1.082356806e-05 -3.424177964e-05 8.900806605e-06 -5.988483178e-06 1.082356806e-05 9.178266991e-06 --4.086038689e-07 -1.139034489e-06 1.462768723e-05 -1.122214264e-06 -1.293585353e-05 --1.139034489e-06 -1.533812179e-06 4.31993669e-06 -1.837943414e-06 -1.711420345e-05 -1.462768723e-05 4.31993669e-06 -4.438453587e-06 1.773838771e-05 5.827173774e-06 --1.122214264e-06 -1.837943414e-06 1.773838771e-05 -1.987254549e-06 -4.116680343e-05 --1.293585353e-05 -1.711420345e-05 5.827173774e-06 -4.116680343e-05 -7.57160096e-06 -7.755661628e-07 7.362981148e-07 1.426321214e-06 1.156174675e-06 -1.004018017e-06 -7.362981148e-07 5.940340448e-07 2.373360576e-06 1.020791539e-06 -4.845359493e-06 -1.426321214e-06 2.373360576e-06 1.336979447e-06 3.792716711e-06 -1.899112915e-06 -1.156174675e-06 1.020791539e-06 3.792716711e-06 1.729273438e-06 -7.630686588e-06 --1.004018017e-06 -4.845359493e-06 -1.899112915e-06 -7.630686588e-06 2.695465967e-06 --1.226708497e-08 1.554844859e-07 8.783287822e-07 -3.607501089e-08 6.518878867e-06 -1.554844859e-07 2.165578068e-07 -3.887852146e-06 1.348842355e-07 4.542582686e-06 -8.783287822e-07 -3.887852146e-06 1.988711234e-07 -3.689131603e-06 -2.339783353e-07 --3.607501089e-08 1.348842355e-07 -3.689131603e-06 -4.955200882e-08 3.56921518e-06 -6.518878867e-06 4.542582686e-06 -2.339783353e-07 3.56921518e-06 3.481310952e-07 --3.699853859e-07 -4.427926612e-07 3.242091664e-06 -5.833403214e-07 -1.605636863e-06 --4.427926612e-07 -4.407204952e-07 -4.149050494e-07 -6.190218802e-07 -2.106965688e-06 -3.242091664e-06 -4.149050494e-07 -1.392412301e-06 2.621442216e-06 1.873501895e-06 --5.833403214e-07 -6.190218802e-07 2.621442216e-06 -8.411710258e-07 -7.656938861e-06 --1.605636863e-06 -2.106965688e-06 1.873501895e-06 -7.656938861e-06 -2.493963882e-06 -1.841269997e-07 1.533147455e-07 2.279671e-06 2.408868884e-07 -2.03370486e-07 -1.533147455e-07 1.169389736e-07 -9.200718367e-08 1.808742374e-07 -7.208898964e-07 -2.279671e-06 -9.200718367e-08 3.812002424e-07 5.286564652e-07 -4.926452751e-07 -2.408868884e-07 1.808742374e-07 5.286564652e-07 2.854404685e-07 -2.116026031e-06 --2.03370486e-07 -7.208898964e-07 -4.926452751e-07 -2.116026031e-06 6.642871627e-07 -9.48609846e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.002100409006 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0006076147638 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.000253309473 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --7.444014752e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.197031286e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --9.816165481e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -6.305562142e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -3.421864454e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.005192658e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.376595671e-07 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --8.44861316e-07 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.360743536e-07 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0001014111923 -0.0001137123075 0.07006011179 0 0 --0.0001137123075 -0.0003757105609 0.002042195982 0 0 -0.07006011179 0.002042195982 -0.0005986372109 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.001476198448 0.0002258581379 0.0007774676725 0 0 -0.0002258581379 -0.0003592854189 0.0002170104561 0 0 -0.0007774676725 0.0002170104561 -0.000458830713 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0003575033436 7.649413322e-05 0.03127681928 0 0 -7.649413322e-05 -0.0001060398999 0.0007175399085 0 0 -0.03127681928 0.0007175399085 1.936964931e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.974093554e-05 -4.11492202e-05 0.02942202394 0 0 --4.11492202e-05 3.279855121e-06 0.0004551131981 0 0 -0.02942202394 0.0004551131981 0.0002446644146 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.316605893e-05 -1.320059034e-05 0.002198418648 0 0 --1.320059034e-05 -4.932477611e-06 1.830491514e-05 0 0 -0.002198418648 1.830491514e-05 2.654274302e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.191446092e-05 -8.75924747e-07 6.020318645e-06 0 0 --8.75924747e-07 -8.386260334e-08 -2.898208409e-06 0 0 -6.020318645e-06 -2.898208409e-06 1.844262457e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.495481236e-05 -4.47943405e-07 0.0007992359082 0 0 --4.47943405e-07 3.719882698e-07 1.455023712e-05 0 0 -0.0007992359082 1.455023712e-05 6.406691945e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.856441514e-06 1.852265261e-07 2.636045429e-06 0 0 -1.852265261e-07 -8.503599831e-07 1.020607197e-06 0 0 -2.636045429e-06 1.020607197e-06 -1.197345858e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.060108891e-05 2.554787227e-07 0.0001740983631 0 0 -2.554787227e-07 3.809688367e-07 4.384742338e-06 0 0 -0.0001740983631 4.384742338e-06 5.540392643e-07 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.86383631e-06 2.077097299e-07 5.447648715e-05 0 0 -2.077097299e-07 9.484075099e-08 1.85828565e-06 0 0 -5.447648715e-05 1.85828565e-06 -1.171161179e-07 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.679275915e-07 -2.80206229e-08 -2.362473555e-05 0 0 --2.80206229e-08 -1.088566943e-07 -5.552274061e-07 0 0 --2.362473555e-05 -5.552274061e-07 -1.962761804e-07 0 0 -0 0 0 0 0 -0 0 0 0 0 --9.983446974e-07 2.686735713e-08 4.463978279e-05 0 0 -2.686735713e-08 9.365244197e-08 1.024896464e-06 0 0 -4.463978279e-05 1.024896464e-06 2.217021967e-07 0 0 -0 0 0 0 0 -0 0 0 0 0 -5.070250553e-07 2.097749314e-08 6.251435333e-06 0 0 -2.097749314e-08 6.812687353e-09 2.203088571e-07 0 0 -6.251435333e-06 2.203088571e-07 -3.677043407e-08 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0001638691976 -0.0002670124997 0.01596998387 7.218728351e-05 0.01652251839 --0.0002670124997 -0.0003103564065 0.001768350164 -0.0003744254485 0.1419872755 -0.01596998387 0.001768350164 -0.001116119439 -0.1412997983 0.0008094282359 -7.218728351e-05 -0.0003744254485 -0.1412997983 5.54686131e-05 0.05587145134 -0.01652251839 0.1419872755 0.0008094282359 0.05587145134 8.180517725e-05 --0.0007013514008 0.0002668411525 -0.05890947695 0.0001436267477 0.005535225832 -0.0002668411525 -0.00046693295 -0.00233626498 0.0001807128925 0.07523848535 --0.05890947695 -0.00233626498 -0.0008809495477 -0.0775619546 -0.0001999467838 -0.0001436267477 0.0001807128925 -0.0775619546 0.0004931780131 0.01665222912 -0.005535225832 0.07523848535 -0.0001999467838 0.01665222912 0.000457448112 --2.062101e-05 0.0001884140306 -0.03067859822 0.0001825106539 -0.00249516376 -0.0001884140306 -0.0002421767859 -0.000876453516 0.0001004840685 0.02037448063 --0.03067859822 -0.000876453516 -0.0006239516844 -0.02085839324 -0.0001051359292 -0.0001825106539 0.0001004840685 -0.02085839324 0.0002193277975 -0.001330594687 --0.00249516376 0.02037448063 -0.0001051359292 -0.001330594687 0.000209008757 -0.0001146941406 -2.544622382e-05 0.01859435288 -2.152396788e-05 -0.001691523531 --2.544622382e-05 -4.169823981e-05 0.0004791141781 -1.444107422e-06 0.001334101639 -0.01859435288 0.0004791141781 0.0002464576845 -0.001289007783 -7.070732479e-06 --2.152396788e-05 -1.444107422e-06 -0.001289007783 1.145288687e-05 -0.001164528867 --0.001691523531 0.001334101639 -7.070732479e-06 -0.001164528867 1.20494036e-05 --4.113196455e-05 -3.669638859e-05 0.00762010095 -3.481221741e-05 0.0004831577856 --3.669638859e-05 -2.554931621e-05 0.0001265028641 -8.874703384e-06 0.0004089417927 -0.00762010095 0.0001265028641 0.0001435166277 -0.000417150127 -7.055238862e-06 --3.481221741e-05 -8.874703384e-06 -0.000417150127 -3.437304539e-06 0.0001190439759 -0.0004831577856 0.0004089417927 -7.055238862e-06 0.0001190439759 -3.589831215e-06 --8.493821691e-05 2.082295092e-07 0.003108891965 -5.364717767e-06 7.495624543e-05 -2.082295092e-07 3.206068088e-06 0.0001308696305 -1.355493239e-06 9.281980016e-05 -0.003108891965 0.0001308696305 1.90932385e-05 -6.681301968e-05 4.068693914e-06 --5.364717767e-06 -1.355493239e-06 -6.681301968e-05 -5.286086468e-07 -3.562653115e-06 -7.495624543e-05 9.281980016e-05 4.068693914e-06 -3.562653115e-06 -2.140035414e-07 -1.946643211e-06 -6.571320939e-07 0.0001630995777 -1.387734607e-07 -5.370593235e-06 --6.571320939e-07 -6.066390374e-08 1.781806019e-06 -3.369277364e-07 2.600170418e-06 -0.0001630995777 1.781806019e-06 4.272321485e-06 -1.387088431e-06 2.675857408e-08 --1.387734607e-07 -3.369277364e-07 -1.387088431e-06 -2.011951838e-07 -1.136885933e-05 --5.370593235e-06 2.600170418e-06 2.675857408e-08 -1.136885933e-05 -1.722701119e-07 -8.705762802e-07 -3.214435466e-08 -0.0001113810521 -2.221497154e-07 3.971606713e-05 --3.214435466e-08 -1.864937292e-06 -2.717736967e-06 -2.870524936e-07 7.960007238e-05 --0.0001113810521 -2.717736967e-06 -2.739506423e-06 -7.97502493e-05 1.296945057e-07 --2.221497154e-07 -2.870524936e-07 -7.97502493e-05 1.413297221e-07 3.103807517e-05 -3.971606713e-05 7.960007238e-05 1.296945057e-07 3.103807517e-05 1.42277185e-07 --6.992002427e-06 7.959964642e-07 0.0004501874807 -4.457712072e-07 -6.867179732e-06 -7.959964642e-07 8.379982291e-07 2.116160247e-05 -1.160671673e-07 1.345377275e-05 -0.0004501874807 2.116160247e-05 1.163315019e-06 -9.784024949e-06 1.004154227e-06 --4.457712072e-07 -1.160671673e-07 -9.784024949e-06 -1.720848487e-07 6.86831398e-06 --6.867179732e-06 1.345377275e-05 1.004154227e-06 6.86831398e-06 -1.103621627e-07 -1.223857877e-07 -1.885029659e-07 -3.474188905e-06 -4.165635666e-08 4.18278358e-06 --1.885029659e-07 -1.651856893e-07 -4.643264584e-07 -9.510010714e-08 6.18582291e-06 --3.474188905e-06 -4.643264584e-07 -2.112176616e-08 -5.721564213e-06 7.535907202e-08 --4.165635666e-08 -9.510010714e-08 -5.721564213e-06 -5.313142664e-08 2.995270403e-06 -4.18278358e-06 6.18582291e-06 7.535907202e-08 2.995270403e-06 -4.635607963e-08 --7.810739578e-07 -2.615306304e-08 -1.253010286e-05 4.023072409e-09 2.158953888e-06 --2.615306304e-08 -6.124967652e-08 -4.210115534e-07 -1.003985645e-08 1.61006292e-05 --1.253010286e-05 -4.210115534e-07 -1.813078368e-07 -1.627921123e-05 2.432909695e-08 -4.023072409e-09 -1.003985645e-08 -1.627921123e-05 3.530665986e-08 6.633704817e-06 -2.158953888e-06 1.61006292e-05 2.432909695e-08 6.633704817e-06 3.228980713e-08 -1.427852503e-07 2.431439888e-08 4.47726177e-05 -8.278520358e-08 -1.331997337e-06 -2.431439888e-08 1.202138508e-07 1.643478417e-06 -7.379838822e-09 7.630273898e-06 -4.47726177e-05 1.643478417e-06 4.216807528e-07 -7.697338023e-06 7.11148148e-08 --8.278520358e-08 -7.379838822e-09 -7.697338023e-06 -8.517667297e-09 3.990707921e-06 --1.331997337e-06 7.630273898e-06 7.11148148e-08 3.990707921e-06 -7.04621317e-09 -2.378149008e-07 -6.29214698e-08 -7.639094692e-06 3.25215051e-08 1.683483022e-06 --6.29214698e-08 -5.037663466e-08 -1.978058317e-07 -6.477392386e-08 7.415600508e-06 --7.639094692e-06 -1.978058317e-07 -1.674967108e-07 -7.05693513e-06 8.694221122e-08 -3.25215051e-08 -6.477392386e-08 -7.05693513e-06 -3.876641446e-08 3.432268116e-06 -1.683483022e-06 7.415600508e-06 8.694221122e-08 3.432268116e-06 -3.23780767e-08 -0.0003841648298 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0009741402683 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0004132469821 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -2.569324766e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -4.685441148e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -9.068045643e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.707847028e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -2.574118334e-07 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.366737323e-08 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.968573049e-07 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.181649632e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.352664229e-08 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.52629651e-07 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --6.739017455e-05 -6.941413182e-06 -0.01997430315 0 0 --6.941413182e-06 0.0002174552353 -0.06795316869 0 0 --0.01997430315 -0.06795316869 -0.0004420679823 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.783430045e-05 -0.0002986613448 -0.01213189156 0 0 --0.0002986613448 -0.001824072715 -0.03923194536 0 0 --0.01213189156 -0.03923194536 -0.0002170480438 0 0 -0 0 0 0 0 -0 0 0 0 0 --8.845372675e-06 5.459391994e-06 -0.01271169507 0 0 -5.459391994e-06 8.968203805e-05 -0.03916597537 0 0 --0.01271169507 -0.03916597537 2.144834886e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.748698683e-06 1.450692896e-05 -0.003345426607 0 0 -1.450692896e-05 0.0001167517149 -0.009969389493 0 0 --0.003345426607 -0.009969389493 4.024362241e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -4.324263865e-07 1.166569783e-06 -0.0002122600025 0 0 -1.166569783e-06 3.732770278e-06 -0.0006790463643 0 0 --0.0002122600025 -0.0006790463643 -4.336383511e-07 0 0 -0 0 0 0 0 -0 0 0 0 0 --6.456169886e-07 4.843165978e-06 -8.70187548e-05 0 0 -4.843165978e-06 3.361544438e-05 -0.0001898797278 0 0 --8.70187548e-05 -0.0001898797278 8.121790195e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 -2.98467938e-08 -1.871882421e-06 -0.0001776098221 0 0 --1.871882421e-06 -1.104372062e-05 -0.0005562989439 0 0 --0.0001776098221 -0.0005562989439 -1.849919532e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 -7.076698715e-08 1.876259768e-07 -3.782442284e-05 0 0 -1.876259768e-07 6.206216051e-07 -0.0001153184029 0 0 --3.782442284e-05 -0.0001153184029 2.119077902e-08 0 0 -0 0 0 0 0 -0 0 0 0 0 --4.444272829e-08 -2.993860213e-08 1.57060057e-05 0 0 --2.993860213e-08 -5.298449629e-08 4.963378323e-05 0 0 -1.57060057e-05 4.963378323e-05 -3.625312676e-08 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.130591136e-08 -2.303948183e-07 -2.628686714e-05 0 0 --2.303948183e-07 -1.360233561e-06 -8.458452399e-05 0 0 --2.628686714e-05 -8.458452399e-05 -3.036628013e-07 0 0 -0 0 0 0 0 -0 0 0 0 0 -2.406289553e-08 -4.177809156e-08 -9.761660415e-06 0 0 --4.177809156e-08 -4.325980428e-07 -3.228778953e-05 0 0 --9.761660415e-06 -3.228778953e-05 -2.967050666e-07 0 0 -0 0 0 0 0 -0 0 0 0 0 --4.870677941e-09 2.355356486e-08 1.253666627e-06 0 0 -2.355356486e-08 1.6271894e-07 3.529245482e-06 0 0 -1.253666627e-06 3.529245482e-06 -3.237026517e-08 0 0 -0 0 0 0 0 -0 0 0 0 0 -3.024809944e-09 -2.178613136e-08 -6.168709642e-06 0 0 --2.178613136e-08 -1.25540112e-07 -1.971663841e-05 0 0 --6.168709642e-06 -1.971663841e-05 -4.973300921e-08 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0003032978675 -0.0001337557985 -0.05164172017 -0.0004131745036 0.1386197901 --0.0001337557985 -8.552230274e-05 -0.1144095022 -0.0002045339636 -0.01204517986 --0.05164172017 -0.1144095022 -0.0002298584977 0.01983119637 0.0002576258578 --0.0004131745036 -0.0002045339636 0.01983119637 -0.0002094336207 0.0567030511 -0.1386197901 -0.01204517986 0.0002576258578 0.0567030511 -0.001149034223 -0.0001166383745 0.0001629176959 -0.01932709515 0.0005658126558 0.02805665655 -0.0001629176959 -5.153539744e-05 -0.03619976422 -0.0002005973334 0.02046868926 --0.01932709515 -0.03619976422 -2.053522939e-05 0.02289763556 -0.0002938277249 -0.0005658126558 -0.0002005973334 0.02289763556 -0.001206097163 0.0533675871 -0.02805665655 0.02046868926 -0.0002938277249 0.0533675871 0.0001333404615 --1.399820632e-05 2.856568021e-05 0.000112514757 9.147003967e-05 0.01042799018 -2.856568021e-05 -1.10948928e-05 -0.007332815664 -1.515175019e-05 -0.006446117168 -0.000112514757 -0.007332815664 1.820374441e-05 0.001424398596 -4.689528165e-05 -9.147003967e-05 -1.515175019e-05 0.001424398596 -7.568550051e-05 -0.007871841112 -0.01042799018 -0.006446117168 -4.689528165e-05 -0.007871841112 -9.003313037e-05 -4.277713626e-05 -2.94797455e-05 0.002563566316 -6.998183497e-05 0.008341967678 --2.94797455e-05 -5.40134982e-06 -0.003681857301 2.2095318e-05 -0.01248082048 -0.002563566316 -0.003681857301 2.269209099e-06 -0.005601807772 2.652118311e-05 --6.998183497e-05 2.2095318e-05 -0.005601807772 8.918471771e-05 -0.01883133259 -0.008341967678 -0.01248082048 2.652118311e-05 -0.01883133259 0.0001315131781 -4.902340261e-06 -1.7852149e-06 0.000203331639 -2.880511036e-06 0.0003153423178 --1.7852149e-06 -1.926055089e-06 -0.0002353998027 -1.124950982e-06 -0.000580265369 -0.000203331639 -0.0002353998027 4.795821071e-07 -0.000364282536 3.312811884e-07 --2.880511036e-06 -1.124950982e-06 -0.000364282536 -7.966263307e-07 -0.000905554269 -0.0003153423178 -0.000580265369 3.312811884e-07 -0.000905554269 1.038406278e-05 -4.299667417e-08 -4.031425312e-06 -9.059128359e-05 -1.053286546e-05 5.922968619e-05 --4.031425312e-06 -8.532080098e-07 -0.0001147929161 2.196507858e-06 0.0001145613678 --9.059128359e-05 -0.0001147929161 -1.485939891e-07 0.0001325121723 5.977432177e-06 --1.053286546e-05 2.196507858e-06 0.0001325121723 1.701683561e-05 0.0003404651833 -5.922968619e-05 0.0001145613678 5.977432177e-06 0.0003404651833 1.029197838e-05 --9.835045422e-07 6.794345606e-07 0.0001306173148 1.3864866e-06 0.0004448860946 -6.794345606e-07 1.759905632e-08 -0.000203639921 -8.063255259e-07 -0.0006273069309 -0.0001306173148 -0.000203639921 1.091364303e-07 -0.0002960786181 8.122470082e-09 -1.3864866e-06 -8.063255259e-07 -0.0002960786181 -2.095376223e-06 -0.0009528160969 -0.0004448860946 -0.0006273069309 8.122470082e-09 -0.0009528160969 -1.989561265e-06 --2.111741803e-07 2.195050461e-07 1.252303132e-06 5.966113963e-07 1.845288224e-05 -2.195050461e-07 -5.015448615e-08 -1.68190901e-05 -3.157809822e-07 -1.180607966e-05 -1.252303132e-06 -1.68190901e-05 -3.13225864e-08 -1.34144577e-05 -1.169745888e-07 -5.966113963e-07 -3.157809822e-07 -1.34144577e-05 -1.178656974e-06 -1.433936907e-05 -1.845288224e-05 -1.180607966e-05 -1.169745888e-07 -1.433936907e-05 -2.049625071e-07 --1.247522761e-07 -1.017158497e-07 -2.193613975e-05 -2.938757828e-07 1.239022395e-05 --1.017158497e-07 -1.009115848e-07 -2.117709538e-05 -1.121925126e-07 3.07727948e-05 --2.193613975e-05 -2.117709538e-05 -8.565226079e-08 1.972169856e-05 2.203750949e-07 --2.938757828e-07 -1.121925126e-07 1.972169856e-05 1.082217431e-07 7.214618459e-05 -1.239022395e-05 3.07727948e-05 2.203750949e-07 7.214618459e-05 1.188505213e-08 --7.13237725e-07 2.814666385e-07 1.014762251e-05 4.722960247e-07 7.480056154e-05 -2.814666385e-07 7.799424666e-08 -3.115882141e-05 -2.237444468e-07 -7.841435261e-05 -1.014762251e-05 -3.115882141e-05 -2.694719027e-09 -3.088858996e-05 2.986522763e-08 -4.722960247e-07 -2.237444468e-07 -3.088858996e-05 -3.774773857e-07 -0.0001154128241 -7.480056154e-05 -7.841435261e-05 2.986522763e-08 -0.0001154128241 -1.735825093e-06 --8.162998851e-08 -5.741953996e-08 -4.722589897e-06 -1.712505444e-07 8.240935811e-06 --5.741953996e-08 1.754745019e-09 -7.407023544e-06 2.55283279e-08 2.476407952e-06 --4.722589897e-06 -7.407023544e-06 -2.471869342e-08 2.223860395e-06 8.623189285e-08 --1.712505444e-07 2.55283279e-08 2.223860395e-06 2.60331733e-07 9.753709245e-06 -8.240935811e-06 2.476407952e-06 8.623189285e-08 9.753709245e-06 -2.612050319e-07 --7.427307746e-08 -1.362187684e-08 -5.645481803e-06 -6.649846763e-08 1.06552298e-05 --1.362187684e-08 -1.500557463e-08 -9.446430598e-06 -2.702076267e-08 1.562219282e-06 --5.645481803e-06 -9.446430598e-06 -2.629779564e-08 2.801134115e-06 5.907762522e-08 --6.649846763e-08 -2.702076267e-08 2.801134115e-06 4.887110536e-08 9.535335876e-06 -1.06552298e-05 1.562219282e-06 5.907762522e-08 9.535335876e-06 -1.521745189e-07 --1.229037955e-07 1.599644869e-08 -1.692307187e-06 -8.822477328e-09 1.886242986e-05 -1.599644869e-08 1.261361599e-08 -1.029855825e-05 -2.392038573e-08 -1.261683674e-05 --1.692307187e-06 -1.029855825e-05 -1.666322581e-08 -3.427683104e-06 4.746463514e-08 --8.822477328e-09 -2.392038573e-08 -3.427683104e-06 2.377327226e-08 -1.414316953e-05 -1.886242986e-05 -1.261683674e-05 4.746463514e-08 -1.414316953e-05 -2.88860772e-07 --0.1250540102 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.1268123657 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.2129037573 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.07644593472 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.003130702472 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.001355052364 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.002507806087 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.002605300545 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --7.949515096e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0007901987423 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.190706963e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -6.295494431e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --9.954238956e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.114969541 0.008084024712 -0.006885761397 0 0 -0.008084024712 -0.1244122073 0.01159851226 0 0 --0.006885761397 0.01159851226 -0.03206781874 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.07887172464 -0.01071230614 -0.02960794178 0 0 --0.01071230614 -0.05795342445 0.047136598 0 0 --0.02960794178 0.047136598 0.02827476982 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.01636738325 0.00443191145 -0.006033687118 0 0 -0.00443191145 -0.01826481198 0.008463592127 0 0 --0.006033687118 0.008463592127 0.03727953235 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.00663281182 0.01411423381 0.02019108737 0 0 -0.01411423381 -0.01582221207 -0.02712416241 0 0 -0.02019108737 -0.02712416241 -0.03277905228 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0004635611894 -0.0007007263962 -0.001291752539 0 0 --0.0007007263962 0.001078115254 0.001966085891 0 0 --0.001291752539 0.001966085891 0.0036341089 0 0 -0 0 0 0 0 -0 0 0 0 0 --7.30805773e-05 -0.0007200525716 -0.001316726476 0 0 --0.0007200525716 9.568667564e-05 0.001623089951 0 0 --0.001316726476 0.001623089951 0.002265692197 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.000314785435 0.0007789387751 0.00108601213 0 0 -0.0007789387751 -0.0007814433973 -0.001484346923 0 0 -0.00108601213 -0.001484346923 -0.00168497222 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0001138758048 -0.0001670812378 -0.0003127359599 0 0 --0.0001670812378 0.0002052935305 0.0004093040568 0 0 --0.0003127359599 0.0004093040568 0.000752413555 0 0 -0 0 0 0 0 -0 0 0 0 0 --6.19579846e-05 -1.13196176e-05 -5.726727313e-07 0 0 --1.13196176e-05 -6.367949938e-05 -4.516472121e-06 0 0 --5.726727313e-07 -4.516472121e-06 -0.0001324545172 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.082790137e-05 0.0001005346019 0.0001347891589 0 0 -0.0001005346019 -6.920611274e-05 -0.0001874729685 0 0 -0.0001347891589 -0.0001874729685 -0.0001601579198 0 0 -0 0 0 0 0 -0 0 0 0 0 -3.858447641e-05 -5.606607488e-05 -0.0001008425344 0 0 --5.606607488e-05 8.091331551e-05 0.0001463941799 0 0 --0.0001008425344 0.0001463941799 0.0002637127236 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.460144409e-05 1.347441807e-05 2.454281132e-05 0 0 -1.347441807e-05 -2.433716598e-05 -3.423657732e-05 0 0 -2.454281132e-05 -3.423657732e-05 -6.70272058e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -6.138482782e-06 1.069721156e-05 1.041945182e-05 0 0 -1.069721156e-05 4.745746893e-07 -1.380740197e-05 0 0 -1.041945182e-05 -1.380740197e-05 1.126912454e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.008951871668 0.01407829771 -0.02969810906 0.0869661283 -0.01072514151 -0.01407829771 -0.02874050943 0.01587131164 0.01454440379 -0.002357439042 --0.02969810906 0.01587131164 0.1207016185 -0.002490556641 0.00749506057 -0.0869661283 0.01454440379 -0.002490556641 0.08864311925 0.03301717587 --0.01072514151 -0.002357439042 0.00749506057 0.03301717587 0.1199955066 --0.04441968673 0.02205924509 0.01527331986 0.0002810291812 0.02950276136 -0.02205924509 -0.03284714681 -0.01660322567 0.02109646673 0.002597970358 -0.01527331986 -0.01660322567 -0.008919990039 -0.02858138905 -0.001483011706 -0.0002810291812 0.02109646673 -0.02858138905 -0.06428815553 0.009692457225 -0.02950276136 0.002597970358 -0.001483011706 0.009692457225 -0.006345072655 --0.00512508642 0.01460661499 0.0241365583 0.008770664809 -0.006285484664 -0.01460661499 -0.009698069526 -0.0008585327844 0.02035631973 -0.008857565745 -0.0241365583 -0.0008585327844 -0.001652368309 0.008943381679 -0.02645630297 -0.008770664809 0.02035631973 0.008943381679 -0.01179038987 -0.02688141845 --0.006285484664 -0.008857565745 -0.02645630297 -0.02688141845 0.0164422652 -0.005469405291 -0.0009051462512 0.001209090983 0.006917395519 -0.003261719301 --0.0009051462512 -0.003090943559 -0.002154199574 0.001925882506 0.004009452052 -0.001209090983 -0.002154199574 -0.0004393063365 0.005899250775 0.001234532435 -0.006917395519 0.001925882506 0.005899250775 0.01210394647 -0.007419467184 --0.003261719301 0.004009452052 0.001234532435 -0.007419467184 -0.002452213638 --0.001768386185 -0.00133235991 -0.00198245444 -0.00160574593 0.003317965802 --0.00133235991 -0.001752600198 -0.002906776329 -0.00168668814 0.003620766481 --0.00198245444 -0.002906776329 -0.004622971442 -0.002897815025 0.00554971361 --0.00160574593 -0.00168668814 -0.002897815025 -0.002828627135 0.00313510783 -0.003317965802 0.003620766481 0.00554971361 0.00313510783 -0.007922613911 --0.0005193651028 -0.0001810954847 -0.0004036913119 -0.0003530743135 0.0007626702789 --0.0001810954847 -0.0002220228688 -0.0002598505583 -0.0001341703796 0.0003769681647 --0.0004036913119 -0.0002598505583 -0.0004126419141 -0.0004784687676 0.0007028859176 --0.0003530743135 -0.0001341703796 -0.0004784687676 -0.0005296933731 0.0006736854507 -0.0007626702789 0.0003769681647 0.0007028859176 0.0006736854507 -0.001066528487 -0.0005443788225 0.0001898313486 0.0004549673629 0.0006626218572 -0.0007614673136 -0.0001898313486 0.0001050814391 0.000286725266 0.0003349210215 -0.0003224685398 -0.0004549673629 0.000286725266 0.0007013169466 0.0008092033109 -0.0007838046404 -0.0006626218572 0.0003349210215 0.0008092033109 0.001039265948 -0.001007097861 --0.0007614673136 -0.0003224685398 -0.0007838046404 -0.001007097861 0.001147551179 --0.000152982795 -1.663288665e-06 2.77577696e-06 -7.587539456e-05 0.0001559432665 --1.663288665e-06 -9.244123537e-05 -0.000131694985 -1.096601504e-05 0.0001223573824 -2.77577696e-06 -0.000131694985 -0.000215386584 -9.538334255e-05 0.0001398773567 --7.587539456e-05 -1.096601504e-05 -9.538334255e-05 -0.0002146371936 5.303186192e-05 -0.0001559432665 0.0001223573824 0.0001398773567 5.303186192e-05 -0.0003066117928 --0.0001121960592 -9.681220221e-05 -0.0001894780642 -0.0001163348185 0.0002290321161 --9.681220221e-05 -7.176946483e-05 -0.0001151982965 -0.000109263386 0.0001741688012 --0.0001894780642 -0.0001151982965 -0.0001817281743 -0.0001903791967 0.0003256336668 --0.0001163348185 -0.000109263386 -0.0001903791967 -0.0001117479326 0.0002912569337 -0.0002290321161 0.0001741688012 0.0003256336668 0.0002912569337 -0.0003979245314 -0.0001145513723 2.967927991e-05 6.092219513e-05 0.0001184919294 -0.0001490244309 -2.967927991e-05 3.353530658e-05 6.695914778e-05 4.3108076e-05 -7.389385023e-05 -6.092219513e-05 6.695914778e-05 0.0001474226975 0.0001284192331 -0.0001329254712 -0.0001184919294 4.3108076e-05 0.0001284192331 0.000210318314 -0.0001346088098 --0.0001490244309 -7.389385023e-05 -0.0001329254712 -0.0001346088098 0.0002540439838 --5.902007185e-06 1.383944709e-05 1.899384117e-05 8.350333253e-06 -9.18574497e-06 -1.383944709e-05 -1.376026143e-06 4.347068592e-06 1.315626757e-05 -1.255055273e-05 -1.899384117e-05 4.347068592e-06 1.117385843e-05 5.935303976e-06 -2.756682454e-05 -8.350333253e-06 1.315626757e-05 5.935303976e-06 -1.484341797e-05 -1.982385745e-05 --9.18574497e-06 -1.255055273e-05 -2.756682454e-05 -1.982385745e-05 3.056933311e-05 --1.070163773e-05 -1.755743007e-05 -3.612772279e-05 -1.135269633e-05 3.27364258e-05 --1.755743007e-05 -1.28214903e-05 -1.823930981e-05 -2.02269481e-05 3.073460508e-05 --3.612772279e-05 -1.823930981e-05 -2.241541135e-05 -3.055865657e-05 5.869312248e-05 --1.135269633e-05 -2.02269481e-05 -3.055865657e-05 -3.623073482e-06 5.142469946e-05 -3.27364258e-05 3.073460508e-05 5.869312248e-05 5.142469946e-05 -5.845391899e-05 -2.31471826e-05 4.99681848e-06 6.949985373e-06 2.543967259e-05 -2.822344386e-05 -4.99681848e-06 6.599365196e-06 1.48691694e-05 7.065080071e-06 -1.450741267e-05 -6.949985373e-06 1.48691694e-05 3.536261122e-05 2.230448211e-05 -2.317044994e-05 -2.543967259e-05 7.065080071e-06 2.230448211e-05 4.464065044e-05 -1.938398189e-05 --2.822344386e-05 -1.450741267e-05 -2.317044994e-05 -1.938398189e-05 5.431335233e-05 -0.1238410012 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.1159786129 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.2089244237 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0843868982 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.004945907769 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0005989260057 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.00177315732 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.002924409859 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0002276499792 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0007678802626 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -5.073795214e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.289793938e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.325470172e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.1139558687 -0.00753765076 -0.007799338274 0 0 --0.00753765076 0.1231006369 0.01272862095 0 0 --0.007799338274 0.01272862095 0.03020381877 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.08350480855 0.01160686912 -0.0294816765 0 0 -0.01160686912 0.06268974522 0.04621637242 0 0 --0.0294816765 0.04621637242 -0.02048466189 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.01757776746 -0.001747200388 -0.01085835865 0 0 --0.001747200388 0.01723992429 0.01501781366 0 0 --0.01085835865 0.01501781366 -0.04583206623 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.006715677931 -0.01430177847 0.01947029704 0 0 --0.01430177847 0.01583409377 -0.02595550867 0 0 -0.01947029704 -0.02595550867 0.02864898315 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.000285859076 -0.0001527218234 0.0002599118572 0 0 --0.0001527218234 0.0001746416885 -7.724906722e-05 0 0 -0.0002599118572 -7.724906722e-05 0.0002199650964 0 0 -0 0 0 0 0 -0 0 0 0 0 -7.837529339e-06 0.000728432549 -0.001305572203 0 0 -0.000728432549 -0.0001298531474 0.001546333321 0 0 --0.001305572203 0.001546333321 -0.002029465325 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0001797213644 -0.0005871562117 0.0007109818572 0 0 --0.0005871562117 0.0005151023114 -0.000956312247 0 0 -0.0007109818572 -0.000956312247 0.0006542987783 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.450044112e-05 9.232919987e-05 -0.000169906098 0 0 -9.232919987e-05 -6.9734703e-05 0.0002139182807 0 0 --0.000169906098 0.0002139182807 -0.0003490394768 0 0 -0 0 0 0 0 -0 0 0 0 0 -7.953041977e-05 -3.922223135e-05 8.73027645e-05 0 0 --3.922223135e-05 0.0001170733931 -0.000129167494 0 0 -8.73027645e-05 -0.000129167494 0.000331860528 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.552517076e-05 -5.13435354e-05 4.460246642e-05 0 0 --5.13435354e-05 -3.336298449e-06 -5.970022121e-05 0 0 -4.460246642e-05 -5.970022121e-05 -8.030164016e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.389050771e-05 4.669748984e-05 -8.138809272e-05 0 0 -4.669748984e-05 -5.716027063e-05 0.0001169883366 0 0 --8.138809272e-05 0.0001169883366 -0.0001958922078 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.957503367e-05 -2.57960399e-05 4.508721991e-05 0 0 --2.57960399e-05 3.652716456e-05 -6.198200736e-05 0 0 -4.508721991e-05 -6.198200736e-05 0.0001089708723 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.34197902e-05 -8.816340801e-07 -7.220512789e-06 0 0 --8.816340801e-07 -1.454518969e-05 1.070164012e-05 0 0 --7.220512789e-06 1.070164012e-05 -5.610012957e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.01211425092 -0.01347021722 -0.03233892026 -0.08952404207 -0.01264894961 --0.01347021722 0.02719459223 0.01789720919 -0.01389253103 -0.003330115315 --0.03233892026 0.01789720919 -0.1254626431 -0.001660438126 -0.006704663414 --0.08952404207 -0.01389253103 -0.001660438126 -0.0955176641 0.0352958277 --0.01264894961 -0.003330115315 -0.006704663414 0.0352958277 -0.1257861973 -0.04521647615 -0.02104445911 0.01182921375 -0.001691040751 0.03101439284 --0.02104445911 0.03315021714 -0.0158317712 -0.01959214338 0.003400057254 -0.01182921375 -0.0158317712 0.005185348931 -0.03065554676 -0.001900885685 --0.001691040751 -0.01959214338 -0.03065554676 0.06155985339 0.01393163219 -0.03101439284 0.003400057254 -0.001900885685 0.01393163219 0.005415318704 -0.007682171142 -0.01519563026 0.02415435162 -0.007454330589 -0.004083193874 --0.01519563026 0.01048902421 -0.0009055409442 -0.02072442631 -0.009189762474 -0.02415435162 -0.0009055409442 0.002050243887 0.006680697005 0.02608332223 --0.007454330589 -0.02072442631 0.006680697005 0.01560938978 -0.02470275665 --0.004083193874 -0.009189762474 0.02608332223 -0.02470275665 -0.01526725413 --0.006078224944 -0.0003739549896 0.003403955916 -0.007868943912 -0.005127517512 --0.0003739549896 0.002896527144 -0.001155782885 -0.003742314667 0.002281103411 -0.003403955916 -0.001155782885 -0.001093000668 0.007865004789 0.002350661286 --0.007868943912 -0.003742314667 0.007865004789 -0.01245548532 -0.01043936039 --0.005127517512 0.002281103411 0.002350661286 -0.01043936039 -0.001278726224 -0.001855960841 0.001296892482 -0.001823682854 0.001482475446 0.003361307519 -0.001296892482 0.002031070302 -0.003250983912 0.001582959719 0.003970486053 --0.001823682854 -0.003250983912 0.00505633053 -0.002817261159 -0.005767410806 -0.001482475446 0.001582959719 -0.002817261159 0.002967948199 0.002765286935 -0.003361307519 0.003970486053 -0.005767410806 0.002765286935 0.008438159834 -0.0006789848685 0.0004791954857 -0.0009168496563 0.0006365195747 0.001252389561 -0.0004791954857 0.0003847506843 -0.0005850432504 0.0005067062475 0.0008629968598 --0.0009168496563 -0.0005850432504 0.0009353912968 -0.0009584782315 -0.001633611448 -0.0006365195747 0.0005067062475 -0.0009584782315 0.0006724019821 0.001437829067 -0.001252389561 0.0008629968598 -0.001633611448 0.001437829067 0.002087889352 --0.000580338003 -0.0002826219182 0.0006042261199 -0.0007181713744 -0.0009018716207 --0.0002826219182 -0.0001782971107 0.0004185479695 -0.0004485819854 -0.0005064796868 -0.0006042261199 0.0004185479695 -0.0009037138635 0.0009500603964 0.001102582466 --0.0007181713744 -0.0004485819854 0.0009500603964 -0.001056842793 -0.001209545424 --0.0009018716207 -0.0005064796868 0.001102582466 -0.001209545424 -0.001498953301 -0.0001582210401 -2.874064897e-05 5.92292008e-05 5.035938647e-05 0.0001247266871 --2.874064897e-05 9.886763831e-05 -0.000130294086 -2.183857927e-05 0.0001013687327 -5.92292008e-05 -0.000130294086 0.0002081423827 -6.486916567e-05 -7.529501943e-05 -5.035938647e-05 -2.183857927e-05 -6.486916567e-05 0.0002289091031 -2.146482211e-05 -0.0001247266871 0.0001013687327 -7.529501943e-05 -2.146482211e-05 0.0002492378538 -0.0001134925974 0.0001380101827 -0.0002559901189 0.0001345302316 0.0002780369237 -0.0001380101827 9.232368305e-05 -0.0001536952796 0.0001542597664 0.0002369576808 --0.0002559901189 -0.0001536952796 0.0002385316187 -0.0002347448612 -0.0004411324578 -0.0001345302316 0.0001542597664 -0.0002347448612 8.746399423e-05 0.000375205031 -0.0002780369237 0.0002369576808 -0.0004411324578 0.000375205031 0.0005145891823 --0.0001176442651 -4.394140018e-05 8.473079502e-05 -0.0001250087438 -0.0001669574038 --4.394140018e-05 -4.153476459e-05 8.004998756e-05 -5.694919552e-05 -9.653008169e-05 -8.473079502e-05 8.004998756e-05 -0.000164304024 0.0001414619993 0.0001732287889 --0.0001250087438 -5.694919552e-05 0.0001414619993 -0.0002009791044 -0.0001618602321 --0.0001669574038 -9.653008169e-05 0.0001732287889 -0.0001618602321 -0.0002933414231 -1.336516526e-05 -1.313730072e-05 1.691125936e-05 -3.2415248e-06 -7.877140013e-07 --1.313730072e-05 4.209791774e-06 2.165179758e-07 -1.241358227e-05 -8.165520126e-06 -1.691125936e-05 2.165179758e-07 -3.457354102e-06 4.463782236e-07 2.118635976e-05 --3.2415248e-06 -1.241358227e-05 4.463782236e-07 2.499269252e-05 -1.463695392e-05 --7.877140013e-07 -8.165520126e-06 2.118635976e-05 -1.463695392e-05 -1.707386957e-05 -5.826320296e-06 2.054192061e-05 -4.044342409e-05 8.842132386e-06 3.148458662e-05 -2.054192061e-05 1.323330282e-05 -1.92198913e-05 2.305530407e-05 3.386934946e-05 --4.044342409e-05 -1.92198913e-05 2.227152297e-05 -3.009435478e-05 -6.459329972e-05 -8.842132386e-06 2.305530407e-05 -3.009435478e-05 -6.171239167e-06 5.421630415e-05 -3.148458662e-05 3.386934946e-05 -6.459329972e-05 5.421630415e-05 6.036073617e-05 --2.284607876e-05 -7.439877416e-06 1.103629364e-05 -2.594152108e-05 -3.041603496e-05 --7.439877416e-06 -7.614010492e-06 1.647470207e-05 -9.455295945e-06 -1.783923362e-05 -1.103629364e-05 1.647470207e-05 -3.697811213e-05 2.409421206e-05 2.947572276e-05 --2.594152108e-05 -9.455295945e-06 2.409421206e-05 -4.178898824e-05 -2.371372833e-05 --3.041603496e-05 -1.783923362e-05 2.947572276e-05 -2.371372833e-05 -5.940468168e-05 -0.0001153080321 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0002380649475 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -9.813321363e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.018992582e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -8.39723627e-08 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -2.064325949e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.624787797e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -3.285374738e-07 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --5.970780666e-08 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.284768708e-07 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.101641132e-08 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.231078415e-08 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -6.117351374e-09 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0002859848495 4.641324357e-06 -0.1570990276 0 0 -4.641324357e-06 7.212876496e-08 -0.002024379236 0 0 --0.1570990276 -0.002024379236 -0.0009871370661 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0006635626323 8.948051625e-06 -0.09831406397 0 0 -8.948051625e-06 9.607202554e-08 -0.0007272297383 0 0 --0.09831406397 -0.0007272297383 -0.001026781424 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0005001378866 5.778524499e-06 -0.03296443409 0 0 -5.778524499e-06 3.460608857e-08 -0.0001165093473 0 0 --0.03296443409 -0.0001165093473 -0.0004462487693 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0001667219484 1.875383497e-06 -0.002138804077 0 0 -1.875383497e-06 9.543565218e-09 -6.24532389e-06 0 0 --0.002138804077 -6.24532389e-06 -3.050427095e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -4.922165132e-05 7.505043592e-07 0.0003987463614 0 0 -7.505043592e-07 1.052252448e-08 4.356119626e-06 0 0 -0.0003987463614 4.356119626e-06 3.220786126e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.871488319e-06 -3.581417392e-08 0.0008369356308 0 0 --3.581417392e-08 -6.850109238e-10 1.565150042e-05 0 0 -0.0008369356308 1.565150042e-05 6.417982728e-07 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.033460528e-05 -1.971519426e-07 0.0001594167888 0 0 --1.971519426e-07 -3.758503648e-09 2.96216142e-06 0 0 -0.0001594167888 2.96216142e-06 -1.280325435e-08 0 0 -0 0 0 0 0 -0 0 0 0 0 --4.962852435e-06 -7.399866104e-08 9.120166836e-05 0 0 --7.399866104e-08 -9.954940917e-10 9.346200105e-07 0 0 -9.120166836e-05 9.346200105e-07 4.850180304e-07 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.412913123e-06 -3.191308551e-08 -0.0001287150902 0 0 --3.191308551e-08 -3.248921205e-10 -8.85555025e-07 0 0 --0.0001287150902 -8.85555025e-07 -1.201028416e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 -3.610944776e-07 4.115665293e-09 1.276999426e-05 0 0 -4.115665293e-09 2.277861125e-11 4.117801311e-08 0 0 -1.276999426e-05 4.117801311e-08 1.761018599e-07 0 0 -0 0 0 0 0 -0 0 0 0 0 -8.940470853e-07 1.376041098e-08 -4.238190367e-05 0 0 -1.376041098e-08 1.96157217e-10 -4.750755866e-07 0 0 --4.238190367e-05 -4.750755866e-07 -3.769995549e-07 0 0 -0 0 0 0 0 -0 0 0 0 0 -8.429017099e-08 1.485674497e-09 8.177601465e-06 0 0 -1.485674497e-09 2.586661499e-11 1.282162652e-07 0 0 -8.177601465e-06 1.282162652e-07 2.838652622e-08 0 0 -0 0 0 0 0 -0 0 0 0 0 -8.356355407e-08 1.640474554e-09 -9.06121544e-06 0 0 -1.640474554e-09 3.220461987e-11 -1.784190738e-07 0 0 --9.06121544e-06 -1.784190738e-07 3.458685485e-09 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0001222152497 2.455711697e-06 -0.02721532298 7.691274866e-05 -0.0005328804048 -2.455711697e-06 3.51132688e-08 -0.0008405207074 2.373104908e-06 -1.645303501e-05 --0.02721532298 -0.0008405207074 -0.000279009138 -4.618177967e-05 8.731744689e-05 -7.691274866e-05 2.373104908e-06 -4.618177967e-05 2.628913954e-07 -1.165732955e-06 --0.0005328804048 -1.645303501e-05 8.731744689e-05 -1.165732955e-06 3.524926271e-06 -0.0002055270599 5.857548557e-06 -0.02971986583 8.526889667e-05 -0.0005815880606 -5.857548557e-06 1.439774861e-07 -0.001161170087 3.302302123e-06 -2.272514072e-05 --0.02971986583 -0.001161170087 -0.0001248880836 -0.0003990629147 -3.258250774e-05 -8.526889667e-05 3.302302123e-06 -0.0003990629147 2.253799453e-06 -7.72559308e-06 --0.0005815880606 -2.272514072e-05 -3.258250774e-05 -7.72559308e-06 -1.227600191e-06 -0.0001316457394 4.730135707e-06 -0.01269424007 3.76130082e-05 -0.000248029247 -4.730135707e-06 1.487985016e-07 -0.0006170465988 1.783312447e-06 -1.206717657e-05 --0.01269424007 -0.0006170465988 4.140262531e-05 -0.0003423512903 -8.189469322e-05 -3.76130082e-05 1.783312447e-06 -0.0003423512903 1.932724595e-06 -6.467179724e-06 --0.000248029247 -1.206717657e-05 -8.189469322e-05 -6.467179724e-06 -3.221629488e-06 -3.662719699e-05 1.793201593e-06 -0.001853108561 6.264824361e-06 -3.590826309e-05 -1.793201593e-06 7.218734717e-08 -0.0001289663503 3.934754077e-07 -2.513951831e-06 --0.001853108561 -0.0001289663503 3.89048648e-05 -0.000104339792 -3.583594282e-05 -6.264824361e-06 3.934754077e-07 -0.000104339792 5.891665513e-07 -1.938811099e-06 --3.590826309e-05 -2.513951831e-06 -3.583594282e-05 -1.938811099e-06 -1.417702246e-06 -4.961030557e-06 2.979239386e-07 -0.0001282083179 5.633442238e-07 -2.415872882e-06 -2.979239386e-07 1.371894036e-08 -1.141416016e-05 3.851377305e-08 -2.205007458e-07 --0.0001282083179 -1.141416016e-05 5.625928404e-06 -1.038857043e-05 -4.719729165e-06 -5.633442238e-07 3.851377305e-08 -1.038857043e-05 5.871282542e-08 -1.89671553e-07 --2.415872882e-06 -2.205007458e-07 -4.719729165e-06 -1.89671553e-07 -1.86909058e-07 --1.528150817e-06 -6.835264953e-08 -9.315850614e-05 2.395575727e-07 -1.823980035e-06 --6.835264953e-08 -3.031824444e-09 -4.547580726e-06 1.18823169e-08 -8.903334374e-08 --9.315850614e-05 -4.547580726e-06 -2.719131293e-07 -2.806529967e-06 -8.268871025e-08 -2.395575727e-07 1.18823169e-08 -2.806529967e-06 1.582351708e-08 -5.47127552e-08 --1.823980035e-06 -8.903334374e-08 -8.268871025e-08 -5.47127552e-08 -3.132685351e-09 -1.122282072e-07 6.341240688e-09 -2.481120648e-05 7.60514111e-08 -4.83665187e-07 -6.341240688e-09 1.101615197e-10 -2.568454049e-06 7.305888557e-09 -5.025257259e-08 --2.481120648e-05 -2.568454049e-06 1.073013301e-06 -2.668614425e-06 -8.421847454e-07 -7.60514111e-08 7.305888557e-09 -2.668614425e-06 1.505425048e-08 -4.979537776e-08 --4.83665187e-07 -5.025257259e-08 -8.421847454e-07 -4.979537776e-08 -3.337838612e-08 -7.025777159e-07 3.499430537e-08 -2.981685546e-05 1.039034373e-07 -5.746315651e-07 -3.499430537e-08 1.445162739e-09 -2.098848055e-06 6.504539519e-09 -4.081794607e-08 --2.981685546e-05 -2.098848055e-06 8.443769003e-07 -1.670627053e-06 -7.437755813e-07 -1.039034373e-07 6.504539519e-09 -1.670627053e-06 9.43376644e-09 -3.05501722e-08 --5.746315651e-07 -4.081794607e-08 -7.437755813e-07 -3.05501722e-08 -2.943857138e-08 --1.134064414e-07 -3.451960762e-09 -1.055001616e-06 2.802841379e-09 -1.918919021e-08 --3.451960762e-09 -1.027823792e-10 -2.738022034e-08 7.135337268e-11 -4.84901968e-10 --1.055001616e-06 -2.738022034e-08 -3.867181417e-08 -2.764530513e-09 2.637754342e-08 -2.802841379e-09 7.135337268e-11 -2.764530513e-09 1.580308096e-11 -1.30172721e-10 --1.918919021e-08 -4.84901968e-10 2.637754342e-08 -1.30172721e-10 1.0473638e-09 -2.105403058e-09 -1.644733445e-09 1.16934467e-08 -2.563798067e-09 -6.463194409e-10 --1.644733445e-09 -1.159497729e-10 -1.764576454e-08 -3.80763745e-11 -3.755549772e-10 -1.16934467e-08 -1.764576454e-08 1.32361176e-08 -2.663929463e-08 -8.939056045e-09 --2.563798067e-09 -3.80763745e-11 -2.663929463e-08 1.485026361e-10 -4.95742206e-10 --6.463194409e-10 -3.755549772e-10 -8.939056045e-09 -4.95742206e-10 -3.549899985e-10 -1.992405651e-08 6.709425021e-10 -4.946191095e-06 1.440542102e-08 -9.665228079e-08 -6.709425021e-10 7.857195182e-12 -3.01077452e-07 8.525729677e-10 -5.891822786e-09 --4.946191095e-06 -3.01077452e-07 8.133115616e-08 -2.219800508e-07 -7.639628108e-08 -1.440542102e-08 8.525729677e-10 -2.219800508e-07 1.252264997e-09 -4.124613414e-09 --9.665228079e-08 -5.891822786e-09 -7.639628108e-08 -4.124613414e-09 -3.021690014e-09 --3.168654919e-08 -1.359452728e-09 -9.694469102e-07 2.223500809e-09 -1.88919331e-08 --1.359452728e-09 -5.732538142e-11 -4.70359629e-08 1.135678527e-10 -9.175327946e-10 --9.694469102e-07 -4.70359629e-08 -9.769771149e-09 -3.095494677e-08 4.860987284e-09 -2.223500809e-09 1.135678527e-10 -3.095494677e-08 1.744102139e-10 -6.200924622e-10 --1.88919331e-08 -9.175327946e-10 4.860987284e-09 -6.200924622e-10 1.940260446e-10 -2.499411721e-08 6.101912855e-10 -1.569151916e-06 4.262717596e-09 -3.074434782e-08 -6.101912855e-10 1.473345823e-11 -3.429609986e-08 9.230474213e-11 -6.721266946e-10 --1.569151916e-06 -3.429609986e-08 -1.612535507e-08 2.124048385e-08 3.716539601e-09 -4.262717596e-09 9.230474213e-11 2.124048385e-08 -1.198437777e-10 4.043421268e-10 --3.074434782e-08 -6.721266946e-10 3.716539601e-09 4.043421268e-10 1.516613413e-10 --0.0007041107372 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.002237155318 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0001314331354 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0004561050542 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -9.551635978e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -4.028543081e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.760673985e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.77816063e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.740279752e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -2.409080446e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -4.323174717e-07 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -8.540510981e-07 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.623572076e-07 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0009881106598 0.001147228452 -0.1213855804 0 0 -0.001147228452 -0.0001012741428 -0.05772660273 0 0 --0.1213855804 -0.05772660273 -0.001379859252 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.002471274537 -0.0005164969377 0.05184776872 0 0 --0.0005164969377 0.0004433408364 -0.03201766091 0 0 -0.05184776872 -0.03201766091 -0.001002836123 0 0 -0 0 0 0 0 -0 0 0 0 0 -2.54607702e-05 -0.000162065775 -0.03248550569 0 0 --0.000162065775 0.0002004536914 -0.002113810991 0 0 --0.03248550569 -0.002113810991 0.0001782825154 0 0 -0 0 0 0 0 -0 0 0 0 0 -7.322449852e-05 4.702195284e-05 -0.02827740927 0 0 -4.702195284e-05 4.222534673e-06 -0.0006681313986 0 0 --0.02827740927 -0.0006681313986 -0.0002480883034 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0001034436959 9.557561307e-06 -0.001911418043 0 0 -9.557561307e-06 -7.673803107e-08 0.0001299504159 0 0 --0.001911418043 0.0001299504159 -2.601246743e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -4.38923286e-05 -1.160046002e-05 -0.0004093513956 0 0 --1.160046002e-05 6.131166955e-06 0.0002231856745 0 0 --0.0004093513956 0.0002231856745 2.907123847e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.634469168e-05 -6.258897344e-06 -0.0007648388691 0 0 --6.258897344e-06 6.216507827e-07 -2.828458705e-05 0 0 --0.0007648388691 -2.828458705e-05 -3.093407851e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 -4.159947554e-06 7.051858606e-07 6.357439021e-05 0 0 -7.051858606e-07 -1.133292506e-07 -4.350102132e-05 0 0 -6.357439021e-05 -4.350102132e-05 -3.785520998e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 -3.91385714e-06 2.850136785e-06 -0.00030115679 0 0 -2.850136785e-06 -1.755039997e-06 2.41696091e-05 0 0 --0.00030115679 2.41696091e-05 -3.154849104e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 -9.68667401e-07 -1.617948293e-06 -0.0001199883354 0 0 --1.617948293e-06 4.673552372e-07 1.269024875e-05 0 0 --0.0001199883354 1.269024875e-05 3.048868265e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.179648714e-06 -1.254965009e-06 2.472186828e-05 0 0 --1.254965009e-06 8.221375399e-07 -5.445329071e-06 0 0 -2.472186828e-05 -5.445329071e-06 2.639158192e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 -6.575189695e-07 1.577604615e-07 -6.015530655e-05 0 0 -1.577604615e-07 -1.779274985e-07 -3.908934475e-06 0 0 --6.015530655e-05 -3.908934475e-06 -3.847386186e-07 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.414138627e-06 5.112333534e-07 -3.327034144e-05 0 0 -5.112333534e-07 -2.673440631e-07 5.338783349e-06 0 0 --3.327034144e-05 5.338783349e-06 -3.002825513e-07 0 0 -0 0 0 0 0 -0 0 0 0 0 --6.769152144e-05 0.001077927956 -5.103989687e-05 -1.128557422e-05 -0.04011995603 -0.001077927956 -0.0003041540115 -0.06305469078 0.0006995194249 -0.2251589941 --5.103989687e-05 -0.06305469078 -0.001032395408 0.2197440494 -0.0006571401163 --1.128557422e-05 0.0006995194249 0.2197440494 -1.384946805e-05 -0.09010780773 --0.04011995603 -0.2251589941 -0.0006571401163 -0.09010780773 -0.000326096287 -0.0015624279 -0.0006450039623 0.1120127583 8.968957655e-06 -0.0173865065 --0.0006450039623 0.0005234534324 -0.05666820869 -0.0004339366136 -0.08027637609 -0.1120127583 -0.05666820869 -0.00180004926 0.08216127699 0.0009414335593 -8.968957655e-06 -0.0004339366136 0.08216127699 -0.0006347782115 -0.01833660696 --0.0173865065 -0.08027637609 0.0009414335593 -0.01833660696 -0.0006245131744 -8.859545691e-05 -0.0004184298434 0.03628670398 -0.0001976817969 0.00235469294 --0.0004184298434 0.0004858500911 -0.008046556049 -9.471049709e-05 -0.01753517652 -0.03628670398 -0.008046556049 0.0009123916526 0.01793618056 5.204249455e-05 --0.0001976817969 -9.471049709e-05 0.01793618056 -0.0001873760624 0.001149982479 -0.00235469294 -0.01753517652 5.204249455e-05 0.001149982479 -0.0001709405395 --0.0001062404148 4.975495432e-05 -0.01969465503 7.866764856e-05 0.0006271349889 -4.975495432e-05 7.486612142e-05 0.0004802866535 3.21003203e-06 -0.0008200735477 --0.01969465503 0.0004802866535 -0.0001337714211 0.0008151113025 9.458838277e-06 -7.866764856e-05 3.21003203e-06 0.0008151113025 -1.709598961e-05 0.0009115826199 -0.0006271349889 -0.0008200735477 9.458838277e-06 0.0009115826199 -3.208372639e-05 -0.000120871692 2.775819582e-05 -0.006598386956 3.763021294e-05 -0.0007105939243 -2.775819582e-05 2.153452528e-05 0.0006056952209 1.804006586e-05 -0.0008072498344 --0.006598386956 0.0006056952209 -0.0001025593743 0.0007830993214 -8.940692012e-06 -3.763021294e-05 1.804006586e-05 0.0007830993214 7.928870497e-06 -0.000221754874 --0.0007105939243 -0.0008072498344 -8.940692012e-06 -0.000221754874 8.395705524e-06 -0.0001038467954 -1.648053502e-05 -0.003379591856 -3.603832013e-06 -9.956418543e-06 --1.648053502e-05 3.647293033e-06 -2.792587771e-05 3.706780312e-06 -0.0001099285761 --0.003379591856 -2.792587771e-05 7.430221225e-06 8.48907301e-05 -8.919397712e-06 --3.603832013e-06 3.706780312e-06 8.48907301e-05 5.994488408e-07 4.909151375e-06 --9.956418543e-06 -0.0001099285761 -8.919397712e-06 4.909151375e-06 -1.754215088e-07 -4.607917539e-06 -1.747176203e-06 -0.0001338271696 -1.837589347e-07 -2.570838071e-05 --1.747176203e-06 1.0492854e-06 2.377283626e-06 7.111961554e-07 7.181124218e-06 --0.0001338271696 2.377283626e-06 -1.980910449e-06 -7.342903281e-06 -8.240912243e-07 --1.837589347e-07 7.111961554e-07 -7.342903281e-06 1.380534442e-07 1.192187597e-05 --2.570838071e-05 7.181124218e-06 -8.240912243e-07 1.192187597e-05 3.2605877e-07 -1.126989196e-06 1.625144924e-06 0.0001952830035 1.459411809e-07 -4.355910338e-05 -1.625144924e-06 -3.357475061e-06 -5.631537267e-05 -1.459981537e-06 -0.0001149847346 -0.0001952830035 -5.631537267e-05 -1.617272948e-05 0.0001157429709 5.105134346e-06 -1.459411809e-07 -1.459981537e-06 0.0001157429709 -7.626272381e-07 -4.730680979e-05 --4.355910338e-05 -0.0001149847346 5.105134346e-06 -4.730680979e-05 -1.496751998e-06 -3.94192495e-06 -1.722200567e-07 -0.0005632720197 -4.552660936e-07 2.43970046e-05 --1.722200567e-07 -6.770905753e-07 1.219227424e-05 8.578249874e-07 -4.449817283e-05 --0.0005632720197 1.219227424e-05 7.987002063e-07 3.87169053e-05 -2.336705554e-06 --4.552660936e-07 8.578249874e-07 3.87169053e-05 6.707036054e-07 -2.02810574e-05 -2.43970046e-05 -4.449817283e-05 -2.336705554e-06 -2.02810574e-05 6.346240933e-07 -1.410178645e-07 -4.9786623e-07 -2.372471181e-06 -3.007472216e-07 -3.288204339e-06 --4.9786623e-07 1.319364609e-06 1.060849992e-05 7.516100739e-07 -1.806078311e-05 --2.372471181e-06 1.060849992e-05 4.661916699e-06 1.608392008e-05 -1.606439278e-06 --3.007472216e-07 7.516100739e-07 1.608392008e-05 3.535785897e-07 -8.108233264e-06 --3.288204339e-06 -1.806078311e-05 -1.606439278e-06 -8.108233264e-06 5.025367014e-07 -1.068336866e-06 -1.768828933e-07 2.463726264e-05 -2.598367803e-08 -6.295938952e-06 --1.768828933e-07 2.049469676e-07 -1.471427501e-05 4.657838029e-08 -2.392215131e-05 -2.463726264e-05 -1.471427501e-05 2.691639207e-07 2.354542114e-05 -3.939363664e-08 --2.598367803e-08 4.657838029e-08 2.354542114e-05 -5.102392496e-08 -1.036374374e-05 --6.295938952e-06 -2.392215131e-05 -3.939363664e-08 -1.036374374e-05 -6.495948345e-08 --8.336854226e-07 6.651047028e-07 -4.624487101e-05 3.472301811e-07 -2.176454449e-06 -6.651047028e-07 -6.621694912e-07 -8.139443223e-06 -1.383871894e-07 -1.581359935e-05 --4.624487101e-05 -8.139443223e-06 -2.373012097e-06 1.556485304e-05 4.45942197e-07 -3.472301811e-07 -1.383871894e-07 1.556485304e-05 -3.670666501e-08 -8.546091636e-06 --2.176454449e-06 -1.581359935e-05 4.45942197e-07 -8.546091636e-06 -1.538804587e-07 --2.044435909e-07 -5.122464841e-08 1.746163729e-06 -1.73265323e-07 -1.338927416e-06 --5.122464841e-08 2.940609331e-07 5.048807479e-06 3.088448684e-07 -1.708220902e-05 -1.746163729e-06 5.048807479e-06 1.541324699e-06 1.593565034e-05 -5.958136389e-07 --1.73265323e-07 3.088448684e-07 1.593565034e-05 1.606405045e-07 -7.587280852e-06 --1.338927416e-06 -1.708220902e-05 -5.958136389e-07 -7.587280852e-06 1.79383281e-07 -3.592854916e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --5.325213119e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.400940087e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -4.965276825e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -2.118911133e-07 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.992302226e-07 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.722960271e-07 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.358971461e-07 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --5.093029426e-09 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --5.891200004e-08 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.591412863e-08 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.365418623e-09 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.021461999e-09 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.000206267543 0.0001121837188 -0.08388409171 0 0 -0.0001121837188 4.034657461e-05 -0.01906967638 0 0 --0.08388409171 -0.01906967638 -0.0005523651927 0 0 -0 0 0 0 0 -0 0 0 0 0 -8.470501065e-05 3.222868567e-05 -0.002852585968 0 0 -3.222868567e-05 -7.248083064e-06 0.0002840130638 0 0 --0.002852585968 0.0002840130638 -4.519608386e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -4.262482006e-08 -7.892397994e-07 2.792188191e-05 0 0 --7.892397994e-07 -1.389700619e-06 -0.001058009406 0 0 -2.792188191e-05 -0.001058009406 1.101624586e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 -6.017715703e-06 5.378267063e-06 -0.000342479987 0 0 -5.378267063e-06 4.80008365e-06 -0.0003175024666 0 0 --0.000342479987 -0.0003175024666 -4.813389226e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.588416905e-07 -2.466509152e-07 -9.401408834e-05 0 0 --2.466509152e-07 -2.328200973e-07 -9.828147467e-05 0 0 --9.401408834e-05 -9.828147467e-05 -6.256472268e-07 0 0 -0 0 0 0 0 -0 0 0 0 0 --5.448636094e-07 1.51227182e-07 -2.155845566e-05 0 0 -1.51227182e-07 6.636044214e-07 3.052031988e-05 0 0 --2.155845566e-05 3.052031988e-05 2.79184605e-07 0 0 -0 0 0 0 0 -0 0 0 0 0 -2.561626484e-08 1.87250962e-08 -1.278315038e-05 0 0 -1.87250962e-08 1.325863916e-08 -7.689789327e-06 0 0 --1.278315038e-05 -7.689789327e-06 7.63236576e-08 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.641465571e-07 1.220375032e-07 -2.043639137e-05 0 0 -1.220375032e-07 8.848586865e-08 -1.280374205e-05 0 0 --2.043639137e-05 -1.280374205e-05 -1.427308603e-07 0 0 -0 0 0 0 0 -0 0 0 0 0 --4.459923129e-08 -1.666400056e-08 -2.221427655e-05 0 0 --1.666400056e-08 4.341452212e-09 2.513134949e-06 0 0 --2.221427655e-05 2.513134949e-06 -1.995972134e-07 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.020649877e-07 -6.028823726e-08 -1.481930053e-05 0 0 --6.028823726e-08 -2.818575935e-08 -4.756349733e-06 0 0 --1.481930053e-05 -4.756349733e-06 -3.361207305e-09 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.288786654e-08 -7.50931263e-09 -8.861950019e-06 0 0 --7.50931263e-09 -3.381194285e-09 -2.702153917e-06 0 0 --8.861950019e-06 -2.702153917e-06 3.535072279e-08 0 0 -0 0 0 0 0 -0 0 0 0 0 -6.952608423e-09 3.440379486e-09 -8.947330024e-06 0 0 -3.440379486e-09 7.73203242e-10 -1.156462028e-06 0 0 --8.947330024e-06 -1.156462028e-06 -1.525159682e-08 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.176313203e-08 -6.743474442e-09 -9.01428471e-06 0 0 --6.743474442e-09 -2.895972983e-09 -2.57927119e-06 0 0 --9.01428471e-06 -2.57927119e-06 -4.322927762e-08 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0001187884694 0.0001716364431 -0.03790563122 0.0001034784843 -0.03261430856 -0.0001716364431 0.000197505628 -0.0794825367 0.0001976557215 -0.06838767714 --0.03790563122 -0.0794825367 -0.0002633261947 -0.00945733008 -0.0003568957448 -0.0001034784843 0.0001976557215 -0.00945733008 4.424166432e-05 -0.008136908635 --0.03261430856 -0.06838767714 -0.0003568957448 -0.008136908635 -0.0004192124244 -4.418358157e-05 8.314502562e-05 -0.00585223608 2.622201505e-05 -0.00503503547 -8.314502562e-05 0.0001552055659 -0.01200006719 5.397744717e-05 -0.01032449289 --0.00585223608 -0.01200006719 -3.096222962e-05 0.0001641978474 -0.0001079220793 -2.622201505e-05 5.397744717e-05 0.0001641978474 -1.505537084e-06 0.0001416508262 --0.00503503547 -0.01032449289 -0.0001079220793 0.0001416508262 -0.0001627935193 -2.285985862e-06 5.053245293e-06 0.0004187826089 -2.90643379e-07 0.0003603373393 -5.053245293e-06 8.608065313e-06 0.0004823645094 -2.754037308e-06 0.0004150694144 -0.0004187826089 0.0004823645094 7.944513189e-07 -0.0004186193665 4.777585443e-06 --2.90643379e-07 -2.754037308e-06 -0.0004186193665 -1.703161894e-06 -0.0003601773811 -0.0003603373393 0.0004150694144 4.777585443e-06 -0.0003601773811 7.633255786e-06 --4.307145163e-07 1.455120265e-06 6.763926056e-05 1.597274329e-06 5.82127407e-05 -1.455120265e-06 5.724422676e-06 -0.000564679819 5.222104955e-06 -0.000485834176 -6.763926056e-05 -0.000564679819 -1.273565231e-06 -0.0005863064904 -5.811565471e-06 -1.597274329e-06 5.222104955e-06 -0.0005863064904 4.672916124e-06 -0.0005044471641 -5.82127407e-05 -0.000485834176 -5.811565471e-06 -0.0005044471641 -9.057862915e-06 --1.254091173e-07 -2.787501166e-07 -5.341441749e-05 1.153670115e-08 -4.595765145e-05 --2.787501166e-07 1.143122818e-08 1.089212762e-06 1.595921635e-07 9.408741903e-07 --5.341441749e-05 1.089212762e-06 -3.851219834e-07 3.034746491e-05 3.745704911e-07 -1.153670115e-08 1.595921635e-07 3.034746491e-05 2.737283366e-08 2.611168361e-05 --4.595765145e-05 9.408741903e-07 3.745704911e-07 2.611168361e-05 9.296810543e-07 --2.486788927e-07 -4.154875407e-07 -2.950789417e-06 -1.906127013e-08 -2.536970903e-06 --4.154875407e-07 -5.528791201e-07 -2.706121392e-06 1.412914837e-07 -2.323708878e-06 --2.950789417e-06 -2.706121392e-06 -1.118157139e-08 2.498773003e-06 3.612632903e-08 --1.906127013e-08 1.412914837e-07 2.498773003e-06 2.106770766e-07 2.151906095e-06 --2.536970903e-06 -2.323708878e-06 3.612632903e-08 2.151906095e-06 7.044499726e-08 --1.495857173e-08 6.490795955e-08 1.625684995e-06 5.614708744e-08 1.398588693e-06 -6.490795955e-08 2.877204893e-07 -1.708308531e-05 2.116320937e-07 -1.469883103e-05 -1.625684995e-06 -1.708308531e-05 -2.658059092e-08 -1.412112429e-05 1.461146156e-08 -5.614708744e-08 2.116320937e-07 -1.412112429e-05 1.532794086e-07 -1.215020789e-05 -1.398588693e-06 -1.469883103e-05 1.461146156e-08 -1.215020789e-05 4.482170376e-08 -7.537457065e-08 1.089521198e-07 -1.404093983e-05 5.081888036e-08 -1.208051884e-05 -1.089521198e-07 1.574872719e-07 -2.026416693e-05 7.335190134e-08 -1.743484568e-05 --1.404093983e-05 -2.026416693e-05 -9.786843522e-08 -7.487415147e-07 -2.681944684e-07 -5.081888036e-08 7.335190134e-08 -7.487415147e-07 5.206645007e-09 -6.435876616e-07 --1.208051884e-05 -1.743484568e-05 -2.681944684e-07 -6.435876616e-07 -3.890631256e-07 --6.636297613e-09 -4.597727014e-08 -1.355047301e-05 7.321856593e-09 -1.165900932e-05 --4.597727014e-08 -1.174776973e-07 -1.929438064e-05 1.723148527e-08 -1.660115424e-05 --1.355047301e-05 -1.929438064e-05 -8.177342903e-08 2.524793247e-06 -7.388675872e-08 -7.321856593e-09 1.723148527e-08 2.524793247e-06 -2.498082211e-09 2.172367669e-06 --1.165900932e-05 -1.660115424e-05 -7.388675872e-08 2.172367669e-06 -6.660852761e-08 --6.630434964e-09 -2.671017816e-08 -3.597414575e-06 -4.02755971e-09 -3.095198471e-06 --2.671017816e-08 -1.00803039e-07 -1.084966844e-05 -1.888857885e-08 -9.334871321e-06 --3.597414575e-06 -1.084966844e-05 -3.503928057e-08 -3.612702164e-06 4.061049042e-08 --4.02755971e-09 -1.888857885e-08 -3.612702164e-06 -1.402423593e-09 -3.108403591e-06 --3.095198471e-06 -9.334871321e-06 4.061049042e-08 -3.108403591e-06 9.582359176e-08 -1.542409528e-08 2.120222384e-08 -4.386143427e-06 1.213295437e-08 -3.773952764e-06 -2.120222384e-08 2.654643355e-08 -7.829589197e-06 2.082122307e-08 -6.736737607e-06 --4.386143427e-06 -7.829589197e-06 -3.133951523e-08 -5.798082434e-07 5.008049905e-09 -1.213295437e-08 2.082122307e-08 -5.798082434e-07 2.938370939e-09 -4.989557891e-07 --3.773952764e-06 -6.736737607e-06 5.008049905e-09 -4.989557891e-07 3.181898075e-08 -1.741404718e-08 2.506232727e-08 -4.754658005e-06 1.369136624e-08 -4.090977842e-06 -2.506232727e-08 3.301016804e-08 -8.835904676e-06 2.436127904e-08 -7.602537265e-06 --4.754658005e-06 -8.835904676e-06 -3.303887985e-08 -7.049217219e-07 -2.492294233e-08 -1.369136624e-08 2.436127904e-08 -7.049217219e-07 3.677147534e-09 -6.065332293e-07 --4.090977842e-06 -7.602537265e-06 -2.492294233e-08 -6.065332293e-07 -1.842901373e-08 -2.555161486e-09 -2.699041895e-09 -3.436881967e-06 4.357472002e-09 -2.957143781e-06 --2.699041895e-09 -2.345703106e-08 -7.397697691e-06 6.170161119e-09 -6.365058945e-06 --3.436881967e-06 -7.397697691e-06 -2.67367222e-08 -1.34517446e-06 -1.087976329e-08 -4.357472002e-09 6.170161119e-09 -1.34517446e-06 3.019577985e-09 -1.157419729e-06 --2.957143781e-06 -6.365058945e-06 -1.087976329e-08 -1.157419729e-06 1.071306969e-09 --0.01474101686 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.02155881444 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.004491569893 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0027014945 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.005213052e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -6.424895143e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.221662947e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --6.882077397e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.095065054e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -2.918096257e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -3.050564372e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.641031058e-08 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.103071574e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.08483020909 0.01947456164 -0.05251249172 0 0 -0.01947456164 -0.002792213583 0.002561620127 0 0 --0.05251249172 0.002561620127 0.02118780902 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.04141157593 0.007038229838 0.008517298936 0 0 -0.007038229838 0.0004649219042 0.0007078842513 0 0 -0.008517298936 0.0007078842513 0.001045133212 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0003037307805 -0.0004003142596 -0.0005357004957 0 0 --0.0004003142596 0.0003380586965 0.00112214916 0 0 --0.0005357004957 0.00112214916 0.002916116899 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.002571575339 0.001152758079 0.00164256984 0 0 -0.001152758079 -0.0005010885003 -0.0006772260076 0 0 -0.00164256984 -0.0006772260076 -0.0008261942821 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0001514320618 -4.911970481e-05 -0.0001571525766 0 0 --4.911970481e-05 1.561421632e-05 4.73811246e-05 0 0 --0.0001571525766 4.73811246e-05 0.0001225489196 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0002168995423 4.261444755e-05 4.998113668e-05 0 0 -4.261444755e-05 -6.128705702e-05 -0.0001195718846 0 0 -4.998113668e-05 -0.0001195718846 -0.0002288260738 0 0 -0 0 0 0 0 -0 0 0 0 0 --6.763286111e-05 2.576068737e-05 3.383803151e-05 0 0 -2.576068737e-05 -9.804318605e-06 -1.271796218e-05 0 0 -3.383803151e-05 -1.271796218e-05 -1.313595212e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --6.277380663e-05 1.716440252e-05 1.008951355e-05 0 0 -1.716440252e-05 -4.105018822e-06 -3.775665454e-06 0 0 -1.008951355e-05 -3.775665454e-06 1.359962789e-07 0 0 -0 0 0 0 0 -0 0 0 0 0 -4.375833817e-05 -6.31115381e-06 -3.381647378e-05 0 0 --6.31115381e-06 -1.324993622e-06 -4.034102645e-06 0 0 --3.381647378e-05 -4.034102645e-06 -9.394165757e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 -3.88310344e-05 -1.053874528e-05 -3.3024047e-05 0 0 --1.053874528e-05 2.480868181e-06 7.008206407e-06 0 0 --3.3024047e-05 7.008206407e-06 1.801514252e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --6.382015348e-06 1.388014302e-06 -5.799535433e-06 0 0 -1.388014302e-06 -1.529664661e-07 2.215967669e-07 0 0 --5.799535433e-06 2.215967669e-07 1.989501077e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.926339135e-06 8.114458436e-07 -7.687972818e-06 0 0 -8.114458436e-07 -6.264693648e-08 2.631884264e-07 0 0 --7.687972818e-06 2.631884264e-07 1.675213364e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.083758808e-05 -2.675872603e-06 -1.367467295e-05 0 0 --2.675872603e-06 4.958408084e-07 2.013898096e-06 0 0 --1.367467295e-05 2.013898096e-06 5.99376885e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.05466145525 0.03302313853 0.01653505698 -0.02327900666 0.006207976211 -0.03302313853 -0.01594366409 0.009174553411 0.02189464001 -0.007507470392 -0.01653505698 0.009174553411 0.08665474478 0.04449492592 -0.01984660362 --0.02327900666 0.02189464001 0.04449492592 0.005390221972 -0.004698603079 -0.006207976211 -0.007507470392 -0.01984660362 -0.004698603079 0.002817600568 --0.02444057065 0.01898059825 0.02648550805 -0.00222480096 -0.002245025044 -0.01898059825 -0.01447787342 -0.01926006356 0.001911489757 0.002042564181 -0.02648550805 -0.01926006356 -0.02217758615 0.003326773807 0.003923836706 --0.00222480096 0.001911489757 0.003326773807 -7.395930532e-05 4.938002233e-06 --0.002245025044 0.002042564181 0.003923836706 4.938002233e-06 0.0001345230171 --0.002037088466 0.001653000227 0.003386672747 0.000292508969 -0.0001532799672 -0.001653000227 -0.001227548869 -0.002446834005 3.535808755e-05 -0.0002472823419 -0.003386672747 -0.002446834005 -0.00483256466 0.000235838999 -0.0007293139654 -0.000292508969 3.535808755e-05 0.000235838999 0.0006116475235 -0.0008687967961 --0.0001532799672 -0.0002472823419 -0.0007293139654 -0.0008687967961 0.00120247556 -0.0002818012604 0.0002412498005 0.0005600692832 0.0004856103793 -0.0007274580595 -0.0002412498005 -0.0003968375769 -0.0004492429495 -0.0001641547583 0.0004821096988 -0.0005600692832 -0.0004492429495 -0.00031637925 7.256431571e-05 0.0002548609265 -0.0004856103793 -0.0001641547583 7.256431571e-05 0.0002795082219 -0.0001917039972 --0.0007274580595 0.0004821096988 0.0002548609265 -0.0001917039972 -0.0001453507016 -0.0001447490896 -7.504605254e-05 -0.00020122833 -4.326384031e-05 1.830123922e-05 --7.504605254e-05 -3.283803486e-05 -6.895484844e-05 -6.096372189e-05 9.423523658e-05 --0.00020122833 -6.895484844e-05 -0.0001387718902 -0.0001412706053 0.0002250735804 --4.326384031e-05 -6.096372189e-05 -0.0001412706053 -8.400212142e-05 0.000115093158 -1.830123922e-05 9.423523658e-05 0.0002250735804 0.000115093158 -0.0001476397186 -8.496845695e-05 -6.070917253e-05 -0.0001068133161 -3.236448313e-07 -2.652601578e-06 --6.070917253e-05 4.101144283e-05 7.253642219e-05 -4.279674888e-06 1.033484856e-05 --0.0001068133161 7.253642219e-05 0.0001282297346 -6.805243342e-06 1.682786401e-05 --3.236448313e-07 -4.279674888e-06 -6.805243342e-06 -8.603830921e-06 1.610953954e-05 --2.652601578e-06 1.033484856e-05 1.682786401e-05 1.610953954e-05 -3.003803931e-05 -1.226095195e-05 1.675946664e-05 3.308686478e-05 2.258041936e-05 -3.412314078e-05 -1.675946664e-05 -3.200717146e-05 -4.862326776e-05 -1.730402998e-05 3.439491441e-05 -3.308686478e-05 -4.862326776e-05 -7.110017856e-05 -2.13854909e-05 4.640852732e-05 -2.258041936e-05 -1.730402998e-05 -2.13854909e-05 -6.66180059e-07 8.239123294e-06 --3.412314078e-05 3.439491441e-05 4.640852732e-05 8.239123294e-06 -2.461831256e-05 --3.884313546e-05 1.809504937e-05 1.14362827e-05 -1.422131967e-05 6.716256873e-06 -1.809504937e-05 -8.369849298e-06 -6.086799525e-06 6.337475793e-06 -3.277036145e-06 -1.14362827e-05 -6.086799525e-06 6.285104821e-06 7.842388049e-06 -9.237071351e-08 --1.422131967e-05 6.337475793e-06 7.842388049e-06 -3.822457396e-06 3.172839892e-06 -6.716256873e-06 -3.277036145e-06 -9.237071351e-08 3.172839892e-06 -7.931456849e-07 -1.106097736e-05 -1.325671248e-05 -3.588948608e-05 -1.196552201e-05 1.028535211e-05 --1.325671248e-05 1.337426198e-05 3.286191169e-05 8.589020684e-06 -7.137052448e-06 --3.588948608e-05 3.286191169e-05 7.545528552e-05 1.559807783e-05 -1.241478782e-05 --1.196552201e-05 8.589020684e-06 1.559807783e-05 -2.152052266e-07 7.476109427e-07 -1.028535211e-05 -7.137052448e-06 -1.241478782e-05 7.476109427e-07 -1.150310207e-06 -1.938082537e-06 -3.251943831e-06 -8.965253221e-06 -3.488840678e-06 3.220136155e-06 --3.251943831e-06 5.197984923e-06 1.346209368e-05 4.983527392e-06 -4.781613117e-06 --8.965253221e-06 1.346209368e-05 3.180433521e-05 1.081568172e-05 -1.109509941e-05 --3.488840678e-06 4.983527392e-06 1.081568172e-05 3.349404602e-06 -3.703964697e-06 -3.220136155e-06 -4.781613117e-06 -1.109509941e-05 -3.703964697e-06 3.85603638e-06 --9.715619974e-06 5.512974899e-06 4.449336211e-06 -2.966578531e-06 9.294420318e-07 -5.512974899e-06 -3.072734101e-06 -1.993924222e-06 1.889243999e-06 -5.291310779e-07 -4.449336211e-06 -1.993924222e-06 3.037096762e-06 3.327193968e-06 -4.422219501e-07 --2.966578531e-06 1.889243999e-06 3.327193968e-06 -1.421285582e-07 2.773660009e-07 -9.294420318e-07 -5.291310779e-07 -4.422219501e-07 2.773660009e-07 -8.886065524e-08 --7.007872396e-06 4.269744923e-06 2.549340069e-06 -2.615267131e-06 4.946129526e-07 -4.269744923e-06 -2.199639379e-06 4.41796052e-07 2.427274597e-06 -6.955526942e-07 -2.549340069e-06 4.41796052e-07 8.97803111e-06 5.09144552e-06 -2.137112072e-06 --2.615267131e-06 2.427274597e-06 5.09144552e-06 7.543795081e-07 -6.334350189e-07 -4.946129526e-07 -6.955526942e-07 -2.137112072e-06 -6.334350189e-07 3.518029172e-07 --5.691044664e-07 -7.510263503e-07 -4.856424123e-06 -2.77708323e-06 1.905080187e-06 --7.510263503e-07 1.754324932e-06 6.261867576e-06 2.644085575e-06 -1.942027618e-06 --4.856424123e-06 6.261867576e-06 1.703591015e-05 5.418782155e-06 -4.308881768e-06 --2.77708323e-06 2.644085575e-06 5.418782155e-06 9.461953167e-07 -9.436526835e-07 -1.905080187e-06 -1.942027618e-06 -4.308881768e-06 -9.436526835e-07 8.554008821e-07 -0.01479820233 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.02150985367 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.003883322338 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.003046649745 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.741124322e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.424546394e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.700272554e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -6.917246861e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -4.117919406e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.120822153e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.652095253e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -2.536934396e-08 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.630168292e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.08433116585 -0.01886212022 -0.05532015129 0 0 --0.01886212022 0.002618331438 0.00268483175 0 0 --0.05532015129 0.00268483175 -0.02235869409 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0445530841 -0.00748130389 0.008858735551 0 0 --0.00748130389 -0.000412123566 0.0004905364852 0 0 -0.008858735551 0.0004905364852 -0.0005838569487 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0006126417353 0.0004779267969 -0.0005722874179 0 0 -0.0004779267969 -0.0004255058789 0.001272543985 0 0 --0.0005722874179 0.001272543985 -0.003166745436 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.002509937805 -0.001179822798 0.001680114003 0 0 --0.001179822798 0.000524969917 -0.0006886795204 0 0 -0.001680114003 -0.0006886795204 0.0007797093908 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0001458322945 2.968162103e-05 -0.0001087826275 0 0 -2.968162103e-05 -2.405300707e-06 7.694423869e-06 0 0 --0.0001087826275 7.694423869e-06 -2.374602649e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0002191848449 -3.644120584e-05 4.24497431e-05 0 0 --3.644120584e-05 5.497458467e-05 -0.000106547664 0 0 -4.24497431e-05 -0.000106547664 0.000203239893 0 0 -0 0 0 0 0 -0 0 0 0 0 -8.986310164e-05 -3.711903199e-05 5.373714042e-05 0 0 --3.711903199e-05 1.509290742e-05 -2.097520444e-05 0 0 -5.373714042e-05 -2.097520444e-05 2.590504121e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -5.668433172e-05 -1.295444477e-05 2.651694418e-06 0 0 --1.295444477e-05 1.959468272e-06 -1.702670024e-06 0 0 -2.651694418e-06 -1.702670024e-06 -1.077301184e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 --5.433050622e-05 7.924986833e-06 -3.693959321e-05 0 0 -7.924986833e-06 1.368649466e-06 -3.723403041e-06 0 0 --3.693959321e-05 -3.723403041e-06 7.769312743e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.495856364e-05 9.685576599e-06 -3.058824795e-05 0 0 -9.685576599e-06 -2.434615675e-06 7.006428518e-06 0 0 --3.058824795e-05 7.006428518e-06 -1.810093658e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.049616997e-05 -2.079260306e-06 -4.373191221e-06 0 0 --2.079260306e-06 1.318789285e-07 -2.106566985e-08 0 0 --4.373191221e-06 -2.106566985e-08 -9.90070685e-07 0 0 -0 0 0 0 0 -0 0 0 0 0 -3.54044636e-06 -7.39128143e-07 -7.992888634e-06 0 0 --7.39128143e-07 7.179081993e-08 3.776668322e-07 0 0 --7.992888634e-06 3.776668322e-07 -2.153402763e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.281075819e-05 3.094168154e-06 -1.420605243e-05 0 0 -3.094168154e-06 -5.631570849e-07 2.10247746e-06 0 0 --1.420605243e-05 2.10247746e-06 -6.167651842e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.05445604717 -0.03215716695 0.0147749557 0.02315335588 0.006367358516 --0.03215716695 0.0150313311 0.01048056467 -0.02152614813 -0.007545159996 -0.0147749557 0.01048056467 -0.08918196729 0.04439066477 0.02009423856 -0.02315335588 -0.02152614813 0.04439066477 -0.005739671644 -0.004803482937 -0.006367358516 -0.007545159996 0.02009423856 -0.004803482937 -0.002875311347 -0.02592811761 -0.01965393487 0.02708000364 0.002396293312 -0.002094457899 --0.01965393487 0.01454611805 -0.01885490279 -0.002108069109 0.001879477049 -0.02708000364 -0.01885490279 0.02033673655 0.003888645599 -0.00357437067 -0.002396293312 -0.002108069109 0.003888645599 -2.024254548e-05 4.830751975e-05 --0.002094457899 0.001879477049 -0.00357437067 4.830751975e-05 -7.285887422e-05 -0.002533957366 -0.001986543218 0.003950837879 -0.0002626557231 -0.0001146158338 --0.001986543218 0.001476136031 -0.002886926289 -1.221823948e-05 -0.0002213685096 -0.003950837879 -0.002886926289 0.005615113811 0.0001553469738 0.000627231816 --0.0002626557231 -1.221823948e-05 0.0001553469738 -0.0005583826328 -0.000823645937 --0.0001146158338 -0.0002213685096 0.000627231816 -0.000823645937 -0.001186917347 --0.0003743004662 -0.0001771281909 0.000496466118 -0.0005257761283 -0.0007460486179 --0.0001771281909 0.0003202813506 -0.0003315223158 0.0001531902925 0.0004404240033 -0.000496466118 -0.0003315223158 0.0001355496142 0.0001338656231 -0.0001227253594 --0.0005257761283 0.0001531902925 0.0001338656231 -0.0003386433231 -0.0002586223832 --0.0007460486179 0.0004404240033 -0.0001227253594 -0.0002586223832 7.100632305e-05 --0.0001996255886 8.926672416e-05 -0.0002318651982 3.105263325e-05 -3.725150186e-06 -8.926672416e-05 4.462375818e-05 -9.1724786e-05 8.397805236e-05 0.0001292530026 --0.0002318651982 -9.1724786e-05 0.0001823537272 -0.0001901343869 -0.0002992311651 -3.105263325e-05 8.397805236e-05 -0.0001901343869 0.0001084556506 0.0001482728622 --3.725150186e-06 0.0001292530026 -0.0002992311651 0.0001482728622 0.000192481512 --6.508629908e-05 4.919809406e-05 -8.431113636e-05 -1.54542547e-07 -2.512852898e-07 -4.919809406e-05 -3.692996912e-05 6.356320233e-05 1.101272717e-06 2.18604575e-06 --8.431113636e-05 6.356320233e-05 -0.0001091068799 -8.355370705e-07 -1.613749991e-06 --1.54542547e-07 1.101272717e-06 -8.355370705e-07 3.750414778e-06 7.604563231e-06 --2.512852898e-07 2.18604575e-06 -1.613749991e-06 7.604563231e-06 1.541940381e-05 --1.614876631e-05 -1.563520605e-05 3.206650209e-05 -2.513501823e-05 -3.78658751e-05 --1.563520605e-05 3.092219297e-05 -4.678009467e-05 1.815163468e-05 3.584386275e-05 -3.206650209e-05 -4.678009467e-05 6.782796552e-05 -2.187940227e-05 -4.732092561e-05 --2.513501823e-05 1.815163468e-05 -2.187940227e-05 6.977938629e-08 7.944350259e-06 --3.78658751e-05 3.584386275e-05 -4.732092561e-05 7.944350259e-06 2.534596853e-05 -3.816423259e-05 -1.502784535e-05 2.588273226e-06 1.792167936e-05 1.085288134e-05 --1.502784535e-05 5.88497331e-06 -1.708059065e-06 -6.783969584e-06 -4.368581807e-06 -2.588273226e-06 -1.708059065e-06 -1.44225685e-05 7.000815159e-06 -1.278529563e-06 -1.792167936e-05 -6.783969584e-06 7.000815159e-06 6.123100846e-06 5.894836394e-06 -1.085288134e-05 -4.368581807e-06 -1.278529563e-06 5.894836394e-06 2.80825395e-06 --1.196733522e-05 1.347661379e-05 -3.454339934e-05 1.076019649e-05 9.715264446e-06 -1.347661379e-05 -1.403204573e-05 3.376794177e-05 -9.078191474e-06 -8.229233234e-06 --3.454339934e-05 3.376794177e-05 -7.669069076e-05 1.742824754e-05 1.588214069e-05 -1.076019649e-05 -9.078191474e-06 1.742824754e-05 -1.602934206e-06 -1.533946693e-06 -9.715264446e-06 -8.229233234e-06 1.588214069e-05 -1.533946693e-06 -1.462310848e-06 --9.466415965e-07 1.932164585e-06 -6.262584131e-06 2.661378957e-06 2.230300065e-06 -1.932164585e-06 -3.345650673e-06 9.523267359e-06 -3.718154492e-06 -3.347875447e-06 --6.262584131e-06 9.523267359e-06 -2.366941313e-05 8.266264687e-06 8.191505244e-06 -2.661378957e-06 -3.718154492e-06 8.266264687e-06 -2.570278646e-06 -2.81876257e-06 -2.230300065e-06 -3.347875447e-06 8.191505244e-06 -2.81876257e-06 -2.829336425e-06 -1.060053663e-05 -5.764688605e-06 4.55715784e-06 3.283553097e-06 1.189275504e-06 --5.764688605e-06 3.098189473e-06 -2.050861365e-06 -1.945204297e-06 -6.342888829e-07 -4.55715784e-06 -2.050861365e-06 -3.016033196e-06 3.26921766e-06 3.663080673e-07 -3.283553097e-06 -1.945204297e-06 3.26921766e-06 3.234927593e-07 4.225074216e-07 -1.189275504e-06 -6.342888829e-07 3.663080673e-07 4.225074216e-07 1.292012908e-07 -6.011406645e-06 -3.549539942e-06 1.415877776e-06 2.550038032e-06 5.378471968e-07 --3.549539942e-06 1.573234949e-06 1.633113922e-06 -2.563591829e-06 -9.005223423e-07 -1.415877776e-06 1.633113922e-06 -1.133137216e-05 5.598294354e-06 2.880640623e-06 -2.550038032e-06 -2.563591829e-06 5.598294354e-06 -1.059474687e-06 -9.517492821e-07 -5.378471968e-07 -9.005223423e-07 2.880640623e-06 -9.517492821e-07 -6.02061809e-07 -6.477962406e-07 5.892642027e-07 -4.429407348e-06 2.580672522e-06 1.719916447e-06 -5.892642027e-07 -1.4344547e-06 5.431259748e-06 -2.320209233e-06 -1.647254514e-06 --4.429407348e-06 5.431259748e-06 -1.513375902e-05 4.764350228e-06 3.659809831e-06 -2.580672522e-06 -2.320209233e-06 4.764350228e-06 -7.761420309e-07 -7.563450192e-07 -1.719916447e-06 -1.647254514e-06 3.659809831e-06 -7.563450192e-07 -6.685788913e-07 -1.460206851e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.857730836e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -3.51254688e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -2.842139511e-08 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.689743052e-08 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -9.217705818e-08 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -4.740311056e-09 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --6.244580662e-08 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.873789693e-08 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --4.470893729e-09 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -2.792077573e-09 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.290937204e-09 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -8.590448208e-11 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -4.201711947e-06 1.254303636e-05 0.05056120415 0 0 -1.254303636e-05 3.741509383e-05 0.1467623616 0 0 -0.05056120415 0.1467623616 -0.0009624850666 0 0 -0 0 0 0 0 -0 0 0 0 0 -8.151537711e-06 2.392274202e-05 0.02389676527 0 0 -2.392274202e-05 7.006307747e-05 0.06695228602 0 0 -0.02389676527 0.06695228602 -0.0007098651656 0 0 -0 0 0 0 0 -0 0 0 0 0 -4.618492195e-06 1.332325058e-05 0.004762353746 0 0 -1.332325058e-05 3.827971844e-05 0.0128666754 0 0 -0.004762353746 0.0128666754 -0.0001860044499 0 0 -0 0 0 0 0 -0 0 0 0 0 -8.297503003e-07 2.3618577e-06 -0.0008609536977 0 0 -2.3618577e-06 6.682314538e-06 -0.002260147575 0 0 --0.0008609536977 -0.002260147575 3.786867648e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.156797818e-07 -3.366880207e-07 -0.0003694746206 0 0 --3.366880207e-07 -9.770756563e-07 -0.001017259984 0 0 --0.0003694746206 -0.001017259984 1.07060244e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.786142069e-07 -5.354604978e-07 -0.0001521396414 0 0 --5.354604978e-07 -1.604362914e-06 -0.0004454568558 0 0 --0.0001521396414 -0.0004454568558 2.129118906e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 --9.568350494e-08 -2.910944507e-07 9.751579695e-05 0 0 --2.910944507e-07 -8.855238057e-07 0.0002941811818 0 0 -9.751579695e-05 0.0002941811818 -1.022471075e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.278290716e-08 3.859565591e-08 -3.027829291e-06 0 0 -3.859565591e-08 1.165025274e-07 -8.995269466e-06 0 0 --3.027829291e-06 -8.995269466e-06 7.090966774e-08 0 0 -0 0 0 0 0 -0 0 0 0 0 -3.045528916e-08 9.060566198e-08 3.523560088e-05 0 0 -9.060566198e-08 2.69293438e-07 0.0001015596675 0 0 -3.523560088e-05 0.0001015596675 -1.079197381e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 -4.830292896e-09 1.390962249e-08 -1.258036201e-05 0 0 -1.390962249e-08 3.98841249e-08 -3.38607621e-05 0 0 --1.258036201e-05 -3.38607621e-05 5.582921185e-07 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.929442578e-09 -5.620620316e-09 6.679281734e-06 0 0 --5.620620316e-09 -1.632714414e-08 1.842404397e-05 0 0 -6.679281734e-06 1.842404397e-05 -1.911697157e-07 0 0 -0 0 0 0 0 -0 0 0 0 0 --8.27341637e-10 -2.410381924e-09 -2.601799093e-06 0 0 --2.410381924e-09 -7.002705674e-09 -7.178461785e-06 0 0 --2.601799093e-06 -7.178461785e-06 5.832594249e-08 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.581640799e-09 -4.770050913e-09 5.072680964e-06 0 0 --4.770050913e-09 -1.438167954e-08 1.503543631e-05 0 0 -5.072680964e-06 1.503543631e-05 -3.738779649e-08 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.316882337e-06 1.832434026e-06 -0.00418793981 -8.049212276e-07 -0.01284764531 -1.832434026e-06 1.861403217e-06 0.006211806382 8.245657268e-06 0.0190564159 --0.00418793981 0.006211806382 -1.913283175e-05 0.009565491448 -4.650025337e-05 --8.049212276e-07 8.245657268e-06 0.009565491448 2.098093917e-05 0.02934477312 --0.01284764531 0.0190564159 -4.650025337e-05 0.02934477312 -0.0001052409323 --1.165204554e-06 -7.82569942e-07 -0.003391819004 -4.133782507e-06 -0.01040531431 --7.82569942e-07 4.479715552e-06 0.00475184045 1.100955425e-05 0.01457761791 --0.003391819004 0.00475184045 -5.804876438e-05 0.007328842408 -7.537869995e-05 --4.133782507e-06 1.100955425e-05 0.007328842408 2.330439899e-05 0.02248339071 --0.01040531431 0.01457761791 -7.537869995e-05 0.02248339071 8.382093233e-05 -3.885548002e-07 -1.184256106e-06 -0.0009218079475 -2.618871174e-06 -0.002827912095 --1.184256106e-06 2.362715787e-06 0.001158323304 4.644040959e-06 0.00355354227 --0.0009218079475 0.001158323304 -3.394020359e-05 0.001792175854 -3.655530111e-05 --2.618871174e-06 4.644040959e-06 0.001792175854 8.714641013e-06 0.005498153593 --0.002827912095 0.00355354227 -3.655530111e-05 0.005498153593 9.513241806e-05 -1.696253624e-07 -1.779471552e-07 -1.605015665e-05 -2.903386221e-07 -4.926062489e-05 --1.779471552e-07 1.406847566e-07 8.474580845e-06 2.285947588e-07 2.603322801e-05 --1.605015665e-05 8.474580845e-06 -1.991683694e-06 1.365501782e-05 -1.873010927e-06 --2.903386221e-07 2.285947588e-07 1.365501782e-05 3.714114355e-07 4.194806545e-05 --4.926062489e-05 2.603322801e-05 -1.873010927e-06 4.194806545e-05 7.252253947e-06 -1.064275498e-09 1.584002143e-08 3.285697496e-07 2.403426472e-08 1.004399611e-06 -1.584002143e-08 -3.247036512e-08 1.008038844e-05 -4.052445465e-08 3.092789592e-05 -3.285697496e-07 1.008038844e-05 1.007872662e-06 1.512591797e-05 8.882362461e-07 -2.403426472e-08 -4.052445465e-08 1.512591797e-05 -4.850703965e-08 4.640642135e-05 -1.004399611e-06 3.092789592e-05 8.882362461e-07 4.640642135e-05 -4.035509822e-06 -6.178222704e-09 -2.202064738e-08 -1.722881993e-05 -4.872583876e-08 -5.285421253e-05 --2.202064738e-08 5.682906804e-08 2.915002326e-05 1.125114879e-07 8.942619674e-05 --1.722881993e-05 2.915002326e-05 -3.095182037e-07 4.478702324e-05 -4.035189536e-07 --4.872583876e-08 1.125114879e-07 4.478702324e-05 2.115807012e-07 0.000137397726 --5.285421253e-05 8.942619674e-05 -4.035189536e-07 0.000137397726 4.371386496e-07 -3.205455417e-09 -2.424356427e-09 5.25378614e-08 -3.775555263e-09 1.600185325e-07 --2.424356427e-09 4.617821862e-10 -5.716110614e-09 8.478180427e-10 -1.590557947e-08 -5.25378614e-08 -5.716110614e-09 1.745836624e-08 -1.209268859e-08 1.586653917e-08 --3.775555263e-09 8.478180427e-10 -1.209268859e-08 1.508651097e-09 -3.462983284e-08 -1.600185325e-07 -1.590557947e-08 1.586653917e-08 -3.462983284e-08 -6.695486616e-08 -1.557254764e-09 -7.803217461e-10 1.443030094e-07 -1.123088343e-09 4.423580685e-07 --7.803217461e-10 -6.053669261e-10 4.299556221e-08 -8.246087296e-10 1.323310801e-07 -1.443030094e-07 4.299556221e-08 2.846292319e-08 5.648070451e-08 2.603252052e-08 --1.123088343e-09 -8.246087296e-10 5.648070451e-08 -1.121839739e-09 1.738771196e-07 -4.423580685e-07 1.323310801e-07 2.603252052e-08 1.738771196e-07 -1.08147466e-07 --2.090496495e-10 -4.780151243e-10 -1.190361095e-06 -1.76619999e-09 -3.651764741e-06 --4.780151243e-10 3.051267843e-09 2.578166689e-06 6.907984691e-09 7.909185929e-06 --1.190361095e-06 2.578166689e-06 3.061093316e-08 3.942349598e-06 1.764023896e-08 --1.76619999e-09 6.907984691e-09 3.942349598e-06 1.399179376e-08 1.209409969e-05 --3.651764741e-06 7.909185929e-06 1.764023896e-08 1.209409969e-05 -1.798541244e-07 --1.022217151e-09 1.499295831e-09 -2.116631179e-07 2.112198198e-09 -6.495112988e-07 -1.499295831e-09 -2.08767614e-09 3.803347756e-07 -2.867933429e-09 1.166981879e-06 --2.116631179e-07 3.803347756e-07 3.293489125e-08 5.817351011e-07 2.779470453e-08 -2.112198198e-09 -2.867933429e-09 5.817351011e-07 -3.889162643e-09 1.784876245e-06 --6.495112988e-07 1.166981879e-06 2.779470453e-08 1.784876245e-06 -1.394222386e-07 -2.842005778e-10 -5.201989601e-10 -2.188912294e-07 -9.908121848e-10 -6.71532034e-07 --5.201989601e-10 8.092906768e-10 2.454466521e-07 1.462090432e-09 7.530340039e-07 --2.188912294e-07 2.454466521e-07 -1.717347924e-08 3.812995736e-07 -1.67091771e-08 --9.908121848e-10 1.462090432e-09 3.812995736e-07 2.589612359e-09 1.169862824e-06 --6.71532034e-07 7.530340039e-07 -1.67091771e-08 1.169862824e-06 5.910368381e-08 -1.114930297e-10 -4.183928439e-10 -3.222919619e-07 -9.210275488e-10 -9.887187945e-07 --4.183928439e-10 1.196544861e-09 6.195294901e-07 2.371707271e-09 1.900576633e-06 --3.222919619e-07 6.195294901e-07 -1.427138296e-09 9.49547052e-07 -3.784223807e-09 --9.210275488e-10 2.371707271e-09 9.49547052e-07 4.459336038e-09 2.912996536e-06 --9.887187945e-07 1.900576633e-06 -3.784223807e-09 2.912996536e-06 -9.787150399e-09 --3.112280031e-10 2.9811354e-10 -1.634040356e-07 3.179775131e-10 -5.012859722e-07 -2.9811354e-10 -2.615789379e-10 2.0186888e-07 -2.278398202e-10 6.192875804e-07 --1.634040356e-07 2.0186888e-07 -7.686545688e-10 3.121179915e-07 -1.755986228e-09 -3.179775131e-10 -2.278398202e-10 3.121179915e-07 -7.92259167e-11 9.5750718e-07 --5.012859722e-07 6.192875804e-07 -1.755986228e-09 9.5750718e-07 -3.539948012e-09 --5.13484499e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -5.330174396e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.600351321e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --8.02589349e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.526877797e-07 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -2.755465709e-07 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.164707686e-07 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --7.109934681e-08 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -4.28239574e-09 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.078811515e-07 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -3.107669571e-09 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -3.044503169e-09 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.613676795e-09 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0001203491626 -0.000158013562 0.04894363235 0 0 --0.000158013562 -0.0001828181362 0.08640997481 0 0 -0.04894363235 0.08640997481 -0.0004868888087 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.352730873e-05 -7.49403999e-05 0.001129633829 0 0 --7.49403999e-05 -0.0001041388051 0.004076841914 0 0 -0.001129633829 0.004076841914 -5.545659045e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.18796625e-06 -3.17513416e-07 0.000778187856 0 0 --3.17513416e-07 -1.425850319e-06 -0.001085523996 0 0 -0.000778187856 -0.001085523996 2.234164117e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --9.385289339e-06 -4.472455253e-06 0.0005341656953 0 0 --4.472455253e-06 -7.482859224e-07 4.949622208e-05 0 0 -0.0005341656953 4.949622208e-05 5.640299023e-07 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.683709179e-07 3.572995994e-08 -9.74745726e-05 0 0 -3.572995994e-08 2.601630701e-07 0.0001098236432 0 0 --9.74745726e-05 0.0001098236432 2.720395933e-07 0 0 -0 0 0 0 0 -0 0 0 0 0 -3.388158639e-07 6.724380676e-07 1.340732882e-05 0 0 -6.724380676e-07 9.063202574e-07 4.168151923e-05 0 0 -1.340732882e-05 4.168151923e-05 6.424797269e-08 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.25074968e-08 -1.790529143e-08 1.622198922e-05 0 0 --1.790529143e-08 -6.746240927e-09 3.91268347e-06 0 0 -1.622198922e-05 3.91268347e-06 1.596453885e-08 0 0 -0 0 0 0 0 -0 0 0 0 0 -4.399421261e-08 -7.02370431e-08 -5.47677934e-06 0 0 --7.02370431e-08 -1.534351937e-07 2.220274709e-05 0 0 --5.47677934e-06 2.220274709e-05 -3.066786511e-07 0 0 -0 0 0 0 0 -0 0 0 0 0 -3.943640084e-08 4.257735463e-08 1.964267585e-05 0 0 -4.257735463e-08 4.407304283e-08 2.551344304e-05 0 0 -1.964267585e-05 2.551344304e-05 4.825473224e-08 0 0 -0 0 0 0 0 -0 0 0 0 0 -6.850672014e-08 6.82907751e-08 9.946901482e-06 0 0 -6.82907751e-08 6.680030236e-08 1.127262267e-05 0 0 -9.946901482e-06 1.127262267e-05 5.178159838e-08 0 0 -0 0 0 0 0 -0 0 0 0 0 -3.829047118e-09 8.047589587e-09 2.632909146e-06 0 0 -8.047589587e-09 1.101382123e-08 8.801947954e-06 0 0 -2.632909146e-06 8.801947954e-06 -6.225359027e-08 0 0 -0 0 0 0 0 -0 0 0 0 0 --5.132232632e-09 -5.650461078e-09 6.604691218e-06 0 0 --5.650461078e-09 -5.924015442e-09 8.860435689e-06 0 0 -6.604691218e-06 8.860435689e-06 -2.774425034e-08 0 0 -0 0 0 0 0 -0 0 0 0 0 -6.322944494e-09 8.039693658e-09 4.845369822e-06 0 0 -8.039693658e-09 9.153973526e-09 8.152861787e-06 0 0 -4.845369822e-06 8.152861787e-06 -2.020774587e-09 0 0 -0 0 0 0 0 -0 0 0 0 0 --8.98751673e-05 -0.0001632886435 0.02867974588 -9.544585956e-05 0.02467596235 --0.0001632886435 -0.0002024462814 0.08147117798 -0.0002130482759 0.07009851592 -0.02867974588 0.08147117798 -0.000318358205 0.01810394459 2.93008735e-05 --9.544585956e-05 -0.0002130482759 0.01810394459 -8.468627846e-05 0.01557616718 -0.02467596235 0.07009851592 2.93008735e-05 0.01557616718 0.0002861058748 --3.279181828e-05 -8.395387124e-05 0.004343714053 -2.693371463e-05 0.003736949169 --8.395387124e-05 -0.0001914087788 0.01479984554 -7.989060321e-05 0.01273323055 -0.004343714053 0.01479984554 -0.0001614716208 0.001858077464 -2.222008842e-05 --2.693371463e-05 -7.989060321e-05 0.001858077464 -1.704076542e-05 0.001598179434 -0.003736949169 0.01273323055 -2.222008842e-05 0.001598179434 8.130232705e-05 --1.016041142e-07 -3.435065145e-06 -1.858597983e-05 4.048033783e-08 -1.602758411e-05 --3.435065145e-06 -2.137419359e-05 -0.001197633284 -2.180347834e-06 -0.001030577273 --1.858597983e-05 -0.001197633284 2.007905745e-05 2.872517413e-05 4.101574859e-06 -4.048033783e-08 -2.180347834e-06 2.872517413e-05 1.167856718e-07 2.468872378e-05 --1.602758411e-05 -0.001030577273 4.101574859e-06 2.468872378e-05 -7.806651367e-06 --4.045085761e-06 -2.021356669e-06 0.0006352056209 -3.025993328e-06 0.0005465542733 --2.021356669e-06 3.815483402e-06 -0.0003763992523 7.124654745e-07 -0.0003238353177 -0.0006352056209 -0.0003763992523 8.934780354e-06 0.0001553287955 3.023687587e-06 --3.025993328e-06 7.124654745e-07 0.0001553287955 -1.238121176e-06 0.0001336655618 -0.0005465542733 -0.0003238353177 3.023687587e-06 0.0001336655618 -1.411275431e-06 --4.235410925e-07 -7.378842936e-07 -0.0001803948994 -3.89552454e-08 -0.0001552138274 --7.378842936e-07 1.856494322e-06 0.0001770559542 2.692069151e-07 0.0001523429218 --0.0001803948994 0.0001770559542 -8.165833675e-07 3.611837264e-05 -3.959751282e-07 --3.89552454e-08 2.692069151e-07 3.611837264e-05 3.257815506e-08 3.107686983e-05 --0.0001552138274 0.0001523429218 -3.959751282e-07 3.107686983e-05 -7.687878898e-08 -3.835162648e-07 5.9407911e-07 4.551525031e-06 1.956490521e-07 3.915269242e-06 -5.9407911e-07 6.262403665e-07 3.067305743e-06 1.384889341e-07 2.636910974e-06 -4.551525031e-06 3.067305743e-06 5.397661469e-08 9.227243454e-08 2.451935075e-08 -1.956490521e-07 1.384889341e-07 9.227243454e-08 7.68305356e-09 7.846834357e-08 -3.915269242e-06 2.636910974e-06 2.451935075e-08 7.846834357e-08 2.234062803e-09 --5.309221485e-08 -4.283868911e-08 5.770011461e-06 -4.160836581e-08 4.964301678e-06 --4.283868911e-08 2.104776742e-08 -1.249309437e-06 -1.205912752e-08 -1.075459702e-06 -5.770011461e-06 -1.249309437e-06 -9.182204394e-08 2.237659649e-06 -1.522143074e-08 --4.160836581e-08 -1.205912752e-08 2.237659649e-06 -2.428611177e-08 1.924966159e-06 -4.964301678e-06 -1.075459702e-06 -1.522143074e-08 1.924966159e-06 4.178344239e-08 -6.042583574e-08 -6.770478921e-08 -1.125567803e-05 1.438622937e-08 -9.685389861e-06 --6.770478921e-08 -3.22684818e-07 4.152180849e-05 -1.801526844e-07 3.572468412e-05 --1.125567803e-05 4.152180849e-05 -5.097257854e-07 9.219136608e-06 -1.204980874e-07 -1.438622937e-08 -1.801526844e-07 9.219136608e-06 -6.40878813e-08 7.931162927e-06 --9.685389861e-06 3.572468412e-05 -1.204980874e-07 7.931162927e-06 1.699993747e-07 -8.815706041e-09 5.910729786e-08 1.800056962e-05 -7.661340796e-09 1.548789858e-05 -5.910729786e-08 1.070933324e-07 1.758920009e-05 6.761777741e-09 1.513357806e-05 -1.800056962e-05 1.758920009e-05 2.937807798e-07 5.07920003e-06 1.196522488e-07 --7.661340796e-09 6.761777741e-09 5.07920003e-06 -5.025576825e-09 4.370277587e-06 -1.548789858e-05 1.513357806e-05 1.196522488e-07 4.370277587e-06 -1.158840881e-08 -1.340786242e-09 1.012643565e-08 7.274698202e-07 2.127417125e-09 6.259129273e-07 -1.012643565e-08 6.802232899e-08 7.321423784e-06 1.143336116e-08 6.29939135e-06 -7.274698202e-07 7.321423784e-06 3.24070264e-08 2.155284802e-06 1.502615498e-08 -2.127417125e-09 1.143336116e-08 2.155284802e-06 8.366647882e-10 1.854433413e-06 -6.259129273e-07 6.29939135e-06 1.502615498e-08 1.854433413e-06 1.866125167e-09 --7.500812597e-09 -2.073417604e-08 2.133081269e-06 -9.340685615e-09 1.835233892e-06 --2.073417604e-08 -3.300948589e-08 9.73589366e-06 -2.846321079e-08 8.376798999e-06 -2.133081269e-06 9.73589366e-06 -7.391058555e-08 2.238762405e-06 -7.970570434e-09 --9.340685615e-09 -2.846321079e-08 2.238762405e-06 -1.134442106e-08 1.926120222e-06 -1.835233892e-06 8.376798999e-06 -7.970570434e-09 1.926120222e-06 4.100086365e-08 --1.585170268e-08 -2.322673879e-08 4.328119394e-06 -1.557095219e-08 3.723935356e-06 --2.322673879e-08 -3.089101104e-08 8.268704117e-06 -2.593397578e-08 7.114466494e-06 -4.328119394e-06 8.268704117e-06 -1.071102007e-08 2.338900049e-06 1.07355012e-08 --1.557095219e-08 -2.593397578e-08 2.338900049e-06 -1.219979937e-08 2.012368893e-06 -3.723935356e-06 7.114466494e-06 1.07355012e-08 2.012368893e-06 2.640342621e-08 --1.189537906e-09 6.414161253e-12 1.600017349e-06 -2.476633457e-09 1.376675629e-06 -6.414161253e-12 2.158380315e-08 6.806921651e-06 -4.736027114e-09 5.856769652e-06 -1.600017349e-06 6.806921651e-06 9.644633814e-09 1.831540268e-06 1.025407994e-08 --2.476633457e-09 -4.736027114e-09 1.831540268e-06 -4.111313063e-09 1.575879581e-06 -1.376675629e-06 5.856769652e-06 1.025407994e-08 1.575879581e-06 1.050546492e-08 --0.0008944619759 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.000941299234 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0006978398536 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.000145248396 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.63677199e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.967625063e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.296939131e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.490554749e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.737993288e-07 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.589452981e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.748905368e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.754090131e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -9.933701189e-07 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0002461030355 0.0003527664577 0.07571902349 0 0 -0.0003527664577 -0.001724192818 0.08505038365 0 0 -0.07571902349 0.08505038365 -0.001909517551 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0001122075265 0.0001530876582 0.02283675832 0 0 -0.0001530876582 0.003079790041 0.01132340806 0 0 -0.02283675832 0.01132340806 -0.000378506362 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.468109484e-05 -0.0001224811967 0.01306193203 0 0 --0.0001224811967 -0.0005285613085 0.04151194584 0 0 -0.01306193203 0.04151194584 7.988073081e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --4.30175172e-06 -1.606100384e-05 0.003699504279 0 0 --1.606100384e-05 7.28308778e-05 0.008335310032 0 0 -0.003699504279 0.008335310032 -4.16347962e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --7.886090431e-08 -2.574190776e-06 0.0003194394977 0 0 --2.574190776e-06 -6.827338564e-05 0.0008664782136 0 0 -0.0003194394977 0.0008664782136 -1.706230613e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.758110234e-06 1.659387167e-06 -5.696200496e-05 0 0 -1.659387167e-06 -1.085531919e-05 0.0003946940283 0 0 --5.696200496e-05 0.0003946940283 1.947273354e-07 0 0 -0 0 0 0 0 -0 0 0 0 0 -6.068461479e-09 3.175565178e-07 0.0001806886723 0 0 -3.175565178e-07 4.155767794e-05 0.0007639140947 0 0 -0.0001806886723 0.0007639140947 1.716616448e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.374685396e-07 -9.907894183e-07 5.659149742e-05 0 0 --9.907894183e-07 1.065762931e-05 0.0001236353641 0 0 -5.659149742e-05 0.0001236353641 3.749740299e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 -5.312346414e-09 1.568002324e-06 -3.375228726e-06 0 0 -1.568002324e-06 -2.596075458e-06 -7.32554136e-05 0 0 --3.375228726e-06 -7.32554136e-05 -4.242139059e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 -9.85008988e-08 9.043494627e-07 3.117100028e-05 0 0 -9.043494627e-07 -3.671787424e-06 0.0001494369719 0 0 -3.117100028e-05 0.0001494369719 -9.60018017e-07 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.861404495e-08 -3.036522582e-07 1.051080913e-05 0 0 --3.036522582e-07 3.905313456e-06 9.176181284e-05 0 0 -1.051080913e-05 9.176181284e-05 3.323876391e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.54929655e-08 -4.808608564e-07 5.039666156e-07 0 0 --4.808608564e-07 1.817971424e-06 1.940211856e-05 0 0 -5.039666156e-07 1.940211856e-05 2.037992623e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 -5.218768966e-09 5.426286015e-09 1.138702627e-05 0 0 -5.426286015e-09 2.893641499e-07 3.098384861e-05 0 0 -1.138702627e-05 3.098384861e-05 2.565160227e-07 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0004452767333 -0.0002887887472 0.08839505614 0.001126002141 -0.1700687765 --0.0002887887472 -0.0002157272537 0.194212819 0.0003718826943 0.06018159555 -0.08839505614 0.194212819 0.0004350442238 -0.03151802308 -0.0004879654281 -0.001126002141 0.0003718826943 -0.03151802308 -3.251847617e-05 -0.1274809945 --0.1700687765 0.06018159555 -0.0004879654281 -0.1274809945 -0.002009621472 --6.799299059e-05 -0.0004060083022 0.03060782348 -0.001272818297 0.009755918216 --0.0004060083022 -0.0001997349097 0.04827166578 -7.377797736e-05 -0.0009043329021 -0.03060782348 0.04827166578 8.232586806e-05 -0.03096445329 0.0001394528281 --0.001272818297 -7.377797736e-05 -0.03096445329 0.002323793735 -0.09402483706 -0.009755918216 -0.0009043329021 0.0001394528281 -0.09402483706 -0.002084811506 -5.637124916e-05 7.54598198e-05 -4.605369996e-05 -8.886891369e-05 -0.009363355778 -7.54598198e-05 3.264798354e-06 0.006837606333 -0.000117654704 0.008198520488 --4.605369996e-05 0.006837606333 -1.555355761e-05 -0.0007594298457 0.0001183554088 --8.886891369e-05 -0.000117654704 -0.0007594298457 2.164673565e-05 0.009220457807 --0.009363355778 0.008198520488 0.0001183554088 0.009220457807 0.0004529125367 --3.546829302e-05 3.300658873e-05 -0.002680424875 2.612898498e-05 -0.00742487276 -3.300658873e-05 6.498446879e-06 0.004249821483 -3.866547904e-06 0.01243652047 --0.002680424875 0.004249821483 -1.248927752e-06 0.006266269508 -1.595642659e-05 -2.612898498e-05 -3.866547904e-06 0.006266269508 2.321887448e-05 0.01778355595 --0.00742487276 0.01243652047 -1.595642659e-05 0.01778355595 -0.0001351476449 --7.033294479e-06 -2.651798032e-06 -0.0001318319145 4.055007713e-06 -0.0004151554607 --2.651798032e-06 1.795241635e-06 0.000235225083 7.010105679e-06 0.0004769953059 --0.0001318319145 0.000235225083 5.490435352e-08 0.0003521710099 1.304429568e-06 -4.055007713e-06 7.010105679e-06 0.0003521710099 7.3764891e-06 0.0007231653809 --0.0004151554607 0.0004769953059 1.304429568e-06 0.0007231653809 -2.931597439e-05 -1.355362428e-05 6.735388783e-06 3.277740285e-05 4.776228533e-06 -0.0004520208438 -6.735388783e-06 2.691056784e-06 0.0001182941624 2.339521095e-06 -0.0003547151065 -3.277740285e-05 0.0001182941624 -3.046676535e-07 -0.0001000736588 -4.48437121e-06 -4.776228533e-06 2.339521095e-06 -0.0001000736588 -1.220195317e-05 -0.0001745910379 --0.0004520208438 -0.0003547151065 -4.48437121e-06 -0.0001745910379 3.41451863e-05 -1.074339764e-05 -3.756357862e-06 -0.0001335391817 -1.30475306e-05 -0.0004873489154 --3.756357862e-06 -4.936587641e-07 0.0002205238265 2.860415036e-06 0.0006622760684 --0.0001335391817 0.0002205238265 -1.091457353e-07 0.0003094192187 6.703900946e-07 --1.30475306e-05 2.860415036e-06 0.0003094192187 1.420419759e-05 0.001013116668 --0.0004873489154 0.0006622760684 6.703900946e-07 0.001013116668 1.326260313e-05 -1.751214265e-06 6.343144906e-08 1.436322452e-05 -2.751420814e-06 2.070916636e-05 -6.343144906e-08 -2.087962147e-07 3.709265867e-05 -5.508027068e-07 3.517047214e-05 -1.436322452e-05 3.709265867e-05 1.323474281e-07 1.055964046e-05 4.793539853e-07 --2.751420814e-06 -5.508027068e-07 1.055964046e-05 3.370093842e-06 -3.344388052e-05 -2.070916636e-05 3.517047214e-05 4.793539853e-07 -3.344388052e-05 2.313711632e-06 --2.628279078e-06 -9.83959389e-07 3.37506056e-05 2.842140565e-06 -3.741671296e-05 --9.83959389e-07 1.470122102e-07 4.063174302e-05 1.324796849e-06 -3.153543516e-05 -3.37506056e-05 4.063174302e-05 1.500227176e-07 -2.780983302e-05 -9.426278691e-07 -2.842140565e-06 1.324796849e-06 -2.780983302e-05 -2.013490878e-06 -9.958820214e-05 --3.741671296e-05 -3.153543516e-05 -9.426278691e-07 -9.958820214e-05 -9.247849772e-06 -1.855126338e-07 -1.254547644e-07 -9.378880114e-06 1.553027692e-06 -0.0001390359036 --1.254547644e-07 2.201282839e-08 4.195824563e-05 1.5825693e-07 8.862288617e-05 --9.378880114e-06 4.195824563e-05 1.360013311e-08 3.372018247e-05 -3.621024339e-07 -1.553027692e-06 1.5825693e-07 3.372018247e-05 -2.978898421e-06 0.0001600034492 --0.0001390359036 8.862288617e-05 -3.621024339e-07 0.0001600034492 1.678703006e-06 -1.659820032e-06 3.759275721e-07 7.761737308e-06 -7.359888773e-07 -3.092568911e-05 -3.759275721e-07 -3.295656475e-09 1.527488656e-05 -2.147120823e-07 -2.310509808e-06 -7.761737308e-06 1.527488656e-05 3.837958186e-08 -2.471336929e-06 6.301025545e-08 --7.359888773e-07 -2.147120823e-07 -2.471336929e-06 2.176368644e-07 -3.363886306e-06 --3.092568911e-05 -2.310509808e-06 6.301025545e-08 -3.363886306e-06 5.067842722e-06 -1.329056045e-06 2.963621437e-07 9.716372679e-06 -8.401514718e-07 -2.133844163e-05 -2.963621437e-07 -8.037512933e-09 1.832125858e-05 -2.0893266e-07 1.567109976e-06 -9.716372679e-06 1.832125858e-05 4.541600181e-08 -3.736170197e-06 1.417598944e-07 --8.401514718e-07 -2.0893266e-07 -3.736170197e-06 6.413981224e-07 -1.251295899e-05 --2.133844163e-05 1.567109976e-06 1.417598944e-07 -1.251295899e-05 3.831115059e-06 --2.370372333e-07 -6.080168826e-08 4.375291335e-06 6.367535417e-07 -3.462764621e-05 --6.080168826e-08 9.152204811e-09 1.771740558e-05 1.23630438e-07 1.614475635e-05 -4.375291335e-06 1.771740558e-05 3.47994773e-08 3.479779771e-06 -1.588038167e-07 -6.367535417e-07 1.23630438e-07 3.479779771e-06 -7.714869097e-07 1.663203573e-05 --3.462764621e-05 1.614475635e-05 -1.588038167e-07 1.663203573e-05 -4.357608395e-07 --0.01655037511 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.01801777683 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.007172270147 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0009206390217 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0001429101996 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -7.317247918e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -8.756900207e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -2.307058394e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -4.617009136e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.082224398e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.318524659e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -7.73293952e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -2.799959164e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0002336701624 -0.01092776845 0.0126914684 0 0 --0.01092776845 -0.09739502285 0.04480931331 0 0 -0.0126914684 0.04480931331 0.01961961825 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0001464398235 -0.007019765839 -0.00404923842 0 0 --0.007019765839 -0.02751470968 -0.004427466192 0 0 --0.00404923842 -0.004427466192 0.003687568927 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.311785934e-05 0.0006415805603 -0.0001648382276 0 0 -0.0006415805603 -3.106264915e-05 -0.00104571714 0 0 --0.0001648382276 -0.00104571714 0.0005748105903 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.731043843e-06 0.0001431211135 6.510050463e-05 0 0 -0.0001431211135 -0.001874064111 -0.001203260487 0 0 -6.510050463e-05 -0.001203260487 -0.0006850179816 0 0 -0 0 0 0 0 -0 0 0 0 0 --9.501653622e-09 1.289426955e-06 1.259882172e-07 0 0 -1.289426955e-06 -0.000161325549 1.094728702e-05 0 0 -1.259882172e-07 1.094728702e-05 5.591962203e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.656709681e-06 7.963121846e-05 8.296718398e-05 0 0 -7.963121846e-05 0.0002692521116 6.925252124e-05 0 0 -8.296718398e-05 6.925252124e-05 -0.0001370805882 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.071996406e-07 -6.075041177e-06 -4.970841265e-06 0 0 --6.075041177e-06 0.0001629865399 0.0001231042206 0 0 --4.970841265e-06 0.0001231042206 9.175496262e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -4.385248227e-08 -2.035295108e-06 1.706414677e-06 0 0 --2.035295108e-06 -2.130968434e-05 5.499846788e-06 0 0 -1.706414677e-06 5.499846788e-06 4.436084347e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.555753802e-07 -7.398499925e-06 4.238782446e-06 0 0 --7.398499925e-06 -4.080793509e-05 1.271291332e-05 0 0 -4.238782446e-06 1.271291332e-05 -1.461964847e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.055651591e-08 8.893674684e-07 2.457700076e-06 0 0 -8.893674684e-07 2.264529625e-05 3.263538629e-05 0 0 -2.457700076e-06 3.263538629e-05 2.210830261e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --6.645411767e-08 3.071589072e-06 4.077104266e-06 0 0 -3.071589072e-06 3.477672573e-05 2.625070079e-05 0 0 -4.077104266e-06 2.625070079e-05 1.065857731e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.739706232e-08 1.284229596e-06 3.297590585e-06 0 0 -1.284229596e-06 1.083552051e-05 1.419455137e-05 0 0 -3.297590585e-06 1.419455137e-05 4.068380701e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 -7.592020745e-09 -3.491497931e-07 1.491498072e-06 0 0 --3.491497931e-07 -4.317777383e-06 8.053162246e-06 0 0 -1.491498072e-06 8.053162246e-06 4.689139689e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.005137428038 0.0001062446265 -0.0007734570267 0.03284731919 -0.03117237067 -0.0001062446265 -0.0001062223727 0.0001759726366 0.006292598314 -0.003901230506 --0.0007734570267 0.0001759726366 -0.0002234529825 -0.01488420409 0.01045920103 -0.03284731919 0.006292598314 -0.01488420409 -0.08060530361 -0.03070248072 --0.03117237067 -0.003901230506 0.01045920103 -0.03070248072 0.09132784662 --0.01076546978 -0.001507722466 0.004405358576 0.0148001585 0.01620366474 --0.001507722466 -8.533681403e-05 0.0001266361628 0.002092136952 0.00189475926 -0.004405358576 0.0001266361628 0.0001081850553 -0.006131807918 -0.005170912096 -0.0148001585 0.002092136952 -0.006131807918 -0.02034399447 -0.0223340893 -0.01620366474 0.00189475926 -0.005170912096 -0.0223340893 -0.02327375761 --0.0002405539385 -4.084731832e-05 0.0004872223666 0.000410492948 0.0005958759364 --4.084731832e-05 -7.988518754e-07 3.937555241e-06 -2.455122093e-05 0.0001011046799 -0.0004872223666 3.937555241e-06 2.481635537e-05 0.0003787112822 -0.001205894399 -0.000410492948 -2.455122093e-05 0.0003787112822 0.000747074932 -0.001015631107 -0.0005958759364 0.0001011046799 -0.001205894399 -0.001015631107 -0.00147604273 --0.000530310988 -0.0001236770938 -0.0003437034806 0.0001916002865 0.0007108975346 --0.0001236770938 -7.658702929e-06 -1.265392782e-05 0.0001684194765 0.0001403355781 --0.0003437034806 -1.265392782e-05 -7.667403633e-06 0.0005184494851 0.0003796277248 -0.0001916002865 0.0001684194765 0.0005184494851 0.0006534821475 -0.0004055352078 -0.0007108975346 0.0001403355781 0.0003796277248 -0.0004055352078 -0.0009223878546 -1.653586007e-05 -1.952706125e-05 -2.741911426e-05 -4.659204639e-05 -2.441027447e-05 --1.952706125e-05 -1.646974433e-07 -6.808667568e-07 -2.607189933e-05 5.519385757e-05 --2.741911426e-05 -6.808667568e-07 -1.596067429e-06 -3.817901232e-05 7.801146548e-05 --4.659204639e-05 -2.607189933e-05 -3.817901232e-05 -0.0001518720424 0.0001608490711 --2.441027447e-05 5.519385757e-05 7.801146548e-05 0.0001608490711 6.097012534e-06 -0.0001107235445 1.058288584e-05 -6.071643452e-05 -0.0001382491816 -0.0002018426183 -1.058288584e-05 4.297877542e-07 -1.262329794e-06 -7.417642545e-06 -1.835284499e-05 --6.071643452e-05 -1.262329794e-06 -2.151981036e-06 3.056565349e-05 0.0001033515599 --0.0001382491816 -7.417642545e-06 3.056565349e-05 0.0001148661217 0.0002426628098 --0.0002018426183 -1.835284499e-05 0.0001033515599 0.0002426628098 0.0003664312361 -1.651012824e-05 4.465370258e-06 7.497453524e-06 3.650893542e-06 -3.113951646e-05 -4.465370258e-06 1.559765411e-07 2.208163648e-07 -7.890966762e-08 -8.9090701e-06 -7.497453524e-06 2.208163648e-07 3.001914113e-07 -1.741328536e-07 -1.497753984e-05 -3.650893542e-06 -7.890966762e-08 -1.741328536e-07 -2.738188534e-07 -7.379658019e-06 --3.113951646e-05 -8.9090701e-06 -1.497753984e-05 -7.379658019e-06 5.850629497e-05 --7.827221949e-06 1.569247534e-06 6.015599999e-06 1.89297184e-05 7.444431274e-06 -1.569247534e-06 1.408950944e-07 2.579411788e-07 -3.482220218e-06 -9.483300339e-07 -6.015599999e-06 2.579411788e-07 8.191387739e-08 -1.354268958e-05 -3.972452286e-06 -1.89297184e-05 -3.482220218e-06 -1.354268958e-05 -4.556554488e-05 -1.763012706e-05 -7.444431274e-06 -9.483300339e-07 -3.972452286e-06 -1.763012706e-05 -6.430262077e-06 -5.369107641e-06 2.282803845e-07 -1.174612111e-06 7.299598474e-06 -1.658700607e-05 -2.282803845e-07 -1.387297337e-08 4.417557848e-08 1.269258382e-06 -1.197785589e-06 --1.174612111e-06 4.417557848e-08 -1.187034008e-07 -5.42447507e-06 5.594831073e-06 -7.299598474e-06 1.269258382e-06 -5.42447507e-06 -2.907202133e-05 -2.52007849e-06 --1.658700607e-05 -1.197785589e-06 5.594831073e-06 -2.52007849e-06 4.095382925e-05 -1.723149217e-05 2.221589217e-06 8.761440877e-07 -4.20731416e-06 -3.350681748e-05 -2.221589217e-06 6.474867238e-08 5.664083609e-08 3.567740671e-07 -4.730152402e-06 -8.761440877e-07 5.664083609e-08 3.024035705e-08 1.452525356e-08 -1.807897307e-06 --4.20731416e-06 3.567740671e-07 1.452525356e-08 -2.620330035e-06 9.84532898e-06 --3.350681748e-05 -4.730152402e-06 -1.807897307e-06 9.84532898e-06 6.439511067e-05 -6.72927023e-06 1.007855221e-07 -1.971394756e-06 -3.557166699e-06 -1.298096019e-05 -1.007855221e-07 1.497603186e-09 -2.66995431e-08 -4.499620465e-08 -1.974141367e-07 --1.971394756e-06 -2.66995431e-08 -9.488948659e-08 -9.278173056e-07 4.515629828e-06 --3.557166699e-06 -4.499620465e-08 -9.278173056e-07 -3.890656752e-06 8.949934416e-06 --1.298096019e-05 -1.974141367e-07 4.515629828e-06 8.949934416e-06 2.428515861e-05 -3.69028946e-06 2.403314809e-07 -6.366735454e-07 8.242905369e-07 -8.538434162e-06 -2.403314809e-07 7.890901965e-10 6.059047372e-09 3.689271146e-07 -7.102715661e-07 --6.366735454e-07 6.059047372e-09 -4.210896112e-08 -1.150197632e-06 1.966166762e-06 -8.242905369e-07 3.689271146e-07 -1.150197632e-06 -6.502423876e-06 1.363531781e-06 --8.538434162e-06 -7.102715661e-07 1.966166762e-06 1.363531781e-06 1.815597342e-05 -3.75263246e-06 2.80020697e-07 -3.753313035e-07 1.039867151e-06 -8.760014141e-06 -2.80020697e-07 7.812515648e-10 7.863606614e-09 4.394881822e-07 -8.330382867e-07 --3.753313035e-07 7.863606614e-09 -2.64314965e-08 -7.494016976e-07 1.196042383e-06 -1.039867151e-06 4.394881822e-07 -7.494016976e-07 -6.223133024e-06 7.998025652e-07 --8.760014141e-06 -8.330382867e-07 1.196042383e-06 7.998025652e-07 1.884953589e-05 -0.01668629932 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.01815043307 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.007029930121 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.001186694418 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0001069484344 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --7.490910143e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.797441387e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --8.055141085e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --5.780656783e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.589973946e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.202618987e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --6.083966399e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.994800519e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0001404073819 0.01106293632 0.01347463781 0 0 -0.01106293632 0.09643378676 0.04798611137 0 0 -0.01347463781 0.04798611137 -0.02118232572 0 0 -0 0 0 0 0 -0 0 0 0 0 --9.364456752e-05 0.007482274649 -0.003958243393 0 0 -0.007482274649 0.03070161885 -0.005201446594 0 0 --0.003958243393 -0.005201446594 -0.002894876677 0 0 -0 0 0 0 0 -0 0 0 0 0 -6.592541346e-06 -0.0005330597551 -0.0002978743572 0 0 --0.0005330597551 -0.000118952897 -0.0008511622587 0 0 --0.0002978743572 -0.0008511622587 -0.0009283629698 0 0 -0 0 0 0 0 -0 0 0 0 0 -2.495707313e-06 -0.0002080380453 8.500133845e-05 0 0 --0.0002080380453 0.00197461659 -0.001339055907 0 0 -8.500133845e-05 -0.001339055907 0.0007461557671 0 0 -0 0 0 0 0 -0 0 0 0 0 --6.77692269e-08 5.165356922e-06 6.702666294e-06 0 0 -5.165356922e-06 0.0001029565408 4.574228856e-05 0 0 -6.702666294e-06 4.574228856e-05 -3.910645072e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.088435052e-06 -8.71310622e-05 8.315711795e-05 0 0 --8.71310622e-05 -0.0003036876358 7.256990566e-05 0 0 -8.315711795e-05 7.256990566e-05 0.0001316121647 0 0 -0 0 0 0 0 -0 0 0 0 0 --9.548942969e-08 8.125866716e-06 -6.91009691e-06 0 0 -8.125866716e-06 -0.0001292866721 0.0001045173948 0 0 --6.91009691e-06 0.0001045173948 -8.421345238e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --5.577682447e-08 4.420042193e-06 1.645637584e-06 0 0 -4.420042193e-06 3.012263787e-05 3.709469073e-06 0 0 -1.645637584e-06 3.709469073e-06 -1.265241824e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 --7.454893673e-08 5.923413073e-06 5.138310257e-06 0 0 -5.923413073e-06 3.515587486e-05 1.521869247e-05 0 0 -5.138310257e-06 1.521869247e-05 4.103946161e-07 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.29627822e-08 -9.566277146e-07 2.01821297e-06 0 0 --9.566277146e-07 -2.985383839e-05 3.55302755e-05 0 0 -2.01821297e-06 3.55302755e-05 -2.45438214e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -4.225027766e-08 -3.325170951e-06 4.378302853e-06 0 0 --3.325170951e-06 -3.024806307e-05 2.218314446e-05 0 0 -4.378302853e-06 2.218314446e-05 -7.041973208e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.155446769e-08 -9.109014894e-07 2.967340157e-06 0 0 --9.109014894e-07 -7.772217831e-06 1.300112998e-05 0 0 -2.967340157e-06 1.300112998e-05 -4.133300699e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 --4.746963775e-09 3.699532642e-07 1.447419063e-06 0 0 -3.699532642e-07 4.576937344e-06 7.964751012e-06 0 0 -1.447419063e-06 7.964751012e-06 -4.778056203e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.005818393092 -0.0002837008112 -0.0009894247154 -0.03226341934 -0.03307528429 --0.0002837008112 6.110482919e-05 0.0001035455408 -0.005971793965 -0.004251527084 --0.0009894247154 0.0001035455408 0.0001392012773 -0.01439605066 -0.01096946815 --0.03226341934 -0.005971793965 -0.01439605066 0.07928598743 -0.02851448773 --0.03307528429 -0.004251527084 -0.01096946815 -0.02851448773 -0.09509958934 -0.01121542427 0.00148013434 0.004329472859 -0.01566478099 0.01624524822 -0.00148013434 5.466626876e-05 7.792828874e-05 -0.002198271749 0.001711413037 -0.004329472859 7.792828874e-05 -5.960082051e-05 -0.006506367293 0.004753931823 --0.01566478099 -0.002198271749 -0.006506367293 0.02175739075 -0.02309263189 -0.01624524822 0.001711413037 0.004753931823 -0.02309263189 0.02220093974 -0.0003996257315 6.886992679e-05 0.0006384910008 -0.0005946261372 0.0009039472143 -6.886992679e-05 1.16783131e-06 4.645877864e-06 1.604984452e-05 0.0001547591469 -0.0006384910008 4.645877864e-06 -1.780282441e-05 0.0002172599514 0.001434176127 --0.0005946261372 1.604984452e-05 0.0002172599514 -0.0004280279787 -0.001333697986 -0.0009039472143 0.0001547591469 0.001434176127 -0.001333697986 0.002044616691 -0.0004893172105 0.0001088340219 -0.0003720751246 -0.0001599124016 0.000620190207 -0.0001088340219 4.336660035e-06 -8.394097819e-06 -0.0001661339145 0.0001125838761 --0.0003720751246 -8.394097819e-06 4.626626317e-06 0.000610231595 -0.0003766864377 --0.0001599124016 -0.0001661339145 0.000610231595 -0.0008056827796 -0.000369314888 -0.000620190207 0.0001125838761 -0.0003766864377 -0.000369314888 0.0007537027532 --1.424012763e-05 2.876548218e-05 -4.885719458e-05 8.206545261e-05 -1.374032017e-05 -2.876548218e-05 3.492339936e-07 -7.442276668e-07 2.217111149e-05 7.243015528e-05 --4.885719458e-05 -7.442276668e-07 1.52101558e-06 -3.81425779e-05 -0.0001231356083 -8.206545261e-05 2.217111149e-05 -3.81425779e-05 0.0001313322861 0.0002228194876 --1.374032017e-05 7.243015528e-05 -0.0001231356083 0.0002228194876 2.088353043e-05 --0.0001132591221 -1.57945796e-05 -4.912376522e-05 0.0001280789051 -0.0002062200554 --1.57945796e-05 -4.333824064e-07 -5.65449853e-07 1.048139848e-05 -2.650948859e-05 --4.912376522e-05 -5.65449853e-07 1.020909344e-06 2.933518674e-05 -8.145431391e-05 -0.0001280789051 1.048139848e-05 2.933518674e-05 -0.0001140550444 0.0002238227302 --0.0002062200554 -2.650948859e-05 -8.145431391e-05 0.0002238227302 -0.0003726227702 --7.292289557e-06 -1.954772992e-06 3.900622339e-06 -5.028360379e-06 -1.541395416e-05 --1.954772992e-06 -2.396955484e-08 5.36823376e-08 -1.421919217e-06 -4.867509055e-06 -3.900622339e-06 5.36823376e-08 -1.187296919e-07 2.836480968e-06 9.704187245e-06 --5.028360379e-06 -1.421919217e-06 2.836480968e-06 -3.456323741e-06 -1.051972014e-05 --1.541395416e-05 -4.867509055e-06 9.704187245e-06 -1.051972014e-05 -3.149871102e-05 -8.842128795e-06 -2.320056261e-06 8.296311658e-06 -2.282100165e-05 8.111622015e-06 --2.320056261e-06 -1.181499316e-07 2.122739282e-07 5.036764348e-06 -1.483806614e-06 -8.296311658e-06 2.122739282e-07 -6.814162687e-08 -1.828608968e-05 5.49236902e-06 --2.282100165e-05 5.036764348e-06 -1.828608968e-05 5.765502253e-05 -2.00921729e-05 -8.111622015e-06 -1.483806614e-06 5.49236902e-06 -2.00921729e-05 6.869895802e-06 --9.134069455e-06 -7.053302741e-07 -1.435573956e-06 -4.265302157e-06 -2.31802335e-05 --7.053302741e-07 3.207428092e-09 1.825992188e-08 -1.51079286e-06 -2.382345335e-06 --1.435573956e-06 1.825992188e-08 6.342921799e-08 -3.31527465e-06 -4.969339387e-06 --4.265302157e-06 -1.51079286e-06 -3.31527465e-06 2.22097771e-05 1.310393478e-06 --2.31802335e-05 -2.382345335e-06 -4.969339387e-06 1.310393478e-06 -5.274182312e-05 --1.692262305e-05 -2.043730424e-06 8.373404694e-07 5.734578623e-06 -3.218108007e-05 --2.043730424e-06 -4.060905755e-08 3.265581256e-08 -3.788536919e-08 -4.21198416e-06 -8.373404694e-07 3.265581256e-08 -1.869794028e-08 -4.121669418e-08 1.700415512e-06 -5.734578623e-06 -3.788536919e-08 -4.121669418e-08 6.441275364e-07 1.205822829e-05 --3.218108007e-05 -4.21198416e-06 1.700415512e-06 1.205822829e-05 -6.068367501e-05 --5.212384048e-06 1.765782516e-08 -1.800487422e-06 2.43937044e-06 -1.04158476e-05 -1.765782516e-08 4.908972357e-10 -1.321181441e-08 4.986247199e-08 5.837660412e-08 --1.800487422e-06 -1.321181441e-08 5.523065729e-08 -1.195620608e-06 -4.407602595e-06 -2.43937044e-06 4.986247199e-08 -1.195620608e-06 4.993418451e-06 7.311762605e-06 --1.04158476e-05 5.837660412e-08 -4.407602595e-06 7.311762605e-06 -1.984567131e-05 --2.414186959e-06 -1.654917474e-07 -3.469495651e-07 -2.160972146e-06 -6.596441395e-06 --1.654917474e-07 2.364672447e-09 6.651592237e-09 -5.007693627e-07 -6.493564112e-07 --3.469495651e-07 6.651592237e-09 1.77059244e-08 -1.09342846e-06 -1.385726244e-06 --2.160972146e-06 -5.007693627e-07 -1.09342846e-06 7.136441501e-06 -8.327453845e-07 --6.596441395e-06 -6.493564112e-07 -1.385726244e-06 -8.327453845e-07 -1.518803337e-05 --4.021534382e-06 -2.761628295e-07 -4.547592838e-07 -3.66817672e-07 -9.041772249e-06 --2.761628295e-07 -1.595146232e-09 3.276708965e-09 -3.326223218e-07 -7.741553505e-07 --4.547592838e-07 3.276708965e-09 1.712348972e-08 -6.522215765e-07 -1.326892853e-06 --3.66817672e-07 -3.326223218e-07 -6.522215765e-07 5.408047299e-06 1.887728808e-06 --9.041772249e-06 -7.741553505e-07 -1.326892853e-06 1.887728808e-06 -1.8976873e-05 -0.04243263882 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.06141882426 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.01455076227 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.000333840261 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0001432216672 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0004208148492 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -8.911508737e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0001282817911 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --7.175539469e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.770640516e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.042538174e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -5.20151226e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.112519079e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.01420871832 -0.01845321131 0.02331940565 0 0 --0.01845321131 0.02393007127 -0.02752333821 0 0 -0.02331940565 -0.02752333821 -0.1762357277 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.02928394595 -0.03715330828 -0.03786263353 0 0 --0.03715330828 0.04694981445 0.05008127485 0 0 --0.03786263353 0.05008127485 0.02668004382 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.01815586833 -0.02254427507 -0.03397277225 0 0 --0.02254427507 0.0277853342 0.04260785032 0 0 --0.03397277225 0.04260785032 0.06270646053 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.004008044343 -0.004905900238 -0.009585604881 0 0 --0.004905900238 0.005942519414 0.01155186443 0 0 --0.009585604881 0.01155186443 0.02239930924 0 0 -0 0 0 0 0 -0 0 0 0 0 -8.646897888e-05 -0.000109125684 -0.0006178392214 0 0 --0.000109125684 0.0001370684179 0.0007420527761 0 0 --0.0006178392214 0.0007420527761 0.002232780446 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0005886247432 0.0007719606182 0.001159682545 0 0 -0.0007719606182 -0.001011580574 -0.001527142287 0 0 -0.001159682545 -0.001527142287 -0.002236891204 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0004412322444 0.0005875074895 0.001117185853 0 0 -0.0005875074895 -0.0007821440572 -0.001485989876 0 0 -0.001117185853 -0.001485989876 -0.002810119724 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.811369255e-05 2.370450208e-05 4.050194989e-05 0 0 -2.370450208e-05 -3.099178557e-05 -5.303780781e-05 0 0 -4.050194989e-05 -5.303780781e-05 -9.05199817e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -8.833140357e-05 -0.0001134917617 -0.0001564958646 0 0 --0.0001134917617 0.0001454579507 0.0002036019186 0 0 --0.0001564958646 0.0002036019186 0.0002595283402 0 0 -0 0 0 0 0 -0 0 0 0 0 -2.839415558e-05 -3.515810821e-05 -7.606645038e-05 0 0 --3.515810821e-05 4.318639314e-05 9.229405883e-05 0 0 --7.606645038e-05 9.229405883e-05 0.0001934533031 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.074516569e-05 -1.358035222e-05 -1.69341288e-05 0 0 --1.358035222e-05 1.708617183e-05 2.190740713e-05 0 0 --1.69341288e-05 2.190740713e-05 2.33938572e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.603393631e-06 3.303870293e-06 2.841404146e-06 0 0 -3.303870293e-06 -4.176284891e-06 -3.819211645e-06 0 0 -2.841404146e-06 -3.819211645e-06 -3.497471891e-07 0 0 -0 0 0 0 0 -0 0 0 0 0 --8.383748885e-06 1.108201317e-05 2.451370991e-05 0 0 -1.108201317e-05 -1.464262728e-05 -3.226021521e-05 0 0 -2.451370991e-05 -3.226021521e-05 -6.830452109e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.008895670184 -0.003085027328 -0.009285852825 -0.01386656751 0.01249559431 --0.003085027328 0.001333414307 -0.0009693488173 -0.006095744781 0.001312390377 --0.009285852825 -0.0009693488173 -0.00758481332 -0.01568003743 0.01021404623 --0.01386656751 -0.006095744781 -0.01568003743 -0.02092620432 0.02109571717 -0.01249559431 0.001312390377 0.01021404623 0.02109571717 -0.0137546541 --0.004592009864 0.0003803067312 -0.002891285889 -0.00795457954 0.003884583068 -0.0003803067312 0.003424918658 0.00338916661 -0.001639936223 -0.004556849764 --0.002891285889 0.00338916661 0.001049772657 -0.00710322652 -0.001413463976 --0.00795457954 -0.001639936223 -0.00710322652 -0.01225064696 0.009545751092 -0.003884583068 -0.004556849764 -0.001413463976 0.009545751092 0.001903149718 -0.000386629659 0.001628479209 0.001766362827 -0.0003864557049 -0.002381100616 -0.001628479209 0.002006800563 0.002906300405 0.001081562828 -0.003909866388 -0.001766362827 0.002906300405 0.003834036802 0.0007657745164 -0.005160996721 --0.0003864557049 0.001081562828 0.0007657745164 -0.001126466136 -0.001036692877 --0.002381100616 -0.003909866388 -0.005160996721 -0.001036692877 0.006947190332 -0.000634272397 0.0004314253714 0.0007671421875 0.0004797884318 -0.001032440215 -0.0004314253714 0.0002045370193 0.0004075117164 0.0002467637186 -0.0005472635321 -0.0007671421875 0.0004075117164 0.0007809369523 0.0004779997115 -0.0010494933 -0.0004797884318 0.0002467637186 0.0004779997115 0.0002916989232 -0.0006422515994 --0.001032440215 -0.0005472635321 -0.0010494933 -0.0006422515994 0.001410384974 -5.449272884e-05 -3.840729981e-06 7.357171551e-06 -1.16695325e-06 -9.69723976e-06 --3.840729981e-06 -3.252111666e-05 -5.264412978e-05 -5.593405052e-05 7.11633566e-05 -7.357171551e-06 -5.264412978e-05 -8.186506721e-05 -8.920057104e-05 0.0001107249569 --1.16695325e-06 -5.593405052e-05 -8.920057104e-05 -9.56643021e-05 0.0001206042276 --9.69723976e-06 7.11633566e-05 0.0001107249569 0.0001206042276 -0.000149757657 --1.946682495e-05 5.489838751e-06 -1.033416605e-05 -3.917083687e-05 1.387538083e-05 -5.489838751e-06 2.717254929e-05 3.120166917e-05 -3.822466102e-06 -4.198932591e-05 --1.033416605e-05 3.120166917e-05 2.237446502e-05 -3.54388984e-05 -3.013585341e-05 --3.917083687e-05 -3.822466102e-06 -3.54388984e-05 -7.112108079e-05 4.763234383e-05 -1.387538083e-05 -4.198932591e-05 -3.013585341e-05 4.763234383e-05 4.05894804e-05 -1.780627309e-05 1.045811264e-05 2.096689338e-05 1.299992572e-05 -2.821389911e-05 -1.045811264e-05 3.835057943e-06 9.659859103e-06 4.900510928e-06 -1.296690608e-05 -2.096689338e-05 9.659859103e-06 2.163438333e-05 1.216108516e-05 -2.907552465e-05 -1.299992572e-05 4.900510928e-06 1.216108516e-05 6.249622848e-06 -1.632676771e-05 --2.821389911e-05 -1.296690608e-05 -2.907552465e-05 -1.632676771e-05 3.907554501e-05 -1.123091053e-05 5.097096237e-06 1.009501578e-05 6.783595751e-06 -1.357389933e-05 -5.097096237e-06 3.464633266e-07 1.65092041e-06 2.669873109e-07 -2.190209615e-06 -1.009501578e-05 1.65092041e-06 4.707211875e-06 1.907933465e-06 -6.285216545e-06 -6.783595751e-06 2.669873109e-07 1.907933465e-06 7.783056063e-08 -2.523060136e-06 --1.357389933e-05 -2.190209615e-06 -6.285216545e-06 -2.523060136e-06 8.391356638e-06 --3.241338964e-06 -2.367442626e-06 -5.241074864e-06 -6.045040843e-06 7.059257694e-06 --2.367442626e-06 -4.065796206e-07 -2.139425027e-06 -4.024802343e-06 2.884677023e-06 --5.241074864e-06 -2.139425027e-06 -6.318610226e-06 -9.276021776e-06 8.514512408e-06 --6.045040843e-06 -4.024802343e-06 -9.276021776e-06 -1.115863554e-05 1.249487358e-05 -7.059257694e-06 2.884677023e-06 8.514512408e-06 1.249487358e-05 -1.147354542e-05 --3.361786678e-07 -9.611187798e-07 -1.149502637e-06 -1.487909671e-06 1.550520296e-06 --9.611187798e-07 -1.225444571e-06 -1.835941114e-06 -2.009095548e-06 2.476326109e-06 --1.149502637e-06 -1.835941114e-06 -2.548604659e-06 -2.948916231e-06 3.437615759e-06 --1.487909671e-06 -2.009095548e-06 -2.948916231e-06 -3.275407541e-06 3.977526054e-06 -1.550520296e-06 2.476326109e-06 3.437615759e-06 3.977526054e-06 -4.63673408e-06 -1.290762749e-06 1.316967641e-06 2.077755387e-06 1.067558118e-06 -2.797911183e-06 -1.316967641e-06 1.075781041e-06 1.84346749e-06 1.084166726e-06 -2.479784191e-06 -2.077755387e-06 1.84346749e-06 3.059296779e-06 1.713233989e-06 -4.116939261e-06 -1.067558118e-06 1.084166726e-06 1.713233989e-06 8.828553139e-07 -2.306995857e-06 --2.797911183e-06 -2.479784191e-06 -4.116939261e-06 -2.306995857e-06 5.5401955e-06 --5.501799604e-07 -1.232186216e-07 -5.846644537e-07 -1.029426408e-06 7.868389531e-07 --1.232186216e-07 3.827517793e-07 3.141094e-07 -3.490841382e-07 -4.225498194e-07 --5.846644537e-07 3.141094e-07 -1.386210289e-07 -1.222506992e-06 1.867478733e-07 --1.029426408e-06 -3.490841382e-07 -1.222506992e-06 -1.89189156e-06 1.645193538e-06 -7.868389531e-07 -4.225498194e-07 1.867478733e-07 1.645193538e-06 -2.515831897e-07 --4.040898315e-07 -1.658654532e-07 -4.113915532e-07 -5.552069435e-07 5.535362272e-07 --1.658654532e-07 -2.663711303e-08 -1.406535172e-07 -2.671440035e-07 1.895872985e-07 --4.113915532e-07 -1.406535172e-07 -3.996251243e-07 -5.919542357e-07 5.379322223e-07 --5.552069435e-07 -2.671440035e-07 -5.919542357e-07 -7.256660746e-07 7.961700093e-07 -5.535362272e-07 1.895872985e-07 5.379322223e-07 7.961700093e-07 -7.24103477e-07 -0.0196715876 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.02128422019 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.004919908651 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.003757977884 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.471547437e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --8.72599356e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.202209666e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -3.896298329e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -6.450493141e-07 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --4.433210761e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -5.55001458e-07 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -2.237116729e-08 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.466950053e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.05079734667 -0.02908390644 0.0001959991483 0 0 --0.02908390644 0.01457285551 -0.01461026004 0 0 -0.0001959991483 -0.01461026004 -0.1010988871 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.01832834777 -0.01571575232 -0.02684790869 0 0 --0.01571575232 0.009124780925 0.01409752933 0 0 --0.02684790869 0.01409752933 0.0210259627 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.001243726632 -0.0002442433057 0.000287576247 0 0 --0.0002442433057 0.0003513434401 0.001163165099 0 0 -0.000287576247 0.001163165099 0.003000723937 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.004073194327 -0.0007964220328 -0.0008725862653 0 0 --0.0007964220328 3.139163551e-05 7.806796536e-05 0 0 --0.0008725862653 7.806796536e-05 0.0001180431461 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0002361782259 1.513990759e-05 -8.767393466e-05 0 0 -1.513990759e-05 -4.358541463e-05 -0.0001270742905 0 0 --8.767393466e-05 -0.0001270742905 -0.000298522719 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0001053502045 0.0001143937936 0.0002065840465 0 0 -0.0001143937936 -7.026505254e-05 -0.0001384720625 0 0 -0.0002065840465 -0.0001384720625 -0.0002684940833 0 0 -0 0 0 0 0 -0 0 0 0 0 -8.641423116e-05 -1.967523874e-05 -1.953501375e-05 0 0 --1.967523874e-05 2.723677454e-06 3.986954145e-06 0 0 --1.953501375e-05 3.986954145e-06 4.295177003e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.276258954e-05 -1.509765071e-05 -3.13108823e-05 0 0 --1.509765071e-05 1.292894682e-05 1.146161273e-05 0 0 --3.13108823e-05 1.146161273e-05 -4.129863475e-07 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.750544737e-05 1.810831709e-05 5.139072263e-05 0 0 -1.810831709e-05 -8.267681917e-06 -2.60944389e-05 0 0 -5.139072263e-05 -2.60944389e-05 -6.695876571e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.546529337e-05 1.146854821e-05 2.929521847e-05 0 0 -1.146854821e-05 -5.001504989e-06 -1.362044439e-05 0 0 -2.929521847e-05 -1.362044439e-05 -3.258551988e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -2.078892134e-06 -1.939650772e-06 -7.274478296e-07 0 0 --1.939650772e-06 1.151301319e-06 -2.041675635e-06 0 0 --7.274478296e-07 -2.041675635e-06 -1.098510871e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -2.928294688e-06 -1.412792425e-06 4.304361613e-06 0 0 --1.412792425e-06 6.44740303e-07 -2.915422961e-06 0 0 -4.304361613e-06 -2.915422961e-06 -1.274790586e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --5.846490457e-06 3.357962267e-06 1.073207984e-05 0 0 -3.357962267e-06 -1.685079029e-06 -6.695633073e-06 0 0 -1.073207984e-05 -6.695633073e-06 -1.854008736e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.04393970561 -0.03178909183 -0.02307081739 0.01540300662 -0.0003860506769 --0.03178909183 0.01631254587 -0.009318330248 -0.02150404143 0.006426459633 --0.02307081739 -0.009318330248 -0.08906739583 -0.04839119404 0.02411618881 -0.01540300662 -0.02150404143 -0.04839119404 -0.01065483658 0.009390219009 --0.0003860506769 0.006426459633 0.02411618881 0.009390219009 -0.005648417777 -0.01958886202 -0.01902656979 -0.02865013348 -2.043505061e-05 0.004112096485 --0.01902656979 0.01673701021 0.0225941788 -0.0009420568658 -0.003994126305 --0.02865013348 0.0225941788 0.02619219596 -0.002857670038 -0.006014438741 --2.043505061e-05 -0.0009420568658 -0.002857670038 -0.0005306989696 -4.326296961e-06 -0.004112096485 -0.003994126305 -0.006014438741 -4.326296961e-06 0.0008632118311 -0.0004204686931 -0.001392594483 -0.002610493575 -0.0001226733612 7.582153992e-05 --0.001392594483 0.002456674748 0.004913797427 0.0008045254577 -0.0008860297587 --0.002610493575 0.004913797427 0.009745530712 0.001451109913 -0.001570007884 --0.0001226733612 0.0008045254577 0.001451109913 -3.777946538e-05 9.517296882e-05 -7.582153992e-05 -0.0008860297587 -0.001570007884 9.517296882e-05 -0.0001733322607 -0.001735235366 -0.0002481813835 0.0001904725868 0.0001678400732 0.0002860163954 --0.0002481813835 -0.0003383092267 -0.000328916642 0.000153348863 -9.469659447e-05 -0.0001904725868 -0.000328916642 -0.0002225544105 0.0001615545907 -1.201450759e-05 -0.0001678400732 0.000153348863 0.0001615545907 -6.791243902e-05 5.318545024e-05 -0.0002860163954 -9.469659447e-05 -1.201450759e-05 5.318545024e-05 3.940360906e-05 -0.000361888312 -0.0001299884142 -0.0004140481861 -0.0001863894992 0.0001890395996 --0.0001299884142 -0.0002230141311 -0.0004593748051 -0.0001211772321 0.0001263836645 --0.0004140481861 -0.0004593748051 -0.0008973413311 -0.000210912495 0.000221765495 --0.0001863894992 -0.0001211772321 -0.000210912495 -3.522502217e-05 3.815571552e-05 -0.0001890395996 0.0001263836645 0.000221765495 3.815571552e-05 -4.1207619e-05 --0.0001493429345 8.48138659e-05 0.0001490254162 2.40033418e-05 -3.981570455e-05 -8.48138659e-05 -3.349841514e-05 -6.001731033e-05 -6.081456615e-06 8.684333733e-06 -0.0001490254162 -6.001731033e-05 -0.0001073984206 -1.128153426e-05 1.635830974e-05 -2.40033418e-05 -6.081456615e-06 -1.128153426e-05 2.844880678e-08 -7.695257061e-07 --3.981570455e-05 8.684333733e-06 1.635830974e-05 -7.695257061e-07 2.608890302e-06 -3.607754135e-05 -1.159645725e-05 -1.594839263e-05 -3.613046224e-06 1.236747763e-05 --1.159645725e-05 -2.881775305e-06 -2.226511766e-06 2.480899559e-06 -4.019136903e-06 --1.594839263e-05 -2.226511766e-06 -1.12994465e-06 3.065190295e-06 -5.51592433e-06 --3.613046224e-06 2.480899559e-06 3.065190295e-06 9.838235936e-08 -1.22980906e-06 -1.236747763e-05 -4.019136903e-06 -5.51592433e-06 -1.22980906e-06 4.239313592e-06 --1.62553075e-05 -1.612620032e-05 -3.773306848e-05 -8.897727946e-06 6.793898239e-06 --1.612620032e-05 2.043584945e-05 1.40912301e-05 -9.010247749e-06 -1.592637737e-06 --3.773306848e-05 1.40912301e-05 -1.47232426e-05 -2.09131549e-05 3.98666142e-06 --8.897727946e-06 -9.010247749e-06 -2.09131549e-05 -4.869461264e-06 3.760697392e-06 -6.793898239e-06 -1.592637737e-06 3.98666142e-06 3.760697392e-06 -9.338174694e-07 --1.611353602e-05 1.664837779e-05 4.74303268e-05 1.849722893e-05 -1.674762118e-05 -1.664837779e-05 -1.055809069e-05 -2.597068954e-05 -8.510850498e-06 8.253464997e-06 -4.74303268e-05 -2.597068954e-05 -5.974218546e-05 -1.76904553e-05 1.791606293e-05 -1.849722893e-05 -8.510850498e-06 -1.76904553e-05 -4.318112387e-06 4.783558216e-06 --1.674762118e-05 8.253464997e-06 1.791606293e-05 4.783558216e-06 -5.077173257e-06 --4.613278748e-07 1.430774689e-06 3.226392713e-06 9.757190366e-07 -9.534720861e-07 -1.430774689e-06 -3.920766136e-06 -9.940778495e-06 -3.472792094e-06 3.187937508e-06 -3.226392713e-06 -9.940778495e-06 -2.255611061e-05 -6.880643168e-06 6.69763027e-06 -9.757190366e-07 -3.472792094e-06 -6.880643168e-06 -1.677518163e-06 1.817075464e-06 --9.534720861e-07 3.187937508e-06 6.69763027e-06 1.817075464e-06 -1.867524745e-06 -5.114993432e-06 -5.445437111e-06 -6.995277768e-06 5.179513494e-07 1.129136593e-06 --5.445437111e-06 4.119230574e-06 2.664906677e-06 -1.970673294e-06 -2.681747602e-07 --6.995277768e-06 2.664906677e-06 -4.062737255e-06 -4.753238633e-06 1.117422041e-06 -5.179513494e-07 -1.970673294e-06 -4.753238633e-06 -1.14797088e-06 9.042424751e-07 -1.129136593e-06 -2.681747602e-07 1.117422041e-06 9.042424751e-07 -2.705187026e-07 -6.907694992e-06 -3.920175054e-06 -2.081603594e-06 2.216674283e-06 8.688212719e-08 --3.920175054e-06 1.95478265e-06 -3.569096985e-07 -2.007940944e-06 3.850303589e-07 --2.081603594e-06 -3.569096985e-07 -8.13795803e-06 -4.941432627e-06 2.4487718e-06 -2.216674283e-06 -2.007940944e-06 -4.941432627e-06 -1.372168118e-06 1.234531131e-06 -8.688212719e-08 3.850303589e-07 2.4487718e-06 1.234531131e-06 -6.977350995e-07 -2.938402294e-07 2.69993767e-07 2.305222651e-06 1.391871018e-06 -9.248198715e-07 -2.69993767e-07 -1.734009583e-06 -6.14315756e-06 -2.682009945e-06 2.02361798e-06 -2.305222651e-06 -6.14315756e-06 -1.63480234e-05 -5.589568385e-06 4.720824334e-06 -1.391871018e-06 -2.682009945e-06 -5.589568385e-06 -1.322278713e-06 1.361329351e-06 --9.248198715e-07 2.02361798e-06 4.720824334e-06 1.361329351e-06 -1.254729094e-06 -0.01547410997 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.01787123346 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.006863089976 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0007792513642 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0001807915622 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --8.845062027e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -3.125589245e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.421682349e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.494579339e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --9.041834342e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.326432771e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --8.103874562e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.426557203e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0002606805677 -0.01305891118 0.01368860917 0 0 --0.01305891118 0.0611127621 0.0023308453 0 0 -0.01368860917 0.0023308453 -0.07946690041 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0001436248293 -0.007051680665 -0.004060761761 0 0 --0.007051680665 0.005648904383 0.01354748277 0 0 --0.004060761761 0.01354748277 0.01341841906 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.10077479e-05 0.0005280503517 -0.0001439940322 0 0 -0.0005280503517 0.001993744757 -0.0005993233278 0 0 --0.0001439940322 -0.0005993233278 0.0001787177535 0 0 -0 0 0 0 0 -0 0 0 0 0 -7.792991367e-08 -1.460469631e-05 -6.807730336e-06 0 0 --1.460469631e-05 0.002111202904 0.00095663968 0 0 --6.807730336e-06 0.00095663968 0.0004319155277 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.671831374e-07 7.018865251e-06 -5.89528863e-06 0 0 -7.018865251e-06 0.0002260716118 -2.617106808e-05 0 0 --5.89528863e-06 -2.617106808e-05 -6.405544725e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.643187155e-06 8.023191491e-05 8.294607818e-05 0 0 -8.023191491e-05 2.243947351e-05 -0.0001196985619 0 0 -8.294607818e-05 -0.0001196985619 -0.0002662963067 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.198048878e-07 6.611994912e-06 5.431703643e-06 0 0 -6.611994912e-06 -0.0001474563395 -0.0001108809252 0 0 -5.431703643e-06 -0.0001108809252 -8.218134375e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -2.801287133e-08 -1.481306522e-06 9.937276805e-07 0 0 --1.481306522e-06 2.182087651e-05 -9.262109776e-07 0 0 -9.937276805e-07 -9.262109776e-07 -1.190473461e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.652948204e-07 -8.15968228e-06 4.344788249e-06 0 0 --8.15968228e-06 1.511684345e-05 1.269498135e-05 0 0 -4.344788249e-06 1.269498135e-05 -1.891539187e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.930435744e-08 2.007664969e-06 4.864597543e-06 0 0 -2.007664969e-06 -1.67826578e-05 -2.858827039e-05 0 0 -4.864597543e-06 -2.858827039e-05 -3.83083046e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --6.632607619e-08 3.383222728e-06 4.241928771e-06 0 0 -3.383222728e-06 -2.739940378e-05 -3.00626444e-05 0 0 -4.241928771e-06 -3.00626444e-05 -3.2185881e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.083268372e-08 1.540124747e-06 3.762556898e-06 0 0 -1.540124747e-06 -6.357417544e-06 -1.194795568e-05 0 0 -3.762556898e-06 -1.194795568e-05 -2.02529674e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -9.789154708e-09 -4.939035247e-07 1.899541081e-06 0 0 --4.939035247e-07 2.981706715e-06 -4.413651498e-06 0 0 -1.899541081e-06 -4.413651498e-06 -1.242254544e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.005086733776 -0.0006783486006 0.0004762807061 -0.03308467584 0.03118867432 --0.0006783486006 0.0002479936547 -0.0001992970106 -0.01413596655 0.00980103877 -0.0004762807061 -0.0001992970106 0.0001594794261 0.01064843403 -0.007301155497 --0.03308467584 -0.01413596655 0.01064843403 0.06418387245 0.04076352975 -0.03118867432 0.00980103877 -0.007301155497 0.04076352975 -0.09718400478 -0.01002019344 0.004006332021 -0.00274557561 -0.0112127551 -0.01665560204 -0.004006332021 0.0002457213939 -4.309737767e-05 -0.005487250148 -0.004893956412 --0.00274557561 -4.309737767e-05 -6.790948403e-05 0.003853235849 0.00319076057 --0.0112127551 -0.005487250148 0.003853235849 0.01180378825 0.01994501731 --0.01665560204 -0.004893956412 0.00319076057 0.01994501731 0.02538683346 -0.0001156548944 0.0004056430431 -0.0002152688751 0.0001241752893 -0.0006280935146 -0.0004056430431 8.164030845e-06 8.067558379e-06 0.0003032477775 -0.00100743761 --0.0002152688751 8.067558379e-06 -1.097058332e-05 -0.0001597696368 0.0005241527019 -0.0001241752893 0.0003032477775 -0.0001597696368 0.0001209536871 -0.0005625711252 --0.0006280935146 -0.00100743761 0.0005241527019 -0.0005625711252 0.002400648487 -0.0006285584808 -0.0002488585571 2.636917584e-05 -0.0009841626533 -0.0004964942543 --0.0002488585571 -1.729609053e-05 -2.156617453e-06 0.0003796502259 0.0002803391286 -2.636917584e-05 -2.156617453e-06 5.13822677e-07 -4.057231914e-05 -2.681967878e-05 --0.0009841626533 0.0003796502259 -4.057231914e-05 0.001540085111 0.0007846152171 --0.0004964942543 0.0002803391286 -2.681967878e-05 0.0007846152171 0.0003315945402 --2.278729753e-05 -1.693964347e-05 -8.156555143e-06 -2.672349955e-05 6.91629479e-05 --1.693964347e-05 -1.422163139e-07 -5.203443488e-07 -2.235321352e-05 4.781965955e-05 --8.156555143e-06 -5.203443488e-07 -4.517263596e-07 -1.06729478e-05 2.315596165e-05 --2.672349955e-05 -2.235321352e-05 -1.06729478e-05 -3.084265424e-05 8.182812518e-05 -6.91629479e-05 4.781965955e-05 2.315596165e-05 8.182812518e-05 -0.0002088822666 --7.880894206e-05 -7.228321908e-05 3.058819114e-05 2.705273094e-05 0.0002088961318 --7.228321908e-05 -3.296918894e-06 -5.226886277e-07 3.771591014e-05 0.0001250292452 -3.058819114e-05 -5.226886277e-07 1.091148799e-06 -1.635309076e-05 -5.088232134e-05 -2.705273094e-05 3.771591014e-05 -1.635309076e-05 -6.643660195e-06 -8.534185462e-05 -0.0002088961318 0.0001250292452 -5.088232134e-05 -8.534185462e-05 -0.0004833737951 --1.901282854e-05 6.115122833e-06 8.470202386e-07 1.590473634e-05 2.609482458e-05 -6.115122833e-06 2.27191695e-07 1.475871655e-07 6.282858808e-08 -1.246490302e-05 -8.470202386e-07 1.475871655e-07 4.267205877e-08 2.827647108e-07 -1.942054249e-06 -1.590473634e-05 6.282858808e-08 2.827647108e-07 -1.082942253e-06 -3.143971133e-05 -2.609482458e-05 -1.246490302e-05 -1.942054249e-06 -3.143971133e-05 -2.825731593e-05 -9.210499937e-06 3.941744458e-06 -7.272498325e-07 -1.228690612e-05 -1.262579661e-05 -3.941744458e-06 3.059647949e-07 -5.46105837e-09 -8.534832662e-06 -2.87868649e-06 --7.272498325e-07 -5.46105837e-09 -1.028262722e-08 1.6956515e-06 4.378968826e-07 --1.228690612e-05 -8.534832662e-06 1.6956515e-06 8.616901507e-06 2.283309537e-05 --1.262579661e-05 -2.87868649e-06 4.378968826e-07 2.283309537e-05 1.269185619e-05 --4.673752794e-06 -1.716615364e-06 6.226301781e-07 -8.062653205e-06 1.575835784e-05 --1.716615364e-06 8.418138876e-08 -9.839489764e-08 -7.218720324e-06 7.801892639e-06 -6.226301781e-07 -9.839489764e-08 6.67463538e-08 3.022547724e-06 -3.021050565e-06 --8.062653205e-06 -7.218720324e-06 3.022547724e-06 1.145303125e-05 1.518679726e-05 -1.575835784e-05 7.801892639e-06 -3.021050565e-06 1.518679726e-05 -4.745624643e-05 --1.830032632e-05 1.084111044e-07 1.30419027e-06 8.446231941e-06 3.349126566e-05 -1.084111044e-07 7.761264187e-09 2.886068413e-08 2.156347834e-07 -3.255894924e-07 -1.30419027e-06 2.886068413e-08 6.634502005e-08 5.547331842e-07 -2.94052882e-06 -8.446231941e-06 2.156347834e-07 5.547331842e-07 4.500743594e-06 -1.947830779e-05 -3.349126566e-05 -3.255894924e-07 -2.94052882e-06 -1.947830779e-05 -5.936708331e-05 --7.031723655e-06 -1.58163801e-06 7.281335394e-07 1.427445096e-06 1.463155199e-05 --1.58163801e-06 -4.186404146e-08 -2.445787541e-08 -5.710031794e-07 3.563389052e-06 -7.281335394e-07 -2.445787541e-08 3.748420062e-08 3.871528687e-07 -1.678406151e-06 -1.427445096e-06 -5.710031794e-07 3.871528687e-07 2.245497386e-06 -3.744173462e-06 -1.463155199e-05 3.563389052e-06 -1.678406151e-06 -3.744173462e-06 -3.020894059e-05 --3.47195099e-06 -8.303375641e-07 4.093226618e-07 -1.326980435e-06 8.474629359e-06 --8.303375641e-07 -2.751936891e-09 -2.437991352e-08 -1.29631595e-06 2.464857975e-06 -4.093226618e-07 -2.437991352e-08 2.808774993e-08 7.676899116e-07 -1.272651636e-06 --1.326980435e-06 -1.29631595e-06 7.676899116e-07 4.386730686e-06 1.048906546e-06 -8.474629359e-06 2.464857975e-06 -1.272651636e-06 1.048906546e-06 -1.970548291e-05 --3.861889751e-06 -4.665264809e-07 3.398039185e-07 -1.244647234e-06 9.104288374e-06 --4.665264809e-07 -1.306338857e-09 -1.360600797e-08 -7.368857362e-07 1.390200716e-06 -3.398039185e-07 -1.360600797e-08 2.436297906e-08 6.91824505e-07 -1.08936694e-06 --1.244647234e-06 -7.368857362e-07 6.91824505e-07 5.847877887e-06 -1.595421993e-07 -9.104288374e-06 1.390200716e-06 -1.08936694e-06 -1.595421993e-07 -1.993142669e-05 -0.1881873019 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.04901206006 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.2380046767 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.08285036029 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.003550780277 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.001662165566 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.002448640367 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.002538938174 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -6.499119823e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0007105227819 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --7.651663195e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --7.900377642e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -4.082391151e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.1993514701 -0.01627394775 0.05313180702 0 0 --0.01627394775 0.2240513542 -0.0663520626 0 0 -0.05313180702 -0.0663520626 0.03928603706 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.1199942248 0.01092733102 0.04379416907 0 0 -0.01092733102 0.08465463204 -0.06479646808 0 0 -0.04379416907 -0.06479646808 0.02049222643 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.01668966956 -0.004682458341 0.006594586768 0 0 --0.004682458341 0.01797271514 -0.008357746732 0 0 -0.006594586768 -0.008357746732 -0.04052579282 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.009209463938 -0.01541500016 -0.0222039226 0 0 --0.01541500016 0.0182075431 0.0296295125 0 0 --0.0222039226 0.0296295125 0.0407285079 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0006149879075 0.0007485686688 0.001448113249 0 0 -0.0007485686688 -0.0009324361072 -0.002022343329 0 0 -0.001448113249 -0.002022343329 -0.003909893383 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0001403698708 0.0005946330043 0.0009088103176 0 0 -0.0005946330043 -0.0002982532601 -0.001182956516 0 0 -0.0009088103176 -0.001182956516 -0.002221660327 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0003822694498 -0.0007985494297 -0.001107856051 0 0 --0.0007985494297 0.0006281304563 0.001363279241 0 0 --0.001107856051 0.001363279241 0.001316973811 0 0 -0 0 0 0 0 -0 0 0 0 0 --5.123559428e-05 0.0001520949273 0.0003093391217 0 0 -0.0001520949273 -0.0001800807021 -0.0004197222231 0 0 -0.0003093391217 -0.0004197222231 -0.0006822333565 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.797234176e-05 2.515131831e-05 3.003570817e-05 0 0 -2.515131831e-05 0.0001056174814 -3.956128653e-06 0 0 -3.003570817e-05 -3.956128653e-06 0.0001431371067 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.794481929e-05 -9.095154727e-05 -0.0001114246384 0 0 --9.095154727e-05 4.419139275e-05 0.0001577186546 0 0 --0.0001114246384 0.0001577186546 -1.405031827e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.208743523e-05 5.152262911e-05 9.371363308e-05 0 0 -5.152262911e-05 -0.0001153999808 -0.00016117509 0 0 -9.371363308e-05 -0.00016117509 -0.0003497965031 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.856405926e-05 -1.558513651e-05 -2.411493943e-05 0 0 --1.558513651e-05 1.358814988e-05 2.478309589e-05 0 0 --2.411493943e-05 2.478309589e-05 3.622232612e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.698933319e-05 -7.662636401e-06 5.495532478e-07 0 0 --7.662636401e-06 3.332355333e-06 5.266410537e-06 0 0 -5.495532478e-07 5.266410537e-06 -3.370920221e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.02634835425 -0.04416144265 0.01497894791 -0.1226627734 0.0347049837 --0.04416144265 0.04478840925 -0.02526625584 -0.03745327677 0.01386001802 -0.01497894791 -0.02526625584 -0.2071601366 -0.0252925361 0.001932334071 --0.1226627734 -0.03745327677 -0.0252925361 -0.06126943671 0.0006324264183 -0.0347049837 0.01386001802 0.001932334071 0.0006324264183 -0.2141880642 -0.1035920055 -0.04840838948 -0.04930467818 0.03196781596 -0.04112779139 --0.04840838948 0.04740811847 0.03560801485 -0.0404719752 -0.006262801569 --0.04930467818 0.03560801485 0.03089367655 0.02599551273 0.002870675135 -0.03196781596 -0.0404719752 0.02599551273 0.1680814865 0.01657641249 --0.04112779139 -0.006262801569 0.002870675135 0.01657641249 0.0293187095 -0.008456420905 -0.01769780397 -0.02886788834 -0.006950157886 0.006828819486 --0.01769780397 0.01092622189 0.003285689475 -0.02292868478 0.009037096435 --0.02886788834 0.003285689475 0.006441815181 -0.01103555222 0.02842151366 --0.006950157886 -0.02292868478 -0.01103555222 0.01601212986 0.0304576993 -0.006828819486 0.009037096435 0.02842151366 0.0304576993 -0.01621360933 --0.004092066551 0.001225660134 -0.0008821973319 -0.005987577201 0.002486846544 -0.001225660134 0.003495556361 0.002622687998 -0.001171501497 -0.004645839978 --0.0008821973319 0.002622687998 0.0007792771656 -0.005554610083 -0.001897436948 --0.005987577201 -0.001171501497 -0.005554610083 -0.01085635928 0.006657070483 -0.002486846544 -0.004645839978 -0.001897436948 0.006657070483 0.003568838697 -0.001587400882 0.001475323106 0.002325095479 0.001606641332 -0.003477643423 -0.001475323106 0.001785608152 0.002976893887 0.001857530573 -0.003771214191 -0.002325095479 0.002976893887 0.004765582453 0.003274158096 -0.005856810858 -0.001606641332 0.001857530573 0.003274158096 0.002815443975 -0.00369704197 --0.003477643423 -0.003771214191 -0.005856810858 -0.00369704197 0.008071083402 -0.0001510242315 0.0003426672082 0.0006273975184 0.0001029111996 -0.0006405460778 -0.0003426672082 0.0001806019443 0.000189942034 0.0003388719167 -0.0003718452687 -0.0006273975184 0.000189942034 0.0002879612161 0.0005509052309 -0.0008255806718 -0.0001029111996 0.0003388719167 0.0005509052309 -0.0004052161145 -0.001072791707 --0.0006405460778 -0.0003718452687 -0.0008255806718 -0.001072791707 0.000734519096 --0.0005678058751 -0.0002097308459 -0.0004930204348 -0.000680606758 0.0008231082747 --0.0002097308459 -7.322946694e-05 -0.0002382887874 -0.000315243464 0.0002969109856 --0.0004930204348 -0.0002382887874 -0.0006303930483 -0.0007832859891 0.000752154673 --0.000680606758 -0.000315243464 -0.0007832859891 -0.001025790645 0.001000020937 -0.0008231082747 0.0002969109856 0.000752154673 0.001000020937 -0.001181067815 -0.0002219639248 -2.852834752e-05 -3.258074e-05 0.0001133099051 -0.0001559530877 --2.852834752e-05 0.0001006670349 0.0001373539167 -1.011999757e-05 -0.0001177731499 --3.258074e-05 0.0001373539167 0.0002086195567 7.974647987e-05 -0.0001351561305 -0.0001133099051 -1.011999757e-05 7.974647987e-05 0.0003430784656 -1.418679463e-05 --0.0001559530877 -0.0001177731499 -0.0001351561305 -1.418679463e-05 0.0003128508222 -6.86067412e-05 0.0001163710606 0.0002295186897 6.934381525e-05 -0.0002264552931 -0.0001163710606 5.840944497e-05 8.234576337e-05 0.0001107157017 -0.0001659475601 -0.0002295186897 8.234576337e-05 0.0001064421494 0.0001853231526 -0.0003188997912 -6.934381525e-05 0.0001107157017 0.0001853231526 4.356844577e-05 -0.0002958556593 --0.0002264552931 -0.0001659475601 -0.0003188997912 -0.0002958556593 0.000358258665 --0.0001702651031 -2.749926706e-05 -5.741032226e-05 -0.0001770054266 0.0001849189146 --2.749926706e-05 -3.879788308e-05 -8.046581557e-05 -4.645743967e-05 8.337972342e-05 --5.741032226e-05 -8.046581557e-05 -0.0001793514132 -0.0001472082759 0.0001459841505 --0.0001770054266 -4.645743967e-05 -0.0001472082759 -0.0003307712259 0.0001382463448 -0.0001849189146 8.337972342e-05 0.0001459841505 0.0001382463448 -0.0003225318992 -1.788030269e-06 -1.74340184e-05 -2.006755042e-05 -1.52735282e-05 1.957969267e-05 --1.74340184e-05 4.447333515e-06 -2.311271844e-06 -1.150325591e-05 1.324491606e-05 --2.006755042e-05 -2.311271844e-06 -1.409459779e-05 -5.911139432e-06 2.345777483e-05 --1.52735282e-05 -1.150325591e-05 -5.911139432e-06 -6.404317324e-06 7.743904255e-06 -1.957969267e-05 1.324491606e-05 2.345777483e-05 7.743904255e-06 -5.471104513e-05 -1.200413863e-05 1.3441082e-05 3.437213378e-05 9.464144179e-06 -2.484101796e-05 -1.3441082e-05 1.502015008e-05 1.778783681e-05 1.811290691e-05 -2.932114649e-05 -3.437213378e-05 1.778783681e-05 1.347679627e-05 2.689125373e-05 -5.851814541e-05 -9.464144179e-06 1.811290691e-05 2.689125373e-05 2.669951468e-06 -5.241555733e-05 --2.484101796e-05 -2.932114649e-05 -5.851814541e-05 -5.241555733e-05 3.994115956e-05 --3.595459921e-05 -3.150160414e-06 -1.53449735e-06 -4.139192667e-05 3.493695121e-05 --3.150160414e-06 -8.354385062e-06 -2.112735656e-05 -7.766057248e-06 1.725798383e-05 --1.53449735e-06 -2.112735656e-05 -5.23683317e-05 -2.666419883e-05 2.627739675e-05 --4.139192667e-05 -7.766057248e-06 -2.666419883e-05 -7.177006328e-05 1.930105214e-05 -3.493695121e-05 1.725798383e-05 2.627739675e-05 1.930105214e-05 -7.401020584e-05 -0.03314953554 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.03827165574 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.01370886944 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.003011486341 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0002053042297 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0001540527042 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --7.602710177e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.951270985e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.239274872e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --4.363560603e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.197953319e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --8.350347732e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.138989059e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0002189050681 -0.0003646513859 -0.007326022372 0 0 --0.0003646513859 0.0005617705058 0.009210329591 0 0 --0.007326022372 0.009210329591 0.04896316565 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0001486640102 -0.000243303043 -0.01965838246 0 0 --0.000243303043 0.0003630848395 0.0227268269 0 0 --0.01965838246 0.0227268269 0.05771173541 0 0 -0 0 0 0 0 -0 0 0 0 0 --5.870024062e-06 9.948402104e-06 0.0001460491631 0 0 -9.948402104e-06 -1.578632299e-05 -0.0001832729237 0 0 -0.0001460491631 -0.0001832729237 0.0002095350089 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.509341174e-06 6.807549057e-06 0.0004241576742 0 0 -6.807549057e-06 -1.308840382e-05 -0.0007405352384 0 0 -0.0004241576742 -0.0007405352384 0.006506863513 0 0 -0 0 0 0 0 -0 0 0 0 0 -4.885399097e-08 -9.371032671e-08 4.880749044e-06 0 0 --9.371032671e-08 1.777122104e-07 -8.287955357e-06 0 0 -4.880749044e-06 -8.287955357e-06 -7.791438978e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.796387224e-06 3.169393977e-06 0.0002768078349 0 0 -3.169393977e-06 -5.36130361e-06 -0.0003897222989 0 0 -0.0002768078349 -0.0003897222989 -0.000431117841 0 0 -0 0 0 0 0 -0 0 0 0 0 -8.337484454e-08 -1.486189735e-07 -1.266638805e-05 0 0 --1.486189735e-07 2.552816664e-07 1.794888989e-05 0 0 --1.266638805e-05 1.794888989e-05 -0.0002994895116 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.215132613e-07 -1.975958381e-07 -1.180380933e-05 0 0 --1.975958381e-07 2.91372755e-07 1.350098932e-05 0 0 --1.180380933e-05 1.350098932e-05 6.403617447e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -6.989971705e-08 -1.1938536e-07 -3.395375282e-08 0 0 --1.1938536e-07 1.918904729e-07 1.07715602e-07 0 0 --3.395375282e-08 1.07715602e-07 -1.893086001e-07 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.105282981e-08 5.536751531e-08 6.239674632e-06 0 0 -5.536751531e-08 -9.514128512e-08 -9.12606802e-06 0 0 -6.239674632e-06 -9.12606802e-06 -0.0001370714309 0 0 -0 0 0 0 0 -0 0 0 0 0 --5.496427187e-08 9.428784505e-08 1.022419156e-05 0 0 -9.428784505e-08 -1.526361875e-07 -1.345430512e-05 0 0 -1.022419156e-05 -1.345430512e-05 -7.017029039e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --8.713919871e-09 1.473209688e-08 3.917182051e-06 0 0 -1.473209688e-08 -2.328126468e-08 -4.943362786e-06 0 0 -3.917182051e-06 -4.943362786e-06 -2.615774409e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -5.55119688e-09 -9.411836937e-09 1.161052388e-06 0 0 --9.411836937e-09 1.494493061e-08 -1.460695716e-06 0 0 -1.161052388e-06 -1.460695716e-06 -1.18698448e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.01432401182 0.003000532676 -0.0008548417081 -0.02622250083 0.000652897977 -0.003000532676 -1.956799334e-06 -4.313618297e-05 0.005199150477 9.193686817e-05 --0.0008548417081 -4.313618297e-05 2.778444046e-05 -0.001460731026 -4.21407459e-05 --0.02622250083 0.005199150477 -0.001460731026 -0.04786689035 0.001087991908 -0.000652897977 9.193686817e-05 -4.21407459e-05 0.001087991908 5.371739053e-05 -0.02474582121 -0.008998067885 0.003426151332 0.04612835485 -0.003079842612 --0.008998067885 -2.269300925e-06 -0.0001295708554 -0.01558282473 0.0002755465316 -0.003426151332 -0.0001295708554 9.380490983e-05 0.005980818893 -0.0001385554398 -0.04612835485 -0.01558282473 0.005980818893 0.08555448329 -0.005434121993 --0.003079842612 0.0002755465316 -0.0001385554398 -0.005434121993 0.0001655725476 -0.00128209632 -0.001554367942 0.0008601995785 0.002922834301 -0.0009775335002 --0.001554367942 -2.053105308e-07 -1.642523783e-05 -0.002692028347 3.491907474e-05 -0.0008601995785 -1.642523783e-05 1.809745639e-05 0.001497262324 -2.941812624e-05 -0.002922834301 -0.002692028347 0.001497262324 0.006278552887 -0.001708837054 --0.0009775335002 3.491907474e-05 -2.941812624e-05 -0.001708837054 4.335025852e-05 -0.001017959104 0.0005164314778 -0.0005587938281 0.001389656992 0.0007772093851 -0.0005164314778 1.373653865e-07 7.611450969e-06 0.0008943224708 -1.620991196e-05 --0.0005587938281 7.611450969e-06 -1.686241373e-05 -0.0009732932902 2.970472177e-05 -0.001389656992 0.0008943224708 -0.0009732932902 0.001760199751 0.001357789751 -0.0007772093851 -1.620991196e-05 2.970472177e-05 0.001357789751 -5.013090383e-05 --1.375153324e-05 7.349055658e-05 -0.0001429294318 -9.32659686e-05 0.0002050117117 -7.349055658e-05 7.930491432e-09 7.147189423e-07 0.0001272790826 -1.522319225e-06 --0.0001429294318 7.147189423e-07 -2.808707816e-06 -0.0002482309953 4.994669249e-06 --9.32659686e-05 0.0001272790826 -0.0002482309953 -0.0002818158168 0.0003565214696 -0.0002050117117 -1.522319225e-06 4.994669249e-06 0.0003565214696 -8.549067378e-06 --0.0002060485271 9.978095973e-05 -3.67393821e-05 -0.0004347039309 5.678741108e-05 -9.978095973e-05 1.818118999e-08 1.214768943e-06 0.0001728035894 -2.58031371e-06 --3.67393821e-05 1.214768943e-06 -8.661561195e-07 -6.457913619e-05 1.579768514e-06 --0.0004347039309 0.0001728035894 -6.457913619e-05 -0.0008876895902 0.0001003669378 -5.678741108e-05 -2.58031371e-06 1.579768514e-06 0.0001003669378 -2.804063275e-06 -4.820091236e-06 1.512708668e-06 -2.365059912e-06 7.200806719e-06 3.272689409e-06 -1.512708668e-06 8.8721393e-10 3.730562534e-08 2.619019278e-06 -7.969491355e-08 --2.365059912e-06 3.730562534e-08 -1.21979924e-07 -4.124060163e-06 2.149744475e-07 -7.200806719e-06 2.619019278e-06 -4.124060163e-06 1.048516361e-05 5.72801204e-06 -3.272689409e-06 -7.969491355e-08 2.149744475e-07 5.72801204e-06 -3.630436055e-07 -2.145512847e-05 -1.282247354e-05 1.558184096e-05 4.19397785e-05 -1.886852323e-05 --1.282247354e-05 -3.842307889e-09 -2.023714176e-07 -2.220528683e-05 4.316672694e-07 -1.558184096e-05 -2.023714176e-07 4.919256515e-07 2.706103634e-05 -8.174160532e-07 -4.19397785e-05 -2.220528683e-05 2.706103634e-05 8.091590345e-05 -3.283863013e-05 --1.886852323e-05 4.316672694e-07 -8.174160532e-07 -3.283863013e-05 1.253789571e-06 --2.897786429e-05 5.374992238e-06 -1.595557272e-06 -5.419218958e-05 2.339407718e-06 -5.374992238e-06 3.038386652e-10 4.396596135e-08 9.309395671e-06 -9.334865243e-08 --1.595557272e-06 4.396596135e-08 -2.418299683e-08 -2.796278985e-06 4.275575886e-08 --5.419218958e-05 9.309395671e-06 -2.796278985e-06 -0.0001007932851 4.121413177e-06 -2.339407718e-06 -9.334865243e-08 4.275575886e-08 4.121413177e-06 -7.255313622e-08 --3.477250607e-05 8.704608207e-07 3.577486103e-06 -6.278743433e-05 -3.759599325e-06 -8.704608207e-07 1.189789651e-10 9.622194199e-09 1.507409296e-06 -2.016174295e-08 -3.577486103e-06 9.622194199e-09 8.088968569e-08 6.168440209e-06 -1.304999229e-07 --6.278743433e-05 1.507409296e-06 6.168440209e-06 -0.000113183957 -6.452929769e-06 --3.759599325e-06 -2.016174295e-08 -1.304999229e-07 -6.452929769e-06 1.895611911e-07 --7.134270399e-06 2.182994564e-06 -1.708761465e-06 -1.347563582e-05 2.091599037e-06 -2.182994564e-06 7.662274091e-11 1.63471795e-08 3.780974595e-06 -3.472431664e-08 --1.708761465e-06 1.63471795e-08 -2.523583462e-08 -2.968006014e-06 4.204642277e-08 --1.347563582e-05 3.780974595e-06 -2.968006014e-06 -2.527809575e-05 3.640511401e-06 -2.091599037e-06 -3.472431664e-08 4.204642277e-08 3.640511401e-06 -6.479878916e-08 --2.076073421e-06 3.50633447e-07 -9.33834681e-08 -3.748282204e-06 5.882906291e-08 -3.50633447e-07 -1.696427559e-10 -3.164822872e-09 6.074918157e-07 6.751171842e-09 --9.33834681e-08 -3.164822872e-09 1.872293075e-09 -1.604022602e-07 -2.705145474e-09 --3.748282204e-06 6.074918157e-07 -1.604022602e-07 -6.756331709e-06 9.898938864e-08 -5.882906291e-08 6.751171842e-09 -2.705145474e-09 9.898938864e-08 3.04857531e-09 --9.428515705e-06 1.342262359e-06 -3.71915174e-07 -1.730916316e-05 5.25578949e-07 -1.342262359e-06 8.422260782e-11 1.124654767e-08 2.324766358e-06 -2.387940687e-08 --3.71915174e-07 1.124654767e-08 -5.574492494e-09 -6.523661167e-07 9.619707904e-09 --1.730916316e-05 2.324766358e-06 -6.523661167e-07 -3.167505155e-05 9.277269235e-07 -5.25578949e-07 -2.387940687e-08 9.619707904e-09 9.277269235e-07 -1.572240537e-08 --0.04108882328 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.06357041129 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.01683739108 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0005629948202 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.000200748738 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0004941780305 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0001408902921 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -8.983406759e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -7.073542526e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -4.718422149e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --8.930898702e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --4.543187418e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.552869436e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.01360826174 0.0175772258 0.02529756229 0 0 -0.0175772258 -0.02267829258 -0.03026872023 0 0 -0.02529756229 -0.03026872023 0.1803778859 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.02895111906 0.03654409033 -0.03486921582 0 0 -0.03654409033 -0.04597561297 0.04598899962 0 0 --0.03486921582 0.04598899962 -0.01648551714 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.01878953999 0.02323690552 -0.03395157395 0 0 -0.02323690552 -0.02855561298 0.0424633434 0 0 --0.03395157395 0.0424633434 -0.06010073654 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.004550576625 0.005555984402 -0.01049579064 0 0 -0.005555984402 -0.006724400878 0.01265993678 0 0 --0.01049579064 0.01265993678 -0.02380298687 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0003879266926 0.000488041627 -0.001283626606 0 0 -0.000488041627 -0.0006117027454 0.001579152375 0 0 --0.001283626606 0.001579152375 -0.003689666362 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0005263989048 -0.0006889283072 0.0009876342629 0 0 --0.0006889283072 0.0009012792583 -0.001297857817 0 0 -0.0009876342629 -0.001297857817 0.001775557615 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0004664572784 -0.0006195378365 0.001149569737 0 0 --0.0006195378365 0.0008228346516 -0.001526415415 0 0 -0.001149569737 -0.001526415415 0.002824914066 0 0 -0 0 0 0 0 -0 0 0 0 0 -5.542558848e-05 -7.232915157e-05 0.0001256435813 0 0 --7.232915157e-05 9.433820213e-05 -0.0001639807285 0 0 -0.0001256435813 -0.0001639807285 0.0002848128712 0 0 -0 0 0 0 0 -0 0 0 0 0 --6.480197031e-05 8.294731135e-05 -9.688286635e-05 0 0 -8.294731135e-05 -0.0001059781373 0.0001265322197 0 0 --9.688286635e-05 0.0001265322197 -0.0001123264823 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.191337229e-05 3.943427151e-05 -8.202415254e-05 0 0 -3.943427151e-05 -4.841314665e-05 9.972628305e-05 0 0 --8.202415254e-05 9.972628305e-05 -0.0002023888815 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.010396602e-05 2.530847885e-05 -3.705146218e-05 0 0 -2.530847885e-05 -3.17440657e-05 4.705714843e-05 0 0 --3.705146218e-05 4.705714843e-05 -6.681282285e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.874717516e-06 -2.375476014e-06 1.100661331e-06 0 0 --2.375476014e-06 3.001370661e-06 -1.589547312e-06 0 0 -1.100661331e-06 -1.589547312e-06 -3.758812268e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 -8.325268635e-06 -1.096391122e-05 2.377122536e-05 0 0 --1.096391122e-05 1.443616244e-05 -3.122101424e-05 0 0 -2.377122536e-05 -3.122101424e-05 6.523180441e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.008408945048 0.003059250539 -0.008995710359 0.01315974614 0.01203797135 -0.003059250539 -0.001216133268 -0.001073444535 0.005948304345 0.001428204934 --0.008995710359 -0.001073444535 0.007546744576 -0.01517398233 -0.01009117246 -0.01315974614 0.005948304345 -0.01517398233 0.02001621034 0.02030979449 -0.01203797135 0.001428204934 -0.01009117246 0.02030979449 0.01349343125 -0.004934921748 -6.605110584e-05 -0.003419374082 0.008353207241 0.004581259964 --6.605110584e-05 -0.003274171945 0.003017392115 0.001996637913 -0.004041781252 --0.003419374082 0.003017392115 -0.0003270466678 -0.007700977252 0.0004373540131 -0.008353207241 0.001996637913 -0.007700977252 0.01278185743 0.01031714723 -0.004581259964 -0.004041781252 0.0004373540131 0.01031714723 -0.0005848643595 --7.747878063e-05 -0.001536237241 0.001480859987 0.00077888081 -0.001977092643 --0.001536237241 -0.00206854335 0.002870236485 -0.0009380661366 -0.003841307201 -0.001480859987 0.002870236485 -0.003584399823 0.0003986635464 0.004794165295 -0.00077888081 -0.0009380661366 0.0003986635464 0.00162197473 -0.000526911122 --0.001977092643 -0.003841307201 0.004794165295 -0.000526911122 -0.006412213064 --0.000684791267 -0.0005297939715 0.0008785744099 -0.0005350900308 -0.001174802785 --0.0005297939715 -0.0002997902463 0.0005331982637 -0.0003418902831 -0.0007140939699 -0.0008785744099 0.0005331982637 -0.0009321941334 0.0005905708745 0.001247988835 --0.0005350900308 -0.0003418902831 0.0005905708745 -0.0003709127412 -0.0007904250762 --0.001174802785 -0.0007140939699 0.001247988835 -0.0007904250762 -0.001670749994 --8.809744863e-05 -2.06373864e-05 4.473742227e-05 -3.253807882e-05 -5.992142976e-05 --2.06373864e-05 2.218691117e-05 -3.583369002e-05 3.633952313e-05 4.767768127e-05 -4.473742227e-05 -3.583369002e-05 5.666175773e-05 -5.882564773e-05 -7.534776637e-05 --3.253807882e-05 3.633952313e-05 -5.882564773e-05 5.950493992e-05 7.82737711e-05 --5.992142976e-05 4.767768127e-05 -7.534776637e-05 7.82737711e-05 0.0001001945769 -3.645900751e-05 1.036265549e-05 -3.867646624e-05 6.149346465e-05 5.175308698e-05 -1.036265549e-05 -1.374408191e-05 6.3191981e-06 2.426791958e-05 -8.483844441e-06 --3.867646624e-05 6.3191981e-06 2.307076127e-05 -7.227664147e-05 -3.084189318e-05 -6.149346465e-05 2.426791958e-05 -7.227664147e-05 0.0001009554551 9.672501002e-05 -5.175308698e-05 -8.483844441e-06 -3.084189318e-05 9.672501002e-05 4.123056112e-05 --1.803857789e-05 -1.28716696e-05 2.27847902e-05 -1.424941214e-05 -3.046283084e-05 --1.28716696e-05 -6.754039425e-06 1.317209662e-05 -8.12150087e-06 -1.763434096e-05 -2.27847902e-05 1.317209662e-05 -2.486110416e-05 1.540036162e-05 3.326865931e-05 --1.424941214e-05 -8.12150087e-06 1.540036162e-05 -9.533415116e-06 -2.060977317e-05 --3.046283084e-05 -1.763434096e-05 3.326865931e-05 -2.060977317e-05 -4.451922758e-05 --1.533272476e-05 -8.672676947e-06 1.535215122e-05 -1.07126847e-05 -2.053560681e-05 --8.672676947e-06 -2.605133259e-06 5.06580341e-06 -3.237855473e-06 -6.802110124e-06 -1.535215122e-05 5.06580341e-06 -9.681777075e-06 6.288748069e-06 1.299144278e-05 --1.07126847e-05 -3.237855473e-06 6.288748069e-06 -4.02392486e-06 -8.443834869e-06 --2.053560681e-05 -6.802110124e-06 1.299144278e-05 -8.443834869e-06 -1.743203759e-05 -3.763558324e-06 3.510407091e-06 -7.141249651e-06 7.166218466e-06 9.547549772e-06 -3.510407091e-06 1.937443314e-06 -4.731298131e-06 5.855766418e-06 6.320825402e-06 --7.141249651e-06 -4.731298131e-06 1.076512469e-05 -1.2401951e-05 -1.438570396e-05 -7.166218466e-06 5.855766418e-06 -1.2401951e-05 1.31318825e-05 1.657796032e-05 -9.547549772e-06 6.320825402e-06 -1.438570396e-05 1.657796032e-05 1.922395314e-05 --4.404706809e-07 2.249661026e-07 -7.684890614e-08 3.321865959e-07 1.0365534e-07 -2.249661026e-07 6.336141522e-07 -9.00108473e-07 9.912100185e-07 1.202427059e-06 --7.684890614e-08 -9.00108473e-07 1.165454204e-06 -1.398896286e-06 -1.557358493e-06 -3.321865959e-07 9.912100185e-07 -1.398896286e-06 1.549874763e-06 1.868780032e-06 -1.0365534e-07 1.202427059e-06 -1.557358493e-06 1.868780032e-06 2.081045341e-06 --1.298703921e-06 -1.47260287e-06 2.208998155e-06 -1.044897716e-06 -2.952783369e-06 --1.47260287e-06 -1.293155996e-06 2.100015456e-06 -1.221365625e-06 -2.809940676e-06 -2.208998155e-06 2.100015456e-06 -3.322325579e-06 1.816578091e-06 4.444023054e-06 --1.044897716e-06 -1.221365625e-06 1.816578091e-06 -8.371451825e-07 -2.427957534e-06 --2.952783369e-06 -2.809940676e-06 4.444023054e-06 -2.427957534e-06 -5.944408589e-06 -9.517404024e-07 5.677891284e-07 -1.365688338e-06 1.611464256e-06 1.826408638e-06 -5.677891284e-07 5.682949646e-08 -4.716978778e-07 9.656207432e-07 6.298564071e-07 --1.365688338e-06 -4.716978778e-07 1.542230239e-06 -2.317527329e-06 -2.061326532e-06 -1.611464256e-06 9.656207432e-07 -2.317527329e-06 2.72842884e-06 3.099368879e-06 -1.826408638e-06 6.298564071e-07 -2.061326532e-06 3.099368879e-06 2.755140196e-06 -1.952799426e-07 1.164240281e-08 -1.357234949e-07 3.097393599e-07 1.818645788e-07 -1.164240281e-08 -9.005501513e-08 6.508792072e-08 8.640530109e-08 -8.731285575e-08 --1.357234949e-07 6.508792072e-08 3.531889153e-08 -2.700607049e-07 -4.72475005e-08 -3.097393599e-07 8.640530109e-08 -2.700607049e-07 4.404246759e-07 3.619444996e-07 -1.818645788e-07 -8.731285575e-08 -4.72475005e-08 3.619444996e-07 6.32046009e-08 --0.01901098939 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.02109417213 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.004164857238 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.003952747571 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -3.486574325e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -7.098553309e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.411505152e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --4.141928545e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.330916411e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -4.282033867e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --8.527670322e-07 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.460545251e-08 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.963767937e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.04958747566 0.02820840386 0.002185837076 0 0 -0.02820840386 -0.01391305267 -0.01611530802 0 0 -0.002185837076 -0.01611530802 0.1035642724 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.01928989655 0.01608133152 -0.02690696153 0 0 -0.01608133152 -0.009104697537 0.01362627921 0 0 --0.02690696153 0.01362627921 -0.01950883928 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.001574581239 0.0003301324609 0.0001429223036 0 0 -0.0003301324609 -0.0004443313812 0.001318629979 0 0 -0.0001429223036 0.001318629979 -0.003220717743 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0041072926 0.0007950217554 -0.0008061940954 0 0 -0.0007950217554 -3.814573938e-05 8.545401299e-05 0 0 --0.0008061940954 8.545401299e-05 -0.0001151832872 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0003061874919 -1.153260852e-05 -0.0001018520985 0 0 --1.153260852e-05 4.83344672e-05 -0.0001310046838 0 0 --0.0001018520985 -0.0001310046838 0.0002977204038 0 0 -0 0 0 0 0 -0 0 0 0 0 -8.3033521e-05 -0.0001025898469 0.0001833397017 0 0 --0.0001025898469 6.331142793e-05 -0.0001234969229 0 0 -0.0001833397017 -0.0001234969229 0.0002375143344 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0001176812277 2.639998478e-05 -3.108401459e-05 0 0 -2.639998478e-05 -3.710570266e-06 5.83471232e-06 0 0 --3.108401459e-05 5.83471232e-06 -7.624425636e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.141508929e-05 1.427747537e-05 -2.9422774e-05 0 0 -1.427747537e-05 -1.181182239e-05 8.816054299e-06 0 0 --2.9422774e-05 8.816054299e-06 5.702531855e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 -4.415324274e-05 -2.125650995e-05 5.602502845e-05 0 0 --2.125650995e-05 9.597680034e-06 -2.797335558e-05 0 0 -5.602502845e-05 -2.797335558e-05 6.951132081e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -2.256428294e-05 -1.012660043e-05 2.626972832e-05 0 0 --1.012660043e-05 4.372508699e-06 -1.220071269e-05 0 0 -2.626972832e-05 -1.220071269e-05 2.960198613e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.430297487e-06 3.214588814e-06 -3.002594042e-06 0 0 -3.214588814e-06 -1.875595985e-06 -7.597158425e-07 0 0 --3.002594042e-06 -7.597158425e-07 8.604480291e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.582336728e-06 1.233815067e-06 4.606470926e-06 0 0 -1.233815067e-06 -5.545412311e-07 -3.060974717e-06 0 0 -4.606470926e-06 -3.060974717e-06 1.293868653e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -6.747281084e-06 -3.898212807e-06 1.144145644e-05 0 0 --3.898212807e-06 1.936456431e-06 -7.01632092e-06 0 0 -1.144145644e-05 -7.01632092e-06 1.887916112e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.04361826973 0.03114146501 -0.02152787247 -0.01536846247 -0.0006924740239 -0.03114146501 -0.01549558917 -0.01086650712 0.02139199573 0.006646742997 --0.02152787247 -0.01086650712 0.09153426888 -0.0481570016 -0.0242977778 --0.01536846247 0.02139199573 -0.0481570016 0.01069790372 0.009269970208 --0.0006924740239 0.006646742997 -0.0242977778 0.009269970208 0.005606603012 --0.0204171467 0.01948868647 -0.02879686195 -0.0001052269402 0.004002235014 -0.01948868647 -0.01660212192 0.02161044934 0.00127517119 -0.003701213513 --0.02879686195 0.02161044934 -0.02334972553 -0.003599729816 0.005295172053 --0.0001052269402 0.00127517119 -0.003599729816 0.0006893399334 9.052470641e-05 -0.004002235014 -0.003701213513 0.005295172053 9.052470641e-05 -0.0007774490958 --0.0004883415359 0.001626045361 -0.002979026203 0.0001378040237 8.067686361e-05 -0.001626045361 -0.00267897386 0.005206845422 -0.0008081186812 -0.000922697078 --0.002979026203 0.005206845422 -0.01005404974 0.001442377593 0.001618999743 -0.0001378040237 -0.0008081186812 0.001442377593 5.710944616e-06 6.075051546e-05 -8.067686361e-05 -0.000922697078 0.001618999743 6.075051546e-05 0.0001430706945 --0.001739644006 0.0002258940096 0.0002746239473 -0.0002219577606 0.0002318178735 -0.0002258940096 0.0003013258616 -0.0002540849372 -0.0001558272531 -9.549617892e-05 -0.0002746239473 -0.0002540849372 0.0001009333668 0.0001570130947 6.602714209e-06 --0.0002219577606 -0.0001558272531 0.0001570130947 7.479366293e-05 6.609523492e-05 -0.0002318178735 -9.549617892e-05 6.602714209e-06 6.609523492e-05 -1.795801084e-05 --0.0004412044984 0.0001396644913 -0.0004272709082 0.0001836104589 0.0001936103665 -0.0001396644913 0.0002251724277 -0.0004498792341 0.0001117426627 0.0001195814554 --0.0004272709082 -0.0004498792341 0.000857200661 -0.0001911550721 -0.000205373589 -0.0001836104589 0.0001117426627 -0.0001911550721 3.070087806e-05 3.347831277e-05 -0.0001936103665 0.0001195814554 -0.000205373589 3.347831277e-05 3.647862348e-05 -0.0001300508397 -6.91356395e-05 0.0001171229497 -1.523044107e-05 -2.909939158e-05 --6.91356395e-05 2.601881365e-05 -4.599374823e-05 3.591680608e-06 5.787531258e-06 -0.0001171229497 -4.599374823e-05 8.082098425e-05 -6.8884486e-06 -1.153212529e-05 --1.523044107e-05 3.591680608e-06 -6.8884486e-06 -1.069720544e-07 -6.554408973e-07 --2.909939158e-05 5.787531258e-06 -1.153212529e-05 -6.554408973e-07 -2.221699315e-06 --4.257900989e-05 1.404360423e-05 -1.909402694e-05 3.977186985e-06 1.374719464e-05 -1.404360423e-05 1.872106041e-06 -6.832684424e-07 -2.84310885e-06 -4.68669803e-06 --1.909402694e-05 -6.832684424e-07 -1.069644342e-06 3.427141768e-06 6.328478411e-06 -3.977186985e-06 -2.84310885e-06 3.427141768e-06 -1.095450799e-08 -1.248173744e-06 -1.374719464e-05 -4.68669803e-06 6.328478411e-06 -1.248173744e-06 -4.434885693e-06 -1.419731619e-05 1.460090454e-05 -3.491320492e-05 8.959550251e-06 6.734527871e-06 -1.460090454e-05 -1.489075228e-05 3.420071045e-06 1.093743446e-05 1.252615827e-06 --3.491320492e-05 3.420071045e-06 3.414520428e-05 -2.429870334e-05 -9.100992184e-06 -8.959550251e-06 1.093743446e-05 -2.429870334e-05 5.554846661e-06 4.576874302e-06 -6.734527871e-06 1.252615827e-06 -9.100992184e-06 4.576874302e-06 2.118292908e-06 -1.915479779e-05 -1.73312615e-05 4.765364264e-05 -1.758853029e-05 -1.627010226e-05 --1.73312615e-05 1.02900897e-05 -2.497238727e-05 7.7623309e-06 7.657357023e-06 -4.765364264e-05 -2.497238727e-05 5.748638945e-05 -1.632162508e-05 -1.670316385e-05 --1.758853029e-05 7.7623309e-06 -1.632162508e-05 3.824519207e-06 4.258907614e-06 --1.627010226e-05 7.657357023e-06 -1.670316385e-05 4.258907614e-06 4.564499735e-06 -1.965834363e-07 -7.545319285e-07 1.892797553e-06 -6.354428755e-07 -5.670200824e-07 --7.545319285e-07 2.698564888e-06 -7.524818753e-06 2.804848766e-06 2.387631343e-06 -1.892797553e-06 -7.524818753e-06 1.788290866e-05 -5.636997501e-06 -5.181576219e-06 --6.354428755e-07 2.804848766e-06 -5.636997501e-06 1.376234336e-06 1.441453983e-06 --5.670200824e-07 2.387631343e-06 -5.181576219e-06 1.441453983e-06 1.409477998e-06 --5.394755528e-06 5.669207243e-06 -7.244963281e-06 -4.866500582e-07 1.172614579e-06 -5.669207243e-06 -4.229918379e-06 2.734486229e-06 1.962597981e-06 -2.871021323e-07 --7.244963281e-06 2.734486229e-06 4.048791756e-06 -4.751733686e-06 -1.094386931e-06 --4.866500582e-07 1.962597981e-06 -4.751733686e-06 1.175032566e-06 8.996762223e-07 -1.172614579e-06 -2.871021323e-07 -1.094386931e-06 8.996762223e-07 2.621875152e-07 --6.200943117e-06 3.253982691e-06 -7.742624912e-07 -2.465548308e-06 -3.023656973e-07 -3.253982691e-06 -1.381935999e-06 -1.415829612e-06 2.179641948e-06 6.838286013e-07 --7.742624912e-07 -1.415829612e-06 1.010000039e-05 -5.264982442e-06 -2.976564313e-06 --2.465548308e-06 2.179641948e-06 -5.264982442e-06 1.42959225e-06 1.308483693e-06 --3.023656973e-07 6.838286013e-07 -2.976564313e-06 1.308483693e-06 8.322583451e-07 --3.260220013e-07 -1.55854063e-07 1.987690962e-06 -1.248650567e-06 -7.964113637e-07 --1.55854063e-07 1.468741481e-06 -5.514765738e-06 2.442675028e-06 1.786220884e-06 -1.987690962e-06 -5.514765738e-06 1.496455078e-05 -5.120687091e-06 -4.222206986e-06 --1.248650567e-06 2.442675028e-06 -5.120687091e-06 1.204515936e-06 1.217803804e-06 --7.964113637e-07 1.786220884e-06 -4.222206986e-06 1.217803804e-06 1.097218425e-06 --0.01499974137 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.01795732663 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.006592506506 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0009320343618 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0001693211745 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -9.935805547e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --4.268973276e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -8.917967019e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -2.807139071e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.208705663e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.27129861e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -6.375676492e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.586838197e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0001534549007 0.01260090242 0.01445076221 0 0 -0.01260090242 -0.05964637109 -0.0003583838773 0 0 -0.01445076221 -0.0003583838773 0.08237085114 0 0 -0 0 0 0 0 -0 0 0 0 0 --8.828801302e-05 0.007165025666 -0.003791519029 0 0 -0.007165025666 -0.006897373626 0.01407704146 0 0 --0.003791519029 0.01407704146 -0.01277766857 0 0 -0 0 0 0 0 -0 0 0 0 0 -5.129400909e-06 -0.0004102393072 -0.0002341648059 0 0 --0.0004102393072 -0.001553475786 -0.0006886377414 0 0 --0.0002341648059 -0.0006886377414 -0.0002811484577 0 0 -0 0 0 0 0 -0 0 0 0 0 --4.51952137e-08 1.078050413e-05 -4.789953858e-06 0 0 -1.078050413e-05 -0.00230558558 0.0009949422473 0 0 --4.789953858e-06 0.0009949422473 -0.0004257109647 0 0 -0 0 0 0 0 -0 0 0 0 0 -7.245934563e-08 -5.364593343e-06 -7.270118165e-06 0 0 --5.364593343e-06 -0.0001612981764 -6.297930661e-05 0 0 --7.270118165e-06 -6.297930661e-05 8.217703896e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.075557519e-06 -8.688569523e-05 8.259313724e-05 0 0 --8.688569523e-05 -4.586320312e-05 -0.0001156360585 0 0 -8.259313724e-05 -0.0001156360585 0.0002577006046 0 0 -0 0 0 0 0 -0 0 0 0 0 -5.827336772e-08 -5.076394105e-06 4.272596507e-06 0 0 --5.076394105e-06 0.0001169291236 -8.904443627e-05 0 0 -4.272596507e-06 -8.904443627e-05 6.678877514e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.545787598e-08 2.162432461e-06 6.755891049e-07 0 0 -2.162432461e-06 -3.318761329e-05 5.412991826e-06 0 0 -6.755891049e-07 5.412991826e-06 8.276534393e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 --8.156520724e-08 6.638282558e-06 5.538711327e-06 0 0 -6.638282558e-06 -1.247212495e-05 8.413514075e-06 0 0 -5.538711327e-06 8.413514075e-06 2.339338127e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -3.1562535e-08 -2.621331377e-06 5.070569851e-06 0 0 --2.621331377e-06 2.184286454e-05 -3.150782784e-05 0 0 -5.070569851e-06 -3.150782784e-05 3.957534662e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -3.653700225e-08 -3.030283065e-06 3.870872537e-06 0 0 --3.030283065e-06 2.393006956e-05 -2.6709225e-05 0 0 -3.870872537e-06 -2.6709225e-05 2.912335896e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.325778774e-08 -1.086257835e-06 3.427139884e-06 0 0 --1.086257835e-06 4.375953977e-06 -9.826946335e-06 0 0 -3.427139884e-06 -9.826946335e-06 1.826259664e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --6.269601587e-09 5.170068445e-07 1.896427001e-06 0 0 -5.170068445e-07 -3.14263478e-06 -4.27428751e-06 0 0 -1.896427001e-06 -4.27428751e-06 1.22589917e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.005716519908 0.0009292567033 0.0006760145412 0.03226836972 0.03287462069 -0.0009292567033 -0.0001442497262 -0.0001214830465 0.0137709621 0.01045022268 -0.0006760145412 -0.0001214830465 -0.0001013389575 0.01049572276 0.007888390812 -0.03226836972 0.0137709621 0.01049572276 -0.06398616201 0.03815132229 -0.03287462069 0.01045022268 0.007888390812 0.03815132229 0.1007618729 --0.01011302241 -0.003846386441 -0.002682916642 0.01189353872 -0.01612193726 --0.003846386441 -0.0001496566527 -2.873699766e-05 0.005707648012 -0.004345907058 --0.002682916642 -2.873699766e-05 3.708107498e-05 0.004049384029 -0.002928463594 -0.01189353872 0.005707648012 0.004049384029 -0.01291997928 0.02057058183 --0.01612193726 -0.004345907058 -0.002928463594 0.02057058183 -0.0232725689 --0.0001603139231 -0.0005147217884 -0.0002699747909 -0.0001264857719 -0.0007968782317 --0.0005147217884 -8.942001712e-06 4.777263176e-06 -0.0001676872859 -0.001160035125 --0.0002699747909 4.777263176e-06 7.525945202e-06 -8.657974683e-05 -0.0006003904145 --0.0001264857719 -0.0001676872859 -8.657974683e-05 -6.521176036e-05 -0.0004258681884 --0.0007968782317 -0.001160035125 -0.0006003904145 -0.0004258681884 -0.002771161149 --0.0006354366096 0.0002438765936 2.285012266e-05 0.001026418229 -0.0004788134039 -0.0002438765936 1.047457079e-05 -1.127744793e-06 -0.0004031011009 0.0002497950575 -2.285012266e-05 -1.127744793e-06 -2.605387941e-07 -3.75829266e-05 2.206648772e-05 -0.001026418229 -0.0004031011009 -3.75829266e-05 -0.001657161619 0.0007676085796 --0.0004788134039 0.0002497950575 2.206648772e-05 0.0007676085796 -0.0003189022104 -2.504366086e-05 2.165540652e-05 -9.928751834e-06 2.553746617e-05 7.660784646e-05 -2.165540652e-05 2.615985403e-07 -3.941487267e-07 1.630846666e-05 5.450952933e-05 --9.928751834e-06 -3.941487267e-07 3.023618824e-07 -7.562991032e-06 -2.51662429e-05 -2.553746617e-05 1.630846666e-05 -7.562991032e-06 2.423541864e-05 7.444907933e-05 -7.660784646e-05 5.450952933e-05 -2.51662429e-05 7.444907933e-05 0.0002268844971 -6.5461e-05 6.999474315e-05 3.017647903e-05 -2.127703274e-05 0.0001864319966 -6.999474315e-05 2.01194924e-06 -2.724362197e-07 -4.239323057e-05 0.0001174482024 -3.017647903e-05 -2.724362197e-07 -6.267055846e-07 -1.858419582e-05 4.935313404e-05 --2.127703274e-05 -4.239323057e-05 -1.858419582e-05 1.618100678e-06 -8.268419687e-05 -0.0001864319966 0.0001174482024 4.935313404e-05 -8.268419687e-05 0.0004388661854 -9.267894014e-06 -3.10310749e-06 4.49161672e-07 -4.299839423e-06 1.496940759e-05 --3.10310749e-06 -3.885247653e-08 5.159269029e-08 -2.328550192e-06 -7.805403537e-06 -4.49161672e-07 5.159269029e-08 -1.608216286e-08 4.977590778e-07 1.248930223e-06 --4.299839423e-06 -2.328550192e-06 4.977590778e-07 -1.117915852e-05 -1.671065155e-05 -1.496940759e-05 -7.805403537e-06 1.248930223e-06 -1.671065155e-05 1.693945236e-05 --1.082591459e-05 -4.333633073e-06 -8.473379908e-07 1.439089666e-05 -1.445573315e-05 --4.333633073e-06 -2.04501366e-07 -3.940586925e-09 9.32806445e-06 -3.050860317e-06 --8.473379908e-07 -3.940586925e-09 7.126220734e-09 1.907907256e-06 -5.320818106e-07 -1.439089666e-05 9.32806445e-06 1.907907256e-06 -1.081354502e-05 2.559374189e-05 --1.445573315e-05 -3.050860317e-06 -5.320818106e-07 2.559374189e-05 -1.441154219e-05 -7.433420446e-06 2.848267873e-06 1.113376978e-06 5.507066566e-06 2.092714049e-05 -2.848267873e-06 -1.28043169e-08 -6.187210417e-08 5.988884503e-06 9.561901962e-06 -1.113376978e-06 -6.187210417e-08 -4.934338158e-08 2.540793488e-06 3.817190098e-06 -5.507066566e-06 5.988884503e-06 2.540793488e-06 -9.545264036e-06 1.008285262e-05 -2.092714049e-05 9.561901962e-06 3.817190098e-06 1.008285262e-05 5.675881967e-05 -1.883468185e-05 -2.377128003e-07 1.524481911e-06 -1.04675281e-05 3.383927484e-05 --2.377128003e-07 -6.965300214e-09 2.138352733e-08 -1.312586878e-07 -5.480727382e-07 -1.524481911e-06 2.138352733e-08 -4.221115356e-08 2.263764732e-07 3.232155536e-06 --1.04675281e-05 -1.312586878e-07 2.263764732e-07 -1.142965364e-06 -2.200391373e-05 -3.383927484e-05 -5.480727382e-07 3.232155536e-06 -2.200391373e-05 5.93283818e-05 -5.438109516e-06 1.241927754e-06 6.188624766e-07 -5.323386284e-07 1.182715408e-05 -1.241927754e-06 1.685851937e-08 -1.38159415e-08 7.393657108e-07 3.007450411e-06 -6.188624766e-07 -1.38159415e-08 -1.980557382e-08 4.401319078e-07 1.524155953e-06 --5.323386284e-07 7.393657108e-07 4.401319078e-07 -2.726404355e-06 -2.146693688e-06 -1.182715408e-05 3.007450411e-06 1.524155953e-06 -2.146693688e-06 2.537048392e-05 -2.199753975e-06 5.2253497e-07 2.744444677e-07 2.219939008e-06 6.299560312e-06 -5.2253497e-07 -7.215143583e-09 -1.454339285e-08 1.507908094e-06 2.008350033e-06 -2.744444677e-07 -1.454339285e-08 -1.416707626e-08 8.722678918e-07 1.096737058e-06 -2.219939008e-06 1.507908094e-06 8.722678918e-07 -5.080677061e-06 2.535249796e-06 -6.299560312e-06 2.008350033e-06 1.096737058e-06 2.535249796e-06 1.604497138e-05 -4.219275618e-06 5.140307624e-07 4.140939002e-07 6.123586979e-07 9.618071761e-06 -5.140307624e-07 2.997549116e-09 -7.543630994e-09 6.310055228e-07 1.446938625e-06 -4.140939002e-07 -7.543630994e-09 -1.576250836e-08 6.012532872e-07 1.211585884e-06 -6.123586979e-07 6.310055228e-07 6.012532872e-07 -5.103183828e-06 -1.171904277e-06 -9.618071761e-06 1.446938625e-06 1.211585884e-06 -1.171904277e-06 2.065497699e-05 --0.0318418997 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.03822371433 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.01343707934 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.002782292055 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0002571154753 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0001696917718 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.570599087e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.061218118e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.098200865e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -3.967275382e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -2.332292186e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -8.332302903e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.968817067e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0002146097878 -0.0003568701584 -0.006425022298 0 0 --0.0003568701584 0.0005480895392 0.007382616903 0 0 --0.006425022298 0.007382616903 -0.04802564559 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0001426359829 -0.0002334888786 -0.01865428781 0 0 --0.0002334888786 0.0003485801891 0.02137945202 0 0 --0.01865428781 0.02137945202 -0.05349969839 0 0 -0 0 0 0 0 -0 0 0 0 0 --5.437674887e-06 9.280589891e-06 0.0001396390734 0 0 -9.280589891e-06 -1.489921069e-05 -0.0001822774151 0 0 -0.0001396390734 -0.0001822774151 -0.0002446670218 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.345734619e-06 4.887155731e-06 0.0003051648857 0 0 -4.887155731e-06 -1.017842152e-05 -0.0006248635968 0 0 -0.0003051648857 -0.0006248635968 -0.006438243355 0 0 -0 0 0 0 0 -0 0 0 0 0 -4.157939775e-09 -1.199469897e-08 6.658784897e-07 0 0 --1.199469897e-08 3.218614034e-08 -2.070973268e-06 0 0 -6.658784897e-07 -2.070973268e-06 9.731594209e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.792384458e-06 3.173901223e-06 0.0002749678373 0 0 -3.173901223e-06 -5.398470131e-06 -0.0003898140719 0 0 -0.0002749678373 -0.0003898140719 0.000321874792 0 0 -0 0 0 0 0 -0 0 0 0 0 -4.164667155e-08 -7.499153185e-08 -7.023269757e-06 0 0 --7.499153185e-08 1.307197424e-07 1.068142317e-05 0 0 --7.023269757e-06 1.068142317e-05 0.0002893793986 0 0 -0 0 0 0 0 -0 0 0 0 0 -8.974359218e-08 -1.427969368e-07 -8.399090062e-06 0 0 --1.427969368e-07 2.018747261e-07 8.693984996e-06 0 0 --8.399090062e-06 8.693984996e-06 -7.475227912e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -7.172929747e-08 -1.220469758e-07 1.146558941e-07 0 0 --1.220469758e-07 1.949466884e-07 -2.062099013e-07 0 0 -1.146558941e-07 -2.062099013e-07 1.735410943e-07 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.775722324e-08 6.632315303e-08 7.201826375e-06 0 0 -6.632315303e-08 -1.114444388e-07 -9.889278878e-06 0 0 -7.201826375e-06 -9.889278878e-06 0.0001340847929 0 0 -0 0 0 0 0 -0 0 0 0 0 --4.857171155e-08 8.384239951e-08 8.851332506e-06 0 0 -8.384239951e-08 -1.370939805e-07 -1.169138741e-05 0 0 -8.851332506e-06 -1.169138741e-05 7.343570112e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --8.878971932e-09 1.504299795e-08 3.962510345e-06 0 0 -1.504299795e-08 -2.385747681e-08 -5.004258363e-06 0 0 -3.962510345e-06 -5.004258363e-06 2.506128562e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -5.670307053e-09 -9.552760378e-09 1.214169808e-06 0 0 --9.552760378e-09 1.500655191e-08 -1.526068911e-06 0 0 -1.214169808e-06 -1.526068911e-06 1.175716914e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0142238013 -0.003046238214 -0.0010424388 0.02612833257 0.0009845522697 --0.003046238214 1.986640137e-06 4.441814739e-05 -0.00527836535 -9.387808393e-05 --0.0010424388 4.441814739e-05 2.72263243e-05 -0.001827629098 -3.999205019e-05 -0.02612833257 -0.00527836535 -0.001827629098 0.04784139909 0.001751481512 -0.0009845522697 -9.387808393e-05 -3.999205019e-05 0.001751481512 4.711043688e-05 --0.02396627832 0.008876268603 0.003140491698 -0.04482420269 -0.002333609662 -0.008876268603 2.238576239e-06 0.0001286382128 0.01537188176 -0.0002724922299 -0.003140491698 0.0001286382128 9.571457739e-05 0.005390910439 -0.000140588039 --0.04482420269 0.01537188176 0.005390910439 -0.0833753772 -0.003939718409 --0.002333609662 -0.0002724922299 -0.000140588039 -0.003939718409 0.0001655977468 --0.001053692081 0.00147903607 0.0008574349219 -0.00252350884 -0.0009859307917 -0.00147903607 1.95359506e-07 1.573975987e-05 0.002561558181 -3.335302844e-05 -0.0008574349219 1.573975987e-05 1.830143209e-05 0.001477620257 -3.0002328e-05 --0.00252350884 0.002561558181 0.001477620257 -0.005580462445 -0.001691852952 --0.0009859307917 -3.335302844e-05 -3.0002328e-05 -0.001691852952 4.491129214e-05 --0.001128829012 -0.0004380865898 -0.0005432594535 -0.001607028985 0.0007914332812 --0.0004380865898 -1.165217698e-07 -6.591546556e-06 -0.0007586457269 1.394264895e-05 --0.0005432594535 -6.591546556e-06 -1.592417544e-05 -0.0009356544925 2.841586155e-05 --0.001607028985 -0.0007586457269 -0.0009356544925 -0.00218057756 0.001359635906 -0.0007914332812 1.394264895e-05 2.841586155e-05 0.001359635906 -4.888650326e-05 -1.9700354e-05 -4.839008295e-05 -0.0001139935948 8.896048456e-05 0.0001657866566 --4.839008295e-05 -5.22188746e-09 -4.818430074e-07 -8.380681167e-05 1.018616371e-06 --0.0001139935948 -4.818430074e-07 -2.243052869e-06 -0.0001968934531 4.012201781e-06 -8.896048456e-05 -8.380681167e-05 -0.0001968934531 0.0002490573237 0.0002859919106 -0.0001657866566 1.018616371e-06 4.012201781e-06 0.0002859919106 -6.926784978e-06 -0.0001726488699 -0.0001114454368 -5.617645589e-05 0.0003887359402 8.237101877e-05 --0.0001114454368 -2.030610914e-08 -1.36556812e-06 -0.0001930042197 2.89510051e-06 --5.617645589e-05 -1.36556812e-06 -1.397055591e-06 -9.61968735e-05 2.51533026e-06 -0.0003887359402 -0.0001930042197 -9.61968735e-05 0.0008286471968 0.0001403339069 -8.237101877e-05 2.89510051e-06 2.51533026e-06 0.0001403339069 -4.383806111e-06 --5.344027582e-06 -1.325339608e-06 -2.531246403e-06 -8.246412127e-06 3.621696189e-06 --1.325339608e-06 -7.772242101e-10 -3.40271418e-08 -2.294617925e-06 7.170990514e-08 --2.531246403e-06 -3.40271418e-08 -1.239112e-07 -4.357698122e-06 2.189798781e-07 --8.246412127e-06 -2.294617925e-06 -4.357698122e-06 -1.253530399e-05 6.217458571e-06 -3.621696189e-06 7.170990514e-08 2.189798781e-07 6.217458571e-06 -3.713462419e-07 --2.231077247e-05 1.052733928e-05 1.235308034e-05 -4.214290924e-05 -1.415086697e-05 -1.052733928e-05 3.154666688e-09 1.699266208e-07 1.823075704e-05 -3.588662663e-07 -1.235308034e-05 1.699266208e-07 4.000086824e-07 2.133716421e-05 -6.564031713e-07 --4.214290924e-05 1.823075704e-05 2.133716421e-05 -7.905326969e-05 -2.438778011e-05 --1.415086697e-05 -3.588662663e-07 -6.564031713e-07 -2.438778011e-05 9.843784283e-07 -2.715923302e-05 -6.530426255e-06 -2.976527295e-06 5.165692675e-05 3.72483092e-06 --6.530426255e-06 -3.691468485e-10 -5.355414197e-08 -1.13105948e-05 1.135969724e-07 --2.976527295e-06 -5.355414197e-08 -5.05572123e-08 -5.117558631e-06 8.608115381e-08 -5.165692675e-05 -1.13105948e-05 -5.117558631e-06 9.746671342e-05 6.371193157e-06 -3.72483092e-06 1.135969724e-07 8.608115381e-08 6.371193157e-06 -1.376526821e-07 -3.654415609e-05 -1.149658237e-06 4.577236265e-06 6.620965209e-05 -5.607802362e-06 --1.149658237e-06 -1.57097374e-10 -1.206673203e-08 -1.990937791e-06 2.589233234e-08 -4.577236265e-06 -1.206673203e-08 9.414014526e-08 7.958835829e-06 -1.556826532e-07 -6.620965209e-05 -1.990937791e-06 7.958835829e-06 0.0001197238373 -9.778899272e-06 --5.607802362e-06 2.589233234e-08 -1.556826532e-07 -9.778899272e-06 2.367683035e-07 -7.10032666e-06 -2.019189112e-06 -1.404232209e-06 1.344694017e-05 1.657570452e-06 --2.019189112e-06 -7.087335161e-11 -1.517298256e-08 -3.49725945e-06 3.218188818e-08 --1.404232209e-06 -1.517298256e-08 -2.146790904e-08 -2.423541206e-06 3.564183403e-08 -1.344694017e-05 -3.49725945e-06 -2.423541206e-06 2.52805206e-05 2.852652783e-06 -1.657570452e-06 3.218188818e-08 3.564183403e-08 2.852652783e-06 -5.458593271e-08 -2.015082036e-06 -3.93728341e-07 -1.570775172e-07 3.679528741e-06 1.48413374e-07 --3.93728341e-07 1.90511367e-10 3.617905471e-09 -6.821605253e-07 -7.634329178e-09 --1.570775172e-07 3.617905471e-09 2.692923356e-09 -2.738450409e-07 -4.031761659e-09 -3.679528741e-06 -6.821605253e-07 -2.738450409e-07 6.701166382e-06 2.607611073e-07 -1.48413374e-07 -7.634329178e-09 -4.031761659e-09 2.607611073e-07 4.983091858e-09 -9.623888616e-06 -1.375652412e-06 -1.837325971e-07 1.768947016e-05 1.414265972e-07 --1.375652412e-06 -8.631768673e-11 -1.154402678e-08 -2.382596581e-06 2.449474201e-08 --1.837325971e-07 -1.154402678e-08 -3.758174798e-09 -3.096637319e-07 5.892574793e-09 -1.768947016e-05 -2.382596581e-06 -3.096637319e-07 3.240635055e-05 2.267798698e-07 -1.414265972e-07 2.449474201e-08 5.892574793e-09 2.267798698e-07 -8.08325548e-09 --0.1884750384 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.03804667044 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.2335465456 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0916317287 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.005259901558 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0008621332752 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.001781731719 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.002843779821 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0002417054653 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0006771366955 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.508013382e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -2.730688416e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --7.490743855e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.1983655323 0.01570148605 0.05697087413 0 0 -0.01570148605 -0.2227145256 -0.07260989366 0 0 -0.05697087413 -0.07260989366 -0.03562596461 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.1281129121 -0.01136453683 0.0442395668 0 0 --0.01136453683 -0.09334232534 -0.06423228921 0 0 -0.0442395668 -0.06423228921 -0.0337483399 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.01819113172 0.001792384944 0.01158247127 0 0 -0.001792384944 -0.01667967919 -0.01525592247 0 0 -0.01158247127 -0.01525592247 0.04971763963 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.009224602102 0.01568283176 -0.02165957006 0 0 -0.01568283176 -0.01832059187 0.02872377933 0 0 --0.02165957006 0.02872377933 -0.03668171182 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0001400078663 0.0001179685558 -0.0001627126451 0 0 -0.0001179685558 -0.0002753706408 3.210031016e-05 0 0 --0.0001627126451 3.210031016e-05 -7.919822936e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0002120552677 -0.0006080296749 0.0009031575071 0 0 --0.0006080296749 0.0003839275022 -0.001122633264 0 0 -0.0009031575071 -0.001122633264 0.002125731108 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0002695723514 0.0006162979959 -0.0007451425126 0 0 -0.0006162979959 -0.0004011638284 0.0008548211668 0 0 --0.0007451425126 0.0008548211668 -0.0002965008556 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.224962703e-05 -8.359720145e-05 0.0001774125753 0 0 --8.359720145e-05 3.73612241e-05 -0.0002294260691 0 0 -0.0001774125753 -0.0002294260691 0.0002873458453 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.519526434e-05 2.549321681e-05 -5.546752779e-05 0 0 -2.549321681e-05 -0.0001537898079 0.0001175644889 0 0 --5.546752779e-05 0.0001175644889 -0.0003398509268 0 0 -0 0 0 0 0 -0 0 0 0 0 -6.050182445e-05 4.2559219e-05 -2.227210607e-05 0 0 -4.2559219e-05 3.57198938e-05 2.628958522e-05 0 0 --2.227210607e-05 2.628958522e-05 0.0002600178291 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.340705173e-05 -4.138734643e-05 7.115878952e-05 0 0 --4.138734643e-05 8.742909095e-05 -0.0001256961103 0 0 -7.115878952e-05 -0.0001256961103 0.0002740945421 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.311832057e-05 2.743133743e-05 -4.397885349e-05 0 0 -2.743133743e-05 -2.880345629e-05 5.354657334e-05 0 0 --4.397885349e-05 5.354657334e-05 -7.65264247e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -2.622974416e-05 -2.573075501e-06 1.881809377e-05 0 0 --2.573075501e-06 1.05164645e-05 -1.930817287e-05 0 0 -1.881809377e-05 -1.930817287e-05 7.891568242e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.02219939135 0.0429105523 0.01940823098 0.1248566064 0.0387039774 -0.0429105523 -0.04228507136 -0.02843818321 0.03619132265 0.01503486553 -0.01940823098 -0.02843818321 0.2144776246 -0.02687344496 -0.002377966256 -0.1248566064 0.03619132265 -0.02687344496 0.06983823867 -0.003065848942 -0.0387039774 0.01503486553 -0.002377966256 -0.003065848942 0.2237073806 --0.1071058392 0.04821632753 -0.04666484158 -0.03116882642 -0.04208534055 -0.04821632753 -0.04774873215 0.03473831656 0.03948130897 -0.007266493872 --0.04666484158 0.03473831656 -0.02555628957 0.02729244956 0.0008598799725 --0.03116882642 0.03948130897 0.02729244956 -0.1688514849 0.01454681417 --0.04208534055 -0.007266493872 0.0008598799725 0.01454681417 -0.02770897212 --0.01189785056 0.0186676715 -0.02960388008 0.005388778149 0.004271395994 -0.0186676715 -0.01196612276 0.003804246593 0.02341262305 0.009221452762 --0.02960388008 0.003804246593 -0.00766565233 -0.008550566255 -0.02811531205 -0.005388778149 0.02341262305 -0.008550566255 -0.02090153205 0.02856893763 -0.004271395994 0.009221452762 -0.02811531205 0.02856893763 0.01436620452 -0.004945249096 -7.418231918e-05 -0.002969553082 0.00716497545 0.004476166538 --7.418231918e-05 -0.00322128252 0.001488087848 0.002860935819 -0.002817901378 --0.002969553082 0.001488087848 0.0009696868408 -0.007635808717 -0.001880954211 -0.00716497545 0.002860935819 -0.007635808717 0.01183961167 0.009709507914 -0.004476166538 -0.002817901378 -0.001880954211 0.009709507914 0.0005041480518 --0.001628343591 -0.001488415245 0.002247334679 -0.001502327563 -0.00354885376 --0.001488415245 -0.002076051225 0.003342738206 -0.001816387966 -0.004170646892 -0.002247334679 0.003342738206 -0.005237396565 0.003293769119 0.00618478291 --0.001502327563 -0.001816387966 0.003293769119 -0.002925920319 -0.003492900754 --0.00354885376 -0.004170646892 0.00618478291 -0.003492900754 -0.008642975809 --0.0002945909202 -0.0006123799599 0.00108702394 -0.0003297400063 -0.001102705631 --0.0006123799599 -0.000347405514 0.000520830729 -0.0006910925081 -0.0008360931032 -0.00108702394 0.000520830729 -0.00082643917 0.000994557718 0.001715099744 --0.0003297400063 -0.0006910925081 0.000994557718 0.0003255922377 -0.001769623298 --0.001102705631 -0.0008360931032 0.001715099744 -0.001769623298 -0.001727881922 -0.0005989589676 0.0002986991886 -0.0006378281844 0.0007411339463 0.0009518787605 -0.0002986991886 0.000147398 -0.0003718588628 0.0004292332507 0.0004755830281 --0.0006378281844 -0.0003718588628 0.0008361266076 -0.000926893415 -0.001065180702 -0.0007411339463 0.0004292332507 -0.000926893415 0.001049744173 0.001206392782 -0.0009518787605 0.0004755830281 -0.001065180702 0.001206392782 0.001505469087 --0.00022668253 5.891102412e-05 -8.569562664e-05 -8.739984268e-05 -0.0001248226672 -5.891102412e-05 -0.0001046306194 0.0001319922425 4.579107133e-05 -9.594801157e-05 --8.569562664e-05 0.0001319922425 -0.0001941435982 4.909340385e-05 7.189859602e-05 --8.739984268e-05 4.579107133e-05 4.909340385e-05 -0.0003736031299 6.850078875e-05 --0.0001248226672 -9.594801157e-05 7.189859602e-05 6.850078875e-05 -0.0002601697932 --6.341332844e-05 -0.0001561564585 0.0002935646495 -8.683293632e-05 -0.0002669113623 --0.0001561564585 -7.829514859e-05 0.000119865112 -0.0001529801777 -0.0002262527536 -0.0002935646495 0.000119865112 -0.0001618801742 0.0002234281672 0.0004301769008 --8.683293632e-05 -0.0001529801777 0.0002234281672 -7.277552063e-06 -0.000379102891 --0.0002669113623 -0.0002262527536 0.0004301769008 -0.000379102891 -0.0004603124952 -0.0001702860359 4.31825052e-05 -8.288303746e-05 0.0001794002206 0.0002006677831 -4.31825052e-05 4.492090534e-05 -8.961553293e-05 5.919782609e-05 0.000104110103 --8.288303746e-05 -8.961553293e-05 0.0001879112454 -0.0001558554875 -0.0001829902098 -0.0001794002206 5.919782609e-05 -0.0001558554875 0.0003160892125 0.0001590736962 -0.0002006677831 0.000104110103 -0.0001829902098 0.0001590736962 0.0003566648733 --1.161904744e-05 1.670133694e-05 -1.795916832e-05 1.099423708e-05 7.922687058e-06 -1.670133694e-05 -7.308548767e-06 1.831208025e-06 1.05279495e-05 8.776156722e-06 --1.795916832e-05 1.831208025e-06 6.443392476e-06 4.480307384e-07 -1.718711166e-05 -1.099423708e-05 1.05279495e-05 4.480307384e-07 -5.031507989e-06 3.26217249e-06 -7.922687058e-06 8.776156722e-06 -1.718711166e-05 3.26217249e-06 3.685513838e-05 --7.347466562e-06 -1.717752237e-05 3.946787935e-05 -5.482916068e-06 -2.548482148e-05 --1.717752237e-05 -1.48087328e-05 1.758329061e-05 -2.059843469e-05 -3.232622188e-05 -3.946787935e-05 1.758329061e-05 -1.095972903e-05 2.574989115e-05 6.310109049e-05 --5.482916068e-06 -2.059843469e-05 2.574989115e-05 6.850604062e-06 -5.253079887e-05 --2.548482148e-05 -3.232622188e-05 6.310109049e-05 -5.253079887e-05 -4.457368956e-05 -3.56483326e-05 5.784513683e-06 -5.780211837e-06 4.10368294e-05 3.721231181e-05 -5.784513683e-06 9.049976116e-06 -2.192048507e-05 9.783361142e-06 2.028452289e-05 --5.780211837e-06 -2.192048507e-05 5.210032215e-05 -2.755397459e-05 -3.181825945e-05 -4.10368294e-05 9.783361142e-06 -2.755397459e-05 6.883213452e-05 2.165461762e-05 -3.721231181e-05 2.028452289e-05 -3.181825945e-05 2.165461762e-05 7.906585598e-05 --0.01071845062 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.01094181196 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.01766308793 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.003204626962 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --9.393088453e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0002444747582 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0004745209709 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0002790916183 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -5.971831702e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --5.043078378e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.225910396e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.344673116e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -3.178111448e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.09819398993 0.005596655204 -0.0002618514929 0 0 -0.005596655204 -0.06251730277 -0.0007322985285 0 0 --0.0002618514929 -0.0007322985285 -0.06221886246 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.172687895 0.001093018311 0.003183445032 0 0 -0.001093018311 -0.1194345393 -0.0003285551238 0 0 -0.003183445032 -0.0003285551238 -0.1254452949 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.1298244978 0.00159112664 0.001892615903 0 0 -0.00159112664 -0.06758005558 0.0008111785119 0 0 -0.001892615903 0.0008111785119 -0.07672011765 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.04624170154 0.001304276942 0.0002116119838 0 0 -0.001304276942 -0.01297498605 0.0006326474781 0 0 -0.0002116119838 0.0006326474781 -0.01727083014 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.01577189862 0.0008708234789 -0.0001891141265 0 0 -0.0008708234789 0.0008184418017 0.0003532693044 0 0 --0.0001891141265 0.0003532693044 -0.001001752686 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0004718772892 0.0001458129937 -0.000107356385 0 0 -0.0001458129937 0.002645835743 7.355150058e-05 0 0 --0.000107356385 7.355150058e-05 0.002517084205 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.00242353661 -9.495021036e-05 -3.18635382e-05 0 0 --9.495021036e-05 0.001687783648 -3.63414872e-05 0 0 --3.18635382e-05 -3.63414872e-05 0.002114548623 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.001578058585 -0.0001113883227 2.812563415e-05 0 0 --0.0001113883227 -8.248851267e-05 -4.731396131e-05 0 0 -2.812563415e-05 -4.731396131e-05 0.0001676254613 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0009401627131 -5.618380819e-05 2.59430098e-05 0 0 --5.618380819e-05 -0.0004152544035 -2.829070852e-05 0 0 -2.59430098e-05 -2.829070852e-05 -0.0003388743701 0 0 -0 0 0 0 0 -0 0 0 0 0 -5.101926984e-05 9.026224176e-06 5.87561432e-07 0 0 -9.026224176e-06 -8.410861387e-05 4.186391946e-06 0 0 -5.87561432e-07 4.186391946e-06 -0.0001245635151 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0002662450541 2.692589945e-05 -6.501593745e-06 0 0 -2.692589945e-05 -1.435418008e-06 1.09917946e-05 0 0 --6.501593745e-06 1.09917946e-05 -6.537219518e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -3.145142194e-05 1.292262353e-06 -7.115662125e-07 0 0 -1.292262353e-06 1.107003369e-05 8.387427054e-07 0 0 --7.115662125e-07 8.387427054e-07 9.492310738e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 -4.852406407e-05 2.529998874e-08 -1.163536507e-06 0 0 -2.529998874e-08 2.869525882e-05 4.314581354e-08 0 0 --1.163536507e-06 4.314581354e-08 3.827729879e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.08039672996 -0.004103209798 7.979473679e-05 0.0002682811347 0.0005897744437 --0.004103209798 0.05253170427 0.0005867166778 0.03745509124 -0.0004600304922 -7.979473679e-05 0.0005867166778 0.05240814329 0.0004743491971 -0.03291841503 -0.0002682811347 0.03745509124 0.0004743491971 -0.007385329114 0.0001930714782 -0.0005897744437 -0.0004600304922 -0.03291841503 0.0001930714782 -0.006033887399 --0.0611179519 -0.00219917989 -0.0001201942756 -0.0006907115347 0.0002260303481 --0.00219917989 0.03628998162 -0.0002672394005 0.0214770329 0.000168330923 --0.0001201942756 -0.0002672394005 0.03962663968 -0.0002002560736 -0.02056192903 --0.0006907115347 0.0214770329 -0.0002002560736 -0.01828041752 0.0002764697725 -0.0002260303481 0.000168330923 -0.02056192903 0.0002764697725 -0.0161706062 --0.009597089562 -3.489692389e-06 -6.586242304e-05 -0.0008646656871 -0.0001549124844 --3.489692389e-06 0.007143264918 -0.0003506614019 0.002038259392 0.0001906866237 --6.586242304e-05 -0.0003506614019 0.009067650715 -0.0002059726285 -0.002306938851 --0.0008646656871 0.002038259392 -0.0002059726285 -0.01012628394 -5.599053165e-05 --0.0001549124844 0.0001906866237 -0.002306938851 -5.599053165e-05 -0.01013240055 -0.005199756782 0.0002662319112 8.647967345e-06 -0.0001898398524 -7.571963516e-05 -0.0002662319112 -0.000149394486 -1.039684247e-05 -0.0004017421749 -3.667983474e-05 -8.647967345e-06 -1.039684247e-05 -0.0002371881474 4.495773374e-05 0.0007040060353 --0.0001898398524 -0.0004017421749 4.495773374e-05 -0.0008322599307 -0.0001334944884 --7.571963516e-05 -3.667983474e-05 0.0007040060353 -0.0001334944884 -0.001461461804 -0.00127122826 6.471706e-05 -9.999367103e-07 3.55245626e-05 8.479774608e-06 -6.471706e-05 0.0001346399319 1.569788466e-05 0.0001471332779 -1.503950407e-05 --9.999367103e-07 1.569788466e-05 7.336538015e-05 1.738225941e-05 -8.572315384e-05 -3.55245626e-05 0.0001471332779 1.738225941e-05 0.0001409467962 -1.442436987e-05 -8.479774608e-06 -1.503950407e-05 -8.572315384e-05 -1.442436987e-05 9.784088009e-05 --0.001042766655 -2.043020365e-05 -1.318229886e-05 1.200743854e-05 1.557204905e-05 --2.043020365e-05 0.0001940894539 -1.063027458e-05 8.428085013e-05 1.333116852e-05 --1.318229886e-05 -1.063027458e-05 0.0002708938527 -1.471894081e-05 -0.0001439631888 -1.200743854e-05 8.428085013e-05 -1.471894081e-05 -0.0001918187469 2.043268826e-05 -1.557204905e-05 1.333116852e-05 -0.0001439631888 2.043268826e-05 -0.0001014386892 --7.433895472e-05 -7.175008909e-06 5.365489593e-07 -1.429219379e-05 -3.807639564e-06 --7.175008909e-06 -2.729539803e-06 9.588840344e-08 -5.749153576e-06 -1.459319182e-06 -5.365489593e-07 9.588840344e-08 -1.057974716e-05 1.636306642e-06 2.129477464e-05 --1.429219379e-05 -5.749153576e-06 1.636306642e-06 -1.070437316e-05 -4.076242997e-06 --3.807639564e-06 -1.459319182e-06 2.129477464e-05 -4.076242997e-06 -3.808328794e-05 -0.000129959571 4.923789004e-06 9.623203445e-07 -2.899051435e-06 -1.871529246e-06 -4.923789004e-06 5.377421761e-07 1.027123294e-06 -3.883867678e-08 -1.710076411e-06 -9.623203445e-07 1.027123294e-06 -4.600029132e-06 1.943081535e-06 7.29482504e-06 --2.899051435e-06 -3.883867678e-08 1.943081535e-06 -6.396195652e-07 -3.108230203e-06 --1.871529246e-06 -1.710076411e-06 7.29482504e-06 -3.108230203e-06 -1.129138557e-05 --5.120934248e-05 3.932292439e-07 -1.292707664e-06 4.37094204e-06 2.339674602e-06 -3.932292439e-07 2.03846202e-05 -3.212498838e-07 1.349032918e-05 9.486475912e-07 --1.292707664e-06 -3.212498838e-07 2.606045673e-05 -1.041960511e-06 -1.959381964e-05 -4.37094204e-06 1.349032918e-05 -1.041960511e-06 -6.101693754e-06 2.311623528e-06 -2.339674602e-06 9.486475912e-07 -1.959381964e-05 2.311623528e-06 5.647930615e-06 -1.168258115e-06 -1.982364453e-06 6.059730584e-07 -2.058519419e-06 -7.440309959e-07 --1.982364453e-06 5.70159211e-06 6.764438244e-07 6.776593534e-06 -7.543675438e-07 -6.059730584e-07 6.764438244e-07 1.909577537e-06 8.114710099e-07 -2.270188965e-06 --2.058519419e-06 6.776593534e-06 8.114710099e-07 7.393884168e-06 -8.525130009e-07 --7.440309959e-07 -7.543675438e-07 -2.270188965e-06 -8.525130009e-07 2.651178137e-06 --1.511269234e-05 -9.108268121e-07 6.914164938e-08 -1.557840913e-06 -4.366650862e-07 --9.108268121e-07 8.733194555e-07 -1.692999492e-07 -7.818384069e-07 6.098727513e-09 -6.914164938e-08 -1.692999492e-07 1.072880435e-06 -8.742795184e-09 1.58460381e-06 --1.557840913e-06 -7.818384069e-07 -8.742795184e-09 -4.33464687e-06 -2.875209143e-07 --4.366650862e-07 6.098727513e-09 1.58460381e-06 -2.875209143e-07 -6.181626242e-06 --1.753691322e-05 -1.211508328e-07 -3.751429222e-07 6.508126266e-07 5.463547939e-07 --1.211508328e-07 4.274614839e-06 -2.579509555e-07 2.08016311e-06 3.841274546e-07 --3.751429222e-07 -2.579509555e-07 6.179165706e-06 -4.236380139e-07 -3.845631325e-06 -6.508126266e-07 2.08016311e-06 -4.236380139e-07 -3.545316447e-06 6.66043495e-07 -5.463547939e-07 3.841274546e-07 -3.845631325e-06 6.66043495e-07 -8.069912556e-07 -2.589510148e-06 -2.789326589e-07 1.395225248e-07 -3.728979145e-07 -1.38450097e-07 --2.789326589e-07 2.015388254e-06 1.037411231e-07 1.745207546e-06 -1.306124782e-07 -1.395225248e-07 1.037411231e-07 1.423708213e-06 1.400911986e-07 -9.022973427e-07 --3.728979145e-07 1.745207546e-06 1.400911986e-07 6.590211555e-07 -1.669389781e-07 --1.38450097e-07 -1.306124782e-07 -9.022973427e-07 -1.669389781e-07 -1.421744436e-07 -0.1411916509 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0843119338 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.2051738492 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.1384945653 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.02605500459 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.003295616567 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0006017031218 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.002457085734 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.001170797631 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.000370272811 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.000123431325 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0002555009455 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.041557682e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.03635310043 -4.794548206e-05 -0.0002965177758 0 0 --4.794548206e-05 0.131583249 0.0002355162091 0 0 --0.0002965177758 0.0002355162091 0.1303196751 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.01131636889 -0.006131774974 0.0007341567777 0 0 --0.006131774974 0.1304127464 -0.0004769351219 0 0 -0.0007341567777 -0.0004769351219 0.1338312032 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.10818679 -0.003039243709 -1.308014563e-05 0 0 --0.003039243709 0.03861234831 -0.0001633408929 0 0 --1.308014563e-05 -0.0001633408929 0.03924216092 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.01573244246 0.001273713977 4.542853825e-05 0 0 -0.001273713977 -0.001689885185 8.4110643e-05 0 0 -4.542853825e-05 8.4110643e-05 -0.002407146745 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.02617838745 0.0004590839491 0.0001012327269 0 0 -0.0004590839491 0.001576237361 2.830866594e-05 0 0 -0.0001012327269 2.830866594e-05 0.001430992446 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.007946416707 0.0002805758962 -1.735430566e-05 0 0 -0.0002805758962 2.836304635e-05 2.33482528e-07 0 0 --1.735430566e-05 2.33482528e-07 1.880810991e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.006007762843 -9.354422952e-05 -1.812980465e-05 0 0 --9.354422952e-05 -0.0001414638491 1.152958707e-06 0 0 --1.812980465e-05 1.152958707e-06 -0.0001449995327 0 0 -0 0 0 0 0 -0 0 0 0 0 --8.589204291e-06 -7.905315934e-06 2.84527104e-07 0 0 --7.905315934e-06 0.0003040213102 -4.355770788e-07 0 0 -2.84527104e-07 -4.355770788e-07 0.0003097987905 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.002513076946 6.516857311e-05 3.96831393e-06 0 0 -6.516857311e-05 -0.0001283903216 -9.10680797e-07 0 0 -3.96831393e-06 -9.10680797e-07 -0.0001244493175 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.001038447786 -2.880045873e-05 5.123617154e-07 0 0 --2.880045873e-05 -3.167807441e-05 -3.176372082e-07 0 0 -5.123617154e-07 -3.176372082e-07 -2.891597039e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.315932066e-05 -4.604908178e-07 -2.06350165e-07 0 0 --4.604908178e-07 3.813615274e-05 6.41744569e-08 0 0 --2.06350165e-07 6.41744569e-08 3.747046658e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0001886146425 5.388709927e-06 6.768725424e-07 0 0 -5.388709927e-06 -3.253376413e-05 -8.595171498e-08 0 0 -6.768725424e-07 -8.595171498e-08 -3.210541591e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0002041788177 -5.342557949e-06 3.887258256e-08 0 0 --5.342557949e-06 -2.319062313e-06 -1.832452143e-08 0 0 -3.887258256e-08 -1.832452143e-08 -2.109079357e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.1547266294 0.0003787468741 0.0003077483288 -0.0002006544658 -0.0002472999972 -0.0003787468741 -0.1753820047 -0.0004300972375 -0.01862216579 0.000134538551 -0.0003077483288 -0.0004300972375 -0.1746637391 -0.0001324379862 0.01593499366 --0.0002006544658 -0.01862216579 -0.0001324379862 0.0004750604381 6.023281094e-05 --0.0002472999972 0.000134538551 0.01593499366 6.023281094e-05 -0.0003591758738 -0.0717835464 -0.0002148996808 0.0003485240191 -0.0006680292899 -3.564653007e-05 --0.0002148996808 0.01854320793 -5.226649211e-05 0.002826716782 0.0002602351664 -0.0003485240191 -5.226649211e-05 0.01913055966 -0.0002837701127 0.0008303237118 --0.0006680292899 0.002826716782 -0.0002837701127 0.0004264040062 5.233366386e-05 --3.564653007e-05 0.0002602351664 0.0008303237118 5.233366386e-05 -0.0003060332918 --0.01635855465 -0.003776559685 -9.972651592e-05 -0.0003596239032 -0.0001357921375 --0.003776559685 0.04787652533 -0.0002487239548 0.0003696814793 0.0002399730328 --9.972651592e-05 -0.0002487239548 0.04923341696 -0.0002635977184 0.001966354685 --0.0003596239032 0.0003696814793 -0.0002635977184 -3.430433707e-05 -8.465456119e-06 --0.0001357921375 0.0002399730328 0.001966354685 -8.465456119e-06 7.920216014e-05 --0.05909834675 -0.001607751912 -0.0004296937209 0.0001768927508 -2.39067103e-05 --0.001607751912 0.01141849944 6.080759171e-05 -0.002160579071 4.673752582e-05 --0.0004296937209 6.080759171e-05 0.01037281963 -3.93416218e-05 0.002641859492 -0.0001768927508 -0.002160579071 -3.93416218e-05 -0.0001117246703 -1.67868498e-05 --2.39067103e-05 4.673752582e-05 0.002641859492 -1.67868498e-05 0.0001224326414 -0.003362404598 5.003054005e-05 -5.022809291e-06 -5.861665076e-05 -5.594483238e-06 -5.003054005e-05 0.007463189097 0.000109922793 0.0007960060696 -2.040185888e-06 --5.022809291e-06 0.000109922793 0.006819135138 7.395893689e-06 -0.0003385764854 --5.861665076e-05 0.0007960060696 7.395893689e-06 3.091497659e-05 3.573443964e-06 --5.594483238e-06 -2.040185888e-06 -0.0003385764854 3.573443964e-06 -1.795442821e-05 -0.01542597974 0.0006841775232 7.76122104e-05 4.634947967e-05 1.023893646e-05 -0.0006841775232 -0.001229093911 -1.36537804e-05 -2.109357069e-05 -1.420950892e-07 -7.76122104e-05 -1.36537804e-05 -0.001101924925 -1.91984864e-07 -4.820088328e-05 -4.634947967e-05 -2.109357069e-05 -1.91984864e-07 -3.715597537e-07 6.486518488e-08 -1.023893646e-05 -1.420950892e-07 -4.820088328e-05 6.486518488e-08 -1.30084847e-06 --0.0006336468643 2.896723018e-05 -2.106913637e-05 1.952579268e-05 4.590877152e-06 -2.896723018e-05 6.992862492e-06 1.609015969e-07 -3.594746203e-06 1.172238068e-07 --2.106913637e-05 1.609015969e-07 -1.322040298e-07 1.842984083e-07 4.889357706e-06 -1.952579268e-05 -3.594746203e-06 1.842984083e-07 -3.683586055e-07 -5.394274907e-08 -4.590877152e-06 1.172238068e-07 4.889357706e-06 -5.394274907e-08 4.252891924e-07 --0.0009632689172 -5.949509754e-05 -5.867023145e-06 -5.047856951e-06 7.37468602e-07 --5.949509754e-05 0.0005004652591 1.026307763e-07 6.181281622e-05 1.173724116e-06 --5.867023145e-06 1.026307763e-07 0.0005118246352 -1.203436167e-06 -3.730961208e-05 --5.047856951e-06 6.181281622e-05 -1.203436167e-06 2.850014703e-06 3.673090401e-07 -7.37468602e-07 1.173724116e-06 -3.730961208e-05 3.673090401e-07 -2.252451557e-06 -0.0002239906499 2.665392964e-05 3.948322144e-06 4.574788055e-06 7.448665835e-07 -2.665392964e-05 -0.0002973610446 -4.529494656e-06 -4.664650959e-05 3.933620971e-07 -3.948322144e-06 -4.529494656e-06 -0.0002728596474 -5.552532018e-07 2.823153541e-05 -4.574788055e-06 -4.664650959e-05 -5.552532018e-07 -1.562987921e-06 -1.928137469e-07 -7.448665835e-07 3.933620971e-07 2.823153541e-05 -1.928137469e-07 1.09500198e-06 -6.186445243e-05 -9.231211697e-06 2.623384981e-06 -4.888530191e-06 -1.222774624e-06 --9.231211697e-06 4.205821104e-05 5.589966975e-07 6.60767242e-06 -4.12270262e-08 -2.623384981e-06 5.589966975e-07 3.899068301e-05 6.716524632e-09 -3.818906304e-06 --4.888530191e-06 6.60767242e-06 6.716524632e-09 3.098275876e-07 3.763096243e-08 --1.222774624e-06 -4.12270262e-08 -3.818906304e-06 3.763096243e-08 -2.171963884e-07 -0.0002631525399 9.132926131e-06 1.334912188e-06 5.197785529e-08 1.729603785e-07 -9.132926131e-06 -1.045158853e-05 4.239871613e-08 -1.03541562e-06 3.096959991e-08 -1.334912188e-06 4.239871613e-08 -1.08346683e-05 -2.427337152e-08 1.185044859e-06 -5.197785529e-08 -1.03541562e-06 -2.427337152e-08 9.710081798e-08 1.248830939e-08 -1.729603785e-07 3.096959991e-08 1.185044859e-06 1.248830939e-08 -7.569496845e-08 --0.0001920772835 -3.757858456e-06 -4.733589753e-07 1.770211939e-07 -1.776018589e-07 --3.757858456e-06 -5.721312813e-05 -1.868596222e-07 -8.617825514e-06 -4.827184243e-08 --4.733589753e-07 -1.868596222e-07 -5.72737221e-05 4.153388922e-08 6.170490826e-06 -1.770211939e-07 -8.617825514e-06 4.153388922e-08 -2.346310396e-07 -3.051047121e-08 --1.776018589e-07 -4.827184243e-08 6.170490826e-06 -3.051047121e-08 1.881526705e-07 --3.682533344e-05 -2.414275155e-06 6.951636822e-08 -4.851525999e-07 -1.444110296e-07 --2.414275155e-06 2.164135863e-06 1.56970426e-08 4.574548216e-07 1.803253069e-08 -6.951636822e-08 1.56970426e-08 2.177779267e-06 -2.072081383e-08 -6.443136547e-08 --4.851525999e-07 4.574548216e-07 -2.072081383e-08 8.936353679e-08 1.11551632e-08 --1.444110296e-07 1.803253069e-08 -6.443136547e-08 1.11551632e-08 -6.544609961e-08 --0.04615760921 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.06020523165 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.07912514463 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.02306232958 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.000437582793 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.001261666907 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.001367524318 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.000586723471 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0001993295275 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0002458003026 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.746996467e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -5.570354074e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.412583924e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.00263534257 0.06269107145 0.0002641358372 0 0 -0.06269107145 -0.06315708216 -1.447813984e-05 0 0 -0.0002641358372 -1.447813984e-05 -0.04214515448 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.005558146269 0.03951442735 -4.212801589e-05 0 0 -0.03951442735 -0.0101276637 0.0001666362483 0 0 --4.212801589e-05 0.0001666362483 -0.02596704256 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.02008758626 0.03225038533 4.317648064e-06 0 0 -0.03225038533 -0.0234296788 3.328997707e-06 0 0 -4.317648064e-06 3.328997707e-06 -0.002864300365 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.005113455254 0.001056326419 5.002112267e-06 0 0 -0.001056326419 -0.02682134722 2.84012835e-05 0 0 -5.002112267e-06 2.84012835e-05 0.001092602849 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0009227213857 0.002039288439 3.0748638e-07 0 0 -0.002039288439 0.004401062784 2.906380526e-07 0 0 -3.0748638e-07 2.906380526e-07 8.145550258e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.000107445452 0.0006336891865 1.40346347e-07 0 0 -0.0006336891865 0.0008395845398 4.396808166e-07 0 0 -1.40346347e-07 4.396808166e-07 -0.0002838376837 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0002141456926 -0.0001180786228 -1.036599536e-06 0 0 --0.0001180786228 -0.001976924543 -2.512866466e-06 0 0 --1.036599536e-06 -2.512866466e-06 8.647259896e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0001559511134 0.0003123298074 -5.781500939e-08 0 0 -0.0003123298074 0.0006092660383 -1.770315078e-07 0 0 --5.781500939e-08 -1.770315078e-07 1.455192918e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --4.945964747e-05 -8.560343434e-06 4.765691291e-08 0 0 --8.560343434e-06 9.01453562e-05 7.301622507e-08 0 0 -4.765691291e-08 7.301622507e-08 -3.298883055e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -3.400232928e-05 -2.629774027e-05 -1.218602847e-07 0 0 --2.629774027e-05 -0.0003212455597 -4.102143108e-07 0 0 --1.218602847e-07 -4.102143108e-07 1.942572584e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -3.751397178e-05 7.332262911e-05 1.989974419e-07 0 0 -7.332262911e-05 0.0001403582778 3.596917105e-07 0 0 -1.989974419e-07 3.596917105e-07 6.09067361e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 --4.06958351e-06 9.013733563e-07 4.345939158e-08 0 0 -9.013733563e-07 1.000974672e-05 2.391160309e-08 0 0 -4.345939158e-08 2.391160309e-08 -3.217197349e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.109333782e-05 3.589297329e-06 4.706122346e-09 0 0 -3.589297329e-06 -4.50252163e-05 -2.370116121e-08 0 0 -4.706122346e-09 -2.370116121e-08 4.231137277e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.1367194956 0.04900267737 -0.0001588523704 0.01182299085 -0.0001727413693 -0.04900267737 -0.009843769536 -0.000221072989 0.07579399189 0.0006480792766 --0.0001588523704 -0.000221072989 0.04127532842 -8.932303081e-05 0.1239229853 -0.01182299085 0.07579399189 -8.932303081e-05 -0.03114374402 1.443766659e-05 --0.0001727413693 0.0006480792766 0.1239229853 1.443766659e-05 -0.04675671345 -0.04947125846 0.01228976564 0.00029351211 -0.010371035 7.456332648e-05 -0.01228976564 -0.07959770371 6.162524073e-06 -0.0008110377221 -0.0002675007043 -0.00029351211 6.162524073e-06 0.01880912357 -0.0002781074938 0.0299295946 --0.010371035 -0.0008110377221 -0.0002781074938 -0.007903944099 0.0001318581879 -7.456332648e-05 -0.0002675007043 0.0299295946 0.0001318581879 -0.04836997111 --0.0004580396843 -0.005579007354 1.168623809e-05 0.001717420187 9.739132927e-06 --0.005579007354 0.002756573085 1.741703551e-05 0.02104872703 -1.064258152e-05 -1.168623809e-05 1.741703551e-05 0.003172203241 -5.253171776e-06 0.0006331175805 -0.001717420187 0.02104872703 -5.253171776e-06 0.006395024196 -1.810135714e-05 -9.739132927e-06 -1.064258152e-05 0.0006331175805 -1.810135714e-05 -0.01329287172 --0.008828883064 0.001352986748 6.962273576e-06 0.01314678643 -1.110090925e-05 -0.001352986748 0.02055698033 7.772241996e-07 0.01030405818 4.257245999e-06 -6.962273576e-06 7.772241996e-07 -4.813029999e-05 -7.62275544e-06 7.142224968e-05 -0.01314678643 0.01030405818 -7.62275544e-06 -0.01251832139 2.540716998e-05 --1.110090925e-05 4.257245999e-06 7.142224968e-05 2.540716998e-05 0.001394554157 --0.001032026522 0.0006788430467 2.248844331e-06 0.001785260585 -4.741739409e-06 -0.0006788430467 -0.000264012025 -7.52688129e-07 -0.001298915177 9.12888863e-06 -2.248844331e-06 -7.52688129e-07 4.037542209e-05 -1.975950153e-06 -7.003273021e-05 -0.001785260585 -0.001298915177 -1.975950153e-06 -0.003414577543 1.632638797e-05 --4.741739409e-06 9.12888863e-06 -7.003273021e-05 1.632638797e-05 -0.0002296804064 -0.0002604638219 -0.0001012877455 -3.283888352e-06 -0.0002300317256 -2.651206091e-07 --0.0001012877455 -0.0001198904275 -1.218392636e-07 0.0003101635583 -3.607181273e-06 --3.283888352e-06 -1.218392636e-07 6.80112002e-05 2.760292323e-06 0.0001111515826 --0.0002300317256 0.0003101635583 2.760292323e-06 0.0003901250481 -6.885985141e-06 --2.651206091e-07 -3.607181273e-06 0.0001111515826 -6.885985141e-06 -0.0003495401414 --0.0003711009333 -1.048708957e-05 -3.495530574e-07 0.0005366690616 -1.371751261e-07 --1.048708957e-05 0.00114621859 -2.336524888e-07 0.0006738976179 -4.100818685e-07 --3.495530574e-07 -2.336524888e-07 8.277079615e-06 1.567505824e-07 3.551963111e-05 -0.0005366690616 0.0006738976179 1.567505824e-07 -0.0003879280926 -6.694775214e-07 --1.371751261e-07 -4.100818685e-07 3.551963111e-05 -6.694775214e-07 0.0001067829141 --2.194180232e-05 -2.699940627e-06 6.293729005e-08 4.640707404e-05 4.607340926e-07 --2.699940627e-06 -2.712881728e-05 -7.600760015e-08 -1.45973843e-05 -1.006084822e-06 -6.293729005e-08 -7.600760015e-08 4.462749732e-07 -8.898019906e-08 1.248414983e-06 -4.640707404e-05 -1.45973843e-05 -8.898019906e-08 -8.512825912e-05 -1.09773158e-06 -4.607340926e-07 -1.006084822e-06 1.248414983e-06 -1.09773158e-06 -3.902668877e-05 -3.737100569e-05 3.052140933e-05 -1.354259598e-07 1.373934695e-05 -2.078057508e-08 -3.052140933e-05 -0.0001000142909 -4.910000572e-08 -6.06557249e-05 -5.325440392e-08 --1.354259598e-07 -4.910000572e-08 9.136837956e-06 6.720558183e-08 3.024788185e-05 -1.373934695e-05 -6.06557249e-05 6.720558183e-08 -6.915204163e-05 -2.717484833e-07 --2.078057508e-08 -5.325440392e-08 3.024788185e-05 -2.717484833e-07 -3.731278572e-05 --2.796670564e-05 8.761698656e-06 -3.574143477e-07 6.238866602e-05 -1.213476414e-07 -8.761698656e-06 0.0001471906401 -6.846981014e-08 8.761014505e-05 1.642970665e-07 --3.574143477e-07 -6.846981014e-08 4.907489248e-06 2.554963634e-07 2.401060655e-05 -6.238866602e-05 8.761014505e-05 2.554963634e-07 -4.129836377e-05 -3.707439296e-07 --1.213476414e-07 1.642970665e-07 2.401060655e-05 -3.707439296e-07 3.801718281e-05 -2.170585584e-05 -1.101641103e-05 -8.532285879e-08 -2.196266565e-05 -2.178547541e-07 --1.101641103e-05 9.505414197e-06 -3.899834511e-08 2.95096926e-05 4.243573121e-07 --8.532285879e-08 -3.899834511e-08 2.305609376e-06 4.253740259e-08 8.90914498e-06 --2.196266565e-05 2.95096926e-05 4.253740259e-08 4.138995863e-05 3.643092891e-07 --2.178547541e-07 4.243573121e-07 8.90914498e-06 3.643092891e-07 -6.507887607e-06 -1.010888704e-05 1.168783262e-05 -5.738635278e-08 8.914380452e-06 -2.269020208e-08 -1.168783262e-05 -1.433374439e-05 -1.83435088e-08 -1.063555648e-05 5.282857899e-08 --5.738635278e-08 -1.83435088e-08 3.323767492e-06 3.260611118e-08 1.151534634e-05 -8.914380452e-06 -1.063555648e-05 3.260611118e-08 -2.288354286e-05 -5.865226124e-08 --2.269020208e-08 5.282857899e-08 1.151534634e-05 -5.865226124e-08 -3.698151526e-06 -5.424850991e-06 4.199124819e-06 -7.627059273e-08 7.477022747e-06 -6.004219301e-08 -4.199124819e-06 2.616194358e-05 -2.524921856e-08 1.953324184e-05 9.477638257e-08 --7.627059273e-08 -2.524921856e-08 2.653888966e-06 4.073008631e-08 1.132875991e-05 -7.477022747e-06 1.953324184e-05 4.073008631e-08 -2.563626519e-06 -1.90536292e-08 --6.004219301e-08 9.477638257e-08 1.132875991e-05 -1.90536292e-08 6.69409863e-06 --0.04933546276 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.05947896104 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.08458397237 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.03111354371 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.001362101112 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0006602415118 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0009912332927 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.001090340038 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.020954548e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0003315992192 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.948762349e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -2.603845382e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --5.149944924e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.003412463412 -0.03052222696 -0.05293759831 0 0 --0.03052222696 -0.05118026604 -0.008669491369 0 0 --0.05293759831 -0.008669491369 -0.0613432805 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.01646883675 -0.01569048344 -0.02822785838 0 0 --0.01569048344 -0.02665171594 0.009016474355 0 0 --0.02822785838 0.009016474355 -0.01701280532 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.02104181857 -0.01706409904 -0.03053776658 0 0 --0.01706409904 -0.007679114146 -0.00468479735 0 0 --0.03053776658 -0.00468479735 -0.01355235116 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.00830910873 -0.001446747559 -0.002572924019 0 0 --0.001446747559 -0.006266180515 -0.01362859304 0 0 --0.002572924019 -0.01362859304 -0.02317414807 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0002936600179 -0.00036728573 -0.0006497141233 0 0 --0.00036728573 0.0004454945804 0.0007800094244 0 0 --0.0006497141233 0.0007800094244 0.001387255869 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0001252734392 -0.0003645033685 -0.0006635584038 0 0 --0.0003645033685 8.603924774e-05 0.0007437984227 0 0 --0.0006635584038 0.0007437984227 0.001026457178 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0004409551791 -6.932728835e-05 -0.0001276129902 0 0 --6.932728835e-05 -0.0003307144836 -0.0007884213084 0 0 --0.0001276129902 -0.0007884213084 -0.001291072113 0 0 -0 0 0 0 0 -0 0 0 0 0 -7.273638114e-05 -8.633010839e-05 -0.0001546895255 0 0 --8.633010839e-05 8.465166081e-05 0.0001615371377 0 0 --0.0001546895255 0.0001615371377 0.0002843379146 0 0 -0 0 0 0 0 -0 0 0 0 0 --6.232049378e-05 2.119091692e-05 3.782696034e-05 0 0 -2.119091692e-05 -2.541328769e-05 1.117958113e-05 0 0 -3.782696034e-05 1.117958113e-05 -1.134104564e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -7.51184051e-05 -1.498924377e-05 -2.709094354e-05 0 0 --1.498924377e-05 -3.125267649e-05 -0.0001066717362 0 0 --2.709094354e-05 -0.0001066717362 -0.0001607864197 0 0 -0 0 0 0 0 -0 0 0 0 0 -2.178324371e-05 -2.792884382e-05 -4.853804424e-05 0 0 --2.792884382e-05 3.348605723e-05 5.86293938e-05 0 0 --4.853804424e-05 5.86293938e-05 0.0001025091286 0 0 -0 0 0 0 0 -0 0 0 0 0 --7.291494401e-06 6.196741586e-06 1.110090984e-05 0 0 -6.196741586e-06 -9.994838895e-06 -1.37666405e-05 0 0 -1.110090984e-05 -1.37666405e-05 -2.64726965e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.911666358e-05 -7.308996465e-06 -1.299720737e-05 0 0 --7.308996465e-06 -3.45700758e-08 -1.108316693e-05 0 0 --1.299720737e-05 -1.108316693e-05 -1.363551243e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.1478920701 -0.01843485366 -0.03907291575 -0.005562471529 0.009899502877 --0.01843485366 0.0358289477 -0.02160431836 -0.07503848854 -0.08843880904 --0.03907291575 -0.02160431836 0.008048857331 0.08623224976 -0.02556572701 --0.005562471529 -0.07503848854 0.08623224976 -0.04246013727 -0.007399900161 -0.009899502877 -0.08843880904 -0.02556572701 -0.007399900161 -0.03470622828 -0.05897784425 -0.004440146057 -0.007441903868 0.006029609575 -0.009315263906 --0.004440146057 -0.003514365568 -0.04819856662 -0.02481926911 -0.01382447255 --0.007441903868 -0.04819856662 -0.06345776883 0.01382023332 0.009405940835 -0.006029609575 -0.02481926911 0.01382023332 -0.04190268435 -0.01806455644 --0.009315263906 -0.01382447255 0.009405940835 -0.01806455644 -0.02257054735 -0.003823018155 0.003025686566 0.005607182295 0.0008434079137 -0.001511414232 -0.003025686566 0.001590492678 -0.005262356209 0.00417463332 -0.008208484319 -0.005607182295 -0.005262356209 -0.004789816561 0.009000221612 -0.01382224958 -0.0008434079137 0.00417463332 0.009000221612 -0.01013752109 -0.01174689577 --0.001511414232 -0.008208484319 -0.01382224958 -0.01174689577 0.001655227804 --0.008543218501 -0.0009866445879 -0.00175942116 -0.006641734306 0.01068790693 --0.0009866445879 0.005565226315 0.01021918468 0.00343337838 -0.005074463304 --0.00175942116 0.01021918468 0.01827810109 0.005635164183 -0.009484541972 --0.006641734306 0.00343337838 0.005635164183 -0.002154596243 0.004431821411 -0.01068790693 -0.005074463304 -0.009484541972 0.004431821411 -0.006578916194 --0.001689581868 -0.0005715390836 -0.001001558907 -0.00157442423 0.002544327674 --0.0005715390836 6.382416596e-05 6.876398371e-05 -0.0003669199008 0.0007755391764 --0.001001558907 6.876398371e-05 0.000138769603 -0.0008706049378 0.001263735441 --0.00157442423 -0.0003669199008 -0.0008706049378 -0.001934182081 0.002158245672 -0.002544327674 0.0007755391764 0.001263735441 0.002158245672 -0.003991672685 -9.383634687e-05 -0.0001073034463 -0.0002136594749 -0.0001032274198 0.0001763699195 --0.0001073034463 -3.478117852e-05 -0.0002466854107 -0.0002025029481 6.949561627e-05 --0.0002136594749 -0.0002466854107 -0.0003369436516 -7.6431851e-05 0.0003142120221 --0.0001032274198 -0.0002025029481 -7.6431851e-05 -0.0002751784532 0.000153534142 -0.0001763699195 6.949561627e-05 0.0003142120221 0.000153534142 -0.0004992982532 --0.0002242881197 5.745910215e-05 0.0001010324652 -0.0001294472725 0.000208024473 -5.745910215e-05 0.0003330109643 0.0005956919308 0.0002458345542 -0.0004242608808 -0.0001010324652 0.0005956919308 0.001070230384 0.0004667740137 -0.0007445882468 --0.0001294472725 0.0002458345542 0.0004667740137 0.0001236332543 -8.566214634e-05 -0.000208024473 -0.0004242608808 -0.0007445882468 -8.566214634e-05 0.0002082228838 --5.916331594e-05 1.470093184e-06 2.793359847e-06 -5.369950696e-05 9.034061631e-05 -1.470093184e-06 -1.899267863e-05 -3.446002878e-05 -9.097793846e-06 2.731656954e-05 -2.793359847e-06 -3.446002878e-05 -6.31219203e-05 -2.702777548e-05 4.246741107e-05 --5.369950696e-05 -9.097793846e-06 -2.702777548e-05 -0.0001185498631 4.72685801e-05 -9.034061631e-05 2.731656954e-05 4.246741107e-05 4.72685801e-05 -0.0001703335171 --8.099703651e-06 -4.592978125e-05 -8.485407486e-05 -6.001547977e-05 9.838428204e-05 --4.592978125e-05 -1.678970249e-05 -5.36042127e-05 -6.929923679e-05 4.651244979e-05 --8.485407486e-05 -5.36042127e-05 -8.31722611e-05 -5.355213972e-05 0.0001263416299 --6.001547977e-05 -6.929923679e-05 -5.355213972e-05 -6.895324693e-05 0.0001136622114 -9.838428204e-05 4.651244979e-05 0.0001263416299 0.0001136622114 -0.0001880475767 --6.843803461e-07 1.142995205e-05 1.826721233e-05 -1.851324269e-06 1.498072079e-06 -1.142995205e-05 4.559838798e-05 7.441356174e-05 2.146759381e-05 -6.937614674e-05 -1.826721233e-05 7.441356174e-05 0.0001375562243 7.270421827e-05 -0.0001026874532 --1.851324269e-06 2.146759381e-05 7.270421827e-05 4.65077157e-05 -1.905594858e-05 -1.498072079e-06 -6.937614674e-05 -0.0001026874532 -1.905594858e-05 6.64904856e-05 -1.867432521e-05 4.763520202e-06 7.78462441e-06 7.281091513e-06 -1.225601548e-05 -4.763520202e-06 -1.615100981e-06 -7.520458518e-06 -2.983670445e-06 -7.803203546e-06 -7.78462441e-06 -7.520458518e-06 -1.115186537e-05 7.133893454e-06 -6.207136904e-06 -7.281091513e-06 -2.983670445e-06 7.133893454e-06 -7.654009763e-06 -1.51609313e-05 --1.225601548e-05 -7.803203546e-06 -6.207136904e-06 -1.51609313e-05 9.364341418e-06 -4.666775992e-06 -9.735171431e-06 -1.824486131e-05 -1.195726224e-05 1.947572678e-05 --9.735171431e-06 6.601032385e-07 -6.152452955e-06 -1.489730204e-05 2.65087584e-06 --1.824486131e-05 -6.152452955e-06 -6.977723768e-06 -4.002700137e-06 1.850574131e-05 --1.195726224e-05 -1.489730204e-05 -4.002700137e-06 -1.0783347e-05 2.177367981e-05 -1.947572678e-05 2.65087584e-06 1.850574131e-05 2.177367981e-05 -3.330519355e-05 -9.800663772e-06 8.584847733e-07 7.430749262e-07 8.747646287e-07 -1.749348518e-06 -8.584847733e-07 9.373691771e-06 1.190893184e-05 -9.100350313e-07 -1.630822504e-05 -7.430749262e-07 1.190893184e-05 2.408433173e-05 1.669311448e-05 -1.804380055e-05 -8.747646287e-07 -9.100350313e-07 1.669311448e-05 8.613257191e-06 -4.179403321e-06 --1.749348518e-06 -1.630822504e-05 -1.804380055e-05 -4.179403321e-06 1.303751377e-05 --0.0490168533 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0575985298 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.08381128785 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.03452112762 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.002142376139 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0003831251792 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0006775304209 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.001232864897 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -9.864000259e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0003284868402 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.64772734e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -5.397789034e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --6.887631325e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.00365429749 -0.03041937726 0.05334769263 0 0 --0.03041937726 -0.0511574803 0.008025739314 0 0 -0.05334769263 0.008025739314 -0.0606076141 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.02220156008 -0.01360810638 0.02444228409 0 0 --0.01360810638 -0.02881470651 -0.009528958778 0 0 -0.02444228409 -0.009528958778 -0.01801911114 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.02021147947 -0.01779909484 0.03189334964 0 0 --0.01779909484 -0.007450382633 0.002117621146 0 0 -0.03189334964 0.002117621146 -0.01017849213 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.01029810753 -0.002579531311 0.004623055765 0 0 --0.002579531311 -0.006320100168 0.01372851978 0 0 -0.004623055765 0.01372851978 -0.02331839609 0 0 -0 0 0 0 0 -0 0 0 0 0 --4.27530142e-05 9.943613064e-06 -2.530010526e-05 0 0 -9.943613064e-06 -6.561798214e-05 3.614626145e-05 0 0 --2.530010526e-05 3.614626145e-05 -0.0001291188341 0 0 -0 0 0 0 0 -0 0 0 0 0 -7.02588455e-05 -0.0003152558708 0.0005771066894 0 0 --0.0003152558708 9.45387932e-05 -0.0007359255812 0 0 -0.0005771066894 -0.0007359255812 0.001026909652 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0005819628722 -0.0001979665564 0.0003555740373 0 0 --0.0001979665564 -0.0002203032129 0.0005938441882 0 0 -0.0003555740373 0.0005938441882 -0.0009488291177 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.683166991e-05 -4.317054772e-05 7.73388211e-05 0 0 --4.317054772e-05 2.799791556e-05 -8.471666979e-05 0 0 -7.73388211e-05 -8.471666979e-05 0.0001328323932 0 0 -0 0 0 0 0 -0 0 0 0 0 --6.600057195e-05 3.953035538e-05 -7.038856543e-05 0 0 -3.953035538e-05 -4.801526813e-05 4.194115361e-05 0 0 --7.038856543e-05 4.194115361e-05 -9.87137645e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -9.690663406e-05 -3.942687295e-05 7.037893389e-05 0 0 --3.942687295e-05 -1.427465555e-06 5.703571873e-05 0 0 -7.037893389e-05 5.703571873e-05 -7.133785921e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -9.161068452e-06 -1.942231679e-05 3.392161323e-05 0 0 --1.942231679e-05 2.411210112e-05 -4.941064061e-05 0 0 -3.392161323e-05 -4.941064061e-05 8.311348026e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --6.635068139e-06 9.500441761e-06 -1.695208269e-05 0 0 -9.500441761e-06 -1.525661216e-05 2.641875871e-05 0 0 --1.695208269e-05 2.641875871e-05 -4.734752544e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -2.248108688e-05 -1.150622423e-05 2.050194976e-05 0 0 --1.150622423e-05 5.814286251e-06 1.136871236e-06 0 0 -2.050194976e-05 1.136871236e-06 4.339192332e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.1514573401 -0.01844804988 0.03893761898 -0.005144642859 -0.009537566107 --0.01844804988 0.03635073245 0.02057741063 -0.07624367175 0.08945432217 -0.03893761898 0.02057741063 0.009236660536 -0.08779829508 -0.02497797806 --0.005144642859 -0.07624367175 -0.08779829508 -0.04087283465 0.007305119685 --0.009537566107 0.08945432217 -0.02497797806 0.007305119685 -0.03324181381 -0.06433995328 -0.004965820757 0.009138797068 0.006216468608 0.009641694163 --0.004965820757 -0.002838804621 0.05030870516 -0.02754382603 0.01532967827 -0.009138797068 0.05030870516 -0.06560780328 -0.01458977155 0.0108762416 -0.006216468608 -0.02754382603 -0.01458977155 -0.0426324435 0.01770293962 -0.009641694163 0.01532967827 0.0108762416 0.01770293962 -0.02410679848 -0.006680029943 0.002959060483 -0.005469892007 0.001958064378 0.003328137508 -0.002959060483 0.0006852381561 0.008653445196 0.003080718328 0.007657956625 --0.005469892007 0.008653445196 -0.009851579444 -0.00831826611 -0.01203310627 -0.001958064378 0.003080718328 -0.00831826611 -0.01117231204 0.01286924432 -0.003328137508 0.007657956625 -0.01203310627 0.01286924432 0.001724706832 --0.00829837329 -0.0006523007625 0.001170304715 -0.006200011467 -0.009952321329 --0.0006523007625 0.005767086279 -0.01058691829 0.004096190126 0.005736335057 -0.001170304715 -0.01058691829 0.01898567775 -0.006405565178 -0.01092905711 --0.006200011467 0.004096190126 -0.006405565178 -0.001933149231 -0.003093980629 --0.009952321329 0.005736335057 -0.01092905711 -0.003093980629 -0.005045095293 --0.002041186719 -0.0005969881034 0.001055056492 -0.001869099771 -0.003027171722 --0.0005969881034 0.0002288870013 -0.0003893936999 -0.0002487937893 -0.0006575341975 -0.001055056492 -0.0003893936999 0.0006942096634 0.0007285079003 0.001019171279 --0.001869099771 -0.0002487937893 0.0007285079003 -0.00228508059 -0.002313273247 --0.003027171722 -0.0006575341975 0.001019171279 -0.002313273247 -0.004523287974 --7.721077577e-05 -0.0002342705833 0.0004332635604 -0.0002979266976 -0.0004910035181 --0.0002342705833 -5.470276e-05 0.0003096629383 -0.0003424047482 -0.0002283470309 -0.0004332635604 0.0003096629383 -0.0004351973052 0.0002586569282 0.000633912782 --0.0002979266976 -0.0003424047482 0.0002586569282 -0.0003960985922 -0.0005452374547 --0.0004910035181 -0.0002283470309 0.000633912782 -0.0005452374547 -0.0009937968209 --0.0001410812187 9.226821902e-05 -0.0001643309387 -4.446087346e-05 -7.018760772e-05 -9.226821902e-05 0.0003254251216 -0.000588396284 0.0002788139376 0.0004570665719 --0.0001643309387 -0.000588396284 0.001055348045 -0.0005057438249 -0.0008172009191 --4.446087346e-05 0.0002788139376 -0.0005057438249 0.0001806152898 0.0002242897749 --7.018760772e-05 0.0004570665719 -0.0008172009191 0.0002242897749 0.0004047276859 --5.99111991e-05 1.417982582e-05 -2.537337345e-05 -5.153085354e-05 -8.609056451e-05 -1.417982582e-05 -1.517464007e-05 2.832780881e-05 2.562228045e-06 -1.092569281e-05 --2.537337345e-05 2.832780881e-05 -5.30357131e-05 1.022673981e-05 1.126241322e-05 --5.153085354e-05 2.562228045e-06 1.022673981e-05 -0.0001361039392 -2.376172537e-05 --8.609056451e-05 -1.092569281e-05 1.126241322e-05 -2.376172537e-05 -0.0001607663923 --4.213486465e-05 -6.409179374e-05 0.0001171790251 -9.410052521e-05 -0.0001533703237 --6.409179374e-05 -1.023682738e-05 4.301082442e-05 -8.222306804e-05 -5.763929736e-05 -0.0001171790251 4.301082442e-05 -6.343021211e-05 6.662869846e-05 0.0001520676753 --9.410052521e-05 -8.222306804e-05 6.662869846e-05 -7.839057399e-05 -0.0001710263494 --0.0001533703237 -5.763929736e-05 0.0001520676753 -0.0001710263494 -0.0002542718928 -1.183745507e-05 1.762855708e-05 -3.023869138e-05 1.227674999e-05 2.107316792e-05 -1.762855708e-05 4.132269821e-05 -6.873753134e-05 2.590556236e-05 6.998260876e-05 --3.023869138e-05 -6.873753134e-05 0.0001262591073 -7.428331805e-05 -0.0001082600769 -1.227674999e-05 2.590556236e-05 -7.428331805e-05 5.176937337e-05 3.948838054e-05 -2.107316792e-05 6.998260876e-05 -0.0001082600769 3.948838054e-05 9.300931991e-05 -1.859490096e-05 4.472797105e-06 -7.414403995e-06 6.59608758e-06 1.069063823e-05 -4.472797105e-06 -3.49955814e-06 1.113258391e-05 -4.050605519e-06 5.411352333e-06 --7.414403995e-06 1.113258391e-05 -1.765597844e-05 -5.060725765e-06 -2.094346187e-06 -6.59608758e-06 -4.050605519e-06 -5.060725765e-06 -1.13963274e-05 1.43367125e-05 -1.069063823e-05 5.411352333e-06 -2.094346187e-06 1.43367125e-05 3.834819446e-06 -1.547815181e-06 -1.134999187e-05 2.104667286e-05 -1.504783458e-05 -2.443231549e-05 --1.134999187e-05 2.942054902e-06 1.978998298e-06 -1.497252554e-05 -1.667876338e-06 -2.104667286e-05 1.978998298e-06 4.838878579e-07 2.947115926e-06 1.736307279e-05 --1.504783458e-05 -1.497252554e-05 2.947115926e-06 -9.604639331e-06 -2.634675254e-05 --2.443231549e-05 -1.667876338e-06 1.736307279e-05 -2.634675254e-05 -3.645760541e-05 -1.149219286e-05 2.013680198e-06 -2.996167384e-06 3.113544664e-06 5.239581101e-06 -2.013680198e-06 8.450869879e-06 -1.079414557e-05 -1.070778938e-07 1.614701381e-05 --2.996167384e-06 -1.079414557e-05 2.173945731e-05 -1.675301437e-05 -1.869058009e-05 -3.113544664e-06 -1.070778938e-07 -1.675301437e-05 9.044709302e-06 7.498268143e-06 -5.239581101e-06 1.614701381e-05 -1.869058009e-05 7.498268143e-06 1.683177051e-05 --0.0408604112 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.08436039944 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.03477436383 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.00361088947 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.975634226e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0007315119821 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0005757577879 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0001164201316 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -2.115798429e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -4.552690454e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.099093703e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -7.90602179e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.167737043e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.2128585243 0.0003796992879 0.0001913825575 0 0 -0.0003796992879 -2.555945966e-05 -4.958445816e-06 0 0 -0.0001913825575 -4.958445816e-06 -8.984951797e-07 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.03850576555 -0.002443549898 -0.0004323170546 0 0 --0.002443549898 -3.404396378e-05 -1.447043482e-05 0 0 --0.0004323170546 -1.447043482e-05 -3.465027031e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.1112945763 -0.001931125803 -0.0006267060613 0 0 --0.001931125803 -1.226297061e-05 -1.262297791e-05 0 0 --0.0006267060613 -1.262297791e-05 -3.385079461e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.05480011554 -0.0006583009256 -0.0002787006541 0 0 --0.0006583009256 -3.38184593e-06 -4.3656428e-06 0 0 --0.0002787006541 -4.3656428e-06 -1.188589174e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.01823927827 -0.0002703012088 -6.14509517e-05 0 0 --0.0002703012088 -3.728748721e-06 -9.583484839e-07 0 0 --6.14509517e-05 -9.583484839e-07 -1.988381131e-07 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.001010698982 -2.960490594e-06 7.419823697e-07 0 0 --2.960490594e-06 2.427396211e-07 1.998773157e-08 0 0 -7.419823697e-07 1.998773157e-08 7.175685987e-10 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.003343295579 6.690008945e-05 5.100174957e-06 0 0 -6.690008945e-05 1.331858689e-06 9.457571318e-08 0 0 -5.100174957e-06 9.457571318e-08 -4.15002564e-10 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.001576199694 2.528725281e-05 4.576864778e-06 0 0 -2.528725281e-05 3.527620512e-07 7.119078879e-08 0 0 -4.576864778e-06 7.119078879e-08 1.319547568e-08 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.001112449014 1.219410282e-05 3.801609365e-06 0 0 -1.219410282e-05 1.151283687e-07 4.734009446e-08 0 0 -3.801609365e-06 4.734009446e-08 1.125782517e-08 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0001534934706 -1.49957405e-06 -7.097785117e-07 0 0 --1.49957405e-06 -8.071800421e-09 -9.216977208e-09 0 0 --7.097785117e-07 -9.216977208e-09 -2.490040643e-09 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0002320431094 -4.400993524e-06 -9.630223412e-07 0 0 --4.400993524e-06 -6.951002806e-08 -1.879995258e-08 0 0 --9.630223412e-07 -1.879995258e-08 -3.976219963e-09 0 0 -0 0 0 0 0 -0 0 0 0 0 --4.622377918e-05 -6.546747402e-07 -8.225905604e-08 0 0 --6.546747402e-07 -9.166061595e-09 -1.168126791e-09 0 0 --8.225905604e-08 -1.168126791e-09 -1.462975765e-10 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.14888266e-05 -4.028952883e-07 -4.068544859e-08 0 0 --4.028952883e-07 -1.141198914e-08 -7.673945396e-10 0 0 --4.068544859e-08 -7.673945396e-10 1.594820848e-11 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.05096996904 0.001118310875 0.0001783916846 4.168334476e-05 -8.48901969e-05 -0.001118310875 2.045971295e-05 3.172843036e-06 5.072436159e-07 -1.113512869e-06 -0.0001783916846 3.172843036e-06 4.89607909e-07 7.18361135e-08 -1.60930854e-07 -4.168334476e-05 5.072436159e-07 7.18361135e-08 -6.607162014e-09 5.414205294e-09 --8.48901969e-05 -1.113512869e-06 -1.60930854e-07 5.414205294e-09 3.76179333e-09 -0.03012398949 0.0005172583264 2.137784965e-05 0.0001960756775 1.405071869e-05 -0.0005172583264 -5.565107125e-06 -5.508299227e-07 -1.201164005e-06 -1.471383562e-07 -2.137784965e-05 -5.508299227e-07 -4.314968469e-08 -1.510858825e-07 -1.470651812e-08 -0.0001960756775 -1.201164005e-06 -1.510858825e-07 -1.680995783e-07 -3.135356742e-08 -1.405071869e-05 -1.471383562e-07 -1.470651812e-08 -3.135356742e-08 -3.888461494e-09 --0.002675290755 -0.0003589343887 -4.019554134e-05 -4.126660444e-05 -1.020293391e-05 --0.0003589343887 -2.857343296e-05 -1.58057683e-06 -8.177911097e-06 -1.979927399e-06 --4.019554134e-05 -1.58057683e-06 1.382147779e-07 -1.134203553e-06 -2.722464057e-07 --4.126660444e-05 -8.177911097e-06 -1.134203553e-06 -2.802956484e-07 -7.496821725e-08 --1.020293391e-05 -1.979927399e-06 -2.722464057e-07 -7.496821725e-08 -1.984638902e-08 --0.006560218717 -0.0003757931567 1.316851698e-05 -0.0001863703811 -6.463085843e-05 --0.0003757931567 -2.053183871e-05 6.835032052e-08 -8.424149172e-06 -2.919118332e-06 -1.316851698e-05 6.835032052e-08 4.465335172e-07 -1.178449432e-06 -4.102352628e-07 --0.0001863703811 -8.424149172e-06 -1.178449432e-06 -1.98225891e-07 -6.360786647e-08 --6.463085843e-05 -2.919118332e-06 -4.102352628e-07 -6.360786647e-08 -2.027269987e-08 --0.00131400813 -8.32947575e-05 1.084738609e-05 -5.347967214e-05 -2.45558331e-05 --8.32947575e-05 -4.414646705e-06 2.258088762e-07 -2.031042124e-06 -9.303665639e-07 -1.084738609e-05 2.258088762e-07 1.568884279e-07 -2.837395158e-07 -1.314621622e-07 --5.347967214e-05 -2.031042124e-06 -2.837395158e-07 -4.237407401e-08 -1.598470436e-08 --2.45558331e-05 -9.303665639e-07 -1.314621622e-07 -1.598470436e-08 -5.739774705e-09 -0.0008642047863 3.39207799e-05 2.48010508e-06 1.312507196e-05 4.022553077e-07 -3.39207799e-05 1.252358326e-06 1.090043524e-07 3.916494488e-07 1.253543674e-08 -2.48010508e-06 1.090043524e-07 5.398375382e-09 5.58804133e-08 1.634135509e-09 -1.312507196e-05 3.916494488e-07 5.58804133e-08 6.354671754e-09 1.026267931e-09 -4.022553077e-07 1.253543674e-08 1.634135509e-09 1.026267931e-09 5.335416087e-11 -4.617555442e-05 2.687207808e-06 -4.564342078e-07 2.480153552e-06 7.92963268e-07 -2.687207808e-06 6.150532865e-08 -1.989766861e-09 3.174687977e-08 1.015435601e-08 --4.564342078e-07 -1.989766861e-09 -1.852372726e-09 4.643359277e-09 1.483520247e-09 -2.480153552e-06 3.174687977e-08 4.643359277e-09 -3.884504158e-10 -1.192912814e-10 -7.92963268e-07 1.015435601e-08 1.483520247e-09 -1.192912814e-10 -3.657202047e-11 --0.0001456880574 -8.18177629e-06 5.913128963e-07 -4.114044252e-06 -1.847838343e-06 --8.18177629e-06 -4.299482521e-07 1.225021748e-08 -1.734570408e-07 -7.775535909e-08 -5.913128963e-07 1.225021748e-08 1.247044626e-08 -2.416196103e-08 -1.096136384e-08 --4.114044252e-06 -1.734570408e-07 -2.416196103e-08 -3.903654009e-09 -1.454034482e-09 --1.847838343e-06 -7.775535909e-08 -1.096136384e-08 -1.454034482e-09 -5.17852553e-10 -4.383660568e-05 1.291203763e-06 5.062913666e-07 6.534521178e-08 -5.544399433e-07 -1.291203763e-06 3.749192286e-08 1.595881509e-08 2.106932094e-09 -1.829153848e-08 -5.062913666e-07 1.595881509e-08 3.822544157e-09 4.020238014e-10 -2.608375548e-09 -6.534521178e-08 2.106932094e-09 4.020238014e-10 3.597896892e-11 -1.654622359e-10 --5.544399433e-07 -1.829153848e-08 -2.608375548e-09 -1.654622359e-10 -1.005725932e-10 --7.843758256e-07 6.131957574e-07 -2.36483188e-07 9.435326144e-07 3.214271822e-07 -6.131957574e-07 4.177908425e-08 -4.813118651e-09 3.167260921e-08 1.0780423e-08 --2.36483188e-07 -4.813118651e-09 -2.256447723e-09 4.464483386e-09 1.524264841e-09 -9.435326144e-07 3.167260921e-08 4.464483386e-09 5.932710033e-10 1.884059519e-10 -3.214271822e-07 1.0780423e-08 1.524264841e-09 1.884059519e-10 5.951616441e-11 -1.007359312e-05 3.805350902e-07 -3.075068795e-08 2.257140486e-07 7.854299547e-08 -3.805350902e-07 9.001416292e-09 4.102263793e-11 3.303256754e-09 1.149994458e-09 --3.075068795e-08 4.102263793e-11 -1.75295477e-10 4.799947683e-10 1.669053031e-10 -2.257140486e-07 3.303256754e-09 4.799947683e-10 -1.966145322e-11 -6.315349315e-12 -7.854299547e-08 1.149994458e-09 1.669053031e-10 -6.315349315e-12 -2.014482694e-12 -1.458609724e-05 5.821616217e-07 6.966939719e-08 2.349995611e-07 -3.670028603e-08 -5.821616217e-07 2.215469612e-08 2.747654458e-09 7.391171831e-09 -1.138729643e-09 -6.966939719e-08 2.747654458e-09 3.317630543e-10 1.061747808e-09 -1.653397722e-10 -2.349995611e-07 7.391171831e-09 1.061747808e-09 1.281750772e-10 8.615520305e-12 --3.670028603e-08 -1.138729643e-09 -1.653397722e-10 8.615520305e-12 -6.041266416e-12 --3.420791905e-06 -1.261047561e-07 -2.15800446e-08 2.198210745e-08 3.885867806e-09 --1.261047561e-07 -3.87829933e-09 -7.354421446e-10 1.174603167e-09 2.116831988e-10 --2.15800446e-08 -7.354421446e-10 -1.314511323e-10 1.670825422e-10 2.985124979e-11 -2.198210745e-08 1.174603167e-09 1.670825422e-10 3.095086548e-11 7.38309764e-12 -3.885867806e-09 2.116831988e-10 2.985124979e-11 7.38309764e-12 1.664318655e-12 --0.2264733036 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.007487936792 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.2273810253 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.1542735296 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.02592921246 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.002910614929 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0004841600543 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.002299554324 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.001168777853 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.000558086442 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0001237810486 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0002538975668 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -3.635642052e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.06144352115 3.483536007e-05 0.001499913144 0 0 -3.483536007e-05 -0.2747433262 -0.001297175837 0 0 -0.001499913144 -0.001297175837 -0.2712959638 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0741128951 0.0095694371 -0.001242419731 0 0 -0.0095694371 -0.2149083601 0.0009004782281 0 0 --0.001242419731 0.0009004782281 -0.2245459173 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.1172698952 0.003673618118 -0.0001256196864 0 0 -0.003673618118 -0.04057270082 0.0004234349108 0 0 --0.0001256196864 0.0004234349108 -0.04302127304 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.02894551763 -0.00139902668 -9.024935398e-05 0 0 --0.00139902668 0.001172942867 -6.457436032e-05 0 0 --9.024935398e-05 -6.457436032e-05 0.00167861702 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.02773878857 -0.0004664356331 -0.000123064249 0 0 --0.0004664356331 -0.001296948938 -4.234311323e-05 0 0 --0.000123064249 -4.234311323e-05 -0.001022250017 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.007431592899 -0.000207721865 -1.321259159e-05 0 0 --0.000207721865 0.0006700790862 1.522324117e-05 0 0 --1.321259159e-05 1.522324117e-05 0.0006089426593 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.005798537932 0.0001520085605 -2.086431833e-06 0 0 -0.0001520085605 0.0001282597344 1.996284873e-06 0 0 --2.086431833e-06 1.996284873e-06 0.0001059179652 0 0 -0 0 0 0 0 -0 0 0 0 0 -3.984396769e-05 9.587353886e-06 2.71492729e-06 0 0 -9.587353886e-06 -0.0004253895687 -1.893618542e-06 0 0 -2.71492729e-06 -1.893618542e-06 -0.0004300527749 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.002260277101 -9.535353198e-05 4.504422803e-06 0 0 --9.535353198e-05 0.0001790795945 -3.140489697e-06 0 0 -4.504422803e-06 -3.140489697e-06 0.0002121311844 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.001199729084 3.7438926e-05 -3.882501249e-06 0 0 -3.7438926e-05 8.246294971e-05 1.79484199e-06 0 0 --3.882501249e-06 1.79484199e-06 7.444450348e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.828711792e-06 1.299684718e-05 -3.272834751e-06 0 0 -1.299684718e-05 -3.648843478e-05 1.937200035e-06 0 0 --3.272834751e-06 1.937200035e-06 -5.224177104e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0001588126383 -3.955324674e-06 -3.239006477e-07 0 0 --3.955324674e-06 2.748983252e-05 -1.276909416e-07 0 0 --3.239006477e-07 -1.276909416e-07 2.615117428e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0002539755776 1.746743316e-07 1.308391227e-06 0 0 -1.746743316e-07 1.271601299e-05 -7.484719297e-07 0 0 -1.308391227e-06 -7.484719297e-07 1.980096659e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.3218094719 0.004708819061 -0.0003140026535 0.001848938311 0.000155048939 -0.004708819061 0.2143916382 6.258382819e-05 -0.01165825659 0.0002187842107 --0.0003140026535 6.258382819e-05 0.2121677586 -0.0002746220744 0.00999687541 -0.001848938311 -0.01165825659 -0.0002746220744 -0.01602654361 2.524711916e-05 -0.000155048939 0.0002187842107 0.00999687541 2.524711916e-05 -0.009567639018 --0.08559554644 0.004064541828 -4.157004095e-05 0.002915782513 -6.143142884e-05 -0.004064541828 -0.135251452 -0.0001149658628 -0.04418159339 -0.0004419320294 --4.157004095e-05 -0.0001149658628 -0.1432421424 0.0005210097993 0.03559230899 -0.002915782513 -0.04418159339 0.0005210097993 -0.009148591088 -0.000242394368 --6.143142884e-05 -0.0004419320294 0.03559230899 -0.000242394368 -0.005273183613 -0.01446007574 0.005509691131 -0.0001800955636 0.0006507237956 0.000163104266 -0.005509691131 -0.06985683343 0.000836984291 -0.004399096768 -0.0004098700901 --0.0001800955636 0.000836984291 -0.07629252479 0.0004807344845 0.00206879915 -0.0006507237956 -0.004399096768 0.0004807344845 0.0001993435619 -3.178455918e-05 -0.000163104266 -0.0004098700901 0.00206879915 -3.178455918e-05 0.0003235345033 -0.05933073532 0.001353324017 0.0004858993067 -0.0002916314453 -3.061475975e-05 -0.001353324017 -0.009368294761 1.655628955e-05 0.002412865873 -4.41066802e-05 -0.0004858993067 1.655628955e-05 -0.008762010109 3.719619513e-05 -0.002726170796 --0.0002916314453 0.002412865873 3.719619513e-05 -0.0004252091181 3.325772822e-05 --3.061475975e-05 -4.41066802e-05 -0.002726170796 3.325772822e-05 -0.0005824859065 --0.00638969893 -4.642280688e-05 -6.851791123e-05 0.0001374041372 2.926834472e-05 --4.642280688e-05 -0.005369871037 -0.0001057891438 -0.0002262905063 1.317003544e-06 --6.851791123e-05 -0.0001057891438 -0.004585801942 -5.904737546e-06 -0.0001504415236 -0.0001374041372 -0.0002262905063 -5.904737546e-06 0.0001094102133 -4.792024329e-06 -2.926834472e-05 1.317003544e-06 -0.0001504415236 -4.792024329e-06 0.0001035492367 --0.0148594316 -0.0005551878904 -0.0001195898871 -1.161955454e-05 2.52856195e-06 --0.0005551878904 0.001665006959 3.468701377e-05 0.0001203461872 -2.965569736e-06 --0.0001195898871 3.468701377e-05 0.001393545206 5.154270397e-06 2.618586165e-06 --1.161955454e-05 0.0001203461872 5.154270397e-06 4.51503775e-06 -8.472210747e-08 -2.52856195e-06 -2.965569736e-06 2.618586165e-06 -8.472210747e-08 -6.541957814e-06 -0.0005732570765 -1.638747963e-05 1.53629682e-05 -9.10941317e-06 -2.210710412e-06 --1.638747963e-05 8.373635118e-06 2.238956442e-06 -7.446877269e-06 -1.309747448e-06 -1.53629682e-05 2.238956442e-06 1.661936521e-07 1.392218192e-06 1.751236507e-05 --9.10941317e-06 -7.446877269e-06 1.392218192e-06 -1.57037948e-05 -6.712179092e-07 --2.210710412e-06 -1.309747448e-06 1.751236507e-05 -6.712179092e-07 -1.995951264e-05 -0.0009374068459 5.536850283e-05 1.035151595e-05 7.493170513e-06 -8.362883697e-07 -5.536850283e-05 -0.0006255361222 -1.388446525e-05 -0.000125802084 2.491609931e-06 -1.035151595e-05 -1.388446525e-05 -0.0005702259905 -3.34584556e-06 7.364864193e-05 -7.493170513e-06 -0.000125802084 -3.34584556e-06 -2.503278643e-05 6.299343198e-07 --8.362883697e-07 2.491609931e-06 7.364864193e-05 6.299343198e-07 -8.492357551e-06 -5.557318014e-06 -3.070246826e-05 -3.670653029e-06 -9.763574062e-06 -5.439490283e-07 --3.070246826e-05 0.0004265489987 5.974456829e-06 8.54376796e-05 -7.48772822e-07 --3.670653029e-06 5.974456829e-06 0.0004094064964 9.163340444e-07 -6.290173774e-05 --9.763574062e-06 8.54376796e-05 9.163340444e-07 1.324997973e-05 8.62176835e-08 --5.439490283e-07 -7.48772822e-07 -6.290173774e-05 8.62176835e-08 7.590444991e-06 --5.3259708e-05 1.472308553e-05 -5.132991644e-06 6.632863531e-06 1.905667371e-06 -1.472308553e-05 2.207384245e-05 2.983372855e-06 1.307446665e-05 -9.326252972e-07 --5.132991644e-06 2.983372855e-06 5.13766218e-06 1.226505207e-06 -6.737833e-06 -6.632863531e-06 1.307446665e-05 1.226505207e-06 5.718598952e-06 -3.658789268e-07 -1.905667371e-06 -9.326252972e-07 -6.737833e-06 -3.658789268e-07 2.729908253e-06 --0.0002540939215 -5.141230764e-06 -1.796328134e-06 1.360922081e-06 -5.878550942e-08 --5.141230764e-06 3.951629638e-06 4.278366945e-07 -6.424777029e-06 -1.41884126e-07 --1.796328134e-06 4.278366945e-07 -6.014711056e-06 1.906181592e-07 7.948105236e-06 -1.360922081e-06 -6.424777029e-06 1.906181592e-07 -3.211420178e-06 -6.078745031e-08 --5.878550942e-08 -1.41884126e-07 7.948105236e-06 -6.078745031e-08 -2.66035213e-06 -0.0002154707216 1.779580242e-06 2.114163852e-06 -9.273955232e-07 -3.275088175e-07 -1.779580242e-06 5.527230411e-05 -1.183947109e-06 3.566124501e-06 4.721064177e-07 -2.114163852e-06 -1.183947109e-06 6.058129732e-05 -5.848863356e-07 -3.434734144e-06 --9.273955232e-07 3.566124501e-06 -5.848863356e-07 -2.507599843e-06 1.857031401e-07 --3.275088175e-07 4.721064177e-07 -3.434734144e-06 1.857031401e-07 -1.620961528e-06 -5.277323272e-05 3.589414306e-06 -9.202412543e-07 7.442935516e-07 3.936447096e-07 -3.589414306e-06 3.048343721e-05 9.23911862e-07 7.567255952e-06 -2.403279005e-07 --9.202412543e-07 9.23911862e-07 2.747430426e-05 3.009021384e-07 -5.822568706e-06 -7.442935516e-07 7.567255952e-06 3.009021384e-07 1.865413839e-06 -7.653048726e-08 -3.936447096e-07 -2.403279005e-07 -5.822568706e-06 -7.653048726e-08 1.233305504e-06 --0.019911321 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.02951191469 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.007763900414 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.00275171759 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0001174283981 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0001658310495 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --9.548511093e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --7.531313569e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -2.822517083e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -3.264856975e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -8.819485643e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.310896504e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -5.660862522e-07 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.05345737532 -0.04310132889 -1.513176395e-05 0 0 --0.04310132889 -0.02235975615 -0.0001853596666 0 0 --1.513176395e-05 -0.0001853596666 -6.791189344e-07 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.04123685881 -0.0181446176 -0.0002056714546 0 0 --0.0181446176 0.004016830957 -0.0001557540128 0 0 --0.0002056714546 -0.0001557540128 -6.70949909e-07 0 0 -0 0 0 0 0 -0 0 0 0 0 --7.9465188e-05 0.001495398836 -8.051252926e-07 0 0 -0.001495398836 0.0007701612161 6.070998018e-07 0 0 --8.051252926e-07 6.070998018e-07 -8.408684084e-10 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.002649957868 -0.002663067859 -1.231924952e-05 0 0 --0.002663067859 -0.002660168824 -1.287097625e-05 0 0 --1.231924952e-05 -1.287097625e-05 -4.228541955e-08 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0003314748892 0.0002349728685 6.809001468e-07 0 0 -0.0002349728685 0.0001290270774 3.406387056e-07 0 0 -6.809001468e-07 3.406387056e-07 8.612769133e-10 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0003450786076 -0.0001143270281 -8.446792087e-07 0 0 --0.0001143270281 -0.0003677643812 -1.226704084e-06 0 0 --8.446792087e-07 -1.226704084e-06 -3.527736147e-09 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.136993684e-05 -2.687531558e-06 -2.977964837e-08 0 0 --2.687531558e-06 -7.347834148e-06 1.052768081e-08 0 0 --2.977964837e-08 1.052768081e-08 7.647304526e-11 0 0 -0 0 0 0 0 -0 0 0 0 0 --5.009508627e-05 -5.482814857e-05 -1.695399741e-07 0 0 --5.482814857e-05 -4.903817648e-05 -1.880822883e-07 0 0 --1.695399741e-07 -1.880822883e-07 -5.732042005e-10 0 0 -0 0 0 0 0 -0 0 0 0 0 -6.914481749e-05 6.721842208e-06 1.77618371e-07 0 0 -6.721842208e-06 -2.405998867e-06 4.524754757e-08 0 0 -1.77618371e-07 4.524754757e-08 2.003648963e-10 0 0 -0 0 0 0 0 -0 0 0 0 0 -8.62020234e-05 3.816758486e-05 5.592042671e-08 0 0 -3.816758486e-05 1.562032743e-05 1.913883407e-08 0 0 -5.592042671e-08 1.913883407e-08 1.157482823e-11 0 0 -0 0 0 0 0 -0 0 0 0 0 -2.486625735e-05 6.863763769e-06 -1.835418942e-08 0 0 -6.863763769e-06 1.873831433e-06 -4.163673026e-09 0 0 --1.835418942e-08 -4.163673026e-09 -2.570510642e-11 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.40415973e-05 -7.501660205e-07 2.507511887e-09 0 0 --7.501660205e-07 -4.285031906e-07 -1.862108955e-09 0 0 -2.507511887e-09 -1.862108955e-09 -5.925697672e-12 0 0 -0 0 0 0 0 -0 0 0 0 0 -2.454755578e-05 6.316436823e-06 3.531193121e-08 0 0 -6.316436823e-06 1.604925582e-06 8.40767382e-09 0 0 -3.531193121e-08 8.40767382e-09 2.820592605e-11 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.06547837426 0.07516363454 0.0001273793174 -0.003059878246 0.0001633104363 -0.07516363454 0.02732024139 5.127550738e-05 -0.02191884827 -5.68851325e-05 -0.0001273793174 5.127550738e-05 9.490922594e-08 -3.559231059e-05 -7.57806371e-08 --0.003059878246 -0.02191884827 -3.559231059e-05 -0.005603059063 -8.391274353e-05 -0.0001633104363 -5.68851325e-05 -7.57806371e-08 -8.391274353e-05 -6.053462419e-07 --0.004212977571 -0.02025768082 -3.899756749e-05 -0.008963941692 -7.189690748e-05 --0.02025768082 -0.06536322159 -0.0001107004319 -0.01805476794 -0.000335244454 --3.899756749e-05 -0.0001107004319 -1.768401296e-07 -2.293124405e-05 -6.404303039e-07 --0.008963941692 -0.01805476794 -2.293124405e-05 0.000506098741 -0.0001447950597 --7.189690748e-05 -0.000335244454 -6.404303039e-07 -0.0001447950597 -1.223544996e-06 --0.002717550099 -0.003996245582 -6.387421373e-06 0.0004673564432 -1.812910611e-05 --0.003996245582 -0.005600566621 -8.178695495e-06 0.001404093667 -3.005552931e-05 --6.387421373e-06 -8.178695495e-06 -9.672295399e-09 4.251583687e-06 -5.754950144e-08 -0.0004673564432 0.001404093667 4.251583687e-06 0.001781103685 -5.701233252e-06 --1.812910611e-05 -3.005552931e-05 -5.754950144e-08 -5.701233252e-06 -7.916004936e-08 -4.393878087e-06 0.0001134572514 2.55720344e-07 6.269292498e-05 1.71862794e-07 -0.0001134572514 -0.002200698243 -3.548456163e-06 -0.00182488718 -1.311906922e-05 -2.55720344e-07 -3.548456163e-06 -5.204504524e-09 -3.165515652e-06 -2.473797834e-08 -6.269292498e-05 -0.00182488718 -3.165515652e-06 -0.001417063055 -9.33276536e-06 -1.71862794e-07 -1.311906922e-05 -2.473797834e-08 -9.33276536e-06 -5.33599643e-08 -0.0002545309046 0.0001985506157 8.806395059e-07 -5.542869002e-06 -1.007183847e-06 -0.0001985506157 -8.211160351e-06 7.165398326e-07 -0.0001156460922 -2.04020911e-06 -8.806395059e-07 7.165398326e-07 3.04151692e-09 1.015486427e-09 -3.257144158e-09 --5.542869002e-06 -0.0001156460922 1.015486427e-09 -7.586424655e-05 -8.34374932e-07 --1.007183847e-06 -2.04020911e-06 -3.257144158e-09 -8.34374932e-07 -5.664670615e-09 -0.0001480347259 0.0002374832443 4.959542865e-07 9.186045933e-06 -7.254624565e-07 -0.0002374832443 0.0003110560706 6.475530856e-07 -7.774738482e-05 -2.076799758e-06 -4.959542865e-07 6.475530856e-07 1.347995314e-09 -1.650757368e-07 -4.363890884e-09 -9.186045933e-06 -7.774738482e-05 -1.650757368e-07 -0.0001217525348 -1.252561405e-06 --7.254624565e-07 -2.076799758e-06 -4.363890884e-09 -1.252561405e-06 -8.365417085e-09 -2.658497832e-06 -7.780728752e-06 2.109871958e-09 -8.282867746e-06 3.498756272e-08 --7.780728752e-06 -0.0001300547028 -1.869626713e-07 -8.805107141e-05 -4.471357886e-08 -2.109871958e-09 -1.869626713e-07 -2.121895475e-10 -1.394111993e-07 9.60072099e-11 --8.282867746e-06 -8.805107141e-05 -1.394111993e-07 -5.670335803e-05 -6.662197966e-08 -3.498756272e-08 -4.471357886e-08 9.60072099e-11 -6.662197966e-08 4.386850546e-10 -6.868096052e-06 -1.320000663e-05 -2.610838852e-08 -1.282507697e-05 7.343346894e-10 --1.320000663e-05 -5.240648199e-05 -1.182278901e-07 -1.974214909e-05 -3.710949805e-07 --2.610838852e-08 -1.182278901e-07 -2.653977709e-10 -4.73656039e-08 -8.032583287e-10 --1.282507697e-05 -1.974214909e-05 -4.73656039e-08 -1.387646509e-06 -2.123701833e-07 -7.343346894e-10 -3.710949805e-07 -8.032583287e-10 -2.123701833e-07 -1.75709622e-09 -5.061766529e-05 7.055758759e-05 1.487618226e-07 5.119653582e-06 1.135480173e-07 -7.055758759e-05 9.830708201e-05 2.072449703e-07 7.572243936e-06 1.573485051e-07 -1.487618226e-07 2.072449703e-07 4.368893154e-10 1.618761992e-08 3.3127492e-10 -5.119653582e-06 7.572243936e-06 1.618761992e-08 -3.665096173e-06 2.040844269e-08 -1.135480173e-07 1.573485051e-07 3.3127492e-10 2.040844269e-08 2.356785519e-10 -1.613616751e-05 3.668964444e-05 6.520624524e-08 1.208672233e-05 -1.08175339e-07 -3.668964444e-05 7.45343341e-05 1.383334543e-07 2.442576816e-05 -1.408691859e-07 -6.520624524e-08 1.383334543e-07 2.524066523e-10 4.542819826e-08 -3.197389784e-10 -1.208672233e-05 2.442576816e-05 4.542819826e-08 8.002539323e-06 -4.489117927e-08 --1.08175339e-07 -1.408691859e-07 -3.197389784e-10 -4.489117927e-08 -5.173634034e-10 -6.646282995e-06 5.585167526e-06 1.11446069e-08 -1.333472192e-06 -2.144485961e-08 -5.585167526e-06 -1.238365466e-06 -2.537725781e-09 -3.210404702e-06 -1.181094703e-08 -1.11446069e-08 -2.537725781e-09 -5.197603024e-12 -6.429519334e-09 -2.349765817e-11 --1.333472192e-06 -3.210404702e-06 -6.429519334e-09 -4.687221816e-07 6.490447271e-09 --2.144485961e-08 -1.181094703e-08 -2.349765817e-11 6.490447271e-09 6.269239189e-11 -6.820059013e-06 5.506016914e-06 1.010476937e-08 -1.611901581e-06 -1.200815032e-09 -5.506016914e-06 -3.088802896e-06 -6.12623709e-09 -4.058296665e-06 -1.837694072e-08 -1.010476937e-08 -6.12623709e-09 -1.211059332e-11 -7.615331245e-09 -3.478307545e-11 --1.611901581e-06 -4.058296665e-06 -7.615331245e-09 -6.279112756e-07 -6.086261264e-09 --1.200815032e-09 -1.837694072e-08 -3.478307545e-11 -6.086261264e-09 -4.000922443e-11 -1.048963549e-05 1.726603058e-05 3.293515925e-08 3.351927349e-06 4.498911603e-09 -1.726603058e-05 2.572978073e-05 5.022796607e-08 5.135612038e-06 1.064586691e-08 -3.293515925e-08 5.022796607e-08 9.751049524e-11 9.959132276e-09 1.892413999e-11 -3.351927349e-06 5.135612038e-06 9.959132276e-09 1.016943475e-06 1.897386173e-09 -4.498911603e-09 1.064586691e-08 1.892413999e-11 1.897386173e-09 -1.974033325e-12 --0.02147642624 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.03140938598 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.006543840933 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.003935851098 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.921427377e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -9.360533807e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --4.693692933e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0001002661004 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.595418016e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -4.251421706e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -4.444416648e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.39084473e-08 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.607082845e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.05463806031 0.02045029259 0.03759162641 0 0 -0.02045029259 -0.004068021198 -0.007810369806 0 0 -0.03759162641 -0.007810369806 -0.01497771539 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.05118856648 0.01039275849 0.01931833321 0 0 -0.01039275849 0.0006773522533 0.001233325724 0 0 -0.01931833321 0.001233325724 0.002244903186 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0007812425604 -0.001092376212 -0.0019297902 0 0 --0.001092376212 0.0004925231909 0.0008930856626 0 0 --0.0019297902 0.0008930856626 0.001618608379 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.002866816845 0.001447965315 0.00262345407 0 0 -0.001447965315 -0.0007300439529 -0.001323947259 0 0 -0.00262345407 -0.001323947259 -0.002399811437 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.000352188657 -8.988347018e-05 -0.0001673496391 0 0 --8.988347018e-05 2.274860468e-05 4.23393659e-05 0 0 --0.0001673496391 4.23393659e-05 7.880018817e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0003454683285 7.332881404e-05 0.0001131839437 0 0 -7.332881404e-05 -8.929010612e-05 -0.0001578259099 0 0 -0.0001131839437 -0.0001578259099 -0.0002783019301 0 0 -0 0 0 0 0 -0 0 0 0 0 --6.993307502e-05 3.193167059e-05 5.959248197e-05 0 0 -3.193167059e-05 -1.428407059e-05 -2.668699588e-05 0 0 -5.959248197e-05 -2.668699588e-05 -4.985646935e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --4.79548632e-05 2.116536881e-05 3.925293918e-05 0 0 -2.116536881e-05 -5.980668417e-06 -1.109790282e-05 0 0 -3.925293918e-05 -1.109790282e-05 -2.059357409e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0001069625598 -7.427856956e-06 -1.50198556e-05 0 0 --7.427856956e-06 -1.930404671e-06 -3.303029182e-06 0 0 --1.50198556e-05 -3.303029182e-06 -5.612284519e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 -8.271947324e-05 -1.76099486e-05 -3.352760832e-05 0 0 --1.76099486e-05 3.614417039e-06 6.923741469e-06 0 0 --3.352760832e-05 6.923741469e-06 1.324928881e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -7.688704463e-06 1.472380213e-06 2.58429825e-06 0 0 -1.472380213e-06 -2.228593223e-07 -4.782233302e-07 0 0 -2.58429825e-06 -4.782233302e-07 -1.007199294e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.276705818e-05 7.838488257e-07 1.286024458e-06 0 0 -7.838488257e-07 -9.127133654e-08 -1.969333171e-07 0 0 -1.286024458e-06 -1.969333171e-07 -4.164939652e-07 0 0 -0 0 0 0 0 -0 0 0 0 0 -3.307252499e-05 -4.966391016e-06 -9.427992222e-06 0 0 --4.966391016e-06 7.223985055e-07 1.378285295e-06 0 0 --9.427992222e-06 1.378285295e-06 2.627561001e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0728378823 -0.03488362491 -0.06377704356 0.002228159602 -0.004002683546 --0.03488362491 0.005286364781 0.009726218419 -0.00492744231 0.007547996516 --0.06377704356 0.009726218419 0.01789392869 -0.008988037376 0.01376964628 -0.002228159602 -0.00492744231 -0.008988037376 -0.001236737604 0.00178099842 --0.004002683546 0.007547996516 0.01376964628 0.00178099842 -0.002556573958 --0.006797018279 0.01189367752 0.02194234236 0.005342152546 -0.008134741455 -0.01189367752 -0.01567206906 -0.02877348645 -0.004593004351 0.007005534911 -0.02194234236 -0.02877348645 -0.0528222985 -0.008344453674 0.01272811632 -0.005342152546 -0.004593004351 -0.008344453674 0.0002000058354 -0.0002938678755 --0.008134741455 0.007005534911 0.01272811632 -0.0002938678755 0.0004312336373 --0.00418808888 0.00288958278 0.005295179232 -0.0001840817471 0.0003917747888 -0.00288958278 -0.001938444208 -0.003543936604 0.0003092452309 -0.0005604098508 -0.005295179232 -0.003543936604 -0.006477883048 0.0005939977653 -0.001070419703 --0.0001840817471 0.0003092452309 0.0005939977653 0.0005932120578 -0.0009399940485 -0.0003917747888 -0.0005604098508 -0.001070419703 -0.0009399940485 0.00148713962 --9.589295593e-06 -9.085312564e-05 -0.0001681431669 -7.123120076e-05 0.0001107734885 --9.085312564e-05 -0.0003698568377 -0.0006808808664 -0.0003799348555 0.0006178887034 --0.0001681431669 -0.0006808808664 -0.001253392529 -0.0007009769258 0.001140354016 --7.123120076e-05 -0.0003799348555 -0.0007009769258 -0.0003519238838 0.0005635324806 -0.0001107734885 0.0006178887034 0.001140354016 0.0005635324806 -0.0009001397712 -0.0004175317212 -0.0001122478106 -0.0002151571467 5.029113363e-05 -9.761382008e-05 --0.0001122478106 -5.60394153e-05 -9.878268082e-05 -8.922130325e-05 0.0001510086199 --0.0002151571467 -9.878268082e-05 -0.0001736621723 -0.0001634388457 0.00027695951 -5.029113363e-05 -8.922130325e-05 -0.0001634388457 -6.041148669e-05 9.779297575e-05 --9.761382008e-05 0.0001510086199 0.00027695951 9.779297575e-05 -0.0001577339105 -0.0001075969235 -8.228254404e-05 -0.0001512008224 -7.692682159e-06 3.731161372e-06 --8.228254404e-05 5.785431963e-05 0.000105938119 -3.130494076e-06 1.259130651e-05 --0.0001512008224 0.000105938119 0.000193955269 -6.417244091e-06 2.427654427e-05 --7.692682159e-06 -3.130494076e-06 -6.417244091e-06 -1.547500395e-05 2.719263749e-05 -3.731161372e-06 1.259130651e-05 2.427654427e-05 2.719263749e-05 -4.692326786e-05 -7.857382205e-06 8.060249193e-06 1.438415861e-05 1.150864096e-05 -1.860883701e-05 -8.060249193e-06 -3.918175373e-05 -7.183876189e-05 -3.131692821e-05 4.922148391e-05 -1.438415861e-05 -7.183876189e-05 -0.0001316982437 -5.762863415e-05 9.059770933e-05 -1.150864096e-05 -3.131692821e-05 -5.762863415e-05 -2.233335165e-05 3.482469806e-05 --1.860883701e-05 4.922148391e-05 9.059770933e-05 3.482469806e-05 -5.427071846e-05 -2.013222546e-05 1.796233756e-06 3.310173082e-06 8.232031879e-06 -1.252951375e-05 -1.796233756e-06 -5.197183311e-06 -9.64698669e-06 -1.670331577e-06 2.538811561e-06 -3.310173082e-06 -9.64698669e-06 -1.790666261e-05 -3.109309173e-06 4.725997847e-06 -8.232031879e-06 -1.670331577e-06 -3.109309173e-06 2.286612006e-06 -3.481897734e-06 --1.252951375e-05 2.538811561e-06 4.725997847e-06 -3.481897734e-06 5.301994426e-06 -5.565968035e-05 -3.781135262e-05 -6.958197598e-05 -5.84009842e-06 7.752956565e-06 --3.781135262e-05 2.558622454e-05 4.71053263e-05 4.236305069e-06 -5.724094877e-06 --6.958197598e-05 4.71053263e-05 8.671868654e-05 7.740733389e-06 -1.044005073e-05 --5.84009842e-06 4.236305069e-06 7.740733389e-06 -1.090678869e-07 4.138230319e-07 -7.752956565e-06 -5.724094877e-06 -1.044005073e-05 4.138230319e-07 -1.006783731e-06 -1.313425609e-05 -1.260717889e-05 -2.310185686e-05 -5.047011942e-06 7.124877794e-06 --1.260717889e-05 1.046618863e-05 1.923896587e-05 3.981984729e-06 -5.722212992e-06 --2.310185686e-05 1.923896587e-05 3.536252553e-05 7.328562936e-06 -1.05268036e-05 --5.047011942e-06 3.981984729e-06 7.328562936e-06 1.484420363e-06 -2.148750339e-06 -7.124877794e-06 -5.722212992e-06 -1.05268036e-05 -2.148750339e-06 3.102266508e-06 -5.644619144e-06 -4.499873862e-07 -8.019948866e-07 1.640816895e-06 -2.652608789e-06 --4.499873862e-07 -1.755244016e-06 -3.238435305e-06 -9.756715349e-07 1.409023091e-06 --8.019948866e-07 -3.238435305e-06 -5.974793366e-06 -1.790850498e-06 2.584882405e-06 -1.640816895e-06 -9.756715349e-07 -1.790850498e-06 7.844242074e-08 -2.061930925e-07 --2.652608789e-06 1.409023091e-06 2.584882405e-06 -2.061930925e-07 4.458572406e-07 -8.127254038e-06 -3.520865986e-06 -6.44285082e-06 3.489271738e-07 -6.280595542e-07 --3.520865986e-06 1.220961571e-07 2.248578091e-07 -7.139454142e-07 1.087999684e-06 --6.44285082e-06 2.248578091e-07 4.140900257e-07 -1.30587749e-06 1.990102746e-06 -3.489271738e-07 -7.139454142e-07 -1.30587749e-06 -2.10735916e-07 3.002747606e-07 --6.280595542e-07 1.087999684e-06 1.990102746e-06 3.002747606e-07 -4.258897255e-07 -1.114918329e-05 -7.625252639e-06 -1.401363056e-05 -1.591220016e-06 2.212656177e-06 --7.625252639e-06 4.800720321e-06 8.83971633e-06 1.035054229e-06 -1.472494144e-06 --1.401363056e-05 8.83971633e-06 1.627608925e-05 1.904396841e-06 -2.707811306e-06 --1.591220016e-06 1.035054229e-06 1.904396841e-06 2.20263518e-07 -3.105508024e-07 -2.212656177e-06 -1.472494144e-06 -2.707811306e-06 -3.105508024e-07 4.351035406e-07 --0.02192362073 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.03186697029 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.005753164083 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.004513628887 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.579485565e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -5.073484919e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.518963439e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0001024794048 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --6.100720971e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -4.623515731e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -2.447588493e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.758482705e-08 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -2.415103576e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.05763242285 0.0201026517 -0.03703777816 0 0 -0.0201026517 -0.003879072886 0.007639909523 0 0 --0.03703777816 0.007639909523 -0.01500661373 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.05501356823 0.01122425533 -0.02143485517 0 0 -0.01122425533 0.0006105634019 -0.0009351228875 0 0 --0.02143485517 -0.0009351228875 0.001363290829 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.001427671389 -0.001207717179 0.002115079332 0 0 --0.001207717179 0.0006303893745 -0.001145023244 0 0 -0.002115079332 -0.001145023244 0.002078140435 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.002773957974 0.001474619296 -0.002697560482 0 0 -0.001474619296 -0.0007777459114 0.001425170527 0 0 --0.002697560482 0.001425170527 -0.002610576782 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0003178904608 -4.629716215e-05 9.176189045e-05 0 0 --4.629716215e-05 3.563466649e-06 -7.956799172e-06 0 0 -9.176189045e-05 -7.956799172e-06 1.729097479e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.000349614871 6.262446367e-05 -9.596257278e-05 0 0 -6.262446367e-05 -8.144515918e-05 0.0001450557816 0 0 --9.596257278e-05 0.0001450557816 -0.0002577381197 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.000102553712 4.788713614e-05 -8.909492114e-05 0 0 -4.788713614e-05 -2.2360228e-05 4.160086435e-05 0 0 --8.909492114e-05 4.160086435e-05 -7.73966609e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --4.011642865e-05 1.709456571e-05 -3.220057183e-05 0 0 -1.709456571e-05 -2.902963366e-06 5.629999738e-06 0 0 --3.220057183e-05 5.629999738e-06 -1.090382026e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0001230267684 -1.025857267e-05 2.113158401e-05 0 0 --1.025857267e-05 -2.027661952e-06 3.320147171e-06 0 0 -2.113158401e-05 3.320147171e-06 -5.329121472e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 -7.618573402e-05 -1.669947592e-05 3.184688372e-05 0 0 --1.669947592e-05 3.60689694e-06 -6.89817087e-06 0 0 -3.184688372e-05 -6.89817087e-06 1.318542722e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.340787012e-06 2.786845039e-06 -5.180399015e-06 0 0 -2.786845039e-06 -1.95379381e-07 4.661655005e-07 0 0 --5.180399015e-06 4.661655005e-07 -1.05974092e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.359383438e-05 5.665602397e-07 -8.804264869e-07 0 0 -5.665602397e-07 -1.063585072e-07 2.234043397e-07 0 0 --8.804264869e-07 2.234043397e-07 -4.634862212e-07 0 0 -0 0 0 0 0 -0 0 0 0 0 -3.561964225e-05 -5.595989139e-06 1.074920711e-05 0 0 --5.595989139e-06 8.343204175e-07 -1.615605646e-06 0 0 -1.074920711e-05 -1.615605646e-06 3.124553013e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.07364860861 -0.0348293754 0.06405806406 0.001777409301 0.003549610026 --0.0348293754 0.005429597497 -0.0100553906 -0.004659256676 -0.007070951712 -0.06405806406 -0.0100553906 0.01862084939 0.008545323433 0.01297102899 -0.001777409301 -0.004659256676 0.008545323433 -0.001277779496 -0.001779230024 -0.003549610026 -0.007070951712 0.01297102899 -0.001779230024 -0.002462297035 --0.006651208145 0.01191564866 -0.0221360776 0.005553008038 0.008264016381 -0.01191564866 -0.0157541172 0.02910479277 -0.004881376337 -0.007130380691 --0.0221360776 0.02910479277 -0.05376300186 0.008921404438 0.01302385429 -0.005553008038 -0.004881376337 0.008921404438 -4.576964796e-05 5.338362768e-05 -0.008264016381 -0.007130380691 0.01302385429 5.338362768e-05 0.0002634759983 --0.004738733882 0.00334362241 -0.006163262128 -8.076879672e-05 -0.0002978173075 -0.00334362241 -0.002311193931 0.004250865788 0.0002287824455 0.0004858458063 --0.006163262128 0.004250865788 -0.007816558845 -0.0004550807106 -0.0009491070035 --8.076879672e-05 0.0002287824455 -0.0004550807106 0.0006128798834 0.0009807369213 --0.0002978173075 0.0004858458063 -0.0009491070035 0.0009807369213 0.001563402592 --4.617454645e-05 -0.0001291218642 0.0002401866008 -0.0001268243402 -0.0001990141383 --0.0001291218642 -0.0002849352197 0.0005282350732 -0.000336369932 -0.0005401172181 -0.0002401866008 0.0005282350732 -0.0009792300332 0.0006252706282 0.001004316116 --0.0001268243402 -0.000336369932 0.0006252706282 -0.000343950663 -0.0005426798177 --0.0001990141383 -0.0005401172181 0.001004316116 -0.0005426798177 -0.0008542250444 -0.0005084695919 -0.0001327889473 0.0002575350246 7.898262879e-05 0.0001448450906 --0.0001327889473 -7.514791301e-05 0.0001334130437 -0.000125178743 -0.0002070065065 -0.0002575350246 0.0001334130437 -0.0002362145045 0.0002310365757 0.0003824795943 -7.898262879e-05 -0.000125178743 0.0002310365757 -8.726249745e-05 -0.0001385557119 -0.0001448450906 -0.0002070065065 0.0003824795943 -0.0001385557119 -0.0002193478983 -7.463553011e-05 -6.306472548e-05 0.0001163104512 -8.70265477e-06 -8.341140089e-06 --6.306472548e-05 5.156141436e-05 -9.483180257e-05 3.278061408e-06 2.105328702e-07 -0.0001163104512 -9.483180257e-05 0.0001743733148 -5.424725847e-06 6.536086835e-07 --8.70265477e-06 3.278061408e-06 -5.424725847e-06 -8.606199032e-06 -1.516882582e-05 --8.341140089e-06 2.105328702e-07 6.536086835e-07 -1.516882582e-05 -2.614886909e-05 -1.055643995e-05 6.798589371e-06 -1.204821587e-05 1.256245081e-05 2.058978264e-05 -6.798589371e-06 -3.839943798e-05 7.082497048e-05 -3.280162812e-05 -5.161482746e-05 --1.204821587e-05 7.082497048e-05 -0.0001306109829 6.078241024e-05 9.567818654e-05 -1.256245081e-05 -3.280162812e-05 6.078241024e-05 -2.41398536e-05 -3.751286835e-05 -2.058978264e-05 -5.161482746e-05 9.567818654e-05 -3.751286835e-05 -5.822755252e-05 -3.207219553e-05 -3.13498378e-06 5.941594345e-06 8.975414736e-06 1.399976386e-05 --3.13498378e-06 -1.977124648e-06 3.707059722e-06 -1.351125476e-06 -1.939984328e-06 -5.941594345e-06 3.707059722e-06 -6.950536001e-06 2.552408367e-06 3.666729997e-06 -8.975414736e-06 -1.351125476e-06 2.552408367e-06 2.413467791e-06 3.799254204e-06 -1.399976386e-05 -1.939984328e-06 3.666729997e-06 3.799254204e-06 5.967959016e-06 -5.074538126e-05 -3.689581728e-05 6.824479418e-05 -7.695700016e-06 -1.059582192e-05 --3.689581728e-05 2.641661569e-05 -4.891376387e-05 5.931779082e-06 8.295178144e-06 -6.824479418e-05 -4.891376387e-05 9.056343611e-05 -1.092910767e-05 -1.526827346e-05 --7.695700016e-06 5.931779082e-06 -1.092910767e-05 8.90710421e-07 1.121211535e-06 --1.059582192e-05 8.295178144e-06 -1.526827346e-05 1.121211535e-06 1.358929971e-06 -1.06679502e-05 -9.602789627e-06 1.770217603e-05 -3.739725032e-06 -5.371539914e-06 --9.602789627e-06 7.366160208e-06 -1.362839249e-05 2.690859105e-06 3.905266729e-06 -1.770217603e-05 -1.362839249e-05 2.521213603e-05 -4.98650605e-06 -7.235014998e-06 --3.739725032e-06 2.690859105e-06 -4.98650605e-06 9.539302002e-07 1.391456536e-06 --5.371539914e-06 3.905266729e-06 -7.235014998e-06 1.391456536e-06 2.027913821e-06 -5.609538596e-06 -1.060671654e-07 1.685797185e-07 1.863358016e-06 2.941082642e-06 --1.060671654e-07 -1.909533787e-06 3.549476501e-06 -9.462767649e-07 -1.339733754e-06 -1.685797185e-07 3.549476501e-06 -6.597686699e-06 1.749205518e-06 2.474974262e-06 -1.863358016e-06 -9.462767649e-07 1.749205518e-06 1.847587357e-07 3.649435051e-07 -2.941082642e-06 -1.339733754e-06 2.474974262e-06 3.649435051e-07 6.79370008e-07 -8.893766826e-06 -4.477786177e-06 8.251923772e-06 -1.758245072e-07 -1.760954481e-07 --4.477786177e-06 9.576252095e-07 -1.774964373e-06 -4.305642715e-07 -6.57141052e-07 -8.251923772e-06 -1.774964373e-06 3.289718908e-06 7.893871133e-07 1.205153248e-06 --1.758245072e-07 -4.305642715e-07 7.893871133e-07 -2.043018533e-07 -2.950441502e-07 --1.760954481e-07 -6.57141052e-07 1.205153248e-06 -2.950441502e-07 -4.254207817e-07 -1.054678403e-05 -6.874255549e-06 1.271931053e-05 -1.351051561e-06 -1.849494454e-06 --6.874255549e-06 4.128704328e-06 -7.654869039e-06 8.42958071e-07 1.181654866e-06 -1.271931053e-05 -7.654869039e-06 1.419184214e-05 -1.561379139e-06 -2.187450927e-06 --1.351051561e-06 8.42958071e-07 -1.561379139e-06 1.690441948e-07 2.34373378e-07 --1.849494454e-06 1.181654866e-06 -2.187450927e-06 2.34373378e-07 3.227163679e-07 -0.01684440642 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.02143009615 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.004051944228 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -3.27858707e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.949225118e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0001063320467 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -5.468247593e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --7.203517399e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.161534518e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --5.157457724e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -3.22083747e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.489177435e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -9.909623477e-08 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.09627551237 -0.1322932451 0.0004560750708 0 0 --0.1322932451 0.04316066906 -7.686126032e-05 0 0 -0.0004560750708 -7.686126032e-05 3.999196094e-08 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.03839034612 -0.03935609082 0.0002810245373 0 0 --0.03935609082 0.08082217604 -0.0002256489654 0 0 -0.0002810245373 -0.0002256489654 1.210724118e-07 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.004197079831 0.002502390172 3.867196688e-05 0 0 -0.002502390172 0.04415806806 -0.000165827801 0 0 -3.867196688e-05 -0.000165827801 9.019195246e-08 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0026790577 0.004984670368 -2.987448626e-05 0 0 -0.004984670368 0.007708471016 -3.337829065e-05 0 0 --2.987448626e-05 -3.337829065e-05 1.824829765e-08 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0006055070976 0.0006288718391 -4.328495933e-06 0 0 -0.0006288718391 -0.001127118356 3.124794595e-06 0 0 --4.328495933e-06 3.124794595e-06 -1.675984883e-09 0 0 -0 0 0 0 0 -0 0 0 0 0 -9.823794139e-05 -0.0001722284356 -2.543893146e-07 0 0 --0.0001722284356 -0.001850733746 2.472932615e-06 0 0 --2.543893146e-07 2.472932615e-06 -1.249803533e-09 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0003054079634 -0.0006299760843 8.484084855e-07 0 0 --0.0006299760843 -0.001021507526 1.031929995e-06 0 0 -8.484084855e-07 1.031929995e-06 -5.016308685e-10 0 0 -0 0 0 0 0 -0 0 0 0 0 -2.080138695e-05 5.351754524e-05 -1.281829878e-07 0 0 -5.351754524e-05 0.0001343930086 -2.838497524e-07 0 0 --1.281829878e-07 -2.838497524e-07 1.496871222e-10 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.533959886e-05 2.958921204e-06 2.553662234e-07 0 0 -2.958921204e-06 0.0003106469547 -8.691371454e-07 0 0 -2.553662234e-07 -8.691371454e-07 4.663898154e-10 0 0 -0 0 0 0 0 -0 0 0 0 0 -3.073265998e-05 4.990621835e-05 -3.433805916e-07 0 0 -4.990621835e-05 4.600885203e-05 -1.961485076e-07 0 0 --3.433805916e-07 -1.961485076e-07 1.071799817e-10 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.558426781e-05 -2.490773912e-05 1.124754467e-07 0 0 --2.490773912e-05 -1.883438989e-05 5.151806282e-08 0 0 -1.124754467e-07 5.151806282e-08 -2.761163297e-11 0 0 -0 0 0 0 0 -0 0 0 0 0 -4.249217449e-06 4.39794952e-06 -2.340054024e-08 0 0 -4.39794952e-06 -8.078062386e-06 1.755012991e-08 0 0 --2.340054024e-08 1.755012991e-08 -9.273466749e-12 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.196987708e-05 -2.053797973e-05 2.284659272e-08 0 0 --2.053797973e-05 -1.659017384e-05 1.26574686e-08 0 0 -2.284659272e-08 1.26574686e-08 -5.828682971e-12 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.01068120371 0.004202300016 8.773526891e-06 -0.01330852723 2.250113572e-05 -0.004202300016 -0.03596559262 3.277568561e-05 -0.02604471586 4.872517292e-05 -8.773526891e-06 3.277568561e-05 -1.565142436e-08 5.288806694e-06 -1.259824728e-08 --0.01330852723 -0.02604471586 5.288806694e-06 0.00507183111 -5.980528929e-06 -2.250113572e-05 4.872517292e-05 -1.259824728e-08 -5.980528929e-06 5.139890538e-09 -0.01040545309 0.001272120405 4.210155686e-05 -0.01407077324 -1.935672539e-05 -0.001272120405 -0.02398759257 7.664741194e-05 -0.01453501198 -3.672188485e-05 -4.210155686e-05 7.664741194e-05 -4.14020597e-08 -1.898060069e-05 2.342487436e-08 --0.01407077324 -0.01453501198 -1.898060069e-05 0.01222531408 7.939809755e-06 --1.935672539e-05 -3.672188485e-05 2.342487436e-08 7.939809755e-06 -1.287913095e-08 -0.003641472163 -0.0005445097897 3.302621917e-05 -0.005203433173 -2.968515597e-05 --0.0005445097897 -0.004381513376 3.271441984e-05 -0.001299264458 -3.050602786e-05 -3.302621917e-05 3.271441984e-05 -1.813876467e-08 -2.966634262e-05 2.559376352e-08 --0.005203433173 -0.001299264458 -2.966634262e-05 0.006468452448 2.61526424e-05 --2.968515597e-05 -3.050602786e-05 2.559376352e-08 2.61526424e-05 -3.162645174e-08 -0.0002512912741 -0.0001707115054 7.822686911e-06 -0.0003425431207 -9.11694482e-06 --0.0001707115054 0.0001102417594 -6.486485019e-06 0.0002132834999 7.610249154e-06 -7.822686911e-06 -6.486485019e-06 3.65704833e-09 -1.463679879e-05 6.08748374e-09 --0.0003425431207 0.0002132834999 -1.463679879e-05 0.0004011093421 1.722989259e-05 --9.11694482e-06 7.610249154e-06 6.08748374e-09 1.722989259e-05 -1.960313688e-08 -9.234468441e-08 -1.941465486e-07 7.144873126e-08 1.197041872e-06 -9.213003908e-08 --1.941465486e-07 -9.931025805e-05 -2.468115967e-06 -0.0001032340538 3.255877227e-06 -7.144873126e-08 -2.468115967e-06 1.402790931e-09 -1.414948581e-06 -1.038853906e-10 -1.197041872e-06 -0.0001032340538 -1.414948581e-06 -8.620936586e-05 1.898598359e-06 --9.213003908e-08 3.255877227e-06 -1.038853906e-10 1.898598359e-06 -2.118459102e-09 -6.68094648e-05 -2.303758695e-05 2.905989147e-07 -0.0001165535281 -1.21345388e-07 --2.303758695e-05 -0.0001132963918 3.167543055e-07 -3.67586847e-05 -1.668702439e-07 -2.905989147e-07 3.167543055e-07 -1.699677504e-10 -2.423311647e-07 1.899778398e-10 --0.0001165535281 -3.67586847e-05 -2.423311647e-07 0.0001544968729 7.922816443e-08 --1.21345388e-07 -1.668702439e-07 1.899778398e-10 7.922816443e-08 -1.388977853e-10 -3.516627782e-06 -2.947752555e-06 2.944226241e-07 -4.387655545e-06 -3.64828101e-07 --2.947752555e-06 5.654495488e-07 -4.623671591e-07 1.018693947e-06 5.776884224e-07 -2.944226241e-07 -4.623671591e-07 2.612626503e-10 -6.681929524e-07 2.142271086e-10 --4.387655545e-06 1.018693947e-06 -6.681929524e-07 1.763366176e-06 8.346144216e-07 --3.64828101e-07 5.776884224e-07 2.142271086e-10 8.346144216e-07 -9.439315836e-10 -1.29677838e-06 -1.417246146e-06 6.443477568e-08 -1.537850531e-06 -7.822889684e-08 --1.417246146e-06 -9.627429424e-07 -1.588275989e-07 -1.168035738e-06 1.971870937e-07 -6.443477568e-08 -1.588275989e-07 8.983863564e-11 -1.766857817e-07 4.432053714e-11 --1.537850531e-06 -1.168035738e-06 -1.766857817e-07 -1.407356001e-06 2.194532271e-07 --7.822889684e-08 1.971870937e-07 4.432053714e-11 2.194532271e-07 -2.475994473e-10 -3.882385189e-06 -1.365158553e-06 -2.576179359e-08 -7.675364281e-06 4.850755464e-08 --1.365158553e-06 -1.229857941e-05 -3.476817379e-08 -6.703516036e-06 6.839133986e-08 --2.576179359e-08 -3.476817379e-08 2.063134094e-11 1.868295485e-08 -2.881392867e-11 --7.675364281e-06 -6.703516036e-06 1.868295485e-08 8.255769833e-06 -3.302611192e-08 -4.850755464e-08 6.839133986e-08 -2.881392867e-11 -3.302611192e-08 3.4692692e-11 --4.458322137e-07 1.720151263e-06 1.696678005e-08 1.640567163e-06 -2.450824282e-08 -1.720151263e-06 -4.742103249e-06 -1.019777898e-07 -5.473520561e-06 1.426891355e-07 -1.696678005e-08 -1.019777898e-07 5.801162205e-11 -7.893588102e-08 5.164363705e-12 -1.640567163e-06 -5.473520561e-06 -7.893588102e-08 -5.64997363e-06 1.11935499e-07 --2.450824282e-08 1.426891355e-07 5.164363705e-12 1.11935499e-07 -1.247166045e-10 -1.086124404e-06 -3.537069839e-07 2.123075654e-08 -1.584548444e-06 -2.353768966e-08 --3.537069839e-07 -5.724691427e-07 1.00939754e-08 2.713218889e-07 -1.163778639e-08 -2.123075654e-08 1.00939754e-08 -5.658920821e-12 -2.492131937e-08 1.73295691e-11 --1.584548444e-06 2.713218889e-07 -2.492131937e-08 2.224623268e-06 2.747020464e-08 --2.353768966e-08 -1.163778639e-08 1.73295691e-11 2.747020464e-08 -3.176023176e-11 -1.245067075e-06 -5.669812172e-07 1.200381299e-09 -2.384838247e-06 3.392406555e-09 --5.669812172e-07 -2.420867467e-06 1.736206035e-09 -7.966175946e-07 2.518331022e-09 -1.200381299e-09 1.736206035e-09 -7.879161665e-13 -6.95049138e-10 -1.915929252e-13 --2.384838247e-06 -7.966175946e-07 -6.95049138e-10 3.245027226e-06 -3.642642269e-09 -3.392406555e-09 2.518331022e-09 -1.915929252e-13 -3.642642269e-09 3.08084263e-12 -2.070256932e-07 4.955314286e-07 6.730234195e-11 -1.039329213e-08 2.596222236e-10 -4.955314286e-07 -1.540321979e-06 1.683898897e-09 -1.422203119e-06 2.331973212e-09 -6.730234195e-11 1.683898897e-09 -8.286655641e-13 7.770810201e-10 -8.710052094e-13 --1.039329213e-08 -1.422203119e-06 7.770810201e-10 -7.156278598e-07 8.636466484e-10 -2.596222236e-10 2.331973212e-09 -8.710052094e-13 8.636466484e-10 -7.476142178e-13 -0.02845690941 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0295394097 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.008869021882 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.004447887413 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --8.461837356e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0001527057549 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --6.454718923e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -3.940270203e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.373270232e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --5.97868906e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.722246176e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.687239849e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --8.942870616e-07 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.03119031844 0.00115997146 0.0001377449879 0 0 -0.00115997146 0.1013163815 -3.648212748e-05 0 0 -0.0001377449879 -3.648212748e-05 -5.986173882e-07 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.01632206744 0.03745478669 -0.0001836322938 0 0 -0.03745478669 0.05771291146 -0.0001357650662 0 0 --0.0001836322938 -0.0001357650662 -8.232703177e-07 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.002214718121 0.001261493289 -1.649020257e-05 0 0 -0.001261493289 0.0007901950971 -3.237225255e-06 0 0 --1.649020257e-05 -3.237225255e-06 -1.705334148e-08 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.004132900682 0.00242910059 5.783630471e-06 0 0 -0.00242910059 0.0004146942069 1.616193014e-06 0 0 -5.783630471e-06 1.616193014e-06 4.954978693e-09 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0003436780996 -0.0001296244737 -1.056049508e-07 0 0 --0.0001296244737 -0.0001441803391 -2.40470842e-07 0 0 --1.056049508e-07 -2.40470842e-07 -3.744944613e-10 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0002145823368 -0.0004143401385 -4.264855666e-07 0 0 --0.0004143401385 -0.0005022755996 -7.202309761e-07 0 0 --4.264855666e-07 -7.202309761e-07 -8.11828058e-10 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.442865257e-05 6.010275074e-06 1.270383433e-08 0 0 -6.010275074e-06 3.738713969e-06 7.734018957e-09 0 0 -1.270383433e-08 7.734018957e-09 1.599578611e-11 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.342637893e-05 1.672244194e-05 -2.099324144e-07 0 0 -1.672244194e-05 8.503258455e-05 -2.044745735e-07 0 0 --2.099324144e-07 -2.044745735e-07 -1.231615158e-09 0 0 -0 0 0 0 0 -0 0 0 0 0 --6.114057707e-05 -4.910941299e-05 -5.726814824e-08 0 0 --4.910941299e-05 -2.44249357e-05 -3.716055758e-08 0 0 --5.726814824e-08 -3.716055758e-08 -4.844032767e-11 0 0 -0 0 0 0 0 -0 0 0 0 0 --5.785938964e-05 -4.911868947e-05 -1.095551648e-07 0 0 --4.911868947e-05 -3.702020522e-05 -8.133275469e-08 0 0 --1.095551648e-07 -8.133275469e-08 -1.783178044e-10 0 0 -0 0 0 0 0 -0 0 0 0 0 --7.38788462e-06 -1.32618671e-05 4.175564915e-08 0 0 --1.32618671e-05 -6.103773601e-06 4.392217316e-09 0 0 -4.175564915e-08 4.392217316e-09 4.526739589e-11 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.036513773e-05 -5.728995918e-06 1.345130387e-08 0 0 --5.728995918e-06 3.283043034e-06 8.725307349e-10 0 0 -1.345130387e-08 8.725307349e-10 -1.077946405e-11 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.319485595e-05 -1.260838811e-05 -1.785734846e-09 0 0 --1.260838811e-05 -5.073060548e-06 -5.005167446e-09 0 0 --1.785734846e-09 -5.005167446e-09 1.31850037e-12 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.04954083397 -0.07529524251 0.0001271458403 -0.007140610875 -0.0001079663275 --0.07529524251 -0.02800366417 -2.007172792e-06 0.02102189942 7.264910773e-05 -0.0001271458403 -2.007172792e-06 1.147441137e-07 -5.367680362e-05 -2.57695581e-07 --0.007140610875 0.02102189942 -5.367680362e-05 0.0107252344 7.174221204e-05 --0.0001079663275 7.264910773e-05 -2.57695581e-07 7.174221204e-05 4.131392726e-07 -0.003126754102 0.01715587301 -4.252947634e-06 0.007365299009 4.509386343e-05 -0.01715587301 0.0806098309 -0.000135352268 0.02787680564 0.0002243757732 --4.252947634e-06 -0.000135352268 -9.222417991e-07 -0.0001138675297 -2.52257993e-07 -0.007365299009 0.02787680564 -0.0001138675297 0.005728394216 8.485704688e-05 -4.509386343e-05 0.0002243757732 -2.52257993e-07 8.485704688e-05 6.110627491e-07 -0.0001207856423 0.00399417918 -3.234755693e-05 -5.353801103e-05 1.488540197e-05 -0.00399417918 0.01390644597 -4.37011165e-05 0.002381334682 3.702355953e-05 --3.234755693e-05 -4.37011165e-05 -2.444587483e-07 -2.170707152e-05 -3.43492818e-08 --5.353801103e-05 0.002381334682 -2.170707152e-05 -0.0001221301341 9.394746679e-06 -1.488540197e-05 3.702355953e-05 -3.43492818e-08 9.394746679e-06 8.095823393e-08 -4.126541599e-05 0.001225572926 2.740972133e-06 0.0007726841818 3.193103187e-06 -0.001225572926 -0.001466825232 7.167130992e-06 -0.0001521258999 -3.505828542e-06 -2.740972133e-06 7.167130992e-06 3.651254263e-08 6.033499947e-06 1.929242883e-08 -0.0007726841818 -0.0001521258999 6.033499947e-06 0.0003754605753 -2.03670642e-07 -3.193103187e-06 -3.505828542e-06 1.929242883e-08 -2.03670642e-07 -8.313838192e-09 -0.0008596208928 0.0002574715299 2.397474333e-06 0.0001394226415 1.052182729e-06 -0.0002574715299 -0.001333537598 1.392290382e-07 -0.0003573250636 -7.600073161e-07 -2.397474333e-06 1.392290382e-07 6.449001189e-09 2.250856321e-07 2.493342087e-09 -0.0001394226415 -0.0003573250636 2.250856321e-07 -9.029087811e-05 -1.335146749e-07 -1.052182729e-06 -7.600073161e-07 2.493342087e-09 -1.335146749e-07 4.684327113e-10 --0.0002283013428 -0.0003384551887 -1.225598961e-06 -0.0001131344037 -4.975036096e-07 --0.0003384551887 -0.0003523299408 -1.920864585e-06 -7.989177274e-05 -3.877498182e-07 --1.225598961e-06 -1.920864585e-06 -6.50715549e-09 -6.684264288e-07 -2.914040637e-09 --0.0001131344037 -7.989177274e-05 -6.684264288e-07 -4.440118788e-06 -4.093727749e-08 --4.975036096e-07 -3.877498182e-07 -2.914040637e-09 -4.093727749e-08 -2.652972938e-10 -9.435763027e-06 2.094094076e-05 8.518823589e-09 1.341375178e-05 6.844262173e-08 -2.094094076e-05 -9.513959686e-06 -1.847369062e-07 6.00766037e-06 8.190207626e-08 -8.518823589e-09 -1.847369062e-07 -7.33003943e-10 -7.431638735e-08 -1.927913947e-10 -1.341375178e-05 6.00766037e-06 -7.431638735e-08 8.984273254e-06 6.759154907e-08 -6.844262173e-08 8.190207626e-08 -1.927913947e-10 6.759154907e-08 4.08948571e-10 -5.505974233e-06 -2.471008426e-05 3.180744991e-08 -1.268289062e-05 -6.790126954e-08 --2.471008426e-05 0.0001073786846 -2.169603022e-07 5.038648152e-05 2.89084008e-07 -3.180744991e-08 -2.169603022e-07 -1.38226474e-09 -2.111178369e-07 -7.224561105e-10 --1.268289062e-05 5.038648152e-05 -2.111178369e-07 1.70803511e-05 1.273430806e-07 --6.790126954e-08 2.89084008e-07 -7.224561105e-10 1.273430806e-07 7.677552536e-10 --6.724087492e-05 -7.870902278e-05 -3.705251446e-07 -2.255206577e-05 -4.22224806e-08 --7.870902278e-05 -8.961729125e-05 -4.681851946e-07 -2.570621131e-05 -3.63907696e-08 --3.705251446e-07 -4.681851946e-07 -1.569576882e-09 -1.337539231e-07 -4.112099176e-10 --2.255206577e-05 -2.570621131e-05 -1.337539231e-07 -7.373345163e-06 -1.057531337e-08 --4.22224806e-08 -3.63907696e-08 -4.112099176e-10 -1.057531337e-08 4.100284913e-11 --3.263006352e-06 -1.891872134e-05 -4.158075832e-08 -5.639466701e-06 -5.811498418e-09 --1.891872134e-05 -5.02960927e-05 -1.083969124e-07 -1.551197167e-05 -3.773608307e-08 --4.158075832e-08 -1.083969124e-07 -2.334451196e-10 -3.347195873e-08 -8.308483248e-11 --5.639466701e-06 -1.551197167e-05 -3.347195873e-08 -4.774194402e-06 -1.12133876e-08 --5.811498418e-09 -3.773608307e-08 -8.308483248e-11 -1.12133876e-08 -1.007544019e-11 --3.232119765e-06 -7.207578e-06 2.835258957e-08 -8.339907843e-07 -1.443572987e-08 --7.207578e-06 1.539860611e-06 -1.307833157e-09 4.112035786e-06 1.838897433e-08 -2.835258957e-08 -1.307833157e-09 -1.225793954e-11 -1.456519294e-08 -5.869720366e-11 --8.339907843e-07 4.112035786e-06 -1.456519294e-08 1.809635985e-06 1.342514159e-08 --1.443572987e-08 1.838897433e-08 -5.869720366e-11 1.342514159e-08 8.078329827e-11 --6.208180474e-06 -5.173755448e-06 5.427428437e-09 2.500880054e-07 -2.919527392e-09 --5.173755448e-06 2.890510714e-06 2.094867488e-09 4.091263284e-06 1.812733272e-08 -5.427428437e-09 2.094867488e-09 -3.926186624e-12 -1.527740785e-09 -4.379591798e-12 -2.500880054e-07 4.091263284e-06 -1.527740785e-09 2.083242925e-06 1.120211938e-08 --2.919527392e-09 1.812733272e-08 -4.379591798e-12 1.120211938e-08 5.732160279e-11 --4.883377859e-06 -1.31701097e-05 -1.31944053e-08 -3.399802553e-06 -1.185301802e-08 --1.31701097e-05 -2.367505593e-05 -3.321146522e-08 -5.758103373e-06 -2.140858515e-08 --1.31944053e-08 -3.321146522e-08 -3.517458171e-11 -8.502561828e-09 -2.991038634e-11 --3.399802553e-06 -5.758103373e-06 -8.502561828e-09 -1.384621631e-06 -5.211396799e-09 --1.185301802e-08 -2.140858515e-08 -2.991038634e-11 -5.211396799e-09 -1.935779236e-11 -0.06562108837 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.03121760729 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.08669108936 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.02578952359 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0005498449721 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.001424786139 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.001273082043 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0005108718628 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0001965835471 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0002134504814 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -9.032752286e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --5.679640871e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.916980518e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.03475380425 -0.1218931057 0.000250086976 0 0 --0.1218931057 0.08374361038 -0.0001924354425 0 0 -0.000250086976 -0.0001924354425 0.04097806738 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.04732031008 -0.02128784512 0.0006522282539 0 0 --0.02128784512 0.005931485594 -9.828189834e-05 0 0 -0.0006522282539 -9.828189834e-05 0.02557123774 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.02184094914 -0.03546647694 -1.066916693e-05 0 0 --0.03546647694 0.02260604578 -6.173916827e-06 0 0 --1.066916693e-05 -6.173916827e-06 0.002874036853 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.002461260582 0.00127438465 2.539799601e-05 0 0 -0.00127438465 0.02941752434 -2.233091394e-05 0 0 -2.539799601e-05 -2.233091394e-05 -0.001109644459 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.001294827601 -0.002554649479 -4.195643568e-07 0 0 --0.002554649479 -0.004535987371 -1.787039538e-06 0 0 --4.195643568e-07 -1.787039538e-06 -8.286978943e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0003128368053 -0.0005078813828 -5.922763632e-06 0 0 --0.0005078813828 -0.0004727385825 1.659991836e-06 0 0 --5.922763632e-06 1.659991836e-06 0.0002882175805 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.000219417483 8.249713936e-05 -7.741368674e-07 0 0 -8.249713936e-05 0.001988249826 3.343810251e-06 0 0 --7.741368674e-07 3.343810251e-06 -8.499193792e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --9.839408904e-05 -0.0002873427179 4.506575137e-07 0 0 --0.0002873427179 -0.0005609936605 3.456090487e-07 0 0 -4.506575137e-07 3.456090487e-07 -1.484815471e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.702342664e-05 -1.519598773e-05 1.166160361e-07 0 0 --1.519598773e-05 -8.815252428e-05 -3.105838379e-07 0 0 -1.166160361e-07 -3.105838379e-07 3.247294572e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0001056123607 -4.346668736e-05 -5.552900168e-07 0 0 --4.346668736e-05 0.0003061731378 4.362502112e-07 0 0 --5.552900168e-07 4.362502112e-07 -1.914372997e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --5.348653217e-05 -9.867970566e-05 -8.422449626e-07 0 0 --9.867970566e-05 -0.0001414684672 -1.856637571e-07 0 0 --8.422449626e-07 -1.856637571e-07 -5.691101793e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.399371672e-06 -1.198466421e-05 -3.271849543e-07 0 0 --1.198466421e-05 -9.417182625e-06 3.926326981e-08 0 0 --3.271849543e-07 3.926326981e-08 3.336629792e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.689529401e-05 -2.347346891e-05 -9.205925515e-08 0 0 --2.347346891e-05 4.333118096e-05 -1.82654187e-10 0 0 --9.205925515e-08 -1.82654187e-10 -4.28306664e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.2045481913 -0.03636786912 0.000428831175 -0.007385726086 0.0006802119598 --0.03636786912 0.05146520403 0.0005068872597 -0.13423717 -0.0005666394277 -0.000428831175 0.0005068872597 -0.07039529586 6.947855262e-05 -0.214165851 --0.007385726086 -0.13423717 6.947855262e-05 0.03618719917 -0.0001881600312 -0.0006802119598 -0.0005666394277 -0.214165851 -0.0001881600312 0.04492282638 --0.04572979915 0.01415783709 -0.0005135411449 0.01969492595 0.0001657410029 -0.01415783709 0.1545515639 0.0001777970403 0.0135795009 0.001682352024 --0.0005135411449 0.0001777970403 -0.02270628414 0.0005337028565 -0.03757946949 -0.01969492595 0.0135795009 0.0005337028565 0.007126478423 -0.0001118800226 -0.0001657410029 0.001682352024 -0.03757946949 -0.0001118800226 0.04726477427 -0.003178152522 0.009355452126 -4.992071588e-06 -0.002182246976 3.383869091e-06 -0.009355452126 -0.0002187935347 -1.182570657e-05 -0.02275039007 6.637715887e-05 --4.992071588e-06 -1.182570657e-05 -0.002262398018 -4.911805297e-06 0.0003885984212 --0.002182246976 -0.02275039007 -4.911805297e-06 -0.008174047625 2.414872039e-05 -3.383869091e-06 6.637715887e-05 0.0003885984212 2.414872039e-05 0.0132724461 -0.008791902861 -0.0009467829889 -2.849781711e-05 -0.01317302524 1.625150765e-05 --0.0009467829889 -0.01917198847 1.336810326e-05 -0.009293067538 3.042364478e-05 --2.849781711e-05 1.336810326e-05 8.712125695e-05 4.110363136e-05 -0.0002084606883 --0.01317302524 -0.009293067538 4.110363136e-05 0.01390195178 -2.335146712e-05 -1.625150765e-05 3.042364478e-05 -0.0002084606883 -2.335146712e-05 -0.001411148927 -0.0007766149274 -0.0008239027994 -2.701707522e-07 -0.001780278291 6.355312424e-06 --0.0008239027994 0.0004447341294 2.257098797e-06 0.001476459641 -1.395520578e-05 --2.701707522e-07 2.257098797e-06 3.735615455e-06 1.450410962e-06 -3.337843165e-05 --0.001780278291 0.001476459641 1.450410962e-06 0.003490260004 -1.552043996e-05 -6.355312424e-06 -1.395520578e-05 -3.337843165e-05 -1.552043996e-05 0.0002305448666 --0.0004071980058 -0.0001059648213 5.670929607e-06 0.0002199235836 2.680453253e-08 --0.0001059648213 -7.871468909e-05 4.398654186e-07 -0.0002372538536 -7.994334288e-06 -5.670929607e-06 4.398654186e-07 -9.560192207e-05 -3.705184376e-06 -0.0001712219273 -0.0002199235836 -0.0002372538536 -3.705184376e-06 -0.0002681723188 9.04695545e-06 -2.680453253e-08 -7.994334288e-06 -0.0001712219273 9.04695545e-06 0.0003599140315 -0.0003683589219 3.686835506e-05 7.523122728e-07 -0.0005284387707 -7.567026749e-08 -3.686835506e-05 -0.001040990187 1.850215402e-07 -0.0006163537891 3.470559544e-08 -7.523122728e-07 1.850215402e-07 -1.058065407e-05 -5.906523639e-07 -4.315043337e-05 --0.0005284387707 -0.0006163537891 -5.906523639e-07 0.0004450311384 1.033766982e-06 --7.567026749e-08 3.470559544e-08 -4.315043337e-05 1.033766982e-06 -0.0001064863972 -1.435147958e-05 3.112395019e-05 -4.60291344e-07 -3.323062566e-05 -2.610083961e-07 -3.112395019e-05 0.0001041869498 1.349811767e-07 2.774516685e-05 2.753196873e-06 --4.60291344e-07 1.349811767e-07 -3.263865203e-06 4.822736617e-07 -1.899129103e-05 --3.323062566e-05 2.774516685e-05 4.822736617e-07 8.634705899e-05 1.221526954e-06 --2.610083961e-07 2.753196873e-06 -1.899129103e-05 1.221526954e-06 3.771938545e-05 --8.858262838e-05 -7.457767964e-05 3.220372009e-07 -1.863989503e-05 1.740630061e-07 --7.457767964e-05 4.251468396e-05 1.117649034e-08 3.68451987e-05 -6.648752521e-07 -3.220372009e-07 1.117649034e-08 -1.858532205e-05 -2.138533362e-07 -6.423315082e-05 --1.863989503e-05 3.68451987e-05 -2.138533362e-07 7.27702033e-05 1.586379446e-07 -1.740630061e-07 -6.648752521e-07 -6.423315082e-05 1.586379446e-07 3.702266749e-05 -1.172044021e-05 -2.277292878e-05 1.029396742e-06 -7.455934108e-05 2.369072194e-07 --2.277292878e-05 -0.0002231439613 -1.123276778e-07 -0.0001381263019 -1.556725732e-06 -1.029396742e-06 -1.123276778e-07 -9.202947773e-06 -9.834392579e-07 -4.313541192e-05 --7.455934108e-05 -0.0001381263019 -9.834392579e-07 3.363350094e-05 4.997333957e-07 -2.369072194e-07 -1.556725732e-06 -4.313541192e-05 4.997333957e-07 -3.729272246e-05 --2.845764854e-05 1.56478251e-05 3.448573368e-07 2.329800744e-05 2.246824773e-07 -1.56478251e-05 8.009029345e-07 9.325889348e-08 -3.458999544e-05 -1.048015627e-06 -3.448573368e-07 9.325889348e-08 -5.009950185e-06 -2.233159117e-07 -1.982139713e-05 -2.329800744e-05 -3.458999544e-05 -2.233159117e-07 -4.085558121e-05 -3.14965877e-07 -2.246824773e-07 -1.048015627e-06 -1.982139713e-05 -3.14965877e-07 6.761900523e-06 --1.712280886e-05 -7.371510993e-06 1.75849657e-07 -7.221102898e-06 4.640594288e-08 --7.371510993e-06 2.688144847e-05 6.808287023e-08 6.701387708e-06 -2.832725494e-07 -1.75849657e-07 6.808287023e-08 -6.29830741e-06 -9.608213546e-08 -2.205705354e-05 --7.221102898e-06 6.701387708e-06 -9.608213546e-08 2.350662598e-05 8.544960644e-08 -4.640594288e-08 -2.832725494e-07 -2.205705354e-05 8.544960644e-08 3.680598995e-06 --1.611219154e-05 -1.046231017e-05 2.228962238e-07 -1.074010809e-05 1.110345445e-07 --1.046231017e-05 -4.658909393e-05 1.099900024e-08 -3.522078559e-05 -4.496622927e-07 -2.228962238e-07 1.099900024e-08 -5.243788027e-06 -1.728897003e-07 -2.198778088e-05 --1.074010809e-05 -3.522078559e-05 -1.728897003e-07 1.557317794e-06 9.830496323e-09 -1.110345445e-07 -4.496622927e-07 -2.198778088e-05 9.830496323e-09 -6.663144864e-06 --0.000300010796 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0003266105773 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0001300126711 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.668854294e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.590551722e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.32640702e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.587374657e-07 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -4.182034671e-07 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -8.36931234e-08 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.961762202e-07 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -2.39010675e-07 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.401759976e-07 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -5.075522289e-08 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.03808741525 -0.08137314584 -0.01494283386 0 0 --0.08137314584 -0.00176549221 -0.000659206548 0 0 --0.01494283386 -0.000659206548 -0.0001819180178 0 0 -0 0 0 0 0 -0 0 0 0 0 --4.459625385e-05 -0.0001726396593 -6.298165524e-05 0 0 --0.0001726396593 -0.0004987627108 -8.108007063e-05 0 0 --6.298165524e-05 -8.108007063e-05 6.723831463e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.00107457074 -1.382641302e-06 -0.0008729446346 0 0 --1.382641302e-06 -5.630766698e-07 -1.91917323e-05 0 0 --0.0008729446346 -1.91917323e-05 -2.147314015e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -3.685605549e-05 -0.0001268868768 -0.0001096056749 0 0 --0.0001268868768 -3.397140318e-05 -2.415878235e-05 0 0 --0.0001096056749 -2.415878235e-05 -1.644599238e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.137738092e-06 -9.875714414e-05 -5.182631654e-05 0 0 --9.875714414e-05 -2.92436915e-06 -1.592164365e-06 0 0 --5.182631654e-05 -1.592164365e-06 -8.657191886e-07 0 0 -0 0 0 0 0 -0 0 0 0 0 --7.319035758e-05 -5.9348684e-05 3.131367105e-05 0 0 --5.9348684e-05 4.880767946e-06 1.533618946e-07 0 0 -3.131367105e-05 1.533618946e-07 -1.380108532e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 -2.915590533e-06 -2.275941825e-05 -1.520638742e-05 0 0 --2.275941825e-05 2.954478147e-06 1.820959462e-06 0 0 --1.520638742e-05 1.820959462e-06 1.114267155e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 --5.773211672e-06 -1.438251698e-05 -3.838863392e-06 0 0 --1.438251698e-05 -3.862834118e-07 -1.603485312e-07 0 0 --3.838863392e-06 -1.603485312e-07 -5.798580694e-08 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.708395033e-05 -2.304928101e-05 1.390652186e-06 0 0 --2.304928101e-05 -7.397307317e-07 -1.849375836e-07 0 0 -1.390652186e-06 -1.849375836e-07 2.67447619e-08 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.872535124e-06 -2.179316055e-05 -8.540667451e-06 0 0 --2.179316055e-05 4.10494222e-07 1.962461923e-07 0 0 --8.540667451e-06 1.962461923e-07 9.078169514e-08 0 0 -0 0 0 0 0 -0 0 0 0 0 --4.575367606e-06 -1.218308969e-05 -2.925870338e-06 0 0 --1.218308969e-05 6.304022175e-07 2.539961088e-07 0 0 --2.925870338e-06 2.539961088e-07 8.59577737e-08 0 0 -0 0 0 0 0 -0 0 0 0 0 --5.101150714e-06 -1.029081148e-05 -1.555667932e-06 0 0 --1.029081148e-05 1.964168856e-07 7.034161064e-08 0 0 --1.555667932e-06 7.034161064e-08 1.685738501e-08 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.389696964e-06 -9.863236292e-06 -2.678768973e-06 0 0 --9.863236292e-06 -7.82689106e-08 -3.269671887e-08 0 0 --2.678768973e-06 -3.269671887e-08 -1.198245769e-08 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.001481405543 0.04432126793 0.0253732448 0.001028578683 0.001582353975 -0.04432126793 0.01475122086 -0.01396247325 -0.05008080477 -0.07568922969 -0.0253732448 -0.01396247325 -0.02044667128 -0.02834782124 -0.04285716622 -0.001028578683 -0.05008080477 -0.02834782124 -0.0004361388981 -0.0006904566021 -0.001582353975 -0.07568922969 -0.04285716622 -0.0006904566021 -0.001090829191 --0.0003055162214 0.00307476192 0.001882743466 0.0003113727786 0.0004510289089 -0.00307476192 0.001544885766 -0.002149407594 -0.004201704599 -0.005644207354 -0.001882743466 -0.002149407594 -0.002916590514 -0.002471043963 -0.003350796339 -0.0003113727786 -0.004201704599 -0.002471043963 -0.0002822343256 -0.0004233519033 -0.0004510289089 -0.005644207354 -0.003350796339 -0.0004233519033 -0.0006282663353 -3.815922728e-06 -0.0002302200207 -0.0001380001582 -7.203745562e-06 -3.51799396e-06 --0.0002302200207 -0.0001521445307 0.0008980604137 0.0009604638553 0.0005727043418 --0.0001380001582 0.0008980604137 0.001061616108 0.0005386809948 0.0003178996066 --7.203745562e-06 0.0009604638553 0.0005386809948 -6.093531145e-06 -6.857666895e-06 --3.51799396e-06 0.0005727043418 0.0003178996066 -6.857666895e-06 -6.009901944e-06 --1.655632734e-05 0.0001922683954 9.984475422e-05 -1.329670431e-06 2.192737263e-05 -0.0001922683954 0.0001696427812 0.0002995164735 0.0001601899983 -0.0003057578572 -9.984475422e-05 0.0002995164735 0.0002839348578 9.592467301e-05 -0.0001632779848 --1.329670431e-06 0.0001601899983 9.592467301e-05 8.614358104e-06 -1.318701117e-06 -2.192737263e-05 -0.0003057578572 -0.0001632779848 -1.318701117e-06 -2.795328448e-05 --4.586439979e-07 2.195305593e-05 1.284489057e-05 1.574059681e-06 -4.83975965e-09 -2.195305593e-05 -0.0001013141087 -0.000100197736 -0.0001488749014 -2.715347082e-06 -1.284489057e-05 -0.000100197736 -8.08045084e-05 -8.393884841e-05 -1.461766005e-06 -1.574059681e-06 -0.0001488749014 -8.393884841e-05 2.925976369e-07 2.448421081e-07 --4.83975965e-09 -2.715347082e-06 -1.461766005e-06 2.448421081e-07 9.095936435e-09 -1.160334085e-06 2.402539232e-05 1.285144875e-05 -1.916095883e-06 -2.404157044e-06 -2.402539232e-05 8.042754832e-06 -2.439114437e-05 -4.728705985e-05 -4.663406506e-05 -1.285144875e-05 -2.439114437e-05 -3.007767676e-05 -2.574071449e-05 -2.476067117e-05 --1.916095883e-06 -4.728705985e-05 -2.574071449e-05 3.045681265e-06 4.01898825e-06 --2.404157044e-06 -4.663406506e-05 -2.476067117e-05 4.01898825e-06 4.961084044e-06 -5.058952796e-09 8.31009741e-06 4.689270263e-06 -8.89306004e-08 -1.536333326e-07 -8.31009741e-06 8.688590225e-06 9.826699619e-06 3.916391147e-06 -1.47780118e-05 -4.689270263e-06 9.826699619e-06 8.321749716e-06 2.155824277e-06 -8.424776748e-06 --8.89306004e-08 3.916391147e-06 2.155824277e-06 -8.599600416e-08 8.831965912e-08 --1.536333326e-07 -1.47780118e-05 -8.424776748e-06 8.831965912e-08 5.277861574e-07 --3.616369932e-07 6.280708984e-06 3.777087077e-06 5.636427001e-07 3.835700958e-07 -6.280708984e-06 -5.478102306e-06 -1.111843525e-05 -1.606658912e-05 -7.755080701e-06 -3.777087077e-06 -1.111843525e-05 -1.080072488e-05 -9.188028661e-06 -4.581165903e-06 -5.636427001e-07 -1.606658912e-05 -9.188028661e-06 -4.981089996e-07 -5.315717511e-07 -3.835700958e-07 -7.755080701e-06 -4.581165903e-06 -5.315717511e-07 -3.952927686e-07 --4.526904943e-07 1.550152995e-05 8.867777351e-06 3.408057216e-07 4.496852023e-07 -1.550152995e-05 3.378067512e-06 -6.550850656e-06 -2.073027063e-05 -2.64654354e-05 -8.867777351e-06 -6.550850656e-06 -8.465691828e-06 -1.171504432e-05 -1.496402365e-05 -3.408057216e-07 -2.073027063e-05 -1.171504432e-05 -1.029156116e-07 -1.508497117e-07 -4.496852023e-07 -2.64654354e-05 -1.496402365e-05 -1.508497117e-07 -2.174323094e-07 --8.410956323e-08 1.118473184e-05 6.311766761e-06 -5.110996988e-08 -6.063824134e-08 -1.118473184e-05 5.426118735e-06 2.422247737e-06 -7.903632986e-06 -1.945110979e-05 -6.311766761e-06 2.422247737e-06 1.006134219e-06 -4.453876643e-06 -1.096485507e-05 --5.110996988e-08 -7.903632986e-06 -4.453876643e-06 1.13704916e-07 2.341084247e-07 --6.063824134e-08 -1.945110979e-05 -1.096485507e-05 2.341084247e-07 4.634389334e-07 --5.812434873e-08 5.084878511e-06 2.886375575e-06 1.45250261e-08 4.018429275e-10 -5.084878511e-06 1.658423551e-07 -3.0505498e-06 -7.397999691e-06 -8.106608341e-06 -2.886375575e-06 -3.0505498e-06 -3.494436718e-06 -4.156094002e-06 -4.544589384e-06 -1.45250261e-08 -7.397999691e-06 -4.156094002e-06 8.073768542e-08 1.110360792e-07 -4.018429275e-10 -8.106608341e-06 -4.544589384e-06 1.110360792e-07 1.463963903e-07 --1.213717762e-07 5.307117669e-06 3.020959968e-06 6.627857251e-08 9.738622159e-08 -5.307117669e-06 1.366868534e-06 -1.609936716e-06 -5.967362996e-06 -8.798285386e-06 -3.020959968e-06 -1.609936716e-06 -2.251305912e-06 -3.365391025e-06 -4.961785726e-06 -6.627857251e-08 -5.967362996e-06 -3.365391025e-06 4.1634395e-09 6.514082355e-09 -9.738622159e-08 -8.798285386e-06 -4.961785726e-06 6.514082355e-09 1.015800604e-08 --1.253556018e-07 5.450016842e-06 3.094063179e-06 6.359674458e-08 1.027498344e-07 -5.450016842e-06 1.614106001e-06 -8.035526794e-07 -5.678642139e-06 -9.180129616e-06 -3.094063179e-06 -8.035526794e-07 -1.420209384e-06 -3.20285132e-06 -5.177731019e-06 -6.359674458e-08 -5.678642139e-06 -3.20285132e-06 3.321792859e-09 5.433447166e-09 -1.027498344e-07 -9.180129616e-06 -5.177731019e-06 5.433447166e-09 8.886263286e-09 --0.0001861562851 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.000202490506 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --7.842755606e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.323904241e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.193141922e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -8.357035775e-07 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -2.005267944e-07 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -8.986505102e-08 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -6.449036848e-08 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.77381238e-07 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.341670065e-07 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -6.7874162e-08 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -2.225446439e-08 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.03942244428 -0.08378339528 0.01562733877 0 0 --0.08378339528 -0.001075838036 0.0003979860194 0 0 -0.01562733877 0.0003979860194 -0.0001108169038 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0005107832862 -0.0006019401344 -4.697605695e-05 0 0 --0.0006019401344 -0.0003425144905 6.38126933e-05 0 0 --4.697605695e-05 6.38126933e-05 3.439307936e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.001196705957 7.266661926e-05 0.0009135777766 0 0 -7.266661926e-05 1.327066533e-06 8.751426164e-06 0 0 -0.0009135777766 8.751426164e-06 -1.010194699e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -6.544317925e-05 -0.0001577291582 0.0001530513703 0 0 --0.0001577291582 -2.202928772e-05 1.672437944e-05 0 0 -0.0001530513703 1.672437944e-05 -1.176855116e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.927843358e-05 -9.055330242e-05 2.858111233e-05 0 0 --9.055330242e-05 -1.148607417e-06 4.992793356e-07 0 0 -2.858111233e-05 4.992793356e-07 -2.007033968e-07 0 0 -0 0 0 0 0 -0 0 0 0 0 --6.789760954e-05 -5.754992973e-05 -2.755007377e-05 0 0 --5.754992973e-05 3.388010788e-06 -1.567219183e-07 0 0 --2.755007377e-05 -1.567219183e-07 -8.65836684e-07 0 0 -0 0 0 0 0 -0 0 0 0 0 -4.653298514e-06 -1.955221092e-05 1.487837378e-05 0 0 --1.955221092e-05 1.442352562e-06 -9.489029599e-07 0 0 -1.487837378e-05 -9.489029599e-07 6.086728832e-07 0 0 -0 0 0 0 0 -0 0 0 0 0 --8.268679282e-06 -1.38476144e-05 1.627714895e-06 0 0 --1.38476144e-05 -3.360552423e-07 1.125534115e-07 0 0 -1.627714895e-06 1.125534115e-07 -2.158343258e-08 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.696103137e-05 -2.47803454e-05 -3.012950364e-07 0 0 --2.47803454e-05 -3.922072196e-07 1.059348146e-07 0 0 --3.012950364e-07 1.059348146e-07 2.976233701e-09 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.951978406e-06 -2.099378653e-05 8.799663893e-06 0 0 --2.099378653e-05 3.33056452e-07 -1.620534311e-07 0 0 -8.799663893e-06 -1.620534311e-07 7.733941623e-08 0 0 -0 0 0 0 0 -0 0 0 0 0 --5.003778827e-06 -1.10302331e-05 1.983121966e-06 0 0 --1.10302331e-05 3.374545154e-07 -1.240106497e-07 0 0 -1.983121966e-06 -1.240106497e-07 3.384641872e-08 0 0 -0 0 0 0 0 -0 0 0 0 0 --4.907149699e-06 -1.018820308e-05 1.700742379e-06 0 0 --1.018820308e-05 8.670869257e-08 -3.126830266e-08 0 0 -1.700742379e-06 -3.126830266e-08 8.036406848e-09 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.312427482e-06 -9.872147189e-06 2.743465414e-06 0 0 --9.872147189e-06 -5.106139093e-08 2.123331599e-08 0 0 -2.743465414e-06 2.123331599e-08 -7.856391831e-09 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0008992791954 0.04496766678 -0.02512774071 0.0006197897223 -0.000947454571 -0.04496766678 0.01461542051 0.01396512208 -0.05026218238 0.07601354126 --0.02512774071 0.01396512208 -0.01995457069 0.02789784669 -0.04219599679 -0.0006197897223 -0.05026218238 0.02789784669 -0.0002630857235 0.0004091603024 --0.000947454571 0.07601354126 -0.04219599679 0.0004091603024 -0.0006358573606 --0.0002075535831 0.003824275092 -0.002213112467 0.000204234227 -0.000298089383 -0.003824275092 0.001878349577 0.002478163001 -0.004958378796 0.006874302358 --0.002213112467 0.002478163001 -0.003321583856 0.002810514838 -0.003910066212 -0.000204234227 -0.004958378796 0.002810514838 -0.0001812194304 0.0002704905708 --0.000298089383 0.006874302358 -0.003910066212 0.0002704905708 -0.0004017214531 -1.814978895e-06 -0.0002927752299 0.0001652489866 -1.90758473e-06 3.289531372e-07 --0.0002927752299 -0.0001969346636 -0.0008860487548 0.0009676585293 -0.0006681139673 -0.0001652489866 -0.0008860487548 0.001041981841 -0.0005322917137 0.0003641659665 --1.90758473e-06 0.0009676585293 -0.0005322917137 -7.178647395e-06 8.213087549e-06 -3.289531372e-07 -0.0006681139673 0.0003641659665 8.213087549e-06 -7.916965763e-06 --9.981917773e-06 0.0002091207156 -0.0001094444938 -1.777110325e-06 -1.272418468e-05 -0.0002091207156 0.000179100968 -0.0003695302144 0.000212030052 0.0003198911292 --0.0001094444938 -0.0003695302144 0.000354415497 -0.0001215389044 -0.0001706415768 --1.777110325e-06 0.000212030052 -0.0001215389044 6.384007168e-06 -2.214691533e-07 --1.272418468e-05 0.0003198911292 -0.0001706415768 -2.214691533e-07 -1.559636892e-05 --1.413874385e-07 1.431304021e-05 -8.255724427e-06 8.409124697e-07 8.440676311e-08 -1.431304021e-05 -0.0001135099145 0.0001279062812 -0.0001721023928 -8.359440665e-06 --8.255724427e-06 0.0001279062812 -0.0001068689132 9.520200519e-05 4.830366233e-06 -8.409124697e-07 -0.0001721023928 9.520200519e-05 6.630890012e-07 -5.140830883e-07 -8.440676311e-08 -8.359440665e-06 4.830366233e-06 -5.140830883e-07 -5.036421127e-08 -8.212438746e-07 2.078010062e-05 -1.108950139e-05 -1.19117809e-06 1.632322845e-06 -2.078010062e-05 1.093276983e-05 1.511613903e-05 -3.428874213e-05 4.113916967e-05 --1.108950139e-05 1.511613903e-05 -2.009981403e-05 1.846730901e-05 -2.194764896e-05 --1.19117809e-06 -3.428874213e-05 1.846730901e-05 1.694331502e-06 -2.368932327e-06 -1.632322845e-06 4.113916967e-05 -2.194764896e-05 -2.368932327e-06 3.244389568e-06 --7.029515897e-08 7.066028611e-06 -3.887119279e-06 -3.702548549e-08 -3.813588113e-08 -7.066028611e-06 7.508567185e-06 -9.549205537e-06 4.603078788e-06 1.225772627e-05 --3.887119279e-06 -9.549205537e-06 8.274923131e-06 -2.538869844e-06 -6.806739896e-06 --3.702548549e-08 4.603078788e-06 -2.538869844e-06 -1.841979745e-08 -9.743260939e-09 --3.813588113e-08 1.225772627e-05 -6.806739896e-06 -9.743260939e-09 7.818401704e-08 --2.423141617e-07 6.77692214e-06 -3.944727985e-06 4.254744154e-07 -2.495349849e-07 -6.77692214e-06 -7.369455932e-06 1.466079592e-05 -1.987368287e-05 7.921180234e-06 --3.944727985e-06 1.466079592e-05 -1.39802045e-05 1.111412642e-05 -4.557132043e-06 -4.254744154e-07 -1.987368287e-05 1.111412642e-05 -3.980103897e-07 3.969037509e-07 --2.495349849e-07 7.921180234e-06 -4.557132043e-06 3.969037509e-07 -2.520965478e-07 --2.456278107e-07 1.621569167e-05 -9.033651053e-06 1.489659362e-07 -2.216733933e-07 -1.621569167e-05 5.087399137e-06 4.03071577e-06 -1.884433838e-05 2.794864581e-05 --9.033651053e-06 4.03071577e-06 -6.026043057e-06 1.044054726e-05 -1.548502287e-05 -1.489659362e-07 -1.884433838e-05 1.044054726e-05 -1.486934024e-08 2.290797663e-08 --2.216733933e-07 2.794864581e-05 -1.548502287e-05 2.290797663e-08 -3.524331907e-08 --1.866255564e-08 9.690218548e-06 -5.367785788e-06 -4.815370075e-08 7.171970647e-08 -9.690218548e-06 4.480921727e-06 -2.075822312e-06 -7.087075218e-06 1.67630399e-05 --5.367785788e-06 -2.075822312e-06 9.248272745e-07 3.923215072e-06 -9.281337078e-06 --4.815370075e-08 -7.087075218e-06 3.923215072e-06 8.023611118e-08 -1.590589946e-07 -7.171970647e-08 1.67630399e-05 -9.281337078e-06 -1.590589946e-07 3.034673425e-07 --4.291447127e-08 4.721806193e-06 -2.630383433e-06 2.208262085e-08 -1.567014988e-08 -4.721806193e-06 -1.290535369e-07 3.368474909e-06 -7.331866884e-06 7.399790489e-06 --2.630383433e-06 3.368474909e-06 -3.691990444e-06 4.053260418e-06 -4.086189565e-06 -2.208262085e-08 -7.331866884e-06 4.053260418e-06 3.490365485e-08 -4.550345143e-08 --1.567014988e-08 7.399790489e-06 -4.086189565e-06 -4.550345143e-08 5.629690239e-08 --8.743854409e-08 5.336560926e-06 -2.972993422e-06 5.075146885e-08 -8.028931035e-08 -5.336560926e-06 1.53773521e-06 1.235792232e-06 -5.573215514e-06 8.806760247e-06 --2.972993422e-06 1.235792232e-06 -1.840788361e-06 3.089002859e-06 -4.881258934e-06 -5.075146885e-08 -5.573215514e-06 3.089002859e-06 -1.072702962e-08 1.704682806e-08 --8.028931035e-08 8.806760247e-06 -4.881258934e-06 1.704682806e-08 -2.7089058e-08 --6.548005969e-08 5.150508249e-06 -2.86327119e-06 3.138405948e-08 -4.869198008e-08 -5.150508249e-06 1.38554179e-06 8.722099296e-07 -5.526619755e-06 8.60175904e-06 --2.86327119e-06 8.722099296e-07 -1.39131975e-06 3.060003603e-06 -4.762611282e-06 -3.138405948e-08 -5.526619755e-06 3.060003603e-06 7.962103148e-09 -1.255829687e-08 --4.869198008e-08 8.60175904e-06 -4.762611282e-06 -1.255829687e-08 1.980422587e-08 -0.01755998106 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.02541707094 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.006021570118 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0001381537615 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -5.926969977e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0001741466237 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -3.687866911e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --5.308710192e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.969467389e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.560411464e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -4.314355907e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -2.152551888e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --4.603959241e-07 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.1069814926 0.06282813766 0.1129432751 0 0 -0.06282813766 0.009903027715 0.01777049273 0 0 -0.1129432751 0.01777049273 0.03188818888 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.04632144291 0.01935850943 0.03550312735 0 0 -0.01935850943 0.0194293326 0.03509915968 0 0 -0.03550312735 0.03509915968 0.0634024467 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.006343461373 -0.001468096379 -0.002451785128 0 0 --0.001468096379 0.01149845864 0.02088580602 0 0 --0.002451785128 0.02088580602 0.03792991943 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.003010406295 -0.002773187308 -0.005058807912 0 0 --0.002773187308 0.002459204313 0.004473066073 0 0 --0.005058807912 0.004473066073 0.008134261961 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0008790247611 -0.0005406843755 -0.0009758952286 0 0 --0.0005406843755 5.672328872e-05 0.0001020211982 0 0 --0.0009758952286 0.0001020211982 0.0001834902163 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0001869534567 4.516743795e-05 8.349294578e-05 0 0 -4.516743795e-05 -0.0004186243473 -0.0007454920808 0 0 -8.349294578e-05 -0.0007454920808 -0.00132753395 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0003240626284 0.0003360923267 0.000597643322 0 0 -0.0003360923267 -0.0003236761893 -0.0005764790233 0 0 -0.000597643322 -0.0005764790233 -0.001026693873 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.357367202e-06 7.184642522e-06 1.28909813e-05 0 0 -7.184642522e-06 -1.282539062e-05 -2.303506301e-05 0 0 -1.28909813e-05 -2.303506301e-05 -4.137190768e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --5.997574954e-05 1.196146409e-05 2.240011198e-05 0 0 -1.196146409e-05 6.019514531e-05 0.000108643256 0 0 -2.240011198e-05 0.000108643256 0.0001960743068 0 0 -0 0 0 0 0 -0 0 0 0 0 -3.632605343e-05 -2.840623284e-05 -5.190238158e-05 0 0 --2.840623284e-05 1.787190867e-05 3.245989031e-05 0 0 --5.190238158e-05 3.245989031e-05 5.894448533e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.053349832e-05 3.210519549e-06 5.843729625e-06 0 0 -3.210519549e-06 7.070803565e-06 1.272032885e-05 0 0 -5.843729625e-06 1.272032885e-05 2.288340156e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -5.048559766e-06 -2.275747726e-06 -4.048415929e-06 0 0 --2.275747726e-06 -1.728280061e-06 -3.088099324e-06 0 0 --4.048415929e-06 -3.088099324e-06 -5.517791248e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.304167979e-05 1.078377895e-05 1.912272552e-05 0 0 -1.078377895e-05 -6.059586791e-06 -1.07855061e-05 0 0 -1.912272552e-05 -1.07855061e-05 -1.919637777e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.009676115001 -0.0006898196004 -0.001341674173 0.006669594126 -0.01072641809 --0.0006898196004 -0.008461872866 -0.01505358126 -0.005840671022 0.00938153533 --0.001341674173 -0.01505358126 -0.02677881302 -0.01047455444 0.01682483485 -0.006669594126 -0.005840671022 -0.01047455444 0.001215142929 -0.001961675902 --0.01072641809 0.00938153533 0.01682483485 -0.001961675902 0.003166786006 -0.01036239205 0.000194538216 0.0004223393215 0.007331444957 -0.01207298796 -0.000194538216 -0.0060764059 -0.01094167065 -0.003416488061 0.005678165769 -0.0004223393215 -0.01094167065 -0.01970196156 -0.006101829575 0.01014195068 -0.007331444957 -0.003416488061 -0.006101829575 0.003109455116 -0.005090012861 --0.01207298796 0.005678165769 0.01014195068 -0.005090012861 0.00833133606 -0.004187809004 0.00045366927 0.0009373446142 0.002973391924 -0.005039798193 -0.00045366927 -0.001268894988 -0.002329739898 -0.0003086614825 0.0005994084449 -0.0009373446142 -0.002329739898 -0.004274986732 -0.0004980079254 0.0009847360087 -0.002973391924 -0.0003086614825 -0.0004980079254 0.001809275108 -0.003030174877 --0.005039798193 0.0005994084449 0.0009847360087 -0.003030174877 0.005069792983 -0.0004807444136 0.0001269267392 0.0002707609264 0.0003075377897 -0.0005688381784 -0.0001269267392 3.267304688e-05 6.8174142e-05 8.558075728e-05 -0.0001543639257 -0.0002707609264 6.8174142e-05 0.0001394067507 0.0001905328304 -0.0003368875454 -0.0003075377897 8.558075728e-05 0.0001905328304 0.0001738064593 -0.0003420390655 --0.0005688381784 -0.0001543639257 -0.0003368875454 -0.0003420390655 0.0006522465541 -1.268038314e-05 6.429935654e-06 1.417008881e-05 3.313283952e-06 -9.772877905e-06 -6.429935654e-06 -1.996243919e-05 -3.083450105e-05 -2.591105656e-05 3.382752371e-05 -1.417008881e-05 -3.083450105e-05 -4.64100808e-05 -4.146883691e-05 5.257352613e-05 -3.313283952e-06 -2.591105656e-05 -4.146883691e-05 -3.191531222e-05 4.352466597e-05 --9.772877905e-06 3.382752371e-05 5.257352613e-05 4.352466597e-05 -5.72372269e-05 -5.991727753e-05 7.503518855e-06 1.512881168e-05 5.042740222e-05 -8.416394256e-05 -7.503518855e-06 -3.812068037e-05 -6.944700911e-05 -1.989255368e-05 3.389061161e-05 -1.512881168e-05 -6.944700911e-05 -0.0001264816113 -3.513416513e-05 5.989904405e-05 -5.042740222e-05 -1.989255368e-05 -3.513416513e-05 2.485647797e-05 -4.10230059e-05 --8.416394256e-05 3.389061161e-05 5.989904405e-05 -4.10230059e-05 6.768336868e-05 -1.062344828e-05 3.430684887e-06 8.03746649e-06 6.813087526e-06 -1.386372691e-05 -3.430684887e-06 1.010847213e-06 2.602456415e-06 1.857100452e-06 -4.189969763e-06 -8.03746649e-06 2.602456415e-06 6.080482543e-06 5.178941192e-06 -1.050933353e-05 -6.813087526e-06 1.857100452e-06 5.178941192e-06 3.156448111e-06 -7.876081325e-06 --1.386372691e-05 -4.189969763e-06 -1.050933353e-05 -7.876081325e-06 1.724284738e-05 -5.434591928e-06 1.816880273e-06 3.831057544e-06 3.036689834e-06 -5.887263674e-06 -1.816880273e-06 1.217082306e-07 5.827696015e-07 1.167549649e-07 -7.993806653e-07 -3.831057544e-06 5.827696015e-07 1.697521381e-06 8.494784374e-07 -2.470402774e-06 -3.036689834e-06 1.167549649e-07 8.494784374e-07 3.482747723e-08 -1.127508896e-06 --5.887263674e-06 -7.993806653e-07 -2.470402774e-06 -1.127508896e-06 3.564880783e-06 -2.236262722e-06 7.650284232e-08 1.141422316e-07 2.204574964e-06 -3.513278302e-06 -7.650284232e-08 -3.982642519e-06 -7.105510963e-06 -3.112073472e-06 4.966302467e-06 -1.141422316e-07 -7.105510963e-06 -1.267685888e-05 -5.573731419e-06 8.894612061e-06 -2.204574964e-06 -3.112073472e-06 -5.573731419e-06 -3.760853406e-07 6.047852756e-07 --3.513278302e-06 4.966302467e-06 8.894612061e-06 6.047852756e-07 -9.72491942e-07 --9.121700868e-08 -2.969447013e-07 -3.729317381e-07 -4.207463645e-07 4.579562179e-07 --2.969447013e-07 -6.93158633e-07 -9.99470449e-07 -9.035416511e-07 1.123326576e-06 --3.729317381e-07 -9.99470449e-07 -1.356377996e-06 -1.354502065e-06 1.584022214e-06 --4.207463645e-07 -9.035416511e-07 -1.354502065e-06 -1.146271899e-06 1.48604289e-06 -4.579562179e-07 1.123326576e-06 1.584022214e-06 1.48604289e-06 -1.805408533e-06 -1.795942504e-06 4.099914745e-07 8.493517941e-07 1.322396695e-06 -2.326487555e-06 -4.099914745e-07 -1.096608964e-07 -2.088831455e-07 2.522602996e-07 -3.893257455e-07 -8.493517941e-07 -2.088831455e-07 -3.964773315e-07 5.270573093e-07 -8.193010172e-07 -1.322396695e-06 2.522602996e-07 5.270573093e-07 9.615966087e-07 -1.678432915e-06 --2.326487555e-06 -3.893257455e-07 -8.193010172e-07 -1.678432915e-06 2.914861603e-06 -9.844960328e-07 1.362155657e-07 2.69059786e-07 9.067537971e-07 -1.500272516e-06 -1.362155657e-07 -8.682059472e-07 -1.575766566e-06 -5.292296413e-07 8.824541445e-07 -2.69059786e-07 -1.575766566e-06 -2.859493007e-06 -9.426559573e-07 1.572067644e-06 -9.067537971e-07 -5.292296413e-07 -9.426559573e-07 3.519580198e-07 -5.773031548e-07 --1.500272516e-06 8.824541445e-07 1.572067644e-06 -5.773031548e-07 9.468038259e-07 -2.796426402e-07 -7.936116978e-08 -1.524077037e-07 1.384624696e-07 -2.139524178e-07 --7.936116978e-08 -2.652990865e-07 -4.620376811e-07 -2.025755069e-07 3.147595468e-07 --1.524077037e-07 -4.620376811e-07 -8.040081526e-07 -3.621135024e-07 5.625922613e-07 -1.384624696e-07 -2.025755069e-07 -3.621135024e-07 -2.407035505e-08 3.818040216e-08 --2.139524178e-07 3.147595468e-07 5.625922613e-07 3.818040216e-08 -6.053181589e-08 -0.02865985462 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.03100932516 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.007167894608 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.005475058852 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.600837496e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0001271304136 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.208434935e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -5.676580149e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -9.397827944e-07 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --6.458816568e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -8.085906143e-07 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -3.2592916e-08 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.137223294e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.03271792585 -0.001024394882 -0.002383161421 0 0 --0.001024394882 0.02123142925 0.03895525767 0 0 --0.002383161421 0.03895525767 0.0714670571 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.02265554563 -0.02017537291 -0.0370769525 0 0 --0.02017537291 0.01329404114 0.02450342269 0 0 --0.0370769525 0.02450342269 0.04516290377 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.003199057325 -0.0008850021295 -0.001520188589 0 0 --0.0008850021295 0.000511877949 0.0009236921516 0 0 --0.001520188589 0.0009236921516 0.001665570028 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.00454083609 -0.001145816992 -0.002227717283 0 0 --0.001145816992 4.573498226e-05 0.0001348683842 0 0 --0.002227717283 0.0001348683842 0.0003428749125 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0005492845517 7.319638985e-05 0.0001051255344 0 0 -7.319638985e-05 -6.350029659e-05 -0.0001106316268 0 0 -0.0001051255344 -0.0001106316268 -0.0001919531115 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.000167797307 0.0001795523228 0.0003127299995 0 0 -0.0001795523228 -0.0001023702932 -0.0001829623196 0 0 -0.0003127299995 -0.0001829623196 -0.0003265467976 0 0 -0 0 0 0 0 -0 0 0 0 0 -8.93532051e-05 -2.710961355e-05 -5.163533626e-05 0 0 --2.710961355e-05 3.968169802e-06 8.07497932e-06 0 0 --5.163533626e-05 8.07497932e-06 1.630200527e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --9.749739078e-06 -9.896314071e-06 -1.750586924e-05 0 0 --9.896314071e-06 1.883639205e-05 3.432685499e-05 0 0 --1.750586924e-05 3.432685499e-05 6.253748274e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --9.167803951e-05 3.74077926e-05 6.764383083e-05 0 0 -3.74077926e-05 -1.204531971e-05 -2.195419269e-05 0 0 -6.764383083e-05 -2.195419269e-05 -4.00026627e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --5.424721968e-05 2.12566355e-05 3.825838567e-05 0 0 -2.12566355e-05 -7.286773635e-06 -1.321790506e-05 0 0 -3.825838567e-05 -1.321790506e-05 -2.39651151e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.504536005e-06 1.312461605e-06 2.31052396e-06 0 0 -1.312461605e-06 1.67734954e-06 3.054708324e-06 0 0 -2.31052396e-06 3.054708324e-06 5.561290652e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 --9.521772667e-06 2.041458877e-06 3.688737831e-06 0 0 -2.041458877e-06 9.393325912e-07 1.725507565e-06 0 0 -3.688737831e-06 1.725507565e-06 3.16940276e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.784144223e-05 8.521344554e-06 1.53246051e-05 0 0 -8.521344554e-06 -2.455018933e-06 -4.467718227e-06 0 0 -1.53246051e-05 -4.467718227e-06 -8.127642508e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.05855085802 0.03502821566 0.06429818253 0.002619373249 -0.002917713818 -0.03502821566 -0.005408673158 -0.009973959006 0.004743977533 -0.007306613777 -0.06429818253 -0.009973959006 -0.01839213345 0.008689531362 -0.01338547079 -0.002619373249 0.004743977533 0.008689531362 0.002444655737 -0.003544013067 --0.002917713818 -0.007306613777 -0.01338547079 -0.003544013067 0.005125140148 -0.005447739137 -0.01059329614 -0.019650722 -0.004783264821 0.007163090202 --0.01059329614 0.01811754892 0.03361920008 0.006681968192 -0.009866205626 --0.019650722 0.03361920008 0.06238424616 0.01240663165 -0.01831976653 --0.004783264821 0.006681968192 0.01240663165 0.001435152619 -0.002001145178 -0.007163090202 -0.009866205626 -0.01831976653 -0.002001145178 0.002767154542 -0.0008644495748 -0.002758031039 -0.005022770763 -9.008301664e-05 9.972817867e-06 --0.002758031039 0.0038793787 0.007119248953 0.0007632935839 -0.001059083193 --0.005022770763 0.007119248953 0.01306354134 0.001384811136 -0.001917396485 --9.008301664e-05 0.0007632935839 0.001384811136 -3.664076702e-05 9.831944379e-05 -9.972817867e-06 -0.001059083193 -0.001917396485 9.831944379e-05 -0.0002143654981 --5.904758845e-05 -0.0005004464954 -0.0009244945418 -0.0003425756324 0.0005199435049 --0.0005004464954 -0.0003153077934 -0.0005300671044 -5.054729737e-05 5.543910757e-05 --0.0009244945418 -0.0005300671044 -0.0008816887812 -5.5292288e-05 4.432623826e-05 --0.0003425756324 -5.054729737e-05 -5.5292288e-05 8.550735692e-05 -0.0001452407841 -0.0005199435049 5.543910757e-05 4.432623826e-05 -0.0001452407841 0.0002440219088 -0.001043874267 -0.0001143828538 -0.0002810658986 -9.990905928e-05 0.0001692621086 --0.0001143828538 -0.0003805825033 -0.0006556427774 -0.0001061752564 0.0001490722758 --0.0002810658986 -0.0006556427774 -0.001122952528 -0.0001776135643 0.0002471145045 --9.990905928e-05 -0.0001061752564 -0.0001776135643 -2.533264544e-05 3.373949404e-05 -0.0001692621086 0.0001490722758 0.0002471145045 3.373949404e-05 -4.402500188e-05 --0.0001891153596 0.000116902095 0.0002167323357 4.319635052e-05 -6.288118906e-05 -0.000116902095 -4.725578723e-05 -8.761588866e-05 -1.095331741e-05 1.387463529e-05 -0.0002167323357 -8.761588866e-05 -0.0001624466402 -2.03104222e-05 2.572841497e-05 -4.319635052e-05 -1.095331741e-05 -2.03104222e-05 5.116853194e-08 -1.378189559e-06 --6.288118906e-05 1.387463529e-05 2.572841497e-05 -1.378189559e-06 4.075421076e-06 -2.312014862e-05 -1.531734107e-05 -3.028645507e-05 -1.103081286e-05 1.75147084e-05 --1.531734107e-05 -3.527740976e-06 -3.834500393e-06 2.124579515e-06 -4.279288617e-06 --3.028645507e-05 -3.834500393e-06 -2.092986669e-06 5.391302342e-06 -1.014342852e-05 --1.103081286e-05 2.124579515e-06 5.391302342e-06 3.298219149e-06 -5.580263e-06 -1.75147084e-05 -4.279288617e-06 -1.014342852e-05 -5.580263e-06 9.345506273e-06 -8.425054044e-06 1.303464294e-05 2.342266689e-05 4.972046812e-06 -7.307920934e-06 -1.303464294e-05 1.268945855e-05 2.307578983e-05 8.091647694e-06 -1.215599132e-05 -2.342266689e-05 2.307578983e-05 4.194745279e-05 1.452572746e-05 -2.181269869e-05 -4.972046812e-06 8.091647694e-06 1.452572746e-05 2.912934648e-06 -4.267397909e-06 --7.307920934e-06 -1.215599132e-05 -2.181269869e-05 -4.267397909e-06 6.242352586e-06 --8.108454024e-05 4.167837314e-05 7.694492073e-05 1.387179719e-05 -2.017106918e-05 -4.167837314e-05 -2.019862325e-05 -3.724084574e-05 -6.654679875e-06 9.529638951e-06 -7.694492073e-05 -3.724084574e-05 -6.866005235e-05 -1.226655669e-05 1.755965671e-05 -1.387179719e-05 -6.654679875e-06 -1.226655669e-05 -2.188457042e-06 3.125168125e-06 --2.017106918e-05 9.529638951e-06 1.755965671e-05 3.125168125e-06 -4.443684326e-06 --3.126388238e-06 7.451367519e-06 1.290189451e-05 2.185768898e-06 -2.96306033e-06 -7.451367519e-06 -7.894497305e-06 -1.40818197e-05 -2.427264533e-06 3.472996293e-06 -1.290189451e-05 -1.40818197e-05 -2.507963246e-05 -4.319143058e-06 6.163557616e-06 -2.185768898e-06 -2.427264533e-06 -4.319143058e-06 -7.434581416e-07 1.059331211e-06 --2.96306033e-06 3.472996293e-06 6.163557616e-06 1.059331211e-06 -1.50246494e-06 --2.971729023e-06 1.714356225e-06 3.125447055e-06 -2.573729966e-07 4.5622211e-07 -1.714356225e-06 2.353036278e-06 4.336739446e-06 1.628993272e-06 -2.447288803e-06 -3.125447055e-06 4.336739446e-06 7.992506496e-06 2.990604185e-06 -4.492317205e-06 --2.573729966e-07 1.628993272e-06 2.990604185e-06 6.335786128e-07 -9.280433859e-07 -4.5622211e-07 -2.447288803e-06 -4.492317205e-06 -9.280433859e-07 1.357324251e-06 --8.011075095e-06 3.135913216e-06 5.850565266e-06 7.496481717e-08 -4.709714577e-08 -3.135913216e-06 -1.085048085e-07 -2.018093701e-07 6.261931068e-07 -9.539485613e-07 -5.850565266e-06 -2.018093701e-07 -3.753436816e-07 1.168632635e-06 -1.780291465e-06 -7.496481717e-08 6.261931068e-07 1.168632635e-06 3.833151646e-07 -5.691859981e-07 --4.709714577e-08 -9.539485613e-07 -1.780291465e-06 -5.691859981e-07 8.446723873e-07 --5.756550455e-06 6.244401998e-06 1.119771401e-05 1.644265929e-06 -2.294607471e-06 -6.244401998e-06 -4.74512725e-06 -8.610933707e-06 -1.210637234e-06 1.740256143e-06 -1.119771401e-05 -8.610933707e-06 -1.561888303e-05 -2.199713021e-06 3.158269795e-06 -1.644265929e-06 -1.210637234e-06 -2.199713021e-06 -3.078114592e-07 4.439028501e-07 --2.294607471e-06 1.740256143e-06 3.158269795e-06 4.439028501e-07 -6.382236478e-07 -0.0002805011982 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0003239541668 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0001244081221 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.412559054e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -3.277232095e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.603355865e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -5.665796161e-07 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --4.389815002e-07 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --4.52195632e-08 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.639025038e-07 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.404441886e-07 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.468999852e-07 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --4.398651712e-08 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.04249001637 0.05069844826 0.05992058189 0 0 -0.05069844826 0.001107798964 0.0009655599464 0 0 -0.05992058189 0.0009655599464 0.0007368370181 0 0 -0 0 0 0 0 -0 0 0 0 0 --4.373898571e-05 -0.0001185076427 -3.455718801e-05 0 0 --0.0001185076427 0.0001023984224 0.0002457459056 0 0 --3.455718801e-05 0.0002457459056 0.0002446684795 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0009017175358 0.0008447845526 -0.0002679477705 0 0 -0.0008447845526 3.614086979e-05 4.275993896e-06 0 0 --0.0002679477705 4.275993896e-06 -6.676340749e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.051681843e-06 0.0001456007034 6.993026846e-05 0 0 -0.0001456007034 3.827004885e-05 1.998525338e-05 0 0 -6.993026846e-05 1.998525338e-05 1.036947886e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -2.001868636e-05 0.0001385521187 5.945563453e-05 0 0 -0.0001385521187 4.098029427e-06 2.034839531e-06 0 0 -5.945563453e-05 2.034839531e-06 9.916739029e-07 0 0 -0 0 0 0 0 -0 0 0 0 0 --7.259295749e-05 -3.612045644e-06 6.00431597e-05 0 0 --3.612045644e-06 4.067632465e-07 -2.261631007e-06 0 0 -6.00431597e-05 -2.261631007e-06 -2.681034638e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.258425073e-06 2.06110097e-05 1.363166369e-05 0 0 -2.06110097e-05 -2.67296019e-06 -1.638507119e-06 0 0 -1.363166369e-05 -1.638507119e-06 -9.980056611e-07 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.687915195e-06 1.46629043e-05 1.022917657e-05 0 0 -1.46629043e-05 3.955498584e-07 2.49493568e-07 0 0 -1.022917657e-05 2.49493568e-07 1.556114782e-07 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.815125567e-05 8.340756041e-06 1.891652056e-05 0 0 -8.340756041e-06 2.740249817e-07 3.839987529e-07 0 0 -1.891652056e-05 3.839987529e-07 3.460327059e-07 0 0 -0 0 0 0 0 -0 0 0 0 0 --7.404343488e-06 1.619947257e-05 1.483635876e-05 0 0 -1.619947257e-05 -3.042214145e-07 -2.252330491e-07 0 0 -1.483635876e-05 -2.252330491e-07 -1.573025705e-07 0 0 -0 0 0 0 0 -0 0 0 0 0 --4.566551947e-06 9.703839324e-06 8.968798063e-06 0 0 -9.703839324e-06 -4.966725458e-07 -3.701584027e-07 0 0 -8.968798063e-06 -3.701584027e-07 -2.595681014e-07 0 0 -0 0 0 0 0 -0 0 0 0 0 --5.74084056e-06 6.079402341e-06 7.827941803e-06 0 0 -6.079402341e-06 -1.152417323e-07 -1.068861015e-07 0 0 -7.827941803e-06 -1.068861015e-07 -8.391841719e-08 0 0 -0 0 0 0 0 -0 0 0 0 0 --4.370676676e-06 6.797883847e-06 7.081687479e-06 0 0 -6.797883847e-06 5.404978433e-08 4.338158216e-08 0 0 -7.081687479e-06 4.338158216e-08 3.174412259e-08 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.001466787575 -0.04371865024 -0.02503937926 -0.0008565226356 -0.001660138572 --0.04371865024 -0.03443915891 0.003220878872 0.0398286456 0.08047512261 --0.02503937926 0.003220878872 0.01459288377 0.02256610897 0.04555953882 --0.0008565226356 0.0398286456 0.02256610897 0.0003472858752 0.0006380746581 --0.001660138572 0.08047512261 0.04555953882 0.0006380746581 0.001160775746 -0.0002843658197 -0.00278803017 -0.001713955693 -0.0002170861919 -0.0004644651104 --0.00278803017 -0.004448390628 0.0003680572765 0.002378585942 0.006080339074 --0.001713955693 0.0003680572765 0.001830790365 0.001437823822 0.003588895696 --0.0002170861919 0.002378585942 0.001437823822 0.0001637551672 0.0003425582037 --0.0004644651104 0.006080339074 0.003588895696 0.0003425582037 0.0006853080234 --1.834641091e-06 0.0001045632842 6.604741141e-05 -1.637063642e-06 7.110301625e-06 -0.0001045632842 0.001554872286 2.257925776e-05 0.0001529961302 -0.0009348836122 -6.604741141e-05 2.257925776e-05 -0.0004693093644 8.901735652e-05 -0.000522886072 --1.637063642e-06 0.0001529961302 8.901735652e-05 -9.865610904e-07 2.137138293e-06 -7.110301625e-06 -0.0009348836122 -0.000522886072 2.137138293e-06 9.774555785e-06 -1.962361745e-05 -0.0002402347096 -0.0001302375351 -2.205960833e-05 -1.51842529e-05 --0.0002402347096 0.0003831140768 9.119308505e-05 0.0003772979288 0.00011994334 --0.0001302375351 9.119308505e-05 -1.902758426e-05 0.0002094276242 6.202087572e-05 --2.205960833e-05 0.0003772979288 0.0002094276242 2.030177061e-05 1.983394238e-05 --1.51842529e-05 0.00011994334 6.202087572e-05 1.983394238e-05 1.004908777e-05 -6.320359022e-07 -2.903627301e-05 -1.64266946e-05 3.529210121e-07 -9.786437459e-07 --2.903627301e-05 -8.748477688e-05 -4.494605447e-05 -3.020112046e-05 9.591953186e-05 --1.64266946e-05 -4.494605447e-05 -2.286966437e-05 -1.704094196e-05 5.410156544e-05 -3.529210121e-07 -3.020112046e-05 -1.704094196e-05 5.942165262e-08 -4.499325775e-08 --9.786437459e-07 9.591953186e-05 5.410156544e-05 -4.499325775e-08 -3.116247192e-07 --8.258830777e-07 -1.777894862e-05 -9.279519002e-06 6.161113793e-07 2.394793029e-06 --1.777894862e-05 -6.169629104e-05 -3.88400582e-06 3.723666492e-06 6.28818062e-05 --9.279519002e-06 -3.88400582e-06 1.525070171e-05 1.102070915e-06 3.381970952e-05 -6.161113793e-07 3.723666492e-06 1.102070915e-06 -1.761569998e-07 -2.123151054e-06 -2.394793029e-06 6.28818062e-05 3.381970952e-05 -2.123151054e-06 -6.544360267e-06 --5.825817987e-09 -9.566340387e-06 -5.397191731e-06 1.085729306e-07 1.739298144e-07 --9.566340387e-06 1.265559248e-05 4.618047145e-06 1.560691101e-05 6.986207845e-06 --5.397191731e-06 4.618047145e-06 1.182932554e-06 8.831292082e-06 3.986214975e-06 -1.085729306e-07 1.560691101e-05 8.831292082e-06 -3.401106437e-07 -3.584275354e-07 -1.739298144e-07 6.986207845e-06 3.986214975e-06 -3.584275354e-07 -2.549096674e-07 -4.255478539e-07 -7.123242388e-06 -4.151145229e-06 -2.01773989e-07 -6.299637018e-07 --7.123242388e-06 -1.189613063e-05 -2.153599219e-06 2.937854101e-06 1.501471337e-05 --4.151145229e-06 -2.153599219e-06 1.35581212e-06 1.728087994e-06 8.587087327e-06 --2.01773989e-07 2.937854101e-06 1.728087994e-06 9.419740728e-08 3.136834969e-07 --6.299637018e-07 1.501471337e-05 8.587087327e-06 3.136834969e-07 7.802168733e-07 -3.940624037e-07 -1.336594178e-05 -7.685595116e-06 -1.526236024e-07 -5.027019328e-07 --1.336594178e-05 -2.049815904e-05 -1.562298142e-06 8.142983127e-06 3.063341455e-05 --7.685595116e-06 -1.562298142e-06 4.760217974e-06 4.618320298e-06 1.732154563e-05 --1.526236024e-07 8.142983127e-06 4.618320298e-06 4.054398909e-08 1.096748973e-07 --5.027019328e-07 3.063341455e-05 1.732154563e-05 1.096748973e-07 2.519549806e-07 -8.932670709e-08 -1.189054356e-05 -6.714180536e-06 3.486324697e-08 7.462020907e-08 --1.189054356e-05 6.504155139e-07 2.139984032e-06 1.353952651e-05 1.789862273e-05 --6.714180536e-06 2.139984032e-06 2.207381176e-06 7.624934188e-06 1.007555189e-05 -3.486324697e-08 1.353952651e-05 7.624934188e-06 -1.953023724e-07 -2.906880962e-07 -7.462020907e-08 1.789862273e-05 1.007555189e-05 -2.906880962e-07 -4.272532104e-07 -6.073680264e-08 -5.300671395e-06 -3.004602399e-06 4.598662933e-09 -9.637458339e-09 --5.300671395e-06 -4.635961844e-06 -8.404860521e-08 4.28215292e-06 1.010402158e-05 --3.004602399e-06 -8.404860521e-08 1.380407585e-06 2.40177309e-06 5.676876353e-06 -4.598662933e-09 4.28215292e-06 2.40177309e-06 -4.659785562e-08 -9.357882267e-08 --9.637458339e-09 1.010402158e-05 5.676876353e-06 -9.357882267e-08 -1.821062785e-07 -1.14190733e-07 -4.973245791e-06 -2.835984294e-06 -4.421992515e-08 -1.06140983e-07 --4.973245791e-06 -4.766927737e-06 -1.349838546e-08 4.026433184e-06 9.550116961e-06 --2.835984294e-06 -1.349838546e-08 1.501678402e-06 2.270399283e-06 5.385727927e-06 --4.421992515e-08 4.026433184e-06 2.270399283e-06 -2.808781488e-09 -5.655190653e-09 --1.06140983e-07 9.550116961e-06 5.385727927e-06 -5.655190653e-09 -1.102493432e-08 -1.2900531e-07 -5.602735375e-06 -3.182594512e-06 -5.961908063e-08 -1.087220092e-07 --5.602735375e-06 -2.698963411e-06 3.99051355e-07 5.336392713e-06 9.707273838e-06 --3.182594512e-06 3.99051355e-07 1.309064414e-06 3.009725887e-06 5.4749955e-06 --5.961908063e-08 5.336392713e-06 3.009725887e-06 -3.121488635e-09 -5.421825932e-09 --1.087220092e-07 9.707273838e-06 5.4749955e-06 -5.421825932e-09 -9.396300589e-09 -0.07122917675 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.02760218266 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.09130731611 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.03507633081 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.001394852919 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.000755798249 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0009443235921 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0009904162242 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -3.168082251e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0002887427071 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.471829547e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.618541009e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -3.484855503e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.03152231168 0.06457752283 0.1092075134 0 0 -0.06457752283 0.05701176078 0.017012916 0 0 -0.1092075134 0.017012916 0.07726034838 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.06891660594 0.004771683477 0.009909961967 0 0 -0.004771683477 0.02647184254 -0.01025003919 0 0 -0.009909961967 -0.01025003919 0.01490409155 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.02253708112 0.01893363171 0.03387357217 0 0 -0.01893363171 0.007187208907 0.003814432146 0 0 -0.03387357217 0.003814432146 0.01196006385 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.005531539143 0.0001792120091 0.0003464505595 0 0 -0.0001792120091 0.007030233359 0.01497919778 0 0 -0.0003464505595 0.01497919778 0.02561624406 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.00064499475 0.0005522945533 0.000981218702 0 0 -0.0005522945533 -0.0004653189345 -0.0008207623747 0 0 -0.000981218702 -0.0008207623747 -0.001464721336 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0003332128531 0.0003048676716 0.0005369573444 0 0 -0.0003048676716 -1.610026458e-06 -0.0005848582608 0 0 -0.0005369573444 -0.0005848582608 -0.0007478222197 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0003757589137 6.150180095e-05 0.0001033193441 0 0 -6.150180095e-05 0.0003420435946 0.0008132529633 0 0 -0.0001033193441 0.0008132529633 0.001338896341 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.183080225e-05 7.574424076e-05 0.0001349277226 0 0 -7.574424076e-05 -7.828545251e-05 -0.000150324916 0 0 -0.0001349277226 -0.000150324916 -0.0002632960618 0 0 -0 0 0 0 0 -0 0 0 0 0 --7.994902115e-06 -3.238440498e-06 -4.923663429e-06 0 0 --3.238440498e-06 2.808270508e-05 -7.73698613e-06 0 0 --4.923663429e-06 -7.73698613e-06 1.706766086e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0001494697228 5.126638347e-05 8.957826534e-05 0 0 -5.126638347e-05 2.722817569e-05 9.957665936e-05 0 0 -8.957826534e-05 9.957665936e-05 0.0001471030465 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.018220875e-05 3.550481452e-05 5.85247782e-05 0 0 -3.550481452e-05 -3.389309519e-05 -5.837365043e-05 0 0 -5.85247782e-05 -5.837365043e-05 -0.0001017871338 0 0 -0 0 0 0 0 -0 0 0 0 0 -5.167887386e-06 -1.978826878e-07 -2.103329586e-06 0 0 --1.978826878e-07 9.889781215e-06 1.38987429e-05 0 0 --2.103329586e-06 1.38987429e-05 2.68443539e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --4.485939748e-05 1.968225676e-05 3.475542559e-05 0 0 -1.968225676e-05 -6.096147898e-07 9.734151838e-06 0 0 -3.475542559e-05 9.734151838e-06 1.104770513e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.2186295503 0.008453381299 0.02481499391 0.003054990724 -0.007448167917 -0.008453381299 -0.05551440381 0.04841680474 0.1291846289 0.1565367407 -0.02481499391 0.04841680474 0.008404728591 -0.1510687895 0.04898743689 -0.003054990724 0.1291846289 -0.1510687895 0.04470930295 0.006320835469 --0.007448167917 0.1565367407 0.04898743689 0.006320835469 0.03835313163 --0.05171710374 -0.0106297429 -0.02188578762 -0.01142761188 0.01701529519 --0.0106297429 0.01770503367 0.08319374107 0.03345632711 0.01245460704 --0.02188578762 0.08319374107 0.122227708 -0.01404094839 -0.02001818077 --0.01142761188 0.03345632711 -0.01404094839 0.04237310156 0.01880052003 -0.01701529519 0.01245460704 -0.02001818077 0.01880052003 0.02276689899 -0.0003612022535 -0.005682565353 -0.01045600859 -0.0006499775328 0.001123072884 --0.005682565353 0.0004865631884 0.007038733577 -0.005443219358 0.008200852175 --0.01045600859 0.007038733577 0.009196005418 -0.009193765341 0.01515873096 --0.0006499775328 -0.005443219358 -0.009193765341 0.009564011631 0.01269785544 -0.001123072884 0.008200852175 0.01515873096 0.01269785544 -0.003136489313 -0.008577682974 0.0008859078067 0.001505544343 0.006723736052 -0.01082638387 -0.0008859078067 -0.005368969186 -0.0100933178 -0.003212751101 0.004765768486 -0.001505544343 -0.0100933178 -0.01792672106 -0.00538931873 0.008954378091 -0.006723736052 -0.003212751101 -0.00538931873 0.002508616855 -0.005000699806 --0.01082638387 0.004765768486 0.008954378091 -0.005000699806 0.007507215046 -0.00127253615 0.0006617054108 0.001195881082 0.0015226249 -0.002446477957 -0.0006617054108 9.413090145e-05 0.0001693997548 0.0006047361925 -0.0009248667841 -0.001195881082 0.0001693997548 0.0002971180838 0.001061210116 -0.001671215659 -0.0015226249 0.0006047361925 0.001061210116 0.001993804751 -0.002256852407 --0.002446477957 -0.0009248667841 -0.001671215659 -0.002256852407 0.004149415412 --0.0002030642279 0.0001657631212 0.0003392083629 0.0001116811423 -0.0001779196912 -0.0001657631212 -3.08543524e-05 0.0001819336826 0.0002532891457 -3.556228338e-05 -0.0003392083629 0.0001819336826 0.0001902454626 7.301696393e-05 -0.0003264318877 -0.0001116811423 0.0002532891457 7.301696393e-05 0.0002848202012 -0.0001852169078 --0.0001779196912 -3.556228338e-05 -0.0003264318877 -0.0001852169078 0.0005412758519 -0.0002165600105 -7.386639885e-05 -0.0001290296039 0.0001181686858 -0.00018935024 --7.386639885e-05 -0.000302587444 -0.0005381989621 -0.0002185043211 0.0003899084829 --0.0001290296039 -0.0005381989621 -0.0009634265561 -0.0004234273761 0.0006741143552 -0.0001181686858 -0.0002185043211 -0.0004234273761 -0.0001010780697 5.06827854e-05 --0.00018935024 0.0003899084829 0.0006741143552 5.06827854e-05 -0.00015447791 -3.959866023e-05 -9.720044934e-06 -1.969558403e-05 4.522138209e-05 -7.806224041e-05 --9.720044934e-06 2.981109758e-05 6.446530887e-05 2.657869917e-05 -2.219747652e-05 --1.969558403e-05 6.446530887e-05 0.0001136202434 1.936023982e-05 -5.524273429e-05 -4.522138209e-05 2.657869917e-05 1.936023982e-05 0.0001171987142 -4.311932929e-05 --7.806224041e-05 -2.219747652e-05 -5.524273429e-05 -4.311932929e-05 0.0001654224624 --4.699226072e-05 6.80801738e-05 0.0001286993226 6.560939377e-05 -0.0001065697651 -6.80801738e-05 -1.20478453e-05 2.11861508e-05 8.553197786e-05 -1.436153798e-05 -0.0001286993226 2.11861508e-05 1.258456564e-05 2.260664951e-05 -0.0001058540394 -6.560939377e-05 8.553197786e-05 2.260664951e-05 6.906351532e-05 -0.0001139315486 --0.0001065697651 -1.436153798e-05 -0.0001058540394 -0.0001139315486 0.0001892720166 --1.237288357e-05 -1.008539424e-05 -1.147010312e-05 6.862958554e-06 -8.560053544e-06 --1.008539424e-05 -6.148085507e-05 -9.546412862e-05 -1.768868158e-05 9.457158302e-05 --1.147010312e-05 -9.546412862e-05 -0.0001787163104 -9.44991799e-05 0.0001270181779 -6.862958554e-06 -1.768868158e-05 -9.44991799e-05 -4.840757451e-05 2.099560814e-05 --8.560053544e-06 9.457158302e-05 0.0001270181779 2.099560814e-05 -7.005689963e-05 --2.4222322e-05 -9.448971929e-06 -1.494388777e-05 -8.900848366e-06 1.491757858e-05 --9.448971929e-06 3.249563672e-06 1.670747312e-05 1.127817823e-05 1.44816277e-05 --1.494388777e-05 1.670747312e-05 2.470562241e-05 -1.160170103e-05 5.720297504e-06 --8.900848366e-06 1.127817823e-05 -1.160170103e-05 7.478447495e-06 1.525429252e-05 -1.491757858e-05 1.44816277e-05 5.720297504e-06 1.525429252e-05 -9.956534886e-06 --1.260377243e-05 7.888714039e-06 1.568095549e-05 1.162377018e-05 -1.894088935e-05 -7.888714039e-06 -2.112549065e-06 9.880109947e-06 2.148277149e-05 5.05352149e-06 -1.568095549e-05 9.880109947e-06 1.057086498e-05 -2.808582603e-06 -1.629943791e-05 -1.162377018e-05 2.148277149e-05 -2.808582603e-06 1.104980597e-05 -2.207894046e-05 --1.894088935e-05 5.05352149e-06 -1.629943791e-05 -2.207894046e-05 3.372086284e-05 --2.078704576e-05 1.266735171e-06 4.462443203e-06 6.796047889e-07 -5.650230212e-07 -1.266735171e-06 -1.576297868e-05 -1.83095369e-05 5.469551716e-06 2.695869803e-05 -4.462443203e-06 -1.83095369e-05 -3.840810619e-05 -2.650153868e-05 2.565973377e-05 -6.796047889e-07 5.469551716e-06 -2.650153868e-05 -8.874380567e-06 4.484358578e-06 --5.650230212e-07 2.695869803e-05 2.565973377e-05 4.484358578e-06 -1.348148933e-05 -0.0001220931155 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0001409584058 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -5.04911623e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.10916109e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -7.561563871e-07 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --5.673917988e-07 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.800155587e-08 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -7.186729762e-08 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --4.564375566e-08 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.60714381e-07 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --8.095285921e-08 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.075518113e-08 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --7.878114545e-09 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.04555434511 0.02753820771 0.08024044635 0 0 -0.02753820771 2.069057986e-06 0.0001353535521 0 0 -0.08024044635 0.0001353535521 0.0007722205225 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.001265937692 0.0007277533438 0.0008599962142 0 0 -0.0007277533438 1.337278442e-06 8.638890821e-05 0 0 -0.0008599962142 8.638890821e-05 0.0002194436279 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.001297500096 -0.0008219636628 0.0004617899744 0 0 --0.0008219636628 -5.814263531e-08 -3.702523678e-06 0 0 -0.0004617899744 -3.702523678e-06 4.151814214e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 -7.837996766e-05 -6.884872402e-05 0.0002933778767 0 0 --6.884872402e-05 -4.820592424e-08 -2.98113591e-06 0 0 -0.0002933778767 -2.98113591e-06 2.611395118e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.340117743e-05 2.005243119e-05 8.990795148e-05 0 0 -2.005243119e-05 6.545321697e-10 4.333103383e-08 0 0 -8.990795148e-05 4.333103383e-08 3.75498679e-07 0 0 -0 0 0 0 0 -0 0 0 0 0 --6.448223839e-05 4.534130857e-05 2.60691264e-05 0 0 -4.534130857e-05 -1.974622721e-08 -1.268433254e-06 0 0 -2.60691264e-05 -1.268433254e-06 -1.402455722e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 -3.646002128e-06 -2.630095771e-06 2.07311845e-05 0 0 --2.630095771e-06 9.402283763e-10 5.642269493e-08 0 0 -2.07311845e-05 5.642269493e-08 -9.500460541e-07 0 0 -0 0 0 0 0 -0 0 0 0 0 --9.718375439e-06 5.489055202e-06 1.330924723e-05 0 0 -5.489055202e-06 1.073155531e-09 6.994494842e-08 0 0 -1.330924723e-05 6.994494842e-08 3.343424594e-07 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.906421977e-05 1.232831285e-05 2.09512159e-05 0 0 -1.232831285e-05 7.067521546e-10 4.58047788e-08 0 0 -2.09512159e-05 4.58047788e-08 1.538932164e-07 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.697351728e-06 2.668668261e-06 2.090869047e-05 0 0 -2.668668261e-06 -3.504150426e-10 -2.378401203e-08 0 0 -2.090869047e-05 -2.378401203e-08 -3.509494986e-07 0 0 -0 0 0 0 0 -0 0 0 0 0 --5.334833922e-06 3.49012442e-06 9.266965719e-06 0 0 -3.49012442e-06 -5.621746234e-10 -3.670037136e-08 0 0 -9.266965719e-06 -3.670037136e-08 -1.903869905e-07 0 0 -0 0 0 0 0 -0 0 0 0 0 --5.439274098e-06 3.423375293e-06 9.118784169e-06 0 0 -3.423375293e-06 -8.574726888e-11 -5.598468581e-09 0 0 -9.118784169e-06 -5.598468581e-09 -2.920330431e-08 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.857328718e-06 2.446280826e-06 9.738314522e-06 0 0 -2.446280826e-06 5.50437015e-11 3.630138008e-09 0 0 -9.738314522e-06 3.630138008e-09 2.803738703e-08 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0006233575501 -0.0005447377687 -0.05294985047 0.0007506233403 -4.033718614e-05 --0.0005447377687 0.0003468402862 0.02212815245 -0.0008615779969 5.148530689e-05 --0.05294985047 0.02212815245 -0.01418579863 -0.102187216 0.006460442332 -0.0007506233403 -0.0008615779969 -0.102187216 0.0005765962359 -2.273180382e-05 --4.033718614e-05 5.148530689e-05 0.006460442332 -2.273180382e-05 5.698985171e-07 -0.0001633519216 -0.0001036474812 -0.005637565033 0.000262818877 -1.938677085e-05 --0.0001036474812 6.435614425e-05 0.004104551433 -0.0001608829045 1.079042473e-05 --0.005637565033 0.004104551433 -0.002970575611 -0.0112710543 0.001234740312 -0.000262818877 -0.0001608829045 -0.0112710543 0.0003983344502 -2.488951723e-05 --1.938677085e-05 1.079042473e-05 0.001234740312 -2.488951723e-05 6.809561925e-07 --6.393892203e-08 3.010179084e-06 0.0003750981357 2.617191344e-06 5.695052945e-09 -3.010179084e-06 -1.422219628e-05 -0.0009057350909 1.726813078e-06 -4.303352891e-06 -0.0003750981357 -0.0009057350909 0.0009988204176 0.001064322168 -0.0005636652107 -2.617191344e-06 1.726813078e-06 0.001064322168 1.531150277e-05 -4.187563258e-06 -5.695052945e-09 -4.303352891e-06 -0.0005636652107 -4.187563258e-06 1.272095892e-07 -7.501800077e-06 1.506297044e-06 -0.0002982605428 8.074884208e-06 5.778422579e-06 -1.506297044e-06 -4.6647493e-06 -0.0002957950306 2.097160575e-06 -3.651918115e-06 --0.0002982605428 -0.0002957950306 0.0006544942213 -0.0002984487186 -0.0004582858686 -8.074884208e-06 2.097160575e-06 -0.0002984487186 8.646173098e-06 6.680796711e-06 -5.778422579e-06 -3.651918115e-06 -0.0004582858686 6.680796711e-06 -2.11034929e-07 -1.909781019e-08 -1.447988026e-07 -5.268350524e-06 8.926078566e-08 -2.841452849e-07 --1.447988026e-07 9.135653088e-07 5.75428802e-05 -2.520785709e-07 1.26939279e-06 --5.268350524e-06 5.75428802e-05 -0.0002271719071 -6.517825972e-05 0.0001628934392 -8.926078566e-08 -2.520785709e-07 -6.517825972e-05 -5.614866368e-07 7.113369276e-07 --2.841452849e-07 1.26939279e-06 0.0001628934392 7.113369276e-07 -2.210757106e-08 --5.616675824e-07 1.511367418e-07 -1.555969714e-05 -1.298815271e-06 1.569064807e-07 -1.511367418e-07 2.34174501e-07 1.493596405e-05 2.806938179e-07 5.440826497e-08 --1.555969714e-05 1.493596405e-05 -1.065100441e-05 -3.867137494e-05 8.125895309e-06 --1.298815271e-06 2.806938179e-07 -3.867137494e-05 -2.98619372e-06 3.386464317e-07 -1.569064807e-07 5.440826497e-08 8.125895309e-06 3.386464317e-07 -9.860038836e-09 -1.211618538e-07 -2.535135691e-08 -8.165655693e-06 1.213273699e-07 8.479107564e-08 --2.535135691e-08 -7.949878073e-08 -5.02090372e-06 -5.122375114e-08 -8.98614821e-08 --8.165655693e-06 -5.02090372e-06 1.63143652e-05 -1.022713327e-05 -1.14374664e-05 -1.213273699e-07 -5.122375114e-08 -1.022713327e-05 1.136208846e-07 6.29333905e-08 -8.479107564e-08 -8.98614821e-08 -1.14374664e-05 6.29333905e-08 -1.995823928e-09 -1.980349916e-07 -1.912850048e-07 -9.185076889e-06 3.18414485e-07 -1.724128014e-07 --1.912850048e-07 1.74332949e-07 1.10454354e-05 -2.816597874e-07 1.277020965e-07 --9.185076889e-06 1.10454354e-05 -2.679821882e-05 -2.016474154e-05 1.608736936e-05 -3.18414485e-07 -2.816597874e-07 -2.016474154e-05 4.476588692e-07 -1.807976468e-07 --1.724128014e-07 1.277020965e-07 1.608736936e-05 -1.807976468e-07 5.544437934e-09 -1.227277953e-07 -1.633603143e-07 -1.797831837e-05 9.704489735e-08 -8.432121772e-09 --1.633603143e-07 1.043211052e-07 6.657955021e-06 -2.726314601e-07 2.010558396e-08 --1.797831837e-05 6.657955021e-06 -3.66653736e-06 -3.612006674e-05 2.591346102e-06 -9.704489735e-08 -2.726314601e-07 -3.612006674e-05 -1.051866837e-07 4.595745563e-09 --8.432121772e-09 2.010558396e-08 2.591346102e-06 4.595745563e-09 -1.180012951e-10 --6.772345517e-09 -7.415670889e-08 -9.506979087e-06 -8.225336623e-08 3.77155162e-10 --7.415670889e-08 7.452609587e-09 4.927547786e-07 -1.358836385e-07 -1.782685848e-08 --9.506979087e-06 4.927547786e-07 4.11702125e-06 -1.785225218e-05 -2.273027652e-06 --8.225336623e-08 -1.358836385e-07 -1.785225218e-05 -2.85251422e-07 -1.591089962e-08 -3.77155162e-10 -1.782685848e-08 -2.273027652e-06 -1.591089962e-08 5.67302809e-10 -3.868205515e-08 -5.163812782e-08 -5.082228531e-06 3.556222443e-08 -1.097010073e-08 --5.163812782e-08 4.871647304e-08 3.097095445e-06 -7.897178189e-08 2.266570248e-08 --5.082228531e-06 3.097095445e-06 -4.801419952e-06 -1.041724677e-05 2.904287228e-06 -3.556222443e-08 -7.897178189e-08 -1.041724677e-05 -1.638059013e-08 2.411875536e-09 --1.097010073e-08 2.266570248e-08 2.904287228e-06 2.411875536e-09 -7.141911811e-11 -7.097082092e-08 -6.014738854e-08 -6.158246868e-06 8.273009806e-08 -2.948036944e-09 --6.014738854e-08 3.251858896e-08 2.075088567e-06 -9.591044413e-08 3.745509342e-09 --6.158246868e-06 2.075088567e-06 -1.220831937e-06 -1.157317699e-05 4.682439024e-07 -8.273009806e-08 -9.591044413e-08 -1.157317699e-05 6.03794873e-08 -1.693401164e-09 --2.948036944e-09 3.745509342e-09 4.682439024e-07 -1.693401164e-09 3.819410464e-11 -3.668551983e-08 -4.897923228e-08 -5.595901859e-06 2.612070488e-08 -1.570616546e-09 --4.897923228e-08 2.491953077e-08 1.590746319e-06 -8.217873651e-08 4.057318104e-09 --5.595901859e-06 1.590746319e-06 -7.892707811e-07 -1.085734121e-05 5.244022609e-07 -2.612070488e-08 -8.217873651e-08 -1.085734121e-05 -3.669096158e-08 1.172960021e-09 --1.570616546e-09 4.057318104e-09 5.244022609e-07 1.172960021e-09 -2.771036409e-11 -0.01717447434 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0265714204 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.007037761558 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0002353228766 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -8.390977821e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0002065585535 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -5.888990029e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.754921084e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.956628224e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.97222538e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -3.732973552e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.898980051e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --6.490747155e-07 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.1077955092 0.06348875299 -0.1133288813 0 0 -0.06348875299 0.009479165449 -0.0169563745 0 0 --0.1133288813 -0.0169563745 0.03033153209 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0494703404 0.02134811298 -0.03853527987 0 0 -0.02134811298 0.01921707467 -0.03453048515 0 0 --0.03853527987 -0.03453048515 0.06204619214 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.007989380252 -0.0006942946302 0.00114720332 0 0 --0.0006942946302 0.01193579186 -0.02151853375 0 0 -0.00114720332 -0.02151853375 0.0387934931 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.002868950006 -0.002857459076 0.005155771069 0 0 --0.002857459076 0.00281069257 -0.005067969618 0 0 -0.005155771069 -0.005067969618 0.009137738525 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.000982847797 -0.0006887097337 0.001230788803 0 0 --0.0006887097337 0.0002556820143 -0.0004574569487 0 0 -0.001230788803 -0.0004574569487 0.0008184629834 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0002536302945 -1.579150548e-05 2.337584619e-05 0 0 --1.579150548e-05 -0.0003767203891 0.0006694476599 0 0 -2.337584619e-05 0.0006694476599 -0.001189549723 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0002902883773 0.0003219338785 -0.0005717283673 0 0 -0.0003219338785 -0.0003439317917 0.0006116940048 0 0 --0.0005717283673 0.0006116940048 -0.001087853833 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.558512857e-05 2.539888214e-05 -4.546529724e-05 0 0 -2.539888214e-05 -3.943186741e-05 7.056168328e-05 0 0 --4.546529724e-05 7.056168328e-05 -0.0001262668988 0 0 -0 0 0 0 0 -0 0 0 0 0 --7.697095253e-05 2.906932008e-05 -5.240009737e-05 0 0 -2.906932008e-05 4.429717509e-05 -7.953075039e-05 0 0 --5.240009737e-05 -7.953075039e-05 0.000142788339 0 0 -0 0 0 0 0 -0 0 0 0 0 -3.54154873e-05 -2.902663564e-05 5.236797925e-05 0 0 --2.902663564e-05 2.023592496e-05 -3.644091677e-05 0 0 -5.236797925e-05 -3.644091677e-05 6.562141261e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --8.084178562e-06 -8.276863539e-07 1.508411015e-06 0 0 --8.276863539e-07 1.326851436e-05 -2.374484157e-05 0 0 -1.508411015e-06 -2.374484157e-05 4.249279745e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -5.474580031e-06 -2.759789406e-06 4.865641738e-06 0 0 --2.759789406e-06 -1.254525179e-06 2.232974616e-06 0 0 -4.865641738e-06 2.232974616e-06 -3.974363919e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.20236806e-05 1.013179608e-05 -1.794135015e-05 0 0 -1.013179608e-05 -6.034086196e-06 1.073047021e-05 0 0 --1.794135015e-05 1.073047021e-05 -1.908093114e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.009069442211 -0.0005275814922 0.001074714225 0.006328968627 0.01019903271 --0.0005275814922 -0.008124698491 0.01443091605 -0.005570211607 -0.008969116498 -0.001074714225 0.01443091605 -0.02562980423 0.009994844597 0.0160937537 -0.006328968627 -0.005570211607 0.009994844597 0.001098361683 0.001774579539 -0.01019903271 -0.008969116498 0.0160937537 0.001774579539 0.002867092492 -0.01022611727 0.0002152629431 -0.0003656244524 0.00723396414 0.01185226362 -0.0002152629431 -0.006220418048 0.01113281347 -0.003524331693 -0.005809627669 --0.0003656244524 0.01113281347 -0.01992459357 0.006321217335 0.01041996963 -0.00723396414 -0.003524331693 0.006321217335 0.002945816418 0.004805634632 -0.01185226362 -0.005809627669 0.01041996963 0.004805634632 0.007839286909 -0.00444309915 0.0004532646009 -0.0008643128689 0.003135973541 0.005234598767 -0.0004532646009 -0.00146428312 0.002649267457 -0.0004221555399 -0.0007576091134 --0.0008643128689 0.002649267457 -0.004792784059 0.0007347811 0.001322449495 -0.003135973541 -0.0004221555399 0.0007347811 0.001848836682 0.003060087735 -0.005234598767 -0.0007576091134 0.001322449495 0.003060087735 0.005062659042 -0.0006284262471 0.0001533460118 -0.0003004000976 0.0004112155646 0.0007183056168 -0.0001533460118 2.701151838e-05 -5.135916483e-05 0.0001113020669 0.0001863526296 --0.0003004000976 -5.135916483e-05 9.733120614e-05 -0.000219675316 -0.0003667143421 -0.0004112155646 0.0001113020669 -0.000219675316 0.0002575423551 0.0004583672692 -0.0007183056168 0.0001863526296 -0.0003667143421 0.0004583672692 0.0008092551259 -3.000714177e-05 1.234190839e-05 -2.408898692e-05 1.344478371e-05 2.594106644e-05 -1.234190839e-05 -1.095258797e-05 1.737892348e-05 -1.59571254e-05 -2.111353031e-05 --2.408898692e-05 1.737892348e-05 -2.711359057e-05 2.57852656e-05 3.328119376e-05 -1.344478371e-05 -1.59571254e-05 2.57852656e-05 -2.277974404e-05 -3.098290975e-05 -2.594106644e-05 -2.111353031e-05 3.328119376e-05 -3.098290975e-05 -4.059579496e-05 -5.1835126e-05 2.043491842e-06 -4.717216816e-06 4.099361542e-05 6.831098359e-05 -2.043491842e-06 -4.392474003e-05 7.965152503e-05 -2.80212612e-05 -4.706744532e-05 --4.717216816e-06 7.965152503e-05 -0.0001444174699 5.003955669e-05 8.406232065e-05 -4.099361542e-05 -2.80212612e-05 5.003955669e-05 1.245904143e-05 2.05100632e-05 -6.831098359e-05 -4.706744532e-05 8.406232065e-05 2.05100632e-05 3.375540604e-05 -1.402332424e-05 4.004868768e-06 -8.412003865e-06 9.386608257e-06 1.724323131e-05 -4.004868768e-06 1.091737713e-06 -2.233987893e-06 2.841612298e-06 5.061446167e-06 --8.412003865e-06 -2.233987893e-06 4.50085573e-06 -6.151698241e-06 -1.078713885e-05 -9.386608257e-06 2.841612298e-06 -6.151698241e-06 5.784947323e-06 1.111782919e-05 -1.724323131e-05 5.061446167e-06 -1.078713885e-05 1.111782919e-05 2.084142106e-05 -8.997116115e-06 2.858353159e-06 -5.449125561e-06 5.514256385e-06 9.68486016e-06 -2.858353159e-06 7.332407879e-07 -1.463315515e-06 1.263576491e-06 2.390025342e-06 --5.449125561e-06 -1.463315515e-06 2.889947466e-06 -2.591712229e-06 -4.813505223e-06 -5.514256385e-06 1.263576491e-06 -2.591712229e-06 2.016051743e-06 4.017739907e-06 -9.68486016e-06 2.390025342e-06 -4.813505223e-06 4.017739907e-06 7.72727024e-06 -1.254088881e-06 -3.957772961e-07 6.980358593e-07 1.034502066e-06 1.679536088e-06 --3.957772961e-07 -4.140890191e-06 7.445570205e-06 -3.676846604e-06 -5.96504986e-06 -6.980358593e-07 7.445570205e-06 -1.338744102e-05 6.596606952e-06 1.070184477e-05 -1.034502066e-06 -3.676846604e-06 6.596606952e-06 -1.778026717e-06 -2.883217229e-06 -1.679536088e-06 -5.96504986e-06 1.070184477e-05 -2.883217229e-06 -4.675372793e-06 -1.53166933e-07 -5.403786615e-08 -1.352491234e-08 -1.048339941e-07 -1.084416148e-08 --5.403786615e-08 -3.081093129e-07 4.29817533e-07 -4.31203932e-07 -5.224285903e-07 --1.352491234e-08 4.29817533e-07 -5.510011046e-07 6.175024524e-07 6.846373217e-07 --1.048339941e-07 -4.31203932e-07 6.175024524e-07 -5.982319098e-07 -7.456537941e-07 --1.084416148e-08 -5.224285903e-07 6.846373217e-07 -7.456537941e-07 -8.45704404e-07 -2.157032303e-06 4.740072313e-07 -9.089735121e-07 1.594278614e-06 2.708147335e-06 -4.740072313e-07 -2.001908327e-07 3.680480967e-07 2.549529617e-07 3.937148099e-07 --9.089735121e-07 3.680480967e-07 -6.762221495e-07 -4.938731895e-07 -7.654870274e-07 -1.594278614e-06 2.549529617e-07 -4.938731895e-07 1.148446655e-06 1.93848994e-06 -2.708147335e-06 3.937148099e-07 -7.654870274e-07 1.93848994e-06 3.266798414e-06 -7.212528712e-07 -3.024513743e-08 3.521335774e-08 5.922722625e-07 9.872256012e-07 --3.024513743e-08 -1.007696121e-06 1.829233661e-06 -7.61707046e-07 -1.267961201e-06 -3.521335774e-08 1.829233661e-06 -3.320003674e-06 1.365927273e-06 2.273729213e-06 -5.922722625e-07 -7.61707046e-07 1.365927273e-06 -5.179697373e-08 -8.510631339e-08 -9.872256012e-07 -1.267961201e-06 2.273729213e-06 -8.510631339e-08 -1.398096098e-07 -3.446134245e-07 -1.113284375e-08 3.439792114e-08 2.228466296e-07 3.482570248e-07 --1.113284375e-08 -2.058888893e-07 3.573481013e-07 -1.216035228e-07 -1.86690725e-07 -3.439792114e-08 3.573481013e-07 -6.195677805e-07 2.210781402e-07 3.396761012e-07 -2.228466296e-07 -1.216035228e-07 2.210781402e-07 8.064610852e-08 1.278875462e-07 -3.482570248e-07 -1.86690725e-07 3.396761012e-07 1.278875462e-07 2.027053428e-07 -0.02816488868 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.03125113573 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.006170259636 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.00585601796 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --5.165379649e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0001051654701 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.091152894e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -6.136290647e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -3.453265892e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --6.343857476e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.263379198e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -5.12681743e-08 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.909333344e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.03388837728 -0.0001224664567 0.001042021064 0 0 --0.0001224664567 0.0206122665 -0.03785711592 0 0 -0.001042021064 -0.03785711592 0.06950983029 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.02381891313 -0.02071707591 0.03776884775 0 0 --0.02071707591 0.01348866107 -0.02479120073 0 0 -0.03776884775 -0.02479120073 0.04555263361 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.003669329813 -0.001010865569 0.001675378623 0 0 --0.001010865569 0.000658279463 -0.001180548944 0 0 -0.001675378623 -0.001180548944 0.002113559143 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.004539338401 -0.001157970895 0.002266754469 0 0 --0.001157970895 5.651312938e-05 -0.0001560208599 0 0 -0.002266754469 -0.0001560208599 0.0003856498573 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0006674384657 6.377976777e-05 -8.318840745e-05 0 0 -6.377976777e-05 -7.160778747e-05 0.0001249065449 0 0 --8.318840745e-05 0.0001249065449 -0.0002167889435 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0001324441649 0.0001619337845 -0.0002817366167 0 0 -0.0001619337845 -9.37962398e-05 0.0001682258268 0 0 --0.0002817366167 0.0001682258268 -0.0003012031598 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0001343003581 -3.736499249e-05 7.183886891e-05 0 0 --3.736499249e-05 5.497230907e-06 -1.123195692e-05 0 0 -7.183886891e-05 -1.123195692e-05 2.277954629e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --8.078645388e-06 -8.508165816e-06 1.471634727e-05 0 0 --8.508165816e-06 1.749928191e-05 -3.179318479e-05 0 0 -1.471634727e-05 -3.179318479e-05 5.771773326e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --9.998122872e-05 4.188657926e-05 -7.605929941e-05 0 0 -4.188657926e-05 -1.421901744e-05 2.604252374e-05 0 0 --7.605929941e-05 2.604252374e-05 -4.767915574e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --4.917468795e-05 1.92235867e-05 -3.477869097e-05 0 0 -1.92235867e-05 -6.477896453e-06 1.182203304e-05 0 0 --3.477869097e-05 1.182203304e-05 -2.156323967e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --4.38188247e-07 -5.869508639e-07 1.126905306e-06 0 0 --5.869508639e-07 2.778706097e-06 -5.060475034e-06 0 0 -1.126905306e-06 -5.060475034e-06 9.209968536e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 --9.915093809e-06 2.254151788e-06 -4.05516103e-06 0 0 -2.254151788e-06 8.21555981e-07 -1.512737439e-06 0 0 --4.05516103e-06 -1.512737439e-06 2.784849648e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.876046171e-05 9.254927177e-06 -1.667008317e-05 0 0 -9.254927177e-06 -2.868871193e-06 5.239519846e-06 0 0 --1.667008317e-05 5.239519846e-06 -9.564246048e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.05899115051 0.03517946092 -0.06441907404 0.00287295378 0.003117931204 -0.03517946092 -0.005597296182 0.01034347959 0.004514545421 0.006880641908 --0.06441907404 0.01034347959 -0.01911200086 -0.008228794498 -0.01254614058 -0.00287295378 0.004514545421 -0.008228794498 0.002381593036 0.003386790925 -0.003117931204 0.006880641908 -0.01254614058 0.003386790925 0.004801261605 -0.005237506807 -0.01041221902 0.01934802097 -0.004829787411 -0.007111106106 --0.01041221902 0.01798086428 -0.03331661546 0.006796102774 0.009823526716 -0.01934802097 -0.03331661546 0.06172825883 -0.0125300038 -0.01810261392 --0.004829787411 0.006796102774 -0.0125300038 0.001558640247 0.002106348836 --0.007111106106 0.009823526716 -0.01810261392 0.002106348836 0.0028114513 -0.0009132436927 -0.002969279587 0.0053349404 -0.0001474788648 -5.217034829e-05 --0.002969279587 0.004194483432 -0.007663808172 0.0008847870224 0.00119195669 -0.0053349404 -0.007663808172 0.01399581096 -0.00158024083 -0.002117723001 --0.0001474788648 0.0008847870224 -0.00158024083 -6.268323663e-06 -6.746417517e-05 --5.217034829e-05 0.00119195669 -0.002117723001 -6.746417517e-05 -0.0001884521236 --0.0002146063931 -0.0004706985362 0.0008655479838 -0.0003153698549 -0.0004686151381 --0.0004706985362 -0.0002680716514 0.0004455360921 -4.961360473e-05 -5.456412464e-05 -0.0008655479838 0.0004455360921 -0.0007291572514 5.140421473e-05 3.996577331e-05 --0.0003153698549 -4.961360473e-05 5.140421473e-05 7.596585611e-05 0.0001289735764 --0.0004686151381 -5.456412464e-05 3.996577331e-05 0.0001289735764 0.0002160396701 -0.001123799172 -0.0001466964092 0.0003522091448 -0.0001183010687 -0.0001939881528 --0.0001466964092 -0.0003791979587 0.0006513698992 -0.0001062152433 -0.0001475890861 -0.0003522091448 0.0006513698992 -0.001110387117 0.0001758973225 0.0002419010111 --0.0001183010687 -0.0001062152433 0.0001758973225 -2.470166634e-05 -3.2387399e-05 --0.0001939881528 -0.0001475890861 0.0002419010111 -3.2387399e-05 -4.157027503e-05 --0.0001491314378 9.256346096e-05 -0.00017352906 3.520812811e-05 5.061119425e-05 -9.256346096e-05 -3.63273207e-05 6.850351988e-05 -8.407526341e-06 -1.037922064e-05 --0.00017352906 6.850351988e-05 -0.0001291671335 1.601656309e-05 1.985679618e-05 -3.520812811e-05 -8.407526341e-06 1.601656309e-05 2.454722598e-07 1.438983759e-06 -5.061119425e-05 -1.037922064e-05 1.985679618e-05 1.438983759e-06 3.767650505e-06 -2.783387612e-05 -1.820335024e-05 3.598410442e-05 -1.279931842e-05 -1.996331776e-05 --1.820335024e-05 -2.324796947e-06 1.619379261e-06 2.909383587e-06 5.389910182e-06 -3.598410442e-05 1.619379261e-06 2.059730051e-06 -6.893502555e-06 -1.225810147e-05 --1.279931842e-05 2.909383587e-06 -6.893502555e-06 3.789661005e-06 6.237832109e-06 --1.996331776e-05 5.389910182e-06 -1.225810147e-05 6.237832109e-06 1.018830822e-05 -1.193104302e-05 1.580203604e-05 -2.793896714e-05 5.265530247e-06 7.474641972e-06 -1.580203604e-05 5.002719945e-06 -9.076995051e-06 5.51113858e-06 8.201573266e-06 --2.793896714e-05 -9.076995051e-06 1.645528476e-05 -9.765327893e-06 -1.452560871e-05 -5.265530247e-06 5.51113858e-06 -9.765327893e-06 2.189485988e-06 3.142811468e-06 -7.474641972e-06 8.201573266e-06 -1.452560871e-05 3.142811468e-06 4.501688766e-06 --8.122255277e-05 4.107918827e-05 -7.68520647e-05 1.386905459e-05 2.00123741e-05 -4.107918827e-05 -1.937203957e-05 3.626406876e-05 -6.430278831e-06 -9.137837456e-06 --7.68520647e-05 3.626406876e-05 -6.78852271e-05 1.203922977e-05 1.711095683e-05 -1.386905459e-05 -6.430278831e-06 1.203922977e-05 -2.125189606e-06 -3.007996748e-06 -2.00123741e-05 -9.137837456e-06 1.711095683e-05 -3.007996748e-06 -4.241803648e-06 --2.21534984e-06 5.975479991e-06 -1.035070709e-05 1.709364463e-06 2.285979081e-06 -5.975479991e-06 -5.941463481e-06 1.064784706e-05 -1.742902862e-06 -2.461407887e-06 --1.035070709e-05 1.064784706e-05 -1.904847928e-05 3.119393284e-06 4.393264772e-06 -1.709364463e-06 -1.742902862e-06 3.119393284e-06 -5.107739961e-07 -7.198698588e-07 -2.285979081e-06 -2.461407887e-06 4.393264772e-06 -7.198698588e-07 -1.010236849e-06 --2.854769566e-06 1.501526408e-06 -2.692383698e-06 -3.215361555e-07 -5.559612493e-07 -1.501526408e-06 2.607062006e-06 -4.805667024e-06 1.719163591e-06 2.539814355e-06 --2.692383698e-06 -4.805667024e-06 8.856885115e-06 -3.14238378e-06 -4.640774193e-06 --3.215361555e-07 1.719163591e-06 -3.14238378e-06 6.711047622e-07 9.629173853e-07 --5.559612493e-07 2.539814355e-06 -4.640774193e-06 9.629173853e-07 1.378642065e-06 --9.17418259e-06 4.016120446e-06 -7.496797571e-06 4.253215067e-07 5.551273495e-07 -4.016120446e-06 -8.411818916e-07 1.570521233e-06 3.342446214e-07 5.119866533e-07 --7.496797571e-06 1.570521233e-06 -2.932227606e-06 -6.237524476e-07 -9.554608375e-07 -4.253215067e-07 3.342446214e-07 -6.237524476e-07 2.756727929e-07 4.027912098e-07 -5.551273495e-07 5.119866533e-07 -9.554608375e-07 4.027912098e-07 5.880791482e-07 --5.307970964e-06 5.750568549e-06 -1.033379471e-05 1.496395673e-06 2.057226809e-06 -5.750568549e-06 -4.227389899e-06 7.704536268e-06 -1.055970167e-06 -1.496552188e-06 --1.033379471e-05 7.704536268e-06 -1.403316532e-05 1.928034258e-06 2.728760187e-06 -1.496395673e-06 -1.055970167e-06 1.928034258e-06 -2.623442855e-07 -3.733161292e-07 -2.057226809e-06 -1.496552188e-06 2.728760187e-06 -3.733161292e-07 -5.296163989e-07 -0.0001673406473 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0002003361651 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -7.354755519e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.039799485e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.8889869e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.108461867e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -4.762567127e-07 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --9.949094036e-08 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.131710459e-08 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.348460504e-07 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.41829067e-07 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --7.11285485e-08 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.770314065e-08 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.04308582062 0.05160491489 -0.06041967294 0 0 -0.05160491489 0.0006654289633 -0.0005732866975 0 0 --0.06041967294 -0.0005732866975 0.0004309292003 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0004815660173 3.654300464e-05 -0.0003698715954 0 0 -3.654300464e-05 7.694872459e-05 -0.0001583462427 0 0 --0.0003698715954 -0.0001583462427 0.0001518072852 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0009311105233 0.0008759082245 0.0002751044147 0 0 -0.0008759082245 1.733094173e-05 -2.038174578e-06 0 0 -0.0002751044147 -2.038174578e-06 -3.059306443e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.185122332e-06 0.0001867560876 -8.801112722e-05 0 0 -0.0001867560876 2.572165573e-05 -1.318464669e-05 0 0 --8.801112722e-05 -1.318464669e-05 6.714417403e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 -2.061264007e-05 0.0001418360532 -6.00244567e-05 0 0 -0.0001418360532 1.799480443e-06 -8.790767508e-07 0 0 --6.00244567e-05 -8.790767508e-07 4.21751669e-07 0 0 -0 0 0 0 0 -0 0 0 0 0 --6.709429685e-05 -7.868729912e-06 -5.341606321e-05 0 0 --7.868729912e-06 5.116606954e-07 1.388662438e-06 0 0 --5.341606321e-05 1.388662438e-06 -1.695334451e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.839721384e-06 1.765800525e-05 -1.179114764e-05 0 0 -1.765800525e-05 -1.304488841e-06 7.970356529e-07 0 0 --1.179114764e-05 7.970356529e-07 -4.827318579e-07 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.774022879e-06 1.517815477e-05 -1.04524791e-05 0 0 -1.517815477e-05 3.7024883e-07 -2.299888207e-07 0 0 --1.04524791e-05 -2.299888207e-07 1.411872566e-07 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.855734099e-05 8.693732913e-06 -1.925841188e-05 0 0 -8.693732913e-06 1.391419632e-07 -1.916786876e-07 0 0 --1.925841188e-05 -1.916786876e-07 1.696517619e-07 0 0 -0 0 0 0 0 -0 0 0 0 0 --7.187648481e-06 1.53973702e-05 -1.421512889e-05 0 0 -1.53973702e-05 -2.436841411e-07 1.800583146e-07 0 0 --1.421512889e-05 1.800583146e-07 -1.24704876e-07 0 0 -0 0 0 0 0 -0 0 0 0 0 --4.327145012e-06 8.789473452e-06 -8.307196353e-06 0 0 -8.789473452e-06 -2.669694918e-07 2.002941224e-07 0 0 --8.307196353e-06 2.002941224e-07 -1.399780108e-07 0 0 -0 0 0 0 0 -0 0 0 0 0 --5.630544901e-06 5.754054534e-06 -7.546723752e-06 0 0 -5.754054534e-06 -4.881917315e-08 4.557333752e-08 0 0 --7.546723752e-06 4.557333752e-08 -3.550810052e-08 0 0 -0 0 0 0 0 -0 0 0 0 0 --4.374922915e-06 6.769850916e-06 -7.029646277e-06 0 0 -6.769850916e-06 3.505997374e-08 -2.790544058e-08 0 0 --7.029646277e-06 -2.790544058e-08 2.01570342e-08 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0008835338798 -0.04407979254 0.02464202114 -0.0005208638784 0.0009893575451 --0.04407979254 -0.03450251698 -0.00355796865 0.04053338081 -0.08049967733 -0.02464202114 -0.00355796865 0.01452698876 -0.02251067218 0.04468340266 --0.0005208638784 0.04053338081 -0.02251067218 0.0002123180435 -0.00038043955 -0.0009893575451 -0.08049967733 0.04468340266 -0.00038043955 0.000673716669 -0.0001871524418 -0.003401891739 0.001972982295 -0.0001428630644 0.0002960576885 --0.003401891739 -0.005142247981 -0.000441316409 0.002907718818 -0.00715994594 -0.001972982295 -0.000441316409 0.002066547053 -0.00167048794 0.004061619623 --0.0001428630644 0.002907718818 -0.00167048794 0.0001076117681 -0.0002177413092 -0.0002960576885 -0.00715994594 0.004061619623 -0.0002177413092 0.0004211123631 --7.280972268e-07 0.0001152375257 -6.635415654e-05 -8.925908125e-07 -2.104197538e-06 -0.0001152375257 0.001507914785 -1.999189121e-05 0.0001445732468 0.0009092045641 --6.635415654e-05 -1.999189121e-05 -0.0004404861867 -8.310396314e-05 -0.0004987723802 --8.925908125e-07 0.0001445732468 -8.310396314e-05 -1.093695405e-06 -2.483268286e-06 --2.104197538e-06 0.0009092045641 -0.0004987723802 -2.483268286e-06 1.07302205e-05 -1.296270773e-05 -0.0002794263012 0.0001515173583 -1.439451449e-05 9.861791703e-06 --0.0002794263012 0.0004325923068 -0.0001017899563 0.000436598606 -0.0001415051615 -0.0001515173583 -0.0001017899563 -1.995816819e-05 -0.0002397429845 7.504230086e-05 --1.439451449e-05 0.000436598606 -0.0002397429845 1.313088963e-05 -1.255687988e-05 -9.861791703e-06 -0.0001415051615 7.504230086e-05 -1.255687988e-05 6.599042529e-06 -2.486536042e-07 -2.445458993e-05 1.356738151e-05 2.076540935e-07 3.722545777e-07 --2.445458993e-05 -8.502616718e-05 4.272510397e-05 -3.169725148e-05 -8.905300561e-05 -1.356738151e-05 4.272510397e-05 -2.124441469e-05 1.756546566e-05 4.931285357e-05 -2.076540935e-07 -3.169725148e-05 1.756546566e-05 1.223632056e-07 7.342017943e-08 -3.722545777e-07 -8.905300561e-05 4.931285357e-05 7.342017943e-08 -5.471708333e-07 --4.746588553e-07 -1.245172889e-05 6.396523461e-06 3.059846715e-07 -1.431014496e-06 --1.245172889e-05 -5.075466292e-05 2.918426579e-06 1.114013649e-06 -4.920349088e-05 -6.396523461e-06 2.918426579e-06 1.233867216e-05 7.896875017e-09 2.625499914e-05 -3.059846715e-07 1.114013649e-06 7.896875017e-09 -2.403750719e-08 1.214742151e-06 --1.431014496e-06 -4.920349088e-05 2.625499914e-05 1.214742151e-06 -3.821164426e-06 -8.933930529e-08 -9.034196359e-06 4.992322643e-06 -5.599610935e-08 3.92801654e-09 --9.034196359e-06 1.217070706e-05 -4.382453525e-06 1.490033162e-05 -6.566117993e-06 -4.992322643e-06 -4.382453525e-06 1.120854095e-06 -8.257979101e-06 3.64449128e-06 --5.599610935e-08 1.490033162e-05 -8.257979101e-06 -5.957712621e-08 6.076005452e-08 -3.92801654e-09 -6.566117993e-06 3.64449128e-06 6.076005452e-08 -4.20459882e-08 -2.966788293e-07 -8.100760541e-06 4.574607672e-06 -1.495974238e-07 4.295036706e-07 --8.100760541e-06 -1.275551991e-05 2.212853533e-06 3.656512442e-06 -1.639073044e-05 -4.574607672e-06 2.212853533e-06 1.462043508e-06 -2.074015853e-06 9.156591979e-06 --1.495974238e-07 3.656512442e-06 -2.074015853e-06 7.464923399e-08 -2.251086874e-07 -4.295036706e-07 -1.639073044e-05 9.156591979e-06 -2.251086874e-07 5.288435428e-07 -1.998949974e-07 -1.31353755e-05 7.350222052e-06 -6.648190035e-08 2.358714845e-07 --1.31353755e-05 -2.030931602e-05 1.392976687e-06 8.095299137e-06 -3.007263339e-05 -7.350222052e-06 1.392976687e-06 4.687829228e-06 -4.487860164e-06 1.666339206e-05 --6.648190035e-08 8.095299137e-06 -4.487860164e-06 6.390508917e-09 -1.697280127e-08 -2.358714845e-07 -3.007263339e-05 1.666339206e-05 -1.697280127e-08 3.792757006e-08 -2.07712065e-08 -1.078787076e-05 5.976991897e-06 4.908948938e-08 -8.20044481e-08 --1.078787076e-05 7.685715195e-07 -2.097519998e-06 1.255086216e-05 -1.636532488e-05 -5.976991897e-06 -2.097519998e-06 2.087824943e-06 -6.942419492e-06 9.049573219e-06 -4.908948938e-08 1.255086216e-05 -6.942419492e-06 -1.423741275e-07 2.065898094e-07 --8.20044481e-08 -1.636532488e-05 9.049573219e-06 2.065898094e-07 -2.966897828e-07 -4.47729086e-08 -4.915910203e-06 2.733923314e-06 -6.46825546e-09 2.425459471e-08 --4.915910203e-06 -4.431989821e-06 3.232578262e-08 4.008554623e-06 -9.468552317e-06 -2.733923314e-06 3.232578262e-08 1.323938423e-06 -2.214565062e-06 5.235399296e-06 --6.46825546e-09 4.008554623e-06 -2.214565062e-06 -1.905738073e-08 3.774496333e-08 -2.425459471e-08 -9.468552317e-06 5.235399296e-06 3.774496333e-08 -7.196932946e-08 -7.967207522e-08 -4.849092753e-06 2.70741622e-06 -3.715604775e-08 8.362605718e-08 --4.849092753e-06 -4.691973447e-06 -3.011473888e-08 3.966032257e-06 -9.30129605e-06 -2.70741622e-06 -3.011473888e-08 1.472873627e-06 -2.199307927e-06 5.156014054e-06 --3.715604775e-08 3.966032257e-06 -2.199307927e-06 7.636939687e-09 -1.505589328e-08 -8.362605718e-08 -9.30129605e-06 5.156014054e-06 -1.505589328e-08 2.861747468e-08 -6.869975314e-08 -5.40010985e-06 3.003033722e-06 -2.922292469e-08 5.323074617e-08 --5.40010985e-06 -2.603666976e-06 -4.350291027e-07 5.215539001e-06 -9.363033795e-06 -3.003033722e-06 -4.350291027e-07 1.280737136e-06 -2.887525406e-06 5.184006539e-06 --2.922292469e-08 5.215539001e-06 -2.887525406e-06 -7.513261954e-09 1.274757264e-08 -5.323074617e-08 -9.363033795e-06 5.184006539e-06 1.274757264e-08 -2.155549176e-08 --0.0001172769595 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0001407818327 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --4.94901317e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.0247465e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --9.469824812e-07 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -6.249920775e-07 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.315088008e-07 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --7.59167625e-08 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -4.044785631e-08 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.461187927e-07 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -8.590069651e-08 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -3.068872018e-08 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -7.25135377e-09 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.04466049333 0.02686755738 -0.07891870763 0 0 -0.02686755738 2.018669592e-06 0.0001261517211 0 0 --0.07891870763 0.0001261517211 -0.000757434464 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.001214606459 0.0006986811267 -0.0009374551398 0 0 -0.0006986811267 1.283856337e-06 8.131918022e-05 0 0 --0.0009374551398 8.131918022e-05 -0.00020342774 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.001201934372 -0.0007757738219 -0.0005330707555 0 0 --0.0007757738219 -5.487531038e-08 -3.528726171e-06 0 0 --0.0005330707555 -3.528726171e-06 -4.847934598e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 -5.239120235e-05 -5.354288855e-05 -0.0002873749354 0 0 --5.354288855e-05 -3.748816308e-08 -2.498706473e-06 0 0 --0.0002873749354 -2.498706473e-06 -2.583855837e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.991663004e-06 3.631791091e-06 -0.000112328623 0 0 -3.631791091e-06 1.185448328e-10 5.748813714e-09 0 0 --0.000112328623 5.748813714e-09 -4.690020394e-07 0 0 -0 0 0 0 0 -0 0 0 0 0 --6.433855703e-05 4.565556681e-05 -1.789655533e-05 0 0 -4.565556681e-05 -1.988311529e-08 -1.267613879e-06 0 0 --1.789655533e-05 -1.267613879e-06 1.047080637e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.821219025e-06 -1.346764938e-06 -2.009244839e-05 0 0 --1.346764938e-06 4.814541243e-10 3.438151423e-08 0 0 --2.009244839e-05 3.438151423e-08 9.179745706e-07 0 0 -0 0 0 0 0 -0 0 0 0 0 --7.177504024e-06 3.803015795e-06 -1.56522729e-05 0 0 -3.803015795e-06 7.435251759e-10 4.602966373e-08 0 0 --1.56522729e-05 4.602966373e-08 -3.90292847e-07 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.956321353e-05 1.252466154e-05 -1.927409349e-05 0 0 -1.252466154e-05 7.180085075e-10 4.537176754e-08 0 0 --1.927409349e-05 4.537176754e-08 -1.410754565e-07 0 0 -0 0 0 0 0 -0 0 0 0 0 --4.495620381e-06 3.125969454e-06 -2.041904603e-05 0 0 -3.125969454e-06 -4.104612179e-10 -2.49108571e-08 0 0 --2.041904603e-05 -2.49108571e-08 3.433026892e-07 0 0 -0 0 0 0 0 -0 0 0 0 0 --4.71437182e-06 3.134738768e-06 -9.645161872e-06 0 0 -3.134738768e-06 -5.049310922e-10 -3.151614572e-08 0 0 --9.645161872e-06 -3.151614572e-08 1.992467475e-07 0 0 -0 0 0 0 0 -0 0 0 0 0 --5.542300453e-06 3.508103756e-06 -8.727936776e-06 0 0 -3.508103756e-06 -8.786951684e-11 -5.510693854e-09 0 0 --8.727936776e-06 -5.510693854e-09 2.79791846e-08 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.940094128e-06 2.456367014e-06 -9.651457025e-06 0 0 -2.456367014e-06 5.527065902e-11 3.426512244e-09 0 0 --9.651457025e-06 3.426512244e-09 -2.77712394e-08 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0006189965524 0.0005438293469 0.0526617206 -0.0007492574812 -3.100538959e-05 -0.0005438293469 -0.000352129532 -0.02257623155 0.0008621067289 4.330150589e-05 -0.0526617206 -0.02257623155 -0.01390084334 0.1021723984 0.005665810055 --0.0007492574812 0.0008621067289 0.1021723984 -0.0005762891727 -1.147712544e-05 --3.100538959e-05 4.330150589e-05 0.005665810055 -1.147712544e-05 4.998040272e-07 --0.0001582060091 0.0001014495127 0.005502605654 -0.000255523024 -1.631873444e-05 -0.0001014495127 -6.34848088e-05 -0.004072280414 0.0001576509572 8.537955701e-06 -0.005502605654 -0.004072280414 -0.003031050185 0.0110362127 0.001234919959 --0.000255523024 0.0001576509572 0.0110362127 -0.0003881887162 -1.874381631e-05 --1.631873444e-05 8.537955701e-06 0.001234919959 -1.874381631e-05 6.810598303e-07 -5.254826391e-08 -2.483971327e-06 -0.0003083527769 -2.144888167e-06 8.455387204e-08 --2.483971327e-06 1.353287252e-05 0.0008694988214 -1.123047443e-06 -4.662347329e-06 --0.0003083527769 0.0008694988214 0.001010078082 -0.0009391350303 -0.0005839612812 --2.144888167e-06 -1.123047443e-06 -0.0009391350303 -1.360907007e-05 -4.107945787e-06 -8.455387204e-08 -4.662347329e-06 -0.0005839612812 -4.107945787e-06 1.317903795e-07 --8.318850473e-06 -6.784885287e-07 0.0003221752294 -9.440875343e-06 5.77607866e-06 --6.784885287e-07 3.95692727e-06 0.0002554975137 -8.824217841e-07 -3.436027801e-06 -0.0003221752294 0.0002554975137 0.0006180776351 0.0003592067998 -0.0004469121496 --9.440875343e-06 -8.824217841e-07 0.0003592067998 -1.071108607e-05 6.664615699e-06 -5.77607866e-06 -3.436027801e-06 -0.0004469121496 6.664615699e-06 -2.057964042e-07 --2.735939438e-08 1.284275097e-07 7.990080751e-06 -6.586313621e-08 -2.310575568e-07 -1.284275097e-07 -6.015434568e-07 -3.918332172e-05 2.79912986e-07 1.034334864e-06 -7.990080751e-06 -3.918332172e-05 -0.0001814210061 5.677251594e-05 0.0001319824738 --6.586313621e-08 2.79912986e-07 5.677251594e-05 4.962189867e-07 5.689165669e-07 --2.310575568e-07 1.034334864e-06 0.0001319824738 5.689165669e-07 -1.791240896e-08 -4.706234726e-07 -2.025232385e-07 1.280048567e-05 1.155055532e-06 2.227673921e-07 --2.025232385e-07 -2.615435501e-07 -1.679524649e-05 -3.686437483e-07 1.094256683e-07 -1.280048567e-05 -1.679524649e-05 -1.717940325e-05 3.557284565e-05 1.270399246e-05 -1.155055532e-06 -3.686437483e-07 3.557284565e-05 2.787574714e-06 4.711400894e-07 -2.227673921e-07 1.094256683e-07 1.270399246e-05 4.711400894e-07 -1.541495119e-08 --1.343319569e-07 3.695010191e-08 8.923709843e-06 -1.411236634e-07 8.82374065e-08 -3.695010191e-08 6.964315478e-08 4.519093577e-06 7.030393733e-08 -9.107420776e-08 -8.923709843e-06 4.519093577e-06 1.657266625e-05 1.212617219e-05 -1.169904088e-05 --1.411236634e-07 7.030393733e-08 1.212617219e-05 -1.358369198e-07 6.634321597e-08 -8.82374065e-08 -9.107420776e-08 -1.169904088e-05 6.634321597e-08 -2.041467482e-09 --2.059327515e-07 1.730090088e-07 9.814964028e-06 -3.175497099e-07 -1.324322502e-07 -1.730090088e-07 -1.431333362e-07 -9.239858151e-06 2.560153742e-07 9.717611733e-08 -9.814964028e-06 -9.239858151e-06 -2.179093562e-05 1.996487349e-05 1.263049128e-05 --3.175497099e-07 2.560153742e-07 1.996487349e-05 -4.373540405e-07 -1.35781324e-07 --1.324322502e-07 9.717611733e-08 1.263049128e-05 -1.35781324e-07 4.353063087e-09 --1.150254814e-07 1.594301272e-07 1.686895091e-05 -9.462129399e-08 -1.715867742e-08 -1.594301272e-07 -1.267442615e-07 -8.136413745e-06 2.612244917e-07 3.861846899e-08 -1.686895091e-05 -8.136413745e-06 -7.665299259e-06 3.491980114e-05 4.916483908e-06 --9.462129399e-08 2.612244917e-07 3.491980114e-05 1.017151128e-07 6.363940512e-09 --1.715867742e-08 3.861846899e-08 4.916483908e-06 6.363940512e-09 -2.23879981e-10 -7.117394736e-09 7.788923438e-08 9.992980892e-06 8.648762716e-08 -2.258087024e-09 -7.788923438e-08 -9.840272134e-09 -6.106467224e-07 1.427360303e-07 -2.211349279e-08 -9.992980892e-06 -6.106467224e-07 4.791426438e-06 1.892027533e-05 -2.839066095e-06 -8.648762716e-08 1.427360303e-07 1.892027533e-05 3.017335294e-07 -2.501764662e-08 --2.258087024e-09 -2.211349279e-08 -2.839066095e-06 -2.501764662e-08 7.085802895e-10 --3.8498012e-08 5.056060243e-08 5.074882674e-06 -3.558506871e-08 -9.356154739e-09 -5.056060243e-08 -4.506103125e-08 -2.898029501e-06 7.91634442e-08 1.916109918e-08 -5.074882674e-06 -2.898029501e-06 -4.084526956e-06 1.041475208e-05 2.44654638e-06 --3.558506871e-08 7.91634442e-08 1.041475208e-05 1.638216147e-08 1.795788453e-09 --9.356154739e-09 1.916109918e-08 2.44654638e-06 1.795788453e-09 -6.016283986e-11 --6.888582308e-08 6.020570897e-08 5.985796664e-06 -8.171368285e-08 -4.164097009e-09 -6.020570897e-08 -3.651886462e-08 -2.342578086e-06 9.583895849e-08 5.888373564e-09 -5.985796664e-06 -2.342578086e-06 -1.755925331e-06 1.148255126e-05 7.653795741e-07 --8.171368285e-08 9.583895849e-08 1.148255126e-05 -5.988648986e-08 -1.528194067e-09 --4.164097009e-09 5.888373564e-09 7.653795741e-07 -1.528194067e-09 6.243071352e-11 --3.744569853e-08 5.001585222e-08 5.714049256e-06 -2.674614594e-08 -1.034472522e-09 -5.001585222e-08 -2.553941639e-08 -1.635558585e-06 8.407122594e-08 2.150771161e-09 -5.714049256e-06 -1.635558585e-06 -5.321054e-07 1.110687868e-05 2.696091079e-07 --2.674614594e-08 8.407122594e-08 1.110687868e-05 3.75380656e-08 1.62098931e-10 --1.034472522e-09 2.150771161e-09 2.696091079e-07 1.62098931e-10 -1.424654479e-11 -0.0710045372 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.02567002742 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.08959238833 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.03903690394 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.00214539261 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0004341283401 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0006525133118 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.001130547225 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --9.255812823e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.000282235016 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -2.397647076e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --5.397323188e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -4.458151399e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.03099866402 0.06656191313 -0.1121776996 0 0 -0.06656191313 0.05611032216 -0.01619898841 0 0 --0.1121776996 -0.01619898841 0.07495282422 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.07899184928 0.002258037843 -0.003820449083 0 0 -0.002258037843 0.02854532032 0.01031388006 0 0 --0.003820449083 0.01031388006 0.0164019836 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.02127801414 0.01975610907 -0.03538379672 0 0 -0.01975610907 0.006818724335 -0.0009776468041 0 0 --0.03538379672 -0.0009776468041 0.00810630183 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.007667972698 0.001331489898 -0.002371924531 0 0 -0.001331489898 0.007119923573 -0.01516743355 0 0 --0.002371924531 -0.01516743355 0.02591462747 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0002324578356 0.0001068544203 -0.000184950849 0 0 -0.0001068544203 6.320246837e-05 -2.873207264e-05 0 0 --0.000184950849 -2.873207264e-05 0.000111653064 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0002874938685 0.0002648400283 -0.0004796631692 0 0 -0.0002648400283 -1.646189858e-05 0.0005922949547 0 0 --0.0004796631692 0.0005922949547 -0.0007669032395 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0004877084608 0.0001722617269 -0.0003020886745 0 0 -0.0001722617269 0.0002412201481 -0.0006345525723 0 0 --0.0003020886745 -0.0006345525723 0.001026567152 0 0 -0 0 0 0 0 -0 0 0 0 0 -4.127181346e-05 3.44345412e-05 -6.00752114e-05 0 0 -3.44345412e-05 -2.47599701e-05 7.890417169e-05 0 0 --6.00752114e-05 7.890417169e-05 -0.000122241332 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.100094529e-05 -1.681975016e-05 2.860706055e-05 0 0 --1.681975016e-05 5.043443055e-05 -4.541304038e-05 0 0 -2.860706055e-05 -4.541304038e-05 0.0001038860165 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0001664430379 7.445146714e-05 -0.000131934172 0 0 -7.445146714e-05 -2.512137422e-06 -4.995171042e-05 0 0 --0.000131934172 -4.995171042e-05 5.842604207e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.632427154e-07 2.417558043e-05 -3.99913019e-05 0 0 -2.417558043e-05 -2.425361408e-05 4.910518613e-05 0 0 --3.99913019e-05 4.910518613e-05 -8.189719877e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -3.387657556e-06 -3.302174213e-06 7.012982634e-06 0 0 --3.302174213e-06 1.527634773e-05 -2.660529627e-05 0 0 -7.012982634e-06 -2.660529627e-05 4.783217856e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --5.093097294e-05 2.452807974e-05 -4.37329368e-05 0 0 -2.452807974e-05 -6.597600322e-06 4.538709557e-07 0 0 --4.37329368e-05 4.538709557e-07 -7.48392634e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.2248300271 0.008854496267 -0.02491809185 0.001996820495 0.006975747838 -0.008854496267 -0.05674259075 -0.04661529456 0.1320266888 -0.158448397 --0.02491809185 -0.04661529456 0.006282859392 0.153542341 0.04774250353 -0.001996820495 0.1320266888 0.153542341 0.04183710363 -0.005912318159 -0.006975747838 -0.158448397 0.04774250353 -0.005912318159 0.03633939831 --0.05764454347 -0.01067045552 0.02084795803 -0.01223652975 -0.01758823439 --0.01067045552 0.0166502161 -0.08599621236 0.03754446406 -0.01508439037 -0.02084795803 -0.08599621236 0.1256629646 0.01412890657 -0.02122476998 --0.01223652975 0.03754446406 0.01412890657 0.04246109813 -0.0180019243 --0.01758823439 -0.01508439037 -0.02122476998 -0.0180019243 0.02424436298 --0.001943047101 -0.006012917842 0.01109280701 -0.001878005188 -0.003030654849 --0.006012917842 0.001837112634 -0.01111252714 -0.004278886116 -0.007471385111 -0.01109280701 -0.01111252714 0.01562733603 0.008241316366 0.01318171252 --0.001878005188 -0.004278886116 0.008241316366 0.0105512993 -0.01385400676 --0.003030654849 -0.007471385111 0.01318171252 -0.01385400676 -0.003280319668 -0.008347027955 0.000570795614 -0.001002786279 0.006320538033 0.01015828123 -0.000570795614 -0.005656587278 0.01072400846 -0.003973947407 -0.00551245705 --0.001002786279 0.01072400846 -0.01901535744 0.006200282173 0.01055366844 -0.006320538033 -0.003973947407 0.006200282173 0.002262069713 0.003630201119 -0.01015828123 -0.00551245705 0.01055366844 0.003630201119 0.005915127741 -0.001532839417 0.0007156088093 -0.001299067442 0.001789186969 0.00288252637 -0.0007156088093 -4.114273915e-05 7.053149485e-05 0.0005463270037 0.0008716307519 --0.001299067442 7.053149485e-05 -0.0001239543387 -0.0009895682215 -0.001569374679 -0.001789186969 0.0005463270037 -0.0009895682215 0.002372241485 0.002451631705 -0.00288252637 0.0008716307519 -0.001569374679 0.002451631705 0.004742708344 -2.315669366e-06 0.0002764040714 -0.0005229248131 0.0003091193457 0.0004975554288 -0.0002764040714 -8.025598696e-06 -0.0002448832388 0.0003731347352 0.0001869429201 --0.0005229248131 -0.0002448832388 0.0002915748088 -0.0002330281364 -0.0006207446371 -0.0003091193457 0.0003731347352 -0.0002330281364 0.0004059966534 0.0005624365664 -0.0004975554288 0.0001869429201 -0.0006207446371 0.0005624365664 0.001016711161 -0.000130473912 -0.0001061074856 0.0001884319296 3.181412076e-05 4.955116989e-05 --0.0001061074856 -0.0002944547521 0.0005321414227 -0.0002505641646 -0.0004176196092 -0.0001884319296 0.0005321414227 -0.0009493263504 0.0004577274178 0.0007397669389 -3.181412076e-05 -0.0002505641646 0.0004577274178 -0.0001565706373 -0.0001868300967 -4.955116989e-05 -0.0004176196092 0.0007397669389 -0.0001868300967 -0.0003465763216 -2.788328274e-05 -1.763047917e-05 3.256158398e-05 4.18115499e-05 7.251274844e-05 --1.763047917e-05 2.43468877e-05 -5.774109984e-05 1.894424009e-05 4.816794807e-06 -3.256158398e-05 -5.774109984e-05 0.0001007646724 -3.728533056e-06 -2.645938054e-05 -4.18115499e-05 1.894424009e-05 -3.728533056e-06 0.0001336408229 1.974636507e-05 -7.251274844e-05 4.816794807e-06 -2.645938054e-05 1.974636507e-05 0.0001550449854 --8.48761659e-06 8.493527967e-05 -0.0001584118498 0.0001015502144 0.0001641962511 -8.493527967e-05 -2.137150855e-05 -4.785731343e-06 9.54082588e-05 2.137536782e-05 --0.0001584118498 -4.785731343e-06 -1.744064358e-05 -3.002007131e-05 -0.0001239057251 -0.0001015502144 9.54082588e-05 -3.002007131e-05 7.76199196e-05 0.0001698776342 -0.0001641962511 2.137536782e-05 -0.0001239057251 0.0001698776342 0.0002529483241 --2.247997038e-05 -1.764182929e-05 2.741128022e-05 -8.406617891e-06 -1.577372487e-05 --1.764182929e-05 -5.317723275e-05 8.394899136e-05 -2.137346261e-05 -9.063308853e-05 -2.741128022e-05 8.394899136e-05 -0.0001565130919 9.319886122e-05 0.0001270494566 --8.406617891e-06 -2.137346261e-05 9.319886122e-05 -5.251828826e-05 -4.070486719e-05 --1.577372487e-05 -9.063308853e-05 0.0001270494566 -4.070486719e-05 -9.534126837e-05 --2.420020714e-05 -9.036898004e-06 1.495843624e-05 -8.517090442e-06 -1.360508062e-05 --9.036898004e-06 5.489428991e-06 -2.114763076e-05 1.240772095e-05 -1.149407477e-05 -1.495843624e-05 -2.114763076e-05 3.274707554e-05 9.675506599e-06 8.01274262e-07 --8.517090442e-06 1.240772095e-05 9.675506599e-06 1.11930456e-05 -1.465856443e-05 --1.360508062e-05 -1.149407477e-05 8.01274262e-07 -1.465856443e-05 -4.570414937e-06 --1.042511428e-05 1.055136451e-05 -2.016735634e-05 1.509017752e-05 2.469164828e-05 -1.055136451e-05 -5.469933911e-06 -3.514914724e-06 2.107221577e-05 -6.485488366e-06 --2.016735634e-05 -3.514914724e-06 -7.11986468e-07 4.747671095e-06 -1.415521101e-05 -1.509017752e-05 2.107221577e-05 4.747671095e-06 9.759288726e-06 2.662644326e-05 -2.469164828e-05 -6.485488366e-06 -1.415521101e-05 2.662644326e-05 3.691007705e-05 --2.201018235e-05 -2.409536657e-07 -1.263970094e-06 -1.819997868e-06 -3.339824051e-06 --2.409536657e-07 -1.399003553e-05 1.598605837e-05 4.872918315e-06 -2.593448503e-05 --1.263970094e-06 1.598605837e-05 -3.375070892e-05 2.611173111e-05 2.511624003e-05 --1.819997868e-06 4.872918315e-06 2.611173111e-05 -9.185024638e-06 -7.721256184e-06 --3.339824051e-06 -2.593448503e-05 2.511624003e-05 -7.721256184e-06 -1.717426339e-05 diff --git a/tests/09_DeePKS/100_NO_GO_deepks_UT/gedm_ref.dat b/tests/09_DeePKS/100_NO_GO_deepks_UT/gedm_ref.dat deleted file mode 100644 index dc01de559e..0000000000 --- a/tests/09_DeePKS/100_NO_GO_deepks_UT/gedm_ref.dat +++ /dev/null @@ -1,195 +0,0 @@ -0.00455101 --0.0162555 --0.0196281 --0.0294372 --0.00638518 --0.000596083 --3.05722e-06 -0.00038585 -0.000750667 -0.000770818 -0.000255847 --0.000503508 --9.37461e-05 -0.00355502 7.75251e-05 -5.37857e-05 7.75251e-05 0.00439019 -2.47685e-05 -5.37857e-05 -2.47685e-05 0.00454595 -0.00516849 -0.000180798 4.95341e-05 -0.000180798 0.00371962 -0.000117272 4.95341e-05 -0.000117272 0.0046214 --0.00151745 0.000130465 -0.000100943 0.000130465 -0.000242707 7.25457e-07 -0.000100943 7.25457e-07 -0.000176 --0.000124772 -0.000183416 7.6981e-05 -0.000183416 -0.00264438 -0.000172513 7.6981e-05 -0.000172513 -0.00177847 --0.00472137 -8.52249e-05 -7.7202e-05 -8.52249e-05 0.000470726 0.00114275 -7.7202e-05 0.00114275 0.00186303 --0.000911786 -0.000676215 4.09784e-05 -0.000676215 -0.00495849 -0.000398887 4.09784e-05 -0.000398887 -0.00137057 -0.00205417 -5.2168e-05 3.10254e-05 -5.2168e-05 0.00151608 -2.50497e-05 3.10254e-05 -2.50497e-05 0.00165495 --0.000545567 -1.31639e-05 -1.08827e-07 -1.31639e-05 -7.86784e-05 0.000304378 -1.08827e-07 0.000304378 -0.000597345 -0.000288417 0.000644399 0.000321825 0.000644399 -0.000417122 -0.000537383 0.000321825 -0.000537383 0.00261856 -0.000932691 -0.000127436 1.24681e-05 -0.000127436 -0.000512405 -0.00020325 1.24681e-05 -0.00020325 0.000489102 -0.000547034 1.56934e-05 -9.23532e-06 1.56934e-05 -0.000539323 0.000580488 -9.23532e-06 0.000580488 0.000278984 -0.000912276 0.000210613 -1.8636e-05 0.000210613 -0.000198827 -4.62662e-05 -1.8636e-05 -4.62662e-05 0.000237364 -0.000671134 6.04808e-05 0.000110715 6.04808e-05 0.00125406 0.000176559 0.000110715 0.000176559 2.3831e-05 -7.547e-05 2.66368e-05 -3.1934e-05 0.00014227 -1.9203e-05 2.66368e-05 0.00136085 0.000996538 -0.00152646 0.000815423 -3.1934e-05 0.000996538 0.000282055 -0.000735878 0.000284523 0.00014227 -0.00152646 -0.000735878 4.66693e-05 -0.00043002 -1.9203e-05 0.000815423 0.000284523 -0.00043002 0.000107165 -0.00317121 -6.67591e-05 -7.36369e-05 5.48894e-05 -5.3155e-05 -6.67591e-05 0.00540591 0.0025838 -0.00158647 0.00193198 -7.36369e-05 0.0025838 0.00224974 -0.00172007 -0.000673346 5.48894e-05 -0.00158647 -0.00172007 0.00403775 -0.00126147 -5.3155e-05 0.00193198 -0.000673346 -0.00126147 0.00264015 -0.00473934 0.000377598 5.80948e-05 0.000358084 -6.01287e-05 0.000377598 0.000675796 -0.000181223 0.000997214 0.000171965 5.80948e-05 -0.000181223 0.00174147 -0.000198479 -0.00224663 0.000358084 0.000997214 -0.000198479 0.00150026 0.000308131 -6.01287e-05 0.000171965 -0.00224663 0.000308131 0.00307959 -0.00344362 0.000414148 -9.58538e-05 0.000500278 0.000135287 0.000414148 8.95346e-05 -2.90856e-05 -0.00106216 0.000224252 -9.58538e-05 -2.90856e-05 0.00044471 -0.000223376 0.000233721 0.000500278 -0.00106216 -0.000223376 -0.000879405 0.000200417 0.000135287 0.000224252 0.000233721 0.000200417 0.000303545 -0.00313493 -0.000220674 -7.20072e-05 -0.000482851 0.000133329 -0.000220674 -0.000411784 -0.000303589 -0.00108357 -0.000153744 -7.20072e-05 -0.000303589 6.37711e-05 0.000119739 0.000996005 -0.000482851 -0.00108357 0.000119739 -0.00128762 0.00020618 0.000133329 -0.000153744 0.000996005 0.00020618 -0.000534544 -0.000605666 -1.44169e-05 -1.77998e-05 2.06829e-05 1.73048e-05 -1.44169e-05 0.00191701 -0.000190476 0.000412946 0.000452078 -1.77998e-05 -0.000190476 0.000902155 -0.000497056 0.000765159 2.06829e-05 0.000412946 -0.000497056 0.0022663 0.000533742 1.73048e-05 0.000452078 0.000765159 0.000533742 0.000442198 --7.86307e-05 7.11884e-05 1.7557e-05 0.0001572 -3.45322e-05 7.11884e-05 0.000276019 -4.15979e-06 -0.000817649 0.000110901 1.7557e-05 -4.15979e-06 0.000453529 -0.000106833 0.000359236 0.0001572 -0.000817649 -0.000106833 -0.00047482 0.000102134 -3.45322e-05 0.000110901 0.000359236 0.000102134 0.000235987 -0.000809835 7.13021e-05 3.076e-05 4.24041e-05 9.98571e-06 7.13021e-05 -0.000276101 -0.000845612 8.13533e-05 -0.000452959 3.076e-05 -0.000845612 0.00086918 0.000370874 0.000250664 4.24041e-05 8.13533e-05 0.000370874 -0.000209274 0.000555859 9.98571e-06 -0.000452959 0.000250664 0.000555859 0.000715114 -8.20845e-05 -3.08526e-05 6.35629e-06 -7.1614e-05 -7.92672e-07 -3.08526e-05 -8.89134e-05 -0.000120488 0.000963564 -0.00025972 6.35629e-06 -0.000120488 -3.04711e-05 0.000255879 -0.000441422 -7.1614e-05 0.000963564 0.000255879 0.000739298 -7.06487e-05 -7.92672e-07 -0.00025972 -0.000441422 -7.06487e-05 0.000234705 -0.000326347 6.83023e-05 3.43326e-05 0.000107484 -3.04545e-05 6.83023e-05 0.000226639 -0.00033937 -0.000220767 -0.000223351 3.43326e-05 -0.00033937 0.000774186 0.000194202 0.000254204 0.000107484 -0.000220767 0.000194202 3.53456e-05 0.000190274 -3.04545e-05 -0.000223351 0.000254204 0.000190274 0.000624364 --3.19311e-05 0.000153413 -0.000148395 0.000199146 0.000215481 0.000153413 -0.000820516 -0.000241487 -0.00017723 -0.00021106 -0.000148395 -0.000241487 -0.000759058 0.000199991 0.000695437 0.000199146 -0.00017723 0.000199991 -0.000984716 8.92412e-05 0.000215481 -0.00021106 0.000695437 8.92412e-05 -0.00117097 --5.7793e-05 -1.18912e-05 -7.74546e-06 -3.72102e-06 -3.35554e-05 -1.18912e-05 0.000698551 0.00106881 0.000556438 0.000321776 -7.74546e-06 0.00106881 -0.000329573 -0.000214431 -0.00117184 -3.72102e-06 0.000556438 -0.000214431 0.00117207 -0.000880698 -3.35554e-05 0.000321776 -0.00117184 -0.000880698 0.000368399 -0.000108234 -4.68798e-06 3.06591e-05 -2.68903e-05 -1.86281e-05 -4.68798e-06 -0.000171748 -0.000363811 0.000168201 -0.000300555 3.06591e-05 -0.000363811 0.000130139 0.000270551 0.000369024 -2.68903e-05 0.000168201 0.000270551 -2.55252e-05 0.000159164 -1.86281e-05 -0.000300555 0.000369024 0.000159164 -8.84237e-05 -0.00142367 --0.012872 --0.0209597 --0.0317954 --0.00662405 --0.000762928 -0.000120708 --0.000170183 -0.000959849 -0.000115977 --0.000205753 --0.00064672 --0.000679427 -0.00202003 -6.98246e-05 5.2506e-06 -6.98246e-05 0.00374301 8.07047e-05 5.2506e-06 8.07047e-05 0.00347012 -0.00613828 -0.000595399 0.000261008 -0.000595399 0.00344997 -9.204e-05 0.000261008 -9.204e-05 0.00387311 --0.000521945 3.17273e-06 6.11074e-07 3.17273e-06 -0.000672723 -0.00013928 6.11074e-07 -0.00013928 -0.000103767 -0.00120054 6.28329e-05 1.40142e-05 6.28329e-05 -0.00304051 -0.000208152 1.40142e-05 -0.000208152 -0.00130683 --0.00472406 -0.000104176 -1.20535e-05 -0.000104176 0.000400689 -0.00034621 -1.20535e-05 -0.00034621 0.00223198 --0.00232511 -0.00200969 4.59172e-05 -0.00200969 -0.00458476 -6.10796e-05 4.59172e-05 -6.10796e-05 -0.00120657 -0.00134605 -8.55636e-07 -1.77445e-07 -8.55636e-07 0.00140392 -3.73289e-05 -1.77445e-07 -3.73289e-05 0.00154235 -0.000135397 -1.00859e-05 4.17818e-05 -1.00859e-05 1.26675e-06 6.08157e-05 4.17818e-05 6.08157e-05 -0.00107007 -0.00246658 0.000164174 1.85755e-06 0.000164174 -0.000584621 -0.000316189 1.85755e-06 -0.000316189 0.000894486 -0.00129412 6.01776e-05 -3.49964e-05 6.01776e-05 0.000593908 0.000155143 -3.49964e-05 0.000155143 -0.000297336 -0.000544891 -3.95865e-06 1.23125e-05 -3.95865e-06 0.000334149 0.000124993 1.23125e-05 0.000124993 -0.000870946 -0.000229453 2.49728e-05 2.75566e-06 2.49728e-05 -0.000477237 -9.69621e-05 2.75566e-06 -9.69621e-05 -3.36067e-05 -0.00101474 0.000201336 -2.82435e-05 0.000201336 -0.000334467 -7.7675e-05 -2.82435e-05 -7.7675e-05 -8.23249e-05 -0.000825531 4.48899e-05 7.32184e-06 6.72979e-06 6.34087e-06 4.48899e-05 -0.000579095 -0.000222178 -0.000374516 -0.00036128 7.32184e-06 -0.000222178 0.00024019 0.000259042 0.000270331 6.72979e-06 -0.000374516 0.000259042 0.00100042 0.00172807 6.34087e-06 -0.00036128 0.000270331 0.00172807 0.00177366 -0.00390737 4.42119e-05 -2.01028e-05 4.26823e-05 2.56516e-05 4.42119e-05 0.0034052 7.33816e-05 -0.000573926 -0.000328848 -2.01028e-05 7.33816e-05 0.00257462 0.000261087 -0.000276615 4.26823e-05 -0.000573926 0.000261087 0.00774328 0.0025712 2.56516e-05 -0.000328848 -0.000276615 0.0025712 -0.000539243 -0.00266111 -0.000145214 -2.88297e-06 -1.32079e-05 -7.85263e-06 -0.000145214 0.00543206 0.000106431 -0.000116733 3.09928e-05 -2.88297e-06 0.000106431 0.00482334 -2.45932e-05 0.000208924 -1.32079e-05 -0.000116733 -2.45932e-05 -0.000272332 -0.00011555 -7.85263e-06 3.09928e-05 0.000208924 -0.00011555 5.33984e-05 -0.00401041 0.000129922 2.91045e-05 -1.5648e-05 1.57479e-06 0.000129922 -0.000351036 0.000122913 6.27281e-05 3.7584e-05 2.91045e-05 0.000122913 -0.00130987 -2.3537e-05 -0.000732312 -1.5648e-05 6.27281e-05 -2.3537e-05 -0.000222727 -6.27362e-05 1.57479e-06 3.7584e-05 -0.000732312 -6.27362e-05 -0.000154742 -0.00327146 0.000145248 4.26896e-05 3.31008e-06 -8.56535e-06 0.000145248 -0.00265146 -0.000224364 -0.000628114 7.59295e-05 4.26896e-05 -0.000224364 -0.00119717 -7.39665e-05 0.000268222 3.31008e-06 -0.000628114 -7.39665e-05 0.000477818 -0.000207242 -8.56535e-06 7.59295e-05 0.000268222 -0.000207242 0.000980006 -6.01623e-05 -9.19322e-05 -8.98867e-06 -7.9717e-06 -1.94943e-06 -9.19322e-05 0.00204454 0.000185277 4.18743e-06 4.06969e-06 -8.98867e-06 0.000185277 0.000379231 -2.04651e-05 -3.42985e-05 -7.9717e-06 4.18743e-06 -2.04651e-05 0.00188329 0.000287656 -1.94943e-06 4.06969e-06 -3.42985e-05 0.000287656 0.000844266 --0.000823478 -1.22495e-05 -1.57061e-05 -2.93787e-06 2.00528e-06 -1.22495e-05 0.000457174 -9.26174e-05 0.000538873 -1.21137e-05 -1.57061e-05 -9.26174e-05 0.000575766 3.37393e-05 6.43839e-06 -2.93787e-06 0.000538873 3.37393e-05 -0.000320227 -9.02094e-05 2.00528e-06 -1.21137e-05 6.43839e-06 -9.02094e-05 -7.87477e-05 --0.000354584 -5.1228e-05 4.00023e-06 -2.20657e-06 6.23771e-06 -5.1228e-05 0.000677555 -4.22566e-05 -0.000112119 -0.000281728 4.00023e-06 -4.22566e-05 0.000939381 0.000220123 -0.000163281 -2.20657e-06 -0.000112119 0.000220123 0.00115627 0.00127462 6.23771e-06 -0.000281728 -0.000163281 0.00127462 6.75154e-06 -0.00148325 3.45863e-05 -2.08588e-06 -3.08767e-06 3.86883e-06 3.45863e-05 0.000839092 1.93907e-05 0.000347054 2.2708e-05 -2.08588e-06 1.93907e-05 0.000794429 -1.49169e-05 -0.000227211 -3.08767e-06 0.000347054 -1.49169e-05 -0.0002336 -9.35979e-05 3.86883e-06 2.2708e-05 -0.000227211 -9.35979e-05 -0.00016636 -2.53494e-05 -2.12888e-05 -2.22628e-05 -1.99596e-06 3.45421e-07 -2.12888e-05 -0.000439695 -9.56146e-05 -0.000294097 0.000103399 -2.22628e-05 -9.56146e-05 0.00058687 -9.12283e-05 0.000104166 -1.99596e-06 -0.000294097 -9.12283e-05 0.000479819 -0.000256884 3.45421e-07 0.000103399 0.000104166 -0.000256884 0.00103395 --0.00126015 -2.10619e-06 2.21964e-05 1.33328e-05 -7.18043e-06 -2.10619e-06 -0.00121989 -0.00035294 -0.000397573 0.000121751 2.21964e-05 -0.00035294 -6.89214e-05 -0.000127989 -0.000120354 1.33328e-05 -0.000397573 -0.000127989 0.000408087 -0.000231981 -7.18043e-06 0.000121751 -0.000120354 -0.000231981 -0.000714141 -0.00196706 3.19849e-05 8.25652e-06 -2.11418e-05 1.0882e-05 3.19849e-05 0.000828954 5.57886e-05 0.00057121 -0.000307419 8.25652e-06 5.57886e-05 0.00061935 0.000257889 -2.99791e-05 -2.11418e-05 0.00057121 0.000257889 -0.000996057 0.000966372 1.0882e-05 -0.000307419 -2.99791e-05 0.000966372 0.000494404 --0.000264022 4.40501e-06 -1.60035e-05 3.03318e-06 2.0681e-06 4.40501e-06 0.000433486 -1.82278e-05 0.000158309 8.38703e-05 -1.60035e-05 -1.82278e-05 0.00070132 -6.74169e-05 -0.00015746 3.03318e-06 0.000158309 -6.74169e-05 -0.000112731 -0.000284603 2.0681e-06 8.38703e-05 -0.00015746 -0.000284603 -3.45929e-05 -0.00159869 --0.0116389 --0.0195675 --0.0293523 --0.00600013 --0.000707948 -0.000141841 --0.000106707 -0.00105428 -0.000124343 --7.82449e-05 --0.000580118 --0.000648722 -0.00388591 -0.000523111 -3.71138e-06 -0.000523111 0.0022972 -6.80277e-06 -3.71138e-06 -6.80277e-06 0.00407321 -0.00389073 0.000979324 6.00287e-05 0.000979324 0.00584665 -6.39448e-05 6.00287e-05 -6.39448e-05 0.00274968 --0.000258674 -0.000167314 -1.90265e-05 -0.000167314 -0.000719356 6.25285e-06 -1.90265e-05 6.25285e-06 -0.000431098 --0.000938764 0.000680879 0.00017004 0.000680879 0.000748569 -7.61437e-05 0.00017004 -7.61437e-05 -0.00296598 -0.00162684 -0.00180609 -2.13988e-06 -0.00180609 -0.00382317 -1.51686e-06 -2.13988e-06 -1.51686e-06 0.000307618 --0.00133824 -0.000916883 -2.65539e-05 -0.000916883 -0.00501353 -9.36822e-05 -2.65539e-05 -9.36822e-05 -0.00107169 -0.00125126 -1.22991e-05 -1.90883e-05 -1.22991e-05 0.00121415 4.67082e-06 -1.90883e-05 4.67082e-06 0.00137769 --0.000757497 0.000350498 -2.65118e-05 0.000350498 0.000122997 9.07501e-06 -2.65118e-05 9.07501e-06 -3.3378e-05 --0.000305222 0.000499325 9.81447e-06 0.000499325 0.000750703 -6.76342e-06 9.81447e-06 -6.76342e-06 0.00227808 --0.000189992 0.000349914 -5.09448e-05 0.000349914 0.00114247 2.05382e-05 -5.09448e-05 2.05382e-05 0.000621647 -0.000538643 -7.18864e-05 0.000124611 -7.18864e-05 0.000249721 1.49859e-06 0.000124611 1.49859e-06 -0.000809013 -6.08366e-05 7.70766e-07 2.48218e-05 7.70766e-07 0.000134799 6.53807e-05 2.48218e-05 6.53807e-05 -0.000406158 --2.35353e-05 0.000252293 1.90503e-05 0.000252293 0.000840624 5.54316e-06 1.90503e-05 5.54316e-06 -0.00039972 -0.00155665 -0.000882512 -6.80338e-05 0.00110739 3.92483e-05 -0.000882512 0.000679855 4.59369e-05 -0.000544479 1.51564e-05 -6.80338e-05 4.59369e-05 -0.000319212 -6.39067e-05 -1.3746e-05 0.00110739 -0.000544479 -6.39067e-05 0.00133184 1.02118e-06 3.92483e-05 1.51564e-05 -1.3746e-05 1.02118e-06 -0.000401391 -0.00522346 -0.00126656 0.00200706 0.00138835 -0.000549729 -0.00126656 0.00344539 -0.000966046 -0.000483318 0.000233582 0.00200706 -0.000966046 -1.91848e-05 0.00154017 0.000811728 0.00138835 -0.000483318 0.00154017 0.00472596 -0.000384352 -0.000549729 0.000233582 0.000811728 -0.000384352 0.00291313 -0.00145947 0.00107105 -1.97263e-05 -0.00223985 7.79666e-05 0.00107105 0.00465406 3.90504e-05 0.000576202 8.87507e-05 -1.97263e-05 3.90504e-05 0.000511727 -3.95821e-05 0.000878218 -0.00223985 0.000576202 -3.95821e-05 0.00337109 -2.30811e-05 7.79666e-05 8.87507e-05 0.000878218 -2.30811e-05 0.00210455 -0.000213683 -0.000719966 -5.43973e-05 -0.00104342 0.000111425 -0.000719966 0.000821454 2.72231e-05 0.00158533 7.70004e-05 -5.43973e-05 2.72231e-05 0.00013667 -4.14543e-05 0.000221961 -0.00104342 0.00158533 -4.14543e-05 0.0021439 -2.4376e-05 0.000111425 7.70004e-05 0.000221961 -2.4376e-05 -0.00139372 --0.000380413 -0.00111734 -3.55622e-05 -0.000757587 8.44257e-05 -0.00111734 0.000714435 2.87066e-05 0.000928339 6.00128e-05 -3.55622e-05 2.87066e-05 0.000886986 -3.57986e-05 0.000726744 -0.000757587 0.000928339 -3.57986e-05 0.00194844 -3.7831e-06 8.44257e-05 6.00128e-05 0.000726744 -3.7831e-06 -0.00236241 -0.00171358 0.000207566 0.000214033 0.000297002 8.56694e-05 0.000207566 0.00130592 -5.12085e-05 -0.000680674 0.000160792 0.000214033 -5.12085e-05 0.000617686 0.000100263 -0.000117046 0.000297002 -0.000680674 0.000100263 0.000880902 -9.38595e-05 8.56694e-05 0.000160792 -0.000117046 -9.38595e-05 0.000112735 -0.000180949 -2.60265e-05 2.65284e-05 0.000499114 -0.000111091 -2.60265e-05 -0.000128214 -4.65924e-05 -0.000507119 -0.000124602 2.65284e-05 -4.65924e-05 0.000411647 4.30628e-05 -0.000157811 0.000499114 -0.000507119 4.30628e-05 -0.000323801 3.10418e-05 -0.000111091 -0.000124602 -0.000157811 3.10418e-05 -0.000610156 --2.47661e-05 0.000387859 0.000143145 -0.000453512 9.46835e-05 0.000387859 0.000580286 -9.69259e-05 0.000611844 4.77953e-05 0.000143145 -9.69259e-05 0.00180667 0.000120842 -0.000158852 -0.000453512 0.000611844 0.000120842 0.000229981 -9.24162e-05 9.46835e-05 4.77953e-05 -0.000158852 -9.24162e-05 -0.000179874 -0.000346796 0.000291963 -5.14524e-06 -0.000436014 -2.44967e-05 0.000291963 0.000663396 -6.35249e-07 0.0002493 -2.17123e-05 -5.14524e-06 -6.35249e-07 -8.5374e-05 -4.01503e-06 0.000216474 -0.000436014 0.0002493 -4.01503e-06 0.00042834 8.59685e-06 -2.44967e-05 -2.17123e-05 0.000216474 8.59685e-06 0.00144123 -0.000111704 -4.72772e-05 -4.04741e-05 0.000324666 -1.64635e-05 -4.72772e-05 -2.10957e-05 1.5141e-05 -0.000265674 -4.91751e-05 -4.04741e-05 1.5141e-05 0.00100197 -3.04819e-05 -4.56424e-05 0.000324666 -0.000265674 -3.04819e-05 -0.000130016 -7.69415e-06 -1.64635e-05 -4.91751e-05 -4.56424e-05 -7.69415e-06 0.000603321 --0.000987569 -0.000135612 -0.000216359 0.000208293 -0.000143194 -0.000135612 -0.0011463 0.000101652 -0.000147133 -0.000149589 -0.000216359 0.000101652 0.000409672 -0.000156724 -4.35964e-05 0.000208293 -0.000147133 -0.000156724 -0.00105573 0.000109666 -0.000143194 -0.000149589 -4.35964e-05 0.000109666 7.61697e-05 -0.000849458 0.000128481 0.000102075 7.6926e-05 -0.000102507 0.000128481 0.000818627 -7.64458e-05 -0.000160961 -7.42906e-05 0.000102075 -7.64458e-05 -0.00139386 9.88455e-05 0.000433937 7.6926e-05 -0.000160961 9.88455e-05 0.000638746 2.46294e-05 -0.000102507 -7.42906e-05 0.000433937 2.46294e-05 0.001619 --0.000119944 -0.000105654 -1.47935e-05 -0.000220469 -1.36032e-05 -0.000105654 -0.000198117 2.95935e-07 0.000155669 -5.8971e-05 -1.47935e-05 2.95935e-07 4.86515e-05 -1.50546e-05 8.5451e-05 -0.000220469 0.000155669 -1.50546e-05 0.000110599 -2.68438e-05 -1.36032e-05 -5.8971e-05 8.5451e-05 -2.68438e-05 0.000742462 -0.00153623 --0.0118816 --0.0198763 --0.0298833 --0.00613535 --0.000720572 -0.000137931 --0.00012487 -0.00103213 -0.000118236 --0.00011187 --0.000597005 --0.000656828 -0.00372854 0.000286448 0.000453166 0.000286448 0.00356031 -0.000746961 0.000453166 -0.000746961 0.00270466 -0.00414272 -0.000610236 -0.000955824 -0.000610236 0.00340815 0.00108662 -0.000955824 0.00108662 0.00513711 --0.000235435 9.40249e-05 0.000143531 9.40249e-05 -0.00053096 -6.18272e-05 0.000143531 -6.18272e-05 -0.000617645 --0.000933428 -0.00059824 -0.000544151 -0.00059824 -0.00218564 0.00150687 -0.000544151 0.00150687 -2.65956e-05 -0.00169389 0.000803984 0.00155328 0.000803984 -0.000755865 -0.00185306 0.00155328 -0.00185306 -0.00286812 --0.00112697 0.000155486 0.000138431 0.000155486 -0.00345363 -0.00210301 0.000138431 -0.00210301 -0.00299756 -0.00128982 4.77355e-05 -6.74087e-06 4.77355e-05 0.0013752 -5.91096e-05 -6.74087e-06 -5.91096e-05 0.0012698 --0.000737259 -0.000179858 -0.000384544 -0.000179858 9.96843e-07 2.97026e-05 -0.000384544 2.97026e-05 9.33936e-06 --0.000235965 -0.000155211 -0.000587024 -0.000155211 0.00198943 -0.000654994 -0.000587024 -0.000654994 0.000977994 --0.000160188 -0.000108387 -0.000398925 -0.000108387 0.000773074 0.000247993 -0.000398925 0.000247993 0.000967873 -0.000506412 -0.000169771 0.000183933 -0.000169771 -0.000430788 0.000499788 0.000183933 0.000499788 -9.06821e-05 -3.25681e-05 -5.949e-05 4.02906e-05 -5.949e-05 -0.00016077 0.000290281 4.02906e-05 0.000290281 -0.000109202 --1.49988e-05 -0.00016758 -0.000217195 -0.00016758 -7.91718e-05 0.000544762 -0.000217195 0.000544762 0.00054358 -0.00126308 -0.000332096 0.00107107 -0.000516677 0.000741293 -0.000332096 -0.00013617 -2.4795e-05 0.000227988 -0.000344738 0.00107107 -2.4795e-05 0.00100097 -0.000523891 0.000541227 -0.000516677 0.000227988 -0.000523891 0.000141825 -0.000813169 0.000741293 -0.000344738 0.000541227 -0.000813169 0.000684592 -0.00468578 -0.0016744 0.00223754 -0.00122391 0.000500719 -0.0016744 0.000283527 0.000366606 0.000213127 -0.00180635 0.00223754 0.000366606 0.00399426 -0.000684107 0.00112895 -0.00122391 0.000213127 -0.000684107 0.00388184 -0.00093666 0.000500719 -0.00180635 0.00112895 -0.00093666 0.0035907 -0.00173023 -0.000597566 -0.00108457 0.00135196 -0.00184908 -0.000597566 0.00153804 0.00173664 -0.000614174 -0.000670423 -0.00108457 0.00173664 0.00351419 0.000637464 -0.000352806 0.00135196 -0.000614174 0.000637464 0.00250277 -0.000575149 -0.00184908 -0.000670423 -0.000352806 -0.000575149 0.00293816 -7.09481e-05 0.000558989 0.000525548 0.000619197 -0.000755317 0.000558989 -0.00024555 0.000909337 -0.0002191 -0.000866596 0.000525548 0.000909337 0.00052045 0.00105454 -0.00114748 0.000619197 -0.0002191 0.00105454 0.000204841 -0.0012132 -0.000755317 -0.000866596 -0.00114748 -0.0012132 0.00136679 --0.000414519 0.000548074 0.00103326 0.000470855 -0.00032624 0.000548074 0.000984989 -9.66456e-05 6.33061e-05 -0.000617527 0.00103326 -9.66456e-05 0.000854298 0.000610249 -0.000779206 0.000470855 6.33061e-05 0.000610249 -0.0013385 -0.00197861 -0.00032624 -0.000617527 -0.000779206 -0.00197861 0.000734976 -0.00170758 -0.00037908 -1.79111e-05 6.81785e-05 0.000287819 -0.00037908 0.000747366 0.00013747 -0.000132546 0.000192667 -1.79111e-05 0.00013747 0.00101431 -0.000605045 0.000434464 6.81785e-05 -0.000132546 -0.000605045 0.000627533 -0.000494596 0.000287819 0.000192667 0.000434464 -0.000494596 0.000651305 -0.00012306 -2.34946e-05 5.49719e-05 -0.000268181 0.000354328 -2.34946e-05 0.000304035 -0.000268746 -6.37475e-05 0.000241812 5.49719e-05 -0.000268746 6.84941e-05 -0.000242703 0.000475872 -0.000268181 -6.37475e-05 -0.000242703 -0.000570487 -0.000154801 0.000354328 0.000241812 0.000475872 -0.000154801 -0.000335412 -9.68004e-06 -0.000269052 -0.000220986 0.00038757 -0.00040003 -0.000269052 0.00146305 -0.000618394 0.000349634 -0.000228406 -0.000220986 -0.000618394 0.000837907 0.000103767 -0.000532588 0.00038757 0.000349634 0.000103767 4.63453e-05 -0.000254801 -0.00040003 -0.000228406 -0.000532588 -0.000254801 5.77826e-05 -0.000377837 -0.000131388 -0.000294548 0.000175697 -0.000425493 -0.000131388 8.61049e-05 0.00031331 -0.000115362 -0.000213592 -0.000294548 0.00031331 0.000467007 0.000245609 -0.000133743 0.000175697 -0.000115362 0.000245609 0.00113466 0.00044973 -0.000425493 -0.000213592 -0.000133743 0.00044973 0.000718908 -0.000108639 0.000105073 -1.0078e-05 -0.000197181 0.000277081 0.000105073 0.000813789 -0.000400393 -3.70118e-05 0.000242821 -1.0078e-05 -0.000400393 0.000183006 -6.0188e-05 0.000218186 -0.000197181 -3.70118e-05 -6.0188e-05 0.000421828 0.000297404 0.000277081 0.000242821 0.000218186 0.000297404 5.57884e-05 --0.000916783 0.000339175 -4.77864e-05 -0.00035406 5.03747e-05 0.000339175 0.000126158 -0.00052189 1.88657e-05 0.000362705 -4.77864e-05 -0.00052189 -0.000880308 0.000170414 0.000167712 -0.00035406 1.88657e-05 0.000170414 -0.000447864 0.00049737 5.03747e-05 0.000362705 0.000167712 0.00049737 -0.000607003 -0.0008264 -0.000483475 2.04842e-05 -0.000201783 -0.000168985 -0.000483475 -0.00101235 0.000657634 -0.000146193 -0.000483651 2.04842e-05 0.000657634 0.00061399 8.59275e-05 0.000425702 -0.000201783 -0.000146193 8.59275e-05 0.00131939 0.000452759 -0.000168985 -0.000483651 0.000425702 0.000452759 0.000874926 --5.68561e-05 9.67763e-05 7.72172e-05 0.000202406 -0.000234153 9.67763e-05 1.90648e-05 -9.86979e-05 -4.85809e-07 -2.40144e-05 7.72172e-05 -9.86979e-05 -0.000158542 0.000213589 -8.65583e-05 0.000202406 -4.85809e-07 0.000213589 0.00064263 0.000133535 -0.000234153 -2.40144e-05 -8.65583e-05 0.000133535 0.000174003 -0.00150526 --0.0120315 --0.0200574 --0.0301974 --0.00621541 --0.000727569 -0.000135214 --0.000134503 -0.00101961 -0.000115641 --0.000130108 --0.000606456 --0.000661213 -0.00365605 0.000272232 -0.00043507 0.000272232 0.00352805 0.000739994 -0.00043507 0.000739994 0.00266477 -0.0043087 -0.000598599 0.00101637 -0.000598599 0.00347156 -0.00105057 0.00101637 -0.00105057 0.00502945 --0.000217367 8.01887e-05 -0.000146902 8.01887e-05 -0.000555863 3.39625e-05 -0.000146902 3.39625e-05 -0.00059661 --0.000911325 -0.000491837 0.000609441 -0.000491837 -0.00216189 -0.00156861 0.000609441 -0.00156861 -6.85329e-05 -0.00175748 0.00078704 -0.00148178 0.00078704 -0.000773779 0.00189281 -0.00148178 0.00189281 -0.00293916 --0.00116498 -0.000434988 -0.000107715 -0.000434988 -0.00509132 -0.00105715 -0.000107715 -0.00105715 -0.001412 -0.00130393 4.60628e-05 6.17515e-06 4.60628e-05 0.0013986 6.18668e-05 6.17515e-06 6.18668e-05 0.00128811 --0.000710237 -0.000216174 0.000417739 -0.000216174 -1.54651e-05 5.76897e-06 0.000417739 5.76897e-06 -3.61229e-05 --0.000159703 -0.000212162 0.000635879 -0.000212162 0.00199126 0.000704478 0.000635879 0.000704478 0.000906037 --0.000172281 -0.000150376 0.000383762 -0.000150376 0.000764172 -0.000237981 0.000383762 -0.000237981 0.00099247 -0.000548898 -6.25474e-05 -7.32306e-05 -6.25474e-05 -0.000366151 -0.000548073 -7.32306e-05 -0.000548073 -0.000195393 -2.99651e-05 -5.70156e-05 -9.90501e-06 -5.70156e-05 -0.000256636 -0.000280235 -9.90501e-06 -0.000280235 -2.39335e-05 --1.42323e-05 -0.000149212 0.000221376 -0.000149212 -7.85296e-05 -0.000552639 0.000221376 -0.000552639 0.000563233 -0.0013914 -9.82655e-05 -0.00103401 -0.000553389 -0.00083397 -9.82655e-05 -0.000204274 -0.00018936 0.000120075 0.000182 -0.00103401 -0.00018936 0.000902813 0.000458787 0.000544869 -0.000553389 0.000120075 0.000458787 0.000100791 0.000878461 -0.00083397 0.000182 0.000544869 0.000878461 0.00082188 -0.00535783 -0.000577963 -0.00209813 -0.00124631 -0.00116274 -0.000577963 -0.000148274 -0.00125553 -0.000444218 0.00119256 -0.00209813 -0.00125553 0.00341585 0.000371876 0.00118803 -0.00124631 -0.000444218 0.000371876 0.00377034 0.00109039 -0.00116274 0.00119256 0.00118803 0.00109039 0.00413458 -0.00128304 -0.000752718 0.00133881 0.000862468 0.00118586 -0.000752718 0.00167443 -0.00124839 -0.0014133 0.000827139 0.00133881 -0.00124839 0.00328163 -0.000908548 0.000471132 0.000862468 -0.0014133 -0.000908548 0.0036585 -0.00107827 0.00118586 0.000827139 0.000471132 -0.00107827 0.00239985 -0.000105516 0.00038276 -0.000581424 0.000529489 0.000831119 0.00038276 -0.000795471 -0.00116047 0.000372555 0.000650711 -0.000581424 -0.00116047 0.000380922 -0.000723878 -0.00138368 0.000529489 0.000372555 -0.000723878 0.000759235 0.00091959 0.000831119 0.000650711 -0.00138368 0.00091959 0.00146923 --0.000297685 0.000679899 -0.00102536 0.00034309 0.000278317 0.000679899 0.00104907 -8.26827e-06 0.00017479 0.000414033 -0.00102536 -8.26827e-06 0.000712183 -0.000608927 -0.000915558 0.00034309 0.00017479 -0.000608927 -0.00137764 0.0020409 0.000278317 0.000414033 -0.000915558 0.0020409 0.000744179 -0.00178422 -5.5932e-05 -0.000335678 0.00022191 -7.01088e-05 -5.5932e-05 0.000570578 8.48223e-05 -2.961e-05 -0.000209761 -0.000335678 8.48223e-05 0.000580246 0.000303518 0.000273891 0.00022191 -2.961e-05 0.000303518 0.000876023 0.000809889 -7.01088e-05 -0.000209761 0.000273891 0.000809889 0.00100877 -6.57918e-05 1.36777e-05 -4.23625e-05 -0.000209355 -0.000354974 1.36777e-05 0.000331588 0.000196684 -0.000275174 -0.000199429 -4.23625e-05 0.000196684 6.52002e-05 0.000188758 0.000537937 -0.000209355 -0.000275174 0.000188758 -0.000539642 0.000161046 -0.000354974 -0.000199429 0.000537937 0.000161046 -0.000297727 -2.53829e-05 -9.85292e-05 0.000331093 0.000389494 0.000439048 -9.85292e-05 0.00160359 0.000549276 0.000299677 5.4058e-05 0.000331093 0.000549276 0.000711296 -0.000157487 -0.000590946 0.000389494 0.000299677 -0.000157487 -2.80122e-05 0.000247186 0.000439048 5.4058e-05 -0.000590946 0.000247186 0.000103677 -0.000513569 -8.37085e-05 0.000228253 0.000223978 0.00065332 -8.37085e-05 8.62219e-05 -0.000333792 -4.96174e-05 0.000276315 0.000228253 -0.000333792 0.000467539 -0.000196067 -0.000273355 0.000223978 -4.96174e-05 -0.000196067 0.000753217 -0.00019639 0.00065332 0.000276315 -0.000273355 -0.00019639 0.000956424 -8.34723e-05 6.86331e-05 -2.64921e-06 -0.000183749 -0.000284661 6.86331e-05 0.000835899 0.000426424 -4.31562e-05 -0.000210864 -2.64921e-06 0.000426424 0.00020385 9.52755e-05 0.000213151 -0.000183749 -4.31562e-05 9.52755e-05 0.000422691 -0.000305226 -0.000284661 -0.000210864 0.000213151 -0.000305226 5.0157e-05 --0.00100658 0.000258946 -1.23145e-05 -0.000293362 -6.8739e-05 0.000258946 0.000150636 0.000609537 3.61168e-05 -0.000281035 -1.23145e-05 0.000609537 -0.000855939 -0.000124466 0.000139255 -0.000293362 3.61168e-05 -0.000124466 -0.000364593 -0.000516605 -6.8739e-05 -0.000281035 0.000139255 -0.000516605 -0.000664839 -0.000782566 -0.000115586 -0.000405897 1.59525e-05 0.000227169 -0.000115586 -0.00101109 -0.000882309 -1.02916e-05 0.000587105 -0.000405897 -0.000882309 0.000641875 -0.000304242 -0.000125934 1.59525e-05 -1.02916e-05 -0.000304242 0.00105441 0.000209199 0.000227169 0.000587105 -0.000125934 0.000209199 0.00120595 -0.00014362 6.01186e-05 -3.6864e-05 0.000302541 0.000403034 6.01186e-05 2.65381e-05 0.000133152 -1.68072e-05 1.30776e-05 -3.6864e-05 0.000133152 -0.000203329 -8.86165e-05 -6.5486e-05 0.000302541 -1.68072e-05 -8.86165e-05 0.000428209 -1.24378e-05 0.000403034 1.30776e-05 -6.5486e-05 -1.24378e-05 0.000245318 diff --git a/tests/09_DeePKS/100_NO_GO_deepks_UT/gvepsl_ref.dat b/tests/09_DeePKS/100_NO_GO_deepks_UT/gvepsl_ref.dat deleted file mode 100644 index 14994d3936..0000000000 --- a/tests/09_DeePKS/100_NO_GO_deepks_UT/gvepsl_ref.dat +++ /dev/null @@ -1,30 +0,0 @@ -0.1454413692 0.1944948489 0.04069268286 0.0006548023108 5.401391561e-05 0.001113789936 0.0001497408684 -0.0005517480338 -0.0002044555516 -7.445868663e-05 2.951769811e-05 1.404748462e-05 -7.352705162e-07 0.02704289925 0.05731208997 -0.5191165986 0.1762741971 0.1548726519 0.05399863303 0.2260400261 0.09707762551 0.0385778044 0.06471392824 0.02264272287 0.00880092186 0.0004693836323 0.0001127150373 -0.0006392963996 -0.001003889969 -0.003151571797 -0.01021271928 -0.0009207422995 -0.002705237052 -0.0086063056 5.308982503e-05 -5.204423735e-05 0.0006594344418 0.001070257177 0.0006360426831 0.0004017377278 0.0005052866022 0.0001646862311 5.713115682e-05 1.234529919e-05 -0.000128705039 -6.250909471e-07 -1.116743806e-05 -6.204326372e-06 -1.334902788e-05 -1.655297096e-05 -4.907871115e-05 -0.0001981792607 2.741240257e-16 8.367099124e-05 -0.02124913268 -0.05771046173 -0.09179798251 -5.660915154e-16 7.727403762e-05 -0.01211310048 -0.02825226228 0.01708231738 -1.115614921e-17 2.470502776e-05 0.03913079986 0.002325388064 0.001882647894 1.048989085e-17 6.268203346e-07 0.004214789977 0.0022627634 0.001560528986 -8.975030896e-19 5.30051587e-08 -0.0002154268968 -0.001014093323 2.883494844e-05 -3.835537475e-18 3.750217076e-07 1.479593876e-05 0.0007122150819 -0.0001023338756 -4.960688076e-20 -3.88503775e-09 3.210060428e-05 6.289490918e-05 3.636546113e-05 -6.302031681e-20 5.510558641e-09 -1.091500314e-05 2.016611336e-05 2.462884381e-05 -5.393794461e-20 6.432220706e-09 -5.730127643e-06 -3.616308221e-05 1.304600551e-05 -7.791728728e-22 5.185814746e-10 -5.456386258e-07 -6.028734058e-06 -6.711596489e-05 -7.042952458e-21 7.182751196e-09 1.819046714e-05 6.66909363e-06 2.908320927e-06 2.603753403e-20 5.173020769e-09 -1.99323565e-07 1.470812298e-06 8.368091259e-06 2.214102199e-20 2.966969079e-09 -1.488430983e-06 -4.026362694e-06 -9.000484987e-06 -0.06799027659 -0.0715619195 0.01992819508 0.01149427301 -0.0001442782027 -0.0003370889339 -0.0001306328117 0.0001047843743 -3.521375529e-06 -0.0001457312801 -2.242861256e-06 -2.761837667e-06 -3.205407029e-06 0.02042311448 -0.2895399064 0.1725486947 0.1043614566 0.0302175704 0.02712133321 0.007653366839 0.001590378565 -0.002579383853 0.0003820547462 0.0002346029718 0.01307309847 -0.0001519440016 -0.0008853539717 0.0005346988283 -0.0001194027198 -0.000187028782 -0.001454485476 -1.089673659e-05 1.111366224e-05 0.0001230472234 3.353142727e-05 3.867590651e-05 -6.085957438e-05 -3.402947436e-05 -0.0001819984886 -7.910022888e-05 -1.673469342e-05 -0.0001174410621 -0.0001002475597 -8.511530193e-07 4.140108538e-06 -5.915460845e-05 5.331399999e-09 -4.219751388e-05 7.748334505e-06 -8.063179232e-06 -5.0859823e-05 -1.49431774e-05 -3.615313384e-12 -2.82763378e-06 0.1355873139 0.01598551709 -0.2883073863 3.780351044e-14 1.141600402e-06 0.06211030896 0.1034507591 0.05310618978 -1.202861521e-15 -4.135393242e-05 0.000779511722 0.02809120588 0.008484905642 -8.480149453e-17 -2.365597766e-06 -0.001126066767 -0.001385077882 0.005626913509 -1.055914537e-15 -2.194295033e-06 -0.0007162945858 -0.003224997877 0.000824513863 7.488155337e-18 -9.883249422e-07 -0.0001001543782 -0.0005909302653 -0.0005464465394 -7.944902439e-16 -1.441242276e-06 -1.13134387e-06 -2.199219005e-06 8.908057995e-05 3.64665168e-15 1.076154696e-08 -6.706576727e-05 7.717978366e-05 4.294080431e-05 -1.597569038e-16 -6.693195609e-08 -4.606524893e-05 -0.0002244674801 -3.362447372e-05 -5.743437307e-17 -1.091343794e-07 -8.495886816e-07 -1.413640921e-05 -0.0001234287709 -6.929777483e-16 -9.129610607e-10 1.380510082e-05 -2.289303009e-05 7.862816907e-06 -4.808349307e-16 -2.36911263e-09 -2.701362596e-07 -1.788727289e-05 2.244514974e-05 -7.147661151e-17 -7.083251158e-11 1.418786901e-06 -8.6906824e-06 -6.74099124e-05 -0.4883887919 0.09180895673 0.5832564661 0.1559430082 0.004629739133 -0.008581633878 -0.007920322478 -0.003594768609 0.001193480854 0.001328755201 -8.567300879e-05 -0.0004203334368 -3.455512095e-05 0.4771115052 0.6696160976 0.1012445503 0.2987588235 0.2776605576 -0.1177740173 0.0142738332 0.01764853217 0.002878910495 -0.0006291026093 -0.002612893367 0.1725740223 -0.0004511558604 -1.930114409e-05 -0.03299111462 0.0004692497924 0.0001857839581 -0.004025606803 -0.0006260414431 -0.001039099325 0.009597909751 2.026216217e-05 1.986028518e-05 -0.004376754821 -0.000436599721 0.0002270139166 0.0003799264804 -0.0001925252894 -0.0002213297748 0.001357862354 -7.781382558e-05 -0.0001766662095 -0.001436860422 1.767083533e-05 -2.068587006e-05 -0.0001734835768 -2.905526909e-05 -7.507465143e-06 0.0001584347168 -3.210891305e-14 1.26084418e-05 -0.5463919211 -0.2070114886 -0.1168342218 6.474249446e-15 -2.710348301e-05 0.1556251286 0.4918283173 0.3852131682 3.083445729e-15 9.513014353e-06 0.08386182776 0.09281703868 -0.1597663727 -2.292754235e-15 5.260495592e-06 -0.002767898857 -0.00673879932 0.03718508729 1.085666306e-15 -4.511236092e-06 0.0002113469972 0.0006044252452 0.02948925843 4.972116419e-17 4.550429776e-07 -0.002611984437 -0.0008615065754 -0.002520972129 -6.793370555e-18 -1.946873142e-08 -0.0008327362357 -0.0007189662836 -0.001784829989 -9.269953584e-18 1.236990781e-07 0.0005687829589 0.0005731622995 0.000481940069 -6.033717498e-18 3.37958735e-07 0.0007278795668 -0.0001374215576 -2.114596511e-05 9.415078941e-18 -2.59730641e-08 -0.0004550002831 -0.000674036597 -0.0007318381955 -1.77084142e-17 3.764484833e-09 -0.0004868617344 -6.107921008e-05 -0.0001532433967 -1.166335955e-18 1.203057444e-08 0.0001600581415 -3.066117099e-05 -7.946389466e-05 1.304643048e-18 1.173907217e-08 -0.0001288128345 -0.0001568782308 -0.000204796525 -0.1579692184 -0.0429065983 0.1490579882 0.04533316801 0.002373125614 -0.001057299745 -0.001333387549 -0.001424303465 1.752507295e-05 0.0003330512114 -5.584489205e-05 -7.224046997e-05 -1.047746172e-05 0.1026705135 0.005467302578 0.1455791709 0.1454275867 0.06785363302 -0.02174978318 0.005432781458 0.005913783687 -0.00801548247 0.001180494216 -0.001006552727 0.04413072659 -6.137787061e-06 -6.7461942e-08 -0.002282167492 4.314847011e-05 -0.0004946416259 -0.001920256133 -0.0001222234168 -0.000526995945 0.0007853337522 3.108534524e-06 3.464528548e-05 -0.0005123415027 6.751920936e-05 6.249864254e-05 5.726610521e-05 -4.653249924e-05 -0.0001512709847 1.655112098e-05 -4.134091529e-06 -9.639486282e-05 -0.0003689585838 5.666390552e-06 -3.493518446e-05 -3.555704965e-05 -9.152475788e-06 -3.268106224e-05 -7.805687914e-06 3.594412574e-12 9.066429597e-06 -0.02718650003 -0.01438494117 -0.2694915256 -1.541103758e-13 -1.851289608e-05 0.08988162576 0.203313946 0.08516089933 9.847913426e-16 -4.395813174e-05 0.02963568105 0.02099670119 -0.02975345849 -1.371780685e-13 -6.254542215e-05 0.0005981643108 -0.0009285274166 0.003512348789 7.037681966e-16 1.173847373e-07 0.000217361411 -0.000317816137 0.008949233661 1.167752379e-16 -7.796443525e-06 0.001192000963 -0.0001833620639 -0.002940180186 7.756877644e-18 -1.149715975e-08 -0.0001510032924 -0.0001249652128 -0.001730754838 9.071953303e-19 -7.627884674e-08 0.0002982825593 0.000167675345 0.000223283951 3.233616586e-17 -1.775240442e-07 0.0004252435733 1.189086665e-05 -0.0001815082261 1.914072161e-17 -7.462372393e-08 -7.230511907e-05 -0.0002825428305 -0.0004281162163 -5.975577334e-17 -3.606327285e-08 -4.312129847e-05 1.297419238e-05 -0.000143975203 5.609416815e-17 -1.227686675e-08 7.589551687e-05 -1.235888187e-05 -9.628583256e-05 2.426030364e-17 -1.835878621e-08 -2.826674798e-05 -3.823986783e-05 -0.000114485644 -0.1564468625 -0.05022320962 0.1426945041 0.04969736155 0.003035206731 -0.0006683975075 -0.0009824575382 -0.001468864668 -0.0001417394342 0.0002831313549 -3.945719855e-05 -3.815311266e-05 -4.957402391e-06 0.1118322143 -0.01822325482 0.1400317184 0.1481437583 0.08085306234 -0.008585303854 0.007216843519 0.007601397874 -0.01738116267 0.0008376208711 -0.0008415178911 0.04245615089 4.637750823e-05 -3.380336337e-05 0.000359267308 -0.0005429893565 -0.000486661827 -0.001478314817 -0.0001191262191 -0.0004302526802 0.000184502231 4.491931155e-05 6.421702187e-05 -0.0002168014542 0.0001986619176 6.042253655e-05 2.295948767e-05 -4.964568744e-05 -0.0001660611207 -0.0001820717979 -2.587353085e-06 -7.383932334e-05 -0.0002940715703 2.483841837e-06 -5.031499666e-05 2.7541028e-05 -9.541519482e-06 -3.274667898e-05 -3.855868498e-05 2.385940862e-12 9.365360421e-06 -0.02889864728 -0.01896532293 -0.2807237734 -1.56282054e-13 -6.944851814e-06 0.09011904271 0.1988427025 0.09245164582 4.677197755e-15 -5.702642891e-05 -0.02747904152 0.03278865068 0.02536057034 -3.619842253e-13 -6.439304151e-05 0.0004639928998 -0.0001859183022 -0.001741165374 1.256416765e-16 -3.664262865e-08 0.0002913780605 -0.0004408525558 0.009159849693 2.805059473e-16 -7.405051986e-06 0.001023068786 0.0009690935889 -0.002927187237 -1.513378396e-16 -5.936125908e-09 -6.929709519e-05 -6.68542175e-05 -0.001997495911 1.145505966e-16 -7.993860203e-08 0.0003610336413 0.0002098807547 0.000116351495 1.659076524e-17 -2.652873669e-07 -2.823098725e-05 3.897597047e-05 0.0002372186486 1.495142845e-17 -5.747224934e-08 -6.598079786e-05 -0.0002676886755 -0.0004554867217 -6.300824705e-17 -5.980744348e-08 -2.509471103e-05 1.467474427e-05 -0.0001093642204 3.597010973e-17 -1.788462388e-08 -1.789580765e-05 -7.164168127e-05 7.871568162e-05 1.697199364e-17 -1.93923368e-08 -3.24890537e-05 -4.540631606e-05 -0.0001082676524 -0.002251016997 -0.000392008583 -0.001676198375 -0.000195846796 -4.769292049e-05 -5.494133299e-05 -4.392171177e-05 -3.744674153e-05 -2.69565811e-06 7.510288037e-06 1.592220718e-06 7.164200196e-07 3.649749878e-07 -0.00203318631 0.1312017527 -0.1255043697 -0.01230416113 0.04908961732 -0.02265613954 0.01321876379 0.002263843837 -0.01136566714 0.008471950413 -0.007744252643 -0.002428838269 0.002479594918 -0.004156240743 -0.0002721927393 0.0008078373182 -0.001113230975 -0.0003586257329 0.0003685020253 0.0005197647361 -0.0009148778429 4.294856181e-05 0.0002763136257 -6.000735899e-05 1.024174449e-06 0.0001457137897 5.489962857e-05 8.21360056e-05 -6.978125191e-05 -2.260416582e-05 -8.722588051e-06 -3.965068864e-05 -1.010143915e-05 -4.320498107e-06 -1.286285443e-07 -1.196754759e-06 1.110904408e-05 8.397395823e-06 -2.469403439e-05 5.193839223e-16 -5.308324145e-05 0.007233578573 -0.01059597856 0.0009460749996 -1.142140576e-15 -4.88153119e-05 0.004288849736 -0.006645369785 0.004775322147 -2.49110451e-17 -1.545586978e-05 0.004683432971 -0.002951608695 -0.0001862096965 2.121488227e-17 -3.138780921e-07 0.0005334652745 -0.0006468720812 -0.0003797663339 -1.746958132e-18 -2.813095685e-08 -4.045063273e-06 -0.0001081303232 -2.725663764e-05 -7.661262334e-18 -2.352310157e-07 1.922275387e-05 -6.487803531e-06 0.0001540528828 -1.102455272e-19 -1.756990782e-09 9.129995775e-06 1.607449239e-06 -2.184727978e-05 -1.165530368e-19 -2.402387545e-09 2.464595629e-06 -1.548070507e-05 -7.858599355e-06 -1.101692082e-19 -4.048745535e-09 2.668344623e-06 1.535168223e-05 -4.098716942e-06 -2.182066328e-21 -3.157188309e-10 8.133984995e-07 -4.948669425e-06 -2.221544623e-06 -1.278206691e-20 -4.413001265e-09 2.791123615e-06 -1.283476856e-06 -2.046503459e-06 5.336531911e-20 -3.24685657e-09 5.857135364e-07 2.667406833e-06 1.683904141e-06 4.422756921e-20 -1.908145443e-09 -7.6633203e-07 -7.109002683e-07 -2.915424915e-08 -0.001167868092 -0.0007412733243 0.000826526002 -4.727748894e-05 -1.669128808e-05 -1.715985335e-05 -7.262168278e-06 -1.189014315e-06 -1.555620234e-06 -2.609331967e-06 -2.435252947e-07 1.213058143e-08 3.910243265e-07 0.09926940135 -0.09855544923 0.003745368827 0.00125095659 0.01265908637 -0.01171655216 0.00185527143 -0.00206248438 0.0002460356716 1.547625347e-05 8.304669476e-06 6.28270668e-05 0.0001493238209 -0.0001563213865 -5.261316757e-05 0.0003671002884 -0.000428169953 -3.960696038e-06 -1.383857573e-07 -2.95528381e-06 -2.579578312e-05 -1.969382724e-06 1.119874526e-05 -3.878802257e-06 4.089447091e-05 -3.859034381e-05 3.941461276e-06 1.308830514e-05 -1.698660792e-05 -3.740525541e-06 -1.26282469e-06 2.090232505e-06 -4.753059176e-06 9.045038322e-06 -9.081950068e-06 4.445687632e-07 1.38074084e-05 -1.335297954e-05 1.224380462e-07 3.564991802e-12 -4.074417451e-06 0.0007657156549 0.062938893 -0.06086612106 -1.366386397e-13 3.797008037e-07 0.001048750208 0.005227914627 -0.001936226037 1.063766606e-14 -1.145375771e-05 -2.371943891e-05 0.003708449949 -0.003892698901 -8.23845087e-15 3.17475245e-07 -0.0001890298386 5.292919372e-05 2.533634817e-05 3.368738905e-15 -1.055057179e-06 0.0002933832685 -0.000356788925 -6.897542678e-05 -2.879640005e-18 -1.168648609e-07 -2.437529003e-06 -3.377833557e-05 -1.660665729e-05 2.174987209e-15 -6.181345861e-07 -6.295187374e-07 -3.656749548e-07 -5.878978549e-06 3.136091085e-15 -2.088110678e-08 -2.292553604e-06 8.905307027e-06 1.575631899e-05 3.206130494e-16 -4.049814518e-08 2.205335148e-05 -2.73924637e-05 1.907133906e-06 1.264514793e-16 -4.446639848e-08 -1.448837459e-08 1.279289259e-06 -8.146948609e-06 1.374602107e-16 -4.454755208e-09 4.485463252e-08 -6.763017002e-06 6.690480482e-06 2.492908108e-16 -5.31206239e-09 1.163499122e-05 -9.220826696e-06 5.732806599e-07 1.281120665e-16 -8.329848342e-11 -1.942578759e-08 4.689187277e-06 -6.939754368e-06 -0.002603600421 -0.00225812302 0.001809795384 -0.0004065454268 4.75222115e-05 4.67792367e-05 -3.531053468e-05 -4.40365507e-05 7.624034242e-07 7.658838324e-06 -4.321963687e-06 -5.251700546e-06 -2.79514931e-06 -0.005918944019 0.01371103335 0.003484641881 0.01183004732 -0.0110687003 -0.005936609938 -0.0001322725287 -0.0002512421254 0.00160145143 0.0003860047011 -0.0004530432597 -8.993548379e-05 1.311949185e-05 5.013664144e-05 0.0001853180297 7.873051825e-05 -5.141325298e-05 -4.484876021e-05 3.802246094e-05 -7.572279193e-05 -0.0001264657474 -9.678962811e-06 -6.219967832e-06 -2.55290801e-05 4.263300478e-06 4.765273622e-06 1.095115211e-05 5.437127361e-06 7.26192227e-06 5.934603348e-07 5.5686872e-06 -4.024449501e-06 -2.338973738e-05 5.312663213e-07 6.827992606e-06 -1.932882886e-05 -1.228625943e-07 2.432123046e-07 -1.748692029e-06 -6.899561083e-13 -6.580242283e-07 0.001578050022 0.005924792106 0.0001385112399 -3.426514104e-14 -5.664846552e-06 0.005057302167 0.01192975685 -0.01501953723 -1.864776e-15 -2.88658378e-06 -0.0006609280133 -0.0009055028271 0.0002763001409 -4.619683888e-16 -6.778038498e-07 0.0004094675943 -0.0004517175195 0.0002845911158 -6.252269828e-16 -3.509005451e-08 6.287863328e-05 2.01544569e-05 -2.333041416e-05 -1.472876575e-16 -1.131109513e-08 -4.925605584e-06 0.0002651110717 -0.0004072095264 -2.270787885e-17 -4.957449892e-09 -3.699774565e-06 -3.77954142e-05 -6.437098172e-05 -2.789920649e-18 -1.052827221e-09 4.754568931e-05 -6.56160179e-05 -7.018718487e-07 2.783901729e-18 6.188846569e-09 2.702228678e-06 1.54586342e-05 2.049309882e-05 -1.13798612e-18 2.93425038e-09 1.6543838e-05 -9.103216543e-07 -1.187463622e-05 -1.874872857e-16 -9.690185607e-10 6.779572058e-08 1.537314222e-05 -3.644535217e-05 6.917311423e-18 6.412731776e-10 -2.155920105e-06 4.376167281e-06 -1.937777685e-05 1.236916596e-18 1.42786844e-09 2.261044188e-06 1.158484662e-05 -9.867718894e-06 -0.1769258718 0.04387037427 0.2207160399 0.07533872057 0.003315553281 -0.001518701407 -0.002298830926 -0.002398077028 6.02243067e-05 0.0006671999118 -1.243166318e-05 -8.054683477e-05 -4.839167468e-08 0.1627806448 0.4167701754 -0.04426744906 0.1338478239 0.1011830294 -0.02967384049 0.008419777809 0.01193007038 -0.02693135197 -0.0008610685296 -0.002475633349 0.06513524087 -7.120319018e-05 0.0003289835911 -0.004961659251 6.66639715e-05 0.0002748727817 -0.002766385373 -0.0002055734283 -0.0004163242919 0.002505483763 7.160861874e-05 4.034110886e-05 -0.0009858919332 7.257343312e-05 6.265814702e-05 0.0001952845338 -7.783858519e-05 -5.487015072e-05 0.0001669596644 -3.358969891e-06 -1.66448354e-05 -0.0004619660338 1.117107824e-05 2.770640557e-05 1.646537443e-05 -1.826989854e-05 1.135175479e-05 -2.62357282e-05 -2.850929624e-12 3.573585875e-06 -0.2936474169 -0.1189890956 0.06008334877 -1.529997644e-13 -3.225502344e-05 0.06172138566 0.1798567051 0.1176432055 -3.531131782e-15 2.817861483e-05 0.03526963383 0.03777115506 -0.0537301061 -1.233921853e-13 -3.012838697e-06 0.0001141306771 -0.001798270706 -0.006232584504 1.398682497e-15 -2.022407385e-06 0.0005058009652 0.001121906182 0.01632825442 3.157847648e-17 -8.493251908e-07 0.002098835112 -8.354037664e-05 -0.00142597886 5.680166445e-18 1.294666675e-08 -0.0001794754882 -0.0001787101342 -0.003006119135 -1.464318601e-17 9.645526488e-08 0.0003572560748 0.0002571828105 0.0005037919606 -5.012404711e-17 2.52321531e-07 0.0007345532212 -3.280638823e-05 -3.845577345e-05 -1.219219972e-17 1.378615896e-08 -0.0001117820421 -0.0001802645541 -0.0006810978202 -1.113836264e-17 2.598687413e-08 -7.74206354e-05 2.507140345e-05 -3.648223389e-05 -7.054451097e-17 1.338779853e-08 0.0001175968532 -2.251947134e-05 -4.151697329e-05 -2.529625673e-17 1.422850657e-08 -4.437925723e-05 -4.167735858e-05 -0.000131059373 --0.1706695708 -0.0335837107 -0.2098431572 -0.08131601825 -0.004721303535 0.0007767522701 0.001620299735 0.002575381094 0.000216109082 -0.0006139385663 -9.684592783e-06 2.886431809e-05 -4.722959568e-06 -0.1554806522 -0.4160797529 0.06162658839 -0.1363334119 -0.1052826657 0.01333222429 -0.01046433144 -0.01477477575 0.0406463035 0.001087206923 0.002497701681 -0.06028123217 -3.375952655e-05 -0.0004173261812 -0.0001949598386 0.001425197621 0.0007565138462 0.0001887093241 0.0001977980616 0.0003573549592 -0.001262495792 -0.0001160352576 -7.138247073e-05 0.0004521232665 -0.000312985007 -5.443446665e-05 -0.0001681462583 7.869961657e-05 6.260842399e-05 0.000157535465 3.313536474e-06 -2.222759071e-06 0.0003437513803 -6.127930069e-06 -1.708368936e-05 -9.171935191e-05 1.969269547e-05 -1.207683854e-05 8.452987647e-05 1.731093377e-12 -8.338948862e-06 0.2980989935 0.1335966383 -0.05085289409 2.017821631e-13 1.909925165e-05 -0.06054260531 -0.168617146 -0.1140659088 9.220546682e-16 -3.210594597e-05 0.04917381905 -0.03627567392 -0.0435834082 2.267198836e-13 7.883847338e-06 -0.0008940292915 0.0003498934963 0.01555443664 1.590181281e-16 -6.511186609e-07 -0.0007320018941 -0.001472362387 -0.01665803273 -1.071406312e-16 2.09417512e-06 -0.001826915078 -0.002075444332 0.001520011881 2.61330843e-16 -5.383335848e-08 8.671684696e-05 0.000105584705 0.003603964924 -3.033619494e-17 -1.371045319e-07 -0.0004335547581 -0.0002932360383 -0.0003573461481 2.403323542e-17 -2.654149055e-07 3.203953646e-05 -0.0001660633787 -0.0005979581177 4.37397104e-18 -6.619160764e-10 9.120022062e-05 0.0001541629164 0.0007323205118 1.056099264e-17 -2.947628669e-08 4.681005793e-05 -2.937844731e-05 1.03521472e-05 3.645496039e-17 -1.974723914e-08 3.578028627e-05 3.154794235e-05 -0.0001179829468 1.758983675e-17 -1.233631625e-08 5.298746927e-05 0.0001125436532 4.971370392e-05 --0.003547788951 0.001443919023 0.002557681148 0.0001507101849 0.0001672729621 0.0001075115376 5.626398616e-05 5.769274702e-05 -9.789699423e-06 -2.011445021e-05 1.229941134e-06 9.624882424e-07 -1.272676231e-06 -0.0629943325 0.06050179692 -0.004874547724 -0.09474228901 0.1123073353 -0.04168239881 -0.06465235549 0.06611365026 -0.00726721582 -0.01177496044 0.01450201944 0.0004163361183 0.001046102486 0.002448198492 -0.0001985267453 8.511960765e-05 -0.002172046615 0.002949280658 -0.0001936509581 -0.001789266932 0.001669666184 -8.833711943e-06 -0.0002122229363 -0.0002508486124 -0.0001210792967 -0.0003846242502 0.0002716688108 -7.618179211e-05 0.0001023745572 2.758337962e-05 4.866105176e-05 6.331574731e-05 9.39615471e-06 -8.131292272e-06 1.729349378e-05 -4.860617808e-06 -1.566484228e-05 -3.101613065e-05 3.500745433e-05 3.957418666e-16 0.0001311861122 0.004010987423 -0.04083834352 0.04081754636 -8.84265355e-16 0.0001206312025 0.001649304624 -0.02129209505 0.01500553654 -2.46648637e-17 3.819252308e-05 -0.007892839692 0.0003498779265 0.005597115102 1.668569603e-17 7.471374189e-07 -0.0008189904168 0.001416005758 0.0006416541029 -1.349968741e-18 8.983749962e-08 -0.0001402095153 0.0002769269853 -5.535713871e-06 -5.9534804e-18 5.818613437e-07 -1.740746089e-05 -0.0001305416385 -0.000131154929 -8.568610152e-20 6.501993842e-09 -1.893993881e-06 4.012694335e-05 2.791908828e-05 -9.30734137e-20 8.760000624e-09 4.958439549e-06 1.40618594e-05 8.160856737e-06 -7.670112718e-20 1.00616571e-08 -1.336442318e-06 -2.799917601e-05 -3.66084385e-06 -1.901557078e-21 8.188808303e-10 -3.662212286e-07 -3.974121856e-06 1.93631635e-05 -9.895813503e-21 1.092437453e-08 -3.241049878e-06 4.01607814e-06 3.912169585e-06 4.000614153e-20 8.040042634e-09 -3.761297788e-07 -5.073895214e-06 -2.91913821e-06 3.476836462e-20 4.703209317e-09 -1.044635307e-06 2.670317745e-06 1.367777804e-06 --0.01294210574 0.002866384581 -0.01322658661 -0.003786998537 -0.0007359722459 -3.023428272e-06 6.457865293e-05 0.0001051376931 4.777917118e-05 2.211751692e-05 1.169638066e-06 -5.047194432e-06 -1.558036243e-06 0.09771155304 -0.1521781903 0.003496939725 -0.136727339 0.07198365543 0.0481762128 -0.001621106427 0.001862054631 0.001990947633 -0.0004736046375 0.0006964862613 -0.001203443727 -0.0003902675363 9.314288841e-05 -0.0004984385088 -0.0007118011736 -0.0006741828907 0.001592955939 8.430241715e-06 3.807242579e-05 0.0004224437135 -0.0001550872019 9.32616885e-05 1.725726908e-05 -7.092220549e-05 1.098926525e-05 -0.0001082104584 -3.63614425e-05 3.971202251e-05 8.405751135e-05 1.12199918e-05 1.195253804e-05 1.536823054e-05 5.683515543e-06 -4.534484478e-06 -1.126536722e-06 -1.579246543e-05 -5.850514981e-06 1.37569677e-05 -1.701740949e-12 -1.280335053e-06 0.01647894354 -0.01685233786 0.02100605702 9.813003361e-14 3.320275589e-06 -0.009226034561 -0.1268163737 0.1072382289 4.449739022e-15 5.70457745e-05 0.0004408339456 -0.02007393847 0.02042315918 7.525498362e-15 1.366259209e-05 -0.00131042729 0.001592535334 0.001473638548 7.092902447e-16 1.363038592e-06 -0.002151559923 0.001865536005 2.838880147e-07 -3.286875385e-17 1.850389791e-06 -0.0001976043779 0.000594838875 -0.0002651807431 1.870928432e-15 3.510710006e-06 -2.130986124e-07 1.649168427e-05 4.546554849e-05 3.61533436e-15 1.111735622e-08 4.617030474e-05 -0.0002574379463 4.404461064e-05 1.285325787e-18 3.303351286e-09 -0.0001112707826 0.000133216348 1.663100941e-05 8.017215953e-18 8.545149021e-09 -4.490169348e-06 -3.942738862e-05 9.895688137e-05 -3.734792582e-16 -4.830947818e-10 -5.637062898e-06 -1.365782028e-06 1.612005805e-05 -2.420156162e-16 -1.114966934e-09 -1.27049279e-06 -7.750428461e-06 4.969571872e-06 -6.658343028e-18 -4.598335186e-12 1.05595318e-06 -2.527979e-05 4.122596031e-05 --0.1313078157 -0.0618324269 -0.1732064856 -0.05157283049 -0.001097301509 0.002848458223 0.002540163952 0.001017227178 -0.0003925628327 -0.0004254507803 -1.809130134e-05 0.0001132708909 3.791050763e-06 -0.3302895056 -0.08137993919 0.01941706014 -0.05107434649 -0.1131442894 0.005612698961 -0.005744120713 -0.005923668958 0.006122460615 0.002201497132 -0.0007224900318 -0.05320209205 0.0002061574277 0.0001667790349 0.01149585041 8.115257729e-05 -0.0005742387302 0.001355870831 0.0001320332786 0.000167965644 -0.003673076729 2.982728144e-05 -8.359043868e-05 0.001391138915 0.0001749560232 -6.353101112e-05 -6.438497534e-05 9.961527901e-05 3.830529762e-05 -0.000510783236 1.656608939e-05 1.159930605e-05 0.0003643155942 -1.598929091e-05 -6.095572538e-06 2.133203428e-05 7.549954059e-06 8.622430198e-06 -4.735875506e-05 -2.087107761e-14 2.775003069e-05 0.2348427298 -0.05753779607 0.07815397725 -9.343596899e-15 3.229132867e-06 -0.02416910466 -0.04568001917 -0.2165335669 2.184567138e-16 -3.048243536e-05 -0.02281763694 -0.03839205951 0.05141205871 7.402504417e-16 -1.011384924e-06 0.002584582141 0.001044883386 -0.007360709045 -1.470081787e-16 -6.232541458e-06 0.0001430287476 -0.0005066806813 -0.009697639059 3.408992243e-17 -1.771447567e-07 0.0009349895437 0.0004692069387 -0.0005023668362 -2.888047675e-17 2.859375206e-08 0.0002261486508 0.0001075593575 0.0003724356815 7.176559872e-19 6.391221505e-08 -6.901853026e-05 -0.000167664151 -0.0002606918659 2.393969139e-18 -2.942145797e-08 -0.0002172088637 0.0001320611589 -2.766038386e-05 -1.896569837e-18 4.67352403e-08 0.0002120164475 9.752286446e-05 0.0001459360965 3.742647308e-17 -4.218440345e-09 0.0001500865377 -2.081954291e-05 -1.733413614e-06 -2.446988142e-19 1.263487521e-08 -5.590328823e-05 -1.791584829e-05 7.028782136e-06 -2.904295866e-19 2.154538541e-08 7.921873164e-05 2.679226803e-05 3.878440355e-05 -0.0651799823 0.02586884108 0.08383658385 0.03210024488 0.001284129654 -0.0006929474058 -0.0008690991639 -0.0009136745361 2.89055074e-05 0.0002662894195 1.326263856e-05 -2.429724938e-05 3.158723993e-06 0.09755679488 0.1204013297 -0.0251300785 0.03138840942 0.05676842763 0.01118721905 0.00472989742 0.005249836449 -0.01408103374 -0.001073617035 -0.0002154416288 0.02603665834 -9.093868512e-05 1.166632455e-05 -0.002266894112 -0.0001436351842 0.0001469284559 -0.0009154907525 -6.883916294e-05 -8.083251256e-05 0.001332125709 7.483633091e-06 5.315769529e-05 -0.0003819832813 9.276786888e-06 9.855431267e-06 3.625912801e-05 -5.515325493e-05 -1.799988739e-05 0.0001023371151 1.630663945e-06 4.062223177e-06 -0.000144917661 6.14616151e-06 9.972278298e-06 2.760461365e-05 -1.356335635e-05 -1.298830022e-06 -1.211881909e-05 2.396429225e-12 -1.330414653e-05 -0.131387731 -0.02447276643 -0.005189046267 -8.40318576e-14 -1.659884984e-05 0.01548355474 0.029908071 0.09485924266 3.931902378e-15 3.16500606e-05 0.01339094329 0.0214189794 -0.02096711698 -2.830599701e-16 1.706823821e-05 -0.0002141655103 -0.0004305952842 -0.004082349431 2.45302534e-17 4.922995001e-07 -2.152087964e-05 0.0005694819784 0.006820962365 -2.242780387e-17 2.4568197e-06 0.0008639003507 -0.0001571135579 3.21463926e-05 1.662419487e-17 3.063982953e-09 -6.777636524e-05 -1.48900622e-05 -0.001143882081 1.36251409e-16 -4.472572693e-08 9.107997383e-05 0.0001139150321 0.0002376351689 1.87212656e-16 4.261446138e-08 0.0002510063649 -2.456360448e-05 -2.161774403e-05 6.759731984e-17 -1.187508457e-08 -7.469642848e-05 -3.612589625e-05 -0.0002370152517 1.352505827e-16 2.086892056e-08 -2.790082662e-05 1.256963877e-05 1.90132233e-05 1.778904201e-16 -2.642401985e-09 5.175541023e-05 -1.264129284e-05 -1.275443127e-06 7.116362621e-17 -4.906267367e-09 -4.190771723e-05 -1.104770148e-05 -3.595439012e-05 -0.06314684687 0.0234515164 0.08000296359 0.03473968385 0.001918500921 -0.0003881036914 -0.0005838641132 -0.001012948374 -8.301512563e-05 0.0002530377204 2.114694716e-05 -4.984036157e-06 4.009556415e-06 0.1199769787 0.09468869156 -0.02869237804 0.0318947276 0.05655805562 0.02110771149 0.005592794312 0.006781425975 -0.01918084702 -0.001123908629 -0.0002739946603 0.02387299891 -3.866884318e-05 5.713986701e-05 -3.851804138e-05 -0.0007392169206 -0.0003997924058 0.0002532871886 -5.918855852e-05 -8.013879098e-05 0.0008181399372 1.842221134e-05 5.994514975e-05 -0.0001659597729 0.0001029096224 9.828489019e-06 2.745116686e-05 -5.035999546e-05 -2.259860031e-05 -2.125907674e-05 8.193714305e-06 1.672195843e-06 -0.0001006079361 5.537341155e-06 5.735303312e-06 5.312328229e-05 -1.427502562e-05 -3.401946829e-06 -3.582881634e-05 1.323514037e-12 -2.038911247e-05 -0.1329968362 -0.01081260741 -0.02637077206 -1.075121968e-13 -1.189685027e-05 0.016064543 0.02253757183 0.09633218634 2.271597464e-15 3.659865355e-05 -0.02035289742 0.01355022018 0.02594886445 -1.320358212e-14 1.753007e-05 0.0003665078588 4.635062143e-06 -0.008163065461 4.97744247e-16 1.650515914e-07 4.029652428e-05 0.0007619625304 0.006998564509 -2.042852689e-17 1.321127123e-06 0.0006228576831 0.0009503381038 -4.615725057e-05 -8.094604175e-17 1.448691881e-08 -3.491998621e-05 -1.000493357e-06 -0.001431775897 3.758320091e-16 -3.678942599e-08 0.0001089394599 0.0001261595978 0.0001809160958 1.351063989e-16 2.226572412e-08 -0.0001280747271 8.498586168e-05 0.0003008779626 4.672160315e-17 -1.945587758e-08 -5.735750097e-05 -2.915312784e-05 -0.0002592377012 1.361615087e-16 1.790118763e-08 -1.666172639e-05 1.89925813e-05 1.921930602e-05 1.318865288e-16 -5.719171425e-09 -1.392618096e-05 -8.518559558e-06 4.959490937e-05 5.18369553e-17 -7.986604123e-09 -4.589709108e-05 -2.706995578e-05 -1.246981609e-05 -0.135553984 0.2027622963 0.05088000428 0.00145011892 0.0005568395734 0.001483043333 0.0003720548272 -0.000354780514 -0.0002312310408 -0.0001375325211 3.144123342e-05 1.582658641e-05 -4.314977267e-06 0.05388217181 -0.5567912504 0.04515678087 0.1233689898 0.06834963823 0.1238541722 0.08124295041 0.1939618583 0.07545913856 0.01970425066 0.07288227345 0.01676232127 0.006436617709 0.004352769702 0.0007552827995 -0.002664750892 -0.006317972167 -0.002455277631 -0.001917239933 -0.008889555875 -0.002412030052 -0.0001261768053 -0.0006562222553 -0.0001427045521 1.031620445e-05 0.0007036346598 0.0005505925883 0.0001436151258 0.0006197134066 0.0001250635885 9.928333206e-05 0.0001269039669 4.795963329e-05 6.120963769e-06 -1.535419613e-05 -4.282507649e-06 -3.992093784e-05 -0.0002083351377 -4.279265991e-05 -2.685497694e-16 -8.931436806e-05 -0.0390736995 -0.06707634082 -0.05293838651 5.978757966e-16 -8.177448567e-05 -0.01735477744 0.006076956707 -0.02750658587 1.374729865e-17 -2.570489477e-05 0.002486459203 0.03256401655 0.001630991029 -1.099305957e-17 -5.11798855e-07 0.001426146503 0.007588918793 0.002784584035 9.080877331e-19 -8.846287251e-08 -0.0005968450588 -0.0003638945428 0.0002178639414 4.00563872e-18 -3.942981523e-07 -8.56717247e-05 -0.0002640902682 4.862294857e-05 2.574607625e-20 -2.941432179e-09 2.443245803e-05 0.000202483921 8.479349888e-05 8.053206713e-20 -3.54185281e-09 3.835269172e-06 6.480172806e-05 5.062407645e-05 3.90573685e-20 -6.789488281e-09 -1.503124924e-05 -7.843945387e-05 -3.827324544e-05 4.171292547e-21 -5.742149386e-10 -1.679248675e-06 -1.6958852e-05 -9.123089506e-06 9.814680561e-21 -7.248492012e-09 5.191385977e-06 2.755467488e-05 7.069165742e-06 -2.756209999e-20 -5.45237003e-09 -2.627282177e-06 -1.048142686e-05 -3.77188398e-06 -2.311936939e-20 -3.204783716e-09 -1.703040952e-06 -3.05943529e-06 -1.604266628e-08 -0.06277837037 -0.06875729086 0.01475740487 0.01250936213 -4.577734578e-05 -0.0002571176452 -5.872938491e-05 0.000130356071 4.782578756e-06 -0.000141437206 2.279663323e-06 9.629673871e-08 -5.557320193e-06 -0.3063152094 0.02823887038 0.1551794121 0.01095906752 0.06520113169 0.08025363244 0.001676389508 0.009733662047 -0.004594635903 0.000194594544 0.0003762922671 0.01319248604 -0.0009415934541 -0.000176452985 0.0008803623471 -0.0006141766592 -0.0007976742163 6.740452371e-05 1.215632487e-05 2.011581016e-05 0.0003279449626 3.47266398e-05 -1.011425033e-05 -3.350714784e-05 -0.0002153141231 -4.242866993e-05 -0.000124953099 -9.760374588e-05 -2.457193454e-05 -7.199931209e-05 9.207016295e-06 -3.108217176e-05 3.861797364e-06 -3.988411816e-05 4.665184981e-07 8.640265947e-06 -5.821383836e-05 -1.208536338e-05 -1.67051071e-05 4.228178246e-12 2.961650358e-06 0.1358266211 -0.3011338718 0.01310505464 -3.431536189e-14 -1.517374544e-06 0.05446370554 0.06354893878 0.0821187456 4.864533015e-15 3.585474142e-05 0.0009861182775 0.009242707761 0.03107687647 1.473870872e-15 -1.22561253e-06 -0.0004181419677 -0.001226010463 0.005578455582 1.521549695e-15 2.243329197e-06 -0.002915500228 -0.0008771611565 0.00128374775 -2.241208123e-17 4.350061452e-07 -0.0002901434878 -0.0001292994035 -0.0004288990689 6.639566117e-16 1.662156265e-06 -7.487247139e-06 1.31565495e-05 0.0001265379133 -4.642661816e-15 -1.250459409e-08 -5.449553015e-05 4.482520674e-05 -8.311360113e-05 1.841861269e-16 6.814240748e-08 -0.0002012270973 -5.94986793e-05 -4.945676722e-05 6.374035765e-17 9.359139971e-08 -1.402639074e-06 -6.93740433e-05 -1.71361996e-05 7.070080468e-16 8.339583507e-10 1.530543061e-05 9.634556168e-06 -1.213752544e-05 5.239459986e-16 2.532255243e-09 -3.006755266e-05 -3.907802177e-07 2.057587283e-05 1.038634284e-16 7.501083912e-11 9.880170391e-07 -5.341155319e-05 -1.052659588e-05 -0.04945767301 -0.05813377112 0.02183901395 0.002773431955 0.0005683478927 -0.0003045087541 0.0001197365695 -5.409970668e-05 -8.595807151e-06 -3.421739079e-05 -4.216267193e-05 -2.353259715e-05 -6.530509697e-06 0.03866048561 -0.2615475135 0.1570011456 0.0423981267 0.0197205101 0.001110840095 0.0007523221885 -0.0003780352591 0.006108702715 0.001387011635 0.0008236085259 0.006343744296 4.097824371e-05 -0.000236959526 0.0005886724081 -0.0001240181122 -0.0008447536562 0.0002242084296 -4.805349978e-05 -0.0002408234664 -0.0003831286394 -3.303889946e-05 1.363902278e-05 7.566949663e-05 2.2251861e-05 2.303387274e-05 -6.86128524e-05 -7.746629972e-06 -0.0001258367443 -5.544242712e-05 -9.040399765e-06 -9.873322014e-05 -7.530586856e-05 -6.090594151e-07 -6.08467408e-05 -1.861532051e-05 1.426152317e-06 -3.993950744e-05 8.421037692e-06 7.565630574e-15 -1.545973115e-06 0.1392203656 0.04944033057 -0.3182485927 -1.138999797e-14 3.698695586e-06 0.04090838033 0.07858924617 0.03273286242 2.022322966e-15 -3.326206287e-05 0.008299623323 0.0007732647609 9.204973552e-05 9.702875905e-17 -3.984956463e-06 0.001056672735 0.000732066808 0.006463097974 -1.051690757e-16 2.657470414e-06 -0.0001298608078 -0.0007032523594 -4.519391564e-05 4.877889584e-17 -4.124714935e-09 0.0001263078403 -0.0003881088778 -0.001489375435 1.894598551e-17 -2.77212759e-08 -6.432464607e-05 -2.211771854e-05 -1.656690929e-05 2.466362102e-18 -1.669260541e-07 4.398784067e-05 8.219129814e-05 -1.731336011e-05 3.038733739e-18 -1.17857398e-07 1.272439373e-05 5.942939779e-07 -0.0001672223212 2.601865133e-18 -1.316164706e-07 -2.701070814e-05 -0.0001914185134 -2.484820432e-05 1.108519792e-17 -9.281854929e-10 1.072146036e-06 -1.386665556e-05 -8.970852032e-05 1.205372574e-18 -1.035754117e-08 8.414776656e-06 -2.680677767e-06 -5.7621241e-05 1.015856459e-18 -3.216798503e-08 -5.405143405e-06 -6.531463065e-05 9.650924828e-06 -0.3604552665 0.01957955409 0.4130133555 0.1407343575 0.006252578156 -0.003005583138 -0.003971235496 -0.004144103765 8.934049981e-05 0.001105534499 -4.988557843e-05 -0.000143296498 3.572381072e-06 0.3720866479 0.3899082002 0.07443085436 0.2261864185 0.2601782883 -0.03137307681 0.01828393968 0.02154454171 -0.04903570874 -0.001603418874 -0.002211375233 0.1262218397 -0.0001418321979 8.498277788e-05 -0.00907533875 -0.000102182651 -0.001202414325 -0.003575613588 -0.0005189055695 -0.0006524349028 0.00453644818 0.0001302112839 0.0001266249437 -0.001640885828 0.0001288030343 0.0001170048425 0.0001924115733 -0.0001768012671 -0.0002383937273 0.0002048027621 -2.681076336e-05 -0.0001321299804 -0.0007763403701 1.672248249e-05 -2.263029649e-05 7.833757346e-05 -3.316241242e-05 -2.472929095e-05 -3.8792164e-05 -4.835348985e-12 2.768488439e-06 -0.3849935693 -0.1968642565 -0.1943754948 9.021516121e-14 -1.015050274e-05 0.140914731 0.3535066995 0.3005749932 3.871537e-14 1.38676851e-05 0.075060991 0.07512702748 -0.09756660105 9.779810584e-14 5.896379935e-05 5.628031801e-06 -0.002081841696 -0.004273132681 2.706752429e-15 -2.416647672e-06 0.000384982135 0.001010303923 0.02948836462 1.098248368e-15 -3.317937163e-06 0.003769867116 -0.00161883963 -0.002178270159 1.583176616e-17 7.132369489e-09 -0.0002822034156 -0.0002850804278 -0.005125912816 -1.609020567e-16 2.710195884e-08 0.0006029858816 0.0006672018092 0.0008425199084 5.440564218e-17 7.834579683e-08 0.001314479361 -0.0001710857364 -0.0002970070884 6.057572479e-17 -5.810497862e-08 -0.0002814015701 -0.0004710655592 -0.001211501745 1.182137477e-16 1.608149705e-08 -0.0001319500523 -2.90541146e-06 -3.035483184e-05 -5.769464001e-17 3.81915291e-09 0.0002317112663 -4.635273576e-05 -6.258277978e-05 3.627959059e-18 -4.413117455e-09 -9.26988846e-05 -0.0002112990316 -0.0001619905222 -0.3562023 -0.002193818211 0.3962837069 0.1515937321 0.008754426351 -0.001633176947 -0.002863467616 -0.00451803618 -0.000407134755 0.001011574411 -1.204251125e-05 -5.743536142e-05 8.458485312e-06 0.3585481075 0.3979100453 0.05652524039 0.2499249203 0.2626992431 -0.008252727125 0.02207904758 0.02633261503 -0.07187464915 -0.001539310035 -0.002887856445 0.1178966142 5.439067078e-05 0.0002763619083 0.0003320463822 -0.002250155275 -0.002689335367 -0.0001365596825 -0.000492020309 -0.0005994625168 0.002147586279 0.0001989040863 0.000182964564 -0.0007435254873 0.0005646085619 0.0001097812551 0.0001557452855 -0.0001686112928 -0.0002483802782 -0.0003790439932 -1.078228106e-05 -0.0001398967895 -0.0005650171828 7.614043756e-06 -2.805550526e-05 0.0001828934384 -3.528216181e-05 -2.452729785e-05 -0.0001448540847 -2.96582201e-12 7.742683678e-06 -0.3901275553 -0.203973183 -0.217961222 5.403100976e-14 -9.624321841e-06 0.1513139954 0.3578070633 0.2762982457 3.163355311e-14 6.21194238e-06 -0.09021143174 0.08030955789 0.08338296087 2.832960606e-13 6.227596289e-06 0.001612669763 -0.0003443336904 -0.02087695645 -1.319952767e-16 6.978171358e-07 0.0008429309628 0.001443427949 0.03002981243 9.122468665e-16 -6.479831677e-06 0.003257134238 0.001995731156 -0.002459366868 -4.626883071e-16 5.28512728e-08 -0.0001416704969 -0.00017339487 -0.006281030987 -2.924804563e-16 4.300635552e-08 0.0007656541671 0.0007057626473 0.0005549796236 5.786259363e-17 2.18751008e-08 -9.493645649e-05 -0.0001523736405 0.001267111888 4.087836431e-17 -5.763554244e-08 -0.0002178786292 -0.0004326074976 -0.001314169951 9.17012899e-17 -4.098979303e-09 -7.906538395e-05 1.414603027e-05 -1.944912358e-05 -3.316808779e-17 4.621016617e-09 -6.365807337e-05 -7.156930931e-05 0.0002340213737 8.329200525e-19 -6.948141182e-09 -0.0001008442499 -0.0002565459332 -0.0001019007871 -0.001218420573 -0.001099693352 -0.001520877974 -0.0001666719917 -3.691881489e-05 -4.750592852e-05 -3.633753849e-05 -2.785060879e-05 -1.450010928e-06 6.105065749e-06 1.178996108e-06 5.414505232e-07 2.708264947e-07 0.03411550353 -0.0641804295 0.03260353881 0.03020809711 -0.04755081031 0.02637001075 0.01968539949 -0.01788380027 0.0001723434487 0.004625900211 -0.004408970696 -0.001805837336 1.767312412e-05 -0.001282223886 -0.0002739727069 4.215564877e-05 8.019112231e-06 -0.0005206437659 0.0002798661903 0.0002319646965 -0.0004954615656 3.309869216e-05 0.0002270304758 -5.703984937e-05 5.264854939e-06 0.0001228800489 2.409620617e-05 3.280833613e-05 -1.870770727e-05 -2.272307228e-05 2.15909773e-05 -6.222329922e-05 -4.848223304e-06 -2.844577409e-06 -2.123080565e-06 7.3429956e-07 1.375145982e-05 -9.45034179e-06 -7.948180804e-06 -6.788347242e-16 7.162875073e-05 -0.001829083666 0.01186638597 -0.01156724776 1.528732032e-15 6.586068741e-05 -0.004880955399 0.01069173832 -0.004056854682 4.526268195e-17 2.086172056e-05 5.081589397e-05 0.003344513473 -0.0024969986 -2.897686514e-17 4.289418912e-07 0.0003465015531 -0.0002809608084 -0.000575970392 2.295408298e-18 5.979757077e-08 2.388272727e-06 -9.377614318e-05 -3.582001473e-05 1.020005374e-17 3.181117115e-07 1.127310925e-05 0.000108146253 8.998952134e-06 1.429529543e-19 2.360717569e-09 6.474083514e-06 5.972084217e-06 -2.351584022e-05 1.641688287e-19 5.13953834e-09 1.696554499e-06 -1.074056439e-05 -9.596481444e-06 1.274913021e-19 5.479245154e-09 1.832890998e-06 2.17580224e-05 -1.296328031e-05 3.394280349e-21 4.577028751e-10 5.970923117e-07 -3.3587039e-06 -2.185911321e-06 1.708373601e-20 5.974468272e-09 1.199786549e-06 1.280196263e-06 -3.051070441e-06 -7.175642539e-20 4.394780446e-09 3.821976211e-07 6.482785365e-06 -3.096541994e-06 -5.969285719e-20 2.558884432e-09 -6.043473758e-07 -5.6278675e-07 2.467596018e-08 -0.001003785764 -0.0009871072136 0.0008269037695 -0.0011050467 -0.0001760657763 -5.49830036e-05 -2.169128568e-05 6.306967991e-06 1.655514342e-06 -2.084248197e-06 -1.289312562e-06 -1.253820555e-06 1.314276302e-06 -0.05814015978 0.06396724326 0.0005663433797 0.006637861317 0.02324130117 -0.03146573181 0.001105762408 -0.002323938713 0.001135262556 0.00012713252 -0.0001165220528 4.335418192e-06 0.0001612073155 -0.0001336628818 -0.0002955353401 0.0009481907783 -0.001109428076 -6.49706917e-06 1.393540124e-05 -2.358722606e-05 -4.106833389e-05 1.288929139e-05 -9.982275144e-08 -6.285883117e-06 5.084911807e-05 -3.047060662e-05 -6.851196628e-06 1.540628963e-05 -1.876110923e-05 -7.252775837e-06 -3.500598639e-06 -8.495686992e-06 8.52645138e-07 -9.950274447e-07 2.329785311e-06 -6.560320362e-07 1.586690053e-05 -9.556855664e-06 -1.784451776e-06 -1.234435172e-12 1.290679655e-06 0.0006318158307 0.0109270859 -0.008695332683 2.848999795e-13 -8.165506164e-07 0.001209531963 0.03438582158 -0.03198194987 2.033281004e-14 -1.990127104e-05 8.705091104e-05 0.007472033512 -0.009539087694 7.038118638e-14 -1.081979491e-06 -1.33704117e-05 -0.000335079147 0.0004904405573 3.154718136e-15 -9.958119775e-07 0.0005728243901 -0.0006999830303 -0.0001288882384 -2.85164798e-18 -3.927484677e-07 6.417093932e-06 -7.737236025e-05 -0.0001381772793 4.668766144e-15 -1.40557218e-06 -4.883741958e-06 -1.092622826e-06 -6.872174192e-06 -1.400667126e-15 1.156225698e-08 -1.447799916e-06 9.126491466e-06 4.564469063e-05 6.852899313e-17 -9.800395516e-09 4.317580836e-05 -4.509878849e-05 -4.701882049e-06 1.477062346e-17 -2.931044974e-09 3.429973885e-07 -4.922319449e-06 -1.265236797e-05 -8.111254774e-17 2.4536288e-09 -1.570817293e-06 8.588074234e-06 -9.933403428e-06 -1.004521637e-16 1.847042618e-09 5.292911982e-06 8.935510645e-07 2.770128085e-06 -2.777598931e-18 2.337651662e-12 4.018834553e-07 3.04401979e-06 -8.460323129e-06 -0.0001346851614 -5.242337523e-05 9.845413557e-05 7.88252662e-06 2.112643134e-06 -8.682492265e-07 -1.008922137e-06 -1.214462545e-06 1.002697913e-07 2.240457311e-07 -1.20973304e-07 -1.535761101e-07 -4.238567953e-08 0.01857090359 -0.01935210179 0.001345388941 0.0001453376579 0.0007542681373 -0.0001310923471 -0.0001508197252 0.0001479452864 2.738178286e-05 -3.835789788e-05 8.029825456e-05 -2.468359232e-05 2.243540506e-07 1.174844199e-06 2.252292078e-06 1.676411254e-05 -3.272978331e-05 1.667453862e-06 8.363795764e-06 -1.347036864e-05 2.080548415e-06 -2.03832884e-06 2.10051325e-06 -8.603597077e-07 1.490496823e-07 -1.878518777e-07 6.989003433e-07 4.220733649e-06 -5.867195689e-06 1.390643291e-06 3.522322255e-06 -5.31374673e-06 6.259534491e-07 1.831192351e-06 -2.562743017e-06 1.673921862e-07 2.152216526e-06 -2.492351715e-06 3.362869517e-07 3.759229698e-14 3.003918508e-08 -0.0006846202629 0.02374239691 -0.02134034961 5.487429825e-14 6.660222799e-06 0.0001226439299 -0.003107879139 0.004059239093 -9.344805354e-16 -2.748436843e-06 0.0001644211576 -0.0001689575456 5.401345883e-05 -5.051334993e-16 -5.648362721e-07 -4.462671984e-05 9.477497434e-05 -9.71923177e-05 9.543003084e-16 3.676319667e-07 1.757637773e-05 -2.85168304e-05 3.598813084e-06 -6.430200682e-18 -2.193189209e-10 -4.321297955e-06 1.086407026e-05 -2.56298616e-05 -7.629923566e-17 -7.107387324e-09 7.362815358e-06 -9.034284102e-06 1.124538282e-06 3.930197398e-17 1.586541373e-08 -4.478187129e-06 7.068974614e-06 -1.268255721e-06 -6.221886091e-18 -5.563341962e-09 1.929908738e-07 5.989937132e-06 -5.606250082e-06 -6.583502803e-18 -9.451683625e-09 4.200393933e-06 -7.334837009e-06 3.415972751e-06 -4.344623885e-17 -1.951300796e-10 -5.368068783e-07 5.771331523e-06 -5.832813823e-06 -6.659537591e-18 -6.791705016e-10 -2.149202499e-07 6.568691078e-06 -6.56181244e-06 -3.534642426e-18 -1.917309385e-09 2.176627965e-06 -4.403837562e-06 2.326077219e-06 -0.1172619211 0.04533430621 0.1502557946 0.05770092911 0.00229602364 -0.001243899764 -0.001553507779 -0.001629680041 5.204525531e-05 0.0004749774316 2.409695209e-05 -4.312635046e-05 5.729056931e-06 0.3300339141 0.04936528803 -0.03383221957 0.05419151594 0.1079744952 0.02130848828 0.00829349775 0.009689996664 -0.02546843379 -0.00209563842 -8.105402997e-06 0.04663874846 -0.0001500756989 -1.542482913e-05 -0.004064525293 -0.0002570022158 0.00017295108 -0.001595829902 -8.942202707e-05 -0.0001880429844 0.002419571332 8.639636068e-06 0.0001031807858 -0.0006814680232 1.489445381e-05 2.880935282e-05 4.94180919e-05 -8.644116082e-05 -5.512078564e-05 0.000189584533 1.541614756e-05 -1.200855004e-05 -0.0002525598106 2.183526787e-05 2.973247345e-06 5.300407323e-05 -1.664888868e-05 -1.292835185e-05 -2.052594592e-05 2.771570484e-12 -2.629093013e-05 -0.2297914793 0.05507566403 -0.1006180845 1.189067075e-13 -5.546247282e-06 0.02781527043 0.03818793912 0.1917487095 -8.486746237e-15 4.337828311e-05 0.02407941401 0.03844489381 -0.03713771103 -4.963229079e-14 2.306007686e-05 -0.0003955100933 -0.0005802096887 -0.00776105901 1.404520268e-15 8.328115924e-07 5.089131029e-07 0.0009154859703 0.01221664655 -9.270650817e-17 3.722512135e-06 0.001538024358 -0.0002891438471 5.869292866e-05 4.14679288e-18 -9.851064336e-09 -0.0001155125525 -2.93921182e-05 -0.002029277267 -1.347045533e-16 -6.380429342e-08 0.0001389566148 0.0002439805753 0.0004192945601 -1.115576778e-16 -3.709352366e-08 0.0004466745502 -3.40343481e-05 -5.075124433e-05 -1.597520733e-17 -5.626954953e-08 -0.0001252908328 -8.592922045e-05 -0.0004069429543 -9.765225385e-17 1.100451396e-08 -4.982148879e-05 4.613398119e-05 1.23748369e-05 -2.87540889e-17 -1.918853055e-08 9.091744049e-05 6.737338812e-07 -2.162780638e-05 -2.154377143e-17 -2.228108434e-08 -7.014531293e-05 -4.179547492e-05 -4.707586017e-05 --0.1135226662 -0.04115390523 -0.1433057039 -0.06246830661 -0.003431712366 0.0006939808282 0.001043949679 0.001808665623 0.0001480021231 -0.0004516587818 -3.848716859e-05 8.585771795e-06 -7.134997343e-06 -0.323667358 -0.05195092885 0.04279257032 -0.05505721917 -0.1055477157 -0.03969153208 -0.01007895829 -0.01223741778 0.03463016863 0.002119652954 0.0002737243161 -0.04284150576 6.521044619e-05 -7.401716384e-05 6.472274954e-05 0.001360154358 0.0006309551131 -0.0003859827683 7.35695661e-05 0.000177357627 -0.001495703139 -3.016042471e-05 -0.000111866012 0.0002955084643 -0.0001811772848 -2.63206632e-05 -3.639270943e-05 8.462177429e-05 5.23911763e-05 3.363648184e-05 -1.990840724e-05 3.638365937e-06 0.0001772955606 -1.843086735e-05 1.139351845e-06 -9.804829622e-05 2.229996183e-05 1.179880035e-05 6.382033604e-05 -1.110741627e-12 3.983392202e-05 0.2317375235 -0.03441217467 0.09770278004 -1.096690115e-13 1.051791043e-05 -0.02888557747 -0.03062437843 -0.1869447218 5.073948113e-15 -5.897227496e-05 0.0369135598 -0.0244900465 -0.04725138833 3.397006972e-14 -3.130281475e-05 -0.0007049081805 -2.772740389e-05 0.01488492019 9.9205722e-17 1.337853431e-07 -7.727028836e-05 -0.001324376615 -0.01254583479 4.659597964e-17 -2.165945953e-06 -0.001088395523 -0.001707317199 4.220216725e-05 2.191175447e-16 -2.481663374e-08 6.142111138e-05 -4.305109705e-09 0.002551110192 2.515969274e-16 9.619623795e-08 -0.0001756100544 -0.0002533968113 -0.0003204309363 7.658826536e-17 4.205165971e-08 0.0002315153962 -9.579919479e-05 -0.0005940418629 8.599747708e-18 4.999219108e-08 9.893600412e-05 6.192012794e-05 0.0004537292737 8.915403992e-17 -2.751068469e-09 2.958128341e-05 -5.315236872e-05 -1.727744577e-05 4.053868637e-17 2.360260265e-08 1.210618676e-05 2.785799422e-05 -8.977056218e-05 1.839980495e-17 2.275044638e-08 8.103695092e-05 5.30099689e-05 1.860487202e-05 -0.1042346798 0.193192565 0.07087139199 0.006443565709 0.0001346346402 0.001576037354 0.001051986844 9.080582815e-05 -9.021952525e-05 -0.0001049739842 -1.125219698e-05 -9.805920513e-06 3.021475406e-06 -0.5644429142 0.03880804534 0.03749057153 0.07896464009 0.0831051732 -0.02245951323 0.04630448308 0.05271757113 0.1751314114 0.009015570751 0.012019023 0.09855689625 0.0001879570779 -2.936588057e-05 0.03281606625 0.001899969797 -0.001570119931 -0.001683312931 -0.006225728381 -0.001474797167 -0.001170738549 -0.002691553405 -0.0001076864232 4.558743141e-05 -0.001412719271 -0.0003029269536 0.0002008290962 5.706270603e-05 8.556259582e-05 0.0003277979745 2.931763718e-05 1.670113586e-05 0.0003733572659 -6.00163774e-06 -4.547916039e-06 8.57347086e-05 -5.816215462e-06 -2.549242037e-05 -1.854248335e-05 6.027966577e-19 3.803748927e-06 -0.06658512213 -0.03163418106 -0.03036153465 -3.144862686e-17 3.950696701e-06 -0.03065427877 -0.01594416971 -0.01189879922 -3.079913614e-18 1.430290917e-06 0.00205815841 0.0007947457451 0.01266510988 5.410424668e-19 4.648845346e-08 0.0006425632795 0.001179677273 0.01214364799 -3.381549967e-20 -1.007569013e-09 -0.0001128470406 -0.000119675623 0.00221970262 -1.129624513e-19 1.964071849e-09 -0.001356789017 -2.554132843e-05 -9.504952341e-05 -4.080517495e-21 -5.431228722e-10 5.852639767e-06 3.032174161e-05 -5.450516307e-05 -1.008499102e-21 6.223753634e-10 -7.08897462e-07 1.102379831e-05 0.000261024702 -9.323629676e-22 -2.274143288e-09 -7.028711049e-05 -2.141032302e-05 -9.327444096e-06 -4.660408032e-23 -4.080728399e-10 -5.586626376e-07 -2.405632258e-06 -7.723577496e-06 4.847473079e-22 4.017528739e-10 1.705767137e-06 2.910643732e-06 -1.27377139e-05 -1.176657419e-22 -2.680890764e-10 -2.302667249e-05 -2.937699907e-06 -1.177305237e-06 1.22251904e-21 1.798910136e-10 -7.8114589e-07 7.611672888e-07 3.811421979e-06 -0.4439020615 -0.07403857836 0.4033597397 0.2741830495 0.0442282963 0.004717757531 0.0007495504351 -0.003824452351 -0.001995961369 -0.001079054519 0.0002118081478 0.0004328526706 -6.611379991e-05 0.5571004585 0.5641124492 -0.1689746904 0.405005359 0.4400657063 0.1914170072 0.0706689124 0.07618040431 -0.2066224103 -0.001711455392 -0.002389442899 0.05834189154 0.001461137987 0.002027167137 0.04846227672 0.005418701551 0.001640777586 0.002229198962 -0.0002024047047 -0.0001554051008 -0.009775302832 0.0008023601503 0.0008147940984 -8.307058746e-05 -0.0004217320383 -0.0003474918425 0.003701518472 -0.0001573995414 -0.0001771198304 -0.002155501039 -9.639644052e-07 9.956355858e-05 6.003424438e-05 -4.093547901e-05 -4.343035307e-05 0.0002515824542 -4.809865908e-05 -3.737481922e-05 -0.0004562300013 -4.554193023e-13 1.426720526e-07 -0.6618537608 -0.3645415138 -0.3543660107 -5.309446542e-14 -1.249844177e-06 0.1549621625 0.3302462931 0.3409956021 4.686681708e-15 2.880505416e-06 -0.02410538136 0.1338782476 0.1480300433 3.15117911e-15 -2.707121807e-06 0.01520461684 0.01576522022 -0.1015834685 6.856706683e-18 1.083272029e-06 0.006077161931 0.007527962253 0.01294663614 -3.83159841e-17 -3.651856446e-07 -0.002551347393 -0.003172438187 0.02503723242 -1.57872712e-16 4.846555567e-06 9.781343025e-06 4.499400923e-05 -0.0009388224312 -1.541229452e-15 -4.281043527e-09 -0.00158680519 0.001209028788 0.001037161184 6.333303097e-17 -8.196256275e-09 -0.0008078716467 -0.0008517368742 -0.0001581556707 -9.692073384e-19 1.730310545e-08 8.828180539e-05 -4.454640297e-05 -9.69688077e-05 -1.181028915e-16 1.324257592e-10 0.0004277320695 6.478108155e-06 2.71608645e-05 2.454055384e-17 1.334330202e-10 -0.0001026133633 -8.66028298e-05 -0.0003837732726 -5.776079185e-17 -1.528416581e-10 -0.0001006683725 -6.946531923e-05 -7.86058517e-05 -0.07704793255 -0.0304665172 0.06983588379 0.0215074914 0.0005621090573 -0.00121273192 -0.0006648662614 -0.0002042264568 0.000123096335 8.295549821e-05 -9.450360431e-06 -3.936103147e-05 -2.257103016e-06 -0.1426344488 0.02695159101 0.1106002609 0.01738801493 0.0731669912 0.02440223962 0.001879580669 0.004035903924 -0.003460598688 -0.0006873786286 0.001689203572 0.02495179065 -0.0004946485987 -5.29912482e-05 -0.004056642847 -0.0007520537985 0.0001763598677 0.000194063986 -8.695477827e-05 -5.787414434e-05 0.001226286232 -9.44475627e-06 2.974273243e-05 -0.0002941149965 -7.057119797e-05 -0.0001142713617 2.148526016e-05 -0.0001688378124 -1.345771917e-05 0.0001159774554 -5.612951327e-05 -4.737840657e-06 -0.0001222359127 -3.07687355e-05 1.912925566e-06 -5.321620296e-06 -5.044279088e-05 -2.928141462e-06 1.078292778e-05 2.614745486e-14 -8.044799659e-06 0.05583993714 -0.3237934005 0.002609528732 7.415989331e-15 -4.520991033e-06 0.03020765507 0.02060818804 0.156105464 5.949135296e-16 4.984006842e-05 0.006609964187 0.0281971177 -0.01844912012 -2.835221777e-16 3.765190907e-06 -0.000854476339 0.0004229400504 0.008613365773 9.770474318e-17 3.644989797e-06 -0.0007290186485 0.0001169817369 0.003390699433 -6.488883944e-19 6.179739462e-08 -0.0001545070892 -0.0009729818164 0.0001667780102 2.779097458e-18 -1.448751369e-09 -6.698210381e-05 3.624441633e-05 0.0001388759798 -1.012997663e-18 1.228448033e-07 2.544141307e-05 2.921617962e-05 0.0001679801674 5.593419973e-18 1.264271891e-07 6.115388467e-05 -0.0003183364638 1.766884944e-05 2.763800459e-18 1.02300791e-07 -0.0002294596958 -2.978632859e-05 -5.227350046e-05 -1.899110714e-17 2.01555715e-09 -3.409259143e-05 -2.399016692e-05 1.739935381e-06 1.797579586e-18 3.242481891e-09 3.373223826e-05 -2.2842024e-05 -4.760338459e-07 1.644966732e-18 2.11329303e-08 -0.0001015350363 -6.547321837e-06 -4.853242195e-06 -0.08492008587 -0.03457858964 0.07322623009 0.03058795793 0.0009972052725 -0.0006732227052 -0.0005626570199 -0.0005026941523 2.437593925e-05 0.0001241440791 2.637868389e-06 -1.767408909e-05 -3.36060998e-07 -0.1339728361 0.02551809712 0.1040630978 0.02331713922 0.07744073984 0.0555544979 0.003467161405 0.008171863387 -0.01473366704 -0.0008256989505 0.001209479128 0.02833258796 -0.000564271286 -5.679616723e-06 -0.001961883481 -0.0008524241672 0.0001426246642 -7.715614142e-05 -1.846986346e-05 -6.964429521e-05 0.001212168494 3.780041656e-06 3.392222006e-05 -0.0001600444098 -3.337725003e-05 -0.0001567881336 2.079438417e-05 -0.0001594945372 -2.347407397e-05 2.474069996e-05 -2.294214601e-05 -3.174281296e-06 -9.656267077e-05 -2.705696714e-05 2.842210455e-06 2.4920694e-05 -6.448832753e-05 -5.296336381e-06 -2.08118218e-05 1.119479593e-12 -8.428237773e-06 0.03616276634 -0.3243810824 -0.009741853915 4.093528537e-14 -1.067764839e-05 0.03677179008 0.02484422139 0.1662675015 -2.95214948e-15 8.389961833e-05 0.008994288857 0.03484793348 -0.01346540962 -5.175579163e-14 2.566564685e-05 -0.0002853636626 -2.933993197e-05 0.002693038687 5.680001374e-16 4.565840064e-07 -0.0009196072085 0.0003439464205 0.00570183094 -2.724164608e-17 5.779759452e-06 0.0005892335706 -0.0006161895782 2.839991577e-05 7.033468258e-19 1.080247516e-08 -4.697354085e-05 7.132835609e-05 -0.0004809816203 1.381628681e-17 9.620786431e-08 6.172584136e-05 5.107706989e-05 0.0001697088896 -1.566642127e-17 3.564372005e-07 9.096285761e-05 -0.0002285462912 -1.269709264e-05 -1.808652424e-18 5.228576274e-08 -0.0001595162334 -3.335668976e-05 -0.0001604642841 -4.363940875e-17 3.095284702e-08 -9.36211457e-06 2.022119093e-07 7.817369137e-06 -1.37240292e-17 9.706187231e-09 5.424737607e-05 -3.448517575e-05 -7.762413269e-06 -4.005136155e-18 1.747438498e-08 -9.615712037e-05 -1.127340612e-05 -1.534966956e-05 -0.08491837286 -0.03725370429 0.06973771224 0.03382171645 0.001439061879 -0.0003769054565 -0.0003932654044 -0.0005809124761 -5.146955418e-05 0.0001097620757 1.188578209e-05 -3.52244674e-06 -1.136360459e-06 -0.1452552312 0.02880561144 0.1017053345 0.02346767597 0.07309680576 0.07572730223 0.004212140698 0.01062959025 -0.01962031483 -0.0008665498203 0.0009631123041 0.0274921618 -0.000560534806 3.218967916e-05 -0.0001181779061 -0.0008634672562 -0.000140797886 0.0001827843092 5.780099364e-06 -6.47362786e-05 0.0009326370612 1.287995084e-05 2.601162301e-05 -2.945931897e-05 7.244031913e-06 -0.0001557393684 1.582358232e-05 -0.0001505365684 -2.174019105e-05 -6.495338209e-05 -8.008184616e-06 -2.302435145e-07 -6.979215991e-05 -3.077906262e-05 4.208312987e-07 4.57204059e-05 -7.039175317e-05 -4.697960888e-06 -4.08316798e-05 5.551742419e-13 -1.185033814e-05 0.03397666428 -0.3352698989 -0.004351541284 3.392340027e-14 -1.086913646e-05 0.04006738672 0.02050758646 0.1674252609 1.723152809e-15 0.0001062204456 -0.01829462948 0.009060106102 0.04728163742 -4.661181068e-14 3.747860718e-05 9.1154176e-05 7.468910475e-05 -0.0005778596633 -3.210117824e-17 1.594916541e-07 -0.00111233661 0.0005403216614 0.006134945274 3.627302198e-17 4.32593766e-06 3.985956115e-06 0.0006674248215 1.025422311e-06 -7.544221797e-17 5.488622797e-08 -2.663344522e-05 6.927715794e-05 -0.000690814152 -2.563653891e-18 1.280204801e-07 8.027543435e-05 2.109677733e-05 0.0001078748339 1.673388294e-17 4.387499763e-07 -0.0004240062626 5.812622495e-05 0.000261208181 7.976021546e-18 2.745545722e-08 -0.0001273720715 -2.271265206e-05 -0.0001767550363 -1.963019651e-17 4.409916666e-08 -3.55966089e-06 3.967674303e-06 1.116409751e-05 -1.176556917e-18 1.569878075e-08 -4.70039618e-05 -8.552899356e-06 5.326841322e-05 3.825743421e-18 1.512975404e-08 -8.845166539e-05 -2.057747887e-05 -5.989436186e-06 diff --git a/tests/09_DeePKS/100_NO_GO_deepks_UT/gvx_ref.dat b/tests/09_DeePKS/100_NO_GO_deepks_UT/gvx_ref.dat deleted file mode 100644 index ecfccbf8b2..0000000000 --- a/tests/09_DeePKS/100_NO_GO_deepks_UT/gvx_ref.dat +++ /dev/null @@ -1,75 +0,0 @@ -0.004264241577 -0.005660860289 -0.005766717256 -0.0004705695994 -0.0002523341852 -0.000198737253 -0.0001228478458 -0.0001015391237 1.362290068e-05 3.244311953e-05 -7.063499268e-07 -7.150719929e-07 1.749007251e-06 -0.01226234445 -0.07579468412 0.1014399001 0.2295646173 -0.1576899588 -0.04212274096 0.1210427238 -0.09523948441 -0.02420666746 0.01950130684 -0.02134676598 -0.005764724589 -0.001540524914 -0.003600698851 -0.001024641589 0.0009219548485 0.003127865624 -0.005574776023 0.0006411245301 0.002639400397 -0.002724390357 0.0001240825958 0.0003133557374 0.0003910492833 0.0006238001872 0.0002299963297 -0.0004131517236 0.0001129265771 -0.0001531486404 -4.10811831e-05 -7.568347493e-05 -9.625176366e-05 -2.966323222e-05 1.227693382e-05 -1.643765364e-05 -5.571943104e-06 1.251958642e-05 4.71503811e-05 -4.604672256e-05 1.586313969e-17 8.267410216e-06 0.009272024348 0.05898784781 -0.07357887178 -6.02735206e-17 7.619861048e-06 0.003879450809 0.03026237236 -0.02440604658 -3.67855444e-18 2.450023733e-06 0.005484740418 -0.001219626801 0.0003203080811 1.252357815e-18 1.08042977e-07 0.001007495408 -0.002161416045 -0.0005801944764 -1.462574784e-19 1.358706154e-08 0.000211426204 -0.0003227277743 -0.0001409391756 -4.68751587e-19 3.799193169e-08 7.154040895e-05 0.000225026159 0.0001999419488 7.510125338e-21 -2.995723159e-09 -5.710115985e-07 -6.090056442e-05 -2.020696268e-05 2.737164951e-22 -3.655718359e-10 -7.335811373e-06 -2.159759739e-05 -1.370070889e-05 -2.034374672e-20 6.706417769e-10 5.130063849e-06 4.151176717e-05 5.508962632e-06 1.416392001e-21 6.458996721e-11 5.616546979e-07 5.830998751e-06 -2.976390646e-05 -2.659339626e-21 7.176868552e-10 2.928188914e-06 -6.372558153e-06 -1.574312e-06 5.298859913e-21 5.282258899e-10 1.534292948e-06 7.627333362e-06 4.635594154e-06 2.141383844e-21 2.822249992e-10 1.585072439e-06 -1.372420788e-06 -5.268408431e-06 --0.004106501462 0.002676718886 -0.005046258454 -0.00331976488 -0.0005069334605 -0.0001198735964 2.567679553e-05 5.113072615e-05 2.25898373e-05 1.246442207e-05 -3.250573766e-06 -4.762230257e-06 1.173199228e-06 -0.002807977072 -0.003911740155 0.001349107264 -0.0007803577614 -0.002539012811 0.002989738816 -0.0004401833079 -0.000720694667 0.003061117268 7.922033325e-05 5.029778642e-05 -0.001338729583 -3.289861834e-05 -7.898827883e-05 -0.0006606781228 -8.160808767e-05 -3.751375134e-05 -4.513206871e-05 3.593301715e-06 3.094622531e-06 0.000110390781 -3.110888389e-06 -6.014082947e-06 8.546034305e-06 1.310512573e-06 -6.805465129e-06 -3.060474248e-05 2.070893725e-07 -4.305934598e-06 2.958592065e-05 7.746374285e-07 -7.783338849e-07 -2.512424675e-06 5.067525042e-07 -3.819404011e-07 -1.697341669e-06 -1.075124065e-07 -1.135489887e-06 5.609785115e-06 -7.563746411e-12 -5.592986199e-06 0.003471298504 -0.04636088057 0.06027570624 -2.095039272e-13 -6.810302643e-06 -0.004127499055 0.01987236227 -0.01635077387 4.718007718e-16 6.034776347e-06 0.0002452905684 -0.001216362207 8.355497576e-05 -1.612375359e-15 4.514945783e-06 0.0009284141464 -0.001496086885 0.0005847925316 1.000335066e-16 1.839897233e-07 -0.0002378872142 -0.0001359385288 -0.0003592939181 -2.886631265e-18 -1.08504475e-07 2.861094025e-05 6.453567049e-07 -0.0001935264345 -3.02579923e-16 -7.428441278e-07 -1.11439133e-05 1.163900925e-05 2.137554509e-06 -1.803768747e-16 -8.470987665e-10 2.263642984e-05 2.774468322e-05 -4.050248151e-05 3.851420639e-17 1.442887033e-08 -1.148432244e-06 2.354846336e-06 2.433159748e-05 2.727971529e-17 4.425082476e-08 -1.605756046e-06 -3.402985641e-06 7.904177848e-07 9.129704722e-17 6.244473686e-11 -5.250138415e-06 6.386096774e-06 -5.208220515e-06 1.006253271e-16 4.159115606e-10 -1.852665572e-06 5.177635508e-06 3.107647603e-06 -5.103351558e-16 -4.24996311e-10 1.082938456e-06 -3.108628449e-06 3.03171767e-06 -0.1479046236 0.1649512493 0.2502830925 0.07122777737 0.001305346886 -0.00366360697 -0.004241950341 -0.001779955805 0.0006138794545 0.0007488960997 3.235430303e-05 -0.0001717021979 -6.382726676e-06 0.1269041524 0.1293044983 0.06522723892 0.0794223559 0.08202826313 -0.07327393783 0.008782227691 0.009196331164 -0.0002939616974 -0.003347232501 -0.003895775606 0.07386183093 -0.0002176878842 -0.000249888091 -0.01628134789 0.0007266203693 0.0008674976992 -0.002832969264 -0.0002391032249 -0.0002650479318 0.00552699429 -4.464756997e-05 -4.814210382e-05 -0.002286874021 -0.00021144746 9.86370687e-05 0.0001012009085 -4.691171767e-05 -5.932691315e-05 0.0008957651161 -1.875057261e-05 -1.916156576e-05 -0.000538606802 6.519083523e-06 9.274992142e-06 -2.298803531e-05 -1.165857863e-05 -1.296280854e-05 0.0001122620299 -1.414537402e-14 5.75301501e-06 -0.09981151952 -0.09499227693 -0.1195815339 -6.752982826e-15 1.689385488e-06 0.03372078085 0.0727030779 0.07822339863 -2.404160413e-17 -1.28343687e-06 0.03517166214 0.03681630422 -0.0738853076 -1.160680363e-15 1.824407471e-06 -0.003947248984 -0.005552294264 0.01229069743 5.344355944e-16 -2.352399273e-06 0.0004892218134 0.0007707589455 0.01423195451 -3.760261235e-17 2.296923538e-07 -0.001706725162 0.0006810304859 0.0007412017902 -2.06272523e-19 -1.526254368e-09 -0.0003628538867 -0.0003769806373 -0.000761042099 -2.843608034e-18 -1.873107029e-08 0.0001076127168 0.00016483058 0.0002210873319 -3.917757006e-18 1.216359609e-07 0.0004085483117 5.216264413e-05 4.190668676e-05 2.839956957e-18 -3.263668968e-08 -0.000119485465 -0.0001521910234 -0.0001529890854 -8.208593098e-18 1.831162098e-09 -0.0002113480517 -6.436606103e-07 -5.375466864e-07 -6.509093918e-19 4.321915312e-09 0.0001043666217 -1.016184023e-05 -1.279202131e-05 2.390196317e-19 -2.198319917e-09 -3.271695239e-05 -4.098792643e-05 -5.212872252e-05 --0.07122073454 -0.06589395339 -0.1196292908 -0.04278451261 -0.001769679533 0.0007062062178 0.001419613871 0.001457088469 -4.450482064e-05 -0.0004388006575 -1.49815972e-05 3.515851061e-05 -4.921960449e-06 -0.06103391641 -0.0633559854 -0.02689573799 -0.03835600668 -0.04486838 0.02830357757 -0.006873830048 -0.007189386218 0.01564953931 0.001896100203 0.002175752379 -0.03546982685 4.41772286e-06 5.131721877e-06 0.002882213356 -0.0001658021985 -0.0001619480708 0.00148966877 0.0001397904982 0.0001404494164 -0.001789078471 -6.637499835e-06 -4.742962722e-06 0.0006097755899 -5.750682068e-05 -4.283983254e-05 -4.457561742e-05 3.227658902e-05 3.188190529e-05 -0.000191166093 4.035316052e-06 3.025866069e-06 0.0002073387093 -5.013644587e-06 -5.389691798e-06 -4.890826396e-05 7.525548226e-06 7.165494952e-06 -3.98991799e-06 -3.530227083e-12 -1.162305916e-05 0.05524648211 0.03936915954 0.08639674082 -1.057148035e-13 -1.396749208e-05 -0.02661547623 -0.02155232966 -0.03676410173 -1.170311739e-15 -2.591019947e-06 -0.01955155413 -0.01799965197 0.03132657 6.953082131e-14 -2.041458691e-06 0.0003114388087 0.001507954994 0.003844204344 -1.26539637e-15 8.028228545e-07 -0.0004760012648 -0.0008366666135 -0.00931319157 -5.529858564e-18 -4.292561812e-08 -0.001261425823 -0.0001610363873 -0.0001455530716 -7.972131563e-19 2.147740079e-09 9.542450362e-05 0.0001214556865 0.001767555082 1.222596021e-16 2.048561728e-08 -9.817215309e-05 -0.0001384382449 -0.0002995640341 4.022043407e-17 1.64299012e-08 -0.0004918847089 -3.691539007e-05 4.238333621e-05 -3.791099693e-18 1.897762172e-08 4.610145832e-05 5.067953425e-05 0.0003355490474 1.152910084e-16 8.293726267e-09 3.681224072e-05 -1.496916328e-05 -1.085495767e-05 4.10073748e-18 -1.619876541e-09 -8.988916771e-05 1.142661515e-05 1.908162804e-05 -3.378331437e-19 1.863902221e-09 1.712505152e-05 1.306373089e-05 6.269061208e-05 --0.07008092128 -0.06090680002 -0.1167352951 -0.04715619178 -0.002773565759 0.0002931945489 0.001004090865 0.001633730266 0.0001270899251 -0.0004261153704 -2.693929132e-05 7.191283012e-06 -6.945001064e-06 -0.06073041756 -0.06316623017 -0.02519284688 -0.04293361978 -0.04504732953 0.02112402503 -0.008401200413 -0.008905165618 0.02370204403 0.00183922768 0.002260722681 -0.03301368105 -7.417371723e-05 -6.905749877e-05 -0.0002407011417 0.0009943945898 0.0005426717601 -0.0004026917297 0.0001417409371 0.0001445227802 -0.001011012034 -2.529805006e-05 -2.28082597e-05 0.0002960606434 -0.0002189345145 -4.180978179e-05 -3.497490143e-05 3.328780348e-05 3.639681192e-05 -3.58192171e-06 7.036507217e-06 2.292749325e-06 0.0001448234871 -2.760780561e-06 -1.914854971e-06 -8.736744875e-05 7.616545139e-06 7.791055175e-06 3.202920611e-05 -2.394561266e-12 -1.43321702e-05 0.05867881871 0.04763745658 0.08483798371 -1.445001311e-13 -8.48722237e-06 -0.02932842556 -0.02124372098 -0.03186454851 2.718527475e-16 -9.866404254e-07 0.0294609384 -0.02020413077 -0.02058710521 1.044855895e-13 2.534805314e-06 -0.000629813018 0.0005360529946 0.009631346853 2.817925437e-16 -1.180044354e-07 -0.0007189142811 -0.001146890032 -0.009540891623 -5.544633137e-18 7.651348607e-07 -0.001208907485 -0.00147637869 2.552586259e-05 1.995178224e-16 -7.543530014e-09 5.127154326e-05 8.337626845e-05 0.002221325442 2.27722916e-16 3.460619262e-08 -0.000136400897 -0.0001662715292 -0.0002133924981 2.899037655e-17 3.932376625e-08 -3.800111508e-05 -0.0001425242133 -0.0004009567287 -6.146656203e-18 1.801058748e-08 3.720754985e-05 4.218993112e-05 0.0003813617335 1.101225414e-16 1.591667232e-08 2.134643799e-05 -1.895488436e-05 -1.451437346e-05 1.126398996e-17 -3.133461298e-10 1.73300384e-05 2.266141168e-05 -9.26923927e-05 -1.640149383e-18 2.615463605e-09 2.394608269e-05 4.756949898e-05 2.337322185e-05 --0.00147372564 0.001894944774 0.002184983043 0.0002189362119 5.745999586e-05 7.120667834e-05 5.014567663e-05 3.81816318e-05 1.098415134e-06 -9.344868572e-06 -1.466258704e-06 -6.373049952e-07 -4.465536128e-07 0.005652906948 0.02096092399 -0.030986276 -0.03455021466 -0.01155882082 0.03560225371 -0.025653494 0.008798309844 0.01574259312 -0.006529284249 0.00595295999 0.003122807678 4.9566927e-05 0.001845558679 0.0002757861225 -0.001119307093 0.001097861086 0.0006561909831 -0.0004739507668 -0.0002964757092 0.0007020713504 -4.907134073e-05 -0.0003287686868 8.716746031e-05 5.608252914e-07 -0.0002526269801 4.624876533e-05 -4.883550405e-05 3.725799726e-05 2.811882972e-05 -3.758721795e-05 9.326870271e-05 1.14463577e-05 1.029120365e-06 3.952597446e-06 8.672335321e-07 -1.283617587e-05 3.389950408e-06 1.275018389e-05 -4.410039134e-17 5.277113509e-06 -0.008270844714 -0.005572682087 0.01567479862 1.275674278e-16 4.846931957e-06 -0.004860955226 -0.004110395094 0.005766422746 8.34207084e-18 1.524883899e-06 -0.001126120223 -0.0001626593145 -0.0004848426628 -1.916244188e-18 2.805991129e-08 -0.0005538601121 0.0008112379092 0.0002984842547 1.346767353e-19 -7.301038525e-09 -3.052995826e-05 0.0001534651557 2.457184929e-05 7.015042099e-19 2.30451917e-08 -1.814809231e-05 -0.0001699683847 1.961336252e-06 -1.599117526e-20 1.806310148e-10 -1.009736148e-05 3.248745338e-06 2.083121055e-05 1.255382349e-20 -7.076093018e-10 -2.417357666e-06 1.832065775e-05 6.970691663e-06 9.095042689e-21 4.017166033e-10 -2.596640997e-06 -3.247862035e-05 1.913513448e-05 1.593306849e-21 1.810755698e-11 -8.960647349e-07 4.822111228e-06 3.205254459e-06 -2.348766249e-21 4.241475279e-10 -2.128752085e-06 1.074239261e-06 1.755829608e-06 -4.628028325e-21 3.172647013e-10 -5.740290409e-07 -9.727847867e-06 4.763306553e-06 -5.585849086e-21 1.973767007e-10 4.410836126e-07 1.184824206e-06 5.888651988e-09 -9.48609846e-05 -0.002100409006 -0.0006076147638 -0.000253309473 -7.444014752e-05 1.197031286e-05 -9.816165481e-06 6.305562142e-06 3.421864454e-06 -1.005192658e-06 -1.376595671e-07 -8.44861316e-07 -1.360743536e-07 0.0005931406552 -0.0007348078634 -0.0009340917559 -0.0002658715233 -0.0006821475227 -0.001346295534 -3.58066834e-05 -0.0003188647731 -8.95021377e-05 1.026226725e-05 -1.861046051e-05 0.0002265515274 2.329036192e-05 -1.325053945e-05 -2.1595616e-05 -3.904389007e-06 -9.845371241e-06 -6.404300822e-06 6.111265635e-07 -5.797995107e-07 2.170216552e-05 -6.996202935e-07 -1.496684778e-06 -2.707842284e-06 5.798927877e-06 -1.534381003e-06 -1.393062768e-05 2.230545369e-06 -7.63281551e-07 3.742971248e-07 -1.820541195e-07 3.33594342e-07 -2.887455058e-07 6.701196179e-07 -1.207920821e-07 -1.232317595e-06 6.966370005e-07 -2.885737443e-07 6.90040523e-08 -6.056732101e-12 6.354048289e-06 -8.527472941e-06 0.01809287309 -0.01954377091 -6.993270615e-13 1.824794429e-06 0.0005915086743 -0.004072310844 0.002380369603 1.243861525e-15 -4.042721055e-06 6.848157009e-05 0.0006252779222 -0.001148129697 3.204415765e-14 -8.271467099e-07 -0.0002006411657 0.0001984150138 0.0003460091743 2.468627319e-16 -2.35981457e-07 6.762869157e-05 -7.978510976e-05 8.220061087e-05 -1.335257943e-18 -6.322912967e-08 9.501663098e-06 9.066199215e-07 -7.37265764e-05 -1.007109069e-15 3.019288353e-07 -3.176332468e-06 2.584701712e-06 6.074537417e-06 2.369460892e-16 -9.26176676e-10 1.378916906e-06 -6.521096463e-07 -4.17614161e-06 5.779590598e-17 -1.014109775e-08 7.094019986e-06 -3.15074662e-06 -9.206268458e-06 5.278602775e-17 -2.151714844e-08 -9.482802506e-08 9.725819285e-07 -1.019645929e-06 2.55536243e-18 -3.102622423e-10 -6.742846567e-07 -3.357646359e-06 3.076206274e-06 3.041473194e-17 -8.343859942e-10 1.865087276e-06 -1.97174977e-06 7.766128536e-07 -5.468784818e-16 3.286434379e-10 -8.944993936e-09 1.021764493e-06 -1.064351078e-06 -0.0003841648298 -0.0009741402683 0.0004132469821 2.569324766e-06 4.685441148e-06 9.068045643e-06 -1.707847028e-06 2.574118334e-07 -3.366737323e-08 -3.968573049e-07 -1.181649632e-06 -2.352664229e-08 -1.52629651e-07 -5.654364614e-07 7.407190227e-05 -0.0003655093874 -0.001858275956 0.0007187327882 -0.0009294118915 6.801673684e-06 -4.476324517e-06 9.995966507e-05 -7.325929009e-05 3.479089795e-05 0.0001937150308 7.53137928e-08 1.835941261e-07 3.472650395e-06 -7.571909201e-06 2.427336286e-05 2.439016393e-05 -2.138427588e-06 8.039776119e-06 -1.876514189e-05 -2.893304242e-07 1.680009871e-07 8.339088084e-07 1.351013552e-07 6.375791833e-09 -2.751574983e-07 -5.916662258e-07 2.589126868e-06 -3.650051093e-06 -3.991319014e-07 1.974210441e-06 -2.280318754e-06 9.077592255e-08 -9.820751611e-07 1.016777235e-06 -8.166796506e-08 3.629986235e-07 -4.535789697e-07 -3.33013975e-13 -3.551774938e-07 8.723189149e-05 0.005864147954 -0.007928171179 5.25355625e-14 7.155752722e-06 0.0008181705917 -0.00390449833 0.002050983032 2.184899137e-16 1.302182925e-06 -1.762264749e-05 -3.606668815e-05 -0.0001202208329 -4.204562632e-16 -4.244914994e-07 -4.797530207e-05 1.985953107e-05 0.0002888831538 7.663497673e-16 3.387564963e-07 -1.050087838e-05 2.071551589e-05 2.489909723e-06 -4.734957431e-17 -5.045429403e-09 8.3758148e-06 -1.033370171e-05 2.8312941e-05 -2.124714277e-17 -1.424038379e-09 3.793484346e-06 -2.710276589e-06 -6.023490262e-06 2.366651293e-17 7.598958707e-09 -7.479667504e-06 6.168842827e-06 -3.730450156e-07 4.110259035e-19 5.460598081e-10 -3.56249825e-07 5.71343093e-07 -4.068486543e-07 -1.164657871e-18 -1.086153656e-10 -6.535893583e-07 5.217801081e-06 -7.315343784e-06 -1.041054096e-16 -5.091993968e-10 -7.655048624e-08 1.105889382e-06 -1.134296932e-06 1.653687567e-18 2.985121848e-10 -8.15760668e-08 1.379765093e-06 -1.5173674e-06 -2.191969003e-19 1.287231782e-10 -1.742243183e-07 3.795633303e-06 -4.013578613e-06 --0.1250540102 -0.1268123657 -0.2129037573 -0.07644593472 -0.003130702472 0.001355052364 0.002507806087 0.002605300545 -7.949515096e-05 -0.0007901987423 -3.190706963e-05 6.295494431e-05 -9.954238956e-06 -0.1090529128 -0.1112732007 -0.05112345346 -0.07823738793 -0.07670109025 0.04638809892 -0.01228097154 -0.01289346987 0.02782177854 0.003093770263 0.004022103164 -0.0623499496 6.977635567e-06 1.415849576e-05 0.005154649211 -0.0003151246529 -0.000206411323 0.002809834271 0.0002465935485 0.0002787859581 -0.003306580559 -1.33520255e-05 -8.106838303e-06 0.001093041754 -0.000104150599 -7.858627795e-05 -7.535512428e-05 5.470860715e-05 7.253385043e-05 -0.0003674343915 6.512118337e-06 1.105751348e-05 0.0003656408837 -8.750237256e-06 -1.164756425e-05 -8.556801437e-05 1.29057339e-05 1.547016906e-05 -1.049372096e-05 2.819989421e-12 -1.344986581e-06 0.09726208063 0.1031336688 0.1091572021 9.48692905e-14 7.189544464e-06 -0.04242344528 -0.05780337166 -0.05660042437 1.574483253e-15 3.498868987e-06 -0.03489758707 -0.032367762 0.05543820129 4.588593965e-15 -3.336006178e-05 0.0006514534785 0.00258054276 0.008392252052 -1.343051768e-15 1.535420175e-06 -0.0008933214361 -0.001393930982 -0.01660948187 4.14704848e-17 6.2702516e-07 -0.002260222982 -0.0003355563338 -0.0001550994552 -1.382957412e-17 -5.052340872e-09 0.0001740760195 0.0002151397687 0.003148383599 1.159061601e-17 2.781927236e-08 -0.0002112570032 -0.0002285024611 -0.0005423279558 -1.453181618e-17 7.054563098e-09 -0.0008810922847 -5.852761509e-05 6.424668289e-05 -1.782138122e-17 3.36326884e-08 7.996884018e-05 0.0001150378777 0.0005648313236 -7.663521014e-17 -1.212763176e-08 6.49872602e-05 -2.182705178e-05 -2.352634055e-05 9.009815994e-19 -2.269878674e-09 -0.0001592477493 2.610387473e-05 2.513061261e-05 -1.463512432e-18 4.444266999e-09 2.976561312e-05 5.907801795e-05 7.521508646e-05 -0.1238410012 0.1159786129 0.2089244237 0.0843868982 0.004945907769 -0.0005989260057 -0.00177315732 -0.002924409859 -0.0002276499792 0.0007678802626 5.073795214e-05 -1.289793938e-05 1.325470172e-05 0.1087946394 0.1109355615 0.04753012355 0.08298349546 0.07818058533 -0.03545418891 0.01506464399 0.01595716724 -0.0420361857 -0.003130550436 -0.004117817948 0.05844712323 0.0001339974787 0.0001192894527 0.0004271789295 -0.001809248333 -0.0009271713733 0.0005849387629 -0.0002519429079 -0.0002722501098 0.001873315472 4.608383486e-05 4.074485084e-05 -0.0005301033066 0.0003939695154 7.721121844e-05 5.728360711e-05 -5.773419043e-05 -7.525082449e-05 2.382190556e-05 -1.272199282e-05 -2.847584115e-06 -0.0002613734092 5.06195825e-06 2.488002336e-06 0.0001575231099 -1.327726711e-05 -1.582523285e-05 -5.496260952e-05 -1.756932983e-12 4.008481243e-06 -0.1032522663 -0.1068628901 -0.1215750152 -1.092780107e-13 -2.146527457e-06 0.0491220057 0.05004352147 0.05136383367 -1.34428489e-15 -3.033048947e-06 -0.0528772182 0.03654277995 0.03690104619 5.689329114e-14 1.732727938e-05 0.001011005286 -0.0008726082777 -0.0181646343 9.998230173e-17 5.143507294e-07 0.001310169901 0.001993926067 0.01704485939 -3.904060991e-17 -1.971088228e-06 0.002165857799 0.002646335454 -5.080398079e-05 -2.824155459e-16 2.103551046e-08 -9.226128468e-05 -0.0001487535195 -0.003977151302 4.317234851e-17 -3.037806412e-08 0.0002732392769 0.0002821838952 0.000387985224 2.068134158e-17 -4.924624651e-08 6.916810184e-05 0.000123750784 0.0008535314361 1.412625873e-17 -3.335078298e-08 -6.528667989e-05 -9.012559582e-05 -0.0006623579547 6.15133395e-17 5.995515487e-10 -3.786532233e-05 2.932955185e-05 3.057159681e-05 6.249140907e-18 1.325104049e-09 -3.502045476e-05 -3.614371355e-05 0.0001666834863 -8.297863835e-20 -6.026850217e-09 -4.252445923e-05 -9.949611855e-05 -2.660526667e-05 --0.01071845062 0.01094181196 0.01766308793 0.003204626962 -9.393088453e-05 0.0002444747582 0.0004745209709 0.0002790916183 5.971831702e-05 -5.043078378e-06 -2.225910396e-05 -1.344673116e-05 3.178111448e-06 0.09545876027 -0.061085753 -0.06091518258 -0.1153091628 -0.1214391795 0.164556403 -0.06568392971 -0.07547329932 0.1266815536 -0.01247137533 -0.0170741429 0.04554140357 -0.0002672953524 6.686325142e-05 0.01578901983 0.0005158515703 0.002471779433 0.002647166234 -0.002339361572 0.002078441766 0.001639715468 -0.001575478161 0.0001541830807 -7.162655701e-05 -0.0008528124124 -0.0005104601475 -0.0003310189266 -8.162957977e-05 -0.0001232175534 4.719427408e-05 -4.298179105e-05 -2.462613398e-05 0.0002670453659 9.344627998e-06 1.141729274e-05 3.125184562e-05 4.765521836e-05 3.866192456e-05 2.917947876e-05 -9.175621593e-19 -7.758423892e-07 -0.07728875197 0.04467858019 0.0437348487 2.307931725e-18 -7.198544192e-07 -0.06016839167 0.02262788843 0.01788886878 1.142182375e-17 -2.721971378e-07 -0.003100378341 -0.001078288497 -0.009465919388 -2.986181392e-19 -2.925435528e-08 -0.0008907693851 -0.001660575046 0.0050708261 5.48291609e-20 5.144388549e-09 0.0001642059526 0.0003051806524 0.001248629499 8.055883521e-20 -1.269981731e-08 -0.001042109716 3.331901712e-05 0.0001377626146 1.630781305e-20 1.052689336e-09 -9.877926778e-06 -4.799566065e-05 -7.856336805e-05 6.411667245e-21 -5.113386635e-10 1.087255892e-06 -1.578690658e-05 0.000128666441 -2.138373112e-20 -1.496073274e-09 -5.00028161e-05 3.10800028e-05 1.370628069e-05 6.300937885e-22 -2.425582796e-10 2.049980798e-07 4.783326525e-06 1.383640802e-05 -6.004888024e-21 -1.473132637e-10 -3.275995631e-06 -5.179318982e-06 -1.522730363e-05 -3.721039087e-21 -3.246487932e-10 -1.747137628e-05 4.371085744e-06 1.665174811e-06 -1.609380941e-21 -2.813219487e-12 1.215365024e-06 2.332657692e-06 2.997433424e-06 -0.1411916509 0.0843119338 0.2051738492 0.1384945653 0.02605500459 0.003295616567 0.0006017031218 -0.002457085734 -0.001170797631 -0.000370272811 0.000123431325 0.0002555009455 -3.041557682e-05 0.1302531499 0.1314893328 0.03651354177 0.123208462 0.1317292687 0.02062258783 0.03863147447 0.03928153583 -0.108245291 -0.00171436166 -0.002416196685 0.01576596887 0.001425731123 0.001572646568 0.02618723957 0.003876934954 0.001825748423 0.002290904486 -0.0001396051424 -0.0001453332174 -0.006009287865 0.0003020289139 0.0003093902324 -6.188249929e-06 -0.0001235208362 -0.0001282274558 0.002511985599 -2.936046725e-05 -3.347004378e-05 -0.00103621132 1.317596929e-05 3.746526685e-05 3.812470385e-05 -3.207600655e-05 -3.266101719e-05 0.0001887124862 -2.878593681e-06 -4.562442289e-06 -0.0002011659234 -1.372936612e-13 4.457626934e-08 -0.1547231841 -0.1748438681 -0.175089481 -1.78471233e-14 -7.853622964e-07 0.07136431022 0.01931406286 0.01890009698 4.545993302e-17 -6.04376097e-06 -0.0165710307 0.04801824011 0.04935511981 1.015978913e-14 -7.080342456e-07 0.01048891267 0.01134962568 -0.05913415003 -2.408284816e-16 2.150921557e-07 0.006785121763 0.007504496829 0.003367855696 -1.102339502e-18 -7.773390599e-08 -0.001101561664 -0.001259022055 0.01545394995 -1.483411753e-17 2.093205245e-06 3.838585926e-06 7.636338228e-07 -0.0006334247002 -2.013598389e-16 -2.19339833e-09 -0.000965506357 0.000505590822 0.0005095362688 2.873760307e-17 -1.093302828e-08 -0.0002710263767 -0.0003009720246 0.0002253113062 -2.674704006e-18 1.606933854e-08 6.290461127e-05 3.845726438e-05 4.162803269e-05 7.882871849e-19 1.262211374e-10 0.0002633760489 -1.064066115e-05 -1.084782505e-05 1.876646725e-17 -8.715942508e-11 -5.702673195e-05 -5.740204021e-05 -0.0001921817528 -3.429642968e-17 -9.163821698e-11 -3.678147546e-05 2.088750783e-06 2.233315446e-06 --0.04615760921 -0.06020523165 -0.07912514463 -0.02306232958 -0.000437582793 0.001261666907 0.001367524318 0.000586723471 -0.0001993295275 -0.0002458003026 -1.746996467e-05 5.570354074e-05 1.412583924e-06 -0.04210454477 -0.04214383298 -0.02368920146 -0.0260960814 -0.03403464477 0.01847787365 -0.002863592378 -0.003020104032 -0.0003226964929 0.001083084552 0.0009248024438 -0.02262317611 8.560109354e-05 8.145598979e-05 0.005238182589 -0.0001394900467 -0.0002806032807 0.001083285635 9.280756904e-05 8.770442137e-05 -0.001856818242 1.454320091e-05 1.075579939e-05 0.0007544700805 6.517308218e-05 -2.448862077e-05 -3.298758322e-05 2.579797621e-05 1.949938421e-05 -0.000313114865 1.090309951e-05 6.422354653e-06 0.0001666374691 -4.119252615e-06 -3.03496016e-06 9.877178637e-06 5.433208164e-06 4.246140887e-06 -3.938009025e-05 -4.010652571e-14 1.295602996e-05 0.03346806562 0.06196012619 -0.005190550878 -1.817954156e-14 1.555395163e-05 -0.007915555654 -0.02971475605 -0.02997647915 -1.348628898e-15 -6.916357416e-06 -0.01013075098 -0.01399886994 0.02270942639 3.645544663e-16 -3.266059827e-06 0.001331082094 0.001462859879 -0.002234476175 -3.836179112e-16 3.160701543e-06 -0.0001490865117 -0.0001893235756 -0.004564671688 -6.218813761e-18 -8.781887228e-08 0.0006090821385 -8.221849486e-05 -0.0002776063235 2.358175861e-18 -4.265271107e-09 0.0001146057457 0.0001216481503 0.0002659999268 4.047701191e-19 -9.906801106e-08 -4.040083474e-05 -7.373340146e-05 -5.85459883e-05 -8.804222435e-18 -5.356792722e-08 -0.0001371772824 5.324466195e-06 -2.806489051e-05 -5.126310739e-18 -2.185514143e-08 6.185584707e-05 4.347512653e-05 1.554112432e-05 2.16834105e-17 -2.567883702e-09 6.829121573e-05 3.858565562e-06 -3.748262974e-06 -3.056703715e-18 7.823670374e-10 -3.421667786e-05 6.890038445e-06 -1.569272014e-07 -2.74673566e-18 -3.441687301e-09 2.28665914e-05 9.542286747e-06 5.965719199e-06 --0.04933546276 -0.05947896104 -0.08458397237 -0.03111354371 -0.001362101112 0.0006602415118 0.0009912332927 0.001090340038 -3.020954548e-05 -0.0003315992192 -1.948762349e-05 2.603845382e-05 -5.149944924e-06 -0.04591349947 -0.04603438697 -0.02398812351 -0.03243071497 -0.0417283801 0.01402573707 -0.005086317835 -0.005502161707 0.01039883281 0.001284782577 0.001254841473 -0.02367084391 1.541895568e-05 5.469310556e-06 0.002105522201 -3.056438203e-07 -7.447572174e-05 0.00131255123 0.0001076398815 0.0001180891956 -0.001406560495 -5.40877247e-06 -8.962229609e-06 0.0004560969586 -5.099175179e-05 -1.659712994e-05 -3.148594538e-05 3.617323939e-05 2.945279238e-05 -0.0001825467228 5.086138234e-06 4.408519214e-06 0.0001482837721 -4.552274507e-06 -4.689784331e-06 -3.451697096e-05 8.162140861e-06 6.288582009e-06 -9.004141795e-06 -1.851225676e-12 1.397854398e-05 0.04201819841 0.06955113105 0.003020201595 -8.385311634e-14 2.153865438e-05 -0.01321872451 -0.02998662801 -0.02928370799 -6.617314962e-15 -1.531476028e-05 -0.01286153793 -0.01587635224 0.02089460592 5.010296858e-14 -2.761623378e-05 0.0004272218923 0.0007149478026 0.005452043008 -8.453073077e-16 1.503399563e-06 -0.0002844036352 -0.0005479491902 -0.006581993439 -9.430734146e-17 -1.683246852e-06 -0.0009517854183 -2.246278879e-06 -9.665024556e-05 -2.307436188e-18 -9.253775133e-09 7.106457596e-05 8.10903485e-05 0.001358663696 -1.122424092e-17 -6.260268341e-08 -9.378081756e-05 -0.0001175675055 -0.0002187503694 -5.232124422e-17 -9.84473531e-08 -0.0003569752225 -2.013934241e-05 1.215052142e-05 -2.120566303e-17 -5.721772921e-09 5.383566195e-05 4.193454194e-05 0.0001997039511 3.516286862e-17 -3.068934667e-08 2.631131843e-05 -6.167836321e-06 -1.249510225e-05 -1.559024179e-17 -1.984219424e-09 -6.593545165e-05 1.318755817e-05 7.010492618e-06 -1.394012824e-17 -1.748426883e-09 2.65916109e-05 1.57297483e-05 2.258984746e-05 --0.0490168533 -0.0575985298 -0.08381128785 -0.03452112762 -0.002142376139 0.0003831251792 0.0006775304209 0.001232864897 9.864000259e-05 -0.0003284868402 -2.64772734e-05 5.397789034e-06 -6.887631325e-06 -0.0456588757 -0.04643808236 -0.02332243383 -0.03446070675 -0.0441922733 0.009617602325 -0.006295982422 -0.006975586557 0.01585417369 0.001317919853 0.001297311524 -0.02195562011 -3.605499313e-05 -5.023879896e-05 -0.0001511960383 0.0008875645236 0.0005435256259 -0.0002393828591 0.0001086130131 0.0001148731433 -0.0008106556148 -1.919420653e-05 -2.109421389e-05 0.0002179503991 -0.0001785103103 -9.882331434e-06 -2.433696286e-05 3.906139032e-05 3.0799807e-05 -4.571988803e-05 4.519275381e-06 1.331390339e-06 0.0001105359841 -1.488617165e-06 -1.095189301e-06 -6.665539928e-05 9.093229625e-06 6.481564625e-06 1.705977122e-05 -9.390892176e-13 2.087797088e-05 0.04442645446 0.07537314649 0.003109605707 -6.618247586e-14 1.985434826e-05 -0.01526238081 -0.02840939324 -0.02719397689 -7.377090179e-15 -2.22877007e-05 0.02081644978 -0.0134401407 -0.01928793794 4.537265283e-14 -3.778843019e-05 -0.0001390170315 -2.134393106e-05 0.009674295611 1.389669741e-16 -4.2832387e-07 -0.0004102623088 -0.0008257808796 -0.006689987106 -1.033922247e-16 -8.975679781e-07 -0.0008719800932 -0.001070501384 -1.362720897e-05 1.131677799e-16 -4.216757778e-08 3.990776619e-05 5.104214878e-05 0.001734127176 4.680647597e-19 -7.148944213e-08 -0.0001225736141 -0.0001423510688 -0.0001599957114 -6.289208671e-17 -1.156600241e-07 3.021230075e-05 -8.831611886e-05 -0.0003902448928 -2.076357677e-17 2.530524594e-09 4.736828308e-05 3.200756444e-05 0.0002448195759 1.373962403e-17 -4.065207293e-08 1.548138912e-05 -8.929534699e-06 -1.663334593e-05 -1.666844941e-17 -3.940442245e-09 1.69039253e-05 1.093414292e-05 -6.892261457e-05 -1.501269132e-17 -2.635543162e-10 3.240000723e-05 2.716465302e-05 7.994603169e-06 -0.0007997406674 0.001651144474 0.0006806214651 7.067415794e-05 5.82406205e-07 1.431752309e-05 1.12690231e-05 2.278633793e-06 -4.141147868e-07 -8.910756391e-07 -2.151201875e-07 -1.547406636e-07 4.242804756e-08 0.02998039676 -0.003721535563 -0.02832362778 -0.02399777629 -0.002359056574 0.02950529001 -0.005983033116 -0.0007326513665 0.00995170173 -0.0002828527561 -4.051627762e-05 0.00146727481 -2.420411108e-06 -3.280749248e-07 0.0003529182621 -0.0002932724609 2.321779209e-05 0.0002883729562 -0.0001013567892 3.743905767e-06 3.183407063e-05 -3.327911582e-05 2.264947048e-06 -1.544153908e-06 -0.0001259973563 0.0001040148505 3.473973813e-06 2.179230203e-06 3.902886369e-07 1.743093864e-08 8.04634225e-07 3.911527785e-07 4.056226697e-06 -6.748163693e-08 -2.582656653e-06 3.491356918e-06 3.074134166e-06 -3.374550879e-07 -2.513727673e-06 -1.751981082e-16 -5.731445356e-05 -0.004353425645 0.0004055984743 0.003170670747 3.845944153e-16 -5.270687484e-05 -0.001818500776 0.000354355579 0.0006051595254 9.303357884e-18 -1.66970103e-05 0.00192294201 0.0001987557081 -0.002438887337 -7.100577671e-18 -3.430366999e-07 7.704177024e-05 1.789474791e-05 -0.0001022836032 5.85593994e-19 -4.147717158e-08 -1.118054313e-06 -2.95618153e-05 4.19619705e-05 2.572171044e-18 -2.545694929e-07 -1.268320195e-05 -5.814101593e-06 -1.073106571e-06 3.266349709e-20 -1.910773484e-09 1.081736293e-06 4.349881476e-07 -5.981801893e-06 3.999219686e-20 -3.568052599e-09 -6.0388292e-08 1.934158029e-07 4.860084622e-07 3.449266657e-20 -4.40605761e-09 -8.938137973e-07 2.404565873e-08 3.220580795e-08 1.116148334e-21 -3.613989933e-10 -4.251500538e-09 6.619218736e-09 -2.458841636e-08 4.497213808e-21 -4.780250767e-09 6.084391895e-07 1.205076522e-07 -1.197201255e-06 -1.791364727e-20 -3.51853104e-09 -2.723472809e-07 2.40453385e-09 -4.195461056e-08 -1.503046216e-20 -2.050945592e-09 -1.181124108e-08 -7.531932234e-07 8.727665228e-07 -0.00780054048 -0.00531682413 0.007793324578 0.003003158698 0.0004493253224 7.356225089e-05 -6.177710073e-05 -6.042349769e-05 -2.622789246e-05 -1.706412193e-05 1.012733729e-06 3.279909411e-06 -9.984863115e-08 -0.04003476399 0.06421336164 -0.001880227783 0.06027073137 -0.02939414926 -0.02459744573 0.0007507524808 -0.0005905156336 -0.00217186596 0.0001713849596 -0.0003068738699 0.001446365137 0.0001730742079 -2.170683195e-05 0.0005085968897 0.0003152679482 0.0002903263649 -0.0006698972824 -4.744223129e-06 -1.690029353e-05 -0.0002052886868 7.456746895e-05 -3.719613931e-05 -2.384258011e-05 2.969674032e-05 -1.011403973e-06 4.492348643e-05 1.529304986e-05 -1.469847098e-05 -4.808391224e-05 -5.31197161e-06 -4.77773251e-06 -5.419206835e-06 -2.482390593e-06 2.157296285e-06 2.543930253e-08 6.713989393e-06 2.94632833e-06 -8.316791295e-06 9.137650405e-12 6.702676851e-06 -0.006799788937 0.02038267959 -0.02617724926 1.508169793e-13 5.089499228e-06 0.005955388924 0.04741490076 -0.04038874898 -2.759676771e-15 -3.328173318e-05 -0.0003097724247 0.008622751546 -0.008614798627 -3.48059339e-15 -8.005132291e-06 0.0002879334174 -0.0002272594201 -0.0005909788698 -3.250719027e-16 -6.360888651e-07 0.0009723355201 -0.0007274727154 0.0001740340251 1.459495473e-17 -7.530959119e-07 7.496468899e-05 -0.0002469300142 0.0001269598897 -2.265631839e-16 -1.567320683e-07 3.251746602e-06 -1.019146943e-05 -1.952854304e-05 -2.198197273e-15 -6.610007261e-09 -2.67486779e-05 9.876888395e-05 -6.976067231e-06 -3.777602352e-18 -2.914173595e-09 4.721769796e-05 -5.453181485e-05 -2.162530904e-05 -1.915542207e-17 -2.985500747e-08 1.939742652e-06 1.754637139e-05 -4.117093783e-05 2.405188516e-16 3.095895791e-10 3.979675776e-06 -1.237729688e-06 -5.265161328e-06 1.399559975e-16 6.563201722e-10 1.060953636e-06 1.665035307e-06 -2.581689668e-06 5.33091272e-16 4.434523824e-10 -7.888030214e-07 1.149896938e-05 -1.826832522e-05 -0.01713196725 -0.02539244665 0.006680163896 0.002367614667 0.0001010369664 -0.0001426832559 8.215666825e-05 6.48004306e-05 -2.428531499e-06 -2.809126667e-05 -7.588403564e-06 -1.127912909e-06 -4.870681928e-07 0.1051449918 0.0002623314396 -0.02595267216 0.0002107488735 0.02499530869 0.01229610935 -2.666983218e-07 -4.182753212e-05 -0.002716253712 1.070232623e-05 0.001329985581 0.003182595677 -2.183750355e-05 -3.689851492e-10 -0.0004091658294 -0.000246768614 -1.943264874e-06 0.0003663708277 1.224970133e-05 3.076248174e-07 -9.400042088e-06 4.013989772e-08 4.800082322e-05 4.681519185e-05 -1.750694751e-05 3.33604826e-06 8.67146894e-10 -2.681549616e-05 -1.6804931e-07 -4.463712834e-05 -8.162813401e-07 -6.971008494e-08 -1.227595676e-05 4.046442266e-06 -1.059200913e-07 -2.569515283e-06 5.039507124e-07 -7.323205439e-09 -1.264512898e-05 2.459993544e-16 -1.436840723e-07 -0.07067505534 0.05077664317 0.0002985557142 -1.035498914e-14 1.232675581e-05 0.002315944246 0.0004646570533 0.06812990632 -6.384682253e-17 9.944104813e-06 1.071404345e-05 0.005820835895 -0.001934885679 6.971137826e-18 -1.319600059e-07 1.054842683e-05 0.001042500582 0.0005522732669 -6.771927781e-17 2.565098224e-06 -0.0002049132581 -1.235444558e-06 0.0002689171737 -1.709168222e-18 1.53432947e-09 9.111177804e-05 -0.000364670481 -5.000031501e-06 1.080875997e-17 -1.011343119e-08 3.747678247e-06 5.757566708e-05 5.906973536e-05 8.157391195e-19 -4.351087749e-08 1.520457432e-06 4.409957133e-05 2.483723681e-05 1.393468915e-20 6.646042314e-10 -2.192733578e-05 -6.819301107e-05 -1.528270541e-07 -7.961175114e-21 6.03484899e-10 -5.237796122e-05 -4.851848283e-07 -3.316617038e-05 2.159930163e-18 -1.593500044e-10 -5.601384725e-06 9.043516916e-06 3.172701447e-07 1.009876358e-19 -1.855724379e-09 -5.099685554e-06 1.046419131e-05 3.366024675e-07 2.268206367e-20 -2.335327529e-09 -2.162527322e-05 -2.363290634e-07 -6.087956676e-06 --0.007951417174 0.01162898931 -0.002422787134 -0.001457206784 -1.081627248e-05 3.465637553e-05 -1.73778962e-05 -3.712245155e-05 -5.90686461e-07 1.574043427e-05 1.645497741e-06 -8.851846967e-09 5.950052392e-07 -0.02346646076 -0.03211628811 0.01861822876 -0.001684973495 -0.01062033423 -0.009227773918 -2.671152157e-05 -0.0001304519428 0.001793256415 -6.870171831e-05 -0.0004975504863 -0.001516657478 3.825442854e-05 -5.687000615e-06 0.0001233538917 0.0001219741652 -7.703134201e-06 -0.000155857051 -1.135975465e-05 -9.225634185e-06 -2.844465828e-05 -1.151151137e-06 -2.095402345e-05 -1.39108712e-05 1.405623587e-05 5.663377106e-06 -2.442561419e-06 1.251660432e-05 -2.744474008e-06 2.192899304e-05 -1.92504748e-06 -3.188450951e-06 2.315255131e-06 -9.393521596e-07 -2.686076879e-06 2.116256559e-06 3.181252011e-06 -1.697330035e-06 7.737980319e-06 -3.414742959e-13 -2.306727611e-07 0.03786582116 -0.001261958918 -0.02307490903 7.081736762e-14 -3.139340509e-07 0.0003491048802 -0.004897314961 -0.02807587868 -7.170062667e-16 -9.52360104e-06 8.080564307e-05 -0.003309424682 -0.0001439216082 -2.049796482e-14 -5.41281596e-06 7.056083896e-06 -0.0002337349802 0.0001385570151 3.734446953e-16 -4.000115211e-07 0.000141594532 -5.651095043e-06 -0.0002830259107 2.684157754e-17 -7.587078105e-07 8.537154876e-06 9.932006188e-05 9.729035259e-06 -7.099329604e-18 -2.216614214e-09 8.467443424e-07 -2.774091073e-05 -3.451651084e-05 -8.851738354e-17 1.976061052e-08 -1.158243019e-05 -1.48212523e-05 1.76103459e-06 -9.259917431e-17 -2.7973893e-08 3.403482863e-05 2.22155917e-05 -3.301287284e-06 -2.981896083e-17 -6.21206152e-09 1.607117814e-05 -1.799339515e-06 1.051351116e-05 -8.28683859e-17 -2.478277267e-09 1.241732248e-06 -1.106859696e-06 -5.754135941e-06 -8.213336774e-17 -1.339663823e-09 3.619082977e-06 1.966257546e-06 -5.115640918e-06 -3.342180358e-17 -1.853986989e-09 1.097703216e-05 -5.34170597e-07 3.15692983e-07 --0.007923874883 0.01151770907 -0.002079371511 -0.001631365138 -9.323058964e-07 1.833714431e-05 -9.104313272e-06 -3.703922777e-05 -2.204989324e-06 1.671081644e-05 8.846342134e-07 -1.358431943e-08 8.728931594e-07 -0.03342885858 -0.0228045677 0.01993479374 -0.001117095443 -0.01093019671 -0.01137710128 1.642145972e-05 -0.0003125975427 0.001946408032 -3.430634896e-05 -0.0004857225265 -0.00150200233 4.606672909e-05 -4.13377682e-06 4.833948318e-05 4.029758737e-05 -4.770535318e-05 -1.509163338e-05 -1.524891031e-05 -8.48340376e-06 -4.62313467e-05 -7.324486055e-07 -2.01727507e-05 -1.024226915e-05 2.094099061e-05 4.661637522e-06 -2.13435685e-06 1.024968711e-05 -1.667182203e-06 2.090622115e-05 -4.961946776e-06 -1.515958726e-06 9.911479294e-07 -1.621873348e-06 -2.157244443e-06 2.734308414e-06 3.422183368e-06 -9.857220569e-07 7.877995043e-06 -2.745811297e-13 -1.814172841e-07 0.03857253687 -0.00916191468 -0.01399875858 7.314335417e-14 -2.235477375e-06 0.0006489886273 -0.002742425248 -0.0302657603 -4.552880357e-16 -1.182520383e-05 0.0008604689547 1.286371336e-05 -0.005070923791 -2.246024373e-14 -5.44005622e-06 1.219765685e-05 -0.0001364012123 0.0002991670808 -2.974050856e-16 -4.241003316e-08 0.0001775059922 -4.335199793e-06 -0.0003574914641 1.859013576e-17 -6.645815927e-07 8.438953268e-05 1.410094738e-05 5.460130125e-06 -2.121386286e-17 -1.434738174e-09 1.516440846e-07 -2.210438568e-05 -3.41603339e-05 -2.18565477e-16 1.278371859e-08 -8.544719434e-06 -1.326397581e-05 1.962815574e-07 -6.665583266e-17 -2.550604199e-08 5.799372037e-05 -3.437945546e-07 -1.077737339e-06 -2.062227499e-17 -1.992243808e-09 1.151113165e-05 -1.125562453e-06 7.486966896e-06 -7.924878502e-17 -7.974108351e-10 1.04210155e-06 -2.747534903e-06 -4.489993644e-06 -6.428674668e-17 -5.377353103e-10 9.885091384e-07 -3.035601261e-06 4.982560886e-06 -2.506130356e-17 -8.405189472e-10 1.067378393e-05 -5.082052101e-07 -8.948682875e-07 -0.0001153080321 0.0002380649475 9.813321363e-05 1.018992582e-05 8.39723627e-08 2.064325949e-06 1.624787797e-06 3.285374738e-07 -5.970780666e-08 -1.284768708e-07 -3.101641132e-08 -2.231078415e-08 6.117351374e-09 -0.01571470194 0.02035954606 -0.005345924204 -0.00285192844 0.0233434488 -0.02085464308 -0.0009058421111 0.005283345245 -0.004323579411 -5.232379103e-05 0.0002520941997 -6.354318772e-05 -4.317122308e-06 1.835691954e-07 5.658651308e-05 0.0002975040621 -0.0003289847832 3.025034608e-05 1.565223888e-05 -3.084394459e-05 4.840538663e-06 1.214454895e-06 -4.980630227e-06 -7.126545666e-07 -1.521655332e-06 2.171619272e-05 -2.380880382e-05 4.181107053e-07 -2.012345225e-06 2.131453636e-06 1.548863761e-06 -2.029181674e-07 -8.287019058e-07 8.638765068e-07 -2.306827642e-07 -5.204911787e-07 -2.190751097e-06 2.656419684e-06 -3.786141424e-07 3.092823335e-16 -3.194044265e-05 0.0030574493 -0.003566982347 0.0003885025324 -6.802761431e-16 -2.936639304e-05 0.003407069282 -0.003358311013 6.241727725e-05 -1.629041688e-17 -9.298713969e-06 0.000314740228 -0.001322200303 0.001188667048 1.252634696e-17 -1.902289197e-07 1.372901522e-05 -0.0001002392388 0.0001614761659 -1.033269039e-18 -2.334304162e-08 6.644858775e-06 -4.559614824e-06 8.410580759e-06 -4.539746006e-18 -1.417360753e-07 2.881230597e-07 1.795953283e-06 -3.732745207e-06 -5.715647809e-20 -1.054589455e-09 1.79769864e-07 -3.111265391e-06 4.099577651e-06 -7.012341278e-20 -1.977582209e-09 -2.076663224e-08 -5.795573718e-07 2.13069656e-06 -6.089161158e-20 -2.442630773e-09 -5.582166674e-08 -1.020955383e-07 9.241964837e-09 -1.970741232e-21 -1.996377553e-10 6.097208985e-10 1.638370913e-08 -1.774708747e-09 -7.810415984e-21 -2.659261916e-09 1.104136155e-07 -8.027773741e-07 7.945166653e-07 3.160260248e-20 -1.957799945e-09 -1.620650471e-09 -3.072511283e-09 -3.449424776e-08 2.655534637e-20 -1.143597495e-09 1.252103717e-07 -1.029900182e-07 -1.216144282e-08 --0.0007041107372 0.002237155318 -0.0001314331354 0.0004561050542 9.551635978e-05 4.028543081e-06 1.760673985e-05 -3.77816063e-06 -1.740279752e-06 2.409080446e-06 4.323174717e-07 8.540510981e-07 -3.623572076e-07 0.02392323871 -0.02695088153 0.0005583987629 -0.002541555707 -0.01093321549 0.01538655045 -0.0004658752945 0.001125858263 -0.0002557859919 -5.686792702e-05 5.914436228e-05 -0.0001729177054 -7.483244265e-05 5.889918836e-05 9.328774469e-05 -0.0003924914987 0.0004661219717 5.464260958e-06 -6.055136739e-06 1.028622436e-05 9.64184699e-06 -4.684766841e-06 -3.268011585e-06 8.21387573e-06 -2.457431842e-05 1.353911004e-05 1.003917642e-05 -7.732799506e-06 8.225843043e-06 3.991847366e-06 1.583994007e-06 3.288468456e-06 -2.315180168e-07 2.158468719e-08 -9.146520203e-07 9.879201855e-07 -7.105074724e-06 4.127081167e-06 9.96228315e-07 7.081681108e-12 -7.655849434e-06 -0.0002247032149 -0.01058984499 0.009078017354 5.486565644e-13 -1.491282765e-06 -0.0008184607373 -0.0133174185 0.0131639112 -1.011348693e-14 1.051330549e-05 -3.495256602e-05 -0.003339180668 0.004492140527 -4.531095656e-14 8.211480241e-07 4.732708964e-05 8.645804773e-05 -0.0003489317158 -1.382646476e-15 4.857108775e-07 -0.0002782830111 0.0003190213426 1.494737676e-05 1.458674592e-18 1.803461127e-07 -7.647560661e-06 3.260557932e-05 9.02099722e-05 -1.130471484e-16 4.667953482e-08 2.918313941e-06 -2.25841669e-07 1.401252897e-06 9.825827839e-16 -7.904844017e-09 3.524164442e-07 -3.51845936e-06 -1.748864682e-05 -3.172736011e-17 5.534812257e-09 -2.166154458e-05 2.0147103e-05 6.877769042e-06 -3.613733054e-17 1.258466761e-08 3.143978536e-08 1.25486783e-06 5.679522181e-06 5.694883853e-17 -1.621036849e-09 8.325662484e-07 -2.660820887e-06 3.256340021e-06 6.676366825e-17 -1.192059016e-09 -2.722841148e-06 1.24247036e-07 -1.459667963e-06 5.631464373e-16 -3.469433421e-10 -1.52455641e-07 -1.718674643e-06 3.842443054e-06 -3.592854916e-05 -5.325213119e-05 1.400940087e-05 4.965276825e-06 2.118911133e-07 -2.992302226e-07 1.722960271e-07 1.358971461e-07 -5.093029426e-09 -5.891200004e-08 -1.591412863e-08 -2.365418623e-09 -1.021461999e-09 -0.007681497955 0.007592273951 -0.0002165270709 0.0005217888596 -0.0005356241606 4.60961447e-05 6.21747933e-05 -6.11025701e-05 -1.317674419e-06 3.633483467e-05 -4.182364717e-05 1.149322263e-05 -1.37722692e-08 -6.249483054e-07 -4.7858844e-07 -5.109876523e-06 3.683100252e-06 1.824701689e-06 -3.023329549e-06 3.258333983e-06 -1.198058724e-07 8.28578568e-07 -9.156604473e-07 1.969834447e-07 -3.729745303e-08 1.537100928e-07 -3.562676323e-07 -1.662420265e-06 1.797907832e-06 -2.690995214e-07 -1.415932035e-06 1.693870468e-06 -2.588567708e-07 -8.038585943e-07 1.169533286e-06 -3.73200477e-07 -8.852980074e-07 9.107908476e-07 -8.338122283e-08 -1.937482423e-14 -1.211798233e-08 0.0005676248447 -0.01145819842 0.01056858284 -2.668261255e-14 -3.636196484e-06 -0.0001187942104 0.002269727143 -0.002143168875 2.702229508e-16 5.338626923e-07 -7.341604748e-05 9.250668472e-05 -2.005903552e-06 3.398295199e-16 3.534580625e-07 3.143431956e-05 -4.398270624e-05 1.183012476e-05 -6.96839283e-16 -2.73615641e-07 -4.134720735e-06 4.716188234e-06 1.501021585e-07 6.0158992e-19 3.254351465e-11 1.674084016e-07 -1.943417821e-06 1.244359366e-06 4.011875269e-17 3.555022468e-09 -4.180326516e-06 4.377108219e-06 2.439457142e-07 -2.244372284e-17 -8.788514555e-09 5.591226903e-06 -6.293524199e-06 4.622227374e-07 3.024768555e-18 2.498828134e-09 3.453973848e-08 -2.641377608e-06 2.329345008e-06 3.377055761e-18 4.242445984e-09 -1.68782359e-06 1.883009977e-06 -2.474804196e-07 2.345571292e-17 9.99621509e-11 2.35051185e-07 -2.725367915e-06 2.535605133e-06 3.450825524e-18 3.187254035e-10 1.210572875e-07 -3.148091611e-06 3.029349067e-06 1.830665775e-18 8.952893166e-10 -9.107271896e-07 1.14859471e-06 -2.823105167e-07 --0.01474101686 0.02155881444 -0.004491569893 -0.0027014945 -2.005213052e-05 6.424895143e-05 -3.221662947e-05 -6.882077397e-05 -1.095065054e-06 2.918096257e-05 3.050564372e-06 -1.641031058e-08 1.103071574e-06 -0.1072744419 0.01241470379 0.02842512449 4.582485027e-05 -0.02301017523 -0.01693717043 1.480065433e-05 -0.0003375654636 0.003273209625 7.13841873e-06 -0.001077009627 -0.002828986914 6.316805753e-05 3.710439016e-06 0.0002227167012 0.0002191585546 -3.221493114e-05 -0.000260157212 -3.411341933e-05 -2.067087068e-06 -5.439262544e-05 5.496277185e-07 -4.096369378e-05 -2.632876311e-05 2.591688174e-05 5.736596588e-06 1.385700461e-06 1.775291566e-05 2.41687953e-06 3.915724991e-05 -8.709192903e-06 1.768727763e-06 2.394984402e-06 -6.376128601e-06 2.073865522e-06 1.988490371e-06 2.587004983e-06 1.122630266e-06 1.361756249e-05 1.185696604e-13 6.382105199e-07 0.06575603993 -0.0529950378 0.01149580764 -6.953949538e-16 -1.387191834e-05 -0.0006256722001 0.001146172282 -0.06154209466 2.470756561e-15 -1.539113325e-05 -0.0001171792055 -0.005885412777 -0.0002650957959 1.649540273e-14 1.527026884e-08 -1.563260369e-05 -0.0004609841578 0.000179343445 -2.185163095e-16 -7.193810972e-07 0.0002477690759 1.184188732e-05 -0.0005173942575 2.300861803e-17 -1.585319219e-06 1.579808887e-05 0.0001917695924 9.585402114e-06 2.494965028e-18 5.31621664e-09 -1.214930852e-06 -4.779072411e-05 -6.713055194e-05 5.152569875e-17 3.042837062e-08 2.914424819e-06 -5.189479814e-05 3.406461932e-06 5.411511027e-17 6.306150818e-09 6.233828005e-05 3.351198576e-05 2.668437478e-06 1.621560085e-17 6.558515133e-09 2.546174017e-05 2.703696463e-06 1.79738485e-05 2.788171893e-17 9.470524025e-09 2.344659345e-06 -1.34844575e-05 1.148081106e-06 3.132892601e-17 5.144421482e-09 6.970542189e-06 -7.931165304e-06 1.832180455e-06 1.650343376e-17 3.671058895e-09 1.769939542e-05 2.074388127e-06 2.45272202e-07 -0.01479820233 -0.02150985367 0.003883322338 0.003046649745 1.741124322e-06 -3.424546394e-05 1.700272554e-05 6.917246861e-05 4.117919406e-06 -3.120822153e-05 -1.652095253e-06 2.536934396e-08 -1.630168292e-06 0.105874877 -0.01009091006 -0.03119316378 -0.0002752775679 0.02269253588 0.02113984528 9.577667502e-06 0.0005879119438 -0.003577099191 -1.017398521e-05 0.0009825163021 0.002842274796 -8.135448449e-05 -2.770920076e-06 -8.785821714e-05 -7.541477815e-05 0.0001102646302 4.17978079e-06 4.042384489e-05 2.32897984e-06 8.810822554e-05 -3.75941775e-07 3.832936499e-05 1.961307559e-05 -3.897117921e-05 -5.031110357e-06 -1.190254444e-06 -1.642672821e-05 -1.241389856e-06 -3.782599782e-05 1.121854323e-05 -9.167018108e-07 -6.638632116e-07 6.504596983e-06 -1.310063123e-06 -3.735699444e-06 -4.81302561e-06 -6.359886308e-07 -1.409255287e-05 -1.127468855e-13 -1.076692815e-06 -0.06605181108 0.04524084842 -0.007497532659 1.767097579e-14 1.017644187e-05 -0.0001123087134 -0.001057414216 0.06187741727 -1.240669386e-15 2.094471456e-05 -0.001550010522 3.50532922e-05 0.009373919744 -2.313225347e-14 6.701578022e-06 6.374519793e-06 0.0002483529429 -0.0004475355421 -7.849110015e-17 -2.002274227e-07 -0.0003227587745 -6.156194414e-06 0.0006574042558 -4.443857959e-18 1.389087905e-06 -0.0001590269034 -3.299245175e-05 -1.32306234e-06 -1.19335996e-17 4.712942199e-10 1.189087675e-07 4.023913537e-05 6.765862467e-05 -1.129992772e-16 -4.388595756e-08 -3.393116161e-06 4.234992514e-05 -3.549308245e-07 -3.94269846e-17 2.212919453e-09 -0.0001050800686 -1.723792068e-06 1.046330956e-06 -1.104011869e-17 -4.59544156e-09 -1.935845787e-05 -1.14213307e-06 -1.285613409e-05 -3.195664923e-17 -1.458514566e-08 -1.814566554e-06 1.425826478e-05 -1.293726119e-06 -2.875760753e-17 -6.281151813e-09 4.755662154e-06 -1.571489576e-06 -8.586158489e-06 -1.285697211e-17 -3.056124214e-09 -1.872238008e-05 1.64686662e-06 -2.865688233e-07 --0.0408604112 -0.08436039944 -0.03477436383 -0.00361088947 -2.975634226e-05 -0.0007315119821 -0.0005757577879 -0.0001164201316 2.115798429e-05 4.552690454e-05 1.099093703e-05 7.90602179e-06 -2.167737043e-06 0.2105362919 0.0009335259353 0.001362248419 -0.001128774641 -0.0005551551063 -0.0368593448 -0.001232949264 -0.0007895408579 -0.1092877342 -0.0003251770878 -0.0002198057152 -0.05425970317 -4.040527403e-07 5.989365328e-08 -0.0182428617 -0.0009439573715 -4.085544272e-05 -2.564271038e-05 0.003276291382 3.114082214e-05 3.719481832e-05 0.001574952893 1.633373928e-06 -2.061505384e-08 0.0008334977159 0.0002696619256 9.415758683e-06 -1.302056562e-06 -1.080110855e-06 -0.000151121865 -6.675508925e-08 1.067068046e-08 -0.0002320605112 -1.308876247e-07 -1.235921068e-06 -4.486628285e-05 -1.096696176e-05 -2.505702758e-07 -2.826905957e-07 -2.557433922e-18 -8.21842745e-07 0.04973083861 0.0006429484613 0.0006179502894 5.626902998e-18 -9.445278429e-07 0.02979183338 0.0002981502516 2.917014548e-05 1.374709833e-19 -3.621127819e-07 -2.256449969e-05 -2.533706473e-05 -0.002655762438 -1.03553446e-19 -8.120791624e-09 -2.254689035e-05 -2.565513369e-05 -0.006532312376 8.5359542e-21 -6.201162418e-10 8.963837109e-07 -3.452510285e-05 -0.001284684663 3.768203343e-20 5.227768041e-09 0.0008634831624 1.106614175e-06 8.739466918e-07 4.807231093e-22 -4.106857038e-11 3.143332706e-07 8.654296635e-07 4.505506048e-05 5.734841606e-22 -8.030813443e-11 1.265283972e-08 -1.736424596e-07 -0.0001459488868 4.766460105e-22 1.419992345e-09 4.361399189e-05 2.186433308e-07 4.380034333e-08 1.940850912e-23 2.433341998e-10 1.771592104e-07 -3.496909553e-07 -5.719119912e-07 6.512730827e-23 -8.096617709e-11 1.927954355e-07 2.453644421e-07 9.644318658e-06 -2.574982891e-22 2.383454286e-10 1.459427545e-05 1.146314438e-09 1.304572281e-08 -2.200176957e-22 -5.48112563e-11 -1.709538019e-08 -9.669404753e-07 -2.440678374e-06 --0.2264733036 0.007487936792 -0.2273810253 -0.1542735296 -0.02592921246 -0.002910614929 -0.0004841600543 0.002299554324 0.001168777853 0.000558086442 -0.0001237810486 -0.0002538975668 3.635642052e-05 -0.2707423172 -0.2747145126 0.06086106089 -0.2054745274 -0.2218757467 -0.08621689837 -0.04058735155 -0.04308223092 0.1173455038 0.001200088926 0.001686100978 -0.02898014765 -0.001016250792 -0.001294461068 -0.02774727566 -0.003369701001 -0.001207074438 -0.001575795714 0.000124418108 0.0001062950247 0.005802002499 -0.0004229383404 -0.0004294018424 3.674180693e-05 0.0002119729366 0.0001822140777 -0.002263253337 7.437284967e-05 8.40346103e-05 0.001198229077 -3.260809977e-06 -5.238601546e-05 -3.591209218e-05 2.624958065e-05 2.743351355e-05 -0.0001588547257 2.101695834e-05 1.69729305e-05 0.0002485026683 2.224359655e-13 -7.499363973e-08 0.3219969639 0.2024449874 0.1983328097 2.812047862e-14 7.56623165e-07 -0.08527336327 -0.1447682038 -0.1484701052 -1.938466168e-15 6.511367399e-07 0.01479772537 -0.06987408665 -0.07609069428 -4.043285005e-15 1.383312525e-06 -0.009347534236 -0.009815600244 0.05935448659 7.196728128e-17 -5.130369123e-07 -0.004468898047 -0.00526946473 -0.006393536645 1.631820254e-17 1.812635632e-07 0.001382193611 0.001690350586 -0.01487563181 8.417797429e-17 -2.617137147e-06 -5.201802907e-06 -1.909181319e-05 0.0005730443511 7.153580599e-16 2.473156734e-09 0.0009389588599 -0.0006515729597 -0.0005792687842 -3.460720364e-17 6.515188964e-09 0.0004157202643 0.0004432938761 3.332582286e-06 1.208488196e-18 -1.176798712e-08 -5.482527253e-05 7.80233561e-06 2.943500874e-05 4.806428466e-17 -8.909117476e-11 -0.0002539567228 2.703590275e-07 -8.342322375e-06 -1.658092385e-17 -3.269873368e-11 5.919395758e-05 5.253343722e-05 0.0002154683996 3.390731947e-17 9.003168628e-11 5.269136437e-05 2.856059338e-05 3.257764575e-05 --0.019911321 0.02951191469 -0.007763900414 -0.00275171759 -0.0001174283981 0.0001658310495 -9.548511093e-05 -7.531313569e-05 2.822517083e-06 3.264856975e-05 8.819485643e-06 1.310896504e-06 5.660862522e-07 0.07073110199 0.0001833644358 -0.03981752638 -0.0001645447905 -0.02161886635 -0.01543728767 -6.818452018e-06 -0.0008703689947 0.001567882634 -7.366552029e-06 -0.0009728254426 -0.004329976983 0.000184811568 1.355523943e-09 0.0002756899043 0.0003559211207 2.555913075e-06 -0.0003811663351 1.099632288e-05 2.832358126e-07 -7.257379522e-06 -9.880201395e-09 -1.581992892e-05 -8.330402684e-05 1.19973616e-05 5.474013771e-05 1.519674996e-09 6.414889674e-05 3.103871662e-07 3.736307849e-05 2.061898714e-05 2.220758135e-07 5.899000117e-06 1.405121435e-05 2.23864861e-08 -4.605126537e-07 1.972891331e-05 6.570594295e-08 6.357890308e-06 2.433929323e-16 -1.572875519e-07 -0.03208620444 0.118685328 0.0005960798998 2.033413905e-15 -2.443856774e-06 -0.01057113906 -0.0004898006774 -0.05800811721 1.279505619e-16 -1.91387211e-05 -1.500396311e-05 -0.008066413205 0.001563454022 1.875805906e-17 -6.715650085e-07 -5.381947781e-06 -0.0005849837985 -0.003022388673 6.754508575e-17 -2.442142701e-06 0.0003491373695 2.14923445e-06 -0.0001783915867 2.119744629e-18 -1.954375736e-09 -0.0001028000925 0.0004341287494 6.004541687e-06 -2.047316207e-18 1.89491e-09 -3.205970113e-06 -4.905230116e-05 -0.0001318429601 3.748722022e-19 -2.362851471e-08 3.946110123e-07 7.843735048e-06 -5.514277249e-05 1.182911291e-19 -3.826609835e-08 1.20386035e-05 0.0001329179993 3.419869503e-07 2.592575166e-19 -3.67626473e-08 7.991949875e-05 6.505640866e-07 1.813947579e-05 1.965204311e-18 -1.418811978e-10 -4.314296272e-06 8.948180796e-06 3.055101992e-07 9.042459689e-20 -1.541574943e-09 -4.778808072e-06 7.625061128e-06 2.5858124e-07 7.308500186e-20 -7.854604933e-09 3.657909026e-05 1.611139344e-07 5.041056336e-07 --0.02147642624 0.03140938598 -0.006543840933 -0.003935851098 -2.921427377e-05 9.360533807e-05 -4.693692933e-05 -0.0001002661004 -1.595418016e-06 4.251421706e-05 4.444416648e-06 -2.39084473e-08 1.607082845e-06 0.07010368529 0.002678506699 -0.03718986827 -0.0005143878719 -0.02050841017 -0.027243513 -1.782098832e-06 -0.001860736535 0.003192407643 -2.021125033e-05 -0.0008620291349 -0.00511443185 0.000232562042 8.707972173e-07 0.0002203046107 0.0003578816861 -3.833172542e-05 -0.0003416736683 -2.282614118e-05 -4.418624393e-06 -0.0001068288494 -3.288202937e-08 -1.141701876e-05 -6.307920491e-05 2.84172379e-05 7.071128079e-05 2.913518793e-07 5.663309858e-05 1.461295885e-06 4.148878463e-05 8.254499733e-06 9.348587741e-08 -1.889339764e-06 1.27176619e-05 1.597907832e-07 -6.181598053e-07 2.477136856e-05 4.386285914e-07 1.121248734e-05 6.124891981e-14 -4.645207196e-07 -0.02781736978 0.1169626846 0.003080013952 6.198072648e-15 -1.620605034e-06 -0.01166536654 -0.001872705123 -0.06112045411 3.095782813e-15 -3.082782298e-05 -9.037894475e-05 -0.010072976 -0.0003298816896 7.631631423e-15 -2.95118942e-06 -1.226217193e-06 -0.0001907738134 -0.002689951097 5.414917684e-19 -6.11302753e-07 0.000466736548 1.249077964e-05 -0.0005089312885 3.775018755e-17 -1.945224386e-06 2.463587777e-05 0.0002589287766 1.53888103e-05 4.309116512e-19 -1.951496793e-09 -5.983498372e-07 -5.28791646e-05 -0.0001861472194 -2.394557766e-18 -2.31549424e-08 8.85432391e-07 1.228393841e-05 -8.529229901e-06 2.177129509e-17 -1.22247471e-07 6.350586367e-05 0.0001016859824 1.779141203e-06 6.92894949e-18 -2.052067613e-08 5.15562637e-05 2.005552803e-06 1.000836129e-05 8.804867313e-18 -4.318289204e-09 -3.620633642e-06 1.760345593e-06 3.034877629e-07 1.072227523e-17 -3.565320112e-09 -3.99517728e-06 1.076513171e-05 1.260425472e-06 5.813007124e-18 -6.912726324e-09 3.27429601e-05 2.250970681e-07 -7.978452222e-08 --0.02192362073 0.03186697029 -0.005753164083 -0.004513628887 -2.579485565e-06 5.073484919e-05 -2.518963439e-05 -0.0001024794048 -6.100720971e-06 4.623515731e-05 2.447588493e-06 -3.758482705e-08 2.415103576e-06 0.07386129815 0.001165710931 -0.03628027285 -0.0001723468843 -0.01831461589 -0.03455275123 -5.93901882e-07 -0.002509284531 0.003790736854 -6.080757264e-06 -0.0007700610281 -0.005386138883 0.0002459512339 6.460764869e-07 9.214759193e-05 0.000113631495 -9.378987865e-05 -9.410024333e-06 -3.302181154e-05 -5.021925675e-06 -0.0001642668637 -1.248041628e-08 -4.985930793e-06 -4.892480107e-05 4.715496532e-05 6.830046041e-05 2.145592349e-07 5.232981094e-05 5.013695348e-07 4.01468777e-05 2.098586621e-06 -2.656656466e-07 -1.747254263e-06 1.336016779e-05 1.51931291e-07 -4.881094296e-07 2.705082228e-05 1.630699112e-07 1.236462349e-05 3.293431248e-14 -8.855915495e-07 -0.02687643047 0.1198204436 0.00101585143 3.773030523e-15 -1.026432509e-06 -0.01256258295 -0.0006209922266 -0.06276601925 1.364408891e-15 -3.840081362e-05 0.00183898071 -2.9020759e-05 -0.01446176332 6.878088607e-15 -5.146735397e-06 8.680778987e-07 -2.546059498e-05 -0.002478776254 -2.358102536e-17 5.393219721e-08 0.0005832677501 5.125602937e-06 -0.0006979505066 1.377720388e-17 -1.566979322e-06 0.0002436569978 2.042489324e-05 3.300279424e-06 4.636023687e-20 -1.12424541e-08 -2.579324289e-08 -4.348612676e-05 -0.0001972982246 2.621152856e-18 -3.377467622e-08 7.474681055e-07 3.114281508e-05 -3.305468168e-07 1.11960324e-17 -1.519992619e-07 0.0001698408575 4.871357024e-07 -2.009204474e-07 2.641674115e-18 -1.22540947e-08 4.024786169e-05 5.633688646e-07 5.429114012e-06 5.004282612e-18 -7.083673702e-09 -2.861581085e-06 8.223080518e-07 1.280355985e-08 5.692406741e-18 -5.483010743e-09 1.500222103e-05 5.417243185e-07 -3.027074031e-06 2.812042586e-18 -6.285130406e-09 2.808619645e-05 1.01839885e-06 2.607808856e-07 --0.05167482111 -0.06574267786 -0.01243044652 -0.0001005796204 5.979780871e-05 -0.0003262026191 -1.677534424e-05 0.0002209875871 6.631097991e-05 1.582191136e-05 -9.880799355e-06 -4.568458848e-06 -3.040047881e-07 -0.01450451061 0.005368912284 0.1553838696 -0.1251665843 -0.003329957459 -0.01439021585 -0.1138044236 -0.003512360913 -0.008761041403 -0.02827198557 -0.001151131369 -0.001681396657 0.0003259772537 0.001073499155 0.0004331227032 0.0001485814629 0.0001001940253 0.005170034458 0.0001486890479 0.0001090364084 0.0038030017 -4.688413968e-05 -7.973155498e-05 -0.0003488991475 -0.0005254787487 -0.0003217415321 -1.043206414e-05 -0.0002097518672 -9.272767591e-06 -6.935386546e-06 1.908494768e-05 7.414839997e-05 8.222421358e-06 2.673066805e-08 8.040643729e-06 5.285219001e-06 9.04337636e-07 2.326012788e-06 8.333263238e-05 -4.527154653e-17 -1.433143389e-05 0.005756290009 0.0013329871 0.0536297909 9.828125759e-17 -1.329815041e-05 0.003521197299 0.0001698824786 0.001558544309 1.813969412e-18 -4.301622714e-06 -0.01575809939 -0.0004884100299 -1.637135146e-05 -1.811168196e-18 -1.474571352e-07 -0.001788145299 -0.0001125164903 -0.0003269789516 1.466277542e-19 -1.011582663e-08 8.597625441e-06 0.0004586554379 2.134901201e-05 6.68262695e-19 -6.521666101e-08 -2.355150115e-05 -0.0003138508362 -2.637288521e-05 9.632216051e-21 2.84232144e-09 -1.118223267e-05 -2.799341935e-06 -4.487957518e-06 1.050646412e-20 -7.191299603e-10 6.073720649e-06 -3.108573123e-07 -4.379116804e-06 9.246549963e-21 -1.112588609e-09 6.497362991e-07 -4.550897444e-07 -6.234019032e-06 3.60390157e-22 -9.109857457e-11 1.626445528e-08 2.429488223e-07 3.240991297e-05 9.665641413e-22 -1.27441733e-09 -7.356023595e-06 -3.496263362e-07 -1.568033573e-07 -4.633707138e-21 -8.98790819e-10 -3.265242246e-07 -2.879505485e-06 -4.312000713e-06 -3.688044916e-21 -4.992686375e-10 1.987374945e-08 2.039708836e-06 4.48214486e-06 --0.02448470597 0.02541610372 -0.007631025207 -0.003827021899 7.280678188e-05 0.0001313900767 5.553726607e-05 -3.390261254e-05 2.041993493e-06 5.144144138e-05 1.481843675e-06 1.451723763e-06 7.694565647e-07 0.006135089005 0.08142063556 -0.0592959807 -0.05381603246 -0.000755082193 -0.002918918353 -0.002720160077 -0.0001512611361 0.0005869449113 -0.0002077916914 -4.30594986e-06 -0.004520945363 1.102004383e-05 0.0003357796464 -0.0001310667334 -2.714735383e-05 -1.220576654e-05 0.0007164379612 4.05838337e-06 2.748133147e-07 -1.522534706e-05 -3.298924908e-05 -2.445059342e-07 2.545434923e-05 2.504565041e-06 6.502850239e-05 2.331389953e-05 1.142110995e-06 4.617636241e-05 3.974567125e-05 1.644036234e-06 2.573475959e-07 2.278007882e-05 6.102851908e-07 1.398526759e-05 -2.146668108e-06 8.317968018e-07 1.695637465e-05 5.897459444e-06 8.689959248e-13 6.950318911e-07 -0.0457532756 0.003000498141 0.0882312504 6.591920057e-15 2.032911476e-07 -0.02189827708 -0.05607238516 -0.001068306692 1.124931779e-15 2.233324838e-05 -0.0002520926183 -0.01187966349 -0.0003718060886 1.556782607e-15 1.812542015e-06 1.135654242e-05 0.001012318171 -0.001943495745 4.393190247e-16 8.868781258e-07 2.967886072e-05 0.001371132649 -0.0002244690032 -6.070100434e-18 6.002856405e-07 3.054968648e-06 0.0002774902321 0.0002104518473 4.416236794e-16 7.735858614e-07 2.881030527e-06 1.943438518e-07 -2.550770668e-05 -5.314251822e-16 -1.513812841e-09 2.407549319e-05 -6.489395683e-05 -2.315150787e-08 4.503100094e-17 1.9326881e-08 2.10394094e-06 9.291229745e-05 1.049658216e-05 1.737696331e-17 3.264689053e-08 2.107945911e-07 6.642516354e-07 5.46263531e-05 1.384003399e-16 1.901512457e-10 -4.31418275e-06 6.24901756e-06 5.154850816e-07 9.290890984e-17 4.75137218e-10 3.836674599e-07 4.022673252e-06 -7.925485949e-06 2.396529893e-17 2.356566137e-11 -5.897155228e-07 5.220740574e-07 2.774925071e-05 --0.2195481507 -0.07545823539 -0.2810316 -0.07665946689 -0.002032566429 0.004142467893 0.004027314339 0.001774185354 -0.0006019607672 -0.0006829544062 2.169986311e-05 0.0001987065543 1.403625262e-05 -0.2355733343 -0.2710865495 -0.04742311098 -0.1277388793 -0.1287919518 0.05972961724 -0.007657671248 -0.008937372357 -8.033079942e-05 0.001258764199 0.001714654987 -0.08345594824 0.000229941211 8.473280136e-05 0.01656888573 -0.0003139929426 -0.0003341146384 0.002160305903 0.0002867057313 0.0004403825324 -0.005028367375 6.907908047e-06 -6.26293932e-06 0.002207186507 0.00022165439 -0.0001099730761 -0.0001624381908 8.903761282e-05 9.482854317e-05 -0.0007338333002 3.291976768e-05 6.685254619e-05 0.0006666993152 -9.33632758e-06 4.286873942e-06 6.766091311e-05 1.349585925e-05 6.632236021e-06 -8.580972892e-05 1.539394225e-14 -6.095527316e-06 0.2406235693 0.08571711617 0.07746487002 2.668406806e-15 5.068995547e-06 -0.06482132975 -0.1922366003 -0.1776311622 -1.051095258e-15 -5.867851978e-06 -0.0398696941 -0.04521466365 0.07867556109 1.148933082e-15 -2.343639694e-06 0.002182936264 0.003739287398 -0.01681160518 -5.212354987e-16 1.51774167e-06 -0.0001636956646 -0.0004482367806 -0.01468055918 -5.039340692e-18 -2.288927641e-07 0.001404920415 0.0001946774439 0.0006377211395 -8.816894808e-19 1.020582403e-08 0.0003989589766 0.0003479076909 0.0008344353612 3.799987486e-18 -2.37189483e-08 -0.0002298910462 -0.0002622922669 -0.0002424718036 3.295934939e-18 -1.545752221e-07 -0.0003716285925 5.160522185e-05 -5.687573088e-06 -4.130122419e-18 1.894718199e-08 0.0002098198316 0.0002798381871 0.0003098175056 7.980417147e-18 -1.820542391e-09 0.0002353531974 1.856989668e-05 5.277201082e-05 5.737578567e-19 -4.936466266e-09 -8.617572155e-05 1.060213421e-05 3.121524661e-05 -5.3216011e-19 -2.656715009e-09 6.109054211e-05 6.69298901e-05 8.863182667e-05 --0.029339154 0.03194044399 -0.01271441505 -0.001632033707 -0.0002533395362 0.0001297141981 1.552351787e-05 4.089764797e-05 8.184656915e-06 1.918479072e-05 2.337372886e-05 1.370832395e-05 4.963539048e-06 -0.008847872068 0.0286511482 -0.04748330637 -0.03727733882 -0.005918713823 0.001346081718 0.0003031086959 0.0002763654863 -0.002731705453 -0.000980015888 -0.0001890160493 -0.003507348608 -1.094681353e-05 1.013648983e-06 -0.0001631692568 4.281114071e-07 0.0002234562989 0.000237105348 1.362479153e-06 0.0001394281182 0.0003025955254 1.538388229e-06 -4.053609082e-06 -1.216250845e-05 -9.353433283e-06 -9.704911883e-06 -4.561036658e-06 1.992112778e-06 4.286343048e-05 4.774818726e-05 7.346558874e-07 3.318453668e-05 6.04960065e-05 -7.576347372e-08 1.459731912e-05 2.691493049e-05 -1.994938737e-07 9.567850189e-06 1.532904925e-06 -1.903372102e-14 6.290663692e-07 -0.02003000026 -0.007266415896 0.0730021284 6.495766481e-14 1.07937972e-05 -0.02260002241 -0.06137982019 -0.009120292959 2.169707309e-16 1.886902658e-05 -0.004042404096 -0.0005229733733 0.000377463333 3.13701469e-14 2.3799341e-05 -0.0003051048425 -8.505140433e-05 -0.002465968518 4.335274207e-17 -1.761785502e-07 3.240986035e-05 0.0003752308093 -4.921128695e-05 -4.675765921e-17 2.9229657e-06 -1.414821978e-05 8.330598371e-05 0.001051749525 -3.340583039e-19 3.993253162e-09 2.152541415e-05 1.302099104e-05 4.72067015e-05 -1.198926229e-17 1.421349572e-08 -6.767056931e-05 -9.466770913e-06 1.730171132e-05 4.044286013e-18 6.514574492e-08 -1.324065742e-06 6.582028474e-07 5.020287208e-05 3.575621677e-18 2.172039612e-08 5.398382725e-06 8.161964135e-05 3.780780097e-05 9.053235963e-18 1.060844214e-08 2.791779972e-06 5.986766948e-07 5.462501328e-05 4.121625047e-18 5.187062812e-09 1.122170801e-06 4.2095277e-08 2.864590495e-05 1.828815578e-18 6.353208176e-09 9.78018999e-07 9.183265393e-06 1.940856711e-05 --0.03012520863 0.03276853498 -0.01269173634 -0.002142441306 -0.0001930831899 0.0001352398315 3.245075241e-05 1.454263771e-05 1.043631594e-05 2.87051646e-05 2.171191299e-05 1.098390683e-05 3.601384624e-06 -0.009962715111 0.03171135892 -0.04620862289 -0.03767974402 -0.01080551522 -0.0001712656083 0.0001009724511 0.0002129377661 -0.001879268736 -0.0008489911758 -0.0002626425296 -0.00404219206 -6.775199424e-06 3.332761877e-05 -6.379432995e-05 -0.0001314030534 1.499212138e-05 0.000639647018 1.945535633e-06 0.0001066606836 0.0002624016365 -7.679141356e-06 -9.142374066e-06 -1.335695644e-05 -7.286613396e-06 -9.321011964e-06 3.182457357e-06 3.855503206e-06 4.652275113e-05 5.802060332e-05 1.957441871e-07 2.517864255e-05 5.677070091e-05 4.76213303e-07 1.853380411e-05 1.669821675e-05 -6.314806407e-08 9.114086217e-06 1.1591535e-06 -3.110434495e-15 1.223951814e-06 -0.01913358589 -0.005212310117 0.07431860826 7.678081653e-14 5.735151279e-06 -0.02226200714 -0.06150868288 -0.01312935917 -1.544673114e-15 2.344018825e-05 0.000153625877 -0.005097589662 -0.0009099071438 9.955522149e-14 2.305386866e-05 3.053661136e-05 -6.126631771e-05 -0.00245334718 -4.110318739e-17 6.041251268e-08 6.856940105e-05 0.000506944352 -0.0001172903419 -1.007426697e-16 2.518785559e-06 -5.661026375e-06 0.0001168335562 0.001003007339 -2.8898396e-18 4.687334366e-09 8.069969527e-06 3.951759356e-06 1.529231507e-05 -4.472022258e-17 1.254883362e-08 -8.046830693e-05 -1.723699879e-05 2.548822503e-05 5.309100386e-18 8.606868453e-08 4.246755155e-06 3.056374195e-05 4.217120608e-05 2.923446352e-18 1.476365431e-08 7.91641971e-06 7.980717543e-05 3.771639064e-05 1.155629871e-17 1.584452544e-08 1.800766241e-06 1.603209687e-06 4.35830695e-05 3.355724712e-18 6.357960358e-09 5.594311546e-07 1.861057051e-05 -2.148351413e-08 2.15047607e-18 6.074089522e-09 6.610558294e-07 1.249416378e-06 3.04258721e-05 -1.460206851e-05 1.857730836e-05 3.51254688e-06 2.842139511e-08 -1.689743052e-08 9.217705818e-08 4.740311056e-09 -6.244580662e-08 -1.873789693e-08 -4.470893729e-09 2.792077573e-09 1.290937204e-09 8.590448208e-11 0.003803348611 -0.05935886088 0.05463464401 0.01620568529 -0.02013657028 0.003299234438 0.003938713326 -0.004589268348 0.0005074487823 -0.0008134443885 0.0009318585314 -7.303340163e-05 -0.0008511492496 0.0008679731677 -7.210649137e-06 -2.57384887e-05 0.0001229117472 -9.682711669e-05 1.101044816e-05 -0.0001012770491 8.826292254e-05 -1.952807577e-07 7.081130506e-06 -6.685654646e-06 -4.288572849e-08 2.396942439e-05 -2.470598732e-05 -1.280460653e-05 1.469421628e-05 -1.286603215e-06 1.453206287e-05 -1.502949158e-05 2.880024075e-07 9.24530987e-07 -1.160679397e-06 2.866443057e-07 7.271256209e-07 -5.309864077e-06 4.529387339e-06 -2.552445029e-16 2.599825675e-05 -0.0009360825809 0.006279977016 -0.005474740996 5.590468363e-16 2.39089781e-05 -0.00103169348 0.004597041793 -0.003536866212 1.06692679e-17 7.573811438e-06 -0.001350217262 0.001552614401 -0.000137312824 -1.02863134e-17 1.551612776e-07 -1.131678138e-05 2.037663164e-05 -3.272719735e-06 8.545690266e-19 1.874416527e-08 7.31314871e-06 -1.022579378e-05 -2.136493871e-07 3.750462765e-18 1.153766161e-07 -1.279351902e-06 5.400311559e-05 -5.243693186e-05 5.226479956e-20 8.579085946e-10 1.584066195e-08 -8.715153323e-08 2.613235147e-08 5.94745113e-20 1.633014439e-09 -7.853230689e-08 -3.242406081e-08 2.946885852e-08 5.359495678e-20 1.985180113e-09 -1.330924755e-07 4.661256472e-06 -4.662558356e-06 1.298530106e-21 1.61558449e-10 -5.443329084e-09 1.502451679e-07 -2.584498005e-07 6.385324478e-21 2.167528388e-09 -3.168166398e-07 4.225082292e-07 -6.224580954e-08 -2.635879724e-20 1.593188015e-09 -2.933340929e-08 2.088093338e-06 -2.065800032e-06 -2.158242966e-20 9.307945829e-10 8.424136729e-08 -1.01951106e-07 1.181830869e-08 --5.13484499e-05 5.330174396e-05 -1.600351321e-05 -8.02589349e-06 1.526877797e-07 2.755465709e-07 1.164707686e-07 -7.109934681e-08 4.28239574e-09 1.078811515e-07 3.107669571e-09 3.044503169e-09 1.613676795e-09 -0.04239945915 0.04235824917 -0.0007488461272 0.0004449833985 -0.0006886009209 5.049481815e-05 -0.000483573148 0.0004980594407 7.61746438e-06 9.075127693e-06 -1.38107883e-05 -4.833884754e-06 -3.876802885e-05 3.982251998e-05 -7.906593846e-07 -9.004559871e-06 8.411643204e-06 1.902300761e-06 1.708883205e-06 -1.836945354e-06 1.047729496e-07 2.397704371e-06 -2.437021004e-06 -3.768029989e-07 -9.095973206e-06 9.592851817e-06 -3.651144357e-07 -3.14502647e-06 3.553269033e-06 -2.21153942e-07 4.081626809e-08 -1.895872834e-06 1.807645844e-06 -3.439325959e-06 3.44281772e-06 -4.22922595e-08 -2.996798288e-06 3.418246319e-06 -4.079918874e-07 -1.455090818e-12 1.729725218e-06 0.0001721868563 -0.02495843746 0.02437526083 1.002998116e-13 -2.561090004e-07 -0.0001532699546 0.003641057203 -0.003808941796 -1.001647175e-15 2.145494328e-06 -3.276656471e-08 -0.0004447009687 0.000433501635 6.459244929e-15 -1.013606263e-07 0.0001123706617 -0.0001094043688 3.190849098e-06 -8.181785662e-16 2.972448391e-07 -4.642867679e-05 4.961250561e-05 -2.90900443e-06 9.104132871e-19 6.979785584e-09 -6.080452285e-07 1.211538443e-06 4.631773623e-07 -3.994700999e-16 1.092445119e-07 3.108061609e-07 -5.769784282e-07 5.055859504e-08 -1.462116506e-15 9.824397892e-09 1.070949877e-07 -1.687072425e-06 9.040797666e-07 -1.184640443e-16 1.563735932e-08 -3.845538633e-06 4.20776503e-06 1.521207578e-08 -4.900496101e-17 1.850376301e-08 2.134866599e-08 -1.307991127e-06 1.37261163e-06 -6.336203115e-17 2.120865373e-09 -1.401920216e-08 4.202810641e-06 -4.275676745e-06 -1.140230335e-16 2.455434025e-09 -3.853495222e-06 3.753623775e-06 5.416590682e-08 -4.245196137e-17 3.0616334e-11 5.794528562e-08 -1.561872069e-06 1.540329218e-06 --0.0008944619759 0.000941299234 -0.0006978398536 0.000145248396 -1.63677199e-05 -1.967625063e-05 1.296939131e-05 1.490554749e-05 -2.737993288e-07 -2.589452981e-06 1.748905368e-06 1.754090131e-06 9.933701189e-07 0.00445130822 -0.007732458132 -0.0005986634928 -0.003538835496 0.003803450493 0.002324461155 2.679931661e-05 0.0001052977373 -0.0005660965367 -0.0001173222908 0.0001600224808 -1.580586006e-05 -4.429181483e-06 -1.778187155e-05 -6.320349963e-05 -2.356286328e-05 6.760529158e-06 7.899852509e-06 -1.165439701e-05 2.195419846e-05 4.843010943e-05 3.087137059e-06 2.402446812e-06 8.6803172e-06 -1.43988389e-06 -1.627956793e-06 -3.765061488e-06 -1.210190509e-06 -4.188724367e-06 8.656103337e-07 -1.393110924e-06 -4.040789278e-09 8.644955604e-06 2.84968827e-08 -2.561420067e-06 6.404380197e-06 3.376096149e-07 -5.78223324e-07 7.917126506e-07 3.474397667e-13 3.369840208e-07 -0.0003664571353 -0.0002950994846 -0.001606880076 3.402444997e-15 8.220112942e-07 -0.001851787602 -0.003362545254 0.005267091042 4.98009294e-16 3.383792358e-07 0.000277623981 0.0002975247148 -5.684531278e-05 1.882505071e-16 2.4902413e-07 -0.0001327106399 0.0001646253521 -0.0001743112807 1.854534822e-16 -4.221508206e-09 -1.749629777e-05 -1.671688662e-05 7.094772119e-06 6.549876233e-17 5.45007932e-09 -6.25706954e-07 -8.857964007e-05 0.0001270831435 2.490496252e-18 1.009577143e-09 1.174015835e-06 1.249293234e-05 2.393943611e-05 3.264702841e-19 1.830300007e-10 -1.560951777e-05 2.279521151e-05 1.726941769e-07 -1.984833221e-18 -3.37078657e-09 -7.96005867e-07 -4.709222388e-06 -8.083985759e-06 -2.524547545e-19 -2.606110394e-09 -5.061843441e-06 -2.395229989e-06 6.380609721e-06 9.005203853e-17 4.601713825e-10 -6.720639807e-08 -4.860226562e-06 1.190735633e-05 -3.932565798e-18 -4.377096789e-10 7.545449794e-07 -9.996279875e-07 6.084468432e-06 -9.057105009e-19 -8.877182953e-10 -4.656321889e-07 -5.696415854e-06 4.762602461e-06 --0.01655037511 0.01801777683 -0.007172270147 -0.0009206390217 -0.0001429101996 7.317247918e-05 8.756900207e-06 2.307058394e-05 4.617009136e-06 1.082224398e-05 1.318524659e-05 7.73293952e-06 2.799959164e-06 0.01116230144 -0.1115640035 0.0228599676 -0.02111578604 -0.003322589665 0.0007576747767 0.0009746780892 7.093809124e-05 -0.0005149860986 -0.0006748375092 -8.406783582e-05 -0.001802907791 2.996803627e-06 -0.0001186505261 1.023829379e-05 9.214059094e-06 -2.387905119e-05 0.0001451798058 2.758627343e-06 5.534196554e-05 0.0001967481093 -2.032155554e-05 1.277052397e-06 2.214755631e-06 4.439577921e-08 1.517081409e-06 -4.367580174e-05 3.943612001e-06 -5.088845735e-06 4.587827607e-05 1.670173623e-06 1.398377477e-06 4.230029782e-05 8.411574836e-07 -6.59671722e-06 2.063206389e-05 1.402493693e-06 -9.140658395e-06 8.117119029e-06 5.396996847e-14 -9.959759619e-07 0.05004281441 0.02421643546 -0.05872795821 2.358071121e-14 1.301059434e-05 -0.007464767477 -0.04332938849 -0.003579228244 8.709038564e-17 -6.138915492e-06 -0.001028757677 -0.0009466905269 0.001036082886 3.63908665e-14 1.159836022e-05 -0.0002378206307 -5.249555565e-05 -0.0005358249756 1.002349566e-17 4.274624604e-07 3.098879147e-05 4.743364916e-05 -0.0002098498378 -2.782161657e-17 5.643644206e-07 -1.268931097e-05 7.148206746e-05 0.0005309415881 1.632446902e-18 -4.46255792e-09 7.141537387e-06 8.05333222e-06 6.000836526e-05 -1.450453647e-17 -5.097882817e-08 -5.644278146e-05 5.476351665e-08 -3.161223165e-06 5.691322242e-18 -9.081906297e-08 6.570555446e-06 1.903127792e-05 -8.392675123e-06 5.066213776e-18 -1.736783989e-08 5.161397642e-06 2.414338769e-05 4.981384434e-05 1.968354032e-17 -7.972365074e-09 5.343136931e-06 2.213639056e-06 1.948157659e-05 1.445975572e-17 -5.439799132e-09 7.687645698e-06 1.874069818e-06 5.746243412e-06 4.226916005e-18 -7.403361096e-09 4.386455381e-07 -5.261118626e-06 2.118326153e-05 -0.01668629932 -0.01815043307 0.007029930121 0.001186694418 0.0001069484344 -7.490910143e-05 -1.797441387e-05 -8.055141085e-06 -5.780656783e-06 -1.589973946e-05 -1.202618987e-05 -6.083966399e-06 -1.994800519e-06 -0.01120849902 0.1128552732 -0.02653572048 0.02184301905 0.005777345753 9.273280549e-05 -0.0010371723 7.257038698e-06 -1.080806452e-05 0.0006008437446 0.0001209742489 0.002001450071 -5.579522994e-06 0.0001081524051 -3.879056122e-05 8.992026266e-05 -1.180435389e-05 -0.0002491029449 -3.029716556e-06 -4.051396851e-05 -0.0001700519288 2.625250117e-05 8.623743007e-07 1.686743755e-06 -1.827303577e-06 -3.522655493e-06 4.084167961e-05 -4.625259032e-06 1.605967422e-06 -5.13654054e-05 -5.72575311e-07 1.552677339e-06 -3.822788803e-05 -1.401278795e-06 5.427942202e-06 -1.592062747e-05 -1.292419696e-06 9.222367821e-06 -8.135813948e-06 -2.2497771e-14 1.96704758e-06 -0.05170691997 -0.02683617345 0.05710943747 -4.060689542e-14 -8.994039289e-06 0.005977938118 0.04376667151 0.005433204609 5.559400486e-16 5.732406208e-06 -0.0002255836324 0.001305344638 0.0009140860394 -8.814889664e-14 -1.011776977e-05 -4.907312964e-06 7.610437397e-05 0.0003852211793 -6.277619655e-17 1.25926275e-07 -5.724612717e-05 -0.0001089442885 0.0003059104279 5.295428954e-17 -5.414466562e-07 1.039317098e-05 -9.511591215e-05 -0.000514085222 3.555095223e-19 1.198688888e-08 -1.515496076e-06 -2.532893408e-06 -3.835362097e-05 3.014409945e-17 7.001410232e-08 6.72266635e-05 2.187543765e-06 3.696534204e-06 -2.737554955e-18 1.062018493e-07 -1.30212544e-06 1.872115695e-05 -5.712471219e-05 -2.514010954e-18 1.185657915e-08 -5.828304129e-06 -2.582438097e-05 -4.538064901e-05 -1.29799708e-17 1.43394073e-08 -3.984370016e-06 -3.272152716e-06 -1.276673203e-05 -5.961579632e-18 8.289822095e-09 -3.003908789e-06 6.841889098e-07 -8.134278173e-06 -2.167796715e-18 7.029743291e-09 3.614021648e-07 -8.925543645e-06 -9.017720006e-06 -0.01684440642 0.02143009615 0.004051944228 3.27858707e-05 -1.949225118e-05 0.0001063320467 5.468247593e-06 -7.203517399e-05 -2.161534518e-05 -5.157457724e-06 3.22083747e-06 1.489177435e-06 9.909623477e-08 -0.07123025587 -0.002244018374 0.02035947094 0.0690317173 -0.0007749185462 -0.02582484777 0.04318774326 0.0009527558869 -0.004179420729 0.008057329608 0.000383602785 0.001946614571 -0.0002768777845 -0.0008678324078 0.0006230972578 9.346033789e-05 -1.037438666e-05 -0.001835583006 -0.0001870701525 -4.058879245e-05 -0.001099257046 2.14262617e-05 2.514552128e-05 0.0001086227623 5.735041421e-05 0.0002110666076 6.890800437e-06 5.219017651e-05 3.437455396e-06 2.111398728e-05 -3.280087305e-06 -1.430396111e-05 -1.68346369e-05 -8.16721459e-08 -9.1541581e-06 5.406976035e-06 -6.136287714e-06 -1.323767956e-06 -2.110000109e-05 -1.390655179e-16 -4.451711605e-05 0.00778179767 -2.74227802e-05 -0.02792242609 3.000683557e-16 -4.08766634e-05 0.009236977261 0.0002168469059 -0.01076982718 5.471245455e-18 -1.290899486e-05 0.00369342883 0.0002324260656 0.001815415568 -5.549858562e-18 -2.446988689e-07 0.0005677422648 3.706627087e-05 0.0001580625928 4.625352783e-19 -3.221001838e-08 -3.176145446e-06 -0.000180488877 -1.730762458e-06 2.026267739e-18 -1.972271393e-07 7.168714279e-05 3.454245833e-05 1.977262973e-06 2.838541214e-20 -2.549873096e-09 3.656809265e-06 9.021323307e-07 1.288369117e-06 3.20500717e-20 -2.820704194e-09 -2.046766204e-06 1.028028053e-07 8.733057789e-07 2.900937537e-20 -3.411814221e-09 2.960329235e-06 -5.508772745e-08 -3.062198762e-06 1.025102378e-21 -2.783459203e-10 1.061840734e-08 -2.682007857e-08 -1.082149578e-05 3.445683383e-21 -3.677523888e-09 2.083874691e-06 1.616308899e-07 4.964130538e-07 -1.418502754e-20 -2.728620258e-09 1.1960811e-06 4.017964242e-07 4.740802229e-07 -1.169763145e-20 -1.596210769e-09 -1.568440702e-08 -1.3586912e-06 -6.72953904e-07 -0.02845690941 -0.0295394097 0.008869021882 0.004447887413 -8.461837356e-05 -0.0001527057549 -6.454718923e-05 3.940270203e-05 -2.373270232e-06 -5.97868906e-05 -1.722246176e-06 -1.687239849e-06 -8.942870616e-07 0.006884344931 0.09411814507 -0.03087702556 0.07042219684 0.0008268452781 0.002785113515 0.0007044054822 4.181649704e-05 -0.002170762057 0.0003377513919 6.868001004e-06 0.004202980451 -4.531288622e-06 -0.0001341274957 0.0003381561704 5.078612438e-05 2.241580356e-05 -0.0007900606761 3.302511179e-06 2.198387917e-07 -1.421227257e-05 8.631559135e-05 3.598467793e-07 -1.507046413e-05 -5.784619619e-07 -1.861098679e-05 -6.637611246e-05 -6.152060576e-07 -2.853832561e-05 -6.572624151e-05 -7.005568549e-06 -8.978138361e-08 -6.396263022e-06 1.587347362e-07 3.515011966e-06 -1.075585217e-05 6.787029183e-08 -1.685854842e-06 -1.664993063e-05 5.589951956e-13 4.532287902e-07 -0.05414749772 -0.0004435410358 -0.01222815033 -3.592302361e-14 -1.128495021e-06 0.006539083609 0.08125277294 0.001673939991 -9.101226623e-16 -1.801856344e-05 0.0005718412 0.01294962359 0.0004014917497 -4.357125107e-15 -4.904950702e-06 -1.217537469e-05 -0.001141098002 0.0001081072858 -1.824212412e-16 -3.852714772e-07 -3.110522044e-05 -0.001402475686 0.000869765512 6.756787241e-18 -6.688001103e-07 -3.527395008e-06 -0.0003202419049 -0.0002606400748 -6.52703639e-16 -1.080063448e-06 4.256193949e-07 -1.876157238e-07 9.747812316e-06 -1.401508347e-15 -3.858035863e-09 3.178177004e-06 0.0001267585729 3.150361636e-08 1.172195949e-18 2.885298113e-10 -1.895654345e-06 -8.531185955e-05 -7.702581454e-05 -2.251122588e-18 -4.429241666e-09 -1.603346132e-06 -7.689749467e-07 -5.595678665e-05 1.137747796e-16 1.604469293e-10 -3.923588687e-06 3.731645117e-06 3.092284792e-07 8.224038548e-17 4.261376307e-10 4.573615706e-07 4.796146067e-06 -6.488307215e-06 2.799066976e-18 3.128117078e-12 -4.719003388e-06 -5.136420824e-07 -2.471046761e-05 -0.06562108837 0.03121760729 0.08669108936 0.02578952359 0.0005498449721 -0.001424786139 -0.001273082043 -0.0005108718628 0.0001965835471 0.0002134504814 9.032752286e-06 -5.679640871e-05 -1.916980518e-06 0.105732845 0.04107751993 0.0126651171 0.02578722991 0.05609611989 -0.003060316377 0.00287397294 0.00324488929 -0.002479728736 -0.001094244826 0.0002529249794 0.02668793914 -0.0001532520938 -8.286817467e-05 -0.005677564493 -9.13299911e-05 0.0002845218763 -0.0006905496924 -7.772153238e-05 -8.535022737e-05 0.001846912165 -1.481573061e-05 3.020352412e-05 -0.0006896236978 -8.421292986e-05 1.308220989e-05 3.247456804e-05 -6.162906433e-05 -1.93892746e-05 0.000262435386 -1.529361655e-05 -6.080802426e-06 -0.0001792716822 2.577539338e-06 3.033247405e-06 -1.02919679e-05 -1.021724759e-05 -4.321739733e-06 2.669180763e-05 1.967198917e-14 -1.355508772e-05 -0.08171512001 -0.03509490452 -0.02554467794 8.437564097e-15 -5.212224874e-06 0.01397248355 0.02514639818 0.1013930638 3.030376313e-16 1.840215077e-05 0.01102666491 0.02001719529 -0.02526690291 -3.759717207e-16 1.567484389e-06 -0.001304204787 -0.0006403215262 0.004140797328 1.525190439e-16 1.896100355e-06 -0.0001076152299 0.0002329057978 0.004818702875 -1.05012241e-17 8.901367961e-08 -0.0004812627492 -0.000266406487 0.0002578073182 9.618797199e-18 -9.109649003e-09 -0.0001126836927 -6.029256488e-05 -0.0001716818102 -3.802502165e-19 1.602341045e-08 3.625141293e-05 7.842957976e-05 0.0001246439925 1.87685425e-18 3.832742838e-08 0.0001140112082 -8.707656945e-05 1.816663811e-05 2.173897612e-18 1.733957802e-09 -0.0001163413393 -4.737709782e-05 -6.056898715e-05 -2.036256529e-17 2.296529202e-09 -7.171850659e-05 3.296889224e-06 1.658944348e-06 9.929653932e-19 -4.135981794e-09 3.136932677e-05 1.750474308e-06 -2.468107919e-06 9.280154468e-19 -3.995162156e-09 -4.541018075e-05 -1.226783911e-05 -1.536888553e-05 --0.000300010796 0.0003266105773 -0.0001300126711 -1.668854294e-05 -2.590551722e-06 1.32640702e-06 1.587374657e-07 4.182034671e-07 8.36931234e-08 1.961762202e-07 2.39010675e-07 1.401759976e-07 5.075522289e-08 -0.03946208012 -0.02779525464 0.02722250929 -0.0003978963108 -9.061176454e-05 1.238742536e-05 -2.018097393e-05 0.0004926248174 0.0005800906796 -3.043324738e-05 -5.824738798e-05 7.511929529e-05 -4.374838662e-05 -6.028730934e-06 4.712476731e-05 -5.862396527e-05 -1.540993809e-05 4.344205191e-06 -3.241877796e-06 -8.164799756e-06 1.839101339e-05 -8.580955066e-07 -1.181155225e-05 6.452166862e-06 4.212728917e-06 -1.938398559e-05 -2.62567963e-06 -9.527676002e-06 -3.573057735e-06 9.72947453e-06 -4.58666602e-06 -2.835190967e-06 3.562849372e-06 -4.459443807e-06 -2.012955891e-06 1.584523254e-06 -5.359596026e-06 -1.680708262e-06 3.560355955e-06 -2.591455011e-13 2.921967745e-07 0.03989957635 -0.04825312049 -0.0003505721038 5.357505046e-14 -5.277008917e-07 0.002368077203 -0.0002852870054 -0.004669984127 -2.427121291e-16 3.250606232e-06 -0.0005097852141 0.0007023246863 0.0007053939888 -1.795833858e-14 3.682408411e-06 -6.017255063e-05 -1.890810078e-05 0.0004930806283 2.588811989e-16 -4.52684904e-07 -4.408664115e-05 -2.657325336e-05 -0.0001111629881 2.558875384e-17 2.729980419e-07 -4.014602535e-06 -2.373378877e-05 1.460757073e-05 -5.215858082e-18 2.390623879e-09 1.052997194e-06 -4.357623806e-06 2.075942503e-05 -4.309679979e-17 4.172202503e-08 -2.019205611e-06 -5.608448803e-06 -9.947933562e-06 -5.501598e-17 5.265233419e-08 6.994841672e-06 -1.589501959e-05 2.986862856e-06 -1.879912076e-17 1.188954407e-08 -6.883191168e-06 -1.467860255e-06 1.526444912e-05 -6.047654665e-17 3.709757176e-09 2.35913921e-06 -2.81138943e-06 -2.711044174e-06 -5.972627932e-17 2.548772017e-09 4.180680684e-06 -2.990447095e-06 -2.18427007e-06 -2.197487521e-17 4.252516615e-09 -3.881485339e-06 -1.280434289e-06 5.238416183e-06 --0.0001861562851 0.000202490506 -7.842755606e-05 -1.323904241e-05 -1.193141922e-06 8.357035775e-07 2.005267944e-07 8.986505102e-08 6.449036848e-08 1.77381238e-07 1.341670065e-07 6.7874162e-08 2.225446439e-08 -0.05015574573 -0.01862869253 0.02817533905 -0.0003361349345 -0.0004837342891 9.645262904e-07 1.000745155e-05 0.0005603162635 0.0006176073612 -1.633378625e-05 -7.81913516e-05 0.0001261704782 -4.914361396e-05 -4.409352684e-06 3.292522225e-05 -5.264369859e-05 -1.922628766e-06 -1.080910809e-05 -3.368450616e-06 -6.235193225e-06 1.63079678e-05 -4.373911725e-07 -1.287699848e-05 4.688071693e-06 5.572267152e-06 -2.089349463e-05 -2.029034886e-06 -1.03265096e-05 -1.830831887e-06 9.615758946e-06 -4.916858834e-06 -9.018320548e-07 1.186212996e-06 -5.506811618e-06 -1.676994854e-06 2.371401874e-06 -5.98472351e-06 -8.669116095e-07 3.480289855e-06 -1.759522167e-13 8.857027655e-07 0.04066318986 -0.05587523871 0.008073790683 5.625030713e-14 -1.757575408e-06 0.002922208128 0.001200775863 -0.006354955162 1.123268052e-15 5.72011263e-06 6.603050532e-05 -0.0005334300348 0.00129344596 -1.157747034e-14 7.209492081e-06 -8.507236424e-05 1.263511821e-05 0.0005795499394 -2.074176371e-16 6.08991013e-08 -6.134378397e-05 -1.004620012e-05 -0.0001485784053 3.523239535e-17 2.897185188e-07 -1.873217395e-05 -4.240638968e-06 1.927601514e-05 -6.813553908e-18 1.147273319e-08 -2.439887998e-07 -2.512849619e-06 1.851832506e-05 -1.29751679e-16 4.538106087e-08 3.062508379e-09 -9.101666652e-06 -1.318885845e-05 -3.008389245e-17 7.418373534e-08 -1.569746517e-05 -2.136797915e-06 1.652569496e-05 -1.037538156e-17 9.730029848e-09 -6.838545389e-06 5.777056922e-08 1.254183469e-05 -5.246061596e-17 8.633690007e-09 1.850849936e-06 -4.148506964e-06 -1.483734557e-06 -4.184165845e-17 4.910424179e-09 -4.949125272e-06 -5.634353503e-07 5.079342416e-06 -1.397000811e-17 4.783384793e-09 -2.51261955e-06 6.899946818e-07 1.774349792e-06 -0.02368413948 0.03428144091 0.008121632139 0.0001863357907 7.994039579e-05 0.0002348813993 4.974034653e-05 -7.160157644e-05 -4.005088591e-05 -2.104615183e-05 5.819015789e-06 2.903268458e-06 -6.209620183e-07 -0.002245226768 0.07711105228 -0.1514982626 -0.0434453476 0.0957375481 0.0063053189 0.003446954148 0.04979185906 0.007838999096 0.007067763358 0.008743693146 0.002199612908 0.001335875063 -5.445339936e-06 3.287257826e-05 -0.0001331042572 -0.001945563812 -5.643125745e-05 -0.0002256534935 -0.001195564629 -0.0008323058173 -8.42951191e-06 -2.896894595e-05 -4.056074037e-05 1.388515977e-05 3.877199807e-05 0.000224434912 7.187933561e-05 5.856469577e-05 1.672439317e-05 2.430295037e-05 -1.007103103e-06 5.441583045e-06 -7.360923421e-06 5.379425889e-06 -1.95880545e-06 -4.711229815e-06 -2.162574293e-05 -2.480201185e-05 2.578153523e-16 1.498078836e-05 -0.003029079843 -0.03320869656 0.008550527897 -5.57258095e-16 1.382681567e-05 -0.001428749623 -0.01722844043 0.01243749258 -1.292108154e-17 4.408801301e-06 0.00556044988 -0.0001655414236 0.0009989414147 1.059625679e-17 9.239310521e-08 0.0005115133685 0.0009130618712 0.0003809253861 -8.450767491e-19 1.01348279e-08 -0.0001091835645 -8.580207311e-05 2.981157611e-05 -3.705950798e-18 6.685058765e-08 -1.146208112e-05 4.472818197e-05 -3.757695919e-05 -5.061906909e-20 4.787343344e-10 8.075563096e-06 3.168960379e-05 8.403518624e-06 -6.103556835e-20 1.559308282e-09 1.410568222e-06 5.936645918e-06 6.253551123e-06 -4.938090675e-20 1.149579123e-09 -1.585713575e-06 -1.552535502e-05 -9.203324654e-07 -1.48409006e-21 9.45339698e-11 -3.221423957e-08 -4.523141006e-06 -1.982715291e-06 -6.423623763e-21 1.279022864e-09 2.743697952e-06 2.859516351e-06 8.150714361e-07 2.650959244e-20 9.225055491e-10 -2.802883332e-07 -1.519783618e-06 3.808284433e-07 2.177902378e-20 5.334421255e-10 -1.021664085e-06 -1.759375626e-07 -5.371267617e-08 -0.01061100472 -0.01148087107 0.002653836334 0.002027081997 -1.33317158e-05 -4.706867628e-05 -1.187888728e-05 2.101693102e-05 3.479445308e-07 -2.391307772e-05 2.993720289e-07 1.206717864e-08 -7.912840721e-07 0.04887495993 -0.1005112592 0.03066056064 -0.002429283029 0.01999120471 0.008525265564 0.001756145885 9.021052329e-05 -0.0006527350281 -1.666282478e-05 0.000131655696 0.002196991606 -2.879985957e-05 -0.0001641080631 0.0001234477437 8.742151767e-06 -0.0002479274459 -2.223682076e-06 -1.471136067e-06 5.78486098e-06 4.669246657e-05 -1.96496685e-05 2.496209483e-05 -6.26825327e-06 -3.943980279e-06 -4.012625887e-05 -1.748167902e-05 -4.192301133e-06 -1.861869682e-05 -1.159169725e-05 1.043531405e-06 3.26767969e-06 -8.786552124e-06 3.471940185e-06 -1.05837629e-05 2.013024491e-06 5.771689865e-07 -1.337506728e-05 -1.53201046e-06 -1.719408115e-13 -2.068106823e-06 0.02445718829 0.03075752772 -0.07912844989 -2.320069183e-14 8.845648805e-07 0.01022019504 -0.004001676267 0.02798754789 3.880646551e-15 -1.073571344e-06 0.0001489085326 0.003331483436 0.003211152261 -6.568606528e-16 9.467844159e-07 -0.0006647523764 0.0003680113707 0.0009714941623 9.313791635e-16 -5.39416495e-07 -0.0002876485906 -0.0003595858112 0.0001809456286 -3.728202189e-18 9.273014578e-08 -5.344700184e-05 -2.547836881e-05 -7.654362802e-05 6.658746479e-16 -1.418307767e-07 1.548211572e-06 -1.681231466e-07 1.937382071e-05 2.392724226e-15 -1.978532074e-09 -1.052004093e-05 -2.77323924e-05 2.822650719e-05 5.941971328e-17 -2.762471999e-08 -1.701041895e-05 -2.846886766e-05 -5.942398089e-06 2.668959035e-17 -3.690301526e-08 -2.796484102e-07 -6.928910871e-06 -9.483430615e-06 -1.890937042e-16 -1.640852816e-09 2.762973778e-06 -7.720897151e-06 6.996049128e-06 -8.74259423e-17 -2.389690101e-09 3.794279146e-06 -8.213375445e-06 3.832594005e-06 1.064301177e-17 -4.273888085e-11 1.407035202e-07 -2.966453253e-06 -8.287684003e-06 -0.02743123901 -0.03168066388 0.01216632568 0.001381393209 0.0003204925236 -0.0001567980395 5.540789475e-05 -4.29296079e-05 -4.422186622e-06 -1.602862585e-05 -2.35139174e-05 -1.436588731e-05 -4.301602532e-06 -0.000173271586 0.07400531482 0.00515343777 0.02756479477 0.007264584595 -0.0006524683087 -0.0005957083567 -0.0001816963247 0.00196891017 0.001152105226 0.000273692474 0.003039247029 8.755677014e-06 9.680158063e-05 0.0001150373208 -5.794491426e-05 -0.0002720016427 0.000114757164 -1.756819842e-05 -0.0001111767708 -0.0002714469066 1.562203152e-05 1.156032683e-06 7.792167232e-06 4.872181426e-06 5.420789399e-06 3.366042616e-05 -5.741818667e-06 -1.57275996e-05 -5.606053602e-05 -4.804034819e-06 -2.511796065e-05 -6.343614568e-05 -4.79469873e-07 -4.22137756e-06 -2.693337893e-05 -1.175228661e-06 3.111095331e-06 -7.142086829e-06 -1.530653942e-15 2.387581837e-07 -0.03422449393 -0.01867292034 0.0204975911 -2.935016e-14 -1.389876887e-05 0.01559939945 0.06289692996 0.01060823562 1.301359484e-16 -1.75201481e-06 0.002148808936 0.0009825313065 -0.001300008016 -1.292961893e-16 1.230180966e-07 0.0009989225788 0.000234169358 0.001953526232 -6.400060818e-17 -8.278586524e-07 -4.016365678e-05 -0.0001507999674 7.787194873e-05 9.66160908e-18 -1.398643472e-09 0.0001005804145 -0.0001674818617 -0.0008095241773 -1.507081483e-17 -1.147257339e-09 -2.11631955e-05 -2.575479223e-05 -8.375309053e-05 -4.847426855e-18 4.085214364e-08 7.130768685e-05 9.12213704e-06 -1.455775772e-06 7.337030856e-20 1.676124792e-08 -6.427676409e-06 -1.258662802e-05 -1.172727263e-05 -2.444011536e-19 6.363670992e-09 -1.331148249e-05 -6.434200117e-05 -6.28804058e-05 -4.8952977e-18 5.130573531e-11 -9.058439298e-06 -8.543061313e-06 -3.724074174e-05 -1.819172824e-19 1.130458012e-09 -7.106787619e-06 -4.024670219e-06 -1.52533985e-05 -3.317786687e-20 3.613823142e-09 -2.492645744e-06 -1.011282524e-05 -1.712005754e-05 -0.1087602295 0.02202570648 0.1348715373 0.04589550365 0.00203584534 -0.0008719033557 -0.001417480361 -0.00146070253 3.682499841e-05 0.000403565291 -1.021995618e-05 -4.892312043e-05 -6.519750515e-07 0.0961754342 0.1615426009 0.01355161327 0.07905521229 0.06154465703 -0.02046898413 0.005853169264 0.007146792831 -0.01561131395 -0.0007003423291 -0.001488736971 0.04029416303 -3.755601077e-05 0.0001007633702 -0.002929530201 4.627887133e-05 -3.552196364e-06 -0.001534927405 -0.0001275880596 -0.0002597970777 0.001497224864 2.51775956e-05 2.712378191e-05 -0.0005915695179 4.823792241e-05 4.21781429e-05 8.61961098e-05 -4.732525115e-05 -5.095867312e-05 0.0001065106157 -2.462382803e-06 -2.102298833e-05 -0.0002766840718 6.454119272e-06 5.086195063e-06 1.480093832e-05 -1.087334625e-05 -3.622673327e-06 -1.135668111e-05 3.709200879e-12 1.216026177e-05 -0.1262380135 -0.05195226412 -0.04785183537 3.455190403e-15 -2.386097219e-06 0.04360463469 0.09777904067 0.07296039579 -2.268132934e-15 2.897969628e-06 0.02232616049 0.02247895032 -0.0321818062 -8.09996116e-14 -9.545459597e-06 2.25879759e-05 -0.001135786562 -0.002471053353 8.301375065e-16 -7.380819676e-07 0.000303992276 0.0005790775192 0.009795918679 -3.926225037e-18 -1.565691381e-06 0.001268801567 -4.10485508e-05 -0.000879935287 6.12710051e-18 2.19140871e-09 -0.0001131148034 -0.0001078013974 -0.001806774715 -2.640513155e-17 2.742346179e-09 0.0002016003634 0.0001567064589 0.0002890229044 1.407685528e-17 5.397678874e-08 0.0004528366161 -2.946535239e-06 -5.605614377e-05 1.915980518e-17 -9.792567778e-09 -6.823707129e-05 -0.0001169646563 -0.000403069466 -7.375271595e-17 -5.152433881e-09 -4.408584861e-05 1.528925126e-05 -2.961199774e-05 4.236439457e-17 4.557481398e-09 7.849288e-05 -1.360665111e-05 -3.395324464e-05 2.034104173e-17 2.846849566e-09 -2.824776912e-05 -1.956178563e-05 -8.483743053e-05 -0.0002591462567 -0.0002991883947 0.0001071689887 2.354227291e-05 1.604964346e-06 -1.204305912e-06 -5.943413238e-08 1.525404695e-07 -9.688022439e-08 -3.411210377e-07 -1.718248433e-07 -6.52787836e-08 -1.672153165e-08 0.003513518709 -0.1015652789 0.04461782258 -0.001585456426 0.0004866741401 0.0001112595767 0.0008576867081 -0.0001119940649 0.0009069510146 -0.0001265846462 2.063485778e-05 0.000298995265 6.374873326e-06 -0.0001064374946 6.075584685e-05 -1.008880695e-05 7.46909181e-06 -9.107226464e-05 -2.190654543e-06 -1.054639827e-05 1.598229613e-05 -1.929223912e-05 3.771573656e-06 5.253979043e-06 4.955084055e-06 6.391601721e-06 -3.567550143e-05 1.019999708e-06 -2.17153433e-05 1.461252768e-05 -1.354392519e-07 -1.305777936e-05 5.807939372e-06 4.946448081e-08 -1.252460718e-05 5.566265632e-06 6.871609656e-07 -1.177667176e-05 6.256550225e-06 1.227912471e-13 -1.967054347e-06 0.05312288751 0.02486783211 -0.08803539267 -2.161878724e-14 5.132037766e-06 0.006146992561 -0.009285861319 0.001911269389 2.70675602e-15 -1.301170144e-05 0.0003373179047 0.001141186472 -0.0003187155433 -1.178165554e-14 -7.15920014e-06 1.560473732e-05 -6.232402714e-05 0.0009988058864 7.64962703e-17 -1.522957619e-07 8.047001466e-06 -0.0001402429735 -0.0001933326106 2.190591015e-17 -5.519439494e-07 -5.424702447e-06 2.62993213e-05 -4.382815497e-05 -2.059113108e-18 -1.412851757e-08 -2.666484281e-06 4.660389718e-07 2.548680213e-05 3.119350458e-17 -7.052947776e-08 -2.524523421e-05 8.404459047e-06 -1.373666262e-05 2.081981539e-17 -1.327222046e-07 -1.880340909e-06 -9.68836962e-06 6.682589762e-06 5.671832778e-18 -1.727102566e-08 4.035816964e-07 -1.387170759e-05 1.743797274e-05 2.394340617e-17 -1.941107889e-08 2.524221058e-06 8.984806848e-07 -9.116727864e-06 1.894196561e-17 -9.958645389e-09 1.715169969e-06 -9.245864085e-06 6.912450063e-06 6.987630358e-18 -8.906249118e-09 -1.001095238e-06 9.458888007e-06 -9.467838976e-06 -0.04243263882 0.06141882426 0.01455076227 0.000333840261 0.0001432216672 0.0004208148492 8.911508737e-05 -0.0001282817911 -7.175539469e-05 -3.770640516e-05 1.042538174e-05 5.20151226e-06 -1.112519079e-06 0.01971207639 -0.1626977674 0.004888752903 0.04846836334 0.02514851952 0.02929692136 0.03618892098 0.05508074677 0.0173779953 0.00971830054 0.01893868893 0.003692883526 0.002380932483 3.061683153e-06 7.232367691e-05 -0.0004036631502 -0.002386100217 -0.001047333154 -0.0003702648486 -0.002527873023 -0.001135358153 -1.518906578e-05 -4.113271447e-05 -8.330367956e-05 3.676058502e-06 0.0003188225796 0.0001708190563 7.444293253e-05 0.0001663375179 2.425340145e-05 4.119302415e-05 6.298163822e-07 9.402354185e-06 4.954400869e-07 -5.993650434e-06 -1.631215364e-06 -5.247392342e-06 -6.456349617e-05 -2.152000874e-05 -8.680213271e-17 -2.715085151e-05 -0.009012562408 -0.01925494968 -0.02153326468 1.837156719e-16 -2.485785717e-05 -0.004127081705 0.003292721648 -0.00960559788 4.443644144e-18 -7.809694979e-06 0.001831788244 0.01000270785 0.0002215048228 -3.493318636e-18 -1.539969239e-07 0.0007113466312 0.001978004804 0.0006326328269 2.576852321e-19 -2.136034726e-08 -0.0001757544063 -0.0001805032404 5.096359301e-05 1.220172361e-18 -1.196760381e-07 -1.696232573e-05 -2.509581933e-05 4.172641006e-05 1.042749216e-20 -8.970542244e-10 1.241077616e-05 6.237412112e-05 1.381688199e-05 1.874694665e-20 -5.699438131e-10 2.422765387e-06 1.123743029e-05 1.10941472e-05 1.636359875e-20 -2.061377349e-09 -3.258198615e-06 -1.04049159e-05 -1.893353389e-05 1.081976019e-21 -1.668249732e-10 -7.323943941e-08 -7.685656652e-06 -4.263306602e-06 2.061487598e-21 -2.196682674e-09 2.750997659e-06 8.149759604e-06 9.503308028e-07 -8.896126242e-21 -1.654139441e-09 -5.112720573e-07 5.383453489e-07 -2.474943112e-06 -7.293541312e-21 -9.783924434e-10 -8.457469675e-07 -1.425734455e-06 -7.661805039e-09 -0.0196715876 -0.02128422019 0.004919908651 0.003757977884 -2.471547437e-05 -8.72599356e-05 -2.202209666e-05 3.896298329e-05 6.450493141e-07 -4.433210761e-05 5.55001458e-07 2.237116729e-08 -1.466950053e-06 -0.08559978859 0.001499643682 0.04837146 0.00454554071 0.02617452859 0.0177590221 0.001003152577 0.002354123543 -0.001248935374 7.855158045e-05 0.0001026903502 0.004041387178 -0.0002454990761 -9.661127671e-05 0.000236180445 1.122308346e-05 -0.0004756198352 2.028741131e-05 5.596308175e-06 2.303354433e-06 8.553342301e-05 1.218002925e-05 4.396267834e-07 -1.286628511e-05 -5.256704207e-05 -2.374520458e-05 -3.641964835e-05 -2.580024529e-05 -1.30161933e-05 -2.423587965e-05 2.123341058e-06 -1.043349968e-05 5.552433579e-07 -1.093471666e-05 -1.042503428e-06 2.802349219e-06 -1.328969227e-05 -7.308899123e-06 -5.473065447e-06 1.504718017e-12 7.126931724e-07 0.04188462385 -0.08416580658 -0.002837928679 1.342960634e-14 -5.034753086e-07 0.01697141048 0.02638055617 0.01949911788 6.381468059e-15 6.784058452e-06 0.0002874026265 0.004410561622 0.00770681412 3.877074737e-15 -3.259320192e-07 -0.000108749771 -0.0004644172554 0.001719355857 1.434555111e-15 4.207958879e-07 -0.0007712120665 -0.0004131995525 0.0003490910317 -7.41451487e-18 7.258632846e-08 -9.000903882e-05 -5.701301414e-05 -0.0001406529644 9.541218236e-16 2.863394353e-07 -2.337572892e-06 3.175950032e-06 3.527880077e-05 -1.312200829e-15 -4.332993505e-09 -1.769952355e-05 1.670642571e-05 -1.534854854e-05 1.023800833e-16 1.554759902e-08 -5.289510929e-05 -2.882011128e-05 -1.410942484e-05 3.565741205e-17 2.409837877e-08 -4.115371711e-07 -2.18322277e-05 -8.26358104e-06 2.196897414e-16 1.655491481e-10 4.643916443e-06 3.867315789e-06 -4.758400613e-06 1.696794037e-16 5.70120563e-10 -6.937427683e-06 -1.061117385e-06 6.652591342e-06 4.408607884e-17 1.755148904e-11 3.556798469e-07 -1.534189632e-05 -5.379001636e-06 -0.01547410997 -0.01787123346 0.006863089976 0.0007792513642 0.0001807915622 -8.845062027e-05 3.125589245e-05 -2.421682349e-05 -2.494579339e-06 -9.041834342e-06 -1.326432771e-05 -8.103874562e-06 -2.426557203e-06 0.0135166646 -0.08057175648 0.04896163413 0.01546849417 0.004111222348 -0.000368768248 0.000184502081 -0.0001360014016 0.002112954083 0.0005034217822 0.0001783891061 0.001861385473 1.478158948e-05 -6.402830182e-05 0.0002110956938 -2.033242273e-05 -0.0002774309357 5.226333808e-05 -6.509251798e-06 -9.061300431e-05 -0.000132635232 -1.197060682e-05 3.387795693e-06 1.852696589e-05 7.518841409e-06 7.821587383e-06 -1.897368239e-05 -6.762470344e-07 -3.8875621e-05 -1.557839872e-05 -1.201527431e-06 -3.223326279e-05 -2.621682064e-05 1.510644271e-07 -1.758033402e-05 -9.211948032e-06 7.510385877e-07 -1.265135807e-05 2.469269917e-06 4.741483793e-15 -4.614777764e-07 0.04275700134 0.01815564354 -0.09859157643 -1.789657992e-14 -9.957311823e-07 0.013174416 0.02667811117 0.007537095619 1.363893905e-16 -1.132253008e-05 0.002465542961 6.355640474e-05 0.0001166736795 -2.346710448e-17 -1.316273822e-06 0.0003991766613 0.0001563407593 0.001929254717 -1.571139197e-16 7.892542343e-07 -2.416322197e-05 -0.0002210044898 -1.87277035e-05 5.787759449e-18 -1.487573891e-09 3.501698083e-05 -6.984522275e-05 -0.000536202438 -4.750138575e-18 -1.009615265e-08 -2.02034119e-05 -1.380597463e-05 -1.406374027e-05 2.90684376e-20 -5.092801599e-08 2.217684477e-05 1.415387879e-05 -5.464855746e-06 2.16944572e-19 -3.615953842e-08 4.472157844e-06 3.530563994e-06 -4.849260252e-05 -1.698144041e-19 -4.131602016e-08 -4.669440748e-06 -6.130714679e-05 -7.074656192e-06 -1.271073158e-18 -3.113582058e-10 2.850231824e-07 -1.073048318e-06 -3.421121021e-05 -2.115056246e-19 -3.280537419e-09 2.201140124e-06 5.436290739e-07 -2.150685606e-05 -3.767991073e-20 -9.980765868e-09 -8.99574425e-07 -1.975617176e-05 2.743345038e-06 -0.1881873019 0.04901206006 0.2380046767 0.08285036029 0.003550780277 -0.001662165566 -0.002448640367 -0.002538938174 6.499119823e-05 0.0007105227819 -7.651663195e-06 -7.900377642e-05 4.082391151e-06 0.2159759558 0.223903367 0.02280953847 0.1186678034 0.1310108304 -0.02453755058 0.0112014716 0.01312825355 -0.03019313328 -0.001690216291 -0.002090512098 0.07192624333 -7.986403608e-05 7.58951127e-05 -0.005453348475 1.09610784e-05 -0.0002410301197 -0.002430214416 -0.0002659768077 -0.0003647821068 0.002958132631 5.645924154e-05 6.264526318e-05 -0.001032654158 7.820472703e-05 7.121802524e-05 0.0001173041776 -9.218096568e-05 -0.0001079096577 0.0002022868786 -7.989133781e-06 -4.773181636e-05 -0.000441562969 1.220596819e-05 9.979149248e-07 5.517065215e-05 -1.855354206e-05 -1.129474746e-05 -1.751789055e-05 -2.965709781e-12 1.691905946e-06 -0.223795369 -0.09725081387 -0.09043638302 -3.025348959e-14 -6.22976512e-06 0.06833152487 0.1582379866 0.1527307148 9.902063665e-15 1.318793884e-05 0.04090219177 0.04248741559 -0.05777981679 1.765006635e-15 2.888998009e-05 -0.0001944456867 -0.001660033767 -0.005279164135 1.598543147e-15 -1.356823113e-06 0.0004212833024 0.0009693807851 0.0176358116 3.20244764e-16 -8.259088068e-07 0.002274572091 -0.0004634821459 -0.0008613736633 9.590391648e-18 4.260946907e-09 -0.0001757138983 -0.0001742631035 -0.003128314109 -7.368392234e-17 4.730883905e-09 0.0003163716486 0.0003439019125 0.0005269015122 -5.649055567e-18 6.234112686e-08 0.0008054242247 -4.982148955e-05 -0.0001203796299 1.690819153e-17 -2.916511493e-08 -0.0001412813619 -0.0002151245812 -0.0006852824162 5.07100485e-17 1.018387872e-08 -7.649844461e-05 1.54441454e-05 -7.930481128e-06 -4.085201075e-17 2.435019116e-09 0.0001426825447 -2.415647168e-05 -3.541631204e-05 -8.40492878e-18 -1.715098749e-09 -5.221118661e-05 -9.267146718e-05 -9.757321622e-05 -0.03314953554 -0.03827165574 0.01370886944 0.003011486341 0.0002053042297 -0.0001540527042 -7.602710177e-06 1.951270985e-05 -1.239274872e-05 -4.363560603e-05 -2.197953319e-05 -8.350347732e-06 -2.138989059e-06 0.01000740298 0.01723876132 0.02249767692 0.02545784456 0.02832776269 0.004437877013 -0.0001176351985 -4.819155839e-05 0.0003537054187 0.0007779359498 0.000594935564 0.005117394254 -6.323834179e-06 -2.563523114e-05 -4.572875826e-05 0.0001916688625 -0.0004202477299 -0.0002096966644 -4.588394162e-05 -3.164925401e-05 -0.0002216176595 2.580521485e-05 1.690756224e-05 2.17362834e-05 -1.01063359e-07 -1.679366234e-08 1.903386112e-07 -1.308381682e-05 -3.961080126e-05 -8.450300698e-05 -2.315433198e-06 -4.201683622e-05 -2.604562142e-05 -2.675454879e-06 -1.190134961e-05 -1.161293478e-05 -1.30746778e-06 -3.989301734e-06 -6.552579157e-06 1.925893524e-14 -2.837727735e-08 -0.01113319327 -0.01929911365 -0.03167902184 8.181089954e-14 -2.503853067e-06 0.0195125925 0.0645160201 0.02653130392 1.073889983e-14 -9.77627968e-06 -0.0008477992722 0.006067365935 0.002412101228 1.141606705e-13 -4.948429006e-06 -2.299640269e-06 0.0001637934712 0.002554757501 -1.961549823e-17 -1.673918566e-09 -0.0001984082912 -0.0004815921009 0.0003730848713 2.766615517e-16 -1.444749171e-06 9.256842431e-06 -0.0006266392323 -0.0004785630164 2.33124763e-18 -2.319071286e-10 2.525592735e-06 1.264763906e-06 1.103099379e-05 -7.044700148e-17 1.540074735e-08 6.972279295e-05 5.631494631e-05 -2.194023518e-05 2.846051918e-17 -2.245566585e-08 -1.074837123e-05 -0.0001163533745 -2.743380294e-06 1.230713157e-17 -4.891117765e-09 -2.249799364e-05 -7.556406152e-05 -4.961894698e-05 2.013420065e-17 -1.418353765e-09 -2.830355805e-06 -1.554030044e-05 -1.413024955e-05 3.862453733e-18 -2.119720692e-10 -3.21841655e-06 -3.79235127e-06 -1.816674112e-06 7.727967099e-18 -1.125312251e-09 -1.025666069e-06 -2.640597327e-05 -1.369201528e-05 -0.01755998106 0.02541707094 0.006021570118 0.0001381537615 5.926969977e-05 0.0001741466237 3.687866911e-05 -5.308710192e-05 -2.969467389e-05 -1.560411464e-05 4.314355907e-06 2.152551888e-06 -4.603959241e-07 -0.1055449561 0.01098827407 0.02936640604 0.03267301852 0.04588305995 -0.04204574208 0.01776054535 0.03162383741 -0.00629946606 0.003761326472 0.006979752157 0.002862793939 0.0002740127718 -4.992512742e-08 0.0008452754195 0.0001793823301 -0.001190982273 -0.0005476048972 -0.0002883351108 -0.0009487325541 -0.0004373650262 -2.45081099e-06 -1.927669285e-05 -3.582716166e-05 -1.838077996e-05 5.20873259e-05 0.0001625871567 2.526045418e-05 5.382964532e-05 3.405234794e-05 2.949736446e-05 1.89555365e-08 -1.009561318e-05 -5.379139199e-06 -1.157281772e-06 4.338909428e-06 -1.080965345e-05 -2.119848071e-05 -6.289510204e-06 -1.459706664e-16 4.481908431e-05 0.009112257253 -0.01867784337 -0.01166187492 3.077008003e-16 4.12791024e-05 0.00887350999 -0.008117091111 -0.004772882222 7.663776011e-18 1.310909017e-05 -0.000266243255 0.001460158422 0.004315971116 -5.892866538e-18 2.713147205e-07 0.0002771016959 0.0007266189338 0.0004748852803 4.575765865e-19 3.208400011e-08 -7.91068268e-05 -7.327296339e-05 9.503030218e-06 2.063378977e-18 1.989832234e-07 5.490738864e-05 -6.895185446e-07 -6.65620208e-05 2.839059258e-20 1.48642236e-09 4.906345742e-06 2.463280524e-05 8.573436125e-06 3.394641718e-20 3.266879774e-09 9.899940351e-07 4.509674873e-06 5.350594011e-06 2.947097108e-20 3.406680836e-09 2.189977236e-06 -8.701161984e-06 -9.264037888e-06 8.193090395e-22 2.775886079e-10 -9.942848034e-09 -3.207338298e-06 -1.875430512e-06 3.658167923e-21 3.767618469e-09 8.618025039e-07 2.747212721e-06 1.553479645e-06 -1.498692106e-20 2.742319879e-09 9.247472205e-07 -3.563978687e-07 -2.015532747e-06 -1.218476338e-20 1.604332174e-09 -7.6930301e-07 -1.752107825e-07 6.864269048e-08 -0.02865985462 -0.03100932516 0.007167894608 0.005475058852 -3.600837496e-05 -0.0001271304136 -3.208434935e-05 5.676580149e-05 9.397827944e-07 -6.458816568e-05 8.085906143e-07 3.2592916e-08 -2.137223294e-06 0.04836295676 0.0443165468 -0.03269894305 0.008178453981 0.05153265663 0.02140137993 0.001017998464 0.001201320996 -0.003240928808 0.0001243715474 0.0003181940302 0.004486880407 -0.0001484846675 -0.0001102721028 0.0005525879139 2.203196664e-05 -0.0006561804569 3.743409249e-05 9.968627072e-06 1.171414126e-05 8.794061184e-05 2.164266962e-05 5.960475349e-05 -9.623287398e-06 -2.797444587e-05 -2.709978375e-05 -8.86517923e-05 -1.725425189e-05 -1.676166901e-05 -5.14831875e-05 -2.507276576e-06 4.861303386e-06 2.380077378e-06 2.448956345e-06 1.5209205e-06 -9.382914161e-06 -4.11901125e-06 -8.257885177e-06 -1.604720724e-05 -6.984200544e-13 1.892700915e-07 -0.05605429866 -0.01032440807 -0.008403351277 1.004016632e-13 3.180611263e-07 0.004132252808 0.03259145615 0.05342781436 7.650694947e-15 5.41320293e-06 0.0005971480671 0.006795499259 0.01015830282 2.082789063e-14 1.750942826e-06 -0.0005470102448 -0.0002822110036 -9.904459174e-05 1.145168576e-15 3.085324489e-08 -0.000943578827 -0.0006181351651 0.001032664727 -1.173535403e-17 1.575451749e-07 -0.0001367097291 -8.107233335e-05 -0.0001770666801 1.72629908e-15 3.618499837e-07 -1.034934609e-06 8.821419784e-06 2.199481124e-05 5.17367795e-18 5.324205129e-09 9.680824783e-06 1.323719889e-05 4.929390474e-05 2.347679282e-17 -9.936047348e-10 -5.772350615e-05 -4.265114926e-05 -7.61997082e-05 6.382723881e-18 -8.218674396e-10 -3.005713702e-06 -2.395859921e-05 -1.13813063e-05 -1.052736667e-16 6.587561137e-10 -2.815779291e-06 5.918681774e-06 6.261155375e-06 -7.257217412e-17 4.181112645e-10 2.488141368e-07 2.321676641e-07 -7.748335945e-06 -2.094612701e-18 -1.642604954e-13 -5.471605182e-06 -1.396355855e-05 -7.631431947e-06 -0.0002805011982 -0.0003239541668 0.0001244081221 1.412559054e-05 3.277232095e-06 -1.603355865e-06 5.665796161e-07 -4.389815002e-07 -4.52195632e-08 -1.639025038e-07 -2.404441886e-07 -1.468999852e-07 -4.398651712e-08 -0.06065042349 -0.00553529736 0.02554034046 0.0002739658557 3.655592237e-05 -7.193861871e-06 -4.872028237e-05 0.0003646397743 0.0006152625728 -2.483405683e-06 -7.488716766e-05 0.0001249584192 -5.794796729e-05 1.07207645e-06 8.198428053e-05 -5.70316599e-05 -1.333120295e-05 -4.50436603e-06 -1.028616418e-05 -5.43685299e-06 8.793626243e-06 -4.862590701e-07 -1.173012292e-05 9.079628133e-06 3.515227503e-06 -2.150834479e-05 4.619193006e-07 -1.27468593e-05 -2.012370484e-06 6.893362312e-06 -6.944472859e-06 -1.914585898e-06 3.536266164e-06 -5.625196914e-06 -8.004495125e-07 4.856457168e-07 -6.733312407e-06 -7.624725408e-07 3.210902179e-06 2.153353894e-14 3.847832737e-07 0.03946136219 -0.06462172109 0.008288548169 2.071092536e-14 -1.837404308e-06 0.002276922609 0.001532737888 -0.005291994345 1.64322755e-16 2.951803662e-06 -0.0003855855827 0.0009663067715 0.0005088432822 -1.593311177e-16 9.953345184e-07 -2.41155415e-05 -8.694748796e-05 0.0005241286633 3.745711619e-16 -1.17264348e-06 -4.066188764e-05 -3.138009872e-05 -3.675997858e-05 5.20989722e-18 2.943688927e-10 -1.343155334e-05 -3.941100133e-05 -1.149729365e-06 -2.841964412e-17 3.46918795e-09 2.926238997e-06 -8.766944336e-06 1.907491506e-05 1.191321482e-17 5.751915996e-08 4.645897225e-07 -4.030164267e-06 -5.732300995e-06 1.440945706e-18 2.471872721e-08 5.508446273e-06 -2.356531133e-05 2.980766634e-06 -6.99776023e-19 2.518991954e-08 -1.134511423e-05 -6.497255699e-07 1.42942177e-05 -1.500702835e-17 1.434400057e-10 3.67066227e-06 -6.175789362e-06 -9.185379398e-07 -1.07808551e-18 2.207429879e-09 3.695699201e-06 -6.007700237e-06 -8.550987117e-07 -2.274984103e-19 6.961413867e-09 -6.296320454e-06 -9.066026887e-08 5.106607833e-06 -0.07122917675 0.02760218266 0.09130731611 0.03507633081 0.001394852919 -0.000755798249 -0.0009443235921 -0.0009904162242 3.168082251e-05 0.0002887427071 1.471829547e-05 -2.618541009e-05 3.484855503e-06 0.1091310158 0.05029543693 0.006367968075 0.03314029426 0.06403440465 0.01311784113 0.005074374189 0.006376167831 -0.01484035038 -0.001254248375 -0.0001661725521 0.0285353592 -0.0001472852656 -4.906853895e-06 -0.002422842901 -0.0002271216566 0.000116574524 -0.0009720979667 -6.7741576e-05 -0.0001099588213 0.001482881419 5.768711986e-06 4.768613113e-05 -0.0004068671597 1.360044354e-05 -8.348892344e-06 3.190391263e-05 -6.778160936e-05 -3.046793125e-05 0.0001231110399 4.225545309e-07 -4.521880733e-06 -0.0001517631116 4.882979775e-06 4.142476095e-06 3.287656663e-05 -1.876218798e-05 -6.472470653e-06 -9.186648511e-06 1.864351138e-12 -1.490828593e-05 -0.09745020269 -0.05136724531 -0.03384443468 4.850576208e-14 -1.126746811e-05 0.01969015971 0.02761998732 0.106056759 -7.664108879e-16 3.456104512e-05 0.01405780828 0.02431012904 -0.02193120519 -3.491803317e-14 2.036594597e-05 -0.0003022406997 -0.0004276362859 -0.003992664327 7.21612783e-16 4.09497971e-08 -6.869508541e-05 0.0005592125257 0.007316446908 -1.340265083e-17 2.804419314e-06 0.0009330328153 -0.0002043402373 5.09259381e-05 4.521328667e-18 1.313228199e-09 -7.085828659e-05 -2.073930595e-05 -0.00121341369 -1.353674097e-17 2.079129721e-09 8.961788896e-05 0.0001298422166 0.0002461889931 7.817073971e-18 7.160013032e-08 0.0002787985153 -4.300710672e-05 -2.398301715e-05 1.138736698e-17 -1.023364395e-08 -8.725542488e-05 -4.742339386e-05 -0.0002363454708 -2.194951084e-17 1.882899687e-08 -2.769872197e-05 1.777326284e-05 1.116140683e-05 2.298819921e-17 -4.428376696e-09 6.044066203e-05 -1.014385706e-05 -9.6671643e-06 8.200243527e-18 -4.682464839e-09 -4.90054793e-05 -2.011476133e-05 -2.818907743e-05 -0.0001220931155 -0.0001409584058 5.04911623e-05 1.10916109e-05 7.561563871e-07 -5.673917988e-07 -2.800155587e-08 7.186729762e-08 -4.564375566e-08 -1.60714381e-07 -8.095285921e-08 -3.075518113e-08 -7.878114545e-09 -0.08901267837 0.01550122152 0.02873140133 0.0002772184918 -0.001437454342 0.0001150790639 -6.017379456e-06 0.0006332262273 0.0006743849197 1.438811989e-05 -0.0001359158711 0.0002259734641 -5.952603868e-05 3.818975501e-06 3.268203896e-05 -4.874442511e-05 -2.62410378e-05 9.081022573e-06 -1.28916203e-05 3.569702833e-06 1.201881377e-05 3.923577921e-07 -1.525239597e-05 5.477078355e-06 6.120844185e-06 -2.671094286e-05 1.680478876e-06 -1.397132353e-05 1.612493098e-06 8.31017879e-06 -6.97565348e-06 1.04088233e-06 4.089880629e-07 -8.83656855e-06 1.643135591e-06 1.72486981e-06 -8.038401302e-06 7.867846577e-07 3.422380357e-06 1.912807737e-13 1.981275217e-06 0.04273794196 -0.07946685361 0.02408849571 -3.07851706e-14 -5.174114837e-06 0.003396190595 0.004286104677 -0.0100209733 3.968015496e-15 8.987712084e-06 0.00016854884 -0.0006419891107 0.001464425553 -9.594981679e-15 7.976091555e-06 -0.0001071348868 8.339720929e-06 0.0007565854846 7.620347325e-17 1.957102579e-07 -7.972424162e-05 1.494092211e-06 -0.000148788399 4.115658561e-17 4.072107081e-07 -1.669421133e-05 -6.271075505e-06 8.583524882e-06 1.512259601e-17 1.304589523e-08 -6.178978672e-07 -2.422935754e-06 1.949544106e-05 1.400065839e-16 5.921155871e-08 5.953708591e-06 -1.880554062e-05 -1.31800271e-05 6.391266313e-17 1.085691903e-07 -1.981091568e-05 1.483965831e-05 1.317895038e-06 1.671870132e-17 1.541814987e-08 -9.401566505e-06 2.991053858e-06 1.022811189e-05 4.41023952e-17 1.844159947e-08 1.98409955e-06 -1.033609572e-05 3.603081141e-06 3.853523654e-17 9.505573331e-09 -9.582849608e-06 3.202917073e-06 5.313502116e-06 1.85670604e-17 7.889359979e-09 -3.655618537e-06 2.0964775e-06 7.868672753e-07 -0.02292669939 0.03547095276 0.00939491017 0.0003141392712 0.0001120135745 0.0002757409497 7.86138204e-05 -5.012552072e-05 -3.94688799e-05 -2.632780342e-05 4.98325368e-06 2.535003047e-06 -8.664684922e-07 -0.0009683149304 -0.002963744882 -0.07700187937 -0.03695490913 0.06764142475 0.02070234791 -0.004702221258 0.04969263762 0.01517700803 0.001985768128 0.01379472048 0.003779233528 -0.0001189069918 0.002532973111 0.000205728045 -0.0006441595933 -0.001305713629 0.0001727998667 -0.0004628032953 -0.001556616082 -0.0002781395961 -3.548982835e-05 -0.0002069201835 -4.524156332e-08 1.379075801e-05 -5.104164627e-05 0.0001956749019 2.276672425e-05 0.0001034664236 3.127474554e-05 3.149094266e-05 2.271931402e-05 1.194300113e-05 -4.87525943e-06 5.600240671e-06 -1.245827365e-06 -1.17868284e-05 -2.751319588e-05 -9.970170305e-06 -5.741819645e-17 4.839768887e-05 -0.007645808868 -0.02751773683 0.00822788223 1.365267877e-16 4.455834854e-05 -0.004153397709 -0.01355816999 0.00980485017 3.857763481e-18 1.413980798e-05 0.002789967085 0.001674822546 0.001136009193 -2.323274662e-18 2.900577529e-07 0.0001920947525 0.001342975916 0.0006285316451 2.038680027e-19 2.787110877e-08 -0.0001097222106 -2.056377522e-05 4.781661702e-05 9.280417215e-19 2.149436346e-07 -2.384362474e-05 4.991059681e-05 -0.0001349189979 1.60825711e-20 1.585440869e-09 2.595944875e-06 3.157531442e-05 2.227320346e-05 1.461011352e-20 3.093446113e-09 -8.808920467e-08 1.577839298e-05 1.134026611e-05 1.176570965e-20 3.698425319e-09 -3.300272776e-06 -2.555536807e-05 1.613183057e-06 4.619197878e-22 2.933736309e-10 -5.414534131e-07 -1.557425786e-06 -6.38702804e-07 2.467877327e-21 4.057958378e-09 1.075697539e-06 3.742160486e-06 2.113245176e-06 -6.263611666e-21 2.966590421e-09 -6.551331091e-07 -3.230448793e-06 -6.624672747e-07 -5.569238512e-21 1.734547104e-09 -5.714708627e-07 2.618427379e-07 -3.279027551e-08 -0.01017966223 -0.01129512741 0.002230122749 0.002116546085 -1.86692803e-06 -3.801005489e-05 -7.558073592e-06 2.217845306e-05 1.248117143e-06 -2.29286638e-05 4.56624333e-07 1.85299045e-08 -1.05152309e-06 -0.01216730787 -0.04121099789 0.02916654058 -0.00324505812 0.01269703955 0.0160013597 0.0006534450191 0.001372260913 -0.0008234611911 -2.615077664e-05 0.0001292263374 0.002216318202 -0.0001223957739 -7.097647255e-05 0.0001597002228 -0.0002152546585 7.320598884e-06 8.150720299e-07 -1.436325889e-06 7.745996702e-06 6.343078632e-05 -1.881766298e-05 1.849263336e-05 -3.889550164e-06 -2.956783766e-05 -1.708537442e-05 -2.015096446e-05 -1.24499491e-05 -8.553260006e-06 -9.655982401e-06 1.849766542e-06 2.031039108e-06 -6.061895185e-06 -2.106587288e-06 -5.176860572e-06 1.805545982e-06 -8.015442775e-06 -5.392145814e-06 -1.658442805e-06 -2.270996373e-12 2.633842798e-07 0.02462457774 -0.007779824881 -0.04320125748 7.529612185e-14 6.329473871e-07 0.009850192172 -0.007213201608 0.02982028165 -2.718385631e-15 5.987279797e-06 0.000167665942 0.001141790713 0.005691897479 4.192871322e-15 7.308600772e-07 -0.0005629517298 0.0003430167634 0.0009781879203 -1.145668768e-15 1.04637511e-07 -0.000476478576 -0.0001481355931 0.0002287832676 -1.902237966e-18 1.685846007e-07 -5.318359605e-05 -5.727205877e-06 -6.734167446e-05 -5.783474738e-16 2.678211114e-07 3.462924601e-06 -1.473760529e-06 2.35248745e-05 5.172794656e-16 1.094945094e-08 -9.443204208e-06 -3.388721793e-05 1.927519306e-05 -1.39168915e-16 -3.216857752e-09 -3.11627877e-05 -1.226646127e-05 -7.260472514e-06 -5.218734099e-17 -1.013969256e-08 -2.651327875e-07 -7.878726511e-06 -4.762402439e-06 -2.811262172e-16 1.078667254e-09 2.82167161e-06 -3.676487494e-06 2.961847634e-06 -2.460634751e-16 8.423211502e-10 -3.38623467e-06 -2.651968622e-06 3.566934009e-06 -5.736533523e-17 7.171480784e-13 1.548765676e-07 -5.945961738e-06 -4.224959158e-06 -0.02708032077 -0.03241990335 0.01190201794 0.001682681646 0.0003056900521 -0.0001793796271 7.707143934e-05 -1.610037144e-05 -5.067969148e-06 -2.182180097e-05 -2.295184517e-05 -1.15105561e-05 -2.864855222e-06 0.003697461723 0.06751440501 0.002995106449 0.02054097973 0.01450379535 0.001900679543 -0.0005285813878 -3.543495069e-05 0.001121636039 0.00092566075 0.0005774425639 0.003372274611 8.284997235e-07 6.835407795e-05 6.590664637e-06 -0.0001079138986 -0.0002594381532 0.0001915353698 -4.228400935e-05 -6.446545465e-05 -0.0002177799662 2.20774905e-05 5.248187238e-06 2.508015473e-05 2.427836109e-06 2.579169778e-06 2.757598903e-05 -9.568580321e-06 -1.960598111e-05 -6.123415159e-05 -8.548878912e-06 -2.25033097e-05 -5.238041083e-05 -7.497283365e-07 -9.234568433e-06 -1.51699836e-05 -1.166002665e-06 3.22680039e-06 -6.665085141e-06 3.600813929e-17 2.474381954e-07 -0.0359125005 -0.02282856207 0.02132051702 4.379158385e-14 -5.186367975e-06 0.0131852052 0.05617193538 0.02066962166 1.002552048e-15 -1.040801155e-06 0.002538508981 0.00159499223 -0.001555359791 1.341041039e-16 5.281741327e-07 0.0007548417137 0.0005363369263 0.002015108247 1.1852825e-16 -9.025819684e-07 -8.044923393e-05 -0.0001704867529 0.0001018155446 3.463854666e-17 -9.352756862e-10 0.0001101125549 -0.0003435555872 -0.0005643987209 5.384329873e-18 2.581118873e-09 -1.868957268e-05 -2.74792854e-06 -4.8709907e-05 3.072870931e-18 4.510875244e-08 4.945018508e-05 4.423997853e-05 -1.996989316e-06 5.358179424e-19 1.551340902e-08 -8.564706927e-06 -2.298822689e-05 -2.433901399e-05 1.543554698e-18 6.722351798e-09 -2.464492284e-05 -6.281997776e-05 -6.078184404e-05 2.964270586e-18 9.742456213e-11 -9.345321606e-06 -1.842669168e-05 -1.531099253e-05 1.587254751e-19 1.339817321e-09 -5.984426978e-06 -6.879815065e-06 -3.506429257e-06 3.034867937e-19 3.576539314e-09 -4.255670754e-06 -1.559280936e-05 -1.329508993e-05 --0.0002489238229 0.0002988136131 -0.0001050442716 -2.175054822e-05 -2.009998387e-06 1.326564211e-06 -2.791313279e-07 -1.611355788e-07 8.585177399e-08 3.101414689e-07 1.823267747e-07 6.513771828e-08 1.539121333e-08 -0.002827184955 -0.09472147563 0.04220920233 -0.001736893296 -0.0001372289749 4.70987615e-05 0.0007442636096 -0.0001033201564 0.000900223685 -0.0001470402675 -4.488727301e-07 0.0001996699036 5.830672901e-06 -0.0001012217404 8.713221038e-05 -2.878949366e-06 -5.025289752e-05 -3.598966189e-05 -2.205163151e-06 -1.085482273e-05 1.770273906e-05 -1.892733286e-05 2.626813345e-06 7.867307635e-06 4.566095677e-06 4.703224417e-06 -3.46168943e-05 5.399450324e-07 -2.104218864e-05 1.497829701e-05 -3.825416567e-07 -1.199896347e-05 6.53410088e-06 -4.253590508e-07 -1.160774551e-05 5.076138592e-06 3.66039889e-07 -1.141334178e-05 6.075713858e-06 1.815566625e-13 -9.355962175e-07 0.05315571045 0.0211114794 -0.08847212482 -3.35100595e-14 5.87372615e-06 0.005261759071 -0.009949575869 0.0009998775826 3.944365633e-15 -9.652375221e-06 0.001186992094 -0.0006469002976 0.0006216944755 5.989995078e-16 -6.799606749e-06 -3.597802598e-05 -5.338204744e-05 0.0009542605118 1.820991388e-17 5.114491844e-07 -1.995403563e-06 -0.0001119906199 -0.0001504899116 2.932428175e-17 -5.556408898e-07 -1.76467905e-06 1.945889254e-05 -3.599020206e-05 2.139160129e-18 -6.115787737e-09 -4.681858746e-06 1.065630568e-06 2.652944311e-05 4.648643767e-18 -5.720206969e-08 -2.417521077e-05 6.019809289e-06 -8.521616226e-06 3.42796678e-17 -1.075785419e-07 6.337329921e-06 1.698813076e-05 -3.322877723e-05 1.088472225e-17 -2.469338853e-08 6.660521031e-07 -1.35351798e-05 1.919910652e-05 3.227478159e-17 -1.127145726e-08 3.240095667e-06 1.880950203e-07 -8.403921934e-06 3.154948618e-17 -6.785003845e-09 6.655033931e-06 1.716831333e-07 -8.658647432e-06 1.159725271e-17 -9.209972974e-09 -8.323335569e-07 -2.151040051e-06 2.422558357e-06 -0.1078708585 0.01691974436 0.131399234 0.05090645595 0.00296597629 -0.0004455672188 -0.00102737787 -0.001611386216 -0.0001352243715 0.0003810405104 4.514568965e-06 -1.809632674e-05 2.487444812e-06 0.1006084725 0.1558247179 0.006848853459 0.08331591567 0.06629636733 -0.009686917718 0.007426119794 0.00911681946 -0.02467613434 -0.000829345509 -0.001532992483 0.03825888018 2.850731423e-05 0.0001463011514 0.0001954001416 -0.0008932003168 -0.0005174276201 -0.0001307913903 -0.0001262469079 -0.0002321536618 0.0007788594478 5.300187914e-05 4.835181081e-05 -0.0002777153969 0.0002003250532 4.007755451e-05 6.960230236e-05 -4.841299351e-05 -5.953703755e-05 -8.995743044e-05 -2.134865377e-06 -1.289765379e-05 -0.0002083932753 3.856976125e-06 -1.937097511e-06 6.236865796e-05 -1.166274141e-05 -4.142747578e-06 -4.732290488e-05 2.549586064e-12 1.525669001e-05 -0.1312406572 -0.0581310639 -0.05712244072 1.619990905e-14 -1.444892994e-07 0.04479445151 0.09478069043 0.0733483986 -9.774464494e-16 2.38335744e-06 -0.03081235114 0.02414767025 0.02688665169 -1.698005126e-13 -1.298941761e-05 0.0005714740124 -0.0002760614375 -0.00847597264 -1.94643109e-17 2.522977178e-07 0.0004647918865 0.0007845238536 0.01020900604 6.567462895e-17 -2.067394877e-06 0.001135603681 0.001319144865 -0.0009901651768 -1.731849686e-16 1.841945139e-08 -5.682667259e-05 -6.56896811e-05 -0.002227944225 4.358407255e-18 1.059073294e-08 0.0002506591576 0.0001883680448 0.0002014446542 1.148410655e-17 3.283579578e-08 -2.235901953e-05 0.0001219926355 0.0003531806702 1.817510977e-17 -1.351097233e-08 -5.70386829e-05 -0.0001069998365 -0.0004440030637 -6.637945732e-17 -1.155270805e-08 -2.671352684e-05 1.920072889e-05 -1.546197453e-05 3.073210342e-17 4.45176647e-09 -2.059314866e-05 -2.899051684e-05 8.081886526e-05 1.756286106e-17 1.057214938e-09 -3.427982721e-05 -5.776959815e-05 -4.343638669e-05 --0.04108882328 -0.06357041129 -0.01683739108 -0.0005629948202 -0.000200748738 -0.0004941780305 -0.0001408902921 8.983406759e-05 7.073542526e-05 4.718422149e-05 -8.930898702e-06 -4.543187418e-06 1.552869436e-06 -0.01345363 0.1807361582 -0.02319119671 -0.02727190553 -0.01679657722 -0.04734376643 -0.0135682982 -0.06457313351 -0.02930445779 -0.002323248111 -0.02607560165 -0.006679114615 -0.001575033038 -0.002716777099 -0.0003974856634 0.001251204669 0.001494312167 0.0004577189414 0.0008175529284 0.002956469726 0.0003401833417 6.324123238e-05 0.000367800901 3.534528468e-06 -2.672342733e-06 -0.0001118812167 -0.0001685530305 -1.322093266e-05 -0.0002162773862 -5.321708159e-05 -1.968673283e-05 -7.866610935e-05 -2.030801239e-05 -3.312967946e-06 3.432415149e-06 9.978287054e-07 1.954719368e-05 6.382699016e-05 4.619051646e-06 8.276946738e-17 2.78159239e-05 0.0151620404 0.0221146371 0.01094470452 -1.8823254e-16 2.546834015e-05 0.006612661129 -0.0004210573331 0.007313624069 -5.055810355e-18 8.009713611e-06 0.0003298090134 -0.01007046263 -0.0007880163837 3.346726234e-18 1.610046547e-07 -0.0001598987529 -0.002709380106 -0.001089320528 -2.611610335e-19 3.326026213e-08 0.0001923263571 4.182349339e-05 -8.373237367e-05 -1.262206964e-18 1.229903056e-07 3.610164688e-05 0.0001392651352 1.248193076e-05 -1.915987153e-20 9.131040704e-10 -2.509025205e-06 -6.242444953e-05 -3.877380254e-05 -1.92294742e-20 1.622120886e-09 9.389121779e-08 -2.894610661e-05 -2.022500428e-05 -1.387731985e-20 2.117111406e-09 6.043753754e-06 3.832437531e-05 4.451715793e-06 -8.597750496e-22 1.867967224e-10 9.741377825e-07 2.696916547e-06 1.318276653e-06 -2.791539909e-21 2.264268674e-09 -4.158425494e-07 -8.84372972e-06 -3.438431267e-06 8.07202543e-21 1.70148667e-09 1.116255158e-06 7.104481691e-06 -1.880691622e-07 7.431091768e-21 9.938186552e-10 1.95211616e-07 4.45851374e-07 2.116287178e-09 --0.01901098939 0.02109417213 -0.004164857238 -0.003952747571 3.486574325e-06 7.098553309e-05 1.411505152e-05 -4.141928545e-05 -2.330916411e-06 4.282033867e-05 -8.527670322e-07 -3.460545251e-08 1.963767937e-06 0.1034828684 -0.01617220345 -0.04724692088 -0.002183096878 -0.01387056466 -0.03184977183 -1.789745106e-05 -0.003659176474 0.001586606039 -4.102104837e-05 -0.0001294134637 -0.004090187115 0.0003358091856 1.114010782e-05 -0.0003070819143 0.0003941773641 1.09315915e-05 -2.124967221e-05 -1.861181205e-06 -1.017283393e-05 -0.0001169822085 -9.193346491e-06 6.762090583e-06 7.737054663e-06 8.043840581e-05 2.147623722e-06 4.067621406e-05 3.44475259e-05 2.000362771e-06 2.00908891e-05 -3.566097214e-06 8.707309712e-06 -1.842625679e-06 1.368233831e-05 -1.36487019e-06 -2.515659551e-06 2.269492829e-05 5.214538183e-08 4.815824967e-06 -1.07456469e-12 -1.140617246e-06 -0.04182358002 0.1016212159 -0.01107157859 3.694094517e-14 4.260726453e-07 -0.01659118847 -0.01263188403 -0.03123445689 3.489938832e-15 -1.540013721e-05 -0.000320898864 -0.001251957908 -0.01148432659 2.930560227e-15 4.332913313e-07 0.0001496931853 0.0002889485627 -0.001719624165 5.194473009e-16 -9.677701474e-07 0.001028295063 0.0001243508141 -0.0004433300149 6.381642067e-18 -1.966830971e-07 8.876298162e-05 2.228927646e-05 0.0001237063913 5.655046323e-16 -7.441923173e-07 2.284785258e-06 -4.957831647e-06 -4.280514968e-05 1.554792892e-15 3.339616306e-09 1.586109522e-05 -1.084878427e-05 3.610925721e-05 -9.980235824e-18 -2.657867285e-08 7.130817251e-05 7.615989864e-06 1.642271218e-05 -3.301350581e-18 -3.366966095e-08 4.535767448e-07 2.091276907e-05 2.231093158e-06 -2.158310765e-16 -3.551154294e-10 -4.788178833e-06 -2.051659183e-06 2.701531063e-06 -1.528309756e-16 -9.991095783e-10 1.164867678e-05 -8.450036561e-07 -6.023702139e-06 -1.790127097e-17 -2.986791889e-11 -2.522244976e-07 1.760067854e-05 1.060580442e-06 --0.01499974137 0.01795732663 -0.006592506506 -0.0009320343618 -0.0001693211745 9.935805547e-05 -4.268973276e-05 8.917967019e-06 2.807139071e-06 1.208705663e-05 1.27129861e-05 6.375676492e-06 1.586838197e-06 -0.01028590943 0.08063786876 -0.04778093418 -0.01059317158 -0.008097781469 -0.00107237716 -0.0002802778646 9.628255893e-05 -0.001645499537 -0.0003491750359 -0.0003313788377 -0.002050787867 -1.041394952e-05 8.225152755e-05 -0.0001508862561 5.657707173e-05 0.0002427139435 -8.63780562e-05 2.332540594e-05 5.736069575e-05 0.0001030900704 8.344221615e-06 -5.042583045e-06 -2.823817535e-05 -6.176761422e-06 -6.353716475e-06 2.337016901e-05 4.140524034e-06 3.867731067e-05 1.8631939e-05 4.409702291e-06 2.856922267e-05 2.011104056e-05 5.33521362e-07 1.995429596e-05 2.163991077e-06 -1.216822302e-07 1.195579193e-05 -2.724022375e-06 2.090930939e-16 4.917892317e-07 -0.04304540094 -0.01226649358 0.09755804484 -1.135752867e-14 -3.34583635e-06 -0.01202200478 -0.02168079473 -0.01271200082 -1.122959931e-15 9.148105227e-06 -0.002652128247 -0.0004175211161 6.23983697e-05 -8.363223764e-17 1.138283129e-06 -0.0002499250389 -0.0002968429363 -0.002055656715 -9.784627858e-17 -8.501735814e-07 5.629511886e-05 0.0002122896723 8.992919501e-06 -2.453840084e-17 1.05038046e-09 -4.293449708e-05 0.0001707019823 0.0003795619941 -1.660144132e-17 6.955591423e-09 1.941623824e-05 -3.53789337e-07 -4.096151285e-06 -1.578742236e-18 5.193454184e-08 -4.678886405e-06 -3.682440893e-05 5.202983847e-06 -1.665916298e-18 3.648543705e-08 -3.35444189e-06 3.248692909e-06 5.465409193e-05 -1.790355097e-18 3.978829994e-08 1.207269714e-05 5.660156572e-05 8.256870675e-06 -8.132073956e-18 2.604240692e-10 -3.763174831e-07 7.552753413e-06 2.090254567e-05 -9.608794021e-19 3.10100951e-09 -2.995166324e-06 2.224325431e-06 1.391040596e-05 -6.688184468e-19 9.844471668e-09 2.450158122e-06 2.05083596e-05 -3.210058369e-06 --0.0318418997 0.03822371433 -0.01343707934 -0.002782292055 -0.0002571154753 0.0001696917718 -3.570599087e-05 -2.061218118e-05 1.098200865e-05 3.967275382e-05 2.332292186e-05 8.332302903e-06 1.968817067e-06 -0.01081090252 -0.01348086665 -0.0229711771 -0.01936045431 -0.02797697523 -0.005671052685 9.00211966e-05 3.184368993e-05 -0.0003868687939 -0.0007358548815 -0.0007705136034 -0.004944399027 6.721539352e-06 2.48864786e-05 6.574426823e-05 7.579096082e-05 0.000503535425 -0.0002646424485 5.073805118e-05 3.27212702e-05 0.0002060924436 -2.333528821e-05 -1.485178349e-05 -3.62735891e-05 -1.540557263e-08 1.145747182e-07 3.410479346e-07 1.577583086e-05 3.804777349e-05 8.011198692e-05 8.516034724e-06 3.350719764e-05 3.122680307e-05 2.079240181e-06 1.517250102e-05 7.776807966e-06 1.658309489e-06 3.842606522e-06 6.276929987e-06 -2.67973985e-14 1.08460765e-08 0.01073443408 0.02289574741 0.02851133146 -8.750001314e-14 -9.845534567e-08 -0.01781763992 -0.05825139877 -0.03100896748 -1.40294486e-14 4.843240919e-06 -0.004858667812 -0.003287550284 0.001570628413 -5.923684363e-14 -7.143548796e-06 -0.0002035545574 -0.00040702928 -0.002756606387 -4.736157518e-17 1.133215744e-07 0.0001932802663 0.0003652746608 -0.0002990856308 -3.570867984e-16 1.219838445e-06 -1.745788781e-05 0.0005357868199 0.0004759461283 1.350450453e-19 -6.226475402e-11 -4.288727697e-06 -1.139273317e-06 -1.294730296e-05 2.502711778e-17 -1.199969872e-08 -5.158628874e-05 -6.355941676e-05 1.518120483e-05 -3.960286969e-17 1.511722219e-08 6.759224528e-06 5.580584096e-05 6.185718469e-05 -2.039668325e-17 6.341751284e-09 3.068938386e-05 7.323961936e-05 5.266339978e-05 -2.164625855e-17 4.455940879e-10 3.823388134e-06 1.765372483e-05 1.082716399e-05 -5.841431215e-18 1.302372075e-10 1.907016699e-06 4.109692441e-06 2.707275567e-06 -1.086292642e-17 1.003133952e-09 4.307532533e-06 3.678017972e-05 9.295960265e-07 --0.1884750384 -0.03804667044 -0.2335465456 -0.0916317287 -0.005259901558 0.0008621332752 0.001781731719 0.002843779821 0.0002417054653 -0.0006771366955 -1.508013382e-05 2.730688416e-05 -7.490743855e-06 -0.2134684204 -0.2309386859 -0.0122989162 -0.1300090815 -0.1349782297 0.009783733814 -0.01391941416 -0.01650414466 0.04527038753 0.001761944727 0.002419391833 -0.06840824235 -4.073963699e-05 -0.0001990357066 -0.0002548013929 0.001603073986 0.001248958827 -0.0001303189344 0.0002604327212 0.0003420843525 -0.001569754109 -9.77656091e-05 -9.684415236e-05 0.0004870672039 -0.0003530699692 -6.864065892e-05 -9.71253709e-05 9.18699945e-05 0.0001144970482 0.0001498725046 4.391458099e-06 4.422844481e-05 0.0003263107819 -7.489821559e-06 5.295468197e-06 -0.0001262538482 2.069018019e-05 1.122815539e-05 8.374355549e-05 1.872905768e-12 -4.870458731e-06 0.2321441907 0.1077573288 0.1036421322 5.044116057e-14 3.467977946e-06 -0.0745002276 -0.1572687989 -0.1452057595 -8.708328553e-15 -1.386779215e-05 0.05550061163 -0.04395054382 -0.0496011532 -5.977301546e-14 -8.962658628e-06 -0.001010172853 0.0003843574897 0.01567219116 6.112712821e-17 -4.383756632e-07 -0.0007317567077 -0.001397233483 -0.01838125894 -2.862040375e-16 2.56819615e-06 -0.002026480909 -0.001891587858 0.001044775282 2.917179578e-16 -3.326178643e-08 9.113227925e-05 0.0001097825137 0.003936815305 1.102381743e-16 -1.115082798e-08 -0.0004067956172 -0.0003830363104 -0.0003693865922 -7.05889747e-18 -3.671285641e-08 4.79624634e-05 -2.439477441e-05 -0.0007947096746 -1.287675464e-17 3.098076316e-08 0.0001129714355 0.0001926561714 0.0007702136847 -3.671232129e-17 1.064540575e-09 4.64946147e-05 -2.477536347e-05 -2.380889118e-06 2.461774082e-17 -3.121802262e-09 3.648711794e-05 4.082336548e-05 -0.0001481463755 7.389320788e-18 3.17854339e-09 6.191110321e-05 0.0001331807688 4.960157077e-05 -0.01717447434 0.0265714204 0.007037761558 0.0002353228766 8.390977821e-05 0.0002065585535 5.888990029e-05 -3.754921084e-05 -2.956628224e-05 -1.97222538e-05 3.732973552e-06 1.898980051e-06 -6.490747155e-07 -0.1292198402 0.05140797137 0.009827057178 0.01473320163 0.07688619316 -0.05982646838 0.005968590371 0.04368624687 -0.006914932536 0.0009778963395 0.009930593672 0.00390889109 0.0002705644178 0.0008009591878 0.0009854691891 0.0001552631332 -0.00122956733 -0.0002383356209 -0.0004615245465 -0.001120261241 -0.0001402882138 -1.845018314e-05 -0.0001616852831 -1.148428571e-06 -1.96549378e-05 -2.23557115e-05 0.0001521252109 5.481005636e-06 6.703056357e-05 4.876125567e-05 1.683126899e-05 3.890046887e-05 -8.054604608e-06 -3.752929028e-06 1.30068199e-07 3.868551762e-06 -1.974231544e-05 -1.588910562e-05 -1.507276876e-06 2.851463499e-16 1.29571687e-06 0.01066385844 -0.0266162625 -0.004768497985 -6.354702687e-16 1.261943264e-06 0.01226607104 -0.01502579448 -0.002375329522 -1.952376541e-17 4.342146103e-07 -0.0003042427335 -0.0005889589264 0.005990295141 1.210435325e-17 1.075929529e-08 6.847231475e-05 0.0009225449755 0.0008285384031 -9.570737272e-19 -4.398254031e-09 -8.28193641e-05 -1.689370921e-05 2.828289579e-05 -4.249731603e-18 5.715965202e-09 5.20320222e-05 -6.827857108e-05 -7.405180351e-05 -6.192074318e-20 5.182996996e-11 1.0004385e-06 2.159529341e-05 2.364650232e-05 -6.63600421e-20 1.454712187e-10 -4.313656312e-08 1.134807136e-05 1.105854609e-05 -5.494399724e-20 8.121431446e-11 1.238517742e-06 -2.254239642e-05 -1.42384438e-06 -1.673166287e-21 -1.860783574e-14 -3.828328496e-07 -1.199477193e-06 -5.675697365e-07 -7.206533947e-21 1.381848597e-10 1.37523001e-07 2.025110929e-06 3.533092274e-06 2.91339327e-20 7.260374325e-11 7.562725118e-07 -4.417630614e-06 -1.367680094e-07 2.514821654e-20 4.950307063e-11 -4.132822264e-07 1.68184766e-07 4.755616332e-08 -0.02816488868 -0.03125113573 0.006170259636 0.00585601796 -5.165379649e-06 -0.0001051654701 -2.091152894e-05 6.136290647e-05 3.453265892e-06 -6.343857476e-05 1.263379198e-06 5.12681743e-08 -2.909333344e-06 0.0852418656 0.004790487957 -0.03379863406 0.003665414555 0.03778697616 0.0414078171 0.0002334731377 0.002557557599 -0.003688521943 5.214979463e-05 0.0004050336764 0.004524317917 -0.0002564643747 -3.378590135e-05 0.0006692920107 -0.0005800520439 1.509066786e-05 3.751781158e-05 1.915896113e-06 2.710421272e-05 0.0001335570265 1.295116555e-05 6.004700971e-05 -5.859805482e-06 -5.98991926e-05 -8.275851381e-06 -9.370435792e-05 -2.714292447e-05 -5.264571905e-06 -4.480832769e-05 -4.023141873e-07 1.014922661e-05 1.803573967e-06 3.21873481e-06 1.915711695e-07 -9.718994159e-06 -1.40872237e-05 -2.466748192e-06 -1.463960705e-05 5.427864031e-14 -6.120815113e-07 -0.05707198345 -0.01683317028 -0.002611827099 -7.475114139e-14 8.391730256e-07 0.003237716628 0.0116099118 0.07446825387 -4.847546361e-15 1.799798474e-05 0.0006043160608 0.002110723685 0.0161757799 -2.258520801e-14 2.478729597e-06 -0.0005821928138 -0.0001107164302 -0.0002293992551 -7.940412396e-16 6.52362989e-07 -0.001341539669 -0.0002144212479 0.001123250709 -1.023382977e-17 4.077252782e-07 -0.000140394823 -3.001429282e-05 -0.0001406113787 -1.142903279e-15 1.242145366e-06 1.972532195e-06 9.694375307e-06 2.863772559e-05 8.823134671e-16 -1.745927671e-09 1.368849534e-05 5.986365994e-06 2.040710707e-05 -1.879168097e-17 5.122914236e-09 -8.507472709e-05 -1.435884276e-05 -7.541836576e-05 -2.6659999e-18 9.497576915e-10 -3.470278909e-06 -2.153202583e-05 -3.724948468e-06 -5.735373841e-17 -8.563330056e-10 -2.679958081e-06 7.199752288e-07 1.261976357e-05 -1.185400061e-17 -7.243907364e-10 -2.873401335e-06 -1.597107446e-07 -9.050003676e-06 -3.148818362e-19 -1.357325887e-12 -5.719280335e-06 -1.617214354e-05 -2.469061644e-06 -0.0001673406473 -0.0002003361651 7.354755519e-05 1.039799485e-05 1.8889869e-06 -1.108461867e-06 4.762567127e-07 -9.949094036e-08 -3.131710459e-08 -1.348460504e-07 -1.41829067e-07 -7.11285485e-08 -1.770314065e-08 -0.07370897872 0.006418245975 0.02530127028 0.0001994304332 -0.0004791646984 2.692425767e-05 4.515817328e-05 0.0002809439629 0.0006192800224 2.101023215e-05 -0.000130014813 0.0001402555316 -5.921260052e-05 3.387529043e-07 8.17077198e-05 -6.806942299e-05 6.856694268e-06 -7.065241887e-06 -1.579619537e-05 2.799423173e-06 8.36983011e-06 7.686689646e-07 -1.340927167e-05 9.378015918e-06 3.527258578e-06 -2.182538205e-05 4.957621128e-08 -1.557094932e-05 1.591873706e-06 6.423038113e-06 -9.283997246e-06 1.350957858e-06 3.198946873e-06 -6.884304159e-06 7.797757813e-07 3.896562034e-07 -8.211561484e-06 7.723654432e-07 3.119490133e-06 -1.35097895e-15 3.71562034e-07 0.04087189664 -0.08092882857 0.02185060075 -1.299103034e-14 -6.060465677e-06 0.002237288553 0.003525420654 -0.008116473096 7.533829911e-16 4.701124084e-06 -0.00049532439 0.001081781079 0.0004851792132 1.518068267e-16 1.374805928e-06 2.620182846e-06 -0.0001506070667 0.0005919388565 -2.110430417e-16 -1.442015717e-06 -5.177374025e-05 -1.4351358e-05 -3.887962194e-05 9.373549787e-18 4.651995085e-10 -1.158774346e-05 -4.609276626e-05 1.494419298e-05 1.846856837e-17 8.010822161e-09 -1.642321899e-06 -3.536339972e-06 1.844992839e-05 -1.231214852e-17 4.915395537e-08 3.290221072e-06 -8.509749081e-06 -5.222930738e-06 5.371047644e-18 2.878786999e-08 5.61902436e-06 -2.760058477e-05 6.575498818e-06 3.399031044e-18 3.169391138e-08 -1.408889227e-05 3.901132773e-06 1.259416935e-05 1.172046255e-17 2.697956923e-10 4.07092486e-06 -9.927846221e-06 2.702346366e-06 3.054266466e-18 2.68775982e-09 3.930459962e-06 -1.025787364e-05 3.221552593e-06 1.976742883e-18 8.330040523e-09 -7.73918045e-06 2.655098702e-06 3.792452867e-06 --0.0001172769595 0.0001407818327 -4.94901317e-05 -1.0247465e-05 -9.469824812e-07 6.249920775e-07 -1.315088008e-07 -7.59167625e-08 4.044785631e-08 1.461187927e-07 8.590069651e-08 3.068872018e-08 7.25135377e-09 -0.09385912153 0.02085569799 0.02758751442 0.0002027048989 -0.001707002615 8.754737339e-05 3.390671903e-05 0.0004941055948 0.0006690192487 2.011029593e-05 -0.0001683923977 0.0001747972576 -5.694734547e-05 4.595477055e-06 4.989132192e-05 -7.183042046e-05 1.164286121e-05 -3.123800264e-06 -1.383028653e-05 4.453049887e-06 1.211691169e-05 5.310380198e-07 -1.549533051e-05 7.397239148e-06 4.761341433e-06 -2.638127291e-05 1.916360499e-06 -1.549705261e-05 3.126900723e-06 8.217423734e-06 -9.176526478e-06 2.855066609e-06 1.805829865e-06 -8.588923364e-06 2.400473344e-06 6.740408816e-07 -8.811725419e-06 1.425968314e-06 3.417947008e-06 1.847463538e-13 1.102065893e-06 0.04334979771 -0.08689344981 0.02809479124 -2.441159035e-14 -8.122880351e-06 0.002825854138 0.00452463282 -0.01098261274 4.525827752e-15 8.330931914e-06 -0.0005961061915 0.0009368745154 0.0006610869677 -4.86051821e-15 6.519068819e-06 -6.35824248e-05 -7.762960252e-05 0.0007374917879 -1.358406135e-16 -4.803617031e-07 -6.955118622e-05 2.819138246e-06 -0.0001143591927 4.436838236e-17 5.510538819e-07 -1.868672258e-06 -2.860847163e-05 1.572792644e-05 2.450061271e-18 7.501419849e-09 -6.609367297e-07 -3.114254141e-06 2.013778851e-05 7.024112928e-17 4.195647105e-08 5.296701819e-06 -1.895020072e-05 -8.961460254e-06 7.778198896e-17 9.64423596e-08 7.676001882e-06 -2.264451368e-05 7.066491674e-06 2.170882905e-17 2.458654893e-08 -1.12533096e-05 4.951159371e-06 1.136870935e-05 3.845948652e-17 1.246888183e-08 2.64889797e-06 -1.055438268e-05 3.741251833e-06 4.16092354e-17 7.429144215e-09 5.309286219e-06 -1.081838572e-05 3.580516279e-06 2.190031628e-17 9.091101431e-09 -6.447606353e-06 5.440350248e-06 4.405983077e-07 -0.0710045372 0.02567002742 0.08959238833 0.03903690394 0.00214539261 -0.0004341283401 -0.0006525133118 -0.001130547225 -9.255812823e-05 0.000282235016 2.397647076e-05 -5.397323188e-06 4.458151399e-06 0.1109660017 0.04839984245 0.002695966294 0.03469197008 0.06442807782 0.02481910531 0.006292586252 0.008291328598 -0.02093690282 -0.00130989343 -0.0003131432733 0.02698961505 -0.0001012265881 5.018309966e-05 -6.558814823e-06 -0.0008998078949 -0.0004215720807 0.000250520969 -5.933113068e-05 -0.0001071857273 0.0009465956969 1.925172033e-05 5.420953913e-05 -0.0001791907481 0.0001196622336 -1.081369149e-05 2.447095964e-05 -6.709336814e-05 -3.108283774e-05 -1.235292741e-05 5.274650312e-06 -1.204774967e-06 -0.0001103839309 2.471829544e-06 9.771172735e-07 6.304723703e-05 -2.21209271e-05 -6.564507584e-06 -3.632706492e-05 8.908232515e-13 -2.285935732e-05 -0.1009511558 -0.05985149777 -0.03628774353 3.694513332e-14 -1.189622551e-05 0.02150656504 0.02354350492 0.1063359246 9.266830978e-16 4.598068961e-05 -0.02289000984 0.0146445806 0.03099182975 -3.107808144e-14 2.774958195e-05 0.0003303562047 2.58296869e-05 -0.008531654781 1.576531784e-17 1.177823135e-07 -3.193741571e-05 0.0008292073845 0.007685304417 1.316887399e-17 1.767618073e-06 0.0006637494807 0.001060588205 -1.753261048e-05 -1.213909215e-16 2.889140347e-08 -3.902008628e-05 -2.620236646e-06 -0.001574842718 -1.335039629e-17 6.714987701e-10 0.0001158693749 0.000139115461 0.0001866951438 1.785572311e-17 8.490636026e-08 -0.0001645447774 7.512612277e-05 0.0003726022233 1.182356132e-17 -1.542460961e-08 -7.137603287e-05 -3.561975773e-05 -0.0002730186364 -1.038557851e-17 2.066045715e-08 -1.645475752e-05 2.259182933e-05 1.450119578e-05 1.428810476e-17 -4.992544521e-09 -1.737417145e-05 -1.411534896e-05 6.155684407e-05 7.602911453e-18 -6.12406005e-09 -5.43179656e-05 -3.096952405e-05 -1.081660112e-05 diff --git a/tests/09_DeePKS/100_NO_GO_deepks_UT/jle.orb b/tests/09_DeePKS/100_NO_GO_deepks_UT/jle.orb deleted file mode 100644 index abbf2b6dc8..0000000000 --- a/tests/09_DeePKS/100_NO_GO_deepks_UT/jle.orb +++ /dev/null @@ -1,6018 +0,0 @@ ---------------------------------------------------------------------------- -Energy Cutoff(Ry) 50 -Radius Cutoff(a.u.) 6 -Lmax 2 -Number of Sorbitals--> 13 -Number of Porbitals--> 13 -Number of Dorbitals--> 13 ---------------------------------------------------------------------------- -SUMMARY END - -Mesh 605 -dr 0.01 - Type L N - 0 0 0 -1.000000000000e+00 9.999954307450e-01 9.999817230550e-01 9.999588771557e-01 -9.999268934227e-01 9.998857723822e-01 9.998355147105e-01 9.997761212345e-01 -9.997075929310e-01 9.996299309272e-01 9.995431365007e-01 9.994472110789e-01 -9.993421562398e-01 9.992279737114e-01 9.991046653715e-01 9.989722332485e-01 -9.988306795205e-01 9.986800065157e-01 9.985202167122e-01 9.983513127379e-01 -9.981732973708e-01 9.979861735385e-01 9.977899443184e-01 9.975846129375e-01 -9.973701827725e-01 9.971466573496e-01 9.969140403446e-01 9.966723355824e-01 -9.964215470375e-01 9.961616788336e-01 9.958927352436e-01 9.956147206892e-01 -9.953276397415e-01 9.950314971204e-01 9.947262976943e-01 9.944120464808e-01 -9.940887486459e-01 9.937564095039e-01 9.934150345180e-01 9.930646292992e-01 -9.927051996072e-01 9.923367513494e-01 9.919592905814e-01 9.915728235065e-01 -9.911773564758e-01 9.907728959881e-01 9.903594486895e-01 9.899370213737e-01 -9.895056209813e-01 9.890652546003e-01 9.886159294654e-01 9.881576529582e-01 -9.876904326070e-01 9.872142760867e-01 9.867291912182e-01 9.862351859690e-01 -9.857322684524e-01 9.852204469278e-01 9.846997298001e-01 9.841701256200e-01 -9.836316430835e-01 9.830842910317e-01 9.825280784509e-01 9.819630144724e-01 -9.813891083719e-01 9.808063695699e-01 9.802148076310e-01 9.796144322642e-01 -9.790052533223e-01 9.783872808018e-01 9.777605248430e-01 9.771249957294e-01 -9.764807038877e-01 9.758276598875e-01 9.751658744415e-01 9.744953584044e-01 -9.738161227738e-01 9.731281786890e-01 9.724315374315e-01 9.717262104242e-01 -9.710122092318e-01 9.702895455599e-01 9.695582312554e-01 9.688182783058e-01 -9.680696988392e-01 9.673125051241e-01 9.665467095687e-01 9.657723247216e-01 -9.649893632704e-01 9.641978380425e-01 9.633977620041e-01 9.625891482603e-01 -9.617720100548e-01 9.609463607696e-01 9.601122139247e-01 9.592695831779e-01 -9.584184823246e-01 9.575589252974e-01 9.566909261659e-01 9.558144991363e-01 -9.549296585514e-01 9.540364188899e-01 9.531347947667e-01 9.522248009319e-01 -9.513064522713e-01 9.503797638053e-01 9.494447506893e-01 9.485014282129e-01 -9.475498117999e-01 9.465899170081e-01 9.456217595285e-01 9.446453551853e-01 -9.436607199360e-01 9.426678698702e-01 9.416668212101e-01 9.406575903096e-01 -9.396401936544e-01 9.386146478614e-01 9.375809696787e-01 9.365391759848e-01 -9.354892837886e-01 9.344313102292e-01 9.333652725750e-01 9.322911882240e-01 -9.312090747032e-01 9.301189496681e-01 9.290208309025e-01 9.279147363183e-01 -9.268006839549e-01 9.256786919789e-01 9.245487786841e-01 9.234109624904e-01 -9.222652619442e-01 9.211116957177e-01 9.199502826083e-01 9.187810415390e-01 -9.176039915569e-01 9.164191518340e-01 9.152265416659e-01 9.140261804721e-01 -9.128180877951e-01 9.116022833003e-01 9.103787867756e-01 9.091476181311e-01 -9.079087973984e-01 9.066623447304e-01 9.054082804010e-01 9.041466248047e-01 -9.028773984559e-01 9.016006219888e-01 9.003163161571e-01 8.990245018332e-01 -8.977252000079e-01 8.964184317905e-01 8.951042184077e-01 8.937825812035e-01 -8.924535416387e-01 8.911171212908e-01 8.897733418530e-01 8.884222251345e-01 -8.870637930592e-01 8.856980676661e-01 8.843250711084e-01 8.829448256533e-01 -8.815573536812e-01 8.801626776859e-01 8.787608202735e-01 8.773518041623e-01 -8.759356521824e-01 8.745123872751e-01 8.730820324926e-01 8.716446109973e-01 -8.702001460618e-01 8.687486610678e-01 8.672901795064e-01 8.658247249770e-01 -8.643523211873e-01 8.628729919524e-01 8.613867611947e-01 8.598936529435e-01 -8.583936913341e-01 8.568869006077e-01 8.553733051108e-01 8.538529292946e-01 -8.523257977150e-01 8.507919350314e-01 8.492513660070e-01 8.477041155076e-01 -8.461502085016e-01 8.445896700594e-01 8.430225253529e-01 8.414487996548e-01 -8.398685183386e-01 8.382817068775e-01 8.366883908446e-01 8.350885959116e-01 -8.334823478491e-01 8.318696725255e-01 8.302505959068e-01 8.286251440560e-01 -8.269933431327e-01 8.253552193925e-01 8.237107991864e-01 8.220601089605e-01 -8.204031752555e-01 8.187400247058e-01 8.170706840394e-01 8.153951800773e-01 -8.137135397330e-01 8.120257900115e-01 8.103319580098e-01 8.086320709151e-01 -8.069261560055e-01 8.052142406486e-01 8.034963523014e-01 8.017725185095e-01 -8.000427669069e-01 7.983071252151e-01 7.965656212430e-01 7.948182828859e-01 -7.930651381253e-01 7.913062150281e-01 7.895415417463e-01 7.877711465163e-01 -7.859950576585e-01 7.842133035765e-01 7.824259127570e-01 7.806329137685e-01 -7.788343352617e-01 7.770302059682e-01 7.752205547002e-01 7.734054103500e-01 -7.715848018895e-01 7.697587583694e-01 7.679273089188e-01 7.660904827447e-01 -7.642483091312e-01 7.624008174394e-01 7.605480371061e-01 7.586899976440e-01 -7.568267286407e-01 7.549582597581e-01 7.530846207322e-01 7.512058413721e-01 -7.493219515597e-01 7.474329812490e-01 7.455389604655e-01 7.436399193057e-01 -7.417358879367e-01 7.398268965953e-01 7.379129755873e-01 7.359941552877e-01 -7.340704661390e-01 7.321419386517e-01 7.302086034029e-01 7.282704910361e-01 -7.263276322605e-01 7.243800578507e-01 7.224277986455e-01 7.204708855480e-01 -7.185093495243e-01 7.165432216036e-01 7.145725328773e-01 7.125973144982e-01 -7.106175976801e-01 7.086334136974e-01 7.066447938841e-01 7.046517696335e-01 -7.026543723976e-01 7.006526336861e-01 6.986465850664e-01 6.966362581626e-01 -6.946216846549e-01 6.926028962792e-01 6.905799248262e-01 6.885528021412e-01 -6.865215601232e-01 6.844862307242e-01 6.824468459489e-01 6.804034378539e-01 -6.783560385471e-01 6.763046801870e-01 6.742493949824e-01 6.721902151914e-01 -6.701271731211e-01 6.680603011268e-01 6.659896316114e-01 6.639151970248e-01 -6.618370298633e-01 6.597551626691e-01 6.576696280293e-01 6.555804585759e-01 -6.534876869844e-01 6.513913459739e-01 6.492914683061e-01 6.471880867846e-01 -6.450812342547e-01 6.429709436022e-01 6.408572477532e-01 6.387401796735e-01 -6.366197723676e-01 6.344960588783e-01 6.323690722863e-01 6.302388457091e-01 -6.281054123006e-01 6.259688052507e-01 6.238290577843e-01 6.216862031607e-01 -6.195402746735e-01 6.173913056491e-01 6.152393294468e-01 6.130843794577e-01 -6.109264891046e-01 6.087656918406e-01 6.066020211492e-01 6.044355105433e-01 -6.022661935646e-01 6.000941037829e-01 5.979192747957e-01 5.957417402274e-01 -5.935615337287e-01 5.913786889758e-01 5.891932396702e-01 5.870052195375e-01 -5.848146623272e-01 5.826216018118e-01 5.804260717865e-01 5.782281060679e-01 -5.760277384943e-01 5.738250029242e-01 5.716199332362e-01 5.694125633280e-01 -5.672029271161e-01 5.649910585350e-01 5.627769915364e-01 5.605607600890e-01 -5.583423981772e-01 5.561219398012e-01 5.538994189759e-01 5.516748697302e-01 -5.494483261068e-01 5.472198221611e-01 5.449893919607e-01 5.427570695849e-01 -5.405228891241e-01 5.382868846788e-01 5.360490903593e-01 5.338095402850e-01 -5.315682685834e-01 5.293253093903e-01 5.270806968481e-01 5.248344651060e-01 -5.225866483191e-01 5.203372806474e-01 5.180863962557e-01 5.158340293127e-01 -5.135802139904e-01 5.113249844634e-01 5.090683749084e-01 5.068104195034e-01 -5.045511524271e-01 5.022906078585e-01 5.000288199758e-01 4.977658229563e-01 -4.955016509752e-01 4.932363382055e-01 4.909699188170e-01 4.887024269757e-01 -4.864338968434e-01 4.841643625769e-01 4.818938583272e-01 4.796224182391e-01 -4.773500764507e-01 4.750768670924e-01 4.728028242863e-01 4.705279821459e-01 -4.682523747753e-01 4.659760362683e-01 4.636990007081e-01 4.614213021668e-01 -4.591429747041e-01 4.568640523675e-01 4.545845691911e-01 4.523045591950e-01 -4.500240563851e-01 4.477430947521e-01 4.454617082707e-01 4.431799308996e-01 -4.408977965804e-01 4.386153392368e-01 4.363325927745e-01 4.340495910803e-01 -4.317663680216e-01 4.294829574453e-01 4.271993931780e-01 4.249157090245e-01 -4.226319387680e-01 4.203481161687e-01 4.180642749639e-01 4.157804488669e-01 -4.134966715664e-01 4.112129767260e-01 4.089293979839e-01 4.066459689517e-01 -4.043627232139e-01 4.020796943278e-01 3.997969158223e-01 3.975144211975e-01 -3.952322439240e-01 3.929504174427e-01 3.906689751635e-01 3.883879504653e-01 -3.861073766949e-01 3.838272871669e-01 3.815477151626e-01 3.792686939297e-01 -3.769902566816e-01 3.747124365969e-01 3.724352668186e-01 3.701587804535e-01 -3.678830105718e-01 3.656079902064e-01 3.633337523523e-01 3.610603299659e-01 -3.587877559645e-01 3.565160632258e-01 3.542452845871e-01 3.519754528448e-01 -3.497066007538e-01 3.474387610269e-01 3.451719663343e-01 3.429062493028e-01 -3.406416425154e-01 3.383781785106e-01 3.361158897820e-01 3.338548087774e-01 -3.315949678985e-01 3.293363995000e-01 3.270791358894e-01 3.248232093263e-01 -3.225686520215e-01 3.203154961369e-01 3.180637737846e-01 3.158135170263e-01 -3.135647578731e-01 3.113175282844e-01 3.090718601677e-01 3.068277853780e-01 -3.045853357170e-01 3.023445429328e-01 3.001054387190e-01 2.978680547147e-01 -2.956324225033e-01 2.933985736121e-01 2.911665395122e-01 2.889363516174e-01 -2.867080412837e-01 2.844816398091e-01 2.822571784326e-01 2.800346883341e-01 -2.778142006333e-01 2.755957463896e-01 2.733793566015e-01 2.711650622057e-01 -2.689528940770e-01 2.667428830274e-01 2.645350598058e-01 2.623294550973e-01 -2.601260995227e-01 2.579250236380e-01 2.557262579339e-01 2.535298328350e-01 -2.513357786996e-01 2.491441258191e-01 2.469549044171e-01 2.447681446495e-01 -2.425838766034e-01 2.404021302968e-01 2.382229356781e-01 2.360463226257e-01 -2.338723209472e-01 2.317009603788e-01 2.295322705852e-01 2.273662811590e-01 -2.252030216196e-01 2.230425214136e-01 2.208848099135e-01 2.187299164175e-01 -2.165778701493e-01 2.144287002568e-01 2.122824358125e-01 2.101391058124e-01 -2.079987391756e-01 2.058613647440e-01 2.037270112815e-01 2.015957074739e-01 -1.994674819279e-01 1.973423631710e-01 1.952203796510e-01 1.931015597352e-01 -1.909859317103e-01 1.888735237814e-01 1.867643640722e-01 1.846584806240e-01 -1.825559013952e-01 1.804566542612e-01 1.783607670137e-01 1.762682673601e-01 -1.741791829233e-01 1.720935412410e-01 1.700113697654e-01 1.679326958626e-01 -1.658575468121e-01 1.637859498066e-01 1.617179319512e-01 1.596535202632e-01 -1.575927416715e-01 1.555356230162e-01 1.534821910482e-01 1.514324724284e-01 -1.493864937280e-01 1.473442814271e-01 1.453058619151e-01 1.432712614896e-01 -1.412405063565e-01 1.392136226292e-01 1.371906363283e-01 1.351715733810e-01 -1.331564596211e-01 1.311453207879e-01 1.291381825264e-01 1.271350703867e-01 -1.251360098232e-01 1.231410261946e-01 1.211501447634e-01 1.191633906954e-01 -1.171807890593e-01 1.152023648264e-01 1.132281428698e-01 1.112581479646e-01 -1.092924047871e-01 1.073309379142e-01 1.053737718236e-01 1.034209308930e-01 -1.014724393995e-01 9.952832151981e-02 9.758860132928e-02 9.565330280182e-02 -9.372244980944e-02 9.179606612181e-02 8.987417540595e-02 8.795680122580e-02 -8.604396704186e-02 8.413569621079e-02 8.223201198506e-02 8.033293751256e-02 -7.843849583622e-02 7.654870989369e-02 7.466360251689e-02 7.278319643172e-02 -7.090751425767e-02 6.903657850744e-02 6.717041158663e-02 6.530903579334e-02 -6.345247331783e-02 6.160074624218e-02 5.975387653995e-02 5.791188607580e-02 -5.607479660517e-02 5.424262977394e-02 5.241540711809e-02 5.059315006336e-02 -4.877587992492e-02 4.696361790703e-02 4.515638510272e-02 4.335420249347e-02 -4.155709094886e-02 3.976507122629e-02 3.797816397060e-02 3.619638971384e-02 -3.441976887486e-02 3.264832175908e-02 3.088206855812e-02 2.912102934952e-02 -2.736522409646e-02 2.561467264741e-02 2.386939473585e-02 2.212940997999e-02 -2.039473788245e-02 1.866539783001e-02 1.694140909324e-02 1.522279082631e-02 -1.350956206664e-02 1.180174173465e-02 1.009934863345e-02 8.402401448598e-03 -6.710918747811e-03 5.024918980690e-03 3.344420478453e-03 1.669441453672e-03 -7.672312953838e-15 -1.663885908054e-03 -3.322198415458e-03 -4.974919786836e-03 --6.622032406765e-03 - Type L N - 0 0 1 -1.000000000000e+00 9.999817230550e-01 9.999268934227e-01 9.998355147105e-01 -9.997075929310e-01 9.995431365007e-01 9.993421562398e-01 9.991046653715e-01 -9.988306795205e-01 9.985202167122e-01 9.981732973708e-01 9.977899443184e-01 -9.973701827725e-01 9.969140403446e-01 9.964215470375e-01 9.958927352436e-01 -9.953276397415e-01 9.947262976943e-01 9.940887486459e-01 9.934150345180e-01 -9.927051996072e-01 9.919592905814e-01 9.911773564758e-01 9.903594486895e-01 -9.895056209813e-01 9.886159294654e-01 9.876904326070e-01 9.867291912182e-01 -9.857322684524e-01 9.846997298001e-01 9.836316430835e-01 9.825280784509e-01 -9.813891083719e-01 9.802148076310e-01 9.790052533223e-01 9.777605248430e-01 -9.764807038877e-01 9.751658744415e-01 9.738161227738e-01 9.724315374315e-01 -9.710122092318e-01 9.695582312554e-01 9.680696988392e-01 9.665467095687e-01 -9.649893632704e-01 9.633977620041e-01 9.617720100548e-01 9.601122139247e-01 -9.584184823246e-01 9.566909261659e-01 9.549296585514e-01 9.531347947667e-01 -9.513064522713e-01 9.494447506893e-01 9.475498117999e-01 9.456217595284e-01 -9.436607199360e-01 9.416668212101e-01 9.396401936544e-01 9.375809696787e-01 -9.354892837886e-01 9.333652725750e-01 9.312090747032e-01 9.290208309025e-01 -9.268006839549e-01 9.245487786841e-01 9.222652619442e-01 9.199502826083e-01 -9.176039915569e-01 9.152265416659e-01 9.128180877950e-01 9.103787867756e-01 -9.079087973983e-01 9.054082804010e-01 9.028773984559e-01 9.003163161571e-01 -8.977252000079e-01 8.951042184077e-01 8.924535416387e-01 8.897733418530e-01 -8.870637930592e-01 8.843250711084e-01 8.815573536812e-01 8.787608202735e-01 -8.759356521824e-01 8.730820324926e-01 8.702001460617e-01 8.672901795064e-01 -8.643523211873e-01 8.613867611947e-01 8.583936913341e-01 8.553733051108e-01 -8.523257977150e-01 8.492513660070e-01 8.461502085016e-01 8.430225253528e-01 -8.398685183386e-01 8.366883908446e-01 8.334823478491e-01 8.302505959068e-01 -8.269933431327e-01 8.237107991864e-01 8.204031752555e-01 8.170706840394e-01 -8.137135397329e-01 8.103319580097e-01 8.069261560055e-01 8.034963523014e-01 -8.000427669069e-01 7.965656212430e-01 7.930651381253e-01 7.895415417462e-01 -7.859950576585e-01 7.824259127570e-01 7.788343352617e-01 7.752205547002e-01 -7.715848018895e-01 7.679273089188e-01 7.642483091312e-01 7.605480371061e-01 -7.568267286406e-01 7.530846207322e-01 7.493219515597e-01 7.455389604655e-01 -7.417358879367e-01 7.379129755873e-01 7.340704661390e-01 7.302086034029e-01 -7.263276322605e-01 7.224277986455e-01 7.185093495243e-01 7.145725328773e-01 -7.106175976801e-01 7.066447938841e-01 7.026543723976e-01 6.986465850664e-01 -6.946216846549e-01 6.905799248262e-01 6.865215601232e-01 6.824468459489e-01 -6.783560385470e-01 6.742493949824e-01 6.701271731211e-01 6.659896316114e-01 -6.618370298633e-01 6.576696280293e-01 6.534876869844e-01 6.492914683060e-01 -6.450812342546e-01 6.408572477532e-01 6.366197723676e-01 6.323690722863e-01 -6.281054123006e-01 6.238290577842e-01 6.195402746735e-01 6.152393294468e-01 -6.109264891046e-01 6.066020211492e-01 6.022661935645e-01 5.979192747957e-01 -5.935615337287e-01 5.891932396702e-01 5.848146623272e-01 5.804260717864e-01 -5.760277384943e-01 5.716199332362e-01 5.672029271161e-01 5.627769915364e-01 -5.583423981772e-01 5.538994189759e-01 5.494483261068e-01 5.449893919606e-01 -5.405228891241e-01 5.360490903593e-01 5.315682685834e-01 5.270806968481e-01 -5.225866483190e-01 5.180863962556e-01 5.135802139904e-01 5.090683749084e-01 -5.045511524271e-01 5.000288199758e-01 4.955016509752e-01 4.909699188169e-01 -4.864338968434e-01 4.818938583271e-01 4.773500764507e-01 4.728028242863e-01 -4.682523747752e-01 4.636990007081e-01 4.591429747041e-01 4.545845691910e-01 -4.500240563851e-01 4.454617082707e-01 4.408977965803e-01 4.363325927745e-01 -4.317663680215e-01 4.271993931779e-01 4.226319387679e-01 4.180642749639e-01 -4.134966715663e-01 4.089293979839e-01 4.043627232139e-01 3.997969158223e-01 -3.952322439240e-01 3.906689751635e-01 3.861073766949e-01 3.815477151625e-01 -3.769902566816e-01 3.724352668185e-01 3.678830105718e-01 3.633337523523e-01 -3.587877559645e-01 3.542452845871e-01 3.497066007538e-01 3.451719663342e-01 -3.406416425153e-01 3.361158897820e-01 3.315949678984e-01 3.270791358894e-01 -3.225686520215e-01 3.180637737845e-01 3.135647578730e-01 3.090718601677e-01 -3.045853357170e-01 3.001054387190e-01 2.956324225032e-01 2.911665395122e-01 -2.867080412837e-01 2.822571784326e-01 2.778142006333e-01 2.733793566015e-01 -2.689528940770e-01 2.645350598058e-01 2.601260995227e-01 2.557262579339e-01 -2.513357786996e-01 2.469549044171e-01 2.425838766033e-01 2.382229356781e-01 -2.338723209471e-01 2.295322705852e-01 2.252030216196e-01 2.208848099134e-01 -2.165778701492e-01 2.122824358125e-01 2.079987391756e-01 2.037270112815e-01 -1.994674819278e-01 1.952203796510e-01 1.909859317102e-01 1.867643640722e-01 -1.825559013951e-01 1.783607670136e-01 1.741791829233e-01 1.700113697654e-01 -1.658575468121e-01 1.617179319512e-01 1.575927416715e-01 1.534821910481e-01 -1.493864937279e-01 1.453058619150e-01 1.412405063565e-01 1.371906363282e-01 -1.331564596210e-01 1.291381825264e-01 1.251360098231e-01 1.211501447634e-01 -1.171807890593e-01 1.132281428698e-01 1.092924047870e-01 1.053737718236e-01 -1.014724393995e-01 9.758860132924e-02 9.372244980940e-02 8.987417540592e-02 -8.604396704183e-02 8.223201198502e-02 7.843849583619e-02 7.466360251685e-02 -7.090751425763e-02 6.717041158660e-02 6.345247331779e-02 5.975387653992e-02 -5.607479660513e-02 5.241540711806e-02 4.877587992489e-02 4.515638510269e-02 -4.155709094883e-02 3.797816397057e-02 3.441976887483e-02 3.088206855808e-02 -2.736522409643e-02 2.386939473581e-02 2.039473788242e-02 1.694140909321e-02 -1.350956206661e-02 1.009934863341e-02 6.710918747778e-03 3.344420478420e-03 --2.512273976170e-14 -3.322198415490e-03 -6.622032406798e-03 -9.899361531813e-03 --1.315404727543e-02 -1.638595305741e-02 -1.959494424002e-02 -2.278088813553e-02 --2.594365401354e-02 -2.908311310815e-02 -3.219913862489e-02 -3.529160574762e-02 --3.836039164512e-02 -4.140537547759e-02 -4.442643840297e-02 -4.742346358305e-02 --5.039633618947e-02 -5.334494340950e-02 -5.626917445168e-02 -5.916892055125e-02 --6.204407497547e-02 -6.489453302871e-02 -6.772019205738e-02 -7.052095145470e-02 --7.329671266530e-02 -7.604737918967e-02 -7.877285658831e-02 -8.147305248593e-02 --8.414787657523e-02 -8.679724062070e-02 -8.942105846215e-02 -9.201924601808e-02 --9.459172128888e-02 -9.713840435985e-02 -9.965921740409e-02 -1.021540846851e-01 --1.046229325594e-01 -1.070656894788e-01 -1.094822859923e-01 -1.118726547488e-01 --1.142367304979e-01 -1.165744500923e-01 -1.188857524890e-01 -1.211705787506e-01 --1.234288720462e-01 -1.256605776527e-01 -1.278656429553e-01 -1.300440174480e-01 --1.321956527344e-01 -1.343205025276e-01 -1.364185226502e-01 -1.384896710345e-01 --1.405339077219e-01 -1.425511948627e-01 -1.445414967153e-01 -1.465047796453e-01 --1.484410121248e-01 -1.503501647310e-01 -1.522322101451e-01 -1.540871231506e-01 --1.559148806315e-01 -1.577154615709e-01 -1.594888470486e-01 -1.612350202393e-01 --1.629539664097e-01 -1.646456729164e-01 -1.663101292031e-01 -1.679473267977e-01 --1.695572593094e-01 -1.711399224253e-01 -1.726953139072e-01 -1.742234335878e-01 --1.757242833674e-01 -1.771978672099e-01 -1.786441911383e-01 -1.800632632314e-01 --1.814550936186e-01 -1.828196944759e-01 -1.841570800207e-01 -1.854672665076e-01 --1.867502722230e-01 -1.880061174798e-01 -1.892348246122e-01 -1.904364179705e-01 --1.916109239149e-01 -1.927583708101e-01 -1.938787890190e-01 -1.949722108968e-01 --1.960386707848e-01 -1.970782050034e-01 -1.980908518463e-01 -1.990766515731e-01 --2.000356464025e-01 -2.009678805055e-01 -2.018733999978e-01 -2.027522529330e-01 --2.036044892942e-01 -2.044301609872e-01 -2.052293218322e-01 -2.060020275558e-01 --2.067483357832e-01 -2.074683060295e-01 -2.081619996917e-01 -2.088294800398e-01 --2.094708122085e-01 -2.100860631877e-01 -2.106753018143e-01 -2.112385987623e-01 --2.117760265342e-01 -2.122876594511e-01 -2.127735736434e-01 -2.132338470410e-01 --2.136685593635e-01 -2.140777921103e-01 -2.144616285503e-01 -2.148201537121e-01 --2.151534543730e-01 -2.154616190492e-01 -2.157447379844e-01 -2.160029031399e-01 --2.162362081830e-01 -2.164447484765e-01 -2.166286210670e-01 -2.167879246744e-01 --2.169227596796e-01 -2.170332281139e-01 -2.171194336468e-01 -2.171814815742e-01 --2.172194788069e-01 -2.172335338584e-01 -2.172237568329e-01 -2.171902594128e-01 --2.171331548467e-01 -2.170525579367e-01 -2.169485850260e-01 -2.168213539861e-01 --2.166709842043e-01 -2.164975965702e-01 -2.163013134635e-01 -2.160822587401e-01 --2.158405577195e-01 -2.155763371712e-01 -2.152897253014e-01 -2.149808517391e-01 --2.146498475232e-01 -2.142968450882e-01 -2.139219782505e-01 -2.135253821946e-01 --2.131071934591e-01 -2.126675499226e-01 -2.122065907892e-01 -2.117244565748e-01 --2.112212890922e-01 -2.106972314371e-01 -2.101524279729e-01 -2.095870243170e-01 --2.090011673252e-01 -2.083950050775e-01 -2.077686868629e-01 -2.071223631645e-01 --2.064561856448e-01 -2.057703071299e-01 -2.050648815952e-01 -2.043400641494e-01 --2.035960110195e-01 -2.028328795354e-01 -2.020508281143e-01 -2.012500162453e-01 --2.004306044739e-01 -1.995927543858e-01 -1.987366285918e-01 -1.978623907118e-01 --1.969702053588e-01 -1.960602381230e-01 -1.951326555559e-01 -1.941876251546e-01 --1.932253153449e-01 -1.922458954659e-01 -1.912495357537e-01 -1.902364073248e-01 --1.892066821602e-01 -1.881605330886e-01 -1.870981337707e-01 -1.860196586822e-01 --1.849252830975e-01 -1.838151830732e-01 -1.826895354317e-01 -1.815485177444e-01 --1.803923083150e-01 -1.792210861632e-01 -1.780350310077e-01 -1.768343232495e-01 --1.756191439552e-01 -1.743896748402e-01 -1.731460982522e-01 -1.718885971536e-01 --1.706173551053e-01 -1.693325562496e-01 -1.680343852933e-01 -1.667230274906e-01 --1.653986686265e-01 -1.640614949995e-01 -1.627116934048e-01 -1.613494511171e-01 --1.599749558740e-01 -1.585883958584e-01 -1.571899596821e-01 -1.557798363681e-01 --1.543582153342e-01 -1.529252863754e-01 -1.514812396472e-01 -1.500262656484e-01 --1.485605552040e-01 -1.470842994484e-01 -1.455976898080e-01 -1.441009179842e-01 --1.425941759366e-01 -1.410776558659e-01 -1.395515501966e-01 -1.380160515603e-01 --1.364713527783e-01 -1.349176468453e-01 -1.333551269115e-01 -1.317839862665e-01 --1.302044183217e-01 -1.286166165939e-01 -1.270207746877e-01 -1.254170862794e-01 --1.238057450998e-01 -1.221869449169e-01 -1.205608795201e-01 -1.189277427023e-01 --1.172877282441e-01 -1.156410298963e-01 -1.139878413639e-01 -1.123283562887e-01 --1.106627682334e-01 -1.089912706645e-01 -1.073140569360e-01 -1.056313202728e-01 --1.039432537543e-01 -1.022500502977e-01 -1.005519026420e-01 -9.884900333142e-02 --9.714154469927e-02 -9.542971885147e-02 -9.371371765052e-02 -9.199373269930e-02 --9.026995532499e-02 -8.854257656300e-02 -8.681178714101e-02 -8.507777746301e-02 --8.334073759342e-02 -8.160085724131e-02 -7.985832574460e-02 -7.811333205436e-02 --7.636606471922e-02 -7.461671186973e-02 -7.286546120293e-02 -7.111249996683e-02 --6.935801494510e-02 -6.760219244173e-02 -6.584521826582e-02 -6.408727771638e-02 --6.232855556727e-02 -6.056923605220e-02 -5.880950284972e-02 -5.704953906845e-02 --5.528952723219e-02 -5.352964926532e-02 -5.177008647805e-02 -5.001101955200e-02 --4.825262852562e-02 -4.649509277989e-02 -4.473859102399e-02 -4.298330128108e-02 --4.122940087420e-02 -3.947706641221e-02 -3.772647377587e-02 -3.597779810396e-02 --3.423121377953e-02 -3.248689441622e-02 -3.074501284469e-02 -2.900574109912e-02 --2.726925040385e-02 -2.553571116007e-02 -2.380529293261e-02 -2.207816443691e-02 --2.035449352594e-02 -1.863444717740e-02 -1.691819148084e-02 -1.520589162503e-02 --1.349771188539e-02 -1.179381561144e-02 -1.009436521452e-02 -8.399522155443e-03 --6.709446932398e-03 -5.024299068872e-03 -3.344237101723e-03 -1.669418569349e-03 -2.512273976170e-14 1.663863099950e-03 3.322016257243e-03 4.974306043361e-03 -6.620580085661e-03 - Type L N - 0 0 2 -1.000000000000e+00 9.999588771557e-01 9.998355147105e-01 9.996299309272e-01 -9.993421562398e-01 9.989722332485e-01 9.985202167122e-01 9.979861735385e-01 -9.973701827725e-01 9.966723355824e-01 9.958927352436e-01 9.950314971204e-01 -9.940887486459e-01 9.930646292992e-01 9.919592905814e-01 9.907728959881e-01 -9.895056209813e-01 9.881576529582e-01 9.867291912182e-01 9.852204469278e-01 -9.836316430835e-01 9.819630144724e-01 9.802148076310e-01 9.783872808018e-01 -9.764807038877e-01 9.744953584044e-01 9.724315374315e-01 9.702895455599e-01 -9.680696988392e-01 9.657723247216e-01 9.633977620041e-01 9.609463607696e-01 -9.584184823246e-01 9.558144991363e-01 9.531347947667e-01 9.503797638053e-01 -9.475498117999e-01 9.446453551853e-01 9.416668212101e-01 9.386146478614e-01 -9.354892837886e-01 9.322911882240e-01 9.290208309025e-01 9.256786919789e-01 -9.222652619442e-01 9.187810415390e-01 9.152265416659e-01 9.116022833003e-01 -9.079087973984e-01 9.041466248047e-01 9.003163161571e-01 8.964184317905e-01 -8.924535416387e-01 8.884222251345e-01 8.843250711084e-01 8.801626776859e-01 -8.759356521824e-01 8.716446109973e-01 8.672901795064e-01 8.628729919524e-01 -8.583936913341e-01 8.538529292946e-01 8.492513660070e-01 8.445896700594e-01 -8.398685183386e-01 8.350885959116e-01 8.302505959068e-01 8.253552193925e-01 -8.204031752555e-01 8.153951800773e-01 8.103319580098e-01 8.052142406486e-01 -8.000427669069e-01 7.948182828859e-01 7.895415417463e-01 7.842133035765e-01 -7.788343352617e-01 7.734054103500e-01 7.679273089188e-01 7.624008174394e-01 -7.568267286407e-01 7.512058413721e-01 7.455389604655e-01 7.398268965953e-01 -7.340704661390e-01 7.282704910361e-01 7.224277986455e-01 7.165432216036e-01 -7.106175976801e-01 7.046517696335e-01 6.986465850664e-01 6.926028962792e-01 -6.865215601232e-01 6.804034378539e-01 6.742493949824e-01 6.680603011268e-01 -6.618370298633e-01 6.555804585759e-01 6.492914683061e-01 6.429709436022e-01 -6.366197723676e-01 6.302388457091e-01 6.238290577843e-01 6.173913056491e-01 -6.109264891046e-01 6.044355105433e-01 5.979192747957e-01 5.913786889758e-01 -5.848146623272e-01 5.782281060679e-01 5.716199332362e-01 5.649910585350e-01 -5.583423981772e-01 5.516748697302e-01 5.449893919607e-01 5.382868846788e-01 -5.315682685834e-01 5.248344651060e-01 5.180863962557e-01 5.113249844634e-01 -5.045511524271e-01 4.977658229563e-01 4.909699188170e-01 4.841643625769e-01 -4.773500764507e-01 4.705279821459e-01 4.636990007081e-01 4.568640523675e-01 -4.500240563851e-01 4.431799308996e-01 4.363325927745e-01 4.294829574453e-01 -4.226319387680e-01 4.157804488669e-01 4.089293979839e-01 4.020796943278e-01 -3.952322439240e-01 3.883879504653e-01 3.815477151626e-01 3.747124365969e-01 -3.678830105718e-01 3.610603299659e-01 3.542452845871e-01 3.474387610269e-01 -3.406416425154e-01 3.338548087774e-01 3.270791358894e-01 3.203154961369e-01 -3.135647578731e-01 3.068277853780e-01 3.001054387190e-01 2.933985736121e-01 -2.867080412837e-01 2.800346883341e-01 2.733793566015e-01 2.667428830274e-01 -2.601260995227e-01 2.535298328350e-01 2.469549044171e-01 2.404021302968e-01 -2.338723209472e-01 2.273662811590e-01 2.208848099135e-01 2.144287002568e-01 -2.079987391756e-01 2.015957074739e-01 1.952203796510e-01 1.888735237814e-01 -1.825559013952e-01 1.762682673601e-01 1.700113697654e-01 1.637859498066e-01 -1.575927416715e-01 1.514324724284e-01 1.453058619151e-01 1.392136226292e-01 -1.331564596211e-01 1.271350703867e-01 1.211501447634e-01 1.152023648264e-01 -1.092924047871e-01 1.034209308930e-01 9.758860132928e-02 9.179606612181e-02 -8.604396704186e-02 8.033293751256e-02 7.466360251689e-02 6.903657850744e-02 -6.345247331783e-02 5.791188607580e-02 5.241540711809e-02 4.696361790703e-02 -4.155709094886e-02 3.619638971384e-02 3.088206855812e-02 2.561467264741e-02 -2.039473788245e-02 1.522279082631e-02 1.009934863345e-02 5.024918980689e-03 -7.389596982152e-15 -4.974919786837e-03 -9.899361531780e-03 -1.477285612207e-02 --1.959494423999e-02 -2.436517642069e-02 -2.908311310811e-02 -3.374832470902e-02 --3.836039164509e-02 -4.291890440306e-02 -4.742346358302e-02 -5.187367994466e-02 --5.626917445165e-02 -6.060957831403e-02 -6.489453302868e-02 -6.912369041777e-02 --7.329671266528e-02 -7.741327235156e-02 -8.147305248590e-02 -8.547574653711e-02 --8.942105846213e-02 -9.330870273266e-02 -9.713840435983e-02 -1.009098989168e-01 --1.046229325594e-01 -1.082772620449e-01 -1.118726547487e-01 -1.154088886789e-01 --1.188857524890e-01 -1.223030454888e-01 -1.256605776527e-01 -1.289581696271e-01 --1.321956527344e-01 -1.353728689764e-01 -1.384896710345e-01 -1.415459222689e-01 --1.445414967152e-01 -1.474762790796e-01 -1.503501647310e-01 -1.531630596929e-01 --1.559148806314e-01 -1.586055548431e-01 -1.612350202393e-01 -1.638032253296e-01 --1.663101292030e-01 -1.687557015072e-01 -1.711399224253e-01 -1.734627826523e-01 --1.757242833674e-01 -1.779244362065e-01 -1.800632632314e-01 -1.821407968977e-01 --1.841570800207e-01 -1.861121657396e-01 -1.880061174797e-01 -1.898390089126e-01 --1.916109239149e-01 -1.933219565247e-01 -1.949722108968e-01 -1.965618012556e-01 --1.980908518463e-01 -1.995594968849e-01 -2.009678805055e-01 -2.023161567062e-01 --2.036044892942e-01 -2.048330518274e-01 -2.060020275558e-01 -2.071116093607e-01 --2.081619996917e-01 -2.091534105031e-01 -2.100860631877e-01 -2.109601885094e-01 --2.117760265342e-01 -2.125338265592e-01 -2.132338470410e-01 -2.138763555209e-01 --2.144616285503e-01 -2.149899516135e-01 -2.154616190492e-01 -2.158769339703e-01 --2.162362081830e-01 -2.165397621037e-01 -2.167879246744e-01 -2.169810332771e-01 --2.171194336468e-01 -2.172034797827e-01 -2.172335338584e-01 -2.172099661307e-01 --2.171331548467e-01 -2.170034861501e-01 -2.168213539861e-01 -2.165871600048e-01 --2.163013134635e-01 -2.159642311277e-01 -2.155763371712e-01 -2.151380630747e-01 --2.146498475232e-01 -2.141121363026e-01 -2.135253821946e-01 -2.128900448716e-01 --2.122065907892e-01 -2.114754930785e-01 -2.106972314371e-01 -2.098722920193e-01 --2.090011673253e-01 -2.080843560887e-01 -2.071223631645e-01 -2.061156994150e-01 --2.050648815952e-01 -2.039704322376e-01 -2.028328795354e-01 -2.016527572263e-01 --2.004306044739e-01 -1.991669657493e-01 -1.978623907118e-01 -1.965174340891e-01 --1.951326555559e-01 -1.937086196133e-01 -1.922458954659e-01 -1.907450569001e-01 --1.892066821602e-01 -1.876313538246e-01 -1.860196586822e-01 -1.843721876067e-01 --1.826895354318e-01 -1.809723008254e-01 -1.792210861633e-01 -1.774364974027e-01 --1.756191439552e-01 -1.737696385594e-01 -1.718885971536e-01 -1.699766387472e-01 --1.680343852933e-01 -1.660624615594e-01 -1.640614949995e-01 -1.620321156246e-01 --1.599749558740e-01 -1.578906504859e-01 -1.557798363681e-01 -1.536431524689e-01 --1.514812396472e-01 -1.492947405431e-01 -1.470842994485e-01 -1.448505621774e-01 --1.425941759367e-01 -1.403157891963e-01 -1.380160515603e-01 -1.356956136373e-01 --1.333551269115e-01 -1.309952436141e-01 -1.286166165939e-01 -1.262198991893e-01 --1.238057450998e-01 -1.213748082581e-01 -1.189277427024e-01 -1.164652024486e-01 --1.139878413639e-01 -1.114963130395e-01 -1.089912706645e-01 -1.064733669002e-01 --1.039432537543e-01 -1.014015824560e-01 -9.884900333145e-02 -9.628616568006e-02 --9.371371765055e-02 -9.113230611832e-02 -8.854257656303e-02 -8.594517294687e-02 --8.334073759345e-02 -8.072991106737e-02 -7.811333205439e-02 -7.549163724239e-02 --7.286546120296e-02 -7.023543627378e-02 -6.760219244177e-02 -6.496635722697e-02 --6.232855556730e-02 -5.968940970410e-02 -5.704953906848e-02 -5.440956016866e-02 --5.177008647808e-02 -4.913172832449e-02 -4.649509277992e-02 -4.386078355168e-02 --4.122940087423e-02 -3.860154140214e-02 -3.597779810400e-02 -3.335876015735e-02 --3.074501284472e-02 -2.813713745071e-02 -2.553571116010e-02 -2.294130695715e-02 --2.035449352598e-02 -1.777583515209e-02 -1.520589162507e-02 -1.264521814239e-02 --1.009436521455e-02 -7.553878571246e-03 -5.024299068905e-03 -2.506162599395e-03 --7.389596982152e-15 2.493663035294e-03 4.974306043329e-03 7.441413877863e-03 -9.894476794447e-03 1.233299053393e-02 1.475645640461e-02 1.716438136306e-02 -1.955627809357e-02 2.193166508616e-02 2.429006671325e-02 2.663101330492e-02 -2.895404122269e-02 3.125869293193e-02 3.354451707279e-02 3.581106852968e-02 -3.805790849927e-02 4.028460455704e-02 4.249073072231e-02 4.467586752178e-02 -4.683960205159e-02 4.898152803781e-02 5.110124589545e-02 5.319836278591e-02 -5.527249267288e-02 5.732325637672e-02 5.935028162727e-02 6.135320311502e-02 -6.333166254088e-02 6.528530866416e-02 6.721379734912e-02 6.911679160987e-02 -7.099396165367e-02 7.284498492262e-02 7.466954613379e-02 7.646733731766e-02 -7.823805785504e-02 7.998141451225e-02 8.169712147484e-02 8.338490037948e-02 -8.504448034442e-02 8.667559799815e-02 8.827799750657e-02 8.985143059840e-02 -9.139565658906e-02 9.291044240281e-02 9.439556259334e-02 9.585079936266e-02 -9.727594257839e-02 9.867078978937e-02 1.000351462397e-01 1.013688248810e-01 -1.026716463832e-01 1.039434391438e-01 1.051840392948e-01 1.063932907093e-01 -1.075710450048e-01 1.087171615467e-01 1.098315074484e-01 1.109139575712e-01 -1.119643945218e-01 1.129827086485e-01 1.139687980356e-01 1.149225684962e-01 -1.158439335639e-01 1.167328144823e-01 1.175891401928e-01 1.184128473218e-01 -1.192038801653e-01 1.199621906724e-01 1.206877384270e-01 1.213804906286e-01 -1.220404220705e-01 1.226675151177e-01 1.232617596819e-01 1.238231531963e-01 -1.243517005880e-01 1.248474142494e-01 1.253103140077e-01 1.257404270933e-01 -1.261377881068e-01 1.265024389837e-01 1.268344289589e-01 1.271338145288e-01 -1.274006594126e-01 1.276350345115e-01 1.278370178673e-01 1.280066946191e-01 -1.281441569587e-01 1.282495040846e-01 1.283228421551e-01 1.283642842391e-01 -1.283739502669e-01 1.283519669785e-01 1.282984678711e-01 1.282135931456e-01 -1.280974896510e-01 1.279503108287e-01 1.277722166546e-01 1.275633735804e-01 -1.273239544735e-01 1.270541385561e-01 1.267541113426e-01 1.264240645763e-01 -1.260641961644e-01 1.256747101130e-01 1.252558164592e-01 1.248077312040e-01 -1.243306762428e-01 1.238248792955e-01 1.232905738353e-01 1.227279990164e-01 -1.221373996013e-01 1.215190258860e-01 1.208731336255e-01 1.201999839574e-01 -1.194998433250e-01 1.187729833992e-01 1.180196810003e-01 1.172402180176e-01 -1.164348813293e-01 1.156039627211e-01 1.147477588040e-01 1.138665709311e-01 -1.129607051143e-01 1.120304719395e-01 1.110761864814e-01 1.100981682176e-01 -1.090967409418e-01 1.080722326769e-01 1.070249755862e-01 1.059553058858e-01 -1.048635637545e-01 1.037500932445e-01 1.026152421907e-01 1.014593621201e-01 -1.002828081598e-01 9.908593894552e-02 9.786911652869e-02 9.663270628381e-02 -9.537707681491e-02 9.410259986172e-02 9.280965020549e-02 9.149860557431e-02 -9.016984654819e-02 8.882375646372e-02 8.746072131842e-02 8.608112967483e-02 -8.468537256426e-02 8.327384339038e-02 8.184693783247e-02 8.040505374852e-02 -7.894859107812e-02 7.747795174524e-02 7.599353956071e-02 7.449576012479e-02 -7.298502072940e-02 7.146173026050e-02 6.992629910019e-02 6.837913902896e-02 -6.682066312777e-02 6.525128568021e-02 6.367142207471e-02 6.208148870668e-02 -6.048190288085e-02 5.887308271361e-02 5.725544703546e-02 5.562941529365e-02 -5.399540745492e-02 5.235384390837e-02 5.070514536864e-02 4.904973277921e-02 -4.738802721591e-02 4.572044979079e-02 4.404742155614e-02 4.236936340890e-02 -4.068669599533e-02 3.899983961602e-02 3.730921413129e-02 3.561523886688e-02 -3.391833252013e-02 3.221891306649e-02 3.051739766655e-02 2.881420257340e-02 -2.710974304059e-02 2.540443323047e-02 2.369868612311e-02 2.199291342571e-02 -2.028752548258e-02 1.858293118562e-02 1.687953788549e-02 1.517775130329e-02 -1.347797544288e-02 1.178061250383e-02 1.008606279508e-02 8.394724649155e-03 -6.706994337188e-03 5.023265984567e-03 3.343931487334e-03 1.669380429316e-03 -7.389596982152e-15 -1.663825086774e-03 -3.321712673450e-03 -4.973283238437e-03 --6.618159975091e-03 - Type L N - 0 0 3 -1.000000000000e+00 9.999268934227e-01 9.997075929310e-01 9.993421562398e-01 -9.988306795205e-01 9.981732973708e-01 9.973701827725e-01 9.964215470375e-01 -9.953276397415e-01 9.940887486459e-01 9.927051996072e-01 9.911773564758e-01 -9.895056209813e-01 9.876904326070e-01 9.857322684524e-01 9.836316430835e-01 -9.813891083719e-01 9.790052533223e-01 9.764807038877e-01 9.738161227738e-01 -9.710122092318e-01 9.680696988392e-01 9.649893632704e-01 9.617720100548e-01 -9.584184823246e-01 9.549296585514e-01 9.513064522713e-01 9.475498117999e-01 -9.436607199360e-01 9.396401936544e-01 9.354892837886e-01 9.312090747032e-01 -9.268006839549e-01 9.222652619442e-01 9.176039915569e-01 9.128180877951e-01 -9.079087973983e-01 9.028773984559e-01 8.977252000079e-01 8.924535416387e-01 -8.870637930592e-01 8.815573536812e-01 8.759356521824e-01 8.702001460618e-01 -8.643523211873e-01 8.583936913341e-01 8.523257977150e-01 8.461502085016e-01 -8.398685183386e-01 8.334823478491e-01 8.269933431327e-01 8.204031752555e-01 -8.137135397329e-01 8.069261560055e-01 8.000427669069e-01 7.930651381253e-01 -7.859950576585e-01 7.788343352617e-01 7.715848018895e-01 7.642483091312e-01 -7.568267286407e-01 7.493219515597e-01 7.417358879367e-01 7.340704661390e-01 -7.263276322605e-01 7.185093495243e-01 7.106175976801e-01 7.026543723976e-01 -6.946216846549e-01 6.865215601232e-01 6.783560385471e-01 6.701271731211e-01 -6.618370298633e-01 6.534876869844e-01 6.450812342547e-01 6.366197723676e-01 -6.281054123006e-01 6.195402746735e-01 6.109264891046e-01 6.022661935646e-01 -5.935615337287e-01 5.848146623272e-01 5.760277384943e-01 5.672029271161e-01 -5.583423981772e-01 5.494483261068e-01 5.405228891241e-01 5.315682685834e-01 -5.225866483191e-01 5.135802139904e-01 5.045511524271e-01 4.955016509752e-01 -4.864338968434e-01 4.773500764507e-01 4.682523747753e-01 4.591429747041e-01 -4.500240563851e-01 4.408977965803e-01 4.317663680216e-01 4.226319387680e-01 -4.134966715663e-01 4.043627232139e-01 3.952322439240e-01 3.861073766949e-01 -3.769902566816e-01 3.678830105718e-01 3.587877559645e-01 3.497066007538e-01 -3.406416425154e-01 3.315949678984e-01 3.225686520215e-01 3.135647578731e-01 -3.045853357170e-01 2.956324225032e-01 2.867080412837e-01 2.778142006333e-01 -2.689528940770e-01 2.601260995227e-01 2.513357786996e-01 2.425838766033e-01 -2.338723209472e-01 2.252030216196e-01 2.165778701492e-01 2.079987391756e-01 -1.994674819278e-01 1.909859317103e-01 1.825559013952e-01 1.741791829233e-01 -1.658575468121e-01 1.575927416715e-01 1.493864937280e-01 1.412405063565e-01 -1.331564596210e-01 1.251360098231e-01 1.171807890593e-01 1.092924047870e-01 -1.014724393995e-01 9.372244980942e-02 8.604396704184e-02 7.843849583621e-02 -7.090751425765e-02 6.345247331781e-02 5.607479660515e-02 4.877587992491e-02 -4.155709094885e-02 3.441976887485e-02 2.736522409644e-02 2.039473788244e-02 -1.350956206663e-02 6.710918747795e-03 -8.583855418087e-15 -6.622032406781e-03 --1.315404727542e-02 -1.959494424001e-02 -2.594365401353e-02 -3.219913862487e-02 --3.836039164510e-02 -4.442643840296e-02 -5.039633618945e-02 -5.626917445166e-02 --6.204407497546e-02 -6.772019205736e-02 -7.329671266529e-02 -7.877285658830e-02 --8.414787657521e-02 -8.942105846214e-02 -9.459172128887e-02 -9.965921740407e-02 --1.046229325594e-01 -1.094822859923e-01 -1.142367304979e-01 -1.188857524890e-01 --1.234288720462e-01 -1.278656429553e-01 -1.321956527344e-01 -1.364185226502e-01 --1.405339077219e-01 -1.445414967153e-01 -1.484410121248e-01 -1.522322101451e-01 --1.559148806314e-01 -1.594888470486e-01 -1.629539664097e-01 -1.663101292031e-01 --1.695572593094e-01 -1.726953139072e-01 -1.757242833674e-01 -1.786441911383e-01 --1.814550936186e-01 -1.841570800207e-01 -1.867502722230e-01 -1.892348246122e-01 --1.916109239149e-01 -1.938787890189e-01 -1.960386707847e-01 -1.980908518463e-01 --2.000356464025e-01 -2.018733999978e-01 -2.036044892942e-01 -2.052293218322e-01 --2.067483357832e-01 -2.081619996917e-01 -2.094708122085e-01 -2.106753018143e-01 --2.117760265342e-01 -2.127735736434e-01 -2.136685593635e-01 -2.144616285503e-01 --2.151534543730e-01 -2.157447379844e-01 -2.162362081830e-01 -2.166286210670e-01 --2.169227596796e-01 -2.171194336468e-01 -2.172194788069e-01 -2.172237568329e-01 --2.171331548467e-01 -2.169485850260e-01 -2.166709842043e-01 -2.163013134635e-01 --2.158405577195e-01 -2.152897253014e-01 -2.146498475232e-01 -2.139219782505e-01 --2.131071934591e-01 -2.122065907892e-01 -2.112212890922e-01 -2.101524279729e-01 --2.090011673253e-01 -2.077686868629e-01 -2.064561856448e-01 -2.050648815952e-01 --2.035960110195e-01 -2.020508281143e-01 -2.004306044739e-01 -1.987366285918e-01 --1.969702053588e-01 -1.951326555559e-01 -1.932253153449e-01 -1.912495357537e-01 --1.892066821602e-01 -1.870981337707e-01 -1.849252830975e-01 -1.826895354318e-01 --1.803923083151e-01 -1.780350310077e-01 -1.756191439552e-01 -1.731460982522e-01 --1.706173551053e-01 -1.680343852933e-01 -1.653986686265e-01 -1.627116934048e-01 --1.599749558740e-01 -1.571899596821e-01 -1.543582153342e-01 -1.514812396472e-01 --1.485605552041e-01 -1.455976898080e-01 -1.425941759367e-01 -1.395515501966e-01 --1.364713527783e-01 -1.333551269115e-01 -1.302044183218e-01 -1.270207746877e-01 --1.238057450998e-01 -1.205608795201e-01 -1.172877282441e-01 -1.139878413639e-01 --1.106627682334e-01 -1.073140569360e-01 -1.039432537543e-01 -1.005519026420e-01 --9.714154469929e-02 -9.371371765054e-02 -9.026995532500e-02 -8.681178714103e-02 --8.334073759344e-02 -7.985832574462e-02 -7.636606471923e-02 -7.286546120294e-02 --6.935801494512e-02 -6.584521826584e-02 -6.232855556729e-02 -5.880950284974e-02 --5.528952723221e-02 -5.177008647807e-02 -4.825262852563e-02 -4.473859102400e-02 --4.122940087421e-02 -3.772647377589e-02 -3.423121377955e-02 -3.074501284471e-02 --2.726925040387e-02 -2.380529293263e-02 -2.035449352596e-02 -1.691819148085e-02 --1.349771188540e-02 -1.009436521454e-02 -6.709446932414e-03 -3.344237101739e-03 -8.583855418087e-15 3.322016257227e-03 6.620580085644e-03 9.894476794462e-03 -1.314250894107e-02 1.636349667822e-02 1.955627809359e-02 2.271970954158e-02 -2.585266596732e-02 2.895404122270e-02 3.202274837443e-02 3.505772000398e-02 -3.805790849929e-02 4.102228633832e-02 4.394984636413e-02 4.683960205160e-02 -4.969058776567e-02 5.250185901098e-02 5.527249267289e-02 5.800158724986e-02 -6.068826307699e-02 6.333166254089e-02 6.593095028556e-02 6.848531340948e-02 -7.099396165368e-02 7.345612758088e-02 7.587106674557e-02 7.823805785505e-02 -8.055640292137e-02 8.282542740419e-02 8.504448034443e-02 8.721293448883e-02 -8.933018640529e-02 9.139565658907e-02 9.340878955969e-02 9.536905394874e-02 -9.727594257840e-02 9.912897253077e-02 1.009276852080e-01 1.026716463832e-01 -1.043604462423e-01 1.059936994162e-01 1.075710450049e-01 1.090921465908e-01 -1.105566922449e-01 1.119643945218e-01 1.133149904477e-01 1.146082414973e-01 -1.158439335639e-01 1.170218769186e-01 1.181419061618e-01 1.192038801653e-01 -1.202076820060e-01 1.211532188904e-01 1.220404220705e-01 1.228692467518e-01 -1.236396719912e-01 1.243517005880e-01 1.250053589653e-01 1.256006970439e-01 -1.261377881068e-01 1.266167286569e-01 1.270376382654e-01 1.274006594126e-01 -1.277059573205e-01 1.279537197783e-01 1.281441569587e-01 1.282775012279e-01 -1.283540069471e-01 1.283739502669e-01 1.283376289143e-01 1.282453619720e-01 -1.280974896510e-01 1.278943730559e-01 1.276363939434e-01 1.273239544735e-01 -1.269574769544e-01 1.265374035805e-01 1.260641961644e-01 1.255383358617e-01 -1.249603228902e-01 1.243306762428e-01 1.236499333941e-01 1.229186500017e-01 -1.221373996013e-01 1.213067732963e-01 1.204273794422e-01 1.194998433250e-01 -1.185248068352e-01 1.175029281366e-01 1.164348813293e-01 1.153213561093e-01 -1.141630574224e-01 1.129607051143e-01 1.117150335758e-01 1.104267913845e-01 -1.090967409418e-01 1.077256581065e-01 1.063143318244e-01 1.048635637545e-01 -1.033741678916e-01 1.018469701860e-01 1.002828081598e-01 9.868253052003e-02 -9.704699676952e-02 9.537707681490e-02 9.367365057201e-02 9.193760756917e-02 -9.016984654818e-02 8.837127506339e-02 8.654280907894e-02 8.468537256425e-02 -8.279989708810e-02 8.088732141129e-02 7.894859107811e-02 7.698465800680e-02 -7.499648007916e-02 7.298502072939e-02 7.095124853242e-02 6.889613679188e-02 -6.682066312775e-02 6.472580906407e-02 6.261255961660e-02 6.048190288084e-02 -5.833482962040e-02 5.617233285596e-02 5.399540745490e-02 5.180504972191e-02 -4.960225699053e-02 4.738802721590e-02 4.516335856891e-02 4.292924903178e-02 -4.068669599531e-02 3.843669585791e-02 3.618024362661e-02 3.391833252011e-02 -3.165195357415e-02 2.938209524917e-02 2.710974304058e-02 2.483587909164e-02 -2.256148180925e-02 2.028752548256e-02 1.801497990482e-02 1.574480999833e-02 -1.347797544286e-02 1.121543030753e-02 8.958122686274e-03 6.706994337172e-03 -4.462980325576e-03 2.227008671311e-03 -8.630974746701e-15 -2.217132801389e-03 --4.423484924482e-03 -6.618159975107e-03 -8.800270304154e-03 -1.096893733375e-02 --1.312329187859e-02 -1.526247446229e-02 -1.738563562868e-02 -1.949193624797e-02 --2.158054781756e-02 -2.365065275757e-02 -2.570144470082e-02 -2.773212877731e-02 --2.974192189297e-02 -3.173005300270e-02 -3.369576337758e-02 -3.563830686613e-02 --3.755695014953e-02 -3.945097299084e-02 -4.131966847795e-02 -4.316234326036e-02 --4.497831777956e-02 -4.676692649316e-02 -4.852751809239e-02 -5.025945571324e-02 --5.196211714088e-02 -5.363489500755e-02 -5.527719698371e-02 -5.688844596238e-02 --5.846808023680e-02 -6.001555367111e-02 -6.153033586423e-02 -6.301191230675e-02 --6.445978453086e-02 -6.587347025326e-02 -6.725250351099e-02 -6.859643479029e-02 --6.990483114816e-02 -7.117727632702e-02 -7.241337086198e-02 -7.361273218113e-02 --7.477499469850e-02 -7.589980989991e-02 -7.698684642154e-02 -7.803579012129e-02 --7.904634414293e-02 -8.001822897299e-02 -8.095118249047e-02 -8.184496000923e-02 --8.269933431327e-02 -8.351409568469e-02 -8.428905192453e-02 -8.502402836639e-02 --8.571886788288e-02 -8.637343088493e-02 -8.698759531398e-02 -8.756125662706e-02 --8.809432777479e-02 -8.858673917239e-02 -8.903843866361e-02 -8.944939147778e-02 --8.981958017984e-02 -9.014900461357e-02 -9.043768183789e-02 -9.068564605646e-02 --9.089294854048e-02 -9.105965754475e-02 -9.118585821725e-02 -9.127165250193e-02 --9.131715903518e-02 -9.132251303570e-02 -9.128786618804e-02 -9.121338651981e-02 --9.109925827260e-02 -9.094568176680e-02 -9.075287326016e-02 -9.052106480049e-02 --9.025050407227e-02 -8.994145423743e-02 -8.959419377037e-02 -8.920901628719e-02 --8.878623036942e-02 -8.832615938206e-02 -8.782914128630e-02 -8.729552844687e-02 --8.672568743409e-02 -8.611999882078e-02 -8.547885697412e-02 -8.480266984256e-02 --8.409185873785e-02 -8.334685811228e-02 -8.256811533135e-02 -8.175609044183e-02 --8.091125593543e-02 -8.003409650805e-02 -7.912510881496e-02 -7.818480122174e-02 --7.721369355130e-02 -7.621231682701e-02 -7.518121301206e-02 -7.412093474520e-02 --7.303204507291e-02 -7.191511717825e-02 -7.077073410629e-02 -6.959948848655e-02 --6.840198225222e-02 -6.717882635665e-02 -6.593064048684e-02 -6.465805277447e-02 --6.336169950422e-02 -6.204222481980e-02 -6.070028042758e-02 -5.933652529816e-02 --5.795162536585e-02 -5.654625322624e-02 -5.512108783203e-02 -5.367681418722e-02 --5.221412303970e-02 -5.073371057258e-02 -4.923627809413e-02 -4.772253172675e-02 --4.619318209476e-02 -4.464894401151e-02 -4.309053616559e-02 -4.151868080657e-02 --3.993410343018e-02 -3.833753246318e-02 -3.672969894800e-02 -3.511133622732e-02 --3.348317962867e-02 -3.184596614922e-02 -3.020043414085e-02 -2.854732299567e-02 --2.688737283210e-02 -2.522132418162e-02 -2.354991767633e-02 -2.187389373746e-02 --2.019399226492e-02 -1.851095232806e-02 -1.682551185774e-02 -1.513840733978e-02 --1.345037351001e-02 -1.176214305102e-02 -1.007444629062e-02 -8.388010902267e-03 --6.703561607512e-03 -5.021819880594e-03 -3.343503655279e-03 -1.669327034086e-03 -8.583855418087e-15 1.663771869264e-03 3.321287684165e-03 4.971851523590e-03 -6.614772712065e-03 - Type L N - 0 0 4 -1.000000000000e+00 9.998857723822e-01 9.995431365007e-01 9.989722332485e-01 -9.981732973708e-01 9.971466573496e-01 9.958927352436e-01 9.944120464808e-01 -9.927051996072e-01 9.907728959881e-01 9.886159294654e-01 9.862351859690e-01 -9.836316430835e-01 9.808063695699e-01 9.777605248430e-01 9.744953584044e-01 -9.710122092318e-01 9.673125051241e-01 9.633977620041e-01 9.592695831779e-01 -9.549296585514e-01 9.503797638053e-01 9.456217595285e-01 9.406575903096e-01 -9.354892837886e-01 9.301189496681e-01 9.245487786841e-01 9.187810415390e-01 -9.128180877951e-01 9.066623447304e-01 9.003163161571e-01 8.937825812035e-01 -8.870637930592e-01 8.801626776859e-01 8.730820324926e-01 8.658247249770e-01 -8.583936913341e-01 8.507919350314e-01 8.430225253529e-01 8.350885959116e-01 -8.269933431327e-01 8.187400247058e-01 8.103319580098e-01 8.017725185095e-01 -7.930651381253e-01 7.842133035765e-01 7.752205547002e-01 7.660904827447e-01 -7.568267286407e-01 7.474329812490e-01 7.379129755873e-01 7.282704910361e-01 -7.185093495243e-01 7.086334136974e-01 6.986465850664e-01 6.885528021412e-01 -6.783560385471e-01 6.680603011268e-01 6.576696280293e-01 6.471880867846e-01 -6.366197723676e-01 6.259688052507e-01 6.152393294468e-01 6.044355105433e-01 -5.935615337287e-01 5.826216018118e-01 5.716199332362e-01 5.605607600890e-01 -5.494483261068e-01 5.382868846788e-01 5.270806968481e-01 5.158340293127e-01 -5.045511524271e-01 4.932363382055e-01 4.818938583272e-01 4.705279821459e-01 -4.591429747041e-01 4.477430947521e-01 4.363325927745e-01 4.249157090245e-01 -4.134966715664e-01 4.020796943278e-01 3.906689751635e-01 3.792686939297e-01 -3.678830105718e-01 3.565160632258e-01 3.451719663343e-01 3.338548087774e-01 -3.225686520215e-01 3.113175282844e-01 3.001054387190e-01 2.889363516174e-01 -2.778142006333e-01 2.667428830274e-01 2.557262579339e-01 2.447681446495e-01 -2.338723209472e-01 2.230425214136e-01 2.122824358125e-01 2.015957074739e-01 -1.909859317103e-01 1.804566542612e-01 1.700113697654e-01 1.596535202632e-01 -1.493864937280e-01 1.392136226292e-01 1.291381825264e-01 1.191633906954e-01 -1.092924047871e-01 9.952832151981e-02 8.987417540595e-02 8.033293751256e-02 -7.090751425767e-02 6.160074624218e-02 5.241540711809e-02 4.335420249347e-02 -3.441976887486e-02 2.561467264741e-02 1.694140909324e-02 8.402401448597e-03 -7.672312953838e-15 -8.263518780010e-03 -1.638595305738e-02 -2.436517642069e-02 --3.219913862486e-02 -3.988586629398e-02 -4.742346358302e-02 -5.481011279815e-02 --6.204407497544e-02 -6.912369041777e-02 -7.604737918964e-02 -8.281364156991e-02 --8.942105846213e-02 -9.586829176246e-02 -1.021540846851e-01 -1.082772620449e-01 --1.142367304978e-01 -1.200314787380e-01 -1.256605776527e-01 -1.311231804344e-01 --1.364185226502e-01 -1.415459222689e-01 -1.465047796452e-01 -1.512945774624e-01 --1.559148806314e-01 -1.603653361497e-01 -1.646456729163e-01 -1.687557015072e-01 --1.726953139072e-01 -1.764644832025e-01 -1.800632632314e-01 -1.834917881941e-01 --1.867502722230e-01 -1.898390089126e-01 -1.927583708100e-01 -1.955088088658e-01 --1.980908518463e-01 -2.005051057080e-01 -2.027522529330e-01 -2.048330518274e-01 --2.067483357832e-01 -2.084990125027e-01 -2.100860631877e-01 -2.115105416927e-01 --2.127735736434e-01 -2.138763555209e-01 -2.148201537121e-01 -2.156063035269e-01 --2.162362081830e-01 -2.167113377586e-01 -2.170332281139e-01 -2.172034797827e-01 --2.172237568329e-01 -2.170957856992e-01 -2.168213539861e-01 -2.164023092444e-01 --2.158405577195e-01 -2.151380630747e-01 -2.142968450882e-01 -2.133189783257e-01 --2.122065907892e-01 -2.109618625430e-01 -2.095870243170e-01 -2.080843560887e-01 --2.064561856448e-01 -2.047048871231e-01 -2.028328795354e-01 -2.008426252725e-01 --1.987366285918e-01 -1.965174340891e-01 -1.941876251546e-01 -1.917498224147e-01 --1.892066821602e-01 -1.865608947617e-01 -1.838151830732e-01 -1.809723008254e-01 --1.780350310077e-01 -1.750061842432e-01 -1.718885971536e-01 -1.686851307183e-01 --1.653986686265e-01 -1.620321156246e-01 -1.585883958585e-01 -1.550704512126e-01 --1.514812396472e-01 -1.478237335327e-01 -1.441009179842e-01 -1.403157891963e-01 --1.364713527783e-01 -1.325706220924e-01 -1.286166165939e-01 -1.246123601762e-01 --1.205608795201e-01 -1.164652024486e-01 -1.123283562887e-01 -1.081533662405e-01 --1.039432537543e-01 -9.970103491761e-02 -9.542971885150e-02 -9.113230611832e-02 --8.681178714104e-02 -8.247114063521e-02 -7.811333205440e-02 -7.374131204982e-02 --6.935801494513e-02 -6.496635722697e-02 -6.056923605223e-02 -5.616952777273e-02 --5.177008647808e-02 -4.737374255747e-02 -4.298330128111e-02 -3.860154140214e-02 --3.423121377957e-02 -2.987504002304e-02 -2.553571116010e-02 -2.121588632660e-02 --1.691819148087e-02 -1.264521814239e-02 -8.399522155476e-03 -4.183622478594e-03 --7.672312953838e-15 4.148903619835e-03 8.260687078510e-03 1.233299053393e-02 -1.636349667820e-02 2.034993178264e-02 2.429006671325e-02 2.818171791645e-02 -3.202274837442e-02 3.581106852968e-02 3.954463717861e-02 4.322146233329e-02 -4.683960205159e-02 5.039716523481e-02 5.389231239291e-02 5.732325637672e-02 -6.068826307698e-02 6.398565208991e-02 6.721379734912e-02 7.037112772347e-02 -7.345612758087e-02 7.646733731766e-02 7.940335385353e-02 8.226283109171e-02 -8.504448034442e-02 8.774707072340e-02 9.036942949543e-02 9.291044240281e-02 -9.536905394873e-02 9.774426764751e-02 1.000351462397e-01 1.022408118720e-01 -1.043604462423e-01 1.063932907093e-01 1.083386463677e-01 1.101958740880e-01 -1.119643945218e-01 1.136436880728e-01 1.152332948324e-01 1.167328144823e-01 -1.181419061618e-01 1.194602883023e-01 1.206877384270e-01 1.218240929184e-01 -1.228692467518e-01 1.238231531963e-01 1.246858234832e-01 1.254573264425e-01 -1.261377881068e-01 1.267273912844e-01 1.272263751013e-01 1.276350345115e-01 -1.279537197783e-01 1.281828359248e-01 1.283228421551e-01 1.283742512467e-01 -1.283376289143e-01 1.282135931456e-01 1.280028135091e-01 1.277060104358e-01 -1.273239544735e-01 1.268574655159e-01 1.263074120056e-01 1.256747101130e-01 -1.249603228903e-01 1.241652594025e-01 1.232905738353e-01 1.223373645797e-01 -1.213067732963e-01 1.201999839574e-01 1.190182218689e-01 1.177627526727e-01 -1.164348813293e-01 1.150359510831e-01 1.135673424083e-01 1.120304719395e-01 -1.104267913845e-01 1.087577864224e-01 1.070249755862e-01 1.052299091315e-01 -1.033741678916e-01 1.014593621201e-01 9.948713032115e-02 9.745913806862e-02 -9.537707681491e-02 9.324266268984e-02 9.105763529064e-02 8.882375646372e-02 -8.654280907895e-02 8.421659579729e-02 8.184693783247e-02 7.943567370750e-02 -7.698465800682e-02 7.449576012479e-02 7.197086301134e-02 6.941186191553e-02 -6.682066312777e-02 6.419918272143e-02 6.154934529476e-02 5.887308271361e-02 -5.617233285597e-02 5.344903835889e-02 5.070514536864e-02 4.794260229479e-02 -4.516335856893e-02 4.236936340890e-02 3.956256458903e-02 3.674490721732e-02 -3.391833252013e-02 3.108477663513e-02 2.824616941330e-02 2.540443323047e-02 -2.256148180926e-02 1.971921905204e-02 1.687953788549e-02 1.404431911761e-02 -1.121543030754e-02 8.394724649155e-03 5.584039868727e-03 2.785197137562e-03 -7.578074296609e-15 -2.769766682491e-03 -5.522337770715e-03 -8.255968869815e-03 --1.096893733374e-02 -1.365954325136e-02 -1.632611041382e-02 -1.896698726257e-02 --2.158054781754e-02 -2.416519258507e-02 -2.671934944500e-02 -2.924147451659e-02 --3.173005300269e-02 -3.418360001181e-02 -3.660066135775e-02 -3.897981433617e-02 --4.131966847794e-02 -4.361886627880e-02 -4.587608390495e-02 -4.809003187435e-02 --5.025945571322e-02 -5.238313658769e-02 -5.445989191001e-02 -5.648857591937e-02 --5.846808023678e-02 -6.039733439402e-02 -6.227530633623e-02 -6.410100289806e-02 --6.587347025325e-02 -6.759179433722e-02 -6.925510124285e-02 -7.086255758902e-02 --7.241337086197e-02 -7.390678972935e-02 -7.534210432677e-02 -7.671864651695e-02 --7.803579012128e-02 -7.929295112383e-02 -8.048958784776e-02 -8.162520110414e-02 --8.269933431327e-02 -8.371157359834e-02 -8.466154785176e-02 -8.554892877396e-02 --8.637343088493e-02 -8.713481150850e-02 -8.783287072958e-02 -8.846745132432e-02 --8.903843866361e-02 -8.954576058973e-02 -8.998938726675e-02 -9.036933100447e-02 --9.068564605646e-02 -9.093842839216e-02 -9.112781544345e-02 -9.125398582595e-02 --9.131715903518e-02 -9.131759511805e-02 -9.125559431986e-02 -9.113149670714e-02 --9.094568176680e-02 -9.069856798169e-02 -9.039061238318e-02 -9.002231008092e-02 --8.959419377037e-02 -8.910683321828e-02 -8.856083472673e-02 -8.795684057602e-02 --8.729552844688e-02 -8.657761082247e-02 -8.580383437062e-02 -8.497497930673e-02 --8.409185873785e-02 -8.315531798846e-02 -8.216623390832e-02 -8.112551416309e-02 --8.003409650806e-02 -7.889294804556e-02 -7.770306446669e-02 -7.646546927776e-02 --7.518121301207e-02 -7.385137242756e-02 -7.247704969097e-02 -7.105937154890e-02 --6.959948848656e-02 -6.809857387460e-02 -6.655782310482e-02 -6.497845271507e-02 --6.336169950423e-02 -6.170881963766e-02 -6.002108774381e-02 -5.829979600262e-02 --5.654625322625e-02 -5.476178393279e-02 -5.294772741363e-02 -5.110543679496e-02 --4.923627809415e-02 -4.734162927160e-02 -4.542287927867e-02 -4.348142710221e-02 --4.151868080659e-02 -3.953605657350e-02 -3.753497774043e-02 -3.551687383826e-02 --3.348317962869e-02 -3.143533414209e-02 -2.937477971632e-02 -2.730296103728e-02 --2.522132418163e-02 -2.313131566239e-02 -2.103438147799e-02 -1.893196616539e-02 --1.682551185776e-02 -1.471645734750e-02 -1.260623715499e-02 -1.049628060369e-02 --8.388010902283e-03 -6.282844234275e-03 -4.182188855659e-03 -2.087444201223e-03 --7.672312953838e-15 2.078764599540e-03 4.147481894186e-03 6.204796479797e-03 -8.249366093966e-03 1.027986244690e-02 1.229497204004e-02 1.429339697200e-02 -1.627385573126e-02 1.823508397523e-02 2.017583529520e-02 2.209488196671e-02 -2.399101568496e-02 2.586304828480e-02 2.770981244494e-02 2.953016237589e-02 -3.132297449134e-02 3.308714806259e-02 3.482160585556e-02 3.652529475025e-02 -3.819718634205e-02 3.983627752477e-02 4.144159105503e-02 4.301217609765e-02 -4.454710875183e-02 4.604549255782e-02 4.750645898376e-02 4.892916789260e-02 -5.031280798870e-02 5.165659724396e-02 5.295978330335e-02 5.422164386948e-02 -5.544148706619e-02 5.661865178096e-02 5.775250798589e-02 5.884245703727e-02 -5.988793195354e-02 6.088839767149e-02 6.184335128071e-02 6.275232223613e-02 -6.361487254867e-02 6.443059695381e-02 6.519912305825e-02 6.592011146445e-02 -6.659325587311e-02 6.721828316370e-02 6.779495345287e-02 6.832306013093e-02 -6.880242987642e-02 6.923292264877e-02 6.961443165918e-02 6.994688331985e-02 -7.023023717155e-02 7.046448578979e-02 7.064965466964e-02 7.078580208929e-02 -7.087301895268e-02 7.091142861123e-02 7.090118666487e-02 7.084248074266e-02 -7.073553026307e-02 7.058058617429e-02 7.037793067472e-02 7.012787691387e-02 -6.983076867396e-02 6.948698003260e-02 6.909691500657e-02 6.866100717726e-02 -6.817971929793e-02 6.765354288313e-02 6.708299778067e-02 6.646863172632e-02 -6.581101988180e-02 6.511076435624e-02 6.436849371157e-02 6.358486245216e-02 -6.276055049913e-02 6.189626264975e-02 6.099272802224e-02 6.005069948647e-02 -5.907095308091e-02 5.805428741632e-02 5.700152306657e-02 5.591350194701e-02 -5.479108668091e-02 5.363515995433e-02 5.244662385998e-02 5.122639923040e-02 -4.997542496109e-02 4.869465732392e-02 4.738506927143e-02 4.604764973237e-02 -4.468340289906e-02 4.329334750708e-02 4.187851610765e-02 4.043995433340e-02 -3.897872015787e-02 3.749588314926e-02 3.599252371908e-02 3.446973236600e-02 -3.292860891557e-02 3.137026175626e-02 2.979580707230e-02 2.820636807395e-02 -2.660307422553e-02 2.498706047192e-02 2.335946646383e-02 2.172143578265e-02 -2.007411516498e-02 1.841865372778e-02 1.675620219434e-02 1.508791212165e-02 -1.341493512983e-02 1.173842213385e-02 1.005952257823e-02 8.379383675215e-03 -6.699149646791e-03 5.019960971106e-03 3.342953633789e-03 1.669258384619e-03 -7.615769759501e-15 -1.663703448216e-03 -3.320741317270e-03 -4.970011110682e-03 --6.610419187879e-03 - Type L N - 0 0 5 -1.000000000000e+00 9.998355147105e-01 9.993421562398e-01 9.985202167122e-01 -9.973701827725e-01 9.958927352436e-01 9.940887486459e-01 9.919592905814e-01 -9.895056209813e-01 9.867291912182e-01 9.836316430835e-01 9.802148076310e-01 -9.764807038877e-01 9.724315374315e-01 9.680696988392e-01 9.633977620041e-01 -9.584184823246e-01 9.531347947667e-01 9.475498117999e-01 9.416668212101e-01 -9.354892837886e-01 9.290208309025e-01 9.222652619442e-01 9.152265416659e-01 -9.079087973984e-01 9.003163161571e-01 8.924535416387e-01 8.843250711084e-01 -8.759356521824e-01 8.672901795064e-01 8.583936913341e-01 8.492513660070e-01 -8.398685183386e-01 8.302505959068e-01 8.204031752555e-01 8.103319580098e-01 -8.000427669069e-01 7.895415417463e-01 7.788343352617e-01 7.679273089188e-01 -7.568267286407e-01 7.455389604655e-01 7.340704661390e-01 7.224277986455e-01 -7.106175976801e-01 6.986465850664e-01 6.865215601232e-01 6.742493949824e-01 -6.618370298633e-01 6.492914683061e-01 6.366197723676e-01 6.238290577842e-01 -6.109264891046e-01 5.979192747957e-01 5.848146623272e-01 5.716199332362e-01 -5.583423981772e-01 5.449893919607e-01 5.315682685834e-01 5.180863962557e-01 -5.045511524271e-01 4.909699188169e-01 4.773500764507e-01 4.636990007081e-01 -4.500240563851e-01 4.363325927745e-01 4.226319387680e-01 4.089293979839e-01 -3.952322439240e-01 3.815477151625e-01 3.678830105718e-01 3.542452845871e-01 -3.406416425154e-01 3.270791358894e-01 3.135647578731e-01 3.001054387190e-01 -2.867080412837e-01 2.733793566015e-01 2.601260995227e-01 2.469549044171e-01 -2.338723209472e-01 2.208848099135e-01 2.079987391756e-01 1.952203796510e-01 -1.825559013952e-01 1.700113697654e-01 1.575927416715e-01 1.453058619150e-01 -1.331564596210e-01 1.211501447634e-01 1.092924047870e-01 9.758860132927e-02 -8.604396704185e-02 7.466360251687e-02 6.345247331782e-02 5.241540711808e-02 -4.155709094885e-02 3.088206855810e-02 2.039473788244e-02 1.009934863344e-02 --3.353609941903e-15 -9.899361531791e-03 -1.959494424000e-02 -2.908311310812e-02 --3.836039164510e-02 -4.742346358303e-02 -5.626917445166e-02 -6.489453302869e-02 --7.329671266529e-02 -8.147305248591e-02 -8.942105846214e-02 -9.713840435983e-02 --1.046229325594e-01 -1.118726547488e-01 -1.188857524890e-01 -1.256605776527e-01 --1.321956527344e-01 -1.384896710345e-01 -1.445414967152e-01 -1.503501647310e-01 --1.559148806314e-01 -1.612350202393e-01 -1.663101292031e-01 -1.711399224253e-01 --1.757242833674e-01 -1.800632632314e-01 -1.841570800207e-01 -1.880061174797e-01 --1.916109239149e-01 -1.949722108968e-01 -1.980908518463e-01 -2.009678805055e-01 --2.036044892942e-01 -2.060020275558e-01 -2.081619996917e-01 -2.100860631877e-01 --2.117760265342e-01 -2.132338470410e-01 -2.144616285503e-01 -2.154616190492e-01 --2.162362081830e-01 -2.167879246744e-01 -2.171194336468e-01 -2.172335338584e-01 --2.171331548467e-01 -2.168213539861e-01 -2.163013134635e-01 -2.155763371712e-01 --2.146498475232e-01 -2.135253821946e-01 -2.122065907892e-01 -2.106972314371e-01 --2.090011673253e-01 -2.071223631645e-01 -2.050648815952e-01 -2.028328795354e-01 --2.004306044739e-01 -1.978623907118e-01 -1.951326555559e-01 -1.922458954659e-01 --1.892066821602e-01 -1.860196586822e-01 -1.826895354318e-01 -1.792210861633e-01 --1.756191439552e-01 -1.718885971536e-01 -1.680343852933e-01 -1.640614949995e-01 --1.599749558740e-01 -1.557798363681e-01 -1.514812396472e-01 -1.470842994485e-01 --1.425941759367e-01 -1.380160515603e-01 -1.333551269115e-01 -1.286166165939e-01 --1.238057450998e-01 -1.189277427023e-01 -1.139878413639e-01 -1.089912706645e-01 --1.039432537543e-01 -9.884900333144e-02 -9.371371765054e-02 -8.854257656302e-02 --8.334073759344e-02 -7.811333205438e-02 -7.286546120295e-02 -6.760219244176e-02 --6.232855556729e-02 -5.704953906847e-02 -5.177008647807e-02 -4.649509277991e-02 --4.122940087422e-02 -3.597779810398e-02 -3.074501284471e-02 -2.553571116009e-02 --2.035449352597e-02 -1.520589162505e-02 -1.009436521454e-02 -5.024299068894e-03 -3.353609941903e-15 4.974306043339e-03 9.894476794457e-03 1.475645640462e-02 -1.955627809358e-02 2.429006671326e-02 2.895404122270e-02 3.354451707280e-02 -3.805790849928e-02 4.249073072232e-02 4.683960205160e-02 5.110124589546e-02 -5.527249267289e-02 5.935028162727e-02 6.333166254089e-02 6.721379734913e-02 -7.099396165368e-02 7.466954613380e-02 7.823805785504e-02 8.169712147485e-02 -8.504448034442e-02 8.827799750657e-02 9.139565658907e-02 9.439556259335e-02 -9.727594257840e-02 1.000351462397e-01 1.026716463832e-01 1.051840392948e-01 -1.075710450049e-01 1.098315074484e-01 1.119643945218e-01 1.139687980356e-01 -1.158439335639e-01 1.175891401928e-01 1.192038801653e-01 1.206877384270e-01 -1.220404220705e-01 1.232617596819e-01 1.243517005880e-01 1.253103140077e-01 -1.261377881068e-01 1.268344289589e-01 1.274006594126e-01 1.278370178673e-01 -1.281441569587e-01 1.283228421551e-01 1.283739502669e-01 1.282984678711e-01 -1.280974896510e-01 1.277722166546e-01 1.273239544735e-01 1.267541113426e-01 -1.260641961644e-01 1.252558164592e-01 1.243306762428e-01 1.232905738353e-01 -1.221373996013e-01 1.208731336255e-01 1.194998433250e-01 1.180196810003e-01 -1.164348813293e-01 1.147477588040e-01 1.129607051143e-01 1.110761864814e-01 -1.090967409418e-01 1.070249755862e-01 1.048635637545e-01 1.026152421907e-01 -1.002828081598e-01 9.786911652868e-02 9.537707681490e-02 9.280965020548e-02 -9.016984654818e-02 8.746072131841e-02 8.468537256425e-02 8.184693783246e-02 -7.894859107811e-02 7.599353956071e-02 7.298502072939e-02 6.992629910018e-02 -6.682066312776e-02 6.367142207470e-02 6.048190288084e-02 5.725544703545e-02 -5.399540745491e-02 5.070514536863e-02 4.738802721590e-02 4.404742155613e-02 -4.068669599532e-02 3.730921413128e-02 3.391833252012e-02 3.051739766654e-02 -2.710974304058e-02 2.369868612310e-02 2.028752548257e-02 1.687953788548e-02 -1.347797544287e-02 1.008606279507e-02 6.706994337177e-03 3.343931487323e-03 --3.353609941903e-15 -3.321712673460e-03 -6.618159975102e-03 -9.886338779332e-03 --1.312329187859e-02 -1.632611041383e-02 -1.949193624796e-02 -2.261796428036e-02 --2.570144470082e-02 -2.873968518112e-02 -3.173005300270e-02 -3.466997711879e-02 --3.755695014953e-02 -4.038853030866e-02 -4.316234326035e-02 -4.587608390496e-02 --4.852751809239e-02 -5.111448426194e-02 -5.363489500755e-02 -5.608673856737e-02 --5.846808023679e-02 -6.077706370390e-02 -6.301191230675e-02 -6.517093021151e-02 --6.725250351099e-02 -6.925510124286e-02 -7.117727632702e-02 -7.301766642180e-02 --7.477499469850e-02 -7.644807053400e-02 -7.803579012129e-02 -7.953713699763e-02 --8.095118249047e-02 -8.227708608085e-02 -8.351409568469e-02 -8.466154785177e-02 --8.571886788288e-02 -8.668556986532e-02 -8.756125662706e-02 -8.834561961013e-02 --8.903843866361e-02 -8.963958175685e-02 -9.014900461357e-02 -9.056675026752e-02 --9.089294854048e-02 -9.112781544345e-02 -9.127165250193e-02 -9.132484600626e-02 --9.128786618804e-02 -9.116126632377e-02 -9.094568176680e-02 -9.064182890882e-02 --9.025050407227e-02 -8.977258233476e-02 -8.920901628720e-02 -8.856083472673e-02 --8.782914128630e-02 -8.701511300212e-02 -8.611999882078e-02 -8.514511804759e-02 --8.409185873785e-02 -8.296167603278e-02 -8.175609044184e-02 -8.047668607331e-02 --7.912510881496e-02 -7.770306446669e-02 -7.621231682701e-02 -7.465468573548e-02 --7.303204507292e-02 -7.134632072145e-02 -6.959948848655e-02 -6.779357198298e-02 --6.593064048684e-02 -6.401280675583e-02 -6.204222481980e-02 -6.002108774380e-02 --5.795162536585e-02 -5.583610201145e-02 -5.367681418723e-02 -5.147608825581e-02 --4.923627809414e-02 -4.695976273751e-02 -4.464894401151e-02 -4.230624415413e-02 --3.993410343019e-02 -3.753497774042e-02 -3.511133622733e-02 -3.266565888012e-02 --3.020043414085e-02 -2.771815651398e-02 -2.522132418162e-02 -2.271243662650e-02 --2.019399226492e-02 -1.766848609178e-02 -1.513840733978e-02 -1.260623715498e-02 --1.007444629063e-02 -7.545492821499e-03 -5.021819880599e-03 -2.505853420324e-03 -3.353609941903e-15 2.493355398284e-03 4.971851523585e-03 7.433152978010e-03 -9.874952304682e-03 1.229497204005e-02 1.469096672876e-02 1.706072489944e-02 -1.940207099964e-02 2.171286728842e-02 2.399101568497e-02 2.623445957164e-02 -2.844118555013e-02 3.060922514918e-02 3.273665648249e-02 3.482160585557e-02 -3.686224932018e-02 3.885681417514e-02 4.080358041244e-02 4.270088210738e-02 -4.454710875184e-02 4.634070652958e-02 4.808017953264e-02 4.976409091801e-02 -5.139106400368e-02 5.295978330336e-02 5.446899549908e-02 5.591751035112e-02 -5.730420154464e-02 5.862800747246e-02 5.988793195355e-02 6.108304488681e-02 -6.221248283990e-02 6.327544957257e-02 6.427121649467e-02 6.519912305826e-02 -6.605857708405e-02 6.684905502200e-02 6.757010214600e-02 6.822133268299e-02 -6.880242987642e-02 6.931314598432e-02 6.975330221231e-02 7.012278858185e-02 -7.042156373406e-02 7.064965466964e-02 7.080715642526e-02 7.089423168719e-02 -7.091111034250e-02 7.085808896881e-02 7.073553026306e-02 7.054386241019e-02 -7.028357839256e-02 6.995523524100e-02 6.955945322834e-02 6.909691500657e-02 -6.856836468843e-02 6.797460687474e-02 6.731650562847e-02 6.659498339670e-02 -6.581101988179e-02 6.496565086298e-02 6.405996696958e-02 6.309511240737e-02 -6.207228363932e-02 6.099272802224e-02 5.985774240061e-02 5.866867165936e-02 -5.742690723682e-02 5.613388559961e-02 5.479108668090e-02 5.340003228383e-02 -5.196228445149e-02 5.047944380534e-02 4.895314785360e-02 4.738506927142e-02 -4.577691415454e-02 4.413042024804e-02 4.244735515224e-02 4.072951450720e-02 -3.897872015786e-02 3.719681830143e-02 3.538567761908e-02 3.354718739344e-02 -3.168325561403e-02 2.979580707229e-02 2.788678144804e-02 2.595813138934e-02 -2.401182058740e-02 2.204982184855e-02 2.007411516497e-02 1.808668578607e-02 -1.608952229238e-02 1.408461467357e-02 1.207395241270e-02 1.005952257821e-02 -8.043307925581e-03 6.027285010332e-03 4.013422314213e-03 2.003678386190e-03 --3.353609941903e-15 -1.995679670084e-03 -3.981442853549e-03 -5.955388966477e-03 --7.915636371214e-03 -9.860324111326e-03 -1.178761362031e-02 -1.369569040251e-02 --1.558276568475e-02 -1.744707803726e-02 -1.928689496242e-02 -2.110051444999e-02 --2.288626649737e-02 -2.464251459378e-02 -2.636765716683e-02 -2.806012899041e-02 --2.971840255270e-02 -3.134098938305e-02 -3.292644133668e-02 -3.447335183621e-02 --3.598035706880e-02 -3.744613713811e-02 -3.886941717006e-02 -4.024896837154e-02 --4.158360904115e-02 -4.287220553129e-02 -4.411367316085e-02 -4.530697707766e-02 --4.645113307028e-02 -4.754520832833e-02 -4.858832215099e-02 -4.957964660305e-02 --5.051840711811e-02 -5.140388304864e-02 -5.223540816233e-02 -5.301237108475e-02 --5.373421568778e-02 -5.440044142386e-02 -5.501060360585e-02 -5.556431363235e-02 --5.606123915857e-02 -5.650110421273e-02 -5.688368925801e-02 -5.720883120029e-02 --5.747642334177e-02 -5.768641528072e-02 -5.783881275763e-02 -5.793367744821e-02 --5.797112670335e-02 -5.795133323679e-02 -5.787452476069e-02 -5.774098356987e-02 --5.755104607507e-02 -5.730510228602e-02 -5.700359524489e-02 -5.664702041079e-02 --5.623592499626e-02 -5.577090725630e-02 -5.525261573089e-02 -5.468174844201e-02 --5.405905204576e-02 -5.338532094088e-02 -5.266139633442e-02 -5.188816526574e-02 --5.106655958980e-02 -5.019755492096e-02 -4.928216953831e-02 -4.832146325383e-02 --4.731653624442e-02 -4.626852784924e-02 -4.517861533337e-02 -4.404801261941e-02 --4.287796898795e-02 -4.166976774856e-02 -4.042472488259e-02 -3.914418765900e-02 --3.782953322493e-02 -3.648216717212e-02 -3.510352208092e-02 -3.369505604309e-02 --3.225825116512e-02 -3.079461205334e-02 -2.930566428247e-02 -2.779295284911e-02 --2.625804061163e-02 -2.470250671805e-02 -2.312794502346e-02 -2.153596249848e-02 --1.992817763036e-02 -1.830621881823e-02 -1.667172276412e-02 -1.502633286119e-02 --1.337169758083e-02 -1.170946886015e-02 -1.004130049137e-02 -8.368846514648e-03 --6.693759615919e-03 -5.017689531214e-03 -3.342281458993e-03 -1.669174481984e-03 -3.353609941903e-15 1.663619824813e-03 3.320073608774e-03 4.967762272203e-03 -6.605100548166e-03 - Type L N - 0 0 6 -1.000000000000e+00 9.997761212345e-01 9.991046653715e-01 9.979861735385e-01 -9.964215470375e-01 9.944120464808e-01 9.919592905814e-01 9.890652546003e-01 -9.857322684524e-01 9.819630144724e-01 9.777605248430e-01 9.731281786890e-01 -9.680696988392e-01 9.625891482603e-01 9.566909261659e-01 9.503797638053e-01 -9.436607199360e-01 9.365391759848e-01 9.290208309025e-01 9.211116957177e-01 -9.128180877951e-01 9.041466248047e-01 8.951042184077e-01 8.856980676661e-01 -8.759356521824e-01 8.658247249770e-01 8.553733051108e-01 8.445896700594e-01 -8.334823478491e-01 8.220601089605e-01 8.103319580098e-01 7.983071252151e-01 -7.859950576585e-01 7.734054103500e-01 7.605480371061e-01 7.474329812490e-01 -7.340704661390e-01 7.204708855480e-01 7.066447938841e-01 6.926028962792e-01 -6.783560385471e-01 6.639151970248e-01 6.492914683061e-01 6.344960588783e-01 -6.195402746735e-01 6.044355105433e-01 5.891932396702e-01 5.738250029242e-01 -5.583423981772e-01 5.427570695849e-01 5.270806968481e-01 5.113249844634e-01 -4.955016509752e-01 4.796224182391e-01 4.636990007081e-01 4.477430947521e-01 -4.317663680216e-01 4.157804488669e-01 3.997969158223e-01 3.838272871669e-01 -3.678830105718e-01 3.519754528448e-01 3.361158897820e-01 3.203154961369e-01 -3.045853357170e-01 2.889363516174e-01 2.733793566015e-01 2.579250236380e-01 -2.425838766034e-01 2.273662811590e-01 2.122824358125e-01 1.973423631710e-01 -1.825559013952e-01 1.679326958626e-01 1.534821910482e-01 1.392136226292e-01 -1.251360098232e-01 1.112581479646e-01 9.758860132928e-02 8.413569621079e-02 -7.090751425767e-02 5.791188607580e-02 4.515638510272e-02 3.264832175908e-02 -2.039473788245e-02 8.402401448597e-03 -3.322198415458e-03 -1.477285612207e-02 --2.594365401351e-02 -3.682896644873e-02 -4.742346358302e-02 -5.772211483774e-02 --6.772019205735e-02 -7.741327235156e-02 -8.679724062067e-02 -9.586829176246e-02 --1.046229325594e-01 -1.130579832452e-01 -1.211705787506e-01 -1.289581696271e-01 --1.364185226502e-01 -1.435497211015e-01 -1.503501647310e-01 -1.568185694005e-01 --1.629539664096e-01 -1.687557015072e-01 -1.742234335878e-01 -1.793571330792e-01 --1.841570800207e-01 -1.886238618368e-01 -1.927583708100e-01 -1.965618012556e-01 --2.000356464025e-01 -2.031816949862e-01 -2.060020275558e-01 -2.084990125027e-01 --2.106753018143e-01 -2.125338265592e-01 -2.140777921103e-01 -2.153106731093e-01 --2.162362081830e-01 -2.168583944138e-01 -2.171814815742e-01 -2.172099661307e-01 --2.169485850260e-01 -2.164023092444e-01 -2.155763371712e-01 -2.144760877518e-01 --2.131071934591e-01 -2.114754930785e-01 -2.095870243170e-01 -2.074480162477e-01 --2.050648815952e-01 -2.024442088739e-01 -1.995927543858e-01 -1.965174340891e-01 --1.932253153449e-01 -1.897236085524e-01 -1.860196586822e-01 -1.821209367168e-01 --1.780350310077e-01 -1.737696385594e-01 -1.693325562496e-01 -1.647316719951e-01 --1.599749558740e-01 -1.550704512126e-01 -1.500262656484e-01 -1.448505621774e-01 --1.395515501966e-01 -1.341374765510e-01 -1.286166165939e-01 -1.229972652722e-01 --1.172877282441e-01 -1.114963130395e-01 -1.056313202729e-01 -9.970103491761e-02 --9.371371765055e-02 -8.767759627652e-02 -8.160085724134e-02 -7.549163724239e-02 --6.935801494513e-02 -6.320800281437e-02 -5.704953906848e-02 -5.089047976476e-02 --4.473859102402e-02 -3.860154140214e-02 -3.248689441626e-02 -2.640210123300e-02 --2.035449352598e-02 -1.435127650953e-02 -8.399522155475e-03 -2.506162599395e-03 -3.322016257211e-03 9.078380942906e-03 1.475645640461e-02 2.034993178264e-02 -2.585266596731e-02 3.125869293193e-02 3.656222683765e-02 4.175766690549e-02 -4.683960205159e-02 5.180281528153e-02 5.664228784039e-02 6.135320311502e-02 -6.593095028555e-02 7.037112772347e-02 7.466954613379e-02 7.882223143917e-02 -8.282542740418e-02 8.667559799815e-02 9.036942949543e-02 9.390383231208e-02 -9.727594257839e-02 1.004831234469e-01 1.035229661361e-01 1.063932907093e-01 -1.090921465908e-01 1.116178128186e-01 1.139687980356e-01 1.161438402206e-01 -1.181419061618e-01 1.199621906724e-01 1.216041155534e-01 1.230673283049e-01 -1.243517005880e-01 1.254573264425e-01 1.263845202616e-01 1.271338145288e-01 -1.277059573205e-01 1.281019095783e-01 1.283228421551e-01 1.283701326409e-01 -1.282453619720e-01 1.279503108287e-01 1.274869558281e-01 1.268574655159e-01 -1.260641961644e-01 1.251096873815e-01 1.239966575376e-01 1.227279990164e-01 -1.213067732963e-01 1.197362058687e-01 1.180196810003e-01 1.161607363465e-01 -1.141630574224e-01 1.120304719395e-01 1.097669440145e-01 1.073765682587e-01 -1.048635637545e-01 1.022322679273e-01 9.948713032115e-02 9.663270628381e-02 -9.367365057202e-02 9.061471088259e-02 8.746072131842e-02 8.421659579729e-02 -8.088732141131e-02 7.747795174524e-02 7.399360016178e-02 7.043943306182e-02 -6.682066312777e-02 6.314254255800e-02 5.941035630052e-02 5.562941529365e-02 -5.180504972193e-02 4.794260229479e-02 4.404742155614e-02 4.012485523239e-02 -3.618024362662e-02 3.221891306649e-02 2.824616941330e-02 2.426729163961e-02 -2.028752548258e-02 1.631207718023e-02 1.234610729754e-02 8.394724649155e-03 -4.462980325592e-03 5.558618292154e-04 -3.321712673450e-03 -7.164899976963e-03 --1.096893733374e-02 -1.472914781648e-02 -1.844094554067e-02 -2.209984074161e-02 --2.570144470081e-02 -2.924147451659e-02 -3.271575771426e-02 -3.612023669091e-02 --3.945097299083e-02 -4.270415140699e-02 -4.587608390495e-02 -4.896321336523e-02 --5.196211714086e-02 -5.486951042677e-02 -5.768224943800e-02 -6.039733439402e-02 --6.301191230674e-02 -6.552327956968e-02 -6.792888434663e-02 -7.022632875778e-02 --7.241337086197e-02 -7.448792643370e-02 -7.644807053400e-02 -7.829203887430e-02 --8.001822897298e-02 -8.162520110414e-02 -8.311167903878e-02 -8.447655057860e-02 --8.571886788288e-02 -8.683784758929e-02 -8.783287072958e-02 -8.870348244140e-02 --8.944939147777e-02 -9.007046951594e-02 -9.056675026751e-02 -9.093842839216e-02 --9.118585821725e-02 -9.130955226611e-02 -9.131017959773e-02 -9.118856396099e-02 --9.094568176680e-02 -9.058265988151e-02 -9.010077324544e-02 -8.950144232025e-02 --8.878623036943e-02 -8.795684057602e-02 -8.701511300212e-02 -8.596302139470e-02 --8.480266984257e-02 -8.353628928948e-02 -8.216623390832e-02 -8.069497734182e-02 --7.912510881497e-02 -7.745932912479e-02 -7.570044651304e-02 -7.385137242756e-02 --7.191511717826e-02 -6.989478549347e-02 -6.779357198299e-02 -6.561475651371e-02 --6.336169950423e-02 -6.103783714462e-02 -5.864667654772e-02 -5.619179083840e-02 --5.367681418723e-02 -5.110543679496e-02 -4.848139983440e-02 -4.580849035631e-02 --4.309053616561e-02 -4.033140067471e-02 -3.753497774043e-02 -3.470518649089e-02 --3.184596614924e-02 -2.896127086029e-02 -2.605506452694e-02 -2.313131566239e-02 --2.019399226493e-02 -1.724705672121e-02 -1.429446074456e-02 -1.134014035430e-02 --8.388010902283e-03 -5.441962152604e-03 -2.505853420335e-03 4.164912247927e-04 -3.321287684149e-03 6.204796479797e-03 9.063327322455e-03 1.189324359249e-02 -1.469096672875e-02 1.745298052016e-02 2.017583529520e-02 2.285615200442e-02 -2.549062619147e-02 2.807603184815e-02 3.060922514917e-02 3.308714806259e-02 -3.550683183187e-02 3.786540032592e-02 4.016007325341e-02 4.238816923809e-02 -4.454710875183e-02 4.663441690242e-02 4.864772607321e-02 5.058477841217e-02 -5.244342816776e-02 5.422164386948e-02 5.591751035111e-02 5.752923061482e-02 -5.905512753453e-02 6.049364539718e-02 6.184335128071e-02 6.310293626781e-02 -6.427121649466e-02 6.534713403412e-02 6.632975761305e-02 6.721828316370e-02 -6.801203420910e-02 6.871046208295e-02 6.931314598432e-02 6.981979286803e-02 -7.023023717155e-02 7.054444037951e-02 7.076249042722e-02 7.088460094463e-02 -7.091111034250e-02 7.084248074266e-02 7.067929675443e-02 7.042226409951e-02 -7.007220808778e-02 6.963007194661e-02 6.909691500657e-02 6.847391074645e-02 -6.776234470069e-02 6.696361223272e-02 6.607921617738e-02 6.511076435624e-02 -6.405996696958e-02 6.292863386873e-02 6.171867171303e-02 6.043208101540e-02 -5.907095308091e-02 5.763746684267e-02 5.613388559961e-02 5.456255366073e-02 -5.292589290051e-02 5.122639923040e-02 4.946663899113e-02 4.764924527091e-02 -4.577691415454e-02 4.385240090858e-02 4.187851610765e-02 3.985812170719e-02 -3.779412706793e-02 3.568948493736e-02 3.354718739345e-02 3.137026175625e-02 -2.916176647247e-02 2.692478697855e-02 2.466243154774e-02 2.237782712640e-02 -2.007411516498e-02 1.775444744914e-02 1.542198193627e-02 1.307987860273e-02 -1.073129530719e-02 8.379383675215e-03 6.027285010342e-03 3.678126236832e-03 -1.335015879076e-03 -9.989599172310e-04 -3.320741317271e-03 -5.627298677741e-03 --7.915636371203e-03 -1.018279654944e-02 -1.242586284123e-02 -1.464196398011e-02 --1.682827735765e-02 -1.898203249806e-02 -2.110051444998e-02 -2.318106709137e-02 --2.522109634368e-02 -2.721807329147e-02 -2.916953720391e-02 -3.107309845465e-02 --3.292644133667e-02 -3.472732676905e-02 -3.647359489242e-02 -3.816316755042e-02 --3.979405065425e-02 -4.136433642785e-02 -4.287220553129e-02 -4.431592906007e-02 --4.569387041837e-02 -4.700448706418e-02 -4.824633212481e-02 -4.941805588094e-02 --5.051840711811e-02 -5.154623434421e-02 -5.250048687215e-02 -5.338021576662e-02 --5.418457465452e-02 -5.491282039834e-02 -5.556431363234e-02 -5.613851916128e-02 --5.663500622177e-02 -5.705344860651e-02 -5.739362465170e-02 -5.765541708827e-02 --5.783881275763e-02 -5.794390219286e-02 -5.797087906641e-02 -5.792003950556e-02 --5.779178127705e-02 -5.758660284245e-02 -5.730510228603e-02 -5.694797611695e-02 --5.651601794795e-02 -5.601011705258e-02 -5.543125680345e-02 -5.478051299389e-02 --5.405905204576e-02 -5.326812910605e-02 -5.240908603529e-02 -5.148334929075e-02 --5.049242770755e-02 -4.943791018106e-02 -4.832146325384e-02 -4.714482861076e-02 --4.590982048582e-02 -4.461832298440e-02 -4.327228732471e-02 -4.187372900247e-02 --4.042472488259e-02 -3.892741022207e-02 -3.738397562815e-02 -3.579666395607e-02 --3.416776715042e-02 -3.249962303471e-02 -3.079461205335e-02 -2.905515397046e-02 --2.728370453005e-02 -2.548275208201e-02 -2.365481417841e-02 -2.180243414471e-02 --1.992817763037e-02 -1.803462914344e-02 -1.612438857381e-02 -1.420006770947e-02 --1.226428675055e-02 -1.031967082562e-02 -8.368846514659e-03 -6.414438383447e-03 --4.459065533581e-03 -2.505338172758e-03 -5.558542095990e-04 1.386804122575e-03 -3.320073608763e-03 5.241413357832e-03 7.148308066446e-03 9.038271237255e-03 -1.090884834732e-02 1.275761996286e-02 1.458220479632e-02 1.638026270224e-02 -1.814949760793e-02 1.988766037559e-02 2.159255159232e-02 2.326202428457e-02 -2.489398655388e-02 2.648640413070e-02 2.803730284316e-02 2.954477099805e-02 -3.100696167110e-02 3.242209490384e-02 3.378845980468e-02 3.510441655164e-02 -3.636839829456e-02 3.757891295461e-02 3.873454491911e-02 3.983395662993e-02 -4.087589006353e-02 4.185916810137e-02 4.278269578910e-02 4.364546148326e-02 -4.444653788457e-02 4.518508295663e-02 4.586034072937e-02 4.647164198660e-02 -4.701840483706e-02 4.750013516873e-02 4.791642698619e-02 4.826696263096e-02 -4.855151288497e-02 4.876993695739e-02 4.892218235529e-02 4.900828463865e-02 -4.902836706049e-02 4.898264009294e-02 4.887140084024e-02 4.869503233992e-02 -4.845400275336e-02 4.814886444722e-02 4.778025296725e-02 4.734888590635e-02 -4.685556166845e-02 4.630115813047e-02 4.568663120425e-02 4.501301330080e-02 -4.428141169907e-02 4.349300682192e-02 4.264905042157e-02 4.175086367751e-02 -4.079983520940e-02 3.979741900804e-02 3.874513228725e-02 3.764455325988e-02 -3.649731884094e-02 3.530512228132e-02 3.406971073525e-02 3.279288276494e-02 -3.147648578604e-02 3.012241345721e-02 2.873260301761e-02 2.730903257589e-02 -2.585371835442e-02 2.436871189245e-02 2.285609721216e-02 2.131798795126e-02 -1.975652446611e-02 1.817387090931e-02 1.657221228548e-02 1.495375148943e-02 -1.332070633045e-02 1.167530654672e-02 1.001979081396e-02 8.356403751947e-03 -6.687392933145e-03 5.015005897186e-03 3.341487175163e-03 1.669075327611e-03 -7.470372974062e-15 -1.663521000383e-03 -3.319284602556e-03 -4.965105340980e-03 --6.598818192294e-03 - Type L N - 0 0 7 -1.000000000000e+00 9.997075929310e-01 9.988306795205e-01 9.973701827725e-01 -9.953276397415e-01 9.927051996072e-01 9.895056209813e-01 9.857322684524e-01 -9.813891083719e-01 9.764807038877e-01 9.710122092318e-01 9.649893632704e-01 -9.584184823246e-01 9.513064522713e-01 9.436607199360e-01 9.354892837886e-01 -9.268006839549e-01 9.176039915569e-01 9.079087973984e-01 8.977252000079e-01 -8.870637930592e-01 8.759356521824e-01 8.643523211873e-01 8.523257977150e-01 -8.398685183386e-01 8.269933431327e-01 8.137135397329e-01 8.000427669069e-01 -7.859950576585e-01 7.715848018895e-01 7.568267286407e-01 7.417358879367e-01 -7.263276322605e-01 7.106175976801e-01 6.946216846549e-01 6.783560385471e-01 -6.618370298633e-01 6.450812342547e-01 6.281054123006e-01 6.109264891046e-01 -5.935615337287e-01 5.760277384943e-01 5.583423981772e-01 5.405228891241e-01 -5.225866483191e-01 5.045511524271e-01 4.864338968434e-01 4.682523747753e-01 -4.500240563851e-01 4.317663680216e-01 4.134966715663e-01 3.952322439240e-01 -3.769902566816e-01 3.587877559645e-01 3.406416425154e-01 3.225686520215e-01 -3.045853357170e-01 2.867080412837e-01 2.689528940770e-01 2.513357786996e-01 -2.338723209472e-01 2.165778701492e-01 1.994674819279e-01 1.825559013952e-01 -1.658575468121e-01 1.493864937280e-01 1.331564596210e-01 1.171807890593e-01 -1.014724393995e-01 8.604396704185e-02 7.090751425766e-02 5.607479660516e-02 -4.155709094885e-02 2.736522409645e-02 1.350956206663e-02 -8.091661967317e-16 --1.315404727541e-02 -2.594365401352e-02 -3.836039164510e-02 -5.039633618945e-02 --6.204407497545e-02 -7.329671266528e-02 -8.414787657521e-02 -9.459172128886e-02 --1.046229325594e-01 -1.142367304979e-01 -1.234288720462e-01 -1.321956527344e-01 --1.405339077219e-01 -1.484410121248e-01 -1.559148806314e-01 -1.629539664096e-01 --1.695572593094e-01 -1.757242833674e-01 -1.814550936186e-01 -1.867502722230e-01 --1.916109239149e-01 -1.960386707847e-01 -2.000356464025e-01 -2.036044892942e-01 --2.067483357832e-01 -2.094708122085e-01 -2.117760265342e-01 -2.136685593635e-01 --2.151534543730e-01 -2.162362081830e-01 -2.169227596796e-01 -2.172194788069e-01 --2.171331548467e-01 -2.166709842043e-01 -2.158405577195e-01 -2.146498475232e-01 --2.131071934591e-01 -2.112212890922e-01 -2.090011673253e-01 -2.064561856448e-01 --2.035960110195e-01 -2.004306044739e-01 -1.969702053588e-01 -1.932253153449e-01 --1.892066821602e-01 -1.849252830975e-01 -1.803923083151e-01 -1.756191439552e-01 --1.706173551053e-01 -1.653986686265e-01 -1.599749558740e-01 -1.543582153342e-01 --1.485605552041e-01 -1.425941759367e-01 -1.364713527783e-01 -1.302044183218e-01 --1.238057450998e-01 -1.172877282441e-01 -1.106627682334e-01 -1.039432537543e-01 --9.714154469929e-02 -9.026995532501e-02 -8.334073759344e-02 -7.636606471924e-02 --6.935801494513e-02 -6.232855556730e-02 -5.528952723222e-02 -4.825262852564e-02 --4.122940087422e-02 -3.423121377956e-02 -2.726925040388e-02 -2.035449352597e-02 --1.349771188541e-02 -6.709446932422e-03 8.091661967317e-16 6.620580085637e-03 -1.314250894106e-02 1.955627809358e-02 2.585266596731e-02 3.202274837443e-02 -3.805790849928e-02 4.394984636412e-02 4.969058776567e-02 5.527249267289e-02 -6.068826307699e-02 6.593095028556e-02 7.099396165368e-02 7.587106674556e-02 -8.055640292137e-02 8.504448034442e-02 8.933018640529e-02 9.340878955969e-02 -9.727594257840e-02 1.009276852080e-01 1.043604462423e-01 1.075710450049e-01 -1.105566922449e-01 1.133149904477e-01 1.158439335639e-01 1.181419061618e-01 -1.202076820060e-01 1.220404220705e-01 1.236396719912e-01 1.250053589653e-01 -1.261377881068e-01 1.270376382654e-01 1.277059573205e-01 1.281441569587e-01 -1.283540069471e-01 1.283376289143e-01 1.280974896510e-01 1.276363939434e-01 -1.269574769544e-01 1.260641961644e-01 1.249603228902e-01 1.236499333941e-01 -1.221373996013e-01 1.204273794422e-01 1.185248068353e-01 1.164348813293e-01 -1.141630574224e-01 1.117150335758e-01 1.090967409418e-01 1.063143318244e-01 -1.033741678916e-01 1.002828081598e-01 9.704699676953e-02 9.367365057202e-02 -9.016984654819e-02 8.654280907894e-02 8.279989708811e-02 7.894859107812e-02 -7.499648007917e-02 7.095124853243e-02 6.682066312776e-02 6.261255961661e-02 -5.833482962041e-02 5.399540745491e-02 4.960225699054e-02 4.516335856892e-02 -4.068669599532e-02 3.618024362661e-02 3.165195357416e-02 2.710974304058e-02 -2.256148180925e-02 1.801497990482e-02 1.347797544287e-02 8.958122686282e-03 -4.462980325584e-03 -7.149275395032e-16 -4.423484924474e-03 -8.800270304146e-03 --1.312329187859e-02 -1.738563562867e-02 -2.158054781755e-02 -2.570144470081e-02 --2.974192189296e-02 -3.369576337758e-02 -3.755695014953e-02 -4.131966847795e-02 --4.497831777955e-02 -4.852751809239e-02 -5.196211714087e-02 -5.527719698370e-02 --5.846808023679e-02 -6.153033586422e-02 -6.445978453086e-02 -6.725250351099e-02 --6.990483114816e-02 -7.241337086197e-02 -7.477499469850e-02 -7.698684642154e-02 --7.904634414292e-02 -8.095118249046e-02 -8.269933431327e-02 -8.428905192453e-02 --8.571886788288e-02 -8.698759531398e-02 -8.809432777479e-02 -8.903843866361e-02 --8.981958017984e-02 -9.043768183789e-02 -9.089294854048e-02 -9.118585821725e-02 --9.131715903518e-02 -9.128786618804e-02 -9.109925827260e-02 -9.075287326016e-02 --9.025050407227e-02 -8.959419377037e-02 -8.878623036942e-02 -8.782914128630e-02 --8.672568743409e-02 -8.547885697412e-02 -8.409185873785e-02 -8.256811533135e-02 --8.091125593543e-02 -7.912510881496e-02 -7.721369355130e-02 -7.518121301206e-02 --7.303204507292e-02 -7.077073410630e-02 -6.840198225223e-02 -6.593064048684e-02 --6.336169950423e-02 -6.070028042758e-02 -5.795162536585e-02 -5.512108783204e-02 --5.221412303971e-02 -4.923627809414e-02 -4.619318209477e-02 -4.309053616560e-02 --3.993410343019e-02 -3.672969894801e-02 -3.348317962868e-02 -3.020043414085e-02 --2.688737283211e-02 -2.354991767634e-02 -2.019399226492e-02 -1.682551185775e-02 --1.345037351002e-02 -1.007444629063e-02 -6.703561607520e-03 -3.343503655287e-03 -8.091661967317e-16 3.321287684157e-03 6.614772712057e-03 9.874952304679e-03 -1.309641631239e-02 1.627385573127e-02 1.940207099963e-02 2.247598006243e-02 -2.549062619148e-02 2.844118555013e-02 3.132297449135e-02 3.413145657870e-02 -3.686224932018e-02 3.951113060552e-02 4.207404483791e-02 4.454710875184e-02 -4.692661690911e-02 4.920904686583e-02 5.139106400368e-02 5.346952601928e-02 -5.544148706620e-02 5.730420154464e-02 5.905512753453e-02 6.069192986825e-02 -6.221248283989e-02 6.361487254867e-02 6.489739887441e-02 6.605857708405e-02 -6.709713906841e-02 6.801203420911e-02 6.880242987642e-02 6.946771155903e-02 -7.000748262752e-02 7.042156373406e-02 7.070999185110e-02 7.087301895268e-02 -7.091111034250e-02 7.082494263330e-02 7.061540138291e-02 7.028357839256e-02 -6.983076867396e-02 6.925846709169e-02 6.856836468843e-02 6.776234470069e-02 -6.684247827337e-02 6.581101988180e-02 6.467040247051e-02 6.342323231826e-02 -6.207228363933e-02 6.062049293139e-02 5.907095308091e-02 5.742690723682e-02 -5.569174246433e-02 5.386898319014e-02 5.196228445150e-02 4.997542496108e-02 -4.791230000042e-02 4.577691415454e-02 4.357337390075e-02 4.130588006484e-02 -3.897872015786e-02 3.659626060694e-02 3.416293889372e-02 3.168325561404e-02 -2.916176647246e-02 2.660307422553e-02 2.401182058740e-02 2.139267811165e-02 -1.875034206295e-02 1.608952229238e-02 1.341493512983e-02 1.073129530719e-02 -8.043307925584e-03 5.355660480002e-03 2.673014954360e-03 -7.526230023946e-16 --2.658796789711e-03 -5.298836496131e-03 -7.915636371211e-03 -1.050477720044e-02 --1.306191052115e-02 -1.558276568475e-02 -1.806315675175e-02 -2.049898920881e-02 --2.288626649737e-02 -2.522109634368e-02 -2.749969688076e-02 -2.971840255270e-02 --3.187366979260e-02 -3.396208246556e-02 -3.598035706879e-02 -3.792534768102e-02 --3.979405065425e-02 -4.158360904115e-02 -4.329131675165e-02 -4.491462243338e-02 --4.645113307028e-02 -4.789861729501e-02 -4.925500841066e-02 -5.051840711811e-02 --5.168708394579e-02 -5.275948137919e-02 -5.373421568778e-02 -5.461007844774e-02 --5.538603775940e-02 -5.606123915857e-02 -5.663500622177e-02 -5.710684086569e-02 --5.747642334177e-02 -5.774361192730e-02 -5.790844231499e-02 -5.797112670335e-02 --5.793205259083e-02 -5.779178127705e-02 -5.755104607507e-02 -5.721075023891e-02 --5.677196461122e-02 -5.623592499627e-02 -5.560402926396e-02 -5.487783419102e-02 --5.405905204576e-02 -5.314954692351e-02 -5.215133083990e-02 -5.106655958980e-02 --4.989752837985e-02 -4.864666724310e-02 -4.731653624443e-02 -4.590982048582e-02 --4.442932492084e-02 -4.287796898795e-02 -4.125878107252e-02 -3.957489280777e-02 --3.782953322493e-02 -3.602602276320e-02 -3.416776715041e-02 -3.225825116512e-02 --3.030103229152e-02 -2.829973427809e-02 -2.625804061163e-02 -2.417968791794e-02 --2.206845930072e-02 -1.992817763036e-02 -1.776269879406e-02 -1.557590491911e-02 --1.337169758083e-02 -1.115399100682e-02 -8.926705289161e-03 -6.693759615922e-03 --4.459065533573e-03 -2.226520251516e-03 7.149275395032e-16 2.216646547520e-03 -4.419604776640e-03 6.605100548163e-03 8.769406517547e-03 1.090884834733e-02 -1.301981080239e-02 1.509874371809e-02 1.714216783182e-02 1.914668046839e-02 -2.110896107026e-02 2.302577656394e-02 2.489398655389e-02 2.671054833591e-02 -2.847252172221e-02 3.017707367060e-02 3.182148271090e-02 3.340314316160e-02 -3.491956913071e-02 3.636839829457e-02 3.774739544933e-02 3.905445582979e-02 -4.028760819093e-02 4.144501764787e-02 4.252498827031e-02 4.352596542804e-02 -4.444653788457e-02 4.528543963624e-02 4.604155149464e-02 4.671390241085e-02 -4.730167054004e-02 4.780418404582e-02 4.822092164385e-02 4.855151288497e-02 -4.879573817824e-02 4.895352855494e-02 4.902496517506e-02 4.901027857787e-02 -4.890984767914e-02 4.872419851754e-02 4.845400275336e-02 4.810007592315e-02 -4.766337545415e-02 4.714499844287e-02 4.654617920251e-02 4.586828658428e-02 -4.511282107822e-02 4.428141169907e-02 4.337581266363e-02 4.239789986584e-02 -4.134966715663e-02 4.023322243538e-02 3.905078356065e-02 3.780467408771e-02 -3.649731884093e-02 3.513123932908e-02 3.370904901216e-02 3.223344842834e-02 -3.070722018990e-02 2.913322385713e-02 2.751439069967e-02 2.585371835441e-02 -2.415426538970e-02 2.241914578537e-02 2.065152333847e-02 1.885460600450e-02 -1.703164018409e-02 1.518590496514e-02 1.332070633044e-02 1.143937134082e-02 -9.545242303915e-03 7.641670938514e-03 5.732012544669e-03 3.819620189370e-03 -1.907838917807e-03 -7.687782007767e-16 -1.900584777436e-03 -3.790628764785e-03 --5.666876038481e-03 -7.526106916761e-03 -9.365143392521e-03 -1.118085447437e-02 --1.297016142701e-02 -1.473004290239e-02 -1.645753995316e-02 -1.814976092022e-02 --1.980388618652e-02 -2.141717278938e-02 -2.298695888388e-02 -2.451066805029e-02 --2.598581343857e-02 -2.741000174358e-02 -2.878093700455e-02 -3.009642422315e-02 --3.135437279440e-02 -3.255279974529e-02 -3.368983277625e-02 -3.476371310077e-02 --3.577279807928e-02 -3.671556364322e-02 -3.759060650603e-02 -3.839664615800e-02 --3.913252664218e-02 -3.979721810929e-02 -4.038981814945e-02 -4.090955289950e-02 --4.135577792453e-02 -4.172797887314e-02 -4.202577190581e-02 -4.224890389672e-02 --4.239725240919e-02 -4.247082544577e-02 -4.246976097406e-02 -4.239432622988e-02 --4.224491679979e-02 -4.202205548522e-02 -4.172639095100e-02 -4.135869616127e-02 --4.091986660623e-02 -4.041091832344e-02 -3.983298571793e-02 -3.918731918528e-02 --3.847528254272e-02 -3.769835027310e-02 -3.685810458721e-02 -3.595623231012e-02 --3.499452159744e-02 -3.397485848777e-02 -3.289922329778e-02 -3.176968686672e-02 --3.058840665721e-02 -2.935762271971e-02 -2.807965352778e-02 -2.675689169205e-02 --2.539179956041e-02 -2.398690471253e-02 -2.254479535683e-02 -2.106811563803e-02 --1.955956086377e-02 -1.802187265870e-02 -1.645783405477e-02 -1.487026452621e-02 --1.326201497800e-02 -1.163596269674e-02 -9.995006272538e-03 -8.342060500900e-03 --6.680051273433e-03 -5.011910466193e-03 -3.340570834516e-03 -1.668960923089e-03 -8.091661967317e-16 1.663406976591e-03 3.318374350567e-03 4.962040710312e-03 -6.591573773124e-03 - Type L N - 0 0 8 -1.000000000000e+00 9.996299309272e-01 9.985202167122e-01 9.966723355824e-01 -9.940887486459e-01 9.907728959881e-01 9.867291912182e-01 9.819630144724e-01 -9.764807038877e-01 9.702895455599e-01 9.633977620041e-01 9.558144991363e-01 -9.475498117999e-01 9.386146478614e-01 9.290208309025e-01 9.187810415390e-01 -9.079087973983e-01 8.964184317905e-01 8.843250711084e-01 8.716446109973e-01 -8.583936913341e-01 8.445896700594e-01 8.302505959068e-01 8.153951800773e-01 -8.000427669069e-01 7.842133035765e-01 7.679273089188e-01 7.512058413721e-01 -7.340704661390e-01 7.165432216036e-01 6.986465850664e-01 6.804034378539e-01 -6.618370298633e-01 6.429709436022e-01 6.238290577842e-01 6.044355105433e-01 -5.848146623272e-01 5.649910585350e-01 5.449893919607e-01 5.248344651060e-01 -5.045511524271e-01 4.841643625768e-01 4.636990007081e-01 4.431799308996e-01 -4.226319387680e-01 4.020796943278e-01 3.815477151625e-01 3.610603299659e-01 -3.406416425154e-01 3.203154961369e-01 3.001054387190e-01 2.800346883341e-01 -2.601260995227e-01 2.404021302968e-01 2.208848099135e-01 2.015957074738e-01 -1.825559013952e-01 1.637859498066e-01 1.453058619150e-01 1.271350703867e-01 -1.092924047870e-01 9.179606612179e-02 7.466360251687e-02 5.791188607578e-02 -4.155709094885e-02 2.561467264739e-02 1.009934863343e-02 -4.974919786851e-03 --1.959494424000e-02 -3.374832470904e-02 -4.742346358303e-02 -6.060957831404e-02 --7.329671266529e-02 -8.547574653712e-02 -9.713840435984e-02 -1.082772620449e-01 --1.188857524890e-01 -1.289581696271e-01 -1.384896710345e-01 -1.474762790796e-01 --1.559148806314e-01 -1.638032253296e-01 -1.711399224253e-01 -1.779244362065e-01 --1.841570800207e-01 -1.898390089126e-01 -1.949722108968e-01 -1.995594968850e-01 --2.036044892942e-01 -2.071116093607e-01 -2.100860631877e-01 -2.125338265592e-01 --2.144616285503e-01 -2.158769339703e-01 -2.167879246744e-01 -2.172034797827e-01 --2.171331548467e-01 -2.165871600048e-01 -2.155763371712e-01 -2.141121363025e-01 --2.122065907892e-01 -2.098722920193e-01 -2.071223631645e-01 -2.039704322375e-01 --2.004306044739e-01 -1.965174340891e-01 -1.922458954659e-01 -1.876313538246e-01 --1.826895354318e-01 -1.774364974027e-01 -1.718885971536e-01 -1.660624615594e-01 --1.599749558740e-01 -1.536431524689e-01 -1.470842994484e-01 -1.403157891963e-01 --1.333551269115e-01 -1.262198991892e-01 -1.189277427023e-01 -1.114963130395e-01 --1.039432537543e-01 -9.628616568004e-02 -8.854257656302e-02 -8.072991106736e-02 --7.286546120295e-02 -6.496635722696e-02 -5.704953906847e-02 -4.913172832448e-02 --4.122940087421e-02 -3.335876015733e-02 -2.553571116008e-02 -1.777583515208e-02 --1.009436521454e-02 -2.506162599381e-03 4.974306043343e-03 1.233299053394e-02 -1.955627809359e-02 2.663101330493e-02 3.354451707281e-02 4.028460455706e-02 -4.683960205160e-02 5.319836278592e-02 5.935028162728e-02 6.528530866417e-02 -7.099396165368e-02 7.646733731767e-02 8.169712147485e-02 8.667559799816e-02 -9.139565658907e-02 9.585079936267e-02 1.000351462397e-01 1.039434391438e-01 -1.075710450049e-01 1.109139575712e-01 1.139687980356e-01 1.167328144823e-01 -1.192038801653e-01 1.213804906286e-01 1.232617596819e-01 1.248474142494e-01 -1.261377881068e-01 1.271338145288e-01 1.278370178673e-01 1.282495040846e-01 -1.283739502669e-01 1.282135931456e-01 1.277722166546e-01 1.270541385561e-01 -1.260641961644e-01 1.248077312040e-01 1.232905738353e-01 1.215190258860e-01 -1.194998433250e-01 1.172402180176e-01 1.147477588040e-01 1.120304719395e-01 -1.090967409418e-01 1.059553058858e-01 1.026152421907e-01 9.908593894551e-02 -9.537707681490e-02 9.149860557430e-02 8.746072131841e-02 8.327384339037e-02 -7.894859107811e-02 7.449576012477e-02 6.992629910018e-02 6.525128568020e-02 -6.048190288084e-02 5.562941529364e-02 5.070514536863e-02 4.572044979077e-02 -4.068669599531e-02 3.561523886687e-02 3.051739766654e-02 2.540443323046e-02 -2.028752548256e-02 1.517775130328e-02 1.008606279507e-02 5.023265984552e-03 --6.934678916587e-15 -4.973283238451e-03 -9.886338779335e-03 -1.472914781650e-02 --1.949193624796e-02 -2.416519258508e-02 -2.873968518112e-02 -3.320647875028e-02 --3.755695014953e-02 -4.178280339732e-02 -4.587608390496e-02 -4.982919189811e-02 --5.363489500755e-02 -5.728634001033e-02 -6.077706370391e-02 -6.410100289807e-02 --6.725250351099e-02 -7.022632875779e-02 -7.301766642180e-02 -7.562213520068e-02 --7.803579012129e-02 -8.025512701922e-02 -8.227708608085e-02 -8.409905444744e-02 --8.571886788288e-02 -8.713481150851e-02 -8.834561961013e-02 -8.935047452444e-02 --9.014900461357e-02 -9.074128133845e-02 -9.112781544345e-02 -9.130955226611e-02 --9.128786618804e-02 -9.106455424408e-02 -9.064182890882e-02 -9.002231008092e-02 --8.920901628720e-02 -8.820535512993e-02 -8.701511300212e-02 -8.564244409680e-02 --8.409185873785e-02 -8.236821106079e-02 -8.047668607331e-02 -7.842278612627e-02 --7.621231682701e-02 -7.385137242755e-02 -7.134632072145e-02 -6.870378748338e-02 --6.593064048684e-02 -6.303397313537e-02 -6.002108774380e-02 -5.689947850612e-02 --5.367681418722e-02 -5.036092057600e-02 -4.695976273750e-02 -4.348142710220e-02 --3.993410343019e-02 -3.632606668861e-02 -3.266565888012e-02 -2.896127086028e-02 --2.522132418162e-02 -2.145425300164e-02 -1.766848609177e-02 -1.387242898393e-02 --1.007444629062e-02 -6.282844234261e-03 -2.505853420320e-03 1.248388111312e-03 -4.971851523588e-03 8.656633475558e-03 1.229497204005e-02 1.587926221512e-02 -1.940207099964e-02 2.285615200444e-02 2.623445957164e-02 2.953016237590e-02 -3.273665648249e-02 3.584757783858e-02 3.885681417515e-02 4.175851629852e-02 -4.454710875185e-02 4.721729982811e-02 4.976409091801e-02 5.218278517719e-02 -5.446899549908e-02 5.661865178097e-02 5.862800747246e-02 6.049364539718e-02 -6.221248283990e-02 6.378177589308e-02 6.519912305826e-02 6.646246809928e-02 -6.757010214600e-02 6.852066504859e-02 6.931314598432e-02 6.994688331985e-02 -7.042156373406e-02 7.073722060764e-02 7.089423168719e-02 7.089331603329e-02 -7.073553026306e-02 7.042226409951e-02 6.995523524100e-02 6.933648356590e-02 -6.856836468843e-02 6.765354288313e-02 6.659498339669e-02 6.539594416689e-02 -6.405996696958e-02 6.259086801582e-02 6.099272802224e-02 5.926988177845e-02 -5.742690723682e-02 5.546861415013e-02 5.340003228383e-02 5.122639923039e-02 -4.895314785359e-02 4.658589339161e-02 4.413042024804e-02 4.159266850061e-02 -3.897872015785e-02 3.629478519403e-02 3.354718739344e-02 3.074235003493e-02 -2.788678144804e-02 2.498706047190e-02 2.204982184854e-02 1.908174158167e-02 -1.608952229237e-02 1.307987860272e-02 1.005952257821e-02 7.035149259580e-03 -4.013422314209e-03 1.000959836986e-03 -1.995679670088e-03 -4.970011110696e-03 --7.915636371217e-03 -1.082625763435e-02 -1.369569040251e-02 -1.651787620481e-02 --1.928689496243e-02 -2.199697698773e-02 -2.464251459379e-02 -2.721807329148e-02 --2.971840255271e-02 -3.213844611903e-02 -3.447335183621e-02 -3.671848099634e-02 --3.886941717007e-02 -4.092197451301e-02 -4.287220553130e-02 -4.471640829262e-02 --4.645113307028e-02 -4.807318840906e-02 -4.957964660305e-02 -5.096784857677e-02 --5.223540816234e-02 -5.338021576663e-02 -5.440044142386e-02 -5.529453723023e-02 --5.606123915857e-02 -5.669956825245e-02 -5.720883120029e-02 -5.758862029145e-02 --5.783881275763e-02 -5.795956950415e-02 -5.795133323679e-02 -5.781482599147e-02 --5.755104607507e-02 -5.716126442675e-02 -5.664702041079e-02 -5.601011705257e-02 --5.525261573089e-02 -5.437683034061e-02 -5.338532094088e-02 -5.228088690510e-02 --5.106655958980e-02 -4.974559454052e-02 -4.832146325383e-02 -4.679784451516e-02 --4.517861533337e-02 -4.346784149330e-02 -4.166976774856e-02 -3.978880767738e-02 --3.782953322493e-02 -3.579666395606e-02 -3.369505604309e-02 -3.152969101343e-02 --2.930566428247e-02 -2.702817349742e-02 -2.470250671805e-02 -2.233403046045e-02 --1.992817763035e-02 -1.749043537227e-02 -1.502633286118e-02 -1.254142906313e-02 --1.004130049137e-02 -7.531528984243e-03 -5.017689531210e-03 -2.505338172743e-03 -6.934678916587e-15 2.492842720524e-03 4.967762272207e-03 7.419397039082e-03 -9.842462857887e-03 1.223176414801e-02 1.458220479633e-02 1.688879877472e-02 -1.914668046839e-02 2.135111469448e-02 2.349750639035e-02 2.558140995256e-02 -2.759853820777e-02 2.954477099806e-02 3.141616336386e-02 3.320895330864e-02 -3.491956913071e-02 3.654463630801e-02 3.808098392333e-02 3.952565061802e-02 -4.087589006353e-02 4.212917594121e-02 4.328320642168e-02 4.433590813660e-02 -4.528543963624e-02 4.613019432803e-02 4.686880289176e-02 4.750013516873e-02 -4.802330152312e-02 4.843765367484e-02 4.874278500464e-02 4.893853033288e-02 -4.902496517506e-02 4.900240447776e-02 4.887140084024e-02 4.863274222762e-02 -4.828744918298e-02 4.783677154644e-02 4.728218469065e-02 4.662538528277e-02 -4.586828658428e-02 4.501301330079e-02 4.406189599489e-02 4.301746507603e-02 -4.188244438241e-02 4.065974437023e-02 3.935245492708e-02 3.796383782639e-02 -3.649731884093e-02 3.495647953387e-02 3.334504874655e-02 3.166689380274e-02 -2.992601144951e-02 2.812651855569e-02 2.627264258882e-02 2.436871189244e-02 -2.241914578537e-02 2.042844450541e-02 1.840117901980e-02 1.634198072508e-02 -1.425553105917e-02 1.214655104865e-02 1.001979081395e-02 7.880019055662e-03 -5.732012544663e-03 3.580545638877e-03 1.430379849364e-03 -7.137465218882e-04 --2.847128650263e-03 -4.965105340994e-03 -7.063069044287e-03 -9.136475711889e-03 --1.118085447437e-02 -1.319181711884e-02 -1.516506734732e-02 -1.709640979658e-02 --1.898175880078e-02 -2.081714687901e-02 -2.259873293032e-02 -2.432281011960e-02 --2.598581343858e-02 -2.758432692661e-02 -2.911509053710e-02 -3.057500663591e-02 --3.196114611930e-02 -3.327075413933e-02 -3.450125542618e-02 -3.565025919711e-02 --3.671556364322e-02 -3.769515998589e-02 -3.858723609571e-02 -3.939017966780e-02 --4.010258094844e-02 -4.072323500860e-02 -4.125114356152e-02 -4.168551632193e-02 --4.202577190581e-02 -4.227153827056e-02 -4.242265269635e-02 -4.247916131053e-02 --4.244131815784e-02 -4.230958382026e-02 -4.208462359120e-02 -4.176730520968e-02 --4.135869616127e-02 -4.086006055318e-02 -4.027285557191e-02 -3.959872753301e-02 --3.883950753273e-02 -3.799720671295e-02 -3.707401115077e-02 -3.607227638571e-02 --3.499452159744e-02 -3.384342344832e-02 -3.262180960529e-02 -3.133265195645e-02 --2.997905953825e-02 -2.856427118983e-02 -2.709164795150e-02 -2.556466522485e-02 --2.398690471252e-02 -2.236204615601e-02 -2.069385889020e-02 -1.898619323381e-02 --1.724297173504e-02 -1.546818029213e-02 -1.366585916849e-02 -1.184009392259e-02 --9.995006272532e-03 -8.134744915488e-03 -6.263476322280e-03 -4.385375527155e-03 --2.504616932925e-03 -6.253651514349e-04 1.248234100769e-03 3.112063031934e-03 -4.962040710318e-03 6.794131885993e-03 8.604355680390e-03 1.038879412511e-02 -1.214360053190e-02 1.386500767619e-02 1.554933577689e-02 1.719300025595e-02 -1.879251926127e-02 2.034452093773e-02 2.184575043101e-02 2.329307661011e-02 -2.468349849486e-02 2.601415137530e-02 2.728231261083e-02 2.848540709748e-02 -2.962101239264e-02 3.068686348716e-02 3.168085721567e-02 3.260105629685e-02 -3.344569299603e-02 3.421317240339e-02 3.490207532212e-02 3.551116076145e-02 -3.603936803051e-02 3.648581842983e-02 3.684981653827e-02 3.713085109377e-02 -3.732859546769e-02 3.744290773277e-02 3.747383032626e-02 3.742158931018e-02 -3.728659323173e-02 3.706943158782e-02 3.677087289823e-02 3.639186239318e-02 -3.593351932149e-02 3.539713388664e-02 3.478416381862e-02 3.409623059028e-02 -3.333511528778e-02 3.250275414519e-02 3.160123375423e-02 3.063278596070e-02 -2.959978245979e-02 2.850472910318e-02 2.735025993118e-02 2.613913094414e-02 -2.487421362735e-02 2.355848824458e-02 2.219503691575e-02 2.078703649437e-02 -1.933775126122e-02 1.785052545076e-02 1.632877562718e-02 1.477598292730e-02 -1.319568518766e-02 1.159146897353e-02 9.966961527450e-03 8.325822655355e-03 -6.671736568086e-03 5.008403696387e-03 3.339532497358e-03 1.668831270322e-03 --6.871853145102e-15 -1.663277755294e-03 -3.317342912672e-03 -4.958568833750e-03 --6.583369196337e-03 - Type L N - 0 0 9 -1.000000000000e+00 9.995431365007e-01 9.981732973708e-01 9.958927352436e-01 -9.927051996072e-01 9.886159294654e-01 9.836316430835e-01 9.777605248430e-01 -9.710122092318e-01 9.633977620041e-01 9.549296585514e-01 9.456217595285e-01 -9.354892837886e-01 9.245487786841e-01 9.128180877951e-01 9.003163161571e-01 -8.870637930592e-01 8.730820324926e-01 8.583936913341e-01 8.430225253529e-01 -8.269933431327e-01 8.103319580098e-01 7.930651381253e-01 7.752205547002e-01 -7.568267286407e-01 7.379129755873e-01 7.185093495243e-01 6.986465850664e-01 -6.783560385471e-01 6.576696280293e-01 6.366197723676e-01 6.152393294468e-01 -5.935615337287e-01 5.716199332362e-01 5.494483261068e-01 5.270806968481e-01 -5.045511524271e-01 4.818938583271e-01 4.591429747041e-01 4.363325927745e-01 -4.134966715663e-01 3.906689751635e-01 3.678830105718e-01 3.451719663343e-01 -3.225686520215e-01 3.001054387190e-01 2.778142006333e-01 2.557262579339e-01 -2.338723209472e-01 2.122824358125e-01 1.909859317103e-01 1.700113697654e-01 -1.493864937280e-01 1.291381825264e-01 1.092924047871e-01 8.987417540594e-02 -7.090751425766e-02 5.241540711808e-02 3.441976887486e-02 1.694140909323e-02 -1.028487619225e-15 -1.638595305739e-02 -3.219913862486e-02 -4.742346358303e-02 --6.204407497545e-02 -7.604737918964e-02 -8.942105846213e-02 -1.021540846851e-01 --1.142367304979e-01 -1.256605776527e-01 -1.364185226502e-01 -1.465047796453e-01 --1.559148806314e-01 -1.646456729163e-01 -1.726953139072e-01 -1.800632632314e-01 --1.867502722230e-01 -1.927583708100e-01 -1.980908518463e-01 -2.027522529330e-01 --2.067483357832e-01 -2.100860631877e-01 -2.127735736434e-01 -2.148201537121e-01 --2.162362081830e-01 -2.170332281139e-01 -2.172237568329e-01 -2.168213539861e-01 --2.158405577195e-01 -2.142968450882e-01 -2.122065907892e-01 -2.095870243170e-01 --2.064561856448e-01 -2.028328795354e-01 -1.987366285918e-01 -1.941876251546e-01 --1.892066821602e-01 -1.838151830732e-01 -1.780350310077e-01 -1.718885971536e-01 --1.653986686265e-01 -1.585883958585e-01 -1.514812396472e-01 -1.441009179842e-01 --1.364713527783e-01 -1.286166165939e-01 -1.205608795201e-01 -1.123283562887e-01 --1.039432537543e-01 -9.542971885150e-02 -8.681178714103e-02 -7.811333205439e-02 --6.935801494513e-02 -6.056923605222e-02 -5.177008647808e-02 -4.298330128110e-02 --3.423121377956e-02 -2.553571116009e-02 -1.691819148086e-02 -8.399522155469e-03 --1.028487619225e-15 8.260687078517e-03 1.636349667821e-02 2.429006671326e-02 -3.202274837443e-02 3.954463717861e-02 4.683960205159e-02 5.389231239292e-02 -6.068826307698e-02 6.721379734912e-02 7.345612758087e-02 7.940335385353e-02 -8.504448034442e-02 9.036942949543e-02 9.536905394874e-02 1.000351462397e-01 -1.043604462423e-01 1.083386463677e-01 1.119643945218e-01 1.152332948324e-01 -1.181419061618e-01 1.206877384270e-01 1.228692467518e-01 1.246858234832e-01 -1.261377881068e-01 1.272263751013e-01 1.279537197783e-01 1.283228421551e-01 -1.283376289143e-01 1.280028135091e-01 1.273239544735e-01 1.263074120056e-01 -1.249603228902e-01 1.232905738353e-01 1.213067732963e-01 1.190182218689e-01 -1.164348813293e-01 1.135673424083e-01 1.104267913845e-01 1.070249755862e-01 -1.033741678916e-01 9.948713032114e-02 9.537707681491e-02 9.105763529064e-02 -8.654280907895e-02 8.184693783246e-02 7.698465800681e-02 7.197086301133e-02 -6.682066312776e-02 6.154934529475e-02 5.617233285596e-02 5.070514536864e-02 -4.516335856892e-02 3.956256458902e-02 3.391833252012e-02 2.824616941330e-02 -2.256148180926e-02 1.687953788548e-02 1.121543030754e-02 5.584039868720e-03 -9.813682906107e-16 -5.522337770721e-03 -1.096893733374e-02 -1.632611041383e-02 --2.158054781755e-02 -2.671934944501e-02 -3.173005300269e-02 -3.660066135776e-02 --4.131966847795e-02 -4.587608390496e-02 -5.025945571323e-02 -5.445989191001e-02 --5.846808023679e-02 -6.227530633623e-02 -6.587347025325e-02 -6.925510124285e-02 --7.241337086197e-02 -7.534210432677e-02 -7.803579012128e-02 -8.048958784776e-02 --8.269933431327e-02 -8.466154785177e-02 -8.637343088493e-02 -8.783287072958e-02 --8.903843866361e-02 -8.998938726675e-02 -9.068564605646e-02 -9.112781544345e-02 --9.131715903518e-02 -9.125559431986e-02 -9.094568176680e-02 -9.039061238318e-02 --8.959419377037e-02 -8.856083472673e-02 -8.729552844688e-02 -8.580383437062e-02 --8.409185873785e-02 -8.216623390832e-02 -8.003409650806e-02 -7.770306446669e-02 --7.518121301206e-02 -7.247704969097e-02 -6.959948848655e-02 -6.655782310482e-02 --6.336169950423e-02 -6.002108774381e-02 -5.654625322624e-02 -5.294772741363e-02 --4.923627809414e-02 -4.542287927866e-02 -4.151868080658e-02 -3.753497774042e-02 --3.348317962868e-02 -2.937477971631e-02 -2.522132418163e-02 -2.103438147799e-02 --1.682551185775e-02 -1.260623715498e-02 -8.388010902277e-03 -4.182188855652e-03 --1.028487619225e-15 4.147481894193e-03 8.249366093973e-03 1.229497204004e-02 -1.627385573126e-02 2.017583529521e-02 2.399101568496e-02 2.770981244494e-02 -3.132297449135e-02 3.482160585557e-02 3.819718634205e-02 4.144159105503e-02 -4.454710875184e-02 4.750645898377e-02 5.031280798870e-02 5.295978330336e-02 -5.544148706620e-02 5.775250798589e-02 5.988793195354e-02 6.184335128071e-02 -6.361487254867e-02 6.519912305826e-02 6.659325587311e-02 6.779495345287e-02 -6.880242987642e-02 6.961443165918e-02 7.023023717155e-02 7.064965466964e-02 -7.087301895268e-02 7.090118666487e-02 7.073553026306e-02 7.037793067472e-02 -6.983076867396e-02 6.909691500657e-02 6.817971929793e-02 6.708299778067e-02 -6.581101988180e-02 6.436849371157e-02 6.276055049912e-02 6.099272802224e-02 -5.907095308091e-02 5.700152306656e-02 5.479108668090e-02 5.244662385998e-02 -4.997542496108e-02 4.738506927143e-02 4.468340289906e-02 4.187851610764e-02 -3.897872015786e-02 3.599252371908e-02 3.292860891557e-02 2.979580707229e-02 -2.660307422553e-02 2.335946646383e-02 2.007411516497e-02 1.675620219433e-02 -1.341493512983e-02 1.005952257822e-02 6.699149646785e-03 3.342953633782e-03 -9.436728277193e-16 -3.320741317277e-03 -6.610419187885e-03 -9.860324111322e-03 --1.306191052115e-02 -1.620681851582e-02 -1.928689496242e-02 -2.229421392150e-02 --2.522109634368e-02 -2.806012899041e-02 -3.080418253391e-02 -3.344642879361e-02 --3.598035706879e-02 -3.839978953001e-02 -4.069889563417e-02 -4.287220553129e-02 --4.491462243338e-02 -4.682143391916e-02 -4.858832215099e-02 -5.021137298340e-02 --5.168708394579e-02 -5.301237108475e-02 -5.418457465452e-02 -5.520146364738e-02 --5.606123915857e-02 -5.676253658364e-02 -5.730442664918e-02 -5.768641528071e-02 --5.790844231499e-02 -5.797087906641e-02 -5.787452476069e-02 -5.762060185151e-02 --5.721075023891e-02 -5.664702041079e-02 -5.593186553183e-02 -5.506813250652e-02 --5.405905204576e-02 -5.290822776886e-02 -5.161962437502e-02 -5.019755492096e-02 --4.864666724310e-02 -4.697192956512e-02 -4.517861533338e-02 -4.327228732471e-02 --4.125878107252e-02 -3.914418765901e-02 -3.693483592234e-02 -3.463727412937e-02 --3.225825116513e-02 -2.980469729173e-02 -2.728370453004e-02 -2.470250671806e-02 --2.206845930072e-02 -1.938901890624e-02 -1.667172276413e-02 -1.392416802064e-02 --1.115399100682e-02 -8.368846514653e-03 -5.576387136151e-03 -2.784242720059e-03 --9.813682906107e-16 2.768817552632e-03 5.514769598733e-03 8.230518473086e-03 -1.090884834733e-02 1.354268396528e-02 1.612510890301e-02 1.864938330763e-02 -2.110896107025e-02 2.349750639034e-02 2.580890969058e-02 2.803730284316e-02 -3.017707367060e-02 3.222287968604e-02 3.416966104046e-02 3.601265264628e-02 -3.774739544933e-02 3.936974682327e-02 4.087589006353e-02 4.226234295964e-02 -4.352596542804e-02 4.466396618951e-02 4.567390847842e-02 4.655371477312e-02 -4.730167054004e-02 4.791642698619e-02 4.839700281770e-02 4.874278500463e-02 -4.895352855494e-02 4.902935530296e-02 4.897075172058e-02 4.877856576176e-02 -4.845400275336e-02 4.799862034808e-02 4.741432255744e-02 4.670335288527e-02 -4.586828658428e-02 4.491202206072e-02 4.383777145416e-02 4.264905042157e-02 -4.134966715663e-02 3.994371067757e-02 3.843553841795e-02 3.682976315726e-02 -3.513123932908e-02 3.334504874656e-02 3.147648578604e-02 2.953104207099e-02 -2.751439069967e-02 2.543237006067e-02 2.329096728174e-02 2.109630135776e-02 -1.885460600450e-02 1.657221228548e-02 1.425553105918e-02 1.191103529476e-02 -9.545242303916e-03 7.164695937005e-03 4.775948791249e-03 2.385544478523e-03 -1.008293621247e-15 -2.374211725654e-03 -4.730679134458e-03 -7.063069044280e-03 --9.365143392520e-03 -1.163077564077e-02 -1.385396680399e-02 -1.602886106300e-02 --1.814976092022e-02 -2.021114186023e-02 -2.220766647794e-02 -2.413419803901e-02 --2.598581343857e-02 -2.775781552631e-02 -2.944574476758e-02 -3.104539021231e-02 --3.255279974529e-02 -3.396428959353e-02 -3.527645306853e-02 -3.648616852324e-02 --3.759060650603e-02 -3.858723609570e-02 -3.947383040443e-02 -4.024847123726e-02 --4.090955289949e-02 -4.145578514536e-02 -4.188619526375e-02 -4.220012929931e-02 --4.239725240919e-02 -4.247754835824e-02 -4.244131815784e-02 -4.228917785554e-02 --4.202205548522e-02 -4.164118718939e-02 -4.114811252782e-02 -4.054466898832e-02 --3.983298571793e-02 -3.901547649476e-02 -3.809483196235e-02 -3.707401115077e-02 --3.595623231012e-02 -3.474496308396e-02 -3.344391005198e-02 -3.205700767251e-02 --3.058840665721e-02 -2.904246181152e-02 -2.742371937582e-02 -2.573690390341e-02 --2.398690471253e-02 -2.217876195056e-02 -2.031765230960e-02 -1.840887443320e-02 --1.645783405478e-02 -1.447002890888e-02 -1.245103345675e-02 -1.040648346806e-02 --8.342060500902e-03 -6.263476322287e-03 -4.176457311176e-03 -2.086728886224e-03 --1.028487619225e-15 2.078052258836e-03 4.141797914401e-03 6.185669163003e-03 -8.204175203364e-03 1.019191679861e-02 1.214360053189e-02 1.405405271848e-02 -1.591823293822e-02 1.773124715345e-02 1.948836037860e-02 2.118500886927e-02 -2.281681179972e-02 2.437958239938e-02 2.586933852051e-02 2.728231261082e-02 -2.861496106642e-02 2.986397294240e-02 3.102627800003e-02 3.209905407155e-02 -3.307973372531e-02 3.396601021598e-02 3.475584270669e-02 3.544746075170e-02 -3.603936803051e-02 3.653034532611e-02 3.691945274235e-02 3.720603115738e-02 -3.738970291204e-02 3.747037173448e-02 3.744822190398e-02 3.732371665920e-02 -3.709759585804e-02 3.677087289823e-02 3.634483090979e-02 3.582101823240e-02 -3.520124319259e-02 3.448756819749e-02 3.368230316362e-02 3.278799830097e-02 -3.180743627433e-02 3.074362376527e-02 2.959978245980e-02 2.837933948829e-02 -2.708591734532e-02 2.572332331878e-02 2.429553845842e-02 2.280670611555e-02 -2.126112008611e-02 1.966321239095e-02 1.801754072739e-02 1.632877562719e-02 -1.460168735687e-02 1.284113259644e-02 1.105204093352e-02 9.239401209958e-03 -7.408247758264e-03 5.563646565607e-03 3.710681402866e-03 1.854439956403e-03 -9.185425191250e-16 -1.847584355823e-03 -3.683296300260e-03 -5.502169807974e-03 --7.299302938287e-03 -9.069870912525e-03 -1.080913893498e-02 -1.251247472377e-02 --1.417536071871e-02 -1.579340593449e-02 -1.736235742821e-02 -1.887811135175e-02 --2.033672356062e-02 -2.173441975207e-02 -2.306760510673e-02 -2.433287340965e-02 --2.552701562760e-02 -2.664702792168e-02 -2.769011907529e-02 -2.865371731968e-02 --2.953547654045e-02 -3.033328185063e-02 -3.104525451736e-02 -3.166975623109e-02 --3.220539270811e-02 -3.265101661891e-02 -3.300572983680e-02 -3.326888500316e-02 --3.344008640725e-02 -3.351919018076e-02 -3.350630380882e-02 -3.340178496121e-02 --3.320623964916e-02 -3.292051971517e-02 -3.254571966486e-02 -3.208317285162e-02 --3.153444702669e-02 -3.090133926881e-02 -3.018587030927e-02 -2.939027826978e-02 --2.851701183216e-02 -2.756872286008e-02 -2.654825849487e-02 -2.545865274850e-02 --2.430311761806e-02 -2.308503374762e-02 -2.180794066405e-02 -2.047552661481e-02 --1.909161803650e-02 -1.766016868389e-02 -1.618524845002e-02 -1.467103190869e-02 --1.312178661124e-02 -1.154186117015e-02 -9.935673162460e-03 -8.307696886265e-03 --6.662451004076e-03 -5.004486106753e-03 -3.338372232010e-03 -1.668686371455e-03 --9.436728277193e-16 1.663133338602e-03 3.316190356713e-03 4.954690225091e-03 -6.574206619914e-03 - Type L N - 0 0 10 -1.000000000000e+00 9.994472110789e-01 9.977899443184e-01 9.950314971204e-01 -9.911773564758e-01 9.862351859690e-01 9.802148076310e-01 9.731281786890e-01 -9.649893632704e-01 9.558144991363e-01 9.456217595285e-01 9.344313102292e-01 -9.222652619442e-01 9.091476181311e-01 8.951042184077e-01 8.801626776859e-01 -8.643523211873e-01 8.477041155076e-01 8.302505959068e-01 8.120257900115e-01 -7.930651381253e-01 7.734054103500e-01 7.530846207322e-01 7.321419386517e-01 -7.106175976801e-01 6.885528021412e-01 6.659896316114e-01 6.429709436022e-01 -6.195402746735e-01 5.957417402274e-01 5.716199332362e-01 5.472198221610e-01 -5.225866483191e-01 4.977658229563e-01 4.728028242863e-01 4.477430947521e-01 -4.226319387680e-01 3.975144211975e-01 3.724352668186e-01 3.474387610269e-01 -3.225686520215e-01 2.978680547147e-01 2.733793566015e-01 2.491441258191e-01 -2.252030216196e-01 2.015957074738e-01 1.783607670137e-01 1.555356230162e-01 -1.331564596210e-01 1.112581479646e-01 8.987417540594e-02 6.903657850743e-02 -4.877587992491e-02 2.912102934951e-02 1.009934863344e-02 -8.263518780022e-03 --2.594365401352e-02 -4.291890440307e-02 -5.916892055123e-02 -7.467518871405e-02 --8.942105846214e-02 -1.033917655690e-01 -1.165744500923e-01 -1.289581696271e-01 --1.405339077219e-01 -1.512945774624e-01 -1.612350202393e-01 -1.703519997303e-01 --1.786441911383e-01 -1.861121657396e-01 -1.927583708100e-01 -1.985871050064e-01 --2.036044892942e-01 -2.078184335230e-01 -2.112385987623e-01 -2.138763555209e-01 --2.157447379844e-01 -2.168583944138e-01 -2.172335338584e-01 -2.168878693459e-01 --2.158405577195e-01 -2.141121363025e-01 -2.117244565748e-01 -2.087006150560e-01 --2.050648815952e-01 -2.008426252725e-01 -1.960602381230e-01 -1.907450569001e-01 --1.849252830975e-01 -1.786299014517e-01 -1.718885971536e-01 -1.647316719951e-01 --1.571899596821e-01 -1.492947405431e-01 -1.410776558659e-01 -1.325706220924e-01 --1.238057450998e-01 -1.148152347989e-01 -1.056313202729e-01 -9.628616568005e-02 --8.681178714103e-02 -7.723997082428e-02 -6.760219244175e-02 -5.792953835984e-02 --4.825262852564e-02 -3.860154140213e-02 -2.900574109914e-02 -1.949400687983e-02 --1.009436521454e-02 -8.340245460715e-04 8.260687078522e-03 1.716438136307e-02 -2.585266596732e-02 3.430219743426e-02 4.249073072232e-02 5.039716523482e-02 -5.800158724985e-02 6.528530866417e-02 7.223090197555e-02 7.882223143918e-02 -8.504448034442e-02 9.088417436983e-02 9.632920098520e-02 1.013688248810e-01 -1.059936994162e-01 1.101958740880e-01 1.139687980356e-01 1.173073196045e-01 -1.202076820060e-01 1.226675151177e-01 1.246858234832e-01 1.262629705772e-01 -1.274006594126e-01 1.281019095783e-01 1.283710308022e-01 1.282135931456e-01 -1.276363939434e-01 1.266474216127e-01 1.252558164592e-01 1.234718286214e-01 -1.213067732963e-01 1.187729833992e-01 1.158837598151e-01 1.126533194059e-01 -1.090967409418e-01 1.052299091315e-01 1.010694569264e-01 9.663270628380e-02 -9.193760756917e-02 8.700267778782e-02 8.184693783246e-02 7.648984893776e-02 -7.095124853243e-02 6.525128568020e-02 5.941035630050e-02 5.344903835888e-02 -4.738802721590e-02 4.124807132124e-02 3.504990843726e-02 2.881420257339e-02 -2.256148180925e-02 1.631207718022e-02 1.008606279507e-02 3.903197350047e-03 --2.217132801385e-03 -8.255968869827e-03 -1.419483299505e-02 -2.001577961440e-02 --2.570144470082e-02 -3.123509274427e-02 -3.660066135776e-02 -4.178280339732e-02 --4.676692649316e-02 -5.153922989805e-02 -5.608673856737e-02 -6.039733439403e-02 --6.445978453086e-02 -6.826376674180e-02 -7.179989173278e-02 -7.505972242229e-02 --7.803579012129e-02 -8.072160760124e-02 -8.311167903879e-02 -8.520150683466e-02 --8.698759531398e-02 -8.846745132433e-02 -8.963958175685e-02 -9.050348802510e-02 --9.105965754475e-02 -9.130955226611e-02 -9.125559431986e-02 -9.090114884454e-02 --9.025050407227e-02 -8.930884875676e-02 -8.808224703522e-02 -8.657761082247e-02 --8.480266984257e-02 -8.276593940935e-02 -8.047668607331e-02 -7.794489125769e-02 --7.518121301206e-02 -7.219694601593e-02 -6.900397996969e-02 -6.561475651370e-02 --6.204222481980e-02 -5.829979600261e-02 -5.440129650023e-02 -5.036092057600e-02 --4.619318209477e-02 -4.191286572765e-02 -3.753497774042e-02 -3.307469652025e-02 --2.854732299567e-02 -2.396823110323e-02 -1.935281845357e-02 -1.471645734749e-02 --1.007444629063e-02 -5.441962152592e-03 -8.340131134693e-04 3.734607462995e-03 -8.249366093978e-03 1.269603304869e-02 1.706072489944e-02 2.132994563090e-02 -2.549062619148e-02 2.953016237590e-02 3.343645093440e-02 3.719792381012e-02 -4.080358041244e-02 4.424301784129e-02 4.750645898377e-02 5.058477841218e-02 -5.346952601928e-02 5.615294833457e-02 5.862800747246e-02 6.088839767150e-02 -6.292855939077e-02 6.474369093825e-02 6.632975761306e-02 6.768349835174e-02 -6.880242987642e-02 6.968484835051e-02 7.032982855517e-02 7.073722060764e-02 -7.090764424978e-02 7.084248074266e-02 7.054386241019e-02 7.001465988192e-02 -6.925846709169e-02 6.827958409586e-02 6.708299778067e-02 6.567436053492e-02 -6.405996696958e-02 6.224672877171e-02 6.024214778529e-02 5.805428741631e-02 -5.569174246433e-02 5.316360748664e-02 5.047944380534e-02 4.764924527090e-02 -4.468340289906e-02 4.159266850062e-02 3.838811742612e-02 3.508111054918e-02 -3.168325561403e-02 2.820636807394e-02 2.466243154773e-02 2.106355802239e-02 -1.742194792929e-02 1.374985022146e-02 1.005952257821e-02 6.363191862465e-03 -2.673014954357e-03 -9.989599172428e-04 -4.640831226017e-03 -8.240881465704e-03 --1.178761362031e-02 -1.526978667692e-02 -1.867645007470e-02 -2.199697698773e-02 --2.522109634369e-02 -2.833892348486e-02 -3.134098938305e-02 -3.421826832488e-02 --3.696220398950e-02 -3.956473384618e-02 -4.201831180501e-02 -4.431592906008e-02 --4.645113307028e-02 -4.841804462941e-02 -5.021137298340e-02 -5.182642895904e-02 --5.325913607509e-02 -5.450603961314e-02 -5.556431363235e-02 -5.643176591865e-02 --5.710684086569e-02 -5.758862029145e-02 -5.787682220067e-02 -5.797179751029e-02 --5.787452476069e-02 -5.758660284245e-02 -5.711024177417e-02 -5.644825157280e-02 --5.560402926396e-02 -5.458154408524e-02 -5.338532094088e-02 -5.202042217149e-02 --5.049242770755e-02 -4.880741367987e-02 -4.697192956511e-02 -4.499297394823e-02 --4.287796898795e-02 -4.063473367489e-02 -3.827145597526e-02 -3.579666395606e-02 --3.321919599056e-02 -3.054817014492e-02 -2.779295284911e-02 -2.496312695688e-02 --2.206845930072e-02 -1.911886784914e-02 -1.612438857380e-02 -1.309514213469e-02 --1.004130049137e-02 -6.973053547895e-03 -3.900575938423e-03 -8.339940593414e-04 -2.216646547523e-03 5.241413357844e-03 8.230518473092e-03 1.117434957576e-02 -1.406350013570e-02 1.688879877471e-02 1.964133769970e-02 2.231250011820e-02 -2.489398655389e-02 2.737783998349e-02 2.975646972084e-02 3.202267397836e-02 -3.416966104046e-02 3.619106898875e-02 3.808098392333e-02 3.983395662993e-02 -4.144501764788e-02 4.290969069902e-02 4.422400444354e-02 4.538450253385e-02 -4.638825194349e-02 4.723284955377e-02 4.791642698619e-02 4.843765367484e-02 -4.879573817824e-02 4.899042773607e-02 4.902200608166e-02 4.889128952662e-02 -4.859962133973e-02 4.814886444721e-02 4.754139248701e-02 4.678007925480e-02 -4.586828658428e-02 4.480985070932e-02 4.360906715996e-02 4.227067424894e-02 -4.079983520939e-02 3.920211904877e-02 3.748348018731e-02 3.565023695355e-02 -3.370904901215e-02 3.166689380274e-02 2.953104207099e-02 2.730903257588e-02 -2.500864605923e-02 2.263787856540e-02 2.020491420100e-02 1.771809742553e-02 -1.518590496513e-02 1.261691744214e-02 1.001979081395e-02 7.403227714403e-03 -4.775948791243e-03 2.146664132266e-03 -4.759551275889e-04 -3.083304927193e-03 --5.666876038484e-03 -8.218281375879e-03 -1.072928276960e-02 -1.319181711884e-02 --1.559802184300e-02 -1.794025955212e-02 -2.021114186023e-02 -2.240355226875e-02 --2.451066805029e-02 -2.652598106675e-02 -2.844331745951e-02 -3.025685615326e-02 --3.196114611930e-02 -3.355112234832e-02 -3.502212048713e-02 -3.636989009825e-02 --3.759060650603e-02 -3.868088119771e-02 -3.963777075253e-02 -4.045878427703e-02 --4.114188932956e-02 -4.168551632193e-02 -4.208856139122e-02 -4.235038773969e-02 --4.247082544577e-02 -4.245016975381e-02 -4.228917785554e-02 -4.198906418077e-02 --4.155149421945e-02 -4.097857690240e-02 -4.027285557191e-02 -3.943729757831e-02 --3.847528254272e-02 -3.739058933031e-02 -3.618738178244e-02 -3.487019325972e-02 --3.344391005198e-02 -3.191375371399e-02 -3.028526238965e-02 -2.856427118983e-02 --2.675689169205e-02 -2.486949063283e-02 -2.290866786554e-02 -2.088123365893e-02 --1.879418541313e-02 -1.665468387165e-02 -1.447002890888e-02 -1.224763497396e-02 --9.995006272534e-03 -7.719711768134e-03 -5.429360085660e-03 -3.131574398894e-03 --8.339673840012e-04 1.455883679772e-03 3.730461581743e-03 5.982333544460e-03 -8.204175203370e-03 1.038879412511e-02 1.252915278979e-02 1.461839096487e-02 -1.664984740019e-02 1.861708077669e-02 2.051388984368e-02 2.233433268249e-02 -2.407274503779e-02 2.572375766059e-02 2.728231261082e-02 2.874367847092e-02 -3.010346442531e-02 3.135763316495e-02 3.250251257987e-02 3.353480620673e-02 -3.445160240269e-02 3.525038222110e-02 3.592902596889e-02 3.648581842983e-02 -3.691945274236e-02 3.722903292488e-02 3.741407504625e-02 3.747450704307e-02 -3.741066719032e-02 3.722330123580e-02 3.691355821350e-02 3.648298495484e-02 -3.593351932149e-02 3.526748218680e-02 3.448756819749e-02 3.359683535071e-02 -3.259869342535e-02 3.149689131030e-02 3.029550327527e-02 2.899891423368e-02 -2.761180404960e-02 2.613913094415e-02 2.458611405898e-02 2.295821523747e-02 -2.126112008610e-02 1.950071838100e-02 1.768308388613e-02 1.581445365156e-02 -1.390120686153e-02 1.194984330310e-02 9.966961527452e-03 7.959236776322e-03 -5.933398746592e-03 3.896209266459e-03 1.854439956398e-03 -1.851500519846e-04 --2.215836266612e-03 -4.230950783254e-03 -6.223903960550e-03 -8.188205751972e-03 --1.011748662635e-02 -1.200551801019e-02 -1.384623218687e-02 -1.563374158969e-02 --1.736235742821e-02 -1.902660758947e-02 -2.062125375845e-02 -2.214130770477e-02 --2.358204668567e-02 -2.493902791837e-02 -2.620810207787e-02 -2.738542578009e-02 --2.846747301330e-02 -2.945104548440e-02 -3.033328185063e-02 -3.111166581057e-02 --3.178403303238e-02 -3.234857690119e-02 -3.280385307116e-02 -3.314878281197e-02 --3.338265514341e-02 -3.350512775560e-02 -3.351622671647e-02 -3.341634497207e-02 --3.320623964916e-02 -3.288702817337e-02 -3.246018322023e-02 -3.192752651982e-02 --3.129122153972e-02 -3.055376507441e-02 -2.971797777264e-02 -2.878699363791e-02 --2.776424854012e-02 -2.665346777968e-02 -2.545865274849e-02 -2.418406673453e-02 --2.283421991993e-02 -2.141385362464e-02 -1.992792384979e-02 -1.838158417767e-02 --1.678016808619e-02 -1.512917073837e-02 -1.343423030803e-02 -1.170110890483e-02 --9.935673162455e-03 -8.143874554762e-03 -6.331729505477e-03 -4.505299357224e-03 --2.670670266093e-03 -8.339330878873e-04 9.988366780369e-04 2.821598821804e-03 -4.628368168062e-03 6.413234069001e-03 8.170379582363e-03 9.894100272720e-03 -1.157882257575e-02 1.321912166684e-02 1.480973877731e-02 1.634559790329e-02 -1.782182185480e-02 1.923374759465e-02 2.057694081947e-02 2.184720973758e-02 -2.304061800154e-02 2.415349675588e-02 2.518245576354e-02 2.612439357781e-02 -2.697650672987e-02 2.773629790500e-02 2.840158308434e-02 2.897049763238e-02 -2.944150131375e-02 2.981338222670e-02 3.008525964401e-02 3.025658575586e-02 -3.032714631269e-02 3.029706016974e-02 3.016677773849e-02 2.993707835397e-02 -2.960906657000e-02 2.918416739859e-02 2.866412051230e-02 2.805097343238e-02 -2.734707372846e-02 2.655506025855e-02 2.567785348165e-02 2.471864487758e-02 -2.368088551198e-02 2.256827378681e-02 2.138474241929e-02 2.013444469455e-02 -1.882174003967e-02 1.745117896862e-02 1.602748744963e-02 1.455555074826e-02 -1.304039680095e-02 1.148717917508e-02 9.901159673036e-03 8.287690638390e-03 -6.652197023323e-03 5.000158276982e-03 3.337090114773e-03 1.668526228842e-03 --4.381668020759e-15 -1.662973728921e-03 -3.314916758537e-03 -4.950405458315e-03 --6.564088453486e-03 - Type L N - 0 0 11 -1.000000000000e+00 9.993421562398e-01 9.973701827725e-01 9.940887486459e-01 -9.895056209813e-01 9.836316430835e-01 9.764807038877e-01 9.680696988392e-01 -9.584184823246e-01 9.475498117999e-01 9.354892837886e-01 9.222652619442e-01 -9.079087973984e-01 8.924535416387e-01 8.759356521824e-01 8.583936913341e-01 -8.398685183386e-01 8.204031752555e-01 8.000427669069e-01 7.788343352617e-01 -7.568267286407e-01 7.340704661390e-01 7.106175976801e-01 6.865215601232e-01 -6.618370298633e-01 6.366197723676e-01 6.109264891046e-01 5.848146623272e-01 -5.583423981772e-01 5.315682685834e-01 5.045511524271e-01 4.773500764507e-01 -4.500240563851e-01 4.226319387680e-01 3.952322439240e-01 3.678830105718e-01 -3.406416425154e-01 3.135647578731e-01 2.867080412837e-01 2.601260995227e-01 -2.338723209472e-01 2.079987391756e-01 1.825559013952e-01 1.575927416715e-01 -1.331564596210e-01 1.092924047871e-01 8.604396704186e-02 6.345247331782e-02 -4.155709094886e-02 2.039473788245e-02 2.017993520125e-15 -1.959494423999e-02 --3.836039164509e-02 -5.626917445165e-02 -7.329671266528e-02 -8.942105846213e-02 --1.046229325594e-01 -1.188857524890e-01 -1.321956527344e-01 -1.445414967152e-01 --1.559148806314e-01 -1.663101292031e-01 -1.757242833674e-01 -1.841570800207e-01 --1.916109239149e-01 -1.980908518463e-01 -2.036044892942e-01 -2.081619996917e-01 --2.117760265342e-01 -2.144616285503e-01 -2.162362081830e-01 -2.171194336468e-01 --2.171331548467e-01 -2.163013134635e-01 -2.146498475232e-01 -2.122065907892e-01 --2.090011673253e-01 -2.050648815952e-01 -2.004306044739e-01 -1.951326555559e-01 --1.892066821602e-01 -1.826895354318e-01 -1.756191439552e-01 -1.680343852933e-01 --1.599749558740e-01 -1.514812396472e-01 -1.425941759367e-01 -1.333551269115e-01 --1.238057450998e-01 -1.139878413639e-01 -1.039432537543e-01 -9.371371765055e-02 --8.334073759345e-02 -7.286546120296e-02 -6.232855556730e-02 -5.177008647808e-02 --4.122940087422e-02 -3.074501284472e-02 -2.035449352597e-02 -1.009436521455e-02 --2.017993520125e-15 9.894476794452e-03 1.955627809358e-02 2.895404122269e-02 -3.805790849928e-02 4.683960205159e-02 5.527249267288e-02 6.333166254088e-02 -7.099396165367e-02 7.823805785504e-02 8.504448034442e-02 9.139565658906e-02 -9.727594257839e-02 1.026716463832e-01 1.075710450049e-01 1.119643945218e-01 -1.158439335639e-01 1.192038801653e-01 1.220404220705e-01 1.243517005880e-01 -1.261377881068e-01 1.274006594126e-01 1.281441569587e-01 1.283739502669e-01 -1.280974896510e-01 1.273239544735e-01 1.260641961644e-01 1.243306762428e-01 -1.221373996013e-01 1.194998433250e-01 1.164348813293e-01 1.129607051143e-01 -1.090967409418e-01 1.048635637545e-01 1.002828081598e-01 9.537707681491e-02 -9.016984654819e-02 8.468537256426e-02 7.894859107812e-02 7.298502072940e-02 -6.682066312776e-02 6.048190288085e-02 5.399540745491e-02 4.738802721591e-02 -4.068669599532e-02 3.391833252012e-02 2.710974304059e-02 2.028752548257e-02 -1.347797544287e-02 6.706994337182e-03 1.923754862896e-15 -6.618159975096e-03 --1.312329187858e-02 -1.949193624796e-02 -2.570144470081e-02 -3.173005300269e-02 --3.755695014952e-02 -4.316234326035e-02 -4.852751809238e-02 -5.363489500754e-02 --5.846808023679e-02 -6.301191230674e-02 -6.725250351099e-02 -7.117727632701e-02 --7.477499469849e-02 -7.803579012128e-02 -8.095118249046e-02 -8.351409568469e-02 --8.571886788288e-02 -8.756125662706e-02 -8.903843866361e-02 -9.014900461356e-02 --9.089294854048e-02 -9.127165250193e-02 -9.128786618804e-02 -9.094568176680e-02 --9.025050407227e-02 -8.920901628720e-02 -8.782914128630e-02 -8.611999882078e-02 --8.409185873785e-02 -8.175609044184e-02 -7.912510881497e-02 -7.621231682701e-02 --7.303204507292e-02 -6.959948848655e-02 -6.593064048685e-02 -6.204222481980e-02 --5.795162536585e-02 -5.367681418723e-02 -4.923627809414e-02 -4.464894401152e-02 --3.993410343019e-02 -3.511133622733e-02 -3.020043414086e-02 -2.522132418163e-02 --2.019399226493e-02 -1.513840733979e-02 -1.007444629063e-02 -5.021819880604e-03 --2.017993520125e-15 4.971851523579e-03 9.874952304676e-03 1.469096672875e-02 -1.940207099963e-02 2.399101568496e-02 2.844118555012e-02 3.273665648248e-02 -3.686224932018e-02 4.080358041244e-02 4.454710875184e-02 4.808017953263e-02 -5.139106400368e-02 5.446899549907e-02 5.730420154464e-02 5.988793195354e-02 -6.221248283989e-02 6.427121649467e-02 6.605857708405e-02 6.757010214599e-02 -6.880242987642e-02 6.975330221231e-02 7.042156373406e-02 7.080715642526e-02 -7.091111034250e-02 7.073553026306e-02 7.028357839256e-02 6.955945322834e-02 -6.856836468843e-02 6.731650562847e-02 6.581101988180e-02 6.405996696958e-02 -6.207228363933e-02 5.985774240061e-02 5.742690723683e-02 5.479108668090e-02 -5.196228445150e-02 4.895314785360e-02 4.577691415454e-02 4.244735515224e-02 -3.897872015786e-02 3.538567761909e-02 3.168325561404e-02 2.788678144805e-02 -2.401182058740e-02 2.007411516497e-02 1.608952229238e-02 1.207395241270e-02 -8.043307925587e-03 4.013422314218e-03 2.074536714462e-15 -3.981442853543e-03 --7.915636371208e-03 -1.178761362030e-02 -1.558276568474e-02 -1.928689496242e-02 --2.288626649737e-02 -2.636765716683e-02 -2.971840255270e-02 -3.292644133668e-02 --3.598035706879e-02 -3.886941717006e-02 -4.158360904114e-02 -4.411367316085e-02 --4.645113307028e-02 -4.858832215099e-02 -5.051840711811e-02 -5.223540816233e-02 --5.373421568777e-02 -5.501060360585e-02 -5.606123915857e-02 -5.688368925801e-02 --5.747642334177e-02 -5.783881275763e-02 -5.797112670335e-02 -5.787452476069e-02 --5.755104607507e-02 -5.700359524489e-02 -5.623592499627e-02 -5.525261573090e-02 --5.405905204576e-02 -5.266139633442e-02 -5.106655958980e-02 -4.928216953832e-02 --4.731653624443e-02 -4.517861533338e-02 -4.287796898795e-02 -4.042472488259e-02 --3.782953322493e-02 -3.510352208092e-02 -3.225825116513e-02 -2.930566428247e-02 --2.625804061164e-02 -2.312794502346e-02 -1.992817763036e-02 -1.667172276413e-02 --1.337169758083e-02 -1.004130049137e-02 -6.693759615925e-03 -3.342281458998e-03 --1.923754862896e-15 3.320073608768e-03 6.605100548160e-03 9.842462857878e-03 -1.301981080238e-02 1.612510890301e-02 1.914668046838e-02 2.207325046213e-02 -2.489398655388e-02 2.759853820776e-02 3.017707367060e-02 3.262031473114e-02 -3.491956913070e-02 3.706676051534e-02 3.905445582979e-02 4.087589006353e-02 -4.252498827031e-02 4.399638479288e-02 4.528543963624e-02 4.638825194349e-02 -4.730167054004e-02 4.802330152311e-02 4.855151288497e-02 4.888543616976e-02 -4.902496517506e-02 4.897075172058e-02 4.872419851754e-02 4.828744918298e-02 -4.766337545415e-02 4.685556166845e-02 4.586828658428e-02 4.470650262832e-02 -4.337581266363e-02 4.188244438241e-02 4.023322243538e-02 3.843553841795e-02 -3.649731884093e-02 3.442699122049e-02 3.223344842835e-02 2.992601144952e-02 -2.751439069967e-02 2.500864605924e-02 2.241914578537e-02 1.975652446611e-02 -1.703164018409e-02 1.425553105918e-02 1.143937134083e-02 8.594427221724e-03 -5.732012544672e-03 2.863444573755e-03 1.977605524170e-15 -2.847128650254e-03 --5.666876038478e-03 -8.448346305770e-03 -1.118085447436e-02 -1.385396680399e-02 --1.645753995316e-02 -1.898175880077e-02 -2.141717278938e-02 -2.375473065794e-02 --2.598581343857e-02 -2.810226559941e-02 -3.009642422315e-02 -3.196114611929e-02 --3.368983277624e-02 -3.527645306853e-02 -3.671556364322e-02 -3.800232691919e-02 --3.913252664218e-02 -4.010258094843e-02 -4.090955289949e-02 -4.155115846070e-02 --4.202577190581e-02 -4.233242864031e-02 -4.247082544577e-02 -4.244131815784e-02 --4.224491679979e-02 -4.188327820380e-02 -4.135869616128e-02 -4.067408915282e-02 --3.983298571793e-02 -3.883950753274e-02 -3.769835027310e-02 -3.641476234815e-02 --3.499452159744e-02 -3.344391005198e-02 -3.176968686672e-02 -2.997905953825e-02 --2.807965352779e-02 -2.607948041488e-02 -2.398690471253e-02 -2.181060947877e-02 --1.955956086377e-02 -1.724297173505e-02 -1.487026452621e-02 -1.245103345675e-02 --9.995006272540e-03 -7.512005657275e-03 -5.011910466195e-03 -2.504616932934e-03 --2.017993520125e-15 2.492125077903e-03 4.962040710309e-03 7.400164381977e-03 -9.797085356249e-03 1.214360053189e-02 1.443074931854e-02 1.664984740018e-02 -1.879251926127e-02 2.085072935501e-02 2.281681179972e-02 2.468349849486e-02 -2.644394555529e-02 2.809175796926e-02 2.962101239264e-02 3.102627800003e-02 -3.230263532071e-02 3.344569299603e-02 3.445160240269e-02 3.531707009540e-02 -3.603936803051e-02 3.661634154138e-02 3.704641504493e-02 3.732859546769e-02 -3.746247338849e-02 3.744822190398e-02 3.728659323174e-02 3.697891307455e-02 -3.652707277795e-02 3.593351932149e-02 3.520124319259e-02 3.433376419947e-02 -3.333511528779e-02 3.220982443266e-02 3.096289468529e-02 2.959978245980e-02 -2.812637415265e-02 2.654896119291e-02 2.487421362735e-02 2.310915234940e-02 -2.126112008611e-02 1.933775126123e-02 1.734694085656e-02 1.529681239701e-02 -1.319568518767e-02 1.105204093352e-02 8.874489874274e-03 6.671736568095e-03 -4.452545458808e-03 2.225706361338e-03 2.049406405868e-15 -2.215836266605e-03 --4.413142401646e-03 -6.583369196328e-03 -8.718111198071e-03 -1.080913893498e-02 --1.284843031431e-02 -1.482820107631e-02 -1.674093418907e-02 -1.857940807451e-02 --2.033672356062e-02 -2.200632946071e-02 -2.358204668567e-02 -2.505809080195e-02 --2.642909295378e-02 -2.769011907529e-02 -2.883668732493e-02 -2.986478368168e-02 --3.077087565026e-02 -3.155192402979e-02 -3.220539270811e-02 -3.272925645206e-02 --3.312200667153e-02 -3.338265514341e-02 -3.351073568928e-02 -3.350630380882e-02 --3.336993427882e-02 -3.310271673550e-02 -3.270624926561e-02 -3.218263003950e-02 --3.153444702669e-02 -3.076476584194e-02 -2.987711577661e-02 -2.887547407732e-02 --2.776424854012e-02 -2.654825849487e-02 -2.523271426040e-02 -2.382319515668e-02 --2.232562616553e-02 -2.074625333617e-02 -1.909161803650e-02 -1.736853015519e-02 --1.558404036300e-02 -1.374541154539e-02 -1.186008952090e-02 -9.935673162461e-03 --7.979884040174e-03 -6.000535706114e-03 -4.005502742060e-03 -2.002689691865e-03 --2.074536714462e-15 1.994694922632e-03 3.973586385546e-03 5.928958739437e-03 -7.853219214135e-03 9.738927159240e-03 1.157882257574e-02 1.336585383013e-02 -1.509320444606e-02 1.675431887269e-02 1.834292713311e-02 1.985306826103e-02 -2.127911243902e-02 2.261578175692e-02 2.385816951469e-02 2.500175800002e-02 -2.604243467716e-02 2.697650672987e-02 2.780071390796e-02 2.851223963386e-02 -2.910872033233e-02 2.958825295378e-02 2.994940066851e-02 3.019119671670e-02 -3.031314640595e-02 3.031522725560e-02 3.019788729414e-02 2.996204152340e-02 -2.960906657000e-02 2.914079355183e-02 2.855949919399e-02 2.786789523535e-02 -2.706911617354e-02 2.616670540215e-02 2.516459980041e-02 2.406711284115e-02 -2.287891628835e-02 2.160502056109e-02 2.025075384532e-02 1.882174003968e-02 -1.732387562572e-02 1.576330555675e-02 1.414639826310e-02 1.247971987454e-02 -1.077000776347e-02 9.024143514529e-03 7.249125428436e-03 5.452040668992e-03 -3.640037163405e-03 1.820295366559e-03 1.992292068153e-15 -1.813688123845e-03 --3.613660082507e-03 -5.392886520681e-03 -7.144444916831e-03 -8.861546334083e-03 --1.053756155274e-02 -1.216604648451e-02 -1.374076677168e-02 -1.525572147799e-02 --1.670516578194e-02 -1.808363258714e-02 -1.938595296936e-02 -2.060727538420e-02 --2.174308356481e-02 -2.278921304427e-02 -2.374186624279e-02 -2.459762606586e-02 --2.535346796536e-02 -2.600677042174e-02 -2.655532381195e-02 -2.699733763383e-02 --2.733144606462e-02 -2.755671183741e-02 -2.767262842634e-02 -2.767912053772e-02 --2.757654291097e-02 -2.736567743992e-02 -2.704772863142e-02 -2.662431742473e-02 --2.609747340140e-02 -2.546962542164e-02 -2.474359072908e-02 -2.392256257177e-02 --2.301009639284e-02 -2.201009464959e-02 -2.092679032518e-02 -1.976472920154e-02 --1.852875096731e-02 -1.722396923835e-02 -1.585575057269e-02 -1.442969256548e-02 --1.295160111250e-02 -1.142746693402e-02 -9.863441453412e-03 -8.265812126754e-03 --6.640977322024e-03 -4.995420847469e-03 -3.335686230010e-03 -1.668350845144e-03 --1.923754862896e-15 1.662798928850e-03 3.313522201900e-03 4.945715167390e-03 -6.553017357490e-03 - Type L N - 0 0 12 -1.000000000000e+00 9.992279737113e-01 9.969140403446e-01 9.930646292992e-01 -9.876904326070e-01 9.808063695699e-01 9.724315374314e-01 9.625891482603e-01 -9.513064522713e-01 9.386146478614e-01 9.245487786840e-01 9.091476181311e-01 -8.924535416387e-01 8.745123872751e-01 8.553733051107e-01 8.350885959116e-01 -8.137135397329e-01 7.913062150280e-01 7.679273089187e-01 7.436399193057e-01 -7.185093495242e-01 6.926028962791e-01 6.659896316113e-01 6.387401796734e-01 -6.109264891045e-01 5.826216018117e-01 5.538994189758e-01 5.248344651059e-01 -4.955016509751e-01 4.659760362681e-01 4.363325927743e-01 4.066459689515e-01 -3.769902566815e-01 3.474387610267e-01 3.180637737844e-01 2.889363516172e-01 -2.601260995226e-01 2.317009603786e-01 2.037270112813e-01 1.762682673599e-01 -1.493864937278e-01 1.231410261944e-01 9.758860132910e-02 7.278319643154e-02 -4.877587992474e-02 2.561467264723e-02 3.344420478281e-03 -1.799332131255e-02 --3.836039164525e-02 -5.772211483790e-02 -7.604737918979e-02 -9.330870273281e-02 --1.094822859925e-01 -1.245480516486e-01 -1.384896710346e-01 -1.512945774625e-01 --1.629539664097e-01 -1.734627826524e-01 -1.828196944759e-01 -1.910270551436e-01 --1.980908518464e-01 -2.040206424053e-01 -2.088294800399e-01 -2.125338265593e-01 --2.151534543731e-01 -2.167113377586e-01 -2.172335338584e-01 -2.167490539174e-01 --2.152897253013e-01 -2.128900448716e-01 -2.095870243170e-01 -2.054200280721e-01 --2.004306044738e-01 -1.946623108294e-01 -1.881605330885e-01 -1.809723008253e-01 --1.731460982521e-01 -1.647316719950e-01 -1.557798363680e-01 -1.463422768886e-01 --1.364713527782e-01 -1.262198991891e-01 -1.156410298962e-01 -1.047879411840e-01 --9.371371765039e-02 -8.247114063505e-02 -7.111249996669e-02 -5.968940970393e-02 --4.825262852548e-02 -3.685188540241e-02 -2.553571115993e-02 -1.435127650936e-02 --3.344237101584e-03 7.441413878032e-03 1.796348508609e-02 2.818171791662e-02 -3.805790849943e-02 4.755602042277e-02 5.664228784054e-02 6.528530866430e-02 -7.345612758100e-02 8.112830867898e-02 8.827799750669e-02 9.488397243149e-02 -1.009276852081e-01 1.063932907094e-01 1.112676658148e-01 1.155404174940e-01 -1.192038801654e-01 1.222531024501e-01 1.246858234833e-01 1.265024389837e-01 -1.277059573206e-01 1.283019458554e-01 1.282984678711e-01 1.277060104357e-01 -1.265374035805e-01 1.248077312039e-01 1.225342341415e-01 1.197362058686e-01 -1.164348813293e-01 1.126533194058e-01 1.084162795664e-01 1.037500932444e-01 -9.868253051993e-02 9.324266268972e-02 8.746072131829e-02 8.136795437682e-02 -7.499648007903e-02 6.837913902881e-02 6.154934529460e-02 5.454093702501e-02 -4.738802721575e-02 4.012485523222e-02 3.278563968320e-02 2.540443323030e-02 -1.801497990466e-02 1.065057548665e-02 3.343931487162e-03 -3.872956750933e-03 --1.096893733391e-02 -1.791382400724e-02 -2.467851280607e-02 -3.123509274441e-02 --3.755695014967e-02 -4.361886627894e-02 -4.939710788436e-02 -5.486951042691e-02 --6.001555367122e-02 -6.481642942771e-02 -6.925510124296e-02 -7.331635587451e-02 --7.698684642162e-02 -8.025512701929e-02 -8.311167903885e-02 -8.554892877402e-02 --8.756125662710e-02 -8.914499784507e-02 -9.029843489015e-02 -9.102178156370e-02 --9.131715903518e-02 -9.118856396098e-02 -9.064182890880e-02 -8.968457533387e-02 --8.832615938202e-02 -8.657761082242e-02 -8.445156543886e-02 -8.196219123287e-02 --7.912510881488e-02 -7.595730638088e-02 -7.247704969087e-02 -6.870378748328e-02 --6.465805277436e-02 -6.036136050535e-02 -5.583610201132e-02 -5.110543679481e-02 --4.619318209463e-02 -4.112370074496e-02 -3.592178782306e-02 -3.061255658420e-02 --2.522132418147e-02 -1.977349766434e-02 -1.429446074439e-02 -8.809461809129e-03 --3.343503655124e-03 2.078764599710e-03 7.433152978168e-03 1.269603304885e-02 -1.784443685979e-02 2.285615200458e-02 2.770981244509e-02 3.238498473610e-02 -3.686224932032e-02 4.112327658597e-02 4.515089740462e-02 4.892916789272e-02 -5.244342816787e-02 5.568035489828e-02 5.862800747255e-02 6.127586764597e-02 -6.361487254874e-02 6.563744097142e-02 6.733749287251e-02 6.871046208299e-02 -6.975330221233e-02 7.046448578981e-02 7.084399670419e-02 7.089331603328e-02 -7.061540138289e-02 7.001465988189e-02 6.909691500653e-02 6.786936743256e-02 -6.634055013803e-02 6.452027800313e-02 6.241959217497e-02 6.005069948638e-02 -5.742690723673e-02 5.456255366062e-02 5.147293442663e-02 4.817422552287e-02 -4.468340289893e-02 4.101815924540e-02 3.719681830130e-02 3.323824708777e-02 -2.916176647231e-02 2.498706047175e-02 2.073408470507e-02 1.642297440696e-02 -1.207395241254e-02 7.707237520012e-03 3.342953633618e-03 -9.989599174016e-04 --5.298836496292e-03 -9.537368334982e-03 -1.369569040266e-02 -1.775546161334e-02 --2.169894303337e-02 -2.550907276560e-02 -2.916953720406e-02 -3.266483837116e-02 --3.598035706892e-02 -3.910241159618e-02 -4.201831180512e-02 -4.471640829272e-02 --4.718613654569e-02 -4.941805588103e-02 -5.140388304871e-02 -5.313652038720e-02 --5.461007844779e-02 -5.581989302850e-02 -5.676253658367e-02 -5.743582400033e-02 --5.783881275764e-02 -5.797179751029e-02 -5.783629916124e-02 -5.743504851314e-02 --5.677196461118e-02 -5.585212791283e-02 -5.468174844196e-02 -5.326812910599e-02 --5.161962437494e-02 -4.974559454044e-02 -4.765635579082e-02 -4.536312635556e-02 --4.287796898784e-02 -4.021373006854e-02 -3.738397562802e-02 -3.440292459373e-02 --3.128537958192e-02 -2.804665556062e-02 -2.470250671790e-02 -2.126905187582e-02 --1.776269879390e-02 -1.420006770930e-02 -1.059791446129e-02 -6.973053547736e-03 --3.342281458833e-03 2.776993699898e-04 3.870355649084e-03 7.419397039236e-03 -1.090884834749e-02 1.432311980103e-02 1.764707509662e-02 2.086609693505e-02 -2.396614976315e-02 2.693383946020e-02 2.975646972097e-02 3.242209490396e-02 -3.491956913082e-02 3.723859144079e-02 3.936974682337e-02 4.130454297152e-02 -4.303544261821e-02 4.455589133963e-02 4.586034072943e-02 4.694426686967e-02 -4.780418404585e-02 4.843765367486e-02 4.884328843635e-02 4.902075161979e-02 -4.897075172058e-02 4.869503233990e-02 4.819635746364e-02 4.747849221589e-02 -4.654617920246e-02 4.540511057875e-02 4.406189599482e-02 4.252402658784e-02 -4.079983520931e-02 3.889845308950e-02 3.682976315715e-02 3.460435024541e-02 -3.223344842822e-02 2.972888574237e-02 2.710302656088e-02 2.436871189230e-02 -2.153919788813e-02 1.862809284710e-02 1.564929300992e-02 1.261691744199e-02 -9.545242303754e-03 6.448634809500e-03 3.341487174992e-03 2.381508525979e-04 --2.847128650419e-03 -5.900276079153e-03 -8.907449578187e-03 -1.185510239980e-02 --1.473004290254e-02 -1.751949257884e-02 -2.021114186037e-02 -2.279320346191e-02 --2.525446303625e-02 -2.758432692673e-02 -2.977286681774e-02 -3.181086109920e-02 --3.368983277634e-02 -3.540208377320e-02 -3.694072549481e-02 -3.829970553127e-02 --3.947383040449e-02 -4.045878427708e-02 -4.125114356156e-02 -4.184838738664e-02 --4.224890389674e-02 -4.245199237930e-02 -4.245786123398e-02 -4.226762181585e-02 --4.188327820378e-02 -4.130771296294e-02 -4.054466898827e-02 -3.959872753295e-02 --3.847528254265e-02 -3.718051143228e-02 -3.572134245744e-02 -3.410541884732e-02 --3.234105987946e-02 -3.043721908982e-02 -2.840343982337e-02 -2.624980834151e-02 --2.398690471239e-02 -2.162575171918e-02 -1.917776202895e-02 -1.665468387151e-02 --1.406854548292e-02 -1.143159857272e-02 -8.756261076850e-03 -6.055059460365e-03 --3.340570834353e-03 -6.253651512786e-04 2.078052259000e-03 4.757297553046e-03 -7.400164382138e-03 9.994678794838e-03 1.252915278994e-02 1.499223628329e-02 -1.737296726033e-02 1.966081989565e-02 2.184575043113e-02 2.391824061559e-02 -2.586933852062e-02 2.769069656057e-02 2.937460655777e-02 3.091403170865e-02 -3.230263532080e-02 3.353480620680e-02 3.460568063597e-02 3.551116076150e-02 -3.624792945694e-02 3.681346151232e-02 3.720603115740e-02 3.742471589597e-02 -3.746939665215e-02 3.734075424653e-02 3.704026223617e-02 3.657017616935e-02 -3.593351932144e-02 3.513406499450e-02 3.417631547791e-02 3.306547778249e-02 -3.180743627425e-02 3.040872234786e-02 2.887648129230e-02 2.721843651339e-02 -2.544285128919e-02 2.355848824446e-02 2.157456673995e-02 1.950071838086e-02 -1.734694085641e-02 1.512355032887e-02 1.284113259628e-02 1.051049325735e-02 -8.142607110544e-03 5.748567021884e-03 3.339532497202e-03 9.266781948153e-04 --1.478857386156e-03 -3.866022808557e-03 -6.223903960706e-03 -8.541773454272e-03 --1.080913893514e-02 -1.301579009183e-02 -1.515184415306e-02 -1.720778967362e-02 --1.917452841683e-02 -2.104341515099e-02 -2.280629518789e-02 -2.445553950233e-02 --2.598407728330e-02 -2.738542578019e-02 -2.865371731977e-02 -2.978372338380e-02 --3.077087565033e-02 -3.161128391669e-02 -3.230175083613e-02 -3.283978341545e-02 --3.322360123548e-02 -3.345214137170e-02 -3.352506000737e-02 -3.344273074650e-02 --3.320623964913e-02 -3.281737702633e-02 -3.227862604665e-02 -3.159314822042e-02 --3.076476584187e-02 -2.979794148299e-02 -2.869775464559e-02 -2.746987569105e-02 --2.612053717863e-02 -2.465650275498e-02 -2.308503374750e-02 -2.141385362451e-02 --1.965111049394e-02 -1.780533782047e-02 -1.588541354853e-02 -1.390051782496e-02 --1.186008952075e-02 -9.773781755706e-03 -7.651416633988e-03 -5.502939400705e-03 --3.338372231846e-03 -1.167767870459e-03 9.988366781956e-04 3.151466180926e-03 -5.280252730885e-03 7.375480615454e-03 9.427630295369e-03 1.142742129759e-02 -1.336585383027e-02 1.523424893467e-02 1.702428699655e-02 1.872804444755e-02 -2.033802849617e-02 2.184720973769e-02 2.324905250247e-02 2.453754281321e-02 -2.570721383304e-02 2.675316869833e-02 2.767110064257e-02 2.845731033014e-02 -2.910872033238e-02 2.962288669104e-02 2.999800752846e-02 3.023292867675e-02 -3.032714631269e-02 3.028080659816e-02 3.009470234012e-02 2.977026669742e-02 -2.930956397516e-02 2.871527756066e-02 2.799069506760e-02 2.713969076785e-02 -2.616670540206e-02 2.507672347222e-02 2.387524813018e-02 2.256827378671e-02 -2.116225657575e-02 1.966408281765e-02 1.808103563374e-02 1.642075987274e-02 -1.469122551603e-02 1.290068973588e-02 1.105765778542e-02 9.170842904406e-03 -7.249125428275e-03 5.301511291054e-03 3.337090114614e-03 1.364993078026e-03 --6.056492390625e-04 -2.565748845676e-03 -4.506301969589e-03 -6.418430138767e-03 --8.293420528000e-03 -1.012276538856e-02 -1.189820038371e-02 -1.361174165838e-02 --1.525572147813e-02 -1.682282227921e-02 -1.830610897985e-02 -1.969905941115e-02 --2.099559273523e-02 -2.219009572795e-02 -2.327744681372e-02 -2.425303775080e-02 --2.511279287634e-02 -2.585318583225e-02 -2.647125370453e-02 -2.696460852101e-02 --2.733144606464e-02 -2.757055197189e-02 -2.768130509848e-02 -2.766367814715e-02 --2.751823556482e-02 -2.724612872880e-02 -2.684908845437e-02 -2.632941486781e-02 --2.568996470120e-02 -2.493413607671e-02 -2.406585085953e-02 -2.308953466915e-02 --2.201009464949e-02 -2.083289510797e-02 -1.956373114306e-02 -1.820880038879e-02 --1.677467301263e-02 -1.526826011074e-02 -1.369678065162e-02 -1.206772712484e-02 --1.038883005751e-02 -8.668021565174e-03 -6.913398107991e-03 -5.133182626063e-03 --3.335686229846e-03 -1.529269623132e-03 2.776955633555e-04 2.076865349952e-03 -3.859961720838e-03 5.618810496682e-03 7.345378594832e-03 9.031810508161e-03 -1.067046383786e-02 1.225394372036e-02 1.377513599426e-02 1.522723895930e-02 -1.660379358668e-02 1.789871204721e-02 1.910630443240e-02 2.022130355193e-02 -2.123888770046e-02 2.215470129622e-02 2.296487330399e-02 2.366603336570e-02 -2.425532557226e-02 2.473041982179e-02 2.508952072019e-02 2.533137399184e-02 -2.545527037936e-02 2.546104702338e-02 2.534908632429e-02 2.512031230025e-02 -2.477618446632e-02 2.431868927157e-02 2.375032914176e-02 2.307410918600e-02 -2.229352163644e-02 2.141252810021e-02 2.043553971245e-02 1.936739528878e-02 -1.821333758435e-02 1.697898777482e-02 1.567031828265e-02 1.429362407897e-02 -1.285549259812e-02 1.136277240765e-02 9.822540781984e-03 8.242070332365e-03 -6.628794849553e-03 4.990274518931e-03 3.334160669886e-03 1.668160223061e-03 --1.634143446808e-13 -1.662608941446e-03 -3.312006778715e-03 -4.940620046424e-03 --6.540996242587e-03 - Type L N - 0 1 0 -0.000000000000e+00 2.496324586943e-03 4.992565169903e-03 7.488637748281e-03 -9.984458328155e-03 1.247994292576e-02 1.497500757074e-02 1.746956830960e-02 -1.996354120901e-02 2.245684235920e-02 2.494938787730e-02 2.744109391072e-02 -2.993187664049e-02 3.242165228464e-02 3.491033710152e-02 3.739784739318e-02 -3.988409950874e-02 4.236900984769e-02 4.485249486326e-02 4.733447106581e-02 -4.981485502609e-02 5.229356337864e-02 5.477051282511e-02 5.724562013760e-02 -5.971880216198e-02 6.218997582121e-02 6.465905811871e-02 6.712596614162e-02 -6.959061706418e-02 7.205292815098e-02 7.451281676033e-02 7.697020034751e-02 -7.942499646812e-02 8.187712278134e-02 8.432649705328e-02 8.677303716016e-02 -8.921666109173e-02 9.165728695442e-02 9.409483297472e-02 9.652921750237e-02 -9.896035901367e-02 1.013881761147e-01 1.038125875446e-01 1.062335121789e-01 -1.086508690324e-01 1.110645772630e-01 1.134745561744e-01 1.158807252196e-01 -1.182830040039e-01 1.206813122884e-01 1.230755699930e-01 1.254656971997e-01 -1.278516141554e-01 1.302332412759e-01 1.326104991482e-01 1.349833085341e-01 -1.373515903735e-01 1.397152657871e-01 1.420742560800e-01 1.444284827445e-01 -1.467778674634e-01 1.491223321129e-01 1.514617987661e-01 1.537961896959e-01 -1.561254273778e-01 1.584494344935e-01 1.607681339337e-01 1.630814488010e-01 -1.653893024133e-01 1.676916183067e-01 1.699883202385e-01 1.722793321902e-01 -1.745645783707e-01 1.768439832190e-01 1.791174714076e-01 1.813849678450e-01 -1.836463976791e-01 1.859016863001e-01 1.881507593431e-01 1.903935426916e-01 -1.926299624799e-01 1.948599450964e-01 1.970834171864e-01 1.993003056549e-01 -2.015105376695e-01 2.037140406635e-01 2.059107423387e-01 2.081005706678e-01 -2.102834538980e-01 2.124593205533e-01 2.146280994374e-01 2.167897196366e-01 -2.189441105226e-01 2.210912017554e-01 2.232309232857e-01 2.253632053578e-01 -2.274879785128e-01 2.296051735906e-01 2.317147217331e-01 2.338165543869e-01 -2.359106033056e-01 2.379968005530e-01 2.400750785054e-01 2.421453698545e-01 -2.442076076096e-01 2.462617251009e-01 2.483076559815e-01 2.503453342304e-01 -2.523746941547e-01 2.543956703927e-01 2.564081979159e-01 2.584122120318e-01 -2.604076483865e-01 2.623944429672e-01 2.643725321044e-01 2.663418524746e-01 -2.683023411031e-01 2.702539353656e-01 2.721965729916e-01 2.741301920661e-01 -2.760547310324e-01 2.779701286942e-01 2.798763242183e-01 2.817732571367e-01 -2.836608673490e-01 2.855390951249e-01 2.874078811063e-01 2.892671663095e-01 -2.911168921278e-01 2.929570003335e-01 2.947874330805e-01 2.966081329058e-01 -2.984190427327e-01 3.002201058720e-01 3.020112660250e-01 3.037924672851e-01 -3.055636541404e-01 3.073247714752e-01 3.090757645729e-01 3.108165791173e-01 -3.125471611955e-01 3.142674572991e-01 3.159774143269e-01 3.176769795865e-01 -3.193661007968e-01 3.210447260893e-01 3.227128040107e-01 3.243702835244e-01 -3.260171140128e-01 3.276532452789e-01 3.292786275485e-01 3.308932114717e-01 -3.324969481252e-01 3.340897890136e-01 3.356716860720e-01 3.372425916669e-01 -3.388024585987e-01 3.403512401031e-01 3.418888898529e-01 3.434153619598e-01 -3.449306109763e-01 3.464345918968e-01 3.479272601600e-01 3.494085716499e-01 -3.508784826980e-01 3.523369500845e-01 3.537839310400e-01 3.552193832474e-01 -3.566432648428e-01 3.580555344177e-01 3.594561510200e-01 3.608450741561e-01 -3.622222637916e-01 3.635876803534e-01 3.649412847309e-01 3.662830382773e-01 -3.676129028112e-01 3.689308406180e-01 3.702368144509e-01 3.715307875328e-01 -3.728127235570e-01 3.740825866892e-01 3.753403415680e-01 3.765859533068e-01 -3.778193874947e-01 3.790406101978e-01 3.802495879603e-01 3.814462878060e-01 -3.826306772390e-01 3.838027242452e-01 3.849623972932e-01 3.861096653354e-01 -3.872444978093e-01 3.883668646384e-01 3.894767362329e-01 3.905740834913e-01 -3.916588778011e-01 3.927310910397e-01 3.937906955755e-01 3.948376642687e-01 -3.958719704721e-01 3.968935880325e-01 3.979024912908e-01 3.988986550836e-01 -3.998820547434e-01 4.008526660997e-01 4.018104654798e-01 4.027554297095e-01 -4.036875361137e-01 4.046067625174e-01 4.055130872460e-01 4.064064891265e-01 -4.072869474875e-01 4.081544421604e-01 4.090089534797e-01 4.098504622838e-01 -4.106789499151e-01 4.114943982211e-01 4.122967895547e-01 4.130861067746e-01 -4.138623332458e-01 4.146254528402e-01 4.153754499369e-01 4.161123094227e-01 -4.168360166924e-01 4.175465576492e-01 4.182439187051e-01 4.189280867811e-01 -4.195990493076e-01 4.202567942248e-01 4.209013099827e-01 4.215325855415e-01 -4.221506103717e-01 4.227553744544e-01 4.233468682816e-01 4.239250828559e-01 -4.244900096913e-01 4.250416408126e-01 4.255799687559e-01 4.261049865687e-01 -4.266166878097e-01 4.271150665490e-01 4.276001173681e-01 4.280718353596e-01 -4.285302161276e-01 4.289752557874e-01 4.294069509652e-01 4.298252987985e-01 -4.302302969354e-01 4.306219435350e-01 4.310002372667e-01 4.313651773105e-01 -4.317167633563e-01 4.320549956041e-01 4.323798747633e-01 4.326914020530e-01 -4.329895792010e-01 4.332744084441e-01 4.335458925272e-01 4.338040347035e-01 -4.340488387337e-01 4.342803088856e-01 4.344984499339e-01 4.347032671597e-01 -4.348947663497e-01 4.350729537962e-01 4.352378362962e-01 4.353894211511e-01 -4.355277161658e-01 4.356527296486e-01 4.357644704103e-01 4.358629477635e-01 -4.359481715222e-01 4.360201520010e-01 4.360789000144e-01 4.361244268761e-01 -4.361567443983e-01 4.361758648910e-01 4.361818011611e-01 4.361745665118e-01 -4.361541747414e-01 4.361206401430e-01 4.360739775033e-01 4.360142021017e-01 -4.359413297098e-01 4.358553765897e-01 4.357563594941e-01 4.356442956644e-01 -4.355192028303e-01 4.353810992087e-01 4.352300035024e-01 4.350659348994e-01 -4.348889130718e-01 4.346989581745e-01 4.344960908441e-01 4.342803321983e-01 -4.340517038341e-01 4.338102278270e-01 4.335559267297e-01 4.332888235711e-01 -4.330089418547e-01 4.327163055577e-01 4.324109391297e-01 4.320928674913e-01 -4.317621160329e-01 4.314187106131e-01 4.310626775581e-01 4.306940436593e-01 -4.303128361730e-01 4.299190828181e-01 4.295128117753e-01 4.290940516853e-01 -4.286628316476e-01 4.282191812190e-01 4.277631304118e-01 4.272947096928e-01 -4.268139499814e-01 4.263208826481e-01 4.258155395130e-01 4.252979528444e-01 -4.247681553570e-01 4.242261802101e-01 4.236720610063e-01 4.231058317898e-01 -4.225275270446e-01 4.219371816928e-01 4.213348310930e-01 4.207205110384e-01 -4.200942577555e-01 4.194561079017e-01 4.188060985641e-01 4.181442672572e-01 -4.174706519215e-01 4.167852909214e-01 4.160882230437e-01 4.153794874951e-01 -4.146591239012e-01 4.139271723036e-01 4.131836731590e-01 4.124286673363e-01 -4.116621961154e-01 4.108843011849e-01 4.100950246402e-01 4.092944089813e-01 -4.084824971113e-01 4.076593323337e-01 4.068249583507e-01 4.059794192614e-01 -4.051227595591e-01 4.042550241297e-01 4.033762582496e-01 4.024865075830e-01 -4.015858181805e-01 4.006742364766e-01 3.997518092872e-01 3.988185838083e-01 -3.978746076127e-01 3.969199286486e-01 3.959545952372e-01 3.949786560700e-01 -3.939921602073e-01 3.929951570751e-01 3.919876964636e-01 3.909698285243e-01 -3.899416037679e-01 3.889030730620e-01 3.878542876287e-01 3.867952990423e-01 -3.857261592268e-01 3.846469204536e-01 3.835576353392e-01 3.824583568425e-01 -3.813491382626e-01 3.802300332363e-01 3.791010957357e-01 3.779623800657e-01 -3.768139408612e-01 3.756558330852e-01 3.744881120258e-01 3.733108332941e-01 -3.721240528212e-01 3.709278268560e-01 3.697222119625e-01 3.685072650172e-01 -3.672830432068e-01 3.660496040250e-01 3.648070052707e-01 3.635553050448e-01 -3.622945617476e-01 3.610248340765e-01 3.597461810231e-01 3.584586618706e-01 -3.571623361910e-01 3.558572638427e-01 3.545435049675e-01 3.532211199882e-01 -3.518901696055e-01 3.505507147957e-01 3.492028168076e-01 3.478465371600e-01 -3.464819376389e-01 3.451090802946e-01 3.437280274390e-01 3.423388416430e-01 -3.409415857334e-01 3.395363227901e-01 3.381231161437e-01 3.367020293723e-01 -3.352731262987e-01 3.338364709875e-01 3.323921277428e-01 3.309401611045e-01 -3.294806358460e-01 3.280136169713e-01 3.265391697118e-01 3.250573595237e-01 -3.235682520850e-01 3.220719132927e-01 3.205684092596e-01 3.190578063117e-01 -3.175401709851e-01 3.160155700232e-01 3.144840703734e-01 3.129457391847e-01 -3.114006438044e-01 3.098488517749e-01 3.082904308315e-01 3.067254488986e-01 -3.051539740871e-01 3.035760746915e-01 3.019918191867e-01 3.004012762251e-01 -2.988045146334e-01 2.972016034102e-01 2.955926117220e-01 2.939776089011e-01 -2.923566644421e-01 2.907298479988e-01 2.890972293815e-01 2.874588785536e-01 -2.858148656290e-01 2.841652608686e-01 2.825101346773e-01 2.808495576012e-01 -2.791836003245e-01 2.775123336661e-01 2.758358285769e-01 2.741541561364e-01 -2.724673875501e-01 2.707755941458e-01 2.690788473709e-01 2.673772187894e-01 -2.656707800785e-01 2.639596030256e-01 2.622437595254e-01 2.605233215765e-01 -2.587983612785e-01 2.570689508288e-01 2.553351625196e-01 2.535970687347e-01 -2.518547419463e-01 2.501082547122e-01 2.483576796723e-01 2.466030895457e-01 -2.448445571275e-01 2.430821552859e-01 2.413159569588e-01 2.395460351506e-01 -2.377724629296e-01 2.359953134243e-01 2.342146598205e-01 2.324305753585e-01 -2.306431333292e-01 2.288524070719e-01 2.270584699703e-01 2.252613954502e-01 -2.234612569758e-01 2.216581280465e-01 2.198520821945e-01 2.180431929810e-01 -2.162315339931e-01 2.144171788412e-01 2.126002011553e-01 2.107806745823e-01 -2.089586727827e-01 2.071342694274e-01 2.053075381948e-01 2.034785527677e-01 -2.016473868297e-01 1.998141140628e-01 1.979788081440e-01 1.961415427420e-01 -1.943023915143e-01 1.924614281042e-01 1.906187261374e-01 1.887743592193e-01 -1.869284009315e-01 1.850809248291e-01 1.832320044374e-01 1.813817132488e-01 -1.795301247198e-01 1.776773122681e-01 1.758233492692e-01 1.739683090534e-01 -1.721122649032e-01 1.702552900495e-01 1.683974576692e-01 1.665388408819e-01 -1.646795127467e-01 1.628195462594e-01 1.609590143495e-01 1.590979898770e-01 -1.572365456294e-01 1.553747543189e-01 1.535126885791e-01 1.516504209621e-01 -1.497880239359e-01 1.479255698805e-01 1.460631310860e-01 1.442007797486e-01 -1.423385879686e-01 1.404766277466e-01 1.386149709811e-01 1.367536894653e-01 -1.348928548840e-01 1.330325388113e-01 1.311728127067e-01 1.293137479132e-01 -1.274554156536e-01 1.255978870280e-01 1.237412330106e-01 1.218855244474e-01 -1.200308320525e-01 1.181772264058e-01 1.163247779499e-01 1.144735569874e-01 -1.126236336779e-01 1.107750780352e-01 1.089279599244e-01 1.070823490592e-01 -1.052383149991e-01 1.033959271463e-01 1.015552547434e-01 9.971636687003e-02 -9.787933244060e-02 9.604422020116e-02 9.421109872679e-02 9.238003641883e-02 -9.055110150215e-02 8.872436202235e-02 8.689988584314e-02 8.507774064353e-02 -8.325799391520e-02 8.144071295975e-02 7.962596488607e-02 7.781381660763e-02 -7.600433483984e-02 7.419758609738e-02 7.239363669160e-02 7.059255272786e-02 -6.879440010292e-02 6.699924450232e-02 6.520715139783e-02 6.341818604483e-02 -6.163241347976e-02 5.984989851753e-02 5.807070574900e-02 5.629489953847e-02 -5.452254402109e-02 5.275370310039e-02 5.098844044580e-02 4.922681949013e-02 -4.746890342708e-02 4.571475520885e-02 4.396443754362e-02 4.221801289314e-02 -4.047554347031e-02 3.873709123678e-02 3.700271790054e-02 3.527248491351e-02 -3.354645346923e-02 3.182468450046e-02 3.010723867682e-02 2.839417640254e-02 -2.668555781403e-02 2.498144277768e-02 2.328189088750e-02 2.158696146289e-02 -1.989671354636e-02 1.821120590129e-02 1.653049700966e-02 1.485464506992e-02 -1.318370799468e-02 1.151774340860e-02 9.856808646176e-03 8.200960749600e-03 -6.550256466598e-03 4.904752248310e-03 3.264504247171e-03 1.629568314813e-03 --2.450691677841e-14 -1.624145453560e-03 -3.242813109028e-03 -4.855948338718e-03 --6.463496825996e-03 - Type L N - 0 1 1 -0.000000000000e+00 4.291735428448e-03 8.583043981315e-03 1.287349883354e-02 -1.716267326116e-02 2.145014069182e-02 2.573547475531e-02 3.001824933398e-02 -3.429803861327e-02 3.857441713205e-02 4.284695983304e-02 4.711524211309e-02 -5.137883987341e-02 5.563732956983e-02 5.989028826285e-02 6.413729366771e-02 -6.837792420433e-02 7.261175904720e-02 7.683837817511e-02 8.105736242085e-02 -8.526829352072e-02 8.947075416401e-02 9.366432804228e-02 9.784859989857e-02 -1.020231555764e-01 1.061875820688e-01 1.103414675669e-01 1.144844015086e-01 -1.186159746272e-01 1.227357789992e-01 1.268434080930e-01 1.309384568164e-01 -1.350205215646e-01 1.390892002673e-01 1.431440924368e-01 1.471847992144e-01 -1.512109234179e-01 1.552220695878e-01 1.592178440342e-01 1.631978548831e-01 -1.671617121221e-01 1.711090276463e-01 1.750394153042e-01 1.789524909425e-01 -1.828478724515e-01 1.867251798097e-01 1.905840351284e-01 1.944240626958e-01 -1.982448890213e-01 2.020461428785e-01 2.058274553496e-01 2.095884598674e-01 -2.133287922588e-01 2.170480907870e-01 2.207459961937e-01 2.244221517411e-01 -2.280762032530e-01 2.317077991564e-01 2.353165905224e-01 2.389022311061e-01 -2.424643773877e-01 2.460026886113e-01 2.495168268254e-01 2.530064569210e-01 -2.564712466711e-01 2.599108667689e-01 2.633249908654e-01 2.667132956074e-01 -2.700754606748e-01 2.734111688171e-01 2.767201058901e-01 2.800019608919e-01 -2.832564259984e-01 2.864831965988e-01 2.896819713302e-01 2.928524521123e-01 -2.959943441808e-01 2.991073561218e-01 3.021911999042e-01 3.052455909129e-01 -3.082702479806e-01 3.112648934202e-01 3.142292530557e-01 3.171630562533e-01 -3.200660359520e-01 3.229379286933e-01 3.257784746512e-01 3.285874176609e-01 -3.313645052477e-01 3.341094886548e-01 3.368221228716e-01 3.395021666601e-01 -3.421493825825e-01 3.447635370265e-01 3.473444002319e-01 3.498917463154e-01 -3.524053532954e-01 3.548850031162e-01 3.573304816720e-01 3.597415788301e-01 -3.621180884535e-01 3.644598084232e-01 3.667665406600e-01 3.690380911457e-01 -3.712742699437e-01 3.734748912194e-01 3.756397732596e-01 3.777687384918e-01 -3.798616135028e-01 3.819182290567e-01 3.839384201126e-01 3.859220258413e-01 -3.878688896422e-01 3.897788591589e-01 3.916517862950e-01 3.934875272284e-01 -3.952859424260e-01 3.970468966577e-01 3.987702590090e-01 4.004559028942e-01 -4.021037060685e-01 4.037135506392e-01 4.052853230772e-01 4.068189142273e-01 -4.083142193180e-01 4.097711379712e-01 4.111895742108e-01 4.125694364708e-01 -4.139106376034e-01 4.152130948861e-01 4.164767300279e-01 4.177014691759e-01 -4.188872429201e-01 4.200339862992e-01 4.211416388040e-01 4.222101443820e-01 -4.232394514402e-01 4.242295128478e-01 4.251802859385e-01 4.260917325119e-01 -4.269638188346e-01 4.277965156404e-01 4.285897981307e-01 4.293436459731e-01 -4.300580433007e-01 4.307329787101e-01 4.313684452590e-01 4.319644404634e-01 -4.325209662940e-01 4.330380291721e-01 4.335156399653e-01 4.339538139820e-01 -4.343525709659e-01 4.347119350899e-01 4.350319349487e-01 4.353126035522e-01 -4.355539783170e-01 4.357561010584e-01 4.359190179809e-01 4.360427796690e-01 -4.361274410772e-01 4.361730615190e-01 4.361797046561e-01 4.361474384862e-01 -4.360763353314e-01 4.359664718249e-01 4.358179288979e-01 4.356307917656e-01 -4.354051499131e-01 4.351410970802e-01 4.348387312462e-01 4.344981546136e-01 -4.341194735922e-01 4.337027987817e-01 4.332482449540e-01 4.327559310359e-01 -4.322259800898e-01 4.316585192952e-01 4.310536799291e-01 4.304115973455e-01 -4.297324109555e-01 4.290162642058e-01 4.282633045577e-01 4.274736834644e-01 -4.266475563490e-01 4.257850825814e-01 4.248864254548e-01 4.239517521619e-01 -4.229812337704e-01 4.219750451979e-01 4.209333651871e-01 4.198563762794e-01 -4.187442647892e-01 4.175972207766e-01 4.164154380210e-01 4.151991139927e-01 -4.139484498252e-01 4.126636502869e-01 4.113449237518e-01 4.099924821705e-01 -4.086065410402e-01 4.071873193743e-01 4.057350396724e-01 4.042499278886e-01 -4.027322134004e-01 4.011821289769e-01 3.995999107463e-01 3.979857981635e-01 -3.963400339769e-01 3.946628641949e-01 3.929545380524e-01 3.912153079764e-01 -3.894454295514e-01 3.876451614846e-01 3.858147655706e-01 3.839545066556e-01 -3.820646526015e-01 3.801454742498e-01 3.781972453845e-01 3.762202426951e-01 -3.742147457397e-01 3.721810369068e-01 3.701194013774e-01 3.680301270870e-01 -3.659135046864e-01 3.637698275033e-01 3.615993915026e-01 3.594024952472e-01 -3.571794398579e-01 3.549305289735e-01 3.526560687102e-01 3.503563676209e-01 -3.480317366546e-01 3.456824891148e-01 3.433089406181e-01 3.409114090526e-01 -3.384902145361e-01 3.360456793733e-01 3.335781280141e-01 3.310878870103e-01 -3.285752849731e-01 3.260406525299e-01 3.234843222808e-01 3.209066287553e-01 -3.183079083684e-01 3.156884993770e-01 3.130487418352e-01 3.103889775505e-01 -3.077095500393e-01 3.050108044820e-01 3.022930876783e-01 2.995567480026e-01 -2.968021353580e-01 2.940296011322e-01 2.912394981512e-01 2.884321806341e-01 -2.856080041475e-01 2.827673255595e-01 2.799105029940e-01 2.770378957849e-01 -2.741498644292e-01 2.712467705418e-01 2.683289768085e-01 2.653968469399e-01 -2.624507456248e-01 2.594910384838e-01 2.565180920228e-01 2.535322735859e-01 -2.505339513094e-01 2.475234940741e-01 2.445012714596e-01 2.414676536964e-01 -2.384230116199e-01 2.353677166230e-01 2.323021406092e-01 2.292266559462e-01 -2.261416354184e-01 2.230474521800e-01 2.199444797088e-01 2.168330917584e-01 -2.137136623119e-01 2.105865655350e-01 2.074521757289e-01 2.043108672839e-01 -2.011630146325e-01 1.980089922025e-01 1.948491743708e-01 1.916839354168e-01 -1.885136494756e-01 1.853386904919e-01 1.821594321733e-01 1.789762479447e-01 -1.757895109016e-01 1.725995937643e-01 1.694068688318e-01 1.662117079363e-01 -1.630144823971e-01 1.598155629754e-01 1.566153198285e-01 1.534141224648e-01 -1.502123396984e-01 1.470103396041e-01 1.438084894728e-01 1.406071557664e-01 -1.374067040734e-01 1.342074990649e-01 1.310099044496e-01 1.278142829305e-01 -1.246209961609e-01 1.214304047005e-01 1.182428679721e-01 1.150587442188e-01 -1.118783904600e-01 1.087021624498e-01 1.055304146333e-01 1.023635001051e-01 -9.920177056660e-02 9.604557628443e-02 9.289526604868e-02 8.975118713151e-02 -8.661368524602e-02 8.348310450536e-02 8.035978738211e-02 7.724407466788e-02 -7.413630543332e-02 7.103681698821e-02 6.794594484201e-02 6.486402266461e-02 -6.179138224739e-02 5.872835346455e-02 5.567526423485e-02 5.263244048348e-02 -4.960020610444e-02 4.657888292306e-02 4.356879065899e-02 4.057024688941e-02 -3.758356701260e-02 3.460906421190e-02 3.164704941992e-02 2.869783128320e-02 -2.576171612706e-02 2.283900792103e-02 1.993000824438e-02 1.703501625226e-02 -1.415432864198e-02 1.128823961984e-02 8.437040868243e-03 5.601021513172e-03 -2.780468092113e-03 -2.433547768917e-05 -2.813107930559e-03 -5.585570683340e-03 --8.341447865940e-03 -1.108046635148e-02 -1.380235578603e-02 -1.650684861797e-02 --1.919368012687e-02 -2.186258845205e-02 -2.451331462065e-02 -2.714560257530e-02 --2.975919920139e-02 -3.235385435387e-02 -3.492932088364e-02 -3.748535466355e-02 --4.002171461387e-02 -4.253816272741e-02 -4.503446409415e-02 -4.751038692542e-02 --4.996570257771e-02 -5.240018557588e-02 -5.481361363611e-02 -5.720576768820e-02 --5.957643189756e-02 -6.192539368668e-02 -6.425244375612e-02 -6.655737610509e-02 --6.883998805151e-02 -7.110008025161e-02 -7.333745671913e-02 -7.555192484393e-02 --7.774329541020e-02 -7.991138261421e-02 -8.205600408150e-02 -8.417698088369e-02 --8.627413755471e-02 -8.834730210664e-02 -9.039630604499e-02 -9.242098438353e-02 --9.442117565863e-02 -9.639672194312e-02 -9.834746885961e-02 -1.002732655934e-01 --1.021739649048e-01 -1.040494231411e-01 -1.058995002478e-01 -1.077240597797e-01 --1.095229689111e-01 -1.112960984458e-01 -1.130433228266e-01 -1.147645201439e-01 --1.164595721444e-01 -1.181283642388e-01 -1.197707855094e-01 -1.213867287168e-01 --1.229760903064e-01 -1.245387704143e-01 -1.260746728727e-01 -1.275837052148e-01 --1.290657786791e-01 -1.305208082135e-01 -1.319487124786e-01 -1.333494138503e-01 --1.347228384229e-01 -1.360689160103e-01 -1.373875801476e-01 -1.386787680924e-01 --1.399424208244e-01 -1.411784830461e-01 -1.423869031819e-01 -1.435676333767e-01 --1.447206294949e-01 -1.458458511177e-01 -1.469432615411e-01 -1.480128277725e-01 --1.490545205271e-01 -1.500683142241e-01 -1.510541869820e-01 -1.520121206133e-01 --1.529421006198e-01 -1.538441161856e-01 -1.547181601715e-01 -1.555642291072e-01 --1.563823231847e-01 -1.571724462497e-01 -1.579346057935e-01 -1.586688129443e-01 --1.593750824573e-01 -1.600534327055e-01 -1.607038856690e-01 -1.613264669243e-01 --1.619212056333e-01 -1.624881345314e-01 -1.630272899154e-01 -1.635387116309e-01 --1.640224430593e-01 -1.644785311042e-01 -1.649070261774e-01 -1.653079821847e-01 --1.656814565107e-01 -1.660275100038e-01 -1.663462069604e-01 -1.666376151086e-01 --1.669018055916e-01 -1.671388529506e-01 -1.673488351076e-01 -1.675318333473e-01 --1.676879322986e-01 -1.678172199161e-01 -1.679197874610e-01 -1.679957294811e-01 --1.680451437914e-01 -1.680681314531e-01 -1.680647967533e-01 -1.680352471835e-01 --1.679795934182e-01 -1.678979492927e-01 -1.677904317807e-01 -1.676571609720e-01 --1.674982600487e-01 -1.673138552622e-01 -1.671040759088e-01 -1.668690543061e-01 --1.666089257676e-01 -1.663238285784e-01 -1.660139039692e-01 -1.656792960911e-01 --1.653201519892e-01 -1.649366215765e-01 -1.645288576067e-01 -1.640970156475e-01 --1.636412540531e-01 -1.631617339362e-01 -1.626586191402e-01 -1.621320762106e-01 --1.615822743666e-01 -1.610093854714e-01 -1.604135840036e-01 -1.597950470272e-01 --1.591539541615e-01 -1.584904875512e-01 -1.578048318357e-01 -1.570971741183e-01 --1.563677039349e-01 -1.556166132232e-01 -1.548440962904e-01 -1.540503497817e-01 --1.532355726479e-01 -1.523999661133e-01 -1.515437336425e-01 -1.506670809080e-01 --1.497702157568e-01 -1.488533481770e-01 -1.479166902640e-01 -1.469604561871e-01 --1.459848621550e-01 -1.449901263815e-01 -1.439764690515e-01 -1.429441122854e-01 --1.418932801051e-01 -1.408241983982e-01 -1.397370948832e-01 -1.386321990736e-01 --1.375097422424e-01 -1.363699573865e-01 -1.352130791900e-01 -1.340393439887e-01 --1.328489897337e-01 -1.316422559544e-01 -1.304193837223e-01 -1.291806156141e-01 --1.279261956746e-01 -1.266563693800e-01 -1.253713836005e-01 -1.240714865628e-01 --1.227569278130e-01 -1.214279581791e-01 -1.200848297328e-01 -1.187277957525e-01 --1.173571106849e-01 -1.159730301075e-01 -1.145758106902e-01 -1.131657101573e-01 --1.117429872497e-01 -1.103079016861e-01 -1.088607141251e-01 -1.074016861269e-01 --1.059310801145e-01 -1.044491593355e-01 -1.029561878238e-01 -1.014524303607e-01 --9.993815243652e-02 -9.841362021212e-02 -9.687910048013e-02 -9.533486062644e-02 --9.378116859156e-02 -9.221829283197e-02 -9.064650228155e-02 -8.906606631294e-02 --8.747725469894e-02 -8.588033757396e-02 -8.427558539545e-02 -8.266326890537e-02 --8.104365909172e-02 -7.941702715008e-02 -7.778364444522e-02 -7.614378247275e-02 --7.449771282081e-02 -7.284570713186e-02 -7.118803706451e-02 -6.952497425542e-02 --6.785679028131e-02 -6.618375662098e-02 -6.450614461754e-02 -6.282422544058e-02 --6.113827004858e-02 -5.944854915133e-02 -5.775533317251e-02 -5.605889221235e-02 --5.435949601043e-02 -5.265741390859e-02 -5.095291481399e-02 -4.924626716229e-02 --4.753773888093e-02 -4.582759735266e-02 -4.411610937911e-02 -4.240354114454e-02 --4.069015817980e-02 -3.897622532641e-02 -3.726200670080e-02 -3.554776565875e-02 --3.383376475999e-02 -3.212026573298e-02 -3.040752943992e-02 -2.869581584189e-02 --2.698538396420e-02 -2.527649186198e-02 -2.356939658596e-02 -2.186435414842e-02 --2.016161948939e-02 -1.846144644308e-02 -1.676408770452e-02 -1.506979479638e-02 --1.337881803613e-02 -1.169140650333e-02 -1.000780800722e-02 -8.328269054515e-03 --6.653034817514e-03 -4.982349102382e-03 -3.316454317742e-03 -1.655591443512e-03 --9.290480171035e-15 1.650081982682e-03 3.294417995062e-03 4.932773078292e-03 -6.564913853998e-03 - Type L N - 0 1 2 -0.000000000000e+00 6.057645291757e-03 1.211409019261e-02 1.816813459484e-02 -2.421857895701e-02 3.026422458692e-02 3.630387392438e-02 4.233633082363e-02 -4.836040083545e-02 5.437489148881e-02 6.037861257200e-02 6.637037641321e-02 -7.234899816045e-02 7.831329606071e-02 8.426209173838e-02 9.019421047277e-02 -9.610848147468e-02 1.020037381620e-01 1.078788184342e-01 1.137325649457e-01 -1.195638253778e-01 1.253714527100e-01 1.311543054889e-01 1.369112480966e-01 -1.426411510172e-01 1.483428911016e-01 1.540153518312e-01 1.596574235791e-01 -1.652680038705e-01 1.708459976401e-01 1.763903174891e-01 1.818998839385e-01 -1.873736256817e-01 1.928104798348e-01 1.982093921838e-01 2.035693174309e-01 -2.088892194377e-01 2.141680714660e-01 2.194048564169e-01 2.245985670666e-01 -2.297482063000e-01 2.348527873422e-01 2.399113339863e-01 2.449228808196e-01 -2.498864734462e-01 2.548011687073e-01 2.596660348986e-01 2.644801519840e-01 -2.692426118077e-01 2.739525183019e-01 2.786089876924e-01 2.832111487005e-01 -2.877581427417e-01 2.922491241217e-01 2.966832602285e-01 3.010597317214e-01 -3.053777327167e-01 3.096364709698e-01 3.138351680540e-01 3.179730595357e-01 -3.220493951456e-01 3.260634389475e-01 3.300144695019e-01 3.339017800270e-01 -3.377246785558e-01 3.414824880886e-01 3.451745467432e-01 3.488002078998e-01 -3.523588403430e-01 3.558498283991e-01 3.592725720702e-01 3.626264871641e-01 -3.659110054194e-01 3.691255746281e-01 3.722696587527e-01 3.753427380397e-01 -3.783443091295e-01 3.812738851612e-01 3.841309958739e-01 3.869151877036e-01 -3.896260238760e-01 3.922630844945e-01 3.948259666247e-01 3.973142843742e-01 -3.997276689683e-01 4.020657688210e-01 4.043282496018e-01 4.065147942988e-01 -4.086251032763e-01 4.106588943291e-01 4.126159027315e-01 4.144958812827e-01 -4.162986003470e-01 4.180238478906e-01 4.196714295127e-01 4.212411684736e-01 -4.227329057167e-01 4.241464998881e-01 4.254818273497e-01 4.267387821894e-01 -4.279172762261e-01 4.290172390104e-01 4.300386178210e-01 4.309813776567e-01 -4.318455012237e-01 4.326309889187e-01 4.333378588077e-01 4.339661466002e-01 -4.345159056188e-01 4.349872067653e-01 4.353801384813e-01 4.356948067050e-01 -4.359313348240e-01 4.360898636233e-01 4.361705512287e-01 4.361735730472e-01 -4.360991217012e-01 4.359474069605e-01 4.357186556685e-01 4.354131116650e-01 -4.350310357045e-01 4.345727053707e-01 4.340384149863e-01 4.334284755195e-01 -4.327432144854e-01 4.319829758443e-01 4.311481198955e-01 4.302390231672e-01 -4.292560783023e-01 4.281996939408e-01 4.270702945978e-01 4.258683205377e-01 -4.245942276447e-01 4.232484872898e-01 4.218315861934e-01 4.203440262848e-01 -4.187863245581e-01 4.171590129235e-01 4.154626380564e-01 4.136977612420e-01 -4.118649582169e-01 4.099648190067e-01 4.079979477610e-01 4.059649625843e-01 -4.038664953643e-01 4.017031915961e-01 3.994757102038e-01 3.971847233590e-01 -3.948309162959e-01 3.924149871231e-01 3.899376466332e-01 3.873996181087e-01 -3.848016371254e-01 3.821444513525e-01 3.794288203509e-01 3.766555153674e-01 -3.738253191273e-01 3.709390256240e-01 3.679974399062e-01 3.650013778619e-01 -3.619516660012e-01 3.588491412354e-01 3.556946506550e-01 3.524890513043e-01 -3.492332099545e-01 3.459280028748e-01 3.425743156007e-01 3.391730427008e-01 -3.357250875417e-01 3.322313620507e-01 3.286927864770e-01 3.251102891507e-01 -3.214848062405e-01 3.178172815100e-01 3.141086660715e-01 3.103599181392e-01 -3.065720027808e-01 3.027458916671e-01 2.988825628215e-01 2.949830003670e-01 -2.910481942728e-01 2.870791400995e-01 2.830768387438e-01 2.790422961814e-01 -2.749765232094e-01 2.708805351884e-01 2.667553517828e-01 2.626019967016e-01 -2.584214974372e-01 2.542148850054e-01 2.499831936829e-01 2.457274607465e-01 -2.414487262099e-01 2.371480325622e-01 2.328264245044e-01 2.284849486875e-01 -2.241246534486e-01 2.197465885493e-01 2.153518049117e-01 2.109413543570e-01 -2.065162893421e-01 2.020776626981e-01 1.976265273686e-01 1.931639361477e-01 -1.886909414203e-01 1.842085949006e-01 1.797179473734e-01 1.752200484348e-01 -1.707159462339e-01 1.662066872156e-01 1.616933158642e-01 1.571768744477e-01 -1.526584027636e-01 1.481389378853e-01 1.436195139099e-01 1.391011617074e-01 -1.345849086707e-01 1.300717784677e-01 1.255627907937e-01 1.210589611267e-01 -1.165613004829e-01 1.120708151746e-01 1.075885065698e-01 1.031153708529e-01 -9.865239878758e-02 9.420057548197e-02 8.976088015483e-02 8.533428590431e-02 -8.092175947859e-02 7.652426104855e-02 7.214274398262e-02 6.777815462382e-02 -6.343143206906e-02 5.910350795073e-02 5.479530622064e-02 5.050774293645e-02 -4.624172605044e-02 4.199815520094e-02 3.777792150620e-02 3.358190736100e-02 -2.941098623583e-02 2.526602247890e-02 2.114787112076e-02 1.705737768195e-02 -1.299537798329e-02 8.962697959276e-03 4.960153474277e-03 9.885501418266e-04 --2.951316853084e-03 -6.858662928623e-03 -1.073271427760e-02 -1.457270803581e-02 --1.837789244712e-02 -2.214752702537e-02 -2.588088271296e-02 -2.957724203610e-02 --3.323589925677e-02 -3.685616052122e-02 -4.043734400507e-02 -4.397878005499e-02 --4.747981132682e-02 -5.093979292026e-02 -5.435809250992e-02 -5.773409047285e-02 --6.106718001243e-02 -6.435676727870e-02 -6.760227148491e-02 -7.080312502047e-02 --7.395877356020e-02 -7.706867616980e-02 -8.013230540758e-02 -8.314914742247e-02 --8.611870204815e-02 -8.904048289344e-02 -9.191401742883e-02 -9.473884706918e-02 --9.751452725254e-02 -1.002406275151e-01 -1.029167315623e-01 -1.055424373360e-01 --1.081173570775e-01 -1.106411173875e-01 -1.131133592807e-01 -1.155337382378e-01 --1.179019242531e-01 -1.202176018776e-01 -1.224804702591e-01 -1.246902431776e-01 --1.268466490771e-01 -1.289494310933e-01 -1.309983470776e-01 -1.329931696165e-01 --1.349336860480e-01 -1.368196984730e-01 -1.386510237637e-01 -1.404274935675e-01 --1.421489543068e-01 -1.438152671755e-01 -1.454263081311e-01 -1.469819678830e-01 --1.484821518772e-01 -1.499267802761e-01 -1.513157879361e-01 -1.526491243796e-01 --1.539267537644e-01 -1.551486548486e-01 -1.563148209519e-01 -1.574252599131e-01 --1.584799940440e-01 -1.594790600789e-01 -1.604225091215e-01 -1.613104065866e-01 --1.621428321394e-01 -1.629198796306e-01 -1.636416570279e-01 -1.643082863435e-01 --1.649199035588e-01 -1.654766585451e-01 -1.659787149804e-01 -1.664262502634e-01 --1.668194554238e-01 -1.671585350286e-01 -1.674437070858e-01 -1.676752029444e-01 --1.678532671906e-01 -1.679781575418e-01 -1.680501447358e-01 -1.680695124184e-01 --1.680365570265e-01 -1.679515876685e-01 -1.678149260022e-01 -1.676269061082e-01 --1.673878743619e-01 -1.670981893012e-01 -1.667582214918e-01 -1.663683533897e-01 --1.659289792006e-01 -1.654405047364e-01 -1.649033472693e-01 -1.643179353826e-01 --1.636847088194e-01 -1.630041183284e-01 -1.622766255068e-01 -1.615027026413e-01 --1.606828325460e-01 -1.598175083983e-01 -1.589072335721e-01 -1.579525214688e-01 --1.569538953461e-01 -1.559118881443e-01 -1.548270423105e-01 -1.536999096209e-01 --1.525310510007e-01 -1.513210363424e-01 -1.500704443212e-01 -1.487798622099e-01 --1.474498856905e-01 -1.460811186652e-01 -1.446741730647e-01 -1.432296686553e-01 --1.417482328444e-01 -1.402305004843e-01 -1.386771136742e-01 -1.370887215615e-01 --1.354659801405e-01 -1.338095520513e-01 -1.321201063757e-01 -1.303983184336e-01 --1.286448695767e-01 -1.268604469820e-01 -1.250457434442e-01 -1.232014571667e-01 --1.213282915519e-01 -1.194269549906e-01 -1.174981606509e-01 -1.155426262657e-01 --1.135610739201e-01 -1.115542298380e-01 -1.095228241678e-01 -1.074675907683e-01 --1.053892669932e-01 -1.032885934764e-01 -1.011663139158e-01 -9.902317485756e-02 --9.685992548010e-02 -9.467731737761e-02 -9.247610434384e-02 -9.025704215565e-02 --8.802088835674e-02 -8.576840204139e-02 -8.350034363841e-02 -8.121747469527e-02 --7.892055766257e-02 -7.661035567879e-02 -7.428763235551e-02 -7.195315156299e-02 --6.960767721639e-02 -6.725197306245e-02 -6.488680246692e-02 -6.251292820257e-02 --6.013111223805e-02 -5.774211552749e-02 -5.534669780101e-02 -5.294561735614e-02 --5.053963085020e-02 -4.812949309377e-02 -4.571595684517e-02 -4.329977260615e-02 --4.088168841881e-02 -3.846244966364e-02 -3.604279885905e-02 -3.362347546212e-02 --3.120521567084e-02 -2.878875222779e-02 -2.637481422536e-02 -2.396412691254e-02 --2.155741150330e-02 -1.915538498668e-02 -1.675875993862e-02 -1.436824433548e-02 --1.198454136947e-02 -9.608349265921e-03 -7.240361102419e-03 -4.881264629992e-03 --2.531742096235e-03 -1.924700705176e-04 2.135880728715e-03 4.452645604499e-03 -6.757166049726e-03 9.048789913281e-03 1.132687156392e-02 1.359077205184e-02 -1.583985926787e-02 1.807350810032e-02 2.029110058933e-02 2.249202607883e-02 -2.467568136597e-02 2.684147084793e-02 2.898880666628e-02 3.111710884866e-02 -3.322580544777e-02 3.531433267779e-02 3.738213504801e-02 3.942866549371e-02 -4.145338550431e-02 4.345576524869e-02 4.543528369771e-02 4.739142874380e-02 -4.932369731770e-02 5.123159550235e-02 5.311463864369e-02 5.497235145865e-02 -5.680426814004e-02 5.860993245852e-02 6.038889786141e-02 6.214072756859e-02 -6.386499466524e-02 6.556128219149e-02 6.722918322899e-02 6.886830098432e-02 -7.047824886926e-02 7.205865057793e-02 7.360914016073e-02 7.512936209506e-02 -7.661897135291e-02 7.807763346516e-02 7.950502458272e-02 8.090083153442e-02 -8.226475188160e-02 8.359649396955e-02 8.489577697561e-02 8.616233095403e-02 -8.739589687760e-02 8.859622667597e-02 8.976308327066e-02 9.089624060691e-02 -9.199548368210e-02 9.306060857102e-02 9.409142244780e-02 9.508774360455e-02 -9.604940146679e-02 9.697623660553e-02 9.786810074617e-02 9.872485677404e-02 -9.954637873680e-02 1.003325518435e-01 1.010832724605e-01 1.017984481038e-01 -1.024779974292e-01 1.031218502174e-01 1.037299473580e-01 1.043022408287e-01 -1.048386936725e-01 1.053392799704e-01 1.058039848127e-01 1.062328042653e-01 -1.066257453348e-01 1.069828259286e-01 1.073040748135e-01 1.075895315703e-01 -1.078392465461e-01 1.080532808026e-01 1.082317060623e-01 1.083746046517e-01 -1.084820694408e-01 1.085542037805e-01 1.085911214368e-01 1.085929465218e-01 -1.085598134227e-01 1.084918667272e-01 1.083892611464e-01 1.082521614352e-01 -1.080807423093e-01 1.078751883606e-01 1.076356939687e-01 1.073624632107e-01 -1.070557097679e-01 1.067156568306e-01 1.063425369993e-01 1.059365921843e-01 -1.054980735025e-01 1.050272411721e-01 1.045243644044e-01 1.039897212934e-01 -1.034235987037e-01 1.028262921553e-01 1.021981057065e-01 1.015393518350e-01 -1.008503513160e-01 1.001314330992e-01 9.938293418293e-02 9.860519948654e-02 -9.779858172102e-02 9.696344125737e-02 9.610014599323e-02 9.520907121766e-02 -9.429059947404e-02 9.334512042133e-02 9.237303069346e-02 9.137473375723e-02 -9.035063976843e-02 8.930116542647e-02 8.822673382747e-02 8.712777431584e-02 -8.600472233443e-02 8.485801927336e-02 8.368811231739e-02 8.249545429210e-02 -8.128050350877e-02 8.004372360812e-02 7.878558340283e-02 7.750655671905e-02 -7.620712223680e-02 7.488776332941e-02 7.354896790198e-02 7.219122822898e-02 -7.081504079101e-02 6.942090611072e-02 6.800932858799e-02 6.658081633451e-02 -6.513588100758e-02 6.367503764340e-02 6.219880448981e-02 6.070770283852e-02 -5.920225685694e-02 5.768299341955e-02 5.615044193901e-02 5.460513419693e-02 -5.304760417444e-02 5.147838788255e-02 4.989802319239e-02 4.830704966538e-02 -4.670600838332e-02 4.509544177855e-02 4.347589346415e-02 4.184790806431e-02 -4.021203104476e-02 3.856880854353e-02 3.691878720195e-02 3.526251399594e-02 -3.360053606767e-02 3.193340055767e-02 3.026165443743e-02 2.858584434239e-02 -2.690651640569e-02 2.522421609232e-02 2.353948803412e-02 2.185287586535e-02 -2.016492205910e-02 1.847616776446e-02 1.678715264456e-02 1.509841471550e-02 -1.341049018621e-02 1.172391329930e-02 1.003921617299e-02 8.356928644037e-03 -6.677578111852e-03 5.001689383741e-03 3.329784521373e-03 1.662382688506e-03 --1.014198008344e-14 -1.656850627876e-03 -3.307659625620e-03 -4.951920917442e-03 --6.589132066615e-03 - Type L N - 0 1 3 -0.000000000000e+00 7.814122690500e-03 1.562566868360e-02 2.343206229337e-02 -3.123072985648e-02 3.901910074235e-02 4.679460836213e-02 5.455469117579e-02 -6.229679369723e-02 7.001836749665e-02 7.771687220002e-02 8.538977648500e-02 -9.303455907313e-02 1.006487097176e-01 1.082297301863e-01 1.157751352398e-01 -1.232824536041e-01 1.307492289365e-01 1.381730207862e-01 1.455514055471e-01 -1.528819774045e-01 1.601623492731e-01 1.673901537278e-01 1.745630439255e-01 -1.816786945189e-01 1.887348025602e-01 1.957290883961e-01 2.026592965522e-01 -2.095231966074e-01 2.163185840577e-01 2.230432811687e-01 2.296951378169e-01 -2.362720323192e-01 2.427718722500e-01 2.491925952466e-01 2.555321698005e-01 -2.617885960372e-01 2.679599064811e-01 2.740441668073e-01 2.800394765795e-01 -2.859439699728e-01 2.917558164826e-01 2.974732216175e-01 3.030944275781e-01 -3.086177139192e-01 3.140413981968e-01 3.193638365984e-01 3.245834245575e-01 -3.296985973511e-01 3.347078306804e-01 3.396096412342e-01 3.444025872356e-01 -3.490852689701e-01 3.536563292967e-01 3.581144541406e-01 3.624583729681e-01 -3.666868592425e-01 3.707987308618e-01 3.747928505779e-01 3.786681263961e-01 -3.824235119562e-01 3.860580068944e-01 3.895706571850e-01 3.929605554638e-01 -3.962268413307e-01 3.993687016333e-01 4.023853707308e-01 4.052761307368e-01 -4.080403117436e-01 4.106772920251e-01 4.131864982204e-01 4.155674054966e-01 -4.178195376915e-01 4.199424674358e-01 4.219358162554e-01 4.237992546526e-01 -4.255325021671e-01 4.271353274170e-01 4.286075481190e-01 4.299490310879e-01 -4.311596922160e-01 4.322394964326e-01 4.331884576420e-01 4.340066386425e-01 -4.346941510237e-01 4.352511550455e-01 4.356778594951e-01 4.359745215251e-01 -4.361414464714e-01 4.361789876513e-01 4.360875461417e-01 4.358675705376e-01 -4.355195566920e-01 4.350440474349e-01 4.344416322746e-01 4.337129470789e-01 -4.328586737381e-01 4.318795398086e-01 4.307763181386e-01 4.295498264749e-01 -4.282009270517e-01 4.267305261617e-01 4.251395737088e-01 4.234290627438e-01 -4.216000289823e-01 4.196535503061e-01 4.175907462470e-01 4.154127774542e-01 -4.131208451458e-01 4.107161905434e-01 4.082000942915e-01 4.055738758607e-01 -4.028388929362e-01 3.999965407908e-01 3.970482516432e-01 3.939954940025e-01 -3.908397719974e-01 3.875826246927e-01 3.842256253917e-01 3.807703809252e-01 -3.772185309284e-01 3.735717471047e-01 3.698317324772e-01 3.660002206286e-01 -3.620789749300e-01 3.580697877574e-01 3.539744796986e-01 3.497948987490e-01 -3.455329194973e-01 3.411904423020e-01 3.367693924580e-01 3.322717193544e-01 -3.276993956239e-01 3.230544162842e-01 3.183387978704e-01 3.135545775621e-01 -3.087038123009e-01 3.037885779036e-01 2.988109681678e-01 2.937730939718e-01 -2.886770823698e-01 2.835250756809e-01 2.783192305746e-01 2.730617171515e-01 -2.677547180202e-01 2.624004273707e-01 2.570010500456e-01 2.515588006072e-01 -2.460759024041e-01 2.405545866350e-01 2.349970914112e-01 2.294056608186e-01 -2.237825439790e-01 2.181299941111e-01 2.124502675921e-01 2.067456230196e-01 -2.010183202750e-01 1.952706195884e-01 1.895047806052e-01 1.837230614551e-01 -1.779277178241e-01 1.721210020292e-01 1.663051620971e-01 1.604824408467e-01 -1.546550749755e-01 1.488252941514e-01 1.429953201094e-01 1.371673657534e-01 -1.313436342646e-01 1.255263182154e-01 1.197175986908e-01 1.139196444159e-01 -1.081346108919e-01 1.023646395384e-01 9.661185684528e-02 9.087837353237e-02 -8.516628371778e-02 7.947766409582e-02 7.381457312425e-02 6.817905022147e-02 -6.257311497382e-02 5.699876635353e-02 5.145798194744e-02 4.595271719691e-02 -4.048490464928e-02 3.505645322102e-02 2.966924747309e-02 2.432514689860e-02 -1.902598522323e-02 1.377356971852e-02 8.569680528524e-03 3.416070009878e-03 --1.685537914316e-03 -6.733448386569e-03 -1.172599623281e-02 -1.666154656564e-02 --2.153849537289e-02 -2.635527009107e-02 -3.111033016370e-02 -3.580216758418e-02 --4.042930742302e-02 -4.499030833920e-02 -4.948376307554e-02 -5.390829893788e-02 --5.826257825777e-02 -6.254529883867e-02 -6.675519438543e-02 -7.089103491686e-02 --7.495162716128e-02 -7.893581493492e-02 -8.284247950303e-02 -8.667053992355e-02 --9.041895337328e-02 -9.408671545643e-02 -9.767286049539e-02 -1.011764618037e-01 --1.045966319412e-01 -1.079325229511e-01 -1.111833265790e-01 -1.143482744738e-01 --1.174266383711e-01 -1.204177302569e-01 -1.233209025149e-01 -1.261355480545e-01 --1.288611004204e-01 -1.314970338849e-01 -1.340428635211e-01 -1.364981452580e-01 --1.388624759179e-01 -1.411354932352e-01 -1.433168758566e-01 -1.454063433243e-01 --1.474036560402e-01 -1.493086152126e-01 -1.511210627846e-01 -1.528408813451e-01 --1.544679940216e-01 -1.560023643555e-01 -1.574439961601e-01 -1.587929333606e-01 --1.600492598173e-01 -1.612130991309e-01 -1.622846144317e-01 -1.632640081506e-01 --1.641515217746e-01 -1.649474355844e-01 -1.656520683768e-01 -1.662657771693e-01 --1.667889568901e-01 -1.672220400507e-01 -1.675654964039e-01 -1.678198325857e-01 --1.679855917413e-01 -1.680633531372e-01 -1.680537317574e-01 -1.679573778846e-01 --1.677749766682e-01 -1.675072476768e-01 -1.671549444372e-01 -1.667188539595e-01 --1.661997962490e-01 -1.655986238042e-01 -1.649162211023e-01 -1.641535040722e-01 --1.633114195542e-01 -1.623909447482e-01 -1.613930866501e-01 -1.603188814758e-01 --1.591693940749e-01 -1.579457173330e-01 -1.566489715627e-01 -1.552803038852e-01 --1.538408876014e-01 -1.523319215527e-01 -1.507546294736e-01 -1.491102593337e-01 --1.474000826723e-01 -1.456253939232e-01 -1.437875097328e-01 -1.418877682690e-01 --1.399275285239e-01 -1.379081696080e-01 -1.358310900394e-01 -1.336977070249e-01 --1.315094557360e-01 -1.292677885787e-01 -1.269741744584e-01 -1.246300980397e-01 --1.222370590006e-01 -1.197965712841e-01 -1.173101623444e-01 -1.147793723900e-01 --1.122057536239e-01 -1.095908694807e-01 -1.069362938606e-01 -1.042436103626e-01 --1.015144115146e-01 -9.875029800281e-02 -9.595287790002e-02 -9.312376589286e-02 --9.026458250914e-02 -8.737695334494e-02 -8.446250829219e-02 -8.152288076701e-02 --7.855970693909e-02 -7.557462496255e-02 -7.256927420864e-02 -6.954529450057e-02 --6.650432535085e-02 -6.344800520151e-02 -6.037797066753e-02 -5.729585578377e-02 --5.420329125584e-02 -5.110190371520e-02 -4.799331497879e-02 -4.487914131359e-02 --4.176099270636e-02 -3.864047213898e-02 -3.551917486967e-02 -3.239868772032e-02 --2.928058837044e-02 -2.616644465787e-02 -2.305781388658e-02 -1.995624214201e-02 --1.686326361402e-02 -1.378039992797e-02 -1.070915948401e-02 -7.651036805057e-03 --4.607511893629e-03 -1.580049597793e-03 1.429901013411e-03 4.420907264870e-03 -7.391553480355e-03 1.034044157725e-02 1.326619165087e-02 1.616744254798e-02 -1.904285242952e-02 2.189109932205e-02 2.471088165778e-02 2.750091880313e-02 -3.025995157528e-02 3.298674274679e-02 3.568007753797e-02 3.833876409675e-02 -4.096163396600e-02 4.354754253802e-02 4.609536949598e-02 4.860401924232e-02 -5.107242131375e-02 5.349953078282e-02 5.588432864579e-02 5.822582219690e-02 -6.052304538854e-02 6.277505917758e-02 6.498095185738e-02 6.713983937571e-02 -6.925086563815e-02 7.131320279710e-02 7.332605152623e-02 7.528864128027e-02 -7.720023054004e-02 7.906010704276e-02 8.086758799741e-02 8.262202028525e-02 -8.432278064535e-02 8.596927584507e-02 8.756094283558e-02 8.909724889224e-02 -9.057769173993e-02 9.200179966323e-02 9.336913160161e-02 9.467927722934e-02 -9.593185702046e-02 9.712652229861e-02 9.826295527175e-02 9.934086905198e-02 -1.003600076603e-01 1.013201460162e-01 1.022210899131e-01 1.030626759780e-01 -1.038447716168e-01 1.045672749454e-01 1.052301147051e-01 1.058332501648e-01 -1.063766710073e-01 1.068603972029e-01 1.072844788672e-01 1.076489961059e-01 -1.079540588450e-01 1.081998066476e-01 1.083864085166e-01 1.085140626839e-01 -1.085829963862e-01 1.085934656274e-01 1.085457549284e-01 1.084401770627e-01 -1.082770727808e-01 1.080568105204e-01 1.077797861056e-01 1.074464224324e-01 -1.070571691435e-01 1.066125022902e-01 1.061129239830e-01 1.055589620309e-01 -1.049511695693e-01 1.042901246767e-01 1.035764299807e-01 1.028107122536e-01 -1.019936219975e-01 1.011258330189e-01 1.002080419942e-01 9.924096802516e-02 -9.822535218442e-02 9.716195705293e-02 9.605156624776e-02 9.489498394150e-02 -9.369303437333e-02 9.244656135192e-02 9.115642775059e-02 8.982351499480e-02 -8.844872254249e-02 8.703296735729e-02 8.557718337514e-02 8.408232096433e-02 -8.254934637952e-02 8.097924120983e-02 7.937300182131e-02 7.773163879423e-02 -7.605617635534e-02 7.434765180535e-02 7.260711494217e-02 7.083562747990e-02 -6.903426246414e-02 6.720410368368e-02 6.534624507912e-02 6.346179014847e-02 -6.155185135024e-02 5.961754950420e-02 5.766001319015e-02 5.568037814500e-02 -5.367978665851e-02 5.165938696787e-02 4.962033265158e-02 4.756378202279e-02 -4.549089752252e-02 4.340284511298e-02 4.130079367130e-02 3.918591438401e-02 -3.705938014256e-02 3.492236494010e-02 3.277604326993e-02 3.062158952582e-02 -2.846017740458e-02 2.629297931104e-02 2.412116576589e-02 2.194590481650e-02 -1.976836145117e-02 1.758969701691e-02 1.541106864123e-02 1.323362865800e-02 -1.105852403783e-02 8.886895823170e-03 6.719878568353e-03 4.558599784920e-03 -2.404179392452e-03 2.577291751564e-04 -1.879647755516e-03 -4.006857491995e-03 --6.122815855197e-03 -8.226448912379e-03 -1.031669348800e-02 -1.239249766736e-02 --1.445282129278e-02 -1.649663645210e-02 -1.852292795931e-02 -2.053069382701e-02 --2.251894573059e-02 -2.448670946386e-02 -2.643302538598e-02 -2.835694885939e-02 --3.025755067870e-02 -3.213391749020e-02 -3.398515220194e-02 -3.581037438412e-02 --3.760872065965e-02 -3.937934508470e-02 -4.112141951907e-02 -4.283413398634e-02 --4.451669702342e-02 -4.616833601959e-02 -4.778829754478e-02 -4.937584766694e-02 --5.093027225844e-02 -5.245087729134e-02 -5.393698912143e-02 -5.538795476092e-02 --5.680314213965e-02 -5.818194035487e-02 -5.952375990923e-02 -6.082803293718e-02 --6.209421341953e-02 -6.332177738611e-02 -6.451022310658e-02 -6.565907126920e-02 --6.676786514750e-02 -6.783617075500e-02 -6.886357698766e-02 -6.984969575424e-02 --7.079416209445e-02 -7.169663428484e-02 -7.255679393255e-02 -7.337434605673e-02 --7.414901915772e-02 -7.488056527406e-02 -7.556876002718e-02 -7.621340265389e-02 --7.681431602672e-02 -7.737134666202e-02 -7.788436471594e-02 -7.835326396837e-02 --7.877796179470e-02 -7.915839912568e-02 -7.949454039533e-02 -7.978637347687e-02 --8.003390960693e-02 -8.023718329801e-02 -8.039625223919e-02 -8.051119718538e-02 --8.058212183500e-02 -8.060915269633e-02 -8.059243894251e-02 -8.053215225545e-02 --8.042848665856e-02 -8.028165833868e-02 -8.009190545703e-02 -7.985948794959e-02 --7.958468731689e-02 -7.926780640330e-02 -7.890916916617e-02 -7.850912043475e-02 --7.806802565919e-02 -7.758627064966e-02 -7.706426130588e-02 -7.650242333713e-02 --7.590120197298e-02 -7.526106166478e-02 -7.458248577834e-02 -7.386597627771e-02 --7.311205340040e-02 -7.232125532426e-02 -7.149413782610e-02 -7.063127393228e-02 --6.973325356161e-02 -6.880068316052e-02 -6.783418533096e-02 -6.683439845105e-02 --6.580197628881e-02 -6.473758760914e-02 -6.364191577426e-02 -6.251565833792e-02 --6.135952663348e-02 -6.017424535615e-02 -5.896055213969e-02 -5.771919712767e-02 --5.645094253960e-02 -5.515656223220e-02 -5.383684125599e-02 -5.249257540744e-02 --5.112457077695e-02 -4.973364329296e-02 -4.832061826225e-02 -4.688632990695e-02 --4.543162089824e-02 -4.395734188717e-02 -4.246435103276e-02 -4.095351352768e-02 --3.942570112175e-02 -3.788179164343e-02 -3.632266851973e-02 -3.474922029462e-02 --3.316234014624e-02 -3.156292540326e-02 -2.995187706046e-02 -2.833009929399e-02 --2.669849897633e-02 -2.505798519148e-02 -2.340946875033e-02 -2.175386170669e-02 --2.009207687410e-02 -1.842502734374e-02 -1.675362600365e-02 -1.507878505949e-02 --1.340141555709e-02 -1.172242690711e-02 -1.004272641190e-02 -8.363218794972e-03 --6.684805733115e-03 -5.008385391616e-03 -3.334851962633e-03 -1.665095207049e-03 -5.494061742638e-15 1.659554119718e-03 3.312693396035e-03 4.958550297758e-03 -6.596263956071e-03 - Type L N - 0 1 4 -0.000000000000e+00 9.566298184903e-03 1.912786846262e-02 2.867998570765e-02 -3.821793035619e-02 4.773699118245e-02 5.723246806976e-02 6.669967477440e-02 -7.613394168073e-02 8.553061854550e-02 9.488507722985e-02 1.041927144171e-01 -1.134489543148e-01 1.226492513388e-01 1.317890927784e-01 1.408640014402e-01 -1.498695382692e-01 1.588013049459e-01 1.676549464565e-01 1.764261536362e-01 -1.851106656831e-01 1.937042726403e-01 2.022028178469e-01 2.106022003537e-01 -2.188983773037e-01 2.270873662761e-01 2.351652475906e-01 2.431281665722e-01 -2.509723357752e-01 2.586940371625e-01 2.662896242426e-01 2.737555241599e-01 -2.810882397377e-01 2.882843514741e-01 2.953405194877e-01 3.022534854126e-01 -3.090200742414e-01 3.156371961159e-01 3.221018480627e-01 3.284111156742e-01 -3.345621747332e-01 3.405522927796e-01 3.463788306200e-01 3.520392437773e-01 -3.575310838804e-01 3.628519999927e-01 3.679997398800e-01 3.729721512143e-01 -3.777671827158e-01 3.823828852303e-01 3.868174127419e-01 3.910690233214e-01 -3.951360800081e-01 3.990170516260e-01 4.027105135334e-01 4.062151483048e-01 -4.095297463462e-01 4.126532064420e-01 4.155845362341e-01 4.183228526327e-01 -4.208673821585e-01 4.232174612166e-01 4.253725363010e-01 4.273321641310e-01 -4.290960117185e-01 4.306638563663e-01 4.320355855979e-01 4.332111970191e-01 -4.341907981105e-01 4.349746059520e-01 4.355629468798e-01 4.359562560755e-01 -4.361550770876e-01 4.361600612865e-01 4.359719672530e-01 4.355916601007e-01 -4.350201107332e-01 4.342583950360e-01 4.333076930044e-01 4.321692878079e-01 -4.308445647915e-01 4.293350104145e-01 4.276422111287e-01 4.257678521951e-01 -4.237137164414e-01 4.214816829602e-01 4.190737257501e-01 4.164919122987e-01 -4.137384021101e-01 4.108154451784e-01 4.077253804055e-01 4.044706339677e-01 -4.010537176303e-01 3.974772270111e-01 3.937438397957e-01 3.898563139041e-01 -3.858174856110e-01 3.816302676203e-01 3.772976470959e-01 3.728226836497e-01 -3.682085072877e-01 3.634583163171e-01 3.585753752142e-01 3.535630124553e-01 -3.484246183124e-01 3.431636426144e-01 3.377835924758e-01 3.322880299949e-01 -3.266805699217e-01 3.209648772982e-01 3.151446650732e-01 3.092236916908e-01 -3.032057586576e-01 2.970947080870e-01 2.908944202243e-01 2.846088109542e-01 -2.782418292907e-01 2.717974548527e-01 2.652796953271e-01 2.586925839194e-01 -2.520401767950e-01 2.453265505129e-01 2.385557994521e-01 2.317320332342e-01 -2.248593741423e-01 2.179419545395e-01 2.109839142871e-01 2.039893981648e-01 -1.969625532959e-01 1.899075265763e-01 1.828284621119e-01 1.757294986646e-01 -1.686147671085e-01 1.614883878982e-01 1.543544685513e-01 1.472171011461e-01 -1.400803598361e-01 1.329482983835e-01 1.258249477125e-01 1.187143134847e-01 -1.116203736975e-01 1.045470763076e-01 9.749833688091e-02 9.047803626969e-02 -8.349001831981e-02 7.653808760819e-02 6.962600721258e-02 6.275749651498e-02 -5.593622903979e-02 4.916583032846e-02 4.244987585155e-02 3.579188895980e-02 -2.919533887523e-02 2.266363872368e-02 1.620014360995e-02 9.808148736539e-03 -3.490887567426e-03 -2.748469962288e-03 -8.906819189644e-03 -1.498112241901e-02 --2.096841056821e-02 -2.686578476455e-02 -3.267041788992e-02 -3.837955607400e-02 --4.399052013474e-02 -4.950070696528e-02 -5.490759086660e-02 -6.020872482503e-02 --6.540174173404e-02 -7.048435555960e-02 -7.545436244846e-02 -8.030964177882e-02 --8.504815715278e-02 -8.966795733019e-02 -9.416717710327e-02 -9.854403811174e-02 --1.027968495980e-01 -1.069240091019e-01 -1.109240030955e-01 -1.147954075558e-01 --1.185368884781e-01 -1.221472023268e-01 -1.256251964254e-01 -1.289698092854e-01 --1.321800708730e-01 -1.352551028153e-01 -1.381941185442e-01 -1.409964233795e-01 --1.436614145509e-01 -1.461885811587e-01 -1.485775040737e-01 -1.508278557766e-01 --1.529394001376e-01 -1.549119921350e-01 -1.567455775156e-01 -1.584401923947e-01 --1.599959627980e-01 -1.614131041459e-01 -1.626919206784e-01 -1.638328048251e-01 --1.648362365168e-01 -1.657027824425e-01 -1.664330952505e-01 -1.670279126954e-01 --1.674880567315e-01 -1.678144325526e-01 -1.680080275809e-01 -1.680699104034e-01 --1.680012296587e-01 -1.678032128742e-01 -1.674771652549e-01 -1.670244684244e-01 --1.664465791196e-01 -1.657450278406e-01 -1.649214174546e-01 -1.639774217584e-01 --1.629147839977e-01 -1.617353153453e-01 -1.604408933404e-01 -1.590334602880e-01 --1.575150216224e-01 -1.558876442330e-01 -1.541534547566e-01 -1.523146378354e-01 --1.503734343426e-01 -1.483321395777e-01 -1.461931014316e-01 -1.439587185236e-01 --1.416314383123e-01 -1.392137551793e-01 -1.367082084909e-01 -1.341173806359e-01 --1.314438950423e-01 -1.286904141746e-01 -1.258596375129e-01 -1.229542995144e-01 --1.199771675604e-01 -1.169310398889e-01 -1.138187435147e-01 -1.106431321393e-01 --1.074070840500e-01 -1.041135000127e-01 -1.007653011565e-01 -9.736542685513e-02 --9.391683260303e-02 -9.042248789093e-02 -8.688537408014e-02 -8.330848227797e-02 --7.969481121567e-02 -7.604736513015e-02 -7.236915165120e-02 -6.866317969545e-02 --6.493245736860e-02 -6.117998987743e-02 -5.740877745286e-02 -5.362181328560e-02 --4.982208147572e-02 -4.601255499754e-02 -4.219619368123e-02 -3.837594221246e-02 --3.455472815141e-02 -3.073545997251e-02 -2.692102512614e-02 -2.311428812369e-02 --1.931808864708e-02 -1.553523968410e-02 -1.176852569077e-02 -8.020700781853e-03 --4.294486950730e-03 -5.925723198338e-04 3.082390577347e-03 6.727786481505e-03 -1.034103905898e-02 1.391961251838e-02 1.746101319137e-02 2.096279107660e-02 -2.442254134593e-02 2.783790581184e-02 3.120657435532e-02 3.452628631329e-02 -3.779483182466e-02 4.101005313436e-02 4.416984585451e-02 4.727216018190e-02 -5.031500207134e-02 5.329643436387e-02 5.621457786948e-02 5.906761240362e-02 -6.185377777692e-02 6.457137473767e-02 6.721876586647e-02 6.979437642272e-02 -7.229669514237e-02 7.472427498670e-02 7.707573384170e-02 7.934975516771e-02 -8.154508859916e-02 8.366055049403e-02 8.569502443295e-02 8.764746166772e-02 -8.951688151909e-02 9.130237172376e-02 9.300308873062e-02 9.461825794594e-02 -9.614717392794e-02 9.758920053040e-02 9.894377099563e-02 1.002103879969e-01 -1.013886236305e-01 1.024781193575e-01 1.034785858955e-01 1.043898030609e-01 -1.052116195617e-01 1.059439527411e-01 1.065867882727e-01 1.071401798072e-01 -1.076042485711e-01 1.079791829190e-01 1.082652378377e-01 1.084627344050e-01 -1.085720592028e-01 1.085936636840e-01 1.085280634965e-01 1.083758377621e-01 -1.081376283127e-01 1.078141388845e-01 1.074061342699e-01 1.069144394291e-01 -1.063399385610e-01 1.056835741356e-01 1.049463458876e-01 1.041293097723e-01 -1.032335768856e-01 1.022603123479e-01 1.012107341531e-01 1.000861119842e-01 -9.888776599662e-02 9.761706556868e-02 9.627542802251e-02 9.486431731473e-02 -9.338524269884e-02 9.183975736014e-02 9.022945702425e-02 8.855597854051e-02 -8.682099844128e-02 8.502623147829e-02 8.317342913729e-02 8.126437813212e-02 -7.930089887935e-02 7.728484395482e-02 7.521809653307e-02 7.310256881118e-02 -7.094020041790e-02 6.873295680958e-02 6.648282765399e-02 6.419182520331e-02 -6.186198265754e-02 5.949535251952e-02 5.709400494294e-02 5.466002607442e-02 -5.219551639106e-02 4.970258903460e-02 4.718336814347e-02 4.463998718407e-02 -4.207458728231e-02 3.948931555689e-02 3.688632345530e-02 3.426776509407e-02 -3.163579560413e-02 2.899256948279e-02 2.634023895338e-02 2.368095233377e-02 -2.101685241502e-02 1.835007485117e-02 1.568274656153e-02 1.301698414641e-02 -1.035489231759e-02 7.698562344555e-03 5.050070517548e-03 2.411476628665e-03 --2.151775280819e-04 -2.827869636607e-03 -5.424598317503e-03 -8.003384564679e-03 --1.056227315890e-02 -1.309933405728e-02 -1.561266375770e-02 -1.810038663739e-02 --2.056065626453e-02 -2.299165668228e-02 -2.539160366410e-02 -2.775874593974e-02 --3.009136639095e-02 -3.238778321625e-02 -3.464635106392e-02 -3.686546213246e-02 --3.904354723792e-02 -4.117907684734e-02 -4.327056207765e-02 -4.531655565950e-02 --4.731565286529e-02 -4.926649240097e-02 -5.116775726097e-02 -5.301817554583e-02 --5.481652124205e-02 -5.656161496362e-02 -5.825232465496e-02 -5.988756625480e-02 --6.146630432063e-02 -6.298755261344e-02 -6.445037464250e-02 -6.585388416976e-02 --6.719724567388e-02 -6.847967477340e-02 -6.970043860922e-02 -7.085885618590e-02 --7.195429867199e-02 -7.298618965913e-02 -7.395400537984e-02 -7.485727488428e-02 --7.569558017556e-02 -7.646855630406e-02 -7.717589142062e-02 -7.781732678871e-02 --7.839265675589e-02 -7.890172868448e-02 -7.934444284195e-02 -7.972075225095e-02 --8.003066249945e-02 -8.027423151132e-02 -8.045156927739e-02 -8.056283754771e-02 --8.060824948509e-02 -8.058806928051e-02 -8.050261173076e-02 -8.035224177872e-02 --8.013737401696e-02 -7.985847215488e-02 -7.951604845026e-02 -7.911066310550e-02 --7.864292362930e-02 -7.811348416438e-02 -7.752304478185e-02 -7.687235074284e-02 --7.616219172820e-02 -7.539340103691e-02 -7.456685475382e-02 -7.368347088773e-02 --7.274420848031e-02 -7.175006668678e-02 -7.070208382918e-02 -6.960133642298e-02 --6.844893817790e-02 -6.724603897383e-02 -6.599382381271e-02 -6.469351174720e-02 --6.334635478716e-02 -6.195363678477e-02 -6.051667229927e-02 -5.903680544223e-02 --5.751540870432e-02 -5.595388176459e-02 -5.435365028318e-02 -5.271616467847e-02 --5.104289888967e-02 -4.933534912586e-02 -4.759503260246e-02 -4.582348626622e-02 --4.402226550965e-02 -4.219294287602e-02 -4.033710675585e-02 -3.845636007610e-02 --3.655231898285e-02 -3.462661151875e-02 -3.268087629616e-02 -3.071676116695e-02 --2.873592189021e-02 -2.674002079869e-02 -2.473072546512e-02 -2.270970736940e-02 --2.067864056774e-02 -1.863920036469e-02 -1.659306198916e-02 -1.454189927534e-02 --1.248738334968e-02 -1.043118132471e-02 -8.374955000901e-03 -6.320359577409e-03 --4.269042372712e-03 -2.222641556095e-03 -1.827848909305e-04 1.848911509319e-03 -3.870844411453e-03 5.881424678326e-03 7.879078469210e-03 9.862248423814e-03 -1.182939482914e-02 1.377899676827e-02 1.570955325036e-02 1.761958432087e-02 -1.950763215140e-02 2.137226210821e-02 2.321206379883e-02 2.502565209581e-02 -2.681166813713e-02 2.856878030232e-02 3.029568516389e-02 3.199110841311e-02 -3.365380575983e-02 3.528256380540e-02 3.687620088838e-02 3.843356790231e-02 -3.995354908502e-02 4.143506277906e-02 4.287706216257e-02 4.427853595036e-02 -4.563850906446e-02 4.695604327404e-02 4.823023780406e-02 4.946022991235e-02 -5.064519543483e-02 5.178434929852e-02 5.287694600197e-02 5.392228006297e-02 -5.491968643324e-02 5.586854087979e-02 5.676826033303e-02 5.761830320108e-02 -5.841816965056e-02 5.916740185339e-02 5.986558419979e-02 6.051234347725e-02 -6.110734901553e-02 6.165031279764e-02 6.214098953688e-02 6.257917671994e-02 -6.296471461614e-02 6.329748625293e-02 6.357741735781e-02 6.380447626677e-02 -6.397867379938e-02 6.410006310095e-02 6.416873945173e-02 6.418484004354e-02 -6.414854372412e-02 6.406007070949e-02 6.391968226458e-02 6.372768035254e-02 -6.348440725319e-02 6.319024515079e-02 6.284561569178e-02 6.245097951280e-02 -6.200683573945e-02 6.151372145639e-02 6.097221114917e-02 6.038291611833e-02 -5.974648386642e-02 5.906359745837e-02 5.833497485590e-02 5.756136822652e-02 -5.674356322773e-02 5.588237826720e-02 5.497866373929e-02 5.403330123899e-02 -5.304720275355e-02 5.202130983283e-02 5.095659273893e-02 4.985404957584e-02 -4.871470539995e-02 4.753961131201e-02 4.632984353155e-02 4.508650245428e-02 -4.381071169345e-02 4.250361710595e-02 4.116638580389e-02 3.980020515251e-02 -3.840628175531e-02 3.698584042714e-02 3.554012315624e-02 3.407038805589e-02 -3.257790830667e-02 3.106397109021e-02 2.952987651514e-02 2.797693653625e-02 -2.640647386774e-02 2.481982089132e-02 2.321831856014e-02 2.160331529936e-02 -1.997616590430e-02 1.833823043703e-02 1.669087312218e-02 1.503546124304e-02 -1.337336403858e-02 1.170595160250e-02 1.003459378496e-02 8.360659098012e-03 -6.685513625474e-03 5.010519938161e-03 3.337036015286e-03 1.666414172876e-03 -1.228805779297e-14 -1.660868696267e-03 -3.314862936615e-03 -4.960663604753e-03 --6.596962471817e-03 - Type L N - 0 1 5 -0.000000000000e+00 1.131608597450e-02 2.262434588731e-02 3.391696012005e-02 -4.518612193521e-02 5.642404390216e-02 6.762296430584e-02 7.877515353239e-02 -8.987292042600e-02 1.009086186114e-01 1.118746527759e-01 1.227634849063e-01 -1.335676404736e-01 1.442797145617e-01 1.548923779332e-01 1.653983830274e-01 -1.757905698857e-01 1.860618719981e-01 1.962053220662e-01 2.062140576774e-01 -2.160813268855e-01 2.258004936922e-01 2.353650434252e-01 2.447685880078e-01 -2.540048711153e-01 2.630677732140e-01 2.719513164776e-01 2.806496695782e-01 -2.891571523448e-01 2.974682402893e-01 3.055775689917e-01 3.134799383442e-01 -3.211703166482e-01 3.286438445616e-01 3.358958388932e-01 3.429217962401e-01 -3.497173964652e-01 3.562785060130e-01 3.626011810586e-01 3.686816704895e-01 -3.745164187161e-01 3.801020683092e-01 3.854354624625e-01 3.905136472772e-01 -3.953338738681e-01 3.998936002880e-01 4.041904932705e-01 4.082224297880e-01 -4.119874984258e-01 4.154840005689e-01 4.187104514033e-01 4.216655807285e-01 -4.243483335826e-01 4.267578706790e-01 4.288935686542e-01 4.307550201275e-01 -4.323420335719e-01 4.336546329976e-01 4.346930574476e-01 4.354577603067e-01 -4.359494084250e-01 4.361688810566e-01 4.361172686140e-01 4.357958712415e-01 -4.352061972076e-01 4.343499611183e-01 4.332290819538e-01 4.318456809303e-01 -4.302020791890e-01 4.283007953151e-01 4.261445426886e-01 4.237362266710e-01 -4.210789416280e-01 4.181759677951e-01 4.150307679855e-01 4.116469841455e-01 -4.080284337610e-01 4.041791061172e-01 4.001031584169e-01 3.958049117592e-01 -3.912888469852e-01 3.865596003913e-01 3.816219593178e-01 3.764808576141e-01 -3.711413709872e-01 3.656087122358e-01 3.598882263766e-01 3.539853856660e-01 -3.479057845226e-01 3.416551343555e-01 3.352392583024e-01 3.286640858835e-01 -3.219356475761e-01 3.150600693145e-01 3.080435669202e-01 3.008924404692e-01 -2.936130685997e-01 2.862119027669e-01 2.786954614494e-01 2.710703243135e-01 -2.633431263400e-01 2.555205519196e-01 2.476093289215e-01 2.396162227424e-01 -2.315480303388e-01 2.234115742511e-01 2.152136966224e-01 2.069612532192e-01 -1.986611074585e-01 1.903201244474e-01 1.819451650406e-01 1.735430799202e-01 -1.651207037049e-01 1.566848490926e-01 1.482423010418e-01 1.397998109982e-01 -1.313640911704e-01 1.229418088597e-01 1.145395808512e-01 1.061639678681e-01 -9.782146909677e-02 8.951851678618e-02 8.126147092635e-02 7.305661401127e-02 -6.491014589029e-02 5.682817871276e-02 4.881673197012e-02 4.088172764003e-02 -3.302898543646e-02 2.526421816997e-02 1.759302722215e-02 1.002089813804e-02 -2.553196340239e-03 -4.804837031551e-03 -1.204808915229e-02 -1.917157941109e-02 --2.617046317543e-02 -3.304003541677e-02 -3.977573419486e-02 -4.637314399786e-02 --5.282799893548e-02 -5.913618578289e-02 -6.529374687281e-02 -7.129688283372e-02 --7.714195517203e-02 -8.282548869637e-02 -8.834417378226e-02 -9.369486847552e-02 --9.887460043301e-02 -1.038805686994e-01 -1.087101453191e-01 -1.133608767817e-01 --1.178304853011e-01 -1.221168699272e-01 -1.262181074889e-01 -1.301324533702e-01 --1.338583421169e-01 -1.373943878753e-01 -1.407393846628e-01 -1.438923064706e-01 --1.468523071991e-01 -1.496187204267e-01 -1.521910590124e-01 -1.545690145341e-01 --1.567524565627e-01 -1.587414317735e-01 -1.605361628975e-01 -1.621370475121e-01 --1.635446566748e-01 -1.647597334006e-01 -1.657831909859e-01 -1.666161111807e-01 --1.672597422110e-01 -1.677154966549e-01 -1.679849491738e-01 -1.680698341019e-01 --1.679720428978e-01 -1.676936214587e-01 -1.672367673035e-01 -1.666038266246e-01 --1.657972912149e-01 -1.648197952712e-01 -1.636741120781e-01 -1.623631505767e-01 --1.608899518213e-01 -1.592576853276e-01 -1.574696453170e-01 -1.555292468607e-01 --1.534400219275e-01 -1.512056153403e-01 -1.488297806440e-01 -1.463163758909e-01 --1.436693593467e-01 -1.408927851222e-01 -1.379907987350e-01 -1.349676326058e-01 --1.318276014938e-01 -1.285750978758e-01 -1.252145872745e-01 -1.217506035393e-01 --1.181877440854e-01 -1.145306650961e-01 -1.107840766920e-01 -1.069527380732e-01 --1.030414526384e-01 -9.905506308635e-02 -9.499844650423e-02 -9.087650944734e-02 --8.669418301591e-02 -8.245641793294e-02 -7.816817962834e-02 -7.383444333396e-02 --6.946018919425e-02 -6.505039739737e-02 -6.061004333125e-02 -5.614409276937e-02 --5.165749709074e-02 -4.715518853873e-02 -4.264207552300e-02 -3.812303796931e-02 --3.360292272113e-02 -2.908653899773e-02 -2.457865391267e-02 -2.008398805706e-02 --1.560721115144e-02 -1.115293777044e-02 -6.725723143991e-03 -2.330059038968e-03 -2.029630275113e-03 6.348991972642e-03 1.062374852726e-02 1.484970147256e-02 -1.902273506488e-02 2.313881984495e-02 2.719401609537e-02 3.118447719087e-02 -3.510645283865e-02 3.895629220596e-02 4.273044693225e-02 4.642547402371e-02 -5.003803862743e-02 5.356491668336e-02 5.700299745172e-02 6.034928591393e-02 -6.360090504540e-02 6.675509795830e-02 6.980922991283e-02 7.276079019564e-02 -7.560739386397e-02 7.834678335454e-02 8.097682995608e-02 8.349553514470e-02 -8.590103178130e-02 8.819158517063e-02 9.036559398130e-02 9.242159102671e-02 -9.435824390655e-02 9.617435550900e-02 9.786886437367e-02 9.944084491560e-02 -1.008895075107e-01 1.022141984430e-01 1.034143997153e-01 1.044897287222e-01 -1.054399377883e-01 1.062649135721e-01 1.069646763363e-01 1.075393790860e-01 -1.079893065771e-01 1.083148741956e-01 1.085166267094e-01 1.085952368958e-01 -1.085515040450e-01 1.083863523425e-01 1.081008291330e-01 1.076961030668e-01 -1.071734621332e-01 1.065343115810e-01 1.057801717303e-01 1.049126756787e-01 -1.039335669027e-01 1.028446967595e-01 1.016480218911e-01 1.003456015333e-01 -9.893959473422e-02 9.743225748455e-02 9.582593976280e-02 9.412308249972e-02 -9.232621446479e-02 9.043794907856e-02 8.846098115432e-02 8.639808357289e-02 -8.425210389427e-02 8.202596090977e-02 7.972264113862e-02 7.734519527280e-02 -7.489673457404e-02 7.238042722697e-02 6.979949465221e-02 6.715720778367e-02 -6.445688331376e-02 6.170187991076e-02 5.889559441230e-02 5.604145799901e-02 -5.314293235233e-02 5.020350580069e-02 4.722668945790e-02 4.421601335796e-02 -4.117502259017e-02 3.810727343873e-02 3.501632953060e-02 3.190575799576e-02 -2.877912564368e-02 2.563999516003e-02 2.249192132735e-02 1.933844727360e-02 -1.618310075232e-02 1.302939045825e-02 9.880802381798e-03 6.740796206401e-03 -3.612801751939e-03 5.002154679701e-04 -2.593603019889e-03 -5.665334307046e-03 --8.711702547183e-03 -1.172947872647e-02 -1.471548387155e-02 -1.766659218835e-02 --2.057973412858e-02 -2.345189938120e-02 -2.628013978594e-02 -2.906157216621e-02 --3.179338107882e-02 -3.447282147796e-02 -3.709722129101e-02 -3.966398390395e-02 --4.217059055408e-02 -4.461460262801e-02 -4.699366386284e-02 -4.930550244881e-02 --5.154793303149e-02 -5.371885861187e-02 -5.581627234292e-02 -5.783825922111e-02 --5.978299767146e-02 -6.164876102525e-02 -6.343391888884e-02 -6.513693840318e-02 --6.675638539263e-02 -6.829092540280e-02 -6.973932462656e-02 -7.110045071781e-02 --7.237327349267e-02 -7.355686551778e-02 -7.465040258570e-02 -7.565316407726e-02 --7.656453321111e-02 -7.738399718063e-02 -7.811114717855e-02 -7.874567830983e-02 --7.928738939323e-02 -7.973618265249e-02 -8.009206329770e-02 -8.035513899797e-02 --8.052561924636e-02 -8.060381461822e-02 -8.059013592418e-02 -8.048509325925e-02 --8.028929494936e-02 -8.000344639707e-02 -7.962834882789e-02 -7.916489793929e-02 --7.861408245400e-02 -7.797698257970e-02 -7.725476837709e-02 -7.644869803855e-02 --7.556011607957e-02 -7.459045144523e-02 -7.354121553423e-02 -7.241400014284e-02 --7.121047533135e-02 -6.993238721568e-02 -6.858155568678e-02 -6.715987206059e-02 --6.566929666148e-02 -6.411185634180e-02 -6.248964194082e-02 -6.080480568572e-02 --5.905955853789e-02 -5.725616748755e-02 -5.539695279976e-02 -5.348428521517e-02 --5.152058310843e-02 -4.950830960781e-02 -4.744996967904e-02 -4.534810717687e-02 --4.320530186742e-02 -4.102416642497e-02 -3.880734340620e-02 -3.655750220549e-02 --3.427733599455e-02 -3.196955864970e-02 -2.963690167025e-02 -2.728211109136e-02 --2.490794439461e-02 -2.251716741974e-02 -2.011255128093e-02 -1.769686929077e-02 --1.527289389540e-02 -1.284339362394e-02 -1.041113005559e-02 -7.978854807452e-03 --5.549306546438e-03 -3.125208028220e-03 -7.092631664470e-04 1.695845864775e-03 -4.087461492122e-03 6.462953565054e-03 8.819722135684e-03 1.115520019365e-02 -1.346685635326e-02 1.575219749006e-02 1.800877132436e-02 2.023416894894e-02 -2.242602729853e-02 2.458203155853e-02 2.669991751071e-02 2.877747381347e-02 -3.081254421454e-02 3.280302969388e-02 3.474689053486e-02 3.664214832161e-02 -3.848688786081e-02 4.027925902594e-02 4.201747852249e-02 4.369983157235e-02 -4.532467351604e-02 4.689043133112e-02 4.839560506571e-02 4.983876918571e-02 -5.121857383468e-02 5.253374600533e-02 5.378309062162e-02 5.496549153077e-02 -5.607991240437e-02 5.712539754790e-02 5.810107261830e-02 5.900614524896e-02 -5.983990558203e-02 6.060172670756e-02 6.129106500969e-02 6.190746041949e-02 -6.245053657483e-02 6.292000088737e-02 6.331564451689e-02 6.363734225340e-02 -6.388505230756e-02 6.405881600989e-02 6.415875741952e-02 6.418508284324e-02 -6.413808026568e-02 6.401811869168e-02 6.382564740175e-02 6.356119512194e-02 -6.322536910921e-02 6.281885415376e-02 6.234241149954e-02 6.179687768463e-02 -6.118316330299e-02 6.050225168916e-02 5.975519752777e-02 5.894312538955e-02 -5.806722819583e-02 5.712876561344e-02 5.612906238197e-02 5.506950657560e-02 -5.395154780156e-02 5.277669533750e-02 5.154651620996e-02 5.026263321638e-02 -4.892672289299e-02 4.754051343091e-02 4.610578254317e-02 4.462435528498e-02 -4.309810182984e-02 4.152893520430e-02 3.991880898370e-02 3.826971495185e-02 -3.658368072722e-02 3.486276735836e-02 3.310906689145e-02 3.132469991255e-02 -2.951181306762e-02 2.767257656281e-02 2.580918164815e-02 2.392383808727e-02 -2.201877161610e-02 2.009622139330e-02 1.815843744539e-02 1.620767810928e-02 -1.424620747515e-02 1.227629283244e-02 1.030020212175e-02 8.320201395472e-03 -6.338552289945e-03 4.357509511830e-03 2.379318341479e-03 4.062121559663e-04 --1.559590025523e-03 -3.515885971338e-03 -5.460492639420e-03 -7.391248549237e-03 --9.306016121056e-03 -1.120268398010e-02 -1.307916922313e-02 -1.493341964515e-02 --1.676341592381e-02 -1.856717375928e-02 -2.034274596747e-02 -2.208822452426e-02 --2.380174255882e-02 -2.548147629387e-02 -2.712564693097e-02 -2.873252247900e-02 --3.030041952378e-02 -3.182770493742e-02 -3.331279752537e-02 -3.475416960976e-02 --3.615034854749e-02 -3.749991818145e-02 -3.880152022372e-02 -4.005385556928e-02 --4.125568553904e-02 -4.240583305113e-02 -4.350318371930e-02 -4.454668687749e-02 --4.553535652978e-02 -4.646827222467e-02 -4.734457985331e-02 -4.816349237079e-02 --4.892429044002e-02 -4.962632299781e-02 -5.026900774276e-02 -5.085183154457e-02 --5.137435077474e-02 -5.183619155846e-02 -5.223704994773e-02 -5.257669201567e-02 --5.285495387236e-02 -5.307174160227e-02 -5.322703112373e-02 -5.332086797082e-02 --5.335336699815e-02 -5.332471200918e-02 -5.323515530871e-02 -5.308501718019e-02 --5.287468528896e-02 -5.260461401196e-02 -5.227532369517e-02 -5.188739983982e-02 --5.144149221829e-02 -5.093831392121e-02 -5.037864033685e-02 -4.976330806421e-02 --4.909321376127e-02 -4.836931292985e-02 -4.759261863866e-02 -4.676420018617e-02 --4.588518170495e-02 -4.495674070927e-02 -4.398010658775e-02 -4.295655904291e-02 --4.188742647948e-02 -4.077408434358e-02 -3.961795341459e-02 -3.842049805192e-02 --3.718322439869e-02 -3.590767854449e-02 -3.459544464945e-02 -3.324814303171e-02 --3.186742822067e-02 -3.045498697827e-02 -2.901253629051e-02 -2.754182133175e-02 --2.604461340386e-02 -2.452270785294e-02 -2.297792196573e-02 -2.141209284821e-02 --1.982707528892e-02 -1.822473960925e-02 -1.660696950330e-02 -1.497565986970e-02 --1.333271463772e-02 -1.168004459040e-02 -1.001956518685e-02 -8.353194386261e-03 --6.682850476172e-03 -5.010449907207e-03 -3.337905136822e-03 -1.667122484388e-03 -4.806801137936e-15 1.661574650702e-03 3.315726283262e-03 4.960594270583e-03 -6.594334596110e-03 - Type L N - 0 1 6 -0.000000000000e+00 1.306435487339e-02 2.611666663548e-02 3.914490539118e-02 -5.213706766219e-02 6.508118955583e-02 7.796535988669e-02 9.077773323521e-02 -1.035065429278e-01 1.161401139228e-01 1.286668755872e-01 1.410753743480e-01 -1.533542862052e-01 1.654924290884e-01 1.774787750453e-01 1.893024622457e-01 -2.009528067876e-01 2.124193142911e-01 2.236916912658e-01 2.347598562401e-01 -2.456139506364e-01 2.562443493818e-01 2.666416712409e-01 2.767967888577e-01 -2.867008384964e-01 2.963452294685e-01 3.057216532352e-01 3.148220921754e-01 -3.236388280080e-01 3.321644498590e-01 3.403918619651e-01 3.483142910027e-01 -3.559252930366e-01 3.632187600783e-01 3.701889262472e-01 3.768303735283e-01 -3.831380371192e-01 3.891072103604e-01 3.947335492439e-01 4.000130764958e-01 -4.049421852264e-01 4.095176421468e-01 4.137365903460e-01 4.175965516284e-01 -4.210954284066e-01 4.242315051508e-01 4.270034493913e-01 4.294103122749e-01 -4.314515286748e-01 4.331269168547e-01 4.344366776877e-01 4.353813934324e-01 -4.359620260680e-01 4.361799151907e-01 4.360367754759e-01 4.355346937086e-01 -4.346761253872e-01 4.334638909055e-01 4.319011713177e-01 4.299915036930e-01 -4.277387760660e-01 4.251472219890e-01 4.222214146949e-01 4.189662608771e-01 -4.153869940960e-01 4.114891678200e-01 4.072786481099e-01 4.027616059573e-01 -3.979445092866e-01 3.928341146300e-01 3.874374584882e-01 3.817618483862e-01 -3.758148536366e-01 3.696042958225e-01 3.631382390110e-01 3.564249797115e-01 -3.494730365898e-01 3.422911399527e-01 3.348882210151e-01 3.272734009641e-01 -3.194559798333e-01 3.114454252015e-01 3.032513607307e-01 2.948835545560e-01 -2.863519075439e-01 2.776664414321e-01 2.688372868672e-01 2.598746713530e-01 -2.507889071261e-01 2.415903789735e-01 2.322895320066e-01 2.228968594066e-01 -2.134228901575e-01 2.038781767810e-01 1.942732830871e-01 1.846187719580e-01 -1.749251931779e-01 1.652030713240e-01 1.554628937345e-01 1.457150985660e-01 -1.359700629568e-01 1.262380913092e-01 1.165294037047e-01 1.068541244662e-01 -9.722227088119e-02 8.764374209841e-02 7.812830821191e-02 6.868559954470e-02 -5.932509614494e-02 5.005611750674e-02 4.088781252752e-02 3.182914971350e-02 -2.288890764466e-02 1.407566570989e-02 5.397795123031e-03 -3.136549770186e-03 --1.151943988454e-02 -1.974317947772e-02 -2.780031391377e-02 -3.568363709926e-02 --4.338619858388e-02 -5.090131031818e-02 -5.822255306105e-02 -6.534378243043e-02 --7.225913459098e-02 -7.896303157307e-02 -8.545018621773e-02 -9.171560674295e-02 --9.775460092705e-02 -1.035627799053e-01 -1.091360615764e-01 -1.144706736171e-01 --1.195631561007e-01 -1.244103637196e-01 -1.290094676103e-01 -1.333579567794e-01 --1.374536391308e-01 -1.412946420949e-01 -1.448794128598e-01 -1.482067182070e-01 --1.512756439514e-01 -1.540855939907e-01 -1.566362889646e-01 -1.589277645282e-01 --1.609603692434e-01 -1.627347620927e-01 -1.642519096191e-01 -1.655130826990e-01 --1.665198529519e-01 -1.672740887948e-01 -1.677779511462e-01 -1.680338887880e-01 --1.680446333916e-01 -1.678131942169e-01 -1.673428524918e-01 -1.666371554806e-01 --1.656999102510e-01 -1.645351771481e-01 -1.631472629858e-01 -1.615407139648e-01 --1.597203083281e-01 -1.576910487641e-01 -1.554581545684e-01 -1.530270535758e-01 --1.504033738726e-01 -1.475929353025e-01 -1.446017407767e-01 -1.414359674007e-01 --1.381019574301e-01 -1.346062090676e-01 -1.309553671141e-01 -1.271562134863e-01 --1.232156576135e-01 -1.191407267273e-01 -1.149385560561e-01 -1.106163789389e-01 --1.061815168697e-01 -1.016413694882e-01 -9.700340452687e-02 -9.227514773097e-02 --8.746417276188e-02 -8.257809109863e-02 -7.762454195008e-02 -7.261118219088e-02 --6.754567633421e-02 -6.243568655420e-02 -5.728886277065e-02 -5.211283280875e-02 --4.691519264627e-02 -4.170349676043e-02 -3.648524858659e-02 -3.126789110070e-02 --2.605879753717e-02 -2.086526225366e-02 -1.569449175394e-02 -1.055359587991e-02 --5.449579183397e-03 -3.893324881042e-04 4.620375347998e-03 9.572905460209e-03 -1.446175678497e-02 1.928057363890e-02 2.402315306027e-02 2.868345190432e-02 -3.325559368438e-02 3.773387515110e-02 4.211277260239e-02 4.638694791703e-02 -5.055125430561e-02 5.460074177240e-02 5.853066228250e-02 6.233647462903e-02 -6.601384899525e-02 6.955867120733e-02 7.296704667358e-02 7.623530400663e-02 -7.935999832536e-02 8.233791423370e-02 8.516606847438e-02 8.784171225530e-02 -9.036233324761e-02 9.272565725416e-02 9.492964954811e-02 9.697251588137e-02 -9.885270316357e-02 1.005688998121e-01 1.021200357744e-01 1.035052822252e-01 -1.047240509388e-01 1.057759933412e-01 1.066609992436e-01 1.073791952611e-01 -1.079309429206e-01 1.083168364614e-01 1.085377003347e-01 1.085945864040e-01 -1.084887708560e-01 1.082217508230e-01 1.077952407272e-01 1.072111683502e-01 -1.064716706363e-01 1.055790892357e-01 1.045359657956e-01 1.033450370074e-01 -1.020092294159e-01 1.005316540022e-01 9.891560054563e-02 9.716453177567e-02 -9.528207732202e-02 9.327202747256e-02 9.113832674840e-02 8.888506730612e-02 -8.651648217692e-02 8.403693835288e-02 8.145092973060e-02 7.876306992271e-02 -7.597808494766e-02 7.310080580865e-02 7.013616097242e-02 6.708916875864e-02 -6.396492965110e-02 6.076861854143e-02 5.750547691656e-02 5.418080500093e-02 -5.079995386454e-02 4.736831750786e-02 4.389132493471e-02 4.037443222410e-02 -3.682311461199e-02 3.324285859387e-02 2.963915405900e-02 2.601748646701e-02 -2.238332907745e-02 1.874213524294e-02 1.509933077596e-02 1.146030639992e-02 -7.830410294093e-03 4.214940742671e-03 6.191388973499e-04 -2.951818336941e-03 --6.492825283966e-03 -9.998854336717e-03 -1.346496264776e-02 -1.688629866088e-02 --2.025810847566e-02 -2.357574203711e-02 -2.683465914250e-02 -3.003043525802e-02 --3.315876713809e-02 -3.621547824051e-02 -3.919652393092e-02 -4.209799647040e-02 --4.491612978031e-02 -4.764730397885e-02 -5.028804968423e-02 -5.283505207952e-02 --5.528515473476e-02 -5.763536318224e-02 -5.988284824107e-02 -6.202494908794e-02 --6.405917607067e-02 -6.598321326225e-02 -6.779492075297e-02 -6.949233667869e-02 --7.107367898390e-02 -7.253734691836e-02 -7.388192226651e-02 -7.510617030942e-02 --7.620904051922e-02 -7.718966698639e-02 -7.804736858064e-02 -7.878164884658e-02 --7.939219563573e-02 -7.987888047645e-02 -8.024175768446e-02 -8.048106321611e-02 --8.059721326755e-02 -8.059080262311e-02 -8.046260275631e-02 -8.021355968764e-02 --7.984479160329e-02 -7.935758623941e-02 -7.875339803686e-02 -7.803384507161e-02 --7.720070576629e-02 -7.625591538864e-02 -7.520156234308e-02 -7.403988426140e-02 --7.277326389956e-02 -7.140422484702e-02 -6.993542705594e-02 -6.836966219748e-02 --6.670984885249e-02 -6.495902754461e-02 -6.312035562343e-02 -6.119710200580e-02 --5.919264178361e-02 -5.711045070636e-02 -5.495409954702e-02 -5.272724835986e-02 --5.043364063898e-02 -4.807709738652e-02 -4.566151109925e-02 -4.319083968290e-02 --4.066910030299e-02 -3.810036318162e-02 -3.548874534910e-02 -3.283840435983e-02 --3.015353198161e-02 -2.743834786743e-02 -2.469709321918e-02 -2.193402445223e-02 --1.915340687012e-02 -1.635950835841e-02 -1.355659310658e-02 -1.074891536714e-02 --7.940713260454e-03 -5.136202634309e-03 -2.339570986595e-03 4.450285402837e-04 -3.213483084986e-03 5.961725904616e-03 8.685742115878e-03 1.138157433216e-02 -1.404532818887e-02 1.667317774958e-02 1.926137078571e-02 2.180623392263e-02 -2.430417764549e-02 2.675170115799e-02 2.914539708798e-02 3.148195603348e-02 -3.375817094353e-02 3.597094132816e-02 3.811727729214e-02 4.019430338751e-02 -4.219926228014e-02 4.412951822582e-02 4.598256035168e-02 4.775600573917e-02 -4.944760230483e-02 5.105523147584e-02 5.257691065711e-02 5.401079548751e-02 -5.535518188276e-02 5.660850786304e-02 5.776935516357e-02 5.883645062692e-02 -5.980866737579e-02 6.068502576575e-02 6.146469411743e-02 6.214698922805e-02 -6.273137666260e-02 6.321747082525e-02 6.360503481166e-02 6.389398004370e-02 -6.408436568777e-02 6.417639785874e-02 6.417042861146e-02 6.406695472236e-02 -6.386661626384e-02 6.357019497431e-02 6.317861242733e-02 6.269292800329e-02 -6.211433666749e-02 6.144416655872e-02 6.068387639269e-02 5.983505268488e-02 -5.889940679768e-02 5.787877181697e-02 5.677509926326e-02 5.559045564315e-02 -5.432701884668e-02 5.298707439657e-02 5.157301155549e-02 5.008731929761e-02 -4.853258215106e-02 4.691147591774e-02 4.522676327743e-02 4.348128928314e-02 -4.167797675461e-02 3.981982157740e-02 3.790988791463e-02 3.595130333891e-02 -3.394725389190e-02 3.190097907909e-02 2.981576680733e-02 2.769494827291e-02 -2.554189280784e-02 2.336000269210e-02 2.115270793956e-02 1.892346106549e-02 -1.667573184329e-02 1.441300205826e-02 1.213876026616e-02 9.856496564166e-03 -7.569697382000e-03 5.281840300680e-03 2.996388906500e-03 7.167876876316e-04 --1.553543019300e-03 -3.811212025433e-03 -6.052862221539e-03 -8.275175438559e-03 --1.047487722991e-02 -1.264874156886e-02 -1.479359545432e-02 -1.690632341879e-02 --1.898387193196e-02 -2.102325369414e-02 -2.302155181347e-02 -2.497592386127e-02 --2.688360580001e-02 -2.874191577864e-02 -3.054825779020e-02 -3.230012518684e-02 --3.399510404762e-02 -3.563087639474e-02 -3.720522325405e-02 -3.871602755584e-02 --4.016127687243e-02 -4.153906598894e-02 -4.284759930434e-02 -4.408519305964e-02 --4.525027739085e-02 -4.634139820416e-02 -4.735721887142e-02 -4.829652174398e-02 --4.915820948344e-02 -4.994130620809e-02 -5.064495845388e-02 -5.126843594949e-02 --5.181113220482e-02 -5.227256491288e-02 -5.265237616522e-02 -5.295033248118e-02 --5.316632465183e-02 -5.330036739927e-02 -5.335259885286e-02 -5.332327984343e-02 --5.321279301767e-02 -5.302164177426e-02 -5.275044902438e-02 -5.239995577879e-02 --5.197101956449e-02 -5.146461267378e-02 -5.088182024900e-02 -5.022383820648e-02 --4.949197100331e-02 -4.868762925081e-02 -4.781232717897e-02 -4.686767995599e-02 --4.585540086759e-02 -4.477729836070e-02 -4.363527295655e-02 -4.243131403809e-02 --4.116749651707e-02 -3.984597738615e-02 -3.846899216165e-02 -3.703885122248e-02 --3.555793605128e-02 -3.402869538353e-02 -3.245364127086e-02 -3.083534506452e-02 --2.917643332557e-02 -2.747958366783e-02 -2.574752054024e-02 -2.398301095503e-02 --2.218886016829e-02 -2.036790731948e-02 -1.852302103661e-02 -1.665709501370e-02 --1.477304356717e-02 -1.287379717797e-02 -1.096229802598e-02 -9.041495523515e-03 --7.114341854431e-03 -5.183787525630e-03 -3.252776937392e-03 -1.324243979154e-03 -5.988923428224e-04 2.513732239494e-03 4.417399428451e-03 6.307045372497e-03 -8.179853461227e-03 1.003304312959e-02 1.186387390754e-02 1.366964939490e-02 -1.544772115590e-02 1.719549252772e-02 1.891042233785e-02 2.059002852479e-02 -2.223189165726e-02 2.383365834693e-02 2.539304454988e-02 2.690783875242e-02 -2.837590503673e-02 2.979518602233e-02 3.116370567930e-02 3.247957200954e-02 -3.374097959257e-02 3.494621199242e-02 3.609364402262e-02 3.718174386634e-02 -3.820907504899e-02 3.917429826088e-02 4.007617302772e-02 4.091355922698e-02 -4.168541844837e-02 4.239081519695e-02 4.302891793761e-02 4.359899997989e-02 -4.410044020231e-02 4.453272361585e-02 4.489544176600e-02 4.518829297361e-02 -4.541108241454e-02 4.556372203857e-02 4.564623032835e-02 4.565873189906e-02 -4.560145694016e-02 4.547474050043e-02 4.527902161794e-02 4.501484229685e-02 -4.468284633287e-02 4.428377798994e-02 4.381848053034e-02 4.328789460109e-02 -4.269305647939e-02 4.203509618038e-02 4.131523543030e-02 4.053478550869e-02 -3.969514496323e-02 3.879779720101e-02 3.784430796039e-02 3.683632266746e-02 -3.577556368157e-02 3.466382743431e-02 3.350298146672e-02 3.229496136929e-02 -3.104176762993e-02 2.974546239462e-02 2.840816614615e-02 2.703205430605e-02 -2.561935376507e-02 2.417233934768e-02 2.269333021603e-02 2.118468621912e-02 -1.964880419257e-02 1.808811421498e-02 1.650507582642e-02 1.490217421497e-02 -1.328191637703e-02 1.164682725739e-02 9.999445874710e-03 8.342321438527e-03 -6.678009463363e-03 5.009067886003e-03 3.338053191631e-03 1.667516554664e-03 -3.951348312058e-15 -1.661967409577e-03 -3.315873354289e-03 -4.959226000835e-03 --6.589557703069e-03 - Type L N - 0 1 7 -0.000000000000e+00 1.481154861308e-02 2.960554632854e-02 4.436446700681e-02 -5.907083398651e-02 7.370724472844e-02 8.825639534585e-02 1.027011049831e-01 -1.170243400055e-01 1.312092379632e-01 1.452391312917e-01 1.590975707145e-01 -1.727683483093e-01 1.862355202054e-01 1.994834288749e-01 2.124967249857e-01 -2.252603887824e-01 2.377597509611e-01 2.499805130092e-01 2.619087669759e-01 -2.735310146468e-01 2.848341860909e-01 2.958056575531e-01 3.064332686659e-01 -3.167053389525e-01 3.266106835996e-01 3.361386284722e-01 3.452790243530e-01 -3.540222603804e-01 3.623592766693e-01 3.702815760941e-01 3.777812352165e-01 -3.848509143445e-01 3.914838667054e-01 3.976739467219e-01 4.034156173794e-01 -4.087039566734e-01 4.135346631295e-01 4.179040603889e-01 4.218091008526e-01 -4.252473683813e-01 4.282170800487e-01 4.307170869449e-01 4.327468740333e-01 -4.343065590604e-01 4.353968905231e-01 4.360192446984e-01 4.361756217411e-01 -4.358686408580e-01 4.351015345677e-01 4.338781420568e-01 4.322029016443e-01 -4.300808423681e-01 4.275175747081e-01 4.245192804629e-01 4.210927017968e-01 -4.172451294761e-01 4.129843903160e-01 4.083188338570e-01 4.032573182966e-01 -3.978091956961e-01 3.919842964912e-01 3.857929133291e-01 3.792457842606e-01 -3.723540753147e-01 3.651293624839e-01 3.575836131510e-01 3.497291669865e-01 -3.415787163485e-01 3.331452862170e-01 3.244422136959e-01 3.154831271140e-01 -3.062819247611e-01 2.968527532918e-01 2.872099858331e-01 2.773681998293e-01 -2.673421546616e-01 2.571467690765e-01 2.467970984597e-01 2.363083119919e-01 -2.256956697224e-01 2.149744995959e-01 2.041601744705e-01 1.932680891616e-01 -1.823136375483e-01 1.713121897780e-01 1.602790696047e-01 1.492295318961e-01 -1.381787403451e-01 1.271417454186e-01 1.161334625794e-01 1.051686508134e-01 -9.426189149487e-02 8.342756762269e-02 7.267984345857e-02 6.203264459791e-02 -5.149963850351e-02 4.109421553098e-02 3.082947047420e-02 2.071818465801e-02 -1.077280860452e-02 1.005445298223e-03 -8.572165925815e-03 -1.794866484750e-02 --2.711308515908e-02 -3.605486857337e-02 -4.476387822326e-02 -5.323041133405e-02 --6.144521115129e-02 -6.939947810838e-02 -7.708488021916e-02 -8.449356268224e-02 --9.161815668497e-02 -9.845178739657e-02 -1.049880811410e-01 -1.112211717417e-01 --1.171457060316e-01 -1.227568485239e-01 -1.280502852381e-01 -1.330222266814e-01 --1.376694099826e-01 -1.419891001798e-01 -1.459790906629e-01 -1.496377027758e-01 --1.529637845807e-01 -1.559567087919e-01 -1.586163698860e-01 -1.609431803967e-01 --1.629380664048e-01 -1.646024622337e-01 -1.659383043636e-01 -1.669480245779e-01 --1.676345423563e-01 -1.680012565312e-01 -1.680520362242e-01 -1.677912110810e-01 --1.672235608253e-01 -1.663543041499e-01 -1.651890869686e-01 -1.637339700507e-01 --1.619954160607e-01 -1.599802760282e-01 -1.576957752738e-01 -1.551494988150e-01 --1.523493762806e-01 -1.493036663599e-01 -1.460209408153e-01 -1.425100680861e-01 --1.387801965141e-01 -1.348407372190e-01 -1.307013466549e-01 -1.263719088780e-01 --1.218625175567e-01 -1.171834577541e-01 -1.123451875168e-01 -1.073583192982e-01 --1.022336012511e-01 -9.698189841972e-02 -9.161417386305e-02 -8.614146974220e-02 --8.057488840244e-02 -7.492557348213e-02 -6.920469107972e-02 -6.342341100985e-02 --5.759288817968e-02 -5.172424411555e-02 -4.582854867040e-02 -3.991680194140e-02 --3.399991642702e-02 -2.808869945211e-02 -2.219383588904e-02 -1.632587120224e-02 --1.049519484285e-02 -4.712024019576e-03 1.013612129261e-03 6.671887937845e-03 -1.225319616570e-02 1.774816247850e-02 2.314765943508e-02 2.844281995988e-02 -3.362505028075e-02 3.868604231359e-02 4.361778547572e-02 4.841257791140e-02 -5.306303711374e-02 5.756210992854e-02 6.190308192655e-02 6.607958613189e-02 -7.008561109556e-02 7.391550830408e-02 7.756399891442e-02 8.102617980788e-02 -8.429752895636e-02 8.737391009604e-02 9.025157670448e-02 9.292717527846e-02 -9.539774791121e-02 9.766073416849e-02 9.971397226479e-02 1.015556995416e-01 -1.031845522510e-01 1.045995646497e-01 1.058001674081e-01 1.067861853425e-01 -1.075578344776e-01 1.081157184486e-01 1.084608242530e-01 1.085945173642e-01 -1.085185362177e-01 1.082349860847e-01 1.077463323465e-01 1.070553931859e-01 -1.061653317105e-01 1.050796475268e-01 1.038021677819e-01 1.023370376914e-01 -1.006887105745e-01 9.886193741598e-02 9.686175597539e-02 9.469347946678e-02 -9.236268483039e-02 8.987520061967e-02 8.723709452720e-02 8.445466057366e-02 -8.153440598436e-02 7.848303777837e-02 7.530744909554e-02 7.201470528725e-02 -6.861202979670e-02 6.510678985503e-02 6.150648201971e-02 5.781871758156e-02 -5.405120786723e-02 5.021174946362e-02 4.630820939109e-02 4.234851025184e-02 -3.834061538020e-02 3.429251402104e-02 3.021220656258e-02 2.610768984944e-02 -2.198694260169e-02 1.785791096528e-02 1.372849421856e-02 9.606530659848e-03 -5.499783699821e-03 1.415928182509e-03 -2.637463042043e-03 -6.652932270945e-03 --1.062314980556e-02 -1.454092649123e-02 -1.839922591912e-02 -2.219117627019e-02 --2.591008178228e-02 -2.954943382188e-02 -3.310292154309e-02 -3.656444211695e-02 --3.992811051546e-02 -4.318826883505e-02 -4.633949514569e-02 -4.937661185231e-02 --5.229469355638e-02 -5.508907440640e-02 -5.775535492709e-02 -6.028940831780e-02 --6.268738621221e-02 -6.494572389166e-02 -6.706114494618e-02 -6.903066537788e-02 --7.085159714244e-02 -7.252155112578e-02 -7.403843955353e-02 -7.540047783238e-02 --7.660618582331e-02 -7.765438854746e-02 -7.854421632691e-02 -7.927510436319e-02 --7.984679175757e-02 -8.025931997822e-02 -8.051303078009e-02 -8.060856358457e-02 --8.054685232665e-02 -8.032912177862e-02 -7.995688335978e-02 -7.943193044286e-02 --7.875633316865e-02 -7.793243278106e-02 -7.696283549561e-02 -7.585040591548e-02 --7.459826000950e-02 -7.320975766749e-02 -7.168849484910e-02 -7.003829534268e-02 --6.826320215163e-02 -6.636746852607e-02 -6.435554865831e-02 -6.223208806108e-02 --6.000191364812e-02 -5.767002353679e-02 -5.524157659327e-02 -5.272188174089e-02 --5.011638705261e-02 -4.743066864903e-02 -4.467041942335e-02 -4.184143761519e-02 --3.894961525502e-02 -3.600092650139e-02 -3.300141589301e-02 -2.995718653790e-02 --2.687438826170e-02 -2.375920573747e-02 -2.061784661876e-02 -1.745652969824e-02 --1.428147311335e-02 -1.109888262079e-02 -7.914939961089e-03 -4.735791334448e-03 --1.567536008483e-03 1.583784921576e-03 4.712199600231e-03 7.811816286993e-03 -1.087683402039e-02 1.390155305203e-02 1.688038503253e-02 1.980786293170e-02 -2.267865067598e-02 2.548755248651e-02 2.822952190233e-02 3.089967047326e-02 -3.349327610817e-02 3.600579106488e-02 3.843284956862e-02 4.077027504678e-02 -4.301408696848e-02 4.516050727831e-02 4.720596641413e-02 4.914710890013e-02 -5.098079850668e-02 5.270412296957e-02 5.431439826230e-02 5.580917241542e-02 -5.718622887831e-02 5.844358941941e-02 5.957951656174e-02 6.059251555162e-02 -6.148133585922e-02 6.224497221049e-02 6.288266515097e-02 6.339390114264e-02 -6.377841219622e-02 6.403617504168e-02 6.416740984102e-02 6.417257844790e-02 -6.405238221978e-02 6.380775938872e-02 6.343988199820e-02 6.295015241363e-02 -6.234019941541e-02 6.161187388381e-02 6.076724408590e-02 5.980859057519e-02 -5.873840071572e-02 5.755936284243e-02 5.627436007089e-02 5.488646376947e-02 -5.339892670812e-02 5.181517589800e-02 5.013880513719e-02 4.837356727771e-02 -4.652336622993e-02 4.459224872063e-02 4.258439582145e-02 4.050411426480e-02 -3.835582756459e-02 3.614406695959e-02 3.387346219716e-02 3.154873217566e-02 -2.917467546383e-02 2.675616071553e-02 2.429811699864e-02 2.180552405659e-02 -1.928340252129e-02 1.673680409631e-02 1.417080172878e-02 1.159047978888e-02 -9.000924275244e-03 6.407213064825e-03 3.814406225389e-03 1.227536408694e-03 --1.348400657838e-03 -3.908455563428e-03 -6.447734472963e-03 -8.961408235834e-03 --1.144472132802e-02 -1.389300061125e-02 -1.630166389347e-02 -1.866622827537e-02 --2.098231826799e-02 -2.324567366721e-02 -2.545215717123e-02 -2.759776172772e-02 --2.967861759805e-02 -3.169099912633e-02 -3.363133120187e-02 -3.549619540409e-02 --3.728233581974e-02 -3.898666452275e-02 -4.060626670788e-02 -4.213840546996e-02 --4.358052622122e-02 -4.493026073991e-02 -4.618543084423e-02 -4.734405168610e-02 --4.840433466040e-02 -4.936468992564e-02 -5.022372853315e-02 -5.098026416238e-02 --5.163331446070e-02 -5.218210198706e-02 -5.262605475920e-02 -5.296480640535e-02 --5.319819592169e-02 -5.332626703778e-02 -5.334926719295e-02 -5.326764612724e-02 --5.308205409115e-02 -5.279333967946e-02 -5.240254729470e-02 -5.191091424675e-02 --5.131986749570e-02 -5.063102004568e-02 -4.984616699800e-02 -4.896728127267e-02 --4.799650900776e-02 -4.693616464688e-02 -4.578872572534e-02 -4.455682736635e-02 --4.324325649890e-02 -4.185094580953e-02 -4.038296744078e-02 -3.884252644926e-02 --3.723295403692e-02 -3.555770056945e-02 -3.382032839593e-02 -3.202450448434e-02 --3.017399288780e-02 -2.827264705655e-02 -2.632440201112e-02 -2.433326639210e-02 --2.230331440239e-02 -2.023867765756e-02 -1.814353696050e-02 -1.602211401627e-02 --1.387866310330e-02 -1.171746271703e-02 -9.542807202106e-03 -7.358998389176e-03 --5.170337252312e-03 -2.981115602897e-03 -7.956078357486e-04 1.381937256911e-03 -3.547304588269e-03 5.696320781307e-03 7.824862059854e-03 9.928862011615e-03 -1.200431920884e-02 1.404730467260e-02 1.605396916697e-02 1.802055030983e-02 -1.994337948744e-02 2.181888856018e-02 2.364361634762e-02 2.541421488114e-02 -2.712745541321e-02 2.878023417271e-02 3.036957785620e-02 3.189264884572e-02 -3.334675014412e-02 3.472933001962e-02 3.603798635178e-02 3.727047067176e-02 -3.842469189020e-02 3.949871970692e-02 4.049078769703e-02 4.139929606883e-02 -4.222281408948e-02 4.296008217497e-02 4.361001364187e-02 4.417169611858e-02 -4.464439261484e-02 4.502754224867e-02 4.532076063070e-02 4.552383990645e-02 -4.563674845779e-02 4.565963026541e-02 4.559280393494e-02 4.543676138971e-02 -4.519216623405e-02 4.485985179149e-02 4.444081882282e-02 4.393623292971e-02 -4.334742164992e-02 4.267587125104e-02 4.192322322985e-02 4.109127052535e-02 -4.018195345362e-02 3.919735537355e-02 3.813969809266e-02 3.701133702292e-02 -3.581475609667e-02 3.455256245357e-02 3.322748090938e-02 3.184234821828e-02 -3.040010714028e-02 2.890380032617e-02 2.735656403218e-02 2.576162167727e-02 -2.412227725593e-02 2.244190861979e-02 2.072396064140e-02 1.897193827388e-02 -1.718939952000e-02 1.537994832488e-02 1.354722740593e-02 1.169491103440e-02 -9.826697782416e-03 7.946303249718e-03 6.057452784145e-03 4.163874209975e-03 -2.269290578085e-03 3.774129518360e-04 -1.508066757507e-03 -3.383482892204e-03 --5.245203072812e-03 -7.089635133053e-03 -8.913233951680e-03 -1.071250816855e-02 --1.248402677235e-02 -1.422442554769e-02 -1.593041336966e-02 -1.759877833418e-02 --1.922639371294e-02 -2.081022372206e-02 -2.234732909387e-02 -2.383487244188e-02 --2.527012340929e-02 -2.665046359171e-02 -2.797339122553e-02 -2.923652563365e-02 --3.043761142078e-02 -3.157452241114e-02 -3.264526532177e-02 -3.364798316538e-02 --3.458095837696e-02 -3.544261565918e-02 -3.623152454196e-02 -3.694640165233e-02 --3.758611269111e-02 -3.814967411361e-02 -3.863625451219e-02 -3.904517569888e-02 --3.937591348717e-02 -3.962809817230e-02 -3.980151471027e-02 -3.989610259622e-02 --3.991195544338e-02 -3.984932026455e-02 -3.970859645826e-02 -3.949033450291e-02 --3.919523436204e-02 -3.882414360509e-02 -3.837805524800e-02 -3.785810531897e-02 --3.726557015485e-02 -3.660186343440e-02 -3.586853295496e-02 -3.506725715967e-02 --3.419984142286e-02 -3.326821410135e-02 -3.227442236048e-02 -3.122062778326e-02 --3.010910177222e-02 -2.894222075334e-02 -2.772246119204e-02 -2.645239443157e-02 --2.513468136424e-02 -2.377206694657e-02 -2.236737456924e-02 -2.092350029343e-02 --1.944340696505e-02 -1.793011821868e-02 -1.638671238317e-02 -1.481631630111e-02 --1.322209907433e-02 -1.160726574782e-02 -9.975050944547e-03 -8.328712463620e-03 --6.671524854327e-03 -5.006772978614e-03 -3.337745574486e-03 -1.667728832823e-03 --5.395180400398e-15 1.662178981316e-03 3.315567781108e-03 4.956953928423e-03 -6.583158983546e-03 - Type L N - 0 1 8 -0.000000000000e+00 1.655791103063e-02 3.309130092512e-02 4.957569177821e-02 -6.598669206340e-02 8.230003961507e-02 9.849164436217e-02 1.145376307318e-01 -1.304143796409e-01 1.460985699965e-01 1.615672196230e-01 1.767977255416e-01 -1.917679035205e-01 2.064560268243e-01 2.208408640859e-01 2.349017162306e-01 -2.486184523800e-01 2.619715446705e-01 2.749421019171e-01 2.875119020609e-01 -2.996634233391e-01 3.113798741173e-01 3.226452213293e-01 3.334442174714e-01 -3.437624261002e-01 3.535862457864e-01 3.629029324815e-01 3.717006202560e-01 -3.799683403704e-01 3.876960386461e-01 3.948745911041e-01 4.014958178447e-01 -4.075524951436e-01 4.130383657444e-01 4.179481473306e-01 4.222775391635e-01 -4.260232268770e-01 4.291828854229e-01 4.317551801646e-01 4.337397661211e-01 -4.351372853661e-01 4.359493625901e-01 4.361785988394e-01 4.358285634475e-01 -4.349037841774e-01 4.334097355995e-01 4.313528257302e-01 4.287403809622e-01 -4.255806293188e-01 4.218826820699e-01 4.176565137483e-01 4.129129406093e-01 -4.076635975805e-01 4.019209137486e-01 3.956980864370e-01 3.890090539261e-01 -3.818684668752e-01 3.742916585036e-01 3.662946135934e-01 3.578939363780e-01 -3.491068173809e-01 3.399509992743e-01 3.304447418252e-01 3.206067860027e-01 -3.104563173158e-01 3.000129284597e-01 2.892965813420e-01 2.783275685685e-01 -2.671264744631e-01 2.557141357010e-01 2.441116016337e-01 2.323400943838e-01 -2.204209687893e-01 2.083756722763e-01 1.962257047393e-01 1.839925785072e-01 -1.716977784745e-01 1.593627224744e-01 1.470087219714e-01 1.346569431490e-01 -1.223283684690e-01 1.100437587743e-01 9.782361600920e-02 8.568814662840e-02 -7.365722576277e-02 6.175036221118e-02 4.998666432326e-02 3.838480683706e-02 -2.696299873338e-02 1.573895216584e-02 4.729852523970e-03 -6.047670316608e-03 --1.657756950472e-02 -2.684440743599e-02 -3.683338064054e-02 -4.653034329268e-02 --5.592182930193e-02 -6.499507294809e-02 -7.373802802593e-02 -8.213938546823e-02 --9.018858941940e-02 -9.787585173473e-02 -1.051921648841e-01 -1.121293132420e-01 --1.186798827491e-01 -1.248372689340e-01 -1.305956832882e-01 -1.359501579873e-01 --1.408965489612e-01 -1.454315373114e-01 -1.495526290843e-01 -1.532581534076e-01 --1.565472590033e-01 -1.594199090916e-01 -1.618768747062e-01 -1.639197264415e-01 --1.655508246575e-01 -1.667733081709e-01 -1.675910814631e-01 -1.680088004392e-01 --1.680318567754e-01 -1.676663608940e-01 -1.669191236090e-01 -1.657976364858e-01 --1.643100509646e-01 -1.624651562948e-01 -1.602723563338e-01 -1.577416452637e-01 --1.548835822823e-01 -1.517092653254e-01 -1.482303038812e-01 -1.444587909565e-01 --1.404072742592e-01 -1.360887266589e-01 -1.315165159935e-01 -1.267043742846e-01 --1.216663664322e-01 -1.164168584543e-01 -1.109704853407e-01 -1.053421185900e-01 --9.954683349864e-02 -9.359987627215e-02 -8.751663102686e-02 -8.131258675264e-02 --7.500330430489e-02 -6.860438349469e-02 -6.213143034506e-02 -5.560002458081e-02 --4.902568741833e-02 -4.242384972091e-02 -3.580982058406e-02 -2.919875641380e-02 --2.260563055994e-02 -1.604520356440e-02 -9.531994083388e-03 -3.080250540227e-03 -3.296076436016e-03 9.583360733074e-03 1.576832658815e-02 2.183807348183e-02 -2.778010004672e-02 3.358232694644e-02 3.923311868330e-02 4.472130429523e-02 -5.003619690538e-02 5.516761209014e-02 6.010588503451e-02 6.484188644590e-02 -6.936703720085e-02 7.367332170163e-02 7.775329992268e-02 8.160011812990e-02 -8.520751825843e-02 8.856984593796e-02 9.168205715707e-02 9.453972356161e-02 -9.713903638452e-02 9.947680900809e-02 1.015504781620e-01 1.033581037636e-01 -1.048983674105e-01 1.061705695366e-01 1.071746252480e-01 1.079110588552e-01 -1.083809971237e-01 1.085861612649e-01 1.085288576940e-01 1.082119675829e-01 -1.076389352390e-01 1.068137553428e-01 1.057409590805e-01 1.044255992085e-01 -1.028732340897e-01 1.010899107443e-01 9.908214695680e-02 9.685691248719e-02 -9.442160943152e-02 9.178405178158e-02 8.895244423362e-02 8.593536029779e-02 -8.274171976109e-02 7.938076555768e-02 7.586204010149e-02 7.219536113690e-02 -6.839079716390e-02 6.445864249493e-02 6.040939200082e-02 5.625371560381e-02 -5.200243257576e-02 4.766648569971e-02 4.325691535298e-02 3.878483356985e-02 -3.426139814131e-02 2.969778680940e-02 2.510517161269e-02 2.049469343892e-02 -1.587743684027e-02 1.126440516526e-02 6.666496060902e-03 2.094477397162e-03 --2.441036335399e-03 -6.929607105114e-03 -1.136099584778e-02 -1.572518435772e-02 --2.001239651645e-02 -2.421311881573e-02 -2.831812013375e-02 -3.231847072490e-02 --3.620556038587e-02 -3.997111576244e-02 -4.360721676405e-02 -4.710631205476e-02 --5.046123359210e-02 -5.366521018711e-02 -5.671188006150e-02 -5.959530238024e-02 --6.230996774016e-02 -6.485080759772e-02 -6.721320262165e-02 -6.939298995846e-02 --7.138646940160e-02 -7.319040845732e-02 -7.480204630292e-02 -7.621909663577e-02 --7.743974941355e-02 -7.846267148922e-02 -7.928700614622e-02 -7.991237154210e-02 --8.033885807125e-02 -8.056702465956e-02 -8.059789400636e-02 -8.043294679127e-02 --8.007411486574e-02 -7.952377345131e-02 -7.878473236882e-02 -7.786022632466e-02 --7.675390428232e-02 -7.546981794938e-02 -7.401240941182e-02 -7.238649794943e-02 --7.059726606763e-02 -6.865024478271e-02 -6.655129819886e-02 -6.430660741689e-02 --6.192265381581e-02 -5.940620174943e-02 -5.676428070158e-02 -5.400416694426e-02 --5.113336474404e-02 -4.815958716276e-02 -4.509073649924e-02 -4.193488441934e-02 --3.870025182206e-02 -3.539518848972e-02 -3.202815257059e-02 -2.860768994224e-02 --2.514241350411e-02 -2.164098244758e-02 -1.811208155151e-02 -1.456440055113e-02 --1.100661362739e-02 -7.447359063791e-03 -3.895219116495e-03 -3.587001433476e-04 -3.153786963840e-03 6.633946000119e-03 1.007361427884e-02 1.346478103227e-02 -1.679960534131e-02 2.007043355533e-02 2.326981616478e-02 2.639052409048e-02 -2.942556435520e-02 3.236819510471e-02 3.521193994704e-02 3.795060158074e-02 -4.057827468431e-02 4.308935804128e-02 4.547856587701e-02 4.774093838528e-02 -4.987185142497e-02 5.186702536882e-02 5.372253308861e-02 5.543480706295e-02 -5.700064559627e-02 5.841721813936e-02 5.968206970430e-02 6.079312436851e-02 -6.174868786500e-02 6.254744925770e-02 6.318848170351e-02 6.367124230392e-02 -6.399557105220e-02 6.416168888325e-02 6.417019483595e-02 6.402206233961e-02 -6.371863463793e-02 6.326161936624e-02 6.265308229920e-02 6.189544028845e-02 -6.099145341102e-02 5.994421635153e-02 5.875714904241e-02 5.743398658838e-02 -5.597876850265e-02 5.439582728400e-02 5.268977636510e-02 5.086549746396e-02 -4.892812737133e-02 4.688304420838e-02 4.473585318977e-02 4.249237192826e-02 -4.015861531808e-02 3.774078003476e-02 3.524522869016e-02 3.267847368179e-02 -3.004716077609e-02 2.735805246603e-02 2.461801114311e-02 2.183398212490e-02 -1.901297657847e-02 1.616205438104e-02 1.328830695820e-02 1.039884014080e-02 -7.500757080491e-03 4.601141264318e-03 1.707039667804e-03 -1.174553914293e-03 --4.036715321065e-03 -6.872606224583e-03 -9.675490038058e-03 -1.243874749688e-02 --1.515589187733e-02 -1.782058381887e-02 -2.042664571674e-02 -2.296807565325e-02 --2.543906083690e-02 -2.783399052001e-02 -3.014746836701e-02 -3.237432424670e-02 --3.450962542356e-02 -3.654868712452e-02 -3.848708245922e-02 -4.032065167364e-02 --4.204551071828e-02 -4.365805911411e-02 -4.515498710107e-02 -4.653328205570e-02 --4.779023416631e-02 -4.892344135592e-02 -4.993081344491e-02 -5.081057554727e-02 --5.156127069620e-02 -5.218176169658e-02 -5.267123220359e-02 -5.302918702888e-02 --5.325545167719e-02 -5.335017111832e-02 -5.331380780109e-02 -5.314713891769e-02 --5.285125292855e-02 -5.242754535957e-02 -5.187771388525e-02 -5.120375271283e-02 --5.040794628419e-02 -4.949286231375e-02 -4.846134418223e-02 -4.731650270732e-02 --4.606170731395e-02 -4.470057662806e-02 -4.323696851891e-02 -4.167496961652e-02 --4.001888433139e-02 -3.827322340542e-02 -3.644269202321e-02 -3.453217751437e-02 --3.254673667809e-02 -3.049158276193e-02 -2.837207212753e-02 -2.619369063662e-02 --2.396203979110e-02 -2.168282266139e-02 -1.936182963770e-02 -1.700492403911e-02 --1.461802761544e-02 -1.220710597707e-02 -9.778153987978e-03 -7.337181156879e-03 --4.890197061645e-03 -2.443196841538e-03 -2.146791744090e-06 2.427029905829e-03 -4.838467281943e-03 7.226370476656e-03 9.585029400815e-03 1.190883213079e-02 -1.419227800556e-02 1.642999039615e-02 1.861672911823e-02 2.074740245990e-02 -2.281707879732e-02 2.482099777245e-02 2.675458100782e-02 2.861344233493e-02 -3.039339751367e-02 3.209047342193e-02 3.370091669553e-02 3.522120180033e-02 -3.664803851944e-02 3.797837884032e-02 3.920942322779e-02 4.033862627058e-02 -4.136370169057e-02 4.228262670554e-02 4.309364573766e-02 4.379527346174e-02 -4.438629718867e-02 4.486577858132e-02 4.523305470151e-02 4.548773838844e-02 -4.562971797067e-02 4.565915631493e-02 4.557648921710e-02 4.538242314188e-02 -4.507793231948e-02 4.466425520881e-02 4.414289033863e-02 4.351559153905e-02 -4.278436257749e-02 4.195145121455e-02 4.101934269644e-02 3.999075270200e-02 -3.886861976354e-02 3.765609718199e-02 3.635654445778e-02 3.497351826022e-02 -3.351076295890e-02 3.197220074180e-02 3.036192134554e-02 2.868417142405e-02 -2.694334358287e-02 2.514396510671e-02 2.329068640869e-02 2.138826923032e-02 -1.944157462145e-02 1.745555073027e-02 1.543522043333e-02 1.338566883613e-02 -1.131203067490e-02 9.219477650305e-03 7.113205723915e-03 4.998422408071e-03 -2.880334079970e-03 7.641333503272e-04 -1.345013483117e-03 -3.441978867347e-03 --5.521686281563e-03 -7.579122351377e-03 -9.609348761184e-03 -1.160751393678e-02 --1.356886447099e-02 -1.548875626571e-02 -1.736266536469e-02 -1.918619845208e-02 --2.095510299273e-02 -2.266527699123e-02 -2.431277834758e-02 -2.589383378856e-02 --2.740484735483e-02 -2.884240842504e-02 -3.020329925943e-02 -3.148450204645e-02 --3.268320543748e-02 -3.379681055569e-02 -3.482293646675e-02 -3.575942509999e-02 --3.660434561055e-02 -3.735599817388e-02 -3.801291720575e-02 -3.857387400208e-02 --3.903787879458e-02 -3.940418221928e-02 -3.967227619680e-02 -3.984189422432e-02 --3.991301108094e-02 -3.988584194924e-02 -3.976084095732e-02 -3.953869914728e-02 --3.922034187691e-02 -3.880692566323e-02 -3.829983447740e-02 -3.770067550228e-02 --3.701127436464e-02 -3.623366985568e-02 -3.537010815444e-02 -3.442303657002e-02 --3.339509681946e-02 -3.228911785923e-02 -3.110810828940e-02 -2.985524835046e-02 --2.853388153354e-02 -2.714750582588e-02 -2.569976461398e-02 -2.419443726774e-02 --2.263542942962e-02 -2.102676303320e-02 -1.937256607656e-02 -1.767706217584e-02 --1.594455992534e-02 -1.417944209042e-02 -1.238615466005e-02 -1.056919578607e-02 --8.733104636253e-03 -6.882450188568e-03 -5.021819993921e-03 -3.155808934758e-03 --1.289008006752e-03 5.740068493430e-04 2.428685838783e-03 4.270516300273e-03 -6.095033563517e-03 7.897831651018e-03 9.674573798760e-03 1.142100277091e-02 -1.313295094430e-02 1.480635013898e-02 1.643724117206e-02 1.802178311248e-02 -1.955626221549e-02 2.103710051615e-02 2.246086406235e-02 2.382427076859e-02 -2.512419787273e-02 2.635768897918e-02 2.752196067273e-02 2.861440868857e-02 -2.963261362498e-02 3.057434618660e-02 3.143757194694e-02 3.222045562041e-02 -3.292136483523e-02 3.353887339954e-02 3.407176405486e-02 3.451903071165e-02 -3.487988016366e-02 3.515373327833e-02 3.534022566241e-02 3.543920780289e-02 -3.545074468464e-02 3.537511488750e-02 3.521280916677e-02 3.496452852234e-02 -3.463118176278e-02 3.421388257209e-02 3.371394608787e-02 3.313288500087e-02 -3.247240518699e-02 3.173440088389e-02 3.092094942553e-02 3.003430554875e-02 -2.907689528729e-02 2.805130946938e-02 2.696029683603e-02 2.580675679798e-02 -2.459373185012e-02 2.332439966292e-02 2.200206487120e-02 2.063015058108e-02 -1.921218961681e-02 1.775181552949e-02 1.625275339036e-02 1.471881039172e-02 -1.315386627900e-02 1.156186363765e-02 9.946798059158e-03 8.312708210192e-03 -6.663665829604e-03 5.003765677650e-03 3.337115462101e-03 1.667825765779e-03 -3.234571482622e-15 -1.662275591703e-03 -3.314941855525e-03 -4.953976550982e-03 --6.575404052716e-03 - Type L N - 0 1 9 -0.000000000000e+00 1.830358174210e-02 3.657403808490e-02 5.477831499715e-02 -7.288350101641e-02 9.085689811520e-02 1.086660920666e-01 1.262790221443e-01 -1.436640499936e-01 1.607900275125e-01 1.776263635835e-01 1.941430895004e-01 -2.103109229381e-01 2.261013303140e-01 2.414865873988e-01 2.564398380332e-01 -2.709351508156e-01 2.849475736296e-01 2.984531858842e-01 3.114291483481e-01 -3.238537504622e-01 3.357064550233e-01 3.469679401358e-01 3.576201383384e-01 -3.676462728158e-01 3.770308906151e-01 3.857598927944e-01 3.938205614351e-01 -4.012015834617e-01 4.078930712177e-01 4.138865797541e-01 4.191751207972e-01 -4.237531733675e-01 4.276166910331e-01 4.307631057854e-01 4.331913285360e-01 -4.349017462416e-01 4.358962156689e-01 4.361780538247e-01 4.357520250791e-01 -4.346243250218e-01 4.328025610972e-01 4.302957300717e-01 4.271141923958e-01 -4.232696435290e-01 4.187750823041e-01 4.136447764136e-01 4.078942251090e-01 -4.015401192086e-01 3.946002985174e-01 3.870937067674e-01 3.790403441931e-01 -3.704612178630e-01 3.613782898909e-01 3.518144236589e-01 3.417933281848e-01 -3.313395007746e-01 3.204781681009e-01 3.092352258544e-01 2.976371771166e-01 -2.857110696066e-01 2.734844319544e-01 2.609852091583e-01 2.482416973830e-01 -2.352824782561e-01 2.221363528245e-01 2.088322753284e-01 1.953992869526e-01 -1.818664497150e-01 1.682627806506e-01 1.546171864455e-01 1.409583986801e-01 -1.273149098309e-01 1.137149101839e-01 1.001862258071e-01 8.675625772682e-02 -7.345192244858e-02 6.029959396153e-02 4.732504735816e-02 3.455340419908e-02 -2.200907974642e-02 9.715732184933e-03 -2.303786055728e-03 -1.402747476984e-02 --2.543423013342e-02 -3.650388645536e-02 -4.721725543241e-02 -5.755616282508e-02 --6.750348247854e-02 -7.704316761906e-02 -8.616027936410e-02 -9.484101239104e-02 --1.030727177169e-01 -1.108439225488e-01 -1.181443471731e-01 -1.249649188563e-01 --1.312977827426e-01 -1.371363097361e-01 -1.424751013654e-01 -1.473099916373e-01 --1.516380458899e-01 -1.554575566670e-01 -1.587680366408e-01 -1.615702086167e-01 --1.638659926636e-01 -1.656584904169e-01 -1.669519666121e-01 -1.677518279090e-01 --1.680645990773e-01 -1.678978966182e-01 -1.672603999032e-01 -1.661618199179e-01 --1.646128657023e-01 -1.626252085877e-01 -1.602114443317e-01 -1.573850532599e-01 --1.541603585270e-01 -1.505524826134e-01 -1.465773021787e-01 -1.422514013949e-01 --1.375920238872e-01 -1.326170234127e-01 -1.273448134092e-01 -1.217943155488e-01 --1.159849074327e-01 -1.099363695658e-01 -1.036688317492e-01 -9.720271903118e-02 --9.055869735635e-02 -8.375761905255e-02 -7.682046829625e-02 -6.976830669444e-02 --6.262221912132e-02 -5.540325994599e-02 -4.813239978587e-02 -4.083047291815e-02 --3.351812547938e-02 -2.621576458043e-02 -1.894350846070e-02 -1.172113780254e-02 --4.568048322596e-03 2.496795246826e-03 9.454903677738e-03 1.628830616362e-02 -2.297959153439e-02 2.951194767482e-02 3.586919905734e-02 4.203584230544e-02 -4.799707970983e-02 5.373885062489e-02 5.924786067938e-02 6.451160874110e-02 -6.951841158171e-02 7.425742619399e-02 7.871866972059e-02 8.289303695950e-02 -8.677231541825e-02 9.034919789536e-02 9.361729257421e-02 9.657113062115e-02 -9.920617128620e-02 1.015188045114e-01 1.035063510584e-01 1.051670601729e-01 -1.065001048107e-01 1.075055744564e-01 1.081844655702e-01 1.085386697071e-01 -1.085709593568e-01 1.082849715578e-01 1.076851893481e-01 1.067769211146e-01 -1.055662779148e-01 1.040601488446e-01 1.022661745321e-01 1.001927188440e-01 -9.784883889096e-02 9.524425342656e-02 9.238930973593e-02 8.929494911340e-02 -8.597267103297e-02 8.243449611708e-02 7.869292801214e-02 7.476091428152e-02 -7.065180642847e-02 6.637931916320e-02 6.195748902942e-02 5.740063250685e-02 -5.272330370674e-02 4.794025177762e-02 4.306637813898e-02 3.811669365958e-02 -3.310627589716e-02 2.805022651502e-02 2.296362898958e-02 1.786150672202e-02 -1.275878166461e-02 7.670233570794e-03 2.610459975239e-03 -2.406162992260e-03 --7.365518858348e-03 -1.225378802552e-02 -1.705748386522e-02 -2.176348759424e-02 --2.635908184775e-02 -3.083198286669e-02 -3.517037122126e-02 -3.936292099701e-02 --4.339882737451e-02 -4.726783253870e-02 -5.096024985851e-02 -5.446698628319e-02 --5.777956290620e-02 -6.089013365359e-02 -6.379150205870e-02 -6.647713609080e-02 --6.894118101077e-02 -7.117847023244e-02 -7.318453417395e-02 -7.495560708904e-02 --7.648863187394e-02 -7.778126285084e-02 -7.883186653490e-02 -7.963952039699e-02 --8.020400963978e-02 -8.052582201049e-02 -8.060614067853e-02 -8.044683521154e-02 --8.005045068863e-02 -7.942019499406e-02 -7.855992433988e-02 -7.747412707017e-02 --7.616790580441e-02 -7.464695798128e-02 -7.291755486873e-02 -7.098651910953e-02 --6.886120087552e-02 -6.654945270702e-02 -6.405960311692e-02 -6.140042904224e-02 --5.858112722820e-02 -5.561128463271e-02 -5.250084794108e-02 -4.926009228271e-02 --4.589958924332e-02 -4.243017426745e-02 -3.886291354731e-02 -3.520907049454e-02 --3.148007189251e-02 -2.768747382652e-02 -2.384292748968e-02 -1.995814496188e-02 --1.604486505853e-02 -1.211481934533e-02 -8.179698413918e-03 -4.251118512063e-03 --3.405886206150e-04 3.540521932676e-03 7.381015234165e-03 1.116989583429e-02 -1.489640100313e-02 1.855003011098e-02 2.212057305618e-02 2.559813766586e-02 -2.897317599822e-02 3.223650947904e-02 3.537935280821e-02 3.839333657641e-02 -4.127052853591e-02 4.400345347347e-02 4.658511163778e-02 4.900899567831e-02 -5.126910605653e-02 5.335996489552e-02 5.527662823829e-02 5.701469668990e-02 -5.857032442323e-02 5.994022653299e-02 6.112168472734e-02 6.211255135130e-02 -6.291125174084e-02 6.351678491138e-02 6.392872258900e-02 6.414720659753e-02 -6.417294461913e-02 6.400720435046e-02 6.365180608122e-02 6.310911372586e-02 -6.238202434376e-02 6.147395618708e-02 6.038883531963e-02 5.913108085371e-02 -5.770558885585e-02 5.611771497557e-02 5.437325585476e-02 5.247842937856e-02 -5.043985383133e-02 4.826452602414e-02 4.595979846304e-02 4.353335562925e-02 -4.099318944490e-02 3.834757399986e-02 3.560503961655e-02 3.277434633158e-02 -2.986445687386e-02 2.688450922004e-02 2.384378880891e-02 2.075170049681e-02 -1.761774033636e-02 1.445146726111e-02 1.126247475819e-02 8.060362610876e-03 -4.854708792171e-03 1.655041589786e-03 -1.529187958409e-03 -4.688633240530e-03 --7.814078782147e-03 -1.089646641850e-02 -1.392692085488e-02 -1.689677454470e-02 --1.979759181718e-02 -2.262119218908e-02 -2.535967279759e-02 -2.800542989440e-02 --3.055117934399e-02 -3.298997607227e-02 -3.531523241523e-02 -3.752073532041e-02 --3.960066235785e-02 -4.154959650055e-02 -4.336253963851e-02 -4.503492479416e-02 --4.656262701073e-02 -4.794197288940e-02 -4.916974875494e-02 -5.024320743357e-02 --5.116007363092e-02 -5.191854790218e-02 -5.251730921045e-02 -5.295551607350e-02 --5.323280630334e-02 -5.334929534672e-02 -5.330557323923e-02 -5.310270018885e-02 --5.274220080962e-02 -5.222605702894e-02 -5.155669969654e-02 -5.073699892625e-02 --4.977025320544e-02 -4.866017731036e-02 -4.741088906890e-02 -4.602689501520e-02 --4.451307498402e-02 -4.287466569502e-02 -4.111724338018e-02 -3.924670550999e-02 --3.726925167637e-02 -3.519136369229e-02 -3.301978497043e-02 -3.076149924450e-02 --2.842370869875e-02 -2.601381157268e-02 -2.353937930868e-02 -2.100813331197e-02 --1.842792139238e-02 -1.580669395853e-02 -1.315248003518e-02 -1.047336317458e-02 --7.777457332796e-03 -5.072882781731e-03 -2.367742126867e-03 3.299034995427e-04 -3.012058001219e-03 5.670813568846e-03 8.298373552893e-03 1.088707489325e-02 -1.342941004226e-02 1.591804831964e-02 1.834585663938e-02 2.070591955138e-02 -2.299155854231e-02 2.519635054291e-02 2.731414559150e-02 2.933908360597e-02 -3.126561021970e-02 3.308849163934e-02 3.480282848584e-02 3.640406858313e-02 -3.788801866191e-02 3.925085494970e-02 4.048913262121e-02 4.159979408713e-02 -4.258017610231e-02 4.342801567831e-02 4.414145478860e-02 4.471904385849e-02 -4.515974403509e-02 4.546292823669e-02 4.562838098410e-02 4.565629702020e-02 -4.554727872752e-02 4.530233235705e-02 4.492286308491e-02 4.441066891690e-02 -4.376793346419e-02 4.299721761665e-02 4.210145014337e-02 4.108391725303e-02 -3.994825114943e-02 3.869841762072e-02 3.733870270295e-02 3.587369846167e-02 -3.430828793717e-02 3.264762930170e-02 3.089713927853e-02 2.906247587534e-02 -2.714952048553e-02 2.516435941306e-02 2.311326487786e-02 2.100267555991e-02 -1.883917674134e-02 1.662948010682e-02 1.438040326324e-02 1.209884904005e-02 -9.791784632412e-03 7.466220649033e-03 5.129190126911e-03 2.787727574883e-03 -4.488481075623e-04 -1.880473269300e-03 -4.193322161681e-03 -6.482865018936e-03 --8.742369035817e-03 -1.096522166770e-02 -1.314494970317e-02 -1.527523783979e-02 --1.734994671037e-02 -1.936313030911e-02 -2.130905276877e-02 -2.318220444232e-02 --2.497731724460e-02 -2.668937921196e-02 -2.831364824041e-02 -2.984566496514e-02 --3.128126474734e-02 -3.261658873654e-02 -3.384809397998e-02 -3.497256255322e-02 --3.598710968913e-02 -3.688919088565e-02 -3.767660797564e-02 -3.834751414526e-02 --3.890041789059e-02 -3.933418590523e-02 -3.964804489491e-02 -3.984158231818e-02 --3.991474605563e-02 -3.986784301293e-02 -3.970153666648e-02 -3.941684356308e-02 --3.901512878856e-02 -3.849810042285e-02 -3.786780300217e-02 -3.712661001169e-02 --3.627721543499e-02 -3.532262438894e-02 -3.426614287566e-02 -3.311136668538e-02 --3.186216948641e-02 -3.052269014089e-02 -2.909731928684e-02 -2.759068522925e-02 --2.600763918471e-02 -2.435323992584e-02 -2.263273787325e-02 -2.085155868453e-02 --1.901528639060e-02 -1.712964613127e-02 -1.520048654261e-02 -1.323376184967e-02 --1.123551371869e-02 -9.211852923402e-03 -7.168940880532e-03 -5.112971109536e-03 --3.050150671791e-03 -9.866816442555e-04 1.071257317729e-03 3.117529274252e-03 -5.146057097701e-03 7.150841319863e-03 9.125977677427e-03 1.106567430511e-02 -1.296426852686e-02 1.481624319706e-02 1.661624254499e-02 1.835908747760e-02 -2.003979029747e-02 2.165356879447e-02 2.319585967185e-02 2.466233126973e-02 -2.604889555069e-02 2.735171931510e-02 2.856723461572e-02 2.969214834385e-02 -3.072345096179e-02 3.165842435904e-02 3.249464881219e-02 3.323000903138e-02 -3.386269927885e-02 3.439122754791e-02 3.481441879354e-02 3.513141720857e-02 -3.534168754237e-02 3.544501546162e-02 3.544150695593e-02 3.533158679331e-02 -3.511599603395e-02 3.479578861309e-02 3.437232700647e-02 3.384727699485e-02 -3.322260154632e-02 3.250055383794e-02 3.168366944046e-02 3.077475769253e-02 -2.977689229300e-02 2.869340114195e-02 2.752785546354e-02 2.628405824548e-02 -2.496603203204e-02 2.357800610901e-02 2.212440312114e-02 2.060982516361e-02 -1.903903939084e-02 1.741696318714e-02 1.574864894472e-02 1.403926849582e-02 -1.229409724626e-02 1.051849805872e-02 8.717904934536e-03 6.897806543011e-03 -5.063729647956e-03 3.221222480840e-03 1.375838110240e-03 -4.668821430431e-04 --2.301425196093e-03 -4.122322550559e-03 -5.924166447871e-03 -7.701625785658e-03 --9.449461748942e-03 -1.116254311066e-02 -1.283586115725e-02 -1.446454419619e-02 --1.604387160401e-02 -1.756928737443e-02 -1.903641312830e-02 -2.044106054845e-02 --2.177924320460e-02 -2.304718773514e-02 -2.424134435498e-02 -2.535839666045e-02 --2.639527070462e-02 -2.734914331846e-02 -2.821744965592e-02 -2.899788994295e-02 --2.968843541330e-02 -3.028733341619e-02 -3.079311168353e-02 -3.120458174679e-02 --3.152084149646e-02 -3.174127687922e-02 -3.186556273085e-02 -3.189366274530e-02 --3.182582858295e-02 -3.166259812364e-02 -3.140479287259e-02 -3.105351452977e-02 --3.061014073575e-02 -3.007632000953e-02 -2.945396589599e-02 -2.874525034323e-02 --2.795259633192e-02 -2.707866978123e-02 -2.612637075772e-02 -2.509882401582e-02 --2.399936890015e-02 -2.283154864200e-02 -2.159909908372e-02 -2.030593686649e-02 --1.895614711856e-02 -1.755397068200e-02 -1.610379091781e-02 -1.461012012981e-02 --1.307758564908e-02 -1.151091562159e-02 -9.914924542104e-03 -8.294498578460e-03 --6.654580730483e-03 -5.000155868316e-03 -3.336235695113e-03 -1.667843679102e-03 --1.539767840045e-15 1.662293445418e-03 3.314067934178e-03 4.950402660314e-03 -6.566439287048e-03 - Type L N - 0 1 10 -0.000000000000e+00 2.004864164329e-02 4.005374818686e-02 5.997189707219e-02 -7.975989050636e-02 9.937486705384e-02 1.187744122816e-01 1.379166681467e-01 -1.567604408180e-01 1.752653066309e-01 1.933917158755e-01 2.111010941297e-01 -2.283559408516e-01 2.451199249570e-01 2.613579771150e-01 2.770363785041e-01 -2.921228457845e-01 3.065866120476e-01 3.203985035237e-01 3.335310118337e-01 -3.459583615878e-01 3.576565731488e-01 3.686035203875e-01 3.787789832775e-01 -3.881646951877e-01 3.967443847496e-01 4.045038121897e-01 4.114308000356e-01 -4.175152581199e-01 4.227492028224e-01 4.271267705091e-01 4.306442251418e-01 -4.332999600511e-01 4.350944938804e-01 4.360304607265e-01 4.361125945205e-01 -4.353477077066e-01 4.337446642945e-01 4.313143473783e-01 4.280696212279e-01 -4.240252880779e-01 4.191980397498e-01 4.136064042641e-01 4.072706876057e-01 -4.002129108269e-01 3.924567426797e-01 3.840274279856e-01 3.749517119611e-01 -3.652577607274e-01 3.549750782466e-01 3.441344199325e-01 3.327677031962e-01 -3.209079151926e-01 3.085890180434e-01 2.958458518164e-01 2.827140355489e-01 -2.692298666055e-01 2.554302186671e-01 2.413524386478e-01 2.270342428415e-01 -2.125136125998e-01 1.978286898425e-01 1.830176727020e-01 1.681187116030e-01 -1.531698060731e-01 1.382087025797e-01 1.232727936826e-01 1.083990187879e-01 -9.362376678147e-02 7.898278081579e-02 6.451106551345e-02 5.024279684566e-02 -3.621123493252e-02 2.244864000347e-02 8.986191745619e-03 -4.146087743652e-03 --1.691940719460e-02 -2.930627540092e-02 -4.128056627346e-02 -5.281757954507e-02 --6.389409697353e-02 -7.448843390387e-02 -8.458048606534e-02 -9.415177149377e-02 --1.031854674845e-01 -1.116664424970e-01 -1.195812829467e-01 -1.269183148374e-01 --1.336676201993e-01 -1.398210483195e-01 -1.453722217596e-01 -1.503165371794e-01 --1.546511609934e-01 -1.583750199077e-01 -1.614887863972e-01 -1.639948591984e-01 --1.658973389091e-01 -1.672019987983e-01 -1.679162509452e-01 -1.680491078393e-01 --1.676111395862e-01 -1.666144268762e-01 -1.650725098854e-01 -1.630003332896e-01 --1.604141875824e-01 -1.573316468998e-01 -1.537715035604e-01 -1.497536995435e-01 --1.452992551303e-01 -1.404301949456e-01 -1.351694716394e-01 -1.295408874580e-01 --1.235690139552e-01 -1.172791101008e-01 -1.106970390463e-01 -1.038491838104e-01 --9.676236214780e-02 -8.946374086651e-02 -8.198074985927e-02 -7.434099611248e-02 --6.657217795589e-02 -5.870199981310e-02 -5.075808771010e-02 -4.276790579488e-02 --3.475867411658e-02 -2.675728790703e-02 -1.879023860142e-02 -1.088353682792e-02 --3.062637588332e-03 4.647632156173e-03 1.222314328917e-02 1.964053153738e-02 -2.687726147770e-02 3.391168737783e-02 4.072311070645e-02 4.729183416044e-02 -5.359921206845e-02 5.962769704250e-02 6.536088276179e-02 7.078354278585e-02 -7.588166530734e-02 8.064248376806e-02 8.505450327531e-02 8.910752276941e-02 -9.279265290674e-02 9.610232963664e-02 9.903032346394e-02 1.015717444029e-01 -1.037230426415e-01 1.054820049488e-01 1.068477468715e-01 1.078207007777e-01 -1.084025998205e-01 1.085964579047e-01 1.084065457533e-01 1.078383631812e-01 -1.068986076957e-01 1.055951395535e-01 1.039369434151e-01 1.019340867459e-01 -9.959767512544e-02 9.693980463058e-02 9.397351147173e-02 9.071271906439e-02 -8.717218272780e-02 8.336743220780e-02 7.931471222655e-02 7.503092126704e-02 -7.053354880411e-02 6.584061119752e-02 6.097058646507e-02 5.594234815611e-02 -5.077509854694e-02 4.548830138022e-02 4.010161437038e-02 3.463482169635e-02 -2.910776670111e-02 2.354028501549e-02 1.795213832078e-02 1.236294896080e-02 -6.792135610295e-03 1.258850200934e-03 -4.218083698605e-03 -9.620230858748e-03 --1.492960253797e-02 -2.012871262865e-02 -2.520063163165e-02 -3.012903829971e-02 --3.489826879872e-02 -3.949336324477e-02 -4.390010948483e-02 -4.810508399883e-02 --5.209568981097e-02 -5.586019130913e-02 -5.938774588175e-02 -6.266843229296e-02 --6.569327572773e-02 -6.845426945066e-02 -7.094439303319e-02 -7.315762711593e-02 --7.508896468429e-02 -7.673441884752e-02 -7.809102712250e-02 -7.915685223563e-02 --7.993097946722e-02 -8.041351057425e-02 -8.060555433844e-02 -8.050921379745e-02 --8.012757022741e-02 -7.946466395572e-02 -7.852547209259e-02 -7.731588327969e-02 --7.584266956346e-02 -7.411345550934e-02 -7.213668468178e-02 -6.992158362252e-02 --6.747812346730e-02 -6.481697934799e-02 -6.194948773330e-02 -5.888760186748e-02 --5.564384547130e-02 -5.223126487436e-02 -4.866337975202e-02 -4.495413264360e-02 --4.111783743128e-02 -3.716912696158e-02 -3.312289999281e-02 -2.899426765287e-02 --2.479849959220e-02 -2.055097001649e-02 -1.626710378278e-02 -1.196232274131e-02 --7.651992503055e-03 -3.351369810803e-03 9.244493122807e-04 5.160580465896e-03 -9.342400661638e-03 1.345559683653e-02 1.748621293522e-02 2.142069541087e-02 -2.524593700109e-02 2.894931864218e-02 3.251874939191e-02 3.594270423906e-02 -3.921025968548e-02 4.231112699506e-02 4.523568301251e-02 4.797499846364e-02 -5.052086365817e-02 5.286581152518e-02 5.500313792111e-02 5.692691915965e-02 -5.863202672279e-02 6.011413912208e-02 6.136975088909e-02 6.239617868396e-02 -6.319156452082e-02 6.375487611866e-02 6.408590439613e-02 6.418525813809e-02 -6.405435587152e-02 6.369541499742e-02 6.311143823471e-02 6.230619744047e-02 -6.128421488011e-02 6.005074202860e-02 5.861173599241e-02 5.697383364896e-02 -5.514432360789e-02 5.313111610504e-02 5.094271094654e-02 4.858816362643e-02 -4.607704974642e-02 4.341942787185e-02 4.062580096206e-02 3.770707651766e-02 -3.467452559057e-02 3.153974080592e-02 2.831459354694e-02 2.501119045654e-02 -2.164182941010e-02 1.821895511529e-02 1.475511449471e-02 1.126291200738e-02 -7.754965063920e-03 4.243859689298e-03 7.421065851342e-04 -2.737902258719e-03 --6.183936256412e-03 -9.583968078509e-03 -1.292621452469e-02 -1.619917628107e-02 --1.939167643117e-02 -2.249289759449e-02 -2.549241757245e-02 -2.838024338689e-02 --3.114684360294e-02 -3.378317883446e-02 -3.628073033708e-02 -3.863152660118e-02 --4.082816786452e-02 -4.286384847181e-02 -4.473237701661e-02 -4.642819420862e-02 --4.794638841819e-02 -4.928270885753e-02 -5.043357636716e-02 -5.139609178411e-02 --5.216804187731e-02 -5.274790284372e-02 -5.313484136769e-02 -5.332871325409e-02 --5.333005965434e-02 -5.314010091262e-02 -5.276072806770e-02 -5.219449205378e-02 --5.144459065131e-02 -5.051485324662e-02 -4.940972346612e-02 -4.813423975813e-02 --4.669401400190e-02 -4.509520822999e-02 -4.334450955621e-02 -4.144910340686e-02 --3.941664515877e-02 -3.725523029218e-02 -3.497336317145e-02 -3.257992457041e-02 --3.008413806323e-02 -2.749553540467e-02 -2.482392102666e-02 -2.207933578043e-02 --1.927202005531e-02 -1.641237640686e-02 -1.351093182804e-02 -1.057829979737e-02 --7.625142238595e-03 -4.662131525298e-03 -1.699912663701e-03 1.250934214945e-03 -4.179930922482e-03 7.076737714922e-03 9.931189101533e-03 1.273332884009e-02 -1.547344399990e-02 1.814209797818e-02 2.073016235946e-02 2.322884751252e-02 -2.562973182413e-02 2.792478947434e-02 3.010641666348e-02 3.216745620708e-02 -3.410122042100e-02 3.590151222541e-02 3.756264440283e-02 3.907945695250e-02 -4.044733248991e-02 4.166220964770e-02 4.272059444137e-02 4.361956957043e-02 -4.435680163298e-02 4.493054623945e-02 4.533965101810e-02 4.558355651299e-02 -4.566229498192e-02 4.557648710952e-02 4.532733665778e-02 4.491662308349e-02 -4.434669215893e-02 4.362044463923e-02 4.274132302606e-02 4.171329648416e-02 -4.054084397319e-02 3.922893566336e-02 3.778301270904e-02 3.620896545993e-02 -3.451311019452e-02 3.270216446519e-02 3.078322114897e-02 2.876372130186e-02 -2.665142591846e-02 2.445438670201e-02 2.218091595286e-02 1.983955568594e-02 -1.743904609016e-02 1.498829344416e-02 1.249633760444e-02 9.972319182722e-03 -7.425446529940e-03 4.864962644432e-03 2.300112121540e-03 -2.598917388347e-04 --2.805899551278e-03 -5.328858076613e-03 -7.819841954325e-03 -1.027008482593e-02 --1.267100974223e-02 -1.501425875040e-02 -1.729172156025e-02 -1.949556319270e-02 --2.161825051761e-02 -2.365257759228e-02 -2.559168971691e-02 -2.742910612772e-02 --2.915874125420e-02 -3.077492447184e-02 -3.227241828756e-02 -3.364643490095e-02 --3.489265109020e-02 -3.600722137795e-02 -3.698678943834e-02 -3.782849771329e-02 --3.852999521197e-02 -3.908944347460e-02 -3.950552068759e-02 -3.977742394431e-02 --3.990486965171e-02 -3.988809209007e-02 -3.972784013937e-02 -3.942537219222e-02 --3.898244927969e-02 -3.840132644254e-02 -3.768474238633e-02 -3.683590746490e-02 --3.585849004241e-02 -3.475660128944e-02 -3.353477847430e-02 -3.219796681543e-02 --3.075149996562e-02 -2.920107920358e-02 -2.755275141222e-02 -2.581288592724e-02 --2.398815034318e-02 -2.208548536733e-02 -2.011207881489e-02 -1.807533884159e-02 --1.598286651190e-02 -1.384242780324e-02 -1.166192514795e-02 -9.449368616029e-03 --7.212846842601e-03 -4.960497804243e-03 -2.700479548737e-03 -4.409409822704e-04 -1.810007182417e-03 4.044321214475e-03 6.254052788899e-03 8.431376946610e-03 -1.056861949336e-02 1.265828374257e-02 1.469307650983e-02 1.666593327010e-02 -1.857004239157e-02 2.039886836419e-02 2.214617394453e-02 2.380604114285e-02 -2.537289098282e-02 2.684150196859e-02 2.820702719934e-02 2.946501007592e-02 -3.061139854973e-02 3.164255786935e-02 3.255528178579e-02 3.334680218296e-02 -3.401479710578e-02 3.455739716389e-02 3.497319029498e-02 3.526122487769e-02 -3.542101118961e-02 3.545252121225e-02 3.535618679028e-02 3.513289615849e-02 -3.478398885543e-02 3.431124904846e-02 3.371689730043e-02 3.300358081369e-02 -3.217436219224e-02 3.123270676812e-02 3.018246854296e-02 2.902787480027e-02 -2.777350944864e-02 2.642429516031e-02 2.498547437342e-02 2.346258923028e-02 -2.186146052724e-02 2.018816575514e-02 1.844901631213e-02 1.665053397331e-02 -1.479942670392e-02 1.290256390496e-02 1.096695118144e-02 8.999704725225e-03 -7.008025405165e-03 4.999172657959e-03 2.980438273595e-03 9.591201691588e-04 --1.057503755487e-03 -3.062201587306e-03 -5.047813103120e-03 -7.007275115486e-03 --8.933646372492e-03 -1.082013192444e-02 -1.266010687264e-02 -1.444713941799e-02 --1.617501313000e-02 -1.783774835972e-02 -1.942962272361e-02 -2.094519058887e-02 --2.237930149457e-02 -2.372711744690e-02 -2.498412903130e-02 -2.614617028833e-02 --2.720943230507e-02 -2.817047547839e-02 -2.902624041133e-02 -2.977405740903e-02 --3.041165454542e-02 -3.093716427746e-02 -3.134912858868e-02 -3.164650264916e-02 --3.182865698466e-02 -3.189537815236e-02 -3.184686792677e-02 -3.168374100401e-02 --3.140702123818e-02 -3.101813642883e-02 -3.051891168338e-02 -2.991156138346e-02 --2.919867978912e-02 -2.838323031923e-02 -2.746853355148e-02 -2.645825398932e-02 --2.535638564767e-02 -2.416723651317e-02 -2.289541193861e-02 -2.154579703466e-02 --2.012353812540e-02 -1.863402333740e-02 -1.708286239459e-02 -1.547586569425e-02 --1.381902274107e-02 -1.211848001905e-02 -1.038051838184e-02 -8.611530044460e-03 --6.817995259627e-03 -5.006458763405e-03 -3.183506074999e-03 -1.355739735954e-03 -4.702444261774e-04 2.287880924952e-03 4.090658048933e-03 5.872141019292e-03 -7.625994789379e-03 9.346006406019e-03 1.102610685420e-02 1.266039230890e-02 -1.424314472013e-02 1.576885166011e-02 1.723222536401e-02 1.862822089924e-02 -1.995205340120e-02 2.119921431727e-02 2.236548660433e-02 2.344695882920e-02 -2.444003812529e-02 2.534146196321e-02 2.614830869725e-02 2.685800685435e-02 -2.746834313655e-02 2.797746911293e-02 2.838390658129e-02 2.868655158536e-02 -2.888467707741e-02 2.897793422157e-02 2.896635233780e-02 2.885033749128e-02 -2.863066973694e-02 2.830849903352e-02 2.788533984624e-02 2.736306446191e-02 -2.674389504468e-02 2.603039446512e-02 2.522545593952e-02 2.433229152056e-02 -2.335441948430e-02 2.229565066234e-02 2.116007377167e-02 1.995203979781e-02 -1.867614549062e-02 1.733721603445e-02 1.594028695760e-02 1.449058534836e-02 -1.299351044696e-02 1.145461368516e-02 9.879578246670e-03 8.274198223086e-03 -6.644357441323e-03 4.996008039433e-03 3.335148868278e-03 1.667803796964e-03 -3.832333388677e-15 -1.662253695995e-03 -3.312988328793e-03 -4.946296103549e-03 --6.556351406844e-03 - Type L N - 0 1 11 -0.000000000000e+00 2.179313647908e-02 4.353035148500e-02 6.515589437070e-02 -8.661435557316e-02 1.078508357368e-01 1.288111131402e-01 1.494418088701e-01 -1.696905491932e-01 1.895061245890e-01 2.088386449143e-01 2.276396901883e-01 -2.458624564983e-01 2.634618965462e-01 2.803948543723e-01 2.966201938157e-01 -3.120989202896e-01 3.267942954758e-01 3.406719445652e-01 3.536999556995e-01 -3.658489712929e-01 3.770922709447e-01 3.874058456805e-01 3.967684632900e-01 -4.051617245613e-01 4.125701102424e-01 4.189810185926e-01 4.243847934197e-01 -4.287747425303e-01 4.321471465559e-01 4.345012581483e-01 4.358392915717e-01 -4.361664027526e-01 4.354906598801e-01 4.338230046825e-01 4.311772045361e-01 -4.275697955963e-01 4.230200171681e-01 4.175497375648e-01 4.111833717325e-01 -4.039477909438e-01 3.958722248923e-01 3.869881565445e-01 3.773292101283e-01 -3.669310326625e-01 3.558311694484e-01 3.440689339701e-01 3.316852726619e-01 -3.187226250217e-01 3.052247795617e-01 2.912367261015e-01 2.768045049186e-01 -2.619750532809e-01 2.467960498929e-01 2.313157577933e-01 2.155828662428e-01 -1.996463321450e-01 1.835552215413e-01 1.673585517181e-01 1.511051344618e-01 -1.348434209883e-01 1.186213490687e-01 1.024861928608e-01 8.648441594503e-02 -7.066152805026e-02 5.506194593974e-02 3.972885891084e-02 2.470409934367e-02 -1.002801871455e-02 -4.260630531350e-03 -1.812480687587e-02 -3.152928504390e-02 --4.444075441587e-02 -5.682791023875e-02 -6.866153736488e-02 -7.991458627492e-02 --9.056224117035e-02 -1.005819799495e-01 -1.099536259108e-01 -1.186593910576e-01 --1.266839109077e-01 -1.340142707436e-01 -1.406400232677e-01 -1.465531976587e-01 --1.517483000572e-01 -1.562223055341e-01 -1.599746416325e-01 -1.630071635954e-01 --1.653241214276e-01 -1.669321189622e-01 -1.678400651353e-01 -1.680591176933e-01 --1.676026195889e-01 -1.664860283409e-01 -1.647268386600e-01 -1.623444986645e-01 --1.593603200295e-01 -1.557973824329e-01 -1.516804326828e-01 -1.470357789218e-01 --1.418911803256e-01 -1.362757327206e-01 -1.302197505626e-01 -1.237546457239e-01 --1.169128035497e-01 -1.097274566472e-01 -1.022325568785e-01 -9.446264603178e-02 --8.645272564422e-02 -7.823812645441e-02 -6.985437795556e-02 -6.133707852051e-02 --5.272176656260e-02 -4.404379319008e-02 -3.533819680296e-02 -2.663958007102e-02 --1.798198971996e-02 -9.398799539355e-03 -9.225970114397e-04 7.414926056442e-03 -1.558307853021e-02 2.355227023146e-02 3.129410717687e-02 3.878148146859e-02 -4.598865555143e-02 5.289134057545e-02 5.946676862642e-02 6.569375861076e-02 -7.155277560676e-02 7.702598351955e-02 8.209729090292e-02 8.675238983800e-02 -9.097878778495e-02 9.476583235083e-02 9.810472894348e-02 1.009885513080e-01 -1.034122449693e-01 1.053726236294e-01 1.068683585957e-01 1.078999613413e-01 -1.084697593221e-01 1.085818652020e-01 1.082421396595e-01 1.074581479724e-01 -1.062391105989e-01 1.045958479944e-01 1.025407199239e-01 1.000875595466e-01 -9.725160257056e-02 9.404941178636e-02 9.049879730973e-02 8.661873287188e-02 -8.242926851147e-02 7.795144003197e-02 7.320717559788e-02 6.821919985121e-02 -6.301093593613e-02 5.760640582461e-02 5.203012933925e-02 4.630702227151e-02 -4.046229399383e-02 3.452134496283e-02 2.850966450844e-02 2.245272929924e-02 -1.637590286890e-02 1.030433658157e-02 4.262872405336e-03 -1.724052146652e-03 --7.632496559132e-03 -1.343910700584e-02 -1.912120286645e-02 -2.465685976182e-02 --3.002498881579e-02 -3.520541186869e-02 -4.017893238544e-02 -4.492740181995e-02 --4.943378121662e-02 -5.368219785040e-02 -5.765799672723e-02 -6.134778678827e-02 --6.473948168299e-02 -6.782233499842e-02 -7.058696985439e-02 -7.302540279695e-02 --7.513106194530e-02 -7.689879936999e-02 -7.832489770306e-02 -7.940707100312e-02 --8.014445992091e-02 -8.053762123268e-02 -8.058851183007e-02 -8.030046727682e-02 --7.967817506226e-02 -7.872764270218e-02 -7.745616085613e-02 -7.587226164889e-02 --7.398567240102e-02 -7.180726499017e-02 -6.934900108004e-02 -6.662387346879e-02 --6.364584382149e-02 -6.042977706421e-02 -5.699137272778e-02 -5.334709353956e-02 --4.951409156995e-02 -4.551013224788e-02 -4.135351656568e-02 -3.706300179806e-02 --3.265772106416e-02 -2.815710206293e-02 -2.358078531356e-02 -1.894854223191e-02 --1.428019337201e-02 -9.595527158838e-03 -4.914219434093e-03 -2.557541309840e-04 -4.360654612551e-03 8.916138600968e-03 1.339224969642e-02 1.777103162032e-02 -2.203508917061e-02 2.616765459631e-02 3.015265088436e-02 3.397475172781e-02 -3.761943795926e-02 4.107305024936e-02 4.432283788633e-02 4.735700346988e-02 -5.016474336993e-02 5.273628381917e-02 5.506291252654e-02 5.713700571763e-02 -5.895205052719e-02 6.050266268794e-02 6.178459947919e-02 6.279476791836e-02 -6.353122819741e-02 6.399319238558e-02 6.418101843872e-02 6.409619957396e-02 -6.374134908698e-02 6.312018070691e-02 6.223748460108e-02 6.109909915894e-02 -5.971187870037e-02 5.808365726915e-02 5.622320868722e-02 5.414020305894e-02 -5.184515992814e-02 4.934939830240e-02 4.666498377061e-02 4.380467294984e-02 -4.078185550705e-02 3.761049400912e-02 3.430506186180e-02 3.088047960438e-02 -2.735204983156e-02 2.373539101786e-02 2.004637052257e-02 1.630103705456e-02 -1.251555287685e-02 8.706126029876e-03 4.888942850580e-03 1.080101061262e-03 --2.704456301719e-03 -6.449005854733e-03 -1.013810747059e-02 -1.375666626791e-02 --1.728999274300e-02 -2.072386081036e-02 -2.404456352797e-02 -2.723896629411e-02 --3.029455731476e-02 -3.319949515228e-02 -3.594265317999e-02 -3.851366078028e-02 --4.090294113888e-02 -4.310174550227e-02 -4.510218378084e-02 -4.689725139583e-02 --4.848085228438e-02 -4.984781799297e-02 -5.099392280627e-02 -5.191589487472e-02 --5.261142332107e-02 -5.307916132229e-02 -5.331872518030e-02 -5.333068941089e-02 --5.311657789653e-02 -5.267885116464e-02 -5.202088986843e-02 -5.114697456235e-02 --5.006226187908e-02 -4.877275722901e-02 -4.728528415663e-02 -4.560745050123e-02 --4.374761152173e-02 -4.171483015650e-02 -3.951883460044e-02 -3.716997339087e-02 --3.467916820333e-02 -3.205786456648e-02 -2.931798071251e-02 -2.647185478601e-02 --2.353219063955e-02 -2.051200244886e-02 -1.742455838377e-02 -1.428332357382e-02 --1.110190260871e-02 -7.893981814469e-03 -4.673271545616e-03 -1.453448732228e-03 -1.751900081738e-03 4.929334975789e-03 8.065617937246e-03 1.114776696915e-02 -1.416310880441e-02 1.709933001595e-02 1.994452632029e-02 2.268724988081e-02 -2.531655442606e-02 2.782203800892e-02 3.019388324267e-02 3.242289486188e-02 -3.450053446752e-02 3.641895232851e-02 3.817101612440e-02 3.975033652761e-02 -4.115128953698e-02 4.236903548838e-02 4.339953468251e-02 4.423955958394e-02 -4.488670356038e-02 4.533938614526e-02 4.559685482141e-02 4.565918333805e-02 -4.552726658742e-02 4.520281208183e-02 4.468832808529e-02 4.398710846806e-02 -4.310321436509e-02 4.204145273253e-02 4.080735190866e-02 3.940713429764e-02 -3.784768630540e-02 3.613652566818e-02 3.428176632399e-02 3.229208098661e-02 -3.017666159085e-02 2.794517778511e-02 2.560773365507e-02 2.317482286836e-02 -2.065728243558e-02 1.806624528813e-02 1.541309187673e-02 1.270940099779e-02 -9.966900056893e-03 7.197414979788e-03 4.412819981767e-03 1.624987405761e-03 --1.154262161871e-03 -3.913209291151e-03 -6.640284420206e-03 -9.324115679194e-03 --1.195357563138e-02 -1.451782674183e-02 -1.700636539054e-02 -1.940906425357e-02 --2.171621288381e-02 -2.391855633098e-02 -2.600733164970e-02 -2.797430215388e-02 --2.981178928597e-02 -3.151270197986e-02 -3.307056340770e-02 -3.447953501202e-02 --3.573443773653e-02 -3.683077038102e-02 -3.776472501805e-02 -3.853319942200e-02 --3.913380647322e-02 -3.956488051348e-02 -3.982548064107e-02 -3.991539094731e-02 --3.983511770864e-02 -3.958588356111e-02 -3.916961869685e-02 -3.858894913381e-02 --3.784718212267e-02 -3.694828876587e-02 -3.589688393539e-02 -3.469820358660e-02 --3.335807957590e-02 -3.188291209987e-02 -3.027963988299e-02 -2.855570824968e-02 --2.671903522478e-02 -2.477797581401e-02 -2.274128462294e-02 -2.061807697903e-02 --1.841778872704e-02 -1.615013487255e-02 -1.382506725260e-02 -1.145273141545e-02 --9.043422894160e-03 -6.607543060106e-03 -4.155554743638e-03 -1.697937809094e-03 -7.548551292782e-04 3.192442665382e-03 5.604558050438e-03 7.981091953342e-03 -1.031213435602e-02 1.258801541199e-02 1.479934510156e-02 1.693705152268e-02 -1.899241766321e-02 2.095711650716e-02 2.282324433526e-02 2.458335208836e-02 -2.623047467085e-02 2.775815808054e-02 2.916048426097e-02 3.043209358222e-02 -3.156820486655e-02 3.256463288599e-02 3.341780326972e-02 3.412476477049e-02 -3.468319885036e-02 3.509142655758e-02 3.534841267794e-02 3.545376715538e-02 -3.540774378797e-02 3.521123621720e-02 3.486577123920e-02 3.437349947812e-02 -3.373718347255e-02 3.296018323647e-02 3.204643936670e-02 3.100045377861e-02 -2.982726816161e-02 2.853244025504e-02 2.712201805375e-02 2.560251206090e-02 -2.398086571340e-02 2.226442411211e-02 2.046090119586e-02 1.857834550417e-02 -1.662510467876e-02 1.460978885874e-02 1.254123312817e-02 1.042845917830e-02 -8.280636348997e-03 6.107042216126e-03 3.917022892714e-03 1.719953212175e-03 --4.748030382492e-04 -2.657932666617e-03 -4.820212242419e-03 -6.952546716402e-03 --9.046007333782e-03 -1.109186868417e-02 -1.308164473581e-02 -1.500712370661e-02 --1.686040163002e-02 -1.863391447977e-02 -2.032046872421e-02 -2.191327018802e-02 --2.340595110683e-02 -2.479259526816e-02 -2.606776114068e-02 -2.722650290280e-02 --2.826438929035e-02 -2.917752019323e-02 -2.996254094007e-02 -3.061665422028e-02 --3.113762960290e-02 -3.152381062200e-02 -3.177411940849e-02 -3.188805885902e-02 --3.186571234266e-02 -3.170774095667e-02 -3.141537835273e-02 -3.099042316541e-02 --3.043522908428e-02 -2.975269262116e-02 -2.894623863318e-02 -2.801980367190e-02 --2.697781723715e-02 -2.582518102325e-02 -2.456724625301e-02 -2.320978920269e-02 --2.175898502853e-02 -2.022138001172e-02 -1.860386234538e-02 -1.691363159244e-02 --1.515816694857e-02 -1.334519444867e-02 -1.148265325965e-02 -9.578661205024e-03 --7.641479670110e-03 -5.679478038152e-03 -3.701097809389e-03 -1.714816555726e-03 -2.708881362214e-04 2.247574581434e-03 4.206872621096e-03 6.140518806220e-03 -8.040390993455e-03 9.898542209267e-03 1.170723364232e-02 1.345896662807e-02 -1.514651349440e-02 1.676294714233e-02 1.830166924172e-02 1.975643692822e-02 -2.112138789423e-02 2.239106377415e-02 2.356043173148e-02 2.462490416344e-02 -2.558035644686e-02 2.642314265784e-02 2.715010920632e-02 2.775860633575e-02 -2.824649744724e-02 2.861216621701e-02 2.885452148515e-02 2.897299990333e-02 -2.896756633873e-02 2.883871204058e-02 2.858745058548e-02 2.821531162677e-02 -2.772433248241e-02 2.711704760501e-02 2.639647598612e-02 2.556610655562e-02 -2.462988164546e-02 2.359217859434e-02 2.245778957821e-02 2.123189975812e-02 -1.992006384398e-02 1.852818117902e-02 1.706246945562e-02 1.552943717875e-02 -1.393585499764e-02 1.228872603135e-02 1.059525531705e-02 8.862818513530e-03 -7.098929994781e-03 5.311210470988e-03 3.507354275343e-03 1.695096456355e-03 --1.178201845162e-04 -1.923677970274e-03 -3.714817002090e-03 -5.483667451956e-03 --7.222781358961e-03 -8.924863796434e-03 -1.058280328031e-02 -1.218970129275e-02 --1.373890079919e-02 -1.522401364171e-02 -1.663894669672e-02 -1.797792669063e-02 --1.923552357318e-02 -2.040667235442e-02 -2.148669331847e-02 -2.247131053399e-02 --2.335666858892e-02 -2.413934748492e-02 -2.481637563465e-02 -2.538524091358e-02 --2.584389972606e-02 -2.619078405428e-02 -2.642480646702e-02 -2.654536307404e-02 --2.655233442062e-02 -2.644608432550e-02 -2.622745667403e-02 -2.589777018717e-02 --2.545881119531e-02 -2.491282445423e-02 -2.426250204868e-02 -2.351097043711e-02 --2.266177569858e-02 -2.171886705035e-02 -2.068657871186e-02 -1.956961019731e-02 --1.837300512556e-02 -1.710212864223e-02 -1.576264355393e-02 -1.436048528026e-02 --1.290183573343e-02 -1.139309623976e-02 -9.840859620859e-03 -8.251881555604e-03 --6.633051346524e-03 -4.991362216394e-03 -3.333881262430e-03 -1.667719196465e-03 --1.252029249129e-15 1.662169377033e-03 3.311729145596e-03 4.941696507830e-03 -6.545195062944e-03 - Type L N - 0 1 12 -0.000000000000e+00 2.353708990158e-02 4.700372424124e-02 7.032969852654e-02 -9.344530942980e-02 1.162816029389e-01 1.387706196013e-01 1.608456359111e-01 -1.824414009039e-01 2.034943670446e-01 2.239429145167e-01 2.437275680475e-01 -2.627912054346e-01 2.810792569734e-01 2.985398950222e-01 3.151242129802e-01 -3.307863929987e-01 3.454838617916e-01 3.591774339565e-01 3.718314422736e-01 -3.834138544972e-01 3.938963762135e-01 4.032545393913e-01 4.114677763133e-01 -4.185194786323e-01 4.243970413570e-01 4.290918916348e-01 4.325995022568e-01 -4.349193898750e-01 4.360550979795e-01 4.360141647480e-01 4.348080759372e-01 -4.324522030470e-01 4.289657270467e-01 4.243715480088e-01 4.186961810524e-01 -4.119696390512e-01 4.042253026151e-01 3.954997778998e-01 3.858327428509e-01 -3.752667825307e-01 3.638472142173e-01 3.516219030072e-01 3.386410686858e-01 -3.249570846632e-01 3.106242698036e-01 2.956986739995e-01 2.802378583656e-01 -2.643006709472e-01 2.479470188474e-01 2.312376376950e-01 2.142338593760e-01 -1.969973789599e-01 1.795900217460e-01 1.620735113556e-01 1.445092397843e-01 -1.269580403177e-01 1.094799641977e-01 9.213406190838e-02 7.497816992517e-02 -5.806870374771e-02 4.146045800476e-02 2.520641438815e-02 9.357558136381e-03 --6.037296249583e-03 -2.093166941763e-02 -3.528157110542e-02 -4.904564305986e-02 --6.218529043189e-02 -7.466480119359e-02 -8.645145317610e-02 -9.751560838008e-02 --1.078307942646e-01 -1.173737717757e-01 -1.261245899322e-01 -1.340666268415e-01 --1.411866170774e-01 -1.474746654061e-01 -1.529242469034e-01 -1.575321935658e-01 --1.612986675667e-01 -1.642271213709e-01 -1.663242449674e-01 -1.675999005374e-01 --1.680670449203e-01 -1.677416402926e-01 -1.666425535187e-01 -1.647914446778e-01 --1.622126453124e-01 -1.589330269841e-01 -1.549818607578e-01 -1.503906682705e-01 --1.451930650704e-01 -1.394245969404e-01 -1.331225699455e-01 -1.263258749621e-01 --1.190748074691e-01 -1.114108833905e-01 -1.033766517948e-01 -9.501550526063e-02 --8.637148872350e-02 -7.748910761920e-02 -6.841313613556e-02 -5.918842637876e-02 --4.985971924994e-02 -4.047145781489e-02 -3.106760393315e-02 -2.169145889320e-02 --1.238548877768e-02 -3.191155256908e-03 5.851247519595e-03 1.470274929490e-02 -2.332585273513e-02 3.168467454995e-02 3.974507817269e-02 4.747479751034e-02 -5.484355131576e-02 6.182314777826e-02 6.838757897434e-02 7.451310486650e-02 -8.017832658628e-02 8.536424878543e-02 9.005433088884e-02 9.423452713178e-02 -9.789331531380e-02 1.010217142514e-01 1.036132899601e-01 1.056641506473e-01 -1.071729306415e-01 1.081407634361e-01 1.085712440671e-01 1.084703810920e-01 -1.078465384785e-01 1.067103677557e-01 1.050747308170e-01 1.029546138047e-01 -1.003670325408e-01 9.733093000097e-02 9.386706636109e-02 8.999790217305e-02 -8.574747525279e-02 8.114127188606e-02 7.620609297763e-02 7.096991578680e-02 -6.546175190632e-02 5.971150215286e-02 5.374980904527e-02 4.760790755214e-02 -4.131747479179e-02 3.491047936708e-02 2.841903101303e-02 2.187523122841e-02 -1.531102555213e-02 8.758058132643e-03 2.247529222459e-03 -4.189943788083e-03 --1.052446120516e-02 -1.672697116450e-02 -2.276939451983e-02 -2.862474397146e-02 --3.426723695013e-02 -3.967240180334e-02 -4.481717686565e-02 -4.968000202968e-02 --5.424090247206e-02 -5.848156422675e-02 -6.238540133771e-02 -6.593761436314e-02 --6.912524004507e-02 -7.193719199910e-02 -7.436429232180e-02 -7.639929405484e-02 --7.803689448736e-02 -7.927373932002e-02 -8.010841775533e-02 -8.054144862004e-02 --8.057525766524e-02 -8.021414622903e-02 -7.946425148455e-02 -7.833349853277e-02 --7.683154463486e-02 -7.496971591223e-02 -7.276093687458e-02 -7.021965316594e-02 --6.736174794674e-02 -6.420445235596e-02 -6.076625052070e-02 -5.706677960214e-02 --5.312672538540e-02 -4.896771393767e-02 -4.461219987235e-02 -4.008335176876e-02 --3.540493530523e-02 -3.060119466994e-02 -2.569673281675e-02 -2.071639113458e-02 --1.568512909669e-02 -1.062790445193e-02 -5.569554513084e-03 -5.346790876653e-04 -4.452474415033e-03 9.368123181620e-03 1.418905799432e-02 1.889274854904e-02 -2.345744462895e-02 2.786227269385e-02 3.208732747020e-02 3.611375815340e-02 -3.992384886211e-02 4.350109301388e-02 4.683026132252e-02 4.989746314961e-02 -5.269020097593e-02 5.519741779228e-02 5.740953724413e-02 5.931849639975e-02 -6.091777104672e-02 6.220239345799e-02 6.316896260401e-02 6.381564682340e-02 -6.414217899965e-02 6.414984432661e-02 6.384146077934e-02 6.322135244057e-02 -6.229531586555e-02 6.107057969925e-02 5.955575779032e-02 5.776079607494e-02 -5.569691353103e-02 5.337653752900e-02 5.081323392948e-02 4.802163230036e-02 -4.501734664615e-02 4.181689206068e-02 3.843759773068e-02 3.489751673178e-02 -3.121533307059e-02 2.741026643610e-02 2.350197513124e-02 1.951045766075e-02 -1.545595345435e-02 1.135884320487e-02 7.239549299492e-03 3.118436818400e-03 --9.842844310189e-04 -5.048656384379e-03 -9.055067245289e-03 -1.298434362790e-02 --1.681783989414e-02 -2.053752427915e-02 -2.412606141631e-02 -2.756689089357e-02 --3.084430149349e-02 -3.394350079322e-02 -3.685067982415e-02 -3.955307251732e-02 --4.203900968671e-02 -4.429796733090e-02 -4.632060906158e-02 -4.809882249738e-02 --4.962574949065e-02 -5.089581008577e-02 -5.190472013790e-02 -5.264950255174e-02 --5.312849213097e-02 -5.334133405930e-02 -5.328897606445e-02 -5.297365434650e-02 --5.239887338089e-02 -5.156937973537e-02 -5.049113006756e-02 -4.917125349694e-02 --4.761800857021e-02 -4.584073506414e-02 -4.384980089242e-02 -4.165654440541e-02 --3.927321239134e-02 -3.671289410659e-02 -3.398945167938e-02 -3.111744724624e-02 --2.811206719445e-02 -2.498904389459e-02 -2.176457531741e-02 -1.845524293660e-02 --1.507792832477e-02 -1.164972885379e-02 -8.187872912099e-03 -4.709635051572e-03 --1.232251474072e-03 2.227163736248e-03 5.651701235047e-03 9.024737502409e-03 -1.233001400794e-02 1.555171408592e-02 1.867453716340e-02 2.168376999907e-02 -2.456535460730e-02 2.730595255964e-02 2.989300537537e-02 3.231479073357e-02 -3.456047426051e-02 3.662015666949e-02 3.848491605360e-02 4.014684515668e-02 -4.159908347314e-02 4.283584405281e-02 4.385243491366e-02 4.464527499170e-02 -4.521190458397e-02 4.555099026790e-02 4.566232430652e-02 4.554681857598e-02 -4.520649307801e-02 4.464445912564e-02 4.386489731591e-02 4.287303042770e-02 -4.167509140666e-02 4.027828662191e-02 3.869075460117e-02 3.692152047148e-02 -3.498044635225e-02 3.287817796553e-02 3.062608774515e-02 2.823621474180e-02 -2.572120163483e-02 2.309422917390e-02 2.036894838409e-02 1.755941087725e-02 -1.467999761934e-02 1.174534650916e-02 8.770279127717e-03 5.769727019243e-03 -2.758657865373e-03 -2.479980876935e-04 -3.235420992346e-03 -6.188973401328e-03 --9.094270963014e-03 -1.193725147333e-02 -1.470424195731e-02 -1.738202346467e-02 --1.995789327655e-02 -2.241972423481e-02 -2.475602092095e-02 -2.695597242837e-02 --2.900950148962e-02 -3.090730973942e-02 -3.264091891419e-02 -3.420270780943e-02 --3.558594483822e-02 -3.678481605604e-02 -3.779444854007e-02 -3.861092903422e-02 --3.923131779467e-02 -3.965365759447e-02 -3.987697786926e-02 -3.990129401035e-02 --3.972760183458e-02 -3.935786728378e-02 -3.879501142990e-02 -3.804289088384e-02 --3.710627372834e-02 -3.599081111610e-02 -3.470300469494e-02 -3.325017004113e-02 --3.164039630063e-02 -2.988250225524e-02 -2.798598904736e-02 -2.596098981158e-02 --2.381821647562e-02 -2.156890400536e-02 -1.922475237966e-02 -1.679786659066e-02 --1.430069497284e-02 -1.174596617125e-02 -9.146625064051e-03 -6.515767958077e-03 --3.866577378258e-03 -1.212256771825e-03 1.434034552759e-03 4.059245935026e-03 -6.650499007036e-03 9.195150166160e-03 1.168085157626e-02 1.409561040614e-02 -1.642784602408e-02 1.866644487885e-02 2.080081280995e-02 2.282092454377e-02 -2.471737014747e-02 2.648139822798e-02 2.810495568084e-02 2.958072381109e-02 -3.090215066733e-02 3.206347944897e-02 3.305977286697e-02 3.388693335837e-02 -3.454171907583e-02 3.502175559447e-02 3.532554329940e-02 3.545246043867e-02 -3.540276184772e-02 3.517757337235e-02 3.477888203842e-02 3.420952203676e-02 -3.347315661224e-02 3.257425596523e-02 3.151807129299e-02 3.031060511655e-02 -2.895857805645e-02 2.746939223695e-02 2.585109151430e-02 2.411231873911e-02 -2.226227027654e-02 2.031064802024e-02 1.826760914738e-02 1.614371387180e-02 -1.394987146110e-02 1.169728479064e-02 9.397393713563e-03 7.061817530047e-03 -4.702296842670e-03 2.330635085978e-03 -4.135998106041e-05 -2.401934532288e-03 --4.739446396347e-03 -7.042421962398e-03 -9.299611993816e-03 -1.150004608071e-02 --1.363308546998e-02 -1.568847402071e-02 -1.765638704319e-02 -1.952747779094e-02 --2.129292138817e-02 -2.294445598809e-02 -2.447442097247e-02 -2.587579201777e-02 --2.714221286967e-02 -2.826802368440e-02 -2.924828581278e-02 -3.007880292119e-02 --3.075613836144e-02 -3.127762872114e-02 -3.164139350451e-02 -3.184634091319e-02 --3.189216971562e-02 -3.177936721315e-02 -3.150920332967e-02 -3.108372087090e-02 --3.050572201797e-02 -2.977875113787e-02 -2.890707401143e-02 -2.789565359657e-02 --2.675012246076e-02 -2.547675203290e-02 -2.408241883942e-02 -2.257456790371e-02 --2.096117350112e-02 -1.925069747389e-02 -1.745204532154e-02 -1.557452029241e-02 --1.362777571047e-02 -1.162176577991e-02 -9.566695115673e-03 -7.472967254063e-03 --5.351132400982e-03 -3.211834678294e-03 -1.065759130111e-03 1.076421249074e-03 -3.204098203719e-03 5.306780365748e-03 7.374144607736e-03 9.396086351181e-03 -1.136276858645e-02 1.326466936830e-02 1.509262755937e-02 1.683788660358e-02 -1.849213612178e-02 2.004755113398e-02 2.149682872434e-02 2.283322197900e-02 -2.405057104052e-02 2.514333113776e-02 2.610659746533e-02 2.693612680282e-02 -2.762835578046e-02 2.818041571472e-02 2.859014395465e-02 2.885609169692e-02 -2.897752824546e-02 2.895444170862e-02 2.878753614502e-02 2.847822518599e-02 -2.802862218038e-02 2.744152692387e-02 2.672040905195e-02 2.586938819154e-02 -2.489321098195e-02 2.379722509086e-02 2.258735036519e-02 2.127004727041e-02 -1.985228278456e-02 1.834149392510e-02 1.674554909766e-02 1.507270746599e-02 -1.333157655084e-02 1.153106827415e-02 9.680353671115e-03 7.788816498768e-03 -5.866005974164e-03 3.921588878623e-03 1.965301266782e-03 6.900020163358e-06 --1.943885515106e-03 -3.877401568169e-03 -5.784117425114e-03 -7.654672120294e-03 --9.479920109940e-03 -1.125097570653e-02 -1.295925605940e-02 -1.459652247490e-02 --1.615491987864e-02 -1.762701423181e-02 -1.900582772493e-02 -2.028487158338e-02 --2.145817633196e-02 -2.252031937854e-02 -2.346644979062e-02 -2.429231015303e-02 --2.499425540968e-02 -2.556926860766e-02 -2.601497347730e-02 -2.632964379787e-02 --2.651220951470e-02 -2.656225958916e-02 -2.648004157988e-02 -2.626645796893e-02 --2.592305926328e-02 -2.545203391726e-02 -2.485619513762e-02 -2.413896464740e-02 --2.330435350019e-02 -2.235694005013e-02 -2.130184519668e-02 -2.014470503651e-02 --1.889164106679e-02 -1.754922809596e-02 -1.612446002881e-02 -1.462471370237e-02 --1.305771095848e-02 -1.143147914647e-02 -9.754310256928e-03 -8.034718893153e-03 --6.281399292208e-03 -4.503181611217e-03 -2.708987697548e-03 -9.077865632151e-04 -8.914502154210e-04 2.679792952024e-03 4.448397939574e-03 6.188550957985e-03 -7.891709987112e-03 9.549546916831e-03 1.115398805161e-02 1.269725321357e-02 -1.417189325570e-02 1.557082580540e-02 1.688736906771e-02 1.811527352810e-02 -1.924875140520e-02 2.028250371582e-02 2.121174482664e-02 2.203222437996e-02 -2.274024649412e-02 2.333268615299e-02 2.380700271336e-02 2.416125047307e-02 -2.439408625788e-02 2.450477399972e-02 2.449318629390e-02 2.435980293789e-02 -2.410570646921e-02 2.373257473464e-02 2.324267053749e-02 2.263882842416e-02 -2.192443868490e-02 2.110342865723e-02 2.018024143375e-02 1.915981208813e-02 -1.804754154540e-02 1.684926823351e-02 1.557123766391e-02 1.422007009836e-02 -1.280272646852e-02 1.132647272246e-02 9.798842779793e-03 8.227600283368e-03 -6.620699340510e-03 4.986244451547e-03 3.332449826440e-03 1.667598292818e-03 -5.962649506421e-14 -1.662048875611e-03 -3.310307220713e-03 -4.936629666149e-03 --6.533006660971e-03 - Type L N - 0 2 0 -0.000000000000e+00 6.151333446762e-06 2.460487800223e-05 5.535915194780e-05 -9.841173105899e-05 1.537592083733e-04 2.213972082458e-04 3.013203802203e-04 -3.935224034400e-04 4.979959858620e-04 6.147328643748e-04 7.437238061971e-04 -8.849586091118e-04 1.038426102541e-03 1.204114148362e-03 1.382009641477e-03 -1.572098511301e-03 1.774365722741e-03 1.988795277015e-03 2.215370213351e-03 -2.454072609935e-03 2.704883585496e-03 2.967783300640e-03 3.242750959398e-03 -3.529764810944e-03 3.828802151048e-03 4.139839324043e-03 4.462851724476e-03 -4.797813799119e-03 5.144699048843e-03 5.503480030702e-03 5.874128360038e-03 -6.256614712691e-03 6.650908827169e-03 7.056979507058e-03 7.474794623387e-03 -7.904321117090e-03 8.345525001577e-03 8.798371365319e-03 9.262824374523e-03 -9.738847275919e-03 1.022640239958e-02 1.072545116179e-02 1.123595406802e-02 -1.175787071599e-02 1.229115979875e-02 1.283577910784e-02 1.339168553658e-02 -1.395883508334e-02 1.453718285494e-02 1.512668307009e-02 1.572728906294e-02 -1.633895328661e-02 1.696162731691e-02 1.759526185599e-02 1.823980673619e-02 -1.889521092388e-02 1.956142252333e-02 2.023838878078e-02 2.092605608844e-02 -2.162436998860e-02 2.233327517785e-02 2.305271551134e-02 2.378263400702e-02 -2.452297285010e-02 2.527367339742e-02 2.603467618203e-02 2.680592091770e-02 -2.758734650356e-02 2.837889102883e-02 2.918049177751e-02 2.999208523327e-02 -3.081360708426e-02 3.164499222813e-02 3.248617477692e-02 3.333708806224e-02 -3.419766464030e-02 3.506783629711e-02 3.594753405376e-02 3.683668817167e-02 -3.773522815796e-02 3.864308277085e-02 3.956018002516e-02 4.048644719780e-02 -4.142181083340e-02 4.236619674989e-02 4.331953004423e-02 4.428173509816e-02 -4.525273558400e-02 4.623245447050e-02 4.722081402876e-02 4.821773583819e-02 -4.922314079254e-02 5.023694910596e-02 5.125908031911e-02 5.228945330537e-02 -5.332798627704e-02 5.437459679160e-02 5.542920175808e-02 5.649171744338e-02 -5.756205947875e-02 5.864014286621e-02 5.972588198510e-02 6.081919059865e-02 -6.191998186058e-02 6.302816832176e-02 6.414366193692e-02 6.526637407142e-02 -6.639621550800e-02 6.753309645369e-02 6.867692654663e-02 6.982761486302e-02 -7.098506992412e-02 7.214919970320e-02 7.331991163267e-02 7.449711261111e-02 -7.568070901045e-02 7.687060668312e-02 7.806671096926e-02 7.926892670401e-02 -8.047715822478e-02 8.169130937856e-02 8.291128352931e-02 8.413698356539e-02 -8.536831190694e-02 8.660517051338e-02 8.784746089095e-02 8.909508410021e-02 -9.034794076364e-02 9.160593107325e-02 9.286895479821e-02 9.413691129255e-02 -9.540969950282e-02 9.668721797590e-02 9.796936486668e-02 9.925603794593e-02 -1.005471346081e-01 1.018425518791e-01 1.031421864243e-01 1.044459345564e-01 -1.057536922434e-01 1.070653551164e-01 1.083808184777e-01 1.096999773088e-01 -1.110227262786e-01 1.123489597511e-01 1.136785717938e-01 1.150114561856e-01 -1.163475064250e-01 1.176866157382e-01 1.190286770876e-01 1.203735831792e-01 -1.217212264716e-01 1.230714991840e-01 1.244242933040e-01 1.257795005966e-01 -1.271370126117e-01 1.284967206931e-01 1.298585159862e-01 1.312222894466e-01 -1.325879318487e-01 1.339553337933e-01 1.353243857168e-01 1.366949778989e-01 -1.380670004714e-01 1.394403434265e-01 1.408148966248e-01 1.421905498044e-01 -1.435671925888e-01 1.449447144955e-01 1.463230049445e-01 1.477019532664e-01 -1.490814487115e-01 1.504613804574e-01 1.518416376183e-01 1.532221092527e-01 -1.546026843724e-01 1.559832519508e-01 1.573637009312e-01 1.587439202355e-01 -1.601237987727e-01 1.615032254470e-01 1.628820891666e-01 1.642602788521e-01 -1.656376834450e-01 1.670141919159e-01 1.683896932733e-01 1.697640765719e-01 -1.711372309210e-01 1.725090454930e-01 1.738794095319e-01 1.752482123615e-01 -1.766153433942e-01 1.779806921391e-01 1.793441482104e-01 1.807056013362e-01 -1.820649413663e-01 1.834220582810e-01 1.847768421993e-01 1.861291833873e-01 -1.874789722667e-01 1.888260994226e-01 1.901704556126e-01 1.915119317744e-01 -1.928504190344e-01 1.941858087161e-01 1.955179923480e-01 1.968468616722e-01 -1.981723086522e-01 1.994942254817e-01 2.008125045921e-01 2.021270386612e-01 -2.034377206212e-01 2.047444436666e-01 2.060471012624e-01 2.073455871525e-01 -2.086397953674e-01 2.099296202323e-01 2.112149563750e-01 2.124956987344e-01 -2.137717425678e-01 2.150429834592e-01 2.163093173272e-01 2.175706404327e-01 -2.188268493871e-01 2.200778411595e-01 2.213235130854e-01 2.225637628736e-01 -2.237984886144e-01 2.250275887872e-01 2.262509622683e-01 2.274685083383e-01 -2.286801266899e-01 2.298857174355e-01 2.310851811145e-01 2.322784187013e-01 -2.334653316120e-01 2.346458217128e-01 2.358197913265e-01 2.369871432407e-01 -2.381477807144e-01 2.393016074857e-01 2.404485277791e-01 2.415884463125e-01 -2.427212683044e-01 2.438468994814e-01 2.449652460847e-01 2.460762148778e-01 -2.471797131530e-01 2.482756487386e-01 2.493639300059e-01 2.504444658760e-01 -2.515171658267e-01 2.525819398992e-01 2.536386987050e-01 2.546873534324e-01 -2.557278158537e-01 2.567599983310e-01 2.577838138234e-01 2.587991758936e-01 -2.598059987137e-01 2.608041970725e-01 2.617936863812e-01 2.627743826801e-01 -2.637462026449e-01 2.647090635926e-01 2.656628834882e-01 2.666075809504e-01 -2.675430752579e-01 2.684692863554e-01 2.693861348596e-01 2.702935420651e-01 -2.711914299504e-01 2.720797211832e-01 2.729583391272e-01 2.738272078467e-01 -2.746862521131e-01 2.755353974098e-01 2.763745699386e-01 2.772036966244e-01 -2.780227051209e-01 2.788315238163e-01 2.796300818381e-01 2.804183090588e-01 -2.811961361010e-01 2.819634943422e-01 2.827203159204e-01 2.834665337389e-01 -2.842020814712e-01 2.849268935661e-01 2.856409052524e-01 2.863440525436e-01 -2.870362722429e-01 2.877175019478e-01 2.883876800545e-01 2.890467457627e-01 -2.896946390799e-01 2.903313008259e-01 2.909566726372e-01 2.915706969711e-01 -2.921733171103e-01 2.927644771665e-01 2.933441220852e-01 2.939121976490e-01 -2.944686504824e-01 2.950134280548e-01 2.955464786849e-01 2.960677515446e-01 -2.965771966622e-01 2.970747649265e-01 2.975604080899e-01 2.980340787726e-01 -2.984957304652e-01 2.989453175330e-01 2.993827952183e-01 2.998081196445e-01 -3.002212478188e-01 3.006221376354e-01 3.010107478787e-01 3.013870382261e-01 -3.017509692506e-01 3.021025024244e-01 3.024416001209e-01 3.027682256178e-01 -3.030823430996e-01 3.033839176601e-01 3.036729153050e-01 3.039493029542e-01 -3.042130484442e-01 3.044641205303e-01 3.047024888889e-01 3.049281241194e-01 -3.051409977466e-01 3.053410822225e-01 3.055283509279e-01 3.057027781750e-01 -3.058643392084e-01 3.060130102071e-01 3.061487682862e-01 3.062715914985e-01 -3.063814588357e-01 3.064783502299e-01 3.065622465553e-01 3.066331296288e-01 -3.066909822118e-01 3.067357880110e-01 3.067675316796e-01 3.067861988179e-01 -3.067917759749e-01 3.067842506484e-01 3.067636112863e-01 3.067298472868e-01 -3.066829489995e-01 3.066229077256e-01 3.065497157184e-01 3.064633661839e-01 -3.063638532809e-01 3.062511721212e-01 3.061253187701e-01 3.059862902461e-01 -3.058340845212e-01 3.056687005208e-01 3.054901381235e-01 3.052983981609e-01 -3.050934824175e-01 3.048753936301e-01 3.046441354877e-01 3.043997126308e-01 -3.041421306508e-01 3.038713960897e-01 3.035875164389e-01 3.032905001388e-01 -3.029803565781e-01 3.026570960922e-01 3.023207299629e-01 3.019712704172e-01 -3.016087306257e-01 3.012331247021e-01 3.008444677015e-01 3.004427756188e-01 -3.000280653881e-01 2.996003548804e-01 2.991596629023e-01 2.987060091947e-01 -2.982394144306e-01 2.977599002136e-01 2.972674890760e-01 2.967622044769e-01 -2.962440708002e-01 2.957131133525e-01 2.951693583611e-01 2.946128329715e-01 -2.940435652458e-01 2.934615841594e-01 2.928669195994e-01 2.922596023620e-01 -2.916396641496e-01 2.910071375683e-01 2.903620561257e-01 2.897044542274e-01 -2.890343671748e-01 2.883518311621e-01 2.876568832728e-01 2.869495614777e-01 -2.862299046309e-01 2.854979524671e-01 2.847537455983e-01 2.839973255105e-01 -2.832287345605e-01 2.824480159721e-01 2.816552138333e-01 2.808503730919e-01 -2.800335395528e-01 2.792047598735e-01 2.783640815610e-01 2.775115529676e-01 -2.766472232874e-01 2.757711425520e-01 2.748833616268e-01 2.739839322068e-01 -2.730729068125e-01 2.721503387859e-01 2.712162822861e-01 2.702707922851e-01 -2.693139245633e-01 2.683457357052e-01 2.673662830950e-01 2.663756249120e-01 -2.653738201259e-01 2.643609284924e-01 2.633370105482e-01 2.623021276065e-01 -2.612563417521e-01 2.601997158362e-01 2.591323134720e-01 2.580541990295e-01 -2.569654376303e-01 2.558660951426e-01 2.547562381760e-01 2.536359340764e-01 -2.525052509208e-01 2.513642575117e-01 2.502130233718e-01 2.490516187388e-01 -2.478801145597e-01 2.466985824853e-01 2.455070948648e-01 2.443057247399e-01 -2.430945458392e-01 2.418736325726e-01 2.406430600253e-01 2.394029039523e-01 -2.381532407721e-01 2.368941475610e-01 2.356257020471e-01 2.343479826045e-01 -2.330610682465e-01 2.317650386205e-01 2.304599740009e-01 2.291459552836e-01 -2.278230639793e-01 2.264913822074e-01 2.251509926894e-01 2.238019787431e-01 -2.224444242756e-01 2.210784137768e-01 2.197040323134e-01 2.183213655220e-01 -2.169304996024e-01 2.155315213114e-01 2.141245179554e-01 2.127095773847e-01 -2.112867879857e-01 2.098562386748e-01 2.084180188913e-01 2.069722185906e-01 -2.055189282373e-01 2.040582387984e-01 2.025902417358e-01 2.011150290001e-01 -1.996326930228e-01 1.981433267098e-01 1.966470234339e-01 1.951438770279e-01 -1.936339817772e-01 1.921174324128e-01 1.905943241041e-01 1.890647524514e-01 -1.875288134788e-01 1.859866036266e-01 1.844382197446e-01 1.828837590838e-01 -1.813233192899e-01 1.797569983950e-01 1.781848948109e-01 1.766071073212e-01 -1.750237350739e-01 1.734348775737e-01 1.718406346748e-01 1.702411065730e-01 -1.686363937981e-01 1.670265972067e-01 1.654118179737e-01 1.637921575857e-01 -1.621677178324e-01 1.605386007994e-01 1.589049088604e-01 1.572667446692e-01 -1.556242111524e-01 1.539774115009e-01 1.523264491631e-01 1.506714278361e-01 -1.490124514585e-01 1.473496242024e-01 1.456830504654e-01 1.440128348629e-01 -1.423390822201e-01 1.406618975642e-01 1.389813861166e-01 1.372976532846e-01 -1.356108046539e-01 1.339209459803e-01 1.322281831820e-01 1.305326223318e-01 -1.288343696485e-01 1.271335314898e-01 1.254302143434e-01 1.237245248199e-01 -1.220165696442e-01 1.203064556477e-01 1.185942897603e-01 1.168801790025e-01 -1.151642304774e-01 1.134465513624e-01 1.117272489014e-01 1.100064303970e-01 -1.082842032022e-01 1.065606747124e-01 1.048359523575e-01 1.031101435940e-01 -1.013833558967e-01 9.965569675111e-02 9.792727364492e-02 9.619819406051e-02 -9.446856546670e-02 9.273849531082e-02 9.100809101076e-02 8.927745994697e-02 -8.754670945452e-02 8.581594681513e-02 8.408527924925e-02 8.235481390807e-02 -8.062465786567e-02 7.889491811102e-02 7.716570154014e-02 7.543711494817e-02 -7.370926502151e-02 7.198225832993e-02 7.025620131871e-02 6.853120030082e-02 -6.680736144908e-02 6.508479078836e-02 6.336359418773e-02 6.164387735277e-02 -5.992574581770e-02 5.820930493774e-02 5.649465988130e-02 5.478191562229e-02 -5.307117693247e-02 5.136254837371e-02 4.965613429041e-02 4.795203880181e-02 -4.625036579443e-02 4.455121891444e-02 4.285470156015e-02 4.116091687443e-02 -3.946996773719e-02 3.778195675792e-02 3.609698626820e-02 3.441515831429e-02 -3.273657464967e-02 3.106133672767e-02 2.938954569415e-02 2.772130238011e-02 -2.605670729441e-02 2.439586061650e-02 2.273886218918e-02 2.108581151136e-02 -1.943680773091e-02 1.779194963746e-02 1.615133565533e-02 1.451506383642e-02 -1.288323185313e-02 1.125593699137e-02 9.633276143567e-03 8.015345801684e-03 -6.402242050331e-03 4.794060559864e-03 3.190896579538e-03 1.592844930701e-03 -1.458260599757e-14 -1.587544267285e-03 -3.169694374082e-03 -4.746357278045e-03 --6.317440398246e-03 - Type L N - 0 2 1 -0.000000000000e+00 1.531812340169e-05 6.126948195257e-05 1.378450217335e-04 -2.450296627545e-04 3.828022948606e-04 5.511357836816e-04 7.499969752689e-04 -9.793467030332e-04 1.239139794813e-03 1.529325081628e-03 1.849845407535e-03 -2.200637640512e-03 2.581632684502e-03 2.992755492811e-03 3.433925082305e-03 -3.905054548999e-03 4.406051084664e-03 4.936815994632e-03 5.497244716642e-03 -6.087226840902e-03 6.706646131177e-03 7.355380547103e-03 8.033302267492e-03 -8.740277714834e-03 9.476167580838e-03 1.024082685315e-02 1.103410484303e-02 -1.185584521429e-02 1.270588601313e-02 1.358405969917e-02 1.449019317754e-02 -1.542410783195e-02 1.638561955894e-02 1.737453880305e-02 1.839067059313e-02 -1.943381457961e-02 2.050376507291e-02 2.160031108270e-02 2.272323635834e-02 -2.387231943022e-02 2.504733365214e-02 2.624804724465e-02 2.747422333942e-02 -2.872562002452e-02 3.000199039070e-02 3.130308257862e-02 3.262863982701e-02 -3.397840052177e-02 3.535209824602e-02 3.674946183101e-02 3.817021540800e-02 -3.961407846100e-02 4.108076588039e-02 4.256998801741e-02 4.408145073957e-02 -4.561485548685e-02 4.716989932875e-02 4.874627502223e-02 5.034367107038e-02 -5.196177178197e-02 5.360025733177e-02 5.525880382165e-02 5.693708334246e-02 -5.863476403671e-02 6.035151016190e-02 6.208698215470e-02 6.384083669577e-02 -6.561272677535e-02 6.740230175951e-02 6.920920745711e-02 7.103308618742e-02 -7.287357684838e-02 7.473031498559e-02 7.660293286182e-02 7.849105952721e-02 -8.039432089007e-02 8.231233978824e-02 8.424473606111e-02 8.619112662205e-02 -8.815112553158e-02 9.012434407094e-02 9.211039081622e-02 9.410887171302e-02 -9.611939015157e-02 9.814154704239e-02 1.001749408923e-01 1.022191678810e-01 -1.042738219380e-01 1.063384948201e-01 1.084127761890e-01 1.104962536896e-01 -1.125885130285e-01 1.146891380531e-01 1.167977108304e-01 1.189138117271e-01 -1.210370194893e-01 1.231669113224e-01 1.253030629721e-01 1.274450488047e-01 -1.295924418883e-01 1.317448140741e-01 1.339017360777e-01 1.360627775606e-01 -1.382275072125e-01 1.403954928328e-01 1.425663014132e-01 1.447394992196e-01 -1.469146518750e-01 1.490913244415e-01 1.512690815034e-01 1.534474872496e-01 -1.556261055565e-01 1.578045000709e-01 1.599822342926e-01 1.621588716574e-01 -1.643339756200e-01 1.665071097367e-01 1.686778377484e-01 1.708457236630e-01 -1.730103318384e-01 1.751712270650e-01 1.773279746482e-01 1.794801404905e-01 -1.816272911743e-01 1.837689940436e-01 1.859048172859e-01 1.880343300143e-01 -1.901571023487e-01 1.922727054973e-01 1.943807118380e-01 1.964806949988e-01 -1.985722299387e-01 2.006548930280e-01 2.027282621286e-01 2.047919166733e-01 -2.068454377458e-01 2.088884081593e-01 2.109204125357e-01 2.129410373837e-01 -2.149498711770e-01 2.169465044320e-01 2.189305297846e-01 2.209015420676e-01 -2.228591383867e-01 2.248029181965e-01 2.267324833757e-01 2.286474383027e-01 -2.305473899294e-01 2.324319478554e-01 2.343007244016e-01 2.361533346828e-01 -2.379893966803e-01 2.398085313134e-01 2.416103625110e-01 2.433945172818e-01 -2.451606257844e-01 2.469083213969e-01 2.486372407853e-01 2.503470239719e-01 -2.520373144027e-01 2.537077590138e-01 2.553580082979e-01 2.569877163696e-01 -2.585965410301e-01 2.601841438308e-01 2.617501901369e-01 2.632943491899e-01 -2.648162941690e-01 2.663157022524e-01 2.677922546771e-01 2.692456367985e-01 -2.706755381492e-01 2.720816524961e-01 2.734636778979e-01 2.748213167611e-01 -2.761542758950e-01 2.774622665664e-01 2.787450045528e-01 2.800022101955e-01 -2.812336084509e-01 2.824389289415e-01 2.836179060060e-01 2.847702787484e-01 -2.858957910856e-01 2.869941917954e-01 2.880652345620e-01 2.891086780217e-01 -2.901242858070e-01 2.911118265905e-01 2.920710741263e-01 2.930018072925e-01 -2.939038101309e-01 2.947768718866e-01 2.956207870465e-01 2.964353553767e-01 -2.972203819589e-01 2.979756772254e-01 2.987010569940e-01 2.993963425011e-01 -3.000613604334e-01 3.006959429600e-01 3.012999277619e-01 3.018731580613e-01 -3.024154826495e-01 3.029267559140e-01 3.034068378642e-01 3.038555941563e-01 -3.042728961170e-01 3.046586207660e-01 3.050126508376e-01 3.053348748012e-01 -3.056251868804e-01 3.058834870714e-01 3.061096811600e-01 3.063036807379e-01 -3.064654032169e-01 3.065947718436e-01 3.066917157114e-01 3.067561697721e-01 -3.067880748467e-01 3.067873776342e-01 3.067540307204e-01 3.066879925844e-01 -3.065892276045e-01 3.064577060637e-01 3.062934041526e-01 3.060963039724e-01 -3.058663935363e-01 3.056036667694e-01 3.053081235086e-01 3.049797694999e-01 -3.046186163960e-01 3.042246817517e-01 3.037979890185e-01 3.033385675387e-01 -3.028464525373e-01 3.023216851136e-01 3.017643122315e-01 3.011743867083e-01 -3.005519672032e-01 2.998971182038e-01 2.992099100119e-01 2.984904187284e-01 -2.977387262371e-01 2.969549201865e-01 2.961390939721e-01 2.952913467161e-01 -2.944117832470e-01 2.935005140777e-01 2.925576553825e-01 2.915833289735e-01 -2.905776622752e-01 2.895407882988e-01 2.884728456147e-01 2.873739783248e-01 -2.862443360330e-01 2.850840738152e-01 2.838933521878e-01 2.826723370758e-01 -2.814211997793e-01 2.801401169391e-01 2.788292705020e-01 2.774888476838e-01 -2.761190409326e-01 2.747200478905e-01 2.732920713544e-01 2.718353192356e-01 -2.703500045193e-01 2.688363452219e-01 2.672945643488e-01 2.657248898497e-01 -2.641275545746e-01 2.625027962275e-01 2.608508573202e-01 2.591719851246e-01 -2.574664316246e-01 2.557344534665e-01 2.539763119094e-01 2.521922727737e-01 -2.503826063901e-01 2.485475875462e-01 2.466874954338e-01 2.448026135942e-01 -2.428932298635e-01 2.409596363168e-01 2.390021292116e-01 2.370210089303e-01 -2.350165799227e-01 2.329891506464e-01 2.309390335083e-01 2.288665448033e-01 -2.267720046544e-01 2.246557369502e-01 2.225180692832e-01 2.203593328868e-01 -2.181798625714e-01 2.159799966603e-01 2.137600769250e-01 2.115204485198e-01 -2.092614599151e-01 2.069834628316e-01 2.046868121724e-01 2.023718659557e-01 -2.000389852461e-01 1.976885340860e-01 1.953208794259e-01 1.929363910551e-01 -1.905354415306e-01 1.881184061067e-01 1.856856626638e-01 1.832375916362e-01 -1.807745759402e-01 1.782970009015e-01 1.758052541820e-01 1.732997257066e-01 -1.707808075892e-01 1.682488940588e-01 1.657043813846e-01 1.631476678019e-01 -1.605791534359e-01 1.579992402275e-01 1.554083318563e-01 1.528068336656e-01 -1.501951525856e-01 1.475736970569e-01 1.449428769541e-01 1.423031035084e-01 -1.396547892309e-01 1.369983478348e-01 1.343341941583e-01 1.316627440867e-01 -1.289844144746e-01 1.262996230684e-01 1.236087884274e-01 1.209123298467e-01 -1.182106672782e-01 1.155042212530e-01 1.127934128024e-01 1.100786633801e-01 -1.073603947839e-01 1.046390290768e-01 1.019149885091e-01 9.918869544009e-02 -9.646057225962e-02 9.373104130998e-02 9.100052480774e-02 8.826944476576e-02 -8.553822291522e-02 8.280728062779e-02 8.007703883803e-02 7.734791796576e-02 -7.462033783879e-02 7.189471761567e-02 6.917147570873e-02 6.645102970730e-02 -6.373379630117e-02 6.102019120422e-02 5.831062907844e-02 5.560552345805e-02 -5.290528667406e-02 5.021032977901e-02 4.752106247207e-02 4.483789302449e-02 -4.216122820534e-02 3.949147320761e-02 3.682903157474e-02 3.417430512744e-02 -3.152769389097e-02 2.888959602282e-02 2.626040774079e-02 2.364052325152e-02 -2.103033467948e-02 1.843023199642e-02 1.584060295128e-02 1.326183300059e-02 -1.069430523944e-02 8.138400332850e-03 5.594496447773e-03 3.062969185583e-03 -5.441915151351e-04 -1.961466293601e-03 -4.453636735344e-03 -6.931955134693e-03 --9.396059710736e-03 -1.184559164102e-02 -1.428019512492e-02 -1.669951744633e-02 --1.910320903574e-02 -2.149092353165e-02 -2.386231784126e-02 -2.621705220053e-02 --2.855479023354e-02 -3.087519901108e-02 -3.317794910861e-02 -3.546271466342e-02 --3.772917343111e-02 -3.997700684126e-02 -4.220590005238e-02 -4.441554200608e-02 --4.660562548045e-02 -4.877584714270e-02 -5.092590760091e-02 -5.305551145506e-02 --5.516436734719e-02 -5.725218801075e-02 -5.931869031913e-02 -6.136359533333e-02 --6.338662834875e-02 -6.538751894120e-02 -6.736600101193e-02 -6.932181283189e-02 --7.125469708505e-02 -7.316440091082e-02 -7.505067594559e-02 -7.691327836338e-02 --7.875196891555e-02 -8.056651296957e-02 -8.235668054694e-02 -8.412224636006e-02 --8.586298984828e-02 -8.757869521294e-02 -8.926915145144e-02 -9.093415239040e-02 --9.257349671783e-02 -9.418698801435e-02 -9.577443478340e-02 -9.733565048052e-02 --9.887045354160e-02 -1.003786674102e-01 -1.018601205638e-01 -1.033146465390e-01 --1.047420839562e-01 -1.061422765424e-01 -1.075150731537e-01 -1.088603277966e-01 --1.101778996484e-01 -1.114676530761e-01 -1.127294576547e-01 -1.139631881848e-01 --1.151687247082e-01 -1.163459525234e-01 -1.174947621997e-01 -1.186150495903e-01 --1.197067158441e-01 -1.207696674170e-01 -1.218038160818e-01 -1.228090789373e-01 --1.237853784159e-01 -1.247326422908e-01 -1.256508036816e-01 -1.265398010595e-01 --1.273995782505e-01 -1.282300844387e-01 -1.290312741676e-01 -1.298031073411e-01 --1.305455492228e-01 -1.312585704350e-01 -1.319421469560e-01 -1.325962601165e-01 --1.332208965957e-01 -1.338160484151e-01 -1.343817129326e-01 -1.349178928343e-01 --1.354245961266e-01 -1.359018361262e-01 -1.363496314496e-01 -1.367680060015e-01 --1.371569889621e-01 -1.375166147738e-01 -1.378469231263e-01 -1.381479589410e-01 --1.384197723545e-01 -1.386624187010e-01 -1.388759584938e-01 -1.390604574056e-01 --1.392159862483e-01 -1.393426209511e-01 -1.394404425382e-01 -1.395095371059e-01 --1.395499957974e-01 -1.395619147782e-01 -1.395453952097e-01 -1.395005432216e-01 --1.394274698847e-01 -1.393262911811e-01 -1.391971279746e-01 -1.390401059799e-01 --1.388553557311e-01 -1.386430125484e-01 -1.384032165054e-01 -1.381361123943e-01 --1.378418496908e-01 -1.375205825179e-01 -1.371724696091e-01 -1.367976742705e-01 --1.363963643424e-01 -1.359687121594e-01 -1.355148945107e-01 -1.350350925984e-01 --1.345294919964e-01 -1.339982826069e-01 -1.334416586176e-01 -1.328598184571e-01 --1.322529647502e-01 -1.316213042720e-01 -1.309650479014e-01 -1.302844105739e-01 --1.295796112340e-01 -1.288508727858e-01 -1.280984220447e-01 -1.273224896865e-01 --1.265233101970e-01 -1.257011218208e-01 -1.248561665089e-01 -1.239886898664e-01 --1.230989410988e-01 -1.221871729584e-01 -1.212536416895e-01 -1.202986069733e-01 --1.193223318724e-01 -1.183250827739e-01 -1.173071293331e-01 -1.162687444158e-01 --1.152102040403e-01 -1.141317873188e-01 -1.130337763986e-01 -1.119164564024e-01 --1.107801153683e-01 -1.096250441892e-01 -1.084515365519e-01 -1.072598888758e-01 --1.060504002507e-01 -1.048233723747e-01 -1.035791094915e-01 -1.023179183271e-01 --1.010401080265e-01 -9.974599008953e-02 -9.843587830681e-02 -9.711008869505e-02 --9.576893943208e-02 -9.441275079160e-02 -9.304184507758e-02 -9.165654655835e-02 --9.025718140046e-02 -8.884407760222e-02 -8.741756492698e-02 -8.597797483621e-02 --8.452564042233e-02 -8.306089634127e-02 -8.158407874494e-02 -8.009552521338e-02 --7.859557468684e-02 -7.708456739764e-02 -7.556284480191e-02 -7.403074951117e-02 --7.248862522382e-02 -7.093681665648e-02 -6.937566947530e-02 -6.780553022714e-02 --6.622674627067e-02 -6.463966570750e-02 -6.304463731317e-02 -6.144201046821e-02 --5.983213508912e-02 -5.821536155936e-02 -5.659204066043e-02 -5.496252350287e-02 --5.332716145741e-02 -5.168630608608e-02 -5.004030907349e-02 -4.838952215812e-02 --4.673429706373e-02 -4.507498543090e-02 -4.341193874871e-02 -4.174550828648e-02 --4.007604502575e-02 -3.840389959242e-02 -3.672942218896e-02 -3.505296252701e-02 --3.337486975997e-02 -3.169549241596e-02 -3.001517833099e-02 -2.833427458227e-02 --2.665312742194e-02 -2.497208221096e-02 -2.329148335329e-02 -2.161167423042e-02 --1.993299713617e-02 -1.825579321183e-02 -1.658040238160e-02 -1.490716328846e-02 --1.323641323026e-02 -1.156848809637e-02 -9.903722304502e-03 -8.242448738125e-03 --6.584998684143e-03 -4.931701771073e-03 -3.282885907621e-03 -1.638877221717e-03 -3.448719112250e-15 1.633423372251e-03 3.261072470652e-03 4.882628890828e-03 -6.497776306984e-03 - Type L N - 0 2 2 -0.000000000000e+00 2.812042383018e-05 1.124715359716e-04 2.530228335488e-04 -4.497235018850e-04 7.025024224280e-04 1.011268200281e-03 1.375909195927e-03 -1.796293564470e-03 2.272269302136e-03 2.803664299517e-03 3.390286402276e-03 -4.031923478537e-03 4.728343493447e-03 5.479294590785e-03 6.284505181453e-03 -7.143684038891e-03 8.056520401495e-03 9.022684081717e-03 1.004182558222e-02 -1.111357621856e-02 1.223754824884e-02 1.341333500987e-02 1.464051106009e-02 -1.591863232905e-02 1.724723627337e-02 1.862584203926e-02 2.005395063144e-02 -2.153104508840e-02 2.305659066398e-02 2.463003501520e-02 2.625080839620e-02 -2.791832385836e-02 2.963197745641e-02 3.139114846044e-02 3.319519957388e-02 -3.504347715725e-02 3.693531145758e-02 3.887001684353e-02 4.084689204604e-02 -4.286522040444e-02 4.492427011796e-02 4.702329450253e-02 4.916153225273e-02 -5.133820770892e-02 5.355253112932e-02 5.580369896706e-02 5.809089415195e-02 -6.041328637708e-02 6.277003238995e-02 6.516027628811e-02 6.758314981927e-02 -7.003777268559e-02 7.252325285227e-02 7.503868686016e-02 7.758316014232e-02 -8.015574734445e-02 8.275551264910e-02 8.538151010339e-02 8.803278395037e-02 -9.070836896367e-02 9.340729078542e-02 9.612856626742e-02 9.887120381516e-02 -1.016342037349e-01 1.044165585836e-01 1.072172535209e-01 1.100352666649e-01 -1.128695694486e-01 1.157191269805e-01 1.185828984057e-01 1.214598372700e-01 -1.243488918857e-01 1.272490056988e-01 1.301591176586e-01 1.330781625877e-01 -1.360050715545e-01 1.389387722459e-01 1.418781893421e-01 1.448222448916e-01 -1.477698586871e-01 1.507199486431e-01 1.536714311721e-01 1.566232215636e-01 -1.595742343614e-01 1.625233837420e-01 1.654695838935e-01 1.684117493930e-01 -1.713487955850e-01 1.742796389591e-01 1.772031975268e-01 1.801183911982e-01 -1.830241421574e-01 1.859193752378e-01 1.888030182955e-01 1.916740025816e-01 -1.945312631144e-01 1.973737390482e-01 2.002003740423e-01 2.030101166275e-01 -2.058019205707e-01 2.085747452379e-01 2.113275559548e-01 2.140593243657e-01 -2.167690287892e-01 2.194556545728e-01 2.221181944431e-01 2.247556488551e-01 -2.273670263375e-01 2.299513438355e-01 2.325076270507e-01 2.350349107771e-01 -2.375322392347e-01 2.399986663991e-01 2.424332563276e-01 2.448350834822e-01 -2.472032330478e-01 2.495368012477e-01 2.518348956542e-01 2.540966354957e-01 -2.563211519592e-01 2.585075884886e-01 2.606551010789e-01 2.627628585657e-01 -2.648300429095e-01 2.668558494765e-01 2.688394873135e-01 2.707801794184e-01 -2.726771630057e-01 2.745296897669e-01 2.763370261255e-01 2.780984534869e-01 -2.798132684832e-01 2.814807832119e-01 2.831003254701e-01 2.846712389819e-01 -2.861928836211e-01 2.876646356275e-01 2.890858878180e-01 2.904560497913e-01 -2.917745481267e-01 2.930408265772e-01 2.942543462559e-01 2.954145858171e-01 -2.965210416303e-01 2.975732279486e-01 2.985706770700e-01 2.995129394934e-01 -3.003995840672e-01 3.012301981318e-01 3.020043876556e-01 3.027217773641e-01 -3.033820108630e-01 3.039847507539e-01 3.045296787440e-01 3.050164957483e-01 -3.054449219859e-01 3.058146970686e-01 3.061255800835e-01 3.063773496684e-01 -3.065698040799e-01 3.067027612555e-01 3.067760588680e-01 3.067895543733e-01 -3.067431250515e-01 3.066366680406e-01 3.064701003632e-01 3.062433589472e-01 -3.059564006380e-01 3.056092022052e-01 3.052017603412e-01 3.047340916539e-01 -3.042062326513e-01 3.036182397201e-01 3.029701890971e-01 3.022621768332e-01 -3.014943187516e-01 3.006667503978e-01 2.997796269836e-01 2.988331233245e-01 -2.978274337691e-01 2.967627721233e-01 2.956393715662e-01 2.944574845607e-01 -2.932173827566e-01 2.919193568869e-01 2.905637166585e-01 2.891507906353e-01 -2.876809261152e-01 2.861544890011e-01 2.845718636646e-01 2.829334528044e-01 -2.812396772972e-01 2.794909760436e-01 2.776878058069e-01 2.758306410464e-01 -2.739199737440e-01 2.719563132257e-01 2.699401859764e-01 2.678721354492e-01 -2.657527218691e-01 2.635825220302e-01 2.613621290888e-01 2.590921523490e-01 -2.567732170448e-01 2.544059641153e-01 2.519910499753e-01 2.495291462808e-01 -2.470209396889e-01 2.444671316132e-01 2.418684379737e-01 2.392255889424e-01 -2.365393286837e-01 2.338104150904e-01 2.310396195152e-01 2.282277264974e-01 -2.253755334855e-01 2.224838505557e-01 2.195535001257e-01 2.165853166650e-01 -2.135801464012e-01 2.105388470220e-01 2.074622873738e-01 2.043513471571e-01 -2.012069166173e-01 1.980298962334e-01 1.948211964026e-01 1.915817371217e-01 -1.883124476660e-01 1.850142662648e-01 1.816881397746e-01 1.783350233486e-01 -1.749558801050e-01 1.715516807916e-01 1.681234034491e-01 1.646720330712e-01 -1.611985612636e-01 1.577039859003e-01 1.541893107782e-01 1.506555452704e-01 -1.471037039775e-01 1.435348063777e-01 1.399498764750e-01 1.363499424470e-01 -1.327360362911e-01 1.291091934701e-01 1.254704525563e-01 1.218208548756e-01 -1.181614441508e-01 1.144932661444e-01 1.108173683010e-01 1.071347993896e-01 -1.034466091460e-01 9.975384791502e-02 9.605756629286e-02 9.235881477011e-02 -8.865864337493e-02 8.495810131684e-02 8.125823663126e-02 7.756009582487e-02 -7.386472352188e-02 7.017316211140e-02 6.648645139600e-02 6.280562824158e-02 -5.913172622872e-02 5.546577530554e-02 5.180880144230e-02 4.816182628779e-02 -4.452586682763e-02 4.090193504467e-02 3.729103758150e-02 3.369417540531e-02 -3.011234347509e-02 2.654653041137e-02 2.299771816864e-02 1.946688171047e-02 -1.595498868745e-02 1.246299911824e-02 8.991865073543e-03 5.542530363382e-03 -2.115930227621e-03 -1.287008970087e-03 -4.665370044848e-03 -8.018245289454e-03 --1.134473676960e-02 -1.464395661529e-02 -1.791502730828e-02 -2.115708196560e-02 --2.436926461882e-02 -2.755073048929e-02 -3.070064625892e-02 -3.381819033663e-02 --3.690255312038e-02 -3.995293725450e-02 -4.296855788249e-02 -4.594864289503e-02 --4.889243317310e-02 -5.179918282636e-02 -5.466815942637e-02 -5.749864423487e-02 --6.028993242690e-02 -6.304133330863e-02 -6.575217053008e-02 -6.842178229231e-02 --7.104952154932e-02 -7.363475620441e-02 -7.617686930102e-02 -7.867525920794e-02 --8.112933979891e-02 -8.353854062645e-02 -8.590230708989e-02 -8.822010059767e-02 --9.049139872368e-02 -9.271569535770e-02 -9.489250084984e-02 -9.702134214903e-02 --9.910176293542e-02 -1.011333237466e-01 -1.031156020979e-01 -1.050481925963e-01 --1.069307070481e-01 -1.087627745608e-01 -1.105440416380e-01 -1.122741722691e-01 --1.139528480110e-01 -1.155797680655e-01 -1.171546493488e-01 -1.186772265551e-01 --1.201472522143e-01 -1.215644967427e-01 -1.229287484875e-01 -1.242398137650e-01 --1.254975168922e-01 -1.267017002123e-01 -1.278522241133e-01 -1.289489670408e-01 --1.299918255037e-01 -1.309807140745e-01 -1.319155653819e-01 -1.327963300981e-01 --1.336229769193e-01 -1.343954925401e-01 -1.351138816210e-01 -1.357781667502e-01 --1.363883883992e-01 -1.369446048713e-01 -1.374468922449e-01 -1.378953443098e-01 --1.382900724979e-01 -1.386312058074e-01 -1.389188907211e-01 -1.391532911187e-01 --1.393345881826e-01 -1.394629802985e-01 -1.395386829495e-01 -1.395619286044e-01 --1.395329666006e-01 -1.394520630206e-01 -1.393195005628e-01 -1.391355784077e-01 --1.389006120768e-01 -1.386149332875e-01 -1.382788898014e-01 -1.378928452679e-01 --1.374571790618e-01 -1.369722861164e-01 -1.364385767506e-01 -1.358564764912e-01 --1.352264258904e-01 -1.345488803374e-01 -1.338243098662e-01 -1.330531989577e-01 --1.322360463375e-01 -1.313733647684e-01 -1.304656808394e-01 -1.295135347489e-01 --1.285174800843e-01 -1.274780835967e-01 -1.263959249722e-01 -1.252715965978e-01 --1.241057033243e-01 -1.228988622245e-01 -1.216517023480e-01 -1.203648644718e-01 --1.190390008473e-01 -1.176747749439e-01 -1.162728611890e-01 -1.148339447044e-01 --1.133587210396e-01 -1.118478959018e-01 -1.103021848828e-01 -1.087223131831e-01 --1.071090153326e-01 -1.054630349093e-01 -1.037851242546e-01 -1.020760441864e-01 --1.003365637095e-01 -9.856745972424e-02 -9.676951673183e-02 -9.494352653873e-02 --9.309028795819e-02 -9.121060651026e-02 -8.930529411987e-02 -8.737516881326e-02 --8.542105441291e-02 -8.344378023091e-02 -8.144418076104e-02 -7.942309536966e-02 --7.738136798544e-02 -7.531984678813e-02 -7.323938389640e-02 -7.114083505502e-02 --6.902505932126e-02 -6.689291875087e-02 -6.474527808360e-02 -6.258300442839e-02 --6.040696694843e-02 -5.821803654612e-02 -5.601708554807e-02 -5.380498739029e-02 --5.158261630364e-02 -4.935084699963e-02 -4.711055435682e-02 -4.486261310772e-02 --4.260789752655e-02 -4.034728111771e-02 -3.808163630530e-02 -3.581183412371e-02 --3.353874390932e-02 -3.126323299356e-02 -2.898616639734e-02 -2.670840652700e-02 --2.443081287186e-02 -2.215424170354e-02 -1.987954577704e-02 -1.760757403388e-02 --1.533917130715e-02 -1.307517802878e-02 -1.081642993911e-02 -8.563757798700e-03 --6.317987102690e-03 -4.079937797693e-03 -1.850424001331e-03 3.697462754655e-04 -2.579771403298e-03 4.778856406204e-03 6.966213230517e-03 9.141061010585e-03 -1.130262633127e-02 1.345014348713e-02 1.558285473817e-02 1.770001056217e-02 -1.980086990332e-02 2.188470041732e-02 2.395077871259e-02 2.599839058780e-02 -2.802683126538e-02 3.003540562106e-02 3.202342840941e-02 3.399022448515e-02 -3.593512902031e-02 3.785748771706e-02 3.975665701624e-02 4.163200430140e-02 -4.348290809837e-02 4.530875827032e-02 4.710895620815e-02 4.888291501618e-02 -5.063005969317e-02 5.234982730849e-02 5.404166717344e-02 5.570504100770e-02 -5.733942310076e-02 5.894430046840e-02 6.051917300409e-02 6.206355362527e-02 -6.357696841449e-02 6.505895675542e-02 6.650907146351e-02 6.792687891150e-02 -6.931195914959e-02 7.066390602023e-02 7.198232726759e-02 7.326684464163e-02 -7.451709399671e-02 7.573272538478e-02 7.691340314312e-02 7.805880597647e-02 -7.916862703380e-02 8.024257397943e-02 8.128036905865e-02 8.228174915775e-02 -8.324646585855e-02 8.417428548724e-02 8.506498915771e-02 8.591837280926e-02 -8.673424723874e-02 8.751243812706e-02 8.825278606009e-02 8.895514654406e-02 -8.961939001526e-02 9.024540184427e-02 9.083308233453e-02 9.138234671541e-02 -9.189312512975e-02 9.236536261582e-02 9.279901908383e-02 9.319406928693e-02 -9.355050278675e-02 9.386832391348e-02 9.414755172060e-02 9.438821993413e-02 -9.459037689662e-02 9.475408550577e-02 9.487942314775e-02 9.496648162530e-02 -9.501536708061e-02 9.502619991302e-02 9.499911469155e-02 9.493426006246e-02 -9.483179865159e-02 9.469190696188e-02 9.451477526582e-02 9.430060749305e-02 -9.404962111313e-02 9.376204701352e-02 9.343812937277e-02 9.307812552910e-02 -9.268230584436e-02 9.225095356338e-02 9.178436466890e-02 9.128284773200e-02 -9.074672375824e-02 9.017632602944e-02 8.957199994129e-02 8.893410283673e-02 -8.826300383534e-02 8.755908365865e-02 8.682273445152e-02 8.605435959968e-02 -8.525437354350e-02 8.442320158798e-02 8.356127970921e-02 8.266905435722e-02 -8.174698225538e-02 8.079553019644e-02 7.981517483525e-02 7.880640247828e-02 -7.776970887001e-02 7.670559897632e-02 7.561458676484e-02 7.449719498256e-02 -7.335395493060e-02 7.218540623629e-02 7.099209662273e-02 6.977458167578e-02 -6.853342460873e-02 6.726919602462e-02 6.598247367633e-02 6.467384222462e-02 -6.334389299411e-02 6.199322372732e-02 6.062243833697e-02 5.923214665645e-02 -5.782296418875e-02 5.639551185381e-02 5.495041573448e-02 5.348830682111e-02 -5.200982075493e-02 5.051559757034e-02 4.900628143611e-02 4.748252039569e-02 -4.594496610667e-02 4.439427357957e-02 4.283110091591e-02 4.125610904585e-02 -3.966996146536e-02 3.807332397307e-02 3.646686440693e-02 3.485125238070e-02 -3.322715902046e-02 3.159525670120e-02 2.995621878360e-02 2.831071935103e-02 -2.665943294700e-02 2.500303431309e-02 2.334219812741e-02 2.167759874379e-02 -2.000990993170e-02 1.833980461710e-02 1.666795462418e-02 1.499503041830e-02 -1.332170084993e-02 1.164863290000e-02 9.976491426473e-03 8.305938912502e-03 -6.637635215999e-03 4.972237320923e-03 3.310399090263e-03 1.652771020840e-03 -1.408221227094e-14 -1.647270935606e-03 -3.288402839377e-03 -4.922761091662e-03 --6.549715634615e-03 - Type L N - 0 2 3 -0.000000000000e+00 4.457248234190e-05 1.782643907072e-04 4.009991057074e-04 -7.126489820193e-04 1.113035415164e-03 1.601928940844e-03 2.179049363396e-03 -2.844065911803e-03 3.596597423938e-03 4.436212558915e-03 5.362430037398e-03 -6.374718909681e-03 7.472498851489e-03 8.655140487224e-03 9.921965740519e-03 -1.127224821193e-02 1.270521358352e-02 1.422004005004e-02 1.581585877668e-02 -1.749175438281e-02 1.924676545176e-02 2.107988506605e-02 2.299006136809e-02 -2.497619814568e-02 2.703715544230e-02 2.917175019161e-02 3.137875687592e-02 -3.365690820823e-02 3.600489583748e-02 3.842137107649e-02 4.090494565238e-02 -4.345419247888e-02 4.606764645011e-02 4.874380525550e-02 5.148113021525e-02 -5.427804713593e-02 5.713294718568e-02 6.004418778865e-02 6.301009353797e-02 -6.602895712690e-02 6.909904029756e-02 7.221857480672e-02 7.538576340809e-02 -7.859878085057e-02 8.185577489191e-02 8.515486732719e-02 8.849415503146e-02 -9.187171101615e-02 9.528558549845e-02 9.873380698317e-02 1.022143833564e-01 -1.057253029904e-01 1.092645358591e-01 1.128300346638e-01 1.164197359675e-01 -1.200315613388e-01 1.236634185032e-01 1.273132025023e-01 1.309787968591e-01 -1.346580747501e-01 1.383489001823e-01 1.420491291753e-01 1.457566109472e-01 -1.494691891042e-01 1.531847028329e-01 1.569009880945e-01 1.606158788208e-01 -1.643272081105e-01 1.680328094259e-01 1.717305177888e-01 1.754181709754e-01 -1.790936107092e-01 1.827546838509e-01 1.863992435853e-01 1.900251506049e-01 -1.936302742875e-01 1.972124938699e-01 2.007696996148e-01 2.042997939718e-01 -2.078006927304e-01 2.112703261660e-01 2.147066401766e-01 2.181075974111e-01 -2.214711783874e-01 2.247953825998e-01 2.280782296165e-01 2.313177601642e-01 -2.345120372012e-01 2.376591469778e-01 2.407572000828e-01 2.438043324763e-01 -2.467987065080e-01 2.497385119204e-01 2.526219668358e-01 2.554473187279e-01 -2.582128453763e-01 2.609168558033e-01 2.635576911935e-01 2.661337257950e-01 -2.686433678012e-01 2.710850602144e-01 2.734572816884e-01 2.757585473522e-01 -2.779874096115e-01 2.801424589308e-01 2.822223245923e-01 2.842256754343e-01 -2.861512205662e-01 2.879977100613e-01 2.897639356266e-01 2.914487312484e-01 -2.930509738149e-01 2.945695837145e-01 2.960035254092e-01 2.973518079833e-01 -2.986134856677e-01 2.997876583384e-01 3.008734719886e-01 3.018701191768e-01 -3.027768394469e-01 3.035929197232e-01 3.043176946788e-01 3.049505470763e-01 -3.054909080832e-01 3.059382575588e-01 3.062921243152e-01 3.065520863497e-01 -3.067177710513e-01 3.067888553784e-01 3.067650660094e-01 3.066461794661e-01 -3.064320222090e-01 3.061224707043e-01 3.057174514647e-01 3.052169410610e-01 -3.046209661066e-01 3.039296032146e-01 3.031429789265e-01 3.022612696142e-01 -3.012847013538e-01 3.002135497725e-01 2.990481398679e-01 2.977888458001e-01 -2.964360906574e-01 2.949903461941e-01 2.934521325427e-01 2.918220178985e-01 -2.901006181790e-01 2.882885966564e-01 2.863866635645e-01 2.843955756802e-01 -2.823161358792e-01 2.801491926669e-01 2.778956396848e-01 2.755564151915e-01 -2.731325015206e-01 2.706249245140e-01 2.680347529323e-01 2.653630978410e-01 -2.626111119753e-01 2.597799890815e-01 2.568709632367e-01 2.538853081470e-01 -2.508243364242e-01 2.476893988424e-01 2.444818835731e-01 2.412032154019e-01 -2.378548549247e-01 2.344382977253e-01 2.309550735345e-01 2.274067453716e-01 -2.237949086680e-01 2.201211903739e-01 2.163872480489e-01 2.125947689363e-01 -2.087454690225e-01 2.048410920811e-01 2.008834087031e-01 1.968742153133e-01 -1.928153331736e-01 1.887086073738e-01 1.845559058101e-01 1.803591181529e-01 -1.761201548032e-01 1.718409458392e-01 1.675234399531e-01 1.631696033788e-01 -1.587814188122e-01 1.543608843220e-01 1.499100122556e-01 1.454308281366e-01 -1.409253695573e-01 1.363956850664e-01 1.318438330511e-01 1.272718806159e-01 -1.226819024584e-01 1.180759797413e-01 1.134561989637e-01 1.088246508299e-01 -1.041834291183e-01 9.953462954955e-02 9.488034865550e-02 9.022268264941e-02 -8.556372629778e-02 8.090557179462e-02 7.625030763888e-02 7.160001751551e-02 -6.695677918083e-02 6.232266335288e-02 5.769973260732e-02 5.309004027948e-02 -4.849562937322e-02 4.391853147720e-02 3.936076568912e-02 3.482433754858e-02 -3.031123797906e-02 2.582344223978e-02 2.136290888780e-02 1.693157875109e-02 -1.253137391310e-02 8.164196709282e-03 3.831928736336e-03 -4.635701255367e-04 --4.720462676645e-03 -8.936935347656e-03 -1.311119913473e-02 -1.724149051946e-02 --2.132607237305e-02 -2.536323484439e-02 -2.935129623136e-02 -3.328860383506e-02 --3.717353479639e-02 -4.100449691463e-02 -4.477992944750e-02 -4.849830389238e-02 --5.215812474809e-02 -5.575793025712e-02 -5.929629312760e-02 -6.277182123488e-02 --6.618315830222e-02 -6.952898456029e-02 -7.280801738516e-02 -7.601901191437e-02 --7.916076164086e-02 -8.223209898438e-02 -8.523189584023e-02 -8.815906410481e-02 --9.101255617803e-02 -9.379136544205e-02 -9.649452671631e-02 -9.912111668852e-02 --1.016702543216e-01 -1.041411012358e-01 -1.065328620670e-01 -1.088447847996e-01 --1.110761610748e-01 -1.132263264739e-01 -1.152946607763e-01 -1.172805881930e-01 --1.191835775734e-01 -1.210031425882e-01 -1.227388418859e-01 -1.243902792240e-01 --1.259571035753e-01 -1.274390092077e-01 -1.288357357390e-01 -1.301470681664e-01 --1.313728368700e-01 -1.325129175914e-01 -1.335672313864e-01 -1.345357445526e-01 --1.354184685322e-01 -1.362154597889e-01 -1.369268196606e-01 -1.375526941866e-01 --1.380932739105e-01 -1.385487936582e-01 -1.389195322919e-01 -1.392058124400e-01 --1.394080002019e-01 -1.395265048306e-01 -1.395617783907e-01 -1.395143153936e-01 --1.393846524088e-01 -1.391733676538e-01 -1.388810805603e-01 -1.385084513188e-01 --1.380561804008e-01 -1.375250080601e-01 -1.369157138120e-01 -1.362291158925e-01 --1.354660706961e-01 -1.346274721936e-01 -1.337142513307e-01 -1.327273754061e-01 --1.316678474315e-01 -1.305367054722e-01 -1.293350219701e-01 -1.280639030485e-01 --1.267244877994e-01 -1.253179475545e-01 -1.238454851391e-01 -1.223083341104e-01 --1.207077579798e-01 -1.190450494209e-01 -1.173215294620e-01 -1.155385466653e-01 --1.136974762920e-01 -1.117997194550e-01 -1.098467022581e-01 -1.078398749240e-01 --1.057807109104e-01 -1.036707060153e-01 -1.015113774717e-01 -9.930426303258e-02 --9.705092004665e-02 -9.475292452496e-02 -9.241187019960e-02 -9.002936757466e-02 --8.760704297005e-02 -8.514653755883e-02 -8.264950639862e-02 -8.011761745753e-02 --7.755255063536e-02 -7.495599678058e-02 -7.232965670356e-02 -6.967524018682e-02 --6.699446499276e-02 -6.428905586941e-02 -6.156074355494e-02 -5.881126378136e-02 --5.604235627800e-02 -5.325576377550e-02 -5.045323101064e-02 -4.763650373284e-02 --4.480732771270e-02 -4.196744775324e-02 -3.911860670445e-02 -3.626254448162e-02 --3.340099708804e-02 -3.053569564265e-02 -2.766836541325e-02 -2.480072485565e-02 --2.193448465945e-02 -1.907134680097e-02 -1.621300360381e-02 -1.336113680758e-02 --1.051741664539e-02 -7.683500930553e-03 -4.861034152950e-03 -2.051646585752e-03 -7.430465972123e-04 3.521446192831e-03 6.281969828383e-03 9.023052809042e-03 -1.174314895274e-02 1.444073141190e-02 1.711429348171e-02 1.976234939429e-02 -2.238343509855e-02 2.497610902513e-02 2.753895283621e-02 3.007057215951e-02 -3.256959730641e-02 3.503468397357e-02 3.746451392777e-02 3.985779567360e-02 -4.221326510369e-02 4.452968613109e-02 4.680585130346e-02 4.904058239882e-02 -5.123273100254e-02 5.338117906521e-02 5.548483944120e-02 5.754265640760e-02 -5.955360616327e-02 6.151669730783e-02 6.343097130024e-02 6.529550289684e-02 -6.710940056866e-02 6.887180689773e-02 7.058189895224e-02 7.223888864046e-02 -7.384202304310e-02 7.539058472419e-02 7.688389202009e-02 7.832129930679e-02 -7.970219724519e-02 8.102601300434e-02 8.229221046263e-02 8.350029038675e-02 -8.464979058844e-02 8.574028605906e-02 8.677138908178e-02 8.774274932152e-02 -8.865405389270e-02 8.950502740454e-02 9.029543198437e-02 9.102506727852e-02 -9.169377043125e-02 9.230141604154e-02 9.284791609794e-02 9.333321989151e-02 -9.375731390701e-02 9.412022169248e-02 9.442200370720e-02 9.466275714840e-02 -9.484261575671e-02 9.496174960057e-02 9.502036483976e-02 9.501870346840e-02 -9.495704303729e-02 9.483569635626e-02 9.465501117629e-02 9.441536985208e-02 -9.411718898495e-02 9.376091904661e-02 9.334704398391e-02 9.287608080494e-02 -9.234857914673e-02 9.176512082490e-02 9.112631936550e-02 9.043281951951e-02 -8.968529676013e-02 8.888445676345e-02 8.803103487260e-02 8.712579554598e-02 -8.616953178973e-02 8.516306457505e-02 8.410724224049e-02 8.300293987988e-02 -8.185105871610e-02 8.065252546120e-02 7.940829166328e-02 7.811933304056e-02 -7.678664880301e-02 7.541126096205e-02 7.399421362883e-02 7.253657230130e-02 -7.103942314083e-02 6.950387223863e-02 6.793104487253e-02 6.632208475452e-02 -6.467815326968e-02 6.300042870677e-02 6.129010548114e-02 5.954839335034e-02 -5.777651662299e-02 5.597571336138e-02 5.414723457828e-02 5.229234342845e-02 -5.041231439542e-02 4.850843247399e-02 4.658199234892e-02 4.463429757040e-02 -4.266665972674e-02 4.068039761486e-02 3.867683640893e-02 3.665730682787e-02 -3.462314430212e-02 3.257568814007e-02 3.051628069495e-02 2.844626653232e-02 -2.636699159894e-02 2.427980239344e-02 2.218604513920e-02 2.008706496005e-02 -1.798420505918e-02 1.587880590191e-02 1.377220440256e-02 1.166573311614e-02 -9.560719435159e-03 7.458484792203e-03 5.360343868524e-03 3.267603809314e-03 -1.181563446000e-03 -8.964874739414e-04 -2.965269049220e-03 -5.023511978570e-03 --7.069958305755e-03 -9.103362155313e-03 -1.112249045863e-02 -1.312612366988e-02 --1.511305647156e-02 -1.708209846895e-02 -1.903207487348e-02 -2.096182717423e-02 --2.287021379752e-02 -2.475611075395e-02 -2.661841227277e-02 -2.845603142301e-02 --3.026790072120e-02 -3.205297272523e-02 -3.381022061409e-02 -3.553863875319e-02 --3.723724324485e-02 -3.890507246382e-02 -4.054118757736e-02 -4.214467304981e-02 --4.371463713124e-02 -4.525021232991e-02 -4.675055586845e-02 -4.821485012336e-02 --4.964230304767e-02 -5.103214857662e-02 -5.238364701599e-02 -5.369608541310e-02 --5.496877791009e-02 -5.620106607950e-02 -5.739231924181e-02 -5.854193476503e-02 --5.964933834590e-02 -6.071398427289e-02 -6.173535567067e-02 -6.271296472603e-02 --6.364635289518e-02 -6.453509109232e-02 -6.537877985944e-02 -6.617704951726e-02 --6.692956029730e-02 -6.763600245510e-02 -6.829609636440e-02 -6.890959259254e-02 --6.947627195680e-02 -6.999594556194e-02 -7.046845481878e-02 -7.089367144401e-02 --7.127149744118e-02 -7.160186506299e-02 -7.188473675489e-02 -7.212010508019e-02 --7.230799262665e-02 -7.244845189474e-02 -7.254156516766e-02 -7.258744436323e-02 --7.258623086790e-02 -7.253809535283e-02 -7.244323757238e-02 -7.230188614518e-02 --7.211429831779e-02 -7.188075971132e-02 -7.160158405118e-02 -7.127711288012e-02 --7.090771525475e-02 -7.049378742595e-02 -7.003575250320e-02 -6.953406010323e-02 --6.898918598315e-02 -6.840163165842e-02 -6.777192400586e-02 -6.710061485204e-02 --6.638828054735e-02 -6.563552152595e-02 -6.484296185208e-02 -6.401124875290e-02 --6.314105213826e-02 -6.223306410774e-02 -6.128799844526e-02 -6.030659010162e-02 --5.928959466533e-02 -5.823778782215e-02 -5.715196480352e-02 -5.603293982456e-02 --5.488154551165e-02 -5.369863232030e-02 -5.248506794353e-02 -5.124173671111e-02 --4.996953898025e-02 -4.866939051794e-02 -4.734222187547e-02 -4.598897775549e-02 --4.461061637206e-02 -4.320810880402e-02 -4.178243834230e-02 -4.033459983128e-02 --3.886559900497e-02 -3.737645181818e-02 -3.586818377323e-02 -3.434182924260e-02 --3.279843078799e-02 -3.123903847615e-02 -2.966470919199e-02 -2.807650594939e-02 --2.647549720008e-02 -2.486275614114e-02 -2.323936002146e-02 -2.160638944768e-02 --1.996492768990e-02 -1.831605998782e-02 -1.666087285751e-02 -1.500045339944e-02 --1.333588860800e-02 -1.166826468316e-02 -9.998666344508e-03 -8.328176148179e-03 --6.657873807088e-03 -4.988835514865e-03 -3.322133273924e-03 -1.658834228060e-03 -9.121078281037e-15 1.653313965754e-03 3.300059054207e-03 4.939194125200e-03 -6.569686152075e-03 - Type L N - 0 2 4 -0.000000000000e+00 6.467701348754e-05 2.586542723594e-04 5.817704695828e-04 -1.033756907113e-03 1.614237711735e-03 2.322730138670e-03 3.158644962277e-03 -4.121286952181e-03 5.209855435365e-03 6.423444943362e-03 7.761045944157e-03 -9.221545658202e-03 1.080372895779e-02 1.250627934912e-02 1.432778003624e-02 -1.626671506593e-02 1.832147055267e-02 2.049033598262e-02 2.277150559559e-02 -2.516307984377e-02 2.766306692620e-02 3.026938439748e-02 3.297986084961e-02 -3.579223766544e-02 3.870417084234e-02 4.171323288467e-02 4.481691476326e-02 -4.801262794057e-02 5.129770645970e-02 5.466940909557e-02 5.812492156647e-02 -6.166135880428e-02 6.527576728134e-02 6.896512739216e-02 7.272635588803e-02 -7.655630836242e-02 8.045178178523e-02 8.440951708386e-02 8.842620176875e-02 -9.249847260157e-02 9.662291830356e-02 1.007960823020e-01 1.050144655125e-01 -1.092745291549e-01 1.135726976002e-01 1.179053612464e-01 1.222688794215e-01 -1.266595833095e-01 1.310737788995e-01 1.355077499530e-01 1.399577609892e-01 -1.444200602838e-01 1.488908828806e-01 1.533664536125e-01 1.578429901293e-01 -1.623167059309e-01 1.667838134018e-01 1.712405268457e-01 1.756830655180e-01 -1.801076566519e-01 1.845105384774e-01 1.888879632307e-01 1.932362001498e-01 -1.975515384562e-01 2.018302903183e-01 2.060687937959e-01 2.102634157614e-01 -2.144105547971e-01 2.185066440656e-01 2.225481541504e-01 2.265315958651e-01 -2.304535230296e-01 2.343105352087e-01 2.380992804136e-01 2.418164577626e-01 -2.454588200992e-01 2.490231765652e-01 2.525063951274e-01 2.559054050554e-01 -2.592171993486e-01 2.624388371103e-01 2.655674458674e-01 2.686002238332e-01 -2.715344421129e-01 2.743674468476e-01 2.770966612978e-01 2.797195878629e-01 -2.822338100357e-01 2.846369942908e-01 2.869268919043e-01 2.891013407043e-01 -2.911582667514e-01 2.930956859452e-01 2.949117055595e-01 2.966045257012e-01 -2.981724406948e-01 2.996138403890e-01 3.009272113863e-01 3.021111381935e-01 -3.031643042930e-01 3.040854931329e-01 3.048735890371e-01 3.055275780325e-01 -3.060465485947e-01 3.064296923100e-01 3.066763044547e-01 3.067857844901e-01 -3.067576364736e-01 3.065914693852e-01 3.062869973702e-01 3.058440398959e-01 -3.052625218249e-01 3.045424734030e-01 3.036840301624e-01 3.026874327411e-01 -3.015530266175e-01 3.002812617612e-01 2.988726922006e-01 2.973279755071e-01 -2.956478721966e-01 2.938332450497e-01 2.918850583496e-01 2.898043770398e-01 -2.875923658023e-01 2.852502880559e-01 2.827795048773e-01 2.801814738444e-01 -2.774577478034e-01 2.746099735617e-01 2.716398905060e-01 2.685493291479e-01 -2.653402095987e-01 2.620145399736e-01 2.585744147272e-01 2.550220129220e-01 -2.513595964312e-01 2.475895080768e-01 2.437141697060e-01 2.397360802058e-01 -2.356578134586e-01 2.314820162408e-01 2.272114060649e-01 2.228487689682e-01 -2.183969572496e-01 2.138588871558e-01 2.092375365199e-01 2.045359423538e-01 -1.997571983959e-01 1.949044526175e-01 1.899809046891e-01 1.849898034084e-01 -1.799344440933e-01 1.748181659408e-01 1.696443493552e-01 1.644164132466e-01 -1.591378123033e-01 1.538120342391e-01 1.484425970188e-01 1.430330460631e-01 -1.375869514369e-01 1.321079050210e-01 1.265995176723e-01 1.210654163718e-01 -1.155092413657e-01 1.099346432998e-01 1.043452803504e-01 9.874481535428e-02 -9.313691293955e-02 8.752523666008e-02 8.191344613574e-02 7.630519420076e-02 -7.070412406258e-02 6.511386647350e-02 5.953803691739e-02 5.398023281373e-02 -4.844403074131e-02 4.293298368379e-02 3.745061829925e-02 3.200043221616e-02 -2.658589135768e-02 2.121042729658e-02 1.587743464290e-02 1.059026846634e-02 -5.352241755580e-03 1.666229163423e-04 -4.963366689589e-03 -1.003455516262e-02 --1.504382243890e-02 -1.998810261728e-02 -2.486438623791e-02 -2.966972251065e-02 --3.440122149161e-02 -3.905605620602e-02 -4.363146471594e-02 -4.812475213110e-02 --5.253329256133e-02 -5.685453100917e-02 -6.108598520115e-02 -6.522524735635e-02 --6.926998589097e-02 -7.321794705754e-02 -7.706695651764e-02 -8.081492084693e-02 --8.445982897137e-02 -8.799975353358e-02 -9.143285218847e-02 -9.475736882699e-02 --9.797163472740e-02 -1.010740696331e-01 -1.040631827561e-01 -1.069375737062e-01 --1.096959333441e-01 -1.123370445592e-01 -1.148597829702e-01 -1.172631175495e-01 --1.195461111700e-01 -1.217079210747e-01 -1.237477992681e-01 -1.256650928302e-01 --1.274592441522e-01 -1.291297910945e-01 -1.306763670666e-01 -1.320987010287e-01 --1.333966174168e-01 -1.345700359890e-01 -1.356189715955e-01 -1.365435338717e-01 --1.373439268546e-01 -1.380204485240e-01 -1.385734902677e-01 -1.390035362722e-01 --1.393111628400e-01 -1.394970376326e-01 -1.395619188418e-01 -1.395066542893e-01 --1.393321804551e-01 -1.390395214367e-01 -1.386297878394e-01 -1.381041755992e-01 --1.374639647384e-01 -1.367105180573e-01 -1.358452797606e-01 -1.348697740218e-01 --1.337856034858e-01 -1.325944477119e-01 -1.312980615577e-01 -1.298982735065e-01 --1.283969839388e-01 -1.267961633501e-01 -1.250978505159e-01 -1.233041506066e-01 --1.214172332533e-01 -1.194393305656e-01 -1.173727351053e-01 -1.152197978151e-01 --1.129829259064e-01 -1.106645807066e-01 -1.082672754685e-01 -1.057935731439e-01 --1.032460841225e-01 -1.006274639388e-01 -9.794041094889e-02 -9.518766397925e-02 --9.237199994887e-02 -8.949623146779e-02 -8.656320441344e-02 -8.357579548706e-02 --8.053690975243e-02 -7.744947815873e-02 -7.431645504994e-02 -7.114081566276e-02 --6.792555361516e-02 -6.467367838778e-02 -6.138821280021e-02 -5.807219048446e-02 --5.472865335745e-02 -5.136064909501e-02 -4.797122860918e-02 -4.456344353117e-02 --4.114034370191e-02 -3.770497467241e-02 -3.426037521587e-02 -3.080957485374e-02 --2.735559139769e-02 -2.390142850954e-02 -2.045007328115e-02 -1.700449383626e-02 --1.356763695622e-02 -1.014242573161e-02 -6.731757241574e-03 -3.338500262781e-03 -3.450699010114e-05 3.384459090659e-03 6.708585591882e-03 1.000415318049e-02 -1.326846779269e-02 1.649887668971e-02 1.969277049147e-02 2.284758516679e-02 -2.596080397851e-02 2.902995938214e-02 3.205263487648e-02 3.502646680471e-02 -3.794914610479e-02 4.081842000759e-02 4.363209368161e-02 4.638803182301e-02 -4.908416018980e-02 5.171846707893e-02 5.428900474540e-02 5.679389076215e-02 -5.923130931991e-02 6.159951246595e-02 6.389682128100e-02 6.612162699342e-02 -6.827239202987e-02 7.034765100187e-02 7.234601162746e-02 7.426615558751e-02 -7.610683931608e-02 7.786689472434e-02 7.954522985768e-02 8.114082948563e-02 -8.265275562436e-02 8.408014799135e-02 8.542222439227e-02 8.667828103984e-02 -8.784769280450e-02 8.892991339717e-02 8.992447548386e-02 9.083099073243e-02 -9.164914979164e-02 9.237872220263e-02 9.301955624322e-02 9.357157870541e-02 -9.403479460629e-02 9.440928683305e-02 9.469521572246e-02 9.489281857541e-02 -9.500240910722e-02 9.502437683422e-02 9.495918639761e-02 9.480737682502e-02 -9.456956073099e-02 9.424642345693e-02 9.383872215173e-02 9.334728479382e-02 -9.277300915591e-02 9.211686171330e-02 9.137987649695e-02 9.056315389263e-02 -8.966785938705e-02 8.869522226255e-02 8.764653424145e-02 8.652314808142e-02 -8.532647612334e-02 8.405798879298e-02 8.271921305792e-02 8.131173084133e-02 -7.983717739398e-02 7.829723962611e-02 7.669365440074e-02 7.502820679000e-02 -7.330272829607e-02 7.151909503859e-02 6.967922590995e-02 6.778508070034e-02 -6.583865819438e-02 6.384199424077e-02 6.179715979705e-02 5.970625895115e-02 -5.757142692138e-02 5.539482803698e-02 5.317865370071e-02 5.092512033565e-02 -4.863646731778e-02 4.631495489640e-02 4.396286210410e-02 4.158248465821e-02 -3.917613285563e-02 3.674612946285e-02 3.429480760297e-02 3.182450864173e-02 -2.933758007429e-02 2.683637341465e-02 2.432324208952e-02 2.180053933849e-02 -1.927061612244e-02 1.673581904170e-02 1.419848826614e-02 1.166095547863e-02 -9.125541833832e-03 6.594555934047e-03 4.070291823748e-03 1.555027004599e-03 --9.489795274114e-04 -3.439489221052e-03 -5.914285883511e-03 -8.371177567057e-03 --1.080799842710e-02 -1.322261055011e-02 -1.561290574995e-02 -1.797680733099e-02 --2.031227181671e-02 -2.261729064236e-02 -2.488989181013e-02 -2.712814150576e-02 --2.933014567510e-02 -3.149405155936e-02 -3.361804918796e-02 -3.570037282766e-02 --3.773930238696e-02 -3.973316477450e-02 -4.168033521061e-02 -4.357923849086e-02 --4.542835020074e-02 -4.722619788044e-02 -4.897136213900e-02 -5.066247771695e-02 --5.229823449659e-02 -5.387737845932e-02 -5.539871258930e-02 -5.686109772272e-02 --5.826345334227e-02 -5.960475831614e-02 -6.088405158118e-02 -6.210043276973e-02 --6.325306277975e-02 -6.434116428803e-02 -6.536402220605e-02 -6.632098407841e-02 --6.721146042362e-02 -6.803492501707e-02 -6.879091511625e-02 -6.947903162814e-02 --7.009893921874e-02 -7.065036636499e-02 -7.113310534910e-02 -7.154701219554e-02 --7.189200655093e-02 -7.216807150707e-02 -7.237525336760e-02 -7.251366135851e-02 --7.258346728307e-02 -7.258490512157e-02 -7.251827057659e-02 -7.238392056411e-02 --7.218227265139e-02 -7.191380444207e-02 -7.157905290935e-02 -7.117861367794e-02 --7.071314025570e-02 -7.018334321567e-02 -6.958998932949e-02 -6.893390065319e-02 --6.821595356620e-02 -6.743707776469e-02 -6.659825521027e-02 -6.570051903513e-02 --6.474495240479e-02 -6.373268733955e-02 -6.266490349590e-02 -6.154282690909e-02 --6.036772869814e-02 -5.914092373457e-02 -5.786376927608e-02 -5.653766356675e-02 --5.516404440485e-02 -5.374438767992e-02 -5.228020588032e-02 -5.077304657284e-02 --4.922449085577e-02 -4.763615178696e-02 -4.600967278826e-02 -4.434672602804e-02 --4.264901078311e-02 -4.091825178181e-02 -3.915619752961e-02 -3.736461861899e-02 --3.554530602502e-02 -3.370006938831e-02 -3.183073528694e-02 -2.993914549896e-02 --2.802715525691e-02 -2.609663149633e-02 -2.414945109941e-02 -2.218749913577e-02 --2.021266710177e-02 -1.822685116001e-02 -1.623195038059e-02 -1.422986498576e-02 --1.222249459954e-02 -1.021173650382e-02 -8.199483902594e-03 -6.187624195818e-03 --4.178037264425e-03 -2.172593768075e-03 -1.731534570916e-04 1.818436499896e-03 -3.800343171147e-03 5.770749498377e-03 7.727855913281e-03 9.669881932597e-03 -1.159506773032e-02 1.350167568574e-02 1.538799190588e-02 1.725232772119e-02 -1.909302115304e-02 2.090843835186e-02 2.269697500474e-02 2.445705771117e-02 -2.618714532593e-02 2.788573026788e-02 2.955133979361e-02 3.118253723494e-02 -3.277792319915e-02 3.433613673106e-02 3.585585643598e-02 3.733580156260e-02 -3.877473304497e-02 4.017145450282e-02 4.152481319930e-02 4.283370095549e-02 -4.409705502095e-02 4.531385889966e-02 4.648314313074e-02 4.760398602330e-02 -4.867551434504e-02 4.969690396393e-02 5.066738044268e-02 5.158621958553e-02 -5.245274793696e-02 5.326634323216e-02 5.402643479884e-02 5.473250391019e-02 -5.538408408892e-02 5.598076136215e-02 5.652217446705e-02 5.700801500733e-02 -5.743802756036e-02 5.781200973523e-02 5.812981218165e-02 5.839133854989e-02 -5.859654540203e-02 5.874544207454e-02 5.883809049276e-02 5.887460493731e-02 -5.885515176296e-02 5.877994907029e-02 5.864926633065e-02 5.846342396483e-02 -5.822279287599e-02 5.792779393747e-02 5.757889743600e-02 5.717662247100e-02 -5.672153631070e-02 5.621425370570e-02 5.565543616079e-02 5.504579116584e-02 -5.438607138658e-02 5.367707381606e-02 5.291963888783e-02 5.211464955159e-02 -5.126303031252e-02 5.036574623496e-02 4.942380191178e-02 4.843824040031e-02 -4.741014212590e-02 4.634062375435e-02 4.523083703419e-02 4.408196761011e-02 -4.289523380852e-02 4.167188539674e-02 4.041320231670e-02 3.912049339471e-02 -3.779509502828e-02 3.643836985150e-02 3.505170538017e-02 3.363651263793e-02 -3.219422476486e-02 3.072629560979e-02 2.923419830763e-02 2.771942384323e-02 -2.618347960300e-02 2.462788791564e-02 2.305418458359e-02 2.146391740623e-02 -1.985864469655e-02 1.823993379249e-02 1.660935956441e-02 1.496850292005e-02 -1.331894930838e-02 1.166228722378e-02 1.000010671186e-02 8.333997878296e-03 -6.665549402163e-03 4.996347054970e-03 3.327972226886e-03 1.662000461435e-03 --1.197198642185e-15 -1.656469662533e-03 -3.305859209674e-03 -4.946630921512e-03 --6.577260077874e-03 - Type L N - 0 2 5 -0.000000000000e+00 8.843454829340e-05 3.536376431318e-04 7.953077383734e-04 -1.412942629879e-03 2.205840009229e-03 3.173098239600e-03 4.313617352846e-03 -5.626100265255e-03 7.109054211153e-03 8.760792392709e-03 1.057943584416e-02 -1.256291550825e-02 1.470897452253e-02 1.701517071310e-02 1.947887929282e-02 -2.209729576101e-02 2.486743900144e-02 2.778615457505e-02 3.085011820372e-02 -3.405583944115e-02 3.739966552686e-02 4.087778541869e-02 4.448623399960e-02 -4.822089645382e-02 5.207751280750e-02 5.605168262877e-02 6.013886988193e-02 -6.433440793030e-02 6.863350468212e-02 7.303124787377e-02 7.752261048427e-02 -8.210245627513e-02 8.676554544919e-02 9.150654042227e-02 9.632001170095e-02 -1.012004438601e-01 1.061422416135e-01 1.111397359702e-01 1.161871904705e-01 -1.212788074943e-01 1.264087346346e-01 1.315710711288e-01 1.367598743410e-01 -1.419691662889e-01 1.471929402053e-01 1.524251671307e-01 1.576598025256e-01 -1.628907928987e-01 1.681120824415e-01 1.733176196618e-01 1.785013640105e-01 -1.836572924922e-01 1.887794062539e-01 1.938617371432e-01 1.988983542297e-01 -2.038833702822e-01 2.088109481935e-01 2.136753073473e-01 2.184707299184e-01 -2.231915671013e-01 2.278322452582e-01 2.323872719807e-01 2.368512420586e-01 -2.412188433491e-01 2.454848625395e-01 2.496441907972e-01 2.536918293015e-01 -2.576228946506e-01 2.614326241370e-01 2.651163808874e-01 2.686696588600e-01 -2.720880876944e-01 2.753674374084e-01 2.785036229372e-01 2.814927085096e-01 -2.843309118560e-01 2.870146082457e-01 2.895403343460e-01 2.919047919020e-01 -2.941048512312e-01 2.961375545295e-01 2.980001189869e-01 2.996899397059e-01 -3.012045924239e-01 3.025418360331e-01 3.036996148978e-01 3.046760609651e-01 -3.054694956680e-01 3.060784316181e-01 3.065015740870e-01 3.067378222743e-01 -3.067862703616e-01 3.066462083512e-01 3.063171226887e-01 3.057986966696e-01 -3.050908106292e-01 3.041935419158e-01 3.031071646480e-01 3.018321492558e-01 -3.003691618077e-01 2.987190631224e-01 2.968829076694e-01 2.948619422570e-01 -2.926576045123e-01 2.902715211520e-01 2.877055060494e-01 2.849615580978e-01 -2.820418588735e-01 2.789487701018e-01 2.756848309287e-01 2.722527550014e-01 -2.686554273614e-01 2.648959011542e-01 2.609773941583e-01 2.569032851397e-01 -2.526771100344e-01 2.483025579636e-01 2.437834670878e-01 2.391238203025e-01 -2.343277407826e-01 2.293994873787e-01 2.243434498729e-01 2.191641440970e-01 -2.138662069216e-01 2.084543911193e-01 2.029335601097e-01 1.973086825914e-01 -1.915848270677e-01 1.857671562716e-01 1.798609214971e-01 1.738714568434e-01 -1.678041733775e-01 1.616645532235e-01 1.554581435837e-01 1.491905506995e-01 -1.428674337582e-01 1.364944987533e-01 1.300774923044e-01 1.236221954444e-01 -1.171344173807e-01 1.106199892374e-01 1.040847577856e-01 9.753457916862e-02 -9.097531263009e-02 8.441281425030e-02 7.785293069927e-02 7.130149301279e-02 -6.476431039851e-02 5.824716407897e-02 5.175580117834e-02 4.529592865971e-02 -3.887320731955e-02 3.249324584599e-02 2.616159494743e-02 1.988374155795e-02 -1.366510312583e-02 7.511021991405e-03 1.426759860405e-03 -4.582507621236e-03 --1.051169618524e-02 -1.635581814577e-02 -2.210998748552e-02 -2.776942481765e-02 --3.332946221840e-02 -3.878554792496e-02 -4.413325089389e-02 -4.936826521520e-02 --5.448641437729e-02 -5.948365537855e-02 -6.435608268117e-02 -6.909993200312e-02 --7.371158394439e-02 -7.818756744389e-02 -8.252456306333e-02 -8.671940609498e-02 --9.076908949011e-02 -9.467076660523e-02 -9.842175376361e-02 -1.020195326294e-01 --1.054617523925e-01 -1.087462317616e-01 -1.118709607641e-01 -1.148341023516e-01 --1.176339938086e-01 -1.202691479643e-01 -1.227382542061e-01 -1.250401792949e-01 --1.271739679803e-01 -1.291388434172e-01 -1.309342073825e-01 -1.325596402933e-01 --1.340149010263e-01 -1.352999265391e-01 -1.364148312948e-01 -1.373599064912e-01 --1.381356190951e-01 -1.387426106843e-01 -1.391816960985e-01 -1.394538619017e-01 --1.395602646572e-01 -1.395022290196e-01 -1.392812456445e-01 -1.388989689197e-01 --1.383572145215e-01 -1.376579567977e-01 -1.368033259832e-01 -1.357956052489e-01 --1.346372275904e-01 -1.333307725589e-01 -1.318789628388e-01 -1.302846606768e-01 --1.285508641666e-01 -1.266807033933e-01 -1.246774364437e-01 -1.225444452862e-01 --1.202852315255e-01 -1.179034120385e-01 -1.154027144950e-01 -1.127869727698e-01 --1.100601222512e-01 -1.072261950524e-01 -1.042893151305e-01 -1.012536933192e-01 --9.812362228211e-02 -9.490347139121e-02 -9.159768153769e-02 -8.821075988073e-02 --8.474727454061e-02 -8.121184924242e-02 -7.760915791657e-02 -7.394391926241e-02 --7.022089128150e-02 -6.644486578661e-02 -6.262066289307e-02 -5.875312549865e-02 --5.484711375854e-02 -5.090749956161e-02 -4.693916101441e-02 -4.294697693916e-02 --3.893582139206e-02 -3.491055820812e-02 -3.087603557870e-02 -2.683708066795e-02 --2.279849427414e-02 -1.876504554194e-02 -1.474146673158e-02 -1.073244805069e-02 --6.742632554596e-03 -2.776611120726e-03 1.161082497283e-03 5.065976530412e-03 -8.933665964617e-03 1.275981721555e-02 1.654017270256e-02 2.027055531696e-02 -2.394687277990e-02 2.756512188498e-02 3.112139262123e-02 3.461187217210e-02 -3.803284878607e-02 4.138071551510e-02 4.465197381679e-02 4.784323701676e-02 -5.095123362750e-02 5.397281052057e-02 5.690493594875e-02 5.974470241534e-02 -6.248932938769e-02 6.513616585240e-02 6.768269270979e-02 7.012652500537e-02 -7.246541399637e-02 7.469724905143e-02 7.682005938187e-02 7.883201560314e-02 -8.073143112517e-02 8.251676337075e-02 8.418661482097e-02 8.573973388724e-02 -8.717501560948e-02 8.849150218024e-02 8.968838329487e-02 9.076499632787e-02 -9.172082633592e-02 9.255550588818e-02 9.326881472473e-02 9.386067924413e-02 -9.433117182145e-02 9.468050995802e-02 9.490905526471e-02 9.501731228041e-02 -9.500592712786e-02 9.487568600880e-02 9.462751354110e-02 9.426247094018e-02 -9.378175404753e-02 9.318669120930e-02 9.247874100793e-02 9.165948985008e-02 -9.073064941431e-02 8.969405396193e-02 8.855165751490e-02 8.730553090442e-02 -8.595785869433e-02 8.451093598347e-02 8.296716509107e-02 8.132905212973e-02 -7.959920347039e-02 7.778032210396e-02 7.587520390419e-02 7.388673379677e-02 -7.181788183948e-02 6.967169921838e-02 6.745131416515e-02 6.515992780077e-02 -6.280080991070e-02 6.037729465690e-02 5.789277623210e-02 5.535070446159e-02 -5.275458035810e-02 5.010795163516e-02 4.741440818459e-02 4.467757752352e-02 -4.190112021655e-02 3.908872527867e-02 3.624410556442e-02 3.337099314900e-02 -3.047313470670e-02 2.755428689236e-02 2.461821173135e-02 2.166867202349e-02 -1.870942676643e-02 1.574422660391e-02 1.277680930427e-02 9.810895274485e-03 -6.850183114978e-03 3.898345220493e-03 9.590234320046e-04 -1.964175255218e-03 --4.867682922457e-03 -7.747974892461e-03 -1.060157382366e-02 -1.342505372899e-02 --1.621504391486e-02 -1.896823283569e-02 -2.168137185984e-02 -2.435127894258e-02 --2.697484220215e-02 -2.954902339493e-02 -3.207086128584e-02 -3.453747491041e-02 --3.694606672492e-02 -3.929392564125e-02 -4.157842994323e-02 -4.379705008142e-02 --4.594735134334e-02 -4.802699639650e-02 -5.003374770156e-02 -5.196546979325e-02 --5.382013142674e-02 -5.559580758741e-02 -5.729068136213e-02 -5.890304567025e-02 --6.043130485283e-02 -6.187397611862e-02 -6.322969084568e-02 -6.449719573756e-02 --6.567535383323e-02 -6.676314537007e-02 -6.775966849945e-02 -6.866413985459e-02 --6.947589497063e-02 -7.019438855687e-02 -7.081919462152e-02 -7.135000644933e-02 --7.178663643267e-02 -7.212901575695e-02 -7.237719394112e-02 -7.253133823464e-02 --7.259173287195e-02 -7.255877818608e-02 -7.243298958297e-02 -7.221499637829e-02 --7.190554049871e-02 -7.150547504972e-02 -7.101576275240e-02 -7.043747425129e-02 --6.977178629627e-02 -6.901997980085e-02 -6.818343777997e-02 -6.726364317018e-02 --6.626217653535e-02 -6.518071366117e-02 -6.402102304188e-02 -6.278496326262e-02 --6.147448028115e-02 -6.009160461257e-02 -5.863844842095e-02 -5.711720252171e-02 --5.553013329895e-02 -5.387957954164e-02 -5.216794920309e-02 -5.039771608784e-02 --4.857141647040e-02 -4.669164565024e-02 -4.476105444761e-02 -4.278234564460e-02 --4.075827037615e-02 -3.869162447569e-02 -3.658524477991e-02 -3.444200539771e-02 --3.226481394767e-02 -3.005660776926e-02 -2.782035011212e-02 -2.555902630867e-02 --2.327563993447e-02 -2.097320896137e-02 -1.865476190813e-02 -1.632333399337e-02 --1.398196329553e-02 -1.163368692469e-02 -9.281537210775e-03 -6.928537913070e-03 --4.577700455416e-03 -2.232020191838e-03 1.055272929233e-04 2.431989843527e-03 -4.744442350352e-03 7.039990317716e-03 9.315773379721e-03 1.156896875954e-02 -1.379679466805e-02 1.599651363785e-02 1.816543578862e-02 2.030092202019e-02 -2.240038712946e-02 2.446130284760e-02 2.648120079414e-02 2.845767534433e-02 -3.038838640685e-02 3.227106210840e-02 3.410350138237e-02 3.588357645862e-02 -3.760923525171e-02 3.927850364479e-02 4.088948766690e-02 4.244037556115e-02 -4.392943974174e-02 4.535503863768e-02 4.671561842131e-02 4.800971462001e-02 -4.923595360928e-02 5.039305398596e-02 5.147982782019e-02 5.249518178498e-02 -5.343811816249e-02 5.430773572606e-02 5.510323049754e-02 5.582389637918e-02 -5.646912565992e-02 5.703840939578e-02 5.753133766442e-02 5.794759969388e-02 -5.828698386590e-02 5.854937759416e-02 5.873476707813e-02 5.884323693321e-02 -5.887496969808e-02 5.883024522034e-02 5.870943992158e-02 5.851302594329e-02 -5.824157017513e-02 5.789573316698e-02 5.747626792690e-02 5.698401860662e-02 -5.641991907667e-02 5.578499139343e-02 5.508034416032e-02 5.430717078558e-02 -5.346674763916e-02 5.256043211145e-02 5.158966057661e-02 5.055594626341e-02 -4.946087703648e-02 4.830611309131e-02 4.709338456586e-02 4.582448907248e-02 -4.450128915314e-02 4.312570966174e-02 4.169973507682e-02 4.022540674857e-02 -3.870482008348e-02 3.714012167076e-02 3.553350635409e-02 3.388721425273e-02 -3.220352773586e-02 3.048476835413e-02 2.873329373248e-02 2.695149442828e-02 -2.514179075879e-02 2.330662960220e-02 2.144848117626e-02 1.956983579870e-02 -1.767320063363e-02 1.576109642796e-02 1.383605424216e-02 1.190061217943e-02 -9.957312117337e-03 8.008696446310e-03 6.057304818763e-03 4.105670913186e-03 -2.156319217133e-03 2.117618331311e-04 -1.725504688503e-03 -3.653002486023e-03 --5.568275487930e-03 -7.468892476130e-03 -9.352450106845e-03 -1.121657588556e-02 --1.305893109241e-02 -1.487721365444e-02 -1.666916096130e-02 -1.843255262097e-02 --2.016521315220e-02 -2.186501461049e-02 -2.352987914451e-02 -2.515778147985e-02 --2.674675132734e-02 -2.829487571296e-02 -2.980030122677e-02 -3.126123618819e-02 --3.267595272522e-02 -3.404278876514e-02 -3.536014993456e-02 -3.662651136660e-02 --3.784041941333e-02 -3.900049326142e-02 -4.010542644944e-02 -4.115398828509e-02 --4.214502516090e-02 -4.307746176710e-02 -4.395030220038e-02 -4.476263096751e-02 --4.551361388285e-02 -4.620249885901e-02 -4.682861658991e-02 -4.739138112576e-02 --4.789029033958e-02 -4.832492628501e-02 -4.869495544526e-02 -4.900012887330e-02 --4.924028222339e-02 -4.941533567430e-02 -4.952529374462e-02 -4.957024500079e-02 --4.955036165852e-02 -4.946589907844e-02 -4.931719515703e-02 -4.910466961379e-02 --4.882882317603e-02 -4.849023666264e-02 -4.808956996814e-02 -4.762756094888e-02 --4.710502421290e-02 -4.652284981543e-02 -4.588200186193e-02 -4.518351702076e-02 --4.442850294764e-02 -4.361813662421e-02 -4.275366261309e-02 -4.183639123185e-02 --4.086769664858e-02 -3.984901490169e-02 -3.878184184664e-02 -3.766773103258e-02 --3.650829151167e-02 -3.530518558430e-02 -3.406012648303e-02 -3.277487599862e-02 --3.145124205122e-02 -3.009107621011e-02 -2.869627116519e-02 -2.726875815371e-02 --2.581050434560e-02 -2.432351019094e-02 -2.280980673299e-02 -2.127145289039e-02 --1.971053271207e-02 -1.812915260851e-02 -1.652943856288e-02 -1.491353332576e-02 --1.328359359712e-02 -1.164178719905e-02 -9.990290243072e-03 -8.331284295577e-03 --6.666953545004e-03 -4.999481974467e-03 -3.331050543370e-03 -1.663834381623e-03 --2.402669613501e-15 1.658297479800e-03 3.308917071970e-03 4.949734646731e-03 -6.578645620480e-03 - Type L N - 0 2 6 -0.000000000000e+00 1.158449375594e-04 4.632072064351e-04 1.041569421675e-03 -1.850070109030e-03 2.887504951123e-03 4.152328531465e-03 5.642656572168e-03 -7.356268662154e-03 9.290611471781e-03 1.144280244933e-02 1.380963399377e-02 -1.638757809772e-02 1.917279145368e-02 2.216112101614e-02 2.534811001120e-02 -2.872900438505e-02 3.229875968163e-02 3.605204833944e-02 3.998326739671e-02 -4.408654659363e-02 4.835575685968e-02 5.278451917357e-02 5.736621378273e-02 -6.209398976888e-02 6.696077494550e-02 7.195928607265e-02 7.708203937428e-02 -8.232136134232e-02 8.766939981191e-02 9.311813529135e-02 9.865939253019e-02 -1.042848523085e-01 1.099860634300e-01 1.157544549012e-01 1.215813482797e-01 -1.274579701716e-01 1.333754648620e-01 1.393249070584e-01 1.452973147290e-01 -1.512836620174e-01 1.572748922140e-01 1.632619307658e-01 1.692356983058e-01 -1.751871236816e-01 1.811071569663e-01 1.869867824310e-01 1.928170314606e-01 -1.985889953941e-01 2.042938382712e-01 2.099228094656e-01 2.154672561873e-01 -2.209186358363e-01 2.262685281881e-01 2.315086473959e-01 2.366308537893e-01 -2.416271654543e-01 2.464897695783e-01 2.512110335412e-01 2.557835157396e-01 -2.601999761268e-01 2.644533864541e-01 2.685369401979e-01 2.724440621603e-01 -2.761684177267e-01 2.797039217702e-01 2.830447471879e-01 2.861853330583e-01 -2.891203924071e-01 2.918449195724e-01 2.943541971564e-01 2.966438025567e-01 -2.987096140655e-01 3.005478165298e-01 3.021549065652e-01 3.035276973145e-01 -3.046633227465e-01 3.055592414877e-01 3.062132401832e-01 3.066234363819e-01 -3.067882809417e-01 3.067065599532e-01 3.063773961785e-01 3.058002500042e-01 -3.049749199075e-01 3.039015424360e-01 3.025805917007e-01 3.010128783852e-01 -2.991995482717e-01 2.971420802874e-01 2.948422840751e-01 2.923022970908e-01 -2.895245812357e-01 2.865119190253e-01 2.832674093043e-01 2.797944625130e-01 -2.760967955125e-01 2.721784259784e-01 2.680436663704e-01 2.636971174878e-01 -2.591436616213e-01 2.543884553110e-01 2.494369217232e-01 2.442947426555e-01 -2.389678501851e-01 2.334624179713e-01 2.277848522262e-01 2.219417823669e-01 -2.159400513646e-01 2.097867058034e-01 2.034889856661e-01 1.970543138596e-01 -1.904902854990e-01 1.838046569639e-01 1.770053347441e-01 1.701003640922e-01 -1.630979174991e-01 1.560062830099e-01 1.488338523982e-01 1.415891092149e-01 -1.342806167313e-01 1.269170057925e-01 1.195069625999e-01 1.120592164414e-01 -1.045825273864e-01 9.708567396355e-02 8.957744084060e-02 8.206660652352e-02 -7.456193109275e-02 6.707214399493e-02 5.960593190768e-02 5.217192669509e-02 -4.477869347138e-02 3.743471878998e-02 3.014839897518e-02 2.292802861292e-02 -1.578178921756e-02 8.717738090536e-03 1.743797387035e-03 -5.132256593808e-03 --1.190280388006e-02 -1.856039104457e-02 -2.509774115471e-02 -3.150776344014e-02 --3.778356266528e-02 -4.391844819326e-02 -4.990594272891e-02 -5.573979072874e-02 --6.141396646626e-02 -6.692268174186e-02 -7.226039322664e-02 -7.742180943043e-02 --8.240189728471e-02 -8.719588833174e-02 -9.179928451186e-02 -9.620786354151e-02 --1.004176838751e-01 -1.044250892447e-01 -1.082267127718e-01 -1.118194806463e-01 --1.152006153691e-01 -1.183676385534e-01 -1.213183732835e-01 -1.240509460273e-01 --1.265637881026e-01 -1.288556366940e-01 -1.309255354236e-01 -1.327728344720e-01 --1.343971902544e-01 -1.357985646509e-01 -1.369772237950e-01 -1.379337364231e-01 --1.386689717884e-01 -1.391840971439e-01 -1.394805747999e-01 -1.395601587609e-01 --1.394248909492e-01 -1.390770970207e-01 -1.385193817826e-01 -1.377546242179e-01 --1.367859721294e-01 -1.356168364080e-01 -1.342508849388e-01 -1.326920361532e-01 --1.309444522377e-01 -1.290125320121e-01 -1.269009034870e-01 -1.246144161144e-01 --1.221581327425e-01 -1.195373212894e-01 -1.167574461467e-01 -1.138241593296e-01 --1.107432913851e-01 -1.075208420744e-01 -1.041629708430e-01 -1.006759870946e-01 --9.706634028308e-02 -9.334060983866e-02 -8.950549494349e-02 -8.556780417290e-02 --8.153444501805e-02 -7.741241330612e-02 -7.320878253450e-02 -6.893069313497e-02 --6.458534168457e-02 -6.017997007931e-02 -5.572185468727e-02 -5.121829549741e-02 --4.667660528048e-02 -4.210409877825e-02 -3.750808193722e-02 -3.289584120295e-02 --2.827463289080e-02 -2.365167264895e-02 -1.903412502911e-02 -1.442909318035e-02 --9.843608681133e-03 -5.284621524332e-03 -7.589902698312e-04 3.726527621051e-03 -8.165285255404e-03 1.255075556925e-02 1.687654036556e-02 2.113637911688e-02 -2.532415752022e-02 2.943391579212e-02 3.345985669244e-02 3.739635326564e-02 -4.123795628897e-02 4.497940141745e-02 4.861561601591e-02 5.214172566905e-02 -5.555306036077e-02 5.884516031483e-02 6.201378148917e-02 6.505490071711e-02 -6.796472048876e-02 7.073967336707e-02 7.337642603310e-02 7.587188295594e-02 -7.822318968311e-02 8.042773574815e-02 8.248315719229e-02 8.438733869820e-02 -8.613841533394e-02 8.773477390620e-02 8.917505392232e-02 9.045814816127e-02 -9.158320285438e-02 9.254961747711e-02 9.335704415391e-02 9.400538667863e-02 -9.449479915370e-02 9.482568425169e-02 9.499869110366e-02 9.501471281903e-02 -9.487488364239e-02 9.458057575324e-02 9.413339571510e-02 9.353518058094e-02 -9.278799366247e-02 9.189411997126e-02 9.085606134019e-02 8.967653123410e-02 -8.835844925907e-02 8.690493538012e-02 8.531930385757e-02 8.360505691270e-02 -8.176587813370e-02 7.980562563325e-02 7.772832496954e-02 7.553816184269e-02 -7.323947457889e-02 7.083674641501e-02 6.833459759641e-02 6.573777730123e-02 -6.305115540435e-02 6.027971409480e-02 5.742853936005e-02 5.450281235135e-02 -5.150780064392e-02 4.844884940628e-02 4.533137249275e-02 4.216084347362e-02 -3.894278661706e-02 3.568276783738e-02 3.238638562369e-02 2.905926196354e-02 -2.570703327558e-02 2.233534136558e-02 1.894982441988e-02 1.555610805018e-02 -1.215979640360e-02 8.766463351712e-03 5.381643771999e-03 2.010824935074e-03 --1.340561989201e-03 -4.667150293877e-03 -7.963645952750e-03 -1.122483568154e-02 --1.444559483040e-02 -1.762089509599e-02 -2.074581204182e-02 -2.381553241579e-02 --2.682536125416e-02 -2.977072876185e-02 -3.264719695903e-02 -3.545046608454e-02 --3.817638074709e-02 -4.082093581567e-02 -4.338028204082e-02 -4.585073139923e-02 --4.822876215434e-02 -5.051102362607e-02 -5.269434066359e-02 -5.477571781513e-02 --5.675234318974e-02 -5.862159200606e-02 -6.038102982396e-02 -6.202841545521e-02 --6.356170355011e-02 -6.497904685724e-02 -6.627879815424e-02 -6.745951184806e-02 --6.851994524352e-02 -6.945905947958e-02 -7.027602013348e-02 -7.097019749301e-02 --7.154116649818e-02 -7.198870635366e-02 -7.231279981420e-02 -7.251363214552e-02 --7.259158976385e-02 -7.254725855772e-02 -7.238142189594e-02 -7.209505832662e-02 --7.168933897204e-02 -7.116562462502e-02 -7.052546255272e-02 -6.977058301437e-02 --6.890289549963e-02 -6.792448469504e-02 -6.683760618612e-02 -6.564468190324e-02 --6.434829531971e-02 -6.295118641090e-02 -6.145624638359e-02 -5.986651218503e-02 --5.818516080152e-02 -5.641550335661e-02 -5.456097901941e-02 -5.262514873357e-02 --5.061168877784e-02 -4.852438416946e-02 -4.636712192160e-02 -4.414388416646e-02 --4.185874115570e-02 -3.951584415008e-02 -3.711941821030e-02 -3.467375490113e-02 --3.218320492099e-02 -2.965217066937e-02 -2.708509876424e-02 -2.448647252192e-02 --2.186080441173e-02 -1.921262849779e-02 -1.654649288024e-02 -1.386695214826e-02 --1.117855985699e-02 -8.485861040583e-03 -5.793384773283e-03 -3.105636790551e-03 --4.270921818921e-04 2.237811832983e-03 4.884683033275e-03 7.509181220273e-03 -1.010702512361e-02 1.267399917983e-02 1.520596017277e-02 1.769884372549e-02 -2.014867063378e-02 2.255155303169e-02 2.490370037951e-02 2.720142526540e-02 -2.944114901179e-02 3.161940707838e-02 3.373285425359e-02 3.577826962697e-02 -3.775256133536e-02 3.965277107591e-02 4.147607837955e-02 4.321980463900e-02 -4.488141688568e-02 4.645853131032e-02 4.794891652270e-02 4.935049654612e-02 -5.066135354291e-02 5.187973026750e-02 5.300403224421e-02 5.403282966737e-02 -5.496485902165e-02 5.579902442126e-02 5.653439866677e-02 5.717022401920e-02 -5.770591269104e-02 5.814104705468e-02 5.847537956906e-02 5.870883242566e-02 -5.884149691575e-02 5.887363252092e-02 5.880566572958e-02 5.863818858240e-02 -5.837195695027e-02 5.800788854867e-02 5.754706069270e-02 5.699070779760e-02 -5.634021862982e-02 5.559713331426e-02 5.476314010346e-02 5.384007191516e-02 -5.282990264466e-02 5.173474325923e-02 5.055683768156e-02 4.929855847020e-02 -4.796240230460e-02 4.655098528325e-02 4.506703804324e-02 4.351340071010e-02 -4.189301768686e-02 4.020893229156e-02 3.846428125282e-02 3.666228907290e-02 -3.480626226818e-02 3.289958349719e-02 3.094570558604e-02 2.894814546188e-02 -2.691047800448e-02 2.483632982661e-02 2.272937299373e-02 2.059331869362e-02 -1.843191086655e-02 1.624891980689e-02 1.404813574665e-02 1.183336243172e-02 -9.608410701586e-03 7.377092082996e-03 5.143212408206e-03 2.910565468323e-03 -6.829267120771e-04 -1.535952999666e-03 -3.742353573516e-03 -5.932591787285e-03 --8.103027308005e-03 -1.025006861455e-02 -1.237017881542e-02 -1.445988135238e-02 --1.651576558100e-02 -1.853449221918e-02 -2.051279865517e-02 -2.244750410684e-02 --2.433551462404e-02 -2.617382792650e-02 -2.795953806972e-02 -2.968983993177e-02 --3.136203351423e-02 -3.297352805078e-02 -3.452184591733e-02 -3.600462633794e-02 --3.741962888111e-02 -3.876473674135e-02 -4.003795980148e-02 -4.123743747123e-02 --4.236144129837e-02 -4.340837734873e-02 -4.437678835212e-02 -4.526535561139e-02 --4.607290067221e-02 -4.679838675192e-02 -4.744091992563e-02 -4.799975006878e-02 --4.847427155521e-02 -4.886402371075e-02 -4.916869102217e-02 -4.938810310223e-02 --4.952223441176e-02 -4.957120373998e-02 -4.953527344494e-02 -4.941484845619e-02 --4.921047504213e-02 -4.892283934503e-02 -4.855276568695e-02 -4.810121465025e-02 --4.756928093668e-02 -4.695819100941e-02 -4.626930052278e-02 -4.550409154471e-02 --4.466416957733e-02 -4.375126038127e-02 -4.276720660994e-02 -4.171396425980e-02 --4.059359894342e-02 -3.940828199207e-02 -3.816028639507e-02 -3.685198258314e-02 --3.548583406348e-02 -3.406439291435e-02 -3.259029514718e-02 -3.106625594443e-02 --2.949506478171e-02 -2.787958044259e-02 -2.622272593490e-02 -2.452748331740e-02 --2.279688844578e-02 -2.103402564700e-02 -1.924202233133e-02 -1.742404355109e-02 --1.558328651563e-02 -1.372297507176e-02 -1.184635415898e-02 -9.956684249067e-03 --8.057235779192e-03 -6.151283588064e-03 -4.242101364374e-03 -2.332956116824e-03 --4.271026749379e-04 1.472221770211e-03 3.361803076335e-03 5.238455502416e-03 -7.099026994534e-03 8.940404396417e-03 1.075951857619e-02 1.255334946101e-02 -1.431893097146e-02 1.605335584770e-02 1.775378035967e-02 1.941742889385e-02 -2.104159840920e-02 2.262366275530e-02 2.416107684589e-02 2.565138068120e-02 -2.709220321295e-02 2.848126604591e-02 2.981638697042e-02 3.109548332051e-02 -3.231657515238e-02 3.347778823884e-02 3.457735687481e-02 3.561362649026e-02 -3.658505606648e-02 3.749022035241e-02 3.832781187797e-02 3.909664276163e-02 -3.979564630983e-02 4.042387840633e-02 4.098051868971e-02 4.146487151789e-02 -4.187636671855e-02 4.221456012506e-02 4.247913389767e-02 4.266989662998e-02 -4.278678324145e-02 4.282985465662e-02 4.279929727237e-02 4.269542221476e-02 -4.251866438748e-02 4.226958131403e-02 4.194885177638e-02 4.155727425296e-02 -4.109576515940e-02 4.056535689547e-02 3.996719570215e-02 3.930253933322e-02 -3.857275454567e-02 3.777931441390e-02 3.692379547270e-02 3.600787469448e-02 -3.503332630624e-02 3.400201845236e-02 3.291590970911e-02 3.177704545739e-02 -3.058755412020e-02 2.934964327168e-02 2.806559562458e-02 2.673776490353e-02 -2.536857161114e-02 2.396049869471e-02 2.251608712102e-02 2.103793136695e-02 -1.952867483397e-02 1.799100519427e-02 1.642764967678e-02 1.484137030113e-02 -1.323495906788e-02 1.161123311312e-02 9.973029835915e-03 8.323202006782e-03 -6.664612865637e-03 5.000131217437e-03 3.332626533897e-03 1.664964069491e-03 --8.289501967746e-15 -1.659423408319e-03 -3.310482590678e-03 -4.950377429127e-03 --6.576335943163e-03 - Type L N - 0 2 7 -0.000000000000e+00 1.469077279070e-04 5.873534290424e-04 1.320505160728e-03 -2.344978051437e-03 3.658836841985e-03 5.259599439572e-03 7.144241475153e-03 -9.309201856313e-03 1.175038930510e-02 1.446318986865e-02 1.744247538855e-02 -2.068261291309e-02 2.417747503490e-02 2.792045113452e-02 3.190445950906e-02 -3.612196036317e-02 4.056496963804e-02 4.522507365283e-02 5.009344453085e-02 -5.516085638202e-02 6.041770221118e-02 6.585401152093e-02 7.145946857587e-02 -7.722343129452e-02 8.313495073344e-02 8.918279112741e-02 9.535545044823e-02 -1.016411814439e-01 1.080280131193e-01 1.145037726172e-01 1.210561074614e-01 -1.276725081175e-01 1.343403308319e-01 1.410468207053e-01 1.477791349581e-01 -1.545243663455e-01 1.612695666768e-01 1.680017703972e-01 1.747080181883e-01 -1.813753805420e-01 1.879909812661e-01 1.945420208775e-01 2.010157998388e-01 -2.073997415975e-01 2.136814153829e-01 2.198485587212e-01 2.258890996255e-01 -2.317911784205e-01 2.375431691623e-01 2.431337006137e-01 2.485516767361e-01 -2.537862966618e-01 2.588270741088e-01 2.636638562041e-01 2.682868416798e-01 -2.726865984108e-01 2.768540802606e-01 2.807806432055e-01 2.844580607093e-01 -2.878785383179e-01 2.910347274517e-01 2.939197383675e-01 2.965271522693e-01 -2.988510325455e-01 3.008859351137e-01 3.026269178534e-01 3.040695491129e-01 -3.052099152728e-01 3.060446273565e-01 3.065708266738e-01 3.067861894905e-01 -3.066889307167e-01 3.062778066061e-01 3.055521164664e-01 3.045117033749e-01 -3.031569539037e-01 3.014887968528e-01 2.995087009974e-01 2.972186718536e-01 -2.946212474720e-01 2.917194932652e-01 2.885169958845e-01 2.850178561553e-01 -2.812266810873e-01 2.771485749762e-01 2.727891296141e-01 2.681544136287e-01 -2.632509609724e-01 2.580857585848e-01 2.526662332517e-01 2.470002376878e-01 -2.410960358693e-01 2.349622876458e-01 2.286080326604e-01 2.220426736104e-01 -2.152759588798e-01 2.083179645781e-01 2.011790760183e-01 1.938699686717e-01 -1.864015886344e-01 1.787851326427e-01 1.710320276768e-01 1.631539101899e-01 -1.551626050028e-01 1.470701039044e-01 1.388885439972e-01 1.306301858302e-01 -1.223073913581e-01 1.139326017712e-01 1.055183152335e-01 9.707706457492e-02 -8.862139497538e-02 8.016384168477e-02 7.171690781892e-02 6.329304227300e-02 -5.490461779312e-02 4.656390924647e-02 3.828307212992e-02 3.007412135648e-02 -2.194891035837e-02 1.391911054470e-02 5.996191151141e-03 -1.808600481890e-03 --9.484258167120e-03 -1.702003562959e-02 -2.440546473363e-02 -3.163037314506e-02 --3.868490139734e-02 -4.555951933149e-02 -5.224504188083e-02 -5.873264417311e-02 --6.501387592367e-02 -7.108067509496e-02 -7.692538079896e-02 -8.254074542075e-02 --8.791994594282e-02 -9.305659445147e-02 -9.794474780801e-02 -1.025789164694e-01 --1.069540724446e-01 -1.110656563734e-01 -1.149095837193e-01 -1.184822500658e-01 --1.217805355092e-01 -1.248018081440e-01 -1.275439266357e-01 -1.300052418806e-01 --1.321845977508e-01 -1.340813309275e-01 -1.356952698260e-01 -1.370267326157e-01 --1.380765243446e-01 -1.388459331740e-01 -1.393367257360e-01 -1.395511416236e-01 --1.394918870281e-01 -1.391621275383e-01 -1.385654801181e-01 -1.377060042802e-01 --1.365881924762e-01 -1.352169597232e-01 -1.335976324900e-01 -1.317359368659e-01 --1.296379860378e-01 -1.273102671008e-01 -1.247596272310e-01 -1.219932592482e-01 --1.190186865980e-01 -1.158437477845e-01 -1.124765802849e-01 -1.089256039783e-01 --1.051995041218e-01 -1.013072139095e-01 -9.725789664597e-02 -9.306092757320e-02 --8.872587538403e-02 -8.426248345993e-02 -7.968065086945e-02 -7.499041316440e-02 --7.020192301119e-02 -6.532543069481e-02 -6.037126453315e-02 -5.534981123928e-02 --5.027149626938e-02 -4.514676419385e-02 -3.998605912891e-02 -3.479980526588e-02 --2.959838753486e-02 -2.439213243917e-02 -1.919128909660e-02 -1.400601052271e-02 --8.846335191045e-03 -3.722168904420e-03 1.356732989385e-03 6.380783004879e-03 -1.134057851732e-02 1.622691832151e-02 2.103081872114e-02 2.574352911967e-02 -3.035654708513e-02 3.486163286212e-02 3.925082330556e-02 4.351644521183e-02 -4.765112802455e-02 5.164781589304e-02 5.549977906332e-02 5.920062458253e-02 -6.274430629942e-02 6.612513414455e-02 6.933778267570e-02 7.237729887534e-02 -7.523910918842e-02 7.791902579039e-02 8.041325207693e-02 8.271838736825e-02 -8.483143082256e-02 8.674978455485e-02 8.847125595848e-02 8.999405922906e-02 -9.131681609112e-02 9.243855573027e-02 9.335871393438e-02 9.407713144950e-02 -9.459405155731e-02 9.491011688263e-02 9.502636544080e-02 9.494422593643e-02 -9.466551232619e-02 9.419241765992e-02 9.352750721548e-02 9.267371094438e-02 -9.163431524611e-02 9.041295409077e-02 8.901359951046e-02 8.744055148121e-02 -8.569842721830e-02 8.379214990894e-02 8.172693690713e-02 7.950828741665e-02 -7.714196968891e-02 7.463400776333e-02 7.199066777860e-02 6.921844388396e-02 -6.632404378032e-02 6.331437392159e-02 6.019652440715e-02 5.697775359691e-02 -5.366547248077e-02 5.026722883464e-02 4.679069119550e-02 4.324363268817e-02 -3.963391473662e-02 3.596947069273e-02 3.225828941542e-02 2.850839883311e-02 -2.472784952212e-02 2.092469833385e-02 1.710699210281e-02 1.328275146789e-02 -9.459954838185e-03 5.646522534994e-03 1.850301140472e-03 -1.920951916666e-03 --5.659583508850e-03 -9.358059661809e-03 -1.300898008295e-02 -1.660509233848e-02 --2.013930565269e-02 -2.360470430360e-02 -2.699456059015e-02 -3.030234734709e-02 --3.352174998469e-02 -3.664667803149e-02 -3.967127615940e-02 -4.258993467161e-02 --4.539729943476e-02 -4.808828123843e-02 -5.065806456571e-02 -5.310211576030e-02 --5.541619057664e-02 -5.759634110094e-02 -5.963892203234e-02 -6.154059631460e-02 --6.329834011036e-02 -6.490944711108e-02 -6.637153217736e-02 -6.768253430551e-02 --6.884071891787e-02 -6.984467947550e-02 -7.069333841342e-02 -7.138594739991e-02 --7.192208692260e-02 -7.230166520569e-02 -7.252491646371e-02 -7.259239849874e-02 --7.250498964925e-02 -7.226388509986e-02 -7.187059256291e-02 -7.132692734353e-02 --7.063500680147e-02 -6.979724422389e-02 -6.881634212452e-02 -6.769528498567e-02 --6.643733146074e-02 -6.504600605567e-02 -6.352509030898e-02 -6.187861349086e-02 --6.011084284264e-02 -5.822627337901e-02 -5.622961727571e-02 -5.412579286672e-02 --5.191991327530e-02 -4.961727470382e-02 -4.722334440823e-02 -4.474374838328e-02 --4.218425878511e-02 -3.955078111839e-02 -3.684934121531e-02 -3.408607203436e-02 --3.126720030668e-02 -2.839903305828e-02 -2.548794403649e-02 -2.254036006878e-02 --1.956274738266e-02 -1.656159791469e-02 -1.354341563710e-02 -1.051470292991e-02 --7.481947026484e-03 -4.451606560117e-03 -1.430098238890e-03 1.576216324357e-03 -4.561043600468e-03 7.518170924900e-03 1.044147904573e-02 1.332495441396e-02 -1.616270119189e-02 1.894895295610e-02 2.167808407238e-02 2.434462072042e-02 -2.694325154733e-02 2.946883792955e-02 3.191642382379e-02 3.428124518852e-02 -3.655873895850e-02 3.874455155588e-02 4.083454692234e-02 4.282481405790e-02 -4.471167405300e-02 4.649168660169e-02 4.816165598479e-02 4.971863651304e-02 -5.115993742146e-02 5.248312720725e-02 5.368603740490e-02 5.476676579313e-02 -5.572367902963e-02 5.655541471085e-02 5.726088285508e-02 5.783926680844e-02 -5.829002357453e-02 5.861288356966e-02 5.880784980680e-02 5.887519651265e-02 -5.881546718310e-02 5.862947208385e-02 5.831828520389e-02 5.788324067062e-02 -5.732592863653e-02 5.664819064849e-02 5.585211451158e-02 5.494002866046e-02 -5.391449605229e-02 5.277830759611e-02 5.153447513440e-02 5.018622399365e-02 -4.873698512129e-02 4.719038682738e-02 4.555024615001e-02 4.382055986426e-02 -4.200549515500e-02 4.010937997467e-02 3.813669310747e-02 3.609205396226e-02 -3.398021211664e-02 3.180603663516e-02 2.957450518526e-02 2.729069297434e-02 -2.495976153231e-02 2.258694736345e-02 2.017755049231e-02 1.773692292786e-02 -1.527045707069e-02 1.278357408768e-02 1.028171227885e-02 7.770315460692e-03 -5.254821390476e-03 2.740650255607e-03 2.331932519382e-04 -2.262198725284e-03 --4.740226254575e-03 -7.195652402534e-03 -9.623313556838e-03 -1.201813005590e-02 --1.437511659366e-02 -1.668939237858e-02 -1.895619102653e-02 -2.117087016772e-02 --2.332892074888e-02 -2.542597601217e-02 -2.745782013337e-02 -2.942039650251e-02 --3.130981563110e-02 -3.312236267077e-02 -3.485450452901e-02 -3.650289656895e-02 --3.806438888046e-02 -3.953603211141e-02 -4.091508284839e-02 -4.219900853757e-02 --4.338549193713e-02 -4.447243509383e-02 -4.545796283729e-02 -4.634042578657e-02 --4.711840286474e-02 -4.779070331816e-02 -4.835636823817e-02 -4.881467158413e-02 --4.916512070757e-02 -4.940745637847e-02 -4.954165231564e-02 -4.956791422416e-02 --4.948667834399e-02 -4.929860951478e-02 -4.900459876297e-02 -4.860576041812e-02 --4.810342876670e-02 -4.749915425206e-02 -4.679469923055e-02 -4.599203329469e-02 --4.509332817483e-02 -4.410095223194e-02 -4.301746455484e-02 -4.184560867586e-02 --4.058830591992e-02 -3.924864840252e-02 -3.782989169286e-02 -3.633544715909e-02 --3.476887401313e-02 -3.313387107305e-02 -3.143426826184e-02 -2.967401786142e-02 --2.785718554155e-02 -2.598794118356e-02 -2.407054951920e-02 -2.210936060516e-02 --2.010880015427e-02 -1.807335974430e-02 -1.600758692586e-02 -1.391607525066e-02 --1.180345424164e-02 -9.674379326701e-03 -7.533521757299e-03 -5.385558533686e-03 --3.235162357996e-03 -1.086991636544e-03 1.054319447608e-03 3.184170770956e-03 -5.298005994152e-03 7.391322154623e-03 9.459679107286e-03 1.149870879385e-02 -1.350412432159e-02 1.547172883307e-02 1.739742414856e-02 1.927721916380e-02 -2.110723798592e-02 2.288372779141e-02 2.460306639022e-02 2.626176948115e-02 -2.785649758408e-02 2.938406263563e-02 3.084143423534e-02 3.222574553030e-02 -3.353429872728e-02 3.476457022169e-02 3.591421533407e-02 3.698107264539e-02 -3.796316792334e-02 3.885871763293e-02 3.966613202524e-02 4.038401779937e-02 -4.101118033356e-02 4.154662548216e-02 4.198956093638e-02 4.233939714728e-02 -4.259574781094e-02 4.275842991611e-02 4.282746335595e-02 4.280307010634e-02 -4.268567297399e-02 4.247589391862e-02 4.217455195441e-02 4.178266063662e-02 -4.130142514038e-02 4.073223893931e-02 4.007668009244e-02 3.933650714897e-02 -3.851365468085e-02 3.761022845408e-02 3.662850025054e-02 3.557090235235e-02 -3.444002170214e-02 3.323859375264e-02 3.196949601988e-02 3.063574135499e-02 -2.924047094993e-02 2.778694709296e-02 2.627854569045e-02 2.471874857175e-02 -2.311113559434e-02 2.145937656704e-02 1.976722300894e-02 1.803849976264e-02 -1.627709647992e-02 1.448695899886e-02 1.267208063096e-02 1.083649337755e-02 -8.984259094307e-03 7.119460623156e-03 5.246192910636e-03 3.368554131809e-03 -1.490636838737e-03 -3.834808475741e-04 -2.249743983023e-03 -4.104129465518e-03 --5.942654601015e-03 -7.761385552468e-03 -9.556445653953e-03 -1.132402357260e-02 --1.306038130132e-02 -1.476186196578e-02 -1.642489742950e-02 -1.804601568136e-02 --1.962184799059e-02 -2.114913581438e-02 -2.262473744444e-02 -2.404563437887e-02 --2.540893740670e-02 -2.671189239304e-02 -2.795188575326e-02 -2.912644960572e-02 --3.023326659285e-02 -3.127017436145e-02 -3.223516969377e-02 -3.312641228142e-02 --3.394222813561e-02 -3.468111262711e-02 -3.534173315109e-02 -3.592293141203e-02 --3.642372532519e-02 -3.684331053186e-02 -3.718106152629e-02 -3.743653239329e-02 --3.760945715608e-02 -3.769974973505e-02 -3.770750351867e-02 -3.763299054886e-02 --3.747666032380e-02 -3.723913822194e-02 -3.692122355201e-02 -3.652388723420e-02 --3.604826911899e-02 -3.549567495034e-02 -3.486757298104e-02 -3.416559024867e-02 --3.339150852121e-02 -3.254725992210e-02 -3.163492224531e-02 -3.065671397135e-02 --2.961498899606e-02 -2.851223108433e-02 -2.735104806176e-02 -2.613416575733e-02 --2.486442171123e-02 -2.354475866194e-02 -2.217821782737e-02 -2.076793199522e-02 --1.931711843802e-02 -1.782907166866e-02 -1.630715605253e-02 -1.475479829273e-02 --1.317547980480e-02 -1.157272899787e-02 -9.950113479126e-03 -8.311232198628e-03 --6.659707551603e-03 -4.999177455396e-03 -3.333287418206e-03 -1.665682616765e-03 -6.107527556058e-15 1.660139564409e-03 3.311139083646e-03 4.949433157140e-03 -6.571495601099e-03 - Type L N - 0 2 8 -0.000000000000e+00 1.816222897676e-04 7.260650408436e-04 1.632056859352e-03 -2.897481963989e-03 4.519384988051e-03 6.493977688712e-03 8.816647546198e-03 -1.148196823318e-02 1.448371193045e-02 1.781486346025e-02 2.146763620464e-02 -2.543348977210e-02 2.970314937161e-02 3.426662684946e-02 3.911324334017e-02 -4.423165347923e-02 4.960987112178e-02 5.523529650800e-02 6.109474481226e-02 -6.717447601048e-02 7.346022599663e-02 7.993723887676e-02 8.659030036608e-02 -9.340377221213e-02 1.003616275650e-01 1.074474872126e-01 1.146446565987e-01 -1.219361635373e-01 1.293047965375e-01 1.367331436507e-01 1.442036317510e-01 -1.516985661577e-01 1.592001705108e-01 1.666906268068e-01 1.741521155030e-01 -1.815668555997e-01 1.889171446072e-01 1.961853983078e-01 2.033541902202e-01 -2.104062906784e-01 2.173247054343e-01 2.240927136971e-01 2.306939055224e-01 -2.371122184676e-01 2.433319734278e-01 2.493379095743e-01 2.551152183140e-01 -2.606495761948e-01 2.659271766822e-01 2.709347607358e-01 2.756596461173e-01 -2.800897553645e-01 2.842136423684e-01 2.880205174954e-01 2.915002711977e-01 -2.946434960612e-01 2.974415072413e-01 2.998863612427e-01 3.019708730029e-01 -3.036886312414e-01 3.050340120434e-01 3.060021906490e-01 3.065891514228e-01 -3.067916959852e-01 3.066074494887e-01 3.060348650283e-01 3.050732261781e-01 -3.037226476526e-01 3.019840740932e-01 2.998592769860e-01 2.973508497219e-01 -2.944622008127e-01 2.911975452825e-01 2.875618942573e-01 2.835610427792e-01 -2.792015558782e-01 2.744907529345e-01 2.694366903727e-01 2.640481427281e-01 -2.583345821348e-01 2.523061562833e-01 2.459736649015e-01 2.393485348183e-01 -2.324427936662e-01 2.252690422894e-01 2.178404259217e-01 2.101706042029e-01 -2.022737201060e-01 1.941643678479e-01 1.858575598602e-01 1.773686928971e-01 -1.687135133615e-01 1.599080819292e-01 1.509687375553e-01 1.419120609460e-01 -1.327548375810e-01 1.235140203738e-01 1.142066920539e-01 1.048500273610e-01 -9.546125513622e-02 8.605762039846e-02 7.665634649361e-02 6.727459740229e-02 -5.792944029313e-02 4.863780840654e-02 3.941646435367e-02 3.028196391350e-02 -2.125062041004e-02 1.233846975003e-02 3.561236199343e-03 -5.065701024999e-03 --1.352734027291e-02 -2.180908901717e-02 -2.989679437747e-02 -3.777677254537e-02 --4.543583704590e-02 -5.286132577412e-02 -6.004112674843e-02 -6.696370252510e-02 --7.361811322225e-02 -7.999403810449e-02 -8.608179568331e-02 -9.187236229169e-02 --9.735738909511e-02 -1.025292175050e-01 -1.073808929647e-01 -1.119061770811e-01 --1.160995580804e-01 -1.199562595691e-01 -1.234722475869e-01 -1.266442359394e-01 --1.294696898072e-01 -1.319468276265e-01 -1.340746212460e-01 -1.358527943634e-01 --1.372818192535e-01 -1.383629118017e-01 -1.390980248599e-01 -1.394898399479e-01 --1.395417573246e-01 -1.392578844607e-01 -1.386430229430e-01 -1.377026538498e-01 --1.364429216354e-01 -1.348706165695e-01 -1.329931557753e-01 -1.308185629194e-01 --1.283554466042e-01 -1.256129775195e-01 -1.226008644118e-01 -1.193293289326e-01 --1.158090794282e-01 -1.120512837384e-01 -1.080675410706e-01 -1.038698530203e-01 --9.947059380872e-02 -9.488247981082e-02 -9.011853844896e-02 -8.519207652742e-02 --8.011664808468e-02 -7.490602184136e-02 -6.957414832194e-02 -6.413512672929e-02 --5.860317165080e-02 -5.299257967560e-02 -4.731769600168e-02 -4.159288111183e-02 --3.583247759664e-02 -3.005077720215e-02 -2.426198817900e-02 -1.848020300878e-02 --1.271936658204e-02 -6.993244901238e-03 -1.315394380088e-03 4.300868190743e-03 -9.842494943682e-03 1.529673543405e-02 2.065116427592e-02 2.589370785255e-02 -3.101267004258e-02 3.599675690559e-02 4.083510027343e-02 4.551728019665e-02 -5.003334619826e-02 5.437383729008e-02 5.852980071023e-02 6.249280934339e-02 -6.625497778907e-02 6.980897704613e-02 7.314804778570e-02 7.626601218788e-02 -7.915728432116e-02 8.181687904745e-02 8.424041943868e-02 8.642414269519e-02 -8.836490455929e-02 9.006018222135e-02 9.150807571923e-02 9.270730783581e-02 -9.365722250242e-02 9.435778172033e-02 9.480956101519e-02 9.501374344343e-02 -9.497211217267e-02 9.468704166176e-02 9.416148746913e-02 9.339897472166e-02 -9.240358527894e-02 9.117994363127e-02 8.973320157228e-02 8.806902168994e-02 -8.619355972266e-02 8.411344582917e-02 8.183576482396e-02 7.936803543167e-02 -7.671818861659e-02 7.389454504481e-02 7.090579173892e-02 6.776095798660e-02 -6.446939056584e-02 6.104072835127e-02 5.748487636690e-02 5.381197935194e-02 -5.003239490686e-02 4.615666628805e-02 4.219549491945e-02 3.815971269027e-02 -3.406025410792e-02 2.990812837531e-02 2.571439146162e-02 2.149011823517e-02 -1.724637472661e-02 1.299419059013e-02 8.744531829237e-03 4.508273852986e-03 -2.961749272744e-04 -3.881149915498e-03 -8.013254446491e-03 -1.208988622993e-02 --1.610101097347e-02 -2.003683618275e-02 -2.388783406540e-02 -2.764476363204e-02 --3.129869194379e-02 -3.484101445852e-02 -3.826347443024e-02 -4.155818131877e-02 --4.471762816948e-02 -4.773470792561e-02 -5.060272863842e-02 -5.331542754373e-02 --5.586698397572e-02 -5.825203109266e-02 -6.046566639160e-02 -6.250346099278e-02 --6.436146767730e-02 -6.603622766491e-02 -6.752477612201e-02 -6.882464639312e-02 --6.993387295238e-02 -7.085099307464e-02 -7.157504722924e-02 -7.210557820247e-02 --7.244262895797e-02 -7.258673924740e-02 -7.253894098692e-02 -7.230075241770e-02 --7.187417107211e-02 -7.126166556964e-02 -7.046616626985e-02 -6.949105481195e-02 --6.834015257368e-02 -6.701770808449e-02 -6.552838343030e-02 -6.387723969000e-02 --6.206972144544e-02 -6.011164040925e-02 -5.800915821676e-02 -5.576876842981e-02 --5.339727780257e-02 -5.090178686060e-02 -4.828966984605e-02 -4.556855408335e-02 --4.274629882071e-02 -3.983097360395e-02 -3.683083624003e-02 -3.375431040840e-02 --3.060996297894e-02 -2.740648109560e-02 -2.415264908530e-02 -2.085732525166e-02 --1.752941861326e-02 -1.417786564581e-02 -1.081160708746e-02 -7.439564866003e-03 --4.070619205987e-03 -7.135859732106e-04 2.622805686953e-03 5.929935361925e-03 -9.199312980668e-03 1.242259996581e-02 1.559162987751e-02 1.869842849911e-02 -2.173523331604e-02 2.469451234151e-02 2.756898224422e-02 3.035162573535e-02 -3.303570817425e-02 3.561479335437e-02 3.808275843334e-02 4.043380797323e-02 -4.266248705992e-02 4.476369347245e-02 4.673268887618e-02 4.856510901611e-02 -5.025697288934e-02 5.180469087832e-02 5.320507182949e-02 5.445532906433e-02 -5.555308531311e-02 5.649637656394e-02 5.728365482286e-02 5.791378978346e-02 -5.838606940722e-02 5.870019941863e-02 5.885630172195e-02 5.885491174902e-02 -5.869697475057e-02 5.838384104567e-02 5.791726024702e-02 5.729937448205e-02 -5.653271063232e-02 5.562017161625e-02 5.456502674237e-02 5.337090116277e-02 -5.204176445833e-02 5.058191838963e-02 4.899598384939e-02 4.728888705396e-02 -4.546584501350e-02 4.353235032190e-02 4.149415530922e-02 3.935725560067e-02 -3.712787312779e-02 3.481243863837e-02 3.241757375288e-02 2.995007261620e-02 -2.741688319407e-02 2.482508826450e-02 2.218188615501e-02 1.949457127667e-02 -1.677051450671e-02 1.401714347104e-02 1.124192277859e-02 8.452334258824e-03 -5.655857253885e-03 2.859949016168e-03 7.202526183728e-05 -2.700559069969e-03 --5.450528803207e-03 -8.170707208110e-03 -1.085403433436e-02 -1.349358494819e-02 --1.608258602868e-02 -1.861443377973e-02 -2.108271011576e-02 -2.348119858071e-02 --2.580389966152e-02 -2.804504545901e-02 -3.019911368107e-02 -3.226084092472e-02 --3.422523521586e-02 -3.608758777739e-02 -3.784348399868e-02 -3.948881358142e-02 --4.101977983929e-02 -4.243290813094e-02 -4.372505340850e-02 -4.489340686581e-02 --4.593550167321e-02 -4.684921778814e-02 -4.763278583322e-02 -4.828479003590e-02 --4.880417022633e-02 -4.919022289253e-02 -4.944260129431e-02 -4.956131464010e-02 --4.954672633286e-02 -4.939955129407e-02 -4.912085237686e-02 -4.871203588183e-02 --4.817484619129e-02 -4.751135953999e-02 -4.672397694244e-02 -4.581541629921e-02 --4.478870370651e-02 -4.364716399537e-02 -4.239441052864e-02 -4.103433428591e-02 --3.957109226798e-02 -3.800909525448e-02 -3.635299494945e-02 -3.460767055138e-02 --3.277821478540e-02 -3.086991943675e-02 -2.888826042553e-02 -2.683888246406e-02 --2.472758333878e-02 -2.256029785980e-02 -2.034308152151e-02 -1.808209391853e-02 --1.578358196155e-02 -1.345386293810e-02 -1.109930746339e-02 -8.726322366442e-03 --6.341333556919e-03 -3.950768917616e-03 -1.561041267603e-03 8.214685595516e-04 -3.190428478422e-03 5.539571711839e-03 7.862713105768e-03 1.015376515704e-02 -1.240675371303e-02 1.461583330327e-02 1.677530206426e-02 1.887961621988e-02 -2.092340408113e-02 2.290147953035e-02 2.480885495661e-02 2.664075361042e-02 -2.839262134767e-02 3.006013773450e-02 3.163922648626e-02 3.312606521612e-02 -3.451709447020e-02 3.580902602862e-02 3.699885045340e-02 3.808384386657e-02 -3.906157394371e-02 3.992990511037e-02 4.068700293090e-02 4.133133768149e-02 -4.186168710125e-02 4.227713831753e-02 4.257708894362e-02 4.276124734946e-02 -4.282963210800e-02 4.278257062179e-02 4.262069693714e-02 4.234494875454e-02 -4.195656364671e-02 4.145707449743e-02 4.084830417625e-02 4.013235946636e-02 -3.931162426453e-02 3.838875207418e-02 3.736665781404e-02 3.624850896700e-02 -3.503771609510e-02 3.373792274817e-02 3.235299479545e-02 3.088700921045e-02 -2.934424234114e-02 2.772915769830e-02 2.604639329640e-02 2.430074858229e-02 -2.249717098781e-02 2.064074214350e-02 1.873666379119e-02 1.679024343397e-02 -1.480687976259e-02 1.279204789768e-02 1.075128448776e-02 8.690172702883e-03 -6.614327164212e-03 4.529378849718e-03 2.440960016003e-03 3.546891762300e-04 --1.723843826266e-03 -3.789092609477e-03 -5.835568870624e-03 -7.857856792378e-03 --9.850627199989e-03 -1.180865143274e-02 -1.372681489399e-02 -1.560013024515e-02 --1.742375020984e-02 -1.919297995581e-02 -2.090328902336e-02 -2.255032277022e-02 --2.412991330451e-02 -2.563808987852e-02 -2.707108871781e-02 -2.842536226166e-02 --2.969758779257e-02 -3.088467543407e-02 -3.198377549807e-02 -3.299228516462e-02 --3.390785447876e-02 -3.472839165117e-02 -3.545206765108e-02 -3.607732008177e-02 --3.660285633117e-02 -3.702765599168e-02 -3.735097254568e-02 -3.757233431473e-02 --3.769154467277e-02 -3.770868152547e-02 -3.762409605970e-02 -3.743841076912e-02 --3.715251676396e-02 -3.676757037443e-02 -3.628498905967e-02 -3.570644663541e-02 --3.503386783573e-02 -3.426942222548e-02 -3.341551748227e-02 -3.247479206786e-02 --3.145010731083e-02 -3.034453892367e-02 -2.916136797890e-02 -2.790407137006e-02 --2.657631178510e-02 -2.518192722021e-02 -2.372492006395e-02 -2.220944578217e-02 --2.063980123523e-02 -1.902041265998e-02 -1.735582334967e-02 -1.565068106572e-02 --1.390972521576e-02 -1.213777383294e-02 -1.033971039195e-02 -8.520470497345e-03 --6.685028480247e-03 -4.838383939254e-03 -2.985548261812e-03 -1.131531161935e-03 -7.186727298842e-04 2.560097188991e-03 4.387817595918e-03 6.196963978004e-03 -7.982733859050e-03 9.740404883418e-03 1.146534718170e-02 1.315303544582e-02 -1.479906068247e-02 1.639914161451e-02 1.794913570120e-02 1.944504974918e-02 -2.088305008724e-02 2.225947227929e-02 2.357083035107e-02 2.481382550780e-02 -2.598535432110e-02 2.708251636518e-02 2.810262128379e-02 2.904319527096e-02 -2.990198695028e-02 3.067697263896e-02 3.136636098475e-02 3.196859696540e-02 -3.248236524221e-02 3.290659286073e-02 3.324045129372e-02 3.348335782306e-02 -3.363497625903e-02 3.369521699747e-02 3.366423641657e-02 3.354243561739e-02 -3.333045851338e-02 3.302918927637e-02 3.263974914783e-02 3.216349262613e-02 -3.160200304192e-02 3.095708753555e-02 3.023077145194e-02 2.942529216962e-02 -2.854309238255e-02 2.758681285422e-02 2.655928466521e-02 2.546352097668e-02 -2.430270833320e-02 2.308019752980e-02 2.179949406905e-02 2.046424823497e-02 -1.907824481156e-02 1.764539247469e-02 1.616971288658e-02 1.465532952316e-02 -1.310645626504e-02 1.152738578322e-02 9.922477751471e-03 8.296146917260e-03 -6.652851063798e-03 4.997078895596e-03 3.333337880273e-03 1.666142079259e-03 -2.389818419419e-15 -1.660597497888e-03 -3.311189210362e-03 -4.947355478647e-03 --6.564729929525e-03 - Type L N - 0 2 9 -0.000000000000e+00 2.199878632246e-04 8.793292279983e-04 1.976159129335e-03 -3.507374991733e-03 5.468645159338e-03 7.854420806502e-03 1.065795119347e-02 -1.387130222514e-02 1.748537826075e-02 2.148994711368e-02 2.587366817106e-02 -3.062412355489e-02 3.572785223720e-02 4.117038701400e-02 4.693629423461e-02 -5.300921617524e-02 5.937191593841e-02 6.600632475287e-02 7.289359154170e-02 -8.001413462032e-02 8.734769538014e-02 9.487339380785e-02 1.025697856858e-01 -1.104149213138e-01 1.183864055887e-01 1.264614592744e-01 1.346169812922e-01 -1.428296118575e-01 1.510757962875e-01 1.593318493033e-01 1.675740196468e-01 -1.757785548339e-01 1.839217658645e-01 1.919800917091e-01 1.999301633953e-01 -2.077488675152e-01 2.154134089799e-01 2.229013728467e-01 2.301907850499e-01 -2.372601718671e-01 2.440886179582e-01 2.506558228185e-01 2.569421554894e-01 -2.629287073803e-01 2.685973430545e-01 2.739307488430e-01 2.789124791541e-01 -2.835270003525e-01 2.877597320911e-01 2.915970859835e-01 2.950265015140e-01 -2.980364790901e-01 3.006166101497e-01 3.027576042443e-01 3.044513130277e-01 -3.056907510889e-01 3.064701135762e-01 3.067847905695e-01 3.066313781658e-01 -3.060076862537e-01 3.049127429601e-01 3.033467957635e-01 3.013113092773e-01 -2.988089597136e-01 2.958436260517e-01 2.924203779398e-01 2.885454603714e-01 -2.842262751846e-01 2.794713594426e-01 2.742903607604e-01 2.686940096552e-01 -2.626940890007e-01 2.563034006781e-01 2.495357295217e-01 2.424058046661e-01 -2.349292584071e-01 2.271225826964e-01 2.190030833979e-01 2.105888324354e-01 -2.018986179717e-01 1.929518927617e-01 1.837687208269e-01 1.743697226046e-01 -1.647760187269e-01 1.550091725908e-01 1.450911318804e-01 1.350441692083e-01 -1.248908220419e-01 1.146538320850e-01 1.043560842835e-01 9.402054562715e-02 -8.367020391676e-02 7.332800666863e-02 6.301680032486e-02 5.275926993817e-02 -4.257787949767e-02 3.249481305968e-02 2.253191684506e-02 1.271064246129e-02 -3.051991403943e-03 -6.423539011990e-03 -1.569600814480e-02 -2.474608280168e-02 --3.355508616137e-02 -4.210504471356e-02 -5.037873309104e-02 -5.835971667642e-02 --6.603239187260e-02 -7.338202393252e-02 -8.039478225132e-02 -8.705777303152e-02 --9.335906923935e-02 -9.928773777867e-02 -1.048338638166e-01 -1.099885722039e-01 --1.147440459405e-01 -1.190935416471e-01 -1.230314020099e-01 -1.265530651757e-01 --1.296550710843e-01 -1.323350647308e-01 -1.345917963635e-01 -1.364251186262e-01 --1.378359806693e-01 -1.388264192555e-01 -1.393995469001e-01 -1.395595370904e-01 --1.393116066394e-01 -1.386619952351e-01 -1.376179422552e-01 -1.361876609259e-01 --1.343803099072e-01 -1.322059623985e-01 -1.296755728617e-01 -1.268009414673e-01 --1.235946763737e-01 -1.200701539568e-01 -1.162414771124e-01 -1.121234317578e-01 --1.077314416644e-01 -1.030815217573e-01 -9.819023002316e-02 -9.307461816620e-02 --8.775218116234e-02 -8.224080585759e-02 -7.655871876268e-02 -7.072443319624e-02 --6.475669593018e-02 -5.867443349193e-02 -5.249669827824e-02 -4.624261463530e-02 --3.993132505925e-02 -3.358193667011e-02 -2.721346811084e-02 -2.084479702113e-02 --1.449460823326e-02 -8.181342834745e-03 -1.923148239074e-03 4.262170597480e-03 -1.035719867912e-02 1.634495706419e-02 2.220894742446e-02 2.793319494990e-02 -3.350228948471e-02 3.890142478554e-02 4.411643579911e-02 4.913383386249e-02 -5.394083973606e-02 5.852541438554e-02 6.287628743675e-02 6.698298323374e-02 -7.083584443829e-02 7.442605311622e-02 7.774564926363e-02 8.078754673372e-02 -8.354554653285e-02 8.601434746216e-02 8.818955408889e-02 9.006768203980e-02 -9.164616061647e-02 9.292333274034e-02 9.389845224334e-02 9.457167852718e-02 -9.494406862238e-02 9.501756668542e-02 9.479499097973e-02 9.428001839337e-02 -9.347716655333e-02 9.239177360303e-02 9.102997571616e-02 8.939868242626e-02 -8.750554985761e-02 8.535895194856e-02 8.296794976386e-02 8.034225899804e-02 -7.749221577606e-02 7.442874086263e-02 7.116330239521e-02 6.770787725968e-02 -6.407491123093e-02 6.027727800392e-02 5.632823724291e-02 5.224139177928e-02 -4.803064408986e-02 4.371015218923e-02 3.929428507052e-02 3.479757782977e-02 -3.023468660928e-02 2.562034349494e-02 2.096931150214e-02 1.629633978397e-02 -1.161611919360e-02 6.943238331471e-03 2.292140205463e-03 -2.322920370225e-03 --6.887918514673e-03 -1.138910003869e-02 -1.581302110610e-02 -2.014658668588e-02 --2.437708768709e-02 -2.849223667348e-02 -3.248020205920e-02 -3.632964069210e-02 --4.002972873681e-02 -4.357019077484e-02 -4.694132704532e-02 -5.013403875559e-02 --5.313985139713e-02 -5.595093600899e-02 -5.856012833683e-02 -6.096094584281e-02 --6.314760252806e-02 -6.511502153621e-02 -6.685884551357e-02 -6.837544470817e-02 --6.966192279707e-02 -7.071612043809e-02 -7.153661654906e-02 -7.212272732468e-02 --7.247450300756e-02 -7.259272243721e-02 -7.247888540685e-02 -7.213520286468e-02 --7.156458500260e-02 -7.077062728145e-02 -6.975759444778e-02 -6.853040260321e-02 --6.709459939274e-02 -6.545634238392e-02 -6.362237571384e-02 -6.160000508571e-02 --5.939707120145e-02 -5.702192172107e-02 -5.448338184333e-02 -5.179072360620e-02 --4.895363400890e-02 -4.598218206008e-02 -4.288678485997e-02 -3.967817282603e-02 --3.636735417425e-02 -3.296557876942e-02 -2.948430145944e-02 -2.593514500936e-02 --2.232986275155e-02 -1.868030106874e-02 -1.499836182640e-02 -1.129596487050e-02 --7.585010705922e-03 -3.877343469460e-03 -1.847143100734e-04 3.481254713080e-03 -7.109106106306e-03 1.068758168479e-02 1.420565648066e-02 1.765257171565e-02 -2.101786674184e-02 2.429140985759e-02 2.746342790972e-02 3.052453459729e-02 -3.346575739671e-02 3.627856303269e-02 3.895488142433e-02 4.148712804086e-02 -4.386822460664e-02 4.609161810065e-02 4.815129800111e-02 5.004181173166e-02 -5.175827827122e-02 5.329639989576e-02 5.465247202582e-02 5.582339115998e-02 -5.680666088027e-02 5.760039592173e-02 5.820332430421e-02 5.861478753074e-02 -5.883473886252e-02 5.886373968673e-02 5.870295399914e-02 5.835414102910e-02 -5.781964604028e-02 5.710238934612e-02 5.620585358389e-02 5.513406929708e-02 -5.389159888011e-02 5.248351894493e-02 5.091540117308e-02 4.919329172142e-02 -4.732368925408e-02 4.531352167665e-02 4.317012165270e-02 4.090120098583e-02 -3.851482395387e-02 3.601937968419e-02 3.342355366222e-02 3.073629846700e-02 -2.796680382983e-02 2.512446611365e-02 2.221885731196e-02 1.925969366728e-02 -1.625680400978e-02 1.322009791697e-02 1.015953379548e-02 7.085086985819e-03 -4.006717990083e-03 9.343409221033e-04 -2.122207722006e-03 -5.153199876226e-03 --8.149046205155e-03 -1.110032579993e-02 -1.399781517917e-02 -1.683251650722e-02 --1.959568494479e-02 -2.227885505038e-02 -2.487386615403e-02 -2.737288662881e-02 --2.976843698917e-02 -3.205341174916e-02 -3.422109997818e-02 -3.626520449573e-02 --3.817985965185e-02 -3.995964764408e-02 -4.159961332693e-02 -4.309527747477e-02 --4.444264846413e-02 -4.563823234630e-02 -4.667904128676e-02 -4.756260035281e-02 --4.828695263640e-02 -4.885066270423e-02 -4.925281837259e-02 -4.949303080981e-02 --4.957143297428e-02 -4.948867640132e-02 -4.924592635723e-02 -4.884485538421e-02 --4.828763526424e-02 -4.757692743560e-02 -4.671587189972e-02 -4.570807466124e-02 --4.455759374821e-02 -4.326892386370e-02 -4.184697972440e-02 -4.029707814536e-02 --3.862491893394e-02 -3.683656465934e-02 -3.493841936759e-02 -3.293720631450e-02 --3.083994479229e-02 -2.865392612774e-02 -2.638668893222e-02 -2.404599368583e-02 --2.163979673974e-02 -1.917622382202e-02 -1.666354313384e-02 -1.411013812330e-02 --1.152448002530e-02 -8.915100255805e-03 -6.290562749049e-03 -3.659436326144e-03 --1.030267182759e-03 1.588448416978e-03 4.188291154379e-03 6.760945293228e-03 -9.298224856821e-03 1.179209926377e-02 1.423471834338e-02 1.661843665371e-02 -1.893583702815e-02 2.117975327884e-02 2.334329198853e-02 2.541985332563e-02 -2.740315082040e-02 2.928723004408e-02 3.106648613639e-02 3.273568013062e-02 -3.428995402986e-02 3.572484459183e-02 3.703629578417e-02 3.822066987657e-02 -3.927475714035e-02 4.019578413094e-02 4.098142053316e-02 4.162978455384e-02 -4.213944685128e-02 4.250943299532e-02 4.273922445695e-02 4.282875813085e-02 -4.277842439880e-02 4.258906374688e-02 4.226196195359e-02 4.179884387064e-02 -4.120186582262e-02 4.047360665596e-02 3.961705747178e-02 3.863561008134e-02 -3.753304422663e-02 3.631351361252e-02 3.498153080037e-02 3.354195101643e-02 -3.199995493175e-02 3.036103047315e-02 2.863095372782e-02 2.681576900667e-02 -2.492176813392e-02 2.295546903276e-02 2.092359367870e-02 1.883304549411e-02 -1.669088625872e-02 1.450431261231e-02 1.228063222673e-02 1.002723972500e-02 -7.751592425892e-03 5.461185992628e-03 3.163530064113e-03 8.661239471169e-04 --1.423567552895e-03 -3.698138085252e-03 -5.950263415892e-03 -8.172724722765e-03 --1.035843145153e-02 -1.250044365998e-02 -1.459199378161e-02 -1.662650774079e-02 --1.859762535438e-02 -2.049921995729e-02 -2.232541719211e-02 -2.407061290580e-02 --2.572949009978e-02 -2.729703488265e-02 -2.876855137857e-02 -3.013967554749e-02 --3.140638787734e-02 -3.256502491202e-02 -3.361228958282e-02 -3.454526031495e-02 --3.536139888491e-02 -3.605855700843e-02 -3.663498164306e-02 -3.708931899344e-02 --3.742061721175e-02 -3.762832778976e-02 -3.771230564345e-02 -3.767280789506e-02 --3.751049136182e-02 -3.722640876460e-02 -3.682200367381e-02 -3.629910421392e-02 --3.565991555179e-02 -3.490701119789e-02 -3.404332315311e-02 -3.307213093760e-02 --3.199704954126e-02 -3.082201633910e-02 -2.955127701775e-02 -2.818937056221e-02 --2.674111335517e-02 -2.521158244345e-02 -2.360609802887e-02 -2.193020524305e-02 --2.018965526765e-02 -1.839038586356e-02 -1.653850137407e-02 -1.464025226861e-02 --1.270201429484e-02 -1.073026730782e-02 -8.731573845858e-03 -6.712557523091e-03 --4.679881309316e-03 -2.640225767507e-03 -6.002673194726e-04 1.433343390304e-03 -3.454002963193e-03 5.455176478626e-03 7.430418422352e-03 9.373393244311e-03 -1.127789548115e-02 1.313786938007e-02 1.494742796245e-02 1.670087146789e-02 -1.839270512133e-02 2.001765616846e-02 2.157069012714e-02 2.304702620522e-02 -2.444215183807e-02 2.575183630221e-02 2.697214336435e-02 2.809944292875e-02 -2.913042164873e-02 3.006209247213e-02 3.089180309365e-02 3.161724329081e-02 -3.223645112400e-02 3.274781798471e-02 3.315009247988e-02 3.344238314402e-02 -3.362415997477e-02 3.369525479111e-02 3.365586041739e-02 3.350652870018e-02 -3.324816736855e-02 3.288203575211e-02 3.240973937492e-02 3.183322344671e-02 -3.115476527662e-02 3.037696563770e-02 2.950273911414e-02 2.853530346589e-02 -2.747816804889e-02 2.633512133150e-02 2.511021755107e-02 2.380776255669e-02 -2.243229888701e-02 2.098859013410e-02 1.948160464657e-02 1.791649862706e-02 -1.629859868096e-02 1.463338387485e-02 1.292646736459e-02 1.118357765386e-02 -9.410539545482e-03 7.613254848001e-03 5.797682901151e-03 3.969820983777e-03 -2.135684668175e-03 3.012881846979e-04 -1.527375139800e-03 -3.344352306513e-03 --5.143749869768e-03 -6.919752901010e-03 -8.666643631123e-03 -1.037881971177e-02 --1.205081203788e-02 -1.367730207495e-02 -1.525313863681e-02 -1.677335406123e-02 --1.823317973299e-02 -1.962806090637e-02 -2.095367078140e-02 -2.220592379064e-02 --2.338098805623e-02 -2.447529697955e-02 -2.548555992892e-02 -2.640877199355e-02 --2.724222277558e-02 -2.798350419456e-02 -2.863051728270e-02 -2.918147795210e-02 --2.963492171868e-02 -2.998970737110e-02 -3.024501957619e-02 -3.040037041610e-02 --3.045559985569e-02 -3.041087514220e-02 -3.026668914282e-02 -3.002385762894e-02 --2.968351551956e-02 -2.924711209937e-02 -2.871640523051e-02 -2.809345458010e-02 --2.738061388883e-02 -2.658052230879e-02 -2.569609484180e-02 -2.473051191228e-02 --2.368720811129e-02 -2.256986015104e-02 -2.138237407161e-02 -2.012887174384e-02 --1.881367671460e-02 -1.744129944241e-02 -1.601642197357e-02 -1.454388211024e-02 --1.302865712360e-02 -1.147584706651e-02 -9.890657741144e-03 -8.278383378148e-03 --6.644389084369e-03 -4.994093117121e-03 -3.332949043045e-03 -1.666427839951e-03 -6.012352329821e-15 1.660882307642e-03 3.310802956777e-03 4.944399409738e-03 -6.556380031865e-03 - Type L N - 0 2 10 -0.000000000000e+00 2.620035804377e-04 1.047131718342e-03 2.352739493154e-03 -4.174428330095e-03 6.506060404103e-03 9.339778739072e-03 1.266603293461e-02 -1.647361043433e-02 2.074967323186e-02 2.547979989189e-02 3.064803274650e-02 -3.623693010936e-02 4.222762333385e-02 4.859987852524e-02 5.533216270128e-02 -6.240171418104e-02 6.978461696787e-02 7.745587887891e-02 8.538951316150e-02 -9.355862332505e-02 1.019354909068e-01 1.104916658795e-01 1.191980594019e-01 -1.280250386031e-01 1.369425230876e-01 1.459200828410e-01 1.549270372115e-01 -1.639325546409e-01 1.729057528151e-01 1.818157989018e-01 1.906320095474e-01 -1.993239503004e-01 2.078615341368e-01 2.162151187607e-01 2.243556023625e-01 -2.322545175197e-01 2.398841229321e-01 2.472174926930e-01 2.542286028033e-01 -2.608924146474e-01 2.671849551599e-01 2.730833934219e-01 2.785661134411e-01 -2.836127828782e-01 2.882044175025e-01 2.923234411673e-01 2.959537411153e-01 -2.990807184404e-01 3.016913335443e-01 3.037741464492e-01 3.053193518408e-01 -3.063188087347e-01 3.067660646799e-01 3.066563744277e-01 3.059867130152e-01 -3.047557832314e-01 3.029640174516e-01 3.006135738454e-01 2.977083269830e-01 -2.942538528805e-01 2.902574085479e-01 2.857279061174e-01 2.806758816488e-01 -2.751134587301e-01 2.690543070006e-01 2.625135957503e-01 2.555079427565e-01 -2.480553585404e-01 2.401751862379e-01 2.318880372958e-01 2.232157232141e-01 -2.141811835724e-01 2.048084105866e-01 1.951223704560e-01 1.851489217677e-01 -1.749147312377e-01 1.644471870749e-01 1.537743102598e-01 1.429246640392e-01 -1.319272619409e-01 1.208114746169e-01 1.096069358277e-01 9.834344788108e-02 -8.705088684057e-02 7.575910781808e-02 6.449785066425e-02 5.329664636778e-02 -4.218472447166e-02 3.119092180969e-02 2.034359286162e-02 9.670522018677e-03 --8.011619562113e-04 -1.104506899723e-02 -2.103562806663e-02 -3.074816449107e-02 --4.015897405730e-02 -4.924539363317e-02 -5.798586809226e-02 -6.636001333369e-02 --7.434867520261e-02 -8.193398413124e-02 -8.909940533569e-02 -9.582978441903e-02 --1.021113882473e-01 -1.079319409817e-01 -1.132806551669e-01 -1.181482577925e-01 --1.225270112614e-01 -1.264107292183e-01 -1.297947872062e-01 -1.326761281384e-01 --1.350532625913e-01 -1.369262639391e-01 -1.382967583708e-01 -1.391679098457e-01 --1.395444000616e-01 -1.394324035245e-01 -1.388395578295e-01 -1.377749292714e-01 --1.362489739257e-01 -1.342734943514e-01 -1.318615920821e-01 -1.290276160864e-01 --1.257871073914e-01 -1.221567400729e-01 -1.181542588320e-01 -1.137984133840e-01 --1.091088898976e-01 -1.041062397316e-01 -9.881180572283e-02 -9.324764628811e-02 --8.743645760788e-02 -8.140149416526e-02 -7.516648791822e-02 -6.875556638627e-02 --6.219316993520e-02 -5.550396854491e-02 -4.871277834585e-02 -4.184447820889e-02 --3.492392667190e-02 -2.797587948395e-02 -2.102490804431e-02 -1.409531900914e-02 --7.211075333353e-03 -3.957190089499e-04 6.327704246251e-03 1.293671810326e-02 -1.940948630276e-02 2.572488067445e-02 3.186254627760e-02 3.780296345647e-02 -4.352750661626e-02 4.901849953707e-02 5.425926705699e-02 5.923418296817e-02 -6.392871398422e-02 6.832945965134e-02 7.242418809040e-02 7.620186747228e-02 -7.965269314418e-02 8.276811034000e-02 8.554083242365e-02 8.796485463021e-02 -9.003546328530e-02 9.174924049919e-02 9.310406434793e-02 9.409910456930e-02 -9.473481381699e-02 9.501291453183e-02 9.493638150345e-02 9.450942021097e-02 -9.373744104510e-02 9.262702952815e-02 9.118591266185e-02 8.942292154537e-02 -8.734795041872e-02 8.497191229792e-02 8.230669137963e-02 7.936509240319e-02 -7.616078716752e-02 7.270825840950e-02 6.902274125824e-02 6.512016248718e-02 -6.101707779225e-02 5.673060733022e-02 5.227836975588e-02 4.767841500079e-02 -4.294915603927e-02 3.810929988956e-02 3.317777809923e-02 2.817367696430e-02 -2.311616773109e-02 1.802443702837e-02 1.291761777506e-02 7.814720805650e-03 -2.734567451569e-03 -2.304276688186e-03 -7.283566559373e-03 -1.218544082641e-02 --1.699248319366e-02 -2.168778166772e-02 -2.625498556300e-02 -3.067836006198e-02 --3.494283815152e-02 -3.903406976697e-02 -4.293846798677e-02 -4.664325213182e-02 --5.013648763584e-02 -5.340712256517e-02 -5.644502067939e-02 -5.924099093709e-02 --6.178681336438e-02 -6.407526121752e-02 -6.610011938443e-02 -6.785619898412e-02 --6.933934813651e-02 -7.054645888953e-02 -7.147547030398e-02 -7.212536771062e-02 --7.249617816758e-02 -7.258896215997e-02 -7.240580159638e-02 -7.194978417065e-02 --7.122498416940e-02 -7.023643981868e-02 -6.899012727473e-02 -6.749293137542e-02 --6.575261328024e-02 -6.377777513672e-02 -6.157782192159e-02 -5.916292061419e-02 --5.654395686812e-02 -5.373248935576e-02 -5.074070196708e-02 -4.758135405145e-02 --4.426772889667e-02 -4.081358064510e-02 -3.723307985088e-02 -3.354075788636e-02 --2.975145040852e-02 -2.588024009840e-02 -2.194239888811e-02 -1.795332989034e-02 --1.392850924527e-02 -9.883428098751e-03 -5.833534923925e-03 -1.794178395810e-03 -2.219448974676e-03 6.192366244977e-03 1.010985828576e-02 1.395752867415e-02 -1.772135104925e-02 2.138771875041e-02 2.494349256632e-02 2.837604643077e-02 -3.167331090945e-02 3.482381433117e-02 3.781672142661e-02 4.064186934726e-02 -4.328980094801e-02 4.575179522735e-02 4.801989483032e-02 5.008693053066e-02 -5.194654262030e-02 5.359319914616e-02 5.502221094600e-02 5.622974344750e-02 -5.721282520660e-02 5.796935317347e-02 5.849809468655e-02 5.879868620733e-02 -5.887162882027e-02 5.871828053444e-02 5.834084543467e-02 5.774235974177e-02 -5.692667485224e-02 5.589843743883e-02 5.466306670358e-02 5.322672888515e-02 -5.159630913190e-02 4.977938086104e-02 4.778417273319e-02 4.561953337956e-02 -4.329489402663e-02 4.082022917023e-02 3.820601545722e-02 3.546318893891e-02 -3.260310086529e-02 2.963747219388e-02 2.657834699060e-02 2.343804490332e-02 -2.022911289118e-02 1.696427639457e-02 1.365639013154e-02 1.031838870717e-02 -6.963237221582e-03 3.603882061735e-03 2.532020601634e-04 -3.076039798482e-03 --6.371243945210e-03 -9.620020894655e-03 -1.281023684336e-02 -1.593005803345e-02 --1.896799372230e-02 -2.191293760479e-02 -2.475420754144e-02 -2.748158345284e-02 --3.008534324839e-02 -3.255629666528e-02 -3.488581690254e-02 -3.706586994327e-02 --3.908904146801e-02 -4.094856127127e-02 -4.263832510331e-02 -4.415291386933e-02 --4.548761012830e-02 -4.663841184443e-02 -4.760204335446e-02 -4.837596352492e-02 --4.895837108397e-02 -4.934820712322e-02 -4.954515477559e-02 -4.954963608583e-02 --4.936280610077e-02 -4.898654421662e-02 -4.842344283100e-02 -4.767679335692e-02 --4.675056966581e-02 -4.564940903605e-02 -4.437859069210e-02 -4.294401202848e-02 --4.135216262065e-02 -3.961009613287e-02 -3.772540024034e-02 -3.570616469007e-02 --3.356094763092e-02 -3.129874034941e-02 -2.892893055317e-02 -2.646126434851e-02 --2.390580706294e-02 -2.127290306701e-02 -1.857313475277e-02 -1.581728082870e-02 --1.301627409256e-02 -1.018115884487e-02 -7.323048106310e-03 -4.453080802119e-03 --1.582379076085e-03 1.277994104811e-03 4.117076895743e-03 6.924049912610e-03 -9.688276810099e-03 1.239934394917e-02 1.504709900802e-02 1.762168839540e-02 -2.011359333025e-02 2.251366445745e-02 2.481315487560e-02 2.700375145932e-02 -2.907760436581e-02 3.102735462241e-02 3.284615970016e-02 3.452771698609e-02 -3.606628507543e-02 3.745670281381e-02 3.869440602799e-02 3.977544189305e-02 -4.069648089307e-02 4.145482634156e-02 4.204842143759e-02 4.247585384263e-02 -4.273635777314e-02 4.282981361275e-02 4.275674505787e-02 4.251831381953e-02 -4.211631191349e-02 4.155315157965e-02 4.083185288082e-02 3.995602903911e-02 -3.892986957682e-02 3.775812133673e-02 3.644606746422e-02 3.499950444117e-02 -3.342471726858e-02 3.172845290135e-02 2.991789204487e-02 2.800061942895e-02 -2.598459267953e-02 2.387810991374e-02 2.168977618808e-02 1.942846893310e-02 -1.710330251128e-02 1.472359203784e-02 1.229881660573e-02 9.838582058397e-03 -7.352583454433e-03 4.850567369051e-03 2.342294177207e-03 -1.624995374291e-04 --2.654138304523e-03 -5.123044678725e-03 -7.559775601667e-03 -9.955058077794e-03 --1.229982403074e-02 -1.458524421068e-02 -1.680276102726e-02 -1.894412018742e-02 --2.100140102249e-02 -2.296704539440e-02 -2.483388507685e-02 -2.659516751356e-02 --2.824457986222e-02 -2.977627123989e-02 -3.118487309266e-02 -3.246551762010e-02 --3.361385419245e-02 -3.462606370685e-02 -3.549887083663e-02 -3.622955413607e-02 --3.681595397167e-02 -3.725647825883e-02 -3.755010599193e-02 -3.769638856381e-02 --3.769544887952e-02 -3.754797827720e-02 -3.725523127767e-02 -3.681901819240e-02 --3.624169562733e-02 -3.552615492841e-02 -3.467580862197e-02 -3.369457491062e-02 --3.258686029276e-02 -3.135754038030e-02 -3.001193899610e-02 -2.855580563876e-02 --2.699529140817e-02 -2.533692349098e-02 -2.358757830999e-02 -2.175445344637e-02 --1.984503844759e-02 -1.786708463813e-02 -1.582857405291e-02 -1.373768761674e-02 --1.160277269495e-02 -9.432310142707e-03 -7.234880981712e-03 -5.019132833746e-03 --2.793746241246e-03 -5.674010047185e-04 1.651257333662e-03 3.853650732059e-03 -6.031301489937e-03 8.175864563376e-03 1.027915923270e-02 1.233320000329e-02 -1.433022662396e-02 1.626273311109e-02 1.812349567089e-02 1.990559941708e-02 -2.160246378597e-02 2.320786655663e-02 2.471596638938e-02 2.612132380187e-02 -2.741892050851e-02 2.860417705536e-02 2.967296868953e-02 3.062163940931e-02 -3.144701414801e-02 3.214640905242e-02 3.271763982383e-02 3.315902809725e-02 -3.346940584235e-02 3.364811777675e-02 3.369502179069e-02 3.361048738904e-02 -3.339539216478e-02 3.305111632528e-02 3.257953530016e-02 3.198301046681e-02 -3.126437803690e-02 3.042693615365e-02 2.947443025706e-02 2.841103677982e-02 -2.724134524376e-02 2.597033883180e-02 2.460337351638e-02 2.314615583044e-02 -2.160471937202e-02 1.998540013785e-02 1.829481078573e-02 1.653981392904e-02 -1.472749457012e-02 1.286513178221e-02 1.096016975200e-02 9.020188297052e-03 -7.052872973721e-03 5.065984892624e-03 3.067330359101e-03 1.064730456563e-03 --9.340093097221e-04 -2.921129191455e-03 -4.888945082975e-03 -6.829877999512e-03 --8.736483035799e-03 -1.060147769521e-02 -1.241776948243e-02 -1.417848265595e-02 --1.587698404013e-02 -1.750690780091e-02 -1.906217909314e-02 -2.053703649256e-02 --2.192605313036e-02 -2.322415645346e-02 -2.442664653926e-02 -2.552921289965e-02 --2.652794971473e-02 -2.741936944348e-02 -2.820041476444e-02 -2.886846880682e-02 --2.942136363844e-02 -2.985738698434e-02 -3.017528715649e-02 -3.037427618212e-02 --3.045403112513e-02 -3.041469360212e-02 -3.025686750147e-02 -2.998161492074e-02 --2.959045034473e-02 -2.908533309287e-02 -2.846865807160e-02 -2.774324487347e-02 --2.691232527115e-02 -2.597952916044e-02 -2.494886901223e-02 -2.382472289889e-02 --2.261181616584e-02 -2.131520182400e-02 -1.994023974356e-02 -1.849257473380e-02 --1.697811359776e-02 -1.540300125403e-02 -1.377359602157e-02 -1.209644416594e-02 --1.037825380810e-02 -8.625868299011e-03 -6.846239164960e-03 -5.046398729735e-03 --3.233432520802e-03 -1.414451567016e-03 4.034353045415e-04 2.213149065363e-03 -4.007667869506e-03 5.780054119506e-03 7.523481110548e-03 9.231259151201e-03 -1.089686106141e-02 1.251394695115e-02 1.407638818635e-02 1.557829045196e-02 -1.701401582611e-02 1.837820378317e-02 1.966579104810e-02 2.087203022904e-02 -2.199250716028e-02 2.302315689278e-02 2.396027827478e-02 2.480054707111e-02 -2.554102757496e-02 2.617918267265e-02 2.671288232720e-02 2.714041045362e-02 -2.746047016431e-02 2.767218737005e-02 2.777511272791e-02 2.776922193426e-02 -2.765491436722e-02 2.743301008928e-02 2.710474522729e-02 2.667176575308e-02 -2.613611969416e-02 2.550024780987e-02 2.476697277428e-02 2.393948691269e-02 -2.302133854408e-02 2.201641698699e-02 2.092893629145e-02 1.976341776426e-02 -1.852467135921e-02 1.721777600821e-02 1.584805897315e-02 1.442107430156e-02 -1.294258047276e-02 1.141851732369e-02 9.854982346319e-03 8.258206450586e-03 -6.634529288631e-03 4.990374237425e-03 3.332223137968e-03 1.666590889822e-03 -1.678812230281e-15 -1.661044814901e-03 -3.310081874987e-03 -4.940717534258e-03 --6.546650832582e-03 - Type L N - 0 2 11 -0.000000000000e+00 3.076684752969e-04 1.229456822918e-03 2.761718489533e-03 -4.898391469915e-03 7.631021618927e-03 1.094879516000e-02 1.483858026336e-02 -1.928497753096e-02 2.427037919052e-02 2.977503676719e-02 3.577713696791e-02 -4.225288548166e-02 4.917659836780e-02 5.652080067530e-02 6.425633190728e-02 -7.235245791876e-02 8.077698881069e-02 8.949640235977e-02 9.847597250258e-02 -1.076799023726e-01 1.170714613719e-01 1.266131257425e-01 1.362667220913e-01 -1.459935733092e-01 1.557546463171e-01 1.655107010646e-01 1.752224402041e-01 -1.848506588577e-01 1.943563938989e-01 2.037010721695e-01 2.128466570595e-01 -2.217557928846e-01 2.303919465032e-01 2.387195456292e-01 2.467041133084e-01 -2.543123980425e-01 2.615124990639e-01 2.682739862803e-01 2.745680144358e-01 -2.803674310519e-01 2.856468777420e-01 2.903828845161e-01 2.945539567237e-01 -2.981406543082e-01 3.011256630816e-01 3.034938577562e-01 3.052323565036e-01 -3.063305668482e-01 3.067802227308e-01 3.065754126186e-01 3.057125985692e-01 -3.041906261952e-01 3.020107255079e-01 2.991765026582e-01 2.956939226262e-01 -2.915712829478e-01 2.868191785994e-01 2.814504581996e-01 2.754801717169e-01 -2.689255099084e-01 2.618057357443e-01 2.541421081053e-01 2.459577980678e-01 -2.372777981237e-01 2.281288247028e-01 2.185392143984e-01 2.085388143130e-01 -1.981588669688e-01 1.874318902450e-01 1.763915528221e-01 1.650725456318e-01 -1.535104498227e-01 1.417416017660e-01 1.298029556362e-01 1.177319441059e-01 -1.055663377061e-01 9.334410339940e-02 8.110326292147e-02 6.888175144123e-02 -5.671727708871e-02 4.464718189424e-02 3.270830467496e-02 2.093684639556e-02 -9.368238518095e-03 -1.962985157258e-03 -1.302331267469e-02 -2.378037365978e-02 --3.420305416166e-02 -4.426160617195e-02 -5.392775141475e-02 -6.317477902589e-02 --7.197763676562e-02 -8.031301543553e-02 -8.815942619899e-02 -9.549727053327e-02 --1.023089025723e-01 -1.085786836294e-01 -1.142930287224e-01 -1.194404449545e-01 --1.240115616379e-01 -1.279991520817e-01 -1.313981469958e-01 -1.342056395004e-01 --1.364208817593e-01 -1.380452732934e-01 -1.390823410596e-01 -1.395377114146e-01 --1.394190741153e-01 -1.387361385373e-01 -1.375005823238e-01 -1.357259927067e-01 --1.334278007701e-01 -1.306232089512e-01 -1.273311121030e-01 -1.235720124635e-01 --1.193679289021e-01 -1.147423008317e-01 -1.097198871991e-01 -1.043266609778e-01 --9.858969961033e-02 -9.253707185462e-02 -8.619772150607e-02 -7.960134847434e-02 --7.277828770341e-02 -6.575938642888e-02 -5.857588027130e-02 -5.125926866597e-02 --4.384119012989e-02 -3.635329786467e-02 -2.882713619011e-02 -2.129401829720e-02 --1.378490580154e-02 -6.330290568085e-03 1.039920733378e-03 8.296518896249e-03 -1.541110083812e-02 2.235617424116e-02 2.910525777694e-02 3.563297654072e-02 -4.191515234175e-02 4.792888851923e-02 5.365264897716e-02 5.906633115714e-02 -6.415133269386e-02 6.889061152569e-02 7.326873926022e-02 7.727194762380e-02 -8.088816785271e-02 8.410706291371e-02 8.692005247143e-02 8.932033055009e-02 -9.130287586745e-02 9.286445484874e-02 9.400361735845e-02 9.472068521733e-02 -9.501773360112e-02 9.489856544625e-02 9.436867901559e-02 9.343522880452e-02 -9.210697999391e-02 9.039425668188e-02 8.830888415028e-02 8.586412544504e-02 -8.307461257098e-02 7.995627262242e-02 7.652624918934e-02 7.280281939669e-02 -6.880530695008e-02 6.455399157522e-02 6.007001525105e-02 5.537528564737e-02 -5.049237718656e-02 4.544443015637e-02 4.025504830616e-02 3.494819536231e-02 -2.954809090060e-02 2.407910601299e-02 1.856565920428e-02 1.303211295073e-02 -7.502671346696e-03 2.001279258628e-03 -3.448476603728e-03 -8.823464299277e-03 --1.410110056357e-02 -1.925944163937e-02 -2.427727067176e-02 -2.913418132615e-02 --3.381065730610e-02 -3.828814746650e-02 -4.254913623868e-02 -4.657720910519e-02 --5.035711288463e-02 -5.387481061019e-02 -5.711753080991e-02 -6.007381102120e-02 --6.273353539776e-02 -6.508796629279e-02 -6.712976972852e-02 -6.885303468854e-02 --7.025328619587e-02 -7.132749216619e-02 -7.207406405214e-02 -7.249285132072e-02 --7.258512983165e-02 -7.235358420985e-02 -7.180228433038e-02 -7.093665605800e-02 --6.976344640724e-02 -6.829068331139e-02 -6.652763021048e-02 -6.448473568909e-02 --6.217357841437e-02 -5.960680764286e-02 -5.679807958219e-02 -5.376198990912e-02 --5.051400276031e-02 -4.707037652467e-02 -4.344808677825e-02 -3.966474671203e-02 --3.573852541206e-02 -3.168806435765e-02 -2.753239250910e-02 -2.329084035964e-02 --1.898295332883e-02 -1.462840487436e-02 -1.024690969872e-02 -5.858137423784e-03 --1.481627102334e-03 2.863297070612e-03 7.157608491192e-03 1.138265897831e-02 -1.552025736739e-02 1.955274554190e-02 2.346307159151e-02 2.723485979991e-02 -3.085247718102e-02 3.430109629899e-02 3.756675412499e-02 4.063640670257e-02 -4.349797941283e-02 4.614041265109e-02 4.855370274757e-02 5.072893798650e-02 -5.265832959992e-02 5.433523763505e-02 5.575419161718e-02 5.691090595260e-02 -5.780229003971e-02 5.842645307927e-02 5.878270359798e-02 5.887154372239e-02 -5.869465826260e-02 5.825489868764e-02 5.755626209583e-02 5.660386530476e-02 -5.540391420582e-02 5.396366854810e-02 5.229140233518e-02 5.039636003652e-02 -4.828870883190e-02 4.597948712356e-02 4.348054956543e-02 4.080450887244e-02 -3.796467468555e-02 3.497498977904e-02 3.184996390683e-02 2.860460559276e-02 -2.525435217715e-02 2.181499843767e-02 1.830262410672e-02 1.473352061066e-02 -1.112411735750e-02 7.490907899814e-03 3.850376298047e-03 2.189240069475e-04 --3.387202396787e-03 -6.951982332809e-03 -1.045969087557e-02 -1.389496665532e-02 --1.724287771342e-02 -2.048898503462e-02 -2.361940349045e-02 -2.662085994112e-02 --2.948074825712e-02 -3.218718103649e-02 -3.472903781001e-02 -3.709600954258e-02 --3.927863925708e-02 -4.126835862455e-02 -4.305752038353e-02 -4.463942647041e-02 --4.600835176212e-02 -4.715956335253e-02 -4.808933530412e-02 -4.879495883629e-02 --4.927474793281e-02 -4.952804037032e-02 -4.955519419073e-02 -4.935757965981e-02 --4.893756677430e-02 -4.829850839888e-02 -4.744471913344e-02 -4.638145002913e-02 --4.511485928961e-02 -4.365197911066e-02 -4.200067882765e-02 -4.016962455577e-02 --3.816823552227e-02 -3.600663730365e-02 -3.369561219321e-02 -3.124654693566e-02 --2.867137807613e-02 -2.598253517989e-02 -2.319288218723e-02 -2.031565717474e-02 --1.736441079973e-02 -1.435294370905e-02 -1.129524319641e-02 -8.205419394279e-03 --5.097641286770e-03 -1.986072829379e-03 1.115190540756e-03 4.192184723556e-03 -7.231138827680e-03 1.021853582485e-02 1.314117172336e-02 1.598621300531e-02 -1.874125208106e-02 2.139436052478e-02 2.393413986573e-02 2.634976972223e-02 -2.863105307825e-02 3.076845851588e-02 3.275315923222e-02 3.457706868354e-02 -3.623287271619e-02 3.771405805957e-02 3.901493707359e-02 4.013066866018e-02 -4.105727526594e-02 4.179165592093e-02 4.233159527647e-02 4.267576862267e-02 -4.282374288487e-02 4.277597361553e-02 4.253379801639e-02 4.209942404287e-02 -4.147591566015e-02 4.066717433698e-02 3.967791687977e-02 3.851364972527e-02 -3.718063982521e-02 3.568588227123e-02 3.403706482161e-02 3.224252950495e-02 -3.031123148774e-02 2.825269540412e-02 2.607696935661e-02 2.379457680580e-02 -2.141646657547e-02 1.895396120673e-02 1.641870390118e-02 1.382260429823e-02 -1.117778333544e-02 8.496517443904e-03 5.791182332473e-03 3.074196614823e-03 -3.579655333173e-04 -2.345174968402e-03 -5.023013574793e-03 -7.663518084389e-03 --1.025488881198e-02 -1.278561067257e-02 -1.524450371981e-02 -1.762077191955e-02 --1.990404994807e-02 -2.208444781460e-02 -2.415259311825e-02 -2.609967076105e-02 --2.791745995112e-02 -2.959836834282e-02 -3.113546317436e-02 -3.252249927752e-02 --3.375394384859e-02 -3.482499788491e-02 -3.573161420664e-02 -3.647051199911e-02 --3.703918782712e-02 -3.743592308850e-02 -3.765978789044e-02 -3.771064134824e-02 --3.758912832216e-02 -3.729667262398e-02 -3.683546674066e-02 -3.620845813781e-02 --3.541933222075e-02 -3.447249204577e-02 -3.337303488818e-02 -3.212672578743e-02 --3.073996820272e-02 -2.921977192474e-02 -2.757371840097e-02 -2.580992364281e-02 --2.393699889300e-02 -2.196400924095e-02 -1.990043038209e-02 -1.775610372464e-02 --1.554119005402e-02 -1.326612197031e-02 -1.094155531897e-02 -8.578319838528e-03 --6.187369251313e-03 -3.779731025096e-03 -1.366456033675e-03 1.041431655932e-03 -3.432984643661e-03 5.797381480523e-03 8.123975156804e-03 1.040234057904e-02 -1.262232082597e-02 1.477407198010e-02 1.684810633883e-02 1.883533381715e-02 -2.072710136309e-02 2.251523021665e-02 2.419205085349e-02 2.575043546574e-02 -2.718382784412e-02 2.848627053771e-02 2.965242918072e-02 3.067761388866e-02 -3.155779764011e-02 3.228963157415e-02 3.287045714778e-02 3.329831511195e-02 -3.357195127965e-02 3.369081907362e-02 3.365507885629e-02 3.346559405883e-02 -3.312392414056e-02 3.263231442430e-02 3.199368286693e-02 3.121160383831e-02 -3.029028899450e-02 2.923456534451e-02 2.804985062158e-02 2.674212608192e-02 -2.531790686509e-02 2.378421006026e-02 2.214852063285e-02 2.041875537461e-02 -1.860322504877e-02 1.671059490926e-02 1.474984377951e-02 1.273022188220e-02 -1.066120761620e-02 8.552463480746e-03 6.413791350159e-03 4.255087304277e-03 -2.086296221165e-03 -8.263366125141e-05 -2.241796008618e-03 -4.381371274271e-03 --6.491671002218e-03 -8.563181350586e-03 -1.058660564148e-02 -1.255290574840e-02 --1.445334213826e-02 -1.627951239218e-02 -1.802338803634e-02 -1.967734952298e-02 --2.123421921034e-02 -2.268729220007e-02 -2.403036490096e-02 -2.525776119861e-02 --2.636435612188e-02 -2.734559690898e-02 -2.819752138788e-02 -2.891677359852e-02 --2.950061659689e-02 -2.994694239413e-02 -3.025427899694e-02 -3.042179452880e-02 --3.044929842495e-02 -3.033723970715e-02 -3.008670235770e-02 -2.969939782500e-02 --2.917765470601e-02 -2.852440566355e-02 -2.774317164852e-02 -2.683804350933e-02 --2.581366108219e-02 -2.467518986695e-02 -2.342829540380e-02 -2.207911547618e-02 --2.063423027435e-02 -1.910063066329e-02 -1.748568470606e-02 -1.579710260156e-02 --1.404290020202e-02 -1.223136128139e-02 -1.037099873071e-02 -8.470514861073e-03 --6.538760997688e-03 -4.584696551532e-03 -2.617347756428e-03 -6.457662603618e-04 -1.321012240231e-03 3.274009135404e-03 5.204343619764e-03 7.103272810172e-03 -8.962231082993e-03 1.077286845501e-02 1.252708783712e-02 1.421708099563e-02 -1.583536306260e-02 1.737480544355e-02 1.882866697908e-02 2.019062322502e-02 -2.145479372504e-02 2.261576715911e-02 2.366862426125e-02 2.460895841062e-02 -2.543289381082e-02 2.613710118357e-02 2.671881091458e-02 2.717582360104e-02 -2.750651796229e-02 2.770985608732e-02 2.778538600493e-02 2.773324157453e-02 -2.755413970786e-02 2.724937494400e-02 2.682081141175e-02 2.627087222561e-02 -2.560252637270e-02 2.481927315949e-02 2.392512429765e-02 2.292458371938e-02 -2.182262522185e-02 2.062466805058e-02 1.933655054006e-02 1.796450193866e-02 -1.651511255249e-02 1.499530235009e-02 1.341228817647e-02 1.177354973056e-02 -1.008679446542e-02 8.359921574931e-03 6.600985233967e-03 4.818157262340e-03 -3.019689384381e-03 1.213875257557e-03 -5.909875561334e-04 -2.386635502586e-03 --4.164876659528e-03 -5.917627901590e-03 -7.636951438803e-03 -9.315090564226e-03 --1.094450445058e-02 -1.251790184067e-02 -1.402827348179e-02 -1.546892316090e-02 --1.683349720363e-02 -1.811601230827e-02 -1.931088159343e-02 -2.041293874683e-02 --2.141746017166e-02 -2.232018503642e-02 -2.311733314391e-02 -2.380562054548e-02 --2.438227283685e-02 -2.484503608294e-02 -2.519218532972e-02 -2.542253067262e-02 --2.553542086195e-02 -2.553074443721e-02 -2.540892839351e-02 -2.517093439426e-02 --2.481825255589e-02 -2.435289284079e-02 -2.377737410594e-02 -2.309471086481e-02 --2.230839783060e-02 -2.142239231867e-02 -2.044109459549e-02 -1.936932627061e-02 --1.821230683654e-02 -1.697562846985e-02 -1.566522921396e-02 -1.428736467144e-02 --1.284857833972e-02 -1.135567073013e-02 -9.815667414928e-03 -8.235786151830e-03 --6.623403238827e-03 -4.986019255467e-03 -3.331224348814e-03 -1.666663223992e-03 --5.234804717149e-15 1.661116908350e-03 3.309089722328e-03 4.936405886016e-03 -6.535672151334e-03 - Type L N - 0 2 12 -0.000000000000e+00 3.569814883576e-04 1.426287458324e-03 3.203009736561e-03 -5.678992372019e-03 8.842868026578e-03 1.268010869057e-02 1.717309049234e-02 -2.230117230782e-02 2.804078781293e-02 3.436555056104e-02 4.124637160836e-02 -4.865158915351e-02 5.654710960314e-02 6.489655942367e-02 7.366144709087e-02 -8.280133440316e-02 9.227401638268e-02 1.020357089495e-01 1.120412435198e-01 -1.222442676477e-01 1.325974508038e-01 1.430526943619e-01 1.535613448439e-01 -1.640744094647e-01 1.745427730018e-01 1.849174150175e-01 1.951496264531e-01 -2.051912246258e-01 2.149947656614e-01 2.245137534122e-01 2.337028439257e-01 -2.425180445512e-01 2.509169067969e-01 2.588587120793e-01 2.663046495419e-01 -2.732179851554e-01 2.795642213536e-01 2.853112465043e-01 2.904294735591e-01 -2.948919672794e-01 2.986745594874e-01 3.017559518458e-01 3.041178057292e-01 -3.057448188081e-01 3.066247880289e-01 3.067486587350e-01 3.061105597370e-01 -3.047078242075e-01 3.025409963362e-01 2.996138237492e-01 2.959332357614e-01 -2.915093075916e-01 2.863552107395e-01 2.804871497789e-01 2.739242858907e-01 -2.666886475116e-01 2.588050285377e-01 2.503008745740e-01 2.412061577761e-01 -2.315532408807e-01 2.213767310680e-01 2.107133243446e-01 1.996016411774e-01 -1.880820541447e-01 1.761965084072e-01 1.639883358306e-01 1.515020636184e-01 -1.387832183350e-01 1.258781262193e-01 1.128337107019e-01 9.969728804722e-02 -8.651636205180e-02 7.333841872575e-02 6.021072188578e-02 4.718011057796e-02 -3.429279923829e-02 2.159418148252e-02 9.128638397347e-03 -3.060647819018e-03 --1.493187404649e-02 -2.644478947395e-02 -3.756086111718e-02 -4.824343090815e-02 --5.845786368133e-02 -6.817168542733e-02 -7.735471123116e-02 -8.597916236248e-02 --9.401977203692e-02 -1.014538794221e-01 -1.082615115172e-01 -1.144254525935e-01 --1.199313009396e-01 -1.247675127185e-01 -1.289254327991e-01 -1.323993124896e-01 --1.351863141592e-01 -1.372865027934e-01 -1.387028245925e-01 -1.394410727781e-01 --1.395098408326e-01 -1.389204634537e-01 -1.376869455620e-01 -1.358258797502e-01 --1.333563526199e-01 -1.302998404937e-01 -1.266800950448e-01 -1.225230194247e-01 --1.178565355123e-01 -1.127104429482e-01 -1.071162706481e-01 -1.011071215248e-01 --9.471751117380e-02 -8.798320130120e-02 -8.094102869535e-02 -7.362873055691e-02 --6.608476701707e-02 -5.834814168099e-02 -5.045822103842e-02 -4.245455358404e-02 --3.437668948673e-02 -2.626400163957e-02 -1.815550891133e-02 -1.008970240501e-02 --2.104375510424e-03 5.763541484598e-03 1.347814148570e-02 2.100469467665e-02 -2.830979592005e-02 3.536150483243e-02 4.212947793040e-02 4.858509228547e-02 -5.470156016846e-02 6.045403421016e-02 6.581970265261e-02 7.077787431437e-02 -7.531005294468e-02 7.940000069296e-02 8.303379047373e-02 8.619984706080e-02 -8.888897679901e-02 9.109438587652e-02 9.281168715524e-02 9.403889561133e-02 -9.477641249152e-02 9.502699834383e-02 9.479573513343e-02 9.408997770467e-02 -9.291929489961e-02 9.129540069051e-02 8.923207572929e-02 8.674507975962e-02 -8.385205537857e-02 8.057242367249e-02 7.692727228735e-02 7.293923652620e-02 -6.863237409600e-02 6.403203415221e-02 5.916472131247e-02 5.405795533072e-02 -4.874012713881e-02 4.324035197554e-02 3.758832033245e-02 3.181414745065e-02 -2.594822210564e-02 2.002105541476e-02 1.406313039743e-02 8.104753009171e-03 -2.175905358568e-03 -3.693898199159e-03 -9.475751417086e-03 -1.514149230696e-02 --2.066383445693e-02 -2.601649291622e-02 -3.117430407723e-02 -3.611333901816e-02 --4.081100980535e-02 -4.524616829199e-02 -4.939919698957e-02 -5.325209163042e-02 --5.678853508241e-02 -5.999396232195e-02 -6.285561621669e-02 -6.536259391652e-02 --6.750588369834e-02 -6.927839215825e-02 -7.067496169263e-02 -7.169237825779e-02 --7.232936944540e-02 -7.258659295852e-02 -7.246661561924e-02 -7.197388308498e-02 --7.111468049454e-02 -6.989708430856e-02 -6.833090565013e-02 -6.642762549139e-02 --6.420032206953e-02 -6.166359095147e-02 -5.883345819969e-02 -5.572728712279e-02 --5.236367912251e-02 -4.876236917484e-02 -4.494411650539e-02 -4.093059103929e-02 --3.674425622285e-02 -3.240824882765e-02 -2.794625635919e-02 -2.338239269891e-02 --1.874107261368e-02 -1.404688576745e-02 -9.324470868169e-03 -4.598390577902e-03 -1.069921939384e-04 4.767636005687e-03 9.359940012229e-03 1.386085992999e-02 -1.824802028030e-02 2.249982237581e-02 2.659554753943e-02 3.051545507277e-02 -3.424087452049e-02 3.775429180865e-02 4.103942886873e-02 4.408131639428e-02 -4.686635941380e-02 4.938239540193e-02 5.161874469013e-02 5.356625297829e-02 -5.521732578984e-02 5.656595475443e-02 5.760773564410e-02 5.833987813073e-02 -5.876120727474e-02 5.887215679612e-02 5.867475422040e-02 5.817259803202e-02 -5.737082700748e-02 5.627608193834e-02 5.489645999179e-02 5.324146199149e-02 -5.132193293559e-02 4.914999610088e-02 4.673898111185e-02 4.410334638202e-02 -4.125859636009e-02 3.822119403739e-02 3.500846919386e-02 3.163852287837e-02 -2.813012863500e-02 2.450263100010e-02 2.077584180546e-02 1.696993483036e-02 -1.310533935054e-02 9.202633133727e-03 5.282435431064e-03 1.365300510094e-03 --2.528387731342e-03 -6.378519539712e-03 -1.016536095001e-02 -1.386965279475e-02 --1.747270658959e-02 -2.095649682631e-02 -2.430374922523e-02 -2.749802452251e-02 --3.052379739318e-02 -3.336653013806e-02 -3.601274079175e-02 -3.845006533949e-02 --4.066731376263e-02 -4.265451966574e-02 -4.440298327273e-02 -4.590530761433e-02 --4.715542776550e-02 -4.814863302738e-02 -4.888158198534e-02 -4.935231041140e-02 --4.956023201614e-02 -4.950613209185e-02 -4.919215412463e-02 -4.862177948871e-02 --4.779980037128e-02 -4.673228610935e-02 -4.542654315340e-02 -4.389106890350e-02 --4.213549969391e-02 -4.017055323000e-02 -3.800796580869e-02 -3.566042467757e-02 --3.314149591151e-02 -3.046554820558e-02 -2.764767300241e-02 -2.470360138780e-02 --2.164961820300e-02 -1.850247383340e-02 -1.527929414273e-02 -1.199748902868e-02 --8.674660080023e-03 -5.328507817416e-03 -1.976738999011e-03 1.363025530750e-03 -4.673341976597e-03 7.937033247443e-03 1.113727667658e-02 1.425768936526e-02 -1.728241072262e-02 2.019618179192e-02 2.298442097176e-02 2.563329576201e-02 -2.812979018656e-02 3.046176756954e-02 3.261802836707e-02 3.458836278430e-02 -3.636359793551e-02 3.793563933481e-02 3.929750653531e-02 4.044336276610e-02 -4.136853844790e-02 4.206954850082e-02 4.254410339008e-02 4.279111388828e-02 -4.281068956538e-02 4.260413104987e-02 4.217391613683e-02 4.152367984956e-02 -4.065818859268e-02 3.958330856400e-02 3.830596862140e-02 3.683411782884e-02 -3.517667793149e-02 3.334349103529e-02 3.134526278934e-02 2.919350139147e-02 -2.690045275685e-02 2.447903220810e-02 2.194275306091e-02 1.930565249378e-02 -1.658221510205e-02 1.378729454669e-02 1.093603371569e-02 8.043783821492e-03 -5.126022861369e-03 2.198273868379e-03 -7.239766203473e-04 -3.625359454779e-03 --6.490702704869e-03 -9.305110025117e-03 -1.205403715055e-02 -1.472336613561e-02 --1.729947696126e-02 -1.976931615114e-02 -2.212046205516e-02 -2.434118647773e-02 --2.642051234892e-02 -2.834826715853e-02 -3.011513189675e-02 -3.171268526991e-02 --3.313344298513e-02 -3.437089192496e-02 -3.541951906013e-02 -3.627483497697e-02 --3.693339192456e-02 -3.739279631585e-02 -3.765171564597e-02 -3.770987982040e-02 --3.756807691478e-02 -3.722814341700e-02 -3.669294903069e-02 -3.596637614723e-02 --3.505329412068e-02 -3.395952850627e-02 -3.269182544887e-02 -3.125781143181e-02 --2.966594862004e-02 -2.792548605296e-02 -2.604640696311e-02 -2.403937251536e-02 --2.191566227883e-02 -1.968711175892e-02 -1.736604733100e-02 -1.496521892885e-02 --1.249773085105e-02 -9.976971056863e-03 -7.416539328725e-03 -4.830174683048e-03 --2.231682412867e-03 3.651388539954e-04 2.946569699445e-03 5.499041684479e-03 -8.009207971345e-03 1.046401243426e-02 1.285075690406e-02 1.515716620353e-02 -1.737145064347e-02 1.948236566420e-02 2.147926832383e-02 2.335217035218e-02 -2.509178750901e-02 2.668958500519e-02 2.813781876764e-02 2.942957235138e-02 -3.055878932574e-02 3.152030098634e-02 3.230984926954e-02 3.292410477172e-02 -3.336067980191e-02 3.361813642247e-02 3.369598945914e-02 3.359470448797e-02 -3.331569083327e-02 3.286128963623e-02 3.223475707978e-02 3.144024288008e-02 -3.048276417933e-02 2.936817499809e-02 2.810313142785e-02 2.669505276609e-02 -2.515207881646e-02 2.348302359571e-02 2.169732570689e-02 1.980499565455e-02 -1.781656039251e-02 1.574300540791e-02 1.359571465714e-02 1.138640867844e-02 -9.127081215007e-03 6.829934687878e-03 4.507314863059e-03 2.171645059743e-03 --1.646397525505e-04 -2.489158621023e-03 -4.789649696704e-03 -7.054034402038e-03 --9.270480345647e-03 -1.142746265903e-02 -1.351382343959e-02 -1.551882899580e-02 --1.743222460296e-02 -1.924428649260e-02 -2.094587081405e-02 -2.252845932386e-02 --2.398420157694e-02 -2.530595341261e-02 -2.648731154916e-02 -2.752264412166e-02 --2.840711701980e-02 -2.913671590534e-02 -2.970826381169e-02 -3.011943425206e-02 --3.036875978628e-02 -3.045563602065e-02 -3.038032103927e-02 -3.014393028902e-02 --2.974842696479e-02 -2.919660796421e-02 -2.849208550498e-02 -2.763926451953e-02 --2.664331596408e-02 -2.551014619974e-02 -2.424636262338e-02 -2.285923574506e-02 --2.135665792659e-02 -1.974709901245e-02 -1.803955909993e-02 -1.624351870902e-02 --1.436888662551e-02 -1.242594570173e-02 -1.042529690901e-02 -8.377801943820e-03 --6.294524696237e-03 -4.186671893672e-03 -2.065533236328e-03 5.757865807762e-05 -2.171388182888e-03 4.264716228960e-03 6.326538917132e-03 8.346045270086e-03 -1.031269352377e-02 1.221626578694e-02 1.404692076716e-02 1.579524429305e-02 -1.745229737510e-02 1.900966156133e-02 2.045948135957e-02 2.179450351406e-02 -2.300811294185e-02 2.409436515260e-02 2.504801499478e-02 2.586454159100e-02 -2.654016934616e-02 2.707188493284e-02 2.745745018038e-02 2.769541081551e-02 -2.778510102486e-02 2.772664383151e-02 2.752094730009e-02 2.716969660659e-02 -2.667534203104e-02 2.604108295212e-02 2.527084794387e-02 2.436927109463e-02 -2.334166468786e-02 2.219398840316e-02 2.093281521350e-02 1.956529417156e-02 -1.809911029351e-02 1.654244176341e-02 1.490391469431e-02 1.319255569457e-02 -1.141774249808e-02 9.589152926751e-03 7.716712461102e-03 5.810540701272e-03 -3.880897005497e-03 1.938125596396e-03 -7.399572885525e-06 -1.945329900438e-03 --3.865396874365e-03 -5.757466180610e-03 -7.611590896222e-03 -9.418063490354e-03 --1.116746636260e-02 -1.285072065697e-02 -1.445913309993e-02 -1.598444062221e-02 --1.741885253668e-02 -1.875509005845e-02 -1.998642296793e-02 -2.110670323363e-02 --2.211039542813e-02 -2.299260378803e-02 -2.374909578719e-02 -2.437632211141e-02 --2.487143294193e-02 -2.523229047513e-02 -2.545747762597e-02 -2.554630288297e-02 --2.549880130290e-02 -2.531573165410e-02 -2.499856973722e-02 -2.454949793267e-02 --2.397139104361e-02 -2.326779852261e-02 -2.244292318909e-02 -2.150159656267e-02 --2.044925095499e-02 -1.929188847931e-02 -1.803604715275e-02 -1.668876428104e-02 --1.525753732897e-02 -1.375028249270e-02 -1.217529120126e-02 -1.054118478466e-02 --8.856867555159e-03 -7.131478555480e-03 -5.374342234077e-03 -3.594918312353e-03 --1.802751111959e-03 -7.418612344024e-06 1.781518490851e-03 3.554567456869e-03 -5.302353633065e-03 7.015669786734e-03 8.685524377140e-03 1.030318851581e-02 -1.186024137101e-02 1.334861378130e-02 1.476062985342e-02 1.608904633122e-02 -1.732708953465e-02 1.846848968165e-02 1.950751242013e-02 2.043898741241e-02 -2.125833383099e-02 2.196158264097e-02 2.254539556209e-02 2.300708062121e-02 -2.334460422435e-02 2.355659969619e-02 2.364237225367e-02 2.360190039936e-02 -2.343583373928e-02 2.314548724879e-02 2.273283202876e-02 2.220048261284e-02 -2.155168090449e-02 2.079027684038e-02 1.992070589320e-02 1.894796354391e-02 -1.787757686857e-02 1.671557340007e-02 1.546844743863e-02 1.414312399816e-02 -1.274692058738e-02 1.128750703527e-02 9.772863580432e-03 8.211237451988e-03 -6.611098177252e-03 4.981091857210e-03 3.329994655553e-03 1.666665750399e-03 --1.322155203283e-13 -1.661119426622e-03 -3.307868200098e-03 -4.931527517535e-03 --6.523530075100e-03 diff --git a/tests/09_DeePKS/100_NO_GO_deepks_UT/model.ptg b/tests/09_DeePKS/100_NO_GO_deepks_UT/model.ptg deleted file mode 100644 index 6cfb0f073c..0000000000 Binary files a/tests/09_DeePKS/100_NO_GO_deepks_UT/model.ptg and /dev/null differ diff --git a/tests/09_DeePKS/100_NO_GO_deepks_UT/o_delta_ref.dat b/tests/09_DeePKS/100_NO_GO_deepks_UT/o_delta_ref.dat deleted file mode 100644 index d57e4ca538..0000000000 --- a/tests/09_DeePKS/100_NO_GO_deepks_UT/o_delta_ref.dat +++ /dev/null @@ -1 +0,0 @@ --0.007602894356 diff --git a/tests/09_DeePKS/100_NO_GO_deepks_UT/orbpre_ref.dat b/tests/09_DeePKS/100_NO_GO_deepks_UT/orbpre_ref.dat deleted file mode 100644 index 02589b84a4..0000000000 --- a/tests/09_DeePKS/100_NO_GO_deepks_UT/orbpre_ref.dat +++ /dev/null @@ -1,5 +0,0 @@ -1.324860831 0.5600247713 0.08683995213 0.002391330993 0.0002024558499 0.001941592692 0.0009357014709 0.001285464024 0.0003747383084 0.0003981271759 3.380417477e-05 6.431403684e-05 2.556932909e-06 0.8695818932 0.916560116 0.9348722622 0.5671462004 0.5827725011 0.6038780645 0.2225610471 0.2375338231 0.2689329217 0.05107183751 0.0550662635 0.06725417066 0.0274640254 0.02763567155 0.03036736102 0.009236827855 0.009784456469 0.01047491505 0.007756248553 0.008939652399 0.009556260509 0.00269143549 0.002988436311 0.0030097818 0.002698641498 0.00275369074 0.002809538324 0.0004430358294 0.000473965429 0.0005461798262 0.0006207625589 0.0006252586984 0.0006801435171 4.150871189e-05 4.330816918e-05 4.667738734e-05 0.0001557875346 0.0001718841495 0.0001850356996 0 6.063545581e-07 0.04038715139 0.05269214728 0.06114420692 -3.469446952e-18 5.575625058e-07 0.04171422912 0.04594499957 0.04814794243 -4.33680869e-19 1.765877947e-07 0.0123284183 0.01390481134 0.01663859359 5.421010862e-20 3.615081622e-09 0.0001736888643 0.0005485798217 0.002063123394 4.235164736e-22 4.401821355e-10 1.690595317e-05 7.715571121e-05 0.0001213088347 6.776263578e-21 2.69057491e-09 0.0001582957773 0.0003014056198 0.0003098393785 0 2.002926017e-11 1.091401345e-06 9.842946442e-06 2.886364082e-05 5.29395592e-23 3.781819455e-11 2.738852614e-07 1.682185927e-06 3.057534856e-05 0 4.62979629e-11 4.595018067e-06 2.141227898e-05 2.536254421e-05 -3.97046694e-23 3.772623386e-12 2.778571396e-08 4.457119135e-07 3.033763681e-06 1.058791184e-22 5.051850135e-11 2.864461584e-06 4.258478683e-06 6.253775845e-06 -4.235164736e-22 3.715492028e-11 2.13443985e-06 6.156461998e-06 6.427224849e-06 -1.058791184e-22 2.171014683e-11 1.415717567e-06 1.797491267e-06 2.149757784e-06 -1.098605102 0.7495795634 0.3252209747 0.06672575817 0.005898566349 0.000519189802 0.0002552736779 0.0003234603839 0.0002335484133 0.0004497605392 0.0001012210655 8.786165673e-05 3.539866253e-05 0.5905397681 0.598461126 0.8795152914 0.1044141671 0.1114081517 0.1266379876 0.009515278265 0.009902643111 0.06160116406 4.612177997e-05 9.115920963e-05 0.05014362463 0.0002442240299 0.0002958040607 0.004301186338 0.0003868073526 0.0004226864861 0.0005105677415 1.449869113e-05 1.580735669e-05 0.001406025591 0.0001296467764 0.0001356599856 0.0001724887798 0.0001272755945 0.0001385483305 0.0004430266012 4.65141336e-05 5.300624993e-05 0.0001647060554 2.272102161e-05 5.384463551e-05 5.551241557e-05 4.849594913e-05 4.997326859e-05 0.0001351349529 3.923290381e-05 4.204567163e-05 6.184414284e-05 -7.319232026e-14 4.743830926e-08 0.3119131633 0.4891762159 0.5011445533 -4.518737814e-15 5.374932891e-08 0.08730883866 0.1769972762 0.186367201 -2.346416789e-16 1.693664909e-06 0.004676598456 0.03183582515 0.03379273604 -2.399366513e-15 1.919260555e-07 0.001195586854 0.001365496543 0.01930914966 -6.174192559e-17 6.483234972e-08 0.000982477601 0.001206386856 0.00839954464 -1.150164863e-18 4.504838611e-08 0.0001187273216 0.0001537274649 0.003235584061 -1.067984329e-16 9.335912398e-08 3.936269894e-06 3.957751825e-06 0.0001799379967 -4.815212899e-17 1.130748427e-10 6.236657691e-05 0.0002721719788 0.0002786798993 -3.978090237e-18 1.098368929e-09 6.058274681e-05 7.539783521e-05 0.0004622823936 -1.405227659e-18 1.508439812e-09 1.417642678e-05 2.631797473e-05 3.28595603e-05 -1.313995594e-17 1.638407401e-11 1.969568504e-05 5.901670367e-05 5.913736007e-05 -6.053532716e-18 2.70091173e-11 3.929750348e-05 4.006934305e-05 5.969216787e-05 -3.284158495e-18 2.297319956e-12 8.799274201e-06 3.001252069e-05 3.388745239e-05 -1.066059296 0.7453159715 0.2272757978 0.02268097303 0.00210041428 0.0006983231607 0.0009453295944 0.001533508085 0.0004715005968 0.0002363166266 7.650629389e-05 7.034243271e-05 3.474045631e-05 0.4707547845 0.4852871597 0.8459050647 0.0425861505 0.04975191971 0.1333461159 0.0009068345858 0.0009986348456 0.08651615735 0.0009734263907 0.001277773457 0.02389125178 9.440348353e-05 0.0001230076263 0.002068445798 0.0002898134263 0.000405323856 0.0009215389789 0.0001136309834 0.0001336591021 0.001354683766 5.971564529e-05 6.357551643e-05 0.0003786453155 4.784147073e-05 0.0001139331031 0.0001214582535 7.640800882e-05 9.309400337e-05 0.0002991784943 4.485703977e-05 5.470324742e-05 0.0001456595214 4.57071795e-05 5.133796737e-05 6.113873751e-05 4.230789719e-05 4.610390344e-05 0.0001052539477 -9.93649607e-15 1.635602839e-07 0.4166274084 0.5201712957 0.5458105194 -2.51534904e-17 8.251041194e-07 0.05825466592 0.1171892841 0.1341075864 -4.885414989e-16 2.717085945e-06 0.01015981041 0.01176405702 0.02713831111 -2.466221129e-17 1.345076142e-07 0.0002893168385 0.0005239157678 0.03049069728 -5.210607878e-17 1.410609052e-07 9.404937335e-05 0.0001948845312 0.001713559167 -7.369186641e-18 2.881045975e-10 9.810194935e-05 0.0004344160694 0.0006252264378 -4.385513084e-19 4.644683891e-10 4.306033514e-05 4.674548199e-05 0.001581342823 -7.468713012e-19 3.055740839e-09 6.97100551e-05 7.978386841e-05 0.0001000042475 -3.292417066e-18 5.219274745e-09 2.136057469e-05 0.0001516153737 0.0001798260934 -1.40882755e-18 6.24846001e-09 6.160379901e-05 8.814700702e-05 0.0002389709743 -7.277071808e-19 1.921027203e-11 2.698746144e-05 4.690575194e-05 5.34539035e-05 -1.030203822e-18 3.513446915e-10 3.104686508e-05 5.335830712e-05 5.651805483e-05 -8.766791004e-19 1.312018938e-09 4.196691081e-05 5.130099515e-05 6.00940637e-05 -1.072875794 0.7492115734 0.2520946 0.03085946079 0.002353586074 0.0004022672543 0.0005672046673 0.001282863354 0.000496264943 0.0003186440715 7.841854164e-05 5.784777788e-05 3.522718558e-05 0.495726934 0.513259289 0.8554494483 0.05270001399 0.06314503126 0.1284387793 0.002010572212 0.002245774641 0.08459686849 0.0006781104219 0.001043545509 0.0321046318 7.477142908e-05 0.0001198309287 0.0008740942697 0.000314370922 0.0004766160339 0.0006031258316 8.621238219e-05 0.0001035671389 0.001839325965 6.135074924e-05 6.792331266e-05 0.0002019288118 3.748894875e-05 0.0001227724732 0.0001358936561 6.614301922e-05 8.667688695e-05 0.0003637961651 4.325828215e-05 5.320922396e-05 9.256091574e-05 4.717813107e-05 5.26975738e-05 6.512425766e-05 4.036925952e-05 4.582077217e-05 0.0001115153413 -4.201500259e-14 2.318992809e-07 0.3946701482 0.5114627326 0.5430379672 -1.528291382e-15 1.321771425e-06 0.06358728311 0.1289176481 0.1518655472 -2.813721478e-15 5.329534275e-06 0.01423222587 0.01686477908 0.01947627673 -2.238731797e-15 1.789596519e-06 7.945394706e-05 0.0002056196701 0.03075041389 -7.189530953e-17 3.570102327e-08 0.000128020796 0.0003106019487 0.00349602538 -4.158931771e-17 5.72335645e-07 0.0001428120485 0.0004176966772 0.0006499234709 -1.355252716e-19 3.240749442e-10 1.447820741e-05 2.195383392e-05 0.001351212072 -1.066970346e-17 1.654236155e-09 9.240769839e-05 0.000111777506 0.0001497317319 -2.120419929e-17 1.747308723e-08 9.276902073e-05 0.0001425894753 0.0001793036357 -5.925418983e-18 4.431695181e-09 4.29546023e-05 7.150592423e-05 0.0001874481269 -4.414947479e-18 1.117382431e-09 1.218200499e-05 4.835160026e-05 5.541954064e-05 -4.95175461e-18 6.770259068e-10 4.529460622e-05 5.182849641e-05 5.54090552e-05 -4.588377475e-18 1.28291777e-09 3.529558353e-05 4.647622419e-05 5.018985314e-05 -1.076905759 0.7505672105 0.2654735826 0.03602771298 0.002602551235 0.0003282954594 0.0004230428263 0.001104631382 0.000484227278 0.0003667222204 7.970678348e-05 5.526037756e-05 3.597855097e-05 0.5093264096 0.5295797518 0.8603779172 0.05978648191 0.07011888455 0.1267264325 0.002799184517 0.00320095235 0.08227264164 0.0005340127392 0.0008612190756 0.03636668558 7.341019579e-05 0.0001326467689 0.0007106140273 0.0002726371094 0.0004284535045 0.000531731561 7.25178725e-05 8.169619072e-05 0.00199688686 6.526238644e-05 7.214393049e-05 0.0001522542184 5.168144081e-05 0.0001273129985 0.0001438518239 6.099455487e-05 8.211188965e-05 0.0003724476668 4.329148742e-05 5.2767521e-05 6.939157346e-05 4.797154716e-05 5.365169042e-05 7.187699257e-05 3.916720294e-05 4.558041043e-05 0.0001095943866 -5.331499131e-14 4.884262051e-07 0.381812448 0.5064834489 0.5400106478 -5.123505786e-15 9.055336293e-07 0.0673416006 0.1362313965 0.1599758942 -2.879207289e-15 6.863623229e-06 0.0154092469 0.01667488876 0.02016716968 -8.951606817e-15 2.61519226e-06 0.0001008043504 0.000122793475 0.02994082585 -2.154851818e-18 4.284069415e-09 0.0001755709327 0.0004102819955 0.004612884769 -3.99359094e-17 5.16398016e-07 0.0003206919486 0.0004590677531 0.0006049351942 -5.057633728e-18 1.603035762e-09 5.661183523e-06 1.284970954e-05 0.001120873834 -1.310084684e-17 2.826054946e-09 0.0001133291171 0.0001310638632 0.0001793411122 -2.142103972e-17 2.417480231e-08 0.0001201588268 0.0001716169249 0.0001768421225 -5.138948891e-18 3.09719065e-09 3.627318582e-05 6.258724207e-05 0.0001430005699 -5.606193441e-18 1.758833697e-09 8.498437259e-06 5.075844714e-05 5.56219579e-05 -5.638063055e-18 1.008359145e-09 5.013459407e-05 5.306528676e-05 5.506585846e-05 -4.653599012e-18 1.326652709e-09 3.17974234e-05 4.146664705e-05 4.554097626e-05 diff --git a/tests/09_DeePKS/100_NO_GO_deepks_UT/pdm_ref.dat b/tests/09_DeePKS/100_NO_GO_deepks_UT/pdm_ref.dat deleted file mode 100644 index 4065db5d5c..0000000000 --- a/tests/09_DeePKS/100_NO_GO_deepks_UT/pdm_ref.dat +++ /dev/null @@ -1,195 +0,0 @@ -1.324860831 -0.5600247713 -0.08683995213 -0.002391330993 -0.0002024558499 -0.001941592692 -0.0009357014709 -0.001285464024 -0.0003747383084 -0.0003981271759 -3.380417477e-05 -6.431403684e-05 -2.556932909e-06 -0.8701976527 0.005609094391 -0.002127181627 0.005609094391 0.9337540201 0.003532251603 -0.002127181627 0.003532251603 0.9170625986 -0.6030539411 -0.0044809685 0.002095243709 -0.0044809685 0.5679252914 -0.002110611483 0.002095243709 -0.002110611483 0.5828175335 -0.2683326068 -0.004415267727 0.002095960779 -0.004415267727 0.2233240565 -0.002429312865 0.002095960779 -0.002429312865 0.2373711287 -0.06713263437 -0.001171610801 0.0006043376583 -0.001171610801 0.05128859824 -0.0007574957636 0.0006043376583 -0.0007574957636 0.05497103906 -0.03036652489 4.053388325e-05 2.745475799e-05 4.053388325e-05 0.02759504213 -7.293323671e-05 2.745475799e-05 -7.293323671e-05 0.02750549095 -0.009289374562 0.0001989400706 -8.70329705e-05 0.0001989400706 0.01043386976 8.760815653e-05 -8.70329705e-05 8.760815653e-05 0.009772955057 -0.007780146451 0.0001676134087 -8.796935385e-05 0.0001676134087 0.00952645831 0.0001003853046 -8.796935385e-05 0.0001003853046 0.0089455567 -0.002691795272 -2.195192621e-06 -1.022521325e-05 -2.195192621e-06 0.003006014969 8.057490116e-06 -1.022521325e-05 8.057490116e-06 0.002991843361 -0.002713431332 -2.491290288e-05 5.027066783e-06 -2.491290288e-05 0.002740607026 -8.192125131e-06 5.027066783e-06 -8.192125131e-06 0.002807832203 -0.0005449455659 -9.398482779e-06 4.544923076e-06 -9.398482779e-06 0.0004450119571 -6.186677051e-06 4.544923076e-06 -6.186677051e-06 0.0004732235615 -0.0006800817701 1.448875764e-06 1.233361039e-06 1.448875764e-06 0.0006243431276 -1.806680696e-06 1.233361039e-06 -1.806680696e-06 0.0006217398767 -4.655687679e-05 6.080461015e-07 -2.179167721e-07 6.080461015e-07 4.340756859e-05 1.199281535e-07 -2.179167721e-07 1.199281535e-07 4.152982303e-05 -0.0001565739579 3.827253496e-06 -1.784292154e-06 3.827253496e-06 0.0001842258783 2.200041232e-06 -1.784292154e-06 2.200041232e-06 0.0001719075475 -0.04082953624 -0.0006691033691 0.0006640405922 -0.002754871734 -0.0007859772931 -0.0006691033691 0.01838866705 0.0003234641925 0.02786343147 -0.0005177562226 0.0006640405922 0.0003234641925 0.01881777327 0.0005449416618 -0.02525371626 -0.002754871734 0.02786343147 0.0005449416618 0.04229624581 -0.0008632384939 -0.0007859772931 -0.0005177562226 -0.02525371626 -0.0008632384939 0.03389188958 -0.04174940727 0.0006382564002 0.0002922527555 -0.0008601954183 -0.0002680954554 0.0006382564002 0.01461726097 2.463892206e-05 0.02210481685 -0.0001003063709 0.0002922527555 2.463892206e-05 0.01640014516 9.414480598e-05 -0.02200691119 -0.0008601954183 0.02210481685 9.414480598e-05 0.03350936224 -0.0002343069653 -0.0002680954554 -0.0001003063709 -0.02200691119 -0.0002343069653 0.02953155304 -0.01645281588 0.0007881647945 -6.28821895e-05 0.0004497912047 0.0001427063832 0.0007881647945 0.003827348478 -0.0001131693807 0.005763301783 0.0001345220269 -6.28821895e-05 -0.0001131693807 0.004956688206 -0.0001493355463 -0.00665021018 0.0004497912047 0.005763301783 -0.0001493355463 0.008712366127 0.0001712546827 0.0001427063832 0.0001345220269 -0.00665021018 0.0001712546827 0.008922781126 -0.002025339402 0.0001759678168 -4.547037104e-05 0.0001678442401 7.141049595e-05 0.0001759678168 7.181694988e-05 -2.660080371e-05 0.0001009217039 3.589327208e-05 -4.547037104e-05 -2.660080371e-05 0.0001938358296 -3.784716338e-05 -0.000259925353 0.0001678442401 0.0001009217039 -3.784716338e-05 0.0001457904557 5.056667927e-05 7.141049595e-05 3.589327208e-05 -0.000259925353 5.056667927e-05 0.0003486130575 -0.0001207131226 5.682655545e-07 -9.209685267e-07 -5.447717272e-06 2.130633803e-06 5.682655545e-07 2.32898446e-05 3.009755808e-06 3.501322066e-05 -4.023150241e-06 -9.209685267e-07 3.009755808e-06 6.523194143e-06 4.67936204e-06 -8.798802628e-06 -5.447717272e-06 3.501322066e-05 4.67936204e-06 5.296964207e-05 -6.303662703e-06 2.130633803e-06 -4.023150241e-06 -8.798802628e-06 -6.303662703e-06 1.187513587e-05 -0.0001582902374 4.014276469e-06 1.755939232e-06 -3.719729419e-07 -2.139115248e-06 4.014276469e-06 9.178069339e-05 3.423257508e-07 0.0001388612213 -9.159965939e-07 1.755939232e-06 3.423257508e-07 0.0001103666222 9.135023615e-07 -0.0001481012535 -3.719729419e-07 0.0001388612213 9.135023615e-07 0.000210364008 -1.929878456e-06 -2.139115248e-06 -9.159965939e-07 -0.0001481012535 -1.929878456e-06 0.0001987419053 -2.743575416e-05 3.468007303e-06 -1.329634824e-06 3.920857131e-06 1.91553066e-06 3.468007303e-06 8.503836337e-07 -6.738596307e-07 1.13158698e-06 9.114863408e-07 -1.329634824e-06 -6.738596307e-07 3.564236338e-06 -9.583922323e-07 -4.777842475e-06 3.920857131e-06 1.13158698e-06 -9.583922323e-07 1.542110529e-06 1.290351229e-06 1.91553066e-06 9.114863408e-07 -4.777842475e-06 1.290351229e-06 6.405523976e-06 -3.025573106e-05 2.160916417e-06 -6.782021154e-07 1.747099997e-06 1.094573813e-06 2.160916417e-06 2.825814412e-07 -1.898500789e-07 3.192778962e-07 2.668564213e-07 -6.782021154e-07 -1.898500789e-07 5.696174044e-07 -2.571431938e-07 -7.646145549e-07 1.747099997e-06 3.192778962e-07 -2.571431938e-07 3.959849552e-07 3.540030568e-07 1.094573813e-06 2.668564213e-07 -7.646145549e-07 3.540030568e-07 1.027542711e-06 -4.713305815e-06 -6.649723304e-07 3.988067846e-07 -1.156978281e-06 -5.460317295e-07 -6.649723304e-07 7.561997354e-06 3.284528065e-07 1.147716272e-05 -4.768544559e-07 3.988067846e-07 3.284528065e-07 7.734359918e-06 5.17792396e-07 -1.038187904e-05 -1.156978281e-06 1.147716272e-05 5.17792396e-07 1.742431925e-05 -7.492374403e-07 -5.460317295e-07 -4.768544559e-07 -1.038187904e-05 -7.492374403e-07 1.393590521e-05 -2.898177794e-07 -4.184288337e-07 3.710890286e-08 -6.413536454e-07 -4.939857292e-08 -4.184288337e-07 8.380225593e-07 8.738907976e-08 1.280937395e-06 -1.190566861e-07 3.710890286e-08 8.738907976e-08 1.497479484e-07 1.321963149e-07 -2.017004003e-07 -6.413536454e-07 1.280937395e-06 1.321963149e-07 1.957994231e-06 -1.801237131e-07 -4.939857292e-08 -1.190566861e-07 -2.017004003e-07 -1.801237131e-07 2.716825638e-07 -6.084415654e-06 4.787941328e-07 -1.224416094e-07 4.437241361e-07 1.880180678e-07 4.787941328e-07 9.368443997e-07 -1.042432064e-07 1.399179999e-06 1.358350714e-07 -1.224416094e-07 -1.042432064e-07 1.519386323e-06 -1.475955626e-07 -2.037959131e-06 4.437241361e-07 1.399179999e-06 -1.475955626e-07 2.102431746e-06 1.907497737e-07 1.880180678e-07 1.358350714e-07 -2.037959131e-06 1.907497737e-07 2.733688508e-06 -2.137555909e-06 -1.474523529e-09 6.359206337e-08 -8.228119995e-08 -8.571862877e-08 -1.474523529e-09 1.917304922e-06 3.623806092e-08 2.904366839e-06 -5.826451071e-08 6.359206337e-08 3.623806092e-08 2.235054188e-06 6.210852557e-08 -2.999519276e-06 -8.228119995e-08 2.904366839e-06 6.210852557e-08 4.402717542e-06 -9.797547391e-08 -8.571862877e-08 -5.826451071e-08 -2.999519276e-06 -9.797547391e-08 4.025531291e-06 -2.049845406e-06 -4.552720378e-08 2.298682404e-08 -1.613265797e-07 -2.296345571e-08 -4.552720378e-08 5.72284479e-07 9.165114501e-09 8.676122931e-07 -1.465656249e-08 2.298682404e-08 9.165114501e-09 5.074221893e-07 1.512646232e-08 -6.809459882e-07 -1.613265797e-07 8.676122931e-07 1.512646232e-08 1.319572949e-06 -2.424868624e-08 -2.296345571e-08 -1.465656249e-08 -6.809459882e-07 -2.424868624e-08 9.138633058e-07 -1.098605102 -0.7495795634 -0.3252209747 -0.06672575817 -0.005898566349 -0.000519189802 -0.0002552736779 -0.0003234603839 -0.0002335484133 -0.0004497605392 -0.0001012210655 -8.786165673e-05 -3.539866253e-05 -0.8790379758 0.01146239114 -0.001773284461 0.01146239114 0.5983887171 0.001925496124 -0.001773284461 0.001925496124 0.5910894927 -0.1255118493 -0.004432744004 0.001570698651 -0.004432744004 0.1053799048 -0.0008219856725 0.001570698651 -0.0008219856725 0.1115685524 -0.06158496902 0.0008913769551 0.0002207189229 0.0008913769551 0.009550267071 -8.138739772e-05 0.0002207189229 -8.138739772e-05 0.009883849354 -0.05013199361 0.0007311325526 0.0002190423567 0.0007311325526 5.741756774e-05 -2.062865081e-06 0.0002190423567 -2.062865081e-06 9.149444492e-05 -0.004299472559 8.210514398e-05 1.097046641e-05 8.210514398e-05 0.0002958197207 9.349593439e-06 1.097046641e-05 9.349593439e-06 0.0002459221495 -0.0004268039784 4.909660569e-05 -1.403264053e-05 4.909660569e-05 0.0004817851957 8.952013385e-06 -1.403264053e-05 8.952013385e-06 0.0004114724061 -0.001405574025 2.43612894e-05 5.889844424e-06 2.43612894e-05 1.500373769e-05 -2.074557324e-07 5.889844424e-06 -2.074557324e-07 1.575387644e-05 -0.0001722999753 -2.547459924e-06 1.137360186e-06 -2.547459924e-06 0.0001298197129 -4.210738673e-07 1.137360186e-06 -4.210738673e-07 0.0001356758537 -0.000442086219 1.663638735e-05 -3.186774537e-06 1.663638735e-05 0.0001390105432 2.031753626e-06 -3.186774537e-06 2.031753626e-06 0.000127753764 -0.0001639297539 9.150408745e-06 -1.721228933e-06 9.150408745e-06 5.357242397e-05 9.49002891e-07 -1.721228933e-06 9.49002891e-07 4.672426099e-05 -2.27294679e-05 4.695540511e-07 -2.287860922e-07 4.695540511e-07 5.548825871e-05 1.728941869e-07 -2.287860922e-07 1.728941869e-07 5.386034607e-05 -0.0001350260631 3.035797169e-06 -2.404406262e-07 3.035797169e-06 5.001988125e-05 2.870744927e-07 -2.404406262e-07 2.870744927e-07 4.855822627e-05 -6.138386731e-05 2.905736243e-06 -8.678507812e-07 2.905736243e-06 4.232043561e-05 5.265008324e-07 -8.678507812e-07 5.265008324e-07 3.941841536e-05 -0.3120738061 -0.005174589817 -0.0002764858079 -0.00295675098 0.0008748703082 -0.005174589817 0.4766103222 0.002155810459 0.1068962963 -1.932697114e-05 -0.0002764858079 0.002155810459 0.4757505432 0.0001332287351 -0.08105920823 -0.00295675098 0.1068962963 0.0001332287351 0.02398579965 5.058557007e-05 0.0008748703082 -1.932697114e-05 -0.08105920823 5.058557007e-05 0.01381350892 -0.08793025323 -0.007263745652 0.001122462017 -0.001758126188 -0.0001332892631 -0.007263745652 0.1736909343 -0.001106894289 0.02235404578 0.0005782716342 0.001122462017 -0.001106894289 0.1846496954 -0.0006759584041 -0.01672515822 -0.001758126188 0.02235404578 -0.0006759584041 0.002886237848 0.0001228615576 -0.0001332892631 0.0005782716342 -0.01672515822 0.0001228615576 0.001516248803 -0.004750376178 -0.001416451944 5.111221507e-05 3.122402723e-06 -1.672735937e-05 -0.001416451944 0.03180436749 -0.000336140211 -0.0006455582056 0.0001559911841 5.111221507e-05 -0.000336140211 0.03367104914 -0.0001742875953 0.001470345427 3.122402723e-06 -0.0006455582056 -0.0001742875953 1.575233322e-05 -1.053074062e-05 -1.672735937e-05 0.0001559911841 0.001470345427 -1.053074062e-05 6.530817292e-05 -0.01929214432 0.0005398414528 0.0001138302013 -4.850284797e-05 -1.075723521e-05 0.0005398414528 0.001190141358 1.664205247e-05 -0.0004734484248 8.119731401e-06 0.0001138302013 1.664205247e-05 0.0009701256729 -7.349591736e-06 0.0004700659844 -4.850284797e-05 -0.0004734484248 -7.349591736e-06 0.0001900152629 -4.131631105e-06 -1.075723521e-05 8.119731401e-06 0.0004700659844 -4.131631105e-06 0.0002279983686 -0.008394420538 0.0001790590956 6.05954106e-05 -4.277094606e-05 -1.183202487e-05 0.0001790590956 0.001162814047 3.298015852e-05 0.0002223221047 -6.302299668e-06 6.05954106e-05 3.298015852e-05 0.0009736676416 7.664947422e-06 -0.0001179121293 -4.277094606e-05 0.0002223221047 7.664947422e-06 4.327544395e-05 -1.307105879e-06 -1.183202487e-05 -6.302299668e-06 -0.0001179121293 -1.307105879e-06 1.429625862e-05 -0.00322899503 0.0001416309251 5.28277206e-06 1.325922748e-05 2.563646753e-06 0.0001416309251 0.0001597716111 4.045801353e-06 3.697245045e-06 -1.738831644e-08 5.28277206e-06 4.045801353e-06 0.0001185587318 4.000773935e-07 8.381203635e-06 1.325922748e-05 3.697245045e-06 4.000773935e-07 1.606529565e-07 4.017175683e-08 2.563646753e-06 -1.738831644e-08 8.381203635e-06 4.017175683e-08 5.978701379e-07 -0.0001798353106 2.7916233e-06 2.25836359e-06 -2.190188175e-06 -7.17146024e-07 2.7916233e-06 9.577763757e-07 1.209804215e-07 -1.601061958e-06 2.108793237e-07 2.25836359e-06 1.209804215e-07 5.470092205e-08 -2.561608366e-07 8.051319584e-09 -2.190188175e-06 -1.601061958e-06 -2.561608366e-07 3.133526075e-06 1.2234598e-07 -7.17146024e-07 2.108793237e-07 8.051319584e-09 1.2234598e-07 3.944063543e-06 -6.288983557e-05 -1.01548447e-05 4.932460701e-07 -2.559932675e-06 -1.570014878e-07 -1.01548447e-05 0.0002590103119 2.506078061e-07 5.721825886e-05 2.100676798e-07 4.932460701e-07 2.506078061e-07 0.000270715718 -2.443922396e-07 -4.642143988e-05 -2.559932675e-06 5.721825886e-05 -2.443922396e-07 1.264211501e-05 9.807007099e-08 -1.570014878e-07 2.100676798e-07 -4.642143988e-05 9.807007099e-08 7.9605876e-06 -0.0004608944636 2.288587925e-05 -1.117380542e-06 3.330250829e-06 1.347688843e-06 2.288587925e-05 7.034720289e-05 2.018174537e-06 2.062781067e-05 -4.992624985e-07 -1.117380542e-06 2.018174537e-06 5.80134666e-05 6.966515238e-07 -1.303982333e-05 3.330250829e-06 2.062781067e-05 6.966515238e-07 6.074917185e-06 -1.777436346e-07 1.347688843e-06 -4.992624985e-07 -1.303982333e-05 -1.777436346e-07 2.934023697e-06 -1.422234189e-05 8.008637616e-07 -3.238560709e-07 1.425785444e-07 1.096387275e-07 8.008637616e-07 3.017158568e-05 6.682182621e-07 8.813401121e-06 -1.716532085e-07 -3.238560709e-07 6.682182621e-07 2.515641359e-05 2.224602022e-07 -5.558715261e-06 1.425785444e-07 8.813401121e-06 2.224602022e-07 2.576445152e-06 -5.58076185e-08 1.096387275e-07 -1.716532085e-07 -5.558715261e-06 -5.58076185e-08 1.228683945e-06 -1.978600828e-05 -1.806792249e-06 1.653670012e-07 -5.670315638e-07 1.67279459e-08 -1.806792249e-06 5.592914538e-05 2.226963229e-09 1.29644519e-05 5.78933338e-08 1.653670012e-07 2.226963229e-09 5.728228833e-05 -6.544616104e-08 -1.028248652e-05 -5.670315638e-07 1.29644519e-05 -6.544616104e-08 3.006364899e-06 2.490126691e-08 1.67279459e-08 5.78933338e-08 -1.028248652e-05 2.490126691e-08 1.845958267e-06 -5.967291663e-05 6.385836033e-07 1.594478802e-07 -3.451196265e-07 1.121979895e-07 6.385836033e-07 3.696276638e-05 2.155981651e-07 1.061837384e-05 -3.837673617e-08 1.594478802e-07 2.155981651e-07 3.739350371e-05 5.074322418e-08 -8.592431348e-06 -3.451196265e-07 1.061837384e-05 5.074322418e-08 3.055054105e-06 -9.758263664e-09 1.121979895e-07 -3.837673617e-08 -8.592431348e-06 -9.758263664e-09 1.974800579e-06 -8.805166708e-06 1.381642814e-07 -3.181187649e-07 3.622906697e-08 1.181397702e-07 1.381642814e-07 3.153216446e-05 4.878348828e-07 8.485214167e-06 -1.109934826e-07 -3.181187649e-07 4.878348828e-07 2.88635623e-05 1.46827613e-07 -5.921139465e-06 3.622906697e-08 8.485214167e-06 1.46827613e-07 2.283356427e-06 -3.306192014e-08 1.181397702e-07 -1.109934826e-07 -5.921139465e-06 -3.306192014e-08 1.214999689e-06 -1.066059296 -0.7453159715 -0.2272757978 -0.02268097303 -0.00210041428 -0.0006983231607 -0.0009453295944 -0.001533508085 -0.0004715005968 -0.0002363166266 -7.650629389e-05 -7.034243271e-05 -3.474045631e-05 -0.5017106499 0.1031553107 -0.0003199601392 0.1031553107 0.8149832967 0.001572798836 -0.0003199601392 0.001572798836 0.4852530623 -0.06193132663 0.02958905732 0.0003455714645 0.02958905732 0.1210752982 -0.00115446966 0.0003455714645 -0.00115446966 0.04267756127 -0.009161065395 0.02512886108 -1.288398096e-05 0.02512886108 0.07835302372 -1.382069255e-05 -1.288398096e-05 -1.382069255e-05 0.0009075376598 -0.003778284137 0.00709618779 -1.568333482e-07 0.00709618779 0.0213872172 -9.35160863e-05 -1.568333482e-07 -9.35160863e-05 0.0009769502846 -0.0002587025415 0.0005452880074 2.721600781e-07 0.0005452880074 0.00190414638 8.175310585e-07 2.721600781e-07 8.175310585e-07 0.0001230079862 -0.0003238627351 0.0001409950875 -6.387875955e-06 0.0001409950875 0.0008879793131 1.391813368e-05 -6.387875955e-06 1.391813368e-05 0.000404834213 -0.0002193451994 0.0003456527415 -5.969284738e-07 0.0003456527415 0.00124939332 8.511030836e-06 -5.969284738e-07 8.511030836e-06 0.0001332353321 -9.786393454e-05 9.812608354e-05 5.259032204e-08 9.812608354e-05 0.0003443525504 -2.359188564e-07 5.259032204e-08 -2.359188564e-07 5.971999226e-05 -0.0001048956611 -2.270746064e-05 -2.518999591e-08 -2.270746064e-05 5.687933787e-05 -1.482848907e-07 -2.518999591e-08 -1.482848907e-07 0.0001214578283 -8.919499693e-05 5.169055192e-05 -3.440709446e-07 5.169055192e-05 0.0002864183361 2.799654141e-06 -3.440709446e-07 2.799654141e-06 9.306717344e-05 -4.975913754e-05 2.150576282e-05 -2.921447272e-07 2.150576282e-05 0.0001407643515 2.633182399e-06 -2.921447272e-07 2.633182399e-06 5.469631949e-05 -4.575441856e-05 7.34258149e-07 -2.028291083e-07 7.34258149e-07 6.096168388e-05 1.181424888e-06 -2.028291083e-07 1.181424888e-06 5.146778195e-05 -4.661735306e-05 1.58747815e-05 -7.830885724e-08 1.58747815e-05 0.0001009521871 5.049012105e-07 -7.830885724e-08 5.049012105e-07 4.609620819e-05 -0.2552363283 0.1653921921 0.0002218234907 -0.1880249116 -0.001992947638 0.1653921921 0.4051274787 0.0002992577391 0.08097362147 -0.0007154403749 0.0002218234907 0.0002992577391 0.01388962003 -0.0002742466705 0.08594013859 -0.1880249116 0.08097362147 -0.0002742466705 0.2765681336 0.0005194501762 -0.001992947638 -0.0007154403749 0.08594013859 0.0005194501762 0.5317878264 -0.04644169237 0.04848098675 0.0002446501373 -0.0308142343 0.001488533112 0.04848098675 0.1041897238 3.147557575e-05 0.001541808169 0.0004739628388 0.0002446501373 3.147557575e-05 0.00740932909 -0.0002197244908 0.02852874985 -0.0308142343 0.001541808169 -0.0002197244908 0.04165627415 -0.001347513251 0.001488533112 0.0004739628388 0.02852874985 -0.001347513251 0.1098553421 -0.005914383768 -0.0005808435175 1.793280475e-05 -0.009310794097 6.084969057e-05 -0.0005808435175 0.01529085228 -1.307627597e-05 0.007706884075 6.36497884e-05 1.793280475e-05 -1.307627597e-05 0.001668520735 -8.498414189e-06 0.003764650788 -0.009310794097 0.007706884075 -8.498414189e-06 0.0176961175 -1.037671064e-05 6.084969057e-05 6.36497884e-05 0.003764650788 -1.037671064e-05 0.008495021349 -0.003941530192 -0.005235019695 6.324073517e-07 -0.008229986068 5.597011513e-05 -0.005235019695 0.008509145438 -8.028061341e-07 0.01239400254 -3.559454342e-05 6.324073517e-07 -8.028061341e-07 5.735380979e-06 -8.250149701e-07 -4.043354852e-05 -0.008229986068 0.01239400254 -8.250149701e-07 0.01856050411 -8.34309547e-05 5.597011513e-05 -3.559454342e-05 -4.043354852e-05 -8.34309547e-05 0.0002871492699 -0.0002862594324 -0.0002710811798 1.474288174e-06 -0.000470424383 -5.854694714e-06 -0.0002710811798 0.0004749556419 2.646841282e-07 0.0006898541748 -4.055752445e-06 1.474288174e-06 2.646841282e-07 8.47038276e-06 -5.79371808e-07 -3.967537256e-05 -0.000470424383 0.0006898541748 -5.79371808e-07 0.001047059729 -9.477086191e-07 -5.854694714e-06 -4.055752445e-06 -3.967537256e-05 -9.477086191e-07 0.0001858889464 -0.0001549649527 0.0001724090115 -2.842428874e-06 -0.0001093990876 -1.793683725e-05 0.0001724090115 0.0002656066397 -1.195385562e-07 -6.918876476e-05 -1.105664823e-05 -2.842428874e-06 -1.195385562e-07 3.017325854e-05 2.368397177e-06 0.0001336285146 -0.0001093990876 -6.918876476e-05 2.368397177e-06 0.0001147294097 1.100111281e-05 -1.793683725e-05 -1.105664823e-05 0.0001336285146 1.100111281e-05 0.000592270484 -0.0002168588754 -0.000265453977 5.64012762e-08 -0.000443732877 -1.337851152e-06 -0.000265453977 0.000442676053 -9.478388692e-08 0.0006274689405 3.673336187e-07 5.64012762e-08 -9.478388692e-08 9.602119495e-07 -1.664800242e-07 6.373629407e-06 -0.000443732877 0.0006274689405 -1.664800242e-07 0.0009683219575 1.609782954e-06 -1.337851152e-06 3.673336187e-07 6.373629407e-06 1.609782954e-06 4.23320063e-05 -4.652247235e-05 2.484547569e-05 1.695162455e-07 -3.02675705e-05 1.421110535e-06 2.484547569e-05 7.528680407e-05 1.133224876e-07 3.231037971e-05 4.823795075e-07 1.695162455e-07 1.133224876e-07 4.418982674e-07 -1.013270461e-07 5.547455891e-06 -3.02675705e-05 3.231037971e-05 -1.013270461e-07 5.758984288e-05 -1.246732791e-06 1.421110535e-06 4.823795075e-07 5.547455891e-06 -1.246732791e-06 6.966020916e-05 -6.615784846e-05 6.654582275e-05 1.287488042e-08 -3.009069358e-05 -1.42120136e-06 6.654582275e-05 8.540190634e-05 1.015939853e-07 -1.826508824e-05 -6.436095865e-07 1.287488042e-08 1.015939853e-07 3.41195529e-06 -3.123872158e-08 2.452579417e-05 -3.009069358e-05 -1.826508824e-05 -3.123872158e-08 2.150292796e-05 5.576615787e-07 -1.42120136e-06 -6.436095865e-07 2.452579417e-05 5.576615787e-07 0.000176332623 -6.435742872e-05 -1.513560455e-05 -5.322111988e-08 -8.372704509e-05 -2.748676993e-06 -1.513560455e-05 8.566089739e-05 6.757125265e-09 7.821447635e-05 -1.397832915e-07 -5.322111988e-08 6.757125265e-09 1.093508856e-06 3.980402662e-09 9.745964265e-06 -8.372704509e-05 7.821447635e-05 3.980402662e-09 0.0001506639426 2.462457008e-06 -2.748676993e-06 -1.397832915e-07 9.745964265e-06 2.462457008e-06 8.695225125e-05 -2.382044658e-05 1.70127945e-05 -2.372481863e-08 -1.471763175e-05 -1.079782801e-06 1.70127945e-05 3.163137193e-05 3.638598148e-08 3.136072913e-06 -2.655349373e-07 -2.372481863e-08 3.638598148e-08 8.035877025e-07 2.008581534e-08 6.489221924e-06 -1.471763175e-05 3.136072913e-06 2.008581534e-08 1.865575948e-05 7.635039288e-07 -1.079782801e-06 -2.655349373e-07 6.489221924e-06 7.635039288e-07 5.243597039e-05 -2.551098935e-05 1.943360805e-05 5.198348678e-09 -1.567053154e-05 -5.554781893e-07 1.943360805e-05 3.808089509e-05 3.887870537e-08 4.268637265e-06 -1.632093736e-07 5.198348678e-09 3.887870537e-08 1.101751813e-06 -6.9869855e-09 7.805948913e-06 -1.567053154e-05 4.268637265e-06 -6.9869855e-09 2.091068736e-05 3.227735456e-07 -5.554781893e-07 -1.632093736e-07 7.805948913e-06 3.227735456e-07 5.531925477e-05 -2.711009423e-05 9.061388967e-06 3.822570617e-09 -2.420983286e-05 -7.176271173e-07 9.061388967e-06 3.650081574e-05 2.564685441e-08 1.562199442e-05 -1.444734954e-07 3.822570617e-09 2.564685441e-08 7.46629687e-07 -1.249529354e-08 6.14402617e-06 -2.420983286e-05 1.562199442e-05 -1.249529354e-08 3.842506949e-05 4.904677103e-07 -7.176271173e-07 -1.444734954e-07 6.14402617e-06 4.904677103e-07 5.058067255e-05 -1.072875794 -0.7492115734 -0.2520946 -0.03085946079 -0.002353586074 -0.0004022672543 -0.0005672046673 -0.001282863354 -0.000496264943 -0.0003186440715 -7.841854164e-05 -5.784777788e-05 -3.522718558e-05 -0.5313748497 -0.05075507813 -0.09351773474 -0.05075507813 0.5918972624 0.1347325842 -0.09351773474 0.1347325842 0.7411635593 -0.077312295 -0.01381486159 -0.02353146173 -0.01381486159 0.06485247804 0.02408952828 -0.02353146173 0.02408952828 0.1021190515 -0.01168001622 -0.01276839697 -0.02291092486 -0.01276839697 0.0193702725 0.03112091437 -0.02291092486 0.03112091437 0.05780292663 -0.005088742076 -0.005082344744 -0.009148787559 -0.005082344744 0.007005976952 0.01153158777 -0.009148787559 0.01153158777 0.02173156871 -0.0001347999646 -0.0001032506916 -0.0001834714095 -0.0001032506916 0.0002924139487 0.0003001408528 -0.0001834714095 0.0003001408528 0.0006414827143 -0.0003175761422 2.888393726e-06 -2.428831208e-05 2.888393726e-06 0.0005461665762 6.368364788e-05 -2.428831208e-05 6.368364788e-05 0.0005303700691 -0.0002791614379 -0.0002666024275 -0.000475871056 -0.0002666024275 0.0004860420648 0.0006688057564 -0.000475871056 0.0006688057564 0.001263901984 -8.986294129e-05 -2.40982642e-05 -4.33455723e-05 -2.40982642e-05 8.887935037e-05 5.007239609e-05 -4.33455723e-05 5.007239609e-05 0.000152460582 -0.0001059527658 1.688512626e-05 2.949226523e-05 1.688512626e-05 0.0001173764032 -3.412450143e-05 2.949226523e-05 -3.412450143e-05 7.282590913e-05 -8.849054128e-05 -3.777791203e-05 -6.810160662e-05 -3.777791203e-05 0.0001542372668 0.0001128515429 -6.810160662e-05 0.0001128515429 0.0002738882632 -4.490565133e-05 -3.463127118e-06 -7.334286816e-06 -3.463127118e-06 6.759540944e-05 1.865957788e-05 -7.334286816e-06 1.865957788e-05 7.652736109e-05 -4.74455639e-05 -4.887737558e-07 -1.718186495e-06 -4.887737558e-07 5.843688319e-05 6.195387793e-06 -1.718186495e-06 6.195387793e-06 5.911751543e-05 -4.580864529e-05 -9.039183093e-06 -1.647377652e-05 -9.039183093e-06 6.151739419e-05 2.652792525e-05 -1.647377652e-05 2.652792525e-05 9.037933351e-05 -0.2711916722 -0.07879208524 -0.1476290366 0.08790057722 -0.1596970253 -0.07879208524 0.1013272959 0.1521706098 -0.05162878114 -0.07698422436 -0.1476290366 0.1521706098 0.2943217914 0.07639935295 -0.03588113893 0.08790057722 -0.05162878114 0.07639935295 0.4551557018 0.1170309821 -0.1596970253 -0.07698422436 -0.03588113893 0.1170309821 0.3271746186 -0.05868455267 -0.02827120976 -0.05032977412 0.02103845094 -0.02817844779 -0.02827120976 0.03354094778 0.0429523607 -0.02557520186 -0.01621720935 -0.05032977412 0.0429523607 0.0876609777 0.01469773238 0.006605100029 0.02103845094 -0.02557520186 0.01469773238 0.1023746265 0.03125186577 -0.02817844779 -0.01621720935 0.006605100029 0.03125186577 0.06211069555 -0.006504909253 -0.001704147882 -0.002824237906 0.004244810247 -0.006394526282 -0.001704147882 0.005923129176 0.0060809013 -0.003120037328 -0.00409310426 -0.002824237906 0.0060809013 0.01343578493 0.003944838723 -0.001504321294 0.004244810247 -0.003120037328 0.003944838723 0.01208716265 -0.000578907677 -0.006394526282 -0.00409310426 -0.001504321294 -0.000578907677 0.01262762522 -0.003209410875 0.002632204464 0.004702607345 0.003934758634 -0.006206384111 0.002632204464 0.002352895827 0.004141927108 0.003463678911 -0.005450412741 0.004702607345 0.004141927108 0.007495664719 0.006136982883 -0.009811095655 0.003934758634 0.003463678911 0.006136982883 0.005115535647 -0.008072210748 -0.006206384111 -0.005450412741 -0.009811095655 -0.008072210748 0.01286377003 -0.0004349039261 0.0002717464953 0.000486737528 0.0004227894796 -0.000727325012 0.0002717464953 0.0002747714227 0.0004891427851 0.0004092608518 -0.0006094533248 0.000486737528 0.0004891427851 0.0008791043864 0.0006896995459 -0.00111650873 0.0004227894796 0.0004092608518 0.0006896995459 0.0007968144275 -0.0007826376294 -0.000727325012 -0.0006094533248 -0.00111650873 -0.0007826376294 0.001549089663 -0.0001800577297 -6.496648164e-05 -0.0001343500779 3.65411611e-05 -0.0001480902912 -6.496648164e-05 8.808286046e-05 8.242070971e-05 -0.0001226479685 -5.034551496e-05 -0.0001343500779 8.242070971e-05 0.0001898453336 5.0241923e-05 8.948306814e-05 3.65411611e-05 -0.0001226479685 5.0241923e-05 0.0004485051978 0.0002077063441 -0.0001480902912 -5.034551496e-05 8.948306814e-05 0.0002077063441 0.0003045134107 -0.0001490905957 0.000112625737 0.000201685163 0.0001719510204 -0.0002824756086 0.000112625737 0.0001031110668 0.0001851396623 0.0001466100826 -0.0002399663792 0.000201685163 0.0001851396623 0.0003325397162 0.0002641148254 -0.0004299199947 0.0001719510204 0.0001466100826 0.0002641148254 0.000225838107 -0.0003447377847 -0.0002824756086 -0.0002399663792 -0.0004299199947 -0.0003447377847 0.0005770649515 -6.806806293e-05 -1.367203878e-05 -2.557229669e-05 2.68645586e-05 -3.871202309e-05 -1.367203878e-05 2.515395218e-05 4.327330903e-05 3.862324427e-06 -2.674215952e-05 -2.557229669e-05 4.327330903e-05 8.009028722e-05 2.681685758e-05 -3.646314838e-05 2.68645586e-05 3.862324427e-06 2.681685758e-05 9.466748611e-05 -1.78128896e-07 -3.871202309e-05 -2.674215952e-05 -3.646314838e-05 -1.78128896e-07 8.593880204e-05 -7.92511659e-05 -2.08099702e-05 -3.969734491e-05 2.389953188e-05 -4.948331201e-05 -2.08099702e-05 2.408978883e-05 3.546144067e-05 -1.765716123e-05 -1.820324502e-05 -3.969734491e-05 3.546144067e-05 6.901146319e-05 1.768154774e-05 -2.267322122e-06 2.389953188e-05 -1.765716123e-05 1.768154774e-05 0.0001448475746 4.736355059e-05 -4.948331201e-05 -1.820324502e-05 -2.267322122e-06 4.736355059e-05 9.747961223e-05 -5.019835875e-05 8.079890617e-06 1.311240741e-05 2.745631118e-05 -5.737987767e-05 8.079890617e-06 1.644949899e-05 2.794066093e-05 1.028532172e-05 -3.120408698e-05 1.311240741e-05 2.794066093e-05 5.12923809e-05 3.242693785e-05 -4.678353931e-05 2.745631118e-05 1.028532172e-05 3.242693785e-05 7.814438674e-05 -1.7315321e-05 -5.737987767e-05 -3.120408698e-05 -4.678353931e-05 -1.7315321e-05 0.0001058284597 -2.468515896e-05 -9.778416708e-06 -1.852158903e-05 3.439319998e-06 -1.05993893e-05 -9.778416708e-06 7.182276254e-06 1.095010202e-05 -6.431081207e-06 -2.55736726e-06 -1.852158903e-05 1.095010202e-05 2.124136572e-05 2.401164684e-06 4.123423777e-06 3.439319998e-06 -6.431081207e-06 2.401164684e-06 4.079509797e-05 1.985168136e-05 -1.05993893e-05 -2.55736726e-06 4.123423777e-06 1.985168136e-05 2.205036436e-05 -2.901156141e-05 -7.649188966e-06 -1.450829104e-05 8.794674511e-06 -1.719088575e-05 -7.649188966e-06 1.027176182e-05 1.619336628e-05 -3.567565224e-06 -8.525538746e-06 -1.450829104e-05 1.619336628e-05 3.086499815e-05 8.686935322e-06 -6.112152001e-06 8.794674511e-06 -3.567565224e-06 8.686935322e-06 4.690048146e-05 1.10610559e-05 -1.719088575e-05 -8.525538746e-06 -6.112152001e-06 1.10610559e-05 3.548403201e-05 -2.489687909e-05 -3.638978179e-06 -7.249497815e-06 8.762832627e-06 -1.828157604e-05 -3.638978179e-06 7.486918834e-06 1.203952346e-05 -1.463977318e-06 -8.223402526e-06 -7.249497815e-06 1.203952346e-05 2.273008987e-05 8.400963785e-06 -7.910035478e-06 8.762832627e-06 -1.463977318e-06 8.400963785e-06 4.156503248e-05 7.427409767e-06 -1.828157604e-05 -8.223402526e-06 -7.910035478e-06 7.427409767e-06 3.528402351e-05 -1.076905759 -0.7505672105 -0.2654735826 -0.03602771298 -0.002602551235 -0.0003282954594 -0.0004230428263 -0.001104631382 -0.000484227278 -0.0003667222204 -7.970678348e-05 -5.526037756e-05 -3.597855097e-05 -0.5430457971 -0.04924776397 0.09033119286 -0.04924776397 0.6046833791 -0.1295620201 0.09033119286 -0.1295620201 0.7515549024 -0.0850777617 -0.01241415948 0.02178729444 -0.01241415948 0.07049416258 -0.02088449439 0.02178729444 -0.02088449439 0.1010598747 -0.01246393014 -0.01238105832 0.02221140287 -0.01238105832 0.01943902232 -0.02985642824 0.02221140287 -0.02985642824 0.05636982605 -0.005532019218 -0.005830686746 0.01049245437 -0.005830686746 0.007825698773 -0.01319044973 0.01049245437 -0.01319044973 0.0244041994 -0.0001163194856 -7.804035319e-05 0.000139209987 -7.804035319e-05 0.0002661076786 -0.0002315783848 0.000139209987 -0.0002315783848 0.0005342438278 -0.0003062488883 3.889862654e-05 -5.373807974e-05 3.889862654e-05 0.0005172297778 3.848993597e-05 -5.373807974e-05 3.848993597e-05 0.0004093435088 -0.000292429588 -0.0002983333097 0.0005330326824 -0.0002983333097 0.0004927819521 -0.0007277479336 0.0005330326824 -0.0007277479336 0.001365889383 -8.886489616e-05 -1.569838636e-05 2.852318594e-05 -1.569838636e-05 8.142000173e-05 -2.95678931e-05 2.852318594e-05 -2.95678931e-05 0.0001193756375 -0.0001076618591 1.637988795e-05 -2.888293911e-05 1.637988795e-05 0.0001277384152 3.010721466e-05 -2.888293911e-05 3.010721466e-05 8.744598891e-05 -8.446784333e-05 -4.003175914e-05 7.160773775e-05 -4.003175914e-05 0.0001500641063 -0.0001163873598 7.160773775e-05 -0.0001163873598 0.0002810221617 -4.340771841e-05 -4.058561731e-07 1.456551444e-06 -4.058561731e-07 5.985185706e-05 -8.21541267e-06 1.456551444e-06 -8.21541267e-06 6.219100641e-05 -4.876170789e-05 -1.805155794e-06 3.708911439e-06 -1.805155794e-06 5.935124214e-05 -8.254561114e-06 3.708911439e-06 -8.254561114e-06 6.538728012e-05 -4.413781844e-05 -8.721165623e-06 1.574638914e-05 -8.721165623e-06 6.05512662e-05 -2.571293536e-05 1.574638914e-05 -2.571293536e-05 8.965291531e-05 -0.2711114982 -0.07850896458 0.1477853501 0.08732229081 0.1545939369 -0.07850896458 0.09835384555 -0.1485306656 -0.05088842711 0.07531239658 0.1477853501 -0.1485306656 0.2878758292 -0.07370714172 -0.03466141466 0.08732229081 -0.05088842711 -0.07370714172 0.4518078558 -0.1202220117 0.1545939369 0.07531239658 -0.03466141466 -0.1202220117 0.3191580044 -0.06301936293 -0.02966902 0.05361697241 0.02067604022 0.03054694202 -0.02966902 0.03503357439 -0.04501226624 -0.02639369646 0.01739337797 0.05361697241 -0.04501226624 0.0920044221 -0.01590578096 0.006809684413 0.02067604022 -0.02639369646 -0.01590578096 0.1066894054 -0.03388767549 0.03054694202 0.01739337797 0.006809684413 -0.03388767549 0.06680303202 -0.007010981893 -0.002696602574 0.004643937578 0.003909619321 0.005968139639 -0.002696602574 0.006421671798 -0.006257096995 -0.004327577202 0.003561969513 0.004643937578 -0.006257096995 0.01414375183 -0.003334918264 0.0004422733297 0.003909619321 -0.004327577202 -0.003334918264 0.01296772414 -0.00125341075 0.005968139639 0.003561969513 0.0004422733297 -0.00125341075 0.0117140393 -0.002997628945 0.002585416363 -0.004630133155 0.003745349716 0.005977948516 0.002585416363 0.002358084029 -0.004059943793 0.003339795009 0.005348025966 -0.004630133155 -0.004059943793 0.007399854472 -0.005993906941 -0.009590611521 0.003745349716 0.003339795009 -0.005993906941 0.004882516427 0.007819762605 0.005977948516 0.005348025966 -0.009590611521 0.007819762605 0.012528955 -0.0005464245776 0.0003531779775 -0.0006295046671 0.0005593904516 0.000937727533 0.0003531779775 0.0003695200425 -0.0006629708333 0.0005221808429 0.0008199949109 -0.0006295046671 -0.0006629708333 0.001190582542 -0.0009181802569 -0.001478696082 0.0005593904516 0.0005221808429 -0.0009181802569 0.001051013625 0.001024502834 0.000937727533 0.0008199949109 -0.001478696082 0.001024502834 0.002041201194 -0.0002013371112 -3.986676877e-05 8.204276965e-05 8.63651375e-05 0.0001915671229 -3.986676877e-05 0.0001009481042 -0.0001048766292 -9.851882709e-05 9.064566177e-05 8.204276965e-05 -0.0001048766292 0.0002293541541 -8.743867399e-05 7.621901553e-06 8.63651375e-05 -9.851882709e-05 -8.743867399e-05 0.0004686382568 -0.0001228860737 0.0001915671229 9.064566177e-05 7.621901553e-06 -0.0001228860737 0.0003849336676 -0.0001158413348 9.342923911e-05 -0.0001675386403 0.0001384802227 0.0002252922464 9.342923911e-05 8.728713004e-05 -0.000156716447 0.000124718622 0.0002008400863 -0.0001675386403 -0.000156716447 0.0002819755036 -0.0002225163054 -0.0003617280649 0.0001384802227 0.000124718622 -0.0002225163054 0.0001827563975 0.0002873870432 0.0002252922464 0.0002008400863 -0.0003617280649 0.0002873870432 0.0004715259639 -8.032170158e-05 -1.523201572e-05 2.917702063e-05 3.103305331e-05 4.823868149e-05 -1.523201572e-05 2.990771519e-05 -5.096335881e-05 3.951436107e-06 3.248357508e-05 2.917702063e-05 -5.096335881e-05 9.492586342e-05 -3.3108664e-05 -4.261150904e-05 3.103305331e-05 3.951436107e-06 -3.3108664e-05 0.0001132040642 -7.945911165e-07 4.823868149e-05 3.248357508e-05 -4.261150904e-05 -7.945911165e-07 0.0001053775742 -8.487331959e-05 -1.169272595e-05 2.3239049e-05 3.485663835e-05 6.428926526e-05 -1.169272595e-05 2.689339674e-05 -4.130886105e-05 -8.704079254e-06 3.03057944e-05 2.3239049e-05 -4.130886105e-05 7.906741641e-05 -3.040646331e-05 -2.586339849e-05 3.485663835e-05 -8.704079254e-06 -3.040646331e-05 0.000152559462 -2.632272653e-05 6.428926526e-05 3.03057944e-05 -2.586339849e-05 -2.632272653e-05 0.0001252484543 -4.168771002e-05 5.517607343e-06 -8.860352196e-06 2.27887204e-05 4.439292115e-05 5.517607343e-06 1.252196306e-05 -2.141706549e-05 7.42240405e-06 2.340391968e-05 -8.860352196e-06 -2.141706549e-05 3.932905404e-05 -2.431242968e-05 -3.48349191e-05 2.27887204e-05 7.42240405e-06 -2.431242968e-05 6.680467331e-05 1.004849276e-05 4.439292115e-05 2.340391968e-05 -3.48349191e-05 1.004849276e-05 8.152069454e-05 -2.502439596e-05 -1.064561795e-05 2.003175214e-05 3.791880409e-06 9.119850935e-06 -1.064561795e-05 7.208015737e-06 -1.095931303e-05 -7.107709876e-06 2.064114776e-06 2.003175214e-05 -1.095931303e-05 2.142504063e-05 -1.627148885e-06 5.193636045e-06 3.791880409e-06 -7.107709876e-06 -1.627148885e-06 4.127792364e-05 -2.085954806e-05 9.119850935e-06 2.064114776e-06 5.193636045e-06 -2.085954806e-05 1.994522515e-05 -2.954699807e-05 -6.356633381e-06 1.219404229e-05 1.031938264e-05 1.852805905e-05 -6.356633381e-06 1.058214089e-05 -1.705409356e-05 -1.947864268e-06 1.026192751e-05 1.219404229e-05 -1.705409356e-05 3.235700968e-05 -1.05287086e-05 -9.87223342e-06 1.031938264e-05 -1.947864268e-06 -1.05287086e-05 4.726572351e-05 -7.679432818e-06 1.852805905e-05 1.026192751e-05 -9.87223342e-06 -7.679432818e-06 3.85148755e-05 -2.307067903e-05 -3.847963727e-06 7.580457428e-06 8.010582775e-06 1.562407682e-05 -3.847963727e-06 6.454420741e-06 -1.041162132e-05 -1.864127101e-06 6.720713634e-06 7.580457428e-06 -1.041162132e-05 1.973223227e-05 -6.7011006e-06 -5.818878178e-06 8.010582775e-06 -1.864127101e-06 -6.7011006e-06 3.912821862e-05 -8.720613171e-06 1.562407682e-05 6.720713634e-06 -5.818878178e-06 -8.720613171e-06 3.042082271e-05 diff --git a/tests/09_DeePKS/100_NO_GO_deepks_UT/phialpha_ref.dat b/tests/09_DeePKS/100_NO_GO_deepks_UT/phialpha_ref.dat deleted file mode 100644 index a6dec9fd8b..0000000000 --- a/tests/09_DeePKS/100_NO_GO_deepks_UT/phialpha_ref.dat +++ /dev/null @@ -1,870 +0,0 @@ -iat : 0 -ad : 0 2.003222249 -iw : 6 -0.5850901169 0.2215735378 0.007775697945 -0.04948150451 -0.01396166265 -0.0057789997 -0.01117556859 -0.0009236808674 0.003564925034 -0.004520073968 0.002310592867 -0.002955962335 -0.003013805547 -0.168625779 0.2274351239 0.4074740598 -0.1061351697 0.1431505053 -0.2564692585 -0.03820190009 0.05152506298 0.0923125955 0.007538049761 -0.01016699399 --0.01821524418 0.006903059027 -0.009310546078 -0.01668082724 0.006240634778 -0.008417097034 --0.01508011886 -0.002208621065 0.002978892128 0.005337000057 0.000110217591 -0.0001486566978 --0.0002663341841 -0.002587948805 0.003490512903 0.006253622743 0.001510053508 -0.00203669456 --0.003648953542 -0.0008188151267 0.001104382265 0.00197861754 0.001284426515 -0.001732378675 --0.003103739474 -0.001059983703 0.001429659962 0.002561386909 -0.08877099889 -0.07330056648 --0.1313257113 -0.1092380345 0.1771264133 -0.08172517586 -0.06748264367 -0.1209022877 --0.1005677269 0.1630677525 -0.04391251505 -0.03625972749 -0.06496313372 -0.05403698158 -0.08761945213 -0.007585988141 -0.006263951459 -0.01122253101 -0.00933501306 0.01513646221 -0.002149107274 0.001774574834 0.003179338353 0.002644605304 -0.004288153428 0.006713735414 -0.005543709265 0.009932141009 0.008261653803 -0.01339604024 0.0009323394693 0.0007698574096 -0.001379280908 0.001147299595 -0.001860314159 0.0002540527411 0.0002097780815 0.0003758396024 -0.0003126271242 -0.0005069161255 -0.00183936152 -0.001518809556 -0.002721107827 -0.002263444589 -0.003670112005 0.0003344983512 0.0002762041538 0.0004948489308 0.0004116202687 -0.0006674307368 --0.0007334709195 -0.0006056463774 -0.00108507949 -0.0009025799257 0.001463508069 0.0009667406394 -0.0007982633675 0.001430173183 0.001189632297 -0.001928955449 -0.000461254855 -0.0003808703584 --0.0006823694975 -0.0005676017435 0.0009203503293 -ad : 1 1.950638213 -iw : 7 -0.5908264824 0.2352964506 0.0171341067 -0.04740021528 -0.01624056849 -0.007623066941 -0.01047168815 -0.0004293509049 0.004126414266 -0.004203120421 0.002056032276 -0.00305108194 -0.002910884454 -0.1676093152 0.223746492 -0.4009944874 -0.1091899226 0.1457607658 --0.2612298545 -0.04224560572 0.05639487322 -0.1010698897 0.0052004006 -0.006942164222 -0.01244162337 0.006601390117 -0.008812385393 0.01579340052 0.006894798514 -0.009204064694 -0.0164953612 -0.001498536631 0.002000439617 -0.003585152338 0.0002003073606 -0.0002673960525 -0.0004792224542 -0.002735115404 0.00365118416 -0.006543587377 0.001311151438 -0.001750293738 -0.003136845337 -0.000883428838 0.001179314546 -0.002113546575 0.001306422328 -0.001743980712 -0.003125531245 -0.0009530404686 0.001272241112 -0.002280087916 -0.08452204973 -0.0709904061 -0.1272277444 -0.1048085239 -0.1698399726 -0.08005949384 -0.06724228764 0.1205104331 --0.09927489216 -0.1608728407 -0.04501197319 -0.0378057355 0.06775476743 -0.05581547634 --0.09044778632 -0.009888308214 -0.00830522944 0.01488448463 -0.01226164049 -0.01986972632 -0.0009459909039 0.0007945415267 -0.001423963207 0.001173041952 0.001900889409 0.00655823679 -0.005508289192 -0.009871858017 0.00813230535 0.01317822699 0.00141679896 0.001189975088 --0.002132652209 0.001756850527 0.002846938726 0.0006450669061 0.0005417942628 -0.0009709940511 -0.0007998919862 0.001296207865 -0.001672850697 -0.001405033961 0.002518076901 -0.002074358263 --0.003361453225 0.000126462438 0.0001062163052 -0.0001903589749 0.000156815192 0.0002541156665 --0.000821341429 -0.0006898479365 0.001236333214 -0.00101847486 -0.00165041674 0.0009219014565 -0.0007743087039 -0.001387702301 0.001143170701 0.001852483684 -0.0004385941082 -0.0003683769378 -0.0006601986025 -0.0005438628288 -0.0008813180886 -ad : 2 1.709269535 -iw : 4 -0.6156391309 0.2975959069 0.06579034478 -0.03014083563 -0.02179038847 -0.01593929268 -0.004388411083 -0.0005171205408 0.006239271008 -0.00208576669 0.002066432031 -0.002983680644 -0.001979380499 0.4498261531 0.008804225345 0.001269408873 0.3364297393 0.006584773288 -0.0009494043267 0.1683441241 0.003294916478 0.0004750669193 0.02176666019 0.0004260280999 -6.142548932e-05 -0.006058242766 -0.0001185749964 -1.709635393e-05 -0.02318084286 -0.0004537071995 --6.541631115e-05 -0.004850028958 -9.492722372e-05 -1.368677599e-05 -0.004701775441 -9.202553079e-05 --1.326840474e-05 0.006582934676 0.0001288445323 1.857703388e-05 -0.001444691781 -2.827623939e-05 --4.076918498e-06 0.004308359395 8.432539263e-05 1.215818512e-05 -0.003172016381 -6.208431151e-05 --8.951426479e-06 0.001939360387 3.795814396e-05 5.472872721e-06 0.2123036301 0.007198622814 -0.001037910243 6.898305548e-05 2.031450507e-05 0.2258509109 0.007657973247 0.001104140206 -7.338492474e-05 2.161079145e-05 0.1510612244 0.005122063977 0.0007385082961 4.90837807e-05 -1.445445849e-05 0.0611447915 0.00207324901 0.0002989247305 1.986755734e-05 5.850706256e-06 -0.01768466903 0.0005996377069 8.645683131e-05 5.746215946e-06 1.6921769e-06 -0.01198887332 --0.0004065091912 -5.861121835e-05 -3.895501517e-06 -1.147168457e-06 -0.007097689248 -0.0002406628078 --3.469919176e-05 -2.306226657e-06 -6.791501593e-07 -0.008006625753 -0.0002714823047 -3.914280165e-05 --2.601564129e-06 -7.661227431e-07 0.0009756714818 3.308229342e-05 4.769863917e-06 3.170214278e-07 -9.335819294e-08 0.0001937572096 6.569765523e-06 9.472404803e-07 6.295683373e-08 1.853987054e-08 -0.003030754189 0.0001027644051 1.481675474e-05 9.847720654e-07 2.900010297e-07 -0.00114015717 --3.865954346e-05 -5.574001749e-06 -3.704671713e-07 -1.09097186e-07 0.001678539253 5.691457538e-05 -8.206044726e-06 5.454017265e-07 1.606128645e-07 -ad : 3 2.100474535 -iw : 5 -0.5741878235 0.1961945792 -0.00817940696 -0.05180202865 -0.009068645181 -0.002660547128 -0.01180316285 -0.002181392434 0.002679843358 -0.004859987515 0.002925422523 -0.00278103132 -0.003066016441 -0.1576544151 -0.4836480131 0.0001366673608 -0.09266634316 -0.284279338 -8.033054166e-05 -0.02851689754 -0.0874833783 2.472071032e-05 0.01046623207 0.03210802782 --9.072960718e-06 0.006370533681 0.01954335345 -5.522484257e-06 0.004508772025 0.01383189066 --3.908561476e-06 -0.003116511127 -0.009560749783 2.701639219e-06 0.0001707036309 0.0005236800496 --1.479794569e-07 -0.002024307462 -0.006210116484 1.754830388e-06 0.001682354958 0.005161083705 --1.458398814e-06 -0.0007667468007 -0.002352205402 6.646769875e-07 0.001129172899 0.003464046527 --9.788566971e-07 -0.001144289671 -0.003510421357 9.919611148e-07 -0.103537457 0.1484638972 --4.195234647e-05 0.2277267755 -0.0001287002905 -0.09012947339 0.1292379905 -3.651956505e-05 -0.1982364157 -0.0001120337484 -0.04413326074 0.06328333803 -1.788235775e-05 0.09706946122 --5.485902053e-05 -0.003412671104 0.00489347978 -1.382780346e-06 0.007506042831 -4.242056694e-06 -0.00431007474 -0.006180280182 1.746399362e-06 -0.009479848663 5.357557423e-06 0.007015069888 --0.0100590129 2.842436458e-06 -0.01542938462 8.719950817e-06 -0.0001560716539 0.0002237934625 --6.32386799e-08 0.0003432737827 -1.940019369e-07 -0.0003266177306 0.0004683420148 -1.323422518e-07 -0.0007183835185 -4.059960331e-07 -0.002102253183 0.003014452061 -8.518120542e-07 0.004623827481 --2.613166319e-06 0.0008528989877 -0.001222984526 3.455861761e-07 -0.001875919518 1.060180061e-06 --0.000631318159 0.0009052564844 -2.55803831e-07 0.001388560748 -7.847481756e-07 0.001023596462 --0.001467750169 4.147510927e-07 -0.002251362247 1.272362349e-06 -0.0005958996155 0.0008544693089 --2.414525899e-07 0.001310658983 -7.407218206e-07 -ad : 4 0 -iw : 0 -0.7327634347 0.6011283624 0.296757245 0.0881641458 -0.0009374705018 -0.04005161846 --0.04057142115 -0.03764864236 -0.02423804172 -0.01798314219 -0.008209609576 -0.00610775483 --0.0008843809026 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 -iw : 1 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0.5941895124 0 0 0.549308431 0 -0 0.4322353438 0 0 0.2817552779 0 -0 0.2057360504 0 0 0.1299110039 0 -0 0.1009604756 0 0 0.0619116175 0 -0 0.05191940112 0 0 0.02849164911 0 -0 0.02558176402 0 0 0.01095537063 0 -0 0.01184664999 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 -iw : 2 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0.5941895124 0 0 0.549308431 -0 0 0.4322353438 0 0 0.2817552779 -0 0 0.2057360504 0 0 0.1299110039 -0 0 0.1009604756 0 0 0.0619116175 -0 0 0.05191940112 0 0 0.02849164911 -0 0 0.02558176402 0 0 0.01095537063 -0 0 0.01184664999 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 -iw : 3 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0.5941895124 0 0 -0.549308431 0 0 0.4322353438 0 0 -0.2817552779 0 0 0.2057360504 0 0 -0.1299110039 0 0 0.1009604756 0 0 -0.0619116175 0 0 0.05191940112 0 0 -0.02849164911 0 0 0.02558176402 0 0 -0.01095537063 0 0 0.01184664999 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 -iat : 1 -ad : 0 3.03052076 -iw : 6 -0.4544973851 -0.02282075324 -0.0595755442 -0.01104896757 0.02637575687 -0.009515616617 -0.003128002291 -0.006672491428 0.007755239332 -0.005500733502 0.004312909888 -0.004542729707 -0.004380642523 -0.4375309294 0.1619911482 0.3003130379 -0.06725586529 0.02490076498 -0.04616316667 0.04196384973 -0.01553666666 -0.02880320075 0.02978024819 -0.01102581846 --0.02044060477 -0.02326131454 0.008612252981 0.01596613076 0.004840407976 -0.001792109296 --0.003322365405 -0.004000596116 0.001481177935 0.002745934269 0.008346725543 -0.003090285883 --0.005729036133 -0.007776636907 0.002879216661 0.005337737967 0.005241565967 -0.001940633753 --0.003597712739 -0.004514346959 0.001671388691 0.003098563228 0.00479342684 -0.001774715033 --0.003290118433 -0.004597701149 0.001702249689 0.003155775984 0.1886067135 -0.1738010277 --0.322207202 -0.07840450924 0.1192937713 0.06623400954 -0.06103461915 -0.1131511943 --0.02753372304 0.04189301981 -0.007268546116 0.006697962981 0.01241725633 0.003021561537 --0.004597356381 -0.02050312769 0.01889362578 0.03502661852 0.008523226106 -0.01296823098 -0.006739103281 -0.006210081573 -0.01151278007 -0.00280147019 0.004262483718 0.0006361118915 --0.0005861769098 -0.001086704863 -0.0002644340689 0.0004023408556 0.002713887224 -0.002500846231 --0.004636282519 -0.001128172969 0.001716534028 -0.004494974443 0.004142117549 0.007679011586 -0.001868577521 -0.00284307193 0.002783432026 -0.002564931744 -0.004755089722 -0.001157083 -0.001760521125 -0.001786880929 0.001646610219 0.00305262678 0.0007428130193 -0.001130202424 -0.002151288853 -0.001982412007 -0.003675164839 -0.0008942987425 0.001360690484 -0.002194379617 -0.002022120134 0.003748779158 0.000912211733 -0.001387945399 0.001768438149 -0.001629615204 --0.003021119966 -0.0007351462874 0.001118537364 -ad : 1 2.994710688 -iw : 7 -0.4594981533 -0.01581957458 -0.06086770012 -0.01323467917 0.02646126145 -0.008491043205 -0.002889453475 -0.006932681674 0.007712608083 -0.005239235756 0.004192541899 -0.004543412143 -0.004342856059 -0.4410737007 0.1594176829 -0.2977198859 -0.07540936811 0.02725527891 --0.05090049223 0.04056503049 -0.01466145716 0.02738094843 0.03202750507 -0.01157573131 -0.02161821288 -0.0223270074 0.008069671304 -0.01507048388 0.003848124113 -0.001390831121 -0.002597441358 -0.004288176114 0.00154987953 -0.002894471608 0.008628421754 -0.003118578598 -0.005824089572 -0.007494486488 0.002708739307 -0.005058695766 0.005006754668 -0.001809596053 -0.003379504211 -0.004555180237 0.001646383082 -0.003074696448 0.004796453758 -0.001733586797 -0.003237553414 -0.004486264404 0.001621474767 -0.00302817902 0.1926068516 -0.1705739652 -0.3185547584 -0.0766851208 -0.1151355462 0.07159468102 -0.06340474665 0.1184112929 --0.02850494008 -0.04279750507 -0.005555019405 0.004919563759 -0.009187512542 0.002211693565 -0.003320651308 -0.02167816584 0.0191983342 -0.03585377584 0.008631015733 0.01295866396 -0.00598573172 -0.005301005575 0.009899872753 -0.002383178772 -0.00357812033 0.0009960892638 --0.0008821435687 0.001647443859 -0.000396586232 -0.0005954371849 0.00307200489 -0.002720588862 -0.005080825357 -0.001223098058 -0.001836367492 -0.004652784398 0.004120538171 -0.007695295352 -0.001852474773 0.002781317844 0.002621947518 -0.002322014928 0.004336470127 -0.001043910746 --0.001567334481 -0.001718372027 0.001521802199 -0.002842035895 0.0006841582496 0.001027199709 -0.00223381152 -0.001978278993 0.003694527392 -0.0008893770126 -0.001335316514 -0.002242301111 -0.001985797434 -0.003708568427 0.0008927570861 0.001340391378 0.001741468123 -0.001542256262 -0.002880234802 -0.0006933538047 -0.001041005976 -ad : 2 1.709269535 -iw : 0 -0.6412457426 0.3234088698 0.05420896988 -0.01608100199 0.005295225826 0.001680568426 -0.003498294828 -0.006818319211 -0.0004926273675 -0.00324145223 0.002578714712 -0.001558512148 -0.001974211429 -0.4822068499 -0.009437996746 -0.001360787161 -0.3391766724 -0.006638537654 --0.0009571561686 -0.1080509703 -0.002114828327 -0.0003049197104 -0.002789035639 -5.458841841e-05 --7.870655276e-06 -0.00719783673 -0.0001408797068 -2.031228675e-05 -0.009004931277 -0.0001762490767 --2.541190542e-05 -0.01172758661 -0.0002295382662 -3.309523556e-05 0.00165937727 3.247817254e-05 -4.682760694e-06 0.0006761967597 1.323486553e-05 1.908226457e-06 0.004423466611 8.657832938e-05 -1.248301755e-05 -0.001181355814 -2.312209445e-05 -3.333784711e-06 0.001566500856 3.066034832e-05 -4.420663563e-06 -0.001712473043 -3.351738991e-05 -4.832596903e-06 0.23025972 0.007807463643 -0.001125693997 7.481746322e-05 2.203265317e-05 0.1937922775 0.006570954576 0.0009474119202 -6.296822821e-05 1.854322605e-05 0.07342861195 0.002489759034 0.0003589778867 2.385889496e-05 -7.026097053e-06 -0.002408850038 -8.167737324e-05 -1.177638897e-05 -7.82698985e-07 -2.304934508e-07 --0.004315070575 -0.0001463119847 -2.109552224e-05 -1.402080373e-06 -4.128922479e-07 0.004850101608 -0.0001644533919 2.37111826e-05 1.575926083e-06 4.640872775e-07 0.01269720094 0.0004305266015 -6.207409128e-05 4.125655865e-06 1.214945561e-06 0.005040972909 0.0001709253043 2.464431444e-05 -1.637945209e-06 4.823510067e-07 0.001956341665 6.633407885e-05 9.564165493e-06 6.356670657e-07 -1.871946921e-07 -0.002593366414 -8.793380791e-05 -1.267845285e-05 -8.426532278e-07 -2.48149102e-07 --2.63829267e-06 -8.94571317e-08 -1.289808839e-08 -8.572509547e-10 -2.524479199e-10 -0.001218606244 --4.131953233e-05 -5.957523676e-06 -3.959573469e-07 -1.166036714e-07 0.0008951925984 3.035347939e-05 -4.376418655e-06 2.908717135e-07 8.565748296e-08 -iw : 1 -0.1944765338 0.450059936 0.3258567382 0.1382464773 -0.003292303944 -0.03563871205 --0.03499071825 -0.007050222696 0.00106969077 0.009668760603 0.001805590306 0.0025392286 --0.003014886347 0.3447099161 -0.003185719786 -0.000459322746 -0.06723457802 -0.007530337826 --0.001085737504 -0.2338184942 -0.007418658132 -0.001069635327 -0.2287345697 -0.00475834448 --0.000686066572 -0.08851995854 -0.001715123093 -0.0002472894986 -0.01836387119 1.757032323e-05 -2.53332046e-06 0.03619067543 0.0006869053441 9.903923448e-05 0.01933648167 0.000499869259 -7.207203901e-05 0.0170751671 0.000206926974 2.983509922e-05 -0.007584314026 -7.952744113e-05 --1.146640794e-05 -0.0003354425725 -9.595780578e-05 -1.383536714e-05 -0.008363644851 -8.659379969e-05 --1.248524808e-05 0.003691278527 6.317345433e-06 9.108461027e-07 -0.3673817301 -0.004759196387 --0.0006861894015 2.813020804e-05 8.283936539e-06 -0.1744719826 0.0008366311604 0.000120626969 -7.269981512e-05 2.140903665e-05 0.02220333938 0.005042749253 0.0007270725581 8.94169213e-05 -2.633198093e-05 0.1401078422 0.006262926129 0.0009029998307 7.450249505e-05 2.193989964e-05 -0.1083165656 0.00410889703 0.0005924280832 4.355303628e-05 1.282573482e-05 0.06412272471 -0.001902819907 0.0002743519592 1.563458462e-05 4.604157446e-06 0.0006331124197 -9.213031905e-05 --1.32835133e-05 -1.971024557e-06 -5.804380234e-07 -0.01185837942 -0.0005846703267 -8.42988078e-05 --7.351788007e-06 -2.164994486e-06 -0.02167113424 -0.0006733887391 -9.709038633e-05 -5.864622931e-06 --1.727046033e-06 -0.003081840396 -0.0001460238067 -2.105397222e-05 -1.797110725e-06 -5.292229329e-07 --0.003168589341 -2.692215509e-05 -3.881684215e-06 5.13276736e-07 1.511525227e-07 0.006592402758 -0.0001760239012 2.537943921e-05 1.23174047e-06 3.627296276e-07 -0.001229950583 7.614055101e-06 -1.09780801e-06 5.453867775e-07 1.606084622e-07 -iw : 2 -0.00380639324 0.008808801062 0.006377833155 0.002705830088 -6.443864063e-05 -0.0006975389263 --0.0006848560633 -0.0001379905302 2.093652964e-05 0.0001892418806 3.533992815e-05 4.969906851e-05 --5.900888289e-05 -0.003185719786 0.507412602 -8.990097472e-06 -0.007530337826 0.3173586292 --2.125060445e-05 -0.007418658132 0.1450709515 -2.093544448e-05 -0.00475834448 0.01428599687 --1.34280425e-05 -0.001715123093 -0.0009243278761 -4.840075341e-06 1.757032323e-05 -0.01926123159 -4.958343139e-08 0.0006869053441 0.001108699632 1.938446069e-06 0.000499869259 -0.00619309296 -1.410630458e-06 0.000206926974 0.006506888435 5.839476761e-07 -7.952744113e-05 -0.003522648487 --2.244263449e-07 -9.595780578e-05 0.004565362827 -2.707928145e-07 -8.659379969e-05 -0.003941082688 --2.443676004e-07 6.317345433e-06 0.003368635878 1.782754134e-08 0.006136998599 -0.393079818 -8.283936539e-06 -0.007694131283 -0.001109270782 0.008276226525 -0.3447152884 2.140903665e-05 --0.006748425587 -0.0009727861365 0.007861987911 -0.2189113737 2.633198093e-05 -0.004286468727 --0.000617767638 0.005360550016 -0.07708216435 2.193989964e-05 -0.001510211284 -0.0002175257767 -0.002875225869 -0.02218792812 1.282573482e-05 -0.0004351620055 -6.261430692e-05 0.0007851433264 -0.01389302869 4.604157446e-06 0.0002716023946 3.920611054e-05 -0.0001842879316 0.005797631718 --5.804380234e-07 0.0001135144009 1.636090986e-05 -0.000548222481 0.009310025628 -2.164994486e-06 -0.0001823705405 2.627288132e-05 -0.0003178194186 -0.003148768601 -1.727046033e-06 -6.15096351e-05 --8.885821272e-06 -0.0001322184596 0.002117211387 -5.292229329e-07 4.147580124e-05 5.974768031e-06 -7.738579183e-05 -0.004111065507 1.511525227e-07 -8.047432938e-05 -1.1601422e-05 4.677911769e-05 -0.00242874975 3.627296276e-07 4.751158861e-05 6.853928925e-06 6.131508811e-05 -0.002517672311 -1.606084622e-07 -4.928828571e-05 -7.104868286e-06 -iw : 3 -0.0005488125487 0.001270068608 0.0009195673301 0.0003901313956 -9.29087784e-06 -0.0001005724033 --9.874376554e-05 -1.989572012e-05 3.018666089e-06 2.7285231e-05 5.095373709e-06 7.16570011e-06 --8.508005708e-06 -0.000459322746 -8.990097472e-06 0.5074736583 -0.001085737504 -2.125060445e-05 -0.3175029528 -0.001069635327 -2.093544448e-05 0.1452131347 -0.000686066572 -1.34280425e-05 -0.01437719352 -0.0002472894986 -4.840075341e-06 -0.0008914564687 2.53332046e-06 4.958343139e-08 --0.01926156834 9.903923448e-05 1.938446069e-06 0.001095534661 7.207203901e-05 1.410630458e-06 --0.006202673267 2.983509922e-05 5.839476761e-07 0.00650292255 -1.146640794e-05 -2.244263449e-07 --0.003521124293 -1.383536714e-05 -2.707928145e-07 0.004567201919 -1.248524808e-05 -2.443676004e-07 --0.003939423063 9.108461027e-07 1.782754134e-08 0.003368514802 0.0008848433754 8.283936539e-06 --0.3931360784 0.001109512303 -0.007694658484 0.001193281063 2.140903665e-05 -0.3448606881 -0.0009734103239 -0.006749788089 0.001133555403 2.633198093e-05 -0.2190902076 0.0006185353553 --0.004288144531 0.0007728936374 2.193989964e-05 -0.07723116934 0.0002181654415 -0.001511607571 -0.0004145551807 1.282573482e-05 -0.02227503419 6.298824532e-05 -0.0004359782534 0.0001132033615 -4.604157446e-06 0.01386175952 -3.907187486e-05 0.0002713093795 -2.657096181e-05 -5.804380234e-07 -0.005801573767 -1.637783271e-05 0.0001135513408 -7.904369257e-05 -2.164994486e-06 0.009324729204 --2.633600243e-05 0.0001825083238 -4.582376915e-05 -1.727046033e-06 -0.003137039355 8.835468693e-06 --6.139972345e-05 -1.906349271e-05 -5.292229329e-07 0.002120805608 -5.990197695e-06 4.150948173e-05 -1.115762113e-05 1.511525227e-07 -0.004112092061 1.16058289e-05 -8.048394894e-05 6.744696406e-06 -3.627296276e-07 0.002426286269 -6.843353427e-06 4.748850399e-05 8.84051848e-06 1.606084622e-07 --0.002518763084 7.109550877e-06 -4.929850706e-05 -ad : 3 3.113220902 -iw : 5 -0.4428701209 -0.03839082206 -0.05577959709 -0.006284853633 0.02570187386 -0.01177410487 -0.003973596527 -0.006141065071 0.007694783566 -0.0060833825 0.004691343844 -0.00455560106 -0.004428399448 -0.4188992115 -0.3604264917 -0.0007558735513 -0.04772320976 -0.04106168882 --8.611310561e-05 0.04303864864 0.03703102969 7.76601514e-05 0.02394968313 0.02060662811 -4.321548368e-05 -0.02424098149 -0.02085726512 -4.374111065e-05 0.007061572025 0.006075871144 -1.274209972e-05 -0.003605932894 -0.003102592956 -6.506647012e-06 0.00746792643 0.006425503916 -1.347533707e-05 -0.008032005334 -0.00691084496 -1.449317695e-05 0.00567914087 0.004886408863 -1.024760195e-05 -0.004445204578 -0.003824713552 -8.021052506e-06 0.004674639705 0.004022122609 -8.435051722e-06 -0.004670674832 -0.004018711178 -8.427897392e-06 0.1605248559 0.3798200881 -0.0007965451082 0.1634004267 0.000685358079 0.04877219623 0.11540057 0.0002420139492 -0.04964587962 0.0002082320431 -0.009327211466 -0.02206924442 -4.628283031e-05 -0.009494294977 --3.982236705e-05 -0.01579227576 -0.03736632273 -7.836331599e-05 -0.01607517156 -6.742484657e-05 -0.007279574323 0.01722430178 3.612218982e-05 0.007409977374 3.10800159e-05 -0.0003157097981 --0.0007470053325 -1.566592874e-06 -0.0003213652828 -1.347917489e-06 0.001833486767 0.004338238472 -9.097998607e-06 0.001866331033 7.828039848e-06 -0.003601000451 -0.008520377115 -1.786863024e-05 --0.003665507169 -1.537440876e-05 0.002756765285 0.006522820579 1.367942609e-05 0.00280614875 -1.176996141e-05 -0.00179655022 -0.004250842394 -8.914714679e-06 -0.00182873282 -7.670339902e-06 -0.001782869964 0.00421847335 8.846831477e-06 0.001814807502 7.611932286e-06 -0.001841412413 --0.004356991453 -9.137326688e-06 -0.001874398655 -7.861878256e-06 0.001640473173 0.00388154633 -8.140240176e-06 0.001669859879 7.003971667e-06 -ad : 4 0 -iw : 4 -0.7032204055 0.5544559883 0.363270429 0.1985231277 0.1293770322 0.07072134775 -0.0546083141 0.0295329376 0.02595975093 0.0128918805 0.01275414576 0.005221808601 -0.006204537017 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 -iat : 2 -ad : 0 3.347258395 -iw : 6 -0.4094881472 -0.07764414863 -0.03974262227 0.004141344336 0.0209549886 -0.01658380301 -0.007963720818 -0.005749597484 0.00686815368 -0.0071769444 0.006098418188 -0.004971614259 -0.00459664179 -0.004819005802 0.4712682185 0.2658449454 -1.078693209e-05 0.001054893577 -0.0005950711597 0.0005059517458 -0.04947887338 -0.0279112995 0.0001274670847 -0.01246547284 --0.007031840501 -0.0002992177642 0.02926160052 0.01650662677 0.0001621981216 -0.01586194808 --0.008947810512 -6.488388004e-05 0.006345232151 0.0035793797 7.423496682e-05 -0.00725970916 --0.004095241116 -9.64515744e-05 0.009432352544 0.005320840974 8.530099173e-05 -0.008341896245 --0.004705708691 -6.682288294e-05 0.006534854344 0.003686346602 6.054416888e-05 -0.005920835911 --0.00333997549 -5.822994263e-05 0.005694519254 0.003212309043 -0.2296499075 -0.006172042133 --0.003481682276 0.2057581737 0.3404864553 -0.03930855048 -0.001056451676 -0.000595950092 -0.03521906735 0.05828014111 0.02114635893 0.0005683268925 0.0003205962672 -0.01894638775 --0.03135228258 0.01435850758 0.0003858974501 0.0002176868342 -0.01286471363 -0.02128839241 --0.01430383375 -0.0003844280431 -0.0002168579338 0.01281572782 0.0212073312 0.005125607483 -0.0001377551844 7.770844292e-05 -0.004592362551 -0.007599393103 -0.002246646689 -6.038059485e-05 --3.406101941e-05 0.002012915767 0.003330951776 0.003827295171 0.0001028619054 5.802495593e-05 --0.003429120757 -0.005674472854 -0.004785839255 -0.000128623616 -7.255727595e-05 0.004287942266 -0.007095641628 0.003935441108 0.000105768422 5.966453766e-05 -0.003526015682 -0.005834813554 --0.002865980427 -7.702573078e-05 -4.345063042e-05 0.002567816835 0.00424919621 0.00265773067 -7.142883641e-05 4.02933921e-05 -0.002381232437 -0.003940438317 -0.002820201797 -7.579539005e-05 --4.275658858e-05 0.002526800806 0.004181323317 -ad : 1 3.303653192 -iw : 7 -0.4157510976 -0.07089048239 -0.04324544756 0.002607725563 0.02207948738 -0.01591628265 -0.007109280195 -0.005663063326 0.007037898695 -0.007055437311 0.005841495253 -0.004839366207 -0.004533511081 -0.002939565203 0.475702526 -0.2634907806 -6.730429593e-05 0.01089168682 --0.006032885901 0.0003129544723 -0.05064464392 0.02805197792 9.378951608e-05 -0.01517772413 -0.00840691432 -0.0001831075376 0.02963183742 -0.01641302189 9.023619531e-05 -0.01460269907 -0.008088408963 -3.492320691e-05 0.005651535718 -0.003130375553 4.57544333e-05 -0.007404326148 -0.004101243045 -5.922728953e-05 0.009584604964 -0.005308895592 5.014013418e-05 -0.008114053213 -0.0044943596 -3.834132884e-05 0.006204681889 -0.00343676223 3.576562087e-05 -0.005787861474 -0.003205886146 -3.513078294e-05 0.005685127232 -0.003148981832 -0.2285449579 -0.003743907313 -0.002073743582 0.209992595 -0.3355887664 -0.04472134174 -0.0007326022849 0.0004057870988 -0.04109104262 -0.06566751698 0.02014158572 0.0003299492177 -0.0001827582831 -0.01850657259 -0.02957531842 0.01589965069 0.0002604599946 -0.0001442683264 -0.01460898083 0.02334658446 --0.01379582197 -0.000225996142 0.0001251788599 0.01267593249 -0.02025738358 0.004177306144 -6.843050558e-05 -3.790353497e-05 -0.003838209188 0.006133834797 -0.002112655302 -3.460844513e-05 -1.916955602e-05 0.00194115842 -0.003102161575 0.004035354853 6.610513171e-05 -3.661551453e-05 --0.003707780934 0.005925397652 -0.004699167309 -7.697936989e-05 4.263873566e-05 0.004317707758 --0.006900120548 0.003681489757 6.030829359e-05 -3.340465624e-05 -0.003382641187 0.00540579244 --0.002728109721 -4.469050652e-05 2.475399184e-05 0.002506652717 -0.004005876935 0.002597198359 -4.254598315e-05 -2.356614417e-05 -0.002386368215 0.003813650501 -0.002737835626 -4.484983137e-05 -2.484224159e-05 0.002515589113 -0.004020158172 -ad : 2 2.100474535 -iw : 0 -0.5976484872 0.2143416338 -0.006476841211 -0.02618081526 0.005941372732 -0.006471353698 --0.001375196134 -0.006013554874 0.004441167267 -0.001430583562 0.003014199785 -0.002640190528 -0.00208156407 0.1685506816 0.5170752891 -0.0001461131095 0.09414922767 0.2888284916 --8.161602366e-05 0.01805586761 0.05539130947 -1.565225923e-05 -0.003480091085 -0.01067613069 -3.016819185e-06 0.003907280656 0.01198665147 -3.387141014e-06 0.0003522938913 0.001080757811 --3.053963084e-07 -1.418845562e-05 -4.352696603e-05 1.229967954e-08 -0.002903353569 -0.008906830705 -2.516857328e-06 0.0005015463778 0.001538630612 -4.347802106e-07 -0.0005445093538 -0.001670431285 -4.720239284e-07 0.00111450542 0.003419050026 -9.66141762e-07 -0.0007128910741 -0.002186988239 -6.179905689e-07 0.0006684605511 0.002050685464 -5.794746648e-07 -0.1119838195 0.1605752619 --4.537472845e-05 0.246304235 -0.0001391993827 -0.07760805671 0.1112833451 -3.144601171e-05 -0.1706960266 -9.646923669e-05 -0.02159493045 0.0309652915 -8.750050763e-06 0.04749724423 --2.684317254e-05 0.001391123923 -0.001994753254 5.6366956e-07 -0.003059725193 1.729210455e-06 --0.004251940537 0.006096920684 -1.722843962e-06 0.00935198465 -5.285294793e-06 -0.003469774921 -0.004975361792 -1.405918244e-06 0.007631640547 -4.313038521e-06 -0.001991787547 0.002856053745 --8.070524784e-07 0.004380862433 -2.475854086e-06 0.002275758394 -0.003263243761 9.22114638e-07 --0.005005445723 2.828838712e-06 0.0004564196555 -0.0006544669227 1.849366991e-07 -0.001003878012 -5.67343877e-07 0.0008287959247 -0.001188422785 3.35819855e-07 -0.00182290573 1.030219202e-06 --0.0008296650475 0.001189669034 -3.361720149e-07 0.001824817333 -1.031299548e-06 0.0004442702771 --0.0006370457485 1.800138919e-07 -0.000977155907 5.522418204e-07 -0.0005132096797 0.0007358989818 --2.079474514e-07 0.001128785552 -6.379356495e-07 -iw : 1 --0.0706194842 -0.1431156155 -0.07140869441 -0.006315776899 0.02138644198 0.01028780507 -0.00165384143 -0.00550771505 -0.001448454497 -0.0008269438305 0.002008380949 -0.0002796349383 -0.0006648712195 0.4451322431 -0.06788932434 1.918389931e-05 0.182224313 -0.1410558353 -3.985900535e-05 0.03243666373 -0.1066909135 3.014830037e-05 -0.0387072509 -0.03923412651 -1.108662577e-05 -0.004474574913 0.008241291171 -2.328791773e-06 -0.007288178005 0.01583199602 --4.473743412e-06 0.01170910356 0.008407192102 -2.375671409e-06 -0.004486981616 -0.002112986497 -5.970794466e-07 0.004953244636 -0.003358875717 9.491379416e-07 -0.006092315487 -0.002259584437 -6.385045181e-07 0.004364569398 0.0009242169052 -2.611615924e-07 -0.003995253623 0.0005032263472 --1.421997298e-07 0.004065349069 0.000699307517 -1.976075786e-07 0.1731079056 0.3930021598 --0.0001110530107 -0.0359735706 2.033054293e-05 0.1496140246 0.2451985153 -6.928723588e-05 --0.08188347012 4.62766241e-05 0.08944862774 0.08714374334 -2.46247376e-05 -0.08092058457 -4.573244721e-05 0.02388466295 -0.02256199621 6.375480502e-06 -0.04624983415 2.613819598e-05 -0.0007583809355 -0.01556952268 4.399574724e-06 -0.009454690898 5.343339456e-06 -0.01087257072 --0.01389341939 3.925948024e-06 0.008061104941 -4.555751273e-06 -0.002878763402 0.009478994322 --2.678537081e-06 0.009208886655 -5.204422645e-06 -0.002120428681 -0.0007534910209 2.129185408e-07 -0.002623858433 -1.482879392e-06 0.003192941588 0.00555073498 -1.568504945e-06 -0.001576560183 -8.909964717e-07 -0.0003807662378 -0.005266583512 1.488210537e-06 -0.002287797933 1.292954058e-06 -0.001439385075 0.002886272578 -8.15591598e-07 -0.0005042551009 2.849808847e-07 -0.001532798975 --0.003553430073 1.004114349e-06 0.0002789805528 -1.57666476e-07 0.0009276181465 0.003446680075 --9.73949353e-07 0.0005281119563 -2.984636393e-07 -iw : 2 --0.2166445716 -0.4390462713 -0.2190656897 -0.01937537206 0.06560875675 0.03156065423 -0.005073610664 -0.01689642145 -0.004443530106 -0.002536876245 0.006161257553 -0.0008578566115 -0.002039674209 -0.06788932434 0.2589930202 5.885185507e-05 -0.1410558353 -0.2045231445 -0.0001222783944 -0.1066909135 -0.2600889127 9.248815245e-05 -0.03923412651 -0.146279537 -3.401125507e-05 0.008241291171 0.01812143042 -7.144205341e-06 0.01583199602 0.03612005244 --1.372443081e-05 0.008407192102 0.03475997673 -7.288021437e-06 -0.002112986497 -0.0102803765 -1.831704414e-06 -0.003358875717 -0.004256134335 2.911740083e-06 -0.002259584437 -0.0122876532 -1.958787145e-06 0.0009242169052 0.006898591031 -8.011845733e-07 0.0005032263472 -0.002615505597 --4.362365414e-07 0.000699307517 0.005982713236 -6.062152634e-07 -0.1902649189 0.06380431674 -2.033054293e-05 0.3060959613 -5.531064623e-05 -0.05817644198 -0.0664385382 4.62766241e-05 -0.04738159064 5.759419849e-05 0.03209593392 -0.1162383986 4.573244721e-05 -0.1083470091 -0.0001007646704 0.06012636228 -0.09002554884 2.613819598e-05 -0.1342939483 7.804129153e-05 -0.01861759379 -0.02197533465 5.343339456e-06 -0.03841049259 1.904996437e-05 -0.0001879477033 -0.009880301011 -4.555751273e-06 0.005580877271 -8.565029167e-06 -0.01485090198 0.01955063708 --5.204422645e-06 0.03172614183 -1.694804405e-05 -0.002237072682 0.004444500884 -1.482879392e-06 -0.005585317107 -3.852846149e-06 -0.001599171377 -0.001008713317 8.909964717e-07 0.001742026256 -8.744327698e-07 0.005370524997 -0.00580615634 1.292954058e-06 -0.01079352504 5.033237181e-06 --0.00115286387 3.948630146e-05 2.849808847e-07 0.001668075631 -3.422986034e-08 0.001767463895 --0.0006596347619 -1.57666476e-07 -0.002879459185 5.718237703e-07 -0.002527763539 0.002067505829 --2.984636393e-07 0.00472251124 -1.792278161e-06 -iw : 3 -6.121857434e-05 0.0001240639754 6.190272439e-05 5.475016732e-06 -1.853946546e-05 -8.918286033e-06 --1.433681025e-06 4.774524581e-06 1.25563533e-06 7.168605511e-07 -1.741024022e-06 2.424097606e-07 --5.763631473e-07 1.918389931e-05 5.885185507e-05 0.4672620635 3.985900535e-05 0.0001222783944 -0.2282041535 3.014830037e-05 9.248815245e-05 0.06721460237 1.108662577e-05 3.401125507e-05 --0.02591813888 -2.328791773e-06 -7.144205341e-06 -0.007160980992 -4.473743412e-06 -1.372443081e-05 --0.01244891914 -2.375671409e-06 -7.288021437e-06 0.008968618907 5.970794466e-07 1.831704414e-06 --0.003798213357 9.491379416e-07 2.911740083e-06 0.006048134254 6.385045181e-07 1.958787145e-06 --0.005355760833 -2.611615924e-07 -8.011845733e-07 0.004063303266 -1.421997298e-07 -4.362365414e-07 --0.004159289851 -1.976075786e-07 -6.062152634e-07 0.003837396443 5.376431541e-05 2.033054293e-05 -0.1357514579 0.0001488648904 0.4164547049 1.643927107e-05 4.62766241e-05 0.09732840203 -0.0001553550871 0.298581478 -9.069543271e-06 4.573244721e-05 0.04560277053 0.0001096804982 -0.1398989641 -1.69902719e-05 2.613819598e-05 0.002474119453 4.223779686e-05 0.007590037725 --5.260886718e-06 5.343339456e-06 -0.00306595285 5.538266556e-06 -0.009405648448 5.31095257e-08 --4.555751273e-06 -0.006241908872 -1.239898879e-05 -0.01914876169 4.196509703e-06 -5.204422645e-06 -0.001132863766 -7.000938951e-06 0.00347536927 6.321432346e-07 -1.482879392e-06 -0.0008032159814 --2.97086049e-06 -0.002464084582 4.518875828e-07 8.909964717e-07 0.002144407049 3.225629968e-06 -0.006578554799 -1.517581914e-06 1.292954058e-06 -0.001230560475 9.164976637e-07 -0.003775080631 -3.25771756e-07 2.849808847e-07 0.001047996503 1.345614971e-06 0.003215015744 -4.994430233e-07 --1.57666476e-07 -0.001217595868 -1.297351271e-06 -0.003735308154 7.142855181e-07 -2.984636393e-07 -0.001011281917 4.188500001e-07 0.003102383713 -ad : 3 3.113220902 -iw : 4 -0.4428701209 -0.03839082206 -0.05577959709 -0.006284853633 0.02570187386 -0.01177410487 -0.003973596527 -0.006141065071 0.007694783566 -0.0060833825 0.004691343844 -0.00455560106 -0.004428399448 0.4188992115 0.3604264917 0.0007558735513 0.04772320976 0.04106168882 -8.611310561e-05 -0.04303864864 -0.03703102969 -7.76601514e-05 -0.02394968313 -0.02060662811 --4.321548368e-05 0.02424098149 0.02085726512 4.374111065e-05 -0.007061572025 -0.006075871144 --1.274209972e-05 0.003605932894 0.003102592956 6.506647012e-06 -0.00746792643 -0.006425503916 --1.347533707e-05 0.008032005334 0.00691084496 1.449317695e-05 -0.00567914087 -0.004886408863 --1.024760195e-05 0.004445204578 0.003824713552 8.021052506e-06 -0.004674639705 -0.004022122609 --8.435051722e-06 0.004670674832 0.004018711178 8.427897392e-06 0.1605248559 0.3798200881 -0.0007965451082 0.1634004267 0.000685358079 0.04877219623 0.11540057 0.0002420139492 -0.04964587962 0.0002082320431 -0.009327211466 -0.02206924442 -4.628283031e-05 -0.009494294977 --3.982236705e-05 -0.01579227576 -0.03736632273 -7.836331599e-05 -0.01607517156 -6.742484657e-05 -0.007279574323 0.01722430178 3.612218982e-05 0.007409977374 3.10800159e-05 -0.0003157097981 --0.0007470053325 -1.566592874e-06 -0.0003213652828 -1.347917489e-06 0.001833486767 0.004338238472 -9.097998607e-06 0.001866331033 7.828039848e-06 -0.003601000451 -0.008520377115 -1.786863024e-05 --0.003665507169 -1.537440876e-05 0.002756765285 0.006522820579 1.367942609e-05 0.00280614875 -1.176996141e-05 -0.00179655022 -0.004250842394 -8.914714679e-06 -0.00182873282 -7.670339902e-06 -0.001782869964 0.00421847335 8.846831477e-06 0.001814807502 7.611932286e-06 -0.001841412413 --0.004356991453 -9.137326688e-06 -0.001874398655 -7.861878256e-06 0.001640473173 0.00388154633 -8.140240176e-06 0.001669859879 7.003971667e-06 -ad : 4 0 -iw : 5 -0.7032204055 0.5544559883 0.363270429 0.1985231277 0.1293770322 0.07072134775 -0.0546083141 0.0295329376 0.02595975093 0.0128918805 0.01275414576 0.005221808601 -0.006204537017 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 -iat : 3 -ad : 0 3.245352337 -iw : 7 -0.42409731 -0.06145360706 -0.04758850158 0.000244748855 0.02344053272 -0.01484646808 -0.006020522813 -0.005669136938 0.007274863156 -0.006831153234 0.005479247774 -0.004702728997 -0.004480140553 0.002014708519 -0.004276278552 -0.547014067 0.000102026222 -0.0002165536805 --0.02770116775 -0.0002157538664 0.0004579439769 0.05857939192 -7.953899677e-05 0.0001688238784 -0.02159565501 0.0001246586652 -0.0002645917121 -0.03384610866 -5.348445899e-05 0.0001135223496 -0.01452158025 2.059494766e-05 -4.371338689e-05 -0.005591739934 -3.231435392e-05 6.858817407e-05 -0.008773679167 4.06044834e-05 -8.618421964e-05 -0.01102453452 -3.239536377e-05 6.876011987e-05 -0.008795674174 2.431045429e-05 -5.159965985e-05 -0.006600538166 -2.365608541e-05 5.021074251e-05 -0.006422870291 2.371840456e-05 -5.034301676e-05 -0.006439790582 -0.2267874823 -2.261914395e-05 --0.002893401301 -0.3927700887 0.006141330028 -0.05184765311 -5.171138713e-06 -0.0006614830124 --0.08979422986 0.001404017302 0.01840493561 1.835656377e-06 0.0002348139505 0.0318752522 --0.0004983995704 0.01788372953 1.783672752e-06 0.0002281642962 0.03097258263 -0.0004842854821 --0.012904096 -1.287018146e-06 -0.0001646331084 -0.02234842452 0.0003494386527 0.002933600232 -2.925890145e-07 3.742747457e-05 0.005080661471 -7.944092423e-05 -0.002072276864 -2.066830507e-07 --2.643853406e-05 -0.003588947501 5.611657224e-05 0.004340503416 4.329095707e-07 5.53770345e-05 -0.007517257543 -0.0001175393972 -0.004513378264 -4.501516205e-07 -5.758260733e-05 -0.007816657089 -0.000122220791 0.003313770327 3.305061078e-07 4.227776277e-05 0.005739072776 -8.973580471e-05 --0.002588498263 -2.581695173e-07 -3.302459274e-05 -0.004482984167 7.009567703e-05 0.002552473329 -2.54576492e-07 3.256497923e-05 0.004420593085 -6.912013373e-05 -0.002610464226 -2.603603405e-07 --3.330483901e-05 -0.004521026713 7.069050804e-05 -ad : 1 2.003222249 -iw : 0 -0.6091226201 0.2416206373 0.006622334526 -0.02503134086 0.005805385013 -0.004530922541 --0.001167955462 -0.007114098313 0.003129813608 -0.001414342746 0.003243359897 -0.002319688649 -0.001990525168 0.1804061432 -0.2433239673 -0.4359406019 0.1075886625 -0.1451109133 --0.2599815364 0.02429540086 -0.03276858104 -0.05870837592 -0.0027809228 0.003750787842 -0.006719932802 0.004102305124 -0.005533010907 -0.009912973769 0.001488695243 -0.00200788746 --0.003597342579 0.0008841451634 -0.00119249658 -0.002136483647 -0.003013811149 0.004064897528 -0.007282693501 -1.687815233e-05 2.27645185e-05 4.078504066e-05 -0.0008318043204 0.001121901526 -0.002010005146 0.0011329643 -0.00152809302 -0.002737740134 -0.0006343272355 0.0008555530137 -0.001532813639 0.0006936148342 -0.0009355175508 -0.001676078558 -0.09607879976 -0.07933481133 --0.1421366986 -0.1182307214 0.1917078033 -0.0703075197 -0.05805478238 -0.1040112779 --0.08651761675 0.1402858923 -0.02142460188 -0.01769086159 -0.0316950481 -0.02636425665 -0.04274890373 0.001139308271 0.0009407570348 0.001685465647 0.00140198711 -0.002273282831 --0.002874338839 -0.002373417758 -0.004252228736 -0.00353704621 0.00573522136 -0.003534442137 --0.002918482546 -0.005228769907 -0.00434934288 0.007052337661 -0.00287094855 -0.002370618306 --0.004247213223 -0.003532874255 0.005728456654 0.001283262157 0.001059623573 0.001898427613 -0.001579130994 -0.002560516678 0.0005427257044 0.0004481429979 0.0008028955406 0.0006678565065 --0.001082910619 0.0009981043652 0.000824161227 0.001476571936 0.001228227241 -0.00199153607 --0.000567784108 -0.0004688343859 -0.0008399663489 -0.000698692374 0.001132910115 0.0003505901037 -0.0002894915403 0.000518654688 0.0004314221346 -0.0006995389077 -0.0004366660337 -0.0003605667169 --0.0006459933781 -0.0005373437252 0.0008712878001 -iw : 1 --0.0748141676 -0.1572368588 -0.08779261852 -0.01648069106 0.01995875927 0.01347243525 -0.004857016494 -0.004719575711 -0.002340934068 -0.001921488494 0.00173688715 -2.311987595e-05 -0.0009831329404 0.4531434376 0.03322142051 0.05951968568 0.19742096 0.07150887084 -0.1281156992 0.04141777217 0.05838393165 0.1046009836 -0.03799405852 0.02587623411 -0.04636000802 -0.007685126757 -0.0002489221942 -0.0004459704171 -0.009297722088 -0.007545616454 --0.0135187693 0.01165830936 -0.005736625048 -0.01027777002 -0.003416734405 -0.0003553466893 --0.000636641147 0.005507504588 0.001394881504 0.002499077626 -0.006104372613 0.00159179242 -0.002851864341 0.003987274802 1.488821839e-06 2.667381664e-06 -0.004113152348 -0.000154480223 --0.0002767676449 0.004054885937 -0.0004691745314 -0.0008405757554 0.1829235997 -0.1845597404 --0.3306582793 0.01796388207 -0.02912793162 0.1621131843 -0.1207692007 -0.216370786 -0.04233258384 -0.06864109902 0.1016318587 -0.04658218223 -0.08345690228 0.04451830278 --0.07218518105 0.03251873554 0.008316316301 0.01489955952 0.02857631985 -0.04633570225 -0.00536591855 0.008481550828 0.01519559464 0.009103212273 -0.01476060373 -0.01017760637 -0.008202732681 0.01469606246 -0.002274558267 0.003688132522 -0.003988077831 -0.003628912059 --0.006501579457 -0.005114855124 0.008293594323 -0.003576370845 -6.369741916e-05 -0.000114120658 --0.002617601901 0.004244368167 0.002698299399 -0.003144884256 -0.005634392497 4.249052206e-06 --6.889719141e-06 -0.0002569806847 0.002176257499 0.003898995297 0.001157919009 -0.001877533241 -0.001883400055 -0.001184507894 -0.002122171071 0.0006267102162 -0.001016193062 -0.00140272195 -0.001789783827 0.003206586871 9.339691988e-05 -0.0001514404896 0.000954942066 -0.001517213446 --0.002718248227 -0.0002479817745 0.0004020955016 -iw : 2 -0.1009060986 0.2120742432 0.1184108693 0.02222844001 -0.0269195073 -0.01817103529 --0.00655093281 0.006365558654 0.003157350157 0.002591620193 -0.002342637921 3.118308413e-05 --0.001326006993 0.03322142051 0.4329669758 -0.08027756593 0.07150887084 0.1539912699 --0.1727968884 0.05838393165 0.005959289457 -0.1410812617 0.02587623411 -0.05370954691 --0.06252836447 -0.0002489221942 -0.007533948118 0.0006015055212 -0.007545616454 -0.004715020939 -0.01823352864 -0.005736625048 0.0151423505 0.01386220964 -0.0003553466893 -0.003200920668 -0.0008586739171 0.001394881504 0.004660347154 -0.003370647317 0.00159179242 -0.007071120525 --0.00384647071 1.488821839e-06 0.003986370592 -3.597648491e-06 -0.000154480223 -0.004019331426 -0.0003732921739 -0.0004691745314 0.004339831067 0.001133732056 0.09382570299 0.1295161235 --0.02912793162 -0.2208427124 -0.312967928 0.03972759791 0.07228931634 -0.06864109902 --0.2062714294 -0.1746827881 -0.004653183531 0.0163945591 -0.07218518105 -0.1364990679 --0.03961646669 -0.02505173079 -0.01781163941 -0.04633570225 -0.04940137563 0.0430407561 --0.01134771964 -0.009998260249 -0.01476060373 -0.009904875567 0.02416019496 -0.003124008541 --0.005154747797 0.003688132522 0.01279682506 0.01245613823 0.005719740716 0.004775021384 -0.008293594323 0.006701936486 -0.01153855218 0.001891711305 0.001113979745 0.004244368167 -0.005223265385 -0.002691865099 0.001812688727 0.002329959935 -6.889719141e-06 -0.003153466379 --0.005630208144 -0.002077009771 -0.002085416244 -0.001877533241 -0.0001624765648 0.005039283011 -0.0002397644616 0.0006228185482 -0.001016193062 -0.002450320545 -0.001505003588 -0.001099516902 --0.001365050158 -0.0001514404896 0.001601143209 0.003298561663 0.001051693223 0.001225958097 -0.0004020955016 -0.001016346443 -0.002962454056 -iw : 3 -0.1807839394 0.3799534187 0.212145586 0.03982459939 -0.04822914218 -0.03255533005 --0.01173668843 0.01140457104 0.005656726475 0.004643161458 -0.004197083406 5.586779065e-05 --0.002375681661 0.05951968568 -0.08027756593 0.3339488413 0.1281156992 -0.1727968884 --0.05914455904 0.1046009836 -0.1410812617 -0.1680569902 0.04636000802 -0.06252836447 --0.1308349796 -0.0004459704171 0.0006015055212 -0.00679202285 -0.0135187693 0.01823352864 -0.01777507293 -0.01027777002 0.01386220964 0.03224065342 -0.000636641147 0.0008586739171 --0.002141791776 0.002499077626 -0.003370647317 0.0005028318405 0.002851864341 -0.00384647071 --0.01181553884 2.667381664e-06 -3.597648491e-06 0.003981933083 -0.0002767676449 0.0003732921739 --0.003558895259 -0.0008405757554 0.001133732056 0.005738229636 0.1680986624 -0.02912793162 -0.09358835936 0.3088457753 -0.1262279127 0.07117619008 -0.06864109902 -0.01237585135 -0.1649687755 0.01669201057 -0.008336670045 -0.07218518105 -0.07264204646 0.0294008995 -0.09797643598 -0.04488282318 -0.04633570225 -0.07496427911 -0.04959813356 0.1011085625 --0.02033063896 -0.01476060373 -0.02820468479 -0.02624909931 0.03804125336 -0.005596991446 -0.003688132522 -0.0006056312639 -0.01193419779 0.0008168491341 0.01024751996 0.008293594323 -0.01500473163 0.0127122525 -0.02023773007 0.003389200718 0.004244368167 0.006349183547 -0.0032925234 -0.008563502897 0.003247623419 -6.889719141e-06 0.002321461831 0.005629233118 --0.00313108685 -0.003721182503 -0.001877533241 -0.004401254262 -0.005304989444 0.005936220514 -0.0004295633713 -0.001016193062 -0.0006306018842 0.001361193067 0.0008505284219 -0.001969900728 --0.0001514404896 -0.001551843998 -0.003319993354 0.002093059757 0.001884219552 0.0004020955016 -0.001721921645 0.003019358168 -0.002322453098 -ad : 2 3.03052076 -iw : 4 -0.4544973851 -0.02282075324 -0.0595755442 -0.01104896757 0.02637575687 -0.009515616617 -0.003128002291 -0.006672491428 0.007755239332 -0.005500733502 0.004312909888 -0.004542729707 -0.004380642523 0.4375309294 -0.1619911482 -0.3003130379 0.06725586529 -0.02490076498 --0.04616316667 -0.04196384973 0.01553666666 0.02880320075 -0.02978024819 0.01102581846 -0.02044060477 0.02326131454 -0.008612252981 -0.01596613076 -0.004840407976 0.001792109296 -0.003322365405 0.004000596116 -0.001481177935 -0.002745934269 -0.008346725543 0.003090285883 -0.005729036133 0.007776636907 -0.002879216661 -0.005337737967 -0.005241565967 0.001940633753 -0.003597712739 0.004514346959 -0.001671388691 -0.003098563228 -0.00479342684 0.001774715033 -0.003290118433 0.004597701149 -0.001702249689 -0.003155775984 0.1886067135 -0.1738010277 --0.322207202 -0.07840450924 0.1192937713 0.06623400954 -0.06103461915 -0.1131511943 --0.02753372304 0.04189301981 -0.007268546116 0.006697962981 0.01241725633 0.003021561537 --0.004597356381 -0.02050312769 0.01889362578 0.03502661852 0.008523226106 -0.01296823098 -0.006739103281 -0.006210081573 -0.01151278007 -0.00280147019 0.004262483718 0.0006361118915 --0.0005861769098 -0.001086704863 -0.0002644340689 0.0004023408556 0.002713887224 -0.002500846231 --0.004636282519 -0.001128172969 0.001716534028 -0.004494974443 0.004142117549 0.007679011586 -0.001868577521 -0.00284307193 0.002783432026 -0.002564931744 -0.004755089722 -0.001157083 -0.001760521125 -0.001786880929 0.001646610219 0.00305262678 0.0007428130193 -0.001130202424 -0.002151288853 -0.001982412007 -0.003675164839 -0.0008942987425 0.001360690484 -0.002194379617 -0.002022120134 0.003748779158 0.000912211733 -0.001387945399 0.001768438149 -0.001629615204 --0.003021119966 -0.0007351462874 0.001118537364 -ad : 3 3.347258395 -iw : 5 -0.4094881472 -0.07764414863 -0.03974262227 0.004141344336 0.0209549886 -0.01658380301 -0.007963720818 -0.005749597484 0.00686815368 -0.0071769444 0.006098418188 -0.004971614259 -0.00459664179 0.004819005802 -0.4712682185 -0.2658449454 1.078693209e-05 -0.001054893577 --0.0005950711597 -0.0005059517458 0.04947887338 0.0279112995 -0.0001274670847 0.01246547284 -0.007031840501 0.0002992177642 -0.02926160052 -0.01650662677 -0.0001621981216 0.01586194808 -0.008947810512 6.488388004e-05 -0.006345232151 -0.0035793797 -7.423496682e-05 0.00725970916 -0.004095241116 9.64515744e-05 -0.009432352544 -0.005320840974 -8.530099173e-05 0.008341896245 -0.004705708691 6.682288294e-05 -0.006534854344 -0.003686346602 -6.054416888e-05 0.005920835911 -0.00333997549 5.822994263e-05 -0.005694519254 -0.003212309043 -0.2296499075 -0.006172042133 --0.003481682276 0.2057581737 0.3404864553 -0.03930855048 -0.001056451676 -0.000595950092 -0.03521906735 0.05828014111 0.02114635893 0.0005683268925 0.0003205962672 -0.01894638775 --0.03135228258 0.01435850758 0.0003858974501 0.0002176868342 -0.01286471363 -0.02128839241 --0.01430383375 -0.0003844280431 -0.0002168579338 0.01281572782 0.0212073312 0.005125607483 -0.0001377551844 7.770844292e-05 -0.004592362551 -0.007599393103 -0.002246646689 -6.038059485e-05 --3.406101941e-05 0.002012915767 0.003330951776 0.003827295171 0.0001028619054 5.802495593e-05 --0.003429120757 -0.005674472854 -0.004785839255 -0.000128623616 -7.255727595e-05 0.004287942266 -0.007095641628 0.003935441108 0.000105768422 5.966453766e-05 -0.003526015682 -0.005834813554 --0.002865980427 -7.702573078e-05 -4.345063042e-05 0.002567816835 0.00424919621 0.00265773067 -7.142883641e-05 4.02933921e-05 -0.002381232437 -0.003940438317 -0.002820201797 -7.579539005e-05 --4.275658858e-05 0.002526800806 0.004181323317 -ad : 4 0 -iw : 6 -0.7032204055 0.5544559883 0.363270429 0.1985231277 0.1293770322 0.07072134775 -0.0546083141 0.0295329376 0.02595975093 0.0128918805 0.01275414576 0.005221808601 -0.006204537017 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 -iat : 4 -ad : 0 3.245352337 -iw : 6 -0.42409731 -0.06145360706 -0.04758850158 0.000244748855 0.02344053272 -0.01484646808 -0.006020522813 -0.005669136938 0.007274863156 -0.006831153234 0.005479247774 -0.004702728997 -0.004480140553 -0.002014708519 0.004276278552 0.547014067 -0.000102026222 0.0002165536805 -0.02770116775 0.0002157538664 -0.0004579439769 -0.05857939192 7.953899677e-05 -0.0001688238784 --0.02159565501 -0.0001246586652 0.0002645917121 0.03384610866 5.348445899e-05 -0.0001135223496 --0.01452158025 -2.059494766e-05 4.371338689e-05 0.005591739934 3.231435392e-05 -6.858817407e-05 --0.008773679167 -4.06044834e-05 8.618421964e-05 0.01102453452 3.239536377e-05 -6.876011987e-05 --0.008795674174 -2.431045429e-05 5.159965985e-05 0.006600538166 2.365608541e-05 -5.021074251e-05 --0.006422870291 -2.371840456e-05 5.034301676e-05 0.006439790582 -0.2267874823 -2.261914395e-05 --0.002893401301 -0.3927700887 0.006141330028 -0.05184765311 -5.171138713e-06 -0.0006614830124 --0.08979422986 0.001404017302 0.01840493561 1.835656377e-06 0.0002348139505 0.0318752522 --0.0004983995704 0.01788372953 1.783672752e-06 0.0002281642962 0.03097258263 -0.0004842854821 --0.012904096 -1.287018146e-06 -0.0001646331084 -0.02234842452 0.0003494386527 0.002933600232 -2.925890145e-07 3.742747457e-05 0.005080661471 -7.944092423e-05 -0.002072276864 -2.066830507e-07 --2.643853406e-05 -0.003588947501 5.611657224e-05 0.004340503416 4.329095707e-07 5.53770345e-05 -0.007517257543 -0.0001175393972 -0.004513378264 -4.501516205e-07 -5.758260733e-05 -0.007816657089 -0.000122220791 0.003313770327 3.305061078e-07 4.227776277e-05 0.005739072776 -8.973580471e-05 --0.002588498263 -2.581695173e-07 -3.302459274e-05 -0.004482984167 7.009567703e-05 0.002552473329 -2.54576492e-07 3.256497923e-05 0.004420593085 -6.912013373e-05 -0.002610464226 -2.603603405e-07 --3.330483901e-05 -0.004521026713 7.069050804e-05 -ad : 1 1.950638213 -iw : 0 -0.6151578218 0.2563762461 0.01430294219 -0.0240433331 0.005728253865 -0.003403419439 --0.0007520211535 -0.007518590258 0.002354958447 -0.001568752394 0.003294153623 -0.0021315164 -0.001967381423 0.1793847521 -0.2394658611 0.4291664613 0.1105615751 -0.1475918242 -0.2645114449 0.02692142536 -0.03593818444 0.06440777559 -0.002189284785 0.002922539179 --0.005237722789 0.003964012822 -0.005291674642 0.00948364527 0.002014616508 -0.002689369477 -0.004819840192 0.001461914003 -0.001951551018 0.00349753506 -0.002797131313 0.00373397098 --0.006691956444 -0.0002487988733 0.0003321287665 -0.000595235274 -0.000999370374 0.001334088234 --0.002390929229 0.001051364857 -0.001403497164 0.002515322679 -0.0005785464661 0.0007723183051 --0.001384135144 0.0006838232536 -0.0009128553144 0.001636003075 -0.0915139112 -0.07686289839 -0.1377523208 -0.1134785299 -0.183889532 -0.06884173713 -0.05782044912 0.1036247815 --0.08536471694 -0.1383316991 -0.02193623755 -0.01842433326 0.0330197627 -0.02720124139 --0.04407903023 0.001059129512 0.000889567094 -0.00159426634 0.001313335409 0.002128231956 --0.00219389393 -0.001842660247 0.003302382953 -0.002720459159 -0.004408445915 -0.003487855072 --0.002929463362 0.005250132186 -0.004324989074 -0.007008552345 -0.003326070011 -0.002793579445 -0.005006603445 -0.004124373335 -0.006683458829 0.0007502639 0.0006301496369 -0.001129342983 -0.00093033773 0.001507592405 0.0004859764264 0.0004081735355 -0.0007315213579 0.0006026175662 -0.0009765288846 0.001077522251 0.0009050152292 -0.001621952213 0.001336142663 0.002165190625 --0.0004394998708 -0.0003691376914 0.0006615620116 -0.0005449859871 -0.0008831381426 0.0003360330245 -0.0002822354752 -0.0005058174039 0.0004166856505 0.0006752301898 -0.0004120463668 -0.0003460793841 -0.0006202373229 -0.0005109432581 -0.0008279726281 -iw : 1 --0.07399475353 -0.1584513537 -0.09341126491 -0.02205139494 0.01761024086 0.01429846869 -0.006542323477 -0.00373835393 -0.002494514242 -0.002461801893 0.001367800747 9.649781653e-06 -0.001118250055 0.4593331714 0.03202669103 -0.05739766661 0.2099070215 0.07020114729 --0.1258132488 0.05013956528 0.0595374116 -0.1067018912 -0.03565082728 0.0286810231 --0.05140161998 -0.009332433972 0.002168978365 -0.003887204487 -0.01103337273 -0.006783069 -0.01215649574 0.01105961974 -0.006242510908 0.01118771713 -0.002920792556 -0.001189421052 -0.002131659276 0.005987057789 0.001016371435 -0.001821522827 -0.005906082321 0.001684879451 --0.003019611014 0.003810192549 0.0002689649285 -0.0004820341658 -0.004223566036 -2.683152436e-05 -4.808698121e-05 0.003983057092 -0.0004766318576 0.0008542111463 0.1812802154 -0.1823834353 -0.3268643521 0.01689275736 0.02737435221 0.1635900188 -0.1238903557 0.2220340941 -0.04052634397 0.06567207413 0.1055762919 -0.05127516934 0.09189444742 0.04397215869 -0.07125594322 0.03702709046 0.005211588025 -0.009340115457 0.0298313325 0.04834103665 -0.008318327272 0.008315350059 -0.01490262263 0.01114033554 0.01805267562 -0.009067773825 -0.009127127294 -0.01635747536 -0.0008423981692 -0.001365088226 -0.004369523784 -0.002695358551 -0.004830573704 -0.004812783074 -0.007799012095 -0.004303752624 -2.020129318e-05 3.62043987e-05 --0.003103593287 -0.005029306581 0.002177467237 -0.003385478291 0.00606739404 -0.0005393397252 --0.000873988496 -0.0002672955852 0.0018459549 -0.003308287573 0.0009548293275 0.001547280515 -0.002031993448 -0.001167755377 0.002092830438 0.0007339467967 0.001189345095 -0.001232643691 -0.001819642216 -0.003261130448 0.0002451497187 0.0003972598789 0.0009613945941 -0.001403515811 -0.002515356098 -0.0001814462605 -0.0002940297866 -iw : 2 -0.09877772311 0.211521266 0.1246973822 0.02943704086 -0.02350841665 -0.01908743679 --0.008733535636 0.004990436102 0.003329998755 0.0032863301 -0.001825916528 -1.288177086e-05 --0.001492784138 0.03202669103 0.4405711324 0.07662179477 0.07020114729 0.1687814285 -0.1679517218 0.0595374116 0.01526105614 0.1424394212 0.0286810231 -0.05245289004 -0.0686174998 0.002168978365 -0.0106030759 0.005189140988 -0.006783069 -0.007059680759 --0.01622805554 -0.006242510908 0.01471663922 -0.01493480513 -0.001189421052 -0.002223999869 --0.002845613231 0.001016371435 0.005391641908 0.002431603173 0.001684879451 -0.006893126966 -0.004030965527 0.0002689649285 0.003652626147 0.0006434812617 -2.683152436e-05 -0.004207847456 --6.419269324e-05 -0.0004766318576 0.00426227999 -0.001140311009 0.09371940782 0.129921062 -0.02737435221 -0.2163761063 0.3108277699 0.0437479632 0.07672588894 0.06567207413 --0.205440019 0.1835617458 -0.0005384855796 0.02096229013 0.07125594322 -0.1397587182 -0.05015092851 -0.02345781774 -0.01574107483 0.04834103665 -0.05481689921 -0.03765950731 --0.01243739318 -0.01064953772 0.01805267562 -0.01410193519 -0.02547833283 -0.004692098796 --0.006502901329 -0.001365088226 0.01082225398 -0.01555777244 0.004855252563 0.003928812438 --0.007799012095 0.006989226854 0.009399430619 0.002139127269 0.001246636853 -0.005029306581 -0.00622504471 0.002982498348 0.002324315643 0.002750083852 -0.000873988496 -0.002300184907 -0.006579398424 -0.001720282941 -0.00176168728 0.001547280515 -7.541284643e-05 -0.004214723311 -0.0001710949755 0.0005835401654 0.001189345095 -0.002644649375 0.001396082247 -0.001218617173 --0.001460375901 0.0003972598789 0.001326336502 -0.003493855249 0.0009346987691 0.001123376595 --0.0002940297866 -0.00103839821 0.002687606122 -iw : 3 --0.1770276803 -0.3790846546 -0.2234804327 -0.05275654159 0.04213136661 0.03420816507 -0.01565208739 -0.008943770911 -0.005967964601 -0.005889702413 0.003272375158 2.308648086e-05 -0.002675341207 -0.05739766661 0.07662179477 0.3460042636 -0.1258132488 0.1679517218 --0.03850513388 -0.1067018912 0.1424394212 -0.1605381417 -0.05140161998 0.0686174998 --0.1371408319 -0.003887204487 0.005189140988 -0.01700753063 0.01215649574 -0.01622805554 -0.01296903829 0.01118771713 -0.01493480513 0.03314922439 0.002131659276 -0.002845613231 -0.001288065257 -0.001821522827 0.002431603173 0.002390549347 -0.003019611014 0.004030965527 --0.01186815776 -0.0004820341658 0.0006434812617 0.002858439477 4.808698121e-05 -6.419269324e-05 --0.004128620625 0.0008542111463 -0.001140311009 0.005669655554 -0.1679622575 0.02737435221 -0.09613554732 -0.3069557459 -0.1283341051 -0.07840432233 0.06567207413 -0.004326799004 --0.1742726181 0.005775968343 0.0009650642879 0.07125594322 -0.06698202724 -0.04007197854 -0.08941623324 0.04204068416 0.04834103665 -0.07540373982 0.04449720909 0.1006586194 -0.02229007507 0.01805267562 -0.03293020881 0.02803183232 0.04395948216 0.008409096092 --0.001365088226 -0.00481810499 0.0153646846 0.006431826824 -0.008701497375 -0.007799012095 -0.01355437859 -0.01050257864 -0.01809412953 -0.003833705884 -0.005029306581 0.007453823428 --0.003693879423 -0.009950323117 -0.004165597197 -0.000873988496 0.003828763302 -0.006703021604 --0.005111126171 0.003083060521 0.001547280515 -0.003671345935 0.004433581727 0.004900985204 --0.0003066333751 0.001189345095 -0.000884353428 -0.001227852775 0.001180548807 0.002183984045 -0.0003972598789 -0.001950675338 0.003550046527 0.002604012572 -0.001675150526 -0.0002940297866 -0.001486269116 -0.002729195797 -0.001984063358 -ad : 2 2.994710688 -iw : 4 -0.4594981533 -0.01581957458 -0.06086770012 -0.01323467917 0.02646126145 -0.008491043205 -0.002889453475 -0.006932681674 0.007712608083 -0.005239235756 0.004192541899 -0.004543412143 -0.004342856059 0.4410737007 -0.1594176829 0.2977198859 0.07540936811 -0.02725527891 -0.05090049223 -0.04056503049 0.01466145716 -0.02738094843 -0.03202750507 0.01157573131 --0.02161821288 0.0223270074 -0.008069671304 0.01507048388 -0.003848124113 0.001390831121 --0.002597441358 0.004288176114 -0.00154987953 0.002894471608 -0.008628421754 0.003118578598 --0.005824089572 0.007494486488 -0.002708739307 0.005058695766 -0.005006754668 0.001809596053 --0.003379504211 0.004555180237 -0.001646383082 0.003074696448 -0.004796453758 0.001733586797 --0.003237553414 0.004486264404 -0.001621474767 0.00302817902 0.1926068516 -0.1705739652 -0.3185547584 -0.0766851208 -0.1151355462 0.07159468102 -0.06340474665 0.1184112929 --0.02850494008 -0.04279750507 -0.005555019405 0.004919563759 -0.009187512542 0.002211693565 -0.003320651308 -0.02167816584 0.0191983342 -0.03585377584 0.008631015733 0.01295866396 -0.00598573172 -0.005301005575 0.009899872753 -0.002383178772 -0.00357812033 0.0009960892638 --0.0008821435687 0.001647443859 -0.000396586232 -0.0005954371849 0.00307200489 -0.002720588862 -0.005080825357 -0.001223098058 -0.001836367492 -0.004652784398 0.004120538171 -0.007695295352 -0.001852474773 0.002781317844 0.002621947518 -0.002322014928 0.004336470127 -0.001043910746 --0.001567334481 -0.001718372027 0.001521802199 -0.002842035895 0.0006841582496 0.001027199709 -0.00223381152 -0.001978278993 0.003694527392 -0.0008893770126 -0.001335316514 -0.002242301111 -0.001985797434 -0.003708568427 0.0008927570861 0.001340391378 0.001741468123 -0.001542256262 -0.002880234802 -0.0006933538047 -0.001041005976 -ad : 3 3.303653192 -iw : 5 -0.4157510976 -0.07089048239 -0.04324544756 0.002607725563 0.02207948738 -0.01591628265 -0.007109280195 -0.005663063326 0.007037898695 -0.007055437311 0.005841495253 -0.004839366207 -0.004533511081 0.002939565203 -0.475702526 0.2634907806 6.730429593e-05 -0.01089168682 -0.006032885901 -0.0003129544723 0.05064464392 -0.02805197792 -9.378951608e-05 0.01517772413 --0.00840691432 0.0001831075376 -0.02963183742 0.01641302189 -9.023619531e-05 0.01460269907 --0.008088408963 3.492320691e-05 -0.005651535718 0.003130375553 -4.57544333e-05 0.007404326148 --0.004101243045 5.922728953e-05 -0.009584604964 0.005308895592 -5.014013418e-05 0.008114053213 --0.0044943596 3.834132884e-05 -0.006204681889 0.00343676223 -3.576562087e-05 0.005787861474 --0.003205886146 3.513078294e-05 -0.005685127232 0.003148981832 -0.2285449579 -0.003743907313 -0.002073743582 0.209992595 -0.3355887664 -0.04472134174 -0.0007326022849 0.0004057870988 -0.04109104262 -0.06566751698 0.02014158572 0.0003299492177 -0.0001827582831 -0.01850657259 -0.02957531842 0.01589965069 0.0002604599946 -0.0001442683264 -0.01460898083 0.02334658446 --0.01379582197 -0.000225996142 0.0001251788599 0.01267593249 -0.02025738358 0.004177306144 -6.843050558e-05 -3.790353497e-05 -0.003838209188 0.006133834797 -0.002112655302 -3.460844513e-05 -1.916955602e-05 0.00194115842 -0.003102161575 0.004035354853 6.610513171e-05 -3.661551453e-05 --0.003707780934 0.005925397652 -0.004699167309 -7.697936989e-05 4.263873566e-05 0.004317707758 --0.006900120548 0.003681489757 6.030829359e-05 -3.340465624e-05 -0.003382641187 0.00540579244 --0.002728109721 -4.469050652e-05 2.475399184e-05 0.002506652717 -0.004005876935 0.002597198359 -4.254598315e-05 -2.356614417e-05 -0.002386368215 0.003813650501 -0.002737835626 -4.484983137e-05 -2.484224159e-05 0.002515589113 -0.004020158172 -ad : 4 0 -iw : 7 -0.7032204055 0.5544559883 0.363270429 0.1985231277 0.1293770322 0.07072134775 -0.0546083141 0.0295329376 0.02595975093 0.0128918805 0.01275414576 0.005221808601 -0.006204537017 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 diff --git a/tests/09_DeePKS/100_NO_GO_deepks_UT/stress_delta_ref.dat b/tests/09_DeePKS/100_NO_GO_deepks_UT/stress_delta_ref.dat deleted file mode 100644 index 2b5788faf9..0000000000 --- a/tests/09_DeePKS/100_NO_GO_deepks_UT/stress_delta_ref.dat +++ /dev/null @@ -1,3 +0,0 @@ --1.010888635e-07 -1.423154024e-10 -9.8554036e-10 --1.423154024e-10 -1.123645684e-07 2.628373004e-11 --9.8554036e-10 2.628373004e-11 -1.154997178e-07 diff --git a/tests/09_DeePKS/100_NO_GO_deepks_UT/vdpre_ref.dat b/tests/09_DeePKS/100_NO_GO_deepks_UT/vdpre_ref.dat deleted file mode 100644 index b2e6d5832f..0000000000 --- a/tests/09_DeePKS/100_NO_GO_deepks_UT/vdpre_ref.dat +++ /dev/null @@ -1,320 +0,0 @@ -0.5369422513 0.361355308 0.08806486249 0.007772916604 8.788509417e-07 0.001604132141 0.001646040214 0.001417420272 0.0005874826666 0.000323393403 6.739768939e-05 3.730466906e-05 7.821295808e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.4111961024 0.1045932971 0.002938612415 0.0002585986251 2.803941655e-05 2.824310234e-06 1.223806671e-05 4.648947686e-05 2.426817232e-07 1.050701256e-05 6.649769568e-06 2.428960115e-06 3.897510767e-06 4.499533096e-05 7.651803104e-05 0.2324928602 0.005546926526 0.001719066082 0.1078198088 5.003549893e-08 4.376328718e-08 0.01167948385 1.760546042e-10 3.523296964e-11 7.781550349e-06 2.887072939e-12 4.241473859e-11 5.182906798e-05 4.054744646e-05 1.849758353e-05 2.207546682e-05 3.750593258e-10 4.825684639e-10 0.0001375892133 1.659328204e-08 3.036800169e-09 2.734979601e-06 1.701774627e-10 4.630856027e-10 4.567875977e-07 1.430858611e-08 6.740791277e-08 1.949299199e-05 1.394510305e-06 9.035759123e-11 1.54664256e-09 1.835300388e-10 5.242770594e-10 2.454176723e-06 1.293535445e-08 3.840644273e-08 2.882368895e-06 1.286359447e-10 2.759626626e-07 0.0530805995 2.631765605e-07 6.296496047e-07 3.069307815e-08 1.038788118e-06 0.0374986799 8.141996781e-05 1.835681971e-05 1.34710367e-11 2.505653681e-07 0.005395846684 1.550895126e-06 4.412790785e-07 1.019109413e-12 1.411094982e-10 8.873487342e-12 2.99420732e-11 5.809188105e-06 1.989469246e-14 1.904845815e-10 4.683580031e-10 1.628676596e-09 1.863940089e-05 9.524748335e-15 3.240423092e-10 4.505158859e-10 3.275146042e-09 2.354704573e-05 4.200797305e-11 8.54540284e-08 2.89900501e-09 4.032855794e-09 0.0001613157087 1.262648455e-11 1.832167935e-10 2.543252663e-05 7.304982532e-09 1.206128628e-09 4.828168325e-15 2.325443253e-11 5.436150566e-10 2.411669877e-09 3.828786289e-06 5.255616224e-14 7.745993587e-11 6.688752503e-06 7.747999493e-09 3.686521165e-08 5.285921641e-19 1.490775309e-17 6.96663527e-12 1.018033145e-15 1.0892107e-15 5.042913785e-15 2.741406386e-12 2.087712493e-11 4.289640801e-11 1.486677624e-06 2.799675143e-12 7.243512443e-11 8.009251478e-07 2.129440168e-10 1.097040318e-09 -0.3571837143 0.04594233597 4.194947207e-05 0.0006854350876 3.529990994e-05 4.187841868e-05 1.891164406e-06 3.616284222e-05 1.972396669e-05 2.046569329e-06 9.085400341e-06 6.970606024e-06 4.332908976e-06 0.0001657962212 8.734714524e-06 0.2956016773 3.06810362e-05 0.0005337537581 0.09172154651 1.349061928e-12 3.486796587e-09 0.003394208277 4.576252702e-09 7.010014182e-08 0.0001260161331 8.012188111e-08 7.60828551e-11 0.000158866469 8.5570477e-09 1.187715766e-09 1.282403762e-06 7.016214662e-13 1.98302248e-13 2.095009272e-09 1.008615989e-10 3.897257862e-08 8.772202805e-05 2.608316612e-06 1.059976368e-08 1.674220144e-11 1.634966749e-08 9.387733571e-10 3.069542895e-06 1.086301885e-07 1.663622502e-08 1.280675993e-05 3.580948329e-07 8.702079144e-08 4.846015998e-06 1.171464892e-08 5.542001185e-10 4.639881869e-06 7.020644708e-08 9.118311347e-06 0.09883067165 0.000145375122 5.352871486e-06 5.311473945e-09 1.217326028e-06 0.04684641534 6.142794534e-05 0.0006350712431 1.404101705e-11 1.114587626e-07 6.960213852e-10 5.816030314e-07 0.003680485533 1.462401967e-14 1.122481237e-10 3.512331833e-10 3.746141286e-09 1.527197824e-05 1.666449674e-12 7.716826922e-10 5.827775265e-10 1.659047094e-12 0.0001427097302 6.358267375e-10 3.451244404e-07 9.348045663e-05 1.142929468e-06 6.637462505e-08 5.900000548e-14 1.422065187e-11 1.991540917e-10 2.947930668e-10 3.131571483e-05 1.558602943e-15 2.089965836e-10 4.859056753e-07 1.048555417e-05 2.991066301e-05 1.807227297e-13 1.945247727e-09 1.636612602e-06 5.799831917e-09 5.941155621e-11 2.536038875e-14 4.730311249e-10 4.23195607e-08 4.07152204e-09 5.375373736e-06 1.919579332e-11 1.459003856e-09 5.371382538e-06 4.993759058e-08 1.081764688e-08 1.528346305e-13 2.254071279e-10 1.557409374e-06 5.197306625e-11 3.504617755e-10 3.311987476e-14 2.727137423e-10 9.673804116e-08 1.664046282e-08 1.965437509e-06 -0.3710303663 0.05838053236 4.385531457e-05 0.0006265680254 3.370249515e-05 2.052925908e-05 1.364119962e-06 5.061039481e-05 9.795733219e-06 2.000365404e-06 1.051938342e-05 5.380955428e-06 3.962190445e-06 0.0001793810263 0.0001671193316 0.2814506376 0.0003769717748 0.00177335376 0.09807257119 6.395558111e-10 1.067646664e-08 0.005110708494 6.883029775e-09 3.093808819e-08 6.69216168e-05 6.887693383e-07 3.021894362e-08 0.0001449911777 1.251592279e-06 2.211195015e-06 1.572591192e-05 2.256719707e-10 1.334042814e-09 6.766763423e-06 4.763416898e-09 3.808807411e-07 7.825843003e-05 2.434487692e-09 3.149328858e-11 5.338894602e-13 2.694610325e-08 8.183301231e-09 5.955552741e-06 2.633061748e-07 3.314985399e-07 1.051909271e-05 1.684012745e-07 2.39656096e-07 3.075802283e-06 1.776277039e-08 3.897675262e-09 4.143873513e-06 2.504939293e-07 8.439208443e-06 0.08623974959 0.0002083703217 1.564844204e-06 5.65326512e-10 3.531470211e-06 0.04530774979 0.0002867853429 0.0006992134199 1.53590895e-10 2.49986427e-07 1.906335793e-06 0.0001706340045 0.004126308543 1.604600584e-16 1.333813544e-09 4.283249095e-10 2.112792647e-09 1.215334934e-05 6.505463882e-13 2.582998249e-10 2.249473385e-08 3.261504863e-09 7.735382959e-05 1.151307721e-11 8.441490435e-12 0.0001114608642 4.658721438e-06 8.825006551e-07 7.140654479e-16 6.372822539e-11 1.1229061e-09 1.095384086e-08 7.718527254e-05 3.644039228e-13 6.516809039e-12 1.043391221e-07 6.471294111e-07 1.467201623e-05 2.512919873e-13 7.988679087e-10 2.490358871e-06 2.624213869e-07 5.172931969e-09 2.515909758e-13 1.201769375e-09 1.09560377e-07 5.331518796e-08 9.166399221e-06 2.570461134e-13 1.423848132e-09 3.014683215e-06 4.92816807e-10 2.784167227e-09 5.882233706e-14 9.960977767e-11 1.149199798e-06 1.587855423e-11 1.885854765e-09 1.788517667e-13 3.501893429e-10 2.113126863e-07 4.570871584e-07 1.117123524e-06 -0.3784191457 0.06572877955 0.0002045741552 0.0005780818668 3.281289235e-05 1.158326388e-05 5.655358153e-07 5.652919947e-05 5.545829289e-06 2.460984074e-06 1.085144809e-05 4.543362164e-06 3.870589663e-06 0.0003200242329 0.0001063043495 0.2732803108 0.0002288808186 0.003610460205 0.1001341719 1.281826822e-09 2.645342466e-09 0.006164673873 1.12163034e-09 1.780895369e-08 4.074901255e-05 1.014584589e-06 3.042829688e-08 0.0001326097329 1.85771794e-05 1.464919058e-05 1.295877362e-06 2.575118358e-10 8.935505369e-10 1.817734436e-05 5.872060746e-09 1.024088237e-06 6.551880362e-05 5.085738204e-07 1.771447645e-08 2.271314112e-10 4.28555407e-08 4.384422903e-09 8.447835176e-06 7.39139709e-07 4.133753207e-07 8.249505499e-06 7.672659773e-08 3.324878862e-08 2.737046287e-06 2.578140821e-08 1.760702062e-09 3.949883017e-06 1.455423091e-07 1.026150509e-05 0.07979532503 0.0001440770059 1.330618149e-06 3.007472109e-11 2.58533436e-06 0.04435885586 9.224346442e-05 0.0007895936338 2.501927663e-10 2.989628504e-07 0.004450884145 2.102739579e-05 0.0001216169886 2.185282026e-14 2.133284425e-09 9.674281004e-12 7.963761774e-10 1.07060519e-05 3.011663118e-15 2.868477828e-11 2.092391798e-08 1.144308871e-09 4.592749704e-05 6.089628835e-12 1.959322303e-08 5.648799032e-05 5.697888925e-05 2.649634143e-06 8.155032947e-13 9.971198676e-10 1.64920354e-10 3.995597199e-08 0.0001055708644 9.114783803e-14 1.167748111e-11 1.201795313e-08 1.525034231e-07 5.209230063e-06 1.28039654e-13 4.794171703e-10 2.990363228e-07 4.61056027e-07 1.494086918e-06 5.426509047e-13 2.011191582e-09 2.160525607e-07 3.616784018e-08 1.082993127e-05 1.646890491e-13 1.085737057e-09 1.842866387e-06 3.068237968e-12 7.44148547e-11 4.180862654e-14 8.435460749e-11 2.333420841e-10 1.79559779e-11 1.077653349e-06 2.45793431e-13 4.694470763e-10 4.660044275e-07 1.097041829e-06 5.733322185e-08 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.1247072494 0.1455533752 0.0176643581 -0.002223141877 -1.743349287e-05 -5.98932942e-05 -0.0001224078487 4.807066885e-05 -5.26958948e-07 -3.134082561e-05 4.656102286e-06 -3.95741862e-06 -5.952023084e-06 -4.025467466e-05 -0.0001417777207 -0.1660087585 0.001556473396 0.0003152416557 0.02098371504 7.482315052e-07 1.453757754e-07 0.02527943689 1.820982778e-08 2.846886685e-09 0.0006381929602 3.663077024e-11 6.362347844e-10 0.0006373981851 8.350769659e-05 3.836637368e-05 4.348816664e-05 -7.403013826e-10 -1.439737342e-09 -0.0004245880494 2.090770009e-07 3.480430682e-08 3.185920919e-05 4.392441656e-09 1.445268303e-08 1.153012312e-05 -2.47484115e-08 -1.335902735e-07 -3.339764966e-05 3.945635469e-07 -9.450206997e-12 3.987806129e-09 -1.045627729e-09 -4.578301213e-09 -1.309874308e-05 -2.855534113e-08 -9.566019727e-08 -6.197215575e-06 1.492921503e-08 -2.024215705e-08 -0.08463560633 -5.660972786e-07 5.036017862e-06 -8.075922419e-08 -1.618795799e-06 -0.03365321226 -0.0001343118245 -1.648251254e-05 -2.791313002e-10 1.547675185e-07 0.001647885608 -4.916248093e-06 5.509495572e-08 1.036849997e-10 -1.504356858e-08 -3.55862977e-10 -9.42781309e-09 -0.0003379962942 5.062333375e-12 -3.898342164e-09 -1.181441012e-08 -5.84047425e-08 -0.0004679332573 8.545542433e-14 4.274943079e-09 5.757221729e-09 5.89703913e-08 0.0003112521848 -3.065111847e-10 -2.2233065e-08 2.828995251e-09 -7.12342935e-10 8.018680583e-06 -1.267544182e-10 -7.545936956e-10 -5.9873114e-05 -1.945811741e-09 -3.853743751e-09 6.453619757e-13 -1.947355038e-10 -6.039164916e-09 -2.964820955e-08 -4.240586263e-05 -1.296286026e-12 1.736208508e-10 7.944622014e-06 9.081964716e-09 5.157407992e-08 1.284754305e-14 1.44366708e-14 8.356718098e-09 3.739352699e-12 1.639263484e-12 -8.653460028e-13 -8.662522712e-12 -7.882290691e-11 6.763835134e-11 -8.040947405e-06 1.13568735e-11 -3.24293446e-11 -1.100582263e-06 -2.978060858e-10 9.457355827e-11 --0.0422056279 -0.03067563485 0.0004625027748 0.0001653521882 0.0001270648232 -6.65760254e-05 -2.27435634e-06 3.312094668e-05 -6.432828701e-06 1.183012251e-06 6.053661424e-06 7.382895154e-07 1.383972041e-06 0.005733305446 6.950089567e-05 0.03412064181 -0.0001347843947 -0.005105817218 -0.01834406746 6.484264414e-09 3.753635488e-06 -0.005327837894 -1.500663674e-07 -6.180582638e-06 0.0005599041031 -1.885702211e-06 9.604646729e-11 8.318767896e-05 -9.912686994e-07 -1.903612958e-08 1.555327897e-05 -7.234139391e-09 -6.346581513e-10 -5.242048929e-07 -1.157895928e-09 -6.982158494e-07 3.254668235e-05 -2.081988351e-06 -6.016848578e-07 -1.142981327e-10 6.857531658e-07 1.136916094e-08 6.394681277e-06 1.330403744e-06 5.255322939e-08 6.641323361e-06 2.40064975e-06 4.318632466e-08 -6.962056183e-07 4.042527667e-07 5.149451444e-09 3.742183136e-06 -6.596027876e-07 -0.0001779969951 0.04000588468 -0.004901179346 -6.534902117e-05 -5.441644506e-07 2.258798089e-05 -0.005960921231 0.0001861707556 0.007450778675 -2.9644376e-09 3.038614005e-06 -1.759263541e-07 -0.0001068066494 -0.002972764335 5.46910013e-11 3.256540962e-08 1.995056373e-08 4.789274311e-07 0.0002192124748 -6.76772176e-10 1.446036914e-07 1.868496618e-07 7.251068438e-10 -0.0001869023972 -1.60259831e-09 -5.021276171e-07 9.488627069e-06 2.054306012e-05 5.920976816e-07 3.785601457e-11 -2.016511222e-09 -1.163854041e-08 -5.631539927e-08 7.321921556e-05 -1.957696273e-12 -8.231006161e-09 -4.570131157e-07 -1.049414586e-05 -4.540951526e-06 -1.682161828e-11 4.452004355e-08 -1.130929727e-06 4.910499358e-07 2.599745336e-09 7.269905087e-12 -1.342720099e-08 8.384194717e-07 2.541666174e-08 9.263375931e-06 -5.247960728e-10 -2.064631827e-08 2.074272729e-06 -6.812775623e-07 -5.249589831e-08 1.363694164e-11 -8.95162374e-09 1.356613406e-06 -2.613604938e-08 -1.142627587e-08 5.079984294e-12 -8.564504527e-09 1.050363832e-06 3.551326184e-08 1.579153616e-06 --0.04557100178 -0.03799167002 -0.0005813920887 0.0004125337955 0.0001158682819 -6.104256058e-05 -5.672778944e-06 3.35755256e-05 -7.326687299e-06 2.717643314e-06 5.63335013e-06 5.363091382e-08 1.956950862e-06 0.0059244481 0.001188984284 0.04060581207 -0.0009638723434 -0.01002743967 -0.01145286482 7.90794239e-08 8.210164402e-06 -0.007056140328 -1.808789024e-07 -2.833270473e-06 0.0005172650958 -6.244891302e-06 -5.431568497e-08 -1.942934563e-05 -1.180763966e-05 5.557670237e-06 5.619088786e-05 9.900522522e-08 9.863775116e-08 3.890918819e-05 -8.261350221e-09 -2.109074077e-06 6.333817448e-06 5.685014919e-09 3.476073212e-08 2.765399712e-10 8.095808561e-07 6.68163035e-08 1.17193427e-05 1.984662346e-06 4.135629192e-07 2.109637083e-06 1.677908674e-06 2.665265084e-07 1.082501343e-07 4.808417792e-07 2.734931771e-08 4.152129948e-06 -1.248014659e-05 -0.0001567122721 0.04219645738 -0.005593521745 -7.606926777e-05 -3.113677537e-07 3.95790334e-05 -0.003867480457 0.0006431152085 0.008011661206 1.747790486e-08 3.43776626e-06 -1.965886611e-05 -0.002115806785 -0.0008356915499 1.14474157e-10 5.002875942e-07 2.934987302e-08 7.542146518e-07 0.0002140990151 -1.603036537e-12 3.340150123e-08 5.889344691e-07 2.184092536e-08 -0.0002176668632 -3.071207798e-10 -1.901934178e-09 -7.261847071e-05 3.985988201e-05 3.853886916e-06 -1.285768313e-12 -7.428884159e-10 -1.205378408e-10 -2.404175316e-08 0.0001132704679 -5.874830966e-12 1.92077942e-09 -3.678203047e-07 -3.431205973e-06 -1.607776686e-05 1.027137757e-10 2.640792558e-08 -7.185288293e-06 2.658691402e-06 4.163493181e-08 -6.920847852e-11 -1.6862838e-08 1.064287811e-06 1.579489683e-07 1.125029865e-05 1.106375056e-10 -2.070061478e-08 -1.75201523e-07 -6.790761418e-08 -5.69082365e-08 -5.131370235e-11 -5.542972475e-09 1.872125795e-06 1.324670081e-08 -4.408804017e-08 -5.639894425e-11 -8.67703741e-09 1.453056893e-06 4.052678032e-07 5.200373572e-07 --0.0455184514 -0.04062316326 -0.001336055922 0.0005301890339 0.0001008759303 -4.866368628e-05 -4.919965647e-06 2.810715144e-05 -5.874477388e-06 3.861957614e-06 4.505745786e-06 -2.056866785e-08 2.200024385e-06 0.008103774324 0.0006391678735 0.04135197225 -0.0004719052857 -0.01515512382 -0.004805479586 -1.525763873e-08 4.573994304e-06 -0.007666828114 -2.457195221e-08 -1.581158599e-06 0.0004327043943 -7.910246942e-06 -5.295497473e-08 -7.737308226e-05 -1.493945738e-05 6.435678178e-05 5.189206263e-06 9.182761012e-08 6.225911643e-08 6.732613767e-05 -5.263769945e-09 -3.757220527e-06 -6.773910103e-06 -8.984689363e-07 8.259275559e-07 4.768978059e-09 9.763000747e-07 2.691155842e-08 1.436660615e-05 3.294498485e-06 9.682673732e-08 -9.753856621e-07 1.147705117e-06 8.387996213e-08 1.124662768e-06 5.73848728e-07 9.650526576e-09 3.972795791e-06 -7.187075701e-06 -0.000182658764 0.04028647605 -0.004631618971 3.934767654e-05 -4.623721011e-08 4.033101629e-05 -0.002569229815 0.0001810572101 0.008713647777 1.236457676e-08 3.342911088e-06 -0.004419367686 5.298982726e-06 0.001736820288 -1.404488608e-09 1.330874833e-06 6.560305807e-09 2.528548181e-07 0.0001992137719 -1.428212582e-11 -2.848190721e-09 1.247645416e-07 -1.666565698e-09 -0.0001927973671 -2.150106334e-10 4.772743241e-08 -0.0001401490002 6.858015054e-05 3.742580447e-06 -2.751456399e-11 1.585369222e-08 8.96340076e-10 2.562531859e-07 0.0001179489219 3.006268832e-11 2.995686191e-09 -9.393701294e-08 -1.981705857e-06 -1.167948447e-05 5.188660541e-11 2.00380133e-08 -3.905828405e-06 -5.989508084e-07 -1.455894514e-06 -6.780208855e-11 -2.010150737e-08 1.327695312e-06 6.885346282e-08 9.998050707e-06 6.715233367e-11 -1.971366221e-08 -5.066829328e-07 5.705001251e-09 -7.183516144e-09 -3.08701911e-11 -5.224590179e-09 -4.973354144e-08 2.544049993e-09 2.17173232e-06 -4.836450135e-11 -9.964492424e-09 2.060213036e-06 -4.067808541e-08 -2.365826534e-08 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.00244083346 0.002848844396 0.0003457357654 -4.351245903e-05 -3.412171541e-07 -1.172261895e-06 -2.395828425e-06 9.408634828e-07 -1.031390748e-08 -6.134185158e-07 9.113159266e-08 -7.745660201e-08 -1.16496011e-07 0.000887378457 0.004282433347 -0.008422582153 -0.02298852507 -0.0005391428887 0.02397500601 -3.16364662e-05 -6.853069144e-06 0.0005332889706 -1.891443669e-07 -9.98173452e-09 1.269057415e-05 -2.714642774e-10 -5.695305967e-09 1.248146012e-05 -5.180005491e-05 -2.303794188e-05 7.807455026e-05 -2.058450697e-08 -5.917823654e-09 -8.283792732e-06 -7.913027227e-07 -1.846949707e-08 1.43811017e-06 -1.679464545e-08 -1.367956104e-07 3.796325129e-07 7.058864632e-08 8.968268991e-07 -1.624190348e-06 1.907606242e-07 -4.425609334e-09 -1.785345508e-07 1.088151799e-08 8.821460009e-08 -3.555814276e-07 8.795888643e-08 6.350605342e-07 -8.467456728e-07 -6.961307146e-07 -2.57365483e-05 -0.001364904069 3.558426101e-05 -0.0003006910919 1.79678357e-06 3.649381663e-05 -0.003965081387 0.003056981052 0.0002081473282 1.171666402e-08 -4.087530787e-06 -0.0002571167241 0.0002686262669 2.472740206e-05 -3.65882049e-09 3.559515318e-07 2.175968027e-08 3.868842415e-07 -7.376855229e-06 -2.253060629e-10 -4.751737193e-08 7.072169659e-08 8.751514074e-07 -1.005820775e-05 -7.305231862e-12 -1.261877449e-10 -3.187911732e-08 -7.876347196e-07 6.912983322e-06 1.069832777e-08 1.437681555e-06 -1.344812828e-07 4.490822006e-08 -1.20226087e-06 5.437516977e-09 1.361545404e-08 -4.154213437e-07 -7.815715843e-07 5.942276772e-09 -2.91183907e-11 -3.462904095e-09 1.091783649e-08 1.4614323e-07 -9.842603599e-07 5.433682597e-11 -4.416719418e-09 5.689234753e-07 -1.920028607e-08 -3.886740763e-07 -6.067061903e-13 6.158308711e-13 3.227751062e-10 -1.236688995e-10 -3.544760441e-11 4.013433423e-11 -4.413370941e-10 -3.223545793e-09 -1.464828919e-08 -1.391088637e-07 -6.741428695e-10 -3.860231087e-09 6.801572978e-08 -4.840889836e-09 -8.01860098e-08 --0.1294773005 -0.0941058951 0.001418853687 0.0005072630364 0.0003898060783 -0.0002042401565 -6.977209769e-06 0.0001016075576 -1.973446046e-05 3.629213456e-06 1.857126119e-05 2.2649049e-06 4.245712546e-06 -0.001792844529 -1.904363329e-05 0.1242879785 1.768081802e-05 0.001201252171 -0.07357135223 -2.098876532e-09 -1.242229337e-06 -0.01633181958 1.175936002e-07 3.058936759e-06 0.00169506136 7.537665457e-07 1.184156261e-10 0.0002486624473 6.499429446e-07 5.16921696e-08 4.391291338e-05 1.7533015e-09 3.714772198e-11 -1.634071937e-06 5.124270403e-10 2.755863533e-07 9.742422583e-05 -8.392491683e-06 1.592678527e-07 -2.796099299e-11 -9.60458938e-08 3.567255086e-09 2.184852474e-05 -2.048834398e-07 1.775446096e-08 2.480380235e-05 -3.811053942e-07 8.31233061e-08 5.659316227e-06 -9.628881707e-08 -2.561175954e-11 1.283243734e-05 3.039757005e-07 6.891808607e-05 0.1050762486 0.001771273443 2.798145638e-05 1.776495179e-07 -7.217269677e-06 0.007621835946 -5.393189728e-05 -0.002351564351 9.107856081e-10 -1.306856131e-06 5.64623243e-08 3.316447052e-05 -0.0094705678 -1.699560964e-11 -5.137519868e-09 1.060558357e-08 2.677879209e-08 0.0006740924741 2.11411677e-10 -5.056389384e-08 -6.348871894e-08 -2.468302917e-10 -0.0005722431331 1.193394914e-09 5.34975315e-07 9.745475243e-05 -5.466357309e-06 -1.230628467e-07 -1.183288764e-11 7.702507074e-10 5.358616387e-09 2.069833073e-08 0.0002243786055 6.428741376e-13 2.413944559e-09 -4.757663664e-07 -1.007167227e-05 -3.700651655e-05 5.116276052e-12 -1.689290982e-08 -1.633527496e-06 -1.671547187e-07 -9.349336293e-10 -2.173351912e-12 7.371753051e-09 -5.391825365e-09 1.741843062e-08 3.100742579e-05 1.861116219e-10 7.934051539e-09 3.749967927e-06 2.631894889e-07 2.612217138e-08 -3.933817243e-12 3.561444933e-09 4.002161109e-06 8.666519371e-09 4.744894451e-09 -1.480023586e-12 3.974547338e-09 7.710641274e-08 6.046426221e-08 8.007908072e-06 -0.06146418715 0.05124151379 0.0007841563878 -0.0005564076588 -0.0001562781042 8.233155341e-05 7.651197758e-06 -4.528521008e-05 9.881917486e-06 -3.66543922e-06 -7.598017887e-06 -7.23350463e-08 -2.639450293e-06 -0.0001227407935 0.005449039559 -0.06968794228 -0.004199488751 0.0006719306414 0.03379928863 -1.853752336e-06 1.771727993e-06 0.009505917338 -1.457573498e-06 -4.006665721e-07 -0.0006917410924 -6.921163334e-07 -1.194994022e-06 3.658866422e-05 -5.56490794e-06 -2.598424955e-05 -3.580898336e-05 -1.928520864e-08 2.261560443e-07 -5.295246552e-05 -2.234853706e-07 -3.309695758e-07 -5.132552797e-06 -6.250436814e-08 3.378774114e-09 4.201142691e-09 -2.900188108e-08 3.714882727e-07 -1.733107303e-05 -9.272767505e-08 1.82574692e-06 -7.813028113e-06 -4.453218511e-08 1.571667549e-06 -4.29570813e-06 8.035186803e-09 1.990285914e-07 -6.492702314e-06 2.49321864e-05 -0.0001187996528 -0.04818373264 -0.0002892093747 -0.0004708414066 3.390949469e-07 2.382417037e-05 -0.01169762047 0.004820453922 0.0003431439807 -1.461255006e-07 3.284261411e-06 -0.0002009696374 -2.627446771e-05 0.004226813423 -1.651200997e-10 5.239518692e-07 1.234766731e-07 -5.129813762e-08 -0.0002910951726 -1.513957172e-09 8.114573847e-09 1.184786162e-07 2.504959311e-07 0.0002923351967 -4.861624608e-09 -2.740305863e-09 2.161425418e-05 -4.835413898e-07 1.786527447e-05 2.442801306e-12 -7.021088306e-10 9.335308239e-09 -3.361851987e-08 -0.0001527157099 -4.369386445e-10 3.959071274e-10 -8.475811383e-07 1.242534371e-06 2.641146e-05 -5.173681294e-10 1.566555659e-08 4.803908701e-06 7.535469695e-07 4.407615617e-07 2.759677555e-10 -1.298454735e-08 -1.60715226e-07 5.107128454e-07 -1.713686569e-05 -2.536346553e-10 -1.379536569e-08 5.945987305e-07 1.039981866e-08 -1.585282843e-07 1.269864427e-10 -3.794166838e-09 -2.324988428e-06 -1.739119435e-09 -1.455044114e-07 2.056395642e-10 -5.741915623e-09 -2.704598173e-07 6.026596158e-07 -3.522715641e-06 -0.06076388899 0.05422902815 0.001783539448 -0.000707764579 -0.0001346621785 6.496255341e-05 6.567803543e-06 -3.752104426e-05 7.842008698e-06 -5.155438212e-06 -6.014849545e-06 2.745770586e-08 -2.936875781e-06 0.0003484675028 0.004396767513 -0.07161837605 -0.003457168631 4.802087079e-05 0.03068509085 -2.96228856e-06 8.002274185e-07 0.01023074567 -4.352130375e-07 -4.309946886e-07 -0.0005746197884 -2.386743004e-07 -1.153574182e-06 0.0001153101068 -4.826529666e-05 -3.78949707e-05 1.326444018e-05 -1.453182125e-08 1.634126779e-07 -9.023017179e-05 -2.545609945e-07 -3.662288028e-07 1.46861255e-05 -1.077310146e-07 1.086268139e-07 8.957552842e-08 -4.47507e-11 2.606611822e-07 -2.077822792e-05 1.28962976e-07 2.058816462e-06 -5.412886591e-06 1.083555834e-08 6.430139815e-07 -3.799272509e-06 2.945065796e-08 1.313121944e-07 -6.243092058e-06 2.130454396e-05 -0.0001113111245 -0.04718830258 -0.000542209661 0.0004247297028 1.0040258e-07 1.691567438e-05 -0.01216574726 0.002771174861 0.0008797204113 -1.948484995e-07 2.540825332e-06 0.002484933386 0.0007243322843 0.000357845154 3.48148508e-09 5.57815652e-07 3.358738913e-08 -1.985609087e-08 -0.0002686322669 2.32031178e-11 -1.743486349e-09 1.411977542e-07 5.305997306e-08 0.000257017703 -3.57048332e-09 9.593916507e-08 2.666333646e-05 3.146260401e-05 3.226150128e-05 4.656572876e-10 2.65888351e-09 -1.218435057e-08 -1.340869083e-08 -0.0001577953404 -2.522054235e-10 9.849554362e-10 -3.906208819e-07 4.577426556e-07 1.829022112e-05 -3.829466353e-10 1.05055562e-08 5.92554684e-07 -1.645304293e-06 8.972883084e-06 3.884264813e-10 -1.304132891e-08 -1.81708005e-07 3.760488493e-07 -1.536574168e-05 -2.298410736e-10 -9.822403326e-09 7.422334976e-07 -3.423962401e-10 -2.725284513e-08 1.152898918e-10 -2.866864991e-09 -1.082138731e-09 1.329542869e-08 -2.838559331e-06 2.49605719e-10 -5.585419792e-09 -5.464899697e-07 -1.435393293e-06 -6.637676224e-07 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.0003519237103 0.0004107514529 4.98487977e-05 -6.27370375e-06 -4.919729628e-08 -1.690188055e-07 -3.454348043e-07 1.356553707e-07 -1.487077529e-09 -8.844377284e-08 1.313951515e-08 -1.116783067e-08 -1.679660211e-08 -0.003285942227 0.001158845683 0.001658106329 -0.001597931334 0.01305515624 -0.01139272691 -7.329155421e-06 2.959540947e-05 4.907480875e-05 -2.239399038e-08 8.476630709e-08 1.738666885e-06 1.488951646e-09 -1.041573217e-09 1.798291446e-06 6.856993955e-05 -6.868413232e-05 5.808448018e-07 -5.194614627e-09 2.332390008e-08 -1.216322411e-06 -4.615738755e-08 3.411960497e-07 -2.044437787e-07 8.313071576e-08 -2.788314476e-08 -2.265639625e-08 -4.150615433e-07 1.551272546e-07 1.652393292e-07 -2.371980124e-08 4.318708043e-08 -1.834259441e-08 -5.22437377e-08 1.842443478e-08 -3.161205289e-09 -3.719592564e-07 1.564816428e-07 1.976385424e-07 -5.348561755e-07 2.970115619e-05 -1.81180671e-05 -0.0001949457398 -5.493147503e-05 6.373053948e-06 -1.056645492e-05 0.0009210996191 0.0004414542949 -0.001453760176 1.910312806e-08 5.448807557e-07 0.0001011171605 4.636286549e-05 -0.0001434069609 -3.238601142e-08 -4.855845878e-08 -2.078451148e-07 3.991606045e-08 -7.05021388e-07 -4.082882105e-10 1.570207679e-08 -4.722581648e-07 1.31552374e-07 -9.953042421e-07 6.501875781e-11 4.502780187e-09 2.921392453e-07 -8.625921535e-08 6.681001941e-07 3.515257642e-08 -5.91710811e-07 -1.883377209e-08 1.17982894e-08 5.861647909e-07 -3.331462366e-09 2.009499062e-08 -5.190339067e-07 1.524486174e-08 3.180448062e-07 -4.569144155e-11 1.714962249e-09 -7.020481503e-08 2.303897832e-08 -7.427398579e-08 1.046375575e-10 1.755577139e-09 -1.170658615e-07 1.80404232e-07 -4.260721368e-08 -1.198628264e-13 -3.045554218e-12 -6.723298351e-11 -3.429526649e-11 1.282915711e-10 1.861500214e-11 8.745797448e-10 1.026184828e-08 -4.616598007e-09 -2.923004755e-08 -7.104866133e-10 3.033513282e-09 -3.000808238e-08 3.55319917e-08 -1.095341083e-08 -3.658718834e-05 2.659207517e-05 -4.009341164e-07 -1.433404016e-07 -1.101498745e-07 5.77133833e-08 1.971592603e-09 -2.871186557e-08 5.576486525e-09 -1.025528921e-09 -5.247794233e-09 -6.400079538e-10 -1.199736818e-09 0.0003142732047 -0.001379075409 0.00103019339 0.001256745959 -0.0005629852153 -0.0006733156808 7.777113563e-08 -3.464876341e-07 4.884049713e-06 1.744086541e-06 -7.021115944e-07 -1.521856357e-06 1.704969085e-09 6.246194793e-08 -1.346460071e-07 -9.423589505e-08 4.274620792e-07 -3.458331884e-07 -1.15769316e-09 3.946056508e-09 -2.32711964e-09 3.812454376e-08 -2.478550573e-08 -4.094681302e-08 2.445273193e-08 2.620787779e-09 -2.474699967e-08 4.123033355e-08 -1.637870263e-07 1.164089545e-07 1.175433076e-07 -5.218718732e-07 3.973724824e-07 1.138172018e-07 -1.216758115e-06 1.101425928e-06 2.273695231e-08 -9.019973259e-08 6.386385656e-08 1.790115725e-05 -4.216499645e-06 -0.0006702254158 -0.0003724004867 0.0009987212233 -1.327792831e-06 -6.486089857e-06 0.001802712887 -0.0024475428 0.0006511717728 -5.557135737e-08 -7.480165096e-07 3.857283238e-06 -5.375846466e-06 4.98928863e-06 4.178062759e-10 -6.851647059e-09 -1.333562913e-07 5.280580599e-08 -1.035071918e-07 -6.375866033e-09 -1.331348636e-08 1.478479618e-08 -1.099500445e-08 1.77634022e-07 -4.563362239e-08 2.938191321e-07 2.303454814e-06 2.551399582e-06 -5.12915036e-06 1.39102806e-10 7.077951748e-10 -4.927665883e-08 1.541375263e-08 -3.039559649e-08 2.381906629e-11 -6.742088741e-10 1.722448521e-06 -1.601292888e-06 -1.070683147e-07 -5.165495241e-10 -3.475307939e-09 2.918115891e-08 2.774951922e-08 -5.242495466e-08 1.26970801e-10 1.899427823e-09 6.29560316e-08 -2.47318005e-07 1.73568137e-07 -2.738026681e-09 6.096599945e-09 -2.165039877e-07 -1.279329141e-07 3.399346302e-07 2.663411761e-10 8.62080838e-10 -6.885055371e-08 -4.766854707e-09 7.135327638e-08 1.142364139e-10 8.336149631e-10 5.532496572e-08 -4.110975093e-07 3.52521852e-07 -0.1101195868 0.09180458716 0.001404899039 -0.0009968631219 -0.0002799887392 0.0001475056787 1.370792936e-05 -8.113323961e-05 1.77044995e-05 -6.567021728e-06 -1.3612652e-05 -1.295958798e-07 -4.728854137e-06 0.002411393923 -0.002650789117 -0.1150712909 0.00224758409 -0.003101767257 0.05508918751 1.070573452e-06 2.461477704e-06 0.01702717649 5.492945013e-07 -1.800225216e-06 -0.001241405573 -1.762254903e-06 6.636374386e-07 6.327011848e-05 -1.345191531e-05 -3.817075085e-06 -0.0001034102374 4.70636819e-08 -1.130299211e-07 -9.44333408e-05 1.204063727e-07 -7.612384022e-07 -9.548043346e-06 -1.067770732e-07 1.063616005e-08 -2.262045889e-09 1.482155955e-07 -2.413487428e-07 -3.034371517e-05 4.904044383e-07 -1.329685191e-06 -1.005369767e-05 3.637073972e-07 -1.272893104e-06 -4.051004987e-06 1.232972345e-07 -1.153960799e-07 -1.126928686e-05 -1.945823257e-05 -1.125944886e-05 -0.08558706318 -0.002467319398 0.0002289663967 -3.183338324e-07 1.762248368e-06 -0.01199574862 -0.002531562512 0.002862766314 8.917400774e-08 2.078444928e-07 0.0001087526522 -0.000438870719 0.007501094458 1.395260688e-10 -1.700833126e-07 -8.396358254e-08 2.066311509e-07 -0.0005204127537 8.509022547e-10 1.188911817e-08 4.036460619e-07 -9.800217306e-08 0.0005241038975 2.596652829e-09 7.4991683e-10 5.65547082e-05 2.088931808e-05 -7.595560216e-06 -1.899315698e-12 -2.505146823e-10 -1.116274453e-08 -4.876095595e-08 -0.0002735909166 2.431323704e-10 6.039904053e-10 8.026245869e-07 8.744591858e-07 4.63485178e-05 3.327348277e-10 6.810563982e-09 8.766016607e-06 2.199249929e-06 -1.988301904e-07 -1.838778474e-10 -5.479252609e-09 6.091267368e-09 -4.747118061e-07 -2.962393328e-05 1.874514771e-10 -3.248521297e-10 7.425926394e-07 -3.371958815e-08 6.599274314e-08 -9.244989987e-11 -7.452379433e-10 -4.493553726e-06 6.361889271e-09 5.219456318e-08 -1.389694786e-10 -2.050844584e-09 -2.5236516e-07 -2.341800775e-06 -3.12970938e-06 --0.1088999622 -0.0971883007 -0.003196427709 0.001268443103 0.0002413391636 -0.000116424734 -1.177070081e-05 6.724454884e-05 -1.405430865e-05 9.23948476e-06 1.077970648e-05 -4.920921257e-08 5.263416591e-06 -0.00298457068 0.002255314302 0.1205781115 -0.001891690997 0.003838869723 -0.05083063928 -1.652181631e-06 -1.477036456e-06 -0.01832835658 -1.904011691e-07 1.089943581e-06 0.001030476234 8.700882526e-07 -6.906076394e-07 -0.0002043410422 8.37852963e-05 3.433745477e-05 1.251985516e-05 -4.309241074e-08 7.695017693e-08 0.0001614082313 -1.431448535e-07 7.896580461e-07 -2.585415792e-05 8.269473123e-08 -2.927197991e-07 4.788396189e-08 -1.324373102e-07 1.623973785e-07 3.674133868e-05 -6.298380038e-07 1.485949005e-06 4.923868734e-06 -2.479148131e-07 4.21559594e-07 5.463526376e-06 -1.184265006e-07 7.640651179e-08 1.094266232e-05 1.512135511e-05 3.044020096e-05 0.08281281295 0.001860872279 0.0002226443393 7.536399081e-08 -6.1258692e-06 0.01647532153 0.001516721268 -0.002756321762 -1.144073095e-07 -5.982287325e-07 -0.005976870979 0.0003584333077 -0.0007779667487 2.531106166e-09 -1.028206623e-07 1.664388498e-08 -6.367851564e-08 0.0004805547441 1.887165497e-11 -2.099660887e-10 -2.853002418e-07 1.324346709e-08 -0.000460695375 -1.915019054e-09 -7.071546184e-09 -4.375015459e-05 -0.0001293363016 1.093913419e-05 2.745731462e-10 -1.174675074e-09 -6.516921036e-09 4.442434489e-08 0.0002828012656 -1.54120347e-10 -8.088110237e-10 -2.880380937e-07 -3.038034229e-07 -3.230821253e-05 -2.365633532e-10 -7.004617421e-09 -8.38006725e-07 -4.986621979e-06 -8.380594163e-06 2.470538029e-10 8.462925821e-09 1.31898343e-07 3.130019347e-07 2.675898106e-05 -1.564826825e-10 1.654444016e-09 -1.249386076e-06 -2.578771923e-09 -1.227964449e-08 7.752480774e-11 1.173746361e-09 2.181497568e-08 6.480701518e-09 5.040711531e-06 1.605609936e-10 3.093331101e-09 8.638164995e-07 3.994720962e-06 -1.107400947e-07 -0.4511178441 0.1788933402 0.01952376147 -0.002657341027 2.042784641e-05 0.0006383944691 -0.0001780440742 1.94688863e-05 -0.000151227711 3.750863895e-05 -1.696460019e-05 1.822358986e-05 -1.750526312e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.4509370911 0.1793159845 0.01969251574 -0.003192450812 0.000685080602 0.000118852064 0.0001910359828 -0.0002013649958 -1.278848376e-05 -4.178841477e-05 3.288930331e-05 -8.138252139e-06 1.224906789e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.2646806578 -0.008228751522 0.0003612755932 0.0001645425919 0.0001527044125 7.619439711e-05 -5.464474581e-06 3.692963179e-05 3.41738209e-05 8.702787009e-06 1.41406476e-05 1.202765477e-05 9.217997176e-06 0.003828502233 4.912893079e-05 0.2530956384 -1.312671068e-05 -0.0006534186457 0.01701942731 -3.091546726e-09 -1.734376422e-06 -0.002826558684 -9.882558861e-08 -4.146678611e-06 0.0003075915073 4.866623034e-06 -4.070850858e-10 0.0003398587215 -5.03964287e-07 -2.105158864e-08 -8.529274119e-06 -2.104565757e-09 -1.834097339e-10 -1.839210215e-07 -1.445703291e-09 -9.72844511e-07 7.988716273e-05 1.5166932e-05 -5.052111265e-07 -6.638658246e-11 5.542559788e-07 1.009604734e-08 1.06903987e-05 1.145907159e-06 5.526898007e-08 1.682990767e-05 2.666839943e-06 2.08357886e-07 9.253640719e-06 3.735499327e-07 5.205520212e-09 1.098451413e-05 5.630982825e-07 0.0001678672272 0.08725105726 -0.004108613366 -5.126504108e-05 5.459117983e-07 -2.444205642e-05 0.01460295751 8.522931057e-05 0.002867082103 3.036487947e-09 -2.456779492e-06 2.201827737e-08 1.459023866e-05 -0.000945069991 -5.581998622e-11 -3.806119639e-08 -7.210102339e-08 -2.092234499e-06 0.0001039554804 6.894832507e-10 -1.309390352e-07 -3.707507849e-07 -1.402886422e-09 0.000143863056 8.574031475e-10 7.70512932e-08 -5.823474704e-06 6.552805125e-07 1.656933841e-08 -3.856417195e-11 1.920001326e-09 -1.420684792e-08 -6.681973102e-08 1.699358405e-05 1.960483568e-12 7.386281374e-09 -4.447925864e-07 -1.194555994e-05 5.033946195e-05 1.728359893e-11 -4.384536598e-08 -6.225370154e-06 4.392982695e-07 2.149695919e-09 -7.514171831e-12 1.082502974e-08 8.619422615e-07 2.381087435e-08 5.999850447e-06 5.099150209e-10 1.91712122e-08 7.68324685e-06 -7.97644869e-07 -5.419952665e-08 -1.425429419e-11 8.501621174e-09 3.82114171e-06 -2.864421187e-08 -1.189305593e-08 -5.29325174e-12 7.647192354e-09 1.276398193e-06 4.715951527e-08 2.568227218e-06 -0.276844638 -0.005513964942 -0.0003945291832 0.0002765704734 0.0001531214236 4.311452182e-05 -3.653367361e-06 4.746876001e-05 2.427245359e-05 7.779922528e-06 1.398831897e-05 1.053771854e-05 8.719779195e-06 0.004022145278 0.0009735014422 0.2442725961 -9.8051101e-05 -0.001446826329 0.02439578976 -1.693729859e-08 -2.935195838e-06 -0.003216680075 -2.66328928e-07 -3.361877036e-06 0.0002651597734 1.441526097e-05 2.118830607e-07 0.0002867213909 -4.994895133e-06 -2.744387404e-06 -1.501665011e-05 3.804105995e-08 3.901770137e-08 1.109299223e-05 -1.553123238e-08 -3.081974556e-06 8.253746995e-05 -4.386143437e-07 2.391263803e-08 2.026023853e-10 6.363849167e-07 6.2023319e-08 1.307017007e-05 1.905171795e-06 7.371797118e-07 1.350934073e-05 1.746961216e-06 7.87977267e-07 7.067163917e-06 4.5282844e-07 3.310745283e-08 9.584910746e-06 1.190314877e-05 0.0001508395109 0.07834615551 -0.004829718594 -7.49780197e-05 3.099716316e-07 -4.491190422e-05 0.01510455551 0.0003966475897 0.003458153506 -1.496994772e-08 -2.328403581e-06 1.474360956e-06 0.0001393482842 -0.0007710050067 -1.133730783e-10 -5.814490381e-07 -8.759759402e-08 -1.536887339e-06 9.708704796e-05 3.251675479e-11 -2.966943913e-08 -1.848301408e-06 -1.015318894e-07 8.065831322e-05 4.008706654e-10 -8.856092309e-10 1.132719957e-05 -2.003484021e-06 -1.910967211e-07 1.260197817e-12 5.266500694e-10 -1.927560428e-08 -5.29206656e-07 3.219514005e-05 1.468816165e-11 -1.841119757e-09 -4.760657978e-07 -5.477338346e-06 2.938459478e-05 -9.431003277e-11 -2.323320733e-08 -8.079225856e-06 1.929748188e-06 3.689632597e-08 6.454242276e-11 1.324615695e-08 1.175445539e-06 1.613636873e-07 5.894063831e-06 -1.079244991e-10 1.980488185e-08 5.094908706e-06 -8.311539685e-08 -7.014045705e-08 4.963802038e-11 5.325379363e-09 3.157760742e-06 1.552399752e-08 -5.380883711e-08 5.30320516e-11 7.797812172e-09 1.795297678e-06 5.926637819e-07 7.407735233e-07 -0.2826638831 -0.004055763145 -0.0008705871959 0.0003182057998 0.0001515768232 2.88985815e-05 -2.172930135e-06 5.21239929e-05 1.816287156e-05 8.219063634e-06 1.381087709e-05 9.684357495e-06 8.544054332e-06 0.005562963585 0.0005625057235 0.2389429097 -4.655434165e-05 -0.002086286406 0.02795663834 2.278831075e-08 -1.413560651e-06 -0.003381129802 -6.756707799e-08 -2.783213095e-06 0.0002200288443 1.723154519e-05 1.840574661e-07 0.0002567141391 -2.055258895e-05 -3.154505266e-06 -3.051111643e-07 4.396218325e-08 3.109270974e-08 1.934207472e-05 -9.247275374e-09 -4.711586116e-06 7.947489779e-05 -6.245970365e-06 4.677410311e-07 2.845134494e-09 7.754769619e-07 2.713224402e-08 1.469530928e-05 3.703356545e-06 6.825088136e-07 1.044783875e-05 1.112974978e-06 1.57785344e-07 7.324303327e-06 5.46334505e-07 1.350617821e-08 8.942253283e-06 6.68103904e-06 0.0001741522696 0.07308761594 -0.004072409457 4.45569966e-05 4.491603112e-08 -4.430518609e-05 0.0153498281 0.0001339470334 0.003921785945 -8.649458789e-09 -1.920979612e-06 -0.0003552066156 -3.985818327e-06 -0.0001175627778 1.356003046e-09 -1.465087516e-06 -6.019783209e-09 -6.163192334e-07 9.227922099e-05 1.405312242e-11 3.469161591e-09 -1.568102704e-06 -3.089186139e-08 5.31818646e-05 2.899778604e-10 7.3777918e-08 1.610594537e-05 -2.307825739e-06 -2.245134245e-07 1.68324429e-11 -1.884427572e-08 -1.996488798e-09 -1.113054288e-06 4.127183329e-05 -2.524280819e-11 -2.842852123e-09 -1.185002485e-07 -2.860189436e-06 1.669444588e-05 -4.467910097e-11 -1.658528989e-08 -3.100058131e-06 -5.977832804e-07 -1.290955838e-06 5.995375769e-11 1.546325152e-08 1.588920772e-06 7.903453614e-08 5.590054173e-06 -6.365099048e-11 1.889555065e-08 3.840203703e-06 6.918715574e-09 -9.330924321e-09 2.890282071e-11 4.949929332e-09 -6.091221484e-08 3.512424965e-09 3.012326462e-06 4.354467947e-11 8.83926238e-09 2.647578117e-06 1.962917987e-07 -3.395720992e-08 -0.4207438418 0.1179381261 -0.002427298276 -0.004567081607 8.501587348e-06 0.0001065592185 -0.000478871091 8.212646361e-05 -6.495415512e-05 8.739784653e-05 -2.401657676e-05 1.698585748e-05 -2.711526388e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.2839885795 -0.01241593237 -0.003023754498 0.0001010667438 0.0001360972262 -1.978718889e-05 1.390081218e-05 4.187174195e-05 -3.790660972e-06 1.971899377e-05 1.209763739e-05 7.099959594e-06 8.742596803e-06 -0.000579376296 -0.002904549622 0.2088827277 0.003701164862 0.0003168363972 0.01244127021 -7.902555153e-06 -1.73492799e-06 -0.004719068212 -2.667898206e-07 -1.45097356e-08 -6.764044359e-05 -6.259036763e-09 -1.303825326e-07 0.0001775585224 -1.582756915e-05 -7.440578853e-06 -4.139201328e-05 5.702159856e-08 1.653070817e-08 4.292771718e-05 8.807366888e-07 3.370801703e-08 1.168641439e-05 1.55795341e-08 1.366829947e-07 -5.67497027e-06 -7.839101001e-08 -1.131109543e-06 2.675417561e-05 5.183807516e-06 4.010576669e-09 1.520123084e-07 -1.038284939e-08 -8.646060011e-08 7.543027517e-06 -6.784982974e-08 -6.355998255e-07 8.836591835e-06 -6.782325836e-07 -2.568257695e-05 0.03969085997 -3.685694786e-05 0.0003133346609 1.698771416e-06 3.428647548e-05 0.0112854185 -0.001040113546 -6.796405195e-05 1.138108631e-08 -4.757579722e-06 -0.0007639447688 2.621074512e-05 2.405512604e-06 -3.533218231e-09 3.386074132e-07 8.786736651e-09 1.534780586e-07 4.060938857e-05 -2.192259166e-10 -5.214833496e-08 -5.88926303e-08 -7.238105894e-07 -3.310809219e-05 -7.206163492e-12 5.330413108e-09 1.666635218e-09 4.199270603e-08 -1.703598928e-06 1.032829256e-08 1.287643549e-06 -1.414776345e-08 2.27507154e-08 2.384957628e-05 5.285460715e-09 1.275521551e-08 -2.038878056e-05 7.621480632e-07 -6.753622787e-09 -2.834363905e-11 -3.660581601e-09 -2.441714291e-08 -3.337095765e-07 6.189592539e-06 5.277800944e-11 -4.626692738e-09 4.100479242e-06 4.847164268e-08 8.901847052e-07 -5.913155339e-13 6.276349476e-13 -5.257653508e-09 1.362984849e-10 3.85416472e-11 3.909705078e-11 -4.483489784e-10 6.409913871e-09 2.907133978e-08 2.389711046e-06 -6.606027667e-10 -3.89069989e-09 1.445391933e-06 8.559619768e-09 1.374795694e-07 -0.4202786116 0.1188430024 -0.002352844885 -0.00519749733 0.000768677171 -0.0004576628552 -7.509714242e-05 -0.0001775979408 0.0001152915961 -1.844291233e-05 3.84435434e-05 -1.378656961e-05 1.291514132e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.2494284931 -0.01876042867 -0.0002631889396 -0.0001036634017 0.0001216517768 7.51399269e-05 -9.301271229e-06 4.090320176e-05 2.149604085e-05 1.015065925e-05 1.977936499e-05 1.153259716e-05 9.149731172e-06 -0.001095170738 -0.003826615895 0.236354623 1.443695234e-05 1.412792732e-05 0.0002803797567 -7.323530738e-07 1.766721496e-06 -0.003273306204 6.737508777e-07 5.343126217e-07 9.315525223e-05 -5.718722716e-06 -3.035507165e-06 0.0003355162254 2.440310551e-07 5.937552171e-06 -7.046039318e-05 -7.888824118e-09 -1.532580711e-07 1.54324675e-05 3.089403668e-07 1.636221243e-06 5.761292824e-05 -4.084350806e-07 -2.058454142e-08 -4.341981809e-09 -2.547890253e-07 -4.510704089e-07 1.959409797e-05 -2.669391867e-07 -1.754078414e-06 2.217484989e-05 -8.502200371e-08 -1.026703926e-06 1.133527974e-05 -1.488830878e-07 -2.134842546e-07 1.111416151e-05 2.031722399e-05 -0.0001757074916 0.06161434582 0.002066933204 0.0004701044193 2.354255821e-07 3.194664781e-05 0.009484829548 -0.0009936085379 -0.0005075869649 -1.382055531e-07 5.490070288e-06 -4.319604531e-05 -0.0002256210059 -0.001050570922 -1.265035111e-10 6.074429911e-07 3.06872827e-07 3.353264521e-07 4.619756438e-05 -1.487696698e-09 2.131258716e-08 1.389695813e-06 1.342172256e-06 0.0001164958272 -4.88175714e-09 -5.481115608e-09 -3.758437773e-05 -6.694682571e-06 -8.254822377e-06 1.997586323e-12 -1.142831693e-09 -1.067814965e-07 2.466015596e-07 1.856896615e-05 -4.312405327e-10 1.109067493e-09 2.166320557e-06 1.966338224e-06 1.011178904e-05 -4.762960015e-10 2.688046448e-08 -4.808022219e-06 -2.183752741e-06 -5.681404047e-07 2.491430156e-10 -2.151666683e-08 -6.429266764e-07 -1.418942525e-06 1.347588003e-05 -2.148911942e-10 -2.145988525e-08 4.458960748e-06 1.798545451e-08 2.644394193e-07 1.086491026e-10 -5.805934184e-09 2.509672e-06 -3.23176741e-09 2.017810595e-07 1.841583416e-10 -9.342957966e-09 -4.136180823e-07 -1.415306614e-06 5.409895034e-06 -0.2557525396 -0.01817463576 -0.0006185371363 -6.269841435e-05 0.0001264769089 5.416978576e-05 -5.346329093e-06 4.257825276e-05 1.657395898e-05 1.106823417e-05 1.924278275e-05 1.031518844e-05 8.91914548e-06 -0.001808444893 -0.003056719463 0.2323883984 0.0001118945933 0.0002723366832 0.002826501286 -1.097317655e-06 8.437664066e-07 -0.003635013682 3.216984842e-07 5.988805381e-07 8.767533308e-05 -6.84523474e-06 -3.090859579e-06 0.000323119255 -2.749947651e-05 -3.733548474e-05 -1.360372183e-05 -9.708657057e-09 -1.133490847e-07 2.2151971e-05 3.500891456e-07 3.205432858e-06 5.166533794e-05 -5.683366684e-06 -5.825916992e-07 -9.214224577e-08 -3.696961022e-07 -3.237756286e-07 2.231413895e-05 -1.234208178e-07 -1.583674407e-06 1.910022536e-05 -1.826999238e-07 -5.536199663e-07 9.664463008e-06 -1.99735238e-07 -1.432759102e-07 1.070847696e-05 1.849473522e-05 -0.0001790927146 0.05793650975 0.002015230359 -0.0004210583697 8.403681941e-08 2.656242766e-05 0.01010105086 -0.0006436356906 -0.0007447838149 -1.875565868e-07 5.016020174e-06 -0.001511424437 0.0001258605999 0.0001265414281 2.97712658e-09 8.72489349e-07 3.587026026e-09 1.863152797e-07 4.673657457e-05 1.830387478e-11 -2.25092511e-09 1.523190464e-06 7.54851064e-07 8.363980707e-05 -3.576236625e-09 2.030073629e-07 -2.738944416e-06 -2.700473482e-05 -1.181414298e-05 4.472872913e-10 5.147590788e-09 -4.065571734e-08 3.961983773e-07 1.958546485e-05 -2.381235986e-10 2.118814952e-09 7.473247563e-07 1.180908014e-06 6.664071206e-06 -3.596077149e-10 1.985942765e-08 1.00825032e-06 2.601414312e-06 -1.011170156e-05 3.592715883e-10 -2.355898235e-08 -9.898695595e-07 -1.087355981e-06 1.336095297e-05 -2.04702687e-10 -1.709014287e-08 3.382678799e-06 -2.034160639e-09 4.017943888e-08 1.034188159e-10 -4.823855759e-09 2.22486328e-08 -1.829218842e-08 2.478163123e-06 2.294905037e-10 -9.824033658e-09 -3.09867998e-07 2.339667578e-06 1.182097503e-06 -0.4287326437 0.1331941379 0.0023074947 -0.004362494578 1.308864689e-05 0.0002314582911 -0.0004534086998 3.477533063e-05 -8.640680172e-05 8.128513287e-05 -1.896906533e-05 1.805429323e-05 -2.665352069e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.2914445132 -0.007380434013 -0.003229528881 0.0001776784695 0.0001396655889 -1.599164484e-05 1.094267424e-05 4.549517649e-05 -3.820443137e-06 1.783036488e-05 1.112176418e-05 7.079899433e-06 8.648314536e-06 -0.001613610786 0.002197077276 0.2084594107 -0.001044346072 0.002198336186 0.02144814045 5.004464982e-06 -5.138899379e-06 -0.004492460199 1.83091242e-07 -1.132514472e-07 -8.236525038e-05 -2.401647895e-08 7.698803621e-08 0.0001658405723 -1.49839476e-05 -2.409112805e-05 -4.112180283e-06 -4.221912355e-08 5.050521971e-08 4.6478187e-05 -3.777015373e-07 3.21412631e-07 1.377946101e-05 5.87001498e-08 -9.216006233e-08 -5.176785107e-06 -3.677336214e-07 7.603237899e-07 2.258037474e-05 5.33145232e-06 2.80565291e-08 -7.543477303e-08 -3.808362538e-08 5.891463562e-08 7.419118349e-06 -2.683409179e-07 5.882992628e-07 7.481175372e-06 7.834530309e-07 -1.319278901e-05 0.04206920591 -0.0001528510949 -0.0001983060263 -6.266027973e-06 -1.000372243e-05 0.01202411452 0.0007672667266 -0.0004486853511 -2.169844083e-08 7.26315288e-07 -0.0005092967961 -1.113925421e-05 7.185805103e-06 2.896801605e-08 -1.391006295e-07 7.227747038e-08 -9.577424391e-08 4.756323847e-05 4.512161503e-10 3.36378163e-09 -2.349569058e-07 3.429258847e-07 -2.803784484e-05 -5.114066238e-11 2.235671612e-09 -2.087402114e-08 4.193056261e-08 2.93957039e-06 -3.474021384e-08 -3.135527289e-07 3.765640807e-08 9.171721835e-08 3.331064792e-05 1.68748271e-10 -2.394499883e-08 -2.163310375e-05 -3.854503333e-07 2.822118911e-07 5.23660441e-11 -8.26012126e-11 -1.048791312e-07 1.813582529e-07 5.152868348e-06 -1.140949118e-10 2.97789367e-10 4.574129404e-06 2.705788237e-07 -3.946957008e-07 3.920137329e-13 2.28882387e-12 -5.454545788e-09 -1.014507306e-10 1.027526981e-10 -3.491920118e-11 -5.411612712e-10 1.42520033e-08 -2.189346497e-08 2.576216389e-06 9.162719677e-10 -8.265508116e-10 1.549200572e-06 4.297602985e-08 -7.197778063e-08 -0.2447299717 -0.01664237367 0.0002574066538 -0.000108423771 0.0001245013979 0.000107319655 -1.095167808e-05 3.457551997e-05 3.050261931e-05 1.026721869e-05 1.838185079e-05 1.312600887e-05 9.56820439e-06 -0.001621424579 -0.0008010014189 0.2452524862 3.576968955e-06 8.00985344e-06 0.0002920323496 -3.070694249e-08 1.071467971e-06 -0.002732168076 5.057561295e-07 9.32347962e-07 0.0001311801021 -2.474663744e-06 -1.438060943e-07 0.0003521420386 2.850452554e-07 3.055839631e-07 -1.767367947e-05 1.123851699e-09 1.688587574e-09 -2.780365163e-07 4.196820964e-08 4.596415478e-07 6.39335532e-05 1.41132491e-05 3.706076145e-07 -2.163868205e-08 -2.295995629e-07 -1.445789265e-07 1.426007456e-05 -3.891174034e-07 -4.678775176e-07 2.312195283e-05 -1.27482077e-07 -7.722388531e-07 1.380329396e-05 -1.48111875e-07 -7.648027468e-08 1.186147414e-05 -1.54866566e-05 -0.0001011735746 0.07255332207 0.002111112915 0.0008100937961 8.392671408e-07 1.507015523e-05 0.009932984238 -0.000447552932 -0.0005620946328 4.521872531e-08 2.879445383e-06 -7.725077123e-07 -1.162796174e-05 -0.001328642354 -3.242418534e-10 1.429570049e-08 4.206999254e-07 5.986729695e-07 5.749714784e-05 5.022448999e-09 9.527087899e-08 2.464883953e-07 2.780538689e-08 0.0001778414126 3.648445473e-08 -1.064257079e-06 -4.495918788e-05 -4.071814695e-06 -2.05514025e-06 -9.838268894e-11 -1.757879065e-09 -3.830357374e-08 4.531209335e-08 1.310732802e-05 -2.098192224e-11 -4.350223363e-09 4.534479528e-06 1.169362955e-05 9.298876928e-06 4.255120252e-10 2.706155104e-08 -6.076084185e-06 -2.962340015e-07 -5.589878531e-08 -1.031698693e-10 -1.202385058e-08 -5.027638514e-07 -3.77320649e-07 1.044979456e-05 2.010395476e-09 -1.752346868e-08 6.069664277e-06 4.260995636e-07 4.873469745e-07 -2.173766966e-10 -5.969092208e-09 3.375327467e-06 1.103514282e-08 7.973768368e-08 -9.355829353e-11 -6.403131347e-09 -4.441280374e-07 -5.09669867e-07 5.201429424e-06 -0.4283474559 0.1339680093 0.002405698304 -0.004969300078 0.0007510834836 -0.0003204329487 -6.378007874e-05 -0.0002101002215 8.124918172e-05 -1.823353766e-05 4.136628488e-05 -1.211297014e-05 1.235028709e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.2608867774 -0.01575524509 -0.0006806555868 -5.884578247e-06 0.0001342733222 5.052875805e-05 -4.52756051e-06 4.262391776e-05 1.713200044e-05 1.071638799e-05 1.80494839e-05 1.002394398e-05 8.814145295e-06 -0.003293348884 0.00262701183 0.2340409978 -0.0001749757622 0.0008420609961 0.00661694894 1.032742007e-06 9.133883271e-07 -0.003752648383 -3.352244233e-07 1.031678014e-06 0.0001117480729 -8.283680363e-06 2.941111579e-06 0.0003244327753 -2.520764452e-05 -4.872448777e-05 4.353490366e-06 -3.98604508e-08 6.237102534e-08 1.941937894e-05 -3.237757989e-07 3.628598655e-06 5.506176224e-05 -5.907701708e-06 -6.924036592e-07 7.664015306e-08 -5.014551595e-07 2.863115946e-07 2.1120871e-05 -5.003123622e-07 2.780767219e-06 1.422404935e-05 -3.718983269e-07 6.493371185e-07 8.560216881e-06 -2.70529218e-07 1.335747691e-07 1.061029655e-05 -2.540080678e-05 -4.872143735e-05 0.06065128981 0.002860384988 0.0003614687356 -1.266185783e-07 8.229021859e-06 0.01145513687 0.0007069573712 -0.001198122254 1.921879204e-07 1.967845994e-06 -0.001270263496 -0.0001177703137 0.0001447809569 -4.252431743e-09 1.812413647e-07 -4.351799749e-10 3.1571969e-07 5.773346196e-05 -3.170784761e-11 3.982399273e-10 1.903934527e-06 -6.168071859e-07 8.573890875e-05 3.216754425e-09 7.840462598e-08 -1.464519328e-06 -3.533560964e-05 5.265137723e-06 -4.612092672e-10 2.637019233e-09 4.00353601e-08 3.517380725e-07 2.079390539e-05 2.58902284e-10 1.460199031e-09 -6.10447298e-07 2.124160447e-06 8.495210718e-06 3.973989901e-10 1.122395055e-08 1.25254566e-06 -5.732962903e-06 -2.273763117e-06 -4.150139319e-10 -1.25000348e-08 -1.323028116e-06 9.209273167e-07 1.139132857e-05 2.628939316e-10 -4.848510334e-09 3.533918586e-06 -5.555333365e-09 -2.662611435e-08 -1.302388816e-10 -1.81227708e-09 4.492602521e-08 1.392099008e-08 2.579736455e-06 -2.697238019e-10 -4.648131234e-09 -4.667981286e-07 4.466609681e-06 -6.88369883e-07 -0.4329360426 0.14144337 0.005084670301 -0.004178999491 1.522505389e-05 0.0003053161686 -0.0004248512701 1.616447867e-05 -0.0001000162011 7.558531217e-05 -1.687922226e-05 1.863526045e-05 -2.57433062e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.2946512345 -0.005116190735 -0.003299575322 0.0002128269021 0.000140118355 -1.426977911e-05 1.010816015e-05 4.726923664e-05 -3.799441817e-06 1.698273242e-05 1.081136948e-05 7.080963017e-06 8.573716066e-06 0.002254640837 0.0008109795362 0.2085236892 -0.000600198298 -0.001753328699 0.02779841006 1.972413506e-06 6.270158172e-06 -0.004368676001 1.251549844e-07 1.350128316e-07 -8.912426952e-05 2.769213118e-08 3.704480972e-08 0.00015981068 -3.04738279e-05 -4.328213797e-07 -3.566317143e-06 -1.687406101e-08 -7.000106292e-08 5.011686847e-05 -2.91918116e-07 -3.133804924e-07 1.484909263e-05 -7.367655686e-08 -4.364626724e-08 -4.924227991e-06 4.512473105e-07 4.143850804e-07 2.116709432e-05 5.433376705e-06 -3.028766277e-08 -4.961783373e-08 4.836992608e-08 2.745902055e-08 7.398979728e-06 4.115193432e-07 2.828339739e-07 6.948539904e-06 -1.146695291e-07 3.658999516e-05 0.04324625845 0.0001854812519 -0.000100044288 4.426432438e-06 -2.769765661e-05 0.01253869393 0.0004882828574 0.0005637567782 1.036174831e-08 1.626628376e-06 -0.0003895602061 -4.437738097e-06 -6.509895982e-06 -2.536370074e-08 -2.20237675e-07 -8.325430861e-08 -6.800495058e-08 5.146072738e-05 -2.339741813e-10 2.948749825e-08 2.370459914e-07 1.698450174e-07 -2.56934229e-05 5.791735555e-11 9.950758713e-09 3.588482504e-08 4.312184291e-08 4.635208811e-06 2.424076696e-08 -1.302249646e-06 -1.956406944e-08 -1.246466882e-07 3.956490759e-05 -5.412847237e-09 9.775617389e-09 -2.225216586e-05 -4.107455724e-07 -2.769766558e-07 -2.431859811e-11 2.783047741e-09 1.152159588e-07 9.467908736e-08 4.803260418e-06 6.150260269e-11 3.221992829e-09 4.865566562e-06 -2.724225916e-07 -2.386758161e-07 1.901537789e-13 -2.818937426e-12 -5.581644463e-09 -3.563441698e-11 -1.431225548e-10 -3.640567381e-12 9.251238995e-10 -2.003338346e-08 -6.165498732e-09 2.697291408e-06 -2.764876181e-10 4.255562032e-09 1.608120304e-06 -4.668688125e-08 -4.09617012e-08 -0.2484730146 -0.01519478182 0.000280093897 -6.82723812e-05 0.0001311824642 0.0001029998946 -9.776654637e-06 3.405514207e-05 3.125648531e-05 1.009339264e-05 1.760743373e-05 1.277684882e-05 9.436793774e-06 -0.001970658201 0.0007614158484 0.2467262973 -3.015033862e-05 0.0001118182574 0.00305831729 3.406337877e-08 7.933661398e-07 -0.002800888986 -5.264694967e-07 1.579484549e-06 0.0001606853173 -2.465371699e-06 1.433384728e-07 0.0003568486814 3.805574583e-07 -2.79454338e-07 -1.585376471e-05 1.798570256e-09 -1.277532834e-09 -2.460582369e-07 -4.029615287e-08 5.172191782e-07 6.53496374e-05 1.432964081e-05 3.682723278e-07 2.185643511e-08 -2.891284246e-07 1.368510762e-07 1.368106535e-05 -5.621317482e-07 4.469900213e-07 2.128984828e-05 -2.875991746e-07 1.138469132e-06 1.178359923e-05 -1.831338839e-07 7.307581006e-08 1.174680706e-05 1.454213558e-05 -0.0001080958113 0.07491950229 0.002663199976 -0.0007283050509 -1.387139256e-06 4.133988352e-06 0.0108200717 0.0004864123728 -0.0008996210876 -4.799575567e-08 1.62463039e-06 6.908632008e-07 -1.309375273e-05 -0.001293716409 3.765153353e-10 2.832566716e-09 -3.998751136e-07 9.932530226e-07 6.574200057e-05 -5.671681399e-09 7.31025672e-08 3.048326342e-07 -2.442937825e-08 0.0001755852766 -4.007392351e-08 -5.767546956e-07 -3.942563725e-05 -4.824803703e-06 1.395188952e-06 1.348861316e-10 -5.695758438e-10 4.809283603e-08 1.607301523e-08 1.255699881e-05 1.897781642e-11 -5.46503123e-09 -3.321345545e-06 1.999119874e-05 1.087919283e-05 -4.409611091e-10 2.118228504e-08 -6.15880298e-06 -3.454223636e-07 5.071341088e-08 1.098068382e-10 -8.873585593e-09 -6.384661997e-07 3.332834649e-07 9.465272404e-06 -2.581948346e-09 -7.282420704e-09 6.441088334e-06 7.108123539e-07 -3.534796866e-07 2.293765778e-10 -4.515719133e-09 3.506880316e-06 2.002803182e-08 -6.191209556e-08 9.80607648e-11 -5.007537632e-09 -5.607891665e-07 5.347749715e-07 4.245122554e-06 -0.2583272646 -0.0148484597 -0.000315146977 -6.126392015e-06 0.0001360813173 6.726819687e-05 -7.031702505e-06 4.033079753e-05 2.27689657e-05 9.661592025e-06 1.77711725e-05 1.090886707e-05 8.917832527e-06 -0.002666616912 0.003054684404 0.239481561 -0.0001954226005 0.0005733717216 0.006866244198 7.282370076e-07 1.658973091e-06 -0.003461736173 -7.508862162e-07 1.462908725e-06 0.0001452637423 -7.179562262e-06 2.829081353e-06 0.000341841445 1.969106857e-06 -1.575517389e-05 -3.876059407e-05 -3.714243121e-08 7.25119944e-08 1.198162835e-05 -2.805461548e-07 1.995402779e-06 6.255735288e-05 -4.302495096e-07 -2.565836942e-08 3.624519703e-09 -4.250071877e-07 3.75943919e-07 1.78325023e-05 -7.972624689e-07 2.180752226e-06 1.679346045e-05 -4.303556746e-07 2.076450861e-06 8.256931649e-06 -2.4883784e-07 1.896823962e-07 1.091629857e-05 -3.259527058e-05 -1.757333498e-05 0.06650989102 0.003719698241 -0.000362066743 -5.331086468e-07 -2.288059857e-07 0.01171300393 0.001202558138 -0.001234671777 1.493719442e-07 1.038369156e-06 3.130225502e-05 -0.000273417231 -0.001022539462 2.336692318e-10 -2.808617973e-07 -2.820436004e-07 8.558866453e-07 6.499218665e-05 1.425431336e-09 2.076640689e-08 2.088104863e-06 -9.698345344e-07 0.0001177049127 4.349867698e-09 -1.193136666e-09 -2.77586605e-05 -8.478310467e-06 3.010837373e-06 -3.181027571e-12 -3.70411313e-10 1.084890764e-07 1.516722059e-07 1.880315421e-05 4.072943295e-10 1.097840987e-09 -1.586653972e-06 4.83116326e-06 1.460127333e-05 5.573367922e-10 1.083275331e-08 -5.226424495e-06 -3.050998305e-06 4.173122732e-07 -3.080004842e-10 -7.988359755e-09 -1.052062483e-06 1.06178758e-06 1.059635605e-05 3.13950934e-10 -2.369240056e-09 4.776448272e-06 7.592288163e-08 -1.411081501e-07 -1.54844876e-10 -1.098759558e-09 2.997863758e-06 -1.300620475e-08 -1.162744545e-07 -2.327750594e-10 -3.033333816e-09 -6.996624081e-07 3.283411133e-06 1.071964139e-06 -0.4325915329 0.1421493449 0.005195835944 -0.004773157688 0.0007411044846 -0.0002406944097 -4.106660736e-05 -0.0002220460569 6.113413475e-05 -2.022416839e-05 4.201411545e-05 -1.113037067e-05 1.220669086e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.1247072494 0.1455533752 0.0176643581 -0.002223141877 -1.743349287e-05 -5.98932942e-05 -0.0001224078487 4.807066885e-05 -5.26958948e-07 -3.134082561e-05 4.656102286e-06 -3.95741862e-06 -5.952023084e-06 -4.025467466e-05 -0.0001417777207 -0.1660087585 0.001556473396 0.0003152416557 0.02098371504 7.482315052e-07 1.453757754e-07 0.02527943689 1.820982778e-08 2.846886685e-09 0.0006381929602 3.663077024e-11 6.362347844e-10 0.0006373981851 8.350769659e-05 3.836637368e-05 4.348816664e-05 -7.403013826e-10 -1.439737342e-09 -0.0004245880494 2.090770009e-07 3.480430682e-08 3.185920919e-05 4.392441656e-09 1.445268303e-08 1.153012312e-05 -2.47484115e-08 -1.335902735e-07 -3.339764966e-05 3.945635469e-07 -9.450206997e-12 3.987806129e-09 -1.045627729e-09 -4.578301213e-09 -1.309874308e-05 -2.855534113e-08 -9.566019727e-08 -6.197215575e-06 1.492921503e-08 -2.024215705e-08 -0.08463560633 -5.660972786e-07 5.036017862e-06 -8.075922419e-08 -1.618795799e-06 -0.03365321226 -0.0001343118245 -1.648251254e-05 -2.791313002e-10 1.547675185e-07 0.001647885608 -4.916248093e-06 5.509495572e-08 1.036849997e-10 -1.504356858e-08 -3.55862977e-10 -9.42781309e-09 -0.0003379962942 5.062333375e-12 -3.898342164e-09 -1.181441012e-08 -5.84047425e-08 -0.0004679332573 8.545542433e-14 4.274943079e-09 5.757221729e-09 5.89703913e-08 0.0003112521848 -3.065111847e-10 -2.2233065e-08 2.828995251e-09 -7.12342935e-10 8.018680583e-06 -1.267544182e-10 -7.545936956e-10 -5.9873114e-05 -1.945811741e-09 -3.853743751e-09 6.453619757e-13 -1.947355038e-10 -6.039164916e-09 -2.964820955e-08 -4.240586263e-05 -1.296286026e-12 1.736208508e-10 7.944622014e-06 9.081964716e-09 5.157407992e-08 1.284754305e-14 1.44366708e-14 8.356718098e-09 3.739352699e-12 1.639263484e-12 -8.653460028e-13 -8.662522712e-12 -7.882290691e-11 6.763835134e-11 -8.040947405e-06 1.13568735e-11 -3.24293446e-11 -1.100582263e-06 -2.978060858e-10 9.457355827e-11 --0.0422056279 -0.03067563485 0.0004625027748 0.0001653521882 0.0001270648232 -6.65760254e-05 -2.27435634e-06 3.312094668e-05 -6.432828701e-06 1.183012251e-06 6.053661424e-06 7.382895154e-07 1.383972041e-06 0.005733305446 6.950089567e-05 0.03412064181 -0.0001347843947 -0.005105817218 -0.01834406746 6.484264414e-09 3.753635488e-06 -0.005327837894 -1.500663674e-07 -6.180582638e-06 0.0005599041031 -1.885702211e-06 9.604646729e-11 8.318767896e-05 -9.912686994e-07 -1.903612958e-08 1.555327897e-05 -7.234139391e-09 -6.346581513e-10 -5.242048929e-07 -1.157895928e-09 -6.982158494e-07 3.254668235e-05 -2.081988351e-06 -6.016848578e-07 -1.142981327e-10 6.857531658e-07 1.136916094e-08 6.394681277e-06 1.330403744e-06 5.255322939e-08 6.641323361e-06 2.40064975e-06 4.318632466e-08 -6.962056183e-07 4.042527667e-07 5.149451444e-09 3.742183136e-06 -6.596027876e-07 -0.0001779969951 0.04000588468 -0.004901179346 -6.534902117e-05 -5.441644506e-07 2.258798089e-05 -0.005960921231 0.0001861707556 0.007450778675 -2.9644376e-09 3.038614005e-06 -1.759263541e-07 -0.0001068066494 -0.002972764335 5.46910013e-11 3.256540962e-08 1.995056373e-08 4.789274311e-07 0.0002192124748 -6.76772176e-10 1.446036914e-07 1.868496618e-07 7.251068438e-10 -0.0001869023972 -1.60259831e-09 -5.021276171e-07 9.488627069e-06 2.054306012e-05 5.920976816e-07 3.785601457e-11 -2.016511222e-09 -1.163854041e-08 -5.631539927e-08 7.321921556e-05 -1.957696273e-12 -8.231006161e-09 -4.570131157e-07 -1.049414586e-05 -4.540951526e-06 -1.682161828e-11 4.452004355e-08 -1.130929727e-06 4.910499358e-07 2.599745336e-09 7.269905087e-12 -1.342720099e-08 8.384194717e-07 2.541666174e-08 9.263375931e-06 -5.247960728e-10 -2.064631827e-08 2.074272729e-06 -6.812775623e-07 -5.249589831e-08 1.363694164e-11 -8.95162374e-09 1.356613406e-06 -2.613604938e-08 -1.142627587e-08 5.079984294e-12 -8.564504527e-09 1.050363832e-06 3.551326184e-08 1.579153616e-06 --0.04557100178 -0.03799167002 -0.0005813920887 0.0004125337955 0.0001158682819 -6.104256058e-05 -5.672778944e-06 3.35755256e-05 -7.326687299e-06 2.717643314e-06 5.63335013e-06 5.363091382e-08 1.956950862e-06 0.0059244481 0.001188984284 0.04060581207 -0.0009638723434 -0.01002743967 -0.01145286482 7.90794239e-08 8.210164402e-06 -0.007056140328 -1.808789024e-07 -2.833270473e-06 0.0005172650958 -6.244891302e-06 -5.431568497e-08 -1.942934563e-05 -1.180763966e-05 5.557670237e-06 5.619088786e-05 9.900522522e-08 9.863775116e-08 3.890918819e-05 -8.261350221e-09 -2.109074077e-06 6.333817448e-06 5.685014919e-09 3.476073212e-08 2.765399712e-10 8.095808561e-07 6.68163035e-08 1.17193427e-05 1.984662346e-06 4.135629192e-07 2.109637083e-06 1.677908674e-06 2.665265084e-07 1.082501343e-07 4.808417792e-07 2.734931771e-08 4.152129948e-06 -1.248014659e-05 -0.0001567122721 0.04219645738 -0.005593521745 -7.606926777e-05 -3.113677537e-07 3.95790334e-05 -0.003867480457 0.0006431152085 0.008011661206 1.747790486e-08 3.43776626e-06 -1.965886611e-05 -0.002115806785 -0.0008356915499 1.14474157e-10 5.002875942e-07 2.934987302e-08 7.542146518e-07 0.0002140990151 -1.603036537e-12 3.340150123e-08 5.889344691e-07 2.184092536e-08 -0.0002176668632 -3.071207798e-10 -1.901934178e-09 -7.261847071e-05 3.985988201e-05 3.853886916e-06 -1.285768314e-12 -7.428884159e-10 -1.205378408e-10 -2.404175316e-08 0.0001132704679 -5.874830966e-12 1.92077942e-09 -3.678203047e-07 -3.431205973e-06 -1.607776686e-05 1.027137757e-10 2.640792558e-08 -7.185288293e-06 2.658691402e-06 4.163493181e-08 -6.920847852e-11 -1.6862838e-08 1.064287811e-06 1.579489683e-07 1.125029865e-05 1.106375056e-10 -2.070061478e-08 -1.75201523e-07 -6.790761418e-08 -5.69082365e-08 -5.131370235e-11 -5.542972475e-09 1.872125795e-06 1.324670081e-08 -4.408804017e-08 -5.639894425e-11 -8.67703741e-09 1.453056893e-06 4.052678032e-07 5.200373572e-07 --0.0455184514 -0.04062316326 -0.001336055922 0.0005301890339 0.0001008759303 -4.866368628e-05 -4.919965647e-06 2.810715144e-05 -5.874477388e-06 3.861957614e-06 4.505745786e-06 -2.056866785e-08 2.200024385e-06 0.008103774324 0.0006391678735 0.04135197225 -0.0004719052857 -0.01515512382 -0.004805479586 -1.525763873e-08 4.573994304e-06 -0.007666828114 -2.457195221e-08 -1.581158599e-06 0.0004327043943 -7.910246942e-06 -5.295497473e-08 -7.737308226e-05 -1.493945738e-05 6.435678178e-05 5.189206263e-06 9.182761012e-08 6.225911643e-08 6.732613767e-05 -5.263769945e-09 -3.757220527e-06 -6.773910103e-06 -8.984689363e-07 8.259275559e-07 4.768978059e-09 9.763000747e-07 2.691155842e-08 1.436660615e-05 3.294498485e-06 9.682673732e-08 -9.753856621e-07 1.147705117e-06 8.387996213e-08 1.124662768e-06 5.73848728e-07 9.650526576e-09 3.972795791e-06 -7.187075701e-06 -0.000182658764 0.04028647605 -0.004631618971 3.934767654e-05 -4.623721011e-08 4.033101629e-05 -0.002569229815 0.0001810572101 0.008713647777 1.236457676e-08 3.342911088e-06 -0.004419367686 5.298982726e-06 0.001736820288 -1.404488608e-09 1.330874833e-06 6.560305807e-09 2.528548181e-07 0.0001992137719 -1.428212582e-11 -2.848190721e-09 1.247645416e-07 -1.666565698e-09 -0.0001927973671 -2.150106334e-10 4.772743241e-08 -0.0001401490002 6.858015054e-05 3.742580447e-06 -2.751456399e-11 1.585369222e-08 8.96340076e-10 2.562531859e-07 0.0001179489219 3.006268832e-11 2.995686191e-09 -9.393701294e-08 -1.981705857e-06 -1.167948447e-05 5.188660541e-11 2.00380133e-08 -3.905828405e-06 -5.989508084e-07 -1.455894514e-06 -6.780208855e-11 -2.010150737e-08 1.327695312e-06 6.885346282e-08 9.998050707e-06 6.715233367e-11 -1.971366221e-08 -5.066829328e-07 5.705001251e-09 -7.183516144e-09 -3.08701911e-11 -5.224590179e-09 -4.973354144e-08 2.544049993e-09 2.17173232e-06 -4.836450135e-11 -9.964492424e-09 2.060213036e-06 -4.067808541e-08 -2.365826534e-08 -0 0 0 0 0 0 0 0 0 0 0 0 0 0.3492897371 0.001574796604 0.002196642949 0.004076610485 0.004687356475 0.2929757854 0.001452681429 0.001426528712 0.1839481822 0.0003333103144 0.0003490792674 0.07870364704 9.63365572e-06 2.716714611e-06 0.04231497208 0.01578361465 0.0006759569008 0.0004172973785 0.01002604794 9.236942948e-05 7.46002587e-05 0.003828512444 3.042301241e-06 1.493636054e-06 0.00199369905 0.0006799477226 2.197743986e-05 5.440281865e-06 6.104157639e-06 0.0008002296293 5.766590832e-07 1.123504711e-07 0.0006537376407 3.316947104e-07 3.784044228e-06 0.0001159044067 0.0001352128137 3.017349483e-06 2.112952749e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.03782112221 0.202553946 0.1061826138 0.01911208849 1.083926526e-05 0.001270117797 0.001224350363 4.970564007e-05 1.144238343e-06 9.34849316e-05 3.260156352e-06 6.447681885e-06 9.089539685e-06 3.601348846e-05 0.0002626952344 0.1185365773 0.0004367480659 5.780888969e-05 0.00408381634 1.118906371e-05 4.829188443e-07 0.05471559684 1.883494211e-06 2.300335135e-07 0.05234050236 4.647659956e-10 9.543727355e-09 0.007838775851 0.0001719845761 7.957680675e-05 8.567069737e-05 1.461225197e-09 4.295439443e-09 0.001310240879 2.634390965e-06 3.988868895e-07 0.0003711213092 1.133730836e-07 4.510614141e-07 0.0002910406059 4.280533847e-08 2.647517247e-07 5.722071827e-05 1.116380367e-07 9.883664568e-13 1.028201223e-08 5.957266474e-09 3.998046763e-08 6.991227183e-05 6.303712126e-08 2.382640175e-07 1.332427676e-05 1.732653046e-06 1.484783914e-09 0.1349492268 1.217684919e-06 4.02787133e-05 2.124926102e-07 2.522650954e-06 0.03020209507 0.0002215631704 1.479957987e-05 5.783837164e-09 9.559575199e-08 0.0005032624419 1.558422288e-05 6.878762883e-09 1.054899408e-08 1.603782585e-06 1.427155452e-08 2.968520552e-06 0.019665656 1.288143521e-09 7.978111144e-08 2.980205006e-07 2.094408402e-06 0.01174724094 7.667005248e-13 5.639738334e-08 7.357254886e-08 1.061786865e-06 0.004114228325 2.236458928e-09 5.784504122e-09 2.760676199e-09 1.258245975e-10 3.985925414e-07 1.272458892e-09 3.107857281e-09 0.000140952955 5.183014898e-10 1.231323141e-08 8.626295765e-11 1.630739274e-09 6.709069671e-08 3.644845166e-07 0.0004696676832 3.197260586e-11 3.891585952e-10 9.436291584e-06 1.064559738e-08 7.215164651e-08 3.122622194e-10 1.398047462e-11 1.002417016e-05 1.373507207e-08 2.467093622e-09 1.484902849e-10 2.737255597e-11 2.976008753e-10 1.066510411e-10 4.349082419e-05 4.606912197e-11 1.451867998e-11 1.512352711e-06 4.164872348e-10 8.152989253e-12 -0.004987111548 0.02048207941 0.005099201637 3.988903784e-05 0.0004573799004 0.0001058389332 2.735191475e-06 3.033492507e-05 2.098020431e-06 6.838360988e-07 4.033594036e-06 7.819569871e-08 4.420537385e-07 0.1982601962 0.0005530088575 0.003938469525 0.0005921192794 0.04884156611 0.003668765123 3.116660851e-05 0.004040895139 0.008363027342 4.921038257e-06 0.0005449290223 0.002487718017 4.43807956e-05 1.212483925e-10 4.355978938e-05 0.000114830917 3.051018095e-07 0.0001886336377 7.458832896e-05 2.03119719e-06 0.0001311644647 1.329270004e-08 1.250893294e-05 1.207549068e-05 1.661867073e-06 3.415403202e-05 7.803073682e-10 2.876250571e-05 1.376879941e-07 1.332183652e-05 1.629357499e-05 1.660137391e-07 3.444054252e-06 1.609383518e-05 2.143233367e-08 1.000207723e-07 1.395008083e-05 4.784706695e-08 3.018166199e-06 6.197092369e-06 0.003474648874 0.01619406994 0.1652384441 0.0007977950861 5.575005212e-05 0.0004191291972 0.0007584909466 0.000564230987 0.08741397671 6.258727734e-07 8.283938257e-05 4.446714244e-05 0.01961416935 0.002401130968 2.045337531e-07 9.447871988e-06 1.133221495e-06 6.122873291e-05 0.00314655432 2.748481309e-07 2.709692441e-05 5.990758825e-05 3.169168233e-07 0.0002447801283 4.039341527e-09 7.305542997e-07 9.631322622e-07 0.0003692417869 5.281832692e-06 2.428945261e-08 2.859445225e-07 6.801548572e-07 1.075813699e-05 0.000171193714 2.45898077e-09 3.241654062e-07 4.298385438e-07 1.050274459e-05 6.893943059e-07 1.56575126e-09 1.018910985e-06 7.814934613e-07 4.157534958e-05 1.137602891e-07 2.084018526e-09 3.811371324e-07 1.661045623e-05 1.586646683e-07 1.596356604e-05 1.434746215e-08 2.921654088e-07 8.010241912e-07 9.29438348e-06 2.547521996e-07 1.216780363e-09 3.554970437e-07 1.181705956e-06 1.314321295e-05 3.725364341e-07 7.791768722e-10 2.689660491e-07 1.140465702e-05 7.579066641e-08 1.268789331e-06 -0.005597159673 0.02472342975 0.007707543867 0.0002716131777 0.0003983520716 0.0001815065116 2.359060922e-05 2.227439489e-05 5.479972309e-06 3.692118034e-06 3.016776974e-06 5.345286641e-10 9.665503785e-07 0.1956677695 0.008459126865 0.005858334475 0.00246450784 0.05670021888 0.00133745971 9.777966481e-06 0.006313586863 0.009742116261 4.753310449e-06 0.0002594672793 0.003998157728 5.662079481e-05 9.762729204e-08 2.603603043e-06 0.0001113943867 1.39687808e-05 0.0002007779196 4.343487846e-05 7.293173689e-06 0.0002237295485 1.432793076e-08 1.167870408e-05 5.126252014e-07 1.327564511e-08 3.836717447e-05 1.43240055e-07 2.432341168e-05 5.455522517e-07 2.306133439e-05 1.495933253e-05 5.159428098e-07 4.230943431e-07 1.671826729e-05 2.964096506e-07 3.809767499e-09 1.3016484e-05 1.919054639e-07 4.160402834e-06 0.0006217877587 0.002910075796 0.02064640753 0.1501532716 0.003697833613 0.0001714935987 0.0004435829249 0.0003301290652 0.001442183785 0.09179846018 1.98890148e-06 4.727551412e-05 0.0002027297698 0.02623532377 0.0001692506412 8.166712629e-05 0.0001876481747 2.011125263e-06 0.0002692359526 0.003771667132 3.95010439e-12 4.319245222e-06 1.54188892e-05 1.462594847e-07 0.0006124953811 8.192698758e-09 4.285207267e-07 4.731205275e-05 0.0003410399646 1.682995279e-05 2.31519555e-09 8.659949263e-09 1.293907929e-11 5.276741761e-08 0.0001662259972 9.471258877e-11 5.661349837e-07 1.29665435e-06 1.819292128e-05 1.761820483e-05 4.19835102e-08 8.729585028e-07 2.073129638e-05 2.693621908e-05 3.351034882e-07 1.903809738e-08 2.366138722e-07 1.033866964e-05 4.679318882e-07 1.38079541e-05 4.762047355e-08 3.009558694e-07 1.018202294e-08 9.357318982e-06 1.163201459e-06 4.476354018e-08 3.084490757e-07 3.049822144e-06 1.105107429e-05 1.030702534e-06 1.778478888e-08 2.150007695e-07 9.991706467e-06 3.593231385e-07 2.420850042e-07 -0.00547522355 0.0251068315 0.008725664413 0.0004862640186 0.0003101205832 0.0002044462068 4.280199647e-05 1.397529011e-05 6.222601306e-06 6.060468562e-06 1.870878883e-06 9.311828594e-11 1.250483187e-06 0.2052068298 0.003843074835 0.006257258724 0.0009729718725 0.06361454356 0.0002306169173 1.816123175e-07 0.007908777091 0.009535014267 5.3830644e-07 0.0001403823357 0.004594788466 6.167253806e-05 9.215860354e-08 4.514445304e-05 1.20140621e-05 0.000282732028 2.077963736e-05 3.274532976e-05 4.337972413e-06 0.0002493658437 4.718492405e-09 1.378465797e-05 7.003463976e-07 1.58727484e-06 3.850841031e-05 1.001321288e-07 2.22412743e-05 1.651829654e-07 2.443222056e-05 1.468426081e-05 2.268015673e-08 1.153253598e-07 1.716780197e-05 2.116121621e-07 4.621282244e-07 1.277286174e-05 5.289518609e-08 3.99584148e-06 0.0003549075004 0.003251396725 0.02033953934 0.1488918663 0.001163549175 7.108560151e-05 0.0006291607385 0.000148807757 0.0003553825036 0.0961604227 6.110598667e-07 3.737940862e-05 0.004388074394 1.335363552e-06 0.02480364582 9.026698783e-05 0.0008302820764 4.448662621e-06 8.028311349e-05 0.003706887217 6.772972221e-08 2.828047093e-07 7.439424512e-07 2.427177921e-09 0.0008093370452 7.591525487e-09 1.162599844e-07 0.0003477153666 8.254350182e-05 5.286355643e-06 9.283239404e-10 2.52065539e-07 4.871597183e-09 1.643451329e-06 0.0001317782919 9.915377577e-09 7.684992739e-07 7.34248362e-07 2.575127839e-05 2.618628007e-05 2.102645343e-08 8.375210606e-07 5.101552678e-05 7.780878025e-07 1.418678398e-06 8.471603333e-09 2.00911043e-07 8.159009258e-06 1.310777564e-07 9.230069465e-06 2.738151651e-08 3.579397749e-07 1.393088485e-07 1.060772978e-05 6.934489679e-07 2.279359016e-08 3.23590416e-07 1.059999594e-05 3.604476682e-07 4.376566242e-06 9.5166294e-09 2.115065026e-07 9.108234825e-06 1.508335042e-09 9.762464082e-09 -0 0 0 0 0 0 0 0 0 0 0 0 0 -0.0315207961 0.004240406438 0.02728038966 0.03459095925 0.003861347286 -0.03845230653 0.01622526287 0.002308891127 -0.018534154 0.005048355827 0.0009284089503 -0.005976764777 -0.0003128281511 -0.000295584708 0.0006084128591 -0.002844672499 0.0002381998155 0.002606472683 -0.0009961451231 0.0001371806506 0.0008589644726 2.339432406e-05 4.529213494e-05 -6.868645901e-05 0.001182970125 -0.001146545705 -3.64244205e-05 6.503981763e-05 1.275338299e-05 -7.779320061e-05 -8.93281453e-06 -7.611281888e-06 1.654409642e-05 -5.028909249e-07 -2.088867461e-05 2.139156553e-05 -1.956140589e-05 2.66178101e-06 1.689962488e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.0007402541637 0.003964488442 0.002078259909 0.0003740714778 2.121515907e-07 2.485938894e-05 2.396360555e-05 9.728639677e-07 2.239561251e-08 1.82973444e-06 6.380943168e-08 1.261972962e-07 1.779050754e-07 -0.0007938852837 -0.007934778651 0.006014044498 -0.006450604224 -9.886780893e-05 0.004665976502 -0.0004730921291 -2.276497733e-05 0.001154267179 -1.956373912e-05 -8.065419233e-07 0.001040799676 -3.444300088e-09 -8.543142985e-08 0.0001534980338 -0.0001066825077 -4.778366244e-05 0.000153805085 4.063020947e-08 1.765575734e-08 2.556304607e-05 -9.970492855e-06 -2.116761087e-07 1.675224661e-05 -4.33485722e-07 -4.269326417e-06 9.582592954e-06 -1.220915087e-07 -1.777348471e-06 2.782750861e-06 5.397392062e-08 4.628601065e-10 -4.603269005e-07 -6.199539334e-08 -7.703427098e-07 1.897854266e-06 -1.941729558e-07 -1.581766279e-06 1.820539169e-06 -8.07914549e-05 1.8878034e-06 0.002176303292 -7.654235348e-05 -0.002404965712 -4.727673336e-06 -5.68701509e-05 0.003558464615 -0.00504285022 -0.0001868946256 -2.427792109e-07 -2.524758316e-06 -7.852316311e-05 -0.0008515297714 3.087286908e-06 -3.722512978e-07 -3.794770267e-05 -8.726517884e-07 -0.0001218176274 0.0004292079522 -5.733058726e-08 9.724617762e-07 -1.7839668e-06 -3.138314428e-05 0.0002525065019 -6.554206648e-11 -1.664737633e-09 -4.073888462e-07 -1.418169664e-05 9.137796676e-05 -7.806035097e-08 -3.740498614e-07 -1.31233616e-07 -7.932357346e-09 -5.976197836e-08 -5.45860012e-08 -5.607638683e-08 9.779826375e-07 2.081854622e-07 -1.898637629e-08 -3.892138982e-09 2.899878862e-08 -1.212891628e-07 -1.796632759e-06 1.090121163e-05 -1.3402057e-09 -9.899757525e-09 6.757436405e-07 -2.250597987e-08 -5.437513302e-07 -1.474612078e-08 5.963707275e-10 3.871798175e-07 -4.542500757e-07 -5.334868956e-08 -6.886908478e-09 1.394573464e-09 1.217070122e-08 -2.309718172e-08 7.5239382e-07 -2.73465845e-09 1.728232886e-09 -9.346304837e-08 6.770072601e-09 -6.9126687e-09 -0.0152993279 0.06283437736 0.01564319489 0.0001223705272 0.001403137869 0.0003246898587 8.390947515e-06 9.306067471e-05 6.436251167e-06 2.09785416e-06 1.237415229e-05 2.398866806e-07 1.356120678e-06 -0.06199734367 -0.0001515275133 0.01434628393 -7.76733334e-05 -0.01149101795 0.01471407646 -1.008824733e-05 -0.001337295139 0.02563581258 -3.856177873e-06 -0.0002697000452 0.007531351638 -1.774021306e-05 1.49487063e-10 0.00013020779 -7.52909321e-05 -8.284969072e-07 0.0005325856116 -1.80775932e-05 -1.188897494e-07 0.0004088709851 -5.882686667e-09 -4.93728582e-06 3.614639791e-05 6.69898349e-06 -9.040678475e-06 1.908882353e-10 -4.028447416e-06 4.320179825e-08 4.551633806e-05 -2.509226019e-06 5.608569603e-08 1.286274381e-05 -2.554911395e-06 4.125209648e-08 -8.130488538e-07 -3.322764597e-06 -2.379763333e-10 1.03496882e-05 -2.855908934e-06 -0.001345338162 0.0425340455 -0.05971674311 -0.0003416037149 -1.820032505e-05 -0.0001339193822 -0.0009698322353 -0.0001634523507 -0.02758900786 -1.922914196e-07 -3.562780755e-05 -1.427141618e-05 -0.006090384306 0.007649470684 -6.356028856e-08 -1.49049653e-06 6.024128154e-07 3.42354896e-06 0.009675857126 -8.585770268e-08 -9.47504172e-06 -2.0355702e-05 -1.078802009e-07 0.0007494486409 -3.007946286e-09 -7.78344993e-07 9.892033429e-06 -9.82525256e-05 -1.097787387e-06 -7.592303806e-09 -1.092227846e-07 -3.131568768e-07 -3.95407793e-06 0.0005246192071 -8.074874349e-10 -9.506946092e-08 4.474767027e-07 1.007992483e-05 5.618223768e-06 -4.762214633e-10 -3.866207221e-07 1.128797862e-06 -1.41523608e-05 -4.091105329e-08 -6.230212902e-10 -2.092505221e-07 -1.068208483e-07 1.087353463e-07 5.34350644e-05 -5.088127728e-09 -1.12274517e-07 1.448129257e-06 -3.590583594e-06 -1.267657252e-07 -3.510018377e-10 -1.414361441e-07 3.486164591e-06 -4.358191551e-06 -1.547001035e-07 -2.270086051e-10 -1.24819631e-07 8.372072269e-07 1.29039871e-07 6.434046835e-06 --0.007549205771 -0.03334588782 -0.01039560028 -0.0003663400525 -0.0005372799658 -0.0002448080965 -3.181798871e-05 -3.004273601e-05 -7.391148546e-06 -4.979768381e-06 -4.068897703e-06 -7.209490369e-10 -1.303641154e-06 -0.004053781362 0.03876764188 -0.01005410935 0.01073759717 -0.003799435918 -0.003947063679 -0.0002292116877 0.001362452447 -0.01312442037 3.830352377e-05 3.669253126e-05 -0.005346755496 6.275237631e-06 2.147888414e-06 -4.9030142e-06 5.24998666e-05 -6.530943196e-05 -0.0001279505175 -8.46067156e-06 1.67217449e-05 -0.0003044790126 3.875980111e-07 1.832697948e-06 -4.154012857e-07 -1.459601815e-07 3.729323522e-06 2.176075696e-06 -8.713455708e-07 3.03318581e-06 -3.4104103e-05 -6.989320519e-07 2.277721121e-06 -1.566927328e-06 -4.437076851e-07 1.747884035e-06 -1.51183639e-07 2.175141284e-07 1.396549434e-06 -6.505638659e-06 -0.001242175178 0.002206055656 -0.02357593604 0.007763576465 0.02288826002 -0.0001867650457 0.000267009936 0.0009985117064 0.0108098524 0.003931779969 -1.66283789e-05 4.516454435e-05 0.002072476007 0.0003257949506 -0.0008560465665 -0.0001177985004 0.0001965241854 8.460924399e-06 -1.831216473e-05 -0.005128067004 3.730600473e-09 1.049319133e-06 3.101887819e-06 1.677465822e-06 -0.0008226054948 1.296878248e-07 6.174124601e-07 -1.408201969e-05 -4.137165745e-06 7.801778632e-05 -4.398586163e-09 8.184576202e-09 -1.002094386e-09 7.378673534e-08 -0.0002241124419 7.04421802e-09 1.166905855e-07 2.987925778e-06 -6.588158849e-06 -2.894198655e-05 -2.114704673e-07 5.178513845e-07 -1.38604397e-05 7.634472449e-06 3.547519603e-06 -7.591412377e-08 1.82194956e-07 -1.561214562e-06 1.513012897e-06 -2.103277986e-05 -1.091691495e-07 2.005639116e-07 -3.455573794e-08 -1.433041372e-06 3.240310066e-06 -1.107767023e-07 2.111335136e-07 -3.787566633e-06 -1.450862244e-06 3.401642828e-06 -6.484618255e-08 1.422739374e-07 -1.8597724e-06 5.343369073e-07 -1.639875711e-06 --0.007309033276 -0.03351583095 -0.0116481402 -0.0006491278137 -0.0004139888794 -0.0002729211173 -5.713761523e-05 -1.865601641e-05 -8.306729322e-06 -8.090293663e-06 -2.497489991e-06 -1.243062761e-10 -1.669305945e-06 0.008824025533 0.02643610119 -0.01083708186 0.007127972368 -0.0002015704928 -0.001472589974 3.52602457e-05 0.001383652854 -0.012723685 9.534365804e-06 3.826563704e-05 -0.006101755403 1.860833168e-06 2.007588263e-06 -6.727936318e-05 3.881414542e-05 -0.0001664800759 5.311607262e-05 -5.181984788e-06 1.138595806e-05 -0.0003341989262 2.281908464e-07 1.34363654e-06 -1.518380807e-06 1.903223607e-07 5.064664436e-06 1.880777861e-06 -1.019474052e-09 1.599936591e-06 -3.533598973e-05 5.748146443e-07 4.822457239e-07 6.399961757e-07 1.620823302e-07 1.62219409e-06 -1.561135577e-06 6.555197633e-07 7.19730981e-07 -6.279307449e-06 -0.001052047141 0.001981381116 -0.02382408269 0.01743032163 0.01255967159 -0.0001543600441 0.0002638832136 0.0007046304503 0.005439314234 0.009708251787 -9.629451975e-06 2.841073118e-05 -0.002467337713 0.0001825344565 0.005110410398 -0.0002237562978 0.0003479999217 2.277621912e-05 -6.304443036e-06 -0.00499859777 -1.100354908e-07 1.731155665e-07 8.419299432e-07 -7.727627855e-08 -0.001078925255 1.260654633e-07 2.336996832e-07 -6.615282162e-05 3.786858867e-05 4.556903232e-05 -1.571098158e-08 4.227487805e-08 -6.622179408e-08 -8.599514848e-08 -0.0001762966552 -8.318324608e-08 2.526758443e-07 3.053245294e-06 -5.948137315e-06 -4.100804742e-05 -1.551847443e-07 4.39096653e-07 -7.739584593e-06 2.137389555e-06 -8.743514916e-06 -4.853235563e-08 1.303457967e-07 -1.1166397e-06 7.158919453e-07 -1.418545147e-05 -9.371821958e-08 1.783447843e-07 -2.040717917e-07 -6.366425937e-07 2.630808778e-06 -8.512647476e-08 1.775622591e-07 2.306424563e-07 1.88373117e-06 -5.72038406e-06 -4.911464106e-08 1.18556225e-07 -2.416040907e-06 5.322408812e-08 2.739003675e-07 -0 0 0 0 0 0 0 0 0 0 0 0 0 0.01799345834 -0.02314170501 0.005148246673 0.004113663011 -0.03711442399 0.03300076098 0.002455859289 -0.01609809545 0.01364223616 0.0009290815387 -0.005169934235 0.004240852696 -0.000556608114 0.0001661732685 0.0003904348455 0.003027101359 -0.003300663439 0.0002735620798 0.0008256760815 -0.0009561237265 0.000130447645 0.0001296865374 -9.798293098e-05 -3.170360641e-05 -3.035230701e-06 -0.0002366169605 0.0002396521912 1.251020389e-05 -6.895859167e-05 5.644838778e-05 -1.724103712e-05 3.947265868e-06 1.329377126e-05 6.280694769e-06 -1.872383992e-06 -4.408310777e-06 1.763615602e-05 -2.018104933e-05 2.544893312e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.0001067311622 0.0005716069962 0.0002996472108 5.393429113e-05 3.058839376e-08 3.584270921e-06 3.455115278e-06 1.402692575e-07 3.229039252e-09 2.638143665e-07 9.200157373e-09 1.819535066e-08 2.565067025e-08 0.002939739135 -0.002147186714 -0.001183951081 -0.0004483812069 0.002394049369 -0.002217233899 -0.000109600286 9.831198424e-05 0.0001062190373 -2.316274033e-06 6.849268553e-06 0.000142594331 1.889160641e-08 -1.562393483e-08 2.211553764e-05 0.0001412201805 -0.0001424597479 1.144251025e-06 1.025325895e-08 -6.958658185e-08 3.753462556e-06 -5.815876649e-07 3.910396252e-06 -2.381523105e-06 2.14568259e-06 -8.702197839e-07 -5.71887327e-07 7.178985953e-07 -3.074341204e-07 -2.831071408e-07 -6.711294193e-09 -4.516796476e-09 -4.729386885e-08 2.976488271e-07 -1.608931969e-07 1.687238555e-08 8.21115764e-07 -3.897540038e-07 -4.249312624e-07 -6.207427381e-05 -2.178611638e-06 2.888877686e-05 0.0004193316174 -0.0004393489448 -1.676869586e-05 1.646623842e-05 -0.0008266413931 -0.0007282308428 0.001305325253 -3.958330076e-07 3.365582525e-07 3.088106897e-05 -0.0001469676094 -1.790476944e-05 -3.294978481e-06 5.176777711e-06 8.335435491e-06 -1.256830663e-05 4.102029615e-05 -1.038915801e-07 -3.213492007e-07 1.191279236e-05 -4.717500421e-06 2.498663765e-05 5.833440782e-10 5.940313487e-08 3.733298788e-06 -1.553133698e-06 8.831156462e-06 -2.564907817e-07 1.539487976e-07 -1.837894437e-08 -2.083989244e-09 2.913707701e-08 3.344379603e-08 -8.276290044e-08 1.221906762e-06 -4.060739477e-09 -1.016196081e-06 -6.107392495e-09 -1.436130669e-08 7.799240487e-07 -2.832329845e-07 8.226242473e-07 -2.580862029e-09 3.93499934e-09 -1.390459612e-07 2.114642459e-07 -5.960708606e-08 -2.913291053e-09 -2.949315257e-09 -8.064827113e-08 -1.259704539e-07 1.930789771e-07 -3.194267914e-09 -2.763569437e-09 -3.874425787e-08 -7.279375885e-09 1.580956565e-07 -2.882086734e-09 -1.358109734e-09 4.123526813e-08 -4.969213752e-08 -9.442707074e-10 --4.323224143e-06 -1.77554922e-05 -4.420392729e-06 -3.45789842e-08 -3.964932023e-07 -9.174958829e-08 -2.371081077e-09 -2.629672089e-08 -1.81873064e-09 -5.9280341e-10 -3.496639478e-09 -6.778623844e-11 -3.832072686e-10 0.01086770412 -0.01097310918 0.0001189129236 -0.005520991608 0.005385441436 0.0001346613608 0.0003738068627 -0.0003730037722 -7.666419682e-06 -5.719280571e-05 6.190370829e-05 -6.761781985e-06 -4.012716537e-08 7.885152878e-08 -7.050505294e-08 1.091650957e-05 -6.851153923e-06 -4.194342074e-06 1.193651292e-05 -1.262919081e-05 5.822826265e-07 -4.376715662e-07 4.440463923e-07 -1.519211247e-08 -1.951845217e-08 -1.48766366e-07 1.689464712e-07 1.729321516e-06 -1.983568289e-06 2.425110797e-07 1.439563521e-06 -1.648574255e-06 2.060692295e-07 7.630247962e-07 -6.038477716e-07 -1.582369765e-07 7.846138574e-07 -8.381072608e-07 5.150783011e-08 -0.0001681847424 8.230956785e-05 -0.0002713020184 0.01255511636 -0.01219260626 0.0001360333617 -0.0001203520424 -0.000229384243 -0.007417811061 0.007639673203 1.173261315e-05 -2.039259534e-05 -0.0009749668492 0.000987230323 -4.029897459e-06 1.562514557e-06 -1.987798866e-06 -7.57483437e-06 6.750986436e-06 -1.485732059e-06 2.589342358e-06 -2.494780942e-06 4.740289459e-06 -4.805501304e-06 -2.326416319e-07 1.150193313e-07 -4.274826219e-07 2.338095522e-07 4.585895846e-05 -4.575480516e-05 8.925215854e-08 -1.003664899e-07 2.879721828e-06 -2.944545621e-06 -7.106788855e-08 -2.991813734e-08 2.655267039e-08 -1.620029576e-06 1.602604962e-06 1.625480608e-08 4.808027709e-08 -7.953786999e-08 -2.016472318e-08 2.349447333e-06 -2.294023925e-06 3.639793068e-08 -5.391611208e-08 1.247261594e-06 -1.543893909e-06 2.991097888e-07 7.485523652e-08 -8.627279653e-08 -8.360758411e-08 1.745334984e-06 -1.649635449e-06 2.376476498e-08 -3.423593286e-08 -5.997368817e-08 2.397140654e-06 -2.326365603e-06 1.752178088e-08 -2.617946227e-08 6.007082872e-07 -8.773441969e-07 2.832377802e-07 --0.01352519994 -0.05974268203 -0.0186248165 -0.0006563369189 -0.0009625938385 -0.0004385995762 -5.70052893e-05 -5.382473648e-05 -1.324202372e-05 -8.921781318e-06 -7.289860237e-06 -1.29165639e-09 -2.335610896e-06 0.07964152311 -0.01885925806 -0.01660171479 -0.00574680729 0.01753896191 -0.006433287207 0.0001323736417 0.001892867491 -0.02350870664 -1.443489128e-05 0.0001648623185 -0.009595341586 1.597790393e-05 -1.192825352e-06 -8.4784262e-06 0.0001269066384 -9.59392747e-06 -0.0003694992749 2.064744865e-05 -8.357315908e-06 -0.0005429958753 -2.088247228e-07 4.215251673e-06 -7.727674004e-07 -2.493457888e-07 1.173966667e-05 -1.171677194e-06 4.453056072e-06 -1.970602132e-06 -5.971039334e-05 3.696408652e-06 -1.658856444e-06 -2.016300646e-06 3.623890605e-06 -1.415610787e-06 -1.425715288e-07 3.337681021e-06 -8.097144683e-07 -1.129174028e-05 0.0009694510183 0.0002090828572 -0.04187710285 0.06623306327 -0.01113037713 0.0001753303412 1.975043901e-05 0.001023959997 -0.005677020786 0.03280187875 1.014757303e-05 2.858238319e-06 -0.001121499074 0.00544185579 -0.001519178992 9.953943647e-05 -6.37949522e-05 -5.753390549e-06 7.376220367e-05 -0.009167831424 -2.096741185e-09 1.537416432e-06 1.056785471e-05 -6.562793058e-07 -0.001474782205 -6.926784448e-08 -1.68962159e-07 -3.684626392e-05 0.0001787283839 -3.316986788e-05 3.419968586e-09 2.920283036e-09 1.198259697e-09 1.07021718e-07 -0.0004014984998 -3.919720643e-09 1.780215337e-07 -2.829443206e-06 -4.636552644e-06 -5.078924751e-05 1.360029455e-07 2.251346748e-07 -2.529208029e-05 2.228144187e-05 -1.600307421e-06 5.058172697e-08 7.688309506e-08 5.91715891e-08 -1.406357979e-06 -3.635867133e-05 8.068265875e-08 4.722862395e-09 -4.315656143e-08 4.64638533e-06 -1.348888313e-06 8.064872769e-08 4.147015989e-08 -7.320309189e-06 5.307412913e-06 -1.220219097e-06 4.382250185e-08 5.081609573e-08 -1.735347468e-06 -2.076313977e-06 -1.456925542e-06 -0.01309911957 0.06006647671 0.0208755899 0.001163355334 0.0007419435138 0.000489124377 0.0001024010188 3.343498113e-05 1.488717269e-05 1.449928055e-05 4.475957186e-06 2.227794994e-10 2.991700454e-06 -0.07557642442 0.01356035245 0.01824552492 0.003900278694 -0.0161138865 0.002439383027 1.966598765e-05 -0.002553906128 0.02279445148 4.171185693e-06 -9.677006834e-05 0.01094239018 -6.783675815e-06 1.201878312e-06 0.0001192257606 -6.737873586e-05 0.0001508512072 5.013445927e-05 -1.536656783e-05 5.361588211e-06 0.0005978317065 1.283163799e-07 -2.897132602e-06 2.673030212e-06 -1.460921585e-07 -1.36478969e-05 1.005398427e-06 -3.017079093e-06 9.967940218e-07 6.248326716e-05 -2.807318189e-06 3.48060435e-07 -5.821768305e-07 -3.708402406e-06 1.063509506e-06 2.244983844e-06 -2.635965272e-06 4.187892368e-07 1.100613933e-05 -0.0007467129285 -0.0005418473638 0.04180992313 -0.05982114426 0.006583810282 -0.0001158654384 -9.556308628e-05 -0.0009542375802 0.002977049085 -0.03041769331 -5.654032211e-06 -6.689210586e-06 0.005934549094 9.032653994e-05 -0.01111019478 -0.0001626751033 -6.414589176e-05 1.128652096e-05 -2.021835905e-05 0.008941963301 -8.949451677e-08 2.084811184e-08 -1.701180148e-06 -1.928771903e-08 0.001933936335 6.761486965e-08 -1.722568778e-08 0.000108545912 -0.0001556699885 1.545141236e-05 -9.263923829e-09 -1.867672853e-08 -3.541938491e-08 2.849105989e-07 0.0003159593756 -5.083249431e-08 -2.074885836e-07 2.251418178e-06 3.947773829e-06 7.243743543e-05 -9.586459335e-08 -2.927692743e-07 1.094552809e-05 6.478044079e-06 8.166366305e-06 -3.086839749e-08 -8.45854603e-08 8.10547263e-07 5.958682345e-07 2.470354085e-05 -6.380616906e-08 -3.003964015e-08 3.435097659e-07 -4.794900918e-06 1.185395373e-06 -5.724190981e-08 -7.269719927e-08 -4.649551328e-06 9.1820277e-07 1.015825372e-05 -3.1593409e-08 -6.565910384e-08 3.818946577e-06 -1.481234318e-07 4.569634255e-08 -0 0 0 0 0 0 0 0 0 0 0 0 0 0.2639982369 0.001205578172 0.002078167571 0.002918528218 0.002852961161 0.1790322028 0.0006921645132 0.0005555021375 0.07151661371 3.358539776e-05 2.724439595e-05 0.006072041596 -5.712882517e-08 7.655188296e-08 -0.001246418362 -0.002807959707 -0.0001197851296 -8.370173022e-05 -0.0004808155083 -4.436690024e-06 -4.409031681e-06 -0.0002908126152 -2.773659214e-07 -4.541590061e-09 0.0002557185401 8.328157801e-05 2.781907866e-06 -3.421920224e-07 -3.123057387e-07 -4.050715352e-05 5.947876637e-08 -4.291593688e-09 0.0001101602462 -9.832078092e-08 -9.757251627e-07 -3.367656915e-05 2.208053591e-05 4.93161866e-07 4.012259278e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.136759867 0.2495384266 0.1183741171 0.02744512307 -0.0004259485133 -0.002520417748 -0.001910784133 -0.0002082137869 2.776890596e-05 0.0001246485062 2.302876194e-05 1.325936575e-05 -1.870597394e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.03127525951 0.005494326129 0.003983148203 3.969373339e-05 0.000549671634 -0.0001211296958 6.571698562e-06 3.382323651e-05 -1.114554386e-05 5.030615627e-06 9.422005601e-06 1.273905221e-06 2.944315341e-06 0.1323912725 0.0003909119965 0.02921426462 5.766675355e-05 0.006250515562 -0.003403840587 -1.485951533e-05 -0.001867105443 0.00443680683 3.240729491e-06 0.0003656039655 0.001366664274 -0.0001145380224 -5.139013819e-10 0.0001779611418 5.83804182e-05 3.374046054e-07 -0.0001034449396 2.169933899e-05 5.869952752e-07 4.601998696e-05 1.659674218e-08 1.742906117e-05 2.963978566e-05 -1.210641975e-05 2.867779831e-05 4.53217723e-10 2.324712673e-05 1.222697536e-07 2.227096826e-05 1.403402863e-05 1.745926967e-07 8.72764537e-06 1.787836085e-05 1.034030048e-07 -1.329429507e-06 1.289057784e-05 4.836804013e-08 8.859290971e-06 -5.290414375e-06 -0.003276907408 0.03531854714 0.1385178612 0.000625854789 -5.592906919e-05 -0.0004535323248 -0.001858137465 0.0002583059723 0.03363716185 -6.410845458e-07 -6.697727842e-05 -5.565339435e-06 -0.002679378237 0.0007633423194 -2.08755938e-07 -1.104230886e-05 -4.095444652e-06 -0.0002674828357 0.00149216675 -2.80010304e-07 -2.453633862e-05 -0.0001188698184 -6.13148686e-07 -0.0001884128713 -2.161080613e-09 -1.121032814e-07 -5.91105154e-07 1.177803822e-05 1.478074919e-07 -2.474382572e-08 -2.722592647e-07 8.302464299e-07 1.276481795e-05 3.973266777e-05 -2.462481775e-09 -2.908972312e-07 4.183446625e-07 1.195534794e-05 -7.642393501e-06 -1.608752281e-09 -1.003469931e-06 4.301846484e-06 3.719373081e-05 9.406691721e-08 -2.154040956e-09 -3.072733325e-07 1.707648103e-05 1.486404674e-07 1.033953599e-05 -1.39406273e-08 -2.712912285e-07 2.967047924e-06 1.088193374e-05 2.630195707e-07 -1.271864742e-09 -3.37626031e-07 3.328483927e-06 1.440450968e-05 3.877550917e-07 -8.11888206e-10 -2.401580976e-07 1.385889647e-05 1.006455308e-07 2.063472015e-06 --0.03400284354 0.003588263554 0.005230293025 0.000182094621 0.0005264273819 -0.0001281985288 1.519275872e-05 3.149132847e-05 -1.815450395e-05 1.056959613e-05 7.491037766e-06 1.050273473e-07 4.306753964e-06 0.132840086 0.006926056395 0.03524201336 0.0002507050947 0.008181088315 -0.00284892788 -2.094253217e-06 -0.002257155031 0.004441134928 6.998848729e-06 0.0003078763911 0.002049530513 -0.000130699398 -3.80839705e-07 -3.842171015e-05 4.7122312e-05 -6.897808692e-06 -5.365659599e-05 1.668910718e-05 2.884928638e-06 6.378519466e-05 2.693632591e-08 1.706600503e-05 6.68013998e-06 -1.024252082e-06 2.63935855e-05 1.049424309e-07 1.911983491e-05 5.064177389e-07 2.571949386e-05 1.43601749e-05 9.196728095e-07 2.709340716e-06 1.740628975e-05 8.763258401e-07 2.487225682e-07 1.225815726e-05 2.323093089e-07 9.604008143e-06 -0.0005930404856 -0.002801021284 0.03833418148 0.1296496341 0.003644786517 -0.0001707246494 -0.0005033511969 -0.001289328504 0.0008894809433 0.03962388807 -1.703508023e-06 -3.201976751e-05 -1.520417585e-05 -0.001727873914 0.0001561498279 -8.088160454e-05 -0.0002180902584 -6.002401926e-06 -0.0005486307191 0.001710330277 -8.012579421e-11 -3.836641423e-06 -4.83903662e-05 -6.799163307e-07 -0.0002269653891 -1.069355387e-08 1.99534724e-07 -7.379845079e-06 -1.714174967e-05 -8.345208005e-07 -2.269152495e-09 -6.139230041e-09 2.069130911e-09 1.161515487e-06 4.724681869e-05 -2.367989516e-10 -5.426559099e-07 1.678245545e-06 2.904191299e-05 -3.21999824e-05 -3.854854129e-08 -7.680128386e-07 2.331052269e-05 1.955101669e-05 2.969642796e-07 -1.775454332e-08 -1.858657771e-07 1.141847439e-05 4.780481679e-07 7.23402688e-06 -4.645274426e-08 -2.879332569e-07 -2.960960409e-07 1.1452873e-05 1.433667374e-06 -4.330175797e-08 -2.963406998e-07 5.144210215e-06 1.295091149e-05 1.257958044e-06 -1.672307619e-08 -1.932152114e-07 1.234506887e-05 5.254742876e-07 3.448409215e-07 --0.0340004526 0.002506633008 0.005685728861 0.0002918431373 0.0004659891876 -0.0001214089154 1.890373931e-05 2.591681778e-05 -1.923921071e-05 1.28979605e-05 5.734561942e-06 -4.384293514e-08 4.856399028e-06 0.140867462 0.003382134303 0.03615613779 9.598550036e-05 0.008757312642 -0.00134165043 -2.712502243e-07 -0.00244415173 0.004205014175 1.480215854e-06 0.0002471061128 0.002336435703 -0.0001343463908 -3.203188961e-07 -0.0001497836076 1.652804876e-05 -1.385836343e-05 -1.221785959e-06 1.567672496e-05 2.166418749e-06 7.164012297e-05 8.289343774e-09 1.728607694e-05 -8.216813852e-06 1.103440666e-05 2.180816394e-05 5.973803405e-08 1.766628547e-05 1.665375321e-07 2.499122157e-05 1.650662571e-05 1.598670707e-07 -1.235307028e-06 1.664829557e-05 3.980604775e-07 3.009584196e-06 1.216044361e-05 7.402827233e-08 8.994126169e-06 -0.000329918727 -0.003099977832 0.03689993729 0.1309150533 0.00131759385 -6.905440623e-05 -0.0006911574803 -0.0008890498919 0.000262913761 0.04327930206 -4.274579904e-07 -2.147980606e-05 0.0003526914177 -1.004441191e-06 -0.001678921834 -8.715080331e-05 -0.0009140122529 -4.082124421e-06 -0.0001956855216 0.001717093459 -6.664372588e-08 -3.44462619e-07 -9.350238094e-06 4.499075194e-08 -0.0002232502124 -1.023844394e-08 1.797167617e-07 -3.995950516e-05 -2.777713618e-06 -3.171228582e-07 -5.679159491e-10 -2.996142761e-07 -1.085089183e-08 -7.138449978e-06 4.611090636e-05 -8.325668403e-09 -7.292919396e-07 9.262441997e-07 3.716673397e-05 -3.743019965e-05 -1.810569468e-08 -6.932089209e-07 4.049105138e-05 7.765710848e-07 1.257955945e-06 -7.490985371e-09 -1.545524887e-07 9.764302972e-06 1.504596755e-07 5.160664798e-06 -2.595383588e-08 -3.430853727e-07 -1.055836543e-06 1.286447838e-05 9.007454998e-07 -2.134094498e-08 -3.065790114e-07 1.298257094e-05 4.976495714e-07 6.070566886e-06 -8.568238382e-09 -1.876223487e-07 1.170498525e-05 -7.278459531e-09 1.401227171e-08 -0 0 0 0 0 0 0 0 0 0 0 0 0 -0.06701504964 -0.003874690572 -0.02278685981 -0.01858869909 -0.002794500811 -0.02951920367 -0.003379654366 -0.000562350416 -0.008384006229 0.0005876476358 0.0001189324008 0.002242336089 -2.940304204e-05 -2.799862824e-05 0.001368050109 0.0002448267557 4.892110771e-05 0.0002919912367 -0.0002151353279 -1.586762862e-05 -8.364148902e-05 1.07536025e-05 3.917264607e-07 -5.767910631e-07 -0.0002192291748 0.0001106203805 3.507963183e-06 1.210214902e-05 2.674159219e-06 3.315675889e-05 8.03627277e-07 6.965812698e-07 -2.111494426e-05 -1.253855147e-07 -6.214729747e-06 1.871062288e-05 -7.262504988e-06 -1.081885055e-06 -5.211609168e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.08612784605 -0.01727817092 -0.01817615757 -0.0008688588751 -8.461838068e-05 0.0004196139332 -0.0001390389965 4.329587635e-05 8.231038957e-06 -5.881876905e-05 8.470644965e-06 -1.156771251e-05 -1.335112103e-05 0.0005183338761 0.005381743617 -0.1491502245 0.001038550739 5.810133275e-05 0.002421299683 -0.0001181749131 -5.763198288e-06 -0.01021409752 -2.759482894e-05 -1.172412474e-06 -0.005547436306 -7.941376698e-08 -1.95578012e-06 0.002183629464 -3.259696867e-05 -1.543272008e-05 -8.154132301e-05 -1.125506429e-07 -4.93191736e-08 -0.0001324711093 1.109736971e-05 3.863224782e-07 0.0001361326134 4.02122546e-07 4.265811735e-06 -0.0001432462402 1.355866302e-07 2.241654237e-06 -4.583834971e-05 1.466709477e-06 -4.19453188e-10 3.919429289e-07 5.91543232e-08 7.550257318e-07 -4.025960255e-05 1.49781364e-07 1.583109509e-06 -1.899904785e-05 -7.871423576e-05 1.883844543e-06 -0.06328602222 7.927992465e-05 0.00250609059 -4.469785044e-06 -5.343034011e-05 -0.01012810545 0.001715789773 6.102464131e-05 -2.358257563e-07 -2.938629601e-06 -0.0002333078873 -8.308655019e-05 3.003351323e-07 -3.594724243e-07 -3.609866033e-05 -3.523839211e-07 -4.832539283e-05 -0.002362778171 -5.578345464e-08 1.067236263e-06 1.485576595e-06 2.59560254e-05 0.0008311628424 -6.465323149e-11 7.032172027e-08 2.129822453e-08 7.560964533e-07 -2.251870125e-05 -7.536038899e-08 -3.350136122e-07 -1.380610088e-08 -4.018569522e-09 1.185514639e-06 -5.305954284e-08 -5.253342245e-08 4.799915481e-05 -2.030116626e-07 2.157873631e-08 -3.788581024e-09 3.065416458e-08 2.712565648e-07 4.102506544e-06 -6.855305864e-05 -1.301757837e-09 -1.037039755e-08 4.870378691e-06 5.681695629e-08 1.245359923e-06 -1.437204766e-08 6.078017972e-10 -6.306735824e-06 5.006399938e-07 5.800522789e-08 -6.708914341e-09 1.416730197e-09 -2.420103563e-08 4.583921091e-08 -1.292515642e-05 -2.679733066e-09 1.741873828e-09 -1.986169031e-06 -1.197078414e-08 1.1851827e-08 --0.04966106232 -0.07935131005 -0.02594066705 -0.001253827784 0.002766914392 0.0007275674401 9.031349227e-05 -0.0001626590049 -3.760151799e-05 -1.066086104e-05 2.561518336e-05 -1.460200126e-06 4.125218093e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.03063551487 0.01220852203 0.003489108876 -6.825221657e-05 0.000418235573 -0.0002234242124 3.867992337e-05 2.713566063e-05 -1.607789493e-05 1.379041609e-05 1.059226419e-05 1.149431049e-07 4.519109959e-06 -0.03617039289 -0.02722477476 0.03409966125 -3.691358349e-05 -7.988645134e-05 -3.274260491e-05 -9.055356571e-05 0.001358602469 0.004519316244 -1.770547611e-05 -4.893166523e-05 0.0007200358087 5.185016196e-05 5.456036219e-06 -4.49603956e-05 -2.302212e-06 1.49235851e-05 -0.0002517648625 -3.460929623e-06 -1.133174387e-05 8.873736891e-05 -5.35805415e-07 -9.060347338e-06 4.662881302e-06 -9.537774761e-07 -2.27201973e-05 -2.249026463e-06 -7.654996174e-06 -3.682970538e-06 3.855728578e-05 -2.012046063e-06 -2.188310662e-06 4.447235795e-06 -8.471382296e-07 -1.141818702e-06 3.989351203e-07 -4.030295234e-06 -1.497982339e-06 1.113630585e-05 -0.00101224782 0.003262808405 0.03014743352 -0.05548504088 -0.02285243403 -0.0001296665432 0.0003580427883 -0.0008096273394 -0.002228163948 -0.005815985048 -1.572712698e-05 7.549841257e-05 0.0004454541923 0.002797627921 0.0002127696543 -9.024900013e-05 0.0002278400861 2.102767854e-05 0.0001197032391 0.0008138376307 3.665891023e-09 2.755992601e-06 3.638361633e-05 8.987962705e-06 -0.0003278089969 1.302248766e-07 1.234938449e-06 2.448680128e-05 -5.727950489e-05 -3.604887063e-05 -3.596917825e-09 1.332214134e-08 1.146241082e-08 -5.412470295e-07 2.725021776e-05 6.952354454e-09 3.268891268e-07 -7.636796931e-06 -1.042590762e-05 -1.108061661e-05 -1.946825331e-07 8.885790729e-07 1.387230819e-05 -2.212443392e-05 -4.572742722e-06 -6.85350855e-08 3.019148887e-07 -6.245497171e-06 -4.203689726e-06 1.653950164e-05 -9.249323159e-08 3.119945224e-07 -2.591372487e-07 -2.478302867e-06 -5.405128278e-06 -9.478011228e-08 3.230820721e-07 4.088428919e-06 -2.696105411e-06 -4.717294046e-06 -5.807231447e-08 2.315010363e-07 -2.844176637e-06 -1.254855211e-06 2.51838535e-06 --0.0307634 0.0112326929 0.004039611958 -5.750398627e-05 0.0003888250908 -0.0002275784691 4.651121072e-05 2.117053504e-05 -1.755613853e-05 1.736908893e-05 7.990001571e-06 -4.669882724e-08 5.069599017e-06 -0.04579412365 -0.01837889877 0.03516432843 -0.0002307036926 -0.001143149604 -0.0001356449448 1.306141834e-05 0.00145893501 0.004520762276 -7.04756237e-06 -5.317129401e-05 0.0009310042016 5.336913034e-05 5.379084854e-06 -0.0001885286408 2.21146197e-05 -0.0001640221438 -5.447469076e-05 -3.462065238e-06 -7.897722141e-06 8.204755433e-05 -3.138231708e-07 -1.17602348e-05 -5.341616991e-06 1.004048619e-05 -2.71630121e-05 -1.934670093e-06 -8.422115934e-06 -1.987332641e-06 3.79479996e-05 -5.501120995e-07 -3.7095109e-07 -2.258327601e-06 -2.732893725e-06 -1.396671089e-06 3.971164742e-06 -4.445754526e-06 -7.85304913e-07 1.077059549e-05 -0.0009132949923 0.003187919665 0.02925055837 -0.06478326715 -0.01245110669 -0.0001291991416 0.0004143718195 -0.0005850448695 -0.001263340261 -0.008219144071 -9.269084185e-06 5.608760232e-05 0.001500722126 3.171734396e-05 0.001807146535 -0.0001913409957 0.0005443128462 2.432427553e-06 5.915636038e-05 0.0008696547892 -8.680194884e-08 2.235005601e-07 9.082436668e-06 -1.099361302e-06 -0.0003511084998 1.262685991e-07 4.94508748e-07 6.795432435e-06 -3.250306919e-05 -1.66873531e-05 -1.509118956e-08 8.184404169e-08 -2.209633189e-07 2.540974262e-06 2.188183718e-05 -7.853873095e-08 5.435508424e-07 -5.841382018e-06 -1.534531015e-05 -1.494134741e-05 -1.457269137e-07 8.300567857e-07 -1.316914515e-05 -3.379457407e-06 9.85322249e-06 -4.488956682e-08 2.354678994e-07 -6.082988186e-06 -2.070021993e-06 1.233465679e-05 -8.346798537e-08 3.103046926e-07 -9.300433426e-07 -3.782264972e-06 -3.878656338e-06 -7.636124107e-08 2.987705138e-07 -4.741979165e-06 -2.591685179e-06 4.994098476e-06 -4.515659241e-08 2.085251222e-07 -1.369931381e-06 -8.675439265e-08 -4.877865833e-07 -0 0 0 0 0 0 0 0 0 0 0 0 0 -0.09885116015 -0.01469359228 0.01334908305 0.01014743146 -0.01722793212 -0.05122044288 0.002330256561 -0.00328891966 -0.01555354832 -0.0002333143187 0.0003100700147 0.002047129609 5.960932162e-05 -5.341303114e-09 0.00136060412 0.0005911324553 0.0004001804665 -0.0001805857928 -0.0002050754627 -4.85159669e-05 3.060799659e-05 6.201610506e-06 3.181719469e-07 3.039668814e-07 -2.021209327e-05 -0.0001394741758 2.532151693e-05 -5.963160581e-06 8.243452507e-06 4.074362276e-05 -1.737598609e-06 -2.687967567e-08 -1.918225706e-05 -1.660957525e-06 4.277245825e-06 1.145508022e-05 -1.064575375e-05 -4.312136779e-06 2.400634614e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.08838907609 -0.01027070674 -0.01941309251 -0.001527480845 -8.683700836e-05 0.0003391243206 -0.0001094510468 4.704255051e-05 8.295707932e-06 -5.318527538e-05 7.787348284e-06 -1.15350292e-05 -1.320713933e-05 0.00144360261 -0.004070891582 -0.14884796 -0.000293044602 0.0004031300171 0.004174202053 7.483683477e-05 -1.707073508e-05 -0.009723620114 1.893764721e-05 -9.150918596e-06 -0.006755070725 -3.047176643e-07 1.15484542e-06 0.00203952114 -3.08595253e-05 -4.996810637e-05 -8.10090146e-06 8.333315128e-08 -1.506817296e-07 -0.0001434275427 -4.759076863e-06 3.683661487e-06 0.0001605140786 1.51510652e-06 -2.876272035e-06 -0.0001306711696 6.360392922e-07 -1.506824034e-06 -3.868731106e-05 1.508484183e-06 -2.934341255e-09 -1.944982363e-07 2.16974262e-07 -5.144778756e-07 -3.959825884e-05 5.923739067e-07 -1.465296433e-06 -1.608484487e-05 9.092589781e-05 9.677052125e-07 -0.06707823167 0.000328785317 -0.001586076896 1.648709052e-05 1.558930408e-05 -0.01079104862 -0.001265696815 0.0004028727221 4.496100882e-07 4.486255049e-07 -0.0001555386781 3.531079332e-05 8.971683303e-07 2.947228922e-06 1.482940473e-05 -2.89862089e-06 3.015628425e-05 -0.002767374382 1.148148725e-07 -6.884111908e-08 5.926827829e-06 -1.22974064e-05 0.0007038767042 -4.588307061e-10 2.949420064e-08 -2.667527868e-07 7.549775347e-07 3.885615701e-05 2.53481978e-07 8.157881302e-08 3.674702156e-08 -1.62004584e-08 1.655805549e-06 -1.694025667e-09 9.861948141e-08 5.092853361e-05 1.026715369e-07 -9.017050809e-07 6.999559959e-09 6.917128046e-10 1.165130292e-06 -2.229553694e-06 -5.707078193e-05 2.814125567e-09 6.674733547e-10 5.432960652e-06 3.171641056e-07 -5.521755255e-07 9.527975724e-09 2.216497451e-09 -6.542914871e-06 -3.726401889e-07 1.546429409e-07 5.992010265e-09 1.710006158e-09 -5.380934076e-08 -3.452125584e-08 -1.393390212e-05 3.716854383e-09 3.700483889e-10 -2.128816503e-06 -6.010276045e-08 -6.20505438e-09 --0.02891784174 0.01111209012 0.002837968769 -2.615580689e-05 0.0004481526479 -0.0001706109328 1.317073142e-05 3.166714459e-05 -9.948208087e-06 5.934929894e-06 1.224794691e-05 1.390237046e-06 3.056174832e-06 -0.05606956723 -0.006373455698 0.02830894706 -1.571392805e-05 -7.662118905e-05 -5.84056999e-05 -0.0001475928793 0.001153465682 0.004288643307 -1.658496374e-05 -8.220316646e-05 0.0005828482087 5.82422533e-05 -1.815398136e-07 0.0001843930883 -3.30203184e-05 -4.897750864e-06 -0.000214350328 -1.158758709e-05 -5.40425476e-06 6.956919198e-05 -4.817970323e-07 -8.234739016e-06 2.372066736e-05 -1.126535793e-05 -2.103716617e-05 1.477261495e-07 -9.6300813e-06 -1.750945605e-06 2.970756067e-05 -4.765556036e-06 -1.478008051e-06 1.19905711e-05 -8.546334326e-07 -3.832435591e-07 -1.983058003e-06 -5.111090878e-06 -7.106304163e-07 9.566581595e-06 0.0001455000543 0.001974992033 0.02936901862 -0.07117409684 -0.009889801534 -8.598354192e-05 0.0002796328763 -0.001263911789 -0.001356406551 -0.006594602965 -9.546893151e-06 7.850009158e-05 0.0001952590369 0.00213538026 0.001073157487 -1.212601737e-06 4.147466584e-06 2.389637731e-05 7.653766514e-05 0.0008253084095 -2.039697802e-06 1.785257196e-05 7.902891101e-05 1.215268475e-05 -0.0002329132449 -9.195889708e-08 1.548406338e-06 -4.563531058e-06 -7.31869607e-05 -1.83329665e-05 -6.312501956e-08 2.492700682e-07 2.238456096e-06 -8.656135156e-06 3.064621966e-05 2.635451883e-08 1.713267972e-07 -4.264853699e-06 -1.170321112e-05 -1.411728967e-06 -3.960653358e-08 6.193460166e-07 4.198687106e-06 -2.508101778e-05 -2.446032652e-06 -2.957506548e-08 3.413024004e-07 -9.960571321e-06 -2.355441334e-06 1.800812002e-05 -5.496244062e-08 2.479740612e-07 2.343928959e-06 -5.81309728e-06 -2.364998367e-06 -1.939582224e-08 2.370513658e-07 2.940148279e-06 -5.549317336e-06 -2.599726516e-06 -1.435013463e-08 2.010886835e-07 -4.822260424e-06 -1.087712501e-06 4.179148938e-06 --0.05261084928 -0.08718091793 -0.03189246219 -0.003271798335 0.00258220504 0.0009527887785 0.0002652334823 -0.000139382935 -6.077006534e-05 -2.477160004e-05 2.215251188e-05 -1.207275671e-07 6.099884721e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.03138097593 0.009737407232 0.004445302128 -5.397053661e-06 0.0004127934271 -0.0002122817589 3.938820774e-05 2.119324035e-05 -1.814724976e-05 1.681694597e-05 7.494519198e-06 -4.538030799e-08 5.009917421e-06 -0.08339542255 0.0157952292 0.0354143949 0.0003607641199 -0.003534601667 -0.0003175500675 -1.229277167e-05 0.0015793165 0.00466706118 7.343879899e-06 -9.159699062e-05 0.00118662709 6.458402579e-05 -5.11847541e-06 -0.0001892950334 2.027156669e-05 -0.000214056279 1.743309988e-05 -1.421406486e-05 4.34576979e-06 7.192644613e-05 2.902356417e-07 -1.331276432e-05 -5.692769205e-06 1.043680633e-05 -3.228293331e-05 1.60917949e-06 -1.142374362e-05 1.75737865e-06 3.591869738e-05 -2.229995628e-06 6.513514561e-07 -1.681789751e-06 -5.562994129e-06 1.638146085e-06 3.517425793e-06 -6.021503804e-06 7.32132305e-07 1.067184555e-05 0.001254326129 0.0008672604501 0.03062117653 -0.09195230909 0.01068898309 0.0001946648117 0.0001283721053 -0.0006634724589 0.001387629249 -0.0132220105 9.497965622e-06 2.20038516e-05 0.001261268833 -2.967856145e-05 0.002067626456 0.000273305317 0.0001130695787 -2.951034516e-07 0.0001002431351 0.001074280307 1.503672309e-07 -3.954234035e-08 1.135272652e-05 8.98314891e-07 -0.0003599202423 -1.135761186e-07 1.909870306e-07 3.633531984e-06 -4.253016267e-05 7.436951833e-06 1.55609082e-08 4.192724731e-08 2.17591685e-07 2.255833038e-06 2.323196592e-05 8.539202727e-08 3.745926053e-07 4.771494373e-06 -2.760240468e-05 -1.904689952e-05 1.610413958e-07 4.691231026e-07 -1.635998052e-05 7.447604118e-06 2.21564034e-06 5.185435263e-08 1.24935657e-07 -8.130328208e-06 1.753188315e-06 1.051632534e-05 1.071955975e-07 8.803410949e-08 -9.716256404e-07 -1.032944124e-05 2.570308348e-06 9.616434447e-08 1.122452622e-07 -9.575342336e-06 1.972362347e-06 5.198793323e-06 5.307325397e-08 9.866132054e-08 -2.063722002e-06 -1.656209684e-07 2.840523665e-07 -0 0 0 0 0 0 0 0 0 0 0 0 0 -0.1225402961 0.01676993857 0.006178660267 0.006412186918 0.01774306724 -0.0841341992 0.001400715644 0.003926050494 -0.02358681005 -7.720843996e-05 -0.0002447236853 0.001787172442 -2.90195963e-05 2.550443362e-05 0.001361659093 0.001423593979 -0.0004001004838 -0.0001277832981 -0.0001978725109 3.529947564e-05 1.128006435e-05 1.328946661e-05 -9.442034594e-07 5.608954126e-08 -2.145429028e-05 -8.662775673e-05 -3.392350675e-05 -2.367822835e-06 -8.094692139e-06 4.781938168e-05 9.927266768e-07 -6.808787435e-07 -2.291151599e-05 1.911470995e-06 3.242319408e-06 9.158550399e-06 -1.637273782e-05 3.927299095e-06 1.155101873e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.08936160816 -0.007119756722 -0.01983415022 -0.001829647774 -8.711851543e-05 0.0003026098438 -0.0001011040524 4.887694969e-05 8.250105678e-06 -5.065691626e-05 7.57001301e-06 -1.153676206e-05 -1.309321744e-05 -0.002017094473 -0.001502637073 -0.1488938574 -0.0001684162714 -0.0003215247208 0.005410081152 2.949549735e-05 2.08286252e-05 -0.009455697759 1.294513553e-05 1.090927721e-05 -0.007309402219 3.513538163e-07 5.556841162e-07 0.001965365024 -6.276102187e-05 -8.977273582e-07 -7.025563511e-06 3.330643938e-08 2.088473487e-07 -0.0001546561894 -3.678197239e-06 -3.591606363e-06 0.0001729739951 -1.901661785e-06 -1.362179395e-06 -0.0001242961834 -7.804862087e-07 -8.212361715e-07 -3.62659155e-05 1.537322727e-06 3.167688279e-09 -1.279327923e-07 -2.755785172e-07 -2.397886096e-07 -3.949077244e-05 -9.08446326e-07 -7.04463934e-07 -1.493965599e-05 -1.330830244e-05 -2.683915358e-06 -0.06895501067 -0.0003989733422 -0.0008001669779 -1.164677091e-05 4.31626521e-05 -0.01125285822 -0.0008054800709 -0.0005061948808 -2.147042088e-07 1.004724792e-06 -0.000118971256 1.40673738e-05 -8.127791423e-07 -2.580523024e-06 2.347935902e-05 3.338836803e-06 2.141261091e-05 -0.002994142182 -5.953624613e-08 -6.034732933e-07 -5.979525368e-06 -6.090684013e-06 0.0006450211111 5.196307577e-10 1.312758423e-07 4.585784895e-07 7.764270409e-07 6.126963381e-05 -1.768727615e-07 3.388137643e-07 -1.909160534e-08 2.201695083e-08 1.966692264e-06 5.433834727e-08 -4.026169825e-08 5.23859262e-05 1.094093728e-07 8.849777975e-07 -3.250569879e-09 -2.330558714e-08 -1.279964872e-06 -1.16395094e-06 -5.319868651e-05 -1.516947985e-09 7.221864179e-09 5.779117587e-06 -3.193253132e-07 -3.339051931e-07 4.621727347e-09 -2.729859515e-09 -6.695374094e-06 -1.308893075e-07 -2.153996264e-07 6.247083661e-10 -2.923283039e-09 7.563730755e-08 -9.7216571e-09 -1.458875684e-05 -1.121571162e-09 -1.905223311e-09 -2.209780389e-06 6.529245372e-08 -3.531222847e-09 --0.02936012807 0.01014553502 0.003088100949 -1.646981287e-05 0.0004722016757 -0.0001637436134 1.175762212e-05 3.119053911e-05 -1.019407602e-05 5.834450356e-06 1.173194778e-05 1.353255871e-06 3.014201041e-06 -0.06814621778 0.006058478878 0.02847906578 0.0001324529952 -0.001069638528 -0.000611655394 0.0001637255859 0.0008540811668 0.00439651349 1.726420503e-05 -0.0001392598435 0.000713943257 5.802356109e-05 1.809494915e-07 0.0001868576404 -4.40846785e-05 4.478957965e-06 -0.0001922779958 -1.854434131e-05 4.088691051e-06 6.156771401e-05 4.626017415e-07 -9.26627492e-06 2.424606382e-05 -1.143808428e-05 -2.090460598e-05 -1.492127383e-07 -1.212689693e-05 1.65735627e-06 2.850132917e-05 -6.884478367e-06 1.41202521e-06 1.104047921e-05 -1.928050402e-06 5.649948334e-07 -1.692897421e-06 -6.31964131e-06 6.789972125e-07 9.474099673e-06 -0.0001366261015 0.002110119831 0.03032682991 -0.08978716946 0.008891306716 0.000142113447 7.670783979e-05 -0.001376788269 0.001474178543 -0.01055452862 1.01331992e-05 4.42910413e-05 -0.0001746225715 0.002404560812 0.001044947457 1.408094436e-06 8.217838511e-07 -2.271349724e-05 0.0001269829625 0.0009436542154 2.303361585e-06 1.36985074e-05 9.773519398e-05 -1.067715885e-05 -0.0002299584553 1.010061363e-07 8.391305485e-07 -4.001854316e-06 -8.672121534e-05 1.244584272e-05 8.654662508e-08 8.076676732e-08 -2.81053937e-06 -3.070486969e-06 2.935949594e-05 -2.383724497e-08 2.152317753e-07 3.123854182e-06 -2.00075792e-05 -1.651648019e-06 4.104452975e-08 4.84789798e-07 4.25584733e-06 -2.924561124e-05 2.219129776e-06 3.147764412e-08 2.518807136e-07 -1.264905601e-05 2.080537207e-06 1.631149402e-05 7.058819241e-08 1.030533093e-07 2.487362198e-06 -9.69731423e-06 1.715366926e-06 2.046653298e-08 1.793333644e-07 3.054740088e-06 -1.00716326e-05 2.018550189e-06 1.504073154e-08 1.572604239e-07 -6.088945476e-06 1.141290587e-06 3.410793067e-06 --0.03172848723 0.009662772134 0.004177919165 -4.033630265e-06 0.0004678439497 -0.0002000180799 2.924177861e-05 2.675592099e-05 -1.7029975e-05 1.312598234e-05 9.516835053e-06 1.087265111e-07 4.404573755e-06 -0.08807081678 0.02173280443 0.03455079492 0.0004996725285 -0.003242133903 -0.0008018364939 9.004462476e-05 0.001275744333 0.004779473579 1.973251302e-05 -0.0001339713065 0.001122804068 6.509521175e-05 -5.085005401e-06 -4.580799805e-05 -1.857673989e-05 -3.959942946e-05 -0.0001384970364 -1.629486708e-05 5.361462154e-06 6.889489156e-05 4.865604015e-07 -1.104926509e-05 5.063056504e-06 -1.004718524e-06 -2.832043735e-05 1.87740094e-06 -1.276910727e-05 3.069565971e-06 3.509081604e-05 -6.009341796e-06 2.720610041e-06 3.367981239e-06 -4.287957568e-06 2.309264012e-06 2.905953886e-07 -6.736090549e-06 1.330968788e-06 1.093804868e-05 0.001623966521 0.0003263288579 0.03254278676 -0.0998520942 0.01760057132 0.0002936229563 -2.564348334e-06 -0.0009998248426 0.002696732754 -0.01414699961 1.699780855e-05 1.427945707e-05 -0.0003228008635 0.003390285743 0.0002070925087 0.0001667022073 -0.0001053458135 -1.932631906e-05 0.0003055303364 0.001144932377 -3.512460535e-09 2.685364443e-06 5.466865877e-05 -6.494573692e-06 -0.0003312112569 -1.160362894e-07 2.688230735e-07 1.808519508e-05 -7.25401721e-05 1.314834917e-05 5.727859987e-09 4.317934037e-09 -1.16457102e-08 -3.328938025e-07 2.7593892e-05 -6.56629962e-09 3.235802003e-07 5.593333886e-06 -2.561576704e-05 -1.600024597e-05 2.27807368e-07 3.580949244e-07 1.507950006e-05 -3.091083031e-05 3.358785336e-06 8.472579281e-08 1.120900725e-07 -1.021991077e-05 3.145599954e-06 1.300534347e-05 1.351304159e-07 3.444519443e-08 -2.77588374e-07 -1.04617815e-05 2.88424341e-06 1.350790239e-07 6.11425317e-08 4.88372699e-06 -1.085044019e-05 2.718296718e-06 7.340306354e-08 7.516034263e-08 -4.811113343e-06 2.911175237e-06 4.990150026e-07 --0.05203462059 -0.08785430195 -0.03393355028 -0.004377711892 0.002278360698 0.001011206976 0.0003572652554 -0.0001104045733 -6.475696843e-05 -3.173725581e-05 1.744513009e-05 5.038931283e-08 6.938223863e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.00244083346 0.002848844396 0.0003457357654 -4.351245903e-05 -3.412171541e-07 -1.172261895e-06 -2.395828425e-06 9.408634828e-07 -1.031390748e-08 -6.134185158e-07 9.113159266e-08 -7.745660201e-08 -1.16496011e-07 0.000887378457 0.004282433347 -0.008422582153 -0.02298852507 -0.0005391428887 0.02397500601 -3.16364662e-05 -6.853069144e-06 0.0005332889706 -1.891443669e-07 -9.98173452e-09 1.269057415e-05 -2.714642774e-10 -5.695305967e-09 1.248146012e-05 -5.180005491e-05 -2.303794188e-05 7.807455026e-05 -2.058450697e-08 -5.917823654e-09 -8.283792732e-06 -7.913027227e-07 -1.846949707e-08 1.43811017e-06 -1.679464545e-08 -1.367956104e-07 3.796325129e-07 7.058864632e-08 8.968268991e-07 -1.624190348e-06 1.907606242e-07 -4.425609334e-09 -1.785345508e-07 1.088151799e-08 8.821460009e-08 -3.555814276e-07 8.795888643e-08 6.350605342e-07 -8.467456728e-07 -6.961307146e-07 -2.57365483e-05 -0.001364904069 3.558426101e-05 -0.0003006910919 1.79678357e-06 3.649381663e-05 -0.003965081387 0.003056981052 0.0002081473282 1.171666402e-08 -4.087530787e-06 -0.0002571167241 0.0002686262669 2.472740206e-05 -3.65882049e-09 3.559515318e-07 2.175968027e-08 3.868842415e-07 -7.376855229e-06 -2.253060629e-10 -4.751737193e-08 7.072169659e-08 8.751514074e-07 -1.005820775e-05 -7.305231862e-12 -1.261877449e-10 -3.187911732e-08 -7.876347196e-07 6.912983322e-06 1.069832777e-08 1.437681555e-06 -1.344812828e-07 4.490822006e-08 -1.20226087e-06 5.437516977e-09 1.361545404e-08 -4.154213437e-07 -7.815715843e-07 5.942276772e-09 -2.91183907e-11 -3.462904095e-09 1.091783649e-08 1.4614323e-07 -9.842603599e-07 5.433682597e-11 -4.416719418e-09 5.689234753e-07 -1.920028607e-08 -3.886740763e-07 -6.067061903e-13 6.158308711e-13 3.227751062e-10 -1.236688995e-10 -3.544760441e-11 4.013433423e-11 -4.413370941e-10 -3.223545793e-09 -1.464828919e-08 -1.391088637e-07 -6.741428695e-10 -3.860231087e-09 6.801572978e-08 -4.840889836e-09 -8.01860098e-08 --0.1294773005 -0.0941058951 0.001418853687 0.0005072630364 0.0003898060783 -0.0002042401565 -6.977209769e-06 0.0001016075576 -1.973446046e-05 3.629213456e-06 1.857126119e-05 2.2649049e-06 4.245712546e-06 -0.001792844529 -1.904363329e-05 0.1242879785 1.768081802e-05 0.001201252171 -0.07357135223 -2.098876532e-09 -1.242229337e-06 -0.01633181958 1.175936002e-07 3.058936759e-06 0.00169506136 7.537665457e-07 1.184156261e-10 0.0002486624473 6.499429446e-07 5.16921696e-08 4.391291338e-05 1.7533015e-09 3.714772198e-11 -1.634071937e-06 5.124270403e-10 2.755863533e-07 9.742422583e-05 -8.392491683e-06 1.592678527e-07 -2.796099299e-11 -9.60458938e-08 3.567255086e-09 2.184852474e-05 -2.048834398e-07 1.775446096e-08 2.480380235e-05 -3.811053942e-07 8.31233061e-08 5.659316227e-06 -9.628881707e-08 -2.561175954e-11 1.283243734e-05 3.039757005e-07 6.891808607e-05 0.1050762486 0.001771273443 2.798145638e-05 1.776495179e-07 -7.217269677e-06 0.007621835946 -5.393189728e-05 -0.002351564351 9.107856081e-10 -1.306856131e-06 5.64623243e-08 3.316447052e-05 -0.0094705678 -1.699560964e-11 -5.137519868e-09 1.060558357e-08 2.677879209e-08 0.0006740924741 2.11411677e-10 -5.056389384e-08 -6.348871894e-08 -2.468302917e-10 -0.0005722431331 1.193394914e-09 5.34975315e-07 9.745475243e-05 -5.466357309e-06 -1.230628467e-07 -1.183288764e-11 7.702507074e-10 5.358616387e-09 2.069833073e-08 0.0002243786055 6.428741376e-13 2.413944559e-09 -4.757663664e-07 -1.007167227e-05 -3.700651655e-05 5.116276052e-12 -1.689290982e-08 -1.633527496e-06 -1.671547187e-07 -9.349336293e-10 -2.173351912e-12 7.371753051e-09 -5.391825365e-09 1.741843062e-08 3.100742579e-05 1.861116219e-10 7.934051539e-09 3.749967927e-06 2.631894889e-07 2.612217138e-08 -3.933817243e-12 3.561444933e-09 4.002161109e-06 8.666519371e-09 4.744894451e-09 -1.480023586e-12 3.974547338e-09 7.710641274e-08 6.046426221e-08 8.007908072e-06 -0.06146418715 0.05124151379 0.0007841563878 -0.0005564076588 -0.0001562781042 8.233155341e-05 7.651197758e-06 -4.528521008e-05 9.881917486e-06 -3.66543922e-06 -7.598017887e-06 -7.23350463e-08 -2.639450293e-06 -0.0001227407935 0.005449039559 -0.06968794228 -0.004199488751 0.0006719306414 0.03379928863 -1.853752336e-06 1.771727993e-06 0.009505917338 -1.457573498e-06 -4.006665721e-07 -0.0006917410924 -6.921163334e-07 -1.194994022e-06 3.658866422e-05 -5.56490794e-06 -2.598424955e-05 -3.580898336e-05 -1.928520864e-08 2.261560443e-07 -5.295246552e-05 -2.234853706e-07 -3.309695758e-07 -5.132552797e-06 -6.250436814e-08 3.378774114e-09 4.201142691e-09 -2.900188108e-08 3.714882727e-07 -1.733107303e-05 -9.272767505e-08 1.82574692e-06 -7.813028113e-06 -4.453218511e-08 1.571667549e-06 -4.29570813e-06 8.035186803e-09 1.990285914e-07 -6.492702314e-06 2.49321864e-05 -0.0001187996528 -0.04818373264 -0.0002892093747 -0.0004708414066 3.390949469e-07 2.382417037e-05 -0.01169762047 0.004820453922 0.0003431439807 -1.461255006e-07 3.284261411e-06 -0.0002009696374 -2.627446771e-05 0.004226813423 -1.651200997e-10 5.239518692e-07 1.234766731e-07 -5.129813762e-08 -0.0002910951726 -1.513957172e-09 8.114573847e-09 1.184786162e-07 2.504959311e-07 0.0002923351967 -4.861624608e-09 -2.740305863e-09 2.161425418e-05 -4.835413898e-07 1.786527447e-05 2.442801306e-12 -7.021088306e-10 9.335308239e-09 -3.361851987e-08 -0.0001527157099 -4.369386445e-10 3.959071274e-10 -8.475811383e-07 1.242534371e-06 2.641146e-05 -5.173681294e-10 1.566555659e-08 4.803908701e-06 7.535469695e-07 4.407615617e-07 2.759677555e-10 -1.298454735e-08 -1.60715226e-07 5.107128454e-07 -1.713686569e-05 -2.536346553e-10 -1.379536569e-08 5.945987305e-07 1.039981866e-08 -1.585282843e-07 1.269864427e-10 -3.794166838e-09 -2.324988428e-06 -1.739119435e-09 -1.455044114e-07 2.056395642e-10 -5.741915623e-09 -2.704598173e-07 6.026596158e-07 -3.522715641e-06 -0.06076388899 0.05422902815 0.001783539448 -0.000707764579 -0.0001346621785 6.496255341e-05 6.567803543e-06 -3.752104426e-05 7.842008698e-06 -5.155438212e-06 -6.014849545e-06 2.745770586e-08 -2.936875781e-06 0.0003484675028 0.004396767513 -0.07161837605 -0.003457168631 4.802087079e-05 0.03068509085 -2.96228856e-06 8.002274185e-07 0.01023074567 -4.352130375e-07 -4.309946886e-07 -0.0005746197884 -2.386743004e-07 -1.153574182e-06 0.0001153101068 -4.826529666e-05 -3.78949707e-05 1.326444018e-05 -1.453182125e-08 1.634126779e-07 -9.023017179e-05 -2.545609945e-07 -3.662288028e-07 1.46861255e-05 -1.077310146e-07 1.086268139e-07 8.957552842e-08 -4.47507e-11 2.606611822e-07 -2.077822792e-05 1.28962976e-07 2.058816462e-06 -5.412886591e-06 1.083555834e-08 6.430139815e-07 -3.799272509e-06 2.945065796e-08 1.313121944e-07 -6.243092058e-06 2.130454396e-05 -0.0001113111245 -0.04718830258 -0.000542209661 0.0004247297028 1.0040258e-07 1.691567438e-05 -0.01216574726 0.002771174861 0.0008797204113 -1.948484995e-07 2.540825332e-06 0.002484933386 0.0007243322843 0.000357845154 3.48148508e-09 5.57815652e-07 3.358738913e-08 -1.985609087e-08 -0.0002686322669 2.320311781e-11 -1.743486349e-09 1.411977542e-07 5.305997306e-08 0.000257017703 -3.57048332e-09 9.593916507e-08 2.666333646e-05 3.146260401e-05 3.226150128e-05 4.656572876e-10 2.65888351e-09 -1.218435057e-08 -1.340869083e-08 -0.0001577953404 -2.522054235e-10 9.849554362e-10 -3.906208819e-07 4.577426556e-07 1.829022112e-05 -3.829466353e-10 1.05055562e-08 5.92554684e-07 -1.645304293e-06 8.972883084e-06 3.884264813e-10 -1.304132891e-08 -1.81708005e-07 3.760488493e-07 -1.536574168e-05 -2.298410736e-10 -9.822403326e-09 7.422334976e-07 -3.423962401e-10 -2.725284513e-08 1.152898918e-10 -2.866864991e-09 -1.082138731e-09 1.329542869e-08 -2.838559331e-06 2.49605719e-10 -5.585419792e-09 -5.464899697e-07 -1.435393293e-06 -6.637676224e-07 -0 0 0 0 0 0 0 0 0 0 0 0 0 -0.0315207961 0.004240406438 0.02728038966 0.03459095925 0.003861347286 -0.03845230653 0.01622526287 0.002308891127 -0.018534154 0.005048355827 0.0009284089503 -0.005976764777 -0.0003128281511 -0.000295584708 0.0006084128591 -0.002844672499 0.0002381998155 0.002606472683 -0.0009961451231 0.0001371806506 0.0008589644726 2.339432406e-05 4.529213494e-05 -6.868645901e-05 0.001182970125 -0.001146545705 -3.64244205e-05 6.503981763e-05 1.275338299e-05 -7.779320061e-05 -8.93281453e-06 -7.611281888e-06 1.654409642e-05 -5.028909249e-07 -2.088867461e-05 2.139156553e-05 -1.956140589e-05 2.66178101e-06 1.689962488e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.0007402541637 0.003964488442 0.002078259909 0.0003740714778 2.121515907e-07 2.485938894e-05 2.396360555e-05 9.728639677e-07 2.239561251e-08 1.82973444e-06 6.380943168e-08 1.261972962e-07 1.779050754e-07 -0.0007938852837 -0.007934778651 0.006014044498 -0.006450604224 -9.886780893e-05 0.004665976502 -0.0004730921291 -2.276497733e-05 0.001154267179 -1.956373912e-05 -8.065419233e-07 0.001040799676 -3.444300088e-09 -8.543142985e-08 0.0001534980338 -0.0001066825077 -4.778366244e-05 0.000153805085 4.063020947e-08 1.765575734e-08 2.556304607e-05 -9.970492855e-06 -2.116761087e-07 1.675224661e-05 -4.33485722e-07 -4.269326417e-06 9.582592954e-06 -1.220915087e-07 -1.777348471e-06 2.782750861e-06 5.397392062e-08 4.628601065e-10 -4.603269005e-07 -6.199539334e-08 -7.703427098e-07 1.897854266e-06 -1.941729558e-07 -1.581766279e-06 1.820539169e-06 -8.07914549e-05 1.8878034e-06 0.002176303292 -7.654235348e-05 -0.002404965712 -4.727673336e-06 -5.68701509e-05 0.003558464615 -0.00504285022 -0.0001868946256 -2.427792109e-07 -2.524758316e-06 -7.852316311e-05 -0.0008515297714 3.087286908e-06 -3.722512978e-07 -3.794770267e-05 -8.726517884e-07 -0.0001218176274 0.0004292079522 -5.733058726e-08 9.724617762e-07 -1.7839668e-06 -3.138314428e-05 0.0002525065019 -6.554206648e-11 -1.664737633e-09 -4.073888462e-07 -1.418169664e-05 9.137796676e-05 -7.806035097e-08 -3.740498614e-07 -1.31233616e-07 -7.932357346e-09 -5.976197836e-08 -5.45860012e-08 -5.607638683e-08 9.779826375e-07 2.081854622e-07 -1.898637629e-08 -3.892138982e-09 2.899878862e-08 -1.212891628e-07 -1.796632759e-06 1.090121163e-05 -1.3402057e-09 -9.899757525e-09 6.757436405e-07 -2.250597987e-08 -5.437513302e-07 -1.474612078e-08 5.963707275e-10 3.871798175e-07 -4.542500757e-07 -5.334868956e-08 -6.886908478e-09 1.394573464e-09 1.217070122e-08 -2.309718172e-08 7.5239382e-07 -2.73465845e-09 1.728232886e-09 -9.346304837e-08 6.770072601e-09 -6.9126687e-09 -0.0152993279 0.06283437736 0.01564319489 0.0001223705272 0.001403137869 0.0003246898587 8.390947515e-06 9.306067471e-05 6.436251167e-06 2.09785416e-06 1.237415229e-05 2.398866806e-07 1.356120678e-06 -0.06199734367 -0.0001515275133 0.01434628393 -7.76733334e-05 -0.01149101795 0.01471407646 -1.008824733e-05 -0.001337295139 0.02563581258 -3.856177873e-06 -0.0002697000452 0.007531351638 -1.774021306e-05 1.49487063e-10 0.00013020779 -7.52909321e-05 -8.284969072e-07 0.0005325856116 -1.80775932e-05 -1.188897494e-07 0.0004088709851 -5.882686667e-09 -4.93728582e-06 3.614639791e-05 6.69898349e-06 -9.040678475e-06 1.908882353e-10 -4.028447416e-06 4.320179825e-08 4.551633806e-05 -2.509226019e-06 5.608569603e-08 1.286274381e-05 -2.554911395e-06 4.125209648e-08 -8.130488538e-07 -3.322764597e-06 -2.379763333e-10 1.03496882e-05 -2.855908934e-06 -0.001345338162 0.0425340455 -0.05971674311 -0.0003416037149 -1.820032505e-05 -0.0001339193822 -0.0009698322353 -0.0001634523507 -0.02758900786 -1.922914196e-07 -3.562780755e-05 -1.427141618e-05 -0.006090384306 0.007649470684 -6.356028856e-08 -1.49049653e-06 6.024128154e-07 3.42354896e-06 0.009675857126 -8.585770268e-08 -9.47504172e-06 -2.0355702e-05 -1.078802009e-07 0.0007494486409 -3.007946286e-09 -7.78344993e-07 9.892033429e-06 -9.82525256e-05 -1.097787387e-06 -7.592303806e-09 -1.092227846e-07 -3.131568768e-07 -3.95407793e-06 0.0005246192071 -8.074874349e-10 -9.506946092e-08 4.474767027e-07 1.007992483e-05 5.618223768e-06 -4.762214633e-10 -3.866207221e-07 1.128797862e-06 -1.41523608e-05 -4.091105329e-08 -6.230212902e-10 -2.092505221e-07 -1.068208483e-07 1.087353463e-07 5.34350644e-05 -5.088127728e-09 -1.12274517e-07 1.448129257e-06 -3.590583594e-06 -1.267657252e-07 -3.510018377e-10 -1.414361441e-07 3.486164591e-06 -4.358191551e-06 -1.547001035e-07 -2.270086051e-10 -1.24819631e-07 8.372072269e-07 1.29039871e-07 6.434046835e-06 --0.007549205771 -0.03334588782 -0.01039560028 -0.0003663400525 -0.0005372799658 -0.0002448080965 -3.181798871e-05 -3.004273601e-05 -7.391148546e-06 -4.979768381e-06 -4.068897703e-06 -7.209490369e-10 -1.303641154e-06 -0.004053781362 0.03876764188 -0.01005410935 0.01073759717 -0.003799435918 -0.003947063679 -0.0002292116877 0.001362452447 -0.01312442037 3.830352377e-05 3.669253126e-05 -0.005346755496 6.275237631e-06 2.147888414e-06 -4.9030142e-06 5.24998666e-05 -6.530943196e-05 -0.0001279505175 -8.46067156e-06 1.67217449e-05 -0.0003044790126 3.875980111e-07 1.832697948e-06 -4.154012857e-07 -1.459601815e-07 3.729323522e-06 2.176075696e-06 -8.713455708e-07 3.03318581e-06 -3.4104103e-05 -6.989320519e-07 2.277721121e-06 -1.566927328e-06 -4.437076851e-07 1.747884035e-06 -1.51183639e-07 2.175141284e-07 1.396549434e-06 -6.505638659e-06 -0.001242175178 0.002206055656 -0.02357593604 0.007763576465 0.02288826002 -0.0001867650457 0.000267009936 0.0009985117064 0.0108098524 0.003931779969 -1.66283789e-05 4.516454435e-05 0.002072476007 0.0003257949506 -0.0008560465665 -0.0001177985004 0.0001965241854 8.460924399e-06 -1.831216473e-05 -0.005128067004 3.730600473e-09 1.049319133e-06 3.101887819e-06 1.677465822e-06 -0.0008226054948 1.296878248e-07 6.174124601e-07 -1.408201969e-05 -4.137165745e-06 7.801778632e-05 -4.398586163e-09 8.184576202e-09 -1.002094386e-09 7.378673534e-08 -0.0002241124419 7.04421802e-09 1.166905855e-07 2.987925778e-06 -6.588158849e-06 -2.894198655e-05 -2.114704673e-07 5.178513845e-07 -1.38604397e-05 7.634472449e-06 3.547519603e-06 -7.591412377e-08 1.82194956e-07 -1.561214562e-06 1.513012897e-06 -2.103277986e-05 -1.091691495e-07 2.005639116e-07 -3.455573794e-08 -1.433041372e-06 3.240310066e-06 -1.107767023e-07 2.111335136e-07 -3.787566633e-06 -1.450862244e-06 3.401642828e-06 -6.484618255e-08 1.422739374e-07 -1.8597724e-06 5.343369073e-07 -1.639875711e-06 --0.007309033276 -0.03351583095 -0.0116481402 -0.0006491278137 -0.0004139888794 -0.0002729211173 -5.713761523e-05 -1.865601641e-05 -8.306729322e-06 -8.090293663e-06 -2.497489991e-06 -1.243062761e-10 -1.669305945e-06 0.008824025533 0.02643610119 -0.01083708186 0.007127972368 -0.0002015704928 -0.001472589974 3.52602457e-05 0.001383652854 -0.012723685 9.534365804e-06 3.826563704e-05 -0.006101755403 1.860833168e-06 2.007588263e-06 -6.727936318e-05 3.881414542e-05 -0.0001664800759 5.311607262e-05 -5.181984788e-06 1.138595806e-05 -0.0003341989262 2.281908464e-07 1.34363654e-06 -1.518380807e-06 1.903223607e-07 5.064664436e-06 1.880777861e-06 -1.019474052e-09 1.599936591e-06 -3.533598973e-05 5.748146443e-07 4.822457239e-07 6.399961757e-07 1.620823302e-07 1.62219409e-06 -1.561135577e-06 6.555197633e-07 7.19730981e-07 -6.279307449e-06 -0.001052047141 0.001981381116 -0.02382408269 0.01743032163 0.01255967159 -0.0001543600441 0.0002638832136 0.0007046304503 0.005439314234 0.009708251787 -9.629451975e-06 2.841073118e-05 -0.002467337713 0.0001825344565 0.005110410398 -0.0002237562978 0.0003479999217 2.277621912e-05 -6.304443036e-06 -0.00499859777 -1.100354908e-07 1.731155665e-07 8.419299432e-07 -7.727627855e-08 -0.001078925255 1.260654633e-07 2.336996832e-07 -6.615282162e-05 3.786858867e-05 4.556903232e-05 -1.571098158e-08 4.227487805e-08 -6.622179408e-08 -8.599514848e-08 -0.0001762966552 -8.318324608e-08 2.526758443e-07 3.053245294e-06 -5.948137315e-06 -4.100804742e-05 -1.551847443e-07 4.39096653e-07 -7.739584593e-06 2.137389555e-06 -8.743514916e-06 -4.853235563e-08 1.303457967e-07 -1.1166397e-06 7.158919453e-07 -1.418545147e-05 -9.371821958e-08 1.783447843e-07 -2.040717917e-07 -6.366425937e-07 2.630808778e-06 -8.512647476e-08 1.775622591e-07 2.306424563e-07 1.88373117e-06 -5.72038406e-06 -4.911464106e-08 1.18556225e-07 -2.416040907e-06 5.322408812e-08 2.739003675e-07 -0 0 0 0 0 0 0 0 0 0 0 0 0 0.002844516977 0.01141801215 0.3387986475 0.2935120895 0.003180898005 0.005046764789 0.1812229095 0.003737028347 0.00186745452 0.07646296995 0.002469190409 0.000453876263 0.01015828829 0.03216028628 8.747877854e-06 0.000512693816 8.393900857e-05 0.01628023611 9.897270714e-05 0.0002037311586 0.00989031376 1.429522318e-07 0.0006742848012 0.003158620628 0.0007019205416 0.001933335475 6.036819655e-05 0.0007775659391 2.664557295e-05 7.562556846e-06 0.0001383749563 0.0005156330136 4.186803837e-07 7.624459313e-07 0.0001153096265 3.948073149e-06 2.829972916e-06 2.348113199e-06 0.0001351650298 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1.448862949e-05 7.759497615e-05 4.067675575e-05 7.321516464e-06 4.152338407e-09 4.865605538e-07 4.690278275e-07 1.904138642e-08 4.383382734e-10 3.581248937e-08 1.248910522e-09 2.469997411e-09 3.482048259e-09 0.01750049414 0.2396720762 0.0003051271771 0.09527299169 0.0001690889359 0.005331125326 0.02000311808 0.001073149659 2.435014507e-05 0.0002032073611 2.827891746e-06 2.069647629e-05 2.552510986e-08 7.647461977e-07 3.005781364e-06 6.617545425e-05 2.869276224e-05 0.0002761271346 1.129746411e-06 7.257133324e-08 4.987398387e-07 3.773575338e-05 1.123295255e-07 7.561887702e-07 1.657446946e-06 4.040945974e-05 3.155095401e-07 3.482354546e-07 1.193181118e-05 1.353303941e-07 2.60949063e-08 2.167611787e-07 2.060888963e-05 6.451665058e-07 1.484294521e-05 5.151957904e-08 5.981100658e-07 1.050089135e-05 2.487461739e-07 0.003767204982 0.002400215711 3.509687409e-05 0.004811369331 0.1435959494 0.000105184341 0.001282069586 0.0004192646367 0.1147769203 0.002360175178 1.019076845e-05 6.668083487e-05 1.225183251e-05 0.04652801471 0.001385618405 1.313594715e-05 0.0008978948589 5.335936899e-05 0.004998966347 9.367572902e-06 2.55157611e-06 1.185345615e-05 1.067892154e-05 0.0004702529573 5.427617755e-06 5.602921009e-09 4.913971576e-11 2.255809735e-06 0.0001894170347 2.029525867e-06 2.724583187e-06 2.418760465e-05 6.238421581e-06 5.000794305e-07 8.960263143e-09 2.341632839e-06 1.011810027e-06 6.785597645e-09 8.362157455e-05 2.927602615e-08 1.756112504e-07 5.156739368e-07 2.192712513e-07 8.856039487e-06 2.530223374e-07 5.617782065e-08 2.518387112e-07 4.83907755e-08 4.758015093e-08 4.097834538e-06 6.963637115e-07 2.543962591e-08 1.495467542e-08 1.502308326e-05 1.153617622e-06 3.194115253e-07 7.105054967e-08 4.977336445e-07 5.002105917e-06 1.30164574e-08 1.623290508e-07 2.057204175e-07 5.775994811e-09 1.100487102e-07 5.861039072e-06 -0.04693487042 0.1927616284 0.0479897764 0.0003754050424 0.004304508962 0.0009960748957 2.574152517e-05 0.0002854890578 1.974495981e-05 6.435741084e-06 3.796109463e-05 7.359179659e-07 4.160270877e-06 0.019387001 4.15193843e-05 0.05225782793 1.018907327e-05 0.002703506544 0.05901278463 3.265441418e-06 0.0004425648839 0.07858337177 3.02174196e-06 0.000133481814 0.02280051722 7.091246456e-06 1.843025013e-10 0.0003892137407 4.936583808e-05 2.24976419e-06 0.001503694872 4.381374144e-06 6.958838151e-09 0.001274548581 2.603383987e-09 1.948750656e-06 0.0001081995023 2.700359164e-05 2.393095703e-06 4.669739115e-11 5.642202646e-07 1.355525138e-08 0.0001555143712 3.864231894e-07 1.894786128e-08 4.803936469e-05 4.055945748e-07 7.940038126e-08 6.60911152e-06 7.914480711e-07 1.183619788e-12 3.549043978e-05 1.316135915e-06 0.0005208971712 0.1117165131 0.02158147534 0.0001462695122 5.941731341e-06 4.278967212e-05 0.001240060371 4.735059145e-05 0.008707455984 5.907908386e-08 1.532291323e-05 4.580310509e-06 0.001891121685 0.02436951692 1.975180243e-08 2.351407714e-07 3.202385428e-07 1.91424629e-07 0.02975388365 2.68204302e-08 3.313158875e-06 6.916562924e-06 3.672300389e-08 0.002294603199 2.239904895e-09 8.292620115e-07 0.0001015980143 2.614427491e-05 2.281664752e-07 2.373173163e-09 4.172003912e-08 1.441836788e-07 1.45329366e-06 0.001607683519 2.651651309e-10 2.788145258e-08 4.658386326e-07 9.674126962e-06 4.57857543e-05 1.44842216e-10 1.467013163e-07 1.630448207e-06 4.817501677e-06 1.471264089e-08 1.862533961e-10 1.148819606e-07 6.869584722e-10 7.451801124e-08 0.0001788639268 1.80443367e-09 4.314531011e-08 2.617996271e-06 1.387105511e-06 6.307913773e-08 1.012526942e-10 5.627102449e-08 1.028457502e-05 1.445143868e-06 6.424102406e-08 6.613762374e-11 5.792530443e-08 6.145874791e-08 2.197010411e-07 3.262713334e-05 -0.01018204073 0.04497548462 0.01402113396 0.0004941035454 0.0007246598731 0.0003301865236 4.291472068e-05 4.052033697e-05 9.968860014e-06 6.716495222e-06 5.487952429e-06 9.723847359e-10 1.758294545e-06 8.398492699e-05 0.1776696438 0.01725492378 0.04678256292 0.0002545971352 0.0116484344 0.005373100619 0.0002940130091 0.01768100539 0.0003086606585 5.188869493e-06 0.007150241757 6.954795929e-07 4.725548093e-05 9.233184878e-06 2.474304204e-05 0.0003053467561 8.153951874e-05 1.648052574e-06 3.833951643e-05 0.0004143729327 1.04852697e-05 2.87598842e-07 3.366167478e-07 1.604771324e-06 3.62493567e-07 3.305852845e-05 3.121449876e-08 1.686404213e-05 5.043462888e-05 3.265560227e-08 1.005540422e-05 5.803105836e-06 1.177613125e-08 1.030701461e-05 5.999445556e-06 3.634806145e-09 1.016307864e-05 1.017289336e-05 0.002481552829 0.001672355602 0.02692113674 0.0004014106313 0.141670097 0.0002033964098 0.0001607237382 0.003020108596 0.08102497768 0.0001684003598 0.000139022967 4.314783465e-05 0.02118661113 4.045780063e-06 0.00432976631 0.0001699152073 0.0002058200433 3.559561554e-05 1.245507422e-06 0.006972267243 3.523294202e-06 2.54922003e-07 6.240208304e-07 1.923903662e-05 0.001104791678 2.052917165e-06 8.895675801e-07 4.191390288e-06 5.018807816e-08 0.0003616632239 8.356771521e-09 7.73529793e-09 7.760932095e-08 1.03178866e-07 0.0003021572286 5.239114267e-07 2.405202494e-08 6.885181433e-06 2.385754127e-06 4.754392365e-05 1.065174358e-06 3.071967975e-07 9.266752307e-06 2.163821485e-06 3.755525019e-05 3.02706414e-07 1.402918674e-07 2.357547918e-07 4.892182142e-06 3.203789825e-05 2.502684732e-07 1.336604025e-07 1.172752243e-07 2.194653808e-07 9.026475374e-06 2.741400194e-07 1.445209731e-07 4.703769703e-06 1.904793323e-07 1.122649217e-05 2.36439545e-07 9.414791081e-08 3.46162429e-07 7.945937791e-07 1.110846314e-05 -0.009757038583 0.04474124598 0.01554943712 0.0008665393746 0.0005526456532 0.0003643302432 7.627464471e-05 2.490445249e-05 1.108889171e-05 1.079996553e-05 3.333971167e-06 1.659400206e-10 2.228404482e-06 0.0003794387675 0.1818511156 0.0187689767 0.0522193822 6.387008582e-07 0.00940313164 0.006845818301 0.0002420722192 0.0169787014 0.0001688705996 1.043050731e-05 0.008102966931 5.614654738e-08 4.373341693e-05 0.0001002673065 0.0001253978772 9.802786005e-05 0.0001357731669 8.200548457e-07 2.988493901e-05 0.0004478918229 1.103552955e-05 1.309687302e-07 3.291914233e-06 2.282062317e-08 6.661097054e-07 3.532657702e-05 4.672966754e-14 1.549673775e-05 5.110596342e-05 2.250109008e-08 1.025393876e-05 3.551648186e-06 1.530229776e-09 1.243555021e-05 5.273740406e-06 3.364212099e-08 9.793191467e-06 9.86768425e-06 0.003118568038 0.001207441434 0.02790559346 0.002040515172 0.1355725687 0.0003351877554 0.0001106781561 0.003336546976 0.08325153611 0.0009801345515 0.0001517467443 2.159396513e-05 0.001387340971 0.02495112868 0.0010529216 0.0005546532795 0.0001458587978 0.0001166094626 4.950730018e-07 0.006740420791 1.787665567e-07 1.059706517e-07 9.528237407e-07 2.460315404e-06 0.001438312644 2.0934529e-06 4.697707661e-07 1.25855692e-05 1.737302121e-05 0.000392810633 2.658931129e-07 7.090081895e-09 9.001823931e-07 4.499777651e-09 0.0002358545569 6.97850624e-07 8.307760915e-08 1.269639445e-05 1.37392548e-06 6.421912348e-05 1.14533366e-06 2.302101759e-07 1.174175265e-06 5.871360655e-06 5.388751476e-05 2.780335021e-07 8.456492223e-08 1.528229936e-07 3.90990273e-06 2.1801248e-05 3.207676491e-07 8.88609323e-08 2.989422179e-07 3.820928703e-08 9.980770244e-06 3.179190577e-07 9.743290995e-08 5.018487078e-09 9.844544529e-06 7.476819036e-06 2.534771362e-07 6.645459271e-08 6.40876501e-07 1.878099678e-06 7.684679882e-06 -0 0 0 0 0 0 0 0 0 0 0 0 0 -0.00162377554 -0.06231295818 0.06393673373 0.03490535829 -0.03057409461 -0.004331263676 0.02742993869 -0.02605538145 -0.001374557241 0.01407197436 -0.01374992348 -0.0003220508829 0.01807441456 -0.01808002831 5.613747782e-06 -0.0005455728726 -0.00116311768 0.001708690552 -8.203563427e-05 -0.001419968441 0.001502004076 7.9245632e-07 -0.001458716866 0.00145792441 -1.800967524e-06 0.0003989897321 -0.0003971887646 0.0001495623572 -0.0001440748064 -5.487550815e-06 0.0002670745877 -0.0002674110123 3.36424614e-07 -9.522323699e-06 1.033593098e-05 -8.136072782e-07 -2.551444622e-06 -1.780288766e-05 2.035433228e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2.088996375e-06 1.11877817e-05 5.864847006e-06 1.055629268e-06 5.986915383e-10 7.015316621e-08 6.762526655e-08 2.745420967e-09 6.320039204e-11 5.163508426e-09 1.800701408e-10 3.561286207e-10 5.020479124e-10 -0.06480393144 0.06485633946 -6.006866945e-05 0.006622421329 -0.004094429367 -0.002533307184 0.004634081455 -0.004634464194 2.240771473e-06 2.405899665e-05 -2.401485831e-05 2.83551221e-06 -1.400024146e-07 1.398588877e-07 4.330639896e-07 -8.759926811e-05 8.554312223e-05 2.054280303e-06 2.850977795e-07 -2.860251715e-07 7.323076069e-08 2.201159864e-06 -2.075118246e-06 -1.075008666e-07 -8.204088103e-06 8.236688388e-06 -1.882954941e-08 -2.047625968e-06 2.063886701e-06 -1.376803129e-08 -3.244726177e-09 -2.115252783e-06 2.117352087e-06 -3.097537469e-06 3.100086333e-06 4.580215756e-10 -2.529279125e-06 2.587464723e-06 -5.80597372e-08 0.002894446125 -0.002769958927 4.658844049e-07 -0.02635873072 0.02623269368 0.0003730808155 -0.0003712116662 -9.739636075e-05 0.01657477215 -0.01648413512 1.661527158e-05 -8.888765757e-06 -4.818319457e-06 0.008030384045 -0.008035915937 0.0001162726992 -0.0001224896836 -0.000509680475 0.0005157590346 8.95278414e-07 4.623836706e-06 -3.916964916e-06 -7.131061799e-05 7.068821736e-05 5.370868358e-07 -4.98676799e-08 -1.753461389e-09 -2.067217065e-05 2.074434301e-05 1.961420363e-07 8.952438246e-06 -9.95496333e-06 8.736755617e-07 1.313808883e-07 -4.368594956e-09 -1.43467353e-06 1.493326109e-06 8.478031542e-09 -1.631071763e-06 1.566922649e-06 2.755623162e-07 -2.553814111e-07 -1.409976935e-06 1.396124212e-06 1.909350235e-08 1.081827993e-07 -1.001019631e-07 -9.957240421e-09 -4.470589946e-07 4.4921265e-07 1.375758547e-07 -1.258101268e-07 -3.115009263e-09 4.166129449e-06 -4.175159921e-06 1.481486199e-07 -1.407979806e-07 -1.584487231e-06 1.576478448e-06 2.735064169e-09 1.710803789e-07 -1.616627619e-07 -2.54833005e-09 -8.077543575e-07 8.006180754e-07 --1.326267181e-05 -5.446982579e-05 -1.356076301e-05 -1.060804862e-07 -1.216351279e-06 -2.814669419e-07 -7.273939339e-09 -8.067237954e-08 -5.57945339e-09 -1.818586503e-09 -1.072689741e-08 -2.079528158e-10 -1.175593046e-09 -0.003398406741 0.003006693155 0.0004331526636 0.000724235533 -0.00126703972 0.0005400775172 -0.0001209966777 0.0001234419885 -2.350044907e-05 4.481689033e-05 -3.063781198e-05 -2.04707115e-05 1.603992118e-08 9.721599775e-08 -2.107518713e-07 -7.157603564e-06 1.860415002e-05 -1.184224758e-05 -2.892991809e-06 7.392100271e-07 1.815114114e-06 1.936916262e-07 -1.752654656e-07 -4.547559658e-08 -7.867884919e-08 3.937891964e-08 4.132973116e-08 -2.422070199e-07 -6.22376102e-07 8.285806744e-07 -2.21694149e-07 -5.569504973e-07 7.696207758e-07 -1.211309004e-07 -1.162261979e-06 1.286276734e-06 -1.868868847e-07 4.168483161e-09 1.766271127e-07 7.750736634e-05 -3.186917778e-05 -0.0007125801256 -0.004537386336 0.005220688451 -4.440984907e-05 3.845466094e-05 0.0002932984686 0.002148869316 -0.002411181964 -3.604695609e-06 8.770507937e-06 0.0003129087435 -0.0003065443129 -1.283835946e-05 -4.855622831e-07 3.135952008e-07 -4.026730273e-06 3.774752718e-07 -4.56872174e-06 -8.088648288e-07 8.723555908e-07 -1.610679422e-06 1.635818637e-06 -7.122839426e-07 -8.565058635e-08 4.554472658e-07 2.401385559e-06 -1.220273179e-05 9.509776424e-06 -2.789809692e-08 3.833718307e-08 -1.325881428e-06 1.082247128e-06 -2.177859133e-07 9.824607122e-09 -7.787222237e-09 -1.686506488e-06 1.53808725e-06 1.324686571e-07 -1.462356155e-08 3.018025046e-08 -2.912615081e-08 -7.997581905e-07 8.249885418e-07 -1.08812304e-08 2.960082775e-08 -8.021064548e-09 -1.058054327e-06 1.001214314e-06 -2.654636762e-08 3.315326274e-08 -1.511497281e-07 -6.742535613e-07 8.208652736e-07 -6.85536719e-09 1.362092433e-08 -1.769290805e-07 -7.948739921e-07 9.660504763e-07 -5.104867942e-09 1.214915723e-08 4.409754002e-08 -1.493750977e-06 1.436302386e-06 -0.01824220201 0.0805783337 0.02512034325 0.0008852387185 0.001298304745 0.0005915640512 7.688625734e-05 7.259646588e-05 1.786026622e-05 1.203331099e-05 9.832246744e-06 1.742130016e-09 3.150170495e-06 -0.001649987236 -0.08643078348 0.02849196416 -0.02503822496 -0.001175271686 0.01898568913 -0.003103056846 0.000408474929 0.03167054674 -0.0001163204481 2.331398313e-05 0.0128318963 1.770818377e-06 -2.62432328e-05 1.596627572e-05 5.981074793e-05 4.485530716e-05 0.000235472225 -4.021912521e-06 -1.91616038e-05 0.0007389763628 -5.649109324e-06 6.614846167e-07 6.262052095e-07 2.741452961e-06 1.141106054e-06 -1.779989728e-05 -1.595232912e-07 -1.095624187e-05 8.830232328e-05 -1.727041283e-07 -7.323316242e-06 7.467357186e-06 -9.617911258e-08 -8.347648226e-06 5.657689752e-06 5.577487576e-08 -5.892517385e-06 1.765693973e-05 -0.001936718718 0.0001585004831 0.04781906475 0.003424537113 -0.068893031 -0.0001909434488 1.188856279e-05 0.003097079753 -0.04255196697 0.001404923019 -8.483964184e-05 2.730610839e-06 -0.0114649167 6.75779401e-05 0.007683799312 -0.0001435779227 -6.68125391e-05 -2.420485852e-05 -5.016958588e-06 0.01246484702 -1.980227074e-06 3.735005527e-07 2.125983226e-06 -7.526938215e-06 0.001980690766 -1.096488025e-06 -2.434405987e-07 1.096696896e-05 -2.168159232e-06 -0.000153763929 -6.497518753e-09 2.759979108e-09 -9.280175871e-08 1.496526367e-07 0.0005413161043 -2.915279494e-07 3.669343461e-08 -6.519984522e-06 1.679023663e-06 8.343311547e-05 -6.850453021e-07 1.335530872e-07 1.69096687e-05 6.315179334e-06 -1.694139915e-05 -2.01693867e-07 5.920072221e-08 -8.935341757e-09 -4.547323689e-06 5.538285574e-05 -1.849636634e-07 3.147424099e-09 1.464646894e-07 -7.115780087e-07 -3.757574703e-06 -1.99582072e-07 2.838634075e-08 9.091074011e-06 -6.967942491e-07 -4.027107143e-06 -1.597838453e-07 3.362688441e-08 3.230030163e-07 -3.087614101e-06 9.869164827e-06 --0.01748639118 -0.08018446608 -0.02786742493 -0.00155299647 -0.0009904417201 -0.0006529461884 -0.000136698063 -4.463331724e-05 -1.987331469e-05 -1.935550632e-05 -5.975083887e-06 -2.973947564e-10 -3.993706917e-06 -0.003249834809 0.09328021568 -0.03159981964 0.02857336326 5.105882809e-05 -0.01557652851 0.003818174704 -0.0004468098498 -0.03041730325 7.387912771e-05 -2.637773687e-05 -0.01453119962 -2.046824949e-07 2.618178552e-05 -0.0001776836955 -0.0002176822485 -8.882516991e-05 0.0001281516868 2.431776419e-06 1.407266177e-05 -0.0008012112301 6.205503968e-06 -2.823931672e-07 -5.795243303e-06 -1.751719601e-08 -1.794984978e-06 1.888435935e-05 1.382939578e-10 9.654792341e-06 -9.036870314e-05 -1.09892328e-07 7.400771453e-06 -3.230780687e-06 -3.501126728e-08 8.152739519e-06 -7.583878161e-06 -1.352811427e-07 5.698355758e-06 -1.729571431e-05 0.002213470272 -0.0003301984424 -0.04897274462 -0.007003080899 0.07106746903 0.000251597986 -4.008116331e-05 -0.00451847988 0.04556528613 -0.003070937265 8.909966863e-05 -5.08422607e-06 -0.00333689347 0.01234697911 -0.002289085054 0.0004032435307 -2.688576081e-05 5.778461895e-05 1.58769992e-06 -0.01205790066 1.453951493e-07 1.276192571e-08 -1.92524906e-06 6.140807131e-07 -0.002578125844 1.12281779e-06 -3.462616822e-08 -2.065085136e-05 -7.141692118e-05 0.0001331930647 1.567829185e-07 -3.132345755e-09 4.814715021e-07 -1.490821713e-08 -0.0004226992193 4.264499108e-07 -6.822043276e-08 9.362134547e-06 -9.118732075e-07 -0.0001134379446 7.075240937e-07 -1.534934636e-07 -1.660550148e-06 1.779504023e-05 -5.033046652e-05 1.768397299e-07 -5.487682036e-08 -1.109312692e-07 3.254383363e-06 -3.796622346e-05 2.183882167e-07 -1.496735909e-08 -5.032031642e-07 2.877748792e-07 4.497156526e-06 2.137794861e-07 -3.989079495e-08 -1.011683349e-07 4.798608316e-06 -1.327732964e-05 1.630513155e-07 -3.680404806e-08 -1.013009801e-06 -5.22677944e-06 1.282078471e-06 -0 0 0 0 0 0 0 0 0 0 0 0 0 -0.02382387374 0.00324622331 0.02580902879 0.02476437007 0.002350210378 -0.02349750896 0.007730911232 0.0008991013958 -0.007205833271 0.0005086882438 7.245901836e-05 -0.0004611115965 1.855111421e-06 -8.329018398e-06 -1.792124447e-05 0.0005060770889 -4.221096898e-05 -0.0005228076777 4.777176678e-05 -6.589063365e-06 -5.076660106e-05 -1.777025584e-06 -4.129273778e-06 2.088498994e-07 0.0001517317237 -0.0001404315838 -4.610608996e-06 -4.090984122e-06 -6.524986626e-07 3.937846094e-06 -9.213637726e-07 2.907378046e-07 2.787818263e-06 1.490666776e-07 5.386196408e-06 -6.215419728e-06 -3.194418588e-06 4.350470165e-07 3.209048417e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.002676733398 0.004884092499 0.002316878186 0.000537169852 -8.336880082e-06 -4.933089298e-05 -3.739883502e-05 -4.075265716e-06 5.435070948e-07 2.439683709e-06 4.507305947e-07 2.595190234e-07 -3.661227982e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.09594540763 0.01685534728 0.01221939591 0.0001217713775 0.00168626799 -0.0003715984529 2.016048171e-05 0.0001037620236 -3.419200244e-05 1.543278856e-05 2.890457769e-05 3.908052489e-06 9.032492139e-06 -0.04139967265 -0.0001071120687 0.1064159904 -7.564639645e-06 -0.00147056682 -0.01365156094 4.809842108e-06 0.0006179004767 0.01360047549 -2.539470068e-06 -0.0001809472463 0.004137458164 4.578396791e-05 -6.335886743e-10 0.0005319568184 -3.827815903e-05 -9.162144023e-07 -0.0002920650162 -5.259158216e-06 -3.43579252e-08 0.0001434552982 -7.344891081e-09 -6.87926436e-06 8.872281177e-05 -4.880095849e-05 -7.591102382e-06 1.108716063e-10 -3.255969023e-06 3.836408004e-08 7.609258069e-05 -2.161253734e-06 5.898399113e-08 3.259573114e-05 -2.838206515e-06 1.990259575e-07 1.080666657e-05 -3.070401971e-06 -2.405674908e-10 3.037967201e-05 2.438069465e-06 0.001268775277 0.09276486369 -0.05005999406 -0.0002679814963 1.825876749e-05 0.0001449118056 0.002375877549 -7.482878349e-05 -0.01061633342 1.969650425e-07 2.880578671e-05 1.786156495e-06 0.0008319721765 0.002431839318 6.487236194e-08 1.742034933e-06 -2.177110436e-06 -1.495605969e-05 0.004588508829 8.747027441e-08 8.579676001e-06 4.039018546e-05 2.087191292e-07 -0.0005768677847 1.609275759e-09 1.194367452e-07 -6.071058123e-06 -3.134049404e-06 -3.07206248e-08 7.734330008e-09 1.039954e-07 -3.822620337e-07 -4.69161947e-06 0.0001217598484 8.086371054e-10 8.531275214e-08 4.355111772e-07 1.147404924e-05 -6.228173985e-05 4.893001752e-10 3.807616907e-07 6.213634987e-06 -1.266084599e-05 -3.38288228e-08 6.439546283e-10 1.686980873e-07 -1.098178259e-07 1.018656067e-07 3.460967119e-05 4.943849414e-09 1.042529017e-07 5.363968971e-06 -4.203882146e-06 -1.308796025e-07 3.66891902e-10 1.34326079e-07 9.819399448e-06 -4.776428157e-06 -1.610198287e-07 2.365388601e-10 1.114506653e-07 1.017371085e-06 1.713573311e-07 1.046389283e-05 -0.04586155795 -0.004839693972 -0.007054391976 -0.0002456013128 -0.0007100223794 0.0001729086054 -2.049133284e-05 -4.247413555e-05 2.448600612e-05 -1.425581202e-05 -1.010358625e-05 -1.416563226e-07 -5.808762619e-06 -0.002752137801 0.03174167716 -0.06048255824 0.001092295294 -0.0005482081269 0.008407654959 4.909275513e-05 -0.0004870870493 -0.00598302465 5.639870813e-05 4.353829945e-05 -0.00274084698 -1.448531027e-05 -8.37881675e-06 7.235442089e-05 2.220861542e-05 3.224991314e-05 3.419394543e-05 -3.250867955e-06 6.61454708e-06 -8.680683093e-05 7.286792858e-07 2.678108135e-06 -5.413192189e-06 1.126122449e-05 2.565480012e-06 1.594265468e-06 -6.8493613e-07 2.815603995e-06 -3.803510468e-05 -6.709381245e-07 4.060058873e-06 -1.003402687e-05 -4.619680018e-07 5.167564356e-06 -9.870099149e-06 2.048419828e-07 1.690579451e-06 -1.501782619e-05 0.001184745374 -0.002123384159 -0.04377343659 0.006703449333 0.02255991757 0.0001859276217 -0.0003029867998 -0.003899716021 0.00666708211 0.001697113537 1.424232279e-05 -3.059000492e-05 -0.0001554300075 -2.145704782e-05 -0.0007897844472 0.0001166654461 -0.0002284062205 -2.52524643e-05 3.731528427e-05 -0.002325414187 -7.56732725e-08 -9.320751764e-07 -9.734909274e-06 -7.798033806e-06 0.0003048234843 -1.692755686e-07 2.874895358e-07 2.196546496e-06 2.079470646e-07 -3.868547127e-06 4.311110035e-09 -5.802227538e-09 -1.602482233e-07 1.624192346e-06 -6.37000234e-05 -1.76118451e-08 -1.118511268e-07 3.867239658e-06 -1.051687814e-05 5.289593726e-05 1.941685676e-07 -4.555961257e-07 -1.558484757e-05 5.541301019e-06 3.143764958e-06 7.079597145e-08 -1.43118435e-07 -1.724272959e-06 1.545722917e-06 -1.101913388e-05 1.064921494e-07 -1.918853432e-07 1.004890409e-06 -1.753968296e-06 3.993742259e-06 1.071592178e-07 -2.028453255e-07 -6.388582037e-06 -1.700286146e-06 4.151657549e-06 6.097500839e-08 -1.278576303e-07 -2.297807531e-06 7.814144865e-07 -2.335940853e-06 -0.04538818136 -0.003346176443 -0.007590042865 -0.0003895897915 -0.0006220623591 0.0001620722504 -2.523514489e-05 -3.459710491e-05 2.568297531e-05 -1.721785816e-05 -7.655231548e-06 5.852719416e-08 -6.482946637e-06 0.006057391377 0.02326534052 -0.06261959785 0.000703187845 -2.774862046e-05 0.008567025331 -5.266355105e-05 -0.000427608147 -0.005611242343 2.621725911e-05 6.735657144e-05 -0.003102723723 -4.053606805e-06 -6.977845057e-06 0.0002232244508 5.339760045e-05 8.160169939e-06 -3.12308009e-06 -2.480859129e-06 5.686240176e-06 -9.601175452e-05 4.008806647e-07 1.684931513e-06 1.781440226e-05 1.323081719e-06 2.868231418e-06 1.122057158e-06 -8.097701327e-10 1.613056714e-06 -3.614446532e-05 6.461510257e-07 3.399236264e-06 -6.855315907e-06 1.571776366e-07 3.051485075e-06 -1.016680807e-05 6.240896737e-07 1.007283366e-06 -1.41339149e-05 0.0009779732835 -0.001889107376 -0.04322158641 0.01532583036 0.01422247242 0.0001499493704 -0.0002898859478 -0.004209804909 0.004024031988 0.004369431309 6.736142257e-06 -1.632602062e-05 -0.000198312234 -0.0001372997837 -0.0003459160666 0.0002160318138 -0.0003830941333 -2.089962045e-05 1.536672122e-05 -0.002315435844 1.082711525e-07 -2.108587285e-07 -1.058179354e-05 -1.432411629e-06 0.0002976143174 -1.700203973e-07 3.61257147e-07 7.602292768e-06 -1.274335255e-06 -2.733637831e-06 9.611426173e-09 -5.024945907e-08 1.47501014e-07 3.73526161e-07 -6.168844993e-05 6.984667183e-08 -2.397848155e-07 3.851626902e-06 -8.584926692e-06 5.86161684e-05 1.336282226e-07 -3.634364929e-07 -6.142912504e-06 2.133223166e-06 -7.752959791e-06 4.291456431e-08 -1.002695869e-07 -1.336339744e-06 8.217478905e-07 -7.931290261e-06 8.883172298e-08 -1.709435249e-07 1.54668176e-06 -7.720855498e-07 3.417250983e-06 7.970132837e-08 -1.682276705e-07 2.82484264e-07 2.600760365e-06 -7.93452495e-06 4.422006311e-08 -1.051683854e-07 -3.104852228e-06 -2.568324415e-07 3.931350055e-07 -0 0 0 0 0 0 0 0 0 0 0 0 0 0.006047608879 -0.01043326028 -0.2829929257 -0.1577293036 -0.002302051951 0.003874318373 -0.03774797378 -0.0009101855957 0.0008447512808 0.008900577745 0.00031631184 -0.0001702832824 0.0009547880414 0.003046314221 1.967008927e-05 -4.412499636e-05 1.723926306e-05 0.001823800535 2.13749235e-05 -2.356549811e-05 -0.0009630672702 6.571044641e-08 5.831811616e-06 2.652435686e-05 -0.0001300805978 -0.0001865309905 -5.813940429e-06 0.0001446839676 5.587106151e-06 -3.223287793e-06 -1.244869564e-05 -4.719051333e-05 -5.343545361e-07 1.9010022e-07 3.430654074e-05 3.45327263e-06 1.050675628e-06 -9.543942823e-07 -4.168301446e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.001685737834 -0.0003381771141 -0.0003557529637 -1.700574606e-05 -1.656193813e-06 8.212896473e-06 -2.721341675e-06 8.47408825e-07 1.611020642e-07 -1.151230745e-06 1.657917544e-07 -2.264091292e-07 -2.613149044e-07 -0.01142620873 -0.1625569815 -0.007567251455 -0.01533900275 -9.936796046e-05 0.002766463152 0.004996630878 0.0002716793514 -0.0002154741648 0.0002866257996 4.110704554e-06 -0.0001103117022 5.885216371e-07 1.750732035e-05 4.275958843e-05 2.021998972e-05 9.266919809e-06 -0.000146391596 -3.129535549e-06 -2.027190403e-07 -2.584536267e-06 -4.200069269e-05 -2.050085903e-07 6.144964072e-06 -1.537528809e-06 -4.037619304e-05 -4.716422326e-06 -3.867269091e-07 -1.504881879e-05 -2.229204927e-06 7.091136967e-07 -1.964333633e-07 -1.754733116e-05 -6.156003849e-07 -1.454781804e-05 -1.092896232e-06 -4.613708493e-07 -1.050980867e-05 -2.595901556e-06 0.003670346839 0.00239518229 -0.001020602947 -0.004983450086 -0.1496339244 9.944667509e-05 0.001204523162 -0.001193311417 -0.03905193638 -0.0007706419767 9.898894005e-06 7.761149807e-05 3.640262369e-05 0.004539890864 0.0001347946917 1.26850082e-05 0.000854143973 2.15469491e-05 0.001983103904 -5.156823554e-05 2.482718859e-06 1.300867402e-05 -8.892741671e-06 -0.0003889316379 1.786581401e-05 5.526938171e-09 -2.07575613e-09 -1.179333766e-07 -1.009875982e-05 -5.001455855e-07 2.630344935e-06 2.166336e-05 6.562973748e-07 2.533425904e-07 -1.777471801e-07 2.276150757e-06 9.478828185e-07 3.330355155e-07 -8.154342144e-05 -3.327331339e-08 1.709387702e-07 5.451108298e-07 -4.903881353e-07 -2.022225174e-05 -1.591149289e-06 5.45661896e-08 2.638112648e-07 3.487733924e-07 -1.201173808e-07 -9.385317553e-06 6.786986626e-07 2.592724565e-08 -2.435953088e-07 -1.655730338e-05 -1.254311092e-06 3.111562423e-07 7.217938802e-08 -9.897268402e-07 -9.92729723e-06 -2.236059673e-07 1.590686855e-07 2.073441688e-07 1.227447876e-07 -1.945871828e-07 -1.004879941e-05 --0.1523488835 -0.2434318343 -0.07958008707 -0.003846459461 0.008488266233 0.002232012003 0.0002770613248 -0.0004990009603 -0.0001153529348 -3.270510539e-05 7.858157688e-05 -4.479563033e-06 1.265523413e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.04131985135 -0.01646632406 -0.004705958451 9.205562415e-05 -0.0005640979686 0.0003013448699 -5.21698e-05 -3.659940002e-05 2.16851661e-05 -1.859991403e-05 -1.428638571e-05 -1.550302657e-07 -6.095179158e-06 0.0007493664641 -0.1247694159 -0.05852204658 -0.0001608285368 5.353126646e-06 9.662881481e-05 0.002122725176 0.0002931821957 -0.006088349245 -0.0001426757483 -6.919665017e-06 -0.0009629073388 5.746512189e-06 0.0001200377142 8.466784467e-05 -1.085026153e-06 -6.977350995e-05 0.0001604431629 6.741538106e-07 -2.598135438e-05 -0.0001207648549 -1.449456427e-05 -1.421808436e-06 -3.778524509e-06 1.048638559e-05 -2.208423408e-06 -3.416678264e-05 2.742274438e-07 -2.047674433e-05 -5.7020189e-05 9.400710095e-08 -9.660685875e-06 -1.647031074e-05 2.248329545e-08 -6.733136646e-06 -1.58310089e-05 -6.734892115e-08 -1.09012341e-05 -1.741388629e-05 0.002022215937 0.002473453422 -0.03442506709 -0.002868817663 -0.141448347 0.0001412133051 0.0002155199775 -0.002448807031 -0.01670114701 -0.000249101929 0.0001314879741 7.212721989e-05 0.004553811344 3.474144472e-05 -0.001076159775 0.0001301771883 0.0002386172281 8.846470263e-05 -8.141652004e-06 -0.001106517027 3.462180601e-06 6.695419265e-07 7.319456987e-06 0.0001030839147 0.0004402604336 2.061418525e-06 1.779298732e-06 -7.288282745e-06 6.948593424e-07 -0.0001671099808 6.833700495e-09 1.259084524e-08 -8.877306696e-07 -7.56846803e-07 -3.673981777e-05 5.170791039e-07 6.737771857e-08 -1.759773714e-05 3.775508865e-06 1.820248203e-05 9.80613723e-07 5.271177286e-07 -9.274687293e-06 -6.270678923e-06 -4.840861113e-05 2.732826111e-07 2.324773663e-07 9.431156493e-07 -1.35922277e-05 -2.51935728e-05 2.120392066e-07 2.079203238e-07 8.794597015e-07 3.795436008e-07 -1.50569718e-05 2.345531261e-07 2.211498054e-07 -5.077409837e-06 3.539635555e-07 -1.556855535e-05 2.117409394e-07 1.531927724e-07 5.293911734e-07 -1.866051419e-06 -1.705945802e-05 -0.0410669468 -0.01499484459 -0.005392594102 7.676372394e-05 -0.0005190537886 0.000303801039 -6.208915193e-05 -2.826115567e-05 2.343619389e-05 -2.318649601e-05 -1.066608273e-05 6.233960661e-08 -6.767553429e-06 -0.00196917674 -0.126426481 -0.06090186174 -0.001690130612 3.622209893e-06 0.000866152354 0.00253588978 0.0002552429495 -0.006032581973 -0.0001248248816 -1.449351464e-05 -0.001236348519 1.610296106e-06 0.0001171782905 0.0002809666756 7.144628168e-05 9.658056481e-05 -0.0001392460119 5.478756674e-07 -2.072930036e-05 -0.0001099597449 -1.51767914e-05 -1.146309268e-06 1.158085305e-05 1.203905578e-06 -3.572506376e-06 -3.633883271e-05 3.860448168e-10 -1.924899582e-05 -5.488367793e-05 -2.153411021e-08 -7.887492977e-06 -1.253255165e-05 -2.580142664e-08 -1.070671725e-05 -1.341516539e-05 -2.281618649e-07 -1.068543883e-05 -1.692556645e-05 0.002707267061 0.001942698587 -0.03426172588 -0.007583981656 -0.1344006892 0.0002805516837 0.0001737962347 -0.002770288581 -0.01933608041 -0.0008297958545 0.0001460678501 4.263014988e-05 -0.000843829882 0.004335529552 0.0003723347975 0.0004743013349 0.0002281403312 1.245351866e-05 -4.645409078e-06 -0.001172696723 1.410207325e-07 1.368132312e-07 1.027871897e-05 3.500136908e-05 0.0004680618906 2.096826189e-06 9.9403538e-07 -1.292830495e-06 -1.491147492e-05 -0.000143847025 2.554037345e-07 1.372637805e-08 3.003652981e-06 -1.329588866e-07 -2.927412891e-05 6.58886314e-07 1.787147662e-07 -2.429038058e-05 3.54452352e-06 2.339833996e-05 1.075530589e-06 4.351832731e-07 1.997895922e-06 -9.283292887e-06 -6.072679894e-05 2.571645928e-07 1.527653757e-07 8.32516043e-07 -1.130559534e-05 -1.895681023e-05 2.856843586e-07 1.546104327e-07 1.362408872e-06 2.269996531e-07 -1.471485807e-05 2.851838265e-07 1.6394295e-07 -1.031794473e-07 -1.354437436e-05 -6.5275286e-06 2.330499313e-07 1.16885065e-07 3.633865749e-07 -3.06127174e-06 -1.368557398e-05 -0 0 0 0 0 0 0 0 0 0 0 0 0 0.008920580631 -0.03956498455 0.1657839693 0.08610324418 -0.01419201404 0.006722549332 0.02602705899 -0.005323241906 0.001567136224 -0.003533805135 0.0008246601954 -0.000155459278 -0.001935659153 5.811458867e-07 1.95630294e-05 -0.0001065394889 0.0001410192176 -0.001127953254 2.037541845e-05 -7.20525388e-05 0.0003524274863 3.789526298e-08 4.736771809e-06 -1.397824368e-05 -1.199293469e-05 0.0002351850177 -4.196674345e-05 -7.129095262e-05 1.722299999e-05 -3.960834119e-06 2.691650328e-05 1.820987368e-06 -4.854441454e-07 2.51822064e-06 -2.361124523e-05 2.114174138e-06 1.540134434e-06 -3.803988851e-06 1.920053559e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.001729995774 -0.0002010234754 -0.000379962881 -2.989662889e-05 -1.699617918e-06 6.637512998e-06 -2.142231335e-06 9.207406297e-07 1.623677981e-07 -1.040969153e-06 1.524179256e-07 -2.257694349e-07 -2.584968216e-07 -0.03182293404 0.122962351 -0.007551915832 0.004328158257 -0.000689454195 0.004769246967 -0.003164225212 0.000804720921 -0.0002051271705 -0.0001967041828 3.208488786e-05 -0.0001343257154 2.258209697e-06 -1.033769007e-05 3.993767532e-05 1.91422488e-05 3.000446016e-05 -1.454359397e-05 2.31712634e-06 -6.193545709e-07 -2.798298344e-06 1.801188301e-05 -1.954797588e-06 7.245532289e-06 -5.793059716e-06 2.722410696e-05 -4.302384628e-06 -1.814142805e-06 1.011570895e-05 -1.881436504e-06 7.293106182e-07 -1.374176042e-06 8.707708984e-06 -2.257982713e-06 9.912947606e-06 -1.074943247e-06 -1.82468663e-06 9.727681545e-06 -2.197724547e-06 -0.00423976144 0.001230372429 -0.001081759265 -0.02066708847 0.09470164857 -0.0003668154774 -0.0003514422294 -0.001271420562 0.02880767345 -0.005087627297 -1.887258914e-05 -1.184854924e-05 2.426842931e-05 -0.001929399495 0.0004026619448 -0.0001040013657 -0.0003508841203 0.0001772397464 -0.001237507685 -6.039865091e-05 -5.109992757e-06 -8.391128643e-07 -3.547831124e-05 0.0001842674423 1.512980326e-05 3.922354513e-08 -8.706096428e-10 1.477074149e-06 -1.008381504e-05 8.630042727e-07 -8.847420324e-06 -5.275222052e-06 -1.746834533e-06 1.021325144e-06 -2.482590745e-07 7.267039249e-08 -1.779433124e-06 3.533606063e-07 4.123993813e-05 1.390383353e-06 -3.158164399e-07 1.230045399e-08 -2.106367717e-06 1.099001198e-05 -1.324640153e-06 -1.179605798e-07 -1.697977238e-08 3.890605305e-07 -6.705202839e-07 4.161321203e-06 -4.499445405e-07 9.455002301e-08 -2.52717636e-07 1.232405867e-05 -3.344015069e-06 -2.779065737e-07 8.712117402e-08 -2.200589662e-06 7.476192558e-06 -2.410573273e-07 -2.206321027e-07 4.404875622e-08 1.315603684e-07 -9.769808479e-07 5.261074664e-06 --0.08871338424 0.03408937395 0.008706244958 -8.024008733e-05 0.00137483075 -0.0005233956728 4.040481887e-05 9.714762226e-05 -3.051884765e-05 1.820701976e-05 3.757392512e-05 4.264932162e-06 9.375651705e-06 0.01753334404 0.001746362431 0.1031182773 2.061329896e-06 1.80267655e-05 -0.0002342439227 4.777399731e-05 -0.0003817283041 0.01314629877 1.299615384e-05 4.068456038e-05 0.00176452266 -2.328101533e-05 -2.238203163e-07 0.0005511830258 2.165035876e-05 1.329972919e-05 -0.0006051937607 2.808424434e-06 3.163210824e-07 0.0002168637986 2.132193588e-07 3.250258065e-06 7.10047073e-05 -4.541063962e-05 5.568603298e-06 3.613855917e-08 1.348779432e-06 -5.493870347e-07 0.0001015009734 7.339001543e-07 -4.993268071e-07 4.478200194e-05 1.356738572e-07 -7.376518359e-07 1.611988188e-05 1.217408847e-06 3.53445324e-09 3.280506443e-05 -6.705320501e-05 -0.0007646908358 0.07713830919 0.02572213312 0.004234662513 2.807043854e-05 -8.934777696e-05 0.001616080457 0.0003929380776 0.002081343967 2.933161044e-06 -3.37615524e-05 -6.266701268e-05 -0.0006630556816 0.003418841722 3.768244368e-07 -6.543044361e-07 1.270315115e-05 4.279533994e-06 0.002537876497 6.371655754e-07 -6.242548472e-06 -2.685284133e-05 -4.136839623e-06 -0.000713115546 6.847834506e-08 -1.649698484e-06 -4.687061534e-05 1.947451232e-05 3.810362911e-06 1.973137617e-08 -9.521417203e-08 -1.030629882e-06 3.181501874e-06 9.391463673e-05 -8.654375452e-09 -5.024578793e-08 -4.439859335e-06 -1.123206295e-05 -1.150489519e-05 1.20462821e-08 -2.350077756e-07 6.064630431e-06 8.537645902e-06 8.796546927e-07 8.841521907e-09 -1.873806024e-07 6.405583709e-08 -1.614220304e-06 6.027882809e-05 1.949166447e-08 -9.529248541e-08 4.23746516e-06 2.245701586e-06 1.176832755e-06 5.595068309e-09 -9.431198295e-08 8.673765901e-06 1.84011231e-06 1.079566787e-06 4.180827436e-09 -9.331964147e-08 -3.539984824e-07 -1.851920395e-06 2.119251743e-05 -0.07095922757 0.1175858341 0.04301516728 0.004412859435 -0.003482765962 -0.001285080106 -0.0003577353965 0.0001879936465 8.196402368e-05 3.341085781e-05 -2.98783455e-05 1.628320969e-07 -8.227259472e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.04189136666 -0.01299874477 -0.005934161569 7.204682044e-06 -0.0005510498096 0.000283381021 -5.258045054e-05 -2.829146564e-05 2.422528525e-05 -2.244942449e-05 -1.000464907e-05 6.057947737e-08 -6.687882751e-06 -0.003586056753 0.1086536941 -0.06133495728 0.002642950686 1.119981941e-05 0.002027696195 -0.002386656123 0.0002763038784 -0.006227805716 0.0001300731928 -2.496765124e-05 -0.001575808835 1.948680906e-06 -0.0001115011595 0.0002821088404 6.549188199e-05 0.0001260419834 4.456178821e-05 2.249391544e-06 1.140642398e-05 -9.639548347e-05 1.403607573e-05 -1.297639493e-06 1.2342166e-05 1.251426388e-06 -4.245883507e-06 3.022515544e-05 5.23630528e-10 1.702169712e-05 -5.194872561e-05 -8.729306567e-08 1.384961569e-05 -9.33306439e-06 -5.252058785e-08 1.255783634e-05 -1.188236999e-05 -3.090313532e-07 9.961933043e-06 -1.677038481e-05 -0.0037181807 0.0005285031706 -0.03586715656 -0.01076457944 0.1153798397 -0.0004227082318 5.384195423e-05 -0.003141656773 0.02123838808 -0.001334879813 -0.0001496747026 1.672432861e-05 -0.0007091894707 -0.004056842855 0.0004260026861 -0.0006774767542 4.739136932e-05 -1.510867748e-06 -7.871856331e-06 -0.001448626525 -2.442905642e-07 -2.420537715e-08 1.284803734e-05 -2.8600471e-05 0.0004798088032 -1.886053869e-06 3.839120466e-07 -6.912791791e-07 -1.951161752e-05 6.410743456e-05 -2.633532665e-07 7.031779409e-09 -2.957820857e-06 -1.180386018e-07 -3.108036861e-05 -7.163807896e-07 1.231627746e-07 1.984143717e-05 6.375718159e-06 2.982768674e-05 -1.188558399e-06 2.459524827e-07 2.481978746e-06 2.045839968e-05 -1.365530369e-05 -2.970646504e-07 8.105496598e-08 1.112714419e-06 9.575182151e-06 -1.616226437e-05 -3.668964258e-07 4.38633127e-08 1.423322261e-06 6.199405901e-07 9.751243533e-06 -3.591418283e-07 6.159181899e-08 -2.083472946e-07 1.030773885e-05 -6.79507468e-06 -2.739072532e-07 5.530285628e-08 5.474207541e-07 -5.844208862e-06 7.969509228e-06 -0 0 0 0 0 0 0 0 0 0 0 0 0 0.01105834864 0.04515589843 0.07673357191 0.05440885197 0.0146163717 0.01104239387 0.01564484758 0.00635446246 0.002376547375 -0.001169407789 -0.0006508655224 -0.0001357180982 0.0009423366291 -0.002774940193 1.9578198e-05 -0.0002565735878 -0.0001409910326 -0.0007981446639 1.965976405e-05 5.242432545e-05 0.0001298812456 8.120597571e-08 -1.405679027e-05 -2.579337829e-06 -1.272999777e-05 0.0001460739982 5.622329457e-05 -2.830786514e-05 -1.691219578e-05 -4.648694095e-06 -1.537796514e-05 4.612673182e-05 -5.798202613e-07 -2.898030587e-06 -1.789824616e-05 1.690321676e-06 2.368664341e-06 3.464500951e-06 9.23862986e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.001749030664 -0.0001393514853 -0.0003882040359 -3.58107931e-05 -1.705127717e-06 5.92283316e-06 -1.978859732e-06 9.566444197e-07 1.614752477e-07 -9.914828273e-07 1.481641295e-07 -2.258033513e-07 -2.562670846e-07 0.04446505146 0.04538754803 -0.007554244468 0.002487444814 0.0005498885177 0.006181304306 -0.001247118436 -0.0009818692851 -0.0001994751444 -0.0001344603306 -3.825003273e-05 -0.0001453486902 -2.603822121e-06 -4.974250293e-06 3.848555853e-05 3.893083526e-05 5.390603468e-07 -1.26130337e-05 9.261047589e-07 8.584355941e-07 -3.017371355e-06 1.392103138e-05 1.905946972e-06 7.807967237e-06 7.271066514e-06 1.289311897e-05 -4.092486433e-06 2.226141462e-06 5.513175997e-06 -1.763679496e-06 7.432532611e-07 1.483454364e-06 5.727566202e-06 2.867858714e-06 4.620241289e-06 -1.072025397e-06 2.798283055e-06 4.676733428e-06 -2.041253674e-06 0.0006205495782 -0.003412418799 -0.001112025762 0.02507903161 0.04777645531 0.0002591249089 -0.0009730504073 -0.001325831791 0.01833298985 0.00639241813 9.012307386e-06 -2.653556481e-05 1.856287806e-05 -0.0007686483749 -0.0003647868734 9.106110376e-05 -0.0005555539407 -0.0002041572908 -0.0008786981296 -6.534791592e-05 2.649741971e-06 -7.355810168e-06 3.579376155e-05 9.1264347e-05 1.386470451e-05 -4.442109085e-08 -3.87499955e-09 -2.539259066e-06 -1.037030417e-05 1.360812799e-06 6.173486876e-06 -2.190909348e-05 9.07553159e-07 -1.388014149e-06 -2.948710984e-07 -2.331008969e-06 7.264588949e-07 3.634725238e-07 4.394631559e-05 -1.364590733e-06 1.466639921e-07 -4.144339968e-07 2.313970124e-06 5.737397048e-06 -1.234766966e-06 6.358638219e-08 -1.837161125e-07 4.138492248e-07 6.750893176e-07 2.516385996e-06 -2.182542281e-07 -1.16448715e-07 -2.586063164e-07 4.328807126e-06 4.657823966e-06 -2.897367559e-08 -1.489350486e-07 3.093267352e-06 2.105397926e-06 -2.523863525e-07 6.657635144e-08 -2.267884949e-07 1.365639178e-07 1.061340217e-06 2.994015188e-06 --0.09007021845 0.03112420197 0.009473593796 -5.0525653e-05 0.001448607717 -0.0005023282934 3.606971981e-05 9.568550465e-05 -3.127311473e-05 1.789877132e-05 3.599095675e-05 4.151482296e-06 9.246885625e-06 0.02130979674 -0.001660057024 0.1037379524 -1.737498848e-05 0.0002516552295 -0.002453126306 -5.299595576e-05 -0.0002826498964 0.0134769613 -1.352841453e-05 6.89234461e-05 0.002161401606 -2.31935981e-05 2.230925085e-07 0.0005585500009 2.890490316e-05 -1.216250676e-05 -0.0005428750422 4.494497504e-06 -2.393186917e-07 0.0001919212794 -2.047244795e-07 3.657406111e-06 7.25774127e-05 -4.610689927e-05 5.533514204e-06 -3.65022265e-08 1.698480901e-06 5.200218923e-07 9.737967674e-05 1.060216205e-06 4.770353174e-07 4.123362909e-05 3.060798055e-07 1.087479401e-06 1.376122455e-05 1.505273028e-06 -3.377119587e-09 3.248793177e-05 6.296367404e-05 -0.0008170105347 0.07965401951 0.03244884906 -0.003807122227 -4.63947715e-05 -2.450954642e-05 0.001760408151 -0.0004270555034 0.003331148909 -3.113296092e-06 -1.904882251e-05 5.604388446e-05 -0.0007466387778 0.003328970825 -4.375751547e-07 -1.296446417e-07 -1.207434017e-05 7.100136956e-06 0.00290179747 -7.195294851e-07 -4.789987497e-06 -3.320895635e-05 3.634562624e-06 -0.0007040688024 -7.521548512e-08 -8.940239776e-07 -4.110180733e-05 2.307587801e-05 -2.586770531e-06 -2.705241166e-08 -3.085063896e-08 1.294028444e-06 1.128535988e-06 8.997150143e-05 7.827745558e-09 -6.312200026e-08 3.252039608e-06 -1.920211357e-05 -1.34601172e-05 -1.2483647e-08 -1.839510855e-07 6.147193295e-06 9.955284715e-06 -7.980547273e-07 -9.410301401e-09 -1.382866332e-07 8.1345321e-08 1.425824262e-06 5.459968852e-05 -2.503311982e-08 -3.960174674e-08 4.496770524e-06 3.74624282e-06 -8.535735223e-07 -5.903933776e-09 -7.134860897e-08 9.01182454e-06 3.33967838e-06 -8.38226532e-07 -4.382028791e-09 -7.298017034e-08 -4.469848719e-07 1.943141513e-06 1.729617503e-05 -0.04279400497 -0.01303272721 -0.005634995839 5.440385241e-06 -0.0006310075916 0.0002697756954 -3.944004043e-05 -3.60872237e-05 2.296929033e-05 -1.770375466e-05 -1.283589361e-05 -1.46645594e-07 -5.940697702e-06 0.001824622607 0.09960006424 -0.05929628493 0.002177019786 0.0002172527769 0.002366351434 -0.002110794759 0.0002753016672 -0.00643882897 0.0001590101866 -1.894553472e-05 -0.001501531263 7.214450517e-06 -0.0001118747018 8.626401996e-05 -8.755166172e-06 0.0001851425891 8.826053939e-05 3.174074001e-06 1.229272827e-05 -9.376074239e-05 1.316239219e-05 -1.733922302e-06 -4.102802936e-06 1.104646116e-05 -2.752771728e-06 2.852111831e-05 4.574319264e-07 1.706631018e-05 -5.189382298e-05 2.80769318e-07 1.201061598e-05 -1.247329805e-05 1.138036433e-07 1.361738962e-05 -1.153174527e-05 -1.125645654e-07 9.68583004e-06 -1.710387075e-05 -0.003244275677 0.0002473817431 -0.03716029814 -0.005162787067 0.1089412058 -0.0003197699812 -1.543581698e-06 -0.003024080321 0.02021329275 -0.0006059239944 -0.0001421116149 1.364184365e-05 -0.003299944774 4.210117573e-05 -0.001047445551 -0.0002404550145 -0.000110328812 -8.130698143e-05 -2.078073822e-05 -0.001556682957 -3.317276113e-06 6.523834941e-07 1.099794184e-05 -7.448696688e-05 0.0004448298033 -1.836817686e-06 3.873201569e-07 -5.382900517e-06 8.799869409e-07 6.09511571e-05 -1.088222793e-08 4.080908455e-09 9.019266783e-07 -4.654983703e-07 -3.720317293e-05 -4.88366401e-07 6.66956894e-08 1.288891408e-05 9.276176142e-06 2.628411396e-05 -1.147463143e-06 2.12426996e-07 -1.008178637e-05 -8.760987637e-06 3.555724498e-05 -3.378428102e-07 8.631043329e-08 1.543281106e-06 1.017099586e-05 -1.981021403e-05 -3.097842479e-07 2.295506961e-08 9.420791097e-07 1.602186025e-06 8.034586683e-06 -3.342811752e-07 4.185208698e-08 -6.065088559e-06 1.424521599e-06 8.971234888e-06 -2.676393006e-07 4.973637028e-08 8.955002671e-07 4.329107164e-06 -3.380310914e-06 -0.0694625105 0.1172792326 0.04529887152 0.005843933421 -0.003041449177 -0.001349889255 -0.0004769236572 0.000147382238 8.644593828e-05 4.236697492e-05 -2.328800554e-05 -6.72661419e-08 -9.26203444e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.0003519237103 0.0004107514529 4.98487977e-05 -6.27370375e-06 -4.919729628e-08 -1.690188055e-07 -3.454348043e-07 1.356553707e-07 -1.487077529e-09 -8.844377284e-08 1.313951515e-08 -1.116783067e-08 -1.679660211e-08 -0.003285942227 0.001158845683 0.001658106329 -0.001597931334 0.01305515624 -0.01139272691 -7.329155421e-06 2.959540947e-05 4.907480875e-05 -2.239399038e-08 8.476630709e-08 1.738666885e-06 1.488951646e-09 -1.041573217e-09 1.798291446e-06 6.856993955e-05 -6.868413232e-05 5.808448018e-07 -5.194614627e-09 2.332390008e-08 -1.216322411e-06 -4.615738755e-08 3.411960497e-07 -2.044437787e-07 8.313071576e-08 -2.788314476e-08 -2.265639625e-08 -4.150615433e-07 1.551272546e-07 1.652393292e-07 -2.371980124e-08 4.318708043e-08 -1.834259441e-08 -5.22437377e-08 1.842443478e-08 -3.161205289e-09 -3.719592564e-07 1.564816428e-07 1.976385424e-07 -5.348561755e-07 2.970115619e-05 -1.81180671e-05 -0.0001949457398 -5.493147503e-05 6.373053948e-06 -1.056645492e-05 0.0009210996191 0.0004414542949 -0.001453760176 1.910312806e-08 5.448807557e-07 0.0001011171605 4.636286549e-05 -0.0001434069609 -3.238601142e-08 -4.855845878e-08 -2.078451148e-07 3.991606045e-08 -7.05021388e-07 -4.082882105e-10 1.570207679e-08 -4.722581648e-07 1.31552374e-07 -9.953042421e-07 6.501875781e-11 4.502780187e-09 2.921392453e-07 -8.625921535e-08 6.681001941e-07 3.515257642e-08 -5.91710811e-07 -1.883377209e-08 1.17982894e-08 5.861647909e-07 -3.331462366e-09 2.009499062e-08 -5.190339067e-07 1.524486174e-08 3.180448062e-07 -4.569144155e-11 1.714962249e-09 -7.020481503e-08 2.303897832e-08 -7.427398579e-08 1.046375575e-10 1.755577139e-09 -1.170658615e-07 1.80404232e-07 -4.260721368e-08 -1.198628264e-13 -3.045554218e-12 -6.723298351e-11 -3.429526649e-11 1.282915711e-10 1.861500214e-11 8.745797448e-10 1.026184828e-08 -4.616598007e-09 -2.923004755e-08 -7.104866133e-10 3.033513282e-09 -3.000808238e-08 3.55319917e-08 -1.095341083e-08 -3.658718834e-05 2.659207517e-05 -4.009341164e-07 -1.433404016e-07 -1.101498745e-07 5.77133833e-08 1.971592603e-09 -2.871186557e-08 5.576486525e-09 -1.025528921e-09 -5.247794233e-09 -6.400079538e-10 -1.199736818e-09 0.0003142732047 -0.001379075409 0.00103019339 0.001256745959 -0.0005629852153 -0.0006733156808 7.777113563e-08 -3.464876341e-07 4.884049713e-06 1.744086541e-06 -7.021115944e-07 -1.521856357e-06 1.704969085e-09 6.246194793e-08 -1.346460071e-07 -9.423589505e-08 4.274620792e-07 -3.458331884e-07 -1.15769316e-09 3.946056508e-09 -2.32711964e-09 3.812454376e-08 -2.478550573e-08 -4.094681302e-08 2.445273193e-08 2.620787779e-09 -2.474699967e-08 4.123033355e-08 -1.637870263e-07 1.164089545e-07 1.175433076e-07 -5.218718732e-07 3.973724824e-07 1.138172018e-07 -1.216758115e-06 1.101425928e-06 2.273695231e-08 -9.019973259e-08 6.386385656e-08 1.790115725e-05 -4.216499645e-06 -0.0006702254158 -0.0003724004867 0.0009987212233 -1.327792831e-06 -6.486089857e-06 0.001802712887 -0.0024475428 0.0006511717728 -5.557135737e-08 -7.480165096e-07 3.857283238e-06 -5.375846466e-06 4.98928863e-06 4.178062759e-10 -6.851647059e-09 -1.333562913e-07 5.280580599e-08 -1.035071918e-07 -6.375866033e-09 -1.331348636e-08 1.478479618e-08 -1.099500445e-08 1.77634022e-07 -4.563362239e-08 2.938191321e-07 2.303454814e-06 2.551399582e-06 -5.12915036e-06 1.39102806e-10 7.077951748e-10 -4.927665883e-08 1.541375263e-08 -3.039559649e-08 2.381906629e-11 -6.742088741e-10 1.722448521e-06 -1.601292888e-06 -1.070683147e-07 -5.165495241e-10 -3.475307939e-09 2.918115891e-08 2.774951922e-08 -5.242495466e-08 1.26970801e-10 1.899427823e-09 6.29560316e-08 -2.47318005e-07 1.73568137e-07 -2.738026681e-09 6.096599945e-09 -2.165039877e-07 -1.279329141e-07 3.399346302e-07 2.663411761e-10 8.62080838e-10 -6.885055371e-08 -4.766854707e-09 7.135327638e-08 1.142364139e-10 8.336149631e-10 5.532496572e-08 -4.110975093e-07 3.52521852e-07 -0.1101195868 0.09180458716 0.001404899039 -0.0009968631219 -0.0002799887392 0.0001475056787 1.370792936e-05 -8.113323961e-05 1.77044995e-05 -6.567021728e-06 -1.3612652e-05 -1.295958798e-07 -4.728854137e-06 0.002411393923 -0.002650789117 -0.1150712909 0.00224758409 -0.003101767257 0.05508918751 1.070573452e-06 2.461477704e-06 0.01702717649 5.492945013e-07 -1.800225216e-06 -0.001241405573 -1.762254903e-06 6.636374386e-07 6.327011848e-05 -1.345191531e-05 -3.817075085e-06 -0.0001034102374 4.70636819e-08 -1.130299211e-07 -9.44333408e-05 1.204063727e-07 -7.612384022e-07 -9.548043346e-06 -1.067770732e-07 1.063616005e-08 -2.262045889e-09 1.482155955e-07 -2.413487428e-07 -3.034371517e-05 4.904044383e-07 -1.329685191e-06 -1.005369767e-05 3.637073972e-07 -1.272893104e-06 -4.051004987e-06 1.232972345e-07 -1.153960799e-07 -1.126928686e-05 -1.945823257e-05 -1.125944886e-05 -0.08558706318 -0.002467319398 0.0002289663967 -3.183338324e-07 1.762248368e-06 -0.01199574862 -0.002531562512 0.002862766314 8.917400774e-08 2.078444928e-07 0.0001087526522 -0.000438870719 0.007501094458 1.395260688e-10 -1.700833126e-07 -8.396358254e-08 2.066311509e-07 -0.0005204127537 8.509022547e-10 1.188911817e-08 4.036460619e-07 -9.800217306e-08 0.0005241038975 2.596652829e-09 7.499168301e-10 5.65547082e-05 2.088931808e-05 -7.595560216e-06 -1.899315695e-12 -2.505146823e-10 -1.116274453e-08 -4.876095595e-08 -0.0002735909166 2.431323704e-10 6.039904053e-10 8.026245869e-07 8.744591858e-07 4.63485178e-05 3.327348277e-10 6.810563982e-09 8.766016607e-06 2.199249929e-06 -1.988301904e-07 -1.838778474e-10 -5.479252609e-09 6.091267368e-09 -4.747118061e-07 -2.962393328e-05 1.874514771e-10 -3.248521297e-10 7.425926394e-07 -3.371958815e-08 6.599274314e-08 -9.244989987e-11 -7.452379433e-10 -4.493553726e-06 6.361889271e-09 5.219456318e-08 -1.389694786e-10 -2.050844584e-09 -2.5236516e-07 -2.341800775e-06 -3.12970938e-06 --0.1088999622 -0.0971883007 -0.003196427709 0.001268443103 0.0002413391636 -0.000116424734 -1.177070081e-05 6.724454884e-05 -1.405430865e-05 9.23948476e-06 1.077970648e-05 -4.920921257e-08 5.263416591e-06 -0.00298457068 0.002255314302 0.1205781115 -0.001891690997 0.003838869723 -0.05083063928 -1.652181631e-06 -1.477036456e-06 -0.01832835658 -1.904011691e-07 1.089943581e-06 0.001030476234 8.700882526e-07 -6.906076394e-07 -0.0002043410422 8.37852963e-05 3.433745477e-05 1.251985516e-05 -4.309241074e-08 7.695017693e-08 0.0001614082313 -1.431448535e-07 7.896580461e-07 -2.585415792e-05 8.269473123e-08 -2.927197991e-07 4.788396189e-08 -1.324373102e-07 1.623973785e-07 3.674133868e-05 -6.298380038e-07 1.485949005e-06 4.923868734e-06 -2.479148131e-07 4.21559594e-07 5.463526376e-06 -1.184265006e-07 7.640651179e-08 1.094266232e-05 1.512135511e-05 3.044020096e-05 0.08281281295 0.001860872279 0.0002226443393 7.536399081e-08 -6.1258692e-06 0.01647532153 0.001516721268 -0.002756321762 -1.144073095e-07 -5.982287325e-07 -0.005976870979 0.0003584333077 -0.0007779667487 2.531106166e-09 -1.028206623e-07 1.664388498e-08 -6.367851564e-08 0.0004805547441 1.887165496e-11 -2.099660887e-10 -2.853002418e-07 1.324346709e-08 -0.000460695375 -1.915019054e-09 -7.071546184e-09 -4.375015459e-05 -0.0001293363016 1.093913419e-05 2.745731462e-10 -1.174675074e-09 -6.516921036e-09 4.442434489e-08 0.0002828012656 -1.54120347e-10 -8.088110237e-10 -2.880380937e-07 -3.038034229e-07 -3.230821253e-05 -2.365633532e-10 -7.004617421e-09 -8.38006725e-07 -4.986621979e-06 -8.380594163e-06 2.470538029e-10 8.462925821e-09 1.31898343e-07 3.130019347e-07 2.675898106e-05 -1.564826825e-10 1.654444016e-09 -1.249386076e-06 -2.578771923e-09 -1.227964449e-08 7.752480774e-11 1.173746361e-09 2.181497568e-08 6.480701518e-09 5.040711531e-06 1.605609936e-10 3.093331101e-09 8.638164995e-07 3.994720962e-06 -1.107400947e-07 -0 0 0 0 0 0 0 0 0 0 0 0 0 0.01799345834 -0.02314170501 0.005148246673 0.004113663011 -0.03711442399 0.03300076098 0.002455859289 -0.01609809545 0.01364223616 0.0009290815387 -0.005169934235 0.004240852696 -0.000556608114 0.0001661732685 0.0003904348455 0.003027101359 -0.003300663439 0.0002735620798 0.0008256760815 -0.0009561237265 0.000130447645 0.0001296865374 -9.798293098e-05 -3.170360641e-05 -3.035230701e-06 -0.0002366169605 0.0002396521912 1.251020389e-05 -6.895859167e-05 5.644838778e-05 -1.724103712e-05 3.947265868e-06 1.329377126e-05 6.280694769e-06 -1.872383992e-06 -4.408310777e-06 1.763615602e-05 -2.018104933e-05 2.544893312e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.0001067311622 0.0005716069962 0.0002996472108 5.393429113e-05 3.058839376e-08 3.584270921e-06 3.455115278e-06 1.402692575e-07 3.229039252e-09 2.638143665e-07 9.200157373e-09 1.819535066e-08 2.565067025e-08 0.002939739135 -0.002147186714 -0.001183951081 -0.0004483812069 0.002394049369 -0.002217233899 -0.000109600286 9.831198424e-05 0.0001062190373 -2.316274033e-06 6.849268553e-06 0.000142594331 1.889160641e-08 -1.562393483e-08 2.211553764e-05 0.0001412201805 -0.0001424597479 1.144251025e-06 1.025325895e-08 -6.958658185e-08 3.753462556e-06 -5.815876649e-07 3.910396252e-06 -2.381523105e-06 2.14568259e-06 -8.702197839e-07 -5.71887327e-07 7.178985953e-07 -3.074341204e-07 -2.831071408e-07 -6.711294193e-09 -4.516796476e-09 -4.729386885e-08 2.976488271e-07 -1.608931969e-07 1.687238555e-08 8.21115764e-07 -3.897540038e-07 -4.249312624e-07 -6.207427381e-05 -2.178611638e-06 2.888877686e-05 0.0004193316174 -0.0004393489448 -1.676869586e-05 1.646623842e-05 -0.0008266413931 -0.0007282308428 0.001305325253 -3.958330076e-07 3.365582525e-07 3.088106897e-05 -0.0001469676094 -1.790476944e-05 -3.294978481e-06 5.176777711e-06 8.335435491e-06 -1.256830663e-05 4.102029615e-05 -1.038915801e-07 -3.213492007e-07 1.191279236e-05 -4.717500421e-06 2.498663765e-05 5.833440782e-10 5.940313487e-08 3.733298788e-06 -1.553133698e-06 8.831156462e-06 -2.564907817e-07 1.539487976e-07 -1.837894437e-08 -2.083989244e-09 2.913707701e-08 3.344379603e-08 -8.276290044e-08 1.221906762e-06 -4.060739477e-09 -1.016196081e-06 -6.107392495e-09 -1.436130669e-08 7.799240487e-07 -2.832329845e-07 8.226242473e-07 -2.580862029e-09 3.93499934e-09 -1.390459612e-07 2.114642459e-07 -5.960708606e-08 -2.913291053e-09 -2.949315257e-09 -8.064827113e-08 -1.259704539e-07 1.930789771e-07 -3.194267914e-09 -2.763569437e-09 -3.874425787e-08 -7.279375885e-09 1.580956565e-07 -2.882086734e-09 -1.358109734e-09 4.123526813e-08 -4.969213752e-08 -9.442707074e-10 --4.323224143e-06 -1.77554922e-05 -4.420392729e-06 -3.45789842e-08 -3.964932023e-07 -9.174958829e-08 -2.371081077e-09 -2.629672089e-08 -1.81873064e-09 -5.9280341e-10 -3.496639478e-09 -6.778623844e-11 -3.832072686e-10 0.01086770412 -0.01097310918 0.0001189129236 -0.005520991608 0.005385441436 0.0001346613608 0.0003738068627 -0.0003730037722 -7.666419682e-06 -5.719280571e-05 6.190370829e-05 -6.761781985e-06 -4.012716537e-08 7.885152878e-08 -7.050505294e-08 1.091650957e-05 -6.851153923e-06 -4.194342074e-06 1.193651292e-05 -1.262919081e-05 5.822826265e-07 -4.376715662e-07 4.440463923e-07 -1.519211247e-08 -1.951845217e-08 -1.48766366e-07 1.689464712e-07 1.729321516e-06 -1.983568289e-06 2.425110797e-07 1.439563521e-06 -1.648574255e-06 2.060692295e-07 7.630247962e-07 -6.038477716e-07 -1.582369765e-07 7.846138574e-07 -8.381072608e-07 5.150783011e-08 -0.0001681847424 8.230956785e-05 -0.0002713020184 0.01255511636 -0.01219260626 0.0001360333617 -0.0001203520424 -0.000229384243 -0.007417811061 0.007639673203 1.173261315e-05 -2.039259534e-05 -0.0009749668492 0.000987230323 -4.029897459e-06 1.562514557e-06 -1.987798866e-06 -7.57483437e-06 6.750986436e-06 -1.485732059e-06 2.589342358e-06 -2.494780942e-06 4.740289459e-06 -4.805501304e-06 -2.326416319e-07 1.150193313e-07 -4.274826219e-07 2.338095522e-07 4.585895846e-05 -4.575480516e-05 8.925215854e-08 -1.003664899e-07 2.879721828e-06 -2.944545621e-06 -7.106788855e-08 -2.991813734e-08 2.655267039e-08 -1.620029576e-06 1.602604962e-06 1.625480608e-08 4.808027709e-08 -7.953786999e-08 -2.016472318e-08 2.349447333e-06 -2.294023925e-06 3.639793068e-08 -5.391611208e-08 1.247261594e-06 -1.543893909e-06 2.991097888e-07 7.485523652e-08 -8.627279653e-08 -8.360758411e-08 1.745334984e-06 -1.649635449e-06 2.376476498e-08 -3.423593286e-08 -5.997368817e-08 2.397140654e-06 -2.326365603e-06 1.752178088e-08 -2.617946227e-08 6.007082872e-07 -8.773441969e-07 2.832377802e-07 --0.01352519994 -0.05974268203 -0.0186248165 -0.0006563369189 -0.0009625938385 -0.0004385995762 -5.70052893e-05 -5.382473648e-05 -1.324202372e-05 -8.921781318e-06 -7.289860237e-06 -1.29165639e-09 -2.335610896e-06 0.07964152311 -0.01885925806 -0.01660171479 -0.00574680729 0.01753896191 -0.006433287207 0.0001323736417 0.001892867491 -0.02350870664 -1.443489128e-05 0.0001648623185 -0.009595341586 1.597790393e-05 -1.192825352e-06 -8.4784262e-06 0.0001269066384 -9.59392747e-06 -0.0003694992749 2.064744865e-05 -8.357315908e-06 -0.0005429958753 -2.088247228e-07 4.215251673e-06 -7.727674004e-07 -2.493457888e-07 1.173966667e-05 -1.171677194e-06 4.453056072e-06 -1.970602132e-06 -5.971039334e-05 3.696408652e-06 -1.658856444e-06 -2.016300646e-06 3.623890605e-06 -1.415610787e-06 -1.425715288e-07 3.337681021e-06 -8.097144683e-07 -1.129174028e-05 0.0009694510183 0.0002090828572 -0.04187710285 0.06623306327 -0.01113037713 0.0001753303412 1.975043901e-05 0.001023959997 -0.005677020786 0.03280187875 1.014757303e-05 2.858238319e-06 -0.001121499074 0.00544185579 -0.001519178992 9.953943647e-05 -6.37949522e-05 -5.753390549e-06 7.376220367e-05 -0.009167831424 -2.096741185e-09 1.537416432e-06 1.056785471e-05 -6.562793058e-07 -0.001474782205 -6.926784448e-08 -1.68962159e-07 -3.684626392e-05 0.0001787283839 -3.316986788e-05 3.419968586e-09 2.920283036e-09 1.198259697e-09 1.07021718e-07 -0.0004014984998 -3.919720643e-09 1.780215337e-07 -2.829443206e-06 -4.636552644e-06 -5.078924751e-05 1.360029455e-07 2.251346748e-07 -2.529208029e-05 2.228144187e-05 -1.600307421e-06 5.058172697e-08 7.688309506e-08 5.91715891e-08 -1.406357979e-06 -3.635867133e-05 8.068265875e-08 4.722862395e-09 -4.315656143e-08 4.64638533e-06 -1.348888313e-06 8.064872769e-08 4.147015989e-08 -7.320309189e-06 5.307412913e-06 -1.220219097e-06 4.382250185e-08 5.081609573e-08 -1.735347468e-06 -2.076313977e-06 -1.456925542e-06 -0.01309911957 0.06006647671 0.0208755899 0.001163355334 0.0007419435138 0.000489124377 0.0001024010188 3.343498113e-05 1.488717269e-05 1.449928055e-05 4.475957186e-06 2.227794994e-10 2.991700454e-06 -0.07557642442 0.01356035245 0.01824552492 0.003900278694 -0.0161138865 0.002439383027 1.966598765e-05 -0.002553906128 0.02279445148 4.171185693e-06 -9.677006834e-05 0.01094239018 -6.783675815e-06 1.201878312e-06 0.0001192257606 -6.737873586e-05 0.0001508512072 5.013445927e-05 -1.536656783e-05 5.361588211e-06 0.0005978317065 1.283163799e-07 -2.897132602e-06 2.673030212e-06 -1.460921585e-07 -1.36478969e-05 1.005398427e-06 -3.017079093e-06 9.967940218e-07 6.248326716e-05 -2.807318189e-06 3.48060435e-07 -5.821768305e-07 -3.708402406e-06 1.063509506e-06 2.244983844e-06 -2.635965272e-06 4.187892368e-07 1.100613933e-05 -0.0007467129285 -0.0005418473638 0.04180992313 -0.05982114426 0.006583810282 -0.0001158654384 -9.556308628e-05 -0.0009542375802 0.002977049085 -0.03041769331 -5.654032211e-06 -6.689210586e-06 0.005934549094 9.032653994e-05 -0.01111019478 -0.0001626751033 -6.414589176e-05 1.128652096e-05 -2.021835905e-05 0.008941963301 -8.949451677e-08 2.084811184e-08 -1.701180148e-06 -1.928771903e-08 0.001933936335 6.761486965e-08 -1.722568778e-08 0.000108545912 -0.0001556699885 1.545141236e-05 -9.263923829e-09 -1.867672853e-08 -3.541938491e-08 2.849105989e-07 0.0003159593756 -5.083249431e-08 -2.074885836e-07 2.251418178e-06 3.947773829e-06 7.243743543e-05 -9.586459335e-08 -2.927692743e-07 1.094552809e-05 6.478044079e-06 8.166366305e-06 -3.086839749e-08 -8.45854603e-08 8.10547263e-07 5.958682345e-07 2.470354085e-05 -6.380616906e-08 -3.003964015e-08 3.435097659e-07 -4.794900918e-06 1.185395373e-06 -5.724190981e-08 -7.269719927e-08 -4.649551328e-06 9.1820277e-07 1.015825372e-05 -3.1593409e-08 -6.565910384e-08 3.818946577e-06 -1.481234318e-07 4.569634255e-08 -0 0 0 0 0 0 0 0 0 0 0 0 0 -0.00162377554 -0.06231295818 0.06393673373 0.03490535829 -0.03057409461 -0.004331263676 0.02742993869 -0.02605538145 -0.001374557241 0.01407197436 -0.01374992348 -0.0003220508829 0.01807441456 -0.01808002831 5.613747782e-06 -0.0005455728726 -0.00116311768 0.001708690552 -8.203563427e-05 -0.001419968441 0.001502004076 7.9245632e-07 -0.001458716866 0.00145792441 -1.800967524e-06 0.0003989897321 -0.0003971887646 0.0001495623572 -0.0001440748064 -5.487550815e-06 0.0002670745877 -0.0002674110123 3.36424614e-07 -9.522323699e-06 1.033593098e-05 -8.136072782e-07 -2.551444622e-06 -1.780288766e-05 2.035433228e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2.088996375e-06 1.11877817e-05 5.864847006e-06 1.055629268e-06 5.986915383e-10 7.015316621e-08 6.762526655e-08 2.745420967e-09 6.320039204e-11 5.163508426e-09 1.800701408e-10 3.561286207e-10 5.020479124e-10 -0.06480393144 0.06485633946 -6.006866945e-05 0.006622421329 -0.004094429367 -0.002533307184 0.004634081455 -0.004634464194 2.240771473e-06 2.405899665e-05 -2.401485831e-05 2.83551221e-06 -1.400024146e-07 1.398588877e-07 4.330639896e-07 -8.759926811e-05 8.554312223e-05 2.054280303e-06 2.850977795e-07 -2.860251715e-07 7.323076069e-08 2.201159864e-06 -2.075118246e-06 -1.075008666e-07 -8.204088103e-06 8.236688388e-06 -1.882954941e-08 -2.047625968e-06 2.063886701e-06 -1.376803129e-08 -3.244726177e-09 -2.115252783e-06 2.117352087e-06 -3.097537469e-06 3.100086333e-06 4.580215756e-10 -2.529279125e-06 2.587464723e-06 -5.80597372e-08 0.002894446125 -0.002769958927 4.658844049e-07 -0.02635873072 0.02623269368 0.0003730808155 -0.0003712116662 -9.739636075e-05 0.01657477215 -0.01648413512 1.661527158e-05 -8.888765757e-06 -4.818319457e-06 0.008030384045 -0.008035915937 0.0001162726992 -0.0001224896836 -0.000509680475 0.0005157590346 8.95278414e-07 4.623836706e-06 -3.916964916e-06 -7.131061799e-05 7.068821736e-05 5.370868358e-07 -4.98676799e-08 -1.753461389e-09 -2.067217065e-05 2.074434301e-05 1.961420363e-07 8.952438246e-06 -9.95496333e-06 8.736755617e-07 1.313808883e-07 -4.368594956e-09 -1.43467353e-06 1.493326109e-06 8.478031542e-09 -1.631071763e-06 1.566922649e-06 2.755623162e-07 -2.553814111e-07 -1.409976935e-06 1.396124212e-06 1.909350235e-08 1.081827993e-07 -1.001019631e-07 -9.957240421e-09 -4.470589946e-07 4.4921265e-07 1.375758547e-07 -1.258101268e-07 -3.115009263e-09 4.166129449e-06 -4.175159921e-06 1.481486199e-07 -1.407979806e-07 -1.584487231e-06 1.576478448e-06 2.735064169e-09 1.710803789e-07 -1.616627619e-07 -2.54833005e-09 -8.077543575e-07 8.006180754e-07 --1.326267181e-05 -5.446982579e-05 -1.356076301e-05 -1.060804862e-07 -1.216351279e-06 -2.814669419e-07 -7.273939339e-09 -8.067237954e-08 -5.57945339e-09 -1.818586503e-09 -1.072689741e-08 -2.079528158e-10 -1.175593046e-09 -0.003398406741 0.003006693155 0.0004331526636 0.000724235533 -0.00126703972 0.0005400775172 -0.0001209966777 0.0001234419885 -2.350044907e-05 4.481689033e-05 -3.063781198e-05 -2.04707115e-05 1.603992118e-08 9.721599775e-08 -2.107518713e-07 -7.157603564e-06 1.860415002e-05 -1.184224758e-05 -2.892991809e-06 7.392100271e-07 1.815114114e-06 1.936916262e-07 -1.752654656e-07 -4.547559658e-08 -7.867884919e-08 3.937891964e-08 4.132973116e-08 -2.422070199e-07 -6.22376102e-07 8.285806744e-07 -2.21694149e-07 -5.569504973e-07 7.696207758e-07 -1.211309004e-07 -1.162261979e-06 1.286276734e-06 -1.868868847e-07 4.168483161e-09 1.766271127e-07 7.750736634e-05 -3.186917778e-05 -0.0007125801256 -0.004537386336 0.005220688451 -4.440984907e-05 3.845466094e-05 0.0002932984686 0.002148869316 -0.002411181964 -3.604695609e-06 8.770507937e-06 0.0003129087435 -0.0003065443129 -1.283835946e-05 -4.855622831e-07 3.135952008e-07 -4.026730273e-06 3.774752718e-07 -4.56872174e-06 -8.088648288e-07 8.723555908e-07 -1.610679422e-06 1.635818637e-06 -7.122839426e-07 -8.565058635e-08 4.554472658e-07 2.401385559e-06 -1.220273179e-05 9.509776424e-06 -2.789809692e-08 3.833718307e-08 -1.325881428e-06 1.082247128e-06 -2.177859133e-07 9.824607122e-09 -7.787222237e-09 -1.686506488e-06 1.53808725e-06 1.324686571e-07 -1.462356155e-08 3.018025046e-08 -2.912615081e-08 -7.997581905e-07 8.249885418e-07 -1.08812304e-08 2.960082775e-08 -8.021064548e-09 -1.058054327e-06 1.001214314e-06 -2.654636762e-08 3.315326274e-08 -1.511497281e-07 -6.742535613e-07 8.208652736e-07 -6.85536719e-09 1.362092433e-08 -1.769290805e-07 -7.948739921e-07 9.660504763e-07 -5.104867942e-09 1.214915723e-08 4.409754002e-08 -1.493750977e-06 1.436302386e-06 -0.01824220201 0.0805783337 0.02512034325 0.0008852387185 0.001298304745 0.0005915640512 7.688625734e-05 7.259646588e-05 1.786026622e-05 1.203331099e-05 9.832246744e-06 1.742130016e-09 3.150170495e-06 -0.001649987236 -0.08643078348 0.02849196416 -0.02503822496 -0.001175271686 0.01898568913 -0.003103056846 0.000408474929 0.03167054674 -0.0001163204481 2.331398313e-05 0.0128318963 1.770818377e-06 -2.62432328e-05 1.596627572e-05 5.981074793e-05 4.485530716e-05 0.000235472225 -4.021912521e-06 -1.91616038e-05 0.0007389763628 -5.649109324e-06 6.614846167e-07 6.262052095e-07 2.741452961e-06 1.141106054e-06 -1.779989728e-05 -1.595232912e-07 -1.095624187e-05 8.830232328e-05 -1.727041283e-07 -7.323316242e-06 7.467357186e-06 -9.617911258e-08 -8.347648226e-06 5.657689752e-06 5.577487576e-08 -5.892517385e-06 1.765693973e-05 -0.001936718718 0.0001585004831 0.04781906475 0.003424537113 -0.068893031 -0.0001909434488 1.188856279e-05 0.003097079753 -0.04255196697 0.001404923019 -8.483964184e-05 2.730610839e-06 -0.0114649167 6.75779401e-05 0.007683799312 -0.0001435779227 -6.68125391e-05 -2.420485852e-05 -5.016958588e-06 0.01246484702 -1.980227074e-06 3.735005527e-07 2.125983226e-06 -7.526938215e-06 0.001980690766 -1.096488025e-06 -2.434405987e-07 1.096696896e-05 -2.168159232e-06 -0.000153763929 -6.497518753e-09 2.759979108e-09 -9.280175871e-08 1.496526367e-07 0.0005413161043 -2.915279494e-07 3.669343461e-08 -6.519984522e-06 1.679023663e-06 8.343311547e-05 -6.850453021e-07 1.335530872e-07 1.69096687e-05 6.315179334e-06 -1.694139915e-05 -2.01693867e-07 5.920072221e-08 -8.935341757e-09 -4.547323689e-06 5.538285574e-05 -1.849636634e-07 3.147424099e-09 1.464646894e-07 -7.115780087e-07 -3.757574703e-06 -1.99582072e-07 2.838634075e-08 9.091074011e-06 -6.967942491e-07 -4.027107143e-06 -1.597838453e-07 3.362688441e-08 3.230030163e-07 -3.087614101e-06 9.869164827e-06 --0.01748639118 -0.08018446608 -0.02786742493 -0.00155299647 -0.0009904417201 -0.0006529461884 -0.000136698063 -4.463331724e-05 -1.987331469e-05 -1.935550632e-05 -5.975083887e-06 -2.973947564e-10 -3.993706917e-06 -0.003249834809 0.09328021568 -0.03159981964 0.02857336326 5.105882809e-05 -0.01557652851 0.003818174704 -0.0004468098498 -0.03041730325 7.387912771e-05 -2.637773687e-05 -0.01453119962 -2.046824949e-07 2.618178552e-05 -0.0001776836955 -0.0002176822485 -8.882516991e-05 0.0001281516868 2.431776419e-06 1.407266177e-05 -0.0008012112301 6.205503968e-06 -2.823931672e-07 -5.795243303e-06 -1.751719601e-08 -1.794984978e-06 1.888435935e-05 1.382939578e-10 9.654792341e-06 -9.036870314e-05 -1.09892328e-07 7.400771453e-06 -3.230780687e-06 -3.501126728e-08 8.152739519e-06 -7.583878161e-06 -1.352811427e-07 5.698355758e-06 -1.729571431e-05 0.002213470272 -0.0003301984424 -0.04897274462 -0.007003080899 0.07106746903 0.000251597986 -4.008116331e-05 -0.00451847988 0.04556528613 -0.003070937265 8.909966863e-05 -5.08422607e-06 -0.00333689347 0.01234697911 -0.002289085054 0.0004032435307 -2.688576081e-05 5.778461895e-05 1.58769992e-06 -0.01205790066 1.453951493e-07 1.276192571e-08 -1.92524906e-06 6.140807131e-07 -0.002578125844 1.12281779e-06 -3.462616822e-08 -2.065085136e-05 -7.141692118e-05 0.0001331930647 1.567829185e-07 -3.132345755e-09 4.814715021e-07 -1.490821713e-08 -0.0004226992193 4.264499108e-07 -6.822043276e-08 9.362134547e-06 -9.118732075e-07 -0.0001134379446 7.075240937e-07 -1.534934636e-07 -1.660550148e-06 1.779504023e-05 -5.033046652e-05 1.768397299e-07 -5.487682036e-08 -1.109312692e-07 3.254383363e-06 -3.796622346e-05 2.183882167e-07 -1.496735909e-08 -5.032031642e-07 2.877748792e-07 4.497156526e-06 2.137794861e-07 -3.989079495e-08 -1.011683349e-07 4.798608316e-06 -1.327732964e-05 1.630513155e-07 -3.680404806e-08 -1.013009801e-06 -5.22677944e-06 1.282078471e-06 -0 0 0 0 0 0 0 0 0 0 0 0 0 0.0009269225763 0.3400683679 0.01206588618 0.004151052309 0.2938714979 0.003717202171 0.004151801438 0.1816638353 0.001011755621 0.002589756357 0.07656776695 0.0002285133188 0.0321594005 0.01016431946 3.602492477e-06 0.0005805604634 0.01611697302 0.000179335446 6.799698104e-05 0.009896917038 0.000228103607 4.392985063e-06 0.003155721279 0.0006729341173 4.62087064e-09 8.234101554e-05 0.002613278576 2.876784793e-05 0.0007790243383 3.981882657e-06 0.0005154750349 0.0001386812862 2.703291706e-07 0.000118926005 9.264748517e-07 1.676657899e-07 2.300329315e-06 0.0001349776532 3.065133367e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -3.011952136e-07 1.613074268e-06 8.456040746e-07 1.522025058e-07 8.632041103e-11 1.01148083e-08 9.750331232e-09 3.95839679e-10 9.112344954e-12 7.444838305e-10 2.596283323e-11 5.134725806e-11 7.238616113e-11 0.239967483 0.01755041653 1.182538076e-05 0.000460324206 0.09914517325 0.001203806869 0.001073568173 0.02001422467 2.06202336e-07 2.848495824e-06 0.0002039375872 3.884781825e-07 7.678978157e-07 2.557777799e-08 6.239456447e-08 0.0001159588833 0.0002550338549 1.528305999e-08 7.194600764e-08 1.127310125e-06 1.075258861e-08 1.283956013e-07 3.833467395e-05 1.528247546e-08 4.060887848e-05 1.678889944e-06 1.123743932e-09 1.204004948e-05 3.569976304e-07 1.400710365e-09 4.034598877e-10 2.064158518e-05 2.175362158e-07 1.487172425e-05 6.474816912e-07 4.071923095e-12 1.069577868e-05 6.375624195e-07 1.355169823e-08 0.00222388174 0.003196659544 6.184262397e-09 0.144404355 0.004792295471 0.001323289128 0.0001074809844 2.262545003e-05 0.002393539321 0.1151298908 2.708993449e-05 1.184900532e-06 1.894916729e-06 0.001385983655 0.04660442206 0.001029186584 1.670988806e-05 0.004868389405 5.321247701e-05 8.556361898e-08 8.379082167e-06 1.294357862e-06 0.0004761908043 1.062582169e-05 5.314712314e-08 4.438373297e-07 6.256908076e-08 0.0001894391326 2.271853572e-06 1.895600299e-08 2.941593082e-05 4.097193431e-06 1.223561084e-07 3.451639231e-08 2.129917569e-09 8.789969565e-07 2.203993643e-06 1.059258485e-08 3.181469747e-08 8.386543231e-05 4.324016253e-07 1.264746199e-07 9.066555448e-06 2.200941874e-07 1.440828646e-09 2.083298697e-07 3.978897035e-08 2.048874724e-09 4.200527758e-06 4.924357073e-08 2.717992837e-08 6.221863507e-07 6.488460923e-10 1.155331052e-06 1.511069181e-05 6.871390618e-08 2.790136237e-07 5.044062846e-06 4.968475952e-07 5.747013784e-10 1.803035002e-07 1.270406161e-07 1.124306073e-09 5.928893674e-06 1.09364448e-07 -3.747713844e-09 1.539186998e-08 3.831947287e-09 2.997580822e-11 3.437117794e-10 7.953582577e-11 2.055441282e-12 2.279608497e-11 1.576620081e-12 5.138890497e-13 3.031164646e-12 5.876249203e-14 3.321944776e-13 0.0005957171189 0.2177345324 3.59029905e-06 0.05147839193 0.0005938175569 4.942720911e-06 0.004483374268 3.4430939e-05 7.02783673e-09 0.0006647005883 7.032235289e-06 1.837897032e-08 3.628121981e-11 5.127955483e-05 1.14118148e-10 1.037788292e-06 0.000153844745 9.326282233e-08 1.910222987e-06 7.852337593e-05 2.58494599e-09 1.441064639e-05 1.576291115e-08 1.911311826e-11 2.292421465e-10 6.479888413e-10 3.65790601e-05 1.039740047e-07 2.857578966e-05 4.41467839e-09 1.271877492e-07 1.637091658e-05 1.23298079e-08 3.617576749e-08 1.70131791e-05 2.503374063e-07 4.413013177e-08 1.468060271e-05 8.790293138e-10 0.004564416005 1.949798441e-06 4.545169031e-06 0.0009539604888 0.1863381336 0.000331929295 3.455882867e-05 6.937080943e-05 0.09752020396 0.0006676804882 0.0002199396061 5.020051236e-06 0.02137669085 4.96897775e-05 6.76351009e-09 1.193666915e-05 4.182258542e-07 5.063274567e-05 7.443534382e-07 7.015292049e-10 2.439417662e-05 2.296914532e-07 3.750834378e-07 7.286720389e-05 2.211050761e-10 3.275149297e-06 2.501407384e-07 5.675950109e-08 5.695574406e-06 0.0003963590513 3.279591324e-07 3.522862483e-08 1.219251428e-05 8.059340499e-07 2.950251307e-11 3.640105499e-07 2.174952327e-09 6.105771258e-06 2.445401429e-07 3.832621165e-10 1.476424196e-06 6.208857158e-09 5.203064149e-10 1.327686436e-07 4.625995423e-05 6.35699415e-07 7.627037344e-09 9.365555429e-08 1.502293123e-05 5.604428577e-09 3.905433851e-07 2.547527941e-08 8.726613001e-09 3.277456988e-07 1.068213393e-05 4.641462597e-07 3.297071296e-09 3.043771808e-09 4.372053726e-07 1.452737618e-05 3.940219687e-07 2.548144076e-09 3.16406224e-08 1.015603736e-05 6.322849521e-08 -0.03268283274 0.1443646004 0.04500574965 0.001585998716 0.002326050155 0.001059849514 0.0001377498554 0.0001300642406 3.199855442e-05 2.155894832e-05 1.761550911e-05 3.121210032e-09 5.643863352e-06 0.03241602958 0.04204590144 0.04704697813 0.01340056359 0.005425290957 0.03094462135 0.00179206802 0.0005674979083 0.0567288742 4.38359936e-05 0.0001047514898 0.02302825111 4.508827803e-06 1.457412461e-05 2.760932048e-05 0.0001445790523 6.589225333e-06 0.0006800036301 9.815087568e-06 9.576726423e-06 0.001317861331 3.043549386e-06 1.521431363e-06 1.164924107e-06 4.683261859e-06 3.592127268e-06 9.584103047e-06 8.152519325e-07 7.118058352e-06 0.0001546021151 9.133720972e-07 5.333545984e-06 9.608893051e-06 7.855229787e-07 6.760757945e-06 5.335401919e-06 8.558466783e-07 3.416460932e-06 3.064688772e-05 0.001511504953 1.502216582e-05 0.08493931648 0.02921560499 0.03350212798 0.0001792529213 8.793842581e-07 0.003176012614 0.02234705821 0.01172092917 5.177392616e-05 1.728067148e-07 0.006204121746 0.001128775642 0.01363601812 0.0001213229835 2.168843865e-05 1.645919496e-05 2.020852949e-05 0.02228434537 1.112963903e-06 5.472366498e-07 7.243034942e-06 2.944783567e-06 0.0035510187 5.856475895e-07 6.662037423e-08 2.869558783e-05 9.366595868e-05 6.537392881e-05 5.051921049e-09 9.847693966e-10 1.10968197e-07 2.170590989e-07 0.0009697703614 1.622193007e-07 5.597899332e-08 6.17415802e-06 1.181647526e-06 0.0001464137627 4.405730033e-07 5.806189139e-08 3.085621436e-05 1.843104447e-05 7.64236701e-06 1.343890123e-07 2.498167267e-08 3.386583649e-10 4.226774911e-06 9.573851211e-05 1.366994265e-07 7.411528225e-11 1.829193281e-07 2.307166901e-06 1.564217158e-06 1.45301673e-07 5.575552974e-09 1.757050874e-05 2.548949639e-06 1.444582306e-06 1.079805716e-07 1.201054113e-08 3.01393045e-07 1.199777935e-05 8.768126889e-06 -0.03133879958 0.1437051754 0.0499435038 0.00278325268 0.001775052052 0.001170198557 0.0002449878396 7.999103811e-05 3.561660147e-05 3.468859451e-05 1.070843918e-05 5.329855983e-10 7.157450576e-06 0.02783433637 0.04784792553 0.05320208007 0.01563475196 0.004081729173 0.02580291862 0.002129542069 0.0008247086037 0.05449252657 3.232134857e-05 6.670672688e-05 0.02605906753 7.461709703e-07 1.567419016e-05 0.0003148732798 0.0003778816863 8.048641281e-05 0.0001209580303 7.211147625e-06 6.62674296e-06 0.001433246606 3.489481797e-06 6.088926784e-07 1.020222356e-05 1.344626542e-08 4.836997638e-06 1.009492167e-05 4.092735935e-07 6.015137939e-06 0.0001597954908 5.366994984e-07 5.341500409e-06 2.938901406e-06 8.010488721e-07 5.344931308e-06 1.090596115e-05 5.43990302e-07 3.315697284e-06 3.03152924e-05 0.001571057802 9.029921307e-05 0.08594440822 0.02403468631 0.03725373947 0.0001888539947 1.451505617e-05 0.006119098749 0.02493882272 0.009621796996 5.231579094e-05 1.197063836e-06 0.008026042813 0.006109859602 0.004976543728 0.0002931657507 4.955780146e-06 2.863457316e-05 5.09175622e-06 0.02157031034 1.182533793e-07 1.536904276e-09 3.890104524e-06 1.532710487e-07 0.004621201724 6.022202791e-07 2.552248058e-09 3.388465435e-05 0.0002935802916 4.516270942e-05 9.244648444e-08 1.383847193e-09 2.575198195e-07 4.939242673e-08 0.000757562764 2.605995039e-07 5.60202381e-08 6.903500331e-06 6.052094957e-07 0.0002003790549 4.370694416e-07 1.023423195e-07 2.348394552e-06 5.393357273e-05 4.700821464e-05 1.124766973e-07 3.561128342e-08 8.052287291e-08 2.708765871e-06 6.611704632e-05 1.486852347e-07 2.521038575e-09 8.470313302e-07 2.167388808e-06 2.026338281e-06 1.437525294e-07 1.633201269e-08 2.039465645e-06 2.33902561e-06 2.357787201e-05 1.048841402e-07 2.038290957e-08 1.601227157e-06 1.454620521e-05 2.138963796e-07 -0 0 0 0 0 0 0 0 0 0 0 0 0 0.01359971614 -0.017716024 0.004870577299 0.002945054874 -0.02258970716 0.02016616809 0.001170152392 -0.006268732172 0.005303920493 9.361718399e-05 -0.0004034949895 0.0003271847613 3.30075815e-06 4.682448629e-06 -1.150054311e-05 -0.0005385318149 0.0005849047437 -5.487122752e-05 -3.959664539e-05 4.592455127e-05 -7.709729292e-06 -9.850949068e-06 8.933081828e-06 9.639884054e-08 -3.893088897e-07 -2.898139548e-05 3.033521284e-05 -7.868878997e-07 3.528113982e-06 -2.857384213e-06 -1.778304806e-06 -1.507787295e-07 2.240111358e-06 -1.861720417e-06 4.827988431e-07 1.280855379e-06 2.880021248e-06 -3.298432616e-06 4.832465758e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.000385936183 0.0007041971451 0.0003340516185 7.745010486e-05 -1.202026201e-06 -7.112615906e-06 -5.392230564e-06 -5.875790607e-07 7.83638198e-08 3.517579373e-07 6.498713897e-08 3.741791447e-08 -5.278823635e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2.711187742e-05 -4.762918002e-06 -3.452909025e-06 -3.44096788e-08 -4.764990026e-07 1.050048351e-07 -5.696869943e-09 -2.932066614e-08 9.6618421e-09 -4.360936931e-09 -8.167742329e-09 -1.104322162e-09 -2.552366243e-09 0.007257075326 -0.00775669315 0.0008820567467 -0.0005376917684 0.0006892036474 -0.0001249373536 -0.0001782224334 0.0001723473016 -4.067238072e-06 -3.766408681e-05 4.153245708e-05 -3.71468382e-06 1.035602473e-07 -3.342057471e-07 -2.880445452e-07 5.54998959e-06 -7.576523029e-06 2.300138342e-06 3.472586714e-06 -3.64970736e-06 2.042980081e-07 -5.464594946e-07 6.187027919e-07 -3.72896613e-08 1.421886134e-07 -1.249132704e-07 9.812740221e-08 1.397713984e-06 -1.761449192e-06 4.05421321e-07 1.23992897e-06 -1.733766292e-06 5.222040726e-07 8.476309401e-07 -2.913339955e-06 2.103212169e-06 7.250227525e-07 -8.472328234e-07 1.511920896e-07 0.0001435781373 -7.762534933e-05 -0.0005916976498 0.01052483806 -0.009564863396 -0.0001364701737 0.0001302308261 0.0005619413886 -0.003395887398 0.002939769287 -1.201777308e-05 1.648781647e-05 0.0001220231649 -0.0001348598248 -1.281142642e-06 -1.594769504e-06 2.323262747e-06 2.737533223e-05 -2.949224832e-05 -7.04567521e-07 -2.637975156e-06 2.259030916e-06 -9.405775857e-06 9.297350576e-06 1.790695927e-07 -6.153627893e-08 6.559704687e-08 -1.434964197e-07 1.462804549e-06 -1.280408409e-06 -9.09217631e-08 9.556296623e-08 3.515197666e-06 -3.49378232e-06 -1.649427856e-08 2.996073367e-08 -2.382764523e-08 -1.57670999e-06 1.824256484e-06 -1.801953154e-07 -4.940073015e-08 7.833251589e-08 -1.109997048e-07 2.101839492e-06 -1.896898824e-06 -3.76208908e-08 4.346725108e-08 1.282254904e-06 -1.446352957e-06 1.937321785e-07 -7.273265078e-08 8.01089118e-08 -3.096881613e-07 2.043451263e-06 -1.703170407e-06 -2.484061019e-08 3.251487553e-08 -1.689265051e-07 2.627183771e-06 -2.421401037e-06 -1.825737871e-08 2.337547759e-08 7.299784594e-07 -1.165061301e-06 4.606385148e-07 -0.08216582772 -0.008670823211 -0.01263868873 -0.0004400207071 -0.001272080128 0.0003097840395 -3.67123883e-05 -7.609690251e-05 4.386926765e-05 -2.554079379e-05 -1.810164252e-05 -2.537922723e-07 -1.04070121e-05 0.05406913365 -0.01544134365 -0.09987102253 -0.0005846010479 0.002530639196 0.0137035689 -2.835189971e-05 -0.000676714437 -0.01071690538 -2.125415994e-05 0.0001956208728 -0.004918751761 -3.688225203e-05 4.65315841e-06 0.0001251172427 5.368434069e-05 4.737498372e-06 9.874628323e-05 7.933428059e-06 -3.305866694e-06 -0.0001548078823 -3.925877985e-07 6.159716503e-06 -1.007011437e-05 1.923770493e-05 8.075963382e-06 -8.584097026e-07 3.500401098e-06 -1.829243437e-06 -6.659289825e-05 3.548358501e-06 -2.956926887e-06 -1.291164849e-05 3.773027959e-06 -4.185208915e-06 -9.307853249e-06 3.143231215e-06 -9.801920416e-07 -2.60662176e-05 -0.0009246301404 -0.0002012475186 -0.07775321002 0.05718884663 -0.01097070683 -0.0001745441886 -2.24116091e-05 -0.003999105048 -0.003501358049 0.0141586032 -8.691467248e-06 -1.935888549e-06 8.410934987e-05 -0.0003584038356 -0.001401587235 -9.858200848e-05 7.414438019e-05 1.717156218e-05 -0.0001503076036 -0.004157318 4.253129441e-08 -1.365635722e-06 -3.316596629e-05 3.050844998e-06 0.0005464931284 9.041213991e-08 -7.867488236e-08 5.747366763e-06 -8.983455123e-06 1.644742861e-06 -3.351954548e-09 -2.070253393e-09 1.916176662e-07 2.355760211e-06 -0.0001141188932 9.800025013e-09 -1.706385229e-07 -3.662117398e-06 -7.401469858e-06 9.282517096e-05 -1.248755793e-07 -1.98069347e-07 -2.843872377e-05 1.617245688e-05 -1.418171274e-06 -4.717149222e-08 -6.039348444e-08 6.535166496e-08 -1.436762213e-06 -1.904841252e-05 -7.870419242e-08 -4.518500185e-09 1.255004733e-06 5.686934599e-06 -1.662529865e-06 -7.801509159e-08 -3.984222088e-08 -1.234734602e-05 6.219832849e-06 -1.489260361e-06 -4.120639509e-08 -4.566701181e-08 -2.144076599e-06 -3.036402311e-06 -2.075335266e-06 --0.08134389216 0.005996957965 0.01360273996 0.0006982159021 0.001114849107 -0.0002904630075 4.52259783e-05 6.200431669e-05 -4.602857202e-05 3.085753947e-05 1.371956996e-05 -1.048913975e-07 1.161862177e-05 -0.05188062748 0.01193391624 0.1054275909 0.0003847698094 -0.002218271705 -0.01419149699 -2.937247668e-05 0.0007892666602 0.01005252734 1.146977768e-05 -0.0001703382075 0.005564171515 1.477744213e-05 -4.177410674e-06 -0.000395576053 -9.269462918e-05 -7.394106951e-06 -2.947769363e-06 -7.35669664e-06 2.677620814e-06 0.0001717506148 2.254233966e-07 -3.63302863e-06 -3.136132598e-05 -1.015602494e-06 -7.729105684e-06 5.998127293e-07 -2.396471526e-06 1.004968133e-06 6.391286336e-05 -3.155715578e-06 2.45339584e-06 6.235984274e-06 -3.596184267e-06 2.000551848e-06 1.462033163e-05 -2.509579114e-06 5.861070914e-07 2.477340661e-05 0.000694137426 0.0005166133075 0.07585144951 -0.05259849636 0.007455454505 0.000112554707 0.0001049797578 0.005701079264 0.002202435865 -0.01369021163 3.955195518e-06 3.843906349e-06 0.0004769892999 -6.794231968e-05 0.0007520325331 0.0001570592558 7.061471361e-05 -1.03565918e-05 4.928109989e-05 0.004142070096 8.805953796e-08 -2.539347814e-08 2.138127673e-05 -3.575217848e-07 -0.0005334634071 -9.118997939e-08 -2.662777602e-08 -1.247411345e-05 5.238530442e-06 -9.269138099e-07 5.667342902e-09 2.219983946e-08 7.88923837e-08 -1.237529839e-06 0.0001105582185 4.268264001e-08 1.969029206e-07 2.840133034e-06 5.697808764e-06 -0.0001035407726 8.254816077e-08 2.423225901e-07 8.687471602e-06 6.465416501e-06 7.241196498e-06 2.729527163e-08 6.506806796e-08 9.700232956e-07 6.839767759e-07 1.381210555e-05 6.047929591e-08 2.879300335e-08 -2.60349696e-06 -5.814995334e-06 1.539752162e-06 5.359385859e-08 6.887544989e-08 -5.694637084e-06 1.267710282e-06 1.409012346e-05 2.844493026e-08 5.824461716e-08 4.907725177e-06 7.147685188e-07 6.558892945e-08 -0 0 0 0 0 0 0 0 0 0 0 0 0 -0.003452241436 0.05693874753 -0.05340529978 -0.01875765275 0.02212681892 -0.003325039929 -0.005713541456 0.006346013645 -0.0006217870246 0.001638030826 -0.001761412802 0.0001208256212 0.001698832951 -0.001712591949 1.262282371e-05 4.695473257e-05 -0.0002388793004 0.0001914168027 -1.771706016e-05 0.0001642471572 -0.0001462573382 3.64266146e-07 -1.261627423e-05 1.224284644e-05 3.337570542e-07 -3.849510388e-05 3.825245656e-05 2.782950507e-05 -3.020994289e-05 2.338885633e-06 -2.402696518e-05 2.447334171e-05 -4.293729191e-07 -2.374195672e-06 3.07511218e-06 -7.116402458e-07 -9.472672566e-07 7.236011534e-06 -6.276992861e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.0002430526798 -4.875897791e-05 -5.129309517e-05 -2.451918719e-06 -2.387929703e-07 1.184150024e-06 -3.923678838e-07 1.221809119e-07 2.322798221e-08 -1.659864968e-07 2.390415008e-08 -3.264407102e-08 -3.767684778e-08 0.04231099084 -0.04398864874 0.001489722189 -0.001066213385 0.002406160364 -0.00131460068 0.001157559256 -0.00117326434 -1.982856202e-05 3.393542987e-05 -3.490868685e-05 -1.511320933e-05 -3.227976323e-06 3.201786891e-06 6.16067362e-06 -2.676606184e-05 2.762791701e-05 -1.089097501e-06 -7.897556721e-07 7.98975927e-07 -3.794915549e-07 -2.449937545e-06 3.787223925e-06 -8.735767962e-07 7.610513169e-06 -8.229907613e-06 2.814751884e-07 2.273955885e-06 -2.603046303e-06 2.267913532e-07 -8.817352123e-08 1.916884844e-06 -1.802808347e-06 2.955586257e-06 -3.038446294e-06 -9.716113047e-09 1.95103832e-06 -2.58966199e-06 6.059082628e-07 0.002820027377 -0.002764150129 -1.354773064e-05 0.02730146239 -0.02733573558 0.0003527297532 -0.0003487587999 0.0002772096168 -0.005639434704 0.00538238288 1.613939254e-05 -1.034585766e-05 -1.431618249e-05 0.0007835508861 -0.0007817439545 0.0001122812178 -0.0001165212429 -0.0002058131395 0.0002046030488 -4.928483462e-06 4.499057091e-06 -4.29870572e-06 5.938304741e-05 -5.846403245e-05 1.76790149e-06 -4.919140982e-08 7.406958243e-08 1.080737816e-06 -1.105983619e-06 -4.833620265e-08 8.6427901e-06 -8.916052561e-06 9.191282925e-08 6.655817564e-08 8.666100783e-08 -1.394553914e-06 1.398976214e-06 4.160997679e-07 1.590536568e-06 -1.780866983e-06 2.682304427e-07 -2.699596838e-07 3.153336135e-06 -3.18796854e-06 -1.20070872e-07 1.050792478e-07 -1.048608666e-07 -7.176616791e-08 1.128612551e-06 -1.028836897e-06 1.340858908e-07 -1.282216207e-07 5.074009445e-08 -4.591592018e-06 4.539588595e-06 1.443196761e-07 -1.430349536e-07 3.150700293e-06 -3.128716262e-06 -4.698487849e-08 1.676442439e-07 -1.629387661e-07 -5.415417446e-08 1.428264307e-06 -1.372666236e-06 -4.305015067e-05 6.878801408e-05 2.248742925e-05 1.086917446e-06 -2.398581019e-06 -6.307132078e-07 -7.829090375e-08 1.410057365e-07 3.259598042e-08 9.241680556e-09 -2.220527415e-08 1.265817373e-09 -3.576066483e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.07402888039 -0.02950115971 -0.008431221891 0.0001649273791 -0.001010641125 0.0005398911805 -9.346771001e-05 -6.557169296e-05 3.885126676e-05 -3.332371162e-05 -2.559556978e-05 -2.777531046e-07 -1.09201576e-05 -0.0147222263 0.06069645968 -0.09663375365 8.607611113e-05 -2.471111143e-05 0.0001574945247 -0.001225909834 0.0004073206725 -0.01090556476 5.376813183e-05 -3.109057835e-05 -0.001728043266 1.463167215e-05 -6.666269428e-05 0.0001464099518 -2.622807076e-06 -1.024969861e-05 0.0004633324936 -1.645207013e-06 1.298515123e-05 -0.0002153672844 7.809181882e-06 -3.270195393e-06 -7.029156295e-06 1.791403696e-05 -6.951972534e-06 1.839662108e-05 -1.401453367e-06 1.330334458e-05 -9.983250148e-05 -4.971708772e-07 7.035844233e-06 -2.119377049e-05 -1.836276582e-07 5.453165471e-06 -1.492920238e-05 -1.033446506e-06 6.320497335e-06 -3.022502348e-05 -0.001578230941 0.0002344259571 -0.06114803131 -0.02447461973 0.06878519577 -0.0001325675095 1.594178193e-05 -0.00251121787 0.008770957751 -0.002078196475 -8.024136496e-05 4.564571318e-06 -0.00246424817 0.0005802973059 -0.001909801858 -0.0001099993966 -7.745903962e-05 -6.015560003e-05 3.279493179e-05 -0.001978203787 -1.945878876e-06 9.809835035e-07 2.493673612e-05 -4.03297874e-05 0.0007893069731 -1.101028705e-06 -4.869259608e-07 -1.907013309e-05 -3.001839786e-05 7.10481064e-05 -5.313307539e-09 4.492453961e-09 1.061508674e-06 -1.097745343e-06 -6.581955732e-05 -2.877261368e-07 1.0279051e-07 1.666433556e-05 2.657092218e-06 3.194287868e-05 -6.306618434e-07 2.291631961e-07 -1.692414821e-05 -1.830116865e-05 2.183741552e-05 -1.820887305e-07 9.81013956e-08 -3.574502379e-08 1.263408786e-05 -4.355129656e-05 -1.567099041e-07 4.89609058e-09 1.098354684e-06 -1.230603563e-06 6.267972161e-06 -1.707616385e-07 4.343752743e-08 -9.813216107e-06 -1.294837434e-06 5.584668793e-06 -1.430927364e-07 5.471598473e-08 4.93973151e-07 7.251059379e-06 -1.515624627e-05 --0.07359945238 0.02687349403 0.009664511334 -0.0001375745821 0.0009302389773 -0.0005444668241 0.0001112750749 5.064914104e-05 -4.200193027e-05 4.155442616e-05 1.911556395e-05 -1.117239353e-07 1.212868901e-05 0.01686569656 -0.06485024509 0.1025355765 -0.0009248044289 0.0002895655922 -0.001434803569 0.001414362723 -0.00047112 0.01080735628 -5.460958507e-05 3.66526866e-05 0.002217166538 -5.870341811e-06 7.015086141e-05 -0.0004979010505 -0.0001240259212 -8.751374431e-05 -0.0001314295874 1.624661004e-06 -9.761319321e-06 0.0001967014756 -8.534220205e-06 2.471657964e-06 -2.038748775e-05 -9.241224411e-07 9.626935663e-06 -1.942547603e-05 1.142479049e-06 -1.199252775e-05 9.704868994e-05 1.051697271e-07 -5.692791249e-06 1.140031999e-05 5.903300657e-07 -7.019317632e-06 1.929161695e-05 9.17480732e-07 -6.217526952e-06 2.966651083e-05 0.00192154062 -0.0005312688708 0.06012739898 0.02602834705 -0.07045316693 0.0002105871634 -6.293884459e-05 0.003751631044 -0.01058303639 0.002599899175 8.576524724e-05 -1.003712464e-05 0.002029616714 0.002145421696 -0.0008094676945 0.0003448261319 -4.205249506e-05 6.17121299e-06 -1.489783445e-05 0.002097830539 1.146955607e-07 1.647626266e-08 -2.076889271e-05 8.736142386e-06 -0.0008389848078 1.124627045e-06 -7.32690043e-08 2.121322443e-06 6.129801009e-05 -4.877522271e-05 1.505978942e-07 -6.064212326e-09 1.606533658e-06 4.405061993e-07 5.246517854e-05 4.026391898e-07 -1.467543278e-07 -1.791136942e-05 -2.352497337e-06 -4.133129584e-05 6.644035985e-07 -2.901600141e-07 -2.825477992e-06 -2.813599439e-05 5.671829801e-05 1.635663212e-07 -9.913422559e-08 -6.043073698e-07 -9.410142382e-06 3.301271989e-05 1.945024624e-07 -2.604192648e-08 -2.293314275e-06 1.709657594e-06 -6.630251812e-06 1.917672137e-07 -6.712120786e-08 2.080007922e-06 -6.602047178e-06 1.159158039e-05 1.499113429e-07 -6.473357785e-08 -5.743917301e-07 8.519564953e-06 -2.283241466e-06 -0 0 0 0 0 0 0 0 0 0 0 0 0 -0.005092260215 0.2159229816 0.03128609154 0.01023966199 0.1364105291 -0.005769465182 0.003939461264 0.03711481036 -0.00115350517 -0.0006503489898 -0.004592199348 0.0001103071516 -0.003444074923 -3.267114599e-07 1.255412052e-05 0.0001133718668 -0.001954061025 -0.000118384221 -1.688859913e-05 0.0005021928503 5.352181271e-05 2.100725555e-07 -1.024731525e-05 -6.451937434e-06 3.077112667e-08 4.853601893e-05 0.0002761175576 -1.371259e-05 -9.312617875e-05 2.874064809e-06 5.195097589e-05 -9.443772269e-07 -3.900716765e-07 -3.145050829e-05 -2.116425214e-06 -4.356827753e-07 -1.388553119e-06 2.884102274e-05 2.89138457e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.0002494338683 -2.898392229e-05 -5.478372412e-05 -4.310549138e-06 -2.45053935e-07 9.570084319e-07 -3.088707248e-07 1.327540219e-07 2.341047798e-08 -1.500887843e-07 2.197588765e-08 -3.255183876e-08 -3.727053159e-08 0.1178396004 0.03327416402 0.001486703152 0.000300850084 0.01669489188 -0.00226630718 -0.0007330495835 -0.003475237834 -1.887640138e-05 -2.328904449e-05 -0.0002724694242 -1.840323931e-05 -1.238603133e-05 -1.890585189e-06 5.754100819e-06 -2.533941026e-05 8.945375078e-05 -1.081987783e-07 5.847396975e-07 2.441060257e-06 -4.108785794e-07 1.050649063e-06 3.611193161e-05 -1.030035133e-06 2.867468695e-05 5.549108726e-06 2.567654973e-07 1.066716748e-05 1.74974921e-06 1.91410635e-07 -9.068487264e-08 1.340982603e-05 8.946278096e-07 1.084090075e-05 2.070410754e-06 -9.556506645e-09 7.716208216e-06 2.396942507e-06 5.129699389e-07 -0.003257524114 -0.001419906168 -1.435953442e-05 0.1132231143 0.0173004834 -0.001301066453 0.0001017569226 0.0002953545919 0.004160075235 0.03553343691 -3.077031881e-05 1.579449011e-06 -9.544126973e-06 -0.0003329997855 -0.002335244342 -0.0009205670036 4.78671689e-05 -0.001692966762 -0.0001276775487 -5.772424614e-06 -9.260069485e-06 2.772841615e-07 0.0002369134645 2.769900074e-05 1.497161099e-06 -3.491013331e-07 3.106612177e-08 -1.353586183e-05 -1.104346916e-06 8.340441388e-08 -2.907086282e-05 2.171138599e-06 -2.446398696e-07 2.683225833e-07 1.210392288e-07 -4.452375574e-08 -2.626257767e-06 4.414942534e-07 -8.04401244e-07 7.441662867e-05 -4.955668241e-07 -6.091654188e-09 1.354454759e-05 1.732537647e-06 -9.995963253e-08 -2.271591453e-07 6.749194911e-09 -8.005594454e-08 6.30015076e-06 4.561721826e-07 -8.889249067e-08 -4.675914035e-07 5.264024494e-08 3.417648886e-06 1.210262172e-05 -1.288979016e-07 -1.726444823e-07 7.005365734e-06 2.356218887e-06 -5.06518201e-08 -2.32526609e-07 -3.461515232e-08 -5.804354941e-08 7.17101123e-06 7.186629232e-07 -2.506828058e-05 -9.632841743e-06 -2.460176593e-06 2.267392953e-08 -3.884942874e-07 1.478990988e-07 -1.141743543e-08 -2.745159452e-08 8.62389641e-09 -5.144868318e-09 -1.061749256e-08 -1.205167822e-09 -2.649334929e-09 -0.003073473539 0.1264656511 0.0008547227895 0.0001465185612 -8.448519556e-06 -2.14377066e-06 -0.001770203234 -0.0001064732035 -3.931415994e-06 0.0001927521306 -9.338245219e-06 -1.584219952e-06 -5.266008637e-08 -0.0001180608793 -2.984551725e-07 -3.139107752e-06 0.0001099804852 4.766162656e-06 -1.85438372e-06 3.360154538e-05 3.088407513e-07 1.586350863e-05 -2.923195903e-07 -2.984284913e-08 1.323104317e-07 9.163260018e-08 3.198459054e-05 -5.790005558e-07 2.522456806e-05 5.407972544e-07 -4.2104453e-07 1.467713476e-05 7.174357798e-07 -4.051902442e-08 1.079774012e-05 3.137279339e-06 -2.874702145e-07 1.244767025e-05 1.632626658e-07 -0.003948769473 4.678479658e-05 -0.0004920241828 -0.005407936832 0.1511446462 -0.0002098048309 -8.029597559e-05 0.0003822345543 0.01783235546 -0.000576345036 -0.0001789660916 -1.932439079e-05 -0.004281163069 0.0001074790427 -1.801115677e-06 -9.263546173e-06 -8.726123072e-07 -0.0001597314391 8.438925887e-06 -3.89692037e-07 -1.921597902e-05 -1.643664631e-06 6.253296532e-06 -0.0001842746681 2.2136322e-07 -2.618508679e-06 -9.060473691e-07 -1.107840735e-06 -9.089647785e-06 0.0001588125484 -2.319543526e-07 -8.74937613e-08 9.477445928e-06 2.369219215e-06 -1.27222085e-08 -3.206524117e-07 1.403352698e-08 1.607391712e-05 -1.78578314e-06 -3.328629262e-08 -1.216216878e-06 -4.834717033e-08 -1.083379035e-07 -1.417342991e-06 4.932527394e-05 -5.165362831e-07 -4.828104351e-08 -7.479287683e-07 2.291973106e-05 3.374186545e-07 -2.867563929e-07 -7.322364348e-08 -2.446495871e-07 -1.091605707e-06 1.531443162e-05 -3.788170578e-07 -2.282909179e-08 -1.492177773e-07 -1.012118897e-06 1.623442378e-05 -3.226994069e-07 -1.957270674e-08 -2.539990282e-07 1.25912371e-05 9.329309758e-07 -0.1271309552 0.2106674483 0.07706621803 0.007906104029 -0.006239743279 -0.002302356817 -0.0006409207684 0.0003368104849 0.0001468472104 5.985908263e-05 -5.353021351e-05 2.917309098e-07 -1.47400048e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.07507696299 0.02329611941 0.01063509892 -1.291210315e-05 0.0009875816776 -0.0005078704306 9.423374919e-05 5.070346204e-05 -4.341612579e-05 4.023345969e-05 1.79301543e-05 -1.08569463e-07 1.198590464e-05 0.03071402572 0.05573372471 0.1032647447 0.001446167818 0.0008953325279 -0.003358930705 -0.001331129404 -0.0005099936491 0.01115709916 5.690566653e-05 6.314075769e-05 0.002825926964 -7.103925144e-06 -6.675214629e-05 -0.0004999250808 -0.0001136894854 -0.0001142093746 4.206036037e-05 6.670306679e-06 5.371225507e-06 0.0001724370483 7.892772452e-06 2.797954335e-06 -2.172773949e-05 -9.605995931e-07 1.144150438e-05 1.615731681e-05 1.549656624e-06 1.060487399e-05 9.1858927e-05 4.2632771e-07 9.995948172e-06 8.489884864e-06 1.201657664e-06 8.232910232e-06 1.708738757e-05 1.242671786e-06 5.796541271e-06 2.939451416e-05 -0.002639058166 -0.000144529514 0.06294483939 0.0369442098 0.06048239151 -0.0003172924371 -1.949841086e-05 0.004254552092 0.01162420869 0.004182417767 -8.788304795e-05 -3.937686618e-06 0.00170577368 -0.002007514555 -0.0009261433916 -0.0004925385433 -8.735523939e-06 -7.486949618e-07 -2.524505603e-05 0.002591439804 -1.986874039e-07 -2.915026188e-09 -2.59603857e-05 -7.138514679e-06 -0.0008600407439 -1.011579882e-06 -2.829763805e-08 1.134275562e-06 8.020825127e-05 2.173735882e-05 -1.552853072e-07 -3.106588148e-09 -1.582019891e-06 3.910737912e-07 5.570232655e-05 -4.377735196e-07 -1.011369714e-07 1.463078397e-05 -4.231558883e-06 -5.268822265e-05 -7.342259583e-07 -1.639897034e-07 -3.510080904e-06 6.200573714e-05 1.275393398e-05 -1.889442536e-07 -5.259910008e-08 -8.076979775e-07 7.969843662e-06 2.814610157e-05 -2.497940686e-07 -7.38815062e-09 -2.395848503e-06 4.669109064e-06 4.393735896e-06 -2.41499066e-07 -2.521680429e-08 4.200100257e-06 5.024386979e-06 1.206668852e-05 -1.761931614e-07 -3.062796561e-08 -8.652877561e-07 1.626452051e-05 1.329598156e-06 -0 0 0 0 0 0 0 0 0 0 0 0 0 -0.006312592323 -0.2464349812 0.0144808546 0.006470467621 -0.140489362 -0.009476867157 0.002368007505 -0.04430470628 -0.001749279764 -0.0002152136706 0.003624407052 9.629966783e-05 0.001676678432 0.001560029559 1.256385462e-05 0.0002730276531 0.001953670474 -8.376919336e-05 -1.629541375e-05 -0.0003653878386 1.972456739e-05 4.501656802e-07 3.040981647e-05 -1.190544869e-06 3.266226189e-08 3.014584182e-05 -0.0003699176419 -5.444928623e-06 9.144563476e-05 3.373190522e-06 -2.968068654e-05 -2.392165693e-05 -4.659062501e-07 3.61940227e-05 -1.604332982e-06 -3.483365092e-07 -2.135538422e-06 -2.626709873e-05 1.391233682e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.0002521783526 -2.009194506e-05 -5.597194849e-05 -5.163263855e-06 -2.458483476e-07 8.539646215e-07 -2.853155165e-07 1.379306943e-07 2.328178847e-08 -1.429537578e-07 2.136256777e-08 -3.255672889e-08 -3.694904414e-08 -0.1646530734 0.01228207419 0.001487161577 0.0001729021761 -0.01331535788 -0.002937305287 -0.0002889173776 0.004240264169 -1.835628543e-05 -1.591960363e-05 0.00032482471 -1.991343744e-05 1.428167739e-05 -9.097045728e-07 5.544884175e-06 -5.153440523e-05 1.607126729e-06 -9.383614809e-08 2.33707678e-07 -3.383349555e-06 -4.430454166e-07 8.120260705e-07 -3.520949029e-05 -1.109991682e-06 -3.599057601e-05 2.62801344e-06 2.442388128e-07 -1.308972135e-05 9.536331453e-07 1.794304573e-07 -9.241854656e-08 -1.44762129e-05 5.884486971e-07 -1.376900341e-05 9.649801079e-07 -9.53056625e-09 -1.183333858e-05 1.1523672e-06 4.764481399e-07 0.0004767851313 0.003938087678 -1.476129923e-05 -0.1373936182 0.008727997711 0.0009190962402 0.0002817379548 0.0003079944744 0.002647441043 -0.04464646742 1.46938806e-05 3.537274545e-06 -7.300285608e-06 -0.0001326629061 0.002115587264 0.0008060264104 7.578796751e-05 0.001950079001 -9.065804161e-05 -6.245436159e-06 4.801727896e-06 2.43072147e-06 -0.0002390199466 1.371881643e-05 1.371973969e-06 3.953610511e-07 1.382723117e-07 2.326969155e-05 -1.135722281e-06 1.315147531e-07 2.028484954e-05 9.017189811e-06 1.271005824e-07 -3.646591336e-07 1.437650181e-07 1.428164489e-06 1.072177588e-06 4.541282408e-07 -8.571902029e-07 -7.303614622e-05 2.301394089e-07 2.052435296e-07 -1.487949051e-05 9.044809413e-07 -9.317764668e-08 1.224496205e-07 7.302429172e-08 -8.515664785e-08 -6.343081007e-06 2.758511627e-07 -4.311900733e-08 5.758900563e-07 5.386683752e-08 1.200444045e-06 -1.68575441e-05 -1.343849459e-08 2.951385201e-07 -9.847119386e-06 6.635434174e-07 -5.303231504e-08 7.016555185e-08 1.782188413e-07 -6.025108176e-08 -7.790206562e-06 4.089825453e-07 -2.545168948e-05 -8.794955061e-06 -2.677011022e-06 1.427734109e-08 -4.093418936e-07 1.419459612e-07 -1.019244012e-08 -2.703843505e-08 8.837034248e-09 -5.057764679e-09 -1.017018356e-08 -1.173109604e-09 -2.612948715e-09 -0.003735459492 -0.1202157059 0.0008598591285 -0.001235007709 -0.0001179420749 -2.245070069e-05 0.001963696101 -7.8837853e-05 -4.030301011e-06 -0.0002006463418 -1.581985979e-05 -1.940544957e-06 -5.246235448e-08 0.0001176769748 -3.0244425e-07 -4.190951595e-06 -0.0001005763633 4.27537579e-06 -2.967686401e-06 -2.542188405e-05 2.733195328e-07 -1.523149008e-05 -3.289374057e-07 -3.05038477e-08 1.343390843e-07 9.105520137e-08 -3.23064559e-05 -7.291195001e-07 -2.387629629e-05 5.18838983e-07 -6.082547213e-07 -1.402190217e-05 6.605886195e-07 -9.141079478e-08 -1.591851249e-05 2.678233363e-06 -3.554444024e-07 -1.189357112e-05 1.616843753e-07 0.003707936614 4.998578495e-05 -0.0005080705589 -0.006822191812 -0.1358847701 0.0003467650558 -2.202649028e-05 0.0004163708694 -0.01938067592 -0.0009224285696 0.0001899569868 -1.090313875e-05 0.003828697079 0.0001210275747 -1.753769852e-06 1.075699253e-05 -1.729004171e-07 0.00015182467 1.400094722e-05 -4.455722602e-07 2.169995371e-05 -1.26120495e-06 7.733462877e-06 0.0001619008427 2.185549566e-07 2.876126758e-06 -4.910158316e-07 -9.714883431e-07 -1.077057027e-05 -0.0001078143027 3.180175868e-07 -2.834912475e-08 -1.189960123e-05 8.404047064e-07 -1.218804907e-08 2.90025029e-07 1.762982193e-08 -1.177357461e-05 -3.052939679e-06 -3.894319699e-08 1.260374118e-06 -3.784349025e-08 -1.098127976e-07 -1.652686605e-06 -4.474968232e-05 5.497653186e-07 -3.563134533e-08 -9.498042412e-07 -2.024476371e-05 3.056289252e-07 3.682808698e-07 -3.043035526e-08 -2.596205539e-07 -1.820998867e-06 -1.11077749e-05 3.997289575e-07 -1.727059375e-08 -1.550335163e-07 -1.83692679e-06 -1.260517173e-05 3.382292413e-07 -1.530673982e-08 -3.207181068e-07 -1.321145098e-05 7.614072988e-07 -0.07666998238 -0.02334950809 -0.01009569055 9.7470251e-06 -0.001130516785 0.0004833316682 -7.066100046e-05 -6.465407495e-05 4.115191102e-05 -3.171814741e-05 -2.299685991e-05 -2.627310791e-07 -1.064338775e-05 -0.03584695634 -0.04845234898 -0.09791220446 -0.00116515017 -0.001002882602 0.003856897087 0.001219019816 0.0003824790928 -0.01153335058 -5.992385376e-05 -8.51237206e-05 -0.002694663218 1.836931189e-05 6.212938236e-05 0.0001491701017 -2.11636482e-05 2.719736673e-05 0.0002548813865 -7.746019861e-06 -6.143749601e-06 -0.000167209214 -7.091452541e-06 -3.988065185e-06 -7.632408632e-06 1.887082178e-05 -8.665545461e-06 -1.535679294e-05 -2.337729238e-06 -1.108765151e-05 -9.085712009e-05 -1.484891319e-06 -8.747290228e-06 -1.605046926e-05 -9.294676822e-07 -1.102872001e-05 -1.087484442e-05 -1.727265333e-06 -5.615810317e-06 -2.968693412e-05 0.002531982941 2.344604566e-05 -0.06600652566 -0.04404506145 -0.05297723394 0.0003001920393 -1.141770852e-07 -0.003101152703 -0.01061543477 -0.005055075704 8.672450866e-05 8.633241143e-07 0.001785731173 0.0007032292135 -0.001858844295 0.0002031838823 3.581452976e-05 5.528838179e-05 8.370572608e-05 -0.002782999309 1.864436972e-06 9.558437199e-07 3.746900543e-05 2.914172931e-05 0.0007974990227 9.810666651e-07 -1.059947024e-07 -1.408461127e-05 -3.801603647e-05 -2.59138579e-05 8.461100068e-09 1.456081224e-09 -1.078483627e-06 -6.75167902e-07 -6.664966029e-05 2.717490938e-07 1.017500158e-07 -1.220527318e-05 6.528300242e-06 4.612504284e-05 7.379676664e-07 9.235213825e-08 -1.839691639e-05 -2.556921097e-05 -1.604008699e-05 2.251053156e-07 3.642149812e-08 -5.849189321e-08 -9.454024624e-06 -3.42452622e-05 2.289494501e-07 5.405440797e-10 1.176559883e-06 -5.194807205e-06 -3.344667594e-06 2.433666187e-07 8.220451171e-09 -1.172212342e-05 -5.211055947e-06 -3.218113331e-06 1.808683763e-07 1.776437905e-08 8.355883341e-07 -1.682194434e-05 -3.003191814e-06 --0.1244894771 -0.2101857568 -0.08118383266 -0.01047339364 0.005450831173 0.002419247537 0.0008547341044 -0.0002641358282 -0.0001549268746 -7.592933966e-05 4.173634974e-05 1.205531843e-07 1.659925355e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.4511178441 0.1788933402 0.01952376147 -0.002657341027 2.042784641e-05 0.0006383944691 -0.0001780440742 1.94688863e-05 -0.000151227711 3.750863895e-05 -1.696460019e-05 1.822358986e-05 -1.750526312e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.4509370911 0.1793159845 0.01969251574 -0.003192450812 0.000685080602 0.000118852064 0.0001910359828 -0.0002013649958 -1.278848376e-05 -4.178841477e-05 3.288930331e-05 -8.138252139e-06 1.224906789e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.2646806578 -0.008228751522 0.0003612755932 0.0001645425919 0.0001527044125 7.619439711e-05 -5.464474581e-06 3.692963179e-05 3.41738209e-05 8.702787009e-06 1.41406476e-05 1.202765477e-05 9.217997176e-06 0.003828502233 4.912893079e-05 0.2530956384 -1.312671068e-05 -0.0006534186457 0.01701942731 -3.091546726e-09 -1.734376422e-06 -0.002826558684 -9.882558861e-08 -4.146678611e-06 0.0003075915073 4.866623034e-06 -4.070850858e-10 0.0003398587215 -5.03964287e-07 -2.105158864e-08 -8.529274119e-06 -2.104565757e-09 -1.834097339e-10 -1.839210215e-07 -1.445703291e-09 -9.72844511e-07 7.988716273e-05 1.5166932e-05 -5.052111265e-07 -6.638658246e-11 5.542559788e-07 1.009604734e-08 1.06903987e-05 1.145907159e-06 5.526898007e-08 1.682990767e-05 2.666839943e-06 2.08357886e-07 9.253640719e-06 3.735499327e-07 5.205520212e-09 1.098451413e-05 5.630982825e-07 0.0001678672272 0.08725105726 -0.004108613366 -5.126504108e-05 5.459117983e-07 -2.444205642e-05 0.01460295751 8.522931057e-05 0.002867082103 3.036487947e-09 -2.456779492e-06 2.201827737e-08 1.459023866e-05 -0.000945069991 -5.581998622e-11 -3.806119639e-08 -7.210102339e-08 -2.092234499e-06 0.0001039554804 6.894832507e-10 -1.309390352e-07 -3.707507849e-07 -1.402886422e-09 0.000143863056 8.574031475e-10 7.70512932e-08 -5.823474704e-06 6.552805125e-07 1.656933841e-08 -3.856417195e-11 1.920001326e-09 -1.420684792e-08 -6.681973102e-08 1.699358405e-05 1.960483568e-12 7.386281374e-09 -4.447925864e-07 -1.194555994e-05 5.033946195e-05 1.728359893e-11 -4.384536598e-08 -6.225370154e-06 4.392982695e-07 2.149695919e-09 -7.514171831e-12 1.082502974e-08 8.619422615e-07 2.381087435e-08 5.999850447e-06 5.099150209e-10 1.91712122e-08 7.68324685e-06 -7.97644869e-07 -5.419952665e-08 -1.425429419e-11 8.501621174e-09 3.82114171e-06 -2.864421187e-08 -1.189305593e-08 -5.29325174e-12 7.647192354e-09 1.276398193e-06 4.715951527e-08 2.568227218e-06 -0.276844638 -0.005513964942 -0.0003945291832 0.0002765704734 0.0001531214236 4.311452182e-05 -3.653367361e-06 4.746876001e-05 2.427245359e-05 7.779922528e-06 1.398831897e-05 1.053771854e-05 8.719779195e-06 0.004022145278 0.0009735014422 0.2442725961 -9.8051101e-05 -0.001446826329 0.02439578976 -1.693729859e-08 -2.935195838e-06 -0.003216680075 -2.66328928e-07 -3.361877036e-06 0.0002651597734 1.441526097e-05 2.118830607e-07 0.0002867213909 -4.994895133e-06 -2.744387404e-06 -1.501665011e-05 3.804105995e-08 3.901770137e-08 1.109299223e-05 -1.553123238e-08 -3.081974556e-06 8.253746995e-05 -4.386143437e-07 2.391263803e-08 2.026023853e-10 6.363849167e-07 6.2023319e-08 1.307017007e-05 1.905171795e-06 7.371797118e-07 1.350934073e-05 1.746961216e-06 7.87977267e-07 7.067163917e-06 4.5282844e-07 3.310745283e-08 9.584910746e-06 1.190314877e-05 0.0001508395109 0.07834615551 -0.004829718594 -7.49780197e-05 3.099716316e-07 -4.491190422e-05 0.01510455551 0.0003966475897 0.003458153506 -1.496994772e-08 -2.328403581e-06 1.474360956e-06 0.0001393482842 -0.0007710050067 -1.133730783e-10 -5.814490381e-07 -8.759759402e-08 -1.536887339e-06 9.708704796e-05 3.251675479e-11 -2.966943913e-08 -1.848301408e-06 -1.015318894e-07 8.065831322e-05 4.008706654e-10 -8.856092309e-10 1.132719957e-05 -2.003484021e-06 -1.910967211e-07 1.260197817e-12 5.266500694e-10 -1.927560428e-08 -5.29206656e-07 3.219514005e-05 1.468816165e-11 -1.841119757e-09 -4.760657978e-07 -5.477338346e-06 2.938459478e-05 -9.431003277e-11 -2.323320733e-08 -8.079225856e-06 1.929748188e-06 3.689632597e-08 6.454242276e-11 1.324615695e-08 1.175445539e-06 1.613636873e-07 5.894063831e-06 -1.079244991e-10 1.980488185e-08 5.094908706e-06 -8.311539685e-08 -7.014045705e-08 4.963802038e-11 5.325379363e-09 3.157760742e-06 1.552399752e-08 -5.380883711e-08 5.30320516e-11 7.797812172e-09 1.795297678e-06 5.926637819e-07 7.407735233e-07 -0.2826638831 -0.004055763145 -0.0008705871959 0.0003182057998 0.0001515768232 2.88985815e-05 -2.172930135e-06 5.21239929e-05 1.816287156e-05 8.219063634e-06 1.381087709e-05 9.684357495e-06 8.544054332e-06 0.005562963585 0.0005625057235 0.2389429097 -4.655434165e-05 -0.002086286406 0.02795663834 2.278831075e-08 -1.413560651e-06 -0.003381129802 -6.756707799e-08 -2.783213095e-06 0.0002200288443 1.723154519e-05 1.840574661e-07 0.0002567141391 -2.055258895e-05 -3.154505266e-06 -3.051111643e-07 4.396218325e-08 3.109270974e-08 1.934207472e-05 -9.247275374e-09 -4.711586116e-06 7.947489779e-05 -6.245970365e-06 4.677410311e-07 2.845134494e-09 7.754769619e-07 2.713224402e-08 1.469530928e-05 3.703356545e-06 6.825088136e-07 1.044783875e-05 1.112974978e-06 1.57785344e-07 7.324303327e-06 5.46334505e-07 1.350617821e-08 8.942253283e-06 6.68103904e-06 0.0001741522696 0.07308761594 -0.004072409457 4.45569966e-05 4.491603112e-08 -4.430518609e-05 0.0153498281 0.0001339470334 0.003921785945 -8.649458789e-09 -1.920979612e-06 -0.0003552066156 -3.985818327e-06 -0.0001175627778 1.356003046e-09 -1.465087516e-06 -6.019783209e-09 -6.163192334e-07 9.227922099e-05 1.405312242e-11 3.469161591e-09 -1.568102704e-06 -3.089186139e-08 5.31818646e-05 2.899778604e-10 7.3777918e-08 1.610594537e-05 -2.307825739e-06 -2.245134245e-07 1.68324429e-11 -1.884427572e-08 -1.996488798e-09 -1.113054288e-06 4.127183329e-05 -2.524280819e-11 -2.842852123e-09 -1.185002485e-07 -2.860189436e-06 1.669444588e-05 -4.467910097e-11 -1.658528989e-08 -3.100058131e-06 -5.977832804e-07 -1.290955838e-06 5.995375769e-11 1.546325152e-08 1.588920772e-06 7.903453614e-08 5.590054173e-06 -6.365099048e-11 1.889555065e-08 3.840203703e-06 6.918715574e-09 -9.330924321e-09 2.890282071e-11 4.949929332e-09 -6.091221484e-08 3.512424965e-09 3.012326462e-06 4.354467947e-11 8.83926238e-09 2.647578117e-06 1.962917987e-07 -3.395720992e-08 -0 0 0 0 0 0 0 0 0 0 0 0 0 0.2639982369 0.001205578172 0.002078167571 0.002918528218 0.002852961161 0.1790322028 0.0006921645132 0.0005555021375 0.07151661371 3.358539776e-05 2.724439595e-05 0.006072041596 -5.712882517e-08 7.655188296e-08 -0.001246418362 -0.002807959707 -0.0001197851296 -8.370173022e-05 -0.0004808155083 -4.436690024e-06 -4.409031681e-06 -0.0002908126152 -2.773659214e-07 -4.541590061e-09 0.0002557185401 8.328157801e-05 2.781907866e-06 -3.421920224e-07 -3.123057387e-07 -4.050715352e-05 5.947876637e-08 -4.291593688e-09 0.0001101602462 -9.832078092e-08 -9.757251627e-07 -3.367656915e-05 2.208053591e-05 4.93161866e-07 4.012259278e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.136759867 0.2495384266 0.1183741171 0.02744512307 -0.0004259485133 -0.002520417748 -0.001910784133 -0.0002082137869 2.776890596e-05 0.0001246485062 2.302876194e-05 1.325936575e-05 -1.870597394e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.03127525951 0.005494326129 0.003983148203 3.969373339e-05 0.000549671634 -0.0001211296958 6.571698562e-06 3.382323651e-05 -1.114554386e-05 5.030615627e-06 9.422005601e-06 1.273905221e-06 2.944315341e-06 0.1323912725 0.0003909119965 0.02921426462 5.766675355e-05 0.006250515562 -0.003403840587 -1.485951533e-05 -0.001867105443 0.00443680683 3.240729491e-06 0.0003656039655 0.001366664274 -0.0001145380224 -5.139013819e-10 0.0001779611418 5.83804182e-05 3.374046054e-07 -0.0001034449396 2.169933899e-05 5.869952752e-07 4.601998696e-05 1.659674218e-08 1.742906117e-05 2.963978566e-05 -1.210641975e-05 2.867779831e-05 4.53217723e-10 2.324712673e-05 1.222697536e-07 2.227096826e-05 1.403402863e-05 1.745926967e-07 8.72764537e-06 1.787836085e-05 1.034030048e-07 -1.329429507e-06 1.289057784e-05 4.836804013e-08 8.859290971e-06 -5.290414375e-06 -0.003276907408 0.03531854714 0.1385178612 0.000625854789 -5.592906919e-05 -0.0004535323248 -0.001858137465 0.0002583059723 0.03363716185 -6.410845458e-07 -6.697727842e-05 -5.565339435e-06 -0.002679378237 0.0007633423194 -2.08755938e-07 -1.104230886e-05 -4.095444652e-06 -0.0002674828357 0.00149216675 -2.80010304e-07 -2.453633862e-05 -0.0001188698184 -6.13148686e-07 -0.0001884128713 -2.161080613e-09 -1.121032814e-07 -5.91105154e-07 1.177803822e-05 1.478074919e-07 -2.474382572e-08 -2.722592647e-07 8.302464299e-07 1.276481795e-05 3.973266777e-05 -2.462481775e-09 -2.908972312e-07 4.183446625e-07 1.195534794e-05 -7.642393501e-06 -1.608752281e-09 -1.003469931e-06 4.301846484e-06 3.719373081e-05 9.406691721e-08 -2.154040956e-09 -3.072733325e-07 1.707648103e-05 1.486404674e-07 1.033953599e-05 -1.39406273e-08 -2.712912285e-07 2.967047924e-06 1.088193374e-05 2.630195707e-07 -1.271864742e-09 -3.37626031e-07 3.328483927e-06 1.440450968e-05 3.877550917e-07 -8.11888206e-10 -2.401580976e-07 1.385889647e-05 1.006455308e-07 2.063472015e-06 --0.03400284354 0.003588263554 0.005230293025 0.000182094621 0.0005264273819 -0.0001281985288 1.519275872e-05 3.149132847e-05 -1.815450395e-05 1.056959613e-05 7.491037766e-06 1.050273473e-07 4.306753964e-06 0.132840086 0.006926056395 0.03524201336 0.0002507050947 0.008181088315 -0.00284892788 -2.094253217e-06 -0.002257155031 0.004441134928 6.998848729e-06 0.0003078763911 0.002049530513 -0.000130699398 -3.80839705e-07 -3.842171015e-05 4.7122312e-05 -6.897808692e-06 -5.365659599e-05 1.668910718e-05 2.884928638e-06 6.378519466e-05 2.693632591e-08 1.706600503e-05 6.68013998e-06 -1.024252082e-06 2.63935855e-05 1.049424309e-07 1.911983491e-05 5.064177389e-07 2.571949386e-05 1.43601749e-05 9.196728095e-07 2.709340716e-06 1.740628975e-05 8.763258401e-07 2.487225682e-07 1.225815726e-05 2.323093089e-07 9.604008143e-06 -0.0005930404856 -0.002801021284 0.03833418148 0.1296496341 0.003644786517 -0.0001707246494 -0.0005033511969 -0.001289328504 0.0008894809433 0.03962388807 -1.703508023e-06 -3.201976751e-05 -1.520417585e-05 -0.001727873914 0.0001561498279 -8.088160454e-05 -0.0002180902584 -6.002401926e-06 -0.0005486307191 0.001710330277 -8.012579422e-11 -3.836641423e-06 -4.83903662e-05 -6.799163307e-07 -0.0002269653891 -1.069355387e-08 1.99534724e-07 -7.379845079e-06 -1.714174967e-05 -8.345208005e-07 -2.269152495e-09 -6.139230041e-09 2.069130911e-09 1.161515487e-06 4.724681869e-05 -2.367989516e-10 -5.426559099e-07 1.678245545e-06 2.904191299e-05 -3.21999824e-05 -3.854854129e-08 -7.680128386e-07 2.331052269e-05 1.955101669e-05 2.969642796e-07 -1.775454332e-08 -1.858657771e-07 1.141847439e-05 4.780481679e-07 7.23402688e-06 -4.645274426e-08 -2.879332569e-07 -2.960960409e-07 1.1452873e-05 1.433667374e-06 -4.330175797e-08 -2.963406998e-07 5.144210215e-06 1.295091149e-05 1.257958044e-06 -1.672307619e-08 -1.932152114e-07 1.234506887e-05 5.254742876e-07 3.448409215e-07 --0.0340004526 0.002506633008 0.005685728861 0.0002918431373 0.0004659891876 -0.0001214089154 1.890373931e-05 2.591681778e-05 -1.923921071e-05 1.28979605e-05 5.734561942e-06 -4.384293514e-08 4.856399028e-06 0.140867462 0.003382134303 0.03615613779 9.598550036e-05 0.008757312642 -0.00134165043 -2.712502243e-07 -0.00244415173 0.004205014175 1.480215854e-06 0.0002471061128 0.002336435703 -0.0001343463908 -3.203188961e-07 -0.0001497836076 1.652804876e-05 -1.385836343e-05 -1.221785959e-06 1.567672496e-05 2.166418749e-06 7.164012297e-05 8.289343774e-09 1.728607694e-05 -8.216813852e-06 1.103440666e-05 2.180816394e-05 5.973803405e-08 1.766628547e-05 1.665375321e-07 2.499122157e-05 1.650662571e-05 1.598670707e-07 -1.235307028e-06 1.664829557e-05 3.980604775e-07 3.009584196e-06 1.216044361e-05 7.402827233e-08 8.994126169e-06 -0.000329918727 -0.003099977832 0.03689993729 0.1309150533 0.00131759385 -6.905440623e-05 -0.0006911574803 -0.0008890498919 0.000262913761 0.04327930206 -4.274579904e-07 -2.147980606e-05 0.0003526914177 -1.004441191e-06 -0.001678921834 -8.715080331e-05 -0.0009140122529 -4.082124421e-06 -0.0001956855216 0.001717093459 -6.664372588e-08 -3.44462619e-07 -9.350238094e-06 4.499075194e-08 -0.0002232502124 -1.023844394e-08 1.797167617e-07 -3.995950516e-05 -2.777713618e-06 -3.171228582e-07 -5.679159491e-10 -2.996142761e-07 -1.085089183e-08 -7.138449978e-06 4.611090636e-05 -8.325668403e-09 -7.292919396e-07 9.262441997e-07 3.716673397e-05 -3.743019965e-05 -1.810569468e-08 -6.932089209e-07 4.049105138e-05 7.765710848e-07 1.257955945e-06 -7.490985371e-09 -1.545524887e-07 9.764302972e-06 1.504596755e-07 5.160664798e-06 -2.595383588e-08 -3.430853727e-07 -1.055836543e-06 1.286447838e-05 9.007454998e-07 -2.134094498e-08 -3.065790114e-07 1.298257094e-05 4.976495714e-07 6.070566886e-06 -8.568238382e-09 -1.876223487e-07 1.170498525e-05 -7.278459531e-09 1.401227171e-08 -0 0 0 0 0 0 0 0 0 0 0 0 0 -0.02382387374 0.00324622331 0.02580902879 0.02476437007 0.002350210378 -0.02349750896 0.007730911232 0.0008991013958 -0.007205833271 0.0005086882438 7.245901836e-05 -0.0004611115965 1.855111421e-06 -8.329018398e-06 -1.792124447e-05 0.0005060770889 -4.221096898e-05 -0.0005228076777 4.777176678e-05 -6.589063365e-06 -5.076660106e-05 -1.777025584e-06 -4.129273778e-06 2.088498994e-07 0.0001517317237 -0.0001404315838 -4.610608996e-06 -4.090984122e-06 -6.524986626e-07 3.937846094e-06 -9.213637726e-07 2.907378046e-07 2.787818263e-06 1.490666776e-07 5.386196408e-06 -6.215419728e-06 -3.194418588e-06 4.350470165e-07 3.209048417e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.002676733398 0.004884092499 0.002316878186 0.000537169852 -8.336880082e-06 -4.933089298e-05 -3.739883502e-05 -4.075265716e-06 5.435070948e-07 2.439683709e-06 4.507305947e-07 2.595190234e-07 -3.661227982e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.09594540763 0.01685534728 0.01221939591 0.0001217713775 0.00168626799 -0.0003715984529 2.016048171e-05 0.0001037620236 -3.419200244e-05 1.543278856e-05 2.890457769e-05 3.908052489e-06 9.032492139e-06 -0.04139967265 -0.0001071120687 0.1064159904 -7.564639645e-06 -0.00147056682 -0.01365156094 4.809842108e-06 0.0006179004767 0.01360047549 -2.539470068e-06 -0.0001809472463 0.004137458164 4.578396791e-05 -6.335886743e-10 0.0005319568184 -3.827815903e-05 -9.162144023e-07 -0.0002920650162 -5.259158216e-06 -3.43579252e-08 0.0001434552982 -7.344891081e-09 -6.87926436e-06 8.872281177e-05 -4.880095849e-05 -7.591102382e-06 1.108716063e-10 -3.255969023e-06 3.836408004e-08 7.609258069e-05 -2.161253734e-06 5.898399113e-08 3.259573114e-05 -2.838206515e-06 1.990259575e-07 1.080666657e-05 -3.070401971e-06 -2.405674908e-10 3.037967201e-05 2.438069465e-06 0.001268775277 0.09276486369 -0.05005999406 -0.0002679814963 1.825876749e-05 0.0001449118056 0.002375877549 -7.482878349e-05 -0.01061633342 1.969650425e-07 2.880578671e-05 1.786156495e-06 0.0008319721765 0.002431839318 6.487236194e-08 1.742034933e-06 -2.177110436e-06 -1.495605969e-05 0.004588508829 8.747027441e-08 8.579676001e-06 4.039018546e-05 2.087191292e-07 -0.0005768677847 1.609275759e-09 1.194367452e-07 -6.071058123e-06 -3.134049404e-06 -3.07206248e-08 7.734330008e-09 1.039954e-07 -3.822620337e-07 -4.69161947e-06 0.0001217598484 8.086371054e-10 8.531275214e-08 4.355111772e-07 1.147404924e-05 -6.228173985e-05 4.893001752e-10 3.807616907e-07 6.213634987e-06 -1.266084599e-05 -3.38288228e-08 6.439546283e-10 1.686980873e-07 -1.098178259e-07 1.018656067e-07 3.460967119e-05 4.943849414e-09 1.042529017e-07 5.363968971e-06 -4.203882146e-06 -1.308796025e-07 3.66891902e-10 1.34326079e-07 9.819399448e-06 -4.776428157e-06 -1.610198287e-07 2.365388601e-10 1.114506653e-07 1.017371085e-06 1.713573311e-07 1.046389283e-05 -0.04586155795 -0.004839693972 -0.007054391976 -0.0002456013128 -0.0007100223794 0.0001729086054 -2.049133284e-05 -4.247413555e-05 2.448600612e-05 -1.425581202e-05 -1.010358625e-05 -1.416563226e-07 -5.808762619e-06 -0.002752137801 0.03174167716 -0.06048255824 0.001092295294 -0.0005482081269 0.008407654959 4.909275513e-05 -0.0004870870493 -0.00598302465 5.639870813e-05 4.353829945e-05 -0.00274084698 -1.448531027e-05 -8.37881675e-06 7.235442089e-05 2.220861542e-05 3.224991314e-05 3.419394543e-05 -3.250867955e-06 6.61454708e-06 -8.680683093e-05 7.286792858e-07 2.678108135e-06 -5.413192189e-06 1.126122449e-05 2.565480012e-06 1.594265468e-06 -6.8493613e-07 2.815603995e-06 -3.803510468e-05 -6.709381245e-07 4.060058873e-06 -1.003402687e-05 -4.619680018e-07 5.167564356e-06 -9.870099149e-06 2.048419828e-07 1.690579451e-06 -1.501782619e-05 0.001184745374 -0.002123384159 -0.04377343659 0.006703449333 0.02255991757 0.0001859276217 -0.0003029867998 -0.003899716021 0.00666708211 0.001697113537 1.424232279e-05 -3.059000492e-05 -0.0001554300075 -2.145704782e-05 -0.0007897844472 0.0001166654461 -0.0002284062205 -2.52524643e-05 3.731528427e-05 -0.002325414187 -7.56732725e-08 -9.320751764e-07 -9.734909274e-06 -7.798033806e-06 0.0003048234843 -1.692755686e-07 2.874895358e-07 2.196546496e-06 2.079470646e-07 -3.868547127e-06 4.311110035e-09 -5.802227538e-09 -1.602482233e-07 1.624192346e-06 -6.37000234e-05 -1.76118451e-08 -1.118511268e-07 3.867239658e-06 -1.051687814e-05 5.289593726e-05 1.941685676e-07 -4.555961257e-07 -1.558484757e-05 5.541301019e-06 3.143764958e-06 7.079597145e-08 -1.43118435e-07 -1.724272959e-06 1.545722917e-06 -1.101913388e-05 1.064921494e-07 -1.918853432e-07 1.004890409e-06 -1.753968296e-06 3.993742259e-06 1.071592178e-07 -2.028453255e-07 -6.388582037e-06 -1.700286146e-06 4.151657549e-06 6.097500839e-08 -1.278576303e-07 -2.297807531e-06 7.814144865e-07 -2.335940853e-06 -0.04538818136 -0.003346176443 -0.007590042865 -0.0003895897915 -0.0006220623591 0.0001620722504 -2.523514489e-05 -3.459710491e-05 2.568297531e-05 -1.721785816e-05 -7.655231548e-06 5.852719416e-08 -6.482946637e-06 0.006057391377 0.02326534052 -0.06261959785 0.000703187845 -2.774862046e-05 0.008567025331 -5.266355105e-05 -0.000427608147 -0.005611242343 2.621725911e-05 6.735657144e-05 -0.003102723723 -4.053606805e-06 -6.977845057e-06 0.0002232244508 5.339760045e-05 8.160169939e-06 -3.12308009e-06 -2.480859129e-06 5.686240176e-06 -9.601175452e-05 4.008806647e-07 1.684931513e-06 1.781440226e-05 1.323081719e-06 2.868231418e-06 1.122057158e-06 -8.097701327e-10 1.613056714e-06 -3.614446532e-05 6.461510257e-07 3.399236264e-06 -6.855315907e-06 1.571776366e-07 3.051485075e-06 -1.016680807e-05 6.240896737e-07 1.007283366e-06 -1.41339149e-05 0.0009779732835 -0.001889107376 -0.04322158641 0.01532583036 0.01422247242 0.0001499493704 -0.0002898859478 -0.004209804909 0.004024031988 0.004369431309 6.736142257e-06 -1.632602062e-05 -0.000198312234 -0.0001372997837 -0.0003459160666 0.0002160318138 -0.0003830941333 -2.089962045e-05 1.536672122e-05 -0.002315435844 1.082711525e-07 -2.108587285e-07 -1.058179354e-05 -1.432411629e-06 0.0002976143174 -1.700203973e-07 3.61257147e-07 7.602292768e-06 -1.274335255e-06 -2.733637831e-06 9.611426173e-09 -5.024945907e-08 1.47501014e-07 3.73526161e-07 -6.168844993e-05 6.984667183e-08 -2.397848155e-07 3.851626902e-06 -8.584926692e-06 5.86161684e-05 1.336282226e-07 -3.634364929e-07 -6.142912504e-06 2.133223166e-06 -7.752959791e-06 4.291456431e-08 -1.002695869e-07 -1.336339744e-06 8.217478905e-07 -7.931290261e-06 8.883172298e-08 -1.709435249e-07 1.54668176e-06 -7.720855498e-07 3.417250983e-06 7.970132837e-08 -1.682276705e-07 2.82484264e-07 2.600760365e-06 -7.93452495e-06 4.422006311e-08 -1.051683854e-07 -3.104852228e-06 -2.568324415e-07 3.931350055e-07 -0 0 0 0 0 0 0 0 0 0 0 0 0 0.01359971614 -0.017716024 0.004870577299 0.002945054874 -0.02258970716 0.02016616809 0.001170152392 -0.006268732172 0.005303920493 9.361718399e-05 -0.0004034949895 0.0003271847613 3.30075815e-06 4.682448629e-06 -1.150054311e-05 -0.0005385318149 0.0005849047437 -5.487122752e-05 -3.959664539e-05 4.592455127e-05 -7.709729292e-06 -9.850949068e-06 8.933081828e-06 9.639884054e-08 -3.893088897e-07 -2.898139548e-05 3.033521284e-05 -7.868878997e-07 3.528113982e-06 -2.857384213e-06 -1.778304806e-06 -1.507787295e-07 2.240111358e-06 -1.861720417e-06 4.827988431e-07 1.280855379e-06 2.880021248e-06 -3.298432616e-06 4.832465758e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.000385936183 0.0007041971451 0.0003340516185 7.745010486e-05 -1.202026201e-06 -7.112615906e-06 -5.392230564e-06 -5.875790607e-07 7.83638198e-08 3.517579373e-07 6.498713897e-08 3.741791447e-08 -5.278823635e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2.711187742e-05 -4.762918002e-06 -3.452909025e-06 -3.44096788e-08 -4.764990026e-07 1.050048351e-07 -5.696869943e-09 -2.932066614e-08 9.6618421e-09 -4.360936931e-09 -8.167742329e-09 -1.104322162e-09 -2.552366243e-09 0.007257075326 -0.00775669315 0.0008820567467 -0.0005376917684 0.0006892036474 -0.0001249373536 -0.0001782224334 0.0001723473016 -4.067238072e-06 -3.766408681e-05 4.153245708e-05 -3.71468382e-06 1.035602473e-07 -3.342057471e-07 -2.880445452e-07 5.54998959e-06 -7.576523029e-06 2.300138342e-06 3.472586714e-06 -3.64970736e-06 2.042980081e-07 -5.464594946e-07 6.187027919e-07 -3.72896613e-08 1.421886134e-07 -1.249132704e-07 9.812740221e-08 1.397713984e-06 -1.761449192e-06 4.05421321e-07 1.23992897e-06 -1.733766292e-06 5.222040726e-07 8.476309401e-07 -2.913339955e-06 2.103212169e-06 7.250227525e-07 -8.472328234e-07 1.511920896e-07 0.0001435781373 -7.762534933e-05 -0.0005916976498 0.01052483806 -0.009564863396 -0.0001364701737 0.0001302308261 0.0005619413886 -0.003395887398 0.002939769287 -1.201777308e-05 1.648781647e-05 0.0001220231649 -0.0001348598248 -1.281142642e-06 -1.594769504e-06 2.323262747e-06 2.737533223e-05 -2.949224832e-05 -7.04567521e-07 -2.637975156e-06 2.259030916e-06 -9.405775857e-06 9.297350576e-06 1.790695927e-07 -6.153627893e-08 6.559704687e-08 -1.434964197e-07 1.462804549e-06 -1.280408409e-06 -9.09217631e-08 9.556296623e-08 3.515197666e-06 -3.49378232e-06 -1.649427856e-08 2.996073367e-08 -2.382764523e-08 -1.57670999e-06 1.824256484e-06 -1.801953154e-07 -4.940073015e-08 7.833251589e-08 -1.109997048e-07 2.101839492e-06 -1.896898824e-06 -3.76208908e-08 4.346725108e-08 1.282254904e-06 -1.446352957e-06 1.937321785e-07 -7.273265078e-08 8.01089118e-08 -3.096881613e-07 2.043451263e-06 -1.703170407e-06 -2.484061019e-08 3.251487553e-08 -1.689265051e-07 2.627183771e-06 -2.421401037e-06 -1.825737871e-08 2.337547759e-08 7.299784594e-07 -1.165061301e-06 4.606385148e-07 -0.08216582772 -0.008670823211 -0.01263868873 -0.0004400207071 -0.001272080128 0.0003097840395 -3.67123883e-05 -7.609690251e-05 4.386926765e-05 -2.554079379e-05 -1.810164252e-05 -2.537922723e-07 -1.04070121e-05 0.05406913365 -0.01544134365 -0.09987102253 -0.0005846010479 0.002530639196 0.0137035689 -2.835189971e-05 -0.000676714437 -0.01071690538 -2.125415994e-05 0.0001956208728 -0.004918751761 -3.688225203e-05 4.65315841e-06 0.0001251172427 5.368434069e-05 4.737498372e-06 9.874628323e-05 7.933428059e-06 -3.305866694e-06 -0.0001548078823 -3.925877985e-07 6.159716503e-06 -1.007011437e-05 1.923770493e-05 8.075963382e-06 -8.584097026e-07 3.500401098e-06 -1.829243437e-06 -6.659289825e-05 3.548358501e-06 -2.956926887e-06 -1.291164849e-05 3.773027959e-06 -4.185208915e-06 -9.307853249e-06 3.143231215e-06 -9.801920416e-07 -2.60662176e-05 -0.0009246301404 -0.0002012475186 -0.07775321002 0.05718884663 -0.01097070683 -0.0001745441886 -2.24116091e-05 -0.003999105048 -0.003501358049 0.0141586032 -8.691467248e-06 -1.935888549e-06 8.410934987e-05 -0.0003584038356 -0.001401587235 -9.858200848e-05 7.414438019e-05 1.717156218e-05 -0.0001503076036 -0.004157318 4.253129441e-08 -1.365635722e-06 -3.316596629e-05 3.050844998e-06 0.0005464931284 9.041213991e-08 -7.867488236e-08 5.747366763e-06 -8.983455123e-06 1.644742861e-06 -3.351954548e-09 -2.070253393e-09 1.916176662e-07 2.355760211e-06 -0.0001141188932 9.800025013e-09 -1.706385229e-07 -3.662117398e-06 -7.401469858e-06 9.282517096e-05 -1.248755793e-07 -1.98069347e-07 -2.843872377e-05 1.617245688e-05 -1.418171274e-06 -4.717149222e-08 -6.039348444e-08 6.535166496e-08 -1.436762213e-06 -1.904841252e-05 -7.870419242e-08 -4.518500185e-09 1.255004733e-06 5.686934599e-06 -1.662529865e-06 -7.801509159e-08 -3.984222088e-08 -1.234734602e-05 6.219832849e-06 -1.489260361e-06 -4.120639509e-08 -4.566701181e-08 -2.144076599e-06 -3.036402311e-06 -2.075335266e-06 --0.08134389216 0.005996957965 0.01360273996 0.0006982159021 0.001114849107 -0.0002904630075 4.52259783e-05 6.200431669e-05 -4.602857202e-05 3.085753947e-05 1.371956996e-05 -1.048913975e-07 1.161862177e-05 -0.05188062748 0.01193391624 0.1054275909 0.0003847698094 -0.002218271705 -0.01419149699 -2.937247668e-05 0.0007892666602 0.01005252734 1.146977768e-05 -0.0001703382075 0.005564171515 1.477744213e-05 -4.177410674e-06 -0.000395576053 -9.269462918e-05 -7.394106951e-06 -2.947769363e-06 -7.35669664e-06 2.677620814e-06 0.0001717506148 2.254233966e-07 -3.63302863e-06 -3.136132598e-05 -1.015602494e-06 -7.729105684e-06 5.998127293e-07 -2.396471526e-06 1.004968133e-06 6.391286336e-05 -3.155715578e-06 2.45339584e-06 6.235984274e-06 -3.596184267e-06 2.000551848e-06 1.462033163e-05 -2.509579114e-06 5.861070914e-07 2.477340661e-05 0.000694137426 0.0005166133075 0.07585144951 -0.05259849636 0.007455454505 0.000112554707 0.0001049797578 0.005701079264 0.002202435865 -0.01369021163 3.955195518e-06 3.843906349e-06 0.0004769892999 -6.794231968e-05 0.0007520325331 0.0001570592558 7.061471361e-05 -1.03565918e-05 4.928109989e-05 0.004142070096 8.805953796e-08 -2.539347814e-08 2.138127673e-05 -3.575217848e-07 -0.0005334634071 -9.118997939e-08 -2.662777602e-08 -1.247411345e-05 5.238530442e-06 -9.269138099e-07 5.667342902e-09 2.219983946e-08 7.88923837e-08 -1.237529839e-06 0.0001105582185 4.268264001e-08 1.969029206e-07 2.840133034e-06 5.697808764e-06 -0.0001035407726 8.254816077e-08 2.423225901e-07 8.687471602e-06 6.465416501e-06 7.241196498e-06 2.729527163e-08 6.506806796e-08 9.700232956e-07 6.839767759e-07 1.381210555e-05 6.047929591e-08 2.879300335e-08 -2.60349696e-06 -5.814995334e-06 1.539752162e-06 5.359385859e-08 6.887544989e-08 -5.694637084e-06 1.267710282e-06 1.409012346e-05 2.844493026e-08 5.824461716e-08 4.907725177e-06 7.147685188e-07 6.558892945e-08 -0.3790115395 0.08856332381 0.004328369466 0.0009084699724 0.0004748210297 0.0002540610513 1.925815183e-05 2.674136537e-07 3.892850271e-05 4.350422683e-06 4.270141339e-06 8.902350187e-06 3.917947158e-06 0.199533687 0.0009229247296 0.001966082132 0.00208943361 0.00173645581 0.1094033407 0.0003297981951 0.0002163171496 0.02780471094 3.384170528e-06 2.126328259e-06 0.0004684622699 3.387813266e-10 2.157087374e-09 3.671416186e-05 0.0004995457561 2.122691145e-05 1.678893758e-05 2.305829321e-05 2.131031715e-07 2.605830154e-07 2.209003585e-05 2.528738881e-08 1.38092812e-11 3.279931932e-05 1.020052131e-05 3.521343444e-07 2.152377084e-08 1.597843309e-08 2.050448304e-06 6.13486157e-09 1.639314567e-10 1.856292047e-05 2.914419693e-08 2.515931463e-07 9.784885169e-06 3.605797801e-06 8.060339962e-08 7.61882845e-08 7.345261832e-23 1.23227006e-06 0.04407819403 0.0005561709075 0.0004901367602 1.165165995e-21 1.070147859e-06 0.05048738898 0.0005293755356 5.06688413e-05 5.525125074e-22 3.095825098e-07 0.000623050132 0.0002474225036 0.02197549485 -1.354282051e-22 3.993267698e-09 3.584290125e-05 2.56663037e-05 0.003681560476 2.329189518e-24 2.356849339e-10 7.152793545e-08 4.668130324e-06 0.0003083747009 -2.398675307e-24 6.010285485e-09 0.0001436867763 8.714015028e-08 1.2185824e-07 1.059791623e-24 4.045503136e-12 1.242209704e-06 1.459326108e-06 4.77347812e-05 -1.030139569e-24 1.038738271e-11 1.656340628e-07 3.010148885e-07 6.371463877e-05 -8.901087836e-27 1.35911689e-10 9.48607789e-07 3.19615107e-09 1.112287526e-09 5.405470577e-28 7.639941663e-12 3.073567378e-08 4.544644307e-09 2.297961652e-09 4.487446736e-25 8.121543212e-11 2.33144225e-07 2.666071426e-07 8.696419483e-06 2.839357888e-26 9.410808057e-11 1.300276499e-06 6.17792403e-10 4.957524261e-10 -6.087405466e-26 3.805777025e-11 1.49707976e-08 8.061085038e-07 1.999683596e-06 -0.4945189387 0.307421443 0.1319654046 0.03941143222 0.01673841645 0.005001509027 0.002982067969 0.0008721944031 0.0006739086684 0.0001662005827 0.000162668234 2.726728507e-05 3.849627959e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.196133944 0.001473855218 0.003111363451 3.949938519e-05 0.00066058632 0.0001386295456 1.578946936e-05 3.771268021e-05 5.920969413e-05 3.700754264e-05 2.200870706e-05 2.075350102e-05 1.961072167e-05 0.08840629323 0.0002763286464 0.2167017548 5.616190152e-06 0.0007999117945 0.003158046469 7.084671915e-06 0.0008627006185 0.002353843177 2.134169068e-06 0.0002452911372 0.0007507970054 0.0002955998964 2.178128921e-09 0.0007270505305 2.96807978e-05 3.731274748e-07 5.672824671e-05 6.312801471e-06 1.696356487e-07 1.61464403e-05 2.072203919e-08 2.428441935e-05 7.275206594e-05 8.819321448e-05 2.407962009e-05 2.63237684e-10 1.878935399e-05 1.085780408e-07 3.723180558e-05 1.208782969e-05 1.836149821e-07 2.211689716e-05 1.98607593e-05 4.98880876e-07 1.767015763e-05 1.191154367e-05 4.889468582e-08 2.600487559e-05 4.516389718e-06 0.003090419364 0.07702818231 0.1161182433 0.0004909709571 5.610866109e-05 0.0004907593434 0.004552031708 0.000118252944 0.01294368132 6.566660389e-07 5.415245365e-05 6.965368433e-07 0.0003660143648 0.0002426737668 2.130652814e-07 1.290582526e-05 1.480087253e-05 0.001168521117 0.000707618996 2.852694326e-07 2.221772123e-05 0.0002358638387 1.186277545e-06 0.0001450257026 1.156195728e-09 1.720220619e-08 3.62780188e-07 3.756947056e-07 4.136264047e-09 2.520669861e-08 2.59228981e-07 1.013459107e-06 1.514579872e-05 9.221628832e-06 2.465987764e-09 2.610432744e-07 4.071581276e-07 1.360885653e-05 8.472100498e-05 1.652934262e-09 9.882628783e-07 2.368015101e-05 3.327389007e-05 7.778272174e-08 2.226416119e-09 2.477242252e-07 1.755558068e-05 1.392495808e-07 6.696874888e-06 1.354532861e-08 2.519084343e-07 1.099014672e-05 1.274064947e-05 2.715552393e-07 1.329442825e-09 3.206534029e-07 9.375263957e-06 1.578684756e-05 4.035954536e-07 8.45972824e-10 2.144356585e-07 1.684127905e-05 1.336513236e-07 3.355889471e-06 -0.2065678731 0.0005207867785 0.003549245466 0.0001220796844 0.0006956805503 9.05469596e-05 9.784398332e-06 4.452214186e-05 6.01437371e-05 3.025806907e-05 1.860119171e-05 2.063639319e-05 1.919002891e-05 0.09018597439 0.005670828438 0.2120055642 2.550328447e-05 0.001180422357 0.006068511827 4.485489436e-07 0.0008069499863 0.002024578534 1.030521445e-05 0.0003653172471 0.001050627717 0.0003016971537 1.485638676e-06 0.0005669941945 1.993378979e-05 3.406150146e-06 1.433937706e-05 6.412503234e-06 1.141178532e-06 1.81851306e-05 5.063994697e-08 2.493842859e-05 8.705048061e-05 7.902383039e-05 1.815670205e-05 7.688431708e-08 1.502947415e-05 4.700904918e-07 2.868404547e-05 1.378501499e-05 1.639325252e-06 1.734962245e-05 1.812262704e-05 2.590829875e-06 1.623797671e-05 1.154400984e-05 2.812197937e-07 2.217020228e-05 0.0005656222925 0.002696053568 0.07117506849 0.1119457968 0.003592500405 0.000169959148 0.0005711726336 0.00503550934 0.0005485960643 0.01710325536 1.459066533e-06 2.168703038e-05 1.140271424e-06 0.0001137987963 0.0001440630806 8.01036384e-05 0.0002534709484 1.791476122e-05 0.001117962378 0.0007755800165 1.62530968e-09 3.40796057e-06 0.0001518674601 3.160726414e-06 8.410396132e-05 1.395780532e-08 9.291057257e-08 1.151125564e-06 8.615986757e-07 4.138009033e-08 2.224025114e-09 4.352236295e-09 3.308815586e-07 2.556725887e-05 1.342907797e-05 5.920410816e-10 5.201505736e-07 2.172134855e-06 4.636048809e-05 5.885042637e-05 3.539461156e-08 6.75683573e-07 2.621063622e-05 1.419064243e-05 2.631658174e-07 1.655752684e-08 1.460019515e-07 1.26110575e-05 4.883831526e-07 3.789927495e-06 4.531364954e-08 2.754741438e-07 8.610554699e-06 1.40177224e-05 1.767021631e-06 4.18877112e-08 2.847076464e-07 8.67686622e-06 1.517735779e-05 1.535320219e-06 1.57247454e-08 1.736371363e-07 1.525272244e-05 7.684537882e-07 4.912128347e-07 -0.2111385529 0.0002502589398 0.003704876918 0.0001751567328 0.0007001983574 7.20978147e-05 8.348941385e-06 4.806207519e-05 5.948432344e-05 2.74495913e-05 1.757740758e-05 2.06425939e-05 1.886039875e-05 0.0967006891 0.002976479235 0.2089199692 9.469149663e-06 0.001205550184 0.007805263802 4.051304734e-07 0.000755347838 0.001854443393 4.070244772e-06 0.0004349652018 0.001188070318 0.0002926578552 1.113343641e-06 0.0004969631396 2.273805424e-05 6.792800883e-07 7.18376795e-08 7.505183402e-06 1.081927165e-06 2.058143627e-05 1.456253699e-08 2.167688576e-05 9.640376549e-05 7.670891468e-05 1.235044528e-05 3.563923742e-08 1.403236335e-05 1.679032068e-07 2.556301234e-05 1.855515207e-05 1.126865242e-06 1.323198519e-05 1.614450969e-05 7.48785619e-07 1.959974863e-05 1.157738898e-05 1.036046096e-07 2.02446233e-05 0.0003066893945 0.00295561058 0.06694376647 0.1151087135 0.001492032818 6.708125018e-05 0.0007592633064 0.005311616319 0.0001945049208 0.01947888678 2.990219837e-07 1.234321477e-05 2.834756773e-05 7.555261667e-07 0.0001136437178 8.41421953e-05 0.001006186237 3.745786366e-06 0.0004769723257 0.0007953870116 6.557514271e-08 4.195633665e-07 0.0001175184348 8.339593658e-07 6.158207837e-05 1.380825693e-08 2.778093821e-07 4.59215268e-06 9.347426232e-08 1.902386332e-08 3.474310112e-10 3.56132436e-07 2.416904539e-08 3.100637493e-05 1.61347947e-05 6.990833564e-09 6.92084887e-07 1.168444306e-06 5.364262284e-05 5.35020569e-05 1.559065494e-08 5.737630141e-07 3.213776952e-05 7.750573237e-07 1.115441782e-06 6.623877397e-09 1.188907858e-07 1.168543993e-05 1.727075178e-07 2.885402029e-06 2.460059494e-08 3.288474242e-07 8.002297175e-06 1.560134047e-05 1.17001033e-06 1.998087749e-08 2.904619098e-07 1.590068046e-05 6.870764268e-07 8.420250094e-06 7.714360398e-09 1.664352882e-07 1.504206714e-05 3.512215235e-08 2.011211071e-08 -0.3534924927 0.05838670372 -0.000538126004 0.001561356431 0.0001976093014 4.240723937e-05 5.179713067e-05 1.128042835e-06 1.672026897e-05 1.013680007e-05 6.045186806e-06 8.297709321e-06 6.068813152e-06 -0.0506509441 -0.00296625124 -0.02155785633 -0.01330802711 -0.001700873897 -0.01803865139 -0.001610316462 -0.0002189839261 -0.003259590432 5.921322785e-05 9.282251115e-06 0.0001729978027 1.743638445e-07 -7.889484246e-07 -4.029691366e-05 -4.355552771e-05 -8.669223173e-06 -5.856775761e-05 1.031716611e-05 7.621542104e-07 4.943387347e-06 -8.168403033e-07 -3.571361351e-08 1.753806459e-09 -2.81190707e-05 1.354904141e-05 4.44038543e-07 -7.61221376e-07 -1.36817448e-07 -1.678375648e-06 8.288911152e-08 -2.660819979e-08 -3.558044257e-06 3.716671183e-08 1.602483435e-06 -5.436459261e-06 -1.185982289e-06 -1.768255403e-07 -9.896258803e-07 -1.132894929e-20 9.962834418e-07 -0.01371697239 -0.0009721005899 -0.006208902546 3.201965033e-20 9.145378983e-07 -0.01689273382 -0.00075446877 -0.001705329723 -1.277752729e-21 2.881034802e-07 -0.003007584664 -0.000332778319 -0.002997857682 -8.444160207e-24 5.714440598e-09 -5.48007518e-05 -9.10118271e-06 -0.0001344767524 -4.298394147e-23 2.950715688e-10 4.837151157e-07 -2.307573919e-05 9.505373204e-05 -2.153913489e-23 4.599916804e-09 -8.693301232e-05 5.196810229e-06 1.777827754e-06 -1.463156768e-24 1.44767563e-11 4.734972525e-07 1.006098705e-07 4.789783959e-07 -2.262427283e-24 -8.126371797e-12 3.388349229e-07 1.619007484e-07 1.985368389e-06 -1.956771575e-24 7.223058467e-11 -1.678690286e-06 -9.063786903e-08 -1.806660208e-07 -1.721375955e-25 8.704924429e-13 2.424564269e-08 1.897310311e-08 1.138832352e-07 3.653677371e-25 8.308971369e-11 -8.289949886e-07 -1.812083805e-07 -8.088583334e-07 7.140019112e-25 6.333935024e-11 -1.113296322e-06 -4.274495645e-08 4.649125044e-08 -7.684148751e-25 3.342419323e-11 1.262845748e-08 9.123431815e-07 -1.875901465e-06 -0.311435306 -0.02128602119 -0.02026307816 -0.0012476888 0.003325232161 -0.0008326805652 0.0002169914073 -0.0001813636915 0.0001997546648 -7.84262402e-05 5.983408319e-05 -2.37884768e-05 2.74761683e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.311435306 -0.02128602119 -0.02026307816 -0.0012476888 0.003325232161 -0.0008326805652 0.0002169914073 -0.0001813636915 0.0001997546648 -7.84262402e-05 5.983408319e-05 -2.37884768e-05 2.74761683e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.1861112921 0.001771897957 0.00236768835 -4.575757927e-05 0.0005527036846 0.0001578051115 2.491053696e-05 3.836413992e-05 5.326417556e-05 3.947845851e-05 2.630192811e-05 2.258469979e-05 2.013624449e-05 -0.02455630845 -0.0222907551 0.2051335106 -3.755079734e-06 -1.152655363e-05 6.974514397e-05 1.939484009e-05 -0.000485710653 0.002060219021 -2.606982025e-05 -5.806090286e-05 0.0003691038375 -0.0001196872099 -2.128375356e-05 0.0006634864297 -9.738870635e-07 -7.369292749e-06 6.728252559e-05 -1.329802856e-06 -4.48244808e-06 2.529898437e-05 -1.007307303e-06 -1.323981944e-05 6.076310669e-05 7.358652311e-05 -1.562970113e-05 -1.647711628e-06 -6.01734103e-06 -3.418777224e-06 4.300158255e-05 -1.931458728e-06 -3.900683906e-06 2.847846399e-05 -8.820013e-07 -3.3757512e-06 2.604467797e-05 -3.795494449e-06 -1.813368076e-06 2.570740775e-05 0.0009654483062 -0.003140535308 0.05597473488 -0.04790848161 -0.02252460552 0.0001290851397 -0.0004062853999 0.003162022725 -0.00137424189 -0.002510411832 1.347039422e-05 -5.113517351e-05 -3.340784078e-05 -0.0001842534268 0.0001963002602 8.938093295e-05 -0.0002648024865 -6.275918285e-05 -0.0002439231221 0.0003690493067 -7.436067528e-08 -2.448056276e-06 -0.000114185691 -4.178233387e-05 0.0001214724206 -1.699765577e-07 5.750319347e-07 -3.81950876e-06 2.879049484e-06 1.787499511e-06 3.525384739e-09 -9.444361376e-09 1.832991976e-06 -1.191392028e-05 7.745395542e-06 -1.738216923e-08 -3.13332194e-07 -9.88422275e-06 -1.664319311e-05 2.025153318e-05 1.787541735e-07 -7.81755529e-07 1.559819265e-05 -1.605849639e-05 -4.052304127e-06 6.391443009e-08 -2.371612657e-07 -6.897797488e-06 -4.294569834e-06 8.665092493e-06 9.022515134e-08 -2.984942582e-07 7.535782806e-06 -3.03331414e-06 -6.66192086e-06 9.168500673e-08 -3.103992681e-07 6.896053873e-06 -3.159604364e-06 -5.75739148e-06 5.460552531e-08 -2.080435422e-07 -3.514070053e-06 -1.835100714e-06 3.587344569e-06 -0.1910368616 0.001121457273 0.002632250934 -3.451241119e-05 0.0005842510882 0.0001351458436 2.054193437e-05 3.926021534e-05 5.428055436e-05 3.696509943e-05 2.44907136e-05 2.198723519e-05 1.968838606e-05 -0.03143609781 -0.01617452344 0.2031890257 -2.275935204e-05 -0.0001573683928 0.0007891359433 -1.950810773e-05 -0.0004508735659 0.001993690719 -1.93791357e-05 -9.359405304e-05 0.0004734127528 -0.0001162583909 -1.869627421e-05 0.0006255142783 3.042364103e-05 8.039692198e-06 3.202963128e-06 -1.657452984e-06 -3.944186751e-06 2.357137928e-05 -5.513176507e-07 -1.474743328e-05 6.267051938e-05 6.979938498e-05 -1.538301416e-05 -1.154208836e-06 -6.689702323e-06 -2.003629567e-06 3.881623711e-05 -6.183828141e-07 -2.614746663e-06 2.419006505e-05 -2.650194974e-06 -2.627257125e-06 2.586198812e-05 -4.232594724e-06 -1.099055893e-06 2.424322767e-05 0.0008489905705 -0.003039456925 0.05306628392 -0.05696150556 -0.01409953439 0.0001255074139 -0.0004552035198 0.003495342505 -0.0009346254704 -0.003699222705 6.484052241e-06 -3.223033389e-05 0.0001206205197 -2.385732835e-05 -0.0001223230567 0.0001847355482 -0.0005992043246 -2.232012801e-06 -0.0001441902628 0.0004028389488 8.541014337e-08 -2.722288058e-07 -0.0001141525735 -2.037802471e-05 9.685093203e-05 -1.7029436e-07 7.644204606e-07 -7.809321748e-07 1.093777413e-06 1.001056582e-06 9.232259203e-09 -9.728280748e-08 4.921689912e-07 -1.103690589e-05 7.656734129e-06 6.594680088e-08 -5.158199384e-07 -7.368822992e-06 -2.214783482e-05 2.135689435e-05 1.254841676e-07 -6.870308054e-07 -1.045235768e-05 -3.372869869e-06 8.736948299e-06 3.969344116e-08 -1.811356376e-07 -7.279822556e-06 -2.37610748e-06 6.896484293e-06 7.911593911e-08 -2.974271332e-07 7.048897165e-06 -4.586925473e-06 -5.03812451e-06 7.149470675e-08 -2.830639111e-07 -5.807840048e-06 -3.578192155e-06 6.927122121e-06 4.065645851e-08 -1.849776376e-07 -1.760497717e-06 4.186326767e-07 -7.001304264e-07 -0.3602043711 0.06593937792 0.0005115658487 0.001491413894 0.0003042300529 9.211316764e-05 4.904298905e-05 4.776543496e-07 2.224253341e-05 9.427819716e-06 4.774683111e-06 8.819647603e-06 5.965467925e-06 -0.07471313703 -0.01124861083 0.01262910365 0.007264752216 -0.01048578692 -0.03129988612 0.001110305994 -0.001280732653 -0.006047013313 -2.350948608e-05 2.419986245e-05 0.0001579374858 -3.534909916e-07 -1.505078263e-10 -4.007758662e-05 -0.0001051645109 -7.091527433e-05 3.622199441e-05 9.834728847e-06 2.330319756e-06 -1.808996765e-06 -4.710724062e-07 -2.9007665e-08 -9.242498959e-10 -2.592471006e-06 -1.708312134e-05 3.205201678e-06 3.750809296e-07 -4.217580339e-07 -2.062418238e-06 -1.792223945e-07 1.026757123e-09 -3.23237034e-06 4.923402027e-07 -1.102898414e-06 -3.328327301e-06 -1.738473904e-06 -7.047845908e-07 4.558534737e-07 -3.49706801e-20 1.046950515e-06 -0.01771613212 -0.005026731511 0.003227506595 1.403964855e-20 9.460027394e-07 -0.01555942007 -0.004533054162 0.0009796933227 1.253603863e-21 2.894646371e-07 0.001810649324 -0.001613840832 -0.007065662551 7.68469926e-22 4.23077685e-09 8.054558918e-05 -8.732058787e-05 -0.0004735112234 3.266494739e-23 3.578541156e-10 1.287814915e-06 8.994598339e-06 2.907039742e-05 -4.060251388e-23 4.700859072e-09 -7.530129947e-05 -1.429666074e-06 -6.616378113e-06 -1.538755811e-23 2.471771246e-12 1.746111477e-06 -2.689196161e-06 -5.908892093e-06 -9.66932666e-25 2.535684172e-11 2.201250028e-07 -2.719313956e-07 -2.054411596e-06 -2.805982902e-24 7.572718855e-11 -1.770309339e-06 -2.133801057e-07 1.254011948e-07 -4.636627392e-26 3.057633175e-13 2.878083577e-08 6.053605155e-08 -2.220884822e-08 2.682469487e-24 7.91655534e-11 6.008801437e-07 -8.985023203e-07 -2.004207714e-06 3.621058451e-24 6.517755859e-11 -1.05809547e-06 -2.479377187e-08 -5.847476904e-08 -2.17354617e-24 3.616360084e-11 1.271097779e-07 -8.568623775e-07 -7.195632397e-08 -0.3196118355 -0.01265310329 -0.0216420335 -0.0021934756 0.003412417145 -0.0006729572318 0.0001708149316 -0.000197058273 0.0002013240815 -7.091479895e-05 5.500748136e-05 -2.372126506e-05 2.717985869e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.1813500653 0.002980822694 0.002216827458 -2.6027743e-05 0.0005385824738 0.0001952594359 3.164461339e-05 3.530865228e-05 5.284895607e-05 4.366009797e-05 2.860977662e-05 2.264869119e-05 2.035576596e-05 -0.03744130944 -0.004505280987 0.2099864085 -1.530386271e-06 -9.805621988e-06 5.418817645e-05 7.036885815e-05 -0.0005329616282 0.002275238515 -1.092195962e-05 -5.515177647e-05 0.0003201961872 -0.0001503116928 7.694416326e-07 0.0007533278969 -1.678763914e-05 -5.416302513e-06 0.0001175477344 -3.371076734e-06 -1.561774517e-06 2.440884667e-05 -6.015528153e-07 -1.147370209e-05 5.822334803e-05 8.206622173e-05 -1.766408159e-05 8.580222595e-08 -7.783456792e-06 -1.554875493e-06 4.966403392e-05 -4.104682358e-06 -1.554385876e-06 3.03855412e-05 -9.493973767e-07 -1.849007028e-06 2.635788307e-05 -4.722905594e-06 -7.183679729e-07 2.808100163e-05 -0.0001242123779 -0.001862595692 0.06405252492 -0.05966458784 -0.007758357704 8.62596407e-05 -0.000302585812 0.003096308345 -0.0006209653867 -0.002537623108 9.778929394e-06 -6.346887587e-05 -2.443788287e-05 -0.0002917019475 0.0003411669483 1.237633443e-06 -4.847399189e-06 -8.636113159e-05 -0.0003343611852 0.0003913797893 2.078007225e-06 -1.616555237e-05 -0.0001568107243 -2.351217146e-05 0.0001792786594 4.919875884e-08 -2.376023678e-07 2.800785349e-06 -2.334510479e-06 -5.13032115e-07 6.430587415e-08 -2.373400437e-07 2.732422129e-06 -1.027073643e-05 7.112738173e-06 -2.639204141e-08 -1.537440146e-07 -4.150811525e-06 -1.332184742e-05 1.56499527e-05 4.069426793e-08 -6.099601572e-07 2.311229493e-05 -2.243773373e-05 -2.022592881e-06 3.056877927e-08 -2.751585112e-07 -1.024002622e-05 -2.206628007e-06 1.166378519e-05 5.340393251e-08 -2.302571958e-07 8.682071814e-06 -6.806017804e-06 -2.44174871e-06 2.027388278e-08 -2.25134676e-07 8.281447889e-06 -6.081861081e-06 -2.705929142e-06 1.49525807e-08 -1.795508238e-07 -5.859992795e-06 -1.444417991e-06 6.796681429e-06 -0.3196118355 -0.01265310329 -0.0216420335 -0.0021934756 0.003412417145 -0.0006729572318 0.0001708149316 -0.000197058273 0.0002013240815 -7.091479895e-05 5.500748136e-05 -2.372126506e-05 2.717985869e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.1948719308 0.0009721699201 0.002896602643 -3.239172573e-06 0.0006202660647 0.0001260620019 1.739602056e-05 3.930232176e-05 5.610816838e-05 3.579002228e-05 2.297197587e-05 2.136643603e-05 1.945660554e-05 -0.05724810196 0.01390074063 0.2046339776 3.559005716e-05 -0.0004865807428 0.001847397795 1.836008217e-05 -0.0004880766155 0.002058209654 2.019393908e-05 -0.0001612323672 0.0006033961998 -0.0001406887253 1.779046481e-05 0.0006280570724 2.788810643e-05 1.049216012e-05 -1.025018689e-06 -6.80493942e-06 2.170312822e-06 2.066369383e-05 5.098795978e-07 -1.669431834e-05 6.67904126e-05 7.255452073e-05 -1.828253871e-05 9.600237235e-07 -9.073900768e-06 1.771789862e-06 3.674050513e-05 -2.506745394e-06 4.59122265e-06 1.801448269e-05 -5.394655104e-06 3.081492134e-06 2.290703861e-05 -5.732791831e-06 1.024639361e-06 2.402095424e-05 -0.001166009958 -0.0008268717715 0.05555285569 -0.0808502287 0.01210411961 -0.0001891024722 -0.000141021738 0.003963907056 0.001026575088 -0.0059508826 -6.644162902e-06 -1.264435374e-05 0.0001013744647 2.232378558e-05 -0.0001399545546 -0.0002638703086 -0.0001244721321 2.707890234e-07 -0.0002443369388 0.000497624983 -1.479562029e-07 4.816347702e-08 -0.0001426867035 1.665138022e-05 9.928159229e-05 1.531764236e-07 2.952311652e-07 -4.175660728e-07 1.431204267e-06 -4.461348386e-07 -9.519616551e-09 -4.983625251e-08 -4.846590857e-07 -9.798374321e-06 8.12916141e-06 -7.170132432e-08 -3.55481621e-07 6.019174458e-06 -3.983845836e-05 2.722529699e-05 -1.386713338e-07 -3.882891249e-07 -1.298492545e-05 7.433086588e-06 1.964629858e-06 -4.585202845e-08 -9.610779197e-08 -9.729978896e-06 2.012424932e-06 5.879828989e-06 -1.016063863e-07 -8.438071818e-08 7.364053811e-06 -1.252698515e-05 3.338664826e-06 -9.003574996e-08 -1.063444398e-07 -1.17276046e-05 2.723128386e-06 7.211046479e-06 -4.778417574e-08 -8.752009253e-08 -2.652087486e-06 7.992027518e-07 4.07706385e-07 -0.3637359021 0.0700232606 0.001127258787 0.001428682097 0.0003538882964 0.0001215062951 4.595407234e-05 2.220261721e-07 2.574581689e-05 8.766728567e-06 4.248650953e-06 9.103454128e-06 5.761747921e-06 -0.09261772873 0.01283814802 0.005845415799 0.00459061481 0.01079932409 -0.05141288724 0.0006674041828 0.001528836695 -0.009170238934 -7.779765744e-06 -1.909981372e-05 0.0001378816079 1.720899617e-07 7.186667344e-07 -4.010866162e-05 -0.0002532622988 7.090110074e-05 2.563084193e-05 9.489299525e-06 -1.695505021e-06 -6.666754504e-07 -1.009463753e-06 8.608281749e-08 -1.705473716e-10 -2.751799369e-06 -1.061036906e-05 -4.294042932e-06 1.489353134e-07 4.141470384e-07 -2.420588996e-06 1.023935282e-07 2.600839044e-08 -3.860781581e-06 -5.665972806e-07 -8.360400781e-07 -2.661059788e-06 -2.673702408e-06 6.418859205e-07 2.193408353e-07 9.952955141e-20 1.075710766e-06 -0.02533616437 0.005051603997 0.001949484274 -6.080977597e-20 9.644849478e-07 -0.02381095117 0.004668657094 0.0006671788848 -1.590980217e-20 2.913728318e-07 0.0009719562298 0.001827778882 -0.009747243213 -4.073421728e-22 4.036397421e-09 5.323167169e-05 0.0001320365158 -0.0008030200969 2.625367667e-24 5.092021046e-10 -6.820942519e-07 2.439776241e-06 1.533462776e-05 -1.125241858e-22 4.798208294e-09 -8.06488125e-05 -4.176044426e-06 4.486823047e-06 -3.416435251e-23 3.15194717e-12 1.347609846e-06 4.257147142e-06 -1.587912552e-05 -1.716706566e-24 1.457313638e-11 1.408200001e-07 9.829390316e-07 -6.40073706e-06 5.126428141e-24 7.819570725e-11 -1.96760478e-06 2.605497553e-07 3.93818136e-08 1.818275201e-26 -1.531973543e-12 4.781231651e-08 -1.707666559e-08 -5.699025478e-09 2.406689975e-24 7.77916724e-11 3.277097911e-07 1.058644816e-06 -3.92977133e-06 1.478320767e-24 6.689223284e-11 -1.147974117e-06 6.556156534e-08 8.408130294e-09 -8.967688612e-25 3.718608173e-11 -1.453136912e-07 -5.857946455e-07 -2.111284866e-08 -0.3231284777 -0.008771257858 -0.02211143554 -0.002627389903 0.003423479474 -0.0006004980192 0.0001577881829 -0.0002047424553 0.0002002173849 -6.754360125e-05 5.347229048e-05 -2.372482861e-05 2.694541117e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.1841237389 0.002721543895 0.002412213641 -1.638917348e-05 0.0005674841995 0.0001873999811 2.824941109e-05 3.477724039e-05 5.415510722e-05 4.292092387e-05 2.74044628e-05 2.204622183e-05 2.007619797e-05 -0.04550567719 0.004282629549 0.2112482929 1.289965468e-05 -0.000136887344 0.0005674872568 -7.806055811e-05 -0.0003946302838 0.002332466496 1.136927117e-05 -9.34322617e-05 0.0003922151692 -0.0001497472916 -7.669396006e-07 0.0007633966901 -2.241279643e-05 4.953169721e-06 0.0001054434719 -5.394945216e-06 1.18159002e-06 2.160147111e-05 5.775863305e-07 -1.291097116e-05 5.951295511e-05 8.332450391e-05 -1.755277601e-05 -8.666566563e-08 -9.801493399e-06 1.47176625e-06 4.764749939e-05 -5.929758603e-06 1.484993294e-06 2.797789471e-05 -2.141837569e-06 2.72588904e-06 2.250120381e-05 -5.83966711e-06 6.863903373e-07 2.780953737e-05 0.0001166367465 -0.001990033398 0.06614146879 -0.07526775466 0.006975057864 -0.0001425697826 -8.300420285e-05 0.003372831115 0.0006748816187 -0.004061414444 -1.037948555e-05 -3.581018246e-05 2.185510087e-05 -0.0003284731458 0.0003321987123 -1.437161692e-06 -9.604693112e-07 8.208622162e-05 -0.0005547356818 0.0004475020292 -2.346623117e-06 -1.240403564e-05 -0.0001939280999 2.065742629e-05 0.0001770042901 -5.40391055e-08 -1.287642657e-07 2.456066321e-06 -2.766224803e-06 3.482860787e-07 -8.816561831e-08 -7.690128311e-08 -3.430748533e-06 -3.643215106e-06 6.81410007e-06 2.387118355e-08 -1.931431495e-07 3.040322332e-06 -2.277476793e-05 1.830961465e-05 -4.217175651e-08 -4.774430665e-07 2.342694185e-05 -2.616342142e-05 1.834969817e-06 -3.253528401e-08 -2.030666121e-07 -1.300393933e-05 1.949091919e-06 1.056488751e-05 -6.858660243e-08 -9.569051654e-08 9.213358257e-06 -1.135368808e-05 1.771035041e-06 -2.139306524e-08 -1.703181872e-07 8.604215996e-06 -1.103816319e-05 2.101010913e-06 -1.567217019e-08 -1.404168458e-07 -7.399263723e-06 1.515566526e-06 5.547080096e-06 -0.1927511184 0.001402417603 0.002835110879 -2.704222162e-06 0.0006182617919 0.0001412732983 1.883220915e-05 3.782726762e-05 5.641830489e-05 3.757635345e-05 2.36315019e-05 2.136322672e-05 1.962589421e-05 -0.05979183443 0.01779410943 0.2078473978 5.082980324e-05 -0.0004677968501 0.001707994885 -1.928583468e-05 -0.0004560882431 0.002178816849 2.905446113e-05 -0.0001589664888 0.0005755703888 -0.0001502611367 1.983637891e-05 0.0006759946098 -7.858375624e-06 1.955426838e-05 3.701243415e-05 -6.261023235e-06 2.120810002e-06 1.964190291e-05 9.147273094e-07 -1.614621043e-05 6.597788419e-05 7.751676334e-05 -1.948222393e-05 1.375446403e-06 -1.003737577e-05 2.849374471e-06 3.913555097e-05 -5.768653051e-06 4.849512452e-06 2.156731436e-05 -4.464423889e-06 6.827266661e-06 1.897166464e-05 -6.343652959e-06 1.611191432e-06 2.52497445e-05 -0.00154888526 -0.0003140997488 0.06042218686 -0.08621715227 0.01734808316 -0.0002923063989 2.909868101e-06 0.003904844512 0.00166323628 -0.006106411021 -1.455874187e-05 -9.671494935e-06 2.420917805e-05 -0.0002232862209 0.000191062553 -0.0001650987689 0.0001224360201 5.768130749e-05 -0.0006225889468 0.0005191901726 7.124841836e-08 -2.38531964e-06 -0.0001715711413 3.019131868e-05 0.000122733157 1.514568457e-07 1.2517373e-07 -2.820971194e-06 3.646098993e-06 -6.519668246e-07 -5.613948155e-09 -3.061079176e-09 -1.862303986e-06 -7.327652641e-06 7.843078907e-06 1.641696089e-08 -3.101604972e-07 7.239390879e-06 -4.089122721e-05 2.924291342e-05 -2.091688306e-07 -3.150453298e-07 1.695557392e-05 -2.243589411e-05 2.976511146e-06 -7.90135552e-08 -8.804939561e-08 -1.128731195e-05 3.213605083e-06 6.813536859e-06 -1.318168045e-07 -3.295472202e-08 8.072346629e-06 -1.280467782e-05 3.554883501e-06 -1.306679315e-07 -5.87423405e-08 8.237502742e-06 -1.271578554e-05 3.317643169e-06 -6.902106244e-08 -6.754450937e-08 -5.944282468e-06 4.25730372e-06 7.108279751e-07 -0.3231284777 -0.008771257858 -0.02211143554 -0.002627389903 0.003423479474 -0.0006004980192 0.0001577881829 -0.0002047424553 0.0002002173849 -6.754360125e-05 5.347229048e-05 -2.372482861e-05 2.694541117e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.4207438418 0.1179381261 -0.002427298276 -0.004567081607 8.501587348e-06 0.0001065592185 -0.000478871091 8.212646361e-05 -6.495415512e-05 8.739784653e-05 -2.401657676e-05 1.698585748e-05 -2.711526388e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.2839885795 -0.01241593237 -0.003023754498 0.0001010667438 0.0001360972262 -1.978718889e-05 1.390081218e-05 4.187174195e-05 -3.790660972e-06 1.971899377e-05 1.209763739e-05 7.099959594e-06 8.742596803e-06 -0.000579376296 -0.002904549622 0.2088827277 0.003701164862 0.0003168363972 0.01244127021 -7.902555153e-06 -1.73492799e-06 -0.004719068212 -2.667898206e-07 -1.45097356e-08 -6.764044359e-05 -6.259036763e-09 -1.303825326e-07 0.0001775585224 -1.582756915e-05 -7.440578853e-06 -4.139201328e-05 5.702159856e-08 1.653070817e-08 4.292771718e-05 8.807366888e-07 3.370801703e-08 1.168641439e-05 1.55795341e-08 1.366829947e-07 -5.67497027e-06 -7.839101001e-08 -1.131109543e-06 2.675417561e-05 5.183807516e-06 4.010576669e-09 1.520123084e-07 -1.038284939e-08 -8.646060011e-08 7.543027517e-06 -6.784982974e-08 -6.355998255e-07 8.836591835e-06 -6.782325836e-07 -2.568257695e-05 0.03969085997 -3.685694786e-05 0.0003133346609 1.698771416e-06 3.428647548e-05 0.0112854185 -0.001040113546 -6.796405195e-05 1.138108631e-08 -4.757579722e-06 -0.0007639447688 2.621074512e-05 2.405512604e-06 -3.533218231e-09 3.386074132e-07 8.786736651e-09 1.534780586e-07 4.060938857e-05 -2.192259166e-10 -5.214833496e-08 -5.88926303e-08 -7.238105894e-07 -3.310809219e-05 -7.206163492e-12 5.330413108e-09 1.666635218e-09 4.199270603e-08 -1.703598928e-06 1.032829256e-08 1.287643549e-06 -1.414776345e-08 2.27507154e-08 2.384957628e-05 5.285460715e-09 1.275521551e-08 -2.038878056e-05 7.621480632e-07 -6.753622787e-09 -2.834363905e-11 -3.660581601e-09 -2.441714291e-08 -3.337095765e-07 6.189592539e-06 5.277800944e-11 -4.626692738e-09 4.100479242e-06 4.847164268e-08 8.901847052e-07 -5.913155339e-13 6.276349476e-13 -5.257653508e-09 1.362984849e-10 3.85416472e-11 3.909705078e-11 -4.483489784e-10 6.409913871e-09 2.907133978e-08 2.389711046e-06 -6.606027667e-10 -3.89069989e-09 1.445391933e-06 8.559619768e-09 1.374795694e-07 -0.4202786116 0.1188430024 -0.002352844885 -0.00519749733 0.000768677171 -0.0004576628552 -7.509714242e-05 -0.0001775979408 0.0001152915961 -1.844291233e-05 3.84435434e-05 -1.378656961e-05 1.291514132e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.2494284931 -0.01876042867 -0.0002631889396 -0.0001036634017 0.0001216517768 7.51399269e-05 -9.301271229e-06 4.090320176e-05 2.149604085e-05 1.015065925e-05 1.977936499e-05 1.153259716e-05 9.149731172e-06 -0.001095170738 -0.003826615895 0.236354623 1.443695234e-05 1.412792732e-05 0.0002803797567 -7.323530738e-07 1.766721496e-06 -0.003273306204 6.737508777e-07 5.343126217e-07 9.315525223e-05 -5.718722716e-06 -3.035507165e-06 0.0003355162254 2.440310551e-07 5.937552171e-06 -7.046039318e-05 -7.888824118e-09 -1.532580711e-07 1.54324675e-05 3.089403668e-07 1.636221243e-06 5.761292824e-05 -4.084350806e-07 -2.058454142e-08 -4.341981809e-09 -2.547890253e-07 -4.510704089e-07 1.959409797e-05 -2.669391867e-07 -1.754078414e-06 2.217484989e-05 -8.502200371e-08 -1.026703926e-06 1.133527974e-05 -1.488830878e-07 -2.134842546e-07 1.111416151e-05 2.031722399e-05 -0.0001757074916 0.06161434582 0.002066933204 0.0004701044193 2.354255821e-07 3.194664781e-05 0.009484829548 -0.0009936085379 -0.0005075869649 -1.382055531e-07 5.490070288e-06 -4.319604531e-05 -0.0002256210059 -0.001050570922 -1.265035111e-10 6.074429911e-07 3.06872827e-07 3.353264521e-07 4.619756438e-05 -1.487696698e-09 2.131258716e-08 1.389695813e-06 1.342172256e-06 0.0001164958272 -4.88175714e-09 -5.481115608e-09 -3.758437773e-05 -6.694682571e-06 -8.254822377e-06 1.997586323e-12 -1.142831693e-09 -1.067814965e-07 2.466015596e-07 1.856896615e-05 -4.312405327e-10 1.109067493e-09 2.166320557e-06 1.966338224e-06 1.011178904e-05 -4.762960015e-10 2.688046448e-08 -4.808022219e-06 -2.183752741e-06 -5.681404047e-07 2.491430156e-10 -2.151666683e-08 -6.429266764e-07 -1.418942525e-06 1.347588003e-05 -2.148911942e-10 -2.145988525e-08 4.458960748e-06 1.798545451e-08 2.644394193e-07 1.086491026e-10 -5.805934184e-09 2.509672e-06 -3.23176741e-09 2.017810595e-07 1.841583416e-10 -9.342957966e-09 -4.136180823e-07 -1.415306614e-06 5.409895034e-06 -0.2557525396 -0.01817463576 -0.0006185371363 -6.269841435e-05 0.0001264769089 5.416978576e-05 -5.346329093e-06 4.257825276e-05 1.657395898e-05 1.106823417e-05 1.924278275e-05 1.031518844e-05 8.91914548e-06 -0.001808444893 -0.003056719463 0.2323883984 0.0001118945933 0.0002723366832 0.002826501286 -1.097317655e-06 8.437664066e-07 -0.003635013682 3.216984842e-07 5.988805381e-07 8.767533308e-05 -6.84523474e-06 -3.090859579e-06 0.000323119255 -2.749947651e-05 -3.733548474e-05 -1.360372183e-05 -9.708657057e-09 -1.133490847e-07 2.2151971e-05 3.500891456e-07 3.205432858e-06 5.166533794e-05 -5.683366684e-06 -5.825916992e-07 -9.214224577e-08 -3.696961022e-07 -3.237756286e-07 2.231413895e-05 -1.234208178e-07 -1.583674407e-06 1.910022536e-05 -1.826999238e-07 -5.536199663e-07 9.664463008e-06 -1.99735238e-07 -1.432759102e-07 1.070847696e-05 1.849473522e-05 -0.0001790927146 0.05793650975 0.002015230359 -0.0004210583697 8.403681941e-08 2.656242766e-05 0.01010105086 -0.0006436356906 -0.0007447838149 -1.875565868e-07 5.016020174e-06 -0.001511424437 0.0001258605999 0.0001265414281 2.97712658e-09 8.72489349e-07 3.587026026e-09 1.863152797e-07 4.673657457e-05 1.830387478e-11 -2.25092511e-09 1.523190464e-06 7.54851064e-07 8.363980707e-05 -3.576236625e-09 2.030073629e-07 -2.738944416e-06 -2.700473482e-05 -1.181414298e-05 4.472872913e-10 5.147590788e-09 -4.065571734e-08 3.961983773e-07 1.958546485e-05 -2.381235986e-10 2.118814952e-09 7.473247563e-07 1.180908014e-06 6.664071206e-06 -3.596077149e-10 1.985942765e-08 1.00825032e-06 2.601414312e-06 -1.011170156e-05 3.592715883e-10 -2.355898235e-08 -9.898695595e-07 -1.087355981e-06 1.336095297e-05 -2.04702687e-10 -1.709014287e-08 3.382678799e-06 -2.034160639e-09 4.017943888e-08 1.034188159e-10 -4.823855759e-09 2.22486328e-08 -1.829218842e-08 2.478163123e-06 2.294905037e-10 -9.824033658e-09 -3.09867998e-07 2.339667578e-06 1.182097503e-06 -0 0 0 0 0 0 0 0 0 0 0 0 0 -0.06701504964 -0.003874690572 -0.02278685981 -0.01858869909 -0.002794500811 -0.02951920367 -0.003379654366 -0.000562350416 -0.008384006229 0.0005876476358 0.0001189324008 0.002242336089 -2.940304204e-05 -2.799862824e-05 0.001368050109 0.0002448267557 4.892110771e-05 0.0002919912367 -0.0002151353279 -1.586762862e-05 -8.364148902e-05 1.07536025e-05 3.917264607e-07 -5.767910631e-07 -0.0002192291748 0.0001106203805 3.507963183e-06 1.210214902e-05 2.674159219e-06 3.315675889e-05 8.03627277e-07 6.965812698e-07 -2.111494426e-05 -1.253855147e-07 -6.214729747e-06 1.871062288e-05 -7.262504988e-06 -1.081885055e-06 -5.211609168e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.08612784605 -0.01727817092 -0.01817615757 -0.0008688588751 -8.461838068e-05 0.0004196139332 -0.0001390389965 4.329587635e-05 8.231038957e-06 -5.881876905e-05 8.470644965e-06 -1.156771251e-05 -1.335112103e-05 0.0005183338761 0.005381743617 -0.1491502245 0.001038550739 5.810133275e-05 0.002421299683 -0.0001181749131 -5.763198288e-06 -0.01021409752 -2.759482894e-05 -1.172412474e-06 -0.005547436306 -7.941376698e-08 -1.95578012e-06 0.002183629464 -3.259696867e-05 -1.543272008e-05 -8.154132301e-05 -1.125506429e-07 -4.93191736e-08 -0.0001324711093 1.109736971e-05 3.863224782e-07 0.0001361326134 4.02122546e-07 4.265811735e-06 -0.0001432462402 1.355866302e-07 2.241654237e-06 -4.583834971e-05 1.466709477e-06 -4.19453188e-10 3.919429289e-07 5.91543232e-08 7.550257318e-07 -4.025960255e-05 1.49781364e-07 1.583109509e-06 -1.899904785e-05 -7.871423576e-05 1.883844543e-06 -0.06328602222 7.927992465e-05 0.00250609059 -4.469785044e-06 -5.343034011e-05 -0.01012810545 0.001715789773 6.102464131e-05 -2.358257563e-07 -2.938629601e-06 -0.0002333078873 -8.308655019e-05 3.003351323e-07 -3.594724243e-07 -3.609866033e-05 -3.523839211e-07 -4.832539283e-05 -0.002362778171 -5.578345464e-08 1.067236263e-06 1.485576595e-06 2.59560254e-05 0.0008311628424 -6.465323149e-11 7.032172027e-08 2.129822453e-08 7.560964533e-07 -2.251870125e-05 -7.536038899e-08 -3.350136122e-07 -1.380610088e-08 -4.018569522e-09 1.185514639e-06 -5.305954284e-08 -5.253342245e-08 4.799915481e-05 -2.030116626e-07 2.157873631e-08 -3.788581024e-09 3.065416458e-08 2.712565648e-07 4.102506544e-06 -6.855305864e-05 -1.301757837e-09 -1.037039755e-08 4.870378691e-06 5.681695629e-08 1.245359923e-06 -1.437204766e-08 6.078017972e-10 -6.306735824e-06 5.006399938e-07 5.800522789e-08 -6.708914341e-09 1.416730197e-09 -2.420103563e-08 4.583921091e-08 -1.292515642e-05 -2.679733066e-09 1.741873828e-09 -1.986169031e-06 -1.197078414e-08 1.1851827e-08 --0.04966106232 -0.07935131005 -0.02594066705 -0.001253827784 0.002766914392 0.0007275674401 9.031349227e-05 -0.0001626590049 -3.760151799e-05 -1.066086104e-05 2.561518336e-05 -1.460200126e-06 4.125218093e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.03063551487 0.01220852203 0.003489108876 -6.825221657e-05 0.000418235573 -0.0002234242124 3.867992337e-05 2.713566063e-05 -1.607789493e-05 1.379041609e-05 1.059226419e-05 1.149431049e-07 4.519109959e-06 -0.03617039289 -0.02722477476 0.03409966125 -3.691358349e-05 -7.988645134e-05 -3.274260491e-05 -9.055356571e-05 0.001358602469 0.004519316244 -1.770547611e-05 -4.893166523e-05 0.0007200358087 5.185016196e-05 5.456036219e-06 -4.49603956e-05 -2.302212e-06 1.49235851e-05 -0.0002517648625 -3.460929623e-06 -1.133174387e-05 8.873736891e-05 -5.35805415e-07 -9.060347338e-06 4.662881302e-06 -9.537774761e-07 -2.27201973e-05 -2.249026463e-06 -7.654996174e-06 -3.682970538e-06 3.855728578e-05 -2.012046063e-06 -2.188310662e-06 4.447235795e-06 -8.471382296e-07 -1.141818702e-06 3.989351203e-07 -4.030295234e-06 -1.497982339e-06 1.113630585e-05 -0.00101224782 0.003262808405 0.03014743352 -0.05548504088 -0.02285243403 -0.0001296665432 0.0003580427883 -0.0008096273394 -0.002228163948 -0.005815985048 -1.572712698e-05 7.549841257e-05 0.0004454541923 0.002797627921 0.0002127696543 -9.024900013e-05 0.0002278400861 2.102767854e-05 0.0001197032391 0.0008138376307 3.665891023e-09 2.755992601e-06 3.638361633e-05 8.987962705e-06 -0.0003278089969 1.302248766e-07 1.234938449e-06 2.448680128e-05 -5.727950489e-05 -3.604887063e-05 -3.596917825e-09 1.332214134e-08 1.146241082e-08 -5.412470295e-07 2.725021776e-05 6.952354454e-09 3.268891268e-07 -7.636796931e-06 -1.042590762e-05 -1.108061661e-05 -1.946825331e-07 8.885790729e-07 1.387230819e-05 -2.212443392e-05 -4.572742722e-06 -6.85350855e-08 3.019148887e-07 -6.245497171e-06 -4.203689726e-06 1.653950164e-05 -9.249323159e-08 3.119945224e-07 -2.591372487e-07 -2.478302867e-06 -5.405128278e-06 -9.478011228e-08 3.230820721e-07 4.088428919e-06 -2.696105411e-06 -4.717294046e-06 -5.807231447e-08 2.315010363e-07 -2.844176637e-06 -1.254855211e-06 2.51838535e-06 --0.0307634 0.0112326929 0.004039611958 -5.750398627e-05 0.0003888250908 -0.0002275784691 4.651121072e-05 2.117053504e-05 -1.755613853e-05 1.736908893e-05 7.990001571e-06 -4.669882724e-08 5.069599017e-06 -0.04579412365 -0.01837889877 0.03516432843 -0.0002307036926 -0.001143149604 -0.0001356449448 1.306141834e-05 0.00145893501 0.004520762276 -7.04756237e-06 -5.317129401e-05 0.0009310042016 5.336913034e-05 5.379084854e-06 -0.0001885286408 2.21146197e-05 -0.0001640221438 -5.447469076e-05 -3.462065238e-06 -7.897722141e-06 8.204755433e-05 -3.138231708e-07 -1.17602348e-05 -5.341616991e-06 1.004048619e-05 -2.71630121e-05 -1.934670093e-06 -8.422115934e-06 -1.987332641e-06 3.79479996e-05 -5.501120995e-07 -3.7095109e-07 -2.258327601e-06 -2.732893725e-06 -1.396671089e-06 3.971164742e-06 -4.445754526e-06 -7.85304913e-07 1.077059549e-05 -0.0009132949923 0.003187919665 0.02925055837 -0.06478326715 -0.01245110669 -0.0001291991416 0.0004143718195 -0.0005850448695 -0.001263340261 -0.008219144071 -9.269084185e-06 5.608760232e-05 0.001500722126 3.171734396e-05 0.001807146535 -0.0001913409957 0.0005443128462 2.432427553e-06 5.915636038e-05 0.0008696547892 -8.680194884e-08 2.235005601e-07 9.082436668e-06 -1.099361302e-06 -0.0003511084998 1.262685991e-07 4.94508748e-07 6.795432435e-06 -3.250306919e-05 -1.66873531e-05 -1.509118956e-08 8.184404169e-08 -2.209633189e-07 2.540974262e-06 2.188183718e-05 -7.853873095e-08 5.435508424e-07 -5.841382018e-06 -1.534531015e-05 -1.494134741e-05 -1.457269137e-07 8.300567857e-07 -1.316914515e-05 -3.379457407e-06 9.85322249e-06 -4.488956682e-08 2.354678994e-07 -6.082988186e-06 -2.070021993e-06 1.233465679e-05 -8.346798537e-08 3.103046926e-07 -9.300433426e-07 -3.782264972e-06 -3.878656338e-06 -7.636124107e-08 2.987705138e-07 -4.741979165e-06 -2.591685179e-06 4.994098476e-06 -4.515659241e-08 2.085251222e-07 -1.369931381e-06 -8.675439265e-08 -4.877865833e-07 -0 0 0 0 0 0 0 0 0 0 0 0 0 0.006047608879 -0.01043326028 -0.2829929257 -0.1577293036 -0.002302051951 0.003874318373 -0.03774797378 -0.0009101855957 0.0008447512808 0.008900577745 0.00031631184 -0.0001702832824 0.0009547880414 0.003046314221 1.967008927e-05 -4.412499636e-05 1.723926306e-05 0.001823800535 2.13749235e-05 -2.356549811e-05 -0.0009630672702 6.571044641e-08 5.831811616e-06 2.652435686e-05 -0.0001300805978 -0.0001865309905 -5.813940429e-06 0.0001446839676 5.587106151e-06 -3.223287793e-06 -1.244869564e-05 -4.719051333e-05 -5.343545361e-07 1.9010022e-07 3.430654074e-05 3.45327263e-06 1.050675628e-06 -9.543942823e-07 -4.168301446e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.001685737834 -0.0003381771141 -0.0003557529637 -1.700574606e-05 -1.656193813e-06 8.212896473e-06 -2.721341675e-06 8.47408825e-07 1.611020642e-07 -1.151230745e-06 1.657917544e-07 -2.264091292e-07 -2.613149044e-07 -0.01142620873 -0.1625569815 -0.007567251455 -0.01533900275 -9.936796046e-05 0.002766463152 0.004996630878 0.0002716793514 -0.0002154741648 0.0002866257996 4.110704554e-06 -0.0001103117022 5.885216371e-07 1.750732035e-05 4.275958843e-05 2.021998972e-05 9.266919809e-06 -0.000146391596 -3.129535549e-06 -2.027190403e-07 -2.584536267e-06 -4.200069269e-05 -2.050085903e-07 6.144964072e-06 -1.537528809e-06 -4.037619304e-05 -4.716422326e-06 -3.867269091e-07 -1.504881879e-05 -2.229204927e-06 7.091136967e-07 -1.964333633e-07 -1.754733116e-05 -6.156003849e-07 -1.454781804e-05 -1.092896232e-06 -4.613708493e-07 -1.050980867e-05 -2.595901556e-06 0.003670346839 0.00239518229 -0.001020602947 -0.004983450086 -0.1496339244 9.944667509e-05 0.001204523162 -0.001193311417 -0.03905193638 -0.0007706419767 9.898894005e-06 7.761149807e-05 3.640262369e-05 0.004539890864 0.0001347946917 1.26850082e-05 0.000854143973 2.15469491e-05 0.001983103904 -5.156823554e-05 2.482718859e-06 1.300867402e-05 -8.892741671e-06 -0.0003889316379 1.786581401e-05 5.526938171e-09 -2.07575613e-09 -1.179333766e-07 -1.009875982e-05 -5.001455855e-07 2.630344935e-06 2.166336e-05 6.562973748e-07 2.533425904e-07 -1.777471801e-07 2.276150757e-06 9.478828185e-07 3.330355155e-07 -8.154342144e-05 -3.327331339e-08 1.709387702e-07 5.451108298e-07 -4.903881353e-07 -2.022225174e-05 -1.591149289e-06 5.45661896e-08 2.638112648e-07 3.487733924e-07 -1.201173808e-07 -9.385317553e-06 6.786986626e-07 2.592724565e-08 -2.435953088e-07 -1.655730338e-05 -1.254311092e-06 3.111562423e-07 7.217938802e-08 -9.897268402e-07 -9.92729723e-06 -2.236059673e-07 1.590686855e-07 2.073441688e-07 1.227447876e-07 -1.945871828e-07 -1.004879941e-05 --0.1523488835 -0.2434318343 -0.07958008707 -0.003846459461 0.008488266233 0.002232012003 0.0002770613248 -0.0004990009603 -0.0001153529348 -3.270510539e-05 7.858157688e-05 -4.479563033e-06 1.265523413e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.04131985135 -0.01646632406 -0.004705958451 9.205562415e-05 -0.0005640979686 0.0003013448699 -5.21698e-05 -3.659940002e-05 2.16851661e-05 -1.859991403e-05 -1.428638571e-05 -1.550302657e-07 -6.095179158e-06 0.0007493664641 -0.1247694159 -0.05852204658 -0.0001608285368 5.353126646e-06 9.662881481e-05 0.002122725176 0.0002931821957 -0.006088349245 -0.0001426757483 -6.919665017e-06 -0.0009629073388 5.746512189e-06 0.0001200377142 8.466784467e-05 -1.085026153e-06 -6.977350995e-05 0.0001604431629 6.741538106e-07 -2.598135438e-05 -0.0001207648549 -1.449456427e-05 -1.421808436e-06 -3.778524509e-06 1.048638559e-05 -2.208423408e-06 -3.416678264e-05 2.742274438e-07 -2.047674433e-05 -5.7020189e-05 9.400710095e-08 -9.660685875e-06 -1.647031074e-05 2.248329545e-08 -6.733136646e-06 -1.58310089e-05 -6.734892115e-08 -1.09012341e-05 -1.741388629e-05 0.002022215937 0.002473453422 -0.03442506709 -0.002868817663 -0.141448347 0.0001412133051 0.0002155199775 -0.002448807031 -0.01670114701 -0.000249101929 0.0001314879741 7.212721989e-05 0.004553811344 3.474144472e-05 -0.001076159775 0.0001301771883 0.0002386172281 8.846470263e-05 -8.141652004e-06 -0.001106517027 3.462180601e-06 6.695419265e-07 7.319456987e-06 0.0001030839147 0.0004402604336 2.061418525e-06 1.779298732e-06 -7.288282745e-06 6.948593424e-07 -0.0001671099808 6.833700495e-09 1.259084524e-08 -8.877306696e-07 -7.56846803e-07 -3.673981777e-05 5.170791039e-07 6.737771857e-08 -1.759773714e-05 3.775508865e-06 1.820248203e-05 9.80613723e-07 5.271177286e-07 -9.274687293e-06 -6.270678923e-06 -4.840861113e-05 2.732826111e-07 2.324773663e-07 9.431156493e-07 -1.35922277e-05 -2.51935728e-05 2.120392066e-07 2.079203238e-07 8.794597015e-07 3.795436008e-07 -1.50569718e-05 2.345531261e-07 2.211498054e-07 -5.077409837e-06 3.539635555e-07 -1.556855535e-05 2.117409394e-07 1.531927724e-07 5.293911734e-07 -1.866051419e-06 -1.705945802e-05 -0.0410669468 -0.01499484459 -0.005392594102 7.676372394e-05 -0.0005190537886 0.000303801039 -6.208915193e-05 -2.826115567e-05 2.343619389e-05 -2.318649601e-05 -1.066608273e-05 6.233960661e-08 -6.767553429e-06 -0.00196917674 -0.126426481 -0.06090186174 -0.001690130612 3.622209893e-06 0.000866152354 0.00253588978 0.0002552429495 -0.006032581973 -0.0001248248816 -1.449351464e-05 -0.001236348519 1.610296106e-06 0.0001171782905 0.0002809666756 7.144628168e-05 9.658056481e-05 -0.0001392460119 5.478756674e-07 -2.072930036e-05 -0.0001099597449 -1.51767914e-05 -1.146309268e-06 1.158085305e-05 1.203905578e-06 -3.572506376e-06 -3.633883271e-05 3.860448168e-10 -1.924899582e-05 -5.488367793e-05 -2.153411021e-08 -7.887492977e-06 -1.253255165e-05 -2.580142664e-08 -1.070671725e-05 -1.341516539e-05 -2.281618649e-07 -1.068543883e-05 -1.692556645e-05 0.002707267061 0.001942698587 -0.03426172588 -0.007583981656 -0.1344006892 0.0002805516837 0.0001737962347 -0.002770288581 -0.01933608041 -0.0008297958545 0.0001460678501 4.263014988e-05 -0.000843829882 0.004335529552 0.0003723347975 0.0004743013349 0.0002281403312 1.245351866e-05 -4.645409078e-06 -0.001172696723 1.410207325e-07 1.368132312e-07 1.027871897e-05 3.500136908e-05 0.0004680618906 2.096826189e-06 9.9403538e-07 -1.292830495e-06 -1.491147492e-05 -0.000143847025 2.554037345e-07 1.372637805e-08 3.003652981e-06 -1.329588866e-07 -2.927412891e-05 6.58886314e-07 1.787147662e-07 -2.429038058e-05 3.54452352e-06 2.339833996e-05 1.075530589e-06 4.351832731e-07 1.997895922e-06 -9.283292887e-06 -6.072679894e-05 2.571645928e-07 1.527653757e-07 8.32516043e-07 -1.130559534e-05 -1.895681023e-05 2.856843586e-07 1.546104327e-07 1.362408872e-06 2.269996531e-07 -1.471485807e-05 2.851838265e-07 1.6394295e-07 -1.031794473e-07 -1.354437436e-05 -6.5275286e-06 2.330499313e-07 1.16885065e-07 3.633865749e-07 -3.06127174e-06 -1.368557398e-05 -0 0 0 0 0 0 0 0 0 0 0 0 0 -0.003452241436 0.05693874753 -0.05340529978 -0.01875765275 0.02212681892 -0.003325039929 -0.005713541456 0.006346013645 -0.0006217870246 0.001638030826 -0.001761412802 0.0001208256212 0.001698832951 -0.001712591949 1.262282371e-05 4.695473257e-05 -0.0002388793004 0.0001914168027 -1.771706016e-05 0.0001642471572 -0.0001462573382 3.64266146e-07 -1.261627423e-05 1.224284644e-05 3.337570542e-07 -3.849510388e-05 3.825245656e-05 2.782950507e-05 -3.020994289e-05 2.338885633e-06 -2.402696518e-05 2.447334171e-05 -4.293729191e-07 -2.374195672e-06 3.07511218e-06 -7.116402458e-07 -9.472672566e-07 7.236011534e-06 -6.276992861e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.0002430526798 -4.875897791e-05 -5.129309517e-05 -2.451918719e-06 -2.387929703e-07 1.184150024e-06 -3.923678838e-07 1.221809119e-07 2.322798221e-08 -1.659864968e-07 2.390415008e-08 -3.264407102e-08 -3.767684778e-08 0.04231099084 -0.04398864874 0.001489722189 -0.001066213385 0.002406160364 -0.00131460068 0.001157559256 -0.00117326434 -1.982856202e-05 3.393542987e-05 -3.490868685e-05 -1.511320933e-05 -3.227976323e-06 3.201786891e-06 6.16067362e-06 -2.676606184e-05 2.762791701e-05 -1.089097501e-06 -7.897556721e-07 7.98975927e-07 -3.794915549e-07 -2.449937545e-06 3.787223925e-06 -8.735767962e-07 7.610513169e-06 -8.229907613e-06 2.814751884e-07 2.273955885e-06 -2.603046303e-06 2.267913532e-07 -8.817352123e-08 1.916884844e-06 -1.802808347e-06 2.955586257e-06 -3.038446294e-06 -9.716113047e-09 1.95103832e-06 -2.58966199e-06 6.059082628e-07 0.002820027377 -0.002764150129 -1.354773064e-05 0.02730146239 -0.02733573558 0.0003527297532 -0.0003487587999 0.0002772096168 -0.005639434704 0.00538238288 1.613939254e-05 -1.034585766e-05 -1.431618249e-05 0.0007835508861 -0.0007817439545 0.0001122812178 -0.0001165212429 -0.0002058131395 0.0002046030488 -4.928483462e-06 4.499057091e-06 -4.29870572e-06 5.938304741e-05 -5.846403245e-05 1.76790149e-06 -4.919140982e-08 7.406958243e-08 1.080737816e-06 -1.105983619e-06 -4.833620265e-08 8.6427901e-06 -8.916052561e-06 9.191282925e-08 6.655817564e-08 8.666100783e-08 -1.394553914e-06 1.398976214e-06 4.160997679e-07 1.590536568e-06 -1.780866983e-06 2.682304427e-07 -2.699596838e-07 3.153336135e-06 -3.18796854e-06 -1.20070872e-07 1.050792478e-07 -1.048608666e-07 -7.176616791e-08 1.128612551e-06 -1.028836897e-06 1.340858908e-07 -1.282216207e-07 5.074009445e-08 -4.591592018e-06 4.539588595e-06 1.443196761e-07 -1.430349536e-07 3.150700293e-06 -3.128716262e-06 -4.698487849e-08 1.676442439e-07 -1.629387661e-07 -5.415417446e-08 1.428264307e-06 -1.372666236e-06 -4.305015067e-05 6.878801408e-05 2.248742925e-05 1.086917446e-06 -2.398581019e-06 -6.307132078e-07 -7.829090375e-08 1.410057365e-07 3.259598042e-08 9.241680556e-09 -2.220527415e-08 1.265817373e-09 -3.576066483e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.07402888039 -0.02950115971 -0.008431221891 0.0001649273791 -0.001010641125 0.0005398911805 -9.346771001e-05 -6.557169296e-05 3.885126676e-05 -3.332371162e-05 -2.559556978e-05 -2.777531046e-07 -1.09201576e-05 -0.0147222263 0.06069645968 -0.09663375365 8.607611113e-05 -2.471111143e-05 0.0001574945247 -0.001225909834 0.0004073206725 -0.01090556476 5.376813183e-05 -3.109057835e-05 -0.001728043266 1.463167215e-05 -6.666269428e-05 0.0001464099518 -2.622807076e-06 -1.024969861e-05 0.0004633324936 -1.645207013e-06 1.298515123e-05 -0.0002153672844 7.809181882e-06 -3.270195393e-06 -7.029156295e-06 1.791403696e-05 -6.951972534e-06 1.839662108e-05 -1.401453367e-06 1.330334458e-05 -9.983250148e-05 -4.971708772e-07 7.035844233e-06 -2.119377049e-05 -1.836276582e-07 5.453165471e-06 -1.492920238e-05 -1.033446506e-06 6.320497335e-06 -3.022502348e-05 -0.001578230941 0.0002344259571 -0.06114803131 -0.02447461973 0.06878519577 -0.0001325675095 1.594178193e-05 -0.00251121787 0.008770957751 -0.002078196475 -8.024136496e-05 4.564571318e-06 -0.00246424817 0.0005802973059 -0.001909801858 -0.0001099993966 -7.745903962e-05 -6.015560003e-05 3.279493179e-05 -0.001978203787 -1.945878876e-06 9.809835035e-07 2.493673612e-05 -4.03297874e-05 0.0007893069731 -1.101028705e-06 -4.869259608e-07 -1.907013309e-05 -3.001839786e-05 7.10481064e-05 -5.313307539e-09 4.492453961e-09 1.061508674e-06 -1.097745343e-06 -6.581955732e-05 -2.877261368e-07 1.0279051e-07 1.666433556e-05 2.657092218e-06 3.194287868e-05 -6.306618434e-07 2.291631961e-07 -1.692414821e-05 -1.830116865e-05 2.183741552e-05 -1.820887305e-07 9.81013956e-08 -3.574502379e-08 1.263408786e-05 -4.355129656e-05 -1.567099041e-07 4.89609058e-09 1.098354684e-06 -1.230603563e-06 6.267972161e-06 -1.707616385e-07 4.343752743e-08 -9.813216107e-06 -1.294837434e-06 5.584668793e-06 -1.430927364e-07 5.471598473e-08 4.93973151e-07 7.251059379e-06 -1.515624627e-05 --0.07359945238 0.02687349403 0.009664511334 -0.0001375745821 0.0009302389773 -0.0005444668241 0.0001112750749 5.064914104e-05 -4.200193027e-05 4.155442616e-05 1.911556395e-05 -1.117239353e-07 1.212868901e-05 0.01686569656 -0.06485024509 0.1025355765 -0.0009248044289 0.0002895655922 -0.001434803569 0.001414362723 -0.00047112 0.01080735628 -5.460958507e-05 3.66526866e-05 0.002217166538 -5.870341811e-06 7.015086141e-05 -0.0004979010505 -0.0001240259212 -8.751374431e-05 -0.0001314295874 1.624661004e-06 -9.761319321e-06 0.0001967014756 -8.534220205e-06 2.471657964e-06 -2.038748775e-05 -9.241224411e-07 9.626935663e-06 -1.942547603e-05 1.142479049e-06 -1.199252775e-05 9.704868994e-05 1.051697271e-07 -5.692791249e-06 1.140031999e-05 5.903300657e-07 -7.019317632e-06 1.929161695e-05 9.17480732e-07 -6.217526952e-06 2.966651083e-05 0.00192154062 -0.0005312688708 0.06012739898 0.02602834705 -0.07045316693 0.0002105871634 -6.293884459e-05 0.003751631044 -0.01058303639 0.002599899175 8.576524724e-05 -1.003712464e-05 0.002029616714 0.002145421696 -0.0008094676945 0.0003448261319 -4.205249506e-05 6.17121299e-06 -1.489783445e-05 0.002097830539 1.146955607e-07 1.647626266e-08 -2.076889271e-05 8.736142386e-06 -0.0008389848078 1.124627045e-06 -7.32690043e-08 2.121322443e-06 6.129801009e-05 -4.877522271e-05 1.505978942e-07 -6.064212326e-09 1.606533658e-06 4.405061993e-07 5.246517854e-05 4.026391898e-07 -1.467543278e-07 -1.791136942e-05 -2.352497337e-06 -4.133129584e-05 6.644035985e-07 -2.901600141e-07 -2.825477992e-06 -2.813599439e-05 5.671829801e-05 1.635663212e-07 -9.913422559e-08 -6.043073698e-07 -9.410142382e-06 3.301271989e-05 1.945024624e-07 -2.604192648e-08 -2.293314275e-06 1.709657594e-06 -6.630251812e-06 1.917672137e-07 -6.712120786e-08 2.080007922e-06 -6.602047178e-06 1.159158039e-05 1.499113429e-07 -6.473357785e-08 -5.743917301e-07 8.519564953e-06 -2.283241466e-06 -0.3534924927 0.05838670372 -0.000538126004 0.001561356431 0.0001976093014 4.240723937e-05 5.179713067e-05 1.128042835e-06 1.672026897e-05 1.013680007e-05 6.045186806e-06 8.297709321e-06 6.068813152e-06 -0.0506509441 -0.00296625124 -0.02155785633 -0.01330802711 -0.001700873897 -0.01803865139 -0.001610316462 -0.0002189839261 -0.003259590432 5.921322785e-05 9.282251115e-06 0.0001729978027 1.743638445e-07 -7.889484246e-07 -4.029691366e-05 -4.355552771e-05 -8.669223173e-06 -5.856775761e-05 1.031716611e-05 7.621542104e-07 4.943387347e-06 -8.168403033e-07 -3.571361351e-08 1.753806459e-09 -2.81190707e-05 1.354904141e-05 4.44038543e-07 -7.61221376e-07 -1.36817448e-07 -1.678375648e-06 8.288911152e-08 -2.660819979e-08 -3.558044257e-06 3.716671183e-08 1.602483435e-06 -5.436459261e-06 -1.185982289e-06 -1.768255403e-07 -9.896258803e-07 2.800669417e-20 9.962834418e-07 -0.01371697239 -0.0009721005899 -0.006208902546 1.109601334e-20 9.145378983e-07 -0.01689273382 -0.00075446877 -0.001705329723 -2.551869366e-21 2.881034802e-07 -0.003007584664 -0.000332778319 -0.002997857682 3.283570665e-23 5.714440598e-09 -5.48007518e-05 -9.10118271e-06 -0.0001344767524 -1.256054714e-22 2.950715688e-10 4.837151157e-07 -2.307573919e-05 9.505373204e-05 2.323928591e-23 4.599916804e-09 -8.693301232e-05 5.196810229e-06 1.777827754e-06 -1.019936846e-24 1.44767563e-11 4.734972525e-07 1.006098705e-07 4.789783959e-07 2.277983353e-25 -8.126371797e-12 3.388349229e-07 1.619007484e-07 1.985368389e-06 -9.10476957e-25 7.223058467e-11 -1.678690286e-06 -9.063786903e-08 -1.806660208e-07 -4.881260362e-26 8.704924429e-13 2.424564269e-08 1.897310311e-08 1.138832352e-07 2.1644342e-25 8.308971369e-11 -8.289949886e-07 -1.812083805e-07 -8.088583334e-07 -4.494038409e-25 6.333935024e-11 -1.113296322e-06 -4.274495645e-08 4.649125044e-08 1.244382507e-26 3.342419323e-11 1.262845748e-08 9.123431815e-07 -1.875901465e-06 -0.311435306 -0.02128602119 -0.02026307816 -0.0012476888 0.003325232161 -0.0008326805652 0.0002169914073 -0.0001813636915 0.0001997546648 -7.84262402e-05 5.983408319e-05 -2.37884768e-05 2.74761683e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.311435306 -0.02128602119 -0.02026307816 -0.0012476888 0.003325232161 -0.0008326805652 0.0002169914073 -0.0001813636915 0.0001997546648 -7.84262402e-05 5.983408319e-05 -2.37884768e-05 2.74761683e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.1861112921 0.001771897957 0.00236768835 -4.575757927e-05 0.0005527036846 0.0001578051115 2.491053696e-05 3.836413992e-05 5.326417556e-05 3.947845851e-05 2.630192811e-05 2.258469979e-05 2.013624449e-05 -0.02455630845 -0.0222907551 0.2051335106 -3.755079734e-06 -1.152655363e-05 6.974514397e-05 1.939484009e-05 -0.000485710653 0.002060219021 -2.606982025e-05 -5.806090286e-05 0.0003691038375 -0.0001196872099 -2.128375356e-05 0.0006634864297 -9.738870635e-07 -7.369292749e-06 6.728252559e-05 -1.329802856e-06 -4.48244808e-06 2.529898437e-05 -1.007307303e-06 -1.323981944e-05 6.076310669e-05 7.358652311e-05 -1.562970113e-05 -1.647711628e-06 -6.01734103e-06 -3.418777224e-06 4.300158255e-05 -1.931458728e-06 -3.900683906e-06 2.847846399e-05 -8.820013e-07 -3.3757512e-06 2.604467797e-05 -3.795494449e-06 -1.813368076e-06 2.570740775e-05 0.0009654483062 -0.003140535308 0.05597473488 -0.04790848161 -0.02252460552 0.0001290851397 -0.0004062853999 0.003162022725 -0.00137424189 -0.002510411832 1.347039422e-05 -5.113517351e-05 -3.340784078e-05 -0.0001842534268 0.0001963002602 8.938093295e-05 -0.0002648024865 -6.275918285e-05 -0.0002439231221 0.0003690493067 -7.436067528e-08 -2.448056276e-06 -0.000114185691 -4.178233387e-05 0.0001214724206 -1.699765577e-07 5.750319347e-07 -3.81950876e-06 2.879049484e-06 1.787499511e-06 3.525384739e-09 -9.444361376e-09 1.832991976e-06 -1.191392028e-05 7.745395542e-06 -1.738216923e-08 -3.13332194e-07 -9.88422275e-06 -1.664319311e-05 2.025153318e-05 1.787541735e-07 -7.81755529e-07 1.559819265e-05 -1.605849639e-05 -4.052304127e-06 6.391443009e-08 -2.371612657e-07 -6.897797488e-06 -4.294569834e-06 8.665092493e-06 9.022515134e-08 -2.984942582e-07 7.535782806e-06 -3.03331414e-06 -6.66192086e-06 9.168500673e-08 -3.103992681e-07 6.896053873e-06 -3.159604364e-06 -5.75739148e-06 5.460552531e-08 -2.080435422e-07 -3.514070053e-06 -1.835100714e-06 3.587344569e-06 -0.1910368616 0.001121457273 0.002632250934 -3.451241119e-05 0.0005842510882 0.0001351458436 2.054193437e-05 3.926021534e-05 5.428055436e-05 3.696509943e-05 2.44907136e-05 2.198723519e-05 1.968838606e-05 -0.03143609781 -0.01617452344 0.2031890257 -2.275935204e-05 -0.0001573683928 0.0007891359433 -1.950810773e-05 -0.0004508735659 0.001993690719 -1.93791357e-05 -9.359405304e-05 0.0004734127528 -0.0001162583909 -1.869627421e-05 0.0006255142783 3.042364103e-05 8.039692198e-06 3.202963128e-06 -1.657452984e-06 -3.944186751e-06 2.357137928e-05 -5.513176507e-07 -1.474743328e-05 6.267051938e-05 6.979938498e-05 -1.538301416e-05 -1.154208836e-06 -6.689702323e-06 -2.003629567e-06 3.881623711e-05 -6.183828141e-07 -2.614746663e-06 2.419006505e-05 -2.650194974e-06 -2.627257125e-06 2.586198812e-05 -4.232594724e-06 -1.099055893e-06 2.424322767e-05 0.0008489905705 -0.003039456925 0.05306628392 -0.05696150556 -0.01409953439 0.0001255074139 -0.0004552035198 0.003495342505 -0.0009346254704 -0.003699222705 6.484052241e-06 -3.223033389e-05 0.0001206205197 -2.385732835e-05 -0.0001223230567 0.0001847355482 -0.0005992043246 -2.232012801e-06 -0.0001441902628 0.0004028389488 8.541014337e-08 -2.722288058e-07 -0.0001141525735 -2.037802471e-05 9.685093203e-05 -1.7029436e-07 7.644204606e-07 -7.809321748e-07 1.093777413e-06 1.001056582e-06 9.232259203e-09 -9.728280748e-08 4.921689912e-07 -1.103690589e-05 7.656734129e-06 6.594680088e-08 -5.158199384e-07 -7.368822992e-06 -2.214783482e-05 2.135689435e-05 1.254841676e-07 -6.870308054e-07 -1.045235768e-05 -3.372869869e-06 8.736948299e-06 3.969344116e-08 -1.811356376e-07 -7.279822556e-06 -2.37610748e-06 6.896484293e-06 7.911593911e-08 -2.974271332e-07 7.048897165e-06 -4.586925473e-06 -5.03812451e-06 7.149470675e-08 -2.830639111e-07 -5.807840048e-06 -3.578192155e-06 6.927122121e-06 4.065645851e-08 -1.849776376e-07 -1.760497717e-06 4.186326767e-07 -7.001304264e-07 -0.3296916567 0.03849231289 6.690269822e-05 0.002683450172 8.224032543e-05 7.078511019e-06 0.0001393146533 4.758472952e-06 7.181560422e-06 2.361947865e-05 8.55809694e-06 7.734135203e-06 9.400456818e-06 0.01285756895 0.009533438791 0.2363793261 0.08476152801 0.001666021098 0.002974250531 0.007862744993 0.000221683579 0.0003821269641 0.001036060779 4.052064182e-05 6.388612631e-05 8.974151725e-05 0.0002885555885 4.422928833e-05 3.797618077e-06 3.54057304e-06 0.0002043120486 4.61629643e-06 2.725811335e-06 9.377847755e-05 3.020493428e-08 5.043866726e-08 2.227369442e-07 2.410666298e-05 1.799677855e-05 5.599289897e-07 2.692176884e-05 1.171517505e-06 1.373818989e-06 1.119928254e-06 4.318855638e-06 6.819874572e-07 4.739758215e-08 1.020676913e-05 3.020484021e-06 3.900812155e-07 3.879150487e-07 1.285446167e-05 1.074888047e-18 8.054895828e-07 0.004268671518 0.001699081243 0.07865247815 2.589335072e-19 7.815551471e-07 0.005652192788 0.00107527282 0.05739522339 2.454364544e-20 2.681146793e-07 0.01451819853 0.0004475801837 0.0004089623802 -3.376197752e-22 8.177471139e-09 8.378569518e-05 3.227247978e-06 4.912046684e-06 -5.369104454e-22 3.694221317e-10 3.271173866e-06 0.0001140691673 2.929945923e-05 -7.77818675e-22 3.520504086e-09 5.259599267e-05 0.0003099241448 2.59372819e-05 9.202384712e-25 5.180479803e-11 1.804845409e-07 6.936315327e-09 4.806145497e-09 -1.459501068e-23 6.357512805e-12 6.931491207e-07 8.707825866e-08 6.186470986e-08 4.007828833e-23 3.838711298e-11 2.970670396e-06 2.570348874e-06 2.934512014e-05 2.106016553e-23 9.918362295e-14 1.912602255e-08 7.920942044e-08 5.643867571e-06 9.310781124e-24 8.500724975e-11 2.947671945e-06 1.231642815e-07 7.523231886e-08 -4.723083483e-23 4.263048682e-11 9.532039545e-07 2.957516624e-06 4.359910821e-06 6.389453814e-24 2.935475951e-11 1.065260132e-08 1.032578216e-06 1.759781555e-06 -0.196133944 0.001473855218 0.003111363451 3.949938519e-05 0.00066058632 0.0001386295456 1.578946936e-05 3.771268021e-05 5.920969413e-05 3.700754264e-05 2.200870706e-05 2.075350102e-05 1.961072167e-05 0.007460260547 0.1102538629 0.1876702532 0.002469587666 5.839525522e-05 0.001435591532 0.001248121419 6.877854302e-05 0.001906728505 0.000404288253 5.975438047e-06 0.0005879586206 1.35692939e-05 0.0004007947562 0.0006082885549 6.178242206e-06 2.992943029e-06 7.761098675e-05 8.669195721e-06 5.662705568e-07 1.339341115e-05 4.674766047e-05 3.741538294e-07 4.993539304e-05 1.426286883e-06 4.034295372e-05 7.05038572e-05 4.294729334e-07 1.898009813e-05 3.672016654e-05 1.926974671e-05 1.780118859e-07 1.494058323e-05 5.87389194e-07 1.425855898e-05 2.318384963e-05 3.558927909e-07 1.051873356e-05 2.709068759e-05 0.003575979003 0.002390159424 0.02967872217 0.005161685385 0.1559257864 9.402199123e-05 0.001131667161 0.003396404116 0.01328711148 0.0002516292273 9.615379158e-06 9.033397144e-05 0.000108159413 0.0004429720284 1.311299622e-05 1.224954937e-05 0.0008125248957 8.700834069e-06 0.0007867028546 0.0002838817423 2.415719802e-06 1.427647748e-05 7.405322169e-06 0.0003216732964 5.880799363e-05 5.451985758e-09 8.76839323e-08 6.165538301e-09 5.38414879e-07 1.232532242e-07 2.539366209e-06 1.940254826e-05 6.904410652e-08 1.283445473e-07 3.526019216e-06 2.212499834e-06 8.879945972e-07 1.634530375e-05 7.951691434e-05 3.781638185e-08 1.663906104e-07 5.762281077e-07 1.096726186e-06 4.617633719e-05 1.000605751e-05 5.300079308e-08 2.763530004e-07 2.513761723e-06 3.032395841e-07 2.149530069e-05 6.614817328e-07 2.642421195e-08 3.967901195e-06 1.824820446e-05 1.363793588e-06 3.031143194e-07 7.332616116e-08 1.968038988e-06 1.970194792e-05 3.841262418e-06 1.558738043e-07 2.089807363e-07 2.608430819e-06 3.440673829e-07 1.722874873e-05 -0.4945189387 0.307421443 0.1319654046 0.03941143222 0.01673841645 0.005001509027 0.002982067969 0.0008721944031 0.0006739086684 0.0001662005827 0.000162668234 2.726728507e-05 3.849627959e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.1676805427 0.006028613817 0.001579476025 1.715073291e-05 0.0004391115474 0.0002750225224 6.342084927e-05 3.305787123e-05 4.717153497e-05 5.150853093e-05 3.71907044e-05 2.471694834e-05 2.112911574e-05 0.006686320006 0.08761996035 0.1984842112 5.528944255e-07 1.125541529e-07 8.015779232e-07 0.0008386148877 0.00029235373 0.00209648692 6.595064384e-05 9.227783434e-06 0.0001296726145 4.748148281e-05 0.000304918129 0.0007763999114 4.758031576e-08 1.594365289e-05 0.0003156997847 2.757699406e-07 1.760665858e-05 3.519571149e-05 2.003690886e-05 7.029024225e-06 4.241395462e-05 6.852333475e-05 1.345440139e-05 3.531218995e-05 2.40915901e-06 2.486337824e-05 6.446566625e-05 2.706223256e-07 9.281461944e-06 4.674585359e-05 4.292569126e-08 4.398473352e-06 4.177400071e-05 1.247900713e-06 1.16930026e-05 2.980896633e-05 0.001647902574 0.003658296014 0.04402062423 0.02050298159 0.1412269441 9.804104973e-05 0.0002889981355 0.001985576242 0.003442497851 0.0003684776631 0.0001243613751 0.000120570033 0.0009787878592 0.000298327631 0.0002674786072 9.973268798e-05 0.0002766406063 0.0002198586397 5.32204756e-05 0.0001756071429 3.402127051e-06 1.758523729e-06 8.585362535e-05 0.0005523298111 0.0001754441613 2.06995509e-06 3.558924639e-06 1.267337607e-05 9.620402361e-06 7.721477834e-05 5.58821817e-09 2.049428288e-08 1.015426668e-05 5.551690043e-06 4.467257712e-06 5.103358812e-07 1.887473912e-07 4.497780567e-05 5.974826588e-06 6.968931603e-06 9.027660745e-07 9.044791548e-07 9.282629073e-06 1.817220802e-05 6.239856264e-05 2.467188737e-07 3.852377679e-07 3.772848564e-06 3.776405873e-05 1.981141539e-05 1.796495762e-07 3.234380582e-07 6.595164246e-06 6.563829993e-07 2.511638158e-05 2.006827353e-07 3.38409266e-07 5.480729772e-06 6.577626931e-07 2.158999553e-05 1.896223638e-07 2.492676186e-07 8.096055233e-07 4.382299471e-06 2.619850326e-05 -0.1728489752 0.005025460494 0.001870168735 6.80023261e-06 0.0004875037629 0.0002533280534 5.054186489e-05 3.207028623e-05 4.953201803e-05 4.977919565e-05 3.412306679e-05 2.341946529e-05 2.055272272e-05 0.01021945401 0.08789418229 0.1976152894 5.470270548e-05 2.054233111e-05 7.978404739e-05 0.000939367172 0.0002691302763 0.002143393915 9.226739952e-05 2.013918982e-05 0.0001886417252 4.618366882e-05 0.0003139647603 0.0007873181755 4.070699822e-05 9.515463762e-05 0.0001428076863 3.660337458e-07 1.437861035e-05 2.699568261e-05 2.087212908e-05 1.003311964e-05 4.074108496e-05 6.351222884e-05 1.916020995e-05 3.73800938e-05 3.18920741e-06 2.390979612e-05 5.894063826e-05 2.060868611e-08 6.067185196e-06 4.422308815e-05 4.350416044e-07 9.218232598e-06 3.41250514e-05 1.547400552e-06 1.165897791e-05 2.903161393e-05 0.002350211652 0.003125681869 0.04206561175 0.02818738059 0.1332389393 0.000234821368 0.000272909599 0.002300132105 0.0044910163 0.0007025169749 0.00014060148 8.41591467e-05 0.0005132472006 0.000753345339 0.0001316652649 0.0004055898787 0.000356838336 1.32999607e-06 4.358917862e-05 0.0002040254823 1.112447841e-07 1.766324914e-07 0.0001108831143 0.0004979425953 0.0001523187149 2.100204914e-06 2.103379793e-06 1.328037424e-07 1.279869988e-05 5.267669679e-05 2.45328158e-07 2.657422822e-08 1.002233692e-05 3.928653124e-06 3.633487665e-06 6.220975663e-07 3.844473616e-07 4.647166496e-05 9.144343833e-06 8.525222443e-06 1.00998171e-06 8.226590351e-07 3.399482374e-06 1.467794808e-05 6.843410994e-05 2.378620824e-07 2.759685622e-07 4.535200795e-06 3.269045161e-05 1.648349004e-05 2.544382295e-07 2.690089478e-07 6.209085985e-06 1.348594714e-06 2.169442264e-05 2.558192499e-07 2.758543377e-07 2.121356134e-06 1.863469419e-05 5.69876433e-06 2.142689132e-07 2.055857672e-07 2.060456307e-07 4.98982284e-06 2.437250973e-05 -0.3359516208 0.043471527 -6.36005979e-05 0.002563242314 0.0001266133647 1.537530105e-05 0.000131907056 2.014910456e-06 9.553440674e-06 2.196750305e-05 6.759460416e-06 8.220623833e-06 9.240377356e-06 0.01896567434 0.03615268368 -0.1384766169 -0.04627068261 0.01027092147 0.005160790621 -0.005421327485 0.001296521636 0.0007089009763 -0.0004113482298 0.0001056418261 5.83245221e-05 -0.0001819346093 5.504779914e-08 4.398855826e-05 9.169321757e-06 2.896230763e-05 -0.0001263594542 4.400435465e-06 8.334287102e-06 -3.431755406e-05 1.741920791e-08 4.096779404e-08 -1.173815939e-07 2.222542328e-06 -2.269098915e-05 4.041733237e-06 -1.326531598e-05 3.611358982e-06 1.688173527e-06 -2.421502894e-06 -1.666559867e-07 6.19563971e-07 6.278665519e-07 -7.024740004e-06 1.849210846e-06 5.718011308e-07 1.546137218e-06 -5.921178015e-06 -6.18729036e-19 8.46453628e-07 0.005513195366 0.00878594799 -0.04088506626 5.884892824e-19 8.084446927e-07 0.005206075158 0.006460532398 -0.03297292971 -2.618097707e-19 2.693813982e-07 -0.008740357892 0.002170583643 0.000963885041 5.56623616e-21 6.054320627e-09 -0.000123147365 3.096357909e-05 1.729599499e-05 2.138165677e-24 4.480242904e-10 8.708982534e-06 -4.446255587e-05 8.960688923e-06 9.186553669e-22 3.597759324e-09 4.555860299e-05 -8.526153847e-05 -9.652839759e-05 -8.493826574e-24 8.845186555e-12 6.655711868e-07 -1.854004229e-07 -5.92907642e-08 -6.37111698e-24 -1.983744406e-11 4.503061573e-07 -1.462582023e-07 -6.40161181e-08 2.62293534e-23 4.024539128e-11 3.13280275e-06 6.05112764e-06 -2.036859565e-05 3.762517518e-24 3.483857201e-14 2.270358104e-08 2.527275338e-07 -1.10063433e-06 5.487062211e-24 8.099252808e-11 -2.136560011e-06 6.106968805e-07 1.864123636e-07 7.990701121e-23 4.386769113e-11 9.059410024e-07 1.715477066e-06 -5.483715235e-06 -3.208109757e-23 3.176064111e-11 1.072221046e-07 -9.697857595e-07 6.750216577e-08 -0.2012833119 0.0008761074769 0.003323099852 6.944114398e-05 0.000677906376 0.000112037868 1.242941904e-05 4.097620405e-05 5.967488817e-05 3.346306593e-05 2.023334325e-05 2.069486427e-05 1.939923493e-05 0.02077744113 -0.08339890458 0.1872899249 -0.0006968358001 0.0004051693674 0.002474889483 -0.0007904000434 0.0002037237361 0.001815168066 -0.0002774530085 4.663951329e-05 0.0007159527115 5.206658365e-05 -0.0002366605448 0.0005681446361 5.848937168e-06 9.690559725e-06 7.710433589e-06 -6.418722983e-06 1.730090362e-06 1.45011547e-05 -2.004760725e-05 3.567631006e-06 5.887886379e-05 5.373925378e-06 -2.720169497e-05 6.431457798e-05 2.014665165e-06 -1.275828697e-05 3.099161541e-05 1.981858615e-05 1.245306117e-06 -7.414133215e-06 2.154505875e-06 -9.715845201e-06 2.280300898e-05 1.407528929e-06 -9.735942259e-06 2.293533396e-05 -0.004130753456 0.001227792251 0.03145712326 0.02140625604 -0.09868369813 -0.000346806181 -0.0003301851244 0.00361871844 -0.009801582305 0.001661206843 -1.833205813e-05 -1.379082397e-05 7.210631545e-05 -0.0001882578312 3.917145768e-05 -0.0001004311423 -0.0003337869168 7.157085749e-05 -0.0004909227533 0.0003324929401 -4.972093656e-06 -9.208913907e-07 2.954413099e-05 -0.0001524018871 4.980200584e-05 3.869162325e-08 3.677622621e-08 -7.72212032e-08 5.376180991e-07 -2.126741937e-07 -8.541404552e-06 -4.724694158e-06 -1.837713119e-07 5.174081193e-07 4.924782867e-06 7.06382171e-08 -1.66700669e-06 1.734285436e-05 -4.021504825e-05 -1.580223381e-06 -3.074135268e-07 1.300261697e-08 4.710775948e-06 -2.509505398e-05 8.330095513e-06 -1.14576523e-07 -1.778700029e-08 2.804128672e-06 1.692746633e-06 -9.530721792e-06 -4.385305449e-07 9.636233179e-08 4.11649393e-06 -1.35826431e-05 3.635897296e-06 -2.707239981e-07 8.850533956e-08 4.375799539e-06 -1.483742786e-05 4.141054297e-06 -2.162007255e-07 4.439643305e-08 2.795769387e-06 1.727489132e-06 -9.020155524e-06 -0.2879604209 -0.04305026317 -0.01443731944 0.0008221526304 0.002711094235 -0.0011728289 0.0004348853679 -0.0001698025037 0.0001782955589 -9.252430953e-05 7.778011446e-05 -2.59608181e-05 2.852003414e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.2879604209 -0.04305026317 -0.01443731944 0.0008221526304 0.002711094235 -0.0011728289 0.0004348853679 -0.0001698025037 0.0001782955589 -9.252430953e-05 7.778011446e-05 -2.59608181e-05 2.852003414e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.1763189221 0.00435647585 0.002057986049 6.382378456e-07 0.0005175549463 0.0002363005822 4.28015836e-05 3.210468148e-05 5.119974991e-05 4.819677341e-05 3.200699986e-05 2.275822779e-05 2.031076684e-05 0.01861059057 -0.07553819037 0.1990206044 -8.55416451e-05 6.351658394e-05 0.0001867775438 -0.0008840866942 0.000291337094 0.002212757478 -9.614681858e-05 3.469332871e-05 0.000240436489 5.588862399e-05 -0.0002987535889 0.0007905187227 3.731443906e-05 0.0001241810843 -4.570160241e-05 1.50281033e-06 -7.911918062e-06 2.366558671e-05 -1.930334131e-05 1.135764374e-05 4.34193605e-05 6.601919666e-05 2.277169328e-05 -3.109123384e-05 4.325835467e-06 -2.114319685e-05 5.578873647e-05 8.354166355e-08 -1.065334493e-05 3.293319196e-05 8.855572646e-07 -1.081200274e-05 3.022597746e-05 2.095859826e-06 -1.086955427e-05 2.876543829e-05 -0.003227798148 0.0008503289132 0.04403671571 0.04000870667 -0.1143825046 -0.0003538062004 8.454720645e-05 0.002608473953 -0.004932848075 0.001130128239 -0.0001440733515 3.301666142e-05 0.000431354137 -0.0007049204993 0.0001506433374 -0.0005793315226 7.412568081e-05 -1.613558563e-07 7.386383974e-05 0.0002520316803 -1.927096149e-07 -3.125031135e-08 0.0001385999944 -0.0004068810201 0.0001561414457 -1.889092965e-06 8.123582494e-07 7.101043978e-08 1.674705809e-05 -2.34761052e-05 -2.529640841e-07 1.361350461e-08 -9.869408138e-06 3.487790352e-06 3.857677074e-06 -6.763818526e-07 2.649451119e-07 -3.796007301e-05 1.644840518e-05 1.086776519e-05 -1.116120969e-06 4.649421166e-07 4.223164433e-06 -3.234707037e-05 1.538840464e-05 -2.747672827e-07 1.464246877e-07 6.061604893e-06 -2.768691249e-05 1.405355228e-05 -3.267678968e-07 7.631841778e-08 6.48669462e-06 3.683039121e-06 -1.437646204e-05 -3.221620043e-07 1.036358711e-07 4.283593514e-06 -1.418164886e-05 5.932341561e-06 -2.518336269e-07 9.727059768e-08 3.103957667e-07 9.525964806e-06 -1.419282388e-05 -0.339245372 0.0461638881 -0.0001401468316 0.00245542731 0.0001472799532 2.028152886e-05 0.0001235990406 9.365828157e-07 1.105814386e-05 2.042711277e-05 6.01476313e-06 8.485154435e-06 8.924819593e-06 0.02351069372 -0.04126140653 -0.06409428778 -0.02923855825 -0.01057803392 0.008477064268 -0.003258756289 -0.001547684326 0.001075041677 -0.0001361234719 -8.337812681e-05 5.091811388e-05 8.857119611e-05 -0.000262850265 4.402266571e-05 2.208200738e-05 -2.895651903e-05 -8.941250331e-05 4.245877117e-06 -6.063899852e-06 -1.26471596e-05 3.732772023e-08 -1.215755607e-07 -2.165985887e-08 2.359135574e-06 -1.409342968e-05 -5.414753198e-06 -5.267327228e-06 -3.546188826e-06 1.981350916e-06 1.383455597e-06 -4.221498808e-06 7.400145763e-07 -7.225643547e-07 -5.325027315e-06 1.47847858e-06 8.794069651e-07 -1.40815183e-06 -2.8490649e-06 3.360786496e-19 8.697061292e-07 0.007884521466 -0.008829421243 -0.02469547044 -3.239193253e-19 8.242394074e-07 0.007966980829 -0.006653794403 -0.02245482537 7.959060692e-20 2.711572012e-07 -0.004691822536 -0.002458326042 0.001329701476 -1.255251828e-21 5.776160037e-09 -8.138670494e-05 -4.68196928e-05 2.933200077e-05 4.229733803e-23 6.375081399e-10 -4.612733443e-06 -1.206042597e-05 4.726761286e-06 5.790071016e-22 3.672264657e-09 4.879394189e-05 -0.000249048347 6.545965657e-05 3.047050613e-25 1.127918321e-11 5.13672979e-07 2.934991846e-07 -1.59333674e-07 -1.161032374e-23 -1.140101677e-11 2.880731962e-07 5.286734009e-07 -1.994490006e-07 4.824513938e-22 4.155729131e-11 3.481943823e-06 -7.388785473e-06 -6.396687358e-06 -5.132888183e-25 -1.745525621e-13 3.771644477e-08 -7.129212216e-08 -2.824344166e-07 -6.569845267e-23 7.958694079e-11 -1.165243422e-06 -7.195430351e-07 3.655100004e-07 -7.188992558e-23 4.502175093e-11 9.82895072e-07 -4.536194103e-06 7.8850747e-07 1.664331665e-26 3.265863378e-11 -1.225778225e-07 -6.629948053e-07 1.980594521e-08 -0.2034980027 0.0006073264727 0.003395175789 8.317802147e-05 0.0006801040039 9.997443318e-05 1.148152229e-05 4.257404928e-05 5.934684993e-05 3.187227511e-05 1.966865563e-05 2.069797318e-05 1.923190137e-05 -0.02903157792 -0.03078399004 0.1873476758 -0.0004004799488 -0.000323151247 0.003207643706 -0.000311520957 -0.0002485707453 0.00176515335 -0.0001896574985 -5.560134471e-05 0.0007747048923 -6.00352228e-05 -0.0001138754186 0.0005474871402 1.189536359e-05 1.741006657e-07 6.686927516e-06 -2.565423299e-06 -2.397933619e-06 1.563642022e-05 -1.549440275e-05 -3.478475497e-06 6.344933969e-05 -6.744996734e-06 -1.288250483e-05 6.117689619e-05 -2.472203204e-06 -6.953410955e-06 2.905188484e-05 2.019746925e-05 -1.344336342e-06 -4.87670625e-06 -2.736433017e-06 -4.528375508e-06 2.274111198e-05 -2.158542889e-06 -4.680704894e-06 2.130241243e-05 0.0006045947045 -0.003405262716 0.03233726078 -0.02597599428 -0.04978537718 0.0002449899898 -0.0009141951161 0.003773583734 -0.006237654324 -0.002087245807 8.754185323e-06 -3.08854102e-05 5.515399139e-05 -7.499954073e-05 -3.548692336e-05 8.79351017e-05 -0.0005284839816 -8.244038185e-05 -0.0003485820009 0.0003597385102 2.5782356e-06 -8.072695037e-06 -2.980681838e-05 -7.548191118e-05 4.563774444e-05 -4.381868354e-08 1.636874358e-07 1.327520629e-07 5.528922526e-07 -3.353514853e-07 5.959957477e-06 -1.962263673e-05 9.547683625e-08 -7.031744931e-07 5.84943828e-06 -2.265823976e-06 6.805604671e-07 1.783914486e-05 -4.285416715e-05 1.550909091e-06 1.427617102e-07 -4.380916773e-07 -5.175067353e-06 -1.310101289e-05 7.764921467e-06 6.176221411e-08 -1.924500796e-07 2.982791587e-06 -1.704281283e-06 -5.763307776e-06 -2.127176507e-07 -1.186807719e-07 4.212414094e-06 -4.770883019e-06 -5.064381954e-06 -2.822484259e-08 -1.513013019e-07 -6.150859512e-06 -4.178422318e-06 4.335672354e-06 6.523917103e-08 -2.285785365e-07 2.902099055e-06 -1.876652642e-06 -5.133263517e-06 -0.2923646555 -0.03930565248 -0.01570979229 0.0005176938348 0.002856578549 -0.00112562096 0.0003882258059 -0.0001672468958 0.0001827020972 -9.095785466e-05 7.45032819e-05 -2.527024408e-05 2.812833732e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.1736628217 0.004771513001 0.001891291843 1.013589284e-06 0.000491196096 0.000246210902 4.794576287e-05 3.259525547e-05 4.996487816e-05 4.902680695e-05 3.341474428e-05 2.338015454e-05 2.059360129e-05 0.01628043317 -0.06994465443 0.2011101291 -7.484132654e-06 4.567928968e-06 1.962991134e-05 -0.000833901595 0.0002745237278 0.002217172533 -7.350109818e-05 2.526499347e-05 0.0002022079143 5.961055976e-05 -0.0002841825586 0.0007910367592 3.839295208e-07 -4.230615858e-05 0.0001736679382 1.298389455e-06 -8.330353625e-06 2.732563244e-05 -1.819534881e-05 8.5720281e-06 4.605398142e-05 7.218315119e-05 1.677074044e-05 -2.947726035e-05 4.018657767e-06 -2.072234328e-05 5.866991905e-05 8.082628338e-07 -1.153914707e-05 3.540157643e-05 2.172768697e-07 -8.895664607e-06 3.042933889e-05 2.085696385e-06 -1.038932242e-05 2.927828395e-05 -0.002643758336 0.0003658834391 0.04751826675 0.03689761449 -0.108770685 -0.0002220087166 -2.069841683e-06 0.002452027441 -0.004166433407 0.0008962975852 -0.0001344092184 2.280411669e-05 -0.0007092840782 0.0003615262438 0.0002603417108 -0.0001842198718 -0.00012790958 -0.0002020697725 0.0001358398481 0.0002470496521 -3.259736017e-06 1.713457828e-06 0.0001290004409 -0.0003991056459 0.0001772650591 -1.844424154e-06 7.747115336e-07 9.360164112e-06 1.218351388e-05 -2.816307e-05 -8.898877544e-09 6.642547873e-09 -1.031664708e-05 3.414565084e-06 4.523597865e-06 -4.819976204e-07 1.868368007e-07 -3.294259188e-05 1.467975466e-05 1.006303383e-05 -1.056369876e-06 3.645026137e-07 1.009041925e-05 2.538903551e-05 -4.583318807e-05 -3.050036638e-07 1.430248423e-07 6.173756007e-06 -2.825865588e-05 1.557811519e-05 -2.624637666e-07 3.570859743e-08 7.06475402e-06 2.770821762e-06 -1.340241236e-05 -2.860096633e-07 6.404316754e-08 6.546863954e-06 2.647157168e-06 -1.244103366e-05 -2.396815513e-07 8.092853456e-08 1.369501418e-06 -1.016662448e-05 5.191201644e-06 -0.2923646555 -0.03930565248 -0.01570979229 0.0005176938348 0.002856578549 -0.00112562096 0.0003882258059 -0.0001672468958 0.0001827020972 -9.095785466e-05 7.45032819e-05 -2.527024408e-05 2.812833732e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.4287326437 0.1331941379 0.0023074947 -0.004362494578 1.308864689e-05 0.0002314582911 -0.0004534086998 3.477533063e-05 -8.640680172e-05 8.128513287e-05 -1.896906533e-05 1.805429323e-05 -2.665352069e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.2914445132 -0.007380434013 -0.003229528881 0.0001776784695 0.0001396655889 -1.599164484e-05 1.094267424e-05 4.549517649e-05 -3.820443137e-06 1.783036488e-05 1.112176418e-05 7.079899433e-06 8.648314536e-06 -0.001613610786 0.002197077276 0.2084594107 -0.001044346072 0.002198336186 0.02144814045 5.004464982e-06 -5.138899379e-06 -0.004492460199 1.83091242e-07 -1.132514472e-07 -8.236525038e-05 -2.401647895e-08 7.698803621e-08 0.0001658405723 -1.49839476e-05 -2.409112805e-05 -4.112180283e-06 -4.221912355e-08 5.050521971e-08 4.6478187e-05 -3.777015373e-07 3.21412631e-07 1.377946101e-05 5.87001498e-08 -9.216006233e-08 -5.176785107e-06 -3.677336214e-07 7.603237899e-07 2.258037474e-05 5.33145232e-06 2.80565291e-08 -7.543477303e-08 -3.808362538e-08 5.891463562e-08 7.419118349e-06 -2.683409179e-07 5.882992628e-07 7.481175372e-06 7.834530309e-07 -1.319278901e-05 0.04206920591 -0.0001528510949 -0.0001983060263 -6.266027973e-06 -1.000372243e-05 0.01202411452 0.0007672667266 -0.0004486853511 -2.169844083e-08 7.26315288e-07 -0.0005092967961 -1.113925421e-05 7.185805103e-06 2.896801605e-08 -1.391006295e-07 7.227747038e-08 -9.577424391e-08 4.756323847e-05 4.512161503e-10 3.36378163e-09 -2.349569058e-07 3.429258847e-07 -2.803784484e-05 -5.114066238e-11 2.235671612e-09 -2.087402114e-08 4.193056261e-08 2.93957039e-06 -3.474021384e-08 -3.135527289e-07 3.765640807e-08 9.171721835e-08 3.331064792e-05 1.68748271e-10 -2.394499883e-08 -2.163310375e-05 -3.854503333e-07 2.822118911e-07 5.23660441e-11 -8.26012126e-11 -1.048791312e-07 1.813582529e-07 5.152868348e-06 -1.140949118e-10 2.97789367e-10 4.574129404e-06 2.705788237e-07 -3.946957008e-07 3.920137329e-13 2.28882387e-12 -5.454545788e-09 -1.014507306e-10 1.027526981e-10 -3.491920118e-11 -5.411612712e-10 1.42520033e-08 -2.189346497e-08 2.576216389e-06 9.162719677e-10 -8.265508116e-10 1.549200572e-06 4.297602985e-08 -7.197778063e-08 -0.2447299717 -0.01664237367 0.0002574066538 -0.000108423771 0.0001245013979 0.000107319655 -1.095167808e-05 3.457551997e-05 3.050261931e-05 1.026721869e-05 1.838185079e-05 1.312600887e-05 9.56820439e-06 -0.001621424579 -0.0008010014189 0.2452524862 3.576968955e-06 8.00985344e-06 0.0002920323496 -3.070694249e-08 1.071467971e-06 -0.002732168076 5.057561295e-07 9.32347962e-07 0.0001311801021 -2.474663744e-06 -1.438060943e-07 0.0003521420386 2.850452554e-07 3.055839631e-07 -1.767367947e-05 1.123851699e-09 1.688587574e-09 -2.780365163e-07 4.196820964e-08 4.596415478e-07 6.39335532e-05 1.41132491e-05 3.706076145e-07 -2.163868205e-08 -2.295995629e-07 -1.445789265e-07 1.426007456e-05 -3.891174034e-07 -4.678775176e-07 2.312195283e-05 -1.27482077e-07 -7.722388531e-07 1.380329396e-05 -1.48111875e-07 -7.648027468e-08 1.186147414e-05 -1.54866566e-05 -0.0001011735746 0.07255332207 0.002111112915 0.0008100937961 8.392671408e-07 1.507015523e-05 0.009932984238 -0.000447552932 -0.0005620946328 4.521872531e-08 2.879445383e-06 -7.725077123e-07 -1.162796174e-05 -0.001328642354 -3.242418534e-10 1.429570049e-08 4.206999254e-07 5.986729695e-07 5.749714784e-05 5.022448999e-09 9.527087899e-08 2.464883953e-07 2.780538689e-08 0.0001778414126 3.648445473e-08 -1.064257079e-06 -4.495918788e-05 -4.071814695e-06 -2.05514025e-06 -9.838268894e-11 -1.757879065e-09 -3.830357374e-08 4.531209335e-08 1.310732802e-05 -2.098192224e-11 -4.350223363e-09 4.534479528e-06 1.169362955e-05 9.298876928e-06 4.255120252e-10 2.706155104e-08 -6.076084185e-06 -2.962340015e-07 -5.589878531e-08 -1.031698693e-10 -1.202385058e-08 -5.027638514e-07 -3.77320649e-07 1.044979456e-05 2.010395476e-09 -1.752346868e-08 6.069664277e-06 4.260995636e-07 4.873469745e-07 -2.173766966e-10 -5.969092208e-09 3.375327467e-06 1.103514282e-08 7.973768368e-08 -9.355829353e-11 -6.403131347e-09 -4.441280374e-07 -5.09669867e-07 5.201429424e-06 -0.4283474559 0.1339680093 0.002405698304 -0.004969300078 0.0007510834836 -0.0003204329487 -6.378007874e-05 -0.0002101002215 8.124918172e-05 -1.823353766e-05 4.136628488e-05 -1.211297014e-05 1.235028709e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.2608867774 -0.01575524509 -0.0006806555868 -5.884578247e-06 0.0001342733222 5.052875805e-05 -4.52756051e-06 4.262391776e-05 1.713200044e-05 1.071638799e-05 1.80494839e-05 1.002394398e-05 8.814145295e-06 -0.003293348884 0.00262701183 0.2340409978 -0.0001749757622 0.0008420609961 0.00661694894 1.032742007e-06 9.133883271e-07 -0.003752648383 -3.352244233e-07 1.031678014e-06 0.0001117480729 -8.283680363e-06 2.941111579e-06 0.0003244327753 -2.520764452e-05 -4.872448777e-05 4.353490366e-06 -3.98604508e-08 6.237102534e-08 1.941937894e-05 -3.237757989e-07 3.628598655e-06 5.506176224e-05 -5.907701708e-06 -6.924036592e-07 7.664015306e-08 -5.014551595e-07 2.863115946e-07 2.1120871e-05 -5.003123622e-07 2.780767219e-06 1.422404935e-05 -3.718983269e-07 6.493371185e-07 8.560216881e-06 -2.70529218e-07 1.335747691e-07 1.061029655e-05 -2.540080678e-05 -4.872143735e-05 0.06065128981 0.002860384988 0.0003614687356 -1.266185783e-07 8.229021859e-06 0.01145513687 0.0007069573712 -0.001198122254 1.921879204e-07 1.967845994e-06 -0.001270263496 -0.0001177703137 0.0001447809569 -4.252431743e-09 1.812413647e-07 -4.351799749e-10 3.1571969e-07 5.773346196e-05 -3.170784761e-11 3.982399273e-10 1.903934527e-06 -6.168071859e-07 8.573890875e-05 3.216754425e-09 7.840462598e-08 -1.464519328e-06 -3.533560964e-05 5.265137723e-06 -4.612092672e-10 2.637019233e-09 4.00353601e-08 3.517380725e-07 2.079390539e-05 2.58902284e-10 1.460199031e-09 -6.10447298e-07 2.124160447e-06 8.495210718e-06 3.973989901e-10 1.122395055e-08 1.25254566e-06 -5.732962903e-06 -2.273763117e-06 -4.150139319e-10 -1.25000348e-08 -1.323028116e-06 9.209273167e-07 1.139132857e-05 2.628939316e-10 -4.848510334e-09 3.533918586e-06 -5.555333365e-09 -2.662611435e-08 -1.302388816e-10 -1.81227708e-09 4.492602521e-08 1.392099008e-08 2.579736455e-06 -2.697238019e-10 -4.648131234e-09 -4.667981286e-07 4.466609681e-06 -6.88369883e-07 -0 0 0 0 0 0 0 0 0 0 0 0 0 -0.09885116015 -0.01469359228 0.01334908305 0.01014743146 -0.01722793212 -0.05122044288 0.002330256561 -0.00328891966 -0.01555354832 -0.0002333143187 0.0003100700147 0.002047129609 5.960932162e-05 -5.341303114e-09 0.00136060412 0.0005911324553 0.0004001804665 -0.0001805857928 -0.0002050754627 -4.85159669e-05 3.060799659e-05 6.201610506e-06 3.181719469e-07 3.039668814e-07 -2.021209327e-05 -0.0001394741758 2.532151693e-05 -5.963160581e-06 8.243452507e-06 4.074362276e-05 -1.737598609e-06 -2.687967567e-08 -1.918225706e-05 -1.660957525e-06 4.277245825e-06 1.145508022e-05 -1.064575375e-05 -4.312136779e-06 2.400634614e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.08838907609 -0.01027070674 -0.01941309251 -0.001527480845 -8.683700836e-05 0.0003391243206 -0.0001094510468 4.704255051e-05 8.295707932e-06 -5.318527538e-05 7.787348284e-06 -1.15350292e-05 -1.320713933e-05 0.00144360261 -0.004070891582 -0.14884796 -0.000293044602 0.0004031300171 0.004174202053 7.483683477e-05 -1.707073508e-05 -0.009723620114 1.893764721e-05 -9.150918596e-06 -0.006755070725 -3.047176643e-07 1.15484542e-06 0.00203952114 -3.08595253e-05 -4.996810637e-05 -8.10090146e-06 8.333315128e-08 -1.506817296e-07 -0.0001434275427 -4.759076863e-06 3.683661487e-06 0.0001605140786 1.51510652e-06 -2.876272035e-06 -0.0001306711696 6.360392922e-07 -1.506824034e-06 -3.868731106e-05 1.508484183e-06 -2.934341255e-09 -1.944982363e-07 2.16974262e-07 -5.144778756e-07 -3.959825884e-05 5.923739067e-07 -1.465296433e-06 -1.608484487e-05 9.092589781e-05 9.677052125e-07 -0.06707823167 0.000328785317 -0.001586076896 1.648709052e-05 1.558930408e-05 -0.01079104862 -0.001265696815 0.0004028727221 4.496100882e-07 4.486255049e-07 -0.0001555386781 3.531079332e-05 8.971683303e-07 2.947228922e-06 1.482940473e-05 -2.89862089e-06 3.015628425e-05 -0.002767374382 1.148148725e-07 -6.884111908e-08 5.926827829e-06 -1.22974064e-05 0.0007038767042 -4.588307061e-10 2.949420064e-08 -2.667527868e-07 7.549775347e-07 3.885615701e-05 2.53481978e-07 8.157881302e-08 3.674702156e-08 -1.62004584e-08 1.655805549e-06 -1.694025667e-09 9.861948141e-08 5.092853361e-05 1.026715369e-07 -9.017050809e-07 6.999559959e-09 6.917128046e-10 1.165130292e-06 -2.229553694e-06 -5.707078193e-05 2.814125567e-09 6.674733547e-10 5.432960652e-06 3.171641056e-07 -5.521755255e-07 9.527975724e-09 2.216497451e-09 -6.542914871e-06 -3.726401889e-07 1.546429409e-07 5.992010265e-09 1.710006158e-09 -5.380934076e-08 -3.452125584e-08 -1.393390212e-05 3.716854383e-09 3.700483889e-10 -2.128816503e-06 -6.010276045e-08 -6.20505438e-09 --0.02891784174 0.01111209012 0.002837968769 -2.615580689e-05 0.0004481526479 -0.0001706109328 1.317073142e-05 3.166714459e-05 -9.948208087e-06 5.934929894e-06 1.224794691e-05 1.390237046e-06 3.056174832e-06 -0.05606956723 -0.006373455698 0.02830894706 -1.571392805e-05 -7.662118905e-05 -5.84056999e-05 -0.0001475928793 0.001153465682 0.004288643307 -1.658496374e-05 -8.220316646e-05 0.0005828482087 5.82422533e-05 -1.815398136e-07 0.0001843930883 -3.30203184e-05 -4.897750864e-06 -0.000214350328 -1.158758709e-05 -5.40425476e-06 6.956919198e-05 -4.817970323e-07 -8.234739016e-06 2.372066736e-05 -1.126535793e-05 -2.103716617e-05 1.477261495e-07 -9.6300813e-06 -1.750945605e-06 2.970756067e-05 -4.765556036e-06 -1.478008051e-06 1.19905711e-05 -8.546334326e-07 -3.832435591e-07 -1.983058003e-06 -5.111090878e-06 -7.106304163e-07 9.566581595e-06 0.0001455000543 0.001974992033 0.02936901862 -0.07117409684 -0.009889801534 -8.598354192e-05 0.0002796328763 -0.001263911789 -0.001356406551 -0.006594602965 -9.546893151e-06 7.850009158e-05 0.0001952590369 0.00213538026 0.001073157487 -1.212601737e-06 4.147466584e-06 2.389637731e-05 7.653766514e-05 0.0008253084095 -2.039697802e-06 1.785257196e-05 7.902891101e-05 1.215268475e-05 -0.0002329132449 -9.195889708e-08 1.548406338e-06 -4.563531058e-06 -7.31869607e-05 -1.83329665e-05 -6.312501956e-08 2.492700682e-07 2.238456096e-06 -8.656135156e-06 3.064621966e-05 2.635451883e-08 1.713267972e-07 -4.264853699e-06 -1.170321112e-05 -1.411728967e-06 -3.960653358e-08 6.193460166e-07 4.198687106e-06 -2.508101778e-05 -2.446032652e-06 -2.957506548e-08 3.413024004e-07 -9.960571321e-06 -2.355441334e-06 1.800812002e-05 -5.496244062e-08 2.479740612e-07 2.343928959e-06 -5.81309728e-06 -2.364998367e-06 -1.939582224e-08 2.370513658e-07 2.940148279e-06 -5.549317336e-06 -2.599726516e-06 -1.435013463e-08 2.010886835e-07 -4.822260424e-06 -1.087712501e-06 4.179148938e-06 --0.05261084928 -0.08718091793 -0.03189246219 -0.003271798335 0.00258220504 0.0009527887785 0.0002652334823 -0.000139382935 -6.077006534e-05 -2.477160004e-05 2.215251188e-05 -1.207275671e-07 6.099884721e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.03138097593 0.009737407232 0.004445302128 -5.397053661e-06 0.0004127934271 -0.0002122817589 3.938820774e-05 2.119324035e-05 -1.814724976e-05 1.681694597e-05 7.494519198e-06 -4.538030799e-08 5.009917421e-06 -0.08339542255 0.0157952292 0.0354143949 0.0003607641199 -0.003534601667 -0.0003175500675 -1.229277167e-05 0.0015793165 0.00466706118 7.343879899e-06 -9.159699062e-05 0.00118662709 6.458402579e-05 -5.11847541e-06 -0.0001892950334 2.027156669e-05 -0.000214056279 1.743309988e-05 -1.421406486e-05 4.34576979e-06 7.192644613e-05 2.902356417e-07 -1.331276432e-05 -5.692769205e-06 1.043680633e-05 -3.228293331e-05 1.60917949e-06 -1.142374362e-05 1.75737865e-06 3.591869738e-05 -2.229995628e-06 6.513514561e-07 -1.681789751e-06 -5.562994129e-06 1.638146085e-06 3.517425793e-06 -6.021503804e-06 7.32132305e-07 1.067184555e-05 0.001254326129 0.0008672604501 0.03062117653 -0.09195230909 0.01068898309 0.0001946648117 0.0001283721053 -0.0006634724589 0.001387629249 -0.0132220105 9.497965622e-06 2.20038516e-05 0.001261268833 -2.967856145e-05 0.002067626456 0.000273305317 0.0001130695787 -2.951034516e-07 0.0001002431351 0.001074280307 1.503672309e-07 -3.954234035e-08 1.135272652e-05 8.98314891e-07 -0.0003599202423 -1.135761186e-07 1.909870306e-07 3.633531984e-06 -4.253016267e-05 7.436951833e-06 1.55609082e-08 4.192724731e-08 2.17591685e-07 2.255833038e-06 2.323196592e-05 8.539202727e-08 3.745926053e-07 4.771494373e-06 -2.760240468e-05 -1.904689952e-05 1.610413958e-07 4.691231026e-07 -1.635998052e-05 7.447604118e-06 2.21564034e-06 5.185435263e-08 1.24935657e-07 -8.130328208e-06 1.753188315e-06 1.051632534e-05 1.071955975e-07 8.803410949e-08 -9.716256404e-07 -1.032944124e-05 2.570308348e-06 9.616434447e-08 1.122452622e-07 -9.575342336e-06 1.972362347e-06 5.198793323e-06 5.307325397e-08 9.866132054e-08 -2.063722002e-06 -1.656209684e-07 2.840523665e-07 -0 0 0 0 0 0 0 0 0 0 0 0 0 0.008920580631 -0.03956498455 0.1657839693 0.08610324418 -0.01419201404 0.006722549332 0.02602705899 -0.005323241906 0.001567136224 -0.003533805135 0.0008246601954 -0.000155459278 -0.001935659153 5.811458867e-07 1.95630294e-05 -0.0001065394889 0.0001410192176 -0.001127953254 2.037541845e-05 -7.20525388e-05 0.0003524274863 3.789526298e-08 4.736771809e-06 -1.397824368e-05 -1.199293469e-05 0.0002351850177 -4.196674345e-05 -7.129095262e-05 1.722299999e-05 -3.960834119e-06 2.691650328e-05 1.820987368e-06 -4.854441454e-07 2.51822064e-06 -2.361124523e-05 2.114174138e-06 1.540134434e-06 -3.803988851e-06 1.920053559e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.001729995774 -0.0002010234754 -0.000379962881 -2.989662889e-05 -1.699617918e-06 6.637512998e-06 -2.142231335e-06 9.207406297e-07 1.623677981e-07 -1.040969153e-06 1.524179256e-07 -2.257694349e-07 -2.584968216e-07 -0.03182293404 0.122962351 -0.007551915832 0.004328158257 -0.000689454195 0.004769246967 -0.003164225212 0.000804720921 -0.0002051271705 -0.0001967041828 3.208488786e-05 -0.0001343257154 2.258209697e-06 -1.033769007e-05 3.993767532e-05 1.91422488e-05 3.000446016e-05 -1.454359397e-05 2.31712634e-06 -6.193545709e-07 -2.798298344e-06 1.801188301e-05 -1.954797588e-06 7.245532289e-06 -5.793059716e-06 2.722410696e-05 -4.302384628e-06 -1.814142805e-06 1.011570895e-05 -1.881436504e-06 7.293106182e-07 -1.374176042e-06 8.707708984e-06 -2.257982713e-06 9.912947606e-06 -1.074943247e-06 -1.82468663e-06 9.727681545e-06 -2.197724547e-06 -0.00423976144 0.001230372429 -0.001081759265 -0.02066708847 0.09470164857 -0.0003668154774 -0.0003514422294 -0.001271420562 0.02880767345 -0.005087627297 -1.887258914e-05 -1.184854924e-05 2.426842931e-05 -0.001929399495 0.0004026619448 -0.0001040013657 -0.0003508841203 0.0001772397464 -0.001237507685 -6.039865091e-05 -5.109992757e-06 -8.391128643e-07 -3.547831124e-05 0.0001842674423 1.512980326e-05 3.922354513e-08 -8.706096428e-10 1.477074149e-06 -1.008381504e-05 8.630042727e-07 -8.847420324e-06 -5.275222052e-06 -1.746834533e-06 1.021325144e-06 -2.482590745e-07 7.267039249e-08 -1.779433124e-06 3.533606063e-07 4.123993813e-05 1.390383353e-06 -3.158164399e-07 1.230045399e-08 -2.106367717e-06 1.099001198e-05 -1.324640153e-06 -1.179605798e-07 -1.697977238e-08 3.890605305e-07 -6.705202839e-07 4.161321203e-06 -4.499445405e-07 9.455002301e-08 -2.52717636e-07 1.232405867e-05 -3.344015069e-06 -2.779065737e-07 8.712117402e-08 -2.200589662e-06 7.476192558e-06 -2.410573273e-07 -2.206321027e-07 4.404875622e-08 1.315603684e-07 -9.769808479e-07 5.261074664e-06 --0.08871338424 0.03408937395 0.008706244958 -8.024008733e-05 0.00137483075 -0.0005233956728 4.040481887e-05 9.714762226e-05 -3.051884765e-05 1.820701976e-05 3.757392512e-05 4.264932162e-06 9.375651705e-06 0.01753334404 0.001746362431 0.1031182773 2.061329896e-06 1.80267655e-05 -0.0002342439227 4.777399731e-05 -0.0003817283041 0.01314629877 1.299615384e-05 4.068456038e-05 0.00176452266 -2.328101533e-05 -2.238203163e-07 0.0005511830258 2.165035876e-05 1.329972919e-05 -0.0006051937607 2.808424434e-06 3.163210824e-07 0.0002168637986 2.132193588e-07 3.250258065e-06 7.10047073e-05 -4.541063962e-05 5.568603298e-06 3.613855917e-08 1.348779432e-06 -5.493870347e-07 0.0001015009734 7.339001543e-07 -4.993268071e-07 4.478200194e-05 1.356738572e-07 -7.376518359e-07 1.611988188e-05 1.217408847e-06 3.53445324e-09 3.280506443e-05 -6.705320501e-05 -0.0007646908358 0.07713830919 0.02572213312 0.004234662513 2.807043854e-05 -8.934777696e-05 0.001616080457 0.0003929380776 0.002081343967 2.933161044e-06 -3.37615524e-05 -6.266701268e-05 -0.0006630556816 0.003418841722 3.768244368e-07 -6.543044361e-07 1.270315115e-05 4.279533994e-06 0.002537876497 6.371655754e-07 -6.242548472e-06 -2.685284133e-05 -4.136839623e-06 -0.000713115546 6.847834506e-08 -1.649698484e-06 -4.687061534e-05 1.947451232e-05 3.810362911e-06 1.973137617e-08 -9.521417203e-08 -1.030629882e-06 3.181501874e-06 9.391463673e-05 -8.654375452e-09 -5.024578793e-08 -4.439859335e-06 -1.123206295e-05 -1.150489519e-05 1.20462821e-08 -2.350077756e-07 6.064630431e-06 8.537645902e-06 8.796546927e-07 8.841521907e-09 -1.873806024e-07 6.405583709e-08 -1.614220304e-06 6.027882809e-05 1.949166447e-08 -9.529248541e-08 4.23746516e-06 2.245701586e-06 1.176832755e-06 5.595068309e-09 -9.431198295e-08 8.673765901e-06 1.84011231e-06 1.079566787e-06 4.180827436e-09 -9.331964147e-08 -3.539984824e-07 -1.851920395e-06 2.119251743e-05 -0.07095922757 0.1175858341 0.04301516728 0.004412859435 -0.003482765962 -0.001285080106 -0.0003577353965 0.0001879936465 8.196402368e-05 3.341085781e-05 -2.98783455e-05 1.628320969e-07 -8.227259472e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.04189136666 -0.01299874477 -0.005934161569 7.204682044e-06 -0.0005510498096 0.000283381021 -5.258045054e-05 -2.829146564e-05 2.422528525e-05 -2.244942449e-05 -1.000464907e-05 6.057947737e-08 -6.687882751e-06 -0.003586056753 0.1086536941 -0.06133495728 0.002642950686 1.119981941e-05 0.002027696195 -0.002386656123 0.0002763038784 -0.006227805716 0.0001300731928 -2.496765124e-05 -0.001575808835 1.948680906e-06 -0.0001115011595 0.0002821088404 6.549188199e-05 0.0001260419834 4.456178821e-05 2.249391544e-06 1.140642398e-05 -9.639548347e-05 1.403607573e-05 -1.297639493e-06 1.2342166e-05 1.251426388e-06 -4.245883507e-06 3.022515544e-05 5.23630528e-10 1.702169712e-05 -5.194872561e-05 -8.729306567e-08 1.384961569e-05 -9.33306439e-06 -5.252058785e-08 1.255783634e-05 -1.188236999e-05 -3.090313532e-07 9.961933043e-06 -1.677038481e-05 -0.0037181807 0.0005285031706 -0.03586715656 -0.01076457944 0.1153798397 -0.0004227082318 5.384195423e-05 -0.003141656773 0.02123838808 -0.001334879813 -0.0001496747026 1.672432861e-05 -0.0007091894707 -0.004056842855 0.0004260026861 -0.0006774767542 4.739136932e-05 -1.510867748e-06 -7.871856331e-06 -0.001448626525 -2.442905642e-07 -2.420537715e-08 1.284803734e-05 -2.8600471e-05 0.0004798088032 -1.886053869e-06 3.839120466e-07 -6.912791791e-07 -1.951161752e-05 6.410743456e-05 -2.633532665e-07 7.031779409e-09 -2.957820857e-06 -1.180386018e-07 -3.108036861e-05 -7.163807896e-07 1.231627746e-07 1.984143717e-05 6.375718159e-06 2.982768674e-05 -1.188558399e-06 2.459524827e-07 2.481978746e-06 2.045839968e-05 -1.365530369e-05 -2.970646504e-07 8.105496598e-08 1.112714419e-06 9.575182151e-06 -1.616226437e-05 -3.668964258e-07 4.38633127e-08 1.423322261e-06 6.199405901e-07 9.751243533e-06 -3.591418283e-07 6.159181899e-08 -2.083472946e-07 1.030773885e-05 -6.79507468e-06 -2.739072532e-07 5.530285628e-08 5.474207541e-07 -5.844208862e-06 7.969509228e-06 -0 0 0 0 0 0 0 0 0 0 0 0 0 -0.005092260215 0.2159229816 0.03128609154 0.01023966199 0.1364105291 -0.005769465182 0.003939461264 0.03711481036 -0.00115350517 -0.0006503489898 -0.004592199348 0.0001103071516 -0.003444074923 -3.267114599e-07 1.255412052e-05 0.0001133718668 -0.001954061025 -0.000118384221 -1.688859913e-05 0.0005021928503 5.352181271e-05 2.100725555e-07 -1.024731525e-05 -6.451937434e-06 3.077112667e-08 4.853601893e-05 0.0002761175576 -1.371259e-05 -9.312617875e-05 2.874064809e-06 5.195097589e-05 -9.443772269e-07 -3.900716765e-07 -3.145050829e-05 -2.116425214e-06 -4.356827753e-07 -1.388553119e-06 2.884102274e-05 2.89138457e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.0002494338683 -2.898392229e-05 -5.478372412e-05 -4.310549138e-06 -2.45053935e-07 9.570084319e-07 -3.088707248e-07 1.327540219e-07 2.341047798e-08 -1.500887843e-07 2.197588765e-08 -3.255183876e-08 -3.727053159e-08 0.1178396004 0.03327416402 0.001486703152 0.000300850084 0.01669489188 -0.00226630718 -0.0007330495835 -0.003475237834 -1.887640138e-05 -2.328904449e-05 -0.0002724694242 -1.840323931e-05 -1.238603133e-05 -1.890585189e-06 5.754100819e-06 -2.533941026e-05 8.945375078e-05 -1.081987783e-07 5.847396975e-07 2.441060257e-06 -4.108785794e-07 1.050649063e-06 3.611193161e-05 -1.030035133e-06 2.867468695e-05 5.549108726e-06 2.567654973e-07 1.066716748e-05 1.74974921e-06 1.91410635e-07 -9.068487264e-08 1.340982603e-05 8.946278096e-07 1.084090075e-05 2.070410754e-06 -9.556506645e-09 7.716208216e-06 2.396942507e-06 5.129699389e-07 -0.003257524114 -0.001419906168 -1.435953442e-05 0.1132231143 0.0173004834 -0.001301066453 0.0001017569226 0.0002953545919 0.004160075235 0.03553343691 -3.077031881e-05 1.579449011e-06 -9.544126973e-06 -0.0003329997855 -0.002335244342 -0.0009205670036 4.78671689e-05 -0.001692966762 -0.0001276775487 -5.772424614e-06 -9.260069485e-06 2.772841615e-07 0.0002369134645 2.769900074e-05 1.497161099e-06 -3.491013331e-07 3.106612177e-08 -1.353586183e-05 -1.104346916e-06 8.340441388e-08 -2.907086282e-05 2.171138599e-06 -2.446398696e-07 2.683225833e-07 1.210392288e-07 -4.452375574e-08 -2.626257767e-06 4.414942534e-07 -8.04401244e-07 7.441662867e-05 -4.955668241e-07 -6.091654188e-09 1.354454759e-05 1.732537647e-06 -9.995963253e-08 -2.271591453e-07 6.749194911e-09 -8.005594454e-08 6.30015076e-06 4.561721826e-07 -8.889249067e-08 -4.675914035e-07 5.264024494e-08 3.417648886e-06 1.210262172e-05 -1.288979016e-07 -1.726444823e-07 7.005365734e-06 2.356218887e-06 -5.06518201e-08 -2.32526609e-07 -3.461515232e-08 -5.804354941e-08 7.17101123e-06 7.186629232e-07 -2.506828058e-05 -9.632841743e-06 -2.460176593e-06 2.267392953e-08 -3.884942874e-07 1.478990988e-07 -1.141743543e-08 -2.745159452e-08 8.62389641e-09 -5.144868318e-09 -1.061749256e-08 -1.205167822e-09 -2.649334929e-09 -0.003073473539 0.1264656511 0.0008547227895 0.0001465185612 -8.448519556e-06 -2.14377066e-06 -0.001770203234 -0.0001064732035 -3.931415994e-06 0.0001927521306 -9.338245219e-06 -1.584219952e-06 -5.266008637e-08 -0.0001180608793 -2.984551725e-07 -3.139107752e-06 0.0001099804852 4.766162656e-06 -1.85438372e-06 3.360154538e-05 3.088407513e-07 1.586350863e-05 -2.923195903e-07 -2.984284913e-08 1.323104317e-07 9.163260018e-08 3.198459054e-05 -5.790005558e-07 2.522456806e-05 5.407972544e-07 -4.2104453e-07 1.467713476e-05 7.174357798e-07 -4.051902442e-08 1.079774012e-05 3.137279339e-06 -2.874702145e-07 1.244767025e-05 1.632626658e-07 -0.003948769473 4.678479658e-05 -0.0004920241828 -0.005407936832 0.1511446462 -0.0002098048309 -8.029597559e-05 0.0003822345543 0.01783235546 -0.000576345036 -0.0001789660916 -1.932439079e-05 -0.004281163069 0.0001074790427 -1.801115677e-06 -9.263546173e-06 -8.726123072e-07 -0.0001597314391 8.438925887e-06 -3.89692037e-07 -1.921597902e-05 -1.643664631e-06 6.253296532e-06 -0.0001842746681 2.2136322e-07 -2.618508679e-06 -9.060473691e-07 -1.107840735e-06 -9.089647785e-06 0.0001588125484 -2.319543526e-07 -8.74937613e-08 9.477445928e-06 2.369219215e-06 -1.27222085e-08 -3.206524117e-07 1.403352698e-08 1.607391712e-05 -1.78578314e-06 -3.328629262e-08 -1.216216878e-06 -4.834717033e-08 -1.083379035e-07 -1.417342991e-06 4.932527394e-05 -5.165362831e-07 -4.828104351e-08 -7.479287683e-07 2.291973106e-05 3.374186545e-07 -2.867563929e-07 -7.322364348e-08 -2.446495871e-07 -1.091605707e-06 1.531443162e-05 -3.788170578e-07 -2.282909179e-08 -1.492177773e-07 -1.012118897e-06 1.623442378e-05 -3.226994069e-07 -1.957270674e-08 -2.539990282e-07 1.25912371e-05 9.329309758e-07 -0.1271309552 0.2106674483 0.07706621803 0.007906104029 -0.006239743279 -0.002302356817 -0.0006409207684 0.0003368104849 0.0001468472104 5.985908263e-05 -5.353021351e-05 2.917309098e-07 -1.47400048e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.07507696299 0.02329611941 0.01063509892 -1.291210315e-05 0.0009875816776 -0.0005078704306 9.423374919e-05 5.070346204e-05 -4.341612579e-05 4.023345969e-05 1.79301543e-05 -1.08569463e-07 1.198590464e-05 0.03071402572 0.05573372471 0.1032647447 0.001446167818 0.0008953325279 -0.003358930705 -0.001331129404 -0.0005099936491 0.01115709916 5.690566653e-05 6.314075769e-05 0.002825926964 -7.103925144e-06 -6.675214629e-05 -0.0004999250808 -0.0001136894854 -0.0001142093746 4.206036037e-05 6.670306679e-06 5.371225507e-06 0.0001724370483 7.892772452e-06 2.797954335e-06 -2.172773949e-05 -9.605995931e-07 1.144150438e-05 1.615731681e-05 1.549656624e-06 1.060487399e-05 9.1858927e-05 4.2632771e-07 9.995948172e-06 8.489884864e-06 1.201657664e-06 8.232910232e-06 1.708738757e-05 1.242671786e-06 5.796541271e-06 2.939451416e-05 -0.002639058166 -0.000144529514 0.06294483939 0.0369442098 0.06048239151 -0.0003172924371 -1.949841086e-05 0.004254552092 0.01162420869 0.004182417767 -8.788304795e-05 -3.937686618e-06 0.00170577368 -0.002007514555 -0.0009261433916 -0.0004925385433 -8.735523939e-06 -7.486949618e-07 -2.524505603e-05 0.002591439804 -1.986874039e-07 -2.915026188e-09 -2.59603857e-05 -7.138514679e-06 -0.0008600407439 -1.011579882e-06 -2.829763805e-08 1.134275562e-06 8.020825127e-05 2.173735882e-05 -1.552853072e-07 -3.106588148e-09 -1.582019891e-06 3.910737912e-07 5.570232655e-05 -4.377735196e-07 -1.011369714e-07 1.463078397e-05 -4.231558883e-06 -5.268822265e-05 -7.342259583e-07 -1.639897034e-07 -3.510080904e-06 6.200573714e-05 1.275393398e-05 -1.889442536e-07 -5.259910008e-08 -8.076979775e-07 7.969843662e-06 2.814610157e-05 -2.497940686e-07 -7.38815062e-09 -2.395848503e-06 4.669109064e-06 4.393735896e-06 -2.41499066e-07 -2.521680429e-08 4.200100257e-06 5.024386979e-06 1.206668852e-05 -1.761931614e-07 -3.062796561e-08 -8.652877561e-07 1.626452051e-05 1.329598156e-06 -0.3602043711 0.06593937792 0.0005115658487 0.001491413894 0.0003042300529 9.211316764e-05 4.904298905e-05 4.776543496e-07 2.224253341e-05 9.427819716e-06 4.774683111e-06 8.819647603e-06 5.965467925e-06 -0.07471313703 -0.01124861083 0.01262910365 0.007264752216 -0.01048578692 -0.03129988612 0.001110305994 -0.001280732653 -0.006047013313 -2.350948608e-05 2.419986245e-05 0.0001579374858 -3.534909916e-07 -1.505078263e-10 -4.007758662e-05 -0.0001051645109 -7.091527433e-05 3.622199441e-05 9.834728847e-06 2.330319756e-06 -1.808996765e-06 -4.710724062e-07 -2.9007665e-08 -9.242498959e-10 -2.592471006e-06 -1.708312134e-05 3.205201678e-06 3.750809296e-07 -4.217580339e-07 -2.062418238e-06 -1.792223945e-07 1.026757123e-09 -3.23237034e-06 4.923402027e-07 -1.102898414e-06 -3.328327301e-06 -1.738473904e-06 -7.047845908e-07 4.558534737e-07 -8.261628339e-20 1.046950515e-06 -0.01771613212 -0.005026731511 0.003227506595 -1.539474636e-20 9.460027394e-07 -0.01555942007 -0.004533054162 0.0009796933227 1.47002519e-20 2.894646371e-07 0.001810649324 -0.001613840832 -0.007065662551 -3.885835183e-23 4.23077685e-09 8.054558918e-05 -8.732058787e-05 -0.0004735112234 -3.888617559e-23 3.578541156e-10 1.287814915e-06 8.994598339e-06 2.907039742e-05 -8.527026696e-23 4.700859072e-09 -7.530129947e-05 -1.429666074e-06 -6.616378113e-06 -2.484843637e-23 2.471771246e-12 1.746111477e-06 -2.689196161e-06 -5.908892093e-06 6.486544679e-25 2.535684172e-11 2.201250028e-07 -2.719313956e-07 -2.054411596e-06 -2.41824199e-24 7.572718855e-11 -1.770309339e-06 -2.133801057e-07 1.254011948e-07 -5.121303532e-26 3.057633175e-13 2.878083577e-08 6.053605155e-08 -2.220884822e-08 2.372276758e-24 7.91655534e-11 6.008801437e-07 -8.985023203e-07 -2.004207714e-06 2.470760412e-24 6.517755859e-11 -1.05809547e-06 -2.479377187e-08 -5.847476904e-08 2.045980906e-25 3.616360084e-11 1.271097779e-07 -8.568623775e-07 -7.195632397e-08 -0.3196118355 -0.01265310329 -0.0216420335 -0.0021934756 0.003412417145 -0.0006729572318 0.0001708149316 -0.000197058273 0.0002013240815 -7.091479895e-05 5.500748136e-05 -2.372126506e-05 2.717985869e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.1813500653 0.002980822694 0.002216827458 -2.6027743e-05 0.0005385824738 0.0001952594359 3.164461339e-05 3.530865228e-05 5.284895607e-05 4.366009797e-05 2.860977662e-05 2.264869119e-05 2.035576596e-05 -0.03744130944 -0.004505280987 0.2099864085 -1.530386271e-06 -9.805621988e-06 5.418817645e-05 7.036885815e-05 -0.0005329616282 0.002275238515 -1.092195962e-05 -5.515177647e-05 0.0003201961872 -0.0001503116928 7.694416326e-07 0.0007533278969 -1.678763914e-05 -5.416302513e-06 0.0001175477344 -3.371076734e-06 -1.561774517e-06 2.440884667e-05 -6.015528153e-07 -1.147370209e-05 5.822334803e-05 8.206622173e-05 -1.766408159e-05 8.580222595e-08 -7.783456792e-06 -1.554875493e-06 4.966403392e-05 -4.104682358e-06 -1.554385876e-06 3.03855412e-05 -9.493973767e-07 -1.849007028e-06 2.635788307e-05 -4.722905594e-06 -7.183679729e-07 2.808100163e-05 -0.0001242123779 -0.001862595692 0.06405252492 -0.05966458784 -0.007758357704 8.62596407e-05 -0.000302585812 0.003096308345 -0.0006209653867 -0.002537623108 9.778929394e-06 -6.346887587e-05 -2.443788287e-05 -0.0002917019475 0.0003411669483 1.237633443e-06 -4.847399189e-06 -8.636113159e-05 -0.0003343611852 0.0003913797893 2.078007225e-06 -1.616555237e-05 -0.0001568107243 -2.351217146e-05 0.0001792786594 4.919875884e-08 -2.376023678e-07 2.800785349e-06 -2.334510479e-06 -5.13032115e-07 6.430587415e-08 -2.373400437e-07 2.732422129e-06 -1.027073643e-05 7.112738173e-06 -2.639204141e-08 -1.537440146e-07 -4.150811525e-06 -1.332184742e-05 1.56499527e-05 4.069426793e-08 -6.099601572e-07 2.311229493e-05 -2.243773373e-05 -2.022592881e-06 3.056877927e-08 -2.751585112e-07 -1.024002622e-05 -2.206628007e-06 1.166378519e-05 5.340393251e-08 -2.302571958e-07 8.682071814e-06 -6.806017804e-06 -2.44174871e-06 2.027388278e-08 -2.25134676e-07 8.281447889e-06 -6.081861081e-06 -2.705929142e-06 1.49525807e-08 -1.795508238e-07 -5.859992795e-06 -1.444417991e-06 6.796681429e-06 -0.3196118355 -0.01265310329 -0.0216420335 -0.0021934756 0.003412417145 -0.0006729572318 0.0001708149316 -0.000197058273 0.0002013240815 -7.091479895e-05 5.500748136e-05 -2.372126506e-05 2.717985869e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.1948719308 0.0009721699201 0.002896602643 -3.239172573e-06 0.0006202660647 0.0001260620019 1.739602056e-05 3.930232176e-05 5.610816838e-05 3.579002228e-05 2.297197587e-05 2.136643603e-05 1.945660554e-05 -0.05724810196 0.01390074063 0.2046339776 3.559005716e-05 -0.0004865807428 0.001847397795 1.836008217e-05 -0.0004880766155 0.002058209654 2.019393908e-05 -0.0001612323672 0.0006033961998 -0.0001406887253 1.779046481e-05 0.0006280570724 2.788810643e-05 1.049216012e-05 -1.025018689e-06 -6.80493942e-06 2.170312822e-06 2.066369383e-05 5.098795978e-07 -1.669431834e-05 6.67904126e-05 7.255452073e-05 -1.828253871e-05 9.600237235e-07 -9.073900768e-06 1.771789862e-06 3.674050513e-05 -2.506745394e-06 4.59122265e-06 1.801448269e-05 -5.394655104e-06 3.081492134e-06 2.290703861e-05 -5.732791831e-06 1.024639361e-06 2.402095424e-05 -0.001166009958 -0.0008268717715 0.05555285569 -0.0808502287 0.01210411961 -0.0001891024722 -0.000141021738 0.003963907056 0.001026575088 -0.0059508826 -6.644162902e-06 -1.264435374e-05 0.0001013744647 2.232378558e-05 -0.0001399545546 -0.0002638703086 -0.0001244721321 2.707890234e-07 -0.0002443369388 0.000497624983 -1.479562029e-07 4.816347702e-08 -0.0001426867035 1.665138022e-05 9.928159229e-05 1.531764236e-07 2.952311652e-07 -4.175660728e-07 1.431204267e-06 -4.461348386e-07 -9.519616551e-09 -4.983625251e-08 -4.846590857e-07 -9.798374321e-06 8.12916141e-06 -7.170132432e-08 -3.55481621e-07 6.019174458e-06 -3.983845836e-05 2.722529699e-05 -1.386713338e-07 -3.882891249e-07 -1.298492545e-05 7.433086588e-06 1.964629858e-06 -4.585202845e-08 -9.610779197e-08 -9.729978896e-06 2.012424932e-06 5.879828989e-06 -1.016063863e-07 -8.438071818e-08 7.364053811e-06 -1.252698515e-05 3.338664826e-06 -9.003574996e-08 -1.063444398e-07 -1.17276046e-05 2.723128386e-06 7.211046479e-06 -4.778417574e-08 -8.752009253e-08 -2.652087486e-06 7.992027518e-07 4.07706385e-07 -0.3359516208 0.043471527 -6.36005979e-05 0.002563242314 0.0001266133647 1.537530105e-05 0.000131907056 2.014910456e-06 9.553440674e-06 2.196750305e-05 6.759460416e-06 8.220623833e-06 9.240377356e-06 0.01896567434 0.03615268368 -0.1384766169 -0.04627068261 0.01027092147 0.005160790621 -0.005421327485 0.001296521636 0.0007089009763 -0.0004113482298 0.0001056418261 5.83245221e-05 -0.0001819346093 5.504779914e-08 4.398855826e-05 9.169321757e-06 2.896230763e-05 -0.0001263594542 4.400435465e-06 8.334287102e-06 -3.431755406e-05 1.741920791e-08 4.096779404e-08 -1.173815939e-07 2.222542328e-06 -2.269098915e-05 4.041733237e-06 -1.326531598e-05 3.611358982e-06 1.688173527e-06 -2.421502894e-06 -1.666559867e-07 6.19563971e-07 6.278665519e-07 -7.024740004e-06 1.849210846e-06 5.718011308e-07 1.546137218e-06 -5.921178015e-06 -1.29804946e-18 8.46453628e-07 0.005513195366 0.00878594799 -0.04088506626 1.78525336e-19 8.084446927e-07 0.005206075158 0.006460532398 -0.03297292971 -2.734564737e-19 2.693813982e-07 -0.008740357892 0.002170583643 0.000963885041 2.492433004e-21 6.054320627e-09 -0.000123147365 3.096357909e-05 1.729599499e-05 7.267483823e-22 4.480242904e-10 8.708982534e-06 -4.446255587e-05 8.960688923e-06 1.448050959e-21 3.597759324e-09 4.555860299e-05 -8.526153847e-05 -9.652839759e-05 9.670516822e-25 8.845186555e-12 6.655711868e-07 -1.854004229e-07 -5.92907642e-08 1.260916641e-24 -1.983744406e-11 4.503061573e-07 -1.462582023e-07 -6.40161181e-08 -2.550120549e-22 4.024539128e-11 3.13280275e-06 6.05112764e-06 -2.036859565e-05 4.641396919e-24 3.483857201e-14 2.270358104e-08 2.527275338e-07 -1.10063433e-06 -2.020723557e-23 8.099252808e-11 -2.136560011e-06 6.106968805e-07 1.864123636e-07 9.355549132e-23 4.386769113e-11 9.059410024e-07 1.715477066e-06 -5.483715235e-06 -5.242457076e-23 3.176064111e-11 1.072221046e-07 -9.697857595e-07 6.750216577e-08 -0.2012833119 0.0008761074769 0.003323099852 6.944114398e-05 0.000677906376 0.000112037868 1.242941904e-05 4.097620405e-05 5.967488817e-05 3.346306593e-05 2.023334325e-05 2.069486427e-05 1.939923493e-05 0.02077744113 -0.08339890458 0.1872899249 -0.0006968358001 0.0004051693674 0.002474889483 -0.0007904000434 0.0002037237361 0.001815168066 -0.0002774530085 4.663951329e-05 0.0007159527115 5.206658365e-05 -0.0002366605448 0.0005681446361 5.848937168e-06 9.690559725e-06 7.710433589e-06 -6.418722983e-06 1.730090362e-06 1.45011547e-05 -2.004760725e-05 3.567631006e-06 5.887886379e-05 5.373925378e-06 -2.720169497e-05 6.431457798e-05 2.014665165e-06 -1.275828697e-05 3.099161541e-05 1.981858615e-05 1.245306117e-06 -7.414133215e-06 2.154505875e-06 -9.715845201e-06 2.280300898e-05 1.407528929e-06 -9.735942259e-06 2.293533396e-05 -0.004130753456 0.001227792251 0.03145712326 0.02140625604 -0.09868369813 -0.000346806181 -0.0003301851244 0.00361871844 -0.009801582305 0.001661206843 -1.833205813e-05 -1.379082397e-05 7.210631545e-05 -0.0001882578312 3.917145768e-05 -0.0001004311423 -0.0003337869168 7.157085749e-05 -0.0004909227533 0.0003324929401 -4.972093656e-06 -9.208913907e-07 2.954413099e-05 -0.0001524018871 4.980200584e-05 3.869162325e-08 3.677622621e-08 -7.72212032e-08 5.376180991e-07 -2.126741937e-07 -8.541404552e-06 -4.724694158e-06 -1.837713119e-07 5.174081193e-07 4.924782867e-06 7.06382171e-08 -1.66700669e-06 1.734285436e-05 -4.021504825e-05 -1.580223381e-06 -3.074135268e-07 1.300261697e-08 4.710775948e-06 -2.509505398e-05 8.330095513e-06 -1.14576523e-07 -1.778700029e-08 2.804128672e-06 1.692746633e-06 -9.530721792e-06 -4.385305449e-07 9.636233179e-08 4.11649393e-06 -1.35826431e-05 3.635897296e-06 -2.707239981e-07 8.850533956e-08 4.375799539e-06 -1.483742786e-05 4.141054297e-06 -2.162007255e-07 4.439643305e-08 2.795769387e-06 1.727489132e-06 -9.020155524e-06 -0.2879604209 -0.04305026317 -0.01443731944 0.0008221526304 0.002711094235 -0.0011728289 0.0004348853679 -0.0001698025037 0.0001782955589 -9.252430953e-05 7.778011446e-05 -2.59608181e-05 2.852003414e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.2879604209 -0.04305026317 -0.01443731944 0.0008221526304 0.002711094235 -0.0011728289 0.0004348853679 -0.0001698025037 0.0001782955589 -9.252430953e-05 7.778011446e-05 -2.59608181e-05 2.852003414e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.1763189221 0.00435647585 0.002057986049 6.382378456e-07 0.0005175549463 0.0002363005822 4.28015836e-05 3.210468148e-05 5.119974991e-05 4.819677341e-05 3.200699986e-05 2.275822779e-05 2.031076684e-05 0.01861059057 -0.07553819037 0.1990206044 -8.55416451e-05 6.351658394e-05 0.0001867775438 -0.0008840866942 0.000291337094 0.002212757478 -9.614681858e-05 3.469332871e-05 0.000240436489 5.588862399e-05 -0.0002987535889 0.0007905187227 3.731443906e-05 0.0001241810843 -4.570160241e-05 1.50281033e-06 -7.911918062e-06 2.366558671e-05 -1.930334131e-05 1.135764374e-05 4.34193605e-05 6.601919666e-05 2.277169328e-05 -3.109123384e-05 4.325835467e-06 -2.114319685e-05 5.578873647e-05 8.354166355e-08 -1.065334493e-05 3.293319196e-05 8.855572646e-07 -1.081200274e-05 3.022597746e-05 2.095859826e-06 -1.086955427e-05 2.876543829e-05 -0.003227798148 0.0008503289132 0.04403671571 0.04000870667 -0.1143825046 -0.0003538062004 8.454720645e-05 0.002608473953 -0.004932848075 0.001130128239 -0.0001440733515 3.301666142e-05 0.000431354137 -0.0007049204993 0.0001506433374 -0.0005793315226 7.412568081e-05 -1.613558563e-07 7.386383974e-05 0.0002520316803 -1.927096149e-07 -3.125031135e-08 0.0001385999944 -0.0004068810201 0.0001561414457 -1.889092965e-06 8.123582494e-07 7.101043978e-08 1.674705809e-05 -2.34761052e-05 -2.529640841e-07 1.361350461e-08 -9.869408138e-06 3.487790352e-06 3.857677074e-06 -6.763818526e-07 2.649451119e-07 -3.796007301e-05 1.644840518e-05 1.086776519e-05 -1.116120969e-06 4.649421166e-07 4.223164433e-06 -3.234707037e-05 1.538840464e-05 -2.747672827e-07 1.464246877e-07 6.061604893e-06 -2.768691249e-05 1.405355228e-05 -3.267678968e-07 7.631841778e-08 6.48669462e-06 3.683039121e-06 -1.437646204e-05 -3.221620043e-07 1.036358711e-07 4.283593514e-06 -1.418164886e-05 5.932341561e-06 -2.518336269e-07 9.727059768e-08 3.103957667e-07 9.525964806e-06 -1.419282388e-05 -0.3423304449 0.04909483264 6.046147853e-05 0.002448419288 0.000194928024 3.339683754e-05 0.0001248933333 8.531863447e-07 1.27086905e-05 2.043106867e-05 5.338839398e-06 8.737713323e-06 9.083023872e-06 0.0279754909 0.1370981202 0.08112288722 0.02525881871 0.06331962302 0.008954780223 0.003737981039 0.007582737341 0.001315114193 0.0001633179922 0.0002754200063 5.324708314e-05 0.0003688393407 1.050147808e-11 4.374913842e-05 2.213926197e-05 0.0002369151133 7.81486543e-05 4.194668296e-06 2.548244649e-05 1.255826014e-05 1.004567007e-08 3.327526757e-08 6.185969114e-08 2.049099207e-07 2.860961962e-05 2.917442721e-05 6.536294441e-06 1.113249579e-05 2.074458049e-06 5.235760634e-06 6.430920647e-09 5.62854214e-07 8.317226092e-06 4.83472992e-06 1.132130059e-06 8.381755393e-07 6.162535598e-06 2.72748482e-06 1.981814859e-18 8.895009441e-07 0.007120558003 0.04543213128 0.02125284139 -2.639205819e-18 8.36259378e-07 0.004795168808 0.03881664085 0.01894258842 5.056453746e-19 2.706541019e-07 0.005261937694 0.01052645654 0.002271784441 -1.806423208e-20 4.482412427e-09 0.000181000748 0.0002970776453 6.090158784e-05 -3.473852635e-22 5.433506756e-10 2.318628721e-05 1.733087846e-05 2.740458291e-06 -2.064753555e-20 3.676709879e-09 3.946282219e-05 2.345583609e-05 0.0003592408634 1.735389065e-22 1.510233186e-12 2.454420764e-06 4.955558565e-06 7.314374318e-07 9.074602486e-24 6.189907893e-11 2.925425846e-07 2.456578951e-07 6.624234376e-08 1.311353586e-21 4.219362681e-11 3.303783915e-06 1.424559369e-05 1.41379448e-05 1.976370777e-23 1.223716232e-14 2.695032859e-08 8.063587135e-07 2.146393256e-07 1.31953951e-22 7.716741366e-11 1.548642036e-06 3.028074986e-06 4.618968263e-07 -1.985305395e-22 4.514080106e-11 8.610215012e-07 9.950448092e-07 6.897189876e-06 -2.79234083e-23 3.436370594e-11 1.079227445e-06 9.108117959e-07 2.589265907e-09 -0.2065678731 0.0005207867785 0.003549245466 0.0001220796844 0.0006956805503 9.05469596e-05 9.784398332e-06 4.452214186e-05 6.01437371e-05 3.025806907e-05 1.860119171e-05 2.063639319e-05 1.919002891e-05 0.0578668878 0.06308511196 0.1869103673 0.0001966239704 0.002811225256 0.004266588243 0.0005005380238 0.0006034347172 0.001728004328 0.0001904091236 0.0003640309183 0.0008718101362 0.0001997840974 0.0001397428799 0.0005306500097 5.537184341e-06 3.137612272e-05 7.660099249e-07 4.752459866e-06 5.285834879e-06 1.570051762e-05 8.597361928e-06 3.401806956e-05 6.942411766e-05 2.024773159e-05 1.834105193e-05 5.866863324e-05 9.450830099e-06 8.576029753e-06 2.615675026e-05 2.038305759e-05 8.711706616e-06 3.679198496e-06 7.90258931e-06 6.620419926e-06 2.242842439e-05 5.566669897e-06 9.011405327e-06 1.941735669e-05 0.004771595163 0.0006307001104 0.03334208925 0.08877484067 0.06245581635 0.001279216974 9.633770428e-05 0.003855584523 0.007230391334 0.01096696201 3.495071277e-05 2.105374344e-06 4.807090373e-05 8.000733395e-05 0.0001170139205 0.000823411052 0.0001371203596 0.0005887237478 0.0003063483859 0.0003894281976 1.023368493e-05 5.940127419e-08 0.0001178686971 7.220473526e-05 4.217521519e-05 2.745865041e-07 1.542461405e-08 9.671684665e-07 5.368224983e-07 3.669706244e-07 2.87298427e-05 1.150505314e-06 4.891350874e-07 2.085878735e-06 6.878432818e-06 2.255257894e-09 3.129423662e-06 1.840128528e-05 2.033844144e-05 6.603238629e-05 5.679591908e-07 2.934047225e-10 2.023423012e-05 1.363819161e-05 6.934848333e-06 2.47690249e-07 1.144830629e-09 3.128036176e-06 9.449264922e-06 4.22579145e-06 2.907246402e-07 3.514087385e-07 4.270651269e-06 1.010993679e-05 9.693365082e-06 2.417948558e-07 1.068267452e-07 9.729289775e-06 1.117398474e-05 4.464243476e-06 2.998756198e-07 9.431698358e-09 2.996562687e-06 8.673355417e-06 4.722525526e-06 -0.1676805427 0.006028613817 0.001579476025 1.715073291e-05 0.0004391115474 0.0002750225224 6.342084927e-05 3.305787123e-05 4.717153497e-05 5.150853093e-05 3.71907044e-05 2.471694834e-05 2.112911574e-05 0.01585692151 0.07345440671 0.2034791634 4.170232981e-07 1.202010312e-07 9.298021724e-07 0.0006989422033 0.0003292545421 0.002199258792 5.589491648e-05 1.240044171e-05 0.0001365556836 7.643306126e-05 0.000271811471 0.000780554991 9.495190453e-06 7.862281631e-05 0.0002435730112 1.800176736e-06 1.437869728e-05 3.6899266e-05 1.74628465e-05 5.421000096e-06 4.659604111e-05 7.636488577e-05 1.295783643e-05 2.796720388e-05 3.224283266e-06 2.22663605e-05 6.624755974e-05 1.393833111e-06 1.315859645e-05 4.174550829e-05 4.538373208e-08 6.852992673e-06 3.931702335e-05 1.872623555e-06 1.055436876e-05 3.032287733e-05 0.003416161089 0.001122586389 0.05326266083 0.0306572244 0.1225981158 0.0001326127815 0.0001865643005 0.002106120077 0.003260789951 0.0004975038306 0.000145625713 7.438810125e-05 0.0008573991809 0.000232477286 0.0004796352245 7.189048019e-06 1.820672326e-06 0.0005039057687 9.567426773e-05 0.0002164697957 1.513696714e-05 1.176201109e-05 0.0001042533836 0.0004660142215 0.0002216216652 2.093519128e-06 3.281839816e-06 2.162300707e-05 1.450629752e-05 6.363277297e-05 1.640534334e-07 2.172993781e-07 7.366977745e-06 6.964837493e-06 5.486128886e-06 2.824587616e-07 9.054905577e-08 4.231583542e-05 1.30408913e-05 2.890912585e-06 1.001868907e-06 3.764700684e-07 2.255805619e-05 1.513053911e-05 5.259371069e-05 4.197105195e-07 3.056310146e-07 5.972923302e-06 3.496748164e-05 2.031453285e-05 2.105508171e-07 2.104668561e-07 6.858722902e-06 3.635754869e-06 2.195552102e-05 3.091748781e-07 1.580698096e-07 7.31524781e-06 2.343028529e-06 1.814205897e-05 2.642870588e-07 1.503411259e-07 2.039008763e-06 1.561034547e-05 1.376531582e-05 -0.4945189387 0.307421443 0.1319654046 0.03941143222 0.01673841645 0.005001509027 0.002982067969 0.0008721944031 0.0006739086684 0.0001662005827 0.000162668234 2.726728507e-05 3.849627959e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.1798585283 0.003776545821 0.002264665482 5.990200201e-08 0.0005494585742 0.0002204176143 3.624669494e-05 3.213911362e-05 5.292363394e-05 4.666465451e-05 3.002215617e-05 2.211566002e-05 2.007165937e-05 0.03389164243 0.06491917957 0.2004359131 0.0001337662001 0.000196392338 0.0004372534614 0.0008320593971 0.0003153762686 0.002284365755 0.0001001893493 5.976541599e-05 0.0003064523778 6.763296142e-05 0.0002842793783 0.0007937322805 3.420461893e-05 0.0001620619034 1.462551853e-05 6.170029169e-06 4.353581182e-06 2.074628015e-05 1.785246653e-05 1.285702512e-05 4.627370303e-05 6.862512004e-05 2.706390045e-05 2.586041724e-05 5.867555814e-06 1.869672041e-05 5.280538536e-05 3.386537846e-07 1.870616347e-05 2.452554035e-05 1.80261304e-06 1.268132497e-05 2.677240549e-05 2.838714518e-06 1.013358212e-05 2.850170308e-05 0.004433081962 0.000231328488 0.04610018136 0.05678770343 0.09819469766 0.0005330810757 2.619266653e-05 0.002958150252 0.00541814781 0.001818019896 0.0001476309538 1.295283963e-05 0.0003625278254 0.0006596083954 0.0001723568864 0.0008274984923 1.539805565e-05 1.957578144e-08 0.0001251656258 0.0003113335019 3.338313431e-07 5.528891948e-09 0.0001732451202 0.0003324723896 0.0001600601154 1.699201924e-06 3.137454907e-07 3.796943118e-08 2.191347225e-05 1.046245397e-05 2.608376811e-07 6.973956351e-09 9.718812867e-06 3.096400001e-06 4.095699169e-06 7.354029904e-07 1.825891379e-07 3.100743526e-05 2.958659887e-05 1.385398692e-05 1.233414434e-06 2.627712851e-07 5.246421622e-06 7.128605141e-05 3.460306526e-06 3.173984642e-07 7.769069417e-08 8.101747979e-06 2.344920566e-05 1.198182735e-05 4.196588641e-07 2.165169947e-08 6.776715154e-06 1.005845346e-05 9.526995223e-06 4.057097229e-07 3.893501865e-08 8.649737356e-06 1.079272686e-05 6.175492502e-06 2.959840263e-07 4.602249127e-08 4.675931815e-07 1.818581709e-05 8.26489565e-06 -0.3456867356 0.05213546697 0.0001332296383 0.002345433966 0.0002267453386 4.405370157e-05 0.0001170270692 3.965832163e-07 1.471035752e-05 1.89984152e-05 4.750653513e-06 9.018883294e-06 8.772839712e-06 0.03467966318 -0.1564714067 0.03754795429 0.01596110972 -0.06521295309 0.01470903453 0.002246897878 -0.009051668255 0.001994358331 5.40452359e-05 -0.0002173760626 4.648543949e-05 -0.0001795619959 -5.014399016e-08 4.378306024e-05 5.33168493e-05 -0.0002368677619 5.529833013e-05 4.047337196e-06 -1.854063841e-05 4.628136377e-06 2.152692383e-08 -9.874730645e-08 1.141467019e-08 2.175032967e-07 1.776950575e-05 -3.908529183e-05 2.595400044e-06 -1.093160009e-05 2.434719706e-06 -2.991300308e-06 1.628991817e-07 6.72279768e-07 -9.571669468e-06 3.664914128e-06 9.05159109e-07 1.28908001e-06 -5.612558627e-06 1.312370823e-06 -1.706687746e-18 9.139359764e-07 0.01018324015 -0.04565693144 0.01283717906 -3.991214162e-19 8.525975126e-07 0.007338161053 -0.03997781169 0.01290005221 -2.987335677e-19 2.724382947e-07 0.002824607203 -0.01192189129 0.003133978635 -1.26888243e-20 4.276471817e-09 0.0001196213535 -0.0004492078919 0.000103282027 -4.514301264e-22 7.731511123e-10 -1.228067251e-05 4.700984291e-06 1.4455911e-06 1.067716697e-20 3.752850184e-09 4.226526992e-05 6.851433029e-05 -0.0002436151861 -2.124218638e-22 1.925815435e-12 1.894267136e-06 -7.84492492e-06 1.965611591e-06 -9.976000091e-24 3.557476632e-11 1.871475129e-07 -8.879693093e-07 2.063850426e-07 -7.04924015e-22 4.356903449e-11 3.671980304e-06 -1.739471418e-05 4.439972904e-06 -6.713451543e-24 -6.131215831e-14 4.477137672e-08 -2.274664064e-07 5.507872237e-08 -8.261131138e-23 7.582820943e-11 8.446029765e-07 -3.56777697e-06 9.056690547e-07 5.239719351e-23 4.632835351e-11 9.341599377e-07 -2.631172683e-06 -9.917520342e-07 3.862120259e-23 3.533529704e-11 -1.233788039e-06 6.226772082e-07 7.597216784e-10 -0.2088407091 0.0003610146078 0.003626226359 0.000146229541 0.0006979357983 8.079751181e-05 9.03821709e-06 4.625825904e-05 5.981312156e-05 2.881963965e-05 1.808205541e-05 2.063949331e-05 1.902449992e-05 -0.08085533977 0.02328581493 0.1869680012 0.0001130021701 -0.00224215111 0.005529820631 0.0001972774236 -0.0007362726616 0.0016803913 0.0001301572409 -0.0004339798413 0.000943352217 -0.0002303604723 6.724094612e-05 0.0005113558023 1.12613316e-05 5.637036463e-07 6.643274707e-07 1.899454347e-06 -7.326253843e-06 1.692967879e-05 6.644732544e-06 -3.316795409e-05 7.481316962e-05 -2.541361739e-05 8.686175269e-06 5.580639722e-05 -1.159714917e-05 4.674033386e-06 2.451962849e-05 2.077273201e-05 -9.404485892e-06 2.420022648e-06 -1.003706073e-05 3.085655115e-06 2.236754418e-05 -8.53687301e-06 4.332372552e-06 1.803490375e-05 -0.0006983910316 -0.001749236948 0.03427496616 -0.1077262063 0.03150861219 -0.000903661384 0.0002667335754 0.004020586648 0.004601367449 -0.01377958775 -1.669016183e-05 4.715117121e-06 3.676934807e-05 3.187391071e-05 -0.0001060073909 -0.0007209589871 0.0002171023186 -0.0006781337024 0.0002175241066 0.0004213392308 -5.306587653e-06 5.207219616e-07 -0.0001189167097 3.576170555e-05 3.86486781e-05 -3.109721981e-07 6.865346942e-08 -1.662672993e-06 5.520740482e-07 5.786510429e-07 -2.004689507e-05 4.77828767e-06 -2.541260122e-07 -2.834777166e-06 8.169896889e-06 -7.234069059e-08 -1.27759657e-06 1.892786429e-05 2.167315487e-05 -6.480743762e-05 -2.637581575e-07 -9.885561291e-09 -2.222850436e-05 7.11989399e-06 6.464337967e-06 -1.335168653e-07 1.238672863e-08 3.32733661e-06 -9.513653742e-06 2.555371698e-06 1.410215621e-07 -4.32798372e-07 4.370163518e-06 3.551100135e-06 -1.350172989e-05 2.520878013e-08 -1.826220395e-07 -1.367601373e-05 3.146746704e-06 4.674050528e-06 -9.048830345e-08 -4.855984274e-08 3.110528996e-06 -9.422273668e-06 2.687533261e-06 -0.1702451467 0.005504231152 0.001718687487 1.079948949e-05 0.0004626754064 0.0002639524962 5.661632269e-05 3.256033465e-05 4.833736982e-05 5.06364813e-05 3.56238809e-05 2.405946204e-05 2.083892649e-05 0.01927229475 -0.06982428256 0.2047019434 -3.515097226e-06 1.678016951e-06 9.737380341e-06 -0.0007753403979 0.0002437958129 0.002254575691 -5.818410659e-05 2.100750672e-05 0.0001672699822 7.61460649e-05 -0.000270927608 0.0007909876947 1.267681351e-05 -7.190000046e-05 0.0002184915267 2.880935569e-06 -1.087847511e-05 3.265530893e-05 -1.676710868e-05 6.100069126e-06 4.762811135e-05 7.753575209e-05 1.287618602e-05 -2.824864173e-05 4.060251375e-06 -2.10762071e-05 6.355767572e-05 2.013576974e-06 -1.25711561e-05 3.843773683e-05 1.023855603e-07 -1.010298898e-05 3.356416573e-05 2.315417483e-06 -1.008454859e-05 3.002974044e-05 -0.003207811666 0.001199393092 0.05499971505 0.03867453926 -0.1102203565 -0.0002191821722 5.117761782e-05 0.002294211859 -0.00354391283 0.0007962448155 -0.000154569066 4.19709888e-05 -0.0007667826911 0.0002617827756 0.0004670270808 -8.348048831e-06 3.607501315e-07 -0.000478962235 0.0001587323304 0.0002475106674 -1.709366386e-05 9.025141946e-06 0.0001289303438 -0.00040943281 0.0002188101231 -2.299486892e-06 1.778533178e-06 1.896165997e-05 1.718890549e-05 -4.31988726e-05 -2.249230351e-07 7.040784494e-08 -9.2497597e-06 2.47055324e-06 5.255786213e-06 -2.554794772e-07 1.137535654e-07 -3.099484971e-05 2.229445089e-05 3.382214403e-06 -1.038243805e-06 2.946799423e-07 2.286515779e-05 1.764289905e-05 -4.7714927e-05 -4.467107056e-07 2.255552787e-07 7.585091154e-06 -3.088641841e-05 1.840060932e-05 -2.70410146e-07 8.746602732e-08 7.278432226e-06 6.065107072e-06 -1.592465142e-05 -3.262423092e-07 1.195824824e-07 7.600358424e-06 4.252437029e-06 -1.40863496e-05 -2.770058125e-07 1.17573544e-07 2.574604457e-06 -1.637927331e-05 1.123449881e-05 -0.2982338823 -0.03407332044 -0.01728749538 4.858830819e-05 0.003032666556 -0.001049962232 0.0003287706008 -0.0001674262674 0.0001888536356 -8.806641114e-05 6.988312475e-05 -2.455675072e-05 2.77971979e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.2982338823 -0.03407332044 -0.01728749538 4.858830819e-05 0.003032666556 -0.001049962232 0.0003287706008 -0.0001674262674 0.0001888536356 -8.806641114e-05 6.988312475e-05 -2.455675072e-05 2.77971979e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.4329360426 0.14144337 0.005084670301 -0.004178999491 1.522505389e-05 0.0003053161686 -0.0004248512701 1.616447867e-05 -0.0001000162011 7.558531217e-05 -1.687922226e-05 1.863526045e-05 -2.57433062e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.2946512345 -0.005116190735 -0.003299575322 0.0002128269021 0.000140118355 -1.426977911e-05 1.010816015e-05 4.726923664e-05 -3.799441817e-06 1.698273242e-05 1.081136948e-05 7.080963017e-06 8.573716066e-06 0.002254640837 0.0008109795362 0.2085236892 -0.000600198298 -0.001753328699 0.02779841006 1.972413506e-06 6.270158172e-06 -0.004368676001 1.251549844e-07 1.350128316e-07 -8.912426952e-05 2.769213118e-08 3.704480972e-08 0.00015981068 -3.04738279e-05 -4.328213797e-07 -3.566317143e-06 -1.687406101e-08 -7.000106292e-08 5.011686847e-05 -2.91918116e-07 -3.133804924e-07 1.484909263e-05 -7.367655686e-08 -4.364626724e-08 -4.924227991e-06 4.512473105e-07 4.143850804e-07 2.116709432e-05 5.433376705e-06 -3.028766277e-08 -4.961783373e-08 4.836992608e-08 2.745902055e-08 7.398979728e-06 4.115193432e-07 2.828339739e-07 6.948539904e-06 -1.146695291e-07 3.658999516e-05 0.04324625845 0.0001854812519 -0.000100044288 4.426432438e-06 -2.769765661e-05 0.01253869393 0.0004882828574 0.0005637567782 1.036174831e-08 1.626628376e-06 -0.0003895602061 -4.437738097e-06 -6.509895982e-06 -2.536370074e-08 -2.20237675e-07 -8.325430861e-08 -6.800495058e-08 5.146072738e-05 -2.339741813e-10 2.948749825e-08 2.370459914e-07 1.698450174e-07 -2.56934229e-05 5.791735555e-11 9.950758713e-09 3.588482504e-08 4.312184291e-08 4.635208811e-06 2.424076696e-08 -1.302249646e-06 -1.956406944e-08 -1.246466882e-07 3.956490759e-05 -5.412847237e-09 9.775617389e-09 -2.225216586e-05 -4.107455724e-07 -2.769766558e-07 -2.431859811e-11 2.783047741e-09 1.152159588e-07 9.467908736e-08 4.803260418e-06 6.150260269e-11 3.221992829e-09 4.865566562e-06 -2.724225916e-07 -2.386758161e-07 1.901537789e-13 -2.818937426e-12 -5.581644463e-09 -3.563441698e-11 -1.431225548e-10 -3.640567381e-12 9.251238995e-10 -2.003338346e-08 -6.165498732e-09 2.697291408e-06 -2.764876181e-10 4.255562032e-09 1.608120304e-06 -4.668688125e-08 -4.09617012e-08 -0.2484730146 -0.01519478182 0.000280093897 -6.82723812e-05 0.0001311824642 0.0001029998946 -9.776654637e-06 3.405514207e-05 3.125648531e-05 1.009339264e-05 1.760743373e-05 1.277684882e-05 9.436793774e-06 -0.001970658201 0.0007614158484 0.2467262973 -3.015033862e-05 0.0001118182574 0.00305831729 3.406337877e-08 7.933661398e-07 -0.002800888986 -5.264694967e-07 1.579484549e-06 0.0001606853173 -2.465371699e-06 1.433384728e-07 0.0003568486814 3.805574583e-07 -2.79454338e-07 -1.585376471e-05 1.798570256e-09 -1.277532834e-09 -2.460582369e-07 -4.029615287e-08 5.172191782e-07 6.53496374e-05 1.432964081e-05 3.682723278e-07 2.185643511e-08 -2.891284246e-07 1.368510762e-07 1.368106535e-05 -5.621317482e-07 4.469900213e-07 2.128984828e-05 -2.875991746e-07 1.138469132e-06 1.178359923e-05 -1.831338839e-07 7.307581006e-08 1.174680706e-05 1.454213558e-05 -0.0001080958113 0.07491950229 0.002663199976 -0.0007283050509 -1.387139256e-06 4.133988352e-06 0.0108200717 0.0004864123728 -0.0008996210876 -4.799575567e-08 1.62463039e-06 6.908632008e-07 -1.309375273e-05 -0.001293716409 3.765153353e-10 2.832566716e-09 -3.998751136e-07 9.932530226e-07 6.574200057e-05 -5.671681399e-09 7.31025672e-08 3.048326342e-07 -2.442937825e-08 0.0001755852766 -4.007392351e-08 -5.767546956e-07 -3.942563725e-05 -4.824803703e-06 1.395188952e-06 1.348861316e-10 -5.695758438e-10 4.809283603e-08 1.607301523e-08 1.255699881e-05 1.897781642e-11 -5.46503123e-09 -3.321345545e-06 1.999119874e-05 1.087919283e-05 -4.409611091e-10 2.118228504e-08 -6.15880298e-06 -3.454223636e-07 5.071341088e-08 1.098068382e-10 -8.873585593e-09 -6.384661997e-07 3.332834649e-07 9.465272404e-06 -2.581948346e-09 -7.282420704e-09 6.441088334e-06 7.108123539e-07 -3.534796866e-07 2.293765778e-10 -4.515719133e-09 3.506880316e-06 2.002803182e-08 -6.191209556e-08 9.80607648e-11 -5.007537632e-09 -5.607891665e-07 5.347749715e-07 4.245122554e-06 -0.2583272646 -0.0148484597 -0.000315146977 -6.126392015e-06 0.0001360813173 6.726819687e-05 -7.031702505e-06 4.033079753e-05 2.27689657e-05 9.661592025e-06 1.77711725e-05 1.090886707e-05 8.917832527e-06 -0.002666616912 0.003054684404 0.239481561 -0.0001954226005 0.0005733717216 0.006866244198 7.282370076e-07 1.658973091e-06 -0.003461736173 -7.508862162e-07 1.462908725e-06 0.0001452637423 -7.179562262e-06 2.829081353e-06 0.000341841445 1.969106857e-06 -1.575517389e-05 -3.876059407e-05 -3.714243121e-08 7.25119944e-08 1.198162835e-05 -2.805461548e-07 1.995402779e-06 6.255735288e-05 -4.302495096e-07 -2.565836942e-08 3.624519703e-09 -4.250071877e-07 3.75943919e-07 1.78325023e-05 -7.972624689e-07 2.180752226e-06 1.679346045e-05 -4.303556746e-07 2.076450861e-06 8.256931649e-06 -2.4883784e-07 1.896823962e-07 1.091629857e-05 -3.259527058e-05 -1.757333498e-05 0.06650989102 0.003719698241 -0.000362066743 -5.331086468e-07 -2.288059857e-07 0.01171300393 0.001202558138 -0.001234671777 1.493719442e-07 1.038369156e-06 3.130225502e-05 -0.000273417231 -0.001022539462 2.336692318e-10 -2.808617973e-07 -2.820436004e-07 8.558866453e-07 6.499218665e-05 1.425431336e-09 2.076640689e-08 2.088104863e-06 -9.698345344e-07 0.0001177049127 4.349867698e-09 -1.193136666e-09 -2.77586605e-05 -8.478310467e-06 3.010837373e-06 -3.181027571e-12 -3.70411313e-10 1.084890764e-07 1.516722059e-07 1.880315421e-05 4.072943295e-10 1.097840987e-09 -1.586653972e-06 4.83116326e-06 1.460127333e-05 5.573367922e-10 1.083275331e-08 -5.226424495e-06 -3.050998305e-06 4.173122732e-07 -3.080004842e-10 -7.988359755e-09 -1.052062483e-06 1.06178758e-06 1.059635605e-05 3.13950934e-10 -2.369240056e-09 4.776448272e-06 7.592288163e-08 -1.411081501e-07 -1.54844876e-10 -1.098759558e-09 2.997863758e-06 -1.300620475e-08 -1.162744545e-07 -2.327750594e-10 -3.033333816e-09 -6.996624081e-07 3.283411133e-06 1.071964139e-06 -0.4325915329 0.1421493449 0.005195835944 -0.004773157688 0.0007411044846 -0.0002406944097 -4.106660736e-05 -0.0002220460569 6.113413475e-05 -2.022416839e-05 4.201411545e-05 -1.113037067e-05 1.220669086e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 -0.1225402961 0.01676993857 0.006178660267 0.006412186918 0.01774306724 -0.0841341992 0.001400715644 0.003926050494 -0.02358681005 -7.720843996e-05 -0.0002447236853 0.001787172442 -2.90195963e-05 2.550443362e-05 0.001361659093 0.001423593979 -0.0004001004838 -0.0001277832981 -0.0001978725109 3.529947564e-05 1.128006435e-05 1.328946661e-05 -9.442034594e-07 5.608954126e-08 -2.145429028e-05 -8.662775673e-05 -3.392350675e-05 -2.367822835e-06 -8.094692139e-06 4.781938168e-05 9.927266768e-07 -6.808787435e-07 -2.291151599e-05 1.911470995e-06 3.242319408e-06 9.158550399e-06 -1.637273782e-05 3.927299095e-06 1.155101873e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.08936160816 -0.007119756722 -0.01983415022 -0.001829647774 -8.711851543e-05 0.0003026098438 -0.0001011040524 4.887694969e-05 8.250105678e-06 -5.065691626e-05 7.57001301e-06 -1.153676206e-05 -1.309321744e-05 -0.002017094473 -0.001502637073 -0.1488938574 -0.0001684162714 -0.0003215247208 0.005410081152 2.949549735e-05 2.08286252e-05 -0.009455697759 1.294513553e-05 1.090927721e-05 -0.007309402219 3.513538163e-07 5.556841162e-07 0.001965365024 -6.276102187e-05 -8.977273582e-07 -7.025563511e-06 3.330643938e-08 2.088473487e-07 -0.0001546561894 -3.678197239e-06 -3.591606363e-06 0.0001729739951 -1.901661785e-06 -1.362179395e-06 -0.0001242961834 -7.804862087e-07 -8.212361715e-07 -3.62659155e-05 1.537322727e-06 3.167688279e-09 -1.279327923e-07 -2.755785172e-07 -2.397886096e-07 -3.949077244e-05 -9.08446326e-07 -7.04463934e-07 -1.493965599e-05 -1.330830244e-05 -2.683915358e-06 -0.06895501067 -0.0003989733422 -0.0008001669779 -1.164677091e-05 4.31626521e-05 -0.01125285822 -0.0008054800709 -0.0005061948808 -2.147042088e-07 1.004724792e-06 -0.000118971256 1.40673738e-05 -8.127791423e-07 -2.580523024e-06 2.347935902e-05 3.338836803e-06 2.141261091e-05 -0.002994142182 -5.953624613e-08 -6.034732933e-07 -5.979525368e-06 -6.090684013e-06 0.0006450211111 5.196307577e-10 1.312758423e-07 4.585784895e-07 7.764270409e-07 6.126963381e-05 -1.768727615e-07 3.388137643e-07 -1.909160534e-08 2.201695083e-08 1.966692264e-06 5.433834727e-08 -4.026169825e-08 5.23859262e-05 1.094093728e-07 8.849777975e-07 -3.250569879e-09 -2.330558714e-08 -1.279964872e-06 -1.16395094e-06 -5.319868651e-05 -1.516947985e-09 7.221864179e-09 5.779117587e-06 -3.193253132e-07 -3.339051931e-07 4.621727347e-09 -2.729859515e-09 -6.695374094e-06 -1.308893075e-07 -2.153996264e-07 6.247083661e-10 -2.923283039e-09 7.563730755e-08 -9.7216571e-09 -1.458875684e-05 -1.121571162e-09 -1.905223311e-09 -2.209780389e-06 6.529245372e-08 -3.531222847e-09 --0.02936012807 0.01014553502 0.003088100949 -1.646981287e-05 0.0004722016757 -0.0001637436134 1.175762212e-05 3.119053911e-05 -1.019407602e-05 5.834450356e-06 1.173194778e-05 1.353255871e-06 3.014201041e-06 -0.06814621778 0.006058478878 0.02847906578 0.0001324529952 -0.001069638528 -0.000611655394 0.0001637255859 0.0008540811668 0.00439651349 1.726420503e-05 -0.0001392598435 0.000713943257 5.802356109e-05 1.809494915e-07 0.0001868576404 -4.40846785e-05 4.478957965e-06 -0.0001922779958 -1.854434131e-05 4.088691051e-06 6.156771401e-05 4.626017415e-07 -9.26627492e-06 2.424606382e-05 -1.143808428e-05 -2.090460598e-05 -1.492127383e-07 -1.212689693e-05 1.65735627e-06 2.850132917e-05 -6.884478367e-06 1.41202521e-06 1.104047921e-05 -1.928050402e-06 5.649948334e-07 -1.692897421e-06 -6.31964131e-06 6.789972125e-07 9.474099673e-06 -0.0001366261015 0.002110119831 0.03032682991 -0.08978716946 0.008891306716 0.000142113447 7.670783979e-05 -0.001376788269 0.001474178543 -0.01055452862 1.01331992e-05 4.42910413e-05 -0.0001746225715 0.002404560812 0.001044947457 1.408094436e-06 8.217838511e-07 -2.271349724e-05 0.0001269829625 0.0009436542154 2.303361585e-06 1.36985074e-05 9.773519398e-05 -1.067715885e-05 -0.0002299584553 1.010061363e-07 8.391305485e-07 -4.001854316e-06 -8.672121534e-05 1.244584272e-05 8.654662508e-08 8.076676732e-08 -2.81053937e-06 -3.070486969e-06 2.935949594e-05 -2.383724497e-08 2.152317753e-07 3.123854182e-06 -2.00075792e-05 -1.651648019e-06 4.104452975e-08 4.84789798e-07 4.25584733e-06 -2.924561124e-05 2.219129776e-06 3.147764412e-08 2.518807136e-07 -1.264905601e-05 2.080537207e-06 1.631149402e-05 7.058819241e-08 1.030533093e-07 2.487362198e-06 -9.69731423e-06 1.715366926e-06 2.046653298e-08 1.793333644e-07 3.054740088e-06 -1.00716326e-05 2.018550189e-06 1.504073154e-08 1.572604239e-07 -6.088945476e-06 1.141290587e-06 3.410793067e-06 --0.03172848723 0.009662772134 0.004177919165 -4.033630265e-06 0.0004678439497 -0.0002000180799 2.924177861e-05 2.675592099e-05 -1.7029975e-05 1.312598234e-05 9.516835053e-06 1.087265111e-07 4.404573755e-06 -0.08807081678 0.02173280443 0.03455079492 0.0004996725285 -0.003242133903 -0.0008018364939 9.004462476e-05 0.001275744333 0.004779473579 1.973251302e-05 -0.0001339713065 0.001122804068 6.509521175e-05 -5.085005401e-06 -4.580799805e-05 -1.857673989e-05 -3.959942946e-05 -0.0001384970364 -1.629486708e-05 5.361462154e-06 6.889489156e-05 4.865604015e-07 -1.104926509e-05 5.063056504e-06 -1.004718524e-06 -2.832043735e-05 1.87740094e-06 -1.276910727e-05 3.069565971e-06 3.509081604e-05 -6.009341796e-06 2.720610041e-06 3.367981239e-06 -4.287957568e-06 2.309264012e-06 2.905953886e-07 -6.736090549e-06 1.330968788e-06 1.093804868e-05 0.001623966521 0.0003263288579 0.03254278676 -0.0998520942 0.01760057132 0.0002936229563 -2.564348334e-06 -0.0009998248426 0.002696732754 -0.01414699961 1.699780855e-05 1.427945707e-05 -0.0003228008635 0.003390285743 0.0002070925087 0.0001667022073 -0.0001053458135 -1.932631906e-05 0.0003055303364 0.001144932377 -3.512460535e-09 2.685364443e-06 5.466865877e-05 -6.494573692e-06 -0.0003312112569 -1.160362894e-07 2.688230735e-07 1.808519508e-05 -7.25401721e-05 1.314834917e-05 5.727859987e-09 4.317934037e-09 -1.16457102e-08 -3.328938025e-07 2.7593892e-05 -6.56629962e-09 3.235802003e-07 5.593333886e-06 -2.561576704e-05 -1.600024597e-05 2.27807368e-07 3.580949244e-07 1.507950006e-05 -3.091083031e-05 3.358785336e-06 8.472579281e-08 1.120900725e-07 -1.021991077e-05 3.145599954e-06 1.300534347e-05 1.351304159e-07 3.444519443e-08 -2.77588374e-07 -1.04617815e-05 2.88424341e-06 1.350790239e-07 6.11425317e-08 4.88372699e-06 -1.085044019e-05 2.718296718e-06 7.340306354e-08 7.516034263e-08 -4.811113343e-06 2.911175237e-06 4.990150026e-07 --0.05203462059 -0.08785430195 -0.03393355028 -0.004377711892 0.002278360698 0.001011206976 0.0003572652554 -0.0001104045733 -6.475696843e-05 -3.173725581e-05 1.744513009e-05 5.038931283e-08 6.938223863e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0.01105834864 0.04515589843 0.07673357191 0.05440885197 0.0146163717 0.01104239387 0.01564484758 0.00635446246 0.002376547375 -0.001169407789 -0.0006508655224 -0.0001357180982 0.0009423366291 -0.002774940193 1.9578198e-05 -0.0002565735878 -0.0001409910326 -0.0007981446639 1.965976405e-05 5.242432545e-05 0.0001298812456 8.120597571e-08 -1.405679027e-05 -2.579337829e-06 -1.272999777e-05 0.0001460739982 5.622329457e-05 -2.830786514e-05 -1.691219578e-05 -4.648694095e-06 -1.537796514e-05 4.612673182e-05 -5.798202613e-07 -2.898030587e-06 -1.789824616e-05 1.690321676e-06 2.368664341e-06 3.464500951e-06 9.23862986e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.001749030664 -0.0001393514853 -0.0003882040359 -3.58107931e-05 -1.705127717e-06 5.92283316e-06 -1.978859732e-06 9.566444197e-07 1.614752477e-07 -9.914828273e-07 1.481641295e-07 -2.258033513e-07 -2.562670846e-07 0.04446505146 0.04538754803 -0.007554244468 0.002487444814 0.0005498885177 0.006181304306 -0.001247118436 -0.0009818692851 -0.0001994751444 -0.0001344603306 -3.825003273e-05 -0.0001453486902 -2.603822121e-06 -4.974250293e-06 3.848555853e-05 3.893083526e-05 5.390603468e-07 -1.26130337e-05 9.261047589e-07 8.584355941e-07 -3.017371355e-06 1.392103138e-05 1.905946972e-06 7.807967237e-06 7.271066514e-06 1.289311897e-05 -4.092486433e-06 2.226141462e-06 5.513175997e-06 -1.763679496e-06 7.432532611e-07 1.483454364e-06 5.727566202e-06 2.867858714e-06 4.620241289e-06 -1.072025397e-06 2.798283055e-06 4.676733428e-06 -2.041253674e-06 0.0006205495782 -0.003412418799 -0.001112025762 0.02507903161 0.04777645531 0.0002591249089 -0.0009730504073 -0.001325831791 0.01833298985 0.00639241813 9.012307386e-06 -2.653556481e-05 1.856287806e-05 -0.0007686483749 -0.0003647868734 9.106110376e-05 -0.0005555539407 -0.0002041572908 -0.0008786981296 -6.534791592e-05 2.649741971e-06 -7.355810168e-06 3.579376155e-05 9.1264347e-05 1.386470451e-05 -4.442109085e-08 -3.87499955e-09 -2.539259066e-06 -1.037030417e-05 1.360812799e-06 6.173486876e-06 -2.190909348e-05 9.07553159e-07 -1.388014149e-06 -2.948710984e-07 -2.331008969e-06 7.264588949e-07 3.634725238e-07 4.394631559e-05 -1.364590733e-06 1.466639921e-07 -4.144339968e-07 2.313970124e-06 5.737397048e-06 -1.234766966e-06 6.358638219e-08 -1.837161125e-07 4.138492248e-07 6.750893176e-07 2.516385996e-06 -2.182542281e-07 -1.16448715e-07 -2.586063164e-07 4.328807126e-06 4.657823966e-06 -2.897367559e-08 -1.489350486e-07 3.093267352e-06 2.105397926e-06 -2.523863525e-07 6.657635144e-08 -2.267884949e-07 1.365639178e-07 1.061340217e-06 2.994015188e-06 --0.09007021845 0.03112420197 0.009473593796 -5.0525653e-05 0.001448607717 -0.0005023282934 3.606971981e-05 9.568550465e-05 -3.127311473e-05 1.789877132e-05 3.599095675e-05 4.151482296e-06 9.246885625e-06 0.02130979674 -0.001660057024 0.1037379524 -1.737498848e-05 0.0002516552295 -0.002453126306 -5.299595576e-05 -0.0002826498964 0.0134769613 -1.352841453e-05 6.89234461e-05 0.002161401606 -2.31935981e-05 2.230925085e-07 0.0005585500009 2.890490316e-05 -1.216250676e-05 -0.0005428750422 4.494497504e-06 -2.393186917e-07 0.0001919212794 -2.047244795e-07 3.657406111e-06 7.25774127e-05 -4.610689927e-05 5.533514204e-06 -3.65022265e-08 1.698480901e-06 5.200218923e-07 9.737967674e-05 1.060216205e-06 4.770353174e-07 4.123362909e-05 3.060798055e-07 1.087479401e-06 1.376122455e-05 1.505273028e-06 -3.377119587e-09 3.248793177e-05 6.296367404e-05 -0.0008170105347 0.07965401951 0.03244884906 -0.003807122227 -4.63947715e-05 -2.450954642e-05 0.001760408151 -0.0004270555034 0.003331148909 -3.113296092e-06 -1.904882251e-05 5.604388446e-05 -0.0007466387778 0.003328970825 -4.375751547e-07 -1.296446417e-07 -1.207434017e-05 7.100136956e-06 0.00290179747 -7.195294851e-07 -4.789987497e-06 -3.320895635e-05 3.634562624e-06 -0.0007040688024 -7.521548512e-08 -8.940239776e-07 -4.110180733e-05 2.307587801e-05 -2.586770531e-06 -2.705241166e-08 -3.085063896e-08 1.294028444e-06 1.128535988e-06 8.997150143e-05 7.827745558e-09 -6.312200026e-08 3.252039608e-06 -1.920211357e-05 -1.34601172e-05 -1.2483647e-08 -1.839510855e-07 6.147193295e-06 9.955284715e-06 -7.980547273e-07 -9.410301401e-09 -1.382866332e-07 8.1345321e-08 1.425824262e-06 5.459968852e-05 -2.503311982e-08 -3.960174674e-08 4.496770524e-06 3.74624282e-06 -8.535735223e-07 -5.903933776e-09 -7.134860897e-08 9.01182454e-06 3.33967838e-06 -8.38226532e-07 -4.382028791e-09 -7.298017034e-08 -4.469848719e-07 1.943141513e-06 1.729617503e-05 -0.04279400497 -0.01303272721 -0.005634995839 5.440385241e-06 -0.0006310075916 0.0002697756954 -3.944004043e-05 -3.60872237e-05 2.296929033e-05 -1.770375466e-05 -1.283589361e-05 -1.46645594e-07 -5.940697702e-06 0.001824622607 0.09960006424 -0.05929628493 0.002177019786 0.0002172527769 0.002366351434 -0.002110794759 0.0002753016672 -0.00643882897 0.0001590101866 -1.894553472e-05 -0.001501531263 7.214450517e-06 -0.0001118747018 8.626401996e-05 -8.755166172e-06 0.0001851425891 8.826053939e-05 3.174074001e-06 1.229272827e-05 -9.376074239e-05 1.316239219e-05 -1.733922302e-06 -4.102802936e-06 1.104646116e-05 -2.752771728e-06 2.852111831e-05 4.574319264e-07 1.706631018e-05 -5.189382298e-05 2.80769318e-07 1.201061598e-05 -1.247329805e-05 1.138036433e-07 1.361738962e-05 -1.153174527e-05 -1.125645654e-07 9.68583004e-06 -1.710387075e-05 -0.003244275677 0.0002473817431 -0.03716029814 -0.005162787067 0.1089412058 -0.0003197699812 -1.543581698e-06 -0.003024080321 0.02021329275 -0.0006059239944 -0.0001421116149 1.364184365e-05 -0.003299944774 4.210117573e-05 -0.001047445551 -0.0002404550145 -0.000110328812 -8.130698143e-05 -2.078073822e-05 -0.001556682957 -3.317276113e-06 6.523834941e-07 1.099794184e-05 -7.448696688e-05 0.0004448298033 -1.836817686e-06 3.873201569e-07 -5.382900517e-06 8.799869409e-07 6.09511571e-05 -1.088222793e-08 4.080908455e-09 9.019266783e-07 -4.654983703e-07 -3.720317293e-05 -4.88366401e-07 6.66956894e-08 1.288891408e-05 9.276176142e-06 2.628411396e-05 -1.147463143e-06 2.12426996e-07 -1.008178637e-05 -8.760987637e-06 3.555724498e-05 -3.378428102e-07 8.631043329e-08 1.543281106e-06 1.017099586e-05 -1.981021403e-05 -3.097842479e-07 2.295506961e-08 9.420791097e-07 1.602186025e-06 8.034586683e-06 -3.342811752e-07 4.185208698e-08 -6.065088559e-06 1.424521599e-06 8.971234888e-06 -2.676393006e-07 4.973637028e-08 8.955002671e-07 4.329107164e-06 -3.380310914e-06 -0.0694625105 0.1172792326 0.04529887152 0.005843933421 -0.003041449177 -0.001349889255 -0.0004769236572 0.000147382238 8.644593828e-05 4.236697492e-05 -2.328800554e-05 -6.72661419e-08 -9.26203444e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 -0.006312592323 -0.2464349812 0.0144808546 0.006470467621 -0.140489362 -0.009476867157 0.002368007505 -0.04430470628 -0.001749279764 -0.0002152136706 0.003624407052 9.629966783e-05 0.001676678432 0.001560029559 1.256385462e-05 0.0002730276531 0.001953670474 -8.376919336e-05 -1.629541375e-05 -0.0003653878386 1.972456739e-05 4.501656802e-07 3.040981647e-05 -1.190544869e-06 3.266226189e-08 3.014584182e-05 -0.0003699176419 -5.444928623e-06 9.144563476e-05 3.373190522e-06 -2.968068654e-05 -2.392165693e-05 -4.659062501e-07 3.61940227e-05 -1.604332982e-06 -3.483365092e-07 -2.135538422e-06 -2.626709873e-05 1.391233682e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.0002521783526 -2.009194506e-05 -5.597194849e-05 -5.163263855e-06 -2.458483476e-07 8.539646215e-07 -2.853155165e-07 1.379306943e-07 2.328178847e-08 -1.429537578e-07 2.136256777e-08 -3.255672889e-08 -3.694904414e-08 -0.1646530734 0.01228207419 0.001487161577 0.0001729021761 -0.01331535788 -0.002937305287 -0.0002889173776 0.004240264169 -1.835628543e-05 -1.591960363e-05 0.00032482471 -1.991343744e-05 1.428167739e-05 -9.097045728e-07 5.544884175e-06 -5.153440523e-05 1.607126729e-06 -9.383614809e-08 2.33707678e-07 -3.383349555e-06 -4.430454166e-07 8.120260705e-07 -3.520949029e-05 -1.109991682e-06 -3.599057601e-05 2.62801344e-06 2.442388128e-07 -1.308972135e-05 9.536331453e-07 1.794304573e-07 -9.241854656e-08 -1.44762129e-05 5.884486971e-07 -1.376900341e-05 9.649801079e-07 -9.53056625e-09 -1.183333858e-05 1.1523672e-06 4.764481399e-07 0.0004767851313 0.003938087678 -1.476129923e-05 -0.1373936182 0.008727997711 0.0009190962402 0.0002817379548 0.0003079944744 0.002647441043 -0.04464646742 1.46938806e-05 3.537274545e-06 -7.300285608e-06 -0.0001326629061 0.002115587264 0.0008060264104 7.578796751e-05 0.001950079001 -9.065804161e-05 -6.245436159e-06 4.801727896e-06 2.43072147e-06 -0.0002390199466 1.371881643e-05 1.371973969e-06 3.953610511e-07 1.382723117e-07 2.326969155e-05 -1.135722281e-06 1.315147531e-07 2.028484954e-05 9.017189811e-06 1.271005824e-07 -3.646591336e-07 1.437650181e-07 1.428164489e-06 1.072177588e-06 4.541282408e-07 -8.571902029e-07 -7.303614622e-05 2.301394089e-07 2.052435296e-07 -1.487949051e-05 9.044809413e-07 -9.317764668e-08 1.224496205e-07 7.302429172e-08 -8.515664785e-08 -6.343081007e-06 2.758511627e-07 -4.311900733e-08 5.758900563e-07 5.386683752e-08 1.200444045e-06 -1.68575441e-05 -1.343849459e-08 2.951385201e-07 -9.847119386e-06 6.635434174e-07 -5.303231504e-08 7.016555185e-08 1.782188413e-07 -6.025108176e-08 -7.790206562e-06 4.089825453e-07 -2.545168948e-05 -8.794955061e-06 -2.677011022e-06 1.427734109e-08 -4.093418936e-07 1.419459612e-07 -1.019244012e-08 -2.703843505e-08 8.837034248e-09 -5.057764679e-09 -1.017018356e-08 -1.173109604e-09 -2.612948715e-09 -0.003735459492 -0.1202157059 0.0008598591285 -0.001235007709 -0.0001179420749 -2.245070069e-05 0.001963696101 -7.8837853e-05 -4.030301011e-06 -0.0002006463418 -1.581985979e-05 -1.940544957e-06 -5.246235448e-08 0.0001176769748 -3.0244425e-07 -4.190951595e-06 -0.0001005763633 4.27537579e-06 -2.967686401e-06 -2.542188405e-05 2.733195328e-07 -1.523149008e-05 -3.289374057e-07 -3.05038477e-08 1.343390843e-07 9.105520137e-08 -3.23064559e-05 -7.291195001e-07 -2.387629629e-05 5.18838983e-07 -6.082547213e-07 -1.402190217e-05 6.605886195e-07 -9.141079478e-08 -1.591851249e-05 2.678233363e-06 -3.554444024e-07 -1.189357112e-05 1.616843753e-07 0.003707936614 4.998578495e-05 -0.0005080705589 -0.006822191812 -0.1358847701 0.0003467650558 -2.202649028e-05 0.0004163708694 -0.01938067592 -0.0009224285696 0.0001899569868 -1.090313875e-05 0.003828697079 0.0001210275747 -1.753769852e-06 1.075699253e-05 -1.729004171e-07 0.00015182467 1.400094722e-05 -4.455722602e-07 2.169995371e-05 -1.26120495e-06 7.733462877e-06 0.0001619008427 2.185549566e-07 2.876126758e-06 -4.910158316e-07 -9.714883431e-07 -1.077057027e-05 -0.0001078143027 3.180175868e-07 -2.834912475e-08 -1.189960123e-05 8.404047064e-07 -1.218804907e-08 2.90025029e-07 1.762982193e-08 -1.177357461e-05 -3.052939679e-06 -3.894319699e-08 1.260374118e-06 -3.784349025e-08 -1.098127976e-07 -1.652686605e-06 -4.474968232e-05 5.497653186e-07 -3.563134533e-08 -9.498042412e-07 -2.024476371e-05 3.056289252e-07 3.682808698e-07 -3.043035526e-08 -2.596205539e-07 -1.820998867e-06 -1.11077749e-05 3.997289575e-07 -1.727059375e-08 -1.550335163e-07 -1.83692679e-06 -1.260517173e-05 3.382292413e-07 -1.530673982e-08 -3.207181068e-07 -1.321145098e-05 7.614072988e-07 -0.07666998238 -0.02334950809 -0.01009569055 9.7470251e-06 -0.001130516785 0.0004833316682 -7.066100046e-05 -6.465407495e-05 4.115191102e-05 -3.171814741e-05 -2.299685991e-05 -2.627310791e-07 -1.064338775e-05 -0.03584695634 -0.04845234898 -0.09791220446 -0.00116515017 -0.001002882602 0.003856897087 0.001219019816 0.0003824790928 -0.01153335058 -5.992385376e-05 -8.51237206e-05 -0.002694663218 1.836931189e-05 6.212938236e-05 0.0001491701017 -2.11636482e-05 2.719736673e-05 0.0002548813865 -7.746019861e-06 -6.143749601e-06 -0.000167209214 -7.091452541e-06 -3.988065185e-06 -7.632408632e-06 1.887082178e-05 -8.665545461e-06 -1.535679294e-05 -2.337729238e-06 -1.108765151e-05 -9.085712009e-05 -1.484891319e-06 -8.747290228e-06 -1.605046926e-05 -9.294676822e-07 -1.102872001e-05 -1.087484442e-05 -1.727265333e-06 -5.615810317e-06 -2.968693412e-05 0.002531982941 2.344604566e-05 -0.06600652566 -0.04404506145 -0.05297723394 0.0003001920393 -1.141770852e-07 -0.003101152703 -0.01061543477 -0.005055075704 8.672450866e-05 8.633241143e-07 0.001785731173 0.0007032292135 -0.001858844295 0.0002031838823 3.581452976e-05 5.528838179e-05 8.370572608e-05 -0.002782999309 1.864436972e-06 9.558437199e-07 3.746900543e-05 2.914172931e-05 0.0007974990227 9.810666651e-07 -1.059947024e-07 -1.408461127e-05 -3.801603647e-05 -2.59138579e-05 8.461100068e-09 1.456081224e-09 -1.078483627e-06 -6.75167902e-07 -6.664966029e-05 2.717490938e-07 1.017500158e-07 -1.220527318e-05 6.528300242e-06 4.612504284e-05 7.379676664e-07 9.235213825e-08 -1.839691639e-05 -2.556921097e-05 -1.604008699e-05 2.251053156e-07 3.642149812e-08 -5.849189321e-08 -9.454024624e-06 -3.42452622e-05 2.289494501e-07 5.405440797e-10 1.176559883e-06 -5.194807205e-06 -3.344667594e-06 2.433666187e-07 8.220451171e-09 -1.172212342e-05 -5.211055947e-06 -3.218113331e-06 1.808683763e-07 1.776437905e-08 8.355883341e-07 -1.682194434e-05 -3.003191814e-06 --0.1244894771 -0.2101857568 -0.08118383266 -0.01047339364 0.005450831173 0.002419247537 0.0008547341044 -0.0002641358282 -0.0001549268746 -7.592933966e-05 4.173634974e-05 1.205531843e-07 1.659925355e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.3637359021 0.0700232606 0.001127258787 0.001428682097 0.0003538882964 0.0001215062951 4.595407234e-05 2.220261721e-07 2.574581689e-05 8.766728567e-06 4.248650953e-06 9.103454128e-06 5.761747921e-06 -0.09261772873 0.01283814802 0.005845415799 0.00459061481 0.01079932409 -0.05141288724 0.0006674041828 0.001528836695 -0.009170238934 -7.779765744e-06 -1.909981372e-05 0.0001378816079 1.720899617e-07 7.186667344e-07 -4.010866162e-05 -0.0002532622988 7.090110074e-05 2.563084193e-05 9.489299525e-06 -1.695505021e-06 -6.666754504e-07 -1.009463753e-06 8.608281749e-08 -1.705473716e-10 -2.751799369e-06 -1.061036906e-05 -4.294042932e-06 1.489353134e-07 4.141470384e-07 -2.420588996e-06 1.023935282e-07 2.600839044e-08 -3.860781581e-06 -5.665972806e-07 -8.360400781e-07 -2.661059788e-06 -2.673702408e-06 6.418859205e-07 2.193408353e-07 9.667081521e-20 1.075710766e-06 -0.02533616437 0.005051603997 0.001949484274 -3.645757874e-20 9.644849478e-07 -0.02381095117 0.004668657094 0.0006671788848 -1.421573627e-20 2.913728318e-07 0.0009719562298 0.001827778882 -0.009747243213 7.705630195e-22 4.036397421e-09 5.323167169e-05 0.0001320365158 -0.0008030200969 -3.645891628e-23 5.092021046e-10 -6.820942519e-07 2.439776241e-06 1.533462776e-05 5.373911734e-23 4.798208294e-09 -8.06488125e-05 -4.176044426e-06 4.486823047e-06 -4.388372471e-23 3.15194717e-12 1.347609846e-06 4.257147142e-06 -1.587912552e-05 -6.059404782e-24 1.457313638e-11 1.408200001e-07 9.829390316e-07 -6.40073706e-06 7.297777249e-24 7.819570725e-11 -1.96760478e-06 2.605497553e-07 3.93818136e-08 4.100292028e-26 -1.531973543e-12 4.781231651e-08 -1.707666559e-08 -5.699025478e-09 -4.572646443e-24 7.77916724e-11 3.277097911e-07 1.058644816e-06 -3.92977133e-06 9.484081868e-25 6.689223284e-11 -1.147974117e-06 6.556156534e-08 8.408130294e-09 -5.478020403e-25 3.718608173e-11 -1.453136912e-07 -5.857946455e-07 -2.111284866e-08 -0.3231284777 -0.008771257858 -0.02211143554 -0.002627389903 0.003423479474 -0.0006004980192 0.0001577881829 -0.0002047424553 0.0002002173849 -6.754360125e-05 5.347229048e-05 -2.372482861e-05 2.694541117e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.1841237389 0.002721543895 0.002412213641 -1.638917348e-05 0.0005674841995 0.0001873999811 2.824941109e-05 3.477724039e-05 5.415510722e-05 4.292092387e-05 2.74044628e-05 2.204622183e-05 2.007619797e-05 -0.04550567719 0.004282629549 0.2112482929 1.289965468e-05 -0.000136887344 0.0005674872568 -7.806055811e-05 -0.0003946302838 0.002332466496 1.136927117e-05 -9.34322617e-05 0.0003922151692 -0.0001497472916 -7.669396006e-07 0.0007633966901 -2.241279643e-05 4.953169721e-06 0.0001054434719 -5.394945216e-06 1.18159002e-06 2.160147111e-05 5.775863305e-07 -1.291097116e-05 5.951295511e-05 8.332450391e-05 -1.755277601e-05 -8.666566563e-08 -9.801493399e-06 1.47176625e-06 4.764749939e-05 -5.929758603e-06 1.484993294e-06 2.797789471e-05 -2.141837569e-06 2.72588904e-06 2.250120381e-05 -5.83966711e-06 6.863903373e-07 2.780953737e-05 0.0001166367465 -0.001990033398 0.06614146879 -0.07526775466 0.006975057864 -0.0001425697826 -8.300420285e-05 0.003372831115 0.0006748816187 -0.004061414444 -1.037948555e-05 -3.581018246e-05 2.185510087e-05 -0.0003284731458 0.0003321987123 -1.437161692e-06 -9.604693112e-07 8.208622162e-05 -0.0005547356818 0.0004475020292 -2.346623117e-06 -1.240403564e-05 -0.0001939280999 2.065742629e-05 0.0001770042901 -5.40391055e-08 -1.287642657e-07 2.456066321e-06 -2.766224803e-06 3.482860787e-07 -8.816561831e-08 -7.690128311e-08 -3.430748533e-06 -3.643215106e-06 6.81410007e-06 2.387118355e-08 -1.931431495e-07 3.040322332e-06 -2.277476793e-05 1.830961465e-05 -4.217175651e-08 -4.774430665e-07 2.342694185e-05 -2.616342142e-05 1.834969817e-06 -3.253528401e-08 -2.030666121e-07 -1.300393933e-05 1.949091919e-06 1.056488751e-05 -6.858660243e-08 -9.569051654e-08 9.213358257e-06 -1.135368808e-05 1.771035041e-06 -2.139306524e-08 -1.703181872e-07 8.604215996e-06 -1.103816319e-05 2.101010913e-06 -1.567217019e-08 -1.404168458e-07 -7.399263723e-06 1.515566526e-06 5.547080096e-06 -0.1927511184 0.001402417603 0.002835110879 -2.704222162e-06 0.0006182617919 0.0001412732983 1.883220915e-05 3.782726762e-05 5.641830489e-05 3.757635345e-05 2.36315019e-05 2.136322672e-05 1.962589421e-05 -0.05979183443 0.01779410943 0.2078473978 5.082980324e-05 -0.0004677968501 0.001707994885 -1.928583468e-05 -0.0004560882431 0.002178816849 2.905446113e-05 -0.0001589664888 0.0005755703888 -0.0001502611367 1.983637891e-05 0.0006759946098 -7.858375624e-06 1.955426838e-05 3.701243415e-05 -6.261023235e-06 2.120810002e-06 1.964190291e-05 9.147273094e-07 -1.614621043e-05 6.597788419e-05 7.751676334e-05 -1.948222393e-05 1.375446403e-06 -1.003737577e-05 2.849374471e-06 3.913555097e-05 -5.768653051e-06 4.849512452e-06 2.156731436e-05 -4.464423889e-06 6.827266661e-06 1.897166464e-05 -6.343652959e-06 1.611191432e-06 2.52497445e-05 -0.00154888526 -0.0003140997488 0.06042218686 -0.08621715227 0.01734808316 -0.0002923063989 2.909868101e-06 0.003904844512 0.00166323628 -0.006106411021 -1.455874187e-05 -9.671494935e-06 2.420917805e-05 -0.0002232862209 0.000191062553 -0.0001650987689 0.0001224360201 5.768130749e-05 -0.0006225889468 0.0005191901726 7.124841836e-08 -2.38531964e-06 -0.0001715711413 3.019131868e-05 0.000122733157 1.514568457e-07 1.2517373e-07 -2.820971194e-06 3.646098993e-06 -6.519668246e-07 -5.613948155e-09 -3.061079176e-09 -1.862303986e-06 -7.327652641e-06 7.843078907e-06 1.641696089e-08 -3.101604972e-07 7.239390879e-06 -4.089122721e-05 2.924291342e-05 -2.091688306e-07 -3.150453298e-07 1.695557392e-05 -2.243589411e-05 2.976511146e-06 -7.90135552e-08 -8.804939561e-08 -1.128731195e-05 3.213605083e-06 6.813536859e-06 -1.318168045e-07 -3.295472202e-08 8.072346629e-06 -1.280467782e-05 3.554883501e-06 -1.306679315e-07 -5.87423405e-08 8.237502742e-06 -1.271578554e-05 3.317643169e-06 -6.902106244e-08 -6.754450937e-08 -5.944282468e-06 4.25730372e-06 7.108279751e-07 -0.3231284777 -0.008771257858 -0.02211143554 -0.002627389903 0.003423479474 -0.0006004980192 0.0001577881829 -0.0002047424553 0.0002002173849 -6.754360125e-05 5.347229048e-05 -2.372482861e-05 2.694541117e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.339245372 0.0461638881 -0.0001401468316 0.00245542731 0.0001472799532 2.028152886e-05 0.0001235990406 9.365828157e-07 1.105814386e-05 2.042711277e-05 6.01476313e-06 8.485154435e-06 8.924819593e-06 0.02351069372 -0.04126140653 -0.06409428778 -0.02923855825 -0.01057803392 0.008477064268 -0.003258756289 -0.001547684326 0.001075041677 -0.0001361234719 -8.337812681e-05 5.091811388e-05 8.857119611e-05 -0.000262850265 4.402266571e-05 2.208200738e-05 -2.895651903e-05 -8.941250331e-05 4.245877117e-06 -6.063899852e-06 -1.26471596e-05 3.732772023e-08 -1.215755607e-07 -2.165985887e-08 2.359135574e-06 -1.409342968e-05 -5.414753198e-06 -5.267327228e-06 -3.546188826e-06 1.981350916e-06 1.383455597e-06 -4.221498808e-06 7.400145763e-07 -7.225643547e-07 -5.325027315e-06 1.47847858e-06 8.794069651e-07 -1.40815183e-06 -2.8490649e-06 9.637300635e-19 8.697061292e-07 0.007884521466 -0.008829421243 -0.02469547044 -5.915817366e-19 8.242394074e-07 0.007966980829 -0.006653794403 -0.02245482537 6.85791786e-20 2.711572012e-07 -0.004691822536 -0.002458326042 0.001329701476 5.513106297e-22 5.776160037e-09 -8.138670494e-05 -4.68196928e-05 2.933200077e-05 -1.487813835e-22 6.375081399e-10 -4.612733443e-06 -1.206042597e-05 4.726761286e-06 5.128326526e-22 3.672264657e-09 4.879394189e-05 -0.000249048347 6.545965657e-05 -1.096563078e-23 1.127918321e-11 5.13672979e-07 2.934991846e-07 -1.59333674e-07 -7.422721887e-24 -1.140101677e-11 2.880731962e-07 5.286734009e-07 -1.994490006e-07 8.720534623e-22 4.155729131e-11 3.481943823e-06 -7.388785473e-06 -6.396687358e-06 -7.38922766e-24 -1.745525621e-13 3.771644477e-08 -7.129212216e-08 -2.824344166e-07 -2.330544628e-23 7.958694079e-11 -1.165243422e-06 -7.195430351e-07 3.655100004e-07 3.285181949e-23 4.502175093e-11 9.82895072e-07 -4.536194103e-06 7.8850747e-07 -1.311484891e-23 3.265863378e-11 -1.225778225e-07 -6.629948053e-07 1.980594521e-08 -0.2034980027 0.0006073264727 0.003395175789 8.317802147e-05 0.0006801040039 9.997443318e-05 1.148152229e-05 4.257404928e-05 5.934684993e-05 3.187227511e-05 1.966865563e-05 2.069797318e-05 1.923190137e-05 -0.02903157792 -0.03078399004 0.1873476758 -0.0004004799488 -0.000323151247 0.003207643706 -0.000311520957 -0.0002485707453 0.00176515335 -0.0001896574985 -5.560134471e-05 0.0007747048923 -6.00352228e-05 -0.0001138754186 0.0005474871402 1.189536359e-05 1.741006657e-07 6.686927516e-06 -2.565423299e-06 -2.397933619e-06 1.563642022e-05 -1.549440275e-05 -3.478475497e-06 6.344933969e-05 -6.744996734e-06 -1.288250483e-05 6.117689619e-05 -2.472203204e-06 -6.953410955e-06 2.905188484e-05 2.019746925e-05 -1.344336342e-06 -4.87670625e-06 -2.736433017e-06 -4.528375508e-06 2.274111198e-05 -2.158542889e-06 -4.680704894e-06 2.130241243e-05 0.0006045947045 -0.003405262716 0.03233726078 -0.02597599428 -0.04978537718 0.0002449899898 -0.0009141951161 0.003773583734 -0.006237654324 -0.002087245807 8.754185323e-06 -3.08854102e-05 5.515399139e-05 -7.499954073e-05 -3.548692336e-05 8.79351017e-05 -0.0005284839816 -8.244038185e-05 -0.0003485820009 0.0003597385102 2.5782356e-06 -8.072695037e-06 -2.980681838e-05 -7.548191118e-05 4.563774444e-05 -4.381868354e-08 1.636874358e-07 1.327520629e-07 5.528922526e-07 -3.353514853e-07 5.959957477e-06 -1.962263673e-05 9.547683625e-08 -7.031744931e-07 5.84943828e-06 -2.265823976e-06 6.805604671e-07 1.783914486e-05 -4.285416715e-05 1.550909091e-06 1.427617102e-07 -4.380916773e-07 -5.175067353e-06 -1.310101289e-05 7.764921467e-06 6.176221411e-08 -1.924500796e-07 2.982791587e-06 -1.704281283e-06 -5.763307776e-06 -2.127176507e-07 -1.186807719e-07 4.212414094e-06 -4.770883019e-06 -5.064381954e-06 -2.822484259e-08 -1.513013019e-07 -6.150859512e-06 -4.178422318e-06 4.335672354e-06 6.523917103e-08 -2.285785365e-07 2.902099055e-06 -1.876652642e-06 -5.133263517e-06 -0.2923646555 -0.03930565248 -0.01570979229 0.0005176938348 0.002856578549 -0.00112562096 0.0003882258059 -0.0001672468958 0.0001827020972 -9.095785466e-05 7.45032819e-05 -2.527024408e-05 2.812833732e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.1736628217 0.004771513001 0.001891291843 1.013589284e-06 0.000491196096 0.000246210902 4.794576287e-05 3.259525547e-05 4.996487816e-05 4.902680695e-05 3.341474428e-05 2.338015454e-05 2.059360129e-05 0.01628043317 -0.06994465443 0.2011101291 -7.484132654e-06 4.567928968e-06 1.962991134e-05 -0.000833901595 0.0002745237278 0.002217172533 -7.350109818e-05 2.526499347e-05 0.0002022079143 5.961055976e-05 -0.0002841825586 0.0007910367592 3.839295208e-07 -4.230615858e-05 0.0001736679382 1.298389455e-06 -8.330353625e-06 2.732563244e-05 -1.819534881e-05 8.5720281e-06 4.605398142e-05 7.218315119e-05 1.677074044e-05 -2.947726035e-05 4.018657767e-06 -2.072234328e-05 5.866991905e-05 8.082628338e-07 -1.153914707e-05 3.540157643e-05 2.172768697e-07 -8.895664607e-06 3.042933889e-05 2.085696385e-06 -1.038932242e-05 2.927828395e-05 -0.002643758336 0.0003658834391 0.04751826675 0.03689761449 -0.108770685 -0.0002220087166 -2.069841683e-06 0.002452027441 -0.004166433407 0.0008962975852 -0.0001344092184 2.280411669e-05 -0.0007092840782 0.0003615262438 0.0002603417108 -0.0001842198718 -0.00012790958 -0.0002020697725 0.0001358398481 0.0002470496521 -3.259736017e-06 1.713457828e-06 0.0001290004409 -0.0003991056459 0.0001772650591 -1.844424154e-06 7.747115336e-07 9.360164112e-06 1.218351388e-05 -2.816307e-05 -8.898877544e-09 6.642547873e-09 -1.031664708e-05 3.414565084e-06 4.523597865e-06 -4.819976204e-07 1.868368007e-07 -3.294259188e-05 1.467975466e-05 1.006303383e-05 -1.056369876e-06 3.645026137e-07 1.009041925e-05 2.538903551e-05 -4.583318807e-05 -3.050036638e-07 1.430248423e-07 6.173756007e-06 -2.825865588e-05 1.557811519e-05 -2.624637666e-07 3.570859743e-08 7.06475402e-06 2.770821762e-06 -1.340241236e-05 -2.860096633e-07 6.404316754e-08 6.546863954e-06 2.647157168e-06 -1.244103366e-05 -2.396815513e-07 8.092853456e-08 1.369501418e-06 -1.016662448e-05 5.191201644e-06 -0.2923646555 -0.03930565248 -0.01570979229 0.0005176938348 0.002856578549 -0.00112562096 0.0003882258059 -0.0001672468958 0.0001827020972 -9.095785466e-05 7.45032819e-05 -2.527024408e-05 2.812833732e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.3456867356 0.05213546697 0.0001332296383 0.002345433966 0.0002267453386 4.405370157e-05 0.0001170270692 3.965832163e-07 1.471035752e-05 1.89984152e-05 4.750653513e-06 9.018883294e-06 8.772839712e-06 0.03467966318 -0.1564714067 0.03754795429 0.01596110972 -0.06521295309 0.01470903453 0.002246897878 -0.009051668255 0.001994358331 5.40452359e-05 -0.0002173760626 4.648543949e-05 -0.0001795619959 -5.014399016e-08 4.378306024e-05 5.33168493e-05 -0.0002368677619 5.529833013e-05 4.047337196e-06 -1.854063841e-05 4.628136377e-06 2.152692383e-08 -9.874730645e-08 1.141467019e-08 2.175032967e-07 1.776950575e-05 -3.908529183e-05 2.595400044e-06 -1.093160009e-05 2.434719706e-06 -2.991300308e-06 1.628991817e-07 6.72279768e-07 -9.571669468e-06 3.664914128e-06 9.05159109e-07 1.28908001e-06 -5.612558627e-06 1.312370823e-06 2.803573013e-20 9.139359764e-07 0.01018324015 -0.04565693144 0.01283717906 1.33560206e-18 8.525975126e-07 0.007338161053 -0.03997781169 0.01290005221 -2.987335677e-19 2.724382947e-07 0.002824607203 -0.01192189129 0.003133978635 8.637028528e-22 4.276471817e-09 0.0001196213535 -0.0004492078919 0.000103282027 -4.514301264e-22 7.731511123e-10 -1.228067251e-05 4.700984291e-06 1.4455911e-06 3.900903391e-21 3.752850184e-09 4.226526992e-05 6.851433029e-05 -0.0002436151861 -2.124218638e-22 1.925815435e-12 1.894267136e-06 -7.84492492e-06 1.965611591e-06 -3.644577969e-23 3.557476632e-11 1.871475129e-07 -8.879693093e-07 2.063850426e-07 -2.814075414e-22 4.356903449e-11 3.671980304e-06 -1.739471418e-05 4.439972904e-06 -9.600664281e-26 -6.131215831e-14 4.477137672e-08 -2.274664064e-07 5.507872237e-08 -1.884904298e-22 7.582820943e-11 8.446029765e-07 -3.56777697e-06 9.056690547e-07 5.239719351e-23 4.632835351e-11 9.341599377e-07 -2.631172683e-06 -9.917520342e-07 3.862120259e-23 3.533529704e-11 -1.233788039e-06 6.226772082e-07 7.597216784e-10 -0.2088407091 0.0003610146078 0.003626226359 0.000146229541 0.0006979357983 8.079751181e-05 9.03821709e-06 4.625825904e-05 5.981312156e-05 2.881963965e-05 1.808205541e-05 2.063949331e-05 1.902449992e-05 -0.08085533977 0.02328581493 0.1869680012 0.0001130021701 -0.00224215111 0.005529820631 0.0001972774236 -0.0007362726616 0.0016803913 0.0001301572409 -0.0004339798413 0.000943352217 -0.0002303604723 6.724094612e-05 0.0005113558023 1.12613316e-05 5.637036463e-07 6.643274707e-07 1.899454347e-06 -7.326253843e-06 1.692967879e-05 6.644732544e-06 -3.316795409e-05 7.481316962e-05 -2.541361739e-05 8.686175269e-06 5.580639722e-05 -1.159714917e-05 4.674033386e-06 2.451962849e-05 2.077273201e-05 -9.404485892e-06 2.420022648e-06 -1.003706073e-05 3.085655115e-06 2.236754418e-05 -8.53687301e-06 4.332372552e-06 1.803490375e-05 -0.0006983910316 -0.001749236948 0.03427496616 -0.1077262063 0.03150861219 -0.000903661384 0.0002667335754 0.004020586648 0.004601367449 -0.01377958775 -1.669016183e-05 4.715117121e-06 3.676934807e-05 3.187391071e-05 -0.0001060073909 -0.0007209589871 0.0002171023186 -0.0006781337024 0.0002175241066 0.0004213392308 -5.306587653e-06 5.207219616e-07 -0.0001189167097 3.576170555e-05 3.86486781e-05 -3.109721981e-07 6.865346942e-08 -1.662672993e-06 5.520740482e-07 5.786510429e-07 -2.004689507e-05 4.77828767e-06 -2.541260122e-07 -2.834777166e-06 8.169896889e-06 -7.234069059e-08 -1.27759657e-06 1.892786429e-05 2.167315487e-05 -6.480743762e-05 -2.637581575e-07 -9.885561291e-09 -2.222850436e-05 7.11989399e-06 6.464337967e-06 -1.335168653e-07 1.238672863e-08 3.32733661e-06 -9.513653742e-06 2.555371698e-06 1.410215621e-07 -4.32798372e-07 4.370163518e-06 3.551100135e-06 -1.350172989e-05 2.520878013e-08 -1.826220395e-07 -1.367601373e-05 3.146746704e-06 4.674050528e-06 -9.048830345e-08 -4.855984274e-08 3.110528996e-06 -9.422273668e-06 2.687533261e-06 -0.1702451467 0.005504231152 0.001718687487 1.079948949e-05 0.0004626754064 0.0002639524962 5.661632269e-05 3.256033465e-05 4.833736982e-05 5.06364813e-05 3.56238809e-05 2.405946204e-05 2.083892649e-05 0.01927229475 -0.06982428256 0.2047019434 -3.515097226e-06 1.678016951e-06 9.737380341e-06 -0.0007753403979 0.0002437958129 0.002254575691 -5.818410659e-05 2.100750672e-05 0.0001672699822 7.61460649e-05 -0.000270927608 0.0007909876947 1.267681351e-05 -7.190000046e-05 0.0002184915267 2.880935569e-06 -1.087847511e-05 3.265530893e-05 -1.676710868e-05 6.100069126e-06 4.762811135e-05 7.753575209e-05 1.287618602e-05 -2.824864173e-05 4.060251375e-06 -2.10762071e-05 6.355767572e-05 2.013576974e-06 -1.25711561e-05 3.843773683e-05 1.023855603e-07 -1.010298898e-05 3.356416573e-05 2.315417483e-06 -1.008454859e-05 3.002974044e-05 -0.003207811666 0.001199393092 0.05499971505 0.03867453926 -0.1102203565 -0.0002191821722 5.117761782e-05 0.002294211859 -0.00354391283 0.0007962448155 -0.000154569066 4.19709888e-05 -0.0007667826911 0.0002617827756 0.0004670270808 -8.348048831e-06 3.607501315e-07 -0.000478962235 0.0001587323304 0.0002475106674 -1.709366386e-05 9.025141946e-06 0.0001289303438 -0.00040943281 0.0002188101231 -2.299486892e-06 1.778533178e-06 1.896165997e-05 1.718890549e-05 -4.31988726e-05 -2.249230351e-07 7.040784494e-08 -9.2497597e-06 2.47055324e-06 5.255786213e-06 -2.554794772e-07 1.137535654e-07 -3.099484971e-05 2.229445089e-05 3.382214403e-06 -1.038243805e-06 2.946799423e-07 2.286515779e-05 1.764289905e-05 -4.7714927e-05 -4.467107056e-07 2.255552787e-07 7.585091154e-06 -3.088641841e-05 1.840060932e-05 -2.70410146e-07 8.746602732e-08 7.278432226e-06 6.065107072e-06 -1.592465142e-05 -3.262423092e-07 1.195824824e-07 7.600358424e-06 4.252437029e-06 -1.40863496e-05 -2.770058125e-07 1.17573544e-07 2.574604457e-06 -1.637927331e-05 1.123449881e-05 -0.2982338823 -0.03407332044 -0.01728749538 4.858830819e-05 0.003032666556 -0.001049962232 0.0003287706008 -0.0001674262674 0.0001888536356 -8.806641114e-05 6.988312475e-05 -2.455675072e-05 2.77971979e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.2982338823 -0.03407332044 -0.01728749538 4.858830819e-05 0.003032666556 -0.001049962232 0.0003287706008 -0.0001674262674 0.0001888536356 -8.806641114e-05 6.988312475e-05 -2.455675072e-05 2.77971979e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.3490759323 0.05536441965 0.0002935776124 0.002246780408 0.0002637560649 5.811114959e-05 0.0001096562527 1.843421996e-07 1.702729469e-05 1.766622127e-05 4.227268722e-06 9.309101004e-06 8.473248303e-06 0.04299045342 0.1785823255 0.01737917522 0.01008586453 0.06716289591 0.02416091646 0.001350608796 0.01080516105 0.003024425691 1.788466466e-05 0.0001715647067 4.058243113e-05 8.741613715e-05 0.0002394348423 4.381700835e-05 0.0001284002341 0.00023682042 3.912934065e-05 3.905180867e-06 1.348988499e-05 1.705622123e-06 4.613016815e-08 2.930413861e-07 2.106293986e-09 2.308706378e-07 1.103668413e-05 5.236298303e-05 1.030568841e-06 1.073432973e-05 2.85754636e-06 1.708992858e-06 4.126336623e-06 8.029789513e-07 1.101531393e-05 2.778148064e-06 7.23691599e-07 1.982552811e-06 5.111664482e-06 6.314671911e-07 -1.221473292e-18 9.390422512e-07 0.01456323788 0.04588284392 0.007753935727 -1.178275386e-18 8.69254848e-07 0.01122976266 0.04117371809 0.008785037369 -6.972761261e-19 2.742342491e-07 0.001516248636 0.0135023112 0.00432339526 4.795555309e-20 4.079992972e-09 7.90564037e-05 0.0006792423914 0.0001751543347 1.010849545e-22 1.100141528e-09 6.50448759e-06 1.275137516e-06 7.625489632e-07 -1.55756864e-20 3.830567265e-09 4.526673315e-05 0.0002001298712 0.0001652049222 -8.789164389e-24 2.455756584e-12 1.461953074e-06 1.241895262e-05 5.282241184e-06 -2.816926388e-23 2.044560308e-11 1.197233956e-07 3.209705489e-06 6.430144736e-07 5.869853508e-22 4.498927705e-11 4.081211029e-06 2.123997692e-05 1.394358209e-06 7.652903827e-25 3.071938293e-13 7.43766877e-08 6.416618951e-08 1.413378303e-08 3.532251768e-22 7.451224647e-11 4.606320709e-07 4.203671496e-06 1.775800114e-06 -6.473230898e-23 4.754714778e-11 1.013511031e-06 6.957545656e-06 1.426047586e-07 2.054694795e-23 3.633435866e-11 1.41048389e-06 4.256937683e-07 2.229114543e-10 -0.2111385529 0.0002502589398 0.003704876918 0.0001751567328 0.0007001983574 7.20978147e-05 8.348941385e-06 4.806207519e-05 5.948432344e-05 2.74495913e-05 1.757740758e-05 2.06425939e-05 1.886039875e-05 0.1129762843 0.008595200362 0.1870256528 6.494371167e-05 0.001788274202 0.007167065223 7.775309771e-05 0.0008983530725 0.001634090191 8.897109051e-05 0.0005173695232 0.001020765151 0.0002656164724 3.235474207e-05 0.000492763124 2.290290185e-05 1.012750376e-08 5.761426504e-07 7.59170391e-07 1.015430799e-05 1.825506845e-05 5.13558356e-06 3.233908311e-05 8.062054712e-05 3.189749656e-05 4.113703024e-06 5.308379962e-05 1.423090539e-05 2.547401155e-06 2.298497235e-05 2.116985606e-05 1.015235691e-05 1.591789523e-06 1.274804803e-05 1.438166702e-06 2.230682921e-05 1.309188476e-05 2.082855143e-06 1.675087699e-05 0.0001022194919 0.004851481475 0.03523394399 0.1307232481 0.01589591971 0.0006383623055 0.0007385145906 0.00419265014 0.002928276136 0.01731354941 7.970123633e-06 1.05597988e-05 2.812480841e-05 1.26981632e-05 9.603615437e-05 0.000631254414 0.0003437375522 0.0007811224195 0.000154454011 0.0004558651595 2.751684532e-06 4.564739814e-06 0.0001199740406 1.771212898e-05 3.541701713e-05 3.521793916e-07 3.055699708e-07 2.858324664e-06 5.677589066e-07 9.124355116e-07 1.398817272e-05 1.984522172e-05 1.320290278e-07 3.852554535e-06 9.703840533e-06 2.320433299e-06 5.21582621e-07 1.946951211e-05 2.309545909e-05 6.360521264e-05 1.224883174e-07 3.33070038e-07 2.441933314e-05 3.716980366e-06 6.025750434e-06 7.197196249e-08 1.340207383e-07 3.539335318e-06 9.578481319e-06 1.545254798e-06 6.840521312e-08 5.330386251e-07 4.471994544e-06 1.247318597e-06 1.880633902e-05 2.628189063e-09 3.121953147e-07 1.922374149e-05 8.861668468e-07 4.893717928e-06 2.730509758e-08 2.500141796e-07 3.228829711e-06 1.023585877e-05 1.529443301e-06 -0.1728489752 0.005025460494 0.001870168735 6.80023261e-06 0.0004875037629 0.0002533280534 5.054186489e-05 3.207028623e-05 4.953201803e-05 4.977919565e-05 3.412306679e-05 2.341946529e-05 2.055272272e-05 0.02342329467 0.06637355951 0.2059320716 2.962882065e-05 2.342526399e-05 0.0001019749993 0.0008600893318 0.0001805180819 0.00231128395 6.056705105e-05 3.558867894e-05 0.0002048925846 7.586014617e-05 0.0002700466191 0.0008015598394 1.692452633e-05 6.575203369e-05 0.0001959927621 4.610541614e-06 8.230315889e-06 2.88994692e-05 1.609908977e-05 6.864202672e-06 4.868304123e-05 7.872457075e-05 1.279505011e-05 2.853291173e-05 5.11296306e-06 1.994966827e-05 6.097701046e-05 2.908879261e-06 1.20099409e-05 3.539206187e-05 2.309815101e-07 1.489427921e-05 2.865306488e-05 2.862912894e-06 9.635642139e-06 2.973943736e-05 0.003012169338 0.001281454864 0.05679341979 0.04878849981 0.09909228133 0.0003622639091 1.40388518e-05 0.002499101601 0.003851618267 0.001274373718 0.0001640616598 2.36807214e-05 0.0006857432436 0.0002947824399 0.0004547503667 9.693900932e-06 7.147945049e-08 0.000455253416 0.0002633514039 0.0002830026714 1.930329514e-05 6.925107154e-06 0.0001594483841 0.0003597212664 0.0002160342489 2.525718487e-06 9.63843588e-07 1.662786992e-05 2.036760047e-05 2.932675266e-05 3.083774029e-07 2.281306404e-08 1.161372512e-05 8.763497095e-07 5.035114794e-06 2.310771417e-07 1.429045673e-07 2.270262891e-05 3.811415407e-05 3.957011472e-06 1.075939369e-06 2.306591564e-07 2.317644023e-05 2.057242538e-05 4.3288717e-05 4.75447827e-07 1.664594931e-07 9.632403582e-06 2.728165705e-05 1.666700514e-05 3.472874057e-07 3.634921943e-08 7.723825037e-06 1.011771286e-05 1.155037599e-05 3.442519165e-07 9.046616885e-08 7.896581178e-06 7.717883271e-06 1.093730571e-05 2.903366532e-07 9.19478165e-08 3.250887506e-06 1.718607669e-05 9.168984217e-06 -0.1798585283 0.003776545821 0.002264665482 5.990200201e-08 0.0005494585742 0.0002204176143 3.624669494e-05 3.213911362e-05 5.292363394e-05 4.666465451e-05 3.002215617e-05 2.211566002e-05 2.007165937e-05 0.0396410139 0.05583493377 0.2037707875 0.0001013073003 0.0001853860965 0.0004807186027 0.0008292147926 0.0002577811377 0.00234480549 8.191597714e-05 6.917369696e-05 0.000315317469 7.483799207e-05 0.0002648570844 0.0008059495438 3.097959199e-06 0.0001122585311 9.553555055e-05 6.113121587e-06 3.941394741e-06 2.121537417e-05 1.652304358e-05 1.045375054e-05 5.000640057e-05 7.603843764e-05 2.090451494e-05 2.460648516e-05 6.703422307e-06 1.727100423e-05 5.339523504e-05 2.414024072e-06 1.434600668e-05 2.681032686e-05 1.099789816e-06 1.799098061e-05 2.216557308e-05 3.485957949e-06 9.230992582e-06 2.875704919e-05 0.004241426798 3.659372847e-05 0.05129381317 0.06640175477 0.08377340442 0.0005027268721 1.482447139e-08 0.00302805727 0.005042608039 0.002180184694 0.0001452688826 4.313076185e-06 0.000513986661 0.0004381130388 0.0002533952419 0.0003402792188 5.91412117e-05 0.000185720211 0.0003467173888 0.0003475572212 3.123304551e-06 1.669546835e-06 0.0001938312295 0.0002883880489 0.0001791048555 1.643465829e-06 1.686402555e-07 6.913128098e-06 1.542950128e-05 1.02721076e-05 1.417088938e-08 2.152963463e-09 1.048162415e-05 2.1001271e-06 4.580648568e-06 4.552329448e-07 1.849455502e-07 2.412777466e-05 3.606718849e-05 1.453087153e-05 1.23610905e-06 1.468935516e-07 1.096850471e-05 3.547192081e-05 3.366553716e-05 3.770576346e-07 5.309994822e-08 1.010251606e-05 2.114581057e-05 1.224938593e-05 3.834533331e-07 3.942343512e-09 7.567779589e-06 1.169660586e-05 7.151693269e-06 4.076161677e-07 1.21200207e-08 7.820386957e-06 1.065344864e-05 7.169029668e-06 3.029560694e-07 2.627468319e-08 2.316602442e-06 2.358584894e-05 1.028630309e-06 -0.4945189387 0.307421443 0.1319654046 0.03941143222 0.01673841645 0.005001509027 0.002982067969 0.0008721944031 0.0006739086684 0.0001662005827 0.000162668234 2.726728507e-05 3.849627959e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 diff --git a/tests/09_DeePKS/100_NO_GO_deepks_UT/vdrpre_ref.dat b/tests/09_DeePKS/100_NO_GO_deepks_UT/vdrpre_ref.dat deleted file mode 100644 index 974bec83c4..0000000000 --- a/tests/09_DeePKS/100_NO_GO_deepks_UT/vdrpre_ref.dat +++ /dev/null @@ -1,320 +0,0 @@ -0.5369422513 0.361355308 0.08806486249 0.007772916604 8.788509417e-07 0.001604132141 0.001646040214 0.001417420272 0.0005874826666 0.000323393403 6.739768939e-05 3.730466906e-05 7.821295808e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.4111961024 0.1045932971 0.002938612415 0.0002585986251 2.803941655e-05 2.824310234e-06 1.223806671e-05 4.648947686e-05 2.426817232e-07 1.050701256e-05 6.649769568e-06 2.428960115e-06 3.897510767e-06 4.499533096e-05 7.651803104e-05 0.2324928602 0.005546926526 0.001719066082 0.1078198088 5.003549893e-08 4.376328718e-08 0.01167948385 1.760546042e-10 3.523296964e-11 7.781550349e-06 2.887072939e-12 4.241473859e-11 5.182906798e-05 4.054744646e-05 1.849758353e-05 2.207546682e-05 3.750593258e-10 4.825684639e-10 0.0001375892133 1.659328204e-08 3.036800169e-09 2.734979601e-06 1.701774627e-10 4.630856027e-10 4.567875977e-07 1.430858611e-08 6.740791277e-08 1.949299199e-05 1.394510305e-06 9.035759123e-11 1.54664256e-09 1.835300388e-10 5.242770594e-10 2.454176723e-06 1.293535445e-08 3.840644273e-08 2.882368895e-06 1.286359447e-10 2.759626626e-07 0.0530805995 2.631765605e-07 6.296496047e-07 3.069307815e-08 1.038788118e-06 0.0374986799 8.141996781e-05 1.835681971e-05 1.34710367e-11 2.505653681e-07 0.005395846684 1.550895126e-06 4.412790785e-07 1.019109413e-12 1.411094982e-10 8.873487342e-12 2.99420732e-11 5.809188105e-06 1.989469246e-14 1.904845815e-10 4.683580031e-10 1.628676596e-09 1.863940089e-05 9.524748335e-15 3.240423092e-10 4.505158859e-10 3.275146042e-09 2.354704573e-05 4.200797305e-11 8.54540284e-08 2.89900501e-09 4.032855794e-09 0.0001613157087 1.262648455e-11 1.832167935e-10 2.543252663e-05 7.304982532e-09 1.206128628e-09 4.828168325e-15 2.325443253e-11 5.436150566e-10 2.411669877e-09 3.828786289e-06 5.255616224e-14 7.745993587e-11 6.688752503e-06 7.747999493e-09 3.686521165e-08 5.285921641e-19 1.490775309e-17 6.96663527e-12 1.018033145e-15 1.0892107e-15 5.042913785e-15 2.741406386e-12 2.087712493e-11 4.289640801e-11 1.486677624e-06 2.799675143e-12 7.243512443e-11 8.009251478e-07 2.129440168e-10 1.097040318e-09 -0.3571837143 0.04594233597 4.194947207e-05 0.0006854350876 3.529990994e-05 4.187841868e-05 1.891164406e-06 3.616284222e-05 1.972396669e-05 2.046569329e-06 9.085400341e-06 6.970606024e-06 4.332908976e-06 0.0001657962212 8.734714524e-06 0.2956016773 3.06810362e-05 0.0005337537581 0.09172154651 1.349061928e-12 3.486796587e-09 0.003394208277 4.576252702e-09 7.010014182e-08 0.0001260161331 8.012188111e-08 7.60828551e-11 0.000158866469 8.5570477e-09 1.187715766e-09 1.282403762e-06 7.016214662e-13 1.98302248e-13 2.095009272e-09 1.008615989e-10 3.897257862e-08 8.772202805e-05 2.608316612e-06 1.059976368e-08 1.674220144e-11 1.634966749e-08 9.387733571e-10 3.069542895e-06 1.086301885e-07 1.663622502e-08 1.280675993e-05 3.580948329e-07 8.702079144e-08 4.846015998e-06 1.171464892e-08 5.542001185e-10 4.639881869e-06 7.020644708e-08 9.118311347e-06 0.09883067165 0.000145375122 5.352871486e-06 5.311473945e-09 1.217326028e-06 0.04684641534 6.142794534e-05 0.0006350712431 1.404101705e-11 1.114587626e-07 6.960213852e-10 5.816030314e-07 0.003680485533 1.462401967e-14 1.122481237e-10 3.512331833e-10 3.746141286e-09 1.527197824e-05 1.666449674e-12 7.716826922e-10 5.827775265e-10 1.659047094e-12 0.0001427097302 6.358267375e-10 3.451244404e-07 9.348045663e-05 1.142929468e-06 6.637462505e-08 5.900000548e-14 1.422065187e-11 1.991540917e-10 2.947930668e-10 3.131571483e-05 1.558602943e-15 2.089965836e-10 4.859056753e-07 1.048555417e-05 2.991066301e-05 1.807227297e-13 1.945247727e-09 1.636612602e-06 5.799831917e-09 5.941155621e-11 2.536038875e-14 4.730311249e-10 4.23195607e-08 4.07152204e-09 5.375373736e-06 1.919579332e-11 1.459003856e-09 5.371382538e-06 4.993759058e-08 1.081764688e-08 1.528346305e-13 2.254071279e-10 1.557409374e-06 5.197306625e-11 3.504617755e-10 3.311987476e-14 2.727137423e-10 9.673804116e-08 1.664046282e-08 1.965437509e-06 -0.3710303663 0.05838053236 4.385531457e-05 0.0006265680254 3.370249515e-05 2.052925908e-05 1.364119962e-06 5.061039481e-05 9.795733219e-06 2.000365404e-06 1.051938342e-05 5.380955428e-06 3.962190445e-06 0.0001793810263 0.0001671193316 0.2814506376 0.0003769717748 0.00177335376 0.09807257119 6.395558111e-10 1.067646664e-08 0.005110708494 6.883029775e-09 3.093808819e-08 6.69216168e-05 6.887693383e-07 3.021894362e-08 0.0001449911777 1.251592279e-06 2.211195015e-06 1.572591192e-05 2.256719707e-10 1.334042814e-09 6.766763423e-06 4.763416898e-09 3.808807411e-07 7.825843003e-05 2.434487692e-09 3.149328858e-11 5.338894602e-13 2.694610325e-08 8.183301231e-09 5.955552741e-06 2.633061748e-07 3.314985399e-07 1.051909271e-05 1.684012745e-07 2.39656096e-07 3.075802283e-06 1.776277039e-08 3.897675262e-09 4.143873513e-06 2.504939293e-07 8.439208443e-06 0.08623974959 0.0002083703217 1.564844204e-06 5.65326512e-10 3.531470211e-06 0.04530774979 0.0002867853429 0.0006992134199 1.53590895e-10 2.49986427e-07 1.906335793e-06 0.0001706340045 0.004126308543 1.604600584e-16 1.333813544e-09 4.283249095e-10 2.112792647e-09 1.215334934e-05 6.505463882e-13 2.582998249e-10 2.249473385e-08 3.261504863e-09 7.735382959e-05 1.151307721e-11 8.441490435e-12 0.0001114608642 4.658721438e-06 8.825006551e-07 7.140654479e-16 6.372822539e-11 1.1229061e-09 1.095384086e-08 7.718527254e-05 3.644039228e-13 6.516809039e-12 1.043391221e-07 6.471294111e-07 1.467201623e-05 2.512919873e-13 7.988679087e-10 2.490358871e-06 2.624213869e-07 5.172931969e-09 2.515909758e-13 1.201769375e-09 1.09560377e-07 5.331518796e-08 9.166399221e-06 2.570461134e-13 1.423848132e-09 3.014683215e-06 4.92816807e-10 2.784167227e-09 5.882233706e-14 9.960977767e-11 1.149199798e-06 1.587855423e-11 1.885854765e-09 1.788517667e-13 3.501893429e-10 2.113126863e-07 4.570871584e-07 1.117123524e-06 -0.3784191457 0.06572877955 0.0002045741552 0.0005780818668 3.281289235e-05 1.158326388e-05 5.655358153e-07 5.652919947e-05 5.545829289e-06 2.460984074e-06 1.085144809e-05 4.543362164e-06 3.870589663e-06 0.0003200242329 0.0001063043495 0.2732803108 0.0002288808186 0.003610460205 0.1001341719 1.281826822e-09 2.645342466e-09 0.006164673873 1.12163034e-09 1.780895369e-08 4.074901255e-05 1.014584589e-06 3.042829688e-08 0.0001326097329 1.85771794e-05 1.464919058e-05 1.295877362e-06 2.575118358e-10 8.935505369e-10 1.817734436e-05 5.872060746e-09 1.024088237e-06 6.551880362e-05 5.085738204e-07 1.771447645e-08 2.271314112e-10 4.28555407e-08 4.384422903e-09 8.447835176e-06 7.39139709e-07 4.133753207e-07 8.249505499e-06 7.672659773e-08 3.324878862e-08 2.737046287e-06 2.578140821e-08 1.760702062e-09 3.949883017e-06 1.455423091e-07 1.026150509e-05 0.07979532503 0.0001440770059 1.330618149e-06 3.007472109e-11 2.58533436e-06 0.04435885586 9.224346442e-05 0.0007895936338 2.501927663e-10 2.989628504e-07 0.004450884145 2.102739579e-05 0.0001216169886 2.185282026e-14 2.133284425e-09 9.674281004e-12 7.963761774e-10 1.07060519e-05 3.011663118e-15 2.868477828e-11 2.092391798e-08 1.144308871e-09 4.592749704e-05 6.089628835e-12 1.959322303e-08 5.648799032e-05 5.697888925e-05 2.649634143e-06 8.155032947e-13 9.971198676e-10 1.64920354e-10 3.995597199e-08 0.0001055708644 9.114783803e-14 1.167748111e-11 1.201795313e-08 1.525034231e-07 5.209230063e-06 1.28039654e-13 4.794171703e-10 2.990363228e-07 4.61056027e-07 1.494086918e-06 5.426509047e-13 2.011191582e-09 2.160525607e-07 3.616784018e-08 1.082993127e-05 1.646890491e-13 1.085737057e-09 1.842866387e-06 3.068237968e-12 7.44148547e-11 4.180862654e-14 8.435460749e-11 2.333420841e-10 1.79559779e-11 1.077653349e-06 2.45793431e-13 4.694470763e-10 4.660044275e-07 1.097041829e-06 5.733322185e-08 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.1247072494 0.1455533752 0.0176643581 -0.002223141877 -1.743349287e-05 -5.98932942e-05 -0.0001224078487 4.807066885e-05 -5.26958948e-07 -3.134082561e-05 4.656102286e-06 -3.95741862e-06 -5.952023084e-06 -4.025467466e-05 -0.0001417777207 -0.1660087585 0.001556473396 0.0003152416557 0.02098371504 7.482315052e-07 1.453757754e-07 0.02527943689 1.820982778e-08 2.846886685e-09 0.0006381929602 3.663077024e-11 6.362347844e-10 0.0006373981851 8.350769659e-05 3.836637368e-05 4.348816664e-05 -7.403013826e-10 -1.439737342e-09 -0.0004245880494 2.090770009e-07 3.480430682e-08 3.185920919e-05 4.392441656e-09 1.445268303e-08 1.153012312e-05 -2.47484115e-08 -1.335902735e-07 -3.339764966e-05 3.945635469e-07 -9.450206997e-12 3.987806129e-09 -1.045627729e-09 -4.578301213e-09 -1.309874308e-05 -2.855534113e-08 -9.566019727e-08 -6.197215575e-06 1.492921503e-08 -2.024215705e-08 -0.08463560633 -5.660972786e-07 5.036017862e-06 -8.075922419e-08 -1.618795799e-06 -0.03365321226 -0.0001343118245 -1.648251254e-05 -2.791313002e-10 1.547675185e-07 0.001647885608 -4.916248093e-06 5.509495572e-08 1.036849997e-10 -1.504356858e-08 -3.55862977e-10 -9.42781309e-09 -0.0003379962942 5.062333375e-12 -3.898342164e-09 -1.181441012e-08 -5.84047425e-08 -0.0004679332573 8.545542433e-14 4.274943079e-09 5.757221729e-09 5.89703913e-08 0.0003112521848 -3.065111847e-10 -2.2233065e-08 2.828995251e-09 -7.12342935e-10 8.018680583e-06 -1.267544182e-10 -7.545936956e-10 -5.9873114e-05 -1.945811741e-09 -3.853743751e-09 6.453619757e-13 -1.947355038e-10 -6.039164916e-09 -2.964820955e-08 -4.240586263e-05 -1.296286026e-12 1.736208508e-10 7.944622014e-06 9.081964716e-09 5.157407992e-08 1.284754305e-14 1.44366708e-14 8.356718098e-09 3.739352699e-12 1.639263484e-12 -8.653460028e-13 -8.662522712e-12 -7.882290691e-11 6.763835134e-11 -8.040947405e-06 1.13568735e-11 -3.24293446e-11 -1.100582263e-06 -2.978060858e-10 9.457355827e-11 --0.0422056279 -0.03067563485 0.0004625027748 0.0001653521882 0.0001270648232 -6.65760254e-05 -2.27435634e-06 3.312094668e-05 -6.432828701e-06 1.183012251e-06 6.053661424e-06 7.382895154e-07 1.383972041e-06 0.005733305446 6.950089567e-05 0.03412064181 -0.0001347843947 -0.005105817218 -0.01834406746 6.484264414e-09 3.753635488e-06 -0.005327837894 -1.500663674e-07 -6.180582638e-06 0.0005599041031 -1.885702211e-06 9.604646729e-11 8.318767896e-05 -9.912686994e-07 -1.903612958e-08 1.555327897e-05 -7.234139391e-09 -6.346581513e-10 -5.242048929e-07 -1.157895928e-09 -6.982158494e-07 3.254668235e-05 -2.081988351e-06 -6.016848578e-07 -1.142981327e-10 6.857531658e-07 1.136916094e-08 6.394681277e-06 1.330403744e-06 5.255322939e-08 6.641323361e-06 2.40064975e-06 4.318632466e-08 -6.962056183e-07 4.042527667e-07 5.149451444e-09 3.742183136e-06 -6.596027876e-07 -0.0001779969951 0.04000588468 -0.004901179346 -6.534902117e-05 -5.441644506e-07 2.258798089e-05 -0.005960921231 0.0001861707556 0.007450778675 -2.9644376e-09 3.038614005e-06 -1.759263541e-07 -0.0001068066494 -0.002972764335 5.46910013e-11 3.256540962e-08 1.995056373e-08 4.789274311e-07 0.0002192124748 -6.76772176e-10 1.446036914e-07 1.868496618e-07 7.251068438e-10 -0.0001869023972 -1.60259831e-09 -5.021276171e-07 9.488627069e-06 2.054306012e-05 5.920976816e-07 3.785601457e-11 -2.016511222e-09 -1.163854041e-08 -5.631539927e-08 7.321921556e-05 -1.957696273e-12 -8.231006161e-09 -4.570131157e-07 -1.049414586e-05 -4.540951526e-06 -1.682161828e-11 4.452004355e-08 -1.130929727e-06 4.910499358e-07 2.599745336e-09 7.269905087e-12 -1.342720099e-08 8.384194717e-07 2.541666174e-08 9.263375931e-06 -5.247960728e-10 -2.064631827e-08 2.074272729e-06 -6.812775623e-07 -5.249589831e-08 1.363694164e-11 -8.95162374e-09 1.356613406e-06 -2.613604938e-08 -1.142627587e-08 5.079984294e-12 -8.564504527e-09 1.050363832e-06 3.551326184e-08 1.579153616e-06 --0.04557100178 -0.03799167002 -0.0005813920887 0.0004125337955 0.0001158682819 -6.104256058e-05 -5.672778944e-06 3.35755256e-05 -7.326687299e-06 2.717643314e-06 5.63335013e-06 5.363091382e-08 1.956950862e-06 0.0059244481 0.001188984284 0.04060581207 -0.0009638723434 -0.01002743967 -0.01145286482 7.90794239e-08 8.210164402e-06 -0.007056140328 -1.808789024e-07 -2.833270473e-06 0.0005172650958 -6.244891302e-06 -5.431568497e-08 -1.942934563e-05 -1.180763966e-05 5.557670237e-06 5.619088786e-05 9.900522522e-08 9.863775116e-08 3.890918819e-05 -8.261350221e-09 -2.109074077e-06 6.333817448e-06 5.685014919e-09 3.476073212e-08 2.765399712e-10 8.095808561e-07 6.68163035e-08 1.17193427e-05 1.984662346e-06 4.135629192e-07 2.109637083e-06 1.677908674e-06 2.665265084e-07 1.082501343e-07 4.808417792e-07 2.734931771e-08 4.152129948e-06 -1.248014659e-05 -0.0001567122721 0.04219645738 -0.005593521745 -7.606926777e-05 -3.113677537e-07 3.95790334e-05 -0.003867480457 0.0006431152085 0.008011661206 1.747790486e-08 3.43776626e-06 -1.965886611e-05 -0.002115806785 -0.0008356915499 1.14474157e-10 5.002875942e-07 2.934987302e-08 7.542146518e-07 0.0002140990151 -1.603036537e-12 3.340150123e-08 5.889344691e-07 2.184092536e-08 -0.0002176668632 -3.071207798e-10 -1.901934178e-09 -7.261847071e-05 3.985988201e-05 3.853886916e-06 -1.285768313e-12 -7.428884159e-10 -1.205378408e-10 -2.404175316e-08 0.0001132704679 -5.874830966e-12 1.92077942e-09 -3.678203047e-07 -3.431205973e-06 -1.607776686e-05 1.027137757e-10 2.640792558e-08 -7.185288293e-06 2.658691402e-06 4.163493181e-08 -6.920847852e-11 -1.6862838e-08 1.064287811e-06 1.579489683e-07 1.125029865e-05 1.106375056e-10 -2.070061478e-08 -1.75201523e-07 -6.790761418e-08 -5.69082365e-08 -5.131370235e-11 -5.542972475e-09 1.872125795e-06 1.324670081e-08 -4.408804017e-08 -5.639894425e-11 -8.67703741e-09 1.453056893e-06 4.052678032e-07 5.200373572e-07 --0.0455184514 -0.04062316326 -0.001336055922 0.0005301890339 0.0001008759303 -4.866368628e-05 -4.919965647e-06 2.810715144e-05 -5.874477388e-06 3.861957614e-06 4.505745786e-06 -2.056866785e-08 2.200024385e-06 0.008103774324 0.0006391678735 0.04135197225 -0.0004719052857 -0.01515512382 -0.004805479586 -1.525763873e-08 4.573994304e-06 -0.007666828114 -2.457195221e-08 -1.581158599e-06 0.0004327043943 -7.910246942e-06 -5.295497473e-08 -7.737308226e-05 -1.493945738e-05 6.435678178e-05 5.189206263e-06 9.182761012e-08 6.225911643e-08 6.732613767e-05 -5.263769945e-09 -3.757220527e-06 -6.773910103e-06 -8.984689363e-07 8.259275559e-07 4.768978059e-09 9.763000747e-07 2.691155842e-08 1.436660615e-05 3.294498485e-06 9.682673732e-08 -9.753856621e-07 1.147705117e-06 8.387996213e-08 1.124662768e-06 5.73848728e-07 9.650526576e-09 3.972795791e-06 -7.187075701e-06 -0.000182658764 0.04028647605 -0.004631618971 3.934767654e-05 -4.623721011e-08 4.033101629e-05 -0.002569229815 0.0001810572101 0.008713647777 1.236457676e-08 3.342911088e-06 -0.004419367686 5.298982726e-06 0.001736820288 -1.404488608e-09 1.330874833e-06 6.560305807e-09 2.528548181e-07 0.0001992137719 -1.428212582e-11 -2.848190721e-09 1.247645416e-07 -1.666565698e-09 -0.0001927973671 -2.150106334e-10 4.772743241e-08 -0.0001401490002 6.858015054e-05 3.742580447e-06 -2.751456399e-11 1.585369222e-08 8.96340076e-10 2.562531859e-07 0.0001179489219 3.006268832e-11 2.995686191e-09 -9.393701294e-08 -1.981705857e-06 -1.167948447e-05 5.188660541e-11 2.00380133e-08 -3.905828405e-06 -5.989508084e-07 -1.455894514e-06 -6.780208855e-11 -2.010150737e-08 1.327695312e-06 6.885346282e-08 9.998050707e-06 6.715233367e-11 -1.971366221e-08 -5.066829328e-07 5.705001251e-09 -7.183516144e-09 -3.08701911e-11 -5.224590179e-09 -4.973354144e-08 2.544049993e-09 2.17173232e-06 -4.836450135e-11 -9.964492424e-09 2.060213036e-06 -4.067808541e-08 -2.365826534e-08 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.00244083346 0.002848844396 0.0003457357654 -4.351245903e-05 -3.412171541e-07 -1.172261895e-06 -2.395828425e-06 9.408634828e-07 -1.031390748e-08 -6.134185158e-07 9.113159266e-08 -7.745660201e-08 -1.16496011e-07 0.000887378457 0.004282433347 -0.008422582153 -0.02298852507 -0.0005391428887 0.02397500601 -3.16364662e-05 -6.853069144e-06 0.0005332889706 -1.891443669e-07 -9.98173452e-09 1.269057415e-05 -2.714642774e-10 -5.695305967e-09 1.248146012e-05 -5.180005491e-05 -2.303794188e-05 7.807455026e-05 -2.058450697e-08 -5.917823654e-09 -8.283792732e-06 -7.913027227e-07 -1.846949707e-08 1.43811017e-06 -1.679464545e-08 -1.367956104e-07 3.796325129e-07 7.058864632e-08 8.968268991e-07 -1.624190348e-06 1.907606242e-07 -4.425609334e-09 -1.785345508e-07 1.088151799e-08 8.821460009e-08 -3.555814276e-07 8.795888643e-08 6.350605342e-07 -8.467456728e-07 -6.961307146e-07 -2.57365483e-05 -0.001364904069 3.558426101e-05 -0.0003006910919 1.79678357e-06 3.649381663e-05 -0.003965081387 0.003056981052 0.0002081473282 1.171666402e-08 -4.087530787e-06 -0.0002571167241 0.0002686262669 2.472740206e-05 -3.65882049e-09 3.559515318e-07 2.175968027e-08 3.868842415e-07 -7.376855229e-06 -2.253060629e-10 -4.751737193e-08 7.072169659e-08 8.751514074e-07 -1.005820775e-05 -7.305231862e-12 -1.261877449e-10 -3.187911732e-08 -7.876347196e-07 6.912983322e-06 1.069832777e-08 1.437681555e-06 -1.344812828e-07 4.490822006e-08 -1.20226087e-06 5.437516977e-09 1.361545404e-08 -4.154213437e-07 -7.815715843e-07 5.942276772e-09 -2.91183907e-11 -3.462904095e-09 1.091783649e-08 1.4614323e-07 -9.842603599e-07 5.433682597e-11 -4.416719418e-09 5.689234753e-07 -1.920028607e-08 -3.886740763e-07 -6.067061903e-13 6.158308711e-13 3.227751062e-10 -1.236688995e-10 -3.544760441e-11 4.013433423e-11 -4.413370941e-10 -3.223545793e-09 -1.464828919e-08 -1.391088637e-07 -6.741428695e-10 -3.860231087e-09 6.801572978e-08 -4.840889836e-09 -8.01860098e-08 --0.1294773005 -0.0941058951 0.001418853687 0.0005072630364 0.0003898060783 -0.0002042401565 -6.977209769e-06 0.0001016075576 -1.973446046e-05 3.629213456e-06 1.857126119e-05 2.2649049e-06 4.245712546e-06 -0.001792844529 -1.904363329e-05 0.1242879785 1.768081802e-05 0.001201252171 -0.07357135223 -2.098876532e-09 -1.242229337e-06 -0.01633181958 1.175936002e-07 3.058936759e-06 0.00169506136 7.537665457e-07 1.184156261e-10 0.0002486624473 6.499429446e-07 5.16921696e-08 4.391291338e-05 1.7533015e-09 3.714772198e-11 -1.634071937e-06 5.124270403e-10 2.755863533e-07 9.742422583e-05 -8.392491683e-06 1.592678527e-07 -2.796099299e-11 -9.60458938e-08 3.567255086e-09 2.184852474e-05 -2.048834398e-07 1.775446096e-08 2.480380235e-05 -3.811053942e-07 8.31233061e-08 5.659316227e-06 -9.628881707e-08 -2.561175954e-11 1.283243734e-05 3.039757005e-07 6.891808607e-05 0.1050762486 0.001771273443 2.798145638e-05 1.776495179e-07 -7.217269677e-06 0.007621835946 -5.393189728e-05 -0.002351564351 9.107856081e-10 -1.306856131e-06 5.64623243e-08 3.316447052e-05 -0.0094705678 -1.699560964e-11 -5.137519868e-09 1.060558357e-08 2.677879209e-08 0.0006740924741 2.11411677e-10 -5.056389384e-08 -6.348871894e-08 -2.468302917e-10 -0.0005722431331 1.193394914e-09 5.34975315e-07 9.745475243e-05 -5.466357309e-06 -1.230628467e-07 -1.183288764e-11 7.702507074e-10 5.358616387e-09 2.069833073e-08 0.0002243786055 6.428741376e-13 2.413944559e-09 -4.757663664e-07 -1.007167227e-05 -3.700651655e-05 5.116276052e-12 -1.689290982e-08 -1.633527496e-06 -1.671547187e-07 -9.349336293e-10 -2.173351912e-12 7.371753051e-09 -5.391825365e-09 1.741843062e-08 3.100742579e-05 1.861116219e-10 7.934051539e-09 3.749967927e-06 2.631894889e-07 2.612217138e-08 -3.933817243e-12 3.561444933e-09 4.002161109e-06 8.666519371e-09 4.744894451e-09 -1.480023586e-12 3.974547338e-09 7.710641274e-08 6.046426221e-08 8.007908072e-06 -0.06146418715 0.05124151379 0.0007841563878 -0.0005564076588 -0.0001562781042 8.233155341e-05 7.651197758e-06 -4.528521008e-05 9.881917486e-06 -3.66543922e-06 -7.598017887e-06 -7.23350463e-08 -2.639450293e-06 -0.0001227407935 0.005449039559 -0.06968794228 -0.004199488751 0.0006719306414 0.03379928863 -1.853752336e-06 1.771727993e-06 0.009505917338 -1.457573498e-06 -4.006665721e-07 -0.0006917410924 -6.921163334e-07 -1.194994022e-06 3.658866422e-05 -5.56490794e-06 -2.598424955e-05 -3.580898336e-05 -1.928520864e-08 2.261560443e-07 -5.295246552e-05 -2.234853706e-07 -3.309695758e-07 -5.132552797e-06 -6.250436814e-08 3.378774114e-09 4.201142691e-09 -2.900188108e-08 3.714882727e-07 -1.733107303e-05 -9.272767505e-08 1.82574692e-06 -7.813028113e-06 -4.453218511e-08 1.571667549e-06 -4.29570813e-06 8.035186803e-09 1.990285914e-07 -6.492702314e-06 2.49321864e-05 -0.0001187996528 -0.04818373264 -0.0002892093747 -0.0004708414066 3.390949469e-07 2.382417037e-05 -0.01169762047 0.004820453922 0.0003431439807 -1.461255006e-07 3.284261411e-06 -0.0002009696374 -2.627446771e-05 0.004226813423 -1.651200997e-10 5.239518692e-07 1.234766731e-07 -5.129813762e-08 -0.0002910951726 -1.513957172e-09 8.114573847e-09 1.184786162e-07 2.504959311e-07 0.0002923351967 -4.861624608e-09 -2.740305863e-09 2.161425418e-05 -4.835413898e-07 1.786527447e-05 2.442801306e-12 -7.021088306e-10 9.335308239e-09 -3.361851987e-08 -0.0001527157099 -4.369386445e-10 3.959071274e-10 -8.475811383e-07 1.242534371e-06 2.641146e-05 -5.173681294e-10 1.566555659e-08 4.803908701e-06 7.535469695e-07 4.407615617e-07 2.759677555e-10 -1.298454735e-08 -1.60715226e-07 5.107128454e-07 -1.713686569e-05 -2.536346553e-10 -1.379536569e-08 5.945987305e-07 1.039981866e-08 -1.585282843e-07 1.269864427e-10 -3.794166838e-09 -2.324988428e-06 -1.739119435e-09 -1.455044114e-07 2.056395642e-10 -5.741915623e-09 -2.704598173e-07 6.026596158e-07 -3.522715641e-06 -0.06076388899 0.05422902815 0.001783539448 -0.000707764579 -0.0001346621785 6.496255341e-05 6.567803543e-06 -3.752104426e-05 7.842008698e-06 -5.155438212e-06 -6.014849545e-06 2.745770586e-08 -2.936875781e-06 0.0003484675028 0.004396767513 -0.07161837605 -0.003457168631 4.802087079e-05 0.03068509085 -2.96228856e-06 8.002274185e-07 0.01023074567 -4.352130375e-07 -4.309946886e-07 -0.0005746197884 -2.386743004e-07 -1.153574182e-06 0.0001153101068 -4.826529666e-05 -3.78949707e-05 1.326444018e-05 -1.453182125e-08 1.634126779e-07 -9.023017179e-05 -2.545609945e-07 -3.662288028e-07 1.46861255e-05 -1.077310146e-07 1.086268139e-07 8.957552842e-08 -4.47507e-11 2.606611822e-07 -2.077822792e-05 1.28962976e-07 2.058816462e-06 -5.412886591e-06 1.083555834e-08 6.430139815e-07 -3.799272509e-06 2.945065796e-08 1.313121944e-07 -6.243092058e-06 2.130454396e-05 -0.0001113111245 -0.04718830258 -0.000542209661 0.0004247297028 1.0040258e-07 1.691567438e-05 -0.01216574726 0.002771174861 0.0008797204113 -1.948484995e-07 2.540825332e-06 0.002484933386 0.0007243322843 0.000357845154 3.48148508e-09 5.57815652e-07 3.358738913e-08 -1.985609087e-08 -0.0002686322669 2.32031178e-11 -1.743486349e-09 1.411977542e-07 5.305997306e-08 0.000257017703 -3.57048332e-09 9.593916507e-08 2.666333646e-05 3.146260401e-05 3.226150128e-05 4.656572876e-10 2.65888351e-09 -1.218435057e-08 -1.340869083e-08 -0.0001577953404 -2.522054235e-10 9.849554362e-10 -3.906208819e-07 4.577426556e-07 1.829022112e-05 -3.829466353e-10 1.05055562e-08 5.92554684e-07 -1.645304293e-06 8.972883084e-06 3.884264813e-10 -1.304132891e-08 -1.81708005e-07 3.760488493e-07 -1.536574168e-05 -2.298410736e-10 -9.822403326e-09 7.422334976e-07 -3.423962401e-10 -2.725284513e-08 1.152898918e-10 -2.866864991e-09 -1.082138731e-09 1.329542869e-08 -2.838559331e-06 2.49605719e-10 -5.585419792e-09 -5.464899697e-07 -1.435393293e-06 -6.637676224e-07 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.0003519237103 0.0004107514529 4.98487977e-05 -6.27370375e-06 -4.919729628e-08 -1.690188055e-07 -3.454348043e-07 1.356553707e-07 -1.487077529e-09 -8.844377284e-08 1.313951515e-08 -1.116783067e-08 -1.679660211e-08 -0.003285942227 0.001158845683 0.001658106329 -0.001597931334 0.01305515624 -0.01139272691 -7.329155421e-06 2.959540947e-05 4.907480875e-05 -2.239399038e-08 8.476630709e-08 1.738666885e-06 1.488951646e-09 -1.041573217e-09 1.798291446e-06 6.856993955e-05 -6.868413232e-05 5.808448018e-07 -5.194614627e-09 2.332390008e-08 -1.216322411e-06 -4.615738755e-08 3.411960497e-07 -2.044437787e-07 8.313071576e-08 -2.788314476e-08 -2.265639625e-08 -4.150615433e-07 1.551272546e-07 1.652393292e-07 -2.371980124e-08 4.318708043e-08 -1.834259441e-08 -5.22437377e-08 1.842443478e-08 -3.161205289e-09 -3.719592564e-07 1.564816428e-07 1.976385424e-07 -5.348561755e-07 2.970115619e-05 -1.81180671e-05 -0.0001949457398 -5.493147503e-05 6.373053948e-06 -1.056645492e-05 0.0009210996191 0.0004414542949 -0.001453760176 1.910312806e-08 5.448807557e-07 0.0001011171605 4.636286549e-05 -0.0001434069609 -3.238601142e-08 -4.855845878e-08 -2.078451148e-07 3.991606045e-08 -7.05021388e-07 -4.082882105e-10 1.570207679e-08 -4.722581648e-07 1.31552374e-07 -9.953042421e-07 6.501875781e-11 4.502780187e-09 2.921392453e-07 -8.625921535e-08 6.681001941e-07 3.515257642e-08 -5.91710811e-07 -1.883377209e-08 1.17982894e-08 5.861647909e-07 -3.331462366e-09 2.009499062e-08 -5.190339067e-07 1.524486174e-08 3.180448062e-07 -4.569144155e-11 1.714962249e-09 -7.020481503e-08 2.303897832e-08 -7.427398579e-08 1.046375575e-10 1.755577139e-09 -1.170658615e-07 1.80404232e-07 -4.260721368e-08 -1.198628264e-13 -3.045554218e-12 -6.723298351e-11 -3.429526649e-11 1.282915711e-10 1.861500214e-11 8.745797448e-10 1.026184828e-08 -4.616598007e-09 -2.923004755e-08 -7.104866133e-10 3.033513282e-09 -3.000808238e-08 3.55319917e-08 -1.095341083e-08 -3.658718834e-05 2.659207517e-05 -4.009341164e-07 -1.433404016e-07 -1.101498745e-07 5.77133833e-08 1.971592603e-09 -2.871186557e-08 5.576486525e-09 -1.025528921e-09 -5.247794233e-09 -6.400079538e-10 -1.199736818e-09 0.0003142732047 -0.001379075409 0.00103019339 0.001256745959 -0.0005629852153 -0.0006733156808 7.777113563e-08 -3.464876341e-07 4.884049713e-06 1.744086541e-06 -7.021115944e-07 -1.521856357e-06 1.704969085e-09 6.246194793e-08 -1.346460071e-07 -9.423589505e-08 4.274620792e-07 -3.458331884e-07 -1.15769316e-09 3.946056508e-09 -2.32711964e-09 3.812454376e-08 -2.478550573e-08 -4.094681302e-08 2.445273193e-08 2.620787779e-09 -2.474699967e-08 4.123033355e-08 -1.637870263e-07 1.164089545e-07 1.175433076e-07 -5.218718732e-07 3.973724824e-07 1.138172018e-07 -1.216758115e-06 1.101425928e-06 2.273695231e-08 -9.019973259e-08 6.386385656e-08 1.790115725e-05 -4.216499645e-06 -0.0006702254158 -0.0003724004867 0.0009987212233 -1.327792831e-06 -6.486089857e-06 0.001802712887 -0.0024475428 0.0006511717728 -5.557135737e-08 -7.480165096e-07 3.857283238e-06 -5.375846466e-06 4.98928863e-06 4.178062759e-10 -6.851647059e-09 -1.333562913e-07 5.280580599e-08 -1.035071918e-07 -6.375866033e-09 -1.331348636e-08 1.478479618e-08 -1.099500445e-08 1.77634022e-07 -4.563362239e-08 2.938191321e-07 2.303454814e-06 2.551399582e-06 -5.12915036e-06 1.39102806e-10 7.077951748e-10 -4.927665883e-08 1.541375263e-08 -3.039559649e-08 2.381906629e-11 -6.742088741e-10 1.722448521e-06 -1.601292888e-06 -1.070683147e-07 -5.165495241e-10 -3.475307939e-09 2.918115891e-08 2.774951922e-08 -5.242495466e-08 1.26970801e-10 1.899427823e-09 6.29560316e-08 -2.47318005e-07 1.73568137e-07 -2.738026681e-09 6.096599945e-09 -2.165039877e-07 -1.279329141e-07 3.399346302e-07 2.663411761e-10 8.62080838e-10 -6.885055371e-08 -4.766854707e-09 7.135327638e-08 1.142364139e-10 8.336149631e-10 5.532496572e-08 -4.110975093e-07 3.52521852e-07 -0.1101195868 0.09180458716 0.001404899039 -0.0009968631219 -0.0002799887392 0.0001475056787 1.370792936e-05 -8.113323961e-05 1.77044995e-05 -6.567021728e-06 -1.3612652e-05 -1.295958798e-07 -4.728854137e-06 0.002411393923 -0.002650789117 -0.1150712909 0.00224758409 -0.003101767257 0.05508918751 1.070573452e-06 2.461477704e-06 0.01702717649 5.492945013e-07 -1.800225216e-06 -0.001241405573 -1.762254903e-06 6.636374386e-07 6.327011848e-05 -1.345191531e-05 -3.817075085e-06 -0.0001034102374 4.70636819e-08 -1.130299211e-07 -9.44333408e-05 1.204063727e-07 -7.612384022e-07 -9.548043346e-06 -1.067770732e-07 1.063616005e-08 -2.262045889e-09 1.482155955e-07 -2.413487428e-07 -3.034371517e-05 4.904044383e-07 -1.329685191e-06 -1.005369767e-05 3.637073972e-07 -1.272893104e-06 -4.051004987e-06 1.232972345e-07 -1.153960799e-07 -1.126928686e-05 -1.945823257e-05 -1.125944886e-05 -0.08558706318 -0.002467319398 0.0002289663967 -3.183338324e-07 1.762248368e-06 -0.01199574862 -0.002531562512 0.002862766314 8.917400774e-08 2.078444928e-07 0.0001087526522 -0.000438870719 0.007501094458 1.395260688e-10 -1.700833126e-07 -8.396358254e-08 2.066311509e-07 -0.0005204127537 8.509022547e-10 1.188911817e-08 4.036460619e-07 -9.800217306e-08 0.0005241038975 2.596652829e-09 7.4991683e-10 5.65547082e-05 2.088931808e-05 -7.595560216e-06 -1.899315698e-12 -2.505146823e-10 -1.116274453e-08 -4.876095595e-08 -0.0002735909166 2.431323704e-10 6.039904053e-10 8.026245869e-07 8.744591858e-07 4.63485178e-05 3.327348277e-10 6.810563982e-09 8.766016607e-06 2.199249929e-06 -1.988301904e-07 -1.838778474e-10 -5.479252609e-09 6.091267368e-09 -4.747118061e-07 -2.962393328e-05 1.874514771e-10 -3.248521297e-10 7.425926394e-07 -3.371958815e-08 6.599274314e-08 -9.244989987e-11 -7.452379433e-10 -4.493553726e-06 6.361889271e-09 5.219456318e-08 -1.389694786e-10 -2.050844584e-09 -2.5236516e-07 -2.341800775e-06 -3.12970938e-06 --0.1088999622 -0.0971883007 -0.003196427709 0.001268443103 0.0002413391636 -0.000116424734 -1.177070081e-05 6.724454884e-05 -1.405430865e-05 9.23948476e-06 1.077970648e-05 -4.920921257e-08 5.263416591e-06 -0.00298457068 0.002255314302 0.1205781115 -0.001891690997 0.003838869723 -0.05083063928 -1.652181631e-06 -1.477036456e-06 -0.01832835658 -1.904011691e-07 1.089943581e-06 0.001030476234 8.700882526e-07 -6.906076394e-07 -0.0002043410422 8.37852963e-05 3.433745477e-05 1.251985516e-05 -4.309241074e-08 7.695017693e-08 0.0001614082313 -1.431448535e-07 7.896580461e-07 -2.585415792e-05 8.269473123e-08 -2.927197991e-07 4.788396189e-08 -1.324373102e-07 1.623973785e-07 3.674133868e-05 -6.298380038e-07 1.485949005e-06 4.923868734e-06 -2.479148131e-07 4.21559594e-07 5.463526376e-06 -1.184265006e-07 7.640651179e-08 1.094266232e-05 1.512135511e-05 3.044020096e-05 0.08281281295 0.001860872279 0.0002226443393 7.536399081e-08 -6.1258692e-06 0.01647532153 0.001516721268 -0.002756321762 -1.144073095e-07 -5.982287325e-07 -0.005976870979 0.0003584333077 -0.0007779667487 2.531106166e-09 -1.028206623e-07 1.664388498e-08 -6.367851564e-08 0.0004805547441 1.887165497e-11 -2.099660887e-10 -2.853002418e-07 1.324346709e-08 -0.000460695375 -1.915019054e-09 -7.071546184e-09 -4.375015459e-05 -0.0001293363016 1.093913419e-05 2.745731462e-10 -1.174675074e-09 -6.516921036e-09 4.442434489e-08 0.0002828012656 -1.54120347e-10 -8.088110237e-10 -2.880380937e-07 -3.038034229e-07 -3.230821253e-05 -2.365633532e-10 -7.004617421e-09 -8.38006725e-07 -4.986621979e-06 -8.380594163e-06 2.470538029e-10 8.462925821e-09 1.31898343e-07 3.130019347e-07 2.675898106e-05 -1.564826825e-10 1.654444016e-09 -1.249386076e-06 -2.578771923e-09 -1.227964449e-08 7.752480774e-11 1.173746361e-09 2.181497568e-08 6.480701518e-09 5.040711531e-06 1.605609936e-10 3.093331101e-09 8.638164995e-07 3.994720962e-06 -1.107400947e-07 -0.4511178441 0.1788933402 0.01952376147 -0.002657341027 2.042784641e-05 0.0006383944691 -0.0001780440742 1.94688863e-05 -0.000151227711 3.750863895e-05 -1.696460019e-05 1.822358986e-05 -1.750526312e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.4509370911 0.1793159845 0.01969251574 -0.003192450812 0.000685080602 0.000118852064 0.0001910359828 -0.0002013649958 -1.278848376e-05 -4.178841477e-05 3.288930331e-05 -8.138252139e-06 1.224906789e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.2646806578 -0.008228751522 0.0003612755932 0.0001645425919 0.0001527044125 7.619439711e-05 -5.464474581e-06 3.692963179e-05 3.41738209e-05 8.702787009e-06 1.41406476e-05 1.202765477e-05 9.217997176e-06 0.003828502233 4.912893079e-05 0.2530956384 -1.312671068e-05 -0.0006534186457 0.01701942731 -3.091546726e-09 -1.734376422e-06 -0.002826558684 -9.882558861e-08 -4.146678611e-06 0.0003075915073 4.866623034e-06 -4.070850858e-10 0.0003398587215 -5.03964287e-07 -2.105158864e-08 -8.529274119e-06 -2.104565757e-09 -1.834097339e-10 -1.839210215e-07 -1.445703291e-09 -9.72844511e-07 7.988716273e-05 1.5166932e-05 -5.052111265e-07 -6.638658246e-11 5.542559788e-07 1.009604734e-08 1.06903987e-05 1.145907159e-06 5.526898007e-08 1.682990767e-05 2.666839943e-06 2.08357886e-07 9.253640719e-06 3.735499327e-07 5.205520212e-09 1.098451413e-05 5.630982825e-07 0.0001678672272 0.08725105726 -0.004108613366 -5.126504108e-05 5.459117983e-07 -2.444205642e-05 0.01460295751 8.522931057e-05 0.002867082103 3.036487947e-09 -2.456779492e-06 2.201827737e-08 1.459023866e-05 -0.000945069991 -5.581998622e-11 -3.806119639e-08 -7.210102339e-08 -2.092234499e-06 0.0001039554804 6.894832507e-10 -1.309390352e-07 -3.707507849e-07 -1.402886422e-09 0.000143863056 8.574031475e-10 7.70512932e-08 -5.823474704e-06 6.552805125e-07 1.656933841e-08 -3.856417195e-11 1.920001326e-09 -1.420684792e-08 -6.681973102e-08 1.699358405e-05 1.960483568e-12 7.386281374e-09 -4.447925864e-07 -1.194555994e-05 5.033946195e-05 1.728359893e-11 -4.384536598e-08 -6.225370154e-06 4.392982695e-07 2.149695919e-09 -7.514171831e-12 1.082502974e-08 8.619422615e-07 2.381087435e-08 5.999850447e-06 5.099150209e-10 1.91712122e-08 7.68324685e-06 -7.97644869e-07 -5.419952665e-08 -1.425429419e-11 8.501621174e-09 3.82114171e-06 -2.864421187e-08 -1.189305593e-08 -5.29325174e-12 7.647192354e-09 1.276398193e-06 4.715951527e-08 2.568227218e-06 -0.276844638 -0.005513964942 -0.0003945291832 0.0002765704734 0.0001531214236 4.311452182e-05 -3.653367361e-06 4.746876001e-05 2.427245359e-05 7.779922528e-06 1.398831897e-05 1.053771854e-05 8.719779195e-06 0.004022145278 0.0009735014422 0.2442725961 -9.8051101e-05 -0.001446826329 0.02439578976 -1.693729859e-08 -2.935195838e-06 -0.003216680075 -2.66328928e-07 -3.361877036e-06 0.0002651597734 1.441526097e-05 2.118830607e-07 0.0002867213909 -4.994895133e-06 -2.744387404e-06 -1.501665011e-05 3.804105995e-08 3.901770137e-08 1.109299223e-05 -1.553123238e-08 -3.081974556e-06 8.253746995e-05 -4.386143437e-07 2.391263803e-08 2.026023853e-10 6.363849167e-07 6.2023319e-08 1.307017007e-05 1.905171795e-06 7.371797118e-07 1.350934073e-05 1.746961216e-06 7.87977267e-07 7.067163917e-06 4.5282844e-07 3.310745283e-08 9.584910746e-06 1.190314877e-05 0.0001508395109 0.07834615551 -0.004829718594 -7.49780197e-05 3.099716316e-07 -4.491190422e-05 0.01510455551 0.0003966475897 0.003458153506 -1.496994772e-08 -2.328403581e-06 1.474360956e-06 0.0001393482842 -0.0007710050067 -1.133730783e-10 -5.814490381e-07 -8.759759402e-08 -1.536887339e-06 9.708704796e-05 3.251675479e-11 -2.966943913e-08 -1.848301408e-06 -1.015318894e-07 8.065831322e-05 4.008706654e-10 -8.856092309e-10 1.132719957e-05 -2.003484021e-06 -1.910967211e-07 1.260197817e-12 5.266500694e-10 -1.927560428e-08 -5.29206656e-07 3.219514005e-05 1.468816165e-11 -1.841119757e-09 -4.760657978e-07 -5.477338346e-06 2.938459478e-05 -9.431003277e-11 -2.323320733e-08 -8.079225856e-06 1.929748188e-06 3.689632597e-08 6.454242276e-11 1.324615695e-08 1.175445539e-06 1.613636873e-07 5.894063831e-06 -1.079244991e-10 1.980488185e-08 5.094908706e-06 -8.311539685e-08 -7.014045705e-08 4.963802038e-11 5.325379363e-09 3.157760742e-06 1.552399752e-08 -5.380883711e-08 5.30320516e-11 7.797812172e-09 1.795297678e-06 5.926637819e-07 7.407735233e-07 -0.2826638831 -0.004055763145 -0.0008705871959 0.0003182057998 0.0001515768232 2.88985815e-05 -2.172930135e-06 5.21239929e-05 1.816287156e-05 8.219063634e-06 1.381087709e-05 9.684357495e-06 8.544054332e-06 0.005562963585 0.0005625057235 0.2389429097 -4.655434165e-05 -0.002086286406 0.02795663834 2.278831075e-08 -1.413560651e-06 -0.003381129802 -6.756707799e-08 -2.783213095e-06 0.0002200288443 1.723154519e-05 1.840574661e-07 0.0002567141391 -2.055258895e-05 -3.154505266e-06 -3.051111643e-07 4.396218325e-08 3.109270974e-08 1.934207472e-05 -9.247275374e-09 -4.711586116e-06 7.947489779e-05 -6.245970365e-06 4.677410311e-07 2.845134494e-09 7.754769619e-07 2.713224402e-08 1.469530928e-05 3.703356545e-06 6.825088136e-07 1.044783875e-05 1.112974978e-06 1.57785344e-07 7.324303327e-06 5.46334505e-07 1.350617821e-08 8.942253283e-06 6.68103904e-06 0.0001741522696 0.07308761594 -0.004072409457 4.45569966e-05 4.491603112e-08 -4.430518609e-05 0.0153498281 0.0001339470334 0.003921785945 -8.649458789e-09 -1.920979612e-06 -0.0003552066156 -3.985818327e-06 -0.0001175627778 1.356003046e-09 -1.465087516e-06 -6.019783209e-09 -6.163192334e-07 9.227922099e-05 1.405312242e-11 3.469161591e-09 -1.568102704e-06 -3.089186139e-08 5.31818646e-05 2.899778604e-10 7.3777918e-08 1.610594537e-05 -2.307825739e-06 -2.245134245e-07 1.68324429e-11 -1.884427572e-08 -1.996488798e-09 -1.113054288e-06 4.127183329e-05 -2.524280819e-11 -2.842852123e-09 -1.185002485e-07 -2.860189436e-06 1.669444588e-05 -4.467910097e-11 -1.658528989e-08 -3.100058131e-06 -5.977832804e-07 -1.290955838e-06 5.995375769e-11 1.546325152e-08 1.588920772e-06 7.903453614e-08 5.590054173e-06 -6.365099048e-11 1.889555065e-08 3.840203703e-06 6.918715574e-09 -9.330924321e-09 2.890282071e-11 4.949929332e-09 -6.091221484e-08 3.512424965e-09 3.012326462e-06 4.354467947e-11 8.83926238e-09 2.647578117e-06 1.962917987e-07 -3.395720992e-08 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.1247072494 0.1455533752 0.0176643581 -0.002223141877 -1.743349287e-05 -5.98932942e-05 -0.0001224078487 4.807066885e-05 -5.26958948e-07 -3.134082561e-05 4.656102286e-06 -3.95741862e-06 -5.952023084e-06 -4.025467466e-05 -0.0001417777207 -0.1660087585 0.001556473396 0.0003152416557 0.02098371504 7.482315052e-07 1.453757754e-07 0.02527943689 1.820982778e-08 2.846886685e-09 0.0006381929602 3.663077024e-11 6.362347844e-10 0.0006373981851 8.350769659e-05 3.836637368e-05 4.348816664e-05 -7.403013826e-10 -1.439737342e-09 -0.0004245880494 2.090770009e-07 3.480430682e-08 3.185920919e-05 4.392441656e-09 1.445268303e-08 1.153012312e-05 -2.47484115e-08 -1.335902735e-07 -3.339764966e-05 3.945635469e-07 -9.450206997e-12 3.987806129e-09 -1.045627729e-09 -4.578301213e-09 -1.309874308e-05 -2.855534113e-08 -9.566019727e-08 -6.197215575e-06 1.492921503e-08 -2.024215705e-08 -0.08463560633 -5.660972786e-07 5.036017862e-06 -8.075922419e-08 -1.618795799e-06 -0.03365321226 -0.0001343118245 -1.648251254e-05 -2.791313002e-10 1.547675185e-07 0.001647885608 -4.916248093e-06 5.509495572e-08 1.036849997e-10 -1.504356858e-08 -3.55862977e-10 -9.42781309e-09 -0.0003379962942 5.062333375e-12 -3.898342164e-09 -1.181441012e-08 -5.84047425e-08 -0.0004679332573 8.545542433e-14 4.274943079e-09 5.757221729e-09 5.89703913e-08 0.0003112521848 -3.065111847e-10 -2.2233065e-08 2.828995251e-09 -7.12342935e-10 8.018680583e-06 -1.267544182e-10 -7.545936956e-10 -5.9873114e-05 -1.945811741e-09 -3.853743751e-09 6.453619757e-13 -1.947355038e-10 -6.039164916e-09 -2.964820955e-08 -4.240586263e-05 -1.296286026e-12 1.736208508e-10 7.944622014e-06 9.081964716e-09 5.157407992e-08 1.284754305e-14 1.44366708e-14 8.356718098e-09 3.739352699e-12 1.639263484e-12 -8.653460028e-13 -8.662522712e-12 -7.882290691e-11 6.763835134e-11 -8.040947405e-06 1.13568735e-11 -3.24293446e-11 -1.100582263e-06 -2.978060858e-10 9.457355827e-11 --0.0422056279 -0.03067563485 0.0004625027748 0.0001653521882 0.0001270648232 -6.65760254e-05 -2.27435634e-06 3.312094668e-05 -6.432828701e-06 1.183012251e-06 6.053661424e-06 7.382895154e-07 1.383972041e-06 0.005733305446 6.950089567e-05 0.03412064181 -0.0001347843947 -0.005105817218 -0.01834406746 6.484264414e-09 3.753635488e-06 -0.005327837894 -1.500663674e-07 -6.180582638e-06 0.0005599041031 -1.885702211e-06 9.604646729e-11 8.318767896e-05 -9.912686994e-07 -1.903612958e-08 1.555327897e-05 -7.234139391e-09 -6.346581513e-10 -5.242048929e-07 -1.157895928e-09 -6.982158494e-07 3.254668235e-05 -2.081988351e-06 -6.016848578e-07 -1.142981327e-10 6.857531658e-07 1.136916094e-08 6.394681277e-06 1.330403744e-06 5.255322939e-08 6.641323361e-06 2.40064975e-06 4.318632466e-08 -6.962056183e-07 4.042527667e-07 5.149451444e-09 3.742183136e-06 -6.596027876e-07 -0.0001779969951 0.04000588468 -0.004901179346 -6.534902117e-05 -5.441644506e-07 2.258798089e-05 -0.005960921231 0.0001861707556 0.007450778675 -2.9644376e-09 3.038614005e-06 -1.759263541e-07 -0.0001068066494 -0.002972764335 5.46910013e-11 3.256540962e-08 1.995056373e-08 4.789274311e-07 0.0002192124748 -6.76772176e-10 1.446036914e-07 1.868496618e-07 7.251068438e-10 -0.0001869023972 -1.60259831e-09 -5.021276171e-07 9.488627069e-06 2.054306012e-05 5.920976816e-07 3.785601457e-11 -2.016511222e-09 -1.163854041e-08 -5.631539927e-08 7.321921556e-05 -1.957696273e-12 -8.231006161e-09 -4.570131157e-07 -1.049414586e-05 -4.540951526e-06 -1.682161828e-11 4.452004355e-08 -1.130929727e-06 4.910499358e-07 2.599745336e-09 7.269905087e-12 -1.342720099e-08 8.384194717e-07 2.541666174e-08 9.263375931e-06 -5.247960728e-10 -2.064631827e-08 2.074272729e-06 -6.812775623e-07 -5.249589831e-08 1.363694164e-11 -8.95162374e-09 1.356613406e-06 -2.613604938e-08 -1.142627587e-08 5.079984294e-12 -8.564504527e-09 1.050363832e-06 3.551326184e-08 1.579153616e-06 --0.04557100178 -0.03799167002 -0.0005813920887 0.0004125337955 0.0001158682819 -6.104256058e-05 -5.672778944e-06 3.35755256e-05 -7.326687299e-06 2.717643314e-06 5.63335013e-06 5.363091382e-08 1.956950862e-06 0.0059244481 0.001188984284 0.04060581207 -0.0009638723434 -0.01002743967 -0.01145286482 7.90794239e-08 8.210164402e-06 -0.007056140328 -1.808789024e-07 -2.833270473e-06 0.0005172650958 -6.244891302e-06 -5.431568497e-08 -1.942934563e-05 -1.180763966e-05 5.557670237e-06 5.619088786e-05 9.900522522e-08 9.863775116e-08 3.890918819e-05 -8.261350221e-09 -2.109074077e-06 6.333817448e-06 5.685014919e-09 3.476073212e-08 2.765399712e-10 8.095808561e-07 6.68163035e-08 1.17193427e-05 1.984662346e-06 4.135629192e-07 2.109637083e-06 1.677908674e-06 2.665265084e-07 1.082501343e-07 4.808417792e-07 2.734931771e-08 4.152129948e-06 -1.248014659e-05 -0.0001567122721 0.04219645738 -0.005593521745 -7.606926777e-05 -3.113677537e-07 3.95790334e-05 -0.003867480457 0.0006431152085 0.008011661206 1.747790486e-08 3.43776626e-06 -1.965886611e-05 -0.002115806785 -0.0008356915499 1.14474157e-10 5.002875942e-07 2.934987302e-08 7.542146518e-07 0.0002140990151 -1.603036537e-12 3.340150123e-08 5.889344691e-07 2.184092536e-08 -0.0002176668632 -3.071207798e-10 -1.901934178e-09 -7.261847071e-05 3.985988201e-05 3.853886916e-06 -1.285768314e-12 -7.428884159e-10 -1.205378408e-10 -2.404175316e-08 0.0001132704679 -5.874830966e-12 1.92077942e-09 -3.678203047e-07 -3.431205973e-06 -1.607776686e-05 1.027137757e-10 2.640792558e-08 -7.185288293e-06 2.658691402e-06 4.163493181e-08 -6.920847852e-11 -1.6862838e-08 1.064287811e-06 1.579489683e-07 1.125029865e-05 1.106375056e-10 -2.070061478e-08 -1.75201523e-07 -6.790761418e-08 -5.69082365e-08 -5.131370235e-11 -5.542972475e-09 1.872125795e-06 1.324670081e-08 -4.408804017e-08 -5.639894425e-11 -8.67703741e-09 1.453056893e-06 4.052678032e-07 5.200373572e-07 --0.0455184514 -0.04062316326 -0.001336055922 0.0005301890339 0.0001008759303 -4.866368628e-05 -4.919965647e-06 2.810715144e-05 -5.874477388e-06 3.861957614e-06 4.505745786e-06 -2.056866785e-08 2.200024385e-06 0.008103774324 0.0006391678735 0.04135197225 -0.0004719052857 -0.01515512382 -0.004805479586 -1.525763873e-08 4.573994304e-06 -0.007666828114 -2.457195221e-08 -1.581158599e-06 0.0004327043943 -7.910246942e-06 -5.295497473e-08 -7.737308226e-05 -1.493945738e-05 6.435678178e-05 5.189206263e-06 9.182761012e-08 6.225911643e-08 6.732613767e-05 -5.263769945e-09 -3.757220527e-06 -6.773910103e-06 -8.984689363e-07 8.259275559e-07 4.768978059e-09 9.763000747e-07 2.691155842e-08 1.436660615e-05 3.294498485e-06 9.682673732e-08 -9.753856621e-07 1.147705117e-06 8.387996213e-08 1.124662768e-06 5.73848728e-07 9.650526576e-09 3.972795791e-06 -7.187075701e-06 -0.000182658764 0.04028647605 -0.004631618971 3.934767654e-05 -4.623721011e-08 4.033101629e-05 -0.002569229815 0.0001810572101 0.008713647777 1.236457676e-08 3.342911088e-06 -0.004419367686 5.298982726e-06 0.001736820288 -1.404488608e-09 1.330874833e-06 6.560305807e-09 2.528548181e-07 0.0001992137719 -1.428212582e-11 -2.848190721e-09 1.247645416e-07 -1.666565698e-09 -0.0001927973671 -2.150106334e-10 4.772743241e-08 -0.0001401490002 6.858015054e-05 3.742580447e-06 -2.751456399e-11 1.585369222e-08 8.96340076e-10 2.562531859e-07 0.0001179489219 3.006268832e-11 2.995686191e-09 -9.393701294e-08 -1.981705857e-06 -1.167948447e-05 5.188660541e-11 2.00380133e-08 -3.905828405e-06 -5.989508084e-07 -1.455894514e-06 -6.780208855e-11 -2.010150737e-08 1.327695312e-06 6.885346282e-08 9.998050707e-06 6.715233367e-11 -1.971366221e-08 -5.066829328e-07 5.705001251e-09 -7.183516144e-09 -3.08701911e-11 -5.224590179e-09 -4.973354144e-08 2.544049993e-09 2.17173232e-06 -4.836450135e-11 -9.964492424e-09 2.060213036e-06 -4.067808541e-08 -2.365826534e-08 -0 0 0 0 0 0 0 0 0 0 0 0 0 0.3492897371 0.001574796604 0.002196642949 0.004076610485 0.004687356475 0.2929757854 0.001452681429 0.001426528712 0.1839481822 0.0003333103144 0.0003490792674 0.07870364704 9.63365572e-06 2.716714611e-06 0.04231497208 0.01578361465 0.0006759569008 0.0004172973785 0.01002604794 9.236942948e-05 7.46002587e-05 0.003828512444 3.042301241e-06 1.493636054e-06 0.00199369905 0.0006799477226 2.197743986e-05 5.440281865e-06 6.104157639e-06 0.0008002296293 5.766590832e-07 1.123504711e-07 0.0006537376407 3.316947104e-07 3.784044228e-06 0.0001159044067 0.0001352128137 3.017349483e-06 2.112952749e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.03782112221 0.202553946 0.1061826138 0.01911208849 1.083926526e-05 0.001270117797 0.001224350363 4.970564007e-05 1.144238343e-06 9.34849316e-05 3.260156352e-06 6.447681885e-06 9.089539685e-06 3.601348846e-05 0.0002626952344 0.1185365773 0.0004367480659 5.780888969e-05 0.00408381634 1.118906371e-05 4.829188443e-07 0.05471559684 1.883494211e-06 2.300335135e-07 0.05234050236 4.647659956e-10 9.543727355e-09 0.007838775851 0.0001719845761 7.957680675e-05 8.567069737e-05 1.461225197e-09 4.295439443e-09 0.001310240879 2.634390965e-06 3.988868895e-07 0.0003711213092 1.133730836e-07 4.510614141e-07 0.0002910406059 4.280533847e-08 2.647517247e-07 5.722071827e-05 1.116380367e-07 9.883664568e-13 1.028201223e-08 5.957266474e-09 3.998046763e-08 6.991227183e-05 6.303712126e-08 2.382640175e-07 1.332427676e-05 1.732653046e-06 1.484783914e-09 0.1349492268 1.217684919e-06 4.02787133e-05 2.124926102e-07 2.522650954e-06 0.03020209507 0.0002215631704 1.479957987e-05 5.783837164e-09 9.559575199e-08 0.0005032624419 1.558422288e-05 6.878762883e-09 1.054899408e-08 1.603782585e-06 1.427155452e-08 2.968520552e-06 0.019665656 1.288143521e-09 7.978111144e-08 2.980205006e-07 2.094408402e-06 0.01174724094 7.667005248e-13 5.639738334e-08 7.357254886e-08 1.061786865e-06 0.004114228325 2.236458928e-09 5.784504122e-09 2.760676199e-09 1.258245975e-10 3.985925414e-07 1.272458892e-09 3.107857281e-09 0.000140952955 5.183014898e-10 1.231323141e-08 8.626295765e-11 1.630739274e-09 6.709069671e-08 3.644845166e-07 0.0004696676832 3.197260586e-11 3.891585952e-10 9.436291584e-06 1.064559738e-08 7.215164651e-08 3.122622194e-10 1.398047462e-11 1.002417016e-05 1.373507207e-08 2.467093622e-09 1.484902849e-10 2.737255597e-11 2.976008753e-10 1.066510411e-10 4.349082419e-05 4.606912197e-11 1.451867998e-11 1.512352711e-06 4.164872348e-10 8.152989253e-12 -0.004987111548 0.02048207941 0.005099201637 3.988903784e-05 0.0004573799004 0.0001058389332 2.735191475e-06 3.033492507e-05 2.098020431e-06 6.838360988e-07 4.033594036e-06 7.819569871e-08 4.420537385e-07 0.1982601962 0.0005530088575 0.003938469525 0.0005921192794 0.04884156611 0.003668765123 3.116660851e-05 0.004040895139 0.008363027342 4.921038257e-06 0.0005449290223 0.002487718017 4.43807956e-05 1.212483925e-10 4.355978938e-05 0.000114830917 3.051018095e-07 0.0001886336377 7.458832896e-05 2.03119719e-06 0.0001311644647 1.329270004e-08 1.250893294e-05 1.207549068e-05 1.661867073e-06 3.415403202e-05 7.803073682e-10 2.876250571e-05 1.376879941e-07 1.332183652e-05 1.629357499e-05 1.660137391e-07 3.444054252e-06 1.609383518e-05 2.143233367e-08 1.000207723e-07 1.395008083e-05 4.784706695e-08 3.018166199e-06 6.197092369e-06 0.003474648874 0.01619406994 0.1652384441 0.0007977950861 5.575005212e-05 0.0004191291972 0.0007584909466 0.000564230987 0.08741397671 6.258727734e-07 8.283938257e-05 4.446714244e-05 0.01961416935 0.002401130968 2.045337531e-07 9.447871988e-06 1.133221495e-06 6.122873291e-05 0.00314655432 2.748481309e-07 2.709692441e-05 5.990758825e-05 3.169168233e-07 0.0002447801283 4.039341527e-09 7.305542997e-07 9.631322622e-07 0.0003692417869 5.281832692e-06 2.428945261e-08 2.859445225e-07 6.801548572e-07 1.075813699e-05 0.000171193714 2.45898077e-09 3.241654062e-07 4.298385438e-07 1.050274459e-05 6.893943059e-07 1.56575126e-09 1.018910985e-06 7.814934613e-07 4.157534958e-05 1.137602891e-07 2.084018526e-09 3.811371324e-07 1.661045623e-05 1.586646683e-07 1.596356604e-05 1.434746215e-08 2.921654088e-07 8.010241912e-07 9.29438348e-06 2.547521996e-07 1.216780363e-09 3.554970437e-07 1.181705956e-06 1.314321295e-05 3.725364341e-07 7.791768722e-10 2.689660491e-07 1.140465702e-05 7.579066641e-08 1.268789331e-06 -0.005597159673 0.02472342975 0.007707543867 0.0002716131777 0.0003983520716 0.0001815065116 2.359060922e-05 2.227439489e-05 5.479972309e-06 3.692118034e-06 3.016776974e-06 5.345286641e-10 9.665503785e-07 0.1956677695 0.008459126865 0.005858334475 0.00246450784 0.05670021888 0.00133745971 9.777966481e-06 0.006313586863 0.009742116261 4.753310449e-06 0.0002594672793 0.003998157728 5.662079481e-05 9.762729204e-08 2.603603043e-06 0.0001113943867 1.39687808e-05 0.0002007779196 4.343487846e-05 7.293173689e-06 0.0002237295485 1.432793076e-08 1.167870408e-05 5.126252014e-07 1.327564511e-08 3.836717447e-05 1.43240055e-07 2.432341168e-05 5.455522517e-07 2.306133439e-05 1.495933253e-05 5.159428098e-07 4.230943431e-07 1.671826729e-05 2.964096506e-07 3.809767499e-09 1.3016484e-05 1.919054639e-07 4.160402834e-06 0.0006217877587 0.002910075796 0.02064640753 0.1501532716 0.003697833613 0.0001714935987 0.0004435829249 0.0003301290652 0.001442183785 0.09179846018 1.98890148e-06 4.727551412e-05 0.0002027297698 0.02623532377 0.0001692506412 8.166712629e-05 0.0001876481747 2.011125263e-06 0.0002692359526 0.003771667132 3.95010439e-12 4.319245222e-06 1.54188892e-05 1.462594847e-07 0.0006124953811 8.192698758e-09 4.285207267e-07 4.731205275e-05 0.0003410399646 1.682995279e-05 2.31519555e-09 8.659949263e-09 1.293907929e-11 5.276741761e-08 0.0001662259972 9.471258877e-11 5.661349837e-07 1.29665435e-06 1.819292128e-05 1.761820483e-05 4.19835102e-08 8.729585028e-07 2.073129638e-05 2.693621908e-05 3.351034882e-07 1.903809738e-08 2.366138722e-07 1.033866964e-05 4.679318882e-07 1.38079541e-05 4.762047355e-08 3.009558694e-07 1.018202294e-08 9.357318982e-06 1.163201459e-06 4.476354018e-08 3.084490757e-07 3.049822144e-06 1.105107429e-05 1.030702534e-06 1.778478888e-08 2.150007695e-07 9.991706467e-06 3.593231385e-07 2.420850042e-07 -0.00547522355 0.0251068315 0.008725664413 0.0004862640186 0.0003101205832 0.0002044462068 4.280199647e-05 1.397529011e-05 6.222601306e-06 6.060468562e-06 1.870878883e-06 9.311828594e-11 1.250483187e-06 0.2052068298 0.003843074835 0.006257258724 0.0009729718725 0.06361454356 0.0002306169173 1.816123175e-07 0.007908777091 0.009535014267 5.3830644e-07 0.0001403823357 0.004594788466 6.167253806e-05 9.215860354e-08 4.514445304e-05 1.20140621e-05 0.000282732028 2.077963736e-05 3.274532976e-05 4.337972413e-06 0.0002493658437 4.718492405e-09 1.378465797e-05 7.003463976e-07 1.58727484e-06 3.850841031e-05 1.001321288e-07 2.22412743e-05 1.651829654e-07 2.443222056e-05 1.468426081e-05 2.268015673e-08 1.153253598e-07 1.716780197e-05 2.116121621e-07 4.621282244e-07 1.277286174e-05 5.289518609e-08 3.99584148e-06 0.0003549075004 0.003251396725 0.02033953934 0.1488918663 0.001163549175 7.108560151e-05 0.0006291607385 0.000148807757 0.0003553825036 0.0961604227 6.110598667e-07 3.737940862e-05 0.004388074394 1.335363552e-06 0.02480364582 9.026698783e-05 0.0008302820764 4.448662621e-06 8.028311349e-05 0.003706887217 6.772972221e-08 2.828047093e-07 7.439424512e-07 2.427177921e-09 0.0008093370452 7.591525487e-09 1.162599844e-07 0.0003477153666 8.254350182e-05 5.286355643e-06 9.283239404e-10 2.52065539e-07 4.871597183e-09 1.643451329e-06 0.0001317782919 9.915377577e-09 7.684992739e-07 7.34248362e-07 2.575127839e-05 2.618628007e-05 2.102645343e-08 8.375210606e-07 5.101552678e-05 7.780878025e-07 1.418678398e-06 8.471603333e-09 2.00911043e-07 8.159009258e-06 1.310777564e-07 9.230069465e-06 2.738151651e-08 3.579397749e-07 1.393088485e-07 1.060772978e-05 6.934489679e-07 2.279359016e-08 3.23590416e-07 1.059999594e-05 3.604476682e-07 4.376566242e-06 9.5166294e-09 2.115065026e-07 9.108234825e-06 1.508335042e-09 9.762464082e-09 -0 0 0 0 0 0 0 0 0 0 0 0 0 -0.0315207961 0.004240406438 0.02728038966 0.03459095925 0.003861347286 -0.03845230653 0.01622526287 0.002308891127 -0.018534154 0.005048355827 0.0009284089503 -0.005976764777 -0.0003128281511 -0.000295584708 0.0006084128591 -0.002844672499 0.0002381998155 0.002606472683 -0.0009961451231 0.0001371806506 0.0008589644726 2.339432406e-05 4.529213494e-05 -6.868645901e-05 0.001182970125 -0.001146545705 -3.64244205e-05 6.503981763e-05 1.275338299e-05 -7.779320061e-05 -8.93281453e-06 -7.611281888e-06 1.654409642e-05 -5.028909249e-07 -2.088867461e-05 2.139156553e-05 -1.956140589e-05 2.66178101e-06 1.689962488e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.0007402541637 0.003964488442 0.002078259909 0.0003740714778 2.121515907e-07 2.485938894e-05 2.396360555e-05 9.728639677e-07 2.239561251e-08 1.82973444e-06 6.380943168e-08 1.261972962e-07 1.779050754e-07 -0.0007938852837 -0.007934778651 0.006014044498 -0.006450604224 -9.886780893e-05 0.004665976502 -0.0004730921291 -2.276497733e-05 0.001154267179 -1.956373912e-05 -8.065419233e-07 0.001040799676 -3.444300088e-09 -8.543142985e-08 0.0001534980338 -0.0001066825077 -4.778366244e-05 0.000153805085 4.063020947e-08 1.765575734e-08 2.556304607e-05 -9.970492855e-06 -2.116761087e-07 1.675224661e-05 -4.33485722e-07 -4.269326417e-06 9.582592954e-06 -1.220915087e-07 -1.777348471e-06 2.782750861e-06 5.397392062e-08 4.628601065e-10 -4.603269005e-07 -6.199539334e-08 -7.703427098e-07 1.897854266e-06 -1.941729558e-07 -1.581766279e-06 1.820539169e-06 -8.07914549e-05 1.8878034e-06 0.002176303292 -7.654235348e-05 -0.002404965712 -4.727673336e-06 -5.68701509e-05 0.003558464615 -0.00504285022 -0.0001868946256 -2.427792109e-07 -2.524758316e-06 -7.852316311e-05 -0.0008515297714 3.087286908e-06 -3.722512978e-07 -3.794770267e-05 -8.726517884e-07 -0.0001218176274 0.0004292079522 -5.733058726e-08 9.724617762e-07 -1.7839668e-06 -3.138314428e-05 0.0002525065019 -6.554206648e-11 -1.664737633e-09 -4.073888462e-07 -1.418169664e-05 9.137796676e-05 -7.806035097e-08 -3.740498614e-07 -1.31233616e-07 -7.932357346e-09 -5.976197836e-08 -5.45860012e-08 -5.607638683e-08 9.779826375e-07 2.081854622e-07 -1.898637629e-08 -3.892138982e-09 2.899878862e-08 -1.212891628e-07 -1.796632759e-06 1.090121163e-05 -1.3402057e-09 -9.899757525e-09 6.757436405e-07 -2.250597987e-08 -5.437513302e-07 -1.474612078e-08 5.963707275e-10 3.871798175e-07 -4.542500757e-07 -5.334868956e-08 -6.886908478e-09 1.394573464e-09 1.217070122e-08 -2.309718172e-08 7.5239382e-07 -2.73465845e-09 1.728232886e-09 -9.346304837e-08 6.770072601e-09 -6.9126687e-09 -0.0152993279 0.06283437736 0.01564319489 0.0001223705272 0.001403137869 0.0003246898587 8.390947515e-06 9.306067471e-05 6.436251167e-06 2.09785416e-06 1.237415229e-05 2.398866806e-07 1.356120678e-06 -0.06199734367 -0.0001515275133 0.01434628393 -7.76733334e-05 -0.01149101795 0.01471407646 -1.008824733e-05 -0.001337295139 0.02563581258 -3.856177873e-06 -0.0002697000452 0.007531351638 -1.774021306e-05 1.49487063e-10 0.00013020779 -7.52909321e-05 -8.284969072e-07 0.0005325856116 -1.80775932e-05 -1.188897494e-07 0.0004088709851 -5.882686667e-09 -4.93728582e-06 3.614639791e-05 6.69898349e-06 -9.040678475e-06 1.908882353e-10 -4.028447416e-06 4.320179825e-08 4.551633806e-05 -2.509226019e-06 5.608569603e-08 1.286274381e-05 -2.554911395e-06 4.125209648e-08 -8.130488538e-07 -3.322764597e-06 -2.379763333e-10 1.03496882e-05 -2.855908934e-06 -0.001345338162 0.0425340455 -0.05971674311 -0.0003416037149 -1.820032505e-05 -0.0001339193822 -0.0009698322353 -0.0001634523507 -0.02758900786 -1.922914196e-07 -3.562780755e-05 -1.427141618e-05 -0.006090384306 0.007649470684 -6.356028856e-08 -1.49049653e-06 6.024128154e-07 3.42354896e-06 0.009675857126 -8.585770268e-08 -9.47504172e-06 -2.0355702e-05 -1.078802009e-07 0.0007494486409 -3.007946286e-09 -7.78344993e-07 9.892033429e-06 -9.82525256e-05 -1.097787387e-06 -7.592303806e-09 -1.092227846e-07 -3.131568768e-07 -3.95407793e-06 0.0005246192071 -8.074874349e-10 -9.506946092e-08 4.474767027e-07 1.007992483e-05 5.618223768e-06 -4.762214633e-10 -3.866207221e-07 1.128797862e-06 -1.41523608e-05 -4.091105329e-08 -6.230212902e-10 -2.092505221e-07 -1.068208483e-07 1.087353463e-07 5.34350644e-05 -5.088127728e-09 -1.12274517e-07 1.448129257e-06 -3.590583594e-06 -1.267657252e-07 -3.510018377e-10 -1.414361441e-07 3.486164591e-06 -4.358191551e-06 -1.547001035e-07 -2.270086051e-10 -1.24819631e-07 8.372072269e-07 1.29039871e-07 6.434046835e-06 --0.007549205771 -0.03334588782 -0.01039560028 -0.0003663400525 -0.0005372799658 -0.0002448080965 -3.181798871e-05 -3.004273601e-05 -7.391148546e-06 -4.979768381e-06 -4.068897703e-06 -7.209490369e-10 -1.303641154e-06 -0.004053781362 0.03876764188 -0.01005410935 0.01073759717 -0.003799435918 -0.003947063679 -0.0002292116877 0.001362452447 -0.01312442037 3.830352377e-05 3.669253126e-05 -0.005346755496 6.275237631e-06 2.147888414e-06 -4.9030142e-06 5.24998666e-05 -6.530943196e-05 -0.0001279505175 -8.46067156e-06 1.67217449e-05 -0.0003044790126 3.875980111e-07 1.832697948e-06 -4.154012857e-07 -1.459601815e-07 3.729323522e-06 2.176075696e-06 -8.713455708e-07 3.03318581e-06 -3.4104103e-05 -6.989320519e-07 2.277721121e-06 -1.566927328e-06 -4.437076851e-07 1.747884035e-06 -1.51183639e-07 2.175141284e-07 1.396549434e-06 -6.505638659e-06 -0.001242175178 0.002206055656 -0.02357593604 0.007763576465 0.02288826002 -0.0001867650457 0.000267009936 0.0009985117064 0.0108098524 0.003931779969 -1.66283789e-05 4.516454435e-05 0.002072476007 0.0003257949506 -0.0008560465665 -0.0001177985004 0.0001965241854 8.460924399e-06 -1.831216473e-05 -0.005128067004 3.730600473e-09 1.049319133e-06 3.101887819e-06 1.677465822e-06 -0.0008226054948 1.296878248e-07 6.174124601e-07 -1.408201969e-05 -4.137165745e-06 7.801778632e-05 -4.398586163e-09 8.184576202e-09 -1.002094386e-09 7.378673534e-08 -0.0002241124419 7.04421802e-09 1.166905855e-07 2.987925778e-06 -6.588158849e-06 -2.894198655e-05 -2.114704673e-07 5.178513845e-07 -1.38604397e-05 7.634472449e-06 3.547519603e-06 -7.591412377e-08 1.82194956e-07 -1.561214562e-06 1.513012897e-06 -2.103277986e-05 -1.091691495e-07 2.005639116e-07 -3.455573794e-08 -1.433041372e-06 3.240310066e-06 -1.107767023e-07 2.111335136e-07 -3.787566633e-06 -1.450862244e-06 3.401642828e-06 -6.484618255e-08 1.422739374e-07 -1.8597724e-06 5.343369073e-07 -1.639875711e-06 --0.007309033276 -0.03351583095 -0.0116481402 -0.0006491278137 -0.0004139888794 -0.0002729211173 -5.713761523e-05 -1.865601641e-05 -8.306729322e-06 -8.090293663e-06 -2.497489991e-06 -1.243062761e-10 -1.669305945e-06 0.008824025533 0.02643610119 -0.01083708186 0.007127972368 -0.0002015704928 -0.001472589974 3.52602457e-05 0.001383652854 -0.012723685 9.534365804e-06 3.826563704e-05 -0.006101755403 1.860833168e-06 2.007588263e-06 -6.727936318e-05 3.881414542e-05 -0.0001664800759 5.311607262e-05 -5.181984788e-06 1.138595806e-05 -0.0003341989262 2.281908464e-07 1.34363654e-06 -1.518380807e-06 1.903223607e-07 5.064664436e-06 1.880777861e-06 -1.019474052e-09 1.599936591e-06 -3.533598973e-05 5.748146443e-07 4.822457239e-07 6.399961757e-07 1.620823302e-07 1.62219409e-06 -1.561135577e-06 6.555197633e-07 7.19730981e-07 -6.279307449e-06 -0.001052047141 0.001981381116 -0.02382408269 0.01743032163 0.01255967159 -0.0001543600441 0.0002638832136 0.0007046304503 0.005439314234 0.009708251787 -9.629451975e-06 2.841073118e-05 -0.002467337713 0.0001825344565 0.005110410398 -0.0002237562978 0.0003479999217 2.277621912e-05 -6.304443036e-06 -0.00499859777 -1.100354908e-07 1.731155665e-07 8.419299432e-07 -7.727627855e-08 -0.001078925255 1.260654633e-07 2.336996832e-07 -6.615282162e-05 3.786858867e-05 4.556903232e-05 -1.571098158e-08 4.227487805e-08 -6.622179408e-08 -8.599514848e-08 -0.0001762966552 -8.318324608e-08 2.526758443e-07 3.053245294e-06 -5.948137315e-06 -4.100804742e-05 -1.551847443e-07 4.39096653e-07 -7.739584593e-06 2.137389555e-06 -8.743514916e-06 -4.853235563e-08 1.303457967e-07 -1.1166397e-06 7.158919453e-07 -1.418545147e-05 -9.371821958e-08 1.783447843e-07 -2.040717917e-07 -6.366425937e-07 2.630808778e-06 -8.512647476e-08 1.775622591e-07 2.306424563e-07 1.88373117e-06 -5.72038406e-06 -4.911464106e-08 1.18556225e-07 -2.416040907e-06 5.322408812e-08 2.739003675e-07 -0 0 0 0 0 0 0 0 0 0 0 0 0 0.01799345834 -0.02314170501 0.005148246673 0.004113663011 -0.03711442399 0.03300076098 0.002455859289 -0.01609809545 0.01364223616 0.0009290815387 -0.005169934235 0.004240852696 -0.000556608114 0.0001661732685 0.0003904348455 0.003027101359 -0.003300663439 0.0002735620798 0.0008256760815 -0.0009561237265 0.000130447645 0.0001296865374 -9.798293098e-05 -3.170360641e-05 -3.035230701e-06 -0.0002366169605 0.0002396521912 1.251020389e-05 -6.895859167e-05 5.644838778e-05 -1.724103712e-05 3.947265868e-06 1.329377126e-05 6.280694769e-06 -1.872383992e-06 -4.408310777e-06 1.763615602e-05 -2.018104933e-05 2.544893312e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.0001067311622 0.0005716069962 0.0002996472108 5.393429113e-05 3.058839376e-08 3.584270921e-06 3.455115278e-06 1.402692575e-07 3.229039252e-09 2.638143665e-07 9.200157373e-09 1.819535066e-08 2.565067025e-08 0.002939739135 -0.002147186714 -0.001183951081 -0.0004483812069 0.002394049369 -0.002217233899 -0.000109600286 9.831198424e-05 0.0001062190373 -2.316274033e-06 6.849268553e-06 0.000142594331 1.889160641e-08 -1.562393483e-08 2.211553764e-05 0.0001412201805 -0.0001424597479 1.144251025e-06 1.025325895e-08 -6.958658185e-08 3.753462556e-06 -5.815876649e-07 3.910396252e-06 -2.381523105e-06 2.14568259e-06 -8.702197839e-07 -5.71887327e-07 7.178985953e-07 -3.074341204e-07 -2.831071408e-07 -6.711294193e-09 -4.516796476e-09 -4.729386885e-08 2.976488271e-07 -1.608931969e-07 1.687238555e-08 8.21115764e-07 -3.897540038e-07 -4.249312624e-07 -6.207427381e-05 -2.178611638e-06 2.888877686e-05 0.0004193316174 -0.0004393489448 -1.676869586e-05 1.646623842e-05 -0.0008266413931 -0.0007282308428 0.001305325253 -3.958330076e-07 3.365582525e-07 3.088106897e-05 -0.0001469676094 -1.790476944e-05 -3.294978481e-06 5.176777711e-06 8.335435491e-06 -1.256830663e-05 4.102029615e-05 -1.038915801e-07 -3.213492007e-07 1.191279236e-05 -4.717500421e-06 2.498663765e-05 5.833440782e-10 5.940313487e-08 3.733298788e-06 -1.553133698e-06 8.831156462e-06 -2.564907817e-07 1.539487976e-07 -1.837894437e-08 -2.083989244e-09 2.913707701e-08 3.344379603e-08 -8.276290044e-08 1.221906762e-06 -4.060739477e-09 -1.016196081e-06 -6.107392495e-09 -1.436130669e-08 7.799240487e-07 -2.832329845e-07 8.226242473e-07 -2.580862029e-09 3.93499934e-09 -1.390459612e-07 2.114642459e-07 -5.960708606e-08 -2.913291053e-09 -2.949315257e-09 -8.064827113e-08 -1.259704539e-07 1.930789771e-07 -3.194267914e-09 -2.763569437e-09 -3.874425787e-08 -7.279375885e-09 1.580956565e-07 -2.882086734e-09 -1.358109734e-09 4.123526813e-08 -4.969213752e-08 -9.442707074e-10 --4.323224143e-06 -1.77554922e-05 -4.420392729e-06 -3.45789842e-08 -3.964932023e-07 -9.174958829e-08 -2.371081077e-09 -2.629672089e-08 -1.81873064e-09 -5.9280341e-10 -3.496639478e-09 -6.778623844e-11 -3.832072686e-10 0.01086770412 -0.01097310918 0.0001189129236 -0.005520991608 0.005385441436 0.0001346613608 0.0003738068627 -0.0003730037722 -7.666419682e-06 -5.719280571e-05 6.190370829e-05 -6.761781985e-06 -4.012716537e-08 7.885152878e-08 -7.050505294e-08 1.091650957e-05 -6.851153923e-06 -4.194342074e-06 1.193651292e-05 -1.262919081e-05 5.822826265e-07 -4.376715662e-07 4.440463923e-07 -1.519211247e-08 -1.951845217e-08 -1.48766366e-07 1.689464712e-07 1.729321516e-06 -1.983568289e-06 2.425110797e-07 1.439563521e-06 -1.648574255e-06 2.060692295e-07 7.630247962e-07 -6.038477716e-07 -1.582369765e-07 7.846138574e-07 -8.381072608e-07 5.150783011e-08 -0.0001681847424 8.230956785e-05 -0.0002713020184 0.01255511636 -0.01219260626 0.0001360333617 -0.0001203520424 -0.000229384243 -0.007417811061 0.007639673203 1.173261315e-05 -2.039259534e-05 -0.0009749668492 0.000987230323 -4.029897459e-06 1.562514557e-06 -1.987798866e-06 -7.57483437e-06 6.750986436e-06 -1.485732059e-06 2.589342358e-06 -2.494780942e-06 4.740289459e-06 -4.805501304e-06 -2.326416319e-07 1.150193313e-07 -4.274826219e-07 2.338095522e-07 4.585895846e-05 -4.575480516e-05 8.925215854e-08 -1.003664899e-07 2.879721828e-06 -2.944545621e-06 -7.106788855e-08 -2.991813734e-08 2.655267039e-08 -1.620029576e-06 1.602604962e-06 1.625480608e-08 4.808027709e-08 -7.953786999e-08 -2.016472318e-08 2.349447333e-06 -2.294023925e-06 3.639793068e-08 -5.391611208e-08 1.247261594e-06 -1.543893909e-06 2.991097888e-07 7.485523652e-08 -8.627279653e-08 -8.360758411e-08 1.745334984e-06 -1.649635449e-06 2.376476498e-08 -3.423593286e-08 -5.997368817e-08 2.397140654e-06 -2.326365603e-06 1.752178088e-08 -2.617946227e-08 6.007082872e-07 -8.773441969e-07 2.832377802e-07 --0.01352519994 -0.05974268203 -0.0186248165 -0.0006563369189 -0.0009625938385 -0.0004385995762 -5.70052893e-05 -5.382473648e-05 -1.324202372e-05 -8.921781318e-06 -7.289860237e-06 -1.29165639e-09 -2.335610896e-06 0.07964152311 -0.01885925806 -0.01660171479 -0.00574680729 0.01753896191 -0.006433287207 0.0001323736417 0.001892867491 -0.02350870664 -1.443489128e-05 0.0001648623185 -0.009595341586 1.597790393e-05 -1.192825352e-06 -8.4784262e-06 0.0001269066384 -9.59392747e-06 -0.0003694992749 2.064744865e-05 -8.357315908e-06 -0.0005429958753 -2.088247228e-07 4.215251673e-06 -7.727674004e-07 -2.493457888e-07 1.173966667e-05 -1.171677194e-06 4.453056072e-06 -1.970602132e-06 -5.971039334e-05 3.696408652e-06 -1.658856444e-06 -2.016300646e-06 3.623890605e-06 -1.415610787e-06 -1.425715288e-07 3.337681021e-06 -8.097144683e-07 -1.129174028e-05 0.0009694510183 0.0002090828572 -0.04187710285 0.06623306327 -0.01113037713 0.0001753303412 1.975043901e-05 0.001023959997 -0.005677020786 0.03280187875 1.014757303e-05 2.858238319e-06 -0.001121499074 0.00544185579 -0.001519178992 9.953943647e-05 -6.37949522e-05 -5.753390549e-06 7.376220367e-05 -0.009167831424 -2.096741185e-09 1.537416432e-06 1.056785471e-05 -6.562793058e-07 -0.001474782205 -6.926784448e-08 -1.68962159e-07 -3.684626392e-05 0.0001787283839 -3.316986788e-05 3.419968586e-09 2.920283036e-09 1.198259697e-09 1.07021718e-07 -0.0004014984998 -3.919720643e-09 1.780215337e-07 -2.829443206e-06 -4.636552644e-06 -5.078924751e-05 1.360029455e-07 2.251346748e-07 -2.529208029e-05 2.228144187e-05 -1.600307421e-06 5.058172697e-08 7.688309506e-08 5.91715891e-08 -1.406357979e-06 -3.635867133e-05 8.068265875e-08 4.722862395e-09 -4.315656143e-08 4.64638533e-06 -1.348888313e-06 8.064872769e-08 4.147015989e-08 -7.320309189e-06 5.307412913e-06 -1.220219097e-06 4.382250185e-08 5.081609573e-08 -1.735347468e-06 -2.076313977e-06 -1.456925542e-06 -0.01309911957 0.06006647671 0.0208755899 0.001163355334 0.0007419435138 0.000489124377 0.0001024010188 3.343498113e-05 1.488717269e-05 1.449928055e-05 4.475957186e-06 2.227794994e-10 2.991700454e-06 -0.07557642442 0.01356035245 0.01824552492 0.003900278694 -0.0161138865 0.002439383027 1.966598765e-05 -0.002553906128 0.02279445148 4.171185693e-06 -9.677006834e-05 0.01094239018 -6.783675815e-06 1.201878312e-06 0.0001192257606 -6.737873586e-05 0.0001508512072 5.013445927e-05 -1.536656783e-05 5.361588211e-06 0.0005978317065 1.283163799e-07 -2.897132602e-06 2.673030212e-06 -1.460921585e-07 -1.36478969e-05 1.005398427e-06 -3.017079093e-06 9.967940218e-07 6.248326716e-05 -2.807318189e-06 3.48060435e-07 -5.821768305e-07 -3.708402406e-06 1.063509506e-06 2.244983844e-06 -2.635965272e-06 4.187892368e-07 1.100613933e-05 -0.0007467129285 -0.0005418473638 0.04180992313 -0.05982114426 0.006583810282 -0.0001158654384 -9.556308628e-05 -0.0009542375802 0.002977049085 -0.03041769331 -5.654032211e-06 -6.689210586e-06 0.005934549094 9.032653994e-05 -0.01111019478 -0.0001626751033 -6.414589176e-05 1.128652096e-05 -2.021835905e-05 0.008941963301 -8.949451677e-08 2.084811184e-08 -1.701180148e-06 -1.928771903e-08 0.001933936335 6.761486965e-08 -1.722568778e-08 0.000108545912 -0.0001556699885 1.545141236e-05 -9.263923829e-09 -1.867672853e-08 -3.541938491e-08 2.849105989e-07 0.0003159593756 -5.083249431e-08 -2.074885836e-07 2.251418178e-06 3.947773829e-06 7.243743543e-05 -9.586459335e-08 -2.927692743e-07 1.094552809e-05 6.478044079e-06 8.166366305e-06 -3.086839749e-08 -8.45854603e-08 8.10547263e-07 5.958682345e-07 2.470354085e-05 -6.380616906e-08 -3.003964015e-08 3.435097659e-07 -4.794900918e-06 1.185395373e-06 -5.724190981e-08 -7.269719927e-08 -4.649551328e-06 9.1820277e-07 1.015825372e-05 -3.1593409e-08 -6.565910384e-08 3.818946577e-06 -1.481234318e-07 4.569634255e-08 -0 0 0 0 0 0 0 0 0 0 0 0 0 0.2639982369 0.001205578172 0.002078167571 0.002918528218 0.002852961161 0.1790322028 0.0006921645132 0.0005555021375 0.07151661371 3.358539776e-05 2.724439595e-05 0.006072041596 -5.712882517e-08 7.655188296e-08 -0.001246418362 -0.002807959707 -0.0001197851296 -8.370173022e-05 -0.0004808155083 -4.436690024e-06 -4.409031681e-06 -0.0002908126152 -2.773659214e-07 -4.541590061e-09 0.0002557185401 8.328157801e-05 2.781907866e-06 -3.421920224e-07 -3.123057387e-07 -4.050715352e-05 5.947876637e-08 -4.291593688e-09 0.0001101602462 -9.832078092e-08 -9.757251627e-07 -3.367656915e-05 2.208053591e-05 4.93161866e-07 4.012259278e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.136759867 0.2495384266 0.1183741171 0.02744512307 -0.0004259485133 -0.002520417748 -0.001910784133 -0.0002082137869 2.776890596e-05 0.0001246485062 2.302876194e-05 1.325936575e-05 -1.870597394e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.03127525951 0.005494326129 0.003983148203 3.969373339e-05 0.000549671634 -0.0001211296958 6.571698562e-06 3.382323651e-05 -1.114554386e-05 5.030615627e-06 9.422005601e-06 1.273905221e-06 2.944315341e-06 0.1323912725 0.0003909119965 0.02921426462 5.766675355e-05 0.006250515562 -0.003403840587 -1.485951533e-05 -0.001867105443 0.00443680683 3.240729491e-06 0.0003656039655 0.001366664274 -0.0001145380224 -5.139013819e-10 0.0001779611418 5.83804182e-05 3.374046054e-07 -0.0001034449396 2.169933899e-05 5.869952752e-07 4.601998696e-05 1.659674218e-08 1.742906117e-05 2.963978566e-05 -1.210641975e-05 2.867779831e-05 4.53217723e-10 2.324712673e-05 1.222697536e-07 2.227096826e-05 1.403402863e-05 1.745926967e-07 8.72764537e-06 1.787836085e-05 1.034030048e-07 -1.329429507e-06 1.289057784e-05 4.836804013e-08 8.859290971e-06 -5.290414375e-06 -0.003276907408 0.03531854714 0.1385178612 0.000625854789 -5.592906919e-05 -0.0004535323248 -0.001858137465 0.0002583059723 0.03363716185 -6.410845458e-07 -6.697727842e-05 -5.565339435e-06 -0.002679378237 0.0007633423194 -2.08755938e-07 -1.104230886e-05 -4.095444652e-06 -0.0002674828357 0.00149216675 -2.80010304e-07 -2.453633862e-05 -0.0001188698184 -6.13148686e-07 -0.0001884128713 -2.161080613e-09 -1.121032814e-07 -5.91105154e-07 1.177803822e-05 1.478074919e-07 -2.474382572e-08 -2.722592647e-07 8.302464299e-07 1.276481795e-05 3.973266777e-05 -2.462481775e-09 -2.908972312e-07 4.183446625e-07 1.195534794e-05 -7.642393501e-06 -1.608752281e-09 -1.003469931e-06 4.301846484e-06 3.719373081e-05 9.406691721e-08 -2.154040956e-09 -3.072733325e-07 1.707648103e-05 1.486404674e-07 1.033953599e-05 -1.39406273e-08 -2.712912285e-07 2.967047924e-06 1.088193374e-05 2.630195707e-07 -1.271864742e-09 -3.37626031e-07 3.328483927e-06 1.440450968e-05 3.877550917e-07 -8.11888206e-10 -2.401580976e-07 1.385889647e-05 1.006455308e-07 2.063472015e-06 --0.03400284354 0.003588263554 0.005230293025 0.000182094621 0.0005264273819 -0.0001281985288 1.519275872e-05 3.149132847e-05 -1.815450395e-05 1.056959613e-05 7.491037766e-06 1.050273473e-07 4.306753964e-06 0.132840086 0.006926056395 0.03524201336 0.0002507050947 0.008181088315 -0.00284892788 -2.094253217e-06 -0.002257155031 0.004441134928 6.998848729e-06 0.0003078763911 0.002049530513 -0.000130699398 -3.80839705e-07 -3.842171015e-05 4.7122312e-05 -6.897808692e-06 -5.365659599e-05 1.668910718e-05 2.884928638e-06 6.378519466e-05 2.693632591e-08 1.706600503e-05 6.68013998e-06 -1.024252082e-06 2.63935855e-05 1.049424309e-07 1.911983491e-05 5.064177389e-07 2.571949386e-05 1.43601749e-05 9.196728095e-07 2.709340716e-06 1.740628975e-05 8.763258401e-07 2.487225682e-07 1.225815726e-05 2.323093089e-07 9.604008143e-06 -0.0005930404856 -0.002801021284 0.03833418148 0.1296496341 0.003644786517 -0.0001707246494 -0.0005033511969 -0.001289328504 0.0008894809433 0.03962388807 -1.703508023e-06 -3.201976751e-05 -1.520417585e-05 -0.001727873914 0.0001561498279 -8.088160454e-05 -0.0002180902584 -6.002401926e-06 -0.0005486307191 0.001710330277 -8.012579421e-11 -3.836641423e-06 -4.83903662e-05 -6.799163307e-07 -0.0002269653891 -1.069355387e-08 1.99534724e-07 -7.379845079e-06 -1.714174967e-05 -8.345208005e-07 -2.269152495e-09 -6.139230041e-09 2.069130911e-09 1.161515487e-06 4.724681869e-05 -2.367989516e-10 -5.426559099e-07 1.678245545e-06 2.904191299e-05 -3.21999824e-05 -3.854854129e-08 -7.680128386e-07 2.331052269e-05 1.955101669e-05 2.969642796e-07 -1.775454332e-08 -1.858657771e-07 1.141847439e-05 4.780481679e-07 7.23402688e-06 -4.645274426e-08 -2.879332569e-07 -2.960960409e-07 1.1452873e-05 1.433667374e-06 -4.330175797e-08 -2.963406998e-07 5.144210215e-06 1.295091149e-05 1.257958044e-06 -1.672307619e-08 -1.932152114e-07 1.234506887e-05 5.254742876e-07 3.448409215e-07 --0.0340004526 0.002506633008 0.005685728861 0.0002918431373 0.0004659891876 -0.0001214089154 1.890373931e-05 2.591681778e-05 -1.923921071e-05 1.28979605e-05 5.734561942e-06 -4.384293514e-08 4.856399028e-06 0.140867462 0.003382134303 0.03615613779 9.598550036e-05 0.008757312642 -0.00134165043 -2.712502243e-07 -0.00244415173 0.004205014175 1.480215854e-06 0.0002471061128 0.002336435703 -0.0001343463908 -3.203188961e-07 -0.0001497836076 1.652804876e-05 -1.385836343e-05 -1.221785959e-06 1.567672496e-05 2.166418749e-06 7.164012297e-05 8.289343774e-09 1.728607694e-05 -8.216813852e-06 1.103440666e-05 2.180816394e-05 5.973803405e-08 1.766628547e-05 1.665375321e-07 2.499122157e-05 1.650662571e-05 1.598670707e-07 -1.235307028e-06 1.664829557e-05 3.980604775e-07 3.009584196e-06 1.216044361e-05 7.402827233e-08 8.994126169e-06 -0.000329918727 -0.003099977832 0.03689993729 0.1309150533 0.00131759385 -6.905440623e-05 -0.0006911574803 -0.0008890498919 0.000262913761 0.04327930206 -4.274579904e-07 -2.147980606e-05 0.0003526914177 -1.004441191e-06 -0.001678921834 -8.715080331e-05 -0.0009140122529 -4.082124421e-06 -0.0001956855216 0.001717093459 -6.664372588e-08 -3.44462619e-07 -9.350238094e-06 4.499075194e-08 -0.0002232502124 -1.023844394e-08 1.797167617e-07 -3.995950516e-05 -2.777713618e-06 -3.171228582e-07 -5.679159491e-10 -2.996142761e-07 -1.085089183e-08 -7.138449978e-06 4.611090636e-05 -8.325668403e-09 -7.292919396e-07 9.262441997e-07 3.716673397e-05 -3.743019965e-05 -1.810569468e-08 -6.932089209e-07 4.049105138e-05 7.765710848e-07 1.257955945e-06 -7.490985371e-09 -1.545524887e-07 9.764302972e-06 1.504596755e-07 5.160664798e-06 -2.595383588e-08 -3.430853727e-07 -1.055836543e-06 1.286447838e-05 9.007454998e-07 -2.134094498e-08 -3.065790114e-07 1.298257094e-05 4.976495714e-07 6.070566886e-06 -8.568238382e-09 -1.876223487e-07 1.170498525e-05 -7.278459531e-09 1.401227171e-08 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.00244083346 0.002848844396 0.0003457357654 -4.351245903e-05 -3.412171541e-07 -1.172261895e-06 -2.395828425e-06 9.408634828e-07 -1.031390748e-08 -6.134185158e-07 9.113159266e-08 -7.745660201e-08 -1.16496011e-07 0.000887378457 0.004282433347 -0.008422582153 -0.02298852507 -0.0005391428887 0.02397500601 -3.16364662e-05 -6.853069144e-06 0.0005332889706 -1.891443669e-07 -9.98173452e-09 1.269057415e-05 -2.714642774e-10 -5.695305967e-09 1.248146012e-05 -5.180005491e-05 -2.303794188e-05 7.807455026e-05 -2.058450697e-08 -5.917823654e-09 -8.283792732e-06 -7.913027227e-07 -1.846949707e-08 1.43811017e-06 -1.679464545e-08 -1.367956104e-07 3.796325129e-07 7.058864632e-08 8.968268991e-07 -1.624190348e-06 1.907606242e-07 -4.425609334e-09 -1.785345508e-07 1.088151799e-08 8.821460009e-08 -3.555814276e-07 8.795888643e-08 6.350605342e-07 -8.467456728e-07 -6.961307146e-07 -2.57365483e-05 -0.001364904069 3.558426101e-05 -0.0003006910919 1.79678357e-06 3.649381663e-05 -0.003965081387 0.003056981052 0.0002081473282 1.171666402e-08 -4.087530787e-06 -0.0002571167241 0.0002686262669 2.472740206e-05 -3.65882049e-09 3.559515318e-07 2.175968027e-08 3.868842415e-07 -7.376855229e-06 -2.253060629e-10 -4.751737193e-08 7.072169659e-08 8.751514074e-07 -1.005820775e-05 -7.305231862e-12 -1.261877449e-10 -3.187911732e-08 -7.876347196e-07 6.912983322e-06 1.069832777e-08 1.437681555e-06 -1.344812828e-07 4.490822006e-08 -1.20226087e-06 5.437516977e-09 1.361545404e-08 -4.154213437e-07 -7.815715843e-07 5.942276772e-09 -2.91183907e-11 -3.462904095e-09 1.091783649e-08 1.4614323e-07 -9.842603599e-07 5.433682597e-11 -4.416719418e-09 5.689234753e-07 -1.920028607e-08 -3.886740763e-07 -6.067061903e-13 6.158308711e-13 3.227751062e-10 -1.236688995e-10 -3.544760441e-11 4.013433423e-11 -4.413370941e-10 -3.223545793e-09 -1.464828919e-08 -1.391088637e-07 -6.741428695e-10 -3.860231087e-09 6.801572978e-08 -4.840889836e-09 -8.01860098e-08 --0.1294773005 -0.0941058951 0.001418853687 0.0005072630364 0.0003898060783 -0.0002042401565 -6.977209769e-06 0.0001016075576 -1.973446046e-05 3.629213456e-06 1.857126119e-05 2.2649049e-06 4.245712546e-06 -0.001792844529 -1.904363329e-05 0.1242879785 1.768081802e-05 0.001201252171 -0.07357135223 -2.098876532e-09 -1.242229337e-06 -0.01633181958 1.175936002e-07 3.058936759e-06 0.00169506136 7.537665457e-07 1.184156261e-10 0.0002486624473 6.499429446e-07 5.16921696e-08 4.391291338e-05 1.7533015e-09 3.714772198e-11 -1.634071937e-06 5.124270403e-10 2.755863533e-07 9.742422583e-05 -8.392491683e-06 1.592678527e-07 -2.796099299e-11 -9.60458938e-08 3.567255086e-09 2.184852474e-05 -2.048834398e-07 1.775446096e-08 2.480380235e-05 -3.811053942e-07 8.31233061e-08 5.659316227e-06 -9.628881707e-08 -2.561175954e-11 1.283243734e-05 3.039757005e-07 6.891808607e-05 0.1050762486 0.001771273443 2.798145638e-05 1.776495179e-07 -7.217269677e-06 0.007621835946 -5.393189728e-05 -0.002351564351 9.107856081e-10 -1.306856131e-06 5.64623243e-08 3.316447052e-05 -0.0094705678 -1.699560964e-11 -5.137519868e-09 1.060558357e-08 2.677879209e-08 0.0006740924741 2.11411677e-10 -5.056389384e-08 -6.348871894e-08 -2.468302917e-10 -0.0005722431331 1.193394914e-09 5.34975315e-07 9.745475243e-05 -5.466357309e-06 -1.230628467e-07 -1.183288764e-11 7.702507074e-10 5.358616387e-09 2.069833073e-08 0.0002243786055 6.428741376e-13 2.413944559e-09 -4.757663664e-07 -1.007167227e-05 -3.700651655e-05 5.116276052e-12 -1.689290982e-08 -1.633527496e-06 -1.671547187e-07 -9.349336293e-10 -2.173351912e-12 7.371753051e-09 -5.391825365e-09 1.741843062e-08 3.100742579e-05 1.861116219e-10 7.934051539e-09 3.749967927e-06 2.631894889e-07 2.612217138e-08 -3.933817243e-12 3.561444933e-09 4.002161109e-06 8.666519371e-09 4.744894451e-09 -1.480023586e-12 3.974547338e-09 7.710641274e-08 6.046426221e-08 8.007908072e-06 -0.06146418715 0.05124151379 0.0007841563878 -0.0005564076588 -0.0001562781042 8.233155341e-05 7.651197758e-06 -4.528521008e-05 9.881917486e-06 -3.66543922e-06 -7.598017887e-06 -7.23350463e-08 -2.639450293e-06 -0.0001227407935 0.005449039559 -0.06968794228 -0.004199488751 0.0006719306414 0.03379928863 -1.853752336e-06 1.771727993e-06 0.009505917338 -1.457573498e-06 -4.006665721e-07 -0.0006917410924 -6.921163334e-07 -1.194994022e-06 3.658866422e-05 -5.56490794e-06 -2.598424955e-05 -3.580898336e-05 -1.928520864e-08 2.261560443e-07 -5.295246552e-05 -2.234853706e-07 -3.309695758e-07 -5.132552797e-06 -6.250436814e-08 3.378774114e-09 4.201142691e-09 -2.900188108e-08 3.714882727e-07 -1.733107303e-05 -9.272767505e-08 1.82574692e-06 -7.813028113e-06 -4.453218511e-08 1.571667549e-06 -4.29570813e-06 8.035186803e-09 1.990285914e-07 -6.492702314e-06 2.49321864e-05 -0.0001187996528 -0.04818373264 -0.0002892093747 -0.0004708414066 3.390949469e-07 2.382417037e-05 -0.01169762047 0.004820453922 0.0003431439807 -1.461255006e-07 3.284261411e-06 -0.0002009696374 -2.627446771e-05 0.004226813423 -1.651200997e-10 5.239518692e-07 1.234766731e-07 -5.129813762e-08 -0.0002910951726 -1.513957172e-09 8.114573847e-09 1.184786162e-07 2.504959311e-07 0.0002923351967 -4.861624608e-09 -2.740305863e-09 2.161425418e-05 -4.835413898e-07 1.786527447e-05 2.442801306e-12 -7.021088306e-10 9.335308239e-09 -3.361851987e-08 -0.0001527157099 -4.369386445e-10 3.959071274e-10 -8.475811383e-07 1.242534371e-06 2.641146e-05 -5.173681294e-10 1.566555659e-08 4.803908701e-06 7.535469695e-07 4.407615617e-07 2.759677555e-10 -1.298454735e-08 -1.60715226e-07 5.107128454e-07 -1.713686569e-05 -2.536346553e-10 -1.379536569e-08 5.945987305e-07 1.039981866e-08 -1.585282843e-07 1.269864427e-10 -3.794166838e-09 -2.324988428e-06 -1.739119435e-09 -1.455044114e-07 2.056395642e-10 -5.741915623e-09 -2.704598173e-07 6.026596158e-07 -3.522715641e-06 -0.06076388899 0.05422902815 0.001783539448 -0.000707764579 -0.0001346621785 6.496255341e-05 6.567803543e-06 -3.752104426e-05 7.842008698e-06 -5.155438212e-06 -6.014849545e-06 2.745770586e-08 -2.936875781e-06 0.0003484675028 0.004396767513 -0.07161837605 -0.003457168631 4.802087079e-05 0.03068509085 -2.96228856e-06 8.002274185e-07 0.01023074567 -4.352130375e-07 -4.309946886e-07 -0.0005746197884 -2.386743004e-07 -1.153574182e-06 0.0001153101068 -4.826529666e-05 -3.78949707e-05 1.326444018e-05 -1.453182125e-08 1.634126779e-07 -9.023017179e-05 -2.545609945e-07 -3.662288028e-07 1.46861255e-05 -1.077310146e-07 1.086268139e-07 8.957552842e-08 -4.47507e-11 2.606611822e-07 -2.077822792e-05 1.28962976e-07 2.058816462e-06 -5.412886591e-06 1.083555834e-08 6.430139815e-07 -3.799272509e-06 2.945065796e-08 1.313121944e-07 -6.243092058e-06 2.130454396e-05 -0.0001113111245 -0.04718830258 -0.000542209661 0.0004247297028 1.0040258e-07 1.691567438e-05 -0.01216574726 0.002771174861 0.0008797204113 -1.948484995e-07 2.540825332e-06 0.002484933386 0.0007243322843 0.000357845154 3.48148508e-09 5.57815652e-07 3.358738913e-08 -1.985609087e-08 -0.0002686322669 2.320311781e-11 -1.743486349e-09 1.411977542e-07 5.305997306e-08 0.000257017703 -3.57048332e-09 9.593916507e-08 2.666333646e-05 3.146260401e-05 3.226150128e-05 4.656572876e-10 2.65888351e-09 -1.218435057e-08 -1.340869083e-08 -0.0001577953404 -2.522054235e-10 9.849554362e-10 -3.906208819e-07 4.577426556e-07 1.829022112e-05 -3.829466353e-10 1.05055562e-08 5.92554684e-07 -1.645304293e-06 8.972883084e-06 3.884264813e-10 -1.304132891e-08 -1.81708005e-07 3.760488493e-07 -1.536574168e-05 -2.298410736e-10 -9.822403326e-09 7.422334976e-07 -3.423962401e-10 -2.725284513e-08 1.152898918e-10 -2.866864991e-09 -1.082138731e-09 1.329542869e-08 -2.838559331e-06 2.49605719e-10 -5.585419792e-09 -5.464899697e-07 -1.435393293e-06 -6.637676224e-07 -0 0 0 0 0 0 0 0 0 0 0 0 0 -0.0315207961 0.004240406438 0.02728038966 0.03459095925 0.003861347286 -0.03845230653 0.01622526287 0.002308891127 -0.018534154 0.005048355827 0.0009284089503 -0.005976764777 -0.0003128281511 -0.000295584708 0.0006084128591 -0.002844672499 0.0002381998155 0.002606472683 -0.0009961451231 0.0001371806506 0.0008589644726 2.339432406e-05 4.529213494e-05 -6.868645901e-05 0.001182970125 -0.001146545705 -3.64244205e-05 6.503981763e-05 1.275338299e-05 -7.779320061e-05 -8.93281453e-06 -7.611281888e-06 1.654409642e-05 -5.028909249e-07 -2.088867461e-05 2.139156553e-05 -1.956140589e-05 2.66178101e-06 1.689962488e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.0007402541637 0.003964488442 0.002078259909 0.0003740714778 2.121515907e-07 2.485938894e-05 2.396360555e-05 9.728639677e-07 2.239561251e-08 1.82973444e-06 6.380943168e-08 1.261972962e-07 1.779050754e-07 -0.0007938852837 -0.007934778651 0.006014044498 -0.006450604224 -9.886780893e-05 0.004665976502 -0.0004730921291 -2.276497733e-05 0.001154267179 -1.956373912e-05 -8.065419233e-07 0.001040799676 -3.444300088e-09 -8.543142985e-08 0.0001534980338 -0.0001066825077 -4.778366244e-05 0.000153805085 4.063020947e-08 1.765575734e-08 2.556304607e-05 -9.970492855e-06 -2.116761087e-07 1.675224661e-05 -4.33485722e-07 -4.269326417e-06 9.582592954e-06 -1.220915087e-07 -1.777348471e-06 2.782750861e-06 5.397392062e-08 4.628601065e-10 -4.603269005e-07 -6.199539334e-08 -7.703427098e-07 1.897854266e-06 -1.941729558e-07 -1.581766279e-06 1.820539169e-06 -8.07914549e-05 1.8878034e-06 0.002176303292 -7.654235348e-05 -0.002404965712 -4.727673336e-06 -5.68701509e-05 0.003558464615 -0.00504285022 -0.0001868946256 -2.427792109e-07 -2.524758316e-06 -7.852316311e-05 -0.0008515297714 3.087286908e-06 -3.722512978e-07 -3.794770267e-05 -8.726517884e-07 -0.0001218176274 0.0004292079522 -5.733058726e-08 9.724617762e-07 -1.7839668e-06 -3.138314428e-05 0.0002525065019 -6.554206648e-11 -1.664737633e-09 -4.073888462e-07 -1.418169664e-05 9.137796676e-05 -7.806035097e-08 -3.740498614e-07 -1.31233616e-07 -7.932357346e-09 -5.976197836e-08 -5.45860012e-08 -5.607638683e-08 9.779826375e-07 2.081854622e-07 -1.898637629e-08 -3.892138982e-09 2.899878862e-08 -1.212891628e-07 -1.796632759e-06 1.090121163e-05 -1.3402057e-09 -9.899757525e-09 6.757436405e-07 -2.250597987e-08 -5.437513302e-07 -1.474612078e-08 5.963707275e-10 3.871798175e-07 -4.542500757e-07 -5.334868956e-08 -6.886908478e-09 1.394573464e-09 1.217070122e-08 -2.309718172e-08 7.5239382e-07 -2.73465845e-09 1.728232886e-09 -9.346304837e-08 6.770072601e-09 -6.9126687e-09 -0.0152993279 0.06283437736 0.01564319489 0.0001223705272 0.001403137869 0.0003246898587 8.390947515e-06 9.306067471e-05 6.436251167e-06 2.09785416e-06 1.237415229e-05 2.398866806e-07 1.356120678e-06 -0.06199734367 -0.0001515275133 0.01434628393 -7.76733334e-05 -0.01149101795 0.01471407646 -1.008824733e-05 -0.001337295139 0.02563581258 -3.856177873e-06 -0.0002697000452 0.007531351638 -1.774021306e-05 1.49487063e-10 0.00013020779 -7.52909321e-05 -8.284969072e-07 0.0005325856116 -1.80775932e-05 -1.188897494e-07 0.0004088709851 -5.882686667e-09 -4.93728582e-06 3.614639791e-05 6.69898349e-06 -9.040678475e-06 1.908882353e-10 -4.028447416e-06 4.320179825e-08 4.551633806e-05 -2.509226019e-06 5.608569603e-08 1.286274381e-05 -2.554911395e-06 4.125209648e-08 -8.130488538e-07 -3.322764597e-06 -2.379763333e-10 1.03496882e-05 -2.855908934e-06 -0.001345338162 0.0425340455 -0.05971674311 -0.0003416037149 -1.820032505e-05 -0.0001339193822 -0.0009698322353 -0.0001634523507 -0.02758900786 -1.922914196e-07 -3.562780755e-05 -1.427141618e-05 -0.006090384306 0.007649470684 -6.356028856e-08 -1.49049653e-06 6.024128154e-07 3.42354896e-06 0.009675857126 -8.585770268e-08 -9.47504172e-06 -2.0355702e-05 -1.078802009e-07 0.0007494486409 -3.007946286e-09 -7.78344993e-07 9.892033429e-06 -9.82525256e-05 -1.097787387e-06 -7.592303806e-09 -1.092227846e-07 -3.131568768e-07 -3.95407793e-06 0.0005246192071 -8.074874349e-10 -9.506946092e-08 4.474767027e-07 1.007992483e-05 5.618223768e-06 -4.762214633e-10 -3.866207221e-07 1.128797862e-06 -1.41523608e-05 -4.091105329e-08 -6.230212902e-10 -2.092505221e-07 -1.068208483e-07 1.087353463e-07 5.34350644e-05 -5.088127728e-09 -1.12274517e-07 1.448129257e-06 -3.590583594e-06 -1.267657252e-07 -3.510018377e-10 -1.414361441e-07 3.486164591e-06 -4.358191551e-06 -1.547001035e-07 -2.270086051e-10 -1.24819631e-07 8.372072269e-07 1.29039871e-07 6.434046835e-06 --0.007549205771 -0.03334588782 -0.01039560028 -0.0003663400525 -0.0005372799658 -0.0002448080965 -3.181798871e-05 -3.004273601e-05 -7.391148546e-06 -4.979768381e-06 -4.068897703e-06 -7.209490369e-10 -1.303641154e-06 -0.004053781362 0.03876764188 -0.01005410935 0.01073759717 -0.003799435918 -0.003947063679 -0.0002292116877 0.001362452447 -0.01312442037 3.830352377e-05 3.669253126e-05 -0.005346755496 6.275237631e-06 2.147888414e-06 -4.9030142e-06 5.24998666e-05 -6.530943196e-05 -0.0001279505175 -8.46067156e-06 1.67217449e-05 -0.0003044790126 3.875980111e-07 1.832697948e-06 -4.154012857e-07 -1.459601815e-07 3.729323522e-06 2.176075696e-06 -8.713455708e-07 3.03318581e-06 -3.4104103e-05 -6.989320519e-07 2.277721121e-06 -1.566927328e-06 -4.437076851e-07 1.747884035e-06 -1.51183639e-07 2.175141284e-07 1.396549434e-06 -6.505638659e-06 -0.001242175178 0.002206055656 -0.02357593604 0.007763576465 0.02288826002 -0.0001867650457 0.000267009936 0.0009985117064 0.0108098524 0.003931779969 -1.66283789e-05 4.516454435e-05 0.002072476007 0.0003257949506 -0.0008560465665 -0.0001177985004 0.0001965241854 8.460924399e-06 -1.831216473e-05 -0.005128067004 3.730600473e-09 1.049319133e-06 3.101887819e-06 1.677465822e-06 -0.0008226054948 1.296878248e-07 6.174124601e-07 -1.408201969e-05 -4.137165745e-06 7.801778632e-05 -4.398586163e-09 8.184576202e-09 -1.002094386e-09 7.378673534e-08 -0.0002241124419 7.04421802e-09 1.166905855e-07 2.987925778e-06 -6.588158849e-06 -2.894198655e-05 -2.114704673e-07 5.178513845e-07 -1.38604397e-05 7.634472449e-06 3.547519603e-06 -7.591412377e-08 1.82194956e-07 -1.561214562e-06 1.513012897e-06 -2.103277986e-05 -1.091691495e-07 2.005639116e-07 -3.455573794e-08 -1.433041372e-06 3.240310066e-06 -1.107767023e-07 2.111335136e-07 -3.787566633e-06 -1.450862244e-06 3.401642828e-06 -6.484618255e-08 1.422739374e-07 -1.8597724e-06 5.343369073e-07 -1.639875711e-06 --0.007309033276 -0.03351583095 -0.0116481402 -0.0006491278137 -0.0004139888794 -0.0002729211173 -5.713761523e-05 -1.865601641e-05 -8.306729322e-06 -8.090293663e-06 -2.497489991e-06 -1.243062761e-10 -1.669305945e-06 0.008824025533 0.02643610119 -0.01083708186 0.007127972368 -0.0002015704928 -0.001472589974 3.52602457e-05 0.001383652854 -0.012723685 9.534365804e-06 3.826563704e-05 -0.006101755403 1.860833168e-06 2.007588263e-06 -6.727936318e-05 3.881414542e-05 -0.0001664800759 5.311607262e-05 -5.181984788e-06 1.138595806e-05 -0.0003341989262 2.281908464e-07 1.34363654e-06 -1.518380807e-06 1.903223607e-07 5.064664436e-06 1.880777861e-06 -1.019474052e-09 1.599936591e-06 -3.533598973e-05 5.748146443e-07 4.822457239e-07 6.399961757e-07 1.620823302e-07 1.62219409e-06 -1.561135577e-06 6.555197633e-07 7.19730981e-07 -6.279307449e-06 -0.001052047141 0.001981381116 -0.02382408269 0.01743032163 0.01255967159 -0.0001543600441 0.0002638832136 0.0007046304503 0.005439314234 0.009708251787 -9.629451975e-06 2.841073118e-05 -0.002467337713 0.0001825344565 0.005110410398 -0.0002237562978 0.0003479999217 2.277621912e-05 -6.304443036e-06 -0.00499859777 -1.100354908e-07 1.731155665e-07 8.419299432e-07 -7.727627855e-08 -0.001078925255 1.260654633e-07 2.336996832e-07 -6.615282162e-05 3.786858867e-05 4.556903232e-05 -1.571098158e-08 4.227487805e-08 -6.622179408e-08 -8.599514848e-08 -0.0001762966552 -8.318324608e-08 2.526758443e-07 3.053245294e-06 -5.948137315e-06 -4.100804742e-05 -1.551847443e-07 4.39096653e-07 -7.739584593e-06 2.137389555e-06 -8.743514916e-06 -4.853235563e-08 1.303457967e-07 -1.1166397e-06 7.158919453e-07 -1.418545147e-05 -9.371821958e-08 1.783447843e-07 -2.040717917e-07 -6.366425937e-07 2.630808778e-06 -8.512647476e-08 1.775622591e-07 2.306424563e-07 1.88373117e-06 -5.72038406e-06 -4.911464106e-08 1.18556225e-07 -2.416040907e-06 5.322408812e-08 2.739003675e-07 -0 0 0 0 0 0 0 0 0 0 0 0 0 0.002844516977 0.01141801215 0.3387986475 0.2935120895 0.003180898005 0.005046764789 0.1812229095 0.003737028347 0.00186745452 0.07646296995 0.002469190409 0.000453876263 0.01015828829 0.03216028628 8.747877854e-06 0.000512693816 8.393900857e-05 0.01628023611 9.897270714e-05 0.0002037311586 0.00989031376 1.429522318e-07 0.0006742848012 0.003158620628 0.0007019205416 0.001933335475 6.036819655e-05 0.0007775659391 2.664557295e-05 7.562556846e-06 0.0001383749563 0.0005156330136 4.186803837e-07 7.624459313e-07 0.0001153096265 3.948073149e-06 2.829972916e-06 2.348113199e-06 0.0001351650298 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1.448862949e-05 7.759497615e-05 4.067675575e-05 7.321516464e-06 4.152338407e-09 4.865605538e-07 4.690278275e-07 1.904138642e-08 4.383382734e-10 3.581248937e-08 1.248910522e-09 2.469997411e-09 3.482048259e-09 0.01750049414 0.2396720762 0.0003051271771 0.09527299169 0.0001690889359 0.005331125326 0.02000311808 0.001073149659 2.435014507e-05 0.0002032073611 2.827891746e-06 2.069647629e-05 2.552510986e-08 7.647461977e-07 3.005781364e-06 6.617545425e-05 2.869276224e-05 0.0002761271346 1.129746411e-06 7.257133324e-08 4.987398387e-07 3.773575338e-05 1.123295255e-07 7.561887702e-07 1.657446946e-06 4.040945974e-05 3.155095401e-07 3.482354546e-07 1.193181118e-05 1.353303941e-07 2.60949063e-08 2.167611787e-07 2.060888963e-05 6.451665058e-07 1.484294521e-05 5.151957904e-08 5.981100658e-07 1.050089135e-05 2.487461739e-07 0.003767204982 0.002400215711 3.509687409e-05 0.004811369331 0.1435959494 0.000105184341 0.001282069586 0.0004192646367 0.1147769203 0.002360175178 1.019076845e-05 6.668083487e-05 1.225183251e-05 0.04652801471 0.001385618405 1.313594715e-05 0.0008978948589 5.335936899e-05 0.004998966347 9.367572902e-06 2.55157611e-06 1.185345615e-05 1.067892154e-05 0.0004702529573 5.427617755e-06 5.602921009e-09 4.913971576e-11 2.255809735e-06 0.0001894170347 2.029525867e-06 2.724583187e-06 2.418760465e-05 6.238421581e-06 5.000794305e-07 8.960263143e-09 2.341632839e-06 1.011810027e-06 6.785597645e-09 8.362157455e-05 2.927602615e-08 1.756112504e-07 5.156739368e-07 2.192712513e-07 8.856039487e-06 2.530223374e-07 5.617782065e-08 2.518387112e-07 4.83907755e-08 4.758015093e-08 4.097834538e-06 6.963637115e-07 2.543962591e-08 1.495467542e-08 1.502308326e-05 1.153617622e-06 3.194115253e-07 7.105054967e-08 4.977336445e-07 5.002105917e-06 1.30164574e-08 1.623290508e-07 2.057204175e-07 5.775994811e-09 1.100487102e-07 5.861039072e-06 -0.04693487042 0.1927616284 0.0479897764 0.0003754050424 0.004304508962 0.0009960748957 2.574152517e-05 0.0002854890578 1.974495981e-05 6.435741084e-06 3.796109463e-05 7.359179659e-07 4.160270877e-06 0.019387001 4.15193843e-05 0.05225782793 1.018907327e-05 0.002703506544 0.05901278463 3.265441418e-06 0.0004425648839 0.07858337177 3.02174196e-06 0.000133481814 0.02280051722 7.091246456e-06 1.843025013e-10 0.0003892137407 4.936583808e-05 2.24976419e-06 0.001503694872 4.381374144e-06 6.958838151e-09 0.001274548581 2.603383987e-09 1.948750656e-06 0.0001081995023 2.700359164e-05 2.393095703e-06 4.669739115e-11 5.642202646e-07 1.355525138e-08 0.0001555143712 3.864231894e-07 1.894786128e-08 4.803936469e-05 4.055945748e-07 7.940038126e-08 6.60911152e-06 7.914480711e-07 1.183619788e-12 3.549043978e-05 1.316135915e-06 0.0005208971712 0.1117165131 0.02158147534 0.0001462695122 5.941731341e-06 4.278967212e-05 0.001240060371 4.735059145e-05 0.008707455984 5.907908386e-08 1.532291323e-05 4.580310509e-06 0.001891121685 0.02436951692 1.975180243e-08 2.351407714e-07 3.202385428e-07 1.91424629e-07 0.02975388365 2.68204302e-08 3.313158875e-06 6.916562924e-06 3.672300389e-08 0.002294603199 2.239904895e-09 8.292620115e-07 0.0001015980143 2.614427491e-05 2.281664752e-07 2.373173163e-09 4.172003912e-08 1.441836788e-07 1.45329366e-06 0.001607683519 2.651651309e-10 2.788145258e-08 4.658386326e-07 9.674126962e-06 4.57857543e-05 1.44842216e-10 1.467013163e-07 1.630448207e-06 4.817501677e-06 1.471264089e-08 1.862533961e-10 1.148819606e-07 6.869584722e-10 7.451801124e-08 0.0001788639268 1.80443367e-09 4.314531011e-08 2.617996271e-06 1.387105511e-06 6.307913773e-08 1.012526942e-10 5.627102449e-08 1.028457502e-05 1.445143868e-06 6.424102406e-08 6.613762374e-11 5.792530443e-08 6.145874791e-08 2.197010411e-07 3.262713334e-05 -0.01018204073 0.04497548462 0.01402113396 0.0004941035454 0.0007246598731 0.0003301865236 4.291472068e-05 4.052033697e-05 9.968860014e-06 6.716495222e-06 5.487952429e-06 9.723847359e-10 1.758294545e-06 8.398492699e-05 0.1776696438 0.01725492378 0.04678256292 0.0002545971352 0.0116484344 0.005373100619 0.0002940130091 0.01768100539 0.0003086606585 5.188869493e-06 0.007150241757 6.954795929e-07 4.725548093e-05 9.233184878e-06 2.474304204e-05 0.0003053467561 8.153951874e-05 1.648052574e-06 3.833951643e-05 0.0004143729327 1.04852697e-05 2.87598842e-07 3.366167478e-07 1.604771324e-06 3.62493567e-07 3.305852845e-05 3.121449876e-08 1.686404213e-05 5.043462888e-05 3.265560227e-08 1.005540422e-05 5.803105836e-06 1.177613125e-08 1.030701461e-05 5.999445556e-06 3.634806145e-09 1.016307864e-05 1.017289336e-05 0.002481552829 0.001672355602 0.02692113674 0.0004014106313 0.141670097 0.0002033964098 0.0001607237382 0.003020108596 0.08102497768 0.0001684003598 0.000139022967 4.314783465e-05 0.02118661113 4.045780063e-06 0.00432976631 0.0001699152073 0.0002058200433 3.559561554e-05 1.245507422e-06 0.006972267243 3.523294202e-06 2.54922003e-07 6.240208304e-07 1.923903662e-05 0.001104791678 2.052917165e-06 8.895675801e-07 4.191390288e-06 5.018807816e-08 0.0003616632239 8.356771521e-09 7.73529793e-09 7.760932095e-08 1.03178866e-07 0.0003021572286 5.239114267e-07 2.405202494e-08 6.885181433e-06 2.385754127e-06 4.754392365e-05 1.065174358e-06 3.071967975e-07 9.266752307e-06 2.163821485e-06 3.755525019e-05 3.02706414e-07 1.402918674e-07 2.357547918e-07 4.892182142e-06 3.203789825e-05 2.502684732e-07 1.336604025e-07 1.172752243e-07 2.194653808e-07 9.026475374e-06 2.741400194e-07 1.445209731e-07 4.703769703e-06 1.904793323e-07 1.122649217e-05 2.36439545e-07 9.414791081e-08 3.46162429e-07 7.945937791e-07 1.110846314e-05 -0.009757038583 0.04474124598 0.01554943712 0.0008665393746 0.0005526456532 0.0003643302432 7.627464471e-05 2.490445249e-05 1.108889171e-05 1.079996553e-05 3.333971167e-06 1.659400206e-10 2.228404482e-06 0.0003794387675 0.1818511156 0.0187689767 0.0522193822 6.387008582e-07 0.00940313164 0.006845818301 0.0002420722192 0.0169787014 0.0001688705996 1.043050731e-05 0.008102966931 5.614654738e-08 4.373341693e-05 0.0001002673065 0.0001253978772 9.802786005e-05 0.0001357731669 8.200548457e-07 2.988493901e-05 0.0004478918229 1.103552955e-05 1.309687302e-07 3.291914233e-06 2.282062317e-08 6.661097054e-07 3.532657702e-05 4.672966754e-14 1.549673775e-05 5.110596342e-05 2.250109008e-08 1.025393876e-05 3.551648186e-06 1.530229776e-09 1.243555021e-05 5.273740406e-06 3.364212099e-08 9.793191467e-06 9.86768425e-06 0.003118568038 0.001207441434 0.02790559346 0.002040515172 0.1355725687 0.0003351877554 0.0001106781561 0.003336546976 0.08325153611 0.0009801345515 0.0001517467443 2.159396513e-05 0.001387340971 0.02495112868 0.0010529216 0.0005546532795 0.0001458587978 0.0001166094626 4.950730018e-07 0.006740420791 1.787665567e-07 1.059706517e-07 9.528237407e-07 2.460315404e-06 0.001438312644 2.0934529e-06 4.697707661e-07 1.25855692e-05 1.737302121e-05 0.000392810633 2.658931129e-07 7.090081895e-09 9.001823931e-07 4.499777651e-09 0.0002358545569 6.97850624e-07 8.307760915e-08 1.269639445e-05 1.37392548e-06 6.421912348e-05 1.14533366e-06 2.302101759e-07 1.174175265e-06 5.871360655e-06 5.388751476e-05 2.780335021e-07 8.456492223e-08 1.528229936e-07 3.90990273e-06 2.1801248e-05 3.207676491e-07 8.88609323e-08 2.989422179e-07 3.820928703e-08 9.980770244e-06 3.179190577e-07 9.743290995e-08 5.018487078e-09 9.844544529e-06 7.476819036e-06 2.534771362e-07 6.645459271e-08 6.40876501e-07 1.878099678e-06 7.684679882e-06 -0 0 0 0 0 0 0 0 0 0 0 0 0 -0.00162377554 -0.06231295818 0.06393673373 0.03490535829 -0.03057409461 -0.004331263676 0.02742993869 -0.02605538145 -0.001374557241 0.01407197436 -0.01374992348 -0.0003220508829 0.01807441456 -0.01808002831 5.613747782e-06 -0.0005455728726 -0.00116311768 0.001708690552 -8.203563427e-05 -0.001419968441 0.001502004076 7.9245632e-07 -0.001458716866 0.00145792441 -1.800967524e-06 0.0003989897321 -0.0003971887646 0.0001495623572 -0.0001440748064 -5.487550815e-06 0.0002670745877 -0.0002674110123 3.36424614e-07 -9.522323699e-06 1.033593098e-05 -8.136072782e-07 -2.551444622e-06 -1.780288766e-05 2.035433228e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2.088996375e-06 1.11877817e-05 5.864847006e-06 1.055629268e-06 5.986915383e-10 7.015316621e-08 6.762526655e-08 2.745420967e-09 6.320039204e-11 5.163508426e-09 1.800701408e-10 3.561286207e-10 5.020479124e-10 -0.06480393144 0.06485633946 -6.006866945e-05 0.006622421329 -0.004094429367 -0.002533307184 0.004634081455 -0.004634464194 2.240771473e-06 2.405899665e-05 -2.401485831e-05 2.83551221e-06 -1.400024146e-07 1.398588877e-07 4.330639896e-07 -8.759926811e-05 8.554312223e-05 2.054280303e-06 2.850977795e-07 -2.860251715e-07 7.323076069e-08 2.201159864e-06 -2.075118246e-06 -1.075008666e-07 -8.204088103e-06 8.236688388e-06 -1.882954941e-08 -2.047625968e-06 2.063886701e-06 -1.376803129e-08 -3.244726177e-09 -2.115252783e-06 2.117352087e-06 -3.097537469e-06 3.100086333e-06 4.580215756e-10 -2.529279125e-06 2.587464723e-06 -5.80597372e-08 0.002894446125 -0.002769958927 4.658844049e-07 -0.02635873072 0.02623269368 0.0003730808155 -0.0003712116662 -9.739636075e-05 0.01657477215 -0.01648413512 1.661527158e-05 -8.888765757e-06 -4.818319457e-06 0.008030384045 -0.008035915937 0.0001162726992 -0.0001224896836 -0.000509680475 0.0005157590346 8.95278414e-07 4.623836706e-06 -3.916964916e-06 -7.131061799e-05 7.068821736e-05 5.370868358e-07 -4.98676799e-08 -1.753461389e-09 -2.067217065e-05 2.074434301e-05 1.961420363e-07 8.952438246e-06 -9.95496333e-06 8.736755617e-07 1.313808883e-07 -4.368594956e-09 -1.43467353e-06 1.493326109e-06 8.478031542e-09 -1.631071763e-06 1.566922649e-06 2.755623162e-07 -2.553814111e-07 -1.409976935e-06 1.396124212e-06 1.909350235e-08 1.081827993e-07 -1.001019631e-07 -9.957240421e-09 -4.470589946e-07 4.4921265e-07 1.375758547e-07 -1.258101268e-07 -3.115009263e-09 4.166129449e-06 -4.175159921e-06 1.481486199e-07 -1.407979806e-07 -1.584487231e-06 1.576478448e-06 2.735064169e-09 1.710803789e-07 -1.616627619e-07 -2.54833005e-09 -8.077543575e-07 8.006180754e-07 --1.326267181e-05 -5.446982579e-05 -1.356076301e-05 -1.060804862e-07 -1.216351279e-06 -2.814669419e-07 -7.273939339e-09 -8.067237954e-08 -5.57945339e-09 -1.818586503e-09 -1.072689741e-08 -2.079528158e-10 -1.175593046e-09 -0.003398406741 0.003006693155 0.0004331526636 0.000724235533 -0.00126703972 0.0005400775172 -0.0001209966777 0.0001234419885 -2.350044907e-05 4.481689033e-05 -3.063781198e-05 -2.04707115e-05 1.603992118e-08 9.721599775e-08 -2.107518713e-07 -7.157603564e-06 1.860415002e-05 -1.184224758e-05 -2.892991809e-06 7.392100271e-07 1.815114114e-06 1.936916262e-07 -1.752654656e-07 -4.547559658e-08 -7.867884919e-08 3.937891964e-08 4.132973116e-08 -2.422070199e-07 -6.22376102e-07 8.285806744e-07 -2.21694149e-07 -5.569504973e-07 7.696207758e-07 -1.211309004e-07 -1.162261979e-06 1.286276734e-06 -1.868868847e-07 4.168483161e-09 1.766271127e-07 7.750736634e-05 -3.186917778e-05 -0.0007125801256 -0.004537386336 0.005220688451 -4.440984907e-05 3.845466094e-05 0.0002932984686 0.002148869316 -0.002411181964 -3.604695609e-06 8.770507937e-06 0.0003129087435 -0.0003065443129 -1.283835946e-05 -4.855622831e-07 3.135952008e-07 -4.026730273e-06 3.774752718e-07 -4.56872174e-06 -8.088648288e-07 8.723555908e-07 -1.610679422e-06 1.635818637e-06 -7.122839426e-07 -8.565058635e-08 4.554472658e-07 2.401385559e-06 -1.220273179e-05 9.509776424e-06 -2.789809692e-08 3.833718307e-08 -1.325881428e-06 1.082247128e-06 -2.177859133e-07 9.824607122e-09 -7.787222237e-09 -1.686506488e-06 1.53808725e-06 1.324686571e-07 -1.462356155e-08 3.018025046e-08 -2.912615081e-08 -7.997581905e-07 8.249885418e-07 -1.08812304e-08 2.960082775e-08 -8.021064548e-09 -1.058054327e-06 1.001214314e-06 -2.654636762e-08 3.315326274e-08 -1.511497281e-07 -6.742535613e-07 8.208652736e-07 -6.85536719e-09 1.362092433e-08 -1.769290805e-07 -7.948739921e-07 9.660504763e-07 -5.104867942e-09 1.214915723e-08 4.409754002e-08 -1.493750977e-06 1.436302386e-06 -0.01824220201 0.0805783337 0.02512034325 0.0008852387185 0.001298304745 0.0005915640512 7.688625734e-05 7.259646588e-05 1.786026622e-05 1.203331099e-05 9.832246744e-06 1.742130016e-09 3.150170495e-06 -0.001649987236 -0.08643078348 0.02849196416 -0.02503822496 -0.001175271686 0.01898568913 -0.003103056846 0.000408474929 0.03167054674 -0.0001163204481 2.331398313e-05 0.0128318963 1.770818377e-06 -2.62432328e-05 1.596627572e-05 5.981074793e-05 4.485530716e-05 0.000235472225 -4.021912521e-06 -1.91616038e-05 0.0007389763628 -5.649109324e-06 6.614846167e-07 6.262052095e-07 2.741452961e-06 1.141106054e-06 -1.779989728e-05 -1.595232912e-07 -1.095624187e-05 8.830232328e-05 -1.727041283e-07 -7.323316242e-06 7.467357186e-06 -9.617911258e-08 -8.347648226e-06 5.657689752e-06 5.577487576e-08 -5.892517385e-06 1.765693973e-05 -0.001936718718 0.0001585004831 0.04781906475 0.003424537113 -0.068893031 -0.0001909434488 1.188856279e-05 0.003097079753 -0.04255196697 0.001404923019 -8.483964184e-05 2.730610839e-06 -0.0114649167 6.75779401e-05 0.007683799312 -0.0001435779227 -6.68125391e-05 -2.420485852e-05 -5.016958588e-06 0.01246484702 -1.980227074e-06 3.735005527e-07 2.125983226e-06 -7.526938215e-06 0.001980690766 -1.096488025e-06 -2.434405987e-07 1.096696896e-05 -2.168159232e-06 -0.000153763929 -6.497518753e-09 2.759979108e-09 -9.280175871e-08 1.496526367e-07 0.0005413161043 -2.915279494e-07 3.669343461e-08 -6.519984522e-06 1.679023663e-06 8.343311547e-05 -6.850453021e-07 1.335530872e-07 1.69096687e-05 6.315179334e-06 -1.694139915e-05 -2.01693867e-07 5.920072221e-08 -8.935341757e-09 -4.547323689e-06 5.538285574e-05 -1.849636634e-07 3.147424099e-09 1.464646894e-07 -7.115780087e-07 -3.757574703e-06 -1.99582072e-07 2.838634075e-08 9.091074011e-06 -6.967942491e-07 -4.027107143e-06 -1.597838453e-07 3.362688441e-08 3.230030163e-07 -3.087614101e-06 9.869164827e-06 --0.01748639118 -0.08018446608 -0.02786742493 -0.00155299647 -0.0009904417201 -0.0006529461884 -0.000136698063 -4.463331724e-05 -1.987331469e-05 -1.935550632e-05 -5.975083887e-06 -2.973947564e-10 -3.993706917e-06 -0.003249834809 0.09328021568 -0.03159981964 0.02857336326 5.105882809e-05 -0.01557652851 0.003818174704 -0.0004468098498 -0.03041730325 7.387912771e-05 -2.637773687e-05 -0.01453119962 -2.046824949e-07 2.618178552e-05 -0.0001776836955 -0.0002176822485 -8.882516991e-05 0.0001281516868 2.431776419e-06 1.407266177e-05 -0.0008012112301 6.205503968e-06 -2.823931672e-07 -5.795243303e-06 -1.751719601e-08 -1.794984978e-06 1.888435935e-05 1.382939578e-10 9.654792341e-06 -9.036870314e-05 -1.09892328e-07 7.400771453e-06 -3.230780687e-06 -3.501126728e-08 8.152739519e-06 -7.583878161e-06 -1.352811427e-07 5.698355758e-06 -1.729571431e-05 0.002213470272 -0.0003301984424 -0.04897274462 -0.007003080899 0.07106746903 0.000251597986 -4.008116331e-05 -0.00451847988 0.04556528613 -0.003070937265 8.909966863e-05 -5.08422607e-06 -0.00333689347 0.01234697911 -0.002289085054 0.0004032435307 -2.688576081e-05 5.778461895e-05 1.58769992e-06 -0.01205790066 1.453951493e-07 1.276192571e-08 -1.92524906e-06 6.140807131e-07 -0.002578125844 1.12281779e-06 -3.462616822e-08 -2.065085136e-05 -7.141692118e-05 0.0001331930647 1.567829185e-07 -3.132345755e-09 4.814715021e-07 -1.490821713e-08 -0.0004226992193 4.264499108e-07 -6.822043276e-08 9.362134547e-06 -9.118732075e-07 -0.0001134379446 7.075240937e-07 -1.534934636e-07 -1.660550148e-06 1.779504023e-05 -5.033046652e-05 1.768397299e-07 -5.487682036e-08 -1.109312692e-07 3.254383363e-06 -3.796622346e-05 2.183882167e-07 -1.496735909e-08 -5.032031642e-07 2.877748792e-07 4.497156526e-06 2.137794861e-07 -3.989079495e-08 -1.011683349e-07 4.798608316e-06 -1.327732964e-05 1.630513155e-07 -3.680404806e-08 -1.013009801e-06 -5.22677944e-06 1.282078471e-06 -0 0 0 0 0 0 0 0 0 0 0 0 0 -0.02382387374 0.00324622331 0.02580902879 0.02476437007 0.002350210378 -0.02349750896 0.007730911232 0.0008991013958 -0.007205833271 0.0005086882438 7.245901836e-05 -0.0004611115965 1.855111421e-06 -8.329018398e-06 -1.792124447e-05 0.0005060770889 -4.221096898e-05 -0.0005228076777 4.777176678e-05 -6.589063365e-06 -5.076660106e-05 -1.777025584e-06 -4.129273778e-06 2.088498994e-07 0.0001517317237 -0.0001404315838 -4.610608996e-06 -4.090984122e-06 -6.524986626e-07 3.937846094e-06 -9.213637726e-07 2.907378046e-07 2.787818263e-06 1.490666776e-07 5.386196408e-06 -6.215419728e-06 -3.194418588e-06 4.350470165e-07 3.209048417e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.002676733398 0.004884092499 0.002316878186 0.000537169852 -8.336880082e-06 -4.933089298e-05 -3.739883502e-05 -4.075265716e-06 5.435070948e-07 2.439683709e-06 4.507305947e-07 2.595190234e-07 -3.661227982e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.09594540763 0.01685534728 0.01221939591 0.0001217713775 0.00168626799 -0.0003715984529 2.016048171e-05 0.0001037620236 -3.419200244e-05 1.543278856e-05 2.890457769e-05 3.908052489e-06 9.032492139e-06 -0.04139967265 -0.0001071120687 0.1064159904 -7.564639645e-06 -0.00147056682 -0.01365156094 4.809842108e-06 0.0006179004767 0.01360047549 -2.539470068e-06 -0.0001809472463 0.004137458164 4.578396791e-05 -6.335886743e-10 0.0005319568184 -3.827815903e-05 -9.162144023e-07 -0.0002920650162 -5.259158216e-06 -3.43579252e-08 0.0001434552982 -7.344891081e-09 -6.87926436e-06 8.872281177e-05 -4.880095849e-05 -7.591102382e-06 1.108716063e-10 -3.255969023e-06 3.836408004e-08 7.609258069e-05 -2.161253734e-06 5.898399113e-08 3.259573114e-05 -2.838206515e-06 1.990259575e-07 1.080666657e-05 -3.070401971e-06 -2.405674908e-10 3.037967201e-05 2.438069465e-06 0.001268775277 0.09276486369 -0.05005999406 -0.0002679814963 1.825876749e-05 0.0001449118056 0.002375877549 -7.482878349e-05 -0.01061633342 1.969650425e-07 2.880578671e-05 1.786156495e-06 0.0008319721765 0.002431839318 6.487236194e-08 1.742034933e-06 -2.177110436e-06 -1.495605969e-05 0.004588508829 8.747027441e-08 8.579676001e-06 4.039018546e-05 2.087191292e-07 -0.0005768677847 1.609275759e-09 1.194367452e-07 -6.071058123e-06 -3.134049404e-06 -3.07206248e-08 7.734330008e-09 1.039954e-07 -3.822620337e-07 -4.69161947e-06 0.0001217598484 8.086371054e-10 8.531275214e-08 4.355111772e-07 1.147404924e-05 -6.228173985e-05 4.893001752e-10 3.807616907e-07 6.213634987e-06 -1.266084599e-05 -3.38288228e-08 6.439546283e-10 1.686980873e-07 -1.098178259e-07 1.018656067e-07 3.460967119e-05 4.943849414e-09 1.042529017e-07 5.363968971e-06 -4.203882146e-06 -1.308796025e-07 3.66891902e-10 1.34326079e-07 9.819399448e-06 -4.776428157e-06 -1.610198287e-07 2.365388601e-10 1.114506653e-07 1.017371085e-06 1.713573311e-07 1.046389283e-05 -0.04586155795 -0.004839693972 -0.007054391976 -0.0002456013128 -0.0007100223794 0.0001729086054 -2.049133284e-05 -4.247413555e-05 2.448600612e-05 -1.425581202e-05 -1.010358625e-05 -1.416563226e-07 -5.808762619e-06 -0.002752137801 0.03174167716 -0.06048255824 0.001092295294 -0.0005482081269 0.008407654959 4.909275513e-05 -0.0004870870493 -0.00598302465 5.639870813e-05 4.353829945e-05 -0.00274084698 -1.448531027e-05 -8.37881675e-06 7.235442089e-05 2.220861542e-05 3.224991314e-05 3.419394543e-05 -3.250867955e-06 6.61454708e-06 -8.680683093e-05 7.286792858e-07 2.678108135e-06 -5.413192189e-06 1.126122449e-05 2.565480012e-06 1.594265468e-06 -6.8493613e-07 2.815603995e-06 -3.803510468e-05 -6.709381245e-07 4.060058873e-06 -1.003402687e-05 -4.619680018e-07 5.167564356e-06 -9.870099149e-06 2.048419828e-07 1.690579451e-06 -1.501782619e-05 0.001184745374 -0.002123384159 -0.04377343659 0.006703449333 0.02255991757 0.0001859276217 -0.0003029867998 -0.003899716021 0.00666708211 0.001697113537 1.424232279e-05 -3.059000492e-05 -0.0001554300075 -2.145704782e-05 -0.0007897844472 0.0001166654461 -0.0002284062205 -2.52524643e-05 3.731528427e-05 -0.002325414187 -7.56732725e-08 -9.320751764e-07 -9.734909274e-06 -7.798033806e-06 0.0003048234843 -1.692755686e-07 2.874895358e-07 2.196546496e-06 2.079470646e-07 -3.868547127e-06 4.311110035e-09 -5.802227538e-09 -1.602482233e-07 1.624192346e-06 -6.37000234e-05 -1.76118451e-08 -1.118511268e-07 3.867239658e-06 -1.051687814e-05 5.289593726e-05 1.941685676e-07 -4.555961257e-07 -1.558484757e-05 5.541301019e-06 3.143764958e-06 7.079597145e-08 -1.43118435e-07 -1.724272959e-06 1.545722917e-06 -1.101913388e-05 1.064921494e-07 -1.918853432e-07 1.004890409e-06 -1.753968296e-06 3.993742259e-06 1.071592178e-07 -2.028453255e-07 -6.388582037e-06 -1.700286146e-06 4.151657549e-06 6.097500839e-08 -1.278576303e-07 -2.297807531e-06 7.814144865e-07 -2.335940853e-06 -0.04538818136 -0.003346176443 -0.007590042865 -0.0003895897915 -0.0006220623591 0.0001620722504 -2.523514489e-05 -3.459710491e-05 2.568297531e-05 -1.721785816e-05 -7.655231548e-06 5.852719416e-08 -6.482946637e-06 0.006057391377 0.02326534052 -0.06261959785 0.000703187845 -2.774862046e-05 0.008567025331 -5.266355105e-05 -0.000427608147 -0.005611242343 2.621725911e-05 6.735657144e-05 -0.003102723723 -4.053606805e-06 -6.977845057e-06 0.0002232244508 5.339760045e-05 8.160169939e-06 -3.12308009e-06 -2.480859129e-06 5.686240176e-06 -9.601175452e-05 4.008806647e-07 1.684931513e-06 1.781440226e-05 1.323081719e-06 2.868231418e-06 1.122057158e-06 -8.097701327e-10 1.613056714e-06 -3.614446532e-05 6.461510257e-07 3.399236264e-06 -6.855315907e-06 1.571776366e-07 3.051485075e-06 -1.016680807e-05 6.240896737e-07 1.007283366e-06 -1.41339149e-05 0.0009779732835 -0.001889107376 -0.04322158641 0.01532583036 0.01422247242 0.0001499493704 -0.0002898859478 -0.004209804909 0.004024031988 0.004369431309 6.736142257e-06 -1.632602062e-05 -0.000198312234 -0.0001372997837 -0.0003459160666 0.0002160318138 -0.0003830941333 -2.089962045e-05 1.536672122e-05 -0.002315435844 1.082711525e-07 -2.108587285e-07 -1.058179354e-05 -1.432411629e-06 0.0002976143174 -1.700203973e-07 3.61257147e-07 7.602292768e-06 -1.274335255e-06 -2.733637831e-06 9.611426173e-09 -5.024945907e-08 1.47501014e-07 3.73526161e-07 -6.168844993e-05 6.984667183e-08 -2.397848155e-07 3.851626902e-06 -8.584926692e-06 5.86161684e-05 1.336282226e-07 -3.634364929e-07 -6.142912504e-06 2.133223166e-06 -7.752959791e-06 4.291456431e-08 -1.002695869e-07 -1.336339744e-06 8.217478905e-07 -7.931290261e-06 8.883172298e-08 -1.709435249e-07 1.54668176e-06 -7.720855498e-07 3.417250983e-06 7.970132837e-08 -1.682276705e-07 2.82484264e-07 2.600760365e-06 -7.93452495e-06 4.422006311e-08 -1.051683854e-07 -3.104852228e-06 -2.568324415e-07 3.931350055e-07 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.0003519237103 0.0004107514529 4.98487977e-05 -6.27370375e-06 -4.919729628e-08 -1.690188055e-07 -3.454348043e-07 1.356553707e-07 -1.487077529e-09 -8.844377284e-08 1.313951515e-08 -1.116783067e-08 -1.679660211e-08 -0.003285942227 0.001158845683 0.001658106329 -0.001597931334 0.01305515624 -0.01139272691 -7.329155421e-06 2.959540947e-05 4.907480875e-05 -2.239399038e-08 8.476630709e-08 1.738666885e-06 1.488951646e-09 -1.041573217e-09 1.798291446e-06 6.856993955e-05 -6.868413232e-05 5.808448018e-07 -5.194614627e-09 2.332390008e-08 -1.216322411e-06 -4.615738755e-08 3.411960497e-07 -2.044437787e-07 8.313071576e-08 -2.788314476e-08 -2.265639625e-08 -4.150615433e-07 1.551272546e-07 1.652393292e-07 -2.371980124e-08 4.318708043e-08 -1.834259441e-08 -5.22437377e-08 1.842443478e-08 -3.161205289e-09 -3.719592564e-07 1.564816428e-07 1.976385424e-07 -5.348561755e-07 2.970115619e-05 -1.81180671e-05 -0.0001949457398 -5.493147503e-05 6.373053948e-06 -1.056645492e-05 0.0009210996191 0.0004414542949 -0.001453760176 1.910312806e-08 5.448807557e-07 0.0001011171605 4.636286549e-05 -0.0001434069609 -3.238601142e-08 -4.855845878e-08 -2.078451148e-07 3.991606045e-08 -7.05021388e-07 -4.082882105e-10 1.570207679e-08 -4.722581648e-07 1.31552374e-07 -9.953042421e-07 6.501875781e-11 4.502780187e-09 2.921392453e-07 -8.625921535e-08 6.681001941e-07 3.515257642e-08 -5.91710811e-07 -1.883377209e-08 1.17982894e-08 5.861647909e-07 -3.331462366e-09 2.009499062e-08 -5.190339067e-07 1.524486174e-08 3.180448062e-07 -4.569144155e-11 1.714962249e-09 -7.020481503e-08 2.303897832e-08 -7.427398579e-08 1.046375575e-10 1.755577139e-09 -1.170658615e-07 1.80404232e-07 -4.260721368e-08 -1.198628264e-13 -3.045554218e-12 -6.723298351e-11 -3.429526649e-11 1.282915711e-10 1.861500214e-11 8.745797448e-10 1.026184828e-08 -4.616598007e-09 -2.923004755e-08 -7.104866133e-10 3.033513282e-09 -3.000808238e-08 3.55319917e-08 -1.095341083e-08 -3.658718834e-05 2.659207517e-05 -4.009341164e-07 -1.433404016e-07 -1.101498745e-07 5.77133833e-08 1.971592603e-09 -2.871186557e-08 5.576486525e-09 -1.025528921e-09 -5.247794233e-09 -6.400079538e-10 -1.199736818e-09 0.0003142732047 -0.001379075409 0.00103019339 0.001256745959 -0.0005629852153 -0.0006733156808 7.777113563e-08 -3.464876341e-07 4.884049713e-06 1.744086541e-06 -7.021115944e-07 -1.521856357e-06 1.704969085e-09 6.246194793e-08 -1.346460071e-07 -9.423589505e-08 4.274620792e-07 -3.458331884e-07 -1.15769316e-09 3.946056508e-09 -2.32711964e-09 3.812454376e-08 -2.478550573e-08 -4.094681302e-08 2.445273193e-08 2.620787779e-09 -2.474699967e-08 4.123033355e-08 -1.637870263e-07 1.164089545e-07 1.175433076e-07 -5.218718732e-07 3.973724824e-07 1.138172018e-07 -1.216758115e-06 1.101425928e-06 2.273695231e-08 -9.019973259e-08 6.386385656e-08 1.790115725e-05 -4.216499645e-06 -0.0006702254158 -0.0003724004867 0.0009987212233 -1.327792831e-06 -6.486089857e-06 0.001802712887 -0.0024475428 0.0006511717728 -5.557135737e-08 -7.480165096e-07 3.857283238e-06 -5.375846466e-06 4.98928863e-06 4.178062759e-10 -6.851647059e-09 -1.333562913e-07 5.280580599e-08 -1.035071918e-07 -6.375866033e-09 -1.331348636e-08 1.478479618e-08 -1.099500445e-08 1.77634022e-07 -4.563362239e-08 2.938191321e-07 2.303454814e-06 2.551399582e-06 -5.12915036e-06 1.39102806e-10 7.077951748e-10 -4.927665883e-08 1.541375263e-08 -3.039559649e-08 2.381906629e-11 -6.742088741e-10 1.722448521e-06 -1.601292888e-06 -1.070683147e-07 -5.165495241e-10 -3.475307939e-09 2.918115891e-08 2.774951922e-08 -5.242495466e-08 1.26970801e-10 1.899427823e-09 6.29560316e-08 -2.47318005e-07 1.73568137e-07 -2.738026681e-09 6.096599945e-09 -2.165039877e-07 -1.279329141e-07 3.399346302e-07 2.663411761e-10 8.62080838e-10 -6.885055371e-08 -4.766854707e-09 7.135327638e-08 1.142364139e-10 8.336149631e-10 5.532496572e-08 -4.110975093e-07 3.52521852e-07 -0.1101195868 0.09180458716 0.001404899039 -0.0009968631219 -0.0002799887392 0.0001475056787 1.370792936e-05 -8.113323961e-05 1.77044995e-05 -6.567021728e-06 -1.3612652e-05 -1.295958798e-07 -4.728854137e-06 0.002411393923 -0.002650789117 -0.1150712909 0.00224758409 -0.003101767257 0.05508918751 1.070573452e-06 2.461477704e-06 0.01702717649 5.492945013e-07 -1.800225216e-06 -0.001241405573 -1.762254903e-06 6.636374386e-07 6.327011848e-05 -1.345191531e-05 -3.817075085e-06 -0.0001034102374 4.70636819e-08 -1.130299211e-07 -9.44333408e-05 1.204063727e-07 -7.612384022e-07 -9.548043346e-06 -1.067770732e-07 1.063616005e-08 -2.262045889e-09 1.482155955e-07 -2.413487428e-07 -3.034371517e-05 4.904044383e-07 -1.329685191e-06 -1.005369767e-05 3.637073972e-07 -1.272893104e-06 -4.051004987e-06 1.232972345e-07 -1.153960799e-07 -1.126928686e-05 -1.945823257e-05 -1.125944886e-05 -0.08558706318 -0.002467319398 0.0002289663967 -3.183338324e-07 1.762248368e-06 -0.01199574862 -0.002531562512 0.002862766314 8.917400774e-08 2.078444928e-07 0.0001087526522 -0.000438870719 0.007501094458 1.395260688e-10 -1.700833126e-07 -8.396358254e-08 2.066311509e-07 -0.0005204127537 8.509022547e-10 1.188911817e-08 4.036460619e-07 -9.800217306e-08 0.0005241038975 2.596652829e-09 7.499168301e-10 5.65547082e-05 2.088931808e-05 -7.595560216e-06 -1.899315695e-12 -2.505146823e-10 -1.116274453e-08 -4.876095595e-08 -0.0002735909166 2.431323704e-10 6.039904053e-10 8.026245869e-07 8.744591858e-07 4.63485178e-05 3.327348277e-10 6.810563982e-09 8.766016607e-06 2.199249929e-06 -1.988301904e-07 -1.838778474e-10 -5.479252609e-09 6.091267368e-09 -4.747118061e-07 -2.962393328e-05 1.874514771e-10 -3.248521297e-10 7.425926394e-07 -3.371958815e-08 6.599274314e-08 -9.244989987e-11 -7.452379433e-10 -4.493553726e-06 6.361889271e-09 5.219456318e-08 -1.389694786e-10 -2.050844584e-09 -2.5236516e-07 -2.341800775e-06 -3.12970938e-06 --0.1088999622 -0.0971883007 -0.003196427709 0.001268443103 0.0002413391636 -0.000116424734 -1.177070081e-05 6.724454884e-05 -1.405430865e-05 9.23948476e-06 1.077970648e-05 -4.920921257e-08 5.263416591e-06 -0.00298457068 0.002255314302 0.1205781115 -0.001891690997 0.003838869723 -0.05083063928 -1.652181631e-06 -1.477036456e-06 -0.01832835658 -1.904011691e-07 1.089943581e-06 0.001030476234 8.700882526e-07 -6.906076394e-07 -0.0002043410422 8.37852963e-05 3.433745477e-05 1.251985516e-05 -4.309241074e-08 7.695017693e-08 0.0001614082313 -1.431448535e-07 7.896580461e-07 -2.585415792e-05 8.269473123e-08 -2.927197991e-07 4.788396189e-08 -1.324373102e-07 1.623973785e-07 3.674133868e-05 -6.298380038e-07 1.485949005e-06 4.923868734e-06 -2.479148131e-07 4.21559594e-07 5.463526376e-06 -1.184265006e-07 7.640651179e-08 1.094266232e-05 1.512135511e-05 3.044020096e-05 0.08281281295 0.001860872279 0.0002226443393 7.536399081e-08 -6.1258692e-06 0.01647532153 0.001516721268 -0.002756321762 -1.144073095e-07 -5.982287325e-07 -0.005976870979 0.0003584333077 -0.0007779667487 2.531106166e-09 -1.028206623e-07 1.664388498e-08 -6.367851564e-08 0.0004805547441 1.887165496e-11 -2.099660887e-10 -2.853002418e-07 1.324346709e-08 -0.000460695375 -1.915019054e-09 -7.071546184e-09 -4.375015459e-05 -0.0001293363016 1.093913419e-05 2.745731462e-10 -1.174675074e-09 -6.516921036e-09 4.442434489e-08 0.0002828012656 -1.54120347e-10 -8.088110237e-10 -2.880380937e-07 -3.038034229e-07 -3.230821253e-05 -2.365633532e-10 -7.004617421e-09 -8.38006725e-07 -4.986621979e-06 -8.380594163e-06 2.470538029e-10 8.462925821e-09 1.31898343e-07 3.130019347e-07 2.675898106e-05 -1.564826825e-10 1.654444016e-09 -1.249386076e-06 -2.578771923e-09 -1.227964449e-08 7.752480774e-11 1.173746361e-09 2.181497568e-08 6.480701518e-09 5.040711531e-06 1.605609936e-10 3.093331101e-09 8.638164995e-07 3.994720962e-06 -1.107400947e-07 -0 0 0 0 0 0 0 0 0 0 0 0 0 0.01799345834 -0.02314170501 0.005148246673 0.004113663011 -0.03711442399 0.03300076098 0.002455859289 -0.01609809545 0.01364223616 0.0009290815387 -0.005169934235 0.004240852696 -0.000556608114 0.0001661732685 0.0003904348455 0.003027101359 -0.003300663439 0.0002735620798 0.0008256760815 -0.0009561237265 0.000130447645 0.0001296865374 -9.798293098e-05 -3.170360641e-05 -3.035230701e-06 -0.0002366169605 0.0002396521912 1.251020389e-05 -6.895859167e-05 5.644838778e-05 -1.724103712e-05 3.947265868e-06 1.329377126e-05 6.280694769e-06 -1.872383992e-06 -4.408310777e-06 1.763615602e-05 -2.018104933e-05 2.544893312e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.0001067311622 0.0005716069962 0.0002996472108 5.393429113e-05 3.058839376e-08 3.584270921e-06 3.455115278e-06 1.402692575e-07 3.229039252e-09 2.638143665e-07 9.200157373e-09 1.819535066e-08 2.565067025e-08 0.002939739135 -0.002147186714 -0.001183951081 -0.0004483812069 0.002394049369 -0.002217233899 -0.000109600286 9.831198424e-05 0.0001062190373 -2.316274033e-06 6.849268553e-06 0.000142594331 1.889160641e-08 -1.562393483e-08 2.211553764e-05 0.0001412201805 -0.0001424597479 1.144251025e-06 1.025325895e-08 -6.958658185e-08 3.753462556e-06 -5.815876649e-07 3.910396252e-06 -2.381523105e-06 2.14568259e-06 -8.702197839e-07 -5.71887327e-07 7.178985953e-07 -3.074341204e-07 -2.831071408e-07 -6.711294193e-09 -4.516796476e-09 -4.729386885e-08 2.976488271e-07 -1.608931969e-07 1.687238555e-08 8.21115764e-07 -3.897540038e-07 -4.249312624e-07 -6.207427381e-05 -2.178611638e-06 2.888877686e-05 0.0004193316174 -0.0004393489448 -1.676869586e-05 1.646623842e-05 -0.0008266413931 -0.0007282308428 0.001305325253 -3.958330076e-07 3.365582525e-07 3.088106897e-05 -0.0001469676094 -1.790476944e-05 -3.294978481e-06 5.176777711e-06 8.335435491e-06 -1.256830663e-05 4.102029615e-05 -1.038915801e-07 -3.213492007e-07 1.191279236e-05 -4.717500421e-06 2.498663765e-05 5.833440782e-10 5.940313487e-08 3.733298788e-06 -1.553133698e-06 8.831156462e-06 -2.564907817e-07 1.539487976e-07 -1.837894437e-08 -2.083989244e-09 2.913707701e-08 3.344379603e-08 -8.276290044e-08 1.221906762e-06 -4.060739477e-09 -1.016196081e-06 -6.107392495e-09 -1.436130669e-08 7.799240487e-07 -2.832329845e-07 8.226242473e-07 -2.580862029e-09 3.93499934e-09 -1.390459612e-07 2.114642459e-07 -5.960708606e-08 -2.913291053e-09 -2.949315257e-09 -8.064827113e-08 -1.259704539e-07 1.930789771e-07 -3.194267914e-09 -2.763569437e-09 -3.874425787e-08 -7.279375885e-09 1.580956565e-07 -2.882086734e-09 -1.358109734e-09 4.123526813e-08 -4.969213752e-08 -9.442707074e-10 --4.323224143e-06 -1.77554922e-05 -4.420392729e-06 -3.45789842e-08 -3.964932023e-07 -9.174958829e-08 -2.371081077e-09 -2.629672089e-08 -1.81873064e-09 -5.9280341e-10 -3.496639478e-09 -6.778623844e-11 -3.832072686e-10 0.01086770412 -0.01097310918 0.0001189129236 -0.005520991608 0.005385441436 0.0001346613608 0.0003738068627 -0.0003730037722 -7.666419682e-06 -5.719280571e-05 6.190370829e-05 -6.761781985e-06 -4.012716537e-08 7.885152878e-08 -7.050505294e-08 1.091650957e-05 -6.851153923e-06 -4.194342074e-06 1.193651292e-05 -1.262919081e-05 5.822826265e-07 -4.376715662e-07 4.440463923e-07 -1.519211247e-08 -1.951845217e-08 -1.48766366e-07 1.689464712e-07 1.729321516e-06 -1.983568289e-06 2.425110797e-07 1.439563521e-06 -1.648574255e-06 2.060692295e-07 7.630247962e-07 -6.038477716e-07 -1.582369765e-07 7.846138574e-07 -8.381072608e-07 5.150783011e-08 -0.0001681847424 8.230956785e-05 -0.0002713020184 0.01255511636 -0.01219260626 0.0001360333617 -0.0001203520424 -0.000229384243 -0.007417811061 0.007639673203 1.173261315e-05 -2.039259534e-05 -0.0009749668492 0.000987230323 -4.029897459e-06 1.562514557e-06 -1.987798866e-06 -7.57483437e-06 6.750986436e-06 -1.485732059e-06 2.589342358e-06 -2.494780942e-06 4.740289459e-06 -4.805501304e-06 -2.326416319e-07 1.150193313e-07 -4.274826219e-07 2.338095522e-07 4.585895846e-05 -4.575480516e-05 8.925215854e-08 -1.003664899e-07 2.879721828e-06 -2.944545621e-06 -7.106788855e-08 -2.991813734e-08 2.655267039e-08 -1.620029576e-06 1.602604962e-06 1.625480608e-08 4.808027709e-08 -7.953786999e-08 -2.016472318e-08 2.349447333e-06 -2.294023925e-06 3.639793068e-08 -5.391611208e-08 1.247261594e-06 -1.543893909e-06 2.991097888e-07 7.485523652e-08 -8.627279653e-08 -8.360758411e-08 1.745334984e-06 -1.649635449e-06 2.376476498e-08 -3.423593286e-08 -5.997368817e-08 2.397140654e-06 -2.326365603e-06 1.752178088e-08 -2.617946227e-08 6.007082872e-07 -8.773441969e-07 2.832377802e-07 --0.01352519994 -0.05974268203 -0.0186248165 -0.0006563369189 -0.0009625938385 -0.0004385995762 -5.70052893e-05 -5.382473648e-05 -1.324202372e-05 -8.921781318e-06 -7.289860237e-06 -1.29165639e-09 -2.335610896e-06 0.07964152311 -0.01885925806 -0.01660171479 -0.00574680729 0.01753896191 -0.006433287207 0.0001323736417 0.001892867491 -0.02350870664 -1.443489128e-05 0.0001648623185 -0.009595341586 1.597790393e-05 -1.192825352e-06 -8.4784262e-06 0.0001269066384 -9.59392747e-06 -0.0003694992749 2.064744865e-05 -8.357315908e-06 -0.0005429958753 -2.088247228e-07 4.215251673e-06 -7.727674004e-07 -2.493457888e-07 1.173966667e-05 -1.171677194e-06 4.453056072e-06 -1.970602132e-06 -5.971039334e-05 3.696408652e-06 -1.658856444e-06 -2.016300646e-06 3.623890605e-06 -1.415610787e-06 -1.425715288e-07 3.337681021e-06 -8.097144683e-07 -1.129174028e-05 0.0009694510183 0.0002090828572 -0.04187710285 0.06623306327 -0.01113037713 0.0001753303412 1.975043901e-05 0.001023959997 -0.005677020786 0.03280187875 1.014757303e-05 2.858238319e-06 -0.001121499074 0.00544185579 -0.001519178992 9.953943647e-05 -6.37949522e-05 -5.753390549e-06 7.376220367e-05 -0.009167831424 -2.096741185e-09 1.537416432e-06 1.056785471e-05 -6.562793058e-07 -0.001474782205 -6.926784448e-08 -1.68962159e-07 -3.684626392e-05 0.0001787283839 -3.316986788e-05 3.419968586e-09 2.920283036e-09 1.198259697e-09 1.07021718e-07 -0.0004014984998 -3.919720643e-09 1.780215337e-07 -2.829443206e-06 -4.636552644e-06 -5.078924751e-05 1.360029455e-07 2.251346748e-07 -2.529208029e-05 2.228144187e-05 -1.600307421e-06 5.058172697e-08 7.688309506e-08 5.91715891e-08 -1.406357979e-06 -3.635867133e-05 8.068265875e-08 4.722862395e-09 -4.315656143e-08 4.64638533e-06 -1.348888313e-06 8.064872769e-08 4.147015989e-08 -7.320309189e-06 5.307412913e-06 -1.220219097e-06 4.382250185e-08 5.081609573e-08 -1.735347468e-06 -2.076313977e-06 -1.456925542e-06 -0.01309911957 0.06006647671 0.0208755899 0.001163355334 0.0007419435138 0.000489124377 0.0001024010188 3.343498113e-05 1.488717269e-05 1.449928055e-05 4.475957186e-06 2.227794994e-10 2.991700454e-06 -0.07557642442 0.01356035245 0.01824552492 0.003900278694 -0.0161138865 0.002439383027 1.966598765e-05 -0.002553906128 0.02279445148 4.171185693e-06 -9.677006834e-05 0.01094239018 -6.783675815e-06 1.201878312e-06 0.0001192257606 -6.737873586e-05 0.0001508512072 5.013445927e-05 -1.536656783e-05 5.361588211e-06 0.0005978317065 1.283163799e-07 -2.897132602e-06 2.673030212e-06 -1.460921585e-07 -1.36478969e-05 1.005398427e-06 -3.017079093e-06 9.967940218e-07 6.248326716e-05 -2.807318189e-06 3.48060435e-07 -5.821768305e-07 -3.708402406e-06 1.063509506e-06 2.244983844e-06 -2.635965272e-06 4.187892368e-07 1.100613933e-05 -0.0007467129285 -0.0005418473638 0.04180992313 -0.05982114426 0.006583810282 -0.0001158654384 -9.556308628e-05 -0.0009542375802 0.002977049085 -0.03041769331 -5.654032211e-06 -6.689210586e-06 0.005934549094 9.032653994e-05 -0.01111019478 -0.0001626751033 -6.414589176e-05 1.128652096e-05 -2.021835905e-05 0.008941963301 -8.949451677e-08 2.084811184e-08 -1.701180148e-06 -1.928771903e-08 0.001933936335 6.761486965e-08 -1.722568778e-08 0.000108545912 -0.0001556699885 1.545141236e-05 -9.263923829e-09 -1.867672853e-08 -3.541938491e-08 2.849105989e-07 0.0003159593756 -5.083249431e-08 -2.074885836e-07 2.251418178e-06 3.947773829e-06 7.243743543e-05 -9.586459335e-08 -2.927692743e-07 1.094552809e-05 6.478044079e-06 8.166366305e-06 -3.086839749e-08 -8.45854603e-08 8.10547263e-07 5.958682345e-07 2.470354085e-05 -6.380616906e-08 -3.003964015e-08 3.435097659e-07 -4.794900918e-06 1.185395373e-06 -5.724190981e-08 -7.269719927e-08 -4.649551328e-06 9.1820277e-07 1.015825372e-05 -3.1593409e-08 -6.565910384e-08 3.818946577e-06 -1.481234318e-07 4.569634255e-08 -0 0 0 0 0 0 0 0 0 0 0 0 0 -0.00162377554 -0.06231295818 0.06393673373 0.03490535829 -0.03057409461 -0.004331263676 0.02742993869 -0.02605538145 -0.001374557241 0.01407197436 -0.01374992348 -0.0003220508829 0.01807441456 -0.01808002831 5.613747782e-06 -0.0005455728726 -0.00116311768 0.001708690552 -8.203563427e-05 -0.001419968441 0.001502004076 7.9245632e-07 -0.001458716866 0.00145792441 -1.800967524e-06 0.0003989897321 -0.0003971887646 0.0001495623572 -0.0001440748064 -5.487550815e-06 0.0002670745877 -0.0002674110123 3.36424614e-07 -9.522323699e-06 1.033593098e-05 -8.136072782e-07 -2.551444622e-06 -1.780288766e-05 2.035433228e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2.088996375e-06 1.11877817e-05 5.864847006e-06 1.055629268e-06 5.986915383e-10 7.015316621e-08 6.762526655e-08 2.745420967e-09 6.320039204e-11 5.163508426e-09 1.800701408e-10 3.561286207e-10 5.020479124e-10 -0.06480393144 0.06485633946 -6.006866945e-05 0.006622421329 -0.004094429367 -0.002533307184 0.004634081455 -0.004634464194 2.240771473e-06 2.405899665e-05 -2.401485831e-05 2.83551221e-06 -1.400024146e-07 1.398588877e-07 4.330639896e-07 -8.759926811e-05 8.554312223e-05 2.054280303e-06 2.850977795e-07 -2.860251715e-07 7.323076069e-08 2.201159864e-06 -2.075118246e-06 -1.075008666e-07 -8.204088103e-06 8.236688388e-06 -1.882954941e-08 -2.047625968e-06 2.063886701e-06 -1.376803129e-08 -3.244726177e-09 -2.115252783e-06 2.117352087e-06 -3.097537469e-06 3.100086333e-06 4.580215756e-10 -2.529279125e-06 2.587464723e-06 -5.80597372e-08 0.002894446125 -0.002769958927 4.658844049e-07 -0.02635873072 0.02623269368 0.0003730808155 -0.0003712116662 -9.739636075e-05 0.01657477215 -0.01648413512 1.661527158e-05 -8.888765757e-06 -4.818319457e-06 0.008030384045 -0.008035915937 0.0001162726992 -0.0001224896836 -0.000509680475 0.0005157590346 8.95278414e-07 4.623836706e-06 -3.916964916e-06 -7.131061799e-05 7.068821736e-05 5.370868358e-07 -4.98676799e-08 -1.753461389e-09 -2.067217065e-05 2.074434301e-05 1.961420363e-07 8.952438246e-06 -9.95496333e-06 8.736755617e-07 1.313808883e-07 -4.368594956e-09 -1.43467353e-06 1.493326109e-06 8.478031542e-09 -1.631071763e-06 1.566922649e-06 2.755623162e-07 -2.553814111e-07 -1.409976935e-06 1.396124212e-06 1.909350235e-08 1.081827993e-07 -1.001019631e-07 -9.957240421e-09 -4.470589946e-07 4.4921265e-07 1.375758547e-07 -1.258101268e-07 -3.115009263e-09 4.166129449e-06 -4.175159921e-06 1.481486199e-07 -1.407979806e-07 -1.584487231e-06 1.576478448e-06 2.735064169e-09 1.710803789e-07 -1.616627619e-07 -2.54833005e-09 -8.077543575e-07 8.006180754e-07 --1.326267181e-05 -5.446982579e-05 -1.356076301e-05 -1.060804862e-07 -1.216351279e-06 -2.814669419e-07 -7.273939339e-09 -8.067237954e-08 -5.57945339e-09 -1.818586503e-09 -1.072689741e-08 -2.079528158e-10 -1.175593046e-09 -0.003398406741 0.003006693155 0.0004331526636 0.000724235533 -0.00126703972 0.0005400775172 -0.0001209966777 0.0001234419885 -2.350044907e-05 4.481689033e-05 -3.063781198e-05 -2.04707115e-05 1.603992118e-08 9.721599775e-08 -2.107518713e-07 -7.157603564e-06 1.860415002e-05 -1.184224758e-05 -2.892991809e-06 7.392100271e-07 1.815114114e-06 1.936916262e-07 -1.752654656e-07 -4.547559658e-08 -7.867884919e-08 3.937891964e-08 4.132973116e-08 -2.422070199e-07 -6.22376102e-07 8.285806744e-07 -2.21694149e-07 -5.569504973e-07 7.696207758e-07 -1.211309004e-07 -1.162261979e-06 1.286276734e-06 -1.868868847e-07 4.168483161e-09 1.766271127e-07 7.750736634e-05 -3.186917778e-05 -0.0007125801256 -0.004537386336 0.005220688451 -4.440984907e-05 3.845466094e-05 0.0002932984686 0.002148869316 -0.002411181964 -3.604695609e-06 8.770507937e-06 0.0003129087435 -0.0003065443129 -1.283835946e-05 -4.855622831e-07 3.135952008e-07 -4.026730273e-06 3.774752718e-07 -4.56872174e-06 -8.088648288e-07 8.723555908e-07 -1.610679422e-06 1.635818637e-06 -7.122839426e-07 -8.565058635e-08 4.554472658e-07 2.401385559e-06 -1.220273179e-05 9.509776424e-06 -2.789809692e-08 3.833718307e-08 -1.325881428e-06 1.082247128e-06 -2.177859133e-07 9.824607122e-09 -7.787222237e-09 -1.686506488e-06 1.53808725e-06 1.324686571e-07 -1.462356155e-08 3.018025046e-08 -2.912615081e-08 -7.997581905e-07 8.249885418e-07 -1.08812304e-08 2.960082775e-08 -8.021064548e-09 -1.058054327e-06 1.001214314e-06 -2.654636762e-08 3.315326274e-08 -1.511497281e-07 -6.742535613e-07 8.208652736e-07 -6.85536719e-09 1.362092433e-08 -1.769290805e-07 -7.948739921e-07 9.660504763e-07 -5.104867942e-09 1.214915723e-08 4.409754002e-08 -1.493750977e-06 1.436302386e-06 -0.01824220201 0.0805783337 0.02512034325 0.0008852387185 0.001298304745 0.0005915640512 7.688625734e-05 7.259646588e-05 1.786026622e-05 1.203331099e-05 9.832246744e-06 1.742130016e-09 3.150170495e-06 -0.001649987236 -0.08643078348 0.02849196416 -0.02503822496 -0.001175271686 0.01898568913 -0.003103056846 0.000408474929 0.03167054674 -0.0001163204481 2.331398313e-05 0.0128318963 1.770818377e-06 -2.62432328e-05 1.596627572e-05 5.981074793e-05 4.485530716e-05 0.000235472225 -4.021912521e-06 -1.91616038e-05 0.0007389763628 -5.649109324e-06 6.614846167e-07 6.262052095e-07 2.741452961e-06 1.141106054e-06 -1.779989728e-05 -1.595232912e-07 -1.095624187e-05 8.830232328e-05 -1.727041283e-07 -7.323316242e-06 7.467357186e-06 -9.617911258e-08 -8.347648226e-06 5.657689752e-06 5.577487576e-08 -5.892517385e-06 1.765693973e-05 -0.001936718718 0.0001585004831 0.04781906475 0.003424537113 -0.068893031 -0.0001909434488 1.188856279e-05 0.003097079753 -0.04255196697 0.001404923019 -8.483964184e-05 2.730610839e-06 -0.0114649167 6.75779401e-05 0.007683799312 -0.0001435779227 -6.68125391e-05 -2.420485852e-05 -5.016958588e-06 0.01246484702 -1.980227074e-06 3.735005527e-07 2.125983226e-06 -7.526938215e-06 0.001980690766 -1.096488025e-06 -2.434405987e-07 1.096696896e-05 -2.168159232e-06 -0.000153763929 -6.497518753e-09 2.759979108e-09 -9.280175871e-08 1.496526367e-07 0.0005413161043 -2.915279494e-07 3.669343461e-08 -6.519984522e-06 1.679023663e-06 8.343311547e-05 -6.850453021e-07 1.335530872e-07 1.69096687e-05 6.315179334e-06 -1.694139915e-05 -2.01693867e-07 5.920072221e-08 -8.935341757e-09 -4.547323689e-06 5.538285574e-05 -1.849636634e-07 3.147424099e-09 1.464646894e-07 -7.115780087e-07 -3.757574703e-06 -1.99582072e-07 2.838634075e-08 9.091074011e-06 -6.967942491e-07 -4.027107143e-06 -1.597838453e-07 3.362688441e-08 3.230030163e-07 -3.087614101e-06 9.869164827e-06 --0.01748639118 -0.08018446608 -0.02786742493 -0.00155299647 -0.0009904417201 -0.0006529461884 -0.000136698063 -4.463331724e-05 -1.987331469e-05 -1.935550632e-05 -5.975083887e-06 -2.973947564e-10 -3.993706917e-06 -0.003249834809 0.09328021568 -0.03159981964 0.02857336326 5.105882809e-05 -0.01557652851 0.003818174704 -0.0004468098498 -0.03041730325 7.387912771e-05 -2.637773687e-05 -0.01453119962 -2.046824949e-07 2.618178552e-05 -0.0001776836955 -0.0002176822485 -8.882516991e-05 0.0001281516868 2.431776419e-06 1.407266177e-05 -0.0008012112301 6.205503968e-06 -2.823931672e-07 -5.795243303e-06 -1.751719601e-08 -1.794984978e-06 1.888435935e-05 1.382939578e-10 9.654792341e-06 -9.036870314e-05 -1.09892328e-07 7.400771453e-06 -3.230780687e-06 -3.501126728e-08 8.152739519e-06 -7.583878161e-06 -1.352811427e-07 5.698355758e-06 -1.729571431e-05 0.002213470272 -0.0003301984424 -0.04897274462 -0.007003080899 0.07106746903 0.000251597986 -4.008116331e-05 -0.00451847988 0.04556528613 -0.003070937265 8.909966863e-05 -5.08422607e-06 -0.00333689347 0.01234697911 -0.002289085054 0.0004032435307 -2.688576081e-05 5.778461895e-05 1.58769992e-06 -0.01205790066 1.453951493e-07 1.276192571e-08 -1.92524906e-06 6.140807131e-07 -0.002578125844 1.12281779e-06 -3.462616822e-08 -2.065085136e-05 -7.141692118e-05 0.0001331930647 1.567829185e-07 -3.132345755e-09 4.814715021e-07 -1.490821713e-08 -0.0004226992193 4.264499108e-07 -6.822043276e-08 9.362134547e-06 -9.118732075e-07 -0.0001134379446 7.075240937e-07 -1.534934636e-07 -1.660550148e-06 1.779504023e-05 -5.033046652e-05 1.768397299e-07 -5.487682036e-08 -1.109312692e-07 3.254383363e-06 -3.796622346e-05 2.183882167e-07 -1.496735909e-08 -5.032031642e-07 2.877748792e-07 4.497156526e-06 2.137794861e-07 -3.989079495e-08 -1.011683349e-07 4.798608316e-06 -1.327732964e-05 1.630513155e-07 -3.680404806e-08 -1.013009801e-06 -5.22677944e-06 1.282078471e-06 -0 0 0 0 0 0 0 0 0 0 0 0 0 0.0009269225763 0.3400683679 0.01206588618 0.004151052309 0.2938714979 0.003717202171 0.004151801438 0.1816638353 0.001011755621 0.002589756357 0.07656776695 0.0002285133188 0.0321594005 0.01016431946 3.602492477e-06 0.0005805604634 0.01611697302 0.000179335446 6.799698104e-05 0.009896917038 0.000228103607 4.392985063e-06 0.003155721279 0.0006729341173 4.62087064e-09 8.234101554e-05 0.002613278576 2.876784793e-05 0.0007790243383 3.981882657e-06 0.0005154750349 0.0001386812862 2.703291706e-07 0.000118926005 9.264748517e-07 1.676657899e-07 2.300329315e-06 0.0001349776532 3.065133367e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -3.011952136e-07 1.613074268e-06 8.456040746e-07 1.522025058e-07 8.632041103e-11 1.01148083e-08 9.750331232e-09 3.95839679e-10 9.112344954e-12 7.444838305e-10 2.596283323e-11 5.134725806e-11 7.238616113e-11 0.239967483 0.01755041653 1.182538076e-05 0.000460324206 0.09914517325 0.001203806869 0.001073568173 0.02001422467 2.06202336e-07 2.848495824e-06 0.0002039375872 3.884781825e-07 7.678978157e-07 2.557777799e-08 6.239456447e-08 0.0001159588833 0.0002550338549 1.528305999e-08 7.194600764e-08 1.127310125e-06 1.075258861e-08 1.283956013e-07 3.833467395e-05 1.528247546e-08 4.060887848e-05 1.678889944e-06 1.123743932e-09 1.204004948e-05 3.569976304e-07 1.400710365e-09 4.034598877e-10 2.064158518e-05 2.175362158e-07 1.487172425e-05 6.474816912e-07 4.071923095e-12 1.069577868e-05 6.375624195e-07 1.355169823e-08 0.00222388174 0.003196659544 6.184262397e-09 0.144404355 0.004792295471 0.001323289128 0.0001074809844 2.262545003e-05 0.002393539321 0.1151298908 2.708993449e-05 1.184900532e-06 1.894916729e-06 0.001385983655 0.04660442206 0.001029186584 1.670988806e-05 0.004868389405 5.321247701e-05 8.556361898e-08 8.379082167e-06 1.294357862e-06 0.0004761908043 1.062582169e-05 5.314712314e-08 4.438373297e-07 6.256908076e-08 0.0001894391326 2.271853572e-06 1.895600299e-08 2.941593082e-05 4.097193431e-06 1.223561084e-07 3.451639231e-08 2.129917569e-09 8.789969565e-07 2.203993643e-06 1.059258485e-08 3.181469747e-08 8.386543231e-05 4.324016253e-07 1.264746199e-07 9.066555448e-06 2.200941874e-07 1.440828646e-09 2.083298697e-07 3.978897035e-08 2.048874724e-09 4.200527758e-06 4.924357073e-08 2.717992837e-08 6.221863507e-07 6.488460923e-10 1.155331052e-06 1.511069181e-05 6.871390618e-08 2.790136237e-07 5.044062846e-06 4.968475952e-07 5.747013784e-10 1.803035002e-07 1.270406161e-07 1.124306073e-09 5.928893674e-06 1.09364448e-07 -3.747713844e-09 1.539186998e-08 3.831947287e-09 2.997580822e-11 3.437117794e-10 7.953582577e-11 2.055441282e-12 2.279608497e-11 1.576620081e-12 5.138890497e-13 3.031164646e-12 5.876249203e-14 3.321944776e-13 0.0005957171189 0.2177345324 3.59029905e-06 0.05147839193 0.0005938175569 4.942720911e-06 0.004483374268 3.4430939e-05 7.02783673e-09 0.0006647005883 7.032235289e-06 1.837897032e-08 3.628121981e-11 5.127955483e-05 1.14118148e-10 1.037788292e-06 0.000153844745 9.326282233e-08 1.910222987e-06 7.852337593e-05 2.58494599e-09 1.441064639e-05 1.576291115e-08 1.911311826e-11 2.292421465e-10 6.479888413e-10 3.65790601e-05 1.039740047e-07 2.857578966e-05 4.41467839e-09 1.271877492e-07 1.637091658e-05 1.23298079e-08 3.617576749e-08 1.70131791e-05 2.503374063e-07 4.413013177e-08 1.468060271e-05 8.790293138e-10 0.004564416005 1.949798441e-06 4.545169031e-06 0.0009539604888 0.1863381336 0.000331929295 3.455882867e-05 6.937080943e-05 0.09752020396 0.0006676804882 0.0002199396061 5.020051236e-06 0.02137669085 4.96897775e-05 6.76351009e-09 1.193666915e-05 4.182258542e-07 5.063274567e-05 7.443534382e-07 7.015292049e-10 2.439417662e-05 2.296914532e-07 3.750834378e-07 7.286720389e-05 2.211050761e-10 3.275149297e-06 2.501407384e-07 5.675950109e-08 5.695574406e-06 0.0003963590513 3.279591324e-07 3.522862483e-08 1.219251428e-05 8.059340499e-07 2.950251307e-11 3.640105499e-07 2.174952327e-09 6.105771258e-06 2.445401429e-07 3.832621165e-10 1.476424196e-06 6.208857158e-09 5.203064149e-10 1.327686436e-07 4.625995423e-05 6.35699415e-07 7.627037344e-09 9.365555429e-08 1.502293123e-05 5.604428577e-09 3.905433851e-07 2.547527941e-08 8.726613001e-09 3.277456988e-07 1.068213393e-05 4.641462597e-07 3.297071296e-09 3.043771808e-09 4.372053726e-07 1.452737618e-05 3.940219687e-07 2.548144076e-09 3.16406224e-08 1.015603736e-05 6.322849521e-08 -0.03268283274 0.1443646004 0.04500574965 0.001585998716 0.002326050155 0.001059849514 0.0001377498554 0.0001300642406 3.199855442e-05 2.155894832e-05 1.761550911e-05 3.121210032e-09 5.643863352e-06 0.03241602958 0.04204590144 0.04704697813 0.01340056359 0.005425290957 0.03094462135 0.00179206802 0.0005674979083 0.0567288742 4.38359936e-05 0.0001047514898 0.02302825111 4.508827803e-06 1.457412461e-05 2.760932048e-05 0.0001445790523 6.589225333e-06 0.0006800036301 9.815087568e-06 9.576726423e-06 0.001317861331 3.043549386e-06 1.521431363e-06 1.164924107e-06 4.683261859e-06 3.592127268e-06 9.584103047e-06 8.152519325e-07 7.118058352e-06 0.0001546021151 9.133720972e-07 5.333545984e-06 9.608893051e-06 7.855229787e-07 6.760757945e-06 5.335401919e-06 8.558466783e-07 3.416460932e-06 3.064688772e-05 0.001511504953 1.502216582e-05 0.08493931648 0.02921560499 0.03350212798 0.0001792529213 8.793842581e-07 0.003176012614 0.02234705821 0.01172092917 5.177392616e-05 1.728067148e-07 0.006204121746 0.001128775642 0.01363601812 0.0001213229835 2.168843865e-05 1.645919496e-05 2.020852949e-05 0.02228434537 1.112963903e-06 5.472366498e-07 7.243034942e-06 2.944783567e-06 0.0035510187 5.856475895e-07 6.662037423e-08 2.869558783e-05 9.366595868e-05 6.537392881e-05 5.051921049e-09 9.847693966e-10 1.10968197e-07 2.170590989e-07 0.0009697703614 1.622193007e-07 5.597899332e-08 6.17415802e-06 1.181647526e-06 0.0001464137627 4.405730033e-07 5.806189139e-08 3.085621436e-05 1.843104447e-05 7.64236701e-06 1.343890123e-07 2.498167267e-08 3.386583649e-10 4.226774911e-06 9.573851211e-05 1.366994265e-07 7.411528225e-11 1.829193281e-07 2.307166901e-06 1.564217158e-06 1.45301673e-07 5.575552974e-09 1.757050874e-05 2.548949639e-06 1.444582306e-06 1.079805716e-07 1.201054113e-08 3.01393045e-07 1.199777935e-05 8.768126889e-06 -0.03133879958 0.1437051754 0.0499435038 0.00278325268 0.001775052052 0.001170198557 0.0002449878396 7.999103811e-05 3.561660147e-05 3.468859451e-05 1.070843918e-05 5.329855983e-10 7.157450576e-06 0.02783433637 0.04784792553 0.05320208007 0.01563475196 0.004081729173 0.02580291862 0.002129542069 0.0008247086037 0.05449252657 3.232134857e-05 6.670672688e-05 0.02605906753 7.461709703e-07 1.567419016e-05 0.0003148732798 0.0003778816863 8.048641281e-05 0.0001209580303 7.211147625e-06 6.62674296e-06 0.001433246606 3.489481797e-06 6.088926784e-07 1.020222356e-05 1.344626542e-08 4.836997638e-06 1.009492167e-05 4.092735935e-07 6.015137939e-06 0.0001597954908 5.366994984e-07 5.341500409e-06 2.938901406e-06 8.010488721e-07 5.344931308e-06 1.090596115e-05 5.43990302e-07 3.315697284e-06 3.03152924e-05 0.001571057802 9.029921307e-05 0.08594440822 0.02403468631 0.03725373947 0.0001888539947 1.451505617e-05 0.006119098749 0.02493882272 0.009621796996 5.231579094e-05 1.197063836e-06 0.008026042813 0.006109859602 0.004976543728 0.0002931657507 4.955780146e-06 2.863457316e-05 5.09175622e-06 0.02157031034 1.182533793e-07 1.536904276e-09 3.890104524e-06 1.532710487e-07 0.004621201724 6.022202791e-07 2.552248058e-09 3.388465435e-05 0.0002935802916 4.516270942e-05 9.244648444e-08 1.383847193e-09 2.575198195e-07 4.939242673e-08 0.000757562764 2.605995039e-07 5.60202381e-08 6.903500331e-06 6.052094957e-07 0.0002003790549 4.370694416e-07 1.023423195e-07 2.348394552e-06 5.393357273e-05 4.700821464e-05 1.124766973e-07 3.561128342e-08 8.052287291e-08 2.708765871e-06 6.611704632e-05 1.486852347e-07 2.521038575e-09 8.470313302e-07 2.167388808e-06 2.026338281e-06 1.437525294e-07 1.633201269e-08 2.039465645e-06 2.33902561e-06 2.357787201e-05 1.048841402e-07 2.038290957e-08 1.601227157e-06 1.454620521e-05 2.138963796e-07 -0 0 0 0 0 0 0 0 0 0 0 0 0 0.01359971614 -0.017716024 0.004870577299 0.002945054874 -0.02258970716 0.02016616809 0.001170152392 -0.006268732172 0.005303920493 9.361718399e-05 -0.0004034949895 0.0003271847613 3.30075815e-06 4.682448629e-06 -1.150054311e-05 -0.0005385318149 0.0005849047437 -5.487122752e-05 -3.959664539e-05 4.592455127e-05 -7.709729292e-06 -9.850949068e-06 8.933081828e-06 9.639884054e-08 -3.893088897e-07 -2.898139548e-05 3.033521284e-05 -7.868878997e-07 3.528113982e-06 -2.857384213e-06 -1.778304806e-06 -1.507787295e-07 2.240111358e-06 -1.861720417e-06 4.827988431e-07 1.280855379e-06 2.880021248e-06 -3.298432616e-06 4.832465758e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.000385936183 0.0007041971451 0.0003340516185 7.745010486e-05 -1.202026201e-06 -7.112615906e-06 -5.392230564e-06 -5.875790607e-07 7.83638198e-08 3.517579373e-07 6.498713897e-08 3.741791447e-08 -5.278823635e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2.711187742e-05 -4.762918002e-06 -3.452909025e-06 -3.44096788e-08 -4.764990026e-07 1.050048351e-07 -5.696869943e-09 -2.932066614e-08 9.6618421e-09 -4.360936931e-09 -8.167742329e-09 -1.104322162e-09 -2.552366243e-09 0.007257075326 -0.00775669315 0.0008820567467 -0.0005376917684 0.0006892036474 -0.0001249373536 -0.0001782224334 0.0001723473016 -4.067238072e-06 -3.766408681e-05 4.153245708e-05 -3.71468382e-06 1.035602473e-07 -3.342057471e-07 -2.880445452e-07 5.54998959e-06 -7.576523029e-06 2.300138342e-06 3.472586714e-06 -3.64970736e-06 2.042980081e-07 -5.464594946e-07 6.187027919e-07 -3.72896613e-08 1.421886134e-07 -1.249132704e-07 9.812740221e-08 1.397713984e-06 -1.761449192e-06 4.05421321e-07 1.23992897e-06 -1.733766292e-06 5.222040726e-07 8.476309401e-07 -2.913339955e-06 2.103212169e-06 7.250227525e-07 -8.472328234e-07 1.511920896e-07 0.0001435781373 -7.762534933e-05 -0.0005916976498 0.01052483806 -0.009564863396 -0.0001364701737 0.0001302308261 0.0005619413886 -0.003395887398 0.002939769287 -1.201777308e-05 1.648781647e-05 0.0001220231649 -0.0001348598248 -1.281142642e-06 -1.594769504e-06 2.323262747e-06 2.737533223e-05 -2.949224832e-05 -7.04567521e-07 -2.637975156e-06 2.259030916e-06 -9.405775857e-06 9.297350576e-06 1.790695927e-07 -6.153627893e-08 6.559704687e-08 -1.434964197e-07 1.462804549e-06 -1.280408409e-06 -9.09217631e-08 9.556296623e-08 3.515197666e-06 -3.49378232e-06 -1.649427856e-08 2.996073367e-08 -2.382764523e-08 -1.57670999e-06 1.824256484e-06 -1.801953154e-07 -4.940073015e-08 7.833251589e-08 -1.109997048e-07 2.101839492e-06 -1.896898824e-06 -3.76208908e-08 4.346725108e-08 1.282254904e-06 -1.446352957e-06 1.937321785e-07 -7.273265078e-08 8.01089118e-08 -3.096881613e-07 2.043451263e-06 -1.703170407e-06 -2.484061019e-08 3.251487553e-08 -1.689265051e-07 2.627183771e-06 -2.421401037e-06 -1.825737871e-08 2.337547759e-08 7.299784594e-07 -1.165061301e-06 4.606385148e-07 -0.08216582772 -0.008670823211 -0.01263868873 -0.0004400207071 -0.001272080128 0.0003097840395 -3.67123883e-05 -7.609690251e-05 4.386926765e-05 -2.554079379e-05 -1.810164252e-05 -2.537922723e-07 -1.04070121e-05 0.05406913365 -0.01544134365 -0.09987102253 -0.0005846010479 0.002530639196 0.0137035689 -2.835189971e-05 -0.000676714437 -0.01071690538 -2.125415994e-05 0.0001956208728 -0.004918751761 -3.688225203e-05 4.65315841e-06 0.0001251172427 5.368434069e-05 4.737498372e-06 9.874628323e-05 7.933428059e-06 -3.305866694e-06 -0.0001548078823 -3.925877985e-07 6.159716503e-06 -1.007011437e-05 1.923770493e-05 8.075963382e-06 -8.584097026e-07 3.500401098e-06 -1.829243437e-06 -6.659289825e-05 3.548358501e-06 -2.956926887e-06 -1.291164849e-05 3.773027959e-06 -4.185208915e-06 -9.307853249e-06 3.143231215e-06 -9.801920416e-07 -2.60662176e-05 -0.0009246301404 -0.0002012475186 -0.07775321002 0.05718884663 -0.01097070683 -0.0001745441886 -2.24116091e-05 -0.003999105048 -0.003501358049 0.0141586032 -8.691467248e-06 -1.935888549e-06 8.410934987e-05 -0.0003584038356 -0.001401587235 -9.858200848e-05 7.414438019e-05 1.717156218e-05 -0.0001503076036 -0.004157318 4.253129441e-08 -1.365635722e-06 -3.316596629e-05 3.050844998e-06 0.0005464931284 9.041213991e-08 -7.867488236e-08 5.747366763e-06 -8.983455123e-06 1.644742861e-06 -3.351954548e-09 -2.070253393e-09 1.916176662e-07 2.355760211e-06 -0.0001141188932 9.800025013e-09 -1.706385229e-07 -3.662117398e-06 -7.401469858e-06 9.282517096e-05 -1.248755793e-07 -1.98069347e-07 -2.843872377e-05 1.617245688e-05 -1.418171274e-06 -4.717149222e-08 -6.039348444e-08 6.535166496e-08 -1.436762213e-06 -1.904841252e-05 -7.870419242e-08 -4.518500185e-09 1.255004733e-06 5.686934599e-06 -1.662529865e-06 -7.801509159e-08 -3.984222088e-08 -1.234734602e-05 6.219832849e-06 -1.489260361e-06 -4.120639509e-08 -4.566701181e-08 -2.144076599e-06 -3.036402311e-06 -2.075335266e-06 --0.08134389216 0.005996957965 0.01360273996 0.0006982159021 0.001114849107 -0.0002904630075 4.52259783e-05 6.200431669e-05 -4.602857202e-05 3.085753947e-05 1.371956996e-05 -1.048913975e-07 1.161862177e-05 -0.05188062748 0.01193391624 0.1054275909 0.0003847698094 -0.002218271705 -0.01419149699 -2.937247668e-05 0.0007892666602 0.01005252734 1.146977768e-05 -0.0001703382075 0.005564171515 1.477744213e-05 -4.177410674e-06 -0.000395576053 -9.269462918e-05 -7.394106951e-06 -2.947769363e-06 -7.35669664e-06 2.677620814e-06 0.0001717506148 2.254233966e-07 -3.63302863e-06 -3.136132598e-05 -1.015602494e-06 -7.729105684e-06 5.998127293e-07 -2.396471526e-06 1.004968133e-06 6.391286336e-05 -3.155715578e-06 2.45339584e-06 6.235984274e-06 -3.596184267e-06 2.000551848e-06 1.462033163e-05 -2.509579114e-06 5.861070914e-07 2.477340661e-05 0.000694137426 0.0005166133075 0.07585144951 -0.05259849636 0.007455454505 0.000112554707 0.0001049797578 0.005701079264 0.002202435865 -0.01369021163 3.955195518e-06 3.843906349e-06 0.0004769892999 -6.794231968e-05 0.0007520325331 0.0001570592558 7.061471361e-05 -1.03565918e-05 4.928109989e-05 0.004142070096 8.805953796e-08 -2.539347814e-08 2.138127673e-05 -3.575217848e-07 -0.0005334634071 -9.118997939e-08 -2.662777602e-08 -1.247411345e-05 5.238530442e-06 -9.269138099e-07 5.667342902e-09 2.219983946e-08 7.88923837e-08 -1.237529839e-06 0.0001105582185 4.268264001e-08 1.969029206e-07 2.840133034e-06 5.697808764e-06 -0.0001035407726 8.254816077e-08 2.423225901e-07 8.687471602e-06 6.465416501e-06 7.241196498e-06 2.729527163e-08 6.506806796e-08 9.700232956e-07 6.839767759e-07 1.381210555e-05 6.047929591e-08 2.879300335e-08 -2.60349696e-06 -5.814995334e-06 1.539752162e-06 5.359385859e-08 6.887544989e-08 -5.694637084e-06 1.267710282e-06 1.409012346e-05 2.844493026e-08 5.824461716e-08 4.907725177e-06 7.147685188e-07 6.558892945e-08 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.4511178441 0.1788933402 0.01952376147 -0.002657341027 2.042784641e-05 0.0006383944691 -0.0001780440742 1.94688863e-05 -0.000151227711 3.750863895e-05 -1.696460019e-05 1.822358986e-05 -1.750526312e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.4509370911 0.1793159845 0.01969251574 -0.003192450812 0.000685080602 0.000118852064 0.0001910359828 -0.0002013649958 -1.278848376e-05 -4.178841477e-05 3.288930331e-05 -8.138252139e-06 1.224906789e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.2646806578 -0.008228751522 0.0003612755932 0.0001645425919 0.0001527044125 7.619439711e-05 -5.464474581e-06 3.692963179e-05 3.41738209e-05 8.702787009e-06 1.41406476e-05 1.202765477e-05 9.217997176e-06 0.003828502233 4.912893079e-05 0.2530956384 -1.312671068e-05 -0.0006534186457 0.01701942731 -3.091546726e-09 -1.734376422e-06 -0.002826558684 -9.882558861e-08 -4.146678611e-06 0.0003075915073 4.866623034e-06 -4.070850858e-10 0.0003398587215 -5.03964287e-07 -2.105158864e-08 -8.529274119e-06 -2.104565757e-09 -1.834097339e-10 -1.839210215e-07 -1.445703291e-09 -9.72844511e-07 7.988716273e-05 1.5166932e-05 -5.052111265e-07 -6.638658246e-11 5.542559788e-07 1.009604734e-08 1.06903987e-05 1.145907159e-06 5.526898007e-08 1.682990767e-05 2.666839943e-06 2.08357886e-07 9.253640719e-06 3.735499327e-07 5.205520212e-09 1.098451413e-05 5.630982825e-07 0.0001678672272 0.08725105726 -0.004108613366 -5.126504108e-05 5.459117983e-07 -2.444205642e-05 0.01460295751 8.522931057e-05 0.002867082103 3.036487947e-09 -2.456779492e-06 2.201827737e-08 1.459023866e-05 -0.000945069991 -5.581998622e-11 -3.806119639e-08 -7.210102339e-08 -2.092234499e-06 0.0001039554804 6.894832507e-10 -1.309390352e-07 -3.707507849e-07 -1.402886422e-09 0.000143863056 8.574031475e-10 7.70512932e-08 -5.823474704e-06 6.552805125e-07 1.656933841e-08 -3.856417195e-11 1.920001326e-09 -1.420684792e-08 -6.681973102e-08 1.699358405e-05 1.960483568e-12 7.386281374e-09 -4.447925864e-07 -1.194555994e-05 5.033946195e-05 1.728359893e-11 -4.384536598e-08 -6.225370154e-06 4.392982695e-07 2.149695919e-09 -7.514171831e-12 1.082502974e-08 8.619422615e-07 2.381087435e-08 5.999850447e-06 5.099150209e-10 1.91712122e-08 7.68324685e-06 -7.97644869e-07 -5.419952665e-08 -1.425429419e-11 8.501621174e-09 3.82114171e-06 -2.864421187e-08 -1.189305593e-08 -5.29325174e-12 7.647192354e-09 1.276398193e-06 4.715951527e-08 2.568227218e-06 -0.276844638 -0.005513964942 -0.0003945291832 0.0002765704734 0.0001531214236 4.311452182e-05 -3.653367361e-06 4.746876001e-05 2.427245359e-05 7.779922528e-06 1.398831897e-05 1.053771854e-05 8.719779195e-06 0.004022145278 0.0009735014422 0.2442725961 -9.8051101e-05 -0.001446826329 0.02439578976 -1.693729859e-08 -2.935195838e-06 -0.003216680075 -2.66328928e-07 -3.361877036e-06 0.0002651597734 1.441526097e-05 2.118830607e-07 0.0002867213909 -4.994895133e-06 -2.744387404e-06 -1.501665011e-05 3.804105995e-08 3.901770137e-08 1.109299223e-05 -1.553123238e-08 -3.081974556e-06 8.253746995e-05 -4.386143437e-07 2.391263803e-08 2.026023853e-10 6.363849167e-07 6.2023319e-08 1.307017007e-05 1.905171795e-06 7.371797118e-07 1.350934073e-05 1.746961216e-06 7.87977267e-07 7.067163917e-06 4.5282844e-07 3.310745283e-08 9.584910746e-06 1.190314877e-05 0.0001508395109 0.07834615551 -0.004829718594 -7.49780197e-05 3.099716316e-07 -4.491190422e-05 0.01510455551 0.0003966475897 0.003458153506 -1.496994772e-08 -2.328403581e-06 1.474360956e-06 0.0001393482842 -0.0007710050067 -1.133730783e-10 -5.814490381e-07 -8.759759402e-08 -1.536887339e-06 9.708704796e-05 3.251675479e-11 -2.966943913e-08 -1.848301408e-06 -1.015318894e-07 8.065831322e-05 4.008706654e-10 -8.856092309e-10 1.132719957e-05 -2.003484021e-06 -1.910967211e-07 1.260197817e-12 5.266500694e-10 -1.927560428e-08 -5.29206656e-07 3.219514005e-05 1.468816165e-11 -1.841119757e-09 -4.760657978e-07 -5.477338346e-06 2.938459478e-05 -9.431003277e-11 -2.323320733e-08 -8.079225856e-06 1.929748188e-06 3.689632597e-08 6.454242276e-11 1.324615695e-08 1.175445539e-06 1.613636873e-07 5.894063831e-06 -1.079244991e-10 1.980488185e-08 5.094908706e-06 -8.311539685e-08 -7.014045705e-08 4.963802038e-11 5.325379363e-09 3.157760742e-06 1.552399752e-08 -5.380883711e-08 5.30320516e-11 7.797812172e-09 1.795297678e-06 5.926637819e-07 7.407735233e-07 -0.2826638831 -0.004055763145 -0.0008705871959 0.0003182057998 0.0001515768232 2.88985815e-05 -2.172930135e-06 5.21239929e-05 1.816287156e-05 8.219063634e-06 1.381087709e-05 9.684357495e-06 8.544054332e-06 0.005562963585 0.0005625057235 0.2389429097 -4.655434165e-05 -0.002086286406 0.02795663834 2.278831075e-08 -1.413560651e-06 -0.003381129802 -6.756707799e-08 -2.783213095e-06 0.0002200288443 1.723154519e-05 1.840574661e-07 0.0002567141391 -2.055258895e-05 -3.154505266e-06 -3.051111643e-07 4.396218325e-08 3.109270974e-08 1.934207472e-05 -9.247275374e-09 -4.711586116e-06 7.947489779e-05 -6.245970365e-06 4.677410311e-07 2.845134494e-09 7.754769619e-07 2.713224402e-08 1.469530928e-05 3.703356545e-06 6.825088136e-07 1.044783875e-05 1.112974978e-06 1.57785344e-07 7.324303327e-06 5.46334505e-07 1.350617821e-08 8.942253283e-06 6.68103904e-06 0.0001741522696 0.07308761594 -0.004072409457 4.45569966e-05 4.491603112e-08 -4.430518609e-05 0.0153498281 0.0001339470334 0.003921785945 -8.649458789e-09 -1.920979612e-06 -0.0003552066156 -3.985818327e-06 -0.0001175627778 1.356003046e-09 -1.465087516e-06 -6.019783209e-09 -6.163192334e-07 9.227922099e-05 1.405312242e-11 3.469161591e-09 -1.568102704e-06 -3.089186139e-08 5.31818646e-05 2.899778604e-10 7.3777918e-08 1.610594537e-05 -2.307825739e-06 -2.245134245e-07 1.68324429e-11 -1.884427572e-08 -1.996488798e-09 -1.113054288e-06 4.127183329e-05 -2.524280819e-11 -2.842852123e-09 -1.185002485e-07 -2.860189436e-06 1.669444588e-05 -4.467910097e-11 -1.658528989e-08 -3.100058131e-06 -5.977832804e-07 -1.290955838e-06 5.995375769e-11 1.546325152e-08 1.588920772e-06 7.903453614e-08 5.590054173e-06 -6.365099048e-11 1.889555065e-08 3.840203703e-06 6.918715574e-09 -9.330924321e-09 2.890282071e-11 4.949929332e-09 -6.091221484e-08 3.512424965e-09 3.012326462e-06 4.354467947e-11 8.83926238e-09 2.647578117e-06 1.962917987e-07 -3.395720992e-08 -0 0 0 0 0 0 0 0 0 0 0 0 0 0.2639982369 0.001205578172 0.002078167571 0.002918528218 0.002852961161 0.1790322028 0.0006921645132 0.0005555021375 0.07151661371 3.358539776e-05 2.724439595e-05 0.006072041596 -5.712882517e-08 7.655188296e-08 -0.001246418362 -0.002807959707 -0.0001197851296 -8.370173022e-05 -0.0004808155083 -4.436690024e-06 -4.409031681e-06 -0.0002908126152 -2.773659214e-07 -4.541590061e-09 0.0002557185401 8.328157801e-05 2.781907866e-06 -3.421920224e-07 -3.123057387e-07 -4.050715352e-05 5.947876637e-08 -4.291593688e-09 0.0001101602462 -9.832078092e-08 -9.757251627e-07 -3.367656915e-05 2.208053591e-05 4.93161866e-07 4.012259278e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.136759867 0.2495384266 0.1183741171 0.02744512307 -0.0004259485133 -0.002520417748 -0.001910784133 -0.0002082137869 2.776890596e-05 0.0001246485062 2.302876194e-05 1.325936575e-05 -1.870597394e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.03127525951 0.005494326129 0.003983148203 3.969373339e-05 0.000549671634 -0.0001211296958 6.571698562e-06 3.382323651e-05 -1.114554386e-05 5.030615627e-06 9.422005601e-06 1.273905221e-06 2.944315341e-06 0.1323912725 0.0003909119965 0.02921426462 5.766675355e-05 0.006250515562 -0.003403840587 -1.485951533e-05 -0.001867105443 0.00443680683 3.240729491e-06 0.0003656039655 0.001366664274 -0.0001145380224 -5.139013819e-10 0.0001779611418 5.83804182e-05 3.374046054e-07 -0.0001034449396 2.169933899e-05 5.869952752e-07 4.601998696e-05 1.659674218e-08 1.742906117e-05 2.963978566e-05 -1.210641975e-05 2.867779831e-05 4.53217723e-10 2.324712673e-05 1.222697536e-07 2.227096826e-05 1.403402863e-05 1.745926967e-07 8.72764537e-06 1.787836085e-05 1.034030048e-07 -1.329429507e-06 1.289057784e-05 4.836804013e-08 8.859290971e-06 -5.290414375e-06 -0.003276907408 0.03531854714 0.1385178612 0.000625854789 -5.592906919e-05 -0.0004535323248 -0.001858137465 0.0002583059723 0.03363716185 -6.410845458e-07 -6.697727842e-05 -5.565339435e-06 -0.002679378237 0.0007633423194 -2.08755938e-07 -1.104230886e-05 -4.095444652e-06 -0.0002674828357 0.00149216675 -2.80010304e-07 -2.453633862e-05 -0.0001188698184 -6.13148686e-07 -0.0001884128713 -2.161080613e-09 -1.121032814e-07 -5.91105154e-07 1.177803822e-05 1.478074919e-07 -2.474382572e-08 -2.722592647e-07 8.302464299e-07 1.276481795e-05 3.973266777e-05 -2.462481775e-09 -2.908972312e-07 4.183446625e-07 1.195534794e-05 -7.642393501e-06 -1.608752281e-09 -1.003469931e-06 4.301846484e-06 3.719373081e-05 9.406691721e-08 -2.154040956e-09 -3.072733325e-07 1.707648103e-05 1.486404674e-07 1.033953599e-05 -1.39406273e-08 -2.712912285e-07 2.967047924e-06 1.088193374e-05 2.630195707e-07 -1.271864742e-09 -3.37626031e-07 3.328483927e-06 1.440450968e-05 3.877550917e-07 -8.11888206e-10 -2.401580976e-07 1.385889647e-05 1.006455308e-07 2.063472015e-06 --0.03400284354 0.003588263554 0.005230293025 0.000182094621 0.0005264273819 -0.0001281985288 1.519275872e-05 3.149132847e-05 -1.815450395e-05 1.056959613e-05 7.491037766e-06 1.050273473e-07 4.306753964e-06 0.132840086 0.006926056395 0.03524201336 0.0002507050947 0.008181088315 -0.00284892788 -2.094253217e-06 -0.002257155031 0.004441134928 6.998848729e-06 0.0003078763911 0.002049530513 -0.000130699398 -3.80839705e-07 -3.842171015e-05 4.7122312e-05 -6.897808692e-06 -5.365659599e-05 1.668910718e-05 2.884928638e-06 6.378519466e-05 2.693632591e-08 1.706600503e-05 6.68013998e-06 -1.024252082e-06 2.63935855e-05 1.049424309e-07 1.911983491e-05 5.064177389e-07 2.571949386e-05 1.43601749e-05 9.196728095e-07 2.709340716e-06 1.740628975e-05 8.763258401e-07 2.487225682e-07 1.225815726e-05 2.323093089e-07 9.604008143e-06 -0.0005930404856 -0.002801021284 0.03833418148 0.1296496341 0.003644786517 -0.0001707246494 -0.0005033511969 -0.001289328504 0.0008894809433 0.03962388807 -1.703508023e-06 -3.201976751e-05 -1.520417585e-05 -0.001727873914 0.0001561498279 -8.088160454e-05 -0.0002180902584 -6.002401926e-06 -0.0005486307191 0.001710330277 -8.012579422e-11 -3.836641423e-06 -4.83903662e-05 -6.799163307e-07 -0.0002269653891 -1.069355387e-08 1.99534724e-07 -7.379845079e-06 -1.714174967e-05 -8.345208005e-07 -2.269152495e-09 -6.139230041e-09 2.069130911e-09 1.161515487e-06 4.724681869e-05 -2.367989516e-10 -5.426559099e-07 1.678245545e-06 2.904191299e-05 -3.21999824e-05 -3.854854129e-08 -7.680128386e-07 2.331052269e-05 1.955101669e-05 2.969642796e-07 -1.775454332e-08 -1.858657771e-07 1.141847439e-05 4.780481679e-07 7.23402688e-06 -4.645274426e-08 -2.879332569e-07 -2.960960409e-07 1.1452873e-05 1.433667374e-06 -4.330175797e-08 -2.963406998e-07 5.144210215e-06 1.295091149e-05 1.257958044e-06 -1.672307619e-08 -1.932152114e-07 1.234506887e-05 5.254742876e-07 3.448409215e-07 --0.0340004526 0.002506633008 0.005685728861 0.0002918431373 0.0004659891876 -0.0001214089154 1.890373931e-05 2.591681778e-05 -1.923921071e-05 1.28979605e-05 5.734561942e-06 -4.384293514e-08 4.856399028e-06 0.140867462 0.003382134303 0.03615613779 9.598550036e-05 0.008757312642 -0.00134165043 -2.712502243e-07 -0.00244415173 0.004205014175 1.480215854e-06 0.0002471061128 0.002336435703 -0.0001343463908 -3.203188961e-07 -0.0001497836076 1.652804876e-05 -1.385836343e-05 -1.221785959e-06 1.567672496e-05 2.166418749e-06 7.164012297e-05 8.289343774e-09 1.728607694e-05 -8.216813852e-06 1.103440666e-05 2.180816394e-05 5.973803405e-08 1.766628547e-05 1.665375321e-07 2.499122157e-05 1.650662571e-05 1.598670707e-07 -1.235307028e-06 1.664829557e-05 3.980604775e-07 3.009584196e-06 1.216044361e-05 7.402827233e-08 8.994126169e-06 -0.000329918727 -0.003099977832 0.03689993729 0.1309150533 0.00131759385 -6.905440623e-05 -0.0006911574803 -0.0008890498919 0.000262913761 0.04327930206 -4.274579904e-07 -2.147980606e-05 0.0003526914177 -1.004441191e-06 -0.001678921834 -8.715080331e-05 -0.0009140122529 -4.082124421e-06 -0.0001956855216 0.001717093459 -6.664372588e-08 -3.44462619e-07 -9.350238094e-06 4.499075194e-08 -0.0002232502124 -1.023844394e-08 1.797167617e-07 -3.995950516e-05 -2.777713618e-06 -3.171228582e-07 -5.679159491e-10 -2.996142761e-07 -1.085089183e-08 -7.138449978e-06 4.611090636e-05 -8.325668403e-09 -7.292919396e-07 9.262441997e-07 3.716673397e-05 -3.743019965e-05 -1.810569468e-08 -6.932089209e-07 4.049105138e-05 7.765710848e-07 1.257955945e-06 -7.490985371e-09 -1.545524887e-07 9.764302972e-06 1.504596755e-07 5.160664798e-06 -2.595383588e-08 -3.430853727e-07 -1.055836543e-06 1.286447838e-05 9.007454998e-07 -2.134094498e-08 -3.065790114e-07 1.298257094e-05 4.976495714e-07 6.070566886e-06 -8.568238382e-09 -1.876223487e-07 1.170498525e-05 -7.278459531e-09 1.401227171e-08 -0 0 0 0 0 0 0 0 0 0 0 0 0 -0.02382387374 0.00324622331 0.02580902879 0.02476437007 0.002350210378 -0.02349750896 0.007730911232 0.0008991013958 -0.007205833271 0.0005086882438 7.245901836e-05 -0.0004611115965 1.855111421e-06 -8.329018398e-06 -1.792124447e-05 0.0005060770889 -4.221096898e-05 -0.0005228076777 4.777176678e-05 -6.589063365e-06 -5.076660106e-05 -1.777025584e-06 -4.129273778e-06 2.088498994e-07 0.0001517317237 -0.0001404315838 -4.610608996e-06 -4.090984122e-06 -6.524986626e-07 3.937846094e-06 -9.213637726e-07 2.907378046e-07 2.787818263e-06 1.490666776e-07 5.386196408e-06 -6.215419728e-06 -3.194418588e-06 4.350470165e-07 3.209048417e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.002676733398 0.004884092499 0.002316878186 0.000537169852 -8.336880082e-06 -4.933089298e-05 -3.739883502e-05 -4.075265716e-06 5.435070948e-07 2.439683709e-06 4.507305947e-07 2.595190234e-07 -3.661227982e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.09594540763 0.01685534728 0.01221939591 0.0001217713775 0.00168626799 -0.0003715984529 2.016048171e-05 0.0001037620236 -3.419200244e-05 1.543278856e-05 2.890457769e-05 3.908052489e-06 9.032492139e-06 -0.04139967265 -0.0001071120687 0.1064159904 -7.564639645e-06 -0.00147056682 -0.01365156094 4.809842108e-06 0.0006179004767 0.01360047549 -2.539470068e-06 -0.0001809472463 0.004137458164 4.578396791e-05 -6.335886743e-10 0.0005319568184 -3.827815903e-05 -9.162144023e-07 -0.0002920650162 -5.259158216e-06 -3.43579252e-08 0.0001434552982 -7.344891081e-09 -6.87926436e-06 8.872281177e-05 -4.880095849e-05 -7.591102382e-06 1.108716063e-10 -3.255969023e-06 3.836408004e-08 7.609258069e-05 -2.161253734e-06 5.898399113e-08 3.259573114e-05 -2.838206515e-06 1.990259575e-07 1.080666657e-05 -3.070401971e-06 -2.405674908e-10 3.037967201e-05 2.438069465e-06 0.001268775277 0.09276486369 -0.05005999406 -0.0002679814963 1.825876749e-05 0.0001449118056 0.002375877549 -7.482878349e-05 -0.01061633342 1.969650425e-07 2.880578671e-05 1.786156495e-06 0.0008319721765 0.002431839318 6.487236194e-08 1.742034933e-06 -2.177110436e-06 -1.495605969e-05 0.004588508829 8.747027441e-08 8.579676001e-06 4.039018546e-05 2.087191292e-07 -0.0005768677847 1.609275759e-09 1.194367452e-07 -6.071058123e-06 -3.134049404e-06 -3.07206248e-08 7.734330008e-09 1.039954e-07 -3.822620337e-07 -4.69161947e-06 0.0001217598484 8.086371054e-10 8.531275214e-08 4.355111772e-07 1.147404924e-05 -6.228173985e-05 4.893001752e-10 3.807616907e-07 6.213634987e-06 -1.266084599e-05 -3.38288228e-08 6.439546283e-10 1.686980873e-07 -1.098178259e-07 1.018656067e-07 3.460967119e-05 4.943849414e-09 1.042529017e-07 5.363968971e-06 -4.203882146e-06 -1.308796025e-07 3.66891902e-10 1.34326079e-07 9.819399448e-06 -4.776428157e-06 -1.610198287e-07 2.365388601e-10 1.114506653e-07 1.017371085e-06 1.713573311e-07 1.046389283e-05 -0.04586155795 -0.004839693972 -0.007054391976 -0.0002456013128 -0.0007100223794 0.0001729086054 -2.049133284e-05 -4.247413555e-05 2.448600612e-05 -1.425581202e-05 -1.010358625e-05 -1.416563226e-07 -5.808762619e-06 -0.002752137801 0.03174167716 -0.06048255824 0.001092295294 -0.0005482081269 0.008407654959 4.909275513e-05 -0.0004870870493 -0.00598302465 5.639870813e-05 4.353829945e-05 -0.00274084698 -1.448531027e-05 -8.37881675e-06 7.235442089e-05 2.220861542e-05 3.224991314e-05 3.419394543e-05 -3.250867955e-06 6.61454708e-06 -8.680683093e-05 7.286792858e-07 2.678108135e-06 -5.413192189e-06 1.126122449e-05 2.565480012e-06 1.594265468e-06 -6.8493613e-07 2.815603995e-06 -3.803510468e-05 -6.709381245e-07 4.060058873e-06 -1.003402687e-05 -4.619680018e-07 5.167564356e-06 -9.870099149e-06 2.048419828e-07 1.690579451e-06 -1.501782619e-05 0.001184745374 -0.002123384159 -0.04377343659 0.006703449333 0.02255991757 0.0001859276217 -0.0003029867998 -0.003899716021 0.00666708211 0.001697113537 1.424232279e-05 -3.059000492e-05 -0.0001554300075 -2.145704782e-05 -0.0007897844472 0.0001166654461 -0.0002284062205 -2.52524643e-05 3.731528427e-05 -0.002325414187 -7.56732725e-08 -9.320751764e-07 -9.734909274e-06 -7.798033806e-06 0.0003048234843 -1.692755686e-07 2.874895358e-07 2.196546496e-06 2.079470646e-07 -3.868547127e-06 4.311110035e-09 -5.802227538e-09 -1.602482233e-07 1.624192346e-06 -6.37000234e-05 -1.76118451e-08 -1.118511268e-07 3.867239658e-06 -1.051687814e-05 5.289593726e-05 1.941685676e-07 -4.555961257e-07 -1.558484757e-05 5.541301019e-06 3.143764958e-06 7.079597145e-08 -1.43118435e-07 -1.724272959e-06 1.545722917e-06 -1.101913388e-05 1.064921494e-07 -1.918853432e-07 1.004890409e-06 -1.753968296e-06 3.993742259e-06 1.071592178e-07 -2.028453255e-07 -6.388582037e-06 -1.700286146e-06 4.151657549e-06 6.097500839e-08 -1.278576303e-07 -2.297807531e-06 7.814144865e-07 -2.335940853e-06 -0.04538818136 -0.003346176443 -0.007590042865 -0.0003895897915 -0.0006220623591 0.0001620722504 -2.523514489e-05 -3.459710491e-05 2.568297531e-05 -1.721785816e-05 -7.655231548e-06 5.852719416e-08 -6.482946637e-06 0.006057391377 0.02326534052 -0.06261959785 0.000703187845 -2.774862046e-05 0.008567025331 -5.266355105e-05 -0.000427608147 -0.005611242343 2.621725911e-05 6.735657144e-05 -0.003102723723 -4.053606805e-06 -6.977845057e-06 0.0002232244508 5.339760045e-05 8.160169939e-06 -3.12308009e-06 -2.480859129e-06 5.686240176e-06 -9.601175452e-05 4.008806647e-07 1.684931513e-06 1.781440226e-05 1.323081719e-06 2.868231418e-06 1.122057158e-06 -8.097701327e-10 1.613056714e-06 -3.614446532e-05 6.461510257e-07 3.399236264e-06 -6.855315907e-06 1.571776366e-07 3.051485075e-06 -1.016680807e-05 6.240896737e-07 1.007283366e-06 -1.41339149e-05 0.0009779732835 -0.001889107376 -0.04322158641 0.01532583036 0.01422247242 0.0001499493704 -0.0002898859478 -0.004209804909 0.004024031988 0.004369431309 6.736142257e-06 -1.632602062e-05 -0.000198312234 -0.0001372997837 -0.0003459160666 0.0002160318138 -0.0003830941333 -2.089962045e-05 1.536672122e-05 -0.002315435844 1.082711525e-07 -2.108587285e-07 -1.058179354e-05 -1.432411629e-06 0.0002976143174 -1.700203973e-07 3.61257147e-07 7.602292768e-06 -1.274335255e-06 -2.733637831e-06 9.611426173e-09 -5.024945907e-08 1.47501014e-07 3.73526161e-07 -6.168844993e-05 6.984667183e-08 -2.397848155e-07 3.851626902e-06 -8.584926692e-06 5.86161684e-05 1.336282226e-07 -3.634364929e-07 -6.142912504e-06 2.133223166e-06 -7.752959791e-06 4.291456431e-08 -1.002695869e-07 -1.336339744e-06 8.217478905e-07 -7.931290261e-06 8.883172298e-08 -1.709435249e-07 1.54668176e-06 -7.720855498e-07 3.417250983e-06 7.970132837e-08 -1.682276705e-07 2.82484264e-07 2.600760365e-06 -7.93452495e-06 4.422006311e-08 -1.051683854e-07 -3.104852228e-06 -2.568324415e-07 3.931350055e-07 -0 0 0 0 0 0 0 0 0 0 0 0 0 0.01359971614 -0.017716024 0.004870577299 0.002945054874 -0.02258970716 0.02016616809 0.001170152392 -0.006268732172 0.005303920493 9.361718399e-05 -0.0004034949895 0.0003271847613 3.30075815e-06 4.682448629e-06 -1.150054311e-05 -0.0005385318149 0.0005849047437 -5.487122752e-05 -3.959664539e-05 4.592455127e-05 -7.709729292e-06 -9.850949068e-06 8.933081828e-06 9.639884054e-08 -3.893088897e-07 -2.898139548e-05 3.033521284e-05 -7.868878997e-07 3.528113982e-06 -2.857384213e-06 -1.778304806e-06 -1.507787295e-07 2.240111358e-06 -1.861720417e-06 4.827988431e-07 1.280855379e-06 2.880021248e-06 -3.298432616e-06 4.832465758e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.000385936183 0.0007041971451 0.0003340516185 7.745010486e-05 -1.202026201e-06 -7.112615906e-06 -5.392230564e-06 -5.875790607e-07 7.83638198e-08 3.517579373e-07 6.498713897e-08 3.741791447e-08 -5.278823635e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2.711187742e-05 -4.762918002e-06 -3.452909025e-06 -3.44096788e-08 -4.764990026e-07 1.050048351e-07 -5.696869943e-09 -2.932066614e-08 9.6618421e-09 -4.360936931e-09 -8.167742329e-09 -1.104322162e-09 -2.552366243e-09 0.007257075326 -0.00775669315 0.0008820567467 -0.0005376917684 0.0006892036474 -0.0001249373536 -0.0001782224334 0.0001723473016 -4.067238072e-06 -3.766408681e-05 4.153245708e-05 -3.71468382e-06 1.035602473e-07 -3.342057471e-07 -2.880445452e-07 5.54998959e-06 -7.576523029e-06 2.300138342e-06 3.472586714e-06 -3.64970736e-06 2.042980081e-07 -5.464594946e-07 6.187027919e-07 -3.72896613e-08 1.421886134e-07 -1.249132704e-07 9.812740221e-08 1.397713984e-06 -1.761449192e-06 4.05421321e-07 1.23992897e-06 -1.733766292e-06 5.222040726e-07 8.476309401e-07 -2.913339955e-06 2.103212169e-06 7.250227525e-07 -8.472328234e-07 1.511920896e-07 0.0001435781373 -7.762534933e-05 -0.0005916976498 0.01052483806 -0.009564863396 -0.0001364701737 0.0001302308261 0.0005619413886 -0.003395887398 0.002939769287 -1.201777308e-05 1.648781647e-05 0.0001220231649 -0.0001348598248 -1.281142642e-06 -1.594769504e-06 2.323262747e-06 2.737533223e-05 -2.949224832e-05 -7.04567521e-07 -2.637975156e-06 2.259030916e-06 -9.405775857e-06 9.297350576e-06 1.790695927e-07 -6.153627893e-08 6.559704687e-08 -1.434964197e-07 1.462804549e-06 -1.280408409e-06 -9.09217631e-08 9.556296623e-08 3.515197666e-06 -3.49378232e-06 -1.649427856e-08 2.996073367e-08 -2.382764523e-08 -1.57670999e-06 1.824256484e-06 -1.801953154e-07 -4.940073015e-08 7.833251589e-08 -1.109997048e-07 2.101839492e-06 -1.896898824e-06 -3.76208908e-08 4.346725108e-08 1.282254904e-06 -1.446352957e-06 1.937321785e-07 -7.273265078e-08 8.01089118e-08 -3.096881613e-07 2.043451263e-06 -1.703170407e-06 -2.484061019e-08 3.251487553e-08 -1.689265051e-07 2.627183771e-06 -2.421401037e-06 -1.825737871e-08 2.337547759e-08 7.299784594e-07 -1.165061301e-06 4.606385148e-07 -0.08216582772 -0.008670823211 -0.01263868873 -0.0004400207071 -0.001272080128 0.0003097840395 -3.67123883e-05 -7.609690251e-05 4.386926765e-05 -2.554079379e-05 -1.810164252e-05 -2.537922723e-07 -1.04070121e-05 0.05406913365 -0.01544134365 -0.09987102253 -0.0005846010479 0.002530639196 0.0137035689 -2.835189971e-05 -0.000676714437 -0.01071690538 -2.125415994e-05 0.0001956208728 -0.004918751761 -3.688225203e-05 4.65315841e-06 0.0001251172427 5.368434069e-05 4.737498372e-06 9.874628323e-05 7.933428059e-06 -3.305866694e-06 -0.0001548078823 -3.925877985e-07 6.159716503e-06 -1.007011437e-05 1.923770493e-05 8.075963382e-06 -8.584097026e-07 3.500401098e-06 -1.829243437e-06 -6.659289825e-05 3.548358501e-06 -2.956926887e-06 -1.291164849e-05 3.773027959e-06 -4.185208915e-06 -9.307853249e-06 3.143231215e-06 -9.801920416e-07 -2.60662176e-05 -0.0009246301404 -0.0002012475186 -0.07775321002 0.05718884663 -0.01097070683 -0.0001745441886 -2.24116091e-05 -0.003999105048 -0.003501358049 0.0141586032 -8.691467248e-06 -1.935888549e-06 8.410934987e-05 -0.0003584038356 -0.001401587235 -9.858200848e-05 7.414438019e-05 1.717156218e-05 -0.0001503076036 -0.004157318 4.253129441e-08 -1.365635722e-06 -3.316596629e-05 3.050844998e-06 0.0005464931284 9.041213991e-08 -7.867488236e-08 5.747366763e-06 -8.983455123e-06 1.644742861e-06 -3.351954548e-09 -2.070253393e-09 1.916176662e-07 2.355760211e-06 -0.0001141188932 9.800025013e-09 -1.706385229e-07 -3.662117398e-06 -7.401469858e-06 9.282517096e-05 -1.248755793e-07 -1.98069347e-07 -2.843872377e-05 1.617245688e-05 -1.418171274e-06 -4.717149222e-08 -6.039348444e-08 6.535166496e-08 -1.436762213e-06 -1.904841252e-05 -7.870419242e-08 -4.518500185e-09 1.255004733e-06 5.686934599e-06 -1.662529865e-06 -7.801509159e-08 -3.984222088e-08 -1.234734602e-05 6.219832849e-06 -1.489260361e-06 -4.120639509e-08 -4.566701181e-08 -2.144076599e-06 -3.036402311e-06 -2.075335266e-06 --0.08134389216 0.005996957965 0.01360273996 0.0006982159021 0.001114849107 -0.0002904630075 4.52259783e-05 6.200431669e-05 -4.602857202e-05 3.085753947e-05 1.371956996e-05 -1.048913975e-07 1.161862177e-05 -0.05188062748 0.01193391624 0.1054275909 0.0003847698094 -0.002218271705 -0.01419149699 -2.937247668e-05 0.0007892666602 0.01005252734 1.146977768e-05 -0.0001703382075 0.005564171515 1.477744213e-05 -4.177410674e-06 -0.000395576053 -9.269462918e-05 -7.394106951e-06 -2.947769363e-06 -7.35669664e-06 2.677620814e-06 0.0001717506148 2.254233966e-07 -3.63302863e-06 -3.136132598e-05 -1.015602494e-06 -7.729105684e-06 5.998127293e-07 -2.396471526e-06 1.004968133e-06 6.391286336e-05 -3.155715578e-06 2.45339584e-06 6.235984274e-06 -3.596184267e-06 2.000551848e-06 1.462033163e-05 -2.509579114e-06 5.861070914e-07 2.477340661e-05 0.000694137426 0.0005166133075 0.07585144951 -0.05259849636 0.007455454505 0.000112554707 0.0001049797578 0.005701079264 0.002202435865 -0.01369021163 3.955195518e-06 3.843906349e-06 0.0004769892999 -6.794231968e-05 0.0007520325331 0.0001570592558 7.061471361e-05 -1.03565918e-05 4.928109989e-05 0.004142070096 8.805953796e-08 -2.539347814e-08 2.138127673e-05 -3.575217848e-07 -0.0005334634071 -9.118997939e-08 -2.662777602e-08 -1.247411345e-05 5.238530442e-06 -9.269138099e-07 5.667342902e-09 2.219983946e-08 7.88923837e-08 -1.237529839e-06 0.0001105582185 4.268264001e-08 1.969029206e-07 2.840133034e-06 5.697808764e-06 -0.0001035407726 8.254816077e-08 2.423225901e-07 8.687471602e-06 6.465416501e-06 7.241196498e-06 2.729527163e-08 6.506806796e-08 9.700232956e-07 6.839767759e-07 1.381210555e-05 6.047929591e-08 2.879300335e-08 -2.60349696e-06 -5.814995334e-06 1.539752162e-06 5.359385859e-08 6.887544989e-08 -5.694637084e-06 1.267710282e-06 1.409012346e-05 2.844493026e-08 5.824461716e-08 4.907725177e-06 7.147685188e-07 6.558892945e-08 -0.3790115395 0.08856332381 0.004328369466 0.0009084699724 0.0004748210297 0.0002540610513 1.925815183e-05 2.674136537e-07 3.892850271e-05 4.350422683e-06 4.270141339e-06 8.902350187e-06 3.917947158e-06 0.199533687 0.0009229247296 0.001966082132 0.00208943361 0.00173645581 0.1094033407 0.0003297981951 0.0002163171496 0.02780471094 3.384170528e-06 2.126328259e-06 0.0004684622699 3.387813266e-10 2.157087374e-09 3.671416186e-05 0.0004995457561 2.122691145e-05 1.678893758e-05 2.305829321e-05 2.131031715e-07 2.605830154e-07 2.209003585e-05 2.528738881e-08 1.38092812e-11 3.279931932e-05 1.020052131e-05 3.521343444e-07 2.152377084e-08 1.597843309e-08 2.050448304e-06 6.13486157e-09 1.639314567e-10 1.856292047e-05 2.914419693e-08 2.515931463e-07 9.784885169e-06 3.605797801e-06 8.060339962e-08 7.61882845e-08 7.345261832e-23 1.23227006e-06 0.04407819403 0.0005561709075 0.0004901367602 1.165165995e-21 1.070147859e-06 0.05048738898 0.0005293755356 5.06688413e-05 5.525125074e-22 3.095825098e-07 0.000623050132 0.0002474225036 0.02197549485 -1.354282051e-22 3.993267698e-09 3.584290125e-05 2.56663037e-05 0.003681560476 2.329189518e-24 2.356849339e-10 7.152793545e-08 4.668130324e-06 0.0003083747009 -2.398675307e-24 6.010285485e-09 0.0001436867763 8.714015028e-08 1.2185824e-07 1.059791623e-24 4.045503136e-12 1.242209704e-06 1.459326108e-06 4.77347812e-05 -1.030139569e-24 1.038738271e-11 1.656340628e-07 3.010148885e-07 6.371463877e-05 -8.901087836e-27 1.35911689e-10 9.48607789e-07 3.19615107e-09 1.112287526e-09 5.405470577e-28 7.639941663e-12 3.073567378e-08 4.544644307e-09 2.297961652e-09 4.487446736e-25 8.121543212e-11 2.33144225e-07 2.666071426e-07 8.696419483e-06 2.839357888e-26 9.410808057e-11 1.300276499e-06 6.17792403e-10 4.957524261e-10 -6.087405466e-26 3.805777025e-11 1.49707976e-08 8.061085038e-07 1.999683596e-06 -0.4945189387 0.307421443 0.1319654046 0.03941143222 0.01673841645 0.005001509027 0.002982067969 0.0008721944031 0.0006739086684 0.0001662005827 0.000162668234 2.726728507e-05 3.849627959e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.196133944 0.001473855218 0.003111363451 3.949938519e-05 0.00066058632 0.0001386295456 1.578946936e-05 3.771268021e-05 5.920969413e-05 3.700754264e-05 2.200870706e-05 2.075350102e-05 1.961072167e-05 0.08840629323 0.0002763286464 0.2167017548 5.616190152e-06 0.0007999117945 0.003158046469 7.084671915e-06 0.0008627006185 0.002353843177 2.134169068e-06 0.0002452911372 0.0007507970054 0.0002955998964 2.178128921e-09 0.0007270505305 2.96807978e-05 3.731274748e-07 5.672824671e-05 6.312801471e-06 1.696356487e-07 1.61464403e-05 2.072203919e-08 2.428441935e-05 7.275206594e-05 8.819321448e-05 2.407962009e-05 2.63237684e-10 1.878935399e-05 1.085780408e-07 3.723180558e-05 1.208782969e-05 1.836149821e-07 2.211689716e-05 1.98607593e-05 4.98880876e-07 1.767015763e-05 1.191154367e-05 4.889468582e-08 2.600487559e-05 4.516389718e-06 0.003090419364 0.07702818231 0.1161182433 0.0004909709571 5.610866109e-05 0.0004907593434 0.004552031708 0.000118252944 0.01294368132 6.566660389e-07 5.415245365e-05 6.965368433e-07 0.0003660143648 0.0002426737668 2.130652814e-07 1.290582526e-05 1.480087253e-05 0.001168521117 0.000707618996 2.852694326e-07 2.221772123e-05 0.0002358638387 1.186277545e-06 0.0001450257026 1.156195728e-09 1.720220619e-08 3.62780188e-07 3.756947056e-07 4.136264047e-09 2.520669861e-08 2.59228981e-07 1.013459107e-06 1.514579872e-05 9.221628832e-06 2.465987764e-09 2.610432744e-07 4.071581276e-07 1.360885653e-05 8.472100498e-05 1.652934262e-09 9.882628783e-07 2.368015101e-05 3.327389007e-05 7.778272174e-08 2.226416119e-09 2.477242252e-07 1.755558068e-05 1.392495808e-07 6.696874888e-06 1.354532861e-08 2.519084343e-07 1.099014672e-05 1.274064947e-05 2.715552393e-07 1.329442825e-09 3.206534029e-07 9.375263957e-06 1.578684756e-05 4.035954536e-07 8.45972824e-10 2.144356585e-07 1.684127905e-05 1.336513236e-07 3.355889471e-06 -0.2065678731 0.0005207867785 0.003549245466 0.0001220796844 0.0006956805503 9.05469596e-05 9.784398332e-06 4.452214186e-05 6.01437371e-05 3.025806907e-05 1.860119171e-05 2.063639319e-05 1.919002891e-05 0.09018597439 0.005670828438 0.2120055642 2.550328447e-05 0.001180422357 0.006068511827 4.485489436e-07 0.0008069499863 0.002024578534 1.030521445e-05 0.0003653172471 0.001050627717 0.0003016971537 1.485638676e-06 0.0005669941945 1.993378979e-05 3.406150146e-06 1.433937706e-05 6.412503234e-06 1.141178532e-06 1.81851306e-05 5.063994697e-08 2.493842859e-05 8.705048061e-05 7.902383039e-05 1.815670205e-05 7.688431708e-08 1.502947415e-05 4.700904918e-07 2.868404547e-05 1.378501499e-05 1.639325252e-06 1.734962245e-05 1.812262704e-05 2.590829875e-06 1.623797671e-05 1.154400984e-05 2.812197937e-07 2.217020228e-05 0.0005656222925 0.002696053568 0.07117506849 0.1119457968 0.003592500405 0.000169959148 0.0005711726336 0.00503550934 0.0005485960643 0.01710325536 1.459066533e-06 2.168703038e-05 1.140271424e-06 0.0001137987963 0.0001440630806 8.01036384e-05 0.0002534709484 1.791476122e-05 0.001117962378 0.0007755800165 1.62530968e-09 3.40796057e-06 0.0001518674601 3.160726414e-06 8.410396132e-05 1.395780532e-08 9.291057257e-08 1.151125564e-06 8.615986757e-07 4.138009033e-08 2.224025114e-09 4.352236295e-09 3.308815586e-07 2.556725887e-05 1.342907797e-05 5.920410816e-10 5.201505736e-07 2.172134855e-06 4.636048809e-05 5.885042637e-05 3.539461156e-08 6.75683573e-07 2.621063622e-05 1.419064243e-05 2.631658174e-07 1.655752684e-08 1.460019515e-07 1.26110575e-05 4.883831526e-07 3.789927495e-06 4.531364954e-08 2.754741438e-07 8.610554699e-06 1.40177224e-05 1.767021631e-06 4.18877112e-08 2.847076464e-07 8.67686622e-06 1.517735779e-05 1.535320219e-06 1.57247454e-08 1.736371363e-07 1.525272244e-05 7.684537882e-07 4.912128347e-07 -0.2111385529 0.0002502589398 0.003704876918 0.0001751567328 0.0007001983574 7.20978147e-05 8.348941385e-06 4.806207519e-05 5.948432344e-05 2.74495913e-05 1.757740758e-05 2.06425939e-05 1.886039875e-05 0.0967006891 0.002976479235 0.2089199692 9.469149663e-06 0.001205550184 0.007805263802 4.051304734e-07 0.000755347838 0.001854443393 4.070244772e-06 0.0004349652018 0.001188070318 0.0002926578552 1.113343641e-06 0.0004969631396 2.273805424e-05 6.792800883e-07 7.18376795e-08 7.505183402e-06 1.081927165e-06 2.058143627e-05 1.456253699e-08 2.167688576e-05 9.640376549e-05 7.670891468e-05 1.235044528e-05 3.563923742e-08 1.403236335e-05 1.679032068e-07 2.556301234e-05 1.855515207e-05 1.126865242e-06 1.323198519e-05 1.614450969e-05 7.48785619e-07 1.959974863e-05 1.157738898e-05 1.036046096e-07 2.02446233e-05 0.0003066893945 0.00295561058 0.06694376647 0.1151087135 0.001492032818 6.708125018e-05 0.0007592633064 0.005311616319 0.0001945049208 0.01947888678 2.990219837e-07 1.234321477e-05 2.834756773e-05 7.555261667e-07 0.0001136437178 8.41421953e-05 0.001006186237 3.745786366e-06 0.0004769723257 0.0007953870116 6.557514271e-08 4.195633665e-07 0.0001175184348 8.339593658e-07 6.158207837e-05 1.380825693e-08 2.778093821e-07 4.59215268e-06 9.347426232e-08 1.902386332e-08 3.474310112e-10 3.56132436e-07 2.416904539e-08 3.100637493e-05 1.61347947e-05 6.990833564e-09 6.92084887e-07 1.168444306e-06 5.364262284e-05 5.35020569e-05 1.559065494e-08 5.737630141e-07 3.213776952e-05 7.750573237e-07 1.115441782e-06 6.623877397e-09 1.188907858e-07 1.168543993e-05 1.727075178e-07 2.885402029e-06 2.460059494e-08 3.288474242e-07 8.002297175e-06 1.560134047e-05 1.17001033e-06 1.998087749e-08 2.904619098e-07 1.590068046e-05 6.870764268e-07 8.420250094e-06 7.714360398e-09 1.664352882e-07 1.504206714e-05 3.512215235e-08 2.011211071e-08 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.3296916567 0.03849231289 6.690269822e-05 0.002683450172 8.224032543e-05 7.078511019e-06 0.0001393146533 4.758472952e-06 7.181560422e-06 2.361947865e-05 8.55809694e-06 7.734135203e-06 9.400456818e-06 0.01285756895 0.009533438791 0.2363793261 0.08476152801 0.001666021098 0.002974250531 0.007862744993 0.000221683579 0.0003821269641 0.001036060779 4.052064182e-05 6.388612631e-05 8.974151725e-05 0.0002885555885 4.422928833e-05 3.797618077e-06 3.54057304e-06 0.0002043120486 4.61629643e-06 2.725811335e-06 9.377847755e-05 3.020493428e-08 5.043866726e-08 2.227369442e-07 2.410666298e-05 1.799677855e-05 5.599289897e-07 2.692176884e-05 1.171517505e-06 1.373818989e-06 1.119928254e-06 4.318855638e-06 6.819874572e-07 4.739758215e-08 1.020676913e-05 3.020484021e-06 3.900812155e-07 3.879150487e-07 1.285446167e-05 1.074888047e-18 8.054895828e-07 0.004268671518 0.001699081243 0.07865247815 2.589335072e-19 7.815551471e-07 0.005652192788 0.00107527282 0.05739522339 2.454364544e-20 2.681146793e-07 0.01451819853 0.0004475801837 0.0004089623802 -3.376197752e-22 8.177471139e-09 8.378569518e-05 3.227247978e-06 4.912046684e-06 -5.369104454e-22 3.694221317e-10 3.271173866e-06 0.0001140691673 2.929945923e-05 -7.77818675e-22 3.520504086e-09 5.259599267e-05 0.0003099241448 2.59372819e-05 9.202384712e-25 5.180479803e-11 1.804845409e-07 6.936315327e-09 4.806145497e-09 -1.459501068e-23 6.357512805e-12 6.931491207e-07 8.707825866e-08 6.186470986e-08 4.007828833e-23 3.838711298e-11 2.970670396e-06 2.570348874e-06 2.934512014e-05 2.106016553e-23 9.918362295e-14 1.912602255e-08 7.920942044e-08 5.643867571e-06 9.310781124e-24 8.500724975e-11 2.947671945e-06 1.231642815e-07 7.523231886e-08 -4.723083483e-23 4.263048682e-11 9.532039545e-07 2.957516624e-06 4.359910821e-06 6.389453814e-24 2.935475951e-11 1.065260132e-08 1.032578216e-06 1.759781555e-06 -0.196133944 0.001473855218 0.003111363451 3.949938519e-05 0.00066058632 0.0001386295456 1.578946936e-05 3.771268021e-05 5.920969413e-05 3.700754264e-05 2.200870706e-05 2.075350102e-05 1.961072167e-05 0.007460260547 0.1102538629 0.1876702532 0.002469587666 5.839525522e-05 0.001435591532 0.001248121419 6.877854302e-05 0.001906728505 0.000404288253 5.975438047e-06 0.0005879586206 1.35692939e-05 0.0004007947562 0.0006082885549 6.178242206e-06 2.992943029e-06 7.761098675e-05 8.669195721e-06 5.662705568e-07 1.339341115e-05 4.674766047e-05 3.741538294e-07 4.993539304e-05 1.426286883e-06 4.034295372e-05 7.05038572e-05 4.294729334e-07 1.898009813e-05 3.672016654e-05 1.926974671e-05 1.780118859e-07 1.494058323e-05 5.87389194e-07 1.425855898e-05 2.318384963e-05 3.558927909e-07 1.051873356e-05 2.709068759e-05 0.003575979003 0.002390159424 0.02967872217 0.005161685385 0.1559257864 9.402199123e-05 0.001131667161 0.003396404116 0.01328711148 0.0002516292273 9.615379158e-06 9.033397144e-05 0.000108159413 0.0004429720284 1.311299622e-05 1.224954937e-05 0.0008125248957 8.700834069e-06 0.0007867028546 0.0002838817423 2.415719802e-06 1.427647748e-05 7.405322169e-06 0.0003216732964 5.880799363e-05 5.451985758e-09 8.76839323e-08 6.165538301e-09 5.38414879e-07 1.232532242e-07 2.539366209e-06 1.940254826e-05 6.904410652e-08 1.283445473e-07 3.526019216e-06 2.212499834e-06 8.879945972e-07 1.634530375e-05 7.951691434e-05 3.781638185e-08 1.663906104e-07 5.762281077e-07 1.096726186e-06 4.617633719e-05 1.000605751e-05 5.300079308e-08 2.763530004e-07 2.513761723e-06 3.032395841e-07 2.149530069e-05 6.614817328e-07 2.642421195e-08 3.967901195e-06 1.824820446e-05 1.363793588e-06 3.031143194e-07 7.332616116e-08 1.968038988e-06 1.970194792e-05 3.841262418e-06 1.558738043e-07 2.089807363e-07 2.608430819e-06 3.440673829e-07 1.722874873e-05 -0.4945189387 0.307421443 0.1319654046 0.03941143222 0.01673841645 0.005001509027 0.002982067969 0.0008721944031 0.0006739086684 0.0001662005827 0.000162668234 2.726728507e-05 3.849627959e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.1676805427 0.006028613817 0.001579476025 1.715073291e-05 0.0004391115474 0.0002750225224 6.342084927e-05 3.305787123e-05 4.717153497e-05 5.150853093e-05 3.71907044e-05 2.471694834e-05 2.112911574e-05 0.006686320006 0.08761996035 0.1984842112 5.528944255e-07 1.125541529e-07 8.015779232e-07 0.0008386148877 0.00029235373 0.00209648692 6.595064384e-05 9.227783434e-06 0.0001296726145 4.748148281e-05 0.000304918129 0.0007763999114 4.758031576e-08 1.594365289e-05 0.0003156997847 2.757699406e-07 1.760665858e-05 3.519571149e-05 2.003690886e-05 7.029024225e-06 4.241395462e-05 6.852333475e-05 1.345440139e-05 3.531218995e-05 2.40915901e-06 2.486337824e-05 6.446566625e-05 2.706223256e-07 9.281461944e-06 4.674585359e-05 4.292569126e-08 4.398473352e-06 4.177400071e-05 1.247900713e-06 1.16930026e-05 2.980896633e-05 0.001647902574 0.003658296014 0.04402062423 0.02050298159 0.1412269441 9.804104973e-05 0.0002889981355 0.001985576242 0.003442497851 0.0003684776631 0.0001243613751 0.000120570033 0.0009787878592 0.000298327631 0.0002674786072 9.973268798e-05 0.0002766406063 0.0002198586397 5.32204756e-05 0.0001756071429 3.402127051e-06 1.758523729e-06 8.585362535e-05 0.0005523298111 0.0001754441613 2.06995509e-06 3.558924639e-06 1.267337607e-05 9.620402361e-06 7.721477834e-05 5.58821817e-09 2.049428288e-08 1.015426668e-05 5.551690043e-06 4.467257712e-06 5.103358812e-07 1.887473912e-07 4.497780567e-05 5.974826588e-06 6.968931603e-06 9.027660745e-07 9.044791548e-07 9.282629073e-06 1.817220802e-05 6.239856264e-05 2.467188737e-07 3.852377679e-07 3.772848564e-06 3.776405873e-05 1.981141539e-05 1.796495762e-07 3.234380582e-07 6.595164246e-06 6.563829993e-07 2.511638158e-05 2.006827353e-07 3.38409266e-07 5.480729772e-06 6.577626931e-07 2.158999553e-05 1.896223638e-07 2.492676186e-07 8.096055233e-07 4.382299471e-06 2.619850326e-05 -0.1728489752 0.005025460494 0.001870168735 6.80023261e-06 0.0004875037629 0.0002533280534 5.054186489e-05 3.207028623e-05 4.953201803e-05 4.977919565e-05 3.412306679e-05 2.341946529e-05 2.055272272e-05 0.01021945401 0.08789418229 0.1976152894 5.470270548e-05 2.054233111e-05 7.978404739e-05 0.000939367172 0.0002691302763 0.002143393915 9.226739952e-05 2.013918982e-05 0.0001886417252 4.618366882e-05 0.0003139647603 0.0007873181755 4.070699822e-05 9.515463762e-05 0.0001428076863 3.660337458e-07 1.437861035e-05 2.699568261e-05 2.087212908e-05 1.003311964e-05 4.074108496e-05 6.351222884e-05 1.916020995e-05 3.73800938e-05 3.18920741e-06 2.390979612e-05 5.894063826e-05 2.060868611e-08 6.067185196e-06 4.422308815e-05 4.350416044e-07 9.218232598e-06 3.41250514e-05 1.547400552e-06 1.165897791e-05 2.903161393e-05 0.002350211652 0.003125681869 0.04206561175 0.02818738059 0.1332389393 0.000234821368 0.000272909599 0.002300132105 0.0044910163 0.0007025169749 0.00014060148 8.41591467e-05 0.0005132472006 0.000753345339 0.0001316652649 0.0004055898787 0.000356838336 1.32999607e-06 4.358917862e-05 0.0002040254823 1.112447841e-07 1.766324914e-07 0.0001108831143 0.0004979425953 0.0001523187149 2.100204914e-06 2.103379793e-06 1.328037424e-07 1.279869988e-05 5.267669679e-05 2.45328158e-07 2.657422822e-08 1.002233692e-05 3.928653124e-06 3.633487665e-06 6.220975663e-07 3.844473616e-07 4.647166496e-05 9.144343833e-06 8.525222443e-06 1.00998171e-06 8.226590351e-07 3.399482374e-06 1.467794808e-05 6.843410994e-05 2.378620824e-07 2.759685622e-07 4.535200795e-06 3.269045161e-05 1.648349004e-05 2.544382295e-07 2.690089478e-07 6.209085985e-06 1.348594714e-06 2.169442264e-05 2.558192499e-07 2.758543377e-07 2.121356134e-06 1.863469419e-05 5.69876433e-06 2.142689132e-07 2.055857672e-07 2.060456307e-07 4.98982284e-06 2.437250973e-05 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.3423304449 0.04909483264 6.046147853e-05 0.002448419288 0.000194928024 3.339683754e-05 0.0001248933333 8.531863447e-07 1.27086905e-05 2.043106867e-05 5.338839398e-06 8.737713323e-06 9.083023872e-06 0.0279754909 0.1370981202 0.08112288722 0.02525881871 0.06331962302 0.008954780223 0.003737981039 0.007582737341 0.001315114193 0.0001633179922 0.0002754200063 5.324708314e-05 0.0003688393407 1.050147808e-11 4.374913842e-05 2.213926197e-05 0.0002369151133 7.81486543e-05 4.194668296e-06 2.548244649e-05 1.255826014e-05 1.004567007e-08 3.327526757e-08 6.185969114e-08 2.049099207e-07 2.860961962e-05 2.917442721e-05 6.536294441e-06 1.113249579e-05 2.074458049e-06 5.235760634e-06 6.430920647e-09 5.62854214e-07 8.317226092e-06 4.83472992e-06 1.132130059e-06 8.381755393e-07 6.162535598e-06 2.72748482e-06 1.981814859e-18 8.895009441e-07 0.007120558003 0.04543213128 0.02125284139 -2.639205819e-18 8.36259378e-07 0.004795168808 0.03881664085 0.01894258842 5.056453746e-19 2.706541019e-07 0.005261937694 0.01052645654 0.002271784441 -1.806423208e-20 4.482412427e-09 0.000181000748 0.0002970776453 6.090158784e-05 -3.473852635e-22 5.433506756e-10 2.318628721e-05 1.733087846e-05 2.740458291e-06 -2.064753555e-20 3.676709879e-09 3.946282219e-05 2.345583609e-05 0.0003592408634 1.735389065e-22 1.510233186e-12 2.454420764e-06 4.955558565e-06 7.314374318e-07 9.074602486e-24 6.189907893e-11 2.925425846e-07 2.456578951e-07 6.624234376e-08 1.311353586e-21 4.219362681e-11 3.303783915e-06 1.424559369e-05 1.41379448e-05 1.976370777e-23 1.223716232e-14 2.695032859e-08 8.063587135e-07 2.146393256e-07 1.31953951e-22 7.716741366e-11 1.548642036e-06 3.028074986e-06 4.618968263e-07 -1.985305395e-22 4.514080106e-11 8.610215012e-07 9.950448092e-07 6.897189876e-06 -2.79234083e-23 3.436370594e-11 1.079227445e-06 9.108117959e-07 2.589265907e-09 -0.2065678731 0.0005207867785 0.003549245466 0.0001220796844 0.0006956805503 9.05469596e-05 9.784398332e-06 4.452214186e-05 6.01437371e-05 3.025806907e-05 1.860119171e-05 2.063639319e-05 1.919002891e-05 0.0578668878 0.06308511196 0.1869103673 0.0001966239704 0.002811225256 0.004266588243 0.0005005380238 0.0006034347172 0.001728004328 0.0001904091236 0.0003640309183 0.0008718101362 0.0001997840974 0.0001397428799 0.0005306500097 5.537184341e-06 3.137612272e-05 7.660099249e-07 4.752459866e-06 5.285834879e-06 1.570051762e-05 8.597361928e-06 3.401806956e-05 6.942411766e-05 2.024773159e-05 1.834105193e-05 5.866863324e-05 9.450830099e-06 8.576029753e-06 2.615675026e-05 2.038305759e-05 8.711706616e-06 3.679198496e-06 7.90258931e-06 6.620419926e-06 2.242842439e-05 5.566669897e-06 9.011405327e-06 1.941735669e-05 0.004771595163 0.0006307001104 0.03334208925 0.08877484067 0.06245581635 0.001279216974 9.633770428e-05 0.003855584523 0.007230391334 0.01096696201 3.495071277e-05 2.105374344e-06 4.807090373e-05 8.000733395e-05 0.0001170139205 0.000823411052 0.0001371203596 0.0005887237478 0.0003063483859 0.0003894281976 1.023368493e-05 5.940127419e-08 0.0001178686971 7.220473526e-05 4.217521519e-05 2.745865041e-07 1.542461405e-08 9.671684665e-07 5.368224983e-07 3.669706244e-07 2.87298427e-05 1.150505314e-06 4.891350874e-07 2.085878735e-06 6.878432818e-06 2.255257894e-09 3.129423662e-06 1.840128528e-05 2.033844144e-05 6.603238629e-05 5.679591908e-07 2.934047225e-10 2.023423012e-05 1.363819161e-05 6.934848333e-06 2.47690249e-07 1.144830629e-09 3.128036176e-06 9.449264922e-06 4.22579145e-06 2.907246402e-07 3.514087385e-07 4.270651269e-06 1.010993679e-05 9.693365082e-06 2.417948558e-07 1.068267452e-07 9.729289775e-06 1.117398474e-05 4.464243476e-06 2.998756198e-07 9.431698358e-09 2.996562687e-06 8.673355417e-06 4.722525526e-06 -0.1676805427 0.006028613817 0.001579476025 1.715073291e-05 0.0004391115474 0.0002750225224 6.342084927e-05 3.305787123e-05 4.717153497e-05 5.150853093e-05 3.71907044e-05 2.471694834e-05 2.112911574e-05 0.01585692151 0.07345440671 0.2034791634 4.170232981e-07 1.202010312e-07 9.298021724e-07 0.0006989422033 0.0003292545421 0.002199258792 5.589491648e-05 1.240044171e-05 0.0001365556836 7.643306126e-05 0.000271811471 0.000780554991 9.495190453e-06 7.862281631e-05 0.0002435730112 1.800176736e-06 1.437869728e-05 3.6899266e-05 1.74628465e-05 5.421000096e-06 4.659604111e-05 7.636488577e-05 1.295783643e-05 2.796720388e-05 3.224283266e-06 2.22663605e-05 6.624755974e-05 1.393833111e-06 1.315859645e-05 4.174550829e-05 4.538373208e-08 6.852992673e-06 3.931702335e-05 1.872623555e-06 1.055436876e-05 3.032287733e-05 0.003416161089 0.001122586389 0.05326266083 0.0306572244 0.1225981158 0.0001326127815 0.0001865643005 0.002106120077 0.003260789951 0.0004975038306 0.000145625713 7.438810125e-05 0.0008573991809 0.000232477286 0.0004796352245 7.189048019e-06 1.820672326e-06 0.0005039057687 9.567426773e-05 0.0002164697957 1.513696714e-05 1.176201109e-05 0.0001042533836 0.0004660142215 0.0002216216652 2.093519128e-06 3.281839816e-06 2.162300707e-05 1.450629752e-05 6.363277297e-05 1.640534334e-07 2.172993781e-07 7.366977745e-06 6.964837493e-06 5.486128886e-06 2.824587616e-07 9.054905577e-08 4.231583542e-05 1.30408913e-05 2.890912585e-06 1.001868907e-06 3.764700684e-07 2.255805619e-05 1.513053911e-05 5.259371069e-05 4.197105195e-07 3.056310146e-07 5.972923302e-06 3.496748164e-05 2.031453285e-05 2.105508171e-07 2.104668561e-07 6.858722902e-06 3.635754869e-06 2.195552102e-05 3.091748781e-07 1.580698096e-07 7.31524781e-06 2.343028529e-06 1.814205897e-05 2.642870588e-07 1.503411259e-07 2.039008763e-06 1.561034547e-05 1.376531582e-05 -0.4945189387 0.307421443 0.1319654046 0.03941143222 0.01673841645 0.005001509027 0.002982067969 0.0008721944031 0.0006739086684 0.0001662005827 0.000162668234 2.726728507e-05 3.849627959e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.1798585283 0.003776545821 0.002264665482 5.990200201e-08 0.0005494585742 0.0002204176143 3.624669494e-05 3.213911362e-05 5.292363394e-05 4.666465451e-05 3.002215617e-05 2.211566002e-05 2.007165937e-05 0.03389164243 0.06491917957 0.2004359131 0.0001337662001 0.000196392338 0.0004372534614 0.0008320593971 0.0003153762686 0.002284365755 0.0001001893493 5.976541599e-05 0.0003064523778 6.763296142e-05 0.0002842793783 0.0007937322805 3.420461893e-05 0.0001620619034 1.462551853e-05 6.170029169e-06 4.353581182e-06 2.074628015e-05 1.785246653e-05 1.285702512e-05 4.627370303e-05 6.862512004e-05 2.706390045e-05 2.586041724e-05 5.867555814e-06 1.869672041e-05 5.280538536e-05 3.386537846e-07 1.870616347e-05 2.452554035e-05 1.80261304e-06 1.268132497e-05 2.677240549e-05 2.838714518e-06 1.013358212e-05 2.850170308e-05 0.004433081962 0.000231328488 0.04610018136 0.05678770343 0.09819469766 0.0005330810757 2.619266653e-05 0.002958150252 0.00541814781 0.001818019896 0.0001476309538 1.295283963e-05 0.0003625278254 0.0006596083954 0.0001723568864 0.0008274984923 1.539805565e-05 1.957578144e-08 0.0001251656258 0.0003113335019 3.338313431e-07 5.528891948e-09 0.0001732451202 0.0003324723896 0.0001600601154 1.699201924e-06 3.137454907e-07 3.796943118e-08 2.191347225e-05 1.046245397e-05 2.608376811e-07 6.973956351e-09 9.718812867e-06 3.096400001e-06 4.095699169e-06 7.354029904e-07 1.825891379e-07 3.100743526e-05 2.958659887e-05 1.385398692e-05 1.233414434e-06 2.627712851e-07 5.246421622e-06 7.128605141e-05 3.460306526e-06 3.173984642e-07 7.769069417e-08 8.101747979e-06 2.344920566e-05 1.198182735e-05 4.196588641e-07 2.165169947e-08 6.776715154e-06 1.005845346e-05 9.526995223e-06 4.057097229e-07 3.893501865e-08 8.649737356e-06 1.079272686e-05 6.175492502e-06 2.959840263e-07 4.602249127e-08 4.675931815e-07 1.818581709e-05 8.26489565e-06 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.3490759323 0.05536441965 0.0002935776124 0.002246780408 0.0002637560649 5.811114959e-05 0.0001096562527 1.843421996e-07 1.702729469e-05 1.766622127e-05 4.227268722e-06 9.309101004e-06 8.473248303e-06 0.04299045342 0.1785823255 0.01737917522 0.01008586453 0.06716289591 0.02416091646 0.001350608796 0.01080516105 0.003024425691 1.788466466e-05 0.0001715647067 4.058243113e-05 8.741613715e-05 0.0002394348423 4.381700835e-05 0.0001284002341 0.00023682042 3.912934065e-05 3.905180867e-06 1.348988499e-05 1.705622123e-06 4.613016815e-08 2.930413861e-07 2.106293986e-09 2.308706378e-07 1.103668413e-05 5.236298303e-05 1.030568841e-06 1.073432973e-05 2.85754636e-06 1.708992858e-06 4.126336623e-06 8.029789513e-07 1.101531393e-05 2.778148064e-06 7.23691599e-07 1.982552811e-06 5.111664482e-06 6.314671911e-07 -1.221473292e-18 9.390422512e-07 0.01456323788 0.04588284392 0.007753935727 -1.178275386e-18 8.69254848e-07 0.01122976266 0.04117371809 0.008785037369 -6.972761261e-19 2.742342491e-07 0.001516248636 0.0135023112 0.00432339526 4.795555309e-20 4.079992972e-09 7.90564037e-05 0.0006792423914 0.0001751543347 1.010849545e-22 1.100141528e-09 6.50448759e-06 1.275137516e-06 7.625489632e-07 -1.55756864e-20 3.830567265e-09 4.526673315e-05 0.0002001298712 0.0001652049222 -8.789164389e-24 2.455756584e-12 1.461953074e-06 1.241895262e-05 5.282241184e-06 -2.816926388e-23 2.044560308e-11 1.197233956e-07 3.209705489e-06 6.430144736e-07 5.869853508e-22 4.498927705e-11 4.081211029e-06 2.123997692e-05 1.394358209e-06 7.652903827e-25 3.071938293e-13 7.43766877e-08 6.416618951e-08 1.413378303e-08 3.532251768e-22 7.451224647e-11 4.606320709e-07 4.203671496e-06 1.775800114e-06 -6.473230898e-23 4.754714778e-11 1.013511031e-06 6.957545656e-06 1.426047586e-07 2.054694795e-23 3.633435866e-11 1.41048389e-06 4.256937683e-07 2.229114543e-10 -0.2111385529 0.0002502589398 0.003704876918 0.0001751567328 0.0007001983574 7.20978147e-05 8.348941385e-06 4.806207519e-05 5.948432344e-05 2.74495913e-05 1.757740758e-05 2.06425939e-05 1.886039875e-05 0.1129762843 0.008595200362 0.1870256528 6.494371167e-05 0.001788274202 0.007167065223 7.775309771e-05 0.0008983530725 0.001634090191 8.897109051e-05 0.0005173695232 0.001020765151 0.0002656164724 3.235474207e-05 0.000492763124 2.290290185e-05 1.012750376e-08 5.761426504e-07 7.59170391e-07 1.015430799e-05 1.825506845e-05 5.13558356e-06 3.233908311e-05 8.062054712e-05 3.189749656e-05 4.113703024e-06 5.308379962e-05 1.423090539e-05 2.547401155e-06 2.298497235e-05 2.116985606e-05 1.015235691e-05 1.591789523e-06 1.274804803e-05 1.438166702e-06 2.230682921e-05 1.309188476e-05 2.082855143e-06 1.675087699e-05 0.0001022194919 0.004851481475 0.03523394399 0.1307232481 0.01589591971 0.0006383623055 0.0007385145906 0.00419265014 0.002928276136 0.01731354941 7.970123633e-06 1.05597988e-05 2.812480841e-05 1.26981632e-05 9.603615437e-05 0.000631254414 0.0003437375522 0.0007811224195 0.000154454011 0.0004558651595 2.751684532e-06 4.564739814e-06 0.0001199740406 1.771212898e-05 3.541701713e-05 3.521793916e-07 3.055699708e-07 2.858324664e-06 5.677589066e-07 9.124355116e-07 1.398817272e-05 1.984522172e-05 1.320290278e-07 3.852554535e-06 9.703840533e-06 2.320433299e-06 5.21582621e-07 1.946951211e-05 2.309545909e-05 6.360521264e-05 1.224883174e-07 3.33070038e-07 2.441933314e-05 3.716980366e-06 6.025750434e-06 7.197196249e-08 1.340207383e-07 3.539335318e-06 9.578481319e-06 1.545254798e-06 6.840521312e-08 5.330386251e-07 4.471994544e-06 1.247318597e-06 1.880633902e-05 2.628189063e-09 3.121953147e-07 1.922374149e-05 8.861668468e-07 4.893717928e-06 2.730509758e-08 2.500141796e-07 3.228829711e-06 1.023585877e-05 1.529443301e-06 -0.1728489752 0.005025460494 0.001870168735 6.80023261e-06 0.0004875037629 0.0002533280534 5.054186489e-05 3.207028623e-05 4.953201803e-05 4.977919565e-05 3.412306679e-05 2.341946529e-05 2.055272272e-05 0.02342329467 0.06637355951 0.2059320716 2.962882065e-05 2.342526399e-05 0.0001019749993 0.0008600893318 0.0001805180819 0.00231128395 6.056705105e-05 3.558867894e-05 0.0002048925846 7.586014617e-05 0.0002700466191 0.0008015598394 1.692452633e-05 6.575203369e-05 0.0001959927621 4.610541614e-06 8.230315889e-06 2.88994692e-05 1.609908977e-05 6.864202672e-06 4.868304123e-05 7.872457075e-05 1.279505011e-05 2.853291173e-05 5.11296306e-06 1.994966827e-05 6.097701046e-05 2.908879261e-06 1.20099409e-05 3.539206187e-05 2.309815101e-07 1.489427921e-05 2.865306488e-05 2.862912894e-06 9.635642139e-06 2.973943736e-05 0.003012169338 0.001281454864 0.05679341979 0.04878849981 0.09909228133 0.0003622639091 1.40388518e-05 0.002499101601 0.003851618267 0.001274373718 0.0001640616598 2.36807214e-05 0.0006857432436 0.0002947824399 0.0004547503667 9.693900932e-06 7.147945049e-08 0.000455253416 0.0002633514039 0.0002830026714 1.930329514e-05 6.925107154e-06 0.0001594483841 0.0003597212664 0.0002160342489 2.525718487e-06 9.63843588e-07 1.662786992e-05 2.036760047e-05 2.932675266e-05 3.083774029e-07 2.281306404e-08 1.161372512e-05 8.763497095e-07 5.035114794e-06 2.310771417e-07 1.429045673e-07 2.270262891e-05 3.811415407e-05 3.957011472e-06 1.075939369e-06 2.306591564e-07 2.317644023e-05 2.057242538e-05 4.3288717e-05 4.75447827e-07 1.664594931e-07 9.632403582e-06 2.728165705e-05 1.666700514e-05 3.472874057e-07 3.634921943e-08 7.723825037e-06 1.011771286e-05 1.155037599e-05 3.442519165e-07 9.046616885e-08 7.896581178e-06 7.717883271e-06 1.093730571e-05 2.903366532e-07 9.19478165e-08 3.250887506e-06 1.718607669e-05 9.168984217e-06 -0.1798585283 0.003776545821 0.002264665482 5.990200201e-08 0.0005494585742 0.0002204176143 3.624669494e-05 3.213911362e-05 5.292363394e-05 4.666465451e-05 3.002215617e-05 2.211566002e-05 2.007165937e-05 0.0396410139 0.05583493377 0.2037707875 0.0001013073003 0.0001853860965 0.0004807186027 0.0008292147926 0.0002577811377 0.00234480549 8.191597714e-05 6.917369696e-05 0.000315317469 7.483799207e-05 0.0002648570844 0.0008059495438 3.097959199e-06 0.0001122585311 9.553555055e-05 6.113121587e-06 3.941394741e-06 2.121537417e-05 1.652304358e-05 1.045375054e-05 5.000640057e-05 7.603843764e-05 2.090451494e-05 2.460648516e-05 6.703422307e-06 1.727100423e-05 5.339523504e-05 2.414024072e-06 1.434600668e-05 2.681032686e-05 1.099789816e-06 1.799098061e-05 2.216557308e-05 3.485957949e-06 9.230992582e-06 2.875704919e-05 0.004241426798 3.659372847e-05 0.05129381317 0.06640175477 0.08377340442 0.0005027268721 1.482447139e-08 0.00302805727 0.005042608039 0.002180184694 0.0001452688826 4.313076185e-06 0.000513986661 0.0004381130388 0.0002533952419 0.0003402792188 5.91412117e-05 0.000185720211 0.0003467173888 0.0003475572212 3.123304551e-06 1.669546835e-06 0.0001938312295 0.0002883880489 0.0001791048555 1.643465829e-06 1.686402555e-07 6.913128098e-06 1.542950128e-05 1.02721076e-05 1.417088938e-08 2.152963463e-09 1.048162415e-05 2.1001271e-06 4.580648568e-06 4.552329448e-07 1.849455502e-07 2.412777466e-05 3.606718849e-05 1.453087153e-05 1.23610905e-06 1.468935516e-07 1.096850471e-05 3.547192081e-05 3.366553716e-05 3.770576346e-07 5.309994822e-08 1.010251606e-05 2.114581057e-05 1.224938593e-05 3.834533331e-07 3.942343512e-09 7.567779589e-06 1.169660586e-05 7.151693269e-06 4.076161677e-07 1.21200207e-08 7.820386957e-06 1.065344864e-05 7.169029668e-06 3.029560694e-07 2.627468319e-08 2.316602442e-06 2.358584894e-05 1.028630309e-06 -0.4945189387 0.307421443 0.1319654046 0.03941143222 0.01673841645 0.005001509027 0.002982067969 0.0008721944031 0.0006739086684 0.0001662005827 0.000162668234 2.726728507e-05 3.849627959e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 diff --git a/tests/09_DeePKS/100_NO_KP_deepks_UT/E_delta_bands_ref.dat b/tests/09_DeePKS/100_NO_KP_deepks_UT/E_delta_bands_ref.dat deleted file mode 100644 index c544e745e9..0000000000 --- a/tests/09_DeePKS/100_NO_KP_deepks_UT/E_delta_bands_ref.dat +++ /dev/null @@ -1 +0,0 @@ -0.01100090181 diff --git a/tests/09_DeePKS/100_NO_KP_deepks_UT/E_delta_ref.dat b/tests/09_DeePKS/100_NO_KP_deepks_UT/E_delta_ref.dat deleted file mode 100644 index eb519534b8..0000000000 --- a/tests/09_DeePKS/100_NO_KP_deepks_UT/E_delta_ref.dat +++ /dev/null @@ -1 +0,0 @@ --0.1889355556 diff --git a/tests/09_DeePKS/100_NO_KP_deepks_UT/F_delta_ref.dat b/tests/09_DeePKS/100_NO_KP_deepks_UT/F_delta_ref.dat deleted file mode 100644 index b522d7c8e3..0000000000 --- a/tests/09_DeePKS/100_NO_KP_deepks_UT/F_delta_ref.dat +++ /dev/null @@ -1,3 +0,0 @@ -0.001927511403 0.002216346196 0.001021128399 --0.00185327459 -0.0009686234405 0.0005694745218 --7.42368129e-05 -0.001247722756 -0.001590602921 diff --git a/tests/09_DeePKS/100_NO_KP_deepks_UT/INPUT b/tests/09_DeePKS/100_NO_KP_deepks_UT/INPUT deleted file mode 100644 index 55e72abe77..0000000000 --- a/tests/09_DeePKS/100_NO_KP_deepks_UT/INPUT +++ /dev/null @@ -1 +0,0 @@ -gamma_only_local 0 diff --git a/tests/09_DeePKS/100_NO_KP_deepks_UT/STRU b/tests/09_DeePKS/100_NO_KP_deepks_UT/STRU deleted file mode 100644 index fee4c04337..0000000000 --- a/tests/09_DeePKS/100_NO_KP_deepks_UT/STRU +++ /dev/null @@ -1,31 +0,0 @@ -ATOMIC_SPECIES -O 1.00 ../../PP_ORB/O_ONCV_PBE-1.0.upf -H 1.00 ../../PP_ORB/H_ONCV_PBE-1.0.upf - -LATTICE_CONSTANT -1 - -LATTICE_VECTORS -15 0 0 -0 15 0 -0 0 15 - -ATOMIC_POSITIONS -Direct # Cartesian(Unit is LATTICE_CONSTANT) - -O -0.0 -1 --0.8820276468984 0.0556117645521 0.5787060818012 1 1 1 -H -0.0 -2 --0.7356630073377 0.1707819477768 0.5851375127279 1 1 1 --0.8315809397290 -0.0230736998458 0.4235868438293 1 1 1 - -NUMERICAL_ORBITAL -../../PP_ORB/O_gga_6au_60Ry_1s1p.orb -../../PP_ORB/H_gga_6au_60Ry_1s.orb - -NUMERICAL_DESCRIPTOR -jle.orb diff --git a/tests/09_DeePKS/100_NO_KP_deepks_UT/descriptor_ref.dat b/tests/09_DeePKS/100_NO_KP_deepks_UT/descriptor_ref.dat deleted file mode 100644 index 77389054cc..0000000000 --- a/tests/09_DeePKS/100_NO_KP_deepks_UT/descriptor_ref.dat +++ /dev/null @@ -1,51 +0,0 @@ -O atom_index 1 n_descriptor 117 -0.8747069364 0.7986266843 0.4329417772 0.1421801564 0.03320315091 0.003963463477 3.058507716e-05 0.0007248747042 -0.001140167362 0.001076650529 0.0006700585764 0.0004017688378 0.0001719323946 0.3517122571 0.3588739302 0.728151527 -0.2839746017 0.399603556 0.5360928097 0.1925600905 0.2212596538 0.439193072 0.1078395229 0.1403439522 -0.2764594848 0.08505502145 0.09448603327 0.1721566719 0.04713522826 0.05030286063 0.0977536174 0.02920860244 -0.03210186872 0.05914163037 0.01356913486 0.01611827756 0.0319538476 0.009182467029 0.01027241259 0.01855737402 -0.003920318534 0.004545506154 0.009011839252 0.002379856747 0.002863127943 0.004746052843 0.0006454169253 0.0009156813197 -0.001796429942 0.0004373759769 0.0005845981383 0.0008587654036 -1.89181236e-17 -1.899342892e-18 7.798761982e-18 0.05018542266 -0.1472413436 -1.944513587e-18 1.183629882e-18 7.610123849e-18 0.01293972648 0.03806964572 -3.069850789e-20 6.025774061e-21 -9.31555416e-20 0.0001047824271 0.0005273273373 -2.220421901e-19 4.284966446e-21 5.970111177e-20 0.0007737177674 0.00227214808 --1.81941457e-21 -5.541079751e-23 5.676908831e-22 1.830017298e-07 1.109626981e-05 -6.431997511e-22 7.279915551e-23 3.900861349e-22 -1.645573695e-06 7.147327854e-06 -7.948564249e-21 -3.910076599e-21 1.319700344e-20 3.742461773e-05 0.0001111505842 -1.221705934e-20 -8.45836114e-22 8.534827517e-21 1.964547171e-05 6.170323484e-05 -6.465997739e-22 -3.464428841e-22 2.441226451e-22 2.214903001e-06 -7.3144947e-06 -1.003783204e-21 2.359659731e-22 4.513354355e-22 4.224270918e-06 1.255741634e-05 -1.851938264e-21 2.105328514e-22 -1.715131497e-21 7.340680391e-06 2.166200396e-05 -2.991417692e-22 3.755682264e-22 1.099699525e-21 4.699767022e-06 1.439105958e-05 --6.173709542e-22 -1.678716635e-22 1.049549546e-21 3.203892022e-06 9.396557945e-06 - -H atom_index 1 n_descriptor 117 -0.7905873233 0.5751703182 0.1141390313 0.002727157511 0.004696504788 0.01080141063 0.00351131015 0.0002315761012 -0.0001022589333 0.0004074847207 0.0001964434756 6.272944592e-05 3.175535408e-05 0.1265143491 0.1409002424 0.5920456415 -0.01339566066 0.01559959623 0.2106976575 0.0006468336601 0.001242066823 0.04689743166 0.0007814840097 0.001580353171 -0.01043749179 0.0001109398966 0.000113520286 0.01214728584 3.770287754e-05 0.0001228289147 0.0008772123797 1.13957486e-05 -0.0001282808725 0.001752046463 2.403298147e-05 4.634146604e-05 0.0002125282797 6.818540913e-06 4.926961408e-05 0.000751780829 -2.29436221e-06 1.62432523e-05 0.0001138947886 7.378205581e-06 9.806490396e-06 8.604458141e-05 6.624155928e-06 1.569791848e-05 -9.415085939e-05 3.773212254e-06 1.60669537e-05 9.524414852e-05 9.651629414e-17 0.009890255057 0.2297483509 0.2614908003 -0.4438869551 1.417241343e-17 0.0006576121071 0.04081335117 0.07570469847 0.1810844162 1.12062472e-18 5.609368194e-06 -0.0001322729213 0.000175488595 0.06984845272 2.319014788e-19 3.715336689e-07 0.00231172776 0.004872069471 0.00503799982 -1.691860037e-19 1.917820775e-06 2.416923376e-05 0.0001862087475 0.01375996914 2.65857723e-20 6.727879173e-06 9.130938256e-05 -0.0002984620525 0.0005836134274 -6.537721491e-20 9.49212791e-06 0.0001452635124 0.0002787415756 0.001284577569 4.097569663e-20 -5.593711046e-06 8.675954608e-05 0.0001644529322 0.0006975417233 1.254990756e-20 1.860770935e-07 2.266295686e-06 7.382471965e-05 -0.0004578547372 6.34108509e-22 6.606139539e-07 8.530474034e-06 4.382394445e-05 8.368642682e-05 8.422849462e-22 4.33047291e-09 -2.642604497e-06 2.309344869e-05 7.643252217e-05 5.944281415e-21 9.505174582e-07 1.277449479e-05 4.889142721e-05 8.982938084e-05 --4.536769939e-21 5.63895426e-07 7.586805704e-06 2.34399444e-05 5.65300614e-05 - -H atom_index 2 n_descriptor 117 -0.6360427687 0.3147077698 0.100676169 0.03623449007 0.01353462287 0.004891783702 0.002415617226 0.0006606059752 -0.0007949910045 0.0001847042216 0.0001432072344 6.174491084e-05 7.773589114e-05 0.148658227 0.2474700819 0.5777636998 -0.0006460571165 0.02084268232 0.2290073484 0.0001898732335 0.0007836388774 0.05599584567 0.0009543183317 0.001923628175 -0.008249595837 3.837606799e-05 0.0001495553654 0.01427393432 8.337567842e-06 4.923101371e-05 0.0002840627978 2.671613171e-05 -0.0002319363469 0.001802764214 4.33555526e-05 0.0001091978052 0.0004506267667 2.804436623e-06 6.427258311e-05 0.0006960550125 -2.624426647e-06 1.977586294e-05 0.0001120290457 3.065411252e-06 8.607558997e-06 0.0001038463162 5.581902825e-06 2.813301087e-05 -0.0001337455712 3.155993374e-06 1.704251274e-05 9.542156525e-05 2.747952002e-17 2.838764976e-05 0.2627811563 0.4151685301 -0.4733950243 2.910081666e-17 1.74726214e-05 0.02289804816 0.08996837467 0.1872047242 -1.940735882e-18 3.87282068e-08 -0.0002921239531 0.001093099328 0.07597326091 -1.672144376e-18 7.122359456e-10 0.002200754115 0.00480750386 0.007652873142 -2.07802634e-18 1.120908924e-07 4.182853251e-05 0.0001749068273 0.0121151395 1.728354704e-20 1.525291035e-08 5.67201341e-05 -0.0001770710705 0.001700691968 4.647824711e-20 6.443590992e-09 0.0002139833343 0.0005564251484 0.0007724932538 -6.166427087e-20 -2.527051734e-09 5.506029065e-05 0.0002667044995 0.001200815533 -1.062589664e-12 -8.784004767e-21 1.976181692e-07 7.909438655e-05 -0.0002270830856 2.659550211e-21 2.623614508e-09 1.303830052e-05 8.269317304e-05 0.0001182920077 7.140097431e-21 2.253988038e-09 -1.501798561e-05 2.308001184e-05 0.0001307758879 -1.086479967e-10 -2.500446114e-22 9.457940121e-06 6.683516557e-05 0.0001114420821 -2.979260612e-21 6.456854642e-10 6.857414615e-06 1.252683275e-05 7.722410298e-05 - diff --git a/tests/09_DeePKS/100_NO_KP_deepks_UT/dm_0 b/tests/09_DeePKS/100_NO_KP_deepks_UT/dm_0 deleted file mode 100644 index 5848a100d9..0000000000 --- a/tests/09_DeePKS/100_NO_KP_deepks_UT/dm_0 +++ /dev/null @@ -1,6 +0,0 @@ - (2.275e-01,0.000e+00) (2.183e-02,0.000e+00) (2.712e-02,0.000e+00) (4.020e-03,0.000e+00) (-1.301e-02,0.000e+00) (-1.347e-02,0.000e+00) - (2.183e-02,0.000e+00) (1.402e-01,0.000e+00) (-2.720e-02,0.000e+00) (4.121e-02,0.000e+00) (2.115e-03,0.000e+00) (-7.348e-02,0.000e+00) - (2.712e-02,0.000e+00) (-2.720e-02,0.000e+00) (1.420e-01,0.000e+00) (-3.999e-02,0.000e+00) (-6.832e-02,0.000e+00) (-2.481e-02,0.000e+00) - (4.020e-03,0.000e+00) (4.121e-02,0.000e+00) (-3.999e-02,0.000e+00) (1.610e-01,0.000e+00) (-5.312e-02,0.000e+00) (3.660e-02,0.000e+00) - (-1.301e-02,0.000e+00) (2.115e-03,0.000e+00) (-6.832e-02,0.000e+00) (-5.312e-02,0.000e+00) (6.813e-02,0.000e+00) (-5.746e-03,0.000e+00) - (-1.347e-02,0.000e+00) (-7.348e-02,0.000e+00) (-2.481e-02,0.000e+00) (3.660e-02,0.000e+00) (-5.746e-03,0.000e+00) (6.682e-02,0.000e+00) \ No newline at end of file diff --git a/tests/09_DeePKS/100_NO_KP_deepks_UT/dm_1 b/tests/09_DeePKS/100_NO_KP_deepks_UT/dm_1 deleted file mode 100644 index 5848a100d9..0000000000 --- a/tests/09_DeePKS/100_NO_KP_deepks_UT/dm_1 +++ /dev/null @@ -1,6 +0,0 @@ - (2.275e-01,0.000e+00) (2.183e-02,0.000e+00) (2.712e-02,0.000e+00) (4.020e-03,0.000e+00) (-1.301e-02,0.000e+00) (-1.347e-02,0.000e+00) - (2.183e-02,0.000e+00) (1.402e-01,0.000e+00) (-2.720e-02,0.000e+00) (4.121e-02,0.000e+00) (2.115e-03,0.000e+00) (-7.348e-02,0.000e+00) - (2.712e-02,0.000e+00) (-2.720e-02,0.000e+00) (1.420e-01,0.000e+00) (-3.999e-02,0.000e+00) (-6.832e-02,0.000e+00) (-2.481e-02,0.000e+00) - (4.020e-03,0.000e+00) (4.121e-02,0.000e+00) (-3.999e-02,0.000e+00) (1.610e-01,0.000e+00) (-5.312e-02,0.000e+00) (3.660e-02,0.000e+00) - (-1.301e-02,0.000e+00) (2.115e-03,0.000e+00) (-6.832e-02,0.000e+00) (-5.312e-02,0.000e+00) (6.813e-02,0.000e+00) (-5.746e-03,0.000e+00) - (-1.347e-02,0.000e+00) (-7.348e-02,0.000e+00) (-2.481e-02,0.000e+00) (3.660e-02,0.000e+00) (-5.746e-03,0.000e+00) (6.682e-02,0.000e+00) \ No newline at end of file diff --git a/tests/09_DeePKS/100_NO_KP_deepks_UT/dm_2 b/tests/09_DeePKS/100_NO_KP_deepks_UT/dm_2 deleted file mode 100644 index 5848a100d9..0000000000 --- a/tests/09_DeePKS/100_NO_KP_deepks_UT/dm_2 +++ /dev/null @@ -1,6 +0,0 @@ - (2.275e-01,0.000e+00) (2.183e-02,0.000e+00) (2.712e-02,0.000e+00) (4.020e-03,0.000e+00) (-1.301e-02,0.000e+00) (-1.347e-02,0.000e+00) - (2.183e-02,0.000e+00) (1.402e-01,0.000e+00) (-2.720e-02,0.000e+00) (4.121e-02,0.000e+00) (2.115e-03,0.000e+00) (-7.348e-02,0.000e+00) - (2.712e-02,0.000e+00) (-2.720e-02,0.000e+00) (1.420e-01,0.000e+00) (-3.999e-02,0.000e+00) (-6.832e-02,0.000e+00) (-2.481e-02,0.000e+00) - (4.020e-03,0.000e+00) (4.121e-02,0.000e+00) (-3.999e-02,0.000e+00) (1.610e-01,0.000e+00) (-5.312e-02,0.000e+00) (3.660e-02,0.000e+00) - (-1.301e-02,0.000e+00) (2.115e-03,0.000e+00) (-6.832e-02,0.000e+00) (-5.312e-02,0.000e+00) (6.813e-02,0.000e+00) (-5.746e-03,0.000e+00) - (-1.347e-02,0.000e+00) (-7.348e-02,0.000e+00) (-2.481e-02,0.000e+00) (3.660e-02,0.000e+00) (-5.746e-03,0.000e+00) (6.682e-02,0.000e+00) \ No newline at end of file diff --git a/tests/09_DeePKS/100_NO_KP_deepks_UT/dm_3 b/tests/09_DeePKS/100_NO_KP_deepks_UT/dm_3 deleted file mode 100644 index 91d79d3da9..0000000000 --- a/tests/09_DeePKS/100_NO_KP_deepks_UT/dm_3 +++ /dev/null @@ -1,6 +0,0 @@ - (2.275e-01,1.926e-34) (2.183e-02,-8.474e-18) (2.712e-02,3.858e-18) (4.020e-03,-1.245e-18) (-1.301e-02,-2.125e-18) (6.735e-03,1.167e-02) - (2.183e-02,8.474e-18) (1.402e-01,0.000e+00) (-2.720e-02,-1.467e-17) (4.121e-02,1.077e-17) (2.115e-03,2.758e-18) (3.674e-02,6.364e-02) - (2.712e-02,-3.858e-18) (-2.720e-02,1.467e-17) (1.420e-01,0.000e+00) (-3.999e-02,8.663e-19) (-6.832e-02,-3.105e-18) (1.241e-02,2.149e-02) - (4.020e-03,1.245e-18) (4.121e-02,-1.077e-17) (-3.999e-02,-8.663e-19) (1.610e-01,1.578e-30) (-5.312e-02,1.465e-17) (-1.830e-02,-3.170e-02) - (-1.301e-02,2.125e-18) (2.115e-03,-2.758e-18) (-6.832e-02,3.105e-18) (-5.312e-02,-1.465e-17) (6.813e-02,0.000e+00) (2.873e-03,4.976e-03) - (6.735e-03,-1.167e-02) (3.674e-02,-6.364e-02) (1.241e-02,-2.149e-02) (-1.830e-02,3.170e-02) (2.873e-03,-4.976e-03) (6.682e-02,0.000e+00) \ No newline at end of file diff --git a/tests/09_DeePKS/100_NO_KP_deepks_UT/dm_4 b/tests/09_DeePKS/100_NO_KP_deepks_UT/dm_4 deleted file mode 100644 index 91d79d3da9..0000000000 --- a/tests/09_DeePKS/100_NO_KP_deepks_UT/dm_4 +++ /dev/null @@ -1,6 +0,0 @@ - (2.275e-01,1.926e-34) (2.183e-02,-8.474e-18) (2.712e-02,3.858e-18) (4.020e-03,-1.245e-18) (-1.301e-02,-2.125e-18) (6.735e-03,1.167e-02) - (2.183e-02,8.474e-18) (1.402e-01,0.000e+00) (-2.720e-02,-1.467e-17) (4.121e-02,1.077e-17) (2.115e-03,2.758e-18) (3.674e-02,6.364e-02) - (2.712e-02,-3.858e-18) (-2.720e-02,1.467e-17) (1.420e-01,0.000e+00) (-3.999e-02,8.663e-19) (-6.832e-02,-3.105e-18) (1.241e-02,2.149e-02) - (4.020e-03,1.245e-18) (4.121e-02,-1.077e-17) (-3.999e-02,-8.663e-19) (1.610e-01,1.578e-30) (-5.312e-02,1.465e-17) (-1.830e-02,-3.170e-02) - (-1.301e-02,2.125e-18) (2.115e-03,-2.758e-18) (-6.832e-02,3.105e-18) (-5.312e-02,-1.465e-17) (6.813e-02,0.000e+00) (2.873e-03,4.976e-03) - (6.735e-03,-1.167e-02) (3.674e-02,-6.364e-02) (1.241e-02,-2.149e-02) (-1.830e-02,3.170e-02) (2.873e-03,-4.976e-03) (6.682e-02,0.000e+00) \ No newline at end of file diff --git a/tests/09_DeePKS/100_NO_KP_deepks_UT/dm_5 b/tests/09_DeePKS/100_NO_KP_deepks_UT/dm_5 deleted file mode 100644 index 91d79d3da9..0000000000 --- a/tests/09_DeePKS/100_NO_KP_deepks_UT/dm_5 +++ /dev/null @@ -1,6 +0,0 @@ - (2.275e-01,1.926e-34) (2.183e-02,-8.474e-18) (2.712e-02,3.858e-18) (4.020e-03,-1.245e-18) (-1.301e-02,-2.125e-18) (6.735e-03,1.167e-02) - (2.183e-02,8.474e-18) (1.402e-01,0.000e+00) (-2.720e-02,-1.467e-17) (4.121e-02,1.077e-17) (2.115e-03,2.758e-18) (3.674e-02,6.364e-02) - (2.712e-02,-3.858e-18) (-2.720e-02,1.467e-17) (1.420e-01,0.000e+00) (-3.999e-02,8.663e-19) (-6.832e-02,-3.105e-18) (1.241e-02,2.149e-02) - (4.020e-03,1.245e-18) (4.121e-02,-1.077e-17) (-3.999e-02,-8.663e-19) (1.610e-01,1.578e-30) (-5.312e-02,1.465e-17) (-1.830e-02,-3.170e-02) - (-1.301e-02,2.125e-18) (2.115e-03,-2.758e-18) (-6.832e-02,3.105e-18) (-5.312e-02,-1.465e-17) (6.813e-02,0.000e+00) (2.873e-03,4.976e-03) - (6.735e-03,-1.167e-02) (3.674e-02,-6.364e-02) (1.241e-02,-2.149e-02) (-1.830e-02,3.170e-02) (2.873e-03,-4.976e-03) (6.682e-02,0.000e+00) \ No newline at end of file diff --git a/tests/09_DeePKS/100_NO_KP_deepks_UT/dm_6 b/tests/09_DeePKS/100_NO_KP_deepks_UT/dm_6 deleted file mode 100644 index 6db4f7eebc..0000000000 --- a/tests/09_DeePKS/100_NO_KP_deepks_UT/dm_6 +++ /dev/null @@ -1,6 +0,0 @@ - (2.275e-01,4.815e-35) (2.183e-02,-4.084e-18) (2.712e-02,4.459e-18) (4.020e-03,-4.065e-18) (-1.301e-02,-5.700e-19) (6.735e-03,-1.167e-02) - (2.183e-02,4.084e-18) (1.402e-01,0.000e+00) (-2.720e-02,-1.169e-17) (4.121e-02,-4.451e-18) (2.115e-03,-6.255e-18) (3.674e-02,-6.364e-02) - (2.712e-02,-4.459e-18) (-2.720e-02,1.169e-17) (1.420e-01,0.000e+00) (-3.999e-02,1.551e-17) (-6.832e-02,8.335e-18) (1.241e-02,-2.149e-02) - (4.020e-03,4.065e-18) (4.121e-02,4.451e-18) (-3.999e-02,-1.551e-17) (1.610e-01,0.000e+00) (-5.312e-02,-7.074e-18) (-1.830e-02,3.170e-02) - (-1.301e-02,5.700e-19) (2.115e-03,6.255e-18) (-6.832e-02,-8.335e-18) (-5.312e-02,7.074e-18) (6.813e-02,6.163e-33) (2.873e-03,-4.976e-03) - (6.735e-03,1.167e-02) (3.674e-02,6.364e-02) (1.241e-02,2.149e-02) (-1.830e-02,-3.170e-02) (2.873e-03,4.976e-03) (6.682e-02,-3.469e-18) \ No newline at end of file diff --git a/tests/09_DeePKS/100_NO_KP_deepks_UT/dm_7 b/tests/09_DeePKS/100_NO_KP_deepks_UT/dm_7 deleted file mode 100644 index 6db4f7eebc..0000000000 --- a/tests/09_DeePKS/100_NO_KP_deepks_UT/dm_7 +++ /dev/null @@ -1,6 +0,0 @@ - (2.275e-01,4.815e-35) (2.183e-02,-4.084e-18) (2.712e-02,4.459e-18) (4.020e-03,-4.065e-18) (-1.301e-02,-5.700e-19) (6.735e-03,-1.167e-02) - (2.183e-02,4.084e-18) (1.402e-01,0.000e+00) (-2.720e-02,-1.169e-17) (4.121e-02,-4.451e-18) (2.115e-03,-6.255e-18) (3.674e-02,-6.364e-02) - (2.712e-02,-4.459e-18) (-2.720e-02,1.169e-17) (1.420e-01,0.000e+00) (-3.999e-02,1.551e-17) (-6.832e-02,8.335e-18) (1.241e-02,-2.149e-02) - (4.020e-03,4.065e-18) (4.121e-02,4.451e-18) (-3.999e-02,-1.551e-17) (1.610e-01,0.000e+00) (-5.312e-02,-7.074e-18) (-1.830e-02,3.170e-02) - (-1.301e-02,5.700e-19) (2.115e-03,6.255e-18) (-6.832e-02,-8.335e-18) (-5.312e-02,7.074e-18) (6.813e-02,6.163e-33) (2.873e-03,-4.976e-03) - (6.735e-03,1.167e-02) (3.674e-02,6.364e-02) (1.241e-02,2.149e-02) (-1.830e-02,-3.170e-02) (2.873e-03,4.976e-03) (6.682e-02,-3.469e-18) \ No newline at end of file diff --git a/tests/09_DeePKS/100_NO_KP_deepks_UT/dm_8 b/tests/09_DeePKS/100_NO_KP_deepks_UT/dm_8 deleted file mode 100644 index 6db4f7eebc..0000000000 --- a/tests/09_DeePKS/100_NO_KP_deepks_UT/dm_8 +++ /dev/null @@ -1,6 +0,0 @@ - (2.275e-01,4.815e-35) (2.183e-02,-4.084e-18) (2.712e-02,4.459e-18) (4.020e-03,-4.065e-18) (-1.301e-02,-5.700e-19) (6.735e-03,-1.167e-02) - (2.183e-02,4.084e-18) (1.402e-01,0.000e+00) (-2.720e-02,-1.169e-17) (4.121e-02,-4.451e-18) (2.115e-03,-6.255e-18) (3.674e-02,-6.364e-02) - (2.712e-02,-4.459e-18) (-2.720e-02,1.169e-17) (1.420e-01,0.000e+00) (-3.999e-02,1.551e-17) (-6.832e-02,8.335e-18) (1.241e-02,-2.149e-02) - (4.020e-03,4.065e-18) (4.121e-02,4.451e-18) (-3.999e-02,-1.551e-17) (1.610e-01,0.000e+00) (-5.312e-02,-7.074e-18) (-1.830e-02,3.170e-02) - (-1.301e-02,5.700e-19) (2.115e-03,6.255e-18) (-6.832e-02,-8.335e-18) (-5.312e-02,7.074e-18) (6.813e-02,6.163e-33) (2.873e-03,-4.976e-03) - (6.735e-03,1.167e-02) (3.674e-02,6.364e-02) (1.241e-02,2.149e-02) (-1.830e-02,-3.170e-02) (2.873e-03,4.976e-03) (6.682e-02,-3.469e-18) \ No newline at end of file diff --git a/tests/09_DeePKS/100_NO_KP_deepks_UT/dphialpha_x_ref.dat b/tests/09_DeePKS/100_NO_KP_deepks_UT/dphialpha_x_ref.dat deleted file mode 100644 index c000c81376..0000000000 --- a/tests/09_DeePKS/100_NO_KP_deepks_UT/dphialpha_x_ref.dat +++ /dev/null @@ -1,399 +0,0 @@ -iat : 0 -ad : 5 2.716543093 -R : 0 -1 0 -iw : 5 -0.03719228563 0.06326212401 0.005904638746 -0.01770995014 -0.008402270755 0.006296706408 -0.0033525522 -0.0005310616086 -0.003006405764 0.0006612794044 0.000641022626 0.0007773203262 --0.001056451635 -0.04246117647 0.1901812122 0.02153876871 -0.07609472985 0.03739925311 -0.03859965556 -0.0304390596 -0.01835192726 0.01544045453 0.0131056195 -0.01623837849 --0.006647929489 0.01531614446 0.009506313725 -0.007769235816 -0.00194932561 -6.162237318e-05 -0.0009888108842 -0.006226423124 0.001865613208 0.003158402539 -0.001034933717 -0.00438047542 -0.0005249783407 0.003118532244 0.002893560656 -0.001581900228 0.000521727661 -0.001660397397 --0.0002646504962 -0.0008172124293 0.002088117642 0.0004145374897 -0.0006433477543 -0.002155350067 -0.0003263432536 0.0005385032696 0.001695504289 -0.0002731600568 0.0658851163 -0.1998901647 --0.02695360956 -0.07465289604 0.1013958723 0.07294539851 -0.0800527009 -0.05505529722 --0.04573726004 0.04060736778 0.03363937396 0.005715309229 -0.0329987073 -0.009950848946 --0.00289913596 -0.006037237173 0.02621412073 0.001060174711 0.008904572466 -0.01329732076 --0.01099888955 -0.004927793296 0.01133543566 0.002454132693 0.002499662254 -0.003019852252 --0.003319722187 0.003463302297 0.0001598275826 0.001683955423 0.004397683492 -0.004115102337 --0.003446055482 -0.002571552799 0.002087418315 0.001833905668 0.005834235253 -0.002784726169 -0.0009007713968 -0.002959462129 -0.0004770052544 -0.001836181558 0.0007811980729 -0.0003175748503 -0.0009314176662 -0.001842708495 0.001134835104 0.001549174095 0.0009234791101 -0.0005756541119 -0.0002936081537 -0.002726670087 0.0002075751221 -0.0008124603136 0.001383125039 0.0004242744942 -0.00255739287 -0.0008598008083 0.0005239914922 -0.001297257827 0.0006302995214 -0.001527998442 --0.0003264463217 -0.0006137523411 0.0007750893351 -ad : 8 2.795323233 -R : 0 0 0 -iw : 4 -0.1063188494 0.1724080369 0.003816284915 -0.05138976598 -0.01685513954 0.020628203 -0.005963095855 -0.003743718397 -0.006995288972 0.003520718303 0.001117439725 0.001345814204 --0.00272057625 0.005010105653 0.08478580572 -0.0897179481 0.008565955686 -0.1418750301 --0.1533939643 0.002851713856 -0.07668163902 -0.05106677054 -0.001805677059 0.0223352186 -0.03233497492 -0.001551668389 0.04157951602 0.02778634098 0.0004737171928 -0.01057733779 --0.008483041569 0.0006732198217 -0.01216429992 -0.01205561423 -3.050188514e-05 -0.003395291424 -0.0005462093492 -0.0003870818181 0.01108391424 0.00693162757 2.296112639e-05 -0.002332834785 --0.0004111739928 0.0001343187941 -0.0008256462065 -0.002405299894 4.152329003e-05 -0.002952152834 --0.0007435740158 -0.0001007502057 0.003900257395 0.001804173873 0.05229239227 0.002847256415 --0.004633460046 -0.1732875406 -0.05098694937 -0.06612384823 -0.007242442218 -0.009040324826 --0.04685397835 0.1296932839 -0.06081883078 -0.0058112145 -0.004837051591 0.01899241928 -0.1040637218 -0.004456429874 -0.0001608189512 0.0007296198392 0.02074361062 0.002879848713 -0.02512533756 0.002364458664 0.001849948009 -0.0104939152 -0.04234129864 0.003795736033 -0.0003412904859 0.0002143766496 -0.002747451414 -0.00611162403 -0.00616492574 -0.0006345460532 --0.0006764038991 -0.001396895846 0.01136306773 -0.006212795637 -0.0005402597162 -0.0002757846281 -0.005837693634 0.009674644916 0.004145578236 0.0003748113535 0.0002425832045 -0.002849865057 --0.006711895494 0.001266026728 0.0001372915759 0.0001674663673 0.0007967122128 -0.002458534677 -0.0008604496025 5.552871216e-05 -4.073973903e-05 -0.002217610063 -0.0009943746622 -0.002536885019 --0.0002175142268 -9.996578148e-05 0.002609469241 0.003895113489 0.0006099449712 4.087751203e-05 --2.268139439e-05 -0.001461353807 -0.0007320098131 -ad : 13 0 -R : 0 0 0 -iw : 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0.2846209031 0 0 0.417622686 -0 0 0.3779946587 0 0 0.2568325753 -0 0 0.1356056091 0 0 0.03886562428 -0 0 -0.02055185268 0 0 -0.0565302244 -0 0 -0.06614616672 0 0 -0.06635081072 -0 0 -0.05336765123 0 0 -0.04335800633 -0 0 -0.0279082478 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 -iw : 1 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0.2196692933 -0 0 0 0 0.3454760815 0 -0 0 0 0.3956494725 0 0 -0 0 0.385982285 0 0 0 -0 0.3620538235 0 0 0 0 -0.3183349127 0 0 0 0 0.2809343011 -0 0 0 0 0.2307824615 0 -0 0 0 0.193666922 0 0 -0 0 0.1448689215 0 0 0 -0 0.1135446365 0 0 0 0 -0.07120939607 0 0 0 0 0.05493176412 -0 0 0 -iw : 2 --0.08010138007 -0.3044588881 -0.4494156118 -0.5063041764 -0.4943778793 -0.4624871691 --0.4079404948 -0.3591758497 -0.2958949735 -0.2475786472 -0.1856938757 -0.1448990875 --0.09127204244 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 -0.1268261256 0 -0 0.2196692933 0 -0.1994607087 0 0 -0.3454760815 0 -0.2284283294 0 0 0.3956494725 -0 -0.2228469762 0 0 0.385982285 0 --0.2090318725 0 0 0.3620538235 0 -0.1837907476 -0 0 0.3183349127 0 -0.1621974944 0 -0 0.2809343011 0 -0.1332423163 0 0 -0.2307824615 0 -0.1118136496 0 0 0.193666922 -0 -0.08364011082 0 0 0.1448689215 0 --0.06555502644 0 0 0.1135446365 0 -0.04111276399 -0 0 0.07120939607 0 -0.0317148688 0 -0 0.05493176412 0 -iw : 3 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0.2196692933 0 0 0 -0 0.3454760815 0 0 0 0 -0.3956494725 0 0 0 0 0.385982285 -0 0 0 0 0.3620538235 0 -0 0 0 0.3183349127 0 0 -0 0 0.2809343011 0 0 0 -0 0.2307824615 0 0 0 0 -0.193666922 0 0 0 0 0.1448689215 -0 0 0 0 0.1135446365 0 -0 0 0 0.07120939607 0 0 -0 0 0.05493176412 -iat : 1 -ad : 2 4.049413304 -R : 0 -1 0 -iw : 5 --0.0506225292 -0.01832793931 0.03559515956 -0.01577279662 4.565875249e-05 0.003676826473 --0.001033308928 -0.00287371668 0.003786363301 -0.002408958411 0.001388279103 -0.0007534841003 -0.0007361134882 0.05437382619 0.08301619361 -0.06524685637 0.02371941073 -0.04991067004 --0.02846253599 -0.02842980323 0.01957342315 0.03411485668 0.007778752254 -0.004690880804 --0.009334254486 0.004340723443 0.001055907581 -0.00520872962 -0.004027089408 -0.003207876769 -0.004832378786 -4.054579924e-05 0.005604900974 4.865366528e-05 0.002449002809 -0.00583036632 --0.002938725223 -0.00281200149 0.005031287315 0.003374312057 0.001341375818 -0.003753450511 --0.001609608178 -0.0001409779426 0.00282330723 0.0001691690326 0.00034321293 -0.002820656291 --0.0004118445641 -0.0005033536413 0.002784327995 0.0006040083076 -0.04352924029 -0.07783976697 -0.07673427718 0.1035266084 0.09340523651 0.005768099662 0.04390420591 0.0422784545 -0.005509172308 -0.05268364612 0.002447302547 -0.01333921581 -0.03197507598 -0.01596131799 -0.01600663332 -0.000322560131 0.0009112901382 0.002892123318 0.001618979375 -0.001093519087 --0.002027487445 -0.0003245449492 0.008728329701 0.006711626882 0.0003894435829 0.002383360398 -0.003240903663 -0.005795722238 -0.006252886081 -0.003888980979 -0.001717947303 -0.005936472858 --0.001444036708 0.002446169967 0.007123577998 0.001171521405 0.005910070278 0.003891745986 --0.0006023714953 -0.007091895744 -0.0009143415654 -0.004197977941 -0.002389932334 0.000707506748 -0.005037439572 0.0008845389946 0.003130754985 0.0008593254148 -0.001217026958 -0.00375680608 --0.0009470030802 -0.002543512538 0.0003421113141 0.001765679767 0.003052133883 0.0008817002289 -0.00241149568 -0.0002507914596 -0.001619092902 -0.002893717866 -0.0007596282344 -0.002751801332 --0.0008365897172 0.001009010368 0.003302073789 -ad : 5 2.795323233 -R : 0 0 0 -iw : 0 --0.08831681522 -0.1872142396 -0.01026406968 0.07003273591 0.01573639458 -0.01234678978 -0.001004923557 -0.004856378552 -0.003990076656 0.00248910063 0.005441299887 -0.002149050405 --0.00165863228 0.004797313098 0.07029149862 -0.08590738746 0.0103509364 -0.1626594253 --0.1853583216 0.003639000451 -0.1048074046 -0.0651650237 -0.002144946259 0.03070769065 -0.03841040299 -0.00126162124 0.03184262878 0.02259235169 0.0001844048761 -0.004073684636 --0.00330221122 -0.0001960974826 0.00555005523 0.003511595361 6.890000606e-05 -0.00140536205 --0.001233819723 0.0003593652867 -0.00717795259 -0.006435296653 9.160661604e-05 -0.003637813624 --0.001640435989 -0.0002822736441 0.006896001732 0.005054786049 -5.256256975e-05 0.0008974316613 -0.000941258774 8.066054844e-05 -0.001137195896 -0.001444420418 -0.05075947485 -0.002634580653 -0.005026218168 0.1776437924 0.04717848019 0.07836148815 0.008740994857 0.01136054034 -0.06707721589 -0.1565284601 0.08148295751 0.00771216735 0.006179849608 -0.03081270593 --0.1381048381 0.003817819838 0.000128448377 -0.0006632126188 -0.01845203354 -0.002300176008 --0.01559521487 -0.001477505833 -0.001188732229 0.005790987424 0.02645828268 0.0008043144864 -6.588769298e-05 1.91154074e-05 -0.001051873836 -0.001179877038 -0.005643616791 -0.0005298203854 --0.0004102926866 0.002450669138 0.009487703681 -0.00378252632 -0.0003532527986 -0.0002674259968 -0.001777558256 0.006325837905 0.003931634465 0.0003943789745 0.000389243704 0.0001388141899 --0.007062300642 0.005450727733 0.0004982277082 0.0003411066813 -0.003351653172 -0.008921961085 --0.002725085439 -0.000256742781 -0.0002018491229 0.001116666001 0.00459759476 -0.001968505941 --0.0001915079589 -0.0001705422183 0.0003651087563 0.00342940894 -0.0001445214378 -3.671633001e-06 -2.997660001e-05 0.0007854473544 6.574938771e-05 -iw : 1 --0.0008971558933 -0.007181086781 -0.008529917698 0.0006281201034 0.005585627699 0.001345880909 --0.002993383456 -0.001408907747 0.001361075533 0.001073624419 -0.0005465528475 -0.0005871188148 -0.0001339106472 -0.07211496016 0.001753866114 -0.001115536614 -0.1343328494 -0.002774392998 --0.006840998259 -0.04477621203 -0.01024662418 -0.009629554227 0.03155860931 -0.004776836051 --0.002672747002 0.02795947125 0.004353989825 0.004401251911 -0.008732108672 0.004411166501 -0.003175228516 -0.01186867412 -0.001458603671 -0.001561115205 6.141691305e-05 -0.002792383766 --0.002199366014 0.00660591557 0.0001281168841 0.0003298522745 -0.0001434339597 0.001574517484 -0.001236366351 -0.001702239681 0.0001722121398 7.680098285e-05 -0.001140363901 -0.0006320923287 --0.0005378401005 0.00130966413 -0.0001995615422 -0.0001119622349 0.003274846247 0.0398274588 --0.07031926467 0.003520473693 0.001396777076 0.01037179628 -0.1119103168 -0.142554729 -0.005631591888 -0.003440378729 0.01198416878 -0.1020307003 -0.0827609941 0.000864953374 --0.01201602154 0.004552718102 -0.002483927325 0.0119179496 -0.002656374918 -0.008818823077 --0.003412542934 0.04528273281 0.03653947607 -0.001139402725 0.002148803677 -0.003956349261 -0.00776727669 0.004201007155 0.001306199135 0.006235324037 0.0002903430142 -0.01436286333 --0.01367458691 0.0008243292673 0.0008538128982 0.002250091607 -0.009312646386 -0.005462825341 --0.0005312792271 -0.003244652434 0.0004938693486 0.007320669008 0.005450321764 -0.0005743766367 --0.001364549349 -0.001000789956 0.002713352612 0.00271110435 0.0002169330974 0.001415542371 --0.0004872125605 -0.00030437548 -0.001193894512 0.0002786643026 0.0009357549676 0.0003494262718 --0.002916322621 -0.001580190827 -3.212313797e-05 -0.000432072157 0.0002400564866 0.001376873527 -0.0005341199924 -0.0001335760978 -0.0004557487735 -iw : 2 --0.04169952805 0.04828033955 0.1903776257 0.02656682404 -0.1142674259 -0.0479110123 -0.06253974856 0.03633006142 -0.02581269367 -0.02732078759 0.01145329618 0.01292737637 --0.001484803229 0.001753866114 -0.184268486 -0.0314071758 -0.002774392998 -0.206290895 -0.04968215527 -0.01024662418 0.142561824 0.1834903612 -0.004776836051 0.1715285157 -0.08554069687 0.004353989825 -0.04267648868 -0.07796862187 0.004411166501 -0.1174977039 --0.07899250728 -0.001458603671 0.009282913267 0.02611979418 -0.002792383766 0.06342558901 -0.05000432309 0.0001281168841 0.0103329489 -0.002294239834 0.001574517484 -0.0359813294 --0.02819550878 0.0001722121398 -0.007315039411 -0.003083871057 -0.0006320923287 0.01204426882 -0.01131912791 -0.0001995615422 0.007148394715 0.003573627648 0.0474477005 0.009637082718 -0.001396777076 -0.05724718714 -0.1725750607 0.1232348003 0.01159681697 -0.003440378729 --0.2748650406 -0.2076687988 -0.04152553914 -0.005950441799 -0.01201602154 -0.1425803087 -0.1065569203 -0.1256902904 -0.01249772274 -0.008818823077 0.0602722763 0.2238016757 --0.02416537658 -0.001368570751 0.002148803677 0.08021514402 0.02450753898 0.07611547328 -0.007423441148 0.006235324037 -0.02052564579 -0.1329345035 0.02980475024 0.002611080286 -0.0008538128982 -0.03638145502 -0.0467576498 -0.03415598482 -0.003496238518 -0.003244652434 -0.001237814303 0.06260852916 -0.0265478581 -0.002337335891 -0.001364549349 0.02162291324 -0.04185560041 0.01543935343 0.001488618697 0.001415542371 -0.001472114098 -0.02665728515 -0.01361280772 0.00131820939 0.0009357549676 -0.00687339465 -0.02360569812 -0.002953745363 --0.0003701541855 -0.000432072157 -0.002597122224 0.006628497742 -0.007304514089 -0.0006367209255 --0.0004557487735 0.004515965875 0.01140201403 -iw : 3 -0.01606572624 0.1285945678 0.1527486178 -0.0112479957 -0.1000240495 -0.02410122299 -0.05360370422 0.02522986957 -0.02437331914 -0.01922581809 0.009787338513 0.01051376937 --0.002397991045 -0.001115536614 -0.0314071758 -0.05220089853 -0.006840998259 0.04968215527 --0.01221040243 -0.009629554227 0.1834903612 0.1271262913 -0.002672747002 0.08554069687 -0.07927129564 0.004401251911 -0.07796862187 -0.05060971309 0.003175228516 -0.07899250728 --0.06541487067 -0.001561115205 0.02611979418 0.01599965761 -0.002199366014 0.05000432309 -0.03932351717 0.0003298522745 -0.002294239834 0.0007175400151 0.001236366351 -0.02819550878 --0.02221449413 7.680098285e-05 -0.003083871057 -0.003073256542 -0.0005378401005 0.01131912791 -0.008460917474 -0.0001119622349 0.003573627648 0.003308363966 0.06328167989 0.001396777076 -0.002596135332 0.007351288724 0.01489281798 0.06192017993 -0.003440378729 0.0003336331912 -0.04213482787 -0.05049421153 -0.07006541456 -0.01201602154 -0.007680348547 0.06796105648 -0.1124739521 -0.101537272 -0.008818823077 -0.007184972908 0.03601601213 0.1549457654 --0.002464762455 0.002148803677 0.0009102346985 -0.01630103089 0.00692324881 0.0630820026 -0.006235324037 0.004811042878 -0.02787427714 -0.1035429445 0.01846650383 0.0008538128982 -0.0009624217509 -0.001098140012 -0.02960475003 -0.03056566456 -0.003244652434 -0.002433680063 -0.01513007053 0.0486094404 -0.01819835668 -0.001364549349 -0.001188582618 0.004884800259 -0.03167999484 0.01310874521 0.001415542371 0.001054752502 -0.006663376776 -0.02255627787 -0.01072523852 0.0009357549676 0.0007608807844 -0.003835145576 -0.01700905543 -0.003482101463 --0.000432072157 -0.0003059079096 0.002177511919 0.004796836644 -0.005190946102 -0.0004557487735 --0.0003695687299 0.001876911651 0.00951269718 -ad : 13 0 -R : 0 0 0 -iw : 4 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0.3077382509 0 0 0.3401131198 -0 0 0.2965292282 0 0 0.2106036853 -0 0 0.1684140665 0 0 0.1131428397 -0 0 0.1019205148 0 0 0.0611381405 -0 0 0.06480534154 0 0 0.0295606475 -0 0 0.04222101471 0 0 0.008651835175 -0 0 0.03034646073 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 -iat : 2 -ad : 9 2.716543093 -R : 0 1 0 -iw : 0 --0.03086594995 -0.0688308124 -0.009367037653 0.02419603764 0.008011497158 -0.003769605614 -0.0002602018648 -0.001252192722 -0.001906012399 6.200902055e-05 0.002127108425 -7.191532159e-05 --0.0006138095775 -0.04066554248 0.171208411 0.02062791912 -0.09194342603 0.05397432455 -0.04663903246 -0.03890162984 -0.03039006954 0.01973316044 0.01543127082 -0.01514977021 --0.007827634575 0.01251543893 0.005781322274 -0.006348555712 -0.0008442295715 -3.075857838e-06 -0.0004282421495 0.00178283319 0.001455719818 -0.0009043562829 0.0005605485685 0.0003476163854 --0.0002843427096 -0.003012172774 0.0003959309513 0.001527948542 -0.002035552733 -0.002043069603 -0.001032550277 0.00198994655 0.0008466158939 -0.001009416179 0.00119330491 -1.254077247e-05 --0.0006053133848 -0.0003727896545 0.0006445885078 0.0001891005105 -0.06943204279 0.2058733971 -0.0292574651 0.07742321881 -0.1044309144 -0.09326008858 0.1093077655 0.06914525341 -0.0602938682 -0.05544723144 -0.04177151865 -0.01429447261 0.04226067022 0.01047545864 -0.007250984663 0.004980970504 -0.02363521935 -0.0005163688738 -0.007871265038 0.01198915257 -0.007286858123 0.002173989294 -0.007315139221 -0.001910925061 -0.001102773321 0.0002424994342 --0.0009585800311 -5.942860158e-05 -0.0003330103971 0.0004862473275 0.002084939957 0.001040149937 --0.002167662899 -0.0004374909475 -0.0005276243094 0.002492207678 0.001508930877 -0.002638496951 --0.0004535390886 -0.0007654171611 -0.001891783065 0.001944533123 0.001451301546 0.001151776472 --0.0009863798571 -0.002335553451 -0.002727062429 0.002707003072 8.190443423e-05 0.001383324057 -0.0003534238014 3.648537279e-05 -0.0003424873341 -0.0001107034679 -1.850749487e-05 0.001316907113 --8.984702084e-05 -0.001235853483 -0.0004715051643 4.557561429e-05 3.875338091e-05 0.001157223537 --0.0002433947416 0.0002892376751 -0.0005870108221 -iw : 1 -0.007512662275 0.06214417456 0.08021662279 0.00435568047 -0.0485467061 -0.0207061922 -0.02245284353 0.01804207189 -0.007532133214 -0.01209405687 0.001357878547 0.005879953779 -0.0007131393521 -0.01271461548 -0.07392608204 -0.006425304855 0.03066904992 -0.1263447671 --0.04070486127 0.100989714 -0.02271848904 -0.06147770693 0.0559494222 0.04376845463 --0.02366313759 -0.03416635323 0.02089251147 0.02323517205 -0.04823831397 -0.01924691064 -0.02381269451 0.004167967429 -0.01145784998 -0.004478025606 0.02817615458 0.006113174233 --0.01485527948 0.006400088345 0.008354484196 -0.002089247346 -0.01380956122 -0.002983508429 -0.007283144387 -0.006195217884 -0.003264737563 0.002911989559 0.004390556549 -0.0003065409349 --0.002547119363 0.003829980733 0.002218738179 -0.001763267402 -0.009649355291 0.02623311226 -0.006590001188 -0.03504624533 0.04885913026 0.01640681146 -0.1242023339 -0.02561470197 --0.08034187602 0.09087697202 0.07170929137 -0.08211992588 -0.08222645348 -0.06246735124 -0.03832616843 0.06271702875 0.02740117224 -0.06723920095 -0.009224618954 -0.02292957179 --0.00240623755 0.05049738241 0.004666205948 0.02061490034 -0.02430722477 -0.03922154998 --0.008764620322 0.04271279659 0.01220857132 0.006334164881 -0.01443621922 -0.02363214966 -0.01484096574 -0.004054337489 0.01295755061 0.01690507043 -0.003147869243 -0.01862866638 --0.007386626269 -8.906286418e-05 0.01370433356 0.01465852629 -0.01451971902 -0.0003378239594 --0.007096160608 -0.005168193721 0.001324671998 0.005766070391 0.00294695416 -0.0008289294381 --0.007808003245 -0.004090489383 0.008382917485 0.001263898782 0.00271111482 0.0003651242074 --0.003280338944 -0.0004942929445 -0.00105226348 0.001107835716 0.003202256602 0.002871033068 --0.003438094919 -0.0005187886371 -0.001111364701 -iw : 2 --0.06059654539 -0.1024461423 0.01303327116 0.04235103773 0.00293336891 -0.02205907394 --0.001224695421 0.008295613779 0.003896445156 -0.00551302215 -0.0009199624461 0.0008025182877 -0.001824184787 -0.07392608204 -0.07480439494 0.03749959175 -0.1263447671 -0.1402405823 -0.06408938572 -0.02271848904 -0.04780118775 0.01152413385 0.04376845463 0.03283463473 --0.02220189593 0.02089251147 0.03007262147 -0.01059789223 -0.01924691064 -0.008848087143 -0.009763148156 -0.01145784998 -0.013046077 0.005812085327 0.006113174233 -0.0002304613758 --0.00310095614 0.008354484196 0.007279737324 -0.004237878405 -0.002983508429 0.0001262959308 -0.001513408326 -0.003264737563 -0.001970886869 0.001656064036 -0.0003065409349 -0.001361248441 -0.0001554953217 0.002218738179 0.001429386002 -0.001125472548 -0.1099825566 -0.0983100539 -0.04885913026 0.1189594669 0.04986855497 -0.1030283791 -0.2005150839 0.09087697202 -0.04539507573 0.1017128675 -0.02315409934 -0.1178708697 0.03832616843 -0.01601025226 -0.05979093399 0.03149505891 0.01622416053 -0.02292957179 -0.02097926655 -0.008229834174 -0.01767848024 0.05261371331 -0.02430722477 0.004968806857 -0.02668872359 -0.009067021465 -0.006774421349 0.006334164881 0.00643052817 -0.003436378987 -0.01208012198 -0.01996642226 -0.01295755061 0.001951901992 0.01012812613 0.002805304807 -0.008502191185 -8.906286418e-05 --0.004728531226 0.004312803947 0.005904480303 0.007953735645 -0.007096160608 0.0001628113404 --0.004034595522 0.0005868494009 0.004408924829 -0.0008289294381 0.0001972039267 -0.002236462106 --0.003251683248 -0.001716419868 0.00271111482 0.001662667674 0.0008706675987 -0.000228252622 --0.002529288319 0.001107835716 -0.00122666562 0.001283001571 0.000643548982 0.0007028081888 --0.001111364701 0.0005125181027 -0.0003565050308 -iw : 3 --0.003810857555 -0.03152312568 -0.04069051846 -0.002209453482 0.02462570191 0.0105033803 --0.01138938305 -0.009151984136 0.003820734343 0.00613480632 -0.0006887946683 -0.002982653215 --0.0003617455954 -0.006425304855 0.03749959175 -0.02212206954 -0.04070486127 0.06408938572 --0.02892798416 -0.06147770693 0.01152413385 0.0109786224 -0.02366313759 -0.02220189593 -0.02130361398 0.02323517205 -0.01059789223 -0.0001471403667 0.02381269451 0.009763148156 --0.01337353562 -0.004478025606 0.005812085327 -0.002388425009 -0.01485527948 -0.00310095614 -0.006426157892 -0.002089247346 -0.004237878405 0.003341167581 0.007283144387 0.001513408326 --0.003146122245 0.002911989559 0.001656064036 -0.001931699091 -0.002547119363 0.0001554953217 -0.0006612535931 -0.001763267402 -0.001125472548 0.001248335589 -0.0245319285 0.04885913026 --0.02821756324 0.0007880072103 0.09776902125 -0.0708136209 0.09087697202 -0.03983133192 -0.004674780197 0.008852977656 -0.07736131317 0.03832616843 0.007063832828 0.008023662508 --0.02600559715 -0.03114439639 -0.02292957179 0.03467339844 0.005065689859 -0.006170603432 -0.01748778415 -0.02430722477 0.01138391264 -0.001065198872 0.01490854958 0.02465543306 -0.006334164881 -0.0176427213 -0.00344471283 0.0005093933579 0.002201058849 0.01295755061 --0.01185774728 -0.0009004938566 -0.004660666619 -0.01233534848 -8.906286418e-05 0.006271061353 -0.001576020023 -0.003278268472 -0.005456161857 -0.007096160608 0.008629383564 0.001034773945 -0.004268855076 0.004325000969 -0.0008289294381 -0.001484983491 -0.0005114110762 0.0001110150924 -0.003970234905 0.00271111482 -0.004244217432 -0.0006356013132 -0.0001210764609 -0.0009843186103 -0.001107835716 -0.0004247613592 7.240467125e-05 -0.001658328185 -0.001628647146 -0.001111364701 -0.001740385463 0.0002606902835 0.001243855432 -ad : 10 4.049413304 -R : 0 1 0 -iw : 4 -0.0506225292 0.01832793931 -0.03559515956 0.01577279662 -4.565875249e-05 -0.003676826473 -0.001033308928 0.00287371668 -0.003786363301 0.002408958411 -0.001388279103 0.0007534841003 --0.0007361134882 0.05437382619 0.08301619361 -0.06524685637 0.02371941073 -0.04991067004 --0.02846253599 -0.02842980323 0.01957342315 0.03411485668 0.007778752254 -0.004690880804 --0.009334254486 0.004340723443 0.001055907581 -0.00520872962 -0.004027089408 -0.003207876769 -0.004832378786 -4.054579924e-05 0.005604900974 4.865366528e-05 0.002449002809 -0.00583036632 --0.002938725223 -0.00281200149 0.005031287315 0.003374312057 0.001341375818 -0.003753450511 --0.001609608178 -0.0001409779426 0.00282330723 0.0001691690326 0.00034321293 -0.002820656291 --0.0004118445641 -0.0005033536413 0.002784327995 0.0006040083076 0.04352924029 0.07783976697 --0.07673427718 -0.1035266084 -0.09340523651 -0.005768099662 -0.04390420591 -0.0422784545 --0.005509172308 0.05268364612 -0.002447302547 0.01333921581 0.03197507598 0.01596131799 --0.01600663332 0.000322560131 -0.0009112901382 -0.002892123318 -0.001618979375 0.001093519087 -0.002027487445 0.0003245449492 -0.008728329701 -0.006711626882 -0.0003894435829 -0.002383360398 --0.003240903663 0.005795722238 0.006252886081 0.003888980979 0.001717947303 0.005936472858 -0.001444036708 -0.002446169967 -0.007123577998 -0.001171521405 -0.005910070278 -0.003891745986 -0.0006023714953 0.007091895744 0.0009143415654 0.004197977941 0.002389932334 -0.000707506748 --0.005037439572 -0.0008845389946 -0.003130754985 -0.0008593254148 0.001217026958 0.00375680608 -0.0009470030802 0.002543512538 -0.0003421113141 -0.001765679767 -0.003052133883 -0.0008817002289 --0.00241149568 0.0002507914596 0.001619092902 0.002893717866 0.0007596282344 0.002751801332 -0.0008365897172 -0.001009010368 -0.003302073789 -ad : 14 0 -R : 0 0 0 -iw : 5 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0.3077382509 0 0 0.3401131198 -0 0 0.2965292282 0 0 0.2106036853 -0 0 0.1684140665 0 0 0.1131428397 -0 0 0.1019205148 0 0 0.0611381405 -0 0 0.06480534154 0 0 0.0295606475 -0 0 0.04222101471 0 0 0.008651835175 -0 0 0.03034646073 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 diff --git a/tests/09_DeePKS/100_NO_KP_deepks_UT/dphialpha_y_ref.dat b/tests/09_DeePKS/100_NO_KP_deepks_UT/dphialpha_y_ref.dat deleted file mode 100644 index 5dce0e6464..0000000000 --- a/tests/09_DeePKS/100_NO_KP_deepks_UT/dphialpha_y_ref.dat +++ /dev/null @@ -1,399 +0,0 @@ -iat : 0 -ad : 5 2.716543093 -R : 0 -1 0 -iw : 5 --0.05801156173 -0.09867461893 -0.009209902249 0.02762352054 0.01310564383 -0.009821439211 --0.0052292239 0.0008283361123 0.004689313673 -0.00103144645 -0.0009998504531 -0.001212444068 -0.001647825838 0.0662298409 0.02153876871 0.170394503 0.1186905844 0.03859965556 -0.001939465704 0.04747805505 0.01544045453 -0.03253638634 -0.02044180511 -0.006647929489 --0.01013122123 -0.02388972456 -0.007769235816 0.01664356525 0.003040507487 0.0009888108842 --0.0009699989696 0.009711813169 0.003158402539 -0.001035870781 0.001614262748 0.0005249783407 --0.004862749681 -0.004864205647 -0.001581900228 0.004346782063 -0.0008137772631 -0.0002646504962 --0.001417274753 0.001274666735 0.0004145374897 0.001707300481 0.001003477128 0.0003263432536 --0.002455147104 -0.0008399434221 -0.0002731600568 0.001946444289 -0.1027658942 -0.02695360956 --0.175129082 -0.1038813938 -0.05695415754 -0.1137783392 -0.05505529722 -0.02947584712 --0.04568428058 -0.00958591241 -0.05246982233 -0.0329987073 0.03602975449 -0.0001438329756 -0.01171732467 0.009416725834 0.001060174711 0.02524018536 0.01339508455 0.008208422478 -0.01715578242 0.01133543566 -0.01534115406 -0.00145436741 -0.004989134273 0.004710287156 -0.003463302297 -0.006501304028 -0.001364587721 -0.002114305 -0.00685939256 -0.003446055482 --0.0009493643781 -0.002405195605 -0.0003087451138 -0.002860478458 -0.002784726169 0.008392439374 -0.002702669184 0.002729325757 0.0007440204141 0.0007811980729 -0.002553833495 -0.0008593796482 --0.0008305384437 0.00287420888 0.001549174095 -0.0002883222599 0.000718510879 -9.376598805e-05 --0.0004579623769 0.0002075751221 -0.002917360123 -0.001363983542 -0.0009487618283 -0.0006617723432 --0.0008598008083 0.003347253646 0.001217971475 0.001088568553 -0.0009831248328 -0.0003264463217 --0.00122810672 -0.0008051925148 -0.0003993955934 -ad : 8 2.795323233 -R : 0 0 0 -iw : 4 -0.08365928687 0.1356629938 0.00300292635 -0.04043714918 -0.0132628312 0.01623174782 -0.004692190985 -0.002945825815 -0.00550439447 0.002770353367 0.0008792816232 0.001058983023 --0.002140744282 0.003942310026 -0.0897179481 0.1282078285 0.006740307555 -0.1533939643 --0.0676348546 0.002243932745 -0.05106677054 -0.05196615544 -0.001420836059 0.03233497492 -0.006685618421 -0.001220963842 0.02778634098 0.02813138044 0.000372754622 -0.008483041569 --0.006471684104 0.0005297375818 -0.01205561423 -0.006329579366 -2.400106823e-05 0.0005462093492 --0.003659647835 -0.0003045837031 0.00693162757 0.007729119611 1.806745906e-05 -0.0004111739928 --0.002133833283 0.0001056916491 -0.002405299894 0.0003384796898 3.267349911e-05 -0.0007435740158 --0.002592275145 -7.927747904e-05 0.001804173873 0.003027066683 0.0411474002 -0.004633460046 -0.005089775463 0.176512728 -0.1158316337 -0.05203098056 -0.009040324826 -0.002867072533 -0.115219546 0.0652480051 -0.04785661281 -0.004837051591 -0.003470160466 0.02697758664 -0.07897290536 -0.003506638261 0.0007296198392 -0.0005139430465 -0.02264609197 0.01169616678 -0.01977041544 0.001849948009 0.001469114017 -0.007775927322 -0.03343367068 0.002986757018 -0.0002143766496 0.0002375356859 0.0003039132513 -0.005405768243 -0.004851005196 -0.0006764038991 --0.0003071776044 0.006961494311 0.006990658823 -0.00488867266 -0.0002757846281 -0.0004067844568 --0.00220332115 0.00925748268 0.003262037924 0.0002425832045 0.0002574050413 0.0001400366003 --0.005857949268 0.0009962005215 0.0001674663673 5.624058708e-05 -0.00207832243 -0.001279906968 -0.0006770633855 -4.073973903e-05 7.524608101e-05 0.002098061197 -0.001712428486 -0.001996202862 --9.996578148e-05 -0.0001691324199 -0.001186925132 0.003849066556 0.0004799483967 -2.268139439e-05 -5.185493677e-05 0.001346474956 -0.00118009961 -ad : 13 0 -R : 0 0 0 -iw : 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0.2846209031 0 0 -0.417622686 0 0 0.3779946587 0 0 -0.2568325753 0 0 0.1356056091 0 0 -0.03886562428 0 0 -0.02055185268 0 0 --0.0565302244 0 0 -0.06614616672 0 0 --0.06635081072 0 0 -0.05336765123 0 0 --0.04335800633 0 0 -0.0279082478 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 -iw : 1 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0.2196692933 0 0 0 0 0.3454760815 -0 0 0 0 0.3956494725 0 -0 0 0 0.385982285 0 0 -0 0 0.3620538235 0 0 0 -0 0.3183349127 0 0 0 0 -0.2809343011 0 0 0 0 0.2307824615 -0 0 0 0 0.193666922 0 -0 0 0 0.1448689215 0 0 -0 0 0.1135446365 0 0 0 -0 0.07120939607 0 0 0 0 -0.05493176412 0 0 -iw : 2 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0.2196692933 0 0 0 -0 0.3454760815 0 0 0 0 -0.3956494725 0 0 0 0 0.385982285 -0 0 0 0 0.3620538235 0 -0 0 0 0.3183349127 0 0 -0 0 0.2809343011 0 0 0 -0 0.2307824615 0 0 0 0 -0.193666922 0 0 0 0 0.1448689215 -0 0 0 0 0.1135446365 0 -0 0 0 0.07120939607 0 0 -0 0 0.05493176412 -iw : 3 --0.08010138007 -0.3044588881 -0.4494156118 -0.5063041764 -0.4943778793 -0.4624871691 --0.4079404948 -0.3591758497 -0.2958949735 -0.2475786472 -0.1856938757 -0.1448990875 --0.09127204244 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 -0.1268261256 0 -0 -0.2196692933 0 -0.1994607087 0 0 --0.3454760815 0 -0.2284283294 0 0 -0.3956494725 -0 -0.2228469762 0 0 -0.385982285 0 --0.2090318725 0 0 -0.3620538235 0 -0.1837907476 -0 0 -0.3183349127 0 -0.1621974944 0 -0 -0.2809343011 0 -0.1332423163 0 0 --0.2307824615 0 -0.1118136496 0 0 -0.193666922 -0 -0.08364011082 0 0 -0.1448689215 0 --0.06555502644 0 0 -0.1135446365 0 -0.04111276399 -0 0 -0.07120939607 0 -0.0317148688 0 -0 -0.05493176412 0 -iat : 1 -ad : 2 4.049413304 -R : 0 -1 0 -iw : 5 --0.1023110375 -0.03704181747 0.07193986084 -0.03187772742 9.227895987e-05 0.007431077373 --0.002088376662 -0.005807946379 0.00765245759 -0.004868643237 0.002805791763 -0.001522834621 -0.001487727617 0.1098926241 -0.06524685637 -0.01656792413 0.04793829072 -0.02846253599 --0.09335209685 -0.05745826436 0.03411485668 0.07164179997 0.01572130485 -0.009334254486 --0.01893744454 0.008772851262 -0.00520872962 -0.006894004072 -0.008138978873 0.004832378786 -0.004167623059 -8.194538783e-05 4.865366528e-05 0.005679159453 0.004949575263 -0.002938725223 --0.01031564538 -0.005683216437 0.003374312057 0.01018138815 0.00271099753 -0.001609608178 --0.006210142208 -0.000284924515 0.0001691690326 0.003081504326 0.0006936530339 -0.0004118445641 --0.00344924102 -0.001017306605 0.0006040083076 0.003706205887 -0.08797509346 0.07673427718 -0.03927722101 -0.06869657023 -0.02332017475 0.01165766054 0.0422784545 0.1084324119 -0.06629743466 -0.0643798805 0.004946138937 -0.03197507598 -0.06214171617 -0.02630270322 -0.03689557568 -0.0006519125417 0.002892123318 0.005325442253 0.002024791427 -0.003161889787 --0.004097668515 0.008728329701 0.01299721584 0.002421104632 -0.007716873464 0.004816908184 --0.005795722238 -0.005604915398 0.002022741119 0.003327822162 -0.00347207012 -0.001444036708 --0.0081404583 -0.007588562128 0.004833257171 0.002367712013 0.003891745986 0.01184991339 -0.008345049567 -0.00703568236 -0.001847936792 -0.002389932334 -0.007845652575 -0.005807004917 -0.004658221339 0.001787704086 0.0008593254148 0.004442314929 0.004033511428 -0.00263754812 --0.001913947589 0.0003421113141 -0.00202135936 -0.002941973018 0.00120014737 0.001781966777 --0.0002507914596 0.002028720975 0.002812962267 -0.001204518202 -0.001535252269 -0.0008365897172 --0.004028660533 -0.003571458175 0.002391947933 -ad : 5 2.795323233 -R : 0 0 0 -iw : 0 --0.06949399678 -0.1473135748 -0.008076505287 0.05510677341 0.01238252253 -0.009715338656 -0.0007907458422 -0.003821346531 -0.003139678142 0.001958602682 0.004281604538 -0.001691026806 --0.001305130694 0.0037748696 -0.08590738746 0.1118692722 0.008144858248 -0.1853583216 --0.07294902259 0.002863426234 -0.0651650237 -0.07326859656 -0.00168779737 0.03841040299 -0.01211768243 -0.0009927339674 0.02259235169 0.02090829925 0.0001451029663 -0.00330221122 --0.002475468295 -0.0001543035468 0.003511595361 0.003850500382 5.421546041e-05 -0.001233819723 --0.0008082134394 0.0002827743506 -0.006435296653 -0.004063374029 7.208264774e-05 -0.001640435989 --0.002843869376 -0.0002221131239 0.005054786049 0.004449567775 -4.135999519e-05 0.000941258774 -0.0004418777753 6.346949762e-05 -0.001444420418 -0.0004381199857 -0.03994119097 0.005026218168 --0.005067188223 -0.1833445295 0.1153175998 0.0616604323 0.01136054034 0.003242678726 --0.1512416852 -0.07379594189 0.064116628 0.006179849608 0.00472122099 -0.02931441789 --0.1074441779 0.003004134137 -0.0006632126188 0.0004494324614 0.02026737104 -0.0102280536 --0.01227143222 -0.001188732229 -0.0009021788331 0.005745844916 0.0205315242 0.0006328922549 -1.91154074e-05 5.663614774e-05 0.000662018597 -0.001288909023 -0.004440801971 -0.0004102926866 --0.0003312454207 0.001627598583 0.007538387207 -0.00297636267 -0.0002674259968 -0.0002238229803 -0.0009190408949 0.005093698466 0.003093691639 0.000389243704 0.000205991374 -0.003482760395 --0.004687891941 0.004289023043 0.0003411066813 0.0003331376411 -0.0003190124684 -0.007581449808 --0.002144292435 -0.0002018491229 -0.0001590510995 0.0008707308664 0.003619638789 -0.001548961488 --0.0001705422183 -0.0001089683083 0.00119077652 0.002479869155 -0.00011371982 2.997660001e-05 --1.817981821e-05 -0.000877850068 0.0004137310297 -iw : 1 --0.0007059465245 -0.005650593495 -0.006711950285 0.0004942498927 0.004395171999 0.001059035511 --0.002355408534 -0.001108629542 0.00107099173 0.0008448046016 -0.0004300669327 -0.0004619871417 -0.0001053704899 -0.05674521661 -0.001115536614 0.002293767631 -0.1057027089 -0.006840998259 -0.0005365385203 -0.03523313116 -0.009629554227 -0.005586077077 0.0248325745 -0.002672747002 --0.003483270119 0.02200051485 0.004401251911 0.002223855726 -0.006871048627 0.003175228516 -0.002874407717 -0.009339123005 -0.001561115205 -0.0007030493885 4.832722678e-05 -0.002199366014 --0.001727926507 0.005198007584 0.0003298522745 -3.15262338e-05 -0.0001128641144 0.001236366351 -0.0009761363464 -0.001339444121 7.680098285e-05 0.0001350417174 -0.0008973200074 -0.0005378401005 --0.0003717864971 0.001030537555 -0.0001119622349 -0.0001453736476 0.00257688362 -0.07031926467 -0.07386083534 -0.003416209049 0.002596135308 0.008161272295 -0.142554729 -0.04291615431 --0.008134244583 0.0003336324831 0.009430002484 -0.0827609941 -0.06197572971 -0.006653179238 --0.007680350016 0.003582404736 0.0119179496 -0.008252020441 -0.001074947169 -0.007184970943 --0.002685233238 0.03653947607 0.02759822269 0.002329123145 0.0009102427702 -0.003113139011 -0.004201007155 0.005734057784 0.001421834958 0.004811049048 0.0002284626823 -0.01367458691 --0.007744586422 -0.0005521273504 0.0009624173711 0.001770533261 -0.005462825341 -0.00666872807 --0.0009116032245 -0.002433688762 0.0003886117818 0.005450321764 0.00468280222 2.26733848e-05 --0.001188582749 -0.0007874932285 0.00271110435 0.00140122235 0.0004148836802 0.001054759319 --0.000383373744 -0.001193894512 0.0002734499803 0.0001177644541 0.0007608832896 0.0002749536218 --0.001580190827 -0.002151536048 -0.0001660822481 -0.0003059115517 0.0001888936401 0.0005341199924 -0.001118368167 -5.983668148e-05 -0.0003695708889 -iw : 2 -0.01606572624 0.1285945678 0.1527486178 -0.0112479957 -0.1000240495 -0.02410122299 -0.05360370422 0.02522986957 -0.02437331914 -0.01922581809 0.009787338513 0.01051376937 --0.002397991045 -0.001115536614 -0.03140717588 -0.05220089842 -0.006840998259 0.04968214393 --0.01221038802 -0.009629554227 0.1834903372 0.1271263219 -0.002672747002 0.08554073196 -0.07927125104 0.004401251911 -0.07796850346 -0.05060986357 0.003175228516 -0.078992455 --0.0654149371 -0.001561115205 0.02611968681 0.01599979406 -0.002199366014 0.05000421837 -0.03932365026 0.0003298522745 -0.002294180716 0.0007174648845 0.001236366351 -0.02819540356 --0.02221462784 7.680098285e-05 -0.003083883888 -0.003073240235 -0.0005378401005 0.01131905569 -0.008461009265 -0.0001119622349 0.003573621872 0.003308371307 0.06328167989 0.001396777094 -0.002596135308 0.007351287886 0.01489281818 0.06192017993 -0.003440378172 0.0003336324831 -0.04213480251 -0.05049420539 -0.07006541456 -0.01201602038 -0.007680350016 0.06796100389 -0.1124739648 -0.101537272 -0.008818824623 -0.007184970943 0.03601608249 0.1549457484 --0.002464762455 0.002148797326 0.0009102427702 -0.0163007418 0.006923178854 0.0630820026 -0.006235319182 0.004811049048 -0.02787405615 -0.103542998 0.01846650383 0.0008538163445 -0.0009624173711 -0.001098296875 -0.02960471207 -0.03056566456 -0.003244645589 -0.002433688762 -0.01512975898 0.04860951579 -0.01819835668 -0.001364549246 -0.001188582749 0.004884795562 -0.03167999598 0.01310874521 0.001415537007 0.001054759319 -0.006663132655 -0.02255633695 -0.01072523852 0.0009357529963 0.0007608832896 -0.003835055852 -0.01700907714 -0.003482101463 --0.0004320692912 -0.0003059115517 0.002177381478 0.00479686821 -0.005190946102 -0.0004557470747 --0.0003695708889 0.001876834328 0.009512715891 -iw : 3 --0.04947507737 -0.01395733271 0.1164497875 0.0320106704 -0.06585741821 -0.03624641368 -0.03659643048 0.02411921628 -0.01401640496 -0.01801580539 0.006716384063 0.007838883575 --0.0003242146968 0.002293767631 -0.05220089842 -0.1546638753 0.0005365385203 -0.01221038802 --0.2216146171 -0.005586077077 0.1271263219 0.02871959105 -0.003483270119 0.07927125104 -0.1118065257 0.002223855726 -0.05060986357 0.004564237361 0.002874407717 -0.0654149371 --0.06493626163 -0.0007030493885 0.01599979406 -0.006225548931 -0.001727926507 0.03932365026 -0.03084613879 -3.15262338e-05 0.0007174648845 0.010989497 0.0009761363464 -0.02221462784 --0.01759723925 0.0001350417174 -0.003073240235 -0.005090371531 -0.0003717864971 0.008461009265 -0.004815893778 -0.0001453736476 0.003308371307 0.004654504927 0.01682040014 0.002596135308 -0.008229195193 -0.02983422952 -0.1872776373 0.09326644368 0.0003336324831 0.01282811099 -0.153964168 -0.2919384292 -0.00761502191 -0.007680350016 0.001290338096 0.1612600897 --0.02936514012 -0.07654790777 -0.007184970943 -0.006668930285 0.03061290334 0.1517695811 --0.02297247178 0.0009102427702 -0.002509448965 -0.06046453213 0.05710931167 0.04558481347 -0.004811049048 0.003391649266 -0.03032184276 -0.07718617024 0.02086726375 0.0009624173711 -0.001958071045 0.01428303537 -0.04456121291 -0.01936270198 -0.002433688762 -0.00142143914 -0.02174106026 0.03234869965 -0.01774015045 -0.001188582749 -0.001409896016 -0.003729648164 -0.03208600458 0.009094934678 0.001054759319 0.0005857696467 -0.008204670344 -0.01333077572 -0.008421967302 0.0007608832896 0.000700224088 -0.002695251855 -0.01593549669 -0.00126846508 --0.0003059115517 -9.990479495e-05 0.004751358291 0.002273604346 -0.004792180888 -0.0003695708889 --0.0003360737117 9.404694644e-05 0.007648268052 -ad : 13 0 -R : 0 0 0 -iw : 4 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0.3077382509 0 0 -0.3401131198 0 0 0.2965292282 0 0 -0.2106036853 0 0 0.1684140665 0 0 -0.1131428397 0 0 0.1019205148 0 0 -0.0611381405 0 0 0.06480534154 0 0 -0.0295606475 0 0 0.04222101471 0 0 -0.008651835175 0 0 0.03034646073 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 -iat : 2 -ad : 9 2.716543093 -R : 0 1 0 -iw : 0 -0.04814390755 0.1073605145 0.01461046219 -0.03774035146 -0.01249612531 0.00587973299 --0.0004058561146 0.001953137704 0.002972948666 -9.672006068e-05 -0.003317808507 0.0001121716519 -0.0009574042463 0.06342905761 0.02062791912 0.1522584588 0.1434109693 0.04663903246 -0.01112911902 0.06067775246 0.01973316044 -0.0485180467 -0.02406929567 -0.007827634575 --0.007958870346 -0.01952125678 -0.006348555712 0.01161345815 0.001316807372 0.0004282421495 --0.0003964828808 -0.002780816932 -0.0009043562829 0.002286511727 -0.000874329107 -0.0002843427096 -0.0006088293907 0.004698308905 0.001527948542 -0.001007727441 0.003175002316 0.001032550277 --0.002991627635 -0.003103866976 -0.001009416179 0.001773921658 -0.001861286023 -0.0006053133848 -0.0005435337217 0.0005814676265 0.0001891005105 0.0004708702763 0.1082982981 0.0292574651 -0.1789958647 0.1071288854 0.05821168341 0.1454646654 0.06914525341 0.04578709538 -0.06182344661 0.01489053339 0.06515413052 0.04226067022 -0.05311747141 -0.003353925742 --0.01727446293 -0.007769188501 -0.0005163688738 -0.02316085422 -0.01203676942 -0.007532198107 --0.01136585216 -0.007315139221 0.008894082463 0.0004282092781 0.002892466334 -0.0003782443229 --5.942860158e-05 -0.0009039856171 -0.0004917275237 -0.0002939873758 -0.003252035227 -0.002167662899 -0.003031485466 0.0003277337257 0.0009858768107 -0.003887280846 -0.002638496951 0.003932800717 -0.0005221087131 0.00127899575 0.00295075412 0.001451301546 0.0006112869173 0.001120211328 -0.000198798115 0.003642935648 0.002707003072 -0.005213865797 -0.001133698332 -0.001695614061 --0.0005512612715 -0.0003424873341 0.0003511132595 -1.307490346e-05 0.0001141864028 -0.002054077531 --0.001235853483 0.001045476628 -0.0001595395864 0.0003400020138 -6.044651762e-05 -0.0002433947416 -0.001380819464 0.0005645662266 0.0004490596788 -iw : 1 --0.01171805561 -0.0969308704 -0.125119806 -0.006793877336 0.07572189204 0.03229698112 --0.03502136253 -0.02814155541 0.01174842588 0.01886399598 -0.002117983711 -0.009171399279 --0.00111233625 0.01983192719 -0.006425304855 -0.06802344015 -0.04783678799 -0.04070486127 --0.08895102083 -0.1575211344 -0.06147770693 0.033758347 -0.08726845648 -0.02366313759 -0.06550672706 0.05329179092 0.02323517205 -0.0004526080475 0.07524087001 0.02381269451 --0.04112257437 -0.006501087408 -0.004478025606 -0.007344086954 -0.04394843454 -0.01485527948 -0.01976005902 -0.009982691673 -0.002089247346 0.01027378284 0.02153979514 0.007283144387 --0.009674209367 0.009663140046 0.002911989559 -0.005939852903 -0.00684827614 -0.002547119363 -0.002033384378 -0.005973904533 -0.001763267402 0.003838573546 0.01505081391 0.006590001188 -0.02017917117 -0.04981811593 -0.02821756306 -0.02559091864 -0.02561470197 -0.100671246 --0.09656606919 -0.03983132603 -0.1118502913 -0.08222645348 -0.006582138886 -0.048090779 -0.007063847245 -0.09782439349 -0.06723920095 0.08917083667 0.01676475729 0.03467338781 -0.003753186871 0.004666205948 0.04621074646 0.02560358759 0.01138384499 0.06117675558 -0.04271279659 -0.04800296752 -0.002141990202 -0.01764279118 0.02251724002 0.01484096574 --0.03726588506 -0.01186168136 -0.01185773137 -0.02636809006 -0.01862866638 0.01396545832 --0.001828965266 0.006271142645 -0.02137566377 -0.01451971902 0.0279971466 0.005836846916 -0.008629414387 0.008061214415 0.005766070391 -0.003972360509 0.001451335501 -0.001485034115 -0.01217872079 0.008382917485 -0.01179150297 -0.001937576674 -0.004244260915 -0.0005695112612 --0.0004942929445 -0.002826253992 -0.001195961452 -0.0004247435126 -0.004994796727 -0.003438094919 -0.006029458011 0.0007940937804 0.001740413327 -iw : 2 --0.003810857555 -0.03152312568 -0.04069051846 -0.002209453482 0.02462570191 0.0105033803 --0.01138938305 -0.009151984136 0.003820734343 0.00613480632 -0.0006887946683 -0.002982653215 --0.0003617455954 -0.006425304855 0.03749959178 -0.02212206952 -0.04070486127 0.06408939335 --0.02892797927 -0.06147770693 0.011524153 0.01097863468 -0.02366313759 -0.02220191292 -0.02130360309 0.02323517205 -0.01059797553 -0.0001471937713 0.02381269451 0.009763089709 --0.01337357309 -0.004478025606 0.005812142274 -0.002388388499 -0.01485527948 -0.003100863672 -0.006426217175 -0.002089247346 -0.004237886997 0.003341162073 0.007283144387 0.00151332867 --0.003146173314 0.002911989559 0.001656040617 -0.001931714106 -0.002547119363 0.0001555394929 -0.000661281912 -0.001763267402 -0.001125447106 0.001248351901 -0.0245319285 0.04885913053 --0.02821756306 0.0007880073845 0.09776902117 -0.0708136209 0.0908769812 -0.03983132603 -0.004674786168 0.008852974913 -0.07736131317 0.03832619092 0.007063847245 0.008023677134 --0.02600560387 -0.03114439639 -0.02292958837 0.03467338781 0.005065679072 -0.006170598478 -0.01748778415 -0.02430733029 0.01138384499 -0.001065267504 0.0149085811 0.02465543306 -0.006334055873 -0.01764279118 -0.003444783732 0.000509425925 0.002201058849 0.01295757543 --0.01185773137 -0.0009004777171 -0.004660674033 -0.01233534848 -8.893606672e-05 0.006271142645 -0.001576102495 -0.003278306354 -0.005456161857 -0.007096112531 0.008629414387 0.001034805215 -0.004268840713 0.004325000969 -0.0008290084 -0.001485034115 -0.0005114624349 0.0001110386829 -0.003970234905 0.002711046996 -0.004244260915 -0.0006356454274 -0.000121056198 -0.0009843186103 -0.001107863552 -0.0004247435126 7.242277692e-05 -0.001658336502 -0.001628647146 -0.00111132124 -0.001740413327 0.000260718552 0.001243842447 -iw : 3 --0.05709567999 -0.07348724824 0.05041384136 0.04438076441 -0.01968916856 -0.03170806244 -0.009238224415 0.0167031347 0.0003865063863 -0.01114879596 -0.0002871974084 0.003542549186 -0.002156504382 -0.06802344015 -0.02212206952 0.1136837916 -0.08895102083 -0.02892797927 -0.1997753454 0.033758347 0.01097863468 0.04591072863 0.06550672706 0.02130360309 --0.06224152216 -0.0004526080475 -0.0001471937713 -0.03607901312 -0.04112257437 -0.01337357309 -0.02489762067 -0.007344086954 -0.002388388499 0.01826219333 0.01976005902 0.006426217175 --0.006563022932 0.01027378284 0.003341162073 -0.01232832479 -0.009674209367 -0.003146173314 -0.00319691803 -0.005939852903 -0.001931714106 0.004431111665 0.002033384378 0.000661281912 -0.0009362943018 0.003838573546 0.001248351901 -0.003051193528 -0.08744616455 -0.02821756306 -0.1484953624 -0.07387134992 0.04829254037 -0.03797505401 -0.03983132603 0.2840091196 -0.04374949799 0.09236330114 0.04791429956 0.007063847245 0.1345077489 0.06356653626 -0.04374359435 0.06010603118 0.03467338781 -0.05645910296 0.008765264695 -0.0183612031 -0.00161323045 0.01138384499 -0.07551450548 -0.02850796826 -0.02455825721 -0.03171687163 --0.01764279118 0.01061803628 -0.006422839673 0.003453117574 -0.01410213689 -0.01185773137 -0.03668093815 0.008179593442 0.01192909771 0.01413724102 0.006271142645 0.003568994465 -0.007242655057 0.001160681428 0.01091681362 0.008629414387 -0.01876980636 -0.004819830047 --0.006104174683 -0.003386336698 -0.001485034115 -0.003731679403 -0.001781908021 -0.001213588595 --0.006898961537 -0.004244260915 0.006586200344 -0.0002789051309 0.002141914339 0.0006759971221 --0.0004247435126 0.003499786457 0.002338778851 0.001138174122 0.002139714705 0.001740413327 --0.0026995088 -0.001079520982 -0.0008779138663 -ad : 10 4.049413304 -R : 0 1 0 -iw : 4 -0.1023110375 0.03704181747 -0.07193986084 0.03187772742 -9.227895987e-05 -0.007431077373 -0.002088376662 0.005807946379 -0.00765245759 0.004868643237 -0.002805791763 0.001522834621 --0.001487727617 0.1098926241 -0.06524685637 -0.01656792413 0.04793829072 -0.02846253599 --0.09335209685 -0.05745826436 0.03411485668 0.07164179997 0.01572130485 -0.009334254486 --0.01893744454 0.008772851262 -0.00520872962 -0.006894004072 -0.008138978873 0.004832378786 -0.004167623059 -8.194538783e-05 4.865366528e-05 0.005679159453 0.004949575263 -0.002938725223 --0.01031564538 -0.005683216437 0.003374312057 0.01018138815 0.00271099753 -0.001609608178 --0.006210142208 -0.000284924515 0.0001691690326 0.003081504326 0.0006936530339 -0.0004118445641 --0.00344924102 -0.001017306605 0.0006040083076 0.003706205887 0.08797509346 -0.07673427718 --0.03927722101 0.06869657023 0.02332017475 -0.01165766054 -0.0422784545 -0.1084324119 --0.06629743466 0.0643798805 -0.004946138937 0.03197507598 0.06214171617 0.02630270322 --0.03689557568 0.0006519125417 -0.002892123318 -0.005325442253 -0.002024791427 0.003161889787 -0.004097668515 -0.008728329701 -0.01299721584 -0.002421104632 0.007716873464 -0.004816908184 -0.005795722238 0.005604915398 -0.002022741119 -0.003327822162 0.00347207012 0.001444036708 -0.0081404583 0.007588562128 -0.004833257171 -0.002367712013 -0.003891745986 -0.01184991339 --0.008345049567 0.00703568236 0.001847936792 0.002389932334 0.007845652575 0.005807004917 --0.004658221339 -0.001787704086 -0.0008593254148 -0.004442314929 -0.004033511428 0.00263754812 -0.001913947589 -0.0003421113141 0.00202135936 0.002941973018 -0.00120014737 -0.001781966777 -0.0002507914596 -0.002028720975 -0.002812962267 0.001204518202 0.001535252269 0.0008365897172 -0.004028660533 0.003571458175 -0.002391947933 -ad : 14 0 -R : 0 0 0 -iw : 5 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0.3077382509 0 0 -0.3401131198 0 0 0.2965292282 0 0 -0.2106036853 0 0 0.1684140665 0 0 -0.1131428397 0 0 0.1019205148 0 0 -0.0611381405 0 0 0.06480534154 0 0 -0.0295606475 0 0 0.04222101471 0 0 -0.008651835175 0 0 0.03034646073 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 diff --git a/tests/09_DeePKS/100_NO_KP_deepks_UT/dphialpha_z_ref.dat b/tests/09_DeePKS/100_NO_KP_deepks_UT/dphialpha_z_ref.dat deleted file mode 100644 index 7871e02659..0000000000 --- a/tests/09_DeePKS/100_NO_KP_deepks_UT/dphialpha_z_ref.dat +++ /dev/null @@ -1,399 +0,0 @@ -iat : 0 -ad : 5 2.716543093 -R : 0 -1 0 -iw : 5 --0.1143630443 -0.1945255304 -0.01815625071 0.05445655673 0.02583625196 -0.01936182468 --0.0103088065 0.001632968268 0.009244436302 -0.002033376667 -0.001971088835 -0.002390192411 -0.003248496914 -0.07342568988 0.04246117647 -0.0662298409 0.171838471 0.07609472985 --0.1186905844 0.1020502276 0.0304390596 -0.04747805505 -0.01979815127 -0.0131056195 -0.02044180511 -0.05162112528 -0.01531614446 0.02388972456 0.005421684166 0.00194932561 --0.003040507487 0.01525518617 0.006226423124 -0.009711813169 0.00722623328 0.001034933717 --0.001614262748 -0.01146859063 -0.003118532244 0.004864205647 0.0002258025366 -0.000521727661 -0.0008137772631 0.0001589718625 0.0008172124293 -0.001274666735 0.003924363771 0.0006433477543 --0.001003477128 -0.003176227051 -0.0005385032696 0.0008399434221 0.1735595486 0.01749068469 --0.02728151598 0.01238054137 0.02695360956 -0.02450926727 -0.07102196396 0.1107782159 -0.02528842689 0.05505529722 -0.07669394717 -0.06003158056 0.09363570112 0.01515722263 -0.0329987073 -0.02801748046 -0.006656193422 0.01038215773 -0.0004869676855 -0.001060174711 -0.02976838481 0.0215856371 -0.03366871646 -0.005206680382 -0.01133543566 0.01118988716 -0.007185014949 -0.01120699982 -0.00159079092 -0.003463302297 -0.002568256317 -0.00473671333 -0.007388202501 0.001582868979 0.003446055482 -0.01265199367 -0.006806514947 0.01061662534 -0.001279102061 0.002784726169 0.003779628169 0.00197431063 -0.003079478474 -0.0003588259686 --0.0007811980729 0.001980296236 0.002361951616 -0.003684110821 -0.0007115786819 -0.001549174095 -0.003589409827 0.001252677902 -0.001953894476 -9.534501792e-05 -0.0002075751221 -0.004779375909 --0.002347425026 0.003661452623 0.0003949303878 0.0008598008083 0.001070956975 -7.856286058e-05 -0.0001225403107 0.0001499458609 0.0003264463217 -ad : 8 2.795323233 -R : 0 0 0 -iw : 4 -0.00467177276 0.007575807814 0.0001676919568 -0.002258125536 -0.0007406342543 0.0009064270106 -0.0002620253035 -0.0001645033004 -0.0003073810585 0.0001547044193 4.910158919e-05 5.913662699e-05 --0.0001195452555 -0.1985841872 -0.005010105653 -0.003942310026 -0.05269010691 -0.008565955686 --0.006740307555 0.01190846981 -0.002851713856 -0.002243932745 0.01867851263 0.001805677059 -0.001420836059 -0.006335278982 0.001551668389 0.001220963842 -0.0001825650053 -0.0004737171928 --0.000372754622 -0.003127059462 -0.0006732198217 -0.0005297375818 0.004088104191 3.050188514e-05 -2.400106823e-05 -0.002291827314 0.0003870818181 0.0003045837031 0.001811301069 -2.296112639e-05 --1.806745906e-05 -0.002225239828 -0.0001343187941 -0.0001056916491 0.002009002424 -4.152329003e-05 --3.267349911e-05 -0.001611840518 0.0001007502057 7.927747904e-05 -0.01283291207 0.198546094 -0.1562302896 0.001121259524 0.004633460046 -0.01026071642 0.09613583798 0.07564656401 -0.002187684842 0.009040324826 -0.00325438087 0.007375980322 0.005803949695 0.001170527017 -0.004837051591 0.001688754888 -0.02472101444 -0.01945226505 -0.0001765620477 -0.0007296198392 -0.00108075336 0.0004092246762 0.00032200729 -0.0004476723232 -0.001849948009 4.753942828e-05 -0.001578811995 0.001242322376 -5.187739997e-05 -0.0002143766496 -0.0006607187141 0.005084201629 -0.004000614048 0.0001636842244 0.0006764038991 5.570662253e-05 -0.004334298614 -0.003410536636 -6.67376297e-05 0.0002757846281 6.693992506e-05 0.001527462194 0.001201916674 -5.87031561e-05 --0.0002425832045 0.0001864593075 -0.001709627862 -0.001345257671 -4.052549443e-05 -0.0001674663673 --0.0001480451459 0.002439696121 0.001919727675 9.858684424e-06 4.073973903e-05 4.522876482e-05 --0.002064522051 -0.001624513841 2.419090344e-05 9.996578148e-05 -9.392621005e-05 0.001584997738 -0.001247189761 5.48871237e-06 2.268139439e-05 -ad : 13 0 -R : 0 0 0 -iw : 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 -0.2846209031 0 0 -0.417622686 0 -0 -0.3779946587 0 0 -0.2568325753 0 -0 -0.1356056091 0 0 -0.03886562428 0 -0 0.02055185268 0 0 0.0565302244 0 -0 0.06614616672 0 0 0.06635081072 0 -0 0.05336765123 0 0 0.04335800633 0 -0 0.0279082478 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 -iw : 1 -0.08010138007 0.3044588881 0.4494156118 0.5063041764 0.4943778793 0.4624871691 -0.4079404948 0.3591758497 0.2958949735 0.2475786472 0.1856938757 0.1448990875 -0.09127204244 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 -0.2536522512 0 -0 0 0 -0.3989214173 0 0 -0 0 -0.4568566589 0 0 0 -0 -0.4456939523 0 0 0 0 --0.4180637449 0 0 0 0 -0.3675814951 -0 0 0 0 -0.3243949887 0 -0 0 0 -0.2664846326 0 0 -0 0 -0.2236272991 0 0 0 -0 -0.1672802216 0 0 0 0 --0.1311100529 0 0 0 0 -0.08222552798 -0 0 0 0 -0.0634297376 0 -0 0 0 -iw : 2 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 -0.2196692933 -0 0 0 0 -0.3454760815 0 -0 0 0 -0.3956494725 0 0 -0 0 -0.385982285 0 0 0 -0 -0.3620538235 0 0 0 0 --0.3183349127 0 0 0 0 -0.2809343011 -0 0 0 0 -0.2307824615 0 -0 0 0 -0.193666922 0 0 -0 0 -0.1448689215 0 0 0 -0 -0.1135446365 0 0 0 0 --0.07120939607 0 0 0 0 -0.05493176412 -0 0 0 -iw : 3 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 --0.2196692933 0 0 0 0 -0.3454760815 -0 0 0 0 -0.3956494725 0 -0 0 0 -0.385982285 0 0 -0 0 -0.3620538235 0 0 0 -0 -0.3183349127 0 0 0 0 --0.2809343011 0 0 0 0 -0.2307824615 -0 0 0 0 -0.193666922 0 -0 0 0 -0.1448689215 0 0 -0 0 -0.1135446365 0 0 0 -0 -0.07120939607 0 0 0 0 --0.05493176412 0 0 -iat : 1 -ad : 2 4.049413304 -R : 0 -1 0 -iw : 5 --0.08526146518 -0.03086900208 0.05995147823 -0.02656547927 7.690117814e-05 0.006192729152 --0.001740360164 -0.004840084021 0.006377217572 -0.004057310588 0.00233822198 -0.001269062597 -0.001239805982 -0.02372009615 -0.05437382619 -0.1098926241 0.07577731561 -0.02371941073 --0.04793829072 -0.05057687648 0.02842980323 0.05745826436 0.01317381614 -0.007778752254 --0.01572130485 0.003677766291 -0.004340723443 -0.008772851262 -0.001183770881 0.004027089408 -0.008138978873 -0.005649117241 4.054579924e-05 8.194538783e-05 0.008501068741 -0.002449002809 --0.004949575263 -0.00809784941 0.00281200149 0.005683216437 0.005216256364 -0.001341375818 --0.00271099753 -0.00297704741 0.0001409779426 0.000284924515 0.00319493908 -0.00034321293 --0.0006936530339 -0.003333248471 0.0005033536413 0.001017306605 0.1272693544 -0.004811577861 --0.00972447507 0.05855849399 -0.07673427718 -0.0300966079 0.04888006651 0.09878942043 -0.03226410302 -0.0422784545 -0.0001766214896 -0.02517311004 -0.05087630049 -0.02440125018 -0.03197507598 0.000356880564 0.002101600947 0.004247456158 0.002207076058 -0.002892123318 -0.004627512239 0.004516957848 0.009129031111 0.006660880393 -0.008728329701 -0.006566160089 --0.001203037383 -0.002431407612 -0.00442290953 0.005795722238 0.006151261147 -0.004303855123 --0.008698338271 -0.001101992721 0.001444036708 -0.004928160997 0.005608919259 0.01133594781 -0.002969921556 -0.003891745986 0.003682945343 -0.003782042041 -0.007643724076 -0.001823837317 -0.002389932334 -0.003196389838 0.002322508598 0.004693923203 0.000655779972 -0.0008593254148 -0.003103684385 -0.001325569688 -0.002679052434 0.0002610765888 -0.0003421113141 -0.00290675009 -0.001296461511 0.002620223137 -0.0001913873528 0.0002507914596 0.002769889511 -0.002085243605 --0.004214397031 -0.0006384296005 0.0008365897172 -ad : 5 2.795323233 -R : 0 0 0 -iw : 0 --0.003880742633 -0.008226409424 -0.0004510150494 0.003077319118 0.0006914753115 -0.0005425321706 -4.415749912e-05 -0.0002133948698 -0.0001753285663 0.00010937395 0.0002390969873 -9.443175126e-05 --7.28822137e-05 -0.1792565592 -0.004797313098 -0.0037748696 -0.07244935089 -0.0103509364 --0.008144858248 0.02215198969 -0.003639000451 -0.002863426234 0.01801212277 0.002144946259 -0.00168779737 -0.003186455633 0.00126162124 0.0009927339674 -0.0001148450837 -0.0001844048761 --0.0001451029663 -0.001095942348 0.0001960974826 0.0001543035468 -0.0001596167574 -6.890000606e-05 --5.421546041e-05 -0.0009845874444 -0.0003593652867 -0.0002827743506 0.001557082127 -9.160661604e-05 --7.208264774e-05 -0.0004845034419 0.0002822736441 0.0002221131239 0.0002964623952 5.256256975e-05 -4.135999519e-05 -0.0006949091523 -8.066054844e-05 -6.346949762e-05 0.01339643867 -0.2050434028 --0.1613428376 -0.001216303785 -0.005026218168 0.01331010897 -0.1290073528 -0.1015122266 --0.002749158066 -0.01136054034 0.003825587653 -0.002875738537 -0.002262837084 -0.00149547318 --0.006179849608 -0.001514574027 0.0220674292 0.01736423409 0.0001604920422 0.0006632126188 --0.0007427772524 0.0006891928733 0.0005423063229 0.0002876634997 0.001188732229 -3.670175975e-05 -0.0009476693034 0.0007456940941 -4.625772617e-06 -1.91154074e-05 -0.0002334417066 -0.0002140253252 --0.0001684104575 9.928748234e-05 0.0004102926866 -0.000143011124 -0.0003197289537 -0.0002515856445 -6.471490913e-05 0.0002674259968 0.00034647391 -0.002260712899 -0.001778890855 -9.419380028e-05 --0.000389243704 0.0001273947965 0.001492165609 0.001174142792 -8.254503357e-05 -0.0003411066813 --0.0001193593119 -1.631835528e-05 -1.28404509e-05 4.884584074e-05 0.0002018491229 -0.0001301920438 -0.0005645743938 0.0004442475763 4.126982527e-05 0.0001705422183 6.599308793e-05 -0.0009488599111 --0.0007466309496 -7.254092605e-06 -2.997660001e-05 -iw : 1 -0.06207731958 0.1148292053 0.003368952732 -0.04083379884 -0.01260323027 0.0173409845 -0.00545127118 -0.004328456599 -0.005102461293 0.002934730769 0.0009609788315 0.0004083046416 --0.001556812249 -0.00951191795 0.07211496006 0.05674521652 -0.01774179221 0.134332835 -0.1057026975 -0.005949810357 0.04477618144 0.0352331071 0.004147044291 -0.03155856471 --0.02483253941 0.003707300508 -0.02795932076 -0.02200039644 -0.001135519845 0.008732175102 -0.006871100899 -0.001572218987 0.01186853767 0.009339015637 -2.685718591e-06 -6.155000104e-05 --4.843194995e-05 0.0008724268072 -0.006605840439 -0.005197948466 -1.28521223e-05 0.0001435676729 -0.0001129693295 -0.0002240167781 0.001702223374 0.00133943129 -0.0001529581481 0.001140272111 -0.0008972477803 0.0001720956327 -0.001309671471 -0.001030543332 -0.1906509021 -0.01178880906 --0.009276279462 0.01701668817 0.07031926425 -0.1640425776 -0.02392970178 -0.01882960356 -0.03449707816 0.1425547163 -0.05244084999 -0.01394179111 -0.01097039996 0.02002747891 -0.0827609678 0.02738707207 0.001955804832 0.001538967346 -0.002884038044 -0.01191791442 -0.02288125741 0.006139849628 0.004831273515 -0.008842220082 -0.03653933152 -0.0003273413264 -0.0007353435792 0.0005786210044 -0.001016582714 -0.004200896661 -0.01154683759 -0.002289631111 --0.001801645776 0.003309119474 0.01367450848 -0.0004843986754 -0.0009322962965 -0.000733597511 -0.001321921463 0.00546266957 0.002759482132 0.0009075527129 0.000714127487 -0.001318933963 --0.005450324112 0.002443969522 0.0004617198186 0.0003633142285 -0.0006560355935 -0.002710982289 --0.002104780077 -0.0001956731887 -0.0001539696819 0.0002889235864 0.001193939374 0.0001167774654 --0.0002671857245 -0.0002102408679 0.0003823775035 0.001580125606 -0.0004909964673 8.735911411e-05 -6.874040894e-05 -0.0001292620357 -0.000534158654 -iw : 2 -0.0008971558933 0.007181086781 0.008529917698 -0.0006281201034 -0.005585627699 -0.001345880909 -0.002993383456 0.001408907747 -0.001361075533 -0.001073624419 0.0005465528475 0.0005871188148 --0.0001339106472 0.07211496006 -0.001753866119 0.001115536614 0.134332835 0.002774392365 -0.006840998259 0.04477618144 0.01024662283 0.009629554227 -0.03155856471 0.004776838011 -0.002672747002 -0.02795932076 -0.004353983213 -0.004401251911 0.008732175102 -0.004411163582 --0.003175228516 0.01186853767 0.001458597676 0.001561115205 -6.155000104e-05 0.002792377918 -0.002199366014 -0.006605840439 -0.0001281135828 -0.0003298522745 0.0001435676729 -0.001574511608 --0.001236366351 0.001702223374 -0.0001722128563 -7.680098285e-05 0.001140272111 0.0006320882953 -0.0005378401005 -0.001309671471 0.0001995612196 0.0001119622349 -0.003274846206 -0.03982745933 -0.07031926425 -0.003520473717 -0.001396777094 -0.01037179505 0.1119103007 0.1425547163 --0.005631592596 0.003440378172 -0.01198416624 0.1020306669 0.0827609678 -0.0008649548426 -0.01201602038 -0.004552721505 0.002483971951 -0.01191791442 0.002656376883 0.008818824623 -0.003412528954 -0.04528254947 -0.03653933152 0.001139410796 -0.002148797326 0.003956338574 --0.007767136539 -0.004200896661 -0.001306192965 -0.006235319182 -0.0002903354281 0.01436276385 -0.01367450848 -0.0008243336472 -0.0008538163445 -0.00225007654 0.009312448805 0.00546266957 -0.0005312705284 0.003244645589 -0.0004938691214 -0.007320671988 -0.005450324112 0.0005743765055 -0.001364549246 0.00100077815 -0.002713197791 -0.002710982289 -0.0002169262812 -0.001415537007 -0.0004872082212 0.0003044323834 0.001193939374 -0.0002786617974 -0.0009357529963 -0.0003494199635 -0.002916239895 0.001580125606 3.211949587e-05 0.0004320692912 -0.0002400527472 -0.001376922566 --0.000534158654 0.0001335739388 0.0004557470747 -iw : 3 -0.0007059465245 0.005650593495 0.006711950285 -0.0004942498927 -0.004395171999 -0.001059035511 -0.002355408534 0.001108629542 -0.00107099173 -0.0008448046016 0.0004300669327 0.0004619871417 --0.0001053704899 0.05674521652 0.001115536614 -0.002293767635 0.1057026975 0.006840998259 --0.0005365391533 0.0352331071 0.009629554227 0.005586075733 -0.02483253941 0.002672747002 -0.003483272079 -0.02200039644 -0.004401251911 -0.002223849113 0.006871100899 -0.003175228516 --0.002874404798 0.009339015637 0.001561115205 0.0007030433928 -4.843194995e-05 0.002199366014 -0.001727920659 -0.005197948466 -0.0003298522745 3.152953512e-05 0.0001129693295 -0.001236366351 --0.0009761304709 0.00133943129 -7.680098285e-05 -0.0001350424339 0.0008972477803 0.0005378401005 -0.0003717824638 -0.001030543332 0.0001119622349 0.000145373325 -0.002576883588 0.07031926425 --0.07386083567 0.003416209068 -0.002596135332 -0.00816127133 0.1425547163 0.04291614436 -0.00813424514 -0.0003336331912 -0.009430000483 0.0827609678 0.06197570909 0.006653180394 -0.007680348547 -0.003582407414 -0.01191791442 0.008252048039 0.001074945623 0.007184972908 -0.002685222237 -0.03653933152 -0.0275981093 -0.002329129497 -0.0009102346985 0.003113130602 --0.004200896661 -0.005733971111 -0.001421839813 -0.004811042878 -0.000228456713 0.01367450848 -0.007744524899 0.0005521307968 -0.0009624217509 -0.001770521406 0.00546266957 0.00666860588 -0.0009116100693 0.002433680063 -0.000388611603 -0.005450324112 -0.004682804062 -2.26732816e-05 -0.001188582618 0.0007874839387 -0.002710982289 -0.001401126604 -0.0004148890437 -0.001054752502 -0.0003833703296 0.001193939374 -0.0002734147895 -0.0001177664254 -0.0007608807844 -0.000274948658 -0.001580125606 0.002151484888 0.000166085114 0.0003059079096 -0.0001888906976 -0.000534158654 --0.001118398494 5.983838032e-05 0.0003695687299 -ad : 13 0 -R : 0 0 0 -iw : 4 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 -0.3077382509 0 0 -0.3401131198 0 -0 -0.2965292282 0 0 -0.2106036853 0 -0 -0.1684140665 0 0 -0.1131428397 0 -0 -0.1019205148 0 0 -0.0611381405 0 -0 -0.06480534154 0 0 -0.0295606475 0 -0 -0.04222101471 0 0 -0.008651835175 0 -0 -0.03034646073 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 -iat : 2 -ad : 9 2.716543093 -R : 0 1 0 -iw : 0 -0.09491011217 0.211648763 0.02880282627 -0.0744007118 -0.02463465712 0.01159120948 --0.0008000981085 0.003850383735 0.005860822391 -0.0001906723462 -0.006540673444 0.0002211333605 -0.001887411077 -0.05939034457 0.04066554248 -0.06342905761 0.1988425689 0.09194342603 --0.1434109693 0.1373579043 0.03890162984 -0.06067775246 -0.02728160437 -0.01543127082 -0.02406929567 -0.04019503217 -0.01251543893 0.01952125678 0.002324454415 0.0008442295715 --0.001316807372 -0.006357977303 -0.00178283319 0.002780816932 -0.001888957119 -0.0005605485685 -0.000874329107 0.007886642323 0.003012172774 -0.004698308905 0.007640230169 0.002035552733 --0.003175002316 -0.006318373111 -0.00198994655 0.003103866976 -0.00326869045 -0.00119330491 -0.001861286023 0.0003804714277 0.0003727896545 -0.0005814676265 -0.1755746365 -0.01537507643 -0.02398164513 -0.01343876619 -0.0292574651 0.02065772522 0.08634681014 -0.1346815132 --0.03176033504 -0.06914525341 0.1062741867 0.07914939689 -0.1234551748 -0.0194114994 --0.04226067022 0.0261947513 0.006776169161 -0.01056929277 0.0002371825632 0.0005163688738 --0.01804881997 -0.01360274977 0.021217216 0.003360046584 0.007315139221 0.0009806371234 -0.0002069764321 -0.0003228364663 2.729720703e-05 5.942860158e-05 -0.005805520733 -0.0041596078 -0.006488048276 0.0009956677649 0.002167662899 -0.007346948376 -0.005142086983 0.008020493803 -0.00121193492 0.002638496951 0.0008374407173 0.001926089798 -0.003004264872 -0.0006666231027 --0.001451301546 0.008899043378 0.005659006867 -0.008826772021 -0.001243401684 -0.002707003072 --0.0007696269777 -0.0006156309154 0.0009602451219 0.0001573139434 0.0003424873341 -0.002521401975 --0.002149446878 0.003352651446 0.0005676618243 0.001235853483 -0.001853255591 -0.0008054201786 -0.001256273488 0.0001117979638 0.0002433947416 -iw : 1 -0.03993897345 -0.0684317316 -0.2336049667 -0.05432785492 0.1305555378 0.07899490298 --0.06051390184 -0.05790590962 0.01681466604 0.03876805755 -0.002813797005 -0.01697063071 --0.003785104489 0.1951872648 0.01271461546 -0.01983192716 0.210578152 -0.03066905481 -0.04783679562 -0.1862686199 -0.1009897262 0.1575211536 -0.2292347668 -0.05594941132 -0.08726843949 0.03348054488 0.03416640664 -0.05329187422 0.1562889241 0.04823835144 --0.07524092846 0.0158414527 -0.004168003939 0.006501144355 -0.07981758464 -0.02817621386 -0.04394852701 -0.03370977327 -0.006400082836 0.009982683081 0.03909149955 0.01380961229 --0.0215398748 0.02184537064 0.006195232899 -0.009663163466 -0.009621487032 -0.004390584868 -0.006848320311 -0.01395340736 -0.003829997045 0.005973929975 0.1026264094 0.07997698185 --0.1247460203 -0.003026970509 -0.0065900011 0.3415473772 0.09175576512 -0.1431182607 -0.0117655453 0.02561470495 0.08579626767 -0.06880064645 0.1073134625 0.03776889686 -0.08222646079 -0.1771716838 -0.1340778385 0.2091311322 0.03088482974 0.06723919555 --0.1141368705 -0.02783095198 0.0434099965 -0.002143333734 -0.004666240264 0.08161317316 -0.07336800706 -0.114437513 -0.01961918988 -0.04271283204 0.07951103738 0.04091631811 --0.06382021092 -0.006816863991 -0.01484095768 -0.02074003754 -0.02816503857 0.04393109607 -0.008556682722 0.01862870761 -0.05381196095 -0.03202822327 0.0499567913 0.006669317337 -0.01451973465 0.003834727704 0.007489704686 -0.01168224696 -0.002648528049 -0.00576609607 -0.02249134944 0.01650426394 -0.02574292249 -0.003850516924 -0.008382939542 0.005967193536 -0.0008445754674 -0.001317346891 0.000227046634 0.0004943019973 -0.01060099702 -0.006768123687 -0.01055674365 0.001579218964 0.003438109053 -iw : 2 --0.007512662275 -0.06214417456 -0.08021662279 -0.00435568047 0.0485467061 0.0207061922 --0.02245284353 -0.01804207189 0.007532133214 0.01209405687 -0.001357878547 -0.005879953779 --0.0007131393521 0.01271461546 0.07392608211 0.006425304855 -0.03066905481 0.1263447822 -0.04070486127 -0.1009897262 0.02271852681 0.06147770693 -0.05594941132 -0.04376848812 -0.02366313759 0.03416640664 -0.02089267568 -0.02323517205 0.04823835144 0.01924679542 --0.02381269451 -0.004168003939 0.01145796225 0.004478025606 -0.02817621386 -0.006112991942 -0.01485527948 -0.006400082836 -0.008354501135 0.002089247346 0.01380961229 0.002983351396 --0.007283144387 0.006195232899 0.003264691395 -0.002911989559 -0.004390584868 0.0003066280132 -0.002547119363 -0.003829997045 -0.002218688022 0.001763267402 0.009649354994 -0.02623311179 --0.0065900011 0.0350462455 -0.04885913053 -0.01640682165 0.1242023501 0.02561470495 -0.0803418819 -0.0908769812 -0.07170931634 0.08211996552 0.08222646079 0.06246736566 --0.03832619092 -0.06271701033 -0.02740120148 0.06723919555 0.009224608321 0.02292958837 -0.002406354723 -0.05049756842 -0.004666240264 -0.02061496799 0.02430733029 0.03922167102 -0.008764428153 -0.04271283204 -0.01220864121 -0.006334055873 0.01443619166 0.02363219341 --0.01484095768 0.004054353398 -0.01295757543 -0.01690521124 0.003148092772 0.01862870761 -0.007386707561 8.893606672e-05 -0.01370438695 -0.01465844154 0.01451973465 0.0003378547825 -0.007096112531 0.005168281404 -0.001324811199 -0.00576609607 -0.002947004784 0.0008290084 -0.007808078559 0.004090369817 -0.008382939542 -0.001263942265 -0.002711046996 -0.0003651551187 -0.003280388016 0.0004943019973 0.001052281326 -0.001107863552 -0.003202304864 -0.002870956451 -0.003438109053 0.0005188165011 0.00111132124 -iw : 3 -0.01171805561 0.0969308704 0.125119806 0.006793877336 -0.07572189204 -0.03229698112 -0.03502136253 0.02814155541 -0.01174842588 -0.01886399598 0.002117983711 0.009171399279 -0.00111233625 -0.01983192716 0.006425304855 0.06802344021 0.04783679562 0.04070486127 -0.08895103587 0.1575211536 0.06147770693 -0.03375830923 0.08726843949 0.02366313759 --0.06550676055 -0.05329187422 -0.02323517205 0.000452443833 -0.07524092846 -0.02381269451 -0.04112245914 0.006501144355 0.004478025606 0.007344199219 0.04394852701 0.01485527948 --0.01975987673 0.009982683081 0.002089247346 -0.01027379978 -0.0215398748 -0.007283144387 -0.009674052333 -0.009663163466 -0.002911989559 0.005939806735 0.006848320311 0.002547119363 --0.0020332973 0.005973929975 0.001763267402 -0.003838523389 -0.01505081345 -0.0065900011 --0.02017917078 0.0498181162 0.02821756324 0.02559093454 0.02561470495 0.1006712595 -0.09656607837 0.03983133192 0.1118503303 0.08222646079 0.00658217181 0.04809080148 --0.007063832828 0.09782436477 0.06723919555 -0.08917086095 -0.01676477388 -0.03467339844 --0.003753369636 -0.004666240264 -0.04621090096 -0.02560369311 -0.01138391264 -0.06117694439 --0.04271283204 0.04800280792 0.002141881194 0.0176427213 -0.02251719704 -0.01484095768 -0.03726592139 0.01186170618 0.01185774728 0.02636830968 0.01862870761 -0.01396527267 -0.001829092063 -0.006271061353 0.02137574704 0.01451973465 -0.02799707621 -0.005836798839 --0.008629383564 -0.008061351181 -0.00576609607 0.003972244898 -0.001451414463 0.001484983491 --0.01217883826 -0.008382939542 0.01179140367 0.00193750885 0.004244217432 0.0005695594758 -0.0004943019973 0.002826294748 0.001195989289 0.0004247613592 0.004994872004 0.003438109053 --0.006029394378 -0.0007940503188 -0.001740385463 -ad : 10 4.049413304 -R : 0 1 0 -iw : 4 -0.08526146518 0.03086900208 -0.05995147823 0.02656547927 -7.690117814e-05 -0.006192729152 -0.001740360164 0.004840084021 -0.006377217572 0.004057310588 -0.00233822198 0.001269062597 --0.001239805982 -0.02372009615 -0.05437382619 -0.1098926241 0.07577731561 -0.02371941073 --0.04793829072 -0.05057687648 0.02842980323 0.05745826436 0.01317381614 -0.007778752254 --0.01572130485 0.003677766291 -0.004340723443 -0.008772851262 -0.001183770881 0.004027089408 -0.008138978873 -0.005649117241 4.054579924e-05 8.194538783e-05 0.008501068741 -0.002449002809 --0.004949575263 -0.00809784941 0.00281200149 0.005683216437 0.005216256364 -0.001341375818 --0.00271099753 -0.00297704741 0.0001409779426 0.000284924515 0.00319493908 -0.00034321293 --0.0006936530339 -0.003333248471 0.0005033536413 0.001017306605 -0.1272693544 0.004811577861 -0.00972447507 -0.05855849399 0.07673427718 0.0300966079 -0.04888006651 -0.09878942043 --0.03226410302 0.0422784545 0.0001766214896 0.02517311004 0.05087630049 0.02440125018 --0.03197507598 -0.000356880564 -0.002101600947 -0.004247456158 -0.002207076058 0.002892123318 --0.004627512239 -0.004516957848 -0.009129031111 -0.006660880393 0.008728329701 0.006566160089 -0.001203037383 0.002431407612 0.00442290953 -0.005795722238 -0.006151261147 0.004303855123 -0.008698338271 0.001101992721 -0.001444036708 0.004928160997 -0.005608919259 -0.01133594781 --0.002969921556 0.003891745986 -0.003682945343 0.003782042041 0.007643724076 0.001823837317 --0.002389932334 0.003196389838 -0.002322508598 -0.004693923203 -0.000655779972 0.0008593254148 --0.003103684385 0.001325569688 0.002679052434 -0.0002610765888 0.0003421113141 0.00290675009 --0.001296461511 -0.002620223137 0.0001913873528 -0.0002507914596 -0.002769889511 0.002085243605 -0.004214397031 0.0006384296005 -0.0008365897172 -ad : 14 0 -R : 0 0 0 -iw : 5 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 -0.3077382509 0 0 -0.3401131198 0 -0 -0.2965292282 0 0 -0.2106036853 0 -0 -0.1684140665 0 0 -0.1131428397 0 -0 -0.1019205148 0 0 -0.0611381405 0 -0 -0.06480534154 0 0 -0.0295606475 0 -0 -0.04222101471 0 0 -0.008651835175 0 -0 -0.03034646073 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 diff --git a/tests/09_DeePKS/100_NO_KP_deepks_UT/gdmepsl_ref.dat b/tests/09_DeePKS/100_NO_KP_deepks_UT/gdmepsl_ref.dat deleted file mode 100644 index 00fdeb456f..0000000000 --- a/tests/09_DeePKS/100_NO_KP_deepks_UT/gdmepsl_ref.dat +++ /dev/null @@ -1,3510 +0,0 @@ -0.1255502071 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.04094690846 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.001882323965 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.01101489697 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0001740754221 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0006272641514 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -5.272637793e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -5.250781725e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0002223871639 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.518323797e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -2.478868527e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --9.40617047e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --4.359381061e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0187763254 -0.005595512172 -0.01834760962 0 0 --0.07480244072 -0.2223565667 -0.1113731892 0 0 --0.01708198282 0.2039941904 0.166667565 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.01050189809 -0.01140521684 -0.01650375629 0 0 --0.01301676308 0.2412367058 0.1917227356 0 0 --0.01383199943 0.2609014604 0.2071662937 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0004423904766 -0.003587004175 -0.002372460209 0 0 --0.003097784814 0.09157861604 0.07140400774 0 0 --0.001567383618 0.06114867009 0.04730056117 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0005218122451 0.001797564121 0.0009631253369 0 0 --0.0001198722304 -0.02017494775 -0.01512715038 0 0 -0.0005586545847 -0.02896942684 -0.02227123679 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0001871990209 0.001239011228 0.001075307593 0 0 -0.0009963885579 -0.0345090824 -0.02677667395 0 0 -0.0008010449571 -0.02301740414 -0.01796258264 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.112676161e-05 -0.000282589832 -0.00022150526 0 0 --0.0001959529445 0.00632687581 0.004919319748 0 0 --0.0001584048634 0.005073756989 0.003945934223 0 0 -0 0 0 0 0 -0 0 0 0 0 -6.149015848e-05 -0.0003084770584 -0.0002789209407 0 0 --0.0002001840323 0.005870111337 0.004577910807 0 0 --0.000209176006 0.005814156301 0.004542474453 0 0 -0 0 0 0 0 -0 0 0 0 0 --9.157298647e-06 6.789539708e-06 1.201327022e-05 0 0 --6.979920587e-05 0.001064525029 0.0008554519017 0 0 -9.688917591e-06 -0.00017175361 -0.0001368374437 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.574637913e-05 0.000101848438 8.86617363e-05 0 0 -8.428811379e-05 -0.003035637034 -0.002352911168 0 0 -6.619816702e-05 -0.001894031296 -0.001478295005 0 0 -0 0 0 0 0 -0 0 0 0 0 -2.141219778e-06 -3.25815742e-06 -4.069071893e-06 0 0 --1.843136224e-05 0.0003957694592 0.0003123791557 0 0 --3.140029923e-06 6.97916884e-05 5.500331268e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -4.697002409e-06 -1.811444996e-05 -1.719596331e-05 0 0 --1.424569123e-05 0.0001161051229 9.82841217e-05 0 0 --1.325383273e-05 0.0003474285126 0.0002719985512 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.569708964e-06 -3.72998904e-06 -8.794975881e-07 0 0 --1.474157043e-05 0.0002009841499 0.0001626951376 0 0 --1.298249428e-07 5.178813024e-05 3.916100207e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.949985096e-06 6.030600406e-06 6.015369995e-06 0 0 -2.926318973e-06 -0.0002570569752 -0.000196064737 0 0 -4.757564686e-06 -0.0001178018787 -9.242172195e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.01433654085 0.0071537919 -0.01749480537 0.009405371874 0.04335573172 --0.04500038753 -0.03004348379 0.04651601809 0.007602951252 0.01779814363 --0.003318563055 -0.003792038175 0.006476178733 -9.75325024e-05 -0.00223959769 -0.07873294384 -0.002217185627 0.02445635544 -0.03617464984 -0.154573692 -0.04997473682 0.01779808198 -0.02158265561 -0.01494270922 -0.05483991052 -0.0260336452 0.007454662417 -0.007732628585 -0.008542835666 -0.03266217065 --0.007311219681 -0.006177652353 0.01006234798 0.0006939418578 -2.95782423e-05 --0.003946883738 -0.00414670883 0.007000438218 3.568519556e-05 -0.001845052117 -0.007201233745 -0.00245728896 0.006592700075 -0.004249982652 -0.0192177832 --0.02985954535 -2.964249422e-05 -0.007593214199 0.01335581264 0.05666077788 -0.001801542023 0.0004785092284 -0.0004629253227 -0.0006067662824 -0.002344413363 -0.0002107818034 7.231782734e-05 -8.571679636e-05 -6.417319601e-05 -0.0002374990557 --0.0004079345604 -0.0003413013279 0.0005548955283 4.013230421e-05 5.976902036e-06 --0.0005540228261 -0.0001435368804 0.0001353725585 0.0001881074606 0.0007291216964 --0.002237955358 -0.0002375038559 -0.0001145275764 0.0009027747153 0.00371655243 --0.0001416816889 8.315727043e-05 -0.000196965947 9.815125343e-05 0.0004565393732 --0.0007164595617 -0.000486563123 0.0007565011312 0.0001176096177 0.0002648119161 -2.126584048e-05 -1.494350487e-05 3.432039691e-05 -1.576001566e-05 -7.407194839e-05 -0.00117613901 -3.151113061e-05 0.0003622267258 -0.0005397168196 -0.002305445932 -0.0005544159783 0.0002648105933 -0.0003695799652 -0.0001376489794 -0.0004566137772 -4.564652879e-06 1.572567963e-05 -2.921342702e-05 4.522218232e-06 2.676122937e-05 -9.543105299e-06 7.752031934e-06 -1.253230022e-05 -1.035823522e-06 -6.631844503e-07 --2.809808021e-05 -1.841116734e-05 2.837231717e-05 4.892501439e-06 1.189693356e-05 -3.102904138e-06 -3.120455753e-06 6.823921852e-06 -2.692037815e-06 -1.292597349e-05 -2.984997116e-05 -6.634904723e-07 8.929935896e-06 -1.364092482e-05 -5.820436106e-05 --1.97148404e-05 -3.831114001e-06 2.35069138e-06 7.226804592e-06 2.882222607e-05 --5.125941516e-06 -2.652281295e-06 3.811020802e-06 1.18750918e-06 3.76219309e-06 -2.884122126e-06 2.534845247e-06 -4.158516662e-06 -2.328735241e-07 2.322379625e-07 -1.20412991e-05 1.239145379e-06 6.91066553e-07 -4.873547074e-06 -2.008417146e-05 -2.824690178e-05 3.762201106e-06 -3.149914513e-08 -1.107540133e-05 -4.518682686e-05 -0.0001148673896 2.735637876e-05 -2.342334374e-05 -4.000449992e-05 -0.0001565870254 --1.708519492e-05 -1.707957373e-05 2.862127235e-05 5.179768718e-07 -6.02513837e-06 --1.225999734e-05 -1.410978057e-05 2.41197441e-05 -4.023202026e-07 -8.500553926e-06 -3.446328601e-06 -9.342250088e-06 1.893279506e-05 -5.443528506e-06 -2.759740936e-05 --0.0001472110506 -6.025408381e-06 -2.607633424e-05 6.339099217e-05 0.000266097052 --8.138930865e-05 -1.208327386e-05 2.492393596e-06 3.139314792e-05 0.0001273983878 --3.006989391e-05 -1.687457249e-05 2.489831341e-05 6.416849928e-06 1.910527892e-05 -7.999815928e-06 7.455712116e-06 -1.235520745e-05 -4.686093956e-07 1.601107567e-06 -6.584393502e-05 4.03695748e-06 9.070606359e-06 -2.779296504e-05 -0.0001159950966 -0.0001271605553 1.910533797e-05 -4.332132116e-06 -4.895317393e-05 -0.0001985330547 --1.793625148e-05 -2.068828649e-06 -5.984479019e-07 7.166319806e-06 2.941403326e-05 --4.0176473e-06 -1.836018144e-06 2.517913507e-06 1.032131421e-06 3.495850954e-06 -3.1623062e-08 6.230333013e-07 -1.195635644e-06 2.45972664e-07 1.343745363e-06 -1.146767697e-05 8.285887381e-07 1.337315766e-06 -4.788151699e-06 -1.991946565e-05 -2.925230463e-05 3.495871637e-06 7.40665503e-07 -1.163672109e-05 -4.769700035e-05 -9.922578526e-06 3.265891847e-06 -3.767579587e-06 -3.078778735e-06 -1.149231715e-05 --1.766139856e-06 -1.601881682e-06 2.642419348e-06 1.218834421e-07 -2.540353482e-07 --2.505506487e-06 -2.19565205e-06 3.6001822e-06 2.049871782e-07 -1.872644374e-07 -1.808324191e-06 -9.976979275e-07 2.390933766e-06 -1.226152288e-06 -5.6834992e-06 --1.042284861e-05 -2.540560053e-07 -2.179646245e-06 4.560259882e-06 1.922902803e-05 --5.029548541e-06 -2.132784427e-08 -1.247442781e-06 2.242835919e-06 9.50714836e-06 --7.45049182e-06 -4.905581484e-06 7.568946512e-06 1.287412455e-06 3.101252428e-06 -8.129493744e-07 3.966098835e-07 -5.579838312e-07 -1.983658309e-07 -6.508078792e-07 -1.281779904e-05 -4.461828855e-08 3.370327e-06 -5.757188071e-06 -2.445196243e-05 -1.028273426e-05 3.101244306e-06 -3.357193027e-06 -3.308765352e-06 -1.254753097e-05 --1.524884289e-05 -1.942900413e-06 -1.531925015e-07 6.015738494e-06 2.459220049e-05 --6.368487331e-06 -3.649701988e-06 5.419738041e-06 1.327354358e-06 3.875402703e-06 -1.158768756e-06 1.134467626e-06 -1.894965191e-06 -4.511782119e-08 3.547463497e-07 -1.375708339e-05 6.71562957e-07 2.227281002e-06 -5.878686152e-06 -2.462272262e-05 -2.470948484e-05 3.875413909e-06 -1.156574993e-06 -9.44442251e-06 -3.821130232e-05 --1.571071864e-06 5.028205384e-07 -1.37401298e-06 9.133114452e-07 4.117702589e-06 --2.835130926e-06 -1.845036268e-06 2.838316366e-06 4.989507753e-07 1.228970632e-06 --4.683533524e-07 -3.812358187e-07 6.165711315e-07 5.050839424e-08 3.078064852e-08 -5.322420683e-06 -1.32224813e-07 1.61915424e-06 -2.438067149e-06 -1.040953682e-05 -4.548019961e-06 1.228968692e-06 -1.209167478e-06 -1.523037283e-06 -5.871268474e-06 -0.228749032 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.3401414218 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.3228059257 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.01657103655 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.04304605797 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.02463086072 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.02087900591 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.002081369017 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0009422545895 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.002672981492 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0007549623854 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.00036561111 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -5.055291671e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.1318453975 -0.03184713356 0.008959634835 0 0 --0.004243564769 -0.08456222339 -0.3142066332 0 0 --0.007866621018 0.3234744983 0.3181794555 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.06215429115 -0.01229161501 0.02604896906 0 0 --0.005160294964 0.1126168456 -0.06873454236 0 0 -0.0172910872 0.2368013918 0.2080008491 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.006189779527 -0.007586629917 -0.008851837169 0 0 --0.003100263404 0.08472970663 0.08114443835 0 0 --0.006378048745 0.1162741053 0.08840650874 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.004776773104 0.0007680019564 0.003076243991 0 0 -0.001187954232 -0.031492504 -0.03632727687 0 0 -0.002866506366 -0.0184684695 -0.01292818014 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.001006928891 -0.002010521126 -0.002207119722 0 0 --0.000818403009 0.02463214963 0.0219637839 0 0 --0.001709492278 0.03199183327 0.02465069964 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0002767716032 0.0003926482429 0.0003440161326 0 0 -0.0006434366321 -0.01245044372 -0.01036182648 0 0 -0.0003871218922 -0.009139833214 -0.007048814805 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.00017052242 -0.0002837312574 -0.0001452995073 0 0 --8.794647556e-05 0.003274564966 0.00215685163 0 0 --0.0001739368415 0.004096026686 0.003320538759 0 0 -0 0 0 0 0 -0 0 0 0 0 --4.573904682e-05 -3.366654156e-05 7.017731231e-06 0 0 -8.885594691e-05 0.00131492829 0.0009277907663 0 0 -3.836714443e-05 0.001055187154 0.0007651150516 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0001064711389 -1.129211441e-05 -1.278512588e-05 0 0 -0.0001221914928 -0.0004539954905 -0.0002722348237 0 0 -3.223548671e-05 0.000363563578 0.0002061053685 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.752309164e-05 2.816151141e-05 3.386058335e-05 0 0 -5.775889246e-05 -0.0004979843186 -0.0004177293158 0 0 -2.803637619e-05 -0.0003416287788 -0.0002788556766 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.678138827e-05 3.163766425e-06 1.225816949e-05 0 0 -2.185155914e-05 -0.0001485919626 -0.0001716411985 0 0 -8.610033603e-07 -9.809532708e-05 -6.295293291e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.512044226e-05 -1.385520954e-05 -1.376053635e-05 0 0 -2.492727855e-05 0.0003265756726 0.0002555801337 0 0 --6.081104263e-06 0.0003097511937 0.0002304279887 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.539561689e-05 7.202410859e-06 4.661530655e-06 0 0 -3.961054931e-05 -0.0001807464758 -0.0001423393479 0 0 -9.314200008e-06 -8.089128159e-05 -7.437216462e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.05442450075 -0.02960929257 -0.03579963192 0.07762298387 0.09391236338 -0.0143630839 -0.08204328929 -0.091592769 -0.009561756724 0.008110396509 --0.0116658426 0.131358713 0.1285950106 -0.02398187313 -0.008834157208 -0.3243883699 -0.01122113285 0.03158756744 -0.02588361548 -0.601450076 -0.0063035571 -0.04768676839 0.009683228533 0.3313476215 -0.1164524427 -0.0322767694 -0.01420115501 -0.01356930862 -0.05705443941 -0.0418542874 --0.01315944957 0.09417332609 0.06845946684 -0.05505126585 0.03101551993 --0.01245277845 0.1167304308 0.08660097496 -0.04959610902 0.02629276711 -0.1450556557 -0.05848660591 -0.03340616508 0.2294867776 -0.3083722695 --0.09426645749 -0.001673442593 0.008849762874 0.1835346609 0.1198224682 -0.03614806083 0.003007290257 0.002247383337 -0.01698294984 -0.06040510136 -0.005203427661 0.00486608602 0.0038294072 -0.004381858059 -0.008712822362 -0.006784670385 0.004234775393 0.003512933784 -0.004064365729 -0.01166844622 -0.04436677688 0.002356702301 0.002427225123 -0.008019642489 -0.07727242707 --0.0755418427 -0.006534033508 -0.005172449726 0.03275871682 0.1270621447 -0.009106242933 -0.0001605423297 -0.0001097914644 -0.003321129356 -0.01537125211 -0.001021518549 -0.0005591515188 -0.0004412947117 -0.0004638097985 -0.001654521386 -0.0004273881466 0.002465720641 0.001896834815 -0.001282232566 -0.0006738323197 --0.0003655204346 -0.001147148751 -0.0007614167514 0.003239749279 -3.900402381e-05 --0.01629895853 -0.00162158879 -0.0009649070261 0.01357271351 0.02582594197 --0.006001955139 -0.0006202431639 -0.0005324027136 0.00209051556 0.01024607432 --0.000173989216 0.0006870157266 0.0005194869883 -0.0003118256104 0.0003275055288 -0.0003833594569 0.0006947243716 0.000660993703 -0.0003059468038 -0.000777468469 -0.01405350504 0.001076419719 0.001016194026 -0.004041469837 -0.02418954666 -0.007270268979 0.0007495011917 0.0006081908262 -0.002682089704 -0.01234906732 -0.00479364491 0.0003359195555 0.0002226758303 -0.001920141425 -0.008049271814 -0.0004833845374 -0.000256137951 -0.0002572356353 -0.0001214158019 -0.0007544764048 -0.0003774439295 -1.32392733e-05 0.0001006063172 -2.476794572e-05 -0.0007580330077 --0.001632361014 6.94064539e-05 0.0001521461475 0.0003089090461 0.002720362468 --0.008170705818 -0.0006193926338 -0.0004084367716 0.003519198662 0.01366681122 --0.002604838948 -0.0002621658628 -0.0002437743119 0.0008250671156 0.004479171649 --0.0002355508161 0.0004521069812 0.0002474352926 -0.0002710554456 0.0005265574536 --0.0001371374611 0.0004795306773 0.0003449208956 -0.0001748838598 0.0002633281386 -0.002262858658 -5.152040915e-05 6.05243717e-05 0.0004765838976 -0.004170260416 -0.004105485939 0.0004261787241 0.0004646205781 -0.00126398937 -0.007130866353 -0.002633537566 0.0001778128313 0.0001300010201 -0.0009862408421 -0.004447068661 -0.0002937446858 -0.0003162070826 -0.0003151417467 -3.207756412e-05 -0.000423611659 -0.0002452846983 -0.0001816085184 -0.000187732067 -6.823519994e-05 -0.0003620835536 --0.0006033277008 8.299535344e-05 4.879136368e-05 -0.0002795192988 0.00112741486 --0.004567337917 -0.0003017135597 -0.0001464649643 0.002016090573 0.007583867931 --0.001293210144 -0.0001294009211 -0.0001095784785 0.000537779393 0.002187899712 --8.798321178e-05 -7.479947336e-05 -9.696264557e-05 2.653272461e-05 0.0001903523494 --5.427775641e-05 -4.851197322e-05 -5.986029188e-05 1.703801598e-05 0.000115880833 -0.0008973679573 0.0001044840708 8.53176518e-05 -0.0004384692277 -0.001504182769 -0.002085926702 0.000234366571 0.0002307666017 -0.0008256757498 -0.003570053314 -0.0002168040303 2.607029314e-05 1.309518722e-05 -9.544035298e-05 -0.0003583277173 -1.870215719e-05 7.663040549e-06 -2.05853598e-05 -3.958650446e-05 -1.819000178e-06 -1.498411849e-05 2.153447489e-05 9.370966734e-06 -2.118862662e-05 -1.725417586e-05 --3.80399533e-05 -1.599320254e-05 3.144518161e-07 8.463044478e-05 3.971687809e-05 --0.000379701769 -3.226942102e-05 5.990666498e-06 0.0001809755228 0.0006071294738 -3.705423021e-06 -6.960353395e-06 -1.330329912e-05 -5.500426766e-06 2.20035513e-06 -1.694312682e-06 -1.290116543e-05 -3.151469877e-05 -1.934093522e-05 2.117970779e-05 --1.325351711e-06 1.948690396e-05 1.787508868e-05 -4.639263202e-06 -7.314286316e-07 --2.053760796e-06 4.416330473e-06 1.959876804e-05 4.24548472e-05 -1.981532522e-05 --6.586924746e-06 1.257804832e-05 3.667607948e-05 5.027580881e-05 -2.366251693e-05 -0.0001005940161 -2.389689794e-06 -8.177847671e-06 -3.316132971e-05 -0.0001646787206 -1.714463775e-05 -4.747826732e-05 -5.543600994e-05 -3.896655922e-06 -9.0338333e-06 -1.312186478e-05 -1.532562197e-05 -9.796665384e-06 3.207664263e-06 -2.442627962e-05 -9.586843948e-06 2.529875669e-05 2.974855248e-05 -5.660410387e-05 -1.641908478e-05 --0.0001839838999 5.991259592e-06 2.78425855e-05 0.0001038807887 0.0002818807834 --8.639329436e-05 -1.161676415e-05 -1.426029688e-05 3.883646607e-05 0.0001499448397 --3.941109637e-06 -2.812647861e-05 -4.164713947e-05 -6.569374005e-06 2.822164849e-05 --4.024400985e-06 -9.621505179e-06 -1.349835621e-05 -7.082696737e-07 1.338865351e-05 -5.312762031e-05 1.311205346e-05 1.664731303e-05 -3.692068661e-05 -9.292863003e-05 -0.0001396274023 2.785052058e-05 4.58236105e-05 -3.593029325e-05 -0.0002625732989 -0.04057473282 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.03781173723 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0009217487094 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0008783625595 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.003705573031 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.001511192843 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0006814582208 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0002792888725 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0001837816024 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0001418566109 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.423100289e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -3.191588176e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --6.459755976e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.05389405118 0.02673771949 -0.05319478738 0 0 --0.1915515732 -0.1211589743 0.02121073482 0 0 --0.03217195243 0.01638835491 0.08214024255 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.05563836527 0.03314989879 -0.04085963538 0 0 --0.08503959394 -0.011350531 0.03234481384 0 0 --0.01151457109 -0.01972720714 0.0271232309 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.02288328493 0.004958226797 -0.0115839188 0 0 --0.01728159559 -0.006717960739 0.009763904785 0 0 --0.01261182425 -0.001775330517 0.005516989486 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.002246644473 0.001439575874 0.001409920141 0 0 --0.005746069087 -0.001009282675 0.002247037998 0 0 -0.001510014292 -0.001263787284 -0.0001901379193 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.004923220973 0.000908554223 -0.002777720019 0 0 --0.004818943728 -0.001978908841 0.002366677799 0 0 --0.00263383634 -0.000442826575 0.001312145056 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0004648474802 -0.0001511221811 0.00020555249 0 0 --0.0001433411646 -6.566983674e-05 2.910858271e-05 0 0 -0.000186629388 7.795695556e-05 -3.945221884e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --9.145652525e-05 0.0002292217791 0.0001608872652 0 0 --0.0008752367066 -0.0002823986525 0.0003679490174 0 0 -2.479575478e-05 -0.0001039963348 1.510906614e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0006584308905 0.0001997869389 -0.0003202518319 0 0 -0.0002839400376 -0.0001009869311 -0.0002661996651 0 0 --0.0002989955074 -0.0001345584477 8.947702951e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0002303825272 -8.697599321e-05 0.0001205778118 0 0 --0.0002437640911 -0.0001945416086 4.907984407e-05 0 0 -0.0001547615409 1.78093279e-05 -0.0001208094072 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.819838041e-05 4.287104392e-05 1.564032217e-05 0 0 -3.001377374e-05 -3.357986722e-05 -5.076653254e-05 0 0 --6.140815816e-07 -2.985552498e-05 -1.790426469e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.869029926e-05 -4.093706724e-07 1.681649595e-05 0 0 -1.496874099e-05 -2.989579959e-05 -3.810220739e-05 0 0 -1.493218684e-05 -2.766999735e-07 -5.237370114e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 -6.528639684e-05 9.192151595e-06 -3.719482366e-05 0 0 -3.398762001e-05 -3.741810518e-05 -4.897373425e-05 0 0 --2.931669419e-05 -7.890645518e-06 9.168046196e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.012876043e-05 -9.582135362e-06 1.75505811e-05 0 0 -9.998352927e-06 -3.549872896e-05 -3.225755701e-05 0 0 -1.962947216e-05 1.244560778e-06 -1.675801542e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.04105023335 0.09018547069 -0.05535313537 0.006003330185 -0.05712325924 --0.2424047498 -0.1399145698 0.06340285684 -0.03787109277 0.04605118843 -0.006074723245 0.016055265 0.1049106717 0.04938986841 -0.0008101666742 -0.001355584586 -0.04560586771 0.130890031 0.04293043588 0.04309500654 -0.02270583427 0.1105011856 -0.07045022509 0.003056071339 -0.07729069444 -0.0503557322 0.06829650209 -0.0485366115 0.008369113718 -0.02463557947 --0.1190243998 1.684443346e-06 0.06719433194 0.02087381189 -0.00457045136 -0.01342810842 -0.03784548534 0.0510039983 0.01268074933 0.03393906346 --0.009323509626 -0.04593347673 0.05289379442 0.007566056357 0.03042960159 -0.02929697951 -0.007348321221 -0.04783436649 -0.02427015245 -0.009062466799 -0.0216506317 0.01600934947 -0.02215674841 -0.002449710397 -0.00739431085 --0.03279226577 -0.01869201978 0.03225923555 0.005282258928 0.009166053578 --0.01297963959 -0.01392661195 0.01779439664 0.002041437259 0.00735053158 --0.01463860338 -0.01138494324 0.01715032799 0.002544984516 0.005981329397 -0.01727366947 0.009896126041 -0.01633743021 -0.002424175416 -0.004587733082 -0.004219614617 0.004208464514 -0.004924215988 -0.0004107107857 -0.002170031224 --0.001217427944 0.0001470949509 -0.0006205711288 -0.0003812141277 -0.0005276290703 --0.004362777121 -0.00348780117 0.004545186929 0.0004662288216 0.001712495573 --0.0007540073124 -0.00261192129 0.001751470765 -0.0001618059208 0.001451315786 --0.001438210303 9.494295615e-05 -0.0008072718212 -0.0005122288379 -0.0006038140419 -0.0004132093432 0.0002770906907 -0.0006039529808 -5.882719155e-05 9.754591428e-05 --0.007222889246 -0.00446278941 0.007017710473 0.001062839928 0.002352936472 -0.001249448297 0.0002908599915 -0.0003925786835 -2.586491539e-05 -0.0001880862899 --0.001842599042 -0.001428676739 0.002294035529 0.0003673821139 0.0007246383842 -0.003712268841 0.002241485202 -0.003539119005 -0.0005280424733 -0.001154542932 -0.001708482745 0.001249475166 -0.001755991724 -0.0002326264406 -0.0006793460324 -0.0003351409193 0.0002117950741 -0.0002170640608 -9.995359937e-06 -0.0001286576171 --0.001775400968 -0.001147445495 0.001787043486 0.0002470171791 0.0005323916062 --0.0005134808952 -0.0002837548083 0.0007192793503 0.00013926631 3.754935894e-05 --0.0002140160138 -5.885038042e-05 0.0001770180677 2.679934922e-05 -2.202162498e-05 --0.0004043711135 -0.0001557067776 0.00056145719 0.0001511476497 6.315013677e-05 --0.000931905096 -0.0004636466688 0.0007220632419 8.488573166e-05 0.0001921515984 -0.0006701521313 0.0001677958834 -0.0005833175034 -0.0001295756771 -1.571846257e-05 -3.151765972e-05 -1.893365264e-05 0.0001727021516 7.008353967e-05 3.159177893e-05 -0.0004392530343 0.0003578459289 -0.0002707901368 2.421789834e-05 -0.0001923525233 -0.0006434596832 0.0003807985977 -0.0008262187269 -0.0001706822078 -0.0001711297281 --9.652717229e-05 -0.0002952220096 -0.0001103100461 -0.0001260918504 0.0002119684184 --0.0006468930349 -0.0004119260933 0.000552852723 5.312824261e-05 0.0001909439376 --0.0002693809552 -0.0002082587366 0.0002498907673 2.111618526e-05 0.0001091425843 --5.032361389e-06 0.0002051146243 0.0001256776447 9.965718523e-05 -0.0001626741406 --0.0001600136601 -0.0001222884219 0.0001503974336 1.529458228e-05 6.898762039e-05 --0.0002274450741 -0.0002053448165 0.0001635371962 -2.930518923e-06 0.0001325590783 -0.0001929161936 0.0001127118174 -0.0002475903085 -4.965831751e-05 -4.424262834e-05 --7.396218256e-06 -4.08711313e-06 8.56963449e-06 1.611640111e-06 1.563528931e-06 -0.0001124290114 0.000125477765 -4.086372596e-05 2.087000659e-05 -9.189558252e-05 -4.72527348e-05 4.229774897e-05 -3.534843694e-05 3.800745001e-07 -2.594114901e-05 --4.275756543e-05 -3.15050567e-05 2.977478032e-06 -1.049230694e-05 1.711957029e-05 --2.781690412e-05 -5.17331735e-05 2.510929237e-05 -4.580701288e-06 3.812393011e-05 --1.617742454e-05 -5.2298355e-06 4.508628937e-05 1.501090526e-05 9.370093573e-07 -2.184424906e-05 4.077233469e-05 2.881293202e-05 2.299854917e-05 -2.96231414e-05 -3.0945383e-05 1.483764297e-05 -5.292197687e-05 -1.388395405e-05 -4.181073444e-06 -1.537174327e-05 -1.740116016e-05 -7.153314337e-05 -3.092000246e-05 1.740591371e-05 --3.527998008e-05 -1.715210202e-05 4.930892551e-05 1.140551672e-05 4.966668205e-06 --2.610772315e-06 6.831236833e-06 3.050859861e-05 1.347787308e-05 -6.013070121e-06 --1.831185229e-05 2.727289273e-05 5.48676946e-05 2.644163541e-05 -2.580176325e-05 -1.025712718e-05 -3.561874599e-06 -3.270366621e-05 -1.250091123e-05 5.917865842e-06 --2.898445213e-05 -5.58130377e-05 -1.523287221e-05 -2.185475344e-05 4.055247411e-05 --1.085894892e-05 3.931990539e-06 1.095850356e-05 4.029165529e-06 -5.960379678e-06 --1.340596074e-05 -5.222490105e-07 2.969391993e-05 1.005888708e-05 -3.126414345e-06 -7.855313071e-06 4.167683073e-05 2.537199296e-05 2.033005935e-05 -3.36314328e-05 --9.141570512e-06 -9.51891615e-06 2.721576097e-06 -2.157570455e-06 5.667445935e-06 --1.255538365e-05 -3.26947513e-05 -2.667106506e-05 -1.922334447e-05 2.521720851e-05 -1.03523631e-05 -1.202035741e-06 -2.397271122e-05 -8.409160767e-06 4.216896153e-06 -1.053405423e-06 4.534590409e-06 9.307144353e-06 4.769401465e-06 -3.802583058e-06 -3.135349483e-06 3.221006969e-05 3.492368909e-05 2.128717974e-05 -2.724713499e-05 -0.05927247197 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.03809046879 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0006901143036 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.007487184841 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0002645453652 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0004814723012 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.366363443e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -3.163681238e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0001375110152 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -6.446129117e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.373294983e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.654624656e-07 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.624230538e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0282675874 -0.01840086789 0.007395905717 0 0 --0.01708198282 0.2039941904 0.166667565 0 0 --0.06249080126 -0.319771182 -0.19408901 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.01523359611 -0.0166163162 -0.001068033217 0 0 --0.01383199943 0.2609014604 0.2071662937 0 0 --0.004114501024 0.115682687 0.09033778673 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0009316764284 -0.002406425786 -0.002516321561 0 0 --0.001567383618 0.06114867009 0.04730056117 0 0 --0.002459444896 0.06194456218 0.04857233503 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0009249488857 0.000980155421 0.001435433707 0 0 -0.0005586545847 -0.02896942684 -0.02227123679 0 0 --0.0002647638738 -0.006113411404 -0.004411900402 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0001967627557 0.001086871355 0.0006716995771 0 0 -0.0008010449571 -0.02301740414 -0.01796258264 0 0 -0.0005763675957 -0.02337955123 -0.0180666877 0 0 -0 0 0 0 0 -0 0 0 0 0 -3.246630573e-06 -0.0002241568014 -0.0001715115043 0 0 --0.0001584048634 0.005073756989 0.003945934223 0 0 --0.0001187699781 0.003871428873 0.003009290328 0 0 -0 0 0 0 0 -0 0 0 0 0 --7.190710078e-05 -0.0002818605478 -0.0001584797476 0 0 --0.000209176006 0.005814156301 0.004542474453 0 0 --8.764363025e-05 0.003059831101 0.002373696192 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.36030909e-05 1.210868914e-05 -1.105429489e-06 0 0 -9.688917591e-06 -0.00017175361 -0.0001368374437 0 0 --7.644366951e-05 0.001147015222 0.0009226710518 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.671028886e-05 8.960785118e-05 5.501053563e-05 0 0 -6.619816702e-05 -0.001894031296 -0.001478295005 0 0 -4.951498346e-05 -0.002119846241 -0.001636054143 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.062825444e-06 -4.107477777e-06 -7.927453593e-07 0 0 --3.140029923e-06 6.97916884e-05 5.500331268e-05 0 0 --1.646554615e-05 0.0003621364694 0.0002855320917 0 0 -0 0 0 0 0 -0 0 0 0 0 --5.860127517e-06 -1.736179713e-05 -8.684505328e-06 0 0 --1.325383273e-05 0.0003474285126 0.0002719985512 0 0 --6.933164883e-06 -5.17525751e-05 -3.381411623e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -4.201469441e-06 -9.112237229e-07 -3.849410025e-06 0 0 --1.298249428e-07 5.178813024e-05 3.916100207e-05 0 0 --1.526349717e-05 0.0001757293839 0.000144038517 0 0 -0 0 0 0 0 -0 0 0 0 0 -2.533313469e-06 6.068256654e-06 2.670194751e-06 0 0 -4.757564686e-06 -0.0001178018787 -9.242172195e-05 0 0 -2.415342141e-07 -0.0002001670925 -0.0001511402803 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0448806838 -0.01749489333 0.02230205336 0.0127886777 0.04584530653 --0.003318563055 -0.003792038175 0.006476178733 -9.75325024e-05 -0.00223959769 --0.04084813882 -0.02645590608 0.04064847271 0.007241873884 0.01799320218 --0.1192993632 -0.02465173469 0.01706226669 0.04311795454 0.1711010729 -0.05109507324 -0.002536995337 0.01799298985 -0.02393463757 -0.1027874888 -0.0007263270155 -0.007732574636 0.01512589766 -0.003553701745 -0.01880298078 --0.003946883738 -0.00414670883 0.007000438218 3.568519556e-05 -0.001845052117 --0.002638659574 -0.002269616243 0.003708969574 0.0002337184195 -0.000100955073 --0.03596469769 -0.006521403851 0.003385024777 0.01337864774 0.0536321438 --0.01848681469 -0.002399349398 -0.0001009248071 0.007274808428 0.02971526889 -0.0001978536304 -0.0004629184827 0.0009450796823 -0.0002818583921 -0.001418936386 --0.0004079345604 -0.0003413013279 0.0005548955283 4.013230421e-05 5.976902036e-06 -0.0006298443088 0.0003900318872 -0.0005921891434 -0.0001191357213 -0.000317763987 --0.000570779392 -5.510802265e-05 -3.977063171e-05 0.0002325304472 0.0009602046094 --0.001483317603 -3.224126482e-05 -0.0003177572354 0.0006506233462 0.002745380608 --0.0004927593815 -0.000196966879 0.0002542992014 0.0001383714483 0.0004923437032 -2.126584048e-05 -1.494350487e-05 3.432039691e-05 -1.576001566e-05 -7.407194839e-05 --0.0007143499168 -0.0004707954131 0.0007265774876 0.0001232484973 0.0002963319056 --0.001906122198 -0.0003937514768 0.0002723731408 0.0006889753374 0.002734072995 -0.0005773726928 -7.680754053e-05 0.000296328775 -0.0002905599912 -0.001269963783 --5.683502207e-05 -2.921299256e-05 4.187923932e-05 1.324809384e-05 4.215301161e-05 --2.809808021e-05 -1.841116734e-05 2.837231717e-05 4.892501439e-06 1.189693356e-05 -3.467752943e-05 2.460166418e-05 -3.864697257e-05 -5.253465073e-06 -1.04481866e-05 -9.961573288e-06 2.961154687e-06 -3.168817915e-06 -3.223471384e-06 -1.225303597e-05 -3.987163688e-05 1.069508501e-05 -1.044780959e-05 -1.338518811e-05 -5.165043024e-05 --7.717213525e-06 2.350662149e-06 -6.518892772e-06 4.436468933e-06 1.995779624e-05 -2.884122126e-06 2.534845247e-06 -4.158516662e-06 -2.328735241e-07 2.322379625e-07 --8.177889733e-06 -5.018854098e-06 7.601425255e-06 1.565776363e-06 4.227946133e-06 --2.813689803e-06 -1.156823572e-06 1.514141421e-06 7.766957771e-07 2.738922478e-06 -2.102006814e-05 5.992468474e-07 4.227891053e-06 -9.160535195e-06 -3.85839826e-05 -2.507403535e-05 -2.342306359e-05 5.167913598e-05 -2.100535954e-05 -0.0001004130136 --1.225999734e-05 -1.410978057e-05 2.41197441e-05 -4.023202026e-07 -8.500553926e-06 --1.671643932e-06 -3.726390848e-06 6.771310722e-06 -8.074528556e-07 -5.220519894e-06 --0.0001135031777 -1.973763507e-05 9.053003294e-06 4.257473548e-05 0.0001711618873 --0.0001006469272 -1.06451195e-05 -5.220312338e-06 4.061529099e-05 0.0001672247324 --4.660640039e-05 2.492210709e-06 -1.675639464e-05 2.190634953e-05 9.415893828e-05 -7.999815928e-06 7.455712116e-06 -1.235520745e-05 -4.686093956e-07 1.601107567e-06 --3.88460052e-05 -2.385828031e-05 3.614268095e-05 7.43008098e-06 2.004251141e-05 --3.71793323e-05 -1.000795828e-05 9.810050032e-06 1.246672781e-05 4.808379262e-05 -9.914535611e-05 2.774429733e-06 2.004223422e-05 -4.322922365e-05 -0.0001821063242 --1.261776701e-05 -5.9848848e-07 -2.076554525e-06 5.39912175e-06 2.26228859e-05 -3.1623062e-08 6.230333013e-07 -1.195635644e-06 2.45972664e-07 1.343745363e-06 --4.486699662e-06 -2.449834619e-06 3.583665416e-06 9.858451204e-07 3.003907121e-06 --1.732706513e-06 -8.453889645e-07 1.189395874e-06 4.227679397e-07 1.38698257e-06 -2.333448724e-05 1.539705588e-06 3.003858547e-06 -9.804043471e-06 -4.086189869e-05 --1.40057487e-06 -3.76756075e-06 6.920305619e-06 -9.460004735e-07 -5.8282649e-06 --2.505506487e-06 -2.19565205e-06 3.6001822e-06 2.049871782e-07 -1.872644374e-07 -8.804554176e-07 4.47667748e-07 -6.39334599e-07 -2.072706419e-07 -6.640128129e-07 --1.137730734e-05 -1.98098462e-06 9.123368049e-07 4.266541863e-06 1.71511932e-05 --5.864612339e-06 -4.340484975e-07 -6.639980325e-07 2.444375821e-06 1.016366861e-05 --5.745808698e-06 -1.247459466e-06 9.380004508e-07 2.051569819e-06 8.105180186e-06 -8.129493744e-07 3.966098835e-07 -5.579838312e-07 -1.983658309e-07 -6.508078792e-07 --8.078119251e-06 -5.258697197e-06 8.090379375e-06 1.420969007e-06 3.497984561e-06 --1.766182266e-05 -3.767103856e-06 2.753035356e-06 6.33438937e-06 2.506610331e-05 -9.063735055e-06 -6.085074279e-07 3.497944623e-06 -4.311921118e-06 -1.859050006e-05 --1.000013024e-05 -1.532297397e-07 -2.266141583e-06 4.413105096e-06 1.865312444e-05 -1.158768756e-06 1.134467626e-06 -1.894965191e-06 -4.511782119e-08 3.547463497e-07 --7.679593198e-06 -4.715124961e-06 7.142273628e-06 1.469501556e-06 3.965640387e-06 --9.181054932e-06 -2.317548417e-06 2.12531281e-06 3.14275153e-06 1.222037508e-05 -1.965851952e-05 5.544532951e-07 3.965584726e-06 -8.569668974e-06 -3.609822327e-05 --3.807608404e-06 -1.374021116e-06 1.679122612e-06 1.130990636e-06 4.137791368e-06 --4.683533524e-07 -3.812358187e-07 6.165711315e-07 5.050839424e-08 3.078064852e-08 --2.36176956e-06 -1.490749779e-06 2.275096099e-06 4.349483315e-07 1.12795326e-06 --7.28695599e-06 -1.518158085e-06 1.066140352e-06 2.628522357e-06 1.042313253e-05 -4.465360071e-06 8.36273911e-09 1.127938185e-06 -1.995660629e-06 -8.464508537e-06 -0.1991349306 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.2636121687 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.2519476486 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.01261139288 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.03371515317 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.01916839818 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.01647159049 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0015572492 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0008194721838 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.002138011801 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0005707191219 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0002760169324 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --5.269764522e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.1340727288 -0.0384835173 -0.03766308835 0 0 --0.007866621088 0.3234744985 0.3181794553 0 0 -0.0353396268 -0.4770878021 -0.1215412885 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0431961951 -0.00348745096 0.02214311267 0 0 -0.017291084 0.2368014005 0.2080008402 0 0 -0.05655087637 -0.1744490409 -0.0096607774 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.005140244582 -0.006121482849 -0.006182620073 0 0 --0.006378046798 0.1162740993 0.08840651346 0 0 --0.005172918722 0.04612131706 0.02305075588 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.003658654938 0.0008648964471 0.0021495965 0 0 -0.002866503227 -0.01846846114 -0.01292818901 0 0 -0.00435593643 -0.03467684392 -0.01722106321 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0006872042052 -0.001700849198 -0.001776260825 0 0 --0.001709489424 0.03199182472 0.02465070673 0 0 --0.001251183244 0.01253885602 0.007490178592 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0003304735474 0.0002486933044 0.000117643623 0 0 -0.0003871225998 -0.009139834807 -0.007048812503 0 0 -0.0004155107822 -0.00831346772 -0.006066620596 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0001299391372 -0.0002158375066 -0.000123088731 0 0 --0.0001739376386 0.004096028433 0.00332053612 0 0 -0.0001422457234 0.000975764386 0.001022898899 0 0 -0 0 0 0 0 -0 0 0 0 0 --9.142647581e-05 6.365399757e-06 7.218099943e-05 0 0 -3.836872853e-05 0.001055183343 0.0007651199484 0 0 -0.0001771969002 0.0007434806261 0.0004227501685 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0001313314453 1.599435641e-05 5.199127347e-05 0 0 -3.223584077e-05 0.0003635625023 0.0002061062318 0 0 -0.0001379767135 -0.0004915673446 -0.0006433622423 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.430779417e-05 3.431960411e-05 5.129829101e-05 0 0 -2.803600787e-05 -0.0003416276053 -0.0002788565182 0 0 -8.389087369e-05 -0.0003551204725 -0.000331879008 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.08504024e-05 4.555286567e-06 1.096966822e-05 0 0 -8.609256576e-07 -9.809513497e-05 -6.295316777e-05 0 0 -4.199065651e-05 -0.0001445965182 -9.554045485e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.631280256e-05 -8.742529862e-06 -4.56872497e-06 0 0 --6.080687775e-06 0.0003097501225 0.0002304292047 0 0 -2.60282493e-05 0.0001993719229 0.0001012514186 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.839100119e-05 8.960266457e-06 1.197326962e-05 0 0 -9.314174603e-06 -8.08912109e-05 -7.437223327e-05 0 0 -3.84759578e-05 -0.0001232846228 -0.0001466125556 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0379964253 -0.01273393893 -0.04404533174 -0.06709808197 0.1121361383 --0.01166584259 0.131358713 0.1285950106 -0.02398187321 -0.008834157194 -0.01472165412 -0.107535677 -0.06772736182 0.07073461511 -0.04580825423 --0.3697601351 0.01499965743 -0.01456834084 0.08974945216 0.6555226261 -0.1806456796 0.08236406037 0.03672056633 -0.5188147991 -0.1949919283 -0.0231960477 -0.03050630241 -0.02270533113 0.03753477513 -0.04695012143 --0.01245277841 0.1167304311 0.08660097514 -0.04959611034 0.02629276734 --0.007467865017 0.0258327909 0.01258242653 -0.004960720089 0.0187749398 --0.2230149392 -0.03491067714 -0.02542450906 0.2366928673 0.3461027105 -0.01859427993 0.09117850249 0.06375945057 -0.2832321436 0.02387484182 -0.02899799703 0.001438613425 0.001204708864 -0.009400202665 -0.04937993489 -0.006784670368 0.004234775421 0.0035129338 -0.004064365852 -0.01166844617 -0.001990909032 0.003030254225 0.002825782291 -0.001247713609 -0.003919365247 --0.08472839496 -0.009054492997 -0.006658102167 0.04064751133 0.1414256246 --0.03154351052 -0.0008752109269 -0.00124262856 0.006606389555 0.05481373443 -0.007195866151 0.0002329317472 0.0001253545139 -0.00418798287 -0.0117970008 -0.0004273881645 0.002465720852 0.00189683494 -0.001282233489 -0.0006738321451 -0.0008018629041 -0.00188759958 -0.001428466409 0.0007876997055 -0.001455377935 --0.007250268792 0.0005053813365 0.0004002938218 0.002925043043 0.01213336109 --0.0108643477 0.001646128698 0.0009247737596 -0.003702219376 0.02008249517 --0.004603859753 -0.0006639199855 -0.0005619029727 0.002262002819 0.007747000596 -0.0003833594124 0.000694724428 0.0006609937354 -0.0003059470508 -0.0007774683347 --0.0003567649244 0.0005241603279 0.0005925926791 0.0001510580405 0.0003902251296 --0.01239650927 -0.001354153887 -0.0009877247213 0.006046983737 0.02066557712 -0.01118550638 0.001302047078 0.0008687012254 -0.005663548466 -0.01853529355 -0.003774076753 0.0002784841201 0.000119491982 -0.001809627643 -0.006218179537 -0.0003774439332 -1.323936298e-05 0.0001006062644 -2.476755328e-05 -0.000758033102 -0.0002825215584 -6.504056767e-05 5.661370092e-05 2.007206958e-05 -0.0005923730385 --0.001968345793 -0.0001187123285 -0.000145494165 0.0004632633916 0.003431413885 --0.00625007173 -0.0006009786134 -0.0005245469103 0.00274717517 0.01055441291 --0.002029196852 -0.00034880277 -0.0003150153658 0.001127014868 0.003413789635 --0.0001371374734 0.0004795307568 0.0003449209422 -0.0001748842075 0.000263328238 --0.0001609863411 0.0001537998757 -1.249940151e-05 -9.633249251e-05 0.0004087651826 --0.0006010604342 -0.0003340192092 -0.000351445571 0.0008960350856 0.0009857488557 -0.003761706534 0.0006856786794 0.0005688318727 -0.002554540239 -0.006196247951 -0.002073913848 0.0001922759572 0.0001126598531 -0.001081050634 -0.003417247703 -0.0002452846979 -0.0001816086421 -0.00018773214 -6.823465842e-05 -0.0003620836739 -0.0001828942515 -0.0002967389422 -0.0003757206311 -0.0001102973245 -0.0001463211838 --0.001438707876 -0.0001138737321 -0.0002080814014 0.0001522797077 0.00262024927 --0.003360114441 -0.0002508703092 -9.876616439e-05 0.001709322313 0.005507543886 --0.001008727966 -0.00010167611 -9.811286677e-05 0.000377732909 0.001725932422 --5.42777561e-05 -4.851197289e-05 -5.986029168e-05 1.703801453e-05 0.0001158808328 --5.66205015e-05 -8.582688906e-05 -0.0001399415911 -2.157948808e-05 0.00017649291 --2.107767365e-05 -3.317984993e-05 -8.194485731e-05 -7.463757438e-05 0.0001051593851 -0.001805504793 0.0001925752376 0.0001966797197 -0.0006622923458 -0.003104347715 -0.0001708436022 7.672552094e-06 -7.805243501e-06 -5.782458133e-05 -0.0002776141083 -1.498412125e-05 2.153450555e-05 9.370984875e-06 -2.118876077e-05 -1.725415082e-05 -1.249446034e-05 -1.583200563e-05 -4.948872848e-05 -3.370375788e-05 1.932307522e-05 --0.0001337688671 -5.012182945e-05 -7.146397402e-05 6.449373683e-05 0.0002556716546 --0.0002711090245 -9.940366142e-06 1.113804032e-05 6.065254438e-05 0.0004493595528 -3.703710225e-06 -1.324390743e-05 -2.634770216e-05 -1.211269829e-05 1.134359928e-05 --1.325350472e-06 1.948688569e-05 1.787507793e-05 -4.639183271e-06 -7.314486871e-07 -1.932648725e-06 -1.865525649e-05 -3.134774809e-05 -8.607421288e-06 1.489726531e-05 -1.298656345e-06 -2.129529098e-05 -4.10229238e-05 -1.219928443e-05 2.37655758e-05 --5.578367331e-06 1.873236344e-05 2.242688202e-05 -4.223609191e-05 9.890825062e-06 -8.045895547e-05 -6.614815766e-07 -1.553558308e-05 -6.777355653e-05 -0.0001145209753 -1.312186327e-05 -1.532564199e-05 -9.796677223e-06 3.207751854e-06 -2.442629649e-05 -1.054911658e-05 -3.586620994e-05 -4.366363297e-05 -6.962458788e-06 -1.781557556e-07 --9.409110161e-05 -1.341544636e-05 -3.437897415e-05 -1.953561892e-05 0.000192254175 --0.0001191815029 -4.444950404e-06 7.101133706e-06 8.21881987e-05 0.0001842227941 --6.703072649e-05 -1.158427348e-05 -2.046462843e-05 1.23776436e-05 0.0001267704634 --4.024399768e-06 -9.621495984e-06 -1.349835076e-05 -7.083099028e-07 1.338866033e-05 --9.72165183e-07 -3.300667668e-05 -5.474901756e-05 -1.629355959e-05 3.367535562e-05 -7.782089253e-06 -1.569509789e-05 -3.868528245e-05 -3.644129578e-05 1.862252967e-05 -0.0001189405224 2.1590565e-05 3.416674483e-05 -3.641330204e-05 -0.0002194509812 --0.02102253106 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.04014146731 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.01331741245 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.002913613766 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.005793304455 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.003205196212 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.001271681126 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0001413175885 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0004368066635 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0001210042626 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --4.648972396e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --6.86466716e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --6.123753342e-07 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.04773819654 -0.1166681345 -0.01224025009 0 0 --0.03217195242 0.01638835488 0.08214024253 0 0 --0.1946729968 -0.06577074405 0.03158363221 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.06867489497 -0.03725246716 0.05270645459 0 0 --0.01151457242 -0.01972720796 0.02712323155 0 0 --0.08499351692 -0.002416771465 0.01436412566 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.03899452148 -0.01356835947 0.01680801153 0 0 --0.01261182357 -0.001775329854 0.005516989346 0 0 --0.003345872966 -0.0006538317606 0.005801778036 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.004836564477 0.001947277184 -0.0005129029289 0 0 -0.001510014056 -0.001263788202 -0.0001901382534 0 0 --0.008160685977 -0.003033967073 0.001130997657 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.006943295255 -0.002539613395 0.003016308992 0 0 --0.002633836761 -0.0004428251925 0.00131214629 0 0 --0.002973004337 -0.0007483831185 0.002154083114 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.001207881323 0.0001443803116 -0.0007632120028 0 0 -0.0001866304688 7.795675156e-05 -3.945328487e-05 0 0 --0.0006984849669 -6.469637473e-05 0.0004162509054 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0003144285933 1.501435804e-05 0.0003458968828 0 0 -2.479691296e-05 -0.0001039972756 1.510755659e-05 0 0 --0.0005705935078 -0.0004538594072 -7.358393111e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.001129904636 -0.0002329644651 0.0006447265279 0 0 --0.0002989968439 -0.0001345569419 8.947902317e-05 0 0 -0.0006508845769 -5.079063883e-05 -0.0004792448917 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0002938254299 0.0001338656522 -0.000135698135 0 0 -0.0001547614638 1.780940869e-05 -0.0001208092918 0 0 --0.0003220937597 -0.000220084466 0.0001019302876 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0001044653501 2.958593254e-06 8.445988325e-05 0 0 --6.133669952e-07 -2.985616895e-05 -1.790525662e-05 0 0 -9.046899669e-05 -6.116281585e-05 -0.0001201151171 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.884576606e-05 2.525207184e-05 1.027088376e-05 0 0 -1.493196875e-05 -2.76494496e-07 -5.237067719e-06 0 0 -2.037249045e-05 -4.782675062e-05 -6.028100643e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --9.155589202e-05 -2.730087763e-05 4.223942689e-05 0 0 --2.931705536e-05 -7.890286825e-06 9.168563128e-06 0 0 -5.50615715e-05 -2.209219758e-05 -4.813646564e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -4.075239225e-05 1.807678548e-05 -1.958874934e-05 0 0 -1.962966347e-05 1.244375863e-06 -1.675828784e-05 0 0 --1.598622746e-06 -4.048489727e-05 -2.512436808e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.06588806807 -0.1280583491 0.06850797077 -0.0135696731 0.07861761752 -0.006074723232 0.01605526479 0.1049106715 0.04938986828 -0.0008101665474 --0.2395910128 -0.07461180623 0.06590563637 -0.01843369358 0.002085884029 --0.02052495416 -0.1290687587 0.06902260624 -0.00857120106 0.0903959641 --0.02771814381 -0.1359160386 -0.03100259023 -0.05359277033 0.08463917116 --0.06564831552 -0.03561824869 0.07828399926 0.01863954213 0.02403924348 -0.013428108 -0.03784548789 0.05100399823 0.01268074821 0.03393906399 --0.1315986231 0.001079265805 0.0214022912 -0.003935327139 -0.02639584452 --0.02822493675 -0.0204133287 0.05353562116 0.01605693189 0.01895128865 --0.0473617355 -0.03907992248 0.007029573309 -0.01785744082 0.0005696027906 --0.0341208307 -0.02188519733 0.03582623854 0.005686064761 0.01110723254 --0.01297963946 -0.01392661247 0.01779439636 0.002041436914 0.007350531642 --0.02257628116 -0.01362724998 0.01542219992 -0.0001785706259 0.003861632686 --0.01813526736 -0.01308941758 0.01744441936 0.001600978846 0.005656082385 --0.006504141436 -0.0006823008788 0.003672243006 0.0008670560976 -5.653312572e-05 --0.006423462248 -0.005168166926 0.00814826804 0.001370987282 0.002922070524 --0.004362777256 -0.003487802374 0.004545186547 0.000466228202 0.001712495978 -0.002699943056 0.002605108088 -0.005183344256 -0.001266196997 -0.001891467143 -0.001028959711 -0.000545520229 0.00117602862 0.0004851783208 0.0008044196387 -0.002078974331 -0.0001096200541 -0.001137825115 -0.0003516289734 0.0002494463373 --0.0006678387156 -0.0003019506069 0.0003730505379 5.544531757e-05 0.000257811225 -0.001249448577 0.0002908598653 -0.0003925777844 -2.586487324e-05 -0.0001880871421 --0.008485126652 -0.005030457321 0.008463797998 0.001165818869 0.001877092456 --0.003521885433 -0.002279466754 0.003781301369 0.0005478749932 0.0009452101118 --0.00277388302 -0.001441389729 0.002311010209 0.0003152090531 0.0006640459909 --0.002700715032 -0.001987085865 0.002787106107 0.000369832865 0.001085142731 --0.001775400775 -0.001147445985 0.001787041123 0.0002470164153 0.0005323929183 -0.002027705615 0.001324173387 -0.001963476078 -0.0002565321437 -0.0006463483698 -5.972079702e-05 -6.364677934e-05 -0.0001433609404 -4.53628433e-05 0.0001308972891 -0.0006901864703 0.0003790463118 -0.0006327253139 -8.4401712e-05 -0.0001427502345 -0.000566901575 0.000442019848 -0.0005880137302 -7.246049536e-05 -0.0002466548763 -0.0006701522072 0.0001677953013 -0.0005833182591 -0.0001295761305 -1.571804839e-05 --0.001493638494 -0.001197052359 0.0005226693024 -0.0002425127884 0.0006150144323 --0.0003417236365 -0.0005396808676 -2.513900001e-05 -0.0001829888788 0.0003342902883 --0.0004839163643 -0.0001392520562 0.0004471691925 9.976537924e-05 2.674809487e-05 --0.0009890282596 -0.0007882466331 0.001014747377 0.0001107058856 0.0004207246586 --0.0006468930351 -0.0004119240856 0.0005528551205 5.312969187e-05 0.0001909423756 -0.0005308709953 0.0001610234981 -0.0006204268365 -0.0001533715357 -1.797394122e-05 --5.623162414e-05 -0.0001656079869 4.462227607e-06 -4.435517493e-05 0.0001194337167 -0.0001754817982 0.0001568630932 7.023449093e-05 8.487694417e-05 -8.428585116e-05 -0.0002480421103 0.0001354132513 -0.0003263606194 -6.865809831e-05 -4.711514591e-05 -0.0001929161435 0.0001127114508 -0.0002475908214 -4.965858332e-05 -4.424224451e-05 --0.0003943331703 -0.0003120030226 0.0003609978153 3.207239745e-05 0.0001810283003 --9.198924776e-05 -0.0001022457324 3.347162592e-05 -1.697985761e-05 7.478711513e-05 --0.0001338259016 -5.042867978e-05 0.0002211182022 5.807429776e-05 -1.085180676e-07 --7.9955833e-05 -5.664092791e-05 7.408978337e-05 8.408173155e-06 3.12464722e-05 --2.781685057e-05 -5.173387499e-05 2.510827609e-05 -4.5812583e-06 3.812453478e-05 --1.447947856e-05 -6.779579894e-05 -0.0001379145207 -7.178305847e-05 5.35682387e-05 --2.178810137e-05 -7.119567883e-05 -6.224075942e-05 -4.315934816e-05 5.539220818e-05 --3.716702283e-06 3.034657994e-05 2.17488349e-05 1.507728986e-05 -2.669030208e-05 --4.660917575e-05 -5.260084328e-05 3.62181616e-05 -3.776469011e-06 3.005428284e-05 --3.528003405e-05 -1.715142445e-05 4.930984833e-05 1.140604355e-05 4.966123732e-06 -4.712686426e-05 8.708569186e-06 -0.0001011995509 -3.272445501e-05 4.558153792e-06 -1.498045526e-05 -2.776891628e-05 -4.87059572e-05 -2.449105668e-05 2.538879555e-05 -2.085986451e-05 1.40760506e-05 -7.910113126e-06 2.638314214e-06 -6.046963758e-06 --1.327720514e-05 -3.591559622e-05 -1.413457701e-05 -1.520225859e-05 2.733383963e-05 --1.085894946e-05 3.932225669e-06 1.095881673e-05 4.0293419e-06 -5.960582609e-06 --1.959293761e-05 -2.719671276e-05 1.954902369e-05 -6.838473507e-07 1.806297763e-05 --9.344908603e-06 -3.037575691e-05 -1.002490747e-05 -1.189320607e-05 2.354167045e-05 --3.114925721e-06 -1.583025393e-06 2.66808616e-05 9.730931405e-06 1.443477685e-07 -1.476375745e-05 -4.863600928e-06 -3.53514801e-05 -1.316501832e-05 8.695744731e-06 -1.035236834e-05 -1.202361897e-06 -2.397316224e-05 -8.409409993e-06 4.217183621e-06 --2.162726327e-05 -5.006326458e-05 -3.308771802e-05 -2.671815031e-05 3.774730531e-05 --2.137022517e-06 -3.409464618e-05 -3.985722757e-05 -2.352083544e-05 2.921120989e-05 --5.935280007e-06 1.278292442e-05 3.652911247e-05 1.643417317e-05 -1.319837343e-05 --0.04700722448 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.009601564962 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0009686260548 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.001084460567 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0005259992412 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.147556825e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.466483044e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.055826704e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -4.004041242e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -7.046194469e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --6.582892192e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -8.937993786e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -8.797302832e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.01450201248 0.4685389059 0.3423714749 0 0 --0.0187763254 0.005595512172 0.01834760962 0 0 -0.0282675874 0.01840086789 -0.007395905717 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.02561833654 0.0828319357 0.08174489482 0 0 --0.01050189809 0.01140521684 0.01650375629 0 0 -0.01523359611 0.0166163162 0.001068033217 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.002258414275 -0.01364408112 -0.01199088004 0 0 -0.0004423904766 0.003587004175 0.002372460209 0 0 --0.0009316764284 0.002406425786 0.002516321561 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0003702859858 -0.01695973176 -0.01251354236 0 0 --0.0005218122451 -0.001797564121 -0.0009631253369 0 0 -0.0009249488857 -0.000980155421 -0.001435433707 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0003284821381 0.005414236523 0.003836343114 0 0 -0.0001871990209 -0.001239011228 -0.001075307593 0 0 --0.0001967627557 -0.001086871355 -0.0006716995771 0 0 -0 0 0 0 0 -0 0 0 0 0 --9.91250608e-06 0.00010707421 8.820868805e-05 0 0 --1.112676161e-05 0.000282589832 0.00022150526 0 0 --3.246630573e-06 0.0002241568014 0.0001715115043 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0001731063616 0.001469452334 0.001238518559 0 0 --6.149015848e-05 0.0003084770584 0.0002789209407 0 0 -7.190710078e-05 0.0002818605478 0.0001584797476 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0001007660509 -0.001276304393 -0.001038493632 0 0 -9.157298647e-06 -6.789539708e-06 -1.201327022e-05 0 0 --1.36030909e-05 -1.210868914e-05 1.105429489e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 -2.579781547e-05 0.0006417415084 0.000464595918 0 0 -1.574637913e-05 -0.000101848438 -8.86617363e-05 0 0 --1.671028886e-05 -8.960785118e-05 -5.501053563e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.018712836e-05 -0.000308631188 -0.0002404505263 0 0 --2.141219778e-06 3.25815742e-06 4.069071893e-06 0 0 -3.062825444e-06 4.107477777e-06 7.927453593e-07 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.11427895e-05 0.0003217840167 0.0002510693667 0 0 --4.697002409e-06 1.811444996e-05 1.719596331e-05 0 0 -5.860127517e-06 1.736179713e-05 8.684505328e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 -2.01629677e-05 -0.0001334794928 -0.0001158572336 0 0 -2.569708964e-06 3.72998904e-06 8.794975881e-07 0 0 --4.201469441e-06 9.112237229e-07 3.849410025e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 -6.759256239e-06 0.0001088243408 7.69850685e-05 0 0 -1.949985096e-06 -6.030600406e-06 -6.015369995e-06 0 0 --2.533313469e-06 -6.068256654e-06 -2.670194751e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.04475006091 0.02662100024 -0.03996771076 -0.008919843115 -0.02503413522 --0.1049963999 -0.007636550073 -0.01214745353 0.04381870546 0.1822668506 --0.09153847538 -0.01214777254 1.663276273e-05 0.03591002422 0.1465345832 -0.002076124356 0.001793788855 -0.002933772693 -0.0001805386842 9.752927487e-05 -0.003318563055 0.003792038175 -0.006476178733 9.75325024e-05 0.00223959769 --9.59029205e-05 -0.001689474048 0.003239594071 -0.0006624573612 -0.003624537868 --0.03380601524 -0.0080552157 0.006901530318 0.01177179964 0.04607505336 --0.007363187628 0.006901450786 -0.01522058429 0.006178027074 0.02953908397 -0.002336280054 0.001954018055 -0.003176689201 -0.0002301117192 -3.568841537e-05 -0.003946883738 0.00414670883 -0.007000438218 -3.568519556e-05 0.001845052117 --0.001116442194 -0.0008090992774 0.00127717862 0.000162016706 0.0002979634671 --0.001083021886 -0.0006530241502 0.0009841948559 0.0002122192227 0.0005861407537 -0.001324483425 0.000984194165 -0.001562169082 -0.0001820512125 -0.0002986779071 -0.0002095312527 0.0001588570299 -0.0002532361735 -2.748126262e-05 -4.013246564e-05 -0.0004079345604 0.0003413013279 -0.0005548955283 -4.013230421e-05 -5.976902036e-06 -0.0008692760732 0.0005297915157 -0.0008008670026 -0.0001679771072 -0.0004577322566 --0.00150811182 -3.571394627e-05 -0.0003174004733 0.0006602738531 0.002784660325 --0.001607053892 -0.0003174054282 0.0002014939689 0.000586957938 0.002337922463 -1.054822439e-06 7.883854905e-06 -1.496182177e-05 2.81943983e-06 1.575999476e-05 --2.126584048e-05 1.494350487e-05 -3.432039691e-05 1.576001566e-05 7.407194839e-05 --7.060420526e-05 -4.805008661e-05 7.474576144e-05 1.154768025e-05 2.586801138e-05 --5.088075172e-05 -3.481230537e-05 5.42230276e-05 8.244514187e-06 1.822459478e-05 -7.855274801e-05 5.422303252e-05 -8.46357241e-05 -1.25289182e-05 -2.705983272e-05 -1.256721207e-05 8.424816124e-06 -1.305733618e-05 -2.108820775e-06 -4.892501075e-06 -2.809808021e-05 1.841116734e-05 -2.837231717e-05 -4.892501439e-06 -1.189693356e-05 -1.210460794e-05 8.4525958e-06 -1.322953464e-05 -1.890113178e-06 -3.951046127e-06 -1.085737991e-06 4.797291874e-06 -8.990474508e-06 1.516889539e-06 8.746594118e-06 --1.769398567e-05 -8.990490951e-06 1.283669406e-05 4.167907504e-06 1.335783224e-05 --1.525974109e-06 -1.183286402e-06 1.895202226e-06 1.891335913e-07 2.328765212e-07 --2.884122126e-06 -2.534845247e-06 4.158516662e-06 2.328735241e-07 -2.322379625e-07 --6.926033532e-06 -1.030729927e-05 1.8139766e-05 -1.202727144e-06 -1.006631135e-05 --0.0001017555564 -2.739526834e-05 2.685793872e-05 3.411806391e-05 0.0001315893607 --9.721630332e-06 2.685770952e-05 -5.438155167e-05 1.556609327e-05 7.898527648e-05 -7.706775492e-06 6.676591442e-06 -1.092498081e-05 -6.627148637e-07 4.023092377e-07 -1.225999734e-05 1.410978057e-05 -2.41197441e-05 4.023202026e-07 8.500553926e-06 -5.192504924e-05 3.534202226e-05 -5.497890718e-05 -8.490879964e-06 -1.901500328e-05 --2.401887335e-05 1.411745703e-05 -3.342979292e-05 1.664766147e-05 7.744094035e-05 --8.361523419e-05 -3.342993183e-05 4.316510902e-05 2.347699135e-05 8.352878218e-05 --4.388055645e-06 -3.491853907e-06 5.622183769e-06 5.066155258e-07 4.686162442e-07 --7.999815928e-06 -7.455712116e-06 1.235520745e-05 4.686093956e-07 -1.601107567e-06 -4.771240934e-06 3.449587278e-06 -5.44234399e-06 -6.958157517e-07 -1.291832329e-06 --3.735665353e-06 1.215022006e-06 -3.304632141e-06 2.179765162e-06 9.834764273e-06 --9.130397606e-06 -3.304648146e-06 4.045428313e-06 2.707935839e-06 9.899995131e-06 --2.34526181e-07 -3.069082372e-07 5.328759546e-07 -2.314315007e-08 -2.459719164e-07 --3.1623062e-08 -6.230333013e-07 1.195635644e-06 -2.45972664e-07 -1.343745363e-06 --3.3335933e-06 -2.819011932e-06 4.592382276e-06 3.154568635e-07 -1.861303736e-08 --1.3130122e-05 -4.224944186e-06 4.798703532e-06 4.11437766e-06 1.542510779e-05 -1.471408107e-06 4.798678025e-06 -8.894337886e-06 1.344802866e-06 8.017016097e-06 -1.323297637e-06 1.024774715e-06 -1.640876973e-06 -1.64577042e-07 -2.049887324e-07 -2.505506487e-06 2.19565205e-06 -3.6001822e-06 -2.049871782e-07 1.872644374e-07 -1.031234211e-05 6.505283283e-06 -9.926415943e-06 -1.900758197e-06 -4.933774317e-06 --1.317010049e-05 6.900666263e-07 -4.707637347e-06 6.184403424e-06 2.65755985e-05 --1.799252433e-05 -4.707684988e-06 4.485563945e-06 6.08973156e-06 2.357505039e-05 --3.138137155e-07 -1.765578561e-07 2.607164313e-07 6.677827559e-08 1.983660666e-07 --8.129493744e-07 -3.966098835e-07 5.579838312e-07 1.983658309e-07 6.508078792e-07 -9.85147068e-06 6.627528638e-06 -1.028068386e-05 -1.643384792e-06 -3.782760398e-06 --7.003832264e-06 2.139185977e-06 -5.927528532e-06 4.028790409e-06 1.812600518e-05 --1.656980611e-05 -5.927560632e-06 7.206960163e-06 4.943451796e-06 1.812351815e-05 --6.555529333e-07 -5.327114865e-07 8.612677934e-07 7.107359889e-08 4.511884178e-08 --1.158768756e-06 -1.134467626e-06 1.894965191e-06 4.511782119e-08 -3.547463497e-07 -2.272513534e-06 1.320060105e-06 -1.968182137e-06 -4.662549668e-07 -1.342982701e-06 --7.066604463e-06 -7.470486456e-07 -3.672321335e-07 2.851825952e-06 1.174197526e-05 --5.24000474e-06 -3.672523938e-07 -6.330178458e-07 2.192626395e-06 9.12753612e-06 -2.366806832e-07 1.771432445e-07 -2.816101334e-07 -3.200122192e-08 -5.050868611e-08 -4.683533524e-07 3.812358187e-07 -6.165711315e-07 -5.050839424e-08 -3.078064852e-08 -0.03553450401 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.009617753328 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.01144967242 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0001398402447 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.00168659808 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0007988345425 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0009742398781 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.582808228e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0001454424625 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0001635788665 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -2.168710241e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -5.548424333e-07 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.209409212e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.01096114695 0.6234600646 0.4728811497 0 0 --0.1318453973 0.03184713357 -0.008959634765 0 0 --0.1340727287 0.0384835173 0.03766308841 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.01442429541 0.2967357298 0.2414633154 0 0 --0.06215428423 0.01229161538 -0.02604896595 0 0 --0.04319618951 0.003487450872 -0.02214310984 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.002705610421 0.0519224593 0.0405179398 0 0 -0.006189775419 0.007586628726 0.008851834547 0 0 -0.005140241264 0.006121482174 0.006182617803 0 0 -0 0 0 0 0 -0 0 0 0 0 -6.054186615e-05 0.0155469301 0.01218800994 0 0 --0.004776766267 -0.0007680018652 -0.003076241147 0 0 --0.003658649419 -0.0008648967428 -0.002149593872 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0005983914114 0.01378804723 0.01072149152 0 0 -0.00100692284 0.002010519649 0.002207116082 0 0 -0.0006871993181 0.001700848411 0.001776257649 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.950883415e-06 0.0009661722562 0.0007521592206 0 0 --0.0002767731957 -0.0003926478242 -0.0003440164408 0 0 --0.0003304748316 -0.000248692905 -0.0001176439667 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0002098781661 0.002112374392 0.001766859507 0 0 --0.0001705206191 0.0002837307213 0.0001452998057 0 0 --0.0001299376851 0.000215837008 0.0001230890818 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0001568227153 9.098081105e-05 0.000186405052 0 0 -4.573552572e-05 3.366711259e-05 -7.018698504e-06 0 0 -9.142363555e-05 -6.364782957e-06 -7.218197572e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0001510673577 0.0008547258779 0.000750843106 0 0 -0.000106470391 1.129190749e-05 1.278465629e-05 0 0 -0.0001313308412 -1.599447196e-05 -5.199168092e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --6.543041361e-05 8.962084759e-05 0.0001167408409 0 0 -1.752385996e-05 -2.816121176e-05 -3.386003084e-05 0 0 -3.430841492e-05 -3.431941989e-05 -5.129781927e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.368127068e-05 5.186834698e-05 6.63397967e-05 0 0 --1.678121647e-05 -3.163786538e-06 -1.225811606e-05 0 0 --1.08502638e-05 -4.555310834e-06 -1.096961586e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.676805805e-05 5.48828375e-05 6.779560353e-05 0 0 -1.511952862e-05 1.385525605e-05 1.376020355e-05 0 0 -1.631206535e-05 8.742613533e-06 4.568409664e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.663616253e-05 7.028160097e-05 7.950181989e-05 0 0 -1.539567168e-05 -7.202405667e-06 -4.661504272e-06 0 0 -1.839104543e-05 -8.960265478e-06 -1.197324584e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0364179425 0.3352224545 0.3030617753 -0.09194644023 0.01784641856 --0.410768049 -0.01985812878 -0.006301352602 0.4102514641 0.6337810192 --0.310251953 0.08474225541 0.05203718327 -0.1253808841 0.5777495801 -0.0001792850725 -0.01274619372 0.01193270371 0.0401481859 -0.02695932532 -0.01166584246 -0.1313587123 -0.1285950101 0.02398187292 0.008834157441 --0.01012891916 0.1406434529 0.1100086226 -0.05883874515 0.01784200812 --0.2195549407 -0.008094780553 -0.006850557177 0.1525665776 0.3569911756 --0.168925214 0.01960123756 0.005052518881 -0.01185396097 0.3076002432 -0.002845791742 -0.03417026515 -0.02793851825 0.02504527255 -0.006120289258 -0.0124527763 -0.1167304202 -0.0866009668 0.04959610552 -0.02629276339 -0.007910515091 0.002927467175 0.002262152035 -0.004219613008 -0.01330560841 --0.07543354404 -0.006690271457 -0.005077179025 0.03082858716 0.1270833962 --0.05941255684 -0.005012210444 -0.003572269069 0.02417042036 0.09989203737 --0.001606259242 -0.000917915641 -0.0005018122553 0.001567072141 0.002396728426 --0.006784670114 -0.004234774288 -0.003512932933 0.004064365181 0.01166844577 --0.0002878663831 0.005823602269 0.004465708523 -0.002595905671 0.0006192935524 --0.004542607537 -0.0002209166731 2.680482945e-05 0.006214851561 0.006580295223 --0.003414915579 0.001723524971 0.001148083043 -0.003393892225 0.006740427752 --0.0001098281528 -0.0006642223032 -0.0004935845051 0.0006257545004 9.95722182e-05 --0.0004273894819 -0.002465713159 -0.00189682906 0.001282230024 0.0006738346394 -0.0009879689784 0.0005005222574 0.0004530399726 -0.0005153726922 -0.001733674766 --0.01484331942 -0.001304175261 -0.0009627473797 0.00608414363 0.02497811657 --0.01169266029 -0.0009537107502 -0.0006226703902 0.004811164076 0.01959644891 --9.138764743e-05 -8.142717098e-05 3.655325661e-05 0.0002314416292 3.135943284e-05 --0.0003833586749 -0.0006947220964 -0.0006609919509 0.0003059455915 0.0007774671685 -0.0002335843275 0.000124377805 0.0002209300039 -1.23515086e-05 -0.0005301036067 --0.0004204038759 -5.025579111e-05 -1.328400375e-05 0.000269691195 0.0006669740838 --0.0003345325923 1.83297659e-05 5.597533256e-05 7.84406117e-05 0.0005348034418 --0.0001004314178 9.554794232e-05 0.0001569240852 7.07440726e-05 8.105158991e-05 --0.0003774436273 1.323603082e-05 -0.0001006088118 2.476914925e-05 0.0007580324693 --1.689003082e-05 0.0005161211006 0.0004964590678 -0.0001169332142 -7.323640693e-05 --0.001512851566 -0.0001800752618 -0.0002071277114 0.0006489044692 0.002608353707 --0.001191874602 -0.0001560521376 -0.0002704425696 0.0002079695967 0.002203760368 -3.728222731e-05 -0.0001491528768 -0.0001299668212 8.736133194e-05 -5.889614307e-05 -0.0001371373991 -0.0004795277548 -0.000344918647 0.000174882697 -0.0002633280083 -0.0001599046899 4.501374537e-05 9.600326002e-05 -1.673707052e-05 -0.0003364930949 --0.0005979787489 -0.000140103438 -0.0001751920728 0.0002784064461 0.001067592327 --0.0004634941469 -0.0001451945151 -0.0002567505349 8.635987088e-06 0.0009552252924 --5.542508518e-05 9.733043636e-06 -3.02902406e-05 -3.910970576e-05 0.000138645053 --0.0002452841537 0.000181604075 0.000187728649 6.823680123e-05 0.0003620825952 --1.42587574e-05 1.350073038e-05 4.499391108e-05 3.563300476e-05 -1.40230042e-05 --0.000462967081 -7.293034498e-05 -9.22018834e-05 0.0001693003675 0.0008189770238 --0.0003598362798 -9.143822548e-05 -0.0001427749847 9.678555261e-05 0.0006858100469 -1.568135294e-05 -5.513705523e-06 -2.148947096e-05 -2.4056106e-05 -6.929716064e-06 -5.427774783e-05 4.851198336e-05 5.986029967e-05 -1.703801691e-05 -0.0001158808184 -8.468287181e-06 4.566818556e-05 6.208404536e-05 5.518281366e-06 -4.347695056e-05 --6.636665644e-05 -1.922211328e-05 -3.413439323e-05 2.002697392e-05 0.0001315649136 --4.997682567e-05 -3.114100977e-05 -6.393518684e-05 -1.632970395e-05 0.0001293844748 --3.103897643e-06 -1.174727244e-05 -1.445148943e-05 2.941337281e-06 1.057111142e-05 --1.498431737e-05 -2.153338928e-05 -9.370131793e-06 2.118825972e-05 1.725452119e-05 --4.367534564e-06 5.211403208e-05 6.627627253e-05 6.16152389e-06 -2.077943619e-05 -1.21412218e-06 -1.109264406e-05 -1.898343902e-05 9.306817994e-06 6.113737508e-06 -1.470592727e-06 -1.09346045e-05 -3.206366632e-05 -4.149347984e-05 2.777995091e-05 -1.191797647e-07 -2.877198806e-06 8.335612676e-08 5.3667861e-06 -3.141235405e-06 -1.325402251e-06 -1.948756705e-05 -1.787559879e-05 4.639513544e-06 7.31337484e-07 -7.417921474e-06 2.002156096e-05 3.836889265e-05 1.226540372e-05 -3.755068085e-05 --6.463926759e-05 -1.671434396e-05 -2.268499599e-05 3.185143097e-05 0.0001174285158 --4.946624021e-05 -1.826140975e-05 -3.531338532e-05 -6.027185498e-06 0.0001087291654 --3.29773044e-06 5.805864603e-06 5.886060885e-06 -1.532877056e-06 4.427794012e-06 --1.312174267e-05 1.532491136e-05 9.796118834e-06 -3.207421122e-06 2.442606722e-05 --4.541145275e-06 2.013099245e-05 3.565447049e-05 1.399676435e-05 -1.433824334e-05 --2.243058544e-05 -1.458197546e-05 -2.611461057e-05 6.067982549e-06 5.266740195e-05 --1.574465844e-05 -2.348087358e-05 -4.906300393e-05 -2.195061922e-05 6.162309467e-05 -1.484455198e-06 -2.440024384e-06 -6.550880998e-06 -4.862102601e-06 2.726879511e-06 -4.024332594e-06 9.621828615e-06 1.349860495e-05 7.081637469e-07 -1.33885352e-05 --0.06857434848 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0912160987 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.01862264799 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.004755204567 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.01141165879 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.005774242537 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.002372684816 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0004676564406 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.00076463649 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0003029420525 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.75031923e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.000123213628 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -5.656628877e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --6.542395877e-05 0.07320301939 -0.04169433389 0 0 --0.05389405115 -0.02673771954 0.05319478738 0 0 -0.04773819652 0.1166681345 0.01224025003 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.08407214026 -0.00192331344 -0.009081506143 0 0 --0.05563836553 -0.0331499014 0.04085963825 0 0 -0.06867489128 0.0372524687 -0.05270645707 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.04642025587 -0.0186263676 0.02648438778 0 0 --0.02288328477 -0.004958225179 0.01158391764 0 0 -0.03899452331 0.01356835899 -0.01680801015 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.01063138846 0.005478497929 -0.007912049075 0 0 -0.002246645181 -0.001439578117 -0.001409919226 0 0 --0.004836566307 -0.001947276506 0.0005129004753 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.007290243479 -0.002615880228 0.004227201861 0 0 --0.004923222244 -0.0009085516774 0.00277772072 0 0 -0.006943295942 0.002539613675 -0.003016306291 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.001918833658 0.0004408941512 -0.001201748572 0 0 -0.0004648483539 0.000151122474 -0.0002055546544 0 0 --0.001207879362 -0.0001443813957 0.0007632121008 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0002811875961 0.0003739694761 -0.0001681777039 0 0 -9.145846733e-05 -0.0002292234343 -0.0001608887341 0 0 -0.0003144291254 -1.501466925e-05 -0.0003458992335 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.002121082922 -0.0004516540951 0.001327599295 0 0 --0.0006584335024 -0.0001997841009 0.0003202533713 0 0 -0.0011299046 0.0002329646687 -0.0006447227987 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0008738251968 0.0003631015479 -0.0003459030374 0 0 -0.000230382405 8.697612033e-05 -0.0001205776847 0 0 --0.0002938254763 -0.0001338656021 0.0001356982916 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0001774669687 5.500449338e-06 0.0001289080679 0 0 --1.819725392e-05 -4.287207713e-05 -1.564140493e-05 0 0 -0.0001044657903 -2.958961824e-06 -8.446124448e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.837798009e-05 7.473750045e-05 2.928400393e-05 0 0 -2.868991519e-05 4.09738203e-07 -1.681621941e-05 0 0 --1.884583763e-05 -2.525201328e-05 -1.027038528e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0001818137475 -2.237617391e-05 0.0001346817669 0 0 --6.528702007e-05 -9.19153149e-06 3.719532036e-05 0 0 -9.155575355e-05 2.730101336e-05 -4.223861211e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -7.579681874e-05 5.572319224e-05 -8.786897876e-06 0 0 -3.012907669e-05 9.581827502e-06 -1.75508607e-05 0 0 --4.07522973e-05 -1.807687388e-05 1.95883478e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.09422219353 0.2267513611 -0.001020157684 0.07201935413 -0.1355006521 --0.04473853034 0.02531608868 -0.004012997988 0.0002642615043 -0.02879379014 -0.07089069264 -0.01776637737 0.02081354491 0.01187609067 0.03151695048 -0.001406868393 0.03265138172 0.001251389653 0.009718699519 -0.02198265218 --0.006074723378 -0.01605526481 -0.1049106716 -0.04938986835 0.0008101665117 --0.07322344639 0.04293843663 -0.08386246527 -0.03371383018 -0.06090974734 --0.03053343624 -0.03327961667 0.02414451202 -0.004204345507 0.01167087441 -0.05618429262 0.04862761064 -0.03422188068 0.00804244782 -0.01362344002 --0.00628711316 0.0005387899956 -0.02289602103 -0.01240457031 -0.01091269704 --0.01342811098 0.03784548817 -0.0510039996 -0.01268074914 -0.03393906536 --0.006022148561 0.004355351186 -0.007186461512 -0.002615016113 -0.005431353145 --0.01635724768 -0.01566176357 0.01755404347 0.0008309822797 0.006882526681 -0.02369007327 0.01492073065 -0.02827101715 -0.005823399507 -0.008994476861 -0.005107992012 0.002532384789 -0.008418518114 -0.00273041501 -0.002652210609 -0.01297963874 0.0139266126 -0.01779439681 -0.002041437181 -0.007350532039 --0.008394201411 -0.006827315894 0.01035420282 0.001626371234 0.003777004903 --0.008633551693 -0.00456773492 0.007915347425 0.001224806804 0.002057843814 -0.01359292924 0.008311065124 -0.01212991579 -0.001377213623 -0.003652942639 -0.001958684891 0.001229006216 -0.002281387002 -0.0004424918357 -0.000681919142 -0.004362776025 0.003487802445 -0.004545187234 -0.0004662286426 -0.001712496491 -0.008296418718 0.007060525584 -0.01103036754 -0.00189305206 -0.00413074565 -0.003900785553 0.002390130097 -0.003558966401 -0.0005806988763 -0.001557638011 --0.006077427924 -0.003997956514 0.00667427639 0.0009798824966 0.001653207919 --0.0006311192322 -0.0002838337555 0.0007230438709 5.148935743e-05 -0.000237922768 --0.001249449925 -0.0002908593423 0.0003925773924 2.586459713e-05 0.0001880860814 --0.003742494112 -0.002892156226 0.004374872513 0.0006548042008 0.00152588914 --0.003135886007 -0.002259445724 0.002954910114 0.000348055253 0.001281862891 -0.004951515202 0.00343693593 -0.005147788757 -0.0007127314985 -0.001726601126 -0.0008462828286 0.0005561887744 -0.0008732069351 -0.0001232686729 -0.000258844548 -0.001775401686 0.001147445494 -0.001787041492 -0.0002470164939 -0.0005323920305 -0.001496264016 0.001702402138 -0.001975859666 -0.0002310821701 -0.001084163198 -0.001152790819 0.0004278769916 -0.001592343994 -0.0004316445516 -0.0001677183776 --0.001762880102 -0.001663127575 0.001264119734 -8.170205626e-05 0.0009538612439 --0.0002808668353 -0.0003667030515 -9.969740688e-05 -0.0001636995079 0.0002114315182 --0.0006701525572 -0.0001677953445 0.0005833178349 0.0001295759074 1.571797984e-05 --0.0009266459502 -0.000749241577 0.001445066765 0.0002991858192 0.0004097514235 --0.001020607623 -0.0006081644779 0.001110928617 0.0001896379323 0.0002715463277 -0.001661850922 0.0009945607991 -0.001878806392 -0.0003357589974 -0.0004466080633 -0.0003136995302 0.0002281235238 -0.0002550570563 -1.363907149e-05 -0.0001149716721 -0.000646894007 0.0004119243606 -0.0005528538788 -5.312902431e-05 -0.0001909423574 -0.0006734395704 0.0004708449317 -0.0006968872494 -9.650823649e-05 -0.0002429982724 -0.0004183739115 0.0002663252348 -0.0004901842338 -8.617714111e-05 -0.0001209447356 --0.0006340398986 -0.0004622663505 0.0006396081471 8.106925686e-05 0.0002482887473 --8.344408188e-05 -5.332927151e-05 9.87300636e-05 1.750133115e-05 2.423478601e-05 --0.0001929161819 -0.0001127115617 0.0002475906439 4.965849226e-05 4.424235765e-05 --9.08805161e-05 1.937571461e-05 9.988132989e-05 3.50623572e-05 -3.459226888e-05 --6.194938648e-05 -9.8379398e-05 -5.610394976e-06 -3.07468444e-05 7.06854928e-05 -9.4854346e-05 -1.38631695e-05 -0.0002193820783 -8.072183955e-05 3.089478988e-05 -1.413893344e-05 -1.814564813e-05 -7.044654148e-05 -3.06456649e-05 1.822454512e-05 -2.781657373e-05 5.173376148e-05 -2.510874708e-05 4.581017558e-06 -3.812449759e-05 --9.165996717e-05 -2.353876852e-05 0.0001771028469 5.421328483e-05 -3.652549011e-06 --7.184877546e-05 -4.660602306e-05 6.906551092e-05 7.93182607e-06 1.930105806e-05 -0.0001140227661 3.606557854e-05 -0.0001663042325 -4.439109128e-05 -8.647929669e-07 -1.587768966e-05 1.305512292e-05 -1.483269651e-05 -9.019474587e-07 -6.424052099e-06 -3.528035293e-05 1.715151383e-05 -4.930938799e-05 -1.140580422e-05 -4.96611852e-06 -4.23405994e-05 3.626928852e-05 2.227665069e-05 2.150158989e-05 -2.137061627e-05 --1.245153707e-06 8.274883428e-06 2.698046299e-07 1.862504792e-06 -7.268239063e-06 -5.796843726e-06 -9.844897195e-06 -1.091475404e-05 -5.892007133e-06 9.829514417e-06 -4.695797623e-06 1.430825718e-05 1.739111447e-05 1.058554415e-05 -1.124482163e-05 -1.08590377e-05 -3.932183561e-06 -1.095867276e-05 -4.029266651e-06 5.960564455e-06 -3.605068842e-05 4.763547294e-05 -1.135144321e-06 1.450538676e-05 -3.123237695e-05 -2.071577516e-05 -8.306269197e-07 -5.055042557e-05 -1.746671118e-05 7.185014149e-06 --3.084430784e-05 -5.788079156e-05 -1.355083372e-05 -2.200577593e-05 4.139687161e-05 --4.535991328e-06 -8.684388925e-06 -3.208564181e-06 -3.747530975e-06 6.265154281e-06 --1.035248416e-05 1.202301514e-06 2.39729595e-05 8.409305141e-06 -4.217153732e-06 -0.1082811999 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.02081564347 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.00177686416 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.007732181945 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.000418117818 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0003977365066 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -5.415263961e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -3.999287841e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0001666625009 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.118726226e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.980996335e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.12621208e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.322177155e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.04489305823 0.007354468279 -0.02823510433 0 0 -0.008392141993 0.1676177972 0.1200709564 0 0 -0.1235536617 -0.1954459522 -0.240338314 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.02466350321 -0.00115531029 -0.01943026701 0 0 -0.001035154371 0.2091723602 0.1569676257 0 0 --0.002638697802 0.09122219742 0.07078047396 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.001263059346 -0.002542548419 -0.000966948948 0 0 --0.001882508751 0.04790509106 0.03754893388 0 0 --0.0005673063973 0.04918717434 0.0375259406 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.00135533728 0.00144866137 7.26339619e-05 0 0 -0.001117056839 -0.02257491976 -0.01786831117 0 0 -0.000824102367 -0.00447473947 -0.003995396693 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0003818356193 0.0006806449709 0.0008006118984 0 0 -0.0004557901805 -0.01816851908 -0.01404576604 0 0 -0.0008274110638 -0.0182750765 -0.01440571102 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.114701271e-05 -0.0001735830242 -0.0001393010433 0 0 --0.0001218499608 0.003993305924 0.003103531151 0 0 --9.619789835e-05 0.003045424422 0.002369310889 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0001310466224 -0.0001607561386 -0.000219841993 0 0 --0.0001035756134 0.004594843018 0.003543403986 0 0 --8.89768888e-05 0.00240118458 0.001877941791 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.175299851e-05 -1.025748083e-06 1.559877963e-05 0 0 --2.931448575e-06 -0.000138580249 -0.0001023177059 0 0 -3.762065049e-05 0.0009343454435 0.0006764142014 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.224161419e-05 5.574473671e-05 6.630049298e-05 0 0 -3.732791517e-05 -0.001495161309 -0.001155743883 0 0 -7.952405033e-05 -0.00165485236 -0.001307930749 0 0 -0 0 0 0 0 -0 0 0 0 0 -4.995274021e-06 -8.241938206e-07 -4.38142784e-06 0 0 --6.249677243e-08 5.570016728e-05 4.20585156e-05 0 0 --5.915562507e-08 0.0002891484524 0.0002181327985 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.029413477e-05 -8.813649542e-06 -1.439305208e-05 0 0 --5.581674985e-06 0.0002749582249 0.0002115695138 0 0 -1.450879055e-05 -3.422936975e-05 -3.673258154e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --6.401237462e-06 -3.873685017e-06 1.895773992e-06 0 0 --3.259075597e-06 3.972402269e-05 3.241627679e-05 0 0 -1.17397427e-05 0.0001459996995 0.0001012906958 0 0 -0 0 0 0 0 -0 0 0 0 0 --4.351302593e-06 2.71143869e-06 5.319115994e-06 0 0 -1.680218873e-06 -9.336603285e-05 -7.167749276e-05 0 0 -1.48929462e-05 -0.0001527239514 -0.000126385273 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.01709255056 0.0223019941 -0.0387094193 0.001659207676 0.01777836055 -0.01113434474 0.006476187888 -0.009659591876 -0.002280918699 -0.006560984008 -0.05716895737 0.04064847584 -0.06388772424 -0.008623026594 -0.01702091016 --0.04089652208 0.01706199077 -0.04344312909 0.02543323362 0.1161399713 -0.06925037756 0.01799317898 -0.01702087238 -0.02349100178 -0.09102043979 -0.03139080499 0.01512594547 -0.02118142219 -0.00773831596 -0.02555478313 -0.01180720531 0.007000447629 -0.0105000959 -0.002363269762 -0.006658027674 -0.005907872642 0.003708972935 -0.005652269821 -0.001096389122 -0.002866770939 --0.01592504312 0.003384928223 -0.01062013237 0.008542962942 0.03788155808 --0.0119502022 -0.0001009799944 -0.002866730362 0.005307972362 0.02247562706 -0.002058186554 0.0009450852601 -0.001298622031 -0.0005268606831 -0.001780697522 -0.0008755066455 0.0005548961606 -0.0008477743223 -0.0001602847965 -0.0004130032089 --0.0008107947752 -0.0005921888377 0.0009364062261 0.0001157426098 0.0002060345833 --0.0004439148794 -3.977370238e-05 -3.689278065e-05 0.0001821353277 0.0007537370955 --0.001592038544 -0.0003177662543 0.000206038275 0.0005800848784 0.002308583087 -0.0002069630321 0.0002542985816 -0.0004382930348 1.35175253e-05 0.0001797962914 -8.368747989e-05 3.432055008e-05 -4.48673268e-05 -2.313748281e-05 -8.165928784e-05 -0.001031910302 0.0007265775882 -0.001139400133 -0.0001586262351 -0.00032330712 --0.0006539238641 0.0002723687582 -0.0006937784742 0.0004064833282 0.00185603673 -0.0009727107365 0.0002963311599 -0.0003233059058 -0.0003117599877 -0.001180273447 -4.95303154e-05 4.187957863e-05 -6.822342945e-05 -4.689175482e-06 2.650152928e-07 -4.01661869e-05 2.837234795e-05 -4.452588097e-05 -6.136404912e-06 -1.237947956e-05 --5.699602804e-05 -3.864694571e-05 6.006495436e-05 9.381289462e-06 2.120223929e-05 --1.516721216e-07 -3.168951892e-06 6.083745681e-06 -1.255204556e-06 -6.852157305e-06 -3.964046854e-06 -1.044838577e-05 2.120256356e-05 -6.137148657e-06 -3.107333067e-05 --1.823219777e-05 -6.51891937e-06 7.923570066e-06 5.440802928e-06 1.994929841e-05 --6.671180284e-06 -4.158520158e-06 6.325250781e-06 1.250427706e-06 3.303989977e-06 -1.034835328e-05 7.60142663e-06 -1.203500447e-05 -1.459216043e-06 -2.532350472e-06 -1.308709632e-06 1.51413965e-06 -2.590097264e-06 4.627488389e-08 9.253664826e-07 -2.199823436e-05 4.227935939e-06 -2.532333874e-06 -8.083403405e-06 -3.226612669e-05 -0.0001216017839 5.167937354e-05 -6.869138106e-05 -3.286410802e-05 -0.0001145763653 -4.15317816e-05 2.411978136e-05 -3.595977861e-05 -8.523326867e-06 -2.455576966e-05 -1.278404225e-05 6.77132662e-06 -9.807139278e-06 -2.896265131e-06 -9.03009288e-06 --5.359185502e-05 9.052682695e-06 -3.122140616e-05 2.777289835e-05 0.000122212104 --7.461090804e-05 -5.220637775e-06 -9.029900947e-06 3.12237465e-05 0.0001299836333 --6.38703138e-05 -1.675654457e-05 1.601007699e-05 2.159865713e-05 8.358571568e-05 --2.018198812e-05 -1.235521957e-05 1.870008762e-05 3.87694238e-06 1.050314133e-05 -4.922740883e-05 3.614268055e-05 -5.721700527e-05 -6.948847174e-06 -1.208594028e-05 --3.558732833e-06 9.809988044e-06 -1.986529278e-05 5.689143238e-06 2.88648671e-05 -0.0001039647449 2.004251438e-05 -1.208594511e-05 -3.817706257e-05 -0.000152353687 --1.226161138e-05 -2.076587004e-06 8.704737772e-07 4.622530733e-06 1.861579399e-05 --2.4247443e-06 -1.195638416e-06 1.688788e-06 5.863578878e-07 1.91254065e-06 -4.477680044e-06 3.583664134e-06 -5.776603493e-06 -5.084077514e-07 -4.320184027e-07 -1.331366431e-06 1.189394916e-06 -1.956865794e-06 -9.945683203e-08 1.506055306e-07 -2.096559188e-05 3.003916624e-06 -4.320338751e-07 -8.132142456e-06 -3.306226798e-05 -1.326090458e-05 6.920322849e-06 -9.972829359e-06 -3.047548256e-06 -9.600322983e-06 -5.770010345e-06 3.60018569e-06 -5.477408782e-06 -1.080088962e-06 -2.849978513e-06 --7.479966574e-07 -6.393338772e-07 1.043583156e-06 6.794363206e-08 -1.94976861e-08 --5.361942711e-06 9.123045985e-07 -3.136441669e-06 2.781462069e-06 1.224230289e-05 --5.083263862e-06 -6.64018165e-07 -1.948897204e-08 1.998546765e-06 8.161082828e-06 --1.732026541e-06 9.379878669e-07 -2.256021664e-06 1.167063359e-06 5.404008736e-06 --6.245347411e-07 -5.579832165e-07 9.180416509e-07 4.663516658e-08 -7.075239031e-08 -1.141153181e-05 8.090380244e-06 -1.270728932e-05 -1.731054475e-06 -3.45047749e-06 --5.590342348e-06 2.752996318e-06 -6.751288831e-06 3.652247223e-06 1.682367994e-05 -1.291036258e-05 3.497978117e-06 -3.450466998e-06 -4.319515493e-06 -1.664561124e-05 --1.098641985e-05 -2.266171549e-06 1.563486703e-06 3.972468666e-06 1.576599453e-05 --3.138708307e-06 -1.894967243e-06 2.857004724e-06 6.140157839e-07 1.693206205e-06 -9.726014907e-06 7.142273359e-06 -1.13073455e-05 -1.372300474e-06 -2.384591173e-06 --1.486463722e-06 2.125296068e-06 -4.487055765e-06 1.55285212e-06 7.612736867e-06 -2.059696388e-05 3.96564238e-06 -2.384594419e-06 -7.565564744e-06 -3.019497586e-05 -1.014667298e-06 1.67911697e-06 -2.984181682e-06 2.468000649e-07 1.855720218e-06 -9.632398594e-07 6.165715898e-07 -9.44456347e-07 -1.738122882e-07 -4.407124193e-07 -3.151787543e-06 2.275096066e-06 -3.588085464e-06 -4.611590755e-07 -8.615452135e-07 --2.449027171e-06 1.06612352e-06 -2.687294328e-06 1.541565747e-06 7.054892452e-06 -5.143043618e-06 1.127953505e-06 -8.615456127e-07 -1.831606888e-06 -7.229310648e-06 -0.2240345941 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.1956436186 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.1935237281 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.009819627761 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.02653076424 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.01485920955 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.01302989144 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.001063972136 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0008150779802 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.001770431264 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0004032382332 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0001930544626 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.603876342e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.1710721922 -0.06922130003 -0.1083270994 0 0 --0.04512355407 0.277652692 0.2970878662 0 0 -0.01792148324 -0.3695361264 -0.08377355794 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.02510058603 0.002532266672 0.02808963907 0 0 -0.01888371753 0.1831995079 0.1573372951 0 0 -0.06180871055 -0.1475440244 -0.02837181949 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.004845870097 -0.004341280371 -0.003903641429 0 0 --0.004543030655 0.09121044642 0.06899383019 0 0 --0.003071500374 0.03569862836 0.01693940597 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.002873034839 0.0006841590302 0.001698567172 0 0 -0.002259047546 -0.0145344436 -0.01017704706 0 0 -0.003434617943 -0.02729055717 -0.01355933146 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0003757895475 -0.001436278239 -0.001595618375 0 0 --0.001443086122 0.02523160264 0.01951445891 0 0 --0.001114145441 0.009943425476 0.006049348487 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0004958857088 5.566833042e-05 -0.0001904312804 0 0 -0.0001645866126 -0.007108741472 -0.005378483218 0 0 -0.0002061872792 -0.006469932977 -0.004628738592 0 0 -0 0 0 0 0 -0 0 0 0 0 -9.987856706e-05 -0.0001684310296 -9.401480688e-05 0 0 --0.000135461315 0.003222214168 0.002611149351 0 0 -0.0002759620625 0.0006704024343 0.0006080506739 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0001840444314 7.156973914e-05 0.0001913185366 0 0 -9.675080843e-05 0.0007907744004 0.0005221814424 0 0 -0.000373071519 0.0004463008956 5.228775665e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0002022192613 7.129170291e-05 0.0001595602457 0 0 -8.4072743e-05 0.000251221225 9.17328761e-05 0 0 -0.0002857087496 -0.000491971581 -0.0007188026288 0 0 -0 0 0 0 0 -0 0 0 0 0 --6.848488638e-05 5.163948873e-05 9.015138352e-05 0 0 -4.669415327e-05 -0.0002834433035 -0.0002489839927 0 0 -0.000161051251 -0.0003358647151 -0.0003751925616 0 0 -0 0 0 0 0 -0 0 0 0 0 -4.498038493e-06 5.983106581e-06 1.347945918e-05 0 0 -3.076020788e-06 -7.861245472e-05 -5.241432339e-05 0 0 -7.67327241e-05 -0.0001397210162 -0.0001276071423 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.223054055e-05 -1.30138789e-06 7.678077128e-06 0 0 -7.930777512e-07 0.0002404218263 0.0001746250092 0 0 -6.719553298e-05 0.0001291437851 2.361565899e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.755736864e-05 1.482029887e-05 2.512429369e-05 0 0 -1.509865414e-05 -6.826413667e-05 -6.784470839e-05 0 0 -7.795001106e-05 -0.0001253154665 -0.0001725732452 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.02674049843 -0.04132478217 -0.09792903898 -0.08146371736 0.1258056633 --0.01193384944 0.130667352 0.1563744736 0.006132733684 -0.0397199821 -0.0101742208 -0.07064047948 -0.02504486189 0.0684573017 -0.05281817503 --0.2884879417 -0.01264198704 -0.06086946397 0.04823694577 0.5451483695 -0.1429820243 0.05651175824 0.0121226801 -0.4158393838 -0.1434749613 -0.01833558764 -0.02482805229 -0.01953039001 0.02878084004 -0.0359559499 --0.009496724987 0.0888652749 0.06210831887 -0.04176104043 0.02427134189 --0.005101671966 0.01266732166 -0.005578697171 -0.01091864739 0.02396108849 --0.1750105389 -0.03215353545 -0.02947022702 0.1819576915 0.2779558745 -0.01417141837 0.07629363333 0.05936116145 -0.218702187 0.01333144384 -0.02282152756 0.001094283572 0.0008717170569 -0.007431304705 -0.03881044032 -0.005313929447 0.0035760748 0.003257055522 -0.002974768353 -0.009473964126 -0.001518518375 0.002858329783 0.003181309872 -0.0005476917983 -0.0036522898 --0.06669071786 -0.006924132538 -0.004833671699 0.03216811448 0.1110432884 --0.02479215208 -0.0009700537888 -0.001546455729 0.004940641939 0.04346876296 -0.005662329277 0.0001822443911 9.653222431e-05 -0.003296360697 -0.009281477504 -0.0003358279746 0.001944832901 0.001501907211 -0.001004713019 -0.0005357551242 -0.0006300946982 -0.001476778403 -0.001106818442 0.0006276261883 -0.001155388877 --0.005705361062 0.0004009096985 0.0003215199599 0.002304601949 0.009543522089 --0.008548331394 0.001290233278 0.00071746529 -0.002917807062 0.01580839788 --0.003616739593 -0.0005808855268 -0.0005603078382 0.001726363226 0.006166040236 -0.0002890721874 0.000671195155 0.0007718115074 -0.0001266913895 -0.0007611821428 --0.0002994645391 0.0005978917659 0.0008410882969 0.0002886928175 8.456655264e-05 --0.0097579517 -0.001031000851 -0.0007073964362 0.004789835606 0.01621971121 -0.008812682076 0.0009144392082 0.0004610289027 -0.004557319005 -0.01445279681 -0.002978836664 0.0001287121245 -8.87147624e-05 -0.001506743877 -0.004784408083 -0.0002860234341 9.837496215e-05 0.0002990372135 8.013544464e-05 -0.0007270235808 -0.0002116930781 5.403239083e-05 0.0002571820516 0.0001121386386 -0.0005923724455 --0.001545004613 -0.0001313806351 -0.0001912221998 0.0003297593458 0.002745644564 --0.004911701614 -0.000535360228 -0.0005389990665 0.002104471329 0.008379927447 --0.001591096931 -0.0003301754233 -0.0003604766437 0.0008357991566 0.002753071984 --0.0001055720119 0.0003541583121 0.0002245780818 -0.000158829381 0.0002350117137 --0.0001134979844 -9.600049995e-06 -0.0002738322545 -0.0001954131599 0.0004783973871 --0.0004606732034 -0.0003845953916 -0.0005226412684 0.0005935620271 0.0009217822287 -0.002952156196 0.0006170949637 0.000604341245 -0.001939077773 -0.004968720359 -0.001634830315 0.0001223080227 3.006020702e-05 -0.0008771942587 -0.002654150506 -0.0001978175105 -0.000190550282 -0.0002440216962 -9.732517417e-05 -0.0002277385424 -0.0001585600035 -0.0003785768289 -0.0005888680224 -0.000219648023 5.895471122e-05 --0.001121764492 -0.0001917744817 -0.0003702302014 2.626202909e-05 0.002184399501 --0.002652674379 -0.0001112631597 9.638048418e-05 0.001423899508 0.004230366702 --0.0007920113296 -9.712902271e-05 -0.0001118089088 0.0002815471389 0.00137863423 --4.047468607e-05 -6.031780001e-05 -9.185909993e-05 -6.872400364e-06 0.0001177566799 --3.721621969e-05 -0.0001402325336 -0.0002570431523 -8.355247065e-05 0.0002261120313 --1.115501407e-05 -7.991596987e-05 -0.0001732290106 -0.0001080039751 0.0001473142519 -0.001416344382 0.0001946950546 0.0002419971227 -0.0004816129714 -0.002494517305 -0.0001359314373 -8.825131027e-06 -3.61798064e-05 -5.911038413e-05 -0.0002006113469 -1.251134683e-05 9.800713478e-06 -7.065141434e-06 -2.321491289e-05 -5.003602177e-06 -1.355756763e-05 -4.938985258e-05 -0.00011358373 -6.034004875e-05 5.952425679e-05 --0.0001018757835 -7.297287055e-05 -0.0001240064645 2.004101153e-05 0.0002414217553 --0.0002155402683 1.410600519e-05 5.308188143e-05 6.780552398e-05 0.0003272743585 -4.52438477e-06 -2.637549677e-05 -5.297718111e-05 -2.414098518e-05 2.807094523e-05 --1.330669652e-06 1.818544147e-05 1.982905668e-05 -1.038983707e-06 -3.997654764e-06 -3.22114304e-06 -3.15288945e-05 -5.872117784e-05 -2.220269461e-05 3.194165133e-05 -3.496705875e-06 -4.128029357e-05 -8.184418848e-05 -3.205640314e-05 4.812866157e-05 --5.399040258e-06 2.474412716e-05 3.786636553e-05 -2.407322858e-05 -4.222120858e-06 -6.471208591e-05 -1.440436303e-05 -4.02849393e-05 -6.604307725e-05 -7.34530087e-05 -1.012801685e-05 -1.010531806e-05 -3.759542625e-06 4.313437464e-06 -2.156510645e-05 -9.896047208e-06 -4.402850452e-05 -6.630371439e-05 -1.995309278e-05 1.882711329e-05 --7.182569896e-05 -3.24729053e-05 -7.134723881e-05 -3.544196567e-05 0.0001775788319 --9.472769429e-05 5.887173625e-06 2.455509282e-05 7.326556649e-05 0.0001336981834 --5.163162775e-05 -2.014427135e-05 -3.839336368e-05 -3.599409221e-07 0.0001129867102 --2.560217492e-06 -1.358076998e-05 -2.276791563e-05 -6.060800221e-06 1.774697118e-05 -2.1555255e-06 -5.491308264e-05 -0.0001015725722 -3.932322216e-05 6.122721408e-05 -8.712560542e-06 -3.800664505e-05 -8.22943535e-05 -5.216922818e-05 4.544126349e-05 -9.18569298e-05 3.417226299e-05 6.161353496e-05 -1.291732001e-05 -0.0001932995181 -0.1740691178 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.01831031347 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0001517977974 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.001818118535 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.009031706446 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.00415311426 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.002156256082 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0006745358349 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0001170736176 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0004428379537 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --5.326959235e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -3.396667829e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --6.49981445e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.204769992 -0.1456620201 -0.3260090107 0 0 --0.02718786634 0.1689672685 0.07677758863 0 0 -0.2839998662 0.1519837232 0.002765710571 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.05970503516 0.03553032094 -0.06356707304 0 0 -0.04611035938 0.04417357061 -0.05337512478 0 0 -0.2248984639 0.04773100732 -0.05870919777 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.06108543881 0.01614751606 -0.03019857665 0 0 -0.01951556421 0.005747312132 -0.006241086027 0 0 -0.004891138292 0.007274099556 -0.004084662562 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.006103156142 0.0005677182208 0.002434742573 0 0 --0.003210725964 -0.0001692009271 -0.0006740200613 0 0 -0.01099328887 0.0003897839264 -0.003733250745 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.01174688732 0.003565035661 -0.005693404693 0 0 -0.003563787335 0.0009259366938 -0.001459661214 0 0 -0.003916671612 0.001478646052 -0.002582972767 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.001140232019 -0.000366003781 0.000524773425 0 0 --0.0007327138367 -3.799548651e-05 0.0004567652685 0 0 -0.0007086157092 0.0001730109823 -0.0003083988535 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0004853120179 -1.673481919e-05 -0.0005306250956 0 0 --3.563437974e-05 0.00015824363 -2.88461527e-05 0 0 -0.001245218407 0.0002446759145 -0.0005017477937 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.001399018239 0.0006974415883 -0.0004803343553 0 0 -0.0006821167682 1.153030616e-05 -0.0004514509525 0 0 --0.0002579001447 -0.0006170285638 -0.000347275125 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0007890445706 -4.490486527e-06 0.0006145401683 0 0 --4.501977048e-05 -0.0001490840154 -5.07689093e-05 0 0 -0.001094914617 -2.273537699e-05 -0.0008807441825 0 0 -0 0 0 0 0 -0 0 0 0 0 -5.685555414e-05 9.35473043e-05 2.208573747e-05 0 0 -6.394392011e-05 -1.171314712e-05 -6.340224324e-05 0 0 -0.0001019041653 -0.0001294617939 -0.0001650157715 0 0 -0 0 0 0 0 -0 0 0 0 0 --4.071453551e-05 -2.830341791e-05 8.533962197e-07 0 0 --1.656979883e-05 -6.149729801e-06 -1.84979976e-06 0 0 -9.064463147e-05 -4.527748449e-05 -8.84665263e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0001135815717 6.603430979e-05 -2.621420786e-05 0 0 -6.307978302e-05 -1.616628533e-06 -3.785412112e-05 0 0 -5.943952684e-05 -8.215354035e-05 -0.0001221787755 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0001019746665 3.065899411e-06 8.302272681e-05 0 0 --7.812477551e-06 -2.050198285e-05 -5.013248662e-06 0 0 -0.0001424276035 -5.07435706e-05 -0.0001519632969 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.07885389922 -0.08658799075 -0.3963878311 -0.1829681382 0.04389370847 -0.01138551476 0.2247023236 0.08889978903 0.1010140031 -0.143979112 -0.3843856098 0.2442120329 0.02646559608 0.1198896331 -0.0775975079 -0.01333868307 -0.02226670891 -0.3337438647 -0.1460315385 -0.01096827697 -0.03689430064 0.1360987876 -0.02839094362 0.02948144474 -0.08787751018 -0.1068533123 0.06926368935 -0.1208439264 -0.02231381041 -0.03943708335 --0.004781579066 0.1087421139 -0.07497994904 0.004735947973 -0.05997770316 -0.2467182944 0.125813208 -0.02164974935 0.06901246801 0.02311481375 -0.0693703185 0.1097937976 -0.0763297218 0.01339720632 -0.04059992797 -0.04926090008 -0.01474307686 -0.01793080645 -0.009476930535 0.00983242694 -0.05381362946 0.03504406484 -0.05623004343 -0.008612392954 -0.01755264097 -0.01641277734 0.01585180279 -0.02549773842 -0.004842902303 -0.009992080957 -0.02776560139 0.009846324622 -0.01966782777 -0.00294510071 -0.003160413821 -0.02513428159 0.01558740527 -0.02535233333 -0.003861630256 -0.007610448447 -0.01456728866 0.007838195856 -0.008332764764 0.0005615636181 -0.001611595366 -0.01004198013 0.008244807043 -0.01260147865 -0.002019918113 -0.004605810522 -0.006703662455 0.004625513909 -0.007568495509 -0.001252974542 -0.002457980303 --0.004397801963 -0.005563480754 0.007202776019 0.001006860231 0.003342704065 --0.001675854318 0.0002805335594 -0.00216971151 -0.001124858742 -0.001105501858 --0.003131998515 0.001061641564 0.002298463864 0.001123266933 -0.0006220860362 -0.001236429818 0.0006253140744 -0.0009558493763 -0.0001234966605 -0.0003090842735 --0.002363693967 -0.0007824296351 0.00140892602 0.0001191869004 9.518517214e-05 -0.01261715391 0.007356834491 -0.01201541799 -0.001701009356 -0.003222959065 -0.005378276203 0.003464261773 -0.005677012952 -0.0008326912051 -0.00152928858 -0.00469339516 0.002538899587 -0.004308936291 -0.0005613618948 -0.0008605398816 -0.004177732912 0.002926835129 -0.004710479129 -0.0007116117184 -0.001385265134 -0.002811062199 0.001997393132 -0.002350348622 -0.0002231508429 -0.001200172019 --0.003122301828 -0.001864610426 0.003485222792 0.0005569331882 0.0006505712682 --0.0001077527106 2.680817663e-05 7.108402944e-05 1.416833921e-05 -7.512200289e-05 --0.001100557821 -0.0007104486522 0.0007359710471 3.854969593e-05 0.0004349687348 --0.0009102337569 -0.001075990694 0.0004743383443 -0.0001714630852 0.0006466815278 --0.001056097523 -0.0004224848841 0.0007256712454 8.379191318e-05 0.0001334641676 -0.002268790926 0.0009608679441 -0.001853485656 -0.0002887256891 -0.0003451141888 -0.0004761960798 -3.041390875e-06 -0.0009286392687 -0.0003363497633 5.111339135e-05 -0.0007909867892 0.0007552799695 -8.10459585e-05 0.0002404028968 -0.0004063734825 -0.001572194727 0.001091549039 -0.001832298242 -0.0003031201939 -0.0005435638802 -0.001057551422 0.0004157840923 -0.001272461199 -0.0002972777322 -0.0001126317434 --0.0006802265794 -0.0009415096843 -0.0002810789142 -0.0004136206826 0.0005919331618 -0.0001918022405 -0.0002278528566 -0.0008864041483 -0.0003905685995 0.0002108234782 --0.000361472918 0.000165212114 0.0006319063205 0.000255227011 -0.0002033377862 --0.0003820911903 -0.0002651959043 0.000404494722 5.84845137e-05 0.0001351795245 --0.0002946997626 -0.0002456189697 0.0002509661624 1.45933595e-05 0.0001487921395 -0.0006354430986 0.0002574674364 -0.001006972862 -0.0002563912701 -2.044813496e-05 -0.000158561231 -1.015367481e-05 -0.0003807617147 -0.0001262579287 7.720697468e-05 -0.0001966423725 0.0002147330561 -8.133772106e-05 3.194323151e-05 -0.0001553383296 -0.0001192597325 1.312167072e-05 -0.0002135686322 -6.963459373e-05 1.374056709e-05 -4.076667301e-05 4.453332331e-05 -8.627307805e-05 -2.002255606e-05 -2.943332018e-05 -9.033659061e-06 -8.118347919e-05 -2.84205973e-05 -2.848210991e-05 7.169895639e-05 -2.16804935e-05 -5.867826009e-05 -0.0001240431866 -6.020396942e-05 5.456680935e-05 -1.384292214e-05 6.365243267e-05 0.0001106720967 5.987110027e-05 -5.054814024e-05 -7.78239298e-05 2.669855811e-07 -0.0001804184437 -6.28046087e-05 1.855707355e-05 -5.411295827e-05 4.136995231e-05 -5.476083761e-05 -5.511855694e-06 -1.94422976e-05 --6.809554239e-05 -9.995129502e-05 2.696732672e-05 -2.150749466e-05 6.199751932e-05 --1.548968018e-05 -8.239029979e-05 -0.0001145196815 -6.7392228e-05 6.098080902e-05 --3.574978926e-05 2.932399444e-05 9.004639578e-05 3.896028977e-05 -3.159932037e-05 -2.615735561e-05 -4.91416947e-06 -7.913951074e-05 -2.925699072e-05 1.15159811e-05 -1.617077563e-05 2.442434687e-06 -2.852468546e-06 1.169929643e-06 1.676084671e-06 -3.676286013e-05 -2.695142152e-05 -0.0001456898764 -5.923721637e-05 3.347482361e-05 -2.31758712e-05 -4.88099753e-05 -0.0001440931681 -6.506477335e-05 4.8760908e-05 -1.176068537e-06 4.365768228e-05 2.678060786e-05 2.062632816e-05 -3.682817626e-05 --2.185528165e-05 -4.172803732e-05 -2.083273263e-05 -2.011611567e-05 3.023020458e-05 --1.550824923e-05 -2.499685853e-05 -4.006522731e-06 -9.034530263e-06 1.728615723e-05 -3.681130768e-05 -5.131805798e-05 -0.0001477517765 -6.499701597e-05 5.604166684e-05 -6.06165988e-06 -6.15396029e-05 -0.0001145678864 -5.787825303e-05 5.631419164e-05 -7.430385717e-06 5.68937808e-05 6.139008829e-05 3.770064984e-05 -4.764466108e-05 -0.08453014315 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.01049610249 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.001670173421 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.002775450943 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0008207463629 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --4.62487533e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -5.828347323e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -2.145746376e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --8.373841966e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.060315761e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.257023959e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.460199219e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.786276606e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0630191038 0.3444741738 0.3071571697 0 0 -0.0282675874 0.01840086789 -0.007395905717 0 0 --0.04489305823 -0.007354468279 0.02823510433 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.03290354664 0.08243511761 0.0374086121 0 0 -0.01523359611 0.0166163162 0.001068033217 0 0 --0.02466350321 0.00115531029 0.01943026701 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.002513521406 -0.01213111375 -0.007257764909 0 0 --0.0009316764284 0.002406425786 0.002516321561 0 0 -0.001263059346 0.002542548419 0.000966948948 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.001726193257 -0.01268905653 -0.0108701419 0 0 -0.0009249488857 -0.000980155421 -0.001435433707 0 0 --0.00135533728 -0.00144866137 -7.26339619e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0009011520608 0.003883068094 0.003606602005 0 0 --0.0001967627557 -0.001086871355 -0.0006716995771 0 0 -0.0003818356193 -0.0006806449709 -0.0008006118984 0 0 -0 0 0 0 0 -0 0 0 0 0 -7.52155468e-06 8.924577647e-05 6.166378806e-05 0 0 --3.246630573e-06 0.0002241568014 0.0001715115043 0 0 --1.114701271e-05 0.0001735830242 0.0001393010433 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0001585115064 0.001252138502 0.0008251124087 0 0 -7.190710078e-05 0.0002818605478 0.0001584797476 0 0 --0.0001310466224 0.0001607561386 0.000219841993 0 0 -0 0 0 0 0 -0 0 0 0 0 --6.600301825e-05 -0.001051531415 -0.000743439588 0 0 --1.36030909e-05 -1.210868914e-05 1.105429489e-06 0 0 -2.175299851e-05 1.025748083e-06 -1.559877963e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --8.671989429e-05 0.0004701556523 0.0004198392741 0 0 --1.671028886e-05 -8.960785118e-05 -5.501053563e-05 0 0 -3.224161419e-05 -5.574473671e-05 -6.630049298e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -5.961172754e-06 -0.0002435212486 -0.0001881610493 0 0 -3.062825444e-06 4.107477777e-06 7.927453593e-07 0 0 --4.995274021e-06 8.241938206e-07 4.38142784e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 --6.909009087e-06 0.0002538073225 0.0001966165742 0 0 -5.860127517e-06 1.736179713e-05 8.684505328e-06 0 0 --1.029413477e-05 8.813649542e-06 1.439305208e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.209712938e-05 -0.0001173762187 -7.190516742e-05 0 0 --4.201469441e-06 9.112237229e-07 3.849410025e-06 0 0 -6.401237462e-06 3.873685017e-06 -1.895773992e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.867365402e-05 7.782770711e-05 7.274621948e-05 0 0 --2.533313469e-06 -6.068256654e-06 -2.670194751e-06 0 0 -4.351302593e-06 -2.71143869e-06 -5.319115994e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.05329822503 -0.0399677014 0.06356416943 0.007174329177 0.01120116649 --0.09153847538 -0.01214777254 1.663276273e-05 0.03591002422 0.1465345832 --0.05811617831 1.638438309e-05 -0.01492193482 0.02602559127 0.1104468199 --0.00468010523 -0.002933775286 0.004469114466 0.0008703771628 0.002280922915 --0.01113434474 -0.006476187888 0.009659591876 0.002280918699 0.006560984008 -0.006563392126 0.003239603564 -0.00457746544 -0.00158583899 -0.005169722301 --0.007363187628 0.006901450786 -0.01522058429 0.006178027074 0.02953908397 --0.03580051526 -0.01522065209 0.02023456394 0.009673011536 0.03371901676 --0.005011554834 -0.003176691854 0.004853521344 0.0009173448162 0.002363273937 --0.01180720531 -0.007000447629 0.0105000959 0.002363269762 0.006658027674 -0.001902346003 0.00127717918 -0.001980176345 -0.0003184338362 -0.0007363530322 -0.001324483425 0.000984194165 -0.001562169082 -0.0001820512125 -0.0002986779071 --0.002352934623 -0.001562169975 0.00241534788 0.0004011733754 0.00095024401 --0.0003847109168 -0.0002532363443 0.0003906989237 6.650413079e-05 0.0001602849876 --0.0008755066455 -0.0005548961606 0.0008477743223 0.0001602847965 0.0004130032089 --0.001085399864 -0.0008008668925 0.001269226688 0.0001515561869 0.000257538099 --0.001607053892 -0.0003174054282 0.0002014939689 0.000586957938 0.002337922463 --0.0006088730806 0.0002014901953 -0.0005452940901 0.0003567205955 0.001610744535 --2.992381853e-05 -1.496186068e-05 2.124026547e-05 7.150051736e-06 2.313749947e-05 --8.368747989e-05 -3.432055008e-05 4.48673268e-05 2.313748281e-05 8.165928784e-05 -0.0001079881334 7.474577714e-05 -0.0001167450975 -1.713850343e-05 -3.673957505e-05 -7.855274801e-05 5.422303252e-05 -8.46357241e-05 -1.25289182e-05 -2.705983272e-05 --0.0001231616892 -8.463571521e-05 0.0001319653515 1.980246918e-05 4.328241959e-05 --1.871620748e-05 -1.305734338e-05 2.043218928e-05 2.927556479e-06 6.136400826e-06 --4.01661869e-05 -2.837234795e-05 4.452588097e-05 6.136404912e-06 1.237947956e-05 --1.936224189e-05 -1.322954071e-05 2.059936074e-05 3.144891367e-06 6.975749459e-06 --1.769398567e-05 -8.990490951e-06 1.283669406e-05 4.167907504e-06 1.335783224e-05 -1.500829592e-05 1.283668968e-05 -2.095589827e-05 -1.35964358e-06 4.107611882e-07 -2.905926629e-06 1.895203454e-06 -2.917103426e-06 -5.097002531e-07 -1.250432189e-06 -6.671180284e-06 4.158520158e-06 -6.325250781e-06 -1.250427706e-06 -3.303989977e-06 -3.26923602e-05 1.813980107e-05 -2.667089432e-05 -7.062672964e-06 -2.123665341e-05 --9.721630332e-06 2.685770952e-05 -5.438155167e-05 1.556609327e-05 7.898527648e-05 --0.0001173749917 -5.438175047e-05 7.499550716e-05 2.984346016e-05 0.0001004572324 --1.744361287e-05 -1.092499107e-05 1.663841458e-05 3.2481178e-06 8.523340493e-06 --4.15317816e-05 -2.411978136e-05 3.595977861e-05 8.523326867e-06 2.455576966e-05 --7.943517154e-05 -5.497892322e-05 8.587005979e-05 1.260837997e-05 2.703309432e-05 --8.361523419e-05 -3.342993183e-05 4.316510902e-05 2.347699135e-05 8.352878218e-05 -3.514704498e-05 4.316502207e-05 -7.439220398e-05 2.28695017e-06 3.048691794e-05 -8.708700489e-06 5.622187551e-06 -8.63109986e-06 -1.551516338e-06 -3.876952155e-06 -2.018198812e-05 1.235521957e-05 -1.870008762e-05 -3.87694238e-06 -1.050314133e-05 --8.097545851e-06 -5.442346502e-06 8.440223526e-06 1.352988635e-06 3.121091491e-06 --9.130397606e-06 -3.304648146e-06 4.045428313e-06 2.707935839e-06 9.899995131e-06 -2.471967492e-06 4.04541799e-06 -7.182634945e-06 5.823470963e-07 4.418888697e-06 -9.406399784e-07 5.328767085e-07 -7.885432261e-07 -1.986387591e-07 -5.863587907e-07 -2.4247443e-06 1.195638416e-06 -1.688788e-06 -5.863578878e-07 -1.91254065e-06 -7.272812978e-06 4.592386304e-06 -7.009358621e-06 -1.338631233e-06 -3.469389475e-06 -1.471408107e-06 4.798678025e-06 -8.894337886e-06 1.344802866e-06 8.017016097e-06 --1.725240443e-05 -8.894361043e-06 1.276410533e-05 4.010346932e-06 1.273551085e-05 --2.514630812e-06 -1.640878005e-06 2.525987442e-06 4.407027723e-07 1.080091096e-06 --5.770010345e-06 -3.60018569e-06 5.477408782e-06 1.080088962e-06 2.849978513e-06 --1.374655622e-05 -9.926415951e-06 1.565635121e-05 2.009864321e-06 3.749619138e-06 --1.799252433e-05 -4.707684988e-06 4.485563945e-06 6.08973156e-06 2.357505039e-05 --2.257751447e-06 4.485528783e-06 -9.244783982e-06 2.883609579e-06 1.43961337e-05 -3.337609512e-07 2.607163182e-07 -4.182048678e-07 -4.057065381e-08 -4.663562016e-08 -6.245347411e-07 5.579832165e-07 -9.180416509e-07 -4.663516658e-08 7.075239031e-08 --1.476373572e-05 -1.028068638e-05 1.608020569e-05 2.317342132e-06 4.883825743e-06 --1.656980611e-05 -5.927560632e-06 7.206960163e-06 4.943451796e-06 1.812351815e-05 -4.210745887e-06 7.206938578e-06 -1.28453813e-05 1.123897685e-06 8.239095741e-06 -1.344675979e-06 8.612684146e-07 -1.319495458e-06 -2.424157258e-07 -6.140172128e-07 -3.138708307e-06 1.894967243e-06 -2.857004724e-06 -6.140157839e-07 -1.693206205e-06 --2.580910831e-06 -1.968181485e-06 3.14137555e-06 3.337199468e-07 4.685281329e-07 --5.24000474e-06 -3.672523938e-07 -6.330178458e-07 2.192626395e-06 9.12753612e-06 --4.623127829e-06 -6.330338829e-07 3.854161414e-08 1.805479408e-06 7.356724178e-06 --4.25483386e-07 -2.816102807e-07 4.350725346e-07 7.291130651e-08 1.738127114e-07 --9.632398594e-07 -6.165715898e-07 9.44456347e-07 1.738122882e-07 4.407124193e-07 -0.08408005694 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.002253423474 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.005070375992 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -2.343437215e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.00132819167 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0004420258949 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0008239900039 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0001469441522 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0002563304572 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0002021262081 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.649823212e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.967680532e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.776042917e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.005529032548 0.4989880968 0.3890820714 0 0 --0.136190877 0.04432660547 0.03188551794 0 0 --0.1710721921 0.06922130003 0.1083270995 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.02540157886 0.2418335408 0.2068604259 0 0 --0.04450911463 0.007061189679 -0.02577455454 0 0 --0.02510058163 -0.002532266741 -0.02808963684 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.002834176325 0.04127489897 0.03272857763 0 0 -0.005266963792 0.005734409857 0.00648962188 0 0 -0.004845867487 0.004341279839 0.003903639642 0 0 -0 0 0 0 0 -0 0 0 0 0 -4.273078781e-05 0.01223645207 0.009596357752 0 0 --0.003755803917 -0.0006060984215 -0.002424125187 0 0 --0.002873030497 -0.0006841592629 -0.001698565104 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0004017058543 0.01080836966 0.008353461457 0 0 -0.0007107023641 0.001630474851 0.001834650486 0 0 -0.000375785702 0.00143627762 0.001595615876 0 0 -0 0 0 0 0 -0 0 0 0 0 -3.198049069e-05 0.0007398881836 0.0005506916727 0 0 --0.0003344790637 -0.0002396821887 -0.000130670222 0 0 --0.0004958867193 -5.566801611e-05 0.00019043101 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0003283123946 0.001759051144 0.001586089822 0 0 --0.0001330067413 0.0002225642868 0.0001129269798 0 0 --9.987742446e-05 0.0001684306372 9.401508294e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0003159410841 0.0001859110436 0.0003777219841 0 0 -9.145574978e-05 -6.442047778e-06 -7.208270325e-05 0 0 -0.0001840421965 -7.156925379e-05 -0.0001913193048 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.000259759386 0.0007562082983 0.0007598777652 0 0 -0.0001327025602 -2.0161987e-05 -4.864690393e-05 0 0 -0.000202218786 -7.129179384e-05 -0.0001595605663 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0001313148279 0.0001179193224 0.0001876541873 0 0 -3.431741915e-05 -3.434810883e-05 -5.127724314e-05 0 0 -6.848537483e-05 -5.163934378e-05 -9.015101232e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --6.871324955e-05 6.587646186e-05 0.0001028527307 0 0 --1.120579108e-05 -3.676338349e-06 -1.204417872e-05 0 0 --4.497929436e-06 -5.983125676e-06 -1.347941798e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --7.220225687e-05 6.887715981e-05 0.0001052697956 0 0 -1.654541721e-05 8.142435421e-06 5.249702375e-06 0 0 -2.222996045e-05 1.301453728e-06 -7.678325234e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 --7.17048317e-05 8.076041505e-05 0.0001140088418 0 0 -1.858925147e-05 -9.511752029e-06 -1.143763509e-05 0 0 -2.755740345e-05 -1.48202981e-05 -2.512427498e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0332244997 0.3090642056 0.3300018644 -0.03088011403 -0.0403063121 --0.3230490177 -0.01733793643 -0.008418805754 0.3212474174 0.5007590448 --0.2437794076 0.06322094754 0.03395281512 -0.1018273213 0.4587675002 --0.001960846119 0.01080766952 0.0515043287 0.05067239164 -0.04622036953 -0.01193384934 -0.1306673515 -0.1563744732 -0.006132733916 0.0397199823 --0.008185152149 0.1127943967 0.09085915673 -0.04435139442 0.01148924491 --0.1724123839 -0.009822487612 -0.0123684654 0.1168879431 0.2850479024 --0.1322167641 0.008445079192 -0.01012716641 -0.01571887532 0.2504124638 -0.002469749116 -0.02916677934 -0.02658994393 0.01762004004 -0.00208210212 -0.009496723326 -0.08886526632 -0.06210831231 0.04176103664 -0.02427133879 -0.006224423312 0.002304887843 0.001782745514 -0.003319059975 -0.01047142095 --0.05937598949 -0.005072408237 -0.003607098389 0.02443399066 0.09976812525 --0.04678941252 -0.003555970493 -0.002026767604 0.01937442088 0.07813697445 --0.001282796109 -0.0005361915804 -1.876863186e-05 0.00140354257 0.00166278135 --0.005313929247 -0.003576073909 -0.00325705484 0.002974767824 0.009473963818 --0.0002265720918 0.004582998411 0.003515092096 -0.002042121316 0.0004866214362 --0.003574791749 -0.0001704707163 2.78801617e-05 0.004893371566 0.005173825052 --0.002687792883 0.001362988409 0.0009171133268 -0.002664330326 0.005295721483 --8.678058935e-05 -0.0005191265928 -0.0003812587586 0.0004956242619 7.412605907e-05 --0.0003358290112 -0.001944826848 -0.001501902584 0.001004710292 0.0005357570869 -0.0007707339026 0.0004598723239 0.0004899254582 -0.0003450662624 -0.001443394745 --0.01168629851 -0.0009617703581 -0.0006273054497 0.004846461365 0.01957724868 --0.009213782819 -0.0006201945026 -0.0002267125645 0.003905054018 0.01526361609 --8.151244387e-05 3.096501583e-05 0.0002208390508 0.0002691499691 -8.934725091e-05 --0.0002890716071 -0.0006711933204 -0.0007718101032 0.0001266902412 0.0007611812252 -0.0001713652624 0.0002211240485 0.0004229447427 0.0001031485549 -0.0005650264642 --0.0003330823119 -1.696240534e-05 3.518696526e-05 0.0002328917058 0.000497724531 --0.0002678390391 6.006360306e-05 0.0001362859986 0.0001035168543 0.000366054122 --8.740316118e-05 0.0001582072697 0.0002912715517 0.000131693163 -3.584898596e-05 --0.0002860231934 -9.837758414e-05 -0.000299039218 -8.013418881e-05 0.000727023083 --2.324781708e-05 0.0005048234468 0.0005901362928 -1.627851068e-06 -0.0001760755762 --0.001183452996 -0.0002107552546 -0.0003025578769 0.0004473658095 0.002135314049 --0.0009237716314 -0.0002623654848 -0.0004948925856 3.583631111e-05 0.001901570651 -3.112020957e-05 -0.00013504661 -0.0001380050683 5.255001998e-05 -2.512386867e-05 -0.0001055719535 -0.00035415595 -0.0002245762757 0.0001588281924 -0.0002350115329 -0.0001197335856 9.575671336e-05 0.0001974887577 4.208334994e-05 -0.0003371779916 --0.0004636002646 -0.0001789147843 -0.000276645437 0.0001561843726 0.0009224604673 --0.0003506999196 -0.0002530382122 -0.0004825358363 -0.0001203003235 0.0009181795624 --3.994180189e-05 -2.870281614e-05 -9.732474086e-05 -6.407231619e-05 0.000152727885 --0.0001978170822 0.0001905466882 0.0002440189492 9.732686028e-05 0.0002277376936 --1.466391099e-05 4.474950036e-05 0.0001043756765 5.928924699e-05 -5.198448325e-05 --0.0003607588946 -9.243120802e-05 -0.0001433780942 0.0001011261522 0.0006864818117 --0.0002759969479 -0.0001427768663 -0.0002554911145 1.129903263e-05 0.0006246340233 -1.404476978e-05 -2.123824863e-05 -5.106481643e-05 -3.440475053e-05 1.482620734e-05 -4.047467955e-05 6.031780825e-05 9.185910622e-05 6.872398489e-06 -0.0001177566686 -3.982454547e-06 6.250884244e-05 0.0001025598431 2.867642021e-05 -6.610008198e-05 --5.02740147e-05 -3.443398736e-05 -6.588357529e-05 -1.92269128e-06 0.0001266955832 --3.538827665e-05 -6.352787069e-05 -0.0001291789122 -4.858440218e-05 0.0001486386611 --1.892327723e-06 -1.469555679e-05 -2.239027751e-05 -2.678023756e-06 1.486060321e-05 --1.251150115e-05 -9.799835115e-06 7.0658127e-06 2.321451864e-05 5.003893608e-06 --6.047553024e-06 6.687867678e-05 0.0001044397383 2.853986133e-05 -4.739653247e-05 -2.070446599e-06 -1.977814124e-05 -3.726985006e-05 -2.79527643e-06 1.807024161e-05 -3.410825158e-06 -3.093611572e-05 -7.036489099e-05 -5.310020772e-05 4.865749633e-05 --1.258422066e-07 -8.770971535e-08 4.464036066e-06 6.21586273e-06 -5.083266918e-06 -1.330710396e-06 -1.818597761e-05 -1.982946653e-05 1.03924359e-06 3.997567262e-06 -3.551283716e-06 3.840179983e-05 7.596365876e-05 3.03903975e-05 -5.672389928e-05 --4.984335803e-05 -2.325318132e-05 -3.826541291e-05 1.581298564e-05 0.0001045222895 --3.686321811e-05 -3.478436543e-05 -6.904745914e-05 -2.343740619e-05 0.0001100533782 --2.745384389e-06 6.059629051e-06 7.645329387e-06 1.593342398e-07 1.694750943e-06 --1.012792196e-05 1.010474315e-05 3.759103245e-06 -4.31317722e-06 2.156492604e-05 --5.581272916e-06 3.573882096e-05 6.827151793e-05 2.923519553e-05 -3.516016463e-05 --1.613833692e-05 -2.645410214e-05 -5.082449869e-05 -8.942916598e-06 5.941830845e-05 --9.333884564e-06 -4.875179102e-05 -9.979511758e-05 -4.499645744e-05 8.481963702e-05 -1.630892114e-06 -6.506332335e-06 -1.442406196e-05 -8.025718384e-06 7.649280777e-06 -2.560164636e-06 1.358103171e-05 2.276811564e-05 6.060685215e-06 -1.774687272e-05 -0.2246958858 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.1053577669 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.01186303561 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.005144933743 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.01779582619 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.008301271879 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.003844790075 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.001107875381 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0007224425806 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0006842756524 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --4.632549571e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0001312616168 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --6.378561748e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.02802492363 -0.04346019456 0.139523086 0 0 -0.01958679201 0.2038169443 0.08778086435 0 0 --0.2047699919 0.1456620201 0.3260090108 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.05618770005 -0.03268513571 0.04363471454 0 0 -0.1102424257 0.06287630583 -0.07295622531 0 0 --0.0597050294 -0.03553032334 0.06356707691 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.07263643322 0.02463760531 -0.04481465473 0 0 -0.03556272444 0.01021560919 -0.01609809937 0 0 --0.06108544167 -0.01614751531 0.03019857449 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.01537523881 -0.005524349342 0.01371084616 0 0 --0.004217148824 0.000461681681 0.001390306592 0 0 -0.006103158997 -0.0005677192793 -0.002434738745 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.01175552312 0.003914091877 -0.007007940473 0 0 -0.007225433135 0.00161316508 -0.003843444911 0 0 --0.01174688839 -0.003565036098 0.005693400478 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.002884766674 -0.0007081743122 0.001777638843 0 0 --0.001093078579 -0.0001660488671 0.000649983455 0 0 -0.00114022896 0.0003660054719 -0.0005247735778 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0007919314904 -0.0001225161808 0.0008755799736 0 0 --0.0001401184747 0.0003542294908 0.0002465484724 0 0 --0.0004853128478 1.673530461e-05 0.0005306287621 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.002684296197 0.001278254671 -0.001168545211 0 0 -0.001206803311 0.00014632356 -0.0007594330528 0 0 --0.001399018184 -0.0006974419058 0.0004803285385 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.001834236334 -0.0002752414585 0.001113585024 0 0 --0.0001956958572 -0.0002367535846 -1.126811376e-05 0 0 -0.0007890446429 4.490408311e-06 -0.0006145404125 0 0 -0 0 0 0 0 -0 0 0 0 0 -7.268576583e-05 0.0001802950675 9.490691308e-05 0 0 -8.087433863e-05 1.830110781e-05 -5.171363128e-05 0 0 --5.685624079e-05 -9.354672942e-05 -2.208361426e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0001469367754 -7.607782849e-07 0.0001306287521 0 0 --3.914905406e-05 -6.123410465e-06 1.788057881e-05 0 0 -4.071464714e-05 2.830332656e-05 -8.541737465e-07 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0001489794554 0.0001429166798 -2.735577047e-05 0 0 -0.000116293218 2.733326086e-06 -7.764451245e-05 0 0 --0.0001135813557 -6.603452149e-05 2.621293699e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0002440783814 1.551437724e-05 0.0001856215215 0 0 --2.798957806e-05 -3.041342854e-05 1.414360754e-06 0 0 -0.0001019745184 -3.065761518e-06 -8.302210051e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.1123663332 0.06053912615 0.4204416684 0.182976618 -0.02954528104 -0.06847393973 -0.05514748607 -0.009575797574 -0.01157677416 0.05401917038 --0.1132171238 -0.003938443157 -0.06446820999 -0.04108828703 -0.030752816 -0.01372510916 0.1396599173 0.1907673429 0.1207177281 -0.07655166078 --0.01138551453 -0.2247023236 -0.08889978884 -0.101014003 0.143979112 -0.1027059682 -0.102362347 0.1275498765 0.03513451882 0.1000172894 -0.06631232123 0.1093826708 -0.03237088859 0.0349008061 -0.02634369446 --0.04986718036 0.0403101454 0.06406796489 0.04473838244 0.004798550742 -0.02214118145 0.03709627393 0.03920377434 0.03805658146 0.01164855231 -0.004781583716 -0.1087421144 0.07497995119 -0.004735946509 0.0599777053 -0.009372021185 -0.006825791113 0.01122172593 0.004069671932 0.008479820583 -0.02249636549 0.01980707502 -0.02560307353 -0.002602011426 -0.009575464633 --0.04304918642 -0.0326137647 0.04768835902 0.006443955554 0.01637321594 --0.01089204321 -0.008429973257 0.01485375914 0.002993004214 0.005261011617 --0.01641277621 -0.01585180299 0.02549773914 0.004842902719 0.009992081576 -0.01308055926 0.01054854197 -0.01620932805 -0.002601649545 -0.005864974951 -0.01339279023 0.006532643489 -0.01269424825 -0.002292475381 -0.003054900101 --0.02135064721 -0.01415983119 0.01821640822 0.001375989962 0.006010768825 --0.003132399262 -0.002538673696 0.003192883255 0.0002889592629 0.001226283718 --0.006703660534 -0.004625514021 0.007568496582 0.001252975229 0.002457981102 --0.01316047309 -0.01118712054 0.01762721214 0.00299453407 0.006337956058 --0.006299024191 -0.003898194841 0.005963424798 0.000946560994 0.002326999837 -0.009045533441 0.005892062344 -0.009577199564 -0.00144593218 -0.002785917525 -0.0006678277785 0.0001918333739 -0.0005198780027 -2.014361826e-05 0.0002198616587 -0.00236369607 0.0007824288193 -0.001408925409 -0.0001191864698 -9.518351772e-05 -0.005884844962 0.004746348469 -0.00632868528 -0.0008376541657 -0.002798954547 -0.004899958081 0.003567324627 -0.004518275961 -0.000509231827 -0.002076168647 --0.007705693042 -0.005273736209 0.008212729797 0.001179720238 0.002537987049 --0.001288081894 -0.0007090743248 0.00169551905 0.000316004933 0.0001215632663 --0.00281106362 -0.001997392367 0.002350349197 0.0002231509656 0.001200170634 --0.002287779271 -0.001970553317 0.003866430693 0.0008644413593 0.001226958285 --0.001830316168 -0.00114653223 0.001934780189 0.0003206303339 0.0005863137211 -0.00268457015 0.001625732148 -0.003081133189 -0.0005852641542 -0.0008315485402 -0.0004298381777 0.0004492909426 1.495651854e-05 0.000165042146 -0.0002466438634 -0.001056098069 0.0004224849515 -0.0007256705837 -8.379156516e-05 -0.0001334640606 -0.001383885917 0.001455751185 -0.001734622774 -0.0001951557895 -0.0008736343876 -0.001661881234 0.0006218360938 -0.002323894271 -0.0006048037295 -0.000156641144 --0.002450710762 -0.002211697047 0.00173587318 -0.0001008216201 0.001236047631 --0.0004522544853 -0.0005288421286 8.484582509e-05 -0.0001423476037 0.0003206584961 --0.001057552938 -0.0004157845213 0.001272459262 0.000297276691 0.000112631715 --0.001059976901 -0.0006268257021 0.001295363379 0.0002474042002 0.0002560729016 --0.0006427481079 -0.0005258879962 0.0005505931322 3.493715201e-05 0.0003149041469 -0.001008807093 0.0004977429992 -0.001430117147 -0.0003275039389 -0.0001321003082 -0.0001348897898 2.990377615e-05 -0.0002571871711 -7.52708352e-05 2.308522856e-05 -0.0002946998226 0.0002456191427 -0.0002509658854 -1.459321746e-05 -0.0001487923159 -0.0001515034947 0.0001042801851 1.94398166e-05 4.636715419e-05 -5.775367085e-05 -8.954235066e-05 5.572004092e-05 -0.0001185733553 -2.546990074e-05 -2.908465026e-05 --0.0001622699207 -0.0001758937006 8.48567441e-05 -2.249443491e-05 0.0001158578052 --2.405396483e-05 7.083334134e-07 7.392959133e-05 2.706728635e-05 -5.507489398e-06 --4.076624119e-05 -4.453314626e-05 8.627381269e-05 2.002293156e-05 2.943326217e-05 -0.0001346594481 0.0001693282382 -7.527979637e-05 2.683638199e-05 -0.0001004131084 -0.000115616758 1.605641387e-05 -0.0001935559742 -5.994895444e-05 1.521392681e-05 --0.0001706772142 -0.0001707237144 8.593091486e-05 -2.69159744e-05 9.294161912e-05 --2.546457974e-05 -9.207857977e-06 4.00401171e-05 1.077734608e-05 1.094257305e-06 --5.411345564e-05 -4.137009171e-05 5.476011959e-05 5.511482385e-06 1.944228947e-05 --7.492842595e-05 4.282447386e-05 0.0001303088151 5.286571483e-05 -5.499729622e-05 -5.905763743e-06 -5.723947173e-05 -7.403841757e-05 -4.144248986e-05 5.073381995e-05 --1.031092507e-06 -7.424275954e-05 -0.0001317608119 -6.869610442e-05 6.429179601e-05 --7.909501985e-06 -1.577315438e-05 -1.625857092e-05 -1.08220554e-05 1.172348181e-05 --1.617091327e-05 -2.442500367e-06 2.852243981e-06 -1.170047014e-06 -1.676056354e-06 --5.834696353e-05 1.467161989e-05 0.0001388405269 5.071629728e-05 -3.029660459e-05 --3.071892278e-05 -6.5684951e-05 -2.434252559e-05 -2.796917469e-05 4.827529585e-05 -5.132970649e-05 -4.50905628e-05 -0.0001874162046 -7.726520555e-05 5.564736584e-05 -7.562844849e-06 -6.961444875e-06 -2.658850907e-05 -1.105910393e-05 8.43919995e-06 -1.550842988e-05 2.499695272e-05 4.006838952e-06 9.034693808e-06 -1.728620385e-05 -0.1594413204 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.02356952288 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.003190208968 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.004775249754 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.001617809155 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --4.997081061e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.000112192263 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -3.909641606e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0001514092558 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.115166873e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -2.330188994e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.836172476e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.255456504e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.09828580939 -0.0115830422 0.06522289103 0 0 -0.05638093077 0.01885007328 -0.02821150853 0 0 --0.08798629881 -0.02820979295 0.0449361075 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.06939721644 0.02657549823 -0.03217876888 0 0 -0.03076799193 0.01065773753 -0.01511505583 0 0 --0.04804151532 -0.01511182846 0.02475414123 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.005603271146 -0.002453552566 0.002367179368 0 0 --0.001681478129 -0.0003953900093 0.0009674788897 0 0 -0.002612107681 0.000968307252 -0.001235874075 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.002665206866 0.0001267392796 -0.001910281762 0 0 -0.001752106698 0.0004982234034 -0.0009428684008 0 0 --0.002728011337 -0.0009433870239 0.001341576103 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.00152678829 -0.000263471622 0.0009499229808 0 0 --0.0004490595534 -0.0002032043741 0.0001845785546 0 0 -0.0007046157497 0.0001842748437 -0.0003911158127 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.992766459e-05 1.133983357e-05 -6.417816721e-06 0 0 -6.832523433e-06 1.480284006e-05 6.032135381e-06 0 0 --1.156246237e-05 6.128840354e-06 1.330923201e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0003841020503 0.0001919848107 -0.0001441977575 0 0 -0.0001571743785 6.555958327e-05 -6.881076492e-05 0 0 --0.000246211264 -6.873037542e-05 0.0001334097862 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0001886766107 -0.0001188724142 5.234848383e-05 0 0 --2.725382996e-05 -9.291077972e-06 1.350487436e-05 0 0 -4.253970645e-05 1.34945692e-05 -2.183934738e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0001411026735 -1.806940577e-05 9.253272575e-05 0 0 --3.798488376e-05 -1.705657702e-05 1.571434224e-05 0 0 -5.959279593e-05 1.568641823e-05 -3.300477137e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.283323145e-06 -1.444958918e-05 -9.179920067e-06 0 0 -6.21592102e-06 2.194885838e-06 -3.023049824e-06 0 0 --9.707603677e-06 -3.019730181e-06 5.028995934e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.981027212e-06 1.494312527e-05 9.779245751e-06 0 0 -1.24942794e-05 4.926783315e-06 -5.685736691e-06 0 0 --1.955267635e-05 -5.680238317e-06 1.042865323e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --4.956919506e-05 -2.227258983e-05 2.050644291e-05 0 0 --8.158546118e-06 -2.525868448e-06 4.234993435e-06 0 0 -1.271699446e-05 4.235471253e-06 -6.376206078e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.159044238e-05 -5.588965206e-06 1.95560585e-05 0 0 --5.32057158e-06 -2.02328114e-06 2.477719021e-06 0 0 -8.321221334e-06 2.475888302e-06 -4.394296295e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.1156705693 -0.07979050032 0.1245234464 0.01847166303 0.03996796295 --0.01646867521 -0.008494431961 0.01219222194 0.003826448873 0.01214769465 -0.01446883453 0.01219221144 -0.01984894588 -0.001387209568 -1.650594287e-05 --0.008300180703 -0.005696325355 0.008879007772 0.001337666867 0.002933792881 --0.01812306742 -0.01240641365 0.01932652554 0.002933784043 0.00647622505 -0.008819283331 0.005998282844 -0.009329405619 -0.001443996314 -0.003239618216 -0.02408289887 0.01724274834 -0.0271436137 -0.003582736418 -0.00690152812 --0.04020443325 -0.02714362412 0.042142113 0.006666547665 0.0152207102 --0.009001341166 -0.006179706376 0.009633280759 0.001449755641 0.003176709298 --0.01964683848 -0.01345852339 0.02096885098 0.003176700524 0.007000484423 -0.003646874272 0.002508068086 -0.003911352469 -0.0005855395286 -0.001277183391 -0.002845372334 0.001962304461 -0.003062261588 -0.0004545737758 -0.0009841978289 --0.004454167026 -0.003062262082 0.00477524764 0.0007155779741 0.001562175048 --0.0007212295366 -0.0004957219876 0.0007729744683 0.0001159211152 0.0002532371569 --0.001572304411 -0.001079433387 0.001682681376 0.0002532367412 0.0005548978449 --0.002313469189 -0.001595187315 0.002489251041 0.0003697191266 0.0008008721259 --0.0006249602704 -0.0003860731642 0.0005857920191 0.0001186019813 0.0003174050486 -0.0008008176344 0.0005857919679 -0.0009266033878 -0.0001139466569 -0.0002014933508 --4.08276121e-05 -2.778390936e-05 4.321951453e-05 6.678212854e-06 1.496193834e-05 --8.99209273e-05 -6.058576522e-05 9.401620161e-05 1.496189527e-05 3.432069685e-05 -0.0002142596131 0.0001474820298 -0.0002300475059 -3.434747851e-05 -7.47457038e-05 -0.000155377703 0.0001069434069 -0.0001668109097 -2.491169288e-05 -5.422298145e-05 --0.0002423896884 -0.0001668109028 0.0002601846882 3.887114155e-05 8.463564094e-05 --3.746579003e-05 -2.579464476e-05 4.023748687e-05 6.003679775e-06 1.30573291e-05 --8.153413688e-05 -5.615432548e-05 8.760322002e-05 1.30573349e-05 2.837231194e-05 --3.786094723e-05 -2.60513384e-05 4.063218899e-05 6.073417234e-06 1.322967008e-05 --2.460429269e-05 -1.67552252e-05 2.606810024e-05 4.019717514e-06 8.990569934e-06 -3.767405757e-05 2.606811089e-05 -4.071247854e-05 -5.982743396e-06 -1.283682265e-05 -5.390998184e-06 3.704350244e-06 -5.77576987e-06 -8.669132828e-07 -1.895221728e-06 -1.175596215e-05 8.066534796e-06 -1.257297e-05 -1.895212766e-06 -4.158559672e-06 -5.038935966e-05 3.44355772e-05 -5.362106841e-05 -8.18180926e-06 -1.81398882e-05 -8.902467362e-05 6.314212815e-05 -9.918488348e-05 -1.349330149e-05 -2.685796596e-05 --0.0001462597044 -9.918491806e-05 0.0001541572153 2.406888654e-05 5.43819692e-05 --3.090491967e-05 -2.120911507e-05 3.305896475e-05 4.980924143e-06 1.092504847e-05 --6.748147614e-05 -4.619295929e-05 7.195777161e-05 1.092501937e-05 2.411990146e-05 --0.0001575967506 -0.000108478743 0.0001692087168 2.526412846e-05 5.497932736e-05 --8.706673884e-05 -5.857448313e-05 9.08615711e-05 1.452382375e-05 3.34301068e-05 -0.0001304840775 9.08615947e-05 -0.0001421180156 -2.048127534e-05 -4.316539391e-05 -1.597070651e-05 1.097064392e-05 -1.710400043e-05 -2.569633051e-06 -5.622227705e-06 -3.483799666e-05 2.389056175e-05 -3.723196548e-05 -5.622207853e-06 -1.235530572e-05 --1.554233994e-05 -1.068927726e-05 1.667013731e-05 2.495329219e-06 5.442388552e-06 --8.392294469e-06 -5.609394406e-06 8.687450932e-06 1.41520204e-06 3.304665324e-06 -1.243284685e-05 8.687453249e-06 -1.359919345e-05 -1.939008256e-06 -4.045456281e-06 -1.485139219e-06 1.015710759e-06 -1.581898505e-06 -2.408183055e-07 -5.328805326e-07 -3.254334719e-06 2.213281675e-06 -3.442382128e-06 -5.328785837e-07 -1.195646373e-06 -1.300588327e-05 8.927869701e-06 -1.391687161e-05 -2.095178754e-06 -4.592410494e-06 -1.51102206e-05 1.061060081e-05 -1.662884542e-05 -2.334717555e-06 -4.798716754e-06 --2.440379034e-05 -1.662885065e-05 2.587530883e-05 3.98271635e-06 8.894400942e-06 --4.667884429e-06 -3.207526748e-06 5.001149988e-06 7.506085028e-07 1.640886833e-06 --1.017892307e-05 -6.984643725e-06 1.088675333e-05 1.640882439e-06 3.600204504e-06 --2.860170359e-05 -1.971031201e-05 3.07533069e-05 4.575552768e-06 9.926481615e-06 --1.071863699e-05 -6.948192543e-06 1.067804425e-05 1.897732821e-06 4.707692383e-06 -1.502538361e-05 1.067804524e-05 -1.678088871e-05 -2.268576268e-06 -4.485575985e-06 -7.579905255e-07 5.233972385e-07 -8.17025981e-07 -1.208240586e-07 -2.607180994e-07 -1.644515825e-06 1.138948037e-06 -1.779165574e-06 -2.607172604e-07 -5.579872143e-07 --2.949187417e-05 -2.03036353e-05 3.167156762e-05 4.726358456e-06 1.028075928e-05 --1.500551823e-05 -1.002131437e-05 1.551713481e-05 2.533882369e-06 5.927586382e-06 -2.219709092e-05 1.551713829e-05 -2.429280451e-05 -3.458936658e-06 -7.207002089e-06 -2.443943193e-06 1.678390529e-06 -2.616575183e-06 -3.933934381e-07 -8.61274304e-07 -5.3324907e-06 3.65512645e-06 -5.695657066e-06 -8.612713824e-07 -1.894979837e-06 --5.70696191e-06 -3.938371956e-06 6.146959075e-06 9.106616739e-07 1.968194424e-06 -1.154596931e-07 2.603385427e-07 -4.734071994e-07 5.700560574e-08 3.67244859e-07 --8.946757156e-07 -4.734082155e-07 6.85423273e-07 2.028898801e-07 6.330301139e-07 --8.02619045e-07 -5.517532383e-07 8.603769565e-07 1.289650861e-07 2.816120146e-07 --1.749439421e-06 -1.201413285e-06 1.872969131e-06 2.816111597e-07 6.165753199e-07 -0.07614740613 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.01263065168 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.004732153038 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0001089552317 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --7.551387115e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0002128419036 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0001190822088 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.000179441317 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0001949670829 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0001047556525 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --5.068142775e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.670771097e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.4778873e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.01833006226 0.03856645427 0.04335359021 0 0 --0.04891571433 0.02700657281 0.05135440568 0 0 --0.09304390474 0.05344457686 0.106240845 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.01930924747 0.02412415929 0.03301800468 0 0 -0.003114551669 -0.002929737828 -0.008158600368 0 0 -0.00991636965 -0.006859514482 -0.01514864754 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.001056158088 0.002837865771 0.002905010184 0 0 -0.0007988356083 2.064443618e-05 -0.0002431928114 0 0 -0.001290661701 -0.0003630416524 -0.001005945387 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.862644641e-06 0.0006871555222 0.0005434743857 0 0 --0.0002060450188 -3.611201617e-05 -0.000139849627 0 0 --0.0001529809761 -4.278462145e-05 -0.0001039061894 0 0 -0 0 0 0 0 -0 0 0 0 0 -6.561294424e-05 0.0005512996004 0.0003608337171 0 0 --6.422882474e-05 0.0001527432197 0.0002271435379 0 0 --0.0001890362041 0.0002048906472 0.0003411122743 0 0 -0 0 0 0 0 -0 0 0 0 0 -4.546066974e-05 1.53877532e-05 -2.165517941e-05 0 0 --0.0001672562349 7.482616446e-05 0.0001709884878 0 0 --0.0003279763364 0.0001751702285 0.0003709594097 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0002260801349 0.0002215852314 0.0003378671661 0 0 --5.936403708e-06 1.154326045e-05 4.51687901e-06 0 0 --2.563898832e-06 7.61627691e-06 1.633822094e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.00026279224 0.0001559380734 0.0003152657979 0 0 -7.573015861e-05 -4.229184852e-05 -8.877109903e-05 0 0 -0.0001530105959 -8.874382474e-05 -0.0001819599326 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0001938889773 0.0001487326058 0.0002576861567 0 0 -6.970184628e-05 -3.810964709e-05 -7.746360293e-05 0 0 -0.0001371868822 -7.872740712e-05 -0.0001599783373 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0001089739959 6.693488011e-05 0.000132446744 0 0 -2.805366797e-05 -1.743725979e-05 -3.422779784e-05 0 0 -5.664937291e-05 -3.424880851e-05 -6.842340183e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --5.758054839e-05 3.558925545e-05 7.023482319e-05 0 0 -1.91925318e-06 -1.716418698e-06 -3.726560633e-06 0 0 -4.892447174e-06 -3.388178066e-06 -6.924996766e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 --5.912513402e-05 3.655727593e-05 7.198874654e-05 0 0 -6.842266676e-06 -3.05924535e-06 -6.808657547e-06 0 0 -1.320265577e-05 -7.029201876e-06 -1.478195711e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --5.859616321e-05 3.692345151e-05 7.187548711e-05 0 0 -9.282005352e-06 -5.425932966e-06 -1.053120629e-05 0 0 -1.820033687e-05 -1.07202181e-05 -2.139631372e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.007671771138 0.07491983111 0.1349681042 0.05107617121 -0.07144958578 --0.0178200798 -0.003148138953 -0.004876065944 0.01594317719 0.03057995706 --0.01316891154 -0.0008753446042 -0.007008627443 -0.009720748589 0.03090626523 --0.002785719483 0.02713411237 0.05649784505 0.02712402217 -0.03442044302 -0.0041733038 -0.04206216033 -0.078997559 -0.03217744055 0.04393996162 --0.0007308168857 0.009005706704 0.01054424027 2.448166041e-06 -0.002605294117 --0.009183424371 -0.004944882316 -0.009575207257 0.002500944138 0.02119117226 --0.00648485094 -0.008413712096 -0.01852164856 -0.009015395312 0.02464135833 -0.0004313663112 -0.004530651112 -0.007349231732 -0.001673746782 0.00336444975 -0.0001457930434 -0.001159884439 0.004216292681 0.00581467014 -0.005916470521 -0.0003474155574 0.0001304264851 0.0001030196166 -0.0001837748376 -0.0005868103567 --0.0033405183 -3.882807224e-05 0.0002925681079 0.001588360277 0.005278246474 --0.002662964106 0.0002954308281 0.000885219362 0.001534430852 0.003771040037 --9.566875227e-05 0.0002069924598 0.0004778036294 0.0002954093495 -0.0001912485002 --0.0002652514094 -0.0005101745439 -0.0008093641895 -0.0001182757546 0.0009013378593 --1.27265328e-05 0.0002566546565 0.0001977604356 -0.0001133716874 2.630459337e-05 --0.0002000629221 -5.238541215e-06 1.019982408e-05 0.0002771828112 0.0002837994304 --0.0001509759421 8.476535845e-05 6.868204957e-05 -0.0001408551599 0.0002853769341 --5.304349063e-06 -2.449362179e-05 -1.221388753e-05 3.179696912e-05 -1.239327717e-06 --1.815313206e-05 -0.0001144960167 -9.576448708e-05 5.070722158e-05 3.696642816e-05 -3.454645815e-05 0.0001097460505 0.0001972596097 5.771727509e-05 -0.0001814622022 --0.0006608867818 2.834909483e-05 0.0001308112107 0.0003457876927 0.0009947999613 --0.0005312796461 0.0001312086624 0.0003225153877 0.0003699467294 0.0006533920064 --1.67775278e-05 0.0001227337266 0.0002568889022 0.0001258454929 -0.0001501666051 --1.222632016e-07 -0.0001960441128 -0.0003635638398 -0.0001381362828 0.0002327448127 --6.263832423e-06 0.0001692792897 0.000340780606 0.000149466106 -0.0002198666301 --2.15012173e-05 2.78053401e-05 6.007469375e-05 3.933483201e-05 -6.708110941e-06 --2.081988643e-05 6.146471533e-05 0.0001250537457 5.899409896e-05 -4.928995968e-05 --1.554605553e-05 0.0001145421927 0.0002299031683 0.0001041532572 -0.0001288485785 --1.996793639e-06 -0.0001440113286 -0.0002966472686 -0.0001313192308 0.0002068172388 --1.39764138e-05 0.0001538612534 0.000286946633 0.0001149878386 -0.000160643566 --5.721683116e-05 -9.969708033e-05 -0.0001946061879 -5.553500509e-05 0.0002247600062 --3.365814015e-05 -0.000192358583 -0.0003867993223 -0.0001607286526 0.0003194470348 -4.009126977e-06 -3.005513604e-05 -5.320898062e-05 -1.768170709e-05 2.561466302e-05 -2.919175438e-06 9.724642627e-06 4.708474538e-05 3.588467995e-05 -4.852728664e-05 --1.068802829e-06 8.21695632e-05 0.0001662938363 7.269997417e-05 -0.0001110119836 --1.706243472e-05 -9.742529127e-05 -0.0001921619832 -7.134602254e-05 0.0001564296489 --1.745574598e-06 -0.0001908398719 -0.0003840939276 -0.0001685395379 0.0002633166973 -2.44307272e-06 -4.789922689e-05 -9.900455304e-05 -4.5973865e-05 6.408219917e-05 --1.717080977e-05 7.13068344e-05 0.0001362391628 6.099001606e-05 -6.007897194e-05 --5.203992019e-06 4.594925962e-05 9.364463179e-05 4.31000228e-05 -5.504180346e-05 --1.564269631e-05 -4.9781056e-05 -9.818549542e-05 -3.521257328e-05 9.187683612e-05 --6.311416655e-06 -9.815150463e-05 -0.0001965239928 -8.194892117e-05 0.0001430922669 -2.955861048e-06 -2.270310754e-05 -4.63391065e-05 -2.162530478e-05 2.664769782e-05 --5.853636697e-07 3.15640461e-05 6.211512202e-05 2.620369538e-05 -4.04097404e-05 --3.191128464e-06 3.732518508e-05 7.410924619e-05 3.258436696e-05 -4.429351345e-05 --3.271678947e-07 -2.650717358e-05 -5.336574794e-05 -2.261972582e-05 3.657682e-05 -3.036598499e-06 -5.323382175e-05 -0.0001076332326 -4.821185771e-05 6.792519277e-05 -5.94654028e-07 -7.762221869e-06 -1.527977522e-05 -6.506103201e-06 9.159935238e-06 --1.616377091e-06 8.548904248e-06 1.877856588e-05 9.625910185e-06 -1.063619102e-05 --3.661933049e-06 3.667512485e-05 7.240770854e-05 3.175842822e-05 -4.217506314e-05 -1.535379294e-06 -1.517317733e-05 -3.051535052e-05 -1.303929628e-05 1.789145596e-05 -3.059885965e-06 -3.016123054e-05 -6.139631612e-05 -2.900295371e-05 3.683739633e-05 --2.866550918e-07 2.765994245e-06 5.849500643e-06 2.884512531e-06 -3.608917152e-06 -4.407311085e-07 -4.646497319e-06 -8.445783164e-06 -3.266942518e-06 4.580341149e-06 --2.711859009e-06 3.09797313e-05 6.252047583e-05 2.810265138e-05 -3.776924478e-05 --1.485406919e-06 -1.415955788e-05 -2.813005971e-05 -1.08943029e-05 2.126975183e-05 -5.647614123e-07 -2.793534607e-05 -5.63895765e-05 -2.511150191e-05 3.733653063e-05 --3.449227929e-07 2.236969532e-06 4.264128912e-06 1.747503006e-06 -2.18361345e-06 --3.144852292e-07 -1.923599931e-06 -4.818286632e-06 -2.519105558e-06 4.18963973e-06 --2.868279977e-06 2.733081279e-05 5.501657553e-05 2.483271749e-05 -3.236529464e-05 -1.023467503e-06 -2.05501494e-05 -4.138593935e-05 -1.796505687e-05 2.620537778e-05 -3.368654408e-06 -4.126981817e-05 -8.348006849e-05 -3.781182966e-05 5.099309753e-05 -6.803436706e-07 -6.202788591e-06 -1.260747233e-05 -5.795560747e-06 7.434455733e-06 --6.292047591e-07 8.410350116e-06 1.673661039e-05 7.345584386e-06 -1.017330681e-05 -0.3673386338 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.2314140214 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.03442418421 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.01160204821 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.03508483064 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.01681797871 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.007487102887 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.001940971808 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.001726239089 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.00121295683 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.399662533e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0002978992511 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --9.044267344e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.03718151328 -0.1311011877 0.2272079377 0 0 -0.08002679556 0.2976743988 0.06337280436 0 0 --0.3199807205 0.07670909525 0.4210254085 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.1589063199 -0.04151390146 0.06709199826 0 0 -0.2022619632 0.1167786995 -0.1378997289 0 0 --0.1481551195 -0.08454422094 0.1372898224 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.1430456946 0.05140619626 -0.08609556878 0 0 -0.07019129313 0.0185447255 -0.03300101465 0 0 --0.120254043 -0.03505483536 0.05697535865 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.03108597681 -0.01283096049 0.02614947142 0 0 --0.00785571861 0.002055870642 0.00326036307 0 0 -0.01295710929 0.001196371213 -0.003749793313 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0229277464 0.007822858886 -0.01354912509 0 0 -0.01453550675 0.003054254493 -0.007891106612 0 0 --0.02256867545 -0.007282530811 0.01058885602 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.005756467611 -0.001382929262 0.003566595368 0 0 --0.001918492511 -0.0003720948225 0.001069811046 0 0 -0.002725575834 0.0006310973076 -0.001462096284 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.001334243833 -0.0005374996216 0.001332197721 0 0 --0.0002778562239 0.0007004465353 0.0004888688384 0 0 --0.0009600300224 3.728505646e-05 0.001051786821 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.005692655079 0.002151385454 -0.002883153369 0 0 -0.002263586836 0.000394630937 -0.001330189821 0 0 --0.002991404355 -0.001160347756 0.001284315401 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.003313282193 -0.0007295938614 0.001826579772 0 0 --0.0004909055187 -0.0004018002507 0.0001058265332 0 0 -0.001343068471 0.0001400834049 -0.0009527181075 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0002744024551 0.0002341138874 -3.010716024e-06 0 0 -0.0001257187851 6.72754958e-05 -5.306040246e-05 0 0 --0.0001802265532 -0.000121365583 5.526816686e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0002137013901 -7.588805782e-05 0.0001442759983 0 0 --8.077523619e-05 -8.548938087e-06 4.061211611e-05 0 0 -7.299357484e-05 6.291619952e-05 9.154289825e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0003801569265 0.0002123640582 -0.0001712907381 0 0 -0.0002199705392 1.284145841e-05 -0.0001404596323 0 0 --0.0002426840275 -0.0001151163865 7.715621646e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0004003352538 -3.520747058e-05 0.0002555071144 0 0 --6.738536817e-05 -5.002125068e-05 1.946338677e-05 0 0 -0.0001763595036 1.403598933e-05 -0.0001299669981 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.2437405931 -0.1467137087 0.5598180798 0.1710348506 0.09648572316 -0.1358285903 -0.09865813668 -0.008706411765 -0.01565108702 0.1006427167 --0.2214963244 0.01256505937 -0.1065350789 -0.06650741833 -0.07244836526 -0.01683212507 0.1529053807 0.2522892515 0.1507053684 -0.07971878183 --0.009046078858 -0.2825596915 -0.01304756676 -0.08477257721 0.1905465071 -0.2098633783 -0.1790651724 0.2535415155 0.08047292917 0.1939532669 -0.1187240549 0.1787188282 -0.067212703 0.05059777118 -0.04670523722 --0.1225660374 0.004856637179 0.1194364759 0.05140294869 0.02002646133 -0.03572600194 0.04876371527 0.07504325996 0.06300753778 0.02641478643 -0.01980821754 -0.182441874 0.1507526871 0.006410006343 0.1137168954 -0.01848944701 -0.01343542441 0.02211431748 0.008028769799 0.01671175318 -0.04628698746 0.04201595305 -0.05161504556 -0.004290785478 -0.01962182065 --0.08094961186 -0.05829451286 0.09170488279 0.0143987257 0.03077239193 --0.01959379928 -0.01374112596 0.02817589562 0.006713418218 0.009649406417 --0.03481756686 -0.03502073525 0.05171585063 0.008481797923 0.02064441182 -0.02579482843 0.02085979386 -0.03191683627 -0.005087177347 -0.01157900812 -0.02644960178 0.01325859093 -0.02480164709 -0.004273949939 -0.006121856181 --0.04199477317 -0.027145964 0.0363634102 0.003208568661 0.01164848453 --0.006125514005 -0.004605371751 0.006529205554 0.0008273641696 0.002313007098 --0.01328054313 -0.009641936934 0.01461272149 0.002132389067 0.004982517996 --0.02580307432 -0.02194215366 0.03447872833 0.005876526366 0.01256203337 --0.01227990112 -0.007575559338 0.01149140949 0.001839827173 0.004653287463 -0.01811090474 0.01183637295 -0.01941548769 -0.002903454312 -0.005358968972 -0.001519885897 0.0005393230811 -0.001415346559 -7.835767617e-05 0.0005305779684 -0.004393296249 0.001331303916 -0.002265868974 -0.0001843199012 -0.000314942445 -0.01157084156 0.009205776805 -0.01279429417 -0.001769326052 -0.005248739771 -0.009654119073 0.007004881791 -0.008965523649 -0.001025508859 -0.004043625878 --0.01520215108 -0.01045250759 0.01607267767 0.002281990856 0.005102982375 --0.002559811466 -0.001499635158 0.003128297926 0.0005434910269 0.0004208934268 --0.005514811602 -0.003804258594 0.004914151832 0.0005440603758 0.002128494936 --0.004539672127 -0.004324579616 0.007118299295 0.001380415554 0.002716898126 --0.003587558084 -0.00195249577 0.004166771189 0.0008585896898 0.0009472827078 -0.005334148099 0.00382694063 -0.005361516914 -0.0006960020075 -0.002060826218 -0.0008526754499 0.0009645258706 0.0001197616489 0.0003833573182 -0.0005396326965 -0.002075030078 0.0007296200671 -0.001548872405 -0.0002411824224 -0.0001931302588 -0.002767654678 0.002685433243 -0.003753196169 -0.0005591195055 -0.001571636303 -0.003231266624 0.001435762192 -0.004201617176 -0.0009938176539 -0.0004802398255 --0.004922115158 -0.0039359144 0.004189406858 0.000202386493 0.002090233936 --0.0009153622188 -0.0009314168297 0.0003682988536 -0.0001755252813 0.000541363454 --0.002053661758 -0.0009652991965 0.002245071538 0.0004483293983 0.0003409939091 --0.002083478459 -0.001304817997 0.002419814771 0.0004255055537 0.0005837901848 --0.001273411063 -0.0009657635639 0.001222875027 0.0001327718017 0.0005396997333 -0.001975997073 0.001124663583 -0.002541525874 -0.0005164958566 -0.0004243223897 -0.0002628776034 9.317294681e-05 -0.00044073377 -0.0001175741209 6.40186485e-06 -0.0005849525072 0.0004393666433 -0.0005816035465 -6.914652929e-05 -0.0002420801618 -0.0002924086724 0.000119183707 -7.423080972e-05 2.649738105e-05 -4.210181351e-05 -0.0001810729285 0.000172618718 -0.0001519713178 -3.047051596e-06 -0.000109472873 --0.0003106992398 -0.0002198858451 0.0003325718324 5.097577666e-05 0.0001230305986 --4.613469183e-05 1.912092473e-05 0.0001688355002 6.667713073e-05 -2.557837872e-05 --8.204961883e-05 -0.0001110179036 0.0001398194464 2.202229519e-05 7.731446124e-05 -0.0002708026762 0.0002486316072 -0.0002774852997 -1.864701992e-05 -0.0001297965938 -0.0002256454742 6.803305449e-05 -0.0003264436191 -8.762292507e-05 8.832934537e-07 --0.0003410772943 -0.0002630364716 0.0002808226115 8.700718261e-06 0.000124392238 --4.975149653e-05 -2.531735787e-05 6.807644977e-05 1.52274675e-05 7.89038037e-06 --0.0001072666924 -7.216722121e-05 0.0001221813611 1.87522237e-05 3.081552898e-05 --0.0001420046438 2.057973121e-05 0.0001508712061 4.872048333e-05 -5.168472021e-05 -9.096644617e-06 -8.436553275e-05 -9.867247905e-05 -5.69459111e-05 7.47105498e-05 --7.178051497e-06 -8.881049179e-05 -0.0001641841036 -8.53988686e-05 7.560038539e-05 --1.521683259e-05 -3.529856238e-05 -3.903232317e-05 -2.498855172e-05 2.684711711e-05 --3.237155707e-05 6.932677529e-07 1.476994655e-05 2.48171036e-06 -8.199279167e-06 --0.0001136650895 -2.822474555e-05 0.0001856659126 5.28730142e-05 -8.97563605e-06 --6.158199281e-05 -8.646766045e-05 1.829183464e-05 -1.967366798e-05 5.696278421e-05 -9.912257653e-05 -1.939698415e-06 -0.0002355129673 -8.064396522e-05 3.248509125e-05 -1.459599688e-05 -5.516505487e-07 -3.212341503e-05 -1.094379064e-05 4.939437091e-06 -3.098357231e-05 3.201813227e-05 -1.869231778e-05 3.582738569e-06 -1.874953768e-05 diff --git a/tests/09_DeePKS/100_NO_KP_deepks_UT/gdmx_ref.dat b/tests/09_DeePKS/100_NO_KP_deepks_UT/gdmx_ref.dat deleted file mode 100644 index 389ec8c691..0000000000 --- a/tests/09_DeePKS/100_NO_KP_deepks_UT/gdmx_ref.dat +++ /dev/null @@ -1,5265 +0,0 @@ -0.07177091081 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.01648409288 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.001149302688 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.00545263498 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0002274718938 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0002901754975 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -3.428506344e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -2.748893714e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0001151255588 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.246489503e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.34212332e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --6.88102626e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.283100556e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.02443725839 -0.05130086574 -0.01612650001 0 0 --0.05130086574 -0.1244180097 0.03782827061 0 0 --0.01612650001 0.03782827061 0.08000161411 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.01345523391 -0.006282783186 -0.01130739462 0 0 --0.006282783186 0.1084932016 0.1034470026 0 0 --0.01130739462 0.1034470026 0.09659199597 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0006738121119 -0.001741564482 -0.0006576242685 0 0 --0.001741564482 0.04161995947 0.03029897949 0 0 --0.0006576242685 0.03029897949 0.0214230308 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0007305686172 0.0001568641306 9.652913518e-05 0 0 -0.0001568641306 -0.009387947133 -0.009928361942 0 0 -9.652913518e-05 -0.009928361942 -0.01001733217 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0002122449972 0.0004490336403 0.0004917163813 0 0 -0.0004490336403 -0.01574395357 -0.01130973397 0 0 -0.0004917163813 -0.01130973397 -0.008214312908 0 0 -0 0 0 0 0 -0 0 0 0 0 -7.101074067e-06 -0.0001086208112 -8.755086884e-05 0 0 --0.0001086208112 0.002881807975 0.002275656136 0 0 --8.755086884e-05 0.002275656136 0.001797828931 0 0 -0 0 0 0 0 -0 0 0 0 0 -7.240219443e-05 -0.0001152739283 -0.0001336750727 0 0 --0.0001152739283 0.002669411554 0.002366416977 0 0 --0.0001336750727 0.002366416977 0.002080440504 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.185057269e-05 -3.185082057e-05 8.838562717e-06 0 0 --3.185082057e-05 0.0004743042283 0.0001645863868 0 0 -8.838562717e-06 0.0001645863868 -6.430377497e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.7911985e-05 3.566177734e-05 4.071466126e-05 0 0 -3.566177734e-05 -0.001385923871 -0.0009637936025 0 0 -4.071466126e-05 -0.0009637936025 -0.0006761010728 0 0 -0 0 0 0 0 -0 0 0 0 0 -2.727452856e-06 -7.442875249e-06 -2.530757077e-06 0 0 --7.442875249e-06 0.0001784532906 8.830650653e-05 0 0 --2.530757077e-06 8.830650653e-05 2.550409462e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -5.666128141e-06 -1.130192035e-05 -8.72348374e-06 0 0 --1.130192035e-05 4.995306478e-05 0.0001035015655 0 0 --8.72348374e-06 0.0001035015655 0.0001247981286 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.467278814e-06 -8.427604842e-06 9.352956936e-07 0 0 --8.427604842e-06 8.904269395e-05 5.098812207e-05 0 0 -9.352956936e-07 5.098812207e-05 1.724610922e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.389394698e-06 -5.675719852e-07 3.214901526e-06 0 0 --5.675719852e-07 -0.0001186224437 -7.015801926e-05 0 0 -3.214901526e-06 -7.015801926e-05 -4.248279322e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.005870095214 -0.02316275722 -0.01393211683 0.01205339861 0.02863253715 --0.02316275722 -0.03957593219 0.02817692732 -0.0005919498728 0.02124051808 --0.01393211683 0.02817692732 0.008395399819 0.01349554921 -0.01478264904 -0.01205339861 -0.0005919498728 0.01349554921 -0.01422392067 -0.03768348436 -0.02863253715 0.02124051808 -0.01478264904 -0.03768348436 -0.03164090146 -0.01914999723 -0.001459339216 -0.009325683601 -0.003176298564 -0.01348197742 --0.001459339216 -0.008321376752 0.003748631023 -0.001333304196 0.002780273783 --0.009325683601 0.003748631023 0.009096628924 0.004404888695 -0.003367607159 --0.003176298564 -0.001333304196 0.004404888695 -0.001202624229 -0.0008623900091 --0.01348197742 0.002780273783 -0.003367607159 -0.0008623900091 0.02439088349 -0.001270720472 0.0003501210569 -0.0006607287495 -0.0003670307218 -0.001141568929 -0.0003501210569 8.557467754e-05 -0.0002902499668 -9.925732888e-05 -0.0001348775962 --0.0006607287495 -0.0002902499668 0.0007267631541 0.0001468446133 7.317959313e-05 --0.0003670307218 -9.925732888e-05 0.0001468446133 0.0001070323042 0.0003980045714 --0.001141568929 -0.0001348775962 7.317959313e-05 0.0003980045714 0.001706371631 -7.617775118e-05 -0.0004012986114 -0.000127893831 0.000175156631 0.0003606369696 --0.0004012986114 -0.0006421103421 0.0004883144594 -2.822277978e-06 0.0003339141459 --0.000127893831 0.0004883144594 4.215754667e-05 0.0001922806185 -0.0002630718554 -0.000175156631 -2.822277978e-06 0.0001922806185 -0.0002125519125 -0.0005450163376 -0.0003606369696 0.0003339141459 -0.0002630718554 -0.0005450163376 -0.0003161769484 -2.437999151e-05 1.842442277e-05 -3.651350874e-05 -2.539405593e-06 6.46594627e-06 -1.842442277e-05 1.040721144e-05 -2.031863442e-05 -3.459897435e-06 -3.79019002e-06 --3.651350874e-05 -2.031863442e-05 3.759496275e-05 7.181785091e-06 1.147522517e-05 --2.539405593e-06 -3.459897435e-06 7.181785091e-06 -4.282738286e-07 -4.77548034e-06 -6.46594627e-06 -3.79019002e-06 1.147522517e-05 -4.77548034e-06 -2.474178081e-05 --1.185688115e-05 -4.611331139e-06 4.386215606e-06 4.694965079e-06 1.430140702e-05 --4.611331139e-06 -3.384770374e-06 4.278219855e-06 8.5863323e-07 2.817772272e-06 -4.386215606e-06 4.278219855e-06 -5.436137236e-06 -2.419320587e-07 -1.391351519e-06 -4.694965079e-06 8.5863323e-07 -2.419320587e-07 -2.244237456e-06 -7.251546846e-06 -1.430140702e-05 2.817772272e-06 -1.391351519e-06 -7.251546846e-06 -2.114194402e-05 -7.642391075e-05 -6.439197457e-07 -3.05078131e-05 -1.730573491e-05 -6.767431733e-05 --6.439197457e-07 -2.330222315e-05 8.911358891e-06 -5.051400826e-06 5.129653234e-06 --3.05078131e-05 8.911358891e-06 3.126167117e-05 1.329964863e-05 -1.071851627e-05 --1.730573491e-05 -5.051400826e-06 1.329964863e-05 -2.192906667e-07 9.694655134e-06 --6.767431733e-05 5.129653234e-06 -1.071851627e-05 9.694655134e-06 0.0001172086022 --4.350653622e-05 -2.205038125e-05 1.072914242e-05 2.108051069e-05 6.428923447e-05 --2.205038125e-05 -2.177532024e-05 2.171881737e-05 2.934506159e-06 1.584905231e-05 -1.072914242e-05 2.171881737e-05 -1.611691459e-05 2.872070557e-06 -7.90136353e-06 -2.108051069e-05 2.934506159e-06 2.872070557e-06 -1.215239445e-05 -3.784648526e-05 -6.428923447e-05 1.584905231e-05 -7.90136353e-06 -3.784648526e-05 -9.405385039e-05 --8.721684272e-06 -2.638569795e-06 6.1922273e-07 4.104239352e-06 1.399607558e-05 --2.638569795e-06 -2.298704215e-06 2.16694607e-06 4.676690842e-07 2.334138158e-06 -6.1922273e-07 2.16694607e-06 -1.515061268e-06 4.853555116e-07 -2.616404458e-07 -4.104239352e-06 4.676690842e-07 4.853555116e-07 -2.121990737e-06 -7.208930846e-06 -1.399607558e-05 2.334138158e-06 -2.616404458e-07 -7.208930846e-06 -2.210149415e-05 -7.917972559e-06 4.645269686e-07 -4.681211388e-06 -1.413369996e-06 -5.053378584e-06 -4.645269686e-07 -2.170017478e-06 2.419434617e-07 -6.177175238e-07 6.149361356e-07 --4.681211388e-06 2.419434617e-07 4.706784064e-06 1.734394037e-06 -6.101570064e-07 --1.413369996e-06 -6.177175238e-07 1.734394037e-06 -2.853891604e-07 -4.364208482e-08 --5.053378584e-06 6.149361356e-07 -6.101570064e-07 -4.364208482e-08 8.387874558e-06 --1.630930528e-06 -4.538930019e-06 -2.198837843e-07 2.463935312e-06 5.946216315e-06 --4.538930019e-06 -6.45235369e-06 5.264158374e-06 1.460172008e-07 3.552159023e-06 --2.198837843e-07 5.264158374e-06 -7.54999232e-07 1.665150596e-06 -2.662864354e-06 -2.463935312e-06 1.460172008e-07 1.665150596e-06 -2.329468549e-06 -6.252769652e-06 -5.946216315e-06 3.552159023e-06 -2.662864354e-06 -6.252769652e-06 -6.80052076e-06 --7.683246031e-06 -4.369846744e-06 1.372366706e-06 4.106728807e-06 1.248452747e-05 --4.369846744e-06 -4.72243575e-06 4.393562781e-06 4.982393061e-07 3.317427907e-06 -1.372366706e-06 4.393562781e-06 -2.467816424e-06 8.66091791e-07 -1.654114576e-06 -4.106728807e-06 4.982393061e-07 8.66091791e-07 -2.531557798e-06 -7.780322112e-06 -1.248452747e-05 3.317427907e-06 -1.654114576e-06 -7.780322112e-06 -1.819200538e-05 -2.333842387e-07 -1.354889912e-06 -1.174684431e-06 8.820156212e-07 2.391386759e-06 --1.354889912e-06 -2.423678341e-06 1.625240522e-06 -5.001026501e-08 1.362916734e-06 --1.174684431e-06 1.625240522e-06 8.084469981e-07 9.156382485e-07 -8.089321886e-07 -8.820156212e-07 -5.001026501e-08 9.156382485e-07 -9.623207249e-07 -2.649810143e-06 -2.391386759e-06 1.362916734e-06 -8.089321886e-07 -2.649810143e-06 -3.081666589e-06 -0.09189457401 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.1570808401 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.1478958732 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.007566808673 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.01960653445 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.01125982658 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.009497466077 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0009774984873 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0003980912267 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.001201412974 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0003522442904 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0001709370569 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -6.300221553e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.04807920229 -0.01380496103 0.01461795262 0 0 --0.01380496103 -0.02766046054 0.008813808064 0 0 -0.01461795262 0.008813808064 0.1276826341 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.02993347783 -0.006164089756 0.007922606655 0 0 --0.006164089756 0.05332252798 0.04090304518 0 0 -0.007922606655 0.04090304518 0.09707804539 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.002673046353 -0.002527630485 -0.003644023336 0 0 --0.002527630485 0.03865276186 0.04507296391 0 0 --0.003644023336 0.04507296391 0.04047833671 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.002176810463 0.0004448019555 0.001352121218 0 0 -0.0004448019555 -0.0143439174 -0.01247849145 0 0 -0.001352121218 -0.01247849145 -0.005887013621 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0004887605163 -0.0006389864829 -0.0008558322822 0 0 --0.0006389864829 0.01122388573 0.01228161148 0 0 --0.0008558322822 0.01228161148 0.01118461465 0 0 -0 0 0 0 0 -0 0 0 0 0 -8.299824664e-05 0.0002315911747 0.0002181887217 0 0 -0.0002315911747 -0.005650603361 -0.004436099576 0 0 -0.0002181887217 -0.004436099576 -0.003272629765 0 0 -0 0 0 0 0 -0 0 0 0 0 -7.810233526e-05 -0.0001146477103 -7.322206522e-05 0 0 --0.0001146477103 0.001526985663 0.00146004261 0 0 --7.322206522e-05 0.00146004261 0.001513072703 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.626781062e-07 -1.787566795e-05 -1.422822036e-05 0 0 --1.787566795e-05 0.0006278641154 0.0004881394797 0 0 --1.422822036e-05 0.0004881394797 0.0003779736126 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.044014154e-05 3.743581873e-06 -1.723651194e-05 0 0 -3.743581873e-06 -0.0001876068753 4.661391812e-05 0 0 --1.723651194e-05 4.661391812e-05 0.0001198761835 0 0 -0 0 0 0 0 -0 0 0 0 0 --4.053559662e-07 6.718688989e-06 5.005353924e-06 0 0 -6.718688989e-06 -0.0002142362309 -0.0001575189852 0 0 -5.005353924e-06 -0.0001575189852 -0.0001161049555 0 0 -0 0 0 0 0 -0 0 0 0 0 -8.381339498e-06 -1.908733656e-06 2.102566035e-06 0 0 --1.908733656e-06 -5.890929261e-05 -5.230346173e-05 0 0 -2.102566035e-06 -5.230346173e-05 -2.761177816e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --5.171632728e-06 -5.036931756e-06 -6.577290464e-06 0 0 --5.036931756e-06 0.0001571206165 0.0001378195063 0 0 --6.577290464e-06 0.0001378195063 0.0001074262912 0 0 -0 0 0 0 0 -0 0 0 0 0 --4.622873133e-06 3.342835409e-06 3.154364192e-07 0 0 -3.342835409e-06 -7.447889826e-05 -4.205700903e-05 0 0 -3.154364192e-07 -4.205700903e-05 -3.043446716e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.02536609077 -0.001129558489 -0.004524806191 0.09485775773 0.02001187422 --0.001129558489 -0.02714714667 0.01434804497 -0.006850589805 -0.02128019523 --0.004524806191 0.01434804497 0.03820592069 -0.01662081514 -0.006155811698 -0.09485775773 -0.006850589805 -0.01662081514 -0.02423910342 -0.05897181109 -0.02001187422 -0.02128019523 -0.006155811698 -0.05897181109 -0.03832133026 -0.01468632675 -0.006213835245 -0.005830097767 0.02010314689 -0.03102111159 --0.006213835245 0.04403899122 0.0438831238 -0.0252613538 0.005309216542 --0.005830097767 0.0438831238 0.04167275641 -0.01825322072 0.005954560135 -0.02010314689 -0.0252613538 -0.01825322072 0.1046589628 -0.02914582165 --0.03102111159 0.005309216542 0.005954560135 -0.02914582165 0.05622459601 -0.0164641437 0.001875271055 0.002068500082 0.006241872707 -0.03096720404 -0.001875271055 0.002178878091 0.001753615466 -0.0005008689311 -0.003427310882 -0.002068500082 0.001753615466 0.001418202225 -0.0004594580786 -0.003735894917 -0.006241872707 -0.0005008689311 -0.0004594580786 -0.003693963826 -0.01009006202 --0.03096720404 -0.003427310882 -0.003735894917 -0.01009006202 0.05782068083 -0.004147723265 0.0001962028482 7.260929882e-05 -0.0008394679443 -0.007212774769 -0.0001962028482 -0.0002552223192 0.0004596492396 -0.0003676069568 -0.0007454622326 -7.260929882e-05 0.0004596492396 0.0008605292378 -0.0004671715721 -0.0003715360382 --0.0008394679443 -0.0003676069568 -0.0004671715721 0.001474776097 0.003083057804 --0.007212774769 -0.0007454622326 -0.0003715360382 0.003083057804 0.01176251593 --0.002734869716 -0.0001756280969 -2.083301732e-05 0.003683340799 0.003982901133 --0.0001756280969 0.0003146332311 0.0002552731139 0.0001572417738 0.0002432288297 --2.083301732e-05 0.0002552731139 0.0002081824359 0.0001049941004 -1.305274276e-05 -0.003683340799 0.0001572417738 0.0001049941004 -0.001873188035 -0.00609953069 -0.003982901133 0.0002432288297 -1.305274276e-05 -0.00609953069 -0.005622335067 -0.002181759923 0.000193712602 0.0001553823806 -0.0007993079564 -0.003702512769 -0.000193712602 -9.421484422e-05 -5.898589014e-05 -2.322367222e-05 -0.0003398287804 -0.0001553823806 -5.898589014e-05 -3.53208962e-05 -3.314719755e-05 -0.0002687885632 --0.0007993079564 -2.322367222e-05 -3.314719755e-05 0.0001010358532 0.001434662955 --0.003702512769 -0.0003398287804 -0.0002687885632 0.001434662955 0.006257334996 --0.001187487289 -0.0001100374391 -7.690016912e-05 0.0007086381678 0.001951108194 --0.0001100374391 0.0002410819863 0.0002053616547 -6.461094846e-05 0.0001747917249 --7.690016912e-05 0.0002053616547 0.000174388789 -3.676768579e-05 0.0001180237827 -0.0007086381678 -6.461094846e-05 -3.676768579e-05 0.0002038111622 -0.00124822809 -0.001951108194 0.0001747917249 0.0001180237827 -0.00124822809 -0.003197367741 -0.001198998334 0.0001086921645 8.99299412e-05 -0.0003594499426 -0.002054514906 -0.0001086921645 -0.0001173227858 -7.735240238e-05 2.24624377e-05 -0.0001972308978 -8.99299412e-05 -7.735240238e-05 -4.996854867e-05 8.728851561e-07 -0.0001587504502 --0.0003594499426 2.24624377e-05 8.728851561e-07 -0.0001298088743 0.0007028680285 --0.002054514906 -0.0001972308978 -0.0001587504502 0.0007028680285 0.003492777738 --0.0005893513391 -4.866846801e-05 -3.456962668e-05 0.0003283966414 0.0009723218099 --4.866846801e-05 -1.971422173e-05 -1.453733666e-05 3.520130404e-05 7.949985922e-05 --3.456962668e-05 -1.453733666e-05 -1.074763797e-05 2.460779598e-05 5.663472542e-05 -0.0003283966414 3.520130404e-05 2.460779598e-05 -0.0002019310381 -0.0005370417749 -0.0009723218099 7.949985922e-05 5.663472542e-05 -0.0005370417749 -0.00160542905 -9.847683328e-05 1.106897424e-05 9.004384037e-06 -2.896805217e-05 -0.000169127052 -1.106897424e-05 1.309623649e-05 1.124151263e-05 -1.012673002e-05 -1.929034538e-05 -9.004384037e-06 1.124151263e-05 9.597081149e-06 -7.320176093e-06 -1.579532689e-05 --2.896805217e-05 -1.012673002e-05 -7.320176093e-06 3.512836136e-05 4.722374876e-05 --0.000169127052 -1.929034538e-05 -1.579532689e-05 4.722374876e-05 0.0002903697636 -1.393756862e-06 -1.374556977e-07 -3.344020021e-07 -1.124037621e-07 -2.273217922e-06 --1.374556977e-07 1.948511431e-06 4.641821124e-06 -2.5321856e-06 -1.701535275e-06 --3.344020021e-07 4.641821124e-06 6.014692562e-06 -2.56413579e-06 -6.709167833e-07 --1.124037621e-07 -2.5321856e-06 -2.56413579e-06 1.436332086e-05 5.897096417e-06 --2.273217922e-06 -1.701535275e-06 -6.709167833e-07 5.897096417e-06 4.89437498e-07 -4.556303705e-05 4.278042366e-06 3.724340412e-06 -3.973142426e-06 -8.050627233e-05 -4.278042366e-06 -1.469147782e-05 -9.468762125e-06 5.721262231e-06 -9.013629343e-06 -3.724340412e-06 -9.468762125e-06 -5.919688225e-06 2.470657384e-06 -7.197685319e-06 --3.973142426e-06 5.721262231e-06 2.470657384e-06 -3.00455319e-05 1.890218958e-05 --8.050627233e-05 -9.013629343e-06 -7.197685319e-06 1.890218958e-05 0.0001383766401 --3.955394372e-05 -2.904313427e-06 -2.240932661e-06 2.200114973e-05 6.518103841e-05 --2.904313427e-06 -5.515512182e-06 -3.194499024e-06 3.492911413e-06 4.015360094e-06 --2.240932661e-06 -3.194499024e-06 -1.665560969e-06 1.942224436e-06 3.30753521e-06 -2.200114973e-05 3.492911413e-06 1.942224436e-06 -1.926644577e-05 -3.174990083e-05 -6.518103841e-05 4.015360094e-06 3.30753521e-06 -3.174990083e-05 -0.0001090924273 -0.02782234614 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.05805887082 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.004983501929 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.001658645674 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.004897842352 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.002151614528 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0008690254353 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0002861643611 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0003459066075 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0001410675277 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --9.053262046e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -5.552734378e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -3.506685037e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.04742727387 -0.09715356555 -0.01062185984 0 0 --0.09715356555 -0.06877070892 0.03705436617 0 0 --0.01062185984 0.03705436617 0.03293179294 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.08218531552 -0.041334494 -0.04150361995 0 0 --0.041334494 -0.02367429573 0.009445628888 0 0 --0.04150361995 0.009445628888 0.03992915499 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.03019288229 -0.00766833105 -0.0155953114 0 0 --0.00766833105 -0.009508585728 0.004478694155 0 0 --0.0155953114 0.004478694155 0.006418337562 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.003232096674 -0.00309539312 0.001937983887 0 0 --0.00309539312 -0.0009368155924 0.001134670621 0 0 -0.001937983887 0.001134670621 0.0001069305724 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.006338733943 -0.002568033594 -0.003385034545 0 0 --0.002568033594 -0.002597582134 0.001249761629 0 0 --0.003385034545 0.001249761629 0.001517402373 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0007501283056 -0.0002358102461 0.0004014061861 0 0 --0.0002358102461 -6.630339481e-05 0.000103731934 0 0 -0.0004014061861 0.000103731934 -0.0001979979971 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0001199262823 -0.0004921644351 0.000121318754 0 0 --0.0004921644351 -0.0002044705487 0.0002874205456 0 0 -0.000121318754 0.0002874205456 2.191630403e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0009364886449 0.0002101419419 -0.0004969483558 0 0 -0.0002101419419 1.177329882e-05 -0.0001140250189 0 0 --0.0004969483558 -0.0001140250189 0.000233348838 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0002440611641 -0.0002912253081 0.0001089136473 0 0 --0.0002912253081 -0.000190339665 0.0001323970837 0 0 -0.0001089136473 0.0001323970837 -7.137318451e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -4.342165433e-05 1.209368783e-05 -1.573865412e-05 0 0 -1.209368783e-05 5.780962646e-06 -3.217857516e-06 0 0 --1.573865412e-05 -3.217857516e-06 1.004505077e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.584801209e-05 -1.20890122e-05 1.819759906e-05 0 0 --1.20890122e-05 1.026059544e-06 6.708153709e-06 0 0 -1.819759906e-05 6.708153709e-06 -3.223959877e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 -9.16143393e-05 4.461227897e-06 -5.077221602e-05 0 0 -4.461227897e-06 -1.425545323e-05 -5.237972722e-06 0 0 --5.077221602e-05 -5.237972722e-06 2.080827495e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.280206326e-05 -2.197811849e-05 1.556845773e-05 0 0 --2.197811849e-05 -1.533544964e-05 9.431866156e-06 0 0 -1.556845773e-05 9.431866156e-06 -1.064919288e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.05861627419 -0.07053337928 -0.009975813017 0.01830703155 -0.04263112065 --0.07053337928 -0.09140315613 0.05368953546 -0.08400557349 0.02015948647 --0.009975813017 0.05368953546 0.04544209977 0.02339613159 -0.07700911018 -0.01830703155 -0.08400557349 0.02339613159 -0.03192044759 0.02666076747 --0.04263112065 0.02015948647 -0.07700911018 0.02666076747 -0.03689352561 -0.06573261028 -0.0378679016 -0.02629614999 -0.001636454046 0.006973938112 --0.0378679016 -0.01904964854 0.00934281184 -0.02245150038 0.004904446293 --0.02629614999 0.00934281184 0.06571479873 0.03869554071 -0.006830418922 --0.001636454046 -0.02245150038 0.03869554071 0.00881980392 0.00987627252 -0.006973938112 0.004904446293 -0.006830418922 0.00987627252 -0.01521407666 -0.02850362988 -0.01087741761 -0.02247774441 -0.01096173335 0.006194696217 --0.01087741761 -0.02379816356 0.01302302487 -0.003363987356 0.0119399014 --0.02247774441 0.01302302487 0.02268262579 0.01277935068 -0.006001504089 --0.01096173335 -0.003363987356 0.01277935068 0.003668843306 0.002061523842 -0.006194696217 0.0119399014 -0.006001504089 0.002061523842 -0.005790661006 -0.005572164101 0.001965489954 -0.006127673265 -0.0007699611396 -0.002386874024 -0.001965489954 0.0002891255498 -0.002536479783 -0.001863031557 -0.000355134932 --0.006127673265 -0.002536479783 0.006183374901 0.00161187502 0.0005253886137 --0.0007699611396 -0.001863031557 0.00161187502 -0.0001052114559 0.000561816146 --0.002386874024 -0.000355134932 0.0005253886137 0.000561816146 -0.0007682164678 -0.0005105043412 -0.004606466767 0.0005372134274 -0.001194151085 0.002512306232 --0.004606466767 -0.00590220638 0.004895365167 -0.0001945429316 0.003037172196 -0.0005372134274 0.004895365167 -0.0008127905927 0.00137114466 -0.002432787866 --0.001194151085 -0.0001945429316 0.00137114466 0.0004631306683 0.000157375602 -0.002512306232 0.003037172196 -0.002432787866 0.000157375602 -0.001522495726 -0.002264155041 0.001067129366 -0.002307971783 -0.000489026054 -0.00062353969 -0.001067129366 0.0003227432067 -0.0008948370746 -0.0002187058803 -0.0001877619225 --0.002307971783 -0.0008948370746 0.002200336449 0.0005215683823 0.0004828695984 --0.000489026054 -0.0002187058803 0.0005215683823 0.0001194857978 9.605618632e-05 --0.00062353969 -0.0001877619225 0.0004828695984 9.605618632e-05 6.246493944e-05 --0.0005296402958 -0.0006751603351 0.0008562288518 0.0001432932453 0.0002982106819 --0.0006751603351 -0.0003688134205 0.0007573651541 8.308221527e-05 0.0001344297628 -0.0008562288518 0.0007573651541 -0.000702899337 -7.240873144e-06 -0.0003770703293 -0.0001432932453 8.308221527e-05 -7.240873144e-06 1.864827467e-05 -3.677131111e-05 -0.0002982106819 0.0001344297628 -0.0003770703293 -3.677131111e-05 -5.585021098e-05 -0.0008449560165 0.0001868267227 -0.0009595540282 -0.0002774812021 -0.0001103649191 -0.0001868267227 -0.0002630750812 -0.0001883073465 -0.0001673194262 0.0001474572743 --0.0009595540282 -0.0001883073465 0.0008819712365 0.0002280739809 3.712572031e-05 --0.0002774812021 -0.0001673194262 0.0002280739809 1.565797912e-05 7.115927527e-05 --0.0001103649191 0.0001474572743 3.712572031e-05 7.115927527e-05 -9.042937507e-05 --0.0002123385355 -0.0002281738627 0.0002352499674 9.995866851e-06 0.0001166546605 --0.0002281738627 -0.0002261109214 0.0002392464044 1.192484701e-05 0.000117487062 -0.0002352499674 0.0002392464044 -0.0002772936163 -2.293658606e-05 -0.0001235503205 -9.995866851e-06 1.192484701e-05 -2.293658606e-05 -4.738182937e-06 -5.268440894e-06 -0.0001166546605 0.000117487062 -0.0001235503205 -5.268440894e-06 -5.937937291e-05 -6.344154872e-05 8.326726711e-06 -3.23054869e-05 -5.962962785e-06 -1.052616835e-05 -8.326726711e-06 6.984659227e-06 6.127765686e-06 -1.573765476e-06 -1.110832919e-05 --3.23054869e-05 6.127765686e-06 5.05687585e-05 1.946626409e-05 6.831376476e-07 --5.962962785e-06 -1.573765476e-06 1.946626409e-05 5.637034947e-06 1.747151918e-06 --1.052616835e-05 -1.110832919e-05 6.831376476e-07 1.747151918e-06 9.307645846e-06 -3.995945107e-05 2.617127066e-05 -4.679680443e-05 -3.7547707e-06 -1.932903917e-05 -2.617127066e-05 1.711224701e-05 -3.090740697e-05 -1.299258139e-05 -1.058858118e-05 --4.679680443e-05 -3.090740697e-05 5.698796115e-05 4.33313827e-06 5.227722283e-06 --3.7547707e-06 -1.299258139e-05 4.33313827e-06 -5.576969962e-06 4.423234452e-06 --1.932903917e-05 -1.058858118e-05 5.227722283e-06 4.423234452e-06 4.412453617e-06 -1.256024837e-05 -1.73023875e-05 -1.940452082e-05 -1.136868562e-05 5.789202671e-06 --1.73023875e-05 -4.33256547e-05 1.621829047e-05 -1.177496831e-05 2.255258748e-05 --1.940452082e-05 1.621829047e-05 9.226300911e-06 3.942287151e-06 -1.608798186e-05 --1.136868562e-05 -1.177496831e-05 3.942287151e-06 -4.468698625e-06 4.574182114e-06 -5.789202671e-06 2.255258748e-05 -1.608798186e-05 4.574182114e-06 -1.199205795e-05 --1.229499636e-05 -1.047129196e-05 1.545738774e-05 3.124151897e-06 2.283581184e-06 --1.047129196e-05 -1.058570646e-05 1.166922107e-05 -2.241294518e-06 3.888874676e-06 -1.545738774e-05 1.166922107e-05 -1.64019468e-05 -4.532883663e-06 -8.693782797e-06 -3.124151897e-06 -2.241294518e-06 -4.532883663e-06 -3.557055374e-06 7.305661369e-07 -2.283581184e-06 3.888874676e-06 -8.693782797e-06 7.305661369e-07 -1.245416435e-06 --0.04951532595 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.01979010226 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0007038280168 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.004788040911 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.353449961e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0002833590244 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.861511463e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.203753495e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -9.401897386e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.710867544e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.017038183e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -2.91867128e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.82917307e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0001978337948 0.0009588614892 0.003830958214 0 0 -0.0009588614892 0.08911047186 -0.01229233145 0 0 -0.003830958214 -0.01229233145 -0.07376465302 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0002226308877 0.005182766782 0.0045952933 0 0 -0.005182766782 -0.1106083296 -0.1028891293 0 0 -0.0045952933 -0.1028891293 -0.09318735184 0 0 -0 0 0 0 0 -0 0 0 0 0 --4.690367841e-05 0.001407141531 0.001023303424 0 0 -0.001407141531 -0.0417612334 -0.03012928632 0 0 -0.001023303424 -0.03012928632 -0.02160857028 0 0 -0 0 0 0 0 -0 0 0 0 0 -2.155278002e-05 -0.0005005298066 -0.000478079742 0 0 --0.0005005298066 0.009084907013 0.01010272757 0 0 --0.000478079742 0.01010272757 0.0102108925 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.848323313e-05 -0.0005406815633 -0.0003934573208 0 0 --0.0005406815633 0.01570483058 0.01135620565 0 0 --0.0003934573208 0.01135620565 0.00816448449 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.998817462e-06 0.0001091752435 8.597993652e-05 0 0 -0.0001091752435 -0.002881776022 -0.002275937291 0 0 -8.597993652e-05 -0.002275937291 -0.001797033439 0 0 -0 0 0 0 0 -0 0 0 0 0 --4.659103744e-06 0.0001161428245 9.931856054e-05 0 0 -0.0001161428245 -0.00267601403 -0.002366859742 0 0 -9.931856054e-05 -0.002366859742 -0.002063016293 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.320316869e-07 5.145577834e-06 -2.893409693e-06 0 0 -5.145577834e-06 -0.0004904322643 -0.000151036427 0 0 --2.893409693e-06 -0.000151036427 6.128762784e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.523781248e-06 -4.593022784e-05 -3.240349438e-05 0 0 --4.593022784e-05 0.001380977501 0.0009690006116 0 0 --3.240349438e-05 0.0009690006116 0.0006718861208 0 0 -0 0 0 0 0 -0 0 0 0 0 --5.376439522e-08 3.623049745e-06 1.174285453e-06 0 0 -3.623049745e-06 -0.000181220021 -8.636816342e-05 0 0 -1.174285453e-06 -8.636816342e-05 -2.481590105e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.845764723e-07 5.301685447e-06 5.99389663e-06 0 0 -5.301685447e-06 -5.442542147e-05 -0.0001004585316 0 0 -5.99389663e-06 -0.0001004585316 -0.0001234136496 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.75202844e-08 1.986841569e-06 8.426648732e-07 0 0 -1.986841569e-06 -9.286097393e-05 -4.772058034e-05 0 0 -8.426648732e-07 -4.772058034e-05 -1.814805643e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -9.86459102e-08 -3.411209029e-06 -2.052969887e-06 0 0 --3.411209029e-06 0.0001162766932 7.217607069e-05 0 0 --2.052969887e-06 7.217607069e-05 4.189342911e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.01305174468 0.0009702915249 -9.435639712e-05 -0.0242904484 -0.01737525361 -0.0009702915249 6.696826285e-05 -2.814345951e-05 -0.002182985366 -0.001199219533 --9.435639712e-05 -2.814345951e-05 -8.575010351e-05 -0.001367364185 0.000503963559 --0.0242904484 -0.002182985366 -0.001367364185 0.0176619045 0.03909111583 --0.01737525361 -0.001199219533 0.000503963559 0.03909111583 0.02147476174 --0.008022713009 -0.0008173683551 -0.0008458580197 -0.001204297639 0.01463684421 --0.0008173683551 -8.280585168e-05 -8.425828063e-05 -8.84357009e-05 0.001482826812 --0.0008458580197 -8.425828063e-05 -8.13289595e-05 1.31983083e-05 0.001508833452 --0.001204297639 -8.84357009e-05 1.31983083e-05 0.002321398501 0.001583585869 -0.01463684421 0.001482826812 0.001508833452 0.001583585869 -0.02655338133 --0.0005838234474 -5.540062385e-05 -4.486050593e-05 0.0002103619046 0.0009920692426 --5.540062385e-05 -5.25686676e-06 -4.25590498e-06 1.998024521e-05 9.413567997e-05 --4.486050593e-05 -4.25590498e-06 -3.442809849e-06 1.623956101e-05 7.621124782e-05 -0.0002103619046 1.998024521e-05 1.623956101e-05 -7.444979147e-05 -0.0003577905208 -0.0009920692426 9.413567997e-05 7.621124782e-05 -0.0003577905208 -0.001685704935 -0.0001385388769 9.027330093e-06 -6.204808756e-06 -0.0003507192661 -0.0001616544866 -9.027330093e-06 4.71122859e-07 -8.833698017e-07 -3.14052245e-05 -8.436529961e-06 --6.204808756e-06 -8.833698017e-07 -1.681823673e-06 -1.927654439e-05 1.581860894e-05 --0.0003507192661 -3.14052245e-05 -1.927654439e-05 0.0002633352971 0.0005623788598 --0.0001616544866 -8.436529961e-06 1.581860894e-05 0.0005623788598 0.0001510753223 -9.649708638e-06 9.086791903e-07 7.130813743e-07 -3.985442413e-06 -1.627281031e-05 -9.086791903e-07 8.556709505e-08 6.714821502e-08 -3.752978129e-07 -1.532352762e-06 -7.130813743e-07 6.714821502e-08 5.26936494e-08 -2.945229623e-07 -1.202503589e-06 --3.985442413e-06 -3.752978129e-07 -2.945229623e-07 1.645825544e-06 6.720912372e-06 --1.627281031e-05 -1.532352762e-06 -1.202503589e-06 6.720912372e-06 2.744168166e-05 -7.466613012e-06 6.874840188e-07 4.876705485e-07 -4.226786217e-06 -1.231099692e-05 -6.874840188e-07 6.326484442e-08 4.475947128e-08 -3.91723062e-07 -1.132903978e-06 -4.876705485e-07 4.475947128e-08 3.126861466e-08 -2.864717368e-07 -8.015226624e-07 --4.226786217e-06 -3.91723062e-07 -2.864717368e-07 2.206977812e-06 7.01470256e-06 --1.231099692e-05 -1.132903978e-06 -8.015226624e-07 7.01470256e-06 2.028727702e-05 --3.964317449e-05 -3.908095352e-06 -3.644511537e-06 3.602958911e-06 6.998332736e-05 --3.908095352e-06 -3.845180767e-07 -3.562178562e-07 4.098910527e-07 6.885667672e-06 --3.644511537e-06 -3.562178562e-07 -3.225108003e-07 5.550681009e-07 6.37888111e-06 -3.602958911e-06 4.098910527e-07 5.550681009e-07 3.668129614e-06 -7.340191564e-06 -6.998332736e-05 6.885667672e-06 6.37888111e-06 -7.340191564e-06 -0.000123303486 -3.368705243e-05 3.051947213e-06 1.996598378e-06 -2.270476118e-05 -5.465211548e-05 -3.051947213e-06 2.760515706e-07 1.790624783e-07 -2.089537056e-06 -4.943337677e-06 -1.996598378e-06 1.790624783e-07 1.108783859e-07 -1.478834314e-06 -3.206528883e-06 --2.270476118e-05 -2.089537056e-06 -1.478834314e-06 1.292580043e-05 3.741787416e-05 --5.465211548e-05 -4.943337677e-06 -3.206528883e-06 3.741787416e-05 8.852181982e-05 -7.87933838e-06 7.274486857e-07 5.226541879e-07 -4.31710583e-06 -1.302664308e-05 -7.274486857e-07 6.713188075e-08 4.813559697e-08 -4.006721057e-07 -1.202150971e-06 -5.226541879e-07 4.813559697e-08 3.418746331e-08 -2.949572922e-07 -8.619791847e-07 --4.31710583e-06 -4.006721057e-07 -2.949572922e-07 2.211918696e-06 7.17494686e-06 --1.302664308e-05 -1.202150971e-06 -8.619791847e-07 7.17494686e-06 2.152728243e-05 --2.732227285e-06 -2.768812505e-07 -2.819997293e-07 -3.018348793e-07 4.958188777e-06 --2.768812505e-07 -2.79209952e-08 -2.80134511e-08 -2.051752794e-08 4.999886926e-07 --2.819997293e-07 -2.80134511e-08 -2.679779742e-08 1.004786008e-08 5.016435376e-07 --3.018348793e-07 -2.051752794e-08 1.004786008e-08 7.021267114e-07 3.673943991e-07 -4.958188777e-06 4.999886926e-07 5.016435376e-07 3.673943991e-07 -8.953430595e-06 -2.637965133e-06 2.094142507e-07 3.535001829e-08 -3.937988786e-06 -3.750036223e-06 -2.094142507e-07 1.604255256e-08 4.265048249e-10 -3.550992438e-07 -2.872785555e-07 -3.535001829e-08 4.265048249e-10 -9.261074199e-09 -2.265548678e-07 -7.638906443e-09 --3.937988786e-06 -3.550992438e-07 -2.265548678e-07 2.776316312e-06 6.358831326e-06 --3.750036223e-06 -2.872785555e-07 -7.638906443e-09 6.358831326e-06 5.144378873e-06 -6.557637846e-06 5.901073723e-07 3.723200862e-07 -4.711560246e-06 -1.056722329e-05 -5.901073723e-07 5.298417441e-08 3.302044498e-08 -4.326203011e-07 -9.488031833e-07 -3.723200862e-07 3.302044498e-08 1.916013193e-08 -3.028348611e-07 -5.91307702e-07 --4.711560246e-06 -4.326203011e-07 -3.028348611e-07 2.75447613e-06 7.747038063e-06 --1.056722329e-05 -9.488031833e-07 -5.91307702e-07 7.747038063e-06 1.699049746e-05 -1.214700814e-06 9.793731692e-08 2.244887371e-08 -1.703153412e-06 -1.753789167e-06 -9.793731692e-08 7.671415924e-09 8.898004371e-10 -1.537465578e-07 -1.37374202e-07 -2.244887371e-08 8.898004371e-10 -3.349249935e-09 -9.867275394e-08 -1.593449974e-08 --1.703153412e-06 -1.537465578e-07 -9.867275394e-08 1.188431561e-06 2.753168954e-06 --1.753789167e-06 -1.37374202e-07 -1.593449974e-08 2.753168954e-06 2.459998463e-06 --0.1106587323 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.1537969312 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.146578798 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.007537852103 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.01960688736 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.01119744953 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.009516654649 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0009325300526 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0004455327594 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.001225958845 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0003394700064 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0001642118627 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.00108702e-07 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.06635105207 0.005281686523 0.007308266179 0 0 -0.005281686523 0.04422637457 0.001414738124 0 0 -0.007308266179 0.001414738124 -0.1539940955 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0274565345 0.002822958073 -0.01089472112 0 0 -0.002822958073 -0.0502288116 -0.03689408521 0 0 --0.01089472112 -0.03689408521 -0.09351176906 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.002896284093 0.002384529532 0.003376155819 0 0 -0.002384529532 -0.03856153336 -0.04490125466 0 0 -0.003376155819 -0.04490125466 -0.04015691701 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.002175178458 -0.0004457951142 -0.001354091067 0 0 --0.0004457951142 0.01434452174 0.01247969014 0 0 --0.001354091067 0.01247969014 0.005889391169 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0004427976399 0.0006470396684 0.0009109851582 0 0 -0.0006470396684 -0.01121724797 -0.01229127531 0 0 -0.0009109851582 -0.01229127531 -0.01125079501 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0001487151736 -0.0002382573285 -0.000139331245 0 0 --0.0002382573285 0.005681682608 0.00444409816 0 0 --0.000139331245 0.00444409816 0.003178004196 0 0 -0 0 0 0 0 -0 0 0 0 0 --7.744282545e-05 6.886781371e-05 7.24306641e-05 0 0 -6.886781371e-05 -0.001472852145 -0.00140510676 0 0 -7.24306641e-05 -0.00140510676 -0.001512123035 0 0 -0 0 0 0 0 -0 0 0 0 0 -3.159965813e-05 -2.858084368e-05 -2.325525581e-05 0 0 --2.858084368e-05 -0.0005837095049 -0.0004323929174 0 0 --2.325525581e-05 -0.0004323929174 -0.000332994521 0 0 -0 0 0 0 0 -0 0 0 0 0 -5.799198212e-05 -3.657079006e-05 -1.582468047e-05 0 0 --3.657079006e-05 0.00021687516 -7.222561135e-06 0 0 --1.582468047e-05 -7.222561135e-06 -8.02039721e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.196603395e-05 -2.63253978e-05 -1.887789192e-05 0 0 --2.63253978e-05 0.0002334437536 0.0001810466712 0 0 --1.887789192e-05 0.0001810466712 0.0001327516704 0 0 -0 0 0 0 0 -0 0 0 0 0 --7.255663473e-06 -9.6971806e-06 -3.453350383e-06 0 0 --9.6971806e-06 7.229462552e-05 6.623036948e-05 0 0 --3.453350383e-06 6.623036948e-05 2.923268712e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -7.789342654e-06 -6.49686219e-06 3.436118422e-06 0 0 --6.49686219e-06 -0.0001443472918 -0.0001239792915 0 0 -3.436118422e-06 -0.0001239792915 -0.0001036569806 0 0 -0 0 0 0 0 -0 0 0 0 0 -8.269212149e-06 -1.451028949e-05 -4.690936813e-06 0 0 --1.451028949e-05 8.645463552e-05 5.54576525e-05 0 0 --4.690936813e-06 5.54576525e-05 3.568493993e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.02448618562 0.004704276229 0.01411540968 -0.08981758382 -0.02430199928 -0.004704276229 0.04274558843 -0.006273277876 0.003619482606 0.002561529556 -0.01411540968 -0.006273277876 -0.0692846233 -0.01138461298 -0.003532632524 --0.08981758382 0.003619482606 -0.01138461298 0.005241891693 0.06285041091 --0.02430199928 0.002561529556 -0.003532632524 0.06285041091 0.06078437169 --0.01470953102 0.006240257798 0.00597691853 -0.02000915018 0.03098946315 -0.006240257798 -0.04229240084 -0.041277344 0.02617074352 -0.007404629507 -0.00597691853 -0.041277344 -0.03827381283 0.01924486427 -0.009080989268 --0.02000915018 0.02617074352 0.01924486427 -0.1044582406 0.02805463818 -0.03098946315 -0.007404629507 -0.009080989268 0.02805463818 -0.05371069501 --0.01646520986 -0.001867110175 -0.002050914095 -0.006233582138 0.03095741593 --0.001867110175 -0.002236166943 -0.001880169391 0.0004403556519 0.003496030119 --0.002050914095 -0.001880169391 -0.001695740819 0.0003272923595 0.003887694325 --0.006233582138 0.0004403556519 0.0003272923595 0.003631172112 0.01016264544 -0.03095741593 0.003496030119 0.003887694325 0.01016264544 -0.05790311106 --0.004147752889 -0.0001960156899 -7.218312433e-05 0.0008396754473 0.007212550708 --0.0001960156899 0.0002544012544 -0.0004617809477 0.0003665014135 0.0007464460066 --7.218312433e-05 -0.0004617809477 -0.0008657900124 0.0004645051796 0.0003740893308 -0.0008396754473 0.0003665014135 0.0004645051796 -0.001476112796 -0.003081733812 -0.007212550708 0.0007464460066 0.0003740893308 -0.003081733812 -0.01176369465 -0.00273322375 0.0001836419223 4.083857246e-05 -0.003673156796 -0.003992515825 -0.0001836419223 -0.0003120254703 -0.0002877045333 -0.0001830120828 -0.0002463577965 -4.083857246e-05 -0.0002877045333 -0.0003499254795 -0.00019160443 5.196233984e-05 --0.003673156796 -0.0001830120828 -0.00019160443 0.001823800304 0.006130448801 --0.003992515825 -0.0002463577965 5.196233984e-05 0.006130448801 0.005626089412 --0.002184301915 -0.0001828435318 -0.0001268319931 0.0008141782418 0.0036894701 --0.0001828435318 0.0001284747746 6.297244122e-05 5.860084015e-06 0.0002987177782 --0.0001268319931 6.297244122e-05 -8.8501811e-05 -6.169969347e-05 0.0002640051491 -0.0008141782418 5.860084015e-06 -6.169969347e-05 -0.0001615653082 -0.001413826858 -0.0036894701 0.0002987177782 0.0002640051491 -0.001413826858 -0.00620800289 -0.001185921167 0.000115093489 9.192961702e-05 -0.0007004153999 -0.001957175937 -0.000115093489 -0.0001874380796 -0.0001446275935 7.812010442e-05 -0.0002391649305 -9.192961702e-05 -0.0001446275935 -0.0001480159741 2.040467522e-05 -0.0001909032603 --0.0007004153999 7.812010442e-05 2.040467522e-05 -0.000224052555 0.001232018452 --0.001957175937 -0.0002391649305 -0.0001909032603 0.001232018452 0.003274616208 --0.00119981374 -0.0001067102038 -8.312162637e-05 0.0003633580419 0.002052136681 --0.0001067102038 0.0001580718389 0.0001319478836 -5.881107031e-06 0.0001483336597 --8.312162637e-05 0.0001319478836 0.0001042007698 7.216190338e-06 9.323782913e-05 -0.0003633580419 -5.881107031e-06 7.216190338e-06 0.0001260055273 -0.0007227651294 -0.002052136681 0.0001483336597 9.323782913e-05 -0.0007227651294 -0.003434103003 -0.0005888698158 4.994867686e-05 3.876178905e-05 -0.0003260257496 -0.0009738580111 -4.994867686e-05 4.162010051e-05 4.290952788e-05 -2.701722789e-05 -0.0001057861755 -3.876178905e-05 4.290952788e-05 3.595264299e-05 -2.262844143e-05 -9.068042717e-05 --0.0003260257496 -2.701722789e-05 -2.262844143e-05 0.0001985502129 0.0005272211381 --0.0009738580111 -0.0001057861755 -9.068042717e-05 0.0005272211381 0.001636971744 --9.889464683e-05 -9.737717295e-06 -5.022369856e-06 3.11516379e-05 0.0001675294662 --9.737717295e-06 1.561675004e-06 5.582481948e-06 1.398900792e-05 1.70089469e-06 --5.022369856e-06 5.582481948e-06 -1.465731899e-06 3.404233588e-06 -4.393046303e-06 -3.11516379e-05 1.398900792e-05 3.404233588e-06 -4.034615214e-05 -5.185819392e-05 -0.0001675294662 1.70089469e-06 -4.393046303e-06 -5.185819392e-05 -0.0002692624745 --1.842384971e-06 1.757757897e-06 4.907864493e-06 2.566108821e-06 3.2885017e-07 -1.757757897e-06 9.991600706e-06 6.621192397e-06 3.854820368e-06 -1.262637089e-05 -4.907864493e-06 6.621192397e-06 -9.260532647e-06 -6.547288426e-06 -1.284431952e-05 -2.566108821e-06 3.854820368e-06 -6.547288426e-06 -2.195356856e-05 -7.484109999e-06 -3.2885017e-07 -1.262637089e-05 -1.284431952e-05 -7.484109999e-06 1.670377581e-05 --4.595347754e-05 -2.877652188e-06 2.406238254e-07 6.102969747e-06 7.882583389e-05 --2.877652188e-06 2.527244991e-05 1.961106903e-05 -4.428624636e-06 -3.683240324e-06 -2.406238254e-07 1.961106903e-05 3.69568274e-06 -1.015351357e-05 -4.972755089e-06 -6.102969747e-06 -4.428624636e-06 -1.015351357e-05 2.354000674e-05 -2.045328606e-05 -7.882583389e-05 -3.683240324e-06 -4.972755089e-06 -2.045328606e-05 -0.0001231407527 -3.924382696e-05 3.879178113e-06 5.175698046e-06 -2.038809573e-05 -6.635088089e-05 -3.879178113e-06 1.664818149e-05 1.613674134e-05 -4.36659078e-07 -1.737433831e-05 -5.175698046e-06 1.613674134e-05 8.505900067e-06 -4.517639267e-06 -1.883785261e-05 --2.038809573e-05 -4.36659078e-07 -4.517639267e-06 1.552838267e-05 2.808254333e-05 --6.635088089e-05 -1.737433831e-05 -1.883785261e-05 2.808254333e-05 0.0001251229312 --0.01356822866 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.004254641054 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.001980352827 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0002618458097 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -4.359645692e-07 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --8.127446411e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.658789297e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -4.361237087e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -5.418947619e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -2.440331099e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.208004493e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -7.021066696e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -6.334072226e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.01251472919 0.006179424812 0.02408017024 0 0 -0.006179424812 0.04804116418 0.006421820754 0 0 -0.02408017024 0.006421820754 -0.03977062016 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.00455341544 -0.003706633381 -0.003627205792 0 0 --0.003706633381 -0.004562110405 0.0005829356744 0 0 --0.003627205792 0.0005829356744 0.002148492891 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.523863145e-05 0.0002495561367 0.0002063499579 0 0 -0.0002495561367 -0.0003316667674 -0.0004206766699 0 0 -0.0002063499579 -0.0004206766699 -0.0004588850333 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0001383717928 -0.0001313895765 4.522177132e-06 0 0 --0.0001313895765 0.0002087852531 0.0002550656811 0 0 -4.522177132e-06 0.0002550656811 0.0001883918482 0 0 -0 0 0 0 0 -0 0 0 0 0 --8.805940939e-05 8.314171274e-06 0.0001003083079 0 0 -8.314171274e-06 9.255733585e-06 -1.128063527e-05 0 0 -0.0001003083079 -1.128063527e-05 -0.0001139347315 0 0 -0 0 0 0 0 -0 0 0 0 0 --7.143263818e-05 -2.168943308e-05 7.48232461e-05 0 0 --2.168943308e-05 1.077172066e-05 1.734903141e-05 0 0 -7.48232461e-05 1.734903141e-05 -7.671348697e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -4.922503764e-07 -3.434440397e-05 -7.225170586e-07 0 0 --3.434440397e-05 8.873951642e-05 5.943619928e-05 0 0 --7.225170586e-07 5.943619928e-05 1.025191986e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 -3.48983308e-05 -5.758322147e-05 -4.616269442e-05 0 0 --5.758322147e-05 7.638181985e-05 7.930130303e-05 0 0 --4.616269442e-05 7.930130303e-05 6.053659678e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -3.176416538e-05 -3.822734989e-05 -3.840411754e-05 0 0 --3.822734989e-05 3.510742092e-05 4.638713258e-05 0 0 --3.840411754e-05 4.638713258e-05 4.64294656e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.018844022e-05 -1.896837378e-05 -1.349943571e-05 0 0 --1.896837378e-05 2.637972151e-05 2.632533395e-05 0 0 --1.349943571e-05 2.632533395e-05 1.772721052e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.087100673e-06 -1.141771069e-05 -1.462505206e-06 0 0 --1.141771069e-05 2.131837687e-05 1.686547174e-05 0 0 --1.462505206e-06 1.686547174e-05 1.944577443e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 -2.806725339e-06 -1.265948329e-05 -3.58890679e-06 0 0 --1.265948329e-05 1.850956987e-05 1.700663066e-05 0 0 --3.58890679e-06 1.700663066e-05 4.571677711e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 -3.688861301e-06 -1.170373045e-05 -4.732771751e-06 0 0 --1.170373045e-05 1.660752014e-05 1.573817422e-05 0 0 --4.732771751e-06 1.573817422e-05 6.046672388e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.002296919781 0.01580308501 0.011878559 0.007070964559 -0.01046052741 -0.01580308501 0.04917380534 0.0006240356775 -0.0151717117 -0.04380236994 -0.011878559 0.0006240356775 -0.04901732513 -0.05034587446 -0.01573751228 -0.007070964559 -0.0151717117 -0.05034587446 -0.04662642761 -0.002016529423 --0.01046052741 -0.04380236994 -0.01573751228 -0.002016529423 0.03431637857 --0.0004280228943 -0.002287174204 -0.001629212998 -0.0005289993211 0.002047919585 --0.002287174204 -0.01002006939 -0.00528556841 -0.003099338116 0.006721429135 --0.001629212998 -0.00528556841 -0.0008879606057 -0.002437036625 0.001236521905 --0.0005289993211 -0.003099338116 -0.002437036625 -0.0006200476803 0.003053761159 -0.002047919585 0.006721429135 0.001236521905 0.003053761159 -0.001702868409 --5.69359271e-05 0.0001115603968 0.0003887150437 0.0001733472182 -0.0001752532342 -0.0001115603968 0.0004753612003 0.0004783388009 0.0003515580939 -0.0003448497787 -0.0003887150437 0.0004783388009 -0.0004381800932 5.16134244e-05 -3.328712068e-05 -0.0001733472182 0.0003515580939 5.16134244e-05 0.0001607147812 -0.000151949791 --0.0001752532342 -0.0003448497787 -3.328712068e-05 -0.000151949791 0.0001431337366 --2.192607589e-06 -5.720753704e-06 4.644576113e-06 -1.883645656e-07 -1.409719573e-06 --5.720753704e-06 4.982490516e-05 9.371230396e-05 6.033671757e-05 -3.641151725e-05 -4.644576113e-06 9.371230396e-05 9.297991345e-05 7.70499046e-05 -3.826187052e-05 --1.883645656e-07 6.033671757e-05 7.70499046e-05 5.71268557e-05 -3.087142942e-05 --1.409719573e-06 -3.641151725e-05 -3.826187052e-05 -3.087142942e-05 1.564126992e-05 --1.870376575e-05 -8.908256878e-06 5.82178722e-05 3.273511267e-05 -2.67153776e-06 --8.908256878e-06 -2.372683267e-06 3.478012413e-05 2.481819626e-05 7.083898723e-07 -5.82178722e-05 3.478012413e-05 -0.0001546186038 -6.709854801e-05 1.578473752e-05 -3.273511267e-05 2.481819626e-05 -6.709854801e-05 -1.176759857e-05 1.444864211e-05 --2.67153776e-06 7.083898723e-07 1.578473752e-05 1.444864211e-05 1.716391713e-06 -3.339486739e-06 1.055721749e-05 1.338136693e-05 2.090228351e-06 -1.748149937e-05 -1.055721749e-05 2.253656203e-05 3.566257037e-06 -1.294147189e-05 -3.35881316e-05 -1.338136693e-05 3.566257037e-06 -8.482776584e-05 -6.149503766e-05 7.425015191e-06 -2.090228351e-06 -1.294147189e-05 -6.149503766e-05 -3.395356356e-05 2.815700148e-05 --1.748149937e-05 -3.35881316e-05 7.425015191e-06 2.815700148e-05 4.815844885e-05 -2.496564721e-06 2.287490303e-05 2.231368066e-05 1.188337478e-05 -1.775502642e-05 -2.287490303e-05 0.0001282800306 8.908248009e-05 2.077631889e-05 -0.0001204332886 -2.231368066e-05 8.908248009e-05 3.574802387e-05 -1.879551936e-05 -9.874764394e-05 -1.188337478e-05 2.077631889e-05 -1.879551936e-05 -3.890296458e-05 -3.873430178e-05 --1.775502642e-05 -0.0001204332886 -9.874764394e-05 -3.873430178e-05 0.0001043187866 --2.836419372e-06 -5.308830927e-07 7.270635473e-06 6.993052673e-06 3.174827531e-06 --5.308830927e-07 6.683000313e-05 8.244950188e-05 2.819395082e-05 -6.739129996e-05 -7.270635473e-06 8.244950188e-05 7.960655853e-05 1.464739312e-05 -9.050635458e-05 -6.993052673e-06 2.819395082e-05 1.464739312e-05 -6.441467002e-06 -3.51367165e-05 -3.174827531e-06 -6.739129996e-05 -9.050635458e-05 -3.51367165e-05 6.550473251e-05 --4.60837506e-07 1.534261244e-06 4.418346299e-06 2.512353646e-06 -1.692880116e-06 -1.534261244e-06 2.380267107e-05 2.982646497e-05 8.710470637e-06 -2.788209287e-05 -4.418346299e-06 2.982646497e-05 2.624609021e-05 2.215931075e-06 -3.54034775e-05 -2.512353646e-06 8.710470637e-06 2.215931075e-06 -3.612133754e-06 -1.056695017e-05 --1.692880116e-06 -2.788209287e-05 -3.54034775e-05 -1.056695017e-05 3.264121998e-05 -5.237280383e-07 4.539121606e-06 4.960552413e-06 2.353746494e-06 -4.11234053e-06 -4.539121606e-06 2.557071562e-05 2.016635891e-05 4.636047895e-06 -2.596082645e-05 -4.960552413e-06 2.016635891e-05 9.144009938e-06 -3.838462068e-06 -2.290256512e-05 -2.353746494e-06 4.636047895e-06 -3.838462068e-06 -7.468438364e-06 -7.399178361e-06 --4.11234053e-06 -2.596082645e-05 -2.290256512e-05 -7.399178361e-06 2.548445444e-05 --4.921165941e-07 3.266072133e-06 6.039752187e-06 3.757466256e-06 -2.349114309e-06 -3.266072133e-06 2.109442736e-05 1.456451263e-05 1.53804301e-06 -2.109566534e-05 -6.039752187e-06 1.456451263e-05 -4.299578839e-06 -1.228701027e-05 -1.804414818e-05 -3.757466256e-06 1.53804301e-06 -1.228701027e-05 -1.230077226e-05 -4.772981982e-06 --2.349114309e-06 -2.109566534e-05 -1.804414818e-05 -4.772981982e-06 2.025389056e-05 --5.232108971e-07 2.210525988e-06 4.933311008e-06 3.023935544e-06 -1.741694673e-06 -2.210525988e-06 1.600568867e-05 1.245705966e-05 1.583558982e-06 -1.671505017e-05 -4.933311008e-06 1.245705966e-05 -2.764138023e-06 -9.64603198e-06 -1.520716147e-05 -3.023935544e-06 1.583558982e-06 -9.64603198e-06 -9.34156503e-06 -3.572871093e-06 --1.741694673e-06 -1.671505017e-05 -1.520716147e-05 -3.572871093e-06 1.706808772e-05 --1.126384473e-07 2.164014473e-06 3.58615257e-06 2.026823057e-06 -1.858123484e-06 -2.164014473e-06 1.715670899e-05 1.582370575e-05 3.925847832e-06 -1.791178815e-05 -3.58615257e-06 1.582370575e-05 8.035583354e-06 -2.696073972e-06 -1.81744836e-05 -2.026823057e-06 3.925847832e-06 -2.696073972e-06 -5.185702153e-06 -5.692003778e-06 --1.858123484e-06 -1.791178815e-05 -1.81744836e-05 -5.692003778e-06 1.828280139e-05 --0.02225558486 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.003306009376 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0004454746716 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.000664594069 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0002261184438 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -6.816473076e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.566994882e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --5.451402188e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -2.110658489e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -2.957357047e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.250851373e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -3.96235498e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -4.539274865e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0242394246 0.05034200425 0.0122955418 0 0 -0.05034200425 0.03530753783 -0.02553593916 0 0 -0.0122955418 -0.02553593916 -0.006236961092 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.01323260302 0.001100016404 0.006712101324 0 0 -0.001100016404 0.002115127989 -0.0005578733244 0 0 -0.006712101324 -0.0005578733244 -0.003404644124 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0007207157903 0.0003344229515 -0.0003656791557 0 0 -0.0003344229515 0.000141273923 -0.0001696931698 0 0 --0.0003656791557 -0.0001696931698 0.0001855394853 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0007521213972 0.000343665676 0.0003815506068 0 0 -0.000343665676 0.0003030401199 -0.0001743656254 0 0 -0.0003815506068 -0.0001743656254 -0.0001935603284 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0001937617641 9.164792303e-05 -9.825906051e-05 0 0 -9.164792303e-05 3.912298818e-05 -4.647167551e-05 0 0 --9.825906051e-05 -4.647167551e-05 4.982841804e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.102256605e-06 -5.544323631e-07 1.570932319e-06 0 0 --5.544323631e-07 -3.19534259e-08 2.811544849e-07 0 0 -1.570932319e-06 2.811544849e-07 -7.954922209e-07 0 0 -0 0 0 0 0 -0 0 0 0 0 --6.774309069e-05 -8.688961924e-07 3.435651216e-05 0 0 --8.688961924e-07 6.602475533e-06 4.427644455e-07 0 0 -3.435651216e-05 4.427644455e-07 -1.742421065e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.1718541e-05 2.670524274e-05 -5.945153024e-06 0 0 -2.670524274e-05 1.612803607e-05 -1.354995984e-05 0 0 --5.945153024e-06 -1.354995984e-05 3.016147129e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.638820375e-05 1.02684505e-05 -8.311166876e-06 0 0 -1.02684505e-05 4.946370224e-06 -5.207009066e-06 0 0 --8.311166876e-06 -5.207009066e-06 4.214951947e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.673688461e-06 3.819825504e-06 1.356471624e-06 0 0 -3.819825504e-06 2.766730332e-06 -1.938343109e-06 0 0 -1.356471624e-06 -1.938343109e-06 -6.881935744e-07 0 0 -0 0 0 0 0 -0 0 0 0 0 --5.381551669e-06 6.000234906e-06 2.72958711e-06 0 0 -6.000234906e-06 4.472356687e-06 -3.043033908e-06 0 0 -2.72958711e-06 -3.043033908e-06 -1.384479084e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 -3.504799099e-06 6.440763273e-06 -1.777960567e-06 0 0 -6.440763273e-06 3.818279979e-06 -3.267541737e-06 0 0 --1.777960567e-06 -3.267541737e-06 9.019472081e-07 0 0 -0 0 0 0 0 -0 0 0 0 0 -2.290748788e-06 3.978781015e-06 -1.161931639e-06 0 0 -3.978781015e-06 2.345750419e-06 -2.018051427e-06 0 0 --1.161931639e-06 -2.018051427e-06 5.893641133e-07 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0189218399 0.0221924657 0.01402647323 0.01223704979 -0.01125728354 -0.0221924657 0.03950896392 -0.02814878386 0.002774935238 -0.02004129855 -0.01402647323 -0.02814878386 -0.008309649716 -0.01212818502 0.01427868548 -0.01223704979 0.002774935238 -0.01212818502 -0.003437983833 -0.001407631476 --0.01125728354 -0.02004129855 0.01427868548 -0.001407631476 0.01016613972 --0.01112728422 0.002276707572 0.01017154162 0.004380596202 -0.001154866793 -0.002276707572 0.008404182604 -0.003664372743 0.001421739897 -0.004263100596 -0.01017154162 -0.003664372743 -0.009015299964 -0.004418087003 0.001858773707 -0.004380596202 0.001421739897 -0.004418087003 -0.001118774273 -0.0007211958603 --0.001154866793 -0.004263100596 0.001858773707 -0.0007211958603 0.002162497835 --0.0006868970247 -0.0002947204331 0.0007055892554 0.0001566688172 0.0001494996866 --0.0002947204331 -8.031781078e-05 0.0002945058718 7.927708367e-05 4.074191623e-05 -0.0007055892554 0.0002945058718 -0.0007233203442 -0.0001630841743 -0.000149390841 -0.0001566688172 7.927708367e-05 -0.0001630841743 -3.258251277e-05 -4.021405055e-05 -0.0001494996866 4.074191623e-05 -0.000149390841 -4.021405055e-05 -2.06666955e-05 --0.0002147166281 0.0003922712813 0.0001340986398 0.0001755626351 -0.000198982483 -0.0003922712813 0.0006416392193 -0.0004874310896 3.422750247e-05 -0.0003254776159 -0.0001340986398 -0.0004874310896 -4.047572299e-05 -0.0001730040741 0.0002472532465 -0.0001755626351 3.422750247e-05 -0.0001730040741 -5.078338456e-05 -1.736252221e-05 --0.000198982483 -0.0003254776159 0.0002472532465 -1.736252221e-05 0.0001651016261 --3.402970015e-05 -1.933310196e-05 3.580042737e-05 6.524848006e-06 9.806864045e-06 --1.933310196e-05 -1.049277853e-05 2.025148621e-05 3.835195248e-06 5.322542782e-06 -3.580042737e-05 2.025148621e-05 -3.76476564e-05 -6.887262129e-06 -1.027272158e-05 -6.524848006e-06 3.835195248e-06 -6.887262129e-06 -1.217551716e-06 -1.945432032e-06 -9.806864045e-06 5.322542782e-06 -1.027272158e-05 -1.945432032e-06 -2.699900849e-06 -4.390268135e-06 3.92384712e-06 -4.873886154e-06 -4.68178862e-07 -1.990410099e-06 -3.92384712e-06 3.32150553e-06 -4.322979327e-06 -4.66910168e-07 -1.684868293e-06 --4.873886154e-06 -4.322979327e-06 5.404868621e-06 5.284037955e-07 2.192874181e-06 --4.68178862e-07 -4.66910168e-07 5.284037955e-07 3.725964437e-08 2.368442853e-07 --1.990410099e-06 -1.684868293e-06 2.192874181e-06 2.368442853e-07 8.546669998e-07 --3.678073625e-05 4.552015098e-06 3.415232464e-05 1.3702776e-05 -2.309010029e-06 -4.552015098e-06 2.368674123e-05 -8.555141035e-06 4.641509773e-06 -1.201532091e-05 -3.415232464e-05 -8.555141035e-06 -3.093916037e-05 -1.385471673e-05 4.339635163e-06 -1.3702776e-05 4.641509773e-06 -1.385471673e-05 -3.448838947e-06 -2.354463571e-06 --2.309010029e-06 -1.201532091e-05 4.339635163e-06 -2.354463571e-06 6.094883846e-06 -9.819483783e-06 1.899843404e-05 -1.272574079e-05 1.624250493e-06 -9.637118997e-06 -1.899843404e-05 2.149926867e-05 -2.189787985e-05 -8.449691035e-07 -1.090571463e-05 --1.272574079e-05 -2.189787985e-05 1.60060362e-05 -1.393236243e-06 1.110789241e-05 -1.624250493e-06 -8.449691035e-07 -1.393236243e-06 -7.734059761e-07 4.286111081e-07 --9.637118997e-06 -1.090571463e-05 1.110789241e-05 4.286111081e-07 5.532030576e-06 -8.423458913e-07 1.911121109e-06 -1.141876918e-06 2.128664779e-07 -9.694324944e-07 -1.911121109e-06 2.231572335e-06 -2.215081667e-06 -6.699697842e-08 -1.131987187e-06 --1.141876918e-06 -2.215081667e-06 1.480873805e-06 -1.903982194e-07 1.12361963e-06 -2.128664779e-07 -6.699697842e-08 -1.903982194e-07 -8.992795942e-08 3.398398585e-08 --9.694324944e-07 -1.131987187e-06 1.12361963e-06 3.398398585e-08 5.742117217e-07 --5.185745273e-06 -1.876457181e-07 4.963211117e-06 1.715204876e-06 9.518980717e-08 --1.876457181e-07 2.197938473e-06 -2.139300106e-07 6.382350518e-07 -1.114924828e-06 -4.963211117e-06 -2.139300106e-07 -4.679986266e-06 -1.744441897e-06 1.085134688e-07 -1.715204876e-06 6.382350518e-07 -1.744441897e-06 -4.16737551e-07 -3.237523143e-07 -9.518980717e-08 -1.114924828e-06 1.085134688e-07 -3.237523143e-07 5.655560371e-07 --1.007034605e-06 4.329515769e-06 1.84533766e-07 1.474053474e-06 -2.196180092e-06 -4.329515769e-06 6.436311137e-06 -5.264584879e-06 2.09082043e-07 -3.264880468e-06 -1.84533766e-07 -5.264584879e-06 7.642603062e-07 -1.438595728e-06 2.670503261e-06 -1.474053474e-06 2.09082043e-07 -1.438595728e-06 -4.468477623e-07 -1.060616745e-07 --2.196180092e-06 -3.264880468e-06 2.670503261e-06 -1.060616745e-07 1.656141886e-06 -1.125608186e-06 3.779739372e-06 -1.744686792e-06 6.048314395e-07 -1.917304177e-06 -3.779739372e-06 4.669451576e-06 -4.426583226e-06 -6.561900497e-08 -2.368624723e-06 --1.744686792e-06 -4.426583226e-06 2.448656292e-06 -5.632569299e-07 2.245422278e-06 -6.048314395e-07 -6.561900497e-08 -5.632569299e-07 -2.229183327e-07 3.32840486e-08 --1.917304177e-06 -2.368624723e-06 2.245422278e-06 3.32840486e-08 1.201507926e-06 --1.448085053e-06 1.256952595e-06 1.152235558e-06 8.211377911e-07 -6.375975915e-07 -1.256952595e-06 2.416006925e-06 -1.626130323e-06 2.037568228e-07 -1.225542532e-06 -1.152235558e-06 -1.626130323e-06 -8.050977481e-07 -8.169654946e-07 8.248666884e-07 -8.211377911e-07 2.037568228e-07 -8.169654946e-07 -2.261108362e-07 -1.033588105e-07 --6.375975915e-07 -1.225542532e-06 8.248666884e-07 -1.033588105e-07 6.216681258e-07 -0.01876415829 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.003283908964 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.00131707513 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.895656989e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.529149967e-07 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -6.237704828e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.918857134e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --4.496843465e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --4.744153274e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.454587077e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.277428394e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --6.725194203e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --6.100112851e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.01827184978 0.008523274511 -0.0219262188 0 0 -0.008523274511 -0.01656591403 -0.01022854619 0 0 --0.0219262188 -0.01022854619 0.02631146141 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.002476943336 0.003341131683 0.002972114464 0 0 -0.003341131683 -0.003093716377 -0.004008959973 0 0 -0.002972114464 -0.004008959973 -0.003566276323 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0002232377403 0.0001431009531 0.000267867517 0 0 -0.0001431009531 -9.122849413e-05 -0.0001717092465 0 0 -0.000267867517 -0.0001717092465 -0.0003214196957 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.632005077e-06 9.93158732e-07 1.969848418e-06 0 0 -9.93158732e-07 -6.043383774e-07 -1.198690345e-06 0 0 -1.969848418e-06 -1.198690345e-06 -2.377548161e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 -4.596287637e-05 -8.053185544e-06 -5.515287604e-05 0 0 --8.053185544e-06 -6.637759773e-06 9.663835432e-06 0 0 --5.515287604e-05 9.663835432e-06 6.618036064e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -6.571692696e-05 6.666153849e-06 -7.885747669e-05 0 0 -6.666153849e-06 -3.107924756e-05 -7.998583518e-06 0 0 --7.885747669e-05 -7.998583518e-06 9.462556935e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --6.595098144e-07 4.577989656e-05 7.914011145e-07 0 0 -4.577989656e-05 -5.413351863e-05 -5.493585022e-05 0 0 -7.914011145e-07 -5.493585022e-05 -9.496685419e-07 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.123698002e-05 4.645651162e-05 3.748347617e-05 0 0 -4.645651162e-05 -4.415461047e-05 -5.574656226e-05 0 0 -3.748347617e-05 -5.574656226e-05 -4.497909161e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.755184058e-05 3.282720818e-05 3.306119241e-05 0 0 -3.282720818e-05 -2.926828476e-05 -3.939135698e-05 0 0 -3.306119241e-05 -3.939135698e-05 -3.967221139e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.156067799e-05 1.960670881e-05 1.3872538e-05 0 0 -1.960670881e-05 -1.920752267e-05 -2.352768603e-05 0 0 -1.3872538e-05 -2.352768603e-05 -1.66467149e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.125676025e-06 1.160591426e-05 1.350784347e-06 0 0 -1.160591426e-05 -1.338533292e-05 -1.392690775e-05 0 0 -1.350784347e-06 -1.392690775e-05 -1.620908958e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.617709926e-06 1.153379395e-05 3.141172042e-06 0 0 -1.153379395e-05 -1.277332475e-05 -1.384021479e-05 0 0 -3.141172042e-06 -1.384021479e-05 -3.76931061e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.646339016e-06 1.116745409e-05 4.375500394e-06 0 0 -1.116745409e-05 -1.197573726e-05 -1.340064347e-05 0 0 -4.375500394e-06 -1.340064347e-05 -5.250472766e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0008799051568 -0.003574717741 -0.009590603486 -0.005040173911 0.004290125059 --0.003574717741 -0.01559844176 -0.008074767096 0.003231107199 0.01871866567 --0.009590603486 -0.008074767096 0.03107870261 0.02800542812 0.009688444222 --0.005040173911 0.003231107199 0.02800542812 0.01899721172 -0.003878599823 -0.004290125059 0.01871866567 0.009688444222 -0.003878599823 -0.02246304143 -2.320426727e-05 -2.64225532e-05 -0.000146820763 -9.399671498e-05 3.16484458e-05 --2.64225532e-05 -0.00174659038 -0.002605779797 -0.0009093897249 0.002095412965 --0.000146820763 -0.002605779797 -0.003398943582 -0.0009916435483 0.003126429133 --9.399671498e-05 -0.0009093897249 -0.0009916435483 -0.0002007222586 0.00109118347 -3.16484458e-05 0.002095412965 0.003126429133 0.00109118347 -0.002513901 -1.066154694e-06 -8.160879911e-06 -1.758598741e-05 -8.290568413e-06 9.788106473e-06 --8.160879911e-06 5.728885246e-05 0.0001265539248 6.051327915e-05 -6.871923706e-05 --1.758598741e-05 0.0001265539248 0.0002775385938 0.0001321657191 -0.0001517994075 --8.290568413e-06 6.051327915e-05 0.0001321657191 6.279171408e-05 -7.258342229e-05 -9.788106473e-06 -6.871923706e-05 -0.0001517994075 -7.258342229e-05 8.24302231e-05 -2.962383762e-08 -1.871583028e-07 -4.261744851e-07 -2.07503021e-07 2.240610102e-07 --1.871583028e-07 8.210647327e-07 2.131708094e-06 1.105543388e-06 -9.83773964e-07 --4.261744851e-07 2.131708094e-06 5.260774528e-06 2.666392544e-06 -2.553292563e-06 --2.07503021e-07 1.105543388e-06 2.666392544e-06 1.336698425e-06 -1.323991865e-06 -2.240610102e-07 -9.83773964e-07 -2.553292563e-06 -1.323991865e-06 1.178724394e-06 -1.645966507e-06 -8.013825371e-06 -2.000555514e-05 -1.018400294e-05 9.614692149e-06 --8.013825371e-06 -2.607760778e-06 3.243141937e-05 2.577030897e-05 3.128966788e-06 --2.000555514e-05 3.243141937e-05 0.0001417430435 8.661032954e-05 -3.890959708e-05 --1.018400294e-05 2.577030897e-05 8.661032954e-05 4.938773159e-05 -3.091811099e-05 -9.614692149e-06 3.128966788e-06 -3.890959708e-05 -3.091811099e-05 -3.754344792e-06 -2.541991331e-06 -1.086907024e-05 -2.855038752e-05 -1.487028539e-05 1.304266906e-05 --1.086907024e-05 -3.42599304e-05 -3.98655108e-06 1.736358821e-05 4.11110022e-05 --2.855038752e-05 -3.98655108e-06 0.0001238227072 9.484689102e-05 4.783414079e-06 --1.487028539e-05 1.736358821e-05 9.484689102e-05 6.052945491e-05 -2.083609703e-05 -1.304266906e-05 4.11110022e-05 4.783414079e-06 -2.083609703e-05 -4.933210552e-05 -1.566122516e-06 -5.056049867e-06 -1.50294479e-05 -8.222767925e-06 6.067743614e-06 --5.056049867e-06 -5.364390679e-05 -6.073406116e-05 -1.350915597e-05 6.43732056e-05 --1.50294479e-05 -6.073406116e-05 -2.637281491e-05 1.636301056e-05 7.287947763e-05 --8.222767925e-06 -1.350915597e-05 1.636301056e-05 2.024139283e-05 1.620963752e-05 -6.067743614e-06 6.43732056e-05 7.287947763e-05 1.620963752e-05 -7.724846757e-05 -8.154056645e-07 -1.981960709e-06 -6.808314832e-06 -3.908099393e-06 2.378225109e-06 --1.981960709e-06 -4.07490531e-05 -5.459548122e-05 -1.658133067e-05 4.889723804e-05 --6.808314832e-06 -5.459548122e-05 -5.423222111e-05 -8.089075494e-06 6.551262107e-05 --3.908099393e-06 -1.658133067e-05 -8.089075494e-06 3.803347043e-06 1.989710086e-05 -2.378225109e-06 4.889723804e-05 6.551262107e-05 1.989710086e-05 -5.86747349e-05 -4.815232301e-07 -1.280208853e-06 -4.19216237e-06 -2.37089179e-06 1.536201222e-06 --1.280208853e-06 -2.190587879e-05 -2.837219121e-05 -8.184076148e-06 2.628631627e-05 --4.19216237e-06 -2.837219121e-05 -2.520500502e-05 -1.979354551e-06 3.404570175e-05 --2.37089179e-06 -8.184076148e-06 -1.979354551e-06 3.380825172e-06 9.820636841e-06 -1.536201222e-06 2.628631627e-05 3.404570175e-05 9.820636841e-06 -3.154269363e-05 -4.178135529e-07 -1.331256943e-06 -3.982014181e-06 -2.183585735e-06 1.597585822e-06 --1.331256943e-06 -1.46579115e-05 -1.682399458e-05 -3.862277898e-06 1.758945069e-05 --3.982014181e-06 -1.682399458e-05 -8.13134925e-06 3.915942505e-06 2.018837319e-05 --2.183585735e-06 -3.862277898e-06 3.915942505e-06 5.217790786e-06 4.634445166e-06 -1.597585822e-06 1.758945069e-05 2.018837319e-05 4.634445166e-06 -2.110728909e-05 -4.486281092e-07 -1.620302199e-06 -4.573462491e-06 -2.453705059e-06 1.944367752e-06 --1.620302199e-06 -1.194011214e-05 -1.126301352e-05 -1.322634768e-06 1.432790616e-05 --4.573462491e-06 -1.126301352e-05 3.245840085e-06 9.111424216e-06 1.35152363e-05 --2.453705059e-06 -1.322634768e-06 9.111424216e-06 7.590247703e-06 1.587013582e-06 -1.944367752e-06 1.432790616e-05 1.35152363e-05 1.587013582e-06 -1.719321331e-05 -3.904404979e-07 -1.400390177e-06 -3.964964238e-06 -2.129827322e-06 1.680438441e-06 --1.400390177e-06 -1.058097209e-05 -1.014230691e-05 -1.292637596e-06 1.269686967e-05 --3.964964238e-06 -1.014230691e-05 2.224005484e-06 7.68285619e-06 1.217044041e-05 --2.129827322e-06 -1.292637596e-06 7.68285619e-06 6.505525163e-06 1.55109648e-06 -1.680438441e-06 1.269686967e-05 1.217044041e-05 1.55109648e-06 -1.523588739e-05 -3.101167653e-07 -9.748646856e-07 -2.934765385e-06 -1.613054001e-06 1.169842483e-06 --9.748646856e-07 -1.11326693e-05 -1.294224231e-05 -3.056252335e-06 1.335897822e-05 --2.934765385e-06 -1.294224231e-05 -6.840339098e-06 2.575414831e-06 1.55303174e-05 --1.613054001e-06 -3.056252335e-06 2.575414831e-06 3.738063097e-06 3.667357501e-06 -1.169842483e-06 1.335897822e-05 1.55303174e-05 3.667357501e-06 -1.603050393e-05 --0.01425411747 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.06231351187 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.006963854756 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.001920491484 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.004898278316 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.002232888993 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0008524375423 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0002425519903 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0004000960837 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0001166642167 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.026782885e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --6.254841048e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --9.840757263e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.03491254468 0.09097414074 -0.0134583104 0 0 -0.09097414074 0.02072954474 -0.04347618693 0 0 --0.0134583104 -0.04347618693 0.006838827221 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.08673873096 0.04504112739 0.04513082574 0 0 -0.04504112739 0.02823640614 -0.01002856456 0 0 -0.04513082574 -0.01002856456 -0.04207764788 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.03016764366 0.007418774914 0.01538896144 0 0 -0.007418774914 0.009840252496 -0.004058017485 0 0 -0.01538896144 -0.004058017485 -0.005959452528 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.003370468467 0.003226782696 -0.001942506064 0 0 -0.003226782696 0.0007280303393 -0.001389736302 0 0 --0.001942506064 -0.001389736302 -0.0002953224206 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.006250674534 0.002559719423 0.003284726238 0 0 -0.002559719423 0.0025883264 -0.001238480994 0 0 -0.003284726238 -0.001238480994 -0.001403467641 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0008215609438 0.0002574996792 -0.0004762294322 0 0 -0.0002574996792 5.553167415e-05 -0.0001210809654 0 0 --0.0004762294322 -0.0001210809654 0.0002747114841 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0001194340319 0.000526508839 -0.0001205962369 0 0 -0.000526508839 0.0001157310323 -0.0003468567449 0 0 --0.0001205962369 -0.0003468567449 -2.294149602e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0009713869757 -0.0001525587204 0.0005431110502 0 0 --0.0001525587204 -8.815511867e-05 3.472371587e-05 0 0 -0.0005431110502 3.472371587e-05 -0.0002938854347 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0002122969987 0.000329452658 -7.050952978e-05 0 0 -0.000329452658 0.0001552322441 -0.0001787842163 0 0 --7.050952978e-05 -0.0001787842163 2.494371892e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --5.361009455e-05 6.874685946e-06 2.923808984e-05 0 0 -6.874685946e-06 -3.216068416e-05 -2.310747643e-05 0 0 -2.923808984e-05 -2.310747643e-05 -2.777226129e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -3.476091142e-05 2.350672289e-05 -1.673509385e-05 0 0 -2.350672289e-05 -2.234443641e-05 -2.357362545e-05 0 0 --1.673509385e-05 -2.357362545e-05 1.279382434e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 --9.442106464e-05 8.198255398e-06 5.436112281e-05 0 0 -8.198255398e-06 -4.25411664e-06 -1.176865794e-05 0 0 -5.436112281e-05 -1.176865794e-05 -2.537995267e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -2.911320196e-05 3.368184895e-05 -1.083568598e-05 0 0 -3.368184895e-05 -1.272070493e-06 -2.517004038e-05 0 0 --1.083568598e-05 -2.517004038e-05 4.602520494e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.06091319397 0.05473029427 -0.001902745987 -0.02537799611 0.05309164806 -0.05473029427 0.0422293508 -0.05431357114 0.0991772852 0.02364288347 --0.001902745987 -0.05431357114 0.00357522536 0.02694974287 0.09274662246 --0.02537799611 0.0991772852 0.02694974287 0.07854687521 -0.02464423805 -0.05309164806 0.02364288347 0.09274662246 -0.02464423805 0.00257714704 --0.06530458738 0.0401550758 0.02792536299 0.002165453367 -0.009021857698 -0.0401550758 0.02906971793 -0.00405724343 0.0255508385 -0.01162587543 -0.02792536299 -0.00405724343 -0.06482683812 -0.03625850408 0.005593897017 -0.002165453367 0.0255508385 -0.03625850408 -0.008199756239 -0.01293003368 --0.009021857698 -0.01162587543 0.005593897017 -0.01293003368 0.01691694507 --0.02844669396 0.01076585721 0.02208902937 0.01078838613 -0.006019442983 -0.01076585721 0.02332280236 -0.01350136367 0.003012429262 -0.01159505162 -0.02208902937 -0.01350136367 -0.02224444569 -0.0128309641 0.006034791209 -0.01078838613 0.003012429262 -0.0128309641 -0.003829558087 -0.001909574051 --0.006019442983 -0.01159505162 0.006034791209 -0.001909574051 0.005647527269 --0.005569971494 -0.0019597692 0.006123028689 0.0007701495042 0.002388283744 --0.0019597692 -0.0003389504549 0.002442767479 0.001802694839 0.0003915464493 -0.006123028689 0.002442767479 -0.006276354815 -0.001688924924 -0.0004871267432 -0.0007701495042 0.001802694839 -0.001688924924 4.808460019e-05 -0.0005309447165 -0.002388283744 0.0003915464493 -0.0004871267432 -0.0005309447165 0.0007525751979 --0.0004918005755 0.004615375024 -0.0005954312996 0.001161415973 -0.002509634694 -0.004615375024 0.005904579063 -0.004930145291 0.0001697247353 -0.003037880586 --0.0005954312996 -0.004930145291 0.0009674091965 -0.001304046112 0.002417003129 -0.001161415973 0.0001697247353 -0.001304046112 -0.0004513630697 -0.0001718242441 --0.002509634694 -0.003037880586 0.002417003129 -0.0001718242441 0.001520779334 --0.002267494528 -0.001077686584 0.002294590416 0.0004869358257 0.0006410211894 --0.001077686584 -0.0003452797688 0.0008912708175 0.0002316473522 0.0002213500541 -0.002294590416 0.0008912708175 -0.002115508683 -0.0004600733446 -0.0004902946136 -0.0004869358257 0.0002316473522 -0.0004600733446 -8.553223425e-05 -0.0001242131878 -0.0006410211894 0.0002213500541 -0.0004902946136 -0.0001242131878 -0.0001106233883 -0.0005271437311 0.0006522854321 -0.0008785425324 -0.0001551766201 -0.0002804556555 -0.0006522854321 0.0002405333899 -0.0008464476341 -0.0001038585342 -1.399647424e-05 --0.0008785425324 -0.0008464476341 0.0006671513131 2.60363925e-05 0.0004758179732 --0.0001551766201 -0.0001038585342 2.60363925e-05 2.025468991e-05 7.550561289e-05 --0.0002804556555 -1.399647424e-05 0.0004758179732 7.550561289e-05 -4.846857559e-05 --0.0008421195971 -0.0001862958396 0.0009522833927 0.0002704881494 0.0001071900916 --0.0001862958396 0.0001962450781 0.0001058578446 0.0001391254754 -8.006597435e-05 -0.0009522833927 0.0001058578446 -0.000961577795 -0.000242721374 5.338063427e-05 -0.0002704881494 0.0001391254754 -0.000242721374 -9.21651212e-06 -3.602255877e-05 -0.0001071900916 -8.006597435e-05 5.338063427e-05 -3.602255877e-05 2.492464255e-05 -0.000212799373 0.0002266396014 -0.0002396683137 -1.25082205e-05 -0.0001149617804 -0.0002266396014 0.0002023082503 -0.0002690728693 -2.063531765e-05 -8.960496911e-05 --0.0002396683137 -0.0002690728693 0.0002510475261 2.072065498e-05 0.000158953798 --1.25082205e-05 -2.063531765e-05 2.072065498e-05 8.350316691e-06 1.583539107e-05 --0.0001149617804 -8.960496911e-05 0.000158953798 1.583539107e-05 2.673815294e-05 --6.396527676e-05 -1.286584832e-05 2.734493449e-05 3.609216291e-06 1.463850888e-05 --1.286584832e-05 -3.255537485e-05 -2.629412459e-05 -3.06228242e-06 3.706915564e-05 -2.734493449e-05 -2.629412459e-05 -5.971276844e-05 -1.562780202e-05 2.221942747e-05 -3.609216291e-06 -3.06228242e-06 -1.562780202e-05 1.831403417e-06 5.652026443e-06 -1.463850888e-05 3.706915564e-05 2.221942747e-05 5.652026443e-06 -3.479210029e-05 --3.946733448e-05 -2.94373428e-05 4.075705224e-05 -2.695556365e-09 2.167815348e-05 --2.94373428e-05 -3.820667437e-05 1.634289433e-05 1.145453838e-05 3.168424652e-05 -4.075705224e-05 1.634289433e-05 -5.268838231e-05 7.953871997e-06 1.28164259e-05 --2.695556365e-09 1.145453838e-05 7.953871997e-06 1.787774223e-05 3.497475302e-07 -2.167815348e-05 3.168424652e-05 1.28164259e-05 3.497475302e-07 -2.466634418e-05 --1.203703747e-05 1.509186151e-05 1.447120981e-05 8.344750073e-06 -4.047507998e-06 -1.509186151e-05 2.731996603e-05 -2.867535013e-05 1.019140933e-05 -5.837537309e-06 -1.447120981e-05 -2.867535013e-05 -6.462162889e-06 5.703744829e-06 3.129514333e-05 -8.344750073e-06 1.019140933e-05 5.703744829e-06 1.381026365e-05 -1.001311021e-06 --4.047507998e-06 -5.837537309e-06 3.129514333e-05 -1.001311021e-06 -5.076029769e-06 -1.240763481e-05 8.307277491e-06 -1.904354031e-05 -5.150974954e-06 -4.254576999e-07 -8.307277491e-06 -6.571002528e-06 -2.749292682e-05 -1.684553314e-06 1.402291347e-05 --1.904354031e-05 -2.749292682e-05 8.366363449e-06 7.228957635e-06 2.68682664e-05 --5.150974954e-06 -1.684553314e-06 7.228957635e-06 8.742757526e-06 4.961437641e-06 --4.254576999e-07 1.402291347e-05 2.68682664e-05 4.961437641e-06 -1.703738495e-05 -0.004248521904 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.02072889773 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0001410175273 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.002730957002 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.000351628688 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.000212335021 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --9.793873742e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -8.837755527e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --4.105936043e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -5.959041899e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -2.93219139e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -3.883758805e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --7.313000933e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0376523555 -0.01613871587 -0.03813610534 0 0 --0.01613871587 0.09029547059 -0.04318989997 0 0 --0.03813610534 -0.04318989997 -0.0560694365 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.02046468879 -0.01133326783 0.002139557763 0 0 --0.01133326783 0.1174056811 0.07460583001 0 0 -0.002139557763 0.07460583001 0.04125947144 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.001161060956 -0.0006654518541 -0.001572556796 0 0 --0.0006654518541 0.02793009942 0.02473680615 0 0 --0.001572556796 0.02473680615 0.02238011106 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.001190098704 0.000100439487 0.0002711184691 0 0 -0.000100439487 -0.0132763968 -0.00646289651 0 0 -0.0002711184691 -0.00646289651 -0.001816237012 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0002876806383 0.0004943783131 0.0001650403601 0 0 -0.0004943783131 -0.01046309222 -0.009454099416 0 0 -0.0001650403601 -0.009454099416 -0.008159123317 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.692263292e-06 -8.815748538e-05 -6.480188068e-05 0 0 --8.815748538e-05 0.002310676175 0.001780765109 0 0 --6.480188068e-05 0.001780765109 0.001370170456 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0001019977979 -0.0001343513165 -3.480391707e-05 0 0 --0.0001343513165 0.002640926653 0.001738272645 0 0 --3.480391707e-05 0.001738272645 0.001077434235 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.817438408e-05 8.859444947e-06 -3.874174564e-05 0 0 -8.859444947e-06 -7.696424659e-05 0.0002232048652 0 0 --3.874174564e-05 0.0002232048652 0.0004385700323 0 0 -0 0 0 0 0 -0 0 0 0 0 -2.436287458e-05 4.093202616e-05 1.207320502e-05 0 0 -4.093202616e-05 -0.0008609277182 -0.0008232627012 0 0 -1.207320502e-05 -0.0008232627012 -0.00073760548 0 0 -0 0 0 0 0 -0 0 0 0 0 --4.128044183e-06 -2.539277106e-06 -5.616921261e-06 0 0 --2.539277106e-06 3.149996141e-05 9.445180169e-05 0 0 --5.616921261e-06 9.445180169e-05 0.0001324703477 0 0 -0 0 0 0 0 -0 0 0 0 0 --8.17007945e-06 -8.761499342e-06 -5.845834046e-06 0 0 --8.761499342e-06 0.0001576660801 4.941465605e-05 0 0 --5.845834046e-06 4.941465605e-05 -1.166500085e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -5.496218307e-06 9.279431153e-07 -9.644129209e-06 0 0 -9.279431153e-07 2.396750297e-05 4.721881328e-05 0 0 --9.644129209e-06 4.721881328e-05 7.005395682e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -3.495428829e-06 3.227014497e-06 -2.643784904e-06 0 0 -3.227014497e-06 -5.340913814e-05 -6.771017845e-05 0 0 --2.643784904e-06 -6.771017845e-05 -6.608974176e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0397838424 -0.0139321387 -0.01032290441 -0.03248187357 0.02009385847 --0.0139321387 -0.005218491391 -0.01316958284 -0.01195754859 -0.003890948627 --0.01032290441 -0.01316958284 0.05389713864 0.01867168064 0.01970240247 --0.03248187357 -0.01195754859 0.01867168064 0.02277466525 0.03778814853 -0.02009385847 -0.003890948627 0.01970240247 0.03778814853 -0.04307581528 --0.01104320379 -0.009325672304 0.00747540512 -0.01037150045 -0.006986195341 --0.009325672304 -0.00567651529 0.003017471425 -0.002607318017 -0.0003356878896 -0.00747540512 0.003017471425 0.004852460194 0.003511604572 0.000982701581 --0.01037150045 -0.002607318017 0.003511604572 0.006826075374 0.0147450556 --0.006986195341 -0.0003356878896 0.000982701581 0.0147450556 0.01386935223 --0.0006120100387 -0.0006607272278 0.0009766007432 -0.0001388488213 -0.0004600069949 --0.0006607272278 -0.0004593584939 0.0006181160104 3.133130833e-05 0.0001250522851 -0.0009766007432 0.0006181160104 -0.0007872899447 -7.381276421e-05 -0.0003130511661 --0.0001388488213 3.133130833e-05 -7.381276421e-05 0.0001062223994 0.0003546171949 --0.0004600069949 0.0001250522851 -0.0003130511661 0.0003546171949 0.00119573664 --0.0004439217357 -0.0001278940643 -0.000281110944 -0.0005410947462 0.0001862719145 --0.0001278940643 -2.381230386e-05 -0.0002885742032 -0.000198713947 -9.58821702e-05 --0.000281110944 -0.0002885742032 0.0009624440002 0.0003048361721 0.0003403458971 --0.0005410947462 -0.000198713947 0.0003048361721 0.0003638799354 0.0006263252137 -0.0001862719145 -9.58821702e-05 0.0003403458971 0.0006263252137 -0.0005116575856 --6.0671725e-05 -3.651340933e-05 5.165767847e-05 9.549119097e-06 2.981001398e-05 --3.651340933e-05 -2.420355571e-05 3.510390225e-05 4.646052115e-06 1.263787896e-05 -5.165767847e-05 3.510390225e-05 -5.099343837e-05 -5.994749177e-06 -1.561785306e-05 -9.549119097e-06 4.646052115e-06 -5.994749177e-06 -1.941091863e-06 -7.164667909e-06 -2.981001398e-05 1.263787896e-05 -1.561785306e-05 -7.164667909e-06 -2.705738297e-05 -9.725602901e-07 4.386209612e-06 -8.852719514e-06 -6.402717345e-07 7.54185527e-06 -4.386209612e-06 3.42542388e-06 -5.992482805e-06 -1.028415507e-06 -1.079755306e-06 --8.852719514e-06 -5.992482805e-06 1.011136183e-05 1.895840388e-06 4.088108023e-06 --6.402717345e-07 -1.028415507e-06 1.895840388e-06 5.622461335e-07 -1.07402823e-06 -7.54185527e-06 -1.079755306e-06 4.088108023e-06 -1.07402823e-06 -1.687113399e-05 --2.617554817e-05 -3.050775246e-05 2.896633208e-05 -3.421027577e-05 -4.00732617e-05 --3.050775246e-05 -1.942579021e-05 1.299161117e-05 -7.60870568e-06 -1.64563784e-06 -2.896633208e-05 1.299161117e-05 8.669986967e-06 9.370770081e-06 -5.612466828e-07 --3.421027577e-05 -7.60870568e-06 9.370770081e-06 2.150602057e-05 5.066729916e-05 --4.00732617e-05 -1.64563784e-06 -5.612466828e-07 5.066729916e-05 7.675886478e-05 --1.11912101e-05 1.072910188e-05 -3.277457773e-05 -9.024798194e-06 3.748289708e-05 -1.072910188e-05 1.012085413e-05 -2.36255327e-05 -6.43276722e-06 -4.004706381e-06 --3.277457773e-05 -2.36255327e-05 4.807447778e-05 1.137751698e-05 1.940965171e-05 --9.024798194e-06 -6.43276722e-06 1.137751698e-05 7.199108561e-06 3.52883003e-06 -3.748289708e-05 -4.004706381e-06 1.940965171e-05 3.52883003e-06 -7.960299248e-05 --4.886158617e-06 6.1921359e-07 -3.434593342e-06 2.686981825e-07 9.835540766e-06 -6.1921359e-07 9.059672203e-07 -2.332461609e-06 -5.512231416e-07 1.68134927e-07 --3.434593342e-06 -2.332461609e-06 4.804884019e-06 1.266149353e-06 2.399986784e-06 -2.686981825e-07 -5.512231416e-07 1.266149353e-06 3.520405247e-07 -1.666254906e-06 -9.835540766e-06 1.68134927e-07 2.399986784e-06 -1.666254906e-06 -1.827637224e-05 --5.93867872e-06 -4.681207542e-06 4.887518905e-06 -3.044086955e-06 -1.651227497e-06 --4.681207542e-06 -2.966368877e-06 2.638320844e-06 -6.31382221e-07 4.167170658e-07 -4.887518905e-06 2.638320844e-06 -8.620092046e-07 8.291719226e-07 -4.880762062e-07 --3.044086955e-06 -6.31382221e-07 8.291719226e-07 2.155826171e-06 4.680166445e-06 --1.651227497e-06 4.167170658e-07 -4.880762062e-07 4.680166445e-06 4.569012291e-06 --3.646486374e-06 -2.198876847e-07 -4.352293558e-06 -5.005492436e-06 3.023488185e-06 --2.198876847e-07 5.017514991e-07 -3.831586828e-06 -1.995498263e-06 -1.102069687e-06 --4.352293558e-06 -3.831586828e-06 1.0724175e-05 3.121888381e-06 3.882488999e-06 --5.005492436e-06 -1.995498263e-06 3.121888381e-06 3.376830084e-06 5.432728236e-06 -3.023488185e-06 -1.102069687e-06 3.882488999e-06 5.432728236e-06 -7.723177859e-06 --3.404324782e-06 1.372358348e-06 -5.792405106e-06 -2.236903552e-06 7.578020862e-06 -1.372358348e-06 1.545528732e-06 -4.310322615e-06 -1.386615715e-06 -7.05137191e-07 --5.792405106e-06 -4.310322615e-06 9.500341688e-06 2.421870106e-06 3.837930654e-06 --2.236903552e-06 -1.386615715e-06 2.421870106e-06 1.771035739e-06 1.352795172e-06 -7.578020862e-06 -7.05137191e-07 3.837930654e-06 1.352795172e-06 -1.578141869e-05 --3.214499094e-06 -1.174686424e-06 -2.855153219e-07 -1.889442494e-06 1.917004842e-06 --1.174686424e-06 -5.119066252e-07 -5.715576349e-07 -7.120037695e-07 -1.122169623e-07 --2.855153219e-07 -5.715576349e-07 3.021159181e-06 1.140795737e-06 1.159273832e-06 --1.889442494e-06 -7.120037695e-07 1.140795737e-06 1.391646261e-06 2.179111933e-06 -1.917004842e-06 -1.122169623e-07 1.159273832e-06 2.179111933e-06 -3.645513667e-06 -0.06585008519 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.1244204128 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.1165024039 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.005782632491 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.01535622586 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.00881350413 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.00747712168 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0007688605573 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0003104210826 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0009413186462 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0002768722601 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0001346284578 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -5.67912916e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.03686737907 0.003813926672 0.01581584344 0 0 -0.003813926672 0.1388047804 -0.04589478889 0 0 -0.01581584344 -0.04589478889 -0.05973845878 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.02295578908 0.001196100739 0.01275949908 0 0 -0.001196100739 0.1090152889 0.01070572606 0 0 -0.01275949908 0.01070572606 0.003264975343 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.002045624382 -0.003022189839 -0.002947843185 0 0 --0.003022189839 0.05306512524 0.03085232878 0 0 --0.002947843185 0.03085232878 0.01094158004 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.001668618208 0.0008484899903 0.001478967214 0 0 -0.0008484899903 -0.008411289774 -0.01084007314 0 0 -0.001478967214 -0.01084007314 -0.007840747701 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0003738865959 -0.000740533676 -0.0006290324467 0 0 --0.000740533676 0.01455028766 0.008433729049 0 0 --0.0006290324467 0.008433729049 0.003354249442 0 0 -0 0 0 0 0 -0 0 0 0 0 -6.348509052e-05 0.000196478943 0.0001959279725 0 0 -0.000196478943 -0.00419372478 -0.003542868173 0 0 -0.0001959279725 -0.003542868173 -0.002816726111 0 0 -0 0 0 0 0 -0 0 0 0 0 -6.005862395e-05 -8.928670359e-05 -2.642990808e-05 0 0 --8.928670359e-05 0.001865980989 0.0009967308121 0 0 --2.642990808e-05 0.0009967308121 0.0005385582325 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.707853221e-07 -1.437662532e-05 -1.114234911e-05 0 0 --1.437662532e-05 0.0004952033974 0.0003839077202 0 0 --1.114234911e-05 0.0003839077202 0.0002960250485 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.33276958e-05 -1.068203396e-05 -1.131761071e-05 0 0 --1.068203396e-05 0.0001784604257 -3.260508211e-05 0 0 --1.131761071e-05 -3.260508211e-05 -0.0002145946546 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.148544599e-07 5.109693728e-06 4.063752429e-06 0 0 -5.109693728e-06 -0.0001502078147 -0.0001285154136 0 0 -4.063752429e-06 -0.0001285154136 -0.000109075906 0 0 -0 0 0 0 0 -0 0 0 0 0 -6.433103088e-06 3.482684505e-07 3.104437116e-06 0 0 -3.482684505e-07 -4.415510739e-05 -4.194955643e-05 0 0 -3.104437116e-06 -4.194955643e-05 -2.416784123e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.96313153e-06 -5.434395346e-06 -5.81312334e-06 0 0 --5.434395346e-06 0.0001423082692 0.0001042368512 0 0 --5.81312334e-06 0.0001042368512 6.680621218e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.547327663e-06 1.294415516e-06 -2.054755189e-07 0 0 -1.294415516e-06 -3.514210034e-05 -3.807099907e-05 0 0 --2.054755189e-07 -3.807099907e-05 -4.566664993e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.01847215019 0.0007280128477 0.005257196653 -0.09465614751 0.05959165708 -0.0007280128477 0.04975468163 -0.00796641495 -0.002148702002 0.02432379983 -0.005257196653 -0.00796641495 -0.04127373373 0.01954656578 0.004120278484 --0.09465614751 -0.002148702002 0.01954656578 0.04914046259 0.0271229038 -0.05959165708 0.02432379983 0.004120278484 0.0271229038 -0.09249089031 -0.01053468178 -0.009687344139 -0.006707533777 -0.04218978778 -0.006555215661 --0.009687344139 0.05427099449 0.02813302328 -0.01787678496 0.0252528656 --0.006707533777 0.02813302328 0.01144386815 -0.003879038144 0.01540521791 --0.04218978778 -0.01787678496 -0.003879038144 0.1093926354 0.01251308377 --0.006555215661 0.0252528656 0.01540521791 0.01251308377 0.01288779106 -0.01320669478 0.001884309542 0.0007507133451 -0.0214268774 -0.01844325673 -0.001884309542 0.001838875684 0.00131176702 -0.00306594325 -0.002750837354 -0.0007507133451 0.00131176702 0.0009336220003 -0.001955394937 -0.0009658080167 --0.0214268774 -0.00306594325 -0.001955394937 0.01844645689 0.03380500744 --0.01844325673 -0.002750837354 -0.0009658080167 0.03380500744 0.02484223146 -0.003277558492 0.0001506618798 0.0002117148967 -0.002604729698 -0.00516125967 -0.0001506618798 0.001121387309 -1.192717504e-06 -0.0001783018334 0.0002233874467 -0.0002117148967 -1.192717504e-06 -0.0006569909894 0.0002679081195 -0.0001170751869 --0.002604729698 -0.0001783018334 0.0002679081195 0.001331213051 0.001921693194 --0.00516125967 0.0002233874467 -0.0001170751869 0.001921693194 0.009145010039 --0.002099161822 -5.078497273e-05 -0.0001839573743 -0.002297525687 0.004296725012 --5.078497273e-05 0.0002704746483 0.0001892446419 -0.0004054939838 0.000167356969 --0.0001839573743 0.0001892446419 0.000131596267 -0.0002347652116 0.0003688282758 --0.002297525687 -0.0004054939838 -0.0002347652116 0.002742625525 0.003442842037 -0.004296725012 0.000167356969 0.0003688282758 0.003442842037 -0.00849127115 -0.001715662596 0.0001680924978 0.0001272345949 -0.0008458302669 -0.002860725328 -0.0001680924978 -4.618086592e-05 -5.188726949e-05 -4.405343223e-05 -0.0002738868078 -0.0001272345949 -5.188726949e-05 -5.26873335e-05 -3.218197852e-05 -0.0002077761698 --0.0008458302669 -4.405343223e-05 -3.218197852e-05 0.0002238406713 0.00140927045 --0.002860725328 -0.0002738868078 -0.0002077761698 0.00140927045 0.004779695928 --0.0009263398062 -0.0001008197146 -9.005923843e-05 0.0001269290209 0.00162326639 --0.0001008197146 0.0002269696417 0.0001463242357 -8.951416143e-05 0.000196686589 --9.005923843e-05 0.0001463242357 9.173629189e-05 -3.449393773e-05 0.0001647910068 -0.0001269290209 -8.951416143e-05 -3.449393773e-05 0.0004492797945 -0.0003973479713 -0.00162326639 0.000196686589 0.0001647910068 -0.0003973479713 -0.002787940703 -0.0009435533925 0.0001041124263 7.54186941e-05 -0.0005708588088 -0.001548302221 -0.0001041124263 -6.513510489e-05 -6.5792564e-05 -1.45688202e-05 -0.000166040694 -7.54186941e-05 -6.5792564e-05 -6.291845702e-05 -9.887642975e-06 -0.0001200669164 --0.0005708588088 -1.45688202e-05 -9.887642975e-06 0.0001038906854 0.0009488449977 --0.001548302221 -0.000166040694 -0.0001200669164 0.0009488449977 0.002546741776 --0.0004600966278 -3.27699423e-05 -3.020719742e-05 8.311664057e-05 0.00080126789 --3.27699423e-05 -1.392361999e-05 -1.150541098e-05 9.994915812e-06 5.738000111e-05 --3.020719742e-05 -1.150541098e-05 -9.51678175e-06 8.774825099e-06 5.279235365e-05 -8.311664057e-05 9.994915812e-06 8.774825099e-06 -1.581140143e-05 -0.0001460905507 -0.00080126789 5.738000111e-05 5.279235365e-05 -0.0001460905507 -0.001394863987 -7.726304657e-05 7.769403663e-06 5.923237721e-06 -4.174670487e-05 -0.000127850034 -7.769403663e-06 1.244521064e-05 8.007938916e-06 -8.845347358e-06 -1.182161077e-05 -5.923237721e-06 8.007938916e-06 5.005935191e-06 -5.204334543e-06 -9.418760803e-06 --4.174670487e-05 -8.845347358e-06 -5.204334543e-06 4.070852795e-05 6.090935457e-05 --0.000127850034 -1.182161077e-05 -9.418760803e-06 6.090935457e-05 0.0002143871338 -1.092783905e-06 -3.209198852e-07 7.599108288e-08 -2.235592893e-07 -2.0335049e-06 --3.209198852e-07 7.823493344e-06 1.86798557e-06 -1.862953828e-06 2.884984807e-06 -7.599108288e-08 1.86798557e-06 -1.710359817e-06 6.903385475e-07 1.038195959e-06 --2.235592893e-07 -1.862953828e-06 6.903385475e-07 2.731363175e-06 -1.132732021e-05 --2.0335049e-06 2.884984807e-06 1.038195959e-06 -1.132732021e-05 8.93559611e-06 -3.613059333e-05 5.436098395e-06 3.747938279e-06 -3.49254095e-05 -5.612331631e-05 -5.436098395e-06 -7.701708991e-06 -8.211356748e-06 1.389334791e-06 -7.874269552e-06 -3.747938279e-06 -8.211356748e-06 -8.098189413e-06 1.429523329e-06 -5.423361797e-06 --3.49254095e-05 1.389334791e-06 1.429523329e-06 -1.491222244e-06 5.606315507e-05 --5.612331631e-05 -7.874269552e-06 -5.423361797e-06 5.606315507e-05 8.806655314e-05 --3.094212509e-05 -1.63151005e-06 -1.307777344e-06 5.977109272e-06 5.383645212e-05 --1.63151005e-06 -2.164447971e-06 -3.009342253e-06 2.014161989e-06 3.464656798e-06 --1.307777344e-06 -3.009342253e-06 -3.350412304e-06 1.937945196e-06 2.633587838e-06 -5.977109272e-06 2.014161989e-06 1.937945196e-06 -7.927585296e-06 -1.263649204e-05 -5.383645212e-05 3.464656798e-06 2.633587838e-06 -1.263649204e-05 -9.234643939e-05 --0.07992156578 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.03669836403 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.009989252922 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.002844202065 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.007654330768 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.003923432166 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.001744304106 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0003543477457 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0003690133466 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0002536869345 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.501644091e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --6.373798256e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -2.353118207e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.1111786613 -0.02361301575 -0.06941467362 0 0 --0.02361301575 -0.05013455621 -0.03610797978 0 0 --0.06941467362 -0.03610797978 0.02253699165 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.07325792385 -0.03325223541 -0.04181132786 0 0 --0.03325223541 -0.0310167009 0.01025556098 0 0 --0.04181132786 0.01025556098 0.03238092672 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.05162928489 -0.01634450961 0.009690518393 0 0 --0.01634450961 -0.003445267185 0.001623053377 0 0 -0.009690518393 0.001623053377 0.005834915815 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.005859916235 0.00177707599 -0.005712587561 0 0 -0.00177707599 -0.0008801935049 -0.00114995312 0 0 --0.005712587561 -0.00114995312 0.002221369735 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.009514142569 -0.003244860913 0.0003440069292 0 0 --0.003244860913 -0.0006720180767 0.00020674744 0 0 -0.0003440069292 0.00020674744 0.002559954984 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.001321747343 0.0003261917071 -0.0007727221422 0 0 -0.0003261917071 7.216906765e-05 -0.0001550530183 0 0 --0.0007727221422 -0.0001550530183 0.0004242908453 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0004136341473 2.451085277e-05 -0.0002156610964 0 0 -2.451085277e-05 -0.000135970526 -0.0002034553783 0 0 --0.0002156610964 -0.0002034553783 0.0001302879342 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.001359092417 -0.0004529574472 0.0006194119882 0 0 --0.0004529574472 -0.000104619057 0.0002115927862 0 0 -0.0006194119882 0.0002115927862 -0.0002292967 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0005103608598 0.0001167770481 -0.0004861716915 0 0 -0.0001167770481 6.83040555e-05 -0.0001135698314 0 0 --0.0004861716915 -0.0001135698314 0.0004010718162 0 0 -0 0 0 0 0 -0 0 0 0 0 --9.890179706e-05 -2.818689297e-05 4.235863911e-05 0 0 --2.818689297e-05 -1.794640286e-05 6.101031926e-06 0 0 -4.235863911e-05 6.101031926e-06 -2.86917915e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -2.908267143e-05 2.326665615e-05 -5.455753649e-06 0 0 -2.326665615e-05 2.063360934e-06 -1.109340018e-05 0 0 --5.455753649e-06 -1.109340018e-05 -1.231349083e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0001102079182 -4.494032841e-05 3.015658013e-05 0 0 --4.494032841e-05 -5.288604378e-06 1.732500254e-05 0 0 -3.015658013e-05 1.732500254e-05 9.186616425e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 -6.803085749e-05 1.493817504e-05 -4.950352625e-05 0 0 -1.493817504e-05 8.494534496e-06 -1.105966942e-05 0 0 --4.950352625e-05 -1.105966942e-05 3.734309843e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.07824627654 -0.0316157991 -0.06158921848 0.01858606655 0.004074883365 --0.0316157991 -0.07095234793 -0.05016872173 -0.0442466364 -0.0495367338 --0.06158921848 -0.05016872173 0.03939060955 0.0583287766 0.008773587274 -0.01858606655 -0.0442466364 0.0583287766 0.04750067383 0.01030924162 -0.004074883365 -0.0495367338 0.008773587274 0.01030924162 0.09556262087 --0.08840079509 -0.02017437244 -0.04311056776 -0.01225802996 -0.01051069302 --0.02017437244 -0.0683602128 0.01004385507 -0.02401773362 0.01187082935 --0.04311056776 0.01004385507 0.02395357001 0.01984824463 -0.008179079871 --0.01225802996 -0.02401773362 0.01984824463 0.00703227521 0.009648518838 --0.01051069302 0.01187082935 -0.008179079871 0.009648518838 -0.0032038572 --0.04531037854 -0.02249776699 0.01019394249 -0.007691573501 0.002267564413 --0.02249776699 -0.01623782279 0.004442224286 -0.006102910864 0.002884311759 -0.01019394249 0.004442224286 0.01876168215 0.01166081733 0.004930506888 --0.007691573501 -0.006102910864 0.01166081733 0.0026192999 0.003733464856 -0.002267564413 0.002884311759 0.004930506888 0.003733464856 0.0005526015262 --0.008497202096 -0.00631289415 0.007182589497 0.001577012918 0.003292938741 --0.00631289415 -0.004308565119 0.005089857497 0.0001498712077 0.000855442379 -0.007182589497 0.005089857497 -0.00652439446 0.0001809509782 -0.002170701622 -0.001577012918 0.0001498712077 0.0001809509782 0.0007770218899 0.0001655862694 -0.003292938741 0.000855442379 -0.002170701622 0.0001655862694 0.0004156422347 --0.0009544411195 0.0006741408903 -0.005177165738 -0.002262432754 -0.00174737523 -0.0006741408903 0.0005057076154 -0.003640002139 -0.001521000056 -0.001093761651 --0.005177165738 -0.003640002139 0.01074736246 0.003206437324 0.002951762057 --0.002262432754 -0.001521000056 0.003206437324 0.0007159601446 0.0008558459356 --0.00174737523 -0.001093761651 0.002951762057 0.0008558459356 0.0008128878283 --0.003556233905 -0.002461989495 0.00324100965 0.0003113939777 0.001120797596 --0.002461989495 -0.001593009937 0.001938078497 0.0001046168439 0.0006924763197 -0.00324100965 0.001938078497 -0.00275076505 -0.0002650234185 -0.0007328753784 -0.0003113939777 0.0001046168439 -0.0002650234185 -3.906427979e-05 2.408874048e-05 -0.001120797596 0.0006924763197 -0.0007328753784 2.408874048e-05 -0.0002670027036 -0.0007587692766 0.0008082048584 -0.001282518352 -0.0002106981838 -0.0005377502384 -0.0008082048584 0.0002810761546 -0.0009751875935 -0.0002644944209 -0.0002217928709 --0.001282518352 -0.0009751875935 0.001073889765 0.0001248193463 0.0004747707725 --0.0002106981838 -0.0002644944209 0.0001248193463 -1.235645527e-05 0.0001080844749 --0.0005377502384 -0.0002217928709 0.0004747707725 0.0001080844749 0.0001699254401 --0.001317926916 -0.0009317921123 0.001040056138 4.085698012e-05 0.0003893546605 --0.0009317921123 -0.0004606946896 0.0006747743506 5.495342349e-05 0.0001200085415 -0.001040056138 0.0006747743506 -0.0003590320031 0.0001843563958 -0.0002063424045 -4.085698012e-05 5.495342349e-05 0.0001843563958 0.0001110578387 -9.803398113e-06 -0.0003893546605 0.0001200085415 -0.0002063424045 -9.803398113e-06 1.217560948e-05 -0.0003260233552 0.0002257640234 -0.0004606741534 -9.996305504e-05 -0.0001287108207 -0.0002257640234 0.000174716657 -0.0003025159423 -5.747066629e-05 -0.0001023872562 --0.0004606741534 -0.0003025159423 0.0006408912981 0.0001420165883 0.0001687594429 --9.996305504e-05 -5.747066629e-05 0.0001420165883 3.393123472e-05 2.94082737e-05 --0.0001287108207 -0.0001023872562 0.0001687594429 2.94082737e-05 5.724757016e-05 --0.00010365119 -4.144171203e-05 5.997356476e-05 3.858939225e-06 5.177069806e-06 --4.144171203e-05 -5.502269737e-05 1.498045906e-05 -1.373786677e-05 1.922133796e-05 -5.997356476e-05 1.498045906e-05 -9.237930503e-05 -2.183786836e-05 -5.563686673e-06 -3.858939225e-06 -1.373786677e-05 -2.183786836e-05 -9.973198242e-06 5.16401171e-06 -5.177069806e-06 1.922133796e-05 -5.563686673e-06 5.16401171e-06 -1.252757134e-06 --6.348636302e-05 -4.280904152e-05 7.694058176e-05 1.862591205e-05 2.21605333e-05 --4.280904152e-05 -2.806077626e-05 5.018617975e-05 1.011800628e-05 5.27816793e-06 -7.694058176e-05 5.018617975e-05 -8.543546935e-05 -5.267969245e-06 -2.930642925e-05 -1.862591205e-05 1.011800628e-05 -5.267969245e-06 6.604030874e-06 -7.989449377e-06 -2.21605333e-05 5.27816793e-06 -2.930642925e-05 -7.989449377e-06 7.151585298e-06 --1.955676499e-05 -1.952132628e-05 -4.758714871e-06 -8.03252068e-06 6.690200355e-06 --1.952132628e-05 2.031585441e-06 -5.561357194e-07 -1.034753403e-06 -1.117866922e-05 --4.758714871e-06 -5.561357194e-07 6.8348978e-05 3.352639024e-05 5.56802538e-06 --8.03252068e-06 -1.034753403e-06 3.352639024e-05 1.514159237e-05 -3.951476346e-07 -6.690200355e-06 -1.117866922e-05 5.56802538e-06 -3.951476346e-07 1.369931869e-05 -1.907785367e-05 1.260868089e-05 -2.41982299e-05 -3.113326552e-06 -5.919937889e-06 -1.260868089e-05 8.328414438e-06 -1.740232594e-05 -2.828629004e-06 -7.348222809e-06 --2.41982299e-05 -1.740232594e-05 2.984908532e-05 8.306014527e-06 6.031321972e-06 --3.113326552e-06 -2.828629004e-06 8.306014527e-06 3.816514697e-06 -3.253046056e-07 --5.919937889e-06 -7.348222809e-06 6.031321972e-06 -3.253046056e-07 7.739096754e-06 --0.03896220548 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.01557227012 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0005538223023 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.00376757358 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.064991384e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0002229671788 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.464770568e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.734071116e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -7.398086368e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.346233141e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --8.002784979e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -2.296619642e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.439324404e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0001556698016 0.003843041733 -0.0009106161721 0 0 -0.003843041733 -0.09429418782 0.03049133347 0 0 --0.0009106161721 0.03049133347 0.1054104132 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0001751819306 0.004620802388 0.002926301457 0 0 -0.004620802388 -0.1195886983 -0.07295835154 0 0 -0.002926301457 -0.07295835154 -0.0410884028 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.690717412e-05 0.001030990308 0.0009021104558 0 0 -0.001030990308 -0.02781123814 -0.02495480914 0 0 -0.0009021104558 -0.02495480914 -0.02198913912 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.695927125e-05 -0.0004819414297 -0.000264239367 0 0 --0.0004819414297 0.01315233335 0.006465142404 0 0 --0.000264239367 0.006465142404 0.002111216451 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.454393187e-05 -0.0003960759452 -0.0003469267482 0 0 --0.0003960759452 0.0104950663 0.009394937126 0 0 --0.0003469267482 0.009394937126 0.008265867732 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.146556034e-06 8.658235677e-05 6.679676841e-05 0 0 -8.658235677e-05 -0.00231118891 -0.001780115873 0 0 -6.679676841e-05 -0.001780115873 -0.001370950814 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.66611658e-06 9.998446972e-05 6.722798775e-05 0 0 -9.998446972e-05 -0.002652104359 -0.001727727547 0 0 -6.722798775e-05 -0.001727727547 -0.001083148905 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.038919893e-07 -2.91558689e-06 6.574124916e-06 0 0 --2.91558689e-06 7.889711204e-05 -0.0002336647756 0 0 -6.574124916e-06 -0.0002336647756 -0.0004106321778 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.199020242e-06 -3.261796751e-05 -2.997490104e-05 0 0 --3.261796751e-05 0.0008636318827 0.0008174399423 0 0 --2.997490104e-05 0.0008174399423 0.0007491874226 0 0 -0 0 0 0 0 -0 0 0 0 0 --4.230567757e-08 1.183151248e-06 3.043447606e-06 0 0 -1.183151248e-06 -3.194095015e-05 -9.528851169e-05 0 0 -3.043447606e-06 -9.528851169e-05 -0.0001287848856 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.23925154e-07 6.031533307e-06 2.352906523e-06 0 0 -6.031533307e-06 -0.0001585539417 -5.055077535e-05 0 0 -2.352906523e-06 -5.055077535e-05 1.736707091e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.952364753e-08 8.498233309e-07 1.569908158e-06 0 0 -8.498233309e-07 -2.338937419e-05 -4.984447747e-05 0 0 -1.569908158e-06 -4.984447747e-05 -6.326842333e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -7.762166864e-08 -2.064978373e-06 -2.402344059e-06 0 0 --2.064978373e-06 5.378705834e-05 6.606903194e-05 0 0 --2.402344059e-06 6.606903194e-05 7.028934703e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.01027004768 -9.433732964e-05 0.001015934249 0.01993112831 -0.02312056717 --9.433732964e-05 -0.0001089802691 1.698141556e-05 0.002311941214 -0.000386432208 -0.001015934249 1.698141556e-05 9.41950008e-05 0.001373953579 -0.002143690981 -0.01993112831 0.002311941214 0.001373953579 -0.01799062376 -0.03126902453 --0.02312056717 -0.000386432208 -0.002143690981 -0.03126902453 0.04878614559 --0.006312845302 -0.0008458708261 -0.0004079706022 0.008278659843 0.009284631242 --0.0008458708261 -0.0001033617907 -5.705469563e-05 0.0008826296735 0.001298461078 --0.0004079706022 -5.705469563e-05 -2.579288138e-05 0.0005892966303 0.0005869954327 -0.008278659843 0.0008826296735 0.0005892966303 -0.005708597027 -0.01341138416 -0.009284631242 0.001298461078 0.0005869954327 -0.01341138416 -0.01335886568 --0.0004593941106 -4.486208267e-05 -3.368686726e-05 0.0002232824781 0.0007666549898 --4.486208267e-05 -4.375631932e-06 -3.29097108e-06 2.168261867e-05 7.489688931e-05 --3.368686726e-05 -3.29097108e-06 -2.469914245e-06 1.640222523e-05 5.62109723e-05 -0.0002232824781 2.168261867e-05 1.640222523e-05 -0.0001057514406 -0.000373287815 -0.0007666549898 7.489688931e-05 5.62109723e-05 -0.000373287815 -0.001279264416 -0.0001090123126 -6.204607526e-06 1.203010054e-05 0.0003297462319 -0.0002737799681 --6.204607526e-06 -2.137438294e-06 -8.810778045e-08 3.780230347e-05 2.005636796e-06 -1.203010054e-05 -8.810778045e-08 1.184673902e-06 2.283820254e-05 -2.696082112e-05 -0.0003297462319 3.780230347e-05 2.283820254e-05 -0.0002874868539 -0.0005197608785 --0.0002737799681 2.005636796e-06 -2.696082112e-05 -0.0005197608785 0.0006135746502 -7.593082012e-06 7.129826781e-07 5.636848707e-07 -3.043580578e-06 -1.282698525e-05 -7.129826781e-07 6.694753414e-08 5.292961523e-08 -2.857704113e-07 -1.204445337e-06 -5.636848707e-07 5.292961523e-08 4.184602951e-08 -2.259493034e-07 -9.522312601e-07 --3.043580578e-06 -2.857704113e-07 -2.259493034e-07 1.219546716e-06 5.141620062e-06 --1.282698525e-05 -1.204445337e-06 -9.522312601e-07 5.141620062e-06 2.166858781e-05 -5.875265988e-06 4.876775546e-07 4.514505279e-07 -9.006891229e-07 -1.027406475e-05 -4.876775546e-07 3.97388909e-08 3.76502422e-08 -5.793431148e-08 -8.568393625e-07 -4.514505279e-07 3.76502422e-08 3.464655244e-08 -7.323991497e-08 -7.884829181e-07 --9.006891229e-07 -5.793431148e-08 -7.323991497e-08 -2.44127994e-07 1.666764135e-06 --1.027406475e-05 -8.568393625e-07 -7.884829181e-07 1.666764135e-06 1.794421864e-05 --3.119408952e-05 -3.644577001e-06 -2.144128048e-06 2.875189317e-05 4.879623455e-05 --3.644577001e-06 -4.09882821e-07 -2.543261403e-07 2.997329986e-06 5.787990734e-06 --2.144128048e-06 -2.543261403e-07 -1.464629272e-07 2.062938681e-06 3.333210861e-06 -2.875189317e-05 2.997329986e-06 2.062938681e-06 -1.828029163e-05 -4.694889433e-05 -4.879623455e-05 5.787990734e-06 3.333210861e-06 -4.694889433e-05 -7.585738491e-05 -2.650738602e-05 1.996640613e-06 2.085572506e-06 5.611888459e-07 -4.746336408e-05 -1.996640613e-06 1.409151514e-07 1.593646614e-07 2.575847676e-07 -3.626803506e-06 -2.085572506e-06 1.593646614e-07 1.635464758e-07 -7.431003365e-09 -3.721985688e-06 -5.611888459e-07 2.575847676e-07 -7.431003365e-09 -4.878585834e-06 1.688828071e-07 --4.746336408e-05 -3.626803506e-06 -3.721985688e-06 1.688828071e-07 8.470483629e-05 -6.200027873e-06 5.226634825e-07 4.744807759e-07 -1.132831995e-06 -1.079820809e-05 -5.226634825e-07 4.344870187e-08 4.01454407e-08 -8.159943469e-08 -9.136266399e-07 -4.744807759e-07 4.01454407e-08 3.627631774e-08 -9.002453735e-08 -8.255747717e-07 --1.132831995e-06 -8.159943469e-08 -9.002453735e-08 -1.086892075e-07 2.048747492e-06 --1.079820809e-05 -9.136266399e-07 -8.255747717e-07 2.048747492e-06 1.87883927e-05 --2.149912151e-06 -2.820042528e-07 -1.403922348e-07 2.681592039e-06 3.19506037e-06 --2.820042528e-07 -3.405764415e-08 -1.911772432e-08 2.851266706e-07 4.350848055e-07 --1.403922348e-07 -1.911772432e-08 -8.999561425e-09 1.910673769e-07 2.048124917e-07 -2.681592039e-06 2.851266706e-07 1.910673769e-07 -1.831584441e-06 -4.348369878e-06 -3.19506037e-06 4.350848055e-07 2.048124917e-07 -4.348369878e-06 -4.661133444e-06 -2.075739937e-06 3.535376526e-08 1.923006569e-07 2.792294867e-06 -4.376367809e-06 -3.535376526e-08 -1.176993629e-08 6.238967727e-09 3.285726201e-07 -1.41981896e-07 -1.923006569e-07 6.238967727e-09 1.710515472e-08 1.913668252e-07 -3.892791772e-07 -2.792294867e-06 3.285726201e-07 1.913668252e-07 -2.626648219e-06 -4.35521088e-06 --4.376367809e-06 -1.41981896e-07 -3.892791772e-07 -4.35521088e-06 8.859217016e-06 -5.160019213e-06 3.723286314e-07 4.098996669e-07 4.804861992e-07 -9.328480892e-06 -3.723286314e-07 2.435061136e-08 3.017950391e-08 9.18008149e-08 -6.868215627e-07 -4.098996669e-07 3.017950391e-08 3.241708744e-08 2.448162154e-08 -7.37747414e-07 -4.804861992e-07 9.18008149e-08 2.448162154e-08 -1.252881963e-06 -5.572069825e-07 --9.328480892e-06 -6.868215627e-07 -7.37747414e-07 -5.572069825e-07 1.678964058e-05 -9.558136158e-07 2.245065288e-08 8.707016733e-08 1.145590717e-06 -1.981539093e-06 -2.245065288e-08 -4.256580242e-09 3.191140681e-09 1.355680881e-07 -7.262203895e-08 -8.707016733e-08 3.191140681e-09 7.657163428e-09 7.832840882e-08 -1.74261825e-07 -1.145590717e-06 1.355680881e-07 7.832840882e-08 -1.095007469e-06 -1.782635469e-06 --1.981539093e-06 -7.262203895e-08 -1.74261825e-07 -1.782635469e-06 3.965852883e-06 --0.1037735263 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.1177834443 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.1138405195 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.005724109601 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.01535693912 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.008687436534 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.007515902884 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0006779767694 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0004063031437 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0009909272601 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0002510546989 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0001210364543 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -6.649549095e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.07379583639 0.01811344982 0.009125571403 0 0 -0.01811344982 -0.1518248162 0.0310859903 0 0 -0.009125571403 0.0310859903 0.05305727412 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.01794974441 -0.004167956374 -0.02063699879 0 0 --0.004167956374 -0.1072510366 -0.00602936977 0 0 --0.02063699879 -0.00602936977 0.008431781853 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.002496800671 0.002754349014 0.002395891698 0 0 -0.002754349014 -0.05290612152 -0.03052466363 0 0 -0.002395891698 -0.03052466363 -0.01026659301 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.001665319832 -0.0008504818756 -0.001482955983 0 0 --0.0008504818756 0.00841249233 0.01084248179 0 0 --0.001482955983 0.01084248179 0.007845571298 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0002809929842 0.000795685089 0.0007212643657 0 0 -0.000795685089 -0.01458303134 -0.008488488144 0 0 -0.0007212643657 -0.008488488144 -0.003441842331 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0001963027724 -0.000117622925 -8.223584741e-05 0 0 --0.000117622925 0.00414690668 0.003475366554 0 0 --8.223584741e-05 0.003475366554 0.002735117503 0 0 -0 0 0 0 0 -0 0 0 0 0 --5.872571676e-05 8.849528382e-05 -2.055786859e-05 0 0 -8.849528382e-05 -0.00186551108 -0.0009688306152 0 0 --2.055786859e-05 -0.0009688306152 -0.0004277069935 0 0 -0 0 0 0 0 -0 0 0 0 0 -6.340251513e-05 -2.310716007e-05 -9.25237988e-05 0 0 --2.310716007e-05 -0.0004729478031 -0.0003223568806 0 0 --9.25237988e-05 -0.0003223568806 -0.0001381374192 0 0 -0 0 0 0 0 -0 0 0 0 0 -7.901154725e-05 -2.237899238e-05 -7.196988356e-05 0 0 --2.237899238e-05 -0.0001588311897 8.205505687e-05 0 0 --7.196988356e-05 8.205505687e-05 0.000334298516 0 0 -0 0 0 0 0 -0 0 0 0 0 -2.367964833e-05 -1.898240642e-05 -4.484357048e-05 0 0 --1.898240642e-05 0.0001584446585 0.0001527283434 0 0 --4.484357048e-05 0.0001527283434 0.0001733017643 0 0 -0 0 0 0 0 -0 0 0 0 0 --4.158047221e-06 -1.699071351e-06 -1.677199964e-05 0 0 --1.699071351e-06 4.495713977e-05 5.006473511e-05 0 0 --1.677199964e-05 5.006473511e-05 5.369356406e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -9.253673562e-06 2.293209397e-06 -1.051493067e-05 0 0 -2.293209397e-06 -0.0001404432336 -9.454226249e-05 0 0 --1.051493067e-05 -9.454226249e-05 -3.523784414e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.091678814e-05 -5.669941181e-06 -1.764014752e-05 0 0 --5.669941181e-06 3.774001438e-05 4.86666592e-05 0 0 --1.764014752e-05 4.86666592e-05 7.788364567e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.01669381135 0.008862283419 0.01295549383 0.1020335757 -0.07040592814 -0.008862283419 -0.06513159243 -0.01150835053 0.00199141336 -0.01276029554 -0.01295549383 -0.01150835053 0.02536578338 -0.009238619312 0.00532515036 -0.1020335757 0.00199141336 -0.009238619312 -0.03653458948 -0.03324369387 --0.07040592814 -0.01276029554 0.00532515036 -0.03324369387 0.08688261747 --0.01058157894 0.009834185582 0.00695803377 0.04226880382 0.006406577547 -0.009834185582 -0.0525890795 -0.0242767307 0.01996569288 -0.02754213954 -0.00695803377 -0.0242767307 -0.002726528434 0.008519327407 -0.02058013324 -0.04226880382 0.01996569288 0.008519327407 -0.1069771417 -0.01526765282 -0.006406577547 -0.02754213954 -0.02058013324 -0.01526765282 -0.00981578185 --0.01320884954 -0.001866723392 -0.0007157116353 0.02144233576 0.01842248435 --0.001866723392 -0.001976201254 -0.00158397848 0.002946566368 0.002912398231 --0.0007157116353 -0.00158397848 -0.001473002252 0.001719010749 0.001285939166 -0.02144233576 0.002946566368 0.001719010749 -0.01854993154 -0.03366470775 -0.01842248435 0.002912398231 0.001285939166 -0.03366470775 -0.0250322346 --0.003277618364 -0.0001502353901 -0.0002108774383 0.002605091799 0.005160763122 --0.0001502353901 -0.001123993087 -3.836759049e-06 0.0001761957432 -0.0002204042921 --0.0002108774383 -3.836759049e-06 0.0006473040058 -0.0002719481242 0.0001228211231 -0.002605091799 0.0001761957432 -0.0002719481242 -0.001332884805 -0.001919296619 -0.005160763122 -0.0002204042921 0.0001228211231 -0.001919296619 -0.009148418299 -0.002095835229 7.079056321e-05 0.0002225049989 0.002313584861 -0.004319608724 -7.079056321e-05 -0.00034060791 -0.0003123333215 0.0003636531854 -9.428216253e-05 -0.0002225049989 -0.0003123333215 -0.0003426635609 0.0001672863153 -0.0002435210938 -0.002313584861 0.0003636531854 0.0001672863153 -0.002760441305 -0.003402779539 --0.004319608724 -9.428216253e-05 -0.0002435210938 -0.003402779539 0.008416878337 --0.001720800106 -0.0001395417426 -7.279019492e-05 0.000868066002 0.002828399194 --0.0001395417426 -1.508631791e-05 -3.964915653e-05 2.669273685e-05 0.000328235838 --7.279019492e-05 -3.964915653e-05 -6.705888098e-05 2.666093404e-05 0.000278874249 -0.000868066002 2.669273685e-05 2.666093404e-05 -0.0002042600463 -0.001405992721 -0.002828399194 0.000328235838 0.000278874249 -0.001405992721 -0.004821909679 -0.0009231745827 0.0001158488847 0.0001180543747 -0.0001160227606 -0.001639888991 -0.0001158488847 -0.0002139208546 -9.635790891e-05 0.0001297750298 -0.0002263536402 -0.0001180543747 -9.635790891e-05 5.693499798e-05 0.0001374699135 -0.0002530643045 --0.0001160227606 0.0001297750298 0.0001374699135 -0.0003864865017 0.000336205635 --0.001639888991 -0.0002263536402 -0.0002530643045 0.000336205635 0.002840352807 --0.0009452013742 -9.730428773e-05 -6.304534054e-05 0.0005754294508 0.001540956097 --9.730428773e-05 9.196811302e-05 0.0001337603673 5.562391248e-05 0.0001256865413 --6.304534054e-05 0.0001337603673 0.0002280492558 0.0001054424852 2.202505463e-05 -0.0005754294508 5.562391248e-05 0.0001054424852 -5.120041067e-05 -0.001005577837 -0.001540956097 0.0001256865413 2.202505463e-05 -0.001005577837 -0.002488532122 -0.0004591234417 3.69620824e-05 3.788577599e-05 -8.023053484e-05 -0.00080582687 -3.69620824e-05 2.639475937e-05 4.457799655e-05 1.086628689e-05 -7.701622332e-05 -3.788577599e-05 4.457799655e-05 9.225958988e-05 4.059170635e-05 -0.0001019192867 --8.023053484e-05 1.086628689e-05 4.059170635e-05 4.356020871e-05 0.0001167801597 --0.00080582687 -7.701622332e-05 -0.0001019192867 0.0001167801597 0.001424032148 --7.810747174e-05 -3.78742123e-06 1.485651403e-06 4.462632146e-05 0.0001234509291 --3.78742123e-06 -8.421926815e-06 6.456993937e-06 2.0129719e-05 3.233207326e-06 -1.485651403e-06 6.456993937e-06 3.702937942e-05 3.381066962e-05 -1.553949245e-05 -4.462632146e-05 2.0129719e-05 3.381066962e-05 -2.34155513e-05 -7.789433535e-05 -0.0001234509291 3.233207326e-06 -1.553949245e-05 -7.789433535e-05 -0.0001995682985 --1.999487068e-06 4.894315035e-06 8.524668892e-06 3.640510445e-06 -3.073023126e-06 -4.894315035e-06 -9.429480102e-06 1.253568235e-06 8.032935755e-06 -4.738347633e-06 -8.524668892e-06 1.253568235e-06 2.088835531e-05 1.761057709e-05 -1.242483702e-05 -3.640510445e-06 8.032935755e-06 1.761057709e-05 9.915496331e-06 4.614138725e-07 --3.073023126e-06 -4.738347633e-06 -1.242483702e-05 4.614138725e-07 -2.174952398e-06 --3.691969599e-05 -1.471182593e-06 3.704069572e-06 3.788255864e-05 5.169884274e-05 --1.471182593e-06 6.601305844e-06 1.15500856e-05 4.278072291e-06 5.891952756e-06 -3.704069572e-06 1.15500856e-05 2.60887804e-05 1.511878408e-05 -5.258210467e-06 -3.788255864e-05 4.278072291e-06 1.511878408e-05 1.279372181e-05 -6.588838394e-05 -5.169884274e-05 5.891952756e-06 -5.258210467e-06 -6.588838394e-05 -8.172457216e-05 -3.03153613e-05 4.566245202e-06 6.761892279e-06 -3.862318596e-06 -5.707477552e-05 -4.566245202e-06 5.548949809e-06 1.457867303e-05 6.75982148e-06 -1.03337679e-05 -6.761892279e-06 1.457867303e-05 3.62905783e-05 2.012544447e-05 -2.219134067e-05 --3.862318596e-06 6.75982148e-06 2.012544447e-05 2.115870405e-05 -4.633509825e-07 --5.707477552e-05 -1.03337679e-05 -2.219134067e-05 -4.633509825e-07 0.0001039585756 --0.02742216903 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.008598873811 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.004002406747 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0005292054129 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -8.811094214e-07 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0001642603576 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.352508394e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -8.814310514e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0001095200422 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -4.93204924e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -2.441446427e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.418997884e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.280152358e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.02529298612 0.0393058654 0.0353986625 0 0 -0.0393058654 -0.03775811445 -0.02467920829 0 0 -0.0353986625 -0.02467920829 -0.01009882551 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.009202713998 -0.0005410645846 -0.01076971089 0 0 --0.0005410645846 -0.002601632707 -0.003192201711 0 0 --0.01076971089 -0.003192201711 0.007046677657 0 0 -0 0 0 0 0 -0 0 0 0 0 --5.1008723e-05 0.0005019507469 0.0004182407873 0 0 -0.0005019507469 -0.0005780677275 -0.0008364187219 0 0 -0.0004182407873 -0.0008364187219 -0.0009636666532 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0002796573366 -0.0002668469661 9.78334626e-06 0 0 --0.0002668469661 0.0004154560235 0.0005156369409 0 0 -9.78334626e-06 0.0005156369409 0.0003822115824 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0001779731215 9.128418435e-05 0.0001658764727 0 0 -9.128418435e-05 -4.565798614e-05 -8.718263563e-05 0 0 -0.0001658764727 -8.718263563e-05 -0.0001507980948 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0001443694624 5.652337069e-05 0.0001015654159 0 0 -5.652337069e-05 -1.622663156e-05 -4.535396854e-05 0 0 -0.0001015654159 -4.535396854e-05 -6.61605622e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -9.948662688e-07 -9.440419765e-07 -3.533754942e-05 0 0 --9.440419765e-07 7.703084764e-07 4.547020237e-05 0 0 --3.533754942e-05 4.547020237e-05 0.0001196668067 0 0 -0 0 0 0 0 -0 0 0 0 0 -7.053152991e-05 -5.335986645e-05 -0.000124478722 0 0 --5.335986645e-05 3.849932719e-05 9.783933285e-05 0 0 --0.000124478722 9.783933285e-05 0.0002124982833 0 0 -0 0 0 0 0 -0 0 0 0 0 -6.419720168e-05 -3.888622517e-05 -9.660374136e-05 0 0 --3.888622517e-05 2.354534462e-05 5.873668343e-05 0 0 --9.660374136e-05 5.873668343e-05 0.0001400926774 0 0 -0 0 0 0 0 -0 0 0 0 0 -2.059142256e-05 -1.563951711e-05 -3.851322385e-05 0 0 --1.563951711e-05 1.131252839e-05 3.068643488e-05 0 0 --3.851322385e-05 3.068643488e-05 6.83945943e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -2.197092865e-06 -1.727954573e-06 -1.351854217e-05 0 0 --1.727954573e-06 1.277370437e-06 1.260628127e-05 0 0 --1.351854217e-05 1.260628127e-05 3.542151724e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -5.672553032e-06 -3.959918074e-06 -1.795354011e-05 0 0 --3.959918074e-06 2.702585834e-06 1.360305745e-05 0 0 --1.795354011e-05 1.360305745e-05 3.828827589e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -7.455400452e-06 -5.247192855e-06 -1.867267269e-05 0 0 --5.247192855e-06 3.602693415e-06 1.407643213e-05 0 0 --1.867267269e-05 1.407643213e-05 3.7102491e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.004642206734 0.02576377369 0.02706266425 0.02162362533 -0.01554542137 -0.02576377369 -0.048475433 -0.03691498452 0.004419047558 0.02146183738 -0.02706266425 -0.03691498452 -0.02509001691 0.01309658781 0.01466346031 -0.02162362533 0.004419047558 0.01309658781 0.03093963676 -0.007367817621 --0.01554542137 0.02146183738 0.01466346031 -0.007367817621 -0.008567656107 --0.0008650588404 -0.002898929274 -0.00414554454 -0.003115831278 0.002577062931 --0.002898929274 -0.009649031087 -0.01281751342 -0.009944573117 0.008029845747 --0.00414554454 -0.01281751342 -0.002277370621 -0.006798150598 0.002428479439 --0.003115831278 -0.009944573117 -0.006798150598 -0.007461659986 0.004694371521 -0.002577062931 0.008029845747 0.002428479439 0.004694371521 -0.002080920224 --0.0001150707771 0.0002838151565 0.0007567467721 0.0002810617718 -0.0004070689513 -0.0002838151565 0.001139475567 0.0008881624788 0.0006296451935 -0.0008003751352 -0.0007567467721 0.0008881624788 -0.0008515777414 0.0001326294848 -2.503549126e-05 -0.0002810617718 0.0006296451935 0.0001326294848 0.0002648423643 -0.0003033524639 --0.0004070689513 -0.0008003751352 -2.503549126e-05 -0.0003033524639 0.0003299258192 --4.431385806e-06 -7.99207392e-06 7.620603481e-06 -4.6198264e-06 -6.084146712e-06 --7.99207392e-06 0.0001581272133 0.0001920745758 0.0001063781948 -0.0001071222659 -7.620603481e-06 0.0001920745758 0.0001712095596 0.0001265039109 -8.891288937e-05 --4.6198264e-06 0.0001063781948 0.0001265039109 7.144622685e-05 -7.026569443e-05 --6.084146712e-06 -0.0001071222659 -8.891288937e-05 -7.026569443e-05 4.522643656e-05 --3.78013843e-05 2.528122068e-05 9.624449713e-05 1.475971359e-05 -4.462425969e-05 -2.528122068e-05 6.381107417e-05 -2.97992781e-05 1.198348756e-06 -8.97410963e-06 -9.624449713e-05 -2.97992781e-05 -0.0002302400843 -3.283852238e-05 9.699181075e-05 -1.475971359e-05 1.198348756e-06 -3.283852238e-05 -4.244959965e-06 1.210031436e-05 --4.462425969e-05 -8.97410963e-06 9.699181075e-05 1.210031436e-05 -3.401051718e-05 -6.749294405e-06 1.268749456e-05 3.132407647e-05 1.449515615e-05 -2.749321071e-05 -1.268749456e-05 -4.030223275e-05 -6.190158399e-05 -8.70270958e-06 4.745559396e-05 -3.132407647e-05 -6.190158399e-05 -8.203506507e-05 -4.148266748e-07 5.905715134e-05 -1.449515615e-05 -8.70270958e-06 -4.148266748e-07 1.098361113e-05 -3.488971516e-06 --2.749321071e-05 4.745559396e-05 5.905715134e-05 -3.488971516e-06 -4.120944644e-05 -5.045700618e-06 3.856288278e-05 4.889158461e-05 3.312319261e-05 -2.893467415e-05 -3.856288278e-05 3.120389455e-05 0.000105826763 9.347255283e-05 -6.279378327e-05 -4.889158461e-05 0.000105826763 0.0002015220915 0.0001586611691 -0.0001194302088 -3.312319261e-05 9.347255283e-05 0.0001586611691 0.0001206856301 -9.399719291e-05 --2.893467415e-05 -6.279378327e-05 -0.0001194302088 -9.399719291e-05 7.077897137e-05 --5.732566379e-06 8.675594752e-06 9.870886731e-06 2.557304875e-06 -2.417566921e-06 -8.675594752e-06 4.400715798e-05 0.0001068016153 6.799037053e-05 -5.775228617e-05 -9.870886731e-06 0.0001068016153 0.0002423927017 0.0001487085508 -0.0001266844778 -2.557304875e-06 6.799037053e-05 0.0001487085508 8.923789031e-05 -7.615786053e-05 --2.417566921e-06 -5.775228617e-05 -0.0001266844778 -7.615786053e-05 6.498551412e-05 --9.313790545e-07 4.636655596e-06 8.169819624e-06 3.253870912e-06 -4.813164924e-06 -4.636655596e-06 1.355099384e-05 3.536559738e-05 2.256378202e-05 -2.094918443e-05 -8.169819624e-06 3.536559738e-05 8.616047505e-05 5.191384282e-05 -5.099698353e-05 -3.253870912e-06 2.256378202e-05 5.191384282e-05 2.964731931e-05 -3.070503208e-05 --4.813164924e-06 -2.094918443e-05 -5.099698353e-05 -3.070503208e-05 3.018399035e-05 -1.05848443e-06 7.555014516e-06 1.08265334e-05 6.679338975e-06 -6.844318435e-06 -7.555014516e-06 7.01861561e-06 2.271350315e-05 1.9108708e-05 -1.368583799e-05 -1.08265334e-05 2.271350315e-05 4.727030198e-05 3.509054003e-05 -2.910028107e-05 -6.679338975e-06 1.9108708e-05 3.509054003e-05 2.475214808e-05 -2.177357069e-05 --6.844318435e-06 -1.368583799e-05 -2.910028107e-05 -2.177357069e-05 1.789192028e-05 --9.945958871e-07 8.025479457e-06 1.150182704e-05 5.902438766e-06 -6.038623815e-06 -8.025479457e-06 -2.837274107e-06 6.232205472e-06 1.100783935e-05 -3.841543946e-06 -1.150182704e-05 6.232205472e-06 2.540399447e-05 2.552802496e-05 -1.424843971e-05 -5.902438766e-06 1.100783935e-05 2.552802496e-05 2.049552857e-05 -1.394190192e-05 --6.038623815e-06 -3.841543946e-06 -1.424843971e-05 -1.394190192e-05 7.964150472e-06 --1.057439258e-06 5.988086667e-06 9.218182353e-06 4.30602159e-06 -4.897922009e-06 -5.988086667e-06 -1.664564468e-06 5.350490493e-06 8.611673657e-06 -3.257716727e-06 -9.218182353e-06 5.350490493e-06 2.235987139e-05 2.135423934e-05 -1.262092219e-05 -4.30602159e-06 8.611673657e-06 2.135423934e-05 1.62297481e-05 -1.177069394e-05 --4.897922009e-06 -3.257716727e-06 -1.262092219e-05 -1.177069394e-05 7.10463953e-06 --2.276487681e-07 4.723908321e-06 7.074489734e-06 3.680343667e-06 -4.072824072e-06 -4.723908321e-06 5.215902091e-06 1.657657555e-05 1.32833019e-05 -9.772561698e-06 -7.074489734e-06 1.657657555e-05 3.869595436e-05 2.750466236e-05 -2.264039899e-05 -3.680343667e-06 1.32833019e-05 2.750466236e-05 1.835513184e-05 -1.603374131e-05 --4.072824072e-06 -9.772561698e-06 -2.264039899e-05 -1.603374131e-05 1.324364984e-05 -0.03471368358 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.00515662761 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0006948398296 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.001036616578 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0003526936793 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.063215777e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -2.444157942e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -8.502955631e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.292150325e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --4.612808757e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -5.070593589e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --6.180378447e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --7.080243108e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.03780802531 0.01229567414 0.03904672151 0 0 -0.01229567414 0.003998717237 0.0126985665 0 0 -0.03904672151 0.0126985665 -0.0493409767 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.02063987072 0.006712465439 -0.00506585922 0 0 -0.006712465439 0.002183017174 -0.001647478478 0 0 --0.00506585922 -0.001647478478 -0.0001710686382 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.001124153782 -0.0003655384538 0.0006704463403 0 0 --0.0003655384538 -0.0001188612811 0.0002180029913 0 0 -0.0006704463403 0.0002180029913 -0.0003909719345 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.001173139433 0.0003815019427 -6.879102145e-06 0 0 -0.0003815019427 0.0001240634557 -2.245894631e-06 0 0 --6.879102145e-06 -2.245894631e-06 -0.0002949794386 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0003022245702 -9.830236787e-05 0.0001818863881 0 0 --9.830236787e-05 -3.197408898e-05 5.916229009e-05 0 0 -0.0001818863881 5.916229009e-05 -0.0001067444143 0 0 -0 0 0 0 0 -0 0 0 0 0 -4.838819326e-06 1.575128608e-06 -1.994887722e-06 0 0 -1.575128608e-06 5.12734153e-07 -6.492358584e-07 0 0 --1.994887722e-06 -6.492358584e-07 7.803581523e-07 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0001056639144 3.436684678e-05 -3.242407069e-05 0 0 -3.436684678e-05 1.117770575e-05 -1.054509822e-05 0 0 --3.242407069e-05 -1.054509822e-05 5.714670779e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.827827607e-05 -5.943858057e-06 3.216762073e-05 0 0 --5.943858057e-06 -1.932865455e-06 1.045991038e-05 0 0 -3.216762073e-05 1.045991038e-05 -2.793785449e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.556189482e-05 -8.314058645e-06 1.790169603e-05 0 0 --8.314058645e-06 -2.704164562e-06 5.822758963e-06 0 0 -1.790169603e-05 5.822758963e-06 -1.158194252e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -4.17034986e-06 1.356125858e-06 2.573473655e-06 0 0 -1.356125858e-06 4.409887394e-07 8.367100047e-07 0 0 -2.573473655e-06 8.367100047e-07 -3.685462119e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 -8.394004604e-06 2.729966034e-06 3.492927523e-06 0 0 -2.729966034e-06 8.878616207e-07 1.136119303e-06 0 0 -3.492927523e-06 1.136119303e-06 -5.702070055e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 --5.46669466e-06 -1.777766446e-06 8.074221051e-06 0 0 --1.777766446e-06 -5.781287832e-07 2.625664198e-06 0 0 -8.074221051e-06 2.625664198e-06 -6.785533489e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.573050498e-06 -1.162036125e-06 5.046128963e-06 0 0 --1.162036125e-06 -3.779201985e-07 1.641146508e-06 0 0 -5.046128963e-06 1.641146508e-06 -4.199605264e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.02951379472 0.01402647603 0.009306970163 0.01255074526 0.003026708704 -0.01402647603 0.00532747166 0.01315260143 0.009645607372 0.004277380835 -0.009306970163 0.01315260143 -0.05399133364 -0.02004563422 -0.01755871149 -0.01255074526 0.009645607372 -0.02004563422 -0.004784041494 -0.006519123999 -0.003026708704 0.004277380835 -0.01755871149 -0.006519123999 -0.005710330313 -0.01735604909 0.01017154313 -0.007067434518 0.002092840605 -0.002298435901 -0.01017154313 0.005779877081 -0.002960416729 0.001724688344 -0.000962773188 --0.007067434518 -0.002960416729 -0.004826667312 -0.004100901203 -0.001569697014 -0.002092840605 0.001724688344 -0.004100901203 -0.001117478348 -0.001333671435 --0.002298435901 -0.000962773188 -0.001569697014 -0.001333671435 -0.0005104865439 -0.001071404149 0.0007055893105 -0.000942913876 -8.443365684e-05 -0.0003066479949 -0.0007055893105 0.0004637341258 -0.0006148250393 -5.3013927e-05 -0.0001999491744 --0.000942913876 -0.0006148250393 0.0007897598589 5.741053898e-05 0.0002568401938 --8.443365684e-05 -5.3013927e-05 5.741053898e-05 -4.709587886e-07 1.867062012e-05 --0.0003066479949 -0.0001999491744 0.0002568401938 1.867062012e-05 8.352777669e-05 -0.0003349094231 0.0001340986718 0.0002690808435 0.0002113485142 8.75080536e-05 -0.0001340986718 2.594974215e-05 0.0002886623109 0.0001609116435 9.38765334e-05 -0.0002690808435 0.0002886623109 -0.0009636286741 -0.0003276743746 -0.0003133850759 -0.0002113485142 0.0001609116435 -0.0003276743746 -7.639308149e-05 -0.0001065643352 -8.75080536e-05 9.38765334e-05 -0.0003133850759 -0.0001065643352 -0.0001019170646 -5.307864299e-05 3.580042665e-05 -5.222136335e-05 -6.50553852e-06 -1.698302874e-05 -3.580042665e-05 2.413660817e-05 -3.515683187e-05 -4.360281704e-06 -1.143343362e-05 --5.222136335e-05 -3.515683187e-05 5.095159234e-05 6.22069848e-06 1.657008432e-05 --6.50553852e-06 -4.360281704e-06 6.22069848e-06 7.215451473e-07 2.023047846e-06 --1.698302874e-05 -1.143343362e-05 1.657008432e-05 2.023047846e-06 5.388795162e-06 --6.847826278e-06 -4.873887167e-06 8.401268986e-06 1.540960857e-06 2.732209484e-06 --4.873887167e-06 -3.465162771e-06 5.954832563e-06 1.086349818e-06 1.936594668e-06 -8.401268986e-06 5.954832563e-06 -1.014600838e-05 -1.822600473e-06 -3.299625104e-06 -1.540960857e-06 1.086349818e-06 -1.822600473e-06 -3.181181395e-07 -5.927359047e-07 -2.732209484e-06 1.936594668e-06 -3.299625104e-06 -5.927359047e-07 -1.073084648e-06 -5.736963769e-05 3.415232946e-05 -2.682220403e-05 5.458382603e-06 -8.722972855e-06 -3.415232946e-05 1.983567304e-05 -1.273728503e-05 4.611375694e-06 -4.142352894e-06 --2.682220403e-05 -1.273728503e-05 -8.52352404e-06 -1.143370876e-05 -2.771964178e-06 -5.458382603e-06 4.611375694e-06 -1.143370876e-05 -3.225728938e-06 -3.718404831e-06 --8.722972855e-06 -4.142352894e-06 -2.771964178e-06 -3.718404831e-06 -9.014798772e-07 --1.531617592e-05 -1.272574249e-05 3.068900523e-05 8.463609348e-06 9.980466996e-06 --1.272574249e-05 -1.026176928e-05 2.346616803e-05 6.175182452e-06 7.631509887e-06 -3.068900523e-05 2.346616803e-05 -4.823802426e-05 -1.137008597e-05 -1.568766603e-05 -8.463609348e-06 6.175182452e-06 -1.137008597e-05 -2.320522727e-06 -3.697712837e-06 -9.980466996e-06 7.631509887e-06 -1.568766603e-05 -3.697712837e-06 -5.101843808e-06 --1.313869256e-06 -1.141877073e-06 2.960112566e-06 8.641338126e-07 9.626673213e-07 --1.141877073e-06 -9.494159222e-07 2.292316168e-06 6.328225763e-07 7.454917129e-07 -2.960112566e-06 2.292316168e-06 -4.841160337e-06 -1.176124816e-06 -1.574412012e-06 -8.641338126e-07 6.328225763e-07 -1.176124816e-06 -2.433513172e-07 -3.824925865e-07 -9.626673213e-07 7.454917129e-07 -1.574412012e-06 -3.824925865e-07 -5.120204684e-07 -8.088590871e-06 4.963211795e-06 -4.74712667e-06 3.624949166e-07 -1.543832873e-06 -4.963211795e-06 3.000426522e-06 -2.619203119e-06 3.462555504e-07 -8.518018713e-07 --4.74712667e-06 -2.619203119e-06 8.71008766e-07 -1.0202393e-06 2.832637145e-07 -3.624949166e-07 3.462555504e-07 -1.0202393e-06 -3.242417298e-07 -3.317965669e-07 --1.543832873e-06 -8.518018713e-07 2.832637145e-07 -3.317965669e-07 9.212115318e-08 -1.570746437e-06 1.845339195e-07 4.159992901e-06 2.213197569e-06 1.352879624e-06 -1.845339195e-07 -4.899815628e-07 3.82534786e-06 1.666925643e-06 1.244051583e-06 -4.159992901e-06 3.82534786e-06 -1.074128016e-05 -3.313255206e-06 -3.493209822e-06 -2.213197569e-06 1.666925643e-06 -3.313255206e-06 -7.501818652e-07 -1.077517356e-06 -1.352879624e-06 1.244051583e-06 -3.493209822e-06 -1.077517356e-06 -1.136039158e-06 --1.75569443e-06 -1.744686979e-06 5.382505439e-06 1.756417353e-06 1.75046003e-06 --1.744686979e-06 -1.569879343e-06 4.280143111e-06 1.2948149e-06 1.391958754e-06 -5.382505439e-06 4.280143111e-06 -9.532758776e-06 -2.446351728e-06 -3.10018324e-06 -1.756417353e-06 1.2948149e-06 -2.446351728e-06 -5.181537762e-07 -7.955881898e-07 -1.75046003e-06 1.391958754e-06 -3.10018324e-06 -7.955881898e-07 -1.008221895e-06 -2.258685478e-06 1.152235772e-06 1.984451546e-07 7.438517773e-07 6.453425079e-08 -1.152235772e-06 5.161632055e-07 5.683664942e-07 5.764356814e-07 1.848390012e-07 -1.984451546e-07 5.683664942e-07 -3.028816345e-06 -1.219124146e-06 -9.850120068e-07 -7.438517773e-07 5.764356814e-07 -1.219124146e-06 -2.966387917e-07 -3.964764645e-07 -6.453425079e-08 1.848390012e-07 -9.850120068e-07 -3.964764645e-07 -3.203392161e-07 -0.03792344107 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.006636968532 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.002661884446 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --5.852289004e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --7.132614678e-07 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0001260675954 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -3.878120421e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --9.088378787e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --9.58820611e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --4.96086139e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.581756116e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.359200355e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.232867825e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.03692845732 -0.02192737649 -0.02494141484 0 0 --0.02192737649 0.01302003581 0.01480879859 0 0 --0.02494141484 0.01480879859 0.006681184669 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.005006044673 0.002971855635 0.007877499704 0 0 -0.002971855635 -0.001764252286 -0.004676356291 0 0 -0.007877499704 -0.004676356291 -0.0116967572 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0004511762884 0.000267840825 0.0005519514871 0 0 -0.000267840825 -0.0001590037154 -0.0003276651494 0 0 -0.0005519514871 -0.0003276651494 -0.0006749870229 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.298375947e-06 1.991885309e-06 3.988769542e-06 0 0 -1.991885309e-06 -1.202556289e-06 -2.408654203e-06 0 0 -3.988769542e-06 -2.408654203e-06 -4.823597482e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 -9.289361169e-05 -5.515141295e-05 -9.223191905e-05 0 0 --5.515141295e-05 3.274367622e-05 5.475909517e-05 0 0 --9.223191905e-05 5.475909517e-05 8.759288906e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0001328176819 -7.885601796e-05 -0.000113692125 0 0 --7.885601796e-05 4.681810038e-05 6.750161955e-05 0 0 --0.000113692125 6.750161955e-05 8.160860774e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.332907195e-06 7.914197689e-07 4.698777667e-05 0 0 -7.914197689e-07 -4.699091221e-07 -2.790019696e-05 0 0 -4.698777667e-05 -2.790019696e-05 -0.000110851239 0 0 -0 0 0 0 0 -0 0 0 0 0 --6.313172981e-05 3.748378538e-05 0.0001036661479 0 0 -3.748378538e-05 -2.225559431e-05 -6.15508396e-05 0 0 -0.0001036661479 -6.15508396e-05 -0.0001578876293 0 0 -0 0 0 0 0 -0 0 0 0 0 --5.568385145e-05 3.306102634e-05 8.328749427e-05 0 0 -3.306102634e-05 -1.962923602e-05 -4.944997475e-05 0 0 -8.328749427e-05 -4.944997475e-05 -0.0001197038614 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.336479387e-05 1.38727127e-05 4.077981805e-05 0 0 -1.38727127e-05 -8.236843799e-06 -2.421292984e-05 0 0 -4.077981805e-05 -2.421292984e-05 -6.422585834e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.275055867e-06 1.3508029e-06 1.366756252e-05 0 0 -1.3508029e-06 -8.020323811e-07 -8.115178678e-06 0 0 -1.366756252e-05 -8.115178678e-06 -2.952572282e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --5.290542032e-06 3.141185949e-06 1.632805401e-05 0 0 -3.141185949e-06 -1.865035587e-06 -9.694588727e-06 0 0 -1.632805401e-05 -9.694588727e-06 -3.156836804e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --7.369460473e-06 4.375525665e-06 1.784562304e-05 0 0 -4.375525665e-06 -2.597914042e-06 -1.059566013e-05 0 0 -1.784562304e-05 -1.059566013e-05 -3.221699574e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.001778338834 -0.009590296266 -0.01821269048 -0.007377428172 0.01081427107 --0.009590296266 0.0153769108 0.01947476548 0.0001572886421 -0.01156350428 --0.01821269048 0.01947476548 0.01590795034 -0.01030794647 -0.009445428844 --0.007377428172 0.0001572886421 -0.01030794647 -0.01260587311 0.006120790067 -0.01081427107 -0.01156350428 -0.009445428844 0.006120790067 0.005608272844 -4.689715621e-05 -0.0001468414431 -0.0002504999929 -7.901603343e-05 0.0001486381134 --0.0001468414431 -0.001681914987 -0.003856292574 -0.002088907913 0.002289273946 --0.0002504999929 -0.003856292574 -0.008717339718 -0.004640289262 0.005174915324 --7.901603343e-05 -0.002088907913 -0.004640289262 -0.002415493667 0.00275456905 -0.0001486381134 0.002289273946 0.005174915324 0.00275456905 -0.003072009208 -2.15475984e-06 -1.758615066e-05 -3.500170977e-05 -1.54583564e-05 2.077238259e-05 --1.758615066e-05 0.0001373255697 0.0002722114595 0.0001193768825 -0.0001615608768 --3.500170977e-05 0.0002722114595 0.0005393802514 0.0002363841883 -0.0003201311498 --1.54583564e-05 0.0001193768825 0.0002363841883 0.0001034746518 -0.0001402996941 -2.077238259e-05 -0.0001615608768 -0.0003201311498 -0.0001402996941 0.0001900031364 -5.987147642e-08 -4.264897749e-07 -8.374583141e-07 -3.62101556e-07 4.9654784e-07 --4.264897749e-07 2.60577873e-06 5.029476553e-06 2.106090187e-06 -2.983154557e-06 --8.374583141e-07 5.029476553e-06 9.686983532e-06 4.04000471e-06 -5.745936187e-06 --3.62101556e-07 2.106090187e-06 4.04000471e-06 1.671754164e-06 -2.396575548e-06 -4.9654784e-07 -2.983154557e-06 -5.745936187e-06 -2.396575548e-06 3.408259323e-06 -3.326592799e-06 -2.000559049e-05 -3.854762467e-05 -1.605917316e-05 2.288371214e-05 --2.000559049e-05 7.013326166e-05 0.0001230886796 4.184079841e-05 -7.307480652e-05 --3.854762467e-05 0.0001230886796 0.0002110672939 6.747889628e-05 -0.000125307182 --1.605917316e-05 4.184079841e-05 6.747889628e-05 1.781577967e-05 -4.006249821e-05 -2.288371214e-05 -7.307480652e-05 -0.000125307182 -4.006249821e-05 7.439281316e-05 -5.137510406e-06 -2.855075525e-05 -5.444439999e-05 -2.223573513e-05 3.232613375e-05 --2.855075525e-05 6.126718383e-05 9.153642602e-05 1.736069538e-05 -5.434903025e-05 --5.444439999e-05 9.153642602e-05 0.0001197462145 5.521044487e-06 -7.109807917e-05 --2.223573513e-05 1.736069538e-05 5.521044487e-06 -1.958062498e-05 -3.27772827e-06 -3.232613375e-05 -5.434903025e-05 -7.109807917e-05 -3.27772827e-06 4.221375083e-05 -3.165223509e-06 -1.502917007e-05 -2.799513631e-05 -1.09062603e-05 1.662260133e-05 --1.502917007e-05 -1.304878712e-05 -4.996632683e-05 -4.026086838e-05 2.966705117e-05 --2.799513631e-05 -4.996632683e-05 -0.0001486712899 -0.0001029759758 8.827329771e-05 --1.09062603e-05 -4.026086838e-05 -0.0001029759758 -6.279329284e-05 6.114233631e-05 -1.662260133e-05 2.966705117e-05 8.827329771e-05 6.114233631e-05 -5.241210385e-05 -1.647981657e-06 -6.808138534e-06 -1.237335357e-05 -4.570642008e-06 7.346124061e-06 --6.808138534e-06 -2.683300813e-05 -6.796780328e-05 -4.105509228e-05 4.035415276e-05 --1.237335357e-05 -6.796780328e-05 -0.0001651307988 -9.555484225e-05 9.804186177e-05 --4.570642008e-06 -4.105509228e-05 -9.555484225e-05 -5.269027476e-05 5.673283982e-05 -7.346124061e-06 4.035415276e-05 9.804186177e-05 5.673283982e-05 -5.820965398e-05 -9.731860904e-07 -4.192140101e-06 -7.678578571e-06 -2.886105722e-06 4.558980019e-06 --4.192140101e-06 -1.247113938e-05 -3.307258558e-05 -2.08612027e-05 1.963622222e-05 --7.678578571e-06 -3.307258558e-05 -8.274280813e-05 -4.936653145e-05 4.912693305e-05 --2.886105722e-06 -2.08612027e-05 -4.936653145e-05 -2.774880728e-05 2.93103911e-05 -4.558980019e-06 1.963622222e-05 4.912693305e-05 2.93103911e-05 -2.916816102e-05 -8.444251755e-07 -3.981982432e-06 -7.408889124e-06 -2.879616595e-06 4.399104919e-06 --3.981982432e-06 -4.023283821e-06 -1.446493285e-05 -1.128437164e-05 8.588403448e-06 --7.408889124e-06 -1.446493285e-05 -4.203531461e-05 -2.860633508e-05 2.495825325e-05 --2.879616595e-06 -1.128437164e-05 -2.860633508e-05 -1.729297665e-05 1.698498078e-05 -4.399104919e-06 8.588403448e-06 2.495825325e-05 1.698498078e-05 -1.481883533e-05 -9.067031626e-07 -4.57339515e-06 -8.600659974e-06 -3.416951156e-06 5.106528026e-06 --4.57339515e-06 1.605986758e-06 -3.121553805e-06 -6.169981928e-06 1.853362827e-06 --8.600659974e-06 -3.121553805e-06 -1.917799549e-05 -1.830091564e-05 1.138664106e-05 --3.416951156e-06 -6.169981928e-06 -1.830091564e-05 -1.264685951e-05 1.086590634e-05 -5.106528026e-06 1.853362827e-06 1.138664106e-05 1.086590634e-05 -6.760643712e-06 -7.891026598e-07 -3.964915802e-06 -7.452007851e-06 -2.957149144e-06 4.424473572e-06 --3.964915802e-06 1.100403147e-06 -3.338728851e-06 -5.667407082e-06 1.982316796e-06 --7.452007851e-06 -3.338728851e-06 -1.799059099e-05 -1.654830741e-05 1.068157226e-05 --2.957149144e-06 -5.667407082e-06 -1.654830741e-05 -1.130249956e-05 9.82522887e-06 -4.424473572e-06 1.982316796e-06 1.068157226e-05 9.82522887e-06 -6.341980989e-06 -6.267637853e-07 -2.934735151e-06 -5.454114935e-06 -2.114790675e-06 3.238323393e-06 --2.934735151e-06 -3.384501837e-06 -1.156933078e-05 -8.773983468e-06 6.8691111e-06 --5.454114935e-06 -1.156933078e-05 -3.294016599e-05 -2.206338967e-05 1.955775283e-05 --2.114790675e-06 -8.773983468e-06 -2.206338967e-05 -1.323111875e-05 1.309984303e-05 -3.238323393e-06 6.8691111e-06 1.955775283e-05 1.309984303e-05 -1.161213625e-05 -0.1073437348 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.02809949022 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.005986846175 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.002314996653 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.007653449658 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.003759171808 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.00177782919 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0004424908509 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0002594933044 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0003030074269 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --9.398023366e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -4.954800372e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.633270565e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.1364716474 -0.01569284964 0.03401601112 0 0 --0.01569284964 0.08789267066 0.06078718806 0 0 -0.03401601112 0.06078718806 -0.01243816615 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.06405520986 0.03379329999 0.05258103875 0 0 -0.03379329999 0.0336183336 -0.007063359271 0 0 -0.05258103875 -0.007063359271 -0.03942760438 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.05168029362 0.01584255887 -0.01010875918 0 0 -0.01584255887 0.004023334913 -0.0007866346552 0 0 --0.01010875918 -0.0007866346552 -0.004871249162 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.005580258898 -0.001510229024 0.005702804215 0 0 --0.001510229024 0.0004647374814 0.0006343161792 0 0 -0.005702804215 0.0006343161792 -0.002603581317 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.009692115691 0.003153576729 -0.0005098834019 0 0 -0.003153576729 0.0007176760628 -0.0001195648044 0 0 --0.0005098834019 -0.0001195648044 -0.002409156889 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.001177377881 -0.0003827150778 0.0006711567263 0 0 --0.0003827150778 -5.594243609e-05 0.0002004069868 0 0 -0.0006711567263 0.0002004069868 -0.0003581302831 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.000412639281 -2.356681079e-05 0.0002509986458 0 0 --2.356681079e-05 0.0001352002175 0.0001579851759 0 0 -0.0002509986458 0.0001579851759 -0.0002499547409 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.001288560888 0.0005063173136 -0.0004949332661 0 0 -0.0005063173136 6.611972977e-05 -0.000309432119 0 0 --0.0004949332661 -0.000309432119 1.679841671e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0005745580615 -7.789082296e-05 0.0005827754329 0 0 --7.789082296e-05 -9.184940012e-05 5.483314802e-05 0 0 -0.0005827754329 5.483314802e-05 -0.0005411644937 0 0 -0 0 0 0 0 -0 0 0 0 0 -7.83103745e-05 4.382641008e-05 -3.845415269e-06 0 0 -4.382641008e-05 6.633874467e-06 -3.678746681e-05 0 0 --3.845415269e-06 -3.678746681e-05 -3.970280279e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.127976429e-05 -2.153870157e-05 1.897429582e-05 0 0 --2.153870157e-05 -3.340731372e-06 -1.512881092e-06 0 0 -1.897429582e-05 -1.512881092e-06 -2.310802641e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0001045353651 4.890024648e-05 -1.220304002e-05 0 0 -4.890024648e-05 2.586018544e-06 -3.092805999e-05 0 0 --1.220304002e-05 -3.092805999e-05 -4.747489231e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --7.548625794e-05 -9.690982187e-06 6.817619894e-05 0 0 --9.690982187e-06 -1.209722791e-05 -3.016762707e-06 0 0 -6.817619894e-05 -3.016762707e-06 -7.444558943e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.07360406981 0.005852025407 0.03452655424 -0.04020969188 0.011470538 -0.005852025407 0.1194277809 0.08708370625 0.03982758885 0.02807489642 -0.03452655424 0.08708370625 -0.01430059264 -0.07142536441 -0.02343704758 --0.04020969188 0.03982758885 -0.07142536441 -0.07844031059 -0.002941423997 -0.011470538 0.02807489642 -0.02343704758 -0.002941423997 -0.08699496476 -0.08926585393 0.02307330171 0.0472561123 0.01537386123 0.007933630087 -0.02307330171 0.07800924389 0.002773658348 0.03396230674 -0.01990067509 -0.0472561123 0.002773658348 -0.02167619939 -0.01305009403 0.005750600431 -0.01537386123 0.03396230674 -0.01305009403 0.0004293847757 -0.01434289036 -0.007933630087 -0.01990067509 0.005750600431 -0.01434289036 0.005284777424 -0.04542544931 0.02221395184 -0.01095068927 0.007410511729 -0.001860495461 -0.02221395184 0.01509834722 -0.005330386764 0.00547326567 -0.002083936624 --0.01095068927 -0.005330386764 -0.0179101044 -0.01179344681 -0.004905471397 -0.007410511729 0.00547326567 -0.01179344681 -0.002884142264 -0.003430112392 --0.001860495461 -0.002083936624 -0.004905471397 -0.003430112392 -0.0008825273455 -0.008501633482 0.006320886224 -0.007190210101 -0.001572393092 -0.003286854594 -0.006320886224 0.004150437906 -0.005281932072 -0.0002562494025 -0.0007483201131 --0.007190210101 -0.005281932072 0.006353184901 -0.0003074548891 0.002259614512 --0.001572393092 -0.0002562494025 -0.0003074548891 -0.0008484681167 -9.532057501e-05 --0.003286854594 -0.0007483201131 0.002259614512 -9.532057501e-05 -0.0004608686713 -0.0009922425038 -0.000699422111 0.005080921241 0.00224767304 0.00179199949 --0.000699422111 -0.0005695186895 0.003669801417 0.001519801708 0.001102735761 -0.005080921241 0.003669801417 -0.01051712238 -0.003173598802 -0.003048753868 -0.00224767304 0.001519801708 -0.003173598802 -0.0007117151847 -0.00086794625 -0.00179199949 0.001102735761 -0.003048753868 -0.00086794625 -0.0007788773112 -0.00354948461 0.002449302 -0.003272333726 -0.0003258891339 -0.001093304385 -0.002449302 0.00163331217 -0.001876176913 -9.591413432e-05 -0.0007399319137 --0.003272333726 -0.001876176913 0.002832800116 0.0002654382452 0.0006738182271 --0.0003258891339 -9.591413432e-05 0.0002654382452 2.808066866e-05 -2.059976896e-05 --0.001093304385 -0.0007399319137 0.0006738182271 -2.059976896e-05 0.00030821215 --0.0007638149772 -0.0008467677412 0.001233626768 0.0001775749912 0.0005666849126 --0.0008467677412 -0.0003122800492 0.0008693608304 0.0001710218681 0.0002845866542 -0.001233626768 0.0008693608304 -0.001275411856 -0.0002834805155 -0.0003553405637 -0.0001775749912 0.0001710218681 -0.0002834805155 -0.0001083291748 -1.408728199e-05 -0.0005666849126 0.0002845866542 -0.0003553405637 -1.408728199e-05 -0.0002407044114 -0.001323659483 0.0009231165175 -0.001049927025 -4.341428499e-05 -0.0003869370936 -0.0009231165175 0.0004166875316 -0.0007815759659 -0.000122943794 -6.225625529e-05 --0.001049927025 -0.0007815759659 0.0001166393013 -0.0003330649465 0.0003330268823 --4.341428499e-05 -0.000122943794 -0.0003330649465 -0.000200295729 8.596125864e-05 --0.0003869370936 -6.225625529e-05 0.0003330268823 8.596125864e-05 -7.716112361e-05 --0.0003250919762 -0.000230400679 0.0004525043338 9.670918413e-05 0.0001335239856 --0.000230400679 -0.0001882676509 0.000267150345 3.490688427e-05 0.0001233364407 -0.0004525043338 0.000267150345 -0.0007270517731 -0.0001939304312 -0.0001177624594 -9.670918413e-05 3.490688427e-05 -0.0001939304312 -6.357855403e-05 1.296758384e-06 -0.0001335239856 0.0001233364407 -0.0001177624594 1.296758384e-06 -8.743156051e-05 -0.0001025927055 3.388669751e-05 -7.080009816e-05 -1.05382782e-05 1.667248629e-06 -3.388669751e-05 4.800408176e-05 -3.769396221e-05 -5.37084123e-06 -5.535499972e-06 --7.080009816e-05 -3.769396221e-05 4.510900305e-05 -1.325267167e-05 3.466396775e-05 --1.05382782e-05 -5.37084123e-06 -1.325267167e-05 -1.477894984e-05 1.660955898e-05 -1.667248629e-06 -5.535499972e-06 3.466396775e-05 1.660955898e-05 -1.663916315e-05 -6.44809589e-05 3.478356207e-05 -8.844240881e-05 -2.452835082e-05 -1.612190949e-05 -3.478356207e-05 3.089805036e-05 -5.641838522e-05 -2.112584563e-05 -1.436623984e-06 --8.844240881e-05 -5.641838522e-05 6.003147488e-05 -2.026005571e-05 4.355486897e-05 --2.452835082e-05 -2.112584563e-05 -2.026005571e-05 -2.709955944e-05 2.193135129e-05 --1.612190949e-05 -1.436623984e-06 4.355486897e-05 2.193135129e-05 -1.511573577e-05 -2.061420425e-05 1.353323961e-05 -4.459467482e-06 3.72649909e-06 -1.792278346e-06 -1.353323961e-05 -3.670209725e-07 -4.794354774e-06 -7.576920254e-06 1.443638595e-05 --4.459467482e-06 -4.794354774e-06 -9.070884939e-05 -5.488062959e-05 7.052896813e-06 -3.72649909e-06 -7.576920254e-06 -5.488062959e-05 -3.137134048e-05 1.216584157e-05 --1.792278346e-06 1.443638595e-05 7.052896813e-06 1.216584157e-05 -2.080395822e-05 --1.88502049e-05 -1.733258921e-05 1.712374016e-05 -5.670171153e-07 9.992761961e-06 --1.733258921e-05 -1.354431653e-05 8.25750392e-07 -1.04546729e-05 1.712078451e-05 -1.712374016e-05 8.25750392e-07 -6.854503969e-05 -3.581067689e-05 1.660907701e-05 --5.670171153e-07 -1.04546729e-05 -3.581067689e-05 -2.217164654e-05 1.635904592e-05 -9.992761961e-06 1.712078451e-05 1.660907701e-05 1.635904592e-05 -2.098274659e-05 --0.06625822774 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.01103529126 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.001338868865 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.001833176938 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0006952350806 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -8.508939923e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --4.736576045e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.579423302e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -6.076961116e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -9.168793254e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --9.549186997e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.205564724e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.315411577e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.03407436999 0.09895386822 0.08983163496 0 0 -0.09895386822 -0.002617349872 0.01642688721 0 0 -0.08983163496 0.01642688721 -0.01593680917 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0312515256 0.008952268623 0.03381547391 0 0 -0.008952268623 0.002374609022 0.01194158 0 0 -0.03381547391 0.01194158 -0.006374225007 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.002612142392 -0.002513008811 -0.003713166918 0 0 --0.002513008811 0.001787379903 0.0008487421629 0 0 --0.003713166918 0.0008487421629 0.001520023263 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0009132516466 -0.00434878683 -0.002065925206 0 0 --0.00434878683 -0.0009790404074 -0.0001925339933 0 0 --0.002065925206 -0.0001925339933 -0.001043859562 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0005775846278 0.001408781483 0.000621372467 0 0 -0.001408781483 -0.0005230411861 -0.0005568209189 0 0 -0.000621372467 -0.0005568209189 -0.0002055388042 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.016944281e-05 1.991354165e-05 2.236412106e-05 0 0 -1.991354165e-05 0.000128052573 0.0001025263004 0 0 -2.236412106e-05 0.0001025263004 7.651765072e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0001876166772 0.0002807641435 0.0003606375842 0 0 -0.0002807641435 0.0001260655117 0.0001502307511 0 0 -0.0003606375842 0.0001502307511 3.70733806e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -9.951847754e-05 -0.0002760246799 -0.0002591991989 0 0 --0.0002760246799 -5.954200057e-07 -9.389340992e-06 0 0 --0.0002591991989 -9.389340992e-06 6.581341163e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 -5.124663125e-05 0.0001615311857 8.361359259e-05 0 0 -0.0001615311857 -4.289671733e-05 -4.604668613e-05 0 0 -8.361359259e-05 -4.604668613e-05 -1.656283967e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -5.398400095e-06 -7.152863403e-05 -5.288898992e-05 0 0 --7.152863403e-05 9.143156033e-07 2.751004156e-06 0 0 --5.288898992e-05 2.751004156e-06 -1.025696111e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 --5.761406959e-06 7.033901131e-05 6.143797755e-05 0 0 -7.033901131e-05 7.103787634e-06 9.659124588e-06 0 0 -6.143797755e-05 9.659124588e-06 1.16578518e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 -2.319428792e-05 -2.63872131e-05 -3.268756788e-05 0 0 --2.63872131e-05 2.445842876e-06 -7.572922612e-07 0 0 --3.268756788e-05 -7.572922612e-07 3.570855749e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.193323445e-05 2.74184248e-05 1.353950389e-05 0 0 -2.74184248e-05 -2.258596771e-06 -3.513424102e-06 0 0 -1.353950389e-05 -3.513424102e-06 -2.860215044e-08 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.05304832727 -0.004962878869 -0.05004941828 -0.003012560525 -0.008110968138 --0.004962878869 -0.001212766651 -0.009066790193 0.0109257532 0.04354439591 --0.05004941828 -0.009066790193 0.005519432728 0.006671088051 0.03007060479 --0.003012560525 0.0109257532 0.006671088051 -0.0004558784713 -0.0007690404313 --0.008110968138 0.04354439591 0.03007060479 -0.0007690404313 -0.0007508914581 --0.002493790304 -0.01247682406 0.00591300495 0.001841641152 0.003252932971 --0.01247682406 -0.008555268617 0.01076496169 0.004565096698 0.01457077114 -0.00591300495 0.01076496169 -0.01882045775 -0.001561227233 0.0002459358848 -0.001841641152 0.004565096698 -0.001561227233 -0.0005101878385 -0.0008987973699 -0.003252932971 0.01457077114 0.0002459358848 -0.0008987973699 -0.001080990807 --0.001534807044 -0.001185729811 0.001769847572 0.0002683154719 0.0005606917399 --0.001185729811 -0.000850302156 0.001310621647 0.0002187124268 0.0005033898555 -0.001769847572 0.001310621647 -0.002056593455 -0.0003084592562 -0.0006501174913 -0.0002683154719 0.0002187124268 -0.0003084592562 -4.504154097e-05 -8.908813171e-05 -0.0005606917399 0.0005033898555 -0.0006501174913 -8.908813171e-05 -0.0001568793002 -0.001048951332 7.947234531e-05 -0.001019867252 -8.469680987e-05 -0.00021071855 -7.947234531e-05 9.050189105e-05 -0.0003111072756 0.0001436344899 0.0006190095737 --0.001019867252 -0.0003111072756 0.0003515348668 0.0001435767546 0.0005536021856 --8.469680987e-05 0.0001436344899 0.0001435767546 -5.35795948e-07 3.216094022e-06 --0.00021071855 0.0006190095737 0.0005536021856 3.216094022e-06 2.511217034e-05 --9.25161211e-05 -6.518326856e-05 0.0001014408691 1.560963823e-05 3.431745301e-05 --6.518326856e-05 -4.597723028e-05 7.167933781e-05 1.09380639e-05 2.389177938e-05 -0.0001014408691 7.167933781e-05 -0.0001118309234 -1.696659271e-05 -3.687602954e-05 -1.560963823e-05 1.09380639e-05 -1.696659271e-05 -2.653365196e-06 -5.913908423e-06 -3.431745301e-05 2.389177938e-05 -3.687602954e-05 -5.913908423e-06 -1.344243882e-05 -1.617436857e-05 9.263493762e-06 -1.810326964e-05 -2.390545401e-06 -5.067357082e-06 -9.263493762e-06 6.896211134e-06 -1.144330352e-05 -9.943986927e-07 -9.156369197e-07 --1.810326964e-05 -1.144330352e-05 1.730856726e-05 3.050364276e-06 7.623961465e-06 --2.390545401e-06 -9.943986927e-07 3.050364276e-06 3.291793597e-07 6.3517594e-07 --5.067357082e-06 -9.156369197e-07 7.623961465e-06 6.3517594e-07 1.046134334e-06 --1.723131565e-05 -4.334627482e-05 2.971995703e-05 6.947722923e-06 1.240064409e-05 --4.334627482e-05 -3.034565748e-05 4.010265734e-05 1.435760636e-05 4.421303897e-05 -2.971995703e-05 4.010265734e-05 -6.823980001e-05 -6.846339442e-06 -4.711111816e-06 -6.947722923e-06 1.435760636e-05 -6.846339442e-06 -1.693044449e-06 -2.845506058e-06 -1.240064409e-05 4.421303897e-05 -4.711111816e-06 -2.845506058e-06 -2.722030931e-06 -6.80460206e-05 2.979736094e-05 -7.401853681e-05 -8.73668545e-06 -1.878744678e-05 -2.979736094e-05 2.286748101e-05 -4.086508273e-05 -4.632640475e-07 8.407121093e-06 --7.401853681e-05 -4.086508273e-05 5.965099399e-05 1.202296211e-05 3.35841181e-05 --8.73668545e-06 -4.632640475e-07 1.202296211e-05 9.504719973e-07 1.780340205e-06 --1.878744678e-05 8.407121093e-06 3.35841181e-05 1.780340205e-06 2.682006399e-06 -6.547233611e-06 2.582387506e-06 -7.448383551e-06 -7.702015734e-07 -1.516932854e-06 -2.582387506e-06 2.125863789e-06 -3.957861672e-06 1.004456984e-07 1.387982625e-06 --7.448383551e-06 -3.957861672e-06 5.668209164e-06 1.246682091e-06 3.634241229e-06 --7.702015734e-07 1.004456984e-07 1.246682091e-06 5.604670533e-08 3.293240689e-08 --1.516932854e-06 1.387982625e-06 3.634241229e-06 3.293240689e-08 -2.964425484e-07 --5.170544281e-06 -7.067032898e-06 6.738411189e-06 1.32219389e-06 2.632392787e-06 --7.067032898e-06 -4.922293861e-06 6.86177298e-06 1.971237226e-06 5.756483837e-06 -6.738411189e-06 6.86177298e-06 -1.134480224e-05 -1.316554381e-06 -1.713571259e-06 -1.32219389e-06 1.971237226e-06 -1.316554381e-06 -2.853991272e-07 -5.515105163e-07 -2.632392787e-06 5.756483837e-06 -1.713571259e-06 -5.515105163e-07 -9.121237543e-07 -1.276504663e-05 2.666236656e-06 -1.288454645e-05 -1.258369983e-06 -2.950345084e-06 -2.666236656e-06 2.252107403e-06 -5.166781177e-06 1.068740008e-06 5.310012758e-06 --1.288454645e-05 -5.166781177e-06 6.757546902e-06 1.913409526e-06 6.513125501e-06 --1.258369983e-06 1.068740008e-06 1.913409526e-06 6.47816133e-08 1.651688442e-07 --2.950345084e-06 5.310012758e-06 6.513125501e-06 1.651688442e-07 4.593149293e-07 -1.279668648e-05 4.814325799e-06 -1.375790823e-05 -1.533113758e-06 -3.323282576e-06 -4.814325799e-06 3.783183023e-06 -7.081021004e-06 2.32700015e-07 2.642880092e-06 --1.375790823e-05 -7.081021004e-06 1.011621131e-05 2.200913971e-06 6.472576878e-06 --1.533113758e-06 2.32700015e-07 2.200913971e-06 1.424775168e-07 2.602593465e-07 --3.323282576e-06 2.642880092e-06 6.472576878e-06 2.602593465e-07 3.602883166e-07 -2.647529248e-06 -8.130132907e-07 -2.414807256e-06 -6.868485863e-08 -2.348974483e-07 --8.130132907e-07 -4.216742306e-07 -4.029787934e-08 7.769924671e-07 2.950737878e-06 --2.414807256e-06 -4.029787934e-08 -4.863812331e-07 2.992528882e-07 1.642292472e-06 --6.868485863e-08 7.769924671e-07 2.992528882e-07 -5.077750699e-08 -1.018199713e-07 --2.348974483e-07 2.950737878e-06 1.642292472e-06 -1.018199713e-07 -1.85606237e-07 --0.004525651757 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.008005357363 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.006668863914 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -9.565586508e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0007678279309 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0004327048543 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0004225706349 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -4.242469513e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.388281232e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --4.741483974e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.508748838e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -7.675686702e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.224370202e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.01021625431 0.1163972928 0.08612680903 0 0 -0.1163972928 0.007395243398 -0.007646348436 0 0 -0.08612680903 -0.007646348436 -0.01188648867 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.00138423613 0.05107328965 0.04040227309 0 0 -0.05107328965 0.006562133482 -0.003190726535 0 0 -0.04040227309 -0.003190726535 -0.00614952491 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0009720995 0.01308419066 0.01009429619 0 0 -0.01308419066 0.003542419883 0.003585567359 0 0 -0.01009429619 0.003585567359 0.003170848426 0 0 -0 0 0 0 0 -0 0 0 0 0 -2.938710134e-05 0.002451724653 0.001940310882 0 0 -0.002451724653 -0.0003491553676 -0.0008962485977 0 0 -0.001940310882 -0.0008962485977 -0.0009764801396 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0002980780827 0.003392067874 0.002643984407 0 0 -0.003392067874 0.0008978761488 0.0008538645697 0 0 -0.002643984407 0.0008538645697 0.0007360090209 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.400359933e-05 0.000182296213 0.0001471505578 0 0 -0.000182296213 -0.0002044132201 -0.0001866612976 0 0 -0.0001471505578 -0.0001866612976 -0.0001580282997 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.537895411e-05 0.0004241472622 0.0003362283949 0 0 -0.0004241472622 0.0001294912697 8.27645678e-05 0 0 -0.0003362283949 8.27645678e-05 5.711323719e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.715011442e-07 -1.94719083e-07 -4.732295207e-08 0 0 --1.94719083e-07 2.748920082e-05 2.151653876e-05 0 0 --4.732295207e-08 2.151653876e-05 1.676819366e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.681285966e-05 0.0001944411055 0.0001514656015 0 0 -0.0001944411055 1.586333972e-05 2.093496278e-05 0 0 -0.0001514656015 2.093496278e-05 2.010704384e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.409315729e-07 1.186677956e-05 9.067637403e-06 0 0 -1.186677956e-05 -8.328599205e-06 -6.435963574e-06 0 0 -9.067637403e-06 -6.435963574e-06 -4.99141523e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 -2.367374862e-07 2.997182293e-06 2.54514354e-06 0 0 -2.997182293e-06 -1.003040478e-06 -2.943883688e-06 0 0 -2.54514354e-06 -2.943883688e-06 -3.207392161e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 --7.780062295e-07 1.034393727e-05 7.839976244e-06 0 0 -1.034393727e-05 7.329386401e-06 7.183362857e-06 0 0 -7.839976244e-06 7.183362857e-06 6.241229421e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 --8.632052489e-07 1.361982354e-05 1.038538809e-05 0 0 -1.361982354e-05 -1.861784402e-06 -2.348016873e-07 0 0 -1.038538809e-05 -2.348016873e-07 3.416193838e-07 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.01490182846 -0.02559349794 -0.01859196456 -0.02816370536 0.01624185736 --0.02559349794 -0.008413173893 0.01914134231 0.08697277619 0.1190818761 --0.01859196456 0.01914134231 0.02628316503 -0.03302353627 0.1117084202 --0.02816370536 0.08697277619 -0.03302353627 0.0112449077 0.008550192801 -0.01624185736 0.1190818761 0.1117084202 0.008550192801 -0.008069642422 --0.004534210343 -0.01842818513 -0.01434080837 -0.01315376289 0.00742568511 --0.01842818513 -0.002412712856 0.005479231856 0.02796789392 0.05340203202 --0.01434080837 0.005479231856 0.007506077285 -0.007033108535 0.04767242769 --0.01315376289 0.02796789392 -0.007033108535 0.01217806409 0.008892064818 -0.00742568511 0.05340203202 0.04767242769 0.008892064818 -0.01065384585 -0.003603158896 -0.01650931312 -0.01300877083 -0.001323538583 -0.004579660696 --0.01650931312 -0.003118157806 -0.00244096579 0.006745119443 0.02806522972 --0.01300877083 -0.00244096579 -0.001916504294 0.005255347887 0.02212633159 --0.001323538583 0.006745119443 0.005255347887 0.0006508668821 0.001553852607 --0.004579660696 0.02806522972 0.02212633159 0.001553852607 0.00520687359 --0.0001310968857 0.0002916938141 0.0002392244897 -0.0006162385803 4.374357868e-05 -0.0002916938141 -0.0001018647757 0.0003961165308 0.001262889654 0.0009386580692 -0.0002392244897 0.0003961165308 0.0005178695876 -0.0008878051693 0.001106313433 --0.0006162385803 0.001262889654 -0.0008878051693 0.0002838266112 0.0003162559679 -4.374357868e-05 0.0009386580692 0.001106313433 0.0003162559679 0.0003048775159 -0.0004524654102 -0.003277435162 -0.002581925565 -0.0001475704266 -0.0004698412082 --0.003277435162 -0.0006178151769 -0.0004845281864 0.001338640716 0.005567590397 --0.002581925565 -0.0004845281864 -0.0003807696484 0.001046572496 0.004387674828 --0.0001475704266 0.001338640716 0.001046572496 7.329701033e-05 0.0001189042119 --0.0004698412082 0.005567590397 0.004387674828 0.0001189042119 0.0002989811675 -0.0001109832259 -8.974097811e-05 -7.098844763e-05 -4.496689616e-05 -0.0001814196028 --8.974097811e-05 -3.122486428e-05 -1.569461346e-05 6.404415188e-05 0.000179987914 --7.098844763e-05 -1.569461346e-05 -8.546091708e-06 1.492778275e-05 0.0001495630691 --4.496689616e-05 6.404415188e-05 1.492778275e-05 4.164672536e-06 6.086707509e-05 --0.0001814196028 0.000179987914 0.0001495630691 6.086707509e-05 0.000297091417 --4.018244449e-06 -0.0002464960501 -0.0001977842709 -3.514732009e-05 3.684121624e-05 --0.0002464960501 -5.653462024e-05 -3.12007086e-05 0.0001287464929 0.000465254139 --0.0001977842709 -3.12007086e-05 -1.907552483e-05 4.794345702e-05 0.0003837869328 --3.514732009e-05 0.0001287464929 4.794345702e-05 4.576743934e-05 1.8584019e-05 -3.684121624e-05 0.000465254139 0.0003837869328 1.8584019e-05 -0.0001096795052 -7.508180942e-05 -0.0001383461892 -0.0001087808617 -2.730743664e-05 -0.0001182473509 --0.0001383461892 -3.847122817e-05 -2.174403662e-05 8.393526417e-05 0.0002604962824 --0.0001087808617 -2.174403662e-05 -1.342319941e-05 3.208212702e-05 0.0002117968841 --2.730743664e-05 8.393526417e-05 3.208212702e-05 -5.525003144e-06 3.101274785e-05 --0.0001182473509 0.0002604962824 0.0002117968841 3.101274785e-05 0.0001860233217 --5.223562784e-06 -0.0001093120964 -8.574886643e-05 5.605080378e-06 1.713654366e-05 --0.0001093120964 -2.028522816e-05 -1.568343996e-05 4.634129322e-05 0.0001857172691 --8.574886643e-05 -1.568343996e-05 -1.220295031e-05 3.541892889e-05 0.0001458784303 -5.605080378e-06 4.634129322e-05 3.541892889e-05 -5.245766808e-06 -1.294256005e-05 -1.713654366e-05 0.0001857172691 0.0001458784303 -1.294256005e-05 -4.297474642e-05 -4.846603178e-06 -9.976985488e-06 -7.879743743e-06 -4.041988534e-06 -7.296601427e-06 --9.976985488e-06 -1.629383968e-06 -4.638829705e-07 6.15437458e-06 1.946479264e-05 --7.879743743e-06 -4.638829705e-07 -1.393950012e-08 1.617224826e-06 1.602650713e-05 --4.041988534e-06 6.15437458e-06 1.617224826e-06 3.182233575e-06 4.818464602e-06 --7.296601427e-06 1.946479264e-05 1.602650713e-05 4.818464602e-06 1.102313742e-05 --1.025785087e-06 7.165243826e-06 5.364178169e-06 -2.900844392e-06 1.245213228e-06 -7.165243826e-06 -9.745764307e-07 1.428224248e-06 2.92986309e-06 -4.966299281e-06 -5.364178169e-06 1.428224248e-06 2.052828883e-06 -6.468822207e-06 -1.625832086e-06 --2.900844392e-06 2.92986309e-06 -6.468822207e-06 1.70899411e-06 1.305005207e-06 -1.245213228e-06 -4.966299281e-06 -1.625832086e-06 1.305005207e-06 -9.298332252e-07 -4.222279389e-06 -1.45285069e-05 -1.13537835e-05 -1.756858895e-06 -6.561822432e-06 --1.45285069e-05 -3.885222906e-06 -1.790890933e-06 1.000785992e-05 2.835737403e-05 --1.13537835e-05 -1.790890933e-06 -8.572870307e-07 2.861447569e-06 2.320141676e-05 --1.756858895e-06 1.000785992e-05 2.861447569e-06 -1.202150107e-06 9.383003796e-07 --6.561822432e-06 2.835737403e-05 2.320141676e-05 9.383003796e-07 1.026032631e-05 --1.327361739e-06 -4.474449805e-06 -3.450442992e-06 7.793458102e-08 2.169124429e-06 --4.474449805e-06 -1.113407162e-06 -1.216095771e-07 4.203833577e-06 9.759822898e-06 --3.450442992e-06 -1.216095771e-07 2.347084636e-07 3.353520212e-07 8.163055753e-06 -7.793458102e-08 4.203833577e-06 3.353520212e-07 -6.646215551e-07 -1.24880113e-06 -2.169124429e-06 9.759822898e-06 8.163055753e-06 -1.24880113e-06 -3.436693948e-06 --0.1340737588 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.1069194293 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.018268438 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.005445593727 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0150794148 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.007370541692 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.003188687269 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0007576848098 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0008369509576 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0004784952161 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.08762992e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0001403458073 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -2.775963537e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.01029396207 0.0116064241 0.0142938817 0 0 -0.0116064241 -0.09516303546 0.02027220421 0 0 -0.0142938817 0.02027220421 -0.1111857232 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.08344437387 -0.0357786218 0.02519026683 0 0 --0.0357786218 -0.04793081221 0.04915004005 0 0 -0.02519026683 0.04915004005 -0.06277264699 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.06143097518 -0.02658931177 0.04396132467 0 0 --0.02658931177 -0.007468385539 0.01533054292 0 0 -0.04396132467 0.01533054292 -0.02368176757 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.01360409263 0.004678604531 -0.008410724299 0 0 -0.004678604531 -0.001244143095 -0.001403827861 0 0 --0.008410724299 -0.001403827861 0.001281118189 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.00977611243 -0.004867197219 0.007626731213 0 0 --0.004867197219 -0.001273021151 0.003350126021 0 0 -0.007626731213 0.003350126021 -0.004350993958 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.002495865216 0.0006701703678 -0.001437078234 0 0 -0.0006701703678 0.0001740009767 -0.0003179839735 0 0 --0.001437078234 -0.0003179839735 0.0007629376374 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0005019999494 0.0002220408087 -1.747195188e-05 0 0 -0.0002220408087 -0.0003017043035 -0.0001141848787 0 0 --1.747195188e-05 -0.0001141848787 -0.0004538319691 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.002572734703 -0.0008725602477 0.001390292229 0 0 --0.0008725602477 -0.0002030171161 0.0004751520342 0 0 -0.001390292229 0.0004751520342 -0.000658155786 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.00132870689 0.0003082358593 -0.0005896695593 0 0 -0.0003082358593 0.0001522492906 -9.364178061e-05 0 0 --0.0005896695593 -9.364178061e-05 0.0003280147491 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0001591946922 -5.292820754e-05 8.001338175e-05 0 0 --5.292820754e-05 -3.873168197e-05 1.986774118e-05 0 0 -8.001338175e-05 1.986774118e-05 -5.484811734e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -6.793569184e-05 4.593685125e-05 -2.772481266e-05 0 0 -4.593685125e-05 2.56549691e-06 -2.421120817e-05 0 0 --2.772481266e-05 -2.421120817e-05 -7.345267628e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0001905935093 -8.052469991e-05 0.0001103801882 0 0 --8.052469991e-05 -7.864556599e-06 5.056614887e-05 0 0 -0.0001103801882 5.056614887e-05 -4.117909767e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0001466140988 3.431989501e-05 -7.154471454e-05 0 0 -3.431989501e-05 1.837117418e-05 -1.298233061e-05 0 0 --7.154471454e-05 -1.298233061e-05 4.525040286e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.1117481762 0.04407362449 -0.03063387964 -0.008913272692 -0.04524645649 -0.04407362449 0.03923533899 -0.005628678036 -0.01135930485 0.01476973105 --0.03063387964 -0.005628678036 0.03931683555 -0.0227241801 -0.005292319044 --0.008913272692 -0.01135930485 -0.0227241801 -0.03730256566 0.006148045741 --0.04524645649 0.01476973105 -0.005292319044 0.006148045741 -0.05253203738 --0.09252035473 0.01127857482 -0.0246569636 -0.02548697585 -0.04706198714 -0.01127857482 -0.06519100849 0.02567472885 -0.01465250779 0.04339380644 --0.0246569636 0.02567472885 -0.04917017199 -0.02102918363 -0.03882361263 --0.02548697585 -0.01465250779 -0.02102918363 -0.02329735988 -0.01007454342 --0.04706198714 0.04339380644 -0.03882361263 -0.01007454342 -0.04744969083 --0.007950616817 -0.007367663267 0.01202793591 0.00218865198 0.004278920467 --0.007367663267 -0.0189917586 0.02285382136 0.00329004808 0.01245263157 -0.01202793591 0.02285382136 -0.03868653567 -0.009241424456 -0.01771704171 -0.00218865198 0.00329004808 -0.009241424456 -0.003141155612 -0.003614910069 -0.004278920467 0.01245263157 -0.01771704171 -0.003614910069 -0.009170272307 --0.01108854812 -0.01018384265 0.01586174233 0.002395108136 0.005354925889 --0.01018384265 -0.005817905646 0.01100682926 0.001806610464 0.003485452233 -0.01586174233 0.01100682926 -0.01577036869 -0.002207528525 -0.00556317605 -0.002395108136 0.001806610464 -0.002207528525 -0.0004366892144 -0.0008856843865 -0.005354925889 0.003485452233 -0.00556317605 -0.0008856843865 -0.002184454146 -0.01104510634 0.007314609208 -0.01130207235 -0.001617176128 -0.003612195715 -0.007314609208 0.003221408746 -0.005005958191 -0.0005324856043 -0.001263157686 --0.01130207235 -0.005005958191 0.008512750126 0.0009978387103 0.001537023768 --0.001617176128 -0.0005324856043 0.0009978387103 4.583915371e-05 -9.766266977e-05 --0.003612195715 -0.001263157686 0.001537023768 -9.766266977e-05 0.0001754182333 --0.004963298781 -0.004028119706 0.006067931232 0.0009520752349 0.002266393172 --0.004028119706 -0.003001823926 0.004190683991 0.0005620415848 0.001657675534 -0.006067931232 0.004190683991 -0.006870603522 -0.001122024101 -0.002212417513 -0.0009520752349 0.0005620415848 -0.001122024101 -0.0002085674572 -0.0002522659603 -0.002266393172 0.001657675534 -0.002212417513 -0.0002522659603 -0.0008400320822 -0.001960356054 0.001766186361 -0.002603173586 -0.0004297577074 -0.001075544715 -0.001766186361 0.0007422805312 -0.00187111426 -0.0004398088954 -0.0003112784866 --0.002603173586 -0.00187111426 0.002079995456 3.758628659e-05 0.0008606282202 --0.0004297577074 -0.0004398088954 3.758628659e-05 -0.0001830104357 0.0001881503707 --0.001075544715 -0.0003112784866 0.0008606282202 0.0001881503707 6.097945943e-05 --0.001201900555 -0.001235340351 0.001931009299 0.0003480356297 0.0007504248568 --0.001235340351 -0.0006831117418 0.00162216749 0.0003649898675 0.0003605230779 -0.001931009299 0.00162216749 -0.00204200375 -0.0002173918345 -0.0008356303301 -0.0003480356297 0.0003649898675 -0.0002173918345 4.236105811e-05 -0.0001767180061 -0.0007504248568 0.0003605230779 -0.0008356303301 -0.0001767180061 -0.0001839880393 -0.0008934977285 0.0005658983837 -0.0009215416842 -0.0001376555919 -0.0002642035174 -0.0005658983837 0.000392729472 -0.0005486555984 -6.399268862e-05 -0.000190572312 --0.0009215416842 -0.0005486555984 0.001004865852 0.0001749464485 0.0002556203957 --0.0001376555919 -6.399268862e-05 0.0001749464485 4.083308325e-05 2.59908557e-05 --0.0002642035174 -0.000190572312 0.0002556203957 2.59908557e-05 8.791228843e-05 --0.0001236994725 -5.164315403e-05 9.898115088e-05 1.423179623e-05 1.565273482e-05 --5.164315403e-05 -9.394332135e-05 4.707488787e-05 -1.366483855e-05 5.923975558e-05 -9.898115088e-05 4.707488787e-05 -0.0001949502285 -6.586818148e-05 -3.514106788e-05 -1.423179623e-05 -1.366483855e-05 -6.586818148e-05 -3.284741844e-05 5.826636257e-06 -1.565273482e-05 5.923975558e-05 -3.514106788e-05 5.826636257e-06 -3.929892943e-05 --0.0001180644586 -8.815427414e-05 0.0001539587485 2.588669609e-05 4.030978263e-05 --8.815427414e-05 -4.06883513e-05 0.0001064275107 2.058826532e-05 1.842121839e-05 -0.0001539587485 0.0001064275107 -0.0001557567965 -2.450877768e-05 -4.596712527e-05 -2.588669609e-05 2.058826532e-05 -2.450877768e-05 -4.650189352e-06 -7.868436314e-06 -4.030978263e-05 1.842121839e-05 -4.596712527e-05 -7.868436314e-06 -1.087943294e-05 -5.923390214e-05 4.069864254e-06 -1.338557624e-05 1.474416906e-06 9.212316658e-06 -4.069864254e-06 2.729665376e-05 2.379106522e-05 1.658863069e-05 -1.308819807e-05 --1.338557624e-05 2.379106522e-05 4.048596313e-05 1.996500208e-05 -1.281105877e-05 -1.474416906e-06 1.658863069e-05 1.996500208e-05 1.188951938e-05 -7.643744291e-06 -9.212316658e-06 -1.308819807e-05 -1.281105877e-05 -7.643744291e-06 5.064441803e-06 -4.842287977e-05 2.845219087e-05 -4.701817835e-05 -7.036126688e-06 -1.277988887e-05 -2.845219087e-05 2.362186185e-05 -2.762615669e-05 -3.307156099e-06 -1.039279633e-05 --4.701817835e-05 -2.762615669e-05 5.905970183e-05 9.760434651e-06 1.337125645e-05 --7.036126688e-06 -3.307156099e-06 9.760434651e-06 1.286206972e-06 2.248293696e-06 --1.277988887e-05 -1.039279633e-05 1.337125645e-05 2.248293696e-06 3.234070716e-06 --0.002175760481 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0008695998984 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -3.092701411e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0002103920351 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -5.947215094e-08 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.245112206e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --8.179695878e-07 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --9.683546808e-07 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -4.131302054e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --7.51774914e-08 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --4.468982975e-07 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.282497794e-07 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -8.037597254e-07 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.007841484005 -0.1042577645 -0.08155852644 0 0 --0.1042577645 -0.005265655908 -0.004131311754 0 0 --0.08155852644 -0.004131311754 -0.003241303856 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.001369426332 -0.02042776289 -0.01591711807 0 0 --0.02042776289 -0.006678173386 -0.005229356123 0 0 --0.01591711807 -0.005229356123 -0.004094759624 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0001958650364 0.00326616022 0.002537949181 0 0 -0.00326616022 -0.001553058717 -0.001214370969 0 0 -0.002537949181 -0.001214370969 -0.0009495054788 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0002229489885 0.003787989886 0.002940715238 0 0 -0.003787989886 0.0007344637394 0.0005740669957 0 0 -0.002940715238 0.0005740669957 0.000448678383 0 0 -0 0 0 0 0 -0 0 0 0 0 -7.54648604e-05 -0.001205677899 -0.0009380222046 0 0 --0.001205677899 0.0005860743823 0.000458546683 0 0 --0.0009380222046 0.000458546683 0.0003587568568 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.541096972e-06 -2.287033947e-05 -1.776385576e-05 0 0 --2.287033947e-05 -0.0001290633688 -0.0001009538837 0 0 --1.776385576e-05 -0.0001009538837 -7.896372013e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -2.164121432e-05 -0.0003416300286 -0.0002657258771 0 0 --0.0003416300286 -0.000148101058 -0.0001158706125 0 0 --0.0002657258771 -0.0001158706125 -9.065131324e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.769593224e-05 0.0002951867246 0.0002293016971 0 0 -0.0002951867246 4.40583936e-06 3.444652824e-06 0 0 -0.0002293016971 3.444652824e-06 2.693048992e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 -9.021977582e-06 -0.0001435346463 -0.000111673493 0 0 --0.0001435346463 4.822766313e-05 3.773450701e-05 0 0 --0.000111673493 3.773450701e-05 2.95234504e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --4.241233854e-06 7.037991787e-05 5.468057792e-05 0 0 -7.037991787e-05 -1.783673594e-06 -1.394656362e-06 0 0 -5.468057792e-05 -1.394656362e-06 -1.090439289e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 -4.714536818e-06 -7.320003112e-05 -5.697550683e-05 0 0 --7.320003112e-05 -8.854103517e-06 -6.929406233e-06 0 0 --5.697550683e-05 -6.929406233e-06 -5.422937978e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.815326827e-06 3.161568826e-05 2.453114391e-05 0 0 -3.161568826e-05 -1.306129245e-06 -1.020597597e-06 0 0 -2.453114391e-05 -1.020597597e-06 -7.974465125e-07 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.57817519e-06 -2.407587639e-05 -1.875250785e-05 0 0 --2.407587639e-05 3.003622472e-06 2.351456839e-06 0 0 --1.875250785e-05 2.351456839e-06 1.840845551e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.003202987751 0.02462680718 0.01937814071 0.0007939099406 0.003280729298 -0.02462680718 0.004669859357 0.003674507471 -0.01010497391 -0.04175748445 -0.01937814071 0.003674507471 0.002891308734 -0.007951317753 -0.03285778175 -0.0007939099406 -0.01010497391 -0.007951317753 -0.0001142816071 -0.0004722538899 -0.003280729298 -0.04175748445 -0.03285778175 -0.0004722538899 -0.001951527827 --0.001244918215 0.005773355127 0.004542891375 0.0003868999386 0.001598813599 -0.005773355127 0.001099160988 0.0008648799845 -0.002369037305 -0.009789736823 -0.004542891375 0.0008648799845 0.0006805348766 -0.001864128681 -0.00770326797 -0.0003868999386 -0.002369037305 -0.001864128681 -0.0001083896927 -0.0004479063121 -0.001598813599 -0.009789736823 -0.00770326797 -0.0004479063121 -0.001850914597 --3.124005894e-05 3.393047375e-05 2.669901172e-05 1.199671481e-05 4.957485686e-05 -3.393047375e-05 6.672365266e-06 5.250103741e-06 -1.392739226e-05 -5.755311111e-05 -2.669901172e-05 5.250103741e-06 4.131007246e-06 -1.095910027e-05 -4.528703604e-05 -1.199671481e-05 -1.392739226e-05 -1.095910027e-05 -4.588435577e-06 -1.896111102e-05 -4.957485686e-05 -5.755311111e-05 -4.528703604e-05 -1.896111102e-05 -7.835431598e-05 --5.2499021e-05 0.000381782572 0.0003004139529 1.346360331e-05 5.563658555e-05 -0.000381782572 7.242078696e-05 5.698474676e-05 -0.000156655134 -0.0006473568748 -0.0003004139529 5.698474676e-05 4.483880248e-05 -0.0001232674894 -0.0005093867954 -1.346360331e-05 -0.000156655134 -0.0001232674894 -2.241414001e-06 -9.26235208e-06 -5.563658555e-05 -0.0006473568748 -0.0005093867954 -9.26235208e-06 -3.82754663e-05 -4.150772109e-07 9.813962004e-08 7.722752864e-08 -1.70717766e-07 -7.054699247e-07 -9.813962004e-08 1.480937997e-08 1.165468853e-08 -4.019099543e-08 -1.660844055e-07 -7.722752864e-08 1.165468853e-08 9.172008709e-09 -3.162691281e-08 -1.306943746e-07 --1.70717766e-07 -4.019099543e-08 -3.162691281e-08 7.021121585e-08 2.901391152e-07 --7.054699247e-07 -1.660844055e-07 -1.306943746e-07 2.901391152e-07 1.1989638e-06 -9.351506814e-08 1.557251014e-06 1.225356564e-06 -7.011793751e-08 -2.897532961e-07 -1.557251014e-06 2.926635794e-07 2.302857551e-07 -6.389237414e-07 -2.640269207e-06 -1.225356564e-06 2.302857551e-07 1.812030355e-07 -5.027508732e-07 -2.077552552e-06 --7.011793751e-08 -6.389237414e-07 -5.027508732e-07 4.167217302e-08 1.722048498e-07 --2.897532961e-07 -2.640269207e-06 -2.077552552e-06 1.722048498e-07 7.116142052e-07 --4.248710914e-06 1.614663339e-05 1.270533483e-05 1.393776209e-06 5.759598659e-06 -1.614663339e-05 3.080891327e-06 2.424212007e-06 -6.625746253e-06 -2.738002945e-05 -1.270533483e-05 2.424212007e-06 1.907501184e-06 -5.213613525e-06 -2.154457572e-05 -1.393776209e-06 -6.625746253e-06 -5.213613525e-06 -4.298208435e-07 -1.776178739e-06 -5.759598659e-06 -2.738002945e-05 -2.154457572e-05 -1.776178739e-06 -7.339827651e-06 --3.02052735e-07 1.173649616e-05 9.235116298e-06 -1.192598569e-07 -4.928260163e-07 -1.173649616e-05 2.214656958e-06 1.742621276e-06 -4.815544426e-06 -1.989960915e-05 -9.235116298e-06 1.742621276e-06 1.371196067e-06 -3.789214862e-06 -1.565843611e-05 --1.192598569e-07 -4.815544426e-06 -3.789214862e-06 1.477702217e-07 6.106412519e-07 --4.928260163e-07 -1.989960915e-05 -1.565843611e-05 6.106412519e-07 2.523395677e-06 -1.272300969e-07 1.457588573e-06 1.146934953e-06 -8.176505983e-08 -3.378835114e-07 -1.457588573e-06 2.735813868e-07 2.152700085e-07 -5.980259165e-07 -2.471264133e-06 -1.146934953e-06 2.152700085e-07 1.693871688e-07 -4.70569499e-07 -1.944567105e-06 --8.176505983e-08 -5.980259165e-07 -4.70569499e-07 4.556237081e-08 1.882805823e-07 --3.378835114e-07 -2.471264133e-06 -1.944567105e-06 1.882805823e-07 7.780450633e-07 --4.024000412e-07 1.825823955e-06 1.436689746e-06 1.258907243e-07 5.202270161e-07 -1.825823955e-06 3.476871104e-07 2.735790165e-07 -7.492097702e-07 -3.096011345e-06 -1.436689746e-06 2.735790165e-07 2.152667614e-07 -5.895320615e-07 -2.436164107e-06 -1.258907243e-07 -7.492097702e-07 -5.895320615e-07 -3.571431651e-08 -1.475847683e-07 -5.202270161e-07 -3.096011345e-06 -2.436164107e-06 -1.475847683e-07 -6.098748618e-07 --4.538765917e-07 3.718422868e-06 2.925922126e-06 1.077842425e-07 4.454043245e-07 -3.718422868e-06 7.048417247e-07 5.546093362e-07 -1.52575333e-06 -6.304976349e-06 -2.925922126e-06 5.546093362e-07 4.363979953e-07 -1.20057206e-06 -4.961207225e-06 -1.077842425e-07 -1.52575333e-06 -1.20057206e-06 -1.234248835e-08 -5.100372937e-08 -4.454043245e-07 -6.304976349e-06 -4.961207225e-06 -5.100372937e-08 -2.107662843e-07 --1.169126144e-07 2.662800705e-06 2.095282497e-06 -7.394689555e-09 -3.055762831e-08 -2.662800705e-06 5.028958244e-07 3.957075055e-07 -1.092569574e-06 -4.514901188e-06 -2.095282497e-06 3.957075055e-07 3.113655398e-07 -8.597119259e-07 -3.552647343e-06 --7.394689555e-09 -1.092569574e-06 -8.597119259e-07 2.553517974e-08 1.055208137e-07 --3.055762831e-08 -4.514901188e-06 -3.552647343e-06 1.055208137e-07 4.360510575e-07 --1.870533396e-07 1.569442037e-06 1.234949696e-06 4.365764633e-08 1.80409527e-07 -1.569442037e-06 2.974539369e-07 2.340534423e-07 -6.439768548e-07 -2.661150213e-06 -1.234949696e-06 2.340534423e-07 1.841663769e-07 -5.067271366e-07 -2.093983685e-06 -4.365764633e-08 -6.439768548e-07 -5.067271366e-07 -4.463641165e-09 -1.844541703e-08 -1.80409527e-07 -2.661150213e-06 -2.093983685e-06 -1.844541703e-08 -7.622328872e-08 --0.02707805619 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.002474403176 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.004450567888 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --4.688549317e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0007684223312 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0003276457311 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0004548891645 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -3.331380877e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -9.378665467e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -8.875645066e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -6.42771805e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -3.651284125e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -9.049801549e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.002245323004 -0.1096280452 -0.07244526592 0 0 --0.1096280452 -0.01824556177 -0.01428161017 0 0 --0.07244526592 -0.01428161017 -0.0324288347 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.009297422467 -0.05466029243 -0.0476526385 0 0 --0.05466029243 -0.005091884148 0.006162443671 0 0 --0.0476526385 0.006162443671 0.01215605894 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.001369241454 -0.01331367476 -0.01055814423 0 0 --0.01331367476 -0.003409913264 -0.003317737182 0 0 --0.01055814423 -0.003317737182 -0.002629494317 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.6623196e-05 -0.002453389264 -0.001943637835 0 0 --0.002453389264 0.0003501575245 0.0008982519774 0 0 --0.001943637835 0.0008982519774 0.0009804845472 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0002591351001 -0.00335752665 -0.002574173373 0 0 --0.00335752665 -0.0009251632713 -0.0009090148738 0 0 --0.002574173373 -0.0009090148738 -0.0008474739083 0 0 -0 0 0 0 0 -0 0 0 0 0 --5.314021071e-06 -0.0001437033166 -6.915166992e-05 0 0 --0.0001437033166 0.000165397099 0.0001078060183 0 0 --6.915166992e-05 0.0001078060183 -1.345694684e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0001272663588 -0.0004517573022 -0.0003920272718 0 0 --0.0004517573022 -0.0001290996683 -8.197313765e-05 0 0 --0.0003920272718 -8.197313765e-05 -5.551374912e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0001088024566 -4.761397633e-05 -9.657572162e-05 0 0 --4.761397633e-05 -8.942379044e-06 1.596734355e-05 0 0 --9.657572162e-05 1.596734355e-05 5.898825933e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -9.615515618e-05 -0.0002317706561 -0.0002269112444 0 0 --0.0002317706561 4.9479195e-07 1.212592644e-05 0 0 --0.0002269112444 1.212592644e-05 4.671124682e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -4.529735567e-05 -3.099368621e-05 -4.772353439e-05 0 0 --3.099368621e-05 1.519281823e-05 2.030876958e-05 0 0 --4.772353439e-05 2.030876958e-05 3.302879948e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -2.353429245e-05 -1.061712877e-05 -1.794510101e-05 0 0 --1.061712877e-05 1.671418568e-06 4.294695625e-06 0 0 --1.794510101e-05 4.294695625e-06 5.937423135e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 -2.514603847e-05 -1.888692327e-05 -2.51057119e-05 0 0 --1.888692327e-05 -5.775148749e-06 -4.042173246e-06 0 0 --2.51057119e-05 -4.042173246e-06 1.072669988e-07 0 0 -0 0 0 0 0 -0 0 0 0 0 -2.500955674e-05 -2.261134893e-05 -2.855760972e-05 0 0 --2.261134893e-05 4.026770341e-06 4.610337282e-06 0 0 --2.855760972e-05 4.610337282e-06 8.50153816e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.01747446608 0.0127930071 -0.007279460497 0.01707854761 -0.001713900703 -0.0127930071 0.009377374069 -0.01719260444 -0.09239862961 -0.1119719893 --0.007279460497 -0.01719260444 -0.0223445853 0.02205716174 -0.09733838925 -0.01707854761 -0.09239862961 0.02205716174 -0.02199043608 0.005531577595 --0.001713900703 -0.1119719893 -0.09733838925 0.005531577595 -0.01038419712 -0.004655284834 0.01773121694 0.01293230355 0.01254059304 -0.006622586299 -0.01773121694 0.004357252158 -0.001549381546 -0.02643567818 -0.05540919247 -0.01293230355 -0.001549381546 0.0004360216039 0.01012968882 -0.05172886261 -0.01254059304 -0.02643567818 0.01012968882 -0.01100254746 -0.01043202726 --0.006622586299 -0.05540919247 -0.05172886261 -0.01043202726 0.01267124322 --0.003603081952 0.01651441711 0.01301908631 0.001328506309 0.004573150587 -0.01651441711 0.00301004511 0.002222465503 -0.006847033731 -0.02793174928 -0.01301908631 0.002222465503 0.001474906066 -0.005461320886 -0.02185656208 -0.001328506309 -0.006847033731 -0.005461320886 -0.0007468612308 -0.001428127526 -0.004573150587 -0.02793174928 -0.02185656208 -0.001428127526 -0.005371537364 -0.0001311296615 -0.0002917580821 -0.00023935403 0.000616192601 -4.368404053e-05 --0.0002917580821 9.9971251e-05 -0.0003999413988 -0.001264751519 -0.0009362225026 --0.00023935403 -0.0003999413988 -0.0005255957136 0.0008840443923 -0.00110139384 -0.000616192601 -0.001264751519 0.0008840443923 -0.0002856488674 -0.0003138725137 --4.368404053e-05 -0.0009362225026 -0.00110139384 -0.0003138725137 -0.000307994989 --0.0004487086766 0.003260677323 0.002548057091 0.0001332483117 0.0004886035213 -0.003260677323 0.0005815208345 0.0004111753157 -0.001382020328 -0.005510751399 -0.002548057091 0.0004111753157 0.0002325194449 -0.001134245066 -0.004272800103 -0.0001332483117 -0.001382020328 -0.001134245066 -0.0001223113222 -5.468398577e-05 -0.0004886035213 -0.005510751399 -0.004272800103 -5.468398577e-05 -0.0003831247009 --0.0001039800375 5.567675116e-05 2.143702557e-06 1.554452854e-05 0.0002199750595 -5.567675116e-05 1.850743073e-05 -1.00078642e-05 -9.324451762e-05 -0.0001417239984 -2.143702557e-06 -1.00078642e-05 -4.339971598e-05 -7.394271577e-05 -7.223039334e-05 -1.554452854e-05 -9.324451762e-05 -7.394271577e-05 -4.697951028e-05 -4.762555313e-06 -0.0002199750595 -0.0001417239984 -7.223039334e-05 -4.762555313e-06 -0.0003706107226 -9.625883616e-06 0.0002167418987 0.000137648428 9.195009836e-06 -2.830701402e-06 -0.0002167418987 9.542566019e-05 0.0001098024289 -0.0001059608932 -0.0004951141522 -0.000137648428 0.0001098024289 0.0001779355205 -1.892273684e-06 -0.0004441359671 -9.195009836e-06 -0.0001059608932 -1.892273684e-06 -3.664874855e-05 -3.053355953e-05 --2.830701402e-06 -0.0004951141522 -0.0004441359671 -3.053355953e-05 0.0001253387179 --7.165169677e-05 0.0001194047537 7.049839154e-05 1.071577446e-05 0.0001399882705 -0.0001194047537 7.714388991e-05 9.99045501e-05 -5.598944673e-05 -0.0002971154577 -7.049839154e-05 9.99045501e-05 0.0001713917899 2.439842123e-05 -0.0002858069251 -1.071577446e-05 -5.598944673e-05 2.439842123e-05 2.427695681e-05 -5.558471355e-05 -0.0001399882705 -0.0002971154577 -0.0002858069251 -5.558471355e-05 -0.0001538249967 -7.163126514e-06 9.87070523e-05 6.431537373e-05 -1.488481565e-05 -4.976572951e-06 -9.87070523e-05 4.00206712e-05 5.556999538e-05 -3.254646628e-05 -0.0002037937543 -6.431537373e-05 5.556999538e-05 9.281615469e-05 -7.538747308e-06 -0.000182412103 --1.488481565e-05 -3.254646628e-05 -7.538747308e-06 1.396098419e-05 1.52228986e-06 --4.976572951e-06 -0.0002037937543 -0.000182412103 1.52228986e-06 5.793967103e-05 --3.336782805e-06 1.945861003e-06 -8.351734603e-06 -2.964872806e-06 1.647887289e-05 -1.945861003e-06 1.250315903e-05 2.244048995e-05 3.594518979e-07 -2.80008411e-05 --8.351734603e-06 2.244048995e-05 4.443009228e-05 1.154761596e-05 -3.327838193e-05 --2.964872806e-06 3.594518979e-07 1.154761596e-05 -3.706913389e-07 -8.502789954e-06 -1.647887289e-05 -2.80008411e-05 -3.327838193e-05 -8.502789954e-06 -6.195092116e-06 -2.496107715e-06 -1.476410249e-05 -2.072212846e-05 -3.708324682e-06 7.415555022e-06 --1.476410249e-05 7.197250972e-06 1.114825248e-05 -6.934959147e-07 2.035707688e-06 --2.072212846e-05 1.114825248e-05 2.336514306e-05 1.098863008e-05 -4.297037431e-06 --3.708324682e-06 -6.934959147e-07 1.098863008e-05 -2.831301799e-06 1.656688223e-07 -7.415555022e-06 2.035707688e-06 -4.297037431e-06 1.656688223e-07 -9.973406881e-07 --2.935092525e-06 7.864447615e-06 -2.114822547e-06 -4.040435183e-06 1.415854591e-05 -7.864447615e-06 9.573735299e-06 1.328777226e-05 -7.823142016e-06 -3.122021106e-05 --2.114822547e-06 1.328777226e-05 2.409328811e-05 1.553982218e-06 -2.898736097e-05 --4.040435183e-06 -7.823142016e-06 1.553982218e-06 4.331545551e-07 6.938294015e-08 -1.415854591e-05 -3.122021106e-05 -2.898736097e-05 6.938294015e-08 -1.158078346e-05 -2.458163803e-06 -1.5541219e-06 -8.733756743e-06 -5.339034067e-06 4.725104039e-06 --1.5541219e-06 9.549454926e-06 1.717142938e-05 9.50162502e-07 -1.651366661e-05 --8.733756743e-06 1.717142938e-05 3.422412385e-05 1.008119533e-05 -2.181299491e-05 --5.339034067e-06 9.50162502e-07 1.008119533e-05 3.029800551e-06 -1.850533497e-06 -4.725104039e-06 -1.651366661e-05 -2.181299491e-05 -1.850533497e-06 7.498067378e-06 --0.0228524152 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.007165918729 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.00333542765 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.000441016238 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -7.342773767e-07 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0001368872714 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.793831287e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -7.345454088e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -9.12691288e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -4.110150329e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -2.034592792e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.182529682e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.066822e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.00545943886 -0.0006060013554 0.005417310027 0 0 --0.0006060013554 -0.0314659321 -0.04836875995 0 0 -0.005417310027 -0.04836875995 -0.06698403655 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0145469718 0.001186524487 -0.007461380153 0 0 -0.001186524487 -0.002168084908 -0.001295682853 0 0 --0.007461380153 -0.001295682853 0.003618619116 0 0 -0 0 0 0 0 -0 0 0 0 0 --4.489975309e-05 0.0004411255868 0.0003656636631 0 0 -0.0004411255868 -0.0004817359163 -0.0006780151524 0 0 -0.0003656636631 -0.0006780151524 -0.0007728813812 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0002343415111 -0.0002239891653 6.886097714e-06 0 0 --0.0002239891653 0.0003462225595 0.0004283665249 0 0 -6.886097714e-06 0.0004283665249 0.0003173007209 0 0 -0 0 0 0 0 -0 0 0 0 0 --7.461012702e-05 6.014874087e-05 0.0001292099305 0 0 -6.014874087e-05 -3.804933357e-05 -8.59240109e-05 0 0 -0.0001292099305 -8.59240109e-05 -0.0001918956302 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.0997765e-05 3.77038096e-05 8.158084812e-05 0 0 -3.77038096e-05 -1.352255255e-05 -4.562973038e-05 0 0 -8.158084812e-05 -4.562973038e-05 -0.0001292054032 0 0 -0 0 0 0 0 -0 0 0 0 0 -6.858367921e-05 -4.496591012e-05 -6.001432348e-05 0 0 --4.496591012e-05 6.419408005e-07 1.075874291e-06 0 0 --6.001432348e-05 1.075874291e-06 1.726689128e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0001211403711 -7.313409714e-05 -0.00012282512 0 0 --7.313409714e-05 3.208362581e-05 5.764567752e-05 0 0 --0.00012282512 5.764567752e-05 0.0001019593256 0 0 -0 0 0 0 0 -0 0 0 0 0 -9.147272106e-05 -4.413475343e-05 -8.781052289e-05 0 0 --4.413475343e-05 1.962164229e-05 3.917435784e-05 0 0 --8.781052289e-05 3.917435784e-05 7.819925885e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -3.962015375e-05 -2.342447247e-05 -3.901999213e-05 0 0 --2.342447247e-05 9.427357681e-06 1.691314967e-05 0 0 --3.901999213e-05 1.691314967e-05 2.985721905e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 -2.295642979e-05 -1.178317349e-05 -1.820894528e-05 0 0 --1.178317349e-05 1.064503671e-06 1.885973662e-06 0 0 --1.820894528e-05 1.885973662e-06 3.275172628e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 -2.612756015e-05 -1.188619752e-05 -2.0568976e-05 0 0 --1.188619752e-05 2.252214751e-06 4.180844019e-06 0 0 --2.0568976e-05 4.180844019e-06 7.699890665e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 -2.44279375e-05 -1.178524782e-05 -2.041212429e-05 0 0 --1.178524782e-05 3.002324349e-06 5.553448756e-06 0 0 --2.041212429e-05 5.553448756e-06 1.018416415e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.006715658158 -0.04007306073 -0.04039282427 -0.03020484216 0.02540342958 --0.04007306073 0.003039623605 0.004608428215 -0.01741309045 0.02335384781 --0.04039282427 0.004608428215 0.006211927364 -0.01651352044 0.02272231321 --0.03020484216 -0.01741309045 -0.01651352044 -0.02637363885 0.02803680828 -0.02540342958 0.02335384781 0.02272231321 0.02803680828 -0.028191594 -0.002233324314 0.00162083298 -0.003349288914 0.0004965783714 0.001082241075 -0.00162083298 -0.0111556888 -0.01178644979 -0.006432432086 0.005614479101 --0.003349288914 -0.01178644979 -0.002074842012 -0.005898104219 0.002040542003 -0.0004965783714 -0.006432432086 -0.005898104219 -0.003631268203 0.002900611569 -0.001082241075 0.005614479101 0.002040542003 0.002900611569 -0.001366546355 -4.10905806e-06 0.0002959703625 0.0005906024825 0.0002847339201 -0.0003727360576 -0.0002959703625 0.0008970782073 0.0007340396261 0.0005615201984 -0.0006822886626 -0.0005906024825 0.0007340396261 -0.0006971987214 8.894222164e-05 -8.381741107e-06 -0.0002847339201 0.0005615201984 8.894222164e-05 0.0002456966014 -0.0002700786261 --0.0003727360576 -0.0006822886626 -8.381741107e-06 -0.0002700786261 0.0002859259666 -2.425901275e-06 1.689907813e-05 2.017281603e-05 1.379771133e-05 -1.238196708e-05 -1.689907813e-05 0.0001149053013 0.0001498976677 9.741433632e-05 -9.40938462e-05 -2.017281603e-05 0.0001498976677 0.0001365529967 0.0001104153193 -7.68669337e-05 -1.379771133e-05 9.741433632e-05 0.0001104153193 7.787827158e-05 -6.680990625e-05 --1.238196708e-05 -9.40938462e-05 -7.68669337e-05 -6.680990625e-05 4.136780236e-05 -4.268924336e-05 3.775009287e-05 1.120899154e-06 2.666688544e-05 -3.006243891e-05 -3.775009287e-05 3.302257615e-05 -6.637720996e-06 2.038835691e-05 -2.195176026e-05 -1.120899154e-06 -6.637720996e-06 -0.0001617168568 -6.700034987e-05 9.742645627e-05 -2.666688544e-05 2.038835691e-05 -6.700034987e-05 -1.167862397e-05 2.232998082e-05 --3.006243891e-05 -2.195176026e-05 9.742645627e-05 2.232998082e-05 -3.846830049e-05 --9.200289036e-06 -2.367267606e-05 -4.975545627e-05 -2.092594872e-05 4.471577937e-05 --2.367267606e-05 -8.365668783e-06 -1.725773947e-05 -1.864427526e-05 2.759990753e-05 --4.975545627e-05 -1.725773947e-05 -3.558674261e-05 -3.896880088e-05 5.746831746e-05 --2.092594872e-05 -1.864427526e-05 -3.896880088e-05 -2.401667613e-05 4.312069286e-05 -4.471577937e-05 2.759990753e-05 5.746831746e-05 4.312069286e-05 -7.177021294e-05 --8.93916917e-06 -6.333343756e-05 -6.981881821e-05 -4.811294674e-05 4.399075808e-05 --6.333343756e-05 9.300112709e-05 0.0001472526091 4.612981226e-05 -4.711510991e-05 --6.981881821e-05 0.0001472526091 0.000215332756 8.280780211e-05 -8.156392267e-05 --4.811294674e-05 4.612981226e-05 8.280780211e-05 1.752567662e-05 -1.955158418e-05 -4.399075808e-05 -4.711510991e-05 -8.156392267e-05 -1.955158418e-05 2.114669864e-05 -1.193177628e-05 -3.465336977e-05 -6.412630108e-05 -2.994497567e-05 2.747086584e-05 --3.465336977e-05 6.342464201e-05 0.0001214582875 4.678119082e-05 -4.790714335e-05 --6.412630108e-05 0.0001214582875 0.0002318794176 9.098576273e-05 -9.215586987e-05 --2.994497567e-05 4.678119082e-05 9.098576273e-05 3.175889273e-05 -3.452414864e-05 -2.747086584e-05 -4.790714335e-05 -9.215586987e-05 -3.452414864e-05 3.594635186e-05 -1.856242143e-06 -1.139430372e-05 -2.214919743e-05 -9.861145879e-06 1.253451053e-05 --1.139430372e-05 2.144430103e-05 4.243715849e-05 1.482510407e-05 -1.902879192e-05 --2.214919743e-05 4.243715849e-05 8.394290866e-05 2.952692478e-05 -3.78876577e-05 --9.861145879e-06 1.482510407e-05 2.952692478e-05 9.311493288e-06 -1.200981048e-05 -1.253451053e-05 -1.902879192e-05 -3.78876577e-05 -1.200981048e-05 1.54861028e-05 --1.892555319e-06 -1.236582819e-05 -1.561664253e-05 -9.613382416e-06 1.058702382e-05 --1.236582819e-05 1.896929245e-05 3.152582446e-05 9.804252641e-06 -1.138672592e-05 --1.561664253e-05 3.152582446e-05 4.99476446e-05 1.789147377e-05 -2.049271919e-05 --9.613382416e-06 9.804252641e-06 1.789147377e-05 4.024275935e-06 -4.860934739e-06 -1.058702382e-05 -1.138672592e-05 -2.049271919e-05 -4.860934739e-06 5.82927064e-06 -1.612850708e-06 -1.321450559e-05 -2.019930113e-05 -1.074321781e-05 1.020909902e-05 --1.321450559e-05 1.099351117e-05 1.943899096e-05 3.534742843e-06 -2.979587995e-06 --2.019930113e-05 1.943899096e-05 3.366973461e-05 7.691357712e-06 -6.739275888e-06 --1.074321781e-05 3.534742843e-06 7.691357712e-06 -1.81881433e-06 2.057924272e-06 -1.020909902e-05 -2.979587995e-06 -6.739275888e-06 2.057924272e-06 -2.270242847e-06 -1.724898409e-06 -1.003107434e-05 -1.679603961e-05 -8.328648802e-06 8.49806676e-06 --1.003107434e-05 8.60493323e-06 1.584011055e-05 3.104908416e-06 -2.991193276e-06 --1.679603961e-05 1.584011055e-05 2.88792067e-05 6.504154335e-06 -6.345394485e-06 --8.328648802e-06 3.104908416e-06 6.504154335e-06 -1.104233982e-06 1.287919194e-06 -8.49806676e-06 -2.991193276e-06 -6.345394485e-06 1.287919194e-06 -1.479249475e-06 -4.107220341e-07 -8.789342875e-06 -1.361508222e-05 -7.165110699e-06 7.730136658e-06 --8.789342875e-06 1.300090864e-05 2.315234714e-05 7.348659255e-06 -8.380701311e-06 --1.361508222e-05 2.315234714e-05 4.047998432e-05 1.389583531e-05 -1.568485135e-05 --7.165110699e-06 7.348659255e-06 1.389583531e-05 3.28114146e-06 -3.917199051e-06 -7.730136658e-06 -8.380701311e-06 -1.568485135e-05 -3.917199051e-06 4.63199935e-06 -0.06843398822 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.01016569136 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.001369795879 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.002043568973 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0006952945527 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.096006198e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -4.818373004e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.67625877e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --6.490091322e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --9.093615763e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -9.996085295e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.218389702e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.39578755e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.04191585399 0.005303896232 -0.008273108515 0 0 -0.005303896232 0.007883005779 -0.01229557546 0 0 --0.008273108515 -0.01229557546 0.01917811302 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.02988209926 0.01147549427 -0.01789835584 0 0 -0.01147549427 0.004303564364 -0.006712223873 0 0 --0.01789835584 -0.006712223873 0.01046898463 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.002416277356 -0.0007531514092 0.001175217737 0 0 --0.0007531514092 -0.000234321186 0.0003656288057 0 0 -0.001175217737 0.0003656288057 -0.0005705177838 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.001136200635 0.0005607969437 -0.0008747900312 0 0 -0.0005607969437 0.000244576668 -0.0003815330024 0 0 --0.0008747900312 -0.0003815330024 0.0005951811787 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0006530494882 -0.0002031035848 0.0003166497376 0 0 --0.0002031035848 -6.303319623e-05 9.827423597e-05 0 0 -0.0003166497376 9.827423597e-05 -0.0001532180526 0 0 -0 0 0 0 0 -0 0 0 0 0 -8.628345838e-06 2.956797821e-06 -4.600265298e-06 0 0 -2.956797821e-06 1.010795726e-06 -1.572416647e-06 0 0 --4.600265298e-06 -1.572416647e-06 2.446069407e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0001659754629 6.086588507e-05 -9.491170706e-05 0 0 -6.086588507e-05 2.203554636e-05 -3.436013861e-05 0 0 --9.491170706e-05 -3.436013861e-05 5.357793265e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --8.18225453e-05 -1.916204472e-05 2.989750183e-05 0 0 --1.916204472e-05 -3.810419354e-06 5.944688169e-06 0 0 -2.989750183e-05 5.944688169e-06 -9.274390155e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 --6.026860884e-05 -1.799653942e-05 2.805990039e-05 0 0 --1.799653942e-05 -5.330945804e-06 8.31217912e-06 0 0 -2.805990039e-05 8.31217912e-06 -1.296061073e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.157166241e-06 1.148716157e-06 -1.791587998e-06 0 0 -1.148716157e-06 8.693579904e-07 -1.356347794e-06 0 0 --1.791587998e-06 -1.356347794e-06 2.1161354e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.046870142e-06 2.861019804e-06 -4.462470714e-06 0 0 -2.861019804e-06 1.750315882e-06 -2.729718355e-06 0 0 --4.462470714e-06 -2.729718355e-06 4.257152798e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.137896109e-05 -5.228475164e-06 8.156423964e-06 0 0 --5.228475164e-06 -1.139713631e-06 1.777889858e-06 0 0 -8.156423964e-06 1.777889858e-06 -2.773409237e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.351140964e-05 -3.34254841e-06 5.213003963e-06 0 0 --3.34254841e-06 -7.450257002e-07 1.161967263e-06 0 0 -5.213003963e-06 1.161967263e-06 -1.8122434e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.04984533952 -0.01966392831 0.03067127758 0.002218650584 0.004830238839 --0.01966392831 -0.003457092706 0.005392282723 -0.0008207792887 -0.001786911457 -0.03067127758 0.005392282723 -0.008410741462 0.001280229703 0.00278717696 -0.002218650584 -0.0008207792887 0.001280229703 0.0005701600784 0.001241294321 -0.004830238839 -0.001786911457 0.00278717696 0.001241294321 0.002702419285 -0.00373870852 0.006703468928 -0.01045589633 -0.002228541091 -0.004851746569 -0.006703468928 0.00745610763 -0.01162984167 -0.002196059393 -0.004781034316 --0.01045589633 -0.01162984167 0.01813992287 0.003425355915 0.007457332085 --0.002228541091 -0.002196059393 0.003425355915 0.0006185775312 0.001346703682 --0.004851746569 -0.004781034316 0.007457332085 0.001346703682 0.002931905405 -0.001566047102 0.001151799337 -0.001796546583 -0.0002803121867 -0.0006102665968 -0.001151799337 0.0008436297907 -0.001315871751 -0.0002047850345 -0.0004458367444 --0.001796546583 -0.001315871751 0.002052462448 0.0003194183565 0.0006954045273 --0.0002803121867 -0.0002047850345 0.0003194183565 4.962997655e-05 0.0001080492427 --0.0006102665968 -0.0004458367444 0.0006954045273 0.0001080492427 0.0002352336162 --0.0009964523107 -0.0004612549173 0.0007194532987 7.123320656e-05 0.0001550819644 --0.0004612549173 -0.000162922678 0.0002541225289 1.302064411e-05 2.834730116e-05 -0.0007194532987 0.0002541225289 -0.0003963736693 -2.030926529e-05 -4.421539016e-05 -7.123320656e-05 1.302064411e-05 -2.030926529e-05 2.777209949e-06 6.046258058e-06 -0.0001550819644 2.834730116e-05 -4.421539016e-05 6.046258058e-06 1.316329596e-05 -9.210104389e-05 6.508512894e-05 -0.0001015180967 -1.543892046e-05 -3.361198309e-05 -6.508512894e-05 4.596242091e-05 -7.169099249e-05 -1.08978729e-05 -2.372569497e-05 --0.0001015180967 -7.169099249e-05 0.0001118217514 1.699821962e-05 3.700672391e-05 --1.543892046e-05 -1.08978729e-05 1.699821962e-05 2.58315398e-06 5.623769308e-06 --3.361198309e-05 -2.372569497e-05 3.700672391e-05 5.623769308e-06 1.224347502e-05 --1.626788364e-05 -1.082074478e-05 1.687791308e-05 2.460663338e-06 5.357110378e-06 --1.082074478e-05 -7.188874714e-06 1.121301777e-05 1.633322434e-06 3.555906126e-06 -1.687791308e-05 1.121301777e-05 -1.74897703e-05 -2.547613403e-06 -5.546408914e-06 -2.460663338e-06 1.633322434e-06 -2.547613403e-06 -3.708515327e-07 -8.073807897e-07 -5.357110378e-06 3.555906126e-06 -5.546408914e-06 -8.073807897e-07 -1.757748539e-06 -2.148002657e-05 2.719964143e-05 -4.242529186e-05 -8.341499132e-06 -1.816024275e-05 -2.719964143e-05 2.726476615e-05 -4.252686934e-05 -7.731860109e-06 -1.683300952e-05 --4.242529186e-05 -4.252686934e-05 6.633229883e-05 1.205995297e-05 2.625568754e-05 --8.341499132e-06 -7.731860109e-06 1.205995297e-05 2.122865292e-06 4.621684797e-06 --1.816024275e-05 -1.683300952e-05 2.625568754e-05 4.621684797e-06 1.006185858e-05 --6.774396786e-05 -4.15338571e-05 6.478342051e-05 8.855945307e-06 1.92802728e-05 --4.15338571e-05 -2.508213797e-05 3.912246145e-05 5.278808473e-06 1.149248806e-05 -6.478342051e-05 3.912246145e-05 -6.102219006e-05 -8.233747252e-06 -1.792568199e-05 -8.855945307e-06 5.278808473e-06 -8.233747252e-06 -1.098242219e-06 -2.390981457e-06 -1.92802728e-05 1.149248806e-05 -1.792568199e-05 -2.390981457e-06 -5.205402076e-06 --6.674463708e-06 -4.039976079e-06 6.301448598e-06 8.519666333e-07 1.854816366e-06 --4.039976079e-06 -2.399445176e-06 3.742591664e-06 4.975802182e-07 1.083281508e-06 -6.301448598e-06 3.742591664e-06 -5.837596332e-06 -7.761125923e-07 -1.689674125e-06 -8.519666333e-07 4.975802182e-07 -7.761125923e-07 -1.016090761e-07 -2.212129892e-07 -1.854816366e-06 1.083281508e-06 -1.689674125e-06 -2.212129892e-07 -4.816025148e-07 -5.572944323e-06 5.241208944e-06 -8.175100936e-06 -1.448084615e-06 -3.152619803e-06 -5.241208944e-06 4.57460675e-06 -7.135351997e-06 -1.222027455e-06 -2.660472493e-06 --8.175100936e-06 -7.135351997e-06 1.112953548e-05 1.906086443e-06 4.149735366e-06 --1.448084615e-06 -1.222027455e-06 1.906086443e-06 3.211134437e-07 6.990952846e-07 --3.152619803e-06 -2.660472493e-06 4.149735366e-06 6.990952846e-07 1.521998616e-06 --1.231117004e-05 -6.384659524e-06 9.958624323e-06 1.150585741e-06 2.50494076e-06 --6.384659524e-06 -2.956949127e-06 4.61217184e-06 4.570133215e-07 9.949635914e-07 -9.958624323e-06 4.61217184e-06 -7.193944897e-06 -7.128374663e-07 -1.551918275e-06 -1.150585741e-06 4.570133215e-07 -7.128374663e-07 -5.243912494e-08 -1.141651149e-07 -2.50494076e-06 9.949635914e-07 -1.551918275e-06 -1.141651149e-07 -2.48548645e-07 --1.267977387e-05 -7.477126504e-06 1.166262573e-05 1.540508448e-06 3.353840205e-06 --7.477126504e-06 -4.286078848e-06 6.685313498e-06 8.598695595e-07 1.872021097e-06 -1.166262573e-05 6.685313498e-06 -1.042757685e-05 -1.341202045e-06 -2.919929535e-06 -1.540508448e-06 8.598695595e-07 -1.341202045e-06 -1.680126966e-07 -3.657801602e-07 -3.353840205e-06 1.872021097e-06 -2.919929535e-06 -3.657801602e-07 -7.963393741e-07 --2.460475908e-06 -7.564287463e-07 1.17985756e-06 2.502721229e-08 5.448792135e-08 --7.564287463e-07 1.242202937e-07 -1.93755563e-07 -1.330156123e-07 -2.895876654e-07 -1.17985756e-06 -1.93755563e-07 3.022148562e-07 2.074742484e-07 4.516912128e-07 -2.502721229e-08 -1.330156123e-07 2.074742484e-07 5.524114815e-08 1.202653883e-07 -5.448792135e-08 -2.895876654e-07 4.516912128e-07 1.202653883e-07 2.618295258e-07 -0.03160370795 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.005530954187 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.002218296026 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --4.877037191e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --5.944003625e-07 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0001050591232 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -3.231852957e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --7.57385039e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --7.990384235e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --4.134161092e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.151520643e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.132697083e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --1.027417175e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.007970931308 -0.006769247639 -0.01368154311 0 0 --0.006769247639 0.01085031837 0.0219279586 0 0 --0.01368154311 0.0219279586 0.04431532337 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.007913186337 0.003587002774 0.007250365415 0 0 -0.003587002774 -0.001470249335 -0.002971717136 0 0 -0.007250365415 -0.002971717136 -0.006006534034 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0003971419544 0.0002294841062 0.0004638480378 0 0 -0.0002294841062 -0.0001325066197 -0.0002678301771 0 0 -0.0004638480378 -0.0002678301771 -0.0005413541091 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.763905332e-06 1.664611041e-06 3.326953583e-06 0 0 -1.664611041e-06 -1.002156889e-06 -2.003379712e-06 0 0 -3.326953583e-06 -2.003379712e-06 -4.004407582e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 -3.894298256e-05 -3.454122315e-05 -6.981103448e-05 0 0 --3.454122315e-05 2.728712246e-05 5.515030402e-05 0 0 --6.981103448e-05 5.515030402e-05 0.0001114648874 0 0 -0 0 0 0 0 -0 0 0 0 0 -1.93176204e-05 -3.859289639e-05 -7.799888787e-05 0 0 --3.859289639e-05 3.901612115e-05 7.885527932e-05 0 0 --7.799888787e-05 7.885527932e-05 0.0001593739944 0 0 -0 0 0 0 0 -0 0 0 0 0 --9.18874047e-05 2.761004004e-05 5.579887685e-05 0 0 -2.761004004e-05 -3.916013483e-07 -7.914301508e-07 0 0 -5.579887685e-05 -7.914301508e-07 -1.599488066e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0001084309554 4.780869541e-05 9.662304458e-05 0 0 -4.780869541e-05 -1.854682178e-05 -3.74838823e-05 0 0 -9.662304458e-05 -3.74838823e-05 -7.575645299e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --7.934229651e-05 3.732955057e-05 7.544564289e-05 0 0 -3.732955057e-05 -1.635813167e-05 -3.306088923e-05 0 0 -7.544564289e-05 -3.306088923e-05 -6.681829066e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --4.49564241e-05 1.912690665e-05 3.865589698e-05 0 0 -1.912690665e-05 -6.86421903e-06 -1.387280601e-05 0 0 -3.865589698e-05 -1.387280601e-05 -2.803738425e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.377102994e-05 7.619946475e-06 1.539995747e-05 0 0 -7.619946475e-06 -6.683780908e-07 -1.350811937e-06 0 0 -1.539995747e-05 -1.350811937e-06 -2.730030974e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.436803224e-05 8.542985996e-06 1.726573566e-05 0 0 -8.542985996e-06 -1.554237652e-06 -3.141189611e-06 0 0 -1.726573566e-05 -3.141189611e-06 -6.34849642e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 --2.41463515e-05 8.99152539e-06 1.817222163e-05 0 0 -8.99152539e-06 -2.164985939e-06 -4.375535594e-06 0 0 -1.817222163e-05 -4.375535594e-06 -8.843157544e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.002572637623 0.01280049084 0.02587142506 0.01108515775 -0.01452795666 -0.01280049084 -0.0009642001763 -0.001948737866 0.005425853421 -0.007109886807 -0.02587142506 -0.001948737866 -0.00393857973 0.01096637453 -0.01437003096 -0.01108515775 0.005425853421 0.01096637453 0.01074552838 -0.0140817704 --0.01452795666 -0.007109886807 -0.01437003096 -0.0140817704 0.01845383955 --0.0001210744915 0.0006969681915 0.001408504821 0.0006131698539 -0.0008030988101 -0.0006969681915 -0.001944539302 -0.00392985031 -0.001532215736 0.002007160453 -0.001408504821 -0.00392985031 -0.007942098889 -0.003096580285 0.00405643492 -0.0006131698539 -0.001532215736 -0.003096580285 -0.001175516623 0.00153996244 --0.0008030988101 0.002007160453 0.00405643492 0.00153996244 -0.002017397369 --7.694423821e-08 -5.103993319e-06 -1.031547528e-05 -4.967725346e-06 6.51010961e-06 --5.103993319e-06 0.0001081126963 0.0002185002863 0.0001019142882 -0.0001334804462 --1.031547528e-05 0.0002185002863 0.000441598228 0.0002059729992 -0.0002697695115 --4.967725346e-06 0.0001019142882 0.0002059729992 9.59943487e-05 -0.0001257250806 -6.51010961e-06 -0.0001334804462 -0.0002697695115 -0.0001257250806 0.0001646637737 --3.277581716e-08 6.426795071e-08 1.295403811e-07 4.597926525e-08 -5.953814878e-08 -6.426795071e-08 1.893524738e-06 3.824867962e-06 1.861864151e-06 -2.435566578e-06 -1.295403811e-07 3.824867962e-06 7.726126001e-06 3.760777002e-06 -4.919592933e-06 -4.597926525e-08 1.861864151e-06 3.760777002e-06 1.822256129e-06 -2.383454179e-06 --5.953814878e-08 -2.435566578e-06 -4.919592933e-06 -2.383454179e-06 3.117473071e-06 --3.756733575e-06 1.67578393e-05 3.386847454e-05 1.432211494e-05 -1.876231313e-05 -1.67578393e-05 3.629434239e-05 7.335287073e-05 4.337961205e-05 -5.683899776e-05 -3.386847454e-05 7.335287073e-05 0.0001482502035 8.767257006e-05 -0.0001148747252 -1.432211494e-05 4.337961205e-05 8.767257006e-05 4.901431185e-05 -6.422022615e-05 --1.876231313e-05 -5.683899776e-05 -0.0001148747252 -6.422022615e-05 8.414353348e-05 --7.003188456e-06 3.406422695e-05 6.884474507e-05 2.942236761e-05 -3.855545666e-05 -3.406422695e-05 1.271743356e-05 2.570247766e-05 2.920036574e-05 -3.826391557e-05 -6.884474507e-05 2.570247766e-05 5.194580769e-05 5.901493302e-05 -7.733267573e-05 -2.942236761e-05 2.920036574e-05 5.901493302e-05 4.281483774e-05 -5.610451978e-05 --3.855545666e-05 -3.826391557e-05 -7.733267573e-05 -5.610451978e-05 7.351930559e-05 --5.607639167e-06 2.975415141e-05 6.013584285e-05 2.595231025e-05 -3.401051484e-05 -2.975415141e-05 -3.889103994e-05 -7.860172033e-05 -2.278559975e-05 2.986001317e-05 -6.013584285e-05 -7.860172033e-05 -0.0001588599957 -4.605118333e-05 6.03490343e-05 -2.595231025e-05 -2.278559975e-05 -4.605118333e-05 -9.118690794e-06 1.194954052e-05 --3.401051484e-05 2.986001317e-05 6.03490343e-05 1.194954052e-05 -1.565921267e-05 --3.43011265e-06 1.89414355e-05 3.828247012e-05 1.659166217e-05 -2.174091964e-05 -1.89414355e-05 -3.867266173e-05 -7.816051347e-05 -2.794581745e-05 3.661917529e-05 -3.828247012e-05 -7.816051347e-05 -0.0001579685905 -5.648054825e-05 7.401004107e-05 -1.659166217e-05 -2.794581745e-05 -5.648054825e-05 -1.875195366e-05 2.45719657e-05 --2.174091964e-05 3.661917529e-05 7.401004107e-05 2.45719657e-05 -3.2198325e-05 --1.939563731e-06 1.060504414e-05 2.14334927e-05 9.279735276e-06 -1.21599707e-05 -1.060504414e-05 -1.973544303e-05 -3.988655542e-05 -1.379482695e-05 1.807648527e-05 -2.14334927e-05 -3.988655542e-05 -8.061320439e-05 -2.788018158e-05 3.653367263e-05 -9.279735276e-06 -1.379482695e-05 -2.788018158e-05 -8.715217387e-06 1.142027019e-05 --1.21599707e-05 1.807648527e-05 3.653367263e-05 1.142027019e-05 -1.496492461e-05 --1.509820373e-06 8.031124485e-06 1.623147835e-05 7.00686134e-06 -9.182271462e-06 -8.031124485e-06 -1.087377506e-05 -2.197660698e-05 -6.513826478e-06 8.536048462e-06 -1.623147835e-05 -2.197660698e-05 -4.441615278e-05 -1.316484078e-05 1.725187481e-05 -7.00686134e-06 -6.513826478e-06 -1.316484078e-05 -2.811542236e-06 3.684325353e-06 --9.182271462e-06 8.536048462e-06 1.725187481e-05 3.684325353e-06 -4.828045305e-06 --1.470322628e-06 7.598858668e-06 1.535795029e-05 6.609169074e-06 -8.66076825e-06 -7.598858668e-06 -6.222674542e-06 -1.257647673e-05 -2.236367175e-06 2.930591593e-06 -1.535795029e-05 -1.257647673e-05 -2.541797194e-05 -4.519807877e-06 5.922869516e-06 -6.609169074e-06 -2.236367175e-06 -4.519807877e-06 1.122307689e-06 -1.470674029e-06 --8.66076825e-06 2.930591593e-06 5.922869516e-06 -1.470674029e-06 1.927173913e-06 --1.287186864e-06 6.664059282e-06 1.346860605e-05 5.797294078e-06 -7.596723478e-06 -6.664059282e-06 -5.688512394e-06 -1.149688132e-05 -2.184717904e-06 2.862837033e-06 -1.346860605e-05 -1.149688132e-05 -2.323600108e-05 -4.415429787e-06 5.78594421e-06 -5.797294078e-06 -2.184717904e-06 -4.415429787e-06 7.68995552e-07 -1.00768332e-06 --7.596723478e-06 2.862837033e-06 5.78594421e-06 -1.00768332e-06 1.320457147e-06 --1.130802064e-06 6.028571705e-06 1.218419973e-05 5.261099486e-06 -6.894228468e-06 -6.028571705e-06 -8.436047763e-06 -1.70498198e-05 -5.153996079e-06 6.753843715e-06 -1.218419973e-05 -1.70498198e-05 -3.445883232e-05 -1.041654736e-05 1.364993916e-05 -5.261099486e-06 -5.153996079e-06 -1.041654736e-05 -2.365178996e-06 3.099334627e-06 --6.894228468e-06 6.753843715e-06 1.364993916e-05 3.099334627e-06 -4.06137343e-06 -0.156926174 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.09975351053 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.01493301035 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.005004577489 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.01507868052 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.007233654421 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.003216625582 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0008311393506 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0007456818288 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0005195967194 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --9.469628726e-06 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0001285205105 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --3.842785538e-05 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.01575340093 -0.01100042274 -0.01971119173 0 0 --0.01100042274 0.1266289676 0.02809655573 0 0 --0.01971119173 0.02809655573 0.1781697598 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.06889740207 0.03459209731 -0.01772888668 0 0 -0.03459209731 0.05009889712 -0.0478543572 0 0 --0.01772888668 -0.0478543572 0.05915402787 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.06147587493 0.02614818618 -0.04432698833 0 0 -0.02614818618 0.007950121455 -0.01465252777 0 0 --0.04432698833 -0.01465252777 0.02445464895 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.01336975112 -0.004454615365 0.008403838202 0 0 --0.004454615365 0.0008979205358 0.0009754613364 0 0 -0.008403838202 0.0009754613364 -0.00159841891 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.009850722557 0.004807048478 -0.007755941143 0 0 -0.004807048478 0.001311070485 -0.00326420201 0 0 --0.007755941143 -0.00326420201 0.004542889589 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.002474867451 -0.0007078741774 0.001355497386 0 0 --0.0007078741774 -0.0001604784241 0.0003636137039 0 0 -0.001355497386 0.0003636137039 -0.0006337322342 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0005705836286 -0.0001770748985 7.748627536e-05 0 0 --0.0001770748985 0.0003010623627 0.0001131090044 0 0 -7.748627536e-05 0.0001131090044 0.0004521052799 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.002451594332 0.0009456943448 -0.001267467109 0 0 -0.0009456943448 0.0001709334903 -0.0005327977118 0 0 --0.001267467109 -0.0005327977118 0.0005561964604 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.001420179611 -0.0002641011059 0.0006774800822 0 0 --0.0002641011059 -0.0001718709329 5.446742277e-05 0 0 -0.0006774800822 5.446742277e-05 -0.000406214008 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0001195745385 7.635268001e-05 -4.099338962e-05 0 0 -7.635268001e-05 2.930432429e-05 -3.678089085e-05 0 0 --4.099338962e-05 -3.678089085e-05 2.499089829e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --9.089212163e-05 -3.415367775e-05 4.593375795e-05 0 0 --3.415367775e-05 -3.630000581e-06 2.23252345e-05 0 0 -4.593375795e-05 2.23252345e-05 4.070095e-06 0 0 -0 0 0 0 0 -0 0 0 0 0 -0.0001644659491 9.241089743e-05 -8.981121223e-05 0 0 -9.241089743e-05 5.612341847e-06 -5.474699289e-05 0 0 --8.981121223e-05 -5.474699289e-05 3.347920701e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.0001710420363 -2.253464718e-05 9.195683883e-05 0 0 --2.253464718e-05 -2.137349853e-05 7.428881854e-06 0 0 -9.195683883e-05 7.428881854e-06 -5.543456701e-05 0 0 -0 0 0 0 0 -0 0 0 0 0 --0.1050325181 -0.004000563758 0.07102670391 0.03911811485 0.01984302691 --0.004000563758 -0.04227496259 0.001020249821 0.0287723953 -0.03812357887 -0.07102670391 0.001020249821 -0.04552876291 0.03923770053 -0.01742999417 -0.03911811485 0.0287723953 0.03923770053 0.06367620451 -0.03418485402 -0.01984302691 -0.03812357887 -0.01742999417 -0.03418485402 0.08072363138 -0.09028703041 -0.0128994078 0.02800625252 0.02499039748 0.04597974607 --0.0128994078 0.07634669729 -0.01388827906 0.02108493987 -0.04900828554 -0.02800625252 -0.01388827906 0.051245014 0.02692728785 0.03678307062 -0.02499039748 0.02108493987 0.02692728785 0.02692862808 0.007173931852 -0.04597974607 -0.04900828554 0.03678307062 0.007173931852 0.04881623718 -0.007946507758 0.007071692904 -0.01261853839 -0.002473385901 -0.003906184409 -0.007071692904 0.01809468039 -0.02358786099 -0.003851568278 -0.01177034291 --0.01261853839 -0.02358786099 0.03938373439 0.009152482234 0.01772542345 --0.002473385901 -0.003851568278 0.009152482234 0.00289545901 0.003884988696 --0.003906184409 -0.01177034291 0.01772542345 0.003884988696 0.008884346341 -0.01108612222 0.01016694358 -0.01588191514 -0.002408905847 -0.005342543922 -0.01016694358 0.005703000344 -0.01115672693 -0.0019040248 -0.003391358386 --0.01588191514 -0.01115672693 0.0156338157 0.002097113205 0.005640042984 --0.002408905847 -0.0019040248 0.002097113205 0.0003588109429 0.0009524942928 --0.005342543922 -0.003391358386 0.005640042984 0.0009524942928 0.002143086344 --0.01108779558 -0.007352359301 0.01130095146 0.001590509242 0.003642258154 --0.007352359301 -0.003254431322 0.005012595912 0.0005120972474 0.001285109447 -0.01130095146 0.005012595912 -0.008351033269 -0.0009308383604 -0.001634450225 -0.001590509242 0.0005120972474 -0.0009308383604 -3.416052973e-05 7.533268895e-05 -0.003642258154 0.001285109447 -0.001634450225 7.533268895e-05 -0.0001369499328 -0.00497249907 0.004051792382 -0.006018175776 -0.0009311492862 -0.002311108951 -0.004051792382 0.003010189595 -0.004173426251 -0.0005433973096 -0.001685275441 --0.006018175776 -0.004173426251 0.006906190264 0.001160992902 0.002154949195 --0.0009311492862 -0.0005433973096 0.001160992902 0.0002325841334 0.0002091452674 --0.002311108951 -0.001685275441 0.002154949195 0.0002091452674 0.0009118022952 --0.001951416884 -0.001702852924 0.002672992405 0.0004778706541 0.001031553957 --0.001702852924 -0.0008352816583 0.001723861651 0.0003936790831 0.0003583935965 -0.002672992405 0.001723861651 -0.002295328212 -0.0001203940887 -0.0007790642976 -0.0004778706541 0.0003936790831 -0.0001203940887 0.0001654847591 -0.0001685987866 -0.001031553957 0.0003583935965 -0.0007790642976 -0.0001685987866 -8.212615806e-05 -0.001189968779 0.00126999372 -0.001866882998 -0.000318090654 -0.0007778957227 -0.00126999372 0.0006196870998 -0.001743625778 -0.0004117710583 -0.0003126159346 --0.001866882998 -0.001743625778 0.001810124332 0.0001264060718 0.0009277862 --0.000318090654 -0.0004117710583 0.0001264060718 -7.411995084e-05 0.0002112421547 --0.0007778957227 -0.0003126159346 0.0009277862 0.0002112421547 0.0001480416875 --0.0008953539707 -0.00055450408 0.0009436908817 0.0001475167378 0.0002516690069 --0.00055450408 -0.000414173773 0.0005062184399 4.916758455e-05 0.000209601104 -0.0009436908817 0.0005062184399 -0.001088808761 -0.0002044733732 -0.000217732738 -0.0001475167378 4.916758455e-05 -0.0002044733732 -5.014457654e-05 -1.398104522e-05 -0.0002516690069 0.000209601104 -0.000217732738 -1.398104522e-05 -0.0001033983912 -0.0001255920278 6.400898222e-05 -8.336450834e-05 -4.618413811e-06 -2.623975864e-05 -6.400898222e-05 7.49740289e-05 -7.860071233e-05 3.860585912e-06 -4.785302965e-05 --8.336450834e-05 -7.860071233e-05 0.0001450025839 4.797670771e-05 5.563378707e-05 --4.618413811e-06 3.860585912e-06 4.797670771e-05 2.882314251e-05 -9.657015183e-07 --2.623975864e-05 -4.785302965e-05 5.563378707e-05 -9.657015183e-07 3.346965879e-05 -0.0001164516079 0.0001013687797 -0.0001337594473 -1.514347828e-05 -5.051888165e-05 -0.0001013687797 2.969484014e-05 -0.0001258665017 -2.412300816e-05 -1.544163039e-05 --0.0001337594473 -0.0001258665017 0.0001220870619 1.681741997e-05 5.270640115e-05 --1.514347828e-05 -2.412300816e-05 1.681741997e-05 6.469003682e-06 5.810512042e-06 --5.051888165e-05 -1.544163039e-05 5.270640115e-05 5.810512042e-06 1.314967579e-05 --6.095880055e-05 5.961210085e-06 3.018161585e-05 6.854231896e-06 -1.771038342e-05 -5.961210085e-06 -3.590158699e-05 -3.963117576e-05 -1.96935391e-05 1.607939134e-05 -3.018161585e-05 -3.963117576e-05 -6.936516983e-05 -2.646915642e-05 1.915645326e-05 -6.854231896e-06 -1.96935391e-05 -2.646915642e-05 -1.07852854e-05 6.355825097e-06 --1.771038342e-05 1.607939134e-05 1.915645326e-05 6.355825097e-06 -3.585192328e-06 --4.883360181e-05 -1.966284799e-05 6.063326057e-05 1.420123739e-05 5.049752214e-06 --1.966284799e-05 -3.662277049e-05 4.473809554e-06 -4.041503156e-06 1.877349764e-05 -6.063326057e-05 4.473809554e-06 -9.953968615e-05 -2.365626997e-05 2.313594898e-06 -1.420123739e-05 -4.041503156e-06 -2.365626997e-05 -4.567348432e-06 1.668905355e-06 -5.049752214e-06 1.877349764e-05 2.313594898e-06 1.668905355e-06 -7.866070066e-06 diff --git a/tests/09_DeePKS/100_NO_KP_deepks_UT/gedm_ref.dat b/tests/09_DeePKS/100_NO_KP_deepks_UT/gedm_ref.dat deleted file mode 100644 index 8e149d1035..0000000000 --- a/tests/09_DeePKS/100_NO_KP_deepks_UT/gedm_ref.dat +++ /dev/null @@ -1,117 +0,0 @@ -0.00202859 --0.000984925 --0.00650083 --0.00565152 --0.000725093 -0.000109202 --0.000367637 -7.94121e-05 --3.70252e-05 -0.000227224 --0.000278298 --0.000744654 -0.000309591 -0.0031952 -0.000993463 0.00145829 -0.000993463 0.00219907 -0.00225089 0.00145829 -0.00225089 0.00337958 -0.00105959 -6.12694e-05 -0.000155295 -6.12694e-05 -0.00261859 -0.00261892 -0.000155295 -0.00261892 -0.000943708 --0.00223081 -0.00235812 0.00139488 -0.00235812 -0.000487303 -8.83013e-05 0.00139488 -8.83013e-05 0.000867258 --0.00146966 -1.84167e-05 -0.000268234 -1.84167e-05 -0.000827298 0.000753041 -0.000268234 0.000753041 -0.00103768 --0.00106328 0.00072186 -0.00106126 0.00072186 -0.00125009 0.000923996 -0.00106126 0.000923996 -0.00170016 --0.000251398 8.77004e-05 -0.000694075 8.77004e-05 -0.000475457 0.000526489 -0.000694075 0.000526489 -0.000341573 -0.000408232 -6.71762e-05 2.86125e-05 -6.71762e-05 0.00031612 -9.82955e-05 2.86125e-05 -9.82955e-05 0.000417856 --0.000603382 -0.000103096 -1.40728e-05 -0.000103096 -0.000397536 0.000169069 -1.40728e-05 0.000169069 -0.000380715 -0.000160599 0.000113686 -8.60686e-05 0.000113686 0.000285746 0.00018088 -8.60686e-05 0.00018088 0.000133608 -5.66116e-05 -0.000260799 7.67217e-05 -0.000260799 0.000356287 0.000148488 7.67217e-05 0.000148488 0.000473966 -0.000295101 0.000116272 -0.000302868 0.000116272 -0.000286275 -0.00013477 -0.000302868 -0.00013477 -9.72605e-05 --0.00046228 -0.000285148 8.57696e-05 -0.000285148 0.00036255 0.000535389 8.57696e-05 0.000535389 0.000276426 --3.64144e-05 -0.000264539 0.000416145 -0.000264539 0.00051729 5.39491e-08 0.000416145 5.39491e-08 0.000468025 -0.00244466 0.000858314 -0.00131416 -0.00108222 -0.00273279 0.000858314 0.00105136 0.000352406 0.0010504 -0.00182113 -0.00131416 0.000352406 -0.000127431 0.00104039 0.00200108 -0.00108222 0.0010504 0.00104039 0.0017057 0.000137631 -0.00273279 -0.00182113 0.00200108 0.000137631 0.00191255 --0.00086424 -2.68905e-05 -0.000481062 0.000689333 -0.00030707 -2.68905e-05 7.8446e-05 -0.000384761 8.94363e-05 0.000477519 -0.000481062 -0.000384761 0.000230203 0.000347675 -0.0012989 0.000689333 8.94363e-05 0.000347675 -0.000803195 0.000666798 -0.00030707 0.000477519 -0.0012989 0.000666798 6.55743e-05 --0.000254698 -0.00171872 0.000627953 0.00067302 0.00117844 -0.00171872 0.00116609 0.00112422 -0.000610834 -0.000611514 0.000627953 0.00112422 -0.00148054 -8.0668e-05 0.000509726 0.00067302 -0.000610834 -8.0668e-05 0.000190436 -0.000323205 0.00117844 -0.000611514 0.000509726 -0.000323205 -0.00187414 -0.000540572 1.79784e-06 -0.000109497 -0.000261617 -0.000583128 1.79784e-06 -0.000237923 0.000253483 -6.6816e-05 -0.000707515 -0.000109497 0.000253483 -0.000831512 0.000186435 0.00101723 -0.000261617 -6.6816e-05 0.000186435 -0.000282948 4.69159e-05 -0.000583128 -0.000707515 0.00101723 4.69159e-05 -0.000152146 --0.000281265 0.000140498 -0.000170177 -8.09301e-05 -5.46059e-06 0.000140498 -0.000172111 3.08309e-05 -1.71459e-05 -3.97292e-05 -0.000170177 3.08309e-05 -0.0001824 -1.50329e-05 0.000162377 -8.09301e-05 -1.71459e-05 -1.50329e-05 -0.000215983 -0.000110191 -5.46059e-06 -3.97292e-05 0.000162377 -0.000110191 -0.000507892 --0.000361373 -0.000415115 0.000130544 -0.000111618 0.0010189 -0.000415115 0.000633772 0.000237176 -0.000137094 0.000120148 0.000130544 0.000237176 0.000160202 -0.000389771 -4.93607e-05 -0.000111618 -0.000137094 -0.000389771 -5.63242e-05 -0.00050516 0.0010189 0.000120148 -4.93607e-05 -0.00050516 -0.000946787 --0.000560805 -0.00018147 0.000271102 0.000167308 0.000363984 -0.00018147 -2.15421e-05 0.00023945 3.76222e-06 0.000222193 0.000271102 0.00023945 -0.000187721 -8.84139e-05 -0.000245319 0.000167308 3.76222e-06 -8.84139e-05 0.000201143 -0.000148116 0.000363984 0.000222193 -0.000245319 -0.000148116 -0.000419233 --0.000318343 5.05756e-05 2.1096e-05 -0.000249538 -0.000175705 5.05756e-05 -4.98445e-05 0.000387062 -1.22697e-05 -9.01291e-05 2.1096e-05 0.000387062 -0.000423237 -7.76256e-05 0.000286447 -0.000249538 -1.22697e-05 -7.76256e-05 -0.000640041 -3.14914e-05 -0.000175705 -9.01291e-05 0.000286447 -3.14914e-05 -0.000301043 --0.000344046 5.14987e-06 -2.49748e-05 6.86386e-05 0.000248054 5.14987e-06 -3.73961e-05 -6.84716e-05 8.04549e-05 0.000161768 -2.49748e-05 -6.84716e-05 8.28327e-05 -7.46917e-06 -0.000247033 6.86386e-05 8.04549e-05 -7.46917e-06 -0.0001878 -4.33207e-05 0.000248054 0.000161768 -0.000247033 -4.33207e-05 -0.000323054 --0.000345087 -0.000139657 6.81738e-05 4.03538e-05 0.00012901 -0.000139657 0.000243659 0.00033405 -9.12019e-06 3.13187e-05 6.81738e-05 0.00033405 -0.000190441 -2.51702e-05 -1.55363e-05 4.03538e-05 -9.12019e-06 -2.51702e-05 -0.000208908 -4.80826e-05 0.00012901 3.13187e-05 -1.55363e-05 -4.80826e-05 -0.000383787 --0.000262238 2.27912e-05 9.84972e-05 0.00034617 7.99633e-05 2.27912e-05 -0.000298141 -1.8245e-05 8.02859e-05 7.91793e-05 9.84972e-05 -1.8245e-05 -0.000175685 0.000225785 -0.000122813 0.00034617 8.02859e-05 0.000225785 8.28615e-05 0.00010194 7.99633e-05 7.91793e-05 -0.000122813 0.00010194 -0.000342842 -2.12152e-05 -3.30795e-05 5.14774e-05 -0.00028983 5.63192e-06 -3.30795e-05 -5.63104e-05 7.63872e-05 0.000123508 -0.00013231 5.14774e-05 7.63872e-05 -0.000179274 -6.65847e-05 0.000183573 -0.00028983 0.000123508 -6.65847e-05 -0.000356948 -8.13773e-05 5.63192e-06 -0.00013231 0.000183573 -8.13773e-05 -1.61591e-05 -0.000269282 -5.26367e-05 0.000133464 0.000167696 0.000219185 -5.26367e-05 0.000186873 -0.000113677 -0.000100264 0.000146296 0.000133464 -0.000113677 0.000405986 -3.68797e-05 -0.000161102 0.000167696 -0.000100264 -3.68797e-05 0.000337565 2.86269e-05 0.000219185 0.000146296 -0.000161102 2.86269e-05 0.000272256 -0.00213193 --0.00114779 --0.00687396 --0.00610686 --0.000760189 -3.41242e-05 --0.000482002 --4.72923e-06 --4.07202e-05 -0.000237758 --0.000271159 --0.000844237 -0.000399316 -0.0054181 0.00163259 -0.0011675 0.00163259 0.00185441 -0.00152021 -0.0011675 -0.00152021 0.00197283 --0.000296079 0.00166878 -0.00218685 0.00166878 -0.000501517 0.00203271 -0.00218685 0.00203271 -0.00168623 --0.000883081 0.00125317 -0.00173344 0.00125317 0.000148176 0.00251554 -0.00173344 0.00251554 -0.00123964 --0.000455746 0.000362535 -0.0004468 0.000362535 -0.00161127 -0.000422838 -0.0004468 -0.000422838 -0.00139483 --0.000589814 2.21965e-05 0.000141248 2.21965e-05 -0.00233594 -0.00145933 0.000141248 -0.00145933 -0.00162849 --7.32056e-05 -1.53778e-06 0.000456069 -1.53778e-06 -0.000641624 -0.000885576 0.000456069 -0.000885576 -0.000476154 -0.00041931 -5.18754e-05 4.01129e-05 -5.18754e-05 0.000501825 2.18599e-05 4.01129e-05 2.18599e-05 0.0005109 --0.000458536 0.000219873 -4.87362e-05 0.000219873 -0.000381663 0.000107373 -4.87362e-05 0.000107373 -0.000625993 -0.000379063 0.000135832 -8.67168e-05 0.000135832 5.53501e-05 -0.000156754 -8.67168e-05 -0.000156754 7.48099e-05 -0.000235068 -0.000298751 6.09822e-05 -0.000298751 0.000269918 -3.5675e-05 6.09822e-05 -3.5675e-05 0.000542658 --9.36343e-05 -0.000252374 0.000218475 -0.000252374 -0.000109702 -0.000232731 0.000218475 -0.000232731 0.000110355 --0.000114546 -0.000584538 0.000346344 -0.000584538 -5.39245e-05 -0.0003028 0.000346344 -0.0003028 0.0004425 -0.000300261 0.000178082 -0.000463235 0.000178082 0.000376076 0.0005217 -0.000463235 0.0005217 0.00024797 -0.00152288 -0.000176044 -2.48989e-05 -0.000998334 -0.00286432 -0.000176044 0.000349926 0.00100311 0.00156622 -0.000585947 -2.48989e-05 0.00100311 0.00107491 0.00151805 -0.000760976 -0.000998334 0.00156622 0.00151805 -0.000547705 0.00144124 -0.00286432 -0.000585947 -0.000760976 0.00144124 0.004905 --0.000147833 2.13984e-05 2.48396e-05 0.000101617 1.71246e-05 2.13984e-05 -0.00065031 -0.000544934 -0.00140542 0.000410567 2.48396e-05 -0.000544934 -0.000660086 -0.00111559 0.000330341 0.000101617 -0.00140542 -0.00111559 0.000758953 -0.000223944 1.71246e-05 0.000410567 0.000330341 -0.000223944 -0.000149027 --0.000660909 -0.000237126 -0.000260946 1.50641e-05 0.00116937 -0.000237126 0.000523473 0.000850197 0.00190926 -0.000381211 -0.000260946 0.000850197 0.00105788 0.00172543 -0.000355117 1.50641e-05 0.00190926 0.00172543 -0.00125609 -0.000149936 0.00116937 -0.000381211 -0.000355117 -0.000149936 -0.00199209 -0.000297312 5.34615e-05 -0.000177467 -0.000268363 -0.00055306 5.34615e-05 -0.000400335 -0.000458675 0.000666464 2.98581e-05 -0.000177467 -0.000458675 -0.000137964 0.000422242 -7.06274e-05 -0.000268363 0.000666464 0.000422242 -0.001319 0.000741316 -0.00055306 2.98581e-05 -7.06274e-05 0.000741316 0.000748984 --4.30707e-05 -6.0972e-05 0.000199708 -5.39583e-07 -0.000116074 -6.0972e-05 -0.000448648 -0.000115088 -0.000123107 -4.80409e-05 0.000199708 -0.000115088 -0.000550389 -0.000124299 0.000106199 -5.39583e-07 -0.000123107 -0.000124299 -0.000383922 0.00011734 -0.000116074 -4.80409e-05 0.000106199 0.00011734 6.97789e-05 -0.000150995 -0.000489983 8.83527e-05 4.36569e-05 0.000892736 -0.000489983 -0.000185122 5.36955e-05 -0.000427833 0.000250813 8.83527e-05 5.36955e-05 -0.000147831 -0.000117564 0.000816995 4.36569e-05 -0.000427833 -0.000117564 0.000551131 -0.000167765 0.000892736 0.000250813 0.000816995 -0.000167765 -0.0012368 --0.000413527 2.85538e-06 -0.000113526 0.000106033 0.000446506 2.85538e-06 2.5029e-05 1.12037e-05 -0.000105358 0.000148323 -0.000113526 1.12037e-05 -6.34406e-05 -9.88092e-05 9.93887e-05 0.000106033 -0.000105358 -9.88092e-05 0.000160536 -0.000237936 0.000446506 0.000148323 9.93887e-05 -0.000237936 -0.000942596 --0.000243082 0.000213892 3.84864e-05 5.85247e-05 -0.000156944 0.000213892 -0.00033122 -0.000430873 0.000110173 1.54561e-05 3.84864e-05 -0.000430873 -0.00064412 -0.000162669 -6.33452e-05 5.85247e-05 0.000110173 -0.000162669 -0.000807394 0.000196612 -0.000156944 1.54561e-05 -6.33452e-05 0.000196612 -7.77319e-05 --0.000264324 1.30526e-05 -0.000181926 -8.91971e-06 0.000171289 1.30526e-05 3.41136e-05 0.000102914 0.000144966 3.89213e-05 -0.000181926 0.000102914 0.000183404 0.000167716 -5.06999e-05 -8.91971e-06 0.000144966 0.000167716 -4.88025e-05 -8.91318e-05 0.000171289 3.89213e-05 -5.06999e-05 -8.91318e-05 -0.000479437 --0.000185574 0.000189264 -0.000116799 8.46728e-05 0.000107989 0.000189264 0.000155719 -0.000282607 8.77021e-05 0.000143309 -0.000116799 -0.000282607 -0.000229626 -0.000152554 5.47452e-05 8.46728e-05 8.77021e-05 -0.000152554 -0.000159252 2.44278e-05 0.000107989 0.000143309 5.47452e-05 2.44278e-05 -0.000395825 -0.000140368 -0.000167071 0.000256492 7.20031e-05 0.000286278 -0.000167071 -0.000419846 -8.30045e-05 -0.000216311 -0.000150974 0.000256492 -8.30045e-05 -0.000352697 -6.3303e-05 0.000270655 7.20031e-05 -0.000216311 -6.3303e-05 -0.000267418 -4.69121e-05 0.000286278 -0.000150974 0.000270655 -4.69121e-05 -0.000329922 --0.00025669 -6.83441e-05 0.000145909 2.23272e-05 -7.17899e-05 -6.83441e-05 -0.000332092 0.000176562 -0.000319945 -5.48174e-05 0.000145909 0.000176562 -0.000272153 -0.000165497 -4.81915e-05 2.23272e-05 -0.000319945 -0.000165497 0.000131435 -0.00015465 -7.17899e-05 -5.48174e-05 -4.81915e-05 -0.00015465 -2.97307e-05 -0.000278868 0.000114735 -0.000200899 -4.1737e-05 -0.000131113 0.000114735 0.00047709 -0.000164726 1.06285e-05 0.000199737 -0.000200899 -0.000164726 0.000179903 -0.000123095 0.000169178 -4.1737e-05 1.06285e-05 -0.000123095 0.000429791 0.000114265 -0.000131113 0.000199737 0.000169178 0.000114265 0.000237132 -0.00213155 --0.00115343 --0.00686163 --0.00612861 --0.00076381 -3.18959e-05 --0.000485297 --3.38115e-06 --3.75621e-05 -0.000257675 --0.00027633 --0.000830054 -0.000394379 -0.00215913 -0.00123155 0.00243805 -0.00123155 0.00339598 -0.00151338 0.00243805 -0.00151338 0.00365764 --0.000546694 0.00156797 -0.00206209 0.00156797 -0.000321695 0.00224098 -0.00206209 0.00224098 -0.00161617 -0.000336597 0.00168822 -0.00231042 0.00168822 -0.000746471 0.00150424 -0.00231042 0.00150424 -0.00155278 --0.00179102 -0.000139162 0.000172502 -0.000139162 -0.000647778 0.000688854 0.000172502 0.000688854 -0.00103276 --0.00266922 -0.000716355 0.00114835 -0.000716355 -0.000790634 0.000263545 0.00114835 0.000263545 -0.00109061 --0.000884331 0.000312632 0.000733368 0.000312632 0.000313047 0.000169118 0.000733368 0.000169118 -0.00064704 -0.000518671 -1.38492e-05 -1.35924e-05 -1.38492e-05 0.00041264 -6.63516e-05 -1.35924e-05 -6.63516e-05 0.000474691 --0.000475284 -0.000177801 8.49491e-05 -0.000177801 -0.000584682 -0.000168202 8.49491e-05 -0.000168202 -0.00037492 --3.43925e-05 -2.09417e-07 0.00012567 -2.09417e-07 0.000364558 0.000174842 0.00012567 0.000174842 0.000170094 -0.00033637 -0.000273553 8.83433e-07 -0.000273553 0.0001775 -0.000121359 8.83433e-07 -0.000121359 0.00051943 -7.18895e-05 0.000359384 -5.3971e-05 0.000359384 9.9883e-05 7.67332e-05 -5.3971e-05 7.67332e-05 -0.000261777 -0.000125772 -0.000509837 0.000237322 -0.000509837 -0.00021544 -0.00049664 0.000237322 -0.00049664 0.000399095 -0.000415713 0.000186564 -0.000537235 0.000186564 0.00025413 0.000417064 -0.000537235 0.000417064 0.000233377 -0.00111016 -0.00188058 0.000826187 -1.82764e-05 0.00170348 -0.00188058 0.000696819 0.00251401 0.00108415 -0.000906648 0.000826187 0.00251401 0.00376775 0.00247123 -0.00116027 -1.82764e-05 0.00108415 0.00247123 0.00112908 -0.000594257 0.00170348 -0.000906648 -0.00116027 -0.000594257 0.000602613 -0.00103531 -0.000435623 0.000637202 0.000284825 0.000658464 -0.000435623 -0.0010744 -0.000915663 -0.000913184 -0.000216309 0.000637202 -0.000915663 -0.000355106 -0.000421867 0.000313118 0.000284825 -0.000913184 -0.000421867 -0.000674067 0.000148098 0.000658464 -0.000216309 0.000313118 0.000148098 0.000225697 --0.00259271 -6.28644e-07 0.000270891 -0.000153433 -0.00054428 -6.28644e-07 0.00109043 0.00201588 0.0015052 0.000475919 0.000270891 0.00201588 -0.000930622 0.000395165 -0.000818936 -0.000153433 0.0015052 0.000395165 0.00074248 -0.00028724 -0.00054428 0.000475919 -0.000818936 -0.00028724 -0.000623747 --0.000660427 0.000842441 -0.00101658 -0.000283709 -0.000888567 0.000842441 6.9326e-06 -0.000341812 3.34598e-05 0.000188519 -0.00101658 -0.000341812 0.000133949 -0.000148699 -0.000194194 -0.000283709 3.34598e-05 -0.000148699 -0.000207269 8.36728e-06 -0.000888567 0.000188519 -0.000194194 8.36728e-06 -7.35893e-05 --0.000405041 0.000230312 -0.000305367 -8.54534e-05 -0.000201026 0.000230312 -0.000310215 -6.87723e-05 -0.000164829 2.52063e-05 -0.000305367 -6.87723e-05 -0.00014289 -0.000101348 5.93409e-06 -8.54534e-05 -0.000164829 -0.000101348 -0.000150299 -0.000100742 -0.000201026 2.52063e-05 5.93409e-06 -0.000100742 -0.000345932 --0.000234129 -0.000631925 0.00103076 0.000236459 0.000573133 -0.000631925 -0.000357158 0.000553474 -0.000412998 -4.31577e-05 0.00103076 0.000553474 -0.000656753 -0.00031218 -5.82287e-05 0.000236459 -0.000412998 -0.00031218 0.000451036 -0.000308226 0.000573133 -4.31577e-05 -5.82287e-05 -0.000308226 -6.14655e-05 --7.72708e-05 -0.000105337 0.000551186 0.000198832 8.91872e-05 -0.000105337 -4.89464e-05 -6.55666e-05 3.52824e-05 -2.26555e-05 0.000551186 -6.55666e-05 -0.000883737 -0.000259608 7.98526e-05 0.000198832 3.52824e-05 -0.000259608 -0.000246166 9.32979e-05 8.91872e-05 -2.26555e-05 7.98526e-05 9.32979e-05 2.87453e-05 --0.000504485 8.94036e-05 -0.000345227 -0.000165186 -0.000218933 8.94036e-05 -0.000489715 -0.000294442 -5.14213e-05 0.000374822 -0.000345227 -0.000294442 -0.000384215 -0.000138498 6.35208e-05 -0.000165186 -5.14213e-05 -0.000138498 -0.000398533 0.000219101 -0.000218933 0.000374822 6.35208e-05 0.000219101 -0.000318966 --0.000266228 1.11134e-05 0.000233931 7.71249e-05 -3.03942e-05 1.11134e-05 -9.25857e-06 0.000280656 2.9724e-05 -0.000167868 0.000233931 0.000280656 -0.000237862 -1.72025e-05 -0.000154984 7.71249e-05 2.9724e-05 -1.72025e-05 1.08323e-05 -0.000169121 -3.03942e-05 -0.000167868 -0.000154984 -0.000169121 -2.73092e-05 --0.000224946 -0.000109794 0.000118441 -2.69117e-05 -6.63992e-05 -0.000109794 -0.000109515 -0.000103574 0.000105744 0.000295202 0.000118441 -0.000103574 -0.000428568 -0.000129306 -1.65425e-05 -2.69117e-05 0.000105744 -0.000129306 -0.000159751 0.000235863 -6.63992e-05 0.000295202 -1.65425e-05 0.000235863 9.45322e-05 --0.000321389 -0.000142071 0.000171208 1.02997e-05 0.000137246 -0.000142071 -0.000343316 8.82082e-05 -0.000344364 0.000143111 0.000171208 8.82082e-05 -0.000427295 -0.000282713 0.000131544 1.02997e-05 -0.000344364 -0.000282713 0.000192637 -0.000131147 0.000137246 0.000143111 0.000131544 -0.000131147 -0.000324471 -0.000113234 -0.00022013 9.60657e-05 3.15723e-05 0.000246622 -0.00022013 -0.000307238 -8.50839e-05 7.30695e-05 -4.55747e-05 9.60657e-05 -8.50839e-05 7.89338e-06 0.00019709 1.84874e-05 3.15723e-05 7.30695e-05 0.00019709 -0.000419119 0.000120032 0.000246622 -4.55747e-05 1.84874e-05 0.000120032 -0.000162541 -0.00048543 2.31448e-05 -2.42245e-05 -4.69686e-06 -7.18465e-05 2.31448e-05 0.000367831 -0.000269825 8.44002e-05 0.000120837 -2.42245e-05 -0.000269825 0.000144455 -6.05301e-05 0.000117942 -4.69686e-06 8.44002e-05 -6.05301e-05 0.000141301 0.000227338 -7.18465e-05 0.000120837 0.000117942 0.000227338 0.000456956 diff --git a/tests/09_DeePKS/100_NO_KP_deepks_UT/gvepsl_ref.dat b/tests/09_DeePKS/100_NO_KP_deepks_UT/gvepsl_ref.dat deleted file mode 100644 index 4e1a910ea1..0000000000 --- a/tests/09_DeePKS/100_NO_KP_deepks_UT/gvepsl_ref.dat +++ /dev/null @@ -1,18 +0,0 @@ -0.1255502071 -0.04094690846 -0.001882323965 0.01101489697 -0.0001740754221 -0.0006272641514 5.272637793e-05 5.250781725e-05 -0.0002223871639 1.518323797e-06 2.478868527e-05 -9.40617047e-06 -4.359381061e-05 -0.0002776119906 -0.01622506262 -0.02041000171 0.01513961253 0.4437683442 -3.059158989e-06 0.1285482253 0.009889163097 -6.016606542e-07 -0.04246256401 0.0005390301401 -8.384206665e-07 -0.004589136751 -0.04806983654 1.092335471e-07 0.00530587864 0.004978054169 3.985362402e-09 0.001568019887 0.008906018505 3.755591177e-08 0.0007928625233 0.0001257253528 -5.758920079e-08 -0.0003151939317 -0.004214497115 1.262782942e-08 0.0003969501873 5.597684704e-05 -1.304268812e-08 3.341983174e-05 0.0003593775519 3.292923253e-09 0.000235669955 1.913490011e-06 -8.001969577e-09 -2.82190936e-06 -0.0003486054479 -1.324990125e-09 9.395012666e-18 -1.763008455e-17 -9.416680421e-18 -0.0185445791 -0.1103738272 -6.275006818e-19 -2.845597346e-18 -3.748419922e-18 0.02576643456 0.05350079173 1.068410928e-20 1.083562303e-19 -4.319206619e-20 0.003229441049 0.003103974219 1.012262999e-19 -2.979050028e-20 -6.725415379e-20 -0.0002013005281 -0.001388954484 -1.044509633e-21 -6.215558616e-21 -2.627140224e-21 -6.407964478e-05 4.387224789e-05 2.215817583e-22 6.086020341e-22 1.76053974e-22 -8.262009007e-06 -6.832400329e-05 -1.183808733e-20 8.690583485e-21 -1.735243846e-20 0.0001280327736 0.0002545283099 8.573397531e-21 -2.331847161e-21 3.502990604e-21 -5.018424903e-05 -0.0002867608593 -1.634325407e-21 5.682680499e-22 4.161364783e-23 -8.269497083e-06 -6.518356024e-05 1.26335863e-21 1.618857757e-21 3.853509858e-22 9.926030477e-06 1.999772431e-05 -5.385302524e-22 5.415832846e-22 -1.081268416e-21 -4.825526636e-06 -2.397230626e-05 -3.11946769e-21 1.839169392e-21 -1.326054981e-21 -1.029929881e-05 -5.458419974e-05 -1.348423474e-21 4.458289824e-22 8.402716792e-23 -1.828691546e-06 -9.280181078e-06 -0.228749032 0.3401414218 0.3228059257 0.01657103655 -0.04304605797 -0.02463086072 0.02087900591 0.002081369017 -0.0009422545895 -0.002672981492 0.0007549623854 0.00036561111 5.055291671e-06 0.1055090169 0.1682513994 0.0917022133 0.04748889951 0.1044767834 0.230806303 -0.005272773865 -0.009915895463 0.1821351052 0.003737204414 0.007753246676 -0.05113436213 -0.001844675761 -0.0008521696909 0.05097276582 0.0003261651595 -0.000677932104 -0.01887071998 0.0002506042644 0.0001513702958 0.006363651585 0.001009672451 -2.592733164e-06 0.001027224576 -0.0001074037147 -0.0001063563038 -0.0001406012425 -6.995748259e-07 -0.0001829899136 -0.0006106735984 2.863976751e-05 -7.299509957e-05 -0.0001504081751 -1.870330474e-05 0.0001297733822 0.0004308131416 -1.572037637e-05 -4.588510991e-05 -0.0002089087711 -1.436276625e-17 0.001663291867 0.03730645825 0.03909450584 -0.2282730936 3.555762756e-17 -0.001117870621 0.1359623832 0.3018670132 0.1256487905 -9.431381831e-19 0.0001677244737 0.005882346954 0.01089025552 0.1466292559 5.395353691e-19 1.871069851e-06 0.002173798783 0.002091313013 0.03524263461 -1.464177762e-18 0.0001339900142 0.00178314659 0.0009915403604 -0.02395315983 -3.377255716e-19 -3.245566244e-05 -0.0005430911575 0.003039523888 0.01614985647 8.818591219e-19 7.278970533e-05 0.001475327138 0.0004142744284 -0.0104244848 -2.152892314e-19 -3.228219214e-05 -0.0006326093211 -0.0003895430242 0.01048838159 -1.765726049e-19 -6.854339382e-06 -8.448229353e-05 -0.0001505305544 -0.005194525263 -4.152878178e-20 5.567669552e-06 7.101448825e-05 0.000424496023 0.0004245197754 -1.841943862e-21 6.975555024e-06 6.034328777e-06 2.727500722e-05 -1.281321449e-05 -1.100983917e-21 -4.832589422e-06 -7.329525011e-05 5.70938559e-05 0.0002896297466 -8.548250144e-21 -1.927982922e-06 -2.3613756e-05 -0.0002657507878 -0.000136219588 -0.04057473282 0.03781173723 0.0009217487094 -0.0008783625595 0.003705573031 -0.001511192843 0.0006814582208 -0.0002792888725 0.0001837816024 -0.0001418566109 -2.423100289e-05 3.191588176e-05 -6.459755976e-06 0.02094994801 -0.1034044884 0.09732985984 0.005885525549 0.01531462911 0.05021091051 0.0007181161162 -0.001210590385 0.02217478795 -0.0002304164149 0.0008728458772 -0.004088494529 -0.000154304027 -0.0002118740971 0.004622635311 -0.0001277357886 1.942959598e-05 -0.0004616633431 5.154773656e-05 -0.0001311052267 -0.0002791886214 -1.563170278e-05 0.0001019410899 0.0005606116018 -8.176009362e-06 -0.0001615072728 -0.0003760502608 1.901196283e-06 7.88419621e-06 -4.307114399e-05 -2.218660137e-05 2.853914232e-06 -4.449078183e-05 -3.189207681e-06 -1.835420588e-05 5.857975141e-05 -1.345325758e-06 -3.410267796e-05 -4.693750109e-05 3.078644903e-17 0.000110294995 0.002126648843 -0.1301629876 0.09961212042 -5.505996693e-17 -2.487789129e-05 0.03134741919 0.03933664719 0.02920581601 9.233846776e-18 5.957924196e-07 9.990763934e-05 0.003683901489 0.01492585508 1.498641689e-19 5.484326245e-09 -0.0005187110244 -0.0006143122673 0.009279294341 1.338930836e-18 6.445500771e-07 -7.743926652e-05 0.0005846202813 -0.005737145133 9.358974037e-20 -5.596676116e-08 -0.00011073194 7.364227175e-05 0.003861711626 1.601898927e-19 -2.314490463e-08 0.0001798622116 -0.0008130502236 -0.0009403931124 5.584316974e-20 -1.138363526e-08 -8.788905502e-05 -0.0004928304779 0.001340263358 1.296261415e-10 -1.216219656e-20 -1.921218185e-06 -0.0001869104268 -0.0005144012122 -3.364959129e-21 -2.228875718e-09 1.546848042e-05 -8.675603883e-06 1.945408666e-05 3.427459834e-21 -4.085365374e-09 7.909133107e-05 -3.7093821e-06 -2.484860543e-05 -7.292952895e-10 -3.357408089e-20 -8.456267711e-06 -7.838451556e-05 2.867155989e-05 5.352557712e-21 7.099227977e-09 -1.032037982e-06 -3.100197019e-05 -5.625985762e-05 -0.05927247197 -0.03809046879 -0.0006901143036 0.007487184841 0.0002645453652 -0.0004814723012 1.366363443e-05 3.163681238e-05 -0.0001375110152 6.446129117e-06 1.373294983e-05 -3.654624656e-07 -2.624230538e-05 0.000367850594 0.004807258495 -0.02353751603 -0.0183889999 0.3543905743 4.076642384e-06 0.1041707644 0.006481122386 7.948042222e-07 -0.03169574622 -0.002611643522 1.113609612e-06 -0.004389354044 -0.03649783075 -1.44292268e-07 0.004121154416 0.003965144999 -5.467426334e-09 0.0006943742146 0.007421621129 -4.995095634e-08 0.0008378210616 -7.337690527e-05 7.637639573e-08 -0.0003441754804 -0.003169182967 -1.670192649e-08 0.0003700976674 -1.785400458e-05 1.729184354e-08 -1.815536093e-05 0.0003259139983 -4.368562535e-09 0.0001969908044 3.026704621e-06 1.060763658e-08 -3.63681444e-07 -0.0002660469175 1.753451575e-09 -1.287575513e-17 -2.315027092e-18 3.299239881e-17 -0.01737703955 -0.05031674398 4.767809862e-18 6.390304361e-18 1.048224287e-17 0.01299781635 0.03038468803 -1.663937623e-20 -1.272784709e-19 -2.495602724e-19 0.002454077071 -0.0002118028566 -1.114070402e-19 -1.120389382e-20 4.421666353e-20 -9.256997892e-05 -0.0002695438654 -1.669596731e-21 -3.642620231e-21 -5.000152322e-21 -5.046641429e-05 -0.0001183006493 4.475137794e-22 8.182540504e-22 -1.049030812e-21 7.533357652e-06 -4.292158749e-05 2.447861826e-20 5.865833894e-21 1.777006192e-20 7.748512294e-05 0.0001500499104 9.748990561e-21 -1.777740594e-21 -4.887679582e-21 -6.726813553e-06 -0.0001659207901 2.525265558e-21 4.962337481e-22 -1.789740321e-22 -3.002737977e-06 -4.584746107e-05 3.416577773e-22 -1.839687067e-21 -4.457831322e-22 4.238411513e-06 5.956237446e-06 -5.296576443e-22 5.462257036e-22 1.771971567e-21 -1.575744758e-06 -7.939185372e-06 2.581153347e-21 -2.616236104e-21 4.021907619e-21 -3.095326444e-06 -3.158353428e-05 1.455952712e-21 2.362049512e-22 -6.775426036e-22 -1.948635923e-06 -5.801098381e-06 -0.1991349306 0.2636121687 0.2519476486 0.01261139288 -0.03371515317 -0.01916839818 0.01647159049 0.0015572492 -0.0008194721838 -0.002138011801 0.0005707191219 0.0002760169324 -5.269764522e-06 0.1408168131 0.1323362555 0.06285287025 0.0343264734 0.08220291181 0.1538074329 -0.004658481552 -0.007802855126 0.1466459473 0.002918630294 0.006100304109 -0.04104980382 -0.001451370103 -0.0005449536231 0.04079112284 0.0002566395489 -0.0003861912135 -0.01474643019 0.0001971904122 0.0001843078855 0.004867368172 0.0007950012213 -2.045774238e-06 0.0005935515882 -8.451441461e-05 -0.0001107515416 -0.0002158652291 -5.506651279e-07 -0.0001355363319 -0.0005717274104 2.253087835e-05 -5.352550116e-05 -0.0001517905646 -1.471844241e-05 0.0001111066287 0.0002983005522 -1.237056292e-05 -2.697570185e-05 -0.000206548503 3.757281244e-17 0.01716901275 0.07103724691 0.03066404161 -0.1984778515 -1.975508601e-17 -0.001583959231 0.09559224695 0.2375069714 0.08156135535 -2.95831728e-18 0.0001947798291 0.005343165304 0.00856916668 0.1174126887 9.188839763e-19 4.328652651e-06 0.00175256272 0.001644686941 0.02783908049 7.323335448e-19 0.0001078023112 0.001403101402 0.001138795317 -0.01845455149 2.67812831e-20 -1.69697304e-05 -0.0004273678589 0.002668445901 0.01261101908 -1.746259625e-19 6.710824069e-05 0.001160855281 0.000214606667 -0.008304948552 6.285509279e-19 -2.064448531e-05 -0.0004978019268 -0.000476813229 0.00817166781 -1.650409054e-19 -5.187211366e-06 -6.64771926e-05 -0.0001991674946 -0.004105334921 2.191213674e-20 5.13895522e-06 5.587689487e-05 0.0003465895211 0.0002491372977 1.050609561e-21 5.497541317e-06 3.364918578e-06 2.146006049e-05 -4.078813192e-05 -5.758712129e-23 -2.685941567e-06 -5.767694346e-05 6.280041947e-05 0.0001837193212 2.05808765e-20 -8.40602135e-07 -1.858233708e-05 -0.0001995123744 -0.0001683582035 --0.02102253106 -0.04014146731 -0.01331741245 0.002913613766 -0.005793304455 0.003205196212 -0.001271681126 0.0001413175885 -0.0004368066635 0.0001210042626 -4.648972396e-05 -6.86466716e-05 -6.123753342e-07 -0.03267557929 -0.03887492122 0.07178429107 0.002057979509 -0.02388794878 -0.052208008 0.002798423067 0.001888235104 -0.03965473147 -0.001931998 -0.001361466109 0.007997238042 0.0002406796269 0.0005137329381 -0.005986449899 0.0001586794568 -3.030724268e-05 0.001573716766 -8.040249476e-05 -0.0003056967441 -0.0001059105612 2.438189068e-05 -0.0004164011344 -0.001351687226 1.275277045e-05 -0.0001056884123 0.0005065007681 -2.965383145e-06 -4.96660597e-05 -0.0002018051933 2.842028535e-05 -4.451506701e-06 -6.568051352e-05 4.974487664e-06 -4.062757943e-05 -0.0001119295527 2.098445416e-06 1.529245923e-05 -5.185046196e-07 -1.652444852e-17 0.0001112486947 -0.003315289179 0.0001095518523 0.09523529182 8.429390865e-18 -7.241348451e-05 0.01777501522 -0.06135775843 -0.02180982083 2.352119313e-18 1.29672426e-06 -0.00453520911 -0.005746073427 -0.02080081172 1.572652261e-18 1.618562158e-08 -0.0003612890506 0.000958131583 -0.01495684294 -2.086075745e-18 -1.215577846e-06 0.0002939140828 -0.0009118866485 0.009917928276 1.25986753e-19 6.737126879e-08 0.0001727208466 -2.766512041e-05 -0.006144873269 -9.140442276e-20 -3.173687296e-09 -0.0002805439586 0.0002133598959 0.001168312631 -4.299658856e-20 3.175385875e-09 0.0001370872415 -0.0003946685941 -0.001892442031 -4.896741557e-11 5.362203181e-20 2.99666998e-06 -0.0001583588378 0.0008600252175 3.04941871e-21 4.976581969e-09 -2.412725807e-05 -0.0001205213952 -0.0001948102023 -1.236104025e-21 2.996844191e-09 -0.0001283886751 5.786471155e-06 -7.289896444e-05 -1.019997771e-10 2.96241127e-20 1.318992887e-05 -2.838539285e-05 1.36507519e-05 4.166143195e-21 -9.537619227e-10 1.609808302e-06 4.179570361e-05 -9.965008949e-05 --0.04700722448 -0.009601564962 0.0009686260548 -0.001084460567 0.0005259992412 -1.147556825e-05 -3.466483044e-05 -1.055826704e-05 4.004041242e-05 7.046194469e-06 -6.582892192e-06 8.937993786e-06 8.797302832e-06 -0.000276380147 0.02379218265 -0.01081418357 -0.03960925998 0.02646723986 -3.066370261e-06 0.009654811609 -0.001292472373 -5.992254826e-07 0.0004079688004 -0.00401041464 -8.379736405e-07 -0.001235125324 -0.0003472122016 1.088589246e-07 0.0001615778361 0.0002826069356 4.058527367e-09 -0.0006477668128 0.0009415797142 3.754298237e-08 0.0003185273609 -0.0002233879237 -5.749648084e-08 -0.0001415506513 1.047690118e-05 1.259187951e-08 9.403583213e-05 -7.978478121e-05 -1.301978422e-08 -5.759043824e-05 7.324331692e-05 3.287102726e-09 2.564107945e-05 2.109273914e-06 -7.986607961e-09 2.346225862e-06 -4.286444109e-06 -1.320671465e-09 1.539548625e-17 -1.176340029e-17 9.569886756e-18 -0.004516109945 0.04370531255 1.735597205e-18 6.665897533e-18 -4.285168071e-18 -0.00853950875 -0.01321725376 -8.932393505e-20 9.18902061e-20 -7.871805243e-20 2.617203705e-05 -0.003391265629 1.323644372e-19 2.547500327e-20 6.869917859e-20 7.864417873e-05 0.001033303305 3.708067111e-21 -2.540920101e-21 6.109377009e-21 -2.874158557e-06 -0.0002011838305 -2.947077037e-23 -2.07273352e-21 2.091265598e-21 1.828977531e-05 1.140571419e-05 -4.710963746e-21 -3.198153213e-20 3.581355027e-21 -2.528855135e-05 -5.557646313e-05 -7.793989446e-21 3.307753756e-21 1.099898184e-21 4.133747304e-05 6.67756502e-05 4.771571787e-22 -8.132826097e-23 7.526011042e-23 4.294078497e-06 4.370724243e-06 5.20249372e-23 -9.310401982e-22 -4.523665781e-22 -4.311406842e-06 -1.211878113e-05 -4.53828887e-22 -5.689990704e-22 -1.434143561e-21 2.740255525e-06 1.346530331e-05 3.073686796e-21 2.848365623e-21 -4.815358257e-22 6.204610555e-06 1.270933351e-05 -2.931344009e-22 5.837614651e-22 1.006061996e-21 -7.577685843e-07 1.587433757e-06 -0.03553450401 0.009617753328 0.01144967242 0.0001398402447 -0.00168659808 -0.0007988345425 0.0009742398781 -1.582808228e-05 -0.0001454424625 -0.0001635788665 2.168710241e-06 5.548424333e-07 -1.209409212e-05 0.08139018333 0.00741857189 -0.008337386292 -0.001959155005 0.004593946737 -0.0269105816 -0.000908829494 -0.0004355721466 0.01240803775 0.0001348946477 0.0003409150419 -0.003332863561 -8.112211717e-05 0.0001298088943 0.003139699109 1.433684476e-05 0.0001658961118 -0.0006934756308 1.101318382e-05 9.329408173e-05 9.263437153e-05 4.505539472e-05 -1.113881044e-07 -0.000240281585 -4.718775495e-06 -4.064135406e-05 -0.0001464070015 -3.065455292e-08 3.194473234e-06 -0.0001480532633 1.260698419e-06 1.980474704e-06 -5.10558462e-05 -8.212385418e-07 1.764998929e-05 -3.517314309e-05 -6.904803351e-07 1.011620973e-05 -6.523754344e-05 -6.511449621e-17 0.02115284641 0.05694029186 0.001762338105 -0.03511202103 4.612022652e-17 -0.0009852250213 -0.009168187482 0.01327505135 -0.01754031052 3.362630097e-18 9.083874602e-05 0.00120809593 0.0004785606211 0.009105997184 -2.567925408e-19 3.878517893e-06 0.0001514043853 9.230486944e-05 0.001691301354 -6.598627874e-20 9.036968384e-06 7.835625819e-05 0.0005201492207 -0.0005375103223 9.303300329e-21 9.962942587e-06 -2.385283678e-05 0.000501328572 0.000580641733 2.254927915e-20 1.626701463e-05 6.484464346e-05 -0.0001298163245 -0.0005946698722 2.410434104e-20 4.904953214e-06 -2.778873757e-05 -0.0002434274699 0.0003523348606 2.190189069e-20 -2.701430725e-08 -3.712036078e-06 -0.0001138959428 -0.0002522660184 1.632883219e-20 1.252059255e-06 3.12153863e-06 3.533562492e-05 -9.420237728e-05 2.206715761e-20 3.180422452e-07 -1.57307216e-06 1.199338878e-06 -4.137003032e-05 3.514411753e-21 1.271888958e-06 -3.219327381e-06 2.626089112e-05 -4.603007034e-05 9.703344115e-21 8.144055974e-07 -1.037009508e-06 1.07489516e-06 -8.728905371e-05 --0.06857434848 -0.0912160987 -0.01862264799 0.004755204567 -0.01141165879 0.005774242537 -0.002372684816 0.0004676564406 -0.00076463649 0.0003029420525 -3.75031923e-05 -0.000123213628 5.656628877e-06 -0.06439119585 0.05192561413 -0.002097311747 -0.0031624689 -0.04710138253 -0.1196646473 0.002999798266 0.003722246203 -0.07490853566 -0.002336912593 -0.002684340248 0.01472596365 0.0004744751732 0.0008950727758 -0.0125846494 0.0003388881802 -5.976974504e-05 0.002554049798 -0.0001584990837 -0.0002749383145 0.0001395023265 4.806554508e-05 -0.0006555144174 -0.002358140949 2.514127397e-05 2.135272885e-05 0.001050005606 -5.845078015e-06 -7.39082713e-05 -0.000225046941 6.000243404e-05 -8.776325006e-06 -4.270877602e-05 9.807310624e-06 -3.559908746e-05 -0.0002074521142 4.137479499e-06 5.449526835e-05 4.63342462e-05 1.311916521e-17 3.726773652e-05 -0.006507789114 0.130570892 0.0267803225 -1.047557923e-17 -7.134673804e-05 -0.007786091873 -0.1209824995 -0.0582286413 -2.205251788e-18 1.126517868e-06 -0.006127758755 -0.01132801934 -0.04258122475 -1.877154067e-18 1.601416211e-08 3.946108168e-05 0.001887968434 -0.02917428598 1.020809721e-18 -2.261444747e-06 0.000468273452 -0.001797851601 0.01893224024 -6.454343847e-20 1.455965878e-07 0.0003405617549 -0.000110686316 -0.01203541033 3.051832363e-19 1.896964064e-08 -0.0005530524587 0.001098127125 0.002495185578 -2.488047311e-20 1.562447607e-08 0.0002702542684 -3.075384764e-05 -0.003857714295 -1.949807758e-10 7.960173594e-21 5.907644061e-06 -2.320429057e-05 0.001658413483 7.444551492e-21 8.843434045e-09 -4.756288528e-05 -0.0001514827055 -0.0002783754075 -1.0043198e-21 8.073793617e-09 -0.0002498788773 1.141782009e-05 -7.198530524e-05 5.955001369e-10 -2.890102403e-20 2.600337419e-05 4.082497686e-05 -1.058210916e-05 3.667412888e-21 -8.383096925e-09 3.174513433e-06 8.661084516e-05 -7.607243243e-05 -0.1082811999 -0.02081564347 -0.00177686416 0.007732181945 -0.000418117818 -0.0003977365066 5.415263961e-05 3.999287841e-05 -0.0001666625009 -3.118726226e-06 1.980996335e-05 -1.12621208e-05 -3.322177155e-05 -0.0005445007416 0.00509634479 -0.03237930267 0.02587426704 0.2787351221 6.948258386e-06 0.08158607279 0.002581245259 6.542666555e-07 -0.02515348411 -6.26655092e-05 1.170444568e-06 -0.004208109883 -0.02874786951 -8.633234066e-08 0.003248361713 0.003125405167 -3.055639054e-09 0.0007327629346 0.005871090021 -2.152404292e-08 0.0006379427287 -0.00012193156 6.978523902e-08 -0.0003408217922 -0.00249450307 -8.810481095e-09 0.000288027622 -9.214830979e-06 1.544880035e-08 -9.555785636e-06 0.0002580734449 2.118805035e-09 0.0001520688791 -1.746648927e-05 1.109121112e-08 -1.488219595e-05 -0.0002092240215 3.609025927e-09 3.711966366e-17 1.104366366e-17 6.255884887e-18 -0.03752372347 -0.06838246849 -1.559214307e-18 9.89729431e-19 7.415945235e-18 0.01431907423 0.04943849858 -6.629894242e-20 1.556292292e-19 -6.712524548e-20 0.002018441791 0.004021765565 4.044546687e-19 -3.115805443e-20 -1.002141225e-19 -0.0006099803151 -0.001061926354 -4.034884958e-22 8.673192395e-22 1.956317813e-21 -3.971092754e-05 0.00014535001 -1.293581352e-21 -3.097959943e-21 1.296223481e-21 -1.675450498e-05 -4.989106922e-05 -3.504707366e-21 -8.865650216e-21 1.289253624e-20 7.635767686e-05 0.0002173132808 1.633439753e-20 8.374963108e-22 2.002915898e-21 -6.706726347e-05 -0.0002130398189 1.673822189e-21 5.488568233e-22 -5.604011808e-22 -9.005128785e-06 -4.339044931e-05 -6.279676359e-23 -1.105041943e-21 -7.851094529e-22 6.549462356e-06 2.229775597e-05 -8.05163144e-22 -3.954184712e-23 3.02323165e-22 -8.816381975e-06 -1.917428111e-05 2.284545742e-21 -1.210721869e-21 1.031029937e-21 -1.283276484e-05 -3.999809148e-05 7.181618432e-22 -1.271878937e-22 2.589797345e-23 -2.538601949e-06 -5.105989528e-06 -0.2240345941 0.1956436186 0.1935237281 0.009819627761 -0.02653076424 -0.01485920955 0.01302989144 0.001063972136 -0.0008150779802 -0.001770431264 0.0004032382332 0.0001930544626 -2.603876342e-05 0.1555999716 0.1041805047 0.1051708499 0.01354888712 0.06468704656 0.1016923407 -0.004705879842 -0.006139839996 0.1141497021 0.002288823535 0.004800156287 -0.03230972005 -0.001142264229 -0.0002528434014 0.03230026921 0.0002019373485 -0.0001755349651 -0.01126799674 0.0001551623697 9.04577663e-05 0.003684523273 0.000625639997 -1.614222706e-06 3.499195138e-05 -6.650265039e-05 -0.0002104598107 -0.000392838204 -4.335178432e-07 -0.0001127412689 -0.0006139459647 1.772672352e-05 -4.186640149e-05 -0.0001775818806 -1.158208113e-05 8.536240305e-05 0.0001680266228 -9.734386258e-06 -2.641031111e-05 -0.0002322500531 -4.62406934e-17 0.01781778079 0.09925487899 0.02419961748 -0.1576283011 -2.521224948e-17 -0.004527415804 0.05266885381 0.1868882152 0.0618816475 -6.891347089e-18 0.0002653347894 0.005633858996 0.006742850493 0.09257374539 3.193047929e-19 8.128601042e-06 0.001404727984 0.001294157539 0.02190632944 -1.18979744e-19 8.554645152e-05 0.001104058475 0.001500494133 -0.0144575164 1.792005782e-19 -1.117145818e-05 -0.0003362915965 0.002326967174 0.01006457635 -8.30428753e-20 5.057477982e-05 0.0009134224633 -0.0002173785542 -0.006632547894 -3.533910303e-20 -1.98090776e-05 -0.0003917168709 -0.0008111894148 0.006334756104 -7.498621656e-20 -4.054352347e-06 -5.230921693e-05 -0.0003794897258 -0.003276040267 5.768116005e-20 4.098622457e-06 4.39671445e-05 0.0002506502229 8.074780095e-05 1.499456121e-20 4.327215956e-06 2.160251767e-06 1.688406393e-05 -9.566140724e-05 6.788000128e-21 -2.011792822e-06 -4.538551711e-05 2.70125569e-05 0.0001069440243 4.885534436e-21 -6.229945749e-07 -1.462259077e-05 -0.0001595243982 -0.0002374837326 -0.1740691178 0.01831031347 0.0001517977974 -0.001818118535 0.009031706446 -0.00415311426 0.002156256082 -0.0006745358349 0.0001170736176 -0.0004428379537 -5.326959235e-05 3.396667829e-05 -6.49981445e-05 0.05093085868 0.1801668029 0.1454053094 0.01062194643 0.03726438529 -0.00271692372 0.003226395246 -0.002945189265 0.0624668824 -0.001630592411 0.002123578337 -0.01049859374 -0.0003754157403 -3.138578928e-05 0.01049665277 -0.0002226723944 4.729355196e-05 -0.001311247516 0.0001253997299 0.0001130375034 -9.66293791e-05 -3.803803764e-05 0.000498756822 0.0006025546361 -1.98924971e-05 -0.000286437435 -0.001512542836 4.624139237e-06 6.455096871e-05 -0.0001890484724 -4.433954242e-05 6.944196018e-06 -9.793544521e-05 -7.76058971e-06 3.655791529e-05 -3.901115788e-05 -3.274066326e-06 -3.581356733e-05 -0.0002353523126 1.015595059e-16 -0.0001758610869 0.005121150932 -0.02800033543 0.1191678158 3.611137033e-17 -0.0002953299404 0.1091779138 0.09570962735 0.01258309895 1.478050128e-19 2.556448462e-06 -0.001794380866 0.008962626359 0.03735357691 1.278087134e-19 8.162192771e-10 -0.001814949188 -0.001494466451 0.02343274011 -9.747732983e-19 1.180068397e-06 0.0001886433654 0.001422455865 -0.01486692819 -2.025250988e-19 -1.272102019e-07 -0.0002694704917 0.0007300750181 0.009649008593 -2.171234013e-19 -1.347171913e-08 0.0004375254341 -0.001502523348 -0.002863916157 2.785973029e-20 -1.456832465e-08 -0.0002138379489 -0.001322672039 0.002649518076 7.72524908e-11 3.485822421e-20 -4.674206183e-06 -0.0004306697383 -0.001480935413 2.301304971e-20 -1.292320142e-08 3.762906719e-05 8.661493295e-05 -9.961072808e-05 2.618154603e-20 -7.850726009e-09 0.0001994808249 -9.033441415e-06 -0.0001432698723 2.916104483e-10 3.496680113e-20 -2.057579563e-05 -2.494447944e-05 -0.0001734630522 5.925627437e-21 3.041701381e-10 -2.512652033e-06 -6.573855801e-05 -0.0002318759249 -0.08453014315 0.01049610249 -0.001670173421 0.002775450943 -0.0008207463629 -4.62487533e-05 5.828347323e-05 2.145746376e-05 -8.373841966e-05 -1.060315761e-05 1.257023959e-05 -1.460199219e-05 -1.786276606e-05 0.0004093209756 -0.008817988056 -0.007974464496 0.04811399499 0.02084135649 -5.221639985e-06 0.006994073189 -0.006133726464 -4.933973651e-07 0.0004879231458 0.0001863612928 -8.805644464e-07 -0.002425990215 -0.0003627101332 6.503419044e-08 0.0001391787745 0.0002317983634 2.261504223e-09 -0.0001140484465 0.0007742462957 1.61980615e-08 0.0002385988798 -0.0003322568279 -5.253895615e-08 -0.0002442549731 1.62009866e-06 6.635955565e-09 7.449691047e-05 -6.003520097e-05 -1.163112863e-08 -3.278366552e-05 5.76310994e-05 -1.593743131e-09 1.891173557e-05 -4.198506325e-05 -8.351962705e-09 -2.667114284e-05 -3.387164951e-06 -2.718876096e-09 -2.027764694e-17 -3.93392055e-18 1.000858195e-17 -0.03246216219 -0.04047440903 -8.839816124e-19 5.990624398e-18 -1.719094242e-18 0.006008973614 0.03526580573 2.730562709e-20 -5.584388656e-19 1.599328485e-19 0.000223993157 0.005557402231 -5.722119596e-19 4.797716438e-20 6.465744994e-22 -0.0007179632947 -0.001141326748 2.412978499e-21 -2.172649696e-20 5.119720626e-21 -2.218001117e-06 0.0003117015545 1.741555956e-21 2.369726761e-21 2.603242588e-21 -2.981530632e-05 -2.330701503e-05 -2.078729065e-21 -2.238042009e-20 1.697014215e-20 2.385494747e-05 0.0001384945169 -8.448309963e-21 3.536010953e-21 -3.57156335e-21 -8.239766263e-05 -0.0001169143024 9.017327596e-22 3.697656868e-21 -1.383562687e-22 -8.960098281e-06 -1.173591007e-05 -5.737944124e-22 1.911056443e-21 -2.056115625e-21 4.458369162e-06 2.366790845e-05 -8.374075705e-23 -1.094384983e-22 -2.496274684e-21 -1.013889616e-05 -1.75299473e-05 4.466984976e-21 -4.956447067e-22 7.244197779e-22 -1.395452979e-05 -2.151776979e-05 -5.303055495e-23 -5.376342827e-22 5.966588655e-22 -1.421706037e-06 -9.742918481e-07 -0.08408005694 -0.002253423474 0.005070375992 2.343437215e-05 -0.00132819167 -0.0004420258949 0.0008239900039 -0.0001469441522 -0.0002563304572 -0.0002021262081 -3.649823212e-05 -1.967680532e-05 -2.776042917e-05 0.06143033664 0.005800733543 0.07989360224 -0.01670494883 0.003611891264 -0.03333696846 -0.001604490239 -0.0003427434747 0.008751106888 9.965857033e-05 0.0002682563593 -0.002629847668 -6.366100103e-05 0.000207662453 0.00268038342 1.128504344e-05 0.0001536960634 -0.0001822517948 8.666843973e-06 -6.461333466e-05 4.421346589e-05 3.50423578e-05 -8.429269529e-08 -0.0005486605018 -3.712577971e-06 -0.0001687101555 -0.0002670592058 -2.395938161e-08 -1.414561312e-05 -0.0002416443766 9.936510055e-07 -2.661581982e-06 -8.42010749e-05 -6.457907614e-07 2.497074184e-06 -7.35894301e-05 -5.430626818e-07 -7.646310625e-06 -9.815148541e-05 9.4959393e-18 0.006575779368 0.05673621505 0.001333374299 0.009137384208 -2.661928123e-17 -0.004430306234 -0.0263295097 0.01044522068 -0.01447150966 1.452145412e-23 0.0001574379988 0.002131788782 0.0003765538898 0.00733697319 -1.407136685e-18 6.466753808e-06 0.0001407350982 7.26320555e-05 0.00133161796 5.785349284e-19 5.632424455e-06 6.165798696e-05 0.0008529864281 -0.000307694665 -4.287384113e-20 1.939399592e-06 -1.876313775e-05 0.0004205023021 0.0007457265377 -5.210019391e-20 -2.570865484e-07 5.104067292e-05 -0.00050607131 -0.0004560694465 4.169486897e-22 -5.792591746e-06 -2.185816027e-05 -0.0006014773045 0.0002510763989 3.213858444e-20 -1.969551964e-07 -2.920745644e-06 -0.0003047772045 -0.0002068527473 8.70399464e-21 2.859131142e-07 2.45685135e-06 -1.657628617e-05 -0.0001434710534 -7.11172086e-21 2.436350962e-07 -5.790829712e-07 9.454176877e-07 -8.658712507e-05 7.801332087e-21 -7.193096584e-09 -2.532319895e-06 -2.631724932e-05 -3.816833414e-05 3.309518056e-20 8.758573298e-09 -8.1548416e-07 -1.069197923e-05 -0.0001461043789 -0.2246958858 0.1053577669 0.01186303561 -0.005144933743 0.01779582619 -0.008301271879 0.003844790075 -0.001107875381 0.0007224425806 -0.0006842756524 -4.632549571e-05 0.0001312616168 -6.378561748e-05 0.1004625471 0.2845975243 0.11674096 0.01309796249 0.07346406158 0.09606905872 0.001492292625 -0.005805886485 0.1173642108 -0.0002162464679 0.004186965275 -0.02131901468 -0.0007400666087 -0.000567487072 0.02036964236 -0.0004710237126 9.321143049e-05 -0.003197776837 0.0002472302769 0.0005033329174 -0.0006576364319 -7.496552236e-05 0.001053508495 0.002332405323 -3.92139113e-05 -0.0002931929802 -0.00235312344 9.117895334e-06 0.0001389389421 -7.915357808e-05 -8.930207143e-05 1.368844355e-05 -7.830073171e-05 -1.529605017e-05 8.052110036e-05 0.0001127006683 -6.452806561e-06 -6.655755157e-05 -0.0002845035523 -6.960130797e-17 4.378379681e-05 0.01018826223 -0.0474430534 0.06992581824 -2.047262749e-17 -0.0001625480477 0.1295602579 0.1887012975 0.05609188335 -1.428128224e-18 2.206495262e-06 0.002182230283 0.01766911325 0.06999899099 -6.974364791e-20 -5.133135515e-10 -0.002032544498 -0.002944805895 0.04555390224 7.603654971e-19 2.996023214e-06 -5.255070652e-05 0.002804153173 -0.02950579312 -3.700102165e-19 -2.085089332e-07 -0.0005311504475 0.001010618601 0.01870181531 3.718986239e-19 -2.293120796e-08 0.0008626818445 -0.002073202736 -0.005273322783 7.711153146e-20 -2.374529287e-08 -0.0004215259379 -0.001399024257 0.005532453243 3.016214862e-10 -8.925386685e-20 -9.214531069e-06 -0.0004303235228 -0.002800507443 -4.068741387e-21 -9.552013692e-09 7.41903673e-05 0.0002592565586 1.514345431e-05 -2.793696044e-20 -7.252431799e-09 0.0003947224626 -1.780330741e-05 -0.0001100454904 -1.181889301e-09 -1.705067131e-20 -4.055751682e-05 -2.992111093e-05 -0.0002059470117 -1.911226897e-21 1.427557531e-08 -4.95023335e-06 -0.0001294553354 -0.0002054021337 -0.1594413204 0.02356952288 -0.003190208968 0.004775249754 -0.001617809155 -4.997081061e-05 0.000112192263 3.909641606e-05 -0.0001514092558 -2.115166873e-05 2.330188994e-05 -2.836172476e-05 -3.255456504e-05 0.0008209116124 -0.03555628463 0.0002357444003 0.1036299779 0.001182985152 -3.867829329e-06 -0.000377217276 -0.006857262538 -5.54157798e-08 0.0002397536554 0.004265583511 -3.307940068e-07 -0.001986878991 -0.0001342068592 -2.262708086e-08 2.309892876e-05 2.49418683e-05 -1.060403644e-09 0.0004973970251 8.569047938e-05 -1.608468006e-08 -2.007214182e-06 -0.0002177875977 -1.222415537e-08 -0.0001828170023 -8.343223886e-06 -3.795727641e-09 4.800274164e-06 1.426989623e-07 -2.4144994e-09 1.412612314e-05 3.215752048e-06 -5.411429861e-09 -5.53912647e-07 -5.791425811e-05 -3.098827539e-09 -3.77983941e-05 -2.073352738e-07 -2.290438821e-09 -6.486592235e-17 7.636571965e-18 2.311538183e-18 -0.03861992063 -0.09758013462 7.21456163e-19 -9.446111559e-19 3.590990297e-18 0.01654178108 0.06011260366 3.337875753e-19 8.05865416e-20 1.229996555e-19 0.0002714815141 0.01078376382 -4.099921299e-19 -1.546711076e-19 5.8746572e-20 -0.001033013709 -0.002552133123 1.020133563e-20 3.752369012e-20 2.576657089e-20 -6.83560949e-08 0.000615832056 -1.04321473e-21 -2.922143173e-21 -4.09065357e-21 -5.795049832e-05 -4.24036256e-05 7.242560489e-21 -4.54903421e-21 7.674022638e-21 5.704060268e-05 0.000239748926 6.616916612e-21 1.22950301e-20 -1.893394246e-21 -0.0001509267775 -0.0002222874106 3.265216199e-22 2.38323359e-21 -1.247394742e-21 -1.621067906e-05 -1.997671341e-05 3.557528507e-22 2.516336865e-22 -1.055791136e-21 1.024493079e-05 4.359767513e-05 1.655192291e-21 -2.070360238e-21 9.045896024e-21 -1.622066108e-05 -3.678893504e-05 2.925861802e-21 8.778600862e-22 9.514772803e-22 -2.476271988e-05 -4.133164645e-05 3.513614279e-22 5.783929122e-23 -5.724061183e-22 -1.130363246e-06 -2.885296442e-06 -0.07614740613 -0.01263065168 -0.004732153038 -0.0001089552317 -7.551387115e-05 0.0002128419036 0.0001190822088 -0.000179441317 -0.0001949670829 -0.0001047556525 -5.068142775e-05 -2.670771097e-05 -2.4778873e-05 0.0001031355424 0.00027716356 0.1145370565 -0.02023922085 0.0001979357604 -0.01734634774 -0.001221953347 -1.914500136e-05 -0.0008003606906 -2.693183733e-06 1.498017702e-05 -0.0001561678435 -3.33640887e-06 0.000145946678 0.0004168581692 6.35010612e-07 3.806707663e-05 0.0004525441566 4.851042447e-07 -0.0001793437163 -3.40444403e-05 1.434263833e-06 -4.349041177e-10 -0.00048847785 -2.066937099e-07 -0.0001835102755 -0.0002082599925 -1.13193098e-09 -2.200092977e-05 -0.0001728325959 5.758044005e-08 -5.521595782e-06 -6.075794851e-05 -3.552988251e-08 -1.436413308e-05 -6.256667351e-05 -2.999931842e-08 -2.029755754e-05 -6.509085304e-05 5.741963251e-17 -0.01245264422 0.01835982897 6.520617235e-06 0.04732174088 4.102850826e-18 -0.004901119943 -0.0258084454 0.0005826024477 -0.001660602165 6.433272253e-20 0.0001182377602 0.001622944785 2.101270459e-05 0.0006283588064 3.982511426e-19 4.709008827e-06 3.535982088e-05 4.055945085e-06 7.535559805e-05 1.007988499e-19 -1.567946623e-06 3.44528379e-06 0.0006125582695 0.0001295656395 2.879398939e-20 -7.403933459e-06 -1.040169411e-06 5.661275332e-05 0.0004093970989 1.346198865e-20 -1.66390482e-05 2.870962084e-06 -0.0005425452171 -1.03685069e-05 -2.006323304e-20 -1.261285845e-05 -1.210424511e-06 -0.0005555232752 -1.929430054e-05 3.330669093e-20 -2.347023552e-07 -1.629114455e-07 -0.0002909615295 -2.21849427e-05 1.356452351e-20 -8.743968224e-07 1.379629672e-07 -5.743257646e-05 -9.630481859e-05 9.77785362e-21 5.172285942e-09 8.06365619e-07 5.494904328e-08 -7.363305977e-05 7.43127581e-21 -1.283821919e-06 -1.402946903e-07 -6.128732569e-05 -4.612408346e-06 -2.474097479e-20 -8.042842058e-07 -4.489062193e-08 -1.528727942e-05 -0.0001067309112 -0.3673386338 0.2314140214 0.03442418421 -0.01160204821 0.03508483064 -0.01681797871 0.007487102887 -0.001940971808 0.001726239089 -0.00121295683 -2.399662533e-05 0.0002978992511 -9.044267344e-05 0.1980329886 0.3262272813 0.1572580241 0.02057646569 0.1448280673 0.2475703089 -0.00102203472 -0.01144561461 0.2310334281 0.00205386585 0.008254114221 -0.04308787955 -0.001458959998 -0.001650972143 0.03968078905 -0.0009655434604 0.0001837656812 -0.006808880939 0.0004873808952 0.0009444154546 -0.001013806826 -0.0001477895737 0.002056922906 0.005462468085 -7.730617437e-05 -0.0004110662872 -0.00417942809 1.797429531e-05 0.0002587056059 0.0001202662165 -0.0001788029961 2.698558513e-05 -6.127862735e-05 -3.015511441e-05 0.0001426836055 0.0003576261103 -1.272142403e-05 -0.0001430565183 -0.0004245455603 -7.622852475e-17 2.085442696e-05 0.02006083432 -0.1938695805 0.06610595854 -5.73838577e-17 -0.0001445577405 0.1799951496 0.3720052634 0.1328872603 -4.306049764e-18 1.803965111e-06 0.009039525499 0.03483262491 0.1356941585 1.333081688e-18 -1.672626734e-08 -0.002740926733 -0.005805341077 0.08977299626 -1.432069759e-18 6.247585502e-06 -0.000538990583 0.005528118938 -0.05818279741 -1.575165845e-18 -4.229909879e-07 -0.001047132741 0.00145407474 0.03691386798 -5.685836019e-19 -4.948218978e-08 0.001700647995 -0.003855605434 -0.00950845083 3.256022721e-19 -4.721275953e-08 -0.0008309955433 -0.001828588652 0.01121792376 5.962203218e-10 1.85831323e-19 -1.816541365e-05 -0.0005486821054 -0.005383575257 -4.51991878e-21 -2.155521837e-08 0.0001462557415 0.0004963351863 0.0002990214422 -2.740480769e-20 -1.772783892e-08 0.0007749584699 -3.510094649e-05 -7.413845685e-05 -2.167423622e-09 1.361330117e-20 -7.995562747e-05 -8.066836324e-05 -0.000263115953 -9.794449205e-21 2.737196211e-08 -9.759637867e-06 -0.0002588275093 -0.0001967792703 diff --git a/tests/09_DeePKS/100_NO_KP_deepks_UT/gvx_ref.dat b/tests/09_DeePKS/100_NO_KP_deepks_UT/gvx_ref.dat deleted file mode 100644 index 5eedd5385f..0000000000 --- a/tests/09_DeePKS/100_NO_KP_deepks_UT/gvx_ref.dat +++ /dev/null @@ -1,27 +0,0 @@ -0.07177091081 -0.01648409288 -0.001149302688 0.00545263498 -0.0002274718938 -0.0002901754975 3.428506344e-05 2.748893714e-05 -0.0001151255588 -1.246489503e-06 1.34212332e-05 -6.88102626e-06 -2.283100556e-05 -0.0003587265301 -0.01730556984 -0.002314840813 0.0163450745 0.2021957093 -3.522953336e-07 0.05851691511 0.003852529061 -2.660126387e-07 -0.01917529931 0.0005008886397 -3.000196795e-07 -0.002256670463 -0.02191389834 5.732847909e-08 0.002418460425 0.002268275393 2.162093133e-09 0.0007686920179 0.004053540181 2.205418951e-08 0.0003671317068 3.104170875e-05 -2.353494056e-08 -0.0001582441829 -0.001921699704 6.957556019e-09 0.0001825511491 2.4139117e-05 -5.427999818e-09 1.751777823e-05 0.000162896497 3.046293762e-09 0.0001083156486 -5.491243284e-06 -2.880971389e-09 -4.646297653e-06 -0.0001588483509 1.701407574e-11 1.386603625e-17 -1.752706848e-17 4.009100862e-18 -0.007418988334 -0.06375627095 1.515729863e-19 -5.655888119e-19 -2.600859913e-18 0.01442182502 0.02869168364 -3.506476751e-20 -1.307608281e-19 -1.893158525e-20 0.001503093676 0.002393368562 -2.477738066e-19 -2.589996477e-20 7.041806119e-19 -0.0001159831465 -0.0009365207586 -9.610686932e-21 7.009229188e-22 -6.200660943e-21 -2.91709923e-05 7.638310337e-05 -5.327130238e-21 2.474367707e-21 -2.490818574e-20 -8.942721117e-06 -3.512124911e-05 -1.698742337e-20 1.953668344e-20 5.276627493e-20 6.690113037e-05 0.0001344715399 4.399394685e-20 1.246001963e-21 -4.193084362e-20 -3.494900681e-05 -0.0001526560091 8.316384928e-21 -3.505707203e-21 4.158965836e-22 -5.059899115e-06 -3.169903552e-05 -1.976126113e-20 4.288863383e-21 -5.104006802e-21 5.839446663e-06 1.271777788e-05 3.559519484e-21 -3.861816241e-22 -3.251586991e-21 -3.01774036e-06 -1.49505324e-05 1.75519897e-22 9.955412147e-22 3.381416341e-21 -6.539723329e-06 -2.905733806e-05 2.370051663e-21 -9.29487735e-22 -1.86768608e-22 -6.448344742e-07 -4.780999943e-06 -0.09189457401 0.1570808401 0.1478958732 0.007566808673 -0.01960653445 -0.01125982658 0.009497466077 0.0009774984873 -0.0003980912267 -0.001201412974 0.0003522442904 0.0001709370569 6.300221553e-06 0.02511297233 0.07664927934 0.04633912421 0.02263144264 0.04758853259 0.110114076 -0.0022199849 -0.00451652447 0.08319456158 0.001703646418 0.003531475322 -0.0232892423 -0.0008402828546 -0.0004351942378 0.02319521696 0.000148561422 -0.0003630848749 -0.008625711426 0.0001141457614 4.482216826e-05 0.002959192772 0.0004597006029 -1.182187645e-06 0.0005469566346 -4.892079347e-05 -3.843845863e-05 -1.081158122e-05 -3.187045668e-07 -8.650317291e-05 -0.0002439246649 1.304433068e-05 -3.492285045e-05 -5.62612115e-05 -8.519199958e-06 5.592369803e-05 0.000211970777 -7.160465711e-06 -2.411111573e-05 -7.826465711e-05 -2.21613839e-17 -0.005060125531 8.420966303e-05 0.0178266173 -0.08971845186 3.953713597e-17 -0.0002492188938 0.06592661088 0.1374956195 0.05810862173 -1.887061683e-18 5.319360874e-05 0.00241454901 0.004960335257 0.06675986315 2.154647044e-18 -2.019116266e-07 0.0009855098531 0.0009525584147 0.01605245585 9.02226585e-19 6.013331435e-05 0.0008121930907 0.0003191654023 -0.01089906896 2.457065124e-20 -1.802393218e-05 -0.0002473712299 0.001282778943 0.007393211251 3.902535164e-19 2.943743685e-05 0.0006719810354 0.000229030567 -0.004696022132 2.933440341e-20 -1.651400272e-05 -0.0002881460193 -0.0001149683431 0.004814304228 1.831441987e-19 -3.200116811e-06 -3.848033959e-05 -3.875518117e-05 -0.00234673765 1.539804449e-20 2.251537729e-06 3.234569967e-05 0.0001878098746 0.0002242611638 5.111316017e-21 3.174145659e-06 3.230050829e-06 1.2422688e-05 5.382834724e-06 -9.317543565e-22 -2.622188859e-06 -3.338509565e-05 1.966664587e-05 0.0001496236178 -8.280357362e-21 -1.129774359e-06 -1.075586261e-05 -0.0001240551505 -3.915310243e-05 -0.02782234614 0.05805887082 0.004983501929 -0.001658645674 0.004897842352 -0.002151614528 0.0008690254353 -0.0002861643611 0.0003459066075 -0.0001410675277 -9.053262046e-06 5.552734378e-05 3.506685037e-06 0.02767599396 -0.06049704799 0.04440941191 0.004014563979 0.02023996659 0.07418564421 -0.0004942462049 -0.001599818765 0.0291966991 0.0005467932574 0.001153488696 -0.005762263648 -0.0002039196352 -0.0003517144622 0.00581418828 -0.0001597713933 2.568260062e-05 -0.0008803409048 6.811892576e-05 3.227661342e-05 -0.0004028760661 -2.06598814e-05 0.0002199358326 0.0009823348305 -1.080510811e-05 -8.823100204e-05 -0.0004067379035 2.512150869e-06 2.545955637e-05 3.127596051e-05 -2.773693195e-05 3.771760637e-06 -1.408074111e-05 -4.215043846e-06 -1.925297876e-06 0.0001043075027 -1.778152489e-06 -3.241972371e-05 -2.458882959e-05 2.846065666e-17 0.0001844506388 0.002796525688 -0.1008527703 0.04171303856 -3.165454299e-17 6.613629481e-05 0.01765611486 0.05198592833 0.03629530823 4.181747477e-18 5.574064746e-09 0.001756903261 0.004868387722 0.01864097785 2.360839531e-19 3.500180295e-09 -0.0002470383497 -0.0008118293735 0.01223010085 8.565915564e-19 1.006644642e-06 -0.0001694919284 0.0007726242344 -0.007867996639 -5.924803745e-20 -5.62729798e-08 -0.0001463532936 6.980927941e-05 0.005045785721 2.089161165e-19 -1.911327024e-08 0.0002376760819 -0.0006344821708 -0.001241729787 3.687964843e-20 -1.010497628e-08 -0.000116151296 -0.0002353902593 0.001740632436 1.699532819e-10 1.696397097e-21 -2.538962719e-06 -8.707844612e-05 -0.0006902433902 -6.08380009e-21 1.144642961e-09 2.044089496e-05 4.663378913e-05 6.886381849e-05 3.931422432e-21 -1.875675537e-09 0.0001067326699 -4.904230997e-06 1.106857968e-05 -1.121913288e-09 -2.049825803e-20 -1.117587487e-05 -5.726963242e-05 3.04467672e-05 1.282840041e-21 1.040345239e-08 -1.364342847e-06 -3.862592172e-05 -4.105260316e-06 -0.004248521904 -0.02072889773 0.0001410175273 0.002730957002 0.000351628688 -0.000212335021 -9.793873742e-06 8.837755527e-06 -4.105936043e-05 5.959041899e-06 2.93219139e-06 3.883758805e-06 -7.313000933e-06 0.0004753246495 0.001704816594 -0.005606462664 -0.02326509013 0.1614650775 4.764030253e-07 0.04758938483 0.00388153523 3.513700228e-07 -0.01435827784 -0.00192485334 3.986630776e-07 -0.00172091703 -0.0166135421 -7.576369318e-08 0.001875072129 0.001804085189 -2.950358833e-09 0.0002474914838 0.00336890092 -2.93139944e-08 0.0003894799903 -9.731033783e-06 3.121320497e-08 -0.0001309323672 -0.00144322875 -9.20612325e-09 0.0001697512797 -9.916210998e-06 7.196222089e-09 -1.001515627e-05 0.0001478501965 -4.040393663e-09 9.081018269e-05 8.703676631e-06 3.81877958e-09 5.22109698e-06 -0.000121224524 -2.406230379e-11 -2.185217868e-17 -3.934125241e-18 1.592749104e-17 0.0008871101307 -0.01229345531 -2.13848137e-18 1.757945696e-18 7.136552301e-18 0.004410312342 0.004417856373 -3.456122569e-20 -4.086133696e-19 4.421337218e-20 0.001085536623 -0.001642236061 6.717829462e-19 -1.53374955e-20 -3.941717846e-20 0.0001560704046 0.0001908619059 -1.813915723e-21 1.671489924e-21 -1.353314081e-20 -2.29864904e-05 -0.0001418807035 -2.389036335e-20 -4.001724531e-21 -1.229792135e-20 1.180235041e-05 -1.360189227e-05 -3.868245293e-20 6.499833805e-21 1.915456194e-20 2.961458939e-05 3.171894455e-05 3.08544833e-20 3.89662251e-22 7.908727998e-21 1.973414713e-05 -4.513390925e-05 1.62323958e-21 -5.008059381e-21 3.633455027e-22 1.083703932e-06 -1.818334302e-05 7.924438964e-21 -1.216350356e-21 1.227793266e-21 7.44241852e-07 -3.786460191e-06 4.621647158e-21 -7.467671618e-22 -7.612129376e-21 2.078415758e-06 1.154676597e-06 5.884103301e-22 6.595993418e-21 4.566417607e-21 2.42725507e-06 -8.796092382e-06 -4.591113301e-22 8.235917119e-23 1.355786263e-22 -5.16568557e-07 -2.442545387e-06 -0.06585008519 0.1244204128 0.1165024039 0.005782632491 -0.01535622586 -0.00881350413 0.00747712168 0.0007688605573 -0.0003104210826 -0.0009413186462 0.0002768722601 0.0001346284578 5.67912916e-06 0.04760778943 0.06025893859 0.008066972684 0.02060323628 0.03744062156 0.07719219544 -0.001737949762 -0.003554073126 0.06725310378 0.001332253006 0.002778587375 -0.01869425965 -0.0006609929913 -0.0003131582989 0.0185048018 0.000116896917 -0.0002232712493 -0.006840591468 8.981739606e-05 0.0001040881482 0.002270692301 0.0003620817956 -9.301698948e-07 0.0004298060349 -3.849467299e-05 -4.936273647e-06 -1.603097803e-05 -2.507394618e-07 -5.948642141e-05 -0.0001998614143 1.026324813e-05 -2.447272101e-05 -4.768037265e-05 -6.703801191e-06 5.136905132e-05 0.0001604860997 -5.634460394e-06 -1.037383787e-05 -6.834777967e-05 -2.057099515e-18 0.006230318719 0.01635488319 0.01394077697 -0.08986760888 -6.996269461e-18 0.000489420869 0.05186288231 0.1081802233 0.03799744433 -4.245532489e-18 4.735961241e-05 0.001906167616 0.003903107336 0.05341124626 5.069750408e-19 2.287608836e-07 0.0007887836609 0.0007491276196 0.01268003786 -2.412187848e-19 4.883649296e-05 0.0006390902448 0.0002956419589 -0.008429305229 1.026310095e-20 -8.53454133e-06 -0.0001946560399 0.001131567598 0.005691953979 1.378308576e-19 3.138997747e-05 0.0005287583168 0.0002402962736 -0.003746739349 6.989425995e-21 -8.08771484e-06 -0.0002267365921 -5.627270354e-05 0.003757229302 3.029472626e-20 -2.372770326e-06 -3.027918537e-05 -8.502755716e-06 -0.001853057706 -3.028464164e-21 2.320438747e-06 2.545129412e-05 0.0001660112999 0.0001560268214 -3.589134059e-21 2.50353825e-06 1.71258199e-06 9.775531741e-06 4.881224736e-06 2.954934413e-21 -1.26093424e-06 -2.627046106e-05 3.68726221e-05 9.756479902e-05 7.881284526e-21 -3.970710485e-07 -8.46369667e-06 -8.993947619e-05 -3.793076615e-05 --0.07992156578 -0.03669836403 -0.009989252922 0.002844202065 -0.007654330768 0.003923432166 -0.001744304106 0.0003543477457 -0.0003690133466 0.0002536869345 -1.501644091e-05 -6.373798256e-05 2.353118207e-05 -0.04316848685 -0.09548774553 -0.000119993447 -0.002385079111 -0.03157025166 -0.03793836726 0.0008965762027 0.002495341584 -0.05263155405 -0.000839264802 -0.001799213284 0.00983957055 0.0003180681907 0.0003947677539 -0.008339041607 0.0002005348427 -4.005961576e-05 0.001657732029 -0.000106250349 -0.0002697311399 -4.333525014e-05 3.222419539e-05 -0.0004946556114 -0.001230576758 1.68535157e-05 2.688021135e-05 0.0009360030045 -3.918394186e-06 -6.086797737e-05 -8.075361987e-05 3.756197208e-05 -5.883098846e-06 -1.284633171e-05 6.574476266e-06 -4.379533012e-05 -6.908905228e-05 2.773507862e-06 2.462358965e-05 8.64713929e-05 -2.397839799e-17 0.0001478810606 -0.004362808186 0.01041539913 0.02705480777 -1.190098301e-18 5.498124381e-05 -0.0270346616 -0.08108790004 -0.02091143948 -2.77513506e-18 2.373239442e-08 -0.002720508539 -0.007593607542 -0.0293005254 4.906801642e-19 1.177134893e-08 0.0004003381818 0.00126619554 -0.01980404304 -1.410758052e-18 -1.342189895e-06 0.0001496055784 -0.001205126307 0.01288433985 7.825456786e-20 9.71987448e-08 0.0002282791855 -0.0002900733639 -0.008144378896 2.92186585e-20 2.604616832e-09 -0.0003707242595 0.0007136564719 0.001928369364 -2.1098695e-21 7.744990976e-09 0.0001811691738 0.0001937632106 -0.00238936029 -6.503444103e-11 5.737027353e-20 3.960208e-06 4.08240068e-05 0.001188025965 1.414433374e-21 8.481330183e-09 -3.188333635e-05 -0.000121860599 -0.0001085436937 -9.118632966e-21 5.132651015e-09 -0.0001693824814 7.649874226e-06 -1.499517885e-06 -1.837004241e-10 1.160393709e-20 1.743176001e-05 -1.196627605e-05 7.419940926e-05 -1.428397802e-21 -8.236505237e-10 2.1280374e-06 5.543589956e-05 1.124785157e-05 --0.06625822774 -0.01103529126 0.001338868865 -0.001833176938 0.0006952350806 8.508939923e-06 -4.736576045e-05 -1.579423302e-05 6.076961116e-05 9.168793254e-06 -9.549186997e-06 1.205564724e-05 1.315411577e-05 -0.0003572095243 0.02100051336 -0.005123092893 -0.04730062126 0.01204983975 -3.600768006e-07 0.004620156198 0.001299654221 -2.648609181e-07 0.0001242261095 -0.003060077672 -3.000528436e-07 -2.593317078e-05 -0.0001251193865 5.719477193e-08 6.915342085e-05 0.0001252451675 2.192565163e-09 -0.0004410679889 0.0004165681793 2.202468236e-08 0.0001495278307 -4.399993619e-05 -2.349583887e-08 -1.543650406e-05 7.216635285e-06 6.943030498e-09 4.264620804e-05 -3.735376975e-05 -5.418699719e-09 -3.085672474e-05 3.336185062e-05 3.039974073e-09 1.214575858e-05 1.70681027e-05 -2.874734512e-09 1.159314993e-05 -1.947132754e-06 1.835065396e-11 2.346717884e-17 -7.245181656e-18 2.861519671e-18 0.008611859859 0.04753636356 -2.950387011e-18 6.031005558e-18 -2.835397703e-18 -0.008587120673 -0.02287357465 6.653288068e-20 1.553077e-19 5.854669285e-20 -6.314469782e-05 -0.004580478798 7.434724575e-21 -4.472243295e-21 3.805702492e-20 0.0003236278732 0.001191936591 2.023986004e-21 2.897125923e-20 -1.272536679e-20 -1.325219719e-06 -0.0002650948591 1.115522271e-21 1.27406151e-20 -1.457625078e-21 2.464554362e-05 1.710891704e-05 -7.488653547e-21 -1.201337103e-20 -2.712312529e-20 -2.766610641e-05 -9.256574212e-05 2.506226785e-20 1.585413353e-20 -8.502212657e-22 6.124225242e-05 9.295472158e-05 2.063666947e-21 8.1828999e-21 -3.038479709e-21 6.509656258e-06 7.591254463e-06 5.18810778e-21 2.962927295e-21 -3.070066588e-21 -4.861191922e-06 -1.777397134e-05 7.36744854e-22 -2.875046201e-21 -8.579805543e-21 5.785728371e-06 1.651306911e-05 6.335532473e-23 5.263616087e-22 -6.219032785e-21 9.777913502e-06 1.742093315e-05 5.110912358e-23 -3.529122532e-21 1.619505785e-21 -4.051781445e-08 1.543607855e-06 --0.004525651757 0.008005357363 0.006668863914 9.565586508e-05 -0.0007678279309 -0.0004327048543 0.0004225706349 4.242469513e-05 -1.388281232e-05 -4.741483974e-05 1.508748838e-05 7.675686702e-06 1.224370202e-06 0.03803632893 0.003392592011 -0.0357039119 0.004703757958 0.002093557176 -0.007768942692 -8.573400318e-05 -0.0001983943753 0.006025297188 6.383604589e-05 0.0001552811557 -0.001515365607 -3.701314331e-05 2.018320942e-05 0.001352637021 6.528797492e-06 6.701665941e-05 -0.0004499905761 5.015997126e-06 9.343239224e-05 5.27771634e-05 2.067346585e-05 -5.197378107e-08 2.326440128e-05 -2.149505807e-06 3.194976829e-05 -1.064273859e-05 -1.402235996e-08 7.603223766e-06 -2.125014741e-05 5.736208034e-07 2.459474616e-06 -7.006790572e-06 -3.742150093e-07 1.22432666e-05 9.23558005e-07 -3.145970845e-07 1.03674238e-05 -1.243619698e-05 -1.727774309e-17 0.01335071823 0.02153196424 0.0008224084458 -0.02956166296 -2.37269029e-18 0.000900167665 0.002878663492 0.006046765338 -0.007742224178 -2.457523227e-19 9.651666039e-06 0.0001143491522 0.0002179808161 0.004084255633 -7.326092827e-19 5.063274019e-07 6.099084693e-05 4.2043348e-05 0.000770071531 -5.341180994e-19 4.661841829e-06 3.568936018e-05 7.317085116e-05 -0.0002873632905 1.160638365e-20 6.715442467e-06 -1.086677972e-05 0.0002187436262 0.0001578760705 3.568139733e-20 1.222816836e-05 2.95296583e-05 8.994076878e-05 -0.0002752390509 -2.400491414e-20 5.796310636e-06 -1.266026504e-05 4.041028685e-05 0.000170139368 -1.888003056e-20 5.253794656e-08 -1.690826342e-06 2.752675257e-05 -0.0001118207186 2.747391006e-21 8.283717737e-07 1.421587237e-06 3.247381523e-05 -1.731512353e-05 3.506438448e-21 1.473073463e-07 -9.596137932e-07 5.456545524e-07 1.098280145e-06 -5.494181455e-22 9.513349589e-07 -1.466674095e-06 2.930008486e-05 -2.024680007e-05 5.735833035e-21 6.042188581e-07 -4.725285633e-07 4.747682965e-06 -1.11867492e-05 --0.1340737588 -0.1069194293 -0.018268438 0.005445593727 -0.0150794148 0.007370541692 -0.003188687269 0.0007576848098 -0.0008369509576 0.0004784952161 -1.08762992e-05 -0.0001403458073 2.775963537e-05 -0.08510458194 -0.06630193684 -0.04464827782 -0.007192710738 -0.062244457 -0.1247106653 0.001686759168 0.004919056126 -0.09918694358 -0.001663256276 -0.00354742749 0.01885175149 0.0006270288246 0.0008770539314 -0.0169042103 0.0004266049545 -7.898145386e-05 0.00308518033 -0.0002094635345 -0.0003908297387 0.00034675695 6.351773224e-05 -0.0008777404595 -0.002619684878 3.322456945e-05 0.0001241312073 0.001651615153 -7.724756293e-06 -0.0001064031432 -0.000138646592 7.771224097e-05 -1.159791083e-05 -2.958409019e-06 1.296020199e-05 -5.626953218e-05 -0.0001963278333 5.467521175e-06 6.521054288e-05 0.0001395576118 2.392031278e-17 1.163870548e-05 -0.008614086328 0.114899738 -0.005831542679 2.370397638e-18 6.772983836e-06 -0.05362247827 -0.1598800941 -0.06413278656 4.350983443e-18 2.593060549e-08 -0.005375955608 -0.01497026541 -0.05759414392 -1.524791558e-18 1.213413203e-08 0.0007795556898 0.002495001194 -0.03857253484 1.57005895e-18 -2.792472861e-06 0.0003686713332 -0.00237587588 0.02501051962 -3.731999536e-19 1.855494461e-07 0.0004500433658 -0.0004555336964 -0.01587902099 1.870682317e-20 2.261202714e-08 -0.0007308901474 0.001584201814 0.003807266786 -7.300865366e-20 2.041736863e-08 0.0003571446479 0.0004933792493 -0.004919187343 -2.567479986e-10 -9.49419199e-20 7.80708722e-06 0.0001415057082 0.002270525885 -1.398947761e-20 1.012139287e-08 -6.285673138e-05 -0.0002086685067 -0.0002132242536 1.405105246e-20 8.698657148e-09 -0.0003320550128 1.508677139e-05 -1.307968598e-05 8.803565117e-10 -1.482276148e-20 3.436346073e-05 4.149321433e-05 6.81129248e-05 4.868913781e-21 -1.152129308e-08 4.19472783e-06 0.0001123777966 1.906371802e-05 --0.04951532595 0.01979010226 0.0007038280168 -0.004788040911 1.353449961e-06 0.0002833590244 -1.861511463e-05 -2.203753495e-05 9.401897386e-05 -1.710867544e-06 -1.017038183e-05 2.91867128e-06 1.82917307e-05 4.283806118e-06 0.002175420404 0.01296828083 -0.001926149889 -0.2020941034 1.940948772e-06 -0.05856981969 -0.004847165935 2.782717259e-07 0.01942813867 -0.0001112113228 4.249435446e-07 0.002002762687 0.02188508139 -4.577041401e-08 -0.002415834788 -0.002266971858 -1.632857837e-09 -0.0006855514541 -0.004058123469 -1.45037135e-08 -0.0003579822353 -7.105801829e-05 2.764884242e-08 0.0001358456182 0.001918546903 -5.117598881e-09 -0.0001798854607 -2.621043608e-05 6.210390579e-09 -1.401484082e-05 -0.0001641081201 -6.865528257e-10 -0.0001068326044 -4.217992742e-06 4.046470861e-09 -4.823198884e-07 0.0001587501583 9.29867616e-10 1.039438316e-18 7.569522224e-19 1.168909948e-17 0.008987284443 0.04318234464 -6.218074163e-19 1.434771205e-18 1.391717603e-18 -0.01032370794 -0.0220951227 -1.182159567e-20 7.107206688e-21 5.024522045e-20 -0.00145405494 -0.0008986229109 6.809917912e-20 1.746801637e-21 8.219638477e-20 7.891191133e-05 0.0004728268841 3.784888388e-22 -2.927821951e-21 -1.736307607e-23 2.919574831e-05 9.679728279e-06 -3.66866569e-22 2.317984135e-24 -5.565265782e-22 1.039115048e-06 2.901628625e-05 2.744802256e-21 -2.411638072e-22 5.739609879e-21 -5.380199908e-05 -0.0001061835607 -7.125609908e-21 -3.339362389e-23 1.290390937e-22 1.649904507e-05 0.0001190225576 4.772359729e-22 -6.604550063e-22 -3.441428855e-23 3.086435969e-06 2.863342288e-05 -6.149453113e-22 8.124297728e-23 -2.765159063e-22 -3.827798412e-06 -7.21045155e-06 -5.314927967e-22 -2.186506415e-23 8.384770949e-23 1.76678862e-06 8.798653176e-06 6.859985396e-22 -9.091678964e-22 -8.836655196e-23 3.718933507e-06 2.265582223e-05 4.094703919e-22 -4.787719287e-23 -2.562352618e-24 9.318694804e-07 3.935583524e-06 --0.1106587323 -0.1537969312 -0.146578798 -0.007537852103 0.01960688736 0.01119744953 -0.009516654649 -0.0009325300526 0.0004455327594 0.001225958845 -0.0003394700064 -0.0001642118627 -2.00108702e-07 -0.06012502096 -0.07662859311 -0.03936515897 -0.02110392524 -0.04758686942 -0.1025063205 0.002497211142 0.004516526779 -0.0828359042 -0.001701492149 -0.003531475313 0.02329170191 0.0008401857602 0.000363406462 -0.02322883756 -0.0001485635591 0.0002802295313 0.008579305658 -0.0001141462591 -8.163460225e-05 -0.002866637144 -0.0004599881791 1.180294454e-06 -0.0004262964831 4.892051553e-05 5.370556328e-05 9.203709124e-05 3.186132667e-07 8.168991081e-05 0.0002961529338 -1.304525935e-05 3.236722356e-05 7.494968495e-05 8.518963834e-06 -6.078521762e-05 -0.000187948676 7.160320883e-06 1.921101599e-05 0.0001040374507 -4.897415027e-18 -0.003817354965 -0.02588514008 -0.0177965288 0.111472438 -4.556186498e-17 0.0006458900227 -0.05982591894 -0.1374953146 -0.05676933678 4.459166283e-18 -8.859854427e-05 -0.002818559679 -0.004960328506 -0.06680156984 -3.021605706e-18 -1.406658415e-06 -0.0009925588422 -0.0009525583989 -0.01605242519 -6.993710744e-19 -6.150195029e-05 -0.000812194033 -0.0005212982167 0.01091615672 -4.499837811e-19 1.307850127e-05 0.0002473678548 -0.00143792666 -0.007336416845 -3.691228846e-19 -3.510944389e-05 -0.0006719902153 -0.0001674812716 0.004775611697 -9.850009719e-20 1.375205919e-05 0.0002881414997 0.0002102814365 -0.004757813602 -1.213976422e-19 3.08097345e-06 3.848025481e-05 8.424179732e-05 0.002376161491 -1.393986084e-20 -2.685580258e-06 -3.234603895e-05 -0.0001962651263 -0.0001771105848 -1.26062382e-21 -3.17888217e-06 -2.495291035e-06 -1.24236426e-05 1.173670614e-05 -2.133010137e-21 1.979732359e-06 3.33846006e-05 -2.933903457e-05 -0.0001226113892 1.447408123e-20 7.458334092e-07 1.075557534e-05 0.0001194619718 7.408584188e-05 --0.01356822866 0.004254641054 0.001980352827 -0.0002618458097 4.359645692e-07 -8.127446411e-05 -1.658789297e-05 4.361237087e-05 5.418947619e-05 2.440331099e-05 1.208004493e-05 7.021066696e-06 6.334072226e-06 -5.217355939e-06 0.04005252824 -0.04429149606 -0.001979263228 6.713392041e-07 0.004118389815 -0.0007590603707 4.555307179e-09 -5.673461675e-05 0.0004477266409 -1.945064339e-10 -0.0001889211378 -1.449100671e-09 -3.771866824e-05 -0.00015501829 4.751755372e-06 3.088415864e-09 -0.0001421292483 -1.462395847e-09 0.0001080986324 -1.784021122e-05 -1.141272348e-09 4.48192093e-05 0.0001269986794 -1.546517034e-10 6.584991813e-05 4.745128842e-05 -1.738949295e-10 7.910280019e-06 4.638526613e-05 8.326896959e-07 1.246434612e-10 2.351724064e-05 -2.214102003e-10 1.174429806e-05 1.414389627e-05 -1.41308992e-10 6.651973619e-06 1.969122151e-05 3.445862133e-18 2.034997676e-05 -7.309134312e-06 0.03742618558 -0.04729587548 9.525324839e-18 5.207456269e-05 -0.01250167784 7.898166616e-07 -0.001210155515 1.022242639e-19 -4.111671347e-07 0.0008545792533 7.26915604e-09 -0.0005700816575 2.888154667e-19 -1.970947189e-09 0.0002305977946 3.385739733e-10 -1.721582557e-05 -5.348248508e-19 8.144360629e-08 -3.53186503e-05 1.733864553e-08 -0.0001505263916 3.501292526e-20 9.303066225e-09 -9.512391788e-09 -1.446899941e-05 -3.027762305e-05 -5.201735653e-20 6.034242826e-09 -8.740790571e-09 0.0002314041954 5.389523086e-07 -3.072519146e-20 2.597493834e-09 -1.877458149e-09 0.0002187359672 -1.607327944e-05 -7.10600332e-13 4.804716508e-21 -1.143154251e-11 8.411226185e-05 -5.495239711e-06 1.427879517e-21 2.151163788e-09 -5.857680182e-10 3.055627476e-05 2.269662952e-05 3.454332902e-21 1.853001129e-09 1.163039434e-06 -1.14853359e-09 2.309210633e-05 -8.31663582e-11 1.242067156e-20 -3.639155548e-10 2.436009551e-05 -3.914785983e-06 -6.163906342e-22 5.373140357e-10 -2.509639339e-10 1.232798158e-06 3.694366862e-05 --0.03896220548 0.01557227012 0.0005538223023 -0.00376757358 1.064991384e-06 0.0002229671788 -1.464770568e-05 -1.734071116e-05 7.398086368e-05 -1.346233141e-06 -8.002784979e-06 2.296619642e-06 1.439324404e-05 -5.679954937e-06 -0.002444605616 0.01341084115 0.0005451132669 -0.1613948134 -2.582866299e-06 -0.04737372616 -0.002463190654 -3.676214303e-07 0.01447823025 0.0008028431541 -5.643303594e-07 0.002145678084 0.01662973944 6.044183341e-08 -0.00187819325 -0.001807095278 2.248372077e-09 -0.000352452175 -0.003386486506 1.930055432e-08 -0.0003774763854 4.58818801e-05 -3.666839158e-08 0.0001703531846 0.001443658374 6.766650885e-09 -0.0001679538365 7.193928832e-06 -8.233745676e-09 7.351344237e-06 -0.0001487630516 9.113305951e-10 -8.91558584e-05 2.473901515e-06 -5.364282817e-09 2.998736241e-06 0.0001211565222 -1.231371786e-09 3.986624265e-19 -1.235845662e-18 -6.701130993e-18 0.01254427674 0.0285065075 1.117682852e-18 -1.790060157e-18 -5.928427403e-18 -0.006714441593 -0.01879502109 -1.529605232e-22 -6.278742308e-21 2.976237416e-20 -0.001134755381 -0.0007165001323 -8.268933892e-20 1.746501146e-21 -3.067497987e-20 0.000146422776 0.0002877245684 5.19906279e-22 1.064625549e-21 8.272004677e-23 2.298668053e-05 7.603329571e-06 2.119899076e-22 4.44670038e-23 9.258899069e-23 9.713081742e-07 2.26784339e-05 -1.755284848e-21 -5.656109671e-22 -4.511138944e-21 -3.827976951e-05 -8.76083423e-05 9.368837576e-22 -1.492159107e-22 5.065872546e-22 1.505429634e-05 9.158380177e-05 -9.797380159e-22 5.568016574e-22 -1.95384733e-23 2.656977902e-06 2.230247849e-05 2.16747579e-22 3.071564656e-22 2.139333855e-22 -2.554435971e-06 -6.131251271e-06 -1.403307679e-22 3.087695253e-23 -9.610948078e-22 2.188317413e-06 6.12532654e-06 -9.756884488e-22 8.777795248e-22 -5.721189182e-22 3.427952562e-06 1.732559297e-05 -8.66621874e-22 3.39369028e-23 5.17515324e-22 1.082695136e-06 2.747364477e-06 --0.1037735263 -0.1177834443 -0.1138405195 -0.005724109601 0.01535693912 0.008687436534 -0.007515902884 -0.0006779767694 0.0004063031437 0.0009909272601 -0.0002510546989 -0.0001210364543 6.649549095e-06 -0.07283446541 -0.06028645382 -0.03944245927 -0.01302223788 -0.03744282178 -0.06630393948 0.002323773965 0.003554070099 -0.06655375793 -0.001327880747 -0.002778587385 0.01869921193 0.0006611181602 0.0002140625432 -0.01861906139 -0.0001168940827 0.0001509913861 0.006651624107 -8.981673587e-05 -7.335737808e-05 -0.002188769676 -0.0003621246439 9.326821241e-07 -0.0001864907453 3.849504174e-05 7.438043312e-05 0.0001416033986 2.508605818e-07 6.291692523e-05 0.0002922582853 -1.026201732e-05 2.433120164e-05 8.042347229e-05 6.704114469e-06 -5.020655652e-05 -0.0001229249621 5.634652537e-06 1.329317814e-05 0.0001076126175 1.943999761e-17 -0.008656377025 -0.0407720054 -0.01398073451 0.09068514722 1.170877083e-17 0.001358316949 -0.03916373855 -0.1081806268 -0.03670406206 8.136867967e-18 -0.0001104713704 -0.002711183761 -0.003903116514 -0.05351544755 2.506918914e-19 -2.888267117e-06 -0.0008032489271 -0.0007491276407 -0.01268034571 2.658593683e-20 -4.924189217e-05 -0.000639088995 -0.0006360179265 0.008393349605 -2.759157931e-19 7.305994146e-06 0.0001946605174 -0.001259540642 -0.0057715409 -1.320191268e-19 -3.013369491e-05 -0.0005287461359 -2.277942541e-05 0.003801714287 1.87566237e-19 1.00950929e-05 0.0002267425924 0.0003018077567 -0.00370356198 7.230016533e-20 2.357386525e-06 3.027929783e-05 0.0001339571926 0.00187877627 1.19113478e-20 -2.351369708e-06 -2.545084409e-05 -0.0001535817576 -9.109989752e-05 -2.195796814e-21 -2.504302245e-06 -1.438039578e-06 -9.774265234e-06 3.091653913e-05 4.984384213e-21 1.203662213e-06 2.627111787e-05 -2.425607187e-05 -7.637916831e-05 -1.178606741e-20 3.75416927e-07 8.464077823e-06 9.136638291e-05 9.706629145e-05 --0.02742216903 0.008598873811 0.004002406747 -0.0005292054129 8.811094214e-07 -0.0001642603576 -3.352508394e-05 8.814310514e-05 0.0001095200422 4.93204924e-05 2.441446427e-05 1.418997884e-05 1.280152358e-05 6.921935488e-06 -0.02320088504 -0.04995596297 -0.002684774526 -8.895277799e-07 0.016333423 -0.001473470259 -5.985587663e-09 -0.0001192668594 0.0009014135187 2.253519213e-10 -0.0003834034748 1.922670973e-09 -0.0001494415997 -0.0002249895254 -4.819828283e-06 -4.095799128e-09 -0.0002219327321 1.939918441e-09 7.060968621e-05 5.08203553e-05 1.513482375e-09 2.925760363e-05 0.0002922700233 2.051200446e-10 8.759480209e-05 0.0001402402165 2.306721698e-10 2.507160137e-06 9.779115444e-05 2.002921736e-09 -1.652592296e-10 3.889414288e-05 2.936678636e-10 5.204189552e-06 4.145893153e-05 1.874297777e-10 2.321586057e-06 4.583881138e-05 3.184636547e-18 4.538558925e-07 9.695492793e-06 0.005401692053 -0.05196310393 -1.255508581e-17 7.924679099e-05 -0.0265728275 -1.045888499e-06 0.004160585844 -3.69832165e-19 -8.887917069e-07 0.001721331687 -9.739666457e-09 -0.0009528379232 -4.07456713e-19 -5.058654145e-09 0.0004616621588 -4.505914598e-10 -2.007859902e-05 6.987411391e-19 1.389673663e-07 -0.0001255986559 -2.304749e-08 -0.0001170031356 -5.094433462e-20 4.294699509e-09 1.26161816e-08 -0.0001333317386 -1.249901104e-05 5.366606503e-20 3.57569734e-09 1.159754688e-08 0.0002270443645 0.0002021767504 1.901600396e-20 1.866354869e-09 2.489899964e-09 0.0003762169873 5.866935421e-05 -1.697183303e-13 -1.119583773e-20 1.516552444e-11 0.0001315363275 2.707505699e-05 -7.920821994e-21 1.001721435e-09 7.771146933e-10 1.967613018e-05 7.831356136e-05 -6.42980486e-21 6.165242369e-10 1.507180871e-07 1.52444156e-09 4.987894446e-05 -2.572090848e-11 -1.20420858e-20 4.827149545e-10 1.343544703e-05 2.953635127e-05 -4.932054079e-21 2.29713786e-10 3.328478556e-10 1.061152086e-07 7.51763116e-05 --0.002175760481 0.0008695998984 3.092701411e-05 -0.0002103920351 5.947215094e-08 1.245112206e-05 -8.179695878e-07 -9.683546808e-07 4.131302054e-06 -7.51774914e-08 -4.468982975e-07 1.282497794e-07 8.037597254e-07 4.225475373e-06 -0.005491556678 0.004821855444 0.002652858918 -0.01205830747 1.941868329e-06 -0.004280559747 0.00158185333 2.771849192e-07 -0.0002182190685 0.001177987587 4.246154021e-07 0.0008448206003 0.0001755210797 -4.558035835e-08 -7.593255177e-05 -0.0001305517725 -1.667683971e-09 0.0002182493511 -0.0004353459979 -1.451024595e-08 -0.0001427467248 0.000132122076 2.760496346e-08 9.026455291e-05 -3.48636155e-06 -5.100251805e-09 -4.292935225e-05 3.580780615e-05 6.199362743e-09 2.379891158e-05 -3.336073043e-05 -6.858310875e-10 -1.14336469e-05 7.510705245e-06 4.039074143e-09 4.466538963e-06 1.955176681e-06 9.275689354e-10 -2.332904387e-18 5.2822621e-18 -3.915622016e-18 0.007668159128 -0.005375788222 -1.215724121e-18 -2.254743997e-18 2.431085523e-18 0.00141901121 -0.002843537851 1.735829741e-21 7.567582237e-23 -3.982187257e-21 -5.140065499e-05 -5.197878299e-05 1.091534851e-19 1.944221462e-20 -2.394173958e-20 0.0001155468537 -9.130316556e-05 -1.301304422e-22 1.745588518e-23 2.486628006e-22 1.300670232e-06 4.07563384e-07 -1.324623141e-22 1.11682465e-22 -1.554205505e-22 2.498820315e-07 1.07078603e-06 2.11121043e-21 1.439303529e-20 -5.627423578e-21 3.025914422e-06 -1.005588132e-05 1.534094143e-21 -7.297814777e-22 -2.672223764e-22 3.478373958e-06 2.47659223e-06 -2.613766039e-22 2.268242973e-23 -1.513713147e-22 4.391131272e-07 9.546929594e-07 -6.446430997e-23 7.294215991e-23 6.676336479e-22 4.399177126e-07 -9.249530603e-07 5.186365415e-23 2.209003501e-22 1.403816971e-22 1.138340251e-06 -6.740858953e-07 -1.680910548e-21 -5.123855952e-22 1.421156289e-21 8.301141768e-07 3.288208102e-07 9.237587075e-23 -4.842913736e-22 5.318448283e-23 5.053686427e-07 -2.914885984e-07 --0.02707805619 -0.002474403176 -0.004450567888 -4.688549317e-05 0.0007684223312 0.0003276457311 -0.0004548891645 3.331380877e-05 9.378665467e-05 8.875645066e-05 6.42771805e-06 3.651284125e-06 9.049801549e-06 -0.03656464008 -0.003371907166 -0.01298317223 0.003835564683 -0.002091892986 0.01461792557 0.00058658098 0.0001983966885 -0.005455143795 -6.018330519e-05 -0.0001552811461 0.001519483327 3.691645404e-05 -7.960711453e-05 -0.001470811419 -6.53093014e-06 -8.00577202e-05 0.0002453260335 -5.016493836e-06 -1.570351737e-05 -3.662704745e-05 -2.044231621e-05 5.008414373e-08 0.0001792405689 2.149228386e-06 4.505084817e-05 9.616111839e-05 1.393123206e-08 1.778527918e-06 9.172651424e-05 -5.74546169e-07 -8.297980355e-08 3.180066013e-05 3.739792991e-07 -5.828247689e-06 2.493242511e-05 3.144525178e-07 -1.578553519e-06 3.880196625e-05 -1.206897643e-17 -0.007680419804 -0.02825126329 -0.0007923587077 0.008856663463 -2.617534091e-18 0.00115820014 0.007886237476 -0.006046460849 0.00811927759 -1.130141803e-18 -5.806027603e-05 -0.0007795329676 -0.000217974121 -0.004180962005 5.416056284e-19 -2.429423816e-06 -7.315460327e-05 -4.204333222e-05 -0.0007705112982 1.195853305e-20 -3.829210869e-06 -3.569030064e-05 -0.0003230405977 0.0002224556889 -5.357636658e-20 -3.392735901e-06 1.08634104e-05 -0.0002333975367 -0.0003205356934 -4.990167107e-20 -4.87496761e-06 -2.953881651e-05 0.0001375304589 0.0002685603589 4.043860742e-20 -3.606426327e-07 1.265575468e-05 0.0001904447213 -0.0001554038902 2.335532159e-20 4.640759148e-08 1.690741725e-06 9.363939205e-05 0.0001165240663 -4.454490127e-21 -4.345588742e-07 -1.421925775e-06 -7.480470674e-06 5.636764038e-05 -4.771588822e-21 -1.435773837e-07 5.886503167e-07 -5.466073803e-07 2.93313937e-05 1.484181992e-21 -3.836705001e-07 1.466179924e-06 -2.84235978e-06 2.134415235e-05 -5.511752389e-23 -2.482628024e-07 4.722418007e-07 1.749884414e-06 5.47857471e-05 --0.0228524152 0.007165918729 0.00333542765 -0.000441016238 7.342773767e-07 -0.0001368872714 -2.793831287e-05 7.345454088e-05 9.12691288e-05 4.110150329e-05 2.034592792e-05 1.182529682e-05 1.066822e-05 -5.207929587e-06 -0.07096089158 -0.02202443027 -0.001584868528 6.700849798e-07 0.01758170445 -0.001197848019 4.556668148e-09 -0.0001016735884 0.0007494779 -2.008067291e-10 -0.0003202959298 -1.446152237e-09 -0.0001608357807 -0.0001437178639 -1.117340735e-05 3.079660026e-09 -0.0001525553931 -1.459706982e-09 -1.445873967e-05 8.541250851e-05 -1.138827056e-09 -6.027598339e-06 0.0002612120597 -1.543567214e-10 5.044411707e-05 0.0001388496595 -1.735962939e-10 -4.59215614e-06 8.349706022e-05 -8.323324249e-07 1.242991981e-10 2.812831421e-05 -2.209571681e-10 -4.851440223e-06 4.093132675e-05 -1.410260747e-10 -3.579734475e-06 4.119430151e-05 4.419776342e-19 -1.978130005e-05 -7.294599234e-06 -0.03032188689 -0.02168037725 9.847046317e-18 5.315089481e-05 -0.02279036477 7.890000477e-07 0.006741403824 7.446792605e-20 -7.693355736e-07 0.0014316196 7.235945205e-09 -0.0006952463887 2.604722616e-19 -4.748682444e-09 0.0003825695353 3.374236895e-10 -9.434850883e-06 -5.108095722e-19 1.031290202e-07 -0.0001315705523 1.729195143e-08 -4.701830403e-06 4.028906961e-20 -3.608090865e-09 -9.498833525e-09 -0.0001626503707 1.372388808e-05 -5.371256957e-20 -1.292150432e-09 -8.729635298e-09 6.994823432e-05 0.0002681288766 -3.642932895e-20 -1.213821128e-10 -1.87401963e-09 0.0002808610898 9.408198613e-05 4.861164937e-13 7.895170404e-21 -1.141172517e-11 9.055084393e-05 4.149021491e-05 3.76650299e-22 -8.23321826e-10 -5.849046187e-10 -4.459979534e-06 8.133931606e-05 3.447136316e-21 -1.036660147e-09 -9.64263641e-07 -1.147517947e-09 4.315348713e-05 4.911571697e-11 1.026719266e-20 -3.632135615e-10 -6.552154276e-06 4.317802326e-05 -8.661074055e-22 -2.328883608e-10 -2.504473231e-10 -1.094337052e-06 6.289957618e-05 --0.02225558486 -0.003306009376 0.0004454746716 -0.000664594069 0.0002261184438 6.816473076e-06 -1.566994882e-05 -5.451402188e-06 2.110658489e-05 2.957357047e-06 -3.250851373e-06 3.96235498e-06 4.539274865e-06 0.000354442724 0.01513014944 -0.01065344002 -0.01441892462 -0.0001016058903 -1.588653438e-06 5.29045836e-05 0.0009946368741 -1.225908725e-08 -0.0002528393649 -0.0003896773169 -1.249238651e-07 0.0002539077756 2.881695272e-05 -1.155806509e-08 -2.625637787e-06 -1.303535229e-06 -5.292352961e-10 -8.314056378e-05 4.583288452e-06 -7.550476004e-09 -9.149471443e-06 4.001630954e-05 -4.113901863e-09 2.239856466e-05 3.152801219e-06 -1.839957137e-09 -2.66568839e-06 2.071319078e-06 -7.823907615e-10 -3.502937417e-06 1.211623092e-06 -2.359740936e-09 -1.483044242e-06 9.709236027e-06 -1.165499473e-09 5.128617541e-06 9.819266061e-08 -9.468816917e-10 -1.740529918e-17 2.182506036e-17 -1.278613661e-17 -0.001568296108 0.0205739263 -9.747870427e-19 -1.202784027e-18 1.991852859e-18 -0.004098117075 -0.00659656094 1.412009328e-20 1.032761448e-19 7.205792836e-20 -4.903873651e-05 -0.001494745651 -1.964496568e-19 -2.719219234e-20 -6.147970432e-21 3.707123521e-05 0.0004636938745 1.113078983e-21 -1.478347482e-21 3.338061584e-21 -2.475600038e-08 -8.606283165e-05 -1.966924081e-22 -4.437478254e-22 -1.114636571e-21 7.903606069e-06 6.104962861e-06 -1.665235406e-21 -8.902768045e-21 1.272948824e-20 -1.309913129e-05 -2.828797921e-05 -7.337682288e-23 -1.888223758e-23 3.90631196e-22 1.844996173e-05 3.363345152e-05 4.839691392e-22 -6.147439701e-24 3.024455394e-22 1.973463147e-06 3.065612646e-06 -4.480866041e-22 -8.462782307e-22 2.823233883e-22 -2.011648252e-06 -5.507326329e-06 8.577253471e-24 1.017836521e-21 -6.103826356e-22 1.25095174e-06 6.151879223e-06 4.221506246e-22 7.620469838e-23 5.38537905e-23 2.820789822e-06 6.401515825e-06 -1.128681917e-22 1.824562866e-22 4.619967619e-23 -2.870350062e-07 8.454164191e-07 -0.01876415829 -0.003283908964 -0.00131707513 -2.895656989e-05 -3.529149967e-07 6.237704828e-05 1.918857134e-05 -4.496843465e-05 -4.744153274e-05 -2.454587077e-05 -1.277428394e-05 -6.725194203e-06 -6.100112851e-06 0.03501204863 -2.068623423e-05 -0.00697396524 -0.001527517399 -1.663177552e-06 -0.007607755459 -0.0002772262415 -2.308832537e-09 -0.0003586573799 -2.154268129e-06 -9.317503495e-12 -2.459614168e-06 9.709432914e-08 7.178777587e-05 3.362060704e-05 2.137109511e-09 8.285534363e-05 4.640576801e-05 4.976746289e-10 3.681243399e-05 -9.255562865e-05 2.875761451e-07 1.893190981e-09 -0.0001206601514 2.779404555e-10 -1.526710465e-05 -8.122551001e-05 9.130015306e-11 4.813262098e-06 -5.222826896e-05 9.286669415e-10 2.555626885e-06 -1.868847345e-05 2.361241141e-10 4.86151959e-06 -2.4022101e-05 1.44827966e-10 4.900099744e-06 -2.577279362e-05 2.012645501e-17 0.008877480496 0.02580093042 -3.008850064e-05 -0.02175398612 2.846273606e-18 -0.0003966711289 -0.006100691944 -3.049277264e-07 -0.001339284953 5.909615694e-20 3.540493553e-05 0.0004040106692 -6.751313113e-09 4.17066847e-05 2.109053292e-19 1.608570042e-06 7.048989102e-06 -1.581677641e-11 -3.065741019e-08 6.547347377e-20 1.368635939e-06 9.422790071e-10 0.0002021328144 -1.708775652e-05 2.037378605e-21 4.945430916e-06 3.375138569e-09 0.0001551477176 -5.679440613e-05 -5.896831626e-21 5.672007043e-06 9.1798944e-09 -6.154929548e-05 -7.958956538e-05 1.433057987e-20 2.761943529e-06 4.519659962e-09 -9.531309337e-05 -5.649062622e-05 5.977700452e-21 1.191433606e-07 8.477851277e-11 -4.548661615e-05 -2.942384102e-05 4.057125208e-21 4.340425294e-07 3.392747006e-10 8.455251737e-06 -4.715057904e-05 -2.143391413e-21 4.736511067e-09 -7.347597935e-07 9.546017919e-10 -1.711954087e-05 -7.500820042e-22 6.424564997e-07 4.950558123e-10 9.672388701e-06 -2.70122286e-05 -5.142928274e-21 3.839409502e-07 2.872733333e-10 4.593178758e-06 -3.493273945e-05 --0.01425411747 -0.06231351187 -0.006963854756 0.001920491484 -0.004898278316 0.002232888993 -0.0008524375423 0.0002425519903 -0.0004000960837 0.0001166642167 -3.026782885e-06 -6.254841048e-05 -9.840757263e-06 -0.0276707766 0.02044451974 -0.0001179158527 -0.002035300751 -0.02024063793 -0.07830403402 0.001253306576 0.001599814209 -0.02913996448 -0.0009945198983 -0.001153488502 0.005951184785 0.0002039210843 0.0003894331304 -0.00565916999 0.0001550196379 -2.568568904e-05 0.001022470153 -6.811746336e-05 -0.0001403752458 0.0004207162774 2.066102268e-05 -0.0002647550419 -0.00110933351 1.080526276e-05 2.238108391e-05 0.0003592866151 -2.511976974e-06 -3.336983639e-05 -7.766122664e-05 2.690424225e-05 -3.77188528e-06 -9.436499532e-06 4.215265257e-06 -9.819000183e-06 -0.000118451399 1.778293798e-06 2.576775009e-05 4.897608072e-06 -6.393021576e-17 -0.0002048006155 -0.002789216554 0.06342658468 0.005582836922 2.716878908e-17 -0.0001182108575 -0.005154437019 -0.05198671815 -0.03508515272 -9.15541467e-18 4.0559307e-07 -0.002611482514 -0.004868394991 -0.0180708962 -1.365657045e-19 -1.529233106e-09 1.644055513e-05 0.0008118290349 -0.01221288503 -8.736322897e-21 -1.088088248e-06 0.0002048105787 -0.0007726415731 0.008018523031 -1.367258115e-19 4.696991357e-08 0.000146362806 -5.534028001e-05 -0.005015508098 -1.856732164e-19 1.307902741e-08 -0.0002376673411 0.0004030779754 0.001241190835 1.654051872e-22 7.507482448e-09 0.0001161531735 1.665429209e-05 -0.001724559157 -1.692426816e-10 1.549810028e-21 2.53897415e-06 2.966184268e-06 0.0006957386299 -8.539042028e-22 -3.295806749e-09 -2.04403092e-05 -7.71900639e-05 -9.156044801e-05 -8.707189005e-21 2.267440818e-11 -0.0001078957093 4.90537953e-06 -3.4160686e-05 1.205079646e-09 4.958263088e-21 1.117623878e-05 3.290953691e-05 -2.653198121e-05 2.975200598e-21 -1.094076643e-08 1.364593811e-06 3.739312357e-05 -3.283840831e-05 -0.03471368358 0.00515662761 -0.0006948398296 0.001036616578 -0.0003526936793 -1.063215777e-05 2.444157942e-05 8.502955631e-06 -3.292150325e-05 -4.612808757e-06 5.070593589e-06 -6.180378447e-06 -7.080243108e-06 -0.0004696446945 0.0007397890212 -0.007804378487 0.02271997687 -7.02640753e-05 2.106463273e-06 -0.0002156586728 -0.001418344576 1.625140751e-08 -0.0001199524036 0.001122010186 1.656672818e-07 -0.0004247610538 -1.619734149e-05 1.532185977e-08 3.121121066e-06 3.010088579e-06 7.019867555e-10 0.0001049606912 1.758558633e-05 1.001344008e-08 -1.200360489e-05 -3.615084632e-05 5.455186605e-09 -3.942081744e-05 -4.29623941e-07 2.439472365e-09 -1.797443208e-06 2.722282166e-06 1.037523587e-09 2.663812034e-06 9.12855072e-07 3.129063068e-09 -1.654324289e-06 -1.117757815e-05 1.545503237e-09 -8.219833221e-06 6.800182643e-08 1.255434089e-09 2.42213116e-17 5.400438133e-18 -1.141422838e-17 -0.01343138687 -0.01621305219 -7.910748452e-19 -1.6505111e-18 -4.888505816e-19 0.002304129251 0.01437716472 -2.684101044e-21 2.612336662e-19 4.779978862e-20 4.92187583e-05 0.002358736194 3.335290274e-19 1.082236282e-20 -4.761237996e-20 -0.0003024931807 -0.0004785864743 2.709718956e-22 -8.389396342e-21 4.434785607e-21 -1.90131548e-10 0.0001342773739 -2.834652119e-22 1.56111685e-22 -2.671926283e-22 -1.277365859e-05 -9.07654163e-06 -2.067927454e-21 -6.148452484e-21 -2.285134606e-21 8.665180124e-06 5.588939775e-05 -1.769719821e-21 1.138297324e-21 3.123574346e-21 -3.478844347e-05 -4.644989252e-05 2.439131566e-22 -3.85988106e-22 -1.148270388e-22 -3.740681834e-06 -4.119135468e-06 3.256960101e-22 1.002522791e-21 1.95764123e-22 1.810194119e-06 9.917711463e-06 -7.06194488e-22 3.466796235e-22 9.262155334e-22 -4.266733171e-06 -7.280003137e-06 3.851058637e-22 -9.9620204e-23 -9.279734022e-22 -5.855207632e-06 -8.529500589e-06 -3.740660595e-22 1.643620741e-22 8.623783678e-22 -5.661265788e-07 -3.048190903e-07 -0.03792344107 -0.006636968532 -0.002661884446 -5.852289004e-05 -7.132614678e-07 0.0001260675954 3.878120421e-05 -9.088378787e-05 -9.58820611e-05 -4.96086139e-05 -2.581756116e-05 -1.359200355e-05 -1.232867825e-05 0.02522667598 2.751522951e-05 0.03137548658 -0.007580998409 2.200219196e-06 -0.01088825596 -0.0005858242027 3.026764042e-09 -0.0006993458508 -4.372258887e-06 1.067064738e-11 -4.952281501e-06 -1.251688211e-07 9.909575572e-05 0.0001142595901 -2.834316503e-09 7.227986317e-05 0.0001889673612 -6.601908681e-10 -3.073077015e-05 -8.192262495e-05 4.284834859e-08 -2.512229282e-09 -0.0002433152895 -3.687510189e-10 -6.944415948e-05 -0.0001255724206 -1.211199614e-10 -3.430503821e-06 -9.239687107e-05 -1.230809932e-09 1.415193774e-07 -3.274309964e-05 -3.132774776e-10 -1.1624948e-06 -3.756113758e-05 -1.921426761e-10 -2.919340275e-06 -3.926483784e-05 -2.383758539e-17 0.002426058306 0.02441712221 3.995753741e-05 -0.000817538343 -3.895665376e-18 -0.001847737818 -0.01269914376 4.034308617e-07 -0.001293382276 -9.034114266e-20 6.311175801e-05 0.0008050161447 9.178022336e-09 0.0001042012884 -2.786192571e-19 2.659506233e-06 1.446526617e-05 2.107469404e-11 3.078537496e-07 -1.052294801e-19 4.053992064e-07 -1.249821418e-09 0.0003403759676 3.595562419e-05 7.811115604e-21 1.228547184e-06 -4.477479994e-09 0.0001279730443 7.958692053e-05 4.506179865e-21 -1.256282557e-06 -1.218092857e-08 -0.0002175168482 -5.49749385e-05 -7.749717529e-21 -2.007378058e-06 -6.000367185e-09 -0.0002455350531 -5.366732239e-05 -2.537188216e-21 1.538380098e-08 -1.124661467e-10 -0.0001254544369 -2.571856412e-05 -1.800976086e-21 3.093096094e-08 -4.500302147e-10 -1.242954225e-05 -6.492692391e-05 2.501478864e-21 7.639949381e-10 -2.745424125e-07 -1.266507107e-09 -3.579776386e-05 8.462495259e-22 5.727202767e-08 -6.568147027e-10 -1.261655024e-05 -2.118563071e-05 1.685319194e-21 2.165412153e-08 -3.811533372e-10 -1.426906718e-06 -5.91355253e-05 -0.1073437348 0.02809949022 0.005986846175 -0.002314996653 0.007653449658 -0.003759171808 0.00177782919 -0.0004424908509 0.0002594933044 -0.0003030074269 -9.398023366e-06 4.954800372e-05 -3.633270565e-05 0.04316156491 0.1186886306 0.05007595642 0.005069853637 0.03157114119 0.02160494425 0.000576894056 -0.002495335598 0.05275082091 -6.214871672e-05 0.001799213058 -0.009456167076 -0.0003180701134 -0.0002453261542 0.008564031132 -0.0001957150144 4.006371156e-05 -0.001435799297 0.0001062484091 0.0001991214537 -7.485105158e-06 -3.222570887e-05 0.0004653980078 0.0009383067351 -1.685372082e-05 -0.0001144750134 -0.001076243221 3.918163514e-06 5.836081723e-05 -1.703753457e-05 -3.7563975e-05 5.883264105e-06 -2.604781117e-05 -6.574769934e-06 3.859114056e-05 2.763012075e-05 -2.773695291e-06 -2.694517571e-05 -0.0001323102043 2.436952398e-17 -0.0001483349165 0.004353112693 -0.01581709118 0.02490829616 2.472378343e-17 -0.0001342280348 0.0536074891 0.08108894593 0.01675085363 4.263050716e-18 8.650593125e-07 0.0009991768528 0.007593617281 0.03025336332 4.771052858e-19 -6.712694782e-09 -0.0008620003406 -0.00126619509 0.01982412164 1.311926004e-18 1.203222529e-06 -2.400692255e-05 0.001205149354 -0.01276733672 -6.211257522e-20 -1.014934443e-07 -0.0002282918017 0.0004234051025 0.008156877907 3.479752135e-21 -6.180314172e-09 0.000370712662 -0.0009407008364 -0.002130546114 -2.391059875e-20 -9.611345846e-09 -0.0001811716637 -0.0005699801979 0.002330690936 6.520415935e-11 -4.697214114e-20 -3.960223166e-06 -0.0001723603343 -0.001215101022 1.056795831e-20 -9.483051618e-09 3.188255923e-05 0.0001021844688 3.023013238e-05 1.464846532e-20 -5.749175252e-09 0.0001692317634 -7.651398668e-06 -4.837942658e-05 2.094213326e-10 6.687072009e-21 -1.743224272e-05 -1.469170977e-06 -0.0001037357605 3.711418611e-21 5.939367377e-10 -2.128370248e-06 -5.554201477e-05 -8.642416317e-05 -0.06843398822 0.01016569136 -0.001369795879 0.002043568973 -0.0006952945527 -2.096006198e-05 4.818373004e-05 1.67625877e-05 -6.490091322e-05 -9.093615763e-06 9.996085295e-06 -1.218389702e-05 -1.39578755e-05 0.0003529840489 -0.01550895669 0.0003012374492 0.04464776234 8.467713396e-06 -1.581791529e-06 -0.0003395964513 -0.00288150755 -1.23240011e-08 9.399295893e-05 0.001882090085 -1.245625585e-07 -0.0008188874295 -5.040169321e-05 -1.161441358e-08 6.779130921e-06 5.306604931e-06 -5.248811921e-10 0.0002228186378 1.877781859e-05 -7.514436405e-09 -6.781105898e-06 -8.812213979e-05 -4.109124592e-09 -7.482804885e-05 -3.730273735e-06 -1.842778693e-09 2.831442088e-07 1.545963603e-06 -7.806630239e-10 7.057813158e-06 -1.120193116e-09 -2.354142986e-09 -7.121116732e-07 -2.457880794e-05 -1.164339631e-09 -1.605968889e-05 -8.043926921e-09 -9.459195893e-10 -2.69825749e-17 2.810790252e-18 8.46471173e-19 -0.01628001899 -0.04216057534 -8.1288831e-19 -7.404846985e-19 9.483940182e-19 0.007168109463 0.0257171125 1.902912029e-19 8.467243055e-20 4.388852573e-20 0.0001145453528 0.004632457581 -4.240061546e-19 -7.874340599e-20 -1.124508093e-20 -0.0004391747269 -0.001100633425 -2.29537146e-21 -2.391454137e-20 6.676180698e-21 2.454948728e-08 0.0002646872957 -3.033780671e-22 2.975606424e-22 1.157872881e-22 -2.489542565e-05 -1.817970307e-05 1.250018656e-21 1.746694722e-22 1.146884607e-20 2.464019199e-05 0.0001026216234 -2.045354595e-21 -5.50179703e-21 -4.393576643e-22 -6.472062638e-05 -9.543131381e-05 9.360762068e-23 -4.036147919e-22 6.276590764e-22 -6.948769385e-06 -8.545947422e-06 -1.707974304e-21 4.092797115e-23 -1.18730289e-21 4.421274209e-06 1.86989244e-05 8.926376185e-24 -1.78251478e-22 -5.927308698e-22 -6.924068622e-06 -1.583898321e-05 7.341263288e-22 -1.860295809e-22 1.303865589e-21 -1.060802768e-05 -1.774975396e-05 1.324868132e-22 -1.172333623e-22 1.44574444e-22 -4.648508282e-07 -1.252119256e-06 -0.03160370795 -0.005530954187 -0.002218296026 -4.877037191e-05 -5.944003625e-07 0.0001050591232 3.231852957e-05 -7.57385039e-05 -7.990384235e-05 -4.134161092e-05 -2.151520643e-05 -1.132697083e-05 -1.027417175e-05 -0.001471688858 -2.068484481e-05 0.04868708413 -0.008539322641 -1.664189988e-06 -0.006848982875 -0.0005008469768 -2.313227485e-09 -0.0005701533932 -3.65274069e-06 -9.649226884e-12 -4.117719463e-06 9.668927208e-08 5.942390511e-05 0.000118174398 2.132647915e-09 1.304106078e-05 0.0002046645425 4.967106938e-10 -7.772887487e-05 -1.615011595e-05 -2.311496386e-07 1.889637332e-09 -0.0002025049702 2.774204435e-10 -7.700061646e-05 -8.55183798e-05 9.11279062e-11 -9.381751684e-06 -7.047636682e-05 9.253655832e-10 -2.376494812e-06 -2.479386955e-05 2.357102569e-10 -6.415018908e-06 -2.585598311e-05 1.445667624e-10 -8.788870282e-06 -2.636576926e-05 1.764061105e-17 -0.005670298425 0.00671929906 -3.004973814e-05 0.0207049995 3.090414334e-18 -0.002058367805 -0.01076490097 -3.044890943e-07 -0.0003770534124 9.405453091e-20 4.840860999e-05 0.0006651838154 -6.695045098e-09 9.670637212e-05 2.094999492e-19 1.923096415e-06 1.216375634e-05 -1.578187767e-11 4.397671489e-07 6.978000785e-20 -8.326309601e-07 9.404555313e-10 0.0002498697465 6.49076016e-05 1.230464037e-20 -3.322706566e-06 3.369318925e-09 1.465391043e-05 0.0001626596229 -1.608194265e-20 -7.353200753e-06 9.158208134e-09 -0.0002274712277 6.67869194e-06 9.817931618e-21 -5.435668003e-06 4.510366327e-09 -0.0002308550081 -1.47354778e-05 1.617833309e-20 -9.894553804e-08 8.461611503e-11 -0.0001211661446 -4.703347605e-06 1.918057799e-21 -3.938128995e-07 3.385379355e-10 -2.499334455e-05 -3.905251685e-05 -3.552349514e-21 -3.729962644e-09 3.709634765e-07 9.528279301e-10 -3.042967385e-05 3.755901887e-22 -5.676644588e-07 4.941717878e-10 -2.645772508e-05 -1.097352272e-06 -4.305086531e-21 -3.559560557e-07 2.867625787e-10 -6.49756738e-06 -4.35989979e-05 -0.156926174 0.09975351053 0.01493301035 -0.005004577489 0.01507868052 -0.007233654421 0.003216625582 -0.0008311393506 0.0007456818288 -0.0005195967194 -9.469628726e-06 0.0001285205105 -3.842785538e-05 0.08510978987 0.1372628284 0.0666727081 0.008777579266 0.06224378692 0.1071289609 -0.0004889111487 -0.004919060683 0.09928861717 0.000913778376 0.00354742769 -0.01853145556 -0.0006270273785 -0.0007162181507 0.01704792816 -0.0004154315471 7.89783742e-05 -0.002932624937 0.0002094649942 0.0004052884783 -0.0004321694585 -6.351659341e-05 0.0008837680578 0.002358472818 -3.322441509e-05 -0.0001745753244 -0.001790464812 7.72492989e-06 0.0001109952994 5.514953177e-05 -7.687990855e-05 1.159778653e-05 -2.516990519e-05 -1.295998103e-05 6.112097241e-05 0.0001553965066 -5.467380149e-06 -6.16308084e-05 -0.0001807519133 -1.266553477e-17 8.142594578e-06 0.008621380927 -0.08457785115 0.02751191993 -6.863143411e-18 -5.992387865e-05 0.07641284304 0.1598793051 0.05739138274 -1.040970792e-18 7.434049681e-07 0.003944336008 0.01497025817 0.0582893903 5.024869056e-19 -7.385449588e-09 -0.001162125225 -0.002495001531 0.03858196969 -7.370026691e-19 2.689343841e-06 -0.0002371007809 0.002375858588 -0.02500581779 5.7690946e-20 -1.819413552e-07 -0.0004500338669 0.000618184067 0.0158652971 -1.935019442e-19 -2.13198767e-08 0.0007308988771 -0.001654150048 -0.004075395663 9.766591708e-22 -2.029598652e-08 -0.0003571427739 -0.0007742403391 0.004825105357 2.562618821e-10 4.028106423e-20 -7.807075808e-06 -0.0002320565521 -0.0023120161 1.632096606e-20 -9.298071047e-09 6.285731629e-05 0.0002131284862 0.0001318849375 -1.858036678e-20 -7.661997002e-09 0.0003330192765 -1.508562387e-05 -3.007380116e-05 -9.294722286e-10 8.630887226e-21 -3.436309751e-05 -3.494106006e-05 -0.0001112909481 -4.055745935e-21 1.175418144e-08 -4.194477382e-06 -0.0001112834595 -8.19632942e-05 diff --git a/tests/09_DeePKS/100_NO_KP_deepks_UT/jle.orb b/tests/09_DeePKS/100_NO_KP_deepks_UT/jle.orb deleted file mode 100644 index abbf2b6dc8..0000000000 --- a/tests/09_DeePKS/100_NO_KP_deepks_UT/jle.orb +++ /dev/null @@ -1,6018 +0,0 @@ ---------------------------------------------------------------------------- -Energy Cutoff(Ry) 50 -Radius Cutoff(a.u.) 6 -Lmax 2 -Number of Sorbitals--> 13 -Number of Porbitals--> 13 -Number of Dorbitals--> 13 ---------------------------------------------------------------------------- -SUMMARY END - -Mesh 605 -dr 0.01 - Type L N - 0 0 0 -1.000000000000e+00 9.999954307450e-01 9.999817230550e-01 9.999588771557e-01 -9.999268934227e-01 9.998857723822e-01 9.998355147105e-01 9.997761212345e-01 -9.997075929310e-01 9.996299309272e-01 9.995431365007e-01 9.994472110789e-01 -9.993421562398e-01 9.992279737114e-01 9.991046653715e-01 9.989722332485e-01 -9.988306795205e-01 9.986800065157e-01 9.985202167122e-01 9.983513127379e-01 -9.981732973708e-01 9.979861735385e-01 9.977899443184e-01 9.975846129375e-01 -9.973701827725e-01 9.971466573496e-01 9.969140403446e-01 9.966723355824e-01 -9.964215470375e-01 9.961616788336e-01 9.958927352436e-01 9.956147206892e-01 -9.953276397415e-01 9.950314971204e-01 9.947262976943e-01 9.944120464808e-01 -9.940887486459e-01 9.937564095039e-01 9.934150345180e-01 9.930646292992e-01 -9.927051996072e-01 9.923367513494e-01 9.919592905814e-01 9.915728235065e-01 -9.911773564758e-01 9.907728959881e-01 9.903594486895e-01 9.899370213737e-01 -9.895056209813e-01 9.890652546003e-01 9.886159294654e-01 9.881576529582e-01 -9.876904326070e-01 9.872142760867e-01 9.867291912182e-01 9.862351859690e-01 -9.857322684524e-01 9.852204469278e-01 9.846997298001e-01 9.841701256200e-01 -9.836316430835e-01 9.830842910317e-01 9.825280784509e-01 9.819630144724e-01 -9.813891083719e-01 9.808063695699e-01 9.802148076310e-01 9.796144322642e-01 -9.790052533223e-01 9.783872808018e-01 9.777605248430e-01 9.771249957294e-01 -9.764807038877e-01 9.758276598875e-01 9.751658744415e-01 9.744953584044e-01 -9.738161227738e-01 9.731281786890e-01 9.724315374315e-01 9.717262104242e-01 -9.710122092318e-01 9.702895455599e-01 9.695582312554e-01 9.688182783058e-01 -9.680696988392e-01 9.673125051241e-01 9.665467095687e-01 9.657723247216e-01 -9.649893632704e-01 9.641978380425e-01 9.633977620041e-01 9.625891482603e-01 -9.617720100548e-01 9.609463607696e-01 9.601122139247e-01 9.592695831779e-01 -9.584184823246e-01 9.575589252974e-01 9.566909261659e-01 9.558144991363e-01 -9.549296585514e-01 9.540364188899e-01 9.531347947667e-01 9.522248009319e-01 -9.513064522713e-01 9.503797638053e-01 9.494447506893e-01 9.485014282129e-01 -9.475498117999e-01 9.465899170081e-01 9.456217595285e-01 9.446453551853e-01 -9.436607199360e-01 9.426678698702e-01 9.416668212101e-01 9.406575903096e-01 -9.396401936544e-01 9.386146478614e-01 9.375809696787e-01 9.365391759848e-01 -9.354892837886e-01 9.344313102292e-01 9.333652725750e-01 9.322911882240e-01 -9.312090747032e-01 9.301189496681e-01 9.290208309025e-01 9.279147363183e-01 -9.268006839549e-01 9.256786919789e-01 9.245487786841e-01 9.234109624904e-01 -9.222652619442e-01 9.211116957177e-01 9.199502826083e-01 9.187810415390e-01 -9.176039915569e-01 9.164191518340e-01 9.152265416659e-01 9.140261804721e-01 -9.128180877951e-01 9.116022833003e-01 9.103787867756e-01 9.091476181311e-01 -9.079087973984e-01 9.066623447304e-01 9.054082804010e-01 9.041466248047e-01 -9.028773984559e-01 9.016006219888e-01 9.003163161571e-01 8.990245018332e-01 -8.977252000079e-01 8.964184317905e-01 8.951042184077e-01 8.937825812035e-01 -8.924535416387e-01 8.911171212908e-01 8.897733418530e-01 8.884222251345e-01 -8.870637930592e-01 8.856980676661e-01 8.843250711084e-01 8.829448256533e-01 -8.815573536812e-01 8.801626776859e-01 8.787608202735e-01 8.773518041623e-01 -8.759356521824e-01 8.745123872751e-01 8.730820324926e-01 8.716446109973e-01 -8.702001460618e-01 8.687486610678e-01 8.672901795064e-01 8.658247249770e-01 -8.643523211873e-01 8.628729919524e-01 8.613867611947e-01 8.598936529435e-01 -8.583936913341e-01 8.568869006077e-01 8.553733051108e-01 8.538529292946e-01 -8.523257977150e-01 8.507919350314e-01 8.492513660070e-01 8.477041155076e-01 -8.461502085016e-01 8.445896700594e-01 8.430225253529e-01 8.414487996548e-01 -8.398685183386e-01 8.382817068775e-01 8.366883908446e-01 8.350885959116e-01 -8.334823478491e-01 8.318696725255e-01 8.302505959068e-01 8.286251440560e-01 -8.269933431327e-01 8.253552193925e-01 8.237107991864e-01 8.220601089605e-01 -8.204031752555e-01 8.187400247058e-01 8.170706840394e-01 8.153951800773e-01 -8.137135397330e-01 8.120257900115e-01 8.103319580098e-01 8.086320709151e-01 -8.069261560055e-01 8.052142406486e-01 8.034963523014e-01 8.017725185095e-01 -8.000427669069e-01 7.983071252151e-01 7.965656212430e-01 7.948182828859e-01 -7.930651381253e-01 7.913062150281e-01 7.895415417463e-01 7.877711465163e-01 -7.859950576585e-01 7.842133035765e-01 7.824259127570e-01 7.806329137685e-01 -7.788343352617e-01 7.770302059682e-01 7.752205547002e-01 7.734054103500e-01 -7.715848018895e-01 7.697587583694e-01 7.679273089188e-01 7.660904827447e-01 -7.642483091312e-01 7.624008174394e-01 7.605480371061e-01 7.586899976440e-01 -7.568267286407e-01 7.549582597581e-01 7.530846207322e-01 7.512058413721e-01 -7.493219515597e-01 7.474329812490e-01 7.455389604655e-01 7.436399193057e-01 -7.417358879367e-01 7.398268965953e-01 7.379129755873e-01 7.359941552877e-01 -7.340704661390e-01 7.321419386517e-01 7.302086034029e-01 7.282704910361e-01 -7.263276322605e-01 7.243800578507e-01 7.224277986455e-01 7.204708855480e-01 -7.185093495243e-01 7.165432216036e-01 7.145725328773e-01 7.125973144982e-01 -7.106175976801e-01 7.086334136974e-01 7.066447938841e-01 7.046517696335e-01 -7.026543723976e-01 7.006526336861e-01 6.986465850664e-01 6.966362581626e-01 -6.946216846549e-01 6.926028962792e-01 6.905799248262e-01 6.885528021412e-01 -6.865215601232e-01 6.844862307242e-01 6.824468459489e-01 6.804034378539e-01 -6.783560385471e-01 6.763046801870e-01 6.742493949824e-01 6.721902151914e-01 -6.701271731211e-01 6.680603011268e-01 6.659896316114e-01 6.639151970248e-01 -6.618370298633e-01 6.597551626691e-01 6.576696280293e-01 6.555804585759e-01 -6.534876869844e-01 6.513913459739e-01 6.492914683061e-01 6.471880867846e-01 -6.450812342547e-01 6.429709436022e-01 6.408572477532e-01 6.387401796735e-01 -6.366197723676e-01 6.344960588783e-01 6.323690722863e-01 6.302388457091e-01 -6.281054123006e-01 6.259688052507e-01 6.238290577843e-01 6.216862031607e-01 -6.195402746735e-01 6.173913056491e-01 6.152393294468e-01 6.130843794577e-01 -6.109264891046e-01 6.087656918406e-01 6.066020211492e-01 6.044355105433e-01 -6.022661935646e-01 6.000941037829e-01 5.979192747957e-01 5.957417402274e-01 -5.935615337287e-01 5.913786889758e-01 5.891932396702e-01 5.870052195375e-01 -5.848146623272e-01 5.826216018118e-01 5.804260717865e-01 5.782281060679e-01 -5.760277384943e-01 5.738250029242e-01 5.716199332362e-01 5.694125633280e-01 -5.672029271161e-01 5.649910585350e-01 5.627769915364e-01 5.605607600890e-01 -5.583423981772e-01 5.561219398012e-01 5.538994189759e-01 5.516748697302e-01 -5.494483261068e-01 5.472198221611e-01 5.449893919607e-01 5.427570695849e-01 -5.405228891241e-01 5.382868846788e-01 5.360490903593e-01 5.338095402850e-01 -5.315682685834e-01 5.293253093903e-01 5.270806968481e-01 5.248344651060e-01 -5.225866483191e-01 5.203372806474e-01 5.180863962557e-01 5.158340293127e-01 -5.135802139904e-01 5.113249844634e-01 5.090683749084e-01 5.068104195034e-01 -5.045511524271e-01 5.022906078585e-01 5.000288199758e-01 4.977658229563e-01 -4.955016509752e-01 4.932363382055e-01 4.909699188170e-01 4.887024269757e-01 -4.864338968434e-01 4.841643625769e-01 4.818938583272e-01 4.796224182391e-01 -4.773500764507e-01 4.750768670924e-01 4.728028242863e-01 4.705279821459e-01 -4.682523747753e-01 4.659760362683e-01 4.636990007081e-01 4.614213021668e-01 -4.591429747041e-01 4.568640523675e-01 4.545845691911e-01 4.523045591950e-01 -4.500240563851e-01 4.477430947521e-01 4.454617082707e-01 4.431799308996e-01 -4.408977965804e-01 4.386153392368e-01 4.363325927745e-01 4.340495910803e-01 -4.317663680216e-01 4.294829574453e-01 4.271993931780e-01 4.249157090245e-01 -4.226319387680e-01 4.203481161687e-01 4.180642749639e-01 4.157804488669e-01 -4.134966715664e-01 4.112129767260e-01 4.089293979839e-01 4.066459689517e-01 -4.043627232139e-01 4.020796943278e-01 3.997969158223e-01 3.975144211975e-01 -3.952322439240e-01 3.929504174427e-01 3.906689751635e-01 3.883879504653e-01 -3.861073766949e-01 3.838272871669e-01 3.815477151626e-01 3.792686939297e-01 -3.769902566816e-01 3.747124365969e-01 3.724352668186e-01 3.701587804535e-01 -3.678830105718e-01 3.656079902064e-01 3.633337523523e-01 3.610603299659e-01 -3.587877559645e-01 3.565160632258e-01 3.542452845871e-01 3.519754528448e-01 -3.497066007538e-01 3.474387610269e-01 3.451719663343e-01 3.429062493028e-01 -3.406416425154e-01 3.383781785106e-01 3.361158897820e-01 3.338548087774e-01 -3.315949678985e-01 3.293363995000e-01 3.270791358894e-01 3.248232093263e-01 -3.225686520215e-01 3.203154961369e-01 3.180637737846e-01 3.158135170263e-01 -3.135647578731e-01 3.113175282844e-01 3.090718601677e-01 3.068277853780e-01 -3.045853357170e-01 3.023445429328e-01 3.001054387190e-01 2.978680547147e-01 -2.956324225033e-01 2.933985736121e-01 2.911665395122e-01 2.889363516174e-01 -2.867080412837e-01 2.844816398091e-01 2.822571784326e-01 2.800346883341e-01 -2.778142006333e-01 2.755957463896e-01 2.733793566015e-01 2.711650622057e-01 -2.689528940770e-01 2.667428830274e-01 2.645350598058e-01 2.623294550973e-01 -2.601260995227e-01 2.579250236380e-01 2.557262579339e-01 2.535298328350e-01 -2.513357786996e-01 2.491441258191e-01 2.469549044171e-01 2.447681446495e-01 -2.425838766034e-01 2.404021302968e-01 2.382229356781e-01 2.360463226257e-01 -2.338723209472e-01 2.317009603788e-01 2.295322705852e-01 2.273662811590e-01 -2.252030216196e-01 2.230425214136e-01 2.208848099135e-01 2.187299164175e-01 -2.165778701493e-01 2.144287002568e-01 2.122824358125e-01 2.101391058124e-01 -2.079987391756e-01 2.058613647440e-01 2.037270112815e-01 2.015957074739e-01 -1.994674819279e-01 1.973423631710e-01 1.952203796510e-01 1.931015597352e-01 -1.909859317103e-01 1.888735237814e-01 1.867643640722e-01 1.846584806240e-01 -1.825559013952e-01 1.804566542612e-01 1.783607670137e-01 1.762682673601e-01 -1.741791829233e-01 1.720935412410e-01 1.700113697654e-01 1.679326958626e-01 -1.658575468121e-01 1.637859498066e-01 1.617179319512e-01 1.596535202632e-01 -1.575927416715e-01 1.555356230162e-01 1.534821910482e-01 1.514324724284e-01 -1.493864937280e-01 1.473442814271e-01 1.453058619151e-01 1.432712614896e-01 -1.412405063565e-01 1.392136226292e-01 1.371906363283e-01 1.351715733810e-01 -1.331564596211e-01 1.311453207879e-01 1.291381825264e-01 1.271350703867e-01 -1.251360098232e-01 1.231410261946e-01 1.211501447634e-01 1.191633906954e-01 -1.171807890593e-01 1.152023648264e-01 1.132281428698e-01 1.112581479646e-01 -1.092924047871e-01 1.073309379142e-01 1.053737718236e-01 1.034209308930e-01 -1.014724393995e-01 9.952832151981e-02 9.758860132928e-02 9.565330280182e-02 -9.372244980944e-02 9.179606612181e-02 8.987417540595e-02 8.795680122580e-02 -8.604396704186e-02 8.413569621079e-02 8.223201198506e-02 8.033293751256e-02 -7.843849583622e-02 7.654870989369e-02 7.466360251689e-02 7.278319643172e-02 -7.090751425767e-02 6.903657850744e-02 6.717041158663e-02 6.530903579334e-02 -6.345247331783e-02 6.160074624218e-02 5.975387653995e-02 5.791188607580e-02 -5.607479660517e-02 5.424262977394e-02 5.241540711809e-02 5.059315006336e-02 -4.877587992492e-02 4.696361790703e-02 4.515638510272e-02 4.335420249347e-02 -4.155709094886e-02 3.976507122629e-02 3.797816397060e-02 3.619638971384e-02 -3.441976887486e-02 3.264832175908e-02 3.088206855812e-02 2.912102934952e-02 -2.736522409646e-02 2.561467264741e-02 2.386939473585e-02 2.212940997999e-02 -2.039473788245e-02 1.866539783001e-02 1.694140909324e-02 1.522279082631e-02 -1.350956206664e-02 1.180174173465e-02 1.009934863345e-02 8.402401448598e-03 -6.710918747811e-03 5.024918980690e-03 3.344420478453e-03 1.669441453672e-03 -7.672312953838e-15 -1.663885908054e-03 -3.322198415458e-03 -4.974919786836e-03 --6.622032406765e-03 - Type L N - 0 0 1 -1.000000000000e+00 9.999817230550e-01 9.999268934227e-01 9.998355147105e-01 -9.997075929310e-01 9.995431365007e-01 9.993421562398e-01 9.991046653715e-01 -9.988306795205e-01 9.985202167122e-01 9.981732973708e-01 9.977899443184e-01 -9.973701827725e-01 9.969140403446e-01 9.964215470375e-01 9.958927352436e-01 -9.953276397415e-01 9.947262976943e-01 9.940887486459e-01 9.934150345180e-01 -9.927051996072e-01 9.919592905814e-01 9.911773564758e-01 9.903594486895e-01 -9.895056209813e-01 9.886159294654e-01 9.876904326070e-01 9.867291912182e-01 -9.857322684524e-01 9.846997298001e-01 9.836316430835e-01 9.825280784509e-01 -9.813891083719e-01 9.802148076310e-01 9.790052533223e-01 9.777605248430e-01 -9.764807038877e-01 9.751658744415e-01 9.738161227738e-01 9.724315374315e-01 -9.710122092318e-01 9.695582312554e-01 9.680696988392e-01 9.665467095687e-01 -9.649893632704e-01 9.633977620041e-01 9.617720100548e-01 9.601122139247e-01 -9.584184823246e-01 9.566909261659e-01 9.549296585514e-01 9.531347947667e-01 -9.513064522713e-01 9.494447506893e-01 9.475498117999e-01 9.456217595284e-01 -9.436607199360e-01 9.416668212101e-01 9.396401936544e-01 9.375809696787e-01 -9.354892837886e-01 9.333652725750e-01 9.312090747032e-01 9.290208309025e-01 -9.268006839549e-01 9.245487786841e-01 9.222652619442e-01 9.199502826083e-01 -9.176039915569e-01 9.152265416659e-01 9.128180877950e-01 9.103787867756e-01 -9.079087973983e-01 9.054082804010e-01 9.028773984559e-01 9.003163161571e-01 -8.977252000079e-01 8.951042184077e-01 8.924535416387e-01 8.897733418530e-01 -8.870637930592e-01 8.843250711084e-01 8.815573536812e-01 8.787608202735e-01 -8.759356521824e-01 8.730820324926e-01 8.702001460617e-01 8.672901795064e-01 -8.643523211873e-01 8.613867611947e-01 8.583936913341e-01 8.553733051108e-01 -8.523257977150e-01 8.492513660070e-01 8.461502085016e-01 8.430225253528e-01 -8.398685183386e-01 8.366883908446e-01 8.334823478491e-01 8.302505959068e-01 -8.269933431327e-01 8.237107991864e-01 8.204031752555e-01 8.170706840394e-01 -8.137135397329e-01 8.103319580097e-01 8.069261560055e-01 8.034963523014e-01 -8.000427669069e-01 7.965656212430e-01 7.930651381253e-01 7.895415417462e-01 -7.859950576585e-01 7.824259127570e-01 7.788343352617e-01 7.752205547002e-01 -7.715848018895e-01 7.679273089188e-01 7.642483091312e-01 7.605480371061e-01 -7.568267286406e-01 7.530846207322e-01 7.493219515597e-01 7.455389604655e-01 -7.417358879367e-01 7.379129755873e-01 7.340704661390e-01 7.302086034029e-01 -7.263276322605e-01 7.224277986455e-01 7.185093495243e-01 7.145725328773e-01 -7.106175976801e-01 7.066447938841e-01 7.026543723976e-01 6.986465850664e-01 -6.946216846549e-01 6.905799248262e-01 6.865215601232e-01 6.824468459489e-01 -6.783560385470e-01 6.742493949824e-01 6.701271731211e-01 6.659896316114e-01 -6.618370298633e-01 6.576696280293e-01 6.534876869844e-01 6.492914683060e-01 -6.450812342546e-01 6.408572477532e-01 6.366197723676e-01 6.323690722863e-01 -6.281054123006e-01 6.238290577842e-01 6.195402746735e-01 6.152393294468e-01 -6.109264891046e-01 6.066020211492e-01 6.022661935645e-01 5.979192747957e-01 -5.935615337287e-01 5.891932396702e-01 5.848146623272e-01 5.804260717864e-01 -5.760277384943e-01 5.716199332362e-01 5.672029271161e-01 5.627769915364e-01 -5.583423981772e-01 5.538994189759e-01 5.494483261068e-01 5.449893919606e-01 -5.405228891241e-01 5.360490903593e-01 5.315682685834e-01 5.270806968481e-01 -5.225866483190e-01 5.180863962556e-01 5.135802139904e-01 5.090683749084e-01 -5.045511524271e-01 5.000288199758e-01 4.955016509752e-01 4.909699188169e-01 -4.864338968434e-01 4.818938583271e-01 4.773500764507e-01 4.728028242863e-01 -4.682523747752e-01 4.636990007081e-01 4.591429747041e-01 4.545845691910e-01 -4.500240563851e-01 4.454617082707e-01 4.408977965803e-01 4.363325927745e-01 -4.317663680215e-01 4.271993931779e-01 4.226319387679e-01 4.180642749639e-01 -4.134966715663e-01 4.089293979839e-01 4.043627232139e-01 3.997969158223e-01 -3.952322439240e-01 3.906689751635e-01 3.861073766949e-01 3.815477151625e-01 -3.769902566816e-01 3.724352668185e-01 3.678830105718e-01 3.633337523523e-01 -3.587877559645e-01 3.542452845871e-01 3.497066007538e-01 3.451719663342e-01 -3.406416425153e-01 3.361158897820e-01 3.315949678984e-01 3.270791358894e-01 -3.225686520215e-01 3.180637737845e-01 3.135647578730e-01 3.090718601677e-01 -3.045853357170e-01 3.001054387190e-01 2.956324225032e-01 2.911665395122e-01 -2.867080412837e-01 2.822571784326e-01 2.778142006333e-01 2.733793566015e-01 -2.689528940770e-01 2.645350598058e-01 2.601260995227e-01 2.557262579339e-01 -2.513357786996e-01 2.469549044171e-01 2.425838766033e-01 2.382229356781e-01 -2.338723209471e-01 2.295322705852e-01 2.252030216196e-01 2.208848099134e-01 -2.165778701492e-01 2.122824358125e-01 2.079987391756e-01 2.037270112815e-01 -1.994674819278e-01 1.952203796510e-01 1.909859317102e-01 1.867643640722e-01 -1.825559013951e-01 1.783607670136e-01 1.741791829233e-01 1.700113697654e-01 -1.658575468121e-01 1.617179319512e-01 1.575927416715e-01 1.534821910481e-01 -1.493864937279e-01 1.453058619150e-01 1.412405063565e-01 1.371906363282e-01 -1.331564596210e-01 1.291381825264e-01 1.251360098231e-01 1.211501447634e-01 -1.171807890593e-01 1.132281428698e-01 1.092924047870e-01 1.053737718236e-01 -1.014724393995e-01 9.758860132924e-02 9.372244980940e-02 8.987417540592e-02 -8.604396704183e-02 8.223201198502e-02 7.843849583619e-02 7.466360251685e-02 -7.090751425763e-02 6.717041158660e-02 6.345247331779e-02 5.975387653992e-02 -5.607479660513e-02 5.241540711806e-02 4.877587992489e-02 4.515638510269e-02 -4.155709094883e-02 3.797816397057e-02 3.441976887483e-02 3.088206855808e-02 -2.736522409643e-02 2.386939473581e-02 2.039473788242e-02 1.694140909321e-02 -1.350956206661e-02 1.009934863341e-02 6.710918747778e-03 3.344420478420e-03 --2.512273976170e-14 -3.322198415490e-03 -6.622032406798e-03 -9.899361531813e-03 --1.315404727543e-02 -1.638595305741e-02 -1.959494424002e-02 -2.278088813553e-02 --2.594365401354e-02 -2.908311310815e-02 -3.219913862489e-02 -3.529160574762e-02 --3.836039164512e-02 -4.140537547759e-02 -4.442643840297e-02 -4.742346358305e-02 --5.039633618947e-02 -5.334494340950e-02 -5.626917445168e-02 -5.916892055125e-02 --6.204407497547e-02 -6.489453302871e-02 -6.772019205738e-02 -7.052095145470e-02 --7.329671266530e-02 -7.604737918967e-02 -7.877285658831e-02 -8.147305248593e-02 --8.414787657523e-02 -8.679724062070e-02 -8.942105846215e-02 -9.201924601808e-02 --9.459172128888e-02 -9.713840435985e-02 -9.965921740409e-02 -1.021540846851e-01 --1.046229325594e-01 -1.070656894788e-01 -1.094822859923e-01 -1.118726547488e-01 --1.142367304979e-01 -1.165744500923e-01 -1.188857524890e-01 -1.211705787506e-01 --1.234288720462e-01 -1.256605776527e-01 -1.278656429553e-01 -1.300440174480e-01 --1.321956527344e-01 -1.343205025276e-01 -1.364185226502e-01 -1.384896710345e-01 --1.405339077219e-01 -1.425511948627e-01 -1.445414967153e-01 -1.465047796453e-01 --1.484410121248e-01 -1.503501647310e-01 -1.522322101451e-01 -1.540871231506e-01 --1.559148806315e-01 -1.577154615709e-01 -1.594888470486e-01 -1.612350202393e-01 --1.629539664097e-01 -1.646456729164e-01 -1.663101292031e-01 -1.679473267977e-01 --1.695572593094e-01 -1.711399224253e-01 -1.726953139072e-01 -1.742234335878e-01 --1.757242833674e-01 -1.771978672099e-01 -1.786441911383e-01 -1.800632632314e-01 --1.814550936186e-01 -1.828196944759e-01 -1.841570800207e-01 -1.854672665076e-01 --1.867502722230e-01 -1.880061174798e-01 -1.892348246122e-01 -1.904364179705e-01 --1.916109239149e-01 -1.927583708101e-01 -1.938787890190e-01 -1.949722108968e-01 --1.960386707848e-01 -1.970782050034e-01 -1.980908518463e-01 -1.990766515731e-01 --2.000356464025e-01 -2.009678805055e-01 -2.018733999978e-01 -2.027522529330e-01 --2.036044892942e-01 -2.044301609872e-01 -2.052293218322e-01 -2.060020275558e-01 --2.067483357832e-01 -2.074683060295e-01 -2.081619996917e-01 -2.088294800398e-01 --2.094708122085e-01 -2.100860631877e-01 -2.106753018143e-01 -2.112385987623e-01 --2.117760265342e-01 -2.122876594511e-01 -2.127735736434e-01 -2.132338470410e-01 --2.136685593635e-01 -2.140777921103e-01 -2.144616285503e-01 -2.148201537121e-01 --2.151534543730e-01 -2.154616190492e-01 -2.157447379844e-01 -2.160029031399e-01 --2.162362081830e-01 -2.164447484765e-01 -2.166286210670e-01 -2.167879246744e-01 --2.169227596796e-01 -2.170332281139e-01 -2.171194336468e-01 -2.171814815742e-01 --2.172194788069e-01 -2.172335338584e-01 -2.172237568329e-01 -2.171902594128e-01 --2.171331548467e-01 -2.170525579367e-01 -2.169485850260e-01 -2.168213539861e-01 --2.166709842043e-01 -2.164975965702e-01 -2.163013134635e-01 -2.160822587401e-01 --2.158405577195e-01 -2.155763371712e-01 -2.152897253014e-01 -2.149808517391e-01 --2.146498475232e-01 -2.142968450882e-01 -2.139219782505e-01 -2.135253821946e-01 --2.131071934591e-01 -2.126675499226e-01 -2.122065907892e-01 -2.117244565748e-01 --2.112212890922e-01 -2.106972314371e-01 -2.101524279729e-01 -2.095870243170e-01 --2.090011673252e-01 -2.083950050775e-01 -2.077686868629e-01 -2.071223631645e-01 --2.064561856448e-01 -2.057703071299e-01 -2.050648815952e-01 -2.043400641494e-01 --2.035960110195e-01 -2.028328795354e-01 -2.020508281143e-01 -2.012500162453e-01 --2.004306044739e-01 -1.995927543858e-01 -1.987366285918e-01 -1.978623907118e-01 --1.969702053588e-01 -1.960602381230e-01 -1.951326555559e-01 -1.941876251546e-01 --1.932253153449e-01 -1.922458954659e-01 -1.912495357537e-01 -1.902364073248e-01 --1.892066821602e-01 -1.881605330886e-01 -1.870981337707e-01 -1.860196586822e-01 --1.849252830975e-01 -1.838151830732e-01 -1.826895354317e-01 -1.815485177444e-01 --1.803923083150e-01 -1.792210861632e-01 -1.780350310077e-01 -1.768343232495e-01 --1.756191439552e-01 -1.743896748402e-01 -1.731460982522e-01 -1.718885971536e-01 --1.706173551053e-01 -1.693325562496e-01 -1.680343852933e-01 -1.667230274906e-01 --1.653986686265e-01 -1.640614949995e-01 -1.627116934048e-01 -1.613494511171e-01 --1.599749558740e-01 -1.585883958584e-01 -1.571899596821e-01 -1.557798363681e-01 --1.543582153342e-01 -1.529252863754e-01 -1.514812396472e-01 -1.500262656484e-01 --1.485605552040e-01 -1.470842994484e-01 -1.455976898080e-01 -1.441009179842e-01 --1.425941759366e-01 -1.410776558659e-01 -1.395515501966e-01 -1.380160515603e-01 --1.364713527783e-01 -1.349176468453e-01 -1.333551269115e-01 -1.317839862665e-01 --1.302044183217e-01 -1.286166165939e-01 -1.270207746877e-01 -1.254170862794e-01 --1.238057450998e-01 -1.221869449169e-01 -1.205608795201e-01 -1.189277427023e-01 --1.172877282441e-01 -1.156410298963e-01 -1.139878413639e-01 -1.123283562887e-01 --1.106627682334e-01 -1.089912706645e-01 -1.073140569360e-01 -1.056313202728e-01 --1.039432537543e-01 -1.022500502977e-01 -1.005519026420e-01 -9.884900333142e-02 --9.714154469927e-02 -9.542971885147e-02 -9.371371765052e-02 -9.199373269930e-02 --9.026995532499e-02 -8.854257656300e-02 -8.681178714101e-02 -8.507777746301e-02 --8.334073759342e-02 -8.160085724131e-02 -7.985832574460e-02 -7.811333205436e-02 --7.636606471922e-02 -7.461671186973e-02 -7.286546120293e-02 -7.111249996683e-02 --6.935801494510e-02 -6.760219244173e-02 -6.584521826582e-02 -6.408727771638e-02 --6.232855556727e-02 -6.056923605220e-02 -5.880950284972e-02 -5.704953906845e-02 --5.528952723219e-02 -5.352964926532e-02 -5.177008647805e-02 -5.001101955200e-02 --4.825262852562e-02 -4.649509277989e-02 -4.473859102399e-02 -4.298330128108e-02 --4.122940087420e-02 -3.947706641221e-02 -3.772647377587e-02 -3.597779810396e-02 --3.423121377953e-02 -3.248689441622e-02 -3.074501284469e-02 -2.900574109912e-02 --2.726925040385e-02 -2.553571116007e-02 -2.380529293261e-02 -2.207816443691e-02 --2.035449352594e-02 -1.863444717740e-02 -1.691819148084e-02 -1.520589162503e-02 --1.349771188539e-02 -1.179381561144e-02 -1.009436521452e-02 -8.399522155443e-03 --6.709446932398e-03 -5.024299068872e-03 -3.344237101723e-03 -1.669418569349e-03 -2.512273976170e-14 1.663863099950e-03 3.322016257243e-03 4.974306043361e-03 -6.620580085661e-03 - Type L N - 0 0 2 -1.000000000000e+00 9.999588771557e-01 9.998355147105e-01 9.996299309272e-01 -9.993421562398e-01 9.989722332485e-01 9.985202167122e-01 9.979861735385e-01 -9.973701827725e-01 9.966723355824e-01 9.958927352436e-01 9.950314971204e-01 -9.940887486459e-01 9.930646292992e-01 9.919592905814e-01 9.907728959881e-01 -9.895056209813e-01 9.881576529582e-01 9.867291912182e-01 9.852204469278e-01 -9.836316430835e-01 9.819630144724e-01 9.802148076310e-01 9.783872808018e-01 -9.764807038877e-01 9.744953584044e-01 9.724315374315e-01 9.702895455599e-01 -9.680696988392e-01 9.657723247216e-01 9.633977620041e-01 9.609463607696e-01 -9.584184823246e-01 9.558144991363e-01 9.531347947667e-01 9.503797638053e-01 -9.475498117999e-01 9.446453551853e-01 9.416668212101e-01 9.386146478614e-01 -9.354892837886e-01 9.322911882240e-01 9.290208309025e-01 9.256786919789e-01 -9.222652619442e-01 9.187810415390e-01 9.152265416659e-01 9.116022833003e-01 -9.079087973984e-01 9.041466248047e-01 9.003163161571e-01 8.964184317905e-01 -8.924535416387e-01 8.884222251345e-01 8.843250711084e-01 8.801626776859e-01 -8.759356521824e-01 8.716446109973e-01 8.672901795064e-01 8.628729919524e-01 -8.583936913341e-01 8.538529292946e-01 8.492513660070e-01 8.445896700594e-01 -8.398685183386e-01 8.350885959116e-01 8.302505959068e-01 8.253552193925e-01 -8.204031752555e-01 8.153951800773e-01 8.103319580098e-01 8.052142406486e-01 -8.000427669069e-01 7.948182828859e-01 7.895415417463e-01 7.842133035765e-01 -7.788343352617e-01 7.734054103500e-01 7.679273089188e-01 7.624008174394e-01 -7.568267286407e-01 7.512058413721e-01 7.455389604655e-01 7.398268965953e-01 -7.340704661390e-01 7.282704910361e-01 7.224277986455e-01 7.165432216036e-01 -7.106175976801e-01 7.046517696335e-01 6.986465850664e-01 6.926028962792e-01 -6.865215601232e-01 6.804034378539e-01 6.742493949824e-01 6.680603011268e-01 -6.618370298633e-01 6.555804585759e-01 6.492914683061e-01 6.429709436022e-01 -6.366197723676e-01 6.302388457091e-01 6.238290577843e-01 6.173913056491e-01 -6.109264891046e-01 6.044355105433e-01 5.979192747957e-01 5.913786889758e-01 -5.848146623272e-01 5.782281060679e-01 5.716199332362e-01 5.649910585350e-01 -5.583423981772e-01 5.516748697302e-01 5.449893919607e-01 5.382868846788e-01 -5.315682685834e-01 5.248344651060e-01 5.180863962557e-01 5.113249844634e-01 -5.045511524271e-01 4.977658229563e-01 4.909699188170e-01 4.841643625769e-01 -4.773500764507e-01 4.705279821459e-01 4.636990007081e-01 4.568640523675e-01 -4.500240563851e-01 4.431799308996e-01 4.363325927745e-01 4.294829574453e-01 -4.226319387680e-01 4.157804488669e-01 4.089293979839e-01 4.020796943278e-01 -3.952322439240e-01 3.883879504653e-01 3.815477151626e-01 3.747124365969e-01 -3.678830105718e-01 3.610603299659e-01 3.542452845871e-01 3.474387610269e-01 -3.406416425154e-01 3.338548087774e-01 3.270791358894e-01 3.203154961369e-01 -3.135647578731e-01 3.068277853780e-01 3.001054387190e-01 2.933985736121e-01 -2.867080412837e-01 2.800346883341e-01 2.733793566015e-01 2.667428830274e-01 -2.601260995227e-01 2.535298328350e-01 2.469549044171e-01 2.404021302968e-01 -2.338723209472e-01 2.273662811590e-01 2.208848099135e-01 2.144287002568e-01 -2.079987391756e-01 2.015957074739e-01 1.952203796510e-01 1.888735237814e-01 -1.825559013952e-01 1.762682673601e-01 1.700113697654e-01 1.637859498066e-01 -1.575927416715e-01 1.514324724284e-01 1.453058619151e-01 1.392136226292e-01 -1.331564596211e-01 1.271350703867e-01 1.211501447634e-01 1.152023648264e-01 -1.092924047871e-01 1.034209308930e-01 9.758860132928e-02 9.179606612181e-02 -8.604396704186e-02 8.033293751256e-02 7.466360251689e-02 6.903657850744e-02 -6.345247331783e-02 5.791188607580e-02 5.241540711809e-02 4.696361790703e-02 -4.155709094886e-02 3.619638971384e-02 3.088206855812e-02 2.561467264741e-02 -2.039473788245e-02 1.522279082631e-02 1.009934863345e-02 5.024918980689e-03 -7.389596982152e-15 -4.974919786837e-03 -9.899361531780e-03 -1.477285612207e-02 --1.959494423999e-02 -2.436517642069e-02 -2.908311310811e-02 -3.374832470902e-02 --3.836039164509e-02 -4.291890440306e-02 -4.742346358302e-02 -5.187367994466e-02 --5.626917445165e-02 -6.060957831403e-02 -6.489453302868e-02 -6.912369041777e-02 --7.329671266528e-02 -7.741327235156e-02 -8.147305248590e-02 -8.547574653711e-02 --8.942105846213e-02 -9.330870273266e-02 -9.713840435983e-02 -1.009098989168e-01 --1.046229325594e-01 -1.082772620449e-01 -1.118726547487e-01 -1.154088886789e-01 --1.188857524890e-01 -1.223030454888e-01 -1.256605776527e-01 -1.289581696271e-01 --1.321956527344e-01 -1.353728689764e-01 -1.384896710345e-01 -1.415459222689e-01 --1.445414967152e-01 -1.474762790796e-01 -1.503501647310e-01 -1.531630596929e-01 --1.559148806314e-01 -1.586055548431e-01 -1.612350202393e-01 -1.638032253296e-01 --1.663101292030e-01 -1.687557015072e-01 -1.711399224253e-01 -1.734627826523e-01 --1.757242833674e-01 -1.779244362065e-01 -1.800632632314e-01 -1.821407968977e-01 --1.841570800207e-01 -1.861121657396e-01 -1.880061174797e-01 -1.898390089126e-01 --1.916109239149e-01 -1.933219565247e-01 -1.949722108968e-01 -1.965618012556e-01 --1.980908518463e-01 -1.995594968849e-01 -2.009678805055e-01 -2.023161567062e-01 --2.036044892942e-01 -2.048330518274e-01 -2.060020275558e-01 -2.071116093607e-01 --2.081619996917e-01 -2.091534105031e-01 -2.100860631877e-01 -2.109601885094e-01 --2.117760265342e-01 -2.125338265592e-01 -2.132338470410e-01 -2.138763555209e-01 --2.144616285503e-01 -2.149899516135e-01 -2.154616190492e-01 -2.158769339703e-01 --2.162362081830e-01 -2.165397621037e-01 -2.167879246744e-01 -2.169810332771e-01 --2.171194336468e-01 -2.172034797827e-01 -2.172335338584e-01 -2.172099661307e-01 --2.171331548467e-01 -2.170034861501e-01 -2.168213539861e-01 -2.165871600048e-01 --2.163013134635e-01 -2.159642311277e-01 -2.155763371712e-01 -2.151380630747e-01 --2.146498475232e-01 -2.141121363026e-01 -2.135253821946e-01 -2.128900448716e-01 --2.122065907892e-01 -2.114754930785e-01 -2.106972314371e-01 -2.098722920193e-01 --2.090011673253e-01 -2.080843560887e-01 -2.071223631645e-01 -2.061156994150e-01 --2.050648815952e-01 -2.039704322376e-01 -2.028328795354e-01 -2.016527572263e-01 --2.004306044739e-01 -1.991669657493e-01 -1.978623907118e-01 -1.965174340891e-01 --1.951326555559e-01 -1.937086196133e-01 -1.922458954659e-01 -1.907450569001e-01 --1.892066821602e-01 -1.876313538246e-01 -1.860196586822e-01 -1.843721876067e-01 --1.826895354318e-01 -1.809723008254e-01 -1.792210861633e-01 -1.774364974027e-01 --1.756191439552e-01 -1.737696385594e-01 -1.718885971536e-01 -1.699766387472e-01 --1.680343852933e-01 -1.660624615594e-01 -1.640614949995e-01 -1.620321156246e-01 --1.599749558740e-01 -1.578906504859e-01 -1.557798363681e-01 -1.536431524689e-01 --1.514812396472e-01 -1.492947405431e-01 -1.470842994485e-01 -1.448505621774e-01 --1.425941759367e-01 -1.403157891963e-01 -1.380160515603e-01 -1.356956136373e-01 --1.333551269115e-01 -1.309952436141e-01 -1.286166165939e-01 -1.262198991893e-01 --1.238057450998e-01 -1.213748082581e-01 -1.189277427024e-01 -1.164652024486e-01 --1.139878413639e-01 -1.114963130395e-01 -1.089912706645e-01 -1.064733669002e-01 --1.039432537543e-01 -1.014015824560e-01 -9.884900333145e-02 -9.628616568006e-02 --9.371371765055e-02 -9.113230611832e-02 -8.854257656303e-02 -8.594517294687e-02 --8.334073759345e-02 -8.072991106737e-02 -7.811333205439e-02 -7.549163724239e-02 --7.286546120296e-02 -7.023543627378e-02 -6.760219244177e-02 -6.496635722697e-02 --6.232855556730e-02 -5.968940970410e-02 -5.704953906848e-02 -5.440956016866e-02 --5.177008647808e-02 -4.913172832449e-02 -4.649509277992e-02 -4.386078355168e-02 --4.122940087423e-02 -3.860154140214e-02 -3.597779810400e-02 -3.335876015735e-02 --3.074501284472e-02 -2.813713745071e-02 -2.553571116010e-02 -2.294130695715e-02 --2.035449352598e-02 -1.777583515209e-02 -1.520589162507e-02 -1.264521814239e-02 --1.009436521455e-02 -7.553878571246e-03 -5.024299068905e-03 -2.506162599395e-03 --7.389596982152e-15 2.493663035294e-03 4.974306043329e-03 7.441413877863e-03 -9.894476794447e-03 1.233299053393e-02 1.475645640461e-02 1.716438136306e-02 -1.955627809357e-02 2.193166508616e-02 2.429006671325e-02 2.663101330492e-02 -2.895404122269e-02 3.125869293193e-02 3.354451707279e-02 3.581106852968e-02 -3.805790849927e-02 4.028460455704e-02 4.249073072231e-02 4.467586752178e-02 -4.683960205159e-02 4.898152803781e-02 5.110124589545e-02 5.319836278591e-02 -5.527249267288e-02 5.732325637672e-02 5.935028162727e-02 6.135320311502e-02 -6.333166254088e-02 6.528530866416e-02 6.721379734912e-02 6.911679160987e-02 -7.099396165367e-02 7.284498492262e-02 7.466954613379e-02 7.646733731766e-02 -7.823805785504e-02 7.998141451225e-02 8.169712147484e-02 8.338490037948e-02 -8.504448034442e-02 8.667559799815e-02 8.827799750657e-02 8.985143059840e-02 -9.139565658906e-02 9.291044240281e-02 9.439556259334e-02 9.585079936266e-02 -9.727594257839e-02 9.867078978937e-02 1.000351462397e-01 1.013688248810e-01 -1.026716463832e-01 1.039434391438e-01 1.051840392948e-01 1.063932907093e-01 -1.075710450048e-01 1.087171615467e-01 1.098315074484e-01 1.109139575712e-01 -1.119643945218e-01 1.129827086485e-01 1.139687980356e-01 1.149225684962e-01 -1.158439335639e-01 1.167328144823e-01 1.175891401928e-01 1.184128473218e-01 -1.192038801653e-01 1.199621906724e-01 1.206877384270e-01 1.213804906286e-01 -1.220404220705e-01 1.226675151177e-01 1.232617596819e-01 1.238231531963e-01 -1.243517005880e-01 1.248474142494e-01 1.253103140077e-01 1.257404270933e-01 -1.261377881068e-01 1.265024389837e-01 1.268344289589e-01 1.271338145288e-01 -1.274006594126e-01 1.276350345115e-01 1.278370178673e-01 1.280066946191e-01 -1.281441569587e-01 1.282495040846e-01 1.283228421551e-01 1.283642842391e-01 -1.283739502669e-01 1.283519669785e-01 1.282984678711e-01 1.282135931456e-01 -1.280974896510e-01 1.279503108287e-01 1.277722166546e-01 1.275633735804e-01 -1.273239544735e-01 1.270541385561e-01 1.267541113426e-01 1.264240645763e-01 -1.260641961644e-01 1.256747101130e-01 1.252558164592e-01 1.248077312040e-01 -1.243306762428e-01 1.238248792955e-01 1.232905738353e-01 1.227279990164e-01 -1.221373996013e-01 1.215190258860e-01 1.208731336255e-01 1.201999839574e-01 -1.194998433250e-01 1.187729833992e-01 1.180196810003e-01 1.172402180176e-01 -1.164348813293e-01 1.156039627211e-01 1.147477588040e-01 1.138665709311e-01 -1.129607051143e-01 1.120304719395e-01 1.110761864814e-01 1.100981682176e-01 -1.090967409418e-01 1.080722326769e-01 1.070249755862e-01 1.059553058858e-01 -1.048635637545e-01 1.037500932445e-01 1.026152421907e-01 1.014593621201e-01 -1.002828081598e-01 9.908593894552e-02 9.786911652869e-02 9.663270628381e-02 -9.537707681491e-02 9.410259986172e-02 9.280965020549e-02 9.149860557431e-02 -9.016984654819e-02 8.882375646372e-02 8.746072131842e-02 8.608112967483e-02 -8.468537256426e-02 8.327384339038e-02 8.184693783247e-02 8.040505374852e-02 -7.894859107812e-02 7.747795174524e-02 7.599353956071e-02 7.449576012479e-02 -7.298502072940e-02 7.146173026050e-02 6.992629910019e-02 6.837913902896e-02 -6.682066312777e-02 6.525128568021e-02 6.367142207471e-02 6.208148870668e-02 -6.048190288085e-02 5.887308271361e-02 5.725544703546e-02 5.562941529365e-02 -5.399540745492e-02 5.235384390837e-02 5.070514536864e-02 4.904973277921e-02 -4.738802721591e-02 4.572044979079e-02 4.404742155614e-02 4.236936340890e-02 -4.068669599533e-02 3.899983961602e-02 3.730921413129e-02 3.561523886688e-02 -3.391833252013e-02 3.221891306649e-02 3.051739766655e-02 2.881420257340e-02 -2.710974304059e-02 2.540443323047e-02 2.369868612311e-02 2.199291342571e-02 -2.028752548258e-02 1.858293118562e-02 1.687953788549e-02 1.517775130329e-02 -1.347797544288e-02 1.178061250383e-02 1.008606279508e-02 8.394724649155e-03 -6.706994337188e-03 5.023265984567e-03 3.343931487334e-03 1.669380429316e-03 -7.389596982152e-15 -1.663825086774e-03 -3.321712673450e-03 -4.973283238437e-03 --6.618159975091e-03 - Type L N - 0 0 3 -1.000000000000e+00 9.999268934227e-01 9.997075929310e-01 9.993421562398e-01 -9.988306795205e-01 9.981732973708e-01 9.973701827725e-01 9.964215470375e-01 -9.953276397415e-01 9.940887486459e-01 9.927051996072e-01 9.911773564758e-01 -9.895056209813e-01 9.876904326070e-01 9.857322684524e-01 9.836316430835e-01 -9.813891083719e-01 9.790052533223e-01 9.764807038877e-01 9.738161227738e-01 -9.710122092318e-01 9.680696988392e-01 9.649893632704e-01 9.617720100548e-01 -9.584184823246e-01 9.549296585514e-01 9.513064522713e-01 9.475498117999e-01 -9.436607199360e-01 9.396401936544e-01 9.354892837886e-01 9.312090747032e-01 -9.268006839549e-01 9.222652619442e-01 9.176039915569e-01 9.128180877951e-01 -9.079087973983e-01 9.028773984559e-01 8.977252000079e-01 8.924535416387e-01 -8.870637930592e-01 8.815573536812e-01 8.759356521824e-01 8.702001460618e-01 -8.643523211873e-01 8.583936913341e-01 8.523257977150e-01 8.461502085016e-01 -8.398685183386e-01 8.334823478491e-01 8.269933431327e-01 8.204031752555e-01 -8.137135397329e-01 8.069261560055e-01 8.000427669069e-01 7.930651381253e-01 -7.859950576585e-01 7.788343352617e-01 7.715848018895e-01 7.642483091312e-01 -7.568267286407e-01 7.493219515597e-01 7.417358879367e-01 7.340704661390e-01 -7.263276322605e-01 7.185093495243e-01 7.106175976801e-01 7.026543723976e-01 -6.946216846549e-01 6.865215601232e-01 6.783560385471e-01 6.701271731211e-01 -6.618370298633e-01 6.534876869844e-01 6.450812342547e-01 6.366197723676e-01 -6.281054123006e-01 6.195402746735e-01 6.109264891046e-01 6.022661935646e-01 -5.935615337287e-01 5.848146623272e-01 5.760277384943e-01 5.672029271161e-01 -5.583423981772e-01 5.494483261068e-01 5.405228891241e-01 5.315682685834e-01 -5.225866483191e-01 5.135802139904e-01 5.045511524271e-01 4.955016509752e-01 -4.864338968434e-01 4.773500764507e-01 4.682523747753e-01 4.591429747041e-01 -4.500240563851e-01 4.408977965803e-01 4.317663680216e-01 4.226319387680e-01 -4.134966715663e-01 4.043627232139e-01 3.952322439240e-01 3.861073766949e-01 -3.769902566816e-01 3.678830105718e-01 3.587877559645e-01 3.497066007538e-01 -3.406416425154e-01 3.315949678984e-01 3.225686520215e-01 3.135647578731e-01 -3.045853357170e-01 2.956324225032e-01 2.867080412837e-01 2.778142006333e-01 -2.689528940770e-01 2.601260995227e-01 2.513357786996e-01 2.425838766033e-01 -2.338723209472e-01 2.252030216196e-01 2.165778701492e-01 2.079987391756e-01 -1.994674819278e-01 1.909859317103e-01 1.825559013952e-01 1.741791829233e-01 -1.658575468121e-01 1.575927416715e-01 1.493864937280e-01 1.412405063565e-01 -1.331564596210e-01 1.251360098231e-01 1.171807890593e-01 1.092924047870e-01 -1.014724393995e-01 9.372244980942e-02 8.604396704184e-02 7.843849583621e-02 -7.090751425765e-02 6.345247331781e-02 5.607479660515e-02 4.877587992491e-02 -4.155709094885e-02 3.441976887485e-02 2.736522409644e-02 2.039473788244e-02 -1.350956206663e-02 6.710918747795e-03 -8.583855418087e-15 -6.622032406781e-03 --1.315404727542e-02 -1.959494424001e-02 -2.594365401353e-02 -3.219913862487e-02 --3.836039164510e-02 -4.442643840296e-02 -5.039633618945e-02 -5.626917445166e-02 --6.204407497546e-02 -6.772019205736e-02 -7.329671266529e-02 -7.877285658830e-02 --8.414787657521e-02 -8.942105846214e-02 -9.459172128887e-02 -9.965921740407e-02 --1.046229325594e-01 -1.094822859923e-01 -1.142367304979e-01 -1.188857524890e-01 --1.234288720462e-01 -1.278656429553e-01 -1.321956527344e-01 -1.364185226502e-01 --1.405339077219e-01 -1.445414967153e-01 -1.484410121248e-01 -1.522322101451e-01 --1.559148806314e-01 -1.594888470486e-01 -1.629539664097e-01 -1.663101292031e-01 --1.695572593094e-01 -1.726953139072e-01 -1.757242833674e-01 -1.786441911383e-01 --1.814550936186e-01 -1.841570800207e-01 -1.867502722230e-01 -1.892348246122e-01 --1.916109239149e-01 -1.938787890189e-01 -1.960386707847e-01 -1.980908518463e-01 --2.000356464025e-01 -2.018733999978e-01 -2.036044892942e-01 -2.052293218322e-01 --2.067483357832e-01 -2.081619996917e-01 -2.094708122085e-01 -2.106753018143e-01 --2.117760265342e-01 -2.127735736434e-01 -2.136685593635e-01 -2.144616285503e-01 --2.151534543730e-01 -2.157447379844e-01 -2.162362081830e-01 -2.166286210670e-01 --2.169227596796e-01 -2.171194336468e-01 -2.172194788069e-01 -2.172237568329e-01 --2.171331548467e-01 -2.169485850260e-01 -2.166709842043e-01 -2.163013134635e-01 --2.158405577195e-01 -2.152897253014e-01 -2.146498475232e-01 -2.139219782505e-01 --2.131071934591e-01 -2.122065907892e-01 -2.112212890922e-01 -2.101524279729e-01 --2.090011673253e-01 -2.077686868629e-01 -2.064561856448e-01 -2.050648815952e-01 --2.035960110195e-01 -2.020508281143e-01 -2.004306044739e-01 -1.987366285918e-01 --1.969702053588e-01 -1.951326555559e-01 -1.932253153449e-01 -1.912495357537e-01 --1.892066821602e-01 -1.870981337707e-01 -1.849252830975e-01 -1.826895354318e-01 --1.803923083151e-01 -1.780350310077e-01 -1.756191439552e-01 -1.731460982522e-01 --1.706173551053e-01 -1.680343852933e-01 -1.653986686265e-01 -1.627116934048e-01 --1.599749558740e-01 -1.571899596821e-01 -1.543582153342e-01 -1.514812396472e-01 --1.485605552041e-01 -1.455976898080e-01 -1.425941759367e-01 -1.395515501966e-01 --1.364713527783e-01 -1.333551269115e-01 -1.302044183218e-01 -1.270207746877e-01 --1.238057450998e-01 -1.205608795201e-01 -1.172877282441e-01 -1.139878413639e-01 --1.106627682334e-01 -1.073140569360e-01 -1.039432537543e-01 -1.005519026420e-01 --9.714154469929e-02 -9.371371765054e-02 -9.026995532500e-02 -8.681178714103e-02 --8.334073759344e-02 -7.985832574462e-02 -7.636606471923e-02 -7.286546120294e-02 --6.935801494512e-02 -6.584521826584e-02 -6.232855556729e-02 -5.880950284974e-02 --5.528952723221e-02 -5.177008647807e-02 -4.825262852563e-02 -4.473859102400e-02 --4.122940087421e-02 -3.772647377589e-02 -3.423121377955e-02 -3.074501284471e-02 --2.726925040387e-02 -2.380529293263e-02 -2.035449352596e-02 -1.691819148085e-02 --1.349771188540e-02 -1.009436521454e-02 -6.709446932414e-03 -3.344237101739e-03 -8.583855418087e-15 3.322016257227e-03 6.620580085644e-03 9.894476794462e-03 -1.314250894107e-02 1.636349667822e-02 1.955627809359e-02 2.271970954158e-02 -2.585266596732e-02 2.895404122270e-02 3.202274837443e-02 3.505772000398e-02 -3.805790849929e-02 4.102228633832e-02 4.394984636413e-02 4.683960205160e-02 -4.969058776567e-02 5.250185901098e-02 5.527249267289e-02 5.800158724986e-02 -6.068826307699e-02 6.333166254089e-02 6.593095028556e-02 6.848531340948e-02 -7.099396165368e-02 7.345612758088e-02 7.587106674557e-02 7.823805785505e-02 -8.055640292137e-02 8.282542740419e-02 8.504448034443e-02 8.721293448883e-02 -8.933018640529e-02 9.139565658907e-02 9.340878955969e-02 9.536905394874e-02 -9.727594257840e-02 9.912897253077e-02 1.009276852080e-01 1.026716463832e-01 -1.043604462423e-01 1.059936994162e-01 1.075710450049e-01 1.090921465908e-01 -1.105566922449e-01 1.119643945218e-01 1.133149904477e-01 1.146082414973e-01 -1.158439335639e-01 1.170218769186e-01 1.181419061618e-01 1.192038801653e-01 -1.202076820060e-01 1.211532188904e-01 1.220404220705e-01 1.228692467518e-01 -1.236396719912e-01 1.243517005880e-01 1.250053589653e-01 1.256006970439e-01 -1.261377881068e-01 1.266167286569e-01 1.270376382654e-01 1.274006594126e-01 -1.277059573205e-01 1.279537197783e-01 1.281441569587e-01 1.282775012279e-01 -1.283540069471e-01 1.283739502669e-01 1.283376289143e-01 1.282453619720e-01 -1.280974896510e-01 1.278943730559e-01 1.276363939434e-01 1.273239544735e-01 -1.269574769544e-01 1.265374035805e-01 1.260641961644e-01 1.255383358617e-01 -1.249603228902e-01 1.243306762428e-01 1.236499333941e-01 1.229186500017e-01 -1.221373996013e-01 1.213067732963e-01 1.204273794422e-01 1.194998433250e-01 -1.185248068352e-01 1.175029281366e-01 1.164348813293e-01 1.153213561093e-01 -1.141630574224e-01 1.129607051143e-01 1.117150335758e-01 1.104267913845e-01 -1.090967409418e-01 1.077256581065e-01 1.063143318244e-01 1.048635637545e-01 -1.033741678916e-01 1.018469701860e-01 1.002828081598e-01 9.868253052003e-02 -9.704699676952e-02 9.537707681490e-02 9.367365057201e-02 9.193760756917e-02 -9.016984654818e-02 8.837127506339e-02 8.654280907894e-02 8.468537256425e-02 -8.279989708810e-02 8.088732141129e-02 7.894859107811e-02 7.698465800680e-02 -7.499648007916e-02 7.298502072939e-02 7.095124853242e-02 6.889613679188e-02 -6.682066312775e-02 6.472580906407e-02 6.261255961660e-02 6.048190288084e-02 -5.833482962040e-02 5.617233285596e-02 5.399540745490e-02 5.180504972191e-02 -4.960225699053e-02 4.738802721590e-02 4.516335856891e-02 4.292924903178e-02 -4.068669599531e-02 3.843669585791e-02 3.618024362661e-02 3.391833252011e-02 -3.165195357415e-02 2.938209524917e-02 2.710974304058e-02 2.483587909164e-02 -2.256148180925e-02 2.028752548256e-02 1.801497990482e-02 1.574480999833e-02 -1.347797544286e-02 1.121543030753e-02 8.958122686274e-03 6.706994337172e-03 -4.462980325576e-03 2.227008671311e-03 -8.630974746701e-15 -2.217132801389e-03 --4.423484924482e-03 -6.618159975107e-03 -8.800270304154e-03 -1.096893733375e-02 --1.312329187859e-02 -1.526247446229e-02 -1.738563562868e-02 -1.949193624797e-02 --2.158054781756e-02 -2.365065275757e-02 -2.570144470082e-02 -2.773212877731e-02 --2.974192189297e-02 -3.173005300270e-02 -3.369576337758e-02 -3.563830686613e-02 --3.755695014953e-02 -3.945097299084e-02 -4.131966847795e-02 -4.316234326036e-02 --4.497831777956e-02 -4.676692649316e-02 -4.852751809239e-02 -5.025945571324e-02 --5.196211714088e-02 -5.363489500755e-02 -5.527719698371e-02 -5.688844596238e-02 --5.846808023680e-02 -6.001555367111e-02 -6.153033586423e-02 -6.301191230675e-02 --6.445978453086e-02 -6.587347025326e-02 -6.725250351099e-02 -6.859643479029e-02 --6.990483114816e-02 -7.117727632702e-02 -7.241337086198e-02 -7.361273218113e-02 --7.477499469850e-02 -7.589980989991e-02 -7.698684642154e-02 -7.803579012129e-02 --7.904634414293e-02 -8.001822897299e-02 -8.095118249047e-02 -8.184496000923e-02 --8.269933431327e-02 -8.351409568469e-02 -8.428905192453e-02 -8.502402836639e-02 --8.571886788288e-02 -8.637343088493e-02 -8.698759531398e-02 -8.756125662706e-02 --8.809432777479e-02 -8.858673917239e-02 -8.903843866361e-02 -8.944939147778e-02 --8.981958017984e-02 -9.014900461357e-02 -9.043768183789e-02 -9.068564605646e-02 --9.089294854048e-02 -9.105965754475e-02 -9.118585821725e-02 -9.127165250193e-02 --9.131715903518e-02 -9.132251303570e-02 -9.128786618804e-02 -9.121338651981e-02 --9.109925827260e-02 -9.094568176680e-02 -9.075287326016e-02 -9.052106480049e-02 --9.025050407227e-02 -8.994145423743e-02 -8.959419377037e-02 -8.920901628719e-02 --8.878623036942e-02 -8.832615938206e-02 -8.782914128630e-02 -8.729552844687e-02 --8.672568743409e-02 -8.611999882078e-02 -8.547885697412e-02 -8.480266984256e-02 --8.409185873785e-02 -8.334685811228e-02 -8.256811533135e-02 -8.175609044183e-02 --8.091125593543e-02 -8.003409650805e-02 -7.912510881496e-02 -7.818480122174e-02 --7.721369355130e-02 -7.621231682701e-02 -7.518121301206e-02 -7.412093474520e-02 --7.303204507291e-02 -7.191511717825e-02 -7.077073410629e-02 -6.959948848655e-02 --6.840198225222e-02 -6.717882635665e-02 -6.593064048684e-02 -6.465805277447e-02 --6.336169950422e-02 -6.204222481980e-02 -6.070028042758e-02 -5.933652529816e-02 --5.795162536585e-02 -5.654625322624e-02 -5.512108783203e-02 -5.367681418722e-02 --5.221412303970e-02 -5.073371057258e-02 -4.923627809413e-02 -4.772253172675e-02 --4.619318209476e-02 -4.464894401151e-02 -4.309053616559e-02 -4.151868080657e-02 --3.993410343018e-02 -3.833753246318e-02 -3.672969894800e-02 -3.511133622732e-02 --3.348317962867e-02 -3.184596614922e-02 -3.020043414085e-02 -2.854732299567e-02 --2.688737283210e-02 -2.522132418162e-02 -2.354991767633e-02 -2.187389373746e-02 --2.019399226492e-02 -1.851095232806e-02 -1.682551185774e-02 -1.513840733978e-02 --1.345037351001e-02 -1.176214305102e-02 -1.007444629062e-02 -8.388010902267e-03 --6.703561607512e-03 -5.021819880594e-03 -3.343503655279e-03 -1.669327034086e-03 -8.583855418087e-15 1.663771869264e-03 3.321287684165e-03 4.971851523590e-03 -6.614772712065e-03 - Type L N - 0 0 4 -1.000000000000e+00 9.998857723822e-01 9.995431365007e-01 9.989722332485e-01 -9.981732973708e-01 9.971466573496e-01 9.958927352436e-01 9.944120464808e-01 -9.927051996072e-01 9.907728959881e-01 9.886159294654e-01 9.862351859690e-01 -9.836316430835e-01 9.808063695699e-01 9.777605248430e-01 9.744953584044e-01 -9.710122092318e-01 9.673125051241e-01 9.633977620041e-01 9.592695831779e-01 -9.549296585514e-01 9.503797638053e-01 9.456217595285e-01 9.406575903096e-01 -9.354892837886e-01 9.301189496681e-01 9.245487786841e-01 9.187810415390e-01 -9.128180877951e-01 9.066623447304e-01 9.003163161571e-01 8.937825812035e-01 -8.870637930592e-01 8.801626776859e-01 8.730820324926e-01 8.658247249770e-01 -8.583936913341e-01 8.507919350314e-01 8.430225253529e-01 8.350885959116e-01 -8.269933431327e-01 8.187400247058e-01 8.103319580098e-01 8.017725185095e-01 -7.930651381253e-01 7.842133035765e-01 7.752205547002e-01 7.660904827447e-01 -7.568267286407e-01 7.474329812490e-01 7.379129755873e-01 7.282704910361e-01 -7.185093495243e-01 7.086334136974e-01 6.986465850664e-01 6.885528021412e-01 -6.783560385471e-01 6.680603011268e-01 6.576696280293e-01 6.471880867846e-01 -6.366197723676e-01 6.259688052507e-01 6.152393294468e-01 6.044355105433e-01 -5.935615337287e-01 5.826216018118e-01 5.716199332362e-01 5.605607600890e-01 -5.494483261068e-01 5.382868846788e-01 5.270806968481e-01 5.158340293127e-01 -5.045511524271e-01 4.932363382055e-01 4.818938583272e-01 4.705279821459e-01 -4.591429747041e-01 4.477430947521e-01 4.363325927745e-01 4.249157090245e-01 -4.134966715664e-01 4.020796943278e-01 3.906689751635e-01 3.792686939297e-01 -3.678830105718e-01 3.565160632258e-01 3.451719663343e-01 3.338548087774e-01 -3.225686520215e-01 3.113175282844e-01 3.001054387190e-01 2.889363516174e-01 -2.778142006333e-01 2.667428830274e-01 2.557262579339e-01 2.447681446495e-01 -2.338723209472e-01 2.230425214136e-01 2.122824358125e-01 2.015957074739e-01 -1.909859317103e-01 1.804566542612e-01 1.700113697654e-01 1.596535202632e-01 -1.493864937280e-01 1.392136226292e-01 1.291381825264e-01 1.191633906954e-01 -1.092924047871e-01 9.952832151981e-02 8.987417540595e-02 8.033293751256e-02 -7.090751425767e-02 6.160074624218e-02 5.241540711809e-02 4.335420249347e-02 -3.441976887486e-02 2.561467264741e-02 1.694140909324e-02 8.402401448597e-03 -7.672312953838e-15 -8.263518780010e-03 -1.638595305738e-02 -2.436517642069e-02 --3.219913862486e-02 -3.988586629398e-02 -4.742346358302e-02 -5.481011279815e-02 --6.204407497544e-02 -6.912369041777e-02 -7.604737918964e-02 -8.281364156991e-02 --8.942105846213e-02 -9.586829176246e-02 -1.021540846851e-01 -1.082772620449e-01 --1.142367304978e-01 -1.200314787380e-01 -1.256605776527e-01 -1.311231804344e-01 --1.364185226502e-01 -1.415459222689e-01 -1.465047796452e-01 -1.512945774624e-01 --1.559148806314e-01 -1.603653361497e-01 -1.646456729163e-01 -1.687557015072e-01 --1.726953139072e-01 -1.764644832025e-01 -1.800632632314e-01 -1.834917881941e-01 --1.867502722230e-01 -1.898390089126e-01 -1.927583708100e-01 -1.955088088658e-01 --1.980908518463e-01 -2.005051057080e-01 -2.027522529330e-01 -2.048330518274e-01 --2.067483357832e-01 -2.084990125027e-01 -2.100860631877e-01 -2.115105416927e-01 --2.127735736434e-01 -2.138763555209e-01 -2.148201537121e-01 -2.156063035269e-01 --2.162362081830e-01 -2.167113377586e-01 -2.170332281139e-01 -2.172034797827e-01 --2.172237568329e-01 -2.170957856992e-01 -2.168213539861e-01 -2.164023092444e-01 --2.158405577195e-01 -2.151380630747e-01 -2.142968450882e-01 -2.133189783257e-01 --2.122065907892e-01 -2.109618625430e-01 -2.095870243170e-01 -2.080843560887e-01 --2.064561856448e-01 -2.047048871231e-01 -2.028328795354e-01 -2.008426252725e-01 --1.987366285918e-01 -1.965174340891e-01 -1.941876251546e-01 -1.917498224147e-01 --1.892066821602e-01 -1.865608947617e-01 -1.838151830732e-01 -1.809723008254e-01 --1.780350310077e-01 -1.750061842432e-01 -1.718885971536e-01 -1.686851307183e-01 --1.653986686265e-01 -1.620321156246e-01 -1.585883958585e-01 -1.550704512126e-01 --1.514812396472e-01 -1.478237335327e-01 -1.441009179842e-01 -1.403157891963e-01 --1.364713527783e-01 -1.325706220924e-01 -1.286166165939e-01 -1.246123601762e-01 --1.205608795201e-01 -1.164652024486e-01 -1.123283562887e-01 -1.081533662405e-01 --1.039432537543e-01 -9.970103491761e-02 -9.542971885150e-02 -9.113230611832e-02 --8.681178714104e-02 -8.247114063521e-02 -7.811333205440e-02 -7.374131204982e-02 --6.935801494513e-02 -6.496635722697e-02 -6.056923605223e-02 -5.616952777273e-02 --5.177008647808e-02 -4.737374255747e-02 -4.298330128111e-02 -3.860154140214e-02 --3.423121377957e-02 -2.987504002304e-02 -2.553571116010e-02 -2.121588632660e-02 --1.691819148087e-02 -1.264521814239e-02 -8.399522155476e-03 -4.183622478594e-03 --7.672312953838e-15 4.148903619835e-03 8.260687078510e-03 1.233299053393e-02 -1.636349667820e-02 2.034993178264e-02 2.429006671325e-02 2.818171791645e-02 -3.202274837442e-02 3.581106852968e-02 3.954463717861e-02 4.322146233329e-02 -4.683960205159e-02 5.039716523481e-02 5.389231239291e-02 5.732325637672e-02 -6.068826307698e-02 6.398565208991e-02 6.721379734912e-02 7.037112772347e-02 -7.345612758087e-02 7.646733731766e-02 7.940335385353e-02 8.226283109171e-02 -8.504448034442e-02 8.774707072340e-02 9.036942949543e-02 9.291044240281e-02 -9.536905394873e-02 9.774426764751e-02 1.000351462397e-01 1.022408118720e-01 -1.043604462423e-01 1.063932907093e-01 1.083386463677e-01 1.101958740880e-01 -1.119643945218e-01 1.136436880728e-01 1.152332948324e-01 1.167328144823e-01 -1.181419061618e-01 1.194602883023e-01 1.206877384270e-01 1.218240929184e-01 -1.228692467518e-01 1.238231531963e-01 1.246858234832e-01 1.254573264425e-01 -1.261377881068e-01 1.267273912844e-01 1.272263751013e-01 1.276350345115e-01 -1.279537197783e-01 1.281828359248e-01 1.283228421551e-01 1.283742512467e-01 -1.283376289143e-01 1.282135931456e-01 1.280028135091e-01 1.277060104358e-01 -1.273239544735e-01 1.268574655159e-01 1.263074120056e-01 1.256747101130e-01 -1.249603228903e-01 1.241652594025e-01 1.232905738353e-01 1.223373645797e-01 -1.213067732963e-01 1.201999839574e-01 1.190182218689e-01 1.177627526727e-01 -1.164348813293e-01 1.150359510831e-01 1.135673424083e-01 1.120304719395e-01 -1.104267913845e-01 1.087577864224e-01 1.070249755862e-01 1.052299091315e-01 -1.033741678916e-01 1.014593621201e-01 9.948713032115e-02 9.745913806862e-02 -9.537707681491e-02 9.324266268984e-02 9.105763529064e-02 8.882375646372e-02 -8.654280907895e-02 8.421659579729e-02 8.184693783247e-02 7.943567370750e-02 -7.698465800682e-02 7.449576012479e-02 7.197086301134e-02 6.941186191553e-02 -6.682066312777e-02 6.419918272143e-02 6.154934529476e-02 5.887308271361e-02 -5.617233285597e-02 5.344903835889e-02 5.070514536864e-02 4.794260229479e-02 -4.516335856893e-02 4.236936340890e-02 3.956256458903e-02 3.674490721732e-02 -3.391833252013e-02 3.108477663513e-02 2.824616941330e-02 2.540443323047e-02 -2.256148180926e-02 1.971921905204e-02 1.687953788549e-02 1.404431911761e-02 -1.121543030754e-02 8.394724649155e-03 5.584039868727e-03 2.785197137562e-03 -7.578074296609e-15 -2.769766682491e-03 -5.522337770715e-03 -8.255968869815e-03 --1.096893733374e-02 -1.365954325136e-02 -1.632611041382e-02 -1.896698726257e-02 --2.158054781754e-02 -2.416519258507e-02 -2.671934944500e-02 -2.924147451659e-02 --3.173005300269e-02 -3.418360001181e-02 -3.660066135775e-02 -3.897981433617e-02 --4.131966847794e-02 -4.361886627880e-02 -4.587608390495e-02 -4.809003187435e-02 --5.025945571322e-02 -5.238313658769e-02 -5.445989191001e-02 -5.648857591937e-02 --5.846808023678e-02 -6.039733439402e-02 -6.227530633623e-02 -6.410100289806e-02 --6.587347025325e-02 -6.759179433722e-02 -6.925510124285e-02 -7.086255758902e-02 --7.241337086197e-02 -7.390678972935e-02 -7.534210432677e-02 -7.671864651695e-02 --7.803579012128e-02 -7.929295112383e-02 -8.048958784776e-02 -8.162520110414e-02 --8.269933431327e-02 -8.371157359834e-02 -8.466154785176e-02 -8.554892877396e-02 --8.637343088493e-02 -8.713481150850e-02 -8.783287072958e-02 -8.846745132432e-02 --8.903843866361e-02 -8.954576058973e-02 -8.998938726675e-02 -9.036933100447e-02 --9.068564605646e-02 -9.093842839216e-02 -9.112781544345e-02 -9.125398582595e-02 --9.131715903518e-02 -9.131759511805e-02 -9.125559431986e-02 -9.113149670714e-02 --9.094568176680e-02 -9.069856798169e-02 -9.039061238318e-02 -9.002231008092e-02 --8.959419377037e-02 -8.910683321828e-02 -8.856083472673e-02 -8.795684057602e-02 --8.729552844688e-02 -8.657761082247e-02 -8.580383437062e-02 -8.497497930673e-02 --8.409185873785e-02 -8.315531798846e-02 -8.216623390832e-02 -8.112551416309e-02 --8.003409650806e-02 -7.889294804556e-02 -7.770306446669e-02 -7.646546927776e-02 --7.518121301207e-02 -7.385137242756e-02 -7.247704969097e-02 -7.105937154890e-02 --6.959948848656e-02 -6.809857387460e-02 -6.655782310482e-02 -6.497845271507e-02 --6.336169950423e-02 -6.170881963766e-02 -6.002108774381e-02 -5.829979600262e-02 --5.654625322625e-02 -5.476178393279e-02 -5.294772741363e-02 -5.110543679496e-02 --4.923627809415e-02 -4.734162927160e-02 -4.542287927867e-02 -4.348142710221e-02 --4.151868080659e-02 -3.953605657350e-02 -3.753497774043e-02 -3.551687383826e-02 --3.348317962869e-02 -3.143533414209e-02 -2.937477971632e-02 -2.730296103728e-02 --2.522132418163e-02 -2.313131566239e-02 -2.103438147799e-02 -1.893196616539e-02 --1.682551185776e-02 -1.471645734750e-02 -1.260623715499e-02 -1.049628060369e-02 --8.388010902283e-03 -6.282844234275e-03 -4.182188855659e-03 -2.087444201223e-03 --7.672312953838e-15 2.078764599540e-03 4.147481894186e-03 6.204796479797e-03 -8.249366093966e-03 1.027986244690e-02 1.229497204004e-02 1.429339697200e-02 -1.627385573126e-02 1.823508397523e-02 2.017583529520e-02 2.209488196671e-02 -2.399101568496e-02 2.586304828480e-02 2.770981244494e-02 2.953016237589e-02 -3.132297449134e-02 3.308714806259e-02 3.482160585556e-02 3.652529475025e-02 -3.819718634205e-02 3.983627752477e-02 4.144159105503e-02 4.301217609765e-02 -4.454710875183e-02 4.604549255782e-02 4.750645898376e-02 4.892916789260e-02 -5.031280798870e-02 5.165659724396e-02 5.295978330335e-02 5.422164386948e-02 -5.544148706619e-02 5.661865178096e-02 5.775250798589e-02 5.884245703727e-02 -5.988793195354e-02 6.088839767149e-02 6.184335128071e-02 6.275232223613e-02 -6.361487254867e-02 6.443059695381e-02 6.519912305825e-02 6.592011146445e-02 -6.659325587311e-02 6.721828316370e-02 6.779495345287e-02 6.832306013093e-02 -6.880242987642e-02 6.923292264877e-02 6.961443165918e-02 6.994688331985e-02 -7.023023717155e-02 7.046448578979e-02 7.064965466964e-02 7.078580208929e-02 -7.087301895268e-02 7.091142861123e-02 7.090118666487e-02 7.084248074266e-02 -7.073553026307e-02 7.058058617429e-02 7.037793067472e-02 7.012787691387e-02 -6.983076867396e-02 6.948698003260e-02 6.909691500657e-02 6.866100717726e-02 -6.817971929793e-02 6.765354288313e-02 6.708299778067e-02 6.646863172632e-02 -6.581101988180e-02 6.511076435624e-02 6.436849371157e-02 6.358486245216e-02 -6.276055049913e-02 6.189626264975e-02 6.099272802224e-02 6.005069948647e-02 -5.907095308091e-02 5.805428741632e-02 5.700152306657e-02 5.591350194701e-02 -5.479108668091e-02 5.363515995433e-02 5.244662385998e-02 5.122639923040e-02 -4.997542496109e-02 4.869465732392e-02 4.738506927143e-02 4.604764973237e-02 -4.468340289906e-02 4.329334750708e-02 4.187851610765e-02 4.043995433340e-02 -3.897872015787e-02 3.749588314926e-02 3.599252371908e-02 3.446973236600e-02 -3.292860891557e-02 3.137026175626e-02 2.979580707230e-02 2.820636807395e-02 -2.660307422553e-02 2.498706047192e-02 2.335946646383e-02 2.172143578265e-02 -2.007411516498e-02 1.841865372778e-02 1.675620219434e-02 1.508791212165e-02 -1.341493512983e-02 1.173842213385e-02 1.005952257823e-02 8.379383675215e-03 -6.699149646791e-03 5.019960971106e-03 3.342953633789e-03 1.669258384619e-03 -7.615769759501e-15 -1.663703448216e-03 -3.320741317270e-03 -4.970011110682e-03 --6.610419187879e-03 - Type L N - 0 0 5 -1.000000000000e+00 9.998355147105e-01 9.993421562398e-01 9.985202167122e-01 -9.973701827725e-01 9.958927352436e-01 9.940887486459e-01 9.919592905814e-01 -9.895056209813e-01 9.867291912182e-01 9.836316430835e-01 9.802148076310e-01 -9.764807038877e-01 9.724315374315e-01 9.680696988392e-01 9.633977620041e-01 -9.584184823246e-01 9.531347947667e-01 9.475498117999e-01 9.416668212101e-01 -9.354892837886e-01 9.290208309025e-01 9.222652619442e-01 9.152265416659e-01 -9.079087973984e-01 9.003163161571e-01 8.924535416387e-01 8.843250711084e-01 -8.759356521824e-01 8.672901795064e-01 8.583936913341e-01 8.492513660070e-01 -8.398685183386e-01 8.302505959068e-01 8.204031752555e-01 8.103319580098e-01 -8.000427669069e-01 7.895415417463e-01 7.788343352617e-01 7.679273089188e-01 -7.568267286407e-01 7.455389604655e-01 7.340704661390e-01 7.224277986455e-01 -7.106175976801e-01 6.986465850664e-01 6.865215601232e-01 6.742493949824e-01 -6.618370298633e-01 6.492914683061e-01 6.366197723676e-01 6.238290577842e-01 -6.109264891046e-01 5.979192747957e-01 5.848146623272e-01 5.716199332362e-01 -5.583423981772e-01 5.449893919607e-01 5.315682685834e-01 5.180863962557e-01 -5.045511524271e-01 4.909699188169e-01 4.773500764507e-01 4.636990007081e-01 -4.500240563851e-01 4.363325927745e-01 4.226319387680e-01 4.089293979839e-01 -3.952322439240e-01 3.815477151625e-01 3.678830105718e-01 3.542452845871e-01 -3.406416425154e-01 3.270791358894e-01 3.135647578731e-01 3.001054387190e-01 -2.867080412837e-01 2.733793566015e-01 2.601260995227e-01 2.469549044171e-01 -2.338723209472e-01 2.208848099135e-01 2.079987391756e-01 1.952203796510e-01 -1.825559013952e-01 1.700113697654e-01 1.575927416715e-01 1.453058619150e-01 -1.331564596210e-01 1.211501447634e-01 1.092924047870e-01 9.758860132927e-02 -8.604396704185e-02 7.466360251687e-02 6.345247331782e-02 5.241540711808e-02 -4.155709094885e-02 3.088206855810e-02 2.039473788244e-02 1.009934863344e-02 --3.353609941903e-15 -9.899361531791e-03 -1.959494424000e-02 -2.908311310812e-02 --3.836039164510e-02 -4.742346358303e-02 -5.626917445166e-02 -6.489453302869e-02 --7.329671266529e-02 -8.147305248591e-02 -8.942105846214e-02 -9.713840435983e-02 --1.046229325594e-01 -1.118726547488e-01 -1.188857524890e-01 -1.256605776527e-01 --1.321956527344e-01 -1.384896710345e-01 -1.445414967152e-01 -1.503501647310e-01 --1.559148806314e-01 -1.612350202393e-01 -1.663101292031e-01 -1.711399224253e-01 --1.757242833674e-01 -1.800632632314e-01 -1.841570800207e-01 -1.880061174797e-01 --1.916109239149e-01 -1.949722108968e-01 -1.980908518463e-01 -2.009678805055e-01 --2.036044892942e-01 -2.060020275558e-01 -2.081619996917e-01 -2.100860631877e-01 --2.117760265342e-01 -2.132338470410e-01 -2.144616285503e-01 -2.154616190492e-01 --2.162362081830e-01 -2.167879246744e-01 -2.171194336468e-01 -2.172335338584e-01 --2.171331548467e-01 -2.168213539861e-01 -2.163013134635e-01 -2.155763371712e-01 --2.146498475232e-01 -2.135253821946e-01 -2.122065907892e-01 -2.106972314371e-01 --2.090011673253e-01 -2.071223631645e-01 -2.050648815952e-01 -2.028328795354e-01 --2.004306044739e-01 -1.978623907118e-01 -1.951326555559e-01 -1.922458954659e-01 --1.892066821602e-01 -1.860196586822e-01 -1.826895354318e-01 -1.792210861633e-01 --1.756191439552e-01 -1.718885971536e-01 -1.680343852933e-01 -1.640614949995e-01 --1.599749558740e-01 -1.557798363681e-01 -1.514812396472e-01 -1.470842994485e-01 --1.425941759367e-01 -1.380160515603e-01 -1.333551269115e-01 -1.286166165939e-01 --1.238057450998e-01 -1.189277427023e-01 -1.139878413639e-01 -1.089912706645e-01 --1.039432537543e-01 -9.884900333144e-02 -9.371371765054e-02 -8.854257656302e-02 --8.334073759344e-02 -7.811333205438e-02 -7.286546120295e-02 -6.760219244176e-02 --6.232855556729e-02 -5.704953906847e-02 -5.177008647807e-02 -4.649509277991e-02 --4.122940087422e-02 -3.597779810398e-02 -3.074501284471e-02 -2.553571116009e-02 --2.035449352597e-02 -1.520589162505e-02 -1.009436521454e-02 -5.024299068894e-03 -3.353609941903e-15 4.974306043339e-03 9.894476794457e-03 1.475645640462e-02 -1.955627809358e-02 2.429006671326e-02 2.895404122270e-02 3.354451707280e-02 -3.805790849928e-02 4.249073072232e-02 4.683960205160e-02 5.110124589546e-02 -5.527249267289e-02 5.935028162727e-02 6.333166254089e-02 6.721379734913e-02 -7.099396165368e-02 7.466954613380e-02 7.823805785504e-02 8.169712147485e-02 -8.504448034442e-02 8.827799750657e-02 9.139565658907e-02 9.439556259335e-02 -9.727594257840e-02 1.000351462397e-01 1.026716463832e-01 1.051840392948e-01 -1.075710450049e-01 1.098315074484e-01 1.119643945218e-01 1.139687980356e-01 -1.158439335639e-01 1.175891401928e-01 1.192038801653e-01 1.206877384270e-01 -1.220404220705e-01 1.232617596819e-01 1.243517005880e-01 1.253103140077e-01 -1.261377881068e-01 1.268344289589e-01 1.274006594126e-01 1.278370178673e-01 -1.281441569587e-01 1.283228421551e-01 1.283739502669e-01 1.282984678711e-01 -1.280974896510e-01 1.277722166546e-01 1.273239544735e-01 1.267541113426e-01 -1.260641961644e-01 1.252558164592e-01 1.243306762428e-01 1.232905738353e-01 -1.221373996013e-01 1.208731336255e-01 1.194998433250e-01 1.180196810003e-01 -1.164348813293e-01 1.147477588040e-01 1.129607051143e-01 1.110761864814e-01 -1.090967409418e-01 1.070249755862e-01 1.048635637545e-01 1.026152421907e-01 -1.002828081598e-01 9.786911652868e-02 9.537707681490e-02 9.280965020548e-02 -9.016984654818e-02 8.746072131841e-02 8.468537256425e-02 8.184693783246e-02 -7.894859107811e-02 7.599353956071e-02 7.298502072939e-02 6.992629910018e-02 -6.682066312776e-02 6.367142207470e-02 6.048190288084e-02 5.725544703545e-02 -5.399540745491e-02 5.070514536863e-02 4.738802721590e-02 4.404742155613e-02 -4.068669599532e-02 3.730921413128e-02 3.391833252012e-02 3.051739766654e-02 -2.710974304058e-02 2.369868612310e-02 2.028752548257e-02 1.687953788548e-02 -1.347797544287e-02 1.008606279507e-02 6.706994337177e-03 3.343931487323e-03 --3.353609941903e-15 -3.321712673460e-03 -6.618159975102e-03 -9.886338779332e-03 --1.312329187859e-02 -1.632611041383e-02 -1.949193624796e-02 -2.261796428036e-02 --2.570144470082e-02 -2.873968518112e-02 -3.173005300270e-02 -3.466997711879e-02 --3.755695014953e-02 -4.038853030866e-02 -4.316234326035e-02 -4.587608390496e-02 --4.852751809239e-02 -5.111448426194e-02 -5.363489500755e-02 -5.608673856737e-02 --5.846808023679e-02 -6.077706370390e-02 -6.301191230675e-02 -6.517093021151e-02 --6.725250351099e-02 -6.925510124286e-02 -7.117727632702e-02 -7.301766642180e-02 --7.477499469850e-02 -7.644807053400e-02 -7.803579012129e-02 -7.953713699763e-02 --8.095118249047e-02 -8.227708608085e-02 -8.351409568469e-02 -8.466154785177e-02 --8.571886788288e-02 -8.668556986532e-02 -8.756125662706e-02 -8.834561961013e-02 --8.903843866361e-02 -8.963958175685e-02 -9.014900461357e-02 -9.056675026752e-02 --9.089294854048e-02 -9.112781544345e-02 -9.127165250193e-02 -9.132484600626e-02 --9.128786618804e-02 -9.116126632377e-02 -9.094568176680e-02 -9.064182890882e-02 --9.025050407227e-02 -8.977258233476e-02 -8.920901628720e-02 -8.856083472673e-02 --8.782914128630e-02 -8.701511300212e-02 -8.611999882078e-02 -8.514511804759e-02 --8.409185873785e-02 -8.296167603278e-02 -8.175609044184e-02 -8.047668607331e-02 --7.912510881496e-02 -7.770306446669e-02 -7.621231682701e-02 -7.465468573548e-02 --7.303204507292e-02 -7.134632072145e-02 -6.959948848655e-02 -6.779357198298e-02 --6.593064048684e-02 -6.401280675583e-02 -6.204222481980e-02 -6.002108774380e-02 --5.795162536585e-02 -5.583610201145e-02 -5.367681418723e-02 -5.147608825581e-02 --4.923627809414e-02 -4.695976273751e-02 -4.464894401151e-02 -4.230624415413e-02 --3.993410343019e-02 -3.753497774042e-02 -3.511133622733e-02 -3.266565888012e-02 --3.020043414085e-02 -2.771815651398e-02 -2.522132418162e-02 -2.271243662650e-02 --2.019399226492e-02 -1.766848609178e-02 -1.513840733978e-02 -1.260623715498e-02 --1.007444629063e-02 -7.545492821499e-03 -5.021819880599e-03 -2.505853420324e-03 -3.353609941903e-15 2.493355398284e-03 4.971851523585e-03 7.433152978010e-03 -9.874952304682e-03 1.229497204005e-02 1.469096672876e-02 1.706072489944e-02 -1.940207099964e-02 2.171286728842e-02 2.399101568497e-02 2.623445957164e-02 -2.844118555013e-02 3.060922514918e-02 3.273665648249e-02 3.482160585557e-02 -3.686224932018e-02 3.885681417514e-02 4.080358041244e-02 4.270088210738e-02 -4.454710875184e-02 4.634070652958e-02 4.808017953264e-02 4.976409091801e-02 -5.139106400368e-02 5.295978330336e-02 5.446899549908e-02 5.591751035112e-02 -5.730420154464e-02 5.862800747246e-02 5.988793195355e-02 6.108304488681e-02 -6.221248283990e-02 6.327544957257e-02 6.427121649467e-02 6.519912305826e-02 -6.605857708405e-02 6.684905502200e-02 6.757010214600e-02 6.822133268299e-02 -6.880242987642e-02 6.931314598432e-02 6.975330221231e-02 7.012278858185e-02 -7.042156373406e-02 7.064965466964e-02 7.080715642526e-02 7.089423168719e-02 -7.091111034250e-02 7.085808896881e-02 7.073553026306e-02 7.054386241019e-02 -7.028357839256e-02 6.995523524100e-02 6.955945322834e-02 6.909691500657e-02 -6.856836468843e-02 6.797460687474e-02 6.731650562847e-02 6.659498339670e-02 -6.581101988179e-02 6.496565086298e-02 6.405996696958e-02 6.309511240737e-02 -6.207228363932e-02 6.099272802224e-02 5.985774240061e-02 5.866867165936e-02 -5.742690723682e-02 5.613388559961e-02 5.479108668090e-02 5.340003228383e-02 -5.196228445149e-02 5.047944380534e-02 4.895314785360e-02 4.738506927142e-02 -4.577691415454e-02 4.413042024804e-02 4.244735515224e-02 4.072951450720e-02 -3.897872015786e-02 3.719681830143e-02 3.538567761908e-02 3.354718739344e-02 -3.168325561403e-02 2.979580707229e-02 2.788678144804e-02 2.595813138934e-02 -2.401182058740e-02 2.204982184855e-02 2.007411516497e-02 1.808668578607e-02 -1.608952229238e-02 1.408461467357e-02 1.207395241270e-02 1.005952257821e-02 -8.043307925581e-03 6.027285010332e-03 4.013422314213e-03 2.003678386190e-03 --3.353609941903e-15 -1.995679670084e-03 -3.981442853549e-03 -5.955388966477e-03 --7.915636371214e-03 -9.860324111326e-03 -1.178761362031e-02 -1.369569040251e-02 --1.558276568475e-02 -1.744707803726e-02 -1.928689496242e-02 -2.110051444999e-02 --2.288626649737e-02 -2.464251459378e-02 -2.636765716683e-02 -2.806012899041e-02 --2.971840255270e-02 -3.134098938305e-02 -3.292644133668e-02 -3.447335183621e-02 --3.598035706880e-02 -3.744613713811e-02 -3.886941717006e-02 -4.024896837154e-02 --4.158360904115e-02 -4.287220553129e-02 -4.411367316085e-02 -4.530697707766e-02 --4.645113307028e-02 -4.754520832833e-02 -4.858832215099e-02 -4.957964660305e-02 --5.051840711811e-02 -5.140388304864e-02 -5.223540816233e-02 -5.301237108475e-02 --5.373421568778e-02 -5.440044142386e-02 -5.501060360585e-02 -5.556431363235e-02 --5.606123915857e-02 -5.650110421273e-02 -5.688368925801e-02 -5.720883120029e-02 --5.747642334177e-02 -5.768641528072e-02 -5.783881275763e-02 -5.793367744821e-02 --5.797112670335e-02 -5.795133323679e-02 -5.787452476069e-02 -5.774098356987e-02 --5.755104607507e-02 -5.730510228602e-02 -5.700359524489e-02 -5.664702041079e-02 --5.623592499626e-02 -5.577090725630e-02 -5.525261573089e-02 -5.468174844201e-02 --5.405905204576e-02 -5.338532094088e-02 -5.266139633442e-02 -5.188816526574e-02 --5.106655958980e-02 -5.019755492096e-02 -4.928216953831e-02 -4.832146325383e-02 --4.731653624442e-02 -4.626852784924e-02 -4.517861533337e-02 -4.404801261941e-02 --4.287796898795e-02 -4.166976774856e-02 -4.042472488259e-02 -3.914418765900e-02 --3.782953322493e-02 -3.648216717212e-02 -3.510352208092e-02 -3.369505604309e-02 --3.225825116512e-02 -3.079461205334e-02 -2.930566428247e-02 -2.779295284911e-02 --2.625804061163e-02 -2.470250671805e-02 -2.312794502346e-02 -2.153596249848e-02 --1.992817763036e-02 -1.830621881823e-02 -1.667172276412e-02 -1.502633286119e-02 --1.337169758083e-02 -1.170946886015e-02 -1.004130049137e-02 -8.368846514648e-03 --6.693759615919e-03 -5.017689531214e-03 -3.342281458993e-03 -1.669174481984e-03 -3.353609941903e-15 1.663619824813e-03 3.320073608774e-03 4.967762272203e-03 -6.605100548166e-03 - Type L N - 0 0 6 -1.000000000000e+00 9.997761212345e-01 9.991046653715e-01 9.979861735385e-01 -9.964215470375e-01 9.944120464808e-01 9.919592905814e-01 9.890652546003e-01 -9.857322684524e-01 9.819630144724e-01 9.777605248430e-01 9.731281786890e-01 -9.680696988392e-01 9.625891482603e-01 9.566909261659e-01 9.503797638053e-01 -9.436607199360e-01 9.365391759848e-01 9.290208309025e-01 9.211116957177e-01 -9.128180877951e-01 9.041466248047e-01 8.951042184077e-01 8.856980676661e-01 -8.759356521824e-01 8.658247249770e-01 8.553733051108e-01 8.445896700594e-01 -8.334823478491e-01 8.220601089605e-01 8.103319580098e-01 7.983071252151e-01 -7.859950576585e-01 7.734054103500e-01 7.605480371061e-01 7.474329812490e-01 -7.340704661390e-01 7.204708855480e-01 7.066447938841e-01 6.926028962792e-01 -6.783560385471e-01 6.639151970248e-01 6.492914683061e-01 6.344960588783e-01 -6.195402746735e-01 6.044355105433e-01 5.891932396702e-01 5.738250029242e-01 -5.583423981772e-01 5.427570695849e-01 5.270806968481e-01 5.113249844634e-01 -4.955016509752e-01 4.796224182391e-01 4.636990007081e-01 4.477430947521e-01 -4.317663680216e-01 4.157804488669e-01 3.997969158223e-01 3.838272871669e-01 -3.678830105718e-01 3.519754528448e-01 3.361158897820e-01 3.203154961369e-01 -3.045853357170e-01 2.889363516174e-01 2.733793566015e-01 2.579250236380e-01 -2.425838766034e-01 2.273662811590e-01 2.122824358125e-01 1.973423631710e-01 -1.825559013952e-01 1.679326958626e-01 1.534821910482e-01 1.392136226292e-01 -1.251360098232e-01 1.112581479646e-01 9.758860132928e-02 8.413569621079e-02 -7.090751425767e-02 5.791188607580e-02 4.515638510272e-02 3.264832175908e-02 -2.039473788245e-02 8.402401448597e-03 -3.322198415458e-03 -1.477285612207e-02 --2.594365401351e-02 -3.682896644873e-02 -4.742346358302e-02 -5.772211483774e-02 --6.772019205735e-02 -7.741327235156e-02 -8.679724062067e-02 -9.586829176246e-02 --1.046229325594e-01 -1.130579832452e-01 -1.211705787506e-01 -1.289581696271e-01 --1.364185226502e-01 -1.435497211015e-01 -1.503501647310e-01 -1.568185694005e-01 --1.629539664096e-01 -1.687557015072e-01 -1.742234335878e-01 -1.793571330792e-01 --1.841570800207e-01 -1.886238618368e-01 -1.927583708100e-01 -1.965618012556e-01 --2.000356464025e-01 -2.031816949862e-01 -2.060020275558e-01 -2.084990125027e-01 --2.106753018143e-01 -2.125338265592e-01 -2.140777921103e-01 -2.153106731093e-01 --2.162362081830e-01 -2.168583944138e-01 -2.171814815742e-01 -2.172099661307e-01 --2.169485850260e-01 -2.164023092444e-01 -2.155763371712e-01 -2.144760877518e-01 --2.131071934591e-01 -2.114754930785e-01 -2.095870243170e-01 -2.074480162477e-01 --2.050648815952e-01 -2.024442088739e-01 -1.995927543858e-01 -1.965174340891e-01 --1.932253153449e-01 -1.897236085524e-01 -1.860196586822e-01 -1.821209367168e-01 --1.780350310077e-01 -1.737696385594e-01 -1.693325562496e-01 -1.647316719951e-01 --1.599749558740e-01 -1.550704512126e-01 -1.500262656484e-01 -1.448505621774e-01 --1.395515501966e-01 -1.341374765510e-01 -1.286166165939e-01 -1.229972652722e-01 --1.172877282441e-01 -1.114963130395e-01 -1.056313202729e-01 -9.970103491761e-02 --9.371371765055e-02 -8.767759627652e-02 -8.160085724134e-02 -7.549163724239e-02 --6.935801494513e-02 -6.320800281437e-02 -5.704953906848e-02 -5.089047976476e-02 --4.473859102402e-02 -3.860154140214e-02 -3.248689441626e-02 -2.640210123300e-02 --2.035449352598e-02 -1.435127650953e-02 -8.399522155475e-03 -2.506162599395e-03 -3.322016257211e-03 9.078380942906e-03 1.475645640461e-02 2.034993178264e-02 -2.585266596731e-02 3.125869293193e-02 3.656222683765e-02 4.175766690549e-02 -4.683960205159e-02 5.180281528153e-02 5.664228784039e-02 6.135320311502e-02 -6.593095028555e-02 7.037112772347e-02 7.466954613379e-02 7.882223143917e-02 -8.282542740418e-02 8.667559799815e-02 9.036942949543e-02 9.390383231208e-02 -9.727594257839e-02 1.004831234469e-01 1.035229661361e-01 1.063932907093e-01 -1.090921465908e-01 1.116178128186e-01 1.139687980356e-01 1.161438402206e-01 -1.181419061618e-01 1.199621906724e-01 1.216041155534e-01 1.230673283049e-01 -1.243517005880e-01 1.254573264425e-01 1.263845202616e-01 1.271338145288e-01 -1.277059573205e-01 1.281019095783e-01 1.283228421551e-01 1.283701326409e-01 -1.282453619720e-01 1.279503108287e-01 1.274869558281e-01 1.268574655159e-01 -1.260641961644e-01 1.251096873815e-01 1.239966575376e-01 1.227279990164e-01 -1.213067732963e-01 1.197362058687e-01 1.180196810003e-01 1.161607363465e-01 -1.141630574224e-01 1.120304719395e-01 1.097669440145e-01 1.073765682587e-01 -1.048635637545e-01 1.022322679273e-01 9.948713032115e-02 9.663270628381e-02 -9.367365057202e-02 9.061471088259e-02 8.746072131842e-02 8.421659579729e-02 -8.088732141131e-02 7.747795174524e-02 7.399360016178e-02 7.043943306182e-02 -6.682066312777e-02 6.314254255800e-02 5.941035630052e-02 5.562941529365e-02 -5.180504972193e-02 4.794260229479e-02 4.404742155614e-02 4.012485523239e-02 -3.618024362662e-02 3.221891306649e-02 2.824616941330e-02 2.426729163961e-02 -2.028752548258e-02 1.631207718023e-02 1.234610729754e-02 8.394724649155e-03 -4.462980325592e-03 5.558618292154e-04 -3.321712673450e-03 -7.164899976963e-03 --1.096893733374e-02 -1.472914781648e-02 -1.844094554067e-02 -2.209984074161e-02 --2.570144470081e-02 -2.924147451659e-02 -3.271575771426e-02 -3.612023669091e-02 --3.945097299083e-02 -4.270415140699e-02 -4.587608390495e-02 -4.896321336523e-02 --5.196211714086e-02 -5.486951042677e-02 -5.768224943800e-02 -6.039733439402e-02 --6.301191230674e-02 -6.552327956968e-02 -6.792888434663e-02 -7.022632875778e-02 --7.241337086197e-02 -7.448792643370e-02 -7.644807053400e-02 -7.829203887430e-02 --8.001822897298e-02 -8.162520110414e-02 -8.311167903878e-02 -8.447655057860e-02 --8.571886788288e-02 -8.683784758929e-02 -8.783287072958e-02 -8.870348244140e-02 --8.944939147777e-02 -9.007046951594e-02 -9.056675026751e-02 -9.093842839216e-02 --9.118585821725e-02 -9.130955226611e-02 -9.131017959773e-02 -9.118856396099e-02 --9.094568176680e-02 -9.058265988151e-02 -9.010077324544e-02 -8.950144232025e-02 --8.878623036943e-02 -8.795684057602e-02 -8.701511300212e-02 -8.596302139470e-02 --8.480266984257e-02 -8.353628928948e-02 -8.216623390832e-02 -8.069497734182e-02 --7.912510881497e-02 -7.745932912479e-02 -7.570044651304e-02 -7.385137242756e-02 --7.191511717826e-02 -6.989478549347e-02 -6.779357198299e-02 -6.561475651371e-02 --6.336169950423e-02 -6.103783714462e-02 -5.864667654772e-02 -5.619179083840e-02 --5.367681418723e-02 -5.110543679496e-02 -4.848139983440e-02 -4.580849035631e-02 --4.309053616561e-02 -4.033140067471e-02 -3.753497774043e-02 -3.470518649089e-02 --3.184596614924e-02 -2.896127086029e-02 -2.605506452694e-02 -2.313131566239e-02 --2.019399226493e-02 -1.724705672121e-02 -1.429446074456e-02 -1.134014035430e-02 --8.388010902283e-03 -5.441962152604e-03 -2.505853420335e-03 4.164912247927e-04 -3.321287684149e-03 6.204796479797e-03 9.063327322455e-03 1.189324359249e-02 -1.469096672875e-02 1.745298052016e-02 2.017583529520e-02 2.285615200442e-02 -2.549062619147e-02 2.807603184815e-02 3.060922514917e-02 3.308714806259e-02 -3.550683183187e-02 3.786540032592e-02 4.016007325341e-02 4.238816923809e-02 -4.454710875183e-02 4.663441690242e-02 4.864772607321e-02 5.058477841217e-02 -5.244342816776e-02 5.422164386948e-02 5.591751035111e-02 5.752923061482e-02 -5.905512753453e-02 6.049364539718e-02 6.184335128071e-02 6.310293626781e-02 -6.427121649466e-02 6.534713403412e-02 6.632975761305e-02 6.721828316370e-02 -6.801203420910e-02 6.871046208295e-02 6.931314598432e-02 6.981979286803e-02 -7.023023717155e-02 7.054444037951e-02 7.076249042722e-02 7.088460094463e-02 -7.091111034250e-02 7.084248074266e-02 7.067929675443e-02 7.042226409951e-02 -7.007220808778e-02 6.963007194661e-02 6.909691500657e-02 6.847391074645e-02 -6.776234470069e-02 6.696361223272e-02 6.607921617738e-02 6.511076435624e-02 -6.405996696958e-02 6.292863386873e-02 6.171867171303e-02 6.043208101540e-02 -5.907095308091e-02 5.763746684267e-02 5.613388559961e-02 5.456255366073e-02 -5.292589290051e-02 5.122639923040e-02 4.946663899113e-02 4.764924527091e-02 -4.577691415454e-02 4.385240090858e-02 4.187851610765e-02 3.985812170719e-02 -3.779412706793e-02 3.568948493736e-02 3.354718739345e-02 3.137026175625e-02 -2.916176647247e-02 2.692478697855e-02 2.466243154774e-02 2.237782712640e-02 -2.007411516498e-02 1.775444744914e-02 1.542198193627e-02 1.307987860273e-02 -1.073129530719e-02 8.379383675215e-03 6.027285010342e-03 3.678126236832e-03 -1.335015879076e-03 -9.989599172310e-04 -3.320741317271e-03 -5.627298677741e-03 --7.915636371203e-03 -1.018279654944e-02 -1.242586284123e-02 -1.464196398011e-02 --1.682827735765e-02 -1.898203249806e-02 -2.110051444998e-02 -2.318106709137e-02 --2.522109634368e-02 -2.721807329147e-02 -2.916953720391e-02 -3.107309845465e-02 --3.292644133667e-02 -3.472732676905e-02 -3.647359489242e-02 -3.816316755042e-02 --3.979405065425e-02 -4.136433642785e-02 -4.287220553129e-02 -4.431592906007e-02 --4.569387041837e-02 -4.700448706418e-02 -4.824633212481e-02 -4.941805588094e-02 --5.051840711811e-02 -5.154623434421e-02 -5.250048687215e-02 -5.338021576662e-02 --5.418457465452e-02 -5.491282039834e-02 -5.556431363234e-02 -5.613851916128e-02 --5.663500622177e-02 -5.705344860651e-02 -5.739362465170e-02 -5.765541708827e-02 --5.783881275763e-02 -5.794390219286e-02 -5.797087906641e-02 -5.792003950556e-02 --5.779178127705e-02 -5.758660284245e-02 -5.730510228603e-02 -5.694797611695e-02 --5.651601794795e-02 -5.601011705258e-02 -5.543125680345e-02 -5.478051299389e-02 --5.405905204576e-02 -5.326812910605e-02 -5.240908603529e-02 -5.148334929075e-02 --5.049242770755e-02 -4.943791018106e-02 -4.832146325384e-02 -4.714482861076e-02 --4.590982048582e-02 -4.461832298440e-02 -4.327228732471e-02 -4.187372900247e-02 --4.042472488259e-02 -3.892741022207e-02 -3.738397562815e-02 -3.579666395607e-02 --3.416776715042e-02 -3.249962303471e-02 -3.079461205335e-02 -2.905515397046e-02 --2.728370453005e-02 -2.548275208201e-02 -2.365481417841e-02 -2.180243414471e-02 --1.992817763037e-02 -1.803462914344e-02 -1.612438857381e-02 -1.420006770947e-02 --1.226428675055e-02 -1.031967082562e-02 -8.368846514659e-03 -6.414438383447e-03 --4.459065533581e-03 -2.505338172758e-03 -5.558542095990e-04 1.386804122575e-03 -3.320073608763e-03 5.241413357832e-03 7.148308066446e-03 9.038271237255e-03 -1.090884834732e-02 1.275761996286e-02 1.458220479632e-02 1.638026270224e-02 -1.814949760793e-02 1.988766037559e-02 2.159255159232e-02 2.326202428457e-02 -2.489398655388e-02 2.648640413070e-02 2.803730284316e-02 2.954477099805e-02 -3.100696167110e-02 3.242209490384e-02 3.378845980468e-02 3.510441655164e-02 -3.636839829456e-02 3.757891295461e-02 3.873454491911e-02 3.983395662993e-02 -4.087589006353e-02 4.185916810137e-02 4.278269578910e-02 4.364546148326e-02 -4.444653788457e-02 4.518508295663e-02 4.586034072937e-02 4.647164198660e-02 -4.701840483706e-02 4.750013516873e-02 4.791642698619e-02 4.826696263096e-02 -4.855151288497e-02 4.876993695739e-02 4.892218235529e-02 4.900828463865e-02 -4.902836706049e-02 4.898264009294e-02 4.887140084024e-02 4.869503233992e-02 -4.845400275336e-02 4.814886444722e-02 4.778025296725e-02 4.734888590635e-02 -4.685556166845e-02 4.630115813047e-02 4.568663120425e-02 4.501301330080e-02 -4.428141169907e-02 4.349300682192e-02 4.264905042157e-02 4.175086367751e-02 -4.079983520940e-02 3.979741900804e-02 3.874513228725e-02 3.764455325988e-02 -3.649731884094e-02 3.530512228132e-02 3.406971073525e-02 3.279288276494e-02 -3.147648578604e-02 3.012241345721e-02 2.873260301761e-02 2.730903257589e-02 -2.585371835442e-02 2.436871189245e-02 2.285609721216e-02 2.131798795126e-02 -1.975652446611e-02 1.817387090931e-02 1.657221228548e-02 1.495375148943e-02 -1.332070633045e-02 1.167530654672e-02 1.001979081396e-02 8.356403751947e-03 -6.687392933145e-03 5.015005897186e-03 3.341487175163e-03 1.669075327611e-03 -7.470372974062e-15 -1.663521000383e-03 -3.319284602556e-03 -4.965105340980e-03 --6.598818192294e-03 - Type L N - 0 0 7 -1.000000000000e+00 9.997075929310e-01 9.988306795205e-01 9.973701827725e-01 -9.953276397415e-01 9.927051996072e-01 9.895056209813e-01 9.857322684524e-01 -9.813891083719e-01 9.764807038877e-01 9.710122092318e-01 9.649893632704e-01 -9.584184823246e-01 9.513064522713e-01 9.436607199360e-01 9.354892837886e-01 -9.268006839549e-01 9.176039915569e-01 9.079087973984e-01 8.977252000079e-01 -8.870637930592e-01 8.759356521824e-01 8.643523211873e-01 8.523257977150e-01 -8.398685183386e-01 8.269933431327e-01 8.137135397329e-01 8.000427669069e-01 -7.859950576585e-01 7.715848018895e-01 7.568267286407e-01 7.417358879367e-01 -7.263276322605e-01 7.106175976801e-01 6.946216846549e-01 6.783560385471e-01 -6.618370298633e-01 6.450812342547e-01 6.281054123006e-01 6.109264891046e-01 -5.935615337287e-01 5.760277384943e-01 5.583423981772e-01 5.405228891241e-01 -5.225866483191e-01 5.045511524271e-01 4.864338968434e-01 4.682523747753e-01 -4.500240563851e-01 4.317663680216e-01 4.134966715663e-01 3.952322439240e-01 -3.769902566816e-01 3.587877559645e-01 3.406416425154e-01 3.225686520215e-01 -3.045853357170e-01 2.867080412837e-01 2.689528940770e-01 2.513357786996e-01 -2.338723209472e-01 2.165778701492e-01 1.994674819279e-01 1.825559013952e-01 -1.658575468121e-01 1.493864937280e-01 1.331564596210e-01 1.171807890593e-01 -1.014724393995e-01 8.604396704185e-02 7.090751425766e-02 5.607479660516e-02 -4.155709094885e-02 2.736522409645e-02 1.350956206663e-02 -8.091661967317e-16 --1.315404727541e-02 -2.594365401352e-02 -3.836039164510e-02 -5.039633618945e-02 --6.204407497545e-02 -7.329671266528e-02 -8.414787657521e-02 -9.459172128886e-02 --1.046229325594e-01 -1.142367304979e-01 -1.234288720462e-01 -1.321956527344e-01 --1.405339077219e-01 -1.484410121248e-01 -1.559148806314e-01 -1.629539664096e-01 --1.695572593094e-01 -1.757242833674e-01 -1.814550936186e-01 -1.867502722230e-01 --1.916109239149e-01 -1.960386707847e-01 -2.000356464025e-01 -2.036044892942e-01 --2.067483357832e-01 -2.094708122085e-01 -2.117760265342e-01 -2.136685593635e-01 --2.151534543730e-01 -2.162362081830e-01 -2.169227596796e-01 -2.172194788069e-01 --2.171331548467e-01 -2.166709842043e-01 -2.158405577195e-01 -2.146498475232e-01 --2.131071934591e-01 -2.112212890922e-01 -2.090011673253e-01 -2.064561856448e-01 --2.035960110195e-01 -2.004306044739e-01 -1.969702053588e-01 -1.932253153449e-01 --1.892066821602e-01 -1.849252830975e-01 -1.803923083151e-01 -1.756191439552e-01 --1.706173551053e-01 -1.653986686265e-01 -1.599749558740e-01 -1.543582153342e-01 --1.485605552041e-01 -1.425941759367e-01 -1.364713527783e-01 -1.302044183218e-01 --1.238057450998e-01 -1.172877282441e-01 -1.106627682334e-01 -1.039432537543e-01 --9.714154469929e-02 -9.026995532501e-02 -8.334073759344e-02 -7.636606471924e-02 --6.935801494513e-02 -6.232855556730e-02 -5.528952723222e-02 -4.825262852564e-02 --4.122940087422e-02 -3.423121377956e-02 -2.726925040388e-02 -2.035449352597e-02 --1.349771188541e-02 -6.709446932422e-03 8.091661967317e-16 6.620580085637e-03 -1.314250894106e-02 1.955627809358e-02 2.585266596731e-02 3.202274837443e-02 -3.805790849928e-02 4.394984636412e-02 4.969058776567e-02 5.527249267289e-02 -6.068826307699e-02 6.593095028556e-02 7.099396165368e-02 7.587106674556e-02 -8.055640292137e-02 8.504448034442e-02 8.933018640529e-02 9.340878955969e-02 -9.727594257840e-02 1.009276852080e-01 1.043604462423e-01 1.075710450049e-01 -1.105566922449e-01 1.133149904477e-01 1.158439335639e-01 1.181419061618e-01 -1.202076820060e-01 1.220404220705e-01 1.236396719912e-01 1.250053589653e-01 -1.261377881068e-01 1.270376382654e-01 1.277059573205e-01 1.281441569587e-01 -1.283540069471e-01 1.283376289143e-01 1.280974896510e-01 1.276363939434e-01 -1.269574769544e-01 1.260641961644e-01 1.249603228902e-01 1.236499333941e-01 -1.221373996013e-01 1.204273794422e-01 1.185248068353e-01 1.164348813293e-01 -1.141630574224e-01 1.117150335758e-01 1.090967409418e-01 1.063143318244e-01 -1.033741678916e-01 1.002828081598e-01 9.704699676953e-02 9.367365057202e-02 -9.016984654819e-02 8.654280907894e-02 8.279989708811e-02 7.894859107812e-02 -7.499648007917e-02 7.095124853243e-02 6.682066312776e-02 6.261255961661e-02 -5.833482962041e-02 5.399540745491e-02 4.960225699054e-02 4.516335856892e-02 -4.068669599532e-02 3.618024362661e-02 3.165195357416e-02 2.710974304058e-02 -2.256148180925e-02 1.801497990482e-02 1.347797544287e-02 8.958122686282e-03 -4.462980325584e-03 -7.149275395032e-16 -4.423484924474e-03 -8.800270304146e-03 --1.312329187859e-02 -1.738563562867e-02 -2.158054781755e-02 -2.570144470081e-02 --2.974192189296e-02 -3.369576337758e-02 -3.755695014953e-02 -4.131966847795e-02 --4.497831777955e-02 -4.852751809239e-02 -5.196211714087e-02 -5.527719698370e-02 --5.846808023679e-02 -6.153033586422e-02 -6.445978453086e-02 -6.725250351099e-02 --6.990483114816e-02 -7.241337086197e-02 -7.477499469850e-02 -7.698684642154e-02 --7.904634414292e-02 -8.095118249046e-02 -8.269933431327e-02 -8.428905192453e-02 --8.571886788288e-02 -8.698759531398e-02 -8.809432777479e-02 -8.903843866361e-02 --8.981958017984e-02 -9.043768183789e-02 -9.089294854048e-02 -9.118585821725e-02 --9.131715903518e-02 -9.128786618804e-02 -9.109925827260e-02 -9.075287326016e-02 --9.025050407227e-02 -8.959419377037e-02 -8.878623036942e-02 -8.782914128630e-02 --8.672568743409e-02 -8.547885697412e-02 -8.409185873785e-02 -8.256811533135e-02 --8.091125593543e-02 -7.912510881496e-02 -7.721369355130e-02 -7.518121301206e-02 --7.303204507292e-02 -7.077073410630e-02 -6.840198225223e-02 -6.593064048684e-02 --6.336169950423e-02 -6.070028042758e-02 -5.795162536585e-02 -5.512108783204e-02 --5.221412303971e-02 -4.923627809414e-02 -4.619318209477e-02 -4.309053616560e-02 --3.993410343019e-02 -3.672969894801e-02 -3.348317962868e-02 -3.020043414085e-02 --2.688737283211e-02 -2.354991767634e-02 -2.019399226492e-02 -1.682551185775e-02 --1.345037351002e-02 -1.007444629063e-02 -6.703561607520e-03 -3.343503655287e-03 -8.091661967317e-16 3.321287684157e-03 6.614772712057e-03 9.874952304679e-03 -1.309641631239e-02 1.627385573127e-02 1.940207099963e-02 2.247598006243e-02 -2.549062619148e-02 2.844118555013e-02 3.132297449135e-02 3.413145657870e-02 -3.686224932018e-02 3.951113060552e-02 4.207404483791e-02 4.454710875184e-02 -4.692661690911e-02 4.920904686583e-02 5.139106400368e-02 5.346952601928e-02 -5.544148706620e-02 5.730420154464e-02 5.905512753453e-02 6.069192986825e-02 -6.221248283989e-02 6.361487254867e-02 6.489739887441e-02 6.605857708405e-02 -6.709713906841e-02 6.801203420911e-02 6.880242987642e-02 6.946771155903e-02 -7.000748262752e-02 7.042156373406e-02 7.070999185110e-02 7.087301895268e-02 -7.091111034250e-02 7.082494263330e-02 7.061540138291e-02 7.028357839256e-02 -6.983076867396e-02 6.925846709169e-02 6.856836468843e-02 6.776234470069e-02 -6.684247827337e-02 6.581101988180e-02 6.467040247051e-02 6.342323231826e-02 -6.207228363933e-02 6.062049293139e-02 5.907095308091e-02 5.742690723682e-02 -5.569174246433e-02 5.386898319014e-02 5.196228445150e-02 4.997542496108e-02 -4.791230000042e-02 4.577691415454e-02 4.357337390075e-02 4.130588006484e-02 -3.897872015786e-02 3.659626060694e-02 3.416293889372e-02 3.168325561404e-02 -2.916176647246e-02 2.660307422553e-02 2.401182058740e-02 2.139267811165e-02 -1.875034206295e-02 1.608952229238e-02 1.341493512983e-02 1.073129530719e-02 -8.043307925584e-03 5.355660480002e-03 2.673014954360e-03 -7.526230023946e-16 --2.658796789711e-03 -5.298836496131e-03 -7.915636371211e-03 -1.050477720044e-02 --1.306191052115e-02 -1.558276568475e-02 -1.806315675175e-02 -2.049898920881e-02 --2.288626649737e-02 -2.522109634368e-02 -2.749969688076e-02 -2.971840255270e-02 --3.187366979260e-02 -3.396208246556e-02 -3.598035706879e-02 -3.792534768102e-02 --3.979405065425e-02 -4.158360904115e-02 -4.329131675165e-02 -4.491462243338e-02 --4.645113307028e-02 -4.789861729501e-02 -4.925500841066e-02 -5.051840711811e-02 --5.168708394579e-02 -5.275948137919e-02 -5.373421568778e-02 -5.461007844774e-02 --5.538603775940e-02 -5.606123915857e-02 -5.663500622177e-02 -5.710684086569e-02 --5.747642334177e-02 -5.774361192730e-02 -5.790844231499e-02 -5.797112670335e-02 --5.793205259083e-02 -5.779178127705e-02 -5.755104607507e-02 -5.721075023891e-02 --5.677196461122e-02 -5.623592499627e-02 -5.560402926396e-02 -5.487783419102e-02 --5.405905204576e-02 -5.314954692351e-02 -5.215133083990e-02 -5.106655958980e-02 --4.989752837985e-02 -4.864666724310e-02 -4.731653624443e-02 -4.590982048582e-02 --4.442932492084e-02 -4.287796898795e-02 -4.125878107252e-02 -3.957489280777e-02 --3.782953322493e-02 -3.602602276320e-02 -3.416776715041e-02 -3.225825116512e-02 --3.030103229152e-02 -2.829973427809e-02 -2.625804061163e-02 -2.417968791794e-02 --2.206845930072e-02 -1.992817763036e-02 -1.776269879406e-02 -1.557590491911e-02 --1.337169758083e-02 -1.115399100682e-02 -8.926705289161e-03 -6.693759615922e-03 --4.459065533573e-03 -2.226520251516e-03 7.149275395032e-16 2.216646547520e-03 -4.419604776640e-03 6.605100548163e-03 8.769406517547e-03 1.090884834733e-02 -1.301981080239e-02 1.509874371809e-02 1.714216783182e-02 1.914668046839e-02 -2.110896107026e-02 2.302577656394e-02 2.489398655389e-02 2.671054833591e-02 -2.847252172221e-02 3.017707367060e-02 3.182148271090e-02 3.340314316160e-02 -3.491956913071e-02 3.636839829457e-02 3.774739544933e-02 3.905445582979e-02 -4.028760819093e-02 4.144501764787e-02 4.252498827031e-02 4.352596542804e-02 -4.444653788457e-02 4.528543963624e-02 4.604155149464e-02 4.671390241085e-02 -4.730167054004e-02 4.780418404582e-02 4.822092164385e-02 4.855151288497e-02 -4.879573817824e-02 4.895352855494e-02 4.902496517506e-02 4.901027857787e-02 -4.890984767914e-02 4.872419851754e-02 4.845400275336e-02 4.810007592315e-02 -4.766337545415e-02 4.714499844287e-02 4.654617920251e-02 4.586828658428e-02 -4.511282107822e-02 4.428141169907e-02 4.337581266363e-02 4.239789986584e-02 -4.134966715663e-02 4.023322243538e-02 3.905078356065e-02 3.780467408771e-02 -3.649731884093e-02 3.513123932908e-02 3.370904901216e-02 3.223344842834e-02 -3.070722018990e-02 2.913322385713e-02 2.751439069967e-02 2.585371835441e-02 -2.415426538970e-02 2.241914578537e-02 2.065152333847e-02 1.885460600450e-02 -1.703164018409e-02 1.518590496514e-02 1.332070633044e-02 1.143937134082e-02 -9.545242303915e-03 7.641670938514e-03 5.732012544669e-03 3.819620189370e-03 -1.907838917807e-03 -7.687782007767e-16 -1.900584777436e-03 -3.790628764785e-03 --5.666876038481e-03 -7.526106916761e-03 -9.365143392521e-03 -1.118085447437e-02 --1.297016142701e-02 -1.473004290239e-02 -1.645753995316e-02 -1.814976092022e-02 --1.980388618652e-02 -2.141717278938e-02 -2.298695888388e-02 -2.451066805029e-02 --2.598581343857e-02 -2.741000174358e-02 -2.878093700455e-02 -3.009642422315e-02 --3.135437279440e-02 -3.255279974529e-02 -3.368983277625e-02 -3.476371310077e-02 --3.577279807928e-02 -3.671556364322e-02 -3.759060650603e-02 -3.839664615800e-02 --3.913252664218e-02 -3.979721810929e-02 -4.038981814945e-02 -4.090955289950e-02 --4.135577792453e-02 -4.172797887314e-02 -4.202577190581e-02 -4.224890389672e-02 --4.239725240919e-02 -4.247082544577e-02 -4.246976097406e-02 -4.239432622988e-02 --4.224491679979e-02 -4.202205548522e-02 -4.172639095100e-02 -4.135869616127e-02 --4.091986660623e-02 -4.041091832344e-02 -3.983298571793e-02 -3.918731918528e-02 --3.847528254272e-02 -3.769835027310e-02 -3.685810458721e-02 -3.595623231012e-02 --3.499452159744e-02 -3.397485848777e-02 -3.289922329778e-02 -3.176968686672e-02 --3.058840665721e-02 -2.935762271971e-02 -2.807965352778e-02 -2.675689169205e-02 --2.539179956041e-02 -2.398690471253e-02 -2.254479535683e-02 -2.106811563803e-02 --1.955956086377e-02 -1.802187265870e-02 -1.645783405477e-02 -1.487026452621e-02 --1.326201497800e-02 -1.163596269674e-02 -9.995006272538e-03 -8.342060500900e-03 --6.680051273433e-03 -5.011910466193e-03 -3.340570834516e-03 -1.668960923089e-03 -8.091661967317e-16 1.663406976591e-03 3.318374350567e-03 4.962040710312e-03 -6.591573773124e-03 - Type L N - 0 0 8 -1.000000000000e+00 9.996299309272e-01 9.985202167122e-01 9.966723355824e-01 -9.940887486459e-01 9.907728959881e-01 9.867291912182e-01 9.819630144724e-01 -9.764807038877e-01 9.702895455599e-01 9.633977620041e-01 9.558144991363e-01 -9.475498117999e-01 9.386146478614e-01 9.290208309025e-01 9.187810415390e-01 -9.079087973983e-01 8.964184317905e-01 8.843250711084e-01 8.716446109973e-01 -8.583936913341e-01 8.445896700594e-01 8.302505959068e-01 8.153951800773e-01 -8.000427669069e-01 7.842133035765e-01 7.679273089188e-01 7.512058413721e-01 -7.340704661390e-01 7.165432216036e-01 6.986465850664e-01 6.804034378539e-01 -6.618370298633e-01 6.429709436022e-01 6.238290577842e-01 6.044355105433e-01 -5.848146623272e-01 5.649910585350e-01 5.449893919607e-01 5.248344651060e-01 -5.045511524271e-01 4.841643625768e-01 4.636990007081e-01 4.431799308996e-01 -4.226319387680e-01 4.020796943278e-01 3.815477151625e-01 3.610603299659e-01 -3.406416425154e-01 3.203154961369e-01 3.001054387190e-01 2.800346883341e-01 -2.601260995227e-01 2.404021302968e-01 2.208848099135e-01 2.015957074738e-01 -1.825559013952e-01 1.637859498066e-01 1.453058619150e-01 1.271350703867e-01 -1.092924047870e-01 9.179606612179e-02 7.466360251687e-02 5.791188607578e-02 -4.155709094885e-02 2.561467264739e-02 1.009934863343e-02 -4.974919786851e-03 --1.959494424000e-02 -3.374832470904e-02 -4.742346358303e-02 -6.060957831404e-02 --7.329671266529e-02 -8.547574653712e-02 -9.713840435984e-02 -1.082772620449e-01 --1.188857524890e-01 -1.289581696271e-01 -1.384896710345e-01 -1.474762790796e-01 --1.559148806314e-01 -1.638032253296e-01 -1.711399224253e-01 -1.779244362065e-01 --1.841570800207e-01 -1.898390089126e-01 -1.949722108968e-01 -1.995594968850e-01 --2.036044892942e-01 -2.071116093607e-01 -2.100860631877e-01 -2.125338265592e-01 --2.144616285503e-01 -2.158769339703e-01 -2.167879246744e-01 -2.172034797827e-01 --2.171331548467e-01 -2.165871600048e-01 -2.155763371712e-01 -2.141121363025e-01 --2.122065907892e-01 -2.098722920193e-01 -2.071223631645e-01 -2.039704322375e-01 --2.004306044739e-01 -1.965174340891e-01 -1.922458954659e-01 -1.876313538246e-01 --1.826895354318e-01 -1.774364974027e-01 -1.718885971536e-01 -1.660624615594e-01 --1.599749558740e-01 -1.536431524689e-01 -1.470842994484e-01 -1.403157891963e-01 --1.333551269115e-01 -1.262198991892e-01 -1.189277427023e-01 -1.114963130395e-01 --1.039432537543e-01 -9.628616568004e-02 -8.854257656302e-02 -8.072991106736e-02 --7.286546120295e-02 -6.496635722696e-02 -5.704953906847e-02 -4.913172832448e-02 --4.122940087421e-02 -3.335876015733e-02 -2.553571116008e-02 -1.777583515208e-02 --1.009436521454e-02 -2.506162599381e-03 4.974306043343e-03 1.233299053394e-02 -1.955627809359e-02 2.663101330493e-02 3.354451707281e-02 4.028460455706e-02 -4.683960205160e-02 5.319836278592e-02 5.935028162728e-02 6.528530866417e-02 -7.099396165368e-02 7.646733731767e-02 8.169712147485e-02 8.667559799816e-02 -9.139565658907e-02 9.585079936267e-02 1.000351462397e-01 1.039434391438e-01 -1.075710450049e-01 1.109139575712e-01 1.139687980356e-01 1.167328144823e-01 -1.192038801653e-01 1.213804906286e-01 1.232617596819e-01 1.248474142494e-01 -1.261377881068e-01 1.271338145288e-01 1.278370178673e-01 1.282495040846e-01 -1.283739502669e-01 1.282135931456e-01 1.277722166546e-01 1.270541385561e-01 -1.260641961644e-01 1.248077312040e-01 1.232905738353e-01 1.215190258860e-01 -1.194998433250e-01 1.172402180176e-01 1.147477588040e-01 1.120304719395e-01 -1.090967409418e-01 1.059553058858e-01 1.026152421907e-01 9.908593894551e-02 -9.537707681490e-02 9.149860557430e-02 8.746072131841e-02 8.327384339037e-02 -7.894859107811e-02 7.449576012477e-02 6.992629910018e-02 6.525128568020e-02 -6.048190288084e-02 5.562941529364e-02 5.070514536863e-02 4.572044979077e-02 -4.068669599531e-02 3.561523886687e-02 3.051739766654e-02 2.540443323046e-02 -2.028752548256e-02 1.517775130328e-02 1.008606279507e-02 5.023265984552e-03 --6.934678916587e-15 -4.973283238451e-03 -9.886338779335e-03 -1.472914781650e-02 --1.949193624796e-02 -2.416519258508e-02 -2.873968518112e-02 -3.320647875028e-02 --3.755695014953e-02 -4.178280339732e-02 -4.587608390496e-02 -4.982919189811e-02 --5.363489500755e-02 -5.728634001033e-02 -6.077706370391e-02 -6.410100289807e-02 --6.725250351099e-02 -7.022632875779e-02 -7.301766642180e-02 -7.562213520068e-02 --7.803579012129e-02 -8.025512701922e-02 -8.227708608085e-02 -8.409905444744e-02 --8.571886788288e-02 -8.713481150851e-02 -8.834561961013e-02 -8.935047452444e-02 --9.014900461357e-02 -9.074128133845e-02 -9.112781544345e-02 -9.130955226611e-02 --9.128786618804e-02 -9.106455424408e-02 -9.064182890882e-02 -9.002231008092e-02 --8.920901628720e-02 -8.820535512993e-02 -8.701511300212e-02 -8.564244409680e-02 --8.409185873785e-02 -8.236821106079e-02 -8.047668607331e-02 -7.842278612627e-02 --7.621231682701e-02 -7.385137242755e-02 -7.134632072145e-02 -6.870378748338e-02 --6.593064048684e-02 -6.303397313537e-02 -6.002108774380e-02 -5.689947850612e-02 --5.367681418722e-02 -5.036092057600e-02 -4.695976273750e-02 -4.348142710220e-02 --3.993410343019e-02 -3.632606668861e-02 -3.266565888012e-02 -2.896127086028e-02 --2.522132418162e-02 -2.145425300164e-02 -1.766848609177e-02 -1.387242898393e-02 --1.007444629062e-02 -6.282844234261e-03 -2.505853420320e-03 1.248388111312e-03 -4.971851523588e-03 8.656633475558e-03 1.229497204005e-02 1.587926221512e-02 -1.940207099964e-02 2.285615200444e-02 2.623445957164e-02 2.953016237590e-02 -3.273665648249e-02 3.584757783858e-02 3.885681417515e-02 4.175851629852e-02 -4.454710875185e-02 4.721729982811e-02 4.976409091801e-02 5.218278517719e-02 -5.446899549908e-02 5.661865178097e-02 5.862800747246e-02 6.049364539718e-02 -6.221248283990e-02 6.378177589308e-02 6.519912305826e-02 6.646246809928e-02 -6.757010214600e-02 6.852066504859e-02 6.931314598432e-02 6.994688331985e-02 -7.042156373406e-02 7.073722060764e-02 7.089423168719e-02 7.089331603329e-02 -7.073553026306e-02 7.042226409951e-02 6.995523524100e-02 6.933648356590e-02 -6.856836468843e-02 6.765354288313e-02 6.659498339669e-02 6.539594416689e-02 -6.405996696958e-02 6.259086801582e-02 6.099272802224e-02 5.926988177845e-02 -5.742690723682e-02 5.546861415013e-02 5.340003228383e-02 5.122639923039e-02 -4.895314785359e-02 4.658589339161e-02 4.413042024804e-02 4.159266850061e-02 -3.897872015785e-02 3.629478519403e-02 3.354718739344e-02 3.074235003493e-02 -2.788678144804e-02 2.498706047190e-02 2.204982184854e-02 1.908174158167e-02 -1.608952229237e-02 1.307987860272e-02 1.005952257821e-02 7.035149259580e-03 -4.013422314209e-03 1.000959836986e-03 -1.995679670088e-03 -4.970011110696e-03 --7.915636371217e-03 -1.082625763435e-02 -1.369569040251e-02 -1.651787620481e-02 --1.928689496243e-02 -2.199697698773e-02 -2.464251459379e-02 -2.721807329148e-02 --2.971840255271e-02 -3.213844611903e-02 -3.447335183621e-02 -3.671848099634e-02 --3.886941717007e-02 -4.092197451301e-02 -4.287220553130e-02 -4.471640829262e-02 --4.645113307028e-02 -4.807318840906e-02 -4.957964660305e-02 -5.096784857677e-02 --5.223540816234e-02 -5.338021576663e-02 -5.440044142386e-02 -5.529453723023e-02 --5.606123915857e-02 -5.669956825245e-02 -5.720883120029e-02 -5.758862029145e-02 --5.783881275763e-02 -5.795956950415e-02 -5.795133323679e-02 -5.781482599147e-02 --5.755104607507e-02 -5.716126442675e-02 -5.664702041079e-02 -5.601011705257e-02 --5.525261573089e-02 -5.437683034061e-02 -5.338532094088e-02 -5.228088690510e-02 --5.106655958980e-02 -4.974559454052e-02 -4.832146325383e-02 -4.679784451516e-02 --4.517861533337e-02 -4.346784149330e-02 -4.166976774856e-02 -3.978880767738e-02 --3.782953322493e-02 -3.579666395606e-02 -3.369505604309e-02 -3.152969101343e-02 --2.930566428247e-02 -2.702817349742e-02 -2.470250671805e-02 -2.233403046045e-02 --1.992817763035e-02 -1.749043537227e-02 -1.502633286118e-02 -1.254142906313e-02 --1.004130049137e-02 -7.531528984243e-03 -5.017689531210e-03 -2.505338172743e-03 -6.934678916587e-15 2.492842720524e-03 4.967762272207e-03 7.419397039082e-03 -9.842462857887e-03 1.223176414801e-02 1.458220479633e-02 1.688879877472e-02 -1.914668046839e-02 2.135111469448e-02 2.349750639035e-02 2.558140995256e-02 -2.759853820777e-02 2.954477099806e-02 3.141616336386e-02 3.320895330864e-02 -3.491956913071e-02 3.654463630801e-02 3.808098392333e-02 3.952565061802e-02 -4.087589006353e-02 4.212917594121e-02 4.328320642168e-02 4.433590813660e-02 -4.528543963624e-02 4.613019432803e-02 4.686880289176e-02 4.750013516873e-02 -4.802330152312e-02 4.843765367484e-02 4.874278500464e-02 4.893853033288e-02 -4.902496517506e-02 4.900240447776e-02 4.887140084024e-02 4.863274222762e-02 -4.828744918298e-02 4.783677154644e-02 4.728218469065e-02 4.662538528277e-02 -4.586828658428e-02 4.501301330079e-02 4.406189599489e-02 4.301746507603e-02 -4.188244438241e-02 4.065974437023e-02 3.935245492708e-02 3.796383782639e-02 -3.649731884093e-02 3.495647953387e-02 3.334504874655e-02 3.166689380274e-02 -2.992601144951e-02 2.812651855569e-02 2.627264258882e-02 2.436871189244e-02 -2.241914578537e-02 2.042844450541e-02 1.840117901980e-02 1.634198072508e-02 -1.425553105917e-02 1.214655104865e-02 1.001979081395e-02 7.880019055662e-03 -5.732012544663e-03 3.580545638877e-03 1.430379849364e-03 -7.137465218882e-04 --2.847128650263e-03 -4.965105340994e-03 -7.063069044287e-03 -9.136475711889e-03 --1.118085447437e-02 -1.319181711884e-02 -1.516506734732e-02 -1.709640979658e-02 --1.898175880078e-02 -2.081714687901e-02 -2.259873293032e-02 -2.432281011960e-02 --2.598581343858e-02 -2.758432692661e-02 -2.911509053710e-02 -3.057500663591e-02 --3.196114611930e-02 -3.327075413933e-02 -3.450125542618e-02 -3.565025919711e-02 --3.671556364322e-02 -3.769515998589e-02 -3.858723609571e-02 -3.939017966780e-02 --4.010258094844e-02 -4.072323500860e-02 -4.125114356152e-02 -4.168551632193e-02 --4.202577190581e-02 -4.227153827056e-02 -4.242265269635e-02 -4.247916131053e-02 --4.244131815784e-02 -4.230958382026e-02 -4.208462359120e-02 -4.176730520968e-02 --4.135869616127e-02 -4.086006055318e-02 -4.027285557191e-02 -3.959872753301e-02 --3.883950753273e-02 -3.799720671295e-02 -3.707401115077e-02 -3.607227638571e-02 --3.499452159744e-02 -3.384342344832e-02 -3.262180960529e-02 -3.133265195645e-02 --2.997905953825e-02 -2.856427118983e-02 -2.709164795150e-02 -2.556466522485e-02 --2.398690471252e-02 -2.236204615601e-02 -2.069385889020e-02 -1.898619323381e-02 --1.724297173504e-02 -1.546818029213e-02 -1.366585916849e-02 -1.184009392259e-02 --9.995006272532e-03 -8.134744915488e-03 -6.263476322280e-03 -4.385375527155e-03 --2.504616932925e-03 -6.253651514349e-04 1.248234100769e-03 3.112063031934e-03 -4.962040710318e-03 6.794131885993e-03 8.604355680390e-03 1.038879412511e-02 -1.214360053190e-02 1.386500767619e-02 1.554933577689e-02 1.719300025595e-02 -1.879251926127e-02 2.034452093773e-02 2.184575043101e-02 2.329307661011e-02 -2.468349849486e-02 2.601415137530e-02 2.728231261083e-02 2.848540709748e-02 -2.962101239264e-02 3.068686348716e-02 3.168085721567e-02 3.260105629685e-02 -3.344569299603e-02 3.421317240339e-02 3.490207532212e-02 3.551116076145e-02 -3.603936803051e-02 3.648581842983e-02 3.684981653827e-02 3.713085109377e-02 -3.732859546769e-02 3.744290773277e-02 3.747383032626e-02 3.742158931018e-02 -3.728659323173e-02 3.706943158782e-02 3.677087289823e-02 3.639186239318e-02 -3.593351932149e-02 3.539713388664e-02 3.478416381862e-02 3.409623059028e-02 -3.333511528778e-02 3.250275414519e-02 3.160123375423e-02 3.063278596070e-02 -2.959978245979e-02 2.850472910318e-02 2.735025993118e-02 2.613913094414e-02 -2.487421362735e-02 2.355848824458e-02 2.219503691575e-02 2.078703649437e-02 -1.933775126122e-02 1.785052545076e-02 1.632877562718e-02 1.477598292730e-02 -1.319568518766e-02 1.159146897353e-02 9.966961527450e-03 8.325822655355e-03 -6.671736568086e-03 5.008403696387e-03 3.339532497358e-03 1.668831270322e-03 --6.871853145102e-15 -1.663277755294e-03 -3.317342912672e-03 -4.958568833750e-03 --6.583369196337e-03 - Type L N - 0 0 9 -1.000000000000e+00 9.995431365007e-01 9.981732973708e-01 9.958927352436e-01 -9.927051996072e-01 9.886159294654e-01 9.836316430835e-01 9.777605248430e-01 -9.710122092318e-01 9.633977620041e-01 9.549296585514e-01 9.456217595285e-01 -9.354892837886e-01 9.245487786841e-01 9.128180877951e-01 9.003163161571e-01 -8.870637930592e-01 8.730820324926e-01 8.583936913341e-01 8.430225253529e-01 -8.269933431327e-01 8.103319580098e-01 7.930651381253e-01 7.752205547002e-01 -7.568267286407e-01 7.379129755873e-01 7.185093495243e-01 6.986465850664e-01 -6.783560385471e-01 6.576696280293e-01 6.366197723676e-01 6.152393294468e-01 -5.935615337287e-01 5.716199332362e-01 5.494483261068e-01 5.270806968481e-01 -5.045511524271e-01 4.818938583271e-01 4.591429747041e-01 4.363325927745e-01 -4.134966715663e-01 3.906689751635e-01 3.678830105718e-01 3.451719663343e-01 -3.225686520215e-01 3.001054387190e-01 2.778142006333e-01 2.557262579339e-01 -2.338723209472e-01 2.122824358125e-01 1.909859317103e-01 1.700113697654e-01 -1.493864937280e-01 1.291381825264e-01 1.092924047871e-01 8.987417540594e-02 -7.090751425766e-02 5.241540711808e-02 3.441976887486e-02 1.694140909323e-02 -1.028487619225e-15 -1.638595305739e-02 -3.219913862486e-02 -4.742346358303e-02 --6.204407497545e-02 -7.604737918964e-02 -8.942105846213e-02 -1.021540846851e-01 --1.142367304979e-01 -1.256605776527e-01 -1.364185226502e-01 -1.465047796453e-01 --1.559148806314e-01 -1.646456729163e-01 -1.726953139072e-01 -1.800632632314e-01 --1.867502722230e-01 -1.927583708100e-01 -1.980908518463e-01 -2.027522529330e-01 --2.067483357832e-01 -2.100860631877e-01 -2.127735736434e-01 -2.148201537121e-01 --2.162362081830e-01 -2.170332281139e-01 -2.172237568329e-01 -2.168213539861e-01 --2.158405577195e-01 -2.142968450882e-01 -2.122065907892e-01 -2.095870243170e-01 --2.064561856448e-01 -2.028328795354e-01 -1.987366285918e-01 -1.941876251546e-01 --1.892066821602e-01 -1.838151830732e-01 -1.780350310077e-01 -1.718885971536e-01 --1.653986686265e-01 -1.585883958585e-01 -1.514812396472e-01 -1.441009179842e-01 --1.364713527783e-01 -1.286166165939e-01 -1.205608795201e-01 -1.123283562887e-01 --1.039432537543e-01 -9.542971885150e-02 -8.681178714103e-02 -7.811333205439e-02 --6.935801494513e-02 -6.056923605222e-02 -5.177008647808e-02 -4.298330128110e-02 --3.423121377956e-02 -2.553571116009e-02 -1.691819148086e-02 -8.399522155469e-03 --1.028487619225e-15 8.260687078517e-03 1.636349667821e-02 2.429006671326e-02 -3.202274837443e-02 3.954463717861e-02 4.683960205159e-02 5.389231239292e-02 -6.068826307698e-02 6.721379734912e-02 7.345612758087e-02 7.940335385353e-02 -8.504448034442e-02 9.036942949543e-02 9.536905394874e-02 1.000351462397e-01 -1.043604462423e-01 1.083386463677e-01 1.119643945218e-01 1.152332948324e-01 -1.181419061618e-01 1.206877384270e-01 1.228692467518e-01 1.246858234832e-01 -1.261377881068e-01 1.272263751013e-01 1.279537197783e-01 1.283228421551e-01 -1.283376289143e-01 1.280028135091e-01 1.273239544735e-01 1.263074120056e-01 -1.249603228902e-01 1.232905738353e-01 1.213067732963e-01 1.190182218689e-01 -1.164348813293e-01 1.135673424083e-01 1.104267913845e-01 1.070249755862e-01 -1.033741678916e-01 9.948713032114e-02 9.537707681491e-02 9.105763529064e-02 -8.654280907895e-02 8.184693783246e-02 7.698465800681e-02 7.197086301133e-02 -6.682066312776e-02 6.154934529475e-02 5.617233285596e-02 5.070514536864e-02 -4.516335856892e-02 3.956256458902e-02 3.391833252012e-02 2.824616941330e-02 -2.256148180926e-02 1.687953788548e-02 1.121543030754e-02 5.584039868720e-03 -9.813682906107e-16 -5.522337770721e-03 -1.096893733374e-02 -1.632611041383e-02 --2.158054781755e-02 -2.671934944501e-02 -3.173005300269e-02 -3.660066135776e-02 --4.131966847795e-02 -4.587608390496e-02 -5.025945571323e-02 -5.445989191001e-02 --5.846808023679e-02 -6.227530633623e-02 -6.587347025325e-02 -6.925510124285e-02 --7.241337086197e-02 -7.534210432677e-02 -7.803579012128e-02 -8.048958784776e-02 --8.269933431327e-02 -8.466154785177e-02 -8.637343088493e-02 -8.783287072958e-02 --8.903843866361e-02 -8.998938726675e-02 -9.068564605646e-02 -9.112781544345e-02 --9.131715903518e-02 -9.125559431986e-02 -9.094568176680e-02 -9.039061238318e-02 --8.959419377037e-02 -8.856083472673e-02 -8.729552844688e-02 -8.580383437062e-02 --8.409185873785e-02 -8.216623390832e-02 -8.003409650806e-02 -7.770306446669e-02 --7.518121301206e-02 -7.247704969097e-02 -6.959948848655e-02 -6.655782310482e-02 --6.336169950423e-02 -6.002108774381e-02 -5.654625322624e-02 -5.294772741363e-02 --4.923627809414e-02 -4.542287927866e-02 -4.151868080658e-02 -3.753497774042e-02 --3.348317962868e-02 -2.937477971631e-02 -2.522132418163e-02 -2.103438147799e-02 --1.682551185775e-02 -1.260623715498e-02 -8.388010902277e-03 -4.182188855652e-03 --1.028487619225e-15 4.147481894193e-03 8.249366093973e-03 1.229497204004e-02 -1.627385573126e-02 2.017583529521e-02 2.399101568496e-02 2.770981244494e-02 -3.132297449135e-02 3.482160585557e-02 3.819718634205e-02 4.144159105503e-02 -4.454710875184e-02 4.750645898377e-02 5.031280798870e-02 5.295978330336e-02 -5.544148706620e-02 5.775250798589e-02 5.988793195354e-02 6.184335128071e-02 -6.361487254867e-02 6.519912305826e-02 6.659325587311e-02 6.779495345287e-02 -6.880242987642e-02 6.961443165918e-02 7.023023717155e-02 7.064965466964e-02 -7.087301895268e-02 7.090118666487e-02 7.073553026306e-02 7.037793067472e-02 -6.983076867396e-02 6.909691500657e-02 6.817971929793e-02 6.708299778067e-02 -6.581101988180e-02 6.436849371157e-02 6.276055049912e-02 6.099272802224e-02 -5.907095308091e-02 5.700152306656e-02 5.479108668090e-02 5.244662385998e-02 -4.997542496108e-02 4.738506927143e-02 4.468340289906e-02 4.187851610764e-02 -3.897872015786e-02 3.599252371908e-02 3.292860891557e-02 2.979580707229e-02 -2.660307422553e-02 2.335946646383e-02 2.007411516497e-02 1.675620219433e-02 -1.341493512983e-02 1.005952257822e-02 6.699149646785e-03 3.342953633782e-03 -9.436728277193e-16 -3.320741317277e-03 -6.610419187885e-03 -9.860324111322e-03 --1.306191052115e-02 -1.620681851582e-02 -1.928689496242e-02 -2.229421392150e-02 --2.522109634368e-02 -2.806012899041e-02 -3.080418253391e-02 -3.344642879361e-02 --3.598035706879e-02 -3.839978953001e-02 -4.069889563417e-02 -4.287220553129e-02 --4.491462243338e-02 -4.682143391916e-02 -4.858832215099e-02 -5.021137298340e-02 --5.168708394579e-02 -5.301237108475e-02 -5.418457465452e-02 -5.520146364738e-02 --5.606123915857e-02 -5.676253658364e-02 -5.730442664918e-02 -5.768641528071e-02 --5.790844231499e-02 -5.797087906641e-02 -5.787452476069e-02 -5.762060185151e-02 --5.721075023891e-02 -5.664702041079e-02 -5.593186553183e-02 -5.506813250652e-02 --5.405905204576e-02 -5.290822776886e-02 -5.161962437502e-02 -5.019755492096e-02 --4.864666724310e-02 -4.697192956512e-02 -4.517861533338e-02 -4.327228732471e-02 --4.125878107252e-02 -3.914418765901e-02 -3.693483592234e-02 -3.463727412937e-02 --3.225825116513e-02 -2.980469729173e-02 -2.728370453004e-02 -2.470250671806e-02 --2.206845930072e-02 -1.938901890624e-02 -1.667172276413e-02 -1.392416802064e-02 --1.115399100682e-02 -8.368846514653e-03 -5.576387136151e-03 -2.784242720059e-03 --9.813682906107e-16 2.768817552632e-03 5.514769598733e-03 8.230518473086e-03 -1.090884834733e-02 1.354268396528e-02 1.612510890301e-02 1.864938330763e-02 -2.110896107025e-02 2.349750639034e-02 2.580890969058e-02 2.803730284316e-02 -3.017707367060e-02 3.222287968604e-02 3.416966104046e-02 3.601265264628e-02 -3.774739544933e-02 3.936974682327e-02 4.087589006353e-02 4.226234295964e-02 -4.352596542804e-02 4.466396618951e-02 4.567390847842e-02 4.655371477312e-02 -4.730167054004e-02 4.791642698619e-02 4.839700281770e-02 4.874278500463e-02 -4.895352855494e-02 4.902935530296e-02 4.897075172058e-02 4.877856576176e-02 -4.845400275336e-02 4.799862034808e-02 4.741432255744e-02 4.670335288527e-02 -4.586828658428e-02 4.491202206072e-02 4.383777145416e-02 4.264905042157e-02 -4.134966715663e-02 3.994371067757e-02 3.843553841795e-02 3.682976315726e-02 -3.513123932908e-02 3.334504874656e-02 3.147648578604e-02 2.953104207099e-02 -2.751439069967e-02 2.543237006067e-02 2.329096728174e-02 2.109630135776e-02 -1.885460600450e-02 1.657221228548e-02 1.425553105918e-02 1.191103529476e-02 -9.545242303916e-03 7.164695937005e-03 4.775948791249e-03 2.385544478523e-03 -1.008293621247e-15 -2.374211725654e-03 -4.730679134458e-03 -7.063069044280e-03 --9.365143392520e-03 -1.163077564077e-02 -1.385396680399e-02 -1.602886106300e-02 --1.814976092022e-02 -2.021114186023e-02 -2.220766647794e-02 -2.413419803901e-02 --2.598581343857e-02 -2.775781552631e-02 -2.944574476758e-02 -3.104539021231e-02 --3.255279974529e-02 -3.396428959353e-02 -3.527645306853e-02 -3.648616852324e-02 --3.759060650603e-02 -3.858723609570e-02 -3.947383040443e-02 -4.024847123726e-02 --4.090955289949e-02 -4.145578514536e-02 -4.188619526375e-02 -4.220012929931e-02 --4.239725240919e-02 -4.247754835824e-02 -4.244131815784e-02 -4.228917785554e-02 --4.202205548522e-02 -4.164118718939e-02 -4.114811252782e-02 -4.054466898832e-02 --3.983298571793e-02 -3.901547649476e-02 -3.809483196235e-02 -3.707401115077e-02 --3.595623231012e-02 -3.474496308396e-02 -3.344391005198e-02 -3.205700767251e-02 --3.058840665721e-02 -2.904246181152e-02 -2.742371937582e-02 -2.573690390341e-02 --2.398690471253e-02 -2.217876195056e-02 -2.031765230960e-02 -1.840887443320e-02 --1.645783405478e-02 -1.447002890888e-02 -1.245103345675e-02 -1.040648346806e-02 --8.342060500902e-03 -6.263476322287e-03 -4.176457311176e-03 -2.086728886224e-03 --1.028487619225e-15 2.078052258836e-03 4.141797914401e-03 6.185669163003e-03 -8.204175203364e-03 1.019191679861e-02 1.214360053189e-02 1.405405271848e-02 -1.591823293822e-02 1.773124715345e-02 1.948836037860e-02 2.118500886927e-02 -2.281681179972e-02 2.437958239938e-02 2.586933852051e-02 2.728231261082e-02 -2.861496106642e-02 2.986397294240e-02 3.102627800003e-02 3.209905407155e-02 -3.307973372531e-02 3.396601021598e-02 3.475584270669e-02 3.544746075170e-02 -3.603936803051e-02 3.653034532611e-02 3.691945274235e-02 3.720603115738e-02 -3.738970291204e-02 3.747037173448e-02 3.744822190398e-02 3.732371665920e-02 -3.709759585804e-02 3.677087289823e-02 3.634483090979e-02 3.582101823240e-02 -3.520124319259e-02 3.448756819749e-02 3.368230316362e-02 3.278799830097e-02 -3.180743627433e-02 3.074362376527e-02 2.959978245980e-02 2.837933948829e-02 -2.708591734532e-02 2.572332331878e-02 2.429553845842e-02 2.280670611555e-02 -2.126112008611e-02 1.966321239095e-02 1.801754072739e-02 1.632877562719e-02 -1.460168735687e-02 1.284113259644e-02 1.105204093352e-02 9.239401209958e-03 -7.408247758264e-03 5.563646565607e-03 3.710681402866e-03 1.854439956403e-03 -9.185425191250e-16 -1.847584355823e-03 -3.683296300260e-03 -5.502169807974e-03 --7.299302938287e-03 -9.069870912525e-03 -1.080913893498e-02 -1.251247472377e-02 --1.417536071871e-02 -1.579340593449e-02 -1.736235742821e-02 -1.887811135175e-02 --2.033672356062e-02 -2.173441975207e-02 -2.306760510673e-02 -2.433287340965e-02 --2.552701562760e-02 -2.664702792168e-02 -2.769011907529e-02 -2.865371731968e-02 --2.953547654045e-02 -3.033328185063e-02 -3.104525451736e-02 -3.166975623109e-02 --3.220539270811e-02 -3.265101661891e-02 -3.300572983680e-02 -3.326888500316e-02 --3.344008640725e-02 -3.351919018076e-02 -3.350630380882e-02 -3.340178496121e-02 --3.320623964916e-02 -3.292051971517e-02 -3.254571966486e-02 -3.208317285162e-02 --3.153444702669e-02 -3.090133926881e-02 -3.018587030927e-02 -2.939027826978e-02 --2.851701183216e-02 -2.756872286008e-02 -2.654825849487e-02 -2.545865274850e-02 --2.430311761806e-02 -2.308503374762e-02 -2.180794066405e-02 -2.047552661481e-02 --1.909161803650e-02 -1.766016868389e-02 -1.618524845002e-02 -1.467103190869e-02 --1.312178661124e-02 -1.154186117015e-02 -9.935673162460e-03 -8.307696886265e-03 --6.662451004076e-03 -5.004486106753e-03 -3.338372232010e-03 -1.668686371455e-03 --9.436728277193e-16 1.663133338602e-03 3.316190356713e-03 4.954690225091e-03 -6.574206619914e-03 - Type L N - 0 0 10 -1.000000000000e+00 9.994472110789e-01 9.977899443184e-01 9.950314971204e-01 -9.911773564758e-01 9.862351859690e-01 9.802148076310e-01 9.731281786890e-01 -9.649893632704e-01 9.558144991363e-01 9.456217595285e-01 9.344313102292e-01 -9.222652619442e-01 9.091476181311e-01 8.951042184077e-01 8.801626776859e-01 -8.643523211873e-01 8.477041155076e-01 8.302505959068e-01 8.120257900115e-01 -7.930651381253e-01 7.734054103500e-01 7.530846207322e-01 7.321419386517e-01 -7.106175976801e-01 6.885528021412e-01 6.659896316114e-01 6.429709436022e-01 -6.195402746735e-01 5.957417402274e-01 5.716199332362e-01 5.472198221610e-01 -5.225866483191e-01 4.977658229563e-01 4.728028242863e-01 4.477430947521e-01 -4.226319387680e-01 3.975144211975e-01 3.724352668186e-01 3.474387610269e-01 -3.225686520215e-01 2.978680547147e-01 2.733793566015e-01 2.491441258191e-01 -2.252030216196e-01 2.015957074738e-01 1.783607670137e-01 1.555356230162e-01 -1.331564596210e-01 1.112581479646e-01 8.987417540594e-02 6.903657850743e-02 -4.877587992491e-02 2.912102934951e-02 1.009934863344e-02 -8.263518780022e-03 --2.594365401352e-02 -4.291890440307e-02 -5.916892055123e-02 -7.467518871405e-02 --8.942105846214e-02 -1.033917655690e-01 -1.165744500923e-01 -1.289581696271e-01 --1.405339077219e-01 -1.512945774624e-01 -1.612350202393e-01 -1.703519997303e-01 --1.786441911383e-01 -1.861121657396e-01 -1.927583708100e-01 -1.985871050064e-01 --2.036044892942e-01 -2.078184335230e-01 -2.112385987623e-01 -2.138763555209e-01 --2.157447379844e-01 -2.168583944138e-01 -2.172335338584e-01 -2.168878693459e-01 --2.158405577195e-01 -2.141121363025e-01 -2.117244565748e-01 -2.087006150560e-01 --2.050648815952e-01 -2.008426252725e-01 -1.960602381230e-01 -1.907450569001e-01 --1.849252830975e-01 -1.786299014517e-01 -1.718885971536e-01 -1.647316719951e-01 --1.571899596821e-01 -1.492947405431e-01 -1.410776558659e-01 -1.325706220924e-01 --1.238057450998e-01 -1.148152347989e-01 -1.056313202729e-01 -9.628616568005e-02 --8.681178714103e-02 -7.723997082428e-02 -6.760219244175e-02 -5.792953835984e-02 --4.825262852564e-02 -3.860154140213e-02 -2.900574109914e-02 -1.949400687983e-02 --1.009436521454e-02 -8.340245460715e-04 8.260687078522e-03 1.716438136307e-02 -2.585266596732e-02 3.430219743426e-02 4.249073072232e-02 5.039716523482e-02 -5.800158724985e-02 6.528530866417e-02 7.223090197555e-02 7.882223143918e-02 -8.504448034442e-02 9.088417436983e-02 9.632920098520e-02 1.013688248810e-01 -1.059936994162e-01 1.101958740880e-01 1.139687980356e-01 1.173073196045e-01 -1.202076820060e-01 1.226675151177e-01 1.246858234832e-01 1.262629705772e-01 -1.274006594126e-01 1.281019095783e-01 1.283710308022e-01 1.282135931456e-01 -1.276363939434e-01 1.266474216127e-01 1.252558164592e-01 1.234718286214e-01 -1.213067732963e-01 1.187729833992e-01 1.158837598151e-01 1.126533194059e-01 -1.090967409418e-01 1.052299091315e-01 1.010694569264e-01 9.663270628380e-02 -9.193760756917e-02 8.700267778782e-02 8.184693783246e-02 7.648984893776e-02 -7.095124853243e-02 6.525128568020e-02 5.941035630050e-02 5.344903835888e-02 -4.738802721590e-02 4.124807132124e-02 3.504990843726e-02 2.881420257339e-02 -2.256148180925e-02 1.631207718022e-02 1.008606279507e-02 3.903197350047e-03 --2.217132801385e-03 -8.255968869827e-03 -1.419483299505e-02 -2.001577961440e-02 --2.570144470082e-02 -3.123509274427e-02 -3.660066135776e-02 -4.178280339732e-02 --4.676692649316e-02 -5.153922989805e-02 -5.608673856737e-02 -6.039733439403e-02 --6.445978453086e-02 -6.826376674180e-02 -7.179989173278e-02 -7.505972242229e-02 --7.803579012129e-02 -8.072160760124e-02 -8.311167903879e-02 -8.520150683466e-02 --8.698759531398e-02 -8.846745132433e-02 -8.963958175685e-02 -9.050348802510e-02 --9.105965754475e-02 -9.130955226611e-02 -9.125559431986e-02 -9.090114884454e-02 --9.025050407227e-02 -8.930884875676e-02 -8.808224703522e-02 -8.657761082247e-02 --8.480266984257e-02 -8.276593940935e-02 -8.047668607331e-02 -7.794489125769e-02 --7.518121301206e-02 -7.219694601593e-02 -6.900397996969e-02 -6.561475651370e-02 --6.204222481980e-02 -5.829979600261e-02 -5.440129650023e-02 -5.036092057600e-02 --4.619318209477e-02 -4.191286572765e-02 -3.753497774042e-02 -3.307469652025e-02 --2.854732299567e-02 -2.396823110323e-02 -1.935281845357e-02 -1.471645734749e-02 --1.007444629063e-02 -5.441962152592e-03 -8.340131134693e-04 3.734607462995e-03 -8.249366093978e-03 1.269603304869e-02 1.706072489944e-02 2.132994563090e-02 -2.549062619148e-02 2.953016237590e-02 3.343645093440e-02 3.719792381012e-02 -4.080358041244e-02 4.424301784129e-02 4.750645898377e-02 5.058477841218e-02 -5.346952601928e-02 5.615294833457e-02 5.862800747246e-02 6.088839767150e-02 -6.292855939077e-02 6.474369093825e-02 6.632975761306e-02 6.768349835174e-02 -6.880242987642e-02 6.968484835051e-02 7.032982855517e-02 7.073722060764e-02 -7.090764424978e-02 7.084248074266e-02 7.054386241019e-02 7.001465988192e-02 -6.925846709169e-02 6.827958409586e-02 6.708299778067e-02 6.567436053492e-02 -6.405996696958e-02 6.224672877171e-02 6.024214778529e-02 5.805428741631e-02 -5.569174246433e-02 5.316360748664e-02 5.047944380534e-02 4.764924527090e-02 -4.468340289906e-02 4.159266850062e-02 3.838811742612e-02 3.508111054918e-02 -3.168325561403e-02 2.820636807394e-02 2.466243154773e-02 2.106355802239e-02 -1.742194792929e-02 1.374985022146e-02 1.005952257821e-02 6.363191862465e-03 -2.673014954357e-03 -9.989599172428e-04 -4.640831226017e-03 -8.240881465704e-03 --1.178761362031e-02 -1.526978667692e-02 -1.867645007470e-02 -2.199697698773e-02 --2.522109634369e-02 -2.833892348486e-02 -3.134098938305e-02 -3.421826832488e-02 --3.696220398950e-02 -3.956473384618e-02 -4.201831180501e-02 -4.431592906008e-02 --4.645113307028e-02 -4.841804462941e-02 -5.021137298340e-02 -5.182642895904e-02 --5.325913607509e-02 -5.450603961314e-02 -5.556431363235e-02 -5.643176591865e-02 --5.710684086569e-02 -5.758862029145e-02 -5.787682220067e-02 -5.797179751029e-02 --5.787452476069e-02 -5.758660284245e-02 -5.711024177417e-02 -5.644825157280e-02 --5.560402926396e-02 -5.458154408524e-02 -5.338532094088e-02 -5.202042217149e-02 --5.049242770755e-02 -4.880741367987e-02 -4.697192956511e-02 -4.499297394823e-02 --4.287796898795e-02 -4.063473367489e-02 -3.827145597526e-02 -3.579666395606e-02 --3.321919599056e-02 -3.054817014492e-02 -2.779295284911e-02 -2.496312695688e-02 --2.206845930072e-02 -1.911886784914e-02 -1.612438857380e-02 -1.309514213469e-02 --1.004130049137e-02 -6.973053547895e-03 -3.900575938423e-03 -8.339940593414e-04 -2.216646547523e-03 5.241413357844e-03 8.230518473092e-03 1.117434957576e-02 -1.406350013570e-02 1.688879877471e-02 1.964133769970e-02 2.231250011820e-02 -2.489398655389e-02 2.737783998349e-02 2.975646972084e-02 3.202267397836e-02 -3.416966104046e-02 3.619106898875e-02 3.808098392333e-02 3.983395662993e-02 -4.144501764788e-02 4.290969069902e-02 4.422400444354e-02 4.538450253385e-02 -4.638825194349e-02 4.723284955377e-02 4.791642698619e-02 4.843765367484e-02 -4.879573817824e-02 4.899042773607e-02 4.902200608166e-02 4.889128952662e-02 -4.859962133973e-02 4.814886444721e-02 4.754139248701e-02 4.678007925480e-02 -4.586828658428e-02 4.480985070932e-02 4.360906715996e-02 4.227067424894e-02 -4.079983520939e-02 3.920211904877e-02 3.748348018731e-02 3.565023695355e-02 -3.370904901215e-02 3.166689380274e-02 2.953104207099e-02 2.730903257588e-02 -2.500864605923e-02 2.263787856540e-02 2.020491420100e-02 1.771809742553e-02 -1.518590496513e-02 1.261691744214e-02 1.001979081395e-02 7.403227714403e-03 -4.775948791243e-03 2.146664132266e-03 -4.759551275889e-04 -3.083304927193e-03 --5.666876038484e-03 -8.218281375879e-03 -1.072928276960e-02 -1.319181711884e-02 --1.559802184300e-02 -1.794025955212e-02 -2.021114186023e-02 -2.240355226875e-02 --2.451066805029e-02 -2.652598106675e-02 -2.844331745951e-02 -3.025685615326e-02 --3.196114611930e-02 -3.355112234832e-02 -3.502212048713e-02 -3.636989009825e-02 --3.759060650603e-02 -3.868088119771e-02 -3.963777075253e-02 -4.045878427703e-02 --4.114188932956e-02 -4.168551632193e-02 -4.208856139122e-02 -4.235038773969e-02 --4.247082544577e-02 -4.245016975381e-02 -4.228917785554e-02 -4.198906418077e-02 --4.155149421945e-02 -4.097857690240e-02 -4.027285557191e-02 -3.943729757831e-02 --3.847528254272e-02 -3.739058933031e-02 -3.618738178244e-02 -3.487019325972e-02 --3.344391005198e-02 -3.191375371399e-02 -3.028526238965e-02 -2.856427118983e-02 --2.675689169205e-02 -2.486949063283e-02 -2.290866786554e-02 -2.088123365893e-02 --1.879418541313e-02 -1.665468387165e-02 -1.447002890888e-02 -1.224763497396e-02 --9.995006272534e-03 -7.719711768134e-03 -5.429360085660e-03 -3.131574398894e-03 --8.339673840012e-04 1.455883679772e-03 3.730461581743e-03 5.982333544460e-03 -8.204175203370e-03 1.038879412511e-02 1.252915278979e-02 1.461839096487e-02 -1.664984740019e-02 1.861708077669e-02 2.051388984368e-02 2.233433268249e-02 -2.407274503779e-02 2.572375766059e-02 2.728231261082e-02 2.874367847092e-02 -3.010346442531e-02 3.135763316495e-02 3.250251257987e-02 3.353480620673e-02 -3.445160240269e-02 3.525038222110e-02 3.592902596889e-02 3.648581842983e-02 -3.691945274236e-02 3.722903292488e-02 3.741407504625e-02 3.747450704307e-02 -3.741066719032e-02 3.722330123580e-02 3.691355821350e-02 3.648298495484e-02 -3.593351932149e-02 3.526748218680e-02 3.448756819749e-02 3.359683535071e-02 -3.259869342535e-02 3.149689131030e-02 3.029550327527e-02 2.899891423368e-02 -2.761180404960e-02 2.613913094415e-02 2.458611405898e-02 2.295821523747e-02 -2.126112008610e-02 1.950071838100e-02 1.768308388613e-02 1.581445365156e-02 -1.390120686153e-02 1.194984330310e-02 9.966961527452e-03 7.959236776322e-03 -5.933398746592e-03 3.896209266459e-03 1.854439956398e-03 -1.851500519846e-04 --2.215836266612e-03 -4.230950783254e-03 -6.223903960550e-03 -8.188205751972e-03 --1.011748662635e-02 -1.200551801019e-02 -1.384623218687e-02 -1.563374158969e-02 --1.736235742821e-02 -1.902660758947e-02 -2.062125375845e-02 -2.214130770477e-02 --2.358204668567e-02 -2.493902791837e-02 -2.620810207787e-02 -2.738542578009e-02 --2.846747301330e-02 -2.945104548440e-02 -3.033328185063e-02 -3.111166581057e-02 --3.178403303238e-02 -3.234857690119e-02 -3.280385307116e-02 -3.314878281197e-02 --3.338265514341e-02 -3.350512775560e-02 -3.351622671647e-02 -3.341634497207e-02 --3.320623964916e-02 -3.288702817337e-02 -3.246018322023e-02 -3.192752651982e-02 --3.129122153972e-02 -3.055376507441e-02 -2.971797777264e-02 -2.878699363791e-02 --2.776424854012e-02 -2.665346777968e-02 -2.545865274849e-02 -2.418406673453e-02 --2.283421991993e-02 -2.141385362464e-02 -1.992792384979e-02 -1.838158417767e-02 --1.678016808619e-02 -1.512917073837e-02 -1.343423030803e-02 -1.170110890483e-02 --9.935673162455e-03 -8.143874554762e-03 -6.331729505477e-03 -4.505299357224e-03 --2.670670266093e-03 -8.339330878873e-04 9.988366780369e-04 2.821598821804e-03 -4.628368168062e-03 6.413234069001e-03 8.170379582363e-03 9.894100272720e-03 -1.157882257575e-02 1.321912166684e-02 1.480973877731e-02 1.634559790329e-02 -1.782182185480e-02 1.923374759465e-02 2.057694081947e-02 2.184720973758e-02 -2.304061800154e-02 2.415349675588e-02 2.518245576354e-02 2.612439357781e-02 -2.697650672987e-02 2.773629790500e-02 2.840158308434e-02 2.897049763238e-02 -2.944150131375e-02 2.981338222670e-02 3.008525964401e-02 3.025658575586e-02 -3.032714631269e-02 3.029706016974e-02 3.016677773849e-02 2.993707835397e-02 -2.960906657000e-02 2.918416739859e-02 2.866412051230e-02 2.805097343238e-02 -2.734707372846e-02 2.655506025855e-02 2.567785348165e-02 2.471864487758e-02 -2.368088551198e-02 2.256827378681e-02 2.138474241929e-02 2.013444469455e-02 -1.882174003967e-02 1.745117896862e-02 1.602748744963e-02 1.455555074826e-02 -1.304039680095e-02 1.148717917508e-02 9.901159673036e-03 8.287690638390e-03 -6.652197023323e-03 5.000158276982e-03 3.337090114773e-03 1.668526228842e-03 --4.381668020759e-15 -1.662973728921e-03 -3.314916758537e-03 -4.950405458315e-03 --6.564088453486e-03 - Type L N - 0 0 11 -1.000000000000e+00 9.993421562398e-01 9.973701827725e-01 9.940887486459e-01 -9.895056209813e-01 9.836316430835e-01 9.764807038877e-01 9.680696988392e-01 -9.584184823246e-01 9.475498117999e-01 9.354892837886e-01 9.222652619442e-01 -9.079087973984e-01 8.924535416387e-01 8.759356521824e-01 8.583936913341e-01 -8.398685183386e-01 8.204031752555e-01 8.000427669069e-01 7.788343352617e-01 -7.568267286407e-01 7.340704661390e-01 7.106175976801e-01 6.865215601232e-01 -6.618370298633e-01 6.366197723676e-01 6.109264891046e-01 5.848146623272e-01 -5.583423981772e-01 5.315682685834e-01 5.045511524271e-01 4.773500764507e-01 -4.500240563851e-01 4.226319387680e-01 3.952322439240e-01 3.678830105718e-01 -3.406416425154e-01 3.135647578731e-01 2.867080412837e-01 2.601260995227e-01 -2.338723209472e-01 2.079987391756e-01 1.825559013952e-01 1.575927416715e-01 -1.331564596210e-01 1.092924047871e-01 8.604396704186e-02 6.345247331782e-02 -4.155709094886e-02 2.039473788245e-02 2.017993520125e-15 -1.959494423999e-02 --3.836039164509e-02 -5.626917445165e-02 -7.329671266528e-02 -8.942105846213e-02 --1.046229325594e-01 -1.188857524890e-01 -1.321956527344e-01 -1.445414967152e-01 --1.559148806314e-01 -1.663101292031e-01 -1.757242833674e-01 -1.841570800207e-01 --1.916109239149e-01 -1.980908518463e-01 -2.036044892942e-01 -2.081619996917e-01 --2.117760265342e-01 -2.144616285503e-01 -2.162362081830e-01 -2.171194336468e-01 --2.171331548467e-01 -2.163013134635e-01 -2.146498475232e-01 -2.122065907892e-01 --2.090011673253e-01 -2.050648815952e-01 -2.004306044739e-01 -1.951326555559e-01 --1.892066821602e-01 -1.826895354318e-01 -1.756191439552e-01 -1.680343852933e-01 --1.599749558740e-01 -1.514812396472e-01 -1.425941759367e-01 -1.333551269115e-01 --1.238057450998e-01 -1.139878413639e-01 -1.039432537543e-01 -9.371371765055e-02 --8.334073759345e-02 -7.286546120296e-02 -6.232855556730e-02 -5.177008647808e-02 --4.122940087422e-02 -3.074501284472e-02 -2.035449352597e-02 -1.009436521455e-02 --2.017993520125e-15 9.894476794452e-03 1.955627809358e-02 2.895404122269e-02 -3.805790849928e-02 4.683960205159e-02 5.527249267288e-02 6.333166254088e-02 -7.099396165367e-02 7.823805785504e-02 8.504448034442e-02 9.139565658906e-02 -9.727594257839e-02 1.026716463832e-01 1.075710450049e-01 1.119643945218e-01 -1.158439335639e-01 1.192038801653e-01 1.220404220705e-01 1.243517005880e-01 -1.261377881068e-01 1.274006594126e-01 1.281441569587e-01 1.283739502669e-01 -1.280974896510e-01 1.273239544735e-01 1.260641961644e-01 1.243306762428e-01 -1.221373996013e-01 1.194998433250e-01 1.164348813293e-01 1.129607051143e-01 -1.090967409418e-01 1.048635637545e-01 1.002828081598e-01 9.537707681491e-02 -9.016984654819e-02 8.468537256426e-02 7.894859107812e-02 7.298502072940e-02 -6.682066312776e-02 6.048190288085e-02 5.399540745491e-02 4.738802721591e-02 -4.068669599532e-02 3.391833252012e-02 2.710974304059e-02 2.028752548257e-02 -1.347797544287e-02 6.706994337182e-03 1.923754862896e-15 -6.618159975096e-03 --1.312329187858e-02 -1.949193624796e-02 -2.570144470081e-02 -3.173005300269e-02 --3.755695014952e-02 -4.316234326035e-02 -4.852751809238e-02 -5.363489500754e-02 --5.846808023679e-02 -6.301191230674e-02 -6.725250351099e-02 -7.117727632701e-02 --7.477499469849e-02 -7.803579012128e-02 -8.095118249046e-02 -8.351409568469e-02 --8.571886788288e-02 -8.756125662706e-02 -8.903843866361e-02 -9.014900461356e-02 --9.089294854048e-02 -9.127165250193e-02 -9.128786618804e-02 -9.094568176680e-02 --9.025050407227e-02 -8.920901628720e-02 -8.782914128630e-02 -8.611999882078e-02 --8.409185873785e-02 -8.175609044184e-02 -7.912510881497e-02 -7.621231682701e-02 --7.303204507292e-02 -6.959948848655e-02 -6.593064048685e-02 -6.204222481980e-02 --5.795162536585e-02 -5.367681418723e-02 -4.923627809414e-02 -4.464894401152e-02 --3.993410343019e-02 -3.511133622733e-02 -3.020043414086e-02 -2.522132418163e-02 --2.019399226493e-02 -1.513840733979e-02 -1.007444629063e-02 -5.021819880604e-03 --2.017993520125e-15 4.971851523579e-03 9.874952304676e-03 1.469096672875e-02 -1.940207099963e-02 2.399101568496e-02 2.844118555012e-02 3.273665648248e-02 -3.686224932018e-02 4.080358041244e-02 4.454710875184e-02 4.808017953263e-02 -5.139106400368e-02 5.446899549907e-02 5.730420154464e-02 5.988793195354e-02 -6.221248283989e-02 6.427121649467e-02 6.605857708405e-02 6.757010214599e-02 -6.880242987642e-02 6.975330221231e-02 7.042156373406e-02 7.080715642526e-02 -7.091111034250e-02 7.073553026306e-02 7.028357839256e-02 6.955945322834e-02 -6.856836468843e-02 6.731650562847e-02 6.581101988180e-02 6.405996696958e-02 -6.207228363933e-02 5.985774240061e-02 5.742690723683e-02 5.479108668090e-02 -5.196228445150e-02 4.895314785360e-02 4.577691415454e-02 4.244735515224e-02 -3.897872015786e-02 3.538567761909e-02 3.168325561404e-02 2.788678144805e-02 -2.401182058740e-02 2.007411516497e-02 1.608952229238e-02 1.207395241270e-02 -8.043307925587e-03 4.013422314218e-03 2.074536714462e-15 -3.981442853543e-03 --7.915636371208e-03 -1.178761362030e-02 -1.558276568474e-02 -1.928689496242e-02 --2.288626649737e-02 -2.636765716683e-02 -2.971840255270e-02 -3.292644133668e-02 --3.598035706879e-02 -3.886941717006e-02 -4.158360904114e-02 -4.411367316085e-02 --4.645113307028e-02 -4.858832215099e-02 -5.051840711811e-02 -5.223540816233e-02 --5.373421568777e-02 -5.501060360585e-02 -5.606123915857e-02 -5.688368925801e-02 --5.747642334177e-02 -5.783881275763e-02 -5.797112670335e-02 -5.787452476069e-02 --5.755104607507e-02 -5.700359524489e-02 -5.623592499627e-02 -5.525261573090e-02 --5.405905204576e-02 -5.266139633442e-02 -5.106655958980e-02 -4.928216953832e-02 --4.731653624443e-02 -4.517861533338e-02 -4.287796898795e-02 -4.042472488259e-02 --3.782953322493e-02 -3.510352208092e-02 -3.225825116513e-02 -2.930566428247e-02 --2.625804061164e-02 -2.312794502346e-02 -1.992817763036e-02 -1.667172276413e-02 --1.337169758083e-02 -1.004130049137e-02 -6.693759615925e-03 -3.342281458998e-03 --1.923754862896e-15 3.320073608768e-03 6.605100548160e-03 9.842462857878e-03 -1.301981080238e-02 1.612510890301e-02 1.914668046838e-02 2.207325046213e-02 -2.489398655388e-02 2.759853820776e-02 3.017707367060e-02 3.262031473114e-02 -3.491956913070e-02 3.706676051534e-02 3.905445582979e-02 4.087589006353e-02 -4.252498827031e-02 4.399638479288e-02 4.528543963624e-02 4.638825194349e-02 -4.730167054004e-02 4.802330152311e-02 4.855151288497e-02 4.888543616976e-02 -4.902496517506e-02 4.897075172058e-02 4.872419851754e-02 4.828744918298e-02 -4.766337545415e-02 4.685556166845e-02 4.586828658428e-02 4.470650262832e-02 -4.337581266363e-02 4.188244438241e-02 4.023322243538e-02 3.843553841795e-02 -3.649731884093e-02 3.442699122049e-02 3.223344842835e-02 2.992601144952e-02 -2.751439069967e-02 2.500864605924e-02 2.241914578537e-02 1.975652446611e-02 -1.703164018409e-02 1.425553105918e-02 1.143937134083e-02 8.594427221724e-03 -5.732012544672e-03 2.863444573755e-03 1.977605524170e-15 -2.847128650254e-03 --5.666876038478e-03 -8.448346305770e-03 -1.118085447436e-02 -1.385396680399e-02 --1.645753995316e-02 -1.898175880077e-02 -2.141717278938e-02 -2.375473065794e-02 --2.598581343857e-02 -2.810226559941e-02 -3.009642422315e-02 -3.196114611929e-02 --3.368983277624e-02 -3.527645306853e-02 -3.671556364322e-02 -3.800232691919e-02 --3.913252664218e-02 -4.010258094843e-02 -4.090955289949e-02 -4.155115846070e-02 --4.202577190581e-02 -4.233242864031e-02 -4.247082544577e-02 -4.244131815784e-02 --4.224491679979e-02 -4.188327820380e-02 -4.135869616128e-02 -4.067408915282e-02 --3.983298571793e-02 -3.883950753274e-02 -3.769835027310e-02 -3.641476234815e-02 --3.499452159744e-02 -3.344391005198e-02 -3.176968686672e-02 -2.997905953825e-02 --2.807965352779e-02 -2.607948041488e-02 -2.398690471253e-02 -2.181060947877e-02 --1.955956086377e-02 -1.724297173505e-02 -1.487026452621e-02 -1.245103345675e-02 --9.995006272540e-03 -7.512005657275e-03 -5.011910466195e-03 -2.504616932934e-03 --2.017993520125e-15 2.492125077903e-03 4.962040710309e-03 7.400164381977e-03 -9.797085356249e-03 1.214360053189e-02 1.443074931854e-02 1.664984740018e-02 -1.879251926127e-02 2.085072935501e-02 2.281681179972e-02 2.468349849486e-02 -2.644394555529e-02 2.809175796926e-02 2.962101239264e-02 3.102627800003e-02 -3.230263532071e-02 3.344569299603e-02 3.445160240269e-02 3.531707009540e-02 -3.603936803051e-02 3.661634154138e-02 3.704641504493e-02 3.732859546769e-02 -3.746247338849e-02 3.744822190398e-02 3.728659323174e-02 3.697891307455e-02 -3.652707277795e-02 3.593351932149e-02 3.520124319259e-02 3.433376419947e-02 -3.333511528779e-02 3.220982443266e-02 3.096289468529e-02 2.959978245980e-02 -2.812637415265e-02 2.654896119291e-02 2.487421362735e-02 2.310915234940e-02 -2.126112008611e-02 1.933775126123e-02 1.734694085656e-02 1.529681239701e-02 -1.319568518767e-02 1.105204093352e-02 8.874489874274e-03 6.671736568095e-03 -4.452545458808e-03 2.225706361338e-03 2.049406405868e-15 -2.215836266605e-03 --4.413142401646e-03 -6.583369196328e-03 -8.718111198071e-03 -1.080913893498e-02 --1.284843031431e-02 -1.482820107631e-02 -1.674093418907e-02 -1.857940807451e-02 --2.033672356062e-02 -2.200632946071e-02 -2.358204668567e-02 -2.505809080195e-02 --2.642909295378e-02 -2.769011907529e-02 -2.883668732493e-02 -2.986478368168e-02 --3.077087565026e-02 -3.155192402979e-02 -3.220539270811e-02 -3.272925645206e-02 --3.312200667153e-02 -3.338265514341e-02 -3.351073568928e-02 -3.350630380882e-02 --3.336993427882e-02 -3.310271673550e-02 -3.270624926561e-02 -3.218263003950e-02 --3.153444702669e-02 -3.076476584194e-02 -2.987711577661e-02 -2.887547407732e-02 --2.776424854012e-02 -2.654825849487e-02 -2.523271426040e-02 -2.382319515668e-02 --2.232562616553e-02 -2.074625333617e-02 -1.909161803650e-02 -1.736853015519e-02 --1.558404036300e-02 -1.374541154539e-02 -1.186008952090e-02 -9.935673162461e-03 --7.979884040174e-03 -6.000535706114e-03 -4.005502742060e-03 -2.002689691865e-03 --2.074536714462e-15 1.994694922632e-03 3.973586385546e-03 5.928958739437e-03 -7.853219214135e-03 9.738927159240e-03 1.157882257574e-02 1.336585383013e-02 -1.509320444606e-02 1.675431887269e-02 1.834292713311e-02 1.985306826103e-02 -2.127911243902e-02 2.261578175692e-02 2.385816951469e-02 2.500175800002e-02 -2.604243467716e-02 2.697650672987e-02 2.780071390796e-02 2.851223963386e-02 -2.910872033233e-02 2.958825295378e-02 2.994940066851e-02 3.019119671670e-02 -3.031314640595e-02 3.031522725560e-02 3.019788729414e-02 2.996204152340e-02 -2.960906657000e-02 2.914079355183e-02 2.855949919399e-02 2.786789523535e-02 -2.706911617354e-02 2.616670540215e-02 2.516459980041e-02 2.406711284115e-02 -2.287891628835e-02 2.160502056109e-02 2.025075384532e-02 1.882174003968e-02 -1.732387562572e-02 1.576330555675e-02 1.414639826310e-02 1.247971987454e-02 -1.077000776347e-02 9.024143514529e-03 7.249125428436e-03 5.452040668992e-03 -3.640037163405e-03 1.820295366559e-03 1.992292068153e-15 -1.813688123845e-03 --3.613660082507e-03 -5.392886520681e-03 -7.144444916831e-03 -8.861546334083e-03 --1.053756155274e-02 -1.216604648451e-02 -1.374076677168e-02 -1.525572147799e-02 --1.670516578194e-02 -1.808363258714e-02 -1.938595296936e-02 -2.060727538420e-02 --2.174308356481e-02 -2.278921304427e-02 -2.374186624279e-02 -2.459762606586e-02 --2.535346796536e-02 -2.600677042174e-02 -2.655532381195e-02 -2.699733763383e-02 --2.733144606462e-02 -2.755671183741e-02 -2.767262842634e-02 -2.767912053772e-02 --2.757654291097e-02 -2.736567743992e-02 -2.704772863142e-02 -2.662431742473e-02 --2.609747340140e-02 -2.546962542164e-02 -2.474359072908e-02 -2.392256257177e-02 --2.301009639284e-02 -2.201009464959e-02 -2.092679032518e-02 -1.976472920154e-02 --1.852875096731e-02 -1.722396923835e-02 -1.585575057269e-02 -1.442969256548e-02 --1.295160111250e-02 -1.142746693402e-02 -9.863441453412e-03 -8.265812126754e-03 --6.640977322024e-03 -4.995420847469e-03 -3.335686230010e-03 -1.668350845144e-03 --1.923754862896e-15 1.662798928850e-03 3.313522201900e-03 4.945715167390e-03 -6.553017357490e-03 - Type L N - 0 0 12 -1.000000000000e+00 9.992279737113e-01 9.969140403446e-01 9.930646292992e-01 -9.876904326070e-01 9.808063695699e-01 9.724315374314e-01 9.625891482603e-01 -9.513064522713e-01 9.386146478614e-01 9.245487786840e-01 9.091476181311e-01 -8.924535416387e-01 8.745123872751e-01 8.553733051107e-01 8.350885959116e-01 -8.137135397329e-01 7.913062150280e-01 7.679273089187e-01 7.436399193057e-01 -7.185093495242e-01 6.926028962791e-01 6.659896316113e-01 6.387401796734e-01 -6.109264891045e-01 5.826216018117e-01 5.538994189758e-01 5.248344651059e-01 -4.955016509751e-01 4.659760362681e-01 4.363325927743e-01 4.066459689515e-01 -3.769902566815e-01 3.474387610267e-01 3.180637737844e-01 2.889363516172e-01 -2.601260995226e-01 2.317009603786e-01 2.037270112813e-01 1.762682673599e-01 -1.493864937278e-01 1.231410261944e-01 9.758860132910e-02 7.278319643154e-02 -4.877587992474e-02 2.561467264723e-02 3.344420478281e-03 -1.799332131255e-02 --3.836039164525e-02 -5.772211483790e-02 -7.604737918979e-02 -9.330870273281e-02 --1.094822859925e-01 -1.245480516486e-01 -1.384896710346e-01 -1.512945774625e-01 --1.629539664097e-01 -1.734627826524e-01 -1.828196944759e-01 -1.910270551436e-01 --1.980908518464e-01 -2.040206424053e-01 -2.088294800399e-01 -2.125338265593e-01 --2.151534543731e-01 -2.167113377586e-01 -2.172335338584e-01 -2.167490539174e-01 --2.152897253013e-01 -2.128900448716e-01 -2.095870243170e-01 -2.054200280721e-01 --2.004306044738e-01 -1.946623108294e-01 -1.881605330885e-01 -1.809723008253e-01 --1.731460982521e-01 -1.647316719950e-01 -1.557798363680e-01 -1.463422768886e-01 --1.364713527782e-01 -1.262198991891e-01 -1.156410298962e-01 -1.047879411840e-01 --9.371371765039e-02 -8.247114063505e-02 -7.111249996669e-02 -5.968940970393e-02 --4.825262852548e-02 -3.685188540241e-02 -2.553571115993e-02 -1.435127650936e-02 --3.344237101584e-03 7.441413878032e-03 1.796348508609e-02 2.818171791662e-02 -3.805790849943e-02 4.755602042277e-02 5.664228784054e-02 6.528530866430e-02 -7.345612758100e-02 8.112830867898e-02 8.827799750669e-02 9.488397243149e-02 -1.009276852081e-01 1.063932907094e-01 1.112676658148e-01 1.155404174940e-01 -1.192038801654e-01 1.222531024501e-01 1.246858234833e-01 1.265024389837e-01 -1.277059573206e-01 1.283019458554e-01 1.282984678711e-01 1.277060104357e-01 -1.265374035805e-01 1.248077312039e-01 1.225342341415e-01 1.197362058686e-01 -1.164348813293e-01 1.126533194058e-01 1.084162795664e-01 1.037500932444e-01 -9.868253051993e-02 9.324266268972e-02 8.746072131829e-02 8.136795437682e-02 -7.499648007903e-02 6.837913902881e-02 6.154934529460e-02 5.454093702501e-02 -4.738802721575e-02 4.012485523222e-02 3.278563968320e-02 2.540443323030e-02 -1.801497990466e-02 1.065057548665e-02 3.343931487162e-03 -3.872956750933e-03 --1.096893733391e-02 -1.791382400724e-02 -2.467851280607e-02 -3.123509274441e-02 --3.755695014967e-02 -4.361886627894e-02 -4.939710788436e-02 -5.486951042691e-02 --6.001555367122e-02 -6.481642942771e-02 -6.925510124296e-02 -7.331635587451e-02 --7.698684642162e-02 -8.025512701929e-02 -8.311167903885e-02 -8.554892877402e-02 --8.756125662710e-02 -8.914499784507e-02 -9.029843489015e-02 -9.102178156370e-02 --9.131715903518e-02 -9.118856396098e-02 -9.064182890880e-02 -8.968457533387e-02 --8.832615938202e-02 -8.657761082242e-02 -8.445156543886e-02 -8.196219123287e-02 --7.912510881488e-02 -7.595730638088e-02 -7.247704969087e-02 -6.870378748328e-02 --6.465805277436e-02 -6.036136050535e-02 -5.583610201132e-02 -5.110543679481e-02 --4.619318209463e-02 -4.112370074496e-02 -3.592178782306e-02 -3.061255658420e-02 --2.522132418147e-02 -1.977349766434e-02 -1.429446074439e-02 -8.809461809129e-03 --3.343503655124e-03 2.078764599710e-03 7.433152978168e-03 1.269603304885e-02 -1.784443685979e-02 2.285615200458e-02 2.770981244509e-02 3.238498473610e-02 -3.686224932032e-02 4.112327658597e-02 4.515089740462e-02 4.892916789272e-02 -5.244342816787e-02 5.568035489828e-02 5.862800747255e-02 6.127586764597e-02 -6.361487254874e-02 6.563744097142e-02 6.733749287251e-02 6.871046208299e-02 -6.975330221233e-02 7.046448578981e-02 7.084399670419e-02 7.089331603328e-02 -7.061540138289e-02 7.001465988189e-02 6.909691500653e-02 6.786936743256e-02 -6.634055013803e-02 6.452027800313e-02 6.241959217497e-02 6.005069948638e-02 -5.742690723673e-02 5.456255366062e-02 5.147293442663e-02 4.817422552287e-02 -4.468340289893e-02 4.101815924540e-02 3.719681830130e-02 3.323824708777e-02 -2.916176647231e-02 2.498706047175e-02 2.073408470507e-02 1.642297440696e-02 -1.207395241254e-02 7.707237520012e-03 3.342953633618e-03 -9.989599174016e-04 --5.298836496292e-03 -9.537368334982e-03 -1.369569040266e-02 -1.775546161334e-02 --2.169894303337e-02 -2.550907276560e-02 -2.916953720406e-02 -3.266483837116e-02 --3.598035706892e-02 -3.910241159618e-02 -4.201831180512e-02 -4.471640829272e-02 --4.718613654569e-02 -4.941805588103e-02 -5.140388304871e-02 -5.313652038720e-02 --5.461007844779e-02 -5.581989302850e-02 -5.676253658367e-02 -5.743582400033e-02 --5.783881275764e-02 -5.797179751029e-02 -5.783629916124e-02 -5.743504851314e-02 --5.677196461118e-02 -5.585212791283e-02 -5.468174844196e-02 -5.326812910599e-02 --5.161962437494e-02 -4.974559454044e-02 -4.765635579082e-02 -4.536312635556e-02 --4.287796898784e-02 -4.021373006854e-02 -3.738397562802e-02 -3.440292459373e-02 --3.128537958192e-02 -2.804665556062e-02 -2.470250671790e-02 -2.126905187582e-02 --1.776269879390e-02 -1.420006770930e-02 -1.059791446129e-02 -6.973053547736e-03 --3.342281458833e-03 2.776993699898e-04 3.870355649084e-03 7.419397039236e-03 -1.090884834749e-02 1.432311980103e-02 1.764707509662e-02 2.086609693505e-02 -2.396614976315e-02 2.693383946020e-02 2.975646972097e-02 3.242209490396e-02 -3.491956913082e-02 3.723859144079e-02 3.936974682337e-02 4.130454297152e-02 -4.303544261821e-02 4.455589133963e-02 4.586034072943e-02 4.694426686967e-02 -4.780418404585e-02 4.843765367486e-02 4.884328843635e-02 4.902075161979e-02 -4.897075172058e-02 4.869503233990e-02 4.819635746364e-02 4.747849221589e-02 -4.654617920246e-02 4.540511057875e-02 4.406189599482e-02 4.252402658784e-02 -4.079983520931e-02 3.889845308950e-02 3.682976315715e-02 3.460435024541e-02 -3.223344842822e-02 2.972888574237e-02 2.710302656088e-02 2.436871189230e-02 -2.153919788813e-02 1.862809284710e-02 1.564929300992e-02 1.261691744199e-02 -9.545242303754e-03 6.448634809500e-03 3.341487174992e-03 2.381508525979e-04 --2.847128650419e-03 -5.900276079153e-03 -8.907449578187e-03 -1.185510239980e-02 --1.473004290254e-02 -1.751949257884e-02 -2.021114186037e-02 -2.279320346191e-02 --2.525446303625e-02 -2.758432692673e-02 -2.977286681774e-02 -3.181086109920e-02 --3.368983277634e-02 -3.540208377320e-02 -3.694072549481e-02 -3.829970553127e-02 --3.947383040449e-02 -4.045878427708e-02 -4.125114356156e-02 -4.184838738664e-02 --4.224890389674e-02 -4.245199237930e-02 -4.245786123398e-02 -4.226762181585e-02 --4.188327820378e-02 -4.130771296294e-02 -4.054466898827e-02 -3.959872753295e-02 --3.847528254265e-02 -3.718051143228e-02 -3.572134245744e-02 -3.410541884732e-02 --3.234105987946e-02 -3.043721908982e-02 -2.840343982337e-02 -2.624980834151e-02 --2.398690471239e-02 -2.162575171918e-02 -1.917776202895e-02 -1.665468387151e-02 --1.406854548292e-02 -1.143159857272e-02 -8.756261076850e-03 -6.055059460365e-03 --3.340570834353e-03 -6.253651512786e-04 2.078052259000e-03 4.757297553046e-03 -7.400164382138e-03 9.994678794838e-03 1.252915278994e-02 1.499223628329e-02 -1.737296726033e-02 1.966081989565e-02 2.184575043113e-02 2.391824061559e-02 -2.586933852062e-02 2.769069656057e-02 2.937460655777e-02 3.091403170865e-02 -3.230263532080e-02 3.353480620680e-02 3.460568063597e-02 3.551116076150e-02 -3.624792945694e-02 3.681346151232e-02 3.720603115740e-02 3.742471589597e-02 -3.746939665215e-02 3.734075424653e-02 3.704026223617e-02 3.657017616935e-02 -3.593351932144e-02 3.513406499450e-02 3.417631547791e-02 3.306547778249e-02 -3.180743627425e-02 3.040872234786e-02 2.887648129230e-02 2.721843651339e-02 -2.544285128919e-02 2.355848824446e-02 2.157456673995e-02 1.950071838086e-02 -1.734694085641e-02 1.512355032887e-02 1.284113259628e-02 1.051049325735e-02 -8.142607110544e-03 5.748567021884e-03 3.339532497202e-03 9.266781948153e-04 --1.478857386156e-03 -3.866022808557e-03 -6.223903960706e-03 -8.541773454272e-03 --1.080913893514e-02 -1.301579009183e-02 -1.515184415306e-02 -1.720778967362e-02 --1.917452841683e-02 -2.104341515099e-02 -2.280629518789e-02 -2.445553950233e-02 --2.598407728330e-02 -2.738542578019e-02 -2.865371731977e-02 -2.978372338380e-02 --3.077087565033e-02 -3.161128391669e-02 -3.230175083613e-02 -3.283978341545e-02 --3.322360123548e-02 -3.345214137170e-02 -3.352506000737e-02 -3.344273074650e-02 --3.320623964913e-02 -3.281737702633e-02 -3.227862604665e-02 -3.159314822042e-02 --3.076476584187e-02 -2.979794148299e-02 -2.869775464559e-02 -2.746987569105e-02 --2.612053717863e-02 -2.465650275498e-02 -2.308503374750e-02 -2.141385362451e-02 --1.965111049394e-02 -1.780533782047e-02 -1.588541354853e-02 -1.390051782496e-02 --1.186008952075e-02 -9.773781755706e-03 -7.651416633988e-03 -5.502939400705e-03 --3.338372231846e-03 -1.167767870459e-03 9.988366781956e-04 3.151466180926e-03 -5.280252730885e-03 7.375480615454e-03 9.427630295369e-03 1.142742129759e-02 -1.336585383027e-02 1.523424893467e-02 1.702428699655e-02 1.872804444755e-02 -2.033802849617e-02 2.184720973769e-02 2.324905250247e-02 2.453754281321e-02 -2.570721383304e-02 2.675316869833e-02 2.767110064257e-02 2.845731033014e-02 -2.910872033238e-02 2.962288669104e-02 2.999800752846e-02 3.023292867675e-02 -3.032714631269e-02 3.028080659816e-02 3.009470234012e-02 2.977026669742e-02 -2.930956397516e-02 2.871527756066e-02 2.799069506760e-02 2.713969076785e-02 -2.616670540206e-02 2.507672347222e-02 2.387524813018e-02 2.256827378671e-02 -2.116225657575e-02 1.966408281765e-02 1.808103563374e-02 1.642075987274e-02 -1.469122551603e-02 1.290068973588e-02 1.105765778542e-02 9.170842904406e-03 -7.249125428275e-03 5.301511291054e-03 3.337090114614e-03 1.364993078026e-03 --6.056492390625e-04 -2.565748845676e-03 -4.506301969589e-03 -6.418430138767e-03 --8.293420528000e-03 -1.012276538856e-02 -1.189820038371e-02 -1.361174165838e-02 --1.525572147813e-02 -1.682282227921e-02 -1.830610897985e-02 -1.969905941115e-02 --2.099559273523e-02 -2.219009572795e-02 -2.327744681372e-02 -2.425303775080e-02 --2.511279287634e-02 -2.585318583225e-02 -2.647125370453e-02 -2.696460852101e-02 --2.733144606464e-02 -2.757055197189e-02 -2.768130509848e-02 -2.766367814715e-02 --2.751823556482e-02 -2.724612872880e-02 -2.684908845437e-02 -2.632941486781e-02 --2.568996470120e-02 -2.493413607671e-02 -2.406585085953e-02 -2.308953466915e-02 --2.201009464949e-02 -2.083289510797e-02 -1.956373114306e-02 -1.820880038879e-02 --1.677467301263e-02 -1.526826011074e-02 -1.369678065162e-02 -1.206772712484e-02 --1.038883005751e-02 -8.668021565174e-03 -6.913398107991e-03 -5.133182626063e-03 --3.335686229846e-03 -1.529269623132e-03 2.776955633555e-04 2.076865349952e-03 -3.859961720838e-03 5.618810496682e-03 7.345378594832e-03 9.031810508161e-03 -1.067046383786e-02 1.225394372036e-02 1.377513599426e-02 1.522723895930e-02 -1.660379358668e-02 1.789871204721e-02 1.910630443240e-02 2.022130355193e-02 -2.123888770046e-02 2.215470129622e-02 2.296487330399e-02 2.366603336570e-02 -2.425532557226e-02 2.473041982179e-02 2.508952072019e-02 2.533137399184e-02 -2.545527037936e-02 2.546104702338e-02 2.534908632429e-02 2.512031230025e-02 -2.477618446632e-02 2.431868927157e-02 2.375032914176e-02 2.307410918600e-02 -2.229352163644e-02 2.141252810021e-02 2.043553971245e-02 1.936739528878e-02 -1.821333758435e-02 1.697898777482e-02 1.567031828265e-02 1.429362407897e-02 -1.285549259812e-02 1.136277240765e-02 9.822540781984e-03 8.242070332365e-03 -6.628794849553e-03 4.990274518931e-03 3.334160669886e-03 1.668160223061e-03 --1.634143446808e-13 -1.662608941446e-03 -3.312006778715e-03 -4.940620046424e-03 --6.540996242587e-03 - Type L N - 0 1 0 -0.000000000000e+00 2.496324586943e-03 4.992565169903e-03 7.488637748281e-03 -9.984458328155e-03 1.247994292576e-02 1.497500757074e-02 1.746956830960e-02 -1.996354120901e-02 2.245684235920e-02 2.494938787730e-02 2.744109391072e-02 -2.993187664049e-02 3.242165228464e-02 3.491033710152e-02 3.739784739318e-02 -3.988409950874e-02 4.236900984769e-02 4.485249486326e-02 4.733447106581e-02 -4.981485502609e-02 5.229356337864e-02 5.477051282511e-02 5.724562013760e-02 -5.971880216198e-02 6.218997582121e-02 6.465905811871e-02 6.712596614162e-02 -6.959061706418e-02 7.205292815098e-02 7.451281676033e-02 7.697020034751e-02 -7.942499646812e-02 8.187712278134e-02 8.432649705328e-02 8.677303716016e-02 -8.921666109173e-02 9.165728695442e-02 9.409483297472e-02 9.652921750237e-02 -9.896035901367e-02 1.013881761147e-01 1.038125875446e-01 1.062335121789e-01 -1.086508690324e-01 1.110645772630e-01 1.134745561744e-01 1.158807252196e-01 -1.182830040039e-01 1.206813122884e-01 1.230755699930e-01 1.254656971997e-01 -1.278516141554e-01 1.302332412759e-01 1.326104991482e-01 1.349833085341e-01 -1.373515903735e-01 1.397152657871e-01 1.420742560800e-01 1.444284827445e-01 -1.467778674634e-01 1.491223321129e-01 1.514617987661e-01 1.537961896959e-01 -1.561254273778e-01 1.584494344935e-01 1.607681339337e-01 1.630814488010e-01 -1.653893024133e-01 1.676916183067e-01 1.699883202385e-01 1.722793321902e-01 -1.745645783707e-01 1.768439832190e-01 1.791174714076e-01 1.813849678450e-01 -1.836463976791e-01 1.859016863001e-01 1.881507593431e-01 1.903935426916e-01 -1.926299624799e-01 1.948599450964e-01 1.970834171864e-01 1.993003056549e-01 -2.015105376695e-01 2.037140406635e-01 2.059107423387e-01 2.081005706678e-01 -2.102834538980e-01 2.124593205533e-01 2.146280994374e-01 2.167897196366e-01 -2.189441105226e-01 2.210912017554e-01 2.232309232857e-01 2.253632053578e-01 -2.274879785128e-01 2.296051735906e-01 2.317147217331e-01 2.338165543869e-01 -2.359106033056e-01 2.379968005530e-01 2.400750785054e-01 2.421453698545e-01 -2.442076076096e-01 2.462617251009e-01 2.483076559815e-01 2.503453342304e-01 -2.523746941547e-01 2.543956703927e-01 2.564081979159e-01 2.584122120318e-01 -2.604076483865e-01 2.623944429672e-01 2.643725321044e-01 2.663418524746e-01 -2.683023411031e-01 2.702539353656e-01 2.721965729916e-01 2.741301920661e-01 -2.760547310324e-01 2.779701286942e-01 2.798763242183e-01 2.817732571367e-01 -2.836608673490e-01 2.855390951249e-01 2.874078811063e-01 2.892671663095e-01 -2.911168921278e-01 2.929570003335e-01 2.947874330805e-01 2.966081329058e-01 -2.984190427327e-01 3.002201058720e-01 3.020112660250e-01 3.037924672851e-01 -3.055636541404e-01 3.073247714752e-01 3.090757645729e-01 3.108165791173e-01 -3.125471611955e-01 3.142674572991e-01 3.159774143269e-01 3.176769795865e-01 -3.193661007968e-01 3.210447260893e-01 3.227128040107e-01 3.243702835244e-01 -3.260171140128e-01 3.276532452789e-01 3.292786275485e-01 3.308932114717e-01 -3.324969481252e-01 3.340897890136e-01 3.356716860720e-01 3.372425916669e-01 -3.388024585987e-01 3.403512401031e-01 3.418888898529e-01 3.434153619598e-01 -3.449306109763e-01 3.464345918968e-01 3.479272601600e-01 3.494085716499e-01 -3.508784826980e-01 3.523369500845e-01 3.537839310400e-01 3.552193832474e-01 -3.566432648428e-01 3.580555344177e-01 3.594561510200e-01 3.608450741561e-01 -3.622222637916e-01 3.635876803534e-01 3.649412847309e-01 3.662830382773e-01 -3.676129028112e-01 3.689308406180e-01 3.702368144509e-01 3.715307875328e-01 -3.728127235570e-01 3.740825866892e-01 3.753403415680e-01 3.765859533068e-01 -3.778193874947e-01 3.790406101978e-01 3.802495879603e-01 3.814462878060e-01 -3.826306772390e-01 3.838027242452e-01 3.849623972932e-01 3.861096653354e-01 -3.872444978093e-01 3.883668646384e-01 3.894767362329e-01 3.905740834913e-01 -3.916588778011e-01 3.927310910397e-01 3.937906955755e-01 3.948376642687e-01 -3.958719704721e-01 3.968935880325e-01 3.979024912908e-01 3.988986550836e-01 -3.998820547434e-01 4.008526660997e-01 4.018104654798e-01 4.027554297095e-01 -4.036875361137e-01 4.046067625174e-01 4.055130872460e-01 4.064064891265e-01 -4.072869474875e-01 4.081544421604e-01 4.090089534797e-01 4.098504622838e-01 -4.106789499151e-01 4.114943982211e-01 4.122967895547e-01 4.130861067746e-01 -4.138623332458e-01 4.146254528402e-01 4.153754499369e-01 4.161123094227e-01 -4.168360166924e-01 4.175465576492e-01 4.182439187051e-01 4.189280867811e-01 -4.195990493076e-01 4.202567942248e-01 4.209013099827e-01 4.215325855415e-01 -4.221506103717e-01 4.227553744544e-01 4.233468682816e-01 4.239250828559e-01 -4.244900096913e-01 4.250416408126e-01 4.255799687559e-01 4.261049865687e-01 -4.266166878097e-01 4.271150665490e-01 4.276001173681e-01 4.280718353596e-01 -4.285302161276e-01 4.289752557874e-01 4.294069509652e-01 4.298252987985e-01 -4.302302969354e-01 4.306219435350e-01 4.310002372667e-01 4.313651773105e-01 -4.317167633563e-01 4.320549956041e-01 4.323798747633e-01 4.326914020530e-01 -4.329895792010e-01 4.332744084441e-01 4.335458925272e-01 4.338040347035e-01 -4.340488387337e-01 4.342803088856e-01 4.344984499339e-01 4.347032671597e-01 -4.348947663497e-01 4.350729537962e-01 4.352378362962e-01 4.353894211511e-01 -4.355277161658e-01 4.356527296486e-01 4.357644704103e-01 4.358629477635e-01 -4.359481715222e-01 4.360201520010e-01 4.360789000144e-01 4.361244268761e-01 -4.361567443983e-01 4.361758648910e-01 4.361818011611e-01 4.361745665118e-01 -4.361541747414e-01 4.361206401430e-01 4.360739775033e-01 4.360142021017e-01 -4.359413297098e-01 4.358553765897e-01 4.357563594941e-01 4.356442956644e-01 -4.355192028303e-01 4.353810992087e-01 4.352300035024e-01 4.350659348994e-01 -4.348889130718e-01 4.346989581745e-01 4.344960908441e-01 4.342803321983e-01 -4.340517038341e-01 4.338102278270e-01 4.335559267297e-01 4.332888235711e-01 -4.330089418547e-01 4.327163055577e-01 4.324109391297e-01 4.320928674913e-01 -4.317621160329e-01 4.314187106131e-01 4.310626775581e-01 4.306940436593e-01 -4.303128361730e-01 4.299190828181e-01 4.295128117753e-01 4.290940516853e-01 -4.286628316476e-01 4.282191812190e-01 4.277631304118e-01 4.272947096928e-01 -4.268139499814e-01 4.263208826481e-01 4.258155395130e-01 4.252979528444e-01 -4.247681553570e-01 4.242261802101e-01 4.236720610063e-01 4.231058317898e-01 -4.225275270446e-01 4.219371816928e-01 4.213348310930e-01 4.207205110384e-01 -4.200942577555e-01 4.194561079017e-01 4.188060985641e-01 4.181442672572e-01 -4.174706519215e-01 4.167852909214e-01 4.160882230437e-01 4.153794874951e-01 -4.146591239012e-01 4.139271723036e-01 4.131836731590e-01 4.124286673363e-01 -4.116621961154e-01 4.108843011849e-01 4.100950246402e-01 4.092944089813e-01 -4.084824971113e-01 4.076593323337e-01 4.068249583507e-01 4.059794192614e-01 -4.051227595591e-01 4.042550241297e-01 4.033762582496e-01 4.024865075830e-01 -4.015858181805e-01 4.006742364766e-01 3.997518092872e-01 3.988185838083e-01 -3.978746076127e-01 3.969199286486e-01 3.959545952372e-01 3.949786560700e-01 -3.939921602073e-01 3.929951570751e-01 3.919876964636e-01 3.909698285243e-01 -3.899416037679e-01 3.889030730620e-01 3.878542876287e-01 3.867952990423e-01 -3.857261592268e-01 3.846469204536e-01 3.835576353392e-01 3.824583568425e-01 -3.813491382626e-01 3.802300332363e-01 3.791010957357e-01 3.779623800657e-01 -3.768139408612e-01 3.756558330852e-01 3.744881120258e-01 3.733108332941e-01 -3.721240528212e-01 3.709278268560e-01 3.697222119625e-01 3.685072650172e-01 -3.672830432068e-01 3.660496040250e-01 3.648070052707e-01 3.635553050448e-01 -3.622945617476e-01 3.610248340765e-01 3.597461810231e-01 3.584586618706e-01 -3.571623361910e-01 3.558572638427e-01 3.545435049675e-01 3.532211199882e-01 -3.518901696055e-01 3.505507147957e-01 3.492028168076e-01 3.478465371600e-01 -3.464819376389e-01 3.451090802946e-01 3.437280274390e-01 3.423388416430e-01 -3.409415857334e-01 3.395363227901e-01 3.381231161437e-01 3.367020293723e-01 -3.352731262987e-01 3.338364709875e-01 3.323921277428e-01 3.309401611045e-01 -3.294806358460e-01 3.280136169713e-01 3.265391697118e-01 3.250573595237e-01 -3.235682520850e-01 3.220719132927e-01 3.205684092596e-01 3.190578063117e-01 -3.175401709851e-01 3.160155700232e-01 3.144840703734e-01 3.129457391847e-01 -3.114006438044e-01 3.098488517749e-01 3.082904308315e-01 3.067254488986e-01 -3.051539740871e-01 3.035760746915e-01 3.019918191867e-01 3.004012762251e-01 -2.988045146334e-01 2.972016034102e-01 2.955926117220e-01 2.939776089011e-01 -2.923566644421e-01 2.907298479988e-01 2.890972293815e-01 2.874588785536e-01 -2.858148656290e-01 2.841652608686e-01 2.825101346773e-01 2.808495576012e-01 -2.791836003245e-01 2.775123336661e-01 2.758358285769e-01 2.741541561364e-01 -2.724673875501e-01 2.707755941458e-01 2.690788473709e-01 2.673772187894e-01 -2.656707800785e-01 2.639596030256e-01 2.622437595254e-01 2.605233215765e-01 -2.587983612785e-01 2.570689508288e-01 2.553351625196e-01 2.535970687347e-01 -2.518547419463e-01 2.501082547122e-01 2.483576796723e-01 2.466030895457e-01 -2.448445571275e-01 2.430821552859e-01 2.413159569588e-01 2.395460351506e-01 -2.377724629296e-01 2.359953134243e-01 2.342146598205e-01 2.324305753585e-01 -2.306431333292e-01 2.288524070719e-01 2.270584699703e-01 2.252613954502e-01 -2.234612569758e-01 2.216581280465e-01 2.198520821945e-01 2.180431929810e-01 -2.162315339931e-01 2.144171788412e-01 2.126002011553e-01 2.107806745823e-01 -2.089586727827e-01 2.071342694274e-01 2.053075381948e-01 2.034785527677e-01 -2.016473868297e-01 1.998141140628e-01 1.979788081440e-01 1.961415427420e-01 -1.943023915143e-01 1.924614281042e-01 1.906187261374e-01 1.887743592193e-01 -1.869284009315e-01 1.850809248291e-01 1.832320044374e-01 1.813817132488e-01 -1.795301247198e-01 1.776773122681e-01 1.758233492692e-01 1.739683090534e-01 -1.721122649032e-01 1.702552900495e-01 1.683974576692e-01 1.665388408819e-01 -1.646795127467e-01 1.628195462594e-01 1.609590143495e-01 1.590979898770e-01 -1.572365456294e-01 1.553747543189e-01 1.535126885791e-01 1.516504209621e-01 -1.497880239359e-01 1.479255698805e-01 1.460631310860e-01 1.442007797486e-01 -1.423385879686e-01 1.404766277466e-01 1.386149709811e-01 1.367536894653e-01 -1.348928548840e-01 1.330325388113e-01 1.311728127067e-01 1.293137479132e-01 -1.274554156536e-01 1.255978870280e-01 1.237412330106e-01 1.218855244474e-01 -1.200308320525e-01 1.181772264058e-01 1.163247779499e-01 1.144735569874e-01 -1.126236336779e-01 1.107750780352e-01 1.089279599244e-01 1.070823490592e-01 -1.052383149991e-01 1.033959271463e-01 1.015552547434e-01 9.971636687003e-02 -9.787933244060e-02 9.604422020116e-02 9.421109872679e-02 9.238003641883e-02 -9.055110150215e-02 8.872436202235e-02 8.689988584314e-02 8.507774064353e-02 -8.325799391520e-02 8.144071295975e-02 7.962596488607e-02 7.781381660763e-02 -7.600433483984e-02 7.419758609738e-02 7.239363669160e-02 7.059255272786e-02 -6.879440010292e-02 6.699924450232e-02 6.520715139783e-02 6.341818604483e-02 -6.163241347976e-02 5.984989851753e-02 5.807070574900e-02 5.629489953847e-02 -5.452254402109e-02 5.275370310039e-02 5.098844044580e-02 4.922681949013e-02 -4.746890342708e-02 4.571475520885e-02 4.396443754362e-02 4.221801289314e-02 -4.047554347031e-02 3.873709123678e-02 3.700271790054e-02 3.527248491351e-02 -3.354645346923e-02 3.182468450046e-02 3.010723867682e-02 2.839417640254e-02 -2.668555781403e-02 2.498144277768e-02 2.328189088750e-02 2.158696146289e-02 -1.989671354636e-02 1.821120590129e-02 1.653049700966e-02 1.485464506992e-02 -1.318370799468e-02 1.151774340860e-02 9.856808646176e-03 8.200960749600e-03 -6.550256466598e-03 4.904752248310e-03 3.264504247171e-03 1.629568314813e-03 --2.450691677841e-14 -1.624145453560e-03 -3.242813109028e-03 -4.855948338718e-03 --6.463496825996e-03 - Type L N - 0 1 1 -0.000000000000e+00 4.291735428448e-03 8.583043981315e-03 1.287349883354e-02 -1.716267326116e-02 2.145014069182e-02 2.573547475531e-02 3.001824933398e-02 -3.429803861327e-02 3.857441713205e-02 4.284695983304e-02 4.711524211309e-02 -5.137883987341e-02 5.563732956983e-02 5.989028826285e-02 6.413729366771e-02 -6.837792420433e-02 7.261175904720e-02 7.683837817511e-02 8.105736242085e-02 -8.526829352072e-02 8.947075416401e-02 9.366432804228e-02 9.784859989857e-02 -1.020231555764e-01 1.061875820688e-01 1.103414675669e-01 1.144844015086e-01 -1.186159746272e-01 1.227357789992e-01 1.268434080930e-01 1.309384568164e-01 -1.350205215646e-01 1.390892002673e-01 1.431440924368e-01 1.471847992144e-01 -1.512109234179e-01 1.552220695878e-01 1.592178440342e-01 1.631978548831e-01 -1.671617121221e-01 1.711090276463e-01 1.750394153042e-01 1.789524909425e-01 -1.828478724515e-01 1.867251798097e-01 1.905840351284e-01 1.944240626958e-01 -1.982448890213e-01 2.020461428785e-01 2.058274553496e-01 2.095884598674e-01 -2.133287922588e-01 2.170480907870e-01 2.207459961937e-01 2.244221517411e-01 -2.280762032530e-01 2.317077991564e-01 2.353165905224e-01 2.389022311061e-01 -2.424643773877e-01 2.460026886113e-01 2.495168268254e-01 2.530064569210e-01 -2.564712466711e-01 2.599108667689e-01 2.633249908654e-01 2.667132956074e-01 -2.700754606748e-01 2.734111688171e-01 2.767201058901e-01 2.800019608919e-01 -2.832564259984e-01 2.864831965988e-01 2.896819713302e-01 2.928524521123e-01 -2.959943441808e-01 2.991073561218e-01 3.021911999042e-01 3.052455909129e-01 -3.082702479806e-01 3.112648934202e-01 3.142292530557e-01 3.171630562533e-01 -3.200660359520e-01 3.229379286933e-01 3.257784746512e-01 3.285874176609e-01 -3.313645052477e-01 3.341094886548e-01 3.368221228716e-01 3.395021666601e-01 -3.421493825825e-01 3.447635370265e-01 3.473444002319e-01 3.498917463154e-01 -3.524053532954e-01 3.548850031162e-01 3.573304816720e-01 3.597415788301e-01 -3.621180884535e-01 3.644598084232e-01 3.667665406600e-01 3.690380911457e-01 -3.712742699437e-01 3.734748912194e-01 3.756397732596e-01 3.777687384918e-01 -3.798616135028e-01 3.819182290567e-01 3.839384201126e-01 3.859220258413e-01 -3.878688896422e-01 3.897788591589e-01 3.916517862950e-01 3.934875272284e-01 -3.952859424260e-01 3.970468966577e-01 3.987702590090e-01 4.004559028942e-01 -4.021037060685e-01 4.037135506392e-01 4.052853230772e-01 4.068189142273e-01 -4.083142193180e-01 4.097711379712e-01 4.111895742108e-01 4.125694364708e-01 -4.139106376034e-01 4.152130948861e-01 4.164767300279e-01 4.177014691759e-01 -4.188872429201e-01 4.200339862992e-01 4.211416388040e-01 4.222101443820e-01 -4.232394514402e-01 4.242295128478e-01 4.251802859385e-01 4.260917325119e-01 -4.269638188346e-01 4.277965156404e-01 4.285897981307e-01 4.293436459731e-01 -4.300580433007e-01 4.307329787101e-01 4.313684452590e-01 4.319644404634e-01 -4.325209662940e-01 4.330380291721e-01 4.335156399653e-01 4.339538139820e-01 -4.343525709659e-01 4.347119350899e-01 4.350319349487e-01 4.353126035522e-01 -4.355539783170e-01 4.357561010584e-01 4.359190179809e-01 4.360427796690e-01 -4.361274410772e-01 4.361730615190e-01 4.361797046561e-01 4.361474384862e-01 -4.360763353314e-01 4.359664718249e-01 4.358179288979e-01 4.356307917656e-01 -4.354051499131e-01 4.351410970802e-01 4.348387312462e-01 4.344981546136e-01 -4.341194735922e-01 4.337027987817e-01 4.332482449540e-01 4.327559310359e-01 -4.322259800898e-01 4.316585192952e-01 4.310536799291e-01 4.304115973455e-01 -4.297324109555e-01 4.290162642058e-01 4.282633045577e-01 4.274736834644e-01 -4.266475563490e-01 4.257850825814e-01 4.248864254548e-01 4.239517521619e-01 -4.229812337704e-01 4.219750451979e-01 4.209333651871e-01 4.198563762794e-01 -4.187442647892e-01 4.175972207766e-01 4.164154380210e-01 4.151991139927e-01 -4.139484498252e-01 4.126636502869e-01 4.113449237518e-01 4.099924821705e-01 -4.086065410402e-01 4.071873193743e-01 4.057350396724e-01 4.042499278886e-01 -4.027322134004e-01 4.011821289769e-01 3.995999107463e-01 3.979857981635e-01 -3.963400339769e-01 3.946628641949e-01 3.929545380524e-01 3.912153079764e-01 -3.894454295514e-01 3.876451614846e-01 3.858147655706e-01 3.839545066556e-01 -3.820646526015e-01 3.801454742498e-01 3.781972453845e-01 3.762202426951e-01 -3.742147457397e-01 3.721810369068e-01 3.701194013774e-01 3.680301270870e-01 -3.659135046864e-01 3.637698275033e-01 3.615993915026e-01 3.594024952472e-01 -3.571794398579e-01 3.549305289735e-01 3.526560687102e-01 3.503563676209e-01 -3.480317366546e-01 3.456824891148e-01 3.433089406181e-01 3.409114090526e-01 -3.384902145361e-01 3.360456793733e-01 3.335781280141e-01 3.310878870103e-01 -3.285752849731e-01 3.260406525299e-01 3.234843222808e-01 3.209066287553e-01 -3.183079083684e-01 3.156884993770e-01 3.130487418352e-01 3.103889775505e-01 -3.077095500393e-01 3.050108044820e-01 3.022930876783e-01 2.995567480026e-01 -2.968021353580e-01 2.940296011322e-01 2.912394981512e-01 2.884321806341e-01 -2.856080041475e-01 2.827673255595e-01 2.799105029940e-01 2.770378957849e-01 -2.741498644292e-01 2.712467705418e-01 2.683289768085e-01 2.653968469399e-01 -2.624507456248e-01 2.594910384838e-01 2.565180920228e-01 2.535322735859e-01 -2.505339513094e-01 2.475234940741e-01 2.445012714596e-01 2.414676536964e-01 -2.384230116199e-01 2.353677166230e-01 2.323021406092e-01 2.292266559462e-01 -2.261416354184e-01 2.230474521800e-01 2.199444797088e-01 2.168330917584e-01 -2.137136623119e-01 2.105865655350e-01 2.074521757289e-01 2.043108672839e-01 -2.011630146325e-01 1.980089922025e-01 1.948491743708e-01 1.916839354168e-01 -1.885136494756e-01 1.853386904919e-01 1.821594321733e-01 1.789762479447e-01 -1.757895109016e-01 1.725995937643e-01 1.694068688318e-01 1.662117079363e-01 -1.630144823971e-01 1.598155629754e-01 1.566153198285e-01 1.534141224648e-01 -1.502123396984e-01 1.470103396041e-01 1.438084894728e-01 1.406071557664e-01 -1.374067040734e-01 1.342074990649e-01 1.310099044496e-01 1.278142829305e-01 -1.246209961609e-01 1.214304047005e-01 1.182428679721e-01 1.150587442188e-01 -1.118783904600e-01 1.087021624498e-01 1.055304146333e-01 1.023635001051e-01 -9.920177056660e-02 9.604557628443e-02 9.289526604868e-02 8.975118713151e-02 -8.661368524602e-02 8.348310450536e-02 8.035978738211e-02 7.724407466788e-02 -7.413630543332e-02 7.103681698821e-02 6.794594484201e-02 6.486402266461e-02 -6.179138224739e-02 5.872835346455e-02 5.567526423485e-02 5.263244048348e-02 -4.960020610444e-02 4.657888292306e-02 4.356879065899e-02 4.057024688941e-02 -3.758356701260e-02 3.460906421190e-02 3.164704941992e-02 2.869783128320e-02 -2.576171612706e-02 2.283900792103e-02 1.993000824438e-02 1.703501625226e-02 -1.415432864198e-02 1.128823961984e-02 8.437040868243e-03 5.601021513172e-03 -2.780468092113e-03 -2.433547768917e-05 -2.813107930559e-03 -5.585570683340e-03 --8.341447865940e-03 -1.108046635148e-02 -1.380235578603e-02 -1.650684861797e-02 --1.919368012687e-02 -2.186258845205e-02 -2.451331462065e-02 -2.714560257530e-02 --2.975919920139e-02 -3.235385435387e-02 -3.492932088364e-02 -3.748535466355e-02 --4.002171461387e-02 -4.253816272741e-02 -4.503446409415e-02 -4.751038692542e-02 --4.996570257771e-02 -5.240018557588e-02 -5.481361363611e-02 -5.720576768820e-02 --5.957643189756e-02 -6.192539368668e-02 -6.425244375612e-02 -6.655737610509e-02 --6.883998805151e-02 -7.110008025161e-02 -7.333745671913e-02 -7.555192484393e-02 --7.774329541020e-02 -7.991138261421e-02 -8.205600408150e-02 -8.417698088369e-02 --8.627413755471e-02 -8.834730210664e-02 -9.039630604499e-02 -9.242098438353e-02 --9.442117565863e-02 -9.639672194312e-02 -9.834746885961e-02 -1.002732655934e-01 --1.021739649048e-01 -1.040494231411e-01 -1.058995002478e-01 -1.077240597797e-01 --1.095229689111e-01 -1.112960984458e-01 -1.130433228266e-01 -1.147645201439e-01 --1.164595721444e-01 -1.181283642388e-01 -1.197707855094e-01 -1.213867287168e-01 --1.229760903064e-01 -1.245387704143e-01 -1.260746728727e-01 -1.275837052148e-01 --1.290657786791e-01 -1.305208082135e-01 -1.319487124786e-01 -1.333494138503e-01 --1.347228384229e-01 -1.360689160103e-01 -1.373875801476e-01 -1.386787680924e-01 --1.399424208244e-01 -1.411784830461e-01 -1.423869031819e-01 -1.435676333767e-01 --1.447206294949e-01 -1.458458511177e-01 -1.469432615411e-01 -1.480128277725e-01 --1.490545205271e-01 -1.500683142241e-01 -1.510541869820e-01 -1.520121206133e-01 --1.529421006198e-01 -1.538441161856e-01 -1.547181601715e-01 -1.555642291072e-01 --1.563823231847e-01 -1.571724462497e-01 -1.579346057935e-01 -1.586688129443e-01 --1.593750824573e-01 -1.600534327055e-01 -1.607038856690e-01 -1.613264669243e-01 --1.619212056333e-01 -1.624881345314e-01 -1.630272899154e-01 -1.635387116309e-01 --1.640224430593e-01 -1.644785311042e-01 -1.649070261774e-01 -1.653079821847e-01 --1.656814565107e-01 -1.660275100038e-01 -1.663462069604e-01 -1.666376151086e-01 --1.669018055916e-01 -1.671388529506e-01 -1.673488351076e-01 -1.675318333473e-01 --1.676879322986e-01 -1.678172199161e-01 -1.679197874610e-01 -1.679957294811e-01 --1.680451437914e-01 -1.680681314531e-01 -1.680647967533e-01 -1.680352471835e-01 --1.679795934182e-01 -1.678979492927e-01 -1.677904317807e-01 -1.676571609720e-01 --1.674982600487e-01 -1.673138552622e-01 -1.671040759088e-01 -1.668690543061e-01 --1.666089257676e-01 -1.663238285784e-01 -1.660139039692e-01 -1.656792960911e-01 --1.653201519892e-01 -1.649366215765e-01 -1.645288576067e-01 -1.640970156475e-01 --1.636412540531e-01 -1.631617339362e-01 -1.626586191402e-01 -1.621320762106e-01 --1.615822743666e-01 -1.610093854714e-01 -1.604135840036e-01 -1.597950470272e-01 --1.591539541615e-01 -1.584904875512e-01 -1.578048318357e-01 -1.570971741183e-01 --1.563677039349e-01 -1.556166132232e-01 -1.548440962904e-01 -1.540503497817e-01 --1.532355726479e-01 -1.523999661133e-01 -1.515437336425e-01 -1.506670809080e-01 --1.497702157568e-01 -1.488533481770e-01 -1.479166902640e-01 -1.469604561871e-01 --1.459848621550e-01 -1.449901263815e-01 -1.439764690515e-01 -1.429441122854e-01 --1.418932801051e-01 -1.408241983982e-01 -1.397370948832e-01 -1.386321990736e-01 --1.375097422424e-01 -1.363699573865e-01 -1.352130791900e-01 -1.340393439887e-01 --1.328489897337e-01 -1.316422559544e-01 -1.304193837223e-01 -1.291806156141e-01 --1.279261956746e-01 -1.266563693800e-01 -1.253713836005e-01 -1.240714865628e-01 --1.227569278130e-01 -1.214279581791e-01 -1.200848297328e-01 -1.187277957525e-01 --1.173571106849e-01 -1.159730301075e-01 -1.145758106902e-01 -1.131657101573e-01 --1.117429872497e-01 -1.103079016861e-01 -1.088607141251e-01 -1.074016861269e-01 --1.059310801145e-01 -1.044491593355e-01 -1.029561878238e-01 -1.014524303607e-01 --9.993815243652e-02 -9.841362021212e-02 -9.687910048013e-02 -9.533486062644e-02 --9.378116859156e-02 -9.221829283197e-02 -9.064650228155e-02 -8.906606631294e-02 --8.747725469894e-02 -8.588033757396e-02 -8.427558539545e-02 -8.266326890537e-02 --8.104365909172e-02 -7.941702715008e-02 -7.778364444522e-02 -7.614378247275e-02 --7.449771282081e-02 -7.284570713186e-02 -7.118803706451e-02 -6.952497425542e-02 --6.785679028131e-02 -6.618375662098e-02 -6.450614461754e-02 -6.282422544058e-02 --6.113827004858e-02 -5.944854915133e-02 -5.775533317251e-02 -5.605889221235e-02 --5.435949601043e-02 -5.265741390859e-02 -5.095291481399e-02 -4.924626716229e-02 --4.753773888093e-02 -4.582759735266e-02 -4.411610937911e-02 -4.240354114454e-02 --4.069015817980e-02 -3.897622532641e-02 -3.726200670080e-02 -3.554776565875e-02 --3.383376475999e-02 -3.212026573298e-02 -3.040752943992e-02 -2.869581584189e-02 --2.698538396420e-02 -2.527649186198e-02 -2.356939658596e-02 -2.186435414842e-02 --2.016161948939e-02 -1.846144644308e-02 -1.676408770452e-02 -1.506979479638e-02 --1.337881803613e-02 -1.169140650333e-02 -1.000780800722e-02 -8.328269054515e-03 --6.653034817514e-03 -4.982349102382e-03 -3.316454317742e-03 -1.655591443512e-03 --9.290480171035e-15 1.650081982682e-03 3.294417995062e-03 4.932773078292e-03 -6.564913853998e-03 - Type L N - 0 1 2 -0.000000000000e+00 6.057645291757e-03 1.211409019261e-02 1.816813459484e-02 -2.421857895701e-02 3.026422458692e-02 3.630387392438e-02 4.233633082363e-02 -4.836040083545e-02 5.437489148881e-02 6.037861257200e-02 6.637037641321e-02 -7.234899816045e-02 7.831329606071e-02 8.426209173838e-02 9.019421047277e-02 -9.610848147468e-02 1.020037381620e-01 1.078788184342e-01 1.137325649457e-01 -1.195638253778e-01 1.253714527100e-01 1.311543054889e-01 1.369112480966e-01 -1.426411510172e-01 1.483428911016e-01 1.540153518312e-01 1.596574235791e-01 -1.652680038705e-01 1.708459976401e-01 1.763903174891e-01 1.818998839385e-01 -1.873736256817e-01 1.928104798348e-01 1.982093921838e-01 2.035693174309e-01 -2.088892194377e-01 2.141680714660e-01 2.194048564169e-01 2.245985670666e-01 -2.297482063000e-01 2.348527873422e-01 2.399113339863e-01 2.449228808196e-01 -2.498864734462e-01 2.548011687073e-01 2.596660348986e-01 2.644801519840e-01 -2.692426118077e-01 2.739525183019e-01 2.786089876924e-01 2.832111487005e-01 -2.877581427417e-01 2.922491241217e-01 2.966832602285e-01 3.010597317214e-01 -3.053777327167e-01 3.096364709698e-01 3.138351680540e-01 3.179730595357e-01 -3.220493951456e-01 3.260634389475e-01 3.300144695019e-01 3.339017800270e-01 -3.377246785558e-01 3.414824880886e-01 3.451745467432e-01 3.488002078998e-01 -3.523588403430e-01 3.558498283991e-01 3.592725720702e-01 3.626264871641e-01 -3.659110054194e-01 3.691255746281e-01 3.722696587527e-01 3.753427380397e-01 -3.783443091295e-01 3.812738851612e-01 3.841309958739e-01 3.869151877036e-01 -3.896260238760e-01 3.922630844945e-01 3.948259666247e-01 3.973142843742e-01 -3.997276689683e-01 4.020657688210e-01 4.043282496018e-01 4.065147942988e-01 -4.086251032763e-01 4.106588943291e-01 4.126159027315e-01 4.144958812827e-01 -4.162986003470e-01 4.180238478906e-01 4.196714295127e-01 4.212411684736e-01 -4.227329057167e-01 4.241464998881e-01 4.254818273497e-01 4.267387821894e-01 -4.279172762261e-01 4.290172390104e-01 4.300386178210e-01 4.309813776567e-01 -4.318455012237e-01 4.326309889187e-01 4.333378588077e-01 4.339661466002e-01 -4.345159056188e-01 4.349872067653e-01 4.353801384813e-01 4.356948067050e-01 -4.359313348240e-01 4.360898636233e-01 4.361705512287e-01 4.361735730472e-01 -4.360991217012e-01 4.359474069605e-01 4.357186556685e-01 4.354131116650e-01 -4.350310357045e-01 4.345727053707e-01 4.340384149863e-01 4.334284755195e-01 -4.327432144854e-01 4.319829758443e-01 4.311481198955e-01 4.302390231672e-01 -4.292560783023e-01 4.281996939408e-01 4.270702945978e-01 4.258683205377e-01 -4.245942276447e-01 4.232484872898e-01 4.218315861934e-01 4.203440262848e-01 -4.187863245581e-01 4.171590129235e-01 4.154626380564e-01 4.136977612420e-01 -4.118649582169e-01 4.099648190067e-01 4.079979477610e-01 4.059649625843e-01 -4.038664953643e-01 4.017031915961e-01 3.994757102038e-01 3.971847233590e-01 -3.948309162959e-01 3.924149871231e-01 3.899376466332e-01 3.873996181087e-01 -3.848016371254e-01 3.821444513525e-01 3.794288203509e-01 3.766555153674e-01 -3.738253191273e-01 3.709390256240e-01 3.679974399062e-01 3.650013778619e-01 -3.619516660012e-01 3.588491412354e-01 3.556946506550e-01 3.524890513043e-01 -3.492332099545e-01 3.459280028748e-01 3.425743156007e-01 3.391730427008e-01 -3.357250875417e-01 3.322313620507e-01 3.286927864770e-01 3.251102891507e-01 -3.214848062405e-01 3.178172815100e-01 3.141086660715e-01 3.103599181392e-01 -3.065720027808e-01 3.027458916671e-01 2.988825628215e-01 2.949830003670e-01 -2.910481942728e-01 2.870791400995e-01 2.830768387438e-01 2.790422961814e-01 -2.749765232094e-01 2.708805351884e-01 2.667553517828e-01 2.626019967016e-01 -2.584214974372e-01 2.542148850054e-01 2.499831936829e-01 2.457274607465e-01 -2.414487262099e-01 2.371480325622e-01 2.328264245044e-01 2.284849486875e-01 -2.241246534486e-01 2.197465885493e-01 2.153518049117e-01 2.109413543570e-01 -2.065162893421e-01 2.020776626981e-01 1.976265273686e-01 1.931639361477e-01 -1.886909414203e-01 1.842085949006e-01 1.797179473734e-01 1.752200484348e-01 -1.707159462339e-01 1.662066872156e-01 1.616933158642e-01 1.571768744477e-01 -1.526584027636e-01 1.481389378853e-01 1.436195139099e-01 1.391011617074e-01 -1.345849086707e-01 1.300717784677e-01 1.255627907937e-01 1.210589611267e-01 -1.165613004829e-01 1.120708151746e-01 1.075885065698e-01 1.031153708529e-01 -9.865239878758e-02 9.420057548197e-02 8.976088015483e-02 8.533428590431e-02 -8.092175947859e-02 7.652426104855e-02 7.214274398262e-02 6.777815462382e-02 -6.343143206906e-02 5.910350795073e-02 5.479530622064e-02 5.050774293645e-02 -4.624172605044e-02 4.199815520094e-02 3.777792150620e-02 3.358190736100e-02 -2.941098623583e-02 2.526602247890e-02 2.114787112076e-02 1.705737768195e-02 -1.299537798329e-02 8.962697959276e-03 4.960153474277e-03 9.885501418266e-04 --2.951316853084e-03 -6.858662928623e-03 -1.073271427760e-02 -1.457270803581e-02 --1.837789244712e-02 -2.214752702537e-02 -2.588088271296e-02 -2.957724203610e-02 --3.323589925677e-02 -3.685616052122e-02 -4.043734400507e-02 -4.397878005499e-02 --4.747981132682e-02 -5.093979292026e-02 -5.435809250992e-02 -5.773409047285e-02 --6.106718001243e-02 -6.435676727870e-02 -6.760227148491e-02 -7.080312502047e-02 --7.395877356020e-02 -7.706867616980e-02 -8.013230540758e-02 -8.314914742247e-02 --8.611870204815e-02 -8.904048289344e-02 -9.191401742883e-02 -9.473884706918e-02 --9.751452725254e-02 -1.002406275151e-01 -1.029167315623e-01 -1.055424373360e-01 --1.081173570775e-01 -1.106411173875e-01 -1.131133592807e-01 -1.155337382378e-01 --1.179019242531e-01 -1.202176018776e-01 -1.224804702591e-01 -1.246902431776e-01 --1.268466490771e-01 -1.289494310933e-01 -1.309983470776e-01 -1.329931696165e-01 --1.349336860480e-01 -1.368196984730e-01 -1.386510237637e-01 -1.404274935675e-01 --1.421489543068e-01 -1.438152671755e-01 -1.454263081311e-01 -1.469819678830e-01 --1.484821518772e-01 -1.499267802761e-01 -1.513157879361e-01 -1.526491243796e-01 --1.539267537644e-01 -1.551486548486e-01 -1.563148209519e-01 -1.574252599131e-01 --1.584799940440e-01 -1.594790600789e-01 -1.604225091215e-01 -1.613104065866e-01 --1.621428321394e-01 -1.629198796306e-01 -1.636416570279e-01 -1.643082863435e-01 --1.649199035588e-01 -1.654766585451e-01 -1.659787149804e-01 -1.664262502634e-01 --1.668194554238e-01 -1.671585350286e-01 -1.674437070858e-01 -1.676752029444e-01 --1.678532671906e-01 -1.679781575418e-01 -1.680501447358e-01 -1.680695124184e-01 --1.680365570265e-01 -1.679515876685e-01 -1.678149260022e-01 -1.676269061082e-01 --1.673878743619e-01 -1.670981893012e-01 -1.667582214918e-01 -1.663683533897e-01 --1.659289792006e-01 -1.654405047364e-01 -1.649033472693e-01 -1.643179353826e-01 --1.636847088194e-01 -1.630041183284e-01 -1.622766255068e-01 -1.615027026413e-01 --1.606828325460e-01 -1.598175083983e-01 -1.589072335721e-01 -1.579525214688e-01 --1.569538953461e-01 -1.559118881443e-01 -1.548270423105e-01 -1.536999096209e-01 --1.525310510007e-01 -1.513210363424e-01 -1.500704443212e-01 -1.487798622099e-01 --1.474498856905e-01 -1.460811186652e-01 -1.446741730647e-01 -1.432296686553e-01 --1.417482328444e-01 -1.402305004843e-01 -1.386771136742e-01 -1.370887215615e-01 --1.354659801405e-01 -1.338095520513e-01 -1.321201063757e-01 -1.303983184336e-01 --1.286448695767e-01 -1.268604469820e-01 -1.250457434442e-01 -1.232014571667e-01 --1.213282915519e-01 -1.194269549906e-01 -1.174981606509e-01 -1.155426262657e-01 --1.135610739201e-01 -1.115542298380e-01 -1.095228241678e-01 -1.074675907683e-01 --1.053892669932e-01 -1.032885934764e-01 -1.011663139158e-01 -9.902317485756e-02 --9.685992548010e-02 -9.467731737761e-02 -9.247610434384e-02 -9.025704215565e-02 --8.802088835674e-02 -8.576840204139e-02 -8.350034363841e-02 -8.121747469527e-02 --7.892055766257e-02 -7.661035567879e-02 -7.428763235551e-02 -7.195315156299e-02 --6.960767721639e-02 -6.725197306245e-02 -6.488680246692e-02 -6.251292820257e-02 --6.013111223805e-02 -5.774211552749e-02 -5.534669780101e-02 -5.294561735614e-02 --5.053963085020e-02 -4.812949309377e-02 -4.571595684517e-02 -4.329977260615e-02 --4.088168841881e-02 -3.846244966364e-02 -3.604279885905e-02 -3.362347546212e-02 --3.120521567084e-02 -2.878875222779e-02 -2.637481422536e-02 -2.396412691254e-02 --2.155741150330e-02 -1.915538498668e-02 -1.675875993862e-02 -1.436824433548e-02 --1.198454136947e-02 -9.608349265921e-03 -7.240361102419e-03 -4.881264629992e-03 --2.531742096235e-03 -1.924700705176e-04 2.135880728715e-03 4.452645604499e-03 -6.757166049726e-03 9.048789913281e-03 1.132687156392e-02 1.359077205184e-02 -1.583985926787e-02 1.807350810032e-02 2.029110058933e-02 2.249202607883e-02 -2.467568136597e-02 2.684147084793e-02 2.898880666628e-02 3.111710884866e-02 -3.322580544777e-02 3.531433267779e-02 3.738213504801e-02 3.942866549371e-02 -4.145338550431e-02 4.345576524869e-02 4.543528369771e-02 4.739142874380e-02 -4.932369731770e-02 5.123159550235e-02 5.311463864369e-02 5.497235145865e-02 -5.680426814004e-02 5.860993245852e-02 6.038889786141e-02 6.214072756859e-02 -6.386499466524e-02 6.556128219149e-02 6.722918322899e-02 6.886830098432e-02 -7.047824886926e-02 7.205865057793e-02 7.360914016073e-02 7.512936209506e-02 -7.661897135291e-02 7.807763346516e-02 7.950502458272e-02 8.090083153442e-02 -8.226475188160e-02 8.359649396955e-02 8.489577697561e-02 8.616233095403e-02 -8.739589687760e-02 8.859622667597e-02 8.976308327066e-02 9.089624060691e-02 -9.199548368210e-02 9.306060857102e-02 9.409142244780e-02 9.508774360455e-02 -9.604940146679e-02 9.697623660553e-02 9.786810074617e-02 9.872485677404e-02 -9.954637873680e-02 1.003325518435e-01 1.010832724605e-01 1.017984481038e-01 -1.024779974292e-01 1.031218502174e-01 1.037299473580e-01 1.043022408287e-01 -1.048386936725e-01 1.053392799704e-01 1.058039848127e-01 1.062328042653e-01 -1.066257453348e-01 1.069828259286e-01 1.073040748135e-01 1.075895315703e-01 -1.078392465461e-01 1.080532808026e-01 1.082317060623e-01 1.083746046517e-01 -1.084820694408e-01 1.085542037805e-01 1.085911214368e-01 1.085929465218e-01 -1.085598134227e-01 1.084918667272e-01 1.083892611464e-01 1.082521614352e-01 -1.080807423093e-01 1.078751883606e-01 1.076356939687e-01 1.073624632107e-01 -1.070557097679e-01 1.067156568306e-01 1.063425369993e-01 1.059365921843e-01 -1.054980735025e-01 1.050272411721e-01 1.045243644044e-01 1.039897212934e-01 -1.034235987037e-01 1.028262921553e-01 1.021981057065e-01 1.015393518350e-01 -1.008503513160e-01 1.001314330992e-01 9.938293418293e-02 9.860519948654e-02 -9.779858172102e-02 9.696344125737e-02 9.610014599323e-02 9.520907121766e-02 -9.429059947404e-02 9.334512042133e-02 9.237303069346e-02 9.137473375723e-02 -9.035063976843e-02 8.930116542647e-02 8.822673382747e-02 8.712777431584e-02 -8.600472233443e-02 8.485801927336e-02 8.368811231739e-02 8.249545429210e-02 -8.128050350877e-02 8.004372360812e-02 7.878558340283e-02 7.750655671905e-02 -7.620712223680e-02 7.488776332941e-02 7.354896790198e-02 7.219122822898e-02 -7.081504079101e-02 6.942090611072e-02 6.800932858799e-02 6.658081633451e-02 -6.513588100758e-02 6.367503764340e-02 6.219880448981e-02 6.070770283852e-02 -5.920225685694e-02 5.768299341955e-02 5.615044193901e-02 5.460513419693e-02 -5.304760417444e-02 5.147838788255e-02 4.989802319239e-02 4.830704966538e-02 -4.670600838332e-02 4.509544177855e-02 4.347589346415e-02 4.184790806431e-02 -4.021203104476e-02 3.856880854353e-02 3.691878720195e-02 3.526251399594e-02 -3.360053606767e-02 3.193340055767e-02 3.026165443743e-02 2.858584434239e-02 -2.690651640569e-02 2.522421609232e-02 2.353948803412e-02 2.185287586535e-02 -2.016492205910e-02 1.847616776446e-02 1.678715264456e-02 1.509841471550e-02 -1.341049018621e-02 1.172391329930e-02 1.003921617299e-02 8.356928644037e-03 -6.677578111852e-03 5.001689383741e-03 3.329784521373e-03 1.662382688506e-03 --1.014198008344e-14 -1.656850627876e-03 -3.307659625620e-03 -4.951920917442e-03 --6.589132066615e-03 - Type L N - 0 1 3 -0.000000000000e+00 7.814122690500e-03 1.562566868360e-02 2.343206229337e-02 -3.123072985648e-02 3.901910074235e-02 4.679460836213e-02 5.455469117579e-02 -6.229679369723e-02 7.001836749665e-02 7.771687220002e-02 8.538977648500e-02 -9.303455907313e-02 1.006487097176e-01 1.082297301863e-01 1.157751352398e-01 -1.232824536041e-01 1.307492289365e-01 1.381730207862e-01 1.455514055471e-01 -1.528819774045e-01 1.601623492731e-01 1.673901537278e-01 1.745630439255e-01 -1.816786945189e-01 1.887348025602e-01 1.957290883961e-01 2.026592965522e-01 -2.095231966074e-01 2.163185840577e-01 2.230432811687e-01 2.296951378169e-01 -2.362720323192e-01 2.427718722500e-01 2.491925952466e-01 2.555321698005e-01 -2.617885960372e-01 2.679599064811e-01 2.740441668073e-01 2.800394765795e-01 -2.859439699728e-01 2.917558164826e-01 2.974732216175e-01 3.030944275781e-01 -3.086177139192e-01 3.140413981968e-01 3.193638365984e-01 3.245834245575e-01 -3.296985973511e-01 3.347078306804e-01 3.396096412342e-01 3.444025872356e-01 -3.490852689701e-01 3.536563292967e-01 3.581144541406e-01 3.624583729681e-01 -3.666868592425e-01 3.707987308618e-01 3.747928505779e-01 3.786681263961e-01 -3.824235119562e-01 3.860580068944e-01 3.895706571850e-01 3.929605554638e-01 -3.962268413307e-01 3.993687016333e-01 4.023853707308e-01 4.052761307368e-01 -4.080403117436e-01 4.106772920251e-01 4.131864982204e-01 4.155674054966e-01 -4.178195376915e-01 4.199424674358e-01 4.219358162554e-01 4.237992546526e-01 -4.255325021671e-01 4.271353274170e-01 4.286075481190e-01 4.299490310879e-01 -4.311596922160e-01 4.322394964326e-01 4.331884576420e-01 4.340066386425e-01 -4.346941510237e-01 4.352511550455e-01 4.356778594951e-01 4.359745215251e-01 -4.361414464714e-01 4.361789876513e-01 4.360875461417e-01 4.358675705376e-01 -4.355195566920e-01 4.350440474349e-01 4.344416322746e-01 4.337129470789e-01 -4.328586737381e-01 4.318795398086e-01 4.307763181386e-01 4.295498264749e-01 -4.282009270517e-01 4.267305261617e-01 4.251395737088e-01 4.234290627438e-01 -4.216000289823e-01 4.196535503061e-01 4.175907462470e-01 4.154127774542e-01 -4.131208451458e-01 4.107161905434e-01 4.082000942915e-01 4.055738758607e-01 -4.028388929362e-01 3.999965407908e-01 3.970482516432e-01 3.939954940025e-01 -3.908397719974e-01 3.875826246927e-01 3.842256253917e-01 3.807703809252e-01 -3.772185309284e-01 3.735717471047e-01 3.698317324772e-01 3.660002206286e-01 -3.620789749300e-01 3.580697877574e-01 3.539744796986e-01 3.497948987490e-01 -3.455329194973e-01 3.411904423020e-01 3.367693924580e-01 3.322717193544e-01 -3.276993956239e-01 3.230544162842e-01 3.183387978704e-01 3.135545775621e-01 -3.087038123009e-01 3.037885779036e-01 2.988109681678e-01 2.937730939718e-01 -2.886770823698e-01 2.835250756809e-01 2.783192305746e-01 2.730617171515e-01 -2.677547180202e-01 2.624004273707e-01 2.570010500456e-01 2.515588006072e-01 -2.460759024041e-01 2.405545866350e-01 2.349970914112e-01 2.294056608186e-01 -2.237825439790e-01 2.181299941111e-01 2.124502675921e-01 2.067456230196e-01 -2.010183202750e-01 1.952706195884e-01 1.895047806052e-01 1.837230614551e-01 -1.779277178241e-01 1.721210020292e-01 1.663051620971e-01 1.604824408467e-01 -1.546550749755e-01 1.488252941514e-01 1.429953201094e-01 1.371673657534e-01 -1.313436342646e-01 1.255263182154e-01 1.197175986908e-01 1.139196444159e-01 -1.081346108919e-01 1.023646395384e-01 9.661185684528e-02 9.087837353237e-02 -8.516628371778e-02 7.947766409582e-02 7.381457312425e-02 6.817905022147e-02 -6.257311497382e-02 5.699876635353e-02 5.145798194744e-02 4.595271719691e-02 -4.048490464928e-02 3.505645322102e-02 2.966924747309e-02 2.432514689860e-02 -1.902598522323e-02 1.377356971852e-02 8.569680528524e-03 3.416070009878e-03 --1.685537914316e-03 -6.733448386569e-03 -1.172599623281e-02 -1.666154656564e-02 --2.153849537289e-02 -2.635527009107e-02 -3.111033016370e-02 -3.580216758418e-02 --4.042930742302e-02 -4.499030833920e-02 -4.948376307554e-02 -5.390829893788e-02 --5.826257825777e-02 -6.254529883867e-02 -6.675519438543e-02 -7.089103491686e-02 --7.495162716128e-02 -7.893581493492e-02 -8.284247950303e-02 -8.667053992355e-02 --9.041895337328e-02 -9.408671545643e-02 -9.767286049539e-02 -1.011764618037e-01 --1.045966319412e-01 -1.079325229511e-01 -1.111833265790e-01 -1.143482744738e-01 --1.174266383711e-01 -1.204177302569e-01 -1.233209025149e-01 -1.261355480545e-01 --1.288611004204e-01 -1.314970338849e-01 -1.340428635211e-01 -1.364981452580e-01 --1.388624759179e-01 -1.411354932352e-01 -1.433168758566e-01 -1.454063433243e-01 --1.474036560402e-01 -1.493086152126e-01 -1.511210627846e-01 -1.528408813451e-01 --1.544679940216e-01 -1.560023643555e-01 -1.574439961601e-01 -1.587929333606e-01 --1.600492598173e-01 -1.612130991309e-01 -1.622846144317e-01 -1.632640081506e-01 --1.641515217746e-01 -1.649474355844e-01 -1.656520683768e-01 -1.662657771693e-01 --1.667889568901e-01 -1.672220400507e-01 -1.675654964039e-01 -1.678198325857e-01 --1.679855917413e-01 -1.680633531372e-01 -1.680537317574e-01 -1.679573778846e-01 --1.677749766682e-01 -1.675072476768e-01 -1.671549444372e-01 -1.667188539595e-01 --1.661997962490e-01 -1.655986238042e-01 -1.649162211023e-01 -1.641535040722e-01 --1.633114195542e-01 -1.623909447482e-01 -1.613930866501e-01 -1.603188814758e-01 --1.591693940749e-01 -1.579457173330e-01 -1.566489715627e-01 -1.552803038852e-01 --1.538408876014e-01 -1.523319215527e-01 -1.507546294736e-01 -1.491102593337e-01 --1.474000826723e-01 -1.456253939232e-01 -1.437875097328e-01 -1.418877682690e-01 --1.399275285239e-01 -1.379081696080e-01 -1.358310900394e-01 -1.336977070249e-01 --1.315094557360e-01 -1.292677885787e-01 -1.269741744584e-01 -1.246300980397e-01 --1.222370590006e-01 -1.197965712841e-01 -1.173101623444e-01 -1.147793723900e-01 --1.122057536239e-01 -1.095908694807e-01 -1.069362938606e-01 -1.042436103626e-01 --1.015144115146e-01 -9.875029800281e-02 -9.595287790002e-02 -9.312376589286e-02 --9.026458250914e-02 -8.737695334494e-02 -8.446250829219e-02 -8.152288076701e-02 --7.855970693909e-02 -7.557462496255e-02 -7.256927420864e-02 -6.954529450057e-02 --6.650432535085e-02 -6.344800520151e-02 -6.037797066753e-02 -5.729585578377e-02 --5.420329125584e-02 -5.110190371520e-02 -4.799331497879e-02 -4.487914131359e-02 --4.176099270636e-02 -3.864047213898e-02 -3.551917486967e-02 -3.239868772032e-02 --2.928058837044e-02 -2.616644465787e-02 -2.305781388658e-02 -1.995624214201e-02 --1.686326361402e-02 -1.378039992797e-02 -1.070915948401e-02 -7.651036805057e-03 --4.607511893629e-03 -1.580049597793e-03 1.429901013411e-03 4.420907264870e-03 -7.391553480355e-03 1.034044157725e-02 1.326619165087e-02 1.616744254798e-02 -1.904285242952e-02 2.189109932205e-02 2.471088165778e-02 2.750091880313e-02 -3.025995157528e-02 3.298674274679e-02 3.568007753797e-02 3.833876409675e-02 -4.096163396600e-02 4.354754253802e-02 4.609536949598e-02 4.860401924232e-02 -5.107242131375e-02 5.349953078282e-02 5.588432864579e-02 5.822582219690e-02 -6.052304538854e-02 6.277505917758e-02 6.498095185738e-02 6.713983937571e-02 -6.925086563815e-02 7.131320279710e-02 7.332605152623e-02 7.528864128027e-02 -7.720023054004e-02 7.906010704276e-02 8.086758799741e-02 8.262202028525e-02 -8.432278064535e-02 8.596927584507e-02 8.756094283558e-02 8.909724889224e-02 -9.057769173993e-02 9.200179966323e-02 9.336913160161e-02 9.467927722934e-02 -9.593185702046e-02 9.712652229861e-02 9.826295527175e-02 9.934086905198e-02 -1.003600076603e-01 1.013201460162e-01 1.022210899131e-01 1.030626759780e-01 -1.038447716168e-01 1.045672749454e-01 1.052301147051e-01 1.058332501648e-01 -1.063766710073e-01 1.068603972029e-01 1.072844788672e-01 1.076489961059e-01 -1.079540588450e-01 1.081998066476e-01 1.083864085166e-01 1.085140626839e-01 -1.085829963862e-01 1.085934656274e-01 1.085457549284e-01 1.084401770627e-01 -1.082770727808e-01 1.080568105204e-01 1.077797861056e-01 1.074464224324e-01 -1.070571691435e-01 1.066125022902e-01 1.061129239830e-01 1.055589620309e-01 -1.049511695693e-01 1.042901246767e-01 1.035764299807e-01 1.028107122536e-01 -1.019936219975e-01 1.011258330189e-01 1.002080419942e-01 9.924096802516e-02 -9.822535218442e-02 9.716195705293e-02 9.605156624776e-02 9.489498394150e-02 -9.369303437333e-02 9.244656135192e-02 9.115642775059e-02 8.982351499480e-02 -8.844872254249e-02 8.703296735729e-02 8.557718337514e-02 8.408232096433e-02 -8.254934637952e-02 8.097924120983e-02 7.937300182131e-02 7.773163879423e-02 -7.605617635534e-02 7.434765180535e-02 7.260711494217e-02 7.083562747990e-02 -6.903426246414e-02 6.720410368368e-02 6.534624507912e-02 6.346179014847e-02 -6.155185135024e-02 5.961754950420e-02 5.766001319015e-02 5.568037814500e-02 -5.367978665851e-02 5.165938696787e-02 4.962033265158e-02 4.756378202279e-02 -4.549089752252e-02 4.340284511298e-02 4.130079367130e-02 3.918591438401e-02 -3.705938014256e-02 3.492236494010e-02 3.277604326993e-02 3.062158952582e-02 -2.846017740458e-02 2.629297931104e-02 2.412116576589e-02 2.194590481650e-02 -1.976836145117e-02 1.758969701691e-02 1.541106864123e-02 1.323362865800e-02 -1.105852403783e-02 8.886895823170e-03 6.719878568353e-03 4.558599784920e-03 -2.404179392452e-03 2.577291751564e-04 -1.879647755516e-03 -4.006857491995e-03 --6.122815855197e-03 -8.226448912379e-03 -1.031669348800e-02 -1.239249766736e-02 --1.445282129278e-02 -1.649663645210e-02 -1.852292795931e-02 -2.053069382701e-02 --2.251894573059e-02 -2.448670946386e-02 -2.643302538598e-02 -2.835694885939e-02 --3.025755067870e-02 -3.213391749020e-02 -3.398515220194e-02 -3.581037438412e-02 --3.760872065965e-02 -3.937934508470e-02 -4.112141951907e-02 -4.283413398634e-02 --4.451669702342e-02 -4.616833601959e-02 -4.778829754478e-02 -4.937584766694e-02 --5.093027225844e-02 -5.245087729134e-02 -5.393698912143e-02 -5.538795476092e-02 --5.680314213965e-02 -5.818194035487e-02 -5.952375990923e-02 -6.082803293718e-02 --6.209421341953e-02 -6.332177738611e-02 -6.451022310658e-02 -6.565907126920e-02 --6.676786514750e-02 -6.783617075500e-02 -6.886357698766e-02 -6.984969575424e-02 --7.079416209445e-02 -7.169663428484e-02 -7.255679393255e-02 -7.337434605673e-02 --7.414901915772e-02 -7.488056527406e-02 -7.556876002718e-02 -7.621340265389e-02 --7.681431602672e-02 -7.737134666202e-02 -7.788436471594e-02 -7.835326396837e-02 --7.877796179470e-02 -7.915839912568e-02 -7.949454039533e-02 -7.978637347687e-02 --8.003390960693e-02 -8.023718329801e-02 -8.039625223919e-02 -8.051119718538e-02 --8.058212183500e-02 -8.060915269633e-02 -8.059243894251e-02 -8.053215225545e-02 --8.042848665856e-02 -8.028165833868e-02 -8.009190545703e-02 -7.985948794959e-02 --7.958468731689e-02 -7.926780640330e-02 -7.890916916617e-02 -7.850912043475e-02 --7.806802565919e-02 -7.758627064966e-02 -7.706426130588e-02 -7.650242333713e-02 --7.590120197298e-02 -7.526106166478e-02 -7.458248577834e-02 -7.386597627771e-02 --7.311205340040e-02 -7.232125532426e-02 -7.149413782610e-02 -7.063127393228e-02 --6.973325356161e-02 -6.880068316052e-02 -6.783418533096e-02 -6.683439845105e-02 --6.580197628881e-02 -6.473758760914e-02 -6.364191577426e-02 -6.251565833792e-02 --6.135952663348e-02 -6.017424535615e-02 -5.896055213969e-02 -5.771919712767e-02 --5.645094253960e-02 -5.515656223220e-02 -5.383684125599e-02 -5.249257540744e-02 --5.112457077695e-02 -4.973364329296e-02 -4.832061826225e-02 -4.688632990695e-02 --4.543162089824e-02 -4.395734188717e-02 -4.246435103276e-02 -4.095351352768e-02 --3.942570112175e-02 -3.788179164343e-02 -3.632266851973e-02 -3.474922029462e-02 --3.316234014624e-02 -3.156292540326e-02 -2.995187706046e-02 -2.833009929399e-02 --2.669849897633e-02 -2.505798519148e-02 -2.340946875033e-02 -2.175386170669e-02 --2.009207687410e-02 -1.842502734374e-02 -1.675362600365e-02 -1.507878505949e-02 --1.340141555709e-02 -1.172242690711e-02 -1.004272641190e-02 -8.363218794972e-03 --6.684805733115e-03 -5.008385391616e-03 -3.334851962633e-03 -1.665095207049e-03 -5.494061742638e-15 1.659554119718e-03 3.312693396035e-03 4.958550297758e-03 -6.596263956071e-03 - Type L N - 0 1 4 -0.000000000000e+00 9.566298184903e-03 1.912786846262e-02 2.867998570765e-02 -3.821793035619e-02 4.773699118245e-02 5.723246806976e-02 6.669967477440e-02 -7.613394168073e-02 8.553061854550e-02 9.488507722985e-02 1.041927144171e-01 -1.134489543148e-01 1.226492513388e-01 1.317890927784e-01 1.408640014402e-01 -1.498695382692e-01 1.588013049459e-01 1.676549464565e-01 1.764261536362e-01 -1.851106656831e-01 1.937042726403e-01 2.022028178469e-01 2.106022003537e-01 -2.188983773037e-01 2.270873662761e-01 2.351652475906e-01 2.431281665722e-01 -2.509723357752e-01 2.586940371625e-01 2.662896242426e-01 2.737555241599e-01 -2.810882397377e-01 2.882843514741e-01 2.953405194877e-01 3.022534854126e-01 -3.090200742414e-01 3.156371961159e-01 3.221018480627e-01 3.284111156742e-01 -3.345621747332e-01 3.405522927796e-01 3.463788306200e-01 3.520392437773e-01 -3.575310838804e-01 3.628519999927e-01 3.679997398800e-01 3.729721512143e-01 -3.777671827158e-01 3.823828852303e-01 3.868174127419e-01 3.910690233214e-01 -3.951360800081e-01 3.990170516260e-01 4.027105135334e-01 4.062151483048e-01 -4.095297463462e-01 4.126532064420e-01 4.155845362341e-01 4.183228526327e-01 -4.208673821585e-01 4.232174612166e-01 4.253725363010e-01 4.273321641310e-01 -4.290960117185e-01 4.306638563663e-01 4.320355855979e-01 4.332111970191e-01 -4.341907981105e-01 4.349746059520e-01 4.355629468798e-01 4.359562560755e-01 -4.361550770876e-01 4.361600612865e-01 4.359719672530e-01 4.355916601007e-01 -4.350201107332e-01 4.342583950360e-01 4.333076930044e-01 4.321692878079e-01 -4.308445647915e-01 4.293350104145e-01 4.276422111287e-01 4.257678521951e-01 -4.237137164414e-01 4.214816829602e-01 4.190737257501e-01 4.164919122987e-01 -4.137384021101e-01 4.108154451784e-01 4.077253804055e-01 4.044706339677e-01 -4.010537176303e-01 3.974772270111e-01 3.937438397957e-01 3.898563139041e-01 -3.858174856110e-01 3.816302676203e-01 3.772976470959e-01 3.728226836497e-01 -3.682085072877e-01 3.634583163171e-01 3.585753752142e-01 3.535630124553e-01 -3.484246183124e-01 3.431636426144e-01 3.377835924758e-01 3.322880299949e-01 -3.266805699217e-01 3.209648772982e-01 3.151446650732e-01 3.092236916908e-01 -3.032057586576e-01 2.970947080870e-01 2.908944202243e-01 2.846088109542e-01 -2.782418292907e-01 2.717974548527e-01 2.652796953271e-01 2.586925839194e-01 -2.520401767950e-01 2.453265505129e-01 2.385557994521e-01 2.317320332342e-01 -2.248593741423e-01 2.179419545395e-01 2.109839142871e-01 2.039893981648e-01 -1.969625532959e-01 1.899075265763e-01 1.828284621119e-01 1.757294986646e-01 -1.686147671085e-01 1.614883878982e-01 1.543544685513e-01 1.472171011461e-01 -1.400803598361e-01 1.329482983835e-01 1.258249477125e-01 1.187143134847e-01 -1.116203736975e-01 1.045470763076e-01 9.749833688091e-02 9.047803626969e-02 -8.349001831981e-02 7.653808760819e-02 6.962600721258e-02 6.275749651498e-02 -5.593622903979e-02 4.916583032846e-02 4.244987585155e-02 3.579188895980e-02 -2.919533887523e-02 2.266363872368e-02 1.620014360995e-02 9.808148736539e-03 -3.490887567426e-03 -2.748469962288e-03 -8.906819189644e-03 -1.498112241901e-02 --2.096841056821e-02 -2.686578476455e-02 -3.267041788992e-02 -3.837955607400e-02 --4.399052013474e-02 -4.950070696528e-02 -5.490759086660e-02 -6.020872482503e-02 --6.540174173404e-02 -7.048435555960e-02 -7.545436244846e-02 -8.030964177882e-02 --8.504815715278e-02 -8.966795733019e-02 -9.416717710327e-02 -9.854403811174e-02 --1.027968495980e-01 -1.069240091019e-01 -1.109240030955e-01 -1.147954075558e-01 --1.185368884781e-01 -1.221472023268e-01 -1.256251964254e-01 -1.289698092854e-01 --1.321800708730e-01 -1.352551028153e-01 -1.381941185442e-01 -1.409964233795e-01 --1.436614145509e-01 -1.461885811587e-01 -1.485775040737e-01 -1.508278557766e-01 --1.529394001376e-01 -1.549119921350e-01 -1.567455775156e-01 -1.584401923947e-01 --1.599959627980e-01 -1.614131041459e-01 -1.626919206784e-01 -1.638328048251e-01 --1.648362365168e-01 -1.657027824425e-01 -1.664330952505e-01 -1.670279126954e-01 --1.674880567315e-01 -1.678144325526e-01 -1.680080275809e-01 -1.680699104034e-01 --1.680012296587e-01 -1.678032128742e-01 -1.674771652549e-01 -1.670244684244e-01 --1.664465791196e-01 -1.657450278406e-01 -1.649214174546e-01 -1.639774217584e-01 --1.629147839977e-01 -1.617353153453e-01 -1.604408933404e-01 -1.590334602880e-01 --1.575150216224e-01 -1.558876442330e-01 -1.541534547566e-01 -1.523146378354e-01 --1.503734343426e-01 -1.483321395777e-01 -1.461931014316e-01 -1.439587185236e-01 --1.416314383123e-01 -1.392137551793e-01 -1.367082084909e-01 -1.341173806359e-01 --1.314438950423e-01 -1.286904141746e-01 -1.258596375129e-01 -1.229542995144e-01 --1.199771675604e-01 -1.169310398889e-01 -1.138187435147e-01 -1.106431321393e-01 --1.074070840500e-01 -1.041135000127e-01 -1.007653011565e-01 -9.736542685513e-02 --9.391683260303e-02 -9.042248789093e-02 -8.688537408014e-02 -8.330848227797e-02 --7.969481121567e-02 -7.604736513015e-02 -7.236915165120e-02 -6.866317969545e-02 --6.493245736860e-02 -6.117998987743e-02 -5.740877745286e-02 -5.362181328560e-02 --4.982208147572e-02 -4.601255499754e-02 -4.219619368123e-02 -3.837594221246e-02 --3.455472815141e-02 -3.073545997251e-02 -2.692102512614e-02 -2.311428812369e-02 --1.931808864708e-02 -1.553523968410e-02 -1.176852569077e-02 -8.020700781853e-03 --4.294486950730e-03 -5.925723198338e-04 3.082390577347e-03 6.727786481505e-03 -1.034103905898e-02 1.391961251838e-02 1.746101319137e-02 2.096279107660e-02 -2.442254134593e-02 2.783790581184e-02 3.120657435532e-02 3.452628631329e-02 -3.779483182466e-02 4.101005313436e-02 4.416984585451e-02 4.727216018190e-02 -5.031500207134e-02 5.329643436387e-02 5.621457786948e-02 5.906761240362e-02 -6.185377777692e-02 6.457137473767e-02 6.721876586647e-02 6.979437642272e-02 -7.229669514237e-02 7.472427498670e-02 7.707573384170e-02 7.934975516771e-02 -8.154508859916e-02 8.366055049403e-02 8.569502443295e-02 8.764746166772e-02 -8.951688151909e-02 9.130237172376e-02 9.300308873062e-02 9.461825794594e-02 -9.614717392794e-02 9.758920053040e-02 9.894377099563e-02 1.002103879969e-01 -1.013886236305e-01 1.024781193575e-01 1.034785858955e-01 1.043898030609e-01 -1.052116195617e-01 1.059439527411e-01 1.065867882727e-01 1.071401798072e-01 -1.076042485711e-01 1.079791829190e-01 1.082652378377e-01 1.084627344050e-01 -1.085720592028e-01 1.085936636840e-01 1.085280634965e-01 1.083758377621e-01 -1.081376283127e-01 1.078141388845e-01 1.074061342699e-01 1.069144394291e-01 -1.063399385610e-01 1.056835741356e-01 1.049463458876e-01 1.041293097723e-01 -1.032335768856e-01 1.022603123479e-01 1.012107341531e-01 1.000861119842e-01 -9.888776599662e-02 9.761706556868e-02 9.627542802251e-02 9.486431731473e-02 -9.338524269884e-02 9.183975736014e-02 9.022945702425e-02 8.855597854051e-02 -8.682099844128e-02 8.502623147829e-02 8.317342913729e-02 8.126437813212e-02 -7.930089887935e-02 7.728484395482e-02 7.521809653307e-02 7.310256881118e-02 -7.094020041790e-02 6.873295680958e-02 6.648282765399e-02 6.419182520331e-02 -6.186198265754e-02 5.949535251952e-02 5.709400494294e-02 5.466002607442e-02 -5.219551639106e-02 4.970258903460e-02 4.718336814347e-02 4.463998718407e-02 -4.207458728231e-02 3.948931555689e-02 3.688632345530e-02 3.426776509407e-02 -3.163579560413e-02 2.899256948279e-02 2.634023895338e-02 2.368095233377e-02 -2.101685241502e-02 1.835007485117e-02 1.568274656153e-02 1.301698414641e-02 -1.035489231759e-02 7.698562344555e-03 5.050070517548e-03 2.411476628665e-03 --2.151775280819e-04 -2.827869636607e-03 -5.424598317503e-03 -8.003384564679e-03 --1.056227315890e-02 -1.309933405728e-02 -1.561266375770e-02 -1.810038663739e-02 --2.056065626453e-02 -2.299165668228e-02 -2.539160366410e-02 -2.775874593974e-02 --3.009136639095e-02 -3.238778321625e-02 -3.464635106392e-02 -3.686546213246e-02 --3.904354723792e-02 -4.117907684734e-02 -4.327056207765e-02 -4.531655565950e-02 --4.731565286529e-02 -4.926649240097e-02 -5.116775726097e-02 -5.301817554583e-02 --5.481652124205e-02 -5.656161496362e-02 -5.825232465496e-02 -5.988756625480e-02 --6.146630432063e-02 -6.298755261344e-02 -6.445037464250e-02 -6.585388416976e-02 --6.719724567388e-02 -6.847967477340e-02 -6.970043860922e-02 -7.085885618590e-02 --7.195429867199e-02 -7.298618965913e-02 -7.395400537984e-02 -7.485727488428e-02 --7.569558017556e-02 -7.646855630406e-02 -7.717589142062e-02 -7.781732678871e-02 --7.839265675589e-02 -7.890172868448e-02 -7.934444284195e-02 -7.972075225095e-02 --8.003066249945e-02 -8.027423151132e-02 -8.045156927739e-02 -8.056283754771e-02 --8.060824948509e-02 -8.058806928051e-02 -8.050261173076e-02 -8.035224177872e-02 --8.013737401696e-02 -7.985847215488e-02 -7.951604845026e-02 -7.911066310550e-02 --7.864292362930e-02 -7.811348416438e-02 -7.752304478185e-02 -7.687235074284e-02 --7.616219172820e-02 -7.539340103691e-02 -7.456685475382e-02 -7.368347088773e-02 --7.274420848031e-02 -7.175006668678e-02 -7.070208382918e-02 -6.960133642298e-02 --6.844893817790e-02 -6.724603897383e-02 -6.599382381271e-02 -6.469351174720e-02 --6.334635478716e-02 -6.195363678477e-02 -6.051667229927e-02 -5.903680544223e-02 --5.751540870432e-02 -5.595388176459e-02 -5.435365028318e-02 -5.271616467847e-02 --5.104289888967e-02 -4.933534912586e-02 -4.759503260246e-02 -4.582348626622e-02 --4.402226550965e-02 -4.219294287602e-02 -4.033710675585e-02 -3.845636007610e-02 --3.655231898285e-02 -3.462661151875e-02 -3.268087629616e-02 -3.071676116695e-02 --2.873592189021e-02 -2.674002079869e-02 -2.473072546512e-02 -2.270970736940e-02 --2.067864056774e-02 -1.863920036469e-02 -1.659306198916e-02 -1.454189927534e-02 --1.248738334968e-02 -1.043118132471e-02 -8.374955000901e-03 -6.320359577409e-03 --4.269042372712e-03 -2.222641556095e-03 -1.827848909305e-04 1.848911509319e-03 -3.870844411453e-03 5.881424678326e-03 7.879078469210e-03 9.862248423814e-03 -1.182939482914e-02 1.377899676827e-02 1.570955325036e-02 1.761958432087e-02 -1.950763215140e-02 2.137226210821e-02 2.321206379883e-02 2.502565209581e-02 -2.681166813713e-02 2.856878030232e-02 3.029568516389e-02 3.199110841311e-02 -3.365380575983e-02 3.528256380540e-02 3.687620088838e-02 3.843356790231e-02 -3.995354908502e-02 4.143506277906e-02 4.287706216257e-02 4.427853595036e-02 -4.563850906446e-02 4.695604327404e-02 4.823023780406e-02 4.946022991235e-02 -5.064519543483e-02 5.178434929852e-02 5.287694600197e-02 5.392228006297e-02 -5.491968643324e-02 5.586854087979e-02 5.676826033303e-02 5.761830320108e-02 -5.841816965056e-02 5.916740185339e-02 5.986558419979e-02 6.051234347725e-02 -6.110734901553e-02 6.165031279764e-02 6.214098953688e-02 6.257917671994e-02 -6.296471461614e-02 6.329748625293e-02 6.357741735781e-02 6.380447626677e-02 -6.397867379938e-02 6.410006310095e-02 6.416873945173e-02 6.418484004354e-02 -6.414854372412e-02 6.406007070949e-02 6.391968226458e-02 6.372768035254e-02 -6.348440725319e-02 6.319024515079e-02 6.284561569178e-02 6.245097951280e-02 -6.200683573945e-02 6.151372145639e-02 6.097221114917e-02 6.038291611833e-02 -5.974648386642e-02 5.906359745837e-02 5.833497485590e-02 5.756136822652e-02 -5.674356322773e-02 5.588237826720e-02 5.497866373929e-02 5.403330123899e-02 -5.304720275355e-02 5.202130983283e-02 5.095659273893e-02 4.985404957584e-02 -4.871470539995e-02 4.753961131201e-02 4.632984353155e-02 4.508650245428e-02 -4.381071169345e-02 4.250361710595e-02 4.116638580389e-02 3.980020515251e-02 -3.840628175531e-02 3.698584042714e-02 3.554012315624e-02 3.407038805589e-02 -3.257790830667e-02 3.106397109021e-02 2.952987651514e-02 2.797693653625e-02 -2.640647386774e-02 2.481982089132e-02 2.321831856014e-02 2.160331529936e-02 -1.997616590430e-02 1.833823043703e-02 1.669087312218e-02 1.503546124304e-02 -1.337336403858e-02 1.170595160250e-02 1.003459378496e-02 8.360659098012e-03 -6.685513625474e-03 5.010519938161e-03 3.337036015286e-03 1.666414172876e-03 -1.228805779297e-14 -1.660868696267e-03 -3.314862936615e-03 -4.960663604753e-03 --6.596962471817e-03 - Type L N - 0 1 5 -0.000000000000e+00 1.131608597450e-02 2.262434588731e-02 3.391696012005e-02 -4.518612193521e-02 5.642404390216e-02 6.762296430584e-02 7.877515353239e-02 -8.987292042600e-02 1.009086186114e-01 1.118746527759e-01 1.227634849063e-01 -1.335676404736e-01 1.442797145617e-01 1.548923779332e-01 1.653983830274e-01 -1.757905698857e-01 1.860618719981e-01 1.962053220662e-01 2.062140576774e-01 -2.160813268855e-01 2.258004936922e-01 2.353650434252e-01 2.447685880078e-01 -2.540048711153e-01 2.630677732140e-01 2.719513164776e-01 2.806496695782e-01 -2.891571523448e-01 2.974682402893e-01 3.055775689917e-01 3.134799383442e-01 -3.211703166482e-01 3.286438445616e-01 3.358958388932e-01 3.429217962401e-01 -3.497173964652e-01 3.562785060130e-01 3.626011810586e-01 3.686816704895e-01 -3.745164187161e-01 3.801020683092e-01 3.854354624625e-01 3.905136472772e-01 -3.953338738681e-01 3.998936002880e-01 4.041904932705e-01 4.082224297880e-01 -4.119874984258e-01 4.154840005689e-01 4.187104514033e-01 4.216655807285e-01 -4.243483335826e-01 4.267578706790e-01 4.288935686542e-01 4.307550201275e-01 -4.323420335719e-01 4.336546329976e-01 4.346930574476e-01 4.354577603067e-01 -4.359494084250e-01 4.361688810566e-01 4.361172686140e-01 4.357958712415e-01 -4.352061972076e-01 4.343499611183e-01 4.332290819538e-01 4.318456809303e-01 -4.302020791890e-01 4.283007953151e-01 4.261445426886e-01 4.237362266710e-01 -4.210789416280e-01 4.181759677951e-01 4.150307679855e-01 4.116469841455e-01 -4.080284337610e-01 4.041791061172e-01 4.001031584169e-01 3.958049117592e-01 -3.912888469852e-01 3.865596003913e-01 3.816219593178e-01 3.764808576141e-01 -3.711413709872e-01 3.656087122358e-01 3.598882263766e-01 3.539853856660e-01 -3.479057845226e-01 3.416551343555e-01 3.352392583024e-01 3.286640858835e-01 -3.219356475761e-01 3.150600693145e-01 3.080435669202e-01 3.008924404692e-01 -2.936130685997e-01 2.862119027669e-01 2.786954614494e-01 2.710703243135e-01 -2.633431263400e-01 2.555205519196e-01 2.476093289215e-01 2.396162227424e-01 -2.315480303388e-01 2.234115742511e-01 2.152136966224e-01 2.069612532192e-01 -1.986611074585e-01 1.903201244474e-01 1.819451650406e-01 1.735430799202e-01 -1.651207037049e-01 1.566848490926e-01 1.482423010418e-01 1.397998109982e-01 -1.313640911704e-01 1.229418088597e-01 1.145395808512e-01 1.061639678681e-01 -9.782146909677e-02 8.951851678618e-02 8.126147092635e-02 7.305661401127e-02 -6.491014589029e-02 5.682817871276e-02 4.881673197012e-02 4.088172764003e-02 -3.302898543646e-02 2.526421816997e-02 1.759302722215e-02 1.002089813804e-02 -2.553196340239e-03 -4.804837031551e-03 -1.204808915229e-02 -1.917157941109e-02 --2.617046317543e-02 -3.304003541677e-02 -3.977573419486e-02 -4.637314399786e-02 --5.282799893548e-02 -5.913618578289e-02 -6.529374687281e-02 -7.129688283372e-02 --7.714195517203e-02 -8.282548869637e-02 -8.834417378226e-02 -9.369486847552e-02 --9.887460043301e-02 -1.038805686994e-01 -1.087101453191e-01 -1.133608767817e-01 --1.178304853011e-01 -1.221168699272e-01 -1.262181074889e-01 -1.301324533702e-01 --1.338583421169e-01 -1.373943878753e-01 -1.407393846628e-01 -1.438923064706e-01 --1.468523071991e-01 -1.496187204267e-01 -1.521910590124e-01 -1.545690145341e-01 --1.567524565627e-01 -1.587414317735e-01 -1.605361628975e-01 -1.621370475121e-01 --1.635446566748e-01 -1.647597334006e-01 -1.657831909859e-01 -1.666161111807e-01 --1.672597422110e-01 -1.677154966549e-01 -1.679849491738e-01 -1.680698341019e-01 --1.679720428978e-01 -1.676936214587e-01 -1.672367673035e-01 -1.666038266246e-01 --1.657972912149e-01 -1.648197952712e-01 -1.636741120781e-01 -1.623631505767e-01 --1.608899518213e-01 -1.592576853276e-01 -1.574696453170e-01 -1.555292468607e-01 --1.534400219275e-01 -1.512056153403e-01 -1.488297806440e-01 -1.463163758909e-01 --1.436693593467e-01 -1.408927851222e-01 -1.379907987350e-01 -1.349676326058e-01 --1.318276014938e-01 -1.285750978758e-01 -1.252145872745e-01 -1.217506035393e-01 --1.181877440854e-01 -1.145306650961e-01 -1.107840766920e-01 -1.069527380732e-01 --1.030414526384e-01 -9.905506308635e-02 -9.499844650423e-02 -9.087650944734e-02 --8.669418301591e-02 -8.245641793294e-02 -7.816817962834e-02 -7.383444333396e-02 --6.946018919425e-02 -6.505039739737e-02 -6.061004333125e-02 -5.614409276937e-02 --5.165749709074e-02 -4.715518853873e-02 -4.264207552300e-02 -3.812303796931e-02 --3.360292272113e-02 -2.908653899773e-02 -2.457865391267e-02 -2.008398805706e-02 --1.560721115144e-02 -1.115293777044e-02 -6.725723143991e-03 -2.330059038968e-03 -2.029630275113e-03 6.348991972642e-03 1.062374852726e-02 1.484970147256e-02 -1.902273506488e-02 2.313881984495e-02 2.719401609537e-02 3.118447719087e-02 -3.510645283865e-02 3.895629220596e-02 4.273044693225e-02 4.642547402371e-02 -5.003803862743e-02 5.356491668336e-02 5.700299745172e-02 6.034928591393e-02 -6.360090504540e-02 6.675509795830e-02 6.980922991283e-02 7.276079019564e-02 -7.560739386397e-02 7.834678335454e-02 8.097682995608e-02 8.349553514470e-02 -8.590103178130e-02 8.819158517063e-02 9.036559398130e-02 9.242159102671e-02 -9.435824390655e-02 9.617435550900e-02 9.786886437367e-02 9.944084491560e-02 -1.008895075107e-01 1.022141984430e-01 1.034143997153e-01 1.044897287222e-01 -1.054399377883e-01 1.062649135721e-01 1.069646763363e-01 1.075393790860e-01 -1.079893065771e-01 1.083148741956e-01 1.085166267094e-01 1.085952368958e-01 -1.085515040450e-01 1.083863523425e-01 1.081008291330e-01 1.076961030668e-01 -1.071734621332e-01 1.065343115810e-01 1.057801717303e-01 1.049126756787e-01 -1.039335669027e-01 1.028446967595e-01 1.016480218911e-01 1.003456015333e-01 -9.893959473422e-02 9.743225748455e-02 9.582593976280e-02 9.412308249972e-02 -9.232621446479e-02 9.043794907856e-02 8.846098115432e-02 8.639808357289e-02 -8.425210389427e-02 8.202596090977e-02 7.972264113862e-02 7.734519527280e-02 -7.489673457404e-02 7.238042722697e-02 6.979949465221e-02 6.715720778367e-02 -6.445688331376e-02 6.170187991076e-02 5.889559441230e-02 5.604145799901e-02 -5.314293235233e-02 5.020350580069e-02 4.722668945790e-02 4.421601335796e-02 -4.117502259017e-02 3.810727343873e-02 3.501632953060e-02 3.190575799576e-02 -2.877912564368e-02 2.563999516003e-02 2.249192132735e-02 1.933844727360e-02 -1.618310075232e-02 1.302939045825e-02 9.880802381798e-03 6.740796206401e-03 -3.612801751939e-03 5.002154679701e-04 -2.593603019889e-03 -5.665334307046e-03 --8.711702547183e-03 -1.172947872647e-02 -1.471548387155e-02 -1.766659218835e-02 --2.057973412858e-02 -2.345189938120e-02 -2.628013978594e-02 -2.906157216621e-02 --3.179338107882e-02 -3.447282147796e-02 -3.709722129101e-02 -3.966398390395e-02 --4.217059055408e-02 -4.461460262801e-02 -4.699366386284e-02 -4.930550244881e-02 --5.154793303149e-02 -5.371885861187e-02 -5.581627234292e-02 -5.783825922111e-02 --5.978299767146e-02 -6.164876102525e-02 -6.343391888884e-02 -6.513693840318e-02 --6.675638539263e-02 -6.829092540280e-02 -6.973932462656e-02 -7.110045071781e-02 --7.237327349267e-02 -7.355686551778e-02 -7.465040258570e-02 -7.565316407726e-02 --7.656453321111e-02 -7.738399718063e-02 -7.811114717855e-02 -7.874567830983e-02 --7.928738939323e-02 -7.973618265249e-02 -8.009206329770e-02 -8.035513899797e-02 --8.052561924636e-02 -8.060381461822e-02 -8.059013592418e-02 -8.048509325925e-02 --8.028929494936e-02 -8.000344639707e-02 -7.962834882789e-02 -7.916489793929e-02 --7.861408245400e-02 -7.797698257970e-02 -7.725476837709e-02 -7.644869803855e-02 --7.556011607957e-02 -7.459045144523e-02 -7.354121553423e-02 -7.241400014284e-02 --7.121047533135e-02 -6.993238721568e-02 -6.858155568678e-02 -6.715987206059e-02 --6.566929666148e-02 -6.411185634180e-02 -6.248964194082e-02 -6.080480568572e-02 --5.905955853789e-02 -5.725616748755e-02 -5.539695279976e-02 -5.348428521517e-02 --5.152058310843e-02 -4.950830960781e-02 -4.744996967904e-02 -4.534810717687e-02 --4.320530186742e-02 -4.102416642497e-02 -3.880734340620e-02 -3.655750220549e-02 --3.427733599455e-02 -3.196955864970e-02 -2.963690167025e-02 -2.728211109136e-02 --2.490794439461e-02 -2.251716741974e-02 -2.011255128093e-02 -1.769686929077e-02 --1.527289389540e-02 -1.284339362394e-02 -1.041113005559e-02 -7.978854807452e-03 --5.549306546438e-03 -3.125208028220e-03 -7.092631664470e-04 1.695845864775e-03 -4.087461492122e-03 6.462953565054e-03 8.819722135684e-03 1.115520019365e-02 -1.346685635326e-02 1.575219749006e-02 1.800877132436e-02 2.023416894894e-02 -2.242602729853e-02 2.458203155853e-02 2.669991751071e-02 2.877747381347e-02 -3.081254421454e-02 3.280302969388e-02 3.474689053486e-02 3.664214832161e-02 -3.848688786081e-02 4.027925902594e-02 4.201747852249e-02 4.369983157235e-02 -4.532467351604e-02 4.689043133112e-02 4.839560506571e-02 4.983876918571e-02 -5.121857383468e-02 5.253374600533e-02 5.378309062162e-02 5.496549153077e-02 -5.607991240437e-02 5.712539754790e-02 5.810107261830e-02 5.900614524896e-02 -5.983990558203e-02 6.060172670756e-02 6.129106500969e-02 6.190746041949e-02 -6.245053657483e-02 6.292000088737e-02 6.331564451689e-02 6.363734225340e-02 -6.388505230756e-02 6.405881600989e-02 6.415875741952e-02 6.418508284324e-02 -6.413808026568e-02 6.401811869168e-02 6.382564740175e-02 6.356119512194e-02 -6.322536910921e-02 6.281885415376e-02 6.234241149954e-02 6.179687768463e-02 -6.118316330299e-02 6.050225168916e-02 5.975519752777e-02 5.894312538955e-02 -5.806722819583e-02 5.712876561344e-02 5.612906238197e-02 5.506950657560e-02 -5.395154780156e-02 5.277669533750e-02 5.154651620996e-02 5.026263321638e-02 -4.892672289299e-02 4.754051343091e-02 4.610578254317e-02 4.462435528498e-02 -4.309810182984e-02 4.152893520430e-02 3.991880898370e-02 3.826971495185e-02 -3.658368072722e-02 3.486276735836e-02 3.310906689145e-02 3.132469991255e-02 -2.951181306762e-02 2.767257656281e-02 2.580918164815e-02 2.392383808727e-02 -2.201877161610e-02 2.009622139330e-02 1.815843744539e-02 1.620767810928e-02 -1.424620747515e-02 1.227629283244e-02 1.030020212175e-02 8.320201395472e-03 -6.338552289945e-03 4.357509511830e-03 2.379318341479e-03 4.062121559663e-04 --1.559590025523e-03 -3.515885971338e-03 -5.460492639420e-03 -7.391248549237e-03 --9.306016121056e-03 -1.120268398010e-02 -1.307916922313e-02 -1.493341964515e-02 --1.676341592381e-02 -1.856717375928e-02 -2.034274596747e-02 -2.208822452426e-02 --2.380174255882e-02 -2.548147629387e-02 -2.712564693097e-02 -2.873252247900e-02 --3.030041952378e-02 -3.182770493742e-02 -3.331279752537e-02 -3.475416960976e-02 --3.615034854749e-02 -3.749991818145e-02 -3.880152022372e-02 -4.005385556928e-02 --4.125568553904e-02 -4.240583305113e-02 -4.350318371930e-02 -4.454668687749e-02 --4.553535652978e-02 -4.646827222467e-02 -4.734457985331e-02 -4.816349237079e-02 --4.892429044002e-02 -4.962632299781e-02 -5.026900774276e-02 -5.085183154457e-02 --5.137435077474e-02 -5.183619155846e-02 -5.223704994773e-02 -5.257669201567e-02 --5.285495387236e-02 -5.307174160227e-02 -5.322703112373e-02 -5.332086797082e-02 --5.335336699815e-02 -5.332471200918e-02 -5.323515530871e-02 -5.308501718019e-02 --5.287468528896e-02 -5.260461401196e-02 -5.227532369517e-02 -5.188739983982e-02 --5.144149221829e-02 -5.093831392121e-02 -5.037864033685e-02 -4.976330806421e-02 --4.909321376127e-02 -4.836931292985e-02 -4.759261863866e-02 -4.676420018617e-02 --4.588518170495e-02 -4.495674070927e-02 -4.398010658775e-02 -4.295655904291e-02 --4.188742647948e-02 -4.077408434358e-02 -3.961795341459e-02 -3.842049805192e-02 --3.718322439869e-02 -3.590767854449e-02 -3.459544464945e-02 -3.324814303171e-02 --3.186742822067e-02 -3.045498697827e-02 -2.901253629051e-02 -2.754182133175e-02 --2.604461340386e-02 -2.452270785294e-02 -2.297792196573e-02 -2.141209284821e-02 --1.982707528892e-02 -1.822473960925e-02 -1.660696950330e-02 -1.497565986970e-02 --1.333271463772e-02 -1.168004459040e-02 -1.001956518685e-02 -8.353194386261e-03 --6.682850476172e-03 -5.010449907207e-03 -3.337905136822e-03 -1.667122484388e-03 -4.806801137936e-15 1.661574650702e-03 3.315726283262e-03 4.960594270583e-03 -6.594334596110e-03 - Type L N - 0 1 6 -0.000000000000e+00 1.306435487339e-02 2.611666663548e-02 3.914490539118e-02 -5.213706766219e-02 6.508118955583e-02 7.796535988669e-02 9.077773323521e-02 -1.035065429278e-01 1.161401139228e-01 1.286668755872e-01 1.410753743480e-01 -1.533542862052e-01 1.654924290884e-01 1.774787750453e-01 1.893024622457e-01 -2.009528067876e-01 2.124193142911e-01 2.236916912658e-01 2.347598562401e-01 -2.456139506364e-01 2.562443493818e-01 2.666416712409e-01 2.767967888577e-01 -2.867008384964e-01 2.963452294685e-01 3.057216532352e-01 3.148220921754e-01 -3.236388280080e-01 3.321644498590e-01 3.403918619651e-01 3.483142910027e-01 -3.559252930366e-01 3.632187600783e-01 3.701889262472e-01 3.768303735283e-01 -3.831380371192e-01 3.891072103604e-01 3.947335492439e-01 4.000130764958e-01 -4.049421852264e-01 4.095176421468e-01 4.137365903460e-01 4.175965516284e-01 -4.210954284066e-01 4.242315051508e-01 4.270034493913e-01 4.294103122749e-01 -4.314515286748e-01 4.331269168547e-01 4.344366776877e-01 4.353813934324e-01 -4.359620260680e-01 4.361799151907e-01 4.360367754759e-01 4.355346937086e-01 -4.346761253872e-01 4.334638909055e-01 4.319011713177e-01 4.299915036930e-01 -4.277387760660e-01 4.251472219890e-01 4.222214146949e-01 4.189662608771e-01 -4.153869940960e-01 4.114891678200e-01 4.072786481099e-01 4.027616059573e-01 -3.979445092866e-01 3.928341146300e-01 3.874374584882e-01 3.817618483862e-01 -3.758148536366e-01 3.696042958225e-01 3.631382390110e-01 3.564249797115e-01 -3.494730365898e-01 3.422911399527e-01 3.348882210151e-01 3.272734009641e-01 -3.194559798333e-01 3.114454252015e-01 3.032513607307e-01 2.948835545560e-01 -2.863519075439e-01 2.776664414321e-01 2.688372868672e-01 2.598746713530e-01 -2.507889071261e-01 2.415903789735e-01 2.322895320066e-01 2.228968594066e-01 -2.134228901575e-01 2.038781767810e-01 1.942732830871e-01 1.846187719580e-01 -1.749251931779e-01 1.652030713240e-01 1.554628937345e-01 1.457150985660e-01 -1.359700629568e-01 1.262380913092e-01 1.165294037047e-01 1.068541244662e-01 -9.722227088119e-02 8.764374209841e-02 7.812830821191e-02 6.868559954470e-02 -5.932509614494e-02 5.005611750674e-02 4.088781252752e-02 3.182914971350e-02 -2.288890764466e-02 1.407566570989e-02 5.397795123031e-03 -3.136549770186e-03 --1.151943988454e-02 -1.974317947772e-02 -2.780031391377e-02 -3.568363709926e-02 --4.338619858388e-02 -5.090131031818e-02 -5.822255306105e-02 -6.534378243043e-02 --7.225913459098e-02 -7.896303157307e-02 -8.545018621773e-02 -9.171560674295e-02 --9.775460092705e-02 -1.035627799053e-01 -1.091360615764e-01 -1.144706736171e-01 --1.195631561007e-01 -1.244103637196e-01 -1.290094676103e-01 -1.333579567794e-01 --1.374536391308e-01 -1.412946420949e-01 -1.448794128598e-01 -1.482067182070e-01 --1.512756439514e-01 -1.540855939907e-01 -1.566362889646e-01 -1.589277645282e-01 --1.609603692434e-01 -1.627347620927e-01 -1.642519096191e-01 -1.655130826990e-01 --1.665198529519e-01 -1.672740887948e-01 -1.677779511462e-01 -1.680338887880e-01 --1.680446333916e-01 -1.678131942169e-01 -1.673428524918e-01 -1.666371554806e-01 --1.656999102510e-01 -1.645351771481e-01 -1.631472629858e-01 -1.615407139648e-01 --1.597203083281e-01 -1.576910487641e-01 -1.554581545684e-01 -1.530270535758e-01 --1.504033738726e-01 -1.475929353025e-01 -1.446017407767e-01 -1.414359674007e-01 --1.381019574301e-01 -1.346062090676e-01 -1.309553671141e-01 -1.271562134863e-01 --1.232156576135e-01 -1.191407267273e-01 -1.149385560561e-01 -1.106163789389e-01 --1.061815168697e-01 -1.016413694882e-01 -9.700340452687e-02 -9.227514773097e-02 --8.746417276188e-02 -8.257809109863e-02 -7.762454195008e-02 -7.261118219088e-02 --6.754567633421e-02 -6.243568655420e-02 -5.728886277065e-02 -5.211283280875e-02 --4.691519264627e-02 -4.170349676043e-02 -3.648524858659e-02 -3.126789110070e-02 --2.605879753717e-02 -2.086526225366e-02 -1.569449175394e-02 -1.055359587991e-02 --5.449579183397e-03 -3.893324881042e-04 4.620375347998e-03 9.572905460209e-03 -1.446175678497e-02 1.928057363890e-02 2.402315306027e-02 2.868345190432e-02 -3.325559368438e-02 3.773387515110e-02 4.211277260239e-02 4.638694791703e-02 -5.055125430561e-02 5.460074177240e-02 5.853066228250e-02 6.233647462903e-02 -6.601384899525e-02 6.955867120733e-02 7.296704667358e-02 7.623530400663e-02 -7.935999832536e-02 8.233791423370e-02 8.516606847438e-02 8.784171225530e-02 -9.036233324761e-02 9.272565725416e-02 9.492964954811e-02 9.697251588137e-02 -9.885270316357e-02 1.005688998121e-01 1.021200357744e-01 1.035052822252e-01 -1.047240509388e-01 1.057759933412e-01 1.066609992436e-01 1.073791952611e-01 -1.079309429206e-01 1.083168364614e-01 1.085377003347e-01 1.085945864040e-01 -1.084887708560e-01 1.082217508230e-01 1.077952407272e-01 1.072111683502e-01 -1.064716706363e-01 1.055790892357e-01 1.045359657956e-01 1.033450370074e-01 -1.020092294159e-01 1.005316540022e-01 9.891560054563e-02 9.716453177567e-02 -9.528207732202e-02 9.327202747256e-02 9.113832674840e-02 8.888506730612e-02 -8.651648217692e-02 8.403693835288e-02 8.145092973060e-02 7.876306992271e-02 -7.597808494766e-02 7.310080580865e-02 7.013616097242e-02 6.708916875864e-02 -6.396492965110e-02 6.076861854143e-02 5.750547691656e-02 5.418080500093e-02 -5.079995386454e-02 4.736831750786e-02 4.389132493471e-02 4.037443222410e-02 -3.682311461199e-02 3.324285859387e-02 2.963915405900e-02 2.601748646701e-02 -2.238332907745e-02 1.874213524294e-02 1.509933077596e-02 1.146030639992e-02 -7.830410294093e-03 4.214940742671e-03 6.191388973499e-04 -2.951818336941e-03 --6.492825283966e-03 -9.998854336717e-03 -1.346496264776e-02 -1.688629866088e-02 --2.025810847566e-02 -2.357574203711e-02 -2.683465914250e-02 -3.003043525802e-02 --3.315876713809e-02 -3.621547824051e-02 -3.919652393092e-02 -4.209799647040e-02 --4.491612978031e-02 -4.764730397885e-02 -5.028804968423e-02 -5.283505207952e-02 --5.528515473476e-02 -5.763536318224e-02 -5.988284824107e-02 -6.202494908794e-02 --6.405917607067e-02 -6.598321326225e-02 -6.779492075297e-02 -6.949233667869e-02 --7.107367898390e-02 -7.253734691836e-02 -7.388192226651e-02 -7.510617030942e-02 --7.620904051922e-02 -7.718966698639e-02 -7.804736858064e-02 -7.878164884658e-02 --7.939219563573e-02 -7.987888047645e-02 -8.024175768446e-02 -8.048106321611e-02 --8.059721326755e-02 -8.059080262311e-02 -8.046260275631e-02 -8.021355968764e-02 --7.984479160329e-02 -7.935758623941e-02 -7.875339803686e-02 -7.803384507161e-02 --7.720070576629e-02 -7.625591538864e-02 -7.520156234308e-02 -7.403988426140e-02 --7.277326389956e-02 -7.140422484702e-02 -6.993542705594e-02 -6.836966219748e-02 --6.670984885249e-02 -6.495902754461e-02 -6.312035562343e-02 -6.119710200580e-02 --5.919264178361e-02 -5.711045070636e-02 -5.495409954702e-02 -5.272724835986e-02 --5.043364063898e-02 -4.807709738652e-02 -4.566151109925e-02 -4.319083968290e-02 --4.066910030299e-02 -3.810036318162e-02 -3.548874534910e-02 -3.283840435983e-02 --3.015353198161e-02 -2.743834786743e-02 -2.469709321918e-02 -2.193402445223e-02 --1.915340687012e-02 -1.635950835841e-02 -1.355659310658e-02 -1.074891536714e-02 --7.940713260454e-03 -5.136202634309e-03 -2.339570986595e-03 4.450285402837e-04 -3.213483084986e-03 5.961725904616e-03 8.685742115878e-03 1.138157433216e-02 -1.404532818887e-02 1.667317774958e-02 1.926137078571e-02 2.180623392263e-02 -2.430417764549e-02 2.675170115799e-02 2.914539708798e-02 3.148195603348e-02 -3.375817094353e-02 3.597094132816e-02 3.811727729214e-02 4.019430338751e-02 -4.219926228014e-02 4.412951822582e-02 4.598256035168e-02 4.775600573917e-02 -4.944760230483e-02 5.105523147584e-02 5.257691065711e-02 5.401079548751e-02 -5.535518188276e-02 5.660850786304e-02 5.776935516357e-02 5.883645062692e-02 -5.980866737579e-02 6.068502576575e-02 6.146469411743e-02 6.214698922805e-02 -6.273137666260e-02 6.321747082525e-02 6.360503481166e-02 6.389398004370e-02 -6.408436568777e-02 6.417639785874e-02 6.417042861146e-02 6.406695472236e-02 -6.386661626384e-02 6.357019497431e-02 6.317861242733e-02 6.269292800329e-02 -6.211433666749e-02 6.144416655872e-02 6.068387639269e-02 5.983505268488e-02 -5.889940679768e-02 5.787877181697e-02 5.677509926326e-02 5.559045564315e-02 -5.432701884668e-02 5.298707439657e-02 5.157301155549e-02 5.008731929761e-02 -4.853258215106e-02 4.691147591774e-02 4.522676327743e-02 4.348128928314e-02 -4.167797675461e-02 3.981982157740e-02 3.790988791463e-02 3.595130333891e-02 -3.394725389190e-02 3.190097907909e-02 2.981576680733e-02 2.769494827291e-02 -2.554189280784e-02 2.336000269210e-02 2.115270793956e-02 1.892346106549e-02 -1.667573184329e-02 1.441300205826e-02 1.213876026616e-02 9.856496564166e-03 -7.569697382000e-03 5.281840300680e-03 2.996388906500e-03 7.167876876316e-04 --1.553543019300e-03 -3.811212025433e-03 -6.052862221539e-03 -8.275175438559e-03 --1.047487722991e-02 -1.264874156886e-02 -1.479359545432e-02 -1.690632341879e-02 --1.898387193196e-02 -2.102325369414e-02 -2.302155181347e-02 -2.497592386127e-02 --2.688360580001e-02 -2.874191577864e-02 -3.054825779020e-02 -3.230012518684e-02 --3.399510404762e-02 -3.563087639474e-02 -3.720522325405e-02 -3.871602755584e-02 --4.016127687243e-02 -4.153906598894e-02 -4.284759930434e-02 -4.408519305964e-02 --4.525027739085e-02 -4.634139820416e-02 -4.735721887142e-02 -4.829652174398e-02 --4.915820948344e-02 -4.994130620809e-02 -5.064495845388e-02 -5.126843594949e-02 --5.181113220482e-02 -5.227256491288e-02 -5.265237616522e-02 -5.295033248118e-02 --5.316632465183e-02 -5.330036739927e-02 -5.335259885286e-02 -5.332327984343e-02 --5.321279301767e-02 -5.302164177426e-02 -5.275044902438e-02 -5.239995577879e-02 --5.197101956449e-02 -5.146461267378e-02 -5.088182024900e-02 -5.022383820648e-02 --4.949197100331e-02 -4.868762925081e-02 -4.781232717897e-02 -4.686767995599e-02 --4.585540086759e-02 -4.477729836070e-02 -4.363527295655e-02 -4.243131403809e-02 --4.116749651707e-02 -3.984597738615e-02 -3.846899216165e-02 -3.703885122248e-02 --3.555793605128e-02 -3.402869538353e-02 -3.245364127086e-02 -3.083534506452e-02 --2.917643332557e-02 -2.747958366783e-02 -2.574752054024e-02 -2.398301095503e-02 --2.218886016829e-02 -2.036790731948e-02 -1.852302103661e-02 -1.665709501370e-02 --1.477304356717e-02 -1.287379717797e-02 -1.096229802598e-02 -9.041495523515e-03 --7.114341854431e-03 -5.183787525630e-03 -3.252776937392e-03 -1.324243979154e-03 -5.988923428224e-04 2.513732239494e-03 4.417399428451e-03 6.307045372497e-03 -8.179853461227e-03 1.003304312959e-02 1.186387390754e-02 1.366964939490e-02 -1.544772115590e-02 1.719549252772e-02 1.891042233785e-02 2.059002852479e-02 -2.223189165726e-02 2.383365834693e-02 2.539304454988e-02 2.690783875242e-02 -2.837590503673e-02 2.979518602233e-02 3.116370567930e-02 3.247957200954e-02 -3.374097959257e-02 3.494621199242e-02 3.609364402262e-02 3.718174386634e-02 -3.820907504899e-02 3.917429826088e-02 4.007617302772e-02 4.091355922698e-02 -4.168541844837e-02 4.239081519695e-02 4.302891793761e-02 4.359899997989e-02 -4.410044020231e-02 4.453272361585e-02 4.489544176600e-02 4.518829297361e-02 -4.541108241454e-02 4.556372203857e-02 4.564623032835e-02 4.565873189906e-02 -4.560145694016e-02 4.547474050043e-02 4.527902161794e-02 4.501484229685e-02 -4.468284633287e-02 4.428377798994e-02 4.381848053034e-02 4.328789460109e-02 -4.269305647939e-02 4.203509618038e-02 4.131523543030e-02 4.053478550869e-02 -3.969514496323e-02 3.879779720101e-02 3.784430796039e-02 3.683632266746e-02 -3.577556368157e-02 3.466382743431e-02 3.350298146672e-02 3.229496136929e-02 -3.104176762993e-02 2.974546239462e-02 2.840816614615e-02 2.703205430605e-02 -2.561935376507e-02 2.417233934768e-02 2.269333021603e-02 2.118468621912e-02 -1.964880419257e-02 1.808811421498e-02 1.650507582642e-02 1.490217421497e-02 -1.328191637703e-02 1.164682725739e-02 9.999445874710e-03 8.342321438527e-03 -6.678009463363e-03 5.009067886003e-03 3.338053191631e-03 1.667516554664e-03 -3.951348312058e-15 -1.661967409577e-03 -3.315873354289e-03 -4.959226000835e-03 --6.589557703069e-03 - Type L N - 0 1 7 -0.000000000000e+00 1.481154861308e-02 2.960554632854e-02 4.436446700681e-02 -5.907083398651e-02 7.370724472844e-02 8.825639534585e-02 1.027011049831e-01 -1.170243400055e-01 1.312092379632e-01 1.452391312917e-01 1.590975707145e-01 -1.727683483093e-01 1.862355202054e-01 1.994834288749e-01 2.124967249857e-01 -2.252603887824e-01 2.377597509611e-01 2.499805130092e-01 2.619087669759e-01 -2.735310146468e-01 2.848341860909e-01 2.958056575531e-01 3.064332686659e-01 -3.167053389525e-01 3.266106835996e-01 3.361386284722e-01 3.452790243530e-01 -3.540222603804e-01 3.623592766693e-01 3.702815760941e-01 3.777812352165e-01 -3.848509143445e-01 3.914838667054e-01 3.976739467219e-01 4.034156173794e-01 -4.087039566734e-01 4.135346631295e-01 4.179040603889e-01 4.218091008526e-01 -4.252473683813e-01 4.282170800487e-01 4.307170869449e-01 4.327468740333e-01 -4.343065590604e-01 4.353968905231e-01 4.360192446984e-01 4.361756217411e-01 -4.358686408580e-01 4.351015345677e-01 4.338781420568e-01 4.322029016443e-01 -4.300808423681e-01 4.275175747081e-01 4.245192804629e-01 4.210927017968e-01 -4.172451294761e-01 4.129843903160e-01 4.083188338570e-01 4.032573182966e-01 -3.978091956961e-01 3.919842964912e-01 3.857929133291e-01 3.792457842606e-01 -3.723540753147e-01 3.651293624839e-01 3.575836131510e-01 3.497291669865e-01 -3.415787163485e-01 3.331452862170e-01 3.244422136959e-01 3.154831271140e-01 -3.062819247611e-01 2.968527532918e-01 2.872099858331e-01 2.773681998293e-01 -2.673421546616e-01 2.571467690765e-01 2.467970984597e-01 2.363083119919e-01 -2.256956697224e-01 2.149744995959e-01 2.041601744705e-01 1.932680891616e-01 -1.823136375483e-01 1.713121897780e-01 1.602790696047e-01 1.492295318961e-01 -1.381787403451e-01 1.271417454186e-01 1.161334625794e-01 1.051686508134e-01 -9.426189149487e-02 8.342756762269e-02 7.267984345857e-02 6.203264459791e-02 -5.149963850351e-02 4.109421553098e-02 3.082947047420e-02 2.071818465801e-02 -1.077280860452e-02 1.005445298223e-03 -8.572165925815e-03 -1.794866484750e-02 --2.711308515908e-02 -3.605486857337e-02 -4.476387822326e-02 -5.323041133405e-02 --6.144521115129e-02 -6.939947810838e-02 -7.708488021916e-02 -8.449356268224e-02 --9.161815668497e-02 -9.845178739657e-02 -1.049880811410e-01 -1.112211717417e-01 --1.171457060316e-01 -1.227568485239e-01 -1.280502852381e-01 -1.330222266814e-01 --1.376694099826e-01 -1.419891001798e-01 -1.459790906629e-01 -1.496377027758e-01 --1.529637845807e-01 -1.559567087919e-01 -1.586163698860e-01 -1.609431803967e-01 --1.629380664048e-01 -1.646024622337e-01 -1.659383043636e-01 -1.669480245779e-01 --1.676345423563e-01 -1.680012565312e-01 -1.680520362242e-01 -1.677912110810e-01 --1.672235608253e-01 -1.663543041499e-01 -1.651890869686e-01 -1.637339700507e-01 --1.619954160607e-01 -1.599802760282e-01 -1.576957752738e-01 -1.551494988150e-01 --1.523493762806e-01 -1.493036663599e-01 -1.460209408153e-01 -1.425100680861e-01 --1.387801965141e-01 -1.348407372190e-01 -1.307013466549e-01 -1.263719088780e-01 --1.218625175567e-01 -1.171834577541e-01 -1.123451875168e-01 -1.073583192982e-01 --1.022336012511e-01 -9.698189841972e-02 -9.161417386305e-02 -8.614146974220e-02 --8.057488840244e-02 -7.492557348213e-02 -6.920469107972e-02 -6.342341100985e-02 --5.759288817968e-02 -5.172424411555e-02 -4.582854867040e-02 -3.991680194140e-02 --3.399991642702e-02 -2.808869945211e-02 -2.219383588904e-02 -1.632587120224e-02 --1.049519484285e-02 -4.712024019576e-03 1.013612129261e-03 6.671887937845e-03 -1.225319616570e-02 1.774816247850e-02 2.314765943508e-02 2.844281995988e-02 -3.362505028075e-02 3.868604231359e-02 4.361778547572e-02 4.841257791140e-02 -5.306303711374e-02 5.756210992854e-02 6.190308192655e-02 6.607958613189e-02 -7.008561109556e-02 7.391550830408e-02 7.756399891442e-02 8.102617980788e-02 -8.429752895636e-02 8.737391009604e-02 9.025157670448e-02 9.292717527846e-02 -9.539774791121e-02 9.766073416849e-02 9.971397226479e-02 1.015556995416e-01 -1.031845522510e-01 1.045995646497e-01 1.058001674081e-01 1.067861853425e-01 -1.075578344776e-01 1.081157184486e-01 1.084608242530e-01 1.085945173642e-01 -1.085185362177e-01 1.082349860847e-01 1.077463323465e-01 1.070553931859e-01 -1.061653317105e-01 1.050796475268e-01 1.038021677819e-01 1.023370376914e-01 -1.006887105745e-01 9.886193741598e-02 9.686175597539e-02 9.469347946678e-02 -9.236268483039e-02 8.987520061967e-02 8.723709452720e-02 8.445466057366e-02 -8.153440598436e-02 7.848303777837e-02 7.530744909554e-02 7.201470528725e-02 -6.861202979670e-02 6.510678985503e-02 6.150648201971e-02 5.781871758156e-02 -5.405120786723e-02 5.021174946362e-02 4.630820939109e-02 4.234851025184e-02 -3.834061538020e-02 3.429251402104e-02 3.021220656258e-02 2.610768984944e-02 -2.198694260169e-02 1.785791096528e-02 1.372849421856e-02 9.606530659848e-03 -5.499783699821e-03 1.415928182509e-03 -2.637463042043e-03 -6.652932270945e-03 --1.062314980556e-02 -1.454092649123e-02 -1.839922591912e-02 -2.219117627019e-02 --2.591008178228e-02 -2.954943382188e-02 -3.310292154309e-02 -3.656444211695e-02 --3.992811051546e-02 -4.318826883505e-02 -4.633949514569e-02 -4.937661185231e-02 --5.229469355638e-02 -5.508907440640e-02 -5.775535492709e-02 -6.028940831780e-02 --6.268738621221e-02 -6.494572389166e-02 -6.706114494618e-02 -6.903066537788e-02 --7.085159714244e-02 -7.252155112578e-02 -7.403843955353e-02 -7.540047783238e-02 --7.660618582331e-02 -7.765438854746e-02 -7.854421632691e-02 -7.927510436319e-02 --7.984679175757e-02 -8.025931997822e-02 -8.051303078009e-02 -8.060856358457e-02 --8.054685232665e-02 -8.032912177862e-02 -7.995688335978e-02 -7.943193044286e-02 --7.875633316865e-02 -7.793243278106e-02 -7.696283549561e-02 -7.585040591548e-02 --7.459826000950e-02 -7.320975766749e-02 -7.168849484910e-02 -7.003829534268e-02 --6.826320215163e-02 -6.636746852607e-02 -6.435554865831e-02 -6.223208806108e-02 --6.000191364812e-02 -5.767002353679e-02 -5.524157659327e-02 -5.272188174089e-02 --5.011638705261e-02 -4.743066864903e-02 -4.467041942335e-02 -4.184143761519e-02 --3.894961525502e-02 -3.600092650139e-02 -3.300141589301e-02 -2.995718653790e-02 --2.687438826170e-02 -2.375920573747e-02 -2.061784661876e-02 -1.745652969824e-02 --1.428147311335e-02 -1.109888262079e-02 -7.914939961089e-03 -4.735791334448e-03 --1.567536008483e-03 1.583784921576e-03 4.712199600231e-03 7.811816286993e-03 -1.087683402039e-02 1.390155305203e-02 1.688038503253e-02 1.980786293170e-02 -2.267865067598e-02 2.548755248651e-02 2.822952190233e-02 3.089967047326e-02 -3.349327610817e-02 3.600579106488e-02 3.843284956862e-02 4.077027504678e-02 -4.301408696848e-02 4.516050727831e-02 4.720596641413e-02 4.914710890013e-02 -5.098079850668e-02 5.270412296957e-02 5.431439826230e-02 5.580917241542e-02 -5.718622887831e-02 5.844358941941e-02 5.957951656174e-02 6.059251555162e-02 -6.148133585922e-02 6.224497221049e-02 6.288266515097e-02 6.339390114264e-02 -6.377841219622e-02 6.403617504168e-02 6.416740984102e-02 6.417257844790e-02 -6.405238221978e-02 6.380775938872e-02 6.343988199820e-02 6.295015241363e-02 -6.234019941541e-02 6.161187388381e-02 6.076724408590e-02 5.980859057519e-02 -5.873840071572e-02 5.755936284243e-02 5.627436007089e-02 5.488646376947e-02 -5.339892670812e-02 5.181517589800e-02 5.013880513719e-02 4.837356727771e-02 -4.652336622993e-02 4.459224872063e-02 4.258439582145e-02 4.050411426480e-02 -3.835582756459e-02 3.614406695959e-02 3.387346219716e-02 3.154873217566e-02 -2.917467546383e-02 2.675616071553e-02 2.429811699864e-02 2.180552405659e-02 -1.928340252129e-02 1.673680409631e-02 1.417080172878e-02 1.159047978888e-02 -9.000924275244e-03 6.407213064825e-03 3.814406225389e-03 1.227536408694e-03 --1.348400657838e-03 -3.908455563428e-03 -6.447734472963e-03 -8.961408235834e-03 --1.144472132802e-02 -1.389300061125e-02 -1.630166389347e-02 -1.866622827537e-02 --2.098231826799e-02 -2.324567366721e-02 -2.545215717123e-02 -2.759776172772e-02 --2.967861759805e-02 -3.169099912633e-02 -3.363133120187e-02 -3.549619540409e-02 --3.728233581974e-02 -3.898666452275e-02 -4.060626670788e-02 -4.213840546996e-02 --4.358052622122e-02 -4.493026073991e-02 -4.618543084423e-02 -4.734405168610e-02 --4.840433466040e-02 -4.936468992564e-02 -5.022372853315e-02 -5.098026416238e-02 --5.163331446070e-02 -5.218210198706e-02 -5.262605475920e-02 -5.296480640535e-02 --5.319819592169e-02 -5.332626703778e-02 -5.334926719295e-02 -5.326764612724e-02 --5.308205409115e-02 -5.279333967946e-02 -5.240254729470e-02 -5.191091424675e-02 --5.131986749570e-02 -5.063102004568e-02 -4.984616699800e-02 -4.896728127267e-02 --4.799650900776e-02 -4.693616464688e-02 -4.578872572534e-02 -4.455682736635e-02 --4.324325649890e-02 -4.185094580953e-02 -4.038296744078e-02 -3.884252644926e-02 --3.723295403692e-02 -3.555770056945e-02 -3.382032839593e-02 -3.202450448434e-02 --3.017399288780e-02 -2.827264705655e-02 -2.632440201112e-02 -2.433326639210e-02 --2.230331440239e-02 -2.023867765756e-02 -1.814353696050e-02 -1.602211401627e-02 --1.387866310330e-02 -1.171746271703e-02 -9.542807202106e-03 -7.358998389176e-03 --5.170337252312e-03 -2.981115602897e-03 -7.956078357486e-04 1.381937256911e-03 -3.547304588269e-03 5.696320781307e-03 7.824862059854e-03 9.928862011615e-03 -1.200431920884e-02 1.404730467260e-02 1.605396916697e-02 1.802055030983e-02 -1.994337948744e-02 2.181888856018e-02 2.364361634762e-02 2.541421488114e-02 -2.712745541321e-02 2.878023417271e-02 3.036957785620e-02 3.189264884572e-02 -3.334675014412e-02 3.472933001962e-02 3.603798635178e-02 3.727047067176e-02 -3.842469189020e-02 3.949871970692e-02 4.049078769703e-02 4.139929606883e-02 -4.222281408948e-02 4.296008217497e-02 4.361001364187e-02 4.417169611858e-02 -4.464439261484e-02 4.502754224867e-02 4.532076063070e-02 4.552383990645e-02 -4.563674845779e-02 4.565963026541e-02 4.559280393494e-02 4.543676138971e-02 -4.519216623405e-02 4.485985179149e-02 4.444081882282e-02 4.393623292971e-02 -4.334742164992e-02 4.267587125104e-02 4.192322322985e-02 4.109127052535e-02 -4.018195345362e-02 3.919735537355e-02 3.813969809266e-02 3.701133702292e-02 -3.581475609667e-02 3.455256245357e-02 3.322748090938e-02 3.184234821828e-02 -3.040010714028e-02 2.890380032617e-02 2.735656403218e-02 2.576162167727e-02 -2.412227725593e-02 2.244190861979e-02 2.072396064140e-02 1.897193827388e-02 -1.718939952000e-02 1.537994832488e-02 1.354722740593e-02 1.169491103440e-02 -9.826697782416e-03 7.946303249718e-03 6.057452784145e-03 4.163874209975e-03 -2.269290578085e-03 3.774129518360e-04 -1.508066757507e-03 -3.383482892204e-03 --5.245203072812e-03 -7.089635133053e-03 -8.913233951680e-03 -1.071250816855e-02 --1.248402677235e-02 -1.422442554769e-02 -1.593041336966e-02 -1.759877833418e-02 --1.922639371294e-02 -2.081022372206e-02 -2.234732909387e-02 -2.383487244188e-02 --2.527012340929e-02 -2.665046359171e-02 -2.797339122553e-02 -2.923652563365e-02 --3.043761142078e-02 -3.157452241114e-02 -3.264526532177e-02 -3.364798316538e-02 --3.458095837696e-02 -3.544261565918e-02 -3.623152454196e-02 -3.694640165233e-02 --3.758611269111e-02 -3.814967411361e-02 -3.863625451219e-02 -3.904517569888e-02 --3.937591348717e-02 -3.962809817230e-02 -3.980151471027e-02 -3.989610259622e-02 --3.991195544338e-02 -3.984932026455e-02 -3.970859645826e-02 -3.949033450291e-02 --3.919523436204e-02 -3.882414360509e-02 -3.837805524800e-02 -3.785810531897e-02 --3.726557015485e-02 -3.660186343440e-02 -3.586853295496e-02 -3.506725715967e-02 --3.419984142286e-02 -3.326821410135e-02 -3.227442236048e-02 -3.122062778326e-02 --3.010910177222e-02 -2.894222075334e-02 -2.772246119204e-02 -2.645239443157e-02 --2.513468136424e-02 -2.377206694657e-02 -2.236737456924e-02 -2.092350029343e-02 --1.944340696505e-02 -1.793011821868e-02 -1.638671238317e-02 -1.481631630111e-02 --1.322209907433e-02 -1.160726574782e-02 -9.975050944547e-03 -8.328712463620e-03 --6.671524854327e-03 -5.006772978614e-03 -3.337745574486e-03 -1.667728832823e-03 --5.395180400398e-15 1.662178981316e-03 3.315567781108e-03 4.956953928423e-03 -6.583158983546e-03 - Type L N - 0 1 8 -0.000000000000e+00 1.655791103063e-02 3.309130092512e-02 4.957569177821e-02 -6.598669206340e-02 8.230003961507e-02 9.849164436217e-02 1.145376307318e-01 -1.304143796409e-01 1.460985699965e-01 1.615672196230e-01 1.767977255416e-01 -1.917679035205e-01 2.064560268243e-01 2.208408640859e-01 2.349017162306e-01 -2.486184523800e-01 2.619715446705e-01 2.749421019171e-01 2.875119020609e-01 -2.996634233391e-01 3.113798741173e-01 3.226452213293e-01 3.334442174714e-01 -3.437624261002e-01 3.535862457864e-01 3.629029324815e-01 3.717006202560e-01 -3.799683403704e-01 3.876960386461e-01 3.948745911041e-01 4.014958178447e-01 -4.075524951436e-01 4.130383657444e-01 4.179481473306e-01 4.222775391635e-01 -4.260232268770e-01 4.291828854229e-01 4.317551801646e-01 4.337397661211e-01 -4.351372853661e-01 4.359493625901e-01 4.361785988394e-01 4.358285634475e-01 -4.349037841774e-01 4.334097355995e-01 4.313528257302e-01 4.287403809622e-01 -4.255806293188e-01 4.218826820699e-01 4.176565137483e-01 4.129129406093e-01 -4.076635975805e-01 4.019209137486e-01 3.956980864370e-01 3.890090539261e-01 -3.818684668752e-01 3.742916585036e-01 3.662946135934e-01 3.578939363780e-01 -3.491068173809e-01 3.399509992743e-01 3.304447418252e-01 3.206067860027e-01 -3.104563173158e-01 3.000129284597e-01 2.892965813420e-01 2.783275685685e-01 -2.671264744631e-01 2.557141357010e-01 2.441116016337e-01 2.323400943838e-01 -2.204209687893e-01 2.083756722763e-01 1.962257047393e-01 1.839925785072e-01 -1.716977784745e-01 1.593627224744e-01 1.470087219714e-01 1.346569431490e-01 -1.223283684690e-01 1.100437587743e-01 9.782361600920e-02 8.568814662840e-02 -7.365722576277e-02 6.175036221118e-02 4.998666432326e-02 3.838480683706e-02 -2.696299873338e-02 1.573895216584e-02 4.729852523970e-03 -6.047670316608e-03 --1.657756950472e-02 -2.684440743599e-02 -3.683338064054e-02 -4.653034329268e-02 --5.592182930193e-02 -6.499507294809e-02 -7.373802802593e-02 -8.213938546823e-02 --9.018858941940e-02 -9.787585173473e-02 -1.051921648841e-01 -1.121293132420e-01 --1.186798827491e-01 -1.248372689340e-01 -1.305956832882e-01 -1.359501579873e-01 --1.408965489612e-01 -1.454315373114e-01 -1.495526290843e-01 -1.532581534076e-01 --1.565472590033e-01 -1.594199090916e-01 -1.618768747062e-01 -1.639197264415e-01 --1.655508246575e-01 -1.667733081709e-01 -1.675910814631e-01 -1.680088004392e-01 --1.680318567754e-01 -1.676663608940e-01 -1.669191236090e-01 -1.657976364858e-01 --1.643100509646e-01 -1.624651562948e-01 -1.602723563338e-01 -1.577416452637e-01 --1.548835822823e-01 -1.517092653254e-01 -1.482303038812e-01 -1.444587909565e-01 --1.404072742592e-01 -1.360887266589e-01 -1.315165159935e-01 -1.267043742846e-01 --1.216663664322e-01 -1.164168584543e-01 -1.109704853407e-01 -1.053421185900e-01 --9.954683349864e-02 -9.359987627215e-02 -8.751663102686e-02 -8.131258675264e-02 --7.500330430489e-02 -6.860438349469e-02 -6.213143034506e-02 -5.560002458081e-02 --4.902568741833e-02 -4.242384972091e-02 -3.580982058406e-02 -2.919875641380e-02 --2.260563055994e-02 -1.604520356440e-02 -9.531994083388e-03 -3.080250540227e-03 -3.296076436016e-03 9.583360733074e-03 1.576832658815e-02 2.183807348183e-02 -2.778010004672e-02 3.358232694644e-02 3.923311868330e-02 4.472130429523e-02 -5.003619690538e-02 5.516761209014e-02 6.010588503451e-02 6.484188644590e-02 -6.936703720085e-02 7.367332170163e-02 7.775329992268e-02 8.160011812990e-02 -8.520751825843e-02 8.856984593796e-02 9.168205715707e-02 9.453972356161e-02 -9.713903638452e-02 9.947680900809e-02 1.015504781620e-01 1.033581037636e-01 -1.048983674105e-01 1.061705695366e-01 1.071746252480e-01 1.079110588552e-01 -1.083809971237e-01 1.085861612649e-01 1.085288576940e-01 1.082119675829e-01 -1.076389352390e-01 1.068137553428e-01 1.057409590805e-01 1.044255992085e-01 -1.028732340897e-01 1.010899107443e-01 9.908214695680e-02 9.685691248719e-02 -9.442160943152e-02 9.178405178158e-02 8.895244423362e-02 8.593536029779e-02 -8.274171976109e-02 7.938076555768e-02 7.586204010149e-02 7.219536113690e-02 -6.839079716390e-02 6.445864249493e-02 6.040939200082e-02 5.625371560381e-02 -5.200243257576e-02 4.766648569971e-02 4.325691535298e-02 3.878483356985e-02 -3.426139814131e-02 2.969778680940e-02 2.510517161269e-02 2.049469343892e-02 -1.587743684027e-02 1.126440516526e-02 6.666496060902e-03 2.094477397162e-03 --2.441036335399e-03 -6.929607105114e-03 -1.136099584778e-02 -1.572518435772e-02 --2.001239651645e-02 -2.421311881573e-02 -2.831812013375e-02 -3.231847072490e-02 --3.620556038587e-02 -3.997111576244e-02 -4.360721676405e-02 -4.710631205476e-02 --5.046123359210e-02 -5.366521018711e-02 -5.671188006150e-02 -5.959530238024e-02 --6.230996774016e-02 -6.485080759772e-02 -6.721320262165e-02 -6.939298995846e-02 --7.138646940160e-02 -7.319040845732e-02 -7.480204630292e-02 -7.621909663577e-02 --7.743974941355e-02 -7.846267148922e-02 -7.928700614622e-02 -7.991237154210e-02 --8.033885807125e-02 -8.056702465956e-02 -8.059789400636e-02 -8.043294679127e-02 --8.007411486574e-02 -7.952377345131e-02 -7.878473236882e-02 -7.786022632466e-02 --7.675390428232e-02 -7.546981794938e-02 -7.401240941182e-02 -7.238649794943e-02 --7.059726606763e-02 -6.865024478271e-02 -6.655129819886e-02 -6.430660741689e-02 --6.192265381581e-02 -5.940620174943e-02 -5.676428070158e-02 -5.400416694426e-02 --5.113336474404e-02 -4.815958716276e-02 -4.509073649924e-02 -4.193488441934e-02 --3.870025182206e-02 -3.539518848972e-02 -3.202815257059e-02 -2.860768994224e-02 --2.514241350411e-02 -2.164098244758e-02 -1.811208155151e-02 -1.456440055113e-02 --1.100661362739e-02 -7.447359063791e-03 -3.895219116495e-03 -3.587001433476e-04 -3.153786963840e-03 6.633946000119e-03 1.007361427884e-02 1.346478103227e-02 -1.679960534131e-02 2.007043355533e-02 2.326981616478e-02 2.639052409048e-02 -2.942556435520e-02 3.236819510471e-02 3.521193994704e-02 3.795060158074e-02 -4.057827468431e-02 4.308935804128e-02 4.547856587701e-02 4.774093838528e-02 -4.987185142497e-02 5.186702536882e-02 5.372253308861e-02 5.543480706295e-02 -5.700064559627e-02 5.841721813936e-02 5.968206970430e-02 6.079312436851e-02 -6.174868786500e-02 6.254744925770e-02 6.318848170351e-02 6.367124230392e-02 -6.399557105220e-02 6.416168888325e-02 6.417019483595e-02 6.402206233961e-02 -6.371863463793e-02 6.326161936624e-02 6.265308229920e-02 6.189544028845e-02 -6.099145341102e-02 5.994421635153e-02 5.875714904241e-02 5.743398658838e-02 -5.597876850265e-02 5.439582728400e-02 5.268977636510e-02 5.086549746396e-02 -4.892812737133e-02 4.688304420838e-02 4.473585318977e-02 4.249237192826e-02 -4.015861531808e-02 3.774078003476e-02 3.524522869016e-02 3.267847368179e-02 -3.004716077609e-02 2.735805246603e-02 2.461801114311e-02 2.183398212490e-02 -1.901297657847e-02 1.616205438104e-02 1.328830695820e-02 1.039884014080e-02 -7.500757080491e-03 4.601141264318e-03 1.707039667804e-03 -1.174553914293e-03 --4.036715321065e-03 -6.872606224583e-03 -9.675490038058e-03 -1.243874749688e-02 --1.515589187733e-02 -1.782058381887e-02 -2.042664571674e-02 -2.296807565325e-02 --2.543906083690e-02 -2.783399052001e-02 -3.014746836701e-02 -3.237432424670e-02 --3.450962542356e-02 -3.654868712452e-02 -3.848708245922e-02 -4.032065167364e-02 --4.204551071828e-02 -4.365805911411e-02 -4.515498710107e-02 -4.653328205570e-02 --4.779023416631e-02 -4.892344135592e-02 -4.993081344491e-02 -5.081057554727e-02 --5.156127069620e-02 -5.218176169658e-02 -5.267123220359e-02 -5.302918702888e-02 --5.325545167719e-02 -5.335017111832e-02 -5.331380780109e-02 -5.314713891769e-02 --5.285125292855e-02 -5.242754535957e-02 -5.187771388525e-02 -5.120375271283e-02 --5.040794628419e-02 -4.949286231375e-02 -4.846134418223e-02 -4.731650270732e-02 --4.606170731395e-02 -4.470057662806e-02 -4.323696851891e-02 -4.167496961652e-02 --4.001888433139e-02 -3.827322340542e-02 -3.644269202321e-02 -3.453217751437e-02 --3.254673667809e-02 -3.049158276193e-02 -2.837207212753e-02 -2.619369063662e-02 --2.396203979110e-02 -2.168282266139e-02 -1.936182963770e-02 -1.700492403911e-02 --1.461802761544e-02 -1.220710597707e-02 -9.778153987978e-03 -7.337181156879e-03 --4.890197061645e-03 -2.443196841538e-03 -2.146791744090e-06 2.427029905829e-03 -4.838467281943e-03 7.226370476656e-03 9.585029400815e-03 1.190883213079e-02 -1.419227800556e-02 1.642999039615e-02 1.861672911823e-02 2.074740245990e-02 -2.281707879732e-02 2.482099777245e-02 2.675458100782e-02 2.861344233493e-02 -3.039339751367e-02 3.209047342193e-02 3.370091669553e-02 3.522120180033e-02 -3.664803851944e-02 3.797837884032e-02 3.920942322779e-02 4.033862627058e-02 -4.136370169057e-02 4.228262670554e-02 4.309364573766e-02 4.379527346174e-02 -4.438629718867e-02 4.486577858132e-02 4.523305470151e-02 4.548773838844e-02 -4.562971797067e-02 4.565915631493e-02 4.557648921710e-02 4.538242314188e-02 -4.507793231948e-02 4.466425520881e-02 4.414289033863e-02 4.351559153905e-02 -4.278436257749e-02 4.195145121455e-02 4.101934269644e-02 3.999075270200e-02 -3.886861976354e-02 3.765609718199e-02 3.635654445778e-02 3.497351826022e-02 -3.351076295890e-02 3.197220074180e-02 3.036192134554e-02 2.868417142405e-02 -2.694334358287e-02 2.514396510671e-02 2.329068640869e-02 2.138826923032e-02 -1.944157462145e-02 1.745555073027e-02 1.543522043333e-02 1.338566883613e-02 -1.131203067490e-02 9.219477650305e-03 7.113205723915e-03 4.998422408071e-03 -2.880334079970e-03 7.641333503272e-04 -1.345013483117e-03 -3.441978867347e-03 --5.521686281563e-03 -7.579122351377e-03 -9.609348761184e-03 -1.160751393678e-02 --1.356886447099e-02 -1.548875626571e-02 -1.736266536469e-02 -1.918619845208e-02 --2.095510299273e-02 -2.266527699123e-02 -2.431277834758e-02 -2.589383378856e-02 --2.740484735483e-02 -2.884240842504e-02 -3.020329925943e-02 -3.148450204645e-02 --3.268320543748e-02 -3.379681055569e-02 -3.482293646675e-02 -3.575942509999e-02 --3.660434561055e-02 -3.735599817388e-02 -3.801291720575e-02 -3.857387400208e-02 --3.903787879458e-02 -3.940418221928e-02 -3.967227619680e-02 -3.984189422432e-02 --3.991301108094e-02 -3.988584194924e-02 -3.976084095732e-02 -3.953869914728e-02 --3.922034187691e-02 -3.880692566323e-02 -3.829983447740e-02 -3.770067550228e-02 --3.701127436464e-02 -3.623366985568e-02 -3.537010815444e-02 -3.442303657002e-02 --3.339509681946e-02 -3.228911785923e-02 -3.110810828940e-02 -2.985524835046e-02 --2.853388153354e-02 -2.714750582588e-02 -2.569976461398e-02 -2.419443726774e-02 --2.263542942962e-02 -2.102676303320e-02 -1.937256607656e-02 -1.767706217584e-02 --1.594455992534e-02 -1.417944209042e-02 -1.238615466005e-02 -1.056919578607e-02 --8.733104636253e-03 -6.882450188568e-03 -5.021819993921e-03 -3.155808934758e-03 --1.289008006752e-03 5.740068493430e-04 2.428685838783e-03 4.270516300273e-03 -6.095033563517e-03 7.897831651018e-03 9.674573798760e-03 1.142100277091e-02 -1.313295094430e-02 1.480635013898e-02 1.643724117206e-02 1.802178311248e-02 -1.955626221549e-02 2.103710051615e-02 2.246086406235e-02 2.382427076859e-02 -2.512419787273e-02 2.635768897918e-02 2.752196067273e-02 2.861440868857e-02 -2.963261362498e-02 3.057434618660e-02 3.143757194694e-02 3.222045562041e-02 -3.292136483523e-02 3.353887339954e-02 3.407176405486e-02 3.451903071165e-02 -3.487988016366e-02 3.515373327833e-02 3.534022566241e-02 3.543920780289e-02 -3.545074468464e-02 3.537511488750e-02 3.521280916677e-02 3.496452852234e-02 -3.463118176278e-02 3.421388257209e-02 3.371394608787e-02 3.313288500087e-02 -3.247240518699e-02 3.173440088389e-02 3.092094942553e-02 3.003430554875e-02 -2.907689528729e-02 2.805130946938e-02 2.696029683603e-02 2.580675679798e-02 -2.459373185012e-02 2.332439966292e-02 2.200206487120e-02 2.063015058108e-02 -1.921218961681e-02 1.775181552949e-02 1.625275339036e-02 1.471881039172e-02 -1.315386627900e-02 1.156186363765e-02 9.946798059158e-03 8.312708210192e-03 -6.663665829604e-03 5.003765677650e-03 3.337115462101e-03 1.667825765779e-03 -3.234571482622e-15 -1.662275591703e-03 -3.314941855525e-03 -4.953976550982e-03 --6.575404052716e-03 - Type L N - 0 1 9 -0.000000000000e+00 1.830358174210e-02 3.657403808490e-02 5.477831499715e-02 -7.288350101641e-02 9.085689811520e-02 1.086660920666e-01 1.262790221443e-01 -1.436640499936e-01 1.607900275125e-01 1.776263635835e-01 1.941430895004e-01 -2.103109229381e-01 2.261013303140e-01 2.414865873988e-01 2.564398380332e-01 -2.709351508156e-01 2.849475736296e-01 2.984531858842e-01 3.114291483481e-01 -3.238537504622e-01 3.357064550233e-01 3.469679401358e-01 3.576201383384e-01 -3.676462728158e-01 3.770308906151e-01 3.857598927944e-01 3.938205614351e-01 -4.012015834617e-01 4.078930712177e-01 4.138865797541e-01 4.191751207972e-01 -4.237531733675e-01 4.276166910331e-01 4.307631057854e-01 4.331913285360e-01 -4.349017462416e-01 4.358962156689e-01 4.361780538247e-01 4.357520250791e-01 -4.346243250218e-01 4.328025610972e-01 4.302957300717e-01 4.271141923958e-01 -4.232696435290e-01 4.187750823041e-01 4.136447764136e-01 4.078942251090e-01 -4.015401192086e-01 3.946002985174e-01 3.870937067674e-01 3.790403441931e-01 -3.704612178630e-01 3.613782898909e-01 3.518144236589e-01 3.417933281848e-01 -3.313395007746e-01 3.204781681009e-01 3.092352258544e-01 2.976371771166e-01 -2.857110696066e-01 2.734844319544e-01 2.609852091583e-01 2.482416973830e-01 -2.352824782561e-01 2.221363528245e-01 2.088322753284e-01 1.953992869526e-01 -1.818664497150e-01 1.682627806506e-01 1.546171864455e-01 1.409583986801e-01 -1.273149098309e-01 1.137149101839e-01 1.001862258071e-01 8.675625772682e-02 -7.345192244858e-02 6.029959396153e-02 4.732504735816e-02 3.455340419908e-02 -2.200907974642e-02 9.715732184933e-03 -2.303786055728e-03 -1.402747476984e-02 --2.543423013342e-02 -3.650388645536e-02 -4.721725543241e-02 -5.755616282508e-02 --6.750348247854e-02 -7.704316761906e-02 -8.616027936410e-02 -9.484101239104e-02 --1.030727177169e-01 -1.108439225488e-01 -1.181443471731e-01 -1.249649188563e-01 --1.312977827426e-01 -1.371363097361e-01 -1.424751013654e-01 -1.473099916373e-01 --1.516380458899e-01 -1.554575566670e-01 -1.587680366408e-01 -1.615702086167e-01 --1.638659926636e-01 -1.656584904169e-01 -1.669519666121e-01 -1.677518279090e-01 --1.680645990773e-01 -1.678978966182e-01 -1.672603999032e-01 -1.661618199179e-01 --1.646128657023e-01 -1.626252085877e-01 -1.602114443317e-01 -1.573850532599e-01 --1.541603585270e-01 -1.505524826134e-01 -1.465773021787e-01 -1.422514013949e-01 --1.375920238872e-01 -1.326170234127e-01 -1.273448134092e-01 -1.217943155488e-01 --1.159849074327e-01 -1.099363695658e-01 -1.036688317492e-01 -9.720271903118e-02 --9.055869735635e-02 -8.375761905255e-02 -7.682046829625e-02 -6.976830669444e-02 --6.262221912132e-02 -5.540325994599e-02 -4.813239978587e-02 -4.083047291815e-02 --3.351812547938e-02 -2.621576458043e-02 -1.894350846070e-02 -1.172113780254e-02 --4.568048322596e-03 2.496795246826e-03 9.454903677738e-03 1.628830616362e-02 -2.297959153439e-02 2.951194767482e-02 3.586919905734e-02 4.203584230544e-02 -4.799707970983e-02 5.373885062489e-02 5.924786067938e-02 6.451160874110e-02 -6.951841158171e-02 7.425742619399e-02 7.871866972059e-02 8.289303695950e-02 -8.677231541825e-02 9.034919789536e-02 9.361729257421e-02 9.657113062115e-02 -9.920617128620e-02 1.015188045114e-01 1.035063510584e-01 1.051670601729e-01 -1.065001048107e-01 1.075055744564e-01 1.081844655702e-01 1.085386697071e-01 -1.085709593568e-01 1.082849715578e-01 1.076851893481e-01 1.067769211146e-01 -1.055662779148e-01 1.040601488446e-01 1.022661745321e-01 1.001927188440e-01 -9.784883889096e-02 9.524425342656e-02 9.238930973593e-02 8.929494911340e-02 -8.597267103297e-02 8.243449611708e-02 7.869292801214e-02 7.476091428152e-02 -7.065180642847e-02 6.637931916320e-02 6.195748902942e-02 5.740063250685e-02 -5.272330370674e-02 4.794025177762e-02 4.306637813898e-02 3.811669365958e-02 -3.310627589716e-02 2.805022651502e-02 2.296362898958e-02 1.786150672202e-02 -1.275878166461e-02 7.670233570794e-03 2.610459975239e-03 -2.406162992260e-03 --7.365518858348e-03 -1.225378802552e-02 -1.705748386522e-02 -2.176348759424e-02 --2.635908184775e-02 -3.083198286669e-02 -3.517037122126e-02 -3.936292099701e-02 --4.339882737451e-02 -4.726783253870e-02 -5.096024985851e-02 -5.446698628319e-02 --5.777956290620e-02 -6.089013365359e-02 -6.379150205870e-02 -6.647713609080e-02 --6.894118101077e-02 -7.117847023244e-02 -7.318453417395e-02 -7.495560708904e-02 --7.648863187394e-02 -7.778126285084e-02 -7.883186653490e-02 -7.963952039699e-02 --8.020400963978e-02 -8.052582201049e-02 -8.060614067853e-02 -8.044683521154e-02 --8.005045068863e-02 -7.942019499406e-02 -7.855992433988e-02 -7.747412707017e-02 --7.616790580441e-02 -7.464695798128e-02 -7.291755486873e-02 -7.098651910953e-02 --6.886120087552e-02 -6.654945270702e-02 -6.405960311692e-02 -6.140042904224e-02 --5.858112722820e-02 -5.561128463271e-02 -5.250084794108e-02 -4.926009228271e-02 --4.589958924332e-02 -4.243017426745e-02 -3.886291354731e-02 -3.520907049454e-02 --3.148007189251e-02 -2.768747382652e-02 -2.384292748968e-02 -1.995814496188e-02 --1.604486505853e-02 -1.211481934533e-02 -8.179698413918e-03 -4.251118512063e-03 --3.405886206150e-04 3.540521932676e-03 7.381015234165e-03 1.116989583429e-02 -1.489640100313e-02 1.855003011098e-02 2.212057305618e-02 2.559813766586e-02 -2.897317599822e-02 3.223650947904e-02 3.537935280821e-02 3.839333657641e-02 -4.127052853591e-02 4.400345347347e-02 4.658511163778e-02 4.900899567831e-02 -5.126910605653e-02 5.335996489552e-02 5.527662823829e-02 5.701469668990e-02 -5.857032442323e-02 5.994022653299e-02 6.112168472734e-02 6.211255135130e-02 -6.291125174084e-02 6.351678491138e-02 6.392872258900e-02 6.414720659753e-02 -6.417294461913e-02 6.400720435046e-02 6.365180608122e-02 6.310911372586e-02 -6.238202434376e-02 6.147395618708e-02 6.038883531963e-02 5.913108085371e-02 -5.770558885585e-02 5.611771497557e-02 5.437325585476e-02 5.247842937856e-02 -5.043985383133e-02 4.826452602414e-02 4.595979846304e-02 4.353335562925e-02 -4.099318944490e-02 3.834757399986e-02 3.560503961655e-02 3.277434633158e-02 -2.986445687386e-02 2.688450922004e-02 2.384378880891e-02 2.075170049681e-02 -1.761774033636e-02 1.445146726111e-02 1.126247475819e-02 8.060362610876e-03 -4.854708792171e-03 1.655041589786e-03 -1.529187958409e-03 -4.688633240530e-03 --7.814078782147e-03 -1.089646641850e-02 -1.392692085488e-02 -1.689677454470e-02 --1.979759181718e-02 -2.262119218908e-02 -2.535967279759e-02 -2.800542989440e-02 --3.055117934399e-02 -3.298997607227e-02 -3.531523241523e-02 -3.752073532041e-02 --3.960066235785e-02 -4.154959650055e-02 -4.336253963851e-02 -4.503492479416e-02 --4.656262701073e-02 -4.794197288940e-02 -4.916974875494e-02 -5.024320743357e-02 --5.116007363092e-02 -5.191854790218e-02 -5.251730921045e-02 -5.295551607350e-02 --5.323280630334e-02 -5.334929534672e-02 -5.330557323923e-02 -5.310270018885e-02 --5.274220080962e-02 -5.222605702894e-02 -5.155669969654e-02 -5.073699892625e-02 --4.977025320544e-02 -4.866017731036e-02 -4.741088906890e-02 -4.602689501520e-02 --4.451307498402e-02 -4.287466569502e-02 -4.111724338018e-02 -3.924670550999e-02 --3.726925167637e-02 -3.519136369229e-02 -3.301978497043e-02 -3.076149924450e-02 --2.842370869875e-02 -2.601381157268e-02 -2.353937930868e-02 -2.100813331197e-02 --1.842792139238e-02 -1.580669395853e-02 -1.315248003518e-02 -1.047336317458e-02 --7.777457332796e-03 -5.072882781731e-03 -2.367742126867e-03 3.299034995427e-04 -3.012058001219e-03 5.670813568846e-03 8.298373552893e-03 1.088707489325e-02 -1.342941004226e-02 1.591804831964e-02 1.834585663938e-02 2.070591955138e-02 -2.299155854231e-02 2.519635054291e-02 2.731414559150e-02 2.933908360597e-02 -3.126561021970e-02 3.308849163934e-02 3.480282848584e-02 3.640406858313e-02 -3.788801866191e-02 3.925085494970e-02 4.048913262121e-02 4.159979408713e-02 -4.258017610231e-02 4.342801567831e-02 4.414145478860e-02 4.471904385849e-02 -4.515974403509e-02 4.546292823669e-02 4.562838098410e-02 4.565629702020e-02 -4.554727872752e-02 4.530233235705e-02 4.492286308491e-02 4.441066891690e-02 -4.376793346419e-02 4.299721761665e-02 4.210145014337e-02 4.108391725303e-02 -3.994825114943e-02 3.869841762072e-02 3.733870270295e-02 3.587369846167e-02 -3.430828793717e-02 3.264762930170e-02 3.089713927853e-02 2.906247587534e-02 -2.714952048553e-02 2.516435941306e-02 2.311326487786e-02 2.100267555991e-02 -1.883917674134e-02 1.662948010682e-02 1.438040326324e-02 1.209884904005e-02 -9.791784632412e-03 7.466220649033e-03 5.129190126911e-03 2.787727574883e-03 -4.488481075623e-04 -1.880473269300e-03 -4.193322161681e-03 -6.482865018936e-03 --8.742369035817e-03 -1.096522166770e-02 -1.314494970317e-02 -1.527523783979e-02 --1.734994671037e-02 -1.936313030911e-02 -2.130905276877e-02 -2.318220444232e-02 --2.497731724460e-02 -2.668937921196e-02 -2.831364824041e-02 -2.984566496514e-02 --3.128126474734e-02 -3.261658873654e-02 -3.384809397998e-02 -3.497256255322e-02 --3.598710968913e-02 -3.688919088565e-02 -3.767660797564e-02 -3.834751414526e-02 --3.890041789059e-02 -3.933418590523e-02 -3.964804489491e-02 -3.984158231818e-02 --3.991474605563e-02 -3.986784301293e-02 -3.970153666648e-02 -3.941684356308e-02 --3.901512878856e-02 -3.849810042285e-02 -3.786780300217e-02 -3.712661001169e-02 --3.627721543499e-02 -3.532262438894e-02 -3.426614287566e-02 -3.311136668538e-02 --3.186216948641e-02 -3.052269014089e-02 -2.909731928684e-02 -2.759068522925e-02 --2.600763918471e-02 -2.435323992584e-02 -2.263273787325e-02 -2.085155868453e-02 --1.901528639060e-02 -1.712964613127e-02 -1.520048654261e-02 -1.323376184967e-02 --1.123551371869e-02 -9.211852923402e-03 -7.168940880532e-03 -5.112971109536e-03 --3.050150671791e-03 -9.866816442555e-04 1.071257317729e-03 3.117529274252e-03 -5.146057097701e-03 7.150841319863e-03 9.125977677427e-03 1.106567430511e-02 -1.296426852686e-02 1.481624319706e-02 1.661624254499e-02 1.835908747760e-02 -2.003979029747e-02 2.165356879447e-02 2.319585967185e-02 2.466233126973e-02 -2.604889555069e-02 2.735171931510e-02 2.856723461572e-02 2.969214834385e-02 -3.072345096179e-02 3.165842435904e-02 3.249464881219e-02 3.323000903138e-02 -3.386269927885e-02 3.439122754791e-02 3.481441879354e-02 3.513141720857e-02 -3.534168754237e-02 3.544501546162e-02 3.544150695593e-02 3.533158679331e-02 -3.511599603395e-02 3.479578861309e-02 3.437232700647e-02 3.384727699485e-02 -3.322260154632e-02 3.250055383794e-02 3.168366944046e-02 3.077475769253e-02 -2.977689229300e-02 2.869340114195e-02 2.752785546354e-02 2.628405824548e-02 -2.496603203204e-02 2.357800610901e-02 2.212440312114e-02 2.060982516361e-02 -1.903903939084e-02 1.741696318714e-02 1.574864894472e-02 1.403926849582e-02 -1.229409724626e-02 1.051849805872e-02 8.717904934536e-03 6.897806543011e-03 -5.063729647956e-03 3.221222480840e-03 1.375838110240e-03 -4.668821430431e-04 --2.301425196093e-03 -4.122322550559e-03 -5.924166447871e-03 -7.701625785658e-03 --9.449461748942e-03 -1.116254311066e-02 -1.283586115725e-02 -1.446454419619e-02 --1.604387160401e-02 -1.756928737443e-02 -1.903641312830e-02 -2.044106054845e-02 --2.177924320460e-02 -2.304718773514e-02 -2.424134435498e-02 -2.535839666045e-02 --2.639527070462e-02 -2.734914331846e-02 -2.821744965592e-02 -2.899788994295e-02 --2.968843541330e-02 -3.028733341619e-02 -3.079311168353e-02 -3.120458174679e-02 --3.152084149646e-02 -3.174127687922e-02 -3.186556273085e-02 -3.189366274530e-02 --3.182582858295e-02 -3.166259812364e-02 -3.140479287259e-02 -3.105351452977e-02 --3.061014073575e-02 -3.007632000953e-02 -2.945396589599e-02 -2.874525034323e-02 --2.795259633192e-02 -2.707866978123e-02 -2.612637075772e-02 -2.509882401582e-02 --2.399936890015e-02 -2.283154864200e-02 -2.159909908372e-02 -2.030593686649e-02 --1.895614711856e-02 -1.755397068200e-02 -1.610379091781e-02 -1.461012012981e-02 --1.307758564908e-02 -1.151091562159e-02 -9.914924542104e-03 -8.294498578460e-03 --6.654580730483e-03 -5.000155868316e-03 -3.336235695113e-03 -1.667843679102e-03 --1.539767840045e-15 1.662293445418e-03 3.314067934178e-03 4.950402660314e-03 -6.566439287048e-03 - Type L N - 0 1 10 -0.000000000000e+00 2.004864164329e-02 4.005374818686e-02 5.997189707219e-02 -7.975989050636e-02 9.937486705384e-02 1.187744122816e-01 1.379166681467e-01 -1.567604408180e-01 1.752653066309e-01 1.933917158755e-01 2.111010941297e-01 -2.283559408516e-01 2.451199249570e-01 2.613579771150e-01 2.770363785041e-01 -2.921228457845e-01 3.065866120476e-01 3.203985035237e-01 3.335310118337e-01 -3.459583615878e-01 3.576565731488e-01 3.686035203875e-01 3.787789832775e-01 -3.881646951877e-01 3.967443847496e-01 4.045038121897e-01 4.114308000356e-01 -4.175152581199e-01 4.227492028224e-01 4.271267705091e-01 4.306442251418e-01 -4.332999600511e-01 4.350944938804e-01 4.360304607265e-01 4.361125945205e-01 -4.353477077066e-01 4.337446642945e-01 4.313143473783e-01 4.280696212279e-01 -4.240252880779e-01 4.191980397498e-01 4.136064042641e-01 4.072706876057e-01 -4.002129108269e-01 3.924567426797e-01 3.840274279856e-01 3.749517119611e-01 -3.652577607274e-01 3.549750782466e-01 3.441344199325e-01 3.327677031962e-01 -3.209079151926e-01 3.085890180434e-01 2.958458518164e-01 2.827140355489e-01 -2.692298666055e-01 2.554302186671e-01 2.413524386478e-01 2.270342428415e-01 -2.125136125998e-01 1.978286898425e-01 1.830176727020e-01 1.681187116030e-01 -1.531698060731e-01 1.382087025797e-01 1.232727936826e-01 1.083990187879e-01 -9.362376678147e-02 7.898278081579e-02 6.451106551345e-02 5.024279684566e-02 -3.621123493252e-02 2.244864000347e-02 8.986191745619e-03 -4.146087743652e-03 --1.691940719460e-02 -2.930627540092e-02 -4.128056627346e-02 -5.281757954507e-02 --6.389409697353e-02 -7.448843390387e-02 -8.458048606534e-02 -9.415177149377e-02 --1.031854674845e-01 -1.116664424970e-01 -1.195812829467e-01 -1.269183148374e-01 --1.336676201993e-01 -1.398210483195e-01 -1.453722217596e-01 -1.503165371794e-01 --1.546511609934e-01 -1.583750199077e-01 -1.614887863972e-01 -1.639948591984e-01 --1.658973389091e-01 -1.672019987983e-01 -1.679162509452e-01 -1.680491078393e-01 --1.676111395862e-01 -1.666144268762e-01 -1.650725098854e-01 -1.630003332896e-01 --1.604141875824e-01 -1.573316468998e-01 -1.537715035604e-01 -1.497536995435e-01 --1.452992551303e-01 -1.404301949456e-01 -1.351694716394e-01 -1.295408874580e-01 --1.235690139552e-01 -1.172791101008e-01 -1.106970390463e-01 -1.038491838104e-01 --9.676236214780e-02 -8.946374086651e-02 -8.198074985927e-02 -7.434099611248e-02 --6.657217795589e-02 -5.870199981310e-02 -5.075808771010e-02 -4.276790579488e-02 --3.475867411658e-02 -2.675728790703e-02 -1.879023860142e-02 -1.088353682792e-02 --3.062637588332e-03 4.647632156173e-03 1.222314328917e-02 1.964053153738e-02 -2.687726147770e-02 3.391168737783e-02 4.072311070645e-02 4.729183416044e-02 -5.359921206845e-02 5.962769704250e-02 6.536088276179e-02 7.078354278585e-02 -7.588166530734e-02 8.064248376806e-02 8.505450327531e-02 8.910752276941e-02 -9.279265290674e-02 9.610232963664e-02 9.903032346394e-02 1.015717444029e-01 -1.037230426415e-01 1.054820049488e-01 1.068477468715e-01 1.078207007777e-01 -1.084025998205e-01 1.085964579047e-01 1.084065457533e-01 1.078383631812e-01 -1.068986076957e-01 1.055951395535e-01 1.039369434151e-01 1.019340867459e-01 -9.959767512544e-02 9.693980463058e-02 9.397351147173e-02 9.071271906439e-02 -8.717218272780e-02 8.336743220780e-02 7.931471222655e-02 7.503092126704e-02 -7.053354880411e-02 6.584061119752e-02 6.097058646507e-02 5.594234815611e-02 -5.077509854694e-02 4.548830138022e-02 4.010161437038e-02 3.463482169635e-02 -2.910776670111e-02 2.354028501549e-02 1.795213832078e-02 1.236294896080e-02 -6.792135610295e-03 1.258850200934e-03 -4.218083698605e-03 -9.620230858748e-03 --1.492960253797e-02 -2.012871262865e-02 -2.520063163165e-02 -3.012903829971e-02 --3.489826879872e-02 -3.949336324477e-02 -4.390010948483e-02 -4.810508399883e-02 --5.209568981097e-02 -5.586019130913e-02 -5.938774588175e-02 -6.266843229296e-02 --6.569327572773e-02 -6.845426945066e-02 -7.094439303319e-02 -7.315762711593e-02 --7.508896468429e-02 -7.673441884752e-02 -7.809102712250e-02 -7.915685223563e-02 --7.993097946722e-02 -8.041351057425e-02 -8.060555433844e-02 -8.050921379745e-02 --8.012757022741e-02 -7.946466395572e-02 -7.852547209259e-02 -7.731588327969e-02 --7.584266956346e-02 -7.411345550934e-02 -7.213668468178e-02 -6.992158362252e-02 --6.747812346730e-02 -6.481697934799e-02 -6.194948773330e-02 -5.888760186748e-02 --5.564384547130e-02 -5.223126487436e-02 -4.866337975202e-02 -4.495413264360e-02 --4.111783743128e-02 -3.716912696158e-02 -3.312289999281e-02 -2.899426765287e-02 --2.479849959220e-02 -2.055097001649e-02 -1.626710378278e-02 -1.196232274131e-02 --7.651992503055e-03 -3.351369810803e-03 9.244493122807e-04 5.160580465896e-03 -9.342400661638e-03 1.345559683653e-02 1.748621293522e-02 2.142069541087e-02 -2.524593700109e-02 2.894931864218e-02 3.251874939191e-02 3.594270423906e-02 -3.921025968548e-02 4.231112699506e-02 4.523568301251e-02 4.797499846364e-02 -5.052086365817e-02 5.286581152518e-02 5.500313792111e-02 5.692691915965e-02 -5.863202672279e-02 6.011413912208e-02 6.136975088909e-02 6.239617868396e-02 -6.319156452082e-02 6.375487611866e-02 6.408590439613e-02 6.418525813809e-02 -6.405435587152e-02 6.369541499742e-02 6.311143823471e-02 6.230619744047e-02 -6.128421488011e-02 6.005074202860e-02 5.861173599241e-02 5.697383364896e-02 -5.514432360789e-02 5.313111610504e-02 5.094271094654e-02 4.858816362643e-02 -4.607704974642e-02 4.341942787185e-02 4.062580096206e-02 3.770707651766e-02 -3.467452559057e-02 3.153974080592e-02 2.831459354694e-02 2.501119045654e-02 -2.164182941010e-02 1.821895511529e-02 1.475511449471e-02 1.126291200738e-02 -7.754965063920e-03 4.243859689298e-03 7.421065851342e-04 -2.737902258719e-03 --6.183936256412e-03 -9.583968078509e-03 -1.292621452469e-02 -1.619917628107e-02 --1.939167643117e-02 -2.249289759449e-02 -2.549241757245e-02 -2.838024338689e-02 --3.114684360294e-02 -3.378317883446e-02 -3.628073033708e-02 -3.863152660118e-02 --4.082816786452e-02 -4.286384847181e-02 -4.473237701661e-02 -4.642819420862e-02 --4.794638841819e-02 -4.928270885753e-02 -5.043357636716e-02 -5.139609178411e-02 --5.216804187731e-02 -5.274790284372e-02 -5.313484136769e-02 -5.332871325409e-02 --5.333005965434e-02 -5.314010091262e-02 -5.276072806770e-02 -5.219449205378e-02 --5.144459065131e-02 -5.051485324662e-02 -4.940972346612e-02 -4.813423975813e-02 --4.669401400190e-02 -4.509520822999e-02 -4.334450955621e-02 -4.144910340686e-02 --3.941664515877e-02 -3.725523029218e-02 -3.497336317145e-02 -3.257992457041e-02 --3.008413806323e-02 -2.749553540467e-02 -2.482392102666e-02 -2.207933578043e-02 --1.927202005531e-02 -1.641237640686e-02 -1.351093182804e-02 -1.057829979737e-02 --7.625142238595e-03 -4.662131525298e-03 -1.699912663701e-03 1.250934214945e-03 -4.179930922482e-03 7.076737714922e-03 9.931189101533e-03 1.273332884009e-02 -1.547344399990e-02 1.814209797818e-02 2.073016235946e-02 2.322884751252e-02 -2.562973182413e-02 2.792478947434e-02 3.010641666348e-02 3.216745620708e-02 -3.410122042100e-02 3.590151222541e-02 3.756264440283e-02 3.907945695250e-02 -4.044733248991e-02 4.166220964770e-02 4.272059444137e-02 4.361956957043e-02 -4.435680163298e-02 4.493054623945e-02 4.533965101810e-02 4.558355651299e-02 -4.566229498192e-02 4.557648710952e-02 4.532733665778e-02 4.491662308349e-02 -4.434669215893e-02 4.362044463923e-02 4.274132302606e-02 4.171329648416e-02 -4.054084397319e-02 3.922893566336e-02 3.778301270904e-02 3.620896545993e-02 -3.451311019452e-02 3.270216446519e-02 3.078322114897e-02 2.876372130186e-02 -2.665142591846e-02 2.445438670201e-02 2.218091595286e-02 1.983955568594e-02 -1.743904609016e-02 1.498829344416e-02 1.249633760444e-02 9.972319182722e-03 -7.425446529940e-03 4.864962644432e-03 2.300112121540e-03 -2.598917388347e-04 --2.805899551278e-03 -5.328858076613e-03 -7.819841954325e-03 -1.027008482593e-02 --1.267100974223e-02 -1.501425875040e-02 -1.729172156025e-02 -1.949556319270e-02 --2.161825051761e-02 -2.365257759228e-02 -2.559168971691e-02 -2.742910612772e-02 --2.915874125420e-02 -3.077492447184e-02 -3.227241828756e-02 -3.364643490095e-02 --3.489265109020e-02 -3.600722137795e-02 -3.698678943834e-02 -3.782849771329e-02 --3.852999521197e-02 -3.908944347460e-02 -3.950552068759e-02 -3.977742394431e-02 --3.990486965171e-02 -3.988809209007e-02 -3.972784013937e-02 -3.942537219222e-02 --3.898244927969e-02 -3.840132644254e-02 -3.768474238633e-02 -3.683590746490e-02 --3.585849004241e-02 -3.475660128944e-02 -3.353477847430e-02 -3.219796681543e-02 --3.075149996562e-02 -2.920107920358e-02 -2.755275141222e-02 -2.581288592724e-02 --2.398815034318e-02 -2.208548536733e-02 -2.011207881489e-02 -1.807533884159e-02 --1.598286651190e-02 -1.384242780324e-02 -1.166192514795e-02 -9.449368616029e-03 --7.212846842601e-03 -4.960497804243e-03 -2.700479548737e-03 -4.409409822704e-04 -1.810007182417e-03 4.044321214475e-03 6.254052788899e-03 8.431376946610e-03 -1.056861949336e-02 1.265828374257e-02 1.469307650983e-02 1.666593327010e-02 -1.857004239157e-02 2.039886836419e-02 2.214617394453e-02 2.380604114285e-02 -2.537289098282e-02 2.684150196859e-02 2.820702719934e-02 2.946501007592e-02 -3.061139854973e-02 3.164255786935e-02 3.255528178579e-02 3.334680218296e-02 -3.401479710578e-02 3.455739716389e-02 3.497319029498e-02 3.526122487769e-02 -3.542101118961e-02 3.545252121225e-02 3.535618679028e-02 3.513289615849e-02 -3.478398885543e-02 3.431124904846e-02 3.371689730043e-02 3.300358081369e-02 -3.217436219224e-02 3.123270676812e-02 3.018246854296e-02 2.902787480027e-02 -2.777350944864e-02 2.642429516031e-02 2.498547437342e-02 2.346258923028e-02 -2.186146052724e-02 2.018816575514e-02 1.844901631213e-02 1.665053397331e-02 -1.479942670392e-02 1.290256390496e-02 1.096695118144e-02 8.999704725225e-03 -7.008025405165e-03 4.999172657959e-03 2.980438273595e-03 9.591201691588e-04 --1.057503755487e-03 -3.062201587306e-03 -5.047813103120e-03 -7.007275115486e-03 --8.933646372492e-03 -1.082013192444e-02 -1.266010687264e-02 -1.444713941799e-02 --1.617501313000e-02 -1.783774835972e-02 -1.942962272361e-02 -2.094519058887e-02 --2.237930149457e-02 -2.372711744690e-02 -2.498412903130e-02 -2.614617028833e-02 --2.720943230507e-02 -2.817047547839e-02 -2.902624041133e-02 -2.977405740903e-02 --3.041165454542e-02 -3.093716427746e-02 -3.134912858868e-02 -3.164650264916e-02 --3.182865698466e-02 -3.189537815236e-02 -3.184686792677e-02 -3.168374100401e-02 --3.140702123818e-02 -3.101813642883e-02 -3.051891168338e-02 -2.991156138346e-02 --2.919867978912e-02 -2.838323031923e-02 -2.746853355148e-02 -2.645825398932e-02 --2.535638564767e-02 -2.416723651317e-02 -2.289541193861e-02 -2.154579703466e-02 --2.012353812540e-02 -1.863402333740e-02 -1.708286239459e-02 -1.547586569425e-02 --1.381902274107e-02 -1.211848001905e-02 -1.038051838184e-02 -8.611530044460e-03 --6.817995259627e-03 -5.006458763405e-03 -3.183506074999e-03 -1.355739735954e-03 -4.702444261774e-04 2.287880924952e-03 4.090658048933e-03 5.872141019292e-03 -7.625994789379e-03 9.346006406019e-03 1.102610685420e-02 1.266039230890e-02 -1.424314472013e-02 1.576885166011e-02 1.723222536401e-02 1.862822089924e-02 -1.995205340120e-02 2.119921431727e-02 2.236548660433e-02 2.344695882920e-02 -2.444003812529e-02 2.534146196321e-02 2.614830869725e-02 2.685800685435e-02 -2.746834313655e-02 2.797746911293e-02 2.838390658129e-02 2.868655158536e-02 -2.888467707741e-02 2.897793422157e-02 2.896635233780e-02 2.885033749128e-02 -2.863066973694e-02 2.830849903352e-02 2.788533984624e-02 2.736306446191e-02 -2.674389504468e-02 2.603039446512e-02 2.522545593952e-02 2.433229152056e-02 -2.335441948430e-02 2.229565066234e-02 2.116007377167e-02 1.995203979781e-02 -1.867614549062e-02 1.733721603445e-02 1.594028695760e-02 1.449058534836e-02 -1.299351044696e-02 1.145461368516e-02 9.879578246670e-03 8.274198223086e-03 -6.644357441323e-03 4.996008039433e-03 3.335148868278e-03 1.667803796964e-03 -3.832333388677e-15 -1.662253695995e-03 -3.312988328793e-03 -4.946296103549e-03 --6.556351406844e-03 - Type L N - 0 1 11 -0.000000000000e+00 2.179313647908e-02 4.353035148500e-02 6.515589437070e-02 -8.661435557316e-02 1.078508357368e-01 1.288111131402e-01 1.494418088701e-01 -1.696905491932e-01 1.895061245890e-01 2.088386449143e-01 2.276396901883e-01 -2.458624564983e-01 2.634618965462e-01 2.803948543723e-01 2.966201938157e-01 -3.120989202896e-01 3.267942954758e-01 3.406719445652e-01 3.536999556995e-01 -3.658489712929e-01 3.770922709447e-01 3.874058456805e-01 3.967684632900e-01 -4.051617245613e-01 4.125701102424e-01 4.189810185926e-01 4.243847934197e-01 -4.287747425303e-01 4.321471465559e-01 4.345012581483e-01 4.358392915717e-01 -4.361664027526e-01 4.354906598801e-01 4.338230046825e-01 4.311772045361e-01 -4.275697955963e-01 4.230200171681e-01 4.175497375648e-01 4.111833717325e-01 -4.039477909438e-01 3.958722248923e-01 3.869881565445e-01 3.773292101283e-01 -3.669310326625e-01 3.558311694484e-01 3.440689339701e-01 3.316852726619e-01 -3.187226250217e-01 3.052247795617e-01 2.912367261015e-01 2.768045049186e-01 -2.619750532809e-01 2.467960498929e-01 2.313157577933e-01 2.155828662428e-01 -1.996463321450e-01 1.835552215413e-01 1.673585517181e-01 1.511051344618e-01 -1.348434209883e-01 1.186213490687e-01 1.024861928608e-01 8.648441594503e-02 -7.066152805026e-02 5.506194593974e-02 3.972885891084e-02 2.470409934367e-02 -1.002801871455e-02 -4.260630531350e-03 -1.812480687587e-02 -3.152928504390e-02 --4.444075441587e-02 -5.682791023875e-02 -6.866153736488e-02 -7.991458627492e-02 --9.056224117035e-02 -1.005819799495e-01 -1.099536259108e-01 -1.186593910576e-01 --1.266839109077e-01 -1.340142707436e-01 -1.406400232677e-01 -1.465531976587e-01 --1.517483000572e-01 -1.562223055341e-01 -1.599746416325e-01 -1.630071635954e-01 --1.653241214276e-01 -1.669321189622e-01 -1.678400651353e-01 -1.680591176933e-01 --1.676026195889e-01 -1.664860283409e-01 -1.647268386600e-01 -1.623444986645e-01 --1.593603200295e-01 -1.557973824329e-01 -1.516804326828e-01 -1.470357789218e-01 --1.418911803256e-01 -1.362757327206e-01 -1.302197505626e-01 -1.237546457239e-01 --1.169128035497e-01 -1.097274566472e-01 -1.022325568785e-01 -9.446264603178e-02 --8.645272564422e-02 -7.823812645441e-02 -6.985437795556e-02 -6.133707852051e-02 --5.272176656260e-02 -4.404379319008e-02 -3.533819680296e-02 -2.663958007102e-02 --1.798198971996e-02 -9.398799539355e-03 -9.225970114397e-04 7.414926056442e-03 -1.558307853021e-02 2.355227023146e-02 3.129410717687e-02 3.878148146859e-02 -4.598865555143e-02 5.289134057545e-02 5.946676862642e-02 6.569375861076e-02 -7.155277560676e-02 7.702598351955e-02 8.209729090292e-02 8.675238983800e-02 -9.097878778495e-02 9.476583235083e-02 9.810472894348e-02 1.009885513080e-01 -1.034122449693e-01 1.053726236294e-01 1.068683585957e-01 1.078999613413e-01 -1.084697593221e-01 1.085818652020e-01 1.082421396595e-01 1.074581479724e-01 -1.062391105989e-01 1.045958479944e-01 1.025407199239e-01 1.000875595466e-01 -9.725160257056e-02 9.404941178636e-02 9.049879730973e-02 8.661873287188e-02 -8.242926851147e-02 7.795144003197e-02 7.320717559788e-02 6.821919985121e-02 -6.301093593613e-02 5.760640582461e-02 5.203012933925e-02 4.630702227151e-02 -4.046229399383e-02 3.452134496283e-02 2.850966450844e-02 2.245272929924e-02 -1.637590286890e-02 1.030433658157e-02 4.262872405336e-03 -1.724052146652e-03 --7.632496559132e-03 -1.343910700584e-02 -1.912120286645e-02 -2.465685976182e-02 --3.002498881579e-02 -3.520541186869e-02 -4.017893238544e-02 -4.492740181995e-02 --4.943378121662e-02 -5.368219785040e-02 -5.765799672723e-02 -6.134778678827e-02 --6.473948168299e-02 -6.782233499842e-02 -7.058696985439e-02 -7.302540279695e-02 --7.513106194530e-02 -7.689879936999e-02 -7.832489770306e-02 -7.940707100312e-02 --8.014445992091e-02 -8.053762123268e-02 -8.058851183007e-02 -8.030046727682e-02 --7.967817506226e-02 -7.872764270218e-02 -7.745616085613e-02 -7.587226164889e-02 --7.398567240102e-02 -7.180726499017e-02 -6.934900108004e-02 -6.662387346879e-02 --6.364584382149e-02 -6.042977706421e-02 -5.699137272778e-02 -5.334709353956e-02 --4.951409156995e-02 -4.551013224788e-02 -4.135351656568e-02 -3.706300179806e-02 --3.265772106416e-02 -2.815710206293e-02 -2.358078531356e-02 -1.894854223191e-02 --1.428019337201e-02 -9.595527158838e-03 -4.914219434093e-03 -2.557541309840e-04 -4.360654612551e-03 8.916138600968e-03 1.339224969642e-02 1.777103162032e-02 -2.203508917061e-02 2.616765459631e-02 3.015265088436e-02 3.397475172781e-02 -3.761943795926e-02 4.107305024936e-02 4.432283788633e-02 4.735700346988e-02 -5.016474336993e-02 5.273628381917e-02 5.506291252654e-02 5.713700571763e-02 -5.895205052719e-02 6.050266268794e-02 6.178459947919e-02 6.279476791836e-02 -6.353122819741e-02 6.399319238558e-02 6.418101843872e-02 6.409619957396e-02 -6.374134908698e-02 6.312018070691e-02 6.223748460108e-02 6.109909915894e-02 -5.971187870037e-02 5.808365726915e-02 5.622320868722e-02 5.414020305894e-02 -5.184515992814e-02 4.934939830240e-02 4.666498377061e-02 4.380467294984e-02 -4.078185550705e-02 3.761049400912e-02 3.430506186180e-02 3.088047960438e-02 -2.735204983156e-02 2.373539101786e-02 2.004637052257e-02 1.630103705456e-02 -1.251555287685e-02 8.706126029876e-03 4.888942850580e-03 1.080101061262e-03 --2.704456301719e-03 -6.449005854733e-03 -1.013810747059e-02 -1.375666626791e-02 --1.728999274300e-02 -2.072386081036e-02 -2.404456352797e-02 -2.723896629411e-02 --3.029455731476e-02 -3.319949515228e-02 -3.594265317999e-02 -3.851366078028e-02 --4.090294113888e-02 -4.310174550227e-02 -4.510218378084e-02 -4.689725139583e-02 --4.848085228438e-02 -4.984781799297e-02 -5.099392280627e-02 -5.191589487472e-02 --5.261142332107e-02 -5.307916132229e-02 -5.331872518030e-02 -5.333068941089e-02 --5.311657789653e-02 -5.267885116464e-02 -5.202088986843e-02 -5.114697456235e-02 --5.006226187908e-02 -4.877275722901e-02 -4.728528415663e-02 -4.560745050123e-02 --4.374761152173e-02 -4.171483015650e-02 -3.951883460044e-02 -3.716997339087e-02 --3.467916820333e-02 -3.205786456648e-02 -2.931798071251e-02 -2.647185478601e-02 --2.353219063955e-02 -2.051200244886e-02 -1.742455838377e-02 -1.428332357382e-02 --1.110190260871e-02 -7.893981814469e-03 -4.673271545616e-03 -1.453448732228e-03 -1.751900081738e-03 4.929334975789e-03 8.065617937246e-03 1.114776696915e-02 -1.416310880441e-02 1.709933001595e-02 1.994452632029e-02 2.268724988081e-02 -2.531655442606e-02 2.782203800892e-02 3.019388324267e-02 3.242289486188e-02 -3.450053446752e-02 3.641895232851e-02 3.817101612440e-02 3.975033652761e-02 -4.115128953698e-02 4.236903548838e-02 4.339953468251e-02 4.423955958394e-02 -4.488670356038e-02 4.533938614526e-02 4.559685482141e-02 4.565918333805e-02 -4.552726658742e-02 4.520281208183e-02 4.468832808529e-02 4.398710846806e-02 -4.310321436509e-02 4.204145273253e-02 4.080735190866e-02 3.940713429764e-02 -3.784768630540e-02 3.613652566818e-02 3.428176632399e-02 3.229208098661e-02 -3.017666159085e-02 2.794517778511e-02 2.560773365507e-02 2.317482286836e-02 -2.065728243558e-02 1.806624528813e-02 1.541309187673e-02 1.270940099779e-02 -9.966900056893e-03 7.197414979788e-03 4.412819981767e-03 1.624987405761e-03 --1.154262161871e-03 -3.913209291151e-03 -6.640284420206e-03 -9.324115679194e-03 --1.195357563138e-02 -1.451782674183e-02 -1.700636539054e-02 -1.940906425357e-02 --2.171621288381e-02 -2.391855633098e-02 -2.600733164970e-02 -2.797430215388e-02 --2.981178928597e-02 -3.151270197986e-02 -3.307056340770e-02 -3.447953501202e-02 --3.573443773653e-02 -3.683077038102e-02 -3.776472501805e-02 -3.853319942200e-02 --3.913380647322e-02 -3.956488051348e-02 -3.982548064107e-02 -3.991539094731e-02 --3.983511770864e-02 -3.958588356111e-02 -3.916961869685e-02 -3.858894913381e-02 --3.784718212267e-02 -3.694828876587e-02 -3.589688393539e-02 -3.469820358660e-02 --3.335807957590e-02 -3.188291209987e-02 -3.027963988299e-02 -2.855570824968e-02 --2.671903522478e-02 -2.477797581401e-02 -2.274128462294e-02 -2.061807697903e-02 --1.841778872704e-02 -1.615013487255e-02 -1.382506725260e-02 -1.145273141545e-02 --9.043422894160e-03 -6.607543060106e-03 -4.155554743638e-03 -1.697937809094e-03 -7.548551292782e-04 3.192442665382e-03 5.604558050438e-03 7.981091953342e-03 -1.031213435602e-02 1.258801541199e-02 1.479934510156e-02 1.693705152268e-02 -1.899241766321e-02 2.095711650716e-02 2.282324433526e-02 2.458335208836e-02 -2.623047467085e-02 2.775815808054e-02 2.916048426097e-02 3.043209358222e-02 -3.156820486655e-02 3.256463288599e-02 3.341780326972e-02 3.412476477049e-02 -3.468319885036e-02 3.509142655758e-02 3.534841267794e-02 3.545376715538e-02 -3.540774378797e-02 3.521123621720e-02 3.486577123920e-02 3.437349947812e-02 -3.373718347255e-02 3.296018323647e-02 3.204643936670e-02 3.100045377861e-02 -2.982726816161e-02 2.853244025504e-02 2.712201805375e-02 2.560251206090e-02 -2.398086571340e-02 2.226442411211e-02 2.046090119586e-02 1.857834550417e-02 -1.662510467876e-02 1.460978885874e-02 1.254123312817e-02 1.042845917830e-02 -8.280636348997e-03 6.107042216126e-03 3.917022892714e-03 1.719953212175e-03 --4.748030382492e-04 -2.657932666617e-03 -4.820212242419e-03 -6.952546716402e-03 --9.046007333782e-03 -1.109186868417e-02 -1.308164473581e-02 -1.500712370661e-02 --1.686040163002e-02 -1.863391447977e-02 -2.032046872421e-02 -2.191327018802e-02 --2.340595110683e-02 -2.479259526816e-02 -2.606776114068e-02 -2.722650290280e-02 --2.826438929035e-02 -2.917752019323e-02 -2.996254094007e-02 -3.061665422028e-02 --3.113762960290e-02 -3.152381062200e-02 -3.177411940849e-02 -3.188805885902e-02 --3.186571234266e-02 -3.170774095667e-02 -3.141537835273e-02 -3.099042316541e-02 --3.043522908428e-02 -2.975269262116e-02 -2.894623863318e-02 -2.801980367190e-02 --2.697781723715e-02 -2.582518102325e-02 -2.456724625301e-02 -2.320978920269e-02 --2.175898502853e-02 -2.022138001172e-02 -1.860386234538e-02 -1.691363159244e-02 --1.515816694857e-02 -1.334519444867e-02 -1.148265325965e-02 -9.578661205024e-03 --7.641479670110e-03 -5.679478038152e-03 -3.701097809389e-03 -1.714816555726e-03 -2.708881362214e-04 2.247574581434e-03 4.206872621096e-03 6.140518806220e-03 -8.040390993455e-03 9.898542209267e-03 1.170723364232e-02 1.345896662807e-02 -1.514651349440e-02 1.676294714233e-02 1.830166924172e-02 1.975643692822e-02 -2.112138789423e-02 2.239106377415e-02 2.356043173148e-02 2.462490416344e-02 -2.558035644686e-02 2.642314265784e-02 2.715010920632e-02 2.775860633575e-02 -2.824649744724e-02 2.861216621701e-02 2.885452148515e-02 2.897299990333e-02 -2.896756633873e-02 2.883871204058e-02 2.858745058548e-02 2.821531162677e-02 -2.772433248241e-02 2.711704760501e-02 2.639647598612e-02 2.556610655562e-02 -2.462988164546e-02 2.359217859434e-02 2.245778957821e-02 2.123189975812e-02 -1.992006384398e-02 1.852818117902e-02 1.706246945562e-02 1.552943717875e-02 -1.393585499764e-02 1.228872603135e-02 1.059525531705e-02 8.862818513530e-03 -7.098929994781e-03 5.311210470988e-03 3.507354275343e-03 1.695096456355e-03 --1.178201845162e-04 -1.923677970274e-03 -3.714817002090e-03 -5.483667451956e-03 --7.222781358961e-03 -8.924863796434e-03 -1.058280328031e-02 -1.218970129275e-02 --1.373890079919e-02 -1.522401364171e-02 -1.663894669672e-02 -1.797792669063e-02 --1.923552357318e-02 -2.040667235442e-02 -2.148669331847e-02 -2.247131053399e-02 --2.335666858892e-02 -2.413934748492e-02 -2.481637563465e-02 -2.538524091358e-02 --2.584389972606e-02 -2.619078405428e-02 -2.642480646702e-02 -2.654536307404e-02 --2.655233442062e-02 -2.644608432550e-02 -2.622745667403e-02 -2.589777018717e-02 --2.545881119531e-02 -2.491282445423e-02 -2.426250204868e-02 -2.351097043711e-02 --2.266177569858e-02 -2.171886705035e-02 -2.068657871186e-02 -1.956961019731e-02 --1.837300512556e-02 -1.710212864223e-02 -1.576264355393e-02 -1.436048528026e-02 --1.290183573343e-02 -1.139309623976e-02 -9.840859620859e-03 -8.251881555604e-03 --6.633051346524e-03 -4.991362216394e-03 -3.333881262430e-03 -1.667719196465e-03 --1.252029249129e-15 1.662169377033e-03 3.311729145596e-03 4.941696507830e-03 -6.545195062944e-03 - Type L N - 0 1 12 -0.000000000000e+00 2.353708990158e-02 4.700372424124e-02 7.032969852654e-02 -9.344530942980e-02 1.162816029389e-01 1.387706196013e-01 1.608456359111e-01 -1.824414009039e-01 2.034943670446e-01 2.239429145167e-01 2.437275680475e-01 -2.627912054346e-01 2.810792569734e-01 2.985398950222e-01 3.151242129802e-01 -3.307863929987e-01 3.454838617916e-01 3.591774339565e-01 3.718314422736e-01 -3.834138544972e-01 3.938963762135e-01 4.032545393913e-01 4.114677763133e-01 -4.185194786323e-01 4.243970413570e-01 4.290918916348e-01 4.325995022568e-01 -4.349193898750e-01 4.360550979795e-01 4.360141647480e-01 4.348080759372e-01 -4.324522030470e-01 4.289657270467e-01 4.243715480088e-01 4.186961810524e-01 -4.119696390512e-01 4.042253026151e-01 3.954997778998e-01 3.858327428509e-01 -3.752667825307e-01 3.638472142173e-01 3.516219030072e-01 3.386410686858e-01 -3.249570846632e-01 3.106242698036e-01 2.956986739995e-01 2.802378583656e-01 -2.643006709472e-01 2.479470188474e-01 2.312376376950e-01 2.142338593760e-01 -1.969973789599e-01 1.795900217460e-01 1.620735113556e-01 1.445092397843e-01 -1.269580403177e-01 1.094799641977e-01 9.213406190838e-02 7.497816992517e-02 -5.806870374771e-02 4.146045800476e-02 2.520641438815e-02 9.357558136381e-03 --6.037296249583e-03 -2.093166941763e-02 -3.528157110542e-02 -4.904564305986e-02 --6.218529043189e-02 -7.466480119359e-02 -8.645145317610e-02 -9.751560838008e-02 --1.078307942646e-01 -1.173737717757e-01 -1.261245899322e-01 -1.340666268415e-01 --1.411866170774e-01 -1.474746654061e-01 -1.529242469034e-01 -1.575321935658e-01 --1.612986675667e-01 -1.642271213709e-01 -1.663242449674e-01 -1.675999005374e-01 --1.680670449203e-01 -1.677416402926e-01 -1.666425535187e-01 -1.647914446778e-01 --1.622126453124e-01 -1.589330269841e-01 -1.549818607578e-01 -1.503906682705e-01 --1.451930650704e-01 -1.394245969404e-01 -1.331225699455e-01 -1.263258749621e-01 --1.190748074691e-01 -1.114108833905e-01 -1.033766517948e-01 -9.501550526063e-02 --8.637148872350e-02 -7.748910761920e-02 -6.841313613556e-02 -5.918842637876e-02 --4.985971924994e-02 -4.047145781489e-02 -3.106760393315e-02 -2.169145889320e-02 --1.238548877768e-02 -3.191155256908e-03 5.851247519595e-03 1.470274929490e-02 -2.332585273513e-02 3.168467454995e-02 3.974507817269e-02 4.747479751034e-02 -5.484355131576e-02 6.182314777826e-02 6.838757897434e-02 7.451310486650e-02 -8.017832658628e-02 8.536424878543e-02 9.005433088884e-02 9.423452713178e-02 -9.789331531380e-02 1.010217142514e-01 1.036132899601e-01 1.056641506473e-01 -1.071729306415e-01 1.081407634361e-01 1.085712440671e-01 1.084703810920e-01 -1.078465384785e-01 1.067103677557e-01 1.050747308170e-01 1.029546138047e-01 -1.003670325408e-01 9.733093000097e-02 9.386706636109e-02 8.999790217305e-02 -8.574747525279e-02 8.114127188606e-02 7.620609297763e-02 7.096991578680e-02 -6.546175190632e-02 5.971150215286e-02 5.374980904527e-02 4.760790755214e-02 -4.131747479179e-02 3.491047936708e-02 2.841903101303e-02 2.187523122841e-02 -1.531102555213e-02 8.758058132643e-03 2.247529222459e-03 -4.189943788083e-03 --1.052446120516e-02 -1.672697116450e-02 -2.276939451983e-02 -2.862474397146e-02 --3.426723695013e-02 -3.967240180334e-02 -4.481717686565e-02 -4.968000202968e-02 --5.424090247206e-02 -5.848156422675e-02 -6.238540133771e-02 -6.593761436314e-02 --6.912524004507e-02 -7.193719199910e-02 -7.436429232180e-02 -7.639929405484e-02 --7.803689448736e-02 -7.927373932002e-02 -8.010841775533e-02 -8.054144862004e-02 --8.057525766524e-02 -8.021414622903e-02 -7.946425148455e-02 -7.833349853277e-02 --7.683154463486e-02 -7.496971591223e-02 -7.276093687458e-02 -7.021965316594e-02 --6.736174794674e-02 -6.420445235596e-02 -6.076625052070e-02 -5.706677960214e-02 --5.312672538540e-02 -4.896771393767e-02 -4.461219987235e-02 -4.008335176876e-02 --3.540493530523e-02 -3.060119466994e-02 -2.569673281675e-02 -2.071639113458e-02 --1.568512909669e-02 -1.062790445193e-02 -5.569554513084e-03 -5.346790876653e-04 -4.452474415033e-03 9.368123181620e-03 1.418905799432e-02 1.889274854904e-02 -2.345744462895e-02 2.786227269385e-02 3.208732747020e-02 3.611375815340e-02 -3.992384886211e-02 4.350109301388e-02 4.683026132252e-02 4.989746314961e-02 -5.269020097593e-02 5.519741779228e-02 5.740953724413e-02 5.931849639975e-02 -6.091777104672e-02 6.220239345799e-02 6.316896260401e-02 6.381564682340e-02 -6.414217899965e-02 6.414984432661e-02 6.384146077934e-02 6.322135244057e-02 -6.229531586555e-02 6.107057969925e-02 5.955575779032e-02 5.776079607494e-02 -5.569691353103e-02 5.337653752900e-02 5.081323392948e-02 4.802163230036e-02 -4.501734664615e-02 4.181689206068e-02 3.843759773068e-02 3.489751673178e-02 -3.121533307059e-02 2.741026643610e-02 2.350197513124e-02 1.951045766075e-02 -1.545595345435e-02 1.135884320487e-02 7.239549299492e-03 3.118436818400e-03 --9.842844310189e-04 -5.048656384379e-03 -9.055067245289e-03 -1.298434362790e-02 --1.681783989414e-02 -2.053752427915e-02 -2.412606141631e-02 -2.756689089357e-02 --3.084430149349e-02 -3.394350079322e-02 -3.685067982415e-02 -3.955307251732e-02 --4.203900968671e-02 -4.429796733090e-02 -4.632060906158e-02 -4.809882249738e-02 --4.962574949065e-02 -5.089581008577e-02 -5.190472013790e-02 -5.264950255174e-02 --5.312849213097e-02 -5.334133405930e-02 -5.328897606445e-02 -5.297365434650e-02 --5.239887338089e-02 -5.156937973537e-02 -5.049113006756e-02 -4.917125349694e-02 --4.761800857021e-02 -4.584073506414e-02 -4.384980089242e-02 -4.165654440541e-02 --3.927321239134e-02 -3.671289410659e-02 -3.398945167938e-02 -3.111744724624e-02 --2.811206719445e-02 -2.498904389459e-02 -2.176457531741e-02 -1.845524293660e-02 --1.507792832477e-02 -1.164972885379e-02 -8.187872912099e-03 -4.709635051572e-03 --1.232251474072e-03 2.227163736248e-03 5.651701235047e-03 9.024737502409e-03 -1.233001400794e-02 1.555171408592e-02 1.867453716340e-02 2.168376999907e-02 -2.456535460730e-02 2.730595255964e-02 2.989300537537e-02 3.231479073357e-02 -3.456047426051e-02 3.662015666949e-02 3.848491605360e-02 4.014684515668e-02 -4.159908347314e-02 4.283584405281e-02 4.385243491366e-02 4.464527499170e-02 -4.521190458397e-02 4.555099026790e-02 4.566232430652e-02 4.554681857598e-02 -4.520649307801e-02 4.464445912564e-02 4.386489731591e-02 4.287303042770e-02 -4.167509140666e-02 4.027828662191e-02 3.869075460117e-02 3.692152047148e-02 -3.498044635225e-02 3.287817796553e-02 3.062608774515e-02 2.823621474180e-02 -2.572120163483e-02 2.309422917390e-02 2.036894838409e-02 1.755941087725e-02 -1.467999761934e-02 1.174534650916e-02 8.770279127717e-03 5.769727019243e-03 -2.758657865373e-03 -2.479980876935e-04 -3.235420992346e-03 -6.188973401328e-03 --9.094270963014e-03 -1.193725147333e-02 -1.470424195731e-02 -1.738202346467e-02 --1.995789327655e-02 -2.241972423481e-02 -2.475602092095e-02 -2.695597242837e-02 --2.900950148962e-02 -3.090730973942e-02 -3.264091891419e-02 -3.420270780943e-02 --3.558594483822e-02 -3.678481605604e-02 -3.779444854007e-02 -3.861092903422e-02 --3.923131779467e-02 -3.965365759447e-02 -3.987697786926e-02 -3.990129401035e-02 --3.972760183458e-02 -3.935786728378e-02 -3.879501142990e-02 -3.804289088384e-02 --3.710627372834e-02 -3.599081111610e-02 -3.470300469494e-02 -3.325017004113e-02 --3.164039630063e-02 -2.988250225524e-02 -2.798598904736e-02 -2.596098981158e-02 --2.381821647562e-02 -2.156890400536e-02 -1.922475237966e-02 -1.679786659066e-02 --1.430069497284e-02 -1.174596617125e-02 -9.146625064051e-03 -6.515767958077e-03 --3.866577378258e-03 -1.212256771825e-03 1.434034552759e-03 4.059245935026e-03 -6.650499007036e-03 9.195150166160e-03 1.168085157626e-02 1.409561040614e-02 -1.642784602408e-02 1.866644487885e-02 2.080081280995e-02 2.282092454377e-02 -2.471737014747e-02 2.648139822798e-02 2.810495568084e-02 2.958072381109e-02 -3.090215066733e-02 3.206347944897e-02 3.305977286697e-02 3.388693335837e-02 -3.454171907583e-02 3.502175559447e-02 3.532554329940e-02 3.545246043867e-02 -3.540276184772e-02 3.517757337235e-02 3.477888203842e-02 3.420952203676e-02 -3.347315661224e-02 3.257425596523e-02 3.151807129299e-02 3.031060511655e-02 -2.895857805645e-02 2.746939223695e-02 2.585109151430e-02 2.411231873911e-02 -2.226227027654e-02 2.031064802024e-02 1.826760914738e-02 1.614371387180e-02 -1.394987146110e-02 1.169728479064e-02 9.397393713563e-03 7.061817530047e-03 -4.702296842670e-03 2.330635085978e-03 -4.135998106041e-05 -2.401934532288e-03 --4.739446396347e-03 -7.042421962398e-03 -9.299611993816e-03 -1.150004608071e-02 --1.363308546998e-02 -1.568847402071e-02 -1.765638704319e-02 -1.952747779094e-02 --2.129292138817e-02 -2.294445598809e-02 -2.447442097247e-02 -2.587579201777e-02 --2.714221286967e-02 -2.826802368440e-02 -2.924828581278e-02 -3.007880292119e-02 --3.075613836144e-02 -3.127762872114e-02 -3.164139350451e-02 -3.184634091319e-02 --3.189216971562e-02 -3.177936721315e-02 -3.150920332967e-02 -3.108372087090e-02 --3.050572201797e-02 -2.977875113787e-02 -2.890707401143e-02 -2.789565359657e-02 --2.675012246076e-02 -2.547675203290e-02 -2.408241883942e-02 -2.257456790371e-02 --2.096117350112e-02 -1.925069747389e-02 -1.745204532154e-02 -1.557452029241e-02 --1.362777571047e-02 -1.162176577991e-02 -9.566695115673e-03 -7.472967254063e-03 --5.351132400982e-03 -3.211834678294e-03 -1.065759130111e-03 1.076421249074e-03 -3.204098203719e-03 5.306780365748e-03 7.374144607736e-03 9.396086351181e-03 -1.136276858645e-02 1.326466936830e-02 1.509262755937e-02 1.683788660358e-02 -1.849213612178e-02 2.004755113398e-02 2.149682872434e-02 2.283322197900e-02 -2.405057104052e-02 2.514333113776e-02 2.610659746533e-02 2.693612680282e-02 -2.762835578046e-02 2.818041571472e-02 2.859014395465e-02 2.885609169692e-02 -2.897752824546e-02 2.895444170862e-02 2.878753614502e-02 2.847822518599e-02 -2.802862218038e-02 2.744152692387e-02 2.672040905195e-02 2.586938819154e-02 -2.489321098195e-02 2.379722509086e-02 2.258735036519e-02 2.127004727041e-02 -1.985228278456e-02 1.834149392510e-02 1.674554909766e-02 1.507270746599e-02 -1.333157655084e-02 1.153106827415e-02 9.680353671115e-03 7.788816498768e-03 -5.866005974164e-03 3.921588878623e-03 1.965301266782e-03 6.900020163358e-06 --1.943885515106e-03 -3.877401568169e-03 -5.784117425114e-03 -7.654672120294e-03 --9.479920109940e-03 -1.125097570653e-02 -1.295925605940e-02 -1.459652247490e-02 --1.615491987864e-02 -1.762701423181e-02 -1.900582772493e-02 -2.028487158338e-02 --2.145817633196e-02 -2.252031937854e-02 -2.346644979062e-02 -2.429231015303e-02 --2.499425540968e-02 -2.556926860766e-02 -2.601497347730e-02 -2.632964379787e-02 --2.651220951470e-02 -2.656225958916e-02 -2.648004157988e-02 -2.626645796893e-02 --2.592305926328e-02 -2.545203391726e-02 -2.485619513762e-02 -2.413896464740e-02 --2.330435350019e-02 -2.235694005013e-02 -2.130184519668e-02 -2.014470503651e-02 --1.889164106679e-02 -1.754922809596e-02 -1.612446002881e-02 -1.462471370237e-02 --1.305771095848e-02 -1.143147914647e-02 -9.754310256928e-03 -8.034718893153e-03 --6.281399292208e-03 -4.503181611217e-03 -2.708987697548e-03 -9.077865632151e-04 -8.914502154210e-04 2.679792952024e-03 4.448397939574e-03 6.188550957985e-03 -7.891709987112e-03 9.549546916831e-03 1.115398805161e-02 1.269725321357e-02 -1.417189325570e-02 1.557082580540e-02 1.688736906771e-02 1.811527352810e-02 -1.924875140520e-02 2.028250371582e-02 2.121174482664e-02 2.203222437996e-02 -2.274024649412e-02 2.333268615299e-02 2.380700271336e-02 2.416125047307e-02 -2.439408625788e-02 2.450477399972e-02 2.449318629390e-02 2.435980293789e-02 -2.410570646921e-02 2.373257473464e-02 2.324267053749e-02 2.263882842416e-02 -2.192443868490e-02 2.110342865723e-02 2.018024143375e-02 1.915981208813e-02 -1.804754154540e-02 1.684926823351e-02 1.557123766391e-02 1.422007009836e-02 -1.280272646852e-02 1.132647272246e-02 9.798842779793e-03 8.227600283368e-03 -6.620699340510e-03 4.986244451547e-03 3.332449826440e-03 1.667598292818e-03 -5.962649506421e-14 -1.662048875611e-03 -3.310307220713e-03 -4.936629666149e-03 --6.533006660971e-03 - Type L N - 0 2 0 -0.000000000000e+00 6.151333446762e-06 2.460487800223e-05 5.535915194780e-05 -9.841173105899e-05 1.537592083733e-04 2.213972082458e-04 3.013203802203e-04 -3.935224034400e-04 4.979959858620e-04 6.147328643748e-04 7.437238061971e-04 -8.849586091118e-04 1.038426102541e-03 1.204114148362e-03 1.382009641477e-03 -1.572098511301e-03 1.774365722741e-03 1.988795277015e-03 2.215370213351e-03 -2.454072609935e-03 2.704883585496e-03 2.967783300640e-03 3.242750959398e-03 -3.529764810944e-03 3.828802151048e-03 4.139839324043e-03 4.462851724476e-03 -4.797813799119e-03 5.144699048843e-03 5.503480030702e-03 5.874128360038e-03 -6.256614712691e-03 6.650908827169e-03 7.056979507058e-03 7.474794623387e-03 -7.904321117090e-03 8.345525001577e-03 8.798371365319e-03 9.262824374523e-03 -9.738847275919e-03 1.022640239958e-02 1.072545116179e-02 1.123595406802e-02 -1.175787071599e-02 1.229115979875e-02 1.283577910784e-02 1.339168553658e-02 -1.395883508334e-02 1.453718285494e-02 1.512668307009e-02 1.572728906294e-02 -1.633895328661e-02 1.696162731691e-02 1.759526185599e-02 1.823980673619e-02 -1.889521092388e-02 1.956142252333e-02 2.023838878078e-02 2.092605608844e-02 -2.162436998860e-02 2.233327517785e-02 2.305271551134e-02 2.378263400702e-02 -2.452297285010e-02 2.527367339742e-02 2.603467618203e-02 2.680592091770e-02 -2.758734650356e-02 2.837889102883e-02 2.918049177751e-02 2.999208523327e-02 -3.081360708426e-02 3.164499222813e-02 3.248617477692e-02 3.333708806224e-02 -3.419766464030e-02 3.506783629711e-02 3.594753405376e-02 3.683668817167e-02 -3.773522815796e-02 3.864308277085e-02 3.956018002516e-02 4.048644719780e-02 -4.142181083340e-02 4.236619674989e-02 4.331953004423e-02 4.428173509816e-02 -4.525273558400e-02 4.623245447050e-02 4.722081402876e-02 4.821773583819e-02 -4.922314079254e-02 5.023694910596e-02 5.125908031911e-02 5.228945330537e-02 -5.332798627704e-02 5.437459679160e-02 5.542920175808e-02 5.649171744338e-02 -5.756205947875e-02 5.864014286621e-02 5.972588198510e-02 6.081919059865e-02 -6.191998186058e-02 6.302816832176e-02 6.414366193692e-02 6.526637407142e-02 -6.639621550800e-02 6.753309645369e-02 6.867692654663e-02 6.982761486302e-02 -7.098506992412e-02 7.214919970320e-02 7.331991163267e-02 7.449711261111e-02 -7.568070901045e-02 7.687060668312e-02 7.806671096926e-02 7.926892670401e-02 -8.047715822478e-02 8.169130937856e-02 8.291128352931e-02 8.413698356539e-02 -8.536831190694e-02 8.660517051338e-02 8.784746089095e-02 8.909508410021e-02 -9.034794076364e-02 9.160593107325e-02 9.286895479821e-02 9.413691129255e-02 -9.540969950282e-02 9.668721797590e-02 9.796936486668e-02 9.925603794593e-02 -1.005471346081e-01 1.018425518791e-01 1.031421864243e-01 1.044459345564e-01 -1.057536922434e-01 1.070653551164e-01 1.083808184777e-01 1.096999773088e-01 -1.110227262786e-01 1.123489597511e-01 1.136785717938e-01 1.150114561856e-01 -1.163475064250e-01 1.176866157382e-01 1.190286770876e-01 1.203735831792e-01 -1.217212264716e-01 1.230714991840e-01 1.244242933040e-01 1.257795005966e-01 -1.271370126117e-01 1.284967206931e-01 1.298585159862e-01 1.312222894466e-01 -1.325879318487e-01 1.339553337933e-01 1.353243857168e-01 1.366949778989e-01 -1.380670004714e-01 1.394403434265e-01 1.408148966248e-01 1.421905498044e-01 -1.435671925888e-01 1.449447144955e-01 1.463230049445e-01 1.477019532664e-01 -1.490814487115e-01 1.504613804574e-01 1.518416376183e-01 1.532221092527e-01 -1.546026843724e-01 1.559832519508e-01 1.573637009312e-01 1.587439202355e-01 -1.601237987727e-01 1.615032254470e-01 1.628820891666e-01 1.642602788521e-01 -1.656376834450e-01 1.670141919159e-01 1.683896932733e-01 1.697640765719e-01 -1.711372309210e-01 1.725090454930e-01 1.738794095319e-01 1.752482123615e-01 -1.766153433942e-01 1.779806921391e-01 1.793441482104e-01 1.807056013362e-01 -1.820649413663e-01 1.834220582810e-01 1.847768421993e-01 1.861291833873e-01 -1.874789722667e-01 1.888260994226e-01 1.901704556126e-01 1.915119317744e-01 -1.928504190344e-01 1.941858087161e-01 1.955179923480e-01 1.968468616722e-01 -1.981723086522e-01 1.994942254817e-01 2.008125045921e-01 2.021270386612e-01 -2.034377206212e-01 2.047444436666e-01 2.060471012624e-01 2.073455871525e-01 -2.086397953674e-01 2.099296202323e-01 2.112149563750e-01 2.124956987344e-01 -2.137717425678e-01 2.150429834592e-01 2.163093173272e-01 2.175706404327e-01 -2.188268493871e-01 2.200778411595e-01 2.213235130854e-01 2.225637628736e-01 -2.237984886144e-01 2.250275887872e-01 2.262509622683e-01 2.274685083383e-01 -2.286801266899e-01 2.298857174355e-01 2.310851811145e-01 2.322784187013e-01 -2.334653316120e-01 2.346458217128e-01 2.358197913265e-01 2.369871432407e-01 -2.381477807144e-01 2.393016074857e-01 2.404485277791e-01 2.415884463125e-01 -2.427212683044e-01 2.438468994814e-01 2.449652460847e-01 2.460762148778e-01 -2.471797131530e-01 2.482756487386e-01 2.493639300059e-01 2.504444658760e-01 -2.515171658267e-01 2.525819398992e-01 2.536386987050e-01 2.546873534324e-01 -2.557278158537e-01 2.567599983310e-01 2.577838138234e-01 2.587991758936e-01 -2.598059987137e-01 2.608041970725e-01 2.617936863812e-01 2.627743826801e-01 -2.637462026449e-01 2.647090635926e-01 2.656628834882e-01 2.666075809504e-01 -2.675430752579e-01 2.684692863554e-01 2.693861348596e-01 2.702935420651e-01 -2.711914299504e-01 2.720797211832e-01 2.729583391272e-01 2.738272078467e-01 -2.746862521131e-01 2.755353974098e-01 2.763745699386e-01 2.772036966244e-01 -2.780227051209e-01 2.788315238163e-01 2.796300818381e-01 2.804183090588e-01 -2.811961361010e-01 2.819634943422e-01 2.827203159204e-01 2.834665337389e-01 -2.842020814712e-01 2.849268935661e-01 2.856409052524e-01 2.863440525436e-01 -2.870362722429e-01 2.877175019478e-01 2.883876800545e-01 2.890467457627e-01 -2.896946390799e-01 2.903313008259e-01 2.909566726372e-01 2.915706969711e-01 -2.921733171103e-01 2.927644771665e-01 2.933441220852e-01 2.939121976490e-01 -2.944686504824e-01 2.950134280548e-01 2.955464786849e-01 2.960677515446e-01 -2.965771966622e-01 2.970747649265e-01 2.975604080899e-01 2.980340787726e-01 -2.984957304652e-01 2.989453175330e-01 2.993827952183e-01 2.998081196445e-01 -3.002212478188e-01 3.006221376354e-01 3.010107478787e-01 3.013870382261e-01 -3.017509692506e-01 3.021025024244e-01 3.024416001209e-01 3.027682256178e-01 -3.030823430996e-01 3.033839176601e-01 3.036729153050e-01 3.039493029542e-01 -3.042130484442e-01 3.044641205303e-01 3.047024888889e-01 3.049281241194e-01 -3.051409977466e-01 3.053410822225e-01 3.055283509279e-01 3.057027781750e-01 -3.058643392084e-01 3.060130102071e-01 3.061487682862e-01 3.062715914985e-01 -3.063814588357e-01 3.064783502299e-01 3.065622465553e-01 3.066331296288e-01 -3.066909822118e-01 3.067357880110e-01 3.067675316796e-01 3.067861988179e-01 -3.067917759749e-01 3.067842506484e-01 3.067636112863e-01 3.067298472868e-01 -3.066829489995e-01 3.066229077256e-01 3.065497157184e-01 3.064633661839e-01 -3.063638532809e-01 3.062511721212e-01 3.061253187701e-01 3.059862902461e-01 -3.058340845212e-01 3.056687005208e-01 3.054901381235e-01 3.052983981609e-01 -3.050934824175e-01 3.048753936301e-01 3.046441354877e-01 3.043997126308e-01 -3.041421306508e-01 3.038713960897e-01 3.035875164389e-01 3.032905001388e-01 -3.029803565781e-01 3.026570960922e-01 3.023207299629e-01 3.019712704172e-01 -3.016087306257e-01 3.012331247021e-01 3.008444677015e-01 3.004427756188e-01 -3.000280653881e-01 2.996003548804e-01 2.991596629023e-01 2.987060091947e-01 -2.982394144306e-01 2.977599002136e-01 2.972674890760e-01 2.967622044769e-01 -2.962440708002e-01 2.957131133525e-01 2.951693583611e-01 2.946128329715e-01 -2.940435652458e-01 2.934615841594e-01 2.928669195994e-01 2.922596023620e-01 -2.916396641496e-01 2.910071375683e-01 2.903620561257e-01 2.897044542274e-01 -2.890343671748e-01 2.883518311621e-01 2.876568832728e-01 2.869495614777e-01 -2.862299046309e-01 2.854979524671e-01 2.847537455983e-01 2.839973255105e-01 -2.832287345605e-01 2.824480159721e-01 2.816552138333e-01 2.808503730919e-01 -2.800335395528e-01 2.792047598735e-01 2.783640815610e-01 2.775115529676e-01 -2.766472232874e-01 2.757711425520e-01 2.748833616268e-01 2.739839322068e-01 -2.730729068125e-01 2.721503387859e-01 2.712162822861e-01 2.702707922851e-01 -2.693139245633e-01 2.683457357052e-01 2.673662830950e-01 2.663756249120e-01 -2.653738201259e-01 2.643609284924e-01 2.633370105482e-01 2.623021276065e-01 -2.612563417521e-01 2.601997158362e-01 2.591323134720e-01 2.580541990295e-01 -2.569654376303e-01 2.558660951426e-01 2.547562381760e-01 2.536359340764e-01 -2.525052509208e-01 2.513642575117e-01 2.502130233718e-01 2.490516187388e-01 -2.478801145597e-01 2.466985824853e-01 2.455070948648e-01 2.443057247399e-01 -2.430945458392e-01 2.418736325726e-01 2.406430600253e-01 2.394029039523e-01 -2.381532407721e-01 2.368941475610e-01 2.356257020471e-01 2.343479826045e-01 -2.330610682465e-01 2.317650386205e-01 2.304599740009e-01 2.291459552836e-01 -2.278230639793e-01 2.264913822074e-01 2.251509926894e-01 2.238019787431e-01 -2.224444242756e-01 2.210784137768e-01 2.197040323134e-01 2.183213655220e-01 -2.169304996024e-01 2.155315213114e-01 2.141245179554e-01 2.127095773847e-01 -2.112867879857e-01 2.098562386748e-01 2.084180188913e-01 2.069722185906e-01 -2.055189282373e-01 2.040582387984e-01 2.025902417358e-01 2.011150290001e-01 -1.996326930228e-01 1.981433267098e-01 1.966470234339e-01 1.951438770279e-01 -1.936339817772e-01 1.921174324128e-01 1.905943241041e-01 1.890647524514e-01 -1.875288134788e-01 1.859866036266e-01 1.844382197446e-01 1.828837590838e-01 -1.813233192899e-01 1.797569983950e-01 1.781848948109e-01 1.766071073212e-01 -1.750237350739e-01 1.734348775737e-01 1.718406346748e-01 1.702411065730e-01 -1.686363937981e-01 1.670265972067e-01 1.654118179737e-01 1.637921575857e-01 -1.621677178324e-01 1.605386007994e-01 1.589049088604e-01 1.572667446692e-01 -1.556242111524e-01 1.539774115009e-01 1.523264491631e-01 1.506714278361e-01 -1.490124514585e-01 1.473496242024e-01 1.456830504654e-01 1.440128348629e-01 -1.423390822201e-01 1.406618975642e-01 1.389813861166e-01 1.372976532846e-01 -1.356108046539e-01 1.339209459803e-01 1.322281831820e-01 1.305326223318e-01 -1.288343696485e-01 1.271335314898e-01 1.254302143434e-01 1.237245248199e-01 -1.220165696442e-01 1.203064556477e-01 1.185942897603e-01 1.168801790025e-01 -1.151642304774e-01 1.134465513624e-01 1.117272489014e-01 1.100064303970e-01 -1.082842032022e-01 1.065606747124e-01 1.048359523575e-01 1.031101435940e-01 -1.013833558967e-01 9.965569675111e-02 9.792727364492e-02 9.619819406051e-02 -9.446856546670e-02 9.273849531082e-02 9.100809101076e-02 8.927745994697e-02 -8.754670945452e-02 8.581594681513e-02 8.408527924925e-02 8.235481390807e-02 -8.062465786567e-02 7.889491811102e-02 7.716570154014e-02 7.543711494817e-02 -7.370926502151e-02 7.198225832993e-02 7.025620131871e-02 6.853120030082e-02 -6.680736144908e-02 6.508479078836e-02 6.336359418773e-02 6.164387735277e-02 -5.992574581770e-02 5.820930493774e-02 5.649465988130e-02 5.478191562229e-02 -5.307117693247e-02 5.136254837371e-02 4.965613429041e-02 4.795203880181e-02 -4.625036579443e-02 4.455121891444e-02 4.285470156015e-02 4.116091687443e-02 -3.946996773719e-02 3.778195675792e-02 3.609698626820e-02 3.441515831429e-02 -3.273657464967e-02 3.106133672767e-02 2.938954569415e-02 2.772130238011e-02 -2.605670729441e-02 2.439586061650e-02 2.273886218918e-02 2.108581151136e-02 -1.943680773091e-02 1.779194963746e-02 1.615133565533e-02 1.451506383642e-02 -1.288323185313e-02 1.125593699137e-02 9.633276143567e-03 8.015345801684e-03 -6.402242050331e-03 4.794060559864e-03 3.190896579538e-03 1.592844930701e-03 -1.458260599757e-14 -1.587544267285e-03 -3.169694374082e-03 -4.746357278045e-03 --6.317440398246e-03 - Type L N - 0 2 1 -0.000000000000e+00 1.531812340169e-05 6.126948195257e-05 1.378450217335e-04 -2.450296627545e-04 3.828022948606e-04 5.511357836816e-04 7.499969752689e-04 -9.793467030332e-04 1.239139794813e-03 1.529325081628e-03 1.849845407535e-03 -2.200637640512e-03 2.581632684502e-03 2.992755492811e-03 3.433925082305e-03 -3.905054548999e-03 4.406051084664e-03 4.936815994632e-03 5.497244716642e-03 -6.087226840902e-03 6.706646131177e-03 7.355380547103e-03 8.033302267492e-03 -8.740277714834e-03 9.476167580838e-03 1.024082685315e-02 1.103410484303e-02 -1.185584521429e-02 1.270588601313e-02 1.358405969917e-02 1.449019317754e-02 -1.542410783195e-02 1.638561955894e-02 1.737453880305e-02 1.839067059313e-02 -1.943381457961e-02 2.050376507291e-02 2.160031108270e-02 2.272323635834e-02 -2.387231943022e-02 2.504733365214e-02 2.624804724465e-02 2.747422333942e-02 -2.872562002452e-02 3.000199039070e-02 3.130308257862e-02 3.262863982701e-02 -3.397840052177e-02 3.535209824602e-02 3.674946183101e-02 3.817021540800e-02 -3.961407846100e-02 4.108076588039e-02 4.256998801741e-02 4.408145073957e-02 -4.561485548685e-02 4.716989932875e-02 4.874627502223e-02 5.034367107038e-02 -5.196177178197e-02 5.360025733177e-02 5.525880382165e-02 5.693708334246e-02 -5.863476403671e-02 6.035151016190e-02 6.208698215470e-02 6.384083669577e-02 -6.561272677535e-02 6.740230175951e-02 6.920920745711e-02 7.103308618742e-02 -7.287357684838e-02 7.473031498559e-02 7.660293286182e-02 7.849105952721e-02 -8.039432089007e-02 8.231233978824e-02 8.424473606111e-02 8.619112662205e-02 -8.815112553158e-02 9.012434407094e-02 9.211039081622e-02 9.410887171302e-02 -9.611939015157e-02 9.814154704239e-02 1.001749408923e-01 1.022191678810e-01 -1.042738219380e-01 1.063384948201e-01 1.084127761890e-01 1.104962536896e-01 -1.125885130285e-01 1.146891380531e-01 1.167977108304e-01 1.189138117271e-01 -1.210370194893e-01 1.231669113224e-01 1.253030629721e-01 1.274450488047e-01 -1.295924418883e-01 1.317448140741e-01 1.339017360777e-01 1.360627775606e-01 -1.382275072125e-01 1.403954928328e-01 1.425663014132e-01 1.447394992196e-01 -1.469146518750e-01 1.490913244415e-01 1.512690815034e-01 1.534474872496e-01 -1.556261055565e-01 1.578045000709e-01 1.599822342926e-01 1.621588716574e-01 -1.643339756200e-01 1.665071097367e-01 1.686778377484e-01 1.708457236630e-01 -1.730103318384e-01 1.751712270650e-01 1.773279746482e-01 1.794801404905e-01 -1.816272911743e-01 1.837689940436e-01 1.859048172859e-01 1.880343300143e-01 -1.901571023487e-01 1.922727054973e-01 1.943807118380e-01 1.964806949988e-01 -1.985722299387e-01 2.006548930280e-01 2.027282621286e-01 2.047919166733e-01 -2.068454377458e-01 2.088884081593e-01 2.109204125357e-01 2.129410373837e-01 -2.149498711770e-01 2.169465044320e-01 2.189305297846e-01 2.209015420676e-01 -2.228591383867e-01 2.248029181965e-01 2.267324833757e-01 2.286474383027e-01 -2.305473899294e-01 2.324319478554e-01 2.343007244016e-01 2.361533346828e-01 -2.379893966803e-01 2.398085313134e-01 2.416103625110e-01 2.433945172818e-01 -2.451606257844e-01 2.469083213969e-01 2.486372407853e-01 2.503470239719e-01 -2.520373144027e-01 2.537077590138e-01 2.553580082979e-01 2.569877163696e-01 -2.585965410301e-01 2.601841438308e-01 2.617501901369e-01 2.632943491899e-01 -2.648162941690e-01 2.663157022524e-01 2.677922546771e-01 2.692456367985e-01 -2.706755381492e-01 2.720816524961e-01 2.734636778979e-01 2.748213167611e-01 -2.761542758950e-01 2.774622665664e-01 2.787450045528e-01 2.800022101955e-01 -2.812336084509e-01 2.824389289415e-01 2.836179060060e-01 2.847702787484e-01 -2.858957910856e-01 2.869941917954e-01 2.880652345620e-01 2.891086780217e-01 -2.901242858070e-01 2.911118265905e-01 2.920710741263e-01 2.930018072925e-01 -2.939038101309e-01 2.947768718866e-01 2.956207870465e-01 2.964353553767e-01 -2.972203819589e-01 2.979756772254e-01 2.987010569940e-01 2.993963425011e-01 -3.000613604334e-01 3.006959429600e-01 3.012999277619e-01 3.018731580613e-01 -3.024154826495e-01 3.029267559140e-01 3.034068378642e-01 3.038555941563e-01 -3.042728961170e-01 3.046586207660e-01 3.050126508376e-01 3.053348748012e-01 -3.056251868804e-01 3.058834870714e-01 3.061096811600e-01 3.063036807379e-01 -3.064654032169e-01 3.065947718436e-01 3.066917157114e-01 3.067561697721e-01 -3.067880748467e-01 3.067873776342e-01 3.067540307204e-01 3.066879925844e-01 -3.065892276045e-01 3.064577060637e-01 3.062934041526e-01 3.060963039724e-01 -3.058663935363e-01 3.056036667694e-01 3.053081235086e-01 3.049797694999e-01 -3.046186163960e-01 3.042246817517e-01 3.037979890185e-01 3.033385675387e-01 -3.028464525373e-01 3.023216851136e-01 3.017643122315e-01 3.011743867083e-01 -3.005519672032e-01 2.998971182038e-01 2.992099100119e-01 2.984904187284e-01 -2.977387262371e-01 2.969549201865e-01 2.961390939721e-01 2.952913467161e-01 -2.944117832470e-01 2.935005140777e-01 2.925576553825e-01 2.915833289735e-01 -2.905776622752e-01 2.895407882988e-01 2.884728456147e-01 2.873739783248e-01 -2.862443360330e-01 2.850840738152e-01 2.838933521878e-01 2.826723370758e-01 -2.814211997793e-01 2.801401169391e-01 2.788292705020e-01 2.774888476838e-01 -2.761190409326e-01 2.747200478905e-01 2.732920713544e-01 2.718353192356e-01 -2.703500045193e-01 2.688363452219e-01 2.672945643488e-01 2.657248898497e-01 -2.641275545746e-01 2.625027962275e-01 2.608508573202e-01 2.591719851246e-01 -2.574664316246e-01 2.557344534665e-01 2.539763119094e-01 2.521922727737e-01 -2.503826063901e-01 2.485475875462e-01 2.466874954338e-01 2.448026135942e-01 -2.428932298635e-01 2.409596363168e-01 2.390021292116e-01 2.370210089303e-01 -2.350165799227e-01 2.329891506464e-01 2.309390335083e-01 2.288665448033e-01 -2.267720046544e-01 2.246557369502e-01 2.225180692832e-01 2.203593328868e-01 -2.181798625714e-01 2.159799966603e-01 2.137600769250e-01 2.115204485198e-01 -2.092614599151e-01 2.069834628316e-01 2.046868121724e-01 2.023718659557e-01 -2.000389852461e-01 1.976885340860e-01 1.953208794259e-01 1.929363910551e-01 -1.905354415306e-01 1.881184061067e-01 1.856856626638e-01 1.832375916362e-01 -1.807745759402e-01 1.782970009015e-01 1.758052541820e-01 1.732997257066e-01 -1.707808075892e-01 1.682488940588e-01 1.657043813846e-01 1.631476678019e-01 -1.605791534359e-01 1.579992402275e-01 1.554083318563e-01 1.528068336656e-01 -1.501951525856e-01 1.475736970569e-01 1.449428769541e-01 1.423031035084e-01 -1.396547892309e-01 1.369983478348e-01 1.343341941583e-01 1.316627440867e-01 -1.289844144746e-01 1.262996230684e-01 1.236087884274e-01 1.209123298467e-01 -1.182106672782e-01 1.155042212530e-01 1.127934128024e-01 1.100786633801e-01 -1.073603947839e-01 1.046390290768e-01 1.019149885091e-01 9.918869544009e-02 -9.646057225962e-02 9.373104130998e-02 9.100052480774e-02 8.826944476576e-02 -8.553822291522e-02 8.280728062779e-02 8.007703883803e-02 7.734791796576e-02 -7.462033783879e-02 7.189471761567e-02 6.917147570873e-02 6.645102970730e-02 -6.373379630117e-02 6.102019120422e-02 5.831062907844e-02 5.560552345805e-02 -5.290528667406e-02 5.021032977901e-02 4.752106247207e-02 4.483789302449e-02 -4.216122820534e-02 3.949147320761e-02 3.682903157474e-02 3.417430512744e-02 -3.152769389097e-02 2.888959602282e-02 2.626040774079e-02 2.364052325152e-02 -2.103033467948e-02 1.843023199642e-02 1.584060295128e-02 1.326183300059e-02 -1.069430523944e-02 8.138400332850e-03 5.594496447773e-03 3.062969185583e-03 -5.441915151351e-04 -1.961466293601e-03 -4.453636735344e-03 -6.931955134693e-03 --9.396059710736e-03 -1.184559164102e-02 -1.428019512492e-02 -1.669951744633e-02 --1.910320903574e-02 -2.149092353165e-02 -2.386231784126e-02 -2.621705220053e-02 --2.855479023354e-02 -3.087519901108e-02 -3.317794910861e-02 -3.546271466342e-02 --3.772917343111e-02 -3.997700684126e-02 -4.220590005238e-02 -4.441554200608e-02 --4.660562548045e-02 -4.877584714270e-02 -5.092590760091e-02 -5.305551145506e-02 --5.516436734719e-02 -5.725218801075e-02 -5.931869031913e-02 -6.136359533333e-02 --6.338662834875e-02 -6.538751894120e-02 -6.736600101193e-02 -6.932181283189e-02 --7.125469708505e-02 -7.316440091082e-02 -7.505067594559e-02 -7.691327836338e-02 --7.875196891555e-02 -8.056651296957e-02 -8.235668054694e-02 -8.412224636006e-02 --8.586298984828e-02 -8.757869521294e-02 -8.926915145144e-02 -9.093415239040e-02 --9.257349671783e-02 -9.418698801435e-02 -9.577443478340e-02 -9.733565048052e-02 --9.887045354160e-02 -1.003786674102e-01 -1.018601205638e-01 -1.033146465390e-01 --1.047420839562e-01 -1.061422765424e-01 -1.075150731537e-01 -1.088603277966e-01 --1.101778996484e-01 -1.114676530761e-01 -1.127294576547e-01 -1.139631881848e-01 --1.151687247082e-01 -1.163459525234e-01 -1.174947621997e-01 -1.186150495903e-01 --1.197067158441e-01 -1.207696674170e-01 -1.218038160818e-01 -1.228090789373e-01 --1.237853784159e-01 -1.247326422908e-01 -1.256508036816e-01 -1.265398010595e-01 --1.273995782505e-01 -1.282300844387e-01 -1.290312741676e-01 -1.298031073411e-01 --1.305455492228e-01 -1.312585704350e-01 -1.319421469560e-01 -1.325962601165e-01 --1.332208965957e-01 -1.338160484151e-01 -1.343817129326e-01 -1.349178928343e-01 --1.354245961266e-01 -1.359018361262e-01 -1.363496314496e-01 -1.367680060015e-01 --1.371569889621e-01 -1.375166147738e-01 -1.378469231263e-01 -1.381479589410e-01 --1.384197723545e-01 -1.386624187010e-01 -1.388759584938e-01 -1.390604574056e-01 --1.392159862483e-01 -1.393426209511e-01 -1.394404425382e-01 -1.395095371059e-01 --1.395499957974e-01 -1.395619147782e-01 -1.395453952097e-01 -1.395005432216e-01 --1.394274698847e-01 -1.393262911811e-01 -1.391971279746e-01 -1.390401059799e-01 --1.388553557311e-01 -1.386430125484e-01 -1.384032165054e-01 -1.381361123943e-01 --1.378418496908e-01 -1.375205825179e-01 -1.371724696091e-01 -1.367976742705e-01 --1.363963643424e-01 -1.359687121594e-01 -1.355148945107e-01 -1.350350925984e-01 --1.345294919964e-01 -1.339982826069e-01 -1.334416586176e-01 -1.328598184571e-01 --1.322529647502e-01 -1.316213042720e-01 -1.309650479014e-01 -1.302844105739e-01 --1.295796112340e-01 -1.288508727858e-01 -1.280984220447e-01 -1.273224896865e-01 --1.265233101970e-01 -1.257011218208e-01 -1.248561665089e-01 -1.239886898664e-01 --1.230989410988e-01 -1.221871729584e-01 -1.212536416895e-01 -1.202986069733e-01 --1.193223318724e-01 -1.183250827739e-01 -1.173071293331e-01 -1.162687444158e-01 --1.152102040403e-01 -1.141317873188e-01 -1.130337763986e-01 -1.119164564024e-01 --1.107801153683e-01 -1.096250441892e-01 -1.084515365519e-01 -1.072598888758e-01 --1.060504002507e-01 -1.048233723747e-01 -1.035791094915e-01 -1.023179183271e-01 --1.010401080265e-01 -9.974599008953e-02 -9.843587830681e-02 -9.711008869505e-02 --9.576893943208e-02 -9.441275079160e-02 -9.304184507758e-02 -9.165654655835e-02 --9.025718140046e-02 -8.884407760222e-02 -8.741756492698e-02 -8.597797483621e-02 --8.452564042233e-02 -8.306089634127e-02 -8.158407874494e-02 -8.009552521338e-02 --7.859557468684e-02 -7.708456739764e-02 -7.556284480191e-02 -7.403074951117e-02 --7.248862522382e-02 -7.093681665648e-02 -6.937566947530e-02 -6.780553022714e-02 --6.622674627067e-02 -6.463966570750e-02 -6.304463731317e-02 -6.144201046821e-02 --5.983213508912e-02 -5.821536155936e-02 -5.659204066043e-02 -5.496252350287e-02 --5.332716145741e-02 -5.168630608608e-02 -5.004030907349e-02 -4.838952215812e-02 --4.673429706373e-02 -4.507498543090e-02 -4.341193874871e-02 -4.174550828648e-02 --4.007604502575e-02 -3.840389959242e-02 -3.672942218896e-02 -3.505296252701e-02 --3.337486975997e-02 -3.169549241596e-02 -3.001517833099e-02 -2.833427458227e-02 --2.665312742194e-02 -2.497208221096e-02 -2.329148335329e-02 -2.161167423042e-02 --1.993299713617e-02 -1.825579321183e-02 -1.658040238160e-02 -1.490716328846e-02 --1.323641323026e-02 -1.156848809637e-02 -9.903722304502e-03 -8.242448738125e-03 --6.584998684143e-03 -4.931701771073e-03 -3.282885907621e-03 -1.638877221717e-03 -3.448719112250e-15 1.633423372251e-03 3.261072470652e-03 4.882628890828e-03 -6.497776306984e-03 - Type L N - 0 2 2 -0.000000000000e+00 2.812042383018e-05 1.124715359716e-04 2.530228335488e-04 -4.497235018850e-04 7.025024224280e-04 1.011268200281e-03 1.375909195927e-03 -1.796293564470e-03 2.272269302136e-03 2.803664299517e-03 3.390286402276e-03 -4.031923478537e-03 4.728343493447e-03 5.479294590785e-03 6.284505181453e-03 -7.143684038891e-03 8.056520401495e-03 9.022684081717e-03 1.004182558222e-02 -1.111357621856e-02 1.223754824884e-02 1.341333500987e-02 1.464051106009e-02 -1.591863232905e-02 1.724723627337e-02 1.862584203926e-02 2.005395063144e-02 -2.153104508840e-02 2.305659066398e-02 2.463003501520e-02 2.625080839620e-02 -2.791832385836e-02 2.963197745641e-02 3.139114846044e-02 3.319519957388e-02 -3.504347715725e-02 3.693531145758e-02 3.887001684353e-02 4.084689204604e-02 -4.286522040444e-02 4.492427011796e-02 4.702329450253e-02 4.916153225273e-02 -5.133820770892e-02 5.355253112932e-02 5.580369896706e-02 5.809089415195e-02 -6.041328637708e-02 6.277003238995e-02 6.516027628811e-02 6.758314981927e-02 -7.003777268559e-02 7.252325285227e-02 7.503868686016e-02 7.758316014232e-02 -8.015574734445e-02 8.275551264910e-02 8.538151010339e-02 8.803278395037e-02 -9.070836896367e-02 9.340729078542e-02 9.612856626742e-02 9.887120381516e-02 -1.016342037349e-01 1.044165585836e-01 1.072172535209e-01 1.100352666649e-01 -1.128695694486e-01 1.157191269805e-01 1.185828984057e-01 1.214598372700e-01 -1.243488918857e-01 1.272490056988e-01 1.301591176586e-01 1.330781625877e-01 -1.360050715545e-01 1.389387722459e-01 1.418781893421e-01 1.448222448916e-01 -1.477698586871e-01 1.507199486431e-01 1.536714311721e-01 1.566232215636e-01 -1.595742343614e-01 1.625233837420e-01 1.654695838935e-01 1.684117493930e-01 -1.713487955850e-01 1.742796389591e-01 1.772031975268e-01 1.801183911982e-01 -1.830241421574e-01 1.859193752378e-01 1.888030182955e-01 1.916740025816e-01 -1.945312631144e-01 1.973737390482e-01 2.002003740423e-01 2.030101166275e-01 -2.058019205707e-01 2.085747452379e-01 2.113275559548e-01 2.140593243657e-01 -2.167690287892e-01 2.194556545728e-01 2.221181944431e-01 2.247556488551e-01 -2.273670263375e-01 2.299513438355e-01 2.325076270507e-01 2.350349107771e-01 -2.375322392347e-01 2.399986663991e-01 2.424332563276e-01 2.448350834822e-01 -2.472032330478e-01 2.495368012477e-01 2.518348956542e-01 2.540966354957e-01 -2.563211519592e-01 2.585075884886e-01 2.606551010789e-01 2.627628585657e-01 -2.648300429095e-01 2.668558494765e-01 2.688394873135e-01 2.707801794184e-01 -2.726771630057e-01 2.745296897669e-01 2.763370261255e-01 2.780984534869e-01 -2.798132684832e-01 2.814807832119e-01 2.831003254701e-01 2.846712389819e-01 -2.861928836211e-01 2.876646356275e-01 2.890858878180e-01 2.904560497913e-01 -2.917745481267e-01 2.930408265772e-01 2.942543462559e-01 2.954145858171e-01 -2.965210416303e-01 2.975732279486e-01 2.985706770700e-01 2.995129394934e-01 -3.003995840672e-01 3.012301981318e-01 3.020043876556e-01 3.027217773641e-01 -3.033820108630e-01 3.039847507539e-01 3.045296787440e-01 3.050164957483e-01 -3.054449219859e-01 3.058146970686e-01 3.061255800835e-01 3.063773496684e-01 -3.065698040799e-01 3.067027612555e-01 3.067760588680e-01 3.067895543733e-01 -3.067431250515e-01 3.066366680406e-01 3.064701003632e-01 3.062433589472e-01 -3.059564006380e-01 3.056092022052e-01 3.052017603412e-01 3.047340916539e-01 -3.042062326513e-01 3.036182397201e-01 3.029701890971e-01 3.022621768332e-01 -3.014943187516e-01 3.006667503978e-01 2.997796269836e-01 2.988331233245e-01 -2.978274337691e-01 2.967627721233e-01 2.956393715662e-01 2.944574845607e-01 -2.932173827566e-01 2.919193568869e-01 2.905637166585e-01 2.891507906353e-01 -2.876809261152e-01 2.861544890011e-01 2.845718636646e-01 2.829334528044e-01 -2.812396772972e-01 2.794909760436e-01 2.776878058069e-01 2.758306410464e-01 -2.739199737440e-01 2.719563132257e-01 2.699401859764e-01 2.678721354492e-01 -2.657527218691e-01 2.635825220302e-01 2.613621290888e-01 2.590921523490e-01 -2.567732170448e-01 2.544059641153e-01 2.519910499753e-01 2.495291462808e-01 -2.470209396889e-01 2.444671316132e-01 2.418684379737e-01 2.392255889424e-01 -2.365393286837e-01 2.338104150904e-01 2.310396195152e-01 2.282277264974e-01 -2.253755334855e-01 2.224838505557e-01 2.195535001257e-01 2.165853166650e-01 -2.135801464012e-01 2.105388470220e-01 2.074622873738e-01 2.043513471571e-01 -2.012069166173e-01 1.980298962334e-01 1.948211964026e-01 1.915817371217e-01 -1.883124476660e-01 1.850142662648e-01 1.816881397746e-01 1.783350233486e-01 -1.749558801050e-01 1.715516807916e-01 1.681234034491e-01 1.646720330712e-01 -1.611985612636e-01 1.577039859003e-01 1.541893107782e-01 1.506555452704e-01 -1.471037039775e-01 1.435348063777e-01 1.399498764750e-01 1.363499424470e-01 -1.327360362911e-01 1.291091934701e-01 1.254704525563e-01 1.218208548756e-01 -1.181614441508e-01 1.144932661444e-01 1.108173683010e-01 1.071347993896e-01 -1.034466091460e-01 9.975384791502e-02 9.605756629286e-02 9.235881477011e-02 -8.865864337493e-02 8.495810131684e-02 8.125823663126e-02 7.756009582487e-02 -7.386472352188e-02 7.017316211140e-02 6.648645139600e-02 6.280562824158e-02 -5.913172622872e-02 5.546577530554e-02 5.180880144230e-02 4.816182628779e-02 -4.452586682763e-02 4.090193504467e-02 3.729103758150e-02 3.369417540531e-02 -3.011234347509e-02 2.654653041137e-02 2.299771816864e-02 1.946688171047e-02 -1.595498868745e-02 1.246299911824e-02 8.991865073543e-03 5.542530363382e-03 -2.115930227621e-03 -1.287008970087e-03 -4.665370044848e-03 -8.018245289454e-03 --1.134473676960e-02 -1.464395661529e-02 -1.791502730828e-02 -2.115708196560e-02 --2.436926461882e-02 -2.755073048929e-02 -3.070064625892e-02 -3.381819033663e-02 --3.690255312038e-02 -3.995293725450e-02 -4.296855788249e-02 -4.594864289503e-02 --4.889243317310e-02 -5.179918282636e-02 -5.466815942637e-02 -5.749864423487e-02 --6.028993242690e-02 -6.304133330863e-02 -6.575217053008e-02 -6.842178229231e-02 --7.104952154932e-02 -7.363475620441e-02 -7.617686930102e-02 -7.867525920794e-02 --8.112933979891e-02 -8.353854062645e-02 -8.590230708989e-02 -8.822010059767e-02 --9.049139872368e-02 -9.271569535770e-02 -9.489250084984e-02 -9.702134214903e-02 --9.910176293542e-02 -1.011333237466e-01 -1.031156020979e-01 -1.050481925963e-01 --1.069307070481e-01 -1.087627745608e-01 -1.105440416380e-01 -1.122741722691e-01 --1.139528480110e-01 -1.155797680655e-01 -1.171546493488e-01 -1.186772265551e-01 --1.201472522143e-01 -1.215644967427e-01 -1.229287484875e-01 -1.242398137650e-01 --1.254975168922e-01 -1.267017002123e-01 -1.278522241133e-01 -1.289489670408e-01 --1.299918255037e-01 -1.309807140745e-01 -1.319155653819e-01 -1.327963300981e-01 --1.336229769193e-01 -1.343954925401e-01 -1.351138816210e-01 -1.357781667502e-01 --1.363883883992e-01 -1.369446048713e-01 -1.374468922449e-01 -1.378953443098e-01 --1.382900724979e-01 -1.386312058074e-01 -1.389188907211e-01 -1.391532911187e-01 --1.393345881826e-01 -1.394629802985e-01 -1.395386829495e-01 -1.395619286044e-01 --1.395329666006e-01 -1.394520630206e-01 -1.393195005628e-01 -1.391355784077e-01 --1.389006120768e-01 -1.386149332875e-01 -1.382788898014e-01 -1.378928452679e-01 --1.374571790618e-01 -1.369722861164e-01 -1.364385767506e-01 -1.358564764912e-01 --1.352264258904e-01 -1.345488803374e-01 -1.338243098662e-01 -1.330531989577e-01 --1.322360463375e-01 -1.313733647684e-01 -1.304656808394e-01 -1.295135347489e-01 --1.285174800843e-01 -1.274780835967e-01 -1.263959249722e-01 -1.252715965978e-01 --1.241057033243e-01 -1.228988622245e-01 -1.216517023480e-01 -1.203648644718e-01 --1.190390008473e-01 -1.176747749439e-01 -1.162728611890e-01 -1.148339447044e-01 --1.133587210396e-01 -1.118478959018e-01 -1.103021848828e-01 -1.087223131831e-01 --1.071090153326e-01 -1.054630349093e-01 -1.037851242546e-01 -1.020760441864e-01 --1.003365637095e-01 -9.856745972424e-02 -9.676951673183e-02 -9.494352653873e-02 --9.309028795819e-02 -9.121060651026e-02 -8.930529411987e-02 -8.737516881326e-02 --8.542105441291e-02 -8.344378023091e-02 -8.144418076104e-02 -7.942309536966e-02 --7.738136798544e-02 -7.531984678813e-02 -7.323938389640e-02 -7.114083505502e-02 --6.902505932126e-02 -6.689291875087e-02 -6.474527808360e-02 -6.258300442839e-02 --6.040696694843e-02 -5.821803654612e-02 -5.601708554807e-02 -5.380498739029e-02 --5.158261630364e-02 -4.935084699963e-02 -4.711055435682e-02 -4.486261310772e-02 --4.260789752655e-02 -4.034728111771e-02 -3.808163630530e-02 -3.581183412371e-02 --3.353874390932e-02 -3.126323299356e-02 -2.898616639734e-02 -2.670840652700e-02 --2.443081287186e-02 -2.215424170354e-02 -1.987954577704e-02 -1.760757403388e-02 --1.533917130715e-02 -1.307517802878e-02 -1.081642993911e-02 -8.563757798700e-03 --6.317987102690e-03 -4.079937797693e-03 -1.850424001331e-03 3.697462754655e-04 -2.579771403298e-03 4.778856406204e-03 6.966213230517e-03 9.141061010585e-03 -1.130262633127e-02 1.345014348713e-02 1.558285473817e-02 1.770001056217e-02 -1.980086990332e-02 2.188470041732e-02 2.395077871259e-02 2.599839058780e-02 -2.802683126538e-02 3.003540562106e-02 3.202342840941e-02 3.399022448515e-02 -3.593512902031e-02 3.785748771706e-02 3.975665701624e-02 4.163200430140e-02 -4.348290809837e-02 4.530875827032e-02 4.710895620815e-02 4.888291501618e-02 -5.063005969317e-02 5.234982730849e-02 5.404166717344e-02 5.570504100770e-02 -5.733942310076e-02 5.894430046840e-02 6.051917300409e-02 6.206355362527e-02 -6.357696841449e-02 6.505895675542e-02 6.650907146351e-02 6.792687891150e-02 -6.931195914959e-02 7.066390602023e-02 7.198232726759e-02 7.326684464163e-02 -7.451709399671e-02 7.573272538478e-02 7.691340314312e-02 7.805880597647e-02 -7.916862703380e-02 8.024257397943e-02 8.128036905865e-02 8.228174915775e-02 -8.324646585855e-02 8.417428548724e-02 8.506498915771e-02 8.591837280926e-02 -8.673424723874e-02 8.751243812706e-02 8.825278606009e-02 8.895514654406e-02 -8.961939001526e-02 9.024540184427e-02 9.083308233453e-02 9.138234671541e-02 -9.189312512975e-02 9.236536261582e-02 9.279901908383e-02 9.319406928693e-02 -9.355050278675e-02 9.386832391348e-02 9.414755172060e-02 9.438821993413e-02 -9.459037689662e-02 9.475408550577e-02 9.487942314775e-02 9.496648162530e-02 -9.501536708061e-02 9.502619991302e-02 9.499911469155e-02 9.493426006246e-02 -9.483179865159e-02 9.469190696188e-02 9.451477526582e-02 9.430060749305e-02 -9.404962111313e-02 9.376204701352e-02 9.343812937277e-02 9.307812552910e-02 -9.268230584436e-02 9.225095356338e-02 9.178436466890e-02 9.128284773200e-02 -9.074672375824e-02 9.017632602944e-02 8.957199994129e-02 8.893410283673e-02 -8.826300383534e-02 8.755908365865e-02 8.682273445152e-02 8.605435959968e-02 -8.525437354350e-02 8.442320158798e-02 8.356127970921e-02 8.266905435722e-02 -8.174698225538e-02 8.079553019644e-02 7.981517483525e-02 7.880640247828e-02 -7.776970887001e-02 7.670559897632e-02 7.561458676484e-02 7.449719498256e-02 -7.335395493060e-02 7.218540623629e-02 7.099209662273e-02 6.977458167578e-02 -6.853342460873e-02 6.726919602462e-02 6.598247367633e-02 6.467384222462e-02 -6.334389299411e-02 6.199322372732e-02 6.062243833697e-02 5.923214665645e-02 -5.782296418875e-02 5.639551185381e-02 5.495041573448e-02 5.348830682111e-02 -5.200982075493e-02 5.051559757034e-02 4.900628143611e-02 4.748252039569e-02 -4.594496610667e-02 4.439427357957e-02 4.283110091591e-02 4.125610904585e-02 -3.966996146536e-02 3.807332397307e-02 3.646686440693e-02 3.485125238070e-02 -3.322715902046e-02 3.159525670120e-02 2.995621878360e-02 2.831071935103e-02 -2.665943294700e-02 2.500303431309e-02 2.334219812741e-02 2.167759874379e-02 -2.000990993170e-02 1.833980461710e-02 1.666795462418e-02 1.499503041830e-02 -1.332170084993e-02 1.164863290000e-02 9.976491426473e-03 8.305938912502e-03 -6.637635215999e-03 4.972237320923e-03 3.310399090263e-03 1.652771020840e-03 -1.408221227094e-14 -1.647270935606e-03 -3.288402839377e-03 -4.922761091662e-03 --6.549715634615e-03 - Type L N - 0 2 3 -0.000000000000e+00 4.457248234190e-05 1.782643907072e-04 4.009991057074e-04 -7.126489820193e-04 1.113035415164e-03 1.601928940844e-03 2.179049363396e-03 -2.844065911803e-03 3.596597423938e-03 4.436212558915e-03 5.362430037398e-03 -6.374718909681e-03 7.472498851489e-03 8.655140487224e-03 9.921965740519e-03 -1.127224821193e-02 1.270521358352e-02 1.422004005004e-02 1.581585877668e-02 -1.749175438281e-02 1.924676545176e-02 2.107988506605e-02 2.299006136809e-02 -2.497619814568e-02 2.703715544230e-02 2.917175019161e-02 3.137875687592e-02 -3.365690820823e-02 3.600489583748e-02 3.842137107649e-02 4.090494565238e-02 -4.345419247888e-02 4.606764645011e-02 4.874380525550e-02 5.148113021525e-02 -5.427804713593e-02 5.713294718568e-02 6.004418778865e-02 6.301009353797e-02 -6.602895712690e-02 6.909904029756e-02 7.221857480672e-02 7.538576340809e-02 -7.859878085057e-02 8.185577489191e-02 8.515486732719e-02 8.849415503146e-02 -9.187171101615e-02 9.528558549845e-02 9.873380698317e-02 1.022143833564e-01 -1.057253029904e-01 1.092645358591e-01 1.128300346638e-01 1.164197359675e-01 -1.200315613388e-01 1.236634185032e-01 1.273132025023e-01 1.309787968591e-01 -1.346580747501e-01 1.383489001823e-01 1.420491291753e-01 1.457566109472e-01 -1.494691891042e-01 1.531847028329e-01 1.569009880945e-01 1.606158788208e-01 -1.643272081105e-01 1.680328094259e-01 1.717305177888e-01 1.754181709754e-01 -1.790936107092e-01 1.827546838509e-01 1.863992435853e-01 1.900251506049e-01 -1.936302742875e-01 1.972124938699e-01 2.007696996148e-01 2.042997939718e-01 -2.078006927304e-01 2.112703261660e-01 2.147066401766e-01 2.181075974111e-01 -2.214711783874e-01 2.247953825998e-01 2.280782296165e-01 2.313177601642e-01 -2.345120372012e-01 2.376591469778e-01 2.407572000828e-01 2.438043324763e-01 -2.467987065080e-01 2.497385119204e-01 2.526219668358e-01 2.554473187279e-01 -2.582128453763e-01 2.609168558033e-01 2.635576911935e-01 2.661337257950e-01 -2.686433678012e-01 2.710850602144e-01 2.734572816884e-01 2.757585473522e-01 -2.779874096115e-01 2.801424589308e-01 2.822223245923e-01 2.842256754343e-01 -2.861512205662e-01 2.879977100613e-01 2.897639356266e-01 2.914487312484e-01 -2.930509738149e-01 2.945695837145e-01 2.960035254092e-01 2.973518079833e-01 -2.986134856677e-01 2.997876583384e-01 3.008734719886e-01 3.018701191768e-01 -3.027768394469e-01 3.035929197232e-01 3.043176946788e-01 3.049505470763e-01 -3.054909080832e-01 3.059382575588e-01 3.062921243152e-01 3.065520863497e-01 -3.067177710513e-01 3.067888553784e-01 3.067650660094e-01 3.066461794661e-01 -3.064320222090e-01 3.061224707043e-01 3.057174514647e-01 3.052169410610e-01 -3.046209661066e-01 3.039296032146e-01 3.031429789265e-01 3.022612696142e-01 -3.012847013538e-01 3.002135497725e-01 2.990481398679e-01 2.977888458001e-01 -2.964360906574e-01 2.949903461941e-01 2.934521325427e-01 2.918220178985e-01 -2.901006181790e-01 2.882885966564e-01 2.863866635645e-01 2.843955756802e-01 -2.823161358792e-01 2.801491926669e-01 2.778956396848e-01 2.755564151915e-01 -2.731325015206e-01 2.706249245140e-01 2.680347529323e-01 2.653630978410e-01 -2.626111119753e-01 2.597799890815e-01 2.568709632367e-01 2.538853081470e-01 -2.508243364242e-01 2.476893988424e-01 2.444818835731e-01 2.412032154019e-01 -2.378548549247e-01 2.344382977253e-01 2.309550735345e-01 2.274067453716e-01 -2.237949086680e-01 2.201211903739e-01 2.163872480489e-01 2.125947689363e-01 -2.087454690225e-01 2.048410920811e-01 2.008834087031e-01 1.968742153133e-01 -1.928153331736e-01 1.887086073738e-01 1.845559058101e-01 1.803591181529e-01 -1.761201548032e-01 1.718409458392e-01 1.675234399531e-01 1.631696033788e-01 -1.587814188122e-01 1.543608843220e-01 1.499100122556e-01 1.454308281366e-01 -1.409253695573e-01 1.363956850664e-01 1.318438330511e-01 1.272718806159e-01 -1.226819024584e-01 1.180759797413e-01 1.134561989637e-01 1.088246508299e-01 -1.041834291183e-01 9.953462954955e-02 9.488034865550e-02 9.022268264941e-02 -8.556372629778e-02 8.090557179462e-02 7.625030763888e-02 7.160001751551e-02 -6.695677918083e-02 6.232266335288e-02 5.769973260732e-02 5.309004027948e-02 -4.849562937322e-02 4.391853147720e-02 3.936076568912e-02 3.482433754858e-02 -3.031123797906e-02 2.582344223978e-02 2.136290888780e-02 1.693157875109e-02 -1.253137391310e-02 8.164196709282e-03 3.831928736336e-03 -4.635701255367e-04 --4.720462676645e-03 -8.936935347656e-03 -1.311119913473e-02 -1.724149051946e-02 --2.132607237305e-02 -2.536323484439e-02 -2.935129623136e-02 -3.328860383506e-02 --3.717353479639e-02 -4.100449691463e-02 -4.477992944750e-02 -4.849830389238e-02 --5.215812474809e-02 -5.575793025712e-02 -5.929629312760e-02 -6.277182123488e-02 --6.618315830222e-02 -6.952898456029e-02 -7.280801738516e-02 -7.601901191437e-02 --7.916076164086e-02 -8.223209898438e-02 -8.523189584023e-02 -8.815906410481e-02 --9.101255617803e-02 -9.379136544205e-02 -9.649452671631e-02 -9.912111668852e-02 --1.016702543216e-01 -1.041411012358e-01 -1.065328620670e-01 -1.088447847996e-01 --1.110761610748e-01 -1.132263264739e-01 -1.152946607763e-01 -1.172805881930e-01 --1.191835775734e-01 -1.210031425882e-01 -1.227388418859e-01 -1.243902792240e-01 --1.259571035753e-01 -1.274390092077e-01 -1.288357357390e-01 -1.301470681664e-01 --1.313728368700e-01 -1.325129175914e-01 -1.335672313864e-01 -1.345357445526e-01 --1.354184685322e-01 -1.362154597889e-01 -1.369268196606e-01 -1.375526941866e-01 --1.380932739105e-01 -1.385487936582e-01 -1.389195322919e-01 -1.392058124400e-01 --1.394080002019e-01 -1.395265048306e-01 -1.395617783907e-01 -1.395143153936e-01 --1.393846524088e-01 -1.391733676538e-01 -1.388810805603e-01 -1.385084513188e-01 --1.380561804008e-01 -1.375250080601e-01 -1.369157138120e-01 -1.362291158925e-01 --1.354660706961e-01 -1.346274721936e-01 -1.337142513307e-01 -1.327273754061e-01 --1.316678474315e-01 -1.305367054722e-01 -1.293350219701e-01 -1.280639030485e-01 --1.267244877994e-01 -1.253179475545e-01 -1.238454851391e-01 -1.223083341104e-01 --1.207077579798e-01 -1.190450494209e-01 -1.173215294620e-01 -1.155385466653e-01 --1.136974762920e-01 -1.117997194550e-01 -1.098467022581e-01 -1.078398749240e-01 --1.057807109104e-01 -1.036707060153e-01 -1.015113774717e-01 -9.930426303258e-02 --9.705092004665e-02 -9.475292452496e-02 -9.241187019960e-02 -9.002936757466e-02 --8.760704297005e-02 -8.514653755883e-02 -8.264950639862e-02 -8.011761745753e-02 --7.755255063536e-02 -7.495599678058e-02 -7.232965670356e-02 -6.967524018682e-02 --6.699446499276e-02 -6.428905586941e-02 -6.156074355494e-02 -5.881126378136e-02 --5.604235627800e-02 -5.325576377550e-02 -5.045323101064e-02 -4.763650373284e-02 --4.480732771270e-02 -4.196744775324e-02 -3.911860670445e-02 -3.626254448162e-02 --3.340099708804e-02 -3.053569564265e-02 -2.766836541325e-02 -2.480072485565e-02 --2.193448465945e-02 -1.907134680097e-02 -1.621300360381e-02 -1.336113680758e-02 --1.051741664539e-02 -7.683500930553e-03 -4.861034152950e-03 -2.051646585752e-03 -7.430465972123e-04 3.521446192831e-03 6.281969828383e-03 9.023052809042e-03 -1.174314895274e-02 1.444073141190e-02 1.711429348171e-02 1.976234939429e-02 -2.238343509855e-02 2.497610902513e-02 2.753895283621e-02 3.007057215951e-02 -3.256959730641e-02 3.503468397357e-02 3.746451392777e-02 3.985779567360e-02 -4.221326510369e-02 4.452968613109e-02 4.680585130346e-02 4.904058239882e-02 -5.123273100254e-02 5.338117906521e-02 5.548483944120e-02 5.754265640760e-02 -5.955360616327e-02 6.151669730783e-02 6.343097130024e-02 6.529550289684e-02 -6.710940056866e-02 6.887180689773e-02 7.058189895224e-02 7.223888864046e-02 -7.384202304310e-02 7.539058472419e-02 7.688389202009e-02 7.832129930679e-02 -7.970219724519e-02 8.102601300434e-02 8.229221046263e-02 8.350029038675e-02 -8.464979058844e-02 8.574028605906e-02 8.677138908178e-02 8.774274932152e-02 -8.865405389270e-02 8.950502740454e-02 9.029543198437e-02 9.102506727852e-02 -9.169377043125e-02 9.230141604154e-02 9.284791609794e-02 9.333321989151e-02 -9.375731390701e-02 9.412022169248e-02 9.442200370720e-02 9.466275714840e-02 -9.484261575671e-02 9.496174960057e-02 9.502036483976e-02 9.501870346840e-02 -9.495704303729e-02 9.483569635626e-02 9.465501117629e-02 9.441536985208e-02 -9.411718898495e-02 9.376091904661e-02 9.334704398391e-02 9.287608080494e-02 -9.234857914673e-02 9.176512082490e-02 9.112631936550e-02 9.043281951951e-02 -8.968529676013e-02 8.888445676345e-02 8.803103487260e-02 8.712579554598e-02 -8.616953178973e-02 8.516306457505e-02 8.410724224049e-02 8.300293987988e-02 -8.185105871610e-02 8.065252546120e-02 7.940829166328e-02 7.811933304056e-02 -7.678664880301e-02 7.541126096205e-02 7.399421362883e-02 7.253657230130e-02 -7.103942314083e-02 6.950387223863e-02 6.793104487253e-02 6.632208475452e-02 -6.467815326968e-02 6.300042870677e-02 6.129010548114e-02 5.954839335034e-02 -5.777651662299e-02 5.597571336138e-02 5.414723457828e-02 5.229234342845e-02 -5.041231439542e-02 4.850843247399e-02 4.658199234892e-02 4.463429757040e-02 -4.266665972674e-02 4.068039761486e-02 3.867683640893e-02 3.665730682787e-02 -3.462314430212e-02 3.257568814007e-02 3.051628069495e-02 2.844626653232e-02 -2.636699159894e-02 2.427980239344e-02 2.218604513920e-02 2.008706496005e-02 -1.798420505918e-02 1.587880590191e-02 1.377220440256e-02 1.166573311614e-02 -9.560719435159e-03 7.458484792203e-03 5.360343868524e-03 3.267603809314e-03 -1.181563446000e-03 -8.964874739414e-04 -2.965269049220e-03 -5.023511978570e-03 --7.069958305755e-03 -9.103362155313e-03 -1.112249045863e-02 -1.312612366988e-02 --1.511305647156e-02 -1.708209846895e-02 -1.903207487348e-02 -2.096182717423e-02 --2.287021379752e-02 -2.475611075395e-02 -2.661841227277e-02 -2.845603142301e-02 --3.026790072120e-02 -3.205297272523e-02 -3.381022061409e-02 -3.553863875319e-02 --3.723724324485e-02 -3.890507246382e-02 -4.054118757736e-02 -4.214467304981e-02 --4.371463713124e-02 -4.525021232991e-02 -4.675055586845e-02 -4.821485012336e-02 --4.964230304767e-02 -5.103214857662e-02 -5.238364701599e-02 -5.369608541310e-02 --5.496877791009e-02 -5.620106607950e-02 -5.739231924181e-02 -5.854193476503e-02 --5.964933834590e-02 -6.071398427289e-02 -6.173535567067e-02 -6.271296472603e-02 --6.364635289518e-02 -6.453509109232e-02 -6.537877985944e-02 -6.617704951726e-02 --6.692956029730e-02 -6.763600245510e-02 -6.829609636440e-02 -6.890959259254e-02 --6.947627195680e-02 -6.999594556194e-02 -7.046845481878e-02 -7.089367144401e-02 --7.127149744118e-02 -7.160186506299e-02 -7.188473675489e-02 -7.212010508019e-02 --7.230799262665e-02 -7.244845189474e-02 -7.254156516766e-02 -7.258744436323e-02 --7.258623086790e-02 -7.253809535283e-02 -7.244323757238e-02 -7.230188614518e-02 --7.211429831779e-02 -7.188075971132e-02 -7.160158405118e-02 -7.127711288012e-02 --7.090771525475e-02 -7.049378742595e-02 -7.003575250320e-02 -6.953406010323e-02 --6.898918598315e-02 -6.840163165842e-02 -6.777192400586e-02 -6.710061485204e-02 --6.638828054735e-02 -6.563552152595e-02 -6.484296185208e-02 -6.401124875290e-02 --6.314105213826e-02 -6.223306410774e-02 -6.128799844526e-02 -6.030659010162e-02 --5.928959466533e-02 -5.823778782215e-02 -5.715196480352e-02 -5.603293982456e-02 --5.488154551165e-02 -5.369863232030e-02 -5.248506794353e-02 -5.124173671111e-02 --4.996953898025e-02 -4.866939051794e-02 -4.734222187547e-02 -4.598897775549e-02 --4.461061637206e-02 -4.320810880402e-02 -4.178243834230e-02 -4.033459983128e-02 --3.886559900497e-02 -3.737645181818e-02 -3.586818377323e-02 -3.434182924260e-02 --3.279843078799e-02 -3.123903847615e-02 -2.966470919199e-02 -2.807650594939e-02 --2.647549720008e-02 -2.486275614114e-02 -2.323936002146e-02 -2.160638944768e-02 --1.996492768990e-02 -1.831605998782e-02 -1.666087285751e-02 -1.500045339944e-02 --1.333588860800e-02 -1.166826468316e-02 -9.998666344508e-03 -8.328176148179e-03 --6.657873807088e-03 -4.988835514865e-03 -3.322133273924e-03 -1.658834228060e-03 -9.121078281037e-15 1.653313965754e-03 3.300059054207e-03 4.939194125200e-03 -6.569686152075e-03 - Type L N - 0 2 4 -0.000000000000e+00 6.467701348754e-05 2.586542723594e-04 5.817704695828e-04 -1.033756907113e-03 1.614237711735e-03 2.322730138670e-03 3.158644962277e-03 -4.121286952181e-03 5.209855435365e-03 6.423444943362e-03 7.761045944157e-03 -9.221545658202e-03 1.080372895779e-02 1.250627934912e-02 1.432778003624e-02 -1.626671506593e-02 1.832147055267e-02 2.049033598262e-02 2.277150559559e-02 -2.516307984377e-02 2.766306692620e-02 3.026938439748e-02 3.297986084961e-02 -3.579223766544e-02 3.870417084234e-02 4.171323288467e-02 4.481691476326e-02 -4.801262794057e-02 5.129770645970e-02 5.466940909557e-02 5.812492156647e-02 -6.166135880428e-02 6.527576728134e-02 6.896512739216e-02 7.272635588803e-02 -7.655630836242e-02 8.045178178523e-02 8.440951708386e-02 8.842620176875e-02 -9.249847260157e-02 9.662291830356e-02 1.007960823020e-01 1.050144655125e-01 -1.092745291549e-01 1.135726976002e-01 1.179053612464e-01 1.222688794215e-01 -1.266595833095e-01 1.310737788995e-01 1.355077499530e-01 1.399577609892e-01 -1.444200602838e-01 1.488908828806e-01 1.533664536125e-01 1.578429901293e-01 -1.623167059309e-01 1.667838134018e-01 1.712405268457e-01 1.756830655180e-01 -1.801076566519e-01 1.845105384774e-01 1.888879632307e-01 1.932362001498e-01 -1.975515384562e-01 2.018302903183e-01 2.060687937959e-01 2.102634157614e-01 -2.144105547971e-01 2.185066440656e-01 2.225481541504e-01 2.265315958651e-01 -2.304535230296e-01 2.343105352087e-01 2.380992804136e-01 2.418164577626e-01 -2.454588200992e-01 2.490231765652e-01 2.525063951274e-01 2.559054050554e-01 -2.592171993486e-01 2.624388371103e-01 2.655674458674e-01 2.686002238332e-01 -2.715344421129e-01 2.743674468476e-01 2.770966612978e-01 2.797195878629e-01 -2.822338100357e-01 2.846369942908e-01 2.869268919043e-01 2.891013407043e-01 -2.911582667514e-01 2.930956859452e-01 2.949117055595e-01 2.966045257012e-01 -2.981724406948e-01 2.996138403890e-01 3.009272113863e-01 3.021111381935e-01 -3.031643042930e-01 3.040854931329e-01 3.048735890371e-01 3.055275780325e-01 -3.060465485947e-01 3.064296923100e-01 3.066763044547e-01 3.067857844901e-01 -3.067576364736e-01 3.065914693852e-01 3.062869973702e-01 3.058440398959e-01 -3.052625218249e-01 3.045424734030e-01 3.036840301624e-01 3.026874327411e-01 -3.015530266175e-01 3.002812617612e-01 2.988726922006e-01 2.973279755071e-01 -2.956478721966e-01 2.938332450497e-01 2.918850583496e-01 2.898043770398e-01 -2.875923658023e-01 2.852502880559e-01 2.827795048773e-01 2.801814738444e-01 -2.774577478034e-01 2.746099735617e-01 2.716398905060e-01 2.685493291479e-01 -2.653402095987e-01 2.620145399736e-01 2.585744147272e-01 2.550220129220e-01 -2.513595964312e-01 2.475895080768e-01 2.437141697060e-01 2.397360802058e-01 -2.356578134586e-01 2.314820162408e-01 2.272114060649e-01 2.228487689682e-01 -2.183969572496e-01 2.138588871558e-01 2.092375365199e-01 2.045359423538e-01 -1.997571983959e-01 1.949044526175e-01 1.899809046891e-01 1.849898034084e-01 -1.799344440933e-01 1.748181659408e-01 1.696443493552e-01 1.644164132466e-01 -1.591378123033e-01 1.538120342391e-01 1.484425970188e-01 1.430330460631e-01 -1.375869514369e-01 1.321079050210e-01 1.265995176723e-01 1.210654163718e-01 -1.155092413657e-01 1.099346432998e-01 1.043452803504e-01 9.874481535428e-02 -9.313691293955e-02 8.752523666008e-02 8.191344613574e-02 7.630519420076e-02 -7.070412406258e-02 6.511386647350e-02 5.953803691739e-02 5.398023281373e-02 -4.844403074131e-02 4.293298368379e-02 3.745061829925e-02 3.200043221616e-02 -2.658589135768e-02 2.121042729658e-02 1.587743464290e-02 1.059026846634e-02 -5.352241755580e-03 1.666229163423e-04 -4.963366689589e-03 -1.003455516262e-02 --1.504382243890e-02 -1.998810261728e-02 -2.486438623791e-02 -2.966972251065e-02 --3.440122149161e-02 -3.905605620602e-02 -4.363146471594e-02 -4.812475213110e-02 --5.253329256133e-02 -5.685453100917e-02 -6.108598520115e-02 -6.522524735635e-02 --6.926998589097e-02 -7.321794705754e-02 -7.706695651764e-02 -8.081492084693e-02 --8.445982897137e-02 -8.799975353358e-02 -9.143285218847e-02 -9.475736882699e-02 --9.797163472740e-02 -1.010740696331e-01 -1.040631827561e-01 -1.069375737062e-01 --1.096959333441e-01 -1.123370445592e-01 -1.148597829702e-01 -1.172631175495e-01 --1.195461111700e-01 -1.217079210747e-01 -1.237477992681e-01 -1.256650928302e-01 --1.274592441522e-01 -1.291297910945e-01 -1.306763670666e-01 -1.320987010287e-01 --1.333966174168e-01 -1.345700359890e-01 -1.356189715955e-01 -1.365435338717e-01 --1.373439268546e-01 -1.380204485240e-01 -1.385734902677e-01 -1.390035362722e-01 --1.393111628400e-01 -1.394970376326e-01 -1.395619188418e-01 -1.395066542893e-01 --1.393321804551e-01 -1.390395214367e-01 -1.386297878394e-01 -1.381041755992e-01 --1.374639647384e-01 -1.367105180573e-01 -1.358452797606e-01 -1.348697740218e-01 --1.337856034858e-01 -1.325944477119e-01 -1.312980615577e-01 -1.298982735065e-01 --1.283969839388e-01 -1.267961633501e-01 -1.250978505159e-01 -1.233041506066e-01 --1.214172332533e-01 -1.194393305656e-01 -1.173727351053e-01 -1.152197978151e-01 --1.129829259064e-01 -1.106645807066e-01 -1.082672754685e-01 -1.057935731439e-01 --1.032460841225e-01 -1.006274639388e-01 -9.794041094889e-02 -9.518766397925e-02 --9.237199994887e-02 -8.949623146779e-02 -8.656320441344e-02 -8.357579548706e-02 --8.053690975243e-02 -7.744947815873e-02 -7.431645504994e-02 -7.114081566276e-02 --6.792555361516e-02 -6.467367838778e-02 -6.138821280021e-02 -5.807219048446e-02 --5.472865335745e-02 -5.136064909501e-02 -4.797122860918e-02 -4.456344353117e-02 --4.114034370191e-02 -3.770497467241e-02 -3.426037521587e-02 -3.080957485374e-02 --2.735559139769e-02 -2.390142850954e-02 -2.045007328115e-02 -1.700449383626e-02 --1.356763695622e-02 -1.014242573161e-02 -6.731757241574e-03 -3.338500262781e-03 -3.450699010114e-05 3.384459090659e-03 6.708585591882e-03 1.000415318049e-02 -1.326846779269e-02 1.649887668971e-02 1.969277049147e-02 2.284758516679e-02 -2.596080397851e-02 2.902995938214e-02 3.205263487648e-02 3.502646680471e-02 -3.794914610479e-02 4.081842000759e-02 4.363209368161e-02 4.638803182301e-02 -4.908416018980e-02 5.171846707893e-02 5.428900474540e-02 5.679389076215e-02 -5.923130931991e-02 6.159951246595e-02 6.389682128100e-02 6.612162699342e-02 -6.827239202987e-02 7.034765100187e-02 7.234601162746e-02 7.426615558751e-02 -7.610683931608e-02 7.786689472434e-02 7.954522985768e-02 8.114082948563e-02 -8.265275562436e-02 8.408014799135e-02 8.542222439227e-02 8.667828103984e-02 -8.784769280450e-02 8.892991339717e-02 8.992447548386e-02 9.083099073243e-02 -9.164914979164e-02 9.237872220263e-02 9.301955624322e-02 9.357157870541e-02 -9.403479460629e-02 9.440928683305e-02 9.469521572246e-02 9.489281857541e-02 -9.500240910722e-02 9.502437683422e-02 9.495918639761e-02 9.480737682502e-02 -9.456956073099e-02 9.424642345693e-02 9.383872215173e-02 9.334728479382e-02 -9.277300915591e-02 9.211686171330e-02 9.137987649695e-02 9.056315389263e-02 -8.966785938705e-02 8.869522226255e-02 8.764653424145e-02 8.652314808142e-02 -8.532647612334e-02 8.405798879298e-02 8.271921305792e-02 8.131173084133e-02 -7.983717739398e-02 7.829723962611e-02 7.669365440074e-02 7.502820679000e-02 -7.330272829607e-02 7.151909503859e-02 6.967922590995e-02 6.778508070034e-02 -6.583865819438e-02 6.384199424077e-02 6.179715979705e-02 5.970625895115e-02 -5.757142692138e-02 5.539482803698e-02 5.317865370071e-02 5.092512033565e-02 -4.863646731778e-02 4.631495489640e-02 4.396286210410e-02 4.158248465821e-02 -3.917613285563e-02 3.674612946285e-02 3.429480760297e-02 3.182450864173e-02 -2.933758007429e-02 2.683637341465e-02 2.432324208952e-02 2.180053933849e-02 -1.927061612244e-02 1.673581904170e-02 1.419848826614e-02 1.166095547863e-02 -9.125541833832e-03 6.594555934047e-03 4.070291823748e-03 1.555027004599e-03 --9.489795274114e-04 -3.439489221052e-03 -5.914285883511e-03 -8.371177567057e-03 --1.080799842710e-02 -1.322261055011e-02 -1.561290574995e-02 -1.797680733099e-02 --2.031227181671e-02 -2.261729064236e-02 -2.488989181013e-02 -2.712814150576e-02 --2.933014567510e-02 -3.149405155936e-02 -3.361804918796e-02 -3.570037282766e-02 --3.773930238696e-02 -3.973316477450e-02 -4.168033521061e-02 -4.357923849086e-02 --4.542835020074e-02 -4.722619788044e-02 -4.897136213900e-02 -5.066247771695e-02 --5.229823449659e-02 -5.387737845932e-02 -5.539871258930e-02 -5.686109772272e-02 --5.826345334227e-02 -5.960475831614e-02 -6.088405158118e-02 -6.210043276973e-02 --6.325306277975e-02 -6.434116428803e-02 -6.536402220605e-02 -6.632098407841e-02 --6.721146042362e-02 -6.803492501707e-02 -6.879091511625e-02 -6.947903162814e-02 --7.009893921874e-02 -7.065036636499e-02 -7.113310534910e-02 -7.154701219554e-02 --7.189200655093e-02 -7.216807150707e-02 -7.237525336760e-02 -7.251366135851e-02 --7.258346728307e-02 -7.258490512157e-02 -7.251827057659e-02 -7.238392056411e-02 --7.218227265139e-02 -7.191380444207e-02 -7.157905290935e-02 -7.117861367794e-02 --7.071314025570e-02 -7.018334321567e-02 -6.958998932949e-02 -6.893390065319e-02 --6.821595356620e-02 -6.743707776469e-02 -6.659825521027e-02 -6.570051903513e-02 --6.474495240479e-02 -6.373268733955e-02 -6.266490349590e-02 -6.154282690909e-02 --6.036772869814e-02 -5.914092373457e-02 -5.786376927608e-02 -5.653766356675e-02 --5.516404440485e-02 -5.374438767992e-02 -5.228020588032e-02 -5.077304657284e-02 --4.922449085577e-02 -4.763615178696e-02 -4.600967278826e-02 -4.434672602804e-02 --4.264901078311e-02 -4.091825178181e-02 -3.915619752961e-02 -3.736461861899e-02 --3.554530602502e-02 -3.370006938831e-02 -3.183073528694e-02 -2.993914549896e-02 --2.802715525691e-02 -2.609663149633e-02 -2.414945109941e-02 -2.218749913577e-02 --2.021266710177e-02 -1.822685116001e-02 -1.623195038059e-02 -1.422986498576e-02 --1.222249459954e-02 -1.021173650382e-02 -8.199483902594e-03 -6.187624195818e-03 --4.178037264425e-03 -2.172593768075e-03 -1.731534570916e-04 1.818436499896e-03 -3.800343171147e-03 5.770749498377e-03 7.727855913281e-03 9.669881932597e-03 -1.159506773032e-02 1.350167568574e-02 1.538799190588e-02 1.725232772119e-02 -1.909302115304e-02 2.090843835186e-02 2.269697500474e-02 2.445705771117e-02 -2.618714532593e-02 2.788573026788e-02 2.955133979361e-02 3.118253723494e-02 -3.277792319915e-02 3.433613673106e-02 3.585585643598e-02 3.733580156260e-02 -3.877473304497e-02 4.017145450282e-02 4.152481319930e-02 4.283370095549e-02 -4.409705502095e-02 4.531385889966e-02 4.648314313074e-02 4.760398602330e-02 -4.867551434504e-02 4.969690396393e-02 5.066738044268e-02 5.158621958553e-02 -5.245274793696e-02 5.326634323216e-02 5.402643479884e-02 5.473250391019e-02 -5.538408408892e-02 5.598076136215e-02 5.652217446705e-02 5.700801500733e-02 -5.743802756036e-02 5.781200973523e-02 5.812981218165e-02 5.839133854989e-02 -5.859654540203e-02 5.874544207454e-02 5.883809049276e-02 5.887460493731e-02 -5.885515176296e-02 5.877994907029e-02 5.864926633065e-02 5.846342396483e-02 -5.822279287599e-02 5.792779393747e-02 5.757889743600e-02 5.717662247100e-02 -5.672153631070e-02 5.621425370570e-02 5.565543616079e-02 5.504579116584e-02 -5.438607138658e-02 5.367707381606e-02 5.291963888783e-02 5.211464955159e-02 -5.126303031252e-02 5.036574623496e-02 4.942380191178e-02 4.843824040031e-02 -4.741014212590e-02 4.634062375435e-02 4.523083703419e-02 4.408196761011e-02 -4.289523380852e-02 4.167188539674e-02 4.041320231670e-02 3.912049339471e-02 -3.779509502828e-02 3.643836985150e-02 3.505170538017e-02 3.363651263793e-02 -3.219422476486e-02 3.072629560979e-02 2.923419830763e-02 2.771942384323e-02 -2.618347960300e-02 2.462788791564e-02 2.305418458359e-02 2.146391740623e-02 -1.985864469655e-02 1.823993379249e-02 1.660935956441e-02 1.496850292005e-02 -1.331894930838e-02 1.166228722378e-02 1.000010671186e-02 8.333997878296e-03 -6.665549402163e-03 4.996347054970e-03 3.327972226886e-03 1.662000461435e-03 --1.197198642185e-15 -1.656469662533e-03 -3.305859209674e-03 -4.946630921512e-03 --6.577260077874e-03 - Type L N - 0 2 5 -0.000000000000e+00 8.843454829340e-05 3.536376431318e-04 7.953077383734e-04 -1.412942629879e-03 2.205840009229e-03 3.173098239600e-03 4.313617352846e-03 -5.626100265255e-03 7.109054211153e-03 8.760792392709e-03 1.057943584416e-02 -1.256291550825e-02 1.470897452253e-02 1.701517071310e-02 1.947887929282e-02 -2.209729576101e-02 2.486743900144e-02 2.778615457505e-02 3.085011820372e-02 -3.405583944115e-02 3.739966552686e-02 4.087778541869e-02 4.448623399960e-02 -4.822089645382e-02 5.207751280750e-02 5.605168262877e-02 6.013886988193e-02 -6.433440793030e-02 6.863350468212e-02 7.303124787377e-02 7.752261048427e-02 -8.210245627513e-02 8.676554544919e-02 9.150654042227e-02 9.632001170095e-02 -1.012004438601e-01 1.061422416135e-01 1.111397359702e-01 1.161871904705e-01 -1.212788074943e-01 1.264087346346e-01 1.315710711288e-01 1.367598743410e-01 -1.419691662889e-01 1.471929402053e-01 1.524251671307e-01 1.576598025256e-01 -1.628907928987e-01 1.681120824415e-01 1.733176196618e-01 1.785013640105e-01 -1.836572924922e-01 1.887794062539e-01 1.938617371432e-01 1.988983542297e-01 -2.038833702822e-01 2.088109481935e-01 2.136753073473e-01 2.184707299184e-01 -2.231915671013e-01 2.278322452582e-01 2.323872719807e-01 2.368512420586e-01 -2.412188433491e-01 2.454848625395e-01 2.496441907972e-01 2.536918293015e-01 -2.576228946506e-01 2.614326241370e-01 2.651163808874e-01 2.686696588600e-01 -2.720880876944e-01 2.753674374084e-01 2.785036229372e-01 2.814927085096e-01 -2.843309118560e-01 2.870146082457e-01 2.895403343460e-01 2.919047919020e-01 -2.941048512312e-01 2.961375545295e-01 2.980001189869e-01 2.996899397059e-01 -3.012045924239e-01 3.025418360331e-01 3.036996148978e-01 3.046760609651e-01 -3.054694956680e-01 3.060784316181e-01 3.065015740870e-01 3.067378222743e-01 -3.067862703616e-01 3.066462083512e-01 3.063171226887e-01 3.057986966696e-01 -3.050908106292e-01 3.041935419158e-01 3.031071646480e-01 3.018321492558e-01 -3.003691618077e-01 2.987190631224e-01 2.968829076694e-01 2.948619422570e-01 -2.926576045123e-01 2.902715211520e-01 2.877055060494e-01 2.849615580978e-01 -2.820418588735e-01 2.789487701018e-01 2.756848309287e-01 2.722527550014e-01 -2.686554273614e-01 2.648959011542e-01 2.609773941583e-01 2.569032851397e-01 -2.526771100344e-01 2.483025579636e-01 2.437834670878e-01 2.391238203025e-01 -2.343277407826e-01 2.293994873787e-01 2.243434498729e-01 2.191641440970e-01 -2.138662069216e-01 2.084543911193e-01 2.029335601097e-01 1.973086825914e-01 -1.915848270677e-01 1.857671562716e-01 1.798609214971e-01 1.738714568434e-01 -1.678041733775e-01 1.616645532235e-01 1.554581435837e-01 1.491905506995e-01 -1.428674337582e-01 1.364944987533e-01 1.300774923044e-01 1.236221954444e-01 -1.171344173807e-01 1.106199892374e-01 1.040847577856e-01 9.753457916862e-02 -9.097531263009e-02 8.441281425030e-02 7.785293069927e-02 7.130149301279e-02 -6.476431039851e-02 5.824716407897e-02 5.175580117834e-02 4.529592865971e-02 -3.887320731955e-02 3.249324584599e-02 2.616159494743e-02 1.988374155795e-02 -1.366510312583e-02 7.511021991405e-03 1.426759860405e-03 -4.582507621236e-03 --1.051169618524e-02 -1.635581814577e-02 -2.210998748552e-02 -2.776942481765e-02 --3.332946221840e-02 -3.878554792496e-02 -4.413325089389e-02 -4.936826521520e-02 --5.448641437729e-02 -5.948365537855e-02 -6.435608268117e-02 -6.909993200312e-02 --7.371158394439e-02 -7.818756744389e-02 -8.252456306333e-02 -8.671940609498e-02 --9.076908949011e-02 -9.467076660523e-02 -9.842175376361e-02 -1.020195326294e-01 --1.054617523925e-01 -1.087462317616e-01 -1.118709607641e-01 -1.148341023516e-01 --1.176339938086e-01 -1.202691479643e-01 -1.227382542061e-01 -1.250401792949e-01 --1.271739679803e-01 -1.291388434172e-01 -1.309342073825e-01 -1.325596402933e-01 --1.340149010263e-01 -1.352999265391e-01 -1.364148312948e-01 -1.373599064912e-01 --1.381356190951e-01 -1.387426106843e-01 -1.391816960985e-01 -1.394538619017e-01 --1.395602646572e-01 -1.395022290196e-01 -1.392812456445e-01 -1.388989689197e-01 --1.383572145215e-01 -1.376579567977e-01 -1.368033259832e-01 -1.357956052489e-01 --1.346372275904e-01 -1.333307725589e-01 -1.318789628388e-01 -1.302846606768e-01 --1.285508641666e-01 -1.266807033933e-01 -1.246774364437e-01 -1.225444452862e-01 --1.202852315255e-01 -1.179034120385e-01 -1.154027144950e-01 -1.127869727698e-01 --1.100601222512e-01 -1.072261950524e-01 -1.042893151305e-01 -1.012536933192e-01 --9.812362228211e-02 -9.490347139121e-02 -9.159768153769e-02 -8.821075988073e-02 --8.474727454061e-02 -8.121184924242e-02 -7.760915791657e-02 -7.394391926241e-02 --7.022089128150e-02 -6.644486578661e-02 -6.262066289307e-02 -5.875312549865e-02 --5.484711375854e-02 -5.090749956161e-02 -4.693916101441e-02 -4.294697693916e-02 --3.893582139206e-02 -3.491055820812e-02 -3.087603557870e-02 -2.683708066795e-02 --2.279849427414e-02 -1.876504554194e-02 -1.474146673158e-02 -1.073244805069e-02 --6.742632554596e-03 -2.776611120726e-03 1.161082497283e-03 5.065976530412e-03 -8.933665964617e-03 1.275981721555e-02 1.654017270256e-02 2.027055531696e-02 -2.394687277990e-02 2.756512188498e-02 3.112139262123e-02 3.461187217210e-02 -3.803284878607e-02 4.138071551510e-02 4.465197381679e-02 4.784323701676e-02 -5.095123362750e-02 5.397281052057e-02 5.690493594875e-02 5.974470241534e-02 -6.248932938769e-02 6.513616585240e-02 6.768269270979e-02 7.012652500537e-02 -7.246541399637e-02 7.469724905143e-02 7.682005938187e-02 7.883201560314e-02 -8.073143112517e-02 8.251676337075e-02 8.418661482097e-02 8.573973388724e-02 -8.717501560948e-02 8.849150218024e-02 8.968838329487e-02 9.076499632787e-02 -9.172082633592e-02 9.255550588818e-02 9.326881472473e-02 9.386067924413e-02 -9.433117182145e-02 9.468050995802e-02 9.490905526471e-02 9.501731228041e-02 -9.500592712786e-02 9.487568600880e-02 9.462751354110e-02 9.426247094018e-02 -9.378175404753e-02 9.318669120930e-02 9.247874100793e-02 9.165948985008e-02 -9.073064941431e-02 8.969405396193e-02 8.855165751490e-02 8.730553090442e-02 -8.595785869433e-02 8.451093598347e-02 8.296716509107e-02 8.132905212973e-02 -7.959920347039e-02 7.778032210396e-02 7.587520390419e-02 7.388673379677e-02 -7.181788183948e-02 6.967169921838e-02 6.745131416515e-02 6.515992780077e-02 -6.280080991070e-02 6.037729465690e-02 5.789277623210e-02 5.535070446159e-02 -5.275458035810e-02 5.010795163516e-02 4.741440818459e-02 4.467757752352e-02 -4.190112021655e-02 3.908872527867e-02 3.624410556442e-02 3.337099314900e-02 -3.047313470670e-02 2.755428689236e-02 2.461821173135e-02 2.166867202349e-02 -1.870942676643e-02 1.574422660391e-02 1.277680930427e-02 9.810895274485e-03 -6.850183114978e-03 3.898345220493e-03 9.590234320046e-04 -1.964175255218e-03 --4.867682922457e-03 -7.747974892461e-03 -1.060157382366e-02 -1.342505372899e-02 --1.621504391486e-02 -1.896823283569e-02 -2.168137185984e-02 -2.435127894258e-02 --2.697484220215e-02 -2.954902339493e-02 -3.207086128584e-02 -3.453747491041e-02 --3.694606672492e-02 -3.929392564125e-02 -4.157842994323e-02 -4.379705008142e-02 --4.594735134334e-02 -4.802699639650e-02 -5.003374770156e-02 -5.196546979325e-02 --5.382013142674e-02 -5.559580758741e-02 -5.729068136213e-02 -5.890304567025e-02 --6.043130485283e-02 -6.187397611862e-02 -6.322969084568e-02 -6.449719573756e-02 --6.567535383323e-02 -6.676314537007e-02 -6.775966849945e-02 -6.866413985459e-02 --6.947589497063e-02 -7.019438855687e-02 -7.081919462152e-02 -7.135000644933e-02 --7.178663643267e-02 -7.212901575695e-02 -7.237719394112e-02 -7.253133823464e-02 --7.259173287195e-02 -7.255877818608e-02 -7.243298958297e-02 -7.221499637829e-02 --7.190554049871e-02 -7.150547504972e-02 -7.101576275240e-02 -7.043747425129e-02 --6.977178629627e-02 -6.901997980085e-02 -6.818343777997e-02 -6.726364317018e-02 --6.626217653535e-02 -6.518071366117e-02 -6.402102304188e-02 -6.278496326262e-02 --6.147448028115e-02 -6.009160461257e-02 -5.863844842095e-02 -5.711720252171e-02 --5.553013329895e-02 -5.387957954164e-02 -5.216794920309e-02 -5.039771608784e-02 --4.857141647040e-02 -4.669164565024e-02 -4.476105444761e-02 -4.278234564460e-02 --4.075827037615e-02 -3.869162447569e-02 -3.658524477991e-02 -3.444200539771e-02 --3.226481394767e-02 -3.005660776926e-02 -2.782035011212e-02 -2.555902630867e-02 --2.327563993447e-02 -2.097320896137e-02 -1.865476190813e-02 -1.632333399337e-02 --1.398196329553e-02 -1.163368692469e-02 -9.281537210775e-03 -6.928537913070e-03 --4.577700455416e-03 -2.232020191838e-03 1.055272929233e-04 2.431989843527e-03 -4.744442350352e-03 7.039990317716e-03 9.315773379721e-03 1.156896875954e-02 -1.379679466805e-02 1.599651363785e-02 1.816543578862e-02 2.030092202019e-02 -2.240038712946e-02 2.446130284760e-02 2.648120079414e-02 2.845767534433e-02 -3.038838640685e-02 3.227106210840e-02 3.410350138237e-02 3.588357645862e-02 -3.760923525171e-02 3.927850364479e-02 4.088948766690e-02 4.244037556115e-02 -4.392943974174e-02 4.535503863768e-02 4.671561842131e-02 4.800971462001e-02 -4.923595360928e-02 5.039305398596e-02 5.147982782019e-02 5.249518178498e-02 -5.343811816249e-02 5.430773572606e-02 5.510323049754e-02 5.582389637918e-02 -5.646912565992e-02 5.703840939578e-02 5.753133766442e-02 5.794759969388e-02 -5.828698386590e-02 5.854937759416e-02 5.873476707813e-02 5.884323693321e-02 -5.887496969808e-02 5.883024522034e-02 5.870943992158e-02 5.851302594329e-02 -5.824157017513e-02 5.789573316698e-02 5.747626792690e-02 5.698401860662e-02 -5.641991907667e-02 5.578499139343e-02 5.508034416032e-02 5.430717078558e-02 -5.346674763916e-02 5.256043211145e-02 5.158966057661e-02 5.055594626341e-02 -4.946087703648e-02 4.830611309131e-02 4.709338456586e-02 4.582448907248e-02 -4.450128915314e-02 4.312570966174e-02 4.169973507682e-02 4.022540674857e-02 -3.870482008348e-02 3.714012167076e-02 3.553350635409e-02 3.388721425273e-02 -3.220352773586e-02 3.048476835413e-02 2.873329373248e-02 2.695149442828e-02 -2.514179075879e-02 2.330662960220e-02 2.144848117626e-02 1.956983579870e-02 -1.767320063363e-02 1.576109642796e-02 1.383605424216e-02 1.190061217943e-02 -9.957312117337e-03 8.008696446310e-03 6.057304818763e-03 4.105670913186e-03 -2.156319217133e-03 2.117618331311e-04 -1.725504688503e-03 -3.653002486023e-03 --5.568275487930e-03 -7.468892476130e-03 -9.352450106845e-03 -1.121657588556e-02 --1.305893109241e-02 -1.487721365444e-02 -1.666916096130e-02 -1.843255262097e-02 --2.016521315220e-02 -2.186501461049e-02 -2.352987914451e-02 -2.515778147985e-02 --2.674675132734e-02 -2.829487571296e-02 -2.980030122677e-02 -3.126123618819e-02 --3.267595272522e-02 -3.404278876514e-02 -3.536014993456e-02 -3.662651136660e-02 --3.784041941333e-02 -3.900049326142e-02 -4.010542644944e-02 -4.115398828509e-02 --4.214502516090e-02 -4.307746176710e-02 -4.395030220038e-02 -4.476263096751e-02 --4.551361388285e-02 -4.620249885901e-02 -4.682861658991e-02 -4.739138112576e-02 --4.789029033958e-02 -4.832492628501e-02 -4.869495544526e-02 -4.900012887330e-02 --4.924028222339e-02 -4.941533567430e-02 -4.952529374462e-02 -4.957024500079e-02 --4.955036165852e-02 -4.946589907844e-02 -4.931719515703e-02 -4.910466961379e-02 --4.882882317603e-02 -4.849023666264e-02 -4.808956996814e-02 -4.762756094888e-02 --4.710502421290e-02 -4.652284981543e-02 -4.588200186193e-02 -4.518351702076e-02 --4.442850294764e-02 -4.361813662421e-02 -4.275366261309e-02 -4.183639123185e-02 --4.086769664858e-02 -3.984901490169e-02 -3.878184184664e-02 -3.766773103258e-02 --3.650829151167e-02 -3.530518558430e-02 -3.406012648303e-02 -3.277487599862e-02 --3.145124205122e-02 -3.009107621011e-02 -2.869627116519e-02 -2.726875815371e-02 --2.581050434560e-02 -2.432351019094e-02 -2.280980673299e-02 -2.127145289039e-02 --1.971053271207e-02 -1.812915260851e-02 -1.652943856288e-02 -1.491353332576e-02 --1.328359359712e-02 -1.164178719905e-02 -9.990290243072e-03 -8.331284295577e-03 --6.666953545004e-03 -4.999481974467e-03 -3.331050543370e-03 -1.663834381623e-03 --2.402669613501e-15 1.658297479800e-03 3.308917071970e-03 4.949734646731e-03 -6.578645620480e-03 - Type L N - 0 2 6 -0.000000000000e+00 1.158449375594e-04 4.632072064351e-04 1.041569421675e-03 -1.850070109030e-03 2.887504951123e-03 4.152328531465e-03 5.642656572168e-03 -7.356268662154e-03 9.290611471781e-03 1.144280244933e-02 1.380963399377e-02 -1.638757809772e-02 1.917279145368e-02 2.216112101614e-02 2.534811001120e-02 -2.872900438505e-02 3.229875968163e-02 3.605204833944e-02 3.998326739671e-02 -4.408654659363e-02 4.835575685968e-02 5.278451917357e-02 5.736621378273e-02 -6.209398976888e-02 6.696077494550e-02 7.195928607265e-02 7.708203937428e-02 -8.232136134232e-02 8.766939981191e-02 9.311813529135e-02 9.865939253019e-02 -1.042848523085e-01 1.099860634300e-01 1.157544549012e-01 1.215813482797e-01 -1.274579701716e-01 1.333754648620e-01 1.393249070584e-01 1.452973147290e-01 -1.512836620174e-01 1.572748922140e-01 1.632619307658e-01 1.692356983058e-01 -1.751871236816e-01 1.811071569663e-01 1.869867824310e-01 1.928170314606e-01 -1.985889953941e-01 2.042938382712e-01 2.099228094656e-01 2.154672561873e-01 -2.209186358363e-01 2.262685281881e-01 2.315086473959e-01 2.366308537893e-01 -2.416271654543e-01 2.464897695783e-01 2.512110335412e-01 2.557835157396e-01 -2.601999761268e-01 2.644533864541e-01 2.685369401979e-01 2.724440621603e-01 -2.761684177267e-01 2.797039217702e-01 2.830447471879e-01 2.861853330583e-01 -2.891203924071e-01 2.918449195724e-01 2.943541971564e-01 2.966438025567e-01 -2.987096140655e-01 3.005478165298e-01 3.021549065652e-01 3.035276973145e-01 -3.046633227465e-01 3.055592414877e-01 3.062132401832e-01 3.066234363819e-01 -3.067882809417e-01 3.067065599532e-01 3.063773961785e-01 3.058002500042e-01 -3.049749199075e-01 3.039015424360e-01 3.025805917007e-01 3.010128783852e-01 -2.991995482717e-01 2.971420802874e-01 2.948422840751e-01 2.923022970908e-01 -2.895245812357e-01 2.865119190253e-01 2.832674093043e-01 2.797944625130e-01 -2.760967955125e-01 2.721784259784e-01 2.680436663704e-01 2.636971174878e-01 -2.591436616213e-01 2.543884553110e-01 2.494369217232e-01 2.442947426555e-01 -2.389678501851e-01 2.334624179713e-01 2.277848522262e-01 2.219417823669e-01 -2.159400513646e-01 2.097867058034e-01 2.034889856661e-01 1.970543138596e-01 -1.904902854990e-01 1.838046569639e-01 1.770053347441e-01 1.701003640922e-01 -1.630979174991e-01 1.560062830099e-01 1.488338523982e-01 1.415891092149e-01 -1.342806167313e-01 1.269170057925e-01 1.195069625999e-01 1.120592164414e-01 -1.045825273864e-01 9.708567396355e-02 8.957744084060e-02 8.206660652352e-02 -7.456193109275e-02 6.707214399493e-02 5.960593190768e-02 5.217192669509e-02 -4.477869347138e-02 3.743471878998e-02 3.014839897518e-02 2.292802861292e-02 -1.578178921756e-02 8.717738090536e-03 1.743797387035e-03 -5.132256593808e-03 --1.190280388006e-02 -1.856039104457e-02 -2.509774115471e-02 -3.150776344014e-02 --3.778356266528e-02 -4.391844819326e-02 -4.990594272891e-02 -5.573979072874e-02 --6.141396646626e-02 -6.692268174186e-02 -7.226039322664e-02 -7.742180943043e-02 --8.240189728471e-02 -8.719588833174e-02 -9.179928451186e-02 -9.620786354151e-02 --1.004176838751e-01 -1.044250892447e-01 -1.082267127718e-01 -1.118194806463e-01 --1.152006153691e-01 -1.183676385534e-01 -1.213183732835e-01 -1.240509460273e-01 --1.265637881026e-01 -1.288556366940e-01 -1.309255354236e-01 -1.327728344720e-01 --1.343971902544e-01 -1.357985646509e-01 -1.369772237950e-01 -1.379337364231e-01 --1.386689717884e-01 -1.391840971439e-01 -1.394805747999e-01 -1.395601587609e-01 --1.394248909492e-01 -1.390770970207e-01 -1.385193817826e-01 -1.377546242179e-01 --1.367859721294e-01 -1.356168364080e-01 -1.342508849388e-01 -1.326920361532e-01 --1.309444522377e-01 -1.290125320121e-01 -1.269009034870e-01 -1.246144161144e-01 --1.221581327425e-01 -1.195373212894e-01 -1.167574461467e-01 -1.138241593296e-01 --1.107432913851e-01 -1.075208420744e-01 -1.041629708430e-01 -1.006759870946e-01 --9.706634028308e-02 -9.334060983866e-02 -8.950549494349e-02 -8.556780417290e-02 --8.153444501805e-02 -7.741241330612e-02 -7.320878253450e-02 -6.893069313497e-02 --6.458534168457e-02 -6.017997007931e-02 -5.572185468727e-02 -5.121829549741e-02 --4.667660528048e-02 -4.210409877825e-02 -3.750808193722e-02 -3.289584120295e-02 --2.827463289080e-02 -2.365167264895e-02 -1.903412502911e-02 -1.442909318035e-02 --9.843608681133e-03 -5.284621524332e-03 -7.589902698312e-04 3.726527621051e-03 -8.165285255404e-03 1.255075556925e-02 1.687654036556e-02 2.113637911688e-02 -2.532415752022e-02 2.943391579212e-02 3.345985669244e-02 3.739635326564e-02 -4.123795628897e-02 4.497940141745e-02 4.861561601591e-02 5.214172566905e-02 -5.555306036077e-02 5.884516031483e-02 6.201378148917e-02 6.505490071711e-02 -6.796472048876e-02 7.073967336707e-02 7.337642603310e-02 7.587188295594e-02 -7.822318968311e-02 8.042773574815e-02 8.248315719229e-02 8.438733869820e-02 -8.613841533394e-02 8.773477390620e-02 8.917505392232e-02 9.045814816127e-02 -9.158320285438e-02 9.254961747711e-02 9.335704415391e-02 9.400538667863e-02 -9.449479915370e-02 9.482568425169e-02 9.499869110366e-02 9.501471281903e-02 -9.487488364239e-02 9.458057575324e-02 9.413339571510e-02 9.353518058094e-02 -9.278799366247e-02 9.189411997126e-02 9.085606134019e-02 8.967653123410e-02 -8.835844925907e-02 8.690493538012e-02 8.531930385757e-02 8.360505691270e-02 -8.176587813370e-02 7.980562563325e-02 7.772832496954e-02 7.553816184269e-02 -7.323947457889e-02 7.083674641501e-02 6.833459759641e-02 6.573777730123e-02 -6.305115540435e-02 6.027971409480e-02 5.742853936005e-02 5.450281235135e-02 -5.150780064392e-02 4.844884940628e-02 4.533137249275e-02 4.216084347362e-02 -3.894278661706e-02 3.568276783738e-02 3.238638562369e-02 2.905926196354e-02 -2.570703327558e-02 2.233534136558e-02 1.894982441988e-02 1.555610805018e-02 -1.215979640360e-02 8.766463351712e-03 5.381643771999e-03 2.010824935074e-03 --1.340561989201e-03 -4.667150293877e-03 -7.963645952750e-03 -1.122483568154e-02 --1.444559483040e-02 -1.762089509599e-02 -2.074581204182e-02 -2.381553241579e-02 --2.682536125416e-02 -2.977072876185e-02 -3.264719695903e-02 -3.545046608454e-02 --3.817638074709e-02 -4.082093581567e-02 -4.338028204082e-02 -4.585073139923e-02 --4.822876215434e-02 -5.051102362607e-02 -5.269434066359e-02 -5.477571781513e-02 --5.675234318974e-02 -5.862159200606e-02 -6.038102982396e-02 -6.202841545521e-02 --6.356170355011e-02 -6.497904685724e-02 -6.627879815424e-02 -6.745951184806e-02 --6.851994524352e-02 -6.945905947958e-02 -7.027602013348e-02 -7.097019749301e-02 --7.154116649818e-02 -7.198870635366e-02 -7.231279981420e-02 -7.251363214552e-02 --7.259158976385e-02 -7.254725855772e-02 -7.238142189594e-02 -7.209505832662e-02 --7.168933897204e-02 -7.116562462502e-02 -7.052546255272e-02 -6.977058301437e-02 --6.890289549963e-02 -6.792448469504e-02 -6.683760618612e-02 -6.564468190324e-02 --6.434829531971e-02 -6.295118641090e-02 -6.145624638359e-02 -5.986651218503e-02 --5.818516080152e-02 -5.641550335661e-02 -5.456097901941e-02 -5.262514873357e-02 --5.061168877784e-02 -4.852438416946e-02 -4.636712192160e-02 -4.414388416646e-02 --4.185874115570e-02 -3.951584415008e-02 -3.711941821030e-02 -3.467375490113e-02 --3.218320492099e-02 -2.965217066937e-02 -2.708509876424e-02 -2.448647252192e-02 --2.186080441173e-02 -1.921262849779e-02 -1.654649288024e-02 -1.386695214826e-02 --1.117855985699e-02 -8.485861040583e-03 -5.793384773283e-03 -3.105636790551e-03 --4.270921818921e-04 2.237811832983e-03 4.884683033275e-03 7.509181220273e-03 -1.010702512361e-02 1.267399917983e-02 1.520596017277e-02 1.769884372549e-02 -2.014867063378e-02 2.255155303169e-02 2.490370037951e-02 2.720142526540e-02 -2.944114901179e-02 3.161940707838e-02 3.373285425359e-02 3.577826962697e-02 -3.775256133536e-02 3.965277107591e-02 4.147607837955e-02 4.321980463900e-02 -4.488141688568e-02 4.645853131032e-02 4.794891652270e-02 4.935049654612e-02 -5.066135354291e-02 5.187973026750e-02 5.300403224421e-02 5.403282966737e-02 -5.496485902165e-02 5.579902442126e-02 5.653439866677e-02 5.717022401920e-02 -5.770591269104e-02 5.814104705468e-02 5.847537956906e-02 5.870883242566e-02 -5.884149691575e-02 5.887363252092e-02 5.880566572958e-02 5.863818858240e-02 -5.837195695027e-02 5.800788854867e-02 5.754706069270e-02 5.699070779760e-02 -5.634021862982e-02 5.559713331426e-02 5.476314010346e-02 5.384007191516e-02 -5.282990264466e-02 5.173474325923e-02 5.055683768156e-02 4.929855847020e-02 -4.796240230460e-02 4.655098528325e-02 4.506703804324e-02 4.351340071010e-02 -4.189301768686e-02 4.020893229156e-02 3.846428125282e-02 3.666228907290e-02 -3.480626226818e-02 3.289958349719e-02 3.094570558604e-02 2.894814546188e-02 -2.691047800448e-02 2.483632982661e-02 2.272937299373e-02 2.059331869362e-02 -1.843191086655e-02 1.624891980689e-02 1.404813574665e-02 1.183336243172e-02 -9.608410701586e-03 7.377092082996e-03 5.143212408206e-03 2.910565468323e-03 -6.829267120771e-04 -1.535952999666e-03 -3.742353573516e-03 -5.932591787285e-03 --8.103027308005e-03 -1.025006861455e-02 -1.237017881542e-02 -1.445988135238e-02 --1.651576558100e-02 -1.853449221918e-02 -2.051279865517e-02 -2.244750410684e-02 --2.433551462404e-02 -2.617382792650e-02 -2.795953806972e-02 -2.968983993177e-02 --3.136203351423e-02 -3.297352805078e-02 -3.452184591733e-02 -3.600462633794e-02 --3.741962888111e-02 -3.876473674135e-02 -4.003795980148e-02 -4.123743747123e-02 --4.236144129837e-02 -4.340837734873e-02 -4.437678835212e-02 -4.526535561139e-02 --4.607290067221e-02 -4.679838675192e-02 -4.744091992563e-02 -4.799975006878e-02 --4.847427155521e-02 -4.886402371075e-02 -4.916869102217e-02 -4.938810310223e-02 --4.952223441176e-02 -4.957120373998e-02 -4.953527344494e-02 -4.941484845619e-02 --4.921047504213e-02 -4.892283934503e-02 -4.855276568695e-02 -4.810121465025e-02 --4.756928093668e-02 -4.695819100941e-02 -4.626930052278e-02 -4.550409154471e-02 --4.466416957733e-02 -4.375126038127e-02 -4.276720660994e-02 -4.171396425980e-02 --4.059359894342e-02 -3.940828199207e-02 -3.816028639507e-02 -3.685198258314e-02 --3.548583406348e-02 -3.406439291435e-02 -3.259029514718e-02 -3.106625594443e-02 --2.949506478171e-02 -2.787958044259e-02 -2.622272593490e-02 -2.452748331740e-02 --2.279688844578e-02 -2.103402564700e-02 -1.924202233133e-02 -1.742404355109e-02 --1.558328651563e-02 -1.372297507176e-02 -1.184635415898e-02 -9.956684249067e-03 --8.057235779192e-03 -6.151283588064e-03 -4.242101364374e-03 -2.332956116824e-03 --4.271026749379e-04 1.472221770211e-03 3.361803076335e-03 5.238455502416e-03 -7.099026994534e-03 8.940404396417e-03 1.075951857619e-02 1.255334946101e-02 -1.431893097146e-02 1.605335584770e-02 1.775378035967e-02 1.941742889385e-02 -2.104159840920e-02 2.262366275530e-02 2.416107684589e-02 2.565138068120e-02 -2.709220321295e-02 2.848126604591e-02 2.981638697042e-02 3.109548332051e-02 -3.231657515238e-02 3.347778823884e-02 3.457735687481e-02 3.561362649026e-02 -3.658505606648e-02 3.749022035241e-02 3.832781187797e-02 3.909664276163e-02 -3.979564630983e-02 4.042387840633e-02 4.098051868971e-02 4.146487151789e-02 -4.187636671855e-02 4.221456012506e-02 4.247913389767e-02 4.266989662998e-02 -4.278678324145e-02 4.282985465662e-02 4.279929727237e-02 4.269542221476e-02 -4.251866438748e-02 4.226958131403e-02 4.194885177638e-02 4.155727425296e-02 -4.109576515940e-02 4.056535689547e-02 3.996719570215e-02 3.930253933322e-02 -3.857275454567e-02 3.777931441390e-02 3.692379547270e-02 3.600787469448e-02 -3.503332630624e-02 3.400201845236e-02 3.291590970911e-02 3.177704545739e-02 -3.058755412020e-02 2.934964327168e-02 2.806559562458e-02 2.673776490353e-02 -2.536857161114e-02 2.396049869471e-02 2.251608712102e-02 2.103793136695e-02 -1.952867483397e-02 1.799100519427e-02 1.642764967678e-02 1.484137030113e-02 -1.323495906788e-02 1.161123311312e-02 9.973029835915e-03 8.323202006782e-03 -6.664612865637e-03 5.000131217437e-03 3.332626533897e-03 1.664964069491e-03 --8.289501967746e-15 -1.659423408319e-03 -3.310482590678e-03 -4.950377429127e-03 --6.576335943163e-03 - Type L N - 0 2 7 -0.000000000000e+00 1.469077279070e-04 5.873534290424e-04 1.320505160728e-03 -2.344978051437e-03 3.658836841985e-03 5.259599439572e-03 7.144241475153e-03 -9.309201856313e-03 1.175038930510e-02 1.446318986865e-02 1.744247538855e-02 -2.068261291309e-02 2.417747503490e-02 2.792045113452e-02 3.190445950906e-02 -3.612196036317e-02 4.056496963804e-02 4.522507365283e-02 5.009344453085e-02 -5.516085638202e-02 6.041770221118e-02 6.585401152093e-02 7.145946857587e-02 -7.722343129452e-02 8.313495073344e-02 8.918279112741e-02 9.535545044823e-02 -1.016411814439e-01 1.080280131193e-01 1.145037726172e-01 1.210561074614e-01 -1.276725081175e-01 1.343403308319e-01 1.410468207053e-01 1.477791349581e-01 -1.545243663455e-01 1.612695666768e-01 1.680017703972e-01 1.747080181883e-01 -1.813753805420e-01 1.879909812661e-01 1.945420208775e-01 2.010157998388e-01 -2.073997415975e-01 2.136814153829e-01 2.198485587212e-01 2.258890996255e-01 -2.317911784205e-01 2.375431691623e-01 2.431337006137e-01 2.485516767361e-01 -2.537862966618e-01 2.588270741088e-01 2.636638562041e-01 2.682868416798e-01 -2.726865984108e-01 2.768540802606e-01 2.807806432055e-01 2.844580607093e-01 -2.878785383179e-01 2.910347274517e-01 2.939197383675e-01 2.965271522693e-01 -2.988510325455e-01 3.008859351137e-01 3.026269178534e-01 3.040695491129e-01 -3.052099152728e-01 3.060446273565e-01 3.065708266738e-01 3.067861894905e-01 -3.066889307167e-01 3.062778066061e-01 3.055521164664e-01 3.045117033749e-01 -3.031569539037e-01 3.014887968528e-01 2.995087009974e-01 2.972186718536e-01 -2.946212474720e-01 2.917194932652e-01 2.885169958845e-01 2.850178561553e-01 -2.812266810873e-01 2.771485749762e-01 2.727891296141e-01 2.681544136287e-01 -2.632509609724e-01 2.580857585848e-01 2.526662332517e-01 2.470002376878e-01 -2.410960358693e-01 2.349622876458e-01 2.286080326604e-01 2.220426736104e-01 -2.152759588798e-01 2.083179645781e-01 2.011790760183e-01 1.938699686717e-01 -1.864015886344e-01 1.787851326427e-01 1.710320276768e-01 1.631539101899e-01 -1.551626050028e-01 1.470701039044e-01 1.388885439972e-01 1.306301858302e-01 -1.223073913581e-01 1.139326017712e-01 1.055183152335e-01 9.707706457492e-02 -8.862139497538e-02 8.016384168477e-02 7.171690781892e-02 6.329304227300e-02 -5.490461779312e-02 4.656390924647e-02 3.828307212992e-02 3.007412135648e-02 -2.194891035837e-02 1.391911054470e-02 5.996191151141e-03 -1.808600481890e-03 --9.484258167120e-03 -1.702003562959e-02 -2.440546473363e-02 -3.163037314506e-02 --3.868490139734e-02 -4.555951933149e-02 -5.224504188083e-02 -5.873264417311e-02 --6.501387592367e-02 -7.108067509496e-02 -7.692538079896e-02 -8.254074542075e-02 --8.791994594282e-02 -9.305659445147e-02 -9.794474780801e-02 -1.025789164694e-01 --1.069540724446e-01 -1.110656563734e-01 -1.149095837193e-01 -1.184822500658e-01 --1.217805355092e-01 -1.248018081440e-01 -1.275439266357e-01 -1.300052418806e-01 --1.321845977508e-01 -1.340813309275e-01 -1.356952698260e-01 -1.370267326157e-01 --1.380765243446e-01 -1.388459331740e-01 -1.393367257360e-01 -1.395511416236e-01 --1.394918870281e-01 -1.391621275383e-01 -1.385654801181e-01 -1.377060042802e-01 --1.365881924762e-01 -1.352169597232e-01 -1.335976324900e-01 -1.317359368659e-01 --1.296379860378e-01 -1.273102671008e-01 -1.247596272310e-01 -1.219932592482e-01 --1.190186865980e-01 -1.158437477845e-01 -1.124765802849e-01 -1.089256039783e-01 --1.051995041218e-01 -1.013072139095e-01 -9.725789664597e-02 -9.306092757320e-02 --8.872587538403e-02 -8.426248345993e-02 -7.968065086945e-02 -7.499041316440e-02 --7.020192301119e-02 -6.532543069481e-02 -6.037126453315e-02 -5.534981123928e-02 --5.027149626938e-02 -4.514676419385e-02 -3.998605912891e-02 -3.479980526588e-02 --2.959838753486e-02 -2.439213243917e-02 -1.919128909660e-02 -1.400601052271e-02 --8.846335191045e-03 -3.722168904420e-03 1.356732989385e-03 6.380783004879e-03 -1.134057851732e-02 1.622691832151e-02 2.103081872114e-02 2.574352911967e-02 -3.035654708513e-02 3.486163286212e-02 3.925082330556e-02 4.351644521183e-02 -4.765112802455e-02 5.164781589304e-02 5.549977906332e-02 5.920062458253e-02 -6.274430629942e-02 6.612513414455e-02 6.933778267570e-02 7.237729887534e-02 -7.523910918842e-02 7.791902579039e-02 8.041325207693e-02 8.271838736825e-02 -8.483143082256e-02 8.674978455485e-02 8.847125595848e-02 8.999405922906e-02 -9.131681609112e-02 9.243855573027e-02 9.335871393438e-02 9.407713144950e-02 -9.459405155731e-02 9.491011688263e-02 9.502636544080e-02 9.494422593643e-02 -9.466551232619e-02 9.419241765992e-02 9.352750721548e-02 9.267371094438e-02 -9.163431524611e-02 9.041295409077e-02 8.901359951046e-02 8.744055148121e-02 -8.569842721830e-02 8.379214990894e-02 8.172693690713e-02 7.950828741665e-02 -7.714196968891e-02 7.463400776333e-02 7.199066777860e-02 6.921844388396e-02 -6.632404378032e-02 6.331437392159e-02 6.019652440715e-02 5.697775359691e-02 -5.366547248077e-02 5.026722883464e-02 4.679069119550e-02 4.324363268817e-02 -3.963391473662e-02 3.596947069273e-02 3.225828941542e-02 2.850839883311e-02 -2.472784952212e-02 2.092469833385e-02 1.710699210281e-02 1.328275146789e-02 -9.459954838185e-03 5.646522534994e-03 1.850301140472e-03 -1.920951916666e-03 --5.659583508850e-03 -9.358059661809e-03 -1.300898008295e-02 -1.660509233848e-02 --2.013930565269e-02 -2.360470430360e-02 -2.699456059015e-02 -3.030234734709e-02 --3.352174998469e-02 -3.664667803149e-02 -3.967127615940e-02 -4.258993467161e-02 --4.539729943476e-02 -4.808828123843e-02 -5.065806456571e-02 -5.310211576030e-02 --5.541619057664e-02 -5.759634110094e-02 -5.963892203234e-02 -6.154059631460e-02 --6.329834011036e-02 -6.490944711108e-02 -6.637153217736e-02 -6.768253430551e-02 --6.884071891787e-02 -6.984467947550e-02 -7.069333841342e-02 -7.138594739991e-02 --7.192208692260e-02 -7.230166520569e-02 -7.252491646371e-02 -7.259239849874e-02 --7.250498964925e-02 -7.226388509986e-02 -7.187059256291e-02 -7.132692734353e-02 --7.063500680147e-02 -6.979724422389e-02 -6.881634212452e-02 -6.769528498567e-02 --6.643733146074e-02 -6.504600605567e-02 -6.352509030898e-02 -6.187861349086e-02 --6.011084284264e-02 -5.822627337901e-02 -5.622961727571e-02 -5.412579286672e-02 --5.191991327530e-02 -4.961727470382e-02 -4.722334440823e-02 -4.474374838328e-02 --4.218425878511e-02 -3.955078111839e-02 -3.684934121531e-02 -3.408607203436e-02 --3.126720030668e-02 -2.839903305828e-02 -2.548794403649e-02 -2.254036006878e-02 --1.956274738266e-02 -1.656159791469e-02 -1.354341563710e-02 -1.051470292991e-02 --7.481947026484e-03 -4.451606560117e-03 -1.430098238890e-03 1.576216324357e-03 -4.561043600468e-03 7.518170924900e-03 1.044147904573e-02 1.332495441396e-02 -1.616270119189e-02 1.894895295610e-02 2.167808407238e-02 2.434462072042e-02 -2.694325154733e-02 2.946883792955e-02 3.191642382379e-02 3.428124518852e-02 -3.655873895850e-02 3.874455155588e-02 4.083454692234e-02 4.282481405790e-02 -4.471167405300e-02 4.649168660169e-02 4.816165598479e-02 4.971863651304e-02 -5.115993742146e-02 5.248312720725e-02 5.368603740490e-02 5.476676579313e-02 -5.572367902963e-02 5.655541471085e-02 5.726088285508e-02 5.783926680844e-02 -5.829002357453e-02 5.861288356966e-02 5.880784980680e-02 5.887519651265e-02 -5.881546718310e-02 5.862947208385e-02 5.831828520389e-02 5.788324067062e-02 -5.732592863653e-02 5.664819064849e-02 5.585211451158e-02 5.494002866046e-02 -5.391449605229e-02 5.277830759611e-02 5.153447513440e-02 5.018622399365e-02 -4.873698512129e-02 4.719038682738e-02 4.555024615001e-02 4.382055986426e-02 -4.200549515500e-02 4.010937997467e-02 3.813669310747e-02 3.609205396226e-02 -3.398021211664e-02 3.180603663516e-02 2.957450518526e-02 2.729069297434e-02 -2.495976153231e-02 2.258694736345e-02 2.017755049231e-02 1.773692292786e-02 -1.527045707069e-02 1.278357408768e-02 1.028171227885e-02 7.770315460692e-03 -5.254821390476e-03 2.740650255607e-03 2.331932519382e-04 -2.262198725284e-03 --4.740226254575e-03 -7.195652402534e-03 -9.623313556838e-03 -1.201813005590e-02 --1.437511659366e-02 -1.668939237858e-02 -1.895619102653e-02 -2.117087016772e-02 --2.332892074888e-02 -2.542597601217e-02 -2.745782013337e-02 -2.942039650251e-02 --3.130981563110e-02 -3.312236267077e-02 -3.485450452901e-02 -3.650289656895e-02 --3.806438888046e-02 -3.953603211141e-02 -4.091508284839e-02 -4.219900853757e-02 --4.338549193713e-02 -4.447243509383e-02 -4.545796283729e-02 -4.634042578657e-02 --4.711840286474e-02 -4.779070331816e-02 -4.835636823817e-02 -4.881467158413e-02 --4.916512070757e-02 -4.940745637847e-02 -4.954165231564e-02 -4.956791422416e-02 --4.948667834399e-02 -4.929860951478e-02 -4.900459876297e-02 -4.860576041812e-02 --4.810342876670e-02 -4.749915425206e-02 -4.679469923055e-02 -4.599203329469e-02 --4.509332817483e-02 -4.410095223194e-02 -4.301746455484e-02 -4.184560867586e-02 --4.058830591992e-02 -3.924864840252e-02 -3.782989169286e-02 -3.633544715909e-02 --3.476887401313e-02 -3.313387107305e-02 -3.143426826184e-02 -2.967401786142e-02 --2.785718554155e-02 -2.598794118356e-02 -2.407054951920e-02 -2.210936060516e-02 --2.010880015427e-02 -1.807335974430e-02 -1.600758692586e-02 -1.391607525066e-02 --1.180345424164e-02 -9.674379326701e-03 -7.533521757299e-03 -5.385558533686e-03 --3.235162357996e-03 -1.086991636544e-03 1.054319447608e-03 3.184170770956e-03 -5.298005994152e-03 7.391322154623e-03 9.459679107286e-03 1.149870879385e-02 -1.350412432159e-02 1.547172883307e-02 1.739742414856e-02 1.927721916380e-02 -2.110723798592e-02 2.288372779141e-02 2.460306639022e-02 2.626176948115e-02 -2.785649758408e-02 2.938406263563e-02 3.084143423534e-02 3.222574553030e-02 -3.353429872728e-02 3.476457022169e-02 3.591421533407e-02 3.698107264539e-02 -3.796316792334e-02 3.885871763293e-02 3.966613202524e-02 4.038401779937e-02 -4.101118033356e-02 4.154662548216e-02 4.198956093638e-02 4.233939714728e-02 -4.259574781094e-02 4.275842991611e-02 4.282746335595e-02 4.280307010634e-02 -4.268567297399e-02 4.247589391862e-02 4.217455195441e-02 4.178266063662e-02 -4.130142514038e-02 4.073223893931e-02 4.007668009244e-02 3.933650714897e-02 -3.851365468085e-02 3.761022845408e-02 3.662850025054e-02 3.557090235235e-02 -3.444002170214e-02 3.323859375264e-02 3.196949601988e-02 3.063574135499e-02 -2.924047094993e-02 2.778694709296e-02 2.627854569045e-02 2.471874857175e-02 -2.311113559434e-02 2.145937656704e-02 1.976722300894e-02 1.803849976264e-02 -1.627709647992e-02 1.448695899886e-02 1.267208063096e-02 1.083649337755e-02 -8.984259094307e-03 7.119460623156e-03 5.246192910636e-03 3.368554131809e-03 -1.490636838737e-03 -3.834808475741e-04 -2.249743983023e-03 -4.104129465518e-03 --5.942654601015e-03 -7.761385552468e-03 -9.556445653953e-03 -1.132402357260e-02 --1.306038130132e-02 -1.476186196578e-02 -1.642489742950e-02 -1.804601568136e-02 --1.962184799059e-02 -2.114913581438e-02 -2.262473744444e-02 -2.404563437887e-02 --2.540893740670e-02 -2.671189239304e-02 -2.795188575326e-02 -2.912644960572e-02 --3.023326659285e-02 -3.127017436145e-02 -3.223516969377e-02 -3.312641228142e-02 --3.394222813561e-02 -3.468111262711e-02 -3.534173315109e-02 -3.592293141203e-02 --3.642372532519e-02 -3.684331053186e-02 -3.718106152629e-02 -3.743653239329e-02 --3.760945715608e-02 -3.769974973505e-02 -3.770750351867e-02 -3.763299054886e-02 --3.747666032380e-02 -3.723913822194e-02 -3.692122355201e-02 -3.652388723420e-02 --3.604826911899e-02 -3.549567495034e-02 -3.486757298104e-02 -3.416559024867e-02 --3.339150852121e-02 -3.254725992210e-02 -3.163492224531e-02 -3.065671397135e-02 --2.961498899606e-02 -2.851223108433e-02 -2.735104806176e-02 -2.613416575733e-02 --2.486442171123e-02 -2.354475866194e-02 -2.217821782737e-02 -2.076793199522e-02 --1.931711843802e-02 -1.782907166866e-02 -1.630715605253e-02 -1.475479829273e-02 --1.317547980480e-02 -1.157272899787e-02 -9.950113479126e-03 -8.311232198628e-03 --6.659707551603e-03 -4.999177455396e-03 -3.333287418206e-03 -1.665682616765e-03 -6.107527556058e-15 1.660139564409e-03 3.311139083646e-03 4.949433157140e-03 -6.571495601099e-03 - Type L N - 0 2 8 -0.000000000000e+00 1.816222897676e-04 7.260650408436e-04 1.632056859352e-03 -2.897481963989e-03 4.519384988051e-03 6.493977688712e-03 8.816647546198e-03 -1.148196823318e-02 1.448371193045e-02 1.781486346025e-02 2.146763620464e-02 -2.543348977210e-02 2.970314937161e-02 3.426662684946e-02 3.911324334017e-02 -4.423165347923e-02 4.960987112178e-02 5.523529650800e-02 6.109474481226e-02 -6.717447601048e-02 7.346022599663e-02 7.993723887676e-02 8.659030036608e-02 -9.340377221213e-02 1.003616275650e-01 1.074474872126e-01 1.146446565987e-01 -1.219361635373e-01 1.293047965375e-01 1.367331436507e-01 1.442036317510e-01 -1.516985661577e-01 1.592001705108e-01 1.666906268068e-01 1.741521155030e-01 -1.815668555997e-01 1.889171446072e-01 1.961853983078e-01 2.033541902202e-01 -2.104062906784e-01 2.173247054343e-01 2.240927136971e-01 2.306939055224e-01 -2.371122184676e-01 2.433319734278e-01 2.493379095743e-01 2.551152183140e-01 -2.606495761948e-01 2.659271766822e-01 2.709347607358e-01 2.756596461173e-01 -2.800897553645e-01 2.842136423684e-01 2.880205174954e-01 2.915002711977e-01 -2.946434960612e-01 2.974415072413e-01 2.998863612427e-01 3.019708730029e-01 -3.036886312414e-01 3.050340120434e-01 3.060021906490e-01 3.065891514228e-01 -3.067916959852e-01 3.066074494887e-01 3.060348650283e-01 3.050732261781e-01 -3.037226476526e-01 3.019840740932e-01 2.998592769860e-01 2.973508497219e-01 -2.944622008127e-01 2.911975452825e-01 2.875618942573e-01 2.835610427792e-01 -2.792015558782e-01 2.744907529345e-01 2.694366903727e-01 2.640481427281e-01 -2.583345821348e-01 2.523061562833e-01 2.459736649015e-01 2.393485348183e-01 -2.324427936662e-01 2.252690422894e-01 2.178404259217e-01 2.101706042029e-01 -2.022737201060e-01 1.941643678479e-01 1.858575598602e-01 1.773686928971e-01 -1.687135133615e-01 1.599080819292e-01 1.509687375553e-01 1.419120609460e-01 -1.327548375810e-01 1.235140203738e-01 1.142066920539e-01 1.048500273610e-01 -9.546125513622e-02 8.605762039846e-02 7.665634649361e-02 6.727459740229e-02 -5.792944029313e-02 4.863780840654e-02 3.941646435367e-02 3.028196391350e-02 -2.125062041004e-02 1.233846975003e-02 3.561236199343e-03 -5.065701024999e-03 --1.352734027291e-02 -2.180908901717e-02 -2.989679437747e-02 -3.777677254537e-02 --4.543583704590e-02 -5.286132577412e-02 -6.004112674843e-02 -6.696370252510e-02 --7.361811322225e-02 -7.999403810449e-02 -8.608179568331e-02 -9.187236229169e-02 --9.735738909511e-02 -1.025292175050e-01 -1.073808929647e-01 -1.119061770811e-01 --1.160995580804e-01 -1.199562595691e-01 -1.234722475869e-01 -1.266442359394e-01 --1.294696898072e-01 -1.319468276265e-01 -1.340746212460e-01 -1.358527943634e-01 --1.372818192535e-01 -1.383629118017e-01 -1.390980248599e-01 -1.394898399479e-01 --1.395417573246e-01 -1.392578844607e-01 -1.386430229430e-01 -1.377026538498e-01 --1.364429216354e-01 -1.348706165695e-01 -1.329931557753e-01 -1.308185629194e-01 --1.283554466042e-01 -1.256129775195e-01 -1.226008644118e-01 -1.193293289326e-01 --1.158090794282e-01 -1.120512837384e-01 -1.080675410706e-01 -1.038698530203e-01 --9.947059380872e-02 -9.488247981082e-02 -9.011853844896e-02 -8.519207652742e-02 --8.011664808468e-02 -7.490602184136e-02 -6.957414832194e-02 -6.413512672929e-02 --5.860317165080e-02 -5.299257967560e-02 -4.731769600168e-02 -4.159288111183e-02 --3.583247759664e-02 -3.005077720215e-02 -2.426198817900e-02 -1.848020300878e-02 --1.271936658204e-02 -6.993244901238e-03 -1.315394380088e-03 4.300868190743e-03 -9.842494943682e-03 1.529673543405e-02 2.065116427592e-02 2.589370785255e-02 -3.101267004258e-02 3.599675690559e-02 4.083510027343e-02 4.551728019665e-02 -5.003334619826e-02 5.437383729008e-02 5.852980071023e-02 6.249280934339e-02 -6.625497778907e-02 6.980897704613e-02 7.314804778570e-02 7.626601218788e-02 -7.915728432116e-02 8.181687904745e-02 8.424041943868e-02 8.642414269519e-02 -8.836490455929e-02 9.006018222135e-02 9.150807571923e-02 9.270730783581e-02 -9.365722250242e-02 9.435778172033e-02 9.480956101519e-02 9.501374344343e-02 -9.497211217267e-02 9.468704166176e-02 9.416148746913e-02 9.339897472166e-02 -9.240358527894e-02 9.117994363127e-02 8.973320157228e-02 8.806902168994e-02 -8.619355972266e-02 8.411344582917e-02 8.183576482396e-02 7.936803543167e-02 -7.671818861659e-02 7.389454504481e-02 7.090579173892e-02 6.776095798660e-02 -6.446939056584e-02 6.104072835127e-02 5.748487636690e-02 5.381197935194e-02 -5.003239490686e-02 4.615666628805e-02 4.219549491945e-02 3.815971269027e-02 -3.406025410792e-02 2.990812837531e-02 2.571439146162e-02 2.149011823517e-02 -1.724637472661e-02 1.299419059013e-02 8.744531829237e-03 4.508273852986e-03 -2.961749272744e-04 -3.881149915498e-03 -8.013254446491e-03 -1.208988622993e-02 --1.610101097347e-02 -2.003683618275e-02 -2.388783406540e-02 -2.764476363204e-02 --3.129869194379e-02 -3.484101445852e-02 -3.826347443024e-02 -4.155818131877e-02 --4.471762816948e-02 -4.773470792561e-02 -5.060272863842e-02 -5.331542754373e-02 --5.586698397572e-02 -5.825203109266e-02 -6.046566639160e-02 -6.250346099278e-02 --6.436146767730e-02 -6.603622766491e-02 -6.752477612201e-02 -6.882464639312e-02 --6.993387295238e-02 -7.085099307464e-02 -7.157504722924e-02 -7.210557820247e-02 --7.244262895797e-02 -7.258673924740e-02 -7.253894098692e-02 -7.230075241770e-02 --7.187417107211e-02 -7.126166556964e-02 -7.046616626985e-02 -6.949105481195e-02 --6.834015257368e-02 -6.701770808449e-02 -6.552838343030e-02 -6.387723969000e-02 --6.206972144544e-02 -6.011164040925e-02 -5.800915821676e-02 -5.576876842981e-02 --5.339727780257e-02 -5.090178686060e-02 -4.828966984605e-02 -4.556855408335e-02 --4.274629882071e-02 -3.983097360395e-02 -3.683083624003e-02 -3.375431040840e-02 --3.060996297894e-02 -2.740648109560e-02 -2.415264908530e-02 -2.085732525166e-02 --1.752941861326e-02 -1.417786564581e-02 -1.081160708746e-02 -7.439564866003e-03 --4.070619205987e-03 -7.135859732106e-04 2.622805686953e-03 5.929935361925e-03 -9.199312980668e-03 1.242259996581e-02 1.559162987751e-02 1.869842849911e-02 -2.173523331604e-02 2.469451234151e-02 2.756898224422e-02 3.035162573535e-02 -3.303570817425e-02 3.561479335437e-02 3.808275843334e-02 4.043380797323e-02 -4.266248705992e-02 4.476369347245e-02 4.673268887618e-02 4.856510901611e-02 -5.025697288934e-02 5.180469087832e-02 5.320507182949e-02 5.445532906433e-02 -5.555308531311e-02 5.649637656394e-02 5.728365482286e-02 5.791378978346e-02 -5.838606940722e-02 5.870019941863e-02 5.885630172195e-02 5.885491174902e-02 -5.869697475057e-02 5.838384104567e-02 5.791726024702e-02 5.729937448205e-02 -5.653271063232e-02 5.562017161625e-02 5.456502674237e-02 5.337090116277e-02 -5.204176445833e-02 5.058191838963e-02 4.899598384939e-02 4.728888705396e-02 -4.546584501350e-02 4.353235032190e-02 4.149415530922e-02 3.935725560067e-02 -3.712787312779e-02 3.481243863837e-02 3.241757375288e-02 2.995007261620e-02 -2.741688319407e-02 2.482508826450e-02 2.218188615501e-02 1.949457127667e-02 -1.677051450671e-02 1.401714347104e-02 1.124192277859e-02 8.452334258824e-03 -5.655857253885e-03 2.859949016168e-03 7.202526183728e-05 -2.700559069969e-03 --5.450528803207e-03 -8.170707208110e-03 -1.085403433436e-02 -1.349358494819e-02 --1.608258602868e-02 -1.861443377973e-02 -2.108271011576e-02 -2.348119858071e-02 --2.580389966152e-02 -2.804504545901e-02 -3.019911368107e-02 -3.226084092472e-02 --3.422523521586e-02 -3.608758777739e-02 -3.784348399868e-02 -3.948881358142e-02 --4.101977983929e-02 -4.243290813094e-02 -4.372505340850e-02 -4.489340686581e-02 --4.593550167321e-02 -4.684921778814e-02 -4.763278583322e-02 -4.828479003590e-02 --4.880417022633e-02 -4.919022289253e-02 -4.944260129431e-02 -4.956131464010e-02 --4.954672633286e-02 -4.939955129407e-02 -4.912085237686e-02 -4.871203588183e-02 --4.817484619129e-02 -4.751135953999e-02 -4.672397694244e-02 -4.581541629921e-02 --4.478870370651e-02 -4.364716399537e-02 -4.239441052864e-02 -4.103433428591e-02 --3.957109226798e-02 -3.800909525448e-02 -3.635299494945e-02 -3.460767055138e-02 --3.277821478540e-02 -3.086991943675e-02 -2.888826042553e-02 -2.683888246406e-02 --2.472758333878e-02 -2.256029785980e-02 -2.034308152151e-02 -1.808209391853e-02 --1.578358196155e-02 -1.345386293810e-02 -1.109930746339e-02 -8.726322366442e-03 --6.341333556919e-03 -3.950768917616e-03 -1.561041267603e-03 8.214685595516e-04 -3.190428478422e-03 5.539571711839e-03 7.862713105768e-03 1.015376515704e-02 -1.240675371303e-02 1.461583330327e-02 1.677530206426e-02 1.887961621988e-02 -2.092340408113e-02 2.290147953035e-02 2.480885495661e-02 2.664075361042e-02 -2.839262134767e-02 3.006013773450e-02 3.163922648626e-02 3.312606521612e-02 -3.451709447020e-02 3.580902602862e-02 3.699885045340e-02 3.808384386657e-02 -3.906157394371e-02 3.992990511037e-02 4.068700293090e-02 4.133133768149e-02 -4.186168710125e-02 4.227713831753e-02 4.257708894362e-02 4.276124734946e-02 -4.282963210800e-02 4.278257062179e-02 4.262069693714e-02 4.234494875454e-02 -4.195656364671e-02 4.145707449743e-02 4.084830417625e-02 4.013235946636e-02 -3.931162426453e-02 3.838875207418e-02 3.736665781404e-02 3.624850896700e-02 -3.503771609510e-02 3.373792274817e-02 3.235299479545e-02 3.088700921045e-02 -2.934424234114e-02 2.772915769830e-02 2.604639329640e-02 2.430074858229e-02 -2.249717098781e-02 2.064074214350e-02 1.873666379119e-02 1.679024343397e-02 -1.480687976259e-02 1.279204789768e-02 1.075128448776e-02 8.690172702883e-03 -6.614327164212e-03 4.529378849718e-03 2.440960016003e-03 3.546891762300e-04 --1.723843826266e-03 -3.789092609477e-03 -5.835568870624e-03 -7.857856792378e-03 --9.850627199989e-03 -1.180865143274e-02 -1.372681489399e-02 -1.560013024515e-02 --1.742375020984e-02 -1.919297995581e-02 -2.090328902336e-02 -2.255032277022e-02 --2.412991330451e-02 -2.563808987852e-02 -2.707108871781e-02 -2.842536226166e-02 --2.969758779257e-02 -3.088467543407e-02 -3.198377549807e-02 -3.299228516462e-02 --3.390785447876e-02 -3.472839165117e-02 -3.545206765108e-02 -3.607732008177e-02 --3.660285633117e-02 -3.702765599168e-02 -3.735097254568e-02 -3.757233431473e-02 --3.769154467277e-02 -3.770868152547e-02 -3.762409605970e-02 -3.743841076912e-02 --3.715251676396e-02 -3.676757037443e-02 -3.628498905967e-02 -3.570644663541e-02 --3.503386783573e-02 -3.426942222548e-02 -3.341551748227e-02 -3.247479206786e-02 --3.145010731083e-02 -3.034453892367e-02 -2.916136797890e-02 -2.790407137006e-02 --2.657631178510e-02 -2.518192722021e-02 -2.372492006395e-02 -2.220944578217e-02 --2.063980123523e-02 -1.902041265998e-02 -1.735582334967e-02 -1.565068106572e-02 --1.390972521576e-02 -1.213777383294e-02 -1.033971039195e-02 -8.520470497345e-03 --6.685028480247e-03 -4.838383939254e-03 -2.985548261812e-03 -1.131531161935e-03 -7.186727298842e-04 2.560097188991e-03 4.387817595918e-03 6.196963978004e-03 -7.982733859050e-03 9.740404883418e-03 1.146534718170e-02 1.315303544582e-02 -1.479906068247e-02 1.639914161451e-02 1.794913570120e-02 1.944504974918e-02 -2.088305008724e-02 2.225947227929e-02 2.357083035107e-02 2.481382550780e-02 -2.598535432110e-02 2.708251636518e-02 2.810262128379e-02 2.904319527096e-02 -2.990198695028e-02 3.067697263896e-02 3.136636098475e-02 3.196859696540e-02 -3.248236524221e-02 3.290659286073e-02 3.324045129372e-02 3.348335782306e-02 -3.363497625903e-02 3.369521699747e-02 3.366423641657e-02 3.354243561739e-02 -3.333045851338e-02 3.302918927637e-02 3.263974914783e-02 3.216349262613e-02 -3.160200304192e-02 3.095708753555e-02 3.023077145194e-02 2.942529216962e-02 -2.854309238255e-02 2.758681285422e-02 2.655928466521e-02 2.546352097668e-02 -2.430270833320e-02 2.308019752980e-02 2.179949406905e-02 2.046424823497e-02 -1.907824481156e-02 1.764539247469e-02 1.616971288658e-02 1.465532952316e-02 -1.310645626504e-02 1.152738578322e-02 9.922477751471e-03 8.296146917260e-03 -6.652851063798e-03 4.997078895596e-03 3.333337880273e-03 1.666142079259e-03 -2.389818419419e-15 -1.660597497888e-03 -3.311189210362e-03 -4.947355478647e-03 --6.564729929525e-03 - Type L N - 0 2 9 -0.000000000000e+00 2.199878632246e-04 8.793292279983e-04 1.976159129335e-03 -3.507374991733e-03 5.468645159338e-03 7.854420806502e-03 1.065795119347e-02 -1.387130222514e-02 1.748537826075e-02 2.148994711368e-02 2.587366817106e-02 -3.062412355489e-02 3.572785223720e-02 4.117038701400e-02 4.693629423461e-02 -5.300921617524e-02 5.937191593841e-02 6.600632475287e-02 7.289359154170e-02 -8.001413462032e-02 8.734769538014e-02 9.487339380785e-02 1.025697856858e-01 -1.104149213138e-01 1.183864055887e-01 1.264614592744e-01 1.346169812922e-01 -1.428296118575e-01 1.510757962875e-01 1.593318493033e-01 1.675740196468e-01 -1.757785548339e-01 1.839217658645e-01 1.919800917091e-01 1.999301633953e-01 -2.077488675152e-01 2.154134089799e-01 2.229013728467e-01 2.301907850499e-01 -2.372601718671e-01 2.440886179582e-01 2.506558228185e-01 2.569421554894e-01 -2.629287073803e-01 2.685973430545e-01 2.739307488430e-01 2.789124791541e-01 -2.835270003525e-01 2.877597320911e-01 2.915970859835e-01 2.950265015140e-01 -2.980364790901e-01 3.006166101497e-01 3.027576042443e-01 3.044513130277e-01 -3.056907510889e-01 3.064701135762e-01 3.067847905695e-01 3.066313781658e-01 -3.060076862537e-01 3.049127429601e-01 3.033467957635e-01 3.013113092773e-01 -2.988089597136e-01 2.958436260517e-01 2.924203779398e-01 2.885454603714e-01 -2.842262751846e-01 2.794713594426e-01 2.742903607604e-01 2.686940096552e-01 -2.626940890007e-01 2.563034006781e-01 2.495357295217e-01 2.424058046661e-01 -2.349292584071e-01 2.271225826964e-01 2.190030833979e-01 2.105888324354e-01 -2.018986179717e-01 1.929518927617e-01 1.837687208269e-01 1.743697226046e-01 -1.647760187269e-01 1.550091725908e-01 1.450911318804e-01 1.350441692083e-01 -1.248908220419e-01 1.146538320850e-01 1.043560842835e-01 9.402054562715e-02 -8.367020391676e-02 7.332800666863e-02 6.301680032486e-02 5.275926993817e-02 -4.257787949767e-02 3.249481305968e-02 2.253191684506e-02 1.271064246129e-02 -3.051991403943e-03 -6.423539011990e-03 -1.569600814480e-02 -2.474608280168e-02 --3.355508616137e-02 -4.210504471356e-02 -5.037873309104e-02 -5.835971667642e-02 --6.603239187260e-02 -7.338202393252e-02 -8.039478225132e-02 -8.705777303152e-02 --9.335906923935e-02 -9.928773777867e-02 -1.048338638166e-01 -1.099885722039e-01 --1.147440459405e-01 -1.190935416471e-01 -1.230314020099e-01 -1.265530651757e-01 --1.296550710843e-01 -1.323350647308e-01 -1.345917963635e-01 -1.364251186262e-01 --1.378359806693e-01 -1.388264192555e-01 -1.393995469001e-01 -1.395595370904e-01 --1.393116066394e-01 -1.386619952351e-01 -1.376179422552e-01 -1.361876609259e-01 --1.343803099072e-01 -1.322059623985e-01 -1.296755728617e-01 -1.268009414673e-01 --1.235946763737e-01 -1.200701539568e-01 -1.162414771124e-01 -1.121234317578e-01 --1.077314416644e-01 -1.030815217573e-01 -9.819023002316e-02 -9.307461816620e-02 --8.775218116234e-02 -8.224080585759e-02 -7.655871876268e-02 -7.072443319624e-02 --6.475669593018e-02 -5.867443349193e-02 -5.249669827824e-02 -4.624261463530e-02 --3.993132505925e-02 -3.358193667011e-02 -2.721346811084e-02 -2.084479702113e-02 --1.449460823326e-02 -8.181342834745e-03 -1.923148239074e-03 4.262170597480e-03 -1.035719867912e-02 1.634495706419e-02 2.220894742446e-02 2.793319494990e-02 -3.350228948471e-02 3.890142478554e-02 4.411643579911e-02 4.913383386249e-02 -5.394083973606e-02 5.852541438554e-02 6.287628743675e-02 6.698298323374e-02 -7.083584443829e-02 7.442605311622e-02 7.774564926363e-02 8.078754673372e-02 -8.354554653285e-02 8.601434746216e-02 8.818955408889e-02 9.006768203980e-02 -9.164616061647e-02 9.292333274034e-02 9.389845224334e-02 9.457167852718e-02 -9.494406862238e-02 9.501756668542e-02 9.479499097973e-02 9.428001839337e-02 -9.347716655333e-02 9.239177360303e-02 9.102997571616e-02 8.939868242626e-02 -8.750554985761e-02 8.535895194856e-02 8.296794976386e-02 8.034225899804e-02 -7.749221577606e-02 7.442874086263e-02 7.116330239521e-02 6.770787725968e-02 -6.407491123093e-02 6.027727800392e-02 5.632823724291e-02 5.224139177928e-02 -4.803064408986e-02 4.371015218923e-02 3.929428507052e-02 3.479757782977e-02 -3.023468660928e-02 2.562034349494e-02 2.096931150214e-02 1.629633978397e-02 -1.161611919360e-02 6.943238331471e-03 2.292140205463e-03 -2.322920370225e-03 --6.887918514673e-03 -1.138910003869e-02 -1.581302110610e-02 -2.014658668588e-02 --2.437708768709e-02 -2.849223667348e-02 -3.248020205920e-02 -3.632964069210e-02 --4.002972873681e-02 -4.357019077484e-02 -4.694132704532e-02 -5.013403875559e-02 --5.313985139713e-02 -5.595093600899e-02 -5.856012833683e-02 -6.096094584281e-02 --6.314760252806e-02 -6.511502153621e-02 -6.685884551357e-02 -6.837544470817e-02 --6.966192279707e-02 -7.071612043809e-02 -7.153661654906e-02 -7.212272732468e-02 --7.247450300756e-02 -7.259272243721e-02 -7.247888540685e-02 -7.213520286468e-02 --7.156458500260e-02 -7.077062728145e-02 -6.975759444778e-02 -6.853040260321e-02 --6.709459939274e-02 -6.545634238392e-02 -6.362237571384e-02 -6.160000508571e-02 --5.939707120145e-02 -5.702192172107e-02 -5.448338184333e-02 -5.179072360620e-02 --4.895363400890e-02 -4.598218206008e-02 -4.288678485997e-02 -3.967817282603e-02 --3.636735417425e-02 -3.296557876942e-02 -2.948430145944e-02 -2.593514500936e-02 --2.232986275155e-02 -1.868030106874e-02 -1.499836182640e-02 -1.129596487050e-02 --7.585010705922e-03 -3.877343469460e-03 -1.847143100734e-04 3.481254713080e-03 -7.109106106306e-03 1.068758168479e-02 1.420565648066e-02 1.765257171565e-02 -2.101786674184e-02 2.429140985759e-02 2.746342790972e-02 3.052453459729e-02 -3.346575739671e-02 3.627856303269e-02 3.895488142433e-02 4.148712804086e-02 -4.386822460664e-02 4.609161810065e-02 4.815129800111e-02 5.004181173166e-02 -5.175827827122e-02 5.329639989576e-02 5.465247202582e-02 5.582339115998e-02 -5.680666088027e-02 5.760039592173e-02 5.820332430421e-02 5.861478753074e-02 -5.883473886252e-02 5.886373968673e-02 5.870295399914e-02 5.835414102910e-02 -5.781964604028e-02 5.710238934612e-02 5.620585358389e-02 5.513406929708e-02 -5.389159888011e-02 5.248351894493e-02 5.091540117308e-02 4.919329172142e-02 -4.732368925408e-02 4.531352167665e-02 4.317012165270e-02 4.090120098583e-02 -3.851482395387e-02 3.601937968419e-02 3.342355366222e-02 3.073629846700e-02 -2.796680382983e-02 2.512446611365e-02 2.221885731196e-02 1.925969366728e-02 -1.625680400978e-02 1.322009791697e-02 1.015953379548e-02 7.085086985819e-03 -4.006717990083e-03 9.343409221033e-04 -2.122207722006e-03 -5.153199876226e-03 --8.149046205155e-03 -1.110032579993e-02 -1.399781517917e-02 -1.683251650722e-02 --1.959568494479e-02 -2.227885505038e-02 -2.487386615403e-02 -2.737288662881e-02 --2.976843698917e-02 -3.205341174916e-02 -3.422109997818e-02 -3.626520449573e-02 --3.817985965185e-02 -3.995964764408e-02 -4.159961332693e-02 -4.309527747477e-02 --4.444264846413e-02 -4.563823234630e-02 -4.667904128676e-02 -4.756260035281e-02 --4.828695263640e-02 -4.885066270423e-02 -4.925281837259e-02 -4.949303080981e-02 --4.957143297428e-02 -4.948867640132e-02 -4.924592635723e-02 -4.884485538421e-02 --4.828763526424e-02 -4.757692743560e-02 -4.671587189972e-02 -4.570807466124e-02 --4.455759374821e-02 -4.326892386370e-02 -4.184697972440e-02 -4.029707814536e-02 --3.862491893394e-02 -3.683656465934e-02 -3.493841936759e-02 -3.293720631450e-02 --3.083994479229e-02 -2.865392612774e-02 -2.638668893222e-02 -2.404599368583e-02 --2.163979673974e-02 -1.917622382202e-02 -1.666354313384e-02 -1.411013812330e-02 --1.152448002530e-02 -8.915100255805e-03 -6.290562749049e-03 -3.659436326144e-03 --1.030267182759e-03 1.588448416978e-03 4.188291154379e-03 6.760945293228e-03 -9.298224856821e-03 1.179209926377e-02 1.423471834338e-02 1.661843665371e-02 -1.893583702815e-02 2.117975327884e-02 2.334329198853e-02 2.541985332563e-02 -2.740315082040e-02 2.928723004408e-02 3.106648613639e-02 3.273568013062e-02 -3.428995402986e-02 3.572484459183e-02 3.703629578417e-02 3.822066987657e-02 -3.927475714035e-02 4.019578413094e-02 4.098142053316e-02 4.162978455384e-02 -4.213944685128e-02 4.250943299532e-02 4.273922445695e-02 4.282875813085e-02 -4.277842439880e-02 4.258906374688e-02 4.226196195359e-02 4.179884387064e-02 -4.120186582262e-02 4.047360665596e-02 3.961705747178e-02 3.863561008134e-02 -3.753304422663e-02 3.631351361252e-02 3.498153080037e-02 3.354195101643e-02 -3.199995493175e-02 3.036103047315e-02 2.863095372782e-02 2.681576900667e-02 -2.492176813392e-02 2.295546903276e-02 2.092359367870e-02 1.883304549411e-02 -1.669088625872e-02 1.450431261231e-02 1.228063222673e-02 1.002723972500e-02 -7.751592425892e-03 5.461185992628e-03 3.163530064113e-03 8.661239471169e-04 --1.423567552895e-03 -3.698138085252e-03 -5.950263415892e-03 -8.172724722765e-03 --1.035843145153e-02 -1.250044365998e-02 -1.459199378161e-02 -1.662650774079e-02 --1.859762535438e-02 -2.049921995729e-02 -2.232541719211e-02 -2.407061290580e-02 --2.572949009978e-02 -2.729703488265e-02 -2.876855137857e-02 -3.013967554749e-02 --3.140638787734e-02 -3.256502491202e-02 -3.361228958282e-02 -3.454526031495e-02 --3.536139888491e-02 -3.605855700843e-02 -3.663498164306e-02 -3.708931899344e-02 --3.742061721175e-02 -3.762832778976e-02 -3.771230564345e-02 -3.767280789506e-02 --3.751049136182e-02 -3.722640876460e-02 -3.682200367381e-02 -3.629910421392e-02 --3.565991555179e-02 -3.490701119789e-02 -3.404332315311e-02 -3.307213093760e-02 --3.199704954126e-02 -3.082201633910e-02 -2.955127701775e-02 -2.818937056221e-02 --2.674111335517e-02 -2.521158244345e-02 -2.360609802887e-02 -2.193020524305e-02 --2.018965526765e-02 -1.839038586356e-02 -1.653850137407e-02 -1.464025226861e-02 --1.270201429484e-02 -1.073026730782e-02 -8.731573845858e-03 -6.712557523091e-03 --4.679881309316e-03 -2.640225767507e-03 -6.002673194726e-04 1.433343390304e-03 -3.454002963193e-03 5.455176478626e-03 7.430418422352e-03 9.373393244311e-03 -1.127789548115e-02 1.313786938007e-02 1.494742796245e-02 1.670087146789e-02 -1.839270512133e-02 2.001765616846e-02 2.157069012714e-02 2.304702620522e-02 -2.444215183807e-02 2.575183630221e-02 2.697214336435e-02 2.809944292875e-02 -2.913042164873e-02 3.006209247213e-02 3.089180309365e-02 3.161724329081e-02 -3.223645112400e-02 3.274781798471e-02 3.315009247988e-02 3.344238314402e-02 -3.362415997477e-02 3.369525479111e-02 3.365586041739e-02 3.350652870018e-02 -3.324816736855e-02 3.288203575211e-02 3.240973937492e-02 3.183322344671e-02 -3.115476527662e-02 3.037696563770e-02 2.950273911414e-02 2.853530346589e-02 -2.747816804889e-02 2.633512133150e-02 2.511021755107e-02 2.380776255669e-02 -2.243229888701e-02 2.098859013410e-02 1.948160464657e-02 1.791649862706e-02 -1.629859868096e-02 1.463338387485e-02 1.292646736459e-02 1.118357765386e-02 -9.410539545482e-03 7.613254848001e-03 5.797682901151e-03 3.969820983777e-03 -2.135684668175e-03 3.012881846979e-04 -1.527375139800e-03 -3.344352306513e-03 --5.143749869768e-03 -6.919752901010e-03 -8.666643631123e-03 -1.037881971177e-02 --1.205081203788e-02 -1.367730207495e-02 -1.525313863681e-02 -1.677335406123e-02 --1.823317973299e-02 -1.962806090637e-02 -2.095367078140e-02 -2.220592379064e-02 --2.338098805623e-02 -2.447529697955e-02 -2.548555992892e-02 -2.640877199355e-02 --2.724222277558e-02 -2.798350419456e-02 -2.863051728270e-02 -2.918147795210e-02 --2.963492171868e-02 -2.998970737110e-02 -3.024501957619e-02 -3.040037041610e-02 --3.045559985569e-02 -3.041087514220e-02 -3.026668914282e-02 -3.002385762894e-02 --2.968351551956e-02 -2.924711209937e-02 -2.871640523051e-02 -2.809345458010e-02 --2.738061388883e-02 -2.658052230879e-02 -2.569609484180e-02 -2.473051191228e-02 --2.368720811129e-02 -2.256986015104e-02 -2.138237407161e-02 -2.012887174384e-02 --1.881367671460e-02 -1.744129944241e-02 -1.601642197357e-02 -1.454388211024e-02 --1.302865712360e-02 -1.147584706651e-02 -9.890657741144e-03 -8.278383378148e-03 --6.644389084369e-03 -4.994093117121e-03 -3.332949043045e-03 -1.666427839951e-03 -6.012352329821e-15 1.660882307642e-03 3.310802956777e-03 4.944399409738e-03 -6.556380031865e-03 - Type L N - 0 2 10 -0.000000000000e+00 2.620035804377e-04 1.047131718342e-03 2.352739493154e-03 -4.174428330095e-03 6.506060404103e-03 9.339778739072e-03 1.266603293461e-02 -1.647361043433e-02 2.074967323186e-02 2.547979989189e-02 3.064803274650e-02 -3.623693010936e-02 4.222762333385e-02 4.859987852524e-02 5.533216270128e-02 -6.240171418104e-02 6.978461696787e-02 7.745587887891e-02 8.538951316150e-02 -9.355862332505e-02 1.019354909068e-01 1.104916658795e-01 1.191980594019e-01 -1.280250386031e-01 1.369425230876e-01 1.459200828410e-01 1.549270372115e-01 -1.639325546409e-01 1.729057528151e-01 1.818157989018e-01 1.906320095474e-01 -1.993239503004e-01 2.078615341368e-01 2.162151187607e-01 2.243556023625e-01 -2.322545175197e-01 2.398841229321e-01 2.472174926930e-01 2.542286028033e-01 -2.608924146474e-01 2.671849551599e-01 2.730833934219e-01 2.785661134411e-01 -2.836127828782e-01 2.882044175025e-01 2.923234411673e-01 2.959537411153e-01 -2.990807184404e-01 3.016913335443e-01 3.037741464492e-01 3.053193518408e-01 -3.063188087347e-01 3.067660646799e-01 3.066563744277e-01 3.059867130152e-01 -3.047557832314e-01 3.029640174516e-01 3.006135738454e-01 2.977083269830e-01 -2.942538528805e-01 2.902574085479e-01 2.857279061174e-01 2.806758816488e-01 -2.751134587301e-01 2.690543070006e-01 2.625135957503e-01 2.555079427565e-01 -2.480553585404e-01 2.401751862379e-01 2.318880372958e-01 2.232157232141e-01 -2.141811835724e-01 2.048084105866e-01 1.951223704560e-01 1.851489217677e-01 -1.749147312377e-01 1.644471870749e-01 1.537743102598e-01 1.429246640392e-01 -1.319272619409e-01 1.208114746169e-01 1.096069358277e-01 9.834344788108e-02 -8.705088684057e-02 7.575910781808e-02 6.449785066425e-02 5.329664636778e-02 -4.218472447166e-02 3.119092180969e-02 2.034359286162e-02 9.670522018677e-03 --8.011619562113e-04 -1.104506899723e-02 -2.103562806663e-02 -3.074816449107e-02 --4.015897405730e-02 -4.924539363317e-02 -5.798586809226e-02 -6.636001333369e-02 --7.434867520261e-02 -8.193398413124e-02 -8.909940533569e-02 -9.582978441903e-02 --1.021113882473e-01 -1.079319409817e-01 -1.132806551669e-01 -1.181482577925e-01 --1.225270112614e-01 -1.264107292183e-01 -1.297947872062e-01 -1.326761281384e-01 --1.350532625913e-01 -1.369262639391e-01 -1.382967583708e-01 -1.391679098457e-01 --1.395444000616e-01 -1.394324035245e-01 -1.388395578295e-01 -1.377749292714e-01 --1.362489739257e-01 -1.342734943514e-01 -1.318615920821e-01 -1.290276160864e-01 --1.257871073914e-01 -1.221567400729e-01 -1.181542588320e-01 -1.137984133840e-01 --1.091088898976e-01 -1.041062397316e-01 -9.881180572283e-02 -9.324764628811e-02 --8.743645760788e-02 -8.140149416526e-02 -7.516648791822e-02 -6.875556638627e-02 --6.219316993520e-02 -5.550396854491e-02 -4.871277834585e-02 -4.184447820889e-02 --3.492392667190e-02 -2.797587948395e-02 -2.102490804431e-02 -1.409531900914e-02 --7.211075333353e-03 -3.957190089499e-04 6.327704246251e-03 1.293671810326e-02 -1.940948630276e-02 2.572488067445e-02 3.186254627760e-02 3.780296345647e-02 -4.352750661626e-02 4.901849953707e-02 5.425926705699e-02 5.923418296817e-02 -6.392871398422e-02 6.832945965134e-02 7.242418809040e-02 7.620186747228e-02 -7.965269314418e-02 8.276811034000e-02 8.554083242365e-02 8.796485463021e-02 -9.003546328530e-02 9.174924049919e-02 9.310406434793e-02 9.409910456930e-02 -9.473481381699e-02 9.501291453183e-02 9.493638150345e-02 9.450942021097e-02 -9.373744104510e-02 9.262702952815e-02 9.118591266185e-02 8.942292154537e-02 -8.734795041872e-02 8.497191229792e-02 8.230669137963e-02 7.936509240319e-02 -7.616078716752e-02 7.270825840950e-02 6.902274125824e-02 6.512016248718e-02 -6.101707779225e-02 5.673060733022e-02 5.227836975588e-02 4.767841500079e-02 -4.294915603927e-02 3.810929988956e-02 3.317777809923e-02 2.817367696430e-02 -2.311616773109e-02 1.802443702837e-02 1.291761777506e-02 7.814720805650e-03 -2.734567451569e-03 -2.304276688186e-03 -7.283566559373e-03 -1.218544082641e-02 --1.699248319366e-02 -2.168778166772e-02 -2.625498556300e-02 -3.067836006198e-02 --3.494283815152e-02 -3.903406976697e-02 -4.293846798677e-02 -4.664325213182e-02 --5.013648763584e-02 -5.340712256517e-02 -5.644502067939e-02 -5.924099093709e-02 --6.178681336438e-02 -6.407526121752e-02 -6.610011938443e-02 -6.785619898412e-02 --6.933934813651e-02 -7.054645888953e-02 -7.147547030398e-02 -7.212536771062e-02 --7.249617816758e-02 -7.258896215997e-02 -7.240580159638e-02 -7.194978417065e-02 --7.122498416940e-02 -7.023643981868e-02 -6.899012727473e-02 -6.749293137542e-02 --6.575261328024e-02 -6.377777513672e-02 -6.157782192159e-02 -5.916292061419e-02 --5.654395686812e-02 -5.373248935576e-02 -5.074070196708e-02 -4.758135405145e-02 --4.426772889667e-02 -4.081358064510e-02 -3.723307985088e-02 -3.354075788636e-02 --2.975145040852e-02 -2.588024009840e-02 -2.194239888811e-02 -1.795332989034e-02 --1.392850924527e-02 -9.883428098751e-03 -5.833534923925e-03 -1.794178395810e-03 -2.219448974676e-03 6.192366244977e-03 1.010985828576e-02 1.395752867415e-02 -1.772135104925e-02 2.138771875041e-02 2.494349256632e-02 2.837604643077e-02 -3.167331090945e-02 3.482381433117e-02 3.781672142661e-02 4.064186934726e-02 -4.328980094801e-02 4.575179522735e-02 4.801989483032e-02 5.008693053066e-02 -5.194654262030e-02 5.359319914616e-02 5.502221094600e-02 5.622974344750e-02 -5.721282520660e-02 5.796935317347e-02 5.849809468655e-02 5.879868620733e-02 -5.887162882027e-02 5.871828053444e-02 5.834084543467e-02 5.774235974177e-02 -5.692667485224e-02 5.589843743883e-02 5.466306670358e-02 5.322672888515e-02 -5.159630913190e-02 4.977938086104e-02 4.778417273319e-02 4.561953337956e-02 -4.329489402663e-02 4.082022917023e-02 3.820601545722e-02 3.546318893891e-02 -3.260310086529e-02 2.963747219388e-02 2.657834699060e-02 2.343804490332e-02 -2.022911289118e-02 1.696427639457e-02 1.365639013154e-02 1.031838870717e-02 -6.963237221582e-03 3.603882061735e-03 2.532020601634e-04 -3.076039798482e-03 --6.371243945210e-03 -9.620020894655e-03 -1.281023684336e-02 -1.593005803345e-02 --1.896799372230e-02 -2.191293760479e-02 -2.475420754144e-02 -2.748158345284e-02 --3.008534324839e-02 -3.255629666528e-02 -3.488581690254e-02 -3.706586994327e-02 --3.908904146801e-02 -4.094856127127e-02 -4.263832510331e-02 -4.415291386933e-02 --4.548761012830e-02 -4.663841184443e-02 -4.760204335446e-02 -4.837596352492e-02 --4.895837108397e-02 -4.934820712322e-02 -4.954515477559e-02 -4.954963608583e-02 --4.936280610077e-02 -4.898654421662e-02 -4.842344283100e-02 -4.767679335692e-02 --4.675056966581e-02 -4.564940903605e-02 -4.437859069210e-02 -4.294401202848e-02 --4.135216262065e-02 -3.961009613287e-02 -3.772540024034e-02 -3.570616469007e-02 --3.356094763092e-02 -3.129874034941e-02 -2.892893055317e-02 -2.646126434851e-02 --2.390580706294e-02 -2.127290306701e-02 -1.857313475277e-02 -1.581728082870e-02 --1.301627409256e-02 -1.018115884487e-02 -7.323048106310e-03 -4.453080802119e-03 --1.582379076085e-03 1.277994104811e-03 4.117076895743e-03 6.924049912610e-03 -9.688276810099e-03 1.239934394917e-02 1.504709900802e-02 1.762168839540e-02 -2.011359333025e-02 2.251366445745e-02 2.481315487560e-02 2.700375145932e-02 -2.907760436581e-02 3.102735462241e-02 3.284615970016e-02 3.452771698609e-02 -3.606628507543e-02 3.745670281381e-02 3.869440602799e-02 3.977544189305e-02 -4.069648089307e-02 4.145482634156e-02 4.204842143759e-02 4.247585384263e-02 -4.273635777314e-02 4.282981361275e-02 4.275674505787e-02 4.251831381953e-02 -4.211631191349e-02 4.155315157965e-02 4.083185288082e-02 3.995602903911e-02 -3.892986957682e-02 3.775812133673e-02 3.644606746422e-02 3.499950444117e-02 -3.342471726858e-02 3.172845290135e-02 2.991789204487e-02 2.800061942895e-02 -2.598459267953e-02 2.387810991374e-02 2.168977618808e-02 1.942846893310e-02 -1.710330251128e-02 1.472359203784e-02 1.229881660573e-02 9.838582058397e-03 -7.352583454433e-03 4.850567369051e-03 2.342294177207e-03 -1.624995374291e-04 --2.654138304523e-03 -5.123044678725e-03 -7.559775601667e-03 -9.955058077794e-03 --1.229982403074e-02 -1.458524421068e-02 -1.680276102726e-02 -1.894412018742e-02 --2.100140102249e-02 -2.296704539440e-02 -2.483388507685e-02 -2.659516751356e-02 --2.824457986222e-02 -2.977627123989e-02 -3.118487309266e-02 -3.246551762010e-02 --3.361385419245e-02 -3.462606370685e-02 -3.549887083663e-02 -3.622955413607e-02 --3.681595397167e-02 -3.725647825883e-02 -3.755010599193e-02 -3.769638856381e-02 --3.769544887952e-02 -3.754797827720e-02 -3.725523127767e-02 -3.681901819240e-02 --3.624169562733e-02 -3.552615492841e-02 -3.467580862197e-02 -3.369457491062e-02 --3.258686029276e-02 -3.135754038030e-02 -3.001193899610e-02 -2.855580563876e-02 --2.699529140817e-02 -2.533692349098e-02 -2.358757830999e-02 -2.175445344637e-02 --1.984503844759e-02 -1.786708463813e-02 -1.582857405291e-02 -1.373768761674e-02 --1.160277269495e-02 -9.432310142707e-03 -7.234880981712e-03 -5.019132833746e-03 --2.793746241246e-03 -5.674010047185e-04 1.651257333662e-03 3.853650732059e-03 -6.031301489937e-03 8.175864563376e-03 1.027915923270e-02 1.233320000329e-02 -1.433022662396e-02 1.626273311109e-02 1.812349567089e-02 1.990559941708e-02 -2.160246378597e-02 2.320786655663e-02 2.471596638938e-02 2.612132380187e-02 -2.741892050851e-02 2.860417705536e-02 2.967296868953e-02 3.062163940931e-02 -3.144701414801e-02 3.214640905242e-02 3.271763982383e-02 3.315902809725e-02 -3.346940584235e-02 3.364811777675e-02 3.369502179069e-02 3.361048738904e-02 -3.339539216478e-02 3.305111632528e-02 3.257953530016e-02 3.198301046681e-02 -3.126437803690e-02 3.042693615365e-02 2.947443025706e-02 2.841103677982e-02 -2.724134524376e-02 2.597033883180e-02 2.460337351638e-02 2.314615583044e-02 -2.160471937202e-02 1.998540013785e-02 1.829481078573e-02 1.653981392904e-02 -1.472749457012e-02 1.286513178221e-02 1.096016975200e-02 9.020188297052e-03 -7.052872973721e-03 5.065984892624e-03 3.067330359101e-03 1.064730456563e-03 --9.340093097221e-04 -2.921129191455e-03 -4.888945082975e-03 -6.829877999512e-03 --8.736483035799e-03 -1.060147769521e-02 -1.241776948243e-02 -1.417848265595e-02 --1.587698404013e-02 -1.750690780091e-02 -1.906217909314e-02 -2.053703649256e-02 --2.192605313036e-02 -2.322415645346e-02 -2.442664653926e-02 -2.552921289965e-02 --2.652794971473e-02 -2.741936944348e-02 -2.820041476444e-02 -2.886846880682e-02 --2.942136363844e-02 -2.985738698434e-02 -3.017528715649e-02 -3.037427618212e-02 --3.045403112513e-02 -3.041469360212e-02 -3.025686750147e-02 -2.998161492074e-02 --2.959045034473e-02 -2.908533309287e-02 -2.846865807160e-02 -2.774324487347e-02 --2.691232527115e-02 -2.597952916044e-02 -2.494886901223e-02 -2.382472289889e-02 --2.261181616584e-02 -2.131520182400e-02 -1.994023974356e-02 -1.849257473380e-02 --1.697811359776e-02 -1.540300125403e-02 -1.377359602157e-02 -1.209644416594e-02 --1.037825380810e-02 -8.625868299011e-03 -6.846239164960e-03 -5.046398729735e-03 --3.233432520802e-03 -1.414451567016e-03 4.034353045415e-04 2.213149065363e-03 -4.007667869506e-03 5.780054119506e-03 7.523481110548e-03 9.231259151201e-03 -1.089686106141e-02 1.251394695115e-02 1.407638818635e-02 1.557829045196e-02 -1.701401582611e-02 1.837820378317e-02 1.966579104810e-02 2.087203022904e-02 -2.199250716028e-02 2.302315689278e-02 2.396027827478e-02 2.480054707111e-02 -2.554102757496e-02 2.617918267265e-02 2.671288232720e-02 2.714041045362e-02 -2.746047016431e-02 2.767218737005e-02 2.777511272791e-02 2.776922193426e-02 -2.765491436722e-02 2.743301008928e-02 2.710474522729e-02 2.667176575308e-02 -2.613611969416e-02 2.550024780987e-02 2.476697277428e-02 2.393948691269e-02 -2.302133854408e-02 2.201641698699e-02 2.092893629145e-02 1.976341776426e-02 -1.852467135921e-02 1.721777600821e-02 1.584805897315e-02 1.442107430156e-02 -1.294258047276e-02 1.141851732369e-02 9.854982346319e-03 8.258206450586e-03 -6.634529288631e-03 4.990374237425e-03 3.332223137968e-03 1.666590889822e-03 -1.678812230281e-15 -1.661044814901e-03 -3.310081874987e-03 -4.940717534258e-03 --6.546650832582e-03 - Type L N - 0 2 11 -0.000000000000e+00 3.076684752969e-04 1.229456822918e-03 2.761718489533e-03 -4.898391469915e-03 7.631021618927e-03 1.094879516000e-02 1.483858026336e-02 -1.928497753096e-02 2.427037919052e-02 2.977503676719e-02 3.577713696791e-02 -4.225288548166e-02 4.917659836780e-02 5.652080067530e-02 6.425633190728e-02 -7.235245791876e-02 8.077698881069e-02 8.949640235977e-02 9.847597250258e-02 -1.076799023726e-01 1.170714613719e-01 1.266131257425e-01 1.362667220913e-01 -1.459935733092e-01 1.557546463171e-01 1.655107010646e-01 1.752224402041e-01 -1.848506588577e-01 1.943563938989e-01 2.037010721695e-01 2.128466570595e-01 -2.217557928846e-01 2.303919465032e-01 2.387195456292e-01 2.467041133084e-01 -2.543123980425e-01 2.615124990639e-01 2.682739862803e-01 2.745680144358e-01 -2.803674310519e-01 2.856468777420e-01 2.903828845161e-01 2.945539567237e-01 -2.981406543082e-01 3.011256630816e-01 3.034938577562e-01 3.052323565036e-01 -3.063305668482e-01 3.067802227308e-01 3.065754126186e-01 3.057125985692e-01 -3.041906261952e-01 3.020107255079e-01 2.991765026582e-01 2.956939226262e-01 -2.915712829478e-01 2.868191785994e-01 2.814504581996e-01 2.754801717169e-01 -2.689255099084e-01 2.618057357443e-01 2.541421081053e-01 2.459577980678e-01 -2.372777981237e-01 2.281288247028e-01 2.185392143984e-01 2.085388143130e-01 -1.981588669688e-01 1.874318902450e-01 1.763915528221e-01 1.650725456318e-01 -1.535104498227e-01 1.417416017660e-01 1.298029556362e-01 1.177319441059e-01 -1.055663377061e-01 9.334410339940e-02 8.110326292147e-02 6.888175144123e-02 -5.671727708871e-02 4.464718189424e-02 3.270830467496e-02 2.093684639556e-02 -9.368238518095e-03 -1.962985157258e-03 -1.302331267469e-02 -2.378037365978e-02 --3.420305416166e-02 -4.426160617195e-02 -5.392775141475e-02 -6.317477902589e-02 --7.197763676562e-02 -8.031301543553e-02 -8.815942619899e-02 -9.549727053327e-02 --1.023089025723e-01 -1.085786836294e-01 -1.142930287224e-01 -1.194404449545e-01 --1.240115616379e-01 -1.279991520817e-01 -1.313981469958e-01 -1.342056395004e-01 --1.364208817593e-01 -1.380452732934e-01 -1.390823410596e-01 -1.395377114146e-01 --1.394190741153e-01 -1.387361385373e-01 -1.375005823238e-01 -1.357259927067e-01 --1.334278007701e-01 -1.306232089512e-01 -1.273311121030e-01 -1.235720124635e-01 --1.193679289021e-01 -1.147423008317e-01 -1.097198871991e-01 -1.043266609778e-01 --9.858969961033e-02 -9.253707185462e-02 -8.619772150607e-02 -7.960134847434e-02 --7.277828770341e-02 -6.575938642888e-02 -5.857588027130e-02 -5.125926866597e-02 --4.384119012989e-02 -3.635329786467e-02 -2.882713619011e-02 -2.129401829720e-02 --1.378490580154e-02 -6.330290568085e-03 1.039920733378e-03 8.296518896249e-03 -1.541110083812e-02 2.235617424116e-02 2.910525777694e-02 3.563297654072e-02 -4.191515234175e-02 4.792888851923e-02 5.365264897716e-02 5.906633115714e-02 -6.415133269386e-02 6.889061152569e-02 7.326873926022e-02 7.727194762380e-02 -8.088816785271e-02 8.410706291371e-02 8.692005247143e-02 8.932033055009e-02 -9.130287586745e-02 9.286445484874e-02 9.400361735845e-02 9.472068521733e-02 -9.501773360112e-02 9.489856544625e-02 9.436867901559e-02 9.343522880452e-02 -9.210697999391e-02 9.039425668188e-02 8.830888415028e-02 8.586412544504e-02 -8.307461257098e-02 7.995627262242e-02 7.652624918934e-02 7.280281939669e-02 -6.880530695008e-02 6.455399157522e-02 6.007001525105e-02 5.537528564737e-02 -5.049237718656e-02 4.544443015637e-02 4.025504830616e-02 3.494819536231e-02 -2.954809090060e-02 2.407910601299e-02 1.856565920428e-02 1.303211295073e-02 -7.502671346696e-03 2.001279258628e-03 -3.448476603728e-03 -8.823464299277e-03 --1.410110056357e-02 -1.925944163937e-02 -2.427727067176e-02 -2.913418132615e-02 --3.381065730610e-02 -3.828814746650e-02 -4.254913623868e-02 -4.657720910519e-02 --5.035711288463e-02 -5.387481061019e-02 -5.711753080991e-02 -6.007381102120e-02 --6.273353539776e-02 -6.508796629279e-02 -6.712976972852e-02 -6.885303468854e-02 --7.025328619587e-02 -7.132749216619e-02 -7.207406405214e-02 -7.249285132072e-02 --7.258512983165e-02 -7.235358420985e-02 -7.180228433038e-02 -7.093665605800e-02 --6.976344640724e-02 -6.829068331139e-02 -6.652763021048e-02 -6.448473568909e-02 --6.217357841437e-02 -5.960680764286e-02 -5.679807958219e-02 -5.376198990912e-02 --5.051400276031e-02 -4.707037652467e-02 -4.344808677825e-02 -3.966474671203e-02 --3.573852541206e-02 -3.168806435765e-02 -2.753239250910e-02 -2.329084035964e-02 --1.898295332883e-02 -1.462840487436e-02 -1.024690969872e-02 -5.858137423784e-03 --1.481627102334e-03 2.863297070612e-03 7.157608491192e-03 1.138265897831e-02 -1.552025736739e-02 1.955274554190e-02 2.346307159151e-02 2.723485979991e-02 -3.085247718102e-02 3.430109629899e-02 3.756675412499e-02 4.063640670257e-02 -4.349797941283e-02 4.614041265109e-02 4.855370274757e-02 5.072893798650e-02 -5.265832959992e-02 5.433523763505e-02 5.575419161718e-02 5.691090595260e-02 -5.780229003971e-02 5.842645307927e-02 5.878270359798e-02 5.887154372239e-02 -5.869465826260e-02 5.825489868764e-02 5.755626209583e-02 5.660386530476e-02 -5.540391420582e-02 5.396366854810e-02 5.229140233518e-02 5.039636003652e-02 -4.828870883190e-02 4.597948712356e-02 4.348054956543e-02 4.080450887244e-02 -3.796467468555e-02 3.497498977904e-02 3.184996390683e-02 2.860460559276e-02 -2.525435217715e-02 2.181499843767e-02 1.830262410672e-02 1.473352061066e-02 -1.112411735750e-02 7.490907899814e-03 3.850376298047e-03 2.189240069475e-04 --3.387202396787e-03 -6.951982332809e-03 -1.045969087557e-02 -1.389496665532e-02 --1.724287771342e-02 -2.048898503462e-02 -2.361940349045e-02 -2.662085994112e-02 --2.948074825712e-02 -3.218718103649e-02 -3.472903781001e-02 -3.709600954258e-02 --3.927863925708e-02 -4.126835862455e-02 -4.305752038353e-02 -4.463942647041e-02 --4.600835176212e-02 -4.715956335253e-02 -4.808933530412e-02 -4.879495883629e-02 --4.927474793281e-02 -4.952804037032e-02 -4.955519419073e-02 -4.935757965981e-02 --4.893756677430e-02 -4.829850839888e-02 -4.744471913344e-02 -4.638145002913e-02 --4.511485928961e-02 -4.365197911066e-02 -4.200067882765e-02 -4.016962455577e-02 --3.816823552227e-02 -3.600663730365e-02 -3.369561219321e-02 -3.124654693566e-02 --2.867137807613e-02 -2.598253517989e-02 -2.319288218723e-02 -2.031565717474e-02 --1.736441079973e-02 -1.435294370905e-02 -1.129524319641e-02 -8.205419394279e-03 --5.097641286770e-03 -1.986072829379e-03 1.115190540756e-03 4.192184723556e-03 -7.231138827680e-03 1.021853582485e-02 1.314117172336e-02 1.598621300531e-02 -1.874125208106e-02 2.139436052478e-02 2.393413986573e-02 2.634976972223e-02 -2.863105307825e-02 3.076845851588e-02 3.275315923222e-02 3.457706868354e-02 -3.623287271619e-02 3.771405805957e-02 3.901493707359e-02 4.013066866018e-02 -4.105727526594e-02 4.179165592093e-02 4.233159527647e-02 4.267576862267e-02 -4.282374288487e-02 4.277597361553e-02 4.253379801639e-02 4.209942404287e-02 -4.147591566015e-02 4.066717433698e-02 3.967791687977e-02 3.851364972527e-02 -3.718063982521e-02 3.568588227123e-02 3.403706482161e-02 3.224252950495e-02 -3.031123148774e-02 2.825269540412e-02 2.607696935661e-02 2.379457680580e-02 -2.141646657547e-02 1.895396120673e-02 1.641870390118e-02 1.382260429823e-02 -1.117778333544e-02 8.496517443904e-03 5.791182332473e-03 3.074196614823e-03 -3.579655333173e-04 -2.345174968402e-03 -5.023013574793e-03 -7.663518084389e-03 --1.025488881198e-02 -1.278561067257e-02 -1.524450371981e-02 -1.762077191955e-02 --1.990404994807e-02 -2.208444781460e-02 -2.415259311825e-02 -2.609967076105e-02 --2.791745995112e-02 -2.959836834282e-02 -3.113546317436e-02 -3.252249927752e-02 --3.375394384859e-02 -3.482499788491e-02 -3.573161420664e-02 -3.647051199911e-02 --3.703918782712e-02 -3.743592308850e-02 -3.765978789044e-02 -3.771064134824e-02 --3.758912832216e-02 -3.729667262398e-02 -3.683546674066e-02 -3.620845813781e-02 --3.541933222075e-02 -3.447249204577e-02 -3.337303488818e-02 -3.212672578743e-02 --3.073996820272e-02 -2.921977192474e-02 -2.757371840097e-02 -2.580992364281e-02 --2.393699889300e-02 -2.196400924095e-02 -1.990043038209e-02 -1.775610372464e-02 --1.554119005402e-02 -1.326612197031e-02 -1.094155531897e-02 -8.578319838528e-03 --6.187369251313e-03 -3.779731025096e-03 -1.366456033675e-03 1.041431655932e-03 -3.432984643661e-03 5.797381480523e-03 8.123975156804e-03 1.040234057904e-02 -1.262232082597e-02 1.477407198010e-02 1.684810633883e-02 1.883533381715e-02 -2.072710136309e-02 2.251523021665e-02 2.419205085349e-02 2.575043546574e-02 -2.718382784412e-02 2.848627053771e-02 2.965242918072e-02 3.067761388866e-02 -3.155779764011e-02 3.228963157415e-02 3.287045714778e-02 3.329831511195e-02 -3.357195127965e-02 3.369081907362e-02 3.365507885629e-02 3.346559405883e-02 -3.312392414056e-02 3.263231442430e-02 3.199368286693e-02 3.121160383831e-02 -3.029028899450e-02 2.923456534451e-02 2.804985062158e-02 2.674212608192e-02 -2.531790686509e-02 2.378421006026e-02 2.214852063285e-02 2.041875537461e-02 -1.860322504877e-02 1.671059490926e-02 1.474984377951e-02 1.273022188220e-02 -1.066120761620e-02 8.552463480746e-03 6.413791350159e-03 4.255087304277e-03 -2.086296221165e-03 -8.263366125141e-05 -2.241796008618e-03 -4.381371274271e-03 --6.491671002218e-03 -8.563181350586e-03 -1.058660564148e-02 -1.255290574840e-02 --1.445334213826e-02 -1.627951239218e-02 -1.802338803634e-02 -1.967734952298e-02 --2.123421921034e-02 -2.268729220007e-02 -2.403036490096e-02 -2.525776119861e-02 --2.636435612188e-02 -2.734559690898e-02 -2.819752138788e-02 -2.891677359852e-02 --2.950061659689e-02 -2.994694239413e-02 -3.025427899694e-02 -3.042179452880e-02 --3.044929842495e-02 -3.033723970715e-02 -3.008670235770e-02 -2.969939782500e-02 --2.917765470601e-02 -2.852440566355e-02 -2.774317164852e-02 -2.683804350933e-02 --2.581366108219e-02 -2.467518986695e-02 -2.342829540380e-02 -2.207911547618e-02 --2.063423027435e-02 -1.910063066329e-02 -1.748568470606e-02 -1.579710260156e-02 --1.404290020202e-02 -1.223136128139e-02 -1.037099873071e-02 -8.470514861073e-03 --6.538760997688e-03 -4.584696551532e-03 -2.617347756428e-03 -6.457662603618e-04 -1.321012240231e-03 3.274009135404e-03 5.204343619764e-03 7.103272810172e-03 -8.962231082993e-03 1.077286845501e-02 1.252708783712e-02 1.421708099563e-02 -1.583536306260e-02 1.737480544355e-02 1.882866697908e-02 2.019062322502e-02 -2.145479372504e-02 2.261576715911e-02 2.366862426125e-02 2.460895841062e-02 -2.543289381082e-02 2.613710118357e-02 2.671881091458e-02 2.717582360104e-02 -2.750651796229e-02 2.770985608732e-02 2.778538600493e-02 2.773324157453e-02 -2.755413970786e-02 2.724937494400e-02 2.682081141175e-02 2.627087222561e-02 -2.560252637270e-02 2.481927315949e-02 2.392512429765e-02 2.292458371938e-02 -2.182262522185e-02 2.062466805058e-02 1.933655054006e-02 1.796450193866e-02 -1.651511255249e-02 1.499530235009e-02 1.341228817647e-02 1.177354973056e-02 -1.008679446542e-02 8.359921574931e-03 6.600985233967e-03 4.818157262340e-03 -3.019689384381e-03 1.213875257557e-03 -5.909875561334e-04 -2.386635502586e-03 --4.164876659528e-03 -5.917627901590e-03 -7.636951438803e-03 -9.315090564226e-03 --1.094450445058e-02 -1.251790184067e-02 -1.402827348179e-02 -1.546892316090e-02 --1.683349720363e-02 -1.811601230827e-02 -1.931088159343e-02 -2.041293874683e-02 --2.141746017166e-02 -2.232018503642e-02 -2.311733314391e-02 -2.380562054548e-02 --2.438227283685e-02 -2.484503608294e-02 -2.519218532972e-02 -2.542253067262e-02 --2.553542086195e-02 -2.553074443721e-02 -2.540892839351e-02 -2.517093439426e-02 --2.481825255589e-02 -2.435289284079e-02 -2.377737410594e-02 -2.309471086481e-02 --2.230839783060e-02 -2.142239231867e-02 -2.044109459549e-02 -1.936932627061e-02 --1.821230683654e-02 -1.697562846985e-02 -1.566522921396e-02 -1.428736467144e-02 --1.284857833972e-02 -1.135567073013e-02 -9.815667414928e-03 -8.235786151830e-03 --6.623403238827e-03 -4.986019255467e-03 -3.331224348814e-03 -1.666663223992e-03 --5.234804717149e-15 1.661116908350e-03 3.309089722328e-03 4.936405886016e-03 -6.535672151334e-03 - Type L N - 0 2 12 -0.000000000000e+00 3.569814883576e-04 1.426287458324e-03 3.203009736561e-03 -5.678992372019e-03 8.842868026578e-03 1.268010869057e-02 1.717309049234e-02 -2.230117230782e-02 2.804078781293e-02 3.436555056104e-02 4.124637160836e-02 -4.865158915351e-02 5.654710960314e-02 6.489655942367e-02 7.366144709087e-02 -8.280133440316e-02 9.227401638268e-02 1.020357089495e-01 1.120412435198e-01 -1.222442676477e-01 1.325974508038e-01 1.430526943619e-01 1.535613448439e-01 -1.640744094647e-01 1.745427730018e-01 1.849174150175e-01 1.951496264531e-01 -2.051912246258e-01 2.149947656614e-01 2.245137534122e-01 2.337028439257e-01 -2.425180445512e-01 2.509169067969e-01 2.588587120793e-01 2.663046495419e-01 -2.732179851554e-01 2.795642213536e-01 2.853112465043e-01 2.904294735591e-01 -2.948919672794e-01 2.986745594874e-01 3.017559518458e-01 3.041178057292e-01 -3.057448188081e-01 3.066247880289e-01 3.067486587350e-01 3.061105597370e-01 -3.047078242075e-01 3.025409963362e-01 2.996138237492e-01 2.959332357614e-01 -2.915093075916e-01 2.863552107395e-01 2.804871497789e-01 2.739242858907e-01 -2.666886475116e-01 2.588050285377e-01 2.503008745740e-01 2.412061577761e-01 -2.315532408807e-01 2.213767310680e-01 2.107133243446e-01 1.996016411774e-01 -1.880820541447e-01 1.761965084072e-01 1.639883358306e-01 1.515020636184e-01 -1.387832183350e-01 1.258781262193e-01 1.128337107019e-01 9.969728804722e-02 -8.651636205180e-02 7.333841872575e-02 6.021072188578e-02 4.718011057796e-02 -3.429279923829e-02 2.159418148252e-02 9.128638397347e-03 -3.060647819018e-03 --1.493187404649e-02 -2.644478947395e-02 -3.756086111718e-02 -4.824343090815e-02 --5.845786368133e-02 -6.817168542733e-02 -7.735471123116e-02 -8.597916236248e-02 --9.401977203692e-02 -1.014538794221e-01 -1.082615115172e-01 -1.144254525935e-01 --1.199313009396e-01 -1.247675127185e-01 -1.289254327991e-01 -1.323993124896e-01 --1.351863141592e-01 -1.372865027934e-01 -1.387028245925e-01 -1.394410727781e-01 --1.395098408326e-01 -1.389204634537e-01 -1.376869455620e-01 -1.358258797502e-01 --1.333563526199e-01 -1.302998404937e-01 -1.266800950448e-01 -1.225230194247e-01 --1.178565355123e-01 -1.127104429482e-01 -1.071162706481e-01 -1.011071215248e-01 --9.471751117380e-02 -8.798320130120e-02 -8.094102869535e-02 -7.362873055691e-02 --6.608476701707e-02 -5.834814168099e-02 -5.045822103842e-02 -4.245455358404e-02 --3.437668948673e-02 -2.626400163957e-02 -1.815550891133e-02 -1.008970240501e-02 --2.104375510424e-03 5.763541484598e-03 1.347814148570e-02 2.100469467665e-02 -2.830979592005e-02 3.536150483243e-02 4.212947793040e-02 4.858509228547e-02 -5.470156016846e-02 6.045403421016e-02 6.581970265261e-02 7.077787431437e-02 -7.531005294468e-02 7.940000069296e-02 8.303379047373e-02 8.619984706080e-02 -8.888897679901e-02 9.109438587652e-02 9.281168715524e-02 9.403889561133e-02 -9.477641249152e-02 9.502699834383e-02 9.479573513343e-02 9.408997770467e-02 -9.291929489961e-02 9.129540069051e-02 8.923207572929e-02 8.674507975962e-02 -8.385205537857e-02 8.057242367249e-02 7.692727228735e-02 7.293923652620e-02 -6.863237409600e-02 6.403203415221e-02 5.916472131247e-02 5.405795533072e-02 -4.874012713881e-02 4.324035197554e-02 3.758832033245e-02 3.181414745065e-02 -2.594822210564e-02 2.002105541476e-02 1.406313039743e-02 8.104753009171e-03 -2.175905358568e-03 -3.693898199159e-03 -9.475751417086e-03 -1.514149230696e-02 --2.066383445693e-02 -2.601649291622e-02 -3.117430407723e-02 -3.611333901816e-02 --4.081100980535e-02 -4.524616829199e-02 -4.939919698957e-02 -5.325209163042e-02 --5.678853508241e-02 -5.999396232195e-02 -6.285561621669e-02 -6.536259391652e-02 --6.750588369834e-02 -6.927839215825e-02 -7.067496169263e-02 -7.169237825779e-02 --7.232936944540e-02 -7.258659295852e-02 -7.246661561924e-02 -7.197388308498e-02 --7.111468049454e-02 -6.989708430856e-02 -6.833090565013e-02 -6.642762549139e-02 --6.420032206953e-02 -6.166359095147e-02 -5.883345819969e-02 -5.572728712279e-02 --5.236367912251e-02 -4.876236917484e-02 -4.494411650539e-02 -4.093059103929e-02 --3.674425622285e-02 -3.240824882765e-02 -2.794625635919e-02 -2.338239269891e-02 --1.874107261368e-02 -1.404688576745e-02 -9.324470868169e-03 -4.598390577902e-03 -1.069921939384e-04 4.767636005687e-03 9.359940012229e-03 1.386085992999e-02 -1.824802028030e-02 2.249982237581e-02 2.659554753943e-02 3.051545507277e-02 -3.424087452049e-02 3.775429180865e-02 4.103942886873e-02 4.408131639428e-02 -4.686635941380e-02 4.938239540193e-02 5.161874469013e-02 5.356625297829e-02 -5.521732578984e-02 5.656595475443e-02 5.760773564410e-02 5.833987813073e-02 -5.876120727474e-02 5.887215679612e-02 5.867475422040e-02 5.817259803202e-02 -5.737082700748e-02 5.627608193834e-02 5.489645999179e-02 5.324146199149e-02 -5.132193293559e-02 4.914999610088e-02 4.673898111185e-02 4.410334638202e-02 -4.125859636009e-02 3.822119403739e-02 3.500846919386e-02 3.163852287837e-02 -2.813012863500e-02 2.450263100010e-02 2.077584180546e-02 1.696993483036e-02 -1.310533935054e-02 9.202633133727e-03 5.282435431064e-03 1.365300510094e-03 --2.528387731342e-03 -6.378519539712e-03 -1.016536095001e-02 -1.386965279475e-02 --1.747270658959e-02 -2.095649682631e-02 -2.430374922523e-02 -2.749802452251e-02 --3.052379739318e-02 -3.336653013806e-02 -3.601274079175e-02 -3.845006533949e-02 --4.066731376263e-02 -4.265451966574e-02 -4.440298327273e-02 -4.590530761433e-02 --4.715542776550e-02 -4.814863302738e-02 -4.888158198534e-02 -4.935231041140e-02 --4.956023201614e-02 -4.950613209185e-02 -4.919215412463e-02 -4.862177948871e-02 --4.779980037128e-02 -4.673228610935e-02 -4.542654315340e-02 -4.389106890350e-02 --4.213549969391e-02 -4.017055323000e-02 -3.800796580869e-02 -3.566042467757e-02 --3.314149591151e-02 -3.046554820558e-02 -2.764767300241e-02 -2.470360138780e-02 --2.164961820300e-02 -1.850247383340e-02 -1.527929414273e-02 -1.199748902868e-02 --8.674660080023e-03 -5.328507817416e-03 -1.976738999011e-03 1.363025530750e-03 -4.673341976597e-03 7.937033247443e-03 1.113727667658e-02 1.425768936526e-02 -1.728241072262e-02 2.019618179192e-02 2.298442097176e-02 2.563329576201e-02 -2.812979018656e-02 3.046176756954e-02 3.261802836707e-02 3.458836278430e-02 -3.636359793551e-02 3.793563933481e-02 3.929750653531e-02 4.044336276610e-02 -4.136853844790e-02 4.206954850082e-02 4.254410339008e-02 4.279111388828e-02 -4.281068956538e-02 4.260413104987e-02 4.217391613683e-02 4.152367984956e-02 -4.065818859268e-02 3.958330856400e-02 3.830596862140e-02 3.683411782884e-02 -3.517667793149e-02 3.334349103529e-02 3.134526278934e-02 2.919350139147e-02 -2.690045275685e-02 2.447903220810e-02 2.194275306091e-02 1.930565249378e-02 -1.658221510205e-02 1.378729454669e-02 1.093603371569e-02 8.043783821492e-03 -5.126022861369e-03 2.198273868379e-03 -7.239766203473e-04 -3.625359454779e-03 --6.490702704869e-03 -9.305110025117e-03 -1.205403715055e-02 -1.472336613561e-02 --1.729947696126e-02 -1.976931615114e-02 -2.212046205516e-02 -2.434118647773e-02 --2.642051234892e-02 -2.834826715853e-02 -3.011513189675e-02 -3.171268526991e-02 --3.313344298513e-02 -3.437089192496e-02 -3.541951906013e-02 -3.627483497697e-02 --3.693339192456e-02 -3.739279631585e-02 -3.765171564597e-02 -3.770987982040e-02 --3.756807691478e-02 -3.722814341700e-02 -3.669294903069e-02 -3.596637614723e-02 --3.505329412068e-02 -3.395952850627e-02 -3.269182544887e-02 -3.125781143181e-02 --2.966594862004e-02 -2.792548605296e-02 -2.604640696311e-02 -2.403937251536e-02 --2.191566227883e-02 -1.968711175892e-02 -1.736604733100e-02 -1.496521892885e-02 --1.249773085105e-02 -9.976971056863e-03 -7.416539328725e-03 -4.830174683048e-03 --2.231682412867e-03 3.651388539954e-04 2.946569699445e-03 5.499041684479e-03 -8.009207971345e-03 1.046401243426e-02 1.285075690406e-02 1.515716620353e-02 -1.737145064347e-02 1.948236566420e-02 2.147926832383e-02 2.335217035218e-02 -2.509178750901e-02 2.668958500519e-02 2.813781876764e-02 2.942957235138e-02 -3.055878932574e-02 3.152030098634e-02 3.230984926954e-02 3.292410477172e-02 -3.336067980191e-02 3.361813642247e-02 3.369598945914e-02 3.359470448797e-02 -3.331569083327e-02 3.286128963623e-02 3.223475707978e-02 3.144024288008e-02 -3.048276417933e-02 2.936817499809e-02 2.810313142785e-02 2.669505276609e-02 -2.515207881646e-02 2.348302359571e-02 2.169732570689e-02 1.980499565455e-02 -1.781656039251e-02 1.574300540791e-02 1.359571465714e-02 1.138640867844e-02 -9.127081215007e-03 6.829934687878e-03 4.507314863059e-03 2.171645059743e-03 --1.646397525505e-04 -2.489158621023e-03 -4.789649696704e-03 -7.054034402038e-03 --9.270480345647e-03 -1.142746265903e-02 -1.351382343959e-02 -1.551882899580e-02 --1.743222460296e-02 -1.924428649260e-02 -2.094587081405e-02 -2.252845932386e-02 --2.398420157694e-02 -2.530595341261e-02 -2.648731154916e-02 -2.752264412166e-02 --2.840711701980e-02 -2.913671590534e-02 -2.970826381169e-02 -3.011943425206e-02 --3.036875978628e-02 -3.045563602065e-02 -3.038032103927e-02 -3.014393028902e-02 --2.974842696479e-02 -2.919660796421e-02 -2.849208550498e-02 -2.763926451953e-02 --2.664331596408e-02 -2.551014619974e-02 -2.424636262338e-02 -2.285923574506e-02 --2.135665792659e-02 -1.974709901245e-02 -1.803955909993e-02 -1.624351870902e-02 --1.436888662551e-02 -1.242594570173e-02 -1.042529690901e-02 -8.377801943820e-03 --6.294524696237e-03 -4.186671893672e-03 -2.065533236328e-03 5.757865807762e-05 -2.171388182888e-03 4.264716228960e-03 6.326538917132e-03 8.346045270086e-03 -1.031269352377e-02 1.221626578694e-02 1.404692076716e-02 1.579524429305e-02 -1.745229737510e-02 1.900966156133e-02 2.045948135957e-02 2.179450351406e-02 -2.300811294185e-02 2.409436515260e-02 2.504801499478e-02 2.586454159100e-02 -2.654016934616e-02 2.707188493284e-02 2.745745018038e-02 2.769541081551e-02 -2.778510102486e-02 2.772664383151e-02 2.752094730009e-02 2.716969660659e-02 -2.667534203104e-02 2.604108295212e-02 2.527084794387e-02 2.436927109463e-02 -2.334166468786e-02 2.219398840316e-02 2.093281521350e-02 1.956529417156e-02 -1.809911029351e-02 1.654244176341e-02 1.490391469431e-02 1.319255569457e-02 -1.141774249808e-02 9.589152926751e-03 7.716712461102e-03 5.810540701272e-03 -3.880897005497e-03 1.938125596396e-03 -7.399572885525e-06 -1.945329900438e-03 --3.865396874365e-03 -5.757466180610e-03 -7.611590896222e-03 -9.418063490354e-03 --1.116746636260e-02 -1.285072065697e-02 -1.445913309993e-02 -1.598444062221e-02 --1.741885253668e-02 -1.875509005845e-02 -1.998642296793e-02 -2.110670323363e-02 --2.211039542813e-02 -2.299260378803e-02 -2.374909578719e-02 -2.437632211141e-02 --2.487143294193e-02 -2.523229047513e-02 -2.545747762597e-02 -2.554630288297e-02 --2.549880130290e-02 -2.531573165410e-02 -2.499856973722e-02 -2.454949793267e-02 --2.397139104361e-02 -2.326779852261e-02 -2.244292318909e-02 -2.150159656267e-02 --2.044925095499e-02 -1.929188847931e-02 -1.803604715275e-02 -1.668876428104e-02 --1.525753732897e-02 -1.375028249270e-02 -1.217529120126e-02 -1.054118478466e-02 --8.856867555159e-03 -7.131478555480e-03 -5.374342234077e-03 -3.594918312353e-03 --1.802751111959e-03 -7.418612344024e-06 1.781518490851e-03 3.554567456869e-03 -5.302353633065e-03 7.015669786734e-03 8.685524377140e-03 1.030318851581e-02 -1.186024137101e-02 1.334861378130e-02 1.476062985342e-02 1.608904633122e-02 -1.732708953465e-02 1.846848968165e-02 1.950751242013e-02 2.043898741241e-02 -2.125833383099e-02 2.196158264097e-02 2.254539556209e-02 2.300708062121e-02 -2.334460422435e-02 2.355659969619e-02 2.364237225367e-02 2.360190039936e-02 -2.343583373928e-02 2.314548724879e-02 2.273283202876e-02 2.220048261284e-02 -2.155168090449e-02 2.079027684038e-02 1.992070589320e-02 1.894796354391e-02 -1.787757686857e-02 1.671557340007e-02 1.546844743863e-02 1.414312399816e-02 -1.274692058738e-02 1.128750703527e-02 9.772863580432e-03 8.211237451988e-03 -6.611098177252e-03 4.981091857210e-03 3.329994655553e-03 1.666665750399e-03 --1.322155203283e-13 -1.661119426622e-03 -3.307868200098e-03 -4.931527517535e-03 --6.523530075100e-03 diff --git a/tests/09_DeePKS/100_NO_KP_deepks_UT/model.ptg b/tests/09_DeePKS/100_NO_KP_deepks_UT/model.ptg deleted file mode 100644 index fe2e5dd45c..0000000000 Binary files a/tests/09_DeePKS/100_NO_KP_deepks_UT/model.ptg and /dev/null differ diff --git a/tests/09_DeePKS/100_NO_KP_deepks_UT/o_delta_ref.dat b/tests/09_DeePKS/100_NO_KP_deepks_UT/o_delta_ref.dat deleted file mode 100644 index 7f337802ae..0000000000 --- a/tests/09_DeePKS/100_NO_KP_deepks_UT/o_delta_ref.dat +++ /dev/null @@ -1,9 +0,0 @@ -0.001222319536 -0.001222319536 -0.001222319536 -0.001222323867 -0.001222323867 -0.001222323867 -0.001222323867 -0.001222323867 -0.001222323867 diff --git a/tests/09_DeePKS/100_NO_KP_deepks_UT/orbpre_ref.dat b/tests/09_DeePKS/100_NO_KP_deepks_UT/orbpre_ref.dat deleted file mode 100644 index 0b2883e4ac..0000000000 --- a/tests/09_DeePKS/100_NO_KP_deepks_UT/orbpre_ref.dat +++ /dev/null @@ -1,27 +0,0 @@ -0.08688531996 0.08799162606 0.04882558148 0.01600800619 0.00360613522 0.0004414198891 2.951507472e-06 7.555803515e-05 0.0001298162467 0.0001171569005 7.625112641e-05 4.284335262e-05 1.976194274e-05 0.03908018116 0.07933922593 0.08157985193 0.04656513285 0.04440271924 0.0595658681 0.02120995735 0.02292505605 0.04879923019 0.01184647434 0.01218070772 0.03071772047 0.01003258231 0.01053525245 0.01912851911 0.005269887609 0.005615523712 0.01086151305 0.003531585048 0.00359250324 0.006571292269 0.00149069998 0.001569847318 0.003550427507 0.001100582954 0.00114545163 0.002061930448 0.0004304280142 0.0004530025107 0.001001315471 0.0003174953896 0.0003185233981 0.0005273392058 7.099255444e-05 7.531305033e-05 0.0001996033265 6.3290341e-05 6.495872415e-05 9.541837847e-05 3.0456698e-19 2.194244344e-19 8.412118165e-20 0.00510261001 0.01774950961 -5.227910255e-20 -1.157687343e-19 3.950535534e-20 0.001315991265 0.004588175155 -1.242459717e-23 -1.435749579e-22 -2.251889174e-22 1.102147214e-05 6.17172507e-05 3.584012137e-21 -1.11444346e-21 1.674360345e-21 7.867472988e-05 0.0002738805867 -3.510741451e-24 -1.942710205e-23 -1.64218262e-23 2.05880971e-08 1.217482649e-06 -5.776484904e-24 -2.738801632e-24 -1.913318339e-23 1.71913238e-07 8.416128576e-07 -8.476118966e-23 -3.978071804e-22 3.438335425e-22 3.809490994e-06 1.338599229e-05 -4.413137411e-23 -8.356131624e-23 1.219791131e-22 2.009566965e-06 7.400104804e-06 -1.718479207e-23 -2.442715137e-23 -5.652414101e-24 2.274754404e-07 8.742282563e-07 1.079219579e-23 -5.221123844e-23 -1.506904094e-24 4.300289312e-07 1.512197105e-06 9.445432412e-24 -1.391889414e-23 -1.249320207e-22 7.467698141e-07 2.610095281e-06 1.641073568e-24 2.24553005e-23 -8.990373082e-24 4.797065976e-07 1.729113146e-06 2.910188829e-24 5.624968208e-25 -1.76678677e-23 3.257447575e-07 1.132760837e-06 -0.08156307386 0.0655690876 0.01262816673 0.0003036237024 0.0005118297798 0.001219580843 0.0003769115182 2.81141933e-05 9.75437328e-06 4.664444765e-05 2.009155417e-05 7.407806314e-06 3.172533767e-06 0.02731203769 0.01565559429 0.06205397689 3.303237023e-05 0.001733287777 0.02447040133 4.03663247e-05 0.0001380074241 0.005207524499 8.778970202e-05 0.0001755947968 0.00115920224 1.232689604e-05 2.510940516e-05 0.001360540596 4.189208514e-06 4.768857924e-06 0.0001002257348 1.266194299e-06 2.040907896e-05 0.0001856616366 2.710518425e-06 5.149051867e-06 3.425147213e-05 7.576156632e-07 7.962252384e-06 8.607574056e-05 2.549291358e-07 2.353322522e-06 1.266794927e-05 8.198007502e-07 1.420850154e-06 1.098933482e-05 7.360173305e-07 2.369053004e-06 1.240127099e-05 4.192458088e-07 2.434019784e-06 1.163279725e-05 2.991947692e-19 4.405188021e-05 0.05080630389 0.02905454797 0.04782803761 9.97142288e-19 0.000114183542 0.001916108681 0.008411633143 0.02041905475 -5.039653159e-19 1.216499807e-06 6.89754653e-07 1.949873121e-05 0.00777118632 8.693814651e-21 4.361867335e-08 0.0002419729442 0.0005413410519 0.000560566732 1.116665801e-21 3.097855143e-07 2.685470398e-06 1.118999574e-05 0.001537235694 -4.272980834e-21 1.221901743e-06 1.014548685e-05 1.802185569e-05 5.330823996e-05 -6.775423982e-21 1.812021659e-07 1.614039117e-05 5.715917388e-05 0.0001402636381 -3.257773438e-21 9.856726609e-08 9.639949913e-06 3.30707981e-05 7.995560359e-05 -7.507433108e-22 1.609528919e-08 2.518106326e-07 9.945611806e-06 5.133668494e-05 -1.001197896e-22 4.056105739e-08 9.47830459e-07 6.479413053e-06 1.038479308e-05 2.85548319e-22 4.794554754e-10 1.045306708e-07 2.565938782e-06 1.399243296e-05 9.604860028e-22 4.440944726e-08 1.419388324e-06 7.620377959e-06 1.174582565e-05 -1.038831746e-22 3.2167106e-08 8.429784175e-07 2.907155959e-06 8.607907345e-06 -0.08140542038 0.0666897999 0.01417194426 0.0003973218496 0.0003107768909 0.001056578209 0.0004729039774 4.468714468e-05 7.628120781e-06 3.232286207e-05 2.245553198e-05 1.006591728e-05 3.328416219e-06 0.01651758077 0.02749667577 0.06419596665 7.178412406e-05 0.002315853591 0.02544526094 2.109702594e-05 8.707098638e-05 0.00622176063 0.0001060353702 0.0002137364639 0.0009166217597 4.264007555e-06 1.661726282e-05 0.001585992702 9.263964269e-07 5.470112635e-06 3.156253308e-05 2.968459078e-06 2.577070521e-05 0.0002003071348 4.817283622e-06 1.213308947e-05 5.006964074e-05 3.116040692e-07 7.141398124e-06 7.733944584e-05 2.916029608e-07 2.197318105e-06 1.244767174e-05 3.406012503e-07 9.563954441e-07 1.153847957e-05 6.20211425e-07 3.125890096e-06 1.486061902e-05 3.506659305e-07 1.893612526e-06 1.060239614e-05 4.933246868e-19 3.154183306e-06 0.02919790625 0.04612983668 0.05259944714 -7.841855742e-20 1.941402378e-06 0.002544227573 0.009996486075 0.02080052491 5.419803662e-21 4.303134088e-09 3.245821702e-05 0.0001214554809 0.008441473435 -2.60127309e-21 7.913732734e-11 0.000244528235 0.0005341670956 0.000850319238 -2.925991964e-21 1.24545436e-08 4.647614724e-06 1.943409192e-05 0.001346126612 -8.868557821e-22 1.694767817e-09 6.302237123e-06 1.967456339e-05 0.0001889657743 -2.307565941e-21 7.159545547e-10 2.377592603e-05 6.182501648e-05 8.583258375e-05 -1.885592006e-21 2.80783526e-10 6.117810073e-06 2.963383328e-05 0.0001334239481 -1.180655182e-13 3.639495805e-22 2.195757436e-08 8.788265172e-06 2.523145395e-05 -6.69647266e-23 2.915127231e-10 1.448700058e-06 9.188130337e-06 1.314355641e-05 7.573233853e-23 2.504431154e-10 1.668665067e-06 2.56444576e-06 1.453065421e-05 -1.207199964e-11 -1.346772435e-22 1.050882236e-06 7.426129507e-06 1.238245357e-05 -1.683800312e-22 7.174282935e-11 7.619349573e-07 1.391870305e-06 8.580455887e-06 -0.08688531996 0.08799162606 0.04882558148 0.01600800619 0.00360613522 0.0004414198891 2.951507472e-06 7.555803515e-05 0.0001298162467 0.0001171569005 7.625112641e-05 4.284335262e-05 1.976194274e-05 0.03908018116 0.07933922593 0.08157985193 0.04656513285 0.04440271924 0.0595658681 0.02120995735 0.02292505605 0.04879923019 0.01184647434 0.01218070772 0.03071772047 0.01003258231 0.01053525245 0.01912851911 0.005269887609 0.005615523712 0.01086151305 0.003531585048 0.00359250324 0.006571292269 0.00149069998 0.001569847318 0.003550427507 0.001100582954 0.00114545163 0.002061930448 0.0004304280142 0.0004530025107 0.001001315471 0.0003174953896 0.0003185233981 0.0005273392058 7.099255444e-05 7.531305033e-05 0.0001996033265 6.3290341e-05 6.495872415e-05 9.541837847e-05 3.0456698e-19 2.194244344e-19 8.412118165e-20 0.00510261001 0.01774950961 -5.227910255e-20 -1.157687343e-19 3.950535534e-20 0.001315991265 0.004588175155 -1.242459717e-23 -1.435749579e-22 -2.251889174e-22 1.102147214e-05 6.17172507e-05 3.584012137e-21 -1.11444346e-21 1.674360345e-21 7.867472988e-05 0.0002738805867 -3.510741451e-24 -1.942710205e-23 -1.64218262e-23 2.05880971e-08 1.217482649e-06 -5.776484904e-24 -2.738801632e-24 -1.913318339e-23 1.71913238e-07 8.416128576e-07 -8.476118966e-23 -3.978071804e-22 3.438335425e-22 3.809490994e-06 1.338599229e-05 -4.413137411e-23 -8.356131624e-23 1.219791131e-22 2.009566965e-06 7.400104804e-06 -1.718479207e-23 -2.442715137e-23 -5.652414101e-24 2.274754404e-07 8.742282563e-07 1.079219579e-23 -5.221123844e-23 -1.506904094e-24 4.300289312e-07 1.512197105e-06 9.445432412e-24 -1.391889414e-23 -1.249320207e-22 7.467698141e-07 2.610095281e-06 1.641073568e-24 2.24553005e-23 -8.990373082e-24 4.797065976e-07 1.729113146e-06 2.910188829e-24 5.624968208e-25 -1.76678677e-23 3.257447575e-07 1.132760837e-06 -0.08156307386 0.0655690876 0.01262816673 0.0003036237024 0.0005118297798 0.001219580843 0.0003769115182 2.81141933e-05 9.75437328e-06 4.664444765e-05 2.009155417e-05 7.407806314e-06 3.172533767e-06 0.02731203769 0.01565559429 0.06205397689 3.303237023e-05 0.001733287777 0.02447040133 4.03663247e-05 0.0001380074241 0.005207524499 8.778970202e-05 0.0001755947968 0.00115920224 1.232689604e-05 2.510940516e-05 0.001360540596 4.189208514e-06 4.768857924e-06 0.0001002257348 1.266194299e-06 2.040907896e-05 0.0001856616366 2.710518425e-06 5.149051867e-06 3.425147213e-05 7.576156632e-07 7.962252384e-06 8.607574056e-05 2.549291358e-07 2.353322522e-06 1.266794927e-05 8.198007502e-07 1.420850154e-06 1.098933482e-05 7.360173305e-07 2.369053004e-06 1.240127099e-05 4.192458088e-07 2.434019784e-06 1.163279725e-05 2.991947692e-19 4.405188021e-05 0.05080630389 0.02905454797 0.04782803761 9.97142288e-19 0.000114183542 0.001916108681 0.008411633143 0.02041905475 -5.039653159e-19 1.216499807e-06 6.89754653e-07 1.949873121e-05 0.00777118632 8.693814651e-21 4.361867335e-08 0.0002419729442 0.0005413410519 0.000560566732 1.116665801e-21 3.097855143e-07 2.685470398e-06 1.118999574e-05 0.001537235694 -4.272980834e-21 1.221901743e-06 1.014548685e-05 1.802185569e-05 5.330823996e-05 -6.775423982e-21 1.812021659e-07 1.614039117e-05 5.715917388e-05 0.0001402636381 -3.257773438e-21 9.856726609e-08 9.639949913e-06 3.30707981e-05 7.995560359e-05 -7.507433108e-22 1.609528919e-08 2.518106326e-07 9.945611806e-06 5.133668494e-05 -1.001197896e-22 4.056105739e-08 9.47830459e-07 6.479413053e-06 1.038479308e-05 2.85548319e-22 4.794554754e-10 1.045306708e-07 2.565938782e-06 1.399243296e-05 9.604860028e-22 4.440944726e-08 1.419388324e-06 7.620377959e-06 1.174582565e-05 -1.038831746e-22 3.2167106e-08 8.429784175e-07 2.907155959e-06 8.607907345e-06 -0.08140542038 0.0666897999 0.01417194426 0.0003973218496 0.0003107768909 0.001056578209 0.0004729039774 4.468714468e-05 7.628120781e-06 3.232286207e-05 2.245553198e-05 1.006591728e-05 3.328416219e-06 0.01651758077 0.02749667577 0.06419596665 7.178412406e-05 0.002315853591 0.02544526094 2.109702594e-05 8.707098638e-05 0.00622176063 0.0001060353702 0.0002137364639 0.0009166217597 4.264007555e-06 1.661726282e-05 0.001585992702 9.263964269e-07 5.470112635e-06 3.156253308e-05 2.968459078e-06 2.577070521e-05 0.0002003071348 4.817283622e-06 1.213308947e-05 5.006964074e-05 3.116040692e-07 7.141398124e-06 7.733944584e-05 2.916029608e-07 2.197318105e-06 1.244767174e-05 3.406012503e-07 9.563954441e-07 1.153847957e-05 6.20211425e-07 3.125890096e-06 1.486061902e-05 3.506659305e-07 1.893612526e-06 1.060239614e-05 4.933246868e-19 3.154183306e-06 0.02919790625 0.04612983668 0.05259944714 -7.841855742e-20 1.941402378e-06 0.002544227573 0.009996486075 0.02080052491 5.419803662e-21 4.303134088e-09 3.245821702e-05 0.0001214554809 0.008441473435 -2.60127309e-21 7.913732734e-11 0.000244528235 0.0005341670956 0.000850319238 -2.925991964e-21 1.24545436e-08 4.647614724e-06 1.943409192e-05 0.001346126612 -8.868557821e-22 1.694767817e-09 6.302237123e-06 1.967456339e-05 0.0001889657743 -2.307565941e-21 7.159545547e-10 2.377592603e-05 6.182501648e-05 8.583258375e-05 -1.885592006e-21 2.80783526e-10 6.117810073e-06 2.963383328e-05 0.0001334239481 -1.180655182e-13 3.639495805e-22 2.195757436e-08 8.788265172e-06 2.523145395e-05 -6.69647266e-23 2.915127231e-10 1.448700058e-06 9.188130337e-06 1.314355641e-05 7.573233853e-23 2.504431154e-10 1.668665067e-06 2.56444576e-06 1.453065421e-05 -1.207199964e-11 -1.346772435e-22 1.050882236e-06 7.426129507e-06 1.238245357e-05 -1.683800312e-22 7.174282935e-11 7.619349573e-07 1.391870305e-06 8.580455887e-06 -0.08688531996 0.08799162606 0.04882558148 0.01600800619 0.00360613522 0.0004414198891 2.951507472e-06 7.555803515e-05 0.0001298162467 0.0001171569005 7.625112641e-05 4.284335262e-05 1.976194274e-05 0.03908018116 0.07933922593 0.08157985193 0.04656513285 0.04440271924 0.0595658681 0.02120995735 0.02292505605 0.04879923019 0.01184647434 0.01218070772 0.03071772047 0.01003258231 0.01053525245 0.01912851911 0.005269887609 0.005615523712 0.01086151305 0.003531585048 0.00359250324 0.006571292269 0.00149069998 0.001569847318 0.003550427507 0.001100582954 0.00114545163 0.002061930448 0.0004304280142 0.0004530025107 0.001001315471 0.0003174953896 0.0003185233981 0.0005273392058 7.099255444e-05 7.531305033e-05 0.0001996033265 6.3290341e-05 6.495872415e-05 9.541837847e-05 3.0456698e-19 2.194244344e-19 8.412118165e-20 0.00510261001 0.01774950961 -5.227910255e-20 -1.157687343e-19 3.950535534e-20 0.001315991265 0.004588175155 -1.242459717e-23 -1.435749579e-22 -2.251889174e-22 1.102147214e-05 6.17172507e-05 3.584012137e-21 -1.11444346e-21 1.674360345e-21 7.867472988e-05 0.0002738805867 -3.510741451e-24 -1.942710205e-23 -1.64218262e-23 2.05880971e-08 1.217482649e-06 -5.776484904e-24 -2.738801632e-24 -1.913318339e-23 1.71913238e-07 8.416128576e-07 -8.476118966e-23 -3.978071804e-22 3.438335425e-22 3.809490994e-06 1.338599229e-05 -4.413137411e-23 -8.356131624e-23 1.219791131e-22 2.009566965e-06 7.400104804e-06 -1.718479207e-23 -2.442715137e-23 -5.652414101e-24 2.274754404e-07 8.742282563e-07 1.079219579e-23 -5.221123844e-23 -1.506904094e-24 4.300289312e-07 1.512197105e-06 9.445432412e-24 -1.391889414e-23 -1.249320207e-22 7.467698141e-07 2.610095281e-06 1.641073568e-24 2.24553005e-23 -8.990373082e-24 4.797065976e-07 1.729113146e-06 2.910188829e-24 5.624968208e-25 -1.76678677e-23 3.257447575e-07 1.132760837e-06 -0.08156307386 0.0655690876 0.01262816673 0.0003036237024 0.0005118297798 0.001219580843 0.0003769115182 2.81141933e-05 9.75437328e-06 4.664444765e-05 2.009155417e-05 7.407806314e-06 3.172533767e-06 0.02731203769 0.01565559429 0.06205397689 3.303237023e-05 0.001733287777 0.02447040133 4.03663247e-05 0.0001380074241 0.005207524499 8.778970202e-05 0.0001755947968 0.00115920224 1.232689604e-05 2.510940516e-05 0.001360540596 4.189208514e-06 4.768857924e-06 0.0001002257348 1.266194299e-06 2.040907896e-05 0.0001856616366 2.710518425e-06 5.149051867e-06 3.425147213e-05 7.576156632e-07 7.962252384e-06 8.607574056e-05 2.549291358e-07 2.353322522e-06 1.266794927e-05 8.198007502e-07 1.420850154e-06 1.098933482e-05 7.360173305e-07 2.369053004e-06 1.240127099e-05 4.192458088e-07 2.434019784e-06 1.163279725e-05 2.991947692e-19 4.405188021e-05 0.05080630389 0.02905454797 0.04782803761 9.97142288e-19 0.000114183542 0.001916108681 0.008411633143 0.02041905475 -5.039653159e-19 1.216499807e-06 6.89754653e-07 1.949873121e-05 0.00777118632 8.693814651e-21 4.361867335e-08 0.0002419729442 0.0005413410519 0.000560566732 1.116665801e-21 3.097855143e-07 2.685470398e-06 1.118999574e-05 0.001537235694 -4.272980834e-21 1.221901743e-06 1.014548685e-05 1.802185569e-05 5.330823996e-05 -6.775423982e-21 1.812021659e-07 1.614039117e-05 5.715917388e-05 0.0001402636381 -3.257773438e-21 9.856726609e-08 9.639949913e-06 3.30707981e-05 7.995560359e-05 -7.507433108e-22 1.609528919e-08 2.518106326e-07 9.945611806e-06 5.133668494e-05 -1.001197896e-22 4.056105739e-08 9.47830459e-07 6.479413053e-06 1.038479308e-05 2.85548319e-22 4.794554754e-10 1.045306708e-07 2.565938782e-06 1.399243296e-05 9.604860028e-22 4.440944726e-08 1.419388324e-06 7.620377959e-06 1.174582565e-05 -1.038831746e-22 3.2167106e-08 8.429784175e-07 2.907155959e-06 8.607907345e-06 -0.08140542038 0.0666897999 0.01417194426 0.0003973218496 0.0003107768909 0.001056578209 0.0004729039774 4.468714468e-05 7.628120781e-06 3.232286207e-05 2.245553198e-05 1.006591728e-05 3.328416219e-06 0.01651758077 0.02749667577 0.06419596665 7.178412406e-05 0.002315853591 0.02544526094 2.109702594e-05 8.707098638e-05 0.00622176063 0.0001060353702 0.0002137364639 0.0009166217597 4.264007555e-06 1.661726282e-05 0.001585992702 9.263964269e-07 5.470112635e-06 3.156253308e-05 2.968459078e-06 2.577070521e-05 0.0002003071348 4.817283622e-06 1.213308947e-05 5.006964074e-05 3.116040692e-07 7.141398124e-06 7.733944584e-05 2.916029608e-07 2.197318105e-06 1.244767174e-05 3.406012503e-07 9.563954441e-07 1.153847957e-05 6.20211425e-07 3.125890096e-06 1.486061902e-05 3.506659305e-07 1.893612526e-06 1.060239614e-05 4.933246868e-19 3.154183306e-06 0.02919790625 0.04612983668 0.05259944714 -7.841855742e-20 1.941402378e-06 0.002544227573 0.009996486075 0.02080052491 5.419803662e-21 4.303134088e-09 3.245821702e-05 0.0001214554809 0.008441473435 -2.60127309e-21 7.913732734e-11 0.000244528235 0.0005341670956 0.000850319238 -2.925991964e-21 1.24545436e-08 4.647614724e-06 1.943409192e-05 0.001346126612 -8.868557821e-22 1.694767817e-09 6.302237123e-06 1.967456339e-05 0.0001889657743 -2.307565941e-21 7.159545547e-10 2.377592603e-05 6.182501648e-05 8.583258375e-05 -1.885592006e-21 2.80783526e-10 6.117810073e-06 2.963383328e-05 0.0001334239481 -1.180655182e-13 3.639495805e-22 2.195757436e-08 8.788265172e-06 2.523145395e-05 -6.69647266e-23 2.915127231e-10 1.448700058e-06 9.188130337e-06 1.314355641e-05 7.573233853e-23 2.504431154e-10 1.668665067e-06 2.56444576e-06 1.453065421e-05 -1.207199964e-11 -1.346772435e-22 1.050882236e-06 7.426129507e-06 1.238245357e-05 -1.683800312e-22 7.174282935e-11 7.619349573e-07 1.391870305e-06 8.580455887e-06 -0.1023418294 0.08910863436 0.04774417212 0.01569268964 0.003730790874 0.0004398673016 3.621759123e-06 8.303343313e-05 0.0001251197703 0.0001208633046 7.355086619e-05 4.553979666e-05 1.877442773e-05 0.03907861894 0.02014270874 0.08056866187 0.02404653386 0.04439923305 0.05956586757 0.02148836974 0.02541408095 0.04879923024 0.01205001664 0.01730030485 0.03071772056 0.009159545751 0.01048004599 0.0191285191 0.005220927572 0.00557604825 0.01086151304 0.003102307883 0.003554059833 0.00657129226 0.001516172487 0.001901455934 0.003550427513 0.0009801196945 0.001139342951 0.002061930446 0.0004381724152 0.0005310831036 0.001001315473 0.0002378950965 0.0003179262915 0.0005273392043 7.207321032e-05 0.0001149570281 0.0001996033272 4.125082566e-05 6.495366098e-05 9.541837803e-05 -4.19694062e-19 1.39828819e-19 -9.551721145e-20 0.005812932105 0.01566546912 3.641922935e-20 -7.473458743e-20 8.242033456e-20 0.001498625448 0.004050853375 8.600468844e-22 1.148196339e-22 1.931562603e-22 1.195300178e-05 5.702926419e-05 2.719846087e-21 -2.52715105e-21 -4.979747187e-22 8.96155963e-05 0.0002417510533 -3.803754678e-24 -4.376077851e-23 -1.281222249e-23 2.020623975e-08 1.240636977e-06 -3.528406839e-24 -5.124529916e-24 -1.422015545e-23 1.883056634e-07 7.704148801e-07 -7.640336853e-23 -4.036564346e-22 5.847496224e-22 4.332690791e-06 1.183210122e-05 -1.047510336e-22 -9.906275873e-24 2.430837323e-23 2.269461802e-06 6.583820072e-06 5.212132425e-24 -2.168808854e-23 -8.292954826e-24 2.5541278e-07 7.819683218e-07 -7.991434801e-24 -4.625252645e-24 -1.962468774e-23 4.890306874e-07 1.33680417e-06 1.683301536e-23 -2.036763071e-23 -1.607922395e-22 8.500618248e-07 2.305286353e-06 -1.326453156e-23 -2.71976168e-24 -2.196288603e-23 5.434412048e-07 1.533953357e-06 4.774530064e-24 1.597563877e-23 2.437687512e-23 3.71109625e-07 9.997125722e-07 -0.09098301696 0.06307717589 0.01270908851 0.0003027144006 0.0005268359081 0.001190444683 0.0003967625992 2.453892021e-05 1.216596892e-05 4.45918963e-05 2.269480219e-05 6.751004497e-06 3.70629213e-06 0.007429705999 0.0156555766 0.06764728514 0.002216093924 0.001733288817 0.02288107558 8.762244767e-05 0.0001380074251 0.00521247636 8.635248394e-05 0.0001755947968 0.001159980845 1.232653474e-05 6.365345083e-06 0.001344277342 4.189208666e-06 1.808705682e-05 9.608919586e-05 1.266194283e-06 1.117560593e-05 0.0001991769255 2.6502377e-06 5.14905174e-06 1.829564389e-05 7.57615654e-07 4.230476155e-06 8.225893455e-05 2.549291338e-07 1.530547456e-06 1.264849014e-05 8.19800555e-07 9.239899889e-07 8.846096158e-06 7.360173227e-07 1.431793244e-06 9.491174404e-06 4.192458047e-07 1.460815725e-06 1.005762613e-05 6.288330094e-20 0.001626349903 0.01288823987 0.02905452607 0.05006714038 1.48910211e-18 5.251024686e-05 0.005844170855 0.008411633173 0.01997120867 -3.842938117e-19 3.266447957e-07 2.170060956e-05 1.949873357e-05 0.007755815627 -1.114517171e-21 4.011294147e-08 0.0002643014879 0.0005413410525 0.0005593832706 3.659016875e-20 1.647440387e-07 2.685470428e-06 2.543979338e-05 0.001524710344 -1.843270809e-21 5.103623238e-07 1.0145487e-05 4.073274757e-05 7.061478459e-05 -9.913838476e-22 1.491420235e-06 1.614038982e-05 1.787734233e-05 0.0001439644424 1.463307227e-21 8.830015414e-07 9.63994939e-06 1.087342298e-05 7.62791521e-05 1.133185746e-21 2.296520432e-08 2.518106313e-07 7.331314038e-06 5.06407804e-05 -3.481951971e-22 8.982179696e-08 9.478304428e-07 4.064284215e-06 8.755341262e-06 -8.094653206e-23 4.820177473e-10 3.881687474e-07 2.565938724e-06 5.742537214e-06 5.661155243e-22 1.362148527e-07 1.419388303e-06 4.338382222e-06 9.09865065e-06 5.765414349e-23 7.789901801e-08 8.429784087e-07 2.453079421e-06 5.117723228e-06 -0.06530441792 0.01910639502 0.009693389368 0.005840420753 0.002100382032 0.0002870081794 0.0001661508823 8.775742353e-05 0.0001286844404 1.46226059e-05 1.264010641e-05 5.257859834e-06 1.129177375e-05 0.01651758077 0.02749667577 0.06419596665 7.178412406e-05 0.002315853591 0.02544526094 2.109702594e-05 8.707098638e-05 0.00622176063 0.0001060353702 0.0002137364639 0.0009166217597 4.264007555e-06 1.661726282e-05 0.001585992702 9.263964269e-07 5.470112635e-06 3.156253308e-05 2.968459078e-06 2.577070521e-05 0.0002003071348 4.817283622e-06 1.213308947e-05 5.006964074e-05 3.116040692e-07 7.141398124e-06 7.733944584e-05 2.916029608e-07 2.197318105e-06 1.244767174e-05 3.406012503e-07 9.563954441e-07 1.153847957e-05 6.20211425e-07 3.125890096e-06 1.486061902e-05 3.506659305e-07 1.893612526e-06 1.060239614e-05 4.933246868e-19 3.154183306e-06 0.02919790625 0.04612983668 0.05259944714 -7.841855742e-20 1.941402378e-06 0.002544227573 0.009996486075 0.02080052491 5.419803662e-21 4.303134088e-09 3.245821702e-05 0.0001214554809 0.008441473435 -2.60127309e-21 7.913732734e-11 0.000244528235 0.0005341670956 0.000850319238 -2.925991964e-21 1.24545436e-08 4.647614724e-06 1.943409192e-05 0.001346126612 -8.868557821e-22 1.694767817e-09 6.302237123e-06 1.967456339e-05 0.0001889657743 -2.307565941e-21 7.159545547e-10 2.377592603e-05 6.182501648e-05 8.583258375e-05 -1.885592006e-21 2.80783526e-10 6.117810073e-06 2.963383328e-05 0.0001334239481 -1.180655182e-13 3.639495805e-22 2.195757436e-08 8.788265172e-06 2.523145395e-05 -6.69647266e-23 2.915127231e-10 1.448700058e-06 9.188130337e-06 1.314355641e-05 7.573233853e-23 2.504431154e-10 1.668665067e-06 2.56444576e-06 1.453065421e-05 -1.207199964e-11 -1.346772435e-22 1.050882236e-06 7.426129507e-06 1.238245357e-05 -1.683800312e-22 7.174282935e-11 7.619349573e-07 1.391870305e-06 8.580455887e-06 -0.1023418294 0.08910863436 0.04774417212 0.01569268964 0.003730790874 0.0004398673016 3.621759123e-06 8.303343313e-05 0.0001251197703 0.0001208633046 7.355086619e-05 4.553979666e-05 1.877442773e-05 0.03907861894 0.02014270874 0.08056866187 0.02404653386 0.04439923305 0.05956586757 0.02148836974 0.02541408095 0.04879923024 0.01205001664 0.01730030485 0.03071772056 0.009159545751 0.01048004599 0.0191285191 0.005220927572 0.00557604825 0.01086151304 0.003102307883 0.003554059833 0.00657129226 0.001516172487 0.001901455934 0.003550427513 0.0009801196945 0.001139342951 0.002061930446 0.0004381724152 0.0005310831036 0.001001315473 0.0002378950965 0.0003179262915 0.0005273392043 7.207321032e-05 0.0001149570281 0.0001996033272 4.125082566e-05 6.495366098e-05 9.541837803e-05 -4.19694062e-19 1.39828819e-19 -9.551721145e-20 0.005812932105 0.01566546912 3.641922935e-20 -7.473458743e-20 8.242033456e-20 0.001498625448 0.004050853375 8.600468844e-22 1.148196339e-22 1.931562603e-22 1.195300178e-05 5.702926419e-05 2.719846087e-21 -2.52715105e-21 -4.979747187e-22 8.96155963e-05 0.0002417510533 -3.803754678e-24 -4.376077851e-23 -1.281222249e-23 2.020623975e-08 1.240636977e-06 -3.528406839e-24 -5.124529916e-24 -1.422015545e-23 1.883056634e-07 7.704148801e-07 -7.640336853e-23 -4.036564346e-22 5.847496224e-22 4.332690791e-06 1.183210122e-05 -1.047510336e-22 -9.906275873e-24 2.430837323e-23 2.269461802e-06 6.583820072e-06 5.212132425e-24 -2.168808854e-23 -8.292954826e-24 2.5541278e-07 7.819683218e-07 -7.991434801e-24 -4.625252645e-24 -1.962468774e-23 4.890306874e-07 1.33680417e-06 1.683301536e-23 -2.036763071e-23 -1.607922395e-22 8.500618248e-07 2.305286353e-06 -1.326453156e-23 -2.71976168e-24 -2.196288603e-23 5.434412048e-07 1.533953357e-06 4.774530064e-24 1.597563877e-23 2.437687512e-23 3.71109625e-07 9.997125722e-07 -0.09098301696 0.06307717589 0.01270908851 0.0003027144006 0.0005268359081 0.001190444683 0.0003967625992 2.453892021e-05 1.216596892e-05 4.45918963e-05 2.269480219e-05 6.751004497e-06 3.70629213e-06 0.007429705999 0.0156555766 0.06764728514 0.002216093924 0.001733288817 0.02288107558 8.762244767e-05 0.0001380074251 0.00521247636 8.635248394e-05 0.0001755947968 0.001159980845 1.232653474e-05 6.365345083e-06 0.001344277342 4.189208666e-06 1.808705682e-05 9.608919586e-05 1.266194283e-06 1.117560593e-05 0.0001991769255 2.6502377e-06 5.14905174e-06 1.829564389e-05 7.57615654e-07 4.230476155e-06 8.225893455e-05 2.549291338e-07 1.530547456e-06 1.264849014e-05 8.19800555e-07 9.239899889e-07 8.846096158e-06 7.360173227e-07 1.431793244e-06 9.491174404e-06 4.192458047e-07 1.460815725e-06 1.005762613e-05 6.288330094e-20 0.001626349903 0.01288823987 0.02905452607 0.05006714038 1.48910211e-18 5.251024686e-05 0.005844170855 0.008411633173 0.01997120867 -3.842938117e-19 3.266447957e-07 2.170060956e-05 1.949873357e-05 0.007755815627 -1.114517171e-21 4.011294147e-08 0.0002643014879 0.0005413410525 0.0005593832706 3.659016875e-20 1.647440387e-07 2.685470428e-06 2.543979338e-05 0.001524710344 -1.843270809e-21 5.103623238e-07 1.0145487e-05 4.073274757e-05 7.061478459e-05 -9.913838476e-22 1.491420235e-06 1.614038982e-05 1.787734233e-05 0.0001439644424 1.463307227e-21 8.830015414e-07 9.63994939e-06 1.087342298e-05 7.62791521e-05 1.133185746e-21 2.296520432e-08 2.518106313e-07 7.331314038e-06 5.06407804e-05 -3.481951971e-22 8.982179696e-08 9.478304428e-07 4.064284215e-06 8.755341262e-06 -8.094653206e-23 4.820177473e-10 3.881687474e-07 2.565938724e-06 5.742537214e-06 5.661155243e-22 1.362148527e-07 1.419388303e-06 4.338382222e-06 9.09865065e-06 5.765414349e-23 7.789901801e-08 8.429784087e-07 2.453079421e-06 5.117723228e-06 -0.06530441792 0.01910639502 0.009693389368 0.005840420753 0.002100382032 0.0002870081794 0.0001661508823 8.775742353e-05 0.0001286844404 1.46226059e-05 1.264010641e-05 5.257859834e-06 1.129177375e-05 0.01651758077 0.02749667577 0.06419596665 7.178412406e-05 0.002315853591 0.02544526094 2.109702594e-05 8.707098638e-05 0.00622176063 0.0001060353702 0.0002137364639 0.0009166217597 4.264007555e-06 1.661726282e-05 0.001585992702 9.263964269e-07 5.470112635e-06 3.156253308e-05 2.968459078e-06 2.577070521e-05 0.0002003071348 4.817283622e-06 1.213308947e-05 5.006964074e-05 3.116040692e-07 7.141398124e-06 7.733944584e-05 2.916029608e-07 2.197318105e-06 1.244767174e-05 3.406012503e-07 9.563954441e-07 1.153847957e-05 6.20211425e-07 3.125890096e-06 1.486061902e-05 3.506659305e-07 1.893612526e-06 1.060239614e-05 4.933246868e-19 3.154183306e-06 0.02919790625 0.04612983668 0.05259944714 -7.841855742e-20 1.941402378e-06 0.002544227573 0.009996486075 0.02080052491 5.419803662e-21 4.303134088e-09 3.245821702e-05 0.0001214554809 0.008441473435 -2.60127309e-21 7.913732734e-11 0.000244528235 0.0005341670956 0.000850319238 -2.925991964e-21 1.24545436e-08 4.647614724e-06 1.943409192e-05 0.001346126612 -8.868557821e-22 1.694767817e-09 6.302237123e-06 1.967456339e-05 0.0001889657743 -2.307565941e-21 7.159545547e-10 2.377592603e-05 6.182501648e-05 8.583258375e-05 -1.885592006e-21 2.80783526e-10 6.117810073e-06 2.963383328e-05 0.0001334239481 -1.180655182e-13 3.639495805e-22 2.195757436e-08 8.788265172e-06 2.523145395e-05 -6.69647266e-23 2.915127231e-10 1.448700058e-06 9.188130337e-06 1.314355641e-05 7.573233853e-23 2.504431154e-10 1.668665067e-06 2.56444576e-06 1.453065421e-05 -1.207199964e-11 -1.346772435e-22 1.050882236e-06 7.426129507e-06 1.238245357e-05 -1.683800312e-22 7.174282935e-11 7.619349573e-07 1.391870305e-06 8.580455887e-06 -0.1023418294 0.08910863436 0.04774417212 0.01569268964 0.003730790874 0.0004398673016 3.621759123e-06 8.303343313e-05 0.0001251197703 0.0001208633046 7.355086619e-05 4.553979666e-05 1.877442773e-05 0.03907861894 0.02014270874 0.08056866187 0.02404653386 0.04439923305 0.05956586757 0.02148836974 0.02541408095 0.04879923024 0.01205001664 0.01730030485 0.03071772056 0.009159545751 0.01048004599 0.0191285191 0.005220927572 0.00557604825 0.01086151304 0.003102307883 0.003554059833 0.00657129226 0.001516172487 0.001901455934 0.003550427513 0.0009801196945 0.001139342951 0.002061930446 0.0004381724152 0.0005310831036 0.001001315473 0.0002378950965 0.0003179262915 0.0005273392043 7.207321032e-05 0.0001149570281 0.0001996033272 4.125082566e-05 6.495366098e-05 9.541837803e-05 -4.19694062e-19 1.39828819e-19 -9.551721145e-20 0.005812932105 0.01566546912 3.641922935e-20 -7.473458743e-20 8.242033456e-20 0.001498625448 0.004050853375 8.600468844e-22 1.148196339e-22 1.931562603e-22 1.195300178e-05 5.702926419e-05 2.719846087e-21 -2.52715105e-21 -4.979747187e-22 8.96155963e-05 0.0002417510533 -3.803754678e-24 -4.376077851e-23 -1.281222249e-23 2.020623975e-08 1.240636977e-06 -3.528406839e-24 -5.124529916e-24 -1.422015545e-23 1.883056634e-07 7.704148801e-07 -7.640336853e-23 -4.036564346e-22 5.847496224e-22 4.332690791e-06 1.183210122e-05 -1.047510336e-22 -9.906275873e-24 2.430837323e-23 2.269461802e-06 6.583820072e-06 5.212132425e-24 -2.168808854e-23 -8.292954826e-24 2.5541278e-07 7.819683218e-07 -7.991434801e-24 -4.625252645e-24 -1.962468774e-23 4.890306874e-07 1.33680417e-06 1.683301536e-23 -2.036763071e-23 -1.607922395e-22 8.500618248e-07 2.305286353e-06 -1.326453156e-23 -2.71976168e-24 -2.196288603e-23 5.434412048e-07 1.533953357e-06 4.774530064e-24 1.597563877e-23 2.437687512e-23 3.71109625e-07 9.997125722e-07 -0.09098301696 0.06307717589 0.01270908851 0.0003027144006 0.0005268359081 0.001190444683 0.0003967625992 2.453892021e-05 1.216596892e-05 4.45918963e-05 2.269480219e-05 6.751004497e-06 3.70629213e-06 0.007429705999 0.0156555766 0.06764728514 0.002216093924 0.001733288817 0.02288107558 8.762244767e-05 0.0001380074251 0.00521247636 8.635248394e-05 0.0001755947968 0.001159980845 1.232653474e-05 6.365345083e-06 0.001344277342 4.189208666e-06 1.808705682e-05 9.608919586e-05 1.266194283e-06 1.117560593e-05 0.0001991769255 2.6502377e-06 5.14905174e-06 1.829564389e-05 7.57615654e-07 4.230476155e-06 8.225893455e-05 2.549291338e-07 1.530547456e-06 1.264849014e-05 8.19800555e-07 9.239899889e-07 8.846096158e-06 7.360173227e-07 1.431793244e-06 9.491174404e-06 4.192458047e-07 1.460815725e-06 1.005762613e-05 6.288330094e-20 0.001626349903 0.01288823987 0.02905452607 0.05006714038 1.48910211e-18 5.251024686e-05 0.005844170855 0.008411633173 0.01997120867 -3.842938117e-19 3.266447957e-07 2.170060956e-05 1.949873357e-05 0.007755815627 -1.114517171e-21 4.011294147e-08 0.0002643014879 0.0005413410525 0.0005593832706 3.659016875e-20 1.647440387e-07 2.685470428e-06 2.543979338e-05 0.001524710344 -1.843270809e-21 5.103623238e-07 1.0145487e-05 4.073274757e-05 7.061478459e-05 -9.913838476e-22 1.491420235e-06 1.614038982e-05 1.787734233e-05 0.0001439644424 1.463307227e-21 8.830015414e-07 9.63994939e-06 1.087342298e-05 7.62791521e-05 1.133185746e-21 2.296520432e-08 2.518106313e-07 7.331314038e-06 5.06407804e-05 -3.481951971e-22 8.982179696e-08 9.478304428e-07 4.064284215e-06 8.755341262e-06 -8.094653206e-23 4.820177473e-10 3.881687474e-07 2.565938724e-06 5.742537214e-06 5.661155243e-22 1.362148527e-07 1.419388303e-06 4.338382222e-06 9.09865065e-06 5.765414349e-23 7.789901801e-08 8.429784087e-07 2.453079421e-06 5.117723228e-06 -0.06530441792 0.01910639502 0.009693389368 0.005840420753 0.002100382032 0.0002870081794 0.0001661508823 8.775742353e-05 0.0001286844404 1.46226059e-05 1.264010641e-05 5.257859834e-06 1.129177375e-05 0.01651758077 0.02749667577 0.06419596665 7.178412406e-05 0.002315853591 0.02544526094 2.109702594e-05 8.707098638e-05 0.00622176063 0.0001060353702 0.0002137364639 0.0009166217597 4.264007555e-06 1.661726282e-05 0.001585992702 9.263964269e-07 5.470112635e-06 3.156253308e-05 2.968459078e-06 2.577070521e-05 0.0002003071348 4.817283622e-06 1.213308947e-05 5.006964074e-05 3.116040692e-07 7.141398124e-06 7.733944584e-05 2.916029608e-07 2.197318105e-06 1.244767174e-05 3.406012503e-07 9.563954441e-07 1.153847957e-05 6.20211425e-07 3.125890096e-06 1.486061902e-05 3.506659305e-07 1.893612526e-06 1.060239614e-05 4.933246868e-19 3.154183306e-06 0.02919790625 0.04612983668 0.05259944714 -7.841855742e-20 1.941402378e-06 0.002544227573 0.009996486075 0.02080052491 5.419803662e-21 4.303134088e-09 3.245821702e-05 0.0001214554809 0.008441473435 -2.60127309e-21 7.913732734e-11 0.000244528235 0.0005341670956 0.000850319238 -2.925991964e-21 1.24545436e-08 4.647614724e-06 1.943409192e-05 0.001346126612 -8.868557821e-22 1.694767817e-09 6.302237123e-06 1.967456339e-05 0.0001889657743 -2.307565941e-21 7.159545547e-10 2.377592603e-05 6.182501648e-05 8.583258375e-05 -1.885592006e-21 2.80783526e-10 6.117810073e-06 2.963383328e-05 0.0001334239481 -1.180655182e-13 3.639495805e-22 2.195757436e-08 8.788265172e-06 2.523145395e-05 -6.69647266e-23 2.915127231e-10 1.448700058e-06 9.188130337e-06 1.314355641e-05 7.573233853e-23 2.504431154e-10 1.668665067e-06 2.56444576e-06 1.453065421e-05 -1.207199964e-11 -1.346772435e-22 1.050882236e-06 7.426129507e-06 1.238245357e-05 -1.683800312e-22 7.174282935e-11 7.619349573e-07 1.391870305e-06 8.580455887e-06 -0.1023418294 0.08910863436 0.04774417212 0.01569268964 0.003730790874 0.0004398673016 3.621759123e-06 8.303343313e-05 0.0001251197703 0.0001208633046 7.355086619e-05 4.553979666e-05 1.877442773e-05 0.03907861894 0.02014270874 0.08056866187 0.02404653386 0.04439923305 0.05956586757 0.02148836974 0.02541408095 0.04879923024 0.01205001664 0.01730030485 0.03071772056 0.009159545751 0.01048004599 0.0191285191 0.005220927572 0.00557604825 0.01086151304 0.003102307883 0.003554059833 0.00657129226 0.001516172487 0.001901455934 0.003550427513 0.0009801196945 0.001139342951 0.002061930446 0.0004381724152 0.0005310831036 0.001001315473 0.0002378950965 0.0003179262915 0.0005273392043 7.207321032e-05 0.0001149570281 0.0001996033272 4.125082566e-05 6.495366098e-05 9.541837803e-05 -2.028536275e-19 1.785607463e-20 -4.130710283e-20 0.005812932105 0.01566546912 -1.779087927e-20 -8.48989828e-20 1.366304432e-19 0.001498625448 0.004050853375 9.242327599e-23 1.148196339e-22 4.049144971e-22 1.195300178e-05 5.702926419e-05 -4.056417491e-21 -2.52715105e-21 1.196091176e-21 8.96155963e-05 0.0002417510533 -3.023128278e-24 -4.605017619e-23 -1.286403936e-23 2.020623975e-08 1.240636977e-06 -3.528406839e-24 -4.297349303e-24 -1.422015545e-23 1.883056634e-07 7.704148801e-07 -2.677253178e-23 -1.918981978e-22 5.847496224e-22 4.332690791e-06 1.183210122e-05 -2.10630152e-22 -5.002453558e-23 -8.77885127e-24 2.269461802e-06 6.583820072e-06 5.212132425e-24 1.801658086e-23 -1.491039973e-23 2.5541278e-07 7.819683218e-07 -7.991434801e-24 2.184452696e-23 -8.04415916e-24 4.890306874e-07 1.33680417e-06 -1.285619657e-23 -1.963719099e-23 -1.104829721e-22 8.500618248e-07 2.305286353e-06 -2.964176146e-26 -1.595465148e-23 -4.843266564e-23 5.434412048e-07 1.533953357e-06 5.601710677e-24 1.266691632e-23 2.437687512e-23 3.71109625e-07 9.997125722e-07 -0.09098301696 0.06307717589 0.01270908851 0.0003027144006 0.0005268359081 0.001190444683 0.0003967625992 2.453892021e-05 1.216596892e-05 4.45918963e-05 2.269480219e-05 6.751004497e-06 3.70629213e-06 0.007429705999 0.0156555766 0.06764728514 0.002216093924 0.001733288817 0.02288107558 8.762244767e-05 0.0001380074251 0.00521247636 8.635248394e-05 0.0001755947968 0.001159980845 1.232653474e-05 6.365345083e-06 0.001344277342 4.189208666e-06 1.808705682e-05 9.608919586e-05 1.266194283e-06 1.117560593e-05 0.0001991769255 2.6502377e-06 5.14905174e-06 1.829564389e-05 7.57615654e-07 4.230476155e-06 8.225893455e-05 2.549291338e-07 1.530547456e-06 1.264849014e-05 8.19800555e-07 9.239899889e-07 8.846096158e-06 7.360173227e-07 1.431793244e-06 9.491174404e-06 4.192458047e-07 1.460815725e-06 1.005762613e-05 -3.740725607e-19 0.001626349903 0.01288823987 0.02905452607 0.05006714038 1.48910211e-18 5.251024686e-05 0.005844170855 0.008411633173 0.01997120867 -3.842938117e-19 3.266447957e-07 2.170060956e-05 1.949873357e-05 0.007755815627 -1.114517171e-21 4.011294147e-08 0.0002643014879 0.0005413410525 0.0005593832706 9.485114437e-21 1.647440387e-07 2.685470428e-06 2.543979338e-05 0.001524710344 -1.422952571e-21 5.103623238e-07 1.0145487e-05 4.073274757e-05 7.061478459e-05 1.556111464e-21 1.491420235e-06 1.614038982e-05 1.787734233e-05 0.0001439644424 3.157373122e-21 8.830015414e-07 9.63994939e-06 1.087342298e-05 7.62791521e-05 2.861527986e-22 2.296520432e-08 2.518106313e-07 7.331314038e-06 5.06407804e-05 -1.364369603e-22 8.982179696e-08 9.478304428e-07 4.064284215e-06 8.755341262e-06 1.179764139e-23 4.820177473e-10 3.881687474e-07 2.565938724e-06 5.742537214e-06 5.661155243e-22 1.362148527e-07 1.419388303e-06 4.338382222e-06 9.09865065e-06 -4.822497492e-23 7.789901801e-08 8.429784087e-07 2.453079421e-06 5.117723228e-06 -0.06530441792 0.01910639502 0.009693389368 0.005840420753 0.002100382032 0.0002870081794 0.0001661508823 8.775742353e-05 0.0001286844404 1.46226059e-05 1.264010641e-05 5.257859834e-06 1.129177375e-05 0.01651758077 0.02749667577 0.06419596665 7.178412406e-05 0.002315853591 0.02544526094 2.109702594e-05 8.707098638e-05 0.00622176063 0.0001060353702 0.0002137364639 0.0009166217597 4.264007555e-06 1.661726282e-05 0.001585992702 9.263964269e-07 5.470112635e-06 3.156253308e-05 2.968459078e-06 2.577070521e-05 0.0002003071348 4.817283622e-06 1.213308947e-05 5.006964074e-05 3.116040692e-07 7.141398124e-06 7.733944584e-05 2.916029608e-07 2.197318105e-06 1.244767174e-05 3.406012503e-07 9.563954441e-07 1.153847957e-05 6.20211425e-07 3.125890096e-06 1.486061902e-05 3.506659305e-07 1.893612526e-06 1.060239614e-05 4.933246868e-19 3.154183306e-06 0.02919790625 0.04612983668 0.05259944714 -7.841855742e-20 1.941402378e-06 0.002544227573 0.009996486075 0.02080052491 5.419803662e-21 4.303134088e-09 3.245821702e-05 0.0001214554809 0.008441473435 -2.60127309e-21 7.913732734e-11 0.000244528235 0.0005341670956 0.000850319238 -2.925991964e-21 1.24545436e-08 4.647614724e-06 1.943409192e-05 0.001346126612 -8.868557821e-22 1.694767817e-09 6.302237123e-06 1.967456339e-05 0.0001889657743 -2.307565941e-21 7.159545547e-10 2.377592603e-05 6.182501648e-05 8.583258375e-05 -1.885592006e-21 2.80783526e-10 6.117810073e-06 2.963383328e-05 0.0001334239481 -1.180655182e-13 3.639495805e-22 2.195757436e-08 8.788265172e-06 2.523145395e-05 -6.69647266e-23 2.915127231e-10 1.448700058e-06 9.188130337e-06 1.314355641e-05 7.573233853e-23 2.504431154e-10 1.668665067e-06 2.56444576e-06 1.453065421e-05 -1.207199964e-11 -1.346772435e-22 1.050882236e-06 7.426129507e-06 1.238245357e-05 -1.683800312e-22 7.174282935e-11 7.619349573e-07 1.391870305e-06 8.580455887e-06 -0.1023418294 0.08910863436 0.04774417212 0.01569268964 0.003730790874 0.0004398673016 3.621759123e-06 8.303343313e-05 0.0001251197703 0.0001208633046 7.355086619e-05 4.553979666e-05 1.877442773e-05 0.03907861894 0.02014270874 0.08056866187 0.02404653386 0.04439923305 0.05956586757 0.02148836974 0.02541408095 0.04879923024 0.01205001664 0.01730030485 0.03071772056 0.009159545751 0.01048004599 0.0191285191 0.005220927572 0.00557604825 0.01086151304 0.003102307883 0.003554059833 0.00657129226 0.001516172487 0.001901455934 0.003550427513 0.0009801196945 0.001139342951 0.002061930446 0.0004381724152 0.0005310831036 0.001001315473 0.0002378950965 0.0003179262915 0.0005273392043 7.207321032e-05 0.0001149570281 0.0001996033272 4.125082566e-05 6.495366098e-05 9.541837803e-05 -2.028536275e-19 1.785607463e-20 -4.130710283e-20 0.005812932105 0.01566546912 -1.779087927e-20 -8.48989828e-20 1.366304432e-19 0.001498625448 0.004050853375 9.242327599e-23 1.148196339e-22 4.049144971e-22 1.195300178e-05 5.702926419e-05 -4.056417491e-21 -2.52715105e-21 1.196091176e-21 8.96155963e-05 0.0002417510533 -3.023128278e-24 -4.605017619e-23 -1.286403936e-23 2.020623975e-08 1.240636977e-06 -3.528406839e-24 -4.297349303e-24 -1.422015545e-23 1.883056634e-07 7.704148801e-07 -2.677253178e-23 -1.918981978e-22 5.847496224e-22 4.332690791e-06 1.183210122e-05 -2.10630152e-22 -5.002453558e-23 -8.77885127e-24 2.269461802e-06 6.583820072e-06 5.212132425e-24 1.801658086e-23 -1.491039973e-23 2.5541278e-07 7.819683218e-07 -7.991434801e-24 2.184452696e-23 -8.04415916e-24 4.890306874e-07 1.33680417e-06 -1.285619657e-23 -1.963719099e-23 -1.104829721e-22 8.500618248e-07 2.305286353e-06 -2.964176146e-26 -1.595465148e-23 -4.843266564e-23 5.434412048e-07 1.533953357e-06 5.601710677e-24 1.266691632e-23 2.437687512e-23 3.71109625e-07 9.997125722e-07 -0.09098301696 0.06307717589 0.01270908851 0.0003027144006 0.0005268359081 0.001190444683 0.0003967625992 2.453892021e-05 1.216596892e-05 4.45918963e-05 2.269480219e-05 6.751004497e-06 3.70629213e-06 0.007429705999 0.0156555766 0.06764728514 0.002216093924 0.001733288817 0.02288107558 8.762244767e-05 0.0001380074251 0.00521247636 8.635248394e-05 0.0001755947968 0.001159980845 1.232653474e-05 6.365345083e-06 0.001344277342 4.189208666e-06 1.808705682e-05 9.608919586e-05 1.266194283e-06 1.117560593e-05 0.0001991769255 2.6502377e-06 5.14905174e-06 1.829564389e-05 7.57615654e-07 4.230476155e-06 8.225893455e-05 2.549291338e-07 1.530547456e-06 1.264849014e-05 8.19800555e-07 9.239899889e-07 8.846096158e-06 7.360173227e-07 1.431793244e-06 9.491174404e-06 4.192458047e-07 1.460815725e-06 1.005762613e-05 -3.740725607e-19 0.001626349903 0.01288823987 0.02905452607 0.05006714038 1.48910211e-18 5.251024686e-05 0.005844170855 0.008411633173 0.01997120867 -3.842938117e-19 3.266447957e-07 2.170060956e-05 1.949873357e-05 0.007755815627 -1.114517171e-21 4.011294147e-08 0.0002643014879 0.0005413410525 0.0005593832706 9.485114437e-21 1.647440387e-07 2.685470428e-06 2.543979338e-05 0.001524710344 -1.422952571e-21 5.103623238e-07 1.0145487e-05 4.073274757e-05 7.061478459e-05 1.556111464e-21 1.491420235e-06 1.614038982e-05 1.787734233e-05 0.0001439644424 3.157373122e-21 8.830015414e-07 9.63994939e-06 1.087342298e-05 7.62791521e-05 2.861527986e-22 2.296520432e-08 2.518106313e-07 7.331314038e-06 5.06407804e-05 -1.364369603e-22 8.982179696e-08 9.478304428e-07 4.064284215e-06 8.755341262e-06 1.179764139e-23 4.820177473e-10 3.881687474e-07 2.565938724e-06 5.742537214e-06 5.661155243e-22 1.362148527e-07 1.419388303e-06 4.338382222e-06 9.09865065e-06 -4.822497492e-23 7.789901801e-08 8.429784087e-07 2.453079421e-06 5.117723228e-06 -0.06530441792 0.01910639502 0.009693389368 0.005840420753 0.002100382032 0.0002870081794 0.0001661508823 8.775742353e-05 0.0001286844404 1.46226059e-05 1.264010641e-05 5.257859834e-06 1.129177375e-05 0.01651758077 0.02749667577 0.06419596665 7.178412406e-05 0.002315853591 0.02544526094 2.109702594e-05 8.707098638e-05 0.00622176063 0.0001060353702 0.0002137364639 0.0009166217597 4.264007555e-06 1.661726282e-05 0.001585992702 9.263964269e-07 5.470112635e-06 3.156253308e-05 2.968459078e-06 2.577070521e-05 0.0002003071348 4.817283622e-06 1.213308947e-05 5.006964074e-05 3.116040692e-07 7.141398124e-06 7.733944584e-05 2.916029608e-07 2.197318105e-06 1.244767174e-05 3.406012503e-07 9.563954441e-07 1.153847957e-05 6.20211425e-07 3.125890096e-06 1.486061902e-05 3.506659305e-07 1.893612526e-06 1.060239614e-05 4.933246868e-19 3.154183306e-06 0.02919790625 0.04612983668 0.05259944714 -7.841855742e-20 1.941402378e-06 0.002544227573 0.009996486075 0.02080052491 5.419803662e-21 4.303134088e-09 3.245821702e-05 0.0001214554809 0.008441473435 -2.60127309e-21 7.913732734e-11 0.000244528235 0.0005341670956 0.000850319238 -2.925991964e-21 1.24545436e-08 4.647614724e-06 1.943409192e-05 0.001346126612 -8.868557821e-22 1.694767817e-09 6.302237123e-06 1.967456339e-05 0.0001889657743 -2.307565941e-21 7.159545547e-10 2.377592603e-05 6.182501648e-05 8.583258375e-05 -1.885592006e-21 2.80783526e-10 6.117810073e-06 2.963383328e-05 0.0001334239481 -1.180655182e-13 3.639495805e-22 2.195757436e-08 8.788265172e-06 2.523145395e-05 -6.69647266e-23 2.915127231e-10 1.448700058e-06 9.188130337e-06 1.314355641e-05 7.573233853e-23 2.504431154e-10 1.668665067e-06 2.56444576e-06 1.453065421e-05 -1.207199964e-11 -1.346772435e-22 1.050882236e-06 7.426129507e-06 1.238245357e-05 -1.683800312e-22 7.174282935e-11 7.619349573e-07 1.391870305e-06 8.580455887e-06 -0.1023418294 0.08910863436 0.04774417212 0.01569268964 0.003730790874 0.0004398673016 3.621759123e-06 8.303343313e-05 0.0001251197703 0.0001208633046 7.355086619e-05 4.553979666e-05 1.877442773e-05 0.03907861894 0.02014270874 0.08056866187 0.02404653386 0.04439923305 0.05956586757 0.02148836974 0.02541408095 0.04879923024 0.01205001664 0.01730030485 0.03071772056 0.009159545751 0.01048004599 0.0191285191 0.005220927572 0.00557604825 0.01086151304 0.003102307883 0.003554059833 0.00657129226 0.001516172487 0.001901455934 0.003550427513 0.0009801196945 0.001139342951 0.002061930446 0.0004381724152 0.0005310831036 0.001001315473 0.0002378950965 0.0003179262915 0.0005273392043 7.207321032e-05 0.0001149570281 0.0001996033272 4.125082566e-05 6.495366098e-05 9.541837803e-05 -2.028536275e-19 1.785607463e-20 -4.130710283e-20 0.005812932105 0.01566546912 -1.779087927e-20 -8.48989828e-20 1.366304432e-19 0.001498625448 0.004050853375 9.242327599e-23 1.148196339e-22 4.049144971e-22 1.195300178e-05 5.702926419e-05 -4.056417491e-21 -2.52715105e-21 1.196091176e-21 8.96155963e-05 0.0002417510533 -3.023128278e-24 -4.605017619e-23 -1.286403936e-23 2.020623975e-08 1.240636977e-06 -3.528406839e-24 -4.297349303e-24 -1.422015545e-23 1.883056634e-07 7.704148801e-07 -2.677253178e-23 -1.918981978e-22 5.847496224e-22 4.332690791e-06 1.183210122e-05 -2.10630152e-22 -5.002453558e-23 -8.77885127e-24 2.269461802e-06 6.583820072e-06 5.212132425e-24 1.801658086e-23 -1.491039973e-23 2.5541278e-07 7.819683218e-07 -7.991434801e-24 2.184452696e-23 -8.04415916e-24 4.890306874e-07 1.33680417e-06 -1.285619657e-23 -1.963719099e-23 -1.104829721e-22 8.500618248e-07 2.305286353e-06 -2.964176146e-26 -1.595465148e-23 -4.843266564e-23 5.434412048e-07 1.533953357e-06 5.601710677e-24 1.266691632e-23 2.437687512e-23 3.71109625e-07 9.997125722e-07 -0.09098301696 0.06307717589 0.01270908851 0.0003027144006 0.0005268359081 0.001190444683 0.0003967625992 2.453892021e-05 1.216596892e-05 4.45918963e-05 2.269480219e-05 6.751004497e-06 3.70629213e-06 0.007429705999 0.0156555766 0.06764728514 0.002216093924 0.001733288817 0.02288107558 8.762244767e-05 0.0001380074251 0.00521247636 8.635248394e-05 0.0001755947968 0.001159980845 1.232653474e-05 6.365345083e-06 0.001344277342 4.189208666e-06 1.808705682e-05 9.608919586e-05 1.266194283e-06 1.117560593e-05 0.0001991769255 2.6502377e-06 5.14905174e-06 1.829564389e-05 7.57615654e-07 4.230476155e-06 8.225893455e-05 2.549291338e-07 1.530547456e-06 1.264849014e-05 8.19800555e-07 9.239899889e-07 8.846096158e-06 7.360173227e-07 1.431793244e-06 9.491174404e-06 4.192458047e-07 1.460815725e-06 1.005762613e-05 -3.740725607e-19 0.001626349903 0.01288823987 0.02905452607 0.05006714038 1.48910211e-18 5.251024686e-05 0.005844170855 0.008411633173 0.01997120867 -3.842938117e-19 3.266447957e-07 2.170060956e-05 1.949873357e-05 0.007755815627 -1.114517171e-21 4.011294147e-08 0.0002643014879 0.0005413410525 0.0005593832706 9.485114437e-21 1.647440387e-07 2.685470428e-06 2.543979338e-05 0.001524710344 -1.422952571e-21 5.103623238e-07 1.0145487e-05 4.073274757e-05 7.061478459e-05 1.556111464e-21 1.491420235e-06 1.614038982e-05 1.787734233e-05 0.0001439644424 3.157373122e-21 8.830015414e-07 9.63994939e-06 1.087342298e-05 7.62791521e-05 2.861527986e-22 2.296520432e-08 2.518106313e-07 7.331314038e-06 5.06407804e-05 -1.364369603e-22 8.982179696e-08 9.478304428e-07 4.064284215e-06 8.755341262e-06 1.179764139e-23 4.820177473e-10 3.881687474e-07 2.565938724e-06 5.742537214e-06 5.661155243e-22 1.362148527e-07 1.419388303e-06 4.338382222e-06 9.09865065e-06 -4.822497492e-23 7.789901801e-08 8.429784087e-07 2.453079421e-06 5.117723228e-06 -0.06530441792 0.01910639502 0.009693389368 0.005840420753 0.002100382032 0.0002870081794 0.0001661508823 8.775742353e-05 0.0001286844404 1.46226059e-05 1.264010641e-05 5.257859834e-06 1.129177375e-05 0.01651758077 0.02749667577 0.06419596665 7.178412406e-05 0.002315853591 0.02544526094 2.109702594e-05 8.707098638e-05 0.00622176063 0.0001060353702 0.0002137364639 0.0009166217597 4.264007555e-06 1.661726282e-05 0.001585992702 9.263964269e-07 5.470112635e-06 3.156253308e-05 2.968459078e-06 2.577070521e-05 0.0002003071348 4.817283622e-06 1.213308947e-05 5.006964074e-05 3.116040692e-07 7.141398124e-06 7.733944584e-05 2.916029608e-07 2.197318105e-06 1.244767174e-05 3.406012503e-07 9.563954441e-07 1.153847957e-05 6.20211425e-07 3.125890096e-06 1.486061902e-05 3.506659305e-07 1.893612526e-06 1.060239614e-05 4.933246868e-19 3.154183306e-06 0.02919790625 0.04612983668 0.05259944714 -7.841855742e-20 1.941402378e-06 0.002544227573 0.009996486075 0.02080052491 5.419803662e-21 4.303134088e-09 3.245821702e-05 0.0001214554809 0.008441473435 -2.60127309e-21 7.913732734e-11 0.000244528235 0.0005341670956 0.000850319238 -2.925991964e-21 1.24545436e-08 4.647614724e-06 1.943409192e-05 0.001346126612 -8.868557821e-22 1.694767817e-09 6.302237123e-06 1.967456339e-05 0.0001889657743 -2.307565941e-21 7.159545547e-10 2.377592603e-05 6.182501648e-05 8.583258375e-05 -1.885592006e-21 2.80783526e-10 6.117810073e-06 2.963383328e-05 0.0001334239481 -1.180655182e-13 3.639495805e-22 2.195757436e-08 8.788265172e-06 2.523145395e-05 -6.69647266e-23 2.915127231e-10 1.448700058e-06 9.188130337e-06 1.314355641e-05 7.573233853e-23 2.504431154e-10 1.668665067e-06 2.56444576e-06 1.453065421e-05 -1.207199964e-11 -1.346772435e-22 1.050882236e-06 7.426129507e-06 1.238245357e-05 -1.683800312e-22 7.174282935e-11 7.619349573e-07 1.391870305e-06 8.580455887e-06 diff --git a/tests/09_DeePKS/100_NO_KP_deepks_UT/pdm_ref.dat b/tests/09_DeePKS/100_NO_KP_deepks_UT/pdm_ref.dat deleted file mode 100644 index 71f21991ae..0000000000 --- a/tests/09_DeePKS/100_NO_KP_deepks_UT/pdm_ref.dat +++ /dev/null @@ -1,117 +0,0 @@ -0.8747069364 -0.7986266843 -0.4329417772 -0.1421801564 -0.03320315091 -0.003963463477 -3.058507716e-05 -0.0007248747042 -0.001140167362 -0.001076650529 -0.0006700585764 -0.0004017688378 -0.0001719323946 -0.3579389474 -0.01256254025 -0.01410969305 -0.01256254025 0.5810320463 0.1823424665 -0.01410969305 0.1823424665 0.4997667206 -0.3509687039 -0.06468478124 0.09059838981 -0.06468478124 0.4264605857 -0.03398775369 0.09059838981 -0.03398775369 0.4422416779 -0.2773493772 -0.05315063405 0.0817643509 -0.05315063405 0.266219475 -0.09042656291 0.0817643509 -0.09042656291 0.3094439641 -0.1757946166 -0.03273988371 0.05109752683 -0.03273988371 0.1590426375 -0.06389603339 0.05109752683 -0.06389603339 0.1898057058 -0.1087063229 -0.02124507972 0.03174820537 -0.02124507972 0.1151154263 -0.02702213273 0.03174820537 -0.02702213273 0.1278759774 -0.06168486011 -0.01197136345 0.01812702989 -0.01197136345 0.06259722794 -0.01749946946 0.01812702989 -0.01749946946 0.07090961824 -0.03737029944 -0.007280389551 0.01090059579 -0.007280389551 0.03929852145 -0.009483196226 0.01090059579 -0.009483196226 0.04378328064 -0.02021473553 -0.003844414111 0.005938816317 -0.003844414111 0.01908145868 -0.006812891698 0.005938816317 -0.006812891698 0.02234506582 -0.01172222826 -0.002290918467 0.003418316515 -0.002290918467 0.01246842926 -0.002867143032 0.003418316515 -0.002867143032 0.01382159612 -0.005697062737 -0.001087831875 0.001675222143 -0.001087831875 0.0054423063 -0.001872841625 0.001675222143 -0.001872841625 0.006338294902 -0.003013268342 -0.0005867927862 0.0008620478594 -0.0005867927862 0.003343353255 -0.0006160722964 0.0008620478594 -0.0006160722964 0.003632415938 -0.001145707175 -0.0002103502529 0.0003312799167 -0.0002103502529 0.0009989046553 -0.0004430502624 0.0003312799167 -0.0004430502624 0.001212916357 -0.000549550422 -0.0001063884409 0.0001525706216 -0.0001063884409 0.0006472165948 -7.945057148e-05 0.0001525706216 -7.945057148e-05 0.0006839725021 -0.05968713717 0.02599124178 -0.03492386544 -0.01587014576 -0.0548307714 0.02599124178 0.01646604698 -0.02515403229 -0.004761396291 -0.0122770931 -0.03492386544 -0.02515403229 0.03965106595 0.005133124209 0.00967157915 -0.01587014576 -0.004761396291 0.005133124209 0.005117111981 0.01942190413 -0.0548307714 -0.0122770931 0.00967157915 0.01942190413 0.07650540413 -0.01567510585 0.007222932442 -0.009938933024 -0.004002045577 -0.01350501305 0.007222932442 0.004635031936 -0.007104532736 -0.001298494091 -0.003278536301 -0.009938933024 -0.007104532736 0.01117987536 0.001483381975 0.002874133348 -0.004002045577 -0.001298494091 0.001483381975 0.001249574846 0.004677363799 -0.01350501305 -0.003278536301 0.002874133348 0.004677363799 0.0182697842 -0.0002109020645 0.0001228311683 -0.0001832808094 -4.313658389e-05 -0.0001239104926 0.0001228311683 8.243213675e-05 -0.0001277925894 -2.057453764e-05 -4.761961094e-05 -0.0001832808094 -0.0001277925894 0.0001999435748 2.869897801e-05 6.025614699e-05 -4.313658389e-05 -2.057453764e-05 2.869897801e-05 1.072201945e-05 3.559276438e-05 -0.0001239104926 -4.761961094e-05 6.025614699e-05 3.559276438e-05 0.0001281099689 -0.0009198583344 0.0003990186983 -0.0005352460494 -0.0002452234908 -0.0008484874095 0.0003990186983 0.0002525579816 -0.0003857224072 -7.319299008e-05 -0.0001889955967 -0.0005352460494 -0.0003857224072 0.0006081005302 7.858316145e-05 0.0001477550853 -0.0002452234908 -7.319299008e-05 7.858316145e-05 7.922742082e-05 0.0003009599166 -0.0008484874095 -0.0001889955967 0.0001477550853 0.0003009599166 0.00118612158 -4.039468217e-06 2.744328732e-06 -4.267233563e-06 -6.626606446e-07 -1.490694432e-06 2.744328732e-06 1.885341884e-06 -2.9394542e-06 -4.414699194e-07 -9.6564648e-07 -4.267233563e-06 -2.9394542e-06 4.585870689e-06 6.831624672e-07 1.48374796e-06 -6.626606446e-07 -4.414699194e-07 6.831624672e-07 1.123511396e-07 2.642083477e-07 -1.490694432e-06 -9.6564648e-07 1.48374796e-06 2.642083477e-07 6.562396099e-07 -2.45628118e-06 7.533547245e-07 -8.261889493e-07 -7.851403893e-07 -2.969011757e-06 7.533547245e-07 4.301669704e-07 -6.380872369e-07 -1.576743285e-07 -4.619780779e-07 -8.261889493e-07 -6.380872369e-07 1.021140476e-06 1.034710063e-07 1.318620282e-07 -7.851403893e-07 -1.576743285e-07 1.034710063e-07 2.856766382e-07 1.136347369e-06 -2.969011757e-06 -4.619780779e-07 1.318620282e-07 1.136347369e-06 4.599636283e-06 -4.593855756e-05 2.160171277e-05 -2.996563266e-05 -1.154760102e-05 -3.860155324e-05 2.160171277e-05 1.39230861e-05 -2.136554466e-05 -3.857937006e-06 -9.667624882e-06 -2.996563266e-05 -2.136554466e-05 3.360185628e-05 4.495090264e-06 8.788109969e-06 -1.154760102e-05 -3.857937006e-06 4.495090264e-06 3.559113009e-06 1.324555632e-05 -3.860155324e-05 -9.667624882e-06 8.788109969e-06 1.324555632e-05 5.155258897e-05 -2.39052776e-05 9.332008544e-06 -1.190509596e-05 -6.806126328e-06 -2.438861877e-05 9.332008544e-06 5.751530367e-06 -8.721296664e-06 -1.7765693e-06 -4.769685039e-06 -1.190509596e-05 -8.721296664e-06 1.379979905e-05 1.688602551e-06 2.966571767e-06 -6.806126328e-06 -1.7765693e-06 1.688602551e-06 2.3053613e-06 8.927391748e-06 -2.438861877e-05 -4.769685039e-06 2.966571767e-06 8.927391748e-06 3.558673823e-05 -2.769239159e-06 1.030977681e-06 -1.282388513e-06 -8.093386021e-07 -2.938031444e-06 1.030977681e-06 6.270981015e-07 -9.474387079e-07 -1.997436163e-07 -5.456832355e-07 -1.282388513e-06 -9.474387079e-07 1.501940698e-06 1.785514486e-07 3.015230923e-07 -8.093386021e-07 -1.997436163e-07 1.785514486e-07 2.789453637e-07 1.087528628e-06 -2.938031444e-06 -5.456832355e-07 3.015230923e-07 1.087528628e-06 4.352174379e-06 -5.191219086e-06 2.444777464e-06 -3.393385727e-06 -1.303371608e-06 -4.353757482e-06 2.444777464e-06 1.576258971e-06 -2.419037092e-06 -4.3640916e-07 -1.09298285e-06 -3.393385727e-06 -2.419037092e-06 3.804286964e-06 5.092245454e-07 9.962077207e-07 -1.303371608e-06 -4.3640916e-07 5.092245454e-07 4.013119333e-07 1.492842652e-06 -4.353757482e-06 -1.09298285e-06 9.962077207e-07 1.492842652e-06 5.8086103e-06 -8.722561465e-06 3.726792255e-06 -4.965530264e-06 -2.349091997e-06 -8.174004252e-06 3.726792255e-06 2.35035699e-06 -3.586168862e-06 -6.8716692e-07 -1.784368476e-06 -4.965530264e-06 -3.586168862e-06 5.656447876e-06 7.257736683e-07 1.353199185e-06 -2.349091997e-06 -6.8716692e-07 7.257736683e-07 7.647864321e-07 2.91450715e-06 -8.174004252e-06 -1.784368476e-06 1.353199185e-06 2.91450715e-06 1.150853159e-05 -5.650257429e-06 2.270442446e-06 -2.938947096e-06 -1.581672941e-06 -5.618657706e-06 2.270442446e-06 1.410078859e-06 -2.142634452e-06 -4.27742886e-07 -1.136217091e-06 -2.938947096e-06 -2.142634452e-06 3.386694696e-06 4.211756005e-07 7.556515485e-07 -1.581672941e-06 -4.27742886e-07 4.211756005e-07 5.295264621e-07 2.041090207e-06 -5.618657706e-06 -1.136217091e-06 7.556515485e-07 2.041090207e-06 8.114269157e-06 -3.811263552e-06 1.66250471e-06 -2.235553833e-06 -1.012178681e-06 -3.494722081e-06 1.66250471e-06 1.053660685e-06 -1.609776223e-06 -3.043803099e-07 -7.843328394e-07 -2.235553833e-06 -1.609776223e-06 2.537400832e-06 3.287450414e-07 6.199756425e-07 -1.012178681e-06 -3.043803099e-07 3.287450414e-07 3.26069179e-07 1.237118777e-06 -3.494722081e-06 -7.843328394e-07 6.199756425e-07 1.237118777e-06 4.87205572e-06 -0.7905873233 -0.5751703182 -0.1141390313 -0.002727157511 -0.004696504788 -0.01080141063 -0.00351131015 -0.0002315761012 -0.0001022589333 -0.0004074847207 -0.0001964434756 -6.272944592e-05 -3.175535408e-05 -0.1346443257 -0.03777911465 -0.02375321076 -0.03777911465 0.3983355468 0.2224905833 -0.02375321076 0.2224905833 0.3264803606 -0.01443791621 -0.007985103828 -0.005143598653 -0.007985103828 0.1339784779 0.0952516874 -0.005143598653 0.0952516874 0.09127652031 -0.0008352664592 -0.001094207106 -0.0005185460083 -0.001094207106 0.02959104364 0.0221921148 -0.0005185460083 0.0221921148 0.01836002205 -0.0009947209248 -0.0002983504484 0.0002159104247 -0.0002983504484 0.007087431037 0.004376374086 0.0002159104247 0.004376374086 0.004717177006 -0.0001285901106 -0.0003409013185 -0.0002702330616 -0.0003409013185 0.007523674213 0.005844123203 -0.0002702330616 0.005844123203 0.004719481702 -0.0001355041303 -9.063377656e-05 -0.0001419035165 -9.063377656e-05 0.0004640581621 0.0003896107819 -0.0001419035165 0.0003896107819 0.0004381818795 -0.0001191298491 -0.0001100618025 -0.0001640248331 -0.0001100618025 0.001008656027 0.0008345771988 -0.0001640248331 0.0008345771988 0.0007639372082 -9.690439909e-05 -4.619423091e-05 -7.285922854e-05 -4.619423091e-05 5.418785587e-05 4.066847775e-05 -7.285922854e-05 4.066847775e-05 0.0001318104723 -4.486842221e-05 -4.129887398e-05 -5.975910596e-05 -4.129887398e-05 0.0004410614151 0.0003584004362 -5.975910596e-05 0.0003584004362 0.0003219391467 -3.230998487e-05 -1.900681742e-05 -3.691113823e-05 -1.900681742e-05 3.86295307e-05 4.169050712e-05 -3.691113823e-05 4.169050712e-05 6.149288758e-05 -3.116374782e-05 -1.688231601e-05 -3.062153691e-05 -1.688231601e-05 2.31231441e-05 2.457312417e-05 -3.062153691e-05 2.457312417e-05 4.894238547e-05 -2.83694719e-05 -1.573738309e-05 -2.822331892e-05 -1.573738309e-05 3.512619955e-05 3.332401041e-05 -2.822331892e-05 3.332401041e-05 5.297726235e-05 -2.420182477e-05 -1.412157427e-05 -2.601501061e-05 -1.412157427e-05 3.932647306e-05 3.742398982e-05 -2.601501061e-05 3.742398982e-05 5.155601664e-05 -0.1094392979 -0.01199819165 -0.01180098417 -0.05196260183 -0.1790946243 -0.01199819165 0.1188983043 0.1119161886 -0.03228021304 0.0006926642273 -0.01180098417 0.1119161886 0.1283774583 0.003292939746 -0.02587591622 -0.05196260183 -0.03228021304 0.003292939746 0.252712575 0.01738557635 -0.1790946243 0.0006926642273 -0.02587591622 0.01738557635 0.3355887259 -0.04538742823 -0.001634531103 -0.001445266092 -0.02017443905 -0.0755860636 -0.001634531103 0.03039257935 0.02407717668 -0.01373853805 0.002815196625 -0.001445266092 0.02407717668 0.02020160683 -0.007224070929 0.0007434160059 -0.02017443905 -0.01373853805 -0.007224070929 0.07187545086 0.01894441287 -0.0755860636 0.002815196625 0.0007434160059 0.01894441287 0.1304030127 -0.01733312254 0.001649117649 0.001297539677 -0.007060214303 -0.02925434103 0.001649117649 0.0002352482106 0.0001931647172 -0.0006993552544 -0.00279191361 0.001297539677 0.0001931647172 0.0001703062421 -0.0005354668917 -0.002211124339 -0.007060214303 -0.0006993552544 -0.0005354668917 0.003026444335 0.01187461717 -0.02925434103 -0.00279191361 -0.002211124339 0.01187461717 0.04939670228 -0.001260051309 -0.0002145460333 -0.0001723807845 -0.0005854947448 -0.002078895338 -0.0002145460333 0.001907284423 0.001459524662 -0.0008733272773 0.000422182061 -0.0001723807845 0.001459524662 0.001124646808 -0.0005044467622 0.0002972312046 -0.0005854947448 -0.0008733272773 -0.0005044467622 0.004288274534 7.36207878e-05 -0.002078895338 0.000422182061 0.0002972312046 7.36207878e-05 0.003641911511 -0.003409755295 0.0003218108098 0.0002500277147 -0.001391506031 -0.005751283081 0.0003218108098 6.744140557e-05 8.600180802e-05 -0.0001123692678 -0.0005796522716 0.0002500277147 8.600180802e-05 0.0001345099353 -5.724844755e-05 -0.0004963089401 -0.001391506031 -0.0001123692678 -5.724844755e-05 0.0006083366651 0.002310471311 -0.005751283081 -0.0005796522716 -0.0004963089401 0.002310471311 0.009752221646 -0.0001250582819 3.700379473e-06 -2.841054845e-06 -5.439688134e-05 -0.0002044970738 3.700379473e-06 8.363559201e-05 0.000122371201 2.129794139e-05 -6.88356293e-05 -2.841054845e-06 0.000122371201 0.000211706571 7.263774824e-05 -0.0001237736508 -5.439688134e-05 2.129794139e-05 7.263774824e-05 0.0001344406465 1.669080798e-05 -0.0002044970738 -6.88356293e-05 -0.0001237736508 1.669080798e-05 0.0004252716502 -0.0003104925435 2.440806566e-05 1.516648633e-05 -0.000125621856 -0.0005201492432 2.440806566e-05 9.483207758e-05 0.000115301058 -8.349676907e-06 -8.611286944e-05 1.516648633e-05 0.000115301058 0.0001746886228 3.711259728e-05 -0.0001195571731 -0.000125621856 -8.349676907e-06 3.711259728e-05 0.0001966387012 0.0001430807147 -0.0005201492432 -8.611286944e-05 -0.0001195571731 0.0001430807147 0.0009414228396 -0.0001690659207 9.780919949e-06 5.231739782e-06 -7.075002055e-05 -0.0002821974202 9.780919949e-06 5.535951823e-05 6.721571445e-05 -3.70633401e-06 -4.255160506e-05 5.231739782e-06 6.721571445e-05 0.000101753115 2.26429003e-05 -6.34668709e-05 -7.075002055e-05 -3.70633401e-06 2.26429003e-05 0.0001162896154 7.85105313e-05 -0.0002821974202 -4.255160506e-05 -6.34668709e-05 7.85105313e-05 0.0005118797434 -0.0001112345647 8.648509412e-06 5.375726197e-06 -4.684161239e-05 -0.0001859776062 8.648509412e-06 1.308920365e-05 2.424907105e-05 5.884115407e-06 -3.006363824e-05 5.375726197e-06 2.424907105e-05 4.730367824e-05 1.751565024e-05 -4.040622244e-05 -4.684161239e-05 5.884115407e-06 1.751565024e-05 3.023436607e-05 6.435757613e-05 -0.0001859776062 -3.006363824e-05 -4.040622244e-05 6.435757613e-05 0.0003322700169 -1.424418338e-05 -1.842366046e-07 -1.286220801e-06 -6.754088775e-06 -2.269053978e-05 -1.842366046e-07 1.255460755e-05 2.105249329e-05 6.360428789e-06 -1.206926877e-05 -1.286220801e-06 2.105249329e-05 3.925270399e-05 1.562312063e-05 -2.305286611e-05 -6.754088775e-06 6.360428789e-06 1.562312063e-05 1.714852153e-05 -1.638567625e-06 -2.269053978e-05 -1.206926877e-05 -2.305286611e-05 -1.638567625e-06 5.350144281e-05 -1.481558655e-07 -1.620283638e-06 -2.402762598e-06 -5.624931289e-07 1.005284095e-06 -1.620283638e-06 1.83128509e-05 2.552170172e-05 4.177460859e-06 -9.553924936e-06 -2.402762598e-06 2.552170172e-05 4.281926385e-05 1.449316674e-05 -2.129937563e-05 -5.624931289e-07 4.177460859e-06 1.449316674e-05 2.649536822e-05 -1.478191417e-05 1.005284095e-06 -9.553924936e-06 -2.129937563e-05 -1.478191417e-05 1.439726699e-05 -1.861949623e-05 9.672677202e-08 -9.290428325e-07 -8.474825662e-06 -3.019701299e-05 9.672677202e-08 1.314447243e-05 2.011158379e-05 4.441219744e-06 -1.097187137e-05 -9.290428325e-07 2.011158379e-05 3.572444252e-05 1.301788733e-05 -2.057856494e-05 -8.474825662e-06 4.441219744e-06 1.301788733e-05 2.047775413e-05 1.8652455e-06 -3.019701299e-05 -1.097187137e-05 -2.057856494e-05 1.8652455e-06 6.447965498e-05 -6.742832418e-06 -6.685855461e-07 -1.382118179e-06 -3.532225181e-06 -1.033898016e-05 -6.685855461e-07 9.797878673e-06 1.604183602e-05 4.719934031e-06 -8.098248727e-06 -1.382118179e-06 1.604183602e-05 2.955596373e-05 1.168899719e-05 -1.649740572e-05 -3.532225181e-06 4.719934031e-06 1.168899719e-05 1.32238534e-05 -4.01035801e-06 -1.033898016e-05 -8.098248727e-06 -1.649740572e-05 -4.01035801e-06 2.880017872e-05 -0.6360427687 -0.3147077698 -0.100676169 -0.03623449007 -0.01353462287 -0.004891783702 -0.002415617226 -0.0006606059752 -0.0007949910045 -0.0001847042216 -0.0001432072344 -6.174491084e-05 -7.773589114e-05 -0.4393365641 0.03690324922 -0.1909066056 0.03690324922 0.2216840387 0.02727904664 -0.1909066056 0.02727904664 0.3128714059 -0.1735966711 0.04997386242 -0.07727031547 0.04997386242 0.02430090416 -0.03500058281 -0.07727031547 -0.03500058281 0.05259851265 -0.04131416404 0.01349545205 -0.02032121444 0.01349545205 0.004898354848 -0.007052066927 -0.02032121444 -0.007052066927 0.01075683889 -0.006571224431 0.001704966516 -0.002212147522 0.001704966516 0.001931149844 -0.00127750689 -0.002212147522 -0.00127750689 0.002625168069 -0.01047335 0.003301599512 -0.00536243187 0.003301599512 0.001154051387 -0.001643089715 -0.00536243187 -0.001643089715 0.002834464366 -0.0001825810525 -2.633810563e-05 -0.0001201805972 -2.633810563e-05 2.070101629e-05 -1.707744e-06 -0.0001201805972 -1.707744e-06 0.0001383493105 -0.001307065235 0.0003078533851 -0.0007313337155 0.0003078533851 0.0002341074069 -7.530581707e-05 -0.0007313337155 -7.530581707e-05 0.0005202440505 -0.000266234927 -2.693633684e-05 -0.0001879940718 -2.693633684e-05 0.000102976572 6.521941591e-05 -0.0001879940718 6.521941591e-05 0.0002339686255 -0.0005013815406 0.0001151293651 -0.0002883418195 0.0001151293651 6.943233295e-05 -3.639565118e-05 -0.0002883418195 -3.639565118e-05 0.0001923181587 -5.258236248e-05 -1.333747601e-05 -4.764594163e-05 -1.333747601e-05 2.378267391e-05 2.59850744e-05 -4.764594163e-05 2.59850744e-05 5.80642989e-05 -3.053888074e-05 -2.499419774e-05 -3.534700231e-05 -2.499419774e-05 2.581749746e-05 3.177960896e-05 -3.534700231e-05 3.177960896e-05 5.91629082e-05 -7.782796653e-05 -6.418305676e-06 -5.919575079e-05 -6.418305676e-06 2.489443566e-05 1.938935244e-05 -5.919575079e-05 1.938935244e-05 6.473808266e-05 -4.859257709e-05 -9.712238867e-06 -4.15082683e-05 -9.712238867e-06 1.844306396e-05 1.883245579e-05 -4.15082683e-05 1.883245579e-05 4.858443031e-05 -0.3067958248 0.0659496993 -0.07084584212 0.02160507889 0.02031326156 0.0659496993 0.2692778179 0.02024493907 0.09020099048 -0.1678886198 -0.07084584212 0.02024493907 0.3636899068 0.1516431401 0.0006926408992 0.02160507889 0.09020099048 0.1516431401 0.09140014658 -0.04392866881 0.02031326156 -0.1678886198 0.0006926408992 -0.04392866881 0.1202094022 -0.1197800415 0.03110812417 -0.04426925118 0.003519314508 0.004843973722 0.03110812417 0.06025797243 -0.05563680363 -0.0006747664488 -0.02982716611 -0.04426925118 -0.05563680363 0.08711742763 0.01731689529 0.03757845645 0.003519314508 -0.0006747664488 0.01731689529 0.009082728032 0.007852977016 0.004843973722 -0.02982716611 0.03757845645 0.007852977016 0.02385045005 -0.02799556325 0.01852182265 -0.0291557355 -0.004305737488 -0.009150077171 0.01852182265 0.01313691772 -0.02023891656 -0.0029802051 -0.00665862042 -0.0291557355 -0.02023891656 0.03191756743 0.004900211508 0.01038609407 -0.004305737488 -0.0029802051 0.004900211508 0.0008234336114 0.00160379005 -0.009150077171 -0.00665862042 0.01038609407 0.00160379005 0.003485040903 -0.00558249344 0.001120408393 -0.001403089746 0.0003427142344 0.0004787393061 0.001120408393 0.003196924128 -0.001917660147 0.0003281836142 -0.001668289607 -0.001403089746 -0.001917660147 0.003945107358 0.001057901971 0.001564715788 0.0003427142344 0.0003281836142 0.001057901971 0.0006588510227 0.0002166228064 0.0004787393061 -0.001668289607 0.001564715788 0.0002166228064 0.00127775588 -0.004443649937 0.002911762683 -0.004673961379 -0.0007059223066 -0.001421365255 0.002911762683 0.002022845816 -0.00323275446 -0.0005019505208 -0.001022497243 -0.004673961379 -0.00323275446 0.005183905935 0.0008006033288 0.00160882571 -0.0007059223066 -0.0005019505208 0.0008006033288 0.0001257280747 0.0002575874728 -0.001421365255 -0.001022497243 0.00160882571 0.0002575874728 0.000555857191 -0.0006463800668 0.0004211035652 -0.0006264317665 -8.218481198e-05 -0.0002050911096 0.0004211035652 0.0003267892296 -0.0004214030526 -5.175233072e-05 -0.0001938134436 -0.0006264317665 -0.0004214030526 0.0007856955689 0.0001332237868 0.0001640358271 -8.218481198e-05 -5.175233072e-05 0.0001332237868 2.71725225e-05 8.619044017e-06 -0.0002050911096 -0.0001938134436 0.0001640358271 8.619044017e-06 0.000148461038 -0.0003750374111 0.0001245088581 -0.0002026236788 -1.351015976e-05 -2.505777561e-05 0.0001245088581 0.0003128888288 1.687871773e-05 9.939316654e-05 -0.0002097759915 -0.0002026236788 1.687871773e-05 0.0005848104832 0.000225752857 -2.221284958e-05 -1.351015976e-05 9.939316654e-05 0.000225752857 0.0001174497187 -6.509913417e-05 -2.505777561e-05 -0.0002097759915 -2.221284958e-05 -6.509913417e-05 0.0001527217383 -0.000454123912 0.0002722492264 -0.0004495037841 -6.610359528e-05 -0.0001217458492 0.0002722492264 0.0002658328198 -0.0002252276018 3.045610434e-06 -0.0001540302337 -0.0004495037841 -0.0002252276018 0.0006488448318 0.0001579527003 8.838603456e-05 -6.610359528e-05 3.045610434e-06 0.0001579527003 5.709178197e-05 -1.48463858e-05 -0.0001217458492 -0.0001540302337 8.838603456e-05 -1.48463858e-05 9.668950456e-05 -7.814347816e-05 5.261489521e-05 -8.569278277e-05 -1.337826952e-05 -2.585971803e-05 5.261489521e-05 5.030429258e-05 -3.230360394e-05 3.261371002e-06 -3.382931743e-05 -8.569278277e-05 -3.230360394e-05 0.0001386524973 3.610540267e-05 2.172606834e-07 -1.337826952e-05 3.261371002e-06 3.610540267e-05 1.259006984e-05 -9.155257772e-06 -2.585971803e-05 -3.382931743e-05 2.172606834e-07 -9.155257772e-06 2.66847513e-05 -4.125815098e-05 2.12059777e-05 -3.047869201e-05 -2.983680047e-06 -8.985005249e-06 2.12059777e-05 4.309415304e-05 9.732721508e-06 1.58713071e-05 -3.181798034e-05 -3.047869201e-05 9.732721508e-06 8.799346342e-05 3.391490555e-05 -1.491095472e-05 -2.983680047e-06 1.58713071e-05 3.391490555e-05 1.67397769e-05 -1.408953894e-05 -8.985005249e-06 -3.181798034e-05 -1.491095472e-05 -1.408953894e-05 2.494056054e-05 -1.920464842e-05 -2.645517058e-06 -1.891832398e-06 7.03521555e-07 6.630021622e-06 -2.645517058e-06 3.352163546e-05 3.563066053e-05 2.209457919e-05 -2.69303381e-05 -1.891832398e-06 3.563066053e-05 7.305567331e-05 3.75169282e-05 -2.844377468e-05 7.03521555e-07 2.209457919e-05 3.75169282e-05 2.038776314e-05 -1.718365612e-05 6.630021622e-06 -2.69303381e-05 -2.844377468e-05 -1.718365612e-05 2.270641897e-05 -3.565996873e-05 1.772463715e-05 -3.155965412e-05 -4.477417713e-06 -6.26190176e-06 1.772463715e-05 3.419846951e-05 6.226926802e-06 1.21766593e-05 -2.47894348e-05 -3.155965412e-05 6.226926802e-06 8.387558161e-05 3.085640454e-05 -1.385579734e-05 -4.477417713e-06 1.21766593e-05 3.085640454e-05 1.438081082e-05 -1.177909988e-05 -6.26190176e-06 -2.47894348e-05 -1.385579734e-05 -1.177909988e-05 1.962024852e-05 -8.72865766e-06 1.566109028e-06 -3.532875112e-06 -7.11883564e-08 7.950164795e-07 1.566109028e-06 1.907127044e-05 2.006858682e-05 1.233142196e-05 -1.619897024e-05 -3.532875112e-06 2.006858682e-05 4.350725739e-05 2.10911929e-05 -1.889017509e-05 -7.11883564e-08 1.233142196e-05 2.10911929e-05 1.099994612e-05 -1.096009748e-05 7.950164795e-07 -1.619897024e-05 -1.889017509e-05 -1.096009748e-05 1.430186441e-05 diff --git a/tests/09_DeePKS/100_NO_KP_deepks_UT/phialpha_ref.dat b/tests/09_DeePKS/100_NO_KP_deepks_UT/phialpha_ref.dat deleted file mode 100644 index 07670dfcad..0000000000 --- a/tests/09_DeePKS/100_NO_KP_deepks_UT/phialpha_ref.dat +++ /dev/null @@ -1,399 +0,0 @@ -iat : 0 -ad : 5 2.716543093 -R : 0 -1 0 -iw : 5 -0.4974944151 0.04342413379 -0.06274472755 -0.03121090267 0.02236979128 -0.0009018112254 -0.003885978763 -0.008533908769 0.005837944037 -0.003717346206 0.004217139578 -0.004237582556 -0.003572728059 -0.4746418687 -0.1543594442 0.2407658544 -0.144601083 -0.04702607222 -0.0733500468 0.01966779969 0.00639621329 -0.009976647464 0.04770030369 0.01551273255 --0.02419635757 -0.0105294463 -0.003424307011 0.005341145191 -0.00133167364 -0.0004330768448 -0.0006755020211 -0.009052425648 -0.002943961509 0.004591914745 0.009409305165 0.00306002317 --0.004772944712 -0.004372908615 -0.001422124317 0.002218192596 0.004258185323 0.001384814875 --0.002159998296 -0.005476993404 -0.001781186434 0.002778248366 0.004528222262 0.001472634249 --0.002296976676 -0.003537594249 -0.001150469687 0.001794472755 0.2387791975 0.164333142 --0.2563225693 -0.03828923693 -0.08335929035 0.1268270149 0.08728516587 -0.1361451361 --0.02033723907 -0.04427609303 0.01697713645 0.01168404201 -0.01822446545 -0.002722354404 --0.005926823029 -0.02956976541 -0.02035056869 0.0317422888 0.004741634807 0.01032298746 --0.002572351948 -0.001770349689 0.002761345492 0.0004124873282 0.0008980239282 0.00120871933 -0.0008318674637 -0.001297525277 -0.0001938231693 -0.0004219713722 0.006953716134 0.004785701741 --0.007464613353 -0.001115057289 -0.002427585185 -0.004451762736 -0.003063801896 0.004778838671 -0.0007138586609 0.001554137824 0.001468208053 0.00101045336 -0.001576078923 -0.0002354332646 --0.0005125604853 -0.002339780149 -0.001610288617 0.002511686386 0.0003751934735 0.0008168316791 -0.002851653194 0.001962571004 -0.00306116731 -0.0004572744441 -0.0009955297156 -0.002205772355 --0.001518061479 0.002367832891 0.0003537047666 0.0007700487316 0.001910150281 0.001314607808 --0.002050491135 -0.000306300538 -0.0006668452425 -ad : 8 2.795323233 -R : 0 0 0 -iw : 4 -0.4869019083 0.02582737634 -0.06376690892 -0.02611661836 0.02440564705 -0.002836222054 -0.003107389672 -0.008265514871 0.006619786551 -0.003989519755 0.004065414843 -0.00441519644 -0.003862132316 0.01917894541 -0.4364688769 -0.3434449787 0.005119403409 -0.1165058979 --0.09167518634 -0.001136738908 0.02586957435 0.02035603427 -0.001809597843 0.04118230284 -0.03240518597 0.0006045960108 -0.01375922065 -0.01082674045 1.962043237e-05 -0.000446516109 --0.0003513508607 0.0003045258281 -0.006930310468 -0.005453264728 -0.0003945146954 0.008978251008 -0.007064731049 0.0002194550701 -0.004994294832 -0.00392986894 -0.0001746415319 0.003974441329 -0.003127375146 0.0002152415301 -0.00489840431 -0.003854415408 -0.0001936353848 0.004406697923 -0.003467505599 0.0001550695274 -0.003529027326 -0.002776891502 -0.2035252887 -0.0191789939 --0.01509140629 0.0831110926 0.343445847 -0.09893532478 -0.009323067432 -0.007336057313 -0.04040098895 0.1669518645 -0.007827644973 -0.0007376299829 -0.0005804201106 0.003196478091 -0.01320903252 0.02534970505 0.00238880309 0.001879681393 -0.01035174399 -0.04277724393 --0.0003131820785 -2.951238744e-05 -2.322246055e-05 0.000127890273 0.0005284900216 -0.001604043868 --0.0001511554056 -0.0001189399011 0.0006550234583 0.002706799772 -0.005243590793 -0.0004941243248 --0.0003888124153 0.002141260001 0.008848480171 0.004421446516 0.0004166504139 0.0003278503924 --0.001805531161 -0.007461124136 -0.001549862276 -0.0001460496597 -0.0001149223345 0.0006328979951 -0.002615369155 0.001759795347 0.0001658324842 0.000130488878 -0.0007186257539 -0.002969628037 --0.002499953638 -0.000235580531 -0.0001853716376 0.001020874996 0.004218633961 0.00210782742 -0.0001986289247 0.0001562954667 -0.000860747286 -0.003556926897 -0.001623928807 -0.0001530292422 --0.00012041437 0.0006631436236 0.002740355305 -ad : 13 0 -R : 0 0 0 -iw : 0 -0.5610279929 0.6254141599 0.4536157734 0.2610953243 0.127462977 0.04380525785 -0.00294213453 -0.01814748859 -0.0227270876 -0.02296713374 -0.01757592823 -0.01386036811 --0.008485763054 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 -iw : 1 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0.4193891562 0 0 0.5177776666 0 -0 0.4686526354 0 0 0.371825414 0 -0 0.2934169866 0 0 0.2211005088 0 -0 0.1719768419 0 0 0.1264110105 0 -0 0.09633444148 0 0 0.0671320704 0 -0 0.04871801761 0 0 0.02997287934 0 -0 0.02072338012 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 -iw : 2 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0.4193891562 0 0 0.5177776666 -0 0 0.4686526354 0 0 0.371825414 -0 0 0.2934169866 0 0 0.2211005088 -0 0 0.1719768419 0 0 0.1264110105 -0 0 0.09633444148 0 0 0.0671320704 -0 0 0.04871801761 0 0 0.02997287934 -0 0 0.02072338012 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 -iw : 3 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0.4193891562 0 0 -0.5177776666 0 0 0.4686526354 0 0 -0.371825414 0 0 0.2934169866 0 0 -0.2211005088 0 0 0.1719768419 0 0 -0.1264110105 0 0 0.09633444148 0 0 -0.0671320704 0 0 0.04871801761 0 0 -0.02997287934 0 0 0.02072338012 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 -iat : 1 -ad : 2 4.049413304 -R : 0 -1 0 -iw : 5 -0.3081647953 -0.1489748547 0.03076805933 -0.001523706378 0.006426347822 -0.01410552495 -0.01543931492 -0.01300999451 0.01041755272 -0.008471659874 0.007650252678 -0.007420803177 -0.006889940756 -0.2794011989 0.1658896586 0.335272523 0.08681977944 -0.0515477515 --0.1041809649 -0.00652757487 0.003875635362 0.007832881551 0.0001753964826 -0.0001041386462 --0.0002104701822 -0.008804036906 0.00522724556 0.01056456335 0.01356757091 -0.008055511984 --0.01628065215 -0.01352379648 0.00802952167 0.01622812424 0.0106049444 -0.006296503423 --0.01272559487 -0.008146296935 0.004836723759 0.009775296375 0.007165656686 -0.00425448547 --0.008598559368 -0.006638772881 0.003941657269 0.007966315615 0.006341379538 -0.003765085084 --0.007609453093 -0.006022941141 0.00357601776 0.007227337178 0.01681450711 -0.1666197475 --0.3367480747 -0.1525796667 0.1999383802 -0.00333731776 0.0330704337 0.06683724495 -0.03028377985 -0.03968346517 -0.0003603349676 0.003570661984 0.007216512847 0.003269782985 --0.004284680442 7.545805912e-05 -0.0007477354333 -0.001511216235 -0.0006847281003 0.0008972586598 -0.0006741706264 -0.006680549054 -0.01350177314 -0.006117617888 0.00801644569 -0.0008869281327 -0.008788823875 0.01776271758 0.008048240605 -0.0105463082 0.0007581998766 -0.007513218864 --0.01518464663 -0.006880123438 0.009015622892 -0.0005785214213 0.005732733795 0.01158618409 -0.005249669531 -0.006879097624 0.000437827076 -0.004338553393 -0.008768465466 -0.003972968634 -0.005206125629 -0.0003928324364 0.003892688673 0.007867347271 0.00356467435 -0.004671102192 -0.000393880306 -0.003903072312 -0.007888333203 -0.003574183021 0.004683562228 -0.0003681517722 -0.003648120932 0.007373061827 0.003340714916 -0.004377628707 0.0003394439779 -0.003363647208 --0.006798124101 -0.003080212145 0.004036269316 -ad : 5 2.795323233 -R : 0 0 0 -iw : 0 -0.3833026496 0.04192197847 -0.09426235355 -0.02183070322 0.01771206218 0.0006126649246 -0.001953735908 -0.0007767780669 0.0007291998248 -0.002900800574 0.001820827427 -0.0005479057962 -0.001108995715 -0.01731347881 0.3940151289 0.3100393286 -0.007033173254 0.1600589169 -0.1259458216 0.002121608906 -0.04828296011 -0.03799249176 0.001746748422 -0.03975199395 --0.03127971647 -0.0003020539422 0.006874056004 0.005408999687 -1.186097803e-05 0.0002699286976 -0.0002123992356 -0.0001048958923 0.002387190291 0.001878412327 -1.569053401e-05 0.0003570806219 -0.0002809766127 -9.650796572e-05 0.002196300291 0.001728206401 0.0001498256656 -0.003409689041 --0.00268298759 -4.554417932e-05 0.001036481223 0.0008155776744 2.882297753e-05 -0.0006559449624 --0.000516144485 -6.738082868e-05 0.001533433355 0.001206615211 -0.210199324 -0.01980791468 --0.01558628621 0.08583648544 0.3547081807 -0.1327199893 -0.01250673015 -0.009841191201 -0.05419721248 0.2239629749 -0.003297314971 -0.0003107190469 -0.0002444960044 0.001346483533 -0.005564169152 0.0226293163 0.002132450086 0.001677964485 -0.009240852644 -0.03818662906 -0.0007735155422 7.289143262e-05 5.735620076e-05 -0.0003158709282 -0.001305295781 0.0009690780874 -9.132006567e-05 7.185716937e-05 -0.0003957303742 -0.001635304618 -0.0001956512363 -1.843699076e-05 --1.450754506e-05 7.989566367e-05 0.0003301585026 -0.0003120322215 -2.940403186e-05 -2.313719862e-05 -0.0001274207201 0.0005265496553 -0.002336644164 -0.0002201912325 -0.0001732622351 0.0009541863357 -0.003943051692 0.001508095136 0.0001421137767 0.0001118252998 -0.0006158420672 -0.002544887737 --5.166350976e-06 -4.868457109e-07 -3.830850805e-07 2.109718537e-06 8.718139147e-06 0.0005877294166 -5.53840703e-05 4.358015395e-05 -0.0002400037572 -0.0009917845031 -0.0009731034956 -9.169939582e-05 --7.215565351e-05 0.0003973741801 0.001642097434 -iw : 1 -0.005992492998 0.01110818264 0.000361166697 -0.003941958994 -0.001239529925 0.00166720488 -0.0005385812647 -0.0004116000897 -0.0004980116011 0.0002785666072 9.502390894e-05 4.187858265e-05 --0.0001507556129 0.2651418655 0.00696304543 0.005479022941 0.08775319231 0.01299613935 -0.01022629342 -0.02511483007 0.004371500502 0.003439809747 -0.02797941457 -0.003030102203 --0.002384301474 0.007568037333 -0.002720987209 -0.002141067654 0.004305943008 0.0008252999931 -0.0006494051549 0.002336551682 0.001153385307 0.0009075661821 -0.004814283344 5.910696506e-06 -4.650959423e-06 0.00187466465 -0.0006390520911 -0.0005028519637 -0.001071475857 7.189579825e-06 -5.657276431e-06 0.001913675707 0.0001638022354 0.0001288913328 -0.001825033169 0.0001129011941 -8.883874721e-05 0.00137918433 -0.0001257427565 -9.894340836e-05 -0.01843511634 0.2836394571 -0.2231878433 0.001643365027 0.006790993549 -0.01592801892 0.1520497021 0.1196435976 -0.003337957851 0.01379367935 -0.005144062954 0.006908152702 0.005435829411 0.001948168051 -0.008050552648 0.002627508427 -0.03870594655 -0.03045661145 -0.0002697015962 -0.001114506984 -0.002236903799 -0.002532813566 -0.001992999152 -0.000856880687 -0.003540948677 -1.296955248e-05 -0.005331488055 0.004195196722 -0.0001046696396 -0.0004325337556 -0.001120773281 0.006620566202 -0.005209535751 0.0003189756278 0.00131812555 -5.857161232e-05 -0.005203670772 -0.004094620928 -0.0001311092761 0.0005417921358 0.0002663321349 0.0008652315434 0.0006808261591 -0.000126083153 --0.0005210223321 0.0002411549764 -0.001607234708 -0.001264687402 -6.486605029e-05 -0.0002680505681 --0.0002014594754 0.002662866862 0.002095334401 2.696503021e-05 0.0001114295018 9.127525398e-06 --0.001993768967 -0.001568840246 3.740396616e-05 0.0001545670552 -4.817355432e-05 0.001532622845 -0.001205977444 -1.202580146e-05 -4.969507006e-05 -iw : 2 --0.1363754175 -0.2527967986 -0.008219326932 0.0897099594 0.02820886251 -0.03794176509 --0.01225687621 0.009367075456 0.01133360357 -0.006339538049 -0.002162526558 -0.000953060637 -0.003430852512 0.00696304543 0.1069848615 -0.1246900149 0.01299613935 -0.2074381122 --0.2327270195 0.004371500502 -0.1244080818 -0.0782821925 -0.003030102203 0.04084562629 -0.05426124138 -0.002720987209 0.06937191169 0.04872579664 0.0008252999931 -0.01443973022 --0.01477897415 0.001153385307 -0.02386117551 -0.02065412793 5.910696506e-06 -0.004948537538 --0.0001058451855 -0.0006390520911 0.0163899461 0.01144375914 7.189579825e-06 -0.001234778311 --0.0001287466561 0.0001638022354 -0.001806890396 -0.002933271566 0.0001129011941 -0.00438944479 --0.002021766441 -0.0001257427565 0.004235276228 0.002251725389 -0.07239376297 -0.003849738079 -0.006790993549 0.2466194609 0.06893878595 0.09779326418 0.01081468468 0.01379367935 -0.0768557038 -0.1936628458 0.1043231504 0.009907780998 0.008050552648 -0.03697812496 --0.1774225621 0.007352389374 0.0002871415457 -0.001114506984 -0.0326303931 -0.005141957492 --0.04617735612 -0.004380049925 -0.003540948677 0.01677009191 0.07843529041 -0.008897415068 --0.0007828982005 -0.0004325337556 0.007689375436 0.01401966844 0.01391158361 0.001380997139 -0.00131812555 -0.000564980733 -0.02473006325 0.01029357436 0.000915865257 0.0005417921358 --0.008157162433 -0.01640076224 -0.007509339809 -0.0006988847873 -0.0005210223321 0.003705499999 -0.01251520695 -0.002678396271 -0.000269372002 -0.0002680505681 -0.0001460006567 0.004823751227 --3.824214848e-05 2.432791059e-05 0.0001114295018 0.002055427066 -0.0004356495393 0.003230637438 -0.0002836615932 0.0001545670552 -0.002836366115 -0.005079640602 -0.001553454221 -0.0001303785162 --4.969507006e-05 0.001803527432 0.002334739775 -iw : 3 --0.1073099478 -0.1989186302 -0.006467555221 0.07059022242 0.02219675376 -0.02985529872 --0.009644588219 0.007370685979 0.00891809117 -0.004988402669 -0.001701630808 -0.0007499363816 -0.002699640525 0.005479022941 -0.1246900149 0.1673327938 0.01022629342 -0.2327270195 --0.09480203266 0.003439809747 -0.0782821925 -0.0865207781 -0.002384301474 0.05426124138 -0.01458407097 -0.002141067654 0.04872579664 0.04578942129 0.0006494051549 -0.01477897415 --0.007286947914 0.0009075661821 -0.02065412793 -0.01386491465 4.650959423e-06 -0.0001058451855 --0.004897310195 -0.0005028519637 0.01144375914 0.01085135343 5.657276431e-06 -0.0001287466561 --0.001172467031 0.0001288913328 -0.002933271566 -0.0003872348269 8.883874721e-05 -0.002021766441 --0.003410942826 -9.894340836e-05 0.002251725389 0.003145477886 -0.05696459863 0.006790993549 --0.007136468133 -0.2529146364 0.1624096718 0.07695074567 0.01379367935 0.004138768977 --0.1800238423 -0.09418890393 0.08208892794 0.008050552648 0.006011444895 -0.04067619759 --0.1368067193 0.005785386647 -0.001114506984 0.000826544738 0.03533523757 -0.01881026541 --0.03633565171 -0.003540948677 -0.002666288551 0.01749309468 0.06067862148 -0.007001123541 --0.0004325337556 -0.0005735589214 -0.002301829961 0.01305288757 0.01094663054 0.00131812555 -0.0007430458835 -0.01097947873 -0.0169100227 0.008099721684 0.0005417921358 0.0006536467049 -0.001722988175 -0.01487550212 -0.005908886493 -0.0005210223321 -0.0004467184813 0.001599889168 -0.01016628963 -0.002107554052 -0.0002680505681 -0.0001396399014 0.002438047931 0.003177884373 --3.00916619e-05 0.0001114295018 -2.960214984e-05 -0.002583104228 0.0006736771398 0.002542096963 -0.0001545670552 0.0002088536609 0.0008922407417 -0.004753031036 -0.001222369063 -4.969507006e-05 --0.0001063269132 -0.0009884429909 0.002419757051 -ad : 13 0 -R : 0 0 0 -iw : 4 -0.7032204055 0.5544559883 0.363270429 0.1985231277 0.1293770322 0.07072134775 -0.0546083141 0.0295329376 0.02595975093 0.0128918805 0.01275414576 0.005221808601 -0.006204537017 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 -iat : 2 -ad : 9 2.716543093 -R : 0 1 0 -iw : 0 -0.3920975068 0.0610492225 -0.09242817617 -0.02878085824 0.01578740862 0.001770631289 -0.001866859518 -0.00035289801 0.001204909314 -0.003038929755 0.001239073499 -0.0004283101106 -0.00128502048 0.4291374145 0.1395608292 -0.2176833589 0.1951604878 0.06346862005 --0.09899670609 -0.0412743795 -0.01342294201 0.02093675653 -0.04692716416 -0.01526129795 -0.02380417641 0.003981474343 0.001294825019 -0.002019634455 0.0006316721588 0.0002054276493 --0.0003204207151 0.002038081274 0.0006628094012 -0.001033832899 0.0003846623899 0.0001250969976 --0.0001951230497 0.00320056058 0.001040862142 -0.001623509752 -0.00321348701 -0.001045065978 -0.001630066786 0.0004641024213 0.0001509318847 -0.0002354196361 -0.0009321542761 -0.0003031481744 -0.0004728426536 0.00178191133 0.0005794997464 -0.0009038886623 0.2469817752 0.169978338 --0.2651277995 -0.03960455436 -0.0862228608 0.1689251238 0.1162580185 -0.1813362396 --0.02708784583 -0.05897280246 0.0140731935 0.009685484039 -0.0151071666 -0.00225669508 --0.004913038637 -0.02635092796 -0.01813529333 0.0282869598 0.00422548084 0.009199271452 --0.002766213191 -0.001903769298 0.002969449935 0.0004435737843 0.0009657020835 -0.001095850997 --0.0007541889724 0.001176364383 0.0001757242629 0.000382568341 -0.0003843621107 -0.0002645265333 -0.0004126016203 6.163406226e-05 0.0001341831831 -0.0002008329271 -0.0001382176768 0.0002155883445 -3.220439473e-05 7.011201336e-05 0.00316105214 0.002175506224 -0.003393298139 -0.0005068878513 --0.001103542796 -0.001090212609 -0.0007503085083 0.001170311736 0.0001748201239 0.0003805999449 --0.0002013070915 -0.0001385440072 0.0002160973463 3.228042896e-05 7.027754707e-05 -0.0009699524222 --0.0006675427795 0.0010412159 0.000155535903 0.0003386163721 0.001100796393 0.0007575925036 --0.001181673122 -0.0001765172777 -0.0003842948093 -iw : 1 --0.1466801853 -0.2853950475 -0.03037430083 0.09524596444 0.04356065125 -0.03565841288 --0.01983968765 0.005649692562 0.01476577383 -0.00367605674 -0.003168065626 -0.002582074219 -0.00370485933 0.09106243141 -0.05905704993 0.09211565354 -0.2526049438 -0.1153525052 -0.1799238434 -0.1643664947 -0.04701606712 0.07333444109 0.03552465569 0.02163980561 --0.03375320709 0.08765426134 0.02708156576 -0.04224112332 -0.004299131807 -0.003011783119 -0.004697701133 -0.02968488511 -0.01084260793 0.0169120184 -0.0125926086 -0.002580969806 -0.004025729709 0.01750674697 0.005308276755 -0.008279712296 0.002776997048 0.001275683871 --0.001989778589 -0.001177663457 -0.001057721539 0.001649806601 -0.006183675685 -0.001467655855 -0.002289211507 0.003788479679 0.0008234982187 -0.001284471146 0.2452991435 0.02304765064 --0.03594912722 0.0181576516 0.03953092496 -0.03068122092 -0.1064105638 0.1659764354 -0.0385600313 0.0839488353 -0.1345922263 -0.1020311087 0.1591454749 0.02529045146 -0.05505970491 -0.04591903311 -0.01188559 0.01853883477 -0.0004129932264 -0.0008991253164 -0.05334660952 0.04047513865 -0.06313207066 -0.01003760831 -0.02185282269 0.02358382917 -0.01408926884 -0.02197607583 -0.002937105114 -0.006394355638 -0.009477792424 -0.01068259364 -0.01666243227 0.00316040539 0.006880501458 -0.01965860016 -0.01141940818 0.01781169646 -0.002320129078 0.005051140451 0.00606564072 0.004048095337 -0.00631411403 -0.000922793642 --0.00200900904 0.004029066152 0.003799701287 -0.005926675438 -0.001051048342 -0.002288231653 -0.003396743817 0.0009715688696 -0.001515427904 -5.877441576e-06 -1.279574622e-05 -0.005225882505 --0.002722033161 0.004245756669 0.0004930774212 0.001073476183 0.001815162483 0.0005045731105 --0.0007870200405 2.624053752e-06 5.712813212e-06 -iw : 2 --0.04770222218 -0.09281402215 -0.009878100742 0.03097517329 0.01416646604 -0.01159655976 --0.006452113395 0.001837350351 0.004802013459 -0.001195499413 -0.001030294379 -0.0008397226785 -0.001204866374 -0.05905704993 0.2534516369 0.02995715722 -0.1153525052 0.06457990862 -0.05851347363 -0.04701606712 -0.03508638683 0.02384927314 0.02163980561 -0.02397833073 --0.01097696312 0.02708156576 0.0131880638 -0.01373733914 -0.003011783119 0.003982370034 -0.001527750887 -0.01084260793 0.0001290403724 0.005499998911 -0.002580969806 -0.005495714388 -0.001309217415 0.005308276755 0.002910575207 -0.002692665507 0.001275683871 -0.000730751653 --0.0006471007665 -0.001057721539 0.00173075409 0.000536537644 -0.001467655855 -0.002148061504 -0.0007444800789 0.0008234982187 0.001524106136 -0.0004177260063 -0.09512515864 0.2851553916 -0.03953092496 0.1068833641 -0.1446473352 -0.1123157861 0.1278594629 0.0839488353 -0.07162499965 -0.06485772716 -0.05505138322 -0.01527382987 0.05505970491 0.01473746299 -0.007747771406 0.008723100914 -0.04142105765 -0.0008991253164 -0.01379242149 0.02101116019 -0.02186124872 0.005999612511 -0.02185282269 -0.005869513873 -0.003043351056 0.005100186976 -0.008661298337 -0.006394355638 0.0005283575446 -0.004393512313 -0.008073225486 0.004449189534 -0.006880501458 0.003909317611 -0.002256886697 -0.003861530486 -0.007732895388 0.005051140451 --0.0007071376233 0.003922572549 0.001820950054 0.001557276127 -0.00200900904 -0.0002125362163 --0.0007899406731 0.00254227761 -0.0007201001259 -0.002288231653 -0.001053095184 0.0003652765032 --0.0005344517276 0.002918127701 -1.279574622e-05 0.0009444321275 -0.001480243433 -0.0006502460715 --0.002551007045 0.001073476183 -0.00044544485 0.001294018567 -0.0003031394382 0.001582485971 -5.712813212e-06 0.000516688632 -0.0008027285664 -iw : 3 -0.07440468796 0.1447689026 0.01540760513 -0.04831427128 -0.02209648602 0.0180880129 -0.010063839 -0.002865851385 -0.007490055948 0.001864708952 0.001607026428 0.001309777637 --0.001879319295 0.09211565354 0.02995715722 0.2259313284 0.1799238434 0.05851347363 -0.01082618192 0.07333444109 0.02384927314 -0.05699565372 -0.03375320709 -0.01097696312 --0.01389428275 -0.04224112332 -0.01373733914 0.0258079465 0.004697701133 0.001527750887 -0.002578893219 0.0169120184 0.005499998911 -0.004923564095 0.004025729709 0.001309217415 --0.006698434219 -0.008279712296 -0.002692665507 0.005384207291 -0.001989778589 -0.0006471007665 --0.0001362889491 0.001649806601 0.000536537644 0.001237860811 0.002289211507 0.0007444800789 --0.002831982253 -0.001284471146 -0.0004177260063 0.001907852445 0.1483737533 0.03953092496 -0.2488400884 0.1482926712 0.08092589438 0.1751872478 0.0839488353 0.05073940028 -0.07259905156 0.01650108459 0.08586771857 0.05505970491 -0.0658547328 -0.002670452161 --0.02141677889 -0.01360606638 -0.0008991253164 -0.0405950712 -0.02109407284 -0.0132020225 --0.0340986083 -0.02185282269 0.02607482913 0.001028197553 0.008479859024 -0.007955139259 --0.006394355638 0.01453550857 0.003803858136 0.004727128329 0.01259240756 0.006880501458 --0.001871621247 0.002891370709 -0.000608674528 0.006023115018 0.005051140451 -0.01237315354 --0.003456782682 -0.004023903558 -0.002840270628 -0.00200900904 0.003402863411 0.000604680322 -0.001106653541 -0.003965378625 -0.002288231653 0.001381996558 -0.0005762853094 0.0004494424841 -0.000833623932 -1.279574622e-05 0.002929882584 0.001479063476 0.0009528342885 0.001014236944 -0.001073476183 -0.003537161888 -0.001195028184 -0.001150329078 0.0004728290271 5.712813212e-06 -0.001577237863 0.0008032553723 0.0005129373872 -ad : 10 4.049413304 -R : 0 1 0 -iw : 4 -0.3081647953 -0.1489748547 0.03076805933 -0.001523706378 0.006426347822 -0.01410552495 -0.01543931492 -0.01300999451 0.01041755272 -0.008471659874 0.007650252678 -0.007420803177 -0.006889940756 0.2794011989 -0.1658896586 -0.335272523 -0.08681977944 0.0515477515 -0.1041809649 0.00652757487 -0.003875635362 -0.007832881551 -0.0001753964826 0.0001041386462 -0.0002104701822 0.008804036906 -0.00522724556 -0.01056456335 -0.01356757091 0.008055511984 -0.01628065215 0.01352379648 -0.00802952167 -0.01622812424 -0.0106049444 0.006296503423 -0.01272559487 0.008146296935 -0.004836723759 -0.009775296375 -0.007165656686 0.00425448547 -0.008598559368 0.006638772881 -0.003941657269 -0.007966315615 -0.006341379538 0.003765085084 -0.007609453093 0.006022941141 -0.00357601776 -0.007227337178 0.01681450711 -0.1666197475 --0.3367480747 -0.1525796667 0.1999383802 -0.00333731776 0.0330704337 0.06683724495 -0.03028377985 -0.03968346517 -0.0003603349676 0.003570661984 0.007216512847 0.003269782985 --0.004284680442 7.545805912e-05 -0.0007477354333 -0.001511216235 -0.0006847281003 0.0008972586598 -0.0006741706264 -0.006680549054 -0.01350177314 -0.006117617888 0.00801644569 -0.0008869281327 -0.008788823875 0.01776271758 0.008048240605 -0.0105463082 0.0007581998766 -0.007513218864 --0.01518464663 -0.006880123438 0.009015622892 -0.0005785214213 0.005732733795 0.01158618409 -0.005249669531 -0.006879097624 0.000437827076 -0.004338553393 -0.008768465466 -0.003972968634 -0.005206125629 -0.0003928324364 0.003892688673 0.007867347271 0.00356467435 -0.004671102192 -0.000393880306 -0.003903072312 -0.007888333203 -0.003574183021 0.004683562228 -0.0003681517722 -0.003648120932 0.007373061827 0.003340714916 -0.004377628707 0.0003394439779 -0.003363647208 --0.006798124101 -0.003080212145 0.004036269316 -ad : 14 0 -R : 0 0 0 -iw : 5 -0.7032204055 0.5544559883 0.363270429 0.1985231277 0.1293770322 0.07072134775 -0.0546083141 0.0295329376 0.02595975093 0.0128918805 0.01275414576 0.005221808601 -0.006204537017 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 0 0 0 -0 0 0 diff --git a/tests/09_DeePKS/100_NO_KP_deepks_UT/stress_delta_ref.dat b/tests/09_DeePKS/100_NO_KP_deepks_UT/stress_delta_ref.dat deleted file mode 100644 index 59b2abb40e..0000000000 --- a/tests/09_DeePKS/100_NO_KP_deepks_UT/stress_delta_ref.dat +++ /dev/null @@ -1,3 +0,0 @@ --1.222217201e-06 -9.226694044e-07 -1.793998509e-09 --9.226694044e-07 -5.946175402e-08 8.325163035e-07 --1.793998509e-09 8.325163035e-07 1.112869552e-06 diff --git a/tests/09_DeePKS/100_NO_KP_deepks_UT/vdpre_ref.dat b/tests/09_DeePKS/100_NO_KP_deepks_UT/vdpre_ref.dat deleted file mode 100644 index 8b7a0ec35e..0000000000 --- a/tests/09_DeePKS/100_NO_KP_deepks_UT/vdpre_ref.dat +++ /dev/null @@ -1,972 +0,0 @@ -(0.3147524089,0) (0.3911428714,0) (0.2057672699,0) (0.06817076837,0) (0.01624681051,0) (0.001918900616,0) (8.656155591e-06,0) (0.0003293313421,0) (0.0005165205109,0) (0.0005274892321,0) (0.000308913253,0) (0.0001921098042,0) (7.200817462e-05,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.1469209212,0) (0.001757452279,0) (0.008885391297,0) (0.0004765796032,0) (0.0003137171467,0) (3.753583099e-07,0) (3.817084e-06,0) (6.033841652e-07,0) (5.317323845e-07,0) (8.414643968e-06,0) (3.31541252e-06,0) (3.002007615e-07,0) (1.229871495e-06,0) (0.001306177527,0) (1.355168727e-09,0) (0.2503658847,0) (1.046614926e-05,0) (2.060951583e-11,0) (0.04152020624,0) (4.050576507e-07,0) (1.00843227e-12,0) (0.003778769832,0) (1.889305054e-06,0) (8.299835645e-12,0) (0.002559803502,0) (1.316604296e-15,0) (2.853709815e-10,0) (7.660087477e-05,0) (2.266554089e-16,0) (5.359854749e-09,0) (1.127557649e-07,0) (1.456075894e-15,0) (8.395718063e-08,0) (9.154156321e-06,0) (9.161877051e-08,0) (3.993706216e-16,0) (1.150818494e-07,0) (1.068890781e-15,0) (4.419176462e-08,0) (7.775554357e-06,0) (1.628929061e-17,0) (4.528323296e-06,0) (1.43185262e-05,0) (2.455969101e-13,0) (6.161678805e-07,0) (1.125366415e-06,0) (1.15944313e-15,0) (1.58315933e-07,0) (5.391837529e-07,0) (2.24968478e-15,0) (6.286898691e-07,0) (3.183188427e-06,0) (6.2883726e-18,0) (0.0002446691601,0) (8.145458932e-07,0) (5.664740933e-10,0) (0.177759353,0) (2.493664997e-18,0) (2.201408811e-06,0) (0.0003158153936,0) (8.549720567e-10,0) (0.0706465972,0) (1.058791184e-22,0) (2.464242287e-13,0) (6.094571757e-11,0) (1.707997469e-15,0) (4.38015457e-05,0) (8.131516294e-20,0) (2.311133296e-11,0) (9.174418953e-05,0) (8.403150672e-11,0) (0.001971316564,0) (5.29395592e-23,0) (1.266660794e-13,0) (7.775698928e-17,0) (6.88337889e-11,0) (2.410431746e-06,0) (1.356576205e-22,0) (5.576701781e-10,0) (1.468000911e-14,0) (6.062379565e-07,0) (3.176643229e-06,0) (-2.067951531e-24,0) (2.300661614e-12,0) (5.707138741e-16,0) (1.135038219e-09,0) (1.530804122e-07,0) (-1.178732373e-23,0) (3.081533289e-11,0) (8.947554122e-16,0) (2.296325301e-09,0) (3.899274721e-07,0) (6.749793798e-22,0) (8.755362874e-11,0) (1.48542241e-15,0) (8.808607626e-08,0) (2.190836451e-05,0) (-1.058791184e-22,0) (2.423577032e-09,0) (3.638364687e-14,0) (4.518853107e-06,0) (4.641490491e-06,0) (1.413638742e-27,0) (6.210057073e-11,0) (3.638362452e-11,0) (1.650294841e-19,0) (9.04762241e-12,0) (8.271806126e-24,0) (4.100520746e-10,0) (4.164857336e-15,0) (3.101457978e-07,0) (1.081074942e-06,0) (7.940933881e-23,0) (4.313670249e-09,0) (1.26775354e-14,0) (2.818838655e-06,0) (9.917835142e-07,0) -(0.1537404548,0) (0.003727007567,0) (0.00854296775,0) (0.0008283378013,0) (0.000249242271,0) (3.135135163e-06,0) (3.485164461e-06,0) (1.245370055e-07,0) (1.451806454e-06,0) (9.235094054e-06,0) (1.535303137e-06,0) (1.834495508e-07,0) (1.651277635e-06,0) (2.815830936e-10,0) (0.01983051592,0) (0.2311916741,0) (1.480857164e-06,0) (5.065308416e-11,0) (0.05191474862,0) (1.74172454e-07,0) (5.928976114e-13,0) (0.002321923377,0) (5.781125973e-06,0) (1.396714217e-11,0) (0.002995923626,0) (1.300580339e-15,0) (2.083846774e-09,0) (2.160554926e-05,0) (8.895745648e-08,0) (1.874301973e-14,0) (4.549221948e-07,0) (3.009999658e-15,0) (6.499753675e-08,0) (5.596904508e-06,0) (8.516512091e-16,0) (5.426835441e-08,0) (1.474190623e-07,0) (1.228211538e-15,0) (1.807091778e-07,0) (1.378205676e-05,0) (2.933157846e-14,0) (5.773281799e-06,0) (8.30249756e-06,0) (1.793970786e-07,0) (1.57524998e-14,0) (1.14196802e-07,0) (1.547102555e-15,0) (2.937426657e-07,0) (8.906479179e-07,0) (3.127361261e-15,0) (1.516806236e-06,0) (2.811236419e-06,0) (0,0) (1.511060808e-05,0) (5.607603461e-10,0) (0.1487858497,0) (0.02038732434,0) (1.734723476e-18,0) (9.734329973e-09,0) (0.0004046016186,0) (8.829540289e-10,0) (0.0787413867,0) (0,0) (1.175486027e-09,0) (3.16393186e-09,0) (1.818492629e-13,0) (0.0005493161406,0) (0,0) (1.11287863e-09,0) (2.242153709e-05,0) (5.137087983e-11,0) (0.001903470945,0) (-4.235164736e-22,0) (1.177409821e-09,0) (2.273659858e-09,0) (4.248625572e-15,0) (2.121979301e-05,0) (0,0) (1.746371504e-10,0) (3.101321166e-15,0) (2.618867638e-10,0) (3.3303246e-06,0) (-6.6174449e-24,0) (4.476698989e-11,0) (7.989091628e-15,0) (1.282889475e-07,0) (2.814187778e-07,0) (1.654361225e-24,0) (2.426502395e-12,0) (1.278136264e-16,0) (7.949778252e-10,0) (1.110717381e-07,0) (2.436173229e-11,0) (0,0) (3.526056281e-16,0) (7.3810059e-07,0) (2.697616726e-05,0) (0,0) (1.877165974e-10,0) (1.913490841e-14,0) (2.115184742e-06,0) (1.181201865e-06,0) (-1.654361225e-24,0) (6.907330169e-11,0) (1.047719175e-07,0) (7.596810143e-15,0) (7.557011361e-09,0) (1.895051636e-10,0) (0,0) (6.491569902e-15,0) (1.28432286e-06,0) (1.324891707e-06,0) (0,0) (9.739590345e-10,0) (2.829120299e-14,0) (3.141117806e-06,0) (2.187995244e-07,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.002296938444,0) (0.0004656769935,0) (-3.404442288e-05,0) (8.60557369e-05,0) (-2.195463111e-05,0) (1.021437952e-06,0) (1.052245556e-06,0) (3.19721922e-07,0) (-3.631499723e-07,0) (-8.080661741e-07,0) (1.730221396e-07,0) (-2.294551817e-08,0) (-1.671873287e-07,0) (0.008189657419,0) (5.041046806e-06,0) (-0.008342968697,0) (0.0002452856292,0) (-2.067629571e-07,0) (0.002505844645,0) (-1.362524288e-05,0) (1.28943057e-08,0) (-0.0003814274264,0) (-3.297204231e-05,0) (-4.172364306e-08,0) (0.0001791736462,0) (1.381913284e-10,0) (1.079257912e-07,0) (-3.267927222e-05,0) (-3.366221799e-11,0) (2.800914463e-07,0) (2.957483131e-08,0) (-4.691192177e-11,0) (6.280388515e-07,0) (3.585047097e-06,0) (-8.962099782e-07,0) (-4.954574338e-11,0) (9.752156065e-07,0) (3.109204061e-11,0) (3.176698282e-07,0) (-2.771203269e-06,0) (-2.22648192e-12,0) (1.653561186e-06,0) (-1.853786177e-06,0) (-4.89836296e-10,0) (1.10502967e-06,0) (-9.167977887e-07,0) (3.191879817e-11,0) (5.061688212e-07,0) (-6.78714229e-07,0) (3.355563738e-11,0) (7.856396421e-07,0) (-1.190808539e-06,0) (0,0) (-0.0009274664534,0) (-0.0002742614059,0) (4.438674186e-06,0) (-0.001474755946,0) (-8.67361738e-19,0) (-1.006015126e-05,0) (-0.002941831249,0) (-2.930994065e-06,0) (0.005259890253,0) (1.376428539e-21,0) (5.998322676e-10,0) (6.199376993e-08,0) (-1.995271809e-10,0) (6.084148142e-05,0) (5.421010862e-20,0) (-7.446672951e-11,0) (-0.0003970796515,0) (2.33129964e-07,0) (0.0003677132413,0) (5.29395592e-23,0) (4.113038732e-10,0) (-1.578850801e-11,0) (2.295141761e-08,0) (6.300650718e-06,0) (-3.176373552e-22,0) (4.941788939e-08,0) (-4.216631935e-10,0) (-3.616195343e-06,0) (5.091702812e-06,0) (3.97046694e-23,0) (-3.504778343e-09,0) (-1.048420309e-10,0) (2.359753035e-07,0) (2.499492298e-07,0) (-1.522012327e-22,0) (9.88648561e-09,0) (-1.014613753e-10,0) (-2.52638343e-07,0) (8.108630087e-07,0) (1.058791184e-22,0) (-3.46259369e-09,0) (2.113178083e-11,0) (2.345799347e-07,0) (-3.336664573e-06,0) (9.264422861e-23,0) (-3.308381734e-08,0) (-2.028902496e-10,0) (2.843321806e-06,0) (-2.094078847e-06,0) (6.203854594e-25,0) (-5.632286098e-11,0) (7.855457093e-09,0) (7.109805969e-13,0) (-7.829784988e-09,0) (-1.389663429e-22,0) (-1.617807133e-08,0) (8.400741329e-11,0) (9.173899183e-07,0) (-1.236998982e-06,0) (0,0) (-4.115909576e-08,0) (1.129540535e-10,0) (1.15856545e-06,0) (-1.384583023e-06,0) -(-0.05751293495,0) (-0.01742314575,0) (0.002807441229,0) (-0.002741260601,0) (0.0006877098011,0) (-6.313790157e-05,0) (-3.703790973e-05,0) (-1.993765262e-06,0) (1.779141841e-05,0) (1.117127821e-05,0) (-3.925466161e-06,0) (1.105928494e-06,0) (4.760820116e-06,0) (2.356370425e-06,0) (0.002086629187,0) (0.008695215087,0) (-6.2979561e-06,0) (3.741398894e-07,0) (-0.07442571239,0) (3.937534685e-07,0) (-7.848018285e-09,0) (0.008950218454,0) (-7.896863725e-06,0) (5.968412251e-08,0) (-0.002792952986,0) (-8.133735556e-11,0) (5.197317153e-08,0) (0.0004693188178,0) (-7.459501429e-07,0) (-3.500108653e-10,0) (-4.093285999e-06,0) (1.032339543e-10,0) (-9.466882665e-07,0) (-8.422440694e-05,0) (6.995807459e-11,0) (-1.632739084e-06,0) (-4.319618027e-06,0) (-2.136820204e-11,0) (9.874220973e-07,0) (7.401138147e-05,0) (1.010201071e-10,0) (-5.466525505e-06,0) (-8.034065257e-06,0) (-6.503235901e-07,0) (-1.341657236e-10,0) (-4.441394808e-07,0) (-3.383529974e-11,0) (1.834727903e-06,0) (5.4567997e-06,0) (-3.617647595e-11,0) (2.98183865e-06,0) (5.407168305e-06,0) (6.505213035e-19,0) (-3.801065212e-06,0) (-4.420846394e-06,0) (0.06307890282,0) (0.006834856211,0) (-1.734723476e-18,0) (1.2360615e-07,0) (-0.0004147197189,0) (3.245439041e-06,0) (-0.05323530859,0) (-1.084202172e-19,0) (-7.133332631e-09,0) (1.11168147e-08,0) (5.132952515e-09,0) (-0.005614192732,0) (0,0) (3.611864086e-10,0) (1.48279327e-05,0) (-1.809388448e-07,0) (0.00192530132,0) (-1.355252716e-20,0) (-1.462622461e-08,0) (-4.015748519e-08,0) (3.138645067e-10,0) (-0.0004375922108,0) (8.470329473e-22,0) (-2.062581006e-09,0) (1.526916853e-10,0) (-7.487547447e-09,0) (-6.5275208e-05,0) (0,0) (9.665570157e-10,0) (-4.759094266e-10,0) (4.428858264e-06,0) (1.003236761e-05,0) (0,0) (1.297693598e-10,0) (-3.054149145e-11,0) (7.432534774e-08,0) (9.720891838e-06,0) (2.414566489e-11,0) (8.470329473e-22,0) (-3.039500918e-12,0) (1.39543781e-06,0) (5.069545599e-05,0) (0,0) (-4.776269042e-10,0) (1.818254864e-10,0) (-9.70477885e-06,0) (-5.529115333e-06,0) (0,0) (-4.190493315e-10,0) (-1.078377038e-06,0) (-1.525802291e-10,0) (-6.801392399e-08,0) (5.154379602e-10,0) (2.117582368e-22,0) (-9.02140094e-11,0) (5.837397148e-06,0) (5.909045808e-06,0) (2.64697796e-23,0) (2.987041801e-10,0) (-1.60387982e-10,0) (3.118621718e-06,0) (1.889669192e-07,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.05227305888,0) (-0.01059774195,0) (0.0007747731012,0) (-0.0019584315,0) (0.0004996371268,0) (-2.324558865e-05,0) (-2.394669917e-05,0) (-7.276138765e-06,0) (8.264461737e-06,0) (1.838973561e-05,0) (-3.937587669e-06,0) (5.221874471e-07,0) (3.804800733e-06,0) (0.003294115467,0) (-5.03865326e-06,0) (8.521411615e-05,0) (8.201923211e-05,0) (2.067578889e-07,0) (-0.06268694534,0) (-4.461298473e-06,0) (-1.290932257e-08,0) (0.008994674824,0) (-1.566384246e-05,0) (4.177343488e-08,0) (-0.003310642092,0) (-1.39836719e-10,0) (4.550215342e-08,0) (0.0007412007475,0) (3.371897556e-11,0) (-2.135755559e-07,0) (-6.832987415e-06,0) (4.698765009e-11,0) (-6.359455323e-07,0) (-9.524322186e-05,0) (-1.168207208e-06,0) (4.963625375e-11,0) (-6.28702053e-07,0) (-3.114294568e-11,0) (4.478956051e-07,0) (5.538823034e-05,0) (2.230680666e-12,0) (1.774135912e-06,0) (2.782574797e-06,0) (4.907366656e-10,0) (-1.097731374e-06,0) (-3.17533837e-06,0) (-3.19703626e-11,0) (1.108827398e-06,0) (2.817216516e-06,0) (-3.361210006e-11,0) (1.86095787e-06,0) (7.359028335e-06,0) (-4.33680869e-19,0) (-0.0002852827998,0) (-0.0001093982521,0) (-4.438290702e-06,0) (0.0612087474,0) (-1.084202172e-18,0) (-5.672657459e-06,0) (-0.001412428299,0) (2.934551322e-06,0) (-0.05104289932,0) (5.844527336e-20,0) (2.315741605e-10,0) (2.280737082e-08,0) (1.99657454e-10,0) (-0.001386055972,0) (2.032879073e-20,0) (-2.218079147e-11,0) (-0.0001285817751,0) (-2.334044471e-07,0) (0.000791823636,0) (2.435219723e-21,0) (1.565366177e-10,0) (1.581342029e-11,0) (4.980086481e-09,0) (-0.0001439248567,0) (-5.558653716e-22,0) (1.452916396e-08,0) (4.223110462e-10,0) (-7.100395277e-06,0) (-2.760876911e-05,0) (-2.415367389e-22,0) (-1.566034151e-09,0) (1.050286112e-10,0) (1.196885357e-08,0) (-1.098689074e-05,0) (3.441071348e-22,0) (2.91435589e-09,0) (1.016381852e-10,0) (-1.778376473e-07,0) (-1.275177812e-05,0) (-2.64697796e-22,0) (-1.096373539e-09,0) (-2.116571378e-11,0) (3.816288677e-07,0) (7.029415091e-05,0) (2.067951531e-22,0) (-1.759502375e-08,0) (2.032173328e-10,0) (-7.041690834e-06,0) (-9.234442056e-06,0) (2.714186385e-25,0) (3.778730592e-10,0) (3.371220318e-09,0) (-7.123309402e-13,0) (-3.067020323e-09,0) (9.264422861e-23,0) (-4.169374205e-09,0) (-8.414027643e-11,0) (2.098761966e-06,0) (5.54532595e-06,0) (-9.926167351e-23,0) (-9.442255645e-09,0) (-1.131400601e-10,0) (5.032227385e-06,0) (1.055086583e-06,0) -(-0.01870392239,0) (-0.005666223889,0) (0.0009130148356,0) (-0.0008914920716,0) (0.0002236517882,0) (-2.053323155e-05,0) (-1.204518931e-05,0) (-6.483972824e-07,0) (5.785990742e-06,0) (3.633038737e-06,0) (-1.276610461e-06,0) (3.596617133e-07,0) (1.548277966e-06,0) (-2.360738584e-06,0) (0.03012600167,0) (-0.02661648463,0) (-0.0001013170272,0) (-3.750412402e-07,0) (-0.02410440258,0) (-6.473083976e-06,0) (7.86788762e-09,0) (0.002917313174,0) (-6.209909928e-05,0) (-5.982724624e-08,0) (-0.0008486929007,0) (8.153315783e-11,0) (1.767015122e-07,0) (0.0001524684146,0) (8.386966911e-07,0) (3.506062313e-10,0) (-2.412940959e-06,0) (-1.03489508e-10,0) (4.325370202e-07,0) (-2.813110036e-05,0) (-7.01336135e-11,0) (-1.272009523e-06,0) (-6.63678222e-07,0) (2.141801211e-11,0) (7.20810683e-07,0) (2.366970548e-05,0) (-1.012439589e-10,0) (-8.825188043e-08,0) (-4.302174199e-06,0) (2.262857906e-07,0) (1.343906619e-10,0) (-5.823968285e-07,0) (3.391481584e-11,0) (1.224153722e-06,0) (1.147096904e-06,0) (3.625524393e-11,0) (1.96618936e-06,0) (7.619721113e-07,0) (1.734723476e-18,0) (-0.0002399783128,0) (4.429670749e-06,0) (0.05862781591,0) (-0.03565811638,0) (0,0) (3.134980355e-06,0) (-0.003476641184,0) (-3.253025745e-06,0) (-0.01396980218,0) (-2.710505431e-20,0) (1.136629777e-07,0) (1.037074105e-06,0) (-5.146353529e-09,0) (-0.00182694799,0) (2.710505431e-20,0) (-1.794104248e-08,0) (-0.0001795896175,0) (1.81405844e-07,0) (0.0008103216112,0) (3.388131789e-21,0) (2.246534061e-07,0) (1.460111013e-07,0) (-3.147057971e-10,0) (-0.0001426984983,0) (0,0) (3.165906529e-08,0) (-1.530328056e-10,0) (-5.880359132e-08,0) (-2.120406882e-05,0) (5.29395592e-23,0) (-1.426401455e-08,0) (4.771886505e-10,0) (-9.224878544e-07,0) (5.639404919e-06,0) (0,0) (-1.923071812e-09,0) (3.061682836e-11,0) (1.365337013e-07,0) (3.050917587e-06,0) (-5.065341759e-10,0) (4.235164736e-22,0) (3.046264775e-12,0) (6.475738678e-07,0) (1.629354359e-05,0) (0,0) (9.109682087e-09,0) (-1.822953378e-10,0) (-1.485812014e-06,0) (-3.477463597e-06,0) (0,0) (6.655951109e-09,0) (-5.74589738e-07,0) (1.527580882e-10,0) (1.947745163e-07,0) (-7.857037501e-09,0) (2.117582368e-22,0) (9.043149751e-11,0) (3.224418723e-06,0) (6.035756443e-07,0) (-1.058791184e-22,0) (-1.558553604e-08,0) (1.607444256e-10,0) (1.658167214e-06,0) (-5.670284416e-07,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.0411321873,0) (-0.008339062533,0) (0.0006096469769,0) (-0.001541034196,0) (0.0003931502828,0) (-1.829129434e-05,0) (-1.884297833e-05,0) (-5.725387206e-06,0) (6.503070519e-06,0) (1.447036132e-05,0) (-3.098376047e-06,0) (4.108944902e-07,0) (2.993889774e-06,0) (-0.003692931319,0) (6.684943117e-06,0) (0.006341380197,0) (-0.0001230406465,0) (-2.74369599e-07,0) (-0.04913856285,0) (6.893948142e-06,0) (1.71308782e-08,0) (0.007067222778,0) (1.30112031e-05,0) (-5.544016143e-08,0) (-0.002630298682,0) (1.854554824e-10,0) (-4.611068783e-08,0) (0.0005833114635,0) (-4.475959074e-11,0) (-3.716938248e-07,0) (-5.172975408e-06,0) (-6.23653338e-11,0) (-9.518968852e-07,0) (-7.449260097e-05,0) (-2.062491615e-07,0) (-6.585442473e-11,0) (-1.207582855e-06,0) (4.133017006e-11,0) (9.861243906e-08,0) (4.383718543e-05,0) (-2.959197357e-12,0) (9.323612458e-08,0) (3.492314996e-06,0) (-6.522504806e-10,0) (-1.657548191e-06,0) (-1.703770788e-06,0) (4.242558686e-11,0) (4.549582158e-07,0) (2.634266796e-06,0) (4.460116865e-11,0) (8.116553402e-07,0) (6.443219229e-06,0) (-3.035766083e-18,0) (0.0004829576041,0) (0.0001242870854,0) (5.888692216e-06,0) (0.04723623807,0) (-1.138412281e-18,0) (3.294780257e-06,0) (0.001149751687,0) (-3.89436725e-06,0) (-0.04242691604,0) (-1.694065895e-20,0) (-2.768655948e-10,0) (-2.949608241e-08,0) (-2.64989249e-10,0) (-0.001090599805,0) (3.726944968e-20,0) (3.933175976e-11,0) (0.0002019770285,0) (3.09697559e-07,0) (0.0003194157652,0) (-2.541098842e-21,0) (-1.91547415e-10,0) (-2.098780888e-11,0) (-1.35141104e-08,0) (-0.0001132326063,0) (5.823351512e-22,0) (-2.624027897e-08,0) (-5.605204444e-10,0) (-2.631350537e-06,0) (-2.46417407e-05,0) (2.514629062e-22,0) (1.457134286e-09,0) (-1.394145316e-10,0) (-1.684666273e-07,0) (-8.469855444e-06,0) (2.117582368e-22,0) (-5.243764032e-09,0) (-1.348940671e-10,0) (5.599469354e-08,0) (-1.022219073e-05,0) (1.694065895e-21,0) (1.779518342e-09,0) (2.808845119e-11,0) (1.111762798e-07,0) (5.549890313e-05,0) (-2.249931266e-22,0) (1.163451117e-08,0) (-2.697230875e-10,0) (-7.446974375e-06,0) (-5.385302829e-06,0) (-1.550963649e-25,0) (3.272970404e-10,0) (-3.370708344e-09,0) (9.449748969e-13,0) (3.578609755e-09,0) (6.948317145e-23,0) (9.0329589e-09,0) (1.116684355e-10,0) (8.917771118e-07,0) (5.110647247e-06,0) (5.128519798e-23,0) (2.385951371e-08,0) (1.501339326e-10,0) (2.921382097e-06,0) (1.83702408e-06,0) -(0.02917389264,0) (0.008838028944,0) (-0.001424096841,0) (0.001390526193,0) (-0.0003488462539,0) (3.20272016e-05,0) (1.878777362e-05,0) (1.011353251e-06,0) (-9.024838172e-06,0) (-5.66671952e-06,0) (1.99122386e-06,0) (-5.609910046e-07,0) (-2.414963783e-06,0) (3.131764434e-06,0) (0.02113859613,0) (-0.02661209925,0) (-7.166687639e-05,0) (4.97322524e-07,0) (0.03782720766,0) (-5.177796953e-06,0) (-1.043334764e-08,0) (-0.004535076858,0) (-4.088571921e-05,0) (7.933896824e-08,0) (0.001461529417,0) (-1.081506332e-10,0) (9.410884509e-08,0) (-0.0002381860178,0) (1.194202806e-06,0) (-4.647773923e-10,0) (1.261180451e-06,0) (1.372863619e-10,0) (1.038364612e-06,0) (4.216515965e-05,0) (9.30177865e-11,0) (2.694383648e-07,0) (2.749813509e-06,0) (-2.841116772e-11,0) (-1.995626923e-07,0) (-3.784413631e-05,0) (1.343156087e-10,0) (4.046369427e-06,0) (2.801726811e-06,0) (6.603081789e-07,0) (-1.781739592e-10,0) (-1.048868705e-07,0) (-4.49845343e-11,0) (-4.575800789e-07,0) (-3.241043012e-06,0) (-4.809009413e-11,0) (-7.612857105e-07,0) (-3.494038197e-06,0) (0,0) (-0.0001781248725,0) (-5.875863018e-06,0) (-0.00325358254,0) (-0.03202255516,0) (-4.33680869e-19,0) (2.27129912e-06,0) (-0.002309571161,0) (4.314038673e-06,0) (0.02951567944,0) (-5.421010862e-20,0) (9.109152453e-08,0) (7.736946357e-07,0) (6.824590353e-09,0) (0.002846967579,0) (0,0) (-1.380258363e-08,0) (-0.00014659622,0) (-2.405362853e-07,0) (-0.000837203801,0) (0,0) (1.804379704e-07,0) (1.404322281e-07,0) (4.172190712e-10,0) (0.0002216784642,0) (-8.470329473e-22,0) (2.542909593e-08,0) (2.030650731e-10,0) (-3.866749846e-08,0) (3.31291695e-05,0) (0,0) (-1.148514282e-08,0) (-6.330232694e-10,0) (-4.027290359e-06,0) (-3.296411943e-06,0) (0,0) (-1.548017159e-09,0) (-4.061005464e-11,0) (4.700979461e-08,0) (-5.014173148e-06,0) (-4.001910504e-10,0) (0,0) (-4.040786575e-12,0) (-5.617850981e-07,0) (-2.586134062e-05,0) (1.058791184e-22,0) (7.229839581e-09,0) (2.418124915e-10,0) (6.181658491e-06,0) (1.538533616e-06,0) (-2.64697796e-23,0) (5.335196032e-09,0) (3.786615396e-07,0) (-2.026498209e-10,0) (1.980117903e-07,0) (-6.313576244e-09,0) (-2.117582368e-22,0) (-1.199476441e-10,0) (-1.961240248e-06,0) (-3.991018329e-06,0) (-2.117582368e-22,0) (-1.197908084e-08,0) (-2.132048396e-10,0) (-1.09602752e-06,0) (-5.6965094e-07,0) -(0.2731656004,0) (0.01615280688,0) (-0.02892567571,0) (-0.00681892694,0) (0.00311081643,0) (-0.0001242414384,0) (9.142358452e-06,0) (0.0001499983368,0) (-0.0001504484689,0) (9.162783375e-05,0) (-7.145343949e-05,0) (6.119624794e-05,0) (-3.277313972e-05,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.2695462447,0) (0.02324389201,0) (-0.03424272561,0) (-0.004333899483,0) (0.002291534039,0) (4.332848919e-05,0) (0.0001066902242,0) (-2.294053818e-05,0) (1.892984583e-05,0) (-3.739677434e-05,0) (2.322309841e-05,0) (-2.861059199e-06,0) (6.880804962e-06,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.1208306479,0) (-0.009094799051,0) (-0.002843835608,0) (4.385357727e-05,0) (0.000101455379,0) (-2.497568383e-05,0) (2.882303202e-05,0) (4.591201175e-06,0) (1.25522063e-05,0) (2.574477926e-05,0) (9.479225358e-06,0) (3.178405029e-06,0) (8.85371498e-06,0) (1.738623898e-10,0) (-0.03001102387,0) (0.1997440824,0) (-0.0001221715915,0) (-1.474070406e-10,0) (-0.02386352647,0) (-3.161081699e-06,0) (8.892664166e-13,0) (-0.0003782332269,0) (5.069147332e-07,0) (1.658455888e-13,0) (1.114472307e-05,0) (-1.500172006e-14,0) (-4.573358943e-07,0) (5.007857078e-05,0) (2.271380542e-06,0) (1.920933975e-13,0) (-1.440347086e-05,0) (3.522406586e-14,0) (-3.493952407e-06,0) (4.251167502e-05,0) (1.184301307e-14,0) (8.749326325e-07,0) (-6.649639108e-06,0) (-7.916366537e-15,0) (-3.478571729e-06,0) (4.038721491e-05,0) (5.133587681e-14,0) (-1.83560613e-06,0) (3.443235877e-05,0) (6.48529231e-07,0) (4.700311397e-15,0) (3.713046695e-06,0) (-8.486490438e-15,0) (-1.351843834e-06,0) (9.719683219e-06,0) (-1.014688338e-14,0) (-1.550010209e-06,0) (1.674276403e-05,0) (-1.734723476e-18,0) (-0.000377473387,0) (-9.424696266e-12,0) (-0.008719428334,0) (0.06301289739,0) (0,0) (4.987671827e-06,0) (-0.00143187811,0) (-4.141268852e-10,0) (-0.005892254741,0) (1.694065895e-21,0) (1.859842766e-07,0) (4.229671091e-07,0) (-6.138140965e-13,0) (-6.644558929e-05,0) (0,0) (-2.859798928e-08,0) (-8.511178364e-06,0) (1.891527865e-12,0) (-1.727510638e-05,0) (0,0) (3.662671398e-07,0) (6.488075772e-07,0) (-3.437640456e-13,0) (-2.522670586e-05,0) (0,0) (5.164395866e-08,0) (2.409182199e-13,0) (-3.633301909e-07,0) (1.293020884e-05,0) (0,0) (-2.328816091e-08,0) (-6.937242073e-14,0) (4.52940866e-06,0) (-8.289612776e-06,0) (-5.29395592e-23,0) (-3.139926191e-09,0) (-5.790193031e-15,0) (-4.039157833e-07,0) (1.915478012e-06,0) (-8.160659869e-10,0) (0,0) (-1.266989765e-15,0) (-9.077704595e-06,0) (2.704664962e-05,0) (0,0) (1.483552381e-08,0) (5.416556893e-14,0) (-5.200987241e-06,0) (1.074630952e-05,0) (0,0) (1.08671901e-08,0) (-1.266292565e-07,0) (-3.289808167e-14,0) (-9.136562887e-07,0) (-1.278080324e-08,0) (-2.117582368e-22,0) (-2.091689037e-14,0) (-5.329587217e-06,0) (9.978394523e-06,0) (6.352747104e-22,0) (-2.480045938e-08,0) (-3.214682481e-14,0) (6.229744764e-07,0) (4.252964659e-06,0) -(0.2791082932,0) (0.02715806816,0) (-0.02846199811,0) (-0.008149020754,0) (0.002851320191,0) (-3.950407327e-05,0) (1.14330723e-05,0) (0.000154869012,0) (-0.0001326794655,0) (8.537678745e-05,0) (-7.412014254e-05,0) (5.873445414e-05,0) (-3.031732376e-05,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.1181203825,0) (-0.006245320651,0) (-0.002900269686,0) (3.326358174e-05,0) (0.0001138238722,0) (-8.641960382e-06,0) (3.016434396e-05,0) (1.010587839e-05,0) (7.596477619e-06,0) (2.457459582e-05,0) (1.39297899e-05,0) (4.065901073e-06,0) (7.640914772e-06,0) (-0.01035118577,0) (-1.060983429e-08,0) (0.1844993062,0) (0.0003082971776,0) (-3.414617148e-10,0) (-0.02229074989,0) (-4.695743746e-06,0) (1.512221582e-12,0) (-0.000493871054,0) (2.774482817e-07,0) (1.388386925e-13,0) (1.075209157e-05,0) (1.542408416e-12,0) (-1.658424701e-07,0) (9.590123357e-05,0) (8.91317672e-15,0) (8.216387078e-07,0) (-6.614975308e-06,0) (-5.963206816e-15,0) (-3.894922342e-06,0) (5.496461783e-05,0) (2.139238978e-08,0) (-1.443919701e-14,0) (-6.011743517e-06,0) (4.673910862e-15,0) (-1.74835413e-06,0) (3.005116424e-05,0) (-2.235709583e-16,0) (-5.566167409e-06,0) (4.421606725e-05,0) (-2.755076165e-13,0) (-8.301042594e-07,0) (1.171506491e-05,0) (5.277626819e-15,0) (-9.855585617e-07,0) (7.565601838e-06,0) (4.796833131e-15,0) (-2.467184366e-06,0) (1.707721501e-05,0) (-2.168404345e-18,0) (-0.001440066044,0) (0.0003756619176,0) (-7.980213573e-09,0) (0.06390193245,0) (-5.963111949e-19,0) (4.661129412e-05,0) (-0.001430622896,0) (-5.324722779e-10,0) (-0.006490750649,0) (3.176373552e-22,0) (-1.219047869e-09,0) (6.88256806e-08,0) (-1.492854078e-13,0) (-2.119132764e-05,0) (-2.541098842e-21,0) (3.776952075e-09,0) (-1.772438385e-05,0) (2.737719361e-12,0) (-1.263791935e-05,0) (7.940933881e-22,0) (-1.489280527e-10,0) (2.159069195e-15,0) (1.41805818e-07,0) (-9.41299573e-06,0) (-5.29395592e-22,0) (-2.66680814e-08,0) (8.251120903e-14,0) (-1.360177412e-05,0) (2.890940732e-05,0) (-3.044024654e-22,0) (-2.873311294e-09,0) (-5.553993267e-14,0) (-6.239731814e-07,0) (3.264209423e-06,0) (-6.6174449e-23,0) (8.129572964e-09,0) (-4.505795755e-14,0) (6.797582913e-07,0) (-3.897277635e-06,0) (-2.01170325e-21,0) (-5.801431416e-10,0) (1.621407408e-15,0) (-3.222079977e-06,0) (2.141123947e-05,0) (-4.764560328e-22,0) (-1.220420545e-08,0) (-3.309562665e-14,0) (-9.894086537e-06,0) (2.043898951e-05,0) (-3.101927297e-24,0) (-8.979762109e-12,0) (4.383490997e-09,0) (1.926809819e-16,0) (3.180408848e-08,0) (2.911675756e-22,0) (-7.758571774e-09,0) (1.720215898e-14,0) (-3.727686172e-06,0) (7.582318236e-06,0) (1.32348898e-22,0) (-1.614102532e-08,0) (1.910022905e-14,0) (-3.025162843e-06,0) (8.913907942e-06,0) -(0.2757309677,0) (0.033849107,0) (-0.03357642321,0) (-0.005713665996,0) (0.002042528073,0) (0.0001252214311,0) (0.000101946051,0) (-1.042211491e-05,0) (3.127914568e-05,0) (-3.917751923e-05,0) (1.580332402e-05,0) (-2.236553419e-06,0) (7.972957138e-06,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.002296938444,0) (0.0004656769935,0) (-3.404442288e-05,0) (8.60557369e-05,0) (-2.195463111e-05,0) (1.021437952e-06,0) (1.052245556e-06,0) (3.19721922e-07,0) (-3.631499723e-07,0) (-8.080661741e-07,0) (1.730221396e-07,0) (-2.294551817e-08,0) (-1.671873287e-07,0) (0.008189657419,0) (5.041046806e-06,0) (-0.008342968697,0) (0.0002452856292,0) (-2.067629571e-07,0) (0.002505844645,0) (-1.362524288e-05,0) (1.28943057e-08,0) (-0.0003814274264,0) (-3.297204231e-05,0) (-4.172364306e-08,0) (0.0001791736462,0) (1.381913284e-10,0) (1.079257912e-07,0) (-3.267927222e-05,0) (-3.366221799e-11,0) (2.800914463e-07,0) (2.957483131e-08,0) (-4.691192177e-11,0) (6.280388515e-07,0) (3.585047097e-06,0) (-8.962099782e-07,0) (-4.954574338e-11,0) (9.752156065e-07,0) (3.109204061e-11,0) (3.176698282e-07,0) (-2.771203269e-06,0) (-2.22648192e-12,0) (1.653561186e-06,0) (-1.853786177e-06,0) (-4.89836296e-10,0) (1.10502967e-06,0) (-9.167977887e-07,0) (3.191879817e-11,0) (5.061688212e-07,0) (-6.78714229e-07,0) (3.355563738e-11,0) (7.856396421e-07,0) (-1.190808539e-06,0) (6.505213035e-19,0) (-0.0009274664534,0) (-0.0002742614059,0) (4.438674186e-06,0) (-0.001474755946,0) (-1.084202172e-19,0) (-1.006015126e-05,0) (-0.002941831249,0) (-2.930994065e-06,0) (0.005259890253,0) (1.799945013e-21,0) (5.998322676e-10,0) (6.199376993e-08,0) (-1.995271809e-10,0) (6.084148142e-05,0) (5.082197684e-20,0) (-7.44667295e-11,0) (-0.0003970796515,0) (2.33129964e-07,0) (0.0003677132413,0) (1.98523347e-23,0) (4.113038732e-10,0) (-1.578850801e-11,0) (2.295141761e-08,0) (6.300650718e-06,0) (-1.588186776e-22,0) (4.941788939e-08,0) (-4.216631935e-10,0) (-3.616195343e-06,0) (5.091702812e-06,0) (5.95570041e-23,0) (-3.504778343e-09,0) (-1.048420309e-10,0) (2.359753035e-07,0) (2.499492298e-07,0) (-1.058791184e-22,0) (9.88648561e-09,0) (-1.014613753e-10,0) (-2.52638343e-07,0) (8.108630087e-07,0) (1.32348898e-22,0) (-3.46259369e-09,0) (2.113178083e-11,0) (2.345799347e-07,0) (-3.336664573e-06,0) (5.29395592e-23,0) (-3.308381734e-08,0) (-2.028902496e-10,0) (2.843321806e-06,0) (-2.094078847e-06,0) (3.101927297e-25,0) (-5.632286098e-11,0) (7.855457093e-09,0) (7.109805969e-13,0) (-7.829784988e-09,0) (-5.95570041e-23,0) (-1.617807133e-08,0) (8.400741329e-11,0) (9.173899183e-07,0) (-1.236998982e-06,0) (5.29395592e-23,0) (-4.115909576e-08,0) (1.129540535e-10,0) (1.15856545e-06,0) (-1.384583023e-06,0) -(-0.05751293495,0) (-0.01742314575,0) (0.002807441229,0) (-0.002741260601,0) (0.0006877098011,0) (-6.313790157e-05,0) (-3.703790973e-05,0) (-1.993765262e-06,0) (1.779141841e-05,0) (1.117127821e-05,0) (-3.925466161e-06,0) (1.105928494e-06,0) (4.760820116e-06,0) (2.356370425e-06,0) (0.002086629187,0) (0.008695215087,0) (-6.2979561e-06,0) (3.741398894e-07,0) (-0.07442571239,0) (3.937534685e-07,0) (-7.848018285e-09,0) (0.008950218454,0) (-7.896863725e-06,0) (5.968412251e-08,0) (-0.002792952986,0) (-8.133735556e-11,0) (5.197317153e-08,0) (0.0004693188178,0) (-7.459501429e-07,0) (-3.500108653e-10,0) (-4.093285999e-06,0) (1.032339543e-10,0) (-9.466882665e-07,0) (-8.422440694e-05,0) (6.995807459e-11,0) (-1.632739084e-06,0) (-4.319618027e-06,0) (-2.136820204e-11,0) (9.874220973e-07,0) (7.401138147e-05,0) (1.010201071e-10,0) (-5.466525505e-06,0) (-8.034065257e-06,0) (-6.503235901e-07,0) (-1.341657236e-10,0) (-4.441394808e-07,0) (-3.383529974e-11,0) (1.834727903e-06,0) (5.4567997e-06,0) (-3.617647595e-11,0) (2.98183865e-06,0) (5.407168305e-06,0) (0,0) (-3.801065212e-06,0) (-4.420846394e-06,0) (0.06307890282,0) (0.006834856211,0) (-1.734723476e-18,0) (1.2360615e-07,0) (-0.0004147197189,0) (3.245439041e-06,0) (-0.05323530859,0) (-1.084202172e-19,0) (-7.133332631e-09,0) (1.11168147e-08,0) (5.132952515e-09,0) (-0.005614192732,0) (-1.355252716e-20,0) (3.611864086e-10,0) (1.48279327e-05,0) (-1.809388448e-07,0) (0.00192530132,0) (-6.776263578e-21,0) (-1.462622461e-08,0) (-4.015748519e-08,0) (3.138645067e-10,0) (-0.0004375922108,0) (8.470329473e-22,0) (-2.062581006e-09,0) (1.526916853e-10,0) (-7.487547447e-09,0) (-6.5275208e-05,0) (-4.235164736e-22,0) (9.665570157e-10,0) (-4.759094266e-10,0) (4.428858264e-06,0) (1.003236761e-05,0) (2.117582368e-22,0) (1.297693598e-10,0) (-3.054149145e-11,0) (7.432534774e-08,0) (9.720891838e-06,0) (2.414566489e-11,0) (8.470329473e-22,0) (-3.039500918e-12,0) (1.39543781e-06,0) (5.069545599e-05,0) (0,0) (-4.776269042e-10,0) (1.818254864e-10,0) (-9.70477885e-06,0) (-5.529115333e-06,0) (0,0) (-4.190493315e-10,0) (-1.078377038e-06,0) (-1.525802291e-10,0) (-6.801392399e-08,0) (5.154379602e-10,0) (2.117582368e-22,0) (-9.02140094e-11,0) (5.837397148e-06,0) (5.909045808e-06,0) (2.64697796e-23,0) (2.987041801e-10,0) (-1.60387982e-10,0) (3.118621718e-06,0) (1.889669192e-07,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0.04586770644,0) (0.1295753448,0) (0.0004442131108,0) (0.1967622424,0) (0.0001704511524,0) (0.07116101842,0) (0.01342434892,0) (0.1479153603,0) (0.05829558339,0) (0.002881188799,0) (0.0986772665,0) (0.03669568318,0) (0.0583789555,0) (0.004863627082,0) (0.02285094543,0) (0.01871025158,0) (0.01720002272,0) (0.0129751607,0) (0.01950909261,0) (0.002216861756,0) (0.007850079801,0) (0.0006684007036,0) (0.01106999276,0) (0.004241350104,0) (0.006378882393,0) (0.0004382569924,0) (0.00246318523,0) (0.0002443597394,0) (0.003066181956,0) (0.001196173181,0) (0.001717101805,0) (2.637892713e-05,0) (0.0006299645073,0) (1.244860412e-05,0) (0.0006474759855,0) (0.0002384489065,0) (0.000314514928,0) (9.546434388e-07,0) (0.0001139889123,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(3.590997234e-05,0) (0.0001233917216,0) (1.30441383e-07,0) (1.553904071e-05,0) (1.536434435e-06,0) (2.779572112e-06,0) (2.900697787e-07,0) (1.694146338e-07,0) (2.480155548e-07,0) (7.759935467e-08,0) (9.02954327e-09,0) (1.753815685e-09,0) (2.272725483e-08,0) (0.05134867755,0) (0.01875202135,0) (0.000278013623,0) (0.005748536394,0) (0.00207432931,0) (0.0001512337715,0) (0.0004583230146,0) (0.0001648728595,0) (3.850112287e-05,0) (0.0005754261716,0) (0.0002097466075,0) (1.254127337e-05,0) (1.450462071e-05,0) (4.081696167e-05,0) (1.394154879e-05,0) (4.99941714e-06,0) (1.463681797e-05,0) (7.757214435e-09,0) (1.511410508e-06,0) (4.698023398e-06,0) (1.404013897e-06,0) (8.766678713e-06,0) (6.146623103e-06,0) (8.264078866e-06,0) (9.044095585e-07,0) (2.283550353e-06,0) (9.876553109e-07,0) (3.043249266e-07,0) (6.038139103e-07,0) (2.400053708e-07,0) (9.769650476e-07,0) (1.981749796e-06,0) (7.468840143e-07,0) (8.787060028e-07,0) (1.618326537e-06,0) (8.543525323e-07,0) (5.00506041e-07,0) (9.817712635e-07,0) (4.454731505e-07,0) (3.469446952e-18,0) (0.003515743553,0) (0.09234509611,0) (0.03477975199,0) (1.223510922e-05,0) (4.33680869e-19,0) (4.597357965e-05,0) (0.02740325923,0) (0.01004796136,0) (0.0003916175239,0) (1.694065895e-21,0) (1.460078625e-06,0) (6.30598451e-05,0) (2.330863833e-05,0) (8.451039346e-05,0) (2.710505431e-20,0) (2.399382941e-10,0) (0.001718607472,0) (0.0006467762177,0) (6.859021545e-05,0) (1.482307658e-21,0) (1.335565741e-06,0) (3.205846614e-06,0) (7.65274698e-06,0) (1.646933149e-05,0) (-8.470329473e-22,0) (4.379161533e-06,0) (1.211169872e-05,0) (2.157052131e-05,0) (8.161268252e-06,0) (0,0) (5.33910383e-06,0) (1.925982866e-05,0) (4.905944391e-05,0) (4.081163393e-07,0) (-8.470329473e-22,0) (3.171881935e-06,0) (1.1505279e-05,0) (2.779490012e-05,0) (1.68620799e-06,0) (1.32348898e-23,0) (1.369395562e-07,0) (3.006229585e-07,0) (6.24704245e-07,0) (5.081771609e-07,0) (0,0) (4.516212835e-07,0) (1.131399868e-06,0) (1.789055475e-06,0) (9.447754395e-07,0) (2.117582368e-22,0) (5.10826975e-11,0) (1.696043397e-06,0) (3.063049089e-06,0) (6.775872177e-06,0) (1.058791184e-22,0) (6.382847646e-07,0) (1.694474736e-06,0) (2.713576222e-06,0) (1.415412032e-06,0) (1.058791184e-22,0) (3.927215262e-07,0) (1.006395786e-06,0) (4.761797554e-07,0) (1.932952223e-06,0) -(0.02151507676,0) (0.08145033313,0) (0.0009225981511,0) (0.009071793741,0) (0.001897530337,0) (0.001271522409,0) (0.000393613206,0) (3.191902604e-05,0) (0.0002180280768,0) (1.351339316e-05,0) (1.003663981e-05,0) (6.66710727e-06,0) (1.372598266e-05,0) (0.01971880285,0) (0.0002195616787,0) (0.0003270306584,0) (2.678465689e-05,0) (0.002763516793,0) (0.106697746,0) (8.901625396e-07,0) (0.0001038820182,0) (0.0345000232,0) (1.0786905e-05,0) (0.0002550410404,0) (0.002603733392,0) (5.086780754e-06,0) (1.296261603e-06,0) (0.01019461019,0) (6.255143051e-06,0) (6.536172276e-06,0) (3.683045246e-05,0) (3.540615072e-06,0) (1.378850213e-05,0) (0.0012674418,0) (5.746639196e-06,0) (4.91232311e-05,0) (0.000126571826,0) (3.717599159e-07,0) (5.395422689e-06,0) (0.0003974504446,0) (3.479206662e-07,0) (5.176068333e-06,0) (7.774311777e-06,0) (2.357456293e-06,0) (1.1427038e-06,0) (1.727367798e-06,0) (7.399816442e-07,0) (1.145978052e-05,0) (3.343258584e-05,0) (4.18479744e-07,0) (5.861896876e-06,0) (1.04002171e-05,0) (-5.421010862e-20,0) (9.561558787e-07,0) (0.03485246954,0) (0.02674278495,0) (0.002291387465,0) (0,0) (1.569546168e-06,0) (0.0004250908481,0) (0.01192913133,0) (0.03599121376,0) (-8.67361738e-19,0) (4.328799598e-08,0) (3.906012346e-08,0) (0.0001448848612,0) (0.05737890751,0) (0,0) (1.172235841e-10,0) (9.806088991e-06,0) (0.0006373039673,0) (0.001947382062,0) (0,0) (1.816924258e-07,0) (7.09263354e-07,0) (2.318653812e-05,0) (0.009023977889,0) (0,0) (2.436045478e-08,0) (7.517683295e-06,0) (2.140748389e-07,0) (0.001279410655,0) (0,0) (2.086878003e-08,0) (2.83498791e-05,0) (0.0001528953655,0) (0.0003576463545,0) (0,0) (6.94006599e-09,0) (7.29799041e-06,0) (6.948945167e-06,0) (0.0008507631173,0) (2.393151383e-11,0) (0,0) (2.620125233e-08,0) (2.63818605e-06,0) (9.527036339e-05,0) (0,0) (1.215275915e-09,0) (1.727758853e-06,0) (4.452695345e-05,0) (2.58813648e-05,0) (0,0) (2.542260728e-09,0) (1.109931996e-05,0) (3.064539702e-06,0) (6.121327117e-07,0) (1.401947502e-09,0) (0,0) (1.253713298e-06,0) (2.653165066e-05,0) (2.635447273e-05,0) (-2.64697796e-23,0) (9.160979474e-11,0) (9.092686847e-07,0) (3.096286743e-06,0) (1.632018929e-07,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (-0.04650791085,0) (0.05339342277,0) (-0.006885511921,0) (0.06582968803,0) (0.005456254699,0) (-0.07128594273,0) (-0.03665265658,0) (0.0950451253,0) (-0.05839246872,0) (-0.01466480269,0) (0.05142104472,0) (-0.03675624203,0) (0.005432133241,0) (0.01745725437,0) (-0.02288938761,0) (-0.009939728979,0) (0.02293658634,0) (-0.01299685736,0) (0.0009346548029,0) (0.006928611436,0) (-0.007863266239,0) (-0.002292082329,0) (0.006540467226,0) (-0.004248384897,0) (0.0007511567492,0) (0.001716174845,0) (-0.002467331594,0) (-0.0007179158406,0) (0.001916075511,0) (-0.00119815967,0) (0.0004232273626,0) (0.0002078052141,0) (-0.0006310325767,0) (-7.912951479e-05,0) (0.0003179706291,0) (-0.0002388411143,0) (9.769891917e-05,0) (1.648674933e-05,0) (-0.0001141856685,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.0008172287347,0) (-0.00280811301,0) (-2.968547159e-06,0) (-0.0003536329813,0) (-3.496572923e-05,0) (-6.325669591e-05,0) (-6.601323888e-06,0) (-3.855489098e-06,0) (-5.64426606e-06,0) (-1.765983606e-06,0) (-2.054917267e-07,0) (-3.991282865e-08,0) (-5.172202734e-07,0) (0.02065391313,0) (-0.01874311768,0) (-2.839598951e-06,0) (0.001922210209,0) (-0.002074278464,0) (-0.00378330843,0) (0.0001500682067,0) (-0.0001650648726,0) (-0.0009079186671,0) (0.0002733644709,0) (-0.0002099969132,0) (-0.000231728652,0) (-1.467732161e-05,0) (1.720867302e-05,0) (-0.0003162091956,0) (-5.007846613e-06,0) (-1.116087826e-05,0) (-1.792231646e-06,0) (-1.513850326e-06,0) (-4.757169056e-06,0) (-3.730015351e-05,0) (1.142734126e-05,0) (-6.157851779e-06,0) (-5.327686836e-06,0) (-9.058902923e-07,0) (3.219670478e-06,0) (-1.974033463e-05,0) (-3.048988288e-07,0) (6.478429413e-07,0) (-3.602534663e-07,0) (-9.787608102e-07,0) (-1.968661101e-06,0) (2.586840302e-06,0) (-8.801255416e-07,0) (3.545150804e-06,0) (-3.546258443e-06,0) (-5.013482219e-07,0) (2.325538149e-06,0) (-2.752961059e-06,0) (-8.67361738e-19,0) (0.001081420423,0) (0.03683490234,0) (-0.03477674716,0) (-0.0005078099275,0) (-3.794707604e-19,0) (2.592330502e-05,0) (0.01315681817,0) (-0.01006015626,0) (-0.00380032527,0) (-8.809142651e-20,0) (5.636850501e-07,0) (2.319957752e-05,0) (-2.332385676e-05,0) (-0.001925267643,0) (1.355252716e-20,0) (7.146844379e-11,0) (0.0005565170578,0) (-0.0006475377206,0) (0.0001477002938,0) (-1.694065895e-21,0) (5.082980186e-07,0) (-3.210905036e-06,0) (1.660522345e-06,0) (-0.0003762065667,0) (1.694065895e-21,0) (1.287500472e-06,0) (-1.21303074e-05,0) (4.235369307e-05,0) (-4.425289125e-05,0) (4.65868121e-21,0) (2.385662691e-06,0) (-1.929410409e-05,0) (2.488333702e-06,0) (-1.793936166e-05,0) (2.117582368e-21,0) (9.350130233e-07,0) (-1.152532848e-05,0) (1.956543723e-05,0) (-2.651761138e-05,0) (-3.705769144e-22,0) (4.335966598e-08,0) (-3.011056923e-07,0) (1.016306761e-06,0) (-1.070586547e-05,0) (-2.64697796e-23,0) (2.401865277e-07,0) (-1.133223818e-06,0) (-4.430724484e-06,0) (4.166258622e-06,0) (5.29395592e-23,0) (-3.427165247e-10,0) (7.278680151e-07,0) (-3.068866642e-06,0) (2.654190084e-06,0) (-5.29395592e-23,0) (1.64497237e-07,0) (-1.697154657e-06,0) (6.207993408e-06,0) (-6.345131393e-06,0) (1.32348898e-22,0) (9.009374426e-08,0) (-1.008053064e-06,0) (2.068286092e-06,0) (-1.472957506e-06,0) -(0.006996970788,0) (0.02648866226,0) (0.0003000404036,0) (0.002950260254,0) (0.0006171004868,0) (0.0004135149158,0) (0.0001280079144,0) (1.038046461e-05,0) (7.090544467e-05,0) (4.394723674e-06,0) (3.264040205e-06,0) (2.168226279e-06,0) (4.463860426e-06,0) (-0.0197553569,0) (0.003169952543,0) (-0.001001057065,0) (0.0004308924624,0) (-0.002770174458,0) (0.0345564099,0) (-1.463376791e-05,0) (-0.000104145023,0) (0.01124524197,0) (8.482571159e-05,0) (-0.0002556526339,0) (0.0007911948594,0) (-5.099026091e-06,0) (4.407108103e-06,0) (0.003311940614,0) (-7.032866511e-06,0) (-6.547290259e-06,0) (2.17110916e-05,0) (-3.549379796e-06,0) (-6.299896001e-06,0) (0.000423327795,0) (-5.761058672e-06,0) (3.827017946e-05,0) (1.944685014e-05,0) (-3.72626502e-07,0) (3.938617866e-06,0) (0.0001271093011,0) (-3.486916283e-07,0) (8.356272429e-08,0) (4.1630784e-06,0) (-8.202975706e-07,0) (-1.144619623e-06,0) (2.265084665e-06,0) (-7.4172067e-07,0) (7.646110877e-06,0) (7.028005024e-06,0) (-4.193909109e-07,0) (3.865265904e-06,0) (1.465586965e-06,0) (4.33680869e-19,0) (6.036641356e-05,0) (-0.03492203779,0) (0.0248557125,0) (-0.01195439354,0) (2.168404345e-19,0) (3.980786074e-05,0) (0.003563583505,0) (-0.01195701747,0) (0.009444674026,0) (4.33680869e-19,0) (-6.897536925e-07,0) (3.64387135e-06,0) (-0.0001452631239,0) (0.01867201301,0) (4.065758147e-20,0) (-5.822791923e-09,0) (-0.0001187671813,0) (-0.0006389488347,0) (0.0008196149627,0) (0,0) (-2.79072853e-06,0) (-2.5788548e-06,0) (-2.32486879e-05,0) (0.002942712557,0) (6.776263578e-21,0) (-3.739146372e-07,0) (-7.534478148e-06,0) (1.681240677e-06,0) (0.0004156051342,0) (-3.388131789e-21,0) (-3.079720876e-07,0) (-2.842608235e-05,0) (-3.184660905e-05,0) (0.0002010405408,0) (-6.776263578e-21,0) (-1.028458898e-07,0) (-7.315992414e-06,0) (1.276502879e-05,0) (0.000267013377,0) (-5.020416579e-10,0) (0,0) (-2.62595584e-08,0) (1.224289849e-06,0) (3.061993997e-05,0) (-4.235164736e-22,0) (-2.317871362e-08,0) (-1.732223519e-06,0) (6.817124161e-06,0) (1.627774038e-05,0) (-5.29395592e-23,0) (-4.037988332e-08,0) (5.914031108e-06,0) (-3.068111963e-06,0) (-1.752991826e-06,0) (-2.137047511e-08,0) (4.235164736e-22,0) (-1.256735752e-06,0) (1.465535905e-05,0) (2.691960492e-06,0) (2.64697796e-23,0) (-4.779938991e-09,0) (-9.112894287e-07,0) (1.646291736e-06,0) (-4.897159534e-07,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0.0616499241,0) (-0.05612508663,0) (-0.005524837477,0) (-0.09849767551,0) (0.003987118413,0) (0.0945105571,0) (-0.03774692604,0) (-0.03968505748,0) (0.07743198352,0) (-0.01322794725,0) (-0.0355135707,0) (0.04874151795,0) (-0.03985523459,0) (0.009503484414,0) (0.03035175017,0) (-0.02158210048,0) (0.004347737172,0) (0.01723436331,0) (-0.01398296519,0) (0.00355609991,0) (0.01042686528,0) (-0.002231696874,0) (-0.003401939794,0) (0.005633636669,0) (-0.004236003097,0) (0.0009642830837,0) (0.003271720014,0) (-0.0007253584191,0) (-0.0008634759321,0) (0.001588834351,0) (-0.000973594934,0) (0.0001368578979,0) (0.0008367370361,0) (-6.904381328e-05,0) (-0.0002476788081,0) (0.0003167226213,0) (-0.0001631146387,0) (1.171560823e-05,0) (0.0001513990305,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.0006430541106,0) (-0.002209624475,0) (-2.335865557e-06,0) (-0.0002782637621,0) (-2.751354053e-05,0) (-4.977489973e-05,0) (-5.19439452e-06,0) (-3.03377501e-06,0) (-4.441312862e-06,0) (-1.389602407e-06,0) (-1.616956109e-07,0) (-3.140627274e-08,0) (-4.069859621e-07,0) (-0.02315446542,0) (0.02486709624,0) (-0.0002113144789,0) (-0.002883591821,0) (0.002752586386,0) (-0.002965630851,0) (-0.0002318971576,0) (0.0002190437346,0) (-0.0007133624739,0) (-0.0002270707624,0) (0.0002787001547,0) (-0.0001841079618,0) (1.946548646e-05,0) (-1.743881751e-05,0) (-0.0002488508671,0) (6.647567465e-06,0) (-1.942370938e-05,0) (-1.356825305e-06,0) (2.009289265e-06,0) (-7.120632471e-06,0) (-2.917357685e-05,0) (2.017518414e-06,0) (8.169870928e-06,0) (-1.023318319e-05,0) (1.202217678e-06,0) (7.088695561e-07,0) (-1.562354862e-05,0) (4.044755587e-07,0) (3.404607548e-08,0) (-4.521418737e-07,0) (1.300895681e-06,0) (-2.972631304e-06,0) (1.388004183e-06,0) (1.167951802e-06,0) (1.454595627e-06,0) (-3.315964822e-06,0) (6.652579445e-07,0) (1.014281671e-06,0) (-2.410363274e-06,0) (1.734723476e-18,0) (-0.001830745551,0) (-0.04184804203,0) (0.04614153827,0) (-0.0003918889316,0) (6.505213035e-19,0) (-1.505671622e-05,0) (-0.0107099765,0) (0.01335057348,0) (-0.003158834692,0) (-2.032879073e-20,0) (-6.739309617e-07,0) (-3.000331146e-05,0) (3.095587548e-05,0) (-0.001514871375,0) (0,0) (-1.267303587e-10,0) (-0.0008741803541,0) (0.0008591989311,0) (5.958119995e-05,0) (-1.694065895e-21,0) (-6.219833605e-07,0) (4.261561381e-06,0) (-4.506042692e-06,0) (-0.0002959797984,0) (-2.382280164e-21,0) (-2.325279806e-06,0) (1.61001834e-05,0) (1.56959449e-05,0) (-3.949717088e-05,0) (0,0) (-2.219766983e-06,0) (2.561091166e-05,0) (-3.502433912e-05,0) (-1.382955411e-05,0) (3.546950467e-21,0) (-1.682357216e-06,0) (1.529640096e-05,0) (-6.160454092e-06,0) (-2.125727712e-05,0) (0,0) (-7.037685441e-08,0) (3.9958929e-07,0) (2.960709067e-07,0) (-8.452535281e-06,0) (1.058791184e-22,0) (-1.588206347e-07,0) (1.504087388e-06,0) (-4.685734219e-06,0) (2.429661067e-06,0) (0,0) (-2.96845995e-10,0) (-7.277574765e-07,0) (4.071144148e-06,0) (-3.096918026e-06,0) (-3.30872245e-22,0) (-3.56383646e-07,0) (2.252412441e-06,0) (2.637815303e-06,0) (-5.847758739e-06,0) (5.29395592e-23,0) (-2.276567175e-07,0) (1.337660336e-06,0) (1.200711633e-06,0) (-2.564584225e-06,0) -(-0.01091369342,0) (-0.04131632783,0) (-0.0004679952334,0) (-0.004601739364,0) (-0.0009625373212,0) (-0.000644989832,0) (-0.0001996634222,0) (-1.619117925e-05,0) (-0.0001105964721,0) (-6.854775913e-06,0) (-5.091165187e-06,0) (-3.381943069e-06,0) (-6.962613624e-06,0) (0.02620752866,0) (0.002224269497,0) (-0.001000892129,0) (0.0003047929621,0) (0.003673383099,0) (-0.05422961591,0) (-1.170549913e-05,0) (0.0001381032981,0) (-0.01748116626,0) (5.58488008e-05,0) (0.0003390297478,0) (-0.001362512354,0) (6.763664198e-06,0) (2.347166408e-06,0) (-0.005173910596,0) (-1.001395262e-05,0) (8.679345149e-06,0) (-1.134781363e-05,0) (4.708510543e-06,0) (-1.51237669e-05,0) (-0.0006345178053,0) (7.640857198e-06,0) (-8.106428758e-06,0) (-8.057400327e-05,0) (4.942920937e-07,0) (-1.090440533e-06,0) (-0.0002032277807,0) (4.625928184e-07,0) (-3.831370518e-06,0) (-2.711142746e-06,0) (-2.393650938e-06,0) (1.517526643e-06,0) (4.079308649e-07,0) (9.838166031e-07,0) (-2.85806264e-06,0) (-1.98571424e-05,0) (5.56293275e-07,0) (-1.496586117e-06,0) (-6.720478032e-06,0) (-6.505213035e-19,0) (4.480721443e-05,0) (0.04632333236,0) (-0.001379381288,0) (-0.01073557061,0) (-4.33680869e-19,0) (2.884086942e-05,0) (0.002367327906,0) (0.01585694053,0) (-0.01995489753,0) (0,0) (-5.527808322e-07,0) (2.718459272e-06,0) (0.0001926337373,0) (-0.02909695075,0) (-2.710505431e-20,0) (-4.47964897e-09,0) (-9.694780846e-05,0) (0.0008472184569,0) (-0.0008468054569,0) (-5.421010862e-20,0) (-2.241467871e-06,0) (-2.480320484e-06,0) (3.082178995e-05,0) (-0.004571428628,0) (1.355252716e-20,0) (-3.003345517e-07,0) (9.997786745e-06,0) (1.10553403e-06,0) (-0.0006493401365,0) (1.694065895e-21,0) (-2.479739066e-07,0) (3.770913572e-05,0) (-0.0001390322279,0) (-0.0001175146047,0) (0,0) (-8.278796515e-08,0) (9.703906891e-06,0) (4.395115462e-06,0) (-0.0004388356181,0) (-3.966417036e-10,0) (0,0) (3.483258316e-08,0) (-1.062099363e-06,0) (-4.860039762e-05,0) (-4.235164736e-22,0) (-1.83956344e-08,0) (2.297772888e-06,0) (-2.83623588e-05,0) (-7.201757854e-06,0) (0,0) (-3.23672139e-08,0) (-3.897417542e-06,0) (4.070176231e-06,0) (-1.782127644e-06,0) (-1.71723915e-08,0) (0,0) (1.666924655e-06,0) (-8.914065602e-06,0) (-1.780002849e-05,0) (5.29395592e-23,0) (-3.673872713e-09,0) (1.208697071e-06,0) (-1.088177979e-06,0) (-4.919808827e-07,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (1.333601076e-05,0) (-0.003680518671,0) (0.01171062439,0) (0.004572524643,0) (-0.001931974151,0) (1.016225988e-05,0) (-0.003695330387,0) (0.003163975381,0) (-1.380679875e-06,0) (-0.002791090092,0) (0.002119938484,0) (-1.702859645e-06,0) (0.001336173644,0) (-0.001159269776,0) (4.948719016e-07,0) (5.602991138e-05,0) (-5.170347486e-05,0) (1.165106662e-08,0) (0.0004402708215,0) (-0.0003880446353,0) (1.452039402e-07,0) (-0.0002896023254,0) (0.0002398595806,0) (-1.282564785e-07,0) (0.0001483925852,0) (-0.0001273107664,0) (5.926285014e-08,0) (-7.692981325e-05,0) (6.523609042e-05,0) (-3.032478854e-08,0) (4.206025406e-05,0) (-3.160521265e-05,0) (3.109924057e-08,0) (-1.970181647e-05,0) (1.391253042e-05,0) (-1.452397306e-08,0) (7.57314583e-06,0) (-4.370287337e-06,0) (1.070626807e-08,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.004214043356,0) (0.006158998385,0) (0.0001312011809,0) (-0.0007825700286,0) (-0.000160366703,0) (0.0001179069761,0) (2.941101487e-05,0) (-1.215575976e-05,0) (-1.292825713e-05,0) (3.591247411e-06,0) (1.211948785e-06,0) (2.186819431e-07,0) (-9.353687809e-07,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.04520166927,0) (0.04251668573,0) (-0.0009345582901,0) (-0.0001451268835,0) (0.0002799358963,0) (0.0005029806326,0) (-0.0003063111856,0) (-7.350246924e-05,0) (0.0001538232273,0) (3.114230238e-05,0) (-2.423650254e-05,0) (1.916106456e-05,0) (2.552626129e-05,0) (1.454931824e-06,0) (-0.003157854218,0) (0.007512458075,0) (0.0005195851016,0) (-1.088795504e-06,0) (0.03421108654,0) (-7.146290097e-06,0) (-1.177097021e-08,0) (-0.001457959397,0) (-6.924319911e-07,0) (7.086881675e-10,0) (-1.038967993e-05,0) (9.381966906e-10,0) (-1.140640338e-05,0) (0.001087813846,0) (-1.904659493e-05,0) (-3.587190187e-09,0) (0.0001295991408,0) (1.20807976e-09,0) (5.088937078e-05,0) (-0.0006397323042,0) (9.728329649e-10,0) (-2.632356776e-05,0) (0.0001948452291,0) (1.377274291e-10,0) (-1.900743854e-05,0) (0.0002168844333,0) (1.768045232e-10,0) (1.738073434e-06,0) (-3.331910854e-05,0) (-2.35095165e-06,0) (-4.003305574e-11,0) (-1.444095283e-05,0) (1.856004633e-10,0) (-8.44366819e-06,0) (5.955031546e-05,0) (1.173764161e-10,0) (-3.04711323e-06,0) (3.220324779e-05,0) (-5.421010862e-19,0) (9.495322441e-05,0) (7.430118958e-08,0) (-0.00369666856,0) (0.02112509155,0) (6.505213035e-19,0) (6.333326623e-05,0) (0.001467685891,0) (-1.522189737e-06,0) (0.003983623004,0) (0,0) (-1.128629076e-06,0) (1.486140405e-06,0) (-1.732577337e-08,0) (0.0006790959101,0) (8.470329473e-22,0) (-9.281519799e-09,0) (-5.628658706e-06,0) (-6.662351652e-09,0) (-1.747322974e-05,0) (5.421010862e-20,0) (-4.549907229e-06,0) (-1.145926933e-05,0) (-2.539534721e-08,0) (0.0005202223217,0) (0,0) (-6.099495322e-07,0) (1.186146372e-08,0) (1.038789438e-05,0) (-0.0002534353773,0) (6.776263578e-21,0) (-5.02811008e-07,0) (4.132508469e-09,0) (0.000156366619,0) (-0.0002955184562,0) (0,0) (-1.679232679e-07,0) (1.383585823e-09,0) (-3.776354522e-05,0) (0.0001676407959,0) (-8.088281908e-10,0) (0,0) (1.092177589e-11,0) (-1.716212179e-05,0) (5.082791124e-05,0) (1.694065895e-21,0) (-3.774756953e-08,0) (5.146970487e-10,0) (2.38628948e-05,0) (-5.030265065e-05,0) (2.117582368e-22,0) (-6.59283491e-08,0) (1.303346218e-06,0) (6.607505923e-10,0) (8.223005948e-06,0) (-3.476269999e-08,0) (4.235164736e-22,0) (2.906841531e-10,0) (-2.422359532e-05,0) (4.450385645e-05,0) (0,0) (-7.6060703e-09,0) (1.822462067e-10,0) (6.185128518e-07,0) (3.673086727e-06,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0.0005994385344,0) (-0.1985188841,0) (-0.001140207266,0) (-0.07488263132,0) (2.167276441e-05,0) (-1.025275956e-05,0) (0.0008666908912,0) (0.008349515407,0) (1.159857724e-06,0) (0.0006185982764,0) (0.01711533238,0) (2.254507178e-06,0) (-0.002883854726,0) (-0.0002052737618,0) (-3.899156928e-07,0) (-0.000159158543,0) (-0.0001352381151,0) (-3.706119164e-08,0) (-0.001416265,0) (-0.0001403458379,0) (-1.967367615e-07,0) (7.853055611e-05,0) (0.001110759192,0) (1.500255288e-07,0) (-0.0003981834344,0) (-2.30250586e-05,0) (-5.321609918e-08,0) (2.402907374e-05,0) (0.0002617957008,0) (3.602240965e-08,0) (-0.0002640355922,0) (-2.758564769e-06,0) (-3.410406075e-08,0) (3.284076926e-06,0) (0.000132422448,0) (1.733460305e-08,0) (-7.323759983e-05,0) (-6.375922781e-08,0) (-9.551291528e-09,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.001846675378,0) (-0.001654839895,0) (1.111239836e-05,0) (6.00638806e-06,0) (-7.965650434e-06,0) (-2.351680004e-05,0) (8.315325756e-06,0) (5.354914909e-06,0) (-5.18806211e-06,0) (-2.359921549e-06,0) (7.269569138e-07,0) (-3.107727192e-07,0) (-1.038697242e-06,0) (-0.06490133507,0) (-3.946716758e-05,0) (-0.006148089778,0) (0.007225280791,0) (3.425681516e-06,0) (-0.001345300549,0) (0.0001579544268,0) (1.933599988e-08,0) (4.985113502e-05,0) (-4.842011333e-06,0) (-6.979482776e-10,0) (7.525934897e-07,0) (1.618918448e-07,0) (-6.272074233e-05,0) (-4.091314267e-05,0) (-1.323759753e-09,0) (4.293660645e-05,0) (-1.735049015e-06,0) (1.921228267e-10,0) (-2.913583491e-05,0) (2.152582244e-05,0) (-2.092592279e-07,0) (1.791320429e-09,0) (-5.094414221e-05,0) (1.359553096e-10,0) (-1.256793796e-05,0) (-1.07102183e-05,0) (3.055871646e-11,0) (-2.032540034e-06,0) (-5.724551057e-06,0) (5.494923794e-10,0) (-1.488701156e-06,0) (-9.543865412e-06,0) (1.452900029e-10,0) (-3.151034807e-06,0) (-9.523435361e-06,0) (7.154815394e-11,0) (-3.083106532e-06,0) (-6.388466763e-06,0) (-8.67361738e-19,0) (0.005458852868,0) (-0.1264871219,0) (-6.252989909e-05,0) (-0.0005301535656,0) (0,0) (-0.0002130075372,0) (0.01332630147,0) (1.825408291e-06,0) (-0.0004832594551,0) (1.694065895e-21,0) (-2.967339092e-06,0) (7.000924065e-05,0) (1.743942639e-08,0) (-2.943530294e-05,0) (0,0) (-1.216966884e-08,0) (7.671321961e-05,0) (7.595298963e-09,0) (-2.357373937e-06,0) (8.470329473e-22,0) (-4.8359186e-07,0) (-4.383976412e-10,0) (4.728265869e-05,0) (-2.460472004e-05,0) (1.694065895e-21,0) (-2.363189478e-06,0) (-2.370021663e-09,0) (8.113426703e-05,0) (4.633762748e-05,0) (-3.388131789e-21,0) (4.377140531e-06,0) (1.020286978e-08,0) (-0.0001297244959,0) (5.329791181e-06,0) (0,0) (2.608211516e-06,0) (5.109376555e-09,0) (-7.478601065e-05,0) (-8.104477101e-06,0) (-2.117582368e-22,0) (2.294365191e-08,0) (2.306630744e-11,0) (-8.580644554e-06,0) (-3.260951961e-06,0) (3.176373552e-22,0) (1.665974296e-07,0) (1.845548891e-10,0) (-6.225489374e-06,0) (-9.221360182e-06,0) (-1.058791184e-21,0) (8.144303457e-12,0) (9.464237249e-07,0) (8.301088797e-10,0) (-2.75231617e-05,0) (-8.470329473e-22,0) (3.061043593e-07,0) (3.46976802e-10,0) (-1.102623907e-05,0) (-8.675920207e-06,0) (0,0) (1.540103829e-07,0) (1.701788421e-10,0) (-1.243366357e-06,0) (-1.244429397e-05,0) -(-0.1031484994,0) (-0.1582389931,0) (-0.01103408529,0) (0.01890852676,0) (0.005635747778,0) (-0.002521811017,0) (-0.001083411895,0) (0.0001668520179,0) (0.0003833158109,0) (-4.739128419e-05,0) (-4.040597076e-05,0) (-1.348309736e-05,0) (2.298693686e-05,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.05227305888,0) (-0.01059774195,0) (0.0007747731012,0) (-0.0019584315,0) (0.0004996371268,0) (-2.324558865e-05,0) (-2.394669917e-05,0) (-7.276138765e-06,0) (8.264461737e-06,0) (1.838973561e-05,0) (-3.937587669e-06,0) (5.221874471e-07,0) (3.804800733e-06,0) (0.003294115467,0) (-5.03865326e-06,0) (8.521411615e-05,0) (8.201923211e-05,0) (2.067578889e-07,0) (-0.06268694534,0) (-4.461298473e-06,0) (-1.290932257e-08,0) (0.008994674824,0) (-1.566384246e-05,0) (4.177343488e-08,0) (-0.003310642092,0) (-1.39836719e-10,0) (4.550215342e-08,0) (0.0007412007475,0) (3.371897556e-11,0) (-2.135755559e-07,0) (-6.832987415e-06,0) (4.698765009e-11,0) (-6.359455323e-07,0) (-9.524322186e-05,0) (-1.168207208e-06,0) (4.963625375e-11,0) (-6.28702053e-07,0) (-3.114294568e-11,0) (4.478956051e-07,0) (5.538823034e-05,0) (2.230680666e-12,0) (1.774135912e-06,0) (2.782574797e-06,0) (4.907366656e-10,0) (-1.097731374e-06,0) (-3.17533837e-06,0) (-3.19703626e-11,0) (1.108827398e-06,0) (2.817216516e-06,0) (-3.361210006e-11,0) (1.86095787e-06,0) (7.359028335e-06,0) (-4.33680869e-19,0) (-0.0002852827998,0) (-0.0001093982521,0) (-4.438290702e-06,0) (0.0612087474,0) (-1.029992064e-18,0) (-5.672657459e-06,0) (-0.001412428299,0) (2.934551322e-06,0) (-0.05104289932,0) (5.844527336e-20,0) (2.315741605e-10,0) (2.280737082e-08,0) (1.99657454e-10,0) (-0.001386055972,0) (2.202285663e-20,0) (-2.218079148e-11,0) (-0.0001285817751,0) (-2.334044471e-07,0) (0.000791823636,0) (2.435219723e-21,0) (1.565366177e-10,0) (1.581342029e-11,0) (4.980086481e-09,0) (-0.0001439248567,0) (-5.029258124e-22,0) (1.452916396e-08,0) (4.223110462e-10,0) (-7.100395277e-06,0) (-2.760876911e-05,0) (-2.580803511e-22,0) (-1.566034151e-09,0) (1.050286112e-10,0) (1.196885357e-08,0) (-1.098689074e-05,0) (3.374896899e-22,0) (2.91435589e-09,0) (1.016381852e-10,0) (-1.778376473e-07,0) (-1.275177812e-05,0) (-2.64697796e-22,0) (-1.096373539e-09,0) (-2.116571378e-11,0) (3.816288677e-07,0) (7.029415091e-05,0) (1.852884572e-22,0) (-1.759502375e-08,0) (2.032173328e-10,0) (-7.041690834e-06,0) (-9.234442056e-06,0) (2.584939414e-25,0) (3.778730592e-10,0) (3.371220318e-09,0) (-7.123309402e-13,0) (-3.067020323e-09,0) (8.602678371e-23,0) (-4.169374205e-09,0) (-8.414027643e-11,0) (2.098761966e-06,0) (5.54532595e-06,0) (-9.926167351e-23,0) (-9.442255645e-09,0) (-1.131400601e-10,0) (5.032227385e-06,0) (1.055086583e-06,0) -(-0.01870392239,0) (-0.005666223889,0) (0.0009130148356,0) (-0.0008914920716,0) (0.0002236517882,0) (-2.053323155e-05,0) (-1.204518931e-05,0) (-6.483972824e-07,0) (5.785990742e-06,0) (3.633038737e-06,0) (-1.276610461e-06,0) (3.596617133e-07,0) (1.548277966e-06,0) (-2.360738584e-06,0) (0.03012600167,0) (-0.02661648463,0) (-0.0001013170272,0) (-3.750412402e-07,0) (-0.02410440258,0) (-6.473083976e-06,0) (7.86788762e-09,0) (0.002917313174,0) (-6.209909928e-05,0) (-5.982724624e-08,0) (-0.0008486929007,0) (8.153315783e-11,0) (1.767015122e-07,0) (0.0001524684146,0) (8.386966911e-07,0) (3.506062313e-10,0) (-2.412940959e-06,0) (-1.03489508e-10,0) (4.325370202e-07,0) (-2.813110036e-05,0) (-7.01336135e-11,0) (-1.272009523e-06,0) (-6.63678222e-07,0) (2.141801211e-11,0) (7.20810683e-07,0) (2.366970548e-05,0) (-1.012439589e-10,0) (-8.825188043e-08,0) (-4.302174199e-06,0) (2.262857906e-07,0) (1.343906619e-10,0) (-5.823968285e-07,0) (3.391481584e-11,0) (1.224153722e-06,0) (1.147096904e-06,0) (3.625524393e-11,0) (1.96618936e-06,0) (7.619721113e-07,0) (1.734723476e-18,0) (-0.0002399783128,0) (4.429670749e-06,0) (0.05862781591,0) (-0.03565811638,0) (-4.33680869e-19,0) (3.134980355e-06,0) (-0.003476641184,0) (-3.253025745e-06,0) (-0.01396980218,0) (-2.710505431e-20,0) (1.136629777e-07,0) (1.037074105e-06,0) (-5.146353529e-09,0) (-0.00182694799,0) (0,0) (-1.794104248e-08,0) (-0.0001795896175,0) (1.81405844e-07,0) (0.0008103216112,0) (3.388131789e-21,0) (2.246534061e-07,0) (1.460111013e-07,0) (-3.147057971e-10,0) (-0.0001426984983,0) (8.470329473e-22,0) (3.165906529e-08,0) (-1.530328056e-10,0) (-5.880359132e-08,0) (-2.120406882e-05,0) (1.058791184e-22,0) (-1.426401455e-08,0) (4.771886505e-10,0) (-9.224878544e-07,0) (5.639404919e-06,0) (0,0) (-1.923071812e-09,0) (3.061682836e-11,0) (1.365337013e-07,0) (3.050917587e-06,0) (-5.065341759e-10,0) (4.235164736e-22,0) (3.046264775e-12,0) (6.475738678e-07,0) (1.629354359e-05,0) (0,0) (9.109682087e-09,0) (-1.822953378e-10,0) (-1.485812014e-06,0) (-3.477463597e-06,0) (0,0) (6.655951109e-09,0) (-5.74589738e-07,0) (1.527580882e-10,0) (1.947745163e-07,0) (-7.857037501e-09,0) (1.058791184e-22,0) (9.043149751e-11,0) (3.224418723e-06,0) (6.035756443e-07,0) (-1.058791184e-22,0) (-1.558553604e-08,0) (1.607444256e-10,0) (1.658167214e-06,0) (-5.670284416e-07,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (-0.04650791085,0) (0.05339342277,0) (-0.006885511921,0) (0.06582968803,0) (0.005456254699,0) (-0.07128594273,0) (-0.03665265658,0) (0.0950451253,0) (-0.05839246872,0) (-0.01466480269,0) (0.05142104472,0) (-0.03675624203,0) (0.005432133241,0) (0.01745725437,0) (-0.02288938761,0) (-0.009939728979,0) (0.02293658634,0) (-0.01299685736,0) (0.0009346548029,0) (0.006928611436,0) (-0.007863266239,0) (-0.002292082329,0) (0.006540467226,0) (-0.004248384897,0) (0.0007511567492,0) (0.001716174845,0) (-0.002467331594,0) (-0.0007179158406,0) (0.001916075511,0) (-0.00119815967,0) (0.0004232273626,0) (0.0002078052141,0) (-0.0006310325767,0) (-7.912951479e-05,0) (0.0003179706291,0) (-0.0002388411143,0) (9.769891917e-05,0) (1.648674933e-05,0) (-0.0001141856685,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.0008172287347,0) (-0.00280811301,0) (-2.968547159e-06,0) (-0.0003536329813,0) (-3.496572923e-05,0) (-6.325669591e-05,0) (-6.601323888e-06,0) (-3.855489098e-06,0) (-5.64426606e-06,0) (-1.765983606e-06,0) (-2.054917267e-07,0) (-3.991282865e-08,0) (-5.172202734e-07,0) (0.02065391313,0) (-0.01874311768,0) (-2.839598951e-06,0) (0.001922210209,0) (-0.002074278464,0) (-0.00378330843,0) (0.0001500682067,0) (-0.0001650648726,0) (-0.0009079186671,0) (0.0002733644709,0) (-0.0002099969132,0) (-0.000231728652,0) (-1.467732161e-05,0) (1.720867302e-05,0) (-0.0003162091956,0) (-5.007846613e-06,0) (-1.116087826e-05,0) (-1.792231646e-06,0) (-1.513850326e-06,0) (-4.757169056e-06,0) (-3.730015351e-05,0) (1.142734126e-05,0) (-6.157851779e-06,0) (-5.327686836e-06,0) (-9.058902923e-07,0) (3.219670478e-06,0) (-1.974033463e-05,0) (-3.048988288e-07,0) (6.478429413e-07,0) (-3.602534663e-07,0) (-9.787608102e-07,0) (-1.968661101e-06,0) (2.586840302e-06,0) (-8.801255416e-07,0) (3.545150804e-06,0) (-3.546258443e-06,0) (-5.013482219e-07,0) (2.325538149e-06,0) (-2.752961059e-06,0) (-8.67361738e-19,0) (0.001081420423,0) (0.03683490234,0) (-0.03477674716,0) (-0.0005078099275,0) (-4.878909776e-19,0) (2.592330502e-05,0) (0.01315681817,0) (-0.01006015626,0) (-0.00380032527,0) (-3.388131789e-20,0) (5.636850501e-07,0) (2.319957752e-05,0) (-2.332385676e-05,0) (-0.001925267643,0) (1.355252716e-20,0) (7.146844379e-11,0) (0.0005565170578,0) (-0.0006475377206,0) (0.0001477002938,0) (-5.505714157e-21,0) (5.082980186e-07,0) (-3.210905036e-06,0) (1.660522345e-06,0) (-0.0003762065667,0) (8.470329473e-22,0) (1.287500472e-06,0) (-1.21303074e-05,0) (4.235369307e-05,0) (-4.425289125e-05,0) (2.117582368e-21,0) (2.385662691e-06,0) (-1.929410409e-05,0) (2.488333702e-06,0) (-1.793936166e-05,0) (1.270549421e-21,0) (9.350130233e-07,0) (-1.152532848e-05,0) (1.956543723e-05,0) (-2.651761138e-05,0) (-3.176373552e-22,0) (4.335966598e-08,0) (-3.011056923e-07,0) (1.016306761e-06,0) (-1.070586547e-05,0) (-5.29395592e-23,0) (2.401865277e-07,0) (-1.133223818e-06,0) (-4.430724484e-06,0) (4.166258622e-06,0) (5.29395592e-23,0) (-3.427165247e-10,0) (7.278680151e-07,0) (-3.068866642e-06,0) (2.654190084e-06,0) (5.29395592e-23,0) (1.64497237e-07,0) (-1.697154657e-06,0) (6.207993408e-06,0) (-6.345131393e-06,0) (1.588186776e-22,0) (9.009374426e-08,0) (-1.008053064e-06,0) (2.068286092e-06,0) (-1.472957506e-06,0) -(0.006996970788,0) (0.02648866226,0) (0.0003000404036,0) (0.002950260254,0) (0.0006171004868,0) (0.0004135149158,0) (0.0001280079144,0) (1.038046461e-05,0) (7.090544467e-05,0) (4.394723674e-06,0) (3.264040205e-06,0) (2.168226279e-06,0) (4.463860426e-06,0) (-0.0197553569,0) (0.003169952543,0) (-0.001001057065,0) (0.0004308924624,0) (-0.002770174458,0) (0.0345564099,0) (-1.463376791e-05,0) (-0.000104145023,0) (0.01124524197,0) (8.482571159e-05,0) (-0.0002556526339,0) (0.0007911948594,0) (-5.099026091e-06,0) (4.407108103e-06,0) (0.003311940614,0) (-7.032866511e-06,0) (-6.547290259e-06,0) (2.17110916e-05,0) (-3.549379796e-06,0) (-6.299896001e-06,0) (0.000423327795,0) (-5.761058672e-06,0) (3.827017946e-05,0) (1.944685014e-05,0) (-3.72626502e-07,0) (3.938617866e-06,0) (0.0001271093011,0) (-3.486916283e-07,0) (8.356272429e-08,0) (4.1630784e-06,0) (-8.202975706e-07,0) (-1.144619623e-06,0) (2.265084665e-06,0) (-7.4172067e-07,0) (7.646110877e-06,0) (7.028005024e-06,0) (-4.193909109e-07,0) (3.865265904e-06,0) (1.465586965e-06,0) (0,0) (6.036641356e-05,0) (-0.03492203779,0) (0.0248557125,0) (-0.01195439354,0) (-6.505213035e-19,0) (3.980786074e-05,0) (0.003563583505,0) (-0.01195701747,0) (0.009444674026,0) (4.33680869e-19,0) (-6.897536925e-07,0) (3.64387135e-06,0) (-0.0001452631239,0) (0.01867201301,0) (2.710505431e-20,0) (-5.822791923e-09,0) (-0.0001187671813,0) (-0.0006389488347,0) (0.0008196149627,0) (5.421010862e-20,0) (-2.79072853e-06,0) (-2.5788548e-06,0) (-2.32486879e-05,0) (0.002942712557,0) (0,0) (-3.739146372e-07,0) (-7.534478148e-06,0) (1.681240677e-06,0) (0.0004156051342,0) (-3.388131789e-21,0) (-3.079720876e-07,0) (-2.842608235e-05,0) (-3.184660905e-05,0) (0.0002010405408,0) (-6.776263578e-21,0) (-1.028458898e-07,0) (-7.315992414e-06,0) (1.276502879e-05,0) (0.000267013377,0) (-5.020416579e-10,0) (0,0) (-2.62595584e-08,0) (1.224289849e-06,0) (3.061993997e-05,0) (0,0) (-2.317871362e-08,0) (-1.732223519e-06,0) (6.817124161e-06,0) (1.627774038e-05,0) (1.058791184e-22,0) (-4.037988332e-08,0) (5.914031108e-06,0) (-3.068111963e-06,0) (-1.752991826e-06,0) (-2.137047511e-08,0) (0,0) (-1.256735752e-06,0) (1.465535905e-05,0) (2.691960492e-06,0) (3.97046694e-23,0) (-4.779938991e-09,0) (-9.112894287e-07,0) (1.646291736e-06,0) (-4.897159534e-07,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0.04715705099,0) (0.02200154358,0) (0.1067286698,0) (0.02202428562,0) (0.17465834,0) (0.07141108635,0) (0.1000731762,0) (0.06107260141,0) (0.05848951507,0) (0.07464156391,0) (0.02679567375,0) (0.03681690082,0) (0.0005054573398,0) (0.06266017622,0) (0.02292789445,0) (0.005280432053,0) (0.03058641266,0) (0.0130185903,0) (4.477807442e-05,0) (0.02165478127,0) (0.007876474827,0) (0.007860017766,0) (0.003864294445,0) (0.004255431357,0) (8.845381168e-05,0) (0.006720385865,0) (0.002471484938,0) (0.00210919833,0) (0.001197367089,0) (0.001200149458,0) (0.0001043161214,0) (0.001637026661,0) (0.0006321024569,0) (0.0005029865235,0) (0.0001561530053,0) (0.0002392339673,0) (3.034857158e-05,0) (0.0002847271479,0) (0.0001143827643,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.01859825451,0) (0.06390622139,0) (6.755733522e-05,0) (0.008047876816,0) (0.000795739924,0) (0.001439577538,0) (0.0001502310143,0) (8.77421026e-05,0) (0.0001284505699,0) (4.018974268e-05,0) (4.676521113e-06,0) (9.083245777e-07,0) (1.177074896e-05,0) (0.008307597159,0) (0.01873421824,0) (2.900333486e-08,0) (0.0006427535352,0) (0.002074227619,0) (0.09464435446,0) (4.913666987e-05,0) (0.0001652571093,0) (0.02141018871,0) (0.0001298657198,0) (0.0002102475176,0) (0.004281715785,0) (1.48520788e-05,0) (7.255278567e-06,0) (0.007171961804,0) (5.016290298e-06,0) (8.510401907e-06,0) (0.0004140783138,0) (1.516294083e-06,0) (4.817059328e-06,0) (0.0009909456417,0) (1.489550748e-05,0) (6.169100968e-06,0) (3.434653454e-06,0) (9.073734504e-07,0) (4.539544298e-06,0) (0.0003945514261,0) (3.054738133e-07,0) (6.950824905e-07,0) (5.407485655e-07,0) (9.805598736e-07,0) (1.955658851e-06,0) (8.959547428e-06,0) (8.815473737e-07,0) (7.766105257e-06,0) (1.471985915e-05,0) (5.021918199e-07,0) (5.508541434e-06,0) (1.701290994e-05,0) (6.505213035e-19,0) (0.0003326380646,0) (0.01469282168,0) (0.03477374258,0) (0.02107630735,0) (3.252606517e-19,0) (1.4617477e-05,0) (0.006316834902,0) (0.01007236596,0) (0.03687902424,0) (-2.059984128e-18,0) (2.1761899e-07,0) (8.535073252e-06,0) (2.333908512e-05,0) (0.04386035073,0) (3.388131789e-21,0) (2.12877168e-11,0) (0.0001802105721,0) (0.0006483001201,0) (0.0003180537728,0) (-1.423015351e-19,0) (1.934512603e-07,0) (3.215971441e-06,0) (3.60306497e-07,0) (0.008593632408,0) (9.95263713e-21,0) (3.785330716e-07,0) (1.214894467e-05,0) (8.316142622e-05,0) (0.0002399527039,0) (-2.943439492e-20,0) (1.065981606e-06,0) (1.932844051e-05,0) (1.262102486e-07,0) (0.0007885513656,0) (-1.905824131e-20,0) (2.756248094e-07,0) (1.154541289e-05,0) (1.377253857e-05,0) (0.0004170207456,0) (1.334076892e-20,0) (1.372912756e-08,0) (3.015892013e-07,0) (1.65338949e-06,0) (0.000225542516,0) (-7.27918939e-22,0) (1.277388161e-07,0) (1.135050709e-06,0) (1.097300767e-05,0) (1.837231386e-05,0) (0,0) (2.299303327e-09,0) (3.123692756e-07,0) (3.074695245e-06,0) (1.039677966e-06,0) (6.882142696e-22,0) (4.239383809e-08,0) (1.699838817e-06,0) (1.420235844e-05,0) (2.844450342e-05,0) (-2.779326858e-22,0) (2.066829092e-08,0) (1.009713072e-06,0) (8.983597702e-06,0) (1.122430129e-06,0) -(0.002275502001,0) (0.008614442707,0) (9.757687426e-05,0) (0.0009594613604,0) (0.0002006887602,0) (0.0001344801982,0) (4.162976727e-05,0) (3.375856311e-06,0) (2.305933326e-05,0) (1.429218846e-06,0) (1.061506507e-06,0) (7.051341767e-07,0) (1.451702978e-06,0) (0.0197919787,0) (0.04576663462,0) (0.003064285325,0) (0.006931890706,0) (0.002776848162,0) (0.01119185278,0) (0.0002405708549,0) (0.0001044086936,0) (0.003665373389,0) (0.0006670496628,0) (0.0002562656941,0) (0.0002404198937,0) (5.111300906e-06,0) (1.4983551e-05,0) (0.001075955865,0) (7.907287005e-06,0) (6.558427154e-06,0) (1.279841726e-05,0) (3.558166217e-06,0) (2.878390215e-06,0) (0.0001413922296,0) (5.77551433e-06,0) (2.981494912e-05,0) (2.987868567e-06,0) (3.734951082e-07,0) (2.875161334e-06,0) (4.065104123e-05,0) (3.494642989e-07,0) (1.349041095e-09,0) (2.229293379e-06,0) (2.854297262e-07,0) (1.146538659e-06,0) (2.970188831e-06,0) (7.434637826e-07,0) (5.101582132e-06,0) (1.477386609e-06,0) (4.203040616e-07,0) (2.548710907e-06,0) (2.065288763e-07,0) (0,0) (0.00381120272,0) (0.03499174491,0) (0.02310179904,0) (0.06236724561,0) (0,0) (0.001009633108,0) (0.0298739139,0) (0.0119849688,0) (0.002478434544,0) (0,0) (1.099057939e-05,0) (0.0003399323208,0) (0.000145642374,0) (0.00607617128,0) (-5.421010862e-20,0) (2.892328027e-07,0) (0.001438457613,0) (0.0006405979474,0) (0.0003449598824,0) (-1.355252716e-20,0) (4.286455912e-05,0) (9.37661877e-06,0) (2.331100428e-05,0) (0.0009596164022,0) (-3.388131789e-21,0) (5.739308119e-06,0) (7.551310522e-06,0) (1.320365452e-05,0) (0.0001350056191,0) (-1.694065895e-21,0) (4.544913819e-06,0) (2.850249043e-05,0) (6.63333715e-06,0) (0.0001130091179,0) (0,0) (1.524088828e-06,0) (7.334038823e-06,0) (2.344902083e-05,0) (8.380257917e-05,0) (1.053196334e-08,0) (2.117582368e-22,0) (2.631799423e-08,0) (5.681500867e-07,0) (9.841263226e-06,0) (0,0) (4.420829531e-07,0) (1.736699721e-06,0) (1.043708995e-06,0) (1.023766845e-05,0) (-4.235164736e-22,0) (6.41372051e-07,0) (3.151162781e-06,0) (3.071688387e-06,0) (5.020121102e-06,0) (3.257591355e-07,0) (-1.058791184e-22,0) (1.259765493e-06,0) (8.095219997e-06,0) (2.749685552e-07,0) (5.29395592e-23,0) (2.494036453e-07,0) (9.133146635e-07,0) (8.753312292e-07,0) (1.469478759e-06,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (-0.06251041084,0) (-0.02312716577,0) (0.08563757661,0) (-0.03295383896,0) (0.1276303109,0) (-0.0946764719,0) (0.1030608728,0) (-0.02550019993,0) (-0.07756067291,0) (0.0673281933,0) (-0.01850623727,0) (-0.04882195603,0) (-0.003708510075,0) (0.03411132104,0) (-0.03040281096,0) (0.01146538456,0) (0.005797797515,0) (-0.01726318207,0) (-0.0006699053532,0) (0.01111428551,0) (-0.01044438016,0) (0.007652943725,0) (-0.002009962988,0) (-0.005642980737,0) (-0.0004988181503,0) (0.003776045562,0) (-0.003277227412,0) (0.002131064227,0) (-0.0005395912934,0) (-0.001591472934,0) (-0.0002399694735,0) (0.00107812515,0) (-0.0008381556767,0) (0.0004388767921,0) (-0.000121633216,0) (-0.0003172435761,0) (-5.066889512e-05,0) (0.0002023292553,0) (-0.0001516603602,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.01463443893,0) (0.0502859929,0) (5.315895081e-05,0) (0.006332645988,0) (0.0006261451749,0) (0.001132762731,0) (0.0001182125239,0) (6.904177173e-05,0) (0.0001010741099,0) (3.162416853e-05,0) (3.679821814e-06,0) (7.147348455e-07,0) (9.262068479e-06,0) (-0.009313391119,0) (-0.02485528906,0) (2.158341618e-06,0) (-0.0009642227618,0) (-0.002752518914,0) (0.07418909208,0) (-7.592983434e-05,0) (-0.0002192988358,0) (0.01682223941,0) (-0.0001078732284,0) (-0.0002790327477,0) (0.003401814836,0) (-1.969725446e-05,0) (-7.352308847e-06,0) (0.005644203073,0) (-6.658775869e-06,0) (1.481098257e-05,0) (0.000313481762,0) (-2.012532792e-06,0) (7.210277511e-06,0) (0.0007750485214,0) (2.629829628e-06,0) (-8.184795682e-06,0) (6.597129124e-06,0) (-1.204185994e-06,0) (9.994640053e-07,0) (0.0003122689409,0) (-4.05238327e-07,0) (3.652865445e-08,0) (6.786751343e-07,0) (-1.303286861e-06,0) (2.952998217e-06,0) (4.80736646e-06,0) (-1.169838614e-06,0) (3.186477351e-06,0) (1.376395317e-05,0) (-6.663773466e-07,0) (2.4025461e-06,0) (1.489570409e-05,0) (0,0) (-0.0005631257223,0) (-0.01669247861,0) (-0.04613755182,0) (0.01626508487,0) (0,0) (-8.490090396e-06,0) (-0.005142060373,0) (-0.01336677666,0) (0.03065388695,0) (4.33680869e-19,0) (-2.601810625e-07,0) (-1.103815192e-05,0) (-3.097608686e-05,0) (0.03451093673,0) (1.016439537e-20,0) (-3.774812831e-11,0) (-0.0002830758546,0) (-0.0008602105367,0) (0.0001283005263,0) (-1.355252716e-19,0) (-2.367183435e-07,0) (-4.268285589e-06,0) (-9.777383985e-07,0) (0.006761023897,0) (5.717472394e-21,0) (-6.8364659e-07,0) (-1.612492008e-05,0) (3.081896923e-05,0) (0.0002141657343,0) (1.270549421e-21,0) (-9.918547086e-07,0) (-2.565648968e-05,0) (-1.776462113e-06,0) (0.0006078986526,0) (-1.651714247e-20,0) (-4.959282655e-07,0) (-1.532305696e-05,0) (-4.336478179e-06,0) (0.0003342957791,0) (-1.058791184e-22,0) (-2.228367745e-08,0) (-4.002309418e-07,0) (4.816661111e-07,0) (0.0001780711778,0) (2.911675756e-22,0) (-8.446585262e-08,0) (-1.506512155e-06,0) (1.160455761e-05,0) (1.071428823e-05,0) (-1.32348898e-23,0) (1.991555512e-09,0) (-3.123218372e-07,0) (-4.078876345e-06,0) (-1.21309979e-06,0) (-4.63221143e-22,0) (-9.18463487e-08,0) (-2.255974777e-06,0) (6.034671105e-06,0) (2.62148383e-05,0) (-9.264422861e-23,0) (-5.222643711e-08,0) (-1.339863123e-06,0) (5.215289271e-06,0) (1.954276747e-06,0) -(-0.003549268956,0) (-0.01343658413,0) (-0.0001521978757,0) (-0.001496542925,0) (-0.0003130291189,0) (-0.0002097587224,0) (-6.49330304e-05,0) (-5.265573046e-06,0) (-3.596734947e-05,0) (-2.229258458e-06,0) (-1.655710296e-06,0) (-1.099849986e-06,0) (-2.264328624e-06,0) (-0.02625611128,0) (0.03211320294,0) (0.003063780447,0) (0.004903291854,0) (-0.003682232749,0) (-0.01756345289,0) (0.0001924317751,0) (-0.0001384529431,0) (-0.005697965572,0) (0.0004391819773,0) (-0.000339842748,0) (-0.0004140257883,0) (-6.779946273e-06,0) (7.980037421e-06,0) (-0.001680857268,0) (1.12590218e-05,0) (-8.694108655e-06,0) (-6.689394366e-06,0) (-4.720166369e-06,0) (6.909971635e-06,0) (-0.0002119300653,0) (-7.660029649e-06,0) (-6.315433174e-06,0) (-1.237961572e-05,0) (-4.954443068e-07,0) (-7.960133638e-07,0) (-6.499462137e-05,0) (-4.636178842e-07,0) (-6.185385077e-08,0) (-1.451794079e-06,0) (8.328918145e-07,0) (-1.520070884e-06,0) (5.349167374e-07,0) (-9.861286637e-07,0) (-1.906935634e-06,0) (-4.174253742e-06,0) (-5.575045068e-07,0) (-9.86831296e-07,0) (-9.470422496e-07,0) (-8.67361738e-19,0) (0.002828880622,0) (-0.04641579736,0) (-0.001282046906,0) (0.05600852667,0) (-4.33680869e-19,0) (0.0007314810716,0) (0.01984557116,0) (-0.01589400852,0) (-0.005236486429,0) (-1.084202172e-19,0) (8.808045082e-06,0) (0.0002536017549,0) (-0.0001931366618,0) (-0.009468612536,0) (-2.710505431e-20,0) (2.225154949e-07,0) (0.001174190644,0) (-0.0008494051089,0) (-0.0003564038288,0) (0,0) (3.442811834e-05,0) (9.018351715e-06,0) (-3.090440545e-05,0) (-0.001490739516,0) (0,0) (4.609909213e-06,0) (-1.002012226e-05,0) (8.682331798e-06,0) (-0.0002109323487,0) (-2.541098842e-21,0) (3.659487597e-06,0) (-3.781049624e-05,0) (2.895905309e-05,0) (-6.605743182e-05,0) (-3.388131789e-21,0) (1.226847403e-06,0) (-9.727843585e-06,0) (8.073711052e-06,0) (-0.0001377292668,0) (8.320855081e-09,0) (4.235164736e-22,0) (-3.491009668e-08,0) (-4.928831568e-07,0) (-1.562019084e-05,0) (0,0) (3.508562431e-07,0) (-2.303710515e-06,0) (-4.342307445e-06,0) (-4.529449878e-06,0) (2.117582368e-22,0) (5.141031785e-07,0) (-2.076654126e-06,0) (-4.074920738e-06,0) (5.103558646e-06,0) (2.617659823e-07,0) (-2.117582368e-22,0) (-1.67094328e-06,0) (-4.923886331e-06,0) (-1.818172343e-06,0) (0,0) (1.916922473e-07,0) (-1.21138326e-06,0) (-5.785828522e-07,0) (1.476275077e-06,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (-1.352214984e-05,0) (-0.001516611742,0) (-0.1815201801,0) (0.001529805043,0) (-0.06184377689,0) (-1.018009989e-05,0) (0.0100894037,0) (0.002033057526,0) (1.382974519e-06,0) (0.01420621429,0) (0.001104706844,0) (1.705669872e-06,0) (0.0001243303037,0) (-0.00416102366,0) (-4.957044252e-07,0) (-2.976561439e-05,0) (-6.894765397e-05,0) (-1.167054917e-08,0) (2.109279228e-05,0) (-0.001212800252,0) (-1.454478514e-07,0) (0.0009931054366,0) (0.0001417158764,0) (1.284692074e-07,0) (1.74742353e-05,0) (-0.0004985374759,0) (-5.936260932e-08,0) (0.0002260156754,0) (4.076642451e-05,0) (3.037514902e-08,0) (1.036691613e-05,0) (-0.0002489763116,0) (-3.115196758e-08,0) (0.0001252345373,0) (6.832339961e-06,0) (1.454786252e-08,0) (2.35247391e-06,0) (-7.547512391e-05,0) (-1.072474815e-08,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.09590197642,0) (-0.1401646988,0) (-0.002985838421,0) (0.01780950172,0) (0.003649578912,0) (-0.002683292763,0) (-0.0006693273457,0) (0.0002766372549,0) (0.0002942175258,0) (-8.172856693e-05,0) (-2.758117892e-05,0) (-4.976700232e-06,0) (2.128685141e-05,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.01470014553,0) (0.01382695546,0) (-0.0003039299897,0) (-4.71970691e-05,0) (9.103863821e-05,0) (0.000163575563,0) (-9.961621062e-05,0) (-2.390391798e-05,0) (5.002522838e-05,0) (1.012786441e-05,0) (-7.88201233e-06,0) (6.23141672e-06,0) (8.301457933e-06,0) (-1.457628927e-06,0) (-0.04559196335,0) (-0.02299600676,0) (0.008358714646,0) (1.091418551e-06,0) (0.01108001222,0) (0.0001174809611,0) (1.180077153e-08,0) (-0.0004752201501,0) (-5.445124097e-06,0) (-7.103876161e-10,0) (-3.157105631e-06,0) (-9.404551985e-10,0) (-3.878017573e-05,0) (0.0003533999622,0) (2.141472362e-05,0) (3.593291973e-09,0) (7.639707444e-05,0) (-1.211070338e-09,0) (-2.325109286e-05,0) (-0.0002136717171,0) (-9.75273999e-10,0) (-2.050776465e-05,0) (2.993656717e-05,0) (-1.380484768e-10,0) (-1.387528677e-05,0) (6.936217859e-05,0) (-1.771963067e-10,0) (2.805955058e-08,0) (-1.784210166e-05,0) (8.180342229e-07,0) (4.010017397e-11,0) (-1.893631504e-05,0) (-1.860366417e-10,0) (-5.633722485e-06,0) (1.251832324e-05,0) (-1.176319828e-10,0) (-2.00923065e-06,0) (4.53804567e-06,0) (6.938893904e-18,0) (0.005994823377,0) (-7.444950055e-08,0) (-0.003435817589,0) (-0.1102116782,0) (-8.67361738e-19,0) (0.001606299893,0) (0.01230377284,0) (1.525748086e-06,0) (0.001045366821,0) (-1.355252716e-20,0) (1.798364778e-05,0) (0.0001386402286,0) (1.737100717e-08,0) (0.0002209886563,0) (-3.388131789e-21,0) (4.610365646e-07,0) (6.817192153e-05,0) (6.679547034e-09,0) (-7.354140116e-06,0) (0,0) (6.988489398e-05,0) (4.1665471e-05,0) (2.546341754e-08,0) (0.0001696441168,0) (1.016439537e-20,0) (9.362266021e-06,0) (-1.188796278e-08,0) (8.158151922e-05,0) (-8.232622071e-05,0) (8.470329473e-21,0) (7.420259143e-06,0) (-4.143616472e-09,0) (-3.256963719e-05,0) (-0.000166117142,0) (-1.694065895e-21,0) (2.488480358e-06,0) (-1.386998724e-09,0) (-6.937063544e-05,0) (5.261433427e-05,0) (1.696781277e-08,0) (4.235164736e-22,0) (-1.09460803e-11,0) (-7.964340301e-06,0) (1.633611477e-05,0) (6.352747104e-22,0) (7.199518179e-07,0) (-5.160270666e-10,0) (3.653434698e-06,0) (-3.163718351e-05,0) (-4.235164736e-22,0) (1.047169952e-06,0) (6.944596701e-07,0) (-6.615208134e-10,0) (-2.354858994e-05,0) (5.29902449e-07,0) (-4.235164736e-22,0) (-2.91384935e-10,0) (-1.338045233e-05,0) (4.545817498e-06,0) (-2.117582368e-22,0) (3.968631531e-07,0) (-1.826512278e-10,0) (3.288624992e-07,0) (-1.102174207e-05,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (-0.0006078052747,0) (-0.0818026201,0) (0.01767374832,0) (-0.0250530803,0) (0.0006937595959,0) (1.027075844e-05,0) (-0.002366336259,0) (0.005365100259,0) (-1.161785369e-06,0) (-0.003148568976,0) (0.008918855406,0) (-2.258227789e-06,0) (-0.000268341271,0) (-0.0007367991449,0) (3.905716485e-07,0) (8.455219191e-05,0) (-0.0001803428258,0) (3.712316421e-08,0) (-6.785138147e-05,0) (-0.0004386388888,0) (1.970672368e-07,0) (-0.0002692972928,0) (0.0006562681882,0) (-1.502743643e-07,0) (-4.688880524e-05,0) (-9.016405225e-05,0) (5.330567966e-08,0) (-7.059613306e-05,0) (0.000163597705,0) (-3.608223219e-08,0) (-6.507889457e-05,0) (-2.173113939e-05,0) (3.416188227e-08,0) (-2.087522514e-05,0) (6.50316769e-05,0) (-1.736311552e-08,0) (-2.275006274e-05,0) (-1.101125681e-06,0) (9.567778006e-09,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.04202610262,0) (0.03766036634,0) (-0.0002528927387,0) (-0.0001366916373,0) (0.0001812799621,0) (0.0005351885142,0) (-0.0001892377717,0) (-0.0001218656003,0) (0.0001180684127,0) (5.370641011e-05,0) (-1.654387459e-05,0) (7.072475403e-06,0) (2.363837055e-05,0) (-0.0261051813,0) (3.944842813e-05,0) (6.279587704e-05,0) (0.002416007754,0) (-3.425597545e-06,0) (0.03365443351,0) (5.171884636e-05,0) (-1.935851884e-08,0) (-0.001175570287,0) (-2.300267057e-06,0) (6.987811895e-10,0) (-1.390588258e-05,0) (-1.638194283e-07,0) (-2.644343681e-05,0) (0.0009279537109,0) (1.325991733e-09,0) (-3.274005584e-05,0) (0.0004008668033,0) (-1.924329641e-10,0) (2.950263984e-05,0) (-0.0005718721755,0) (-2.727688202e-07,0) (-1.794592821e-09,0) (3.284267252e-05,0) (-1.361779008e-10,0) (-1.772004666e-05,0) (0.0002140658698,0) (-3.061634471e-11,0) (-2.18074922e-06,0) (8.592680047e-06,0) (-5.505024031e-10,0) (1.478868857e-06,0) (-3.305527393e-05,0) (-1.455247171e-10,0) (-6.902743869e-06,0) (3.953000872e-05,0) (-7.166854507e-11,0) (-7.303006439e-06,0) (3.947982096e-05,0) (-4.33680869e-19,0) (0.001679108527,0) (-0.05045358095,0) (6.252449675e-05,0) (0.02200366493,0) (3.794707604e-19,0) (-0.0001201094063,0) (0.006398207008,0) (-1.827623733e-06,0) (0.004689634674,0) (-7.115076757e-20,0) (-1.145585351e-06,0) (2.575624477e-05,0) (-1.745081276e-08,0) (0.0006705783039,0) (-4.235164736e-22,0) (-3.62487904e-09,0) (2.484116704e-05,0) (-7.604241534e-09,0) (-5.076304556e-06,0) (-1.355252716e-20,0) (-1.840484349e-07,0) (4.390893776e-10,0) (1.025957234e-05,0) (0.0005620420754,0) (-8.470329473e-22,0) (-6.94792267e-07,0) (2.373663017e-09,0) (0.0001593070373,0) (-0.000251256781,0) (1.270549421e-21,0) (1.955830264e-06,0) (-1.022102714e-08,0) (-6.579728783e-06,0) (-0.0002342789111,0) (-5.929230631e-21,0) (7.688532502e-07,0) (-5.11828032e-09,0) (-5.264350621e-05,0) (0.0001274524706,0) (4.870439447e-21,0) (7.264731325e-09,0) (-2.310334681e-11,0) (-1.395951307e-05,0) (6.869909882e-05,0) (-1.799945013e-21,0) (8.860179887e-08,0) (-1.848524135e-10,0) (1.541787193e-05,0) (-4.066423592e-05,0) (1.058791184e-22,0) (-5.464056351e-11,0) (4.061638748e-07,0) (-8.316854796e-10,0) (-1.078115126e-05,0) (-8.470329473e-22,0) (7.888849008e-08,0) (-3.475255682e-10,0) (-2.522531665e-05,0) (3.889316497e-05,0) (-7.940933881e-22,0) (3.533132544e-08,0) (-1.704590834e-10,0) (-5.400560006e-06,0) (9.482860461e-06,0) -(-0.03354517603,0) (-0.05146129038,0) (-0.003588421894,0) (0.006149288282,0) (0.001832815333,0) (-0.0008201243352,0) (-0.0003523390349,0) (5.426235325e-05,0) (0.0001246590734,0) (-1.541223556e-05,0) (-1.314052468e-05,0) (-4.384871105e-06,0) (7.475638015e-06,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.0411321873,0) (-0.008339062533,0) (0.0006096469769,0) (-0.001541034196,0) (0.0003931502828,0) (-1.829129434e-05,0) (-1.884297833e-05,0) (-5.725387206e-06,0) (6.503070519e-06,0) (1.447036132e-05,0) (-3.098376047e-06,0) (4.108944902e-07,0) (2.993889774e-06,0) (-0.003692931319,0) (6.684943117e-06,0) (0.006341380197,0) (-0.0001230406465,0) (-2.74369599e-07,0) (-0.04913856285,0) (6.893948142e-06,0) (1.71308782e-08,0) (0.007067222778,0) (1.30112031e-05,0) (-5.544016143e-08,0) (-0.002630298682,0) (1.854554824e-10,0) (-4.611068783e-08,0) (0.0005833114635,0) (-4.475959074e-11,0) (-3.716938248e-07,0) (-5.172975408e-06,0) (-6.23653338e-11,0) (-9.518968852e-07,0) (-7.449260097e-05,0) (-2.062491615e-07,0) (-6.585442473e-11,0) (-1.207582855e-06,0) (4.133017006e-11,0) (9.861243906e-08,0) (4.383718543e-05,0) (-2.959197357e-12,0) (9.323612458e-08,0) (3.492314996e-06,0) (-6.522504806e-10,0) (-1.657548191e-06,0) (-1.703770788e-06,0) (4.242558686e-11,0) (4.549582158e-07,0) (2.634266796e-06,0) (4.460116865e-11,0) (8.116553402e-07,0) (6.443219229e-06,0) (-3.252606517e-18,0) (0.0004829576041,0) (0.0001242870854,0) (5.888692216e-06,0) (0.04723623807,0) (-1.029992064e-18,0) (3.294780257e-06,0) (0.001149751687,0) (-3.89436725e-06,0) (-0.04242691604,0) (-1.778769189e-20,0) (-2.768655948e-10,0) (-2.949608241e-08,0) (-2.64989249e-10,0) (-0.001090599805,0) (1.016439537e-20,0) (3.933175975e-11,0) (0.0002019770285,0) (3.09697559e-07,0) (0.0003194157652,0) (-2.541098842e-21,0) (-1.91547415e-10,0) (-2.098780887e-11,0) (-1.35141104e-08,0) (-0.0001132326063,0) (6.088049308e-22,0) (-2.624027897e-08,0) (-5.605204444e-10,0) (-2.631350537e-06,0) (-2.46417407e-05,0) (2.713152409e-22,0) (1.457134286e-09,0) (-1.394145316e-10,0) (-1.684666273e-07,0) (-8.469855444e-06,0) (2.117582368e-22,0) (-5.243764032e-09,0) (-1.348940671e-10,0) (5.599469354e-08,0) (-1.022219073e-05,0) (1.694065895e-21,0) (1.779518342e-09,0) (2.80884512e-11,0) (1.111762798e-07,0) (5.549890313e-05,0) (-2.514629062e-22,0) (1.163451117e-08,0) (-2.697230875e-10,0) (-7.446974375e-06,0) (-5.385302829e-06,0) (-7.754818243e-26,0) (3.272970404e-10,0) (-3.370708344e-09,0) (9.449748969e-13,0) (3.578609755e-09,0) (7.610061635e-23,0) (9.0329589e-09,0) (1.116684355e-10,0) (8.917771118e-07,0) (5.110647247e-06,0) (4.63221143e-23,0) (2.385951371e-08,0) (1.501339326e-10,0) (2.921382097e-06,0) (1.83702408e-06,0) -(0.02917389264,0) (0.008838028944,0) (-0.001424096841,0) (0.001390526193,0) (-0.0003488462539,0) (3.20272016e-05,0) (1.878777362e-05,0) (1.011353251e-06,0) (-9.024838172e-06,0) (-5.66671952e-06,0) (1.99122386e-06,0) (-5.609910046e-07,0) (-2.414963783e-06,0) (3.131764434e-06,0) (0.02113859613,0) (-0.02661209925,0) (-7.166687639e-05,0) (4.97322524e-07,0) (0.03782720766,0) (-5.177796953e-06,0) (-1.043334764e-08,0) (-0.004535076858,0) (-4.088571921e-05,0) (7.933896824e-08,0) (0.001461529417,0) (-1.081506332e-10,0) (9.410884509e-08,0) (-0.0002381860178,0) (1.194202806e-06,0) (-4.647773923e-10,0) (1.261180451e-06,0) (1.372863619e-10,0) (1.038364612e-06,0) (4.216515965e-05,0) (9.30177865e-11,0) (2.694383648e-07,0) (2.749813509e-06,0) (-2.841116772e-11,0) (-1.995626923e-07,0) (-3.784413631e-05,0) (1.343156087e-10,0) (4.046369427e-06,0) (2.801726811e-06,0) (6.603081789e-07,0) (-1.781739592e-10,0) (-1.048868705e-07,0) (-4.49845343e-11,0) (-4.575800789e-07,0) (-3.241043012e-06,0) (-4.809009413e-11,0) (-7.612857105e-07,0) (-3.494038197e-06,0) (0,0) (-0.0001781248725,0) (-5.875863018e-06,0) (-0.00325358254,0) (-0.03202255516,0) (-8.67361738e-19,0) (2.27129912e-06,0) (-0.002309571161,0) (4.314038673e-06,0) (0.02951567944,0) (0,0) (9.109152453e-08,0) (7.736946357e-07,0) (6.824590353e-09,0) (0.002846967579,0) (0,0) (-1.380258363e-08,0) (-0.00014659622,0) (-2.405362853e-07,0) (-0.000837203801,0) (0,0) (1.804379704e-07,0) (1.404322281e-07,0) (4.172190712e-10,0) (0.0002216784642,0) (0,0) (2.542909593e-08,0) (2.030650731e-10,0) (-3.866749846e-08,0) (3.31291695e-05,0) (-2.64697796e-23,0) (-1.148514282e-08,0) (-6.330232694e-10,0) (-4.027290359e-06,0) (-3.296411943e-06,0) (0,0) (-1.548017159e-09,0) (-4.061005464e-11,0) (4.700979461e-08,0) (-5.014173148e-06,0) (-4.001910504e-10,0) (-8.470329473e-22,0) (-4.040786576e-12,0) (-5.617850981e-07,0) (-2.586134062e-05,0) (5.29395592e-23,0) (7.229839581e-09,0) (2.418124915e-10,0) (6.181658491e-06,0) (1.538533616e-06,0) (-2.64697796e-23,0) (5.335196032e-09,0) (3.786615396e-07,0) (-2.026498209e-10,0) (1.980117903e-07,0) (-6.313576244e-09,0) (0,0) (-1.199476441e-10,0) (-1.961240248e-06,0) (-3.991018329e-06,0) (-2.117582368e-22,0) (-1.197908084e-08,0) (-2.132048396e-10,0) (-1.09602752e-06,0) (-5.6965094e-07,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0.0616499241,0) (-0.05612508663,0) (-0.005524837477,0) (-0.09849767551,0) (0.003987118413,0) (0.0945105571,0) (-0.03774692604,0) (-0.03968505748,0) (0.07743198352,0) (-0.01322794725,0) (-0.0355135707,0) (0.04874151795,0) (-0.03985523459,0) (0.009503484414,0) (0.03035175017,0) (-0.02158210048,0) (0.004347737172,0) (0.01723436331,0) (-0.01398296519,0) (0.00355609991,0) (0.01042686528,0) (-0.002231696874,0) (-0.003401939794,0) (0.005633636669,0) (-0.004236003097,0) (0.0009642830837,0) (0.003271720014,0) (-0.0007253584191,0) (-0.0008634759321,0) (0.001588834351,0) (-0.000973594934,0) (0.0001368578979,0) (0.0008367370361,0) (-6.904381328e-05,0) (-0.0002476788081,0) (0.0003167226213,0) (-0.0001631146387,0) (1.171560823e-05,0) (0.0001513990305,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.0006430541106,0) (-0.002209624475,0) (-2.335865557e-06,0) (-0.0002782637621,0) (-2.751354053e-05,0) (-4.977489973e-05,0) (-5.19439452e-06,0) (-3.03377501e-06,0) (-4.441312862e-06,0) (-1.389602407e-06,0) (-1.616956109e-07,0) (-3.140627274e-08,0) (-4.069859621e-07,0) (-0.02315446542,0) (0.02486709624,0) (-0.0002113144789,0) (-0.002883591821,0) (0.002752586386,0) (-0.002965630851,0) (-0.0002318971576,0) (0.0002190437346,0) (-0.0007133624739,0) (-0.0002270707624,0) (0.0002787001547,0) (-0.0001841079618,0) (1.946548646e-05,0) (-1.743881751e-05,0) (-0.0002488508671,0) (6.647567465e-06,0) (-1.942370938e-05,0) (-1.356825305e-06,0) (2.009289265e-06,0) (-7.120632471e-06,0) (-2.917357685e-05,0) (2.017518414e-06,0) (8.169870928e-06,0) (-1.023318319e-05,0) (1.202217678e-06,0) (7.088695561e-07,0) (-1.562354862e-05,0) (4.044755587e-07,0) (3.404607548e-08,0) (-4.521418737e-07,0) (1.300895681e-06,0) (-2.972631304e-06,0) (1.388004183e-06,0) (1.167951802e-06,0) (1.454595627e-06,0) (-3.315964822e-06,0) (6.652579445e-07,0) (1.014281671e-06,0) (-2.410363274e-06,0) (2.168404345e-18,0) (-0.001830745551,0) (-0.04184804203,0) (0.04614153827,0) (-0.0003918889316,0) (8.67361738e-19,0) (-1.505671622e-05,0) (-0.0107099765,0) (0.01335057348,0) (-0.003158834692,0) (-1.355252716e-20,0) (-6.739309617e-07,0) (-3.000331146e-05,0) (3.095587548e-05,0) (-0.001514871375,0) (1.355252716e-20,0) (-1.267303586e-10,0) (-0.0008741803541,0) (0.0008591989311,0) (5.958119995e-05,0) (-2.117582368e-21,0) (-6.219833605e-07,0) (4.261561381e-06,0) (-4.506042692e-06,0) (-0.0002959797984,0) (-2.117582368e-22,0) (-2.325279806e-06,0) (1.61001834e-05,0) (1.56959449e-05,0) (-3.949717088e-05,0) (-4.235164736e-21,0) (-2.219766983e-06,0) (2.561091166e-05,0) (-3.502433912e-05,0) (-1.382955411e-05,0) (5.29395592e-21,0) (-1.682357216e-06,0) (1.529640096e-05,0) (-6.160454092e-06,0) (-2.125727712e-05,0) (0,0) (-7.037685441e-08,0) (3.9958929e-07,0) (2.960709067e-07,0) (-8.452535281e-06,0) (1.058791184e-22,0) (-1.588206347e-07,0) (1.504087388e-06,0) (-4.685734219e-06,0) (2.429661067e-06,0) (0,0) (-2.96845995e-10,0) (-7.277574765e-07,0) (4.071144148e-06,0) (-3.096918026e-06,0) (-4.367513634e-22,0) (-3.56383646e-07,0) (2.252412441e-06,0) (2.637815303e-06,0) (-5.847758739e-06,0) (-1.32348898e-23,0) (-2.276567175e-07,0) (1.337660336e-06,0) (1.200711633e-06,0) (-2.564584225e-06,0) -(-0.01091369342,0) (-0.04131632783,0) (-0.0004679952334,0) (-0.004601739364,0) (-0.0009625373212,0) (-0.000644989832,0) (-0.0001996634222,0) (-1.619117925e-05,0) (-0.0001105964721,0) (-6.854775913e-06,0) (-5.091165187e-06,0) (-3.381943069e-06,0) (-6.962613624e-06,0) (0.02620752866,0) (0.002224269497,0) (-0.001000892129,0) (0.0003047929621,0) (0.003673383099,0) (-0.05422961591,0) (-1.170549913e-05,0) (0.0001381032981,0) (-0.01748116626,0) (5.58488008e-05,0) (0.0003390297478,0) (-0.001362512354,0) (6.763664198e-06,0) (2.347166408e-06,0) (-0.005173910596,0) (-1.001395262e-05,0) (8.679345149e-06,0) (-1.134781363e-05,0) (4.708510543e-06,0) (-1.51237669e-05,0) (-0.0006345178053,0) (7.640857198e-06,0) (-8.106428758e-06,0) (-8.057400327e-05,0) (4.942920937e-07,0) (-1.090440533e-06,0) (-0.0002032277807,0) (4.625928184e-07,0) (-3.831370518e-06,0) (-2.711142746e-06,0) (-2.393650938e-06,0) (1.517526643e-06,0) (4.079308649e-07,0) (9.838166031e-07,0) (-2.85806264e-06,0) (-1.98571424e-05,0) (5.56293275e-07,0) (-1.496586117e-06,0) (-6.720478032e-06,0) (-2.168404345e-19,0) (4.480721443e-05,0) (0.04632333236,0) (-0.001379381288,0) (-0.01073557061,0) (0,0) (2.884086942e-05,0) (0.002367327906,0) (0.01585694053,0) (-0.01995489753,0) (0,0) (-5.527808322e-07,0) (2.718459272e-06,0) (0.0001926337373,0) (-0.02909695075,0) (0,0) (-4.47964897e-09,0) (-9.694780846e-05,0) (0.0008472184569,0) (-0.0008468054569,0) (5.421010862e-20,0) (-2.241467871e-06,0) (-2.480320484e-06,0) (3.082178995e-05,0) (-0.004571428628,0) (1.355252716e-20,0) (-3.003345517e-07,0) (9.997786745e-06,0) (1.10553403e-06,0) (-0.0006493401365,0) (0,0) (-2.479739066e-07,0) (3.770913572e-05,0) (-0.0001390322279,0) (-0.0001175146047,0) (0,0) (-8.278796515e-08,0) (9.703906891e-06,0) (4.395115462e-06,0) (-0.0004388356181,0) (-3.966417036e-10,0) (0,0) (3.483258316e-08,0) (-1.062099363e-06,0) (-4.860039762e-05,0) (-8.470329473e-22,0) (-1.83956344e-08,0) (2.297772888e-06,0) (-2.83623588e-05,0) (-7.201757854e-06,0) (0,0) (-3.23672139e-08,0) (-3.897417542e-06,0) (4.070176231e-06,0) (-1.782127644e-06,0) (-1.71723915e-08,0) (0,0) (1.666924655e-06,0) (-8.914065602e-06,0) (-1.780002849e-05,0) (0,0) (-3.673872713e-09,0) (1.208697071e-06,0) (-1.088177979e-06,0) (-4.919808827e-07,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (-0.06251041084,0) (-0.02312716577,0) (0.08563757661,0) (-0.03295383896,0) (0.1276303109,0) (-0.0946764719,0) (0.1030608728,0) (-0.02550019993,0) (-0.07756067291,0) (0.0673281933,0) (-0.01850623727,0) (-0.04882195603,0) (-0.003708510075,0) (0.03411132104,0) (-0.03040281096,0) (0.01146538456,0) (0.005797797515,0) (-0.01726318207,0) (-0.0006699053532,0) (0.01111428551,0) (-0.01044438016,0) (0.007652943725,0) (-0.002009962988,0) (-0.005642980737,0) (-0.0004988181503,0) (0.003776045562,0) (-0.003277227412,0) (0.002131064227,0) (-0.0005395912934,0) (-0.001591472934,0) (-0.0002399694735,0) (0.00107812515,0) (-0.0008381556767,0) (0.0004388767921,0) (-0.000121633216,0) (-0.0003172435761,0) (-5.066889512e-05,0) (0.0002023292553,0) (-0.0001516603602,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.01463443893,0) (0.0502859929,0) (5.315895081e-05,0) (0.006332645988,0) (0.0006261451749,0) (0.001132762731,0) (0.0001182125239,0) (6.904177173e-05,0) (0.0001010741099,0) (3.162416853e-05,0) (3.679821814e-06,0) (7.147348455e-07,0) (9.262068479e-06,0) (-0.009313391119,0) (-0.02485528906,0) (2.158341618e-06,0) (-0.0009642227618,0) (-0.002752518914,0) (0.07418909208,0) (-7.592983434e-05,0) (-0.0002192988358,0) (0.01682223941,0) (-0.0001078732284,0) (-0.0002790327477,0) (0.003401814836,0) (-1.969725446e-05,0) (-7.352308847e-06,0) (0.005644203073,0) (-6.658775869e-06,0) (1.481098257e-05,0) (0.000313481762,0) (-2.012532792e-06,0) (7.210277511e-06,0) (0.0007750485214,0) (2.629829628e-06,0) (-8.184795682e-06,0) (6.597129124e-06,0) (-1.204185994e-06,0) (9.994640053e-07,0) (0.0003122689409,0) (-4.05238327e-07,0) (3.652865445e-08,0) (6.786751343e-07,0) (-1.303286861e-06,0) (2.952998217e-06,0) (4.80736646e-06,0) (-1.169838614e-06,0) (3.186477351e-06,0) (1.376395317e-05,0) (-6.663773466e-07,0) (2.4025461e-06,0) (1.489570409e-05,0) (0,0) (-0.0005631257223,0) (-0.01669247861,0) (-0.04613755182,0) (0.01626508487,0) (2.439454888e-19,0) (-8.490090396e-06,0) (-0.005142060373,0) (-0.01336677666,0) (0.03065388695,0) (4.607859233e-19,0) (-2.601810625e-07,0) (-1.103815192e-05,0) (-3.097608686e-05,0) (0.03451093673,0) (1.016439537e-20,0) (-3.774812831e-11,0) (-0.0002830758546,0) (-0.0008602105367,0) (0.0001283005263,0) (-1.355252716e-19,0) (-2.367183435e-07,0) (-4.268285589e-06,0) (-9.777383985e-07,0) (0.006761023897,0) (6.035109749e-21,0) (-6.8364659e-07,0) (-1.612492008e-05,0) (3.081896923e-05,0) (0.0002141657343,0) (1.482307658e-21,0) (-9.918547086e-07,0) (-2.565648968e-05,0) (-1.776462113e-06,0) (0.0006078986526,0) (-1.672890071e-20,0) (-4.959282655e-07,0) (-1.532305696e-05,0) (-4.336478179e-06,0) (0.0003342957791,0) (1.058791184e-22,0) (-2.228367745e-08,0) (-4.002309418e-07,0) (4.816661111e-07,0) (0.0001780711778,0) (2.382280164e-22,0) (-8.446585262e-08,0) (-1.506512155e-06,0) (1.160455761e-05,0) (1.071428823e-05,0) (-1.32348898e-23,0) (1.991555512e-09,0) (-3.123218372e-07,0) (-4.078876345e-06,0) (-1.21309979e-06,0) (-3.97046694e-22,0) (-9.18463487e-08,0) (-2.255974777e-06,0) (6.034671105e-06,0) (2.62148383e-05,0) (-6.6174449e-23,0) (-5.222643711e-08,0) (-1.339863123e-06,0) (5.215289271e-06,0) (1.954276747e-06,0) -(-0.003549268956,0) (-0.01343658413,0) (-0.0001521978757,0) (-0.001496542925,0) (-0.0003130291189,0) (-0.0002097587224,0) (-6.49330304e-05,0) (-5.265573046e-06,0) (-3.596734947e-05,0) (-2.229258458e-06,0) (-1.655710296e-06,0) (-1.099849986e-06,0) (-2.264328624e-06,0) (-0.02625611128,0) (0.03211320294,0) (0.003063780447,0) (0.004903291854,0) (-0.003682232749,0) (-0.01756345289,0) (0.0001924317751,0) (-0.0001384529431,0) (-0.005697965572,0) (0.0004391819773,0) (-0.000339842748,0) (-0.0004140257883,0) (-6.779946273e-06,0) (7.980037421e-06,0) (-0.001680857268,0) (1.12590218e-05,0) (-8.694108655e-06,0) (-6.689394366e-06,0) (-4.720166369e-06,0) (6.909971635e-06,0) (-0.0002119300653,0) (-7.660029649e-06,0) (-6.315433174e-06,0) (-1.237961572e-05,0) (-4.954443068e-07,0) (-7.960133638e-07,0) (-6.499462137e-05,0) (-4.636178842e-07,0) (-6.185385077e-08,0) (-1.451794079e-06,0) (8.328918145e-07,0) (-1.520070884e-06,0) (5.349167374e-07,0) (-9.861286637e-07,0) (-1.906935634e-06,0) (-4.174253742e-06,0) (-5.575045068e-07,0) (-9.86831296e-07,0) (-9.470422496e-07,0) (0,0) (0.002828880622,0) (-0.04641579736,0) (-0.001282046906,0) (0.05600852667,0) (-4.33680869e-19,0) (0.0007314810716,0) (0.01984557116,0) (-0.01589400852,0) (-0.005236486429,0) (0,0) (8.808045082e-06,0) (0.0002536017549,0) (-0.0001931366618,0) (-0.009468612536,0) (-5.421010862e-20,0) (2.225154949e-07,0) (0.001174190644,0) (-0.0008494051089,0) (-0.0003564038288,0) (0,0) (3.442811834e-05,0) (9.018351715e-06,0) (-3.090440545e-05,0) (-0.001490739516,0) (0,0) (4.609909213e-06,0) (-1.002012226e-05,0) (8.682331798e-06,0) (-0.0002109323487,0) (-5.082197684e-21,0) (3.659487597e-06,0) (-3.781049624e-05,0) (2.895905309e-05,0) (-6.605743182e-05,0) (-3.388131789e-21,0) (1.226847403e-06,0) (-9.727843585e-06,0) (8.073711052e-06,0) (-0.0001377292668,0) (8.320855081e-09,0) (0,0) (-3.491009668e-08,0) (-4.928831568e-07,0) (-1.562019084e-05,0) (-1.058791184e-22,0) (3.508562431e-07,0) (-2.303710515e-06,0) (-4.342307445e-06,0) (-4.529449878e-06,0) (2.117582368e-22,0) (5.141031785e-07,0) (-2.076654126e-06,0) (-4.074920738e-06,0) (5.103558646e-06,0) (2.617659823e-07,0) (0,0) (-1.67094328e-06,0) (-4.923886331e-06,0) (-1.818172343e-06,0) (0,0) (1.916922473e-07,0) (-1.21138326e-06,0) (-5.785828522e-07,0) (1.476275077e-06,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0.08286250691,0) (0.02431037598,0) (0.06871438145,0) (0.04930718395,0) (0.09326492082,0) (0.1255216072,0) (0.1061377676,0) (0.01064733091,0) (0.1028501942,0) (0.06073138578,0) (0.01278119823,0) (0.06474155448,0) (0.02720911517,0) (0.01856972471,0) (0.04031468813,0) (0.02489475137,0) (0.001098999625,0) (0.02289168401,0) (0.01002216348,0) (0.005704391145,0) (0.01384947954,0) (0.007451325099,0) (0.001045456362,0) (0.007482962107,0) (0.00281298841,0) (0.002121681757,0) (0.004345654447,0) (0.002153156807,0) (0.0002431658316,0) (0.002110392238,0) (0.000552027313,0) (0.0007100396512,0) (0.001111378275,0) (0.0003829383684,0) (9.474450534e-05,0) (0.0004206906223,0) (8.459498418e-05,0) (0.0001437766924,0) (0.0002010868071,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.01151542489,0) (0.03956862145,0) (4.182927054e-05,0) (0.004982979502,0) (0.0004926958775,0) (0.0008913388619,0) (9.301808191e-05,0) (5.432701179e-05,0) (7.953235012e-05,0) (2.488416119e-05,0) (2.895547407e-06,0) (5.624045764e-07,0) (7.288058967e-06,0) (0.01044095573,0) (0.03297631033,0) (0.0001606173415,0) (0.001446472844,0) (0.003652617632,0) (0.05815477759,0) (0.0001173327325,0) (0.0002910130741,0) (0.01321743319,0) (8.960512001e-05,0) (0.000370321967,0) (0.002702735249,0) (2.612306591e-05,0) (7.450636785e-06,0) (0.004441884828,0) (8.839061027e-06,0) (2.57761275e-05,0) (0.0002373242255,0) (2.671175919e-06,0) (1.079249771e-05,0) (0.0006061888617,0) (4.643013261e-07,0) (1.085909936e-05,0) (1.26714713e-05,0) (1.598089418e-06,0) (2.20050347e-07,0) (0.0002471462147,0) (5.375848748e-07,0) (1.919689554e-09,0) (8.5178208e-07,0) (1.732231442e-06,0) (4.45895687e-06,0) (2.579457553e-06,0) (1.552409348e-06,0) (1.30742986e-06,0) (1.287012362e-05,0) (8.842413405e-07,0) (1.047868629e-06,0) (1.304197819e-05,0) (-6.505213035e-19,0) (0.0009533201785,0) (0.01896428393,0) (0.06121497228,0) (0.0125521507,0) (-3.252606517e-19,0) (4.931195373e-06,0) (0.004185764753,0) (0.017738704,0) (0.02547954574,0) (-1.219727444e-18,0) (3.110674544e-07,0) (1.42753078e-05,0) (4.111206382e-05,0) (0.02715447401,0) (1.355252716e-20,0) (6.693630906e-11,0) (0.0004446572613,0) (0.001141388293,0) (5.175547801e-05,0) (-2.710505431e-20,0) (2.896624921e-07,0) (5.66493273e-06,0) (2.653219922e-06,0) (0.005319222649,0) (4.446922973e-21,0) (1.23469439e-06,0) (2.140210977e-05,0) (1.142126714e-05,0) (0.0001911500099,0) (4.235164736e-21,0) (9.22882494e-07,0) (3.405631521e-05,0) (2.500444833e-05,0) (0.000468632467,0) (-1.270549421e-20,0) (8.923175134e-07,0) (2.033674126e-05,0) (1.365401367e-06,0) (0.0002679810755,0) (-3.388131789e-21,0) (3.61685241e-08,0) (5.311357506e-07,0) (1.40319171e-07,0) (0.0001405914279,0) (7.676236084e-22,0) (5.585209319e-08,0) (1.999539627e-06,0) (1.227245632e-05,0) (6.248313256e-06,0) (2.64697796e-23,0) (1.724997877e-09,0) (3.122744061e-07,0) (5.411018301e-06,0) (1.415448965e-06,0) (8.999725065e-22,0) (1.989853278e-07,0) (2.994061638e-06,0) (2.564169571e-06,0) (2.415994883e-05,0) (-5.29395592e-23,0) (1.319703087e-07,0) (1.777963699e-06,0) (3.027655855e-06,0) (3.402615008e-06,0) -(0.00553605759,0) (0.02095803515,0) (0.0002373942959,0) (0.002334268809,0) (0.0004882546943,0) (0.0003271762106,0) (0.0001012808553,0) (8.213104159e-06,0) (5.610093811e-05,0) (3.477139478e-06,0) (2.582533942e-06,0) (1.715517459e-06,0) (3.531841012e-06,0) (0.03483145319,0) (0.02253296123,0) (0.003063275652,0) (0.003468356907,0) (0.004882815777,0) (0.02756244955,0) (0.0001539254955,0) (0.0001835979054,0) (0.008857709221,0) (0.0002891550959,0) (0.0004506771526,0) (0.0007129915528,0) (8.993340896e-06,0) (4.250060433e-06,0) (0.002625833686,0) (1.60314874e-05,0) (1.152525194e-05,0) (3.496369595e-06,0) (6.261644115e-06,0) (1.658833738e-05,0) (0.0003176578563,0) (1.01594509e-05,0) (1.337741548e-06,0) (5.129237847e-05,0) (6.572109132e-07,0) (2.20383207e-07,0) (0.0001039161773,0) (6.150600883e-07,0) (2.836013573e-06,0) (9.454592508e-07,0) (2.430401289e-06,0) (2.015296627e-06,0) (9.633593424e-08,0) (1.307998808e-06,0) (7.127991709e-07,0) (1.179406541e-05,0) (7.39491486e-07,0) (3.820896297e-07,0) (4.342680978e-06,0) (0,0) (0.002099748074,0) (0.06156955733,0) (7.114789054e-05,0) (0.05029811769,0) (0,0) (0.0005299594019,0) (0.01318363225,0) (0.02107802791,0) (0.01106375401,0) (2.168404345e-19,0) (7.058923414e-06,0) (0.0001891960434,0) (0.0002561189377,0) (0.01475511786,0) (0,0) (1.711878633e-07,0) (0.0009584736151,0) (0.001126274353,0) (0.0003682274248,0) (-2.710505431e-20,0) (2.7652106e-05,0) (8.673773527e-06,0) (4.097130545e-05,0) (0.002315825677,0) (0,0) (3.702756937e-06,0) (1.329608283e-05,0) (5.70924401e-06,0) (0.0003295600291,0) (2.541098842e-21,0) (2.946557407e-06,0) (5.015820037e-05,0) (0.0001264260713,0) (3.861267461e-05,0) (-6.776263578e-21,0) (9.875766575e-07,0) (1.29029779e-05,0) (2.779852115e-06,0) (0.0002263576027,0) (6.573952743e-09,0) (-4.235164736e-22,0) (4.630728464e-08,0) (4.275873786e-07,0) (2.47925857e-05,0) (3.705769144e-22,0) (2.784547616e-07,0) (3.05584326e-06,0) (1.806598778e-05,0) (2.003963724e-06,0) (4.235164736e-22,0) (4.120885495e-07,0) (1.368540015e-06,0) (5.405814955e-06,0) (5.188382974e-06,0) (2.103438461e-07,0) (-8.470329473e-22,0) (2.21632634e-06,0) (2.994934864e-06,0) (1.202228621e-05,0) (-1.058791184e-22,0) (1.473351266e-07,0) (1.60672927e-06,0) (3.824359347e-07,0) (1.483102828e-06,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (1.792468198e-05,0) (0.0015942032,0) (-0.1456492277,0) (-0.002288970907,0) (-0.04519188989,0) (1.349672706e-05,0) (0.01039062405,0) (-0.0008488810399,0) (-1.833908765e-06,0) (0.01281429128,0) (-0.0007629577502,0) (-2.261845447e-06,0) (-0.0009122039538,0) (-0.002265202916,0) (6.573132114e-07,0) (-6.462997956e-05,0) (-1.306935015e-05,0) (1.547562452e-08,0) (-0.0003155601183,0) (-0.000622467995,0) (1.928670741e-07,0) (0.0009669418372,0) (-7.371168797e-05,0) (-1.703585845e-07,0) (-9.854256778e-05,0) (-0.0002801178774,0) (7.871574193e-08,0) (0.0002283587626,0) (-1.837131481e-05,0) (-4.027933956e-08,0) (-2.384812022e-05,0) (-0.0001639726644,0) (4.130690869e-08,0) (0.000109272375,0) (-5.321956378e-06,0) (-1.92916415e-08,0) (-3.927606724e-06,0) (-5.36331914e-05,0) (1.42199673e-08,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.07546254497,0) (-0.1102916257,0) (-0.00234947156,0) (0.01401379174,0) (0.002871750125,0) (-0.002111406963,0) (-0.0005266747028,0) (0.0002176780091,0) (0.0002315114256,0) (-6.430989108e-05,0) (-2.170284735e-05,0) (-3.916024248e-06,0) (1.675001957e-05,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.02292890543,0) (-0.02156692623,0) (0.0004740621088,0) (7.361676329e-05,0) (-0.0001419997048,0) (-0.0002551409173,0) (0.0001553787796,0) (3.72847108e-05,0) (-7.802805272e-05,0) (-1.579718001e-05,0) (1.229415824e-05,0) (-9.719602051e-06,0) (-1.29483986e-05,0) (1.933695861e-06,0) (-0.03199064087,0) (-0.02299221789,0) (0.005912559672,0) (-1.447272914e-06,0) (-0.01738794072,0) (9.397260481e-05,0) (-1.564861596e-08,0) (0.0007387482168,0) (-3.585040966e-06,0) (9.420694424e-10,0) (5.436834395e-06,0) (1.247478056e-09,0) (-2.065379919e-05,0) (-0.0005520810976,0) (3.049198037e-05,0) (-4.763408986e-09,0) (-3.993073118e-05,0) (1.606572917e-09,0) (-5.581744661e-05,0) (0.0003202683844,0) (1.293499994e-09,0) (4.343975792e-06,0) (-0.0001240359772,0) (1.831224303e-10,0) (3.841493541e-06,0) (-0.0001108992143,0) (2.350780239e-10,0) (-1.286536979e-06,0) (1.161940272e-05,0) (2.387046427e-06,0) (-5.316445846e-11,0) (-3.410339354e-06,0) (2.467585767e-10,0) (2.105845968e-06,0) (-3.536965701e-05,0) (1.560307562e-10,0) (7.77950799e-07,0) (-2.080929823e-05,0) (5.204170428e-18,0) (0.004449681879,0) (9.875566194e-08,0) (0.0001906725663,0) (-0.09897492918,0) (-2.168404345e-19,0) (0.001163767271,0) (0.008173532278,0) (-2.023388919e-06,0) (-0.002208672077,0) (0,0) (1.441241402e-05,0) (0.000103430604,0) (-2.303572953e-08,0) (-0.0003443707994,0) (-1.694065895e-21,0) (3.546892966e-07,0) (5.564768243e-05,0) (-8.856789814e-09,0) (7.598111631e-06,0) (0,0) (5.613041285e-05,0) (4.007349356e-05,0) (-3.375795271e-08,0) (-0.0002635377927,0) (-6.776263578e-21,0) (7.519930189e-06,0) (1.577459173e-08,0) (5.364558862e-05,0) (0.0001286262247,0) (5.082197684e-21,0) (5.974666933e-06,0) (5.496789673e-09,0) (-0.0001421887402,0) (9.710076482e-05,0) (0,0) (2.003154677e-06,0) (1.839710283e-09,0) (-2.388494044e-05,0) (-8.647148753e-05,0) (1.340554525e-08,0) (-8.470329473e-22,0) (1.451967495e-11,0) (6.909246837e-06,0) (-2.592891019e-05,0) (0,0) (5.713850495e-07,0) (6.845034665e-10,0) (-1.519996164e-05,0) (1.399723361e-05,0) (-1.270549421e-21,0) (8.393777059e-07,0) (-4.576572648e-07,0) (8.775775864e-10,0) (-2.393998219e-05,0) (4.258067386e-07,0) (4.235164736e-22,0) (3.864907411e-10,0) (8.138608507e-06,0) (-3.005827211e-05,0) (-8.470329473e-22,0) (3.050299829e-07,0) (2.42261127e-10,0) (-2.173739453e-07,0) (-1.107271747e-05,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0.0008056940932,0) (0.08598772848,0) (0.01418116593,0) (0.03748567322,0) (0.0005069597758,0) (-1.361692173e-05,0) (-0.002436983511,0) (-0.002240139213,0) (1.540598429e-06,0) (-0.002840072602,0) (-0.006159742645,0) (2.994578451e-06,0) (0.001968803752,0) (-0.0004011031198,0) (-5.179052102e-07,0) (0.0001835878932,0) (-3.418482576e-05,0) (-4.922683088e-08,0) (0.001015095094,0) (-0.0002251307824,0) (-2.613155229e-07,0) (-0.0002622025914,0) (-0.0003413494461,0) (1.992736509e-07,0) (0.0002644203416,0) (-5.066131264e-05,0) (-7.068415912e-08,0) (-7.132799777e-05,0) (-7.372500718e-05,0) (4.784728731e-08,0) (0.0001497079056,0) (-1.431185483e-05,0) (-4.529799756e-08,0) (-1.821450758e-05,0) (-5.065552207e-05,0) (2.302489451e-08,0) (3.798269516e-05,0) (-7.824682005e-07,0) (-1.268593802e-08,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.03306914808,0) (0.02963387403,0) (-0.0001989941228,0) (-0.0001075587721,0) (0.0001426440602,0) (0.0004211246611,0) (-0.0001489058348,0) (-9.589258415e-05,0) (9.290468493e-05,0) (4.226005073e-05,0) (-1.301790565e-05,0) (5.565130283e-06,0) (1.860036328e-05,0) (0.02926571414,0) (-5.233749665e-05,0) (0.004673081751,0) (-0.00362435917,0) (4.545799097e-06,0) (0.02638077972,0) (-7.992001587e-05,0) (2.568906514e-08,0) (-0.0009236595288,0) (1.910721583e-06,0) (-9.273966112e-10,0) (-1.104819657e-05,0) (2.172620418e-07,0) (2.679708471e-05,0) (0.000730282638,0) (-1.760161639e-09,0) (-5.697878921e-05,0) (0.0003034798675,0) (2.554106455e-10,0) (4.416018281e-05,0) (-0.0004472785039,0) (-4.815784398e-08,0) (2.380958854e-09,0) (6.308274014e-05,0) (1.807232962e-10,0) (-3.901393542e-06,0) (0.0001694230918,0) (4.06153188e-11,0) (-1.146048646e-07,0) (1.07843805e-05,0) (7.316866297e-10,0) (2.233056699e-06,0) (-1.773625471e-05,0) (1.931154678e-10,0) (-2.832235242e-06,0) (3.696293445e-05,0) (9.509970693e-11,0) (-3.185200628e-06,0) (3.456667511e-05,0) (-2.168404345e-18,0) (-0.00284257667,0) (0.05732018934,0) (-8.295705307e-05,0) (0.01698074865,0) (-2.710505431e-19,0) (6.976167755e-05,0) (-0.005208299287,0) (2.425392242e-06,0) (0.003898029682,0) (-8.131516294e-20,0) (1.369639726e-06,0) (-3.330977184e-05,0) (2.316105747e-08,0) (0.0005276356672,0) (2.117582368e-22,0) (6.427763033e-09,0) (-3.902065515e-05,0) (1.008984649e-08,0) (-2.047743501e-06,0) (-1.694065895e-20,0) (2.252124931e-07,0) (-5.827660155e-10,0) (-2.784067985e-05,0) (0.0004421855303,0) (-3.388131789e-21,0) (1.25482395e-06,0) (-3.150489814e-09,0) (5.903793265e-05,0) (-0.0002242549974,0) (-3.388131789e-21,0) (-1.819824513e-06,0) (1.356734793e-08,0) (9.261243859e-05,0) (-0.0001806069212,0) (-7.835054762e-21,0) (-1.383388018e-06,0) (6.792974981e-09,0) (1.657555103e-05,0) (0.0001021695525,0) (2.329340605e-21,0) (-1.179134865e-08,0) (3.065983203e-11,0) (-4.066691132e-06,0) (5.42395716e-05,0) (-9.529120657e-22,0) (-5.858694103e-08,0) (2.453479878e-10,0) (1.630524542e-05,0) (-2.371439697e-05,0) (1.588186776e-22,0) (-4.732725524e-11,0) (-4.061021922e-07,0) (1.103310071e-09,0) (1.257948399e-05,0) (6.352747104e-22,0) (-1.70912097e-07,0) (4.612254458e-10,0) (-1.071839513e-05,0) (3.584446582e-05,0) (-4.235164736e-22,0) (-8.927826945e-08,0) (2.261947935e-10,0) (-3.135211927e-06,0) (1.651072366e-05,0) -(0.05232289484,0) (0.08026798496,0) (0.005597127326,0) (-0.009591500245,0) (-0.002858777782,0) (0.00127920865,0) (0.000549569281,0) (-8.463701011e-05,0) (-0.0001944399869,0) (2.403960497e-05,0) (2.049624931e-05,0) (6.839408132e-06,0) (-1.166030613e-05,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.2731656004,0) (0.01615280688,0) (-0.02892567571,0) (-0.00681892694,0) (0.00311081643,0) (-0.0001242414384,0) (9.142358452e-06,0) (0.0001499983368,0) (-0.0001504484689,0) (9.162783375e-05,0) (-7.145343949e-05,0) (6.119624794e-05,0) (-3.277313972e-05,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.2695462447,0) (0.02324389201,0) (-0.03424272561,0) (-0.004333899483,0) (0.002291534039,0) (4.332848919e-05,0) (0.0001066902242,0) (-2.294053818e-05,0) (1.892984583e-05,0) (-3.739677434e-05,0) (2.322309841e-05,0) (-2.861059199e-06,0) (6.880804962e-06,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.1208306479,0) (-0.009094799051,0) (-0.002843835608,0) (4.385357727e-05,0) (0.000101455379,0) (-2.497568383e-05,0) (2.882303202e-05,0) (4.591201175e-06,0) (1.25522063e-05,0) (2.574477926e-05,0) (9.479225358e-06,0) (3.178405029e-06,0) (8.85371498e-06,0) (1.738623898e-10,0) (-0.03001102387,0) (0.1997440824,0) (-0.0001221715915,0) (-1.474070406e-10,0) (-0.02386352647,0) (-3.161081699e-06,0) (8.892664166e-13,0) (-0.0003782332269,0) (5.069147332e-07,0) (1.658455888e-13,0) (1.114472307e-05,0) (-1.500172006e-14,0) (-4.573358943e-07,0) (5.007857078e-05,0) (2.271380542e-06,0) (1.920933975e-13,0) (-1.440347086e-05,0) (3.522406586e-14,0) (-3.493952407e-06,0) (4.251167502e-05,0) (1.184301307e-14,0) (8.749326325e-07,0) (-6.649639108e-06,0) (-7.916366537e-15,0) (-3.478571729e-06,0) (4.038721491e-05,0) (5.133587681e-14,0) (-1.83560613e-06,0) (3.443235877e-05,0) (6.48529231e-07,0) (4.700311397e-15,0) (3.713046695e-06,0) (-8.486490438e-15,0) (-1.351843834e-06,0) (9.719683219e-06,0) (-1.014688338e-14,0) (-1.550010209e-06,0) (1.674276403e-05,0) (-1.734723476e-18,0) (-0.000377473387,0) (-9.424695399e-12,0) (-0.008719428334,0) (0.06301289739,0) (-4.33680869e-19,0) (4.987671827e-06,0) (-0.00143187811,0) (-4.141268852e-10,0) (-0.005892254741,0) (1.694065895e-21,0) (1.859842766e-07,0) (4.229671091e-07,0) (-6.138141033e-13,0) (-6.644558929e-05,0) (8.470329473e-22,0) (-2.859798928e-08,0) (-8.511178364e-06,0) (1.891527865e-12,0) (-1.727510638e-05,0) (-8.470329473e-22,0) (3.662671398e-07,0) (6.488075772e-07,0) (-3.437640454e-13,0) (-2.522670586e-05,0) (0,0) (5.164395866e-08,0) (2.409182211e-13,0) (-3.633301909e-07,0) (1.293020884e-05,0) (1.058791184e-22,0) (-2.328816091e-08,0) (-6.937242073e-14,0) (4.52940866e-06,0) (-8.289612776e-06,0) (0,0) (-3.139926191e-09,0) (-5.790193243e-15,0) (-4.039157833e-07,0) (1.915478012e-06,0) (-8.160659869e-10,0) (8.470329473e-22,0) (-1.266989765e-15,0) (-9.077704595e-06,0) (2.704664962e-05,0) (0,0) (1.483552381e-08,0) (5.416556846e-14,0) (-5.200987241e-06,0) (1.074630952e-05,0) (0,0) (1.08671901e-08,0) (-1.266292565e-07,0) (-3.289808164e-14,0) (-9.136562887e-07,0) (-1.278080324e-08,0) (-4.235164736e-22,0) (-2.091688994e-14,0) (-5.329587217e-06,0) (9.978394523e-06,0) (6.352747104e-22,0) (-2.480045938e-08,0) (-3.21468247e-14,0) (6.229744764e-07,0) (4.252964659e-06,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (1.333601076e-05,0) (-0.003680518671,0) (0.01171062439,0) (0.004572524643,0) (-0.001931974151,0) (1.016225988e-05,0) (-0.003695330387,0) (0.003163975381,0) (-1.380679875e-06,0) (-0.002791090092,0) (0.002119938484,0) (-1.702859645e-06,0) (0.001336173644,0) (-0.001159269776,0) (4.948719016e-07,0) (5.602991138e-05,0) (-5.170347486e-05,0) (1.165106662e-08,0) (0.0004402708215,0) (-0.0003880446353,0) (1.452039402e-07,0) (-0.0002896023254,0) (0.0002398595806,0) (-1.282564785e-07,0) (0.0001483925852,0) (-0.0001273107664,0) (5.926285014e-08,0) (-7.692981325e-05,0) (6.523609042e-05,0) (-3.032478854e-08,0) (4.206025406e-05,0) (-3.160521265e-05,0) (3.109924057e-08,0) (-1.970181647e-05,0) (1.391253042e-05,0) (-1.452397306e-08,0) (7.57314583e-06,0) (-4.370287337e-06,0) (1.070626807e-08,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.004214043356,0) (0.006158998385,0) (0.0001312011809,0) (-0.0007825700286,0) (-0.000160366703,0) (0.0001179069761,0) (2.941101487e-05,0) (-1.215575976e-05,0) (-1.292825713e-05,0) (3.591247411e-06,0) (1.211948785e-06,0) (2.186819431e-07,0) (-9.353687809e-07,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.04520166927,0) (0.04251668573,0) (-0.0009345582901,0) (-0.0001451268835,0) (0.0002799358963,0) (0.0005029806326,0) (-0.0003063111856,0) (-7.350246924e-05,0) (0.0001538232273,0) (3.114230238e-05,0) (-2.423650254e-05,0) (1.916106456e-05,0) (2.552626129e-05,0) (1.454931824e-06,0) (-0.003157854218,0) (0.007512458075,0) (0.0005195851016,0) (-1.088795504e-06,0) (0.03421108654,0) (-7.146290097e-06,0) (-1.177097021e-08,0) (-0.001457959397,0) (-6.924319911e-07,0) (7.086881675e-10,0) (-1.038967993e-05,0) (9.381966906e-10,0) (-1.140640338e-05,0) (0.001087813846,0) (-1.904659493e-05,0) (-3.587190187e-09,0) (0.0001295991408,0) (1.20807976e-09,0) (5.088937078e-05,0) (-0.0006397323042,0) (9.728329649e-10,0) (-2.632356776e-05,0) (0.0001948452291,0) (1.377274291e-10,0) (-1.900743854e-05,0) (0.0002168844333,0) (1.768045232e-10,0) (1.738073434e-06,0) (-3.331910854e-05,0) (-2.35095165e-06,0) (-4.003305574e-11,0) (-1.444095283e-05,0) (1.856004633e-10,0) (-8.44366819e-06,0) (5.955031546e-05,0) (1.173764161e-10,0) (-3.04711323e-06,0) (3.220324779e-05,0) (-7.589415207e-19,0) (9.495322441e-05,0) (7.430118958e-08,0) (-0.00369666856,0) (0.02112509155,0) (6.505213035e-19,0) (6.333326623e-05,0) (0.001467685891,0) (-1.522189737e-06,0) (0.003983623004,0) (2.710505431e-20,0) (-1.128629076e-06,0) (1.486140405e-06,0) (-1.732577337e-08,0) (0.0006790959101,0) (8.470329473e-22,0) (-9.281519799e-09,0) (-5.628658706e-06,0) (-6.662351652e-09,0) (-1.747322974e-05,0) (4.065758147e-20,0) (-4.549907229e-06,0) (-1.145926933e-05,0) (-2.539534721e-08,0) (0.0005202223217,0) (-6.776263578e-21,0) (-6.099495322e-07,0) (1.186146372e-08,0) (1.038789438e-05,0) (-0.0002534353773,0) (0,0) (-5.02811008e-07,0) (4.132508469e-09,0) (0.000156366619,0) (-0.0002955184562,0) (0,0) (-1.679232679e-07,0) (1.383585823e-09,0) (-3.776354522e-05,0) (0.0001676407959,0) (-8.088281908e-10,0) (1.694065895e-21,0) (1.092177589e-11,0) (-1.716212179e-05,0) (5.082791124e-05,0) (8.470329473e-22,0) (-3.774756953e-08,0) (5.146970487e-10,0) (2.38628948e-05,0) (-5.030265065e-05,0) (4.235164736e-22,0) (-6.59283491e-08,0) (1.303346218e-06,0) (6.607505923e-10,0) (8.223005948e-06,0) (-3.476269999e-08,0) (0,0) (2.906841531e-10,0) (-2.422359532e-05,0) (4.450385645e-05,0) (0,0) (-7.6060703e-09,0) (1.822462067e-10,0) (6.185128518e-07,0) (3.673086727e-06,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (-1.352214984e-05,0) (-0.001516611742,0) (-0.1815201801,0) (0.001529805043,0) (-0.06184377689,0) (-1.018009989e-05,0) (0.0100894037,0) (0.002033057526,0) (1.382974519e-06,0) (0.01420621429,0) (0.001104706844,0) (1.705669872e-06,0) (0.0001243303037,0) (-0.00416102366,0) (-4.957044252e-07,0) (-2.976561439e-05,0) (-6.894765397e-05,0) (-1.167054917e-08,0) (2.109279228e-05,0) (-0.001212800252,0) (-1.454478514e-07,0) (0.0009931054366,0) (0.0001417158764,0) (1.284692074e-07,0) (1.74742353e-05,0) (-0.0004985374759,0) (-5.936260932e-08,0) (0.0002260156754,0) (4.076642451e-05,0) (3.037514902e-08,0) (1.036691613e-05,0) (-0.0002489763116,0) (-3.115196758e-08,0) (0.0001252345373,0) (6.832339961e-06,0) (1.454786252e-08,0) (2.35247391e-06,0) (-7.547512391e-05,0) (-1.072474815e-08,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.09590197642,0) (-0.1401646988,0) (-0.002985838421,0) (0.01780950172,0) (0.003649578912,0) (-0.002683292763,0) (-0.0006693273457,0) (0.0002766372549,0) (0.0002942175258,0) (-8.172856693e-05,0) (-2.758117892e-05,0) (-4.976700232e-06,0) (2.128685141e-05,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.01470014553,0) (0.01382695546,0) (-0.0003039299897,0) (-4.71970691e-05,0) (9.103863821e-05,0) (0.000163575563,0) (-9.961621062e-05,0) (-2.390391798e-05,0) (5.002522838e-05,0) (1.012786441e-05,0) (-7.88201233e-06,0) (6.23141672e-06,0) (8.301457933e-06,0) (-1.457628927e-06,0) (-0.04559196335,0) (-0.02299600676,0) (0.008358714646,0) (1.091418551e-06,0) (0.01108001222,0) (0.0001174809611,0) (1.180077153e-08,0) (-0.0004752201501,0) (-5.445124097e-06,0) (-7.103876161e-10,0) (-3.157105631e-06,0) (-9.404551985e-10,0) (-3.878017573e-05,0) (0.0003533999622,0) (2.141472362e-05,0) (3.593291973e-09,0) (7.639707444e-05,0) (-1.211070338e-09,0) (-2.325109286e-05,0) (-0.0002136717171,0) (-9.75273999e-10,0) (-2.050776465e-05,0) (2.993656717e-05,0) (-1.380484768e-10,0) (-1.387528677e-05,0) (6.936217859e-05,0) (-1.771963067e-10,0) (2.805955058e-08,0) (-1.784210166e-05,0) (8.180342229e-07,0) (4.010017397e-11,0) (-1.893631504e-05,0) (-1.860366417e-10,0) (-5.633722485e-06,0) (1.251832324e-05,0) (-1.176319828e-10,0) (-2.00923065e-06,0) (4.53804567e-06,0) (1.734723476e-18,0) (0.005994823377,0) (-7.444950055e-08,0) (-0.003435817589,0) (-0.1102116782,0) (-1.084202172e-18,0) (0.001606299893,0) (0.01230377284,0) (1.525748086e-06,0) (0.001045366821,0) (-1.355252716e-20,0) (1.798364778e-05,0) (0.0001386402286,0) (1.737100717e-08,0) (0.0002209886563,0) (-1.694065895e-21,0) (4.610365646e-07,0) (6.817192153e-05,0) (6.679547034e-09,0) (-7.354140116e-06,0) (0,0) (6.988489398e-05,0) (4.1665471e-05,0) (2.546341754e-08,0) (0.0001696441168,0) (1.016439537e-20,0) (9.362266021e-06,0) (-1.188796278e-08,0) (8.158151922e-05,0) (-8.232622071e-05,0) (6.776263578e-21,0) (7.420259143e-06,0) (-4.143616472e-09,0) (-3.256963719e-05,0) (-0.000166117142,0) (3.388131789e-21,0) (2.488480358e-06,0) (-1.386998724e-09,0) (-6.937063544e-05,0) (5.261433427e-05,0) (1.696781277e-08,0) (0,0) (-1.09460803e-11,0) (-7.964340301e-06,0) (1.633611477e-05,0) (1.058791184e-21,0) (7.199518179e-07,0) (-5.160270666e-10,0) (3.653434698e-06,0) (-3.163718351e-05,0) (4.235164736e-22,0) (1.047169952e-06,0) (6.944596701e-07,0) (-6.615208134e-10,0) (-2.354858994e-05,0) (5.29902449e-07,0) (-2.117582368e-22,0) (-2.91384935e-10,0) (-1.338045233e-05,0) (4.545817498e-06,0) (-6.352747104e-22,0) (3.968631531e-07,0) (-1.826512278e-10,0) (3.288624992e-07,0) (-1.102174207e-05,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (1.792468198e-05,0) (0.0015942032,0) (-0.1456492277,0) (-0.002288970907,0) (-0.04519188989,0) (1.349672706e-05,0) (0.01039062405,0) (-0.0008488810399,0) (-1.833908765e-06,0) (0.01281429128,0) (-0.0007629577502,0) (-2.261845447e-06,0) (-0.0009122039538,0) (-0.002265202916,0) (6.573132114e-07,0) (-6.462997956e-05,0) (-1.306935015e-05,0) (1.547562452e-08,0) (-0.0003155601183,0) (-0.000622467995,0) (1.928670741e-07,0) (0.0009669418372,0) (-7.371168797e-05,0) (-1.703585845e-07,0) (-9.854256778e-05,0) (-0.0002801178774,0) (7.871574193e-08,0) (0.0002283587626,0) (-1.837131481e-05,0) (-4.027933956e-08,0) (-2.384812022e-05,0) (-0.0001639726644,0) (4.130690869e-08,0) (0.000109272375,0) (-5.321956378e-06,0) (-1.92916415e-08,0) (-3.927606724e-06,0) (-5.36331914e-05,0) (1.42199673e-08,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.07546254497,0) (-0.1102916257,0) (-0.00234947156,0) (0.01401379174,0) (0.002871750125,0) (-0.002111406963,0) (-0.0005266747028,0) (0.0002176780091,0) (0.0002315114256,0) (-6.430989108e-05,0) (-2.170284735e-05,0) (-3.916024248e-06,0) (1.675001957e-05,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.02292890543,0) (-0.02156692623,0) (0.0004740621088,0) (7.361676329e-05,0) (-0.0001419997048,0) (-0.0002551409173,0) (0.0001553787796,0) (3.72847108e-05,0) (-7.802805272e-05,0) (-1.579718001e-05,0) (1.229415824e-05,0) (-9.719602051e-06,0) (-1.29483986e-05,0) (1.933695861e-06,0) (-0.03199064087,0) (-0.02299221789,0) (0.005912559672,0) (-1.447272914e-06,0) (-0.01738794072,0) (9.397260481e-05,0) (-1.564861596e-08,0) (0.0007387482168,0) (-3.585040966e-06,0) (9.420694424e-10,0) (5.436834395e-06,0) (1.247478056e-09,0) (-2.065379919e-05,0) (-0.0005520810976,0) (3.049198037e-05,0) (-4.763408986e-09,0) (-3.993073118e-05,0) (1.606572917e-09,0) (-5.581744661e-05,0) (0.0003202683844,0) (1.293499994e-09,0) (4.343975792e-06,0) (-0.0001240359772,0) (1.831224303e-10,0) (3.841493541e-06,0) (-0.0001108992143,0) (2.350780239e-10,0) (-1.286536979e-06,0) (1.161940272e-05,0) (2.387046427e-06,0) (-5.316445846e-11,0) (-3.410339354e-06,0) (2.467585767e-10,0) (2.105845968e-06,0) (-3.536965701e-05,0) (1.560307562e-10,0) (7.77950799e-07,0) (-2.080929823e-05,0) (5.204170428e-18,0) (0.004449681879,0) (9.875566195e-08,0) (0.0001906725663,0) (-0.09897492918,0) (-2.168404345e-19,0) (0.001163767271,0) (0.008173532278,0) (-2.023388919e-06,0) (-0.002208672077,0) (-6.776263578e-21,0) (1.441241402e-05,0) (0.000103430604,0) (-2.303572953e-08,0) (-0.0003443707994,0) (-3.388131789e-21,0) (3.546892966e-07,0) (5.564768243e-05,0) (-8.856789814e-09,0) (7.598111631e-06,0) (0,0) (5.613041285e-05,0) (4.007349356e-05,0) (-3.375795271e-08,0) (-0.0002635377927,0) (0,0) (7.519930189e-06,0) (1.577459173e-08,0) (5.364558862e-05,0) (0.0001286262247,0) (0,0) (5.974666933e-06,0) (5.496789673e-09,0) (-0.0001421887402,0) (9.710076482e-05,0) (-3.388131789e-21,0) (2.003154677e-06,0) (1.839710283e-09,0) (-2.388494044e-05,0) (-8.647148753e-05,0) (1.340554525e-08,0) (0,0) (1.451967495e-11,0) (6.909246837e-06,0) (-2.592891019e-05,0) (4.235164736e-22,0) (5.713850495e-07,0) (6.845034665e-10,0) (-1.519996164e-05,0) (1.399723361e-05,0) (-8.470329473e-22,0) (8.393777059e-07,0) (-4.576572648e-07,0) (8.775775864e-10,0) (-2.393998219e-05,0) (4.258067386e-07,0) (1.270549421e-21,0) (3.864907411e-10,0) (8.138608507e-06,0) (-3.005827211e-05,0) (-4.235164736e-22,0) (3.050299829e-07,0) (2.42261127e-10,0) (-2.173739453e-07,0) (-1.107271747e-05,0) -(0.2370734683,0) (0.0006670533688,0) (0.004066218674,0) (0.0006820777545,0) (0.0005956356081,0) (8.044155541e-06,0) (9.655870575e-06,0) (6.831873609e-05,0) (4.382157398e-05,0) (1.591626787e-05,0) (1.652759785e-05,0) (1.94939596e-05,0) (1.491606603e-05,0) (3.877437899e-09,0) (0.000104543173,0) (0.3087228188,0) (0.0001062601308,0) (0.02189791074,0) (1.451237323e-09,0) (0.00101721631,0) (6.767884142e-05,0) (3.270019455e-11,0) (0.002703808895,0) (4.554381508e-05,0) (7.902103776e-11,0) (3.058225334e-05,0) (0.0002763177339,0) (1.071720204e-11,0) (1.677877475e-07,0) (1.554212663e-07,0) (1.046209416e-14,0) (9.935797639e-06,0) (6.792423503e-05,0) (2.685856042e-12,0) (0.0001254778854,0) (5.197168565e-06,0) (3.878416987e-12,0) (3.452071693e-06,0) (3.698293816e-05,0) (1.425830819e-12,0) (2.421919495e-05,0) (1.387963126e-06,0) (7.687789817e-13,0) (1.030262135e-06,0) (3.786694817e-05,0) (1.535265483e-12,0) (3.118113231e-05,0) (2.989431376e-07,0) (8.846582533e-13,0) (1.823523549e-07,0) (2.000685348e-05,0) (1.00557303e-12,0) (3.415236843e-18,0) (-4.33680869e-19,0) (0,0) (0.03787629397,0) (0.1290043371,0) (9.757819552e-19,0) (1.626303259e-19,0) (1.734723476e-18,0) (0.01166407464,0) (0.02777002614,0) (0,0) (-1.905824131e-21,0) (-6.776263578e-21,0) (0.0001520492622,0) (9.479976155e-05,0) (3.726944968e-20,0) (-1.016439537e-20,0) (0,0) (0.0005765989928,0) (0.002012299337,0) (3.30872245e-24,0) (-2.067951531e-24,0) (4.135903063e-25,0) (2.968303438e-07,0) (9.832055907e-08,0) (-1.058791184e-22,0) (3.97046694e-23,0) (-1.389663429e-22,0) (3.860134312e-07,0) (9.979758691e-06,0) (-1.694065895e-21,0) (4.235164736e-22,0) (-2.01170325e-21,0) (3.578750522e-05,0) (7.498366886e-05,0) (-2.488159283e-21,0) (5.29395592e-23,0) (8.470329473e-22,0) (1.02162398e-05,0) (6.854234909e-05,0) (-1.058791184e-22,0) (-9.264422861e-23,0) (0,0) (9.779609685e-07,0) (8.699365442e-06,0) (-2.117582368e-22,0) (-5.29395592e-23,0) (-1.32348898e-23,0) (4.056902711e-06,0) (8.419618364e-06,0) (0,0) (1.98523347e-23,0) (-1.032321404e-21,0) (5.202177913e-06,0) (1.997650936e-05,0) (5.29395592e-23,0) (-3.176373552e-22,0) (4.764560328e-22,0) (2.701400034e-06,0) (1.519803296e-05,0) (2.117582368e-22,0) (-3.30872245e-23,0) (4.566036981e-22,0) (2.43172997e-06,0) (8.192639034e-06,0) -(0.4945189387,0) (0.307421443,0) (0.1319654046,0) (0.03941143222,0) (0.01673841645,0) (0.005001509027,0) (0.002982067969,0) (0.0008721944031,0) (0.0006739086684,0) (0.0001662005827,0) (0.000162668234,0) (2.726728507e-05,0) (3.849627959e-05,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.09496554104,0) (0.02219350733,0) (0.0009466734748,0) (2.321681126e-06,0) (4.129794632e-05,0) (0.0001989658342,0) (0.0002383724452,0) (0.0001692599573,0) (0.0001085254047,0) (7.176902103e-05,0) (5.852636604e-05,0) (5.506831979e-05,0) (4.747128362e-05,0) (1.073506527e-10,0) (0.04541795873,0) (0.1725741146,0) (0.01007922853,0) (4.289735641e-10,0) (0.01096928929,0) (5.737094057e-05,0) (1.333779821e-12,0) (6.161287463e-05,0) (4.444852922e-08,0) (1.969247442e-15,0) (4.145795013e-08,0) (1.730393003e-13,0) (0.0001003702013,0) (0.0001160749593,0) (5.79959204e-05,0) (1.968726167e-12,0) (0.000456033966,0) (4.122042944e-13,0) (0.0001878179395,0) (0.0003229003659,0) (1.646882568e-13,0) (1.410595769e-05,0) (0.0002999456081,0) (5.102445159e-14,0) (6.696096688e-05,0) (0.0001183515028,0) (8.984760364e-14,0) (5.83628165e-07,0) (0.0001427988773,0) (2.344464954e-06,0) (1.402501907e-15,0) (0.0001207276869,0) (4.655188215e-14,0) (6.221369806e-06,0) (0.0001060713667,0) (3.292207679e-14,0) (1.583941041e-06,0) (9.971418463e-05,0) (-4.33680869e-18,0) (0.009429544937,0) (1.5840107e-13,0) (0.0005109923468,0) (0.194759507,0) (2.710505431e-19,0) (0.002555581156,0) (0.005067391794,0) (1.942355678e-10,0) (0.0004409201741,0) (-3.388131789e-21,0) (2.942625463e-05,0) (5.654394068e-05,0) (2.071868796e-12,0) (8.037295849e-06,0) (-1.058791184e-22,0) (7.348914505e-07,0) (3.230829218e-06,0) (6.964797294e-14,0) (1.567816421e-07,0) (-1.355252716e-20,0) (0.000113937913,0) (0.0001851425888,0) (2.781457311e-11,0) (2.999024015e-05,0) (-6.776263578e-21,0) (1.52722285e-05,0) (1.871511688e-11,0) (0.0005040683449,0) (5.02024039e-05,0) (-1.016439537e-20,0) (1.211469523e-05,0) (6.023879719e-13,0) (0.0001599166819,0) (0.0002441829949,0) (-1.355252716e-20,0) (4.063106018e-06,0) (2.623064153e-13,0) (0.000205223284,0) (3.30332097e-05,0) (2.733646717e-08,0) (8.470329473e-22,0) (4.552654708e-15,0) (0.000111644296,0) (2.711731612e-05,0) (-6.776263578e-21,0) (1.172473665e-06,0) (1.533275629e-13,0) (1.278860789e-05,0) (9.776751272e-05,0) (2.541098842e-21,0) (1.709717327e-06,0) (1.530464362e-07,0) (1.424655546e-13,0) (0.0001104626914,0) (8.6197615e-07,0) (-2.964615315e-21,0) (6.739760524e-14,0) (2.211632354e-05,0) (7.515207224e-05,0) (4.65868121e-21,0) (6.315078598e-07,0) (3.652790367e-14,0) (1.2355385e-07,0) (8.266795114e-05,0) -(0.2422309801,0) (0.001121531446,0) (0.004001037327,0) (0.0008151232336,0) (0.0005459492306,0) (2.557736886e-06,0) (1.207525027e-05,0) (7.053714984e-05,0) (3.864594342e-05,0) (1.483042612e-05,0) (1.714442183e-05,0) (1.870975941e-05,0) (1.379834849e-05,0) (1.742864286e-07,0) (0.005638823192,0) (-0.03005885845,0) (-0.001740184869,0) (-0.0002456493842,0) (-1.464161271e-09,0) (-0.0002385746382,0) (0.0001785998502,0) (-2.747021514e-11,0) (-0.0005992538639,0) (0.000367698185,0) (-1.046201884e-10,0) (-6.600547482e-05,0) (4.89280251e-05,0) (-8.444216063e-12,0) (-4.766178062e-07,0) (4.06527398e-07,0) (-3.327915718e-14,0) (-3.196151495e-05,0) (2.456646172e-05,0) (-3.639065293e-12,0) (-3.402544542e-05,0) (2.406742621e-05,0) (-4.536703068e-12,0) (-9.26298144e-06,0) (6.688627696e-06,0) (-1.280349392e-12,0) (-7.564880206e-06,0) (5.569965596e-06,0) (-9.132222426e-13,0) (-6.467528051e-06,0) (3.305101292e-06,0) (-1.683603403e-12,0) (-5.197553094e-06,0) (2.84540489e-06,0) (-1.055854317e-12,0) (-1.763474399e-06,0) (2.918850479e-07,0) (-8.970932822e-13,0) (0,0) (-1.734723476e-18,0) (0,0) (0.04120751152,0) (-0.1209002553,0) (8.67361738e-19,0) (2.168404345e-19,0) (-8.67361738e-19,0) (0.01059505292,0) (-0.03117134266,0) (0,0) (-6.776263578e-21,0) (-3.388131789e-21,0) (5.404029922e-05,0) (-0.0002719614938,0) (-8.131516294e-20,0) (-1.355252716e-20,0) (2.032879073e-20,0) (0.0006347062577,0) (-0.001863912343,0) (2.64697796e-23,0) (-5.95570041e-23,0) (1.32348898e-23,0) (-2.21524732e-08,0) (1.343238814e-06,0) (1.058791184e-22,0) (1.058791184e-22,0) (1.058791184e-22,0) (9.509644464e-07,0) (-4.130367749e-06,0) (0,0) (-2.117582368e-22,0) (0,0) (3.035209207e-05,0) (-9.01449982e-05,0) (1.799945013e-21,0) (2.117582368e-22,0) (0,0) (1.50771313e-05,0) (-4.735466163e-05,0) (-2.64697796e-23,0) (-2.117582368e-22,0) (0,0) (1.62071298e-06,0) (-5.352223079e-06,0) (5.29395592e-22,0) (2.64697796e-22,0) (5.29395592e-23,0) (3.422835305e-06,0) (-1.01749705e-05,0) (-2.117582368e-22,0) (-1.058791184e-22,0) (1.058791184e-21,0) (5.992220638e-06,0) (-1.768270685e-05,0) (-2.117582368e-22,0) (-2.117582368e-22,0) (2.117582368e-22,0) (3.697399502e-06,0) (-1.132169379e-05,0) (0,0) (-1.091878409e-22,0) (-2.448454613e-22,0) (2.631726242e-06,0) (-7.718453293e-06,0) -(0.2167077723,0) (-0.0826000003,0) (0.01117712611,0) (-0.0003024909558,0) (0.0008314218089,0) (-0.0009975617353,0) (0.0008431149587,0) (-0.0003842233562,0) (0.0002704370739,0) (-0.0001092156267,0) (9.757243774e-05,0) (-3.875001386e-05,0) (4.274889246e-05,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.2167077723,0) (-0.0826000003,0) (0.01117712611,0) (-0.0003024909558,0) (0.0008314218089,0) (-0.0009975617353,0) (0.0008431149587,0) (-0.0003842233562,0) (0.0002704370739,0) (-0.0001092156267,0) (9.757243774e-05,0) (-3.875001386e-05,0) (4.274889246e-05,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.2791082932,0) (0.02715806816,0) (-0.02846199811,0) (-0.008149020754,0) (0.002851320191,0) (-3.950407327e-05,0) (1.14330723e-05,0) (0.000154869012,0) (-0.0001326794655,0) (8.537678745e-05,0) (-7.412014254e-05,0) (5.873445414e-05,0) (-3.031732376e-05,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.1181203825,0) (-0.006245320651,0) (-0.002900269686,0) (3.326358174e-05,0) (0.0001138238722,0) (-8.641960382e-06,0) (3.016434396e-05,0) (1.010587839e-05,0) (7.596477619e-06,0) (2.457459582e-05,0) (1.39297899e-05,0) (4.065901073e-06,0) (7.640914772e-06,0) (-0.01035118577,0) (-1.060983429e-08,0) (0.1844993062,0) (0.0003082971776,0) (-3.414617148e-10,0) (-0.02229074989,0) (-4.695743746e-06,0) (1.512221582e-12,0) (-0.000493871054,0) (2.774482817e-07,0) (1.388386925e-13,0) (1.075209157e-05,0) (1.542408416e-12,0) (-1.658424701e-07,0) (9.590123357e-05,0) (8.91317672e-15,0) (8.216387078e-07,0) (-6.614975308e-06,0) (-5.963206816e-15,0) (-3.894922342e-06,0) (5.496461783e-05,0) (2.139238978e-08,0) (-1.443919701e-14,0) (-6.011743517e-06,0) (4.673910862e-15,0) (-1.74835413e-06,0) (3.005116424e-05,0) (-2.235709583e-16,0) (-5.566167409e-06,0) (4.421606725e-05,0) (-2.755076165e-13,0) (-8.301042594e-07,0) (1.171506491e-05,0) (5.277626819e-15,0) (-9.855585617e-07,0) (7.565601838e-06,0) (4.796833131e-15,0) (-2.467184366e-06,0) (1.707721501e-05,0) (-4.011548038e-18,0) (-0.001440066044,0) (0.0003756619176,0) (-7.98021357e-09,0) (0.06390193245,0) (-5.692061406e-19,0) (4.661129412e-05,0) (-0.001430622896,0) (-5.324722776e-10,0) (-0.006490750649,0) (8.470329473e-22,0) (-1.219047869e-09,0) (6.88256806e-08,0) (-1.492854078e-13,0) (-2.119132764e-05,0) (-2.64697796e-21,0) (3.776952075e-09,0) (-1.772438385e-05,0) (2.737719363e-12,0) (-1.263791935e-05,0) (2.382280164e-22,0) (-1.489280527e-10,0) (2.159068983e-15,0) (1.41805818e-07,0) (-9.41299573e-06,0) (-1.058791184e-21,0) (-2.66680814e-08,0) (8.251120861e-14,0) (-1.360177412e-05,0) (2.890940732e-05,0) (-2.051407919e-22,0) (-2.873311294e-09,0) (-5.553993283e-14,0) (-6.239731814e-07,0) (3.264209423e-06,0) (3.044024654e-22,0) (8.129572964e-09,0) (-4.505795755e-14,0) (6.797582913e-07,0) (-3.897277635e-06,0) (-7.940933881e-23,0) (-5.801431416e-10,0) (1.621406561e-15,0) (-3.222079977e-06,0) (2.141123947e-05,0) (-1.058791184e-22,0) (-1.220420545e-08,0) (-3.309562665e-14,0) (-9.894086537e-06,0) (2.043898951e-05,0) (-3.567216392e-24,0) (-8.979762109e-12,0) (4.383490997e-09,0) (1.926809811e-16,0) (3.180408848e-08,0) (1.786710123e-22,0) (-7.758571774e-09,0) (1.720215909e-14,0) (-3.727686172e-06,0) (7.582318236e-06,0) (-1.32348898e-23,0) (-1.614102532e-08,0) (1.910022884e-14,0) (-3.025162843e-06,0) (8.913907942e-06,0) -(0.2757309677,0) (0.033849107,0) (-0.03357642321,0) (-0.005713665996,0) (0.002042528073,0) (0.0001252214311,0) (0.000101946051,0) (-1.042211491e-05,0) (3.127914568e-05,0) (-3.917751923e-05,0) (1.580332402e-05,0) (-2.236553419e-06,0) (7.972957138e-06,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0.0005994385344,0) (-0.1985188841,0) (-0.001140207266,0) (-0.07488263132,0) (2.167276441e-05,0) (-1.025275956e-05,0) (0.0008666908912,0) (0.008349515407,0) (1.159857724e-06,0) (0.0006185982764,0) (0.01711533238,0) (2.254507178e-06,0) (-0.002883854726,0) (-0.0002052737618,0) (-3.899156928e-07,0) (-0.000159158543,0) (-0.0001352381151,0) (-3.706119164e-08,0) (-0.001416265,0) (-0.0001403458379,0) (-1.967367615e-07,0) (7.853055611e-05,0) (0.001110759192,0) (1.500255288e-07,0) (-0.0003981834344,0) (-2.30250586e-05,0) (-5.321609918e-08,0) (2.402907374e-05,0) (0.0002617957008,0) (3.602240965e-08,0) (-0.0002640355922,0) (-2.758564769e-06,0) (-3.410406075e-08,0) (3.284076926e-06,0) (0.000132422448,0) (1.733460305e-08,0) (-7.323759983e-05,0) (-6.375922781e-08,0) (-9.551291528e-09,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.001846675378,0) (-0.001654839895,0) (1.111239836e-05,0) (6.00638806e-06,0) (-7.965650434e-06,0) (-2.351680004e-05,0) (8.315325756e-06,0) (5.354914909e-06,0) (-5.18806211e-06,0) (-2.359921549e-06,0) (7.269569138e-07,0) (-3.107727192e-07,0) (-1.038697242e-06,0) (-0.06490133507,0) (-3.946716758e-05,0) (-0.006148089778,0) (0.007225280791,0) (3.425681516e-06,0) (-0.001345300549,0) (0.0001579544268,0) (1.933599988e-08,0) (4.985113502e-05,0) (-4.842011333e-06,0) (-6.979482776e-10,0) (7.525934897e-07,0) (1.618918448e-07,0) (-6.272074233e-05,0) (-4.091314267e-05,0) (-1.323759753e-09,0) (4.293660645e-05,0) (-1.735049015e-06,0) (1.921228267e-10,0) (-2.913583491e-05,0) (2.152582244e-05,0) (-2.092592279e-07,0) (1.791320429e-09,0) (-5.094414221e-05,0) (1.359553096e-10,0) (-1.256793796e-05,0) (-1.07102183e-05,0) (3.055871646e-11,0) (-2.032540034e-06,0) (-5.724551057e-06,0) (5.494923794e-10,0) (-1.488701156e-06,0) (-9.543865412e-06,0) (1.452900029e-10,0) (-3.151034807e-06,0) (-9.523435361e-06,0) (7.154815394e-11,0) (-3.083106532e-06,0) (-6.388466763e-06,0) (-8.67361738e-19,0) (0.005458852868,0) (-0.1264871219,0) (-6.252989909e-05,0) (-0.0005301535656,0) (1.084202172e-19,0) (-0.0002130075372,0) (0.01332630147,0) (1.825408291e-06,0) (-0.0004832594551,0) (-8.470329473e-22,0) (-2.967339092e-06,0) (7.000924065e-05,0) (1.743942639e-08,0) (-2.943530294e-05,0) (2.541098842e-21,0) (-1.216966884e-08,0) (7.671321961e-05,0) (7.595298963e-09,0) (-2.357373937e-06,0) (1.270549421e-21,0) (-4.8359186e-07,0) (-4.383976412e-10,0) (4.728265869e-05,0) (-2.460472004e-05,0) (0,0) (-2.363189478e-06,0) (-2.370021663e-09,0) (8.113426703e-05,0) (4.633762748e-05,0) (-8.470329473e-22,0) (4.377140531e-06,0) (1.020286978e-08,0) (-0.0001297244959,0) (5.329791181e-06,0) (0,0) (2.608211516e-06,0) (5.109376555e-09,0) (-7.478601065e-05,0) (-8.104477101e-06,0) (-1.058791184e-22,0) (2.294365191e-08,0) (2.306630744e-11,0) (-8.580644554e-06,0) (-3.260951961e-06,0) (6.352747104e-22,0) (1.665974296e-07,0) (1.845548891e-10,0) (-6.225489374e-06,0) (-9.221360182e-06,0) (-8.470329473e-22,0) (8.144303457e-12,0) (9.464237249e-07,0) (8.301088797e-10,0) (-2.75231617e-05,0) (-4.235164736e-22,0) (3.061043593e-07,0) (3.46976802e-10,0) (-1.102623907e-05,0) (-8.675920207e-06,0) (4.235164736e-22,0) (1.540103829e-07,0) (1.701788421e-10,0) (-1.243366357e-06,0) (-1.244429397e-05,0) -(-0.1031484994,0) (-0.1582389931,0) (-0.01103408529,0) (0.01890852676,0) (0.005635747778,0) (-0.002521811017,0) (-0.001083411895,0) (0.0001668520179,0) (0.0003833158109,0) (-4.739128419e-05,0) (-4.040597076e-05,0) (-1.348309736e-05,0) (2.298693686e-05,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (-0.0006078052747,0) (-0.0818026201,0) (0.01767374832,0) (-0.0250530803,0) (0.0006937595959,0) (1.027075844e-05,0) (-0.002366336259,0) (0.005365100259,0) (-1.161785369e-06,0) (-0.003148568976,0) (0.008918855406,0) (-2.258227789e-06,0) (-0.000268341271,0) (-0.0007367991449,0) (3.905716485e-07,0) (8.455219191e-05,0) (-0.0001803428258,0) (3.712316421e-08,0) (-6.785138147e-05,0) (-0.0004386388888,0) (1.970672368e-07,0) (-0.0002692972928,0) (0.0006562681882,0) (-1.502743643e-07,0) (-4.688880524e-05,0) (-9.016405225e-05,0) (5.330567966e-08,0) (-7.059613306e-05,0) (0.000163597705,0) (-3.608223219e-08,0) (-6.507889457e-05,0) (-2.173113939e-05,0) (3.416188227e-08,0) (-2.087522514e-05,0) (6.50316769e-05,0) (-1.736311552e-08,0) (-2.275006274e-05,0) (-1.101125681e-06,0) (9.567778006e-09,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.04202610262,0) (0.03766036634,0) (-0.0002528927387,0) (-0.0001366916373,0) (0.0001812799621,0) (0.0005351885142,0) (-0.0001892377717,0) (-0.0001218656003,0) (0.0001180684127,0) (5.370641011e-05,0) (-1.654387459e-05,0) (7.072475403e-06,0) (2.363837055e-05,0) (-0.0261051813,0) (3.944842813e-05,0) (6.279587704e-05,0) (0.002416007754,0) (-3.425597545e-06,0) (0.03365443351,0) (5.171884636e-05,0) (-1.935851884e-08,0) (-0.001175570287,0) (-2.300267057e-06,0) (6.987811895e-10,0) (-1.390588258e-05,0) (-1.638194283e-07,0) (-2.644343681e-05,0) (0.0009279537109,0) (1.325991733e-09,0) (-3.274005584e-05,0) (0.0004008668033,0) (-1.924329641e-10,0) (2.950263984e-05,0) (-0.0005718721755,0) (-2.727688202e-07,0) (-1.794592821e-09,0) (3.284267252e-05,0) (-1.361779008e-10,0) (-1.772004666e-05,0) (0.0002140658698,0) (-3.061634471e-11,0) (-2.18074922e-06,0) (8.592680047e-06,0) (-5.505024031e-10,0) (1.478868857e-06,0) (-3.305527393e-05,0) (-1.455247171e-10,0) (-6.902743869e-06,0) (3.953000872e-05,0) (-7.166854507e-11,0) (-7.303006439e-06,0) (3.947982096e-05,0) (0,0) (0.001679108527,0) (-0.05045358095,0) (6.252449675e-05,0) (0.02200366493,0) (2.168404345e-19,0) (-0.0001201094063,0) (0.006398207008,0) (-1.827623733e-06,0) (0.004689634674,0) (-8.470329473e-20,0) (-1.145585351e-06,0) (2.575624477e-05,0) (-1.745081276e-08,0) (0.0006705783039,0) (-4.235164736e-22,0) (-3.62487904e-09,0) (2.484116704e-05,0) (-7.604241534e-09,0) (-5.076304556e-06,0) (-4.235164736e-20,0) (-1.840484349e-07,0) (4.390893775e-10,0) (1.025957234e-05,0) (0.0005620420754,0) (-3.388131789e-21,0) (-6.94792267e-07,0) (2.373663017e-09,0) (0.0001593070373,0) (-0.000251256781,0) (2.117582368e-22,0) (1.955830264e-06,0) (-1.022102714e-08,0) (-6.579728783e-06,0) (-0.0002342789111,0) (-8.470329473e-22,0) (7.688532502e-07,0) (-5.11828032e-09,0) (-5.264350621e-05,0) (0.0001274524706,0) (0,0) (7.264731325e-09,0) (-2.310334681e-11,0) (-1.395951307e-05,0) (6.869909882e-05,0) (-1.270549421e-21,0) (8.860179887e-08,0) (-1.848524135e-10,0) (1.541787193e-05,0) (-4.066423592e-05,0) (-1.588186776e-22,0) (-5.464056351e-11,0) (4.061638748e-07,0) (-8.316854796e-10,0) (-1.078115126e-05,0) (7.940933881e-22,0) (7.888849008e-08,0) (-3.475255682e-10,0) (-2.522531665e-05,0) (3.889316497e-05,0) (-1.164670302e-21,0) (3.533132544e-08,0) (-1.704590834e-10,0) (-5.400560006e-06,0) (9.482860461e-06,0) -(-0.03354517603,0) (-0.05146129038,0) (-0.003588421894,0) (0.006149288282,0) (0.001832815333,0) (-0.0008201243352,0) (-0.0003523390349,0) (5.426235325e-05,0) (0.0001246590734,0) (-1.541223556e-05,0) (-1.314052468e-05,0) (-4.384871105e-06,0) (7.475638015e-06,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0.0008056940932,0) (0.08598772848,0) (0.01418116593,0) (0.03748567322,0) (0.0005069597758,0) (-1.361692173e-05,0) (-0.002436983511,0) (-0.002240139213,0) (1.540598429e-06,0) (-0.002840072602,0) (-0.006159742645,0) (2.994578451e-06,0) (0.001968803752,0) (-0.0004011031198,0) (-5.179052102e-07,0) (0.0001835878932,0) (-3.418482576e-05,0) (-4.922683088e-08,0) (0.001015095094,0) (-0.0002251307824,0) (-2.613155229e-07,0) (-0.0002622025914,0) (-0.0003413494461,0) (1.992736509e-07,0) (0.0002644203416,0) (-5.066131264e-05,0) (-7.068415912e-08,0) (-7.132799777e-05,0) (-7.372500718e-05,0) (4.784728731e-08,0) (0.0001497079056,0) (-1.431185483e-05,0) (-4.529799756e-08,0) (-1.821450758e-05,0) (-5.065552207e-05,0) (2.302489451e-08,0) (3.798269516e-05,0) (-7.824682005e-07,0) (-1.268593802e-08,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.03306914808,0) (0.02963387403,0) (-0.0001989941228,0) (-0.0001075587721,0) (0.0001426440602,0) (0.0004211246611,0) (-0.0001489058348,0) (-9.589258415e-05,0) (9.290468493e-05,0) (4.226005073e-05,0) (-1.301790565e-05,0) (5.565130283e-06,0) (1.860036328e-05,0) (0.02926571414,0) (-5.233749665e-05,0) (0.004673081751,0) (-0.00362435917,0) (4.545799097e-06,0) (0.02638077972,0) (-7.992001587e-05,0) (2.568906514e-08,0) (-0.0009236595288,0) (1.910721583e-06,0) (-9.273966112e-10,0) (-1.104819657e-05,0) (2.172620418e-07,0) (2.679708471e-05,0) (0.000730282638,0) (-1.760161639e-09,0) (-5.697878921e-05,0) (0.0003034798675,0) (2.554106455e-10,0) (4.416018281e-05,0) (-0.0004472785039,0) (-4.815784398e-08,0) (2.380958854e-09,0) (6.308274014e-05,0) (1.807232962e-10,0) (-3.901393542e-06,0) (0.0001694230918,0) (4.06153188e-11,0) (-1.146048646e-07,0) (1.07843805e-05,0) (7.316866297e-10,0) (2.233056699e-06,0) (-1.773625471e-05,0) (1.931154678e-10,0) (-2.832235242e-06,0) (3.696293445e-05,0) (9.509970693e-11,0) (-3.185200628e-06,0) (3.456667511e-05,0) (-3.469446952e-18,0) (-0.00284257667,0) (0.05732018934,0) (-8.295705307e-05,0) (0.01698074865,0) (1.626303259e-19,0) (6.976167755e-05,0) (-0.005208299287,0) (2.425392242e-06,0) (0.003898029682,0) (-7.115076757e-20,0) (1.369639726e-06,0) (-3.330977184e-05,0) (2.316105747e-08,0) (0.0005276356672,0) (2.117582368e-22,0) (6.427763033e-09,0) (-3.902065515e-05,0) (1.008984649e-08,0) (-2.047743501e-06,0) (-3.388131789e-20,0) (2.252124931e-07,0) (-5.827660155e-10,0) (-2.784067985e-05,0) (0.0004421855303,0) (1.694065895e-21,0) (1.25482395e-06,0) (-3.150489814e-09,0) (5.903793265e-05,0) (-0.0002242549974,0) (-2.117582368e-21,0) (-1.819824513e-06,0) (1.356734793e-08,0) (9.261243859e-05,0) (-0.0001806069212,0) (-8.470329473e-22,0) (-1.383388018e-06,0) (6.792974981e-09,0) (1.657555103e-05,0) (0.0001021695525,0) (1.058791184e-22,0) (-1.179134865e-08,0) (3.065983203e-11,0) (-4.066691132e-06,0) (5.42395716e-05,0) (5.29395592e-22,0) (-5.858694103e-08,0) (2.453479878e-10,0) (1.630524542e-05,0) (-2.371439697e-05,0) (2.64697796e-22,0) (-4.732725524e-11,0) (-4.061021922e-07,0) (1.103310071e-09,0) (1.257948399e-05,0) (1.270549421e-21,0) (-1.70912097e-07,0) (4.612254458e-10,0) (-1.071839513e-05,0) (3.584446582e-05,0) (-6.352747104e-22,0) (-8.927826945e-08,0) (2.261947935e-10,0) (-3.135211927e-06,0) (1.651072366e-05,0) -(0.05232289484,0) (0.08026798496,0) (0.005597127326,0) (-0.009591500245,0) (-0.002858777782,0) (0.00127920865,0) (0.000549569281,0) (-8.463701011e-05,0) (-0.0001944399869,0) (2.403960497e-05,0) (2.049624931e-05,0) (6.839408132e-06,0) (-1.166030613e-05,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.2422309801,0) (0.001121531446,0) (0.004001037327,0) (0.0008151232336,0) (0.0005459492306,0) (2.557736886e-06,0) (1.207525027e-05,0) (7.053714984e-05,0) (3.864594342e-05,0) (1.483042612e-05,0) (1.714442183e-05,0) (1.870975941e-05,0) (1.379834849e-05,0) (1.742864286e-07,0) (0.005638823192,0) (-0.03005885845,0) (-0.001740184869,0) (-0.0002456493842,0) (-1.464161271e-09,0) (-0.0002385746382,0) (0.0001785998502,0) (-2.747021514e-11,0) (-0.0005992538639,0) (0.000367698185,0) (-1.046201884e-10,0) (-6.600547482e-05,0) (4.89280251e-05,0) (-8.444216063e-12,0) (-4.766178062e-07,0) (4.06527398e-07,0) (-3.327915718e-14,0) (-3.196151495e-05,0) (2.456646172e-05,0) (-3.639065293e-12,0) (-3.402544542e-05,0) (2.406742621e-05,0) (-4.536703068e-12,0) (-9.26298144e-06,0) (6.688627696e-06,0) (-1.280349392e-12,0) (-7.564880206e-06,0) (5.569965596e-06,0) (-9.132222426e-13,0) (-6.467528051e-06,0) (3.305101292e-06,0) (-1.683603403e-12,0) (-5.197553094e-06,0) (2.84540489e-06,0) (-1.055854317e-12,0) (-1.763474399e-06,0) (2.918850479e-07,0) (-8.970932822e-13,0) (-4.33680869e-19,0) (-3.469446952e-18,0) (-8.67361738e-19,0) (0.04120751152,0) (-0.1209002553,0) (1.301042607e-18,0) (-2.168404345e-19,0) (-4.33680869e-19,0) (0.01059505292,0) (-0.03117134266,0) (6.776263578e-21,0) (-6.776263578e-21,0) (5.082197684e-21,0) (5.404029922e-05,0) (-0.0002719614938,0) (-1.016439537e-19,0) (-1.355252716e-20,0) (4.065758147e-20,0) (0.0006347062577,0) (-0.001863912343,0) (2.64697796e-23,0) (-5.95570041e-23,0) (1.32348898e-23,0) (-2.21524732e-08,0) (1.343238814e-06,0) (1.058791184e-22,0) (2.64697796e-23,0) (6.6174449e-23,0) (9.509644464e-07,0) (-4.130367749e-06,0) (0,0) (6.352747104e-22,0) (-4.235164736e-22,0) (3.035209207e-05,0) (-9.01449982e-05,0) (2.329340605e-21,0) (3.176373552e-22,0) (0,0) (1.50771313e-05,0) (-4.735466163e-05,0) (-2.64697796e-23,0) (2.64697796e-23,0) (0,0) (1.62071298e-06,0) (-5.352223079e-06,0) (5.29395592e-22,0) (2.64697796e-22,0) (-5.29395592e-23,0) (3.422835305e-06,0) (-1.01749705e-05,0) (-2.117582368e-22,0) (-1.588186776e-22,0) (3.176373552e-22,0) (5.992220638e-06,0) (-1.768270685e-05,0) (0,0) (-2.117582368e-22,0) (3.176373552e-22,0) (3.697399502e-06,0) (-1.132169379e-05,0) (1.058791184e-22,0) (-4.963083675e-23,0) (-2.514629062e-22,0) (2.631726242e-06,0) (-7.718453293e-06,0) -(0.2167077723,0) (-0.0826000003,0) (0.01117712611,0) (-0.0003024909558,0) (0.0008314218089,0) (-0.0009975617353,0) (0.0008431149587,0) (-0.0003842233562,0) (0.0002704370739,0) (-0.0001092156267,0) (9.757243774e-05,0) (-3.875001386e-05,0) (4.274889246e-05,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.2167077723,0) (-0.0826000003,0) (0.01117712611,0) (-0.0003024909558,0) (0.0008314218089,0) (-0.0009975617353,0) (0.0008431149587,0) (-0.0003842233562,0) (0.0002704370739,0) (-0.0001092156267,0) (9.757243774e-05,0) (-3.875001386e-05,0) (4.274889246e-05,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.2475006931,0) (0.001885655396,0) (0.003936900835,0) (0.0009741204454,0) (0.0005004075617,0) (8.132634863e-07,0) (1.510083094e-05,0) (7.282759888e-05,0) (3.408159058e-05,0) (1.381866281e-05,0) (1.778426622e-05,0) (1.795710592e-05,0) (1.276438578e-05,0) (7.833976983e-06,0) (0.3041454174,0) (0.002926686712,0) (0.02849839687,0) (2.755679327e-06,0) (1.477200313e-09,0) (5.595452752e-05,0) (0.000471312833,0) (2.30767043e-11,0) (0.0001328145617,0) (0.002968612862,0) (1.385122765e-10,0) (0.0001424591791,0) (8.663764015e-06,0) (6.653302287e-12,0) (1.353880343e-06,0) (1.063332768e-06,0) (1.058585676e-13,0) (0.0001028139335,0) (8.885062031e-06,0) (4.930568137e-12,0) (9.226573536e-06,0) (0.0001114531879,0) (5.306720436e-12,0) (2.485545863e-05,0) (1.209685944e-06,0) (1.149711836e-12,0) (2.362894913e-06,0) (2.235255113e-05,0) (1.084804457e-12,0) (4.060026829e-05,0) (2.884757044e-07,0) (1.846273793e-12,0) (8.663751496e-07,0) (2.708317392e-05,0) (1.260179665e-12,0) (1.705402686e-05,0) (4.258384822e-09,0) (8.003161713e-13,0) (1.561251128e-17,0) (6.938893904e-18,0) (8.67361738e-19,0) (0.04483170943,0) (0.1133052738,0) (8.67361738e-19,0) (-1.734723476e-18,0) (4.33680869e-19,0) (0.009624007898,0) (0.03498925778,0) (0,0) (5.421010862e-20,0) (6.776263578e-21,0) (1.920663012e-05,0) (0.0007802029551,0) (2.439454888e-19,0) (0,0) (2.710505431e-20,0) (0.0006986693326,0) (0.001726467409,0) (0,0) (-3.176373552e-22,0) (-4.235164736e-22,0) (1.653240914e-09,0) (1.835110102e-05,0) (0,0) (0,0) (0,0) (2.342751068e-06,0) (1.709453932e-06,0) (0,0) (1.016439537e-20,0) (1.101142831e-20,0) (2.57422105e-05,0) (0.0001083718738,0) (1.270549421e-21,0) (0,0) (-4.235164736e-22,0) (2.225083718e-05,0) (3.271647394e-05,0) (0,0) (2.911675756e-22,0) (0,0) (2.685905316e-06,0) (3.292917407e-06,0) (2.117582368e-22,0) (2.117582368e-22,0) (0,0) (2.887868495e-06,0) (1.229628472e-05,0) (2.117582368e-22,0) (0,0) (-4.235164736e-22,0) (6.902245323e-06,0) (1.565229019e-05,0) (-6.352747104e-22,0) (2.117582368e-22,0) (-4.235164736e-22,0) (5.060621495e-06,0) (8.434035548e-06,0) (-1.058791184e-22,0) (-8.470329473e-22,0) (-3.176373552e-22,0) (2.848171096e-06,0) (7.27171318e-06,0) -(0.09496554104,0) (0.02219350733,0) (0.0009466734748,0) (2.321681126e-06,0) (4.129794632e-05,0) (0.0001989658342,0) (0.0002383724452,0) (0.0001692599573,0) (0.0001085254047,0) (7.176902103e-05,0) (5.852636604e-05,0) (5.506831979e-05,0) (4.747128362e-05,0) (0.08203099855,0) (8.306610194e-08,0) (0.1359609918,0) (0.009081386798,0) (5.657391905e-09,0) (0.01196712578,0) (5.443671855e-05,0) (2.267692166e-12,0) (6.454709571e-05,0) (4.074384328e-08,0) (2.322477598e-15,0) (4.516263572e-08,0) (1.806939314e-09,0) (9.637884248e-05,0) (0.0001200645114,0) (3.505088404e-13,0) (0.0001259530711,0) (0.0003880768169,0) (2.442169459e-14,0) (0.0001806923474,0) (0.0003300259584,0) (4.99498452e-09,0) (5.220474457e-13,0) (0.0003140465704,0) (2.043749217e-14,0) (6.916995033e-05,0) (0.0001161425193,0) (3.068536094e-15,0) (6.841874488e-06,0) (0.0001365406311,0) (3.090610873e-13,0) (1.118320353e-06,0) (0.0001219538312,0) (2.402304362e-14,0) (6.135362753e-06,0) (0.0001061573737,0) (1.022792114e-14,0) (9.682037194e-06,0) (9.16160885e-05,0) (0,0) (0.008475895408,0) (0.1732522102,0) (1.124213962e-07,0) (0.02297182624,0) (1.084202172e-19,0) (0.0009869192534,0) (0.006480627332,0) (3.316210435e-10,0) (0.000596346401,0) (1.694065895e-21,0) (6.030566529e-06,0) (7.772448169e-05,0) (1.304810639e-11,0) (1.025243196e-05,0) (0,0) (6.172455307e-07,0) (3.424236285e-06,0) (8.91940129e-14,0) (8.102047562e-08,0) (0,0) (1.7510264e-07,0) (5.995060337e-14,0) (0.0002921369044,0) (3.675876272e-05,0) (2.032879073e-20,0) (1.275281687e-06,0) (4.637667068e-13,0) (0.0003051743252,0) (0.0002630933887,0) (6.776263578e-21,0) (3.588497215e-06,0) (5.404957306e-12,0) (0.0003430215163,0) (6.96043537e-05,0) (5.082197684e-21,0) (2.144710129e-06,0) (2.269021793e-12,0) (0.0002012220718,0) (3.895281572e-05,0) (1.694065895e-21,0) (3.844113255e-09,0) (1.769838074e-15,0) (0.0001178597097,0) (2.092539475e-05,0) (-8.470329473e-22,0) (6.145570316e-08,0) (3.010474357e-14,0) (2.166322872e-05,0) (9.000390998e-05,0) (0,0) (1.298476433e-12,0) (5.281220211e-07,0) (2.249656277e-13,0) (0.0001117973318,0) (2.541098842e-21,0) (1.467994913e-07,0) (7.105028024e-14,0) (4.480358687e-05,0) (5.317998557e-05,0) (0,0) (6.039698986e-08,0) (2.87767903e-14,0) (3.246588878e-06,0) (8.011602699e-05,0) -(0.4945189387,0) (0.307421443,0) (0.1319654046,0) (0.03941143222,0) (0.01673841645,0) (0.005001509027,0) (0.002982067969,0) (0.0008721944031,0) (0.0006739086684,0) (0.0001662005827,0) (0.000162668234,0) (2.726728507e-05,0) (3.849627959e-05,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.3147524089,0) (0.3911428714,0) (0.2057672699,0) (0.06817076837,0) (0.01624681051,0) (0.001918900616,0) (8.656155591e-06,0) (0.0003293313421,0) (0.0005165205109,0) (0.0005274892321,0) (0.000308913253,0) (0.0001921098042,0) (7.200817462e-05,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.1469209212,0) (0.001757452279,0) (0.008885391297,0) (0.0004765796032,0) (0.0003137171467,0) (3.753583099e-07,0) (3.817084e-06,0) (6.033841652e-07,0) (5.317323845e-07,0) (8.414643968e-06,0) (3.31541252e-06,0) (3.002007615e-07,0) (1.229871495e-06,0) (0.001306177527,0) (1.355168727e-09,0) (0.2503658847,0) (1.046614926e-05,0) (2.060951583e-11,0) (0.04152020624,0) (4.050576507e-07,0) (1.00843227e-12,0) (0.003778769832,0) (1.889305054e-06,0) (8.299835645e-12,0) (0.002559803502,0) (1.316604296e-15,0) (2.853709815e-10,0) (7.660087477e-05,0) (2.266554089e-16,0) (5.359854749e-09,0) (1.127557649e-07,0) (1.456075894e-15,0) (8.395718063e-08,0) (9.154156321e-06,0) (9.161877051e-08,0) (3.993706216e-16,0) (1.150818494e-07,0) (1.068890781e-15,0) (4.419176462e-08,0) (7.775554357e-06,0) (1.628929061e-17,0) (4.528323296e-06,0) (1.43185262e-05,0) (2.455969101e-13,0) (6.161678805e-07,0) (1.125366415e-06,0) (1.15944313e-15,0) (1.58315933e-07,0) (5.391837529e-07,0) (2.24968478e-15,0) (6.286898691e-07,0) (3.183188427e-06,0) (6.2883726e-18,0) (0.0002446691601,0) (8.145458932e-07,0) (5.664740933e-10,0) (0.177759353,0) (2.493664997e-18,0) (2.201408811e-06,0) (0.0003158153936,0) (8.549720567e-10,0) (0.0706465972,0) (1.058791184e-22,0) (2.464242287e-13,0) (6.094571757e-11,0) (1.707997469e-15,0) (4.38015457e-05,0) (8.131516294e-20,0) (2.311133296e-11,0) (9.174418953e-05,0) (8.403150672e-11,0) (0.001971316564,0) (5.29395592e-23,0) (1.266660794e-13,0) (7.775698928e-17,0) (6.88337889e-11,0) (2.410431746e-06,0) (1.356576205e-22,0) (5.576701781e-10,0) (1.468000911e-14,0) (6.062379565e-07,0) (3.176643229e-06,0) (-2.067951531e-24,0) (2.300661614e-12,0) (5.707138741e-16,0) (1.135038219e-09,0) (1.530804122e-07,0) (-1.178732373e-23,0) (3.081533289e-11,0) (8.947554122e-16,0) (2.296325301e-09,0) (3.899274721e-07,0) (6.749793798e-22,0) (8.755362874e-11,0) (1.48542241e-15,0) (8.808607626e-08,0) (2.190836451e-05,0) (-1.058791184e-22,0) (2.423577032e-09,0) (3.638364687e-14,0) (4.518853107e-06,0) (4.641490491e-06,0) (1.413638742e-27,0) (6.210057073e-11,0) (3.638362452e-11,0) (1.650294841e-19,0) (9.04762241e-12,0) (8.271806126e-24,0) (4.100520746e-10,0) (4.164857336e-15,0) (3.101457978e-07,0) (1.081074942e-06,0) (7.940933881e-23,0) (4.313670249e-09,0) (1.26775354e-14,0) (2.818838655e-06,0) (9.917835142e-07,0) -(0.1537404548,0) (0.003727007567,0) (0.00854296775,0) (0.0008283378013,0) (0.000249242271,0) (3.135135163e-06,0) (3.485164461e-06,0) (1.245370055e-07,0) (1.451806454e-06,0) (9.235094054e-06,0) (1.535303137e-06,0) (1.834495508e-07,0) (1.651277635e-06,0) (2.815830936e-10,0) (0.01983051592,0) (0.2311916741,0) (1.480857164e-06,0) (5.065308416e-11,0) (0.05191474862,0) (1.74172454e-07,0) (5.928976114e-13,0) (0.002321923377,0) (5.781125973e-06,0) (1.396714217e-11,0) (0.002995923626,0) (1.300580339e-15,0) (2.083846774e-09,0) (2.160554926e-05,0) (8.895745648e-08,0) (1.874301973e-14,0) (4.549221948e-07,0) (3.009999658e-15,0) (6.499753675e-08,0) (5.596904508e-06,0) (8.516512091e-16,0) (5.426835441e-08,0) (1.474190623e-07,0) (1.228211538e-15,0) (1.807091778e-07,0) (1.378205676e-05,0) (2.933157846e-14,0) (5.773281799e-06,0) (8.30249756e-06,0) (1.793970786e-07,0) (1.57524998e-14,0) (1.14196802e-07,0) (1.547102555e-15,0) (2.937426657e-07,0) (8.906479179e-07,0) (3.127361261e-15,0) (1.516806236e-06,0) (2.811236419e-06,0) (0,0) (1.511060808e-05,0) (5.607603461e-10,0) (0.1487858497,0) (0.02038732434,0) (1.734723476e-18,0) (9.734329973e-09,0) (0.0004046016186,0) (8.829540289e-10,0) (0.0787413867,0) (0,0) (1.175486027e-09,0) (3.16393186e-09,0) (1.818492629e-13,0) (0.0005493161406,0) (0,0) (1.11287863e-09,0) (2.242153709e-05,0) (5.137087983e-11,0) (0.001903470945,0) (-4.235164736e-22,0) (1.177409821e-09,0) (2.273659858e-09,0) (4.248625572e-15,0) (2.121979301e-05,0) (0,0) (1.746371504e-10,0) (3.101321166e-15,0) (2.618867638e-10,0) (3.3303246e-06,0) (-6.6174449e-24,0) (4.476698989e-11,0) (7.989091628e-15,0) (1.282889475e-07,0) (2.814187778e-07,0) (1.654361225e-24,0) (2.426502395e-12,0) (1.278136264e-16,0) (7.949778252e-10,0) (1.110717381e-07,0) (2.436173229e-11,0) (0,0) (3.526056281e-16,0) (7.3810059e-07,0) (2.697616726e-05,0) (0,0) (1.877165974e-10,0) (1.913490841e-14,0) (2.115184742e-06,0) (1.181201865e-06,0) (-1.654361225e-24,0) (6.907330169e-11,0) (1.047719175e-07,0) (7.596810143e-15,0) (7.557011361e-09,0) (1.895051636e-10,0) (0,0) (6.491569902e-15,0) (1.28432286e-06,0) (1.324891707e-06,0) (0,0) (9.739590345e-10,0) (2.829120299e-14,0) (3.141117806e-06,0) (2.187995244e-07,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.002296938444,0) (0.0004656769935,0) (-3.404442288e-05,0) (8.60557369e-05,0) (-2.195463111e-05,0) (1.021437952e-06,0) (1.052245556e-06,0) (3.19721922e-07,0) (-3.631499723e-07,0) (-8.080661741e-07,0) (1.730221396e-07,0) (-2.294551817e-08,0) (-1.671873287e-07,0) (0.008189657419,0) (5.041046806e-06,0) (-0.008342968697,0) (0.0002452856292,0) (-2.067629571e-07,0) (0.002505844645,0) (-1.362524288e-05,0) (1.28943057e-08,0) (-0.0003814274264,0) (-3.297204231e-05,0) (-4.172364306e-08,0) (0.0001791736462,0) (1.381913284e-10,0) (1.079257912e-07,0) (-3.267927222e-05,0) (-3.366221799e-11,0) (2.800914463e-07,0) (2.957483131e-08,0) (-4.691192177e-11,0) (6.280388515e-07,0) (3.585047097e-06,0) (-8.962099782e-07,0) (-4.954574338e-11,0) (9.752156065e-07,0) (3.109204061e-11,0) (3.176698282e-07,0) (-2.771203269e-06,0) (-2.22648192e-12,0) (1.653561186e-06,0) (-1.853786177e-06,0) (-4.89836296e-10,0) (1.10502967e-06,0) (-9.167977887e-07,0) (3.191879817e-11,0) (5.061688212e-07,0) (-6.78714229e-07,0) (3.355563738e-11,0) (7.856396421e-07,0) (-1.190808539e-06,0) (0,0) (-0.0009274664534,0) (-0.0002742614059,0) (4.438674186e-06,0) (-0.001474755946,0) (-8.67361738e-19,0) (-1.006015126e-05,0) (-0.002941831249,0) (-2.930994065e-06,0) (0.005259890253,0) (1.376428539e-21,0) (5.998322676e-10,0) (6.199376993e-08,0) (-1.995271809e-10,0) (6.084148142e-05,0) (5.421010862e-20,0) (-7.446672951e-11,0) (-0.0003970796515,0) (2.33129964e-07,0) (0.0003677132413,0) (5.29395592e-23,0) (4.113038732e-10,0) (-1.578850801e-11,0) (2.295141761e-08,0) (6.300650718e-06,0) (-3.176373552e-22,0) (4.941788939e-08,0) (-4.216631935e-10,0) (-3.616195343e-06,0) (5.091702812e-06,0) (3.97046694e-23,0) (-3.504778343e-09,0) (-1.048420309e-10,0) (2.359753035e-07,0) (2.499492298e-07,0) (-1.522012327e-22,0) (9.88648561e-09,0) (-1.014613753e-10,0) (-2.52638343e-07,0) (8.108630087e-07,0) (1.058791184e-22,0) (-3.46259369e-09,0) (2.113178083e-11,0) (2.345799347e-07,0) (-3.336664573e-06,0) (9.264422861e-23,0) (-3.308381734e-08,0) (-2.028902496e-10,0) (2.843321806e-06,0) (-2.094078847e-06,0) (6.203854594e-25,0) (-5.632286098e-11,0) (7.855457093e-09,0) (7.109805969e-13,0) (-7.829784988e-09,0) (-1.389663429e-22,0) (-1.617807133e-08,0) (8.400741329e-11,0) (9.173899183e-07,0) (-1.236998982e-06,0) (0,0) (-4.115909576e-08,0) (1.129540535e-10,0) (1.15856545e-06,0) (-1.384583023e-06,0) -(-0.05751293495,0) (-0.01742314575,0) (0.002807441229,0) (-0.002741260601,0) (0.0006877098011,0) (-6.313790157e-05,0) (-3.703790973e-05,0) (-1.993765262e-06,0) (1.779141841e-05,0) (1.117127821e-05,0) (-3.925466161e-06,0) (1.105928494e-06,0) (4.760820116e-06,0) (2.356370425e-06,0) (0.002086629187,0) (0.008695215087,0) (-6.2979561e-06,0) (3.741398894e-07,0) (-0.07442571239,0) (3.937534685e-07,0) (-7.848018285e-09,0) (0.008950218454,0) (-7.896863725e-06,0) (5.968412251e-08,0) (-0.002792952986,0) (-8.133735556e-11,0) (5.197317153e-08,0) (0.0004693188178,0) (-7.459501429e-07,0) (-3.500108653e-10,0) (-4.093285999e-06,0) (1.032339543e-10,0) (-9.466882665e-07,0) (-8.422440694e-05,0) (6.995807459e-11,0) (-1.632739084e-06,0) (-4.319618027e-06,0) (-2.136820204e-11,0) (9.874220973e-07,0) (7.401138147e-05,0) (1.010201071e-10,0) (-5.466525505e-06,0) (-8.034065257e-06,0) (-6.503235901e-07,0) (-1.341657236e-10,0) (-4.441394808e-07,0) (-3.383529974e-11,0) (1.834727903e-06,0) (5.4567997e-06,0) (-3.617647595e-11,0) (2.98183865e-06,0) (5.407168305e-06,0) (6.505213035e-19,0) (-3.801065212e-06,0) (-4.420846394e-06,0) (0.06307890282,0) (0.006834856211,0) (-1.734723476e-18,0) (1.2360615e-07,0) (-0.0004147197189,0) (3.245439041e-06,0) (-0.05323530859,0) (-1.084202172e-19,0) (-7.133332631e-09,0) (1.11168147e-08,0) (5.132952515e-09,0) (-0.005614192732,0) (0,0) (3.611864086e-10,0) (1.48279327e-05,0) (-1.809388448e-07,0) (0.00192530132,0) (-1.355252716e-20,0) (-1.462622461e-08,0) (-4.015748519e-08,0) (3.138645067e-10,0) (-0.0004375922108,0) (8.470329473e-22,0) (-2.062581006e-09,0) (1.526916853e-10,0) (-7.487547447e-09,0) (-6.5275208e-05,0) (0,0) (9.665570157e-10,0) (-4.759094266e-10,0) (4.428858264e-06,0) (1.003236761e-05,0) (0,0) (1.297693598e-10,0) (-3.054149145e-11,0) (7.432534774e-08,0) (9.720891838e-06,0) (2.414566489e-11,0) (8.470329473e-22,0) (-3.039500918e-12,0) (1.39543781e-06,0) (5.069545599e-05,0) (0,0) (-4.776269042e-10,0) (1.818254864e-10,0) (-9.70477885e-06,0) (-5.529115333e-06,0) (0,0) (-4.190493315e-10,0) (-1.078377038e-06,0) (-1.525802291e-10,0) (-6.801392399e-08,0) (5.154379602e-10,0) (2.117582368e-22,0) (-9.02140094e-11,0) (5.837397148e-06,0) (5.909045808e-06,0) (2.64697796e-23,0) (2.987041801e-10,0) (-1.60387982e-10,0) (3.118621718e-06,0) (1.889669192e-07,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.05227305888,0) (-0.01059774195,0) (0.0007747731012,0) (-0.0019584315,0) (0.0004996371268,0) (-2.324558865e-05,0) (-2.394669917e-05,0) (-7.276138765e-06,0) (8.264461737e-06,0) (1.838973561e-05,0) (-3.937587669e-06,0) (5.221874471e-07,0) (3.804800733e-06,0) (0.003294115467,0) (-5.03865326e-06,0) (8.521411615e-05,0) (8.201923211e-05,0) (2.067578889e-07,0) (-0.06268694534,0) (-4.461298473e-06,0) (-1.290932257e-08,0) (0.008994674824,0) (-1.566384246e-05,0) (4.177343488e-08,0) (-0.003310642092,0) (-1.39836719e-10,0) (4.550215342e-08,0) (0.0007412007475,0) (3.371897556e-11,0) (-2.135755559e-07,0) (-6.832987415e-06,0) (4.698765009e-11,0) (-6.359455323e-07,0) (-9.524322186e-05,0) (-1.168207208e-06,0) (4.963625375e-11,0) (-6.28702053e-07,0) (-3.114294568e-11,0) (4.478956051e-07,0) (5.538823034e-05,0) (2.230680666e-12,0) (1.774135912e-06,0) (2.782574797e-06,0) (4.907366656e-10,0) (-1.097731374e-06,0) (-3.17533837e-06,0) (-3.19703626e-11,0) (1.108827398e-06,0) (2.817216516e-06,0) (-3.361210006e-11,0) (1.86095787e-06,0) (7.359028335e-06,0) (-4.33680869e-19,0) (-0.0002852827998,0) (-0.0001093982521,0) (-4.438290702e-06,0) (0.0612087474,0) (-1.084202172e-18,0) (-5.672657459e-06,0) (-0.001412428299,0) (2.934551322e-06,0) (-0.05104289932,0) (5.844527336e-20,0) (2.315741605e-10,0) (2.280737082e-08,0) (1.99657454e-10,0) (-0.001386055972,0) (2.032879073e-20,0) (-2.218079147e-11,0) (-0.0001285817751,0) (-2.334044471e-07,0) (0.000791823636,0) (2.435219723e-21,0) (1.565366177e-10,0) (1.581342029e-11,0) (4.980086481e-09,0) (-0.0001439248567,0) (-5.558653716e-22,0) (1.452916396e-08,0) (4.223110462e-10,0) (-7.100395277e-06,0) (-2.760876911e-05,0) (-2.415367389e-22,0) (-1.566034151e-09,0) (1.050286112e-10,0) (1.196885357e-08,0) (-1.098689074e-05,0) (3.441071348e-22,0) (2.91435589e-09,0) (1.016381852e-10,0) (-1.778376473e-07,0) (-1.275177812e-05,0) (-2.64697796e-22,0) (-1.096373539e-09,0) (-2.116571378e-11,0) (3.816288677e-07,0) (7.029415091e-05,0) (2.067951531e-22,0) (-1.759502375e-08,0) (2.032173328e-10,0) (-7.041690834e-06,0) (-9.234442056e-06,0) (2.714186385e-25,0) (3.778730592e-10,0) (3.371220318e-09,0) (-7.123309402e-13,0) (-3.067020323e-09,0) (9.264422861e-23,0) (-4.169374205e-09,0) (-8.414027643e-11,0) (2.098761966e-06,0) (5.54532595e-06,0) (-9.926167351e-23,0) (-9.442255645e-09,0) (-1.131400601e-10,0) (5.032227385e-06,0) (1.055086583e-06,0) -(-0.01870392239,0) (-0.005666223889,0) (0.0009130148356,0) (-0.0008914920716,0) (0.0002236517882,0) (-2.053323155e-05,0) (-1.204518931e-05,0) (-6.483972824e-07,0) (5.785990742e-06,0) (3.633038737e-06,0) (-1.276610461e-06,0) (3.596617133e-07,0) (1.548277966e-06,0) (-2.360738584e-06,0) (0.03012600167,0) (-0.02661648463,0) (-0.0001013170272,0) (-3.750412402e-07,0) (-0.02410440258,0) (-6.473083976e-06,0) (7.86788762e-09,0) (0.002917313174,0) (-6.209909928e-05,0) (-5.982724624e-08,0) (-0.0008486929007,0) (8.153315783e-11,0) (1.767015122e-07,0) (0.0001524684146,0) (8.386966911e-07,0) (3.506062313e-10,0) (-2.412940959e-06,0) (-1.03489508e-10,0) (4.325370202e-07,0) (-2.813110036e-05,0) (-7.01336135e-11,0) (-1.272009523e-06,0) (-6.63678222e-07,0) (2.141801211e-11,0) (7.20810683e-07,0) (2.366970548e-05,0) (-1.012439589e-10,0) (-8.825188043e-08,0) (-4.302174199e-06,0) (2.262857906e-07,0) (1.343906619e-10,0) (-5.823968285e-07,0) (3.391481584e-11,0) (1.224153722e-06,0) (1.147096904e-06,0) (3.625524393e-11,0) (1.96618936e-06,0) (7.619721113e-07,0) (1.734723476e-18,0) (-0.0002399783128,0) (4.429670749e-06,0) (0.05862781591,0) (-0.03565811638,0) (0,0) (3.134980355e-06,0) (-0.003476641184,0) (-3.253025745e-06,0) (-0.01396980218,0) (-2.710505431e-20,0) (1.136629777e-07,0) (1.037074105e-06,0) (-5.146353529e-09,0) (-0.00182694799,0) (2.710505431e-20,0) (-1.794104248e-08,0) (-0.0001795896175,0) (1.81405844e-07,0) (0.0008103216112,0) (3.388131789e-21,0) (2.246534061e-07,0) (1.460111013e-07,0) (-3.147057971e-10,0) (-0.0001426984983,0) (0,0) (3.165906529e-08,0) (-1.530328056e-10,0) (-5.880359132e-08,0) (-2.120406882e-05,0) (5.29395592e-23,0) (-1.426401455e-08,0) (4.771886505e-10,0) (-9.224878544e-07,0) (5.639404919e-06,0) (0,0) (-1.923071812e-09,0) (3.061682836e-11,0) (1.365337013e-07,0) (3.050917587e-06,0) (-5.065341759e-10,0) (4.235164736e-22,0) (3.046264775e-12,0) (6.475738678e-07,0) (1.629354359e-05,0) (0,0) (9.109682087e-09,0) (-1.822953378e-10,0) (-1.485812014e-06,0) (-3.477463597e-06,0) (0,0) (6.655951109e-09,0) (-5.74589738e-07,0) (1.527580882e-10,0) (1.947745163e-07,0) (-7.857037501e-09,0) (2.117582368e-22,0) (9.043149751e-11,0) (3.224418723e-06,0) (6.035756443e-07,0) (-1.058791184e-22,0) (-1.558553604e-08,0) (1.607444256e-10,0) (1.658167214e-06,0) (-5.670284416e-07,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.0411321873,0) (-0.008339062533,0) (0.0006096469769,0) (-0.001541034196,0) (0.0003931502828,0) (-1.829129434e-05,0) (-1.884297833e-05,0) (-5.725387206e-06,0) (6.503070519e-06,0) (1.447036132e-05,0) (-3.098376047e-06,0) (4.108944902e-07,0) (2.993889774e-06,0) (-0.003692931319,0) (6.684943117e-06,0) (0.006341380197,0) (-0.0001230406465,0) (-2.74369599e-07,0) (-0.04913856285,0) (6.893948142e-06,0) (1.71308782e-08,0) (0.007067222778,0) (1.30112031e-05,0) (-5.544016143e-08,0) (-0.002630298682,0) (1.854554824e-10,0) (-4.611068783e-08,0) (0.0005833114635,0) (-4.475959074e-11,0) (-3.716938248e-07,0) (-5.172975408e-06,0) (-6.23653338e-11,0) (-9.518968852e-07,0) (-7.449260097e-05,0) (-2.062491615e-07,0) (-6.585442473e-11,0) (-1.207582855e-06,0) (4.133017006e-11,0) (9.861243906e-08,0) (4.383718543e-05,0) (-2.959197357e-12,0) (9.323612458e-08,0) (3.492314996e-06,0) (-6.522504806e-10,0) (-1.657548191e-06,0) (-1.703770788e-06,0) (4.242558686e-11,0) (4.549582158e-07,0) (2.634266796e-06,0) (4.460116865e-11,0) (8.116553402e-07,0) (6.443219229e-06,0) (-3.035766083e-18,0) (0.0004829576041,0) (0.0001242870854,0) (5.888692216e-06,0) (0.04723623807,0) (-1.138412281e-18,0) (3.294780257e-06,0) (0.001149751687,0) (-3.89436725e-06,0) (-0.04242691604,0) (-1.694065895e-20,0) (-2.768655948e-10,0) (-2.949608241e-08,0) (-2.64989249e-10,0) (-0.001090599805,0) (3.726944968e-20,0) (3.933175976e-11,0) (0.0002019770285,0) (3.09697559e-07,0) (0.0003194157652,0) (-2.541098842e-21,0) (-1.91547415e-10,0) (-2.098780888e-11,0) (-1.35141104e-08,0) (-0.0001132326063,0) (5.823351512e-22,0) (-2.624027897e-08,0) (-5.605204444e-10,0) (-2.631350537e-06,0) (-2.46417407e-05,0) (2.514629062e-22,0) (1.457134286e-09,0) (-1.394145316e-10,0) (-1.684666273e-07,0) (-8.469855444e-06,0) (2.117582368e-22,0) (-5.243764032e-09,0) (-1.348940671e-10,0) (5.599469354e-08,0) (-1.022219073e-05,0) (1.694065895e-21,0) (1.779518342e-09,0) (2.808845119e-11,0) (1.111762798e-07,0) (5.549890313e-05,0) (-2.249931266e-22,0) (1.163451117e-08,0) (-2.697230875e-10,0) (-7.446974375e-06,0) (-5.385302829e-06,0) (-1.550963649e-25,0) (3.272970404e-10,0) (-3.370708344e-09,0) (9.449748969e-13,0) (3.578609755e-09,0) (6.948317145e-23,0) (9.0329589e-09,0) (1.116684355e-10,0) (8.917771118e-07,0) (5.110647247e-06,0) (5.128519798e-23,0) (2.385951371e-08,0) (1.501339326e-10,0) (2.921382097e-06,0) (1.83702408e-06,0) -(0.02917389264,0) (0.008838028944,0) (-0.001424096841,0) (0.001390526193,0) (-0.0003488462539,0) (3.20272016e-05,0) (1.878777362e-05,0) (1.011353251e-06,0) (-9.024838172e-06,0) (-5.66671952e-06,0) (1.99122386e-06,0) (-5.609910046e-07,0) (-2.414963783e-06,0) (3.131764434e-06,0) (0.02113859613,0) (-0.02661209925,0) (-7.166687639e-05,0) (4.97322524e-07,0) (0.03782720766,0) (-5.177796953e-06,0) (-1.043334764e-08,0) (-0.004535076858,0) (-4.088571921e-05,0) (7.933896824e-08,0) (0.001461529417,0) (-1.081506332e-10,0) (9.410884509e-08,0) (-0.0002381860178,0) (1.194202806e-06,0) (-4.647773923e-10,0) (1.261180451e-06,0) (1.372863619e-10,0) (1.038364612e-06,0) (4.216515965e-05,0) (9.30177865e-11,0) (2.694383648e-07,0) (2.749813509e-06,0) (-2.841116772e-11,0) (-1.995626923e-07,0) (-3.784413631e-05,0) (1.343156087e-10,0) (4.046369427e-06,0) (2.801726811e-06,0) (6.603081789e-07,0) (-1.781739592e-10,0) (-1.048868705e-07,0) (-4.49845343e-11,0) (-4.575800789e-07,0) (-3.241043012e-06,0) (-4.809009413e-11,0) (-7.612857105e-07,0) (-3.494038197e-06,0) (0,0) (-0.0001781248725,0) (-5.875863018e-06,0) (-0.00325358254,0) (-0.03202255516,0) (-4.33680869e-19,0) (2.27129912e-06,0) (-0.002309571161,0) (4.314038673e-06,0) (0.02951567944,0) (-5.421010862e-20,0) (9.109152453e-08,0) (7.736946357e-07,0) (6.824590353e-09,0) (0.002846967579,0) (0,0) (-1.380258363e-08,0) (-0.00014659622,0) (-2.405362853e-07,0) (-0.000837203801,0) (0,0) (1.804379704e-07,0) (1.404322281e-07,0) (4.172190712e-10,0) (0.0002216784642,0) (-8.470329473e-22,0) (2.542909593e-08,0) (2.030650731e-10,0) (-3.866749846e-08,0) (3.31291695e-05,0) (0,0) (-1.148514282e-08,0) (-6.330232694e-10,0) (-4.027290359e-06,0) (-3.296411943e-06,0) (0,0) (-1.548017159e-09,0) (-4.061005464e-11,0) (4.700979461e-08,0) (-5.014173148e-06,0) (-4.001910504e-10,0) (0,0) (-4.040786575e-12,0) (-5.617850981e-07,0) (-2.586134062e-05,0) (1.058791184e-22,0) (7.229839581e-09,0) (2.418124915e-10,0) (6.181658491e-06,0) (1.538533616e-06,0) (-2.64697796e-23,0) (5.335196032e-09,0) (3.786615396e-07,0) (-2.026498209e-10,0) (1.980117903e-07,0) (-6.313576244e-09,0) (-2.117582368e-22,0) (-1.199476441e-10,0) (-1.961240248e-06,0) (-3.991018329e-06,0) (-2.117582368e-22,0) (-1.197908084e-08,0) (-2.132048396e-10,0) (-1.09602752e-06,0) (-5.6965094e-07,0) -(0.2731656004,0) (0.01615280688,0) (-0.02892567571,0) (-0.00681892694,0) (0.00311081643,0) (-0.0001242414384,0) (9.142358452e-06,0) (0.0001499983368,0) (-0.0001504484689,0) (9.162783375e-05,0) (-7.145343949e-05,0) (6.119624794e-05,0) (-3.277313972e-05,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.2695462447,0) (0.02324389201,0) (-0.03424272561,0) (-0.004333899483,0) (0.002291534039,0) (4.332848919e-05,0) (0.0001066902242,0) (-2.294053818e-05,0) (1.892984583e-05,0) (-3.739677434e-05,0) (2.322309841e-05,0) (-2.861059199e-06,0) (6.880804962e-06,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.1208306479,0) (-0.009094799051,0) (-0.002843835608,0) (4.385357727e-05,0) (0.000101455379,0) (-2.497568383e-05,0) (2.882303202e-05,0) (4.591201175e-06,0) (1.25522063e-05,0) (2.574477926e-05,0) (9.479225358e-06,0) (3.178405029e-06,0) (8.85371498e-06,0) (1.738623898e-10,0) (-0.03001102387,0) (0.1997440824,0) (-0.0001221715915,0) (-1.474070406e-10,0) (-0.02386352647,0) (-3.161081699e-06,0) (8.892664166e-13,0) (-0.0003782332269,0) (5.069147332e-07,0) (1.658455888e-13,0) (1.114472307e-05,0) (-1.500172006e-14,0) (-4.573358943e-07,0) (5.007857078e-05,0) (2.271380542e-06,0) (1.920933975e-13,0) (-1.440347086e-05,0) (3.522406586e-14,0) (-3.493952407e-06,0) (4.251167502e-05,0) (1.184301307e-14,0) (8.749326325e-07,0) (-6.649639108e-06,0) (-7.916366537e-15,0) (-3.478571729e-06,0) (4.038721491e-05,0) (5.133587681e-14,0) (-1.83560613e-06,0) (3.443235877e-05,0) (6.48529231e-07,0) (4.700311397e-15,0) (3.713046695e-06,0) (-8.486490438e-15,0) (-1.351843834e-06,0) (9.719683219e-06,0) (-1.014688338e-14,0) (-1.550010209e-06,0) (1.674276403e-05,0) (-1.734723476e-18,0) (-0.000377473387,0) (-9.424696266e-12,0) (-0.008719428334,0) (0.06301289739,0) (0,0) (4.987671827e-06,0) (-0.00143187811,0) (-4.141268852e-10,0) (-0.005892254741,0) (1.694065895e-21,0) (1.859842766e-07,0) (4.229671091e-07,0) (-6.138140965e-13,0) (-6.644558929e-05,0) (0,0) (-2.859798928e-08,0) (-8.511178364e-06,0) (1.891527865e-12,0) (-1.727510638e-05,0) (0,0) (3.662671398e-07,0) (6.488075772e-07,0) (-3.437640456e-13,0) (-2.522670586e-05,0) (0,0) (5.164395866e-08,0) (2.409182199e-13,0) (-3.633301909e-07,0) (1.293020884e-05,0) (0,0) (-2.328816091e-08,0) (-6.937242073e-14,0) (4.52940866e-06,0) (-8.289612776e-06,0) (-5.29395592e-23,0) (-3.139926191e-09,0) (-5.790193031e-15,0) (-4.039157833e-07,0) (1.915478012e-06,0) (-8.160659869e-10,0) (0,0) (-1.266989765e-15,0) (-9.077704595e-06,0) (2.704664962e-05,0) (0,0) (1.483552381e-08,0) (5.416556893e-14,0) (-5.200987241e-06,0) (1.074630952e-05,0) (0,0) (1.08671901e-08,0) (-1.266292565e-07,0) (-3.289808167e-14,0) (-9.136562887e-07,0) (-1.278080324e-08,0) (-2.117582368e-22,0) (-2.091689037e-14,0) (-5.329587217e-06,0) (9.978394523e-06,0) (6.352747104e-22,0) (-2.480045938e-08,0) (-3.214682481e-14,0) (6.229744764e-07,0) (4.252964659e-06,0) -(0.2791082932,0) (0.02715806816,0) (-0.02846199811,0) (-0.008149020754,0) (0.002851320191,0) (-3.950407327e-05,0) (1.14330723e-05,0) (0.000154869012,0) (-0.0001326794655,0) (8.537678745e-05,0) (-7.412014254e-05,0) (5.873445414e-05,0) (-3.031732376e-05,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.1181203825,0) (-0.006245320651,0) (-0.002900269686,0) (3.326358174e-05,0) (0.0001138238722,0) (-8.641960382e-06,0) (3.016434396e-05,0) (1.010587839e-05,0) (7.596477619e-06,0) (2.457459582e-05,0) (1.39297899e-05,0) (4.065901073e-06,0) (7.640914772e-06,0) (-0.01035118577,0) (-1.060983429e-08,0) (0.1844993062,0) (0.0003082971776,0) (-3.414617148e-10,0) (-0.02229074989,0) (-4.695743746e-06,0) (1.512221582e-12,0) (-0.000493871054,0) (2.774482817e-07,0) (1.388386925e-13,0) (1.075209157e-05,0) (1.542408416e-12,0) (-1.658424701e-07,0) (9.590123357e-05,0) (8.91317672e-15,0) (8.216387078e-07,0) (-6.614975308e-06,0) (-5.963206816e-15,0) (-3.894922342e-06,0) (5.496461783e-05,0) (2.139238978e-08,0) (-1.443919701e-14,0) (-6.011743517e-06,0) (4.673910862e-15,0) (-1.74835413e-06,0) (3.005116424e-05,0) (-2.235709583e-16,0) (-5.566167409e-06,0) (4.421606725e-05,0) (-2.755076165e-13,0) (-8.301042594e-07,0) (1.171506491e-05,0) (5.277626819e-15,0) (-9.855585617e-07,0) (7.565601838e-06,0) (4.796833131e-15,0) (-2.467184366e-06,0) (1.707721501e-05,0) (-2.168404345e-18,0) (-0.001440066044,0) (0.0003756619176,0) (-7.980213573e-09,0) (0.06390193245,0) (-5.963111949e-19,0) (4.661129412e-05,0) (-0.001430622896,0) (-5.324722779e-10,0) (-0.006490750649,0) (3.176373552e-22,0) (-1.219047869e-09,0) (6.88256806e-08,0) (-1.492854078e-13,0) (-2.119132764e-05,0) (-2.541098842e-21,0) (3.776952075e-09,0) (-1.772438385e-05,0) (2.737719361e-12,0) (-1.263791935e-05,0) (7.940933881e-22,0) (-1.489280527e-10,0) (2.159069195e-15,0) (1.41805818e-07,0) (-9.41299573e-06,0) (-5.29395592e-22,0) (-2.66680814e-08,0) (8.251120903e-14,0) (-1.360177412e-05,0) (2.890940732e-05,0) (-3.044024654e-22,0) (-2.873311294e-09,0) (-5.553993267e-14,0) (-6.239731814e-07,0) (3.264209423e-06,0) (-6.6174449e-23,0) (8.129572964e-09,0) (-4.505795755e-14,0) (6.797582913e-07,0) (-3.897277635e-06,0) (-2.01170325e-21,0) (-5.801431416e-10,0) (1.621407408e-15,0) (-3.222079977e-06,0) (2.141123947e-05,0) (-4.764560328e-22,0) (-1.220420545e-08,0) (-3.309562665e-14,0) (-9.894086537e-06,0) (2.043898951e-05,0) (-3.101927297e-24,0) (-8.979762109e-12,0) (4.383490997e-09,0) (1.926809819e-16,0) (3.180408848e-08,0) (2.911675756e-22,0) (-7.758571774e-09,0) (1.720215898e-14,0) (-3.727686172e-06,0) (7.582318236e-06,0) (1.32348898e-22,0) (-1.614102532e-08,0) (1.910022905e-14,0) (-3.025162843e-06,0) (8.913907942e-06,0) -(0.2757309677,0) (0.033849107,0) (-0.03357642321,0) (-0.005713665996,0) (0.002042528073,0) (0.0001252214311,0) (0.000101946051,0) (-1.042211491e-05,0) (3.127914568e-05,0) (-3.917751923e-05,0) (1.580332402e-05,0) (-2.236553419e-06,0) (7.972957138e-06,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.002296938444,0) (0.0004656769935,0) (-3.404442288e-05,0) (8.60557369e-05,0) (-2.195463111e-05,0) (1.021437952e-06,0) (1.052245556e-06,0) (3.19721922e-07,0) (-3.631499723e-07,0) (-8.080661741e-07,0) (1.730221396e-07,0) (-2.294551817e-08,0) (-1.671873287e-07,0) (0.008189657419,0) (5.041046806e-06,0) (-0.008342968697,0) (0.0002452856292,0) (-2.067629571e-07,0) (0.002505844645,0) (-1.362524288e-05,0) (1.28943057e-08,0) (-0.0003814274264,0) (-3.297204231e-05,0) (-4.172364306e-08,0) (0.0001791736462,0) (1.381913284e-10,0) (1.079257912e-07,0) (-3.267927222e-05,0) (-3.366221799e-11,0) (2.800914463e-07,0) (2.957483131e-08,0) (-4.691192177e-11,0) (6.280388515e-07,0) (3.585047097e-06,0) (-8.962099782e-07,0) (-4.954574338e-11,0) (9.752156065e-07,0) (3.109204061e-11,0) (3.176698282e-07,0) (-2.771203269e-06,0) (-2.22648192e-12,0) (1.653561186e-06,0) (-1.853786177e-06,0) (-4.89836296e-10,0) (1.10502967e-06,0) (-9.167977887e-07,0) (3.191879817e-11,0) (5.061688212e-07,0) (-6.78714229e-07,0) (3.355563738e-11,0) (7.856396421e-07,0) (-1.190808539e-06,0) (6.505213035e-19,0) (-0.0009274664534,0) (-0.0002742614059,0) (4.438674186e-06,0) (-0.001474755946,0) (-1.084202172e-19,0) (-1.006015126e-05,0) (-0.002941831249,0) (-2.930994065e-06,0) (0.005259890253,0) (1.799945013e-21,0) (5.998322676e-10,0) (6.199376993e-08,0) (-1.995271809e-10,0) (6.084148142e-05,0) (5.082197684e-20,0) (-7.44667295e-11,0) (-0.0003970796515,0) (2.33129964e-07,0) (0.0003677132413,0) (1.98523347e-23,0) (4.113038732e-10,0) (-1.578850801e-11,0) (2.295141761e-08,0) (6.300650718e-06,0) (-1.588186776e-22,0) (4.941788939e-08,0) (-4.216631935e-10,0) (-3.616195343e-06,0) (5.091702812e-06,0) (5.95570041e-23,0) (-3.504778343e-09,0) (-1.048420309e-10,0) (2.359753035e-07,0) (2.499492298e-07,0) (-1.058791184e-22,0) (9.88648561e-09,0) (-1.014613753e-10,0) (-2.52638343e-07,0) (8.108630087e-07,0) (1.32348898e-22,0) (-3.46259369e-09,0) (2.113178083e-11,0) (2.345799347e-07,0) (-3.336664573e-06,0) (5.29395592e-23,0) (-3.308381734e-08,0) (-2.028902496e-10,0) (2.843321806e-06,0) (-2.094078847e-06,0) (3.101927297e-25,0) (-5.632286098e-11,0) (7.855457093e-09,0) (7.109805969e-13,0) (-7.829784988e-09,0) (-5.95570041e-23,0) (-1.617807133e-08,0) (8.400741329e-11,0) (9.173899183e-07,0) (-1.236998982e-06,0) (5.29395592e-23,0) (-4.115909576e-08,0) (1.129540535e-10,0) (1.15856545e-06,0) (-1.384583023e-06,0) -(-0.05751293495,0) (-0.01742314575,0) (0.002807441229,0) (-0.002741260601,0) (0.0006877098011,0) (-6.313790157e-05,0) (-3.703790973e-05,0) (-1.993765262e-06,0) (1.779141841e-05,0) (1.117127821e-05,0) (-3.925466161e-06,0) (1.105928494e-06,0) (4.760820116e-06,0) (2.356370425e-06,0) (0.002086629187,0) (0.008695215087,0) (-6.2979561e-06,0) (3.741398894e-07,0) (-0.07442571239,0) (3.937534685e-07,0) (-7.848018285e-09,0) (0.008950218454,0) (-7.896863725e-06,0) (5.968412251e-08,0) (-0.002792952986,0) (-8.133735556e-11,0) (5.197317153e-08,0) (0.0004693188178,0) (-7.459501429e-07,0) (-3.500108653e-10,0) (-4.093285999e-06,0) (1.032339543e-10,0) (-9.466882665e-07,0) (-8.422440694e-05,0) (6.995807459e-11,0) (-1.632739084e-06,0) (-4.319618027e-06,0) (-2.136820204e-11,0) (9.874220973e-07,0) (7.401138147e-05,0) (1.010201071e-10,0) (-5.466525505e-06,0) (-8.034065257e-06,0) (-6.503235901e-07,0) (-1.341657236e-10,0) (-4.441394808e-07,0) (-3.383529974e-11,0) (1.834727903e-06,0) (5.4567997e-06,0) (-3.617647595e-11,0) (2.98183865e-06,0) (5.407168305e-06,0) (0,0) (-3.801065212e-06,0) (-4.420846394e-06,0) (0.06307890282,0) (0.006834856211,0) (-1.734723476e-18,0) (1.2360615e-07,0) (-0.0004147197189,0) (3.245439041e-06,0) (-0.05323530859,0) (-1.084202172e-19,0) (-7.133332631e-09,0) (1.11168147e-08,0) (5.132952515e-09,0) (-0.005614192732,0) (-1.355252716e-20,0) (3.611864086e-10,0) (1.48279327e-05,0) (-1.809388448e-07,0) (0.00192530132,0) (-6.776263578e-21,0) (-1.462622461e-08,0) (-4.015748519e-08,0) (3.138645067e-10,0) (-0.0004375922108,0) (8.470329473e-22,0) (-2.062581006e-09,0) (1.526916853e-10,0) (-7.487547447e-09,0) (-6.5275208e-05,0) (-4.235164736e-22,0) (9.665570157e-10,0) (-4.759094266e-10,0) (4.428858264e-06,0) (1.003236761e-05,0) (2.117582368e-22,0) (1.297693598e-10,0) (-3.054149145e-11,0) (7.432534774e-08,0) (9.720891838e-06,0) (2.414566489e-11,0) (8.470329473e-22,0) (-3.039500918e-12,0) (1.39543781e-06,0) (5.069545599e-05,0) (0,0) (-4.776269042e-10,0) (1.818254864e-10,0) (-9.70477885e-06,0) (-5.529115333e-06,0) (0,0) (-4.190493315e-10,0) (-1.078377038e-06,0) (-1.525802291e-10,0) (-6.801392399e-08,0) (5.154379602e-10,0) (2.117582368e-22,0) (-9.02140094e-11,0) (5.837397148e-06,0) (5.909045808e-06,0) (2.64697796e-23,0) (2.987041801e-10,0) (-1.60387982e-10,0) (3.118621718e-06,0) (1.889669192e-07,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0.04586770644,0) (0.1295753448,0) (0.0004442131108,0) (0.1967622424,0) (0.0001704511524,0) (0.07116101842,0) (0.01342434892,0) (0.1479153603,0) (0.05829558339,0) (0.002881188799,0) (0.0986772665,0) (0.03669568318,0) (0.0583789555,0) (0.004863627082,0) (0.02285094543,0) (0.01871025158,0) (0.01720002272,0) (0.0129751607,0) (0.01950909261,0) (0.002216861756,0) (0.007850079801,0) (0.0006684007036,0) (0.01106999276,0) (0.004241350104,0) (0.006378882393,0) (0.0004382569924,0) (0.00246318523,0) (0.0002443597394,0) (0.003066181956,0) (0.001196173181,0) (0.001717101805,0) (2.637892713e-05,0) (0.0006299645073,0) (1.244860412e-05,0) (0.0006474759855,0) (0.0002384489065,0) (0.000314514928,0) (9.546434388e-07,0) (0.0001139889123,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(3.590997234e-05,0) (0.0001233917216,0) (1.30441383e-07,0) (1.553904071e-05,0) (1.536434435e-06,0) (2.779572112e-06,0) (2.900697787e-07,0) (1.694146338e-07,0) (2.480155548e-07,0) (7.759935467e-08,0) (9.02954327e-09,0) (1.753815685e-09,0) (2.272725483e-08,0) (0.05134867755,0) (0.01875202135,0) (0.000278013623,0) (0.005748536394,0) (0.00207432931,0) (0.0001512337715,0) (0.0004583230146,0) (0.0001648728595,0) (3.850112287e-05,0) (0.0005754261716,0) (0.0002097466075,0) (1.254127337e-05,0) (1.450462071e-05,0) (4.081696167e-05,0) (1.394154879e-05,0) (4.99941714e-06,0) (1.463681797e-05,0) (7.757214435e-09,0) (1.511410508e-06,0) (4.698023398e-06,0) (1.404013897e-06,0) (8.766678713e-06,0) (6.146623103e-06,0) (8.264078866e-06,0) (9.044095585e-07,0) (2.283550353e-06,0) (9.876553109e-07,0) (3.043249266e-07,0) (6.038139103e-07,0) (2.400053708e-07,0) (9.769650476e-07,0) (1.981749796e-06,0) (7.468840143e-07,0) (8.787060028e-07,0) (1.618326537e-06,0) (8.543525323e-07,0) (5.00506041e-07,0) (9.817712635e-07,0) (4.454731505e-07,0) (3.469446952e-18,0) (0.003515743553,0) (0.09234509611,0) (0.03477975199,0) (1.223510922e-05,0) (4.33680869e-19,0) (4.597357965e-05,0) (0.02740325923,0) (0.01004796136,0) (0.0003916175239,0) (1.694065895e-21,0) (1.460078625e-06,0) (6.30598451e-05,0) (2.330863833e-05,0) (8.451039346e-05,0) (2.710505431e-20,0) (2.399382941e-10,0) (0.001718607472,0) (0.0006467762177,0) (6.859021545e-05,0) (1.482307658e-21,0) (1.335565741e-06,0) (3.205846614e-06,0) (7.65274698e-06,0) (1.646933149e-05,0) (-8.470329473e-22,0) (4.379161533e-06,0) (1.211169872e-05,0) (2.157052131e-05,0) (8.161268252e-06,0) (0,0) (5.33910383e-06,0) (1.925982866e-05,0) (4.905944391e-05,0) (4.081163393e-07,0) (-8.470329473e-22,0) (3.171881935e-06,0) (1.1505279e-05,0) (2.779490012e-05,0) (1.68620799e-06,0) (1.32348898e-23,0) (1.369395562e-07,0) (3.006229585e-07,0) (6.24704245e-07,0) (5.081771609e-07,0) (0,0) (4.516212835e-07,0) (1.131399868e-06,0) (1.789055475e-06,0) (9.447754395e-07,0) (2.117582368e-22,0) (5.10826975e-11,0) (1.696043397e-06,0) (3.063049089e-06,0) (6.775872177e-06,0) (1.058791184e-22,0) (6.382847646e-07,0) (1.694474736e-06,0) (2.713576222e-06,0) (1.415412032e-06,0) (1.058791184e-22,0) (3.927215262e-07,0) (1.006395786e-06,0) (4.761797554e-07,0) (1.932952223e-06,0) -(0.02151507676,0) (0.08145033313,0) (0.0009225981511,0) (0.009071793741,0) (0.001897530337,0) (0.001271522409,0) (0.000393613206,0) (3.191902604e-05,0) (0.0002180280768,0) (1.351339316e-05,0) (1.003663981e-05,0) (6.66710727e-06,0) (1.372598266e-05,0) (0.01971880285,0) (0.0002195616787,0) (0.0003270306584,0) (2.678465689e-05,0) (0.002763516793,0) (0.106697746,0) (8.901625396e-07,0) (0.0001038820182,0) (0.0345000232,0) (1.0786905e-05,0) (0.0002550410404,0) (0.002603733392,0) (5.086780754e-06,0) (1.296261603e-06,0) (0.01019461019,0) (6.255143051e-06,0) (6.536172276e-06,0) (3.683045246e-05,0) (3.540615072e-06,0) (1.378850213e-05,0) (0.0012674418,0) (5.746639196e-06,0) (4.91232311e-05,0) (0.000126571826,0) (3.717599159e-07,0) (5.395422689e-06,0) (0.0003974504446,0) (3.479206662e-07,0) (5.176068333e-06,0) (7.774311777e-06,0) (2.357456293e-06,0) (1.1427038e-06,0) (1.727367798e-06,0) (7.399816442e-07,0) (1.145978052e-05,0) (3.343258584e-05,0) (4.18479744e-07,0) (5.861896876e-06,0) (1.04002171e-05,0) (-5.421010862e-20,0) (9.561558787e-07,0) (0.03485246954,0) (0.02674278495,0) (0.002291387465,0) (0,0) (1.569546168e-06,0) (0.0004250908481,0) (0.01192913133,0) (0.03599121376,0) (-8.67361738e-19,0) (4.328799598e-08,0) (3.906012346e-08,0) (0.0001448848612,0) (0.05737890751,0) (0,0) (1.172235841e-10,0) (9.806088991e-06,0) (0.0006373039673,0) (0.001947382062,0) (0,0) (1.816924258e-07,0) (7.09263354e-07,0) (2.318653812e-05,0) (0.009023977889,0) (0,0) (2.436045478e-08,0) (7.517683295e-06,0) (2.140748389e-07,0) (0.001279410655,0) (0,0) (2.086878003e-08,0) (2.83498791e-05,0) (0.0001528953655,0) (0.0003576463545,0) (0,0) (6.94006599e-09,0) (7.29799041e-06,0) (6.948945167e-06,0) (0.0008507631173,0) (2.393151383e-11,0) (0,0) (2.620125233e-08,0) (2.63818605e-06,0) (9.527036339e-05,0) (0,0) (1.215275915e-09,0) (1.727758853e-06,0) (4.452695345e-05,0) (2.58813648e-05,0) (0,0) (2.542260728e-09,0) (1.109931996e-05,0) (3.064539702e-06,0) (6.121327117e-07,0) (1.401947502e-09,0) (0,0) (1.253713298e-06,0) (2.653165066e-05,0) (2.635447273e-05,0) (-2.64697796e-23,0) (9.160979474e-11,0) (9.092686847e-07,0) (3.096286743e-06,0) (1.632018929e-07,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (-0.04650791085,0) (0.05339342277,0) (-0.006885511921,0) (0.06582968803,0) (0.005456254699,0) (-0.07128594273,0) (-0.03665265658,0) (0.0950451253,0) (-0.05839246872,0) (-0.01466480269,0) (0.05142104472,0) (-0.03675624203,0) (0.005432133241,0) (0.01745725437,0) (-0.02288938761,0) (-0.009939728979,0) (0.02293658634,0) (-0.01299685736,0) (0.0009346548029,0) (0.006928611436,0) (-0.007863266239,0) (-0.002292082329,0) (0.006540467226,0) (-0.004248384897,0) (0.0007511567492,0) (0.001716174845,0) (-0.002467331594,0) (-0.0007179158406,0) (0.001916075511,0) (-0.00119815967,0) (0.0004232273626,0) (0.0002078052141,0) (-0.0006310325767,0) (-7.912951479e-05,0) (0.0003179706291,0) (-0.0002388411143,0) (9.769891917e-05,0) (1.648674933e-05,0) (-0.0001141856685,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.0008172287347,0) (-0.00280811301,0) (-2.968547159e-06,0) (-0.0003536329813,0) (-3.496572923e-05,0) (-6.325669591e-05,0) (-6.601323888e-06,0) (-3.855489098e-06,0) (-5.64426606e-06,0) (-1.765983606e-06,0) (-2.054917267e-07,0) (-3.991282865e-08,0) (-5.172202734e-07,0) (0.02065391313,0) (-0.01874311768,0) (-2.839598951e-06,0) (0.001922210209,0) (-0.002074278464,0) (-0.00378330843,0) (0.0001500682067,0) (-0.0001650648726,0) (-0.0009079186671,0) (0.0002733644709,0) (-0.0002099969132,0) (-0.000231728652,0) (-1.467732161e-05,0) (1.720867302e-05,0) (-0.0003162091956,0) (-5.007846613e-06,0) (-1.116087826e-05,0) (-1.792231646e-06,0) (-1.513850326e-06,0) (-4.757169056e-06,0) (-3.730015351e-05,0) (1.142734126e-05,0) (-6.157851779e-06,0) (-5.327686836e-06,0) (-9.058902923e-07,0) (3.219670478e-06,0) (-1.974033463e-05,0) (-3.048988288e-07,0) (6.478429413e-07,0) (-3.602534663e-07,0) (-9.787608102e-07,0) (-1.968661101e-06,0) (2.586840302e-06,0) (-8.801255416e-07,0) (3.545150804e-06,0) (-3.546258443e-06,0) (-5.013482219e-07,0) (2.325538149e-06,0) (-2.752961059e-06,0) (-8.67361738e-19,0) (0.001081420423,0) (0.03683490234,0) (-0.03477674716,0) (-0.0005078099275,0) (-3.794707604e-19,0) (2.592330502e-05,0) (0.01315681817,0) (-0.01006015626,0) (-0.00380032527,0) (-8.809142651e-20,0) (5.636850501e-07,0) (2.319957752e-05,0) (-2.332385676e-05,0) (-0.001925267643,0) (1.355252716e-20,0) (7.146844379e-11,0) (0.0005565170578,0) (-0.0006475377206,0) (0.0001477002938,0) (-1.694065895e-21,0) (5.082980186e-07,0) (-3.210905036e-06,0) (1.660522345e-06,0) (-0.0003762065667,0) (1.694065895e-21,0) (1.287500472e-06,0) (-1.21303074e-05,0) (4.235369307e-05,0) (-4.425289125e-05,0) (4.65868121e-21,0) (2.385662691e-06,0) (-1.929410409e-05,0) (2.488333702e-06,0) (-1.793936166e-05,0) (2.117582368e-21,0) (9.350130233e-07,0) (-1.152532848e-05,0) (1.956543723e-05,0) (-2.651761138e-05,0) (-3.705769144e-22,0) (4.335966598e-08,0) (-3.011056923e-07,0) (1.016306761e-06,0) (-1.070586547e-05,0) (-2.64697796e-23,0) (2.401865277e-07,0) (-1.133223818e-06,0) (-4.430724484e-06,0) (4.166258622e-06,0) (5.29395592e-23,0) (-3.427165247e-10,0) (7.278680151e-07,0) (-3.068866642e-06,0) (2.654190084e-06,0) (-5.29395592e-23,0) (1.64497237e-07,0) (-1.697154657e-06,0) (6.207993408e-06,0) (-6.345131393e-06,0) (1.32348898e-22,0) (9.009374426e-08,0) (-1.008053064e-06,0) (2.068286092e-06,0) (-1.472957506e-06,0) -(0.006996970788,0) (0.02648866226,0) (0.0003000404036,0) (0.002950260254,0) (0.0006171004868,0) (0.0004135149158,0) (0.0001280079144,0) (1.038046461e-05,0) (7.090544467e-05,0) (4.394723674e-06,0) (3.264040205e-06,0) (2.168226279e-06,0) (4.463860426e-06,0) (-0.0197553569,0) (0.003169952543,0) (-0.001001057065,0) (0.0004308924624,0) (-0.002770174458,0) (0.0345564099,0) (-1.463376791e-05,0) (-0.000104145023,0) (0.01124524197,0) (8.482571159e-05,0) (-0.0002556526339,0) (0.0007911948594,0) (-5.099026091e-06,0) (4.407108103e-06,0) (0.003311940614,0) (-7.032866511e-06,0) (-6.547290259e-06,0) (2.17110916e-05,0) (-3.549379796e-06,0) (-6.299896001e-06,0) (0.000423327795,0) (-5.761058672e-06,0) (3.827017946e-05,0) (1.944685014e-05,0) (-3.72626502e-07,0) (3.938617866e-06,0) (0.0001271093011,0) (-3.486916283e-07,0) (8.356272429e-08,0) (4.1630784e-06,0) (-8.202975706e-07,0) (-1.144619623e-06,0) (2.265084665e-06,0) (-7.4172067e-07,0) (7.646110877e-06,0) (7.028005024e-06,0) (-4.193909109e-07,0) (3.865265904e-06,0) (1.465586965e-06,0) (4.33680869e-19,0) (6.036641356e-05,0) (-0.03492203779,0) (0.0248557125,0) (-0.01195439354,0) (2.168404345e-19,0) (3.980786074e-05,0) (0.003563583505,0) (-0.01195701747,0) (0.009444674026,0) (4.33680869e-19,0) (-6.897536925e-07,0) (3.64387135e-06,0) (-0.0001452631239,0) (0.01867201301,0) (4.065758147e-20,0) (-5.822791923e-09,0) (-0.0001187671813,0) (-0.0006389488347,0) (0.0008196149627,0) (0,0) (-2.79072853e-06,0) (-2.5788548e-06,0) (-2.32486879e-05,0) (0.002942712557,0) (6.776263578e-21,0) (-3.739146372e-07,0) (-7.534478148e-06,0) (1.681240677e-06,0) (0.0004156051342,0) (-3.388131789e-21,0) (-3.079720876e-07,0) (-2.842608235e-05,0) (-3.184660905e-05,0) (0.0002010405408,0) (-6.776263578e-21,0) (-1.028458898e-07,0) (-7.315992414e-06,0) (1.276502879e-05,0) (0.000267013377,0) (-5.020416579e-10,0) (0,0) (-2.62595584e-08,0) (1.224289849e-06,0) (3.061993997e-05,0) (-4.235164736e-22,0) (-2.317871362e-08,0) (-1.732223519e-06,0) (6.817124161e-06,0) (1.627774038e-05,0) (-5.29395592e-23,0) (-4.037988332e-08,0) (5.914031108e-06,0) (-3.068111963e-06,0) (-1.752991826e-06,0) (-2.137047511e-08,0) (4.235164736e-22,0) (-1.256735752e-06,0) (1.465535905e-05,0) (2.691960492e-06,0) (2.64697796e-23,0) (-4.779938991e-09,0) (-9.112894287e-07,0) (1.646291736e-06,0) (-4.897159534e-07,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0.0616499241,0) (-0.05612508663,0) (-0.005524837477,0) (-0.09849767551,0) (0.003987118413,0) (0.0945105571,0) (-0.03774692604,0) (-0.03968505748,0) (0.07743198352,0) (-0.01322794725,0) (-0.0355135707,0) (0.04874151795,0) (-0.03985523459,0) (0.009503484414,0) (0.03035175017,0) (-0.02158210048,0) (0.004347737172,0) (0.01723436331,0) (-0.01398296519,0) (0.00355609991,0) (0.01042686528,0) (-0.002231696874,0) (-0.003401939794,0) (0.005633636669,0) (-0.004236003097,0) (0.0009642830837,0) (0.003271720014,0) (-0.0007253584191,0) (-0.0008634759321,0) (0.001588834351,0) (-0.000973594934,0) (0.0001368578979,0) (0.0008367370361,0) (-6.904381328e-05,0) (-0.0002476788081,0) (0.0003167226213,0) (-0.0001631146387,0) (1.171560823e-05,0) (0.0001513990305,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.0006430541106,0) (-0.002209624475,0) (-2.335865557e-06,0) (-0.0002782637621,0) (-2.751354053e-05,0) (-4.977489973e-05,0) (-5.19439452e-06,0) (-3.03377501e-06,0) (-4.441312862e-06,0) (-1.389602407e-06,0) (-1.616956109e-07,0) (-3.140627274e-08,0) (-4.069859621e-07,0) (-0.02315446542,0) (0.02486709624,0) (-0.0002113144789,0) (-0.002883591821,0) (0.002752586386,0) (-0.002965630851,0) (-0.0002318971576,0) (0.0002190437346,0) (-0.0007133624739,0) (-0.0002270707624,0) (0.0002787001547,0) (-0.0001841079618,0) (1.946548646e-05,0) (-1.743881751e-05,0) (-0.0002488508671,0) (6.647567465e-06,0) (-1.942370938e-05,0) (-1.356825305e-06,0) (2.009289265e-06,0) (-7.120632471e-06,0) (-2.917357685e-05,0) (2.017518414e-06,0) (8.169870928e-06,0) (-1.023318319e-05,0) (1.202217678e-06,0) (7.088695561e-07,0) (-1.562354862e-05,0) (4.044755587e-07,0) (3.404607548e-08,0) (-4.521418737e-07,0) (1.300895681e-06,0) (-2.972631304e-06,0) (1.388004183e-06,0) (1.167951802e-06,0) (1.454595627e-06,0) (-3.315964822e-06,0) (6.652579445e-07,0) (1.014281671e-06,0) (-2.410363274e-06,0) (1.734723476e-18,0) (-0.001830745551,0) (-0.04184804203,0) (0.04614153827,0) (-0.0003918889316,0) (6.505213035e-19,0) (-1.505671622e-05,0) (-0.0107099765,0) (0.01335057348,0) (-0.003158834692,0) (-2.032879073e-20,0) (-6.739309617e-07,0) (-3.000331146e-05,0) (3.095587548e-05,0) (-0.001514871375,0) (0,0) (-1.267303587e-10,0) (-0.0008741803541,0) (0.0008591989311,0) (5.958119995e-05,0) (-1.694065895e-21,0) (-6.219833605e-07,0) (4.261561381e-06,0) (-4.506042692e-06,0) (-0.0002959797984,0) (-2.382280164e-21,0) (-2.325279806e-06,0) (1.61001834e-05,0) (1.56959449e-05,0) (-3.949717088e-05,0) (0,0) (-2.219766983e-06,0) (2.561091166e-05,0) (-3.502433912e-05,0) (-1.382955411e-05,0) (3.546950467e-21,0) (-1.682357216e-06,0) (1.529640096e-05,0) (-6.160454092e-06,0) (-2.125727712e-05,0) (0,0) (-7.037685441e-08,0) (3.9958929e-07,0) (2.960709067e-07,0) (-8.452535281e-06,0) (1.058791184e-22,0) (-1.588206347e-07,0) (1.504087388e-06,0) (-4.685734219e-06,0) (2.429661067e-06,0) (0,0) (-2.96845995e-10,0) (-7.277574765e-07,0) (4.071144148e-06,0) (-3.096918026e-06,0) (-3.30872245e-22,0) (-3.56383646e-07,0) (2.252412441e-06,0) (2.637815303e-06,0) (-5.847758739e-06,0) (5.29395592e-23,0) (-2.276567175e-07,0) (1.337660336e-06,0) (1.200711633e-06,0) (-2.564584225e-06,0) -(-0.01091369342,0) (-0.04131632783,0) (-0.0004679952334,0) (-0.004601739364,0) (-0.0009625373212,0) (-0.000644989832,0) (-0.0001996634222,0) (-1.619117925e-05,0) (-0.0001105964721,0) (-6.854775913e-06,0) (-5.091165187e-06,0) (-3.381943069e-06,0) (-6.962613624e-06,0) (0.02620752866,0) (0.002224269497,0) (-0.001000892129,0) (0.0003047929621,0) (0.003673383099,0) (-0.05422961591,0) (-1.170549913e-05,0) (0.0001381032981,0) (-0.01748116626,0) (5.58488008e-05,0) (0.0003390297478,0) (-0.001362512354,0) (6.763664198e-06,0) (2.347166408e-06,0) (-0.005173910596,0) (-1.001395262e-05,0) (8.679345149e-06,0) (-1.134781363e-05,0) (4.708510543e-06,0) (-1.51237669e-05,0) (-0.0006345178053,0) (7.640857198e-06,0) (-8.106428758e-06,0) (-8.057400327e-05,0) (4.942920937e-07,0) (-1.090440533e-06,0) (-0.0002032277807,0) (4.625928184e-07,0) (-3.831370518e-06,0) (-2.711142746e-06,0) (-2.393650938e-06,0) (1.517526643e-06,0) (4.079308649e-07,0) (9.838166031e-07,0) (-2.85806264e-06,0) (-1.98571424e-05,0) (5.56293275e-07,0) (-1.496586117e-06,0) (-6.720478032e-06,0) (-6.505213035e-19,0) (4.480721443e-05,0) (0.04632333236,0) (-0.001379381288,0) (-0.01073557061,0) (-4.33680869e-19,0) (2.884086942e-05,0) (0.002367327906,0) (0.01585694053,0) (-0.01995489753,0) (0,0) (-5.527808322e-07,0) (2.718459272e-06,0) (0.0001926337373,0) (-0.02909695075,0) (-2.710505431e-20,0) (-4.47964897e-09,0) (-9.694780846e-05,0) (0.0008472184569,0) (-0.0008468054569,0) (-5.421010862e-20,0) (-2.241467871e-06,0) (-2.480320484e-06,0) (3.082178995e-05,0) (-0.004571428628,0) (1.355252716e-20,0) (-3.003345517e-07,0) (9.997786745e-06,0) (1.10553403e-06,0) (-0.0006493401365,0) (1.694065895e-21,0) (-2.479739066e-07,0) (3.770913572e-05,0) (-0.0001390322279,0) (-0.0001175146047,0) (0,0) (-8.278796515e-08,0) (9.703906891e-06,0) (4.395115462e-06,0) (-0.0004388356181,0) (-3.966417036e-10,0) (0,0) (3.483258316e-08,0) (-1.062099363e-06,0) (-4.860039762e-05,0) (-4.235164736e-22,0) (-1.83956344e-08,0) (2.297772888e-06,0) (-2.83623588e-05,0) (-7.201757854e-06,0) (0,0) (-3.23672139e-08,0) (-3.897417542e-06,0) (4.070176231e-06,0) (-1.782127644e-06,0) (-1.71723915e-08,0) (0,0) (1.666924655e-06,0) (-8.914065602e-06,0) (-1.780002849e-05,0) (5.29395592e-23,0) (-3.673872713e-09,0) (1.208697071e-06,0) (-1.088177979e-06,0) (-4.919808827e-07,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (1.333601076e-05,0) (-0.003680518671,0) (0.01171062439,0) (0.004572524643,0) (-0.001931974151,0) (1.016225988e-05,0) (-0.003695330387,0) (0.003163975381,0) (-1.380679875e-06,0) (-0.002791090092,0) (0.002119938484,0) (-1.702859645e-06,0) (0.001336173644,0) (-0.001159269776,0) (4.948719016e-07,0) (5.602991138e-05,0) (-5.170347486e-05,0) (1.165106662e-08,0) (0.0004402708215,0) (-0.0003880446353,0) (1.452039402e-07,0) (-0.0002896023254,0) (0.0002398595806,0) (-1.282564785e-07,0) (0.0001483925852,0) (-0.0001273107664,0) (5.926285014e-08,0) (-7.692981325e-05,0) (6.523609042e-05,0) (-3.032478854e-08,0) (4.206025406e-05,0) (-3.160521265e-05,0) (3.109924057e-08,0) (-1.970181647e-05,0) (1.391253042e-05,0) (-1.452397306e-08,0) (7.57314583e-06,0) (-4.370287337e-06,0) (1.070626807e-08,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.004214043356,0) (0.006158998385,0) (0.0001312011809,0) (-0.0007825700286,0) (-0.000160366703,0) (0.0001179069761,0) (2.941101487e-05,0) (-1.215575976e-05,0) (-1.292825713e-05,0) (3.591247411e-06,0) (1.211948785e-06,0) (2.186819431e-07,0) (-9.353687809e-07,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.04520166927,0) (0.04251668573,0) (-0.0009345582901,0) (-0.0001451268835,0) (0.0002799358963,0) (0.0005029806326,0) (-0.0003063111856,0) (-7.350246924e-05,0) (0.0001538232273,0) (3.114230238e-05,0) (-2.423650254e-05,0) (1.916106456e-05,0) (2.552626129e-05,0) (1.454931824e-06,0) (-0.003157854218,0) (0.007512458075,0) (0.0005195851016,0) (-1.088795504e-06,0) (0.03421108654,0) (-7.146290097e-06,0) (-1.177097021e-08,0) (-0.001457959397,0) (-6.924319911e-07,0) (7.086881675e-10,0) (-1.038967993e-05,0) (9.381966906e-10,0) (-1.140640338e-05,0) (0.001087813846,0) (-1.904659493e-05,0) (-3.587190187e-09,0) (0.0001295991408,0) (1.20807976e-09,0) (5.088937078e-05,0) (-0.0006397323042,0) (9.728329649e-10,0) (-2.632356776e-05,0) (0.0001948452291,0) (1.377274291e-10,0) (-1.900743854e-05,0) (0.0002168844333,0) (1.768045232e-10,0) (1.738073434e-06,0) (-3.331910854e-05,0) (-2.35095165e-06,0) (-4.003305574e-11,0) (-1.444095283e-05,0) (1.856004633e-10,0) (-8.44366819e-06,0) (5.955031546e-05,0) (1.173764161e-10,0) (-3.04711323e-06,0) (3.220324779e-05,0) (-5.421010862e-19,0) (9.495322441e-05,0) (7.430118958e-08,0) (-0.00369666856,0) (0.02112509155,0) (6.505213035e-19,0) (6.333326623e-05,0) (0.001467685891,0) (-1.522189737e-06,0) (0.003983623004,0) (0,0) (-1.128629076e-06,0) (1.486140405e-06,0) (-1.732577337e-08,0) (0.0006790959101,0) (8.470329473e-22,0) (-9.281519799e-09,0) (-5.628658706e-06,0) (-6.662351652e-09,0) (-1.747322974e-05,0) (5.421010862e-20,0) (-4.549907229e-06,0) (-1.145926933e-05,0) (-2.539534721e-08,0) (0.0005202223217,0) (0,0) (-6.099495322e-07,0) (1.186146372e-08,0) (1.038789438e-05,0) (-0.0002534353773,0) (6.776263578e-21,0) (-5.02811008e-07,0) (4.132508469e-09,0) (0.000156366619,0) (-0.0002955184562,0) (0,0) (-1.679232679e-07,0) (1.383585823e-09,0) (-3.776354522e-05,0) (0.0001676407959,0) (-8.088281908e-10,0) (0,0) (1.092177589e-11,0) (-1.716212179e-05,0) (5.082791124e-05,0) (1.694065895e-21,0) (-3.774756953e-08,0) (5.146970487e-10,0) (2.38628948e-05,0) (-5.030265065e-05,0) (2.117582368e-22,0) (-6.59283491e-08,0) (1.303346218e-06,0) (6.607505923e-10,0) (8.223005948e-06,0) (-3.476269999e-08,0) (4.235164736e-22,0) (2.906841531e-10,0) (-2.422359532e-05,0) (4.450385645e-05,0) (0,0) (-7.6060703e-09,0) (1.822462067e-10,0) (6.185128518e-07,0) (3.673086727e-06,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0.0005994385344,0) (-0.1985188841,0) (-0.001140207266,0) (-0.07488263132,0) (2.167276441e-05,0) (-1.025275956e-05,0) (0.0008666908912,0) (0.008349515407,0) (1.159857724e-06,0) (0.0006185982764,0) (0.01711533238,0) (2.254507178e-06,0) (-0.002883854726,0) (-0.0002052737618,0) (-3.899156928e-07,0) (-0.000159158543,0) (-0.0001352381151,0) (-3.706119164e-08,0) (-0.001416265,0) (-0.0001403458379,0) (-1.967367615e-07,0) (7.853055611e-05,0) (0.001110759192,0) (1.500255288e-07,0) (-0.0003981834344,0) (-2.30250586e-05,0) (-5.321609918e-08,0) (2.402907374e-05,0) (0.0002617957008,0) (3.602240965e-08,0) (-0.0002640355922,0) (-2.758564769e-06,0) (-3.410406075e-08,0) (3.284076926e-06,0) (0.000132422448,0) (1.733460305e-08,0) (-7.323759983e-05,0) (-6.375922781e-08,0) (-9.551291528e-09,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.001846675378,0) (-0.001654839895,0) (1.111239836e-05,0) (6.00638806e-06,0) (-7.965650434e-06,0) (-2.351680004e-05,0) (8.315325756e-06,0) (5.354914909e-06,0) (-5.18806211e-06,0) (-2.359921549e-06,0) (7.269569138e-07,0) (-3.107727192e-07,0) (-1.038697242e-06,0) (-0.06490133507,0) (-3.946716758e-05,0) (-0.006148089778,0) (0.007225280791,0) (3.425681516e-06,0) (-0.001345300549,0) (0.0001579544268,0) (1.933599988e-08,0) (4.985113502e-05,0) (-4.842011333e-06,0) (-6.979482776e-10,0) (7.525934897e-07,0) (1.618918448e-07,0) (-6.272074233e-05,0) (-4.091314267e-05,0) (-1.323759753e-09,0) (4.293660645e-05,0) (-1.735049015e-06,0) (1.921228267e-10,0) (-2.913583491e-05,0) (2.152582244e-05,0) (-2.092592279e-07,0) (1.791320429e-09,0) (-5.094414221e-05,0) (1.359553096e-10,0) (-1.256793796e-05,0) (-1.07102183e-05,0) (3.055871646e-11,0) (-2.032540034e-06,0) (-5.724551057e-06,0) (5.494923794e-10,0) (-1.488701156e-06,0) (-9.543865412e-06,0) (1.452900029e-10,0) (-3.151034807e-06,0) (-9.523435361e-06,0) (7.154815394e-11,0) (-3.083106532e-06,0) (-6.388466763e-06,0) (-8.67361738e-19,0) (0.005458852868,0) (-0.1264871219,0) (-6.252989909e-05,0) (-0.0005301535656,0) (0,0) (-0.0002130075372,0) (0.01332630147,0) (1.825408291e-06,0) (-0.0004832594551,0) (1.694065895e-21,0) (-2.967339092e-06,0) (7.000924065e-05,0) (1.743942639e-08,0) (-2.943530294e-05,0) (0,0) (-1.216966884e-08,0) (7.671321961e-05,0) (7.595298963e-09,0) (-2.357373937e-06,0) (8.470329473e-22,0) (-4.8359186e-07,0) (-4.383976412e-10,0) (4.728265869e-05,0) (-2.460472004e-05,0) (1.694065895e-21,0) (-2.363189478e-06,0) (-2.370021663e-09,0) (8.113426703e-05,0) (4.633762748e-05,0) (-3.388131789e-21,0) (4.377140531e-06,0) (1.020286978e-08,0) (-0.0001297244959,0) (5.329791181e-06,0) (0,0) (2.608211516e-06,0) (5.109376555e-09,0) (-7.478601065e-05,0) (-8.104477101e-06,0) (-2.117582368e-22,0) (2.294365191e-08,0) (2.306630744e-11,0) (-8.580644554e-06,0) (-3.260951961e-06,0) (3.176373552e-22,0) (1.665974296e-07,0) (1.845548891e-10,0) (-6.225489374e-06,0) (-9.221360182e-06,0) (-1.058791184e-21,0) (8.144303457e-12,0) (9.464237249e-07,0) (8.301088797e-10,0) (-2.75231617e-05,0) (-8.470329473e-22,0) (3.061043593e-07,0) (3.46976802e-10,0) (-1.102623907e-05,0) (-8.675920207e-06,0) (0,0) (1.540103829e-07,0) (1.701788421e-10,0) (-1.243366357e-06,0) (-1.244429397e-05,0) -(-0.1031484994,0) (-0.1582389931,0) (-0.01103408529,0) (0.01890852676,0) (0.005635747778,0) (-0.002521811017,0) (-0.001083411895,0) (0.0001668520179,0) (0.0003833158109,0) (-4.739128419e-05,0) (-4.040597076e-05,0) (-1.348309736e-05,0) (2.298693686e-05,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.05227305888,0) (-0.01059774195,0) (0.0007747731012,0) (-0.0019584315,0) (0.0004996371268,0) (-2.324558865e-05,0) (-2.394669917e-05,0) (-7.276138765e-06,0) (8.264461737e-06,0) (1.838973561e-05,0) (-3.937587669e-06,0) (5.221874471e-07,0) (3.804800733e-06,0) (0.003294115467,0) (-5.03865326e-06,0) (8.521411615e-05,0) (8.201923211e-05,0) (2.067578889e-07,0) (-0.06268694534,0) (-4.461298473e-06,0) (-1.290932257e-08,0) (0.008994674824,0) (-1.566384246e-05,0) (4.177343488e-08,0) (-0.003310642092,0) (-1.39836719e-10,0) (4.550215342e-08,0) (0.0007412007475,0) (3.371897556e-11,0) (-2.135755559e-07,0) (-6.832987415e-06,0) (4.698765009e-11,0) (-6.359455323e-07,0) (-9.524322186e-05,0) (-1.168207208e-06,0) (4.963625375e-11,0) (-6.28702053e-07,0) (-3.114294568e-11,0) (4.478956051e-07,0) (5.538823034e-05,0) (2.230680666e-12,0) (1.774135912e-06,0) (2.782574797e-06,0) (4.907366656e-10,0) (-1.097731374e-06,0) (-3.17533837e-06,0) (-3.19703626e-11,0) (1.108827398e-06,0) (2.817216516e-06,0) (-3.361210006e-11,0) (1.86095787e-06,0) (7.359028335e-06,0) (-4.33680869e-19,0) (-0.0002852827998,0) (-0.0001093982521,0) (-4.438290702e-06,0) (0.0612087474,0) (-1.029992064e-18,0) (-5.672657459e-06,0) (-0.001412428299,0) (2.934551322e-06,0) (-0.05104289932,0) (5.844527336e-20,0) (2.315741605e-10,0) (2.280737082e-08,0) (1.99657454e-10,0) (-0.001386055972,0) (2.202285663e-20,0) (-2.218079148e-11,0) (-0.0001285817751,0) (-2.334044471e-07,0) (0.000791823636,0) (2.435219723e-21,0) (1.565366177e-10,0) (1.581342029e-11,0) (4.980086481e-09,0) (-0.0001439248567,0) (-5.029258124e-22,0) (1.452916396e-08,0) (4.223110462e-10,0) (-7.100395277e-06,0) (-2.760876911e-05,0) (-2.580803511e-22,0) (-1.566034151e-09,0) (1.050286112e-10,0) (1.196885357e-08,0) (-1.098689074e-05,0) (3.374896899e-22,0) (2.91435589e-09,0) (1.016381852e-10,0) (-1.778376473e-07,0) (-1.275177812e-05,0) (-2.64697796e-22,0) (-1.096373539e-09,0) (-2.116571378e-11,0) (3.816288677e-07,0) (7.029415091e-05,0) (1.852884572e-22,0) (-1.759502375e-08,0) (2.032173328e-10,0) (-7.041690834e-06,0) (-9.234442056e-06,0) (2.584939414e-25,0) (3.778730592e-10,0) (3.371220318e-09,0) (-7.123309402e-13,0) (-3.067020323e-09,0) (8.602678371e-23,0) (-4.169374205e-09,0) (-8.414027643e-11,0) (2.098761966e-06,0) (5.54532595e-06,0) (-9.926167351e-23,0) (-9.442255645e-09,0) (-1.131400601e-10,0) (5.032227385e-06,0) (1.055086583e-06,0) -(-0.01870392239,0) (-0.005666223889,0) (0.0009130148356,0) (-0.0008914920716,0) (0.0002236517882,0) (-2.053323155e-05,0) (-1.204518931e-05,0) (-6.483972824e-07,0) (5.785990742e-06,0) (3.633038737e-06,0) (-1.276610461e-06,0) (3.596617133e-07,0) (1.548277966e-06,0) (-2.360738584e-06,0) (0.03012600167,0) (-0.02661648463,0) (-0.0001013170272,0) (-3.750412402e-07,0) (-0.02410440258,0) (-6.473083976e-06,0) (7.86788762e-09,0) (0.002917313174,0) (-6.209909928e-05,0) (-5.982724624e-08,0) (-0.0008486929007,0) (8.153315783e-11,0) (1.767015122e-07,0) (0.0001524684146,0) (8.386966911e-07,0) (3.506062313e-10,0) (-2.412940959e-06,0) (-1.03489508e-10,0) (4.325370202e-07,0) (-2.813110036e-05,0) (-7.01336135e-11,0) (-1.272009523e-06,0) (-6.63678222e-07,0) (2.141801211e-11,0) (7.20810683e-07,0) (2.366970548e-05,0) (-1.012439589e-10,0) (-8.825188043e-08,0) (-4.302174199e-06,0) (2.262857906e-07,0) (1.343906619e-10,0) (-5.823968285e-07,0) (3.391481584e-11,0) (1.224153722e-06,0) (1.147096904e-06,0) (3.625524393e-11,0) (1.96618936e-06,0) (7.619721113e-07,0) (1.734723476e-18,0) (-0.0002399783128,0) (4.429670749e-06,0) (0.05862781591,0) (-0.03565811638,0) (-4.33680869e-19,0) (3.134980355e-06,0) (-0.003476641184,0) (-3.253025745e-06,0) (-0.01396980218,0) (-2.710505431e-20,0) (1.136629777e-07,0) (1.037074105e-06,0) (-5.146353529e-09,0) (-0.00182694799,0) (0,0) (-1.794104248e-08,0) (-0.0001795896175,0) (1.81405844e-07,0) (0.0008103216112,0) (3.388131789e-21,0) (2.246534061e-07,0) (1.460111013e-07,0) (-3.147057971e-10,0) (-0.0001426984983,0) (8.470329473e-22,0) (3.165906529e-08,0) (-1.530328056e-10,0) (-5.880359132e-08,0) (-2.120406882e-05,0) (1.058791184e-22,0) (-1.426401455e-08,0) (4.771886505e-10,0) (-9.224878544e-07,0) (5.639404919e-06,0) (0,0) (-1.923071812e-09,0) (3.061682836e-11,0) (1.365337013e-07,0) (3.050917587e-06,0) (-5.065341759e-10,0) (4.235164736e-22,0) (3.046264775e-12,0) (6.475738678e-07,0) (1.629354359e-05,0) (0,0) (9.109682087e-09,0) (-1.822953378e-10,0) (-1.485812014e-06,0) (-3.477463597e-06,0) (0,0) (6.655951109e-09,0) (-5.74589738e-07,0) (1.527580882e-10,0) (1.947745163e-07,0) (-7.857037501e-09,0) (1.058791184e-22,0) (9.043149751e-11,0) (3.224418723e-06,0) (6.035756443e-07,0) (-1.058791184e-22,0) (-1.558553604e-08,0) (1.607444256e-10,0) (1.658167214e-06,0) (-5.670284416e-07,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (-0.04650791085,0) (0.05339342277,0) (-0.006885511921,0) (0.06582968803,0) (0.005456254699,0) (-0.07128594273,0) (-0.03665265658,0) (0.0950451253,0) (-0.05839246872,0) (-0.01466480269,0) (0.05142104472,0) (-0.03675624203,0) (0.005432133241,0) (0.01745725437,0) (-0.02288938761,0) (-0.009939728979,0) (0.02293658634,0) (-0.01299685736,0) (0.0009346548029,0) (0.006928611436,0) (-0.007863266239,0) (-0.002292082329,0) (0.006540467226,0) (-0.004248384897,0) (0.0007511567492,0) (0.001716174845,0) (-0.002467331594,0) (-0.0007179158406,0) (0.001916075511,0) (-0.00119815967,0) (0.0004232273626,0) (0.0002078052141,0) (-0.0006310325767,0) (-7.912951479e-05,0) (0.0003179706291,0) (-0.0002388411143,0) (9.769891917e-05,0) (1.648674933e-05,0) (-0.0001141856685,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.0008172287347,0) (-0.00280811301,0) (-2.968547159e-06,0) (-0.0003536329813,0) (-3.496572923e-05,0) (-6.325669591e-05,0) (-6.601323888e-06,0) (-3.855489098e-06,0) (-5.64426606e-06,0) (-1.765983606e-06,0) (-2.054917267e-07,0) (-3.991282865e-08,0) (-5.172202734e-07,0) (0.02065391313,0) (-0.01874311768,0) (-2.839598951e-06,0) (0.001922210209,0) (-0.002074278464,0) (-0.00378330843,0) (0.0001500682067,0) (-0.0001650648726,0) (-0.0009079186671,0) (0.0002733644709,0) (-0.0002099969132,0) (-0.000231728652,0) (-1.467732161e-05,0) (1.720867302e-05,0) (-0.0003162091956,0) (-5.007846613e-06,0) (-1.116087826e-05,0) (-1.792231646e-06,0) (-1.513850326e-06,0) (-4.757169056e-06,0) (-3.730015351e-05,0) (1.142734126e-05,0) (-6.157851779e-06,0) (-5.327686836e-06,0) (-9.058902923e-07,0) (3.219670478e-06,0) (-1.974033463e-05,0) (-3.048988288e-07,0) (6.478429413e-07,0) (-3.602534663e-07,0) (-9.787608102e-07,0) (-1.968661101e-06,0) (2.586840302e-06,0) (-8.801255416e-07,0) (3.545150804e-06,0) (-3.546258443e-06,0) (-5.013482219e-07,0) (2.325538149e-06,0) (-2.752961059e-06,0) (-8.67361738e-19,0) (0.001081420423,0) (0.03683490234,0) (-0.03477674716,0) (-0.0005078099275,0) (-4.878909776e-19,0) (2.592330502e-05,0) (0.01315681817,0) (-0.01006015626,0) (-0.00380032527,0) (-3.388131789e-20,0) (5.636850501e-07,0) (2.319957752e-05,0) (-2.332385676e-05,0) (-0.001925267643,0) (1.355252716e-20,0) (7.146844379e-11,0) (0.0005565170578,0) (-0.0006475377206,0) (0.0001477002938,0) (-5.505714157e-21,0) (5.082980186e-07,0) (-3.210905036e-06,0) (1.660522345e-06,0) (-0.0003762065667,0) (8.470329473e-22,0) (1.287500472e-06,0) (-1.21303074e-05,0) (4.235369307e-05,0) (-4.425289125e-05,0) (2.117582368e-21,0) (2.385662691e-06,0) (-1.929410409e-05,0) (2.488333702e-06,0) (-1.793936166e-05,0) (1.270549421e-21,0) (9.350130233e-07,0) (-1.152532848e-05,0) (1.956543723e-05,0) (-2.651761138e-05,0) (-3.176373552e-22,0) (4.335966598e-08,0) (-3.011056923e-07,0) (1.016306761e-06,0) (-1.070586547e-05,0) (-5.29395592e-23,0) (2.401865277e-07,0) (-1.133223818e-06,0) (-4.430724484e-06,0) (4.166258622e-06,0) (5.29395592e-23,0) (-3.427165247e-10,0) (7.278680151e-07,0) (-3.068866642e-06,0) (2.654190084e-06,0) (5.29395592e-23,0) (1.64497237e-07,0) (-1.697154657e-06,0) (6.207993408e-06,0) (-6.345131393e-06,0) (1.588186776e-22,0) (9.009374426e-08,0) (-1.008053064e-06,0) (2.068286092e-06,0) (-1.472957506e-06,0) -(0.006996970788,0) (0.02648866226,0) (0.0003000404036,0) (0.002950260254,0) (0.0006171004868,0) (0.0004135149158,0) (0.0001280079144,0) (1.038046461e-05,0) (7.090544467e-05,0) (4.394723674e-06,0) (3.264040205e-06,0) (2.168226279e-06,0) (4.463860426e-06,0) (-0.0197553569,0) (0.003169952543,0) (-0.001001057065,0) (0.0004308924624,0) (-0.002770174458,0) (0.0345564099,0) (-1.463376791e-05,0) (-0.000104145023,0) (0.01124524197,0) (8.482571159e-05,0) (-0.0002556526339,0) (0.0007911948594,0) (-5.099026091e-06,0) (4.407108103e-06,0) (0.003311940614,0) (-7.032866511e-06,0) (-6.547290259e-06,0) (2.17110916e-05,0) (-3.549379796e-06,0) (-6.299896001e-06,0) (0.000423327795,0) (-5.761058672e-06,0) (3.827017946e-05,0) (1.944685014e-05,0) (-3.72626502e-07,0) (3.938617866e-06,0) (0.0001271093011,0) (-3.486916283e-07,0) (8.356272429e-08,0) (4.1630784e-06,0) (-8.202975706e-07,0) (-1.144619623e-06,0) (2.265084665e-06,0) (-7.4172067e-07,0) (7.646110877e-06,0) (7.028005024e-06,0) (-4.193909109e-07,0) (3.865265904e-06,0) (1.465586965e-06,0) (0,0) (6.036641356e-05,0) (-0.03492203779,0) (0.0248557125,0) (-0.01195439354,0) (-6.505213035e-19,0) (3.980786074e-05,0) (0.003563583505,0) (-0.01195701747,0) (0.009444674026,0) (4.33680869e-19,0) (-6.897536925e-07,0) (3.64387135e-06,0) (-0.0001452631239,0) (0.01867201301,0) (2.710505431e-20,0) (-5.822791923e-09,0) (-0.0001187671813,0) (-0.0006389488347,0) (0.0008196149627,0) (5.421010862e-20,0) (-2.79072853e-06,0) (-2.5788548e-06,0) (-2.32486879e-05,0) (0.002942712557,0) (0,0) (-3.739146372e-07,0) (-7.534478148e-06,0) (1.681240677e-06,0) (0.0004156051342,0) (-3.388131789e-21,0) (-3.079720876e-07,0) (-2.842608235e-05,0) (-3.184660905e-05,0) (0.0002010405408,0) (-6.776263578e-21,0) (-1.028458898e-07,0) (-7.315992414e-06,0) (1.276502879e-05,0) (0.000267013377,0) (-5.020416579e-10,0) (0,0) (-2.62595584e-08,0) (1.224289849e-06,0) (3.061993997e-05,0) (0,0) (-2.317871362e-08,0) (-1.732223519e-06,0) (6.817124161e-06,0) (1.627774038e-05,0) (1.058791184e-22,0) (-4.037988332e-08,0) (5.914031108e-06,0) (-3.068111963e-06,0) (-1.752991826e-06,0) (-2.137047511e-08,0) (0,0) (-1.256735752e-06,0) (1.465535905e-05,0) (2.691960492e-06,0) (3.97046694e-23,0) (-4.779938991e-09,0) (-9.112894287e-07,0) (1.646291736e-06,0) (-4.897159534e-07,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0.04715705099,0) (0.02200154358,0) (0.1067286698,0) (0.02202428562,0) (0.17465834,0) (0.07141108635,0) (0.1000731762,0) (0.06107260141,0) (0.05848951507,0) (0.07464156391,0) (0.02679567375,0) (0.03681690082,0) (0.0005054573398,0) (0.06266017622,0) (0.02292789445,0) (0.005280432053,0) (0.03058641266,0) (0.0130185903,0) (4.477807442e-05,0) (0.02165478127,0) (0.007876474827,0) (0.007860017766,0) (0.003864294445,0) (0.004255431357,0) (8.845381168e-05,0) (0.006720385865,0) (0.002471484938,0) (0.00210919833,0) (0.001197367089,0) (0.001200149458,0) (0.0001043161214,0) (0.001637026661,0) (0.0006321024569,0) (0.0005029865235,0) (0.0001561530053,0) (0.0002392339673,0) (3.034857158e-05,0) (0.0002847271479,0) (0.0001143827643,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.01859825451,0) (0.06390622139,0) (6.755733522e-05,0) (0.008047876816,0) (0.000795739924,0) (0.001439577538,0) (0.0001502310143,0) (8.77421026e-05,0) (0.0001284505699,0) (4.018974268e-05,0) (4.676521113e-06,0) (9.083245777e-07,0) (1.177074896e-05,0) (0.008307597159,0) (0.01873421824,0) (2.900333486e-08,0) (0.0006427535352,0) (0.002074227619,0) (0.09464435446,0) (4.913666987e-05,0) (0.0001652571093,0) (0.02141018871,0) (0.0001298657198,0) (0.0002102475176,0) (0.004281715785,0) (1.48520788e-05,0) (7.255278567e-06,0) (0.007171961804,0) (5.016290298e-06,0) (8.510401907e-06,0) (0.0004140783138,0) (1.516294083e-06,0) (4.817059328e-06,0) (0.0009909456417,0) (1.489550748e-05,0) (6.169100968e-06,0) (3.434653454e-06,0) (9.073734504e-07,0) (4.539544298e-06,0) (0.0003945514261,0) (3.054738133e-07,0) (6.950824905e-07,0) (5.407485655e-07,0) (9.805598736e-07,0) (1.955658851e-06,0) (8.959547428e-06,0) (8.815473737e-07,0) (7.766105257e-06,0) (1.471985915e-05,0) (5.021918199e-07,0) (5.508541434e-06,0) (1.701290994e-05,0) (6.505213035e-19,0) (0.0003326380646,0) (0.01469282168,0) (0.03477374258,0) (0.02107630735,0) (3.252606517e-19,0) (1.4617477e-05,0) (0.006316834902,0) (0.01007236596,0) (0.03687902424,0) (-2.059984128e-18,0) (2.1761899e-07,0) (8.535073252e-06,0) (2.333908512e-05,0) (0.04386035073,0) (3.388131789e-21,0) (2.12877168e-11,0) (0.0001802105721,0) (0.0006483001201,0) (0.0003180537728,0) (-1.423015351e-19,0) (1.934512603e-07,0) (3.215971441e-06,0) (3.60306497e-07,0) (0.008593632408,0) (9.95263713e-21,0) (3.785330716e-07,0) (1.214894467e-05,0) (8.316142622e-05,0) (0.0002399527039,0) (-2.943439492e-20,0) (1.065981606e-06,0) (1.932844051e-05,0) (1.262102486e-07,0) (0.0007885513656,0) (-1.905824131e-20,0) (2.756248094e-07,0) (1.154541289e-05,0) (1.377253857e-05,0) (0.0004170207456,0) (1.334076892e-20,0) (1.372912756e-08,0) (3.015892013e-07,0) (1.65338949e-06,0) (0.000225542516,0) (-7.27918939e-22,0) (1.277388161e-07,0) (1.135050709e-06,0) (1.097300767e-05,0) (1.837231386e-05,0) (0,0) (2.299303327e-09,0) (3.123692756e-07,0) (3.074695245e-06,0) (1.039677966e-06,0) (6.882142696e-22,0) (4.239383809e-08,0) (1.699838817e-06,0) (1.420235844e-05,0) (2.844450342e-05,0) (-2.779326858e-22,0) (2.066829092e-08,0) (1.009713072e-06,0) (8.983597702e-06,0) (1.122430129e-06,0) -(0.002275502001,0) (0.008614442707,0) (9.757687426e-05,0) (0.0009594613604,0) (0.0002006887602,0) (0.0001344801982,0) (4.162976727e-05,0) (3.375856311e-06,0) (2.305933326e-05,0) (1.429218846e-06,0) (1.061506507e-06,0) (7.051341767e-07,0) (1.451702978e-06,0) (0.0197919787,0) (0.04576663462,0) (0.003064285325,0) (0.006931890706,0) (0.002776848162,0) (0.01119185278,0) (0.0002405708549,0) (0.0001044086936,0) (0.003665373389,0) (0.0006670496628,0) (0.0002562656941,0) (0.0002404198937,0) (5.111300906e-06,0) (1.4983551e-05,0) (0.001075955865,0) (7.907287005e-06,0) (6.558427154e-06,0) (1.279841726e-05,0) (3.558166217e-06,0) (2.878390215e-06,0) (0.0001413922296,0) (5.77551433e-06,0) (2.981494912e-05,0) (2.987868567e-06,0) (3.734951082e-07,0) (2.875161334e-06,0) (4.065104123e-05,0) (3.494642989e-07,0) (1.349041095e-09,0) (2.229293379e-06,0) (2.854297262e-07,0) (1.146538659e-06,0) (2.970188831e-06,0) (7.434637826e-07,0) (5.101582132e-06,0) (1.477386609e-06,0) (4.203040616e-07,0) (2.548710907e-06,0) (2.065288763e-07,0) (0,0) (0.00381120272,0) (0.03499174491,0) (0.02310179904,0) (0.06236724561,0) (0,0) (0.001009633108,0) (0.0298739139,0) (0.0119849688,0) (0.002478434544,0) (0,0) (1.099057939e-05,0) (0.0003399323208,0) (0.000145642374,0) (0.00607617128,0) (-5.421010862e-20,0) (2.892328027e-07,0) (0.001438457613,0) (0.0006405979474,0) (0.0003449598824,0) (-1.355252716e-20,0) (4.286455912e-05,0) (9.37661877e-06,0) (2.331100428e-05,0) (0.0009596164022,0) (-3.388131789e-21,0) (5.739308119e-06,0) (7.551310522e-06,0) (1.320365452e-05,0) (0.0001350056191,0) (-1.694065895e-21,0) (4.544913819e-06,0) (2.850249043e-05,0) (6.63333715e-06,0) (0.0001130091179,0) (0,0) (1.524088828e-06,0) (7.334038823e-06,0) (2.344902083e-05,0) (8.380257917e-05,0) (1.053196334e-08,0) (2.117582368e-22,0) (2.631799423e-08,0) (5.681500867e-07,0) (9.841263226e-06,0) (0,0) (4.420829531e-07,0) (1.736699721e-06,0) (1.043708995e-06,0) (1.023766845e-05,0) (-4.235164736e-22,0) (6.41372051e-07,0) (3.151162781e-06,0) (3.071688387e-06,0) (5.020121102e-06,0) (3.257591355e-07,0) (-1.058791184e-22,0) (1.259765493e-06,0) (8.095219997e-06,0) (2.749685552e-07,0) (5.29395592e-23,0) (2.494036453e-07,0) (9.133146635e-07,0) (8.753312292e-07,0) (1.469478759e-06,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (-0.06251041084,0) (-0.02312716577,0) (0.08563757661,0) (-0.03295383896,0) (0.1276303109,0) (-0.0946764719,0) (0.1030608728,0) (-0.02550019993,0) (-0.07756067291,0) (0.0673281933,0) (-0.01850623727,0) (-0.04882195603,0) (-0.003708510075,0) (0.03411132104,0) (-0.03040281096,0) (0.01146538456,0) (0.005797797515,0) (-0.01726318207,0) (-0.0006699053532,0) (0.01111428551,0) (-0.01044438016,0) (0.007652943725,0) (-0.002009962988,0) (-0.005642980737,0) (-0.0004988181503,0) (0.003776045562,0) (-0.003277227412,0) (0.002131064227,0) (-0.0005395912934,0) (-0.001591472934,0) (-0.0002399694735,0) (0.00107812515,0) (-0.0008381556767,0) (0.0004388767921,0) (-0.000121633216,0) (-0.0003172435761,0) (-5.066889512e-05,0) (0.0002023292553,0) (-0.0001516603602,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.01463443893,0) (0.0502859929,0) (5.315895081e-05,0) (0.006332645988,0) (0.0006261451749,0) (0.001132762731,0) (0.0001182125239,0) (6.904177173e-05,0) (0.0001010741099,0) (3.162416853e-05,0) (3.679821814e-06,0) (7.147348455e-07,0) (9.262068479e-06,0) (-0.009313391119,0) (-0.02485528906,0) (2.158341618e-06,0) (-0.0009642227618,0) (-0.002752518914,0) (0.07418909208,0) (-7.592983434e-05,0) (-0.0002192988358,0) (0.01682223941,0) (-0.0001078732284,0) (-0.0002790327477,0) (0.003401814836,0) (-1.969725446e-05,0) (-7.352308847e-06,0) (0.005644203073,0) (-6.658775869e-06,0) (1.481098257e-05,0) (0.000313481762,0) (-2.012532792e-06,0) (7.210277511e-06,0) (0.0007750485214,0) (2.629829628e-06,0) (-8.184795682e-06,0) (6.597129124e-06,0) (-1.204185994e-06,0) (9.994640053e-07,0) (0.0003122689409,0) (-4.05238327e-07,0) (3.652865445e-08,0) (6.786751343e-07,0) (-1.303286861e-06,0) (2.952998217e-06,0) (4.80736646e-06,0) (-1.169838614e-06,0) (3.186477351e-06,0) (1.376395317e-05,0) (-6.663773466e-07,0) (2.4025461e-06,0) (1.489570409e-05,0) (0,0) (-0.0005631257223,0) (-0.01669247861,0) (-0.04613755182,0) (0.01626508487,0) (0,0) (-8.490090396e-06,0) (-0.005142060373,0) (-0.01336677666,0) (0.03065388695,0) (4.33680869e-19,0) (-2.601810625e-07,0) (-1.103815192e-05,0) (-3.097608686e-05,0) (0.03451093673,0) (1.016439537e-20,0) (-3.774812831e-11,0) (-0.0002830758546,0) (-0.0008602105367,0) (0.0001283005263,0) (-1.355252716e-19,0) (-2.367183435e-07,0) (-4.268285589e-06,0) (-9.777383985e-07,0) (0.006761023897,0) (5.717472394e-21,0) (-6.8364659e-07,0) (-1.612492008e-05,0) (3.081896923e-05,0) (0.0002141657343,0) (1.270549421e-21,0) (-9.918547086e-07,0) (-2.565648968e-05,0) (-1.776462113e-06,0) (0.0006078986526,0) (-1.651714247e-20,0) (-4.959282655e-07,0) (-1.532305696e-05,0) (-4.336478179e-06,0) (0.0003342957791,0) (-1.058791184e-22,0) (-2.228367745e-08,0) (-4.002309418e-07,0) (4.816661111e-07,0) (0.0001780711778,0) (2.911675756e-22,0) (-8.446585262e-08,0) (-1.506512155e-06,0) (1.160455761e-05,0) (1.071428823e-05,0) (-1.32348898e-23,0) (1.991555512e-09,0) (-3.123218372e-07,0) (-4.078876345e-06,0) (-1.21309979e-06,0) (-4.63221143e-22,0) (-9.18463487e-08,0) (-2.255974777e-06,0) (6.034671105e-06,0) (2.62148383e-05,0) (-9.264422861e-23,0) (-5.222643711e-08,0) (-1.339863123e-06,0) (5.215289271e-06,0) (1.954276747e-06,0) -(-0.003549268956,0) (-0.01343658413,0) (-0.0001521978757,0) (-0.001496542925,0) (-0.0003130291189,0) (-0.0002097587224,0) (-6.49330304e-05,0) (-5.265573046e-06,0) (-3.596734947e-05,0) (-2.229258458e-06,0) (-1.655710296e-06,0) (-1.099849986e-06,0) (-2.264328624e-06,0) (-0.02625611128,0) (0.03211320294,0) (0.003063780447,0) (0.004903291854,0) (-0.003682232749,0) (-0.01756345289,0) (0.0001924317751,0) (-0.0001384529431,0) (-0.005697965572,0) (0.0004391819773,0) (-0.000339842748,0) (-0.0004140257883,0) (-6.779946273e-06,0) (7.980037421e-06,0) (-0.001680857268,0) (1.12590218e-05,0) (-8.694108655e-06,0) (-6.689394366e-06,0) (-4.720166369e-06,0) (6.909971635e-06,0) (-0.0002119300653,0) (-7.660029649e-06,0) (-6.315433174e-06,0) (-1.237961572e-05,0) (-4.954443068e-07,0) (-7.960133638e-07,0) (-6.499462137e-05,0) (-4.636178842e-07,0) (-6.185385077e-08,0) (-1.451794079e-06,0) (8.328918145e-07,0) (-1.520070884e-06,0) (5.349167374e-07,0) (-9.861286637e-07,0) (-1.906935634e-06,0) (-4.174253742e-06,0) (-5.575045068e-07,0) (-9.86831296e-07,0) (-9.470422496e-07,0) (-8.67361738e-19,0) (0.002828880622,0) (-0.04641579736,0) (-0.001282046906,0) (0.05600852667,0) (-4.33680869e-19,0) (0.0007314810716,0) (0.01984557116,0) (-0.01589400852,0) (-0.005236486429,0) (-1.084202172e-19,0) (8.808045082e-06,0) (0.0002536017549,0) (-0.0001931366618,0) (-0.009468612536,0) (-2.710505431e-20,0) (2.225154949e-07,0) (0.001174190644,0) (-0.0008494051089,0) (-0.0003564038288,0) (0,0) (3.442811834e-05,0) (9.018351715e-06,0) (-3.090440545e-05,0) (-0.001490739516,0) (0,0) (4.609909213e-06,0) (-1.002012226e-05,0) (8.682331798e-06,0) (-0.0002109323487,0) (-2.541098842e-21,0) (3.659487597e-06,0) (-3.781049624e-05,0) (2.895905309e-05,0) (-6.605743182e-05,0) (-3.388131789e-21,0) (1.226847403e-06,0) (-9.727843585e-06,0) (8.073711052e-06,0) (-0.0001377292668,0) (8.320855081e-09,0) (4.235164736e-22,0) (-3.491009668e-08,0) (-4.928831568e-07,0) (-1.562019084e-05,0) (0,0) (3.508562431e-07,0) (-2.303710515e-06,0) (-4.342307445e-06,0) (-4.529449878e-06,0) (2.117582368e-22,0) (5.141031785e-07,0) (-2.076654126e-06,0) (-4.074920738e-06,0) (5.103558646e-06,0) (2.617659823e-07,0) (-2.117582368e-22,0) (-1.67094328e-06,0) (-4.923886331e-06,0) (-1.818172343e-06,0) (0,0) (1.916922473e-07,0) (-1.21138326e-06,0) (-5.785828522e-07,0) (1.476275077e-06,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (-1.352214984e-05,0) (-0.001516611742,0) (-0.1815201801,0) (0.001529805043,0) (-0.06184377689,0) (-1.018009989e-05,0) (0.0100894037,0) (0.002033057526,0) (1.382974519e-06,0) (0.01420621429,0) (0.001104706844,0) (1.705669872e-06,0) (0.0001243303037,0) (-0.00416102366,0) (-4.957044252e-07,0) (-2.976561439e-05,0) (-6.894765397e-05,0) (-1.167054917e-08,0) (2.109279228e-05,0) (-0.001212800252,0) (-1.454478514e-07,0) (0.0009931054366,0) (0.0001417158764,0) (1.284692074e-07,0) (1.74742353e-05,0) (-0.0004985374759,0) (-5.936260932e-08,0) (0.0002260156754,0) (4.076642451e-05,0) (3.037514902e-08,0) (1.036691613e-05,0) (-0.0002489763116,0) (-3.115196758e-08,0) (0.0001252345373,0) (6.832339961e-06,0) (1.454786252e-08,0) (2.35247391e-06,0) (-7.547512391e-05,0) (-1.072474815e-08,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.09590197642,0) (-0.1401646988,0) (-0.002985838421,0) (0.01780950172,0) (0.003649578912,0) (-0.002683292763,0) (-0.0006693273457,0) (0.0002766372549,0) (0.0002942175258,0) (-8.172856693e-05,0) (-2.758117892e-05,0) (-4.976700232e-06,0) (2.128685141e-05,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.01470014553,0) (0.01382695546,0) (-0.0003039299897,0) (-4.71970691e-05,0) (9.103863821e-05,0) (0.000163575563,0) (-9.961621062e-05,0) (-2.390391798e-05,0) (5.002522838e-05,0) (1.012786441e-05,0) (-7.88201233e-06,0) (6.23141672e-06,0) (8.301457933e-06,0) (-1.457628927e-06,0) (-0.04559196335,0) (-0.02299600676,0) (0.008358714646,0) (1.091418551e-06,0) (0.01108001222,0) (0.0001174809611,0) (1.180077153e-08,0) (-0.0004752201501,0) (-5.445124097e-06,0) (-7.103876161e-10,0) (-3.157105631e-06,0) (-9.404551985e-10,0) (-3.878017573e-05,0) (0.0003533999622,0) (2.141472362e-05,0) (3.593291973e-09,0) (7.639707444e-05,0) (-1.211070338e-09,0) (-2.325109286e-05,0) (-0.0002136717171,0) (-9.75273999e-10,0) (-2.050776465e-05,0) (2.993656717e-05,0) (-1.380484768e-10,0) (-1.387528677e-05,0) (6.936217859e-05,0) (-1.771963067e-10,0) (2.805955058e-08,0) (-1.784210166e-05,0) (8.180342229e-07,0) (4.010017397e-11,0) (-1.893631504e-05,0) (-1.860366417e-10,0) (-5.633722485e-06,0) (1.251832324e-05,0) (-1.176319828e-10,0) (-2.00923065e-06,0) (4.53804567e-06,0) (6.938893904e-18,0) (0.005994823377,0) (-7.444950055e-08,0) (-0.003435817589,0) (-0.1102116782,0) (-8.67361738e-19,0) (0.001606299893,0) (0.01230377284,0) (1.525748086e-06,0) (0.001045366821,0) (-1.355252716e-20,0) (1.798364778e-05,0) (0.0001386402286,0) (1.737100717e-08,0) (0.0002209886563,0) (-3.388131789e-21,0) (4.610365646e-07,0) (6.817192153e-05,0) (6.679547034e-09,0) (-7.354140116e-06,0) (0,0) (6.988489398e-05,0) (4.1665471e-05,0) (2.546341754e-08,0) (0.0001696441168,0) (1.016439537e-20,0) (9.362266021e-06,0) (-1.188796278e-08,0) (8.158151922e-05,0) (-8.232622071e-05,0) (8.470329473e-21,0) (7.420259143e-06,0) (-4.143616472e-09,0) (-3.256963719e-05,0) (-0.000166117142,0) (-1.694065895e-21,0) (2.488480358e-06,0) (-1.386998724e-09,0) (-6.937063544e-05,0) (5.261433427e-05,0) (1.696781277e-08,0) (4.235164736e-22,0) (-1.09460803e-11,0) (-7.964340301e-06,0) (1.633611477e-05,0) (6.352747104e-22,0) (7.199518179e-07,0) (-5.160270666e-10,0) (3.653434698e-06,0) (-3.163718351e-05,0) (-4.235164736e-22,0) (1.047169952e-06,0) (6.944596701e-07,0) (-6.615208134e-10,0) (-2.354858994e-05,0) (5.29902449e-07,0) (-4.235164736e-22,0) (-2.91384935e-10,0) (-1.338045233e-05,0) (4.545817498e-06,0) (-2.117582368e-22,0) (3.968631531e-07,0) (-1.826512278e-10,0) (3.288624992e-07,0) (-1.102174207e-05,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (-0.0006078052747,0) (-0.0818026201,0) (0.01767374832,0) (-0.0250530803,0) (0.0006937595959,0) (1.027075844e-05,0) (-0.002366336259,0) (0.005365100259,0) (-1.161785369e-06,0) (-0.003148568976,0) (0.008918855406,0) (-2.258227789e-06,0) (-0.000268341271,0) (-0.0007367991449,0) (3.905716485e-07,0) (8.455219191e-05,0) (-0.0001803428258,0) (3.712316421e-08,0) (-6.785138147e-05,0) (-0.0004386388888,0) (1.970672368e-07,0) (-0.0002692972928,0) (0.0006562681882,0) (-1.502743643e-07,0) (-4.688880524e-05,0) (-9.016405225e-05,0) (5.330567966e-08,0) (-7.059613306e-05,0) (0.000163597705,0) (-3.608223219e-08,0) (-6.507889457e-05,0) (-2.173113939e-05,0) (3.416188227e-08,0) (-2.087522514e-05,0) (6.50316769e-05,0) (-1.736311552e-08,0) (-2.275006274e-05,0) (-1.101125681e-06,0) (9.567778006e-09,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.04202610262,0) (0.03766036634,0) (-0.0002528927387,0) (-0.0001366916373,0) (0.0001812799621,0) (0.0005351885142,0) (-0.0001892377717,0) (-0.0001218656003,0) (0.0001180684127,0) (5.370641011e-05,0) (-1.654387459e-05,0) (7.072475403e-06,0) (2.363837055e-05,0) (-0.0261051813,0) (3.944842813e-05,0) (6.279587704e-05,0) (0.002416007754,0) (-3.425597545e-06,0) (0.03365443351,0) (5.171884636e-05,0) (-1.935851884e-08,0) (-0.001175570287,0) (-2.300267057e-06,0) (6.987811895e-10,0) (-1.390588258e-05,0) (-1.638194283e-07,0) (-2.644343681e-05,0) (0.0009279537109,0) (1.325991733e-09,0) (-3.274005584e-05,0) (0.0004008668033,0) (-1.924329641e-10,0) (2.950263984e-05,0) (-0.0005718721755,0) (-2.727688202e-07,0) (-1.794592821e-09,0) (3.284267252e-05,0) (-1.361779008e-10,0) (-1.772004666e-05,0) (0.0002140658698,0) (-3.061634471e-11,0) (-2.18074922e-06,0) (8.592680047e-06,0) (-5.505024031e-10,0) (1.478868857e-06,0) (-3.305527393e-05,0) (-1.455247171e-10,0) (-6.902743869e-06,0) (3.953000872e-05,0) (-7.166854507e-11,0) (-7.303006439e-06,0) (3.947982096e-05,0) (-4.33680869e-19,0) (0.001679108527,0) (-0.05045358095,0) (6.252449675e-05,0) (0.02200366493,0) (3.794707604e-19,0) (-0.0001201094063,0) (0.006398207008,0) (-1.827623733e-06,0) (0.004689634674,0) (-7.115076757e-20,0) (-1.145585351e-06,0) (2.575624477e-05,0) (-1.745081276e-08,0) (0.0006705783039,0) (-4.235164736e-22,0) (-3.62487904e-09,0) (2.484116704e-05,0) (-7.604241534e-09,0) (-5.076304556e-06,0) (-1.355252716e-20,0) (-1.840484349e-07,0) (4.390893776e-10,0) (1.025957234e-05,0) (0.0005620420754,0) (-8.470329473e-22,0) (-6.94792267e-07,0) (2.373663017e-09,0) (0.0001593070373,0) (-0.000251256781,0) (1.270549421e-21,0) (1.955830264e-06,0) (-1.022102714e-08,0) (-6.579728783e-06,0) (-0.0002342789111,0) (-5.929230631e-21,0) (7.688532502e-07,0) (-5.11828032e-09,0) (-5.264350621e-05,0) (0.0001274524706,0) (4.870439447e-21,0) (7.264731325e-09,0) (-2.310334681e-11,0) (-1.395951307e-05,0) (6.869909882e-05,0) (-1.799945013e-21,0) (8.860179887e-08,0) (-1.848524135e-10,0) (1.541787193e-05,0) (-4.066423592e-05,0) (1.058791184e-22,0) (-5.464056351e-11,0) (4.061638748e-07,0) (-8.316854796e-10,0) (-1.078115126e-05,0) (-8.470329473e-22,0) (7.888849008e-08,0) (-3.475255682e-10,0) (-2.522531665e-05,0) (3.889316497e-05,0) (-7.940933881e-22,0) (3.533132544e-08,0) (-1.704590834e-10,0) (-5.400560006e-06,0) (9.482860461e-06,0) -(-0.03354517603,0) (-0.05146129038,0) (-0.003588421894,0) (0.006149288282,0) (0.001832815333,0) (-0.0008201243352,0) (-0.0003523390349,0) (5.426235325e-05,0) (0.0001246590734,0) (-1.541223556e-05,0) (-1.314052468e-05,0) (-4.384871105e-06,0) (7.475638015e-06,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.0411321873,0) (-0.008339062533,0) (0.0006096469769,0) (-0.001541034196,0) (0.0003931502828,0) (-1.829129434e-05,0) (-1.884297833e-05,0) (-5.725387206e-06,0) (6.503070519e-06,0) (1.447036132e-05,0) (-3.098376047e-06,0) (4.108944902e-07,0) (2.993889774e-06,0) (-0.003692931319,0) (6.684943117e-06,0) (0.006341380197,0) (-0.0001230406465,0) (-2.74369599e-07,0) (-0.04913856285,0) (6.893948142e-06,0) (1.71308782e-08,0) (0.007067222778,0) (1.30112031e-05,0) (-5.544016143e-08,0) (-0.002630298682,0) (1.854554824e-10,0) (-4.611068783e-08,0) (0.0005833114635,0) (-4.475959074e-11,0) (-3.716938248e-07,0) (-5.172975408e-06,0) (-6.23653338e-11,0) (-9.518968852e-07,0) (-7.449260097e-05,0) (-2.062491615e-07,0) (-6.585442473e-11,0) (-1.207582855e-06,0) (4.133017006e-11,0) (9.861243906e-08,0) (4.383718543e-05,0) (-2.959197357e-12,0) (9.323612458e-08,0) (3.492314996e-06,0) (-6.522504806e-10,0) (-1.657548191e-06,0) (-1.703770788e-06,0) (4.242558686e-11,0) (4.549582158e-07,0) (2.634266796e-06,0) (4.460116865e-11,0) (8.116553402e-07,0) (6.443219229e-06,0) (-3.252606517e-18,0) (0.0004829576041,0) (0.0001242870854,0) (5.888692216e-06,0) (0.04723623807,0) (-1.029992064e-18,0) (3.294780257e-06,0) (0.001149751687,0) (-3.89436725e-06,0) (-0.04242691604,0) (-1.778769189e-20,0) (-2.768655948e-10,0) (-2.949608241e-08,0) (-2.64989249e-10,0) (-0.001090599805,0) (1.016439537e-20,0) (3.933175975e-11,0) (0.0002019770285,0) (3.09697559e-07,0) (0.0003194157652,0) (-2.541098842e-21,0) (-1.91547415e-10,0) (-2.098780887e-11,0) (-1.35141104e-08,0) (-0.0001132326063,0) (6.088049308e-22,0) (-2.624027897e-08,0) (-5.605204444e-10,0) (-2.631350537e-06,0) (-2.46417407e-05,0) (2.713152409e-22,0) (1.457134286e-09,0) (-1.394145316e-10,0) (-1.684666273e-07,0) (-8.469855444e-06,0) (2.117582368e-22,0) (-5.243764032e-09,0) (-1.348940671e-10,0) (5.599469354e-08,0) (-1.022219073e-05,0) (1.694065895e-21,0) (1.779518342e-09,0) (2.80884512e-11,0) (1.111762798e-07,0) (5.549890313e-05,0) (-2.514629062e-22,0) (1.163451117e-08,0) (-2.697230875e-10,0) (-7.446974375e-06,0) (-5.385302829e-06,0) (-7.754818243e-26,0) (3.272970404e-10,0) (-3.370708344e-09,0) (9.449748969e-13,0) (3.578609755e-09,0) (7.610061635e-23,0) (9.0329589e-09,0) (1.116684355e-10,0) (8.917771118e-07,0) (5.110647247e-06,0) (4.63221143e-23,0) (2.385951371e-08,0) (1.501339326e-10,0) (2.921382097e-06,0) (1.83702408e-06,0) -(0.02917389264,0) (0.008838028944,0) (-0.001424096841,0) (0.001390526193,0) (-0.0003488462539,0) (3.20272016e-05,0) (1.878777362e-05,0) (1.011353251e-06,0) (-9.024838172e-06,0) (-5.66671952e-06,0) (1.99122386e-06,0) (-5.609910046e-07,0) (-2.414963783e-06,0) (3.131764434e-06,0) (0.02113859613,0) (-0.02661209925,0) (-7.166687639e-05,0) (4.97322524e-07,0) (0.03782720766,0) (-5.177796953e-06,0) (-1.043334764e-08,0) (-0.004535076858,0) (-4.088571921e-05,0) (7.933896824e-08,0) (0.001461529417,0) (-1.081506332e-10,0) (9.410884509e-08,0) (-0.0002381860178,0) (1.194202806e-06,0) (-4.647773923e-10,0) (1.261180451e-06,0) (1.372863619e-10,0) (1.038364612e-06,0) (4.216515965e-05,0) (9.30177865e-11,0) (2.694383648e-07,0) (2.749813509e-06,0) (-2.841116772e-11,0) (-1.995626923e-07,0) (-3.784413631e-05,0) (1.343156087e-10,0) (4.046369427e-06,0) (2.801726811e-06,0) (6.603081789e-07,0) (-1.781739592e-10,0) (-1.048868705e-07,0) (-4.49845343e-11,0) (-4.575800789e-07,0) (-3.241043012e-06,0) (-4.809009413e-11,0) (-7.612857105e-07,0) (-3.494038197e-06,0) (0,0) (-0.0001781248725,0) (-5.875863018e-06,0) (-0.00325358254,0) (-0.03202255516,0) (-8.67361738e-19,0) (2.27129912e-06,0) (-0.002309571161,0) (4.314038673e-06,0) (0.02951567944,0) (0,0) (9.109152453e-08,0) (7.736946357e-07,0) (6.824590353e-09,0) (0.002846967579,0) (0,0) (-1.380258363e-08,0) (-0.00014659622,0) (-2.405362853e-07,0) (-0.000837203801,0) (0,0) (1.804379704e-07,0) (1.404322281e-07,0) (4.172190712e-10,0) (0.0002216784642,0) (0,0) (2.542909593e-08,0) (2.030650731e-10,0) (-3.866749846e-08,0) (3.31291695e-05,0) (-2.64697796e-23,0) (-1.148514282e-08,0) (-6.330232694e-10,0) (-4.027290359e-06,0) (-3.296411943e-06,0) (0,0) (-1.548017159e-09,0) (-4.061005464e-11,0) (4.700979461e-08,0) (-5.014173148e-06,0) (-4.001910504e-10,0) (-8.470329473e-22,0) (-4.040786576e-12,0) (-5.617850981e-07,0) (-2.586134062e-05,0) (5.29395592e-23,0) (7.229839581e-09,0) (2.418124915e-10,0) (6.181658491e-06,0) (1.538533616e-06,0) (-2.64697796e-23,0) (5.335196032e-09,0) (3.786615396e-07,0) (-2.026498209e-10,0) (1.980117903e-07,0) (-6.313576244e-09,0) (0,0) (-1.199476441e-10,0) (-1.961240248e-06,0) (-3.991018329e-06,0) (-2.117582368e-22,0) (-1.197908084e-08,0) (-2.132048396e-10,0) (-1.09602752e-06,0) (-5.6965094e-07,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0.0616499241,0) (-0.05612508663,0) (-0.005524837477,0) (-0.09849767551,0) (0.003987118413,0) (0.0945105571,0) (-0.03774692604,0) (-0.03968505748,0) (0.07743198352,0) (-0.01322794725,0) (-0.0355135707,0) (0.04874151795,0) (-0.03985523459,0) (0.009503484414,0) (0.03035175017,0) (-0.02158210048,0) (0.004347737172,0) (0.01723436331,0) (-0.01398296519,0) (0.00355609991,0) (0.01042686528,0) (-0.002231696874,0) (-0.003401939794,0) (0.005633636669,0) (-0.004236003097,0) (0.0009642830837,0) (0.003271720014,0) (-0.0007253584191,0) (-0.0008634759321,0) (0.001588834351,0) (-0.000973594934,0) (0.0001368578979,0) (0.0008367370361,0) (-6.904381328e-05,0) (-0.0002476788081,0) (0.0003167226213,0) (-0.0001631146387,0) (1.171560823e-05,0) (0.0001513990305,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.0006430541106,0) (-0.002209624475,0) (-2.335865557e-06,0) (-0.0002782637621,0) (-2.751354053e-05,0) (-4.977489973e-05,0) (-5.19439452e-06,0) (-3.03377501e-06,0) (-4.441312862e-06,0) (-1.389602407e-06,0) (-1.616956109e-07,0) (-3.140627274e-08,0) (-4.069859621e-07,0) (-0.02315446542,0) (0.02486709624,0) (-0.0002113144789,0) (-0.002883591821,0) (0.002752586386,0) (-0.002965630851,0) (-0.0002318971576,0) (0.0002190437346,0) (-0.0007133624739,0) (-0.0002270707624,0) (0.0002787001547,0) (-0.0001841079618,0) (1.946548646e-05,0) (-1.743881751e-05,0) (-0.0002488508671,0) (6.647567465e-06,0) (-1.942370938e-05,0) (-1.356825305e-06,0) (2.009289265e-06,0) (-7.120632471e-06,0) (-2.917357685e-05,0) (2.017518414e-06,0) (8.169870928e-06,0) (-1.023318319e-05,0) (1.202217678e-06,0) (7.088695561e-07,0) (-1.562354862e-05,0) (4.044755587e-07,0) (3.404607548e-08,0) (-4.521418737e-07,0) (1.300895681e-06,0) (-2.972631304e-06,0) (1.388004183e-06,0) (1.167951802e-06,0) (1.454595627e-06,0) (-3.315964822e-06,0) (6.652579445e-07,0) (1.014281671e-06,0) (-2.410363274e-06,0) (2.168404345e-18,0) (-0.001830745551,0) (-0.04184804203,0) (0.04614153827,0) (-0.0003918889316,0) (8.67361738e-19,0) (-1.505671622e-05,0) (-0.0107099765,0) (0.01335057348,0) (-0.003158834692,0) (-1.355252716e-20,0) (-6.739309617e-07,0) (-3.000331146e-05,0) (3.095587548e-05,0) (-0.001514871375,0) (1.355252716e-20,0) (-1.267303586e-10,0) (-0.0008741803541,0) (0.0008591989311,0) (5.958119995e-05,0) (-2.117582368e-21,0) (-6.219833605e-07,0) (4.261561381e-06,0) (-4.506042692e-06,0) (-0.0002959797984,0) (-2.117582368e-22,0) (-2.325279806e-06,0) (1.61001834e-05,0) (1.56959449e-05,0) (-3.949717088e-05,0) (-4.235164736e-21,0) (-2.219766983e-06,0) (2.561091166e-05,0) (-3.502433912e-05,0) (-1.382955411e-05,0) (5.29395592e-21,0) (-1.682357216e-06,0) (1.529640096e-05,0) (-6.160454092e-06,0) (-2.125727712e-05,0) (0,0) (-7.037685441e-08,0) (3.9958929e-07,0) (2.960709067e-07,0) (-8.452535281e-06,0) (1.058791184e-22,0) (-1.588206347e-07,0) (1.504087388e-06,0) (-4.685734219e-06,0) (2.429661067e-06,0) (0,0) (-2.96845995e-10,0) (-7.277574765e-07,0) (4.071144148e-06,0) (-3.096918026e-06,0) (-4.367513634e-22,0) (-3.56383646e-07,0) (2.252412441e-06,0) (2.637815303e-06,0) (-5.847758739e-06,0) (-1.32348898e-23,0) (-2.276567175e-07,0) (1.337660336e-06,0) (1.200711633e-06,0) (-2.564584225e-06,0) -(-0.01091369342,0) (-0.04131632783,0) (-0.0004679952334,0) (-0.004601739364,0) (-0.0009625373212,0) (-0.000644989832,0) (-0.0001996634222,0) (-1.619117925e-05,0) (-0.0001105964721,0) (-6.854775913e-06,0) (-5.091165187e-06,0) (-3.381943069e-06,0) (-6.962613624e-06,0) (0.02620752866,0) (0.002224269497,0) (-0.001000892129,0) (0.0003047929621,0) (0.003673383099,0) (-0.05422961591,0) (-1.170549913e-05,0) (0.0001381032981,0) (-0.01748116626,0) (5.58488008e-05,0) (0.0003390297478,0) (-0.001362512354,0) (6.763664198e-06,0) (2.347166408e-06,0) (-0.005173910596,0) (-1.001395262e-05,0) (8.679345149e-06,0) (-1.134781363e-05,0) (4.708510543e-06,0) (-1.51237669e-05,0) (-0.0006345178053,0) (7.640857198e-06,0) (-8.106428758e-06,0) (-8.057400327e-05,0) (4.942920937e-07,0) (-1.090440533e-06,0) (-0.0002032277807,0) (4.625928184e-07,0) (-3.831370518e-06,0) (-2.711142746e-06,0) (-2.393650938e-06,0) (1.517526643e-06,0) (4.079308649e-07,0) (9.838166031e-07,0) (-2.85806264e-06,0) (-1.98571424e-05,0) (5.56293275e-07,0) (-1.496586117e-06,0) (-6.720478032e-06,0) (-2.168404345e-19,0) (4.480721443e-05,0) (0.04632333236,0) (-0.001379381288,0) (-0.01073557061,0) (0,0) (2.884086942e-05,0) (0.002367327906,0) (0.01585694053,0) (-0.01995489753,0) (0,0) (-5.527808322e-07,0) (2.718459272e-06,0) (0.0001926337373,0) (-0.02909695075,0) (0,0) (-4.47964897e-09,0) (-9.694780846e-05,0) (0.0008472184569,0) (-0.0008468054569,0) (5.421010862e-20,0) (-2.241467871e-06,0) (-2.480320484e-06,0) (3.082178995e-05,0) (-0.004571428628,0) (1.355252716e-20,0) (-3.003345517e-07,0) (9.997786745e-06,0) (1.10553403e-06,0) (-0.0006493401365,0) (0,0) (-2.479739066e-07,0) (3.770913572e-05,0) (-0.0001390322279,0) (-0.0001175146047,0) (0,0) (-8.278796515e-08,0) (9.703906891e-06,0) (4.395115462e-06,0) (-0.0004388356181,0) (-3.966417036e-10,0) (0,0) (3.483258316e-08,0) (-1.062099363e-06,0) (-4.860039762e-05,0) (-8.470329473e-22,0) (-1.83956344e-08,0) (2.297772888e-06,0) (-2.83623588e-05,0) (-7.201757854e-06,0) (0,0) (-3.23672139e-08,0) (-3.897417542e-06,0) (4.070176231e-06,0) (-1.782127644e-06,0) (-1.71723915e-08,0) (0,0) (1.666924655e-06,0) (-8.914065602e-06,0) (-1.780002849e-05,0) (0,0) (-3.673872713e-09,0) (1.208697071e-06,0) (-1.088177979e-06,0) (-4.919808827e-07,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (-0.06251041084,0) (-0.02312716577,0) (0.08563757661,0) (-0.03295383896,0) (0.1276303109,0) (-0.0946764719,0) (0.1030608728,0) (-0.02550019993,0) (-0.07756067291,0) (0.0673281933,0) (-0.01850623727,0) (-0.04882195603,0) (-0.003708510075,0) (0.03411132104,0) (-0.03040281096,0) (0.01146538456,0) (0.005797797515,0) (-0.01726318207,0) (-0.0006699053532,0) (0.01111428551,0) (-0.01044438016,0) (0.007652943725,0) (-0.002009962988,0) (-0.005642980737,0) (-0.0004988181503,0) (0.003776045562,0) (-0.003277227412,0) (0.002131064227,0) (-0.0005395912934,0) (-0.001591472934,0) (-0.0002399694735,0) (0.00107812515,0) (-0.0008381556767,0) (0.0004388767921,0) (-0.000121633216,0) (-0.0003172435761,0) (-5.066889512e-05,0) (0.0002023292553,0) (-0.0001516603602,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.01463443893,0) (0.0502859929,0) (5.315895081e-05,0) (0.006332645988,0) (0.0006261451749,0) (0.001132762731,0) (0.0001182125239,0) (6.904177173e-05,0) (0.0001010741099,0) (3.162416853e-05,0) (3.679821814e-06,0) (7.147348455e-07,0) (9.262068479e-06,0) (-0.009313391119,0) (-0.02485528906,0) (2.158341618e-06,0) (-0.0009642227618,0) (-0.002752518914,0) (0.07418909208,0) (-7.592983434e-05,0) (-0.0002192988358,0) (0.01682223941,0) (-0.0001078732284,0) (-0.0002790327477,0) (0.003401814836,0) (-1.969725446e-05,0) (-7.352308847e-06,0) (0.005644203073,0) (-6.658775869e-06,0) (1.481098257e-05,0) (0.000313481762,0) (-2.012532792e-06,0) (7.210277511e-06,0) (0.0007750485214,0) (2.629829628e-06,0) (-8.184795682e-06,0) (6.597129124e-06,0) (-1.204185994e-06,0) (9.994640053e-07,0) (0.0003122689409,0) (-4.05238327e-07,0) (3.652865445e-08,0) (6.786751343e-07,0) (-1.303286861e-06,0) (2.952998217e-06,0) (4.80736646e-06,0) (-1.169838614e-06,0) (3.186477351e-06,0) (1.376395317e-05,0) (-6.663773466e-07,0) (2.4025461e-06,0) (1.489570409e-05,0) (0,0) (-0.0005631257223,0) (-0.01669247861,0) (-0.04613755182,0) (0.01626508487,0) (2.439454888e-19,0) (-8.490090396e-06,0) (-0.005142060373,0) (-0.01336677666,0) (0.03065388695,0) (4.607859233e-19,0) (-2.601810625e-07,0) (-1.103815192e-05,0) (-3.097608686e-05,0) (0.03451093673,0) (1.016439537e-20,0) (-3.774812831e-11,0) (-0.0002830758546,0) (-0.0008602105367,0) (0.0001283005263,0) (-1.355252716e-19,0) (-2.367183435e-07,0) (-4.268285589e-06,0) (-9.777383985e-07,0) (0.006761023897,0) (6.035109749e-21,0) (-6.8364659e-07,0) (-1.612492008e-05,0) (3.081896923e-05,0) (0.0002141657343,0) (1.482307658e-21,0) (-9.918547086e-07,0) (-2.565648968e-05,0) (-1.776462113e-06,0) (0.0006078986526,0) (-1.672890071e-20,0) (-4.959282655e-07,0) (-1.532305696e-05,0) (-4.336478179e-06,0) (0.0003342957791,0) (1.058791184e-22,0) (-2.228367745e-08,0) (-4.002309418e-07,0) (4.816661111e-07,0) (0.0001780711778,0) (2.382280164e-22,0) (-8.446585262e-08,0) (-1.506512155e-06,0) (1.160455761e-05,0) (1.071428823e-05,0) (-1.32348898e-23,0) (1.991555512e-09,0) (-3.123218372e-07,0) (-4.078876345e-06,0) (-1.21309979e-06,0) (-3.97046694e-22,0) (-9.18463487e-08,0) (-2.255974777e-06,0) (6.034671105e-06,0) (2.62148383e-05,0) (-6.6174449e-23,0) (-5.222643711e-08,0) (-1.339863123e-06,0) (5.215289271e-06,0) (1.954276747e-06,0) -(-0.003549268956,0) (-0.01343658413,0) (-0.0001521978757,0) (-0.001496542925,0) (-0.0003130291189,0) (-0.0002097587224,0) (-6.49330304e-05,0) (-5.265573046e-06,0) (-3.596734947e-05,0) (-2.229258458e-06,0) (-1.655710296e-06,0) (-1.099849986e-06,0) (-2.264328624e-06,0) (-0.02625611128,0) (0.03211320294,0) (0.003063780447,0) (0.004903291854,0) (-0.003682232749,0) (-0.01756345289,0) (0.0001924317751,0) (-0.0001384529431,0) (-0.005697965572,0) (0.0004391819773,0) (-0.000339842748,0) (-0.0004140257883,0) (-6.779946273e-06,0) (7.980037421e-06,0) (-0.001680857268,0) (1.12590218e-05,0) (-8.694108655e-06,0) (-6.689394366e-06,0) (-4.720166369e-06,0) (6.909971635e-06,0) (-0.0002119300653,0) (-7.660029649e-06,0) (-6.315433174e-06,0) (-1.237961572e-05,0) (-4.954443068e-07,0) (-7.960133638e-07,0) (-6.499462137e-05,0) (-4.636178842e-07,0) (-6.185385077e-08,0) (-1.451794079e-06,0) (8.328918145e-07,0) (-1.520070884e-06,0) (5.349167374e-07,0) (-9.861286637e-07,0) (-1.906935634e-06,0) (-4.174253742e-06,0) (-5.575045068e-07,0) (-9.86831296e-07,0) (-9.470422496e-07,0) (0,0) (0.002828880622,0) (-0.04641579736,0) (-0.001282046906,0) (0.05600852667,0) (-4.33680869e-19,0) (0.0007314810716,0) (0.01984557116,0) (-0.01589400852,0) (-0.005236486429,0) (0,0) (8.808045082e-06,0) (0.0002536017549,0) (-0.0001931366618,0) (-0.009468612536,0) (-5.421010862e-20,0) (2.225154949e-07,0) (0.001174190644,0) (-0.0008494051089,0) (-0.0003564038288,0) (0,0) (3.442811834e-05,0) (9.018351715e-06,0) (-3.090440545e-05,0) (-0.001490739516,0) (0,0) (4.609909213e-06,0) (-1.002012226e-05,0) (8.682331798e-06,0) (-0.0002109323487,0) (-5.082197684e-21,0) (3.659487597e-06,0) (-3.781049624e-05,0) (2.895905309e-05,0) (-6.605743182e-05,0) (-3.388131789e-21,0) (1.226847403e-06,0) (-9.727843585e-06,0) (8.073711052e-06,0) (-0.0001377292668,0) (8.320855081e-09,0) (0,0) (-3.491009668e-08,0) (-4.928831568e-07,0) (-1.562019084e-05,0) (-1.058791184e-22,0) (3.508562431e-07,0) (-2.303710515e-06,0) (-4.342307445e-06,0) (-4.529449878e-06,0) (2.117582368e-22,0) (5.141031785e-07,0) (-2.076654126e-06,0) (-4.074920738e-06,0) (5.103558646e-06,0) (2.617659823e-07,0) (0,0) (-1.67094328e-06,0) (-4.923886331e-06,0) (-1.818172343e-06,0) (0,0) (1.916922473e-07,0) (-1.21138326e-06,0) (-5.785828522e-07,0) (1.476275077e-06,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0.08286250691,0) (0.02431037598,0) (0.06871438145,0) (0.04930718395,0) (0.09326492082,0) (0.1255216072,0) (0.1061377676,0) (0.01064733091,0) (0.1028501942,0) (0.06073138578,0) (0.01278119823,0) (0.06474155448,0) (0.02720911517,0) (0.01856972471,0) (0.04031468813,0) (0.02489475137,0) (0.001098999625,0) (0.02289168401,0) (0.01002216348,0) (0.005704391145,0) (0.01384947954,0) (0.007451325099,0) (0.001045456362,0) (0.007482962107,0) (0.00281298841,0) (0.002121681757,0) (0.004345654447,0) (0.002153156807,0) (0.0002431658316,0) (0.002110392238,0) (0.000552027313,0) (0.0007100396512,0) (0.001111378275,0) (0.0003829383684,0) (9.474450534e-05,0) (0.0004206906223,0) (8.459498418e-05,0) (0.0001437766924,0) (0.0002010868071,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.01151542489,0) (0.03956862145,0) (4.182927054e-05,0) (0.004982979502,0) (0.0004926958775,0) (0.0008913388619,0) (9.301808191e-05,0) (5.432701179e-05,0) (7.953235012e-05,0) (2.488416119e-05,0) (2.895547407e-06,0) (5.624045764e-07,0) (7.288058967e-06,0) (0.01044095573,0) (0.03297631033,0) (0.0001606173415,0) (0.001446472844,0) (0.003652617632,0) (0.05815477759,0) (0.0001173327325,0) (0.0002910130741,0) (0.01321743319,0) (8.960512001e-05,0) (0.000370321967,0) (0.002702735249,0) (2.612306591e-05,0) (7.450636785e-06,0) (0.004441884828,0) (8.839061027e-06,0) (2.57761275e-05,0) (0.0002373242255,0) (2.671175919e-06,0) (1.079249771e-05,0) (0.0006061888617,0) (4.643013261e-07,0) (1.085909936e-05,0) (1.26714713e-05,0) (1.598089418e-06,0) (2.20050347e-07,0) (0.0002471462147,0) (5.375848748e-07,0) (1.919689554e-09,0) (8.5178208e-07,0) (1.732231442e-06,0) (4.45895687e-06,0) (2.579457553e-06,0) (1.552409348e-06,0) (1.30742986e-06,0) (1.287012362e-05,0) (8.842413405e-07,0) (1.047868629e-06,0) (1.304197819e-05,0) (-6.505213035e-19,0) (0.0009533201785,0) (0.01896428393,0) (0.06121497228,0) (0.0125521507,0) (-3.252606517e-19,0) (4.931195373e-06,0) (0.004185764753,0) (0.017738704,0) (0.02547954574,0) (-1.219727444e-18,0) (3.110674544e-07,0) (1.42753078e-05,0) (4.111206382e-05,0) (0.02715447401,0) (1.355252716e-20,0) (6.693630906e-11,0) (0.0004446572613,0) (0.001141388293,0) (5.175547801e-05,0) (-2.710505431e-20,0) (2.896624921e-07,0) (5.66493273e-06,0) (2.653219922e-06,0) (0.005319222649,0) (4.446922973e-21,0) (1.23469439e-06,0) (2.140210977e-05,0) (1.142126714e-05,0) (0.0001911500099,0) (4.235164736e-21,0) (9.22882494e-07,0) (3.405631521e-05,0) (2.500444833e-05,0) (0.000468632467,0) (-1.270549421e-20,0) (8.923175134e-07,0) (2.033674126e-05,0) (1.365401367e-06,0) (0.0002679810755,0) (-3.388131789e-21,0) (3.61685241e-08,0) (5.311357506e-07,0) (1.40319171e-07,0) (0.0001405914279,0) (7.676236084e-22,0) (5.585209319e-08,0) (1.999539627e-06,0) (1.227245632e-05,0) (6.248313256e-06,0) (2.64697796e-23,0) (1.724997877e-09,0) (3.122744061e-07,0) (5.411018301e-06,0) (1.415448965e-06,0) (8.999725065e-22,0) (1.989853278e-07,0) (2.994061638e-06,0) (2.564169571e-06,0) (2.415994883e-05,0) (-5.29395592e-23,0) (1.319703087e-07,0) (1.777963699e-06,0) (3.027655855e-06,0) (3.402615008e-06,0) -(0.00553605759,0) (0.02095803515,0) (0.0002373942959,0) (0.002334268809,0) (0.0004882546943,0) (0.0003271762106,0) (0.0001012808553,0) (8.213104159e-06,0) (5.610093811e-05,0) (3.477139478e-06,0) (2.582533942e-06,0) (1.715517459e-06,0) (3.531841012e-06,0) (0.03483145319,0) (0.02253296123,0) (0.003063275652,0) (0.003468356907,0) (0.004882815777,0) (0.02756244955,0) (0.0001539254955,0) (0.0001835979054,0) (0.008857709221,0) (0.0002891550959,0) (0.0004506771526,0) (0.0007129915528,0) (8.993340896e-06,0) (4.250060433e-06,0) (0.002625833686,0) (1.60314874e-05,0) (1.152525194e-05,0) (3.496369595e-06,0) (6.261644115e-06,0) (1.658833738e-05,0) (0.0003176578563,0) (1.01594509e-05,0) (1.337741548e-06,0) (5.129237847e-05,0) (6.572109132e-07,0) (2.20383207e-07,0) (0.0001039161773,0) (6.150600883e-07,0) (2.836013573e-06,0) (9.454592508e-07,0) (2.430401289e-06,0) (2.015296627e-06,0) (9.633593424e-08,0) (1.307998808e-06,0) (7.127991709e-07,0) (1.179406541e-05,0) (7.39491486e-07,0) (3.820896297e-07,0) (4.342680978e-06,0) (0,0) (0.002099748074,0) (0.06156955733,0) (7.114789054e-05,0) (0.05029811769,0) (0,0) (0.0005299594019,0) (0.01318363225,0) (0.02107802791,0) (0.01106375401,0) (2.168404345e-19,0) (7.058923414e-06,0) (0.0001891960434,0) (0.0002561189377,0) (0.01475511786,0) (0,0) (1.711878633e-07,0) (0.0009584736151,0) (0.001126274353,0) (0.0003682274248,0) (-2.710505431e-20,0) (2.7652106e-05,0) (8.673773527e-06,0) (4.097130545e-05,0) (0.002315825677,0) (0,0) (3.702756937e-06,0) (1.329608283e-05,0) (5.70924401e-06,0) (0.0003295600291,0) (2.541098842e-21,0) (2.946557407e-06,0) (5.015820037e-05,0) (0.0001264260713,0) (3.861267461e-05,0) (-6.776263578e-21,0) (9.875766575e-07,0) (1.29029779e-05,0) (2.779852115e-06,0) (0.0002263576027,0) (6.573952743e-09,0) (-4.235164736e-22,0) (4.630728464e-08,0) (4.275873786e-07,0) (2.47925857e-05,0) (3.705769144e-22,0) (2.784547616e-07,0) (3.05584326e-06,0) (1.806598778e-05,0) (2.003963724e-06,0) (4.235164736e-22,0) (4.120885495e-07,0) (1.368540015e-06,0) (5.405814955e-06,0) (5.188382974e-06,0) (2.103438461e-07,0) (-8.470329473e-22,0) (2.21632634e-06,0) (2.994934864e-06,0) (1.202228621e-05,0) (-1.058791184e-22,0) (1.473351266e-07,0) (1.60672927e-06,0) (3.824359347e-07,0) (1.483102828e-06,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (1.792468198e-05,0) (0.0015942032,0) (-0.1456492277,0) (-0.002288970907,0) (-0.04519188989,0) (1.349672706e-05,0) (0.01039062405,0) (-0.0008488810399,0) (-1.833908765e-06,0) (0.01281429128,0) (-0.0007629577502,0) (-2.261845447e-06,0) (-0.0009122039538,0) (-0.002265202916,0) (6.573132114e-07,0) (-6.462997956e-05,0) (-1.306935015e-05,0) (1.547562452e-08,0) (-0.0003155601183,0) (-0.000622467995,0) (1.928670741e-07,0) (0.0009669418372,0) (-7.371168797e-05,0) (-1.703585845e-07,0) (-9.854256778e-05,0) (-0.0002801178774,0) (7.871574193e-08,0) (0.0002283587626,0) (-1.837131481e-05,0) (-4.027933956e-08,0) (-2.384812022e-05,0) (-0.0001639726644,0) (4.130690869e-08,0) (0.000109272375,0) (-5.321956378e-06,0) (-1.92916415e-08,0) (-3.927606724e-06,0) (-5.36331914e-05,0) (1.42199673e-08,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.07546254497,0) (-0.1102916257,0) (-0.00234947156,0) (0.01401379174,0) (0.002871750125,0) (-0.002111406963,0) (-0.0005266747028,0) (0.0002176780091,0) (0.0002315114256,0) (-6.430989108e-05,0) (-2.170284735e-05,0) (-3.916024248e-06,0) (1.675001957e-05,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.02292890543,0) (-0.02156692623,0) (0.0004740621088,0) (7.361676329e-05,0) (-0.0001419997048,0) (-0.0002551409173,0) (0.0001553787796,0) (3.72847108e-05,0) (-7.802805272e-05,0) (-1.579718001e-05,0) (1.229415824e-05,0) (-9.719602051e-06,0) (-1.29483986e-05,0) (1.933695861e-06,0) (-0.03199064087,0) (-0.02299221789,0) (0.005912559672,0) (-1.447272914e-06,0) (-0.01738794072,0) (9.397260481e-05,0) (-1.564861596e-08,0) (0.0007387482168,0) (-3.585040966e-06,0) (9.420694424e-10,0) (5.436834395e-06,0) (1.247478056e-09,0) (-2.065379919e-05,0) (-0.0005520810976,0) (3.049198037e-05,0) (-4.763408986e-09,0) (-3.993073118e-05,0) (1.606572917e-09,0) (-5.581744661e-05,0) (0.0003202683844,0) (1.293499994e-09,0) (4.343975792e-06,0) (-0.0001240359772,0) (1.831224303e-10,0) (3.841493541e-06,0) (-0.0001108992143,0) (2.350780239e-10,0) (-1.286536979e-06,0) (1.161940272e-05,0) (2.387046427e-06,0) (-5.316445846e-11,0) (-3.410339354e-06,0) (2.467585767e-10,0) (2.105845968e-06,0) (-3.536965701e-05,0) (1.560307562e-10,0) (7.77950799e-07,0) (-2.080929823e-05,0) (5.204170428e-18,0) (0.004449681879,0) (9.875566194e-08,0) (0.0001906725663,0) (-0.09897492918,0) (-2.168404345e-19,0) (0.001163767271,0) (0.008173532278,0) (-2.023388919e-06,0) (-0.002208672077,0) (0,0) (1.441241402e-05,0) (0.000103430604,0) (-2.303572953e-08,0) (-0.0003443707994,0) (-1.694065895e-21,0) (3.546892966e-07,0) (5.564768243e-05,0) (-8.856789814e-09,0) (7.598111631e-06,0) (0,0) (5.613041285e-05,0) (4.007349356e-05,0) (-3.375795271e-08,0) (-0.0002635377927,0) (-6.776263578e-21,0) (7.519930189e-06,0) (1.577459173e-08,0) (5.364558862e-05,0) (0.0001286262247,0) (5.082197684e-21,0) (5.974666933e-06,0) (5.496789673e-09,0) (-0.0001421887402,0) (9.710076482e-05,0) (0,0) (2.003154677e-06,0) (1.839710283e-09,0) (-2.388494044e-05,0) (-8.647148753e-05,0) (1.340554525e-08,0) (-8.470329473e-22,0) (1.451967495e-11,0) (6.909246837e-06,0) (-2.592891019e-05,0) (0,0) (5.713850495e-07,0) (6.845034665e-10,0) (-1.519996164e-05,0) (1.399723361e-05,0) (-1.270549421e-21,0) (8.393777059e-07,0) (-4.576572648e-07,0) (8.775775864e-10,0) (-2.393998219e-05,0) (4.258067386e-07,0) (4.235164736e-22,0) (3.864907411e-10,0) (8.138608507e-06,0) (-3.005827211e-05,0) (-8.470329473e-22,0) (3.050299829e-07,0) (2.42261127e-10,0) (-2.173739453e-07,0) (-1.107271747e-05,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0.0008056940932,0) (0.08598772848,0) (0.01418116593,0) (0.03748567322,0) (0.0005069597758,0) (-1.361692173e-05,0) (-0.002436983511,0) (-0.002240139213,0) (1.540598429e-06,0) (-0.002840072602,0) (-0.006159742645,0) (2.994578451e-06,0) (0.001968803752,0) (-0.0004011031198,0) (-5.179052102e-07,0) (0.0001835878932,0) (-3.418482576e-05,0) (-4.922683088e-08,0) (0.001015095094,0) (-0.0002251307824,0) (-2.613155229e-07,0) (-0.0002622025914,0) (-0.0003413494461,0) (1.992736509e-07,0) (0.0002644203416,0) (-5.066131264e-05,0) (-7.068415912e-08,0) (-7.132799777e-05,0) (-7.372500718e-05,0) (4.784728731e-08,0) (0.0001497079056,0) (-1.431185483e-05,0) (-4.529799756e-08,0) (-1.821450758e-05,0) (-5.065552207e-05,0) (2.302489451e-08,0) (3.798269516e-05,0) (-7.824682005e-07,0) (-1.268593802e-08,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.03306914808,0) (0.02963387403,0) (-0.0001989941228,0) (-0.0001075587721,0) (0.0001426440602,0) (0.0004211246611,0) (-0.0001489058348,0) (-9.589258415e-05,0) (9.290468493e-05,0) (4.226005073e-05,0) (-1.301790565e-05,0) (5.565130283e-06,0) (1.860036328e-05,0) (0.02926571414,0) (-5.233749665e-05,0) (0.004673081751,0) (-0.00362435917,0) (4.545799097e-06,0) (0.02638077972,0) (-7.992001587e-05,0) (2.568906514e-08,0) (-0.0009236595288,0) (1.910721583e-06,0) (-9.273966112e-10,0) (-1.104819657e-05,0) (2.172620418e-07,0) (2.679708471e-05,0) (0.000730282638,0) (-1.760161639e-09,0) (-5.697878921e-05,0) (0.0003034798675,0) (2.554106455e-10,0) (4.416018281e-05,0) (-0.0004472785039,0) (-4.815784398e-08,0) (2.380958854e-09,0) (6.308274014e-05,0) (1.807232962e-10,0) (-3.901393542e-06,0) (0.0001694230918,0) (4.06153188e-11,0) (-1.146048646e-07,0) (1.07843805e-05,0) (7.316866297e-10,0) (2.233056699e-06,0) (-1.773625471e-05,0) (1.931154678e-10,0) (-2.832235242e-06,0) (3.696293445e-05,0) (9.509970693e-11,0) (-3.185200628e-06,0) (3.456667511e-05,0) (-2.168404345e-18,0) (-0.00284257667,0) (0.05732018934,0) (-8.295705307e-05,0) (0.01698074865,0) (-2.710505431e-19,0) (6.976167755e-05,0) (-0.005208299287,0) (2.425392242e-06,0) (0.003898029682,0) (-8.131516294e-20,0) (1.369639726e-06,0) (-3.330977184e-05,0) (2.316105747e-08,0) (0.0005276356672,0) (2.117582368e-22,0) (6.427763033e-09,0) (-3.902065515e-05,0) (1.008984649e-08,0) (-2.047743501e-06,0) (-1.694065895e-20,0) (2.252124931e-07,0) (-5.827660155e-10,0) (-2.784067985e-05,0) (0.0004421855303,0) (-3.388131789e-21,0) (1.25482395e-06,0) (-3.150489814e-09,0) (5.903793265e-05,0) (-0.0002242549974,0) (-3.388131789e-21,0) (-1.819824513e-06,0) (1.356734793e-08,0) (9.261243859e-05,0) (-0.0001806069212,0) (-7.835054762e-21,0) (-1.383388018e-06,0) (6.792974981e-09,0) (1.657555103e-05,0) (0.0001021695525,0) (2.329340605e-21,0) (-1.179134865e-08,0) (3.065983203e-11,0) (-4.066691132e-06,0) (5.42395716e-05,0) (-9.529120657e-22,0) (-5.858694103e-08,0) (2.453479878e-10,0) (1.630524542e-05,0) (-2.371439697e-05,0) (1.588186776e-22,0) (-4.732725524e-11,0) (-4.061021922e-07,0) (1.103310071e-09,0) (1.257948399e-05,0) (6.352747104e-22,0) (-1.70912097e-07,0) (4.612254458e-10,0) (-1.071839513e-05,0) (3.584446582e-05,0) (-4.235164736e-22,0) (-8.927826945e-08,0) (2.261947935e-10,0) (-3.135211927e-06,0) (1.651072366e-05,0) -(0.05232289484,0) (0.08026798496,0) (0.005597127326,0) (-0.009591500245,0) (-0.002858777782,0) (0.00127920865,0) (0.000549569281,0) (-8.463701011e-05,0) (-0.0001944399869,0) (2.403960497e-05,0) (2.049624931e-05,0) (6.839408132e-06,0) (-1.166030613e-05,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.2731656004,0) (0.01615280688,0) (-0.02892567571,0) (-0.00681892694,0) (0.00311081643,0) (-0.0001242414384,0) (9.142358452e-06,0) (0.0001499983368,0) (-0.0001504484689,0) (9.162783375e-05,0) (-7.145343949e-05,0) (6.119624794e-05,0) (-3.277313972e-05,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.2695462447,0) (0.02324389201,0) (-0.03424272561,0) (-0.004333899483,0) (0.002291534039,0) (4.332848919e-05,0) (0.0001066902242,0) (-2.294053818e-05,0) (1.892984583e-05,0) (-3.739677434e-05,0) (2.322309841e-05,0) (-2.861059199e-06,0) (6.880804962e-06,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.1208306479,0) (-0.009094799051,0) (-0.002843835608,0) (4.385357727e-05,0) (0.000101455379,0) (-2.497568383e-05,0) (2.882303202e-05,0) (4.591201175e-06,0) (1.25522063e-05,0) (2.574477926e-05,0) (9.479225358e-06,0) (3.178405029e-06,0) (8.85371498e-06,0) (1.738623898e-10,0) (-0.03001102387,0) (0.1997440824,0) (-0.0001221715915,0) (-1.474070406e-10,0) (-0.02386352647,0) (-3.161081699e-06,0) (8.892664166e-13,0) (-0.0003782332269,0) (5.069147332e-07,0) (1.658455888e-13,0) (1.114472307e-05,0) (-1.500172006e-14,0) (-4.573358943e-07,0) (5.007857078e-05,0) (2.271380542e-06,0) (1.920933975e-13,0) (-1.440347086e-05,0) (3.522406586e-14,0) (-3.493952407e-06,0) (4.251167502e-05,0) (1.184301307e-14,0) (8.749326325e-07,0) (-6.649639108e-06,0) (-7.916366537e-15,0) (-3.478571729e-06,0) (4.038721491e-05,0) (5.133587681e-14,0) (-1.83560613e-06,0) (3.443235877e-05,0) (6.48529231e-07,0) (4.700311397e-15,0) (3.713046695e-06,0) (-8.486490438e-15,0) (-1.351843834e-06,0) (9.719683219e-06,0) (-1.014688338e-14,0) (-1.550010209e-06,0) (1.674276403e-05,0) (-1.734723476e-18,0) (-0.000377473387,0) (-9.424695399e-12,0) (-0.008719428334,0) (0.06301289739,0) (-4.33680869e-19,0) (4.987671827e-06,0) (-0.00143187811,0) (-4.141268852e-10,0) (-0.005892254741,0) (1.694065895e-21,0) (1.859842766e-07,0) (4.229671091e-07,0) (-6.138141033e-13,0) (-6.644558929e-05,0) (8.470329473e-22,0) (-2.859798928e-08,0) (-8.511178364e-06,0) (1.891527865e-12,0) (-1.727510638e-05,0) (-8.470329473e-22,0) (3.662671398e-07,0) (6.488075772e-07,0) (-3.437640454e-13,0) (-2.522670586e-05,0) (0,0) (5.164395866e-08,0) (2.409182211e-13,0) (-3.633301909e-07,0) (1.293020884e-05,0) (1.058791184e-22,0) (-2.328816091e-08,0) (-6.937242073e-14,0) (4.52940866e-06,0) (-8.289612776e-06,0) (0,0) (-3.139926191e-09,0) (-5.790193243e-15,0) (-4.039157833e-07,0) (1.915478012e-06,0) (-8.160659869e-10,0) (8.470329473e-22,0) (-1.266989765e-15,0) (-9.077704595e-06,0) (2.704664962e-05,0) (0,0) (1.483552381e-08,0) (5.416556846e-14,0) (-5.200987241e-06,0) (1.074630952e-05,0) (0,0) (1.08671901e-08,0) (-1.266292565e-07,0) (-3.289808164e-14,0) (-9.136562887e-07,0) (-1.278080324e-08,0) (-4.235164736e-22,0) (-2.091688994e-14,0) (-5.329587217e-06,0) (9.978394523e-06,0) (6.352747104e-22,0) (-2.480045938e-08,0) (-3.21468247e-14,0) (6.229744764e-07,0) (4.252964659e-06,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (1.333601076e-05,0) (-0.003680518671,0) (0.01171062439,0) (0.004572524643,0) (-0.001931974151,0) (1.016225988e-05,0) (-0.003695330387,0) (0.003163975381,0) (-1.380679875e-06,0) (-0.002791090092,0) (0.002119938484,0) (-1.702859645e-06,0) (0.001336173644,0) (-0.001159269776,0) (4.948719016e-07,0) (5.602991138e-05,0) (-5.170347486e-05,0) (1.165106662e-08,0) (0.0004402708215,0) (-0.0003880446353,0) (1.452039402e-07,0) (-0.0002896023254,0) (0.0002398595806,0) (-1.282564785e-07,0) (0.0001483925852,0) (-0.0001273107664,0) (5.926285014e-08,0) (-7.692981325e-05,0) (6.523609042e-05,0) (-3.032478854e-08,0) (4.206025406e-05,0) (-3.160521265e-05,0) (3.109924057e-08,0) (-1.970181647e-05,0) (1.391253042e-05,0) (-1.452397306e-08,0) (7.57314583e-06,0) (-4.370287337e-06,0) (1.070626807e-08,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.004214043356,0) (0.006158998385,0) (0.0001312011809,0) (-0.0007825700286,0) (-0.000160366703,0) (0.0001179069761,0) (2.941101487e-05,0) (-1.215575976e-05,0) (-1.292825713e-05,0) (3.591247411e-06,0) (1.211948785e-06,0) (2.186819431e-07,0) (-9.353687809e-07,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.04520166927,0) (0.04251668573,0) (-0.0009345582901,0) (-0.0001451268835,0) (0.0002799358963,0) (0.0005029806326,0) (-0.0003063111856,0) (-7.350246924e-05,0) (0.0001538232273,0) (3.114230238e-05,0) (-2.423650254e-05,0) (1.916106456e-05,0) (2.552626129e-05,0) (1.454931824e-06,0) (-0.003157854218,0) (0.007512458075,0) (0.0005195851016,0) (-1.088795504e-06,0) (0.03421108654,0) (-7.146290097e-06,0) (-1.177097021e-08,0) (-0.001457959397,0) (-6.924319911e-07,0) (7.086881675e-10,0) (-1.038967993e-05,0) (9.381966906e-10,0) (-1.140640338e-05,0) (0.001087813846,0) (-1.904659493e-05,0) (-3.587190187e-09,0) (0.0001295991408,0) (1.20807976e-09,0) (5.088937078e-05,0) (-0.0006397323042,0) (9.728329649e-10,0) (-2.632356776e-05,0) (0.0001948452291,0) (1.377274291e-10,0) (-1.900743854e-05,0) (0.0002168844333,0) (1.768045232e-10,0) (1.738073434e-06,0) (-3.331910854e-05,0) (-2.35095165e-06,0) (-4.003305574e-11,0) (-1.444095283e-05,0) (1.856004633e-10,0) (-8.44366819e-06,0) (5.955031546e-05,0) (1.173764161e-10,0) (-3.04711323e-06,0) (3.220324779e-05,0) (-7.589415207e-19,0) (9.495322441e-05,0) (7.430118958e-08,0) (-0.00369666856,0) (0.02112509155,0) (6.505213035e-19,0) (6.333326623e-05,0) (0.001467685891,0) (-1.522189737e-06,0) (0.003983623004,0) (2.710505431e-20,0) (-1.128629076e-06,0) (1.486140405e-06,0) (-1.732577337e-08,0) (0.0006790959101,0) (8.470329473e-22,0) (-9.281519799e-09,0) (-5.628658706e-06,0) (-6.662351652e-09,0) (-1.747322974e-05,0) (4.065758147e-20,0) (-4.549907229e-06,0) (-1.145926933e-05,0) (-2.539534721e-08,0) (0.0005202223217,0) (-6.776263578e-21,0) (-6.099495322e-07,0) (1.186146372e-08,0) (1.038789438e-05,0) (-0.0002534353773,0) (0,0) (-5.02811008e-07,0) (4.132508469e-09,0) (0.000156366619,0) (-0.0002955184562,0) (0,0) (-1.679232679e-07,0) (1.383585823e-09,0) (-3.776354522e-05,0) (0.0001676407959,0) (-8.088281908e-10,0) (1.694065895e-21,0) (1.092177589e-11,0) (-1.716212179e-05,0) (5.082791124e-05,0) (8.470329473e-22,0) (-3.774756953e-08,0) (5.146970487e-10,0) (2.38628948e-05,0) (-5.030265065e-05,0) (4.235164736e-22,0) (-6.59283491e-08,0) (1.303346218e-06,0) (6.607505923e-10,0) (8.223005948e-06,0) (-3.476269999e-08,0) (0,0) (2.906841531e-10,0) (-2.422359532e-05,0) (4.450385645e-05,0) (0,0) (-7.6060703e-09,0) (1.822462067e-10,0) (6.185128518e-07,0) (3.673086727e-06,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (-1.352214984e-05,0) (-0.001516611742,0) (-0.1815201801,0) (0.001529805043,0) (-0.06184377689,0) (-1.018009989e-05,0) (0.0100894037,0) (0.002033057526,0) (1.382974519e-06,0) (0.01420621429,0) (0.001104706844,0) (1.705669872e-06,0) (0.0001243303037,0) (-0.00416102366,0) (-4.957044252e-07,0) (-2.976561439e-05,0) (-6.894765397e-05,0) (-1.167054917e-08,0) (2.109279228e-05,0) (-0.001212800252,0) (-1.454478514e-07,0) (0.0009931054366,0) (0.0001417158764,0) (1.284692074e-07,0) (1.74742353e-05,0) (-0.0004985374759,0) (-5.936260932e-08,0) (0.0002260156754,0) (4.076642451e-05,0) (3.037514902e-08,0) (1.036691613e-05,0) (-0.0002489763116,0) (-3.115196758e-08,0) (0.0001252345373,0) (6.832339961e-06,0) (1.454786252e-08,0) (2.35247391e-06,0) (-7.547512391e-05,0) (-1.072474815e-08,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.09590197642,0) (-0.1401646988,0) (-0.002985838421,0) (0.01780950172,0) (0.003649578912,0) (-0.002683292763,0) (-0.0006693273457,0) (0.0002766372549,0) (0.0002942175258,0) (-8.172856693e-05,0) (-2.758117892e-05,0) (-4.976700232e-06,0) (2.128685141e-05,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.01470014553,0) (0.01382695546,0) (-0.0003039299897,0) (-4.71970691e-05,0) (9.103863821e-05,0) (0.000163575563,0) (-9.961621062e-05,0) (-2.390391798e-05,0) (5.002522838e-05,0) (1.012786441e-05,0) (-7.88201233e-06,0) (6.23141672e-06,0) (8.301457933e-06,0) (-1.457628927e-06,0) (-0.04559196335,0) (-0.02299600676,0) (0.008358714646,0) (1.091418551e-06,0) (0.01108001222,0) (0.0001174809611,0) (1.180077153e-08,0) (-0.0004752201501,0) (-5.445124097e-06,0) (-7.103876161e-10,0) (-3.157105631e-06,0) (-9.404551985e-10,0) (-3.878017573e-05,0) (0.0003533999622,0) (2.141472362e-05,0) (3.593291973e-09,0) (7.639707444e-05,0) (-1.211070338e-09,0) (-2.325109286e-05,0) (-0.0002136717171,0) (-9.75273999e-10,0) (-2.050776465e-05,0) (2.993656717e-05,0) (-1.380484768e-10,0) (-1.387528677e-05,0) (6.936217859e-05,0) (-1.771963067e-10,0) (2.805955058e-08,0) (-1.784210166e-05,0) (8.180342229e-07,0) (4.010017397e-11,0) (-1.893631504e-05,0) (-1.860366417e-10,0) (-5.633722485e-06,0) (1.251832324e-05,0) (-1.176319828e-10,0) (-2.00923065e-06,0) (4.53804567e-06,0) (1.734723476e-18,0) (0.005994823377,0) (-7.444950055e-08,0) (-0.003435817589,0) (-0.1102116782,0) (-1.084202172e-18,0) (0.001606299893,0) (0.01230377284,0) (1.525748086e-06,0) (0.001045366821,0) (-1.355252716e-20,0) (1.798364778e-05,0) (0.0001386402286,0) (1.737100717e-08,0) (0.0002209886563,0) (-1.694065895e-21,0) (4.610365646e-07,0) (6.817192153e-05,0) (6.679547034e-09,0) (-7.354140116e-06,0) (0,0) (6.988489398e-05,0) (4.1665471e-05,0) (2.546341754e-08,0) (0.0001696441168,0) (1.016439537e-20,0) (9.362266021e-06,0) (-1.188796278e-08,0) (8.158151922e-05,0) (-8.232622071e-05,0) (6.776263578e-21,0) (7.420259143e-06,0) (-4.143616472e-09,0) (-3.256963719e-05,0) (-0.000166117142,0) (3.388131789e-21,0) (2.488480358e-06,0) (-1.386998724e-09,0) (-6.937063544e-05,0) (5.261433427e-05,0) (1.696781277e-08,0) (0,0) (-1.09460803e-11,0) (-7.964340301e-06,0) (1.633611477e-05,0) (1.058791184e-21,0) (7.199518179e-07,0) (-5.160270666e-10,0) (3.653434698e-06,0) (-3.163718351e-05,0) (4.235164736e-22,0) (1.047169952e-06,0) (6.944596701e-07,0) (-6.615208134e-10,0) (-2.354858994e-05,0) (5.29902449e-07,0) (-2.117582368e-22,0) (-2.91384935e-10,0) (-1.338045233e-05,0) (4.545817498e-06,0) (-6.352747104e-22,0) (3.968631531e-07,0) (-1.826512278e-10,0) (3.288624992e-07,0) (-1.102174207e-05,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (1.792468198e-05,0) (0.0015942032,0) (-0.1456492277,0) (-0.002288970907,0) (-0.04519188989,0) (1.349672706e-05,0) (0.01039062405,0) (-0.0008488810399,0) (-1.833908765e-06,0) (0.01281429128,0) (-0.0007629577502,0) (-2.261845447e-06,0) (-0.0009122039538,0) (-0.002265202916,0) (6.573132114e-07,0) (-6.462997956e-05,0) (-1.306935015e-05,0) (1.547562452e-08,0) (-0.0003155601183,0) (-0.000622467995,0) (1.928670741e-07,0) (0.0009669418372,0) (-7.371168797e-05,0) (-1.703585845e-07,0) (-9.854256778e-05,0) (-0.0002801178774,0) (7.871574193e-08,0) (0.0002283587626,0) (-1.837131481e-05,0) (-4.027933956e-08,0) (-2.384812022e-05,0) (-0.0001639726644,0) (4.130690869e-08,0) (0.000109272375,0) (-5.321956378e-06,0) (-1.92916415e-08,0) (-3.927606724e-06,0) (-5.36331914e-05,0) (1.42199673e-08,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.07546254497,0) (-0.1102916257,0) (-0.00234947156,0) (0.01401379174,0) (0.002871750125,0) (-0.002111406963,0) (-0.0005266747028,0) (0.0002176780091,0) (0.0002315114256,0) (-6.430989108e-05,0) (-2.170284735e-05,0) (-3.916024248e-06,0) (1.675001957e-05,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.02292890543,0) (-0.02156692623,0) (0.0004740621088,0) (7.361676329e-05,0) (-0.0001419997048,0) (-0.0002551409173,0) (0.0001553787796,0) (3.72847108e-05,0) (-7.802805272e-05,0) (-1.579718001e-05,0) (1.229415824e-05,0) (-9.719602051e-06,0) (-1.29483986e-05,0) (1.933695861e-06,0) (-0.03199064087,0) (-0.02299221789,0) (0.005912559672,0) (-1.447272914e-06,0) (-0.01738794072,0) (9.397260481e-05,0) (-1.564861596e-08,0) (0.0007387482168,0) (-3.585040966e-06,0) (9.420694424e-10,0) (5.436834395e-06,0) (1.247478056e-09,0) (-2.065379919e-05,0) (-0.0005520810976,0) (3.049198037e-05,0) (-4.763408986e-09,0) (-3.993073118e-05,0) (1.606572917e-09,0) (-5.581744661e-05,0) (0.0003202683844,0) (1.293499994e-09,0) (4.343975792e-06,0) (-0.0001240359772,0) (1.831224303e-10,0) (3.841493541e-06,0) (-0.0001108992143,0) (2.350780239e-10,0) (-1.286536979e-06,0) (1.161940272e-05,0) (2.387046427e-06,0) (-5.316445846e-11,0) (-3.410339354e-06,0) (2.467585767e-10,0) (2.105845968e-06,0) (-3.536965701e-05,0) (1.560307562e-10,0) (7.77950799e-07,0) (-2.080929823e-05,0) (5.204170428e-18,0) (0.004449681879,0) (9.875566195e-08,0) (0.0001906725663,0) (-0.09897492918,0) (-2.168404345e-19,0) (0.001163767271,0) (0.008173532278,0) (-2.023388919e-06,0) (-0.002208672077,0) (-6.776263578e-21,0) (1.441241402e-05,0) (0.000103430604,0) (-2.303572953e-08,0) (-0.0003443707994,0) (-3.388131789e-21,0) (3.546892966e-07,0) (5.564768243e-05,0) (-8.856789814e-09,0) (7.598111631e-06,0) (0,0) (5.613041285e-05,0) (4.007349356e-05,0) (-3.375795271e-08,0) (-0.0002635377927,0) (0,0) (7.519930189e-06,0) (1.577459173e-08,0) (5.364558862e-05,0) (0.0001286262247,0) (0,0) (5.974666933e-06,0) (5.496789673e-09,0) (-0.0001421887402,0) (9.710076482e-05,0) (-3.388131789e-21,0) (2.003154677e-06,0) (1.839710283e-09,0) (-2.388494044e-05,0) (-8.647148753e-05,0) (1.340554525e-08,0) (0,0) (1.451967495e-11,0) (6.909246837e-06,0) (-2.592891019e-05,0) (4.235164736e-22,0) (5.713850495e-07,0) (6.845034665e-10,0) (-1.519996164e-05,0) (1.399723361e-05,0) (-8.470329473e-22,0) (8.393777059e-07,0) (-4.576572648e-07,0) (8.775775864e-10,0) (-2.393998219e-05,0) (4.258067386e-07,0) (1.270549421e-21,0) (3.864907411e-10,0) (8.138608507e-06,0) (-3.005827211e-05,0) (-4.235164736e-22,0) (3.050299829e-07,0) (2.42261127e-10,0) (-2.173739453e-07,0) (-1.107271747e-05,0) -(0.2370734683,0) (0.0006670533688,0) (0.004066218674,0) (0.0006820777545,0) (0.0005956356081,0) (8.044155541e-06,0) (9.655870575e-06,0) (6.831873609e-05,0) (4.382157398e-05,0) (1.591626787e-05,0) (1.652759785e-05,0) (1.94939596e-05,0) (1.491606603e-05,0) (3.877437899e-09,0) (0.000104543173,0) (0.3087228188,0) (0.0001062601308,0) (0.02189791074,0) (1.451237323e-09,0) (0.00101721631,0) (6.767884142e-05,0) (3.270019455e-11,0) (0.002703808895,0) (4.554381508e-05,0) (7.902103776e-11,0) (3.058225334e-05,0) (0.0002763177339,0) (1.071720204e-11,0) (1.677877475e-07,0) (1.554212663e-07,0) (1.046209416e-14,0) (9.935797639e-06,0) (6.792423503e-05,0) (2.685856042e-12,0) (0.0001254778854,0) (5.197168565e-06,0) (3.878416987e-12,0) (3.452071693e-06,0) (3.698293816e-05,0) (1.425830819e-12,0) (2.421919495e-05,0) (1.387963126e-06,0) (7.687789817e-13,0) (1.030262135e-06,0) (3.786694817e-05,0) (1.535265483e-12,0) (3.118113231e-05,0) (2.989431376e-07,0) (8.846582533e-13,0) (1.823523549e-07,0) (2.000685348e-05,0) (1.00557303e-12,0) (3.415236843e-18,0) (-4.33680869e-19,0) (0,0) (0.03787629397,0) (0.1290043371,0) (9.757819552e-19,0) (1.626303259e-19,0) (1.734723476e-18,0) (0.01166407464,0) (0.02777002614,0) (0,0) (-1.905824131e-21,0) (-6.776263578e-21,0) (0.0001520492622,0) (9.479976155e-05,0) (3.726944968e-20,0) (-1.016439537e-20,0) (0,0) (0.0005765989928,0) (0.002012299337,0) (3.30872245e-24,0) (-2.067951531e-24,0) (4.135903063e-25,0) (2.968303438e-07,0) (9.832055907e-08,0) (-1.058791184e-22,0) (3.97046694e-23,0) (-1.389663429e-22,0) (3.860134312e-07,0) (9.979758691e-06,0) (-1.694065895e-21,0) (4.235164736e-22,0) (-2.01170325e-21,0) (3.578750522e-05,0) (7.498366886e-05,0) (-2.488159283e-21,0) (5.29395592e-23,0) (8.470329473e-22,0) (1.02162398e-05,0) (6.854234909e-05,0) (-1.058791184e-22,0) (-9.264422861e-23,0) (0,0) (9.779609685e-07,0) (8.699365442e-06,0) (-2.117582368e-22,0) (-5.29395592e-23,0) (-1.32348898e-23,0) (4.056902711e-06,0) (8.419618364e-06,0) (0,0) (1.98523347e-23,0) (-1.032321404e-21,0) (5.202177913e-06,0) (1.997650936e-05,0) (5.29395592e-23,0) (-3.176373552e-22,0) (4.764560328e-22,0) (2.701400034e-06,0) (1.519803296e-05,0) (2.117582368e-22,0) (-3.30872245e-23,0) (4.566036981e-22,0) (2.43172997e-06,0) (8.192639034e-06,0) -(0.4945189387,0) (0.307421443,0) (0.1319654046,0) (0.03941143222,0) (0.01673841645,0) (0.005001509027,0) (0.002982067969,0) (0.0008721944031,0) (0.0006739086684,0) (0.0001662005827,0) (0.000162668234,0) (2.726728507e-05,0) (3.849627959e-05,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.09496554104,0) (0.02219350733,0) (0.0009466734748,0) (2.321681126e-06,0) (4.129794632e-05,0) (0.0001989658342,0) (0.0002383724452,0) (0.0001692599573,0) (0.0001085254047,0) (7.176902103e-05,0) (5.852636604e-05,0) (5.506831979e-05,0) (4.747128362e-05,0) (1.073506527e-10,0) (0.04541795873,0) (0.1725741146,0) (0.01007922853,0) (4.289735641e-10,0) (0.01096928929,0) (5.737094057e-05,0) (1.333779821e-12,0) (6.161287463e-05,0) (4.444852922e-08,0) (1.969247442e-15,0) (4.145795013e-08,0) (1.730393003e-13,0) (0.0001003702013,0) (0.0001160749593,0) (5.79959204e-05,0) (1.968726167e-12,0) (0.000456033966,0) (4.122042944e-13,0) (0.0001878179395,0) (0.0003229003659,0) (1.646882568e-13,0) (1.410595769e-05,0) (0.0002999456081,0) (5.102445159e-14,0) (6.696096688e-05,0) (0.0001183515028,0) (8.984760364e-14,0) (5.83628165e-07,0) (0.0001427988773,0) (2.344464954e-06,0) (1.402501907e-15,0) (0.0001207276869,0) (4.655188215e-14,0) (6.221369806e-06,0) (0.0001060713667,0) (3.292207679e-14,0) (1.583941041e-06,0) (9.971418463e-05,0) (-4.33680869e-18,0) (0.009429544937,0) (1.5840107e-13,0) (0.0005109923468,0) (0.194759507,0) (2.710505431e-19,0) (0.002555581156,0) (0.005067391794,0) (1.942355678e-10,0) (0.0004409201741,0) (-3.388131789e-21,0) (2.942625463e-05,0) (5.654394068e-05,0) (2.071868796e-12,0) (8.037295849e-06,0) (-1.058791184e-22,0) (7.348914505e-07,0) (3.230829218e-06,0) (6.964797294e-14,0) (1.567816421e-07,0) (-1.355252716e-20,0) (0.000113937913,0) (0.0001851425888,0) (2.781457311e-11,0) (2.999024015e-05,0) (-6.776263578e-21,0) (1.52722285e-05,0) (1.871511688e-11,0) (0.0005040683449,0) (5.02024039e-05,0) (-1.016439537e-20,0) (1.211469523e-05,0) (6.023879719e-13,0) (0.0001599166819,0) (0.0002441829949,0) (-1.355252716e-20,0) (4.063106018e-06,0) (2.623064153e-13,0) (0.000205223284,0) (3.30332097e-05,0) (2.733646717e-08,0) (8.470329473e-22,0) (4.552654708e-15,0) (0.000111644296,0) (2.711731612e-05,0) (-6.776263578e-21,0) (1.172473665e-06,0) (1.533275629e-13,0) (1.278860789e-05,0) (9.776751272e-05,0) (2.541098842e-21,0) (1.709717327e-06,0) (1.530464362e-07,0) (1.424655546e-13,0) (0.0001104626914,0) (8.6197615e-07,0) (-2.964615315e-21,0) (6.739760524e-14,0) (2.211632354e-05,0) (7.515207224e-05,0) (4.65868121e-21,0) (6.315078598e-07,0) (3.652790367e-14,0) (1.2355385e-07,0) (8.266795114e-05,0) -(0.2422309801,0) (0.001121531446,0) (0.004001037327,0) (0.0008151232336,0) (0.0005459492306,0) (2.557736886e-06,0) (1.207525027e-05,0) (7.053714984e-05,0) (3.864594342e-05,0) (1.483042612e-05,0) (1.714442183e-05,0) (1.870975941e-05,0) (1.379834849e-05,0) (1.742864286e-07,0) (0.005638823192,0) (-0.03005885845,0) (-0.001740184869,0) (-0.0002456493842,0) (-1.464161271e-09,0) (-0.0002385746382,0) (0.0001785998502,0) (-2.747021514e-11,0) (-0.0005992538639,0) (0.000367698185,0) (-1.046201884e-10,0) (-6.600547482e-05,0) (4.89280251e-05,0) (-8.444216063e-12,0) (-4.766178062e-07,0) (4.06527398e-07,0) (-3.327915718e-14,0) (-3.196151495e-05,0) (2.456646172e-05,0) (-3.639065293e-12,0) (-3.402544542e-05,0) (2.406742621e-05,0) (-4.536703068e-12,0) (-9.26298144e-06,0) (6.688627696e-06,0) (-1.280349392e-12,0) (-7.564880206e-06,0) (5.569965596e-06,0) (-9.132222426e-13,0) (-6.467528051e-06,0) (3.305101292e-06,0) (-1.683603403e-12,0) (-5.197553094e-06,0) (2.84540489e-06,0) (-1.055854317e-12,0) (-1.763474399e-06,0) (2.918850479e-07,0) (-8.970932822e-13,0) (0,0) (-1.734723476e-18,0) (0,0) (0.04120751152,0) (-0.1209002553,0) (8.67361738e-19,0) (2.168404345e-19,0) (-8.67361738e-19,0) (0.01059505292,0) (-0.03117134266,0) (0,0) (-6.776263578e-21,0) (-3.388131789e-21,0) (5.404029922e-05,0) (-0.0002719614938,0) (-8.131516294e-20,0) (-1.355252716e-20,0) (2.032879073e-20,0) (0.0006347062577,0) (-0.001863912343,0) (2.64697796e-23,0) (-5.95570041e-23,0) (1.32348898e-23,0) (-2.21524732e-08,0) (1.343238814e-06,0) (1.058791184e-22,0) (1.058791184e-22,0) (1.058791184e-22,0) (9.509644464e-07,0) (-4.130367749e-06,0) (0,0) (-2.117582368e-22,0) (0,0) (3.035209207e-05,0) (-9.01449982e-05,0) (1.799945013e-21,0) (2.117582368e-22,0) (0,0) (1.50771313e-05,0) (-4.735466163e-05,0) (-2.64697796e-23,0) (-2.117582368e-22,0) (0,0) (1.62071298e-06,0) (-5.352223079e-06,0) (5.29395592e-22,0) (2.64697796e-22,0) (5.29395592e-23,0) (3.422835305e-06,0) (-1.01749705e-05,0) (-2.117582368e-22,0) (-1.058791184e-22,0) (1.058791184e-21,0) (5.992220638e-06,0) (-1.768270685e-05,0) (-2.117582368e-22,0) (-2.117582368e-22,0) (2.117582368e-22,0) (3.697399502e-06,0) (-1.132169379e-05,0) (0,0) (-1.091878409e-22,0) (-2.448454613e-22,0) (2.631726242e-06,0) (-7.718453293e-06,0) -(0.2167077723,0) (-0.0826000003,0) (0.01117712611,0) (-0.0003024909558,0) (0.0008314218089,0) (-0.0009975617353,0) (0.0008431149587,0) (-0.0003842233562,0) (0.0002704370739,0) (-0.0001092156267,0) (9.757243774e-05,0) (-3.875001386e-05,0) (4.274889246e-05,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.2167077723,0) (-0.0826000003,0) (0.01117712611,0) (-0.0003024909558,0) (0.0008314218089,0) (-0.0009975617353,0) (0.0008431149587,0) (-0.0003842233562,0) (0.0002704370739,0) (-0.0001092156267,0) (9.757243774e-05,0) (-3.875001386e-05,0) (4.274889246e-05,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.2791082932,0) (0.02715806816,0) (-0.02846199811,0) (-0.008149020754,0) (0.002851320191,0) (-3.950407327e-05,0) (1.14330723e-05,0) (0.000154869012,0) (-0.0001326794655,0) (8.537678745e-05,0) (-7.412014254e-05,0) (5.873445414e-05,0) (-3.031732376e-05,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.1181203825,0) (-0.006245320651,0) (-0.002900269686,0) (3.326358174e-05,0) (0.0001138238722,0) (-8.641960382e-06,0) (3.016434396e-05,0) (1.010587839e-05,0) (7.596477619e-06,0) (2.457459582e-05,0) (1.39297899e-05,0) (4.065901073e-06,0) (7.640914772e-06,0) (-0.01035118577,0) (-1.060983429e-08,0) (0.1844993062,0) (0.0003082971776,0) (-3.414617148e-10,0) (-0.02229074989,0) (-4.695743746e-06,0) (1.512221582e-12,0) (-0.000493871054,0) (2.774482817e-07,0) (1.388386925e-13,0) (1.075209157e-05,0) (1.542408416e-12,0) (-1.658424701e-07,0) (9.590123357e-05,0) (8.91317672e-15,0) (8.216387078e-07,0) (-6.614975308e-06,0) (-5.963206816e-15,0) (-3.894922342e-06,0) (5.496461783e-05,0) (2.139238978e-08,0) (-1.443919701e-14,0) (-6.011743517e-06,0) (4.673910862e-15,0) (-1.74835413e-06,0) (3.005116424e-05,0) (-2.235709583e-16,0) (-5.566167409e-06,0) (4.421606725e-05,0) (-2.755076165e-13,0) (-8.301042594e-07,0) (1.171506491e-05,0) (5.277626819e-15,0) (-9.855585617e-07,0) (7.565601838e-06,0) (4.796833131e-15,0) (-2.467184366e-06,0) (1.707721501e-05,0) (-4.011548038e-18,0) (-0.001440066044,0) (0.0003756619176,0) (-7.98021357e-09,0) (0.06390193245,0) (-5.692061406e-19,0) (4.661129412e-05,0) (-0.001430622896,0) (-5.324722776e-10,0) (-0.006490750649,0) (8.470329473e-22,0) (-1.219047869e-09,0) (6.88256806e-08,0) (-1.492854078e-13,0) (-2.119132764e-05,0) (-2.64697796e-21,0) (3.776952075e-09,0) (-1.772438385e-05,0) (2.737719363e-12,0) (-1.263791935e-05,0) (2.382280164e-22,0) (-1.489280527e-10,0) (2.159068983e-15,0) (1.41805818e-07,0) (-9.41299573e-06,0) (-1.058791184e-21,0) (-2.66680814e-08,0) (8.251120861e-14,0) (-1.360177412e-05,0) (2.890940732e-05,0) (-2.051407919e-22,0) (-2.873311294e-09,0) (-5.553993283e-14,0) (-6.239731814e-07,0) (3.264209423e-06,0) (3.044024654e-22,0) (8.129572964e-09,0) (-4.505795755e-14,0) (6.797582913e-07,0) (-3.897277635e-06,0) (-7.940933881e-23,0) (-5.801431416e-10,0) (1.621406561e-15,0) (-3.222079977e-06,0) (2.141123947e-05,0) (-1.058791184e-22,0) (-1.220420545e-08,0) (-3.309562665e-14,0) (-9.894086537e-06,0) (2.043898951e-05,0) (-3.567216392e-24,0) (-8.979762109e-12,0) (4.383490997e-09,0) (1.926809811e-16,0) (3.180408848e-08,0) (1.786710123e-22,0) (-7.758571774e-09,0) (1.720215909e-14,0) (-3.727686172e-06,0) (7.582318236e-06,0) (-1.32348898e-23,0) (-1.614102532e-08,0) (1.910022884e-14,0) (-3.025162843e-06,0) (8.913907942e-06,0) -(0.2757309677,0) (0.033849107,0) (-0.03357642321,0) (-0.005713665996,0) (0.002042528073,0) (0.0001252214311,0) (0.000101946051,0) (-1.042211491e-05,0) (3.127914568e-05,0) (-3.917751923e-05,0) (1.580332402e-05,0) (-2.236553419e-06,0) (7.972957138e-06,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0.0005994385344,0) (-0.1985188841,0) (-0.001140207266,0) (-0.07488263132,0) (2.167276441e-05,0) (-1.025275956e-05,0) (0.0008666908912,0) (0.008349515407,0) (1.159857724e-06,0) (0.0006185982764,0) (0.01711533238,0) (2.254507178e-06,0) (-0.002883854726,0) (-0.0002052737618,0) (-3.899156928e-07,0) (-0.000159158543,0) (-0.0001352381151,0) (-3.706119164e-08,0) (-0.001416265,0) (-0.0001403458379,0) (-1.967367615e-07,0) (7.853055611e-05,0) (0.001110759192,0) (1.500255288e-07,0) (-0.0003981834344,0) (-2.30250586e-05,0) (-5.321609918e-08,0) (2.402907374e-05,0) (0.0002617957008,0) (3.602240965e-08,0) (-0.0002640355922,0) (-2.758564769e-06,0) (-3.410406075e-08,0) (3.284076926e-06,0) (0.000132422448,0) (1.733460305e-08,0) (-7.323759983e-05,0) (-6.375922781e-08,0) (-9.551291528e-09,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.001846675378,0) (-0.001654839895,0) (1.111239836e-05,0) (6.00638806e-06,0) (-7.965650434e-06,0) (-2.351680004e-05,0) (8.315325756e-06,0) (5.354914909e-06,0) (-5.18806211e-06,0) (-2.359921549e-06,0) (7.269569138e-07,0) (-3.107727192e-07,0) (-1.038697242e-06,0) (-0.06490133507,0) (-3.946716758e-05,0) (-0.006148089778,0) (0.007225280791,0) (3.425681516e-06,0) (-0.001345300549,0) (0.0001579544268,0) (1.933599988e-08,0) (4.985113502e-05,0) (-4.842011333e-06,0) (-6.979482776e-10,0) (7.525934897e-07,0) (1.618918448e-07,0) (-6.272074233e-05,0) (-4.091314267e-05,0) (-1.323759753e-09,0) (4.293660645e-05,0) (-1.735049015e-06,0) (1.921228267e-10,0) (-2.913583491e-05,0) (2.152582244e-05,0) (-2.092592279e-07,0) (1.791320429e-09,0) (-5.094414221e-05,0) (1.359553096e-10,0) (-1.256793796e-05,0) (-1.07102183e-05,0) (3.055871646e-11,0) (-2.032540034e-06,0) (-5.724551057e-06,0) (5.494923794e-10,0) (-1.488701156e-06,0) (-9.543865412e-06,0) (1.452900029e-10,0) (-3.151034807e-06,0) (-9.523435361e-06,0) (7.154815394e-11,0) (-3.083106532e-06,0) (-6.388466763e-06,0) (-8.67361738e-19,0) (0.005458852868,0) (-0.1264871219,0) (-6.252989909e-05,0) (-0.0005301535656,0) (1.084202172e-19,0) (-0.0002130075372,0) (0.01332630147,0) (1.825408291e-06,0) (-0.0004832594551,0) (-8.470329473e-22,0) (-2.967339092e-06,0) (7.000924065e-05,0) (1.743942639e-08,0) (-2.943530294e-05,0) (2.541098842e-21,0) (-1.216966884e-08,0) (7.671321961e-05,0) (7.595298963e-09,0) (-2.357373937e-06,0) (1.270549421e-21,0) (-4.8359186e-07,0) (-4.383976412e-10,0) (4.728265869e-05,0) (-2.460472004e-05,0) (0,0) (-2.363189478e-06,0) (-2.370021663e-09,0) (8.113426703e-05,0) (4.633762748e-05,0) (-8.470329473e-22,0) (4.377140531e-06,0) (1.020286978e-08,0) (-0.0001297244959,0) (5.329791181e-06,0) (0,0) (2.608211516e-06,0) (5.109376555e-09,0) (-7.478601065e-05,0) (-8.104477101e-06,0) (-1.058791184e-22,0) (2.294365191e-08,0) (2.306630744e-11,0) (-8.580644554e-06,0) (-3.260951961e-06,0) (6.352747104e-22,0) (1.665974296e-07,0) (1.845548891e-10,0) (-6.225489374e-06,0) (-9.221360182e-06,0) (-8.470329473e-22,0) (8.144303457e-12,0) (9.464237249e-07,0) (8.301088797e-10,0) (-2.75231617e-05,0) (-4.235164736e-22,0) (3.061043593e-07,0) (3.46976802e-10,0) (-1.102623907e-05,0) (-8.675920207e-06,0) (4.235164736e-22,0) (1.540103829e-07,0) (1.701788421e-10,0) (-1.243366357e-06,0) (-1.244429397e-05,0) -(-0.1031484994,0) (-0.1582389931,0) (-0.01103408529,0) (0.01890852676,0) (0.005635747778,0) (-0.002521811017,0) (-0.001083411895,0) (0.0001668520179,0) (0.0003833158109,0) (-4.739128419e-05,0) (-4.040597076e-05,0) (-1.348309736e-05,0) (2.298693686e-05,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (-0.0006078052747,0) (-0.0818026201,0) (0.01767374832,0) (-0.0250530803,0) (0.0006937595959,0) (1.027075844e-05,0) (-0.002366336259,0) (0.005365100259,0) (-1.161785369e-06,0) (-0.003148568976,0) (0.008918855406,0) (-2.258227789e-06,0) (-0.000268341271,0) (-0.0007367991449,0) (3.905716485e-07,0) (8.455219191e-05,0) (-0.0001803428258,0) (3.712316421e-08,0) (-6.785138147e-05,0) (-0.0004386388888,0) (1.970672368e-07,0) (-0.0002692972928,0) (0.0006562681882,0) (-1.502743643e-07,0) (-4.688880524e-05,0) (-9.016405225e-05,0) (5.330567966e-08,0) (-7.059613306e-05,0) (0.000163597705,0) (-3.608223219e-08,0) (-6.507889457e-05,0) (-2.173113939e-05,0) (3.416188227e-08,0) (-2.087522514e-05,0) (6.50316769e-05,0) (-1.736311552e-08,0) (-2.275006274e-05,0) (-1.101125681e-06,0) (9.567778006e-09,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.04202610262,0) (0.03766036634,0) (-0.0002528927387,0) (-0.0001366916373,0) (0.0001812799621,0) (0.0005351885142,0) (-0.0001892377717,0) (-0.0001218656003,0) (0.0001180684127,0) (5.370641011e-05,0) (-1.654387459e-05,0) (7.072475403e-06,0) (2.363837055e-05,0) (-0.0261051813,0) (3.944842813e-05,0) (6.279587704e-05,0) (0.002416007754,0) (-3.425597545e-06,0) (0.03365443351,0) (5.171884636e-05,0) (-1.935851884e-08,0) (-0.001175570287,0) (-2.300267057e-06,0) (6.987811895e-10,0) (-1.390588258e-05,0) (-1.638194283e-07,0) (-2.644343681e-05,0) (0.0009279537109,0) (1.325991733e-09,0) (-3.274005584e-05,0) (0.0004008668033,0) (-1.924329641e-10,0) (2.950263984e-05,0) (-0.0005718721755,0) (-2.727688202e-07,0) (-1.794592821e-09,0) (3.284267252e-05,0) (-1.361779008e-10,0) (-1.772004666e-05,0) (0.0002140658698,0) (-3.061634471e-11,0) (-2.18074922e-06,0) (8.592680047e-06,0) (-5.505024031e-10,0) (1.478868857e-06,0) (-3.305527393e-05,0) (-1.455247171e-10,0) (-6.902743869e-06,0) (3.953000872e-05,0) (-7.166854507e-11,0) (-7.303006439e-06,0) (3.947982096e-05,0) (0,0) (0.001679108527,0) (-0.05045358095,0) (6.252449675e-05,0) (0.02200366493,0) (2.168404345e-19,0) (-0.0001201094063,0) (0.006398207008,0) (-1.827623733e-06,0) (0.004689634674,0) (-8.470329473e-20,0) (-1.145585351e-06,0) (2.575624477e-05,0) (-1.745081276e-08,0) (0.0006705783039,0) (-4.235164736e-22,0) (-3.62487904e-09,0) (2.484116704e-05,0) (-7.604241534e-09,0) (-5.076304556e-06,0) (-4.235164736e-20,0) (-1.840484349e-07,0) (4.390893775e-10,0) (1.025957234e-05,0) (0.0005620420754,0) (-3.388131789e-21,0) (-6.94792267e-07,0) (2.373663017e-09,0) (0.0001593070373,0) (-0.000251256781,0) (2.117582368e-22,0) (1.955830264e-06,0) (-1.022102714e-08,0) (-6.579728783e-06,0) (-0.0002342789111,0) (-8.470329473e-22,0) (7.688532502e-07,0) (-5.11828032e-09,0) (-5.264350621e-05,0) (0.0001274524706,0) (0,0) (7.264731325e-09,0) (-2.310334681e-11,0) (-1.395951307e-05,0) (6.869909882e-05,0) (-1.270549421e-21,0) (8.860179887e-08,0) (-1.848524135e-10,0) (1.541787193e-05,0) (-4.066423592e-05,0) (-1.588186776e-22,0) (-5.464056351e-11,0) (4.061638748e-07,0) (-8.316854796e-10,0) (-1.078115126e-05,0) (7.940933881e-22,0) (7.888849008e-08,0) (-3.475255682e-10,0) (-2.522531665e-05,0) (3.889316497e-05,0) (-1.164670302e-21,0) (3.533132544e-08,0) (-1.704590834e-10,0) (-5.400560006e-06,0) (9.482860461e-06,0) -(-0.03354517603,0) (-0.05146129038,0) (-0.003588421894,0) (0.006149288282,0) (0.001832815333,0) (-0.0008201243352,0) (-0.0003523390349,0) (5.426235325e-05,0) (0.0001246590734,0) (-1.541223556e-05,0) (-1.314052468e-05,0) (-4.384871105e-06,0) (7.475638015e-06,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0.0008056940932,0) (0.08598772848,0) (0.01418116593,0) (0.03748567322,0) (0.0005069597758,0) (-1.361692173e-05,0) (-0.002436983511,0) (-0.002240139213,0) (1.540598429e-06,0) (-0.002840072602,0) (-0.006159742645,0) (2.994578451e-06,0) (0.001968803752,0) (-0.0004011031198,0) (-5.179052102e-07,0) (0.0001835878932,0) (-3.418482576e-05,0) (-4.922683088e-08,0) (0.001015095094,0) (-0.0002251307824,0) (-2.613155229e-07,0) (-0.0002622025914,0) (-0.0003413494461,0) (1.992736509e-07,0) (0.0002644203416,0) (-5.066131264e-05,0) (-7.068415912e-08,0) (-7.132799777e-05,0) (-7.372500718e-05,0) (4.784728731e-08,0) (0.0001497079056,0) (-1.431185483e-05,0) (-4.529799756e-08,0) (-1.821450758e-05,0) (-5.065552207e-05,0) (2.302489451e-08,0) (3.798269516e-05,0) (-7.824682005e-07,0) (-1.268593802e-08,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.03306914808,0) (0.02963387403,0) (-0.0001989941228,0) (-0.0001075587721,0) (0.0001426440602,0) (0.0004211246611,0) (-0.0001489058348,0) (-9.589258415e-05,0) (9.290468493e-05,0) (4.226005073e-05,0) (-1.301790565e-05,0) (5.565130283e-06,0) (1.860036328e-05,0) (0.02926571414,0) (-5.233749665e-05,0) (0.004673081751,0) (-0.00362435917,0) (4.545799097e-06,0) (0.02638077972,0) (-7.992001587e-05,0) (2.568906514e-08,0) (-0.0009236595288,0) (1.910721583e-06,0) (-9.273966112e-10,0) (-1.104819657e-05,0) (2.172620418e-07,0) (2.679708471e-05,0) (0.000730282638,0) (-1.760161639e-09,0) (-5.697878921e-05,0) (0.0003034798675,0) (2.554106455e-10,0) (4.416018281e-05,0) (-0.0004472785039,0) (-4.815784398e-08,0) (2.380958854e-09,0) (6.308274014e-05,0) (1.807232962e-10,0) (-3.901393542e-06,0) (0.0001694230918,0) (4.06153188e-11,0) (-1.146048646e-07,0) (1.07843805e-05,0) (7.316866297e-10,0) (2.233056699e-06,0) (-1.773625471e-05,0) (1.931154678e-10,0) (-2.832235242e-06,0) (3.696293445e-05,0) (9.509970693e-11,0) (-3.185200628e-06,0) (3.456667511e-05,0) (-3.469446952e-18,0) (-0.00284257667,0) (0.05732018934,0) (-8.295705307e-05,0) (0.01698074865,0) (1.626303259e-19,0) (6.976167755e-05,0) (-0.005208299287,0) (2.425392242e-06,0) (0.003898029682,0) (-7.115076757e-20,0) (1.369639726e-06,0) (-3.330977184e-05,0) (2.316105747e-08,0) (0.0005276356672,0) (2.117582368e-22,0) (6.427763033e-09,0) (-3.902065515e-05,0) (1.008984649e-08,0) (-2.047743501e-06,0) (-3.388131789e-20,0) (2.252124931e-07,0) (-5.827660155e-10,0) (-2.784067985e-05,0) (0.0004421855303,0) (1.694065895e-21,0) (1.25482395e-06,0) (-3.150489814e-09,0) (5.903793265e-05,0) (-0.0002242549974,0) (-2.117582368e-21,0) (-1.819824513e-06,0) (1.356734793e-08,0) (9.261243859e-05,0) (-0.0001806069212,0) (-8.470329473e-22,0) (-1.383388018e-06,0) (6.792974981e-09,0) (1.657555103e-05,0) (0.0001021695525,0) (1.058791184e-22,0) (-1.179134865e-08,0) (3.065983203e-11,0) (-4.066691132e-06,0) (5.42395716e-05,0) (5.29395592e-22,0) (-5.858694103e-08,0) (2.453479878e-10,0) (1.630524542e-05,0) (-2.371439697e-05,0) (2.64697796e-22,0) (-4.732725524e-11,0) (-4.061021922e-07,0) (1.103310071e-09,0) (1.257948399e-05,0) (1.270549421e-21,0) (-1.70912097e-07,0) (4.612254458e-10,0) (-1.071839513e-05,0) (3.584446582e-05,0) (-6.352747104e-22,0) (-8.927826945e-08,0) (2.261947935e-10,0) (-3.135211927e-06,0) (1.651072366e-05,0) -(0.05232289484,0) (0.08026798496,0) (0.005597127326,0) (-0.009591500245,0) (-0.002858777782,0) (0.00127920865,0) (0.000549569281,0) (-8.463701011e-05,0) (-0.0001944399869,0) (2.403960497e-05,0) (2.049624931e-05,0) (6.839408132e-06,0) (-1.166030613e-05,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.2422309801,0) (0.001121531446,0) (0.004001037327,0) (0.0008151232336,0) (0.0005459492306,0) (2.557736886e-06,0) (1.207525027e-05,0) (7.053714984e-05,0) (3.864594342e-05,0) (1.483042612e-05,0) (1.714442183e-05,0) (1.870975941e-05,0) (1.379834849e-05,0) (1.742864286e-07,0) (0.005638823192,0) (-0.03005885845,0) (-0.001740184869,0) (-0.0002456493842,0) (-1.464161271e-09,0) (-0.0002385746382,0) (0.0001785998502,0) (-2.747021514e-11,0) (-0.0005992538639,0) (0.000367698185,0) (-1.046201884e-10,0) (-6.600547482e-05,0) (4.89280251e-05,0) (-8.444216063e-12,0) (-4.766178062e-07,0) (4.06527398e-07,0) (-3.327915718e-14,0) (-3.196151495e-05,0) (2.456646172e-05,0) (-3.639065293e-12,0) (-3.402544542e-05,0) (2.406742621e-05,0) (-4.536703068e-12,0) (-9.26298144e-06,0) (6.688627696e-06,0) (-1.280349392e-12,0) (-7.564880206e-06,0) (5.569965596e-06,0) (-9.132222426e-13,0) (-6.467528051e-06,0) (3.305101292e-06,0) (-1.683603403e-12,0) (-5.197553094e-06,0) (2.84540489e-06,0) (-1.055854317e-12,0) (-1.763474399e-06,0) (2.918850479e-07,0) (-8.970932822e-13,0) (-4.33680869e-19,0) (-3.469446952e-18,0) (-8.67361738e-19,0) (0.04120751152,0) (-0.1209002553,0) (1.301042607e-18,0) (-2.168404345e-19,0) (-4.33680869e-19,0) (0.01059505292,0) (-0.03117134266,0) (6.776263578e-21,0) (-6.776263578e-21,0) (5.082197684e-21,0) (5.404029922e-05,0) (-0.0002719614938,0) (-1.016439537e-19,0) (-1.355252716e-20,0) (4.065758147e-20,0) (0.0006347062577,0) (-0.001863912343,0) (2.64697796e-23,0) (-5.95570041e-23,0) (1.32348898e-23,0) (-2.21524732e-08,0) (1.343238814e-06,0) (1.058791184e-22,0) (2.64697796e-23,0) (6.6174449e-23,0) (9.509644464e-07,0) (-4.130367749e-06,0) (0,0) (6.352747104e-22,0) (-4.235164736e-22,0) (3.035209207e-05,0) (-9.01449982e-05,0) (2.329340605e-21,0) (3.176373552e-22,0) (0,0) (1.50771313e-05,0) (-4.735466163e-05,0) (-2.64697796e-23,0) (2.64697796e-23,0) (0,0) (1.62071298e-06,0) (-5.352223079e-06,0) (5.29395592e-22,0) (2.64697796e-22,0) (-5.29395592e-23,0) (3.422835305e-06,0) (-1.01749705e-05,0) (-2.117582368e-22,0) (-1.588186776e-22,0) (3.176373552e-22,0) (5.992220638e-06,0) (-1.768270685e-05,0) (0,0) (-2.117582368e-22,0) (3.176373552e-22,0) (3.697399502e-06,0) (-1.132169379e-05,0) (1.058791184e-22,0) (-4.963083675e-23,0) (-2.514629062e-22,0) (2.631726242e-06,0) (-7.718453293e-06,0) -(0.2167077723,0) (-0.0826000003,0) (0.01117712611,0) (-0.0003024909558,0) (0.0008314218089,0) (-0.0009975617353,0) (0.0008431149587,0) (-0.0003842233562,0) (0.0002704370739,0) (-0.0001092156267,0) (9.757243774e-05,0) (-3.875001386e-05,0) (4.274889246e-05,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.2167077723,0) (-0.0826000003,0) (0.01117712611,0) (-0.0003024909558,0) (0.0008314218089,0) (-0.0009975617353,0) (0.0008431149587,0) (-0.0003842233562,0) (0.0002704370739,0) (-0.0001092156267,0) (9.757243774e-05,0) (-3.875001386e-05,0) (4.274889246e-05,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.2475006931,0) (0.001885655396,0) (0.003936900835,0) (0.0009741204454,0) (0.0005004075617,0) (8.132634863e-07,0) (1.510083094e-05,0) (7.282759888e-05,0) (3.408159058e-05,0) (1.381866281e-05,0) (1.778426622e-05,0) (1.795710592e-05,0) (1.276438578e-05,0) (7.833976983e-06,0) (0.3041454174,0) (0.002926686712,0) (0.02849839687,0) (2.755679327e-06,0) (1.477200313e-09,0) (5.595452752e-05,0) (0.000471312833,0) (2.30767043e-11,0) (0.0001328145617,0) (0.002968612862,0) (1.385122765e-10,0) (0.0001424591791,0) (8.663764015e-06,0) (6.653302287e-12,0) (1.353880343e-06,0) (1.063332768e-06,0) (1.058585676e-13,0) (0.0001028139335,0) (8.885062031e-06,0) (4.930568137e-12,0) (9.226573536e-06,0) (0.0001114531879,0) (5.306720436e-12,0) (2.485545863e-05,0) (1.209685944e-06,0) (1.149711836e-12,0) (2.362894913e-06,0) (2.235255113e-05,0) (1.084804457e-12,0) (4.060026829e-05,0) (2.884757044e-07,0) (1.846273793e-12,0) (8.663751496e-07,0) (2.708317392e-05,0) (1.260179665e-12,0) (1.705402686e-05,0) (4.258384822e-09,0) (8.003161713e-13,0) (1.561251128e-17,0) (6.938893904e-18,0) (8.67361738e-19,0) (0.04483170943,0) (0.1133052738,0) (8.67361738e-19,0) (-1.734723476e-18,0) (4.33680869e-19,0) (0.009624007898,0) (0.03498925778,0) (0,0) (5.421010862e-20,0) (6.776263578e-21,0) (1.920663012e-05,0) (0.0007802029551,0) (2.439454888e-19,0) (0,0) (2.710505431e-20,0) (0.0006986693326,0) (0.001726467409,0) (0,0) (-3.176373552e-22,0) (-4.235164736e-22,0) (1.653240914e-09,0) (1.835110102e-05,0) (0,0) (0,0) (0,0) (2.342751068e-06,0) (1.709453932e-06,0) (0,0) (1.016439537e-20,0) (1.101142831e-20,0) (2.57422105e-05,0) (0.0001083718738,0) (1.270549421e-21,0) (0,0) (-4.235164736e-22,0) (2.225083718e-05,0) (3.271647394e-05,0) (0,0) (2.911675756e-22,0) (0,0) (2.685905316e-06,0) (3.292917407e-06,0) (2.117582368e-22,0) (2.117582368e-22,0) (0,0) (2.887868495e-06,0) (1.229628472e-05,0) (2.117582368e-22,0) (0,0) (-4.235164736e-22,0) (6.902245323e-06,0) (1.565229019e-05,0) (-6.352747104e-22,0) (2.117582368e-22,0) (-4.235164736e-22,0) (5.060621495e-06,0) (8.434035548e-06,0) (-1.058791184e-22,0) (-8.470329473e-22,0) (-3.176373552e-22,0) (2.848171096e-06,0) (7.27171318e-06,0) -(0.09496554104,0) (0.02219350733,0) (0.0009466734748,0) (2.321681126e-06,0) (4.129794632e-05,0) (0.0001989658342,0) (0.0002383724452,0) (0.0001692599573,0) (0.0001085254047,0) (7.176902103e-05,0) (5.852636604e-05,0) (5.506831979e-05,0) (4.747128362e-05,0) (0.08203099855,0) (8.306610194e-08,0) (0.1359609918,0) (0.009081386798,0) (5.657391905e-09,0) (0.01196712578,0) (5.443671855e-05,0) (2.267692166e-12,0) (6.454709571e-05,0) (4.074384328e-08,0) (2.322477598e-15,0) (4.516263572e-08,0) (1.806939314e-09,0) (9.637884248e-05,0) (0.0001200645114,0) (3.505088404e-13,0) (0.0001259530711,0) (0.0003880768169,0) (2.442169459e-14,0) (0.0001806923474,0) (0.0003300259584,0) (4.99498452e-09,0) (5.220474457e-13,0) (0.0003140465704,0) (2.043749217e-14,0) (6.916995033e-05,0) (0.0001161425193,0) (3.068536094e-15,0) (6.841874488e-06,0) (0.0001365406311,0) (3.090610873e-13,0) (1.118320353e-06,0) (0.0001219538312,0) (2.402304362e-14,0) (6.135362753e-06,0) (0.0001061573737,0) (1.022792114e-14,0) (9.682037194e-06,0) (9.16160885e-05,0) (0,0) (0.008475895408,0) (0.1732522102,0) (1.124213962e-07,0) (0.02297182624,0) (1.084202172e-19,0) (0.0009869192534,0) (0.006480627332,0) (3.316210435e-10,0) (0.000596346401,0) (1.694065895e-21,0) (6.030566529e-06,0) (7.772448169e-05,0) (1.304810639e-11,0) (1.025243196e-05,0) (0,0) (6.172455307e-07,0) (3.424236285e-06,0) (8.91940129e-14,0) (8.102047562e-08,0) (0,0) (1.7510264e-07,0) (5.995060337e-14,0) (0.0002921369044,0) (3.675876272e-05,0) (2.032879073e-20,0) (1.275281687e-06,0) (4.637667068e-13,0) (0.0003051743252,0) (0.0002630933887,0) (6.776263578e-21,0) (3.588497215e-06,0) (5.404957306e-12,0) (0.0003430215163,0) (6.96043537e-05,0) (5.082197684e-21,0) (2.144710129e-06,0) (2.269021793e-12,0) (0.0002012220718,0) (3.895281572e-05,0) (1.694065895e-21,0) (3.844113255e-09,0) (1.769838074e-15,0) (0.0001178597097,0) (2.092539475e-05,0) (-8.470329473e-22,0) (6.145570316e-08,0) (3.010474357e-14,0) (2.166322872e-05,0) (9.000390998e-05,0) (0,0) (1.298476433e-12,0) (5.281220211e-07,0) (2.249656277e-13,0) (0.0001117973318,0) (2.541098842e-21,0) (1.467994913e-07,0) (7.105028024e-14,0) (4.480358687e-05,0) (5.317998557e-05,0) (0,0) (6.039698986e-08,0) (2.87767903e-14,0) (3.246588878e-06,0) (8.011602699e-05,0) -(0.4945189387,0) (0.307421443,0) (0.1319654046,0) (0.03941143222,0) (0.01673841645,0) (0.005001509027,0) (0.002982067969,0) (0.0008721944031,0) (0.0006739086684,0) (0.0001662005827,0) (0.000162668234,0) (2.726728507e-05,0) (3.849627959e-05,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.3147524089,0) (0.3911428714,0) (0.2057672699,0) (0.06817076837,0) (0.01624681051,0) (0.001918900616,0) (8.656155591e-06,0) (0.0003293313421,0) (0.0005165205109,0) (0.0005274892321,0) (0.000308913253,0) (0.0001921098042,0) (7.200817462e-05,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.1469209212,0) (0.001757452279,0) (0.008885391297,0) (0.0004765796032,0) (0.0003137171467,0) (3.753583099e-07,0) (3.817084e-06,0) (6.033841652e-07,0) (5.317323845e-07,0) (8.414643968e-06,0) (3.31541252e-06,0) (3.002007615e-07,0) (1.229871495e-06,0) (0.001306177527,0) (1.355168727e-09,0) (0.2503658847,0) (1.046614926e-05,0) (2.060951583e-11,0) (0.04152020624,0) (4.050576507e-07,0) (1.00843227e-12,0) (0.003778769832,0) (1.889305054e-06,0) (8.299835645e-12,0) (0.002559803502,0) (1.316604296e-15,0) (2.853709815e-10,0) (7.660087477e-05,0) (2.266554089e-16,0) (5.359854749e-09,0) (1.127557649e-07,0) (1.456075894e-15,0) (8.395718063e-08,0) (9.154156321e-06,0) (9.161877051e-08,0) (3.993706216e-16,0) (1.150818494e-07,0) (1.068890781e-15,0) (4.419176462e-08,0) (7.775554357e-06,0) (1.628929061e-17,0) (4.528323296e-06,0) (1.43185262e-05,0) (2.455969101e-13,0) (6.161678805e-07,0) (1.125366415e-06,0) (1.15944313e-15,0) (1.58315933e-07,0) (5.391837529e-07,0) (2.24968478e-15,0) (6.286898691e-07,0) (3.183188427e-06,0) (6.2883726e-18,0) (0.0002446691601,0) (8.145458932e-07,0) (5.664740933e-10,0) (0.177759353,0) (2.493664997e-18,0) (2.201408811e-06,0) (0.0003158153936,0) (8.549720567e-10,0) (0.0706465972,0) (1.058791184e-22,0) (2.464242287e-13,0) (6.094571757e-11,0) (1.707997469e-15,0) (4.38015457e-05,0) (8.131516294e-20,0) (2.311133296e-11,0) (9.174418953e-05,0) (8.403150672e-11,0) (0.001971316564,0) (5.29395592e-23,0) (1.266660794e-13,0) (7.775698928e-17,0) (6.88337889e-11,0) (2.410431746e-06,0) (1.356576205e-22,0) (5.576701781e-10,0) (1.468000911e-14,0) (6.062379565e-07,0) (3.176643229e-06,0) (-2.067951531e-24,0) (2.300661614e-12,0) (5.707138741e-16,0) (1.135038219e-09,0) (1.530804122e-07,0) (-1.178732373e-23,0) (3.081533289e-11,0) (8.947554122e-16,0) (2.296325301e-09,0) (3.899274721e-07,0) (6.749793798e-22,0) (8.755362874e-11,0) (1.48542241e-15,0) (8.808607626e-08,0) (2.190836451e-05,0) (-1.058791184e-22,0) (2.423577032e-09,0) (3.638364687e-14,0) (4.518853107e-06,0) (4.641490491e-06,0) (1.413638742e-27,0) (6.210057073e-11,0) (3.638362452e-11,0) (1.650294841e-19,0) (9.04762241e-12,0) (8.271806126e-24,0) (4.100520746e-10,0) (4.164857336e-15,0) (3.101457978e-07,0) (1.081074942e-06,0) (7.940933881e-23,0) (4.313670249e-09,0) (1.26775354e-14,0) (2.818838655e-06,0) (9.917835142e-07,0) -(0.1537404548,0) (0.003727007567,0) (0.00854296775,0) (0.0008283378013,0) (0.000249242271,0) (3.135135163e-06,0) (3.485164461e-06,0) (1.245370055e-07,0) (1.451806454e-06,0) (9.235094054e-06,0) (1.535303137e-06,0) (1.834495508e-07,0) (1.651277635e-06,0) (2.815830936e-10,0) (0.01983051592,0) (0.2311916741,0) (1.480857164e-06,0) (5.065308416e-11,0) (0.05191474862,0) (1.74172454e-07,0) (5.928976114e-13,0) (0.002321923377,0) (5.781125973e-06,0) (1.396714217e-11,0) (0.002995923626,0) (1.300580339e-15,0) (2.083846774e-09,0) (2.160554926e-05,0) (8.895745648e-08,0) (1.874301973e-14,0) (4.549221948e-07,0) (3.009999658e-15,0) (6.499753675e-08,0) (5.596904508e-06,0) (8.516512091e-16,0) (5.426835441e-08,0) (1.474190623e-07,0) (1.228211538e-15,0) (1.807091778e-07,0) (1.378205676e-05,0) (2.933157846e-14,0) (5.773281799e-06,0) (8.30249756e-06,0) (1.793970786e-07,0) (1.57524998e-14,0) (1.14196802e-07,0) (1.547102555e-15,0) (2.937426657e-07,0) (8.906479179e-07,0) (3.127361261e-15,0) (1.516806236e-06,0) (2.811236419e-06,0) (0,0) (1.511060808e-05,0) (5.607603461e-10,0) (0.1487858497,0) (0.02038732434,0) (1.734723476e-18,0) (9.734329973e-09,0) (0.0004046016186,0) (8.829540289e-10,0) (0.0787413867,0) (0,0) (1.175486027e-09,0) (3.16393186e-09,0) (1.818492629e-13,0) (0.0005493161406,0) (0,0) (1.11287863e-09,0) (2.242153709e-05,0) (5.137087983e-11,0) (0.001903470945,0) (-4.235164736e-22,0) (1.177409821e-09,0) (2.273659858e-09,0) (4.248625572e-15,0) (2.121979301e-05,0) (0,0) (1.746371504e-10,0) (3.101321166e-15,0) (2.618867638e-10,0) (3.3303246e-06,0) (-6.6174449e-24,0) (4.476698989e-11,0) (7.989091628e-15,0) (1.282889475e-07,0) (2.814187778e-07,0) (1.654361225e-24,0) (2.426502395e-12,0) (1.278136264e-16,0) (7.949778252e-10,0) (1.110717381e-07,0) (2.436173229e-11,0) (0,0) (3.526056281e-16,0) (7.3810059e-07,0) (2.697616726e-05,0) (0,0) (1.877165974e-10,0) (1.913490841e-14,0) (2.115184742e-06,0) (1.181201865e-06,0) (-1.654361225e-24,0) (6.907330169e-11,0) (1.047719175e-07,0) (7.596810143e-15,0) (7.557011361e-09,0) (1.895051636e-10,0) (0,0) (6.491569902e-15,0) (1.28432286e-06,0) (1.324891707e-06,0) (0,0) (9.739590345e-10,0) (2.829120299e-14,0) (3.141117806e-06,0) (2.187995244e-07,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.002296938444,0) (0.0004656769935,0) (-3.404442288e-05,0) (8.60557369e-05,0) (-2.195463111e-05,0) (1.021437952e-06,0) (1.052245556e-06,0) (3.19721922e-07,0) (-3.631499723e-07,0) (-8.080661741e-07,0) (1.730221396e-07,0) (-2.294551817e-08,0) (-1.671873287e-07,0) (0.008189657419,0) (5.041046806e-06,0) (-0.008342968697,0) (0.0002452856292,0) (-2.067629571e-07,0) (0.002505844645,0) (-1.362524288e-05,0) (1.28943057e-08,0) (-0.0003814274264,0) (-3.297204231e-05,0) (-4.172364306e-08,0) (0.0001791736462,0) (1.381913284e-10,0) (1.079257912e-07,0) (-3.267927222e-05,0) (-3.366221799e-11,0) (2.800914463e-07,0) (2.957483131e-08,0) (-4.691192177e-11,0) (6.280388515e-07,0) (3.585047097e-06,0) (-8.962099782e-07,0) (-4.954574338e-11,0) (9.752156065e-07,0) (3.109204061e-11,0) (3.176698282e-07,0) (-2.771203269e-06,0) (-2.22648192e-12,0) (1.653561186e-06,0) (-1.853786177e-06,0) (-4.89836296e-10,0) (1.10502967e-06,0) (-9.167977887e-07,0) (3.191879817e-11,0) (5.061688212e-07,0) (-6.78714229e-07,0) (3.355563738e-11,0) (7.856396421e-07,0) (-1.190808539e-06,0) (0,0) (-0.0009274664534,0) (-0.0002742614059,0) (4.438674186e-06,0) (-0.001474755946,0) (-8.67361738e-19,0) (-1.006015126e-05,0) (-0.002941831249,0) (-2.930994065e-06,0) (0.005259890253,0) (1.376428539e-21,0) (5.998322676e-10,0) (6.199376993e-08,0) (-1.995271809e-10,0) (6.084148142e-05,0) (5.421010862e-20,0) (-7.446672951e-11,0) (-0.0003970796515,0) (2.33129964e-07,0) (0.0003677132413,0) (5.29395592e-23,0) (4.113038732e-10,0) (-1.578850801e-11,0) (2.295141761e-08,0) (6.300650718e-06,0) (-3.176373552e-22,0) (4.941788939e-08,0) (-4.216631935e-10,0) (-3.616195343e-06,0) (5.091702812e-06,0) (3.97046694e-23,0) (-3.504778343e-09,0) (-1.048420309e-10,0) (2.359753035e-07,0) (2.499492298e-07,0) (-1.522012327e-22,0) (9.88648561e-09,0) (-1.014613753e-10,0) (-2.52638343e-07,0) (8.108630087e-07,0) (1.058791184e-22,0) (-3.46259369e-09,0) (2.113178083e-11,0) (2.345799347e-07,0) (-3.336664573e-06,0) (9.264422861e-23,0) (-3.308381734e-08,0) (-2.028902496e-10,0) (2.843321806e-06,0) (-2.094078847e-06,0) (6.203854594e-25,0) (-5.632286098e-11,0) (7.855457093e-09,0) (7.109805969e-13,0) (-7.829784988e-09,0) (-1.389663429e-22,0) (-1.617807133e-08,0) (8.400741329e-11,0) (9.173899183e-07,0) (-1.236998982e-06,0) (0,0) (-4.115909576e-08,0) (1.129540535e-10,0) (1.15856545e-06,0) (-1.384583023e-06,0) -(-0.05751293495,0) (-0.01742314575,0) (0.002807441229,0) (-0.002741260601,0) (0.0006877098011,0) (-6.313790157e-05,0) (-3.703790973e-05,0) (-1.993765262e-06,0) (1.779141841e-05,0) (1.117127821e-05,0) (-3.925466161e-06,0) (1.105928494e-06,0) (4.760820116e-06,0) (2.356370425e-06,0) (0.002086629187,0) (0.008695215087,0) (-6.2979561e-06,0) (3.741398894e-07,0) (-0.07442571239,0) (3.937534685e-07,0) (-7.848018285e-09,0) (0.008950218454,0) (-7.896863725e-06,0) (5.968412251e-08,0) (-0.002792952986,0) (-8.133735556e-11,0) (5.197317153e-08,0) (0.0004693188178,0) (-7.459501429e-07,0) (-3.500108653e-10,0) (-4.093285999e-06,0) (1.032339543e-10,0) (-9.466882665e-07,0) (-8.422440694e-05,0) (6.995807459e-11,0) (-1.632739084e-06,0) (-4.319618027e-06,0) (-2.136820204e-11,0) (9.874220973e-07,0) (7.401138147e-05,0) (1.010201071e-10,0) (-5.466525505e-06,0) (-8.034065257e-06,0) (-6.503235901e-07,0) (-1.341657236e-10,0) (-4.441394808e-07,0) (-3.383529974e-11,0) (1.834727903e-06,0) (5.4567997e-06,0) (-3.617647595e-11,0) (2.98183865e-06,0) (5.407168305e-06,0) (6.505213035e-19,0) (-3.801065212e-06,0) (-4.420846394e-06,0) (0.06307890282,0) (0.006834856211,0) (-1.734723476e-18,0) (1.2360615e-07,0) (-0.0004147197189,0) (3.245439041e-06,0) (-0.05323530859,0) (-1.084202172e-19,0) (-7.133332631e-09,0) (1.11168147e-08,0) (5.132952515e-09,0) (-0.005614192732,0) (0,0) (3.611864086e-10,0) (1.48279327e-05,0) (-1.809388448e-07,0) (0.00192530132,0) (-1.355252716e-20,0) (-1.462622461e-08,0) (-4.015748519e-08,0) (3.138645067e-10,0) (-0.0004375922108,0) (8.470329473e-22,0) (-2.062581006e-09,0) (1.526916853e-10,0) (-7.487547447e-09,0) (-6.5275208e-05,0) (0,0) (9.665570157e-10,0) (-4.759094266e-10,0) (4.428858264e-06,0) (1.003236761e-05,0) (0,0) (1.297693598e-10,0) (-3.054149145e-11,0) (7.432534774e-08,0) (9.720891838e-06,0) (2.414566489e-11,0) (8.470329473e-22,0) (-3.039500918e-12,0) (1.39543781e-06,0) (5.069545599e-05,0) (0,0) (-4.776269042e-10,0) (1.818254864e-10,0) (-9.70477885e-06,0) (-5.529115333e-06,0) (0,0) (-4.190493315e-10,0) (-1.078377038e-06,0) (-1.525802291e-10,0) (-6.801392399e-08,0) (5.154379602e-10,0) (2.117582368e-22,0) (-9.02140094e-11,0) (5.837397148e-06,0) (5.909045808e-06,0) (2.64697796e-23,0) (2.987041801e-10,0) (-1.60387982e-10,0) (3.118621718e-06,0) (1.889669192e-07,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.05227305888,0) (-0.01059774195,0) (0.0007747731012,0) (-0.0019584315,0) (0.0004996371268,0) (-2.324558865e-05,0) (-2.394669917e-05,0) (-7.276138765e-06,0) (8.264461737e-06,0) (1.838973561e-05,0) (-3.937587669e-06,0) (5.221874471e-07,0) (3.804800733e-06,0) (0.003294115467,0) (-5.03865326e-06,0) (8.521411615e-05,0) (8.201923211e-05,0) (2.067578889e-07,0) (-0.06268694534,0) (-4.461298473e-06,0) (-1.290932257e-08,0) (0.008994674824,0) (-1.566384246e-05,0) (4.177343488e-08,0) (-0.003310642092,0) (-1.39836719e-10,0) (4.550215342e-08,0) (0.0007412007475,0) (3.371897556e-11,0) (-2.135755559e-07,0) (-6.832987415e-06,0) (4.698765009e-11,0) (-6.359455323e-07,0) (-9.524322186e-05,0) (-1.168207208e-06,0) (4.963625375e-11,0) (-6.28702053e-07,0) (-3.114294568e-11,0) (4.478956051e-07,0) (5.538823034e-05,0) (2.230680666e-12,0) (1.774135912e-06,0) (2.782574797e-06,0) (4.907366656e-10,0) (-1.097731374e-06,0) (-3.17533837e-06,0) (-3.19703626e-11,0) (1.108827398e-06,0) (2.817216516e-06,0) (-3.361210006e-11,0) (1.86095787e-06,0) (7.359028335e-06,0) (-4.33680869e-19,0) (-0.0002852827998,0) (-0.0001093982521,0) (-4.438290702e-06,0) (0.0612087474,0) (-1.084202172e-18,0) (-5.672657459e-06,0) (-0.001412428299,0) (2.934551322e-06,0) (-0.05104289932,0) (5.844527336e-20,0) (2.315741605e-10,0) (2.280737082e-08,0) (1.99657454e-10,0) (-0.001386055972,0) (2.032879073e-20,0) (-2.218079147e-11,0) (-0.0001285817751,0) (-2.334044471e-07,0) (0.000791823636,0) (2.435219723e-21,0) (1.565366177e-10,0) (1.581342029e-11,0) (4.980086481e-09,0) (-0.0001439248567,0) (-5.558653716e-22,0) (1.452916396e-08,0) (4.223110462e-10,0) (-7.100395277e-06,0) (-2.760876911e-05,0) (-2.415367389e-22,0) (-1.566034151e-09,0) (1.050286112e-10,0) (1.196885357e-08,0) (-1.098689074e-05,0) (3.441071348e-22,0) (2.91435589e-09,0) (1.016381852e-10,0) (-1.778376473e-07,0) (-1.275177812e-05,0) (-2.64697796e-22,0) (-1.096373539e-09,0) (-2.116571378e-11,0) (3.816288677e-07,0) (7.029415091e-05,0) (2.067951531e-22,0) (-1.759502375e-08,0) (2.032173328e-10,0) (-7.041690834e-06,0) (-9.234442056e-06,0) (2.714186385e-25,0) (3.778730592e-10,0) (3.371220318e-09,0) (-7.123309402e-13,0) (-3.067020323e-09,0) (9.264422861e-23,0) (-4.169374205e-09,0) (-8.414027643e-11,0) (2.098761966e-06,0) (5.54532595e-06,0) (-9.926167351e-23,0) (-9.442255645e-09,0) (-1.131400601e-10,0) (5.032227385e-06,0) (1.055086583e-06,0) -(-0.01870392239,0) (-0.005666223889,0) (0.0009130148356,0) (-0.0008914920716,0) (0.0002236517882,0) (-2.053323155e-05,0) (-1.204518931e-05,0) (-6.483972824e-07,0) (5.785990742e-06,0) (3.633038737e-06,0) (-1.276610461e-06,0) (3.596617133e-07,0) (1.548277966e-06,0) (-2.360738584e-06,0) (0.03012600167,0) (-0.02661648463,0) (-0.0001013170272,0) (-3.750412402e-07,0) (-0.02410440258,0) (-6.473083976e-06,0) (7.86788762e-09,0) (0.002917313174,0) (-6.209909928e-05,0) (-5.982724624e-08,0) (-0.0008486929007,0) (8.153315783e-11,0) (1.767015122e-07,0) (0.0001524684146,0) (8.386966911e-07,0) (3.506062313e-10,0) (-2.412940959e-06,0) (-1.03489508e-10,0) (4.325370202e-07,0) (-2.813110036e-05,0) (-7.01336135e-11,0) (-1.272009523e-06,0) (-6.63678222e-07,0) (2.141801211e-11,0) (7.20810683e-07,0) (2.366970548e-05,0) (-1.012439589e-10,0) (-8.825188043e-08,0) (-4.302174199e-06,0) (2.262857906e-07,0) (1.343906619e-10,0) (-5.823968285e-07,0) (3.391481584e-11,0) (1.224153722e-06,0) (1.147096904e-06,0) (3.625524393e-11,0) (1.96618936e-06,0) (7.619721113e-07,0) (1.734723476e-18,0) (-0.0002399783128,0) (4.429670749e-06,0) (0.05862781591,0) (-0.03565811638,0) (0,0) (3.134980355e-06,0) (-0.003476641184,0) (-3.253025745e-06,0) (-0.01396980218,0) (-2.710505431e-20,0) (1.136629777e-07,0) (1.037074105e-06,0) (-5.146353529e-09,0) (-0.00182694799,0) (2.710505431e-20,0) (-1.794104248e-08,0) (-0.0001795896175,0) (1.81405844e-07,0) (0.0008103216112,0) (3.388131789e-21,0) (2.246534061e-07,0) (1.460111013e-07,0) (-3.147057971e-10,0) (-0.0001426984983,0) (0,0) (3.165906529e-08,0) (-1.530328056e-10,0) (-5.880359132e-08,0) (-2.120406882e-05,0) (5.29395592e-23,0) (-1.426401455e-08,0) (4.771886505e-10,0) (-9.224878544e-07,0) (5.639404919e-06,0) (0,0) (-1.923071812e-09,0) (3.061682836e-11,0) (1.365337013e-07,0) (3.050917587e-06,0) (-5.065341759e-10,0) (4.235164736e-22,0) (3.046264775e-12,0) (6.475738678e-07,0) (1.629354359e-05,0) (0,0) (9.109682087e-09,0) (-1.822953378e-10,0) (-1.485812014e-06,0) (-3.477463597e-06,0) (0,0) (6.655951109e-09,0) (-5.74589738e-07,0) (1.527580882e-10,0) (1.947745163e-07,0) (-7.857037501e-09,0) (2.117582368e-22,0) (9.043149751e-11,0) (3.224418723e-06,0) (6.035756443e-07,0) (-1.058791184e-22,0) (-1.558553604e-08,0) (1.607444256e-10,0) (1.658167214e-06,0) (-5.670284416e-07,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.0411321873,0) (-0.008339062533,0) (0.0006096469769,0) (-0.001541034196,0) (0.0003931502828,0) (-1.829129434e-05,0) (-1.884297833e-05,0) (-5.725387206e-06,0) (6.503070519e-06,0) (1.447036132e-05,0) (-3.098376047e-06,0) (4.108944902e-07,0) (2.993889774e-06,0) (-0.003692931319,0) (6.684943117e-06,0) (0.006341380197,0) (-0.0001230406465,0) (-2.74369599e-07,0) (-0.04913856285,0) (6.893948142e-06,0) (1.71308782e-08,0) (0.007067222778,0) (1.30112031e-05,0) (-5.544016143e-08,0) (-0.002630298682,0) (1.854554824e-10,0) (-4.611068783e-08,0) (0.0005833114635,0) (-4.475959074e-11,0) (-3.716938248e-07,0) (-5.172975408e-06,0) (-6.23653338e-11,0) (-9.518968852e-07,0) (-7.449260097e-05,0) (-2.062491615e-07,0) (-6.585442473e-11,0) (-1.207582855e-06,0) (4.133017006e-11,0) (9.861243906e-08,0) (4.383718543e-05,0) (-2.959197357e-12,0) (9.323612458e-08,0) (3.492314996e-06,0) (-6.522504806e-10,0) (-1.657548191e-06,0) (-1.703770788e-06,0) (4.242558686e-11,0) (4.549582158e-07,0) (2.634266796e-06,0) (4.460116865e-11,0) (8.116553402e-07,0) (6.443219229e-06,0) (-3.035766083e-18,0) (0.0004829576041,0) (0.0001242870854,0) (5.888692216e-06,0) (0.04723623807,0) (-1.138412281e-18,0) (3.294780257e-06,0) (0.001149751687,0) (-3.89436725e-06,0) (-0.04242691604,0) (-1.694065895e-20,0) (-2.768655948e-10,0) (-2.949608241e-08,0) (-2.64989249e-10,0) (-0.001090599805,0) (3.726944968e-20,0) (3.933175976e-11,0) (0.0002019770285,0) (3.09697559e-07,0) (0.0003194157652,0) (-2.541098842e-21,0) (-1.91547415e-10,0) (-2.098780888e-11,0) (-1.35141104e-08,0) (-0.0001132326063,0) (5.823351512e-22,0) (-2.624027897e-08,0) (-5.605204444e-10,0) (-2.631350537e-06,0) (-2.46417407e-05,0) (2.514629062e-22,0) (1.457134286e-09,0) (-1.394145316e-10,0) (-1.684666273e-07,0) (-8.469855444e-06,0) (2.117582368e-22,0) (-5.243764032e-09,0) (-1.348940671e-10,0) (5.599469354e-08,0) (-1.022219073e-05,0) (1.694065895e-21,0) (1.779518342e-09,0) (2.808845119e-11,0) (1.111762798e-07,0) (5.549890313e-05,0) (-2.249931266e-22,0) (1.163451117e-08,0) (-2.697230875e-10,0) (-7.446974375e-06,0) (-5.385302829e-06,0) (-1.550963649e-25,0) (3.272970404e-10,0) (-3.370708344e-09,0) (9.449748969e-13,0) (3.578609755e-09,0) (6.948317145e-23,0) (9.0329589e-09,0) (1.116684355e-10,0) (8.917771118e-07,0) (5.110647247e-06,0) (5.128519798e-23,0) (2.385951371e-08,0) (1.501339326e-10,0) (2.921382097e-06,0) (1.83702408e-06,0) -(0.02917389264,0) (0.008838028944,0) (-0.001424096841,0) (0.001390526193,0) (-0.0003488462539,0) (3.20272016e-05,0) (1.878777362e-05,0) (1.011353251e-06,0) (-9.024838172e-06,0) (-5.66671952e-06,0) (1.99122386e-06,0) (-5.609910046e-07,0) (-2.414963783e-06,0) (3.131764434e-06,0) (0.02113859613,0) (-0.02661209925,0) (-7.166687639e-05,0) (4.97322524e-07,0) (0.03782720766,0) (-5.177796953e-06,0) (-1.043334764e-08,0) (-0.004535076858,0) (-4.088571921e-05,0) (7.933896824e-08,0) (0.001461529417,0) (-1.081506332e-10,0) (9.410884509e-08,0) (-0.0002381860178,0) (1.194202806e-06,0) (-4.647773923e-10,0) (1.261180451e-06,0) (1.372863619e-10,0) (1.038364612e-06,0) (4.216515965e-05,0) (9.30177865e-11,0) (2.694383648e-07,0) (2.749813509e-06,0) (-2.841116772e-11,0) (-1.995626923e-07,0) (-3.784413631e-05,0) (1.343156087e-10,0) (4.046369427e-06,0) (2.801726811e-06,0) (6.603081789e-07,0) (-1.781739592e-10,0) (-1.048868705e-07,0) (-4.49845343e-11,0) (-4.575800789e-07,0) (-3.241043012e-06,0) (-4.809009413e-11,0) (-7.612857105e-07,0) (-3.494038197e-06,0) (0,0) (-0.0001781248725,0) (-5.875863018e-06,0) (-0.00325358254,0) (-0.03202255516,0) (-4.33680869e-19,0) (2.27129912e-06,0) (-0.002309571161,0) (4.314038673e-06,0) (0.02951567944,0) (-5.421010862e-20,0) (9.109152453e-08,0) (7.736946357e-07,0) (6.824590353e-09,0) (0.002846967579,0) (0,0) (-1.380258363e-08,0) (-0.00014659622,0) (-2.405362853e-07,0) (-0.000837203801,0) (0,0) (1.804379704e-07,0) (1.404322281e-07,0) (4.172190712e-10,0) (0.0002216784642,0) (-8.470329473e-22,0) (2.542909593e-08,0) (2.030650731e-10,0) (-3.866749846e-08,0) (3.31291695e-05,0) (0,0) (-1.148514282e-08,0) (-6.330232694e-10,0) (-4.027290359e-06,0) (-3.296411943e-06,0) (0,0) (-1.548017159e-09,0) (-4.061005464e-11,0) (4.700979461e-08,0) (-5.014173148e-06,0) (-4.001910504e-10,0) (0,0) (-4.040786575e-12,0) (-5.617850981e-07,0) (-2.586134062e-05,0) (1.058791184e-22,0) (7.229839581e-09,0) (2.418124915e-10,0) (6.181658491e-06,0) (1.538533616e-06,0) (-2.64697796e-23,0) (5.335196032e-09,0) (3.786615396e-07,0) (-2.026498209e-10,0) (1.980117903e-07,0) (-6.313576244e-09,0) (-2.117582368e-22,0) (-1.199476441e-10,0) (-1.961240248e-06,0) (-3.991018329e-06,0) (-2.117582368e-22,0) (-1.197908084e-08,0) (-2.132048396e-10,0) (-1.09602752e-06,0) (-5.6965094e-07,0) -(0.2731656004,0) (0.01615280688,0) (-0.02892567571,0) (-0.00681892694,0) (0.00311081643,0) (-0.0001242414384,0) (9.142358452e-06,0) (0.0001499983368,0) (-0.0001504484689,0) (9.162783375e-05,0) (-7.145343949e-05,0) (6.119624794e-05,0) (-3.277313972e-05,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.2695462447,0) (0.02324389201,0) (-0.03424272561,0) (-0.004333899483,0) (0.002291534039,0) (4.332848919e-05,0) (0.0001066902242,0) (-2.294053818e-05,0) (1.892984583e-05,0) (-3.739677434e-05,0) (2.322309841e-05,0) (-2.861059199e-06,0) (6.880804962e-06,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.1208306479,0) (-0.009094799051,0) (-0.002843835608,0) (4.385357727e-05,0) (0.000101455379,0) (-2.497568383e-05,0) (2.882303202e-05,0) (4.591201175e-06,0) (1.25522063e-05,0) (2.574477926e-05,0) (9.479225358e-06,0) (3.178405029e-06,0) (8.85371498e-06,0) (1.738623898e-10,0) (-0.03001102387,0) (0.1997440824,0) (-0.0001221715915,0) (-1.474070406e-10,0) (-0.02386352647,0) (-3.161081699e-06,0) (8.892664166e-13,0) (-0.0003782332269,0) (5.069147332e-07,0) (1.658455888e-13,0) (1.114472307e-05,0) (-1.500172006e-14,0) (-4.573358943e-07,0) (5.007857078e-05,0) (2.271380542e-06,0) (1.920933975e-13,0) (-1.440347086e-05,0) (3.522406586e-14,0) (-3.493952407e-06,0) (4.251167502e-05,0) (1.184301307e-14,0) (8.749326325e-07,0) (-6.649639108e-06,0) (-7.916366537e-15,0) (-3.478571729e-06,0) (4.038721491e-05,0) (5.133587681e-14,0) (-1.83560613e-06,0) (3.443235877e-05,0) (6.48529231e-07,0) (4.700311397e-15,0) (3.713046695e-06,0) (-8.486490438e-15,0) (-1.351843834e-06,0) (9.719683219e-06,0) (-1.014688338e-14,0) (-1.550010209e-06,0) (1.674276403e-05,0) (-1.734723476e-18,0) (-0.000377473387,0) (-9.424696266e-12,0) (-0.008719428334,0) (0.06301289739,0) (0,0) (4.987671827e-06,0) (-0.00143187811,0) (-4.141268852e-10,0) (-0.005892254741,0) (1.694065895e-21,0) (1.859842766e-07,0) (4.229671091e-07,0) (-6.138140965e-13,0) (-6.644558929e-05,0) (0,0) (-2.859798928e-08,0) (-8.511178364e-06,0) (1.891527865e-12,0) (-1.727510638e-05,0) (0,0) (3.662671398e-07,0) (6.488075772e-07,0) (-3.437640456e-13,0) (-2.522670586e-05,0) (0,0) (5.164395866e-08,0) (2.409182199e-13,0) (-3.633301909e-07,0) (1.293020884e-05,0) (0,0) (-2.328816091e-08,0) (-6.937242073e-14,0) (4.52940866e-06,0) (-8.289612776e-06,0) (-5.29395592e-23,0) (-3.139926191e-09,0) (-5.790193031e-15,0) (-4.039157833e-07,0) (1.915478012e-06,0) (-8.160659869e-10,0) (0,0) (-1.266989765e-15,0) (-9.077704595e-06,0) (2.704664962e-05,0) (0,0) (1.483552381e-08,0) (5.416556893e-14,0) (-5.200987241e-06,0) (1.074630952e-05,0) (0,0) (1.08671901e-08,0) (-1.266292565e-07,0) (-3.289808167e-14,0) (-9.136562887e-07,0) (-1.278080324e-08,0) (-2.117582368e-22,0) (-2.091689037e-14,0) (-5.329587217e-06,0) (9.978394523e-06,0) (6.352747104e-22,0) (-2.480045938e-08,0) (-3.214682481e-14,0) (6.229744764e-07,0) (4.252964659e-06,0) -(0.2791082932,0) (0.02715806816,0) (-0.02846199811,0) (-0.008149020754,0) (0.002851320191,0) (-3.950407327e-05,0) (1.14330723e-05,0) (0.000154869012,0) (-0.0001326794655,0) (8.537678745e-05,0) (-7.412014254e-05,0) (5.873445414e-05,0) (-3.031732376e-05,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.1181203825,0) (-0.006245320651,0) (-0.002900269686,0) (3.326358174e-05,0) (0.0001138238722,0) (-8.641960382e-06,0) (3.016434396e-05,0) (1.010587839e-05,0) (7.596477619e-06,0) (2.457459582e-05,0) (1.39297899e-05,0) (4.065901073e-06,0) (7.640914772e-06,0) (-0.01035118577,0) (-1.060983429e-08,0) (0.1844993062,0) (0.0003082971776,0) (-3.414617148e-10,0) (-0.02229074989,0) (-4.695743746e-06,0) (1.512221582e-12,0) (-0.000493871054,0) (2.774482817e-07,0) (1.388386925e-13,0) (1.075209157e-05,0) (1.542408416e-12,0) (-1.658424701e-07,0) (9.590123357e-05,0) (8.91317672e-15,0) (8.216387078e-07,0) (-6.614975308e-06,0) (-5.963206816e-15,0) (-3.894922342e-06,0) (5.496461783e-05,0) (2.139238978e-08,0) (-1.443919701e-14,0) (-6.011743517e-06,0) (4.673910862e-15,0) (-1.74835413e-06,0) (3.005116424e-05,0) (-2.235709583e-16,0) (-5.566167409e-06,0) (4.421606725e-05,0) (-2.755076165e-13,0) (-8.301042594e-07,0) (1.171506491e-05,0) (5.277626819e-15,0) (-9.855585617e-07,0) (7.565601838e-06,0) (4.796833131e-15,0) (-2.467184366e-06,0) (1.707721501e-05,0) (-2.168404345e-18,0) (-0.001440066044,0) (0.0003756619176,0) (-7.980213573e-09,0) (0.06390193245,0) (-5.963111949e-19,0) (4.661129412e-05,0) (-0.001430622896,0) (-5.324722779e-10,0) (-0.006490750649,0) (3.176373552e-22,0) (-1.219047869e-09,0) (6.88256806e-08,0) (-1.492854078e-13,0) (-2.119132764e-05,0) (-2.541098842e-21,0) (3.776952075e-09,0) (-1.772438385e-05,0) (2.737719361e-12,0) (-1.263791935e-05,0) (7.940933881e-22,0) (-1.489280527e-10,0) (2.159069195e-15,0) (1.41805818e-07,0) (-9.41299573e-06,0) (-5.29395592e-22,0) (-2.66680814e-08,0) (8.251120903e-14,0) (-1.360177412e-05,0) (2.890940732e-05,0) (-3.044024654e-22,0) (-2.873311294e-09,0) (-5.553993267e-14,0) (-6.239731814e-07,0) (3.264209423e-06,0) (-6.6174449e-23,0) (8.129572964e-09,0) (-4.505795755e-14,0) (6.797582913e-07,0) (-3.897277635e-06,0) (-2.01170325e-21,0) (-5.801431416e-10,0) (1.621407408e-15,0) (-3.222079977e-06,0) (2.141123947e-05,0) (-4.764560328e-22,0) (-1.220420545e-08,0) (-3.309562665e-14,0) (-9.894086537e-06,0) (2.043898951e-05,0) (-3.101927297e-24,0) (-8.979762109e-12,0) (4.383490997e-09,0) (1.926809819e-16,0) (3.180408848e-08,0) (2.911675756e-22,0) (-7.758571774e-09,0) (1.720215898e-14,0) (-3.727686172e-06,0) (7.582318236e-06,0) (1.32348898e-22,0) (-1.614102532e-08,0) (1.910022905e-14,0) (-3.025162843e-06,0) (8.913907942e-06,0) -(0.2757309677,0) (0.033849107,0) (-0.03357642321,0) (-0.005713665996,0) (0.002042528073,0) (0.0001252214311,0) (0.000101946051,0) (-1.042211491e-05,0) (3.127914568e-05,0) (-3.917751923e-05,0) (1.580332402e-05,0) (-2.236553419e-06,0) (7.972957138e-06,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.002296938444,0) (0.0004656769935,0) (-3.404442288e-05,0) (8.60557369e-05,0) (-2.195463111e-05,0) (1.021437952e-06,0) (1.052245556e-06,0) (3.19721922e-07,0) (-3.631499723e-07,0) (-8.080661741e-07,0) (1.730221396e-07,0) (-2.294551817e-08,0) (-1.671873287e-07,0) (0.008189657419,0) (5.041046806e-06,0) (-0.008342968697,0) (0.0002452856292,0) (-2.067629571e-07,0) (0.002505844645,0) (-1.362524288e-05,0) (1.28943057e-08,0) (-0.0003814274264,0) (-3.297204231e-05,0) (-4.172364306e-08,0) (0.0001791736462,0) (1.381913284e-10,0) (1.079257912e-07,0) (-3.267927222e-05,0) (-3.366221799e-11,0) (2.800914463e-07,0) (2.957483131e-08,0) (-4.691192177e-11,0) (6.280388515e-07,0) (3.585047097e-06,0) (-8.962099782e-07,0) (-4.954574338e-11,0) (9.752156065e-07,0) (3.109204061e-11,0) (3.176698282e-07,0) (-2.771203269e-06,0) (-2.22648192e-12,0) (1.653561186e-06,0) (-1.853786177e-06,0) (-4.89836296e-10,0) (1.10502967e-06,0) (-9.167977887e-07,0) (3.191879817e-11,0) (5.061688212e-07,0) (-6.78714229e-07,0) (3.355563738e-11,0) (7.856396421e-07,0) (-1.190808539e-06,0) (6.505213035e-19,0) (-0.0009274664534,0) (-0.0002742614059,0) (4.438674186e-06,0) (-0.001474755946,0) (-1.084202172e-19,0) (-1.006015126e-05,0) (-0.002941831249,0) (-2.930994065e-06,0) (0.005259890253,0) (1.799945013e-21,0) (5.998322676e-10,0) (6.199376993e-08,0) (-1.995271809e-10,0) (6.084148142e-05,0) (5.082197684e-20,0) (-7.44667295e-11,0) (-0.0003970796515,0) (2.33129964e-07,0) (0.0003677132413,0) (1.98523347e-23,0) (4.113038732e-10,0) (-1.578850801e-11,0) (2.295141761e-08,0) (6.300650718e-06,0) (-1.588186776e-22,0) (4.941788939e-08,0) (-4.216631935e-10,0) (-3.616195343e-06,0) (5.091702812e-06,0) (5.95570041e-23,0) (-3.504778343e-09,0) (-1.048420309e-10,0) (2.359753035e-07,0) (2.499492298e-07,0) (-1.058791184e-22,0) (9.88648561e-09,0) (-1.014613753e-10,0) (-2.52638343e-07,0) (8.108630087e-07,0) (1.32348898e-22,0) (-3.46259369e-09,0) (2.113178083e-11,0) (2.345799347e-07,0) (-3.336664573e-06,0) (5.29395592e-23,0) (-3.308381734e-08,0) (-2.028902496e-10,0) (2.843321806e-06,0) (-2.094078847e-06,0) (3.101927297e-25,0) (-5.632286098e-11,0) (7.855457093e-09,0) (7.109805969e-13,0) (-7.829784988e-09,0) (-5.95570041e-23,0) (-1.617807133e-08,0) (8.400741329e-11,0) (9.173899183e-07,0) (-1.236998982e-06,0) (5.29395592e-23,0) (-4.115909576e-08,0) (1.129540535e-10,0) (1.15856545e-06,0) (-1.384583023e-06,0) -(-0.05751293495,0) (-0.01742314575,0) (0.002807441229,0) (-0.002741260601,0) (0.0006877098011,0) (-6.313790157e-05,0) (-3.703790973e-05,0) (-1.993765262e-06,0) (1.779141841e-05,0) (1.117127821e-05,0) (-3.925466161e-06,0) (1.105928494e-06,0) (4.760820116e-06,0) (2.356370425e-06,0) (0.002086629187,0) (0.008695215087,0) (-6.2979561e-06,0) (3.741398894e-07,0) (-0.07442571239,0) (3.937534685e-07,0) (-7.848018285e-09,0) (0.008950218454,0) (-7.896863725e-06,0) (5.968412251e-08,0) (-0.002792952986,0) (-8.133735556e-11,0) (5.197317153e-08,0) (0.0004693188178,0) (-7.459501429e-07,0) (-3.500108653e-10,0) (-4.093285999e-06,0) (1.032339543e-10,0) (-9.466882665e-07,0) (-8.422440694e-05,0) (6.995807459e-11,0) (-1.632739084e-06,0) (-4.319618027e-06,0) (-2.136820204e-11,0) (9.874220973e-07,0) (7.401138147e-05,0) (1.010201071e-10,0) (-5.466525505e-06,0) (-8.034065257e-06,0) (-6.503235901e-07,0) (-1.341657236e-10,0) (-4.441394808e-07,0) (-3.383529974e-11,0) (1.834727903e-06,0) (5.4567997e-06,0) (-3.617647595e-11,0) (2.98183865e-06,0) (5.407168305e-06,0) (0,0) (-3.801065212e-06,0) (-4.420846394e-06,0) (0.06307890282,0) (0.006834856211,0) (-1.734723476e-18,0) (1.2360615e-07,0) (-0.0004147197189,0) (3.245439041e-06,0) (-0.05323530859,0) (-1.084202172e-19,0) (-7.133332631e-09,0) (1.11168147e-08,0) (5.132952515e-09,0) (-0.005614192732,0) (-1.355252716e-20,0) (3.611864086e-10,0) (1.48279327e-05,0) (-1.809388448e-07,0) (0.00192530132,0) (-6.776263578e-21,0) (-1.462622461e-08,0) (-4.015748519e-08,0) (3.138645067e-10,0) (-0.0004375922108,0) (8.470329473e-22,0) (-2.062581006e-09,0) (1.526916853e-10,0) (-7.487547447e-09,0) (-6.5275208e-05,0) (-4.235164736e-22,0) (9.665570157e-10,0) (-4.759094266e-10,0) (4.428858264e-06,0) (1.003236761e-05,0) (2.117582368e-22,0) (1.297693598e-10,0) (-3.054149145e-11,0) (7.432534774e-08,0) (9.720891838e-06,0) (2.414566489e-11,0) (8.470329473e-22,0) (-3.039500918e-12,0) (1.39543781e-06,0) (5.069545599e-05,0) (0,0) (-4.776269042e-10,0) (1.818254864e-10,0) (-9.70477885e-06,0) (-5.529115333e-06,0) (0,0) (-4.190493315e-10,0) (-1.078377038e-06,0) (-1.525802291e-10,0) (-6.801392399e-08,0) (5.154379602e-10,0) (2.117582368e-22,0) (-9.02140094e-11,0) (5.837397148e-06,0) (5.909045808e-06,0) (2.64697796e-23,0) (2.987041801e-10,0) (-1.60387982e-10,0) (3.118621718e-06,0) (1.889669192e-07,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0.04586770644,0) (0.1295753448,0) (0.0004442131108,0) (0.1967622424,0) (0.0001704511524,0) (0.07116101842,0) (0.01342434892,0) (0.1479153603,0) (0.05829558339,0) (0.002881188799,0) (0.0986772665,0) (0.03669568318,0) (0.0583789555,0) (0.004863627082,0) (0.02285094543,0) (0.01871025158,0) (0.01720002272,0) (0.0129751607,0) (0.01950909261,0) (0.002216861756,0) (0.007850079801,0) (0.0006684007036,0) (0.01106999276,0) (0.004241350104,0) (0.006378882393,0) (0.0004382569924,0) (0.00246318523,0) (0.0002443597394,0) (0.003066181956,0) (0.001196173181,0) (0.001717101805,0) (2.637892713e-05,0) (0.0006299645073,0) (1.244860412e-05,0) (0.0006474759855,0) (0.0002384489065,0) (0.000314514928,0) (9.546434388e-07,0) (0.0001139889123,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(3.590997234e-05,0) (0.0001233917216,0) (1.30441383e-07,0) (1.553904071e-05,0) (1.536434435e-06,0) (2.779572112e-06,0) (2.900697787e-07,0) (1.694146338e-07,0) (2.480155548e-07,0) (7.759935467e-08,0) (9.02954327e-09,0) (1.753815685e-09,0) (2.272725483e-08,0) (0.05134867755,0) (0.01875202135,0) (0.000278013623,0) (0.005748536394,0) (0.00207432931,0) (0.0001512337715,0) (0.0004583230146,0) (0.0001648728595,0) (3.850112287e-05,0) (0.0005754261716,0) (0.0002097466075,0) (1.254127337e-05,0) (1.450462071e-05,0) (4.081696167e-05,0) (1.394154879e-05,0) (4.99941714e-06,0) (1.463681797e-05,0) (7.757214435e-09,0) (1.511410508e-06,0) (4.698023398e-06,0) (1.404013897e-06,0) (8.766678713e-06,0) (6.146623103e-06,0) (8.264078866e-06,0) (9.044095585e-07,0) (2.283550353e-06,0) (9.876553109e-07,0) (3.043249266e-07,0) (6.038139103e-07,0) (2.400053708e-07,0) (9.769650476e-07,0) (1.981749796e-06,0) (7.468840143e-07,0) (8.787060028e-07,0) (1.618326537e-06,0) (8.543525323e-07,0) (5.00506041e-07,0) (9.817712635e-07,0) (4.454731505e-07,0) (3.469446952e-18,0) (0.003515743553,0) (0.09234509611,0) (0.03477975199,0) (1.223510922e-05,0) (4.33680869e-19,0) (4.597357965e-05,0) (0.02740325923,0) (0.01004796136,0) (0.0003916175239,0) (1.694065895e-21,0) (1.460078625e-06,0) (6.30598451e-05,0) (2.330863833e-05,0) (8.451039346e-05,0) (2.710505431e-20,0) (2.399382941e-10,0) (0.001718607472,0) (0.0006467762177,0) (6.859021545e-05,0) (1.482307658e-21,0) (1.335565741e-06,0) (3.205846614e-06,0) (7.65274698e-06,0) (1.646933149e-05,0) (-8.470329473e-22,0) (4.379161533e-06,0) (1.211169872e-05,0) (2.157052131e-05,0) (8.161268252e-06,0) (0,0) (5.33910383e-06,0) (1.925982866e-05,0) (4.905944391e-05,0) (4.081163393e-07,0) (-8.470329473e-22,0) (3.171881935e-06,0) (1.1505279e-05,0) (2.779490012e-05,0) (1.68620799e-06,0) (1.32348898e-23,0) (1.369395562e-07,0) (3.006229585e-07,0) (6.24704245e-07,0) (5.081771609e-07,0) (0,0) (4.516212835e-07,0) (1.131399868e-06,0) (1.789055475e-06,0) (9.447754395e-07,0) (2.117582368e-22,0) (5.10826975e-11,0) (1.696043397e-06,0) (3.063049089e-06,0) (6.775872177e-06,0) (1.058791184e-22,0) (6.382847646e-07,0) (1.694474736e-06,0) (2.713576222e-06,0) (1.415412032e-06,0) (1.058791184e-22,0) (3.927215262e-07,0) (1.006395786e-06,0) (4.761797554e-07,0) (1.932952223e-06,0) -(0.02151507676,0) (0.08145033313,0) (0.0009225981511,0) (0.009071793741,0) (0.001897530337,0) (0.001271522409,0) (0.000393613206,0) (3.191902604e-05,0) (0.0002180280768,0) (1.351339316e-05,0) (1.003663981e-05,0) (6.66710727e-06,0) (1.372598266e-05,0) (0.01971880285,0) (0.0002195616787,0) (0.0003270306584,0) (2.678465689e-05,0) (0.002763516793,0) (0.106697746,0) (8.901625396e-07,0) (0.0001038820182,0) (0.0345000232,0) (1.0786905e-05,0) (0.0002550410404,0) (0.002603733392,0) (5.086780754e-06,0) (1.296261603e-06,0) (0.01019461019,0) (6.255143051e-06,0) (6.536172276e-06,0) (3.683045246e-05,0) (3.540615072e-06,0) (1.378850213e-05,0) (0.0012674418,0) (5.746639196e-06,0) (4.91232311e-05,0) (0.000126571826,0) (3.717599159e-07,0) (5.395422689e-06,0) (0.0003974504446,0) (3.479206662e-07,0) (5.176068333e-06,0) (7.774311777e-06,0) (2.357456293e-06,0) (1.1427038e-06,0) (1.727367798e-06,0) (7.399816442e-07,0) (1.145978052e-05,0) (3.343258584e-05,0) (4.18479744e-07,0) (5.861896876e-06,0) (1.04002171e-05,0) (-5.421010862e-20,0) (9.561558787e-07,0) (0.03485246954,0) (0.02674278495,0) (0.002291387465,0) (0,0) (1.569546168e-06,0) (0.0004250908481,0) (0.01192913133,0) (0.03599121376,0) (-8.67361738e-19,0) (4.328799598e-08,0) (3.906012346e-08,0) (0.0001448848612,0) (0.05737890751,0) (0,0) (1.172235841e-10,0) (9.806088991e-06,0) (0.0006373039673,0) (0.001947382062,0) (0,0) (1.816924258e-07,0) (7.09263354e-07,0) (2.318653812e-05,0) (0.009023977889,0) (0,0) (2.436045478e-08,0) (7.517683295e-06,0) (2.140748389e-07,0) (0.001279410655,0) (0,0) (2.086878003e-08,0) (2.83498791e-05,0) (0.0001528953655,0) (0.0003576463545,0) (0,0) (6.94006599e-09,0) (7.29799041e-06,0) (6.948945167e-06,0) (0.0008507631173,0) (2.393151383e-11,0) (0,0) (2.620125233e-08,0) (2.63818605e-06,0) (9.527036339e-05,0) (0,0) (1.215275915e-09,0) (1.727758853e-06,0) (4.452695345e-05,0) (2.58813648e-05,0) (0,0) (2.542260728e-09,0) (1.109931996e-05,0) (3.064539702e-06,0) (6.121327117e-07,0) (1.401947502e-09,0) (0,0) (1.253713298e-06,0) (2.653165066e-05,0) (2.635447273e-05,0) (-2.64697796e-23,0) (9.160979474e-11,0) (9.092686847e-07,0) (3.096286743e-06,0) (1.632018929e-07,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (-0.04650791085,0) (0.05339342277,0) (-0.006885511921,0) (0.06582968803,0) (0.005456254699,0) (-0.07128594273,0) (-0.03665265658,0) (0.0950451253,0) (-0.05839246872,0) (-0.01466480269,0) (0.05142104472,0) (-0.03675624203,0) (0.005432133241,0) (0.01745725437,0) (-0.02288938761,0) (-0.009939728979,0) (0.02293658634,0) (-0.01299685736,0) (0.0009346548029,0) (0.006928611436,0) (-0.007863266239,0) (-0.002292082329,0) (0.006540467226,0) (-0.004248384897,0) (0.0007511567492,0) (0.001716174845,0) (-0.002467331594,0) (-0.0007179158406,0) (0.001916075511,0) (-0.00119815967,0) (0.0004232273626,0) (0.0002078052141,0) (-0.0006310325767,0) (-7.912951479e-05,0) (0.0003179706291,0) (-0.0002388411143,0) (9.769891917e-05,0) (1.648674933e-05,0) (-0.0001141856685,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.0008172287347,0) (-0.00280811301,0) (-2.968547159e-06,0) (-0.0003536329813,0) (-3.496572923e-05,0) (-6.325669591e-05,0) (-6.601323888e-06,0) (-3.855489098e-06,0) (-5.64426606e-06,0) (-1.765983606e-06,0) (-2.054917267e-07,0) (-3.991282865e-08,0) (-5.172202734e-07,0) (0.02065391313,0) (-0.01874311768,0) (-2.839598951e-06,0) (0.001922210209,0) (-0.002074278464,0) (-0.00378330843,0) (0.0001500682067,0) (-0.0001650648726,0) (-0.0009079186671,0) (0.0002733644709,0) (-0.0002099969132,0) (-0.000231728652,0) (-1.467732161e-05,0) (1.720867302e-05,0) (-0.0003162091956,0) (-5.007846613e-06,0) (-1.116087826e-05,0) (-1.792231646e-06,0) (-1.513850326e-06,0) (-4.757169056e-06,0) (-3.730015351e-05,0) (1.142734126e-05,0) (-6.157851779e-06,0) (-5.327686836e-06,0) (-9.058902923e-07,0) (3.219670478e-06,0) (-1.974033463e-05,0) (-3.048988288e-07,0) (6.478429413e-07,0) (-3.602534663e-07,0) (-9.787608102e-07,0) (-1.968661101e-06,0) (2.586840302e-06,0) (-8.801255416e-07,0) (3.545150804e-06,0) (-3.546258443e-06,0) (-5.013482219e-07,0) (2.325538149e-06,0) (-2.752961059e-06,0) (-8.67361738e-19,0) (0.001081420423,0) (0.03683490234,0) (-0.03477674716,0) (-0.0005078099275,0) (-3.794707604e-19,0) (2.592330502e-05,0) (0.01315681817,0) (-0.01006015626,0) (-0.00380032527,0) (-8.809142651e-20,0) (5.636850501e-07,0) (2.319957752e-05,0) (-2.332385676e-05,0) (-0.001925267643,0) (1.355252716e-20,0) (7.146844379e-11,0) (0.0005565170578,0) (-0.0006475377206,0) (0.0001477002938,0) (-1.694065895e-21,0) (5.082980186e-07,0) (-3.210905036e-06,0) (1.660522345e-06,0) (-0.0003762065667,0) (1.694065895e-21,0) (1.287500472e-06,0) (-1.21303074e-05,0) (4.235369307e-05,0) (-4.425289125e-05,0) (4.65868121e-21,0) (2.385662691e-06,0) (-1.929410409e-05,0) (2.488333702e-06,0) (-1.793936166e-05,0) (2.117582368e-21,0) (9.350130233e-07,0) (-1.152532848e-05,0) (1.956543723e-05,0) (-2.651761138e-05,0) (-3.705769144e-22,0) (4.335966598e-08,0) (-3.011056923e-07,0) (1.016306761e-06,0) (-1.070586547e-05,0) (-2.64697796e-23,0) (2.401865277e-07,0) (-1.133223818e-06,0) (-4.430724484e-06,0) (4.166258622e-06,0) (5.29395592e-23,0) (-3.427165247e-10,0) (7.278680151e-07,0) (-3.068866642e-06,0) (2.654190084e-06,0) (-5.29395592e-23,0) (1.64497237e-07,0) (-1.697154657e-06,0) (6.207993408e-06,0) (-6.345131393e-06,0) (1.32348898e-22,0) (9.009374426e-08,0) (-1.008053064e-06,0) (2.068286092e-06,0) (-1.472957506e-06,0) -(0.006996970788,0) (0.02648866226,0) (0.0003000404036,0) (0.002950260254,0) (0.0006171004868,0) (0.0004135149158,0) (0.0001280079144,0) (1.038046461e-05,0) (7.090544467e-05,0) (4.394723674e-06,0) (3.264040205e-06,0) (2.168226279e-06,0) (4.463860426e-06,0) (-0.0197553569,0) (0.003169952543,0) (-0.001001057065,0) (0.0004308924624,0) (-0.002770174458,0) (0.0345564099,0) (-1.463376791e-05,0) (-0.000104145023,0) (0.01124524197,0) (8.482571159e-05,0) (-0.0002556526339,0) (0.0007911948594,0) (-5.099026091e-06,0) (4.407108103e-06,0) (0.003311940614,0) (-7.032866511e-06,0) (-6.547290259e-06,0) (2.17110916e-05,0) (-3.549379796e-06,0) (-6.299896001e-06,0) (0.000423327795,0) (-5.761058672e-06,0) (3.827017946e-05,0) (1.944685014e-05,0) (-3.72626502e-07,0) (3.938617866e-06,0) (0.0001271093011,0) (-3.486916283e-07,0) (8.356272429e-08,0) (4.1630784e-06,0) (-8.202975706e-07,0) (-1.144619623e-06,0) (2.265084665e-06,0) (-7.4172067e-07,0) (7.646110877e-06,0) (7.028005024e-06,0) (-4.193909109e-07,0) (3.865265904e-06,0) (1.465586965e-06,0) (4.33680869e-19,0) (6.036641356e-05,0) (-0.03492203779,0) (0.0248557125,0) (-0.01195439354,0) (2.168404345e-19,0) (3.980786074e-05,0) (0.003563583505,0) (-0.01195701747,0) (0.009444674026,0) (4.33680869e-19,0) (-6.897536925e-07,0) (3.64387135e-06,0) (-0.0001452631239,0) (0.01867201301,0) (4.065758147e-20,0) (-5.822791923e-09,0) (-0.0001187671813,0) (-0.0006389488347,0) (0.0008196149627,0) (0,0) (-2.79072853e-06,0) (-2.5788548e-06,0) (-2.32486879e-05,0) (0.002942712557,0) (6.776263578e-21,0) (-3.739146372e-07,0) (-7.534478148e-06,0) (1.681240677e-06,0) (0.0004156051342,0) (-3.388131789e-21,0) (-3.079720876e-07,0) (-2.842608235e-05,0) (-3.184660905e-05,0) (0.0002010405408,0) (-6.776263578e-21,0) (-1.028458898e-07,0) (-7.315992414e-06,0) (1.276502879e-05,0) (0.000267013377,0) (-5.020416579e-10,0) (0,0) (-2.62595584e-08,0) (1.224289849e-06,0) (3.061993997e-05,0) (-4.235164736e-22,0) (-2.317871362e-08,0) (-1.732223519e-06,0) (6.817124161e-06,0) (1.627774038e-05,0) (-5.29395592e-23,0) (-4.037988332e-08,0) (5.914031108e-06,0) (-3.068111963e-06,0) (-1.752991826e-06,0) (-2.137047511e-08,0) (4.235164736e-22,0) (-1.256735752e-06,0) (1.465535905e-05,0) (2.691960492e-06,0) (2.64697796e-23,0) (-4.779938991e-09,0) (-9.112894287e-07,0) (1.646291736e-06,0) (-4.897159534e-07,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0.0616499241,0) (-0.05612508663,0) (-0.005524837477,0) (-0.09849767551,0) (0.003987118413,0) (0.0945105571,0) (-0.03774692604,0) (-0.03968505748,0) (0.07743198352,0) (-0.01322794725,0) (-0.0355135707,0) (0.04874151795,0) (-0.03985523459,0) (0.009503484414,0) (0.03035175017,0) (-0.02158210048,0) (0.004347737172,0) (0.01723436331,0) (-0.01398296519,0) (0.00355609991,0) (0.01042686528,0) (-0.002231696874,0) (-0.003401939794,0) (0.005633636669,0) (-0.004236003097,0) (0.0009642830837,0) (0.003271720014,0) (-0.0007253584191,0) (-0.0008634759321,0) (0.001588834351,0) (-0.000973594934,0) (0.0001368578979,0) (0.0008367370361,0) (-6.904381328e-05,0) (-0.0002476788081,0) (0.0003167226213,0) (-0.0001631146387,0) (1.171560823e-05,0) (0.0001513990305,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.0006430541106,0) (-0.002209624475,0) (-2.335865557e-06,0) (-0.0002782637621,0) (-2.751354053e-05,0) (-4.977489973e-05,0) (-5.19439452e-06,0) (-3.03377501e-06,0) (-4.441312862e-06,0) (-1.389602407e-06,0) (-1.616956109e-07,0) (-3.140627274e-08,0) (-4.069859621e-07,0) (-0.02315446542,0) (0.02486709624,0) (-0.0002113144789,0) (-0.002883591821,0) (0.002752586386,0) (-0.002965630851,0) (-0.0002318971576,0) (0.0002190437346,0) (-0.0007133624739,0) (-0.0002270707624,0) (0.0002787001547,0) (-0.0001841079618,0) (1.946548646e-05,0) (-1.743881751e-05,0) (-0.0002488508671,0) (6.647567465e-06,0) (-1.942370938e-05,0) (-1.356825305e-06,0) (2.009289265e-06,0) (-7.120632471e-06,0) (-2.917357685e-05,0) (2.017518414e-06,0) (8.169870928e-06,0) (-1.023318319e-05,0) (1.202217678e-06,0) (7.088695561e-07,0) (-1.562354862e-05,0) (4.044755587e-07,0) (3.404607548e-08,0) (-4.521418737e-07,0) (1.300895681e-06,0) (-2.972631304e-06,0) (1.388004183e-06,0) (1.167951802e-06,0) (1.454595627e-06,0) (-3.315964822e-06,0) (6.652579445e-07,0) (1.014281671e-06,0) (-2.410363274e-06,0) (1.734723476e-18,0) (-0.001830745551,0) (-0.04184804203,0) (0.04614153827,0) (-0.0003918889316,0) (6.505213035e-19,0) (-1.505671622e-05,0) (-0.0107099765,0) (0.01335057348,0) (-0.003158834692,0) (-2.032879073e-20,0) (-6.739309617e-07,0) (-3.000331146e-05,0) (3.095587548e-05,0) (-0.001514871375,0) (0,0) (-1.267303587e-10,0) (-0.0008741803541,0) (0.0008591989311,0) (5.958119995e-05,0) (-1.694065895e-21,0) (-6.219833605e-07,0) (4.261561381e-06,0) (-4.506042692e-06,0) (-0.0002959797984,0) (-2.382280164e-21,0) (-2.325279806e-06,0) (1.61001834e-05,0) (1.56959449e-05,0) (-3.949717088e-05,0) (0,0) (-2.219766983e-06,0) (2.561091166e-05,0) (-3.502433912e-05,0) (-1.382955411e-05,0) (3.546950467e-21,0) (-1.682357216e-06,0) (1.529640096e-05,0) (-6.160454092e-06,0) (-2.125727712e-05,0) (0,0) (-7.037685441e-08,0) (3.9958929e-07,0) (2.960709067e-07,0) (-8.452535281e-06,0) (1.058791184e-22,0) (-1.588206347e-07,0) (1.504087388e-06,0) (-4.685734219e-06,0) (2.429661067e-06,0) (0,0) (-2.96845995e-10,0) (-7.277574765e-07,0) (4.071144148e-06,0) (-3.096918026e-06,0) (-3.30872245e-22,0) (-3.56383646e-07,0) (2.252412441e-06,0) (2.637815303e-06,0) (-5.847758739e-06,0) (5.29395592e-23,0) (-2.276567175e-07,0) (1.337660336e-06,0) (1.200711633e-06,0) (-2.564584225e-06,0) -(-0.01091369342,0) (-0.04131632783,0) (-0.0004679952334,0) (-0.004601739364,0) (-0.0009625373212,0) (-0.000644989832,0) (-0.0001996634222,0) (-1.619117925e-05,0) (-0.0001105964721,0) (-6.854775913e-06,0) (-5.091165187e-06,0) (-3.381943069e-06,0) (-6.962613624e-06,0) (0.02620752866,0) (0.002224269497,0) (-0.001000892129,0) (0.0003047929621,0) (0.003673383099,0) (-0.05422961591,0) (-1.170549913e-05,0) (0.0001381032981,0) (-0.01748116626,0) (5.58488008e-05,0) (0.0003390297478,0) (-0.001362512354,0) (6.763664198e-06,0) (2.347166408e-06,0) (-0.005173910596,0) (-1.001395262e-05,0) (8.679345149e-06,0) (-1.134781363e-05,0) (4.708510543e-06,0) (-1.51237669e-05,0) (-0.0006345178053,0) (7.640857198e-06,0) (-8.106428758e-06,0) (-8.057400327e-05,0) (4.942920937e-07,0) (-1.090440533e-06,0) (-0.0002032277807,0) (4.625928184e-07,0) (-3.831370518e-06,0) (-2.711142746e-06,0) (-2.393650938e-06,0) (1.517526643e-06,0) (4.079308649e-07,0) (9.838166031e-07,0) (-2.85806264e-06,0) (-1.98571424e-05,0) (5.56293275e-07,0) (-1.496586117e-06,0) (-6.720478032e-06,0) (-6.505213035e-19,0) (4.480721443e-05,0) (0.04632333236,0) (-0.001379381288,0) (-0.01073557061,0) (-4.33680869e-19,0) (2.884086942e-05,0) (0.002367327906,0) (0.01585694053,0) (-0.01995489753,0) (0,0) (-5.527808322e-07,0) (2.718459272e-06,0) (0.0001926337373,0) (-0.02909695075,0) (-2.710505431e-20,0) (-4.47964897e-09,0) (-9.694780846e-05,0) (0.0008472184569,0) (-0.0008468054569,0) (-5.421010862e-20,0) (-2.241467871e-06,0) (-2.480320484e-06,0) (3.082178995e-05,0) (-0.004571428628,0) (1.355252716e-20,0) (-3.003345517e-07,0) (9.997786745e-06,0) (1.10553403e-06,0) (-0.0006493401365,0) (1.694065895e-21,0) (-2.479739066e-07,0) (3.770913572e-05,0) (-0.0001390322279,0) (-0.0001175146047,0) (0,0) (-8.278796515e-08,0) (9.703906891e-06,0) (4.395115462e-06,0) (-0.0004388356181,0) (-3.966417036e-10,0) (0,0) (3.483258316e-08,0) (-1.062099363e-06,0) (-4.860039762e-05,0) (-4.235164736e-22,0) (-1.83956344e-08,0) (2.297772888e-06,0) (-2.83623588e-05,0) (-7.201757854e-06,0) (0,0) (-3.23672139e-08,0) (-3.897417542e-06,0) (4.070176231e-06,0) (-1.782127644e-06,0) (-1.71723915e-08,0) (0,0) (1.666924655e-06,0) (-8.914065602e-06,0) (-1.780002849e-05,0) (5.29395592e-23,0) (-3.673872713e-09,0) (1.208697071e-06,0) (-1.088177979e-06,0) (-4.919808827e-07,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (1.333601076e-05,0) (-0.003680518671,0) (0.01171062439,0) (0.004572524643,0) (-0.001931974151,0) (1.016225988e-05,0) (-0.003695330387,0) (0.003163975381,0) (-1.380679875e-06,0) (-0.002791090092,0) (0.002119938484,0) (-1.702859645e-06,0) (0.001336173644,0) (-0.001159269776,0) (4.948719016e-07,0) (5.602991138e-05,0) (-5.170347486e-05,0) (1.165106662e-08,0) (0.0004402708215,0) (-0.0003880446353,0) (1.452039402e-07,0) (-0.0002896023254,0) (0.0002398595806,0) (-1.282564785e-07,0) (0.0001483925852,0) (-0.0001273107664,0) (5.926285014e-08,0) (-7.692981325e-05,0) (6.523609042e-05,0) (-3.032478854e-08,0) (4.206025406e-05,0) (-3.160521265e-05,0) (3.109924057e-08,0) (-1.970181647e-05,0) (1.391253042e-05,0) (-1.452397306e-08,0) (7.57314583e-06,0) (-4.370287337e-06,0) (1.070626807e-08,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.004214043356,0) (0.006158998385,0) (0.0001312011809,0) (-0.0007825700286,0) (-0.000160366703,0) (0.0001179069761,0) (2.941101487e-05,0) (-1.215575976e-05,0) (-1.292825713e-05,0) (3.591247411e-06,0) (1.211948785e-06,0) (2.186819431e-07,0) (-9.353687809e-07,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.04520166927,0) (0.04251668573,0) (-0.0009345582901,0) (-0.0001451268835,0) (0.0002799358963,0) (0.0005029806326,0) (-0.0003063111856,0) (-7.350246924e-05,0) (0.0001538232273,0) (3.114230238e-05,0) (-2.423650254e-05,0) (1.916106456e-05,0) (2.552626129e-05,0) (1.454931824e-06,0) (-0.003157854218,0) (0.007512458075,0) (0.0005195851016,0) (-1.088795504e-06,0) (0.03421108654,0) (-7.146290097e-06,0) (-1.177097021e-08,0) (-0.001457959397,0) (-6.924319911e-07,0) (7.086881675e-10,0) (-1.038967993e-05,0) (9.381966906e-10,0) (-1.140640338e-05,0) (0.001087813846,0) (-1.904659493e-05,0) (-3.587190187e-09,0) (0.0001295991408,0) (1.20807976e-09,0) (5.088937078e-05,0) (-0.0006397323042,0) (9.728329649e-10,0) (-2.632356776e-05,0) (0.0001948452291,0) (1.377274291e-10,0) (-1.900743854e-05,0) (0.0002168844333,0) (1.768045232e-10,0) (1.738073434e-06,0) (-3.331910854e-05,0) (-2.35095165e-06,0) (-4.003305574e-11,0) (-1.444095283e-05,0) (1.856004633e-10,0) (-8.44366819e-06,0) (5.955031546e-05,0) (1.173764161e-10,0) (-3.04711323e-06,0) (3.220324779e-05,0) (-5.421010862e-19,0) (9.495322441e-05,0) (7.430118958e-08,0) (-0.00369666856,0) (0.02112509155,0) (6.505213035e-19,0) (6.333326623e-05,0) (0.001467685891,0) (-1.522189737e-06,0) (0.003983623004,0) (0,0) (-1.128629076e-06,0) (1.486140405e-06,0) (-1.732577337e-08,0) (0.0006790959101,0) (8.470329473e-22,0) (-9.281519799e-09,0) (-5.628658706e-06,0) (-6.662351652e-09,0) (-1.747322974e-05,0) (5.421010862e-20,0) (-4.549907229e-06,0) (-1.145926933e-05,0) (-2.539534721e-08,0) (0.0005202223217,0) (0,0) (-6.099495322e-07,0) (1.186146372e-08,0) (1.038789438e-05,0) (-0.0002534353773,0) (6.776263578e-21,0) (-5.02811008e-07,0) (4.132508469e-09,0) (0.000156366619,0) (-0.0002955184562,0) (0,0) (-1.679232679e-07,0) (1.383585823e-09,0) (-3.776354522e-05,0) (0.0001676407959,0) (-8.088281908e-10,0) (0,0) (1.092177589e-11,0) (-1.716212179e-05,0) (5.082791124e-05,0) (1.694065895e-21,0) (-3.774756953e-08,0) (5.146970487e-10,0) (2.38628948e-05,0) (-5.030265065e-05,0) (2.117582368e-22,0) (-6.59283491e-08,0) (1.303346218e-06,0) (6.607505923e-10,0) (8.223005948e-06,0) (-3.476269999e-08,0) (4.235164736e-22,0) (2.906841531e-10,0) (-2.422359532e-05,0) (4.450385645e-05,0) (0,0) (-7.6060703e-09,0) (1.822462067e-10,0) (6.185128518e-07,0) (3.673086727e-06,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0.0005994385344,0) (-0.1985188841,0) (-0.001140207266,0) (-0.07488263132,0) (2.167276441e-05,0) (-1.025275956e-05,0) (0.0008666908912,0) (0.008349515407,0) (1.159857724e-06,0) (0.0006185982764,0) (0.01711533238,0) (2.254507178e-06,0) (-0.002883854726,0) (-0.0002052737618,0) (-3.899156928e-07,0) (-0.000159158543,0) (-0.0001352381151,0) (-3.706119164e-08,0) (-0.001416265,0) (-0.0001403458379,0) (-1.967367615e-07,0) (7.853055611e-05,0) (0.001110759192,0) (1.500255288e-07,0) (-0.0003981834344,0) (-2.30250586e-05,0) (-5.321609918e-08,0) (2.402907374e-05,0) (0.0002617957008,0) (3.602240965e-08,0) (-0.0002640355922,0) (-2.758564769e-06,0) (-3.410406075e-08,0) (3.284076926e-06,0) (0.000132422448,0) (1.733460305e-08,0) (-7.323759983e-05,0) (-6.375922781e-08,0) (-9.551291528e-09,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.001846675378,0) (-0.001654839895,0) (1.111239836e-05,0) (6.00638806e-06,0) (-7.965650434e-06,0) (-2.351680004e-05,0) (8.315325756e-06,0) (5.354914909e-06,0) (-5.18806211e-06,0) (-2.359921549e-06,0) (7.269569138e-07,0) (-3.107727192e-07,0) (-1.038697242e-06,0) (-0.06490133507,0) (-3.946716758e-05,0) (-0.006148089778,0) (0.007225280791,0) (3.425681516e-06,0) (-0.001345300549,0) (0.0001579544268,0) (1.933599988e-08,0) (4.985113502e-05,0) (-4.842011333e-06,0) (-6.979482776e-10,0) (7.525934897e-07,0) (1.618918448e-07,0) (-6.272074233e-05,0) (-4.091314267e-05,0) (-1.323759753e-09,0) (4.293660645e-05,0) (-1.735049015e-06,0) (1.921228267e-10,0) (-2.913583491e-05,0) (2.152582244e-05,0) (-2.092592279e-07,0) (1.791320429e-09,0) (-5.094414221e-05,0) (1.359553096e-10,0) (-1.256793796e-05,0) (-1.07102183e-05,0) (3.055871646e-11,0) (-2.032540034e-06,0) (-5.724551057e-06,0) (5.494923794e-10,0) (-1.488701156e-06,0) (-9.543865412e-06,0) (1.452900029e-10,0) (-3.151034807e-06,0) (-9.523435361e-06,0) (7.154815394e-11,0) (-3.083106532e-06,0) (-6.388466763e-06,0) (-8.67361738e-19,0) (0.005458852868,0) (-0.1264871219,0) (-6.252989909e-05,0) (-0.0005301535656,0) (0,0) (-0.0002130075372,0) (0.01332630147,0) (1.825408291e-06,0) (-0.0004832594551,0) (1.694065895e-21,0) (-2.967339092e-06,0) (7.000924065e-05,0) (1.743942639e-08,0) (-2.943530294e-05,0) (0,0) (-1.216966884e-08,0) (7.671321961e-05,0) (7.595298963e-09,0) (-2.357373937e-06,0) (8.470329473e-22,0) (-4.8359186e-07,0) (-4.383976412e-10,0) (4.728265869e-05,0) (-2.460472004e-05,0) (1.694065895e-21,0) (-2.363189478e-06,0) (-2.370021663e-09,0) (8.113426703e-05,0) (4.633762748e-05,0) (-3.388131789e-21,0) (4.377140531e-06,0) (1.020286978e-08,0) (-0.0001297244959,0) (5.329791181e-06,0) (0,0) (2.608211516e-06,0) (5.109376555e-09,0) (-7.478601065e-05,0) (-8.104477101e-06,0) (-2.117582368e-22,0) (2.294365191e-08,0) (2.306630744e-11,0) (-8.580644554e-06,0) (-3.260951961e-06,0) (3.176373552e-22,0) (1.665974296e-07,0) (1.845548891e-10,0) (-6.225489374e-06,0) (-9.221360182e-06,0) (-1.058791184e-21,0) (8.144303457e-12,0) (9.464237249e-07,0) (8.301088797e-10,0) (-2.75231617e-05,0) (-8.470329473e-22,0) (3.061043593e-07,0) (3.46976802e-10,0) (-1.102623907e-05,0) (-8.675920207e-06,0) (0,0) (1.540103829e-07,0) (1.701788421e-10,0) (-1.243366357e-06,0) (-1.244429397e-05,0) -(-0.1031484994,0) (-0.1582389931,0) (-0.01103408529,0) (0.01890852676,0) (0.005635747778,0) (-0.002521811017,0) (-0.001083411895,0) (0.0001668520179,0) (0.0003833158109,0) (-4.739128419e-05,0) (-4.040597076e-05,0) (-1.348309736e-05,0) (2.298693686e-05,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.05227305888,0) (-0.01059774195,0) (0.0007747731012,0) (-0.0019584315,0) (0.0004996371268,0) (-2.324558865e-05,0) (-2.394669917e-05,0) (-7.276138765e-06,0) (8.264461737e-06,0) (1.838973561e-05,0) (-3.937587669e-06,0) (5.221874471e-07,0) (3.804800733e-06,0) (0.003294115467,0) (-5.03865326e-06,0) (8.521411615e-05,0) (8.201923211e-05,0) (2.067578889e-07,0) (-0.06268694534,0) (-4.461298473e-06,0) (-1.290932257e-08,0) (0.008994674824,0) (-1.566384246e-05,0) (4.177343488e-08,0) (-0.003310642092,0) (-1.39836719e-10,0) (4.550215342e-08,0) (0.0007412007475,0) (3.371897556e-11,0) (-2.135755559e-07,0) (-6.832987415e-06,0) (4.698765009e-11,0) (-6.359455323e-07,0) (-9.524322186e-05,0) (-1.168207208e-06,0) (4.963625375e-11,0) (-6.28702053e-07,0) (-3.114294568e-11,0) (4.478956051e-07,0) (5.538823034e-05,0) (2.230680666e-12,0) (1.774135912e-06,0) (2.782574797e-06,0) (4.907366656e-10,0) (-1.097731374e-06,0) (-3.17533837e-06,0) (-3.19703626e-11,0) (1.108827398e-06,0) (2.817216516e-06,0) (-3.361210006e-11,0) (1.86095787e-06,0) (7.359028335e-06,0) (-4.33680869e-19,0) (-0.0002852827998,0) (-0.0001093982521,0) (-4.438290702e-06,0) (0.0612087474,0) (-1.029992064e-18,0) (-5.672657459e-06,0) (-0.001412428299,0) (2.934551322e-06,0) (-0.05104289932,0) (5.844527336e-20,0) (2.315741605e-10,0) (2.280737082e-08,0) (1.99657454e-10,0) (-0.001386055972,0) (2.202285663e-20,0) (-2.218079148e-11,0) (-0.0001285817751,0) (-2.334044471e-07,0) (0.000791823636,0) (2.435219723e-21,0) (1.565366177e-10,0) (1.581342029e-11,0) (4.980086481e-09,0) (-0.0001439248567,0) (-5.029258124e-22,0) (1.452916396e-08,0) (4.223110462e-10,0) (-7.100395277e-06,0) (-2.760876911e-05,0) (-2.580803511e-22,0) (-1.566034151e-09,0) (1.050286112e-10,0) (1.196885357e-08,0) (-1.098689074e-05,0) (3.374896899e-22,0) (2.91435589e-09,0) (1.016381852e-10,0) (-1.778376473e-07,0) (-1.275177812e-05,0) (-2.64697796e-22,0) (-1.096373539e-09,0) (-2.116571378e-11,0) (3.816288677e-07,0) (7.029415091e-05,0) (1.852884572e-22,0) (-1.759502375e-08,0) (2.032173328e-10,0) (-7.041690834e-06,0) (-9.234442056e-06,0) (2.584939414e-25,0) (3.778730592e-10,0) (3.371220318e-09,0) (-7.123309402e-13,0) (-3.067020323e-09,0) (8.602678371e-23,0) (-4.169374205e-09,0) (-8.414027643e-11,0) (2.098761966e-06,0) (5.54532595e-06,0) (-9.926167351e-23,0) (-9.442255645e-09,0) (-1.131400601e-10,0) (5.032227385e-06,0) (1.055086583e-06,0) -(-0.01870392239,0) (-0.005666223889,0) (0.0009130148356,0) (-0.0008914920716,0) (0.0002236517882,0) (-2.053323155e-05,0) (-1.204518931e-05,0) (-6.483972824e-07,0) (5.785990742e-06,0) (3.633038737e-06,0) (-1.276610461e-06,0) (3.596617133e-07,0) (1.548277966e-06,0) (-2.360738584e-06,0) (0.03012600167,0) (-0.02661648463,0) (-0.0001013170272,0) (-3.750412402e-07,0) (-0.02410440258,0) (-6.473083976e-06,0) (7.86788762e-09,0) (0.002917313174,0) (-6.209909928e-05,0) (-5.982724624e-08,0) (-0.0008486929007,0) (8.153315783e-11,0) (1.767015122e-07,0) (0.0001524684146,0) (8.386966911e-07,0) (3.506062313e-10,0) (-2.412940959e-06,0) (-1.03489508e-10,0) (4.325370202e-07,0) (-2.813110036e-05,0) (-7.01336135e-11,0) (-1.272009523e-06,0) (-6.63678222e-07,0) (2.141801211e-11,0) (7.20810683e-07,0) (2.366970548e-05,0) (-1.012439589e-10,0) (-8.825188043e-08,0) (-4.302174199e-06,0) (2.262857906e-07,0) (1.343906619e-10,0) (-5.823968285e-07,0) (3.391481584e-11,0) (1.224153722e-06,0) (1.147096904e-06,0) (3.625524393e-11,0) (1.96618936e-06,0) (7.619721113e-07,0) (1.734723476e-18,0) (-0.0002399783128,0) (4.429670749e-06,0) (0.05862781591,0) (-0.03565811638,0) (-4.33680869e-19,0) (3.134980355e-06,0) (-0.003476641184,0) (-3.253025745e-06,0) (-0.01396980218,0) (-2.710505431e-20,0) (1.136629777e-07,0) (1.037074105e-06,0) (-5.146353529e-09,0) (-0.00182694799,0) (0,0) (-1.794104248e-08,0) (-0.0001795896175,0) (1.81405844e-07,0) (0.0008103216112,0) (3.388131789e-21,0) (2.246534061e-07,0) (1.460111013e-07,0) (-3.147057971e-10,0) (-0.0001426984983,0) (8.470329473e-22,0) (3.165906529e-08,0) (-1.530328056e-10,0) (-5.880359132e-08,0) (-2.120406882e-05,0) (1.058791184e-22,0) (-1.426401455e-08,0) (4.771886505e-10,0) (-9.224878544e-07,0) (5.639404919e-06,0) (0,0) (-1.923071812e-09,0) (3.061682836e-11,0) (1.365337013e-07,0) (3.050917587e-06,0) (-5.065341759e-10,0) (4.235164736e-22,0) (3.046264775e-12,0) (6.475738678e-07,0) (1.629354359e-05,0) (0,0) (9.109682087e-09,0) (-1.822953378e-10,0) (-1.485812014e-06,0) (-3.477463597e-06,0) (0,0) (6.655951109e-09,0) (-5.74589738e-07,0) (1.527580882e-10,0) (1.947745163e-07,0) (-7.857037501e-09,0) (1.058791184e-22,0) (9.043149751e-11,0) (3.224418723e-06,0) (6.035756443e-07,0) (-1.058791184e-22,0) (-1.558553604e-08,0) (1.607444256e-10,0) (1.658167214e-06,0) (-5.670284416e-07,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (-0.04650791085,0) (0.05339342277,0) (-0.006885511921,0) (0.06582968803,0) (0.005456254699,0) (-0.07128594273,0) (-0.03665265658,0) (0.0950451253,0) (-0.05839246872,0) (-0.01466480269,0) (0.05142104472,0) (-0.03675624203,0) (0.005432133241,0) (0.01745725437,0) (-0.02288938761,0) (-0.009939728979,0) (0.02293658634,0) (-0.01299685736,0) (0.0009346548029,0) (0.006928611436,0) (-0.007863266239,0) (-0.002292082329,0) (0.006540467226,0) (-0.004248384897,0) (0.0007511567492,0) (0.001716174845,0) (-0.002467331594,0) (-0.0007179158406,0) (0.001916075511,0) (-0.00119815967,0) (0.0004232273626,0) (0.0002078052141,0) (-0.0006310325767,0) (-7.912951479e-05,0) (0.0003179706291,0) (-0.0002388411143,0) (9.769891917e-05,0) (1.648674933e-05,0) (-0.0001141856685,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.0008172287347,0) (-0.00280811301,0) (-2.968547159e-06,0) (-0.0003536329813,0) (-3.496572923e-05,0) (-6.325669591e-05,0) (-6.601323888e-06,0) (-3.855489098e-06,0) (-5.64426606e-06,0) (-1.765983606e-06,0) (-2.054917267e-07,0) (-3.991282865e-08,0) (-5.172202734e-07,0) (0.02065391313,0) (-0.01874311768,0) (-2.839598951e-06,0) (0.001922210209,0) (-0.002074278464,0) (-0.00378330843,0) (0.0001500682067,0) (-0.0001650648726,0) (-0.0009079186671,0) (0.0002733644709,0) (-0.0002099969132,0) (-0.000231728652,0) (-1.467732161e-05,0) (1.720867302e-05,0) (-0.0003162091956,0) (-5.007846613e-06,0) (-1.116087826e-05,0) (-1.792231646e-06,0) (-1.513850326e-06,0) (-4.757169056e-06,0) (-3.730015351e-05,0) (1.142734126e-05,0) (-6.157851779e-06,0) (-5.327686836e-06,0) (-9.058902923e-07,0) (3.219670478e-06,0) (-1.974033463e-05,0) (-3.048988288e-07,0) (6.478429413e-07,0) (-3.602534663e-07,0) (-9.787608102e-07,0) (-1.968661101e-06,0) (2.586840302e-06,0) (-8.801255416e-07,0) (3.545150804e-06,0) (-3.546258443e-06,0) (-5.013482219e-07,0) (2.325538149e-06,0) (-2.752961059e-06,0) (-8.67361738e-19,0) (0.001081420423,0) (0.03683490234,0) (-0.03477674716,0) (-0.0005078099275,0) (-4.878909776e-19,0) (2.592330502e-05,0) (0.01315681817,0) (-0.01006015626,0) (-0.00380032527,0) (-3.388131789e-20,0) (5.636850501e-07,0) (2.319957752e-05,0) (-2.332385676e-05,0) (-0.001925267643,0) (1.355252716e-20,0) (7.146844379e-11,0) (0.0005565170578,0) (-0.0006475377206,0) (0.0001477002938,0) (-5.505714157e-21,0) (5.082980186e-07,0) (-3.210905036e-06,0) (1.660522345e-06,0) (-0.0003762065667,0) (8.470329473e-22,0) (1.287500472e-06,0) (-1.21303074e-05,0) (4.235369307e-05,0) (-4.425289125e-05,0) (2.117582368e-21,0) (2.385662691e-06,0) (-1.929410409e-05,0) (2.488333702e-06,0) (-1.793936166e-05,0) (1.270549421e-21,0) (9.350130233e-07,0) (-1.152532848e-05,0) (1.956543723e-05,0) (-2.651761138e-05,0) (-3.176373552e-22,0) (4.335966598e-08,0) (-3.011056923e-07,0) (1.016306761e-06,0) (-1.070586547e-05,0) (-5.29395592e-23,0) (2.401865277e-07,0) (-1.133223818e-06,0) (-4.430724484e-06,0) (4.166258622e-06,0) (5.29395592e-23,0) (-3.427165247e-10,0) (7.278680151e-07,0) (-3.068866642e-06,0) (2.654190084e-06,0) (5.29395592e-23,0) (1.64497237e-07,0) (-1.697154657e-06,0) (6.207993408e-06,0) (-6.345131393e-06,0) (1.588186776e-22,0) (9.009374426e-08,0) (-1.008053064e-06,0) (2.068286092e-06,0) (-1.472957506e-06,0) -(0.006996970788,0) (0.02648866226,0) (0.0003000404036,0) (0.002950260254,0) (0.0006171004868,0) (0.0004135149158,0) (0.0001280079144,0) (1.038046461e-05,0) (7.090544467e-05,0) (4.394723674e-06,0) (3.264040205e-06,0) (2.168226279e-06,0) (4.463860426e-06,0) (-0.0197553569,0) (0.003169952543,0) (-0.001001057065,0) (0.0004308924624,0) (-0.002770174458,0) (0.0345564099,0) (-1.463376791e-05,0) (-0.000104145023,0) (0.01124524197,0) (8.482571159e-05,0) (-0.0002556526339,0) (0.0007911948594,0) (-5.099026091e-06,0) (4.407108103e-06,0) (0.003311940614,0) (-7.032866511e-06,0) (-6.547290259e-06,0) (2.17110916e-05,0) (-3.549379796e-06,0) (-6.299896001e-06,0) (0.000423327795,0) (-5.761058672e-06,0) (3.827017946e-05,0) (1.944685014e-05,0) (-3.72626502e-07,0) (3.938617866e-06,0) (0.0001271093011,0) (-3.486916283e-07,0) (8.356272429e-08,0) (4.1630784e-06,0) (-8.202975706e-07,0) (-1.144619623e-06,0) (2.265084665e-06,0) (-7.4172067e-07,0) (7.646110877e-06,0) (7.028005024e-06,0) (-4.193909109e-07,0) (3.865265904e-06,0) (1.465586965e-06,0) (0,0) (6.036641356e-05,0) (-0.03492203779,0) (0.0248557125,0) (-0.01195439354,0) (-6.505213035e-19,0) (3.980786074e-05,0) (0.003563583505,0) (-0.01195701747,0) (0.009444674026,0) (4.33680869e-19,0) (-6.897536925e-07,0) (3.64387135e-06,0) (-0.0001452631239,0) (0.01867201301,0) (2.710505431e-20,0) (-5.822791923e-09,0) (-0.0001187671813,0) (-0.0006389488347,0) (0.0008196149627,0) (5.421010862e-20,0) (-2.79072853e-06,0) (-2.5788548e-06,0) (-2.32486879e-05,0) (0.002942712557,0) (0,0) (-3.739146372e-07,0) (-7.534478148e-06,0) (1.681240677e-06,0) (0.0004156051342,0) (-3.388131789e-21,0) (-3.079720876e-07,0) (-2.842608235e-05,0) (-3.184660905e-05,0) (0.0002010405408,0) (-6.776263578e-21,0) (-1.028458898e-07,0) (-7.315992414e-06,0) (1.276502879e-05,0) (0.000267013377,0) (-5.020416579e-10,0) (0,0) (-2.62595584e-08,0) (1.224289849e-06,0) (3.061993997e-05,0) (0,0) (-2.317871362e-08,0) (-1.732223519e-06,0) (6.817124161e-06,0) (1.627774038e-05,0) (1.058791184e-22,0) (-4.037988332e-08,0) (5.914031108e-06,0) (-3.068111963e-06,0) (-1.752991826e-06,0) (-2.137047511e-08,0) (0,0) (-1.256735752e-06,0) (1.465535905e-05,0) (2.691960492e-06,0) (3.97046694e-23,0) (-4.779938991e-09,0) (-9.112894287e-07,0) (1.646291736e-06,0) (-4.897159534e-07,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0.04715705099,0) (0.02200154358,0) (0.1067286698,0) (0.02202428562,0) (0.17465834,0) (0.07141108635,0) (0.1000731762,0) (0.06107260141,0) (0.05848951507,0) (0.07464156391,0) (0.02679567375,0) (0.03681690082,0) (0.0005054573398,0) (0.06266017622,0) (0.02292789445,0) (0.005280432053,0) (0.03058641266,0) (0.0130185903,0) (4.477807442e-05,0) (0.02165478127,0) (0.007876474827,0) (0.007860017766,0) (0.003864294445,0) (0.004255431357,0) (8.845381168e-05,0) (0.006720385865,0) (0.002471484938,0) (0.00210919833,0) (0.001197367089,0) (0.001200149458,0) (0.0001043161214,0) (0.001637026661,0) (0.0006321024569,0) (0.0005029865235,0) (0.0001561530053,0) (0.0002392339673,0) (3.034857158e-05,0) (0.0002847271479,0) (0.0001143827643,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.01859825451,0) (0.06390622139,0) (6.755733522e-05,0) (0.008047876816,0) (0.000795739924,0) (0.001439577538,0) (0.0001502310143,0) (8.77421026e-05,0) (0.0001284505699,0) (4.018974268e-05,0) (4.676521113e-06,0) (9.083245777e-07,0) (1.177074896e-05,0) (0.008307597159,0) (0.01873421824,0) (2.900333486e-08,0) (0.0006427535352,0) (0.002074227619,0) (0.09464435446,0) (4.913666987e-05,0) (0.0001652571093,0) (0.02141018871,0) (0.0001298657198,0) (0.0002102475176,0) (0.004281715785,0) (1.48520788e-05,0) (7.255278567e-06,0) (0.007171961804,0) (5.016290298e-06,0) (8.510401907e-06,0) (0.0004140783138,0) (1.516294083e-06,0) (4.817059328e-06,0) (0.0009909456417,0) (1.489550748e-05,0) (6.169100968e-06,0) (3.434653454e-06,0) (9.073734504e-07,0) (4.539544298e-06,0) (0.0003945514261,0) (3.054738133e-07,0) (6.950824905e-07,0) (5.407485655e-07,0) (9.805598736e-07,0) (1.955658851e-06,0) (8.959547428e-06,0) (8.815473737e-07,0) (7.766105257e-06,0) (1.471985915e-05,0) (5.021918199e-07,0) (5.508541434e-06,0) (1.701290994e-05,0) (6.505213035e-19,0) (0.0003326380646,0) (0.01469282168,0) (0.03477374258,0) (0.02107630735,0) (3.252606517e-19,0) (1.4617477e-05,0) (0.006316834902,0) (0.01007236596,0) (0.03687902424,0) (-2.059984128e-18,0) (2.1761899e-07,0) (8.535073252e-06,0) (2.333908512e-05,0) (0.04386035073,0) (3.388131789e-21,0) (2.12877168e-11,0) (0.0001802105721,0) (0.0006483001201,0) (0.0003180537728,0) (-1.423015351e-19,0) (1.934512603e-07,0) (3.215971441e-06,0) (3.60306497e-07,0) (0.008593632408,0) (9.95263713e-21,0) (3.785330716e-07,0) (1.214894467e-05,0) (8.316142622e-05,0) (0.0002399527039,0) (-2.943439492e-20,0) (1.065981606e-06,0) (1.932844051e-05,0) (1.262102486e-07,0) (0.0007885513656,0) (-1.905824131e-20,0) (2.756248094e-07,0) (1.154541289e-05,0) (1.377253857e-05,0) (0.0004170207456,0) (1.334076892e-20,0) (1.372912756e-08,0) (3.015892013e-07,0) (1.65338949e-06,0) (0.000225542516,0) (-7.27918939e-22,0) (1.277388161e-07,0) (1.135050709e-06,0) (1.097300767e-05,0) (1.837231386e-05,0) (0,0) (2.299303327e-09,0) (3.123692756e-07,0) (3.074695245e-06,0) (1.039677966e-06,0) (6.882142696e-22,0) (4.239383809e-08,0) (1.699838817e-06,0) (1.420235844e-05,0) (2.844450342e-05,0) (-2.779326858e-22,0) (2.066829092e-08,0) (1.009713072e-06,0) (8.983597702e-06,0) (1.122430129e-06,0) -(0.002275502001,0) (0.008614442707,0) (9.757687426e-05,0) (0.0009594613604,0) (0.0002006887602,0) (0.0001344801982,0) (4.162976727e-05,0) (3.375856311e-06,0) (2.305933326e-05,0) (1.429218846e-06,0) (1.061506507e-06,0) (7.051341767e-07,0) (1.451702978e-06,0) (0.0197919787,0) (0.04576663462,0) (0.003064285325,0) (0.006931890706,0) (0.002776848162,0) (0.01119185278,0) (0.0002405708549,0) (0.0001044086936,0) (0.003665373389,0) (0.0006670496628,0) (0.0002562656941,0) (0.0002404198937,0) (5.111300906e-06,0) (1.4983551e-05,0) (0.001075955865,0) (7.907287005e-06,0) (6.558427154e-06,0) (1.279841726e-05,0) (3.558166217e-06,0) (2.878390215e-06,0) (0.0001413922296,0) (5.77551433e-06,0) (2.981494912e-05,0) (2.987868567e-06,0) (3.734951082e-07,0) (2.875161334e-06,0) (4.065104123e-05,0) (3.494642989e-07,0) (1.349041095e-09,0) (2.229293379e-06,0) (2.854297262e-07,0) (1.146538659e-06,0) (2.970188831e-06,0) (7.434637826e-07,0) (5.101582132e-06,0) (1.477386609e-06,0) (4.203040616e-07,0) (2.548710907e-06,0) (2.065288763e-07,0) (0,0) (0.00381120272,0) (0.03499174491,0) (0.02310179904,0) (0.06236724561,0) (0,0) (0.001009633108,0) (0.0298739139,0) (0.0119849688,0) (0.002478434544,0) (0,0) (1.099057939e-05,0) (0.0003399323208,0) (0.000145642374,0) (0.00607617128,0) (-5.421010862e-20,0) (2.892328027e-07,0) (0.001438457613,0) (0.0006405979474,0) (0.0003449598824,0) (-1.355252716e-20,0) (4.286455912e-05,0) (9.37661877e-06,0) (2.331100428e-05,0) (0.0009596164022,0) (-3.388131789e-21,0) (5.739308119e-06,0) (7.551310522e-06,0) (1.320365452e-05,0) (0.0001350056191,0) (-1.694065895e-21,0) (4.544913819e-06,0) (2.850249043e-05,0) (6.63333715e-06,0) (0.0001130091179,0) (0,0) (1.524088828e-06,0) (7.334038823e-06,0) (2.344902083e-05,0) (8.380257917e-05,0) (1.053196334e-08,0) (2.117582368e-22,0) (2.631799423e-08,0) (5.681500867e-07,0) (9.841263226e-06,0) (0,0) (4.420829531e-07,0) (1.736699721e-06,0) (1.043708995e-06,0) (1.023766845e-05,0) (-4.235164736e-22,0) (6.41372051e-07,0) (3.151162781e-06,0) (3.071688387e-06,0) (5.020121102e-06,0) (3.257591355e-07,0) (-1.058791184e-22,0) (1.259765493e-06,0) (8.095219997e-06,0) (2.749685552e-07,0) (5.29395592e-23,0) (2.494036453e-07,0) (9.133146635e-07,0) (8.753312292e-07,0) (1.469478759e-06,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (-0.06251041084,0) (-0.02312716577,0) (0.08563757661,0) (-0.03295383896,0) (0.1276303109,0) (-0.0946764719,0) (0.1030608728,0) (-0.02550019993,0) (-0.07756067291,0) (0.0673281933,0) (-0.01850623727,0) (-0.04882195603,0) (-0.003708510075,0) (0.03411132104,0) (-0.03040281096,0) (0.01146538456,0) (0.005797797515,0) (-0.01726318207,0) (-0.0006699053532,0) (0.01111428551,0) (-0.01044438016,0) (0.007652943725,0) (-0.002009962988,0) (-0.005642980737,0) (-0.0004988181503,0) (0.003776045562,0) (-0.003277227412,0) (0.002131064227,0) (-0.0005395912934,0) (-0.001591472934,0) (-0.0002399694735,0) (0.00107812515,0) (-0.0008381556767,0) (0.0004388767921,0) (-0.000121633216,0) (-0.0003172435761,0) (-5.066889512e-05,0) (0.0002023292553,0) (-0.0001516603602,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.01463443893,0) (0.0502859929,0) (5.315895081e-05,0) (0.006332645988,0) (0.0006261451749,0) (0.001132762731,0) (0.0001182125239,0) (6.904177173e-05,0) (0.0001010741099,0) (3.162416853e-05,0) (3.679821814e-06,0) (7.147348455e-07,0) (9.262068479e-06,0) (-0.009313391119,0) (-0.02485528906,0) (2.158341618e-06,0) (-0.0009642227618,0) (-0.002752518914,0) (0.07418909208,0) (-7.592983434e-05,0) (-0.0002192988358,0) (0.01682223941,0) (-0.0001078732284,0) (-0.0002790327477,0) (0.003401814836,0) (-1.969725446e-05,0) (-7.352308847e-06,0) (0.005644203073,0) (-6.658775869e-06,0) (1.481098257e-05,0) (0.000313481762,0) (-2.012532792e-06,0) (7.210277511e-06,0) (0.0007750485214,0) (2.629829628e-06,0) (-8.184795682e-06,0) (6.597129124e-06,0) (-1.204185994e-06,0) (9.994640053e-07,0) (0.0003122689409,0) (-4.05238327e-07,0) (3.652865445e-08,0) (6.786751343e-07,0) (-1.303286861e-06,0) (2.952998217e-06,0) (4.80736646e-06,0) (-1.169838614e-06,0) (3.186477351e-06,0) (1.376395317e-05,0) (-6.663773466e-07,0) (2.4025461e-06,0) (1.489570409e-05,0) (0,0) (-0.0005631257223,0) (-0.01669247861,0) (-0.04613755182,0) (0.01626508487,0) (0,0) (-8.490090396e-06,0) (-0.005142060373,0) (-0.01336677666,0) (0.03065388695,0) (4.33680869e-19,0) (-2.601810625e-07,0) (-1.103815192e-05,0) (-3.097608686e-05,0) (0.03451093673,0) (1.016439537e-20,0) (-3.774812831e-11,0) (-0.0002830758546,0) (-0.0008602105367,0) (0.0001283005263,0) (-1.355252716e-19,0) (-2.367183435e-07,0) (-4.268285589e-06,0) (-9.777383985e-07,0) (0.006761023897,0) (5.717472394e-21,0) (-6.8364659e-07,0) (-1.612492008e-05,0) (3.081896923e-05,0) (0.0002141657343,0) (1.270549421e-21,0) (-9.918547086e-07,0) (-2.565648968e-05,0) (-1.776462113e-06,0) (0.0006078986526,0) (-1.651714247e-20,0) (-4.959282655e-07,0) (-1.532305696e-05,0) (-4.336478179e-06,0) (0.0003342957791,0) (-1.058791184e-22,0) (-2.228367745e-08,0) (-4.002309418e-07,0) (4.816661111e-07,0) (0.0001780711778,0) (2.911675756e-22,0) (-8.446585262e-08,0) (-1.506512155e-06,0) (1.160455761e-05,0) (1.071428823e-05,0) (-1.32348898e-23,0) (1.991555512e-09,0) (-3.123218372e-07,0) (-4.078876345e-06,0) (-1.21309979e-06,0) (-4.63221143e-22,0) (-9.18463487e-08,0) (-2.255974777e-06,0) (6.034671105e-06,0) (2.62148383e-05,0) (-9.264422861e-23,0) (-5.222643711e-08,0) (-1.339863123e-06,0) (5.215289271e-06,0) (1.954276747e-06,0) -(-0.003549268956,0) (-0.01343658413,0) (-0.0001521978757,0) (-0.001496542925,0) (-0.0003130291189,0) (-0.0002097587224,0) (-6.49330304e-05,0) (-5.265573046e-06,0) (-3.596734947e-05,0) (-2.229258458e-06,0) (-1.655710296e-06,0) (-1.099849986e-06,0) (-2.264328624e-06,0) (-0.02625611128,0) (0.03211320294,0) (0.003063780447,0) (0.004903291854,0) (-0.003682232749,0) (-0.01756345289,0) (0.0001924317751,0) (-0.0001384529431,0) (-0.005697965572,0) (0.0004391819773,0) (-0.000339842748,0) (-0.0004140257883,0) (-6.779946273e-06,0) (7.980037421e-06,0) (-0.001680857268,0) (1.12590218e-05,0) (-8.694108655e-06,0) (-6.689394366e-06,0) (-4.720166369e-06,0) (6.909971635e-06,0) (-0.0002119300653,0) (-7.660029649e-06,0) (-6.315433174e-06,0) (-1.237961572e-05,0) (-4.954443068e-07,0) (-7.960133638e-07,0) (-6.499462137e-05,0) (-4.636178842e-07,0) (-6.185385077e-08,0) (-1.451794079e-06,0) (8.328918145e-07,0) (-1.520070884e-06,0) (5.349167374e-07,0) (-9.861286637e-07,0) (-1.906935634e-06,0) (-4.174253742e-06,0) (-5.575045068e-07,0) (-9.86831296e-07,0) (-9.470422496e-07,0) (-8.67361738e-19,0) (0.002828880622,0) (-0.04641579736,0) (-0.001282046906,0) (0.05600852667,0) (-4.33680869e-19,0) (0.0007314810716,0) (0.01984557116,0) (-0.01589400852,0) (-0.005236486429,0) (-1.084202172e-19,0) (8.808045082e-06,0) (0.0002536017549,0) (-0.0001931366618,0) (-0.009468612536,0) (-2.710505431e-20,0) (2.225154949e-07,0) (0.001174190644,0) (-0.0008494051089,0) (-0.0003564038288,0) (0,0) (3.442811834e-05,0) (9.018351715e-06,0) (-3.090440545e-05,0) (-0.001490739516,0) (0,0) (4.609909213e-06,0) (-1.002012226e-05,0) (8.682331798e-06,0) (-0.0002109323487,0) (-2.541098842e-21,0) (3.659487597e-06,0) (-3.781049624e-05,0) (2.895905309e-05,0) (-6.605743182e-05,0) (-3.388131789e-21,0) (1.226847403e-06,0) (-9.727843585e-06,0) (8.073711052e-06,0) (-0.0001377292668,0) (8.320855081e-09,0) (4.235164736e-22,0) (-3.491009668e-08,0) (-4.928831568e-07,0) (-1.562019084e-05,0) (0,0) (3.508562431e-07,0) (-2.303710515e-06,0) (-4.342307445e-06,0) (-4.529449878e-06,0) (2.117582368e-22,0) (5.141031785e-07,0) (-2.076654126e-06,0) (-4.074920738e-06,0) (5.103558646e-06,0) (2.617659823e-07,0) (-2.117582368e-22,0) (-1.67094328e-06,0) (-4.923886331e-06,0) (-1.818172343e-06,0) (0,0) (1.916922473e-07,0) (-1.21138326e-06,0) (-5.785828522e-07,0) (1.476275077e-06,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (-1.352214984e-05,0) (-0.001516611742,0) (-0.1815201801,0) (0.001529805043,0) (-0.06184377689,0) (-1.018009989e-05,0) (0.0100894037,0) (0.002033057526,0) (1.382974519e-06,0) (0.01420621429,0) (0.001104706844,0) (1.705669872e-06,0) (0.0001243303037,0) (-0.00416102366,0) (-4.957044252e-07,0) (-2.976561439e-05,0) (-6.894765397e-05,0) (-1.167054917e-08,0) (2.109279228e-05,0) (-0.001212800252,0) (-1.454478514e-07,0) (0.0009931054366,0) (0.0001417158764,0) (1.284692074e-07,0) (1.74742353e-05,0) (-0.0004985374759,0) (-5.936260932e-08,0) (0.0002260156754,0) (4.076642451e-05,0) (3.037514902e-08,0) (1.036691613e-05,0) (-0.0002489763116,0) (-3.115196758e-08,0) (0.0001252345373,0) (6.832339961e-06,0) (1.454786252e-08,0) (2.35247391e-06,0) (-7.547512391e-05,0) (-1.072474815e-08,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.09590197642,0) (-0.1401646988,0) (-0.002985838421,0) (0.01780950172,0) (0.003649578912,0) (-0.002683292763,0) (-0.0006693273457,0) (0.0002766372549,0) (0.0002942175258,0) (-8.172856693e-05,0) (-2.758117892e-05,0) (-4.976700232e-06,0) (2.128685141e-05,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.01470014553,0) (0.01382695546,0) (-0.0003039299897,0) (-4.71970691e-05,0) (9.103863821e-05,0) (0.000163575563,0) (-9.961621062e-05,0) (-2.390391798e-05,0) (5.002522838e-05,0) (1.012786441e-05,0) (-7.88201233e-06,0) (6.23141672e-06,0) (8.301457933e-06,0) (-1.457628927e-06,0) (-0.04559196335,0) (-0.02299600676,0) (0.008358714646,0) (1.091418551e-06,0) (0.01108001222,0) (0.0001174809611,0) (1.180077153e-08,0) (-0.0004752201501,0) (-5.445124097e-06,0) (-7.103876161e-10,0) (-3.157105631e-06,0) (-9.404551985e-10,0) (-3.878017573e-05,0) (0.0003533999622,0) (2.141472362e-05,0) (3.593291973e-09,0) (7.639707444e-05,0) (-1.211070338e-09,0) (-2.325109286e-05,0) (-0.0002136717171,0) (-9.75273999e-10,0) (-2.050776465e-05,0) (2.993656717e-05,0) (-1.380484768e-10,0) (-1.387528677e-05,0) (6.936217859e-05,0) (-1.771963067e-10,0) (2.805955058e-08,0) (-1.784210166e-05,0) (8.180342229e-07,0) (4.010017397e-11,0) (-1.893631504e-05,0) (-1.860366417e-10,0) (-5.633722485e-06,0) (1.251832324e-05,0) (-1.176319828e-10,0) (-2.00923065e-06,0) (4.53804567e-06,0) (6.938893904e-18,0) (0.005994823377,0) (-7.444950055e-08,0) (-0.003435817589,0) (-0.1102116782,0) (-8.67361738e-19,0) (0.001606299893,0) (0.01230377284,0) (1.525748086e-06,0) (0.001045366821,0) (-1.355252716e-20,0) (1.798364778e-05,0) (0.0001386402286,0) (1.737100717e-08,0) (0.0002209886563,0) (-3.388131789e-21,0) (4.610365646e-07,0) (6.817192153e-05,0) (6.679547034e-09,0) (-7.354140116e-06,0) (0,0) (6.988489398e-05,0) (4.1665471e-05,0) (2.546341754e-08,0) (0.0001696441168,0) (1.016439537e-20,0) (9.362266021e-06,0) (-1.188796278e-08,0) (8.158151922e-05,0) (-8.232622071e-05,0) (8.470329473e-21,0) (7.420259143e-06,0) (-4.143616472e-09,0) (-3.256963719e-05,0) (-0.000166117142,0) (-1.694065895e-21,0) (2.488480358e-06,0) (-1.386998724e-09,0) (-6.937063544e-05,0) (5.261433427e-05,0) (1.696781277e-08,0) (4.235164736e-22,0) (-1.09460803e-11,0) (-7.964340301e-06,0) (1.633611477e-05,0) (6.352747104e-22,0) (7.199518179e-07,0) (-5.160270666e-10,0) (3.653434698e-06,0) (-3.163718351e-05,0) (-4.235164736e-22,0) (1.047169952e-06,0) (6.944596701e-07,0) (-6.615208134e-10,0) (-2.354858994e-05,0) (5.29902449e-07,0) (-4.235164736e-22,0) (-2.91384935e-10,0) (-1.338045233e-05,0) (4.545817498e-06,0) (-2.117582368e-22,0) (3.968631531e-07,0) (-1.826512278e-10,0) (3.288624992e-07,0) (-1.102174207e-05,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (-0.0006078052747,0) (-0.0818026201,0) (0.01767374832,0) (-0.0250530803,0) (0.0006937595959,0) (1.027075844e-05,0) (-0.002366336259,0) (0.005365100259,0) (-1.161785369e-06,0) (-0.003148568976,0) (0.008918855406,0) (-2.258227789e-06,0) (-0.000268341271,0) (-0.0007367991449,0) (3.905716485e-07,0) (8.455219191e-05,0) (-0.0001803428258,0) (3.712316421e-08,0) (-6.785138147e-05,0) (-0.0004386388888,0) (1.970672368e-07,0) (-0.0002692972928,0) (0.0006562681882,0) (-1.502743643e-07,0) (-4.688880524e-05,0) (-9.016405225e-05,0) (5.330567966e-08,0) (-7.059613306e-05,0) (0.000163597705,0) (-3.608223219e-08,0) (-6.507889457e-05,0) (-2.173113939e-05,0) (3.416188227e-08,0) (-2.087522514e-05,0) (6.50316769e-05,0) (-1.736311552e-08,0) (-2.275006274e-05,0) (-1.101125681e-06,0) (9.567778006e-09,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.04202610262,0) (0.03766036634,0) (-0.0002528927387,0) (-0.0001366916373,0) (0.0001812799621,0) (0.0005351885142,0) (-0.0001892377717,0) (-0.0001218656003,0) (0.0001180684127,0) (5.370641011e-05,0) (-1.654387459e-05,0) (7.072475403e-06,0) (2.363837055e-05,0) (-0.0261051813,0) (3.944842813e-05,0) (6.279587704e-05,0) (0.002416007754,0) (-3.425597545e-06,0) (0.03365443351,0) (5.171884636e-05,0) (-1.935851884e-08,0) (-0.001175570287,0) (-2.300267057e-06,0) (6.987811895e-10,0) (-1.390588258e-05,0) (-1.638194283e-07,0) (-2.644343681e-05,0) (0.0009279537109,0) (1.325991733e-09,0) (-3.274005584e-05,0) (0.0004008668033,0) (-1.924329641e-10,0) (2.950263984e-05,0) (-0.0005718721755,0) (-2.727688202e-07,0) (-1.794592821e-09,0) (3.284267252e-05,0) (-1.361779008e-10,0) (-1.772004666e-05,0) (0.0002140658698,0) (-3.061634471e-11,0) (-2.18074922e-06,0) (8.592680047e-06,0) (-5.505024031e-10,0) (1.478868857e-06,0) (-3.305527393e-05,0) (-1.455247171e-10,0) (-6.902743869e-06,0) (3.953000872e-05,0) (-7.166854507e-11,0) (-7.303006439e-06,0) (3.947982096e-05,0) (-4.33680869e-19,0) (0.001679108527,0) (-0.05045358095,0) (6.252449675e-05,0) (0.02200366493,0) (3.794707604e-19,0) (-0.0001201094063,0) (0.006398207008,0) (-1.827623733e-06,0) (0.004689634674,0) (-7.115076757e-20,0) (-1.145585351e-06,0) (2.575624477e-05,0) (-1.745081276e-08,0) (0.0006705783039,0) (-4.235164736e-22,0) (-3.62487904e-09,0) (2.484116704e-05,0) (-7.604241534e-09,0) (-5.076304556e-06,0) (-1.355252716e-20,0) (-1.840484349e-07,0) (4.390893776e-10,0) (1.025957234e-05,0) (0.0005620420754,0) (-8.470329473e-22,0) (-6.94792267e-07,0) (2.373663017e-09,0) (0.0001593070373,0) (-0.000251256781,0) (1.270549421e-21,0) (1.955830264e-06,0) (-1.022102714e-08,0) (-6.579728783e-06,0) (-0.0002342789111,0) (-5.929230631e-21,0) (7.688532502e-07,0) (-5.11828032e-09,0) (-5.264350621e-05,0) (0.0001274524706,0) (4.870439447e-21,0) (7.264731325e-09,0) (-2.310334681e-11,0) (-1.395951307e-05,0) (6.869909882e-05,0) (-1.799945013e-21,0) (8.860179887e-08,0) (-1.848524135e-10,0) (1.541787193e-05,0) (-4.066423592e-05,0) (1.058791184e-22,0) (-5.464056351e-11,0) (4.061638748e-07,0) (-8.316854796e-10,0) (-1.078115126e-05,0) (-8.470329473e-22,0) (7.888849008e-08,0) (-3.475255682e-10,0) (-2.522531665e-05,0) (3.889316497e-05,0) (-7.940933881e-22,0) (3.533132544e-08,0) (-1.704590834e-10,0) (-5.400560006e-06,0) (9.482860461e-06,0) -(-0.03354517603,0) (-0.05146129038,0) (-0.003588421894,0) (0.006149288282,0) (0.001832815333,0) (-0.0008201243352,0) (-0.0003523390349,0) (5.426235325e-05,0) (0.0001246590734,0) (-1.541223556e-05,0) (-1.314052468e-05,0) (-4.384871105e-06,0) (7.475638015e-06,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.0411321873,0) (-0.008339062533,0) (0.0006096469769,0) (-0.001541034196,0) (0.0003931502828,0) (-1.829129434e-05,0) (-1.884297833e-05,0) (-5.725387206e-06,0) (6.503070519e-06,0) (1.447036132e-05,0) (-3.098376047e-06,0) (4.108944902e-07,0) (2.993889774e-06,0) (-0.003692931319,0) (6.684943117e-06,0) (0.006341380197,0) (-0.0001230406465,0) (-2.74369599e-07,0) (-0.04913856285,0) (6.893948142e-06,0) (1.71308782e-08,0) (0.007067222778,0) (1.30112031e-05,0) (-5.544016143e-08,0) (-0.002630298682,0) (1.854554824e-10,0) (-4.611068783e-08,0) (0.0005833114635,0) (-4.475959074e-11,0) (-3.716938248e-07,0) (-5.172975408e-06,0) (-6.23653338e-11,0) (-9.518968852e-07,0) (-7.449260097e-05,0) (-2.062491615e-07,0) (-6.585442473e-11,0) (-1.207582855e-06,0) (4.133017006e-11,0) (9.861243906e-08,0) (4.383718543e-05,0) (-2.959197357e-12,0) (9.323612458e-08,0) (3.492314996e-06,0) (-6.522504806e-10,0) (-1.657548191e-06,0) (-1.703770788e-06,0) (4.242558686e-11,0) (4.549582158e-07,0) (2.634266796e-06,0) (4.460116865e-11,0) (8.116553402e-07,0) (6.443219229e-06,0) (-3.252606517e-18,0) (0.0004829576041,0) (0.0001242870854,0) (5.888692216e-06,0) (0.04723623807,0) (-1.029992064e-18,0) (3.294780257e-06,0) (0.001149751687,0) (-3.89436725e-06,0) (-0.04242691604,0) (-1.778769189e-20,0) (-2.768655948e-10,0) (-2.949608241e-08,0) (-2.64989249e-10,0) (-0.001090599805,0) (1.016439537e-20,0) (3.933175975e-11,0) (0.0002019770285,0) (3.09697559e-07,0) (0.0003194157652,0) (-2.541098842e-21,0) (-1.91547415e-10,0) (-2.098780887e-11,0) (-1.35141104e-08,0) (-0.0001132326063,0) (6.088049308e-22,0) (-2.624027897e-08,0) (-5.605204444e-10,0) (-2.631350537e-06,0) (-2.46417407e-05,0) (2.713152409e-22,0) (1.457134286e-09,0) (-1.394145316e-10,0) (-1.684666273e-07,0) (-8.469855444e-06,0) (2.117582368e-22,0) (-5.243764032e-09,0) (-1.348940671e-10,0) (5.599469354e-08,0) (-1.022219073e-05,0) (1.694065895e-21,0) (1.779518342e-09,0) (2.80884512e-11,0) (1.111762798e-07,0) (5.549890313e-05,0) (-2.514629062e-22,0) (1.163451117e-08,0) (-2.697230875e-10,0) (-7.446974375e-06,0) (-5.385302829e-06,0) (-7.754818243e-26,0) (3.272970404e-10,0) (-3.370708344e-09,0) (9.449748969e-13,0) (3.578609755e-09,0) (7.610061635e-23,0) (9.0329589e-09,0) (1.116684355e-10,0) (8.917771118e-07,0) (5.110647247e-06,0) (4.63221143e-23,0) (2.385951371e-08,0) (1.501339326e-10,0) (2.921382097e-06,0) (1.83702408e-06,0) -(0.02917389264,0) (0.008838028944,0) (-0.001424096841,0) (0.001390526193,0) (-0.0003488462539,0) (3.20272016e-05,0) (1.878777362e-05,0) (1.011353251e-06,0) (-9.024838172e-06,0) (-5.66671952e-06,0) (1.99122386e-06,0) (-5.609910046e-07,0) (-2.414963783e-06,0) (3.131764434e-06,0) (0.02113859613,0) (-0.02661209925,0) (-7.166687639e-05,0) (4.97322524e-07,0) (0.03782720766,0) (-5.177796953e-06,0) (-1.043334764e-08,0) (-0.004535076858,0) (-4.088571921e-05,0) (7.933896824e-08,0) (0.001461529417,0) (-1.081506332e-10,0) (9.410884509e-08,0) (-0.0002381860178,0) (1.194202806e-06,0) (-4.647773923e-10,0) (1.261180451e-06,0) (1.372863619e-10,0) (1.038364612e-06,0) (4.216515965e-05,0) (9.30177865e-11,0) (2.694383648e-07,0) (2.749813509e-06,0) (-2.841116772e-11,0) (-1.995626923e-07,0) (-3.784413631e-05,0) (1.343156087e-10,0) (4.046369427e-06,0) (2.801726811e-06,0) (6.603081789e-07,0) (-1.781739592e-10,0) (-1.048868705e-07,0) (-4.49845343e-11,0) (-4.575800789e-07,0) (-3.241043012e-06,0) (-4.809009413e-11,0) (-7.612857105e-07,0) (-3.494038197e-06,0) (0,0) (-0.0001781248725,0) (-5.875863018e-06,0) (-0.00325358254,0) (-0.03202255516,0) (-8.67361738e-19,0) (2.27129912e-06,0) (-0.002309571161,0) (4.314038673e-06,0) (0.02951567944,0) (0,0) (9.109152453e-08,0) (7.736946357e-07,0) (6.824590353e-09,0) (0.002846967579,0) (0,0) (-1.380258363e-08,0) (-0.00014659622,0) (-2.405362853e-07,0) (-0.000837203801,0) (0,0) (1.804379704e-07,0) (1.404322281e-07,0) (4.172190712e-10,0) (0.0002216784642,0) (0,0) (2.542909593e-08,0) (2.030650731e-10,0) (-3.866749846e-08,0) (3.31291695e-05,0) (-2.64697796e-23,0) (-1.148514282e-08,0) (-6.330232694e-10,0) (-4.027290359e-06,0) (-3.296411943e-06,0) (0,0) (-1.548017159e-09,0) (-4.061005464e-11,0) (4.700979461e-08,0) (-5.014173148e-06,0) (-4.001910504e-10,0) (-8.470329473e-22,0) (-4.040786576e-12,0) (-5.617850981e-07,0) (-2.586134062e-05,0) (5.29395592e-23,0) (7.229839581e-09,0) (2.418124915e-10,0) (6.181658491e-06,0) (1.538533616e-06,0) (-2.64697796e-23,0) (5.335196032e-09,0) (3.786615396e-07,0) (-2.026498209e-10,0) (1.980117903e-07,0) (-6.313576244e-09,0) (0,0) (-1.199476441e-10,0) (-1.961240248e-06,0) (-3.991018329e-06,0) (-2.117582368e-22,0) (-1.197908084e-08,0) (-2.132048396e-10,0) (-1.09602752e-06,0) (-5.6965094e-07,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0.0616499241,0) (-0.05612508663,0) (-0.005524837477,0) (-0.09849767551,0) (0.003987118413,0) (0.0945105571,0) (-0.03774692604,0) (-0.03968505748,0) (0.07743198352,0) (-0.01322794725,0) (-0.0355135707,0) (0.04874151795,0) (-0.03985523459,0) (0.009503484414,0) (0.03035175017,0) (-0.02158210048,0) (0.004347737172,0) (0.01723436331,0) (-0.01398296519,0) (0.00355609991,0) (0.01042686528,0) (-0.002231696874,0) (-0.003401939794,0) (0.005633636669,0) (-0.004236003097,0) (0.0009642830837,0) (0.003271720014,0) (-0.0007253584191,0) (-0.0008634759321,0) (0.001588834351,0) (-0.000973594934,0) (0.0001368578979,0) (0.0008367370361,0) (-6.904381328e-05,0) (-0.0002476788081,0) (0.0003167226213,0) (-0.0001631146387,0) (1.171560823e-05,0) (0.0001513990305,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.0006430541106,0) (-0.002209624475,0) (-2.335865557e-06,0) (-0.0002782637621,0) (-2.751354053e-05,0) (-4.977489973e-05,0) (-5.19439452e-06,0) (-3.03377501e-06,0) (-4.441312862e-06,0) (-1.389602407e-06,0) (-1.616956109e-07,0) (-3.140627274e-08,0) (-4.069859621e-07,0) (-0.02315446542,0) (0.02486709624,0) (-0.0002113144789,0) (-0.002883591821,0) (0.002752586386,0) (-0.002965630851,0) (-0.0002318971576,0) (0.0002190437346,0) (-0.0007133624739,0) (-0.0002270707624,0) (0.0002787001547,0) (-0.0001841079618,0) (1.946548646e-05,0) (-1.743881751e-05,0) (-0.0002488508671,0) (6.647567465e-06,0) (-1.942370938e-05,0) (-1.356825305e-06,0) (2.009289265e-06,0) (-7.120632471e-06,0) (-2.917357685e-05,0) (2.017518414e-06,0) (8.169870928e-06,0) (-1.023318319e-05,0) (1.202217678e-06,0) (7.088695561e-07,0) (-1.562354862e-05,0) (4.044755587e-07,0) (3.404607548e-08,0) (-4.521418737e-07,0) (1.300895681e-06,0) (-2.972631304e-06,0) (1.388004183e-06,0) (1.167951802e-06,0) (1.454595627e-06,0) (-3.315964822e-06,0) (6.652579445e-07,0) (1.014281671e-06,0) (-2.410363274e-06,0) (2.168404345e-18,0) (-0.001830745551,0) (-0.04184804203,0) (0.04614153827,0) (-0.0003918889316,0) (8.67361738e-19,0) (-1.505671622e-05,0) (-0.0107099765,0) (0.01335057348,0) (-0.003158834692,0) (-1.355252716e-20,0) (-6.739309617e-07,0) (-3.000331146e-05,0) (3.095587548e-05,0) (-0.001514871375,0) (1.355252716e-20,0) (-1.267303586e-10,0) (-0.0008741803541,0) (0.0008591989311,0) (5.958119995e-05,0) (-2.117582368e-21,0) (-6.219833605e-07,0) (4.261561381e-06,0) (-4.506042692e-06,0) (-0.0002959797984,0) (-2.117582368e-22,0) (-2.325279806e-06,0) (1.61001834e-05,0) (1.56959449e-05,0) (-3.949717088e-05,0) (-4.235164736e-21,0) (-2.219766983e-06,0) (2.561091166e-05,0) (-3.502433912e-05,0) (-1.382955411e-05,0) (5.29395592e-21,0) (-1.682357216e-06,0) (1.529640096e-05,0) (-6.160454092e-06,0) (-2.125727712e-05,0) (0,0) (-7.037685441e-08,0) (3.9958929e-07,0) (2.960709067e-07,0) (-8.452535281e-06,0) (1.058791184e-22,0) (-1.588206347e-07,0) (1.504087388e-06,0) (-4.685734219e-06,0) (2.429661067e-06,0) (0,0) (-2.96845995e-10,0) (-7.277574765e-07,0) (4.071144148e-06,0) (-3.096918026e-06,0) (-4.367513634e-22,0) (-3.56383646e-07,0) (2.252412441e-06,0) (2.637815303e-06,0) (-5.847758739e-06,0) (-1.32348898e-23,0) (-2.276567175e-07,0) (1.337660336e-06,0) (1.200711633e-06,0) (-2.564584225e-06,0) -(-0.01091369342,0) (-0.04131632783,0) (-0.0004679952334,0) (-0.004601739364,0) (-0.0009625373212,0) (-0.000644989832,0) (-0.0001996634222,0) (-1.619117925e-05,0) (-0.0001105964721,0) (-6.854775913e-06,0) (-5.091165187e-06,0) (-3.381943069e-06,0) (-6.962613624e-06,0) (0.02620752866,0) (0.002224269497,0) (-0.001000892129,0) (0.0003047929621,0) (0.003673383099,0) (-0.05422961591,0) (-1.170549913e-05,0) (0.0001381032981,0) (-0.01748116626,0) (5.58488008e-05,0) (0.0003390297478,0) (-0.001362512354,0) (6.763664198e-06,0) (2.347166408e-06,0) (-0.005173910596,0) (-1.001395262e-05,0) (8.679345149e-06,0) (-1.134781363e-05,0) (4.708510543e-06,0) (-1.51237669e-05,0) (-0.0006345178053,0) (7.640857198e-06,0) (-8.106428758e-06,0) (-8.057400327e-05,0) (4.942920937e-07,0) (-1.090440533e-06,0) (-0.0002032277807,0) (4.625928184e-07,0) (-3.831370518e-06,0) (-2.711142746e-06,0) (-2.393650938e-06,0) (1.517526643e-06,0) (4.079308649e-07,0) (9.838166031e-07,0) (-2.85806264e-06,0) (-1.98571424e-05,0) (5.56293275e-07,0) (-1.496586117e-06,0) (-6.720478032e-06,0) (-2.168404345e-19,0) (4.480721443e-05,0) (0.04632333236,0) (-0.001379381288,0) (-0.01073557061,0) (0,0) (2.884086942e-05,0) (0.002367327906,0) (0.01585694053,0) (-0.01995489753,0) (0,0) (-5.527808322e-07,0) (2.718459272e-06,0) (0.0001926337373,0) (-0.02909695075,0) (0,0) (-4.47964897e-09,0) (-9.694780846e-05,0) (0.0008472184569,0) (-0.0008468054569,0) (5.421010862e-20,0) (-2.241467871e-06,0) (-2.480320484e-06,0) (3.082178995e-05,0) (-0.004571428628,0) (1.355252716e-20,0) (-3.003345517e-07,0) (9.997786745e-06,0) (1.10553403e-06,0) (-0.0006493401365,0) (0,0) (-2.479739066e-07,0) (3.770913572e-05,0) (-0.0001390322279,0) (-0.0001175146047,0) (0,0) (-8.278796515e-08,0) (9.703906891e-06,0) (4.395115462e-06,0) (-0.0004388356181,0) (-3.966417036e-10,0) (0,0) (3.483258316e-08,0) (-1.062099363e-06,0) (-4.860039762e-05,0) (-8.470329473e-22,0) (-1.83956344e-08,0) (2.297772888e-06,0) (-2.83623588e-05,0) (-7.201757854e-06,0) (0,0) (-3.23672139e-08,0) (-3.897417542e-06,0) (4.070176231e-06,0) (-1.782127644e-06,0) (-1.71723915e-08,0) (0,0) (1.666924655e-06,0) (-8.914065602e-06,0) (-1.780002849e-05,0) (0,0) (-3.673872713e-09,0) (1.208697071e-06,0) (-1.088177979e-06,0) (-4.919808827e-07,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (-0.06251041084,0) (-0.02312716577,0) (0.08563757661,0) (-0.03295383896,0) (0.1276303109,0) (-0.0946764719,0) (0.1030608728,0) (-0.02550019993,0) (-0.07756067291,0) (0.0673281933,0) (-0.01850623727,0) (-0.04882195603,0) (-0.003708510075,0) (0.03411132104,0) (-0.03040281096,0) (0.01146538456,0) (0.005797797515,0) (-0.01726318207,0) (-0.0006699053532,0) (0.01111428551,0) (-0.01044438016,0) (0.007652943725,0) (-0.002009962988,0) (-0.005642980737,0) (-0.0004988181503,0) (0.003776045562,0) (-0.003277227412,0) (0.002131064227,0) (-0.0005395912934,0) (-0.001591472934,0) (-0.0002399694735,0) (0.00107812515,0) (-0.0008381556767,0) (0.0004388767921,0) (-0.000121633216,0) (-0.0003172435761,0) (-5.066889512e-05,0) (0.0002023292553,0) (-0.0001516603602,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.01463443893,0) (0.0502859929,0) (5.315895081e-05,0) (0.006332645988,0) (0.0006261451749,0) (0.001132762731,0) (0.0001182125239,0) (6.904177173e-05,0) (0.0001010741099,0) (3.162416853e-05,0) (3.679821814e-06,0) (7.147348455e-07,0) (9.262068479e-06,0) (-0.009313391119,0) (-0.02485528906,0) (2.158341618e-06,0) (-0.0009642227618,0) (-0.002752518914,0) (0.07418909208,0) (-7.592983434e-05,0) (-0.0002192988358,0) (0.01682223941,0) (-0.0001078732284,0) (-0.0002790327477,0) (0.003401814836,0) (-1.969725446e-05,0) (-7.352308847e-06,0) (0.005644203073,0) (-6.658775869e-06,0) (1.481098257e-05,0) (0.000313481762,0) (-2.012532792e-06,0) (7.210277511e-06,0) (0.0007750485214,0) (2.629829628e-06,0) (-8.184795682e-06,0) (6.597129124e-06,0) (-1.204185994e-06,0) (9.994640053e-07,0) (0.0003122689409,0) (-4.05238327e-07,0) (3.652865445e-08,0) (6.786751343e-07,0) (-1.303286861e-06,0) (2.952998217e-06,0) (4.80736646e-06,0) (-1.169838614e-06,0) (3.186477351e-06,0) (1.376395317e-05,0) (-6.663773466e-07,0) (2.4025461e-06,0) (1.489570409e-05,0) (0,0) (-0.0005631257223,0) (-0.01669247861,0) (-0.04613755182,0) (0.01626508487,0) (2.439454888e-19,0) (-8.490090396e-06,0) (-0.005142060373,0) (-0.01336677666,0) (0.03065388695,0) (4.607859233e-19,0) (-2.601810625e-07,0) (-1.103815192e-05,0) (-3.097608686e-05,0) (0.03451093673,0) (1.016439537e-20,0) (-3.774812831e-11,0) (-0.0002830758546,0) (-0.0008602105367,0) (0.0001283005263,0) (-1.355252716e-19,0) (-2.367183435e-07,0) (-4.268285589e-06,0) (-9.777383985e-07,0) (0.006761023897,0) (6.035109749e-21,0) (-6.8364659e-07,0) (-1.612492008e-05,0) (3.081896923e-05,0) (0.0002141657343,0) (1.482307658e-21,0) (-9.918547086e-07,0) (-2.565648968e-05,0) (-1.776462113e-06,0) (0.0006078986526,0) (-1.672890071e-20,0) (-4.959282655e-07,0) (-1.532305696e-05,0) (-4.336478179e-06,0) (0.0003342957791,0) (1.058791184e-22,0) (-2.228367745e-08,0) (-4.002309418e-07,0) (4.816661111e-07,0) (0.0001780711778,0) (2.382280164e-22,0) (-8.446585262e-08,0) (-1.506512155e-06,0) (1.160455761e-05,0) (1.071428823e-05,0) (-1.32348898e-23,0) (1.991555512e-09,0) (-3.123218372e-07,0) (-4.078876345e-06,0) (-1.21309979e-06,0) (-3.97046694e-22,0) (-9.18463487e-08,0) (-2.255974777e-06,0) (6.034671105e-06,0) (2.62148383e-05,0) (-6.6174449e-23,0) (-5.222643711e-08,0) (-1.339863123e-06,0) (5.215289271e-06,0) (1.954276747e-06,0) -(-0.003549268956,0) (-0.01343658413,0) (-0.0001521978757,0) (-0.001496542925,0) (-0.0003130291189,0) (-0.0002097587224,0) (-6.49330304e-05,0) (-5.265573046e-06,0) (-3.596734947e-05,0) (-2.229258458e-06,0) (-1.655710296e-06,0) (-1.099849986e-06,0) (-2.264328624e-06,0) (-0.02625611128,0) (0.03211320294,0) (0.003063780447,0) (0.004903291854,0) (-0.003682232749,0) (-0.01756345289,0) (0.0001924317751,0) (-0.0001384529431,0) (-0.005697965572,0) (0.0004391819773,0) (-0.000339842748,0) (-0.0004140257883,0) (-6.779946273e-06,0) (7.980037421e-06,0) (-0.001680857268,0) (1.12590218e-05,0) (-8.694108655e-06,0) (-6.689394366e-06,0) (-4.720166369e-06,0) (6.909971635e-06,0) (-0.0002119300653,0) (-7.660029649e-06,0) (-6.315433174e-06,0) (-1.237961572e-05,0) (-4.954443068e-07,0) (-7.960133638e-07,0) (-6.499462137e-05,0) (-4.636178842e-07,0) (-6.185385077e-08,0) (-1.451794079e-06,0) (8.328918145e-07,0) (-1.520070884e-06,0) (5.349167374e-07,0) (-9.861286637e-07,0) (-1.906935634e-06,0) (-4.174253742e-06,0) (-5.575045068e-07,0) (-9.86831296e-07,0) (-9.470422496e-07,0) (0,0) (0.002828880622,0) (-0.04641579736,0) (-0.001282046906,0) (0.05600852667,0) (-4.33680869e-19,0) (0.0007314810716,0) (0.01984557116,0) (-0.01589400852,0) (-0.005236486429,0) (0,0) (8.808045082e-06,0) (0.0002536017549,0) (-0.0001931366618,0) (-0.009468612536,0) (-5.421010862e-20,0) (2.225154949e-07,0) (0.001174190644,0) (-0.0008494051089,0) (-0.0003564038288,0) (0,0) (3.442811834e-05,0) (9.018351715e-06,0) (-3.090440545e-05,0) (-0.001490739516,0) (0,0) (4.609909213e-06,0) (-1.002012226e-05,0) (8.682331798e-06,0) (-0.0002109323487,0) (-5.082197684e-21,0) (3.659487597e-06,0) (-3.781049624e-05,0) (2.895905309e-05,0) (-6.605743182e-05,0) (-3.388131789e-21,0) (1.226847403e-06,0) (-9.727843585e-06,0) (8.073711052e-06,0) (-0.0001377292668,0) (8.320855081e-09,0) (0,0) (-3.491009668e-08,0) (-4.928831568e-07,0) (-1.562019084e-05,0) (-1.058791184e-22,0) (3.508562431e-07,0) (-2.303710515e-06,0) (-4.342307445e-06,0) (-4.529449878e-06,0) (2.117582368e-22,0) (5.141031785e-07,0) (-2.076654126e-06,0) (-4.074920738e-06,0) (5.103558646e-06,0) (2.617659823e-07,0) (0,0) (-1.67094328e-06,0) (-4.923886331e-06,0) (-1.818172343e-06,0) (0,0) (1.916922473e-07,0) (-1.21138326e-06,0) (-5.785828522e-07,0) (1.476275077e-06,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0.08286250691,0) (0.02431037598,0) (0.06871438145,0) (0.04930718395,0) (0.09326492082,0) (0.1255216072,0) (0.1061377676,0) (0.01064733091,0) (0.1028501942,0) (0.06073138578,0) (0.01278119823,0) (0.06474155448,0) (0.02720911517,0) (0.01856972471,0) (0.04031468813,0) (0.02489475137,0) (0.001098999625,0) (0.02289168401,0) (0.01002216348,0) (0.005704391145,0) (0.01384947954,0) (0.007451325099,0) (0.001045456362,0) (0.007482962107,0) (0.00281298841,0) (0.002121681757,0) (0.004345654447,0) (0.002153156807,0) (0.0002431658316,0) (0.002110392238,0) (0.000552027313,0) (0.0007100396512,0) (0.001111378275,0) (0.0003829383684,0) (9.474450534e-05,0) (0.0004206906223,0) (8.459498418e-05,0) (0.0001437766924,0) (0.0002010868071,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.01151542489,0) (0.03956862145,0) (4.182927054e-05,0) (0.004982979502,0) (0.0004926958775,0) (0.0008913388619,0) (9.301808191e-05,0) (5.432701179e-05,0) (7.953235012e-05,0) (2.488416119e-05,0) (2.895547407e-06,0) (5.624045764e-07,0) (7.288058967e-06,0) (0.01044095573,0) (0.03297631033,0) (0.0001606173415,0) (0.001446472844,0) (0.003652617632,0) (0.05815477759,0) (0.0001173327325,0) (0.0002910130741,0) (0.01321743319,0) (8.960512001e-05,0) (0.000370321967,0) (0.002702735249,0) (2.612306591e-05,0) (7.450636785e-06,0) (0.004441884828,0) (8.839061027e-06,0) (2.57761275e-05,0) (0.0002373242255,0) (2.671175919e-06,0) (1.079249771e-05,0) (0.0006061888617,0) (4.643013261e-07,0) (1.085909936e-05,0) (1.26714713e-05,0) (1.598089418e-06,0) (2.20050347e-07,0) (0.0002471462147,0) (5.375848748e-07,0) (1.919689554e-09,0) (8.5178208e-07,0) (1.732231442e-06,0) (4.45895687e-06,0) (2.579457553e-06,0) (1.552409348e-06,0) (1.30742986e-06,0) (1.287012362e-05,0) (8.842413405e-07,0) (1.047868629e-06,0) (1.304197819e-05,0) (-6.505213035e-19,0) (0.0009533201785,0) (0.01896428393,0) (0.06121497228,0) (0.0125521507,0) (-3.252606517e-19,0) (4.931195373e-06,0) (0.004185764753,0) (0.017738704,0) (0.02547954574,0) (-1.219727444e-18,0) (3.110674544e-07,0) (1.42753078e-05,0) (4.111206382e-05,0) (0.02715447401,0) (1.355252716e-20,0) (6.693630906e-11,0) (0.0004446572613,0) (0.001141388293,0) (5.175547801e-05,0) (-2.710505431e-20,0) (2.896624921e-07,0) (5.66493273e-06,0) (2.653219922e-06,0) (0.005319222649,0) (4.446922973e-21,0) (1.23469439e-06,0) (2.140210977e-05,0) (1.142126714e-05,0) (0.0001911500099,0) (4.235164736e-21,0) (9.22882494e-07,0) (3.405631521e-05,0) (2.500444833e-05,0) (0.000468632467,0) (-1.270549421e-20,0) (8.923175134e-07,0) (2.033674126e-05,0) (1.365401367e-06,0) (0.0002679810755,0) (-3.388131789e-21,0) (3.61685241e-08,0) (5.311357506e-07,0) (1.40319171e-07,0) (0.0001405914279,0) (7.676236084e-22,0) (5.585209319e-08,0) (1.999539627e-06,0) (1.227245632e-05,0) (6.248313256e-06,0) (2.64697796e-23,0) (1.724997877e-09,0) (3.122744061e-07,0) (5.411018301e-06,0) (1.415448965e-06,0) (8.999725065e-22,0) (1.989853278e-07,0) (2.994061638e-06,0) (2.564169571e-06,0) (2.415994883e-05,0) (-5.29395592e-23,0) (1.319703087e-07,0) (1.777963699e-06,0) (3.027655855e-06,0) (3.402615008e-06,0) -(0.00553605759,0) (0.02095803515,0) (0.0002373942959,0) (0.002334268809,0) (0.0004882546943,0) (0.0003271762106,0) (0.0001012808553,0) (8.213104159e-06,0) (5.610093811e-05,0) (3.477139478e-06,0) (2.582533942e-06,0) (1.715517459e-06,0) (3.531841012e-06,0) (0.03483145319,0) (0.02253296123,0) (0.003063275652,0) (0.003468356907,0) (0.004882815777,0) (0.02756244955,0) (0.0001539254955,0) (0.0001835979054,0) (0.008857709221,0) (0.0002891550959,0) (0.0004506771526,0) (0.0007129915528,0) (8.993340896e-06,0) (4.250060433e-06,0) (0.002625833686,0) (1.60314874e-05,0) (1.152525194e-05,0) (3.496369595e-06,0) (6.261644115e-06,0) (1.658833738e-05,0) (0.0003176578563,0) (1.01594509e-05,0) (1.337741548e-06,0) (5.129237847e-05,0) (6.572109132e-07,0) (2.20383207e-07,0) (0.0001039161773,0) (6.150600883e-07,0) (2.836013573e-06,0) (9.454592508e-07,0) (2.430401289e-06,0) (2.015296627e-06,0) (9.633593424e-08,0) (1.307998808e-06,0) (7.127991709e-07,0) (1.179406541e-05,0) (7.39491486e-07,0) (3.820896297e-07,0) (4.342680978e-06,0) (0,0) (0.002099748074,0) (0.06156955733,0) (7.114789054e-05,0) (0.05029811769,0) (0,0) (0.0005299594019,0) (0.01318363225,0) (0.02107802791,0) (0.01106375401,0) (2.168404345e-19,0) (7.058923414e-06,0) (0.0001891960434,0) (0.0002561189377,0) (0.01475511786,0) (0,0) (1.711878633e-07,0) (0.0009584736151,0) (0.001126274353,0) (0.0003682274248,0) (-2.710505431e-20,0) (2.7652106e-05,0) (8.673773527e-06,0) (4.097130545e-05,0) (0.002315825677,0) (0,0) (3.702756937e-06,0) (1.329608283e-05,0) (5.70924401e-06,0) (0.0003295600291,0) (2.541098842e-21,0) (2.946557407e-06,0) (5.015820037e-05,0) (0.0001264260713,0) (3.861267461e-05,0) (-6.776263578e-21,0) (9.875766575e-07,0) (1.29029779e-05,0) (2.779852115e-06,0) (0.0002263576027,0) (6.573952743e-09,0) (-4.235164736e-22,0) (4.630728464e-08,0) (4.275873786e-07,0) (2.47925857e-05,0) (3.705769144e-22,0) (2.784547616e-07,0) (3.05584326e-06,0) (1.806598778e-05,0) (2.003963724e-06,0) (4.235164736e-22,0) (4.120885495e-07,0) (1.368540015e-06,0) (5.405814955e-06,0) (5.188382974e-06,0) (2.103438461e-07,0) (-8.470329473e-22,0) (2.21632634e-06,0) (2.994934864e-06,0) (1.202228621e-05,0) (-1.058791184e-22,0) (1.473351266e-07,0) (1.60672927e-06,0) (3.824359347e-07,0) (1.483102828e-06,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (1.792468198e-05,0) (0.0015942032,0) (-0.1456492277,0) (-0.002288970907,0) (-0.04519188989,0) (1.349672706e-05,0) (0.01039062405,0) (-0.0008488810399,0) (-1.833908765e-06,0) (0.01281429128,0) (-0.0007629577502,0) (-2.261845447e-06,0) (-0.0009122039538,0) (-0.002265202916,0) (6.573132114e-07,0) (-6.462997956e-05,0) (-1.306935015e-05,0) (1.547562452e-08,0) (-0.0003155601183,0) (-0.000622467995,0) (1.928670741e-07,0) (0.0009669418372,0) (-7.371168797e-05,0) (-1.703585845e-07,0) (-9.854256778e-05,0) (-0.0002801178774,0) (7.871574193e-08,0) (0.0002283587626,0) (-1.837131481e-05,0) (-4.027933956e-08,0) (-2.384812022e-05,0) (-0.0001639726644,0) (4.130690869e-08,0) (0.000109272375,0) (-5.321956378e-06,0) (-1.92916415e-08,0) (-3.927606724e-06,0) (-5.36331914e-05,0) (1.42199673e-08,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.07546254497,0) (-0.1102916257,0) (-0.00234947156,0) (0.01401379174,0) (0.002871750125,0) (-0.002111406963,0) (-0.0005266747028,0) (0.0002176780091,0) (0.0002315114256,0) (-6.430989108e-05,0) (-2.170284735e-05,0) (-3.916024248e-06,0) (1.675001957e-05,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.02292890543,0) (-0.02156692623,0) (0.0004740621088,0) (7.361676329e-05,0) (-0.0001419997048,0) (-0.0002551409173,0) (0.0001553787796,0) (3.72847108e-05,0) (-7.802805272e-05,0) (-1.579718001e-05,0) (1.229415824e-05,0) (-9.719602051e-06,0) (-1.29483986e-05,0) (1.933695861e-06,0) (-0.03199064087,0) (-0.02299221789,0) (0.005912559672,0) (-1.447272914e-06,0) (-0.01738794072,0) (9.397260481e-05,0) (-1.564861596e-08,0) (0.0007387482168,0) (-3.585040966e-06,0) (9.420694424e-10,0) (5.436834395e-06,0) (1.247478056e-09,0) (-2.065379919e-05,0) (-0.0005520810976,0) (3.049198037e-05,0) (-4.763408986e-09,0) (-3.993073118e-05,0) (1.606572917e-09,0) (-5.581744661e-05,0) (0.0003202683844,0) (1.293499994e-09,0) (4.343975792e-06,0) (-0.0001240359772,0) (1.831224303e-10,0) (3.841493541e-06,0) (-0.0001108992143,0) (2.350780239e-10,0) (-1.286536979e-06,0) (1.161940272e-05,0) (2.387046427e-06,0) (-5.316445846e-11,0) (-3.410339354e-06,0) (2.467585767e-10,0) (2.105845968e-06,0) (-3.536965701e-05,0) (1.560307562e-10,0) (7.77950799e-07,0) (-2.080929823e-05,0) (5.204170428e-18,0) (0.004449681879,0) (9.875566194e-08,0) (0.0001906725663,0) (-0.09897492918,0) (-2.168404345e-19,0) (0.001163767271,0) (0.008173532278,0) (-2.023388919e-06,0) (-0.002208672077,0) (0,0) (1.441241402e-05,0) (0.000103430604,0) (-2.303572953e-08,0) (-0.0003443707994,0) (-1.694065895e-21,0) (3.546892966e-07,0) (5.564768243e-05,0) (-8.856789814e-09,0) (7.598111631e-06,0) (0,0) (5.613041285e-05,0) (4.007349356e-05,0) (-3.375795271e-08,0) (-0.0002635377927,0) (-6.776263578e-21,0) (7.519930189e-06,0) (1.577459173e-08,0) (5.364558862e-05,0) (0.0001286262247,0) (5.082197684e-21,0) (5.974666933e-06,0) (5.496789673e-09,0) (-0.0001421887402,0) (9.710076482e-05,0) (0,0) (2.003154677e-06,0) (1.839710283e-09,0) (-2.388494044e-05,0) (-8.647148753e-05,0) (1.340554525e-08,0) (-8.470329473e-22,0) (1.451967495e-11,0) (6.909246837e-06,0) (-2.592891019e-05,0) (0,0) (5.713850495e-07,0) (6.845034665e-10,0) (-1.519996164e-05,0) (1.399723361e-05,0) (-1.270549421e-21,0) (8.393777059e-07,0) (-4.576572648e-07,0) (8.775775864e-10,0) (-2.393998219e-05,0) (4.258067386e-07,0) (4.235164736e-22,0) (3.864907411e-10,0) (8.138608507e-06,0) (-3.005827211e-05,0) (-8.470329473e-22,0) (3.050299829e-07,0) (2.42261127e-10,0) (-2.173739453e-07,0) (-1.107271747e-05,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0.0008056940932,0) (0.08598772848,0) (0.01418116593,0) (0.03748567322,0) (0.0005069597758,0) (-1.361692173e-05,0) (-0.002436983511,0) (-0.002240139213,0) (1.540598429e-06,0) (-0.002840072602,0) (-0.006159742645,0) (2.994578451e-06,0) (0.001968803752,0) (-0.0004011031198,0) (-5.179052102e-07,0) (0.0001835878932,0) (-3.418482576e-05,0) (-4.922683088e-08,0) (0.001015095094,0) (-0.0002251307824,0) (-2.613155229e-07,0) (-0.0002622025914,0) (-0.0003413494461,0) (1.992736509e-07,0) (0.0002644203416,0) (-5.066131264e-05,0) (-7.068415912e-08,0) (-7.132799777e-05,0) (-7.372500718e-05,0) (4.784728731e-08,0) (0.0001497079056,0) (-1.431185483e-05,0) (-4.529799756e-08,0) (-1.821450758e-05,0) (-5.065552207e-05,0) (2.302489451e-08,0) (3.798269516e-05,0) (-7.824682005e-07,0) (-1.268593802e-08,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.03306914808,0) (0.02963387403,0) (-0.0001989941228,0) (-0.0001075587721,0) (0.0001426440602,0) (0.0004211246611,0) (-0.0001489058348,0) (-9.589258415e-05,0) (9.290468493e-05,0) (4.226005073e-05,0) (-1.301790565e-05,0) (5.565130283e-06,0) (1.860036328e-05,0) (0.02926571414,0) (-5.233749665e-05,0) (0.004673081751,0) (-0.00362435917,0) (4.545799097e-06,0) (0.02638077972,0) (-7.992001587e-05,0) (2.568906514e-08,0) (-0.0009236595288,0) (1.910721583e-06,0) (-9.273966112e-10,0) (-1.104819657e-05,0) (2.172620418e-07,0) (2.679708471e-05,0) (0.000730282638,0) (-1.760161639e-09,0) (-5.697878921e-05,0) (0.0003034798675,0) (2.554106455e-10,0) (4.416018281e-05,0) (-0.0004472785039,0) (-4.815784398e-08,0) (2.380958854e-09,0) (6.308274014e-05,0) (1.807232962e-10,0) (-3.901393542e-06,0) (0.0001694230918,0) (4.06153188e-11,0) (-1.146048646e-07,0) (1.07843805e-05,0) (7.316866297e-10,0) (2.233056699e-06,0) (-1.773625471e-05,0) (1.931154678e-10,0) (-2.832235242e-06,0) (3.696293445e-05,0) (9.509970693e-11,0) (-3.185200628e-06,0) (3.456667511e-05,0) (-2.168404345e-18,0) (-0.00284257667,0) (0.05732018934,0) (-8.295705307e-05,0) (0.01698074865,0) (-2.710505431e-19,0) (6.976167755e-05,0) (-0.005208299287,0) (2.425392242e-06,0) (0.003898029682,0) (-8.131516294e-20,0) (1.369639726e-06,0) (-3.330977184e-05,0) (2.316105747e-08,0) (0.0005276356672,0) (2.117582368e-22,0) (6.427763033e-09,0) (-3.902065515e-05,0) (1.008984649e-08,0) (-2.047743501e-06,0) (-1.694065895e-20,0) (2.252124931e-07,0) (-5.827660155e-10,0) (-2.784067985e-05,0) (0.0004421855303,0) (-3.388131789e-21,0) (1.25482395e-06,0) (-3.150489814e-09,0) (5.903793265e-05,0) (-0.0002242549974,0) (-3.388131789e-21,0) (-1.819824513e-06,0) (1.356734793e-08,0) (9.261243859e-05,0) (-0.0001806069212,0) (-7.835054762e-21,0) (-1.383388018e-06,0) (6.792974981e-09,0) (1.657555103e-05,0) (0.0001021695525,0) (2.329340605e-21,0) (-1.179134865e-08,0) (3.065983203e-11,0) (-4.066691132e-06,0) (5.42395716e-05,0) (-9.529120657e-22,0) (-5.858694103e-08,0) (2.453479878e-10,0) (1.630524542e-05,0) (-2.371439697e-05,0) (1.588186776e-22,0) (-4.732725524e-11,0) (-4.061021922e-07,0) (1.103310071e-09,0) (1.257948399e-05,0) (6.352747104e-22,0) (-1.70912097e-07,0) (4.612254458e-10,0) (-1.071839513e-05,0) (3.584446582e-05,0) (-4.235164736e-22,0) (-8.927826945e-08,0) (2.261947935e-10,0) (-3.135211927e-06,0) (1.651072366e-05,0) -(0.05232289484,0) (0.08026798496,0) (0.005597127326,0) (-0.009591500245,0) (-0.002858777782,0) (0.00127920865,0) (0.000549569281,0) (-8.463701011e-05,0) (-0.0001944399869,0) (2.403960497e-05,0) (2.049624931e-05,0) (6.839408132e-06,0) (-1.166030613e-05,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.2731656004,0) (0.01615280688,0) (-0.02892567571,0) (-0.00681892694,0) (0.00311081643,0) (-0.0001242414384,0) (9.142358452e-06,0) (0.0001499983368,0) (-0.0001504484689,0) (9.162783375e-05,0) (-7.145343949e-05,0) (6.119624794e-05,0) (-3.277313972e-05,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.2695462447,0) (0.02324389201,0) (-0.03424272561,0) (-0.004333899483,0) (0.002291534039,0) (4.332848919e-05,0) (0.0001066902242,0) (-2.294053818e-05,0) (1.892984583e-05,0) (-3.739677434e-05,0) (2.322309841e-05,0) (-2.861059199e-06,0) (6.880804962e-06,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.1208306479,0) (-0.009094799051,0) (-0.002843835608,0) (4.385357727e-05,0) (0.000101455379,0) (-2.497568383e-05,0) (2.882303202e-05,0) (4.591201175e-06,0) (1.25522063e-05,0) (2.574477926e-05,0) (9.479225358e-06,0) (3.178405029e-06,0) (8.85371498e-06,0) (1.738623898e-10,0) (-0.03001102387,0) (0.1997440824,0) (-0.0001221715915,0) (-1.474070406e-10,0) (-0.02386352647,0) (-3.161081699e-06,0) (8.892664166e-13,0) (-0.0003782332269,0) (5.069147332e-07,0) (1.658455888e-13,0) (1.114472307e-05,0) (-1.500172006e-14,0) (-4.573358943e-07,0) (5.007857078e-05,0) (2.271380542e-06,0) (1.920933975e-13,0) (-1.440347086e-05,0) (3.522406586e-14,0) (-3.493952407e-06,0) (4.251167502e-05,0) (1.184301307e-14,0) (8.749326325e-07,0) (-6.649639108e-06,0) (-7.916366537e-15,0) (-3.478571729e-06,0) (4.038721491e-05,0) (5.133587681e-14,0) (-1.83560613e-06,0) (3.443235877e-05,0) (6.48529231e-07,0) (4.700311397e-15,0) (3.713046695e-06,0) (-8.486490438e-15,0) (-1.351843834e-06,0) (9.719683219e-06,0) (-1.014688338e-14,0) (-1.550010209e-06,0) (1.674276403e-05,0) (-1.734723476e-18,0) (-0.000377473387,0) (-9.424695399e-12,0) (-0.008719428334,0) (0.06301289739,0) (-4.33680869e-19,0) (4.987671827e-06,0) (-0.00143187811,0) (-4.141268852e-10,0) (-0.005892254741,0) (1.694065895e-21,0) (1.859842766e-07,0) (4.229671091e-07,0) (-6.138141033e-13,0) (-6.644558929e-05,0) (8.470329473e-22,0) (-2.859798928e-08,0) (-8.511178364e-06,0) (1.891527865e-12,0) (-1.727510638e-05,0) (-8.470329473e-22,0) (3.662671398e-07,0) (6.488075772e-07,0) (-3.437640454e-13,0) (-2.522670586e-05,0) (0,0) (5.164395866e-08,0) (2.409182211e-13,0) (-3.633301909e-07,0) (1.293020884e-05,0) (1.058791184e-22,0) (-2.328816091e-08,0) (-6.937242073e-14,0) (4.52940866e-06,0) (-8.289612776e-06,0) (0,0) (-3.139926191e-09,0) (-5.790193243e-15,0) (-4.039157833e-07,0) (1.915478012e-06,0) (-8.160659869e-10,0) (8.470329473e-22,0) (-1.266989765e-15,0) (-9.077704595e-06,0) (2.704664962e-05,0) (0,0) (1.483552381e-08,0) (5.416556846e-14,0) (-5.200987241e-06,0) (1.074630952e-05,0) (0,0) (1.08671901e-08,0) (-1.266292565e-07,0) (-3.289808164e-14,0) (-9.136562887e-07,0) (-1.278080324e-08,0) (-4.235164736e-22,0) (-2.091688994e-14,0) (-5.329587217e-06,0) (9.978394523e-06,0) (6.352747104e-22,0) (-2.480045938e-08,0) (-3.21468247e-14,0) (6.229744764e-07,0) (4.252964659e-06,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (1.333601076e-05,0) (-0.003680518671,0) (0.01171062439,0) (0.004572524643,0) (-0.001931974151,0) (1.016225988e-05,0) (-0.003695330387,0) (0.003163975381,0) (-1.380679875e-06,0) (-0.002791090092,0) (0.002119938484,0) (-1.702859645e-06,0) (0.001336173644,0) (-0.001159269776,0) (4.948719016e-07,0) (5.602991138e-05,0) (-5.170347486e-05,0) (1.165106662e-08,0) (0.0004402708215,0) (-0.0003880446353,0) (1.452039402e-07,0) (-0.0002896023254,0) (0.0002398595806,0) (-1.282564785e-07,0) (0.0001483925852,0) (-0.0001273107664,0) (5.926285014e-08,0) (-7.692981325e-05,0) (6.523609042e-05,0) (-3.032478854e-08,0) (4.206025406e-05,0) (-3.160521265e-05,0) (3.109924057e-08,0) (-1.970181647e-05,0) (1.391253042e-05,0) (-1.452397306e-08,0) (7.57314583e-06,0) (-4.370287337e-06,0) (1.070626807e-08,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.004214043356,0) (0.006158998385,0) (0.0001312011809,0) (-0.0007825700286,0) (-0.000160366703,0) (0.0001179069761,0) (2.941101487e-05,0) (-1.215575976e-05,0) (-1.292825713e-05,0) (3.591247411e-06,0) (1.211948785e-06,0) (2.186819431e-07,0) (-9.353687809e-07,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.04520166927,0) (0.04251668573,0) (-0.0009345582901,0) (-0.0001451268835,0) (0.0002799358963,0) (0.0005029806326,0) (-0.0003063111856,0) (-7.350246924e-05,0) (0.0001538232273,0) (3.114230238e-05,0) (-2.423650254e-05,0) (1.916106456e-05,0) (2.552626129e-05,0) (1.454931824e-06,0) (-0.003157854218,0) (0.007512458075,0) (0.0005195851016,0) (-1.088795504e-06,0) (0.03421108654,0) (-7.146290097e-06,0) (-1.177097021e-08,0) (-0.001457959397,0) (-6.924319911e-07,0) (7.086881675e-10,0) (-1.038967993e-05,0) (9.381966906e-10,0) (-1.140640338e-05,0) (0.001087813846,0) (-1.904659493e-05,0) (-3.587190187e-09,0) (0.0001295991408,0) (1.20807976e-09,0) (5.088937078e-05,0) (-0.0006397323042,0) (9.728329649e-10,0) (-2.632356776e-05,0) (0.0001948452291,0) (1.377274291e-10,0) (-1.900743854e-05,0) (0.0002168844333,0) (1.768045232e-10,0) (1.738073434e-06,0) (-3.331910854e-05,0) (-2.35095165e-06,0) (-4.003305574e-11,0) (-1.444095283e-05,0) (1.856004633e-10,0) (-8.44366819e-06,0) (5.955031546e-05,0) (1.173764161e-10,0) (-3.04711323e-06,0) (3.220324779e-05,0) (-7.589415207e-19,0) (9.495322441e-05,0) (7.430118958e-08,0) (-0.00369666856,0) (0.02112509155,0) (6.505213035e-19,0) (6.333326623e-05,0) (0.001467685891,0) (-1.522189737e-06,0) (0.003983623004,0) (2.710505431e-20,0) (-1.128629076e-06,0) (1.486140405e-06,0) (-1.732577337e-08,0) (0.0006790959101,0) (8.470329473e-22,0) (-9.281519799e-09,0) (-5.628658706e-06,0) (-6.662351652e-09,0) (-1.747322974e-05,0) (4.065758147e-20,0) (-4.549907229e-06,0) (-1.145926933e-05,0) (-2.539534721e-08,0) (0.0005202223217,0) (-6.776263578e-21,0) (-6.099495322e-07,0) (1.186146372e-08,0) (1.038789438e-05,0) (-0.0002534353773,0) (0,0) (-5.02811008e-07,0) (4.132508469e-09,0) (0.000156366619,0) (-0.0002955184562,0) (0,0) (-1.679232679e-07,0) (1.383585823e-09,0) (-3.776354522e-05,0) (0.0001676407959,0) (-8.088281908e-10,0) (1.694065895e-21,0) (1.092177589e-11,0) (-1.716212179e-05,0) (5.082791124e-05,0) (8.470329473e-22,0) (-3.774756953e-08,0) (5.146970487e-10,0) (2.38628948e-05,0) (-5.030265065e-05,0) (4.235164736e-22,0) (-6.59283491e-08,0) (1.303346218e-06,0) (6.607505923e-10,0) (8.223005948e-06,0) (-3.476269999e-08,0) (0,0) (2.906841531e-10,0) (-2.422359532e-05,0) (4.450385645e-05,0) (0,0) (-7.6060703e-09,0) (1.822462067e-10,0) (6.185128518e-07,0) (3.673086727e-06,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (-1.352214984e-05,0) (-0.001516611742,0) (-0.1815201801,0) (0.001529805043,0) (-0.06184377689,0) (-1.018009989e-05,0) (0.0100894037,0) (0.002033057526,0) (1.382974519e-06,0) (0.01420621429,0) (0.001104706844,0) (1.705669872e-06,0) (0.0001243303037,0) (-0.00416102366,0) (-4.957044252e-07,0) (-2.976561439e-05,0) (-6.894765397e-05,0) (-1.167054917e-08,0) (2.109279228e-05,0) (-0.001212800252,0) (-1.454478514e-07,0) (0.0009931054366,0) (0.0001417158764,0) (1.284692074e-07,0) (1.74742353e-05,0) (-0.0004985374759,0) (-5.936260932e-08,0) (0.0002260156754,0) (4.076642451e-05,0) (3.037514902e-08,0) (1.036691613e-05,0) (-0.0002489763116,0) (-3.115196758e-08,0) (0.0001252345373,0) (6.832339961e-06,0) (1.454786252e-08,0) (2.35247391e-06,0) (-7.547512391e-05,0) (-1.072474815e-08,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.09590197642,0) (-0.1401646988,0) (-0.002985838421,0) (0.01780950172,0) (0.003649578912,0) (-0.002683292763,0) (-0.0006693273457,0) (0.0002766372549,0) (0.0002942175258,0) (-8.172856693e-05,0) (-2.758117892e-05,0) (-4.976700232e-06,0) (2.128685141e-05,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.01470014553,0) (0.01382695546,0) (-0.0003039299897,0) (-4.71970691e-05,0) (9.103863821e-05,0) (0.000163575563,0) (-9.961621062e-05,0) (-2.390391798e-05,0) (5.002522838e-05,0) (1.012786441e-05,0) (-7.88201233e-06,0) (6.23141672e-06,0) (8.301457933e-06,0) (-1.457628927e-06,0) (-0.04559196335,0) (-0.02299600676,0) (0.008358714646,0) (1.091418551e-06,0) (0.01108001222,0) (0.0001174809611,0) (1.180077153e-08,0) (-0.0004752201501,0) (-5.445124097e-06,0) (-7.103876161e-10,0) (-3.157105631e-06,0) (-9.404551985e-10,0) (-3.878017573e-05,0) (0.0003533999622,0) (2.141472362e-05,0) (3.593291973e-09,0) (7.639707444e-05,0) (-1.211070338e-09,0) (-2.325109286e-05,0) (-0.0002136717171,0) (-9.75273999e-10,0) (-2.050776465e-05,0) (2.993656717e-05,0) (-1.380484768e-10,0) (-1.387528677e-05,0) (6.936217859e-05,0) (-1.771963067e-10,0) (2.805955058e-08,0) (-1.784210166e-05,0) (8.180342229e-07,0) (4.010017397e-11,0) (-1.893631504e-05,0) (-1.860366417e-10,0) (-5.633722485e-06,0) (1.251832324e-05,0) (-1.176319828e-10,0) (-2.00923065e-06,0) (4.53804567e-06,0) (1.734723476e-18,0) (0.005994823377,0) (-7.444950055e-08,0) (-0.003435817589,0) (-0.1102116782,0) (-1.084202172e-18,0) (0.001606299893,0) (0.01230377284,0) (1.525748086e-06,0) (0.001045366821,0) (-1.355252716e-20,0) (1.798364778e-05,0) (0.0001386402286,0) (1.737100717e-08,0) (0.0002209886563,0) (-1.694065895e-21,0) (4.610365646e-07,0) (6.817192153e-05,0) (6.679547034e-09,0) (-7.354140116e-06,0) (0,0) (6.988489398e-05,0) (4.1665471e-05,0) (2.546341754e-08,0) (0.0001696441168,0) (1.016439537e-20,0) (9.362266021e-06,0) (-1.188796278e-08,0) (8.158151922e-05,0) (-8.232622071e-05,0) (6.776263578e-21,0) (7.420259143e-06,0) (-4.143616472e-09,0) (-3.256963719e-05,0) (-0.000166117142,0) (3.388131789e-21,0) (2.488480358e-06,0) (-1.386998724e-09,0) (-6.937063544e-05,0) (5.261433427e-05,0) (1.696781277e-08,0) (0,0) (-1.09460803e-11,0) (-7.964340301e-06,0) (1.633611477e-05,0) (1.058791184e-21,0) (7.199518179e-07,0) (-5.160270666e-10,0) (3.653434698e-06,0) (-3.163718351e-05,0) (4.235164736e-22,0) (1.047169952e-06,0) (6.944596701e-07,0) (-6.615208134e-10,0) (-2.354858994e-05,0) (5.29902449e-07,0) (-2.117582368e-22,0) (-2.91384935e-10,0) (-1.338045233e-05,0) (4.545817498e-06,0) (-6.352747104e-22,0) (3.968631531e-07,0) (-1.826512278e-10,0) (3.288624992e-07,0) (-1.102174207e-05,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (1.792468198e-05,0) (0.0015942032,0) (-0.1456492277,0) (-0.002288970907,0) (-0.04519188989,0) (1.349672706e-05,0) (0.01039062405,0) (-0.0008488810399,0) (-1.833908765e-06,0) (0.01281429128,0) (-0.0007629577502,0) (-2.261845447e-06,0) (-0.0009122039538,0) (-0.002265202916,0) (6.573132114e-07,0) (-6.462997956e-05,0) (-1.306935015e-05,0) (1.547562452e-08,0) (-0.0003155601183,0) (-0.000622467995,0) (1.928670741e-07,0) (0.0009669418372,0) (-7.371168797e-05,0) (-1.703585845e-07,0) (-9.854256778e-05,0) (-0.0002801178774,0) (7.871574193e-08,0) (0.0002283587626,0) (-1.837131481e-05,0) (-4.027933956e-08,0) (-2.384812022e-05,0) (-0.0001639726644,0) (4.130690869e-08,0) (0.000109272375,0) (-5.321956378e-06,0) (-1.92916415e-08,0) (-3.927606724e-06,0) (-5.36331914e-05,0) (1.42199673e-08,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.07546254497,0) (-0.1102916257,0) (-0.00234947156,0) (0.01401379174,0) (0.002871750125,0) (-0.002111406963,0) (-0.0005266747028,0) (0.0002176780091,0) (0.0002315114256,0) (-6.430989108e-05,0) (-2.170284735e-05,0) (-3.916024248e-06,0) (1.675001957e-05,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.02292890543,0) (-0.02156692623,0) (0.0004740621088,0) (7.361676329e-05,0) (-0.0001419997048,0) (-0.0002551409173,0) (0.0001553787796,0) (3.72847108e-05,0) (-7.802805272e-05,0) (-1.579718001e-05,0) (1.229415824e-05,0) (-9.719602051e-06,0) (-1.29483986e-05,0) (1.933695861e-06,0) (-0.03199064087,0) (-0.02299221789,0) (0.005912559672,0) (-1.447272914e-06,0) (-0.01738794072,0) (9.397260481e-05,0) (-1.564861596e-08,0) (0.0007387482168,0) (-3.585040966e-06,0) (9.420694424e-10,0) (5.436834395e-06,0) (1.247478056e-09,0) (-2.065379919e-05,0) (-0.0005520810976,0) (3.049198037e-05,0) (-4.763408986e-09,0) (-3.993073118e-05,0) (1.606572917e-09,0) (-5.581744661e-05,0) (0.0003202683844,0) (1.293499994e-09,0) (4.343975792e-06,0) (-0.0001240359772,0) (1.831224303e-10,0) (3.841493541e-06,0) (-0.0001108992143,0) (2.350780239e-10,0) (-1.286536979e-06,0) (1.161940272e-05,0) (2.387046427e-06,0) (-5.316445846e-11,0) (-3.410339354e-06,0) (2.467585767e-10,0) (2.105845968e-06,0) (-3.536965701e-05,0) (1.560307562e-10,0) (7.77950799e-07,0) (-2.080929823e-05,0) (5.204170428e-18,0) (0.004449681879,0) (9.875566195e-08,0) (0.0001906725663,0) (-0.09897492918,0) (-2.168404345e-19,0) (0.001163767271,0) (0.008173532278,0) (-2.023388919e-06,0) (-0.002208672077,0) (-6.776263578e-21,0) (1.441241402e-05,0) (0.000103430604,0) (-2.303572953e-08,0) (-0.0003443707994,0) (-3.388131789e-21,0) (3.546892966e-07,0) (5.564768243e-05,0) (-8.856789814e-09,0) (7.598111631e-06,0) (0,0) (5.613041285e-05,0) (4.007349356e-05,0) (-3.375795271e-08,0) (-0.0002635377927,0) (0,0) (7.519930189e-06,0) (1.577459173e-08,0) (5.364558862e-05,0) (0.0001286262247,0) (0,0) (5.974666933e-06,0) (5.496789673e-09,0) (-0.0001421887402,0) (9.710076482e-05,0) (-3.388131789e-21,0) (2.003154677e-06,0) (1.839710283e-09,0) (-2.388494044e-05,0) (-8.647148753e-05,0) (1.340554525e-08,0) (0,0) (1.451967495e-11,0) (6.909246837e-06,0) (-2.592891019e-05,0) (4.235164736e-22,0) (5.713850495e-07,0) (6.845034665e-10,0) (-1.519996164e-05,0) (1.399723361e-05,0) (-8.470329473e-22,0) (8.393777059e-07,0) (-4.576572648e-07,0) (8.775775864e-10,0) (-2.393998219e-05,0) (4.258067386e-07,0) (1.270549421e-21,0) (3.864907411e-10,0) (8.138608507e-06,0) (-3.005827211e-05,0) (-4.235164736e-22,0) (3.050299829e-07,0) (2.42261127e-10,0) (-2.173739453e-07,0) (-1.107271747e-05,0) -(0.2370734683,0) (0.0006670533688,0) (0.004066218674,0) (0.0006820777545,0) (0.0005956356081,0) (8.044155541e-06,0) (9.655870575e-06,0) (6.831873609e-05,0) (4.382157398e-05,0) (1.591626787e-05,0) (1.652759785e-05,0) (1.94939596e-05,0) (1.491606603e-05,0) (3.877437899e-09,0) (0.000104543173,0) (0.3087228188,0) (0.0001062601308,0) (0.02189791074,0) (1.451237323e-09,0) (0.00101721631,0) (6.767884142e-05,0) (3.270019455e-11,0) (0.002703808895,0) (4.554381508e-05,0) (7.902103776e-11,0) (3.058225334e-05,0) (0.0002763177339,0) (1.071720204e-11,0) (1.677877475e-07,0) (1.554212663e-07,0) (1.046209416e-14,0) (9.935797639e-06,0) (6.792423503e-05,0) (2.685856042e-12,0) (0.0001254778854,0) (5.197168565e-06,0) (3.878416987e-12,0) (3.452071693e-06,0) (3.698293816e-05,0) (1.425830819e-12,0) (2.421919495e-05,0) (1.387963126e-06,0) (7.687789817e-13,0) (1.030262135e-06,0) (3.786694817e-05,0) (1.535265483e-12,0) (3.118113231e-05,0) (2.989431376e-07,0) (8.846582533e-13,0) (1.823523549e-07,0) (2.000685348e-05,0) (1.00557303e-12,0) (3.415236843e-18,0) (-4.33680869e-19,0) (0,0) (0.03787629397,0) (0.1290043371,0) (9.757819552e-19,0) (1.626303259e-19,0) (1.734723476e-18,0) (0.01166407464,0) (0.02777002614,0) (0,0) (-1.905824131e-21,0) (-6.776263578e-21,0) (0.0001520492622,0) (9.479976155e-05,0) (3.726944968e-20,0) (-1.016439537e-20,0) (0,0) (0.0005765989928,0) (0.002012299337,0) (3.30872245e-24,0) (-2.067951531e-24,0) (4.135903063e-25,0) (2.968303438e-07,0) (9.832055907e-08,0) (-1.058791184e-22,0) (3.97046694e-23,0) (-1.389663429e-22,0) (3.860134312e-07,0) (9.979758691e-06,0) (-1.694065895e-21,0) (4.235164736e-22,0) (-2.01170325e-21,0) (3.578750522e-05,0) (7.498366886e-05,0) (-2.488159283e-21,0) (5.29395592e-23,0) (8.470329473e-22,0) (1.02162398e-05,0) (6.854234909e-05,0) (-1.058791184e-22,0) (-9.264422861e-23,0) (0,0) (9.779609685e-07,0) (8.699365442e-06,0) (-2.117582368e-22,0) (-5.29395592e-23,0) (-1.32348898e-23,0) (4.056902711e-06,0) (8.419618364e-06,0) (0,0) (1.98523347e-23,0) (-1.032321404e-21,0) (5.202177913e-06,0) (1.997650936e-05,0) (5.29395592e-23,0) (-3.176373552e-22,0) (4.764560328e-22,0) (2.701400034e-06,0) (1.519803296e-05,0) (2.117582368e-22,0) (-3.30872245e-23,0) (4.566036981e-22,0) (2.43172997e-06,0) (8.192639034e-06,0) -(0.4945189387,0) (0.307421443,0) (0.1319654046,0) (0.03941143222,0) (0.01673841645,0) (0.005001509027,0) (0.002982067969,0) (0.0008721944031,0) (0.0006739086684,0) (0.0001662005827,0) (0.000162668234,0) (2.726728507e-05,0) (3.849627959e-05,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.09496554104,0) (0.02219350733,0) (0.0009466734748,0) (2.321681126e-06,0) (4.129794632e-05,0) (0.0001989658342,0) (0.0002383724452,0) (0.0001692599573,0) (0.0001085254047,0) (7.176902103e-05,0) (5.852636604e-05,0) (5.506831979e-05,0) (4.747128362e-05,0) (1.073506527e-10,0) (0.04541795873,0) (0.1725741146,0) (0.01007922853,0) (4.289735641e-10,0) (0.01096928929,0) (5.737094057e-05,0) (1.333779821e-12,0) (6.161287463e-05,0) (4.444852922e-08,0) (1.969247442e-15,0) (4.145795013e-08,0) (1.730393003e-13,0) (0.0001003702013,0) (0.0001160749593,0) (5.79959204e-05,0) (1.968726167e-12,0) (0.000456033966,0) (4.122042944e-13,0) (0.0001878179395,0) (0.0003229003659,0) (1.646882568e-13,0) (1.410595769e-05,0) (0.0002999456081,0) (5.102445159e-14,0) (6.696096688e-05,0) (0.0001183515028,0) (8.984760364e-14,0) (5.83628165e-07,0) (0.0001427988773,0) (2.344464954e-06,0) (1.402501907e-15,0) (0.0001207276869,0) (4.655188215e-14,0) (6.221369806e-06,0) (0.0001060713667,0) (3.292207679e-14,0) (1.583941041e-06,0) (9.971418463e-05,0) (-4.33680869e-18,0) (0.009429544937,0) (1.5840107e-13,0) (0.0005109923468,0) (0.194759507,0) (2.710505431e-19,0) (0.002555581156,0) (0.005067391794,0) (1.942355678e-10,0) (0.0004409201741,0) (-3.388131789e-21,0) (2.942625463e-05,0) (5.654394068e-05,0) (2.071868796e-12,0) (8.037295849e-06,0) (-1.058791184e-22,0) (7.348914505e-07,0) (3.230829218e-06,0) (6.964797294e-14,0) (1.567816421e-07,0) (-1.355252716e-20,0) (0.000113937913,0) (0.0001851425888,0) (2.781457311e-11,0) (2.999024015e-05,0) (-6.776263578e-21,0) (1.52722285e-05,0) (1.871511688e-11,0) (0.0005040683449,0) (5.02024039e-05,0) (-1.016439537e-20,0) (1.211469523e-05,0) (6.023879719e-13,0) (0.0001599166819,0) (0.0002441829949,0) (-1.355252716e-20,0) (4.063106018e-06,0) (2.623064153e-13,0) (0.000205223284,0) (3.30332097e-05,0) (2.733646717e-08,0) (8.470329473e-22,0) (4.552654708e-15,0) (0.000111644296,0) (2.711731612e-05,0) (-6.776263578e-21,0) (1.172473665e-06,0) (1.533275629e-13,0) (1.278860789e-05,0) (9.776751272e-05,0) (2.541098842e-21,0) (1.709717327e-06,0) (1.530464362e-07,0) (1.424655546e-13,0) (0.0001104626914,0) (8.6197615e-07,0) (-2.964615315e-21,0) (6.739760524e-14,0) (2.211632354e-05,0) (7.515207224e-05,0) (4.65868121e-21,0) (6.315078598e-07,0) (3.652790367e-14,0) (1.2355385e-07,0) (8.266795114e-05,0) -(0.2422309801,0) (0.001121531446,0) (0.004001037327,0) (0.0008151232336,0) (0.0005459492306,0) (2.557736886e-06,0) (1.207525027e-05,0) (7.053714984e-05,0) (3.864594342e-05,0) (1.483042612e-05,0) (1.714442183e-05,0) (1.870975941e-05,0) (1.379834849e-05,0) (1.742864286e-07,0) (0.005638823192,0) (-0.03005885845,0) (-0.001740184869,0) (-0.0002456493842,0) (-1.464161271e-09,0) (-0.0002385746382,0) (0.0001785998502,0) (-2.747021514e-11,0) (-0.0005992538639,0) (0.000367698185,0) (-1.046201884e-10,0) (-6.600547482e-05,0) (4.89280251e-05,0) (-8.444216063e-12,0) (-4.766178062e-07,0) (4.06527398e-07,0) (-3.327915718e-14,0) (-3.196151495e-05,0) (2.456646172e-05,0) (-3.639065293e-12,0) (-3.402544542e-05,0) (2.406742621e-05,0) (-4.536703068e-12,0) (-9.26298144e-06,0) (6.688627696e-06,0) (-1.280349392e-12,0) (-7.564880206e-06,0) (5.569965596e-06,0) (-9.132222426e-13,0) (-6.467528051e-06,0) (3.305101292e-06,0) (-1.683603403e-12,0) (-5.197553094e-06,0) (2.84540489e-06,0) (-1.055854317e-12,0) (-1.763474399e-06,0) (2.918850479e-07,0) (-8.970932822e-13,0) (0,0) (-1.734723476e-18,0) (0,0) (0.04120751152,0) (-0.1209002553,0) (8.67361738e-19,0) (2.168404345e-19,0) (-8.67361738e-19,0) (0.01059505292,0) (-0.03117134266,0) (0,0) (-6.776263578e-21,0) (-3.388131789e-21,0) (5.404029922e-05,0) (-0.0002719614938,0) (-8.131516294e-20,0) (-1.355252716e-20,0) (2.032879073e-20,0) (0.0006347062577,0) (-0.001863912343,0) (2.64697796e-23,0) (-5.95570041e-23,0) (1.32348898e-23,0) (-2.21524732e-08,0) (1.343238814e-06,0) (1.058791184e-22,0) (1.058791184e-22,0) (1.058791184e-22,0) (9.509644464e-07,0) (-4.130367749e-06,0) (0,0) (-2.117582368e-22,0) (0,0) (3.035209207e-05,0) (-9.01449982e-05,0) (1.799945013e-21,0) (2.117582368e-22,0) (0,0) (1.50771313e-05,0) (-4.735466163e-05,0) (-2.64697796e-23,0) (-2.117582368e-22,0) (0,0) (1.62071298e-06,0) (-5.352223079e-06,0) (5.29395592e-22,0) (2.64697796e-22,0) (5.29395592e-23,0) (3.422835305e-06,0) (-1.01749705e-05,0) (-2.117582368e-22,0) (-1.058791184e-22,0) (1.058791184e-21,0) (5.992220638e-06,0) (-1.768270685e-05,0) (-2.117582368e-22,0) (-2.117582368e-22,0) (2.117582368e-22,0) (3.697399502e-06,0) (-1.132169379e-05,0) (0,0) (-1.091878409e-22,0) (-2.448454613e-22,0) (2.631726242e-06,0) (-7.718453293e-06,0) -(0.2167077723,0) (-0.0826000003,0) (0.01117712611,0) (-0.0003024909558,0) (0.0008314218089,0) (-0.0009975617353,0) (0.0008431149587,0) (-0.0003842233562,0) (0.0002704370739,0) (-0.0001092156267,0) (9.757243774e-05,0) (-3.875001386e-05,0) (4.274889246e-05,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.2167077723,0) (-0.0826000003,0) (0.01117712611,0) (-0.0003024909558,0) (0.0008314218089,0) (-0.0009975617353,0) (0.0008431149587,0) (-0.0003842233562,0) (0.0002704370739,0) (-0.0001092156267,0) (9.757243774e-05,0) (-3.875001386e-05,0) (4.274889246e-05,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.2791082932,0) (0.02715806816,0) (-0.02846199811,0) (-0.008149020754,0) (0.002851320191,0) (-3.950407327e-05,0) (1.14330723e-05,0) (0.000154869012,0) (-0.0001326794655,0) (8.537678745e-05,0) (-7.412014254e-05,0) (5.873445414e-05,0) (-3.031732376e-05,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.1181203825,0) (-0.006245320651,0) (-0.002900269686,0) (3.326358174e-05,0) (0.0001138238722,0) (-8.641960382e-06,0) (3.016434396e-05,0) (1.010587839e-05,0) (7.596477619e-06,0) (2.457459582e-05,0) (1.39297899e-05,0) (4.065901073e-06,0) (7.640914772e-06,0) (-0.01035118577,0) (-1.060983429e-08,0) (0.1844993062,0) (0.0003082971776,0) (-3.414617148e-10,0) (-0.02229074989,0) (-4.695743746e-06,0) (1.512221582e-12,0) (-0.000493871054,0) (2.774482817e-07,0) (1.388386925e-13,0) (1.075209157e-05,0) (1.542408416e-12,0) (-1.658424701e-07,0) (9.590123357e-05,0) (8.91317672e-15,0) (8.216387078e-07,0) (-6.614975308e-06,0) (-5.963206816e-15,0) (-3.894922342e-06,0) (5.496461783e-05,0) (2.139238978e-08,0) (-1.443919701e-14,0) (-6.011743517e-06,0) (4.673910862e-15,0) (-1.74835413e-06,0) (3.005116424e-05,0) (-2.235709583e-16,0) (-5.566167409e-06,0) (4.421606725e-05,0) (-2.755076165e-13,0) (-8.301042594e-07,0) (1.171506491e-05,0) (5.277626819e-15,0) (-9.855585617e-07,0) (7.565601838e-06,0) (4.796833131e-15,0) (-2.467184366e-06,0) (1.707721501e-05,0) (-4.011548038e-18,0) (-0.001440066044,0) (0.0003756619176,0) (-7.98021357e-09,0) (0.06390193245,0) (-5.692061406e-19,0) (4.661129412e-05,0) (-0.001430622896,0) (-5.324722776e-10,0) (-0.006490750649,0) (8.470329473e-22,0) (-1.219047869e-09,0) (6.88256806e-08,0) (-1.492854078e-13,0) (-2.119132764e-05,0) (-2.64697796e-21,0) (3.776952075e-09,0) (-1.772438385e-05,0) (2.737719363e-12,0) (-1.263791935e-05,0) (2.382280164e-22,0) (-1.489280527e-10,0) (2.159068983e-15,0) (1.41805818e-07,0) (-9.41299573e-06,0) (-1.058791184e-21,0) (-2.66680814e-08,0) (8.251120861e-14,0) (-1.360177412e-05,0) (2.890940732e-05,0) (-2.051407919e-22,0) (-2.873311294e-09,0) (-5.553993283e-14,0) (-6.239731814e-07,0) (3.264209423e-06,0) (3.044024654e-22,0) (8.129572964e-09,0) (-4.505795755e-14,0) (6.797582913e-07,0) (-3.897277635e-06,0) (-7.940933881e-23,0) (-5.801431416e-10,0) (1.621406561e-15,0) (-3.222079977e-06,0) (2.141123947e-05,0) (-1.058791184e-22,0) (-1.220420545e-08,0) (-3.309562665e-14,0) (-9.894086537e-06,0) (2.043898951e-05,0) (-3.567216392e-24,0) (-8.979762109e-12,0) (4.383490997e-09,0) (1.926809811e-16,0) (3.180408848e-08,0) (1.786710123e-22,0) (-7.758571774e-09,0) (1.720215909e-14,0) (-3.727686172e-06,0) (7.582318236e-06,0) (-1.32348898e-23,0) (-1.614102532e-08,0) (1.910022884e-14,0) (-3.025162843e-06,0) (8.913907942e-06,0) -(0.2757309677,0) (0.033849107,0) (-0.03357642321,0) (-0.005713665996,0) (0.002042528073,0) (0.0001252214311,0) (0.000101946051,0) (-1.042211491e-05,0) (3.127914568e-05,0) (-3.917751923e-05,0) (1.580332402e-05,0) (-2.236553419e-06,0) (7.972957138e-06,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0.0005994385344,0) (-0.1985188841,0) (-0.001140207266,0) (-0.07488263132,0) (2.167276441e-05,0) (-1.025275956e-05,0) (0.0008666908912,0) (0.008349515407,0) (1.159857724e-06,0) (0.0006185982764,0) (0.01711533238,0) (2.254507178e-06,0) (-0.002883854726,0) (-0.0002052737618,0) (-3.899156928e-07,0) (-0.000159158543,0) (-0.0001352381151,0) (-3.706119164e-08,0) (-0.001416265,0) (-0.0001403458379,0) (-1.967367615e-07,0) (7.853055611e-05,0) (0.001110759192,0) (1.500255288e-07,0) (-0.0003981834344,0) (-2.30250586e-05,0) (-5.321609918e-08,0) (2.402907374e-05,0) (0.0002617957008,0) (3.602240965e-08,0) (-0.0002640355922,0) (-2.758564769e-06,0) (-3.410406075e-08,0) (3.284076926e-06,0) (0.000132422448,0) (1.733460305e-08,0) (-7.323759983e-05,0) (-6.375922781e-08,0) (-9.551291528e-09,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.001846675378,0) (-0.001654839895,0) (1.111239836e-05,0) (6.00638806e-06,0) (-7.965650434e-06,0) (-2.351680004e-05,0) (8.315325756e-06,0) (5.354914909e-06,0) (-5.18806211e-06,0) (-2.359921549e-06,0) (7.269569138e-07,0) (-3.107727192e-07,0) (-1.038697242e-06,0) (-0.06490133507,0) (-3.946716758e-05,0) (-0.006148089778,0) (0.007225280791,0) (3.425681516e-06,0) (-0.001345300549,0) (0.0001579544268,0) (1.933599988e-08,0) (4.985113502e-05,0) (-4.842011333e-06,0) (-6.979482776e-10,0) (7.525934897e-07,0) (1.618918448e-07,0) (-6.272074233e-05,0) (-4.091314267e-05,0) (-1.323759753e-09,0) (4.293660645e-05,0) (-1.735049015e-06,0) (1.921228267e-10,0) (-2.913583491e-05,0) (2.152582244e-05,0) (-2.092592279e-07,0) (1.791320429e-09,0) (-5.094414221e-05,0) (1.359553096e-10,0) (-1.256793796e-05,0) (-1.07102183e-05,0) (3.055871646e-11,0) (-2.032540034e-06,0) (-5.724551057e-06,0) (5.494923794e-10,0) (-1.488701156e-06,0) (-9.543865412e-06,0) (1.452900029e-10,0) (-3.151034807e-06,0) (-9.523435361e-06,0) (7.154815394e-11,0) (-3.083106532e-06,0) (-6.388466763e-06,0) (-8.67361738e-19,0) (0.005458852868,0) (-0.1264871219,0) (-6.252989909e-05,0) (-0.0005301535656,0) (1.084202172e-19,0) (-0.0002130075372,0) (0.01332630147,0) (1.825408291e-06,0) (-0.0004832594551,0) (-8.470329473e-22,0) (-2.967339092e-06,0) (7.000924065e-05,0) (1.743942639e-08,0) (-2.943530294e-05,0) (2.541098842e-21,0) (-1.216966884e-08,0) (7.671321961e-05,0) (7.595298963e-09,0) (-2.357373937e-06,0) (1.270549421e-21,0) (-4.8359186e-07,0) (-4.383976412e-10,0) (4.728265869e-05,0) (-2.460472004e-05,0) (0,0) (-2.363189478e-06,0) (-2.370021663e-09,0) (8.113426703e-05,0) (4.633762748e-05,0) (-8.470329473e-22,0) (4.377140531e-06,0) (1.020286978e-08,0) (-0.0001297244959,0) (5.329791181e-06,0) (0,0) (2.608211516e-06,0) (5.109376555e-09,0) (-7.478601065e-05,0) (-8.104477101e-06,0) (-1.058791184e-22,0) (2.294365191e-08,0) (2.306630744e-11,0) (-8.580644554e-06,0) (-3.260951961e-06,0) (6.352747104e-22,0) (1.665974296e-07,0) (1.845548891e-10,0) (-6.225489374e-06,0) (-9.221360182e-06,0) (-8.470329473e-22,0) (8.144303457e-12,0) (9.464237249e-07,0) (8.301088797e-10,0) (-2.75231617e-05,0) (-4.235164736e-22,0) (3.061043593e-07,0) (3.46976802e-10,0) (-1.102623907e-05,0) (-8.675920207e-06,0) (4.235164736e-22,0) (1.540103829e-07,0) (1.701788421e-10,0) (-1.243366357e-06,0) (-1.244429397e-05,0) -(-0.1031484994,0) (-0.1582389931,0) (-0.01103408529,0) (0.01890852676,0) (0.005635747778,0) (-0.002521811017,0) (-0.001083411895,0) (0.0001668520179,0) (0.0003833158109,0) (-4.739128419e-05,0) (-4.040597076e-05,0) (-1.348309736e-05,0) (2.298693686e-05,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (-0.0006078052747,0) (-0.0818026201,0) (0.01767374832,0) (-0.0250530803,0) (0.0006937595959,0) (1.027075844e-05,0) (-0.002366336259,0) (0.005365100259,0) (-1.161785369e-06,0) (-0.003148568976,0) (0.008918855406,0) (-2.258227789e-06,0) (-0.000268341271,0) (-0.0007367991449,0) (3.905716485e-07,0) (8.455219191e-05,0) (-0.0001803428258,0) (3.712316421e-08,0) (-6.785138147e-05,0) (-0.0004386388888,0) (1.970672368e-07,0) (-0.0002692972928,0) (0.0006562681882,0) (-1.502743643e-07,0) (-4.688880524e-05,0) (-9.016405225e-05,0) (5.330567966e-08,0) (-7.059613306e-05,0) (0.000163597705,0) (-3.608223219e-08,0) (-6.507889457e-05,0) (-2.173113939e-05,0) (3.416188227e-08,0) (-2.087522514e-05,0) (6.50316769e-05,0) (-1.736311552e-08,0) (-2.275006274e-05,0) (-1.101125681e-06,0) (9.567778006e-09,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.04202610262,0) (0.03766036634,0) (-0.0002528927387,0) (-0.0001366916373,0) (0.0001812799621,0) (0.0005351885142,0) (-0.0001892377717,0) (-0.0001218656003,0) (0.0001180684127,0) (5.370641011e-05,0) (-1.654387459e-05,0) (7.072475403e-06,0) (2.363837055e-05,0) (-0.0261051813,0) (3.944842813e-05,0) (6.279587704e-05,0) (0.002416007754,0) (-3.425597545e-06,0) (0.03365443351,0) (5.171884636e-05,0) (-1.935851884e-08,0) (-0.001175570287,0) (-2.300267057e-06,0) (6.987811895e-10,0) (-1.390588258e-05,0) (-1.638194283e-07,0) (-2.644343681e-05,0) (0.0009279537109,0) (1.325991733e-09,0) (-3.274005584e-05,0) (0.0004008668033,0) (-1.924329641e-10,0) (2.950263984e-05,0) (-0.0005718721755,0) (-2.727688202e-07,0) (-1.794592821e-09,0) (3.284267252e-05,0) (-1.361779008e-10,0) (-1.772004666e-05,0) (0.0002140658698,0) (-3.061634471e-11,0) (-2.18074922e-06,0) (8.592680047e-06,0) (-5.505024031e-10,0) (1.478868857e-06,0) (-3.305527393e-05,0) (-1.455247171e-10,0) (-6.902743869e-06,0) (3.953000872e-05,0) (-7.166854507e-11,0) (-7.303006439e-06,0) (3.947982096e-05,0) (0,0) (0.001679108527,0) (-0.05045358095,0) (6.252449675e-05,0) (0.02200366493,0) (2.168404345e-19,0) (-0.0001201094063,0) (0.006398207008,0) (-1.827623733e-06,0) (0.004689634674,0) (-8.470329473e-20,0) (-1.145585351e-06,0) (2.575624477e-05,0) (-1.745081276e-08,0) (0.0006705783039,0) (-4.235164736e-22,0) (-3.62487904e-09,0) (2.484116704e-05,0) (-7.604241534e-09,0) (-5.076304556e-06,0) (-4.235164736e-20,0) (-1.840484349e-07,0) (4.390893775e-10,0) (1.025957234e-05,0) (0.0005620420754,0) (-3.388131789e-21,0) (-6.94792267e-07,0) (2.373663017e-09,0) (0.0001593070373,0) (-0.000251256781,0) (2.117582368e-22,0) (1.955830264e-06,0) (-1.022102714e-08,0) (-6.579728783e-06,0) (-0.0002342789111,0) (-8.470329473e-22,0) (7.688532502e-07,0) (-5.11828032e-09,0) (-5.264350621e-05,0) (0.0001274524706,0) (0,0) (7.264731325e-09,0) (-2.310334681e-11,0) (-1.395951307e-05,0) (6.869909882e-05,0) (-1.270549421e-21,0) (8.860179887e-08,0) (-1.848524135e-10,0) (1.541787193e-05,0) (-4.066423592e-05,0) (-1.588186776e-22,0) (-5.464056351e-11,0) (4.061638748e-07,0) (-8.316854796e-10,0) (-1.078115126e-05,0) (7.940933881e-22,0) (7.888849008e-08,0) (-3.475255682e-10,0) (-2.522531665e-05,0) (3.889316497e-05,0) (-1.164670302e-21,0) (3.533132544e-08,0) (-1.704590834e-10,0) (-5.400560006e-06,0) (9.482860461e-06,0) -(-0.03354517603,0) (-0.05146129038,0) (-0.003588421894,0) (0.006149288282,0) (0.001832815333,0) (-0.0008201243352,0) (-0.0003523390349,0) (5.426235325e-05,0) (0.0001246590734,0) (-1.541223556e-05,0) (-1.314052468e-05,0) (-4.384871105e-06,0) (7.475638015e-06,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0.0008056940932,0) (0.08598772848,0) (0.01418116593,0) (0.03748567322,0) (0.0005069597758,0) (-1.361692173e-05,0) (-0.002436983511,0) (-0.002240139213,0) (1.540598429e-06,0) (-0.002840072602,0) (-0.006159742645,0) (2.994578451e-06,0) (0.001968803752,0) (-0.0004011031198,0) (-5.179052102e-07,0) (0.0001835878932,0) (-3.418482576e-05,0) (-4.922683088e-08,0) (0.001015095094,0) (-0.0002251307824,0) (-2.613155229e-07,0) (-0.0002622025914,0) (-0.0003413494461,0) (1.992736509e-07,0) (0.0002644203416,0) (-5.066131264e-05,0) (-7.068415912e-08,0) (-7.132799777e-05,0) (-7.372500718e-05,0) (4.784728731e-08,0) (0.0001497079056,0) (-1.431185483e-05,0) (-4.529799756e-08,0) (-1.821450758e-05,0) (-5.065552207e-05,0) (2.302489451e-08,0) (3.798269516e-05,0) (-7.824682005e-07,0) (-1.268593802e-08,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.03306914808,0) (0.02963387403,0) (-0.0001989941228,0) (-0.0001075587721,0) (0.0001426440602,0) (0.0004211246611,0) (-0.0001489058348,0) (-9.589258415e-05,0) (9.290468493e-05,0) (4.226005073e-05,0) (-1.301790565e-05,0) (5.565130283e-06,0) (1.860036328e-05,0) (0.02926571414,0) (-5.233749665e-05,0) (0.004673081751,0) (-0.00362435917,0) (4.545799097e-06,0) (0.02638077972,0) (-7.992001587e-05,0) (2.568906514e-08,0) (-0.0009236595288,0) (1.910721583e-06,0) (-9.273966112e-10,0) (-1.104819657e-05,0) (2.172620418e-07,0) (2.679708471e-05,0) (0.000730282638,0) (-1.760161639e-09,0) (-5.697878921e-05,0) (0.0003034798675,0) (2.554106455e-10,0) (4.416018281e-05,0) (-0.0004472785039,0) (-4.815784398e-08,0) (2.380958854e-09,0) (6.308274014e-05,0) (1.807232962e-10,0) (-3.901393542e-06,0) (0.0001694230918,0) (4.06153188e-11,0) (-1.146048646e-07,0) (1.07843805e-05,0) (7.316866297e-10,0) (2.233056699e-06,0) (-1.773625471e-05,0) (1.931154678e-10,0) (-2.832235242e-06,0) (3.696293445e-05,0) (9.509970693e-11,0) (-3.185200628e-06,0) (3.456667511e-05,0) (-3.469446952e-18,0) (-0.00284257667,0) (0.05732018934,0) (-8.295705307e-05,0) (0.01698074865,0) (1.626303259e-19,0) (6.976167755e-05,0) (-0.005208299287,0) (2.425392242e-06,0) (0.003898029682,0) (-7.115076757e-20,0) (1.369639726e-06,0) (-3.330977184e-05,0) (2.316105747e-08,0) (0.0005276356672,0) (2.117582368e-22,0) (6.427763033e-09,0) (-3.902065515e-05,0) (1.008984649e-08,0) (-2.047743501e-06,0) (-3.388131789e-20,0) (2.252124931e-07,0) (-5.827660155e-10,0) (-2.784067985e-05,0) (0.0004421855303,0) (1.694065895e-21,0) (1.25482395e-06,0) (-3.150489814e-09,0) (5.903793265e-05,0) (-0.0002242549974,0) (-2.117582368e-21,0) (-1.819824513e-06,0) (1.356734793e-08,0) (9.261243859e-05,0) (-0.0001806069212,0) (-8.470329473e-22,0) (-1.383388018e-06,0) (6.792974981e-09,0) (1.657555103e-05,0) (0.0001021695525,0) (1.058791184e-22,0) (-1.179134865e-08,0) (3.065983203e-11,0) (-4.066691132e-06,0) (5.42395716e-05,0) (5.29395592e-22,0) (-5.858694103e-08,0) (2.453479878e-10,0) (1.630524542e-05,0) (-2.371439697e-05,0) (2.64697796e-22,0) (-4.732725524e-11,0) (-4.061021922e-07,0) (1.103310071e-09,0) (1.257948399e-05,0) (1.270549421e-21,0) (-1.70912097e-07,0) (4.612254458e-10,0) (-1.071839513e-05,0) (3.584446582e-05,0) (-6.352747104e-22,0) (-8.927826945e-08,0) (2.261947935e-10,0) (-3.135211927e-06,0) (1.651072366e-05,0) -(0.05232289484,0) (0.08026798496,0) (0.005597127326,0) (-0.009591500245,0) (-0.002858777782,0) (0.00127920865,0) (0.000549569281,0) (-8.463701011e-05,0) (-0.0001944399869,0) (2.403960497e-05,0) (2.049624931e-05,0) (6.839408132e-06,0) (-1.166030613e-05,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.2422309801,0) (0.001121531446,0) (0.004001037327,0) (0.0008151232336,0) (0.0005459492306,0) (2.557736886e-06,0) (1.207525027e-05,0) (7.053714984e-05,0) (3.864594342e-05,0) (1.483042612e-05,0) (1.714442183e-05,0) (1.870975941e-05,0) (1.379834849e-05,0) (1.742864286e-07,0) (0.005638823192,0) (-0.03005885845,0) (-0.001740184869,0) (-0.0002456493842,0) (-1.464161271e-09,0) (-0.0002385746382,0) (0.0001785998502,0) (-2.747021514e-11,0) (-0.0005992538639,0) (0.000367698185,0) (-1.046201884e-10,0) (-6.600547482e-05,0) (4.89280251e-05,0) (-8.444216063e-12,0) (-4.766178062e-07,0) (4.06527398e-07,0) (-3.327915718e-14,0) (-3.196151495e-05,0) (2.456646172e-05,0) (-3.639065293e-12,0) (-3.402544542e-05,0) (2.406742621e-05,0) (-4.536703068e-12,0) (-9.26298144e-06,0) (6.688627696e-06,0) (-1.280349392e-12,0) (-7.564880206e-06,0) (5.569965596e-06,0) (-9.132222426e-13,0) (-6.467528051e-06,0) (3.305101292e-06,0) (-1.683603403e-12,0) (-5.197553094e-06,0) (2.84540489e-06,0) (-1.055854317e-12,0) (-1.763474399e-06,0) (2.918850479e-07,0) (-8.970932822e-13,0) (-4.33680869e-19,0) (-3.469446952e-18,0) (-8.67361738e-19,0) (0.04120751152,0) (-0.1209002553,0) (1.301042607e-18,0) (-2.168404345e-19,0) (-4.33680869e-19,0) (0.01059505292,0) (-0.03117134266,0) (6.776263578e-21,0) (-6.776263578e-21,0) (5.082197684e-21,0) (5.404029922e-05,0) (-0.0002719614938,0) (-1.016439537e-19,0) (-1.355252716e-20,0) (4.065758147e-20,0) (0.0006347062577,0) (-0.001863912343,0) (2.64697796e-23,0) (-5.95570041e-23,0) (1.32348898e-23,0) (-2.21524732e-08,0) (1.343238814e-06,0) (1.058791184e-22,0) (2.64697796e-23,0) (6.6174449e-23,0) (9.509644464e-07,0) (-4.130367749e-06,0) (0,0) (6.352747104e-22,0) (-4.235164736e-22,0) (3.035209207e-05,0) (-9.01449982e-05,0) (2.329340605e-21,0) (3.176373552e-22,0) (0,0) (1.50771313e-05,0) (-4.735466163e-05,0) (-2.64697796e-23,0) (2.64697796e-23,0) (0,0) (1.62071298e-06,0) (-5.352223079e-06,0) (5.29395592e-22,0) (2.64697796e-22,0) (-5.29395592e-23,0) (3.422835305e-06,0) (-1.01749705e-05,0) (-2.117582368e-22,0) (-1.588186776e-22,0) (3.176373552e-22,0) (5.992220638e-06,0) (-1.768270685e-05,0) (0,0) (-2.117582368e-22,0) (3.176373552e-22,0) (3.697399502e-06,0) (-1.132169379e-05,0) (1.058791184e-22,0) (-4.963083675e-23,0) (-2.514629062e-22,0) (2.631726242e-06,0) (-7.718453293e-06,0) -(0.2167077723,0) (-0.0826000003,0) (0.01117712611,0) (-0.0003024909558,0) (0.0008314218089,0) (-0.0009975617353,0) (0.0008431149587,0) (-0.0003842233562,0) (0.0002704370739,0) (-0.0001092156267,0) (9.757243774e-05,0) (-3.875001386e-05,0) (4.274889246e-05,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.2167077723,0) (-0.0826000003,0) (0.01117712611,0) (-0.0003024909558,0) (0.0008314218089,0) (-0.0009975617353,0) (0.0008431149587,0) (-0.0003842233562,0) (0.0002704370739,0) (-0.0001092156267,0) (9.757243774e-05,0) (-3.875001386e-05,0) (4.274889246e-05,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.2475006931,0) (0.001885655396,0) (0.003936900835,0) (0.0009741204454,0) (0.0005004075617,0) (8.132634863e-07,0) (1.510083094e-05,0) (7.282759888e-05,0) (3.408159058e-05,0) (1.381866281e-05,0) (1.778426622e-05,0) (1.795710592e-05,0) (1.276438578e-05,0) (7.833976983e-06,0) (0.3041454174,0) (0.002926686712,0) (0.02849839687,0) (2.755679327e-06,0) (1.477200313e-09,0) (5.595452752e-05,0) (0.000471312833,0) (2.30767043e-11,0) (0.0001328145617,0) (0.002968612862,0) (1.385122765e-10,0) (0.0001424591791,0) (8.663764015e-06,0) (6.653302287e-12,0) (1.353880343e-06,0) (1.063332768e-06,0) (1.058585676e-13,0) (0.0001028139335,0) (8.885062031e-06,0) (4.930568137e-12,0) (9.226573536e-06,0) (0.0001114531879,0) (5.306720436e-12,0) (2.485545863e-05,0) (1.209685944e-06,0) (1.149711836e-12,0) (2.362894913e-06,0) (2.235255113e-05,0) (1.084804457e-12,0) (4.060026829e-05,0) (2.884757044e-07,0) (1.846273793e-12,0) (8.663751496e-07,0) (2.708317392e-05,0) (1.260179665e-12,0) (1.705402686e-05,0) (4.258384822e-09,0) (8.003161713e-13,0) (1.561251128e-17,0) (6.938893904e-18,0) (8.67361738e-19,0) (0.04483170943,0) (0.1133052738,0) (8.67361738e-19,0) (-1.734723476e-18,0) (4.33680869e-19,0) (0.009624007898,0) (0.03498925778,0) (0,0) (5.421010862e-20,0) (6.776263578e-21,0) (1.920663012e-05,0) (0.0007802029551,0) (2.439454888e-19,0) (0,0) (2.710505431e-20,0) (0.0006986693326,0) (0.001726467409,0) (0,0) (-3.176373552e-22,0) (-4.235164736e-22,0) (1.653240914e-09,0) (1.835110102e-05,0) (0,0) (0,0) (0,0) (2.342751068e-06,0) (1.709453932e-06,0) (0,0) (1.016439537e-20,0) (1.101142831e-20,0) (2.57422105e-05,0) (0.0001083718738,0) (1.270549421e-21,0) (0,0) (-4.235164736e-22,0) (2.225083718e-05,0) (3.271647394e-05,0) (0,0) (2.911675756e-22,0) (0,0) (2.685905316e-06,0) (3.292917407e-06,0) (2.117582368e-22,0) (2.117582368e-22,0) (0,0) (2.887868495e-06,0) (1.229628472e-05,0) (2.117582368e-22,0) (0,0) (-4.235164736e-22,0) (6.902245323e-06,0) (1.565229019e-05,0) (-6.352747104e-22,0) (2.117582368e-22,0) (-4.235164736e-22,0) (5.060621495e-06,0) (8.434035548e-06,0) (-1.058791184e-22,0) (-8.470329473e-22,0) (-3.176373552e-22,0) (2.848171096e-06,0) (7.27171318e-06,0) -(0.09496554104,0) (0.02219350733,0) (0.0009466734748,0) (2.321681126e-06,0) (4.129794632e-05,0) (0.0001989658342,0) (0.0002383724452,0) (0.0001692599573,0) (0.0001085254047,0) (7.176902103e-05,0) (5.852636604e-05,0) (5.506831979e-05,0) (4.747128362e-05,0) (0.08203099855,0) (8.306610194e-08,0) (0.1359609918,0) (0.009081386798,0) (5.657391905e-09,0) (0.01196712578,0) (5.443671855e-05,0) (2.267692166e-12,0) (6.454709571e-05,0) (4.074384328e-08,0) (2.322477598e-15,0) (4.516263572e-08,0) (1.806939314e-09,0) (9.637884248e-05,0) (0.0001200645114,0) (3.505088404e-13,0) (0.0001259530711,0) (0.0003880768169,0) (2.442169459e-14,0) (0.0001806923474,0) (0.0003300259584,0) (4.99498452e-09,0) (5.220474457e-13,0) (0.0003140465704,0) (2.043749217e-14,0) (6.916995033e-05,0) (0.0001161425193,0) (3.068536094e-15,0) (6.841874488e-06,0) (0.0001365406311,0) (3.090610873e-13,0) (1.118320353e-06,0) (0.0001219538312,0) (2.402304362e-14,0) (6.135362753e-06,0) (0.0001061573737,0) (1.022792114e-14,0) (9.682037194e-06,0) (9.16160885e-05,0) (0,0) (0.008475895408,0) (0.1732522102,0) (1.124213962e-07,0) (0.02297182624,0) (1.084202172e-19,0) (0.0009869192534,0) (0.006480627332,0) (3.316210435e-10,0) (0.000596346401,0) (1.694065895e-21,0) (6.030566529e-06,0) (7.772448169e-05,0) (1.304810639e-11,0) (1.025243196e-05,0) (0,0) (6.172455307e-07,0) (3.424236285e-06,0) (8.91940129e-14,0) (8.102047562e-08,0) (0,0) (1.7510264e-07,0) (5.995060337e-14,0) (0.0002921369044,0) (3.675876272e-05,0) (2.032879073e-20,0) (1.275281687e-06,0) (4.637667068e-13,0) (0.0003051743252,0) (0.0002630933887,0) (6.776263578e-21,0) (3.588497215e-06,0) (5.404957306e-12,0) (0.0003430215163,0) (6.96043537e-05,0) (5.082197684e-21,0) (2.144710129e-06,0) (2.269021793e-12,0) (0.0002012220718,0) (3.895281572e-05,0) (1.694065895e-21,0) (3.844113255e-09,0) (1.769838074e-15,0) (0.0001178597097,0) (2.092539475e-05,0) (-8.470329473e-22,0) (6.145570316e-08,0) (3.010474357e-14,0) (2.166322872e-05,0) (9.000390998e-05,0) (0,0) (1.298476433e-12,0) (5.281220211e-07,0) (2.249656277e-13,0) (0.0001117973318,0) (2.541098842e-21,0) (1.467994913e-07,0) (7.105028024e-14,0) (4.480358687e-05,0) (5.317998557e-05,0) (0,0) (6.039698986e-08,0) (2.87767903e-14,0) (3.246588878e-06,0) (8.011602699e-05,0) -(0.4945189387,0) (0.307421443,0) (0.1319654046,0) (0.03941143222,0) (0.01673841645,0) (0.005001509027,0) (0.002982067969,0) (0.0008721944031,0) (0.0006739086684,0) (0.0001662005827,0) (0.000162668234,0) (2.726728507e-05,0) (3.849627959e-05,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.3147524089,0) (0.3911428714,0) (0.2057672699,0) (0.06817076837,0) (0.01624681051,0) (0.001918900616,0) (8.656155591e-06,0) (0.0003293313421,0) (0.0005165205109,0) (0.0005274892321,0) (0.000308913253,0) (0.0001921098042,0) (7.200817462e-05,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.1469209212,0) (0.001757452279,0) (0.008885391297,0) (0.0004765796032,0) (0.0003137171467,0) (3.753583099e-07,0) (3.817084e-06,0) (6.033841652e-07,0) (5.317323845e-07,0) (8.414643968e-06,0) (3.31541252e-06,0) (3.002007615e-07,0) (1.229871495e-06,0) (0.001306177527,0) (1.355168727e-09,0) (0.2503658847,0) (1.046614926e-05,0) (2.060951583e-11,0) (0.04152020624,0) (4.050576507e-07,0) (1.00843227e-12,0) (0.003778769832,0) (1.889305054e-06,0) (8.299835645e-12,0) (0.002559803502,0) (1.316604296e-15,0) (2.853709815e-10,0) (7.660087477e-05,0) (2.266554089e-16,0) (5.359854749e-09,0) (1.127557649e-07,0) (1.456075894e-15,0) (8.395718063e-08,0) (9.154156321e-06,0) (9.161877051e-08,0) (3.993706216e-16,0) (1.150818494e-07,0) (1.068890781e-15,0) (4.419176462e-08,0) (7.775554357e-06,0) (1.628929061e-17,0) (4.528323296e-06,0) (1.43185262e-05,0) (2.455969101e-13,0) (6.161678805e-07,0) (1.125366415e-06,0) (1.15944313e-15,0) (1.58315933e-07,0) (5.391837529e-07,0) (2.24968478e-15,0) (6.286898691e-07,0) (3.183188427e-06,0) (6.2883726e-18,0) (0.0002446691601,0) (8.145458932e-07,0) (5.664740933e-10,0) (0.177759353,0) (2.493664997e-18,0) (2.201408811e-06,0) (0.0003158153936,0) (8.549720567e-10,0) (0.0706465972,0) (1.058791184e-22,0) (2.464242287e-13,0) (6.094571757e-11,0) (1.707997469e-15,0) (4.38015457e-05,0) (8.131516294e-20,0) (2.311133296e-11,0) (9.174418953e-05,0) (8.403150672e-11,0) (0.001971316564,0) (5.29395592e-23,0) (1.266660794e-13,0) (7.775698928e-17,0) (6.88337889e-11,0) (2.410431746e-06,0) (1.356576205e-22,0) (5.576701781e-10,0) (1.468000911e-14,0) (6.062379565e-07,0) (3.176643229e-06,0) (-2.067951531e-24,0) (2.300661614e-12,0) (5.707138741e-16,0) (1.135038219e-09,0) (1.530804122e-07,0) (-1.178732373e-23,0) (3.081533289e-11,0) (8.947554122e-16,0) (2.296325301e-09,0) (3.899274721e-07,0) (6.749793798e-22,0) (8.755362874e-11,0) (1.48542241e-15,0) (8.808607626e-08,0) (2.190836451e-05,0) (-1.058791184e-22,0) (2.423577032e-09,0) (3.638364687e-14,0) (4.518853107e-06,0) (4.641490491e-06,0) (1.413638742e-27,0) (6.210057073e-11,0) (3.638362452e-11,0) (1.650294841e-19,0) (9.04762241e-12,0) (8.271806126e-24,0) (4.100520746e-10,0) (4.164857336e-15,0) (3.101457978e-07,0) (1.081074942e-06,0) (7.940933881e-23,0) (4.313670249e-09,0) (1.26775354e-14,0) (2.818838655e-06,0) (9.917835142e-07,0) -(0.1537404548,0) (0.003727007567,0) (0.00854296775,0) (0.0008283378013,0) (0.000249242271,0) (3.135135163e-06,0) (3.485164461e-06,0) (1.245370055e-07,0) (1.451806454e-06,0) (9.235094054e-06,0) (1.535303137e-06,0) (1.834495508e-07,0) (1.651277635e-06,0) (2.815830936e-10,0) (0.01983051592,0) (0.2311916741,0) (1.480857164e-06,0) (5.065308416e-11,0) (0.05191474862,0) (1.74172454e-07,0) (5.928976114e-13,0) (0.002321923377,0) (5.781125973e-06,0) (1.396714217e-11,0) (0.002995923626,0) (1.300580339e-15,0) (2.083846774e-09,0) (2.160554926e-05,0) (8.895745648e-08,0) (1.874301973e-14,0) (4.549221948e-07,0) (3.009999658e-15,0) (6.499753675e-08,0) (5.596904508e-06,0) (8.516512091e-16,0) (5.426835441e-08,0) (1.474190623e-07,0) (1.228211538e-15,0) (1.807091778e-07,0) (1.378205676e-05,0) (2.933157846e-14,0) (5.773281799e-06,0) (8.30249756e-06,0) (1.793970786e-07,0) (1.57524998e-14,0) (1.14196802e-07,0) (1.547102555e-15,0) (2.937426657e-07,0) (8.906479179e-07,0) (3.127361261e-15,0) (1.516806236e-06,0) (2.811236419e-06,0) (0,0) (1.511060808e-05,0) (5.607603461e-10,0) (0.1487858497,0) (0.02038732434,0) (1.734723476e-18,0) (9.734329973e-09,0) (0.0004046016186,0) (8.829540289e-10,0) (0.0787413867,0) (0,0) (1.175486027e-09,0) (3.16393186e-09,0) (1.818492629e-13,0) (0.0005493161406,0) (0,0) (1.11287863e-09,0) (2.242153709e-05,0) (5.137087983e-11,0) (0.001903470945,0) (-4.235164736e-22,0) (1.177409821e-09,0) (2.273659858e-09,0) (4.248625572e-15,0) (2.121979301e-05,0) (0,0) (1.746371504e-10,0) (3.101321166e-15,0) (2.618867638e-10,0) (3.3303246e-06,0) (-6.6174449e-24,0) (4.476698989e-11,0) (7.989091628e-15,0) (1.282889475e-07,0) (2.814187778e-07,0) (1.654361225e-24,0) (2.426502395e-12,0) (1.278136264e-16,0) (7.949778252e-10,0) (1.110717381e-07,0) (2.436173229e-11,0) (0,0) (3.526056281e-16,0) (7.3810059e-07,0) (2.697616726e-05,0) (0,0) (1.877165974e-10,0) (1.913490841e-14,0) (2.115184742e-06,0) (1.181201865e-06,0) (-1.654361225e-24,0) (6.907330169e-11,0) (1.047719175e-07,0) (7.596810143e-15,0) (7.557011361e-09,0) (1.895051636e-10,0) (0,0) (6.491569902e-15,0) (1.28432286e-06,0) (1.324891707e-06,0) (0,0) (9.739590345e-10,0) (2.829120299e-14,0) (3.141117806e-06,0) (2.187995244e-07,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.002296938444,0) (0.0004656769935,0) (-3.404442288e-05,0) (8.60557369e-05,0) (-2.195463111e-05,0) (1.021437952e-06,0) (1.052245556e-06,0) (3.19721922e-07,0) (-3.631499723e-07,0) (-8.080661741e-07,0) (1.730221396e-07,0) (-2.294551817e-08,0) (-1.671873287e-07,0) (0.008189657419,0) (5.041046806e-06,0) (-0.008342968697,0) (0.0002452856292,0) (-2.067629571e-07,0) (0.002505844645,0) (-1.362524288e-05,0) (1.28943057e-08,0) (-0.0003814274264,0) (-3.297204231e-05,0) (-4.172364306e-08,0) (0.0001791736462,0) (1.381913284e-10,0) (1.079257912e-07,0) (-3.267927222e-05,0) (-3.366221799e-11,0) (2.800914463e-07,0) (2.957483131e-08,0) (-4.691192177e-11,0) (6.280388515e-07,0) (3.585047097e-06,0) (-8.962099782e-07,0) (-4.954574338e-11,0) (9.752156065e-07,0) (3.109204061e-11,0) (3.176698282e-07,0) (-2.771203269e-06,0) (-2.22648192e-12,0) (1.653561186e-06,0) (-1.853786177e-06,0) (-4.89836296e-10,0) (1.10502967e-06,0) (-9.167977887e-07,0) (3.191879817e-11,0) (5.061688212e-07,0) (-6.78714229e-07,0) (3.355563738e-11,0) (7.856396421e-07,0) (-1.190808539e-06,0) (0,0) (-0.0009274664534,0) (-0.0002742614059,0) (4.438674186e-06,0) (-0.001474755946,0) (-8.67361738e-19,0) (-1.006015126e-05,0) (-0.002941831249,0) (-2.930994065e-06,0) (0.005259890253,0) (1.376428539e-21,0) (5.998322676e-10,0) (6.199376993e-08,0) (-1.995271809e-10,0) (6.084148142e-05,0) (5.421010862e-20,0) (-7.446672951e-11,0) (-0.0003970796515,0) (2.33129964e-07,0) (0.0003677132413,0) (5.29395592e-23,0) (4.113038732e-10,0) (-1.578850801e-11,0) (2.295141761e-08,0) (6.300650718e-06,0) (-3.176373552e-22,0) (4.941788939e-08,0) (-4.216631935e-10,0) (-3.616195343e-06,0) (5.091702812e-06,0) (3.97046694e-23,0) (-3.504778343e-09,0) (-1.048420309e-10,0) (2.359753035e-07,0) (2.499492298e-07,0) (-1.522012327e-22,0) (9.88648561e-09,0) (-1.014613753e-10,0) (-2.52638343e-07,0) (8.108630087e-07,0) (1.058791184e-22,0) (-3.46259369e-09,0) (2.113178083e-11,0) (2.345799347e-07,0) (-3.336664573e-06,0) (9.264422861e-23,0) (-3.308381734e-08,0) (-2.028902496e-10,0) (2.843321806e-06,0) (-2.094078847e-06,0) (6.203854594e-25,0) (-5.632286098e-11,0) (7.855457093e-09,0) (7.109805969e-13,0) (-7.829784988e-09,0) (-1.389663429e-22,0) (-1.617807133e-08,0) (8.400741329e-11,0) (9.173899183e-07,0) (-1.236998982e-06,0) (0,0) (-4.115909576e-08,0) (1.129540535e-10,0) (1.15856545e-06,0) (-1.384583023e-06,0) -(-0.05751293495,0) (-0.01742314575,0) (0.002807441229,0) (-0.002741260601,0) (0.0006877098011,0) (-6.313790157e-05,0) (-3.703790973e-05,0) (-1.993765262e-06,0) (1.779141841e-05,0) (1.117127821e-05,0) (-3.925466161e-06,0) (1.105928494e-06,0) (4.760820116e-06,0) (2.356370425e-06,0) (0.002086629187,0) (0.008695215087,0) (-6.2979561e-06,0) (3.741398894e-07,0) (-0.07442571239,0) (3.937534685e-07,0) (-7.848018285e-09,0) (0.008950218454,0) (-7.896863725e-06,0) (5.968412251e-08,0) (-0.002792952986,0) (-8.133735556e-11,0) (5.197317153e-08,0) (0.0004693188178,0) (-7.459501429e-07,0) (-3.500108653e-10,0) (-4.093285999e-06,0) (1.032339543e-10,0) (-9.466882665e-07,0) (-8.422440694e-05,0) (6.995807459e-11,0) (-1.632739084e-06,0) (-4.319618027e-06,0) (-2.136820204e-11,0) (9.874220973e-07,0) (7.401138147e-05,0) (1.010201071e-10,0) (-5.466525505e-06,0) (-8.034065257e-06,0) (-6.503235901e-07,0) (-1.341657236e-10,0) (-4.441394808e-07,0) (-3.383529974e-11,0) (1.834727903e-06,0) (5.4567997e-06,0) (-3.617647595e-11,0) (2.98183865e-06,0) (5.407168305e-06,0) (6.505213035e-19,0) (-3.801065212e-06,0) (-4.420846394e-06,0) (0.06307890282,0) (0.006834856211,0) (-1.734723476e-18,0) (1.2360615e-07,0) (-0.0004147197189,0) (3.245439041e-06,0) (-0.05323530859,0) (-1.084202172e-19,0) (-7.133332631e-09,0) (1.11168147e-08,0) (5.132952515e-09,0) (-0.005614192732,0) (0,0) (3.611864086e-10,0) (1.48279327e-05,0) (-1.809388448e-07,0) (0.00192530132,0) (-1.355252716e-20,0) (-1.462622461e-08,0) (-4.015748519e-08,0) (3.138645067e-10,0) (-0.0004375922108,0) (8.470329473e-22,0) (-2.062581006e-09,0) (1.526916853e-10,0) (-7.487547447e-09,0) (-6.5275208e-05,0) (0,0) (9.665570157e-10,0) (-4.759094266e-10,0) (4.428858264e-06,0) (1.003236761e-05,0) (0,0) (1.297693598e-10,0) (-3.054149145e-11,0) (7.432534774e-08,0) (9.720891838e-06,0) (2.414566489e-11,0) (8.470329473e-22,0) (-3.039500918e-12,0) (1.39543781e-06,0) (5.069545599e-05,0) (0,0) (-4.776269042e-10,0) (1.818254864e-10,0) (-9.70477885e-06,0) (-5.529115333e-06,0) (0,0) (-4.190493315e-10,0) (-1.078377038e-06,0) (-1.525802291e-10,0) (-6.801392399e-08,0) (5.154379602e-10,0) (2.117582368e-22,0) (-9.02140094e-11,0) (5.837397148e-06,0) (5.909045808e-06,0) (2.64697796e-23,0) (2.987041801e-10,0) (-1.60387982e-10,0) (3.118621718e-06,0) (1.889669192e-07,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.05227305888,0) (-0.01059774195,0) (0.0007747731012,0) (-0.0019584315,0) (0.0004996371268,0) (-2.324558865e-05,0) (-2.394669917e-05,0) (-7.276138765e-06,0) (8.264461737e-06,0) (1.838973561e-05,0) (-3.937587669e-06,0) (5.221874471e-07,0) (3.804800733e-06,0) (0.003294115467,0) (-5.03865326e-06,0) (8.521411615e-05,0) (8.201923211e-05,0) (2.067578889e-07,0) (-0.06268694534,0) (-4.461298473e-06,0) (-1.290932257e-08,0) (0.008994674824,0) (-1.566384246e-05,0) (4.177343488e-08,0) (-0.003310642092,0) (-1.39836719e-10,0) (4.550215342e-08,0) (0.0007412007475,0) (3.371897556e-11,0) (-2.135755559e-07,0) (-6.832987415e-06,0) (4.698765009e-11,0) (-6.359455323e-07,0) (-9.524322186e-05,0) (-1.168207208e-06,0) (4.963625375e-11,0) (-6.28702053e-07,0) (-3.114294568e-11,0) (4.478956051e-07,0) (5.538823034e-05,0) (2.230680666e-12,0) (1.774135912e-06,0) (2.782574797e-06,0) (4.907366656e-10,0) (-1.097731374e-06,0) (-3.17533837e-06,0) (-3.19703626e-11,0) (1.108827398e-06,0) (2.817216516e-06,0) (-3.361210006e-11,0) (1.86095787e-06,0) (7.359028335e-06,0) (-4.33680869e-19,0) (-0.0002852827998,0) (-0.0001093982521,0) (-4.438290702e-06,0) (0.0612087474,0) (-1.084202172e-18,0) (-5.672657459e-06,0) (-0.001412428299,0) (2.934551322e-06,0) (-0.05104289932,0) (5.844527336e-20,0) (2.315741605e-10,0) (2.280737082e-08,0) (1.99657454e-10,0) (-0.001386055972,0) (2.032879073e-20,0) (-2.218079147e-11,0) (-0.0001285817751,0) (-2.334044471e-07,0) (0.000791823636,0) (2.435219723e-21,0) (1.565366177e-10,0) (1.581342029e-11,0) (4.980086481e-09,0) (-0.0001439248567,0) (-5.558653716e-22,0) (1.452916396e-08,0) (4.223110462e-10,0) (-7.100395277e-06,0) (-2.760876911e-05,0) (-2.415367389e-22,0) (-1.566034151e-09,0) (1.050286112e-10,0) (1.196885357e-08,0) (-1.098689074e-05,0) (3.441071348e-22,0) (2.91435589e-09,0) (1.016381852e-10,0) (-1.778376473e-07,0) (-1.275177812e-05,0) (-2.64697796e-22,0) (-1.096373539e-09,0) (-2.116571378e-11,0) (3.816288677e-07,0) (7.029415091e-05,0) (2.067951531e-22,0) (-1.759502375e-08,0) (2.032173328e-10,0) (-7.041690834e-06,0) (-9.234442056e-06,0) (2.714186385e-25,0) (3.778730592e-10,0) (3.371220318e-09,0) (-7.123309402e-13,0) (-3.067020323e-09,0) (9.264422861e-23,0) (-4.169374205e-09,0) (-8.414027643e-11,0) (2.098761966e-06,0) (5.54532595e-06,0) (-9.926167351e-23,0) (-9.442255645e-09,0) (-1.131400601e-10,0) (5.032227385e-06,0) (1.055086583e-06,0) -(-0.01870392239,0) (-0.005666223889,0) (0.0009130148356,0) (-0.0008914920716,0) (0.0002236517882,0) (-2.053323155e-05,0) (-1.204518931e-05,0) (-6.483972824e-07,0) (5.785990742e-06,0) (3.633038737e-06,0) (-1.276610461e-06,0) (3.596617133e-07,0) (1.548277966e-06,0) (-2.360738584e-06,0) (0.03012600167,0) (-0.02661648463,0) (-0.0001013170272,0) (-3.750412402e-07,0) (-0.02410440258,0) (-6.473083976e-06,0) (7.86788762e-09,0) (0.002917313174,0) (-6.209909928e-05,0) (-5.982724624e-08,0) (-0.0008486929007,0) (8.153315783e-11,0) (1.767015122e-07,0) (0.0001524684146,0) (8.386966911e-07,0) (3.506062313e-10,0) (-2.412940959e-06,0) (-1.03489508e-10,0) (4.325370202e-07,0) (-2.813110036e-05,0) (-7.01336135e-11,0) (-1.272009523e-06,0) (-6.63678222e-07,0) (2.141801211e-11,0) (7.20810683e-07,0) (2.366970548e-05,0) (-1.012439589e-10,0) (-8.825188043e-08,0) (-4.302174199e-06,0) (2.262857906e-07,0) (1.343906619e-10,0) (-5.823968285e-07,0) (3.391481584e-11,0) (1.224153722e-06,0) (1.147096904e-06,0) (3.625524393e-11,0) (1.96618936e-06,0) (7.619721113e-07,0) (1.734723476e-18,0) (-0.0002399783128,0) (4.429670749e-06,0) (0.05862781591,0) (-0.03565811638,0) (0,0) (3.134980355e-06,0) (-0.003476641184,0) (-3.253025745e-06,0) (-0.01396980218,0) (-2.710505431e-20,0) (1.136629777e-07,0) (1.037074105e-06,0) (-5.146353529e-09,0) (-0.00182694799,0) (2.710505431e-20,0) (-1.794104248e-08,0) (-0.0001795896175,0) (1.81405844e-07,0) (0.0008103216112,0) (3.388131789e-21,0) (2.246534061e-07,0) (1.460111013e-07,0) (-3.147057971e-10,0) (-0.0001426984983,0) (0,0) (3.165906529e-08,0) (-1.530328056e-10,0) (-5.880359132e-08,0) (-2.120406882e-05,0) (5.29395592e-23,0) (-1.426401455e-08,0) (4.771886505e-10,0) (-9.224878544e-07,0) (5.639404919e-06,0) (0,0) (-1.923071812e-09,0) (3.061682836e-11,0) (1.365337013e-07,0) (3.050917587e-06,0) (-5.065341759e-10,0) (4.235164736e-22,0) (3.046264775e-12,0) (6.475738678e-07,0) (1.629354359e-05,0) (0,0) (9.109682087e-09,0) (-1.822953378e-10,0) (-1.485812014e-06,0) (-3.477463597e-06,0) (0,0) (6.655951109e-09,0) (-5.74589738e-07,0) (1.527580882e-10,0) (1.947745163e-07,0) (-7.857037501e-09,0) (2.117582368e-22,0) (9.043149751e-11,0) (3.224418723e-06,0) (6.035756443e-07,0) (-1.058791184e-22,0) (-1.558553604e-08,0) (1.607444256e-10,0) (1.658167214e-06,0) (-5.670284416e-07,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.0411321873,0) (-0.008339062533,0) (0.0006096469769,0) (-0.001541034196,0) (0.0003931502828,0) (-1.829129434e-05,0) (-1.884297833e-05,0) (-5.725387206e-06,0) (6.503070519e-06,0) (1.447036132e-05,0) (-3.098376047e-06,0) (4.108944902e-07,0) (2.993889774e-06,0) (-0.003692931319,0) (6.684943117e-06,0) (0.006341380197,0) (-0.0001230406465,0) (-2.74369599e-07,0) (-0.04913856285,0) (6.893948142e-06,0) (1.71308782e-08,0) (0.007067222778,0) (1.30112031e-05,0) (-5.544016143e-08,0) (-0.002630298682,0) (1.854554824e-10,0) (-4.611068783e-08,0) (0.0005833114635,0) (-4.475959074e-11,0) (-3.716938248e-07,0) (-5.172975408e-06,0) (-6.23653338e-11,0) (-9.518968852e-07,0) (-7.449260097e-05,0) (-2.062491615e-07,0) (-6.585442473e-11,0) (-1.207582855e-06,0) (4.133017006e-11,0) (9.861243906e-08,0) (4.383718543e-05,0) (-2.959197357e-12,0) (9.323612458e-08,0) (3.492314996e-06,0) (-6.522504806e-10,0) (-1.657548191e-06,0) (-1.703770788e-06,0) (4.242558686e-11,0) (4.549582158e-07,0) (2.634266796e-06,0) (4.460116865e-11,0) (8.116553402e-07,0) (6.443219229e-06,0) (-3.035766083e-18,0) (0.0004829576041,0) (0.0001242870854,0) (5.888692216e-06,0) (0.04723623807,0) (-1.138412281e-18,0) (3.294780257e-06,0) (0.001149751687,0) (-3.89436725e-06,0) (-0.04242691604,0) (-1.694065895e-20,0) (-2.768655948e-10,0) (-2.949608241e-08,0) (-2.64989249e-10,0) (-0.001090599805,0) (3.726944968e-20,0) (3.933175976e-11,0) (0.0002019770285,0) (3.09697559e-07,0) (0.0003194157652,0) (-2.541098842e-21,0) (-1.91547415e-10,0) (-2.098780888e-11,0) (-1.35141104e-08,0) (-0.0001132326063,0) (5.823351512e-22,0) (-2.624027897e-08,0) (-5.605204444e-10,0) (-2.631350537e-06,0) (-2.46417407e-05,0) (2.514629062e-22,0) (1.457134286e-09,0) (-1.394145316e-10,0) (-1.684666273e-07,0) (-8.469855444e-06,0) (2.117582368e-22,0) (-5.243764032e-09,0) (-1.348940671e-10,0) (5.599469354e-08,0) (-1.022219073e-05,0) (1.694065895e-21,0) (1.779518342e-09,0) (2.808845119e-11,0) (1.111762798e-07,0) (5.549890313e-05,0) (-2.249931266e-22,0) (1.163451117e-08,0) (-2.697230875e-10,0) (-7.446974375e-06,0) (-5.385302829e-06,0) (-1.550963649e-25,0) (3.272970404e-10,0) (-3.370708344e-09,0) (9.449748969e-13,0) (3.578609755e-09,0) (6.948317145e-23,0) (9.0329589e-09,0) (1.116684355e-10,0) (8.917771118e-07,0) (5.110647247e-06,0) (5.128519798e-23,0) (2.385951371e-08,0) (1.501339326e-10,0) (2.921382097e-06,0) (1.83702408e-06,0) -(0.02917389264,0) (0.008838028944,0) (-0.001424096841,0) (0.001390526193,0) (-0.0003488462539,0) (3.20272016e-05,0) (1.878777362e-05,0) (1.011353251e-06,0) (-9.024838172e-06,0) (-5.66671952e-06,0) (1.99122386e-06,0) (-5.609910046e-07,0) (-2.414963783e-06,0) (3.131764434e-06,0) (0.02113859613,0) (-0.02661209925,0) (-7.166687639e-05,0) (4.97322524e-07,0) (0.03782720766,0) (-5.177796953e-06,0) (-1.043334764e-08,0) (-0.004535076858,0) (-4.088571921e-05,0) (7.933896824e-08,0) (0.001461529417,0) (-1.081506332e-10,0) (9.410884509e-08,0) (-0.0002381860178,0) (1.194202806e-06,0) (-4.647773923e-10,0) (1.261180451e-06,0) (1.372863619e-10,0) (1.038364612e-06,0) (4.216515965e-05,0) (9.30177865e-11,0) (2.694383648e-07,0) (2.749813509e-06,0) (-2.841116772e-11,0) (-1.995626923e-07,0) (-3.784413631e-05,0) (1.343156087e-10,0) (4.046369427e-06,0) (2.801726811e-06,0) (6.603081789e-07,0) (-1.781739592e-10,0) (-1.048868705e-07,0) (-4.49845343e-11,0) (-4.575800789e-07,0) (-3.241043012e-06,0) (-4.809009413e-11,0) (-7.612857105e-07,0) (-3.494038197e-06,0) (0,0) (-0.0001781248725,0) (-5.875863018e-06,0) (-0.00325358254,0) (-0.03202255516,0) (-4.33680869e-19,0) (2.27129912e-06,0) (-0.002309571161,0) (4.314038673e-06,0) (0.02951567944,0) (-5.421010862e-20,0) (9.109152453e-08,0) (7.736946357e-07,0) (6.824590353e-09,0) (0.002846967579,0) (0,0) (-1.380258363e-08,0) (-0.00014659622,0) (-2.405362853e-07,0) (-0.000837203801,0) (0,0) (1.804379704e-07,0) (1.404322281e-07,0) (4.172190712e-10,0) (0.0002216784642,0) (-8.470329473e-22,0) (2.542909593e-08,0) (2.030650731e-10,0) (-3.866749846e-08,0) (3.31291695e-05,0) (0,0) (-1.148514282e-08,0) (-6.330232694e-10,0) (-4.027290359e-06,0) (-3.296411943e-06,0) (0,0) (-1.548017159e-09,0) (-4.061005464e-11,0) (4.700979461e-08,0) (-5.014173148e-06,0) (-4.001910504e-10,0) (0,0) (-4.040786575e-12,0) (-5.617850981e-07,0) (-2.586134062e-05,0) (1.058791184e-22,0) (7.229839581e-09,0) (2.418124915e-10,0) (6.181658491e-06,0) (1.538533616e-06,0) (-2.64697796e-23,0) (5.335196032e-09,0) (3.786615396e-07,0) (-2.026498209e-10,0) (1.980117903e-07,0) (-6.313576244e-09,0) (-2.117582368e-22,0) (-1.199476441e-10,0) (-1.961240248e-06,0) (-3.991018329e-06,0) (-2.117582368e-22,0) (-1.197908084e-08,0) (-2.132048396e-10,0) (-1.09602752e-06,0) (-5.6965094e-07,0) -(0.2731656004,0) (0.01615280688,0) (-0.02892567571,0) (-0.00681892694,0) (0.00311081643,0) (-0.0001242414384,0) (9.142358452e-06,0) (0.0001499983368,0) (-0.0001504484689,0) (9.162783375e-05,0) (-7.145343949e-05,0) (6.119624794e-05,0) (-3.277313972e-05,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.2695462447,0) (0.02324389201,0) (-0.03424272561,0) (-0.004333899483,0) (0.002291534039,0) (4.332848919e-05,0) (0.0001066902242,0) (-2.294053818e-05,0) (1.892984583e-05,0) (-3.739677434e-05,0) (2.322309841e-05,0) (-2.861059199e-06,0) (6.880804962e-06,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.1208306479,0) (-0.009094799051,0) (-0.002843835608,0) (4.385357727e-05,0) (0.000101455379,0) (-2.497568383e-05,0) (2.882303202e-05,0) (4.591201175e-06,0) (1.25522063e-05,0) (2.574477926e-05,0) (9.479225358e-06,0) (3.178405029e-06,0) (8.85371498e-06,0) (1.738623898e-10,0) (-0.03001102387,0) (0.1997440824,0) (-0.0001221715915,0) (-1.474070406e-10,0) (-0.02386352647,0) (-3.161081699e-06,0) (8.892664166e-13,0) (-0.0003782332269,0) (5.069147332e-07,0) (1.658455888e-13,0) (1.114472307e-05,0) (-1.500172006e-14,0) (-4.573358943e-07,0) (5.007857078e-05,0) (2.271380542e-06,0) (1.920933975e-13,0) (-1.440347086e-05,0) (3.522406586e-14,0) (-3.493952407e-06,0) (4.251167502e-05,0) (1.184301307e-14,0) (8.749326325e-07,0) (-6.649639108e-06,0) (-7.916366537e-15,0) (-3.478571729e-06,0) (4.038721491e-05,0) (5.133587681e-14,0) (-1.83560613e-06,0) (3.443235877e-05,0) (6.48529231e-07,0) (4.700311397e-15,0) (3.713046695e-06,0) (-8.486490438e-15,0) (-1.351843834e-06,0) (9.719683219e-06,0) (-1.014688338e-14,0) (-1.550010209e-06,0) (1.674276403e-05,0) (-1.734723476e-18,0) (-0.000377473387,0) (-9.424696266e-12,0) (-0.008719428334,0) (0.06301289739,0) (0,0) (4.987671827e-06,0) (-0.00143187811,0) (-4.141268852e-10,0) (-0.005892254741,0) (1.694065895e-21,0) (1.859842766e-07,0) (4.229671091e-07,0) (-6.138140965e-13,0) (-6.644558929e-05,0) (0,0) (-2.859798928e-08,0) (-8.511178364e-06,0) (1.891527865e-12,0) (-1.727510638e-05,0) (0,0) (3.662671398e-07,0) (6.488075772e-07,0) (-3.437640456e-13,0) (-2.522670586e-05,0) (0,0) (5.164395866e-08,0) (2.409182199e-13,0) (-3.633301909e-07,0) (1.293020884e-05,0) (0,0) (-2.328816091e-08,0) (-6.937242073e-14,0) (4.52940866e-06,0) (-8.289612776e-06,0) (-5.29395592e-23,0) (-3.139926191e-09,0) (-5.790193031e-15,0) (-4.039157833e-07,0) (1.915478012e-06,0) (-8.160659869e-10,0) (0,0) (-1.266989765e-15,0) (-9.077704595e-06,0) (2.704664962e-05,0) (0,0) (1.483552381e-08,0) (5.416556893e-14,0) (-5.200987241e-06,0) (1.074630952e-05,0) (0,0) (1.08671901e-08,0) (-1.266292565e-07,0) (-3.289808167e-14,0) (-9.136562887e-07,0) (-1.278080324e-08,0) (-2.117582368e-22,0) (-2.091689037e-14,0) (-5.329587217e-06,0) (9.978394523e-06,0) (6.352747104e-22,0) (-2.480045938e-08,0) (-3.214682481e-14,0) (6.229744764e-07,0) (4.252964659e-06,0) -(-0.1395541466,0.2417148723) (-0.01357903408,0.02351957694) (0.01423099906,-0.02464881341) (0.004074510377,-0.007057258989) (-0.001425660096,0.00246931572) (1.975203663e-05,-3.4211531e-05) (-5.71653615e-06,9.901331055e-06) (-7.743450601e-05,0.0001341204987) (6.633973277e-05,-0.0001149037877) (-4.268839373e-05,7.393846683e-05) (3.706007127e-05,-6.418992637e-05) (-2.936722707e-05,5.086552936e-05) (1.515866188e-05,-2.625557255e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.05906019127,0.102295252) (0.003122660326,-0.005408606339) (0.001450134843,-0.002511707226) (-1.663179087e-05,2.88071068e-05) (-5.691193611e-05,9.85743649e-05) (4.320980191e-06,-7.484157229e-06) (-1.508217198e-05,2.612308816e-05) (-5.052939195e-06,8.751947413e-06) (-3.798238809e-06,6.578742597e-06) (-1.228729791e-05,2.128222427e-05) (-6.964894952e-06,1.206355193e-05) (-2.032950537e-06,3.521173619e-06) (-3.820457386e-06,6.6172263e-06) (0.005175592884,-0.008964389834) (5.304917144e-09,-9.188386024e-09) (-0.09224965312,0.1597810862) (-0.0001541485888,0.0002669931877) (1.707308578e-10,-2.957145201e-10) (0.01114537494,-0.01930435567) (2.347871873e-06,-4.066633374e-06) (-7.561107841e-13,1.309622278e-12) (0.000246935527,-0.000427704879) (-1.387241408e-07,2.402772602e-07) (-6.941934625e-14,1.202378346e-13) (-5.376045784e-06,9.311584441e-06) (-7.712042098e-13,1.335764866e-12) (8.292123503e-08,-1.436237921e-07) (-4.795061678e-05,8.305290452e-05) (-4.456588466e-15,7.719037506e-15) (-4.108193539e-07,7.115599937e-07) (3.307487654e-06,-5.728736662e-06) (2.981603408e-15,-5.164287035e-15) (1.947461171e-06,-3.373101694e-06) (-2.748230891e-05,4.760075535e-05) (-1.069619489e-08,1.8526353e-08) (7.219598505e-15,-1.25047114e-14) (3.005871758e-06,-5.206322606e-06) (-2.336955431e-15,4.047727356e-15) (8.74177065e-07,-1.514119091e-06) (-1.502558212e-05,2.602507165e-05) (1.117846321e-16,-1.936173322e-16) (2.783083705e-06,-4.820442378e-06) (-2.210803363e-05,3.82922375e-05) (1.377538078e-13,-2.385965939e-13) (4.150521297e-07,-7.188913765e-07) (-5.857532454e-06,1.014554382e-05) (-2.638813198e-15,4.570558867e-15) (4.927792809e-07,-8.535187514e-07) (-3.782800919e-06,6.552003387e-06) (-2.398416777e-15,4.154178646e-15) (1.233592183e-06,-2.136644337e-06) (-8.538607507e-06,1.478930203e-05) (-6.505213035e-19,-5.854691731e-18) (0.0007200330219,-0.001247133777) (-0.0001878309588,0.0003253327639) (3.990106788e-09,-6.911067681e-09) (-0.03195096622,0.05534069685) (4.878909776e-19,-5.149960319e-19) (-2.330564706e-05,4.036656481e-05) (0.0007153114482,-0.001238955771) (2.662361388e-10,-4.611345189e-10) (0.003245375324,-0.005621154951) (3.176373552e-22,1.270549421e-21) (6.095239344e-10,-1.055726423e-09) (-3.44128403e-08,5.960478783e-08) (7.46427043e-14,-1.292849566e-13) (1.059566382e-05,-1.835222807e-05) (2.223461487e-21,-2.117582368e-22) (-1.888476037e-09,3.270936446e-09) (8.862191923e-06,-1.534976668e-05) (-1.368859681e-12,2.370934516e-12) (6.318959677e-06,-1.094475921e-05) (-7.676236084e-22,4.764560328e-22) (7.446402637e-11,-1.28975477e-10) (-1.079534809e-15,1.869808714e-15) (-7.090290898e-08,1.228074408e-07) (4.706497865e-06,-8.151893428e-06) (-4.764560328e-22,5.29395592e-22) (1.33340407e-08,-2.309523596e-08) (-4.125560452e-14,7.145680311e-14) (6.800887061e-06,-1.177948193e-05) (-1.445470366e-05,2.503628115e-05) (-1.32348898e-23,-1.852884572e-22) (1.436655647e-09,-2.488360574e-09) (2.776996633e-14,-4.809899276e-14) (3.119865907e-07,-5.403766263e-07) (-1.632104712e-06,2.826888284e-06) (-8.602678371e-23,3.044024654e-22) (-4.064786482e-09,7.040416709e-09) (2.25289788e-14,-3.902133579e-14) (-3.398791457e-07,5.886879487e-07) (1.948638818e-06,-3.375141438e-06) (7.411538288e-22,-5.29395592e-22) (2.900715708e-10,-5.024186985e-10) (-8.107037041e-16,1.40417988e-15) (1.611039988e-06,-2.790403113e-06) (-1.070561973e-05,1.854267731e-05) (-7.940933881e-23,-3.176373552e-22) (6.102102725e-09,-1.056915195e-08) (1.654781353e-14,-2.866165396e-14) (4.947043268e-06,-8.568530288e-06) (-1.021949476e-05,1.770068415e-05) (8.271806126e-25,-2.688336991e-24) (4.489881054e-12,-7.776702106e-12) (-2.191745498e-09,3.79621456e-09) (-9.634049138e-17,1.668666255e-16) (-1.590204424e-08,2.754314857e-08) (-7.940933881e-23,9.264422861e-23) (3.879285887e-09,-6.719120253e-09) (-8.60107949e-15,1.489750663e-14) (1.863843086e-06,-3.228270922e-06) (-3.791159118e-06,6.566480212e-06) (-1.32348898e-23,-1.588186776e-22) (8.070512659e-09,-1.397853797e-08) (-9.550114474e-15,1.654128355e-14) (1.512581421e-06,-2.619867872e-06) (-4.456953971e-06,7.719670724e-06) -(-0.1378654839,0.2387900227) (-0.0169245535,0.02931418655) (0.0167882116,-0.02907803547) (0.002856832998,-0.004948179901) (-0.001021264037,0.001768881199) (-6.261071557e-05,0.0001084449405) (-5.097302548e-05,8.828786994e-05) (5.211057454e-06,-9.025816272e-06) (-1.563957284e-05,2.708853477e-05) (1.958875962e-05,-3.392872691e-05) (-7.901662008e-06,1.368608006e-05) (1.11827671e-06,-1.936912078e-06) (-3.986478569e-06,6.904783425e-06) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.002296938444,0) (0.0004656769935,0) (-3.404442288e-05,0) (8.60557369e-05,0) (-2.195463111e-05,0) (1.021437952e-06,0) (1.052245556e-06,0) (3.19721922e-07,0) (-3.631499723e-07,0) (-8.080661741e-07,0) (1.730221396e-07,0) (-2.294551817e-08,0) (-1.671873287e-07,0) (0.008189657419,0) (5.041046806e-06,0) (-0.008342968697,0) (0.0002452856292,0) (-2.067629571e-07,0) (0.002505844645,0) (-1.362524288e-05,0) (1.28943057e-08,0) (-0.0003814274264,0) (-3.297204231e-05,0) (-4.172364306e-08,0) (0.0001791736462,0) (1.381913284e-10,0) (1.079257912e-07,0) (-3.267927222e-05,0) (-3.366221799e-11,0) (2.800914463e-07,0) (2.957483131e-08,0) (-4.691192177e-11,0) (6.280388515e-07,0) (3.585047097e-06,0) (-8.962099782e-07,0) (-4.954574338e-11,0) (9.752156065e-07,0) (3.109204061e-11,0) (3.176698282e-07,0) (-2.771203269e-06,0) (-2.22648192e-12,0) (1.653561186e-06,0) (-1.853786177e-06,0) (-4.89836296e-10,0) (1.10502967e-06,0) (-9.167977887e-07,0) (3.191879817e-11,0) (5.061688212e-07,0) (-6.78714229e-07,0) (3.355563738e-11,0) (7.856396421e-07,0) (-1.190808539e-06,0) (6.505213035e-19,0) (-0.0009274664534,0) (-0.0002742614059,0) (4.438674186e-06,0) (-0.001474755946,0) (-1.084202172e-19,0) (-1.006015126e-05,0) (-0.002941831249,0) (-2.930994065e-06,0) (0.005259890253,0) (1.799945013e-21,0) (5.998322676e-10,0) (6.199376993e-08,0) (-1.995271809e-10,0) (6.084148142e-05,0) (5.082197684e-20,0) (-7.44667295e-11,0) (-0.0003970796515,0) (2.33129964e-07,0) (0.0003677132413,0) (1.98523347e-23,0) (4.113038732e-10,0) (-1.578850801e-11,0) (2.295141761e-08,0) (6.300650718e-06,0) (-1.588186776e-22,0) (4.941788939e-08,0) (-4.216631935e-10,0) (-3.616195343e-06,0) (5.091702812e-06,0) (5.95570041e-23,0) (-3.504778343e-09,0) (-1.048420309e-10,0) (2.359753035e-07,0) (2.499492298e-07,0) (-1.058791184e-22,0) (9.88648561e-09,0) (-1.014613753e-10,0) (-2.52638343e-07,0) (8.108630087e-07,0) (1.32348898e-22,0) (-3.46259369e-09,0) (2.113178083e-11,0) (2.345799347e-07,0) (-3.336664573e-06,0) (5.29395592e-23,0) (-3.308381734e-08,0) (-2.028902496e-10,0) (2.843321806e-06,0) (-2.094078847e-06,0) (3.101927297e-25,0) (-5.632286098e-11,0) (7.855457093e-09,0) (7.109805969e-13,0) (-7.829784988e-09,0) (-5.95570041e-23,0) (-1.617807133e-08,0) (8.400741329e-11,0) (9.173899183e-07,0) (-1.236998982e-06,0) (5.29395592e-23,0) (-4.115909576e-08,0) (1.129540535e-10,0) (1.15856545e-06,0) (-1.384583023e-06,0) -(-0.05751293495,0) (-0.01742314575,0) (0.002807441229,0) (-0.002741260601,0) (0.0006877098011,0) (-6.313790157e-05,0) (-3.703790973e-05,0) (-1.993765262e-06,0) (1.779141841e-05,0) (1.117127821e-05,0) (-3.925466161e-06,0) (1.105928494e-06,0) (4.760820116e-06,0) (2.356370425e-06,0) (0.002086629187,0) (0.008695215087,0) (-6.2979561e-06,0) (3.741398894e-07,0) (-0.07442571239,0) (3.937534685e-07,0) (-7.848018285e-09,0) (0.008950218454,0) (-7.896863725e-06,0) (5.968412251e-08,0) (-0.002792952986,0) (-8.133735556e-11,0) (5.197317153e-08,0) (0.0004693188178,0) (-7.459501429e-07,0) (-3.500108653e-10,0) (-4.093285999e-06,0) (1.032339543e-10,0) (-9.466882665e-07,0) (-8.422440694e-05,0) (6.995807459e-11,0) (-1.632739084e-06,0) (-4.319618027e-06,0) (-2.136820204e-11,0) (9.874220973e-07,0) (7.401138147e-05,0) (1.010201071e-10,0) (-5.466525505e-06,0) (-8.034065257e-06,0) (-6.503235901e-07,0) (-1.341657236e-10,0) (-4.441394808e-07,0) (-3.383529974e-11,0) (1.834727903e-06,0) (5.4567997e-06,0) (-3.617647595e-11,0) (2.98183865e-06,0) (5.407168305e-06,0) (0,0) (-3.801065212e-06,0) (-4.420846394e-06,0) (0.06307890282,0) (0.006834856211,0) (-1.734723476e-18,0) (1.2360615e-07,0) (-0.0004147197189,0) (3.245439041e-06,0) (-0.05323530859,0) (-1.084202172e-19,0) (-7.133332631e-09,0) (1.11168147e-08,0) (5.132952515e-09,0) (-0.005614192732,0) (-1.355252716e-20,0) (3.611864086e-10,0) (1.48279327e-05,0) (-1.809388448e-07,0) (0.00192530132,0) (-6.776263578e-21,0) (-1.462622461e-08,0) (-4.015748519e-08,0) (3.138645067e-10,0) (-0.0004375922108,0) (8.470329473e-22,0) (-2.062581006e-09,0) (1.526916853e-10,0) (-7.487547447e-09,0) (-6.5275208e-05,0) (-4.235164736e-22,0) (9.665570157e-10,0) (-4.759094266e-10,0) (4.428858264e-06,0) (1.003236761e-05,0) (2.117582368e-22,0) (1.297693598e-10,0) (-3.054149145e-11,0) (7.432534774e-08,0) (9.720891838e-06,0) (2.414566489e-11,0) (8.470329473e-22,0) (-3.039500918e-12,0) (1.39543781e-06,0) (5.069545599e-05,0) (0,0) (-4.776269042e-10,0) (1.818254864e-10,0) (-9.70477885e-06,0) (-5.529115333e-06,0) (0,0) (-4.190493315e-10,0) (-1.078377038e-06,0) (-1.525802291e-10,0) (-6.801392399e-08,0) (5.154379602e-10,0) (2.117582368e-22,0) (-9.02140094e-11,0) (5.837397148e-06,0) (5.909045808e-06,0) (2.64697796e-23,0) (2.987041801e-10,0) (-1.60387982e-10,0) (3.118621718e-06,0) (1.889669192e-07,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0.04586770644,0) (0.1295753448,0) (0.0004442131108,0) (0.1967622424,0) (0.0001704511524,0) (0.07116101842,0) (0.01342434892,0) (0.1479153603,0) (0.05829558339,0) (0.002881188799,0) (0.0986772665,0) (0.03669568318,0) (0.0583789555,0) (0.004863627082,0) (0.02285094543,0) (0.01871025158,0) (0.01720002272,0) (0.0129751607,0) (0.01950909261,0) (0.002216861756,0) (0.007850079801,0) (0.0006684007036,0) (0.01106999276,0) (0.004241350104,0) (0.006378882393,0) (0.0004382569924,0) (0.00246318523,0) (0.0002443597394,0) (0.003066181956,0) (0.001196173181,0) (0.001717101805,0) (2.637892713e-05,0) (0.0006299645073,0) (1.244860412e-05,0) (0.0006474759855,0) (0.0002384489065,0) (0.000314514928,0) (9.546434388e-07,0) (0.0001139889123,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(3.590997234e-05,0) (0.0001233917216,0) (1.30441383e-07,0) (1.553904071e-05,0) (1.536434435e-06,0) (2.779572112e-06,0) (2.900697787e-07,0) (1.694146338e-07,0) (2.480155548e-07,0) (7.759935467e-08,0) (9.02954327e-09,0) (1.753815685e-09,0) (2.272725483e-08,0) (0.05134867755,0) (0.01875202135,0) (0.000278013623,0) (0.005748536394,0) (0.00207432931,0) (0.0001512337715,0) (0.0004583230146,0) (0.0001648728595,0) (3.850112287e-05,0) (0.0005754261716,0) (0.0002097466075,0) (1.254127337e-05,0) (1.450462071e-05,0) (4.081696167e-05,0) (1.394154879e-05,0) (4.99941714e-06,0) (1.463681797e-05,0) (7.757214435e-09,0) (1.511410508e-06,0) (4.698023398e-06,0) (1.404013897e-06,0) (8.766678713e-06,0) (6.146623103e-06,0) (8.264078866e-06,0) (9.044095585e-07,0) (2.283550353e-06,0) (9.876553109e-07,0) (3.043249266e-07,0) (6.038139103e-07,0) (2.400053708e-07,0) (9.769650476e-07,0) (1.981749796e-06,0) (7.468840143e-07,0) (8.787060028e-07,0) (1.618326537e-06,0) (8.543525323e-07,0) (5.00506041e-07,0) (9.817712635e-07,0) (4.454731505e-07,0) (3.469446952e-18,0) (0.003515743553,0) (0.09234509611,0) (0.03477975199,0) (1.223510922e-05,0) (4.33680869e-19,0) (4.597357965e-05,0) (0.02740325923,0) (0.01004796136,0) (0.0003916175239,0) (1.694065895e-21,0) (1.460078625e-06,0) (6.30598451e-05,0) (2.330863833e-05,0) (8.451039346e-05,0) (2.710505431e-20,0) (2.399382941e-10,0) (0.001718607472,0) (0.0006467762177,0) (6.859021545e-05,0) (1.482307658e-21,0) (1.335565741e-06,0) (3.205846614e-06,0) (7.65274698e-06,0) (1.646933149e-05,0) (-8.470329473e-22,0) (4.379161533e-06,0) (1.211169872e-05,0) (2.157052131e-05,0) (8.161268252e-06,0) (0,0) (5.33910383e-06,0) (1.925982866e-05,0) (4.905944391e-05,0) (4.081163393e-07,0) (-8.470329473e-22,0) (3.171881935e-06,0) (1.1505279e-05,0) (2.779490012e-05,0) (1.68620799e-06,0) (1.32348898e-23,0) (1.369395562e-07,0) (3.006229585e-07,0) (6.24704245e-07,0) (5.081771609e-07,0) (0,0) (4.516212835e-07,0) (1.131399868e-06,0) (1.789055475e-06,0) (9.447754395e-07,0) (2.117582368e-22,0) (5.10826975e-11,0) (1.696043397e-06,0) (3.063049089e-06,0) (6.775872177e-06,0) (1.058791184e-22,0) (6.382847646e-07,0) (1.694474736e-06,0) (2.713576222e-06,0) (1.415412032e-06,0) (1.058791184e-22,0) (3.927215262e-07,0) (1.006395786e-06,0) (4.761797554e-07,0) (1.932952223e-06,0) -(0.02151507676,0) (0.08145033313,0) (0.0009225981511,0) (0.009071793741,0) (0.001897530337,0) (0.001271522409,0) (0.000393613206,0) (3.191902604e-05,0) (0.0002180280768,0) (1.351339316e-05,0) (1.003663981e-05,0) (6.66710727e-06,0) (1.372598266e-05,0) (0.01971880285,0) (0.0002195616787,0) (0.0003270306584,0) (2.678465689e-05,0) (0.002763516793,0) (0.106697746,0) (8.901625396e-07,0) (0.0001038820182,0) (0.0345000232,0) (1.0786905e-05,0) (0.0002550410404,0) (0.002603733392,0) (5.086780754e-06,0) (1.296261603e-06,0) (0.01019461019,0) (6.255143051e-06,0) (6.536172276e-06,0) (3.683045246e-05,0) (3.540615072e-06,0) (1.378850213e-05,0) (0.0012674418,0) (5.746639196e-06,0) (4.91232311e-05,0) (0.000126571826,0) (3.717599159e-07,0) (5.395422689e-06,0) (0.0003974504446,0) (3.479206662e-07,0) (5.176068333e-06,0) (7.774311777e-06,0) (2.357456293e-06,0) (1.1427038e-06,0) (1.727367798e-06,0) (7.399816442e-07,0) (1.145978052e-05,0) (3.343258584e-05,0) (4.18479744e-07,0) (5.861896876e-06,0) (1.04002171e-05,0) (-5.421010862e-20,0) (9.561558787e-07,0) (0.03485246954,0) (0.02674278495,0) (0.002291387465,0) (0,0) (1.569546168e-06,0) (0.0004250908481,0) (0.01192913133,0) (0.03599121376,0) (-8.67361738e-19,0) (4.328799598e-08,0) (3.906012346e-08,0) (0.0001448848612,0) (0.05737890751,0) (0,0) (1.172235841e-10,0) (9.806088991e-06,0) (0.0006373039673,0) (0.001947382062,0) (0,0) (1.816924258e-07,0) (7.09263354e-07,0) (2.318653812e-05,0) (0.009023977889,0) (0,0) (2.436045478e-08,0) (7.517683295e-06,0) (2.140748389e-07,0) (0.001279410655,0) (0,0) (2.086878003e-08,0) (2.83498791e-05,0) (0.0001528953655,0) (0.0003576463545,0) (0,0) (6.94006599e-09,0) (7.29799041e-06,0) (6.948945167e-06,0) (0.0008507631173,0) (2.393151383e-11,0) (0,0) (2.620125233e-08,0) (2.63818605e-06,0) (9.527036339e-05,0) (0,0) (1.215275915e-09,0) (1.727758853e-06,0) (4.452695345e-05,0) (2.58813648e-05,0) (0,0) (2.542260728e-09,0) (1.109931996e-05,0) (3.064539702e-06,0) (6.121327117e-07,0) (1.401947502e-09,0) (0,0) (1.253713298e-06,0) (2.653165066e-05,0) (2.635447273e-05,0) (-2.64697796e-23,0) (9.160979474e-11,0) (9.092686847e-07,0) (3.096286743e-06,0) (1.632018929e-07,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (-0.04650791085,0) (0.05339342277,0) (-0.006885511921,0) (0.06582968803,0) (0.005456254699,0) (-0.07128594273,0) (-0.03665265658,0) (0.0950451253,0) (-0.05839246872,0) (-0.01466480269,0) (0.05142104472,0) (-0.03675624203,0) (0.005432133241,0) (0.01745725437,0) (-0.02288938761,0) (-0.009939728979,0) (0.02293658634,0) (-0.01299685736,0) (0.0009346548029,0) (0.006928611436,0) (-0.007863266239,0) (-0.002292082329,0) (0.006540467226,0) (-0.004248384897,0) (0.0007511567492,0) (0.001716174845,0) (-0.002467331594,0) (-0.0007179158406,0) (0.001916075511,0) (-0.00119815967,0) (0.0004232273626,0) (0.0002078052141,0) (-0.0006310325767,0) (-7.912951479e-05,0) (0.0003179706291,0) (-0.0002388411143,0) (9.769891917e-05,0) (1.648674933e-05,0) (-0.0001141856685,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.0008172287347,0) (-0.00280811301,0) (-2.968547159e-06,0) (-0.0003536329813,0) (-3.496572923e-05,0) (-6.325669591e-05,0) (-6.601323888e-06,0) (-3.855489098e-06,0) (-5.64426606e-06,0) (-1.765983606e-06,0) (-2.054917267e-07,0) (-3.991282865e-08,0) (-5.172202734e-07,0) (0.02065391313,0) (-0.01874311768,0) (-2.839598951e-06,0) (0.001922210209,0) (-0.002074278464,0) (-0.00378330843,0) (0.0001500682067,0) (-0.0001650648726,0) (-0.0009079186671,0) (0.0002733644709,0) (-0.0002099969132,0) (-0.000231728652,0) (-1.467732161e-05,0) (1.720867302e-05,0) (-0.0003162091956,0) (-5.007846613e-06,0) (-1.116087826e-05,0) (-1.792231646e-06,0) (-1.513850326e-06,0) (-4.757169056e-06,0) (-3.730015351e-05,0) (1.142734126e-05,0) (-6.157851779e-06,0) (-5.327686836e-06,0) (-9.058902923e-07,0) (3.219670478e-06,0) (-1.974033463e-05,0) (-3.048988288e-07,0) (6.478429413e-07,0) (-3.602534663e-07,0) (-9.787608102e-07,0) (-1.968661101e-06,0) (2.586840302e-06,0) (-8.801255416e-07,0) (3.545150804e-06,0) (-3.546258443e-06,0) (-5.013482219e-07,0) (2.325538149e-06,0) (-2.752961059e-06,0) (-8.67361738e-19,0) (0.001081420423,0) (0.03683490234,0) (-0.03477674716,0) (-0.0005078099275,0) (-3.794707604e-19,0) (2.592330502e-05,0) (0.01315681817,0) (-0.01006015626,0) (-0.00380032527,0) (-8.809142651e-20,0) (5.636850501e-07,0) (2.319957752e-05,0) (-2.332385676e-05,0) (-0.001925267643,0) (1.355252716e-20,0) (7.146844379e-11,0) (0.0005565170578,0) (-0.0006475377206,0) (0.0001477002938,0) (-1.694065895e-21,0) (5.082980186e-07,0) (-3.210905036e-06,0) (1.660522345e-06,0) (-0.0003762065667,0) (1.694065895e-21,0) (1.287500472e-06,0) (-1.21303074e-05,0) (4.235369307e-05,0) (-4.425289125e-05,0) (4.65868121e-21,0) (2.385662691e-06,0) (-1.929410409e-05,0) (2.488333702e-06,0) (-1.793936166e-05,0) (2.117582368e-21,0) (9.350130233e-07,0) (-1.152532848e-05,0) (1.956543723e-05,0) (-2.651761138e-05,0) (-3.705769144e-22,0) (4.335966598e-08,0) (-3.011056923e-07,0) (1.016306761e-06,0) (-1.070586547e-05,0) (-2.64697796e-23,0) (2.401865277e-07,0) (-1.133223818e-06,0) (-4.430724484e-06,0) (4.166258622e-06,0) (5.29395592e-23,0) (-3.427165247e-10,0) (7.278680151e-07,0) (-3.068866642e-06,0) (2.654190084e-06,0) (-5.29395592e-23,0) (1.64497237e-07,0) (-1.697154657e-06,0) (6.207993408e-06,0) (-6.345131393e-06,0) (1.32348898e-22,0) (9.009374426e-08,0) (-1.008053064e-06,0) (2.068286092e-06,0) (-1.472957506e-06,0) -(0.006996970788,0) (0.02648866226,0) (0.0003000404036,0) (0.002950260254,0) (0.0006171004868,0) (0.0004135149158,0) (0.0001280079144,0) (1.038046461e-05,0) (7.090544467e-05,0) (4.394723674e-06,0) (3.264040205e-06,0) (2.168226279e-06,0) (4.463860426e-06,0) (-0.0197553569,0) (0.003169952543,0) (-0.001001057065,0) (0.0004308924624,0) (-0.002770174458,0) (0.0345564099,0) (-1.463376791e-05,0) (-0.000104145023,0) (0.01124524197,0) (8.482571159e-05,0) (-0.0002556526339,0) (0.0007911948594,0) (-5.099026091e-06,0) (4.407108103e-06,0) (0.003311940614,0) (-7.032866511e-06,0) (-6.547290259e-06,0) (2.17110916e-05,0) (-3.549379796e-06,0) (-6.299896001e-06,0) (0.000423327795,0) (-5.761058672e-06,0) (3.827017946e-05,0) (1.944685014e-05,0) (-3.72626502e-07,0) (3.938617866e-06,0) (0.0001271093011,0) (-3.486916283e-07,0) (8.356272429e-08,0) (4.1630784e-06,0) (-8.202975706e-07,0) (-1.144619623e-06,0) (2.265084665e-06,0) (-7.4172067e-07,0) (7.646110877e-06,0) (7.028005024e-06,0) (-4.193909109e-07,0) (3.865265904e-06,0) (1.465586965e-06,0) (4.33680869e-19,0) (6.036641356e-05,0) (-0.03492203779,0) (0.0248557125,0) (-0.01195439354,0) (2.168404345e-19,0) (3.980786074e-05,0) (0.003563583505,0) (-0.01195701747,0) (0.009444674026,0) (4.33680869e-19,0) (-6.897536925e-07,0) (3.64387135e-06,0) (-0.0001452631239,0) (0.01867201301,0) (4.065758147e-20,0) (-5.822791923e-09,0) (-0.0001187671813,0) (-0.0006389488347,0) (0.0008196149627,0) (0,0) (-2.79072853e-06,0) (-2.5788548e-06,0) (-2.32486879e-05,0) (0.002942712557,0) (6.776263578e-21,0) (-3.739146372e-07,0) (-7.534478148e-06,0) (1.681240677e-06,0) (0.0004156051342,0) (-3.388131789e-21,0) (-3.079720876e-07,0) (-2.842608235e-05,0) (-3.184660905e-05,0) (0.0002010405408,0) (-6.776263578e-21,0) (-1.028458898e-07,0) (-7.315992414e-06,0) (1.276502879e-05,0) (0.000267013377,0) (-5.020416579e-10,0) (0,0) (-2.62595584e-08,0) (1.224289849e-06,0) (3.061993997e-05,0) (-4.235164736e-22,0) (-2.317871362e-08,0) (-1.732223519e-06,0) (6.817124161e-06,0) (1.627774038e-05,0) (-5.29395592e-23,0) (-4.037988332e-08,0) (5.914031108e-06,0) (-3.068111963e-06,0) (-1.752991826e-06,0) (-2.137047511e-08,0) (4.235164736e-22,0) (-1.256735752e-06,0) (1.465535905e-05,0) (2.691960492e-06,0) (2.64697796e-23,0) (-4.779938991e-09,0) (-9.112894287e-07,0) (1.646291736e-06,0) (-4.897159534e-07,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0.0616499241,0) (-0.05612508663,0) (-0.005524837477,0) (-0.09849767551,0) (0.003987118413,0) (0.0945105571,0) (-0.03774692604,0) (-0.03968505748,0) (0.07743198352,0) (-0.01322794725,0) (-0.0355135707,0) (0.04874151795,0) (-0.03985523459,0) (0.009503484414,0) (0.03035175017,0) (-0.02158210048,0) (0.004347737172,0) (0.01723436331,0) (-0.01398296519,0) (0.00355609991,0) (0.01042686528,0) (-0.002231696874,0) (-0.003401939794,0) (0.005633636669,0) (-0.004236003097,0) (0.0009642830837,0) (0.003271720014,0) (-0.0007253584191,0) (-0.0008634759321,0) (0.001588834351,0) (-0.000973594934,0) (0.0001368578979,0) (0.0008367370361,0) (-6.904381328e-05,0) (-0.0002476788081,0) (0.0003167226213,0) (-0.0001631146387,0) (1.171560823e-05,0) (0.0001513990305,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.0006430541106,0) (-0.002209624475,0) (-2.335865557e-06,0) (-0.0002782637621,0) (-2.751354053e-05,0) (-4.977489973e-05,0) (-5.19439452e-06,0) (-3.03377501e-06,0) (-4.441312862e-06,0) (-1.389602407e-06,0) (-1.616956109e-07,0) (-3.140627274e-08,0) (-4.069859621e-07,0) (-0.02315446542,0) (0.02486709624,0) (-0.0002113144789,0) (-0.002883591821,0) (0.002752586386,0) (-0.002965630851,0) (-0.0002318971576,0) (0.0002190437346,0) (-0.0007133624739,0) (-0.0002270707624,0) (0.0002787001547,0) (-0.0001841079618,0) (1.946548646e-05,0) (-1.743881751e-05,0) (-0.0002488508671,0) (6.647567465e-06,0) (-1.942370938e-05,0) (-1.356825305e-06,0) (2.009289265e-06,0) (-7.120632471e-06,0) (-2.917357685e-05,0) (2.017518414e-06,0) (8.169870928e-06,0) (-1.023318319e-05,0) (1.202217678e-06,0) (7.088695561e-07,0) (-1.562354862e-05,0) (4.044755587e-07,0) (3.404607548e-08,0) (-4.521418737e-07,0) (1.300895681e-06,0) (-2.972631304e-06,0) (1.388004183e-06,0) (1.167951802e-06,0) (1.454595627e-06,0) (-3.315964822e-06,0) (6.652579445e-07,0) (1.014281671e-06,0) (-2.410363274e-06,0) (1.734723476e-18,0) (-0.001830745551,0) (-0.04184804203,0) (0.04614153827,0) (-0.0003918889316,0) (6.505213035e-19,0) (-1.505671622e-05,0) (-0.0107099765,0) (0.01335057348,0) (-0.003158834692,0) (-2.032879073e-20,0) (-6.739309617e-07,0) (-3.000331146e-05,0) (3.095587548e-05,0) (-0.001514871375,0) (0,0) (-1.267303587e-10,0) (-0.0008741803541,0) (0.0008591989311,0) (5.958119995e-05,0) (-1.694065895e-21,0) (-6.219833605e-07,0) (4.261561381e-06,0) (-4.506042692e-06,0) (-0.0002959797984,0) (-2.382280164e-21,0) (-2.325279806e-06,0) (1.61001834e-05,0) (1.56959449e-05,0) (-3.949717088e-05,0) (0,0) (-2.219766983e-06,0) (2.561091166e-05,0) (-3.502433912e-05,0) (-1.382955411e-05,0) (3.546950467e-21,0) (-1.682357216e-06,0) (1.529640096e-05,0) (-6.160454092e-06,0) (-2.125727712e-05,0) (0,0) (-7.037685441e-08,0) (3.9958929e-07,0) (2.960709067e-07,0) (-8.452535281e-06,0) (1.058791184e-22,0) (-1.588206347e-07,0) (1.504087388e-06,0) (-4.685734219e-06,0) (2.429661067e-06,0) (0,0) (-2.96845995e-10,0) (-7.277574765e-07,0) (4.071144148e-06,0) (-3.096918026e-06,0) (-3.30872245e-22,0) (-3.56383646e-07,0) (2.252412441e-06,0) (2.637815303e-06,0) (-5.847758739e-06,0) (5.29395592e-23,0) (-2.276567175e-07,0) (1.337660336e-06,0) (1.200711633e-06,0) (-2.564584225e-06,0) -(-0.01091369342,0) (-0.04131632783,0) (-0.0004679952334,0) (-0.004601739364,0) (-0.0009625373212,0) (-0.000644989832,0) (-0.0001996634222,0) (-1.619117925e-05,0) (-0.0001105964721,0) (-6.854775913e-06,0) (-5.091165187e-06,0) (-3.381943069e-06,0) (-6.962613624e-06,0) (0.02620752866,0) (0.002224269497,0) (-0.001000892129,0) (0.0003047929621,0) (0.003673383099,0) (-0.05422961591,0) (-1.170549913e-05,0) (0.0001381032981,0) (-0.01748116626,0) (5.58488008e-05,0) (0.0003390297478,0) (-0.001362512354,0) (6.763664198e-06,0) (2.347166408e-06,0) (-0.005173910596,0) (-1.001395262e-05,0) (8.679345149e-06,0) (-1.134781363e-05,0) (4.708510543e-06,0) (-1.51237669e-05,0) (-0.0006345178053,0) (7.640857198e-06,0) (-8.106428758e-06,0) (-8.057400327e-05,0) (4.942920937e-07,0) (-1.090440533e-06,0) (-0.0002032277807,0) (4.625928184e-07,0) (-3.831370518e-06,0) (-2.711142746e-06,0) (-2.393650938e-06,0) (1.517526643e-06,0) (4.079308649e-07,0) (9.838166031e-07,0) (-2.85806264e-06,0) (-1.98571424e-05,0) (5.56293275e-07,0) (-1.496586117e-06,0) (-6.720478032e-06,0) (-6.505213035e-19,0) (4.480721443e-05,0) (0.04632333236,0) (-0.001379381288,0) (-0.01073557061,0) (-4.33680869e-19,0) (2.884086942e-05,0) (0.002367327906,0) (0.01585694053,0) (-0.01995489753,0) (0,0) (-5.527808322e-07,0) (2.718459272e-06,0) (0.0001926337373,0) (-0.02909695075,0) (-2.710505431e-20,0) (-4.47964897e-09,0) (-9.694780846e-05,0) (0.0008472184569,0) (-0.0008468054569,0) (-5.421010862e-20,0) (-2.241467871e-06,0) (-2.480320484e-06,0) (3.082178995e-05,0) (-0.004571428628,0) (1.355252716e-20,0) (-3.003345517e-07,0) (9.997786745e-06,0) (1.10553403e-06,0) (-0.0006493401365,0) (1.694065895e-21,0) (-2.479739066e-07,0) (3.770913572e-05,0) (-0.0001390322279,0) (-0.0001175146047,0) (0,0) (-8.278796515e-08,0) (9.703906891e-06,0) (4.395115462e-06,0) (-0.0004388356181,0) (-3.966417036e-10,0) (0,0) (3.483258316e-08,0) (-1.062099363e-06,0) (-4.860039762e-05,0) (-4.235164736e-22,0) (-1.83956344e-08,0) (2.297772888e-06,0) (-2.83623588e-05,0) (-7.201757854e-06,0) (0,0) (-3.23672139e-08,0) (-3.897417542e-06,0) (4.070176231e-06,0) (-1.782127644e-06,0) (-1.71723915e-08,0) (0,0) (1.666924655e-06,0) (-8.914065602e-06,0) (-1.780002849e-05,0) (5.29395592e-23,0) (-3.673872713e-09,0) (1.208697071e-06,0) (-1.088177979e-06,0) (-4.919808827e-07,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (1.333601076e-05,0) (-0.003680518671,0) (0.01171062439,0) (0.004572524643,0) (-0.001931974151,0) (1.016225988e-05,0) (-0.003695330387,0) (0.003163975381,0) (-1.380679875e-06,0) (-0.002791090092,0) (0.002119938484,0) (-1.702859645e-06,0) (0.001336173644,0) (-0.001159269776,0) (4.948719016e-07,0) (5.602991138e-05,0) (-5.170347486e-05,0) (1.165106662e-08,0) (0.0004402708215,0) (-0.0003880446353,0) (1.452039402e-07,0) (-0.0002896023254,0) (0.0002398595806,0) (-1.282564785e-07,0) (0.0001483925852,0) (-0.0001273107664,0) (5.926285014e-08,0) (-7.692981325e-05,0) (6.523609042e-05,0) (-3.032478854e-08,0) (4.206025406e-05,0) (-3.160521265e-05,0) (3.109924057e-08,0) (-1.970181647e-05,0) (1.391253042e-05,0) (-1.452397306e-08,0) (7.57314583e-06,0) (-4.370287337e-06,0) (1.070626807e-08,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.004214043356,0) (0.006158998385,0) (0.0001312011809,0) (-0.0007825700286,0) (-0.000160366703,0) (0.0001179069761,0) (2.941101487e-05,0) (-1.215575976e-05,0) (-1.292825713e-05,0) (3.591247411e-06,0) (1.211948785e-06,0) (2.186819431e-07,0) (-9.353687809e-07,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.04520166927,0) (0.04251668573,0) (-0.0009345582901,0) (-0.0001451268835,0) (0.0002799358963,0) (0.0005029806326,0) (-0.0003063111856,0) (-7.350246924e-05,0) (0.0001538232273,0) (3.114230238e-05,0) (-2.423650254e-05,0) (1.916106456e-05,0) (2.552626129e-05,0) (1.454931824e-06,0) (-0.003157854218,0) (0.007512458075,0) (0.0005195851016,0) (-1.088795504e-06,0) (0.03421108654,0) (-7.146290097e-06,0) (-1.177097021e-08,0) (-0.001457959397,0) (-6.924319911e-07,0) (7.086881675e-10,0) (-1.038967993e-05,0) (9.381966906e-10,0) (-1.140640338e-05,0) (0.001087813846,0) (-1.904659493e-05,0) (-3.587190187e-09,0) (0.0001295991408,0) (1.20807976e-09,0) (5.088937078e-05,0) (-0.0006397323042,0) (9.728329649e-10,0) (-2.632356776e-05,0) (0.0001948452291,0) (1.377274291e-10,0) (-1.900743854e-05,0) (0.0002168844333,0) (1.768045232e-10,0) (1.738073434e-06,0) (-3.331910854e-05,0) (-2.35095165e-06,0) (-4.003305574e-11,0) (-1.444095283e-05,0) (1.856004633e-10,0) (-8.44366819e-06,0) (5.955031546e-05,0) (1.173764161e-10,0) (-3.04711323e-06,0) (3.220324779e-05,0) (-5.421010862e-19,0) (9.495322441e-05,0) (7.430118958e-08,0) (-0.00369666856,0) (0.02112509155,0) (6.505213035e-19,0) (6.333326623e-05,0) (0.001467685891,0) (-1.522189737e-06,0) (0.003983623004,0) (0,0) (-1.128629076e-06,0) (1.486140405e-06,0) (-1.732577337e-08,0) (0.0006790959101,0) (8.470329473e-22,0) (-9.281519799e-09,0) (-5.628658706e-06,0) (-6.662351652e-09,0) (-1.747322974e-05,0) (5.421010862e-20,0) (-4.549907229e-06,0) (-1.145926933e-05,0) (-2.539534721e-08,0) (0.0005202223217,0) (0,0) (-6.099495322e-07,0) (1.186146372e-08,0) (1.038789438e-05,0) (-0.0002534353773,0) (6.776263578e-21,0) (-5.02811008e-07,0) (4.132508469e-09,0) (0.000156366619,0) (-0.0002955184562,0) (0,0) (-1.679232679e-07,0) (1.383585823e-09,0) (-3.776354522e-05,0) (0.0001676407959,0) (-8.088281908e-10,0) (0,0) (1.092177589e-11,0) (-1.716212179e-05,0) (5.082791124e-05,0) (1.694065895e-21,0) (-3.774756953e-08,0) (5.146970487e-10,0) (2.38628948e-05,0) (-5.030265065e-05,0) (2.117582368e-22,0) (-6.59283491e-08,0) (1.303346218e-06,0) (6.607505923e-10,0) (8.223005948e-06,0) (-3.476269999e-08,0) (4.235164736e-22,0) (2.906841531e-10,0) (-2.422359532e-05,0) (4.450385645e-05,0) (0,0) (-7.6060703e-09,0) (1.822462067e-10,0) (6.185128518e-07,0) (3.673086727e-06,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (-0.0002997192672,0.0005191289988) (0.09925944203,-0.1719223967) (0.0005701036329,-0.0009874484577) (0.03744131566,-0.06485026102) (-1.08363822e-05,1.876916455e-05) (5.12637978e-06,-8.879150237e-06) (-0.0004333454456,0.000750576329) (-0.004174757703,0.007230892451) (-5.79928862e-07,1.004466254e-06) (-0.0003092991382,0.0005357218221) (-0.008557666191,0.01482231264) (-1.127253589e-06,1.952460489e-06) (0.001441927363,-0.002497491453) (0.0001026368809,-0.0001777722925) (1.949578464e-07,-3.376768953e-07) (7.957927152e-05,-0.0001378353415) (6.761905753e-05,-0.0001171196432) (1.853059582e-08,-3.209593345e-08) (0.0007081325001,-0.001226521469) (7.017291895e-05,-0.0001215430609) (9.836838076e-08,-1.703790333e-07) (-3.926527806e-05,6.800945657e-05) (-0.000555379596,0.0009619456778) (-7.501276439e-08,1.299259191e-07) (0.0001990917172,-0.0003448369695) (1.15125293e-05,-1.994028567e-05) (2.660804959e-08,-4.608649378e-08) (-1.201453687e-05,2.080978829e-05) (-0.0001308978504,0.0002267217275) (-1.801120482e-08,3.119632186e-08) (0.0001320177961,-0.0002286615304) (1.379282385e-06,-2.388987168e-06) (1.705203038e-08,-2.953498298e-08) (-1.642038463e-06,2.844094046e-06) (-6.621122398e-05,0.000114681204) (-8.667301526e-09,1.501220661e-08) (3.661879991e-05,-6.342562196e-05) (3.18796139e-08,-5.521711101e-08) (4.775645764e-09,-8.271661102e-09) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.000923337689,0.00159926779) (0.0008274199475,-0.001433133388) (-5.55619918e-06,9.623619276e-06) (-3.00319403e-06,5.201684645e-06) (3.982825217e-06,-6.898455633e-06) (1.175840002e-05,-2.036614625e-05) (-4.157662878e-06,7.201283346e-06) (-2.677457455e-06,4.637492347e-06) (2.594031055e-06,-4.492993584e-06) (1.179960774e-06,-2.043752012e-06) (-3.634784569e-07,6.295631548e-07) (1.553863596e-07,-2.691370696e-07) (5.193486208e-07,-8.995381981e-07) (0.03245066753,-0.05620620491) (1.973358379e-05,-3.417956974e-05) (0.003074044889,-0.005324401932) (-0.003612640396,0.006257276715) (-1.712840758e-06,2.966727218e-06) (0.0006726502744,-0.001165064451) (-7.897721341e-05,0.0001367925463) (-9.66799994e-09,1.67454671e-08) (-2.492556751e-05,4.317234933e-05) (2.421005667e-06,-4.19330482e-06) (3.489741388e-10,-6.044409389e-10) (-3.762967448e-07,6.517650808e-07) (-8.094592238e-08,1.402024502e-07) (3.136037117e-05,-5.431775621e-05) (2.045657133e-05,-3.54318209e-05) (6.618798767e-10,-1.146409575e-09) (-2.146830323e-05,3.718419194e-05) (8.675245077e-07,-1.502596524e-06) (-9.606141336e-11,1.663832486e-10) (1.456791745e-05,-2.523237319e-05) (-1.076291122e-05,1.864190907e-05) (1.04629614e-07,-1.812238073e-07) (-8.956602146e-10,1.551328998e-09) (2.547207111e-05,-4.411892133e-05) (-6.797765478e-11,1.177407519e-10) (6.283968979e-06,-1.088415354e-05) (5.35510915e-06,-9.275321128e-06) (-1.527935823e-11,2.646462476e-11) (1.016270017e-06,-1.760231303e-06) (2.862275528e-06,-4.95760664e-06) (-2.747461897e-10,4.758743597e-10) (7.443505779e-07,-1.28925302e-06) (4.771932706e-06,-8.265229897e-06) (-7.264500146e-11,1.258248334e-10) (1.575517403e-06,-2.728876191e-06) (4.761717681e-06,-8.247536954e-06) (-3.577407697e-11,6.196251891e-11) (1.541553266e-06,-2.67004858e-06) (3.194233381e-06,-5.532574508e-06) (4.33680869e-19,1.734723476e-18) (-0.002729426434,0.004727505259) (0.06324356095,-0.1095410608) (3.126494954e-05,-5.415248111e-05) (0.0002650767828,-0.0004591264557) (-5.421010862e-20,3.252606517e-19) (0.0001065037686,-0.0001844699384) (-0.006663150733,0.01154091561) (-9.127041456e-07,1.580849952e-06) (0.0002416297276,-0.0004185149648) (4.235164736e-22,-8.470329473e-22) (1.483669546e-06,-2.569791035e-06) (-3.500462032e-05,6.06297809e-05) (-8.719713196e-09,1.510298628e-08) (1.471765147e-05,-2.549172011e-05) (-4.235164736e-22,2.541098842e-21) (6.08483442e-09,-1.053924237e-08) (-3.835660981e-05,6.643559699e-05) (-3.797649481e-09,6.577721851e-09) (1.178686968e-06,-2.041545716e-06) (-1.905824131e-21,0) (2.4179593e-07,-4.188028358e-07) (2.191988206e-10,-3.796634942e-10) (-2.364132934e-05,4.094798358e-05) (1.230236002e-05,-2.130831261e-05) (0,-8.470329473e-22) (1.181594739e-06,-2.046582122e-06) (1.185010832e-09,-2.052498968e-09) (-4.056713351e-05,7.026433636e-05) (-2.316881374e-05,4.012956255e-05) (8.470329473e-22,-2.541098842e-21) (-2.188570265e-06,3.790714895e-06) (-5.101434888e-09,8.835944417e-09) (6.486224796e-05,-0.000112344709) (-2.66489559e-06,4.61573456e-06) (-4.235164736e-22,8.470329473e-22) (-1.304105758e-06,2.258777432e-06) (-2.554688277e-09,4.424849894e-09) (3.739300532e-05,-6.476658507e-05) (4.052238551e-06,-7.018683054e-06) (-1.058791184e-22,0) (-1.147182595e-08,1.986978541e-08) (-1.153315372e-11,1.997600821e-11) (4.290322277e-06,-7.431056164e-06) (1.630475981e-06,-2.824067239e-06) (1.058791184e-22,4.235164736e-22) (-8.329871479e-08,1.442776062e-07) (-9.227744456e-11,1.598292224e-10) (3.112744687e-06,-5.391431949e-06) (4.610680091e-06,-7.985932175e-06) (7.411538288e-22,-2.117582368e-22) (-4.072151729e-12,7.05317369e-12) (-4.732118624e-07,8.196269885e-07) (-4.150544398e-10,7.188953777e-10) (1.376158085e-05,-2.383575722e-05) (1.058791184e-22,-1.058791184e-22) (-1.530521796e-07,2.650941513e-07) (-1.73488401e-10,3.004907251e-10) (5.513119534e-06,-9.54900314e-06) (4.337960104e-06,-7.513567301e-06) (5.29395592e-23,2.117582368e-22) (-7.700519144e-08,1.33376904e-07) (-8.508942103e-11,1.473792004e-10) (6.216831785e-07,-1.076786851e-06) (6.222146986e-06,-1.077707471e-05) -(0.05157424969,-0.08932922082) (0.07911949656,-0.1370389879) (0.005517042647,-0.009555798172) (-0.009454263379,0.01637526452) (-0.002817873889,0.004880700745) (0.001260905509,-0.002183952404) (0.0005417059474,-0.0009382622237) (-8.342600894e-05,0.0001444980862) (-0.0001916579055,0.0003319612299) (2.369564209e-05,-4.104205603e-05) (2.020298538e-05,-3.499259714e-05) (6.741548682e-06,-1.167670484e-05) (-1.149346843e-05,1.990727127e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.05227305888,0) (-0.01059774195,0) (0.0007747731012,0) (-0.0019584315,0) (0.0004996371268,0) (-2.324558865e-05,0) (-2.394669917e-05,0) (-7.276138765e-06,0) (8.264461737e-06,0) (1.838973561e-05,0) (-3.937587669e-06,0) (5.221874471e-07,0) (3.804800733e-06,0) (0.003294115467,0) (-5.03865326e-06,0) (8.521411615e-05,0) (8.201923211e-05,0) (2.067578889e-07,0) (-0.06268694534,0) (-4.461298473e-06,0) (-1.290932257e-08,0) (0.008994674824,0) (-1.566384246e-05,0) (4.177343488e-08,0) (-0.003310642092,0) (-1.39836719e-10,0) (4.550215342e-08,0) (0.0007412007475,0) (3.371897556e-11,0) (-2.135755559e-07,0) (-6.832987415e-06,0) (4.698765009e-11,0) (-6.359455323e-07,0) (-9.524322186e-05,0) (-1.168207208e-06,0) (4.963625375e-11,0) (-6.28702053e-07,0) (-3.114294568e-11,0) (4.478956051e-07,0) (5.538823034e-05,0) (2.230680666e-12,0) (1.774135912e-06,0) (2.782574797e-06,0) (4.907366656e-10,0) (-1.097731374e-06,0) (-3.17533837e-06,0) (-3.19703626e-11,0) (1.108827398e-06,0) (2.817216516e-06,0) (-3.361210006e-11,0) (1.86095787e-06,0) (7.359028335e-06,0) (-4.33680869e-19,0) (-0.0002852827998,0) (-0.0001093982521,0) (-4.438290702e-06,0) (0.0612087474,0) (-1.029992064e-18,0) (-5.672657459e-06,0) (-0.001412428299,0) (2.934551322e-06,0) (-0.05104289932,0) (5.844527336e-20,0) (2.315741605e-10,0) (2.280737082e-08,0) (1.99657454e-10,0) (-0.001386055972,0) (2.202285663e-20,0) (-2.218079148e-11,0) (-0.0001285817751,0) (-2.334044471e-07,0) (0.000791823636,0) (2.435219723e-21,0) (1.565366177e-10,0) (1.581342029e-11,0) (4.980086481e-09,0) (-0.0001439248567,0) (-5.029258124e-22,0) (1.452916396e-08,0) (4.223110462e-10,0) (-7.100395277e-06,0) (-2.760876911e-05,0) (-2.580803511e-22,0) (-1.566034151e-09,0) (1.050286112e-10,0) (1.196885357e-08,0) (-1.098689074e-05,0) (3.374896899e-22,0) (2.91435589e-09,0) (1.016381852e-10,0) (-1.778376473e-07,0) (-1.275177812e-05,0) (-2.64697796e-22,0) (-1.096373539e-09,0) (-2.116571378e-11,0) (3.816288677e-07,0) (7.029415091e-05,0) (1.852884572e-22,0) (-1.759502375e-08,0) (2.032173328e-10,0) (-7.041690834e-06,0) (-9.234442056e-06,0) (2.584939414e-25,0) (3.778730592e-10,0) (3.371220318e-09,0) (-7.123309402e-13,0) (-3.067020323e-09,0) (8.602678371e-23,0) (-4.169374205e-09,0) (-8.414027643e-11,0) (2.098761966e-06,0) (5.54532595e-06,0) (-9.926167351e-23,0) (-9.442255645e-09,0) (-1.131400601e-10,0) (5.032227385e-06,0) (1.055086583e-06,0) -(-0.01870392239,0) (-0.005666223889,0) (0.0009130148356,0) (-0.0008914920716,0) (0.0002236517882,0) (-2.053323155e-05,0) (-1.204518931e-05,0) (-6.483972824e-07,0) (5.785990742e-06,0) (3.633038737e-06,0) (-1.276610461e-06,0) (3.596617133e-07,0) (1.548277966e-06,0) (-2.360738584e-06,0) (0.03012600167,0) (-0.02661648463,0) (-0.0001013170272,0) (-3.750412402e-07,0) (-0.02410440258,0) (-6.473083976e-06,0) (7.86788762e-09,0) (0.002917313174,0) (-6.209909928e-05,0) (-5.982724624e-08,0) (-0.0008486929007,0) (8.153315783e-11,0) (1.767015122e-07,0) (0.0001524684146,0) (8.386966911e-07,0) (3.506062313e-10,0) (-2.412940959e-06,0) (-1.03489508e-10,0) (4.325370202e-07,0) (-2.813110036e-05,0) (-7.01336135e-11,0) (-1.272009523e-06,0) (-6.63678222e-07,0) (2.141801211e-11,0) (7.20810683e-07,0) (2.366970548e-05,0) (-1.012439589e-10,0) (-8.825188043e-08,0) (-4.302174199e-06,0) (2.262857906e-07,0) (1.343906619e-10,0) (-5.823968285e-07,0) (3.391481584e-11,0) (1.224153722e-06,0) (1.147096904e-06,0) (3.625524393e-11,0) (1.96618936e-06,0) (7.619721113e-07,0) (1.734723476e-18,0) (-0.0002399783128,0) (4.429670749e-06,0) (0.05862781591,0) (-0.03565811638,0) (-4.33680869e-19,0) (3.134980355e-06,0) (-0.003476641184,0) (-3.253025745e-06,0) (-0.01396980218,0) (-2.710505431e-20,0) (1.136629777e-07,0) (1.037074105e-06,0) (-5.146353529e-09,0) (-0.00182694799,0) (0,0) (-1.794104248e-08,0) (-0.0001795896175,0) (1.81405844e-07,0) (0.0008103216112,0) (3.388131789e-21,0) (2.246534061e-07,0) (1.460111013e-07,0) (-3.147057971e-10,0) (-0.0001426984983,0) (8.470329473e-22,0) (3.165906529e-08,0) (-1.530328056e-10,0) (-5.880359132e-08,0) (-2.120406882e-05,0) (1.058791184e-22,0) (-1.426401455e-08,0) (4.771886505e-10,0) (-9.224878544e-07,0) (5.639404919e-06,0) (0,0) (-1.923071812e-09,0) (3.061682836e-11,0) (1.365337013e-07,0) (3.050917587e-06,0) (-5.065341759e-10,0) (4.235164736e-22,0) (3.046264775e-12,0) (6.475738678e-07,0) (1.629354359e-05,0) (0,0) (9.109682087e-09,0) (-1.822953378e-10,0) (-1.485812014e-06,0) (-3.477463597e-06,0) (0,0) (6.655951109e-09,0) (-5.74589738e-07,0) (1.527580882e-10,0) (1.947745163e-07,0) (-7.857037501e-09,0) (1.058791184e-22,0) (9.043149751e-11,0) (3.224418723e-06,0) (6.035756443e-07,0) (-1.058791184e-22,0) (-1.558553604e-08,0) (1.607444256e-10,0) (1.658167214e-06,0) (-5.670284416e-07,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (-0.04650791085,0) (0.05339342277,0) (-0.006885511921,0) (0.06582968803,0) (0.005456254699,0) (-0.07128594273,0) (-0.03665265658,0) (0.0950451253,0) (-0.05839246872,0) (-0.01466480269,0) (0.05142104472,0) (-0.03675624203,0) (0.005432133241,0) (0.01745725437,0) (-0.02288938761,0) (-0.009939728979,0) (0.02293658634,0) (-0.01299685736,0) (0.0009346548029,0) (0.006928611436,0) (-0.007863266239,0) (-0.002292082329,0) (0.006540467226,0) (-0.004248384897,0) (0.0007511567492,0) (0.001716174845,0) (-0.002467331594,0) (-0.0007179158406,0) (0.001916075511,0) (-0.00119815967,0) (0.0004232273626,0) (0.0002078052141,0) (-0.0006310325767,0) (-7.912951479e-05,0) (0.0003179706291,0) (-0.0002388411143,0) (9.769891917e-05,0) (1.648674933e-05,0) (-0.0001141856685,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.0008172287347,0) (-0.00280811301,0) (-2.968547159e-06,0) (-0.0003536329813,0) (-3.496572923e-05,0) (-6.325669591e-05,0) (-6.601323888e-06,0) (-3.855489098e-06,0) (-5.64426606e-06,0) (-1.765983606e-06,0) (-2.054917267e-07,0) (-3.991282865e-08,0) (-5.172202734e-07,0) (0.02065391313,0) (-0.01874311768,0) (-2.839598951e-06,0) (0.001922210209,0) (-0.002074278464,0) (-0.00378330843,0) (0.0001500682067,0) (-0.0001650648726,0) (-0.0009079186671,0) (0.0002733644709,0) (-0.0002099969132,0) (-0.000231728652,0) (-1.467732161e-05,0) (1.720867302e-05,0) (-0.0003162091956,0) (-5.007846613e-06,0) (-1.116087826e-05,0) (-1.792231646e-06,0) (-1.513850326e-06,0) (-4.757169056e-06,0) (-3.730015351e-05,0) (1.142734126e-05,0) (-6.157851779e-06,0) (-5.327686836e-06,0) (-9.058902923e-07,0) (3.219670478e-06,0) (-1.974033463e-05,0) (-3.048988288e-07,0) (6.478429413e-07,0) (-3.602534663e-07,0) (-9.787608102e-07,0) (-1.968661101e-06,0) (2.586840302e-06,0) (-8.801255416e-07,0) (3.545150804e-06,0) (-3.546258443e-06,0) (-5.013482219e-07,0) (2.325538149e-06,0) (-2.752961059e-06,0) (-8.67361738e-19,0) (0.001081420423,0) (0.03683490234,0) (-0.03477674716,0) (-0.0005078099275,0) (-4.878909776e-19,0) (2.592330502e-05,0) (0.01315681817,0) (-0.01006015626,0) (-0.00380032527,0) (-3.388131789e-20,0) (5.636850501e-07,0) (2.319957752e-05,0) (-2.332385676e-05,0) (-0.001925267643,0) (1.355252716e-20,0) (7.146844379e-11,0) (0.0005565170578,0) (-0.0006475377206,0) (0.0001477002938,0) (-5.505714157e-21,0) (5.082980186e-07,0) (-3.210905036e-06,0) (1.660522345e-06,0) (-0.0003762065667,0) (8.470329473e-22,0) (1.287500472e-06,0) (-1.21303074e-05,0) (4.235369307e-05,0) (-4.425289125e-05,0) (2.117582368e-21,0) (2.385662691e-06,0) (-1.929410409e-05,0) (2.488333702e-06,0) (-1.793936166e-05,0) (1.270549421e-21,0) (9.350130233e-07,0) (-1.152532848e-05,0) (1.956543723e-05,0) (-2.651761138e-05,0) (-3.176373552e-22,0) (4.335966598e-08,0) (-3.011056923e-07,0) (1.016306761e-06,0) (-1.070586547e-05,0) (-5.29395592e-23,0) (2.401865277e-07,0) (-1.133223818e-06,0) (-4.430724484e-06,0) (4.166258622e-06,0) (5.29395592e-23,0) (-3.427165247e-10,0) (7.278680151e-07,0) (-3.068866642e-06,0) (2.654190084e-06,0) (5.29395592e-23,0) (1.64497237e-07,0) (-1.697154657e-06,0) (6.207993408e-06,0) (-6.345131393e-06,0) (1.588186776e-22,0) (9.009374426e-08,0) (-1.008053064e-06,0) (2.068286092e-06,0) (-1.472957506e-06,0) -(0.006996970788,0) (0.02648866226,0) (0.0003000404036,0) (0.002950260254,0) (0.0006171004868,0) (0.0004135149158,0) (0.0001280079144,0) (1.038046461e-05,0) (7.090544467e-05,0) (4.394723674e-06,0) (3.264040205e-06,0) (2.168226279e-06,0) (4.463860426e-06,0) (-0.0197553569,0) (0.003169952543,0) (-0.001001057065,0) (0.0004308924624,0) (-0.002770174458,0) (0.0345564099,0) (-1.463376791e-05,0) (-0.000104145023,0) (0.01124524197,0) (8.482571159e-05,0) (-0.0002556526339,0) (0.0007911948594,0) (-5.099026091e-06,0) (4.407108103e-06,0) (0.003311940614,0) (-7.032866511e-06,0) (-6.547290259e-06,0) (2.17110916e-05,0) (-3.549379796e-06,0) (-6.299896001e-06,0) (0.000423327795,0) (-5.761058672e-06,0) (3.827017946e-05,0) (1.944685014e-05,0) (-3.72626502e-07,0) (3.938617866e-06,0) (0.0001271093011,0) (-3.486916283e-07,0) (8.356272429e-08,0) (4.1630784e-06,0) (-8.202975706e-07,0) (-1.144619623e-06,0) (2.265084665e-06,0) (-7.4172067e-07,0) (7.646110877e-06,0) (7.028005024e-06,0) (-4.193909109e-07,0) (3.865265904e-06,0) (1.465586965e-06,0) (0,0) (6.036641356e-05,0) (-0.03492203779,0) (0.0248557125,0) (-0.01195439354,0) (-6.505213035e-19,0) (3.980786074e-05,0) (0.003563583505,0) (-0.01195701747,0) (0.009444674026,0) (4.33680869e-19,0) (-6.897536925e-07,0) (3.64387135e-06,0) (-0.0001452631239,0) (0.01867201301,0) (2.710505431e-20,0) (-5.822791923e-09,0) (-0.0001187671813,0) (-0.0006389488347,0) (0.0008196149627,0) (5.421010862e-20,0) (-2.79072853e-06,0) (-2.5788548e-06,0) (-2.32486879e-05,0) (0.002942712557,0) (0,0) (-3.739146372e-07,0) (-7.534478148e-06,0) (1.681240677e-06,0) (0.0004156051342,0) (-3.388131789e-21,0) (-3.079720876e-07,0) (-2.842608235e-05,0) (-3.184660905e-05,0) (0.0002010405408,0) (-6.776263578e-21,0) (-1.028458898e-07,0) (-7.315992414e-06,0) (1.276502879e-05,0) (0.000267013377,0) (-5.020416579e-10,0) (0,0) (-2.62595584e-08,0) (1.224289849e-06,0) (3.061993997e-05,0) (0,0) (-2.317871362e-08,0) (-1.732223519e-06,0) (6.817124161e-06,0) (1.627774038e-05,0) (1.058791184e-22,0) (-4.037988332e-08,0) (5.914031108e-06,0) (-3.068111963e-06,0) (-1.752991826e-06,0) (-2.137047511e-08,0) (0,0) (-1.256735752e-06,0) (1.465535905e-05,0) (2.691960492e-06,0) (3.97046694e-23,0) (-4.779938991e-09,0) (-9.112894287e-07,0) (1.646291736e-06,0) (-4.897159534e-07,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0.04715705099,0) (0.02200154358,0) (0.1067286698,0) (0.02202428562,0) (0.17465834,0) (0.07141108635,0) (0.1000731762,0) (0.06107260141,0) (0.05848951507,0) (0.07464156391,0) (0.02679567375,0) (0.03681690082,0) (0.0005054573398,0) (0.06266017622,0) (0.02292789445,0) (0.005280432053,0) (0.03058641266,0) (0.0130185903,0) (4.477807442e-05,0) (0.02165478127,0) (0.007876474827,0) (0.007860017766,0) (0.003864294445,0) (0.004255431357,0) (8.845381168e-05,0) (0.006720385865,0) (0.002471484938,0) (0.00210919833,0) (0.001197367089,0) (0.001200149458,0) (0.0001043161214,0) (0.001637026661,0) (0.0006321024569,0) (0.0005029865235,0) (0.0001561530053,0) (0.0002392339673,0) (3.034857158e-05,0) (0.0002847271479,0) (0.0001143827643,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.01859825451,0) (0.06390622139,0) (6.755733522e-05,0) (0.008047876816,0) (0.000795739924,0) (0.001439577538,0) (0.0001502310143,0) (8.77421026e-05,0) (0.0001284505699,0) (4.018974268e-05,0) (4.676521113e-06,0) (9.083245777e-07,0) (1.177074896e-05,0) (0.008307597159,0) (0.01873421824,0) (2.900333486e-08,0) (0.0006427535352,0) (0.002074227619,0) (0.09464435446,0) (4.913666987e-05,0) (0.0001652571093,0) (0.02141018871,0) (0.0001298657198,0) (0.0002102475176,0) (0.004281715785,0) (1.48520788e-05,0) (7.255278567e-06,0) (0.007171961804,0) (5.016290298e-06,0) (8.510401907e-06,0) (0.0004140783138,0) (1.516294083e-06,0) (4.817059328e-06,0) (0.0009909456417,0) (1.489550748e-05,0) (6.169100968e-06,0) (3.434653454e-06,0) (9.073734504e-07,0) (4.539544298e-06,0) (0.0003945514261,0) (3.054738133e-07,0) (6.950824905e-07,0) (5.407485655e-07,0) (9.805598736e-07,0) (1.955658851e-06,0) (8.959547428e-06,0) (8.815473737e-07,0) (7.766105257e-06,0) (1.471985915e-05,0) (5.021918199e-07,0) (5.508541434e-06,0) (1.701290994e-05,0) (6.505213035e-19,0) (0.0003326380646,0) (0.01469282168,0) (0.03477374258,0) (0.02107630735,0) (3.252606517e-19,0) (1.4617477e-05,0) (0.006316834902,0) (0.01007236596,0) (0.03687902424,0) (-2.059984128e-18,0) (2.1761899e-07,0) (8.535073252e-06,0) (2.333908512e-05,0) (0.04386035073,0) (3.388131789e-21,0) (2.12877168e-11,0) (0.0001802105721,0) (0.0006483001201,0) (0.0003180537728,0) (-1.423015351e-19,0) (1.934512603e-07,0) (3.215971441e-06,0) (3.60306497e-07,0) (0.008593632408,0) (9.95263713e-21,0) (3.785330716e-07,0) (1.214894467e-05,0) (8.316142622e-05,0) (0.0002399527039,0) (-2.943439492e-20,0) (1.065981606e-06,0) (1.932844051e-05,0) (1.262102486e-07,0) (0.0007885513656,0) (-1.905824131e-20,0) (2.756248094e-07,0) (1.154541289e-05,0) (1.377253857e-05,0) (0.0004170207456,0) (1.334076892e-20,0) (1.372912756e-08,0) (3.015892013e-07,0) (1.65338949e-06,0) (0.000225542516,0) (-7.27918939e-22,0) (1.277388161e-07,0) (1.135050709e-06,0) (1.097300767e-05,0) (1.837231386e-05,0) (0,0) (2.299303327e-09,0) (3.123692756e-07,0) (3.074695245e-06,0) (1.039677966e-06,0) (6.882142696e-22,0) (4.239383809e-08,0) (1.699838817e-06,0) (1.420235844e-05,0) (2.844450342e-05,0) (-2.779326858e-22,0) (2.066829092e-08,0) (1.009713072e-06,0) (8.983597702e-06,0) (1.122430129e-06,0) -(0.002275502001,0) (0.008614442707,0) (9.757687426e-05,0) (0.0009594613604,0) (0.0002006887602,0) (0.0001344801982,0) (4.162976727e-05,0) (3.375856311e-06,0) (2.305933326e-05,0) (1.429218846e-06,0) (1.061506507e-06,0) (7.051341767e-07,0) (1.451702978e-06,0) (0.0197919787,0) (0.04576663462,0) (0.003064285325,0) (0.006931890706,0) (0.002776848162,0) (0.01119185278,0) (0.0002405708549,0) (0.0001044086936,0) (0.003665373389,0) (0.0006670496628,0) (0.0002562656941,0) (0.0002404198937,0) (5.111300906e-06,0) (1.4983551e-05,0) (0.001075955865,0) (7.907287005e-06,0) (6.558427154e-06,0) (1.279841726e-05,0) (3.558166217e-06,0) (2.878390215e-06,0) (0.0001413922296,0) (5.77551433e-06,0) (2.981494912e-05,0) (2.987868567e-06,0) (3.734951082e-07,0) (2.875161334e-06,0) (4.065104123e-05,0) (3.494642989e-07,0) (1.349041095e-09,0) (2.229293379e-06,0) (2.854297262e-07,0) (1.146538659e-06,0) (2.970188831e-06,0) (7.434637826e-07,0) (5.101582132e-06,0) (1.477386609e-06,0) (4.203040616e-07,0) (2.548710907e-06,0) (2.065288763e-07,0) (0,0) (0.00381120272,0) (0.03499174491,0) (0.02310179904,0) (0.06236724561,0) (0,0) (0.001009633108,0) (0.0298739139,0) (0.0119849688,0) (0.002478434544,0) (0,0) (1.099057939e-05,0) (0.0003399323208,0) (0.000145642374,0) (0.00607617128,0) (-5.421010862e-20,0) (2.892328027e-07,0) (0.001438457613,0) (0.0006405979474,0) (0.0003449598824,0) (-1.355252716e-20,0) (4.286455912e-05,0) (9.37661877e-06,0) (2.331100428e-05,0) (0.0009596164022,0) (-3.388131789e-21,0) (5.739308119e-06,0) (7.551310522e-06,0) (1.320365452e-05,0) (0.0001350056191,0) (-1.694065895e-21,0) (4.544913819e-06,0) (2.850249043e-05,0) (6.63333715e-06,0) (0.0001130091179,0) (0,0) (1.524088828e-06,0) (7.334038823e-06,0) (2.344902083e-05,0) (8.380257917e-05,0) (1.053196334e-08,0) (2.117582368e-22,0) (2.631799423e-08,0) (5.681500867e-07,0) (9.841263226e-06,0) (0,0) (4.420829531e-07,0) (1.736699721e-06,0) (1.043708995e-06,0) (1.023766845e-05,0) (-4.235164736e-22,0) (6.41372051e-07,0) (3.151162781e-06,0) (3.071688387e-06,0) (5.020121102e-06,0) (3.257591355e-07,0) (-1.058791184e-22,0) (1.259765493e-06,0) (8.095219997e-06,0) (2.749685552e-07,0) (5.29395592e-23,0) (2.494036453e-07,0) (9.133146635e-07,0) (8.753312292e-07,0) (1.469478759e-06,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (-0.06251041084,0) (-0.02312716577,0) (0.08563757661,0) (-0.03295383896,0) (0.1276303109,0) (-0.0946764719,0) (0.1030608728,0) (-0.02550019993,0) (-0.07756067291,0) (0.0673281933,0) (-0.01850623727,0) (-0.04882195603,0) (-0.003708510075,0) (0.03411132104,0) (-0.03040281096,0) (0.01146538456,0) (0.005797797515,0) (-0.01726318207,0) (-0.0006699053532,0) (0.01111428551,0) (-0.01044438016,0) (0.007652943725,0) (-0.002009962988,0) (-0.005642980737,0) (-0.0004988181503,0) (0.003776045562,0) (-0.003277227412,0) (0.002131064227,0) (-0.0005395912934,0) (-0.001591472934,0) (-0.0002399694735,0) (0.00107812515,0) (-0.0008381556767,0) (0.0004388767921,0) (-0.000121633216,0) (-0.0003172435761,0) (-5.066889512e-05,0) (0.0002023292553,0) (-0.0001516603602,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.01463443893,0) (0.0502859929,0) (5.315895081e-05,0) (0.006332645988,0) (0.0006261451749,0) (0.001132762731,0) (0.0001182125239,0) (6.904177173e-05,0) (0.0001010741099,0) (3.162416853e-05,0) (3.679821814e-06,0) (7.147348455e-07,0) (9.262068479e-06,0) (-0.009313391119,0) (-0.02485528906,0) (2.158341618e-06,0) (-0.0009642227618,0) (-0.002752518914,0) (0.07418909208,0) (-7.592983434e-05,0) (-0.0002192988358,0) (0.01682223941,0) (-0.0001078732284,0) (-0.0002790327477,0) (0.003401814836,0) (-1.969725446e-05,0) (-7.352308847e-06,0) (0.005644203073,0) (-6.658775869e-06,0) (1.481098257e-05,0) (0.000313481762,0) (-2.012532792e-06,0) (7.210277511e-06,0) (0.0007750485214,0) (2.629829628e-06,0) (-8.184795682e-06,0) (6.597129124e-06,0) (-1.204185994e-06,0) (9.994640053e-07,0) (0.0003122689409,0) (-4.05238327e-07,0) (3.652865445e-08,0) (6.786751343e-07,0) (-1.303286861e-06,0) (2.952998217e-06,0) (4.80736646e-06,0) (-1.169838614e-06,0) (3.186477351e-06,0) (1.376395317e-05,0) (-6.663773466e-07,0) (2.4025461e-06,0) (1.489570409e-05,0) (0,0) (-0.0005631257223,0) (-0.01669247861,0) (-0.04613755182,0) (0.01626508487,0) (0,0) (-8.490090396e-06,0) (-0.005142060373,0) (-0.01336677666,0) (0.03065388695,0) (4.33680869e-19,0) (-2.601810625e-07,0) (-1.103815192e-05,0) (-3.097608686e-05,0) (0.03451093673,0) (1.016439537e-20,0) (-3.774812831e-11,0) (-0.0002830758546,0) (-0.0008602105367,0) (0.0001283005263,0) (-1.355252716e-19,0) (-2.367183435e-07,0) (-4.268285589e-06,0) (-9.777383985e-07,0) (0.006761023897,0) (5.717472394e-21,0) (-6.8364659e-07,0) (-1.612492008e-05,0) (3.081896923e-05,0) (0.0002141657343,0) (1.270549421e-21,0) (-9.918547086e-07,0) (-2.565648968e-05,0) (-1.776462113e-06,0) (0.0006078986526,0) (-1.651714247e-20,0) (-4.959282655e-07,0) (-1.532305696e-05,0) (-4.336478179e-06,0) (0.0003342957791,0) (-1.058791184e-22,0) (-2.228367745e-08,0) (-4.002309418e-07,0) (4.816661111e-07,0) (0.0001780711778,0) (2.911675756e-22,0) (-8.446585262e-08,0) (-1.506512155e-06,0) (1.160455761e-05,0) (1.071428823e-05,0) (-1.32348898e-23,0) (1.991555512e-09,0) (-3.123218372e-07,0) (-4.078876345e-06,0) (-1.21309979e-06,0) (-4.63221143e-22,0) (-9.18463487e-08,0) (-2.255974777e-06,0) (6.034671105e-06,0) (2.62148383e-05,0) (-9.264422861e-23,0) (-5.222643711e-08,0) (-1.339863123e-06,0) (5.215289271e-06,0) (1.954276747e-06,0) -(-0.003549268956,0) (-0.01343658413,0) (-0.0001521978757,0) (-0.001496542925,0) (-0.0003130291189,0) (-0.0002097587224,0) (-6.49330304e-05,0) (-5.265573046e-06,0) (-3.596734947e-05,0) (-2.229258458e-06,0) (-1.655710296e-06,0) (-1.099849986e-06,0) (-2.264328624e-06,0) (-0.02625611128,0) (0.03211320294,0) (0.003063780447,0) (0.004903291854,0) (-0.003682232749,0) (-0.01756345289,0) (0.0001924317751,0) (-0.0001384529431,0) (-0.005697965572,0) (0.0004391819773,0) (-0.000339842748,0) (-0.0004140257883,0) (-6.779946273e-06,0) (7.980037421e-06,0) (-0.001680857268,0) (1.12590218e-05,0) (-8.694108655e-06,0) (-6.689394366e-06,0) (-4.720166369e-06,0) (6.909971635e-06,0) (-0.0002119300653,0) (-7.660029649e-06,0) (-6.315433174e-06,0) (-1.237961572e-05,0) (-4.954443068e-07,0) (-7.960133638e-07,0) (-6.499462137e-05,0) (-4.636178842e-07,0) (-6.185385077e-08,0) (-1.451794079e-06,0) (8.328918145e-07,0) (-1.520070884e-06,0) (5.349167374e-07,0) (-9.861286637e-07,0) (-1.906935634e-06,0) (-4.174253742e-06,0) (-5.575045068e-07,0) (-9.86831296e-07,0) (-9.470422496e-07,0) (-8.67361738e-19,0) (0.002828880622,0) (-0.04641579736,0) (-0.001282046906,0) (0.05600852667,0) (-4.33680869e-19,0) (0.0007314810716,0) (0.01984557116,0) (-0.01589400852,0) (-0.005236486429,0) (-1.084202172e-19,0) (8.808045082e-06,0) (0.0002536017549,0) (-0.0001931366618,0) (-0.009468612536,0) (-2.710505431e-20,0) (2.225154949e-07,0) (0.001174190644,0) (-0.0008494051089,0) (-0.0003564038288,0) (0,0) (3.442811834e-05,0) (9.018351715e-06,0) (-3.090440545e-05,0) (-0.001490739516,0) (0,0) (4.609909213e-06,0) (-1.002012226e-05,0) (8.682331798e-06,0) (-0.0002109323487,0) (-2.541098842e-21,0) (3.659487597e-06,0) (-3.781049624e-05,0) (2.895905309e-05,0) (-6.605743182e-05,0) (-3.388131789e-21,0) (1.226847403e-06,0) (-9.727843585e-06,0) (8.073711052e-06,0) (-0.0001377292668,0) (8.320855081e-09,0) (4.235164736e-22,0) (-3.491009668e-08,0) (-4.928831568e-07,0) (-1.562019084e-05,0) (0,0) (3.508562431e-07,0) (-2.303710515e-06,0) (-4.342307445e-06,0) (-4.529449878e-06,0) (2.117582368e-22,0) (5.141031785e-07,0) (-2.076654126e-06,0) (-4.074920738e-06,0) (5.103558646e-06,0) (2.617659823e-07,0) (-2.117582368e-22,0) (-1.67094328e-06,0) (-4.923886331e-06,0) (-1.818172343e-06,0) (0,0) (1.916922473e-07,0) (-1.21138326e-06,0) (-5.785828522e-07,0) (1.476275077e-06,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (-1.352214984e-05,0) (-0.001516611742,0) (-0.1815201801,0) (0.001529805043,0) (-0.06184377689,0) (-1.018009989e-05,0) (0.0100894037,0) (0.002033057526,0) (1.382974519e-06,0) (0.01420621429,0) (0.001104706844,0) (1.705669872e-06,0) (0.0001243303037,0) (-0.00416102366,0) (-4.957044252e-07,0) (-2.976561439e-05,0) (-6.894765397e-05,0) (-1.167054917e-08,0) (2.109279228e-05,0) (-0.001212800252,0) (-1.454478514e-07,0) (0.0009931054366,0) (0.0001417158764,0) (1.284692074e-07,0) (1.74742353e-05,0) (-0.0004985374759,0) (-5.936260932e-08,0) (0.0002260156754,0) (4.076642451e-05,0) (3.037514902e-08,0) (1.036691613e-05,0) (-0.0002489763116,0) (-3.115196758e-08,0) (0.0001252345373,0) (6.832339961e-06,0) (1.454786252e-08,0) (2.35247391e-06,0) (-7.547512391e-05,0) (-1.072474815e-08,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.09590197642,0) (-0.1401646988,0) (-0.002985838421,0) (0.01780950172,0) (0.003649578912,0) (-0.002683292763,0) (-0.0006693273457,0) (0.0002766372549,0) (0.0002942175258,0) (-8.172856693e-05,0) (-2.758117892e-05,0) (-4.976700232e-06,0) (2.128685141e-05,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.01470014553,0) (0.01382695546,0) (-0.0003039299897,0) (-4.71970691e-05,0) (9.103863821e-05,0) (0.000163575563,0) (-9.961621062e-05,0) (-2.390391798e-05,0) (5.002522838e-05,0) (1.012786441e-05,0) (-7.88201233e-06,0) (6.23141672e-06,0) (8.301457933e-06,0) (-1.457628927e-06,0) (-0.04559196335,0) (-0.02299600676,0) (0.008358714646,0) (1.091418551e-06,0) (0.01108001222,0) (0.0001174809611,0) (1.180077153e-08,0) (-0.0004752201501,0) (-5.445124097e-06,0) (-7.103876161e-10,0) (-3.157105631e-06,0) (-9.404551985e-10,0) (-3.878017573e-05,0) (0.0003533999622,0) (2.141472362e-05,0) (3.593291973e-09,0) (7.639707444e-05,0) (-1.211070338e-09,0) (-2.325109286e-05,0) (-0.0002136717171,0) (-9.75273999e-10,0) (-2.050776465e-05,0) (2.993656717e-05,0) (-1.380484768e-10,0) (-1.387528677e-05,0) (6.936217859e-05,0) (-1.771963067e-10,0) (2.805955058e-08,0) (-1.784210166e-05,0) (8.180342229e-07,0) (4.010017397e-11,0) (-1.893631504e-05,0) (-1.860366417e-10,0) (-5.633722485e-06,0) (1.251832324e-05,0) (-1.176319828e-10,0) (-2.00923065e-06,0) (4.53804567e-06,0) (6.938893904e-18,0) (0.005994823377,0) (-7.444950055e-08,0) (-0.003435817589,0) (-0.1102116782,0) (-8.67361738e-19,0) (0.001606299893,0) (0.01230377284,0) (1.525748086e-06,0) (0.001045366821,0) (-1.355252716e-20,0) (1.798364778e-05,0) (0.0001386402286,0) (1.737100717e-08,0) (0.0002209886563,0) (-3.388131789e-21,0) (4.610365646e-07,0) (6.817192153e-05,0) (6.679547034e-09,0) (-7.354140116e-06,0) (0,0) (6.988489398e-05,0) (4.1665471e-05,0) (2.546341754e-08,0) (0.0001696441168,0) (1.016439537e-20,0) (9.362266021e-06,0) (-1.188796278e-08,0) (8.158151922e-05,0) (-8.232622071e-05,0) (8.470329473e-21,0) (7.420259143e-06,0) (-4.143616472e-09,0) (-3.256963719e-05,0) (-0.000166117142,0) (-1.694065895e-21,0) (2.488480358e-06,0) (-1.386998724e-09,0) (-6.937063544e-05,0) (5.261433427e-05,0) (1.696781277e-08,0) (4.235164736e-22,0) (-1.09460803e-11,0) (-7.964340301e-06,0) (1.633611477e-05,0) (6.352747104e-22,0) (7.199518179e-07,0) (-5.160270666e-10,0) (3.653434698e-06,0) (-3.163718351e-05,0) (-4.235164736e-22,0) (1.047169952e-06,0) (6.944596701e-07,0) (-6.615208134e-10,0) (-2.354858994e-05,0) (5.29902449e-07,0) (-4.235164736e-22,0) (-2.91384935e-10,0) (-1.338045233e-05,0) (4.545817498e-06,0) (-2.117582368e-22,0) (3.968631531e-07,0) (-1.826512278e-10,0) (3.288624992e-07,0) (-1.102174207e-05,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0.0003039026374,-0.0005263748085) (0.04090131005,-0.07084314711) (-0.00883687416,0.01530591502) (0.01252654015,-0.02169660398) (-0.000346879798,0.0006008134342) (-5.135379222e-06,8.894737729e-06) (0.001183168129,-0.002049307314) (-0.00268255013,0.004646313118) (5.808926845e-07,-1.006135643e-06) (0.001574284488,-0.002726740719) (-0.004459427703,0.007723955355) (1.129113895e-06,-1.955682633e-06) (0.0001341706355,-0.0002323903576) (0.0003683995724,-0.0006380867769) (-1.952858243e-07,3.382449696e-07) (-4.227609596e-05,7.322434614e-05) (9.017141291e-05,-0.0001561814685) (-1.85615821e-08,3.214960327e-08) (3.392569073e-05,-5.876102003e-05) (0.0002193194444,-0.0003798724208) (-9.853361838e-08,1.706652333e-07) (0.0001346486464,-0.0002332182967) (-0.0003281340941,0.0005683449226) (7.513718213e-08,-1.30141417e-07) (2.344440262e-05,-4.060689649e-05) (4.508202613e-05,-7.808435976e-05) (-2.665283983e-08,4.616407275e-08) (3.529806653e-05,-6.113804464e-05) (-8.179885248e-05,0.0001416797685) (1.80411161e-08,-3.12481297e-08) (3.253944728e-05,-5.635997594e-05) (1.08655697e-05,-1.881971877e-05) (-1.708094113e-08,2.958505788e-08) (1.043761257e-05,-1.807847528e-05) (-3.251583845e-05,5.631908425e-05) (8.68155776e-09,-1.503689913e-08) (1.137503137e-05,-1.970213227e-05) (5.505628404e-07,-9.536028123e-07) (-4.783889003e-09,8.285938811e-09) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.02101305131,-0.03639567249) (-0.01883018317,0.03261483397) (0.0001264463693,-0.0002190115361) (6.834581865e-05,-0.0001183784304) (-9.063998106e-05,0.0001569930524) (-0.0002675942571,0.0004634868491) (9.461888584e-05,-0.0001638847176) (6.093280015e-05,-0.0001055387057) (-5.903420635e-05,0.0001022502448) (-2.685320506e-05,4.65111155e-05) (8.271937295e-06,-1.432741567e-05) (-3.536237701e-06,6.124943366e-06) (-1.181918528e-05,2.04714294e-05) (0.01305259065,-0.02260775017) (-1.972421406e-05,3.41633409e-05) (-3.139793852e-05,5.438282477e-05) (-0.001208003877,0.002092324091) (1.712798772e-06,-2.966654497e-06) (-0.01682721675,0.02914559437) (-2.585942318e-05,4.47898348e-05) (9.67925942e-09,-1.67649691e-08) (0.0005877851435,-0.001018073733) (1.150133528e-06,-1.992089707e-06) (-3.493905947e-10,6.051622618e-10) (6.952941289e-06,-1.204284757e-05) (8.190971413e-08,-1.418717865e-07) (1.32217184e-05,-2.290068804e-05) (-0.0004639768554,0.0008036314871) (-6.629958665e-10,1.148342526e-09) (1.637002792e-05,-2.835372008e-05) (-0.0002004334016,0.0003471608352) (9.621648202e-11,-1.666518354e-10) (-1.475131992e-05,2.555003558e-05) (0.0002859360877,-0.0004952558317) (1.363844101e-07,-2.362247277e-07) (8.972964103e-10,-1.554162972e-09) (-1.642133626e-05,2.844258873e-05) (6.808895039e-11,-1.179335215e-10) (8.86002333e-06,-1.534601056e-05) (-0.0001070329349,0.0001853864814) (1.530817236e-11,-2.651453229e-11) (1.09037461e-06,-1.888584223e-06) (-4.296340024e-06,7.441479207e-06) (2.752512015e-10,-4.767490659e-10) (-7.394344286e-07,1.280737999e-06) (1.652763697e-05,-2.862670696e-05) (7.276235858e-11,-1.260281019e-10) (3.451371935e-06,-5.977951547e-06) (-1.976500436e-05,3.423399176e-05) (3.583427253e-11,-6.206678068e-11) (3.65150322e-06,-6.3245891e-06) (-1.973991048e-05,3.419052789e-05) (4.33680869e-19,1.301042607e-18) (-0.0008395542634,0.00145415064) (0.02522679048,-0.04369408282) (-3.126224837e-05,5.414780254e-05) (-0.01100183246,0.01905573281) (-1.084202172e-19,-3.252606517e-19) (6.005470316e-05,-0.0001040177971) (-0.003199103504,0.005541009808) (9.138118664e-07,-1.582768581e-06) (-0.002344817337,0.004061342763) (4.404571326e-20,-5.421010862e-20) (5.727926757e-07,-9.921060165e-07) (-1.287812239e-05,2.230556228e-05) (8.725406379e-09,-1.511284716e-08) (-0.000335289152,0.0005807378464) (-6.352747104e-22,8.470329473e-22) (1.81243952e-09,-3.139237334e-09) (-1.242058352e-05,2.151308171e-05) (3.802120767e-09,-6.585466345e-09) (2.538152278e-06,-4.396208702e-06) (1.694065895e-20,-2.710505431e-20) (9.202421743e-08,-1.593906201e-07) (-2.195446888e-10,3.802625555e-10) (-5.129786172e-06,8.885050281e-06) (-0.0002810210377,0.0004867427153) (2.964615315e-21,8.470329473e-22) (3.473961335e-07,-6.017077536e-07) (-1.186831509e-09,2.055652473e-09) (-7.965351864e-05,0.0001379639413) (0.0001256283905,-0.0002175947552) (-1.482307658e-21,-1.694065895e-21) (-9.779151322e-07,1.693798695e-06) (5.110513569e-09,-8.851669155e-09) (3.289864391e-06,-5.698212276e-06) (0.0001171394555,-0.0002028914885) (8.893845946e-21,1.270549421e-21) (-3.844266251e-07,6.658464465e-07) (2.55914016e-09,-4.432560781e-09) (2.632175311e-05,-4.559061372e-05) (-6.372623528e-05,0.0001103770773) (-3.494010907e-21,-1.058791184e-21) (-3.632365662e-09,6.291441879e-09) (1.155167341e-11,-2.000808526e-11) (6.979756536e-06,-1.208929295e-05) (-3.434954941e-05,5.94951648e-05) (6.6174449e-22,4.764560328e-22) (-4.430089943e-08,7.673140864e-08) (9.242620673e-11,-1.60086886e-10) (-7.708935966e-06,1.335226877e-05) (2.033211796e-05,-3.521626133e-05) (2.64697796e-23,0) (2.732028175e-11,-4.732011607e-11) (-2.030819374e-07,3.517482337e-07) (4.158427398e-10,-7.202607533e-10) (5.390575629e-06,-9.336750872e-06) (-4.235164736e-22,-2.117582368e-22) (-3.944424504e-08,6.831943648e-08) (1.737627841e-10,-3.009659705e-10) (1.261265833e-05,-2.184576504e-05) (-1.944658249e-05,3.36824689e-05) (6.6174449e-22,-1.535247217e-21) (-1.766566272e-08,3.059782538e-08) (8.522954168e-11,-1.476218965e-10) (2.700280003e-06,-4.67702216e-06) (-4.74143023e-06,8.212398059e-06) -(0.01677258801,-0.02905097462) (0.02573064519,-0.04456678478) (0.001794210947,-0.00310766452) (-0.003074644141,0.005325439867) (-0.0009164076666,0.001587264639) (0.0004100621676,-0.0007102485086) (0.0001761695175,-0.000305134555) (-2.713117662e-05,4.699257638e-05) (-6.232953669e-05,0.0001079579244) (7.706117781e-06,-1.334738753e-05) (6.57026234e-06,-1.138002819e-05) (2.192435553e-06,-3.797409769e-06) (-3.737819008e-06,6.474092431e-06) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.0411321873,0) (-0.008339062533,0) (0.0006096469769,0) (-0.001541034196,0) (0.0003931502828,0) (-1.829129434e-05,0) (-1.884297833e-05,0) (-5.725387206e-06,0) (6.503070519e-06,0) (1.447036132e-05,0) (-3.098376047e-06,0) (4.108944902e-07,0) (2.993889774e-06,0) (-0.003692931319,0) (6.684943117e-06,0) (0.006341380197,0) (-0.0001230406465,0) (-2.74369599e-07,0) (-0.04913856285,0) (6.893948142e-06,0) (1.71308782e-08,0) (0.007067222778,0) (1.30112031e-05,0) (-5.544016143e-08,0) (-0.002630298682,0) (1.854554824e-10,0) (-4.611068783e-08,0) (0.0005833114635,0) (-4.475959074e-11,0) (-3.716938248e-07,0) (-5.172975408e-06,0) (-6.23653338e-11,0) (-9.518968852e-07,0) (-7.449260097e-05,0) (-2.062491615e-07,0) (-6.585442473e-11,0) (-1.207582855e-06,0) (4.133017006e-11,0) (9.861243906e-08,0) (4.383718543e-05,0) (-2.959197357e-12,0) (9.323612458e-08,0) (3.492314996e-06,0) (-6.522504806e-10,0) (-1.657548191e-06,0) (-1.703770788e-06,0) (4.242558686e-11,0) (4.549582158e-07,0) (2.634266796e-06,0) (4.460116865e-11,0) (8.116553402e-07,0) (6.443219229e-06,0) (-3.252606517e-18,0) (0.0004829576041,0) (0.0001242870854,0) (5.888692216e-06,0) (0.04723623807,0) (-1.029992064e-18,0) (3.294780257e-06,0) (0.001149751687,0) (-3.89436725e-06,0) (-0.04242691604,0) (-1.778769189e-20,0) (-2.768655948e-10,0) (-2.949608241e-08,0) (-2.64989249e-10,0) (-0.001090599805,0) (1.016439537e-20,0) (3.933175975e-11,0) (0.0002019770285,0) (3.09697559e-07,0) (0.0003194157652,0) (-2.541098842e-21,0) (-1.91547415e-10,0) (-2.098780887e-11,0) (-1.35141104e-08,0) (-0.0001132326063,0) (6.088049308e-22,0) (-2.624027897e-08,0) (-5.605204444e-10,0) (-2.631350537e-06,0) (-2.46417407e-05,0) (2.713152409e-22,0) (1.457134286e-09,0) (-1.394145316e-10,0) (-1.684666273e-07,0) (-8.469855444e-06,0) (2.117582368e-22,0) (-5.243764032e-09,0) (-1.348940671e-10,0) (5.599469354e-08,0) (-1.022219073e-05,0) (1.694065895e-21,0) (1.779518342e-09,0) (2.80884512e-11,0) (1.111762798e-07,0) (5.549890313e-05,0) (-2.514629062e-22,0) (1.163451117e-08,0) (-2.697230875e-10,0) (-7.446974375e-06,0) (-5.385302829e-06,0) (-7.754818243e-26,0) (3.272970404e-10,0) (-3.370708344e-09,0) (9.449748969e-13,0) (3.578609755e-09,0) (7.610061635e-23,0) (9.0329589e-09,0) (1.116684355e-10,0) (8.917771118e-07,0) (5.110647247e-06,0) (4.63221143e-23,0) (2.385951371e-08,0) (1.501339326e-10,0) (2.921382097e-06,0) (1.83702408e-06,0) -(0.02917389264,0) (0.008838028944,0) (-0.001424096841,0) (0.001390526193,0) (-0.0003488462539,0) (3.20272016e-05,0) (1.878777362e-05,0) (1.011353251e-06,0) (-9.024838172e-06,0) (-5.66671952e-06,0) (1.99122386e-06,0) (-5.609910046e-07,0) (-2.414963783e-06,0) (3.131764434e-06,0) (0.02113859613,0) (-0.02661209925,0) (-7.166687639e-05,0) (4.97322524e-07,0) (0.03782720766,0) (-5.177796953e-06,0) (-1.043334764e-08,0) (-0.004535076858,0) (-4.088571921e-05,0) (7.933896824e-08,0) (0.001461529417,0) (-1.081506332e-10,0) (9.410884509e-08,0) (-0.0002381860178,0) (1.194202806e-06,0) (-4.647773923e-10,0) (1.261180451e-06,0) (1.372863619e-10,0) (1.038364612e-06,0) (4.216515965e-05,0) (9.30177865e-11,0) (2.694383648e-07,0) (2.749813509e-06,0) (-2.841116772e-11,0) (-1.995626923e-07,0) (-3.784413631e-05,0) (1.343156087e-10,0) (4.046369427e-06,0) (2.801726811e-06,0) (6.603081789e-07,0) (-1.781739592e-10,0) (-1.048868705e-07,0) (-4.49845343e-11,0) (-4.575800789e-07,0) (-3.241043012e-06,0) (-4.809009413e-11,0) (-7.612857105e-07,0) (-3.494038197e-06,0) (0,0) (-0.0001781248725,0) (-5.875863018e-06,0) (-0.00325358254,0) (-0.03202255516,0) (-8.67361738e-19,0) (2.27129912e-06,0) (-0.002309571161,0) (4.314038673e-06,0) (0.02951567944,0) (0,0) (9.109152453e-08,0) (7.736946357e-07,0) (6.824590353e-09,0) (0.002846967579,0) (0,0) (-1.380258363e-08,0) (-0.00014659622,0) (-2.405362853e-07,0) (-0.000837203801,0) (0,0) (1.804379704e-07,0) (1.404322281e-07,0) (4.172190712e-10,0) (0.0002216784642,0) (0,0) (2.542909593e-08,0) (2.030650731e-10,0) (-3.866749846e-08,0) (3.31291695e-05,0) (-2.64697796e-23,0) (-1.148514282e-08,0) (-6.330232694e-10,0) (-4.027290359e-06,0) (-3.296411943e-06,0) (0,0) (-1.548017159e-09,0) (-4.061005464e-11,0) (4.700979461e-08,0) (-5.014173148e-06,0) (-4.001910504e-10,0) (-8.470329473e-22,0) (-4.040786576e-12,0) (-5.617850981e-07,0) (-2.586134062e-05,0) (5.29395592e-23,0) (7.229839581e-09,0) (2.418124915e-10,0) (6.181658491e-06,0) (1.538533616e-06,0) (-2.64697796e-23,0) (5.335196032e-09,0) (3.786615396e-07,0) (-2.026498209e-10,0) (1.980117903e-07,0) (-6.313576244e-09,0) (0,0) (-1.199476441e-10,0) (-1.961240248e-06,0) (-3.991018329e-06,0) (-2.117582368e-22,0) (-1.197908084e-08,0) (-2.132048396e-10,0) (-1.09602752e-06,0) (-5.6965094e-07,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0.0616499241,0) (-0.05612508663,0) (-0.005524837477,0) (-0.09849767551,0) (0.003987118413,0) (0.0945105571,0) (-0.03774692604,0) (-0.03968505748,0) (0.07743198352,0) (-0.01322794725,0) (-0.0355135707,0) (0.04874151795,0) (-0.03985523459,0) (0.009503484414,0) (0.03035175017,0) (-0.02158210048,0) (0.004347737172,0) (0.01723436331,0) (-0.01398296519,0) (0.00355609991,0) (0.01042686528,0) (-0.002231696874,0) (-0.003401939794,0) (0.005633636669,0) (-0.004236003097,0) (0.0009642830837,0) (0.003271720014,0) (-0.0007253584191,0) (-0.0008634759321,0) (0.001588834351,0) (-0.000973594934,0) (0.0001368578979,0) (0.0008367370361,0) (-6.904381328e-05,0) (-0.0002476788081,0) (0.0003167226213,0) (-0.0001631146387,0) (1.171560823e-05,0) (0.0001513990305,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.0006430541106,0) (-0.002209624475,0) (-2.335865557e-06,0) (-0.0002782637621,0) (-2.751354053e-05,0) (-4.977489973e-05,0) (-5.19439452e-06,0) (-3.03377501e-06,0) (-4.441312862e-06,0) (-1.389602407e-06,0) (-1.616956109e-07,0) (-3.140627274e-08,0) (-4.069859621e-07,0) (-0.02315446542,0) (0.02486709624,0) (-0.0002113144789,0) (-0.002883591821,0) (0.002752586386,0) (-0.002965630851,0) (-0.0002318971576,0) (0.0002190437346,0) (-0.0007133624739,0) (-0.0002270707624,0) (0.0002787001547,0) (-0.0001841079618,0) (1.946548646e-05,0) (-1.743881751e-05,0) (-0.0002488508671,0) (6.647567465e-06,0) (-1.942370938e-05,0) (-1.356825305e-06,0) (2.009289265e-06,0) (-7.120632471e-06,0) (-2.917357685e-05,0) (2.017518414e-06,0) (8.169870928e-06,0) (-1.023318319e-05,0) (1.202217678e-06,0) (7.088695561e-07,0) (-1.562354862e-05,0) (4.044755587e-07,0) (3.404607548e-08,0) (-4.521418737e-07,0) (1.300895681e-06,0) (-2.972631304e-06,0) (1.388004183e-06,0) (1.167951802e-06,0) (1.454595627e-06,0) (-3.315964822e-06,0) (6.652579445e-07,0) (1.014281671e-06,0) (-2.410363274e-06,0) (2.168404345e-18,0) (-0.001830745551,0) (-0.04184804203,0) (0.04614153827,0) (-0.0003918889316,0) (8.67361738e-19,0) (-1.505671622e-05,0) (-0.0107099765,0) (0.01335057348,0) (-0.003158834692,0) (-1.355252716e-20,0) (-6.739309617e-07,0) (-3.000331146e-05,0) (3.095587548e-05,0) (-0.001514871375,0) (1.355252716e-20,0) (-1.267303586e-10,0) (-0.0008741803541,0) (0.0008591989311,0) (5.958119995e-05,0) (-2.117582368e-21,0) (-6.219833605e-07,0) (4.261561381e-06,0) (-4.506042692e-06,0) (-0.0002959797984,0) (-2.117582368e-22,0) (-2.325279806e-06,0) (1.61001834e-05,0) (1.56959449e-05,0) (-3.949717088e-05,0) (-4.235164736e-21,0) (-2.219766983e-06,0) (2.561091166e-05,0) (-3.502433912e-05,0) (-1.382955411e-05,0) (5.29395592e-21,0) (-1.682357216e-06,0) (1.529640096e-05,0) (-6.160454092e-06,0) (-2.125727712e-05,0) (0,0) (-7.037685441e-08,0) (3.9958929e-07,0) (2.960709067e-07,0) (-8.452535281e-06,0) (1.058791184e-22,0) (-1.588206347e-07,0) (1.504087388e-06,0) (-4.685734219e-06,0) (2.429661067e-06,0) (0,0) (-2.96845995e-10,0) (-7.277574765e-07,0) (4.071144148e-06,0) (-3.096918026e-06,0) (-4.367513634e-22,0) (-3.56383646e-07,0) (2.252412441e-06,0) (2.637815303e-06,0) (-5.847758739e-06,0) (-1.32348898e-23,0) (-2.276567175e-07,0) (1.337660336e-06,0) (1.200711633e-06,0) (-2.564584225e-06,0) -(-0.01091369342,0) (-0.04131632783,0) (-0.0004679952334,0) (-0.004601739364,0) (-0.0009625373212,0) (-0.000644989832,0) (-0.0001996634222,0) (-1.619117925e-05,0) (-0.0001105964721,0) (-6.854775913e-06,0) (-5.091165187e-06,0) (-3.381943069e-06,0) (-6.962613624e-06,0) (0.02620752866,0) (0.002224269497,0) (-0.001000892129,0) (0.0003047929621,0) (0.003673383099,0) (-0.05422961591,0) (-1.170549913e-05,0) (0.0001381032981,0) (-0.01748116626,0) (5.58488008e-05,0) (0.0003390297478,0) (-0.001362512354,0) (6.763664198e-06,0) (2.347166408e-06,0) (-0.005173910596,0) (-1.001395262e-05,0) (8.679345149e-06,0) (-1.134781363e-05,0) (4.708510543e-06,0) (-1.51237669e-05,0) (-0.0006345178053,0) (7.640857198e-06,0) (-8.106428758e-06,0) (-8.057400327e-05,0) (4.942920937e-07,0) (-1.090440533e-06,0) (-0.0002032277807,0) (4.625928184e-07,0) (-3.831370518e-06,0) (-2.711142746e-06,0) (-2.393650938e-06,0) (1.517526643e-06,0) (4.079308649e-07,0) (9.838166031e-07,0) (-2.85806264e-06,0) (-1.98571424e-05,0) (5.56293275e-07,0) (-1.496586117e-06,0) (-6.720478032e-06,0) (-2.168404345e-19,0) (4.480721443e-05,0) (0.04632333236,0) (-0.001379381288,0) (-0.01073557061,0) (0,0) (2.884086942e-05,0) (0.002367327906,0) (0.01585694053,0) (-0.01995489753,0) (0,0) (-5.527808322e-07,0) (2.718459272e-06,0) (0.0001926337373,0) (-0.02909695075,0) (0,0) (-4.47964897e-09,0) (-9.694780846e-05,0) (0.0008472184569,0) (-0.0008468054569,0) (5.421010862e-20,0) (-2.241467871e-06,0) (-2.480320484e-06,0) (3.082178995e-05,0) (-0.004571428628,0) (1.355252716e-20,0) (-3.003345517e-07,0) (9.997786745e-06,0) (1.10553403e-06,0) (-0.0006493401365,0) (0,0) (-2.479739066e-07,0) (3.770913572e-05,0) (-0.0001390322279,0) (-0.0001175146047,0) (0,0) (-8.278796515e-08,0) (9.703906891e-06,0) (4.395115462e-06,0) (-0.0004388356181,0) (-3.966417036e-10,0) (0,0) (3.483258316e-08,0) (-1.062099363e-06,0) (-4.860039762e-05,0) (-8.470329473e-22,0) (-1.83956344e-08,0) (2.297772888e-06,0) (-2.83623588e-05,0) (-7.201757854e-06,0) (0,0) (-3.23672139e-08,0) (-3.897417542e-06,0) (4.070176231e-06,0) (-1.782127644e-06,0) (-1.71723915e-08,0) (0,0) (1.666924655e-06,0) (-8.914065602e-06,0) (-1.780002849e-05,0) (0,0) (-3.673872713e-09,0) (1.208697071e-06,0) (-1.088177979e-06,0) (-4.919808827e-07,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (-0.06251041084,0) (-0.02312716577,0) (0.08563757661,0) (-0.03295383896,0) (0.1276303109,0) (-0.0946764719,0) (0.1030608728,0) (-0.02550019993,0) (-0.07756067291,0) (0.0673281933,0) (-0.01850623727,0) (-0.04882195603,0) (-0.003708510075,0) (0.03411132104,0) (-0.03040281096,0) (0.01146538456,0) (0.005797797515,0) (-0.01726318207,0) (-0.0006699053532,0) (0.01111428551,0) (-0.01044438016,0) (0.007652943725,0) (-0.002009962988,0) (-0.005642980737,0) (-0.0004988181503,0) (0.003776045562,0) (-0.003277227412,0) (0.002131064227,0) (-0.0005395912934,0) (-0.001591472934,0) (-0.0002399694735,0) (0.00107812515,0) (-0.0008381556767,0) (0.0004388767921,0) (-0.000121633216,0) (-0.0003172435761,0) (-5.066889512e-05,0) (0.0002023292553,0) (-0.0001516603602,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.01463443893,0) (0.0502859929,0) (5.315895081e-05,0) (0.006332645988,0) (0.0006261451749,0) (0.001132762731,0) (0.0001182125239,0) (6.904177173e-05,0) (0.0001010741099,0) (3.162416853e-05,0) (3.679821814e-06,0) (7.147348455e-07,0) (9.262068479e-06,0) (-0.009313391119,0) (-0.02485528906,0) (2.158341618e-06,0) (-0.0009642227618,0) (-0.002752518914,0) (0.07418909208,0) (-7.592983434e-05,0) (-0.0002192988358,0) (0.01682223941,0) (-0.0001078732284,0) (-0.0002790327477,0) (0.003401814836,0) (-1.969725446e-05,0) (-7.352308847e-06,0) (0.005644203073,0) (-6.658775869e-06,0) (1.481098257e-05,0) (0.000313481762,0) (-2.012532792e-06,0) (7.210277511e-06,0) (0.0007750485214,0) (2.629829628e-06,0) (-8.184795682e-06,0) (6.597129124e-06,0) (-1.204185994e-06,0) (9.994640053e-07,0) (0.0003122689409,0) (-4.05238327e-07,0) (3.652865445e-08,0) (6.786751343e-07,0) (-1.303286861e-06,0) (2.952998217e-06,0) (4.80736646e-06,0) (-1.169838614e-06,0) (3.186477351e-06,0) (1.376395317e-05,0) (-6.663773466e-07,0) (2.4025461e-06,0) (1.489570409e-05,0) (0,0) (-0.0005631257223,0) (-0.01669247861,0) (-0.04613755182,0) (0.01626508487,0) (2.439454888e-19,0) (-8.490090396e-06,0) (-0.005142060373,0) (-0.01336677666,0) (0.03065388695,0) (4.607859233e-19,0) (-2.601810625e-07,0) (-1.103815192e-05,0) (-3.097608686e-05,0) (0.03451093673,0) (1.016439537e-20,0) (-3.774812831e-11,0) (-0.0002830758546,0) (-0.0008602105367,0) (0.0001283005263,0) (-1.355252716e-19,0) (-2.367183435e-07,0) (-4.268285589e-06,0) (-9.777383985e-07,0) (0.006761023897,0) (6.035109749e-21,0) (-6.8364659e-07,0) (-1.612492008e-05,0) (3.081896923e-05,0) (0.0002141657343,0) (1.482307658e-21,0) (-9.918547086e-07,0) (-2.565648968e-05,0) (-1.776462113e-06,0) (0.0006078986526,0) (-1.672890071e-20,0) (-4.959282655e-07,0) (-1.532305696e-05,0) (-4.336478179e-06,0) (0.0003342957791,0) (1.058791184e-22,0) (-2.228367745e-08,0) (-4.002309418e-07,0) (4.816661111e-07,0) (0.0001780711778,0) (2.382280164e-22,0) (-8.446585262e-08,0) (-1.506512155e-06,0) (1.160455761e-05,0) (1.071428823e-05,0) (-1.32348898e-23,0) (1.991555512e-09,0) (-3.123218372e-07,0) (-4.078876345e-06,0) (-1.21309979e-06,0) (-3.97046694e-22,0) (-9.18463487e-08,0) (-2.255974777e-06,0) (6.034671105e-06,0) (2.62148383e-05,0) (-6.6174449e-23,0) (-5.222643711e-08,0) (-1.339863123e-06,0) (5.215289271e-06,0) (1.954276747e-06,0) -(-0.003549268956,0) (-0.01343658413,0) (-0.0001521978757,0) (-0.001496542925,0) (-0.0003130291189,0) (-0.0002097587224,0) (-6.49330304e-05,0) (-5.265573046e-06,0) (-3.596734947e-05,0) (-2.229258458e-06,0) (-1.655710296e-06,0) (-1.099849986e-06,0) (-2.264328624e-06,0) (-0.02625611128,0) (0.03211320294,0) (0.003063780447,0) (0.004903291854,0) (-0.003682232749,0) (-0.01756345289,0) (0.0001924317751,0) (-0.0001384529431,0) (-0.005697965572,0) (0.0004391819773,0) (-0.000339842748,0) (-0.0004140257883,0) (-6.779946273e-06,0) (7.980037421e-06,0) (-0.001680857268,0) (1.12590218e-05,0) (-8.694108655e-06,0) (-6.689394366e-06,0) (-4.720166369e-06,0) (6.909971635e-06,0) (-0.0002119300653,0) (-7.660029649e-06,0) (-6.315433174e-06,0) (-1.237961572e-05,0) (-4.954443068e-07,0) (-7.960133638e-07,0) (-6.499462137e-05,0) (-4.636178842e-07,0) (-6.185385077e-08,0) (-1.451794079e-06,0) (8.328918145e-07,0) (-1.520070884e-06,0) (5.349167374e-07,0) (-9.861286637e-07,0) (-1.906935634e-06,0) (-4.174253742e-06,0) (-5.575045068e-07,0) (-9.86831296e-07,0) (-9.470422496e-07,0) (0,0) (0.002828880622,0) (-0.04641579736,0) (-0.001282046906,0) (0.05600852667,0) (-4.33680869e-19,0) (0.0007314810716,0) (0.01984557116,0) (-0.01589400852,0) (-0.005236486429,0) (0,0) (8.808045082e-06,0) (0.0002536017549,0) (-0.0001931366618,0) (-0.009468612536,0) (-5.421010862e-20,0) (2.225154949e-07,0) (0.001174190644,0) (-0.0008494051089,0) (-0.0003564038288,0) (0,0) (3.442811834e-05,0) (9.018351715e-06,0) (-3.090440545e-05,0) (-0.001490739516,0) (0,0) (4.609909213e-06,0) (-1.002012226e-05,0) (8.682331798e-06,0) (-0.0002109323487,0) (-5.082197684e-21,0) (3.659487597e-06,0) (-3.781049624e-05,0) (2.895905309e-05,0) (-6.605743182e-05,0) (-3.388131789e-21,0) (1.226847403e-06,0) (-9.727843585e-06,0) (8.073711052e-06,0) (-0.0001377292668,0) (8.320855081e-09,0) (0,0) (-3.491009668e-08,0) (-4.928831568e-07,0) (-1.562019084e-05,0) (-1.058791184e-22,0) (3.508562431e-07,0) (-2.303710515e-06,0) (-4.342307445e-06,0) (-4.529449878e-06,0) (2.117582368e-22,0) (5.141031785e-07,0) (-2.076654126e-06,0) (-4.074920738e-06,0) (5.103558646e-06,0) (2.617659823e-07,0) (0,0) (-1.67094328e-06,0) (-4.923886331e-06,0) (-1.818172343e-06,0) (0,0) (1.916922473e-07,0) (-1.21138326e-06,0) (-5.785828522e-07,0) (1.476275077e-06,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0.08286250691,0) (0.02431037598,0) (0.06871438145,0) (0.04930718395,0) (0.09326492082,0) (0.1255216072,0) (0.1061377676,0) (0.01064733091,0) (0.1028501942,0) (0.06073138578,0) (0.01278119823,0) (0.06474155448,0) (0.02720911517,0) (0.01856972471,0) (0.04031468813,0) (0.02489475137,0) (0.001098999625,0) (0.02289168401,0) (0.01002216348,0) (0.005704391145,0) (0.01384947954,0) (0.007451325099,0) (0.001045456362,0) (0.007482962107,0) (0.00281298841,0) (0.002121681757,0) (0.004345654447,0) (0.002153156807,0) (0.0002431658316,0) (0.002110392238,0) (0.000552027313,0) (0.0007100396512,0) (0.001111378275,0) (0.0003829383684,0) (9.474450534e-05,0) (0.0004206906223,0) (8.459498418e-05,0) (0.0001437766924,0) (0.0002010868071,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.01151542489,0) (0.03956862145,0) (4.182927054e-05,0) (0.004982979502,0) (0.0004926958775,0) (0.0008913388619,0) (9.301808191e-05,0) (5.432701179e-05,0) (7.953235012e-05,0) (2.488416119e-05,0) (2.895547407e-06,0) (5.624045764e-07,0) (7.288058967e-06,0) (0.01044095573,0) (0.03297631033,0) (0.0001606173415,0) (0.001446472844,0) (0.003652617632,0) (0.05815477759,0) (0.0001173327325,0) (0.0002910130741,0) (0.01321743319,0) (8.960512001e-05,0) (0.000370321967,0) (0.002702735249,0) (2.612306591e-05,0) (7.450636785e-06,0) (0.004441884828,0) (8.839061027e-06,0) (2.57761275e-05,0) (0.0002373242255,0) (2.671175919e-06,0) (1.079249771e-05,0) (0.0006061888617,0) (4.643013261e-07,0) (1.085909936e-05,0) (1.26714713e-05,0) (1.598089418e-06,0) (2.20050347e-07,0) (0.0002471462147,0) (5.375848748e-07,0) (1.919689554e-09,0) (8.5178208e-07,0) (1.732231442e-06,0) (4.45895687e-06,0) (2.579457553e-06,0) (1.552409348e-06,0) (1.30742986e-06,0) (1.287012362e-05,0) (8.842413405e-07,0) (1.047868629e-06,0) (1.304197819e-05,0) (-6.505213035e-19,0) (0.0009533201785,0) (0.01896428393,0) (0.06121497228,0) (0.0125521507,0) (-3.252606517e-19,0) (4.931195373e-06,0) (0.004185764753,0) (0.017738704,0) (0.02547954574,0) (-1.219727444e-18,0) (3.110674544e-07,0) (1.42753078e-05,0) (4.111206382e-05,0) (0.02715447401,0) (1.355252716e-20,0) (6.693630906e-11,0) (0.0004446572613,0) (0.001141388293,0) (5.175547801e-05,0) (-2.710505431e-20,0) (2.896624921e-07,0) (5.66493273e-06,0) (2.653219922e-06,0) (0.005319222649,0) (4.446922973e-21,0) (1.23469439e-06,0) (2.140210977e-05,0) (1.142126714e-05,0) (0.0001911500099,0) (4.235164736e-21,0) (9.22882494e-07,0) (3.405631521e-05,0) (2.500444833e-05,0) (0.000468632467,0) (-1.270549421e-20,0) (8.923175134e-07,0) (2.033674126e-05,0) (1.365401367e-06,0) (0.0002679810755,0) (-3.388131789e-21,0) (3.61685241e-08,0) (5.311357506e-07,0) (1.40319171e-07,0) (0.0001405914279,0) (7.676236084e-22,0) (5.585209319e-08,0) (1.999539627e-06,0) (1.227245632e-05,0) (6.248313256e-06,0) (2.64697796e-23,0) (1.724997877e-09,0) (3.122744061e-07,0) (5.411018301e-06,0) (1.415448965e-06,0) (8.999725065e-22,0) (1.989853278e-07,0) (2.994061638e-06,0) (2.564169571e-06,0) (2.415994883e-05,0) (-5.29395592e-23,0) (1.319703087e-07,0) (1.777963699e-06,0) (3.027655855e-06,0) (3.402615008e-06,0) -(0.00553605759,0) (0.02095803515,0) (0.0002373942959,0) (0.002334268809,0) (0.0004882546943,0) (0.0003271762106,0) (0.0001012808553,0) (8.213104159e-06,0) (5.610093811e-05,0) (3.477139478e-06,0) (2.582533942e-06,0) (1.715517459e-06,0) (3.531841012e-06,0) (0.03483145319,0) (0.02253296123,0) (0.003063275652,0) (0.003468356907,0) (0.004882815777,0) (0.02756244955,0) (0.0001539254955,0) (0.0001835979054,0) (0.008857709221,0) (0.0002891550959,0) (0.0004506771526,0) (0.0007129915528,0) (8.993340896e-06,0) (4.250060433e-06,0) (0.002625833686,0) (1.60314874e-05,0) (1.152525194e-05,0) (3.496369595e-06,0) (6.261644115e-06,0) (1.658833738e-05,0) (0.0003176578563,0) (1.01594509e-05,0) (1.337741548e-06,0) (5.129237847e-05,0) (6.572109132e-07,0) (2.20383207e-07,0) (0.0001039161773,0) (6.150600883e-07,0) (2.836013573e-06,0) (9.454592508e-07,0) (2.430401289e-06,0) (2.015296627e-06,0) (9.633593424e-08,0) (1.307998808e-06,0) (7.127991709e-07,0) (1.179406541e-05,0) (7.39491486e-07,0) (3.820896297e-07,0) (4.342680978e-06,0) (0,0) (0.002099748074,0) (0.06156955733,0) (7.114789054e-05,0) (0.05029811769,0) (0,0) (0.0005299594019,0) (0.01318363225,0) (0.02107802791,0) (0.01106375401,0) (2.168404345e-19,0) (7.058923414e-06,0) (0.0001891960434,0) (0.0002561189377,0) (0.01475511786,0) (0,0) (1.711878633e-07,0) (0.0009584736151,0) (0.001126274353,0) (0.0003682274248,0) (-2.710505431e-20,0) (2.7652106e-05,0) (8.673773527e-06,0) (4.097130545e-05,0) (0.002315825677,0) (0,0) (3.702756937e-06,0) (1.329608283e-05,0) (5.70924401e-06,0) (0.0003295600291,0) (2.541098842e-21,0) (2.946557407e-06,0) (5.015820037e-05,0) (0.0001264260713,0) (3.861267461e-05,0) (-6.776263578e-21,0) (9.875766575e-07,0) (1.29029779e-05,0) (2.779852115e-06,0) (0.0002263576027,0) (6.573952743e-09,0) (-4.235164736e-22,0) (4.630728464e-08,0) (4.275873786e-07,0) (2.47925857e-05,0) (3.705769144e-22,0) (2.784547616e-07,0) (3.05584326e-06,0) (1.806598778e-05,0) (2.003963724e-06,0) (4.235164736e-22,0) (4.120885495e-07,0) (1.368540015e-06,0) (5.405814955e-06,0) (5.188382974e-06,0) (2.103438461e-07,0) (-8.470329473e-22,0) (2.21632634e-06,0) (2.994934864e-06,0) (1.202228621e-05,0) (-1.058791184e-22,0) (1.473351266e-07,0) (1.60672927e-06,0) (3.824359347e-07,0) (1.483102828e-06,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (1.792468198e-05,0) (0.0015942032,0) (-0.1456492277,0) (-0.002288970907,0) (-0.04519188989,0) (1.349672706e-05,0) (0.01039062405,0) (-0.0008488810399,0) (-1.833908765e-06,0) (0.01281429128,0) (-0.0007629577502,0) (-2.261845447e-06,0) (-0.0009122039538,0) (-0.002265202916,0) (6.573132114e-07,0) (-6.462997956e-05,0) (-1.306935015e-05,0) (1.547562452e-08,0) (-0.0003155601183,0) (-0.000622467995,0) (1.928670741e-07,0) (0.0009669418372,0) (-7.371168797e-05,0) (-1.703585845e-07,0) (-9.854256778e-05,0) (-0.0002801178774,0) (7.871574193e-08,0) (0.0002283587626,0) (-1.837131481e-05,0) (-4.027933956e-08,0) (-2.384812022e-05,0) (-0.0001639726644,0) (4.130690869e-08,0) (0.000109272375,0) (-5.321956378e-06,0) (-1.92916415e-08,0) (-3.927606724e-06,0) (-5.36331914e-05,0) (1.42199673e-08,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.07546254497,0) (-0.1102916257,0) (-0.00234947156,0) (0.01401379174,0) (0.002871750125,0) (-0.002111406963,0) (-0.0005266747028,0) (0.0002176780091,0) (0.0002315114256,0) (-6.430989108e-05,0) (-2.170284735e-05,0) (-3.916024248e-06,0) (1.675001957e-05,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.02292890543,0) (-0.02156692623,0) (0.0004740621088,0) (7.361676329e-05,0) (-0.0001419997048,0) (-0.0002551409173,0) (0.0001553787796,0) (3.72847108e-05,0) (-7.802805272e-05,0) (-1.579718001e-05,0) (1.229415824e-05,0) (-9.719602051e-06,0) (-1.29483986e-05,0) (1.933695861e-06,0) (-0.03199064087,0) (-0.02299221789,0) (0.005912559672,0) (-1.447272914e-06,0) (-0.01738794072,0) (9.397260481e-05,0) (-1.564861596e-08,0) (0.0007387482168,0) (-3.585040966e-06,0) (9.420694424e-10,0) (5.436834395e-06,0) (1.247478056e-09,0) (-2.065379919e-05,0) (-0.0005520810976,0) (3.049198037e-05,0) (-4.763408986e-09,0) (-3.993073118e-05,0) (1.606572917e-09,0) (-5.581744661e-05,0) (0.0003202683844,0) (1.293499994e-09,0) (4.343975792e-06,0) (-0.0001240359772,0) (1.831224303e-10,0) (3.841493541e-06,0) (-0.0001108992143,0) (2.350780239e-10,0) (-1.286536979e-06,0) (1.161940272e-05,0) (2.387046427e-06,0) (-5.316445846e-11,0) (-3.410339354e-06,0) (2.467585767e-10,0) (2.105845968e-06,0) (-3.536965701e-05,0) (1.560307562e-10,0) (7.77950799e-07,0) (-2.080929823e-05,0) (5.204170428e-18,0) (0.004449681879,0) (9.875566194e-08,0) (0.0001906725663,0) (-0.09897492918,0) (-2.168404345e-19,0) (0.001163767271,0) (0.008173532278,0) (-2.023388919e-06,0) (-0.002208672077,0) (0,0) (1.441241402e-05,0) (0.000103430604,0) (-2.303572953e-08,0) (-0.0003443707994,0) (-1.694065895e-21,0) (3.546892966e-07,0) (5.564768243e-05,0) (-8.856789814e-09,0) (7.598111631e-06,0) (0,0) (5.613041285e-05,0) (4.007349356e-05,0) (-3.375795271e-08,0) (-0.0002635377927,0) (-6.776263578e-21,0) (7.519930189e-06,0) (1.577459173e-08,0) (5.364558862e-05,0) (0.0001286262247,0) (5.082197684e-21,0) (5.974666933e-06,0) (5.496789673e-09,0) (-0.0001421887402,0) (9.710076482e-05,0) (0,0) (2.003154677e-06,0) (1.839710283e-09,0) (-2.388494044e-05,0) (-8.647148753e-05,0) (1.340554525e-08,0) (-8.470329473e-22,0) (1.451967495e-11,0) (6.909246837e-06,0) (-2.592891019e-05,0) (0,0) (5.713850495e-07,0) (6.845034665e-10,0) (-1.519996164e-05,0) (1.399723361e-05,0) (-1.270549421e-21,0) (8.393777059e-07,0) (-4.576572648e-07,0) (8.775775864e-10,0) (-2.393998219e-05,0) (4.258067386e-07,0) (4.235164736e-22,0) (3.864907411e-10,0) (8.138608507e-06,0) (-3.005827211e-05,0) (-8.470329473e-22,0) (3.050299829e-07,0) (2.42261127e-10,0) (-2.173739453e-07,0) (-1.107271747e-05,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (-0.0004028470466,0.0006977515524) (-0.04299386424,0.07446755728) (-0.007090582965,0.01228124995) (-0.01874283661,0.03246354529) (-0.0002534798879,0.0004390400445) (6.808460863e-06,-1.179260014e-05) (0.001218491756,-0.00211048963) (0.001120069607,-0.001940017466) (-7.702992143e-07,1.334197376e-06) (0.001420036301,-0.002459575022) (0.003079871323,-0.005334493612) (-1.497289225e-06,2.593381012e-06) (-0.0009844018759,0.001705034064) (0.0002005515599,-0.0003473654913) (2.589526051e-07,-4.485190688e-07) (-9.179394658e-05,0.0001589917793) (1.709241288e-05,-2.960492753e-05) (2.461341544e-08,-4.263168609e-08) (-0.0005075475471,0.0008790981388) (0.0001125653912,-0.0001949689767) (1.306577615e-07,-2.263058812e-07) (0.0001311012957,-0.0002270741051) (0.0001706747231,-0.0002956172919) (-9.963682546e-08,1.72576044e-07) (-0.0001322101708,0.0002289947331) (2.533065632e-05,-4.387398374e-05) (3.534207956e-08,-6.121427745e-08) (3.566399888e-05,-6.177185807e-05) (3.686250359e-05,-6.384772911e-05) (-2.392364366e-08,4.143696631e-08) (-7.485395282e-05,0.0001296508494) (7.155927413e-06,-1.239442985e-05) (2.264899878e-08,-3.922921662e-08) (9.107253788e-06,-1.577422628e-05) (2.532776104e-05,-4.386896896e-05) (-1.151244726e-08,1.994014357e-08) (-1.899134758e-05,3.289397892e-05) (3.912341003e-07,-6.776373393e-07) (6.342969012e-09,-1.09863446e-08) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.01653457404,-0.02863872232) (-0.01481693702,0.02566368773) (9.949706138e-05,-0.0001723339655) (5.377938606e-05,-9.314862906e-05) (-7.132203009e-05,0.0001235333798) (-0.0002105623306,0.0003647046547) (7.44529174e-05,-0.0001289562357) (4.794629208e-05,-8.304541391e-05) (-4.645234247e-05,8.045781728e-05) (-2.113002537e-05,3.65982775e-05) (6.508952823e-06,-1.127383699e-05) (-2.782565142e-06,4.819544201e-06) (-9.300181641e-06,1.610838712e-05) (-0.01463285707,0.0253448519) (2.616874833e-05,-4.532560167e-05) (-0.002336540875,0.00404700751) (0.001812179585,-0.003138787114) (-2.272899548e-06,3.936777498e-06) (-0.01319038986,0.02284642541) (3.996000794e-05,-6.921276402e-05) (-1.284453257e-08,2.224738301e-08) (0.0004618297644,-0.0007999126164) (-9.553607913e-07,1.65473343e-06) (4.636983056e-10,-8.031490246e-10) (5.524098285e-06,-9.568018896e-06) (-1.086310209e-07,1.881544475e-07) (-1.339854236e-05,2.320695611e-05) (-0.000365141319,0.0006324433165) (8.800808196e-10,-1.524344694e-09) (2.84893946e-05,-4.934507893e-05) (-0.0001517399338,0.0002628212748) (-1.277053227e-10,2.211921074e-10) (-2.208009141e-05,3.824384015e-05) (0.0002236392519,-0.0003873545469) (2.407892199e-08,-4.170591628e-08) (-1.190479427e-09,2.061970853e-09) (-3.154137007e-05,5.46312555e-05) (-9.036164812e-11,1.565109656e-10) (1.950696771e-06,-3.378705918e-06) (-8.471154588e-05,0.0001467247015) (-2.03076594e-11,3.517389786e-11) (5.730243228e-08,-9.925072411e-08) (-5.392190249e-06,9.339547476e-06) (-3.658433149e-10,6.336592089e-10) (-1.116528349e-06,1.933883829e-06) (8.868127353e-06,-1.536004714e-05) (-9.65577339e-11,1.67242901e-10) (1.416117621e-06,-2.452787669e-06) (-1.848146722e-05,3.201084023e-05) (-4.754985346e-11,8.235876209e-11) (1.592600314e-06,-2.75846466e-06) (-1.728333755e-05,2.993561877e-05) (-4.33680869e-19,-2.602085214e-18) (0.001421288335,-0.002461743608) (-0.02866009467,0.04964074012) (4.147852654e-05,-7.184291538e-05) (-0.008490374326,0.01470575971) (0,-2.710505431e-20) (-3.488083878e-05,6.041538497e-05) (0.002604149643,-0.004510519493) (-1.212696121e-06,2.100451296e-06) (-0.001949014841,0.003375792729) (2.879912021e-20,-1.863472484e-20) (-6.84819863e-07,1.186142797e-06) (1.665488592e-05,-2.88471086e-05) (-1.158052873e-08,2.005806414e-08) (-0.0002638178336,0.0004569458917) (0,2.117582368e-22) (-3.213881516e-09,5.566606076e-09) (1.951032757e-05,-3.379287863e-05) (-5.044923245e-09,8.738063381e-09) (1.02387175e-06,-1.773397892e-06) (1.6093626e-20,1.863472484e-20) (-1.126062466e-07,1.950397403e-07) (2.913830078e-10,-5.046901739e-10) (1.392033993e-05,-2.411073601e-05) (-0.0002210927651,0.0003829439024) (-4.235164736e-22,-2.541098842e-21) (-6.274119749e-07,1.086709418e-06) (1.575244907e-09,-2.728404213e-09) (-2.951896633e-05,5.112834946e-05) (0.0001121274987,-0.0001942105247) (-3.811648263e-21,5.082197684e-21) (9.099122566e-07,-1.576014259e-06) (-6.783673963e-09,1.174966797e-08) (-4.63062193e-05,8.020472453e-05) (9.03034606e-05,-0.0001564101819) (2.752857079e-21,-2.329340605e-21) (6.916940092e-07,-1.198049167e-06) (-3.396487491e-09,5.882888901e-09) (-8.287775515e-06,1.435484827e-05) (-5.108477623e-05,8.848142792e-05) (-2.223461487e-21,2.329340605e-21) (5.895674323e-09,-1.021160747e-08) (-1.532991602e-11,2.655219342e-11) (2.033345566e-06,-3.521857829e-06) (-2.71197858e-05,4.697284689e-05) (6.352747104e-22,-1.270549421e-21) (2.929347052e-08,-5.073777927e-08) (-1.226739939e-10,2.124775902e-10) (-8.152622709e-06,1.412075675e-05) (1.185719849e-05,-2.053727021e-05) (-5.29395592e-23,1.058791184e-22) (2.366362762e-11,-4.098660533e-11) (2.030510961e-07,-3.51694815e-07) (-5.516550356e-10,9.554945499e-10) (-6.289741996e-06,1.08941527e-05) (-1.588186776e-22,-2.117582368e-22) (8.545604851e-08,-1.480142178e-07) (-2.306127229e-10,3.994329529e-10) (5.359197563e-06,-9.282402468e-06) (-1.792223291e-05,3.104221799e-05) (1.588186776e-22,-4.235164736e-22) (4.463913472e-08,-7.731724935e-08) (-1.130973968e-10,1.958904374e-10) (1.567605963e-06,-2.715173175e-06) (-8.255361831e-06,1.429870613e-05) -(-0.02616144742,0.04531295613) (-0.04013399248,0.06951411408) (-0.002798563663,0.004847254452) (0.004795750123,-0.008306482873) (0.001429388891,-0.002475774183) (-0.0006396043251,0.001107827188) (-0.0002747846405,0.0004759409585) (4.231850505e-05,-7.329780085e-05) (9.721999344e-05,-0.0001683899681) (-1.201980249e-05,2.08189086e-05) (-1.024812465e-05,1.775027258e-05) (-3.419704066e-06,5.923101189e-06) (5.830153065e-06,-1.009812133e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.2731656004,0) (0.01615280688,0) (-0.02892567571,0) (-0.00681892694,0) (0.00311081643,0) (-0.0001242414384,0) (9.142358452e-06,0) (0.0001499983368,0) (-0.0001504484689,0) (9.162783375e-05,0) (-7.145343949e-05,0) (6.119624794e-05,0) (-3.277313972e-05,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.2695462447,0) (0.02324389201,0) (-0.03424272561,0) (-0.004333899483,0) (0.002291534039,0) (4.332848919e-05,0) (0.0001066902242,0) (-2.294053818e-05,0) (1.892984583e-05,0) (-3.739677434e-05,0) (2.322309841e-05,0) (-2.861059199e-06,0) (6.880804962e-06,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.1208306479,0) (-0.009094799051,0) (-0.002843835608,0) (4.385357727e-05,0) (0.000101455379,0) (-2.497568383e-05,0) (2.882303202e-05,0) (4.591201175e-06,0) (1.25522063e-05,0) (2.574477926e-05,0) (9.479225358e-06,0) (3.178405029e-06,0) (8.85371498e-06,0) (1.738623898e-10,0) (-0.03001102387,0) (0.1997440824,0) (-0.0001221715915,0) (-1.474070406e-10,0) (-0.02386352647,0) (-3.161081699e-06,0) (8.892664166e-13,0) (-0.0003782332269,0) (5.069147332e-07,0) (1.658455888e-13,0) (1.114472307e-05,0) (-1.500172006e-14,0) (-4.573358943e-07,0) (5.007857078e-05,0) (2.271380542e-06,0) (1.920933975e-13,0) (-1.440347086e-05,0) (3.522406586e-14,0) (-3.493952407e-06,0) (4.251167502e-05,0) (1.184301307e-14,0) (8.749326325e-07,0) (-6.649639108e-06,0) (-7.916366537e-15,0) (-3.478571729e-06,0) (4.038721491e-05,0) (5.133587681e-14,0) (-1.83560613e-06,0) (3.443235877e-05,0) (6.48529231e-07,0) (4.700311397e-15,0) (3.713046695e-06,0) (-8.486490438e-15,0) (-1.351843834e-06,0) (9.719683219e-06,0) (-1.014688338e-14,0) (-1.550010209e-06,0) (1.674276403e-05,0) (-1.734723476e-18,0) (-0.000377473387,0) (-9.424695399e-12,0) (-0.008719428334,0) (0.06301289739,0) (-4.33680869e-19,0) (4.987671827e-06,0) (-0.00143187811,0) (-4.141268852e-10,0) (-0.005892254741,0) (1.694065895e-21,0) (1.859842766e-07,0) (4.229671091e-07,0) (-6.138141033e-13,0) (-6.644558929e-05,0) (8.470329473e-22,0) (-2.859798928e-08,0) (-8.511178364e-06,0) (1.891527865e-12,0) (-1.727510638e-05,0) (-8.470329473e-22,0) (3.662671398e-07,0) (6.488075772e-07,0) (-3.437640454e-13,0) (-2.522670586e-05,0) (0,0) (5.164395866e-08,0) (2.409182211e-13,0) (-3.633301909e-07,0) (1.293020884e-05,0) (1.058791184e-22,0) (-2.328816091e-08,0) (-6.937242073e-14,0) (4.52940866e-06,0) (-8.289612776e-06,0) (0,0) (-3.139926191e-09,0) (-5.790193243e-15,0) (-4.039157833e-07,0) (1.915478012e-06,0) (-8.160659869e-10,0) (8.470329473e-22,0) (-1.266989765e-15,0) (-9.077704595e-06,0) (2.704664962e-05,0) (0,0) (1.483552381e-08,0) (5.416556846e-14,0) (-5.200987241e-06,0) (1.074630952e-05,0) (0,0) (1.08671901e-08,0) (-1.266292565e-07,0) (-3.289808164e-14,0) (-9.136562887e-07,0) (-1.278080324e-08,0) (-4.235164736e-22,0) (-2.091688994e-14,0) (-5.329587217e-06,0) (9.978394523e-06,0) (6.352747104e-22,0) (-2.480045938e-08,0) (-3.21468247e-14,0) (6.229744764e-07,0) (4.252964659e-06,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (1.333601076e-05,0) (-0.003680518671,0) (0.01171062439,0) (0.004572524643,0) (-0.001931974151,0) (1.016225988e-05,0) (-0.003695330387,0) (0.003163975381,0) (-1.380679875e-06,0) (-0.002791090092,0) (0.002119938484,0) (-1.702859645e-06,0) (0.001336173644,0) (-0.001159269776,0) (4.948719016e-07,0) (5.602991138e-05,0) (-5.170347486e-05,0) (1.165106662e-08,0) (0.0004402708215,0) (-0.0003880446353,0) (1.452039402e-07,0) (-0.0002896023254,0) (0.0002398595806,0) (-1.282564785e-07,0) (0.0001483925852,0) (-0.0001273107664,0) (5.926285014e-08,0) (-7.692981325e-05,0) (6.523609042e-05,0) (-3.032478854e-08,0) (4.206025406e-05,0) (-3.160521265e-05,0) (3.109924057e-08,0) (-1.970181647e-05,0) (1.391253042e-05,0) (-1.452397306e-08,0) (7.57314583e-06,0) (-4.370287337e-06,0) (1.070626807e-08,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.004214043356,0) (0.006158998385,0) (0.0001312011809,0) (-0.0007825700286,0) (-0.000160366703,0) (0.0001179069761,0) (2.941101487e-05,0) (-1.215575976e-05,0) (-1.292825713e-05,0) (3.591247411e-06,0) (1.211948785e-06,0) (2.186819431e-07,0) (-9.353687809e-07,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.04520166927,0) (0.04251668573,0) (-0.0009345582901,0) (-0.0001451268835,0) (0.0002799358963,0) (0.0005029806326,0) (-0.0003063111856,0) (-7.350246924e-05,0) (0.0001538232273,0) (3.114230238e-05,0) (-2.423650254e-05,0) (1.916106456e-05,0) (2.552626129e-05,0) (1.454931824e-06,0) (-0.003157854218,0) (0.007512458075,0) (0.0005195851016,0) (-1.088795504e-06,0) (0.03421108654,0) (-7.146290097e-06,0) (-1.177097021e-08,0) (-0.001457959397,0) (-6.924319911e-07,0) (7.086881675e-10,0) (-1.038967993e-05,0) (9.381966906e-10,0) (-1.140640338e-05,0) (0.001087813846,0) (-1.904659493e-05,0) (-3.587190187e-09,0) (0.0001295991408,0) (1.20807976e-09,0) (5.088937078e-05,0) (-0.0006397323042,0) (9.728329649e-10,0) (-2.632356776e-05,0) (0.0001948452291,0) (1.377274291e-10,0) (-1.900743854e-05,0) (0.0002168844333,0) (1.768045232e-10,0) (1.738073434e-06,0) (-3.331910854e-05,0) (-2.35095165e-06,0) (-4.003305574e-11,0) (-1.444095283e-05,0) (1.856004633e-10,0) (-8.44366819e-06,0) (5.955031546e-05,0) (1.173764161e-10,0) (-3.04711323e-06,0) (3.220324779e-05,0) (-7.589415207e-19,0) (9.495322441e-05,0) (7.430118958e-08,0) (-0.00369666856,0) (0.02112509155,0) (6.505213035e-19,0) (6.333326623e-05,0) (0.001467685891,0) (-1.522189737e-06,0) (0.003983623004,0) (2.710505431e-20,0) (-1.128629076e-06,0) (1.486140405e-06,0) (-1.732577337e-08,0) (0.0006790959101,0) (8.470329473e-22,0) (-9.281519799e-09,0) (-5.628658706e-06,0) (-6.662351652e-09,0) (-1.747322974e-05,0) (4.065758147e-20,0) (-4.549907229e-06,0) (-1.145926933e-05,0) (-2.539534721e-08,0) (0.0005202223217,0) (-6.776263578e-21,0) (-6.099495322e-07,0) (1.186146372e-08,0) (1.038789438e-05,0) (-0.0002534353773,0) (0,0) (-5.02811008e-07,0) (4.132508469e-09,0) (0.000156366619,0) (-0.0002955184562,0) (0,0) (-1.679232679e-07,0) (1.383585823e-09,0) (-3.776354522e-05,0) (0.0001676407959,0) (-8.088281908e-10,0) (1.694065895e-21,0) (1.092177589e-11,0) (-1.716212179e-05,0) (5.082791124e-05,0) (8.470329473e-22,0) (-3.774756953e-08,0) (5.146970487e-10,0) (2.38628948e-05,0) (-5.030265065e-05,0) (4.235164736e-22,0) (-6.59283491e-08,0) (1.303346218e-06,0) (6.607505923e-10,0) (8.223005948e-06,0) (-3.476269999e-08,0) (0,0) (2.906841531e-10,0) (-2.422359532e-05,0) (4.450385645e-05,0) (0,0) (-7.6060703e-09,0) (1.822462067e-10,0) (6.185128518e-07,0) (3.673086727e-06,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (-1.352214984e-05,0) (-0.001516611742,0) (-0.1815201801,0) (0.001529805043,0) (-0.06184377689,0) (-1.018009989e-05,0) (0.0100894037,0) (0.002033057526,0) (1.382974519e-06,0) (0.01420621429,0) (0.001104706844,0) (1.705669872e-06,0) (0.0001243303037,0) (-0.00416102366,0) (-4.957044252e-07,0) (-2.976561439e-05,0) (-6.894765397e-05,0) (-1.167054917e-08,0) (2.109279228e-05,0) (-0.001212800252,0) (-1.454478514e-07,0) (0.0009931054366,0) (0.0001417158764,0) (1.284692074e-07,0) (1.74742353e-05,0) (-0.0004985374759,0) (-5.936260932e-08,0) (0.0002260156754,0) (4.076642451e-05,0) (3.037514902e-08,0) (1.036691613e-05,0) (-0.0002489763116,0) (-3.115196758e-08,0) (0.0001252345373,0) (6.832339961e-06,0) (1.454786252e-08,0) (2.35247391e-06,0) (-7.547512391e-05,0) (-1.072474815e-08,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.09590197642,0) (-0.1401646988,0) (-0.002985838421,0) (0.01780950172,0) (0.003649578912,0) (-0.002683292763,0) (-0.0006693273457,0) (0.0002766372549,0) (0.0002942175258,0) (-8.172856693e-05,0) (-2.758117892e-05,0) (-4.976700232e-06,0) (2.128685141e-05,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.01470014553,0) (0.01382695546,0) (-0.0003039299897,0) (-4.71970691e-05,0) (9.103863821e-05,0) (0.000163575563,0) (-9.961621062e-05,0) (-2.390391798e-05,0) (5.002522838e-05,0) (1.012786441e-05,0) (-7.88201233e-06,0) (6.23141672e-06,0) (8.301457933e-06,0) (-1.457628927e-06,0) (-0.04559196335,0) (-0.02299600676,0) (0.008358714646,0) (1.091418551e-06,0) (0.01108001222,0) (0.0001174809611,0) (1.180077153e-08,0) (-0.0004752201501,0) (-5.445124097e-06,0) (-7.103876161e-10,0) (-3.157105631e-06,0) (-9.404551985e-10,0) (-3.878017573e-05,0) (0.0003533999622,0) (2.141472362e-05,0) (3.593291973e-09,0) (7.639707444e-05,0) (-1.211070338e-09,0) (-2.325109286e-05,0) (-0.0002136717171,0) (-9.75273999e-10,0) (-2.050776465e-05,0) (2.993656717e-05,0) (-1.380484768e-10,0) (-1.387528677e-05,0) (6.936217859e-05,0) (-1.771963067e-10,0) (2.805955058e-08,0) (-1.784210166e-05,0) (8.180342229e-07,0) (4.010017397e-11,0) (-1.893631504e-05,0) (-1.860366417e-10,0) (-5.633722485e-06,0) (1.251832324e-05,0) (-1.176319828e-10,0) (-2.00923065e-06,0) (4.53804567e-06,0) (1.734723476e-18,0) (0.005994823377,0) (-7.444950055e-08,0) (-0.003435817589,0) (-0.1102116782,0) (-1.084202172e-18,0) (0.001606299893,0) (0.01230377284,0) (1.525748086e-06,0) (0.001045366821,0) (-1.355252716e-20,0) (1.798364778e-05,0) (0.0001386402286,0) (1.737100717e-08,0) (0.0002209886563,0) (-1.694065895e-21,0) (4.610365646e-07,0) (6.817192153e-05,0) (6.679547034e-09,0) (-7.354140116e-06,0) (0,0) (6.988489398e-05,0) (4.1665471e-05,0) (2.546341754e-08,0) (0.0001696441168,0) (1.016439537e-20,0) (9.362266021e-06,0) (-1.188796278e-08,0) (8.158151922e-05,0) (-8.232622071e-05,0) (6.776263578e-21,0) (7.420259143e-06,0) (-4.143616472e-09,0) (-3.256963719e-05,0) (-0.000166117142,0) (3.388131789e-21,0) (2.488480358e-06,0) (-1.386998724e-09,0) (-6.937063544e-05,0) (5.261433427e-05,0) (1.696781277e-08,0) (0,0) (-1.09460803e-11,0) (-7.964340301e-06,0) (1.633611477e-05,0) (1.058791184e-21,0) (7.199518179e-07,0) (-5.160270666e-10,0) (3.653434698e-06,0) (-3.163718351e-05,0) (4.235164736e-22,0) (1.047169952e-06,0) (6.944596701e-07,0) (-6.615208134e-10,0) (-2.354858994e-05,0) (5.29902449e-07,0) (-2.117582368e-22,0) (-2.91384935e-10,0) (-1.338045233e-05,0) (4.545817498e-06,0) (-6.352747104e-22,0) (3.968631531e-07,0) (-1.826512278e-10,0) (3.288624992e-07,0) (-1.102174207e-05,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (1.792468198e-05,0) (0.0015942032,0) (-0.1456492277,0) (-0.002288970907,0) (-0.04519188989,0) (1.349672706e-05,0) (0.01039062405,0) (-0.0008488810399,0) (-1.833908765e-06,0) (0.01281429128,0) (-0.0007629577502,0) (-2.261845447e-06,0) (-0.0009122039538,0) (-0.002265202916,0) (6.573132114e-07,0) (-6.462997956e-05,0) (-1.306935015e-05,0) (1.547562452e-08,0) (-0.0003155601183,0) (-0.000622467995,0) (1.928670741e-07,0) (0.0009669418372,0) (-7.371168797e-05,0) (-1.703585845e-07,0) (-9.854256778e-05,0) (-0.0002801178774,0) (7.871574193e-08,0) (0.0002283587626,0) (-1.837131481e-05,0) (-4.027933956e-08,0) (-2.384812022e-05,0) (-0.0001639726644,0) (4.130690869e-08,0) (0.000109272375,0) (-5.321956378e-06,0) (-1.92916415e-08,0) (-3.927606724e-06,0) (-5.36331914e-05,0) (1.42199673e-08,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.07546254497,0) (-0.1102916257,0) (-0.00234947156,0) (0.01401379174,0) (0.002871750125,0) (-0.002111406963,0) (-0.0005266747028,0) (0.0002176780091,0) (0.0002315114256,0) (-6.430989108e-05,0) (-2.170284735e-05,0) (-3.916024248e-06,0) (1.675001957e-05,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.02292890543,0) (-0.02156692623,0) (0.0004740621088,0) (7.361676329e-05,0) (-0.0001419997048,0) (-0.0002551409173,0) (0.0001553787796,0) (3.72847108e-05,0) (-7.802805272e-05,0) (-1.579718001e-05,0) (1.229415824e-05,0) (-9.719602051e-06,0) (-1.29483986e-05,0) (1.933695861e-06,0) (-0.03199064087,0) (-0.02299221789,0) (0.005912559672,0) (-1.447272914e-06,0) (-0.01738794072,0) (9.397260481e-05,0) (-1.564861596e-08,0) (0.0007387482168,0) (-3.585040966e-06,0) (9.420694424e-10,0) (5.436834395e-06,0) (1.247478056e-09,0) (-2.065379919e-05,0) (-0.0005520810976,0) (3.049198037e-05,0) (-4.763408986e-09,0) (-3.993073118e-05,0) (1.606572917e-09,0) (-5.581744661e-05,0) (0.0003202683844,0) (1.293499994e-09,0) (4.343975792e-06,0) (-0.0001240359772,0) (1.831224303e-10,0) (3.841493541e-06,0) (-0.0001108992143,0) (2.350780239e-10,0) (-1.286536979e-06,0) (1.161940272e-05,0) (2.387046427e-06,0) (-5.316445846e-11,0) (-3.410339354e-06,0) (2.467585767e-10,0) (2.105845968e-06,0) (-3.536965701e-05,0) (1.560307562e-10,0) (7.77950799e-07,0) (-2.080929823e-05,0) (5.204170428e-18,0) (0.004449681879,0) (9.875566195e-08,0) (0.0001906725663,0) (-0.09897492918,0) (-2.168404345e-19,0) (0.001163767271,0) (0.008173532278,0) (-2.023388919e-06,0) (-0.002208672077,0) (-6.776263578e-21,0) (1.441241402e-05,0) (0.000103430604,0) (-2.303572953e-08,0) (-0.0003443707994,0) (-3.388131789e-21,0) (3.546892966e-07,0) (5.564768243e-05,0) (-8.856789814e-09,0) (7.598111631e-06,0) (0,0) (5.613041285e-05,0) (4.007349356e-05,0) (-3.375795271e-08,0) (-0.0002635377927,0) (0,0) (7.519930189e-06,0) (1.577459173e-08,0) (5.364558862e-05,0) (0.0001286262247,0) (0,0) (5.974666933e-06,0) (5.496789673e-09,0) (-0.0001421887402,0) (9.710076482e-05,0) (-3.388131789e-21,0) (2.003154677e-06,0) (1.839710283e-09,0) (-2.388494044e-05,0) (-8.647148753e-05,0) (1.340554525e-08,0) (0,0) (1.451967495e-11,0) (6.909246837e-06,0) (-2.592891019e-05,0) (4.235164736e-22,0) (5.713850495e-07,0) (6.845034665e-10,0) (-1.519996164e-05,0) (1.399723361e-05,0) (-8.470329473e-22,0) (8.393777059e-07,0) (-4.576572648e-07,0) (8.775775864e-10,0) (-2.393998219e-05,0) (4.258067386e-07,0) (1.270549421e-21,0) (3.864907411e-10,0) (8.138608507e-06,0) (-3.005827211e-05,0) (-4.235164736e-22,0) (3.050299829e-07,0) (2.42261127e-10,0) (-2.173739453e-07,0) (-1.107271747e-05,0) -(0.2370734683,0) (0.0006670533688,0) (0.004066218674,0) (0.0006820777545,0) (0.0005956356081,0) (8.044155541e-06,0) (9.655870575e-06,0) (6.831873609e-05,0) (4.382157398e-05,0) (1.591626787e-05,0) (1.652759785e-05,0) (1.94939596e-05,0) (1.491606603e-05,0) (3.877437899e-09,0) (0.000104543173,0) (0.3087228188,0) (0.0001062601308,0) (0.02189791074,0) (1.451237323e-09,0) (0.00101721631,0) (6.767884142e-05,0) (3.270019455e-11,0) (0.002703808895,0) (4.554381508e-05,0) (7.902103776e-11,0) (3.058225334e-05,0) (0.0002763177339,0) (1.071720204e-11,0) (1.677877475e-07,0) (1.554212663e-07,0) (1.046209416e-14,0) (9.935797639e-06,0) (6.792423503e-05,0) (2.685856042e-12,0) (0.0001254778854,0) (5.197168565e-06,0) (3.878416987e-12,0) (3.452071693e-06,0) (3.698293816e-05,0) (1.425830819e-12,0) (2.421919495e-05,0) (1.387963126e-06,0) (7.687789817e-13,0) (1.030262135e-06,0) (3.786694817e-05,0) (1.535265483e-12,0) (3.118113231e-05,0) (2.989431376e-07,0) (8.846582533e-13,0) (1.823523549e-07,0) (2.000685348e-05,0) (1.00557303e-12,0) (3.415236843e-18,0) (-4.33680869e-19,0) (0,0) (0.03787629397,0) (0.1290043371,0) (9.757819552e-19,0) (1.626303259e-19,0) (1.734723476e-18,0) (0.01166407464,0) (0.02777002614,0) (0,0) (-1.905824131e-21,0) (-6.776263578e-21,0) (0.0001520492622,0) (9.479976155e-05,0) (3.726944968e-20,0) (-1.016439537e-20,0) (0,0) (0.0005765989928,0) (0.002012299337,0) (3.30872245e-24,0) (-2.067951531e-24,0) (4.135903063e-25,0) (2.968303438e-07,0) (9.832055907e-08,0) (-1.058791184e-22,0) (3.97046694e-23,0) (-1.389663429e-22,0) (3.860134312e-07,0) (9.979758691e-06,0) (-1.694065895e-21,0) (4.235164736e-22,0) (-2.01170325e-21,0) (3.578750522e-05,0) (7.498366886e-05,0) (-2.488159283e-21,0) (5.29395592e-23,0) (8.470329473e-22,0) (1.02162398e-05,0) (6.854234909e-05,0) (-1.058791184e-22,0) (-9.264422861e-23,0) (0,0) (9.779609685e-07,0) (8.699365442e-06,0) (-2.117582368e-22,0) (-5.29395592e-23,0) (-1.32348898e-23,0) (4.056902711e-06,0) (8.419618364e-06,0) (0,0) (1.98523347e-23,0) (-1.032321404e-21,0) (5.202177913e-06,0) (1.997650936e-05,0) (5.29395592e-23,0) (-3.176373552e-22,0) (4.764560328e-22,0) (2.701400034e-06,0) (1.519803296e-05,0) (2.117582368e-22,0) (-3.30872245e-23,0) (4.566036981e-22,0) (2.43172997e-06,0) (8.192639034e-06,0) -(0.4945189387,0) (0.307421443,0) (0.1319654046,0) (0.03941143222,0) (0.01673841645,0) (0.005001509027,0) (0.002982067969,0) (0.0008721944031,0) (0.0006739086684,0) (0.0001662005827,0) (0.000162668234,0) (2.726728507e-05,0) (3.849627959e-05,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.09496554104,0) (0.02219350733,0) (0.0009466734748,0) (2.321681126e-06,0) (4.129794632e-05,0) (0.0001989658342,0) (0.0002383724452,0) (0.0001692599573,0) (0.0001085254047,0) (7.176902103e-05,0) (5.852636604e-05,0) (5.506831979e-05,0) (4.747128362e-05,0) (1.073506527e-10,0) (0.04541795873,0) (0.1725741146,0) (0.01007922853,0) (4.289735641e-10,0) (0.01096928929,0) (5.737094057e-05,0) (1.333779821e-12,0) (6.161287463e-05,0) (4.444852922e-08,0) (1.969247442e-15,0) (4.145795013e-08,0) (1.730393003e-13,0) (0.0001003702013,0) (0.0001160749593,0) (5.79959204e-05,0) (1.968726167e-12,0) (0.000456033966,0) (4.122042944e-13,0) (0.0001878179395,0) (0.0003229003659,0) (1.646882568e-13,0) (1.410595769e-05,0) (0.0002999456081,0) (5.102445159e-14,0) (6.696096688e-05,0) (0.0001183515028,0) (8.984760364e-14,0) (5.83628165e-07,0) (0.0001427988773,0) (2.344464954e-06,0) (1.402501907e-15,0) (0.0001207276869,0) (4.655188215e-14,0) (6.221369806e-06,0) (0.0001060713667,0) (3.292207679e-14,0) (1.583941041e-06,0) (9.971418463e-05,0) (-4.33680869e-18,0) (0.009429544937,0) (1.5840107e-13,0) (0.0005109923468,0) (0.194759507,0) (2.710505431e-19,0) (0.002555581156,0) (0.005067391794,0) (1.942355678e-10,0) (0.0004409201741,0) (-3.388131789e-21,0) (2.942625463e-05,0) (5.654394068e-05,0) (2.071868796e-12,0) (8.037295849e-06,0) (-1.058791184e-22,0) (7.348914505e-07,0) (3.230829218e-06,0) (6.964797294e-14,0) (1.567816421e-07,0) (-1.355252716e-20,0) (0.000113937913,0) (0.0001851425888,0) (2.781457311e-11,0) (2.999024015e-05,0) (-6.776263578e-21,0) (1.52722285e-05,0) (1.871511688e-11,0) (0.0005040683449,0) (5.02024039e-05,0) (-1.016439537e-20,0) (1.211469523e-05,0) (6.023879719e-13,0) (0.0001599166819,0) (0.0002441829949,0) (-1.355252716e-20,0) (4.063106018e-06,0) (2.623064153e-13,0) (0.000205223284,0) (3.30332097e-05,0) (2.733646717e-08,0) (8.470329473e-22,0) (4.552654708e-15,0) (0.000111644296,0) (2.711731612e-05,0) (-6.776263578e-21,0) (1.172473665e-06,0) (1.533275629e-13,0) (1.278860789e-05,0) (9.776751272e-05,0) (2.541098842e-21,0) (1.709717327e-06,0) (1.530464362e-07,0) (1.424655546e-13,0) (0.0001104626914,0) (8.6197615e-07,0) (-2.964615315e-21,0) (6.739760524e-14,0) (2.211632354e-05,0) (7.515207224e-05,0) (4.65868121e-21,0) (6.315078598e-07,0) (3.652790367e-14,0) (1.2355385e-07,0) (8.266795114e-05,0) -(-0.12111549,0.2097781823) (-0.0005607657229,0.0009712747232) (-0.002000518664,0.003464999967) (-0.0004075616168,0.0007059174275) (-0.0002729746153,0.0004728059028) (-1.278868443e-06,2.21506512e-06) (-6.037625137e-06,1.045747349e-05) (-3.526857492e-05,6.108696368e-05) (-1.932297171e-05,3.346836876e-05) (-7.415213061e-06,1.284352577e-05) (-8.572210917e-06,1.484750484e-05) (-9.354879707e-06,1.620312695e-05) (-6.899174245e-06,1.194972032e-05) (-8.714321431e-08,1.509364747e-07) (-0.002819411596,0.004883364132) (0.01502942923,-0.02603173503) (0.0008700924344,-0.001507044304) (0.0001228246921,-0.0002127386071) (7.320806355e-10,-1.268000856e-09) (0.0001192873191,-0.0002066116974) (-8.929992509e-05,0.0001546720074) (1.373510759e-11,-2.378990418e-11) (0.000299626932,-0.0005189690695) (-0.0001838490925,0.0003184359691) (5.231009427e-11,-9.060374109e-11) (3.300273741e-05,-5.716241798e-05) (-2.446401255e-05,4.237291269e-05) (4.22210803e-12,-7.312905618e-12) (2.383089031e-07,-4.12763128e-07) (-2.03263699e-07,3.52063054e-07) (1.663957861e-14,-2.882059558e-14) (1.598075748e-05,-2.767948389e-05) (-1.228323086e-05,2.127517993e-05) (1.819532646e-12,-3.151522988e-12) (1.701272271e-05,-2.946690011e-05) (-1.203371311e-05,2.08430025e-05) (2.268351532e-12,-3.928900099e-12) (4.63149072e-06,-8.021977241e-06) (-3.344313848e-06,5.792521501e-06) (6.401746961e-13,-1.1088151e-12) (3.782440103e-06,-6.551378435e-06) (-2.784982798e-06,4.823731704e-06) (4.566111217e-13,-7.908736608e-13) (3.233764025e-06,-5.601043591e-06) (-1.652550646e-06,2.862301681e-06) (8.418017027e-13,-1.458043318e-12) (2.598776547e-06,-4.501213017e-06) (-1.422702445e-06,2.464192919e-06) (5.279271586e-13,-9.143966619e-13) (8.817371997e-07,-1.527213629e-06) (-1.45942524e-07,2.527798665e-07) (4.485466413e-13,-7.769055725e-13) (2.710505431e-18,-1.95156391e-18) (-8.67361738e-19,0) (0,0) (-0.02060375576,0.0356867518) (0.06045012766,-0.1047026924) (0,0) (2.168404345e-19,0) (2.168404345e-19,-8.67361738e-19) (-0.005297526462,0.009175584986) (0.01558567133,-0.02699517461) (3.388131789e-21,-6.776263578e-21) (6.776263578e-21,0) (-2.541098842e-21,1.694065895e-21) (-2.702014961e-05,4.680027195e-05) (0.0001359807469,-0.0002355255625) (2.710505431e-20,-2.710505431e-20) (6.776263578e-21,-1.355252716e-20) (3.388131789e-21,0) (-0.0003173531288,0.0005496717431) (0.0009319561715,-0.001614195439) (-1.32348898e-23,-2.64697796e-23) (-1.98523347e-23,6.6174449e-23) (-6.6174449e-24,0) (1.10762366e-08,-1.918460455e-08) (-6.716194071e-07,1.163278936e-06) (0,0) (-1.32348898e-23,5.29395592e-23) (-1.32348898e-22,-1.32348898e-22) (-4.754822232e-07,8.235593687e-07) (2.065183874e-06,-3.577003397e-06) (0,0) (3.176373552e-22,-2.329340605e-21) (1.058791184e-21,-6.776263578e-21) (-1.517604603e-05,2.628568279e-05) (4.50724991e-05,-7.806785847e-05) (-1.588186776e-21,4.341043855e-21) (-2.64697796e-22,3.176373552e-22) (-4.235164736e-22,8.470329473e-22) (-7.538565652e-06,1.305717873e-05) (2.367733081e-05,-4.101033996e-05) (1.98523347e-23,-1.32348898e-23) (9.264422861e-23,1.852884572e-22) (2.64697796e-23,5.29395592e-23) (-8.103564901e-07,1.403578613e-06) (2.67611154e-06,-4.635161153e-06) (-1.588186776e-22,0) (-7.940933881e-23,5.29395592e-23) (-2.64697796e-23,5.29395592e-23) (-1.711417653e-06,2.964262327e-06) (5.087485249e-06,-8.811782933e-06) (0,-2.117582368e-22) (-3.97046694e-23,0) (-2.117582368e-22,5.29395592e-22) (-2.996110319e-06,5.189415297e-06) (8.841353425e-06,-1.531367334e-05) (-1.058791184e-22,0) (2.117582368e-22,2.117582368e-22) (-7.940933881e-23,5.823351512e-22) (-1.848699751e-06,3.202041897e-06) (5.660846895e-06,-9.804874436e-06) (0,0) (4.135903063e-23,-2.249931266e-22) (2.316105715e-23,5.29395592e-23) (-1.315863121e-06,2.279141781e-06) (3.859226647e-06,-6.68437663e-06) -(-0.1083538861,0.187674436) (0.04130000015,-0.07153369861) (-0.005588563056,0.009679675154) (0.0001512454779,-0.0002619648521) (-0.0004157109044,0.0007200324077) (0.0004987808677,-0.0008639138046) (-0.0004215574793,0.0007301589725) (0.0001921116781,-0.0003327471872) (-0.000135218537,0.0002342053762) (5.460781335e-05,-9.458350721e-05) (-4.878621887e-05,8.45002098e-05) (1.937500693e-05,-3.35584964e-05) (-2.137444623e-05,3.702162685e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.1083538861,0.187674436) (0.04130000015,-0.07153369861) (-0.005588563056,0.009679675154) (0.0001512454779,-0.0002619648521) (-0.0004157109044,0.0007200324077) (0.0004987808677,-0.0008639138046) (-0.0004215574793,0.0007301589725) (0.0001921116781,-0.0003327471872) (-0.000135218537,0.0002342053762) (5.460781335e-05,-9.458350721e-05) (-4.878621887e-05,8.45002098e-05) (1.937500693e-05,-3.35584964e-05) (-2.137444623e-05,3.702162685e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.1395541466,-0.2417148723) (-0.01357903408,-0.02351957694) (0.01423099906,0.02464881341) (0.004074510377,0.007057258989) (-0.001425660096,-0.00246931572) (1.975203663e-05,3.4211531e-05) (-5.71653615e-06,-9.901331055e-06) (-7.743450601e-05,-0.0001341204987) (6.633973277e-05,0.0001149037877) (-4.268839373e-05,-7.393846683e-05) (3.706007127e-05,6.418992637e-05) (-2.936722707e-05,-5.086552936e-05) (1.515866188e-05,2.625557255e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.05906019127,-0.102295252) (0.003122660326,0.005408606339) (0.001450134843,0.002511707226) (-1.663179087e-05,-2.88071068e-05) (-5.691193611e-05,-9.85743649e-05) (4.320980191e-06,7.484157229e-06) (-1.508217198e-05,-2.612308816e-05) (-5.052939195e-06,-8.751947413e-06) (-3.798238809e-06,-6.578742597e-06) (-1.228729791e-05,-2.128222427e-05) (-6.964894952e-06,-1.206355193e-05) (-2.032950537e-06,-3.521173619e-06) (-3.820457386e-06,-6.6172263e-06) (0.005175592884,0.008964389834) (5.304917144e-09,9.188386024e-09) (-0.09224965312,-0.1597810862) (-0.0001541485888,-0.0002669931877) (1.707308578e-10,2.957145201e-10) (0.01114537494,0.01930435567) (2.347871873e-06,4.066633374e-06) (-7.561107841e-13,-1.309622278e-12) (0.000246935527,0.000427704879) (-1.387241408e-07,-2.402772602e-07) (-6.941934625e-14,-1.202378346e-13) (-5.376045784e-06,-9.311584441e-06) (-7.712042098e-13,-1.335764866e-12) (8.292123503e-08,1.436237921e-07) (-4.795061678e-05,-8.305290452e-05) (-4.456588466e-15,-7.719037506e-15) (-4.108193539e-07,-7.115599937e-07) (3.307487654e-06,5.728736662e-06) (2.981603408e-15,5.164287035e-15) (1.947461171e-06,3.373101694e-06) (-2.748230891e-05,-4.760075535e-05) (-1.069619489e-08,-1.8526353e-08) (7.219598505e-15,1.25047114e-14) (3.005871758e-06,5.206322606e-06) (-2.336955431e-15,-4.047727356e-15) (8.74177065e-07,1.514119091e-06) (-1.502558212e-05,-2.602507165e-05) (1.117846321e-16,1.936173322e-16) (2.783083705e-06,4.820442378e-06) (-2.210803363e-05,-3.82922375e-05) (1.377538078e-13,2.385965939e-13) (4.150521297e-07,7.188913765e-07) (-5.857532454e-06,-1.014554382e-05) (-2.638813198e-15,-4.570558867e-15) (4.927792809e-07,8.535187514e-07) (-3.782800919e-06,-6.552003387e-06) (-2.398416777e-15,-4.154178646e-15) (1.233592183e-06,2.136644337e-06) (-8.538607507e-06,-1.478930203e-05) (-7.047314121e-19,1.19262239e-18) (0.0007200330219,0.001247133777) (-0.0001878309588,-0.0003253327639) (3.990106786e-09,6.911067683e-09) (-0.03195096622,-0.05534069685) (5.895349313e-19,4.065758147e-20) (-2.330564706e-05,-4.036656481e-05) (0.0007153114482,0.001238955771) (2.662361388e-10,4.611345187e-10) (0.003245375324,0.005621154951) (5.29395592e-23,-1.217609862e-21) (6.095239344e-10,1.055726423e-09) (-3.44128403e-08,-5.960478783e-08) (7.464270409e-14,1.292849562e-13) (1.059566382e-05,1.835222807e-05) (1.694065895e-21,2.541098842e-21) (-1.888476037e-09,-3.270936446e-09) (8.862191923e-06,1.534976668e-05) (-1.368859682e-12,-2.370934516e-12) (6.318959677e-06,1.094475921e-05) (-2.64697796e-22,-8.999725065e-22) (7.446402637e-11,1.28975477e-10) (-1.079534703e-15,-1.869808926e-15) (-7.090290898e-08,-1.228074408e-07) (4.706497865e-06,8.151893428e-06) (-1.058791184e-22,-1.588186776e-22) (1.33340407e-08,2.309523596e-08) (-4.125560409e-14,-7.14568029e-14) (6.800887061e-06,1.177948193e-05) (-1.445470366e-05,-2.503628115e-05) (-3.97046694e-23,3.441071348e-22) (1.436655647e-09,2.488360574e-09) (2.776996633e-14,4.809899276e-14) (3.119865907e-07,5.403766263e-07) (-1.632104712e-06,-2.826888284e-06) (-2.117582368e-22,-2.382280164e-22) (-4.064786482e-09,-7.040416709e-09) (2.25289788e-14,3.902133595e-14) (-3.398791457e-07,-5.886879487e-07) (1.948638818e-06,3.375141438e-06) (1.720535674e-22,1.244079641e-21) (2.900715708e-10,5.024186985e-10) (-8.107039159e-16,-1.40417988e-15) (1.611039988e-06,2.790403113e-06) (-1.070561973e-05,-1.854267731e-05) (-6.6174449e-23,5.161607022e-22) (6.102102725e-09,1.056915195e-08) (1.654781332e-14,2.866165417e-14) (4.947043268e-06,8.568530288e-06) (-1.021949476e-05,-1.770068415e-05) (1.654361225e-24,4.652890946e-25) (4.489881054e-12,7.776702106e-12) (-2.191745498e-09,-3.79621456e-09) (-9.634049138e-17,-1.668666272e-16) (-1.590204424e-08,-2.754314857e-08) (-6.6174449e-24,-4.63221143e-23) (3.879285887e-09,6.719120253e-09) (-8.601079543e-15,-1.489750653e-14) (1.863843086e-06,3.228270922e-06) (-3.791159118e-06,-6.566480212e-06) (-7.940933881e-23,1.720535674e-22) (8.070512659e-09,1.397853797e-08) (-9.55011458e-15,-1.654128355e-14) (1.512581421e-06,2.619867872e-06) (-4.456953971e-06,-7.719670724e-06) -(-0.1378654839,-0.2387900227) (-0.0169245535,-0.02931418655) (0.0167882116,0.02907803547) (0.002856832998,0.004948179901) (-0.001021264037,-0.001768881199) (-6.261071557e-05,-0.0001084449405) (-5.097302548e-05,-8.828786994e-05) (5.211057454e-06,9.025816272e-06) (-1.563957284e-05,-2.708853477e-05) (1.958875962e-05,3.392872691e-05) (-7.901662008e-06,-1.368608006e-05) (1.11827671e-06,1.936912078e-06) (-3.986478569e-06,-6.904783425e-06) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (-0.0002997192672,-0.0005191289988) (0.09925944203,0.1719223967) (0.0005701036329,0.0009874484577) (0.03744131566,0.06485026102) (-1.08363822e-05,-1.876916455e-05) (5.12637978e-06,8.879150237e-06) (-0.0004333454456,-0.000750576329) (-0.004174757703,-0.007230892451) (-5.79928862e-07,-1.004466254e-06) (-0.0003092991382,-0.0005357218221) (-0.008557666191,-0.01482231264) (-1.127253589e-06,-1.952460489e-06) (0.001441927363,0.002497491453) (0.0001026368809,0.0001777722925) (1.949578464e-07,3.376768953e-07) (7.957927152e-05,0.0001378353415) (6.761905753e-05,0.0001171196432) (1.853059582e-08,3.209593345e-08) (0.0007081325001,0.001226521469) (7.017291895e-05,0.0001215430609) (9.836838076e-08,1.703790333e-07) (-3.926527806e-05,-6.800945657e-05) (-0.000555379596,-0.0009619456778) (-7.501276439e-08,-1.299259191e-07) (0.0001990917172,0.0003448369695) (1.15125293e-05,1.994028567e-05) (2.660804959e-08,4.608649378e-08) (-1.201453687e-05,-2.080978829e-05) (-0.0001308978504,-0.0002267217275) (-1.801120482e-08,-3.119632186e-08) (0.0001320177961,0.0002286615304) (1.379282385e-06,2.388987168e-06) (1.705203038e-08,2.953498298e-08) (-1.642038463e-06,-2.844094046e-06) (-6.621122398e-05,-0.000114681204) (-8.667301526e-09,-1.501220661e-08) (3.661879991e-05,6.342562196e-05) (3.18796139e-08,5.521711101e-08) (4.775645764e-09,8.271661102e-09) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.000923337689,-0.00159926779) (0.0008274199475,0.001433133388) (-5.55619918e-06,-9.623619276e-06) (-3.00319403e-06,-5.201684645e-06) (3.982825217e-06,6.898455633e-06) (1.175840002e-05,2.036614625e-05) (-4.157662878e-06,-7.201283346e-06) (-2.677457455e-06,-4.637492347e-06) (2.594031055e-06,4.492993584e-06) (1.179960774e-06,2.043752012e-06) (-3.634784569e-07,-6.295631548e-07) (1.553863596e-07,2.691370696e-07) (5.193486208e-07,8.995381981e-07) (0.03245066753,0.05620620491) (1.973358379e-05,3.417956974e-05) (0.003074044889,0.005324401932) (-0.003612640396,-0.006257276715) (-1.712840758e-06,-2.966727218e-06) (0.0006726502744,0.001165064451) (-7.897721341e-05,-0.0001367925463) (-9.66799994e-09,-1.67454671e-08) (-2.492556751e-05,-4.317234933e-05) (2.421005667e-06,4.19330482e-06) (3.489741388e-10,6.044409389e-10) (-3.762967448e-07,-6.517650808e-07) (-8.094592238e-08,-1.402024502e-07) (3.136037117e-05,5.431775621e-05) (2.045657133e-05,3.54318209e-05) (6.618798767e-10,1.146409575e-09) (-2.146830323e-05,-3.718419194e-05) (8.675245077e-07,1.502596524e-06) (-9.606141336e-11,-1.663832486e-10) (1.456791745e-05,2.523237319e-05) (-1.076291122e-05,-1.864190907e-05) (1.04629614e-07,1.812238073e-07) (-8.956602146e-10,-1.551328998e-09) (2.547207111e-05,4.411892133e-05) (-6.797765478e-11,-1.177407519e-10) (6.283968979e-06,1.088415354e-05) (5.35510915e-06,9.275321128e-06) (-1.527935823e-11,-2.646462476e-11) (1.016270017e-06,1.760231303e-06) (2.862275528e-06,4.95760664e-06) (-2.747461897e-10,-4.758743597e-10) (7.443505779e-07,1.28925302e-06) (4.771932706e-06,8.265229897e-06) (-7.264500146e-11,-1.258248334e-10) (1.575517403e-06,2.728876191e-06) (4.761717681e-06,8.247536954e-06) (-3.577407697e-11,-6.196251891e-11) (1.541553266e-06,2.67004858e-06) (3.194233381e-06,5.532574508e-06) (0,1.734723476e-18) (-0.002729426434,-0.004727505259) (0.06324356095,0.1095410608) (3.126494954e-05,5.415248111e-05) (0.0002650767828,0.0004591264557) (5.421010862e-20,-3.252606517e-19) (0.0001065037686,0.0001844699384) (-0.006663150733,-0.01154091561) (-9.127041456e-07,-1.580849952e-06) (0.0002416297276,0.0004185149648) (-1.270549421e-21,-1.270549421e-21) (1.483669546e-06,2.569791035e-06) (-3.500462032e-05,-6.06297809e-05) (-8.719713196e-09,-1.510298628e-08) (1.471765147e-05,2.549172011e-05) (-1.270549421e-21,-2.964615315e-21) (6.08483442e-09,1.053924237e-08) (-3.835660981e-05,-6.643559699e-05) (-3.797649481e-09,-6.577721851e-09) (1.178686968e-06,2.041545716e-06) (-2.117582368e-22,-8.470329473e-22) (2.4179593e-07,4.188028358e-07) (2.191988206e-10,3.796634942e-10) (-2.364132934e-05,-4.094798358e-05) (1.230236002e-05,2.130831261e-05) (-8.470329473e-22,8.470329473e-22) (1.181594739e-06,2.046582122e-06) (1.185010832e-09,2.052498968e-09) (-4.056713351e-05,-7.026433636e-05) (-2.316881374e-05,-4.012956255e-05) (4.235164736e-22,8.470329473e-22) (-2.188570265e-06,-3.790714895e-06) (-5.101434888e-09,-8.835944417e-09) (6.486224796e-05,0.000112344709) (-2.66489559e-06,-4.61573456e-06) (-4.235164736e-22,4.235164736e-22) (-1.304105758e-06,-2.258777432e-06) (-2.554688277e-09,-4.424849894e-09) (3.739300532e-05,6.476658507e-05) (4.052238551e-06,7.018683054e-06) (1.058791184e-22,-1.058791184e-22) (-1.147182595e-08,-1.986978541e-08) (-1.153315372e-11,-1.997600821e-11) (4.290322277e-06,7.431056164e-06) (1.630475981e-06,2.824067239e-06) (0,-2.117582368e-22) (-8.329871479e-08,-1.442776062e-07) (-9.227744456e-11,-1.598292224e-10) (3.112744687e-06,5.391431949e-06) (4.610680091e-06,7.985932175e-06) (9.529120657e-22,1.270549421e-21) (-4.072151728e-12,-7.053173691e-12) (-4.732118624e-07,-8.196269885e-07) (-4.150544398e-10,-7.188953777e-10) (1.376158085e-05,2.383575722e-05) (0,1.058791184e-22) (-1.530521796e-07,-2.650941513e-07) (-1.73488401e-10,-3.004907251e-10) (5.513119534e-06,9.54900314e-06) (4.337960104e-06,7.513567301e-06) (-5.29395592e-23,-1.058791184e-22) (-7.700519144e-08,-1.33376904e-07) (-8.508942103e-11,-1.473792004e-10) (6.216831785e-07,1.076786851e-06) (6.222146986e-06,1.077707471e-05) -(0.05157424969,0.08932922082) (0.07911949656,0.1370389879) (0.005517042647,0.009555798172) (-0.009454263379,-0.01637526452) (-0.002817873889,-0.004880700745) (0.001260905509,0.002183952404) (0.0005417059474,0.0009382622237) (-8.342600894e-05,-0.0001444980862) (-0.0001916579055,-0.0003319612299) (2.369564209e-05,4.104205603e-05) (2.020298538e-05,3.499259714e-05) (6.741548682e-06,1.167670484e-05) (-1.149346843e-05,-1.990727127e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0.0003039026374,0.0005263748085) (0.04090131005,0.07084314711) (-0.00883687416,-0.01530591502) (0.01252654015,0.02169660398) (-0.000346879798,-0.0006008134342) (-5.135379222e-06,-8.894737729e-06) (0.001183168129,0.002049307314) (-0.00268255013,-0.004646313118) (5.808926845e-07,1.006135643e-06) (0.001574284488,0.002726740719) (-0.004459427703,-0.007723955355) (1.129113895e-06,1.955682633e-06) (0.0001341706355,0.0002323903576) (0.0003683995724,0.0006380867769) (-1.952858243e-07,-3.382449696e-07) (-4.227609596e-05,-7.322434614e-05) (9.017141291e-05,0.0001561814685) (-1.85615821e-08,-3.214960327e-08) (3.392569073e-05,5.876102003e-05) (0.0002193194444,0.0003798724208) (-9.853361838e-08,-1.706652333e-07) (0.0001346486464,0.0002332182967) (-0.0003281340941,-0.0005683449226) (7.513718213e-08,1.30141417e-07) (2.344440262e-05,4.060689649e-05) (4.508202613e-05,7.808435976e-05) (-2.665283983e-08,-4.616407275e-08) (3.529806653e-05,6.113804464e-05) (-8.179885248e-05,-0.0001416797685) (1.80411161e-08,3.12481297e-08) (3.253944728e-05,5.635997594e-05) (1.08655697e-05,1.881971877e-05) (-1.708094113e-08,-2.958505788e-08) (1.043761257e-05,1.807847528e-05) (-3.251583845e-05,-5.631908425e-05) (8.68155776e-09,1.503689913e-08) (1.137503137e-05,1.970213227e-05) (5.505628404e-07,9.536028123e-07) (-4.783889003e-09,-8.285938811e-09) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.02101305131,0.03639567249) (-0.01883018317,-0.03261483397) (0.0001264463693,0.0002190115361) (6.834581865e-05,0.0001183784304) (-9.063998106e-05,-0.0001569930524) (-0.0002675942571,-0.0004634868491) (9.461888584e-05,0.0001638847176) (6.093280015e-05,0.0001055387057) (-5.903420635e-05,-0.0001022502448) (-2.685320506e-05,-4.65111155e-05) (8.271937295e-06,1.432741567e-05) (-3.536237701e-06,-6.124943366e-06) (-1.181918528e-05,-2.04714294e-05) (0.01305259065,0.02260775017) (-1.972421406e-05,-3.41633409e-05) (-3.139793852e-05,-5.438282477e-05) (-0.001208003877,-0.002092324091) (1.712798772e-06,2.966654497e-06) (-0.01682721675,-0.02914559437) (-2.585942318e-05,-4.47898348e-05) (9.67925942e-09,1.67649691e-08) (0.0005877851435,0.001018073733) (1.150133528e-06,1.992089707e-06) (-3.493905947e-10,-6.051622618e-10) (6.952941289e-06,1.204284757e-05) (8.190971413e-08,1.418717865e-07) (1.32217184e-05,2.290068804e-05) (-0.0004639768554,-0.0008036314871) (-6.629958665e-10,-1.148342526e-09) (1.637002792e-05,2.835372008e-05) (-0.0002004334016,-0.0003471608352) (9.621648202e-11,1.666518354e-10) (-1.475131992e-05,-2.555003558e-05) (0.0002859360877,0.0004952558317) (1.363844101e-07,2.362247277e-07) (8.972964103e-10,1.554162972e-09) (-1.642133626e-05,-2.844258873e-05) (6.808895039e-11,1.179335215e-10) (8.86002333e-06,1.534601056e-05) (-0.0001070329349,-0.0001853864814) (1.530817236e-11,2.651453229e-11) (1.09037461e-06,1.888584223e-06) (-4.296340024e-06,-7.441479207e-06) (2.752512015e-10,4.767490659e-10) (-7.394344286e-07,-1.280737999e-06) (1.652763697e-05,2.862670696e-05) (7.276235858e-11,1.260281019e-10) (3.451371935e-06,5.977951547e-06) (-1.976500436e-05,-3.423399176e-05) (3.583427253e-11,6.206678068e-11) (3.65150322e-06,6.3245891e-06) (-1.973991048e-05,-3.419052789e-05) (2.168404345e-19,0) (-0.0008395542634,-0.00145415064) (0.02522679048,0.04369408282) (-3.126224837e-05,-5.414780254e-05) (-0.01100183246,-0.01905573281) (-1.084202172e-19,3.794707604e-19) (6.005470316e-05,0.0001040177971) (-0.003199103504,-0.005541009808) (9.138118664e-07,1.582768581e-06) (-0.002344817337,-0.004061342763) (3.388131789e-20,5.759824041e-20) (5.727926757e-07,9.921060165e-07) (-1.287812239e-05,-2.230556228e-05) (8.725406379e-09,1.511284716e-08) (-0.000335289152,-0.0005807378464) (-4.235164736e-22,-4.235164736e-22) (1.81243952e-09,3.139237334e-09) (-1.242058352e-05,-2.151308171e-05) (3.802120767e-09,6.585466345e-09) (2.538152278e-06,4.396208702e-06) (2.329340605e-20,1.43995601e-20) (9.202421743e-08,1.593906201e-07) (-2.195446888e-10,-3.802625555e-10) (-5.129786172e-06,-8.885050281e-06) (-0.0002810210377,-0.0004867427153) (1.694065895e-21,1.694065895e-21) (3.473961335e-07,6.017077536e-07) (-1.186831509e-09,-2.055652473e-09) (-7.965351864e-05,-0.0001379639413) (0.0001256283905,0.0002175947552) (-4.446922973e-21,-4.235164736e-21) (-9.779151322e-07,-1.693798695e-06) (5.110513569e-09,8.851669155e-09) (3.289864391e-06,5.698212276e-06) (0.0001171394555,0.0002028914885) (7.199780052e-21,6.352747104e-21) (-3.844266251e-07,-6.658464465e-07) (2.55914016e-09,4.432560781e-09) (2.632175311e-05,4.559061372e-05) (-6.372623528e-05,-0.0001103770773) (-1.058791184e-22,4.235164736e-22) (-3.632365662e-09,-6.291441879e-09) (1.155167341e-11,2.000808525e-11) (6.979756536e-06,1.208929295e-05) (-3.434954941e-05,-5.94951648e-05) (3.97046694e-22,5.29395592e-23) (-4.430089943e-08,-7.673140864e-08) (9.242620673e-11,1.60086886e-10) (-7.708935966e-06,-1.335226877e-05) (2.033211796e-05,3.521626133e-05) (2.64697796e-23,0) (2.732028175e-11,4.732011607e-11) (-2.030819374e-07,-3.517482337e-07) (4.158427398e-10,7.202607533e-10) (5.390575629e-06,9.336750872e-06) (-5.29395592e-23,-1.588186776e-22) (-3.944424504e-08,-6.831943648e-08) (1.737627841e-10,3.009659705e-10) (1.261265833e-05,2.184576504e-05) (-1.944658249e-05,-3.36824689e-05) (3.97046694e-22,1.270549421e-21) (-1.766566272e-08,-3.059782538e-08) (8.522954168e-11,1.476218965e-10) (2.700280003e-06,4.67702216e-06) (-4.74143023e-06,-8.212398059e-06) -(0.01677258801,0.02905097462) (0.02573064519,0.04456678478) (0.001794210947,0.00310766452) (-0.003074644141,-0.005325439867) (-0.0009164076666,-0.001587264639) (0.0004100621676,0.0007102485086) (0.0001761695175,0.000305134555) (-2.713117662e-05,-4.699257638e-05) (-6.232953669e-05,-0.0001079579244) (7.706117781e-06,1.334738753e-05) (6.57026234e-06,1.138002819e-05) (2.192435553e-06,3.797409769e-06) (-3.737819008e-06,-6.474092431e-06) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (-0.0004028470466,-0.0006977515524) (-0.04299386424,-0.07446755728) (-0.007090582965,-0.01228124995) (-0.01874283661,-0.03246354529) (-0.0002534798879,-0.0004390400445) (6.808460863e-06,1.179260014e-05) (0.001218491756,0.00211048963) (0.001120069607,0.001940017466) (-7.702992143e-07,-1.334197376e-06) (0.001420036301,0.002459575022) (0.003079871323,0.005334493612) (-1.497289225e-06,-2.593381012e-06) (-0.0009844018759,-0.001705034064) (0.0002005515599,0.0003473654913) (2.589526051e-07,4.485190688e-07) (-9.179394658e-05,-0.0001589917793) (1.709241288e-05,2.960492753e-05) (2.461341544e-08,4.263168609e-08) (-0.0005075475471,-0.0008790981388) (0.0001125653912,0.0001949689767) (1.306577615e-07,2.263058812e-07) (0.0001311012957,0.0002270741051) (0.0001706747231,0.0002956172919) (-9.963682546e-08,-1.72576044e-07) (-0.0001322101708,-0.0002289947331) (2.533065632e-05,4.387398374e-05) (3.534207956e-08,6.121427745e-08) (3.566399888e-05,6.177185807e-05) (3.686250359e-05,6.384772911e-05) (-2.392364366e-08,-4.143696631e-08) (-7.485395282e-05,-0.0001296508494) (7.155927413e-06,1.239442985e-05) (2.264899878e-08,3.922921662e-08) (9.107253788e-06,1.577422628e-05) (2.532776104e-05,4.386896896e-05) (-1.151244726e-08,-1.994014357e-08) (-1.899134758e-05,-3.289397892e-05) (3.912341003e-07,6.776373393e-07) (6.342969012e-09,1.09863446e-08) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.01653457404,0.02863872232) (-0.01481693702,-0.02566368773) (9.949706138e-05,0.0001723339655) (5.377938606e-05,9.314862906e-05) (-7.132203009e-05,-0.0001235333798) (-0.0002105623306,-0.0003647046547) (7.44529174e-05,0.0001289562357) (4.794629208e-05,8.304541391e-05) (-4.645234247e-05,-8.045781728e-05) (-2.113002537e-05,-3.65982775e-05) (6.508952823e-06,1.127383699e-05) (-2.782565142e-06,-4.819544201e-06) (-9.300181641e-06,-1.610838712e-05) (-0.01463285707,-0.0253448519) (2.616874833e-05,4.532560167e-05) (-0.002336540875,-0.00404700751) (0.001812179585,0.003138787114) (-2.272899548e-06,-3.936777498e-06) (-0.01319038986,-0.02284642541) (3.996000794e-05,6.921276402e-05) (-1.284453257e-08,-2.224738301e-08) (0.0004618297644,0.0007999126164) (-9.553607913e-07,-1.65473343e-06) (4.636983056e-10,8.031490246e-10) (5.524098285e-06,9.568018896e-06) (-1.086310209e-07,-1.881544475e-07) (-1.339854236e-05,-2.320695611e-05) (-0.000365141319,-0.0006324433165) (8.800808196e-10,1.524344694e-09) (2.84893946e-05,4.934507893e-05) (-0.0001517399338,-0.0002628212748) (-1.277053227e-10,-2.211921074e-10) (-2.208009141e-05,-3.824384015e-05) (0.0002236392519,0.0003873545469) (2.407892199e-08,4.170591628e-08) (-1.190479427e-09,-2.061970853e-09) (-3.154137007e-05,-5.46312555e-05) (-9.036164812e-11,-1.565109656e-10) (1.950696771e-06,3.378705918e-06) (-8.471154588e-05,-0.0001467247015) (-2.03076594e-11,-3.517389786e-11) (5.730243228e-08,9.925072411e-08) (-5.392190249e-06,-9.339547476e-06) (-3.658433149e-10,-6.336592089e-10) (-1.116528349e-06,-1.933883829e-06) (8.868127353e-06,1.536004714e-05) (-9.65577339e-11,-1.67242901e-10) (1.416117621e-06,2.452787669e-06) (-1.848146722e-05,-3.201084023e-05) (-4.754985346e-11,-8.235876209e-11) (1.592600314e-06,2.75846466e-06) (-1.728333755e-05,-2.993561877e-05) (2.168404345e-19,1.301042607e-18) (0.001421288335,0.002461743608) (-0.02866009467,-0.04964074012) (4.147852654e-05,7.184291538e-05) (-0.008490374326,-0.01470575971) (2.710505431e-20,1.897353802e-19) (-3.488083878e-05,-6.041538497e-05) (0.002604149643,0.004510519493) (-1.212696121e-06,-2.100451296e-06) (-0.001949014841,-0.003375792729) (1.6093626e-20,3.04931861e-20) (-6.84819863e-07,-1.186142797e-06) (1.665488592e-05,2.88471086e-05) (-1.158052873e-08,-2.005806414e-08) (-0.0002638178336,-0.0004569458917) (6.352747104e-22,-6.352747104e-22) (-3.213881516e-09,-5.566606076e-09) (1.951032757e-05,3.379287863e-05) (-5.044923245e-09,-8.738063381e-09) (1.02387175e-06,1.773397892e-06) (2.286988958e-20,-1.694065895e-20) (-1.126062466e-07,-1.950397403e-07) (2.913830078e-10,5.046901739e-10) (1.392033993e-05,2.411073601e-05) (-0.0002210927651,-0.0003829439024) (-2.117582368e-21,3.811648263e-21) (-6.274119749e-07,-1.086709418e-06) (1.575244907e-09,2.728404213e-09) (-2.951896633e-05,-5.112834946e-05) (0.0001121274987,0.0001942105247) (-2.117582368e-22,-1.694065895e-21) (9.099122566e-07,1.576014259e-06) (-6.783673963e-09,-1.174966797e-08) (-4.63062193e-05,-8.020472453e-05) (9.03034606e-05,0.0001564101819) (1.058791184e-22,3.176373552e-21) (6.916940092e-07,1.198049167e-06) (-3.396487491e-09,-5.882888901e-09) (-8.287775515e-06,-1.435484827e-05) (-5.108477623e-05,-8.848142792e-05) (1.111730743e-21,-2.064642809e-21) (5.895674323e-09,1.021160747e-08) (-1.532991602e-11,-2.655219342e-11) (2.033345566e-06,3.521857829e-06) (-2.71197858e-05,-4.697284689e-05) (1.852884572e-22,8.470329473e-22) (2.929347052e-08,5.073777927e-08) (-1.226739939e-10,-2.124775902e-10) (-8.152622709e-06,-1.412075675e-05) (1.185719849e-05,2.053727021e-05) (-1.058791184e-22,5.29395592e-23) (2.366362762e-11,4.098660533e-11) (2.030510961e-07,3.51694815e-07) (-5.516550356e-10,-9.554945499e-10) (-6.289741996e-06,-1.08941527e-05) (-6.6174449e-22,-2.64697796e-22) (8.545604851e-08,1.480142178e-07) (-2.306127229e-10,-3.994329529e-10) (5.359197563e-06,9.282402468e-06) (-1.792223291e-05,-3.104221799e-05) (2.64697796e-22,2.117582368e-22) (4.463913472e-08,7.731724935e-08) (-1.130973968e-10,-1.958904374e-10) (1.567605963e-06,2.715173175e-06) (-8.255361831e-06,-1.429870613e-05) -(-0.02616144742,-0.04531295613) (-0.04013399248,-0.06951411408) (-0.002798563663,-0.004847254452) (0.004795750123,0.008306482873) (0.001429388891,0.002475774183) (-0.0006396043251,-0.001107827188) (-0.0002747846405,-0.0004759409585) (4.231850505e-05,7.329780085e-05) (9.721999344e-05,0.0001683899681) (-1.201980249e-05,-2.08189086e-05) (-1.024812465e-05,-1.775027258e-05) (-3.419704066e-06,-5.923101189e-06) (5.830153065e-06,1.009812133e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.12111549,-0.2097781823) (-0.0005607657229,-0.0009712747232) (-0.002000518664,-0.003464999967) (-0.0004075616168,-0.0007059174275) (-0.0002729746153,-0.0004728059028) (-1.278868443e-06,-2.21506512e-06) (-6.037625137e-06,-1.045747349e-05) (-3.526857492e-05,-6.108696368e-05) (-1.932297171e-05,-3.346836876e-05) (-7.415213061e-06,-1.284352577e-05) (-8.572210917e-06,-1.484750484e-05) (-9.354879707e-06,-1.620312695e-05) (-6.899174245e-06,-1.194972032e-05) (-8.714321431e-08,-1.509364747e-07) (-0.002819411596,-0.004883364132) (0.01502942923,0.02603173503) (0.0008700924344,0.001507044304) (0.0001228246921,0.0002127386071) (7.320806355e-10,1.268000856e-09) (0.0001192873191,0.0002066116974) (-8.929992509e-05,-0.0001546720074) (1.373510759e-11,2.378990418e-11) (0.000299626932,0.0005189690695) (-0.0001838490925,-0.0003184359691) (5.231009427e-11,9.060374109e-11) (3.300273741e-05,5.716241798e-05) (-2.446401255e-05,-4.237291269e-05) (4.22210803e-12,7.312905618e-12) (2.383089031e-07,4.12763128e-07) (-2.03263699e-07,-3.52063054e-07) (1.663957861e-14,2.882059558e-14) (1.598075748e-05,2.767948389e-05) (-1.228323086e-05,-2.127517993e-05) (1.819532646e-12,3.151522988e-12) (1.701272271e-05,2.946690011e-05) (-1.203371311e-05,-2.08430025e-05) (2.268351532e-12,3.928900099e-12) (4.63149072e-06,8.021977241e-06) (-3.344313848e-06,-5.792521501e-06) (6.401746961e-13,1.1088151e-12) (3.782440103e-06,6.551378435e-06) (-2.784982798e-06,-4.823731704e-06) (4.566111217e-13,7.908736608e-13) (3.233764025e-06,5.601043591e-06) (-1.652550646e-06,-2.862301681e-06) (8.418017027e-13,1.458043318e-12) (2.598776547e-06,4.501213017e-06) (-1.422702445e-06,-2.464192919e-06) (5.279271586e-13,9.143966619e-13) (8.817371997e-07,1.527213629e-06) (-1.45942524e-07,-2.527798665e-07) (4.485466413e-13,7.769055725e-13) (1.029992064e-18,8.67361738e-19) (8.67361738e-19,-1.734723476e-18) (2.168404345e-19,1.734723476e-18) (-0.02060375576,-0.0356867518) (0.06045012766,0.1047026924) (-2.168404345e-19,0) (2.168404345e-19,-2.168404345e-19) (2.168404345e-19,8.67361738e-19) (-0.005297526462,-0.009175584986) (0.01558567133,0.02699517461) (0,6.776263578e-21) (8.470329473e-22,2.117582368e-21) (-3.388131789e-21,5.082197684e-21) (-2.702014961e-05,-4.680027195e-05) (0.0001359807469,0.0002355255625) (6.776263578e-21,6.776263578e-21) (0,1.355252716e-20) (6.776263578e-21,-6.776263578e-21) (-0.0003173531288,-0.0005496717431) (0.0009319561715,0.001614195439) (-1.32348898e-23,0) (3.30872245e-24,0) (0,-1.32348898e-23) (1.10762366e-08,1.918460455e-08) (-6.716194071e-07,-1.163278936e-06) (0,0) (0,0) (-5.29395592e-23,-7.27918939e-23) (-4.754822232e-07,-8.235593687e-07) (2.065183874e-06,3.577003397e-06) (8.470329473e-22,0) (4.235164736e-22,2.117582368e-21) (6.352747104e-22,5.717472394e-21) (-1.517604603e-05,-2.628568279e-05) (4.50724991e-05,7.806785847e-05) (-1.376428539e-21,-3.494010907e-21) (-3.705769144e-22,-1.058791184e-22) (-8.470329473e-22,-4.235164736e-22) (-7.538565652e-06,-1.305717873e-05) (2.367733081e-05,4.101033996e-05) (4.63221143e-23,2.64697796e-23) (1.191140082e-22,-2.514629062e-22) (2.64697796e-23,5.29395592e-23) (-8.103564901e-07,-1.403578613e-06) (2.67611154e-06,4.635161153e-06) (-1.588186776e-22,-3.176373552e-22) (-5.29395592e-23,2.117582368e-22) (2.64697796e-23,5.29395592e-23) (-1.711417653e-06,-2.964262327e-06) (5.087485249e-06,8.811782933e-06) (0,4.235164736e-22) (-2.64697796e-23,2.64697796e-23) (-3.441071348e-22,-6.352747104e-22) (-2.996110319e-06,-5.189415297e-06) (8.841353425e-06,1.531367334e-05) (-1.058791184e-22,-2.117582368e-22) (0,2.117582368e-22) (-1.32348898e-22,-4.764560328e-22) (-1.848699751e-06,-3.202041897e-06) (5.660846895e-06,9.804874436e-06) (5.29395592e-23,0) (-4.135903063e-23,1.257314531e-22) (7.27918939e-23,-1.058791184e-22) (-1.315863121e-06,-2.279141781e-06) (3.859226647e-06,6.68437663e-06) -(-0.1083538861,-0.187674436) (0.04130000015,0.07153369861) (-0.005588563056,-0.009679675154) (0.0001512454779,0.0002619648521) (-0.0004157109044,-0.0007200324077) (0.0004987808677,0.0008639138046) (-0.0004215574793,-0.0007301589725) (0.0001921116781,0.0003327471872) (-0.000135218537,-0.0002342053762) (5.460781335e-05,9.458350721e-05) (-4.878621887e-05,-8.45002098e-05) (1.937500693e-05,3.35584964e-05) (-2.137444623e-05,-3.702162685e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.1083538861,-0.187674436) (0.04130000015,0.07153369861) (-0.005588563056,-0.009679675154) (0.0001512454779,0.0002619648521) (-0.0004157109044,-0.0007200324077) (0.0004987808677,0.0008639138046) (-0.0004215574793,-0.0007301589725) (0.0001921116781,0.0003327471872) (-0.000135218537,-0.0002342053762) (5.460781335e-05,9.458350721e-05) (-4.878621887e-05,-8.45002098e-05) (1.937500693e-05,3.35584964e-05) (-2.137444623e-05,-3.702162685e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.2475006931,0) (0.001885655396,0) (0.003936900835,0) (0.0009741204454,0) (0.0005004075617,0) (8.132634863e-07,0) (1.510083094e-05,0) (7.282759888e-05,0) (3.408159058e-05,0) (1.381866281e-05,0) (1.778426622e-05,0) (1.795710592e-05,0) (1.276438578e-05,0) (7.833976983e-06,0) (0.3041454174,0) (0.002926686712,0) (0.02849839687,0) (2.755679327e-06,0) (1.477200313e-09,0) (5.595452752e-05,0) (0.000471312833,0) (2.30767043e-11,0) (0.0001328145617,0) (0.002968612862,0) (1.385122765e-10,0) (0.0001424591791,0) (8.663764015e-06,0) (6.653302287e-12,0) (1.353880343e-06,0) (1.063332768e-06,0) (1.058585676e-13,0) (0.0001028139335,0) (8.885062031e-06,0) (4.930568137e-12,0) (9.226573536e-06,0) (0.0001114531879,0) (5.306720436e-12,0) (2.485545863e-05,0) (1.209685944e-06,0) (1.149711836e-12,0) (2.362894913e-06,0) (2.235255113e-05,0) (1.084804457e-12,0) (4.060026829e-05,0) (2.884757044e-07,0) (1.846273793e-12,0) (8.663751496e-07,0) (2.708317392e-05,0) (1.260179665e-12,0) (1.705402686e-05,0) (4.258384822e-09,0) (8.003161713e-13,0) (1.561251128e-17,0) (6.938893904e-18,0) (8.67361738e-19,0) (0.04483170943,0) (0.1133052738,0) (8.67361738e-19,0) (-1.734723476e-18,0) (4.33680869e-19,0) (0.009624007898,0) (0.03498925778,0) (0,0) (5.421010862e-20,0) (6.776263578e-21,0) (1.920663012e-05,0) (0.0007802029551,0) (2.439454888e-19,0) (0,0) (2.710505431e-20,0) (0.0006986693326,0) (0.001726467409,0) (0,0) (-3.176373552e-22,0) (-4.235164736e-22,0) (1.653240914e-09,0) (1.835110102e-05,0) (0,0) (0,0) (0,0) (2.342751068e-06,0) (1.709453932e-06,0) (0,0) (1.016439537e-20,0) (1.101142831e-20,0) (2.57422105e-05,0) (0.0001083718738,0) (1.270549421e-21,0) (0,0) (-4.235164736e-22,0) (2.225083718e-05,0) (3.271647394e-05,0) (0,0) (2.911675756e-22,0) (0,0) (2.685905316e-06,0) (3.292917407e-06,0) (2.117582368e-22,0) (2.117582368e-22,0) (0,0) (2.887868495e-06,0) (1.229628472e-05,0) (2.117582368e-22,0) (0,0) (-4.235164736e-22,0) (6.902245323e-06,0) (1.565229019e-05,0) (-6.352747104e-22,0) (2.117582368e-22,0) (-4.235164736e-22,0) (5.060621495e-06,0) (8.434035548e-06,0) (-1.058791184e-22,0) (-8.470329473e-22,0) (-3.176373552e-22,0) (2.848171096e-06,0) (7.27171318e-06,0) -(0.09496554104,0) (0.02219350733,0) (0.0009466734748,0) (2.321681126e-06,0) (4.129794632e-05,0) (0.0001989658342,0) (0.0002383724452,0) (0.0001692599573,0) (0.0001085254047,0) (7.176902103e-05,0) (5.852636604e-05,0) (5.506831979e-05,0) (4.747128362e-05,0) (0.08203099855,0) (8.306610194e-08,0) (0.1359609918,0) (0.009081386798,0) (5.657391905e-09,0) (0.01196712578,0) (5.443671855e-05,0) (2.267692166e-12,0) (6.454709571e-05,0) (4.074384328e-08,0) (2.322477598e-15,0) (4.516263572e-08,0) (1.806939314e-09,0) (9.637884248e-05,0) (0.0001200645114,0) (3.505088404e-13,0) (0.0001259530711,0) (0.0003880768169,0) (2.442169459e-14,0) (0.0001806923474,0) (0.0003300259584,0) (4.99498452e-09,0) (5.220474457e-13,0) (0.0003140465704,0) (2.043749217e-14,0) (6.916995033e-05,0) (0.0001161425193,0) (3.068536094e-15,0) (6.841874488e-06,0) (0.0001365406311,0) (3.090610873e-13,0) (1.118320353e-06,0) (0.0001219538312,0) (2.402304362e-14,0) (6.135362753e-06,0) (0.0001061573737,0) (1.022792114e-14,0) (9.682037194e-06,0) (9.16160885e-05,0) (0,0) (0.008475895408,0) (0.1732522102,0) (1.124213962e-07,0) (0.02297182624,0) (1.084202172e-19,0) (0.0009869192534,0) (0.006480627332,0) (3.316210435e-10,0) (0.000596346401,0) (1.694065895e-21,0) (6.030566529e-06,0) (7.772448169e-05,0) (1.304810639e-11,0) (1.025243196e-05,0) (0,0) (6.172455307e-07,0) (3.424236285e-06,0) (8.91940129e-14,0) (8.102047562e-08,0) (0,0) (1.7510264e-07,0) (5.995060337e-14,0) (0.0002921369044,0) (3.675876272e-05,0) (2.032879073e-20,0) (1.275281687e-06,0) (4.637667068e-13,0) (0.0003051743252,0) (0.0002630933887,0) (6.776263578e-21,0) (3.588497215e-06,0) (5.404957306e-12,0) (0.0003430215163,0) (6.96043537e-05,0) (5.082197684e-21,0) (2.144710129e-06,0) (2.269021793e-12,0) (0.0002012220718,0) (3.895281572e-05,0) (1.694065895e-21,0) (3.844113255e-09,0) (1.769838074e-15,0) (0.0001178597097,0) (2.092539475e-05,0) (-8.470329473e-22,0) (6.145570316e-08,0) (3.010474357e-14,0) (2.166322872e-05,0) (9.000390998e-05,0) (0,0) (1.298476433e-12,0) (5.281220211e-07,0) (2.249656277e-13,0) (0.0001117973318,0) (2.541098842e-21,0) (1.467994913e-07,0) (7.105028024e-14,0) (4.480358687e-05,0) (5.317998557e-05,0) (0,0) (6.039698986e-08,0) (2.87767903e-14,0) (3.246588878e-06,0) (8.011602699e-05,0) -(0.4945189387,0) (0.307421443,0) (0.1319654046,0) (0.03941143222,0) (0.01673841645,0) (0.005001509027,0) (0.002982067969,0) (0.0008721944031,0) (0.0006739086684,0) (0.0001662005827,0) (0.000162668234,0) (2.726728507e-05,0) (3.849627959e-05,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.3147524089,0) (0.3911428714,0) (0.2057672699,0) (0.06817076837,0) (0.01624681051,0) (0.001918900616,0) (8.656155591e-06,0) (0.0003293313421,0) (0.0005165205109,0) (0.0005274892321,0) (0.000308913253,0) (0.0001921098042,0) (7.200817462e-05,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.1469209212,0) (0.001757452279,0) (0.008885391297,0) (0.0004765796032,0) (0.0003137171467,0) (3.753583099e-07,0) (3.817084e-06,0) (6.033841652e-07,0) (5.317323845e-07,0) (8.414643968e-06,0) (3.31541252e-06,0) (3.002007615e-07,0) (1.229871495e-06,0) (0.001306177527,0) (1.355168727e-09,0) (0.2503658847,0) (1.046614926e-05,0) (2.060951583e-11,0) (0.04152020624,0) (4.050576507e-07,0) (1.00843227e-12,0) (0.003778769832,0) (1.889305054e-06,0) (8.299835645e-12,0) (0.002559803502,0) (1.316604296e-15,0) (2.853709815e-10,0) (7.660087477e-05,0) (2.266554089e-16,0) (5.359854749e-09,0) (1.127557649e-07,0) (1.456075894e-15,0) (8.395718063e-08,0) (9.154156321e-06,0) (9.161877051e-08,0) (3.993706216e-16,0) (1.150818494e-07,0) (1.068890781e-15,0) (4.419176462e-08,0) (7.775554357e-06,0) (1.628929061e-17,0) (4.528323296e-06,0) (1.43185262e-05,0) (2.455969101e-13,0) (6.161678805e-07,0) (1.125366415e-06,0) (1.15944313e-15,0) (1.58315933e-07,0) (5.391837529e-07,0) (2.24968478e-15,0) (6.286898691e-07,0) (3.183188427e-06,0) (6.2883726e-18,0) (0.0002446691601,0) (8.145458932e-07,0) (5.664740933e-10,0) (0.177759353,0) (2.493664997e-18,0) (2.201408811e-06,0) (0.0003158153936,0) (8.549720567e-10,0) (0.0706465972,0) (1.058791184e-22,0) (2.464242287e-13,0) (6.094571757e-11,0) (1.707997469e-15,0) (4.38015457e-05,0) (8.131516294e-20,0) (2.311133296e-11,0) (9.174418953e-05,0) (8.403150672e-11,0) (0.001971316564,0) (5.29395592e-23,0) (1.266660794e-13,0) (7.775698928e-17,0) (6.88337889e-11,0) (2.410431746e-06,0) (1.356576205e-22,0) (5.576701781e-10,0) (1.468000911e-14,0) (6.062379565e-07,0) (3.176643229e-06,0) (-2.067951531e-24,0) (2.300661614e-12,0) (5.707138741e-16,0) (1.135038219e-09,0) (1.530804122e-07,0) (-1.178732373e-23,0) (3.081533289e-11,0) (8.947554122e-16,0) (2.296325301e-09,0) (3.899274721e-07,0) (6.749793798e-22,0) (8.755362874e-11,0) (1.48542241e-15,0) (8.808607626e-08,0) (2.190836451e-05,0) (-1.058791184e-22,0) (2.423577032e-09,0) (3.638364687e-14,0) (4.518853107e-06,0) (4.641490491e-06,0) (1.413638742e-27,0) (6.210057073e-11,0) (3.638362452e-11,0) (1.650294841e-19,0) (9.04762241e-12,0) (8.271806126e-24,0) (4.100520746e-10,0) (4.164857336e-15,0) (3.101457978e-07,0) (1.081074942e-06,0) (7.940933881e-23,0) (4.313670249e-09,0) (1.26775354e-14,0) (2.818838655e-06,0) (9.917835142e-07,0) -(0.1537404548,0) (0.003727007567,0) (0.00854296775,0) (0.0008283378013,0) (0.000249242271,0) (3.135135163e-06,0) (3.485164461e-06,0) (1.245370055e-07,0) (1.451806454e-06,0) (9.235094054e-06,0) (1.535303137e-06,0) (1.834495508e-07,0) (1.651277635e-06,0) (2.815830936e-10,0) (0.01983051592,0) (0.2311916741,0) (1.480857164e-06,0) (5.065308416e-11,0) (0.05191474862,0) (1.74172454e-07,0) (5.928976114e-13,0) (0.002321923377,0) (5.781125973e-06,0) (1.396714217e-11,0) (0.002995923626,0) (1.300580339e-15,0) (2.083846774e-09,0) (2.160554926e-05,0) (8.895745648e-08,0) (1.874301973e-14,0) (4.549221948e-07,0) (3.009999658e-15,0) (6.499753675e-08,0) (5.596904508e-06,0) (8.516512091e-16,0) (5.426835441e-08,0) (1.474190623e-07,0) (1.228211538e-15,0) (1.807091778e-07,0) (1.378205676e-05,0) (2.933157846e-14,0) (5.773281799e-06,0) (8.30249756e-06,0) (1.793970786e-07,0) (1.57524998e-14,0) (1.14196802e-07,0) (1.547102555e-15,0) (2.937426657e-07,0) (8.906479179e-07,0) (3.127361261e-15,0) (1.516806236e-06,0) (2.811236419e-06,0) (0,0) (1.511060808e-05,0) (5.607603461e-10,0) (0.1487858497,0) (0.02038732434,0) (1.734723476e-18,0) (9.734329973e-09,0) (0.0004046016186,0) (8.829540289e-10,0) (0.0787413867,0) (0,0) (1.175486027e-09,0) (3.16393186e-09,0) (1.818492629e-13,0) (0.0005493161406,0) (0,0) (1.11287863e-09,0) (2.242153709e-05,0) (5.137087983e-11,0) (0.001903470945,0) (-4.235164736e-22,0) (1.177409821e-09,0) (2.273659858e-09,0) (4.248625572e-15,0) (2.121979301e-05,0) (0,0) (1.746371504e-10,0) (3.101321166e-15,0) (2.618867638e-10,0) (3.3303246e-06,0) (-6.6174449e-24,0) (4.476698989e-11,0) (7.989091628e-15,0) (1.282889475e-07,0) (2.814187778e-07,0) (1.654361225e-24,0) (2.426502395e-12,0) (1.278136264e-16,0) (7.949778252e-10,0) (1.110717381e-07,0) (2.436173229e-11,0) (0,0) (3.526056281e-16,0) (7.3810059e-07,0) (2.697616726e-05,0) (0,0) (1.877165974e-10,0) (1.913490841e-14,0) (2.115184742e-06,0) (1.181201865e-06,0) (-1.654361225e-24,0) (6.907330169e-11,0) (1.047719175e-07,0) (7.596810143e-15,0) (7.557011361e-09,0) (1.895051636e-10,0) (0,0) (6.491569902e-15,0) (1.28432286e-06,0) (1.324891707e-06,0) (0,0) (9.739590345e-10,0) (2.829120299e-14,0) (3.141117806e-06,0) (2.187995244e-07,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.002296938444,0) (0.0004656769935,0) (-3.404442288e-05,0) (8.60557369e-05,0) (-2.195463111e-05,0) (1.021437952e-06,0) (1.052245556e-06,0) (3.19721922e-07,0) (-3.631499723e-07,0) (-8.080661741e-07,0) (1.730221396e-07,0) (-2.294551817e-08,0) (-1.671873287e-07,0) (0.008189657419,0) (5.041046806e-06,0) (-0.008342968697,0) (0.0002452856292,0) (-2.067629571e-07,0) (0.002505844645,0) (-1.362524288e-05,0) (1.28943057e-08,0) (-0.0003814274264,0) (-3.297204231e-05,0) (-4.172364306e-08,0) (0.0001791736462,0) (1.381913284e-10,0) (1.079257912e-07,0) (-3.267927222e-05,0) (-3.366221799e-11,0) (2.800914463e-07,0) (2.957483131e-08,0) (-4.691192177e-11,0) (6.280388515e-07,0) (3.585047097e-06,0) (-8.962099782e-07,0) (-4.954574338e-11,0) (9.752156065e-07,0) (3.109204061e-11,0) (3.176698282e-07,0) (-2.771203269e-06,0) (-2.22648192e-12,0) (1.653561186e-06,0) (-1.853786177e-06,0) (-4.89836296e-10,0) (1.10502967e-06,0) (-9.167977887e-07,0) (3.191879817e-11,0) (5.061688212e-07,0) (-6.78714229e-07,0) (3.355563738e-11,0) (7.856396421e-07,0) (-1.190808539e-06,0) (0,0) (-0.0009274664534,0) (-0.0002742614059,0) (4.438674186e-06,0) (-0.001474755946,0) (-8.67361738e-19,0) (-1.006015126e-05,0) (-0.002941831249,0) (-2.930994065e-06,0) (0.005259890253,0) (1.376428539e-21,0) (5.998322676e-10,0) (6.199376993e-08,0) (-1.995271809e-10,0) (6.084148142e-05,0) (5.421010862e-20,0) (-7.446672951e-11,0) (-0.0003970796515,0) (2.33129964e-07,0) (0.0003677132413,0) (5.29395592e-23,0) (4.113038732e-10,0) (-1.578850801e-11,0) (2.295141761e-08,0) (6.300650718e-06,0) (-3.176373552e-22,0) (4.941788939e-08,0) (-4.216631935e-10,0) (-3.616195343e-06,0) (5.091702812e-06,0) (3.97046694e-23,0) (-3.504778343e-09,0) (-1.048420309e-10,0) (2.359753035e-07,0) (2.499492298e-07,0) (-1.522012327e-22,0) (9.88648561e-09,0) (-1.014613753e-10,0) (-2.52638343e-07,0) (8.108630087e-07,0) (1.058791184e-22,0) (-3.46259369e-09,0) (2.113178083e-11,0) (2.345799347e-07,0) (-3.336664573e-06,0) (9.264422861e-23,0) (-3.308381734e-08,0) (-2.028902496e-10,0) (2.843321806e-06,0) (-2.094078847e-06,0) (6.203854594e-25,0) (-5.632286098e-11,0) (7.855457093e-09,0) (7.109805969e-13,0) (-7.829784988e-09,0) (-1.389663429e-22,0) (-1.617807133e-08,0) (8.400741329e-11,0) (9.173899183e-07,0) (-1.236998982e-06,0) (0,0) (-4.115909576e-08,0) (1.129540535e-10,0) (1.15856545e-06,0) (-1.384583023e-06,0) -(-0.05751293495,0) (-0.01742314575,0) (0.002807441229,0) (-0.002741260601,0) (0.0006877098011,0) (-6.313790157e-05,0) (-3.703790973e-05,0) (-1.993765262e-06,0) (1.779141841e-05,0) (1.117127821e-05,0) (-3.925466161e-06,0) (1.105928494e-06,0) (4.760820116e-06,0) (2.356370425e-06,0) (0.002086629187,0) (0.008695215087,0) (-6.2979561e-06,0) (3.741398894e-07,0) (-0.07442571239,0) (3.937534685e-07,0) (-7.848018285e-09,0) (0.008950218454,0) (-7.896863725e-06,0) (5.968412251e-08,0) (-0.002792952986,0) (-8.133735556e-11,0) (5.197317153e-08,0) (0.0004693188178,0) (-7.459501429e-07,0) (-3.500108653e-10,0) (-4.093285999e-06,0) (1.032339543e-10,0) (-9.466882665e-07,0) (-8.422440694e-05,0) (6.995807459e-11,0) (-1.632739084e-06,0) (-4.319618027e-06,0) (-2.136820204e-11,0) (9.874220973e-07,0) (7.401138147e-05,0) (1.010201071e-10,0) (-5.466525505e-06,0) (-8.034065257e-06,0) (-6.503235901e-07,0) (-1.341657236e-10,0) (-4.441394808e-07,0) (-3.383529974e-11,0) (1.834727903e-06,0) (5.4567997e-06,0) (-3.617647595e-11,0) (2.98183865e-06,0) (5.407168305e-06,0) (6.505213035e-19,0) (-3.801065212e-06,0) (-4.420846394e-06,0) (0.06307890282,0) (0.006834856211,0) (-1.734723476e-18,0) (1.2360615e-07,0) (-0.0004147197189,0) (3.245439041e-06,0) (-0.05323530859,0) (-1.084202172e-19,0) (-7.133332631e-09,0) (1.11168147e-08,0) (5.132952515e-09,0) (-0.005614192732,0) (0,0) (3.611864086e-10,0) (1.48279327e-05,0) (-1.809388448e-07,0) (0.00192530132,0) (-1.355252716e-20,0) (-1.462622461e-08,0) (-4.015748519e-08,0) (3.138645067e-10,0) (-0.0004375922108,0) (8.470329473e-22,0) (-2.062581006e-09,0) (1.526916853e-10,0) (-7.487547447e-09,0) (-6.5275208e-05,0) (0,0) (9.665570157e-10,0) (-4.759094266e-10,0) (4.428858264e-06,0) (1.003236761e-05,0) (0,0) (1.297693598e-10,0) (-3.054149145e-11,0) (7.432534774e-08,0) (9.720891838e-06,0) (2.414566489e-11,0) (8.470329473e-22,0) (-3.039500918e-12,0) (1.39543781e-06,0) (5.069545599e-05,0) (0,0) (-4.776269042e-10,0) (1.818254864e-10,0) (-9.70477885e-06,0) (-5.529115333e-06,0) (0,0) (-4.190493315e-10,0) (-1.078377038e-06,0) (-1.525802291e-10,0) (-6.801392399e-08,0) (5.154379602e-10,0) (2.117582368e-22,0) (-9.02140094e-11,0) (5.837397148e-06,0) (5.909045808e-06,0) (2.64697796e-23,0) (2.987041801e-10,0) (-1.60387982e-10,0) (3.118621718e-06,0) (1.889669192e-07,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.05227305888,0) (-0.01059774195,0) (0.0007747731012,0) (-0.0019584315,0) (0.0004996371268,0) (-2.324558865e-05,0) (-2.394669917e-05,0) (-7.276138765e-06,0) (8.264461737e-06,0) (1.838973561e-05,0) (-3.937587669e-06,0) (5.221874471e-07,0) (3.804800733e-06,0) (0.003294115467,0) (-5.03865326e-06,0) (8.521411615e-05,0) (8.201923211e-05,0) (2.067578889e-07,0) (-0.06268694534,0) (-4.461298473e-06,0) (-1.290932257e-08,0) (0.008994674824,0) (-1.566384246e-05,0) (4.177343488e-08,0) (-0.003310642092,0) (-1.39836719e-10,0) (4.550215342e-08,0) (0.0007412007475,0) (3.371897556e-11,0) (-2.135755559e-07,0) (-6.832987415e-06,0) (4.698765009e-11,0) (-6.359455323e-07,0) (-9.524322186e-05,0) (-1.168207208e-06,0) (4.963625375e-11,0) (-6.28702053e-07,0) (-3.114294568e-11,0) (4.478956051e-07,0) (5.538823034e-05,0) (2.230680666e-12,0) (1.774135912e-06,0) (2.782574797e-06,0) (4.907366656e-10,0) (-1.097731374e-06,0) (-3.17533837e-06,0) (-3.19703626e-11,0) (1.108827398e-06,0) (2.817216516e-06,0) (-3.361210006e-11,0) (1.86095787e-06,0) (7.359028335e-06,0) (-4.33680869e-19,0) (-0.0002852827998,0) (-0.0001093982521,0) (-4.438290702e-06,0) (0.0612087474,0) (-1.084202172e-18,0) (-5.672657459e-06,0) (-0.001412428299,0) (2.934551322e-06,0) (-0.05104289932,0) (5.844527336e-20,0) (2.315741605e-10,0) (2.280737082e-08,0) (1.99657454e-10,0) (-0.001386055972,0) (2.032879073e-20,0) (-2.218079147e-11,0) (-0.0001285817751,0) (-2.334044471e-07,0) (0.000791823636,0) (2.435219723e-21,0) (1.565366177e-10,0) (1.581342029e-11,0) (4.980086481e-09,0) (-0.0001439248567,0) (-5.558653716e-22,0) (1.452916396e-08,0) (4.223110462e-10,0) (-7.100395277e-06,0) (-2.760876911e-05,0) (-2.415367389e-22,0) (-1.566034151e-09,0) (1.050286112e-10,0) (1.196885357e-08,0) (-1.098689074e-05,0) (3.441071348e-22,0) (2.91435589e-09,0) (1.016381852e-10,0) (-1.778376473e-07,0) (-1.275177812e-05,0) (-2.64697796e-22,0) (-1.096373539e-09,0) (-2.116571378e-11,0) (3.816288677e-07,0) (7.029415091e-05,0) (2.067951531e-22,0) (-1.759502375e-08,0) (2.032173328e-10,0) (-7.041690834e-06,0) (-9.234442056e-06,0) (2.714186385e-25,0) (3.778730592e-10,0) (3.371220318e-09,0) (-7.123309402e-13,0) (-3.067020323e-09,0) (9.264422861e-23,0) (-4.169374205e-09,0) (-8.414027643e-11,0) (2.098761966e-06,0) (5.54532595e-06,0) (-9.926167351e-23,0) (-9.442255645e-09,0) (-1.131400601e-10,0) (5.032227385e-06,0) (1.055086583e-06,0) -(-0.01870392239,0) (-0.005666223889,0) (0.0009130148356,0) (-0.0008914920716,0) (0.0002236517882,0) (-2.053323155e-05,0) (-1.204518931e-05,0) (-6.483972824e-07,0) (5.785990742e-06,0) (3.633038737e-06,0) (-1.276610461e-06,0) (3.596617133e-07,0) (1.548277966e-06,0) (-2.360738584e-06,0) (0.03012600167,0) (-0.02661648463,0) (-0.0001013170272,0) (-3.750412402e-07,0) (-0.02410440258,0) (-6.473083976e-06,0) (7.86788762e-09,0) (0.002917313174,0) (-6.209909928e-05,0) (-5.982724624e-08,0) (-0.0008486929007,0) (8.153315783e-11,0) (1.767015122e-07,0) (0.0001524684146,0) (8.386966911e-07,0) (3.506062313e-10,0) (-2.412940959e-06,0) (-1.03489508e-10,0) (4.325370202e-07,0) (-2.813110036e-05,0) (-7.01336135e-11,0) (-1.272009523e-06,0) (-6.63678222e-07,0) (2.141801211e-11,0) (7.20810683e-07,0) (2.366970548e-05,0) (-1.012439589e-10,0) (-8.825188043e-08,0) (-4.302174199e-06,0) (2.262857906e-07,0) (1.343906619e-10,0) (-5.823968285e-07,0) (3.391481584e-11,0) (1.224153722e-06,0) (1.147096904e-06,0) (3.625524393e-11,0) (1.96618936e-06,0) (7.619721113e-07,0) (1.734723476e-18,0) (-0.0002399783128,0) (4.429670749e-06,0) (0.05862781591,0) (-0.03565811638,0) (0,0) (3.134980355e-06,0) (-0.003476641184,0) (-3.253025745e-06,0) (-0.01396980218,0) (-2.710505431e-20,0) (1.136629777e-07,0) (1.037074105e-06,0) (-5.146353529e-09,0) (-0.00182694799,0) (2.710505431e-20,0) (-1.794104248e-08,0) (-0.0001795896175,0) (1.81405844e-07,0) (0.0008103216112,0) (3.388131789e-21,0) (2.246534061e-07,0) (1.460111013e-07,0) (-3.147057971e-10,0) (-0.0001426984983,0) (0,0) (3.165906529e-08,0) (-1.530328056e-10,0) (-5.880359132e-08,0) (-2.120406882e-05,0) (5.29395592e-23,0) (-1.426401455e-08,0) (4.771886505e-10,0) (-9.224878544e-07,0) (5.639404919e-06,0) (0,0) (-1.923071812e-09,0) (3.061682836e-11,0) (1.365337013e-07,0) (3.050917587e-06,0) (-5.065341759e-10,0) (4.235164736e-22,0) (3.046264775e-12,0) (6.475738678e-07,0) (1.629354359e-05,0) (0,0) (9.109682087e-09,0) (-1.822953378e-10,0) (-1.485812014e-06,0) (-3.477463597e-06,0) (0,0) (6.655951109e-09,0) (-5.74589738e-07,0) (1.527580882e-10,0) (1.947745163e-07,0) (-7.857037501e-09,0) (2.117582368e-22,0) (9.043149751e-11,0) (3.224418723e-06,0) (6.035756443e-07,0) (-1.058791184e-22,0) (-1.558553604e-08,0) (1.607444256e-10,0) (1.658167214e-06,0) (-5.670284416e-07,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.0411321873,0) (-0.008339062533,0) (0.0006096469769,0) (-0.001541034196,0) (0.0003931502828,0) (-1.829129434e-05,0) (-1.884297833e-05,0) (-5.725387206e-06,0) (6.503070519e-06,0) (1.447036132e-05,0) (-3.098376047e-06,0) (4.108944902e-07,0) (2.993889774e-06,0) (-0.003692931319,0) (6.684943117e-06,0) (0.006341380197,0) (-0.0001230406465,0) (-2.74369599e-07,0) (-0.04913856285,0) (6.893948142e-06,0) (1.71308782e-08,0) (0.007067222778,0) (1.30112031e-05,0) (-5.544016143e-08,0) (-0.002630298682,0) (1.854554824e-10,0) (-4.611068783e-08,0) (0.0005833114635,0) (-4.475959074e-11,0) (-3.716938248e-07,0) (-5.172975408e-06,0) (-6.23653338e-11,0) (-9.518968852e-07,0) (-7.449260097e-05,0) (-2.062491615e-07,0) (-6.585442473e-11,0) (-1.207582855e-06,0) (4.133017006e-11,0) (9.861243906e-08,0) (4.383718543e-05,0) (-2.959197357e-12,0) (9.323612458e-08,0) (3.492314996e-06,0) (-6.522504806e-10,0) (-1.657548191e-06,0) (-1.703770788e-06,0) (4.242558686e-11,0) (4.549582158e-07,0) (2.634266796e-06,0) (4.460116865e-11,0) (8.116553402e-07,0) (6.443219229e-06,0) (-3.035766083e-18,0) (0.0004829576041,0) (0.0001242870854,0) (5.888692216e-06,0) (0.04723623807,0) (-1.138412281e-18,0) (3.294780257e-06,0) (0.001149751687,0) (-3.89436725e-06,0) (-0.04242691604,0) (-1.694065895e-20,0) (-2.768655948e-10,0) (-2.949608241e-08,0) (-2.64989249e-10,0) (-0.001090599805,0) (3.726944968e-20,0) (3.933175976e-11,0) (0.0002019770285,0) (3.09697559e-07,0) (0.0003194157652,0) (-2.541098842e-21,0) (-1.91547415e-10,0) (-2.098780888e-11,0) (-1.35141104e-08,0) (-0.0001132326063,0) (5.823351512e-22,0) (-2.624027897e-08,0) (-5.605204444e-10,0) (-2.631350537e-06,0) (-2.46417407e-05,0) (2.514629062e-22,0) (1.457134286e-09,0) (-1.394145316e-10,0) (-1.684666273e-07,0) (-8.469855444e-06,0) (2.117582368e-22,0) (-5.243764032e-09,0) (-1.348940671e-10,0) (5.599469354e-08,0) (-1.022219073e-05,0) (1.694065895e-21,0) (1.779518342e-09,0) (2.808845119e-11,0) (1.111762798e-07,0) (5.549890313e-05,0) (-2.249931266e-22,0) (1.163451117e-08,0) (-2.697230875e-10,0) (-7.446974375e-06,0) (-5.385302829e-06,0) (-1.550963649e-25,0) (3.272970404e-10,0) (-3.370708344e-09,0) (9.449748969e-13,0) (3.578609755e-09,0) (6.948317145e-23,0) (9.0329589e-09,0) (1.116684355e-10,0) (8.917771118e-07,0) (5.110647247e-06,0) (5.128519798e-23,0) (2.385951371e-08,0) (1.501339326e-10,0) (2.921382097e-06,0) (1.83702408e-06,0) -(0.02917389264,0) (0.008838028944,0) (-0.001424096841,0) (0.001390526193,0) (-0.0003488462539,0) (3.20272016e-05,0) (1.878777362e-05,0) (1.011353251e-06,0) (-9.024838172e-06,0) (-5.66671952e-06,0) (1.99122386e-06,0) (-5.609910046e-07,0) (-2.414963783e-06,0) (3.131764434e-06,0) (0.02113859613,0) (-0.02661209925,0) (-7.166687639e-05,0) (4.97322524e-07,0) (0.03782720766,0) (-5.177796953e-06,0) (-1.043334764e-08,0) (-0.004535076858,0) (-4.088571921e-05,0) (7.933896824e-08,0) (0.001461529417,0) (-1.081506332e-10,0) (9.410884509e-08,0) (-0.0002381860178,0) (1.194202806e-06,0) (-4.647773923e-10,0) (1.261180451e-06,0) (1.372863619e-10,0) (1.038364612e-06,0) (4.216515965e-05,0) (9.30177865e-11,0) (2.694383648e-07,0) (2.749813509e-06,0) (-2.841116772e-11,0) (-1.995626923e-07,0) (-3.784413631e-05,0) (1.343156087e-10,0) (4.046369427e-06,0) (2.801726811e-06,0) (6.603081789e-07,0) (-1.781739592e-10,0) (-1.048868705e-07,0) (-4.49845343e-11,0) (-4.575800789e-07,0) (-3.241043012e-06,0) (-4.809009413e-11,0) (-7.612857105e-07,0) (-3.494038197e-06,0) (0,0) (-0.0001781248725,0) (-5.875863018e-06,0) (-0.00325358254,0) (-0.03202255516,0) (-4.33680869e-19,0) (2.27129912e-06,0) (-0.002309571161,0) (4.314038673e-06,0) (0.02951567944,0) (-5.421010862e-20,0) (9.109152453e-08,0) (7.736946357e-07,0) (6.824590353e-09,0) (0.002846967579,0) (0,0) (-1.380258363e-08,0) (-0.00014659622,0) (-2.405362853e-07,0) (-0.000837203801,0) (0,0) (1.804379704e-07,0) (1.404322281e-07,0) (4.172190712e-10,0) (0.0002216784642,0) (-8.470329473e-22,0) (2.542909593e-08,0) (2.030650731e-10,0) (-3.866749846e-08,0) (3.31291695e-05,0) (0,0) (-1.148514282e-08,0) (-6.330232694e-10,0) (-4.027290359e-06,0) (-3.296411943e-06,0) (0,0) (-1.548017159e-09,0) (-4.061005464e-11,0) (4.700979461e-08,0) (-5.014173148e-06,0) (-4.001910504e-10,0) (0,0) (-4.040786575e-12,0) (-5.617850981e-07,0) (-2.586134062e-05,0) (1.058791184e-22,0) (7.229839581e-09,0) (2.418124915e-10,0) (6.181658491e-06,0) (1.538533616e-06,0) (-2.64697796e-23,0) (5.335196032e-09,0) (3.786615396e-07,0) (-2.026498209e-10,0) (1.980117903e-07,0) (-6.313576244e-09,0) (-2.117582368e-22,0) (-1.199476441e-10,0) (-1.961240248e-06,0) (-3.991018329e-06,0) (-2.117582368e-22,0) (-1.197908084e-08,0) (-2.132048396e-10,0) (-1.09602752e-06,0) (-5.6965094e-07,0) -(0.2731656004,0) (0.01615280688,0) (-0.02892567571,0) (-0.00681892694,0) (0.00311081643,0) (-0.0001242414384,0) (9.142358452e-06,0) (0.0001499983368,0) (-0.0001504484689,0) (9.162783375e-05,0) (-7.145343949e-05,0) (6.119624794e-05,0) (-3.277313972e-05,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.2695462447,0) (0.02324389201,0) (-0.03424272561,0) (-0.004333899483,0) (0.002291534039,0) (4.332848919e-05,0) (0.0001066902242,0) (-2.294053818e-05,0) (1.892984583e-05,0) (-3.739677434e-05,0) (2.322309841e-05,0) (-2.861059199e-06,0) (6.880804962e-06,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.1208306479,0) (-0.009094799051,0) (-0.002843835608,0) (4.385357727e-05,0) (0.000101455379,0) (-2.497568383e-05,0) (2.882303202e-05,0) (4.591201175e-06,0) (1.25522063e-05,0) (2.574477926e-05,0) (9.479225358e-06,0) (3.178405029e-06,0) (8.85371498e-06,0) (1.738623898e-10,0) (-0.03001102387,0) (0.1997440824,0) (-0.0001221715915,0) (-1.474070406e-10,0) (-0.02386352647,0) (-3.161081699e-06,0) (8.892664166e-13,0) (-0.0003782332269,0) (5.069147332e-07,0) (1.658455888e-13,0) (1.114472307e-05,0) (-1.500172006e-14,0) (-4.573358943e-07,0) (5.007857078e-05,0) (2.271380542e-06,0) (1.920933975e-13,0) (-1.440347086e-05,0) (3.522406586e-14,0) (-3.493952407e-06,0) (4.251167502e-05,0) (1.184301307e-14,0) (8.749326325e-07,0) (-6.649639108e-06,0) (-7.916366537e-15,0) (-3.478571729e-06,0) (4.038721491e-05,0) (5.133587681e-14,0) (-1.83560613e-06,0) (3.443235877e-05,0) (6.48529231e-07,0) (4.700311397e-15,0) (3.713046695e-06,0) (-8.486490438e-15,0) (-1.351843834e-06,0) (9.719683219e-06,0) (-1.014688338e-14,0) (-1.550010209e-06,0) (1.674276403e-05,0) (-1.734723476e-18,0) (-0.000377473387,0) (-9.424696266e-12,0) (-0.008719428334,0) (0.06301289739,0) (0,0) (4.987671827e-06,0) (-0.00143187811,0) (-4.141268852e-10,0) (-0.005892254741,0) (1.694065895e-21,0) (1.859842766e-07,0) (4.229671091e-07,0) (-6.138140965e-13,0) (-6.644558929e-05,0) (0,0) (-2.859798928e-08,0) (-8.511178364e-06,0) (1.891527865e-12,0) (-1.727510638e-05,0) (0,0) (3.662671398e-07,0) (6.488075772e-07,0) (-3.437640456e-13,0) (-2.522670586e-05,0) (0,0) (5.164395866e-08,0) (2.409182199e-13,0) (-3.633301909e-07,0) (1.293020884e-05,0) (0,0) (-2.328816091e-08,0) (-6.937242073e-14,0) (4.52940866e-06,0) (-8.289612776e-06,0) (-5.29395592e-23,0) (-3.139926191e-09,0) (-5.790193031e-15,0) (-4.039157833e-07,0) (1.915478012e-06,0) (-8.160659869e-10,0) (0,0) (-1.266989765e-15,0) (-9.077704595e-06,0) (2.704664962e-05,0) (0,0) (1.483552381e-08,0) (5.416556893e-14,0) (-5.200987241e-06,0) (1.074630952e-05,0) (0,0) (1.08671901e-08,0) (-1.266292565e-07,0) (-3.289808167e-14,0) (-9.136562887e-07,0) (-1.278080324e-08,0) (-2.117582368e-22,0) (-2.091689037e-14,0) (-5.329587217e-06,0) (9.978394523e-06,0) (6.352747104e-22,0) (-2.480045938e-08,0) (-3.214682481e-14,0) (6.229744764e-07,0) (4.252964659e-06,0) -(-0.1395541466,0.2417148723) (-0.01357903408,0.02351957694) (0.01423099906,-0.02464881341) (0.004074510377,-0.007057258989) (-0.001425660096,0.00246931572) (1.975203663e-05,-3.4211531e-05) (-5.71653615e-06,9.901331055e-06) (-7.743450601e-05,0.0001341204987) (6.633973277e-05,-0.0001149037877) (-4.268839373e-05,7.393846683e-05) (3.706007127e-05,-6.418992637e-05) (-2.936722707e-05,5.086552936e-05) (1.515866188e-05,-2.625557255e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.05906019127,0.102295252) (0.003122660326,-0.005408606339) (0.001450134843,-0.002511707226) (-1.663179087e-05,2.88071068e-05) (-5.691193611e-05,9.85743649e-05) (4.320980191e-06,-7.484157229e-06) (-1.508217198e-05,2.612308816e-05) (-5.052939195e-06,8.751947413e-06) (-3.798238809e-06,6.578742597e-06) (-1.228729791e-05,2.128222427e-05) (-6.964894952e-06,1.206355193e-05) (-2.032950537e-06,3.521173619e-06) (-3.820457386e-06,6.6172263e-06) (0.005175592884,-0.008964389834) (5.304917144e-09,-9.188386024e-09) (-0.09224965312,0.1597810862) (-0.0001541485888,0.0002669931877) (1.707308578e-10,-2.957145201e-10) (0.01114537494,-0.01930435567) (2.347871873e-06,-4.066633374e-06) (-7.561107841e-13,1.309622278e-12) (0.000246935527,-0.000427704879) (-1.387241408e-07,2.402772602e-07) (-6.941934625e-14,1.202378346e-13) (-5.376045784e-06,9.311584441e-06) (-7.712042098e-13,1.335764866e-12) (8.292123503e-08,-1.436237921e-07) (-4.795061678e-05,8.305290452e-05) (-4.456588466e-15,7.719037506e-15) (-4.108193539e-07,7.115599937e-07) (3.307487654e-06,-5.728736662e-06) (2.981603408e-15,-5.164287035e-15) (1.947461171e-06,-3.373101694e-06) (-2.748230891e-05,4.760075535e-05) (-1.069619489e-08,1.8526353e-08) (7.219598505e-15,-1.25047114e-14) (3.005871758e-06,-5.206322606e-06) (-2.336955431e-15,4.047727356e-15) (8.74177065e-07,-1.514119091e-06) (-1.502558212e-05,2.602507165e-05) (1.117846321e-16,-1.936173322e-16) (2.783083705e-06,-4.820442378e-06) (-2.210803363e-05,3.82922375e-05) (1.377538078e-13,-2.385965939e-13) (4.150521297e-07,-7.188913765e-07) (-5.857532454e-06,1.014554382e-05) (-2.638813198e-15,4.570558867e-15) (4.927792809e-07,-8.535187514e-07) (-3.782800919e-06,6.552003387e-06) (-2.398416777e-15,4.154178646e-15) (1.233592183e-06,-2.136644337e-06) (-8.538607507e-06,1.478930203e-05) (-6.505213035e-19,-5.854691731e-18) (0.0007200330219,-0.001247133777) (-0.0001878309588,0.0003253327639) (3.990106788e-09,-6.911067681e-09) (-0.03195096622,0.05534069685) (4.878909776e-19,-5.149960319e-19) (-2.330564706e-05,4.036656481e-05) (0.0007153114482,-0.001238955771) (2.662361388e-10,-4.611345189e-10) (0.003245375324,-0.005621154951) (3.176373552e-22,1.270549421e-21) (6.095239344e-10,-1.055726423e-09) (-3.44128403e-08,5.960478783e-08) (7.46427043e-14,-1.292849566e-13) (1.059566382e-05,-1.835222807e-05) (2.223461487e-21,-2.117582368e-22) (-1.888476037e-09,3.270936446e-09) (8.862191923e-06,-1.534976668e-05) (-1.368859681e-12,2.370934516e-12) (6.318959677e-06,-1.094475921e-05) (-7.676236084e-22,4.764560328e-22) (7.446402637e-11,-1.28975477e-10) (-1.079534809e-15,1.869808714e-15) (-7.090290898e-08,1.228074408e-07) (4.706497865e-06,-8.151893428e-06) (-4.764560328e-22,5.29395592e-22) (1.33340407e-08,-2.309523596e-08) (-4.125560452e-14,7.145680311e-14) (6.800887061e-06,-1.177948193e-05) (-1.445470366e-05,2.503628115e-05) (-1.32348898e-23,-1.852884572e-22) (1.436655647e-09,-2.488360574e-09) (2.776996633e-14,-4.809899276e-14) (3.119865907e-07,-5.403766263e-07) (-1.632104712e-06,2.826888284e-06) (-8.602678371e-23,3.044024654e-22) (-4.064786482e-09,7.040416709e-09) (2.25289788e-14,-3.902133579e-14) (-3.398791457e-07,5.886879487e-07) (1.948638818e-06,-3.375141438e-06) (7.411538288e-22,-5.29395592e-22) (2.900715708e-10,-5.024186985e-10) (-8.107037041e-16,1.40417988e-15) (1.611039988e-06,-2.790403113e-06) (-1.070561973e-05,1.854267731e-05) (-7.940933881e-23,-3.176373552e-22) (6.102102725e-09,-1.056915195e-08) (1.654781353e-14,-2.866165396e-14) (4.947043268e-06,-8.568530288e-06) (-1.021949476e-05,1.770068415e-05) (8.271806126e-25,-2.688336991e-24) (4.489881054e-12,-7.776702106e-12) (-2.191745498e-09,3.79621456e-09) (-9.634049138e-17,1.668666255e-16) (-1.590204424e-08,2.754314857e-08) (-7.940933881e-23,9.264422861e-23) (3.879285887e-09,-6.719120253e-09) (-8.60107949e-15,1.489750663e-14) (1.863843086e-06,-3.228270922e-06) (-3.791159118e-06,6.566480212e-06) (-1.32348898e-23,-1.588186776e-22) (8.070512659e-09,-1.397853797e-08) (-9.550114474e-15,1.654128355e-14) (1.512581421e-06,-2.619867872e-06) (-4.456953971e-06,7.719670724e-06) -(-0.1378654839,0.2387900227) (-0.0169245535,0.02931418655) (0.0167882116,-0.02907803547) (0.002856832998,-0.004948179901) (-0.001021264037,0.001768881199) (-6.261071557e-05,0.0001084449405) (-5.097302548e-05,8.828786994e-05) (5.211057454e-06,-9.025816272e-06) (-1.563957284e-05,2.708853477e-05) (1.958875962e-05,-3.392872691e-05) (-7.901662008e-06,1.368608006e-05) (1.11827671e-06,-1.936912078e-06) (-3.986478569e-06,6.904783425e-06) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.002296938444,0) (0.0004656769935,0) (-3.404442288e-05,0) (8.60557369e-05,0) (-2.195463111e-05,0) (1.021437952e-06,0) (1.052245556e-06,0) (3.19721922e-07,0) (-3.631499723e-07,0) (-8.080661741e-07,0) (1.730221396e-07,0) (-2.294551817e-08,0) (-1.671873287e-07,0) (0.008189657419,0) (5.041046806e-06,0) (-0.008342968697,0) (0.0002452856292,0) (-2.067629571e-07,0) (0.002505844645,0) (-1.362524288e-05,0) (1.28943057e-08,0) (-0.0003814274264,0) (-3.297204231e-05,0) (-4.172364306e-08,0) (0.0001791736462,0) (1.381913284e-10,0) (1.079257912e-07,0) (-3.267927222e-05,0) (-3.366221799e-11,0) (2.800914463e-07,0) (2.957483131e-08,0) (-4.691192177e-11,0) (6.280388515e-07,0) (3.585047097e-06,0) (-8.962099782e-07,0) (-4.954574338e-11,0) (9.752156065e-07,0) (3.109204061e-11,0) (3.176698282e-07,0) (-2.771203269e-06,0) (-2.22648192e-12,0) (1.653561186e-06,0) (-1.853786177e-06,0) (-4.89836296e-10,0) (1.10502967e-06,0) (-9.167977887e-07,0) (3.191879817e-11,0) (5.061688212e-07,0) (-6.78714229e-07,0) (3.355563738e-11,0) (7.856396421e-07,0) (-1.190808539e-06,0) (6.505213035e-19,0) (-0.0009274664534,0) (-0.0002742614059,0) (4.438674186e-06,0) (-0.001474755946,0) (-1.084202172e-19,0) (-1.006015126e-05,0) (-0.002941831249,0) (-2.930994065e-06,0) (0.005259890253,0) (1.799945013e-21,0) (5.998322676e-10,0) (6.199376993e-08,0) (-1.995271809e-10,0) (6.084148142e-05,0) (5.082197684e-20,0) (-7.44667295e-11,0) (-0.0003970796515,0) (2.33129964e-07,0) (0.0003677132413,0) (1.98523347e-23,0) (4.113038732e-10,0) (-1.578850801e-11,0) (2.295141761e-08,0) (6.300650718e-06,0) (-1.588186776e-22,0) (4.941788939e-08,0) (-4.216631935e-10,0) (-3.616195343e-06,0) (5.091702812e-06,0) (5.95570041e-23,0) (-3.504778343e-09,0) (-1.048420309e-10,0) (2.359753035e-07,0) (2.499492298e-07,0) (-1.058791184e-22,0) (9.88648561e-09,0) (-1.014613753e-10,0) (-2.52638343e-07,0) (8.108630087e-07,0) (1.32348898e-22,0) (-3.46259369e-09,0) (2.113178083e-11,0) (2.345799347e-07,0) (-3.336664573e-06,0) (5.29395592e-23,0) (-3.308381734e-08,0) (-2.028902496e-10,0) (2.843321806e-06,0) (-2.094078847e-06,0) (3.101927297e-25,0) (-5.632286098e-11,0) (7.855457093e-09,0) (7.109805969e-13,0) (-7.829784988e-09,0) (-5.95570041e-23,0) (-1.617807133e-08,0) (8.400741329e-11,0) (9.173899183e-07,0) (-1.236998982e-06,0) (5.29395592e-23,0) (-4.115909576e-08,0) (1.129540535e-10,0) (1.15856545e-06,0) (-1.384583023e-06,0) -(-0.05751293495,0) (-0.01742314575,0) (0.002807441229,0) (-0.002741260601,0) (0.0006877098011,0) (-6.313790157e-05,0) (-3.703790973e-05,0) (-1.993765262e-06,0) (1.779141841e-05,0) (1.117127821e-05,0) (-3.925466161e-06,0) (1.105928494e-06,0) (4.760820116e-06,0) (2.356370425e-06,0) (0.002086629187,0) (0.008695215087,0) (-6.2979561e-06,0) (3.741398894e-07,0) (-0.07442571239,0) (3.937534685e-07,0) (-7.848018285e-09,0) (0.008950218454,0) (-7.896863725e-06,0) (5.968412251e-08,0) (-0.002792952986,0) (-8.133735556e-11,0) (5.197317153e-08,0) (0.0004693188178,0) (-7.459501429e-07,0) (-3.500108653e-10,0) (-4.093285999e-06,0) (1.032339543e-10,0) (-9.466882665e-07,0) (-8.422440694e-05,0) (6.995807459e-11,0) (-1.632739084e-06,0) (-4.319618027e-06,0) (-2.136820204e-11,0) (9.874220973e-07,0) (7.401138147e-05,0) (1.010201071e-10,0) (-5.466525505e-06,0) (-8.034065257e-06,0) (-6.503235901e-07,0) (-1.341657236e-10,0) (-4.441394808e-07,0) (-3.383529974e-11,0) (1.834727903e-06,0) (5.4567997e-06,0) (-3.617647595e-11,0) (2.98183865e-06,0) (5.407168305e-06,0) (0,0) (-3.801065212e-06,0) (-4.420846394e-06,0) (0.06307890282,0) (0.006834856211,0) (-1.734723476e-18,0) (1.2360615e-07,0) (-0.0004147197189,0) (3.245439041e-06,0) (-0.05323530859,0) (-1.084202172e-19,0) (-7.133332631e-09,0) (1.11168147e-08,0) (5.132952515e-09,0) (-0.005614192732,0) (-1.355252716e-20,0) (3.611864086e-10,0) (1.48279327e-05,0) (-1.809388448e-07,0) (0.00192530132,0) (-6.776263578e-21,0) (-1.462622461e-08,0) (-4.015748519e-08,0) (3.138645067e-10,0) (-0.0004375922108,0) (8.470329473e-22,0) (-2.062581006e-09,0) (1.526916853e-10,0) (-7.487547447e-09,0) (-6.5275208e-05,0) (-4.235164736e-22,0) (9.665570157e-10,0) (-4.759094266e-10,0) (4.428858264e-06,0) (1.003236761e-05,0) (2.117582368e-22,0) (1.297693598e-10,0) (-3.054149145e-11,0) (7.432534774e-08,0) (9.720891838e-06,0) (2.414566489e-11,0) (8.470329473e-22,0) (-3.039500918e-12,0) (1.39543781e-06,0) (5.069545599e-05,0) (0,0) (-4.776269042e-10,0) (1.818254864e-10,0) (-9.70477885e-06,0) (-5.529115333e-06,0) (0,0) (-4.190493315e-10,0) (-1.078377038e-06,0) (-1.525802291e-10,0) (-6.801392399e-08,0) (5.154379602e-10,0) (2.117582368e-22,0) (-9.02140094e-11,0) (5.837397148e-06,0) (5.909045808e-06,0) (2.64697796e-23,0) (2.987041801e-10,0) (-1.60387982e-10,0) (3.118621718e-06,0) (1.889669192e-07,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0.04586770644,0) (0.1295753448,0) (0.0004442131108,0) (0.1967622424,0) (0.0001704511524,0) (0.07116101842,0) (0.01342434892,0) (0.1479153603,0) (0.05829558339,0) (0.002881188799,0) (0.0986772665,0) (0.03669568318,0) (0.0583789555,0) (0.004863627082,0) (0.02285094543,0) (0.01871025158,0) (0.01720002272,0) (0.0129751607,0) (0.01950909261,0) (0.002216861756,0) (0.007850079801,0) (0.0006684007036,0) (0.01106999276,0) (0.004241350104,0) (0.006378882393,0) (0.0004382569924,0) (0.00246318523,0) (0.0002443597394,0) (0.003066181956,0) (0.001196173181,0) (0.001717101805,0) (2.637892713e-05,0) (0.0006299645073,0) (1.244860412e-05,0) (0.0006474759855,0) (0.0002384489065,0) (0.000314514928,0) (9.546434388e-07,0) (0.0001139889123,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(3.590997234e-05,0) (0.0001233917216,0) (1.30441383e-07,0) (1.553904071e-05,0) (1.536434435e-06,0) (2.779572112e-06,0) (2.900697787e-07,0) (1.694146338e-07,0) (2.480155548e-07,0) (7.759935467e-08,0) (9.02954327e-09,0) (1.753815685e-09,0) (2.272725483e-08,0) (0.05134867755,0) (0.01875202135,0) (0.000278013623,0) (0.005748536394,0) (0.00207432931,0) (0.0001512337715,0) (0.0004583230146,0) (0.0001648728595,0) (3.850112287e-05,0) (0.0005754261716,0) (0.0002097466075,0) (1.254127337e-05,0) (1.450462071e-05,0) (4.081696167e-05,0) (1.394154879e-05,0) (4.99941714e-06,0) (1.463681797e-05,0) (7.757214435e-09,0) (1.511410508e-06,0) (4.698023398e-06,0) (1.404013897e-06,0) (8.766678713e-06,0) (6.146623103e-06,0) (8.264078866e-06,0) (9.044095585e-07,0) (2.283550353e-06,0) (9.876553109e-07,0) (3.043249266e-07,0) (6.038139103e-07,0) (2.400053708e-07,0) (9.769650476e-07,0) (1.981749796e-06,0) (7.468840143e-07,0) (8.787060028e-07,0) (1.618326537e-06,0) (8.543525323e-07,0) (5.00506041e-07,0) (9.817712635e-07,0) (4.454731505e-07,0) (3.469446952e-18,0) (0.003515743553,0) (0.09234509611,0) (0.03477975199,0) (1.223510922e-05,0) (4.33680869e-19,0) (4.597357965e-05,0) (0.02740325923,0) (0.01004796136,0) (0.0003916175239,0) (1.694065895e-21,0) (1.460078625e-06,0) (6.30598451e-05,0) (2.330863833e-05,0) (8.451039346e-05,0) (2.710505431e-20,0) (2.399382941e-10,0) (0.001718607472,0) (0.0006467762177,0) (6.859021545e-05,0) (1.482307658e-21,0) (1.335565741e-06,0) (3.205846614e-06,0) (7.65274698e-06,0) (1.646933149e-05,0) (-8.470329473e-22,0) (4.379161533e-06,0) (1.211169872e-05,0) (2.157052131e-05,0) (8.161268252e-06,0) (0,0) (5.33910383e-06,0) (1.925982866e-05,0) (4.905944391e-05,0) (4.081163393e-07,0) (-8.470329473e-22,0) (3.171881935e-06,0) (1.1505279e-05,0) (2.779490012e-05,0) (1.68620799e-06,0) (1.32348898e-23,0) (1.369395562e-07,0) (3.006229585e-07,0) (6.24704245e-07,0) (5.081771609e-07,0) (0,0) (4.516212835e-07,0) (1.131399868e-06,0) (1.789055475e-06,0) (9.447754395e-07,0) (2.117582368e-22,0) (5.10826975e-11,0) (1.696043397e-06,0) (3.063049089e-06,0) (6.775872177e-06,0) (1.058791184e-22,0) (6.382847646e-07,0) (1.694474736e-06,0) (2.713576222e-06,0) (1.415412032e-06,0) (1.058791184e-22,0) (3.927215262e-07,0) (1.006395786e-06,0) (4.761797554e-07,0) (1.932952223e-06,0) -(0.02151507676,0) (0.08145033313,0) (0.0009225981511,0) (0.009071793741,0) (0.001897530337,0) (0.001271522409,0) (0.000393613206,0) (3.191902604e-05,0) (0.0002180280768,0) (1.351339316e-05,0) (1.003663981e-05,0) (6.66710727e-06,0) (1.372598266e-05,0) (0.01971880285,0) (0.0002195616787,0) (0.0003270306584,0) (2.678465689e-05,0) (0.002763516793,0) (0.106697746,0) (8.901625396e-07,0) (0.0001038820182,0) (0.0345000232,0) (1.0786905e-05,0) (0.0002550410404,0) (0.002603733392,0) (5.086780754e-06,0) (1.296261603e-06,0) (0.01019461019,0) (6.255143051e-06,0) (6.536172276e-06,0) (3.683045246e-05,0) (3.540615072e-06,0) (1.378850213e-05,0) (0.0012674418,0) (5.746639196e-06,0) (4.91232311e-05,0) (0.000126571826,0) (3.717599159e-07,0) (5.395422689e-06,0) (0.0003974504446,0) (3.479206662e-07,0) (5.176068333e-06,0) (7.774311777e-06,0) (2.357456293e-06,0) (1.1427038e-06,0) (1.727367798e-06,0) (7.399816442e-07,0) (1.145978052e-05,0) (3.343258584e-05,0) (4.18479744e-07,0) (5.861896876e-06,0) (1.04002171e-05,0) (-5.421010862e-20,0) (9.561558787e-07,0) (0.03485246954,0) (0.02674278495,0) (0.002291387465,0) (0,0) (1.569546168e-06,0) (0.0004250908481,0) (0.01192913133,0) (0.03599121376,0) (-8.67361738e-19,0) (4.328799598e-08,0) (3.906012346e-08,0) (0.0001448848612,0) (0.05737890751,0) (0,0) (1.172235841e-10,0) (9.806088991e-06,0) (0.0006373039673,0) (0.001947382062,0) (0,0) (1.816924258e-07,0) (7.09263354e-07,0) (2.318653812e-05,0) (0.009023977889,0) (0,0) (2.436045478e-08,0) (7.517683295e-06,0) (2.140748389e-07,0) (0.001279410655,0) (0,0) (2.086878003e-08,0) (2.83498791e-05,0) (0.0001528953655,0) (0.0003576463545,0) (0,0) (6.94006599e-09,0) (7.29799041e-06,0) (6.948945167e-06,0) (0.0008507631173,0) (2.393151383e-11,0) (0,0) (2.620125233e-08,0) (2.63818605e-06,0) (9.527036339e-05,0) (0,0) (1.215275915e-09,0) (1.727758853e-06,0) (4.452695345e-05,0) (2.58813648e-05,0) (0,0) (2.542260728e-09,0) (1.109931996e-05,0) (3.064539702e-06,0) (6.121327117e-07,0) (1.401947502e-09,0) (0,0) (1.253713298e-06,0) (2.653165066e-05,0) (2.635447273e-05,0) (-2.64697796e-23,0) (9.160979474e-11,0) (9.092686847e-07,0) (3.096286743e-06,0) (1.632018929e-07,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (-0.04650791085,0) (0.05339342277,0) (-0.006885511921,0) (0.06582968803,0) (0.005456254699,0) (-0.07128594273,0) (-0.03665265658,0) (0.0950451253,0) (-0.05839246872,0) (-0.01466480269,0) (0.05142104472,0) (-0.03675624203,0) (0.005432133241,0) (0.01745725437,0) (-0.02288938761,0) (-0.009939728979,0) (0.02293658634,0) (-0.01299685736,0) (0.0009346548029,0) (0.006928611436,0) (-0.007863266239,0) (-0.002292082329,0) (0.006540467226,0) (-0.004248384897,0) (0.0007511567492,0) (0.001716174845,0) (-0.002467331594,0) (-0.0007179158406,0) (0.001916075511,0) (-0.00119815967,0) (0.0004232273626,0) (0.0002078052141,0) (-0.0006310325767,0) (-7.912951479e-05,0) (0.0003179706291,0) (-0.0002388411143,0) (9.769891917e-05,0) (1.648674933e-05,0) (-0.0001141856685,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.0008172287347,0) (-0.00280811301,0) (-2.968547159e-06,0) (-0.0003536329813,0) (-3.496572923e-05,0) (-6.325669591e-05,0) (-6.601323888e-06,0) (-3.855489098e-06,0) (-5.64426606e-06,0) (-1.765983606e-06,0) (-2.054917267e-07,0) (-3.991282865e-08,0) (-5.172202734e-07,0) (0.02065391313,0) (-0.01874311768,0) (-2.839598951e-06,0) (0.001922210209,0) (-0.002074278464,0) (-0.00378330843,0) (0.0001500682067,0) (-0.0001650648726,0) (-0.0009079186671,0) (0.0002733644709,0) (-0.0002099969132,0) (-0.000231728652,0) (-1.467732161e-05,0) (1.720867302e-05,0) (-0.0003162091956,0) (-5.007846613e-06,0) (-1.116087826e-05,0) (-1.792231646e-06,0) (-1.513850326e-06,0) (-4.757169056e-06,0) (-3.730015351e-05,0) (1.142734126e-05,0) (-6.157851779e-06,0) (-5.327686836e-06,0) (-9.058902923e-07,0) (3.219670478e-06,0) (-1.974033463e-05,0) (-3.048988288e-07,0) (6.478429413e-07,0) (-3.602534663e-07,0) (-9.787608102e-07,0) (-1.968661101e-06,0) (2.586840302e-06,0) (-8.801255416e-07,0) (3.545150804e-06,0) (-3.546258443e-06,0) (-5.013482219e-07,0) (2.325538149e-06,0) (-2.752961059e-06,0) (-8.67361738e-19,0) (0.001081420423,0) (0.03683490234,0) (-0.03477674716,0) (-0.0005078099275,0) (-3.794707604e-19,0) (2.592330502e-05,0) (0.01315681817,0) (-0.01006015626,0) (-0.00380032527,0) (-8.809142651e-20,0) (5.636850501e-07,0) (2.319957752e-05,0) (-2.332385676e-05,0) (-0.001925267643,0) (1.355252716e-20,0) (7.146844379e-11,0) (0.0005565170578,0) (-0.0006475377206,0) (0.0001477002938,0) (-1.694065895e-21,0) (5.082980186e-07,0) (-3.210905036e-06,0) (1.660522345e-06,0) (-0.0003762065667,0) (1.694065895e-21,0) (1.287500472e-06,0) (-1.21303074e-05,0) (4.235369307e-05,0) (-4.425289125e-05,0) (4.65868121e-21,0) (2.385662691e-06,0) (-1.929410409e-05,0) (2.488333702e-06,0) (-1.793936166e-05,0) (2.117582368e-21,0) (9.350130233e-07,0) (-1.152532848e-05,0) (1.956543723e-05,0) (-2.651761138e-05,0) (-3.705769144e-22,0) (4.335966598e-08,0) (-3.011056923e-07,0) (1.016306761e-06,0) (-1.070586547e-05,0) (-2.64697796e-23,0) (2.401865277e-07,0) (-1.133223818e-06,0) (-4.430724484e-06,0) (4.166258622e-06,0) (5.29395592e-23,0) (-3.427165247e-10,0) (7.278680151e-07,0) (-3.068866642e-06,0) (2.654190084e-06,0) (-5.29395592e-23,0) (1.64497237e-07,0) (-1.697154657e-06,0) (6.207993408e-06,0) (-6.345131393e-06,0) (1.32348898e-22,0) (9.009374426e-08,0) (-1.008053064e-06,0) (2.068286092e-06,0) (-1.472957506e-06,0) -(0.006996970788,0) (0.02648866226,0) (0.0003000404036,0) (0.002950260254,0) (0.0006171004868,0) (0.0004135149158,0) (0.0001280079144,0) (1.038046461e-05,0) (7.090544467e-05,0) (4.394723674e-06,0) (3.264040205e-06,0) (2.168226279e-06,0) (4.463860426e-06,0) (-0.0197553569,0) (0.003169952543,0) (-0.001001057065,0) (0.0004308924624,0) (-0.002770174458,0) (0.0345564099,0) (-1.463376791e-05,0) (-0.000104145023,0) (0.01124524197,0) (8.482571159e-05,0) (-0.0002556526339,0) (0.0007911948594,0) (-5.099026091e-06,0) (4.407108103e-06,0) (0.003311940614,0) (-7.032866511e-06,0) (-6.547290259e-06,0) (2.17110916e-05,0) (-3.549379796e-06,0) (-6.299896001e-06,0) (0.000423327795,0) (-5.761058672e-06,0) (3.827017946e-05,0) (1.944685014e-05,0) (-3.72626502e-07,0) (3.938617866e-06,0) (0.0001271093011,0) (-3.486916283e-07,0) (8.356272429e-08,0) (4.1630784e-06,0) (-8.202975706e-07,0) (-1.144619623e-06,0) (2.265084665e-06,0) (-7.4172067e-07,0) (7.646110877e-06,0) (7.028005024e-06,0) (-4.193909109e-07,0) (3.865265904e-06,0) (1.465586965e-06,0) (4.33680869e-19,0) (6.036641356e-05,0) (-0.03492203779,0) (0.0248557125,0) (-0.01195439354,0) (2.168404345e-19,0) (3.980786074e-05,0) (0.003563583505,0) (-0.01195701747,0) (0.009444674026,0) (4.33680869e-19,0) (-6.897536925e-07,0) (3.64387135e-06,0) (-0.0001452631239,0) (0.01867201301,0) (4.065758147e-20,0) (-5.822791923e-09,0) (-0.0001187671813,0) (-0.0006389488347,0) (0.0008196149627,0) (0,0) (-2.79072853e-06,0) (-2.5788548e-06,0) (-2.32486879e-05,0) (0.002942712557,0) (6.776263578e-21,0) (-3.739146372e-07,0) (-7.534478148e-06,0) (1.681240677e-06,0) (0.0004156051342,0) (-3.388131789e-21,0) (-3.079720876e-07,0) (-2.842608235e-05,0) (-3.184660905e-05,0) (0.0002010405408,0) (-6.776263578e-21,0) (-1.028458898e-07,0) (-7.315992414e-06,0) (1.276502879e-05,0) (0.000267013377,0) (-5.020416579e-10,0) (0,0) (-2.62595584e-08,0) (1.224289849e-06,0) (3.061993997e-05,0) (-4.235164736e-22,0) (-2.317871362e-08,0) (-1.732223519e-06,0) (6.817124161e-06,0) (1.627774038e-05,0) (-5.29395592e-23,0) (-4.037988332e-08,0) (5.914031108e-06,0) (-3.068111963e-06,0) (-1.752991826e-06,0) (-2.137047511e-08,0) (4.235164736e-22,0) (-1.256735752e-06,0) (1.465535905e-05,0) (2.691960492e-06,0) (2.64697796e-23,0) (-4.779938991e-09,0) (-9.112894287e-07,0) (1.646291736e-06,0) (-4.897159534e-07,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0.0616499241,0) (-0.05612508663,0) (-0.005524837477,0) (-0.09849767551,0) (0.003987118413,0) (0.0945105571,0) (-0.03774692604,0) (-0.03968505748,0) (0.07743198352,0) (-0.01322794725,0) (-0.0355135707,0) (0.04874151795,0) (-0.03985523459,0) (0.009503484414,0) (0.03035175017,0) (-0.02158210048,0) (0.004347737172,0) (0.01723436331,0) (-0.01398296519,0) (0.00355609991,0) (0.01042686528,0) (-0.002231696874,0) (-0.003401939794,0) (0.005633636669,0) (-0.004236003097,0) (0.0009642830837,0) (0.003271720014,0) (-0.0007253584191,0) (-0.0008634759321,0) (0.001588834351,0) (-0.000973594934,0) (0.0001368578979,0) (0.0008367370361,0) (-6.904381328e-05,0) (-0.0002476788081,0) (0.0003167226213,0) (-0.0001631146387,0) (1.171560823e-05,0) (0.0001513990305,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.0006430541106,0) (-0.002209624475,0) (-2.335865557e-06,0) (-0.0002782637621,0) (-2.751354053e-05,0) (-4.977489973e-05,0) (-5.19439452e-06,0) (-3.03377501e-06,0) (-4.441312862e-06,0) (-1.389602407e-06,0) (-1.616956109e-07,0) (-3.140627274e-08,0) (-4.069859621e-07,0) (-0.02315446542,0) (0.02486709624,0) (-0.0002113144789,0) (-0.002883591821,0) (0.002752586386,0) (-0.002965630851,0) (-0.0002318971576,0) (0.0002190437346,0) (-0.0007133624739,0) (-0.0002270707624,0) (0.0002787001547,0) (-0.0001841079618,0) (1.946548646e-05,0) (-1.743881751e-05,0) (-0.0002488508671,0) (6.647567465e-06,0) (-1.942370938e-05,0) (-1.356825305e-06,0) (2.009289265e-06,0) (-7.120632471e-06,0) (-2.917357685e-05,0) (2.017518414e-06,0) (8.169870928e-06,0) (-1.023318319e-05,0) (1.202217678e-06,0) (7.088695561e-07,0) (-1.562354862e-05,0) (4.044755587e-07,0) (3.404607548e-08,0) (-4.521418737e-07,0) (1.300895681e-06,0) (-2.972631304e-06,0) (1.388004183e-06,0) (1.167951802e-06,0) (1.454595627e-06,0) (-3.315964822e-06,0) (6.652579445e-07,0) (1.014281671e-06,0) (-2.410363274e-06,0) (1.734723476e-18,0) (-0.001830745551,0) (-0.04184804203,0) (0.04614153827,0) (-0.0003918889316,0) (6.505213035e-19,0) (-1.505671622e-05,0) (-0.0107099765,0) (0.01335057348,0) (-0.003158834692,0) (-2.032879073e-20,0) (-6.739309617e-07,0) (-3.000331146e-05,0) (3.095587548e-05,0) (-0.001514871375,0) (0,0) (-1.267303587e-10,0) (-0.0008741803541,0) (0.0008591989311,0) (5.958119995e-05,0) (-1.694065895e-21,0) (-6.219833605e-07,0) (4.261561381e-06,0) (-4.506042692e-06,0) (-0.0002959797984,0) (-2.382280164e-21,0) (-2.325279806e-06,0) (1.61001834e-05,0) (1.56959449e-05,0) (-3.949717088e-05,0) (0,0) (-2.219766983e-06,0) (2.561091166e-05,0) (-3.502433912e-05,0) (-1.382955411e-05,0) (3.546950467e-21,0) (-1.682357216e-06,0) (1.529640096e-05,0) (-6.160454092e-06,0) (-2.125727712e-05,0) (0,0) (-7.037685441e-08,0) (3.9958929e-07,0) (2.960709067e-07,0) (-8.452535281e-06,0) (1.058791184e-22,0) (-1.588206347e-07,0) (1.504087388e-06,0) (-4.685734219e-06,0) (2.429661067e-06,0) (0,0) (-2.96845995e-10,0) (-7.277574765e-07,0) (4.071144148e-06,0) (-3.096918026e-06,0) (-3.30872245e-22,0) (-3.56383646e-07,0) (2.252412441e-06,0) (2.637815303e-06,0) (-5.847758739e-06,0) (5.29395592e-23,0) (-2.276567175e-07,0) (1.337660336e-06,0) (1.200711633e-06,0) (-2.564584225e-06,0) -(-0.01091369342,0) (-0.04131632783,0) (-0.0004679952334,0) (-0.004601739364,0) (-0.0009625373212,0) (-0.000644989832,0) (-0.0001996634222,0) (-1.619117925e-05,0) (-0.0001105964721,0) (-6.854775913e-06,0) (-5.091165187e-06,0) (-3.381943069e-06,0) (-6.962613624e-06,0) (0.02620752866,0) (0.002224269497,0) (-0.001000892129,0) (0.0003047929621,0) (0.003673383099,0) (-0.05422961591,0) (-1.170549913e-05,0) (0.0001381032981,0) (-0.01748116626,0) (5.58488008e-05,0) (0.0003390297478,0) (-0.001362512354,0) (6.763664198e-06,0) (2.347166408e-06,0) (-0.005173910596,0) (-1.001395262e-05,0) (8.679345149e-06,0) (-1.134781363e-05,0) (4.708510543e-06,0) (-1.51237669e-05,0) (-0.0006345178053,0) (7.640857198e-06,0) (-8.106428758e-06,0) (-8.057400327e-05,0) (4.942920937e-07,0) (-1.090440533e-06,0) (-0.0002032277807,0) (4.625928184e-07,0) (-3.831370518e-06,0) (-2.711142746e-06,0) (-2.393650938e-06,0) (1.517526643e-06,0) (4.079308649e-07,0) (9.838166031e-07,0) (-2.85806264e-06,0) (-1.98571424e-05,0) (5.56293275e-07,0) (-1.496586117e-06,0) (-6.720478032e-06,0) (-6.505213035e-19,0) (4.480721443e-05,0) (0.04632333236,0) (-0.001379381288,0) (-0.01073557061,0) (-4.33680869e-19,0) (2.884086942e-05,0) (0.002367327906,0) (0.01585694053,0) (-0.01995489753,0) (0,0) (-5.527808322e-07,0) (2.718459272e-06,0) (0.0001926337373,0) (-0.02909695075,0) (-2.710505431e-20,0) (-4.47964897e-09,0) (-9.694780846e-05,0) (0.0008472184569,0) (-0.0008468054569,0) (-5.421010862e-20,0) (-2.241467871e-06,0) (-2.480320484e-06,0) (3.082178995e-05,0) (-0.004571428628,0) (1.355252716e-20,0) (-3.003345517e-07,0) (9.997786745e-06,0) (1.10553403e-06,0) (-0.0006493401365,0) (1.694065895e-21,0) (-2.479739066e-07,0) (3.770913572e-05,0) (-0.0001390322279,0) (-0.0001175146047,0) (0,0) (-8.278796515e-08,0) (9.703906891e-06,0) (4.395115462e-06,0) (-0.0004388356181,0) (-3.966417036e-10,0) (0,0) (3.483258316e-08,0) (-1.062099363e-06,0) (-4.860039762e-05,0) (-4.235164736e-22,0) (-1.83956344e-08,0) (2.297772888e-06,0) (-2.83623588e-05,0) (-7.201757854e-06,0) (0,0) (-3.23672139e-08,0) (-3.897417542e-06,0) (4.070176231e-06,0) (-1.782127644e-06,0) (-1.71723915e-08,0) (0,0) (1.666924655e-06,0) (-8.914065602e-06,0) (-1.780002849e-05,0) (5.29395592e-23,0) (-3.673872713e-09,0) (1.208697071e-06,0) (-1.088177979e-06,0) (-4.919808827e-07,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (1.333601076e-05,0) (-0.003680518671,0) (0.01171062439,0) (0.004572524643,0) (-0.001931974151,0) (1.016225988e-05,0) (-0.003695330387,0) (0.003163975381,0) (-1.380679875e-06,0) (-0.002791090092,0) (0.002119938484,0) (-1.702859645e-06,0) (0.001336173644,0) (-0.001159269776,0) (4.948719016e-07,0) (5.602991138e-05,0) (-5.170347486e-05,0) (1.165106662e-08,0) (0.0004402708215,0) (-0.0003880446353,0) (1.452039402e-07,0) (-0.0002896023254,0) (0.0002398595806,0) (-1.282564785e-07,0) (0.0001483925852,0) (-0.0001273107664,0) (5.926285014e-08,0) (-7.692981325e-05,0) (6.523609042e-05,0) (-3.032478854e-08,0) (4.206025406e-05,0) (-3.160521265e-05,0) (3.109924057e-08,0) (-1.970181647e-05,0) (1.391253042e-05,0) (-1.452397306e-08,0) (7.57314583e-06,0) (-4.370287337e-06,0) (1.070626807e-08,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.004214043356,0) (0.006158998385,0) (0.0001312011809,0) (-0.0007825700286,0) (-0.000160366703,0) (0.0001179069761,0) (2.941101487e-05,0) (-1.215575976e-05,0) (-1.292825713e-05,0) (3.591247411e-06,0) (1.211948785e-06,0) (2.186819431e-07,0) (-9.353687809e-07,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.04520166927,0) (0.04251668573,0) (-0.0009345582901,0) (-0.0001451268835,0) (0.0002799358963,0) (0.0005029806326,0) (-0.0003063111856,0) (-7.350246924e-05,0) (0.0001538232273,0) (3.114230238e-05,0) (-2.423650254e-05,0) (1.916106456e-05,0) (2.552626129e-05,0) (1.454931824e-06,0) (-0.003157854218,0) (0.007512458075,0) (0.0005195851016,0) (-1.088795504e-06,0) (0.03421108654,0) (-7.146290097e-06,0) (-1.177097021e-08,0) (-0.001457959397,0) (-6.924319911e-07,0) (7.086881675e-10,0) (-1.038967993e-05,0) (9.381966906e-10,0) (-1.140640338e-05,0) (0.001087813846,0) (-1.904659493e-05,0) (-3.587190187e-09,0) (0.0001295991408,0) (1.20807976e-09,0) (5.088937078e-05,0) (-0.0006397323042,0) (9.728329649e-10,0) (-2.632356776e-05,0) (0.0001948452291,0) (1.377274291e-10,0) (-1.900743854e-05,0) (0.0002168844333,0) (1.768045232e-10,0) (1.738073434e-06,0) (-3.331910854e-05,0) (-2.35095165e-06,0) (-4.003305574e-11,0) (-1.444095283e-05,0) (1.856004633e-10,0) (-8.44366819e-06,0) (5.955031546e-05,0) (1.173764161e-10,0) (-3.04711323e-06,0) (3.220324779e-05,0) (-5.421010862e-19,0) (9.495322441e-05,0) (7.430118958e-08,0) (-0.00369666856,0) (0.02112509155,0) (6.505213035e-19,0) (6.333326623e-05,0) (0.001467685891,0) (-1.522189737e-06,0) (0.003983623004,0) (0,0) (-1.128629076e-06,0) (1.486140405e-06,0) (-1.732577337e-08,0) (0.0006790959101,0) (8.470329473e-22,0) (-9.281519799e-09,0) (-5.628658706e-06,0) (-6.662351652e-09,0) (-1.747322974e-05,0) (5.421010862e-20,0) (-4.549907229e-06,0) (-1.145926933e-05,0) (-2.539534721e-08,0) (0.0005202223217,0) (0,0) (-6.099495322e-07,0) (1.186146372e-08,0) (1.038789438e-05,0) (-0.0002534353773,0) (6.776263578e-21,0) (-5.02811008e-07,0) (4.132508469e-09,0) (0.000156366619,0) (-0.0002955184562,0) (0,0) (-1.679232679e-07,0) (1.383585823e-09,0) (-3.776354522e-05,0) (0.0001676407959,0) (-8.088281908e-10,0) (0,0) (1.092177589e-11,0) (-1.716212179e-05,0) (5.082791124e-05,0) (1.694065895e-21,0) (-3.774756953e-08,0) (5.146970487e-10,0) (2.38628948e-05,0) (-5.030265065e-05,0) (2.117582368e-22,0) (-6.59283491e-08,0) (1.303346218e-06,0) (6.607505923e-10,0) (8.223005948e-06,0) (-3.476269999e-08,0) (4.235164736e-22,0) (2.906841531e-10,0) (-2.422359532e-05,0) (4.450385645e-05,0) (0,0) (-7.6060703e-09,0) (1.822462067e-10,0) (6.185128518e-07,0) (3.673086727e-06,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (-0.0002997192672,0.0005191289988) (0.09925944203,-0.1719223967) (0.0005701036329,-0.0009874484577) (0.03744131566,-0.06485026102) (-1.08363822e-05,1.876916455e-05) (5.12637978e-06,-8.879150237e-06) (-0.0004333454456,0.000750576329) (-0.004174757703,0.007230892451) (-5.79928862e-07,1.004466254e-06) (-0.0003092991382,0.0005357218221) (-0.008557666191,0.01482231264) (-1.127253589e-06,1.952460489e-06) (0.001441927363,-0.002497491453) (0.0001026368809,-0.0001777722925) (1.949578464e-07,-3.376768953e-07) (7.957927152e-05,-0.0001378353415) (6.761905753e-05,-0.0001171196432) (1.853059582e-08,-3.209593345e-08) (0.0007081325001,-0.001226521469) (7.017291895e-05,-0.0001215430609) (9.836838076e-08,-1.703790333e-07) (-3.926527806e-05,6.800945657e-05) (-0.000555379596,0.0009619456778) (-7.501276439e-08,1.299259191e-07) (0.0001990917172,-0.0003448369695) (1.15125293e-05,-1.994028567e-05) (2.660804959e-08,-4.608649378e-08) (-1.201453687e-05,2.080978829e-05) (-0.0001308978504,0.0002267217275) (-1.801120482e-08,3.119632186e-08) (0.0001320177961,-0.0002286615304) (1.379282385e-06,-2.388987168e-06) (1.705203038e-08,-2.953498298e-08) (-1.642038463e-06,2.844094046e-06) (-6.621122398e-05,0.000114681204) (-8.667301526e-09,1.501220661e-08) (3.661879991e-05,-6.342562196e-05) (3.18796139e-08,-5.521711101e-08) (4.775645764e-09,-8.271661102e-09) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.000923337689,0.00159926779) (0.0008274199475,-0.001433133388) (-5.55619918e-06,9.623619276e-06) (-3.00319403e-06,5.201684645e-06) (3.982825217e-06,-6.898455633e-06) (1.175840002e-05,-2.036614625e-05) (-4.157662878e-06,7.201283346e-06) (-2.677457455e-06,4.637492347e-06) (2.594031055e-06,-4.492993584e-06) (1.179960774e-06,-2.043752012e-06) (-3.634784569e-07,6.295631548e-07) (1.553863596e-07,-2.691370696e-07) (5.193486208e-07,-8.995381981e-07) (0.03245066753,-0.05620620491) (1.973358379e-05,-3.417956974e-05) (0.003074044889,-0.005324401932) (-0.003612640396,0.006257276715) (-1.712840758e-06,2.966727218e-06) (0.0006726502744,-0.001165064451) (-7.897721341e-05,0.0001367925463) (-9.66799994e-09,1.67454671e-08) (-2.492556751e-05,4.317234933e-05) (2.421005667e-06,-4.19330482e-06) (3.489741388e-10,-6.044409389e-10) (-3.762967448e-07,6.517650808e-07) (-8.094592238e-08,1.402024502e-07) (3.136037117e-05,-5.431775621e-05) (2.045657133e-05,-3.54318209e-05) (6.618798767e-10,-1.146409575e-09) (-2.146830323e-05,3.718419194e-05) (8.675245077e-07,-1.502596524e-06) (-9.606141336e-11,1.663832486e-10) (1.456791745e-05,-2.523237319e-05) (-1.076291122e-05,1.864190907e-05) (1.04629614e-07,-1.812238073e-07) (-8.956602146e-10,1.551328998e-09) (2.547207111e-05,-4.411892133e-05) (-6.797765478e-11,1.177407519e-10) (6.283968979e-06,-1.088415354e-05) (5.35510915e-06,-9.275321128e-06) (-1.527935823e-11,2.646462476e-11) (1.016270017e-06,-1.760231303e-06) (2.862275528e-06,-4.95760664e-06) (-2.747461897e-10,4.758743597e-10) (7.443505779e-07,-1.28925302e-06) (4.771932706e-06,-8.265229897e-06) (-7.264500146e-11,1.258248334e-10) (1.575517403e-06,-2.728876191e-06) (4.761717681e-06,-8.247536954e-06) (-3.577407697e-11,6.196251891e-11) (1.541553266e-06,-2.67004858e-06) (3.194233381e-06,-5.532574508e-06) (4.33680869e-19,1.734723476e-18) (-0.002729426434,0.004727505259) (0.06324356095,-0.1095410608) (3.126494954e-05,-5.415248111e-05) (0.0002650767828,-0.0004591264557) (-5.421010862e-20,3.252606517e-19) (0.0001065037686,-0.0001844699384) (-0.006663150733,0.01154091561) (-9.127041456e-07,1.580849952e-06) (0.0002416297276,-0.0004185149648) (4.235164736e-22,-8.470329473e-22) (1.483669546e-06,-2.569791035e-06) (-3.500462032e-05,6.06297809e-05) (-8.719713196e-09,1.510298628e-08) (1.471765147e-05,-2.549172011e-05) (-4.235164736e-22,2.541098842e-21) (6.08483442e-09,-1.053924237e-08) (-3.835660981e-05,6.643559699e-05) (-3.797649481e-09,6.577721851e-09) (1.178686968e-06,-2.041545716e-06) (-1.905824131e-21,0) (2.4179593e-07,-4.188028358e-07) (2.191988206e-10,-3.796634942e-10) (-2.364132934e-05,4.094798358e-05) (1.230236002e-05,-2.130831261e-05) (0,-8.470329473e-22) (1.181594739e-06,-2.046582122e-06) (1.185010832e-09,-2.052498968e-09) (-4.056713351e-05,7.026433636e-05) (-2.316881374e-05,4.012956255e-05) (8.470329473e-22,-2.541098842e-21) (-2.188570265e-06,3.790714895e-06) (-5.101434888e-09,8.835944417e-09) (6.486224796e-05,-0.000112344709) (-2.66489559e-06,4.61573456e-06) (-4.235164736e-22,8.470329473e-22) (-1.304105758e-06,2.258777432e-06) (-2.554688277e-09,4.424849894e-09) (3.739300532e-05,-6.476658507e-05) (4.052238551e-06,-7.018683054e-06) (-1.058791184e-22,0) (-1.147182595e-08,1.986978541e-08) (-1.153315372e-11,1.997600821e-11) (4.290322277e-06,-7.431056164e-06) (1.630475981e-06,-2.824067239e-06) (1.058791184e-22,4.235164736e-22) (-8.329871479e-08,1.442776062e-07) (-9.227744456e-11,1.598292224e-10) (3.112744687e-06,-5.391431949e-06) (4.610680091e-06,-7.985932175e-06) (7.411538288e-22,-2.117582368e-22) (-4.072151729e-12,7.05317369e-12) (-4.732118624e-07,8.196269885e-07) (-4.150544398e-10,7.188953777e-10) (1.376158085e-05,-2.383575722e-05) (1.058791184e-22,-1.058791184e-22) (-1.530521796e-07,2.650941513e-07) (-1.73488401e-10,3.004907251e-10) (5.513119534e-06,-9.54900314e-06) (4.337960104e-06,-7.513567301e-06) (5.29395592e-23,2.117582368e-22) (-7.700519144e-08,1.33376904e-07) (-8.508942103e-11,1.473792004e-10) (6.216831785e-07,-1.076786851e-06) (6.222146986e-06,-1.077707471e-05) -(0.05157424969,-0.08932922082) (0.07911949656,-0.1370389879) (0.005517042647,-0.009555798172) (-0.009454263379,0.01637526452) (-0.002817873889,0.004880700745) (0.001260905509,-0.002183952404) (0.0005417059474,-0.0009382622237) (-8.342600894e-05,0.0001444980862) (-0.0001916579055,0.0003319612299) (2.369564209e-05,-4.104205603e-05) (2.020298538e-05,-3.499259714e-05) (6.741548682e-06,-1.167670484e-05) (-1.149346843e-05,1.990727127e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.05227305888,0) (-0.01059774195,0) (0.0007747731012,0) (-0.0019584315,0) (0.0004996371268,0) (-2.324558865e-05,0) (-2.394669917e-05,0) (-7.276138765e-06,0) (8.264461737e-06,0) (1.838973561e-05,0) (-3.937587669e-06,0) (5.221874471e-07,0) (3.804800733e-06,0) (0.003294115467,0) (-5.03865326e-06,0) (8.521411615e-05,0) (8.201923211e-05,0) (2.067578889e-07,0) (-0.06268694534,0) (-4.461298473e-06,0) (-1.290932257e-08,0) (0.008994674824,0) (-1.566384246e-05,0) (4.177343488e-08,0) (-0.003310642092,0) (-1.39836719e-10,0) (4.550215342e-08,0) (0.0007412007475,0) (3.371897556e-11,0) (-2.135755559e-07,0) (-6.832987415e-06,0) (4.698765009e-11,0) (-6.359455323e-07,0) (-9.524322186e-05,0) (-1.168207208e-06,0) (4.963625375e-11,0) (-6.28702053e-07,0) (-3.114294568e-11,0) (4.478956051e-07,0) (5.538823034e-05,0) (2.230680666e-12,0) (1.774135912e-06,0) (2.782574797e-06,0) (4.907366656e-10,0) (-1.097731374e-06,0) (-3.17533837e-06,0) (-3.19703626e-11,0) (1.108827398e-06,0) (2.817216516e-06,0) (-3.361210006e-11,0) (1.86095787e-06,0) (7.359028335e-06,0) (-4.33680869e-19,0) (-0.0002852827998,0) (-0.0001093982521,0) (-4.438290702e-06,0) (0.0612087474,0) (-1.029992064e-18,0) (-5.672657459e-06,0) (-0.001412428299,0) (2.934551322e-06,0) (-0.05104289932,0) (5.844527336e-20,0) (2.315741605e-10,0) (2.280737082e-08,0) (1.99657454e-10,0) (-0.001386055972,0) (2.202285663e-20,0) (-2.218079148e-11,0) (-0.0001285817751,0) (-2.334044471e-07,0) (0.000791823636,0) (2.435219723e-21,0) (1.565366177e-10,0) (1.581342029e-11,0) (4.980086481e-09,0) (-0.0001439248567,0) (-5.029258124e-22,0) (1.452916396e-08,0) (4.223110462e-10,0) (-7.100395277e-06,0) (-2.760876911e-05,0) (-2.580803511e-22,0) (-1.566034151e-09,0) (1.050286112e-10,0) (1.196885357e-08,0) (-1.098689074e-05,0) (3.374896899e-22,0) (2.91435589e-09,0) (1.016381852e-10,0) (-1.778376473e-07,0) (-1.275177812e-05,0) (-2.64697796e-22,0) (-1.096373539e-09,0) (-2.116571378e-11,0) (3.816288677e-07,0) (7.029415091e-05,0) (1.852884572e-22,0) (-1.759502375e-08,0) (2.032173328e-10,0) (-7.041690834e-06,0) (-9.234442056e-06,0) (2.584939414e-25,0) (3.778730592e-10,0) (3.371220318e-09,0) (-7.123309402e-13,0) (-3.067020323e-09,0) (8.602678371e-23,0) (-4.169374205e-09,0) (-8.414027643e-11,0) (2.098761966e-06,0) (5.54532595e-06,0) (-9.926167351e-23,0) (-9.442255645e-09,0) (-1.131400601e-10,0) (5.032227385e-06,0) (1.055086583e-06,0) -(-0.01870392239,0) (-0.005666223889,0) (0.0009130148356,0) (-0.0008914920716,0) (0.0002236517882,0) (-2.053323155e-05,0) (-1.204518931e-05,0) (-6.483972824e-07,0) (5.785990742e-06,0) (3.633038737e-06,0) (-1.276610461e-06,0) (3.596617133e-07,0) (1.548277966e-06,0) (-2.360738584e-06,0) (0.03012600167,0) (-0.02661648463,0) (-0.0001013170272,0) (-3.750412402e-07,0) (-0.02410440258,0) (-6.473083976e-06,0) (7.86788762e-09,0) (0.002917313174,0) (-6.209909928e-05,0) (-5.982724624e-08,0) (-0.0008486929007,0) (8.153315783e-11,0) (1.767015122e-07,0) (0.0001524684146,0) (8.386966911e-07,0) (3.506062313e-10,0) (-2.412940959e-06,0) (-1.03489508e-10,0) (4.325370202e-07,0) (-2.813110036e-05,0) (-7.01336135e-11,0) (-1.272009523e-06,0) (-6.63678222e-07,0) (2.141801211e-11,0) (7.20810683e-07,0) (2.366970548e-05,0) (-1.012439589e-10,0) (-8.825188043e-08,0) (-4.302174199e-06,0) (2.262857906e-07,0) (1.343906619e-10,0) (-5.823968285e-07,0) (3.391481584e-11,0) (1.224153722e-06,0) (1.147096904e-06,0) (3.625524393e-11,0) (1.96618936e-06,0) (7.619721113e-07,0) (1.734723476e-18,0) (-0.0002399783128,0) (4.429670749e-06,0) (0.05862781591,0) (-0.03565811638,0) (-4.33680869e-19,0) (3.134980355e-06,0) (-0.003476641184,0) (-3.253025745e-06,0) (-0.01396980218,0) (-2.710505431e-20,0) (1.136629777e-07,0) (1.037074105e-06,0) (-5.146353529e-09,0) (-0.00182694799,0) (0,0) (-1.794104248e-08,0) (-0.0001795896175,0) (1.81405844e-07,0) (0.0008103216112,0) (3.388131789e-21,0) (2.246534061e-07,0) (1.460111013e-07,0) (-3.147057971e-10,0) (-0.0001426984983,0) (8.470329473e-22,0) (3.165906529e-08,0) (-1.530328056e-10,0) (-5.880359132e-08,0) (-2.120406882e-05,0) (1.058791184e-22,0) (-1.426401455e-08,0) (4.771886505e-10,0) (-9.224878544e-07,0) (5.639404919e-06,0) (0,0) (-1.923071812e-09,0) (3.061682836e-11,0) (1.365337013e-07,0) (3.050917587e-06,0) (-5.065341759e-10,0) (4.235164736e-22,0) (3.046264775e-12,0) (6.475738678e-07,0) (1.629354359e-05,0) (0,0) (9.109682087e-09,0) (-1.822953378e-10,0) (-1.485812014e-06,0) (-3.477463597e-06,0) (0,0) (6.655951109e-09,0) (-5.74589738e-07,0) (1.527580882e-10,0) (1.947745163e-07,0) (-7.857037501e-09,0) (1.058791184e-22,0) (9.043149751e-11,0) (3.224418723e-06,0) (6.035756443e-07,0) (-1.058791184e-22,0) (-1.558553604e-08,0) (1.607444256e-10,0) (1.658167214e-06,0) (-5.670284416e-07,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (-0.04650791085,0) (0.05339342277,0) (-0.006885511921,0) (0.06582968803,0) (0.005456254699,0) (-0.07128594273,0) (-0.03665265658,0) (0.0950451253,0) (-0.05839246872,0) (-0.01466480269,0) (0.05142104472,0) (-0.03675624203,0) (0.005432133241,0) (0.01745725437,0) (-0.02288938761,0) (-0.009939728979,0) (0.02293658634,0) (-0.01299685736,0) (0.0009346548029,0) (0.006928611436,0) (-0.007863266239,0) (-0.002292082329,0) (0.006540467226,0) (-0.004248384897,0) (0.0007511567492,0) (0.001716174845,0) (-0.002467331594,0) (-0.0007179158406,0) (0.001916075511,0) (-0.00119815967,0) (0.0004232273626,0) (0.0002078052141,0) (-0.0006310325767,0) (-7.912951479e-05,0) (0.0003179706291,0) (-0.0002388411143,0) (9.769891917e-05,0) (1.648674933e-05,0) (-0.0001141856685,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.0008172287347,0) (-0.00280811301,0) (-2.968547159e-06,0) (-0.0003536329813,0) (-3.496572923e-05,0) (-6.325669591e-05,0) (-6.601323888e-06,0) (-3.855489098e-06,0) (-5.64426606e-06,0) (-1.765983606e-06,0) (-2.054917267e-07,0) (-3.991282865e-08,0) (-5.172202734e-07,0) (0.02065391313,0) (-0.01874311768,0) (-2.839598951e-06,0) (0.001922210209,0) (-0.002074278464,0) (-0.00378330843,0) (0.0001500682067,0) (-0.0001650648726,0) (-0.0009079186671,0) (0.0002733644709,0) (-0.0002099969132,0) (-0.000231728652,0) (-1.467732161e-05,0) (1.720867302e-05,0) (-0.0003162091956,0) (-5.007846613e-06,0) (-1.116087826e-05,0) (-1.792231646e-06,0) (-1.513850326e-06,0) (-4.757169056e-06,0) (-3.730015351e-05,0) (1.142734126e-05,0) (-6.157851779e-06,0) (-5.327686836e-06,0) (-9.058902923e-07,0) (3.219670478e-06,0) (-1.974033463e-05,0) (-3.048988288e-07,0) (6.478429413e-07,0) (-3.602534663e-07,0) (-9.787608102e-07,0) (-1.968661101e-06,0) (2.586840302e-06,0) (-8.801255416e-07,0) (3.545150804e-06,0) (-3.546258443e-06,0) (-5.013482219e-07,0) (2.325538149e-06,0) (-2.752961059e-06,0) (-8.67361738e-19,0) (0.001081420423,0) (0.03683490234,0) (-0.03477674716,0) (-0.0005078099275,0) (-4.878909776e-19,0) (2.592330502e-05,0) (0.01315681817,0) (-0.01006015626,0) (-0.00380032527,0) (-3.388131789e-20,0) (5.636850501e-07,0) (2.319957752e-05,0) (-2.332385676e-05,0) (-0.001925267643,0) (1.355252716e-20,0) (7.146844379e-11,0) (0.0005565170578,0) (-0.0006475377206,0) (0.0001477002938,0) (-5.505714157e-21,0) (5.082980186e-07,0) (-3.210905036e-06,0) (1.660522345e-06,0) (-0.0003762065667,0) (8.470329473e-22,0) (1.287500472e-06,0) (-1.21303074e-05,0) (4.235369307e-05,0) (-4.425289125e-05,0) (2.117582368e-21,0) (2.385662691e-06,0) (-1.929410409e-05,0) (2.488333702e-06,0) (-1.793936166e-05,0) (1.270549421e-21,0) (9.350130233e-07,0) (-1.152532848e-05,0) (1.956543723e-05,0) (-2.651761138e-05,0) (-3.176373552e-22,0) (4.335966598e-08,0) (-3.011056923e-07,0) (1.016306761e-06,0) (-1.070586547e-05,0) (-5.29395592e-23,0) (2.401865277e-07,0) (-1.133223818e-06,0) (-4.430724484e-06,0) (4.166258622e-06,0) (5.29395592e-23,0) (-3.427165247e-10,0) (7.278680151e-07,0) (-3.068866642e-06,0) (2.654190084e-06,0) (5.29395592e-23,0) (1.64497237e-07,0) (-1.697154657e-06,0) (6.207993408e-06,0) (-6.345131393e-06,0) (1.588186776e-22,0) (9.009374426e-08,0) (-1.008053064e-06,0) (2.068286092e-06,0) (-1.472957506e-06,0) -(0.006996970788,0) (0.02648866226,0) (0.0003000404036,0) (0.002950260254,0) (0.0006171004868,0) (0.0004135149158,0) (0.0001280079144,0) (1.038046461e-05,0) (7.090544467e-05,0) (4.394723674e-06,0) (3.264040205e-06,0) (2.168226279e-06,0) (4.463860426e-06,0) (-0.0197553569,0) (0.003169952543,0) (-0.001001057065,0) (0.0004308924624,0) (-0.002770174458,0) (0.0345564099,0) (-1.463376791e-05,0) (-0.000104145023,0) (0.01124524197,0) (8.482571159e-05,0) (-0.0002556526339,0) (0.0007911948594,0) (-5.099026091e-06,0) (4.407108103e-06,0) (0.003311940614,0) (-7.032866511e-06,0) (-6.547290259e-06,0) (2.17110916e-05,0) (-3.549379796e-06,0) (-6.299896001e-06,0) (0.000423327795,0) (-5.761058672e-06,0) (3.827017946e-05,0) (1.944685014e-05,0) (-3.72626502e-07,0) (3.938617866e-06,0) (0.0001271093011,0) (-3.486916283e-07,0) (8.356272429e-08,0) (4.1630784e-06,0) (-8.202975706e-07,0) (-1.144619623e-06,0) (2.265084665e-06,0) (-7.4172067e-07,0) (7.646110877e-06,0) (7.028005024e-06,0) (-4.193909109e-07,0) (3.865265904e-06,0) (1.465586965e-06,0) (0,0) (6.036641356e-05,0) (-0.03492203779,0) (0.0248557125,0) (-0.01195439354,0) (-6.505213035e-19,0) (3.980786074e-05,0) (0.003563583505,0) (-0.01195701747,0) (0.009444674026,0) (4.33680869e-19,0) (-6.897536925e-07,0) (3.64387135e-06,0) (-0.0001452631239,0) (0.01867201301,0) (2.710505431e-20,0) (-5.822791923e-09,0) (-0.0001187671813,0) (-0.0006389488347,0) (0.0008196149627,0) (5.421010862e-20,0) (-2.79072853e-06,0) (-2.5788548e-06,0) (-2.32486879e-05,0) (0.002942712557,0) (0,0) (-3.739146372e-07,0) (-7.534478148e-06,0) (1.681240677e-06,0) (0.0004156051342,0) (-3.388131789e-21,0) (-3.079720876e-07,0) (-2.842608235e-05,0) (-3.184660905e-05,0) (0.0002010405408,0) (-6.776263578e-21,0) (-1.028458898e-07,0) (-7.315992414e-06,0) (1.276502879e-05,0) (0.000267013377,0) (-5.020416579e-10,0) (0,0) (-2.62595584e-08,0) (1.224289849e-06,0) (3.061993997e-05,0) (0,0) (-2.317871362e-08,0) (-1.732223519e-06,0) (6.817124161e-06,0) (1.627774038e-05,0) (1.058791184e-22,0) (-4.037988332e-08,0) (5.914031108e-06,0) (-3.068111963e-06,0) (-1.752991826e-06,0) (-2.137047511e-08,0) (0,0) (-1.256735752e-06,0) (1.465535905e-05,0) (2.691960492e-06,0) (3.97046694e-23,0) (-4.779938991e-09,0) (-9.112894287e-07,0) (1.646291736e-06,0) (-4.897159534e-07,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0.04715705099,0) (0.02200154358,0) (0.1067286698,0) (0.02202428562,0) (0.17465834,0) (0.07141108635,0) (0.1000731762,0) (0.06107260141,0) (0.05848951507,0) (0.07464156391,0) (0.02679567375,0) (0.03681690082,0) (0.0005054573398,0) (0.06266017622,0) (0.02292789445,0) (0.005280432053,0) (0.03058641266,0) (0.0130185903,0) (4.477807442e-05,0) (0.02165478127,0) (0.007876474827,0) (0.007860017766,0) (0.003864294445,0) (0.004255431357,0) (8.845381168e-05,0) (0.006720385865,0) (0.002471484938,0) (0.00210919833,0) (0.001197367089,0) (0.001200149458,0) (0.0001043161214,0) (0.001637026661,0) (0.0006321024569,0) (0.0005029865235,0) (0.0001561530053,0) (0.0002392339673,0) (3.034857158e-05,0) (0.0002847271479,0) (0.0001143827643,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.01859825451,0) (0.06390622139,0) (6.755733522e-05,0) (0.008047876816,0) (0.000795739924,0) (0.001439577538,0) (0.0001502310143,0) (8.77421026e-05,0) (0.0001284505699,0) (4.018974268e-05,0) (4.676521113e-06,0) (9.083245777e-07,0) (1.177074896e-05,0) (0.008307597159,0) (0.01873421824,0) (2.900333486e-08,0) (0.0006427535352,0) (0.002074227619,0) (0.09464435446,0) (4.913666987e-05,0) (0.0001652571093,0) (0.02141018871,0) (0.0001298657198,0) (0.0002102475176,0) (0.004281715785,0) (1.48520788e-05,0) (7.255278567e-06,0) (0.007171961804,0) (5.016290298e-06,0) (8.510401907e-06,0) (0.0004140783138,0) (1.516294083e-06,0) (4.817059328e-06,0) (0.0009909456417,0) (1.489550748e-05,0) (6.169100968e-06,0) (3.434653454e-06,0) (9.073734504e-07,0) (4.539544298e-06,0) (0.0003945514261,0) (3.054738133e-07,0) (6.950824905e-07,0) (5.407485655e-07,0) (9.805598736e-07,0) (1.955658851e-06,0) (8.959547428e-06,0) (8.815473737e-07,0) (7.766105257e-06,0) (1.471985915e-05,0) (5.021918199e-07,0) (5.508541434e-06,0) (1.701290994e-05,0) (6.505213035e-19,0) (0.0003326380646,0) (0.01469282168,0) (0.03477374258,0) (0.02107630735,0) (3.252606517e-19,0) (1.4617477e-05,0) (0.006316834902,0) (0.01007236596,0) (0.03687902424,0) (-2.059984128e-18,0) (2.1761899e-07,0) (8.535073252e-06,0) (2.333908512e-05,0) (0.04386035073,0) (3.388131789e-21,0) (2.12877168e-11,0) (0.0001802105721,0) (0.0006483001201,0) (0.0003180537728,0) (-1.423015351e-19,0) (1.934512603e-07,0) (3.215971441e-06,0) (3.60306497e-07,0) (0.008593632408,0) (9.95263713e-21,0) (3.785330716e-07,0) (1.214894467e-05,0) (8.316142622e-05,0) (0.0002399527039,0) (-2.943439492e-20,0) (1.065981606e-06,0) (1.932844051e-05,0) (1.262102486e-07,0) (0.0007885513656,0) (-1.905824131e-20,0) (2.756248094e-07,0) (1.154541289e-05,0) (1.377253857e-05,0) (0.0004170207456,0) (1.334076892e-20,0) (1.372912756e-08,0) (3.015892013e-07,0) (1.65338949e-06,0) (0.000225542516,0) (-7.27918939e-22,0) (1.277388161e-07,0) (1.135050709e-06,0) (1.097300767e-05,0) (1.837231386e-05,0) (0,0) (2.299303327e-09,0) (3.123692756e-07,0) (3.074695245e-06,0) (1.039677966e-06,0) (6.882142696e-22,0) (4.239383809e-08,0) (1.699838817e-06,0) (1.420235844e-05,0) (2.844450342e-05,0) (-2.779326858e-22,0) (2.066829092e-08,0) (1.009713072e-06,0) (8.983597702e-06,0) (1.122430129e-06,0) -(0.002275502001,0) (0.008614442707,0) (9.757687426e-05,0) (0.0009594613604,0) (0.0002006887602,0) (0.0001344801982,0) (4.162976727e-05,0) (3.375856311e-06,0) (2.305933326e-05,0) (1.429218846e-06,0) (1.061506507e-06,0) (7.051341767e-07,0) (1.451702978e-06,0) (0.0197919787,0) (0.04576663462,0) (0.003064285325,0) (0.006931890706,0) (0.002776848162,0) (0.01119185278,0) (0.0002405708549,0) (0.0001044086936,0) (0.003665373389,0) (0.0006670496628,0) (0.0002562656941,0) (0.0002404198937,0) (5.111300906e-06,0) (1.4983551e-05,0) (0.001075955865,0) (7.907287005e-06,0) (6.558427154e-06,0) (1.279841726e-05,0) (3.558166217e-06,0) (2.878390215e-06,0) (0.0001413922296,0) (5.77551433e-06,0) (2.981494912e-05,0) (2.987868567e-06,0) (3.734951082e-07,0) (2.875161334e-06,0) (4.065104123e-05,0) (3.494642989e-07,0) (1.349041095e-09,0) (2.229293379e-06,0) (2.854297262e-07,0) (1.146538659e-06,0) (2.970188831e-06,0) (7.434637826e-07,0) (5.101582132e-06,0) (1.477386609e-06,0) (4.203040616e-07,0) (2.548710907e-06,0) (2.065288763e-07,0) (0,0) (0.00381120272,0) (0.03499174491,0) (0.02310179904,0) (0.06236724561,0) (0,0) (0.001009633108,0) (0.0298739139,0) (0.0119849688,0) (0.002478434544,0) (0,0) (1.099057939e-05,0) (0.0003399323208,0) (0.000145642374,0) (0.00607617128,0) (-5.421010862e-20,0) (2.892328027e-07,0) (0.001438457613,0) (0.0006405979474,0) (0.0003449598824,0) (-1.355252716e-20,0) (4.286455912e-05,0) (9.37661877e-06,0) (2.331100428e-05,0) (0.0009596164022,0) (-3.388131789e-21,0) (5.739308119e-06,0) (7.551310522e-06,0) (1.320365452e-05,0) (0.0001350056191,0) (-1.694065895e-21,0) (4.544913819e-06,0) (2.850249043e-05,0) (6.63333715e-06,0) (0.0001130091179,0) (0,0) (1.524088828e-06,0) (7.334038823e-06,0) (2.344902083e-05,0) (8.380257917e-05,0) (1.053196334e-08,0) (2.117582368e-22,0) (2.631799423e-08,0) (5.681500867e-07,0) (9.841263226e-06,0) (0,0) (4.420829531e-07,0) (1.736699721e-06,0) (1.043708995e-06,0) (1.023766845e-05,0) (-4.235164736e-22,0) (6.41372051e-07,0) (3.151162781e-06,0) (3.071688387e-06,0) (5.020121102e-06,0) (3.257591355e-07,0) (-1.058791184e-22,0) (1.259765493e-06,0) (8.095219997e-06,0) (2.749685552e-07,0) (5.29395592e-23,0) (2.494036453e-07,0) (9.133146635e-07,0) (8.753312292e-07,0) (1.469478759e-06,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (-0.06251041084,0) (-0.02312716577,0) (0.08563757661,0) (-0.03295383896,0) (0.1276303109,0) (-0.0946764719,0) (0.1030608728,0) (-0.02550019993,0) (-0.07756067291,0) (0.0673281933,0) (-0.01850623727,0) (-0.04882195603,0) (-0.003708510075,0) (0.03411132104,0) (-0.03040281096,0) (0.01146538456,0) (0.005797797515,0) (-0.01726318207,0) (-0.0006699053532,0) (0.01111428551,0) (-0.01044438016,0) (0.007652943725,0) (-0.002009962988,0) (-0.005642980737,0) (-0.0004988181503,0) (0.003776045562,0) (-0.003277227412,0) (0.002131064227,0) (-0.0005395912934,0) (-0.001591472934,0) (-0.0002399694735,0) (0.00107812515,0) (-0.0008381556767,0) (0.0004388767921,0) (-0.000121633216,0) (-0.0003172435761,0) (-5.066889512e-05,0) (0.0002023292553,0) (-0.0001516603602,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.01463443893,0) (0.0502859929,0) (5.315895081e-05,0) (0.006332645988,0) (0.0006261451749,0) (0.001132762731,0) (0.0001182125239,0) (6.904177173e-05,0) (0.0001010741099,0) (3.162416853e-05,0) (3.679821814e-06,0) (7.147348455e-07,0) (9.262068479e-06,0) (-0.009313391119,0) (-0.02485528906,0) (2.158341618e-06,0) (-0.0009642227618,0) (-0.002752518914,0) (0.07418909208,0) (-7.592983434e-05,0) (-0.0002192988358,0) (0.01682223941,0) (-0.0001078732284,0) (-0.0002790327477,0) (0.003401814836,0) (-1.969725446e-05,0) (-7.352308847e-06,0) (0.005644203073,0) (-6.658775869e-06,0) (1.481098257e-05,0) (0.000313481762,0) (-2.012532792e-06,0) (7.210277511e-06,0) (0.0007750485214,0) (2.629829628e-06,0) (-8.184795682e-06,0) (6.597129124e-06,0) (-1.204185994e-06,0) (9.994640053e-07,0) (0.0003122689409,0) (-4.05238327e-07,0) (3.652865445e-08,0) (6.786751343e-07,0) (-1.303286861e-06,0) (2.952998217e-06,0) (4.80736646e-06,0) (-1.169838614e-06,0) (3.186477351e-06,0) (1.376395317e-05,0) (-6.663773466e-07,0) (2.4025461e-06,0) (1.489570409e-05,0) (0,0) (-0.0005631257223,0) (-0.01669247861,0) (-0.04613755182,0) (0.01626508487,0) (0,0) (-8.490090396e-06,0) (-0.005142060373,0) (-0.01336677666,0) (0.03065388695,0) (4.33680869e-19,0) (-2.601810625e-07,0) (-1.103815192e-05,0) (-3.097608686e-05,0) (0.03451093673,0) (1.016439537e-20,0) (-3.774812831e-11,0) (-0.0002830758546,0) (-0.0008602105367,0) (0.0001283005263,0) (-1.355252716e-19,0) (-2.367183435e-07,0) (-4.268285589e-06,0) (-9.777383985e-07,0) (0.006761023897,0) (5.717472394e-21,0) (-6.8364659e-07,0) (-1.612492008e-05,0) (3.081896923e-05,0) (0.0002141657343,0) (1.270549421e-21,0) (-9.918547086e-07,0) (-2.565648968e-05,0) (-1.776462113e-06,0) (0.0006078986526,0) (-1.651714247e-20,0) (-4.959282655e-07,0) (-1.532305696e-05,0) (-4.336478179e-06,0) (0.0003342957791,0) (-1.058791184e-22,0) (-2.228367745e-08,0) (-4.002309418e-07,0) (4.816661111e-07,0) (0.0001780711778,0) (2.911675756e-22,0) (-8.446585262e-08,0) (-1.506512155e-06,0) (1.160455761e-05,0) (1.071428823e-05,0) (-1.32348898e-23,0) (1.991555512e-09,0) (-3.123218372e-07,0) (-4.078876345e-06,0) (-1.21309979e-06,0) (-4.63221143e-22,0) (-9.18463487e-08,0) (-2.255974777e-06,0) (6.034671105e-06,0) (2.62148383e-05,0) (-9.264422861e-23,0) (-5.222643711e-08,0) (-1.339863123e-06,0) (5.215289271e-06,0) (1.954276747e-06,0) -(-0.003549268956,0) (-0.01343658413,0) (-0.0001521978757,0) (-0.001496542925,0) (-0.0003130291189,0) (-0.0002097587224,0) (-6.49330304e-05,0) (-5.265573046e-06,0) (-3.596734947e-05,0) (-2.229258458e-06,0) (-1.655710296e-06,0) (-1.099849986e-06,0) (-2.264328624e-06,0) (-0.02625611128,0) (0.03211320294,0) (0.003063780447,0) (0.004903291854,0) (-0.003682232749,0) (-0.01756345289,0) (0.0001924317751,0) (-0.0001384529431,0) (-0.005697965572,0) (0.0004391819773,0) (-0.000339842748,0) (-0.0004140257883,0) (-6.779946273e-06,0) (7.980037421e-06,0) (-0.001680857268,0) (1.12590218e-05,0) (-8.694108655e-06,0) (-6.689394366e-06,0) (-4.720166369e-06,0) (6.909971635e-06,0) (-0.0002119300653,0) (-7.660029649e-06,0) (-6.315433174e-06,0) (-1.237961572e-05,0) (-4.954443068e-07,0) (-7.960133638e-07,0) (-6.499462137e-05,0) (-4.636178842e-07,0) (-6.185385077e-08,0) (-1.451794079e-06,0) (8.328918145e-07,0) (-1.520070884e-06,0) (5.349167374e-07,0) (-9.861286637e-07,0) (-1.906935634e-06,0) (-4.174253742e-06,0) (-5.575045068e-07,0) (-9.86831296e-07,0) (-9.470422496e-07,0) (-8.67361738e-19,0) (0.002828880622,0) (-0.04641579736,0) (-0.001282046906,0) (0.05600852667,0) (-4.33680869e-19,0) (0.0007314810716,0) (0.01984557116,0) (-0.01589400852,0) (-0.005236486429,0) (-1.084202172e-19,0) (8.808045082e-06,0) (0.0002536017549,0) (-0.0001931366618,0) (-0.009468612536,0) (-2.710505431e-20,0) (2.225154949e-07,0) (0.001174190644,0) (-0.0008494051089,0) (-0.0003564038288,0) (0,0) (3.442811834e-05,0) (9.018351715e-06,0) (-3.090440545e-05,0) (-0.001490739516,0) (0,0) (4.609909213e-06,0) (-1.002012226e-05,0) (8.682331798e-06,0) (-0.0002109323487,0) (-2.541098842e-21,0) (3.659487597e-06,0) (-3.781049624e-05,0) (2.895905309e-05,0) (-6.605743182e-05,0) (-3.388131789e-21,0) (1.226847403e-06,0) (-9.727843585e-06,0) (8.073711052e-06,0) (-0.0001377292668,0) (8.320855081e-09,0) (4.235164736e-22,0) (-3.491009668e-08,0) (-4.928831568e-07,0) (-1.562019084e-05,0) (0,0) (3.508562431e-07,0) (-2.303710515e-06,0) (-4.342307445e-06,0) (-4.529449878e-06,0) (2.117582368e-22,0) (5.141031785e-07,0) (-2.076654126e-06,0) (-4.074920738e-06,0) (5.103558646e-06,0) (2.617659823e-07,0) (-2.117582368e-22,0) (-1.67094328e-06,0) (-4.923886331e-06,0) (-1.818172343e-06,0) (0,0) (1.916922473e-07,0) (-1.21138326e-06,0) (-5.785828522e-07,0) (1.476275077e-06,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (-1.352214984e-05,0) (-0.001516611742,0) (-0.1815201801,0) (0.001529805043,0) (-0.06184377689,0) (-1.018009989e-05,0) (0.0100894037,0) (0.002033057526,0) (1.382974519e-06,0) (0.01420621429,0) (0.001104706844,0) (1.705669872e-06,0) (0.0001243303037,0) (-0.00416102366,0) (-4.957044252e-07,0) (-2.976561439e-05,0) (-6.894765397e-05,0) (-1.167054917e-08,0) (2.109279228e-05,0) (-0.001212800252,0) (-1.454478514e-07,0) (0.0009931054366,0) (0.0001417158764,0) (1.284692074e-07,0) (1.74742353e-05,0) (-0.0004985374759,0) (-5.936260932e-08,0) (0.0002260156754,0) (4.076642451e-05,0) (3.037514902e-08,0) (1.036691613e-05,0) (-0.0002489763116,0) (-3.115196758e-08,0) (0.0001252345373,0) (6.832339961e-06,0) (1.454786252e-08,0) (2.35247391e-06,0) (-7.547512391e-05,0) (-1.072474815e-08,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.09590197642,0) (-0.1401646988,0) (-0.002985838421,0) (0.01780950172,0) (0.003649578912,0) (-0.002683292763,0) (-0.0006693273457,0) (0.0002766372549,0) (0.0002942175258,0) (-8.172856693e-05,0) (-2.758117892e-05,0) (-4.976700232e-06,0) (2.128685141e-05,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.01470014553,0) (0.01382695546,0) (-0.0003039299897,0) (-4.71970691e-05,0) (9.103863821e-05,0) (0.000163575563,0) (-9.961621062e-05,0) (-2.390391798e-05,0) (5.002522838e-05,0) (1.012786441e-05,0) (-7.88201233e-06,0) (6.23141672e-06,0) (8.301457933e-06,0) (-1.457628927e-06,0) (-0.04559196335,0) (-0.02299600676,0) (0.008358714646,0) (1.091418551e-06,0) (0.01108001222,0) (0.0001174809611,0) (1.180077153e-08,0) (-0.0004752201501,0) (-5.445124097e-06,0) (-7.103876161e-10,0) (-3.157105631e-06,0) (-9.404551985e-10,0) (-3.878017573e-05,0) (0.0003533999622,0) (2.141472362e-05,0) (3.593291973e-09,0) (7.639707444e-05,0) (-1.211070338e-09,0) (-2.325109286e-05,0) (-0.0002136717171,0) (-9.75273999e-10,0) (-2.050776465e-05,0) (2.993656717e-05,0) (-1.380484768e-10,0) (-1.387528677e-05,0) (6.936217859e-05,0) (-1.771963067e-10,0) (2.805955058e-08,0) (-1.784210166e-05,0) (8.180342229e-07,0) (4.010017397e-11,0) (-1.893631504e-05,0) (-1.860366417e-10,0) (-5.633722485e-06,0) (1.251832324e-05,0) (-1.176319828e-10,0) (-2.00923065e-06,0) (4.53804567e-06,0) (6.938893904e-18,0) (0.005994823377,0) (-7.444950055e-08,0) (-0.003435817589,0) (-0.1102116782,0) (-8.67361738e-19,0) (0.001606299893,0) (0.01230377284,0) (1.525748086e-06,0) (0.001045366821,0) (-1.355252716e-20,0) (1.798364778e-05,0) (0.0001386402286,0) (1.737100717e-08,0) (0.0002209886563,0) (-3.388131789e-21,0) (4.610365646e-07,0) (6.817192153e-05,0) (6.679547034e-09,0) (-7.354140116e-06,0) (0,0) (6.988489398e-05,0) (4.1665471e-05,0) (2.546341754e-08,0) (0.0001696441168,0) (1.016439537e-20,0) (9.362266021e-06,0) (-1.188796278e-08,0) (8.158151922e-05,0) (-8.232622071e-05,0) (8.470329473e-21,0) (7.420259143e-06,0) (-4.143616472e-09,0) (-3.256963719e-05,0) (-0.000166117142,0) (-1.694065895e-21,0) (2.488480358e-06,0) (-1.386998724e-09,0) (-6.937063544e-05,0) (5.261433427e-05,0) (1.696781277e-08,0) (4.235164736e-22,0) (-1.09460803e-11,0) (-7.964340301e-06,0) (1.633611477e-05,0) (6.352747104e-22,0) (7.199518179e-07,0) (-5.160270666e-10,0) (3.653434698e-06,0) (-3.163718351e-05,0) (-4.235164736e-22,0) (1.047169952e-06,0) (6.944596701e-07,0) (-6.615208134e-10,0) (-2.354858994e-05,0) (5.29902449e-07,0) (-4.235164736e-22,0) (-2.91384935e-10,0) (-1.338045233e-05,0) (4.545817498e-06,0) (-2.117582368e-22,0) (3.968631531e-07,0) (-1.826512278e-10,0) (3.288624992e-07,0) (-1.102174207e-05,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0.0003039026374,-0.0005263748085) (0.04090131005,-0.07084314711) (-0.00883687416,0.01530591502) (0.01252654015,-0.02169660398) (-0.000346879798,0.0006008134342) (-5.135379222e-06,8.894737729e-06) (0.001183168129,-0.002049307314) (-0.00268255013,0.004646313118) (5.808926845e-07,-1.006135643e-06) (0.001574284488,-0.002726740719) (-0.004459427703,0.007723955355) (1.129113895e-06,-1.955682633e-06) (0.0001341706355,-0.0002323903576) (0.0003683995724,-0.0006380867769) (-1.952858243e-07,3.382449696e-07) (-4.227609596e-05,7.322434614e-05) (9.017141291e-05,-0.0001561814685) (-1.85615821e-08,3.214960327e-08) (3.392569073e-05,-5.876102003e-05) (0.0002193194444,-0.0003798724208) (-9.853361838e-08,1.706652333e-07) (0.0001346486464,-0.0002332182967) (-0.0003281340941,0.0005683449226) (7.513718213e-08,-1.30141417e-07) (2.344440262e-05,-4.060689649e-05) (4.508202613e-05,-7.808435976e-05) (-2.665283983e-08,4.616407275e-08) (3.529806653e-05,-6.113804464e-05) (-8.179885248e-05,0.0001416797685) (1.80411161e-08,-3.12481297e-08) (3.253944728e-05,-5.635997594e-05) (1.08655697e-05,-1.881971877e-05) (-1.708094113e-08,2.958505788e-08) (1.043761257e-05,-1.807847528e-05) (-3.251583845e-05,5.631908425e-05) (8.68155776e-09,-1.503689913e-08) (1.137503137e-05,-1.970213227e-05) (5.505628404e-07,-9.536028123e-07) (-4.783889003e-09,8.285938811e-09) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.02101305131,-0.03639567249) (-0.01883018317,0.03261483397) (0.0001264463693,-0.0002190115361) (6.834581865e-05,-0.0001183784304) (-9.063998106e-05,0.0001569930524) (-0.0002675942571,0.0004634868491) (9.461888584e-05,-0.0001638847176) (6.093280015e-05,-0.0001055387057) (-5.903420635e-05,0.0001022502448) (-2.685320506e-05,4.65111155e-05) (8.271937295e-06,-1.432741567e-05) (-3.536237701e-06,6.124943366e-06) (-1.181918528e-05,2.04714294e-05) (0.01305259065,-0.02260775017) (-1.972421406e-05,3.41633409e-05) (-3.139793852e-05,5.438282477e-05) (-0.001208003877,0.002092324091) (1.712798772e-06,-2.966654497e-06) (-0.01682721675,0.02914559437) (-2.585942318e-05,4.47898348e-05) (9.67925942e-09,-1.67649691e-08) (0.0005877851435,-0.001018073733) (1.150133528e-06,-1.992089707e-06) (-3.493905947e-10,6.051622618e-10) (6.952941289e-06,-1.204284757e-05) (8.190971413e-08,-1.418717865e-07) (1.32217184e-05,-2.290068804e-05) (-0.0004639768554,0.0008036314871) (-6.629958665e-10,1.148342526e-09) (1.637002792e-05,-2.835372008e-05) (-0.0002004334016,0.0003471608352) (9.621648202e-11,-1.666518354e-10) (-1.475131992e-05,2.555003558e-05) (0.0002859360877,-0.0004952558317) (1.363844101e-07,-2.362247277e-07) (8.972964103e-10,-1.554162972e-09) (-1.642133626e-05,2.844258873e-05) (6.808895039e-11,-1.179335215e-10) (8.86002333e-06,-1.534601056e-05) (-0.0001070329349,0.0001853864814) (1.530817236e-11,-2.651453229e-11) (1.09037461e-06,-1.888584223e-06) (-4.296340024e-06,7.441479207e-06) (2.752512015e-10,-4.767490659e-10) (-7.394344286e-07,1.280737999e-06) (1.652763697e-05,-2.862670696e-05) (7.276235858e-11,-1.260281019e-10) (3.451371935e-06,-5.977951547e-06) (-1.976500436e-05,3.423399176e-05) (3.583427253e-11,-6.206678068e-11) (3.65150322e-06,-6.3245891e-06) (-1.973991048e-05,3.419052789e-05) (4.33680869e-19,1.301042607e-18) (-0.0008395542634,0.00145415064) (0.02522679048,-0.04369408282) (-3.126224837e-05,5.414780254e-05) (-0.01100183246,0.01905573281) (-1.084202172e-19,-3.252606517e-19) (6.005470316e-05,-0.0001040177971) (-0.003199103504,0.005541009808) (9.138118664e-07,-1.582768581e-06) (-0.002344817337,0.004061342763) (4.404571326e-20,-5.421010862e-20) (5.727926757e-07,-9.921060165e-07) (-1.287812239e-05,2.230556228e-05) (8.725406379e-09,-1.511284716e-08) (-0.000335289152,0.0005807378464) (-6.352747104e-22,8.470329473e-22) (1.81243952e-09,-3.139237334e-09) (-1.242058352e-05,2.151308171e-05) (3.802120767e-09,-6.585466345e-09) (2.538152278e-06,-4.396208702e-06) (1.694065895e-20,-2.710505431e-20) (9.202421743e-08,-1.593906201e-07) (-2.195446888e-10,3.802625555e-10) (-5.129786172e-06,8.885050281e-06) (-0.0002810210377,0.0004867427153) (2.964615315e-21,8.470329473e-22) (3.473961335e-07,-6.017077536e-07) (-1.186831509e-09,2.055652473e-09) (-7.965351864e-05,0.0001379639413) (0.0001256283905,-0.0002175947552) (-1.482307658e-21,-1.694065895e-21) (-9.779151322e-07,1.693798695e-06) (5.110513569e-09,-8.851669155e-09) (3.289864391e-06,-5.698212276e-06) (0.0001171394555,-0.0002028914885) (8.893845946e-21,1.270549421e-21) (-3.844266251e-07,6.658464465e-07) (2.55914016e-09,-4.432560781e-09) (2.632175311e-05,-4.559061372e-05) (-6.372623528e-05,0.0001103770773) (-3.494010907e-21,-1.058791184e-21) (-3.632365662e-09,6.291441879e-09) (1.155167341e-11,-2.000808526e-11) (6.979756536e-06,-1.208929295e-05) (-3.434954941e-05,5.94951648e-05) (6.6174449e-22,4.764560328e-22) (-4.430089943e-08,7.673140864e-08) (9.242620673e-11,-1.60086886e-10) (-7.708935966e-06,1.335226877e-05) (2.033211796e-05,-3.521626133e-05) (2.64697796e-23,0) (2.732028175e-11,-4.732011607e-11) (-2.030819374e-07,3.517482337e-07) (4.158427398e-10,-7.202607533e-10) (5.390575629e-06,-9.336750872e-06) (-4.235164736e-22,-2.117582368e-22) (-3.944424504e-08,6.831943648e-08) (1.737627841e-10,-3.009659705e-10) (1.261265833e-05,-2.184576504e-05) (-1.944658249e-05,3.36824689e-05) (6.6174449e-22,-1.535247217e-21) (-1.766566272e-08,3.059782538e-08) (8.522954168e-11,-1.476218965e-10) (2.700280003e-06,-4.67702216e-06) (-4.74143023e-06,8.212398059e-06) -(0.01677258801,-0.02905097462) (0.02573064519,-0.04456678478) (0.001794210947,-0.00310766452) (-0.003074644141,0.005325439867) (-0.0009164076666,0.001587264639) (0.0004100621676,-0.0007102485086) (0.0001761695175,-0.000305134555) (-2.713117662e-05,4.699257638e-05) (-6.232953669e-05,0.0001079579244) (7.706117781e-06,-1.334738753e-05) (6.57026234e-06,-1.138002819e-05) (2.192435553e-06,-3.797409769e-06) (-3.737819008e-06,6.474092431e-06) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.0411321873,0) (-0.008339062533,0) (0.0006096469769,0) (-0.001541034196,0) (0.0003931502828,0) (-1.829129434e-05,0) (-1.884297833e-05,0) (-5.725387206e-06,0) (6.503070519e-06,0) (1.447036132e-05,0) (-3.098376047e-06,0) (4.108944902e-07,0) (2.993889774e-06,0) (-0.003692931319,0) (6.684943117e-06,0) (0.006341380197,0) (-0.0001230406465,0) (-2.74369599e-07,0) (-0.04913856285,0) (6.893948142e-06,0) (1.71308782e-08,0) (0.007067222778,0) (1.30112031e-05,0) (-5.544016143e-08,0) (-0.002630298682,0) (1.854554824e-10,0) (-4.611068783e-08,0) (0.0005833114635,0) (-4.475959074e-11,0) (-3.716938248e-07,0) (-5.172975408e-06,0) (-6.23653338e-11,0) (-9.518968852e-07,0) (-7.449260097e-05,0) (-2.062491615e-07,0) (-6.585442473e-11,0) (-1.207582855e-06,0) (4.133017006e-11,0) (9.861243906e-08,0) (4.383718543e-05,0) (-2.959197357e-12,0) (9.323612458e-08,0) (3.492314996e-06,0) (-6.522504806e-10,0) (-1.657548191e-06,0) (-1.703770788e-06,0) (4.242558686e-11,0) (4.549582158e-07,0) (2.634266796e-06,0) (4.460116865e-11,0) (8.116553402e-07,0) (6.443219229e-06,0) (-3.252606517e-18,0) (0.0004829576041,0) (0.0001242870854,0) (5.888692216e-06,0) (0.04723623807,0) (-1.029992064e-18,0) (3.294780257e-06,0) (0.001149751687,0) (-3.89436725e-06,0) (-0.04242691604,0) (-1.778769189e-20,0) (-2.768655948e-10,0) (-2.949608241e-08,0) (-2.64989249e-10,0) (-0.001090599805,0) (1.016439537e-20,0) (3.933175975e-11,0) (0.0002019770285,0) (3.09697559e-07,0) (0.0003194157652,0) (-2.541098842e-21,0) (-1.91547415e-10,0) (-2.098780887e-11,0) (-1.35141104e-08,0) (-0.0001132326063,0) (6.088049308e-22,0) (-2.624027897e-08,0) (-5.605204444e-10,0) (-2.631350537e-06,0) (-2.46417407e-05,0) (2.713152409e-22,0) (1.457134286e-09,0) (-1.394145316e-10,0) (-1.684666273e-07,0) (-8.469855444e-06,0) (2.117582368e-22,0) (-5.243764032e-09,0) (-1.348940671e-10,0) (5.599469354e-08,0) (-1.022219073e-05,0) (1.694065895e-21,0) (1.779518342e-09,0) (2.80884512e-11,0) (1.111762798e-07,0) (5.549890313e-05,0) (-2.514629062e-22,0) (1.163451117e-08,0) (-2.697230875e-10,0) (-7.446974375e-06,0) (-5.385302829e-06,0) (-7.754818243e-26,0) (3.272970404e-10,0) (-3.370708344e-09,0) (9.449748969e-13,0) (3.578609755e-09,0) (7.610061635e-23,0) (9.0329589e-09,0) (1.116684355e-10,0) (8.917771118e-07,0) (5.110647247e-06,0) (4.63221143e-23,0) (2.385951371e-08,0) (1.501339326e-10,0) (2.921382097e-06,0) (1.83702408e-06,0) -(0.02917389264,0) (0.008838028944,0) (-0.001424096841,0) (0.001390526193,0) (-0.0003488462539,0) (3.20272016e-05,0) (1.878777362e-05,0) (1.011353251e-06,0) (-9.024838172e-06,0) (-5.66671952e-06,0) (1.99122386e-06,0) (-5.609910046e-07,0) (-2.414963783e-06,0) (3.131764434e-06,0) (0.02113859613,0) (-0.02661209925,0) (-7.166687639e-05,0) (4.97322524e-07,0) (0.03782720766,0) (-5.177796953e-06,0) (-1.043334764e-08,0) (-0.004535076858,0) (-4.088571921e-05,0) (7.933896824e-08,0) (0.001461529417,0) (-1.081506332e-10,0) (9.410884509e-08,0) (-0.0002381860178,0) (1.194202806e-06,0) (-4.647773923e-10,0) (1.261180451e-06,0) (1.372863619e-10,0) (1.038364612e-06,0) (4.216515965e-05,0) (9.30177865e-11,0) (2.694383648e-07,0) (2.749813509e-06,0) (-2.841116772e-11,0) (-1.995626923e-07,0) (-3.784413631e-05,0) (1.343156087e-10,0) (4.046369427e-06,0) (2.801726811e-06,0) (6.603081789e-07,0) (-1.781739592e-10,0) (-1.048868705e-07,0) (-4.49845343e-11,0) (-4.575800789e-07,0) (-3.241043012e-06,0) (-4.809009413e-11,0) (-7.612857105e-07,0) (-3.494038197e-06,0) (0,0) (-0.0001781248725,0) (-5.875863018e-06,0) (-0.00325358254,0) (-0.03202255516,0) (-8.67361738e-19,0) (2.27129912e-06,0) (-0.002309571161,0) (4.314038673e-06,0) (0.02951567944,0) (0,0) (9.109152453e-08,0) (7.736946357e-07,0) (6.824590353e-09,0) (0.002846967579,0) (0,0) (-1.380258363e-08,0) (-0.00014659622,0) (-2.405362853e-07,0) (-0.000837203801,0) (0,0) (1.804379704e-07,0) (1.404322281e-07,0) (4.172190712e-10,0) (0.0002216784642,0) (0,0) (2.542909593e-08,0) (2.030650731e-10,0) (-3.866749846e-08,0) (3.31291695e-05,0) (-2.64697796e-23,0) (-1.148514282e-08,0) (-6.330232694e-10,0) (-4.027290359e-06,0) (-3.296411943e-06,0) (0,0) (-1.548017159e-09,0) (-4.061005464e-11,0) (4.700979461e-08,0) (-5.014173148e-06,0) (-4.001910504e-10,0) (-8.470329473e-22,0) (-4.040786576e-12,0) (-5.617850981e-07,0) (-2.586134062e-05,0) (5.29395592e-23,0) (7.229839581e-09,0) (2.418124915e-10,0) (6.181658491e-06,0) (1.538533616e-06,0) (-2.64697796e-23,0) (5.335196032e-09,0) (3.786615396e-07,0) (-2.026498209e-10,0) (1.980117903e-07,0) (-6.313576244e-09,0) (0,0) (-1.199476441e-10,0) (-1.961240248e-06,0) (-3.991018329e-06,0) (-2.117582368e-22,0) (-1.197908084e-08,0) (-2.132048396e-10,0) (-1.09602752e-06,0) (-5.6965094e-07,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0.0616499241,0) (-0.05612508663,0) (-0.005524837477,0) (-0.09849767551,0) (0.003987118413,0) (0.0945105571,0) (-0.03774692604,0) (-0.03968505748,0) (0.07743198352,0) (-0.01322794725,0) (-0.0355135707,0) (0.04874151795,0) (-0.03985523459,0) (0.009503484414,0) (0.03035175017,0) (-0.02158210048,0) (0.004347737172,0) (0.01723436331,0) (-0.01398296519,0) (0.00355609991,0) (0.01042686528,0) (-0.002231696874,0) (-0.003401939794,0) (0.005633636669,0) (-0.004236003097,0) (0.0009642830837,0) (0.003271720014,0) (-0.0007253584191,0) (-0.0008634759321,0) (0.001588834351,0) (-0.000973594934,0) (0.0001368578979,0) (0.0008367370361,0) (-6.904381328e-05,0) (-0.0002476788081,0) (0.0003167226213,0) (-0.0001631146387,0) (1.171560823e-05,0) (0.0001513990305,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.0006430541106,0) (-0.002209624475,0) (-2.335865557e-06,0) (-0.0002782637621,0) (-2.751354053e-05,0) (-4.977489973e-05,0) (-5.19439452e-06,0) (-3.03377501e-06,0) (-4.441312862e-06,0) (-1.389602407e-06,0) (-1.616956109e-07,0) (-3.140627274e-08,0) (-4.069859621e-07,0) (-0.02315446542,0) (0.02486709624,0) (-0.0002113144789,0) (-0.002883591821,0) (0.002752586386,0) (-0.002965630851,0) (-0.0002318971576,0) (0.0002190437346,0) (-0.0007133624739,0) (-0.0002270707624,0) (0.0002787001547,0) (-0.0001841079618,0) (1.946548646e-05,0) (-1.743881751e-05,0) (-0.0002488508671,0) (6.647567465e-06,0) (-1.942370938e-05,0) (-1.356825305e-06,0) (2.009289265e-06,0) (-7.120632471e-06,0) (-2.917357685e-05,0) (2.017518414e-06,0) (8.169870928e-06,0) (-1.023318319e-05,0) (1.202217678e-06,0) (7.088695561e-07,0) (-1.562354862e-05,0) (4.044755587e-07,0) (3.404607548e-08,0) (-4.521418737e-07,0) (1.300895681e-06,0) (-2.972631304e-06,0) (1.388004183e-06,0) (1.167951802e-06,0) (1.454595627e-06,0) (-3.315964822e-06,0) (6.652579445e-07,0) (1.014281671e-06,0) (-2.410363274e-06,0) (2.168404345e-18,0) (-0.001830745551,0) (-0.04184804203,0) (0.04614153827,0) (-0.0003918889316,0) (8.67361738e-19,0) (-1.505671622e-05,0) (-0.0107099765,0) (0.01335057348,0) (-0.003158834692,0) (-1.355252716e-20,0) (-6.739309617e-07,0) (-3.000331146e-05,0) (3.095587548e-05,0) (-0.001514871375,0) (1.355252716e-20,0) (-1.267303586e-10,0) (-0.0008741803541,0) (0.0008591989311,0) (5.958119995e-05,0) (-2.117582368e-21,0) (-6.219833605e-07,0) (4.261561381e-06,0) (-4.506042692e-06,0) (-0.0002959797984,0) (-2.117582368e-22,0) (-2.325279806e-06,0) (1.61001834e-05,0) (1.56959449e-05,0) (-3.949717088e-05,0) (-4.235164736e-21,0) (-2.219766983e-06,0) (2.561091166e-05,0) (-3.502433912e-05,0) (-1.382955411e-05,0) (5.29395592e-21,0) (-1.682357216e-06,0) (1.529640096e-05,0) (-6.160454092e-06,0) (-2.125727712e-05,0) (0,0) (-7.037685441e-08,0) (3.9958929e-07,0) (2.960709067e-07,0) (-8.452535281e-06,0) (1.058791184e-22,0) (-1.588206347e-07,0) (1.504087388e-06,0) (-4.685734219e-06,0) (2.429661067e-06,0) (0,0) (-2.96845995e-10,0) (-7.277574765e-07,0) (4.071144148e-06,0) (-3.096918026e-06,0) (-4.367513634e-22,0) (-3.56383646e-07,0) (2.252412441e-06,0) (2.637815303e-06,0) (-5.847758739e-06,0) (-1.32348898e-23,0) (-2.276567175e-07,0) (1.337660336e-06,0) (1.200711633e-06,0) (-2.564584225e-06,0) -(-0.01091369342,0) (-0.04131632783,0) (-0.0004679952334,0) (-0.004601739364,0) (-0.0009625373212,0) (-0.000644989832,0) (-0.0001996634222,0) (-1.619117925e-05,0) (-0.0001105964721,0) (-6.854775913e-06,0) (-5.091165187e-06,0) (-3.381943069e-06,0) (-6.962613624e-06,0) (0.02620752866,0) (0.002224269497,0) (-0.001000892129,0) (0.0003047929621,0) (0.003673383099,0) (-0.05422961591,0) (-1.170549913e-05,0) (0.0001381032981,0) (-0.01748116626,0) (5.58488008e-05,0) (0.0003390297478,0) (-0.001362512354,0) (6.763664198e-06,0) (2.347166408e-06,0) (-0.005173910596,0) (-1.001395262e-05,0) (8.679345149e-06,0) (-1.134781363e-05,0) (4.708510543e-06,0) (-1.51237669e-05,0) (-0.0006345178053,0) (7.640857198e-06,0) (-8.106428758e-06,0) (-8.057400327e-05,0) (4.942920937e-07,0) (-1.090440533e-06,0) (-0.0002032277807,0) (4.625928184e-07,0) (-3.831370518e-06,0) (-2.711142746e-06,0) (-2.393650938e-06,0) (1.517526643e-06,0) (4.079308649e-07,0) (9.838166031e-07,0) (-2.85806264e-06,0) (-1.98571424e-05,0) (5.56293275e-07,0) (-1.496586117e-06,0) (-6.720478032e-06,0) (-2.168404345e-19,0) (4.480721443e-05,0) (0.04632333236,0) (-0.001379381288,0) (-0.01073557061,0) (0,0) (2.884086942e-05,0) (0.002367327906,0) (0.01585694053,0) (-0.01995489753,0) (0,0) (-5.527808322e-07,0) (2.718459272e-06,0) (0.0001926337373,0) (-0.02909695075,0) (0,0) (-4.47964897e-09,0) (-9.694780846e-05,0) (0.0008472184569,0) (-0.0008468054569,0) (5.421010862e-20,0) (-2.241467871e-06,0) (-2.480320484e-06,0) (3.082178995e-05,0) (-0.004571428628,0) (1.355252716e-20,0) (-3.003345517e-07,0) (9.997786745e-06,0) (1.10553403e-06,0) (-0.0006493401365,0) (0,0) (-2.479739066e-07,0) (3.770913572e-05,0) (-0.0001390322279,0) (-0.0001175146047,0) (0,0) (-8.278796515e-08,0) (9.703906891e-06,0) (4.395115462e-06,0) (-0.0004388356181,0) (-3.966417036e-10,0) (0,0) (3.483258316e-08,0) (-1.062099363e-06,0) (-4.860039762e-05,0) (-8.470329473e-22,0) (-1.83956344e-08,0) (2.297772888e-06,0) (-2.83623588e-05,0) (-7.201757854e-06,0) (0,0) (-3.23672139e-08,0) (-3.897417542e-06,0) (4.070176231e-06,0) (-1.782127644e-06,0) (-1.71723915e-08,0) (0,0) (1.666924655e-06,0) (-8.914065602e-06,0) (-1.780002849e-05,0) (0,0) (-3.673872713e-09,0) (1.208697071e-06,0) (-1.088177979e-06,0) (-4.919808827e-07,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (-0.06251041084,0) (-0.02312716577,0) (0.08563757661,0) (-0.03295383896,0) (0.1276303109,0) (-0.0946764719,0) (0.1030608728,0) (-0.02550019993,0) (-0.07756067291,0) (0.0673281933,0) (-0.01850623727,0) (-0.04882195603,0) (-0.003708510075,0) (0.03411132104,0) (-0.03040281096,0) (0.01146538456,0) (0.005797797515,0) (-0.01726318207,0) (-0.0006699053532,0) (0.01111428551,0) (-0.01044438016,0) (0.007652943725,0) (-0.002009962988,0) (-0.005642980737,0) (-0.0004988181503,0) (0.003776045562,0) (-0.003277227412,0) (0.002131064227,0) (-0.0005395912934,0) (-0.001591472934,0) (-0.0002399694735,0) (0.00107812515,0) (-0.0008381556767,0) (0.0004388767921,0) (-0.000121633216,0) (-0.0003172435761,0) (-5.066889512e-05,0) (0.0002023292553,0) (-0.0001516603602,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.01463443893,0) (0.0502859929,0) (5.315895081e-05,0) (0.006332645988,0) (0.0006261451749,0) (0.001132762731,0) (0.0001182125239,0) (6.904177173e-05,0) (0.0001010741099,0) (3.162416853e-05,0) (3.679821814e-06,0) (7.147348455e-07,0) (9.262068479e-06,0) (-0.009313391119,0) (-0.02485528906,0) (2.158341618e-06,0) (-0.0009642227618,0) (-0.002752518914,0) (0.07418909208,0) (-7.592983434e-05,0) (-0.0002192988358,0) (0.01682223941,0) (-0.0001078732284,0) (-0.0002790327477,0) (0.003401814836,0) (-1.969725446e-05,0) (-7.352308847e-06,0) (0.005644203073,0) (-6.658775869e-06,0) (1.481098257e-05,0) (0.000313481762,0) (-2.012532792e-06,0) (7.210277511e-06,0) (0.0007750485214,0) (2.629829628e-06,0) (-8.184795682e-06,0) (6.597129124e-06,0) (-1.204185994e-06,0) (9.994640053e-07,0) (0.0003122689409,0) (-4.05238327e-07,0) (3.652865445e-08,0) (6.786751343e-07,0) (-1.303286861e-06,0) (2.952998217e-06,0) (4.80736646e-06,0) (-1.169838614e-06,0) (3.186477351e-06,0) (1.376395317e-05,0) (-6.663773466e-07,0) (2.4025461e-06,0) (1.489570409e-05,0) (0,0) (-0.0005631257223,0) (-0.01669247861,0) (-0.04613755182,0) (0.01626508487,0) (2.439454888e-19,0) (-8.490090396e-06,0) (-0.005142060373,0) (-0.01336677666,0) (0.03065388695,0) (4.607859233e-19,0) (-2.601810625e-07,0) (-1.103815192e-05,0) (-3.097608686e-05,0) (0.03451093673,0) (1.016439537e-20,0) (-3.774812831e-11,0) (-0.0002830758546,0) (-0.0008602105367,0) (0.0001283005263,0) (-1.355252716e-19,0) (-2.367183435e-07,0) (-4.268285589e-06,0) (-9.777383985e-07,0) (0.006761023897,0) (6.035109749e-21,0) (-6.8364659e-07,0) (-1.612492008e-05,0) (3.081896923e-05,0) (0.0002141657343,0) (1.482307658e-21,0) (-9.918547086e-07,0) (-2.565648968e-05,0) (-1.776462113e-06,0) (0.0006078986526,0) (-1.672890071e-20,0) (-4.959282655e-07,0) (-1.532305696e-05,0) (-4.336478179e-06,0) (0.0003342957791,0) (1.058791184e-22,0) (-2.228367745e-08,0) (-4.002309418e-07,0) (4.816661111e-07,0) (0.0001780711778,0) (2.382280164e-22,0) (-8.446585262e-08,0) (-1.506512155e-06,0) (1.160455761e-05,0) (1.071428823e-05,0) (-1.32348898e-23,0) (1.991555512e-09,0) (-3.123218372e-07,0) (-4.078876345e-06,0) (-1.21309979e-06,0) (-3.97046694e-22,0) (-9.18463487e-08,0) (-2.255974777e-06,0) (6.034671105e-06,0) (2.62148383e-05,0) (-6.6174449e-23,0) (-5.222643711e-08,0) (-1.339863123e-06,0) (5.215289271e-06,0) (1.954276747e-06,0) -(-0.003549268956,0) (-0.01343658413,0) (-0.0001521978757,0) (-0.001496542925,0) (-0.0003130291189,0) (-0.0002097587224,0) (-6.49330304e-05,0) (-5.265573046e-06,0) (-3.596734947e-05,0) (-2.229258458e-06,0) (-1.655710296e-06,0) (-1.099849986e-06,0) (-2.264328624e-06,0) (-0.02625611128,0) (0.03211320294,0) (0.003063780447,0) (0.004903291854,0) (-0.003682232749,0) (-0.01756345289,0) (0.0001924317751,0) (-0.0001384529431,0) (-0.005697965572,0) (0.0004391819773,0) (-0.000339842748,0) (-0.0004140257883,0) (-6.779946273e-06,0) (7.980037421e-06,0) (-0.001680857268,0) (1.12590218e-05,0) (-8.694108655e-06,0) (-6.689394366e-06,0) (-4.720166369e-06,0) (6.909971635e-06,0) (-0.0002119300653,0) (-7.660029649e-06,0) (-6.315433174e-06,0) (-1.237961572e-05,0) (-4.954443068e-07,0) (-7.960133638e-07,0) (-6.499462137e-05,0) (-4.636178842e-07,0) (-6.185385077e-08,0) (-1.451794079e-06,0) (8.328918145e-07,0) (-1.520070884e-06,0) (5.349167374e-07,0) (-9.861286637e-07,0) (-1.906935634e-06,0) (-4.174253742e-06,0) (-5.575045068e-07,0) (-9.86831296e-07,0) (-9.470422496e-07,0) (0,0) (0.002828880622,0) (-0.04641579736,0) (-0.001282046906,0) (0.05600852667,0) (-4.33680869e-19,0) (0.0007314810716,0) (0.01984557116,0) (-0.01589400852,0) (-0.005236486429,0) (0,0) (8.808045082e-06,0) (0.0002536017549,0) (-0.0001931366618,0) (-0.009468612536,0) (-5.421010862e-20,0) (2.225154949e-07,0) (0.001174190644,0) (-0.0008494051089,0) (-0.0003564038288,0) (0,0) (3.442811834e-05,0) (9.018351715e-06,0) (-3.090440545e-05,0) (-0.001490739516,0) (0,0) (4.609909213e-06,0) (-1.002012226e-05,0) (8.682331798e-06,0) (-0.0002109323487,0) (-5.082197684e-21,0) (3.659487597e-06,0) (-3.781049624e-05,0) (2.895905309e-05,0) (-6.605743182e-05,0) (-3.388131789e-21,0) (1.226847403e-06,0) (-9.727843585e-06,0) (8.073711052e-06,0) (-0.0001377292668,0) (8.320855081e-09,0) (0,0) (-3.491009668e-08,0) (-4.928831568e-07,0) (-1.562019084e-05,0) (-1.058791184e-22,0) (3.508562431e-07,0) (-2.303710515e-06,0) (-4.342307445e-06,0) (-4.529449878e-06,0) (2.117582368e-22,0) (5.141031785e-07,0) (-2.076654126e-06,0) (-4.074920738e-06,0) (5.103558646e-06,0) (2.617659823e-07,0) (0,0) (-1.67094328e-06,0) (-4.923886331e-06,0) (-1.818172343e-06,0) (0,0) (1.916922473e-07,0) (-1.21138326e-06,0) (-5.785828522e-07,0) (1.476275077e-06,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0.08286250691,0) (0.02431037598,0) (0.06871438145,0) (0.04930718395,0) (0.09326492082,0) (0.1255216072,0) (0.1061377676,0) (0.01064733091,0) (0.1028501942,0) (0.06073138578,0) (0.01278119823,0) (0.06474155448,0) (0.02720911517,0) (0.01856972471,0) (0.04031468813,0) (0.02489475137,0) (0.001098999625,0) (0.02289168401,0) (0.01002216348,0) (0.005704391145,0) (0.01384947954,0) (0.007451325099,0) (0.001045456362,0) (0.007482962107,0) (0.00281298841,0) (0.002121681757,0) (0.004345654447,0) (0.002153156807,0) (0.0002431658316,0) (0.002110392238,0) (0.000552027313,0) (0.0007100396512,0) (0.001111378275,0) (0.0003829383684,0) (9.474450534e-05,0) (0.0004206906223,0) (8.459498418e-05,0) (0.0001437766924,0) (0.0002010868071,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.01151542489,0) (0.03956862145,0) (4.182927054e-05,0) (0.004982979502,0) (0.0004926958775,0) (0.0008913388619,0) (9.301808191e-05,0) (5.432701179e-05,0) (7.953235012e-05,0) (2.488416119e-05,0) (2.895547407e-06,0) (5.624045764e-07,0) (7.288058967e-06,0) (0.01044095573,0) (0.03297631033,0) (0.0001606173415,0) (0.001446472844,0) (0.003652617632,0) (0.05815477759,0) (0.0001173327325,0) (0.0002910130741,0) (0.01321743319,0) (8.960512001e-05,0) (0.000370321967,0) (0.002702735249,0) (2.612306591e-05,0) (7.450636785e-06,0) (0.004441884828,0) (8.839061027e-06,0) (2.57761275e-05,0) (0.0002373242255,0) (2.671175919e-06,0) (1.079249771e-05,0) (0.0006061888617,0) (4.643013261e-07,0) (1.085909936e-05,0) (1.26714713e-05,0) (1.598089418e-06,0) (2.20050347e-07,0) (0.0002471462147,0) (5.375848748e-07,0) (1.919689554e-09,0) (8.5178208e-07,0) (1.732231442e-06,0) (4.45895687e-06,0) (2.579457553e-06,0) (1.552409348e-06,0) (1.30742986e-06,0) (1.287012362e-05,0) (8.842413405e-07,0) (1.047868629e-06,0) (1.304197819e-05,0) (-6.505213035e-19,0) (0.0009533201785,0) (0.01896428393,0) (0.06121497228,0) (0.0125521507,0) (-3.252606517e-19,0) (4.931195373e-06,0) (0.004185764753,0) (0.017738704,0) (0.02547954574,0) (-1.219727444e-18,0) (3.110674544e-07,0) (1.42753078e-05,0) (4.111206382e-05,0) (0.02715447401,0) (1.355252716e-20,0) (6.693630906e-11,0) (0.0004446572613,0) (0.001141388293,0) (5.175547801e-05,0) (-2.710505431e-20,0) (2.896624921e-07,0) (5.66493273e-06,0) (2.653219922e-06,0) (0.005319222649,0) (4.446922973e-21,0) (1.23469439e-06,0) (2.140210977e-05,0) (1.142126714e-05,0) (0.0001911500099,0) (4.235164736e-21,0) (9.22882494e-07,0) (3.405631521e-05,0) (2.500444833e-05,0) (0.000468632467,0) (-1.270549421e-20,0) (8.923175134e-07,0) (2.033674126e-05,0) (1.365401367e-06,0) (0.0002679810755,0) (-3.388131789e-21,0) (3.61685241e-08,0) (5.311357506e-07,0) (1.40319171e-07,0) (0.0001405914279,0) (7.676236084e-22,0) (5.585209319e-08,0) (1.999539627e-06,0) (1.227245632e-05,0) (6.248313256e-06,0) (2.64697796e-23,0) (1.724997877e-09,0) (3.122744061e-07,0) (5.411018301e-06,0) (1.415448965e-06,0) (8.999725065e-22,0) (1.989853278e-07,0) (2.994061638e-06,0) (2.564169571e-06,0) (2.415994883e-05,0) (-5.29395592e-23,0) (1.319703087e-07,0) (1.777963699e-06,0) (3.027655855e-06,0) (3.402615008e-06,0) -(0.00553605759,0) (0.02095803515,0) (0.0002373942959,0) (0.002334268809,0) (0.0004882546943,0) (0.0003271762106,0) (0.0001012808553,0) (8.213104159e-06,0) (5.610093811e-05,0) (3.477139478e-06,0) (2.582533942e-06,0) (1.715517459e-06,0) (3.531841012e-06,0) (0.03483145319,0) (0.02253296123,0) (0.003063275652,0) (0.003468356907,0) (0.004882815777,0) (0.02756244955,0) (0.0001539254955,0) (0.0001835979054,0) (0.008857709221,0) (0.0002891550959,0) (0.0004506771526,0) (0.0007129915528,0) (8.993340896e-06,0) (4.250060433e-06,0) (0.002625833686,0) (1.60314874e-05,0) (1.152525194e-05,0) (3.496369595e-06,0) (6.261644115e-06,0) (1.658833738e-05,0) (0.0003176578563,0) (1.01594509e-05,0) (1.337741548e-06,0) (5.129237847e-05,0) (6.572109132e-07,0) (2.20383207e-07,0) (0.0001039161773,0) (6.150600883e-07,0) (2.836013573e-06,0) (9.454592508e-07,0) (2.430401289e-06,0) (2.015296627e-06,0) (9.633593424e-08,0) (1.307998808e-06,0) (7.127991709e-07,0) (1.179406541e-05,0) (7.39491486e-07,0) (3.820896297e-07,0) (4.342680978e-06,0) (0,0) (0.002099748074,0) (0.06156955733,0) (7.114789054e-05,0) (0.05029811769,0) (0,0) (0.0005299594019,0) (0.01318363225,0) (0.02107802791,0) (0.01106375401,0) (2.168404345e-19,0) (7.058923414e-06,0) (0.0001891960434,0) (0.0002561189377,0) (0.01475511786,0) (0,0) (1.711878633e-07,0) (0.0009584736151,0) (0.001126274353,0) (0.0003682274248,0) (-2.710505431e-20,0) (2.7652106e-05,0) (8.673773527e-06,0) (4.097130545e-05,0) (0.002315825677,0) (0,0) (3.702756937e-06,0) (1.329608283e-05,0) (5.70924401e-06,0) (0.0003295600291,0) (2.541098842e-21,0) (2.946557407e-06,0) (5.015820037e-05,0) (0.0001264260713,0) (3.861267461e-05,0) (-6.776263578e-21,0) (9.875766575e-07,0) (1.29029779e-05,0) (2.779852115e-06,0) (0.0002263576027,0) (6.573952743e-09,0) (-4.235164736e-22,0) (4.630728464e-08,0) (4.275873786e-07,0) (2.47925857e-05,0) (3.705769144e-22,0) (2.784547616e-07,0) (3.05584326e-06,0) (1.806598778e-05,0) (2.003963724e-06,0) (4.235164736e-22,0) (4.120885495e-07,0) (1.368540015e-06,0) (5.405814955e-06,0) (5.188382974e-06,0) (2.103438461e-07,0) (-8.470329473e-22,0) (2.21632634e-06,0) (2.994934864e-06,0) (1.202228621e-05,0) (-1.058791184e-22,0) (1.473351266e-07,0) (1.60672927e-06,0) (3.824359347e-07,0) (1.483102828e-06,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (1.792468198e-05,0) (0.0015942032,0) (-0.1456492277,0) (-0.002288970907,0) (-0.04519188989,0) (1.349672706e-05,0) (0.01039062405,0) (-0.0008488810399,0) (-1.833908765e-06,0) (0.01281429128,0) (-0.0007629577502,0) (-2.261845447e-06,0) (-0.0009122039538,0) (-0.002265202916,0) (6.573132114e-07,0) (-6.462997956e-05,0) (-1.306935015e-05,0) (1.547562452e-08,0) (-0.0003155601183,0) (-0.000622467995,0) (1.928670741e-07,0) (0.0009669418372,0) (-7.371168797e-05,0) (-1.703585845e-07,0) (-9.854256778e-05,0) (-0.0002801178774,0) (7.871574193e-08,0) (0.0002283587626,0) (-1.837131481e-05,0) (-4.027933956e-08,0) (-2.384812022e-05,0) (-0.0001639726644,0) (4.130690869e-08,0) (0.000109272375,0) (-5.321956378e-06,0) (-1.92916415e-08,0) (-3.927606724e-06,0) (-5.36331914e-05,0) (1.42199673e-08,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.07546254497,0) (-0.1102916257,0) (-0.00234947156,0) (0.01401379174,0) (0.002871750125,0) (-0.002111406963,0) (-0.0005266747028,0) (0.0002176780091,0) (0.0002315114256,0) (-6.430989108e-05,0) (-2.170284735e-05,0) (-3.916024248e-06,0) (1.675001957e-05,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.02292890543,0) (-0.02156692623,0) (0.0004740621088,0) (7.361676329e-05,0) (-0.0001419997048,0) (-0.0002551409173,0) (0.0001553787796,0) (3.72847108e-05,0) (-7.802805272e-05,0) (-1.579718001e-05,0) (1.229415824e-05,0) (-9.719602051e-06,0) (-1.29483986e-05,0) (1.933695861e-06,0) (-0.03199064087,0) (-0.02299221789,0) (0.005912559672,0) (-1.447272914e-06,0) (-0.01738794072,0) (9.397260481e-05,0) (-1.564861596e-08,0) (0.0007387482168,0) (-3.585040966e-06,0) (9.420694424e-10,0) (5.436834395e-06,0) (1.247478056e-09,0) (-2.065379919e-05,0) (-0.0005520810976,0) (3.049198037e-05,0) (-4.763408986e-09,0) (-3.993073118e-05,0) (1.606572917e-09,0) (-5.581744661e-05,0) (0.0003202683844,0) (1.293499994e-09,0) (4.343975792e-06,0) (-0.0001240359772,0) (1.831224303e-10,0) (3.841493541e-06,0) (-0.0001108992143,0) (2.350780239e-10,0) (-1.286536979e-06,0) (1.161940272e-05,0) (2.387046427e-06,0) (-5.316445846e-11,0) (-3.410339354e-06,0) (2.467585767e-10,0) (2.105845968e-06,0) (-3.536965701e-05,0) (1.560307562e-10,0) (7.77950799e-07,0) (-2.080929823e-05,0) (5.204170428e-18,0) (0.004449681879,0) (9.875566194e-08,0) (0.0001906725663,0) (-0.09897492918,0) (-2.168404345e-19,0) (0.001163767271,0) (0.008173532278,0) (-2.023388919e-06,0) (-0.002208672077,0) (0,0) (1.441241402e-05,0) (0.000103430604,0) (-2.303572953e-08,0) (-0.0003443707994,0) (-1.694065895e-21,0) (3.546892966e-07,0) (5.564768243e-05,0) (-8.856789814e-09,0) (7.598111631e-06,0) (0,0) (5.613041285e-05,0) (4.007349356e-05,0) (-3.375795271e-08,0) (-0.0002635377927,0) (-6.776263578e-21,0) (7.519930189e-06,0) (1.577459173e-08,0) (5.364558862e-05,0) (0.0001286262247,0) (5.082197684e-21,0) (5.974666933e-06,0) (5.496789673e-09,0) (-0.0001421887402,0) (9.710076482e-05,0) (0,0) (2.003154677e-06,0) (1.839710283e-09,0) (-2.388494044e-05,0) (-8.647148753e-05,0) (1.340554525e-08,0) (-8.470329473e-22,0) (1.451967495e-11,0) (6.909246837e-06,0) (-2.592891019e-05,0) (0,0) (5.713850495e-07,0) (6.845034665e-10,0) (-1.519996164e-05,0) (1.399723361e-05,0) (-1.270549421e-21,0) (8.393777059e-07,0) (-4.576572648e-07,0) (8.775775864e-10,0) (-2.393998219e-05,0) (4.258067386e-07,0) (4.235164736e-22,0) (3.864907411e-10,0) (8.138608507e-06,0) (-3.005827211e-05,0) (-8.470329473e-22,0) (3.050299829e-07,0) (2.42261127e-10,0) (-2.173739453e-07,0) (-1.107271747e-05,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (-0.0004028470466,0.0006977515524) (-0.04299386424,0.07446755728) (-0.007090582965,0.01228124995) (-0.01874283661,0.03246354529) (-0.0002534798879,0.0004390400445) (6.808460863e-06,-1.179260014e-05) (0.001218491756,-0.00211048963) (0.001120069607,-0.001940017466) (-7.702992143e-07,1.334197376e-06) (0.001420036301,-0.002459575022) (0.003079871323,-0.005334493612) (-1.497289225e-06,2.593381012e-06) (-0.0009844018759,0.001705034064) (0.0002005515599,-0.0003473654913) (2.589526051e-07,-4.485190688e-07) (-9.179394658e-05,0.0001589917793) (1.709241288e-05,-2.960492753e-05) (2.461341544e-08,-4.263168609e-08) (-0.0005075475471,0.0008790981388) (0.0001125653912,-0.0001949689767) (1.306577615e-07,-2.263058812e-07) (0.0001311012957,-0.0002270741051) (0.0001706747231,-0.0002956172919) (-9.963682546e-08,1.72576044e-07) (-0.0001322101708,0.0002289947331) (2.533065632e-05,-4.387398374e-05) (3.534207956e-08,-6.121427745e-08) (3.566399888e-05,-6.177185807e-05) (3.686250359e-05,-6.384772911e-05) (-2.392364366e-08,4.143696631e-08) (-7.485395282e-05,0.0001296508494) (7.155927413e-06,-1.239442985e-05) (2.264899878e-08,-3.922921662e-08) (9.107253788e-06,-1.577422628e-05) (2.532776104e-05,-4.386896896e-05) (-1.151244726e-08,1.994014357e-08) (-1.899134758e-05,3.289397892e-05) (3.912341003e-07,-6.776373393e-07) (6.342969012e-09,-1.09863446e-08) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.01653457404,-0.02863872232) (-0.01481693702,0.02566368773) (9.949706138e-05,-0.0001723339655) (5.377938606e-05,-9.314862906e-05) (-7.132203009e-05,0.0001235333798) (-0.0002105623306,0.0003647046547) (7.44529174e-05,-0.0001289562357) (4.794629208e-05,-8.304541391e-05) (-4.645234247e-05,8.045781728e-05) (-2.113002537e-05,3.65982775e-05) (6.508952823e-06,-1.127383699e-05) (-2.782565142e-06,4.819544201e-06) (-9.300181641e-06,1.610838712e-05) (-0.01463285707,0.0253448519) (2.616874833e-05,-4.532560167e-05) (-0.002336540875,0.00404700751) (0.001812179585,-0.003138787114) (-2.272899548e-06,3.936777498e-06) (-0.01319038986,0.02284642541) (3.996000794e-05,-6.921276402e-05) (-1.284453257e-08,2.224738301e-08) (0.0004618297644,-0.0007999126164) (-9.553607913e-07,1.65473343e-06) (4.636983056e-10,-8.031490246e-10) (5.524098285e-06,-9.568018896e-06) (-1.086310209e-07,1.881544475e-07) (-1.339854236e-05,2.320695611e-05) (-0.000365141319,0.0006324433165) (8.800808196e-10,-1.524344694e-09) (2.84893946e-05,-4.934507893e-05) (-0.0001517399338,0.0002628212748) (-1.277053227e-10,2.211921074e-10) (-2.208009141e-05,3.824384015e-05) (0.0002236392519,-0.0003873545469) (2.407892199e-08,-4.170591628e-08) (-1.190479427e-09,2.061970853e-09) (-3.154137007e-05,5.46312555e-05) (-9.036164812e-11,1.565109656e-10) (1.950696771e-06,-3.378705918e-06) (-8.471154588e-05,0.0001467247015) (-2.03076594e-11,3.517389786e-11) (5.730243228e-08,-9.925072411e-08) (-5.392190249e-06,9.339547476e-06) (-3.658433149e-10,6.336592089e-10) (-1.116528349e-06,1.933883829e-06) (8.868127353e-06,-1.536004714e-05) (-9.65577339e-11,1.67242901e-10) (1.416117621e-06,-2.452787669e-06) (-1.848146722e-05,3.201084023e-05) (-4.754985346e-11,8.235876209e-11) (1.592600314e-06,-2.75846466e-06) (-1.728333755e-05,2.993561877e-05) (-4.33680869e-19,-2.602085214e-18) (0.001421288335,-0.002461743608) (-0.02866009467,0.04964074012) (4.147852654e-05,-7.184291538e-05) (-0.008490374326,0.01470575971) (0,-2.710505431e-20) (-3.488083878e-05,6.041538497e-05) (0.002604149643,-0.004510519493) (-1.212696121e-06,2.100451296e-06) (-0.001949014841,0.003375792729) (2.879912021e-20,-1.863472484e-20) (-6.84819863e-07,1.186142797e-06) (1.665488592e-05,-2.88471086e-05) (-1.158052873e-08,2.005806414e-08) (-0.0002638178336,0.0004569458917) (0,2.117582368e-22) (-3.213881516e-09,5.566606076e-09) (1.951032757e-05,-3.379287863e-05) (-5.044923245e-09,8.738063381e-09) (1.02387175e-06,-1.773397892e-06) (1.6093626e-20,1.863472484e-20) (-1.126062466e-07,1.950397403e-07) (2.913830078e-10,-5.046901739e-10) (1.392033993e-05,-2.411073601e-05) (-0.0002210927651,0.0003829439024) (-4.235164736e-22,-2.541098842e-21) (-6.274119749e-07,1.086709418e-06) (1.575244907e-09,-2.728404213e-09) (-2.951896633e-05,5.112834946e-05) (0.0001121274987,-0.0001942105247) (-3.811648263e-21,5.082197684e-21) (9.099122566e-07,-1.576014259e-06) (-6.783673963e-09,1.174966797e-08) (-4.63062193e-05,8.020472453e-05) (9.03034606e-05,-0.0001564101819) (2.752857079e-21,-2.329340605e-21) (6.916940092e-07,-1.198049167e-06) (-3.396487491e-09,5.882888901e-09) (-8.287775515e-06,1.435484827e-05) (-5.108477623e-05,8.848142792e-05) (-2.223461487e-21,2.329340605e-21) (5.895674323e-09,-1.021160747e-08) (-1.532991602e-11,2.655219342e-11) (2.033345566e-06,-3.521857829e-06) (-2.71197858e-05,4.697284689e-05) (6.352747104e-22,-1.270549421e-21) (2.929347052e-08,-5.073777927e-08) (-1.226739939e-10,2.124775902e-10) (-8.152622709e-06,1.412075675e-05) (1.185719849e-05,-2.053727021e-05) (-5.29395592e-23,1.058791184e-22) (2.366362762e-11,-4.098660533e-11) (2.030510961e-07,-3.51694815e-07) (-5.516550356e-10,9.554945499e-10) (-6.289741996e-06,1.08941527e-05) (-1.588186776e-22,-2.117582368e-22) (8.545604851e-08,-1.480142178e-07) (-2.306127229e-10,3.994329529e-10) (5.359197563e-06,-9.282402468e-06) (-1.792223291e-05,3.104221799e-05) (1.588186776e-22,-4.235164736e-22) (4.463913472e-08,-7.731724935e-08) (-1.130973968e-10,1.958904374e-10) (1.567605963e-06,-2.715173175e-06) (-8.255361831e-06,1.429870613e-05) -(-0.02616144742,0.04531295613) (-0.04013399248,0.06951411408) (-0.002798563663,0.004847254452) (0.004795750123,-0.008306482873) (0.001429388891,-0.002475774183) (-0.0006396043251,0.001107827188) (-0.0002747846405,0.0004759409585) (4.231850505e-05,-7.329780085e-05) (9.721999344e-05,-0.0001683899681) (-1.201980249e-05,2.08189086e-05) (-1.024812465e-05,1.775027258e-05) (-3.419704066e-06,5.923101189e-06) (5.830153065e-06,-1.009812133e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.2731656004,0) (0.01615280688,0) (-0.02892567571,0) (-0.00681892694,0) (0.00311081643,0) (-0.0001242414384,0) (9.142358452e-06,0) (0.0001499983368,0) (-0.0001504484689,0) (9.162783375e-05,0) (-7.145343949e-05,0) (6.119624794e-05,0) (-3.277313972e-05,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.2695462447,0) (0.02324389201,0) (-0.03424272561,0) (-0.004333899483,0) (0.002291534039,0) (4.332848919e-05,0) (0.0001066902242,0) (-2.294053818e-05,0) (1.892984583e-05,0) (-3.739677434e-05,0) (2.322309841e-05,0) (-2.861059199e-06,0) (6.880804962e-06,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.1208306479,0) (-0.009094799051,0) (-0.002843835608,0) (4.385357727e-05,0) (0.000101455379,0) (-2.497568383e-05,0) (2.882303202e-05,0) (4.591201175e-06,0) (1.25522063e-05,0) (2.574477926e-05,0) (9.479225358e-06,0) (3.178405029e-06,0) (8.85371498e-06,0) (1.738623898e-10,0) (-0.03001102387,0) (0.1997440824,0) (-0.0001221715915,0) (-1.474070406e-10,0) (-0.02386352647,0) (-3.161081699e-06,0) (8.892664166e-13,0) (-0.0003782332269,0) (5.069147332e-07,0) (1.658455888e-13,0) (1.114472307e-05,0) (-1.500172006e-14,0) (-4.573358943e-07,0) (5.007857078e-05,0) (2.271380542e-06,0) (1.920933975e-13,0) (-1.440347086e-05,0) (3.522406586e-14,0) (-3.493952407e-06,0) (4.251167502e-05,0) (1.184301307e-14,0) (8.749326325e-07,0) (-6.649639108e-06,0) (-7.916366537e-15,0) (-3.478571729e-06,0) (4.038721491e-05,0) (5.133587681e-14,0) (-1.83560613e-06,0) (3.443235877e-05,0) (6.48529231e-07,0) (4.700311397e-15,0) (3.713046695e-06,0) (-8.486490438e-15,0) (-1.351843834e-06,0) (9.719683219e-06,0) (-1.014688338e-14,0) (-1.550010209e-06,0) (1.674276403e-05,0) (-1.734723476e-18,0) (-0.000377473387,0) (-9.424695399e-12,0) (-0.008719428334,0) (0.06301289739,0) (-4.33680869e-19,0) (4.987671827e-06,0) (-0.00143187811,0) (-4.141268852e-10,0) (-0.005892254741,0) (1.694065895e-21,0) (1.859842766e-07,0) (4.229671091e-07,0) (-6.138141033e-13,0) (-6.644558929e-05,0) (8.470329473e-22,0) (-2.859798928e-08,0) (-8.511178364e-06,0) (1.891527865e-12,0) (-1.727510638e-05,0) (-8.470329473e-22,0) (3.662671398e-07,0) (6.488075772e-07,0) (-3.437640454e-13,0) (-2.522670586e-05,0) (0,0) (5.164395866e-08,0) (2.409182211e-13,0) (-3.633301909e-07,0) (1.293020884e-05,0) (1.058791184e-22,0) (-2.328816091e-08,0) (-6.937242073e-14,0) (4.52940866e-06,0) (-8.289612776e-06,0) (0,0) (-3.139926191e-09,0) (-5.790193243e-15,0) (-4.039157833e-07,0) (1.915478012e-06,0) (-8.160659869e-10,0) (8.470329473e-22,0) (-1.266989765e-15,0) (-9.077704595e-06,0) (2.704664962e-05,0) (0,0) (1.483552381e-08,0) (5.416556846e-14,0) (-5.200987241e-06,0) (1.074630952e-05,0) (0,0) (1.08671901e-08,0) (-1.266292565e-07,0) (-3.289808164e-14,0) (-9.136562887e-07,0) (-1.278080324e-08,0) (-4.235164736e-22,0) (-2.091688994e-14,0) (-5.329587217e-06,0) (9.978394523e-06,0) (6.352747104e-22,0) (-2.480045938e-08,0) (-3.21468247e-14,0) (6.229744764e-07,0) (4.252964659e-06,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (1.333601076e-05,0) (-0.003680518671,0) (0.01171062439,0) (0.004572524643,0) (-0.001931974151,0) (1.016225988e-05,0) (-0.003695330387,0) (0.003163975381,0) (-1.380679875e-06,0) (-0.002791090092,0) (0.002119938484,0) (-1.702859645e-06,0) (0.001336173644,0) (-0.001159269776,0) (4.948719016e-07,0) (5.602991138e-05,0) (-5.170347486e-05,0) (1.165106662e-08,0) (0.0004402708215,0) (-0.0003880446353,0) (1.452039402e-07,0) (-0.0002896023254,0) (0.0002398595806,0) (-1.282564785e-07,0) (0.0001483925852,0) (-0.0001273107664,0) (5.926285014e-08,0) (-7.692981325e-05,0) (6.523609042e-05,0) (-3.032478854e-08,0) (4.206025406e-05,0) (-3.160521265e-05,0) (3.109924057e-08,0) (-1.970181647e-05,0) (1.391253042e-05,0) (-1.452397306e-08,0) (7.57314583e-06,0) (-4.370287337e-06,0) (1.070626807e-08,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.004214043356,0) (0.006158998385,0) (0.0001312011809,0) (-0.0007825700286,0) (-0.000160366703,0) (0.0001179069761,0) (2.941101487e-05,0) (-1.215575976e-05,0) (-1.292825713e-05,0) (3.591247411e-06,0) (1.211948785e-06,0) (2.186819431e-07,0) (-9.353687809e-07,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.04520166927,0) (0.04251668573,0) (-0.0009345582901,0) (-0.0001451268835,0) (0.0002799358963,0) (0.0005029806326,0) (-0.0003063111856,0) (-7.350246924e-05,0) (0.0001538232273,0) (3.114230238e-05,0) (-2.423650254e-05,0) (1.916106456e-05,0) (2.552626129e-05,0) (1.454931824e-06,0) (-0.003157854218,0) (0.007512458075,0) (0.0005195851016,0) (-1.088795504e-06,0) (0.03421108654,0) (-7.146290097e-06,0) (-1.177097021e-08,0) (-0.001457959397,0) (-6.924319911e-07,0) (7.086881675e-10,0) (-1.038967993e-05,0) (9.381966906e-10,0) (-1.140640338e-05,0) (0.001087813846,0) (-1.904659493e-05,0) (-3.587190187e-09,0) (0.0001295991408,0) (1.20807976e-09,0) (5.088937078e-05,0) (-0.0006397323042,0) (9.728329649e-10,0) (-2.632356776e-05,0) (0.0001948452291,0) (1.377274291e-10,0) (-1.900743854e-05,0) (0.0002168844333,0) (1.768045232e-10,0) (1.738073434e-06,0) (-3.331910854e-05,0) (-2.35095165e-06,0) (-4.003305574e-11,0) (-1.444095283e-05,0) (1.856004633e-10,0) (-8.44366819e-06,0) (5.955031546e-05,0) (1.173764161e-10,0) (-3.04711323e-06,0) (3.220324779e-05,0) (-7.589415207e-19,0) (9.495322441e-05,0) (7.430118958e-08,0) (-0.00369666856,0) (0.02112509155,0) (6.505213035e-19,0) (6.333326623e-05,0) (0.001467685891,0) (-1.522189737e-06,0) (0.003983623004,0) (2.710505431e-20,0) (-1.128629076e-06,0) (1.486140405e-06,0) (-1.732577337e-08,0) (0.0006790959101,0) (8.470329473e-22,0) (-9.281519799e-09,0) (-5.628658706e-06,0) (-6.662351652e-09,0) (-1.747322974e-05,0) (4.065758147e-20,0) (-4.549907229e-06,0) (-1.145926933e-05,0) (-2.539534721e-08,0) (0.0005202223217,0) (-6.776263578e-21,0) (-6.099495322e-07,0) (1.186146372e-08,0) (1.038789438e-05,0) (-0.0002534353773,0) (0,0) (-5.02811008e-07,0) (4.132508469e-09,0) (0.000156366619,0) (-0.0002955184562,0) (0,0) (-1.679232679e-07,0) (1.383585823e-09,0) (-3.776354522e-05,0) (0.0001676407959,0) (-8.088281908e-10,0) (1.694065895e-21,0) (1.092177589e-11,0) (-1.716212179e-05,0) (5.082791124e-05,0) (8.470329473e-22,0) (-3.774756953e-08,0) (5.146970487e-10,0) (2.38628948e-05,0) (-5.030265065e-05,0) (4.235164736e-22,0) (-6.59283491e-08,0) (1.303346218e-06,0) (6.607505923e-10,0) (8.223005948e-06,0) (-3.476269999e-08,0) (0,0) (2.906841531e-10,0) (-2.422359532e-05,0) (4.450385645e-05,0) (0,0) (-7.6060703e-09,0) (1.822462067e-10,0) (6.185128518e-07,0) (3.673086727e-06,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (-1.352214984e-05,0) (-0.001516611742,0) (-0.1815201801,0) (0.001529805043,0) (-0.06184377689,0) (-1.018009989e-05,0) (0.0100894037,0) (0.002033057526,0) (1.382974519e-06,0) (0.01420621429,0) (0.001104706844,0) (1.705669872e-06,0) (0.0001243303037,0) (-0.00416102366,0) (-4.957044252e-07,0) (-2.976561439e-05,0) (-6.894765397e-05,0) (-1.167054917e-08,0) (2.109279228e-05,0) (-0.001212800252,0) (-1.454478514e-07,0) (0.0009931054366,0) (0.0001417158764,0) (1.284692074e-07,0) (1.74742353e-05,0) (-0.0004985374759,0) (-5.936260932e-08,0) (0.0002260156754,0) (4.076642451e-05,0) (3.037514902e-08,0) (1.036691613e-05,0) (-0.0002489763116,0) (-3.115196758e-08,0) (0.0001252345373,0) (6.832339961e-06,0) (1.454786252e-08,0) (2.35247391e-06,0) (-7.547512391e-05,0) (-1.072474815e-08,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.09590197642,0) (-0.1401646988,0) (-0.002985838421,0) (0.01780950172,0) (0.003649578912,0) (-0.002683292763,0) (-0.0006693273457,0) (0.0002766372549,0) (0.0002942175258,0) (-8.172856693e-05,0) (-2.758117892e-05,0) (-4.976700232e-06,0) (2.128685141e-05,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.01470014553,0) (0.01382695546,0) (-0.0003039299897,0) (-4.71970691e-05,0) (9.103863821e-05,0) (0.000163575563,0) (-9.961621062e-05,0) (-2.390391798e-05,0) (5.002522838e-05,0) (1.012786441e-05,0) (-7.88201233e-06,0) (6.23141672e-06,0) (8.301457933e-06,0) (-1.457628927e-06,0) (-0.04559196335,0) (-0.02299600676,0) (0.008358714646,0) (1.091418551e-06,0) (0.01108001222,0) (0.0001174809611,0) (1.180077153e-08,0) (-0.0004752201501,0) (-5.445124097e-06,0) (-7.103876161e-10,0) (-3.157105631e-06,0) (-9.404551985e-10,0) (-3.878017573e-05,0) (0.0003533999622,0) (2.141472362e-05,0) (3.593291973e-09,0) (7.639707444e-05,0) (-1.211070338e-09,0) (-2.325109286e-05,0) (-0.0002136717171,0) (-9.75273999e-10,0) (-2.050776465e-05,0) (2.993656717e-05,0) (-1.380484768e-10,0) (-1.387528677e-05,0) (6.936217859e-05,0) (-1.771963067e-10,0) (2.805955058e-08,0) (-1.784210166e-05,0) (8.180342229e-07,0) (4.010017397e-11,0) (-1.893631504e-05,0) (-1.860366417e-10,0) (-5.633722485e-06,0) (1.251832324e-05,0) (-1.176319828e-10,0) (-2.00923065e-06,0) (4.53804567e-06,0) (1.734723476e-18,0) (0.005994823377,0) (-7.444950055e-08,0) (-0.003435817589,0) (-0.1102116782,0) (-1.084202172e-18,0) (0.001606299893,0) (0.01230377284,0) (1.525748086e-06,0) (0.001045366821,0) (-1.355252716e-20,0) (1.798364778e-05,0) (0.0001386402286,0) (1.737100717e-08,0) (0.0002209886563,0) (-1.694065895e-21,0) (4.610365646e-07,0) (6.817192153e-05,0) (6.679547034e-09,0) (-7.354140116e-06,0) (0,0) (6.988489398e-05,0) (4.1665471e-05,0) (2.546341754e-08,0) (0.0001696441168,0) (1.016439537e-20,0) (9.362266021e-06,0) (-1.188796278e-08,0) (8.158151922e-05,0) (-8.232622071e-05,0) (6.776263578e-21,0) (7.420259143e-06,0) (-4.143616472e-09,0) (-3.256963719e-05,0) (-0.000166117142,0) (3.388131789e-21,0) (2.488480358e-06,0) (-1.386998724e-09,0) (-6.937063544e-05,0) (5.261433427e-05,0) (1.696781277e-08,0) (0,0) (-1.09460803e-11,0) (-7.964340301e-06,0) (1.633611477e-05,0) (1.058791184e-21,0) (7.199518179e-07,0) (-5.160270666e-10,0) (3.653434698e-06,0) (-3.163718351e-05,0) (4.235164736e-22,0) (1.047169952e-06,0) (6.944596701e-07,0) (-6.615208134e-10,0) (-2.354858994e-05,0) (5.29902449e-07,0) (-2.117582368e-22,0) (-2.91384935e-10,0) (-1.338045233e-05,0) (4.545817498e-06,0) (-6.352747104e-22,0) (3.968631531e-07,0) (-1.826512278e-10,0) (3.288624992e-07,0) (-1.102174207e-05,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (1.792468198e-05,0) (0.0015942032,0) (-0.1456492277,0) (-0.002288970907,0) (-0.04519188989,0) (1.349672706e-05,0) (0.01039062405,0) (-0.0008488810399,0) (-1.833908765e-06,0) (0.01281429128,0) (-0.0007629577502,0) (-2.261845447e-06,0) (-0.0009122039538,0) (-0.002265202916,0) (6.573132114e-07,0) (-6.462997956e-05,0) (-1.306935015e-05,0) (1.547562452e-08,0) (-0.0003155601183,0) (-0.000622467995,0) (1.928670741e-07,0) (0.0009669418372,0) (-7.371168797e-05,0) (-1.703585845e-07,0) (-9.854256778e-05,0) (-0.0002801178774,0) (7.871574193e-08,0) (0.0002283587626,0) (-1.837131481e-05,0) (-4.027933956e-08,0) (-2.384812022e-05,0) (-0.0001639726644,0) (4.130690869e-08,0) (0.000109272375,0) (-5.321956378e-06,0) (-1.92916415e-08,0) (-3.927606724e-06,0) (-5.36331914e-05,0) (1.42199673e-08,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.07546254497,0) (-0.1102916257,0) (-0.00234947156,0) (0.01401379174,0) (0.002871750125,0) (-0.002111406963,0) (-0.0005266747028,0) (0.0002176780091,0) (0.0002315114256,0) (-6.430989108e-05,0) (-2.170284735e-05,0) (-3.916024248e-06,0) (1.675001957e-05,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.02292890543,0) (-0.02156692623,0) (0.0004740621088,0) (7.361676329e-05,0) (-0.0001419997048,0) (-0.0002551409173,0) (0.0001553787796,0) (3.72847108e-05,0) (-7.802805272e-05,0) (-1.579718001e-05,0) (1.229415824e-05,0) (-9.719602051e-06,0) (-1.29483986e-05,0) (1.933695861e-06,0) (-0.03199064087,0) (-0.02299221789,0) (0.005912559672,0) (-1.447272914e-06,0) (-0.01738794072,0) (9.397260481e-05,0) (-1.564861596e-08,0) (0.0007387482168,0) (-3.585040966e-06,0) (9.420694424e-10,0) (5.436834395e-06,0) (1.247478056e-09,0) (-2.065379919e-05,0) (-0.0005520810976,0) (3.049198037e-05,0) (-4.763408986e-09,0) (-3.993073118e-05,0) (1.606572917e-09,0) (-5.581744661e-05,0) (0.0003202683844,0) (1.293499994e-09,0) (4.343975792e-06,0) (-0.0001240359772,0) (1.831224303e-10,0) (3.841493541e-06,0) (-0.0001108992143,0) (2.350780239e-10,0) (-1.286536979e-06,0) (1.161940272e-05,0) (2.387046427e-06,0) (-5.316445846e-11,0) (-3.410339354e-06,0) (2.467585767e-10,0) (2.105845968e-06,0) (-3.536965701e-05,0) (1.560307562e-10,0) (7.77950799e-07,0) (-2.080929823e-05,0) (5.204170428e-18,0) (0.004449681879,0) (9.875566195e-08,0) (0.0001906725663,0) (-0.09897492918,0) (-2.168404345e-19,0) (0.001163767271,0) (0.008173532278,0) (-2.023388919e-06,0) (-0.002208672077,0) (-6.776263578e-21,0) (1.441241402e-05,0) (0.000103430604,0) (-2.303572953e-08,0) (-0.0003443707994,0) (-3.388131789e-21,0) (3.546892966e-07,0) (5.564768243e-05,0) (-8.856789814e-09,0) (7.598111631e-06,0) (0,0) (5.613041285e-05,0) (4.007349356e-05,0) (-3.375795271e-08,0) (-0.0002635377927,0) (0,0) (7.519930189e-06,0) (1.577459173e-08,0) (5.364558862e-05,0) (0.0001286262247,0) (0,0) (5.974666933e-06,0) (5.496789673e-09,0) (-0.0001421887402,0) (9.710076482e-05,0) (-3.388131789e-21,0) (2.003154677e-06,0) (1.839710283e-09,0) (-2.388494044e-05,0) (-8.647148753e-05,0) (1.340554525e-08,0) (0,0) (1.451967495e-11,0) (6.909246837e-06,0) (-2.592891019e-05,0) (4.235164736e-22,0) (5.713850495e-07,0) (6.845034665e-10,0) (-1.519996164e-05,0) (1.399723361e-05,0) (-8.470329473e-22,0) (8.393777059e-07,0) (-4.576572648e-07,0) (8.775775864e-10,0) (-2.393998219e-05,0) (4.258067386e-07,0) (1.270549421e-21,0) (3.864907411e-10,0) (8.138608507e-06,0) (-3.005827211e-05,0) (-4.235164736e-22,0) (3.050299829e-07,0) (2.42261127e-10,0) (-2.173739453e-07,0) (-1.107271747e-05,0) -(0.2370734683,0) (0.0006670533688,0) (0.004066218674,0) (0.0006820777545,0) (0.0005956356081,0) (8.044155541e-06,0) (9.655870575e-06,0) (6.831873609e-05,0) (4.382157398e-05,0) (1.591626787e-05,0) (1.652759785e-05,0) (1.94939596e-05,0) (1.491606603e-05,0) (3.877437899e-09,0) (0.000104543173,0) (0.3087228188,0) (0.0001062601308,0) (0.02189791074,0) (1.451237323e-09,0) (0.00101721631,0) (6.767884142e-05,0) (3.270019455e-11,0) (0.002703808895,0) (4.554381508e-05,0) (7.902103776e-11,0) (3.058225334e-05,0) (0.0002763177339,0) (1.071720204e-11,0) (1.677877475e-07,0) (1.554212663e-07,0) (1.046209416e-14,0) (9.935797639e-06,0) (6.792423503e-05,0) (2.685856042e-12,0) (0.0001254778854,0) (5.197168565e-06,0) (3.878416987e-12,0) (3.452071693e-06,0) (3.698293816e-05,0) (1.425830819e-12,0) (2.421919495e-05,0) (1.387963126e-06,0) (7.687789817e-13,0) (1.030262135e-06,0) (3.786694817e-05,0) (1.535265483e-12,0) (3.118113231e-05,0) (2.989431376e-07,0) (8.846582533e-13,0) (1.823523549e-07,0) (2.000685348e-05,0) (1.00557303e-12,0) (3.415236843e-18,0) (-4.33680869e-19,0) (0,0) (0.03787629397,0) (0.1290043371,0) (9.757819552e-19,0) (1.626303259e-19,0) (1.734723476e-18,0) (0.01166407464,0) (0.02777002614,0) (0,0) (-1.905824131e-21,0) (-6.776263578e-21,0) (0.0001520492622,0) (9.479976155e-05,0) (3.726944968e-20,0) (-1.016439537e-20,0) (0,0) (0.0005765989928,0) (0.002012299337,0) (3.30872245e-24,0) (-2.067951531e-24,0) (4.135903063e-25,0) (2.968303438e-07,0) (9.832055907e-08,0) (-1.058791184e-22,0) (3.97046694e-23,0) (-1.389663429e-22,0) (3.860134312e-07,0) (9.979758691e-06,0) (-1.694065895e-21,0) (4.235164736e-22,0) (-2.01170325e-21,0) (3.578750522e-05,0) (7.498366886e-05,0) (-2.488159283e-21,0) (5.29395592e-23,0) (8.470329473e-22,0) (1.02162398e-05,0) (6.854234909e-05,0) (-1.058791184e-22,0) (-9.264422861e-23,0) (0,0) (9.779609685e-07,0) (8.699365442e-06,0) (-2.117582368e-22,0) (-5.29395592e-23,0) (-1.32348898e-23,0) (4.056902711e-06,0) (8.419618364e-06,0) (0,0) (1.98523347e-23,0) (-1.032321404e-21,0) (5.202177913e-06,0) (1.997650936e-05,0) (5.29395592e-23,0) (-3.176373552e-22,0) (4.764560328e-22,0) (2.701400034e-06,0) (1.519803296e-05,0) (2.117582368e-22,0) (-3.30872245e-23,0) (4.566036981e-22,0) (2.43172997e-06,0) (8.192639034e-06,0) -(0.4945189387,0) (0.307421443,0) (0.1319654046,0) (0.03941143222,0) (0.01673841645,0) (0.005001509027,0) (0.002982067969,0) (0.0008721944031,0) (0.0006739086684,0) (0.0001662005827,0) (0.000162668234,0) (2.726728507e-05,0) (3.849627959e-05,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.09496554104,0) (0.02219350733,0) (0.0009466734748,0) (2.321681126e-06,0) (4.129794632e-05,0) (0.0001989658342,0) (0.0002383724452,0) (0.0001692599573,0) (0.0001085254047,0) (7.176902103e-05,0) (5.852636604e-05,0) (5.506831979e-05,0) (4.747128362e-05,0) (1.073506527e-10,0) (0.04541795873,0) (0.1725741146,0) (0.01007922853,0) (4.289735641e-10,0) (0.01096928929,0) (5.737094057e-05,0) (1.333779821e-12,0) (6.161287463e-05,0) (4.444852922e-08,0) (1.969247442e-15,0) (4.145795013e-08,0) (1.730393003e-13,0) (0.0001003702013,0) (0.0001160749593,0) (5.79959204e-05,0) (1.968726167e-12,0) (0.000456033966,0) (4.122042944e-13,0) (0.0001878179395,0) (0.0003229003659,0) (1.646882568e-13,0) (1.410595769e-05,0) (0.0002999456081,0) (5.102445159e-14,0) (6.696096688e-05,0) (0.0001183515028,0) (8.984760364e-14,0) (5.83628165e-07,0) (0.0001427988773,0) (2.344464954e-06,0) (1.402501907e-15,0) (0.0001207276869,0) (4.655188215e-14,0) (6.221369806e-06,0) (0.0001060713667,0) (3.292207679e-14,0) (1.583941041e-06,0) (9.971418463e-05,0) (-4.33680869e-18,0) (0.009429544937,0) (1.5840107e-13,0) (0.0005109923468,0) (0.194759507,0) (2.710505431e-19,0) (0.002555581156,0) (0.005067391794,0) (1.942355678e-10,0) (0.0004409201741,0) (-3.388131789e-21,0) (2.942625463e-05,0) (5.654394068e-05,0) (2.071868796e-12,0) (8.037295849e-06,0) (-1.058791184e-22,0) (7.348914505e-07,0) (3.230829218e-06,0) (6.964797294e-14,0) (1.567816421e-07,0) (-1.355252716e-20,0) (0.000113937913,0) (0.0001851425888,0) (2.781457311e-11,0) (2.999024015e-05,0) (-6.776263578e-21,0) (1.52722285e-05,0) (1.871511688e-11,0) (0.0005040683449,0) (5.02024039e-05,0) (-1.016439537e-20,0) (1.211469523e-05,0) (6.023879719e-13,0) (0.0001599166819,0) (0.0002441829949,0) (-1.355252716e-20,0) (4.063106018e-06,0) (2.623064153e-13,0) (0.000205223284,0) (3.30332097e-05,0) (2.733646717e-08,0) (8.470329473e-22,0) (4.552654708e-15,0) (0.000111644296,0) (2.711731612e-05,0) (-6.776263578e-21,0) (1.172473665e-06,0) (1.533275629e-13,0) (1.278860789e-05,0) (9.776751272e-05,0) (2.541098842e-21,0) (1.709717327e-06,0) (1.530464362e-07,0) (1.424655546e-13,0) (0.0001104626914,0) (8.6197615e-07,0) (-2.964615315e-21,0) (6.739760524e-14,0) (2.211632354e-05,0) (7.515207224e-05,0) (4.65868121e-21,0) (6.315078598e-07,0) (3.652790367e-14,0) (1.2355385e-07,0) (8.266795114e-05,0) -(-0.12111549,0.2097781823) (-0.0005607657229,0.0009712747232) (-0.002000518664,0.003464999967) (-0.0004075616168,0.0007059174275) (-0.0002729746153,0.0004728059028) (-1.278868443e-06,2.21506512e-06) (-6.037625137e-06,1.045747349e-05) (-3.526857492e-05,6.108696368e-05) (-1.932297171e-05,3.346836876e-05) (-7.415213061e-06,1.284352577e-05) (-8.572210917e-06,1.484750484e-05) (-9.354879707e-06,1.620312695e-05) (-6.899174245e-06,1.194972032e-05) (-8.714321431e-08,1.509364747e-07) (-0.002819411596,0.004883364132) (0.01502942923,-0.02603173503) (0.0008700924344,-0.001507044304) (0.0001228246921,-0.0002127386071) (7.320806355e-10,-1.268000856e-09) (0.0001192873191,-0.0002066116974) (-8.929992509e-05,0.0001546720074) (1.373510759e-11,-2.378990418e-11) (0.000299626932,-0.0005189690695) (-0.0001838490925,0.0003184359691) (5.231009427e-11,-9.060374109e-11) (3.300273741e-05,-5.716241798e-05) (-2.446401255e-05,4.237291269e-05) (4.22210803e-12,-7.312905618e-12) (2.383089031e-07,-4.12763128e-07) (-2.03263699e-07,3.52063054e-07) (1.663957861e-14,-2.882059558e-14) (1.598075748e-05,-2.767948389e-05) (-1.228323086e-05,2.127517993e-05) (1.819532646e-12,-3.151522988e-12) (1.701272271e-05,-2.946690011e-05) (-1.203371311e-05,2.08430025e-05) (2.268351532e-12,-3.928900099e-12) (4.63149072e-06,-8.021977241e-06) (-3.344313848e-06,5.792521501e-06) (6.401746961e-13,-1.1088151e-12) (3.782440103e-06,-6.551378435e-06) (-2.784982798e-06,4.823731704e-06) (4.566111217e-13,-7.908736608e-13) (3.233764025e-06,-5.601043591e-06) (-1.652550646e-06,2.862301681e-06) (8.418017027e-13,-1.458043318e-12) (2.598776547e-06,-4.501213017e-06) (-1.422702445e-06,2.464192919e-06) (5.279271586e-13,-9.143966619e-13) (8.817371997e-07,-1.527213629e-06) (-1.45942524e-07,2.527798665e-07) (4.485466413e-13,-7.769055725e-13) (2.710505431e-18,-1.95156391e-18) (-8.67361738e-19,0) (0,0) (-0.02060375576,0.0356867518) (0.06045012766,-0.1047026924) (0,0) (2.168404345e-19,0) (2.168404345e-19,-8.67361738e-19) (-0.005297526462,0.009175584986) (0.01558567133,-0.02699517461) (3.388131789e-21,-6.776263578e-21) (6.776263578e-21,0) (-2.541098842e-21,1.694065895e-21) (-2.702014961e-05,4.680027195e-05) (0.0001359807469,-0.0002355255625) (2.710505431e-20,-2.710505431e-20) (6.776263578e-21,-1.355252716e-20) (3.388131789e-21,0) (-0.0003173531288,0.0005496717431) (0.0009319561715,-0.001614195439) (-1.32348898e-23,-2.64697796e-23) (-1.98523347e-23,6.6174449e-23) (-6.6174449e-24,0) (1.10762366e-08,-1.918460455e-08) (-6.716194071e-07,1.163278936e-06) (0,0) (-1.32348898e-23,5.29395592e-23) (-1.32348898e-22,-1.32348898e-22) (-4.754822232e-07,8.235593687e-07) (2.065183874e-06,-3.577003397e-06) (0,0) (3.176373552e-22,-2.329340605e-21) (1.058791184e-21,-6.776263578e-21) (-1.517604603e-05,2.628568279e-05) (4.50724991e-05,-7.806785847e-05) (-1.588186776e-21,4.341043855e-21) (-2.64697796e-22,3.176373552e-22) (-4.235164736e-22,8.470329473e-22) (-7.538565652e-06,1.305717873e-05) (2.367733081e-05,-4.101033996e-05) (1.98523347e-23,-1.32348898e-23) (9.264422861e-23,1.852884572e-22) (2.64697796e-23,5.29395592e-23) (-8.103564901e-07,1.403578613e-06) (2.67611154e-06,-4.635161153e-06) (-1.588186776e-22,0) (-7.940933881e-23,5.29395592e-23) (-2.64697796e-23,5.29395592e-23) (-1.711417653e-06,2.964262327e-06) (5.087485249e-06,-8.811782933e-06) (0,-2.117582368e-22) (-3.97046694e-23,0) (-2.117582368e-22,5.29395592e-22) (-2.996110319e-06,5.189415297e-06) (8.841353425e-06,-1.531367334e-05) (-1.058791184e-22,0) (2.117582368e-22,2.117582368e-22) (-7.940933881e-23,5.823351512e-22) (-1.848699751e-06,3.202041897e-06) (5.660846895e-06,-9.804874436e-06) (0,0) (4.135903063e-23,-2.249931266e-22) (2.316105715e-23,5.29395592e-23) (-1.315863121e-06,2.279141781e-06) (3.859226647e-06,-6.68437663e-06) -(-0.1083538861,0.187674436) (0.04130000015,-0.07153369861) (-0.005588563056,0.009679675154) (0.0001512454779,-0.0002619648521) (-0.0004157109044,0.0007200324077) (0.0004987808677,-0.0008639138046) (-0.0004215574793,0.0007301589725) (0.0001921116781,-0.0003327471872) (-0.000135218537,0.0002342053762) (5.460781335e-05,-9.458350721e-05) (-4.878621887e-05,8.45002098e-05) (1.937500693e-05,-3.35584964e-05) (-2.137444623e-05,3.702162685e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.1083538861,0.187674436) (0.04130000015,-0.07153369861) (-0.005588563056,0.009679675154) (0.0001512454779,-0.0002619648521) (-0.0004157109044,0.0007200324077) (0.0004987808677,-0.0008639138046) (-0.0004215574793,0.0007301589725) (0.0001921116781,-0.0003327471872) (-0.000135218537,0.0002342053762) (5.460781335e-05,-9.458350721e-05) (-4.878621887e-05,8.45002098e-05) (1.937500693e-05,-3.35584964e-05) (-2.137444623e-05,3.702162685e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.1395541466,-0.2417148723) (-0.01357903408,-0.02351957694) (0.01423099906,0.02464881341) (0.004074510377,0.007057258989) (-0.001425660096,-0.00246931572) (1.975203663e-05,3.4211531e-05) (-5.71653615e-06,-9.901331055e-06) (-7.743450601e-05,-0.0001341204987) (6.633973277e-05,0.0001149037877) (-4.268839373e-05,-7.393846683e-05) (3.706007127e-05,6.418992637e-05) (-2.936722707e-05,-5.086552936e-05) (1.515866188e-05,2.625557255e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.05906019127,-0.102295252) (0.003122660326,0.005408606339) (0.001450134843,0.002511707226) (-1.663179087e-05,-2.88071068e-05) (-5.691193611e-05,-9.85743649e-05) (4.320980191e-06,7.484157229e-06) (-1.508217198e-05,-2.612308816e-05) (-5.052939195e-06,-8.751947413e-06) (-3.798238809e-06,-6.578742597e-06) (-1.228729791e-05,-2.128222427e-05) (-6.964894952e-06,-1.206355193e-05) (-2.032950537e-06,-3.521173619e-06) (-3.820457386e-06,-6.6172263e-06) (0.005175592884,0.008964389834) (5.304917144e-09,9.188386024e-09) (-0.09224965312,-0.1597810862) (-0.0001541485888,-0.0002669931877) (1.707308578e-10,2.957145201e-10) (0.01114537494,0.01930435567) (2.347871873e-06,4.066633374e-06) (-7.561107841e-13,-1.309622278e-12) (0.000246935527,0.000427704879) (-1.387241408e-07,-2.402772602e-07) (-6.941934625e-14,-1.202378346e-13) (-5.376045784e-06,-9.311584441e-06) (-7.712042098e-13,-1.335764866e-12) (8.292123503e-08,1.436237921e-07) (-4.795061678e-05,-8.305290452e-05) (-4.456588466e-15,-7.719037506e-15) (-4.108193539e-07,-7.115599937e-07) (3.307487654e-06,5.728736662e-06) (2.981603408e-15,5.164287035e-15) (1.947461171e-06,3.373101694e-06) (-2.748230891e-05,-4.760075535e-05) (-1.069619489e-08,-1.8526353e-08) (7.219598505e-15,1.25047114e-14) (3.005871758e-06,5.206322606e-06) (-2.336955431e-15,-4.047727356e-15) (8.74177065e-07,1.514119091e-06) (-1.502558212e-05,-2.602507165e-05) (1.117846321e-16,1.936173322e-16) (2.783083705e-06,4.820442378e-06) (-2.210803363e-05,-3.82922375e-05) (1.377538078e-13,2.385965939e-13) (4.150521297e-07,7.188913765e-07) (-5.857532454e-06,-1.014554382e-05) (-2.638813198e-15,-4.570558867e-15) (4.927792809e-07,8.535187514e-07) (-3.782800919e-06,-6.552003387e-06) (-2.398416777e-15,-4.154178646e-15) (1.233592183e-06,2.136644337e-06) (-8.538607507e-06,-1.478930203e-05) (-7.047314121e-19,1.19262239e-18) (0.0007200330219,0.001247133777) (-0.0001878309588,-0.0003253327639) (3.990106786e-09,6.911067683e-09) (-0.03195096622,-0.05534069685) (5.895349313e-19,4.065758147e-20) (-2.330564706e-05,-4.036656481e-05) (0.0007153114482,0.001238955771) (2.662361388e-10,4.611345187e-10) (0.003245375324,0.005621154951) (5.29395592e-23,-1.217609862e-21) (6.095239344e-10,1.055726423e-09) (-3.44128403e-08,-5.960478783e-08) (7.464270409e-14,1.292849562e-13) (1.059566382e-05,1.835222807e-05) (1.694065895e-21,2.541098842e-21) (-1.888476037e-09,-3.270936446e-09) (8.862191923e-06,1.534976668e-05) (-1.368859682e-12,-2.370934516e-12) (6.318959677e-06,1.094475921e-05) (-2.64697796e-22,-8.999725065e-22) (7.446402637e-11,1.28975477e-10) (-1.079534703e-15,-1.869808926e-15) (-7.090290898e-08,-1.228074408e-07) (4.706497865e-06,8.151893428e-06) (-1.058791184e-22,-1.588186776e-22) (1.33340407e-08,2.309523596e-08) (-4.125560409e-14,-7.14568029e-14) (6.800887061e-06,1.177948193e-05) (-1.445470366e-05,-2.503628115e-05) (-3.97046694e-23,3.441071348e-22) (1.436655647e-09,2.488360574e-09) (2.776996633e-14,4.809899276e-14) (3.119865907e-07,5.403766263e-07) (-1.632104712e-06,-2.826888284e-06) (-2.117582368e-22,-2.382280164e-22) (-4.064786482e-09,-7.040416709e-09) (2.25289788e-14,3.902133595e-14) (-3.398791457e-07,-5.886879487e-07) (1.948638818e-06,3.375141438e-06) (1.720535674e-22,1.244079641e-21) (2.900715708e-10,5.024186985e-10) (-8.107039159e-16,-1.40417988e-15) (1.611039988e-06,2.790403113e-06) (-1.070561973e-05,-1.854267731e-05) (-6.6174449e-23,5.161607022e-22) (6.102102725e-09,1.056915195e-08) (1.654781332e-14,2.866165417e-14) (4.947043268e-06,8.568530288e-06) (-1.021949476e-05,-1.770068415e-05) (1.654361225e-24,4.652890946e-25) (4.489881054e-12,7.776702106e-12) (-2.191745498e-09,-3.79621456e-09) (-9.634049138e-17,-1.668666272e-16) (-1.590204424e-08,-2.754314857e-08) (-6.6174449e-24,-4.63221143e-23) (3.879285887e-09,6.719120253e-09) (-8.601079543e-15,-1.489750653e-14) (1.863843086e-06,3.228270922e-06) (-3.791159118e-06,-6.566480212e-06) (-7.940933881e-23,1.720535674e-22) (8.070512659e-09,1.397853797e-08) (-9.55011458e-15,-1.654128355e-14) (1.512581421e-06,2.619867872e-06) (-4.456953971e-06,-7.719670724e-06) -(-0.1378654839,-0.2387900227) (-0.0169245535,-0.02931418655) (0.0167882116,0.02907803547) (0.002856832998,0.004948179901) (-0.001021264037,-0.001768881199) (-6.261071557e-05,-0.0001084449405) (-5.097302548e-05,-8.828786994e-05) (5.211057454e-06,9.025816272e-06) (-1.563957284e-05,-2.708853477e-05) (1.958875962e-05,3.392872691e-05) (-7.901662008e-06,-1.368608006e-05) (1.11827671e-06,1.936912078e-06) (-3.986478569e-06,-6.904783425e-06) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (-0.0002997192672,-0.0005191289988) (0.09925944203,0.1719223967) (0.0005701036329,0.0009874484577) (0.03744131566,0.06485026102) (-1.08363822e-05,-1.876916455e-05) (5.12637978e-06,8.879150237e-06) (-0.0004333454456,-0.000750576329) (-0.004174757703,-0.007230892451) (-5.79928862e-07,-1.004466254e-06) (-0.0003092991382,-0.0005357218221) (-0.008557666191,-0.01482231264) (-1.127253589e-06,-1.952460489e-06) (0.001441927363,0.002497491453) (0.0001026368809,0.0001777722925) (1.949578464e-07,3.376768953e-07) (7.957927152e-05,0.0001378353415) (6.761905753e-05,0.0001171196432) (1.853059582e-08,3.209593345e-08) (0.0007081325001,0.001226521469) (7.017291895e-05,0.0001215430609) (9.836838076e-08,1.703790333e-07) (-3.926527806e-05,-6.800945657e-05) (-0.000555379596,-0.0009619456778) (-7.501276439e-08,-1.299259191e-07) (0.0001990917172,0.0003448369695) (1.15125293e-05,1.994028567e-05) (2.660804959e-08,4.608649378e-08) (-1.201453687e-05,-2.080978829e-05) (-0.0001308978504,-0.0002267217275) (-1.801120482e-08,-3.119632186e-08) (0.0001320177961,0.0002286615304) (1.379282385e-06,2.388987168e-06) (1.705203038e-08,2.953498298e-08) (-1.642038463e-06,-2.844094046e-06) (-6.621122398e-05,-0.000114681204) (-8.667301526e-09,-1.501220661e-08) (3.661879991e-05,6.342562196e-05) (3.18796139e-08,5.521711101e-08) (4.775645764e-09,8.271661102e-09) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.000923337689,-0.00159926779) (0.0008274199475,0.001433133388) (-5.55619918e-06,-9.623619276e-06) (-3.00319403e-06,-5.201684645e-06) (3.982825217e-06,6.898455633e-06) (1.175840002e-05,2.036614625e-05) (-4.157662878e-06,-7.201283346e-06) (-2.677457455e-06,-4.637492347e-06) (2.594031055e-06,4.492993584e-06) (1.179960774e-06,2.043752012e-06) (-3.634784569e-07,-6.295631548e-07) (1.553863596e-07,2.691370696e-07) (5.193486208e-07,8.995381981e-07) (0.03245066753,0.05620620491) (1.973358379e-05,3.417956974e-05) (0.003074044889,0.005324401932) (-0.003612640396,-0.006257276715) (-1.712840758e-06,-2.966727218e-06) (0.0006726502744,0.001165064451) (-7.897721341e-05,-0.0001367925463) (-9.66799994e-09,-1.67454671e-08) (-2.492556751e-05,-4.317234933e-05) (2.421005667e-06,4.19330482e-06) (3.489741388e-10,6.044409389e-10) (-3.762967448e-07,-6.517650808e-07) (-8.094592238e-08,-1.402024502e-07) (3.136037117e-05,5.431775621e-05) (2.045657133e-05,3.54318209e-05) (6.618798767e-10,1.146409575e-09) (-2.146830323e-05,-3.718419194e-05) (8.675245077e-07,1.502596524e-06) (-9.606141336e-11,-1.663832486e-10) (1.456791745e-05,2.523237319e-05) (-1.076291122e-05,-1.864190907e-05) (1.04629614e-07,1.812238073e-07) (-8.956602146e-10,-1.551328998e-09) (2.547207111e-05,4.411892133e-05) (-6.797765478e-11,-1.177407519e-10) (6.283968979e-06,1.088415354e-05) (5.35510915e-06,9.275321128e-06) (-1.527935823e-11,-2.646462476e-11) (1.016270017e-06,1.760231303e-06) (2.862275528e-06,4.95760664e-06) (-2.747461897e-10,-4.758743597e-10) (7.443505779e-07,1.28925302e-06) (4.771932706e-06,8.265229897e-06) (-7.264500146e-11,-1.258248334e-10) (1.575517403e-06,2.728876191e-06) (4.761717681e-06,8.247536954e-06) (-3.577407697e-11,-6.196251891e-11) (1.541553266e-06,2.67004858e-06) (3.194233381e-06,5.532574508e-06) (0,1.734723476e-18) (-0.002729426434,-0.004727505259) (0.06324356095,0.1095410608) (3.126494954e-05,5.415248111e-05) (0.0002650767828,0.0004591264557) (5.421010862e-20,-3.252606517e-19) (0.0001065037686,0.0001844699384) (-0.006663150733,-0.01154091561) (-9.127041456e-07,-1.580849952e-06) (0.0002416297276,0.0004185149648) (-1.270549421e-21,-1.270549421e-21) (1.483669546e-06,2.569791035e-06) (-3.500462032e-05,-6.06297809e-05) (-8.719713196e-09,-1.510298628e-08) (1.471765147e-05,2.549172011e-05) (-1.270549421e-21,-2.964615315e-21) (6.08483442e-09,1.053924237e-08) (-3.835660981e-05,-6.643559699e-05) (-3.797649481e-09,-6.577721851e-09) (1.178686968e-06,2.041545716e-06) (-2.117582368e-22,-8.470329473e-22) (2.4179593e-07,4.188028358e-07) (2.191988206e-10,3.796634942e-10) (-2.364132934e-05,-4.094798358e-05) (1.230236002e-05,2.130831261e-05) (-8.470329473e-22,8.470329473e-22) (1.181594739e-06,2.046582122e-06) (1.185010832e-09,2.052498968e-09) (-4.056713351e-05,-7.026433636e-05) (-2.316881374e-05,-4.012956255e-05) (4.235164736e-22,8.470329473e-22) (-2.188570265e-06,-3.790714895e-06) (-5.101434888e-09,-8.835944417e-09) (6.486224796e-05,0.000112344709) (-2.66489559e-06,-4.61573456e-06) (-4.235164736e-22,4.235164736e-22) (-1.304105758e-06,-2.258777432e-06) (-2.554688277e-09,-4.424849894e-09) (3.739300532e-05,6.476658507e-05) (4.052238551e-06,7.018683054e-06) (1.058791184e-22,-1.058791184e-22) (-1.147182595e-08,-1.986978541e-08) (-1.153315372e-11,-1.997600821e-11) (4.290322277e-06,7.431056164e-06) (1.630475981e-06,2.824067239e-06) (0,-2.117582368e-22) (-8.329871479e-08,-1.442776062e-07) (-9.227744456e-11,-1.598292224e-10) (3.112744687e-06,5.391431949e-06) (4.610680091e-06,7.985932175e-06) (9.529120657e-22,1.270549421e-21) (-4.072151728e-12,-7.053173691e-12) (-4.732118624e-07,-8.196269885e-07) (-4.150544398e-10,-7.188953777e-10) (1.376158085e-05,2.383575722e-05) (0,1.058791184e-22) (-1.530521796e-07,-2.650941513e-07) (-1.73488401e-10,-3.004907251e-10) (5.513119534e-06,9.54900314e-06) (4.337960104e-06,7.513567301e-06) (-5.29395592e-23,-1.058791184e-22) (-7.700519144e-08,-1.33376904e-07) (-8.508942103e-11,-1.473792004e-10) (6.216831785e-07,1.076786851e-06) (6.222146986e-06,1.077707471e-05) -(0.05157424969,0.08932922082) (0.07911949656,0.1370389879) (0.005517042647,0.009555798172) (-0.009454263379,-0.01637526452) (-0.002817873889,-0.004880700745) (0.001260905509,0.002183952404) (0.0005417059474,0.0009382622237) (-8.342600894e-05,-0.0001444980862) (-0.0001916579055,-0.0003319612299) (2.369564209e-05,4.104205603e-05) (2.020298538e-05,3.499259714e-05) (6.741548682e-06,1.167670484e-05) (-1.149346843e-05,-1.990727127e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0.0003039026374,0.0005263748085) (0.04090131005,0.07084314711) (-0.00883687416,-0.01530591502) (0.01252654015,0.02169660398) (-0.000346879798,-0.0006008134342) (-5.135379222e-06,-8.894737729e-06) (0.001183168129,0.002049307314) (-0.00268255013,-0.004646313118) (5.808926845e-07,1.006135643e-06) (0.001574284488,0.002726740719) (-0.004459427703,-0.007723955355) (1.129113895e-06,1.955682633e-06) (0.0001341706355,0.0002323903576) (0.0003683995724,0.0006380867769) (-1.952858243e-07,-3.382449696e-07) (-4.227609596e-05,-7.322434614e-05) (9.017141291e-05,0.0001561814685) (-1.85615821e-08,-3.214960327e-08) (3.392569073e-05,5.876102003e-05) (0.0002193194444,0.0003798724208) (-9.853361838e-08,-1.706652333e-07) (0.0001346486464,0.0002332182967) (-0.0003281340941,-0.0005683449226) (7.513718213e-08,1.30141417e-07) (2.344440262e-05,4.060689649e-05) (4.508202613e-05,7.808435976e-05) (-2.665283983e-08,-4.616407275e-08) (3.529806653e-05,6.113804464e-05) (-8.179885248e-05,-0.0001416797685) (1.80411161e-08,3.12481297e-08) (3.253944728e-05,5.635997594e-05) (1.08655697e-05,1.881971877e-05) (-1.708094113e-08,-2.958505788e-08) (1.043761257e-05,1.807847528e-05) (-3.251583845e-05,-5.631908425e-05) (8.68155776e-09,1.503689913e-08) (1.137503137e-05,1.970213227e-05) (5.505628404e-07,9.536028123e-07) (-4.783889003e-09,-8.285938811e-09) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.02101305131,0.03639567249) (-0.01883018317,-0.03261483397) (0.0001264463693,0.0002190115361) (6.834581865e-05,0.0001183784304) (-9.063998106e-05,-0.0001569930524) (-0.0002675942571,-0.0004634868491) (9.461888584e-05,0.0001638847176) (6.093280015e-05,0.0001055387057) (-5.903420635e-05,-0.0001022502448) (-2.685320506e-05,-4.65111155e-05) (8.271937295e-06,1.432741567e-05) (-3.536237701e-06,-6.124943366e-06) (-1.181918528e-05,-2.04714294e-05) (0.01305259065,0.02260775017) (-1.972421406e-05,-3.41633409e-05) (-3.139793852e-05,-5.438282477e-05) (-0.001208003877,-0.002092324091) (1.712798772e-06,2.966654497e-06) (-0.01682721675,-0.02914559437) (-2.585942318e-05,-4.47898348e-05) (9.67925942e-09,1.67649691e-08) (0.0005877851435,0.001018073733) (1.150133528e-06,1.992089707e-06) (-3.493905947e-10,-6.051622618e-10) (6.952941289e-06,1.204284757e-05) (8.190971413e-08,1.418717865e-07) (1.32217184e-05,2.290068804e-05) (-0.0004639768554,-0.0008036314871) (-6.629958665e-10,-1.148342526e-09) (1.637002792e-05,2.835372008e-05) (-0.0002004334016,-0.0003471608352) (9.621648202e-11,1.666518354e-10) (-1.475131992e-05,-2.555003558e-05) (0.0002859360877,0.0004952558317) (1.363844101e-07,2.362247277e-07) (8.972964103e-10,1.554162972e-09) (-1.642133626e-05,-2.844258873e-05) (6.808895039e-11,1.179335215e-10) (8.86002333e-06,1.534601056e-05) (-0.0001070329349,-0.0001853864814) (1.530817236e-11,2.651453229e-11) (1.09037461e-06,1.888584223e-06) (-4.296340024e-06,-7.441479207e-06) (2.752512015e-10,4.767490659e-10) (-7.394344286e-07,-1.280737999e-06) (1.652763697e-05,2.862670696e-05) (7.276235858e-11,1.260281019e-10) (3.451371935e-06,5.977951547e-06) (-1.976500436e-05,-3.423399176e-05) (3.583427253e-11,6.206678068e-11) (3.65150322e-06,6.3245891e-06) (-1.973991048e-05,-3.419052789e-05) (2.168404345e-19,0) (-0.0008395542634,-0.00145415064) (0.02522679048,0.04369408282) (-3.126224837e-05,-5.414780254e-05) (-0.01100183246,-0.01905573281) (-1.084202172e-19,3.794707604e-19) (6.005470316e-05,0.0001040177971) (-0.003199103504,-0.005541009808) (9.138118664e-07,1.582768581e-06) (-0.002344817337,-0.004061342763) (3.388131789e-20,5.759824041e-20) (5.727926757e-07,9.921060165e-07) (-1.287812239e-05,-2.230556228e-05) (8.725406379e-09,1.511284716e-08) (-0.000335289152,-0.0005807378464) (-4.235164736e-22,-4.235164736e-22) (1.81243952e-09,3.139237334e-09) (-1.242058352e-05,-2.151308171e-05) (3.802120767e-09,6.585466345e-09) (2.538152278e-06,4.396208702e-06) (2.329340605e-20,1.43995601e-20) (9.202421743e-08,1.593906201e-07) (-2.195446888e-10,-3.802625555e-10) (-5.129786172e-06,-8.885050281e-06) (-0.0002810210377,-0.0004867427153) (1.694065895e-21,1.694065895e-21) (3.473961335e-07,6.017077536e-07) (-1.186831509e-09,-2.055652473e-09) (-7.965351864e-05,-0.0001379639413) (0.0001256283905,0.0002175947552) (-4.446922973e-21,-4.235164736e-21) (-9.779151322e-07,-1.693798695e-06) (5.110513569e-09,8.851669155e-09) (3.289864391e-06,5.698212276e-06) (0.0001171394555,0.0002028914885) (7.199780052e-21,6.352747104e-21) (-3.844266251e-07,-6.658464465e-07) (2.55914016e-09,4.432560781e-09) (2.632175311e-05,4.559061372e-05) (-6.372623528e-05,-0.0001103770773) (-1.058791184e-22,4.235164736e-22) (-3.632365662e-09,-6.291441879e-09) (1.155167341e-11,2.000808525e-11) (6.979756536e-06,1.208929295e-05) (-3.434954941e-05,-5.94951648e-05) (3.97046694e-22,5.29395592e-23) (-4.430089943e-08,-7.673140864e-08) (9.242620673e-11,1.60086886e-10) (-7.708935966e-06,-1.335226877e-05) (2.033211796e-05,3.521626133e-05) (2.64697796e-23,0) (2.732028175e-11,4.732011607e-11) (-2.030819374e-07,-3.517482337e-07) (4.158427398e-10,7.202607533e-10) (5.390575629e-06,9.336750872e-06) (-5.29395592e-23,-1.588186776e-22) (-3.944424504e-08,-6.831943648e-08) (1.737627841e-10,3.009659705e-10) (1.261265833e-05,2.184576504e-05) (-1.944658249e-05,-3.36824689e-05) (3.97046694e-22,1.270549421e-21) (-1.766566272e-08,-3.059782538e-08) (8.522954168e-11,1.476218965e-10) (2.700280003e-06,4.67702216e-06) (-4.74143023e-06,-8.212398059e-06) -(0.01677258801,0.02905097462) (0.02573064519,0.04456678478) (0.001794210947,0.00310766452) (-0.003074644141,-0.005325439867) (-0.0009164076666,-0.001587264639) (0.0004100621676,0.0007102485086) (0.0001761695175,0.000305134555) (-2.713117662e-05,-4.699257638e-05) (-6.232953669e-05,-0.0001079579244) (7.706117781e-06,1.334738753e-05) (6.57026234e-06,1.138002819e-05) (2.192435553e-06,3.797409769e-06) (-3.737819008e-06,-6.474092431e-06) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (-0.0004028470466,-0.0006977515524) (-0.04299386424,-0.07446755728) (-0.007090582965,-0.01228124995) (-0.01874283661,-0.03246354529) (-0.0002534798879,-0.0004390400445) (6.808460863e-06,1.179260014e-05) (0.001218491756,0.00211048963) (0.001120069607,0.001940017466) (-7.702992143e-07,-1.334197376e-06) (0.001420036301,0.002459575022) (0.003079871323,0.005334493612) (-1.497289225e-06,-2.593381012e-06) (-0.0009844018759,-0.001705034064) (0.0002005515599,0.0003473654913) (2.589526051e-07,4.485190688e-07) (-9.179394658e-05,-0.0001589917793) (1.709241288e-05,2.960492753e-05) (2.461341544e-08,4.263168609e-08) (-0.0005075475471,-0.0008790981388) (0.0001125653912,0.0001949689767) (1.306577615e-07,2.263058812e-07) (0.0001311012957,0.0002270741051) (0.0001706747231,0.0002956172919) (-9.963682546e-08,-1.72576044e-07) (-0.0001322101708,-0.0002289947331) (2.533065632e-05,4.387398374e-05) (3.534207956e-08,6.121427745e-08) (3.566399888e-05,6.177185807e-05) (3.686250359e-05,6.384772911e-05) (-2.392364366e-08,-4.143696631e-08) (-7.485395282e-05,-0.0001296508494) (7.155927413e-06,1.239442985e-05) (2.264899878e-08,3.922921662e-08) (9.107253788e-06,1.577422628e-05) (2.532776104e-05,4.386896896e-05) (-1.151244726e-08,-1.994014357e-08) (-1.899134758e-05,-3.289397892e-05) (3.912341003e-07,6.776373393e-07) (6.342969012e-09,1.09863446e-08) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.01653457404,0.02863872232) (-0.01481693702,-0.02566368773) (9.949706138e-05,0.0001723339655) (5.377938606e-05,9.314862906e-05) (-7.132203009e-05,-0.0001235333798) (-0.0002105623306,-0.0003647046547) (7.44529174e-05,0.0001289562357) (4.794629208e-05,8.304541391e-05) (-4.645234247e-05,-8.045781728e-05) (-2.113002537e-05,-3.65982775e-05) (6.508952823e-06,1.127383699e-05) (-2.782565142e-06,-4.819544201e-06) (-9.300181641e-06,-1.610838712e-05) (-0.01463285707,-0.0253448519) (2.616874833e-05,4.532560167e-05) (-0.002336540875,-0.00404700751) (0.001812179585,0.003138787114) (-2.272899548e-06,-3.936777498e-06) (-0.01319038986,-0.02284642541) (3.996000794e-05,6.921276402e-05) (-1.284453257e-08,-2.224738301e-08) (0.0004618297644,0.0007999126164) (-9.553607913e-07,-1.65473343e-06) (4.636983056e-10,8.031490246e-10) (5.524098285e-06,9.568018896e-06) (-1.086310209e-07,-1.881544475e-07) (-1.339854236e-05,-2.320695611e-05) (-0.000365141319,-0.0006324433165) (8.800808196e-10,1.524344694e-09) (2.84893946e-05,4.934507893e-05) (-0.0001517399338,-0.0002628212748) (-1.277053227e-10,-2.211921074e-10) (-2.208009141e-05,-3.824384015e-05) (0.0002236392519,0.0003873545469) (2.407892199e-08,4.170591628e-08) (-1.190479427e-09,-2.061970853e-09) (-3.154137007e-05,-5.46312555e-05) (-9.036164812e-11,-1.565109656e-10) (1.950696771e-06,3.378705918e-06) (-8.471154588e-05,-0.0001467247015) (-2.03076594e-11,-3.517389786e-11) (5.730243228e-08,9.925072411e-08) (-5.392190249e-06,-9.339547476e-06) (-3.658433149e-10,-6.336592089e-10) (-1.116528349e-06,-1.933883829e-06) (8.868127353e-06,1.536004714e-05) (-9.65577339e-11,-1.67242901e-10) (1.416117621e-06,2.452787669e-06) (-1.848146722e-05,-3.201084023e-05) (-4.754985346e-11,-8.235876209e-11) (1.592600314e-06,2.75846466e-06) (-1.728333755e-05,-2.993561877e-05) (2.168404345e-19,1.301042607e-18) (0.001421288335,0.002461743608) (-0.02866009467,-0.04964074012) (4.147852654e-05,7.184291538e-05) (-0.008490374326,-0.01470575971) (2.710505431e-20,1.897353802e-19) (-3.488083878e-05,-6.041538497e-05) (0.002604149643,0.004510519493) (-1.212696121e-06,-2.100451296e-06) (-0.001949014841,-0.003375792729) (1.6093626e-20,3.04931861e-20) (-6.84819863e-07,-1.186142797e-06) (1.665488592e-05,2.88471086e-05) (-1.158052873e-08,-2.005806414e-08) (-0.0002638178336,-0.0004569458917) (6.352747104e-22,-6.352747104e-22) (-3.213881516e-09,-5.566606076e-09) (1.951032757e-05,3.379287863e-05) (-5.044923245e-09,-8.738063381e-09) (1.02387175e-06,1.773397892e-06) (2.286988958e-20,-1.694065895e-20) (-1.126062466e-07,-1.950397403e-07) (2.913830078e-10,5.046901739e-10) (1.392033993e-05,2.411073601e-05) (-0.0002210927651,-0.0003829439024) (-2.117582368e-21,3.811648263e-21) (-6.274119749e-07,-1.086709418e-06) (1.575244907e-09,2.728404213e-09) (-2.951896633e-05,-5.112834946e-05) (0.0001121274987,0.0001942105247) (-2.117582368e-22,-1.694065895e-21) (9.099122566e-07,1.576014259e-06) (-6.783673963e-09,-1.174966797e-08) (-4.63062193e-05,-8.020472453e-05) (9.03034606e-05,0.0001564101819) (1.058791184e-22,3.176373552e-21) (6.916940092e-07,1.198049167e-06) (-3.396487491e-09,-5.882888901e-09) (-8.287775515e-06,-1.435484827e-05) (-5.108477623e-05,-8.848142792e-05) (1.111730743e-21,-2.064642809e-21) (5.895674323e-09,1.021160747e-08) (-1.532991602e-11,-2.655219342e-11) (2.033345566e-06,3.521857829e-06) (-2.71197858e-05,-4.697284689e-05) (1.852884572e-22,8.470329473e-22) (2.929347052e-08,5.073777927e-08) (-1.226739939e-10,-2.124775902e-10) (-8.152622709e-06,-1.412075675e-05) (1.185719849e-05,2.053727021e-05) (-1.058791184e-22,5.29395592e-23) (2.366362762e-11,4.098660533e-11) (2.030510961e-07,3.51694815e-07) (-5.516550356e-10,-9.554945499e-10) (-6.289741996e-06,-1.08941527e-05) (-6.6174449e-22,-2.64697796e-22) (8.545604851e-08,1.480142178e-07) (-2.306127229e-10,-3.994329529e-10) (5.359197563e-06,9.282402468e-06) (-1.792223291e-05,-3.104221799e-05) (2.64697796e-22,2.117582368e-22) (4.463913472e-08,7.731724935e-08) (-1.130973968e-10,-1.958904374e-10) (1.567605963e-06,2.715173175e-06) (-8.255361831e-06,-1.429870613e-05) -(-0.02616144742,-0.04531295613) (-0.04013399248,-0.06951411408) (-0.002798563663,-0.004847254452) (0.004795750123,0.008306482873) (0.001429388891,0.002475774183) (-0.0006396043251,-0.001107827188) (-0.0002747846405,-0.0004759409585) (4.231850505e-05,7.329780085e-05) (9.721999344e-05,0.0001683899681) (-1.201980249e-05,-2.08189086e-05) (-1.024812465e-05,-1.775027258e-05) (-3.419704066e-06,-5.923101189e-06) (5.830153065e-06,1.009812133e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.12111549,-0.2097781823) (-0.0005607657229,-0.0009712747232) (-0.002000518664,-0.003464999967) (-0.0004075616168,-0.0007059174275) (-0.0002729746153,-0.0004728059028) (-1.278868443e-06,-2.21506512e-06) (-6.037625137e-06,-1.045747349e-05) (-3.526857492e-05,-6.108696368e-05) (-1.932297171e-05,-3.346836876e-05) (-7.415213061e-06,-1.284352577e-05) (-8.572210917e-06,-1.484750484e-05) (-9.354879707e-06,-1.620312695e-05) (-6.899174245e-06,-1.194972032e-05) (-8.714321431e-08,-1.509364747e-07) (-0.002819411596,-0.004883364132) (0.01502942923,0.02603173503) (0.0008700924344,0.001507044304) (0.0001228246921,0.0002127386071) (7.320806355e-10,1.268000856e-09) (0.0001192873191,0.0002066116974) (-8.929992509e-05,-0.0001546720074) (1.373510759e-11,2.378990418e-11) (0.000299626932,0.0005189690695) (-0.0001838490925,-0.0003184359691) (5.231009427e-11,9.060374109e-11) (3.300273741e-05,5.716241798e-05) (-2.446401255e-05,-4.237291269e-05) (4.22210803e-12,7.312905618e-12) (2.383089031e-07,4.12763128e-07) (-2.03263699e-07,-3.52063054e-07) (1.663957861e-14,2.882059558e-14) (1.598075748e-05,2.767948389e-05) (-1.228323086e-05,-2.127517993e-05) (1.819532646e-12,3.151522988e-12) (1.701272271e-05,2.946690011e-05) (-1.203371311e-05,-2.08430025e-05) (2.268351532e-12,3.928900099e-12) (4.63149072e-06,8.021977241e-06) (-3.344313848e-06,-5.792521501e-06) (6.401746961e-13,1.1088151e-12) (3.782440103e-06,6.551378435e-06) (-2.784982798e-06,-4.823731704e-06) (4.566111217e-13,7.908736608e-13) (3.233764025e-06,5.601043591e-06) (-1.652550646e-06,-2.862301681e-06) (8.418017027e-13,1.458043318e-12) (2.598776547e-06,4.501213017e-06) (-1.422702445e-06,-2.464192919e-06) (5.279271586e-13,9.143966619e-13) (8.817371997e-07,1.527213629e-06) (-1.45942524e-07,-2.527798665e-07) (4.485466413e-13,7.769055725e-13) (1.029992064e-18,8.67361738e-19) (8.67361738e-19,-1.734723476e-18) (2.168404345e-19,1.734723476e-18) (-0.02060375576,-0.0356867518) (0.06045012766,0.1047026924) (-2.168404345e-19,0) (2.168404345e-19,-2.168404345e-19) (2.168404345e-19,8.67361738e-19) (-0.005297526462,-0.009175584986) (0.01558567133,0.02699517461) (0,6.776263578e-21) (8.470329473e-22,2.117582368e-21) (-3.388131789e-21,5.082197684e-21) (-2.702014961e-05,-4.680027195e-05) (0.0001359807469,0.0002355255625) (6.776263578e-21,6.776263578e-21) (0,1.355252716e-20) (6.776263578e-21,-6.776263578e-21) (-0.0003173531288,-0.0005496717431) (0.0009319561715,0.001614195439) (-1.32348898e-23,0) (3.30872245e-24,0) (0,-1.32348898e-23) (1.10762366e-08,1.918460455e-08) (-6.716194071e-07,-1.163278936e-06) (0,0) (0,0) (-5.29395592e-23,-7.27918939e-23) (-4.754822232e-07,-8.235593687e-07) (2.065183874e-06,3.577003397e-06) (8.470329473e-22,0) (4.235164736e-22,2.117582368e-21) (6.352747104e-22,5.717472394e-21) (-1.517604603e-05,-2.628568279e-05) (4.50724991e-05,7.806785847e-05) (-1.376428539e-21,-3.494010907e-21) (-3.705769144e-22,-1.058791184e-22) (-8.470329473e-22,-4.235164736e-22) (-7.538565652e-06,-1.305717873e-05) (2.367733081e-05,4.101033996e-05) (4.63221143e-23,2.64697796e-23) (1.191140082e-22,-2.514629062e-22) (2.64697796e-23,5.29395592e-23) (-8.103564901e-07,-1.403578613e-06) (2.67611154e-06,4.635161153e-06) (-1.588186776e-22,-3.176373552e-22) (-5.29395592e-23,2.117582368e-22) (2.64697796e-23,5.29395592e-23) (-1.711417653e-06,-2.964262327e-06) (5.087485249e-06,8.811782933e-06) (0,4.235164736e-22) (-2.64697796e-23,2.64697796e-23) (-3.441071348e-22,-6.352747104e-22) (-2.996110319e-06,-5.189415297e-06) (8.841353425e-06,1.531367334e-05) (-1.058791184e-22,-2.117582368e-22) (0,2.117582368e-22) (-1.32348898e-22,-4.764560328e-22) (-1.848699751e-06,-3.202041897e-06) (5.660846895e-06,9.804874436e-06) (5.29395592e-23,0) (-4.135903063e-23,1.257314531e-22) (7.27918939e-23,-1.058791184e-22) (-1.315863121e-06,-2.279141781e-06) (3.859226647e-06,6.68437663e-06) -(-0.1083538861,-0.187674436) (0.04130000015,0.07153369861) (-0.005588563056,-0.009679675154) (0.0001512454779,0.0002619648521) (-0.0004157109044,-0.0007200324077) (0.0004987808677,0.0008639138046) (-0.0004215574793,-0.0007301589725) (0.0001921116781,0.0003327471872) (-0.000135218537,-0.0002342053762) (5.460781335e-05,9.458350721e-05) (-4.878621887e-05,-8.45002098e-05) (1.937500693e-05,3.35584964e-05) (-2.137444623e-05,-3.702162685e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.1083538861,-0.187674436) (0.04130000015,0.07153369861) (-0.005588563056,-0.009679675154) (0.0001512454779,0.0002619648521) (-0.0004157109044,-0.0007200324077) (0.0004987808677,0.0008639138046) (-0.0004215574793,-0.0007301589725) (0.0001921116781,0.0003327471872) (-0.000135218537,-0.0002342053762) (5.460781335e-05,9.458350721e-05) (-4.878621887e-05,-8.45002098e-05) (1.937500693e-05,3.35584964e-05) (-2.137444623e-05,-3.702162685e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.2475006931,0) (0.001885655396,0) (0.003936900835,0) (0.0009741204454,0) (0.0005004075617,0) (8.132634863e-07,0) (1.510083094e-05,0) (7.282759888e-05,0) (3.408159058e-05,0) (1.381866281e-05,0) (1.778426622e-05,0) (1.795710592e-05,0) (1.276438578e-05,0) (7.833976983e-06,0) (0.3041454174,0) (0.002926686712,0) (0.02849839687,0) (2.755679327e-06,0) (1.477200313e-09,0) (5.595452752e-05,0) (0.000471312833,0) (2.30767043e-11,0) (0.0001328145617,0) (0.002968612862,0) (1.385122765e-10,0) (0.0001424591791,0) (8.663764015e-06,0) (6.653302287e-12,0) (1.353880343e-06,0) (1.063332768e-06,0) (1.058585676e-13,0) (0.0001028139335,0) (8.885062031e-06,0) (4.930568137e-12,0) (9.226573536e-06,0) (0.0001114531879,0) (5.306720436e-12,0) (2.485545863e-05,0) (1.209685944e-06,0) (1.149711836e-12,0) (2.362894913e-06,0) (2.235255113e-05,0) (1.084804457e-12,0) (4.060026829e-05,0) (2.884757044e-07,0) (1.846273793e-12,0) (8.663751496e-07,0) (2.708317392e-05,0) (1.260179665e-12,0) (1.705402686e-05,0) (4.258384822e-09,0) (8.003161713e-13,0) (1.561251128e-17,0) (6.938893904e-18,0) (8.67361738e-19,0) (0.04483170943,0) (0.1133052738,0) (8.67361738e-19,0) (-1.734723476e-18,0) (4.33680869e-19,0) (0.009624007898,0) (0.03498925778,0) (0,0) (5.421010862e-20,0) (6.776263578e-21,0) (1.920663012e-05,0) (0.0007802029551,0) (2.439454888e-19,0) (0,0) (2.710505431e-20,0) (0.0006986693326,0) (0.001726467409,0) (0,0) (-3.176373552e-22,0) (-4.235164736e-22,0) (1.653240914e-09,0) (1.835110102e-05,0) (0,0) (0,0) (0,0) (2.342751068e-06,0) (1.709453932e-06,0) (0,0) (1.016439537e-20,0) (1.101142831e-20,0) (2.57422105e-05,0) (0.0001083718738,0) (1.270549421e-21,0) (0,0) (-4.235164736e-22,0) (2.225083718e-05,0) (3.271647394e-05,0) (0,0) (2.911675756e-22,0) (0,0) (2.685905316e-06,0) (3.292917407e-06,0) (2.117582368e-22,0) (2.117582368e-22,0) (0,0) (2.887868495e-06,0) (1.229628472e-05,0) (2.117582368e-22,0) (0,0) (-4.235164736e-22,0) (6.902245323e-06,0) (1.565229019e-05,0) (-6.352747104e-22,0) (2.117582368e-22,0) (-4.235164736e-22,0) (5.060621495e-06,0) (8.434035548e-06,0) (-1.058791184e-22,0) (-8.470329473e-22,0) (-3.176373552e-22,0) (2.848171096e-06,0) (7.27171318e-06,0) -(0.09496554104,0) (0.02219350733,0) (0.0009466734748,0) (2.321681126e-06,0) (4.129794632e-05,0) (0.0001989658342,0) (0.0002383724452,0) (0.0001692599573,0) (0.0001085254047,0) (7.176902103e-05,0) (5.852636604e-05,0) (5.506831979e-05,0) (4.747128362e-05,0) (0.08203099855,0) (8.306610194e-08,0) (0.1359609918,0) (0.009081386798,0) (5.657391905e-09,0) (0.01196712578,0) (5.443671855e-05,0) (2.267692166e-12,0) (6.454709571e-05,0) (4.074384328e-08,0) (2.322477598e-15,0) (4.516263572e-08,0) (1.806939314e-09,0) (9.637884248e-05,0) (0.0001200645114,0) (3.505088404e-13,0) (0.0001259530711,0) (0.0003880768169,0) (2.442169459e-14,0) (0.0001806923474,0) (0.0003300259584,0) (4.99498452e-09,0) (5.220474457e-13,0) (0.0003140465704,0) (2.043749217e-14,0) (6.916995033e-05,0) (0.0001161425193,0) (3.068536094e-15,0) (6.841874488e-06,0) (0.0001365406311,0) (3.090610873e-13,0) (1.118320353e-06,0) (0.0001219538312,0) (2.402304362e-14,0) (6.135362753e-06,0) (0.0001061573737,0) (1.022792114e-14,0) (9.682037194e-06,0) (9.16160885e-05,0) (0,0) (0.008475895408,0) (0.1732522102,0) (1.124213962e-07,0) (0.02297182624,0) (1.084202172e-19,0) (0.0009869192534,0) (0.006480627332,0) (3.316210435e-10,0) (0.000596346401,0) (1.694065895e-21,0) (6.030566529e-06,0) (7.772448169e-05,0) (1.304810639e-11,0) (1.025243196e-05,0) (0,0) (6.172455307e-07,0) (3.424236285e-06,0) (8.91940129e-14,0) (8.102047562e-08,0) (0,0) (1.7510264e-07,0) (5.995060337e-14,0) (0.0002921369044,0) (3.675876272e-05,0) (2.032879073e-20,0) (1.275281687e-06,0) (4.637667068e-13,0) (0.0003051743252,0) (0.0002630933887,0) (6.776263578e-21,0) (3.588497215e-06,0) (5.404957306e-12,0) (0.0003430215163,0) (6.96043537e-05,0) (5.082197684e-21,0) (2.144710129e-06,0) (2.269021793e-12,0) (0.0002012220718,0) (3.895281572e-05,0) (1.694065895e-21,0) (3.844113255e-09,0) (1.769838074e-15,0) (0.0001178597097,0) (2.092539475e-05,0) (-8.470329473e-22,0) (6.145570316e-08,0) (3.010474357e-14,0) (2.166322872e-05,0) (9.000390998e-05,0) (0,0) (1.298476433e-12,0) (5.281220211e-07,0) (2.249656277e-13,0) (0.0001117973318,0) (2.541098842e-21,0) (1.467994913e-07,0) (7.105028024e-14,0) (4.480358687e-05,0) (5.317998557e-05,0) (0,0) (6.039698986e-08,0) (2.87767903e-14,0) (3.246588878e-06,0) (8.011602699e-05,0) -(0.4945189387,0) (0.307421443,0) (0.1319654046,0) (0.03941143222,0) (0.01673841645,0) (0.005001509027,0) (0.002982067969,0) (0.0008721944031,0) (0.0006739086684,0) (0.0001662005827,0) (0.000162668234,0) (2.726728507e-05,0) (3.849627959e-05,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.3147524089,0) (0.3911428714,0) (0.2057672699,0) (0.06817076837,0) (0.01624681051,0) (0.001918900616,0) (8.656155591e-06,0) (0.0003293313421,0) (0.0005165205109,0) (0.0005274892321,0) (0.000308913253,0) (0.0001921098042,0) (7.200817462e-05,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.1469209212,0) (0.001757452279,0) (0.008885391297,0) (0.0004765796032,0) (0.0003137171467,0) (3.753583099e-07,0) (3.817084e-06,0) (6.033841652e-07,0) (5.317323845e-07,0) (8.414643968e-06,0) (3.31541252e-06,0) (3.002007615e-07,0) (1.229871495e-06,0) (0.001306177527,0) (1.355168727e-09,0) (0.2503658847,0) (1.046614926e-05,0) (2.060951583e-11,0) (0.04152020624,0) (4.050576507e-07,0) (1.00843227e-12,0) (0.003778769832,0) (1.889305054e-06,0) (8.299835645e-12,0) (0.002559803502,0) (1.316604296e-15,0) (2.853709815e-10,0) (7.660087477e-05,0) (2.266554089e-16,0) (5.359854749e-09,0) (1.127557649e-07,0) (1.456075894e-15,0) (8.395718063e-08,0) (9.154156321e-06,0) (9.161877051e-08,0) (3.993706216e-16,0) (1.150818494e-07,0) (1.068890781e-15,0) (4.419176462e-08,0) (7.775554357e-06,0) (1.628929061e-17,0) (4.528323296e-06,0) (1.43185262e-05,0) (2.455969101e-13,0) (6.161678805e-07,0) (1.125366415e-06,0) (1.15944313e-15,0) (1.58315933e-07,0) (5.391837529e-07,0) (2.24968478e-15,0) (6.286898691e-07,0) (3.183188427e-06,0) (6.2883726e-18,0) (0.0002446691601,0) (8.145458932e-07,0) (5.664740933e-10,0) (0.177759353,0) (2.493664997e-18,0) (2.201408811e-06,0) (0.0003158153936,0) (8.549720567e-10,0) (0.0706465972,0) (1.058791184e-22,0) (2.464242287e-13,0) (6.094571757e-11,0) (1.707997469e-15,0) (4.38015457e-05,0) (8.131516294e-20,0) (2.311133296e-11,0) (9.174418953e-05,0) (8.403150672e-11,0) (0.001971316564,0) (5.29395592e-23,0) (1.266660794e-13,0) (7.775698928e-17,0) (6.88337889e-11,0) (2.410431746e-06,0) (1.356576205e-22,0) (5.576701781e-10,0) (1.468000911e-14,0) (6.062379565e-07,0) (3.176643229e-06,0) (-2.067951531e-24,0) (2.300661614e-12,0) (5.707138741e-16,0) (1.135038219e-09,0) (1.530804122e-07,0) (-1.178732373e-23,0) (3.081533289e-11,0) (8.947554122e-16,0) (2.296325301e-09,0) (3.899274721e-07,0) (6.749793798e-22,0) (8.755362874e-11,0) (1.48542241e-15,0) (8.808607626e-08,0) (2.190836451e-05,0) (-1.058791184e-22,0) (2.423577032e-09,0) (3.638364687e-14,0) (4.518853107e-06,0) (4.641490491e-06,0) (1.413638742e-27,0) (6.210057073e-11,0) (3.638362452e-11,0) (1.650294841e-19,0) (9.04762241e-12,0) (8.271806126e-24,0) (4.100520746e-10,0) (4.164857336e-15,0) (3.101457978e-07,0) (1.081074942e-06,0) (7.940933881e-23,0) (4.313670249e-09,0) (1.26775354e-14,0) (2.818838655e-06,0) (9.917835142e-07,0) -(0.1537404548,0) (0.003727007567,0) (0.00854296775,0) (0.0008283378013,0) (0.000249242271,0) (3.135135163e-06,0) (3.485164461e-06,0) (1.245370055e-07,0) (1.451806454e-06,0) (9.235094054e-06,0) (1.535303137e-06,0) (1.834495508e-07,0) (1.651277635e-06,0) (2.815830936e-10,0) (0.01983051592,0) (0.2311916741,0) (1.480857164e-06,0) (5.065308416e-11,0) (0.05191474862,0) (1.74172454e-07,0) (5.928976114e-13,0) (0.002321923377,0) (5.781125973e-06,0) (1.396714217e-11,0) (0.002995923626,0) (1.300580339e-15,0) (2.083846774e-09,0) (2.160554926e-05,0) (8.895745648e-08,0) (1.874301973e-14,0) (4.549221948e-07,0) (3.009999658e-15,0) (6.499753675e-08,0) (5.596904508e-06,0) (8.516512091e-16,0) (5.426835441e-08,0) (1.474190623e-07,0) (1.228211538e-15,0) (1.807091778e-07,0) (1.378205676e-05,0) (2.933157846e-14,0) (5.773281799e-06,0) (8.30249756e-06,0) (1.793970786e-07,0) (1.57524998e-14,0) (1.14196802e-07,0) (1.547102555e-15,0) (2.937426657e-07,0) (8.906479179e-07,0) (3.127361261e-15,0) (1.516806236e-06,0) (2.811236419e-06,0) (0,0) (1.511060808e-05,0) (5.607603461e-10,0) (0.1487858497,0) (0.02038732434,0) (1.734723476e-18,0) (9.734329973e-09,0) (0.0004046016186,0) (8.829540289e-10,0) (0.0787413867,0) (0,0) (1.175486027e-09,0) (3.16393186e-09,0) (1.818492629e-13,0) (0.0005493161406,0) (0,0) (1.11287863e-09,0) (2.242153709e-05,0) (5.137087983e-11,0) (0.001903470945,0) (-4.235164736e-22,0) (1.177409821e-09,0) (2.273659858e-09,0) (4.248625572e-15,0) (2.121979301e-05,0) (0,0) (1.746371504e-10,0) (3.101321166e-15,0) (2.618867638e-10,0) (3.3303246e-06,0) (-6.6174449e-24,0) (4.476698989e-11,0) (7.989091628e-15,0) (1.282889475e-07,0) (2.814187778e-07,0) (1.654361225e-24,0) (2.426502395e-12,0) (1.278136264e-16,0) (7.949778252e-10,0) (1.110717381e-07,0) (2.436173229e-11,0) (0,0) (3.526056281e-16,0) (7.3810059e-07,0) (2.697616726e-05,0) (0,0) (1.877165974e-10,0) (1.913490841e-14,0) (2.115184742e-06,0) (1.181201865e-06,0) (-1.654361225e-24,0) (6.907330169e-11,0) (1.047719175e-07,0) (7.596810143e-15,0) (7.557011361e-09,0) (1.895051636e-10,0) (0,0) (6.491569902e-15,0) (1.28432286e-06,0) (1.324891707e-06,0) (0,0) (9.739590345e-10,0) (2.829120299e-14,0) (3.141117806e-06,0) (2.187995244e-07,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.002296938444,0) (0.0004656769935,0) (-3.404442288e-05,0) (8.60557369e-05,0) (-2.195463111e-05,0) (1.021437952e-06,0) (1.052245556e-06,0) (3.19721922e-07,0) (-3.631499723e-07,0) (-8.080661741e-07,0) (1.730221396e-07,0) (-2.294551817e-08,0) (-1.671873287e-07,0) (0.008189657419,0) (5.041046806e-06,0) (-0.008342968697,0) (0.0002452856292,0) (-2.067629571e-07,0) (0.002505844645,0) (-1.362524288e-05,0) (1.28943057e-08,0) (-0.0003814274264,0) (-3.297204231e-05,0) (-4.172364306e-08,0) (0.0001791736462,0) (1.381913284e-10,0) (1.079257912e-07,0) (-3.267927222e-05,0) (-3.366221799e-11,0) (2.800914463e-07,0) (2.957483131e-08,0) (-4.691192177e-11,0) (6.280388515e-07,0) (3.585047097e-06,0) (-8.962099782e-07,0) (-4.954574338e-11,0) (9.752156065e-07,0) (3.109204061e-11,0) (3.176698282e-07,0) (-2.771203269e-06,0) (-2.22648192e-12,0) (1.653561186e-06,0) (-1.853786177e-06,0) (-4.89836296e-10,0) (1.10502967e-06,0) (-9.167977887e-07,0) (3.191879817e-11,0) (5.061688212e-07,0) (-6.78714229e-07,0) (3.355563738e-11,0) (7.856396421e-07,0) (-1.190808539e-06,0) (0,0) (-0.0009274664534,0) (-0.0002742614059,0) (4.438674186e-06,0) (-0.001474755946,0) (-8.67361738e-19,0) (-1.006015126e-05,0) (-0.002941831249,0) (-2.930994065e-06,0) (0.005259890253,0) (1.376428539e-21,0) (5.998322676e-10,0) (6.199376993e-08,0) (-1.995271809e-10,0) (6.084148142e-05,0) (5.421010862e-20,0) (-7.446672951e-11,0) (-0.0003970796515,0) (2.33129964e-07,0) (0.0003677132413,0) (5.29395592e-23,0) (4.113038732e-10,0) (-1.578850801e-11,0) (2.295141761e-08,0) (6.300650718e-06,0) (-3.176373552e-22,0) (4.941788939e-08,0) (-4.216631935e-10,0) (-3.616195343e-06,0) (5.091702812e-06,0) (3.97046694e-23,0) (-3.504778343e-09,0) (-1.048420309e-10,0) (2.359753035e-07,0) (2.499492298e-07,0) (-1.522012327e-22,0) (9.88648561e-09,0) (-1.014613753e-10,0) (-2.52638343e-07,0) (8.108630087e-07,0) (1.058791184e-22,0) (-3.46259369e-09,0) (2.113178083e-11,0) (2.345799347e-07,0) (-3.336664573e-06,0) (9.264422861e-23,0) (-3.308381734e-08,0) (-2.028902496e-10,0) (2.843321806e-06,0) (-2.094078847e-06,0) (6.203854594e-25,0) (-5.632286098e-11,0) (7.855457093e-09,0) (7.109805969e-13,0) (-7.829784988e-09,0) (-1.389663429e-22,0) (-1.617807133e-08,0) (8.400741329e-11,0) (9.173899183e-07,0) (-1.236998982e-06,0) (0,0) (-4.115909576e-08,0) (1.129540535e-10,0) (1.15856545e-06,0) (-1.384583023e-06,0) -(-0.05751293495,0) (-0.01742314575,0) (0.002807441229,0) (-0.002741260601,0) (0.0006877098011,0) (-6.313790157e-05,0) (-3.703790973e-05,0) (-1.993765262e-06,0) (1.779141841e-05,0) (1.117127821e-05,0) (-3.925466161e-06,0) (1.105928494e-06,0) (4.760820116e-06,0) (2.356370425e-06,0) (0.002086629187,0) (0.008695215087,0) (-6.2979561e-06,0) (3.741398894e-07,0) (-0.07442571239,0) (3.937534685e-07,0) (-7.848018285e-09,0) (0.008950218454,0) (-7.896863725e-06,0) (5.968412251e-08,0) (-0.002792952986,0) (-8.133735556e-11,0) (5.197317153e-08,0) (0.0004693188178,0) (-7.459501429e-07,0) (-3.500108653e-10,0) (-4.093285999e-06,0) (1.032339543e-10,0) (-9.466882665e-07,0) (-8.422440694e-05,0) (6.995807459e-11,0) (-1.632739084e-06,0) (-4.319618027e-06,0) (-2.136820204e-11,0) (9.874220973e-07,0) (7.401138147e-05,0) (1.010201071e-10,0) (-5.466525505e-06,0) (-8.034065257e-06,0) (-6.503235901e-07,0) (-1.341657236e-10,0) (-4.441394808e-07,0) (-3.383529974e-11,0) (1.834727903e-06,0) (5.4567997e-06,0) (-3.617647595e-11,0) (2.98183865e-06,0) (5.407168305e-06,0) (6.505213035e-19,0) (-3.801065212e-06,0) (-4.420846394e-06,0) (0.06307890282,0) (0.006834856211,0) (-1.734723476e-18,0) (1.2360615e-07,0) (-0.0004147197189,0) (3.245439041e-06,0) (-0.05323530859,0) (-1.084202172e-19,0) (-7.133332631e-09,0) (1.11168147e-08,0) (5.132952515e-09,0) (-0.005614192732,0) (0,0) (3.611864086e-10,0) (1.48279327e-05,0) (-1.809388448e-07,0) (0.00192530132,0) (-1.355252716e-20,0) (-1.462622461e-08,0) (-4.015748519e-08,0) (3.138645067e-10,0) (-0.0004375922108,0) (8.470329473e-22,0) (-2.062581006e-09,0) (1.526916853e-10,0) (-7.487547447e-09,0) (-6.5275208e-05,0) (0,0) (9.665570157e-10,0) (-4.759094266e-10,0) (4.428858264e-06,0) (1.003236761e-05,0) (0,0) (1.297693598e-10,0) (-3.054149145e-11,0) (7.432534774e-08,0) (9.720891838e-06,0) (2.414566489e-11,0) (8.470329473e-22,0) (-3.039500918e-12,0) (1.39543781e-06,0) (5.069545599e-05,0) (0,0) (-4.776269042e-10,0) (1.818254864e-10,0) (-9.70477885e-06,0) (-5.529115333e-06,0) (0,0) (-4.190493315e-10,0) (-1.078377038e-06,0) (-1.525802291e-10,0) (-6.801392399e-08,0) (5.154379602e-10,0) (2.117582368e-22,0) (-9.02140094e-11,0) (5.837397148e-06,0) (5.909045808e-06,0) (2.64697796e-23,0) (2.987041801e-10,0) (-1.60387982e-10,0) (3.118621718e-06,0) (1.889669192e-07,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.05227305888,0) (-0.01059774195,0) (0.0007747731012,0) (-0.0019584315,0) (0.0004996371268,0) (-2.324558865e-05,0) (-2.394669917e-05,0) (-7.276138765e-06,0) (8.264461737e-06,0) (1.838973561e-05,0) (-3.937587669e-06,0) (5.221874471e-07,0) (3.804800733e-06,0) (0.003294115467,0) (-5.03865326e-06,0) (8.521411615e-05,0) (8.201923211e-05,0) (2.067578889e-07,0) (-0.06268694534,0) (-4.461298473e-06,0) (-1.290932257e-08,0) (0.008994674824,0) (-1.566384246e-05,0) (4.177343488e-08,0) (-0.003310642092,0) (-1.39836719e-10,0) (4.550215342e-08,0) (0.0007412007475,0) (3.371897556e-11,0) (-2.135755559e-07,0) (-6.832987415e-06,0) (4.698765009e-11,0) (-6.359455323e-07,0) (-9.524322186e-05,0) (-1.168207208e-06,0) (4.963625375e-11,0) (-6.28702053e-07,0) (-3.114294568e-11,0) (4.478956051e-07,0) (5.538823034e-05,0) (2.230680666e-12,0) (1.774135912e-06,0) (2.782574797e-06,0) (4.907366656e-10,0) (-1.097731374e-06,0) (-3.17533837e-06,0) (-3.19703626e-11,0) (1.108827398e-06,0) (2.817216516e-06,0) (-3.361210006e-11,0) (1.86095787e-06,0) (7.359028335e-06,0) (-4.33680869e-19,0) (-0.0002852827998,0) (-0.0001093982521,0) (-4.438290702e-06,0) (0.0612087474,0) (-1.084202172e-18,0) (-5.672657459e-06,0) (-0.001412428299,0) (2.934551322e-06,0) (-0.05104289932,0) (5.844527336e-20,0) (2.315741605e-10,0) (2.280737082e-08,0) (1.99657454e-10,0) (-0.001386055972,0) (2.032879073e-20,0) (-2.218079147e-11,0) (-0.0001285817751,0) (-2.334044471e-07,0) (0.000791823636,0) (2.435219723e-21,0) (1.565366177e-10,0) (1.581342029e-11,0) (4.980086481e-09,0) (-0.0001439248567,0) (-5.558653716e-22,0) (1.452916396e-08,0) (4.223110462e-10,0) (-7.100395277e-06,0) (-2.760876911e-05,0) (-2.415367389e-22,0) (-1.566034151e-09,0) (1.050286112e-10,0) (1.196885357e-08,0) (-1.098689074e-05,0) (3.441071348e-22,0) (2.91435589e-09,0) (1.016381852e-10,0) (-1.778376473e-07,0) (-1.275177812e-05,0) (-2.64697796e-22,0) (-1.096373539e-09,0) (-2.116571378e-11,0) (3.816288677e-07,0) (7.029415091e-05,0) (2.067951531e-22,0) (-1.759502375e-08,0) (2.032173328e-10,0) (-7.041690834e-06,0) (-9.234442056e-06,0) (2.714186385e-25,0) (3.778730592e-10,0) (3.371220318e-09,0) (-7.123309402e-13,0) (-3.067020323e-09,0) (9.264422861e-23,0) (-4.169374205e-09,0) (-8.414027643e-11,0) (2.098761966e-06,0) (5.54532595e-06,0) (-9.926167351e-23,0) (-9.442255645e-09,0) (-1.131400601e-10,0) (5.032227385e-06,0) (1.055086583e-06,0) -(-0.01870392239,0) (-0.005666223889,0) (0.0009130148356,0) (-0.0008914920716,0) (0.0002236517882,0) (-2.053323155e-05,0) (-1.204518931e-05,0) (-6.483972824e-07,0) (5.785990742e-06,0) (3.633038737e-06,0) (-1.276610461e-06,0) (3.596617133e-07,0) (1.548277966e-06,0) (-2.360738584e-06,0) (0.03012600167,0) (-0.02661648463,0) (-0.0001013170272,0) (-3.750412402e-07,0) (-0.02410440258,0) (-6.473083976e-06,0) (7.86788762e-09,0) (0.002917313174,0) (-6.209909928e-05,0) (-5.982724624e-08,0) (-0.0008486929007,0) (8.153315783e-11,0) (1.767015122e-07,0) (0.0001524684146,0) (8.386966911e-07,0) (3.506062313e-10,0) (-2.412940959e-06,0) (-1.03489508e-10,0) (4.325370202e-07,0) (-2.813110036e-05,0) (-7.01336135e-11,0) (-1.272009523e-06,0) (-6.63678222e-07,0) (2.141801211e-11,0) (7.20810683e-07,0) (2.366970548e-05,0) (-1.012439589e-10,0) (-8.825188043e-08,0) (-4.302174199e-06,0) (2.262857906e-07,0) (1.343906619e-10,0) (-5.823968285e-07,0) (3.391481584e-11,0) (1.224153722e-06,0) (1.147096904e-06,0) (3.625524393e-11,0) (1.96618936e-06,0) (7.619721113e-07,0) (1.734723476e-18,0) (-0.0002399783128,0) (4.429670749e-06,0) (0.05862781591,0) (-0.03565811638,0) (0,0) (3.134980355e-06,0) (-0.003476641184,0) (-3.253025745e-06,0) (-0.01396980218,0) (-2.710505431e-20,0) (1.136629777e-07,0) (1.037074105e-06,0) (-5.146353529e-09,0) (-0.00182694799,0) (2.710505431e-20,0) (-1.794104248e-08,0) (-0.0001795896175,0) (1.81405844e-07,0) (0.0008103216112,0) (3.388131789e-21,0) (2.246534061e-07,0) (1.460111013e-07,0) (-3.147057971e-10,0) (-0.0001426984983,0) (0,0) (3.165906529e-08,0) (-1.530328056e-10,0) (-5.880359132e-08,0) (-2.120406882e-05,0) (5.29395592e-23,0) (-1.426401455e-08,0) (4.771886505e-10,0) (-9.224878544e-07,0) (5.639404919e-06,0) (0,0) (-1.923071812e-09,0) (3.061682836e-11,0) (1.365337013e-07,0) (3.050917587e-06,0) (-5.065341759e-10,0) (4.235164736e-22,0) (3.046264775e-12,0) (6.475738678e-07,0) (1.629354359e-05,0) (0,0) (9.109682087e-09,0) (-1.822953378e-10,0) (-1.485812014e-06,0) (-3.477463597e-06,0) (0,0) (6.655951109e-09,0) (-5.74589738e-07,0) (1.527580882e-10,0) (1.947745163e-07,0) (-7.857037501e-09,0) (2.117582368e-22,0) (9.043149751e-11,0) (3.224418723e-06,0) (6.035756443e-07,0) (-1.058791184e-22,0) (-1.558553604e-08,0) (1.607444256e-10,0) (1.658167214e-06,0) (-5.670284416e-07,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.0411321873,0) (-0.008339062533,0) (0.0006096469769,0) (-0.001541034196,0) (0.0003931502828,0) (-1.829129434e-05,0) (-1.884297833e-05,0) (-5.725387206e-06,0) (6.503070519e-06,0) (1.447036132e-05,0) (-3.098376047e-06,0) (4.108944902e-07,0) (2.993889774e-06,0) (-0.003692931319,0) (6.684943117e-06,0) (0.006341380197,0) (-0.0001230406465,0) (-2.74369599e-07,0) (-0.04913856285,0) (6.893948142e-06,0) (1.71308782e-08,0) (0.007067222778,0) (1.30112031e-05,0) (-5.544016143e-08,0) (-0.002630298682,0) (1.854554824e-10,0) (-4.611068783e-08,0) (0.0005833114635,0) (-4.475959074e-11,0) (-3.716938248e-07,0) (-5.172975408e-06,0) (-6.23653338e-11,0) (-9.518968852e-07,0) (-7.449260097e-05,0) (-2.062491615e-07,0) (-6.585442473e-11,0) (-1.207582855e-06,0) (4.133017006e-11,0) (9.861243906e-08,0) (4.383718543e-05,0) (-2.959197357e-12,0) (9.323612458e-08,0) (3.492314996e-06,0) (-6.522504806e-10,0) (-1.657548191e-06,0) (-1.703770788e-06,0) (4.242558686e-11,0) (4.549582158e-07,0) (2.634266796e-06,0) (4.460116865e-11,0) (8.116553402e-07,0) (6.443219229e-06,0) (-3.035766083e-18,0) (0.0004829576041,0) (0.0001242870854,0) (5.888692216e-06,0) (0.04723623807,0) (-1.138412281e-18,0) (3.294780257e-06,0) (0.001149751687,0) (-3.89436725e-06,0) (-0.04242691604,0) (-1.694065895e-20,0) (-2.768655948e-10,0) (-2.949608241e-08,0) (-2.64989249e-10,0) (-0.001090599805,0) (3.726944968e-20,0) (3.933175976e-11,0) (0.0002019770285,0) (3.09697559e-07,0) (0.0003194157652,0) (-2.541098842e-21,0) (-1.91547415e-10,0) (-2.098780888e-11,0) (-1.35141104e-08,0) (-0.0001132326063,0) (5.823351512e-22,0) (-2.624027897e-08,0) (-5.605204444e-10,0) (-2.631350537e-06,0) (-2.46417407e-05,0) (2.514629062e-22,0) (1.457134286e-09,0) (-1.394145316e-10,0) (-1.684666273e-07,0) (-8.469855444e-06,0) (2.117582368e-22,0) (-5.243764032e-09,0) (-1.348940671e-10,0) (5.599469354e-08,0) (-1.022219073e-05,0) (1.694065895e-21,0) (1.779518342e-09,0) (2.808845119e-11,0) (1.111762798e-07,0) (5.549890313e-05,0) (-2.249931266e-22,0) (1.163451117e-08,0) (-2.697230875e-10,0) (-7.446974375e-06,0) (-5.385302829e-06,0) (-1.550963649e-25,0) (3.272970404e-10,0) (-3.370708344e-09,0) (9.449748969e-13,0) (3.578609755e-09,0) (6.948317145e-23,0) (9.0329589e-09,0) (1.116684355e-10,0) (8.917771118e-07,0) (5.110647247e-06,0) (5.128519798e-23,0) (2.385951371e-08,0) (1.501339326e-10,0) (2.921382097e-06,0) (1.83702408e-06,0) -(0.02917389264,0) (0.008838028944,0) (-0.001424096841,0) (0.001390526193,0) (-0.0003488462539,0) (3.20272016e-05,0) (1.878777362e-05,0) (1.011353251e-06,0) (-9.024838172e-06,0) (-5.66671952e-06,0) (1.99122386e-06,0) (-5.609910046e-07,0) (-2.414963783e-06,0) (3.131764434e-06,0) (0.02113859613,0) (-0.02661209925,0) (-7.166687639e-05,0) (4.97322524e-07,0) (0.03782720766,0) (-5.177796953e-06,0) (-1.043334764e-08,0) (-0.004535076858,0) (-4.088571921e-05,0) (7.933896824e-08,0) (0.001461529417,0) (-1.081506332e-10,0) (9.410884509e-08,0) (-0.0002381860178,0) (1.194202806e-06,0) (-4.647773923e-10,0) (1.261180451e-06,0) (1.372863619e-10,0) (1.038364612e-06,0) (4.216515965e-05,0) (9.30177865e-11,0) (2.694383648e-07,0) (2.749813509e-06,0) (-2.841116772e-11,0) (-1.995626923e-07,0) (-3.784413631e-05,0) (1.343156087e-10,0) (4.046369427e-06,0) (2.801726811e-06,0) (6.603081789e-07,0) (-1.781739592e-10,0) (-1.048868705e-07,0) (-4.49845343e-11,0) (-4.575800789e-07,0) (-3.241043012e-06,0) (-4.809009413e-11,0) (-7.612857105e-07,0) (-3.494038197e-06,0) (0,0) (-0.0001781248725,0) (-5.875863018e-06,0) (-0.00325358254,0) (-0.03202255516,0) (-4.33680869e-19,0) (2.27129912e-06,0) (-0.002309571161,0) (4.314038673e-06,0) (0.02951567944,0) (-5.421010862e-20,0) (9.109152453e-08,0) (7.736946357e-07,0) (6.824590353e-09,0) (0.002846967579,0) (0,0) (-1.380258363e-08,0) (-0.00014659622,0) (-2.405362853e-07,0) (-0.000837203801,0) (0,0) (1.804379704e-07,0) (1.404322281e-07,0) (4.172190712e-10,0) (0.0002216784642,0) (-8.470329473e-22,0) (2.542909593e-08,0) (2.030650731e-10,0) (-3.866749846e-08,0) (3.31291695e-05,0) (0,0) (-1.148514282e-08,0) (-6.330232694e-10,0) (-4.027290359e-06,0) (-3.296411943e-06,0) (0,0) (-1.548017159e-09,0) (-4.061005464e-11,0) (4.700979461e-08,0) (-5.014173148e-06,0) (-4.001910504e-10,0) (0,0) (-4.040786575e-12,0) (-5.617850981e-07,0) (-2.586134062e-05,0) (1.058791184e-22,0) (7.229839581e-09,0) (2.418124915e-10,0) (6.181658491e-06,0) (1.538533616e-06,0) (-2.64697796e-23,0) (5.335196032e-09,0) (3.786615396e-07,0) (-2.026498209e-10,0) (1.980117903e-07,0) (-6.313576244e-09,0) (-2.117582368e-22,0) (-1.199476441e-10,0) (-1.961240248e-06,0) (-3.991018329e-06,0) (-2.117582368e-22,0) (-1.197908084e-08,0) (-2.132048396e-10,0) (-1.09602752e-06,0) (-5.6965094e-07,0) -(0.2731656004,0) (0.01615280688,0) (-0.02892567571,0) (-0.00681892694,0) (0.00311081643,0) (-0.0001242414384,0) (9.142358452e-06,0) (0.0001499983368,0) (-0.0001504484689,0) (9.162783375e-05,0) (-7.145343949e-05,0) (6.119624794e-05,0) (-3.277313972e-05,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.2695462447,0) (0.02324389201,0) (-0.03424272561,0) (-0.004333899483,0) (0.002291534039,0) (4.332848919e-05,0) (0.0001066902242,0) (-2.294053818e-05,0) (1.892984583e-05,0) (-3.739677434e-05,0) (2.322309841e-05,0) (-2.861059199e-06,0) (6.880804962e-06,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.1208306479,0) (-0.009094799051,0) (-0.002843835608,0) (4.385357727e-05,0) (0.000101455379,0) (-2.497568383e-05,0) (2.882303202e-05,0) (4.591201175e-06,0) (1.25522063e-05,0) (2.574477926e-05,0) (9.479225358e-06,0) (3.178405029e-06,0) (8.85371498e-06,0) (1.738623898e-10,0) (-0.03001102387,0) (0.1997440824,0) (-0.0001221715915,0) (-1.474070406e-10,0) (-0.02386352647,0) (-3.161081699e-06,0) (8.892664166e-13,0) (-0.0003782332269,0) (5.069147332e-07,0) (1.658455888e-13,0) (1.114472307e-05,0) (-1.500172006e-14,0) (-4.573358943e-07,0) (5.007857078e-05,0) (2.271380542e-06,0) (1.920933975e-13,0) (-1.440347086e-05,0) (3.522406586e-14,0) (-3.493952407e-06,0) (4.251167502e-05,0) (1.184301307e-14,0) (8.749326325e-07,0) (-6.649639108e-06,0) (-7.916366537e-15,0) (-3.478571729e-06,0) (4.038721491e-05,0) (5.133587681e-14,0) (-1.83560613e-06,0) (3.443235877e-05,0) (6.48529231e-07,0) (4.700311397e-15,0) (3.713046695e-06,0) (-8.486490438e-15,0) (-1.351843834e-06,0) (9.719683219e-06,0) (-1.014688338e-14,0) (-1.550010209e-06,0) (1.674276403e-05,0) (-1.734723476e-18,0) (-0.000377473387,0) (-9.424696266e-12,0) (-0.008719428334,0) (0.06301289739,0) (0,0) (4.987671827e-06,0) (-0.00143187811,0) (-4.141268852e-10,0) (-0.005892254741,0) (1.694065895e-21,0) (1.859842766e-07,0) (4.229671091e-07,0) (-6.138140965e-13,0) (-6.644558929e-05,0) (0,0) (-2.859798928e-08,0) (-8.511178364e-06,0) (1.891527865e-12,0) (-1.727510638e-05,0) (0,0) (3.662671398e-07,0) (6.488075772e-07,0) (-3.437640456e-13,0) (-2.522670586e-05,0) (0,0) (5.164395866e-08,0) (2.409182199e-13,0) (-3.633301909e-07,0) (1.293020884e-05,0) (0,0) (-2.328816091e-08,0) (-6.937242073e-14,0) (4.52940866e-06,0) (-8.289612776e-06,0) (-5.29395592e-23,0) (-3.139926191e-09,0) (-5.790193031e-15,0) (-4.039157833e-07,0) (1.915478012e-06,0) (-8.160659869e-10,0) (0,0) (-1.266989765e-15,0) (-9.077704595e-06,0) (2.704664962e-05,0) (0,0) (1.483552381e-08,0) (5.416556893e-14,0) (-5.200987241e-06,0) (1.074630952e-05,0) (0,0) (1.08671901e-08,0) (-1.266292565e-07,0) (-3.289808167e-14,0) (-9.136562887e-07,0) (-1.278080324e-08,0) (-2.117582368e-22,0) (-2.091689037e-14,0) (-5.329587217e-06,0) (9.978394523e-06,0) (6.352747104e-22,0) (-2.480045938e-08,0) (-3.214682481e-14,0) (6.229744764e-07,0) (4.252964659e-06,0) -(-0.1395541466,0.2417148723) (-0.01357903408,0.02351957694) (0.01423099906,-0.02464881341) (0.004074510377,-0.007057258989) (-0.001425660096,0.00246931572) (1.975203663e-05,-3.4211531e-05) (-5.71653615e-06,9.901331055e-06) (-7.743450601e-05,0.0001341204987) (6.633973277e-05,-0.0001149037877) (-4.268839373e-05,7.393846683e-05) (3.706007127e-05,-6.418992637e-05) (-2.936722707e-05,5.086552936e-05) (1.515866188e-05,-2.625557255e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.05906019127,0.102295252) (0.003122660326,-0.005408606339) (0.001450134843,-0.002511707226) (-1.663179087e-05,2.88071068e-05) (-5.691193611e-05,9.85743649e-05) (4.320980191e-06,-7.484157229e-06) (-1.508217198e-05,2.612308816e-05) (-5.052939195e-06,8.751947413e-06) (-3.798238809e-06,6.578742597e-06) (-1.228729791e-05,2.128222427e-05) (-6.964894952e-06,1.206355193e-05) (-2.032950537e-06,3.521173619e-06) (-3.820457386e-06,6.6172263e-06) (0.005175592884,-0.008964389834) (5.304917144e-09,-9.188386024e-09) (-0.09224965312,0.1597810862) (-0.0001541485888,0.0002669931877) (1.707308578e-10,-2.957145201e-10) (0.01114537494,-0.01930435567) (2.347871873e-06,-4.066633374e-06) (-7.561107841e-13,1.309622278e-12) (0.000246935527,-0.000427704879) (-1.387241408e-07,2.402772602e-07) (-6.941934625e-14,1.202378346e-13) (-5.376045784e-06,9.311584441e-06) (-7.712042098e-13,1.335764866e-12) (8.292123503e-08,-1.436237921e-07) (-4.795061678e-05,8.305290452e-05) (-4.456588466e-15,7.719037506e-15) (-4.108193539e-07,7.115599937e-07) (3.307487654e-06,-5.728736662e-06) (2.981603408e-15,-5.164287035e-15) (1.947461171e-06,-3.373101694e-06) (-2.748230891e-05,4.760075535e-05) (-1.069619489e-08,1.8526353e-08) (7.219598505e-15,-1.25047114e-14) (3.005871758e-06,-5.206322606e-06) (-2.336955431e-15,4.047727356e-15) (8.74177065e-07,-1.514119091e-06) (-1.502558212e-05,2.602507165e-05) (1.117846321e-16,-1.936173322e-16) (2.783083705e-06,-4.820442378e-06) (-2.210803363e-05,3.82922375e-05) (1.377538078e-13,-2.385965939e-13) (4.150521297e-07,-7.188913765e-07) (-5.857532454e-06,1.014554382e-05) (-2.638813198e-15,4.570558867e-15) (4.927792809e-07,-8.535187514e-07) (-3.782800919e-06,6.552003387e-06) (-2.398416777e-15,4.154178646e-15) (1.233592183e-06,-2.136644337e-06) (-8.538607507e-06,1.478930203e-05) (-6.505213035e-19,-5.854691731e-18) (0.0007200330219,-0.001247133777) (-0.0001878309588,0.0003253327639) (3.990106788e-09,-6.911067681e-09) (-0.03195096622,0.05534069685) (4.878909776e-19,-5.149960319e-19) (-2.330564706e-05,4.036656481e-05) (0.0007153114482,-0.001238955771) (2.662361388e-10,-4.611345189e-10) (0.003245375324,-0.005621154951) (3.176373552e-22,1.270549421e-21) (6.095239344e-10,-1.055726423e-09) (-3.44128403e-08,5.960478783e-08) (7.46427043e-14,-1.292849566e-13) (1.059566382e-05,-1.835222807e-05) (2.223461487e-21,-2.117582368e-22) (-1.888476037e-09,3.270936446e-09) (8.862191923e-06,-1.534976668e-05) (-1.368859681e-12,2.370934516e-12) (6.318959677e-06,-1.094475921e-05) (-7.676236084e-22,4.764560328e-22) (7.446402637e-11,-1.28975477e-10) (-1.079534809e-15,1.869808714e-15) (-7.090290898e-08,1.228074408e-07) (4.706497865e-06,-8.151893428e-06) (-4.764560328e-22,5.29395592e-22) (1.33340407e-08,-2.309523596e-08) (-4.125560452e-14,7.145680311e-14) (6.800887061e-06,-1.177948193e-05) (-1.445470366e-05,2.503628115e-05) (-1.32348898e-23,-1.852884572e-22) (1.436655647e-09,-2.488360574e-09) (2.776996633e-14,-4.809899276e-14) (3.119865907e-07,-5.403766263e-07) (-1.632104712e-06,2.826888284e-06) (-8.602678371e-23,3.044024654e-22) (-4.064786482e-09,7.040416709e-09) (2.25289788e-14,-3.902133579e-14) (-3.398791457e-07,5.886879487e-07) (1.948638818e-06,-3.375141438e-06) (7.411538288e-22,-5.29395592e-22) (2.900715708e-10,-5.024186985e-10) (-8.107037041e-16,1.40417988e-15) (1.611039988e-06,-2.790403113e-06) (-1.070561973e-05,1.854267731e-05) (-7.940933881e-23,-3.176373552e-22) (6.102102725e-09,-1.056915195e-08) (1.654781353e-14,-2.866165396e-14) (4.947043268e-06,-8.568530288e-06) (-1.021949476e-05,1.770068415e-05) (8.271806126e-25,-2.688336991e-24) (4.489881054e-12,-7.776702106e-12) (-2.191745498e-09,3.79621456e-09) (-9.634049138e-17,1.668666255e-16) (-1.590204424e-08,2.754314857e-08) (-7.940933881e-23,9.264422861e-23) (3.879285887e-09,-6.719120253e-09) (-8.60107949e-15,1.489750663e-14) (1.863843086e-06,-3.228270922e-06) (-3.791159118e-06,6.566480212e-06) (-1.32348898e-23,-1.588186776e-22) (8.070512659e-09,-1.397853797e-08) (-9.550114474e-15,1.654128355e-14) (1.512581421e-06,-2.619867872e-06) (-4.456953971e-06,7.719670724e-06) -(-0.1378654839,0.2387900227) (-0.0169245535,0.02931418655) (0.0167882116,-0.02907803547) (0.002856832998,-0.004948179901) (-0.001021264037,0.001768881199) (-6.261071557e-05,0.0001084449405) (-5.097302548e-05,8.828786994e-05) (5.211057454e-06,-9.025816272e-06) (-1.563957284e-05,2.708853477e-05) (1.958875962e-05,-3.392872691e-05) (-7.901662008e-06,1.368608006e-05) (1.11827671e-06,-1.936912078e-06) (-3.986478569e-06,6.904783425e-06) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.002296938444,0) (0.0004656769935,0) (-3.404442288e-05,0) (8.60557369e-05,0) (-2.195463111e-05,0) (1.021437952e-06,0) (1.052245556e-06,0) (3.19721922e-07,0) (-3.631499723e-07,0) (-8.080661741e-07,0) (1.730221396e-07,0) (-2.294551817e-08,0) (-1.671873287e-07,0) (0.008189657419,0) (5.041046806e-06,0) (-0.008342968697,0) (0.0002452856292,0) (-2.067629571e-07,0) (0.002505844645,0) (-1.362524288e-05,0) (1.28943057e-08,0) (-0.0003814274264,0) (-3.297204231e-05,0) (-4.172364306e-08,0) (0.0001791736462,0) (1.381913284e-10,0) (1.079257912e-07,0) (-3.267927222e-05,0) (-3.366221799e-11,0) (2.800914463e-07,0) (2.957483131e-08,0) (-4.691192177e-11,0) (6.280388515e-07,0) (3.585047097e-06,0) (-8.962099782e-07,0) (-4.954574338e-11,0) (9.752156065e-07,0) (3.109204061e-11,0) (3.176698282e-07,0) (-2.771203269e-06,0) (-2.22648192e-12,0) (1.653561186e-06,0) (-1.853786177e-06,0) (-4.89836296e-10,0) (1.10502967e-06,0) (-9.167977887e-07,0) (3.191879817e-11,0) (5.061688212e-07,0) (-6.78714229e-07,0) (3.355563738e-11,0) (7.856396421e-07,0) (-1.190808539e-06,0) (6.505213035e-19,0) (-0.0009274664534,0) (-0.0002742614059,0) (4.438674186e-06,0) (-0.001474755946,0) (-1.084202172e-19,0) (-1.006015126e-05,0) (-0.002941831249,0) (-2.930994065e-06,0) (0.005259890253,0) (1.799945013e-21,0) (5.998322676e-10,0) (6.199376993e-08,0) (-1.995271809e-10,0) (6.084148142e-05,0) (5.082197684e-20,0) (-7.44667295e-11,0) (-0.0003970796515,0) (2.33129964e-07,0) (0.0003677132413,0) (1.98523347e-23,0) (4.113038732e-10,0) (-1.578850801e-11,0) (2.295141761e-08,0) (6.300650718e-06,0) (-1.588186776e-22,0) (4.941788939e-08,0) (-4.216631935e-10,0) (-3.616195343e-06,0) (5.091702812e-06,0) (5.95570041e-23,0) (-3.504778343e-09,0) (-1.048420309e-10,0) (2.359753035e-07,0) (2.499492298e-07,0) (-1.058791184e-22,0) (9.88648561e-09,0) (-1.014613753e-10,0) (-2.52638343e-07,0) (8.108630087e-07,0) (1.32348898e-22,0) (-3.46259369e-09,0) (2.113178083e-11,0) (2.345799347e-07,0) (-3.336664573e-06,0) (5.29395592e-23,0) (-3.308381734e-08,0) (-2.028902496e-10,0) (2.843321806e-06,0) (-2.094078847e-06,0) (3.101927297e-25,0) (-5.632286098e-11,0) (7.855457093e-09,0) (7.109805969e-13,0) (-7.829784988e-09,0) (-5.95570041e-23,0) (-1.617807133e-08,0) (8.400741329e-11,0) (9.173899183e-07,0) (-1.236998982e-06,0) (5.29395592e-23,0) (-4.115909576e-08,0) (1.129540535e-10,0) (1.15856545e-06,0) (-1.384583023e-06,0) -(-0.05751293495,0) (-0.01742314575,0) (0.002807441229,0) (-0.002741260601,0) (0.0006877098011,0) (-6.313790157e-05,0) (-3.703790973e-05,0) (-1.993765262e-06,0) (1.779141841e-05,0) (1.117127821e-05,0) (-3.925466161e-06,0) (1.105928494e-06,0) (4.760820116e-06,0) (2.356370425e-06,0) (0.002086629187,0) (0.008695215087,0) (-6.2979561e-06,0) (3.741398894e-07,0) (-0.07442571239,0) (3.937534685e-07,0) (-7.848018285e-09,0) (0.008950218454,0) (-7.896863725e-06,0) (5.968412251e-08,0) (-0.002792952986,0) (-8.133735556e-11,0) (5.197317153e-08,0) (0.0004693188178,0) (-7.459501429e-07,0) (-3.500108653e-10,0) (-4.093285999e-06,0) (1.032339543e-10,0) (-9.466882665e-07,0) (-8.422440694e-05,0) (6.995807459e-11,0) (-1.632739084e-06,0) (-4.319618027e-06,0) (-2.136820204e-11,0) (9.874220973e-07,0) (7.401138147e-05,0) (1.010201071e-10,0) (-5.466525505e-06,0) (-8.034065257e-06,0) (-6.503235901e-07,0) (-1.341657236e-10,0) (-4.441394808e-07,0) (-3.383529974e-11,0) (1.834727903e-06,0) (5.4567997e-06,0) (-3.617647595e-11,0) (2.98183865e-06,0) (5.407168305e-06,0) (0,0) (-3.801065212e-06,0) (-4.420846394e-06,0) (0.06307890282,0) (0.006834856211,0) (-1.734723476e-18,0) (1.2360615e-07,0) (-0.0004147197189,0) (3.245439041e-06,0) (-0.05323530859,0) (-1.084202172e-19,0) (-7.133332631e-09,0) (1.11168147e-08,0) (5.132952515e-09,0) (-0.005614192732,0) (-1.355252716e-20,0) (3.611864086e-10,0) (1.48279327e-05,0) (-1.809388448e-07,0) (0.00192530132,0) (-6.776263578e-21,0) (-1.462622461e-08,0) (-4.015748519e-08,0) (3.138645067e-10,0) (-0.0004375922108,0) (8.470329473e-22,0) (-2.062581006e-09,0) (1.526916853e-10,0) (-7.487547447e-09,0) (-6.5275208e-05,0) (-4.235164736e-22,0) (9.665570157e-10,0) (-4.759094266e-10,0) (4.428858264e-06,0) (1.003236761e-05,0) (2.117582368e-22,0) (1.297693598e-10,0) (-3.054149145e-11,0) (7.432534774e-08,0) (9.720891838e-06,0) (2.414566489e-11,0) (8.470329473e-22,0) (-3.039500918e-12,0) (1.39543781e-06,0) (5.069545599e-05,0) (0,0) (-4.776269042e-10,0) (1.818254864e-10,0) (-9.70477885e-06,0) (-5.529115333e-06,0) (0,0) (-4.190493315e-10,0) (-1.078377038e-06,0) (-1.525802291e-10,0) (-6.801392399e-08,0) (5.154379602e-10,0) (2.117582368e-22,0) (-9.02140094e-11,0) (5.837397148e-06,0) (5.909045808e-06,0) (2.64697796e-23,0) (2.987041801e-10,0) (-1.60387982e-10,0) (3.118621718e-06,0) (1.889669192e-07,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0.04586770644,0) (0.1295753448,0) (0.0004442131108,0) (0.1967622424,0) (0.0001704511524,0) (0.07116101842,0) (0.01342434892,0) (0.1479153603,0) (0.05829558339,0) (0.002881188799,0) (0.0986772665,0) (0.03669568318,0) (0.0583789555,0) (0.004863627082,0) (0.02285094543,0) (0.01871025158,0) (0.01720002272,0) (0.0129751607,0) (0.01950909261,0) (0.002216861756,0) (0.007850079801,0) (0.0006684007036,0) (0.01106999276,0) (0.004241350104,0) (0.006378882393,0) (0.0004382569924,0) (0.00246318523,0) (0.0002443597394,0) (0.003066181956,0) (0.001196173181,0) (0.001717101805,0) (2.637892713e-05,0) (0.0006299645073,0) (1.244860412e-05,0) (0.0006474759855,0) (0.0002384489065,0) (0.000314514928,0) (9.546434388e-07,0) (0.0001139889123,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(3.590997234e-05,0) (0.0001233917216,0) (1.30441383e-07,0) (1.553904071e-05,0) (1.536434435e-06,0) (2.779572112e-06,0) (2.900697787e-07,0) (1.694146338e-07,0) (2.480155548e-07,0) (7.759935467e-08,0) (9.02954327e-09,0) (1.753815685e-09,0) (2.272725483e-08,0) (0.05134867755,0) (0.01875202135,0) (0.000278013623,0) (0.005748536394,0) (0.00207432931,0) (0.0001512337715,0) (0.0004583230146,0) (0.0001648728595,0) (3.850112287e-05,0) (0.0005754261716,0) (0.0002097466075,0) (1.254127337e-05,0) (1.450462071e-05,0) (4.081696167e-05,0) (1.394154879e-05,0) (4.99941714e-06,0) (1.463681797e-05,0) (7.757214435e-09,0) (1.511410508e-06,0) (4.698023398e-06,0) (1.404013897e-06,0) (8.766678713e-06,0) (6.146623103e-06,0) (8.264078866e-06,0) (9.044095585e-07,0) (2.283550353e-06,0) (9.876553109e-07,0) (3.043249266e-07,0) (6.038139103e-07,0) (2.400053708e-07,0) (9.769650476e-07,0) (1.981749796e-06,0) (7.468840143e-07,0) (8.787060028e-07,0) (1.618326537e-06,0) (8.543525323e-07,0) (5.00506041e-07,0) (9.817712635e-07,0) (4.454731505e-07,0) (3.469446952e-18,0) (0.003515743553,0) (0.09234509611,0) (0.03477975199,0) (1.223510922e-05,0) (4.33680869e-19,0) (4.597357965e-05,0) (0.02740325923,0) (0.01004796136,0) (0.0003916175239,0) (1.694065895e-21,0) (1.460078625e-06,0) (6.30598451e-05,0) (2.330863833e-05,0) (8.451039346e-05,0) (2.710505431e-20,0) (2.399382941e-10,0) (0.001718607472,0) (0.0006467762177,0) (6.859021545e-05,0) (1.482307658e-21,0) (1.335565741e-06,0) (3.205846614e-06,0) (7.65274698e-06,0) (1.646933149e-05,0) (-8.470329473e-22,0) (4.379161533e-06,0) (1.211169872e-05,0) (2.157052131e-05,0) (8.161268252e-06,0) (0,0) (5.33910383e-06,0) (1.925982866e-05,0) (4.905944391e-05,0) (4.081163393e-07,0) (-8.470329473e-22,0) (3.171881935e-06,0) (1.1505279e-05,0) (2.779490012e-05,0) (1.68620799e-06,0) (1.32348898e-23,0) (1.369395562e-07,0) (3.006229585e-07,0) (6.24704245e-07,0) (5.081771609e-07,0) (0,0) (4.516212835e-07,0) (1.131399868e-06,0) (1.789055475e-06,0) (9.447754395e-07,0) (2.117582368e-22,0) (5.10826975e-11,0) (1.696043397e-06,0) (3.063049089e-06,0) (6.775872177e-06,0) (1.058791184e-22,0) (6.382847646e-07,0) (1.694474736e-06,0) (2.713576222e-06,0) (1.415412032e-06,0) (1.058791184e-22,0) (3.927215262e-07,0) (1.006395786e-06,0) (4.761797554e-07,0) (1.932952223e-06,0) -(0.02151507676,0) (0.08145033313,0) (0.0009225981511,0) (0.009071793741,0) (0.001897530337,0) (0.001271522409,0) (0.000393613206,0) (3.191902604e-05,0) (0.0002180280768,0) (1.351339316e-05,0) (1.003663981e-05,0) (6.66710727e-06,0) (1.372598266e-05,0) (0.01971880285,0) (0.0002195616787,0) (0.0003270306584,0) (2.678465689e-05,0) (0.002763516793,0) (0.106697746,0) (8.901625396e-07,0) (0.0001038820182,0) (0.0345000232,0) (1.0786905e-05,0) (0.0002550410404,0) (0.002603733392,0) (5.086780754e-06,0) (1.296261603e-06,0) (0.01019461019,0) (6.255143051e-06,0) (6.536172276e-06,0) (3.683045246e-05,0) (3.540615072e-06,0) (1.378850213e-05,0) (0.0012674418,0) (5.746639196e-06,0) (4.91232311e-05,0) (0.000126571826,0) (3.717599159e-07,0) (5.395422689e-06,0) (0.0003974504446,0) (3.479206662e-07,0) (5.176068333e-06,0) (7.774311777e-06,0) (2.357456293e-06,0) (1.1427038e-06,0) (1.727367798e-06,0) (7.399816442e-07,0) (1.145978052e-05,0) (3.343258584e-05,0) (4.18479744e-07,0) (5.861896876e-06,0) (1.04002171e-05,0) (-5.421010862e-20,0) (9.561558787e-07,0) (0.03485246954,0) (0.02674278495,0) (0.002291387465,0) (0,0) (1.569546168e-06,0) (0.0004250908481,0) (0.01192913133,0) (0.03599121376,0) (-8.67361738e-19,0) (4.328799598e-08,0) (3.906012346e-08,0) (0.0001448848612,0) (0.05737890751,0) (0,0) (1.172235841e-10,0) (9.806088991e-06,0) (0.0006373039673,0) (0.001947382062,0) (0,0) (1.816924258e-07,0) (7.09263354e-07,0) (2.318653812e-05,0) (0.009023977889,0) (0,0) (2.436045478e-08,0) (7.517683295e-06,0) (2.140748389e-07,0) (0.001279410655,0) (0,0) (2.086878003e-08,0) (2.83498791e-05,0) (0.0001528953655,0) (0.0003576463545,0) (0,0) (6.94006599e-09,0) (7.29799041e-06,0) (6.948945167e-06,0) (0.0008507631173,0) (2.393151383e-11,0) (0,0) (2.620125233e-08,0) (2.63818605e-06,0) (9.527036339e-05,0) (0,0) (1.215275915e-09,0) (1.727758853e-06,0) (4.452695345e-05,0) (2.58813648e-05,0) (0,0) (2.542260728e-09,0) (1.109931996e-05,0) (3.064539702e-06,0) (6.121327117e-07,0) (1.401947502e-09,0) (0,0) (1.253713298e-06,0) (2.653165066e-05,0) (2.635447273e-05,0) (-2.64697796e-23,0) (9.160979474e-11,0) (9.092686847e-07,0) (3.096286743e-06,0) (1.632018929e-07,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (-0.04650791085,0) (0.05339342277,0) (-0.006885511921,0) (0.06582968803,0) (0.005456254699,0) (-0.07128594273,0) (-0.03665265658,0) (0.0950451253,0) (-0.05839246872,0) (-0.01466480269,0) (0.05142104472,0) (-0.03675624203,0) (0.005432133241,0) (0.01745725437,0) (-0.02288938761,0) (-0.009939728979,0) (0.02293658634,0) (-0.01299685736,0) (0.0009346548029,0) (0.006928611436,0) (-0.007863266239,0) (-0.002292082329,0) (0.006540467226,0) (-0.004248384897,0) (0.0007511567492,0) (0.001716174845,0) (-0.002467331594,0) (-0.0007179158406,0) (0.001916075511,0) (-0.00119815967,0) (0.0004232273626,0) (0.0002078052141,0) (-0.0006310325767,0) (-7.912951479e-05,0) (0.0003179706291,0) (-0.0002388411143,0) (9.769891917e-05,0) (1.648674933e-05,0) (-0.0001141856685,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.0008172287347,0) (-0.00280811301,0) (-2.968547159e-06,0) (-0.0003536329813,0) (-3.496572923e-05,0) (-6.325669591e-05,0) (-6.601323888e-06,0) (-3.855489098e-06,0) (-5.64426606e-06,0) (-1.765983606e-06,0) (-2.054917267e-07,0) (-3.991282865e-08,0) (-5.172202734e-07,0) (0.02065391313,0) (-0.01874311768,0) (-2.839598951e-06,0) (0.001922210209,0) (-0.002074278464,0) (-0.00378330843,0) (0.0001500682067,0) (-0.0001650648726,0) (-0.0009079186671,0) (0.0002733644709,0) (-0.0002099969132,0) (-0.000231728652,0) (-1.467732161e-05,0) (1.720867302e-05,0) (-0.0003162091956,0) (-5.007846613e-06,0) (-1.116087826e-05,0) (-1.792231646e-06,0) (-1.513850326e-06,0) (-4.757169056e-06,0) (-3.730015351e-05,0) (1.142734126e-05,0) (-6.157851779e-06,0) (-5.327686836e-06,0) (-9.058902923e-07,0) (3.219670478e-06,0) (-1.974033463e-05,0) (-3.048988288e-07,0) (6.478429413e-07,0) (-3.602534663e-07,0) (-9.787608102e-07,0) (-1.968661101e-06,0) (2.586840302e-06,0) (-8.801255416e-07,0) (3.545150804e-06,0) (-3.546258443e-06,0) (-5.013482219e-07,0) (2.325538149e-06,0) (-2.752961059e-06,0) (-8.67361738e-19,0) (0.001081420423,0) (0.03683490234,0) (-0.03477674716,0) (-0.0005078099275,0) (-3.794707604e-19,0) (2.592330502e-05,0) (0.01315681817,0) (-0.01006015626,0) (-0.00380032527,0) (-8.809142651e-20,0) (5.636850501e-07,0) (2.319957752e-05,0) (-2.332385676e-05,0) (-0.001925267643,0) (1.355252716e-20,0) (7.146844379e-11,0) (0.0005565170578,0) (-0.0006475377206,0) (0.0001477002938,0) (-1.694065895e-21,0) (5.082980186e-07,0) (-3.210905036e-06,0) (1.660522345e-06,0) (-0.0003762065667,0) (1.694065895e-21,0) (1.287500472e-06,0) (-1.21303074e-05,0) (4.235369307e-05,0) (-4.425289125e-05,0) (4.65868121e-21,0) (2.385662691e-06,0) (-1.929410409e-05,0) (2.488333702e-06,0) (-1.793936166e-05,0) (2.117582368e-21,0) (9.350130233e-07,0) (-1.152532848e-05,0) (1.956543723e-05,0) (-2.651761138e-05,0) (-3.705769144e-22,0) (4.335966598e-08,0) (-3.011056923e-07,0) (1.016306761e-06,0) (-1.070586547e-05,0) (-2.64697796e-23,0) (2.401865277e-07,0) (-1.133223818e-06,0) (-4.430724484e-06,0) (4.166258622e-06,0) (5.29395592e-23,0) (-3.427165247e-10,0) (7.278680151e-07,0) (-3.068866642e-06,0) (2.654190084e-06,0) (-5.29395592e-23,0) (1.64497237e-07,0) (-1.697154657e-06,0) (6.207993408e-06,0) (-6.345131393e-06,0) (1.32348898e-22,0) (9.009374426e-08,0) (-1.008053064e-06,0) (2.068286092e-06,0) (-1.472957506e-06,0) -(0.006996970788,0) (0.02648866226,0) (0.0003000404036,0) (0.002950260254,0) (0.0006171004868,0) (0.0004135149158,0) (0.0001280079144,0) (1.038046461e-05,0) (7.090544467e-05,0) (4.394723674e-06,0) (3.264040205e-06,0) (2.168226279e-06,0) (4.463860426e-06,0) (-0.0197553569,0) (0.003169952543,0) (-0.001001057065,0) (0.0004308924624,0) (-0.002770174458,0) (0.0345564099,0) (-1.463376791e-05,0) (-0.000104145023,0) (0.01124524197,0) (8.482571159e-05,0) (-0.0002556526339,0) (0.0007911948594,0) (-5.099026091e-06,0) (4.407108103e-06,0) (0.003311940614,0) (-7.032866511e-06,0) (-6.547290259e-06,0) (2.17110916e-05,0) (-3.549379796e-06,0) (-6.299896001e-06,0) (0.000423327795,0) (-5.761058672e-06,0) (3.827017946e-05,0) (1.944685014e-05,0) (-3.72626502e-07,0) (3.938617866e-06,0) (0.0001271093011,0) (-3.486916283e-07,0) (8.356272429e-08,0) (4.1630784e-06,0) (-8.202975706e-07,0) (-1.144619623e-06,0) (2.265084665e-06,0) (-7.4172067e-07,0) (7.646110877e-06,0) (7.028005024e-06,0) (-4.193909109e-07,0) (3.865265904e-06,0) (1.465586965e-06,0) (4.33680869e-19,0) (6.036641356e-05,0) (-0.03492203779,0) (0.0248557125,0) (-0.01195439354,0) (2.168404345e-19,0) (3.980786074e-05,0) (0.003563583505,0) (-0.01195701747,0) (0.009444674026,0) (4.33680869e-19,0) (-6.897536925e-07,0) (3.64387135e-06,0) (-0.0001452631239,0) (0.01867201301,0) (4.065758147e-20,0) (-5.822791923e-09,0) (-0.0001187671813,0) (-0.0006389488347,0) (0.0008196149627,0) (0,0) (-2.79072853e-06,0) (-2.5788548e-06,0) (-2.32486879e-05,0) (0.002942712557,0) (6.776263578e-21,0) (-3.739146372e-07,0) (-7.534478148e-06,0) (1.681240677e-06,0) (0.0004156051342,0) (-3.388131789e-21,0) (-3.079720876e-07,0) (-2.842608235e-05,0) (-3.184660905e-05,0) (0.0002010405408,0) (-6.776263578e-21,0) (-1.028458898e-07,0) (-7.315992414e-06,0) (1.276502879e-05,0) (0.000267013377,0) (-5.020416579e-10,0) (0,0) (-2.62595584e-08,0) (1.224289849e-06,0) (3.061993997e-05,0) (-4.235164736e-22,0) (-2.317871362e-08,0) (-1.732223519e-06,0) (6.817124161e-06,0) (1.627774038e-05,0) (-5.29395592e-23,0) (-4.037988332e-08,0) (5.914031108e-06,0) (-3.068111963e-06,0) (-1.752991826e-06,0) (-2.137047511e-08,0) (4.235164736e-22,0) (-1.256735752e-06,0) (1.465535905e-05,0) (2.691960492e-06,0) (2.64697796e-23,0) (-4.779938991e-09,0) (-9.112894287e-07,0) (1.646291736e-06,0) (-4.897159534e-07,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0.0616499241,0) (-0.05612508663,0) (-0.005524837477,0) (-0.09849767551,0) (0.003987118413,0) (0.0945105571,0) (-0.03774692604,0) (-0.03968505748,0) (0.07743198352,0) (-0.01322794725,0) (-0.0355135707,0) (0.04874151795,0) (-0.03985523459,0) (0.009503484414,0) (0.03035175017,0) (-0.02158210048,0) (0.004347737172,0) (0.01723436331,0) (-0.01398296519,0) (0.00355609991,0) (0.01042686528,0) (-0.002231696874,0) (-0.003401939794,0) (0.005633636669,0) (-0.004236003097,0) (0.0009642830837,0) (0.003271720014,0) (-0.0007253584191,0) (-0.0008634759321,0) (0.001588834351,0) (-0.000973594934,0) (0.0001368578979,0) (0.0008367370361,0) (-6.904381328e-05,0) (-0.0002476788081,0) (0.0003167226213,0) (-0.0001631146387,0) (1.171560823e-05,0) (0.0001513990305,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.0006430541106,0) (-0.002209624475,0) (-2.335865557e-06,0) (-0.0002782637621,0) (-2.751354053e-05,0) (-4.977489973e-05,0) (-5.19439452e-06,0) (-3.03377501e-06,0) (-4.441312862e-06,0) (-1.389602407e-06,0) (-1.616956109e-07,0) (-3.140627274e-08,0) (-4.069859621e-07,0) (-0.02315446542,0) (0.02486709624,0) (-0.0002113144789,0) (-0.002883591821,0) (0.002752586386,0) (-0.002965630851,0) (-0.0002318971576,0) (0.0002190437346,0) (-0.0007133624739,0) (-0.0002270707624,0) (0.0002787001547,0) (-0.0001841079618,0) (1.946548646e-05,0) (-1.743881751e-05,0) (-0.0002488508671,0) (6.647567465e-06,0) (-1.942370938e-05,0) (-1.356825305e-06,0) (2.009289265e-06,0) (-7.120632471e-06,0) (-2.917357685e-05,0) (2.017518414e-06,0) (8.169870928e-06,0) (-1.023318319e-05,0) (1.202217678e-06,0) (7.088695561e-07,0) (-1.562354862e-05,0) (4.044755587e-07,0) (3.404607548e-08,0) (-4.521418737e-07,0) (1.300895681e-06,0) (-2.972631304e-06,0) (1.388004183e-06,0) (1.167951802e-06,0) (1.454595627e-06,0) (-3.315964822e-06,0) (6.652579445e-07,0) (1.014281671e-06,0) (-2.410363274e-06,0) (1.734723476e-18,0) (-0.001830745551,0) (-0.04184804203,0) (0.04614153827,0) (-0.0003918889316,0) (6.505213035e-19,0) (-1.505671622e-05,0) (-0.0107099765,0) (0.01335057348,0) (-0.003158834692,0) (-2.032879073e-20,0) (-6.739309617e-07,0) (-3.000331146e-05,0) (3.095587548e-05,0) (-0.001514871375,0) (0,0) (-1.267303587e-10,0) (-0.0008741803541,0) (0.0008591989311,0) (5.958119995e-05,0) (-1.694065895e-21,0) (-6.219833605e-07,0) (4.261561381e-06,0) (-4.506042692e-06,0) (-0.0002959797984,0) (-2.382280164e-21,0) (-2.325279806e-06,0) (1.61001834e-05,0) (1.56959449e-05,0) (-3.949717088e-05,0) (0,0) (-2.219766983e-06,0) (2.561091166e-05,0) (-3.502433912e-05,0) (-1.382955411e-05,0) (3.546950467e-21,0) (-1.682357216e-06,0) (1.529640096e-05,0) (-6.160454092e-06,0) (-2.125727712e-05,0) (0,0) (-7.037685441e-08,0) (3.9958929e-07,0) (2.960709067e-07,0) (-8.452535281e-06,0) (1.058791184e-22,0) (-1.588206347e-07,0) (1.504087388e-06,0) (-4.685734219e-06,0) (2.429661067e-06,0) (0,0) (-2.96845995e-10,0) (-7.277574765e-07,0) (4.071144148e-06,0) (-3.096918026e-06,0) (-3.30872245e-22,0) (-3.56383646e-07,0) (2.252412441e-06,0) (2.637815303e-06,0) (-5.847758739e-06,0) (5.29395592e-23,0) (-2.276567175e-07,0) (1.337660336e-06,0) (1.200711633e-06,0) (-2.564584225e-06,0) -(-0.01091369342,0) (-0.04131632783,0) (-0.0004679952334,0) (-0.004601739364,0) (-0.0009625373212,0) (-0.000644989832,0) (-0.0001996634222,0) (-1.619117925e-05,0) (-0.0001105964721,0) (-6.854775913e-06,0) (-5.091165187e-06,0) (-3.381943069e-06,0) (-6.962613624e-06,0) (0.02620752866,0) (0.002224269497,0) (-0.001000892129,0) (0.0003047929621,0) (0.003673383099,0) (-0.05422961591,0) (-1.170549913e-05,0) (0.0001381032981,0) (-0.01748116626,0) (5.58488008e-05,0) (0.0003390297478,0) (-0.001362512354,0) (6.763664198e-06,0) (2.347166408e-06,0) (-0.005173910596,0) (-1.001395262e-05,0) (8.679345149e-06,0) (-1.134781363e-05,0) (4.708510543e-06,0) (-1.51237669e-05,0) (-0.0006345178053,0) (7.640857198e-06,0) (-8.106428758e-06,0) (-8.057400327e-05,0) (4.942920937e-07,0) (-1.090440533e-06,0) (-0.0002032277807,0) (4.625928184e-07,0) (-3.831370518e-06,0) (-2.711142746e-06,0) (-2.393650938e-06,0) (1.517526643e-06,0) (4.079308649e-07,0) (9.838166031e-07,0) (-2.85806264e-06,0) (-1.98571424e-05,0) (5.56293275e-07,0) (-1.496586117e-06,0) (-6.720478032e-06,0) (-6.505213035e-19,0) (4.480721443e-05,0) (0.04632333236,0) (-0.001379381288,0) (-0.01073557061,0) (-4.33680869e-19,0) (2.884086942e-05,0) (0.002367327906,0) (0.01585694053,0) (-0.01995489753,0) (0,0) (-5.527808322e-07,0) (2.718459272e-06,0) (0.0001926337373,0) (-0.02909695075,0) (-2.710505431e-20,0) (-4.47964897e-09,0) (-9.694780846e-05,0) (0.0008472184569,0) (-0.0008468054569,0) (-5.421010862e-20,0) (-2.241467871e-06,0) (-2.480320484e-06,0) (3.082178995e-05,0) (-0.004571428628,0) (1.355252716e-20,0) (-3.003345517e-07,0) (9.997786745e-06,0) (1.10553403e-06,0) (-0.0006493401365,0) (1.694065895e-21,0) (-2.479739066e-07,0) (3.770913572e-05,0) (-0.0001390322279,0) (-0.0001175146047,0) (0,0) (-8.278796515e-08,0) (9.703906891e-06,0) (4.395115462e-06,0) (-0.0004388356181,0) (-3.966417036e-10,0) (0,0) (3.483258316e-08,0) (-1.062099363e-06,0) (-4.860039762e-05,0) (-4.235164736e-22,0) (-1.83956344e-08,0) (2.297772888e-06,0) (-2.83623588e-05,0) (-7.201757854e-06,0) (0,0) (-3.23672139e-08,0) (-3.897417542e-06,0) (4.070176231e-06,0) (-1.782127644e-06,0) (-1.71723915e-08,0) (0,0) (1.666924655e-06,0) (-8.914065602e-06,0) (-1.780002849e-05,0) (5.29395592e-23,0) (-3.673872713e-09,0) (1.208697071e-06,0) (-1.088177979e-06,0) (-4.919808827e-07,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (1.333601076e-05,0) (-0.003680518671,0) (0.01171062439,0) (0.004572524643,0) (-0.001931974151,0) (1.016225988e-05,0) (-0.003695330387,0) (0.003163975381,0) (-1.380679875e-06,0) (-0.002791090092,0) (0.002119938484,0) (-1.702859645e-06,0) (0.001336173644,0) (-0.001159269776,0) (4.948719016e-07,0) (5.602991138e-05,0) (-5.170347486e-05,0) (1.165106662e-08,0) (0.0004402708215,0) (-0.0003880446353,0) (1.452039402e-07,0) (-0.0002896023254,0) (0.0002398595806,0) (-1.282564785e-07,0) (0.0001483925852,0) (-0.0001273107664,0) (5.926285014e-08,0) (-7.692981325e-05,0) (6.523609042e-05,0) (-3.032478854e-08,0) (4.206025406e-05,0) (-3.160521265e-05,0) (3.109924057e-08,0) (-1.970181647e-05,0) (1.391253042e-05,0) (-1.452397306e-08,0) (7.57314583e-06,0) (-4.370287337e-06,0) (1.070626807e-08,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.004214043356,0) (0.006158998385,0) (0.0001312011809,0) (-0.0007825700286,0) (-0.000160366703,0) (0.0001179069761,0) (2.941101487e-05,0) (-1.215575976e-05,0) (-1.292825713e-05,0) (3.591247411e-06,0) (1.211948785e-06,0) (2.186819431e-07,0) (-9.353687809e-07,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.04520166927,0) (0.04251668573,0) (-0.0009345582901,0) (-0.0001451268835,0) (0.0002799358963,0) (0.0005029806326,0) (-0.0003063111856,0) (-7.350246924e-05,0) (0.0001538232273,0) (3.114230238e-05,0) (-2.423650254e-05,0) (1.916106456e-05,0) (2.552626129e-05,0) (1.454931824e-06,0) (-0.003157854218,0) (0.007512458075,0) (0.0005195851016,0) (-1.088795504e-06,0) (0.03421108654,0) (-7.146290097e-06,0) (-1.177097021e-08,0) (-0.001457959397,0) (-6.924319911e-07,0) (7.086881675e-10,0) (-1.038967993e-05,0) (9.381966906e-10,0) (-1.140640338e-05,0) (0.001087813846,0) (-1.904659493e-05,0) (-3.587190187e-09,0) (0.0001295991408,0) (1.20807976e-09,0) (5.088937078e-05,0) (-0.0006397323042,0) (9.728329649e-10,0) (-2.632356776e-05,0) (0.0001948452291,0) (1.377274291e-10,0) (-1.900743854e-05,0) (0.0002168844333,0) (1.768045232e-10,0) (1.738073434e-06,0) (-3.331910854e-05,0) (-2.35095165e-06,0) (-4.003305574e-11,0) (-1.444095283e-05,0) (1.856004633e-10,0) (-8.44366819e-06,0) (5.955031546e-05,0) (1.173764161e-10,0) (-3.04711323e-06,0) (3.220324779e-05,0) (-5.421010862e-19,0) (9.495322441e-05,0) (7.430118958e-08,0) (-0.00369666856,0) (0.02112509155,0) (6.505213035e-19,0) (6.333326623e-05,0) (0.001467685891,0) (-1.522189737e-06,0) (0.003983623004,0) (0,0) (-1.128629076e-06,0) (1.486140405e-06,0) (-1.732577337e-08,0) (0.0006790959101,0) (8.470329473e-22,0) (-9.281519799e-09,0) (-5.628658706e-06,0) (-6.662351652e-09,0) (-1.747322974e-05,0) (5.421010862e-20,0) (-4.549907229e-06,0) (-1.145926933e-05,0) (-2.539534721e-08,0) (0.0005202223217,0) (0,0) (-6.099495322e-07,0) (1.186146372e-08,0) (1.038789438e-05,0) (-0.0002534353773,0) (6.776263578e-21,0) (-5.02811008e-07,0) (4.132508469e-09,0) (0.000156366619,0) (-0.0002955184562,0) (0,0) (-1.679232679e-07,0) (1.383585823e-09,0) (-3.776354522e-05,0) (0.0001676407959,0) (-8.088281908e-10,0) (0,0) (1.092177589e-11,0) (-1.716212179e-05,0) (5.082791124e-05,0) (1.694065895e-21,0) (-3.774756953e-08,0) (5.146970487e-10,0) (2.38628948e-05,0) (-5.030265065e-05,0) (2.117582368e-22,0) (-6.59283491e-08,0) (1.303346218e-06,0) (6.607505923e-10,0) (8.223005948e-06,0) (-3.476269999e-08,0) (4.235164736e-22,0) (2.906841531e-10,0) (-2.422359532e-05,0) (4.450385645e-05,0) (0,0) (-7.6060703e-09,0) (1.822462067e-10,0) (6.185128518e-07,0) (3.673086727e-06,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (-0.0002997192672,0.0005191289988) (0.09925944203,-0.1719223967) (0.0005701036329,-0.0009874484577) (0.03744131566,-0.06485026102) (-1.08363822e-05,1.876916455e-05) (5.12637978e-06,-8.879150237e-06) (-0.0004333454456,0.000750576329) (-0.004174757703,0.007230892451) (-5.79928862e-07,1.004466254e-06) (-0.0003092991382,0.0005357218221) (-0.008557666191,0.01482231264) (-1.127253589e-06,1.952460489e-06) (0.001441927363,-0.002497491453) (0.0001026368809,-0.0001777722925) (1.949578464e-07,-3.376768953e-07) (7.957927152e-05,-0.0001378353415) (6.761905753e-05,-0.0001171196432) (1.853059582e-08,-3.209593345e-08) (0.0007081325001,-0.001226521469) (7.017291895e-05,-0.0001215430609) (9.836838076e-08,-1.703790333e-07) (-3.926527806e-05,6.800945657e-05) (-0.000555379596,0.0009619456778) (-7.501276439e-08,1.299259191e-07) (0.0001990917172,-0.0003448369695) (1.15125293e-05,-1.994028567e-05) (2.660804959e-08,-4.608649378e-08) (-1.201453687e-05,2.080978829e-05) (-0.0001308978504,0.0002267217275) (-1.801120482e-08,3.119632186e-08) (0.0001320177961,-0.0002286615304) (1.379282385e-06,-2.388987168e-06) (1.705203038e-08,-2.953498298e-08) (-1.642038463e-06,2.844094046e-06) (-6.621122398e-05,0.000114681204) (-8.667301526e-09,1.501220661e-08) (3.661879991e-05,-6.342562196e-05) (3.18796139e-08,-5.521711101e-08) (4.775645764e-09,-8.271661102e-09) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.000923337689,0.00159926779) (0.0008274199475,-0.001433133388) (-5.55619918e-06,9.623619276e-06) (-3.00319403e-06,5.201684645e-06) (3.982825217e-06,-6.898455633e-06) (1.175840002e-05,-2.036614625e-05) (-4.157662878e-06,7.201283346e-06) (-2.677457455e-06,4.637492347e-06) (2.594031055e-06,-4.492993584e-06) (1.179960774e-06,-2.043752012e-06) (-3.634784569e-07,6.295631548e-07) (1.553863596e-07,-2.691370696e-07) (5.193486208e-07,-8.995381981e-07) (0.03245066753,-0.05620620491) (1.973358379e-05,-3.417956974e-05) (0.003074044889,-0.005324401932) (-0.003612640396,0.006257276715) (-1.712840758e-06,2.966727218e-06) (0.0006726502744,-0.001165064451) (-7.897721341e-05,0.0001367925463) (-9.66799994e-09,1.67454671e-08) (-2.492556751e-05,4.317234933e-05) (2.421005667e-06,-4.19330482e-06) (3.489741388e-10,-6.044409389e-10) (-3.762967448e-07,6.517650808e-07) (-8.094592238e-08,1.402024502e-07) (3.136037117e-05,-5.431775621e-05) (2.045657133e-05,-3.54318209e-05) (6.618798767e-10,-1.146409575e-09) (-2.146830323e-05,3.718419194e-05) (8.675245077e-07,-1.502596524e-06) (-9.606141336e-11,1.663832486e-10) (1.456791745e-05,-2.523237319e-05) (-1.076291122e-05,1.864190907e-05) (1.04629614e-07,-1.812238073e-07) (-8.956602146e-10,1.551328998e-09) (2.547207111e-05,-4.411892133e-05) (-6.797765478e-11,1.177407519e-10) (6.283968979e-06,-1.088415354e-05) (5.35510915e-06,-9.275321128e-06) (-1.527935823e-11,2.646462476e-11) (1.016270017e-06,-1.760231303e-06) (2.862275528e-06,-4.95760664e-06) (-2.747461897e-10,4.758743597e-10) (7.443505779e-07,-1.28925302e-06) (4.771932706e-06,-8.265229897e-06) (-7.264500146e-11,1.258248334e-10) (1.575517403e-06,-2.728876191e-06) (4.761717681e-06,-8.247536954e-06) (-3.577407697e-11,6.196251891e-11) (1.541553266e-06,-2.67004858e-06) (3.194233381e-06,-5.532574508e-06) (4.33680869e-19,1.734723476e-18) (-0.002729426434,0.004727505259) (0.06324356095,-0.1095410608) (3.126494954e-05,-5.415248111e-05) (0.0002650767828,-0.0004591264557) (-5.421010862e-20,3.252606517e-19) (0.0001065037686,-0.0001844699384) (-0.006663150733,0.01154091561) (-9.127041456e-07,1.580849952e-06) (0.0002416297276,-0.0004185149648) (4.235164736e-22,-8.470329473e-22) (1.483669546e-06,-2.569791035e-06) (-3.500462032e-05,6.06297809e-05) (-8.719713196e-09,1.510298628e-08) (1.471765147e-05,-2.549172011e-05) (-4.235164736e-22,2.541098842e-21) (6.08483442e-09,-1.053924237e-08) (-3.835660981e-05,6.643559699e-05) (-3.797649481e-09,6.577721851e-09) (1.178686968e-06,-2.041545716e-06) (-1.905824131e-21,0) (2.4179593e-07,-4.188028358e-07) (2.191988206e-10,-3.796634942e-10) (-2.364132934e-05,4.094798358e-05) (1.230236002e-05,-2.130831261e-05) (0,-8.470329473e-22) (1.181594739e-06,-2.046582122e-06) (1.185010832e-09,-2.052498968e-09) (-4.056713351e-05,7.026433636e-05) (-2.316881374e-05,4.012956255e-05) (8.470329473e-22,-2.541098842e-21) (-2.188570265e-06,3.790714895e-06) (-5.101434888e-09,8.835944417e-09) (6.486224796e-05,-0.000112344709) (-2.66489559e-06,4.61573456e-06) (-4.235164736e-22,8.470329473e-22) (-1.304105758e-06,2.258777432e-06) (-2.554688277e-09,4.424849894e-09) (3.739300532e-05,-6.476658507e-05) (4.052238551e-06,-7.018683054e-06) (-1.058791184e-22,0) (-1.147182595e-08,1.986978541e-08) (-1.153315372e-11,1.997600821e-11) (4.290322277e-06,-7.431056164e-06) (1.630475981e-06,-2.824067239e-06) (1.058791184e-22,4.235164736e-22) (-8.329871479e-08,1.442776062e-07) (-9.227744456e-11,1.598292224e-10) (3.112744687e-06,-5.391431949e-06) (4.610680091e-06,-7.985932175e-06) (7.411538288e-22,-2.117582368e-22) (-4.072151729e-12,7.05317369e-12) (-4.732118624e-07,8.196269885e-07) (-4.150544398e-10,7.188953777e-10) (1.376158085e-05,-2.383575722e-05) (1.058791184e-22,-1.058791184e-22) (-1.530521796e-07,2.650941513e-07) (-1.73488401e-10,3.004907251e-10) (5.513119534e-06,-9.54900314e-06) (4.337960104e-06,-7.513567301e-06) (5.29395592e-23,2.117582368e-22) (-7.700519144e-08,1.33376904e-07) (-8.508942103e-11,1.473792004e-10) (6.216831785e-07,-1.076786851e-06) (6.222146986e-06,-1.077707471e-05) -(0.05157424969,-0.08932922082) (0.07911949656,-0.1370389879) (0.005517042647,-0.009555798172) (-0.009454263379,0.01637526452) (-0.002817873889,0.004880700745) (0.001260905509,-0.002183952404) (0.0005417059474,-0.0009382622237) (-8.342600894e-05,0.0001444980862) (-0.0001916579055,0.0003319612299) (2.369564209e-05,-4.104205603e-05) (2.020298538e-05,-3.499259714e-05) (6.741548682e-06,-1.167670484e-05) (-1.149346843e-05,1.990727127e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.05227305888,0) (-0.01059774195,0) (0.0007747731012,0) (-0.0019584315,0) (0.0004996371268,0) (-2.324558865e-05,0) (-2.394669917e-05,0) (-7.276138765e-06,0) (8.264461737e-06,0) (1.838973561e-05,0) (-3.937587669e-06,0) (5.221874471e-07,0) (3.804800733e-06,0) (0.003294115467,0) (-5.03865326e-06,0) (8.521411615e-05,0) (8.201923211e-05,0) (2.067578889e-07,0) (-0.06268694534,0) (-4.461298473e-06,0) (-1.290932257e-08,0) (0.008994674824,0) (-1.566384246e-05,0) (4.177343488e-08,0) (-0.003310642092,0) (-1.39836719e-10,0) (4.550215342e-08,0) (0.0007412007475,0) (3.371897556e-11,0) (-2.135755559e-07,0) (-6.832987415e-06,0) (4.698765009e-11,0) (-6.359455323e-07,0) (-9.524322186e-05,0) (-1.168207208e-06,0) (4.963625375e-11,0) (-6.28702053e-07,0) (-3.114294568e-11,0) (4.478956051e-07,0) (5.538823034e-05,0) (2.230680666e-12,0) (1.774135912e-06,0) (2.782574797e-06,0) (4.907366656e-10,0) (-1.097731374e-06,0) (-3.17533837e-06,0) (-3.19703626e-11,0) (1.108827398e-06,0) (2.817216516e-06,0) (-3.361210006e-11,0) (1.86095787e-06,0) (7.359028335e-06,0) (-4.33680869e-19,0) (-0.0002852827998,0) (-0.0001093982521,0) (-4.438290702e-06,0) (0.0612087474,0) (-1.029992064e-18,0) (-5.672657459e-06,0) (-0.001412428299,0) (2.934551322e-06,0) (-0.05104289932,0) (5.844527336e-20,0) (2.315741605e-10,0) (2.280737082e-08,0) (1.99657454e-10,0) (-0.001386055972,0) (2.202285663e-20,0) (-2.218079148e-11,0) (-0.0001285817751,0) (-2.334044471e-07,0) (0.000791823636,0) (2.435219723e-21,0) (1.565366177e-10,0) (1.581342029e-11,0) (4.980086481e-09,0) (-0.0001439248567,0) (-5.029258124e-22,0) (1.452916396e-08,0) (4.223110462e-10,0) (-7.100395277e-06,0) (-2.760876911e-05,0) (-2.580803511e-22,0) (-1.566034151e-09,0) (1.050286112e-10,0) (1.196885357e-08,0) (-1.098689074e-05,0) (3.374896899e-22,0) (2.91435589e-09,0) (1.016381852e-10,0) (-1.778376473e-07,0) (-1.275177812e-05,0) (-2.64697796e-22,0) (-1.096373539e-09,0) (-2.116571378e-11,0) (3.816288677e-07,0) (7.029415091e-05,0) (1.852884572e-22,0) (-1.759502375e-08,0) (2.032173328e-10,0) (-7.041690834e-06,0) (-9.234442056e-06,0) (2.584939414e-25,0) (3.778730592e-10,0) (3.371220318e-09,0) (-7.123309402e-13,0) (-3.067020323e-09,0) (8.602678371e-23,0) (-4.169374205e-09,0) (-8.414027643e-11,0) (2.098761966e-06,0) (5.54532595e-06,0) (-9.926167351e-23,0) (-9.442255645e-09,0) (-1.131400601e-10,0) (5.032227385e-06,0) (1.055086583e-06,0) -(-0.01870392239,0) (-0.005666223889,0) (0.0009130148356,0) (-0.0008914920716,0) (0.0002236517882,0) (-2.053323155e-05,0) (-1.204518931e-05,0) (-6.483972824e-07,0) (5.785990742e-06,0) (3.633038737e-06,0) (-1.276610461e-06,0) (3.596617133e-07,0) (1.548277966e-06,0) (-2.360738584e-06,0) (0.03012600167,0) (-0.02661648463,0) (-0.0001013170272,0) (-3.750412402e-07,0) (-0.02410440258,0) (-6.473083976e-06,0) (7.86788762e-09,0) (0.002917313174,0) (-6.209909928e-05,0) (-5.982724624e-08,0) (-0.0008486929007,0) (8.153315783e-11,0) (1.767015122e-07,0) (0.0001524684146,0) (8.386966911e-07,0) (3.506062313e-10,0) (-2.412940959e-06,0) (-1.03489508e-10,0) (4.325370202e-07,0) (-2.813110036e-05,0) (-7.01336135e-11,0) (-1.272009523e-06,0) (-6.63678222e-07,0) (2.141801211e-11,0) (7.20810683e-07,0) (2.366970548e-05,0) (-1.012439589e-10,0) (-8.825188043e-08,0) (-4.302174199e-06,0) (2.262857906e-07,0) (1.343906619e-10,0) (-5.823968285e-07,0) (3.391481584e-11,0) (1.224153722e-06,0) (1.147096904e-06,0) (3.625524393e-11,0) (1.96618936e-06,0) (7.619721113e-07,0) (1.734723476e-18,0) (-0.0002399783128,0) (4.429670749e-06,0) (0.05862781591,0) (-0.03565811638,0) (-4.33680869e-19,0) (3.134980355e-06,0) (-0.003476641184,0) (-3.253025745e-06,0) (-0.01396980218,0) (-2.710505431e-20,0) (1.136629777e-07,0) (1.037074105e-06,0) (-5.146353529e-09,0) (-0.00182694799,0) (0,0) (-1.794104248e-08,0) (-0.0001795896175,0) (1.81405844e-07,0) (0.0008103216112,0) (3.388131789e-21,0) (2.246534061e-07,0) (1.460111013e-07,0) (-3.147057971e-10,0) (-0.0001426984983,0) (8.470329473e-22,0) (3.165906529e-08,0) (-1.530328056e-10,0) (-5.880359132e-08,0) (-2.120406882e-05,0) (1.058791184e-22,0) (-1.426401455e-08,0) (4.771886505e-10,0) (-9.224878544e-07,0) (5.639404919e-06,0) (0,0) (-1.923071812e-09,0) (3.061682836e-11,0) (1.365337013e-07,0) (3.050917587e-06,0) (-5.065341759e-10,0) (4.235164736e-22,0) (3.046264775e-12,0) (6.475738678e-07,0) (1.629354359e-05,0) (0,0) (9.109682087e-09,0) (-1.822953378e-10,0) (-1.485812014e-06,0) (-3.477463597e-06,0) (0,0) (6.655951109e-09,0) (-5.74589738e-07,0) (1.527580882e-10,0) (1.947745163e-07,0) (-7.857037501e-09,0) (1.058791184e-22,0) (9.043149751e-11,0) (3.224418723e-06,0) (6.035756443e-07,0) (-1.058791184e-22,0) (-1.558553604e-08,0) (1.607444256e-10,0) (1.658167214e-06,0) (-5.670284416e-07,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (-0.04650791085,0) (0.05339342277,0) (-0.006885511921,0) (0.06582968803,0) (0.005456254699,0) (-0.07128594273,0) (-0.03665265658,0) (0.0950451253,0) (-0.05839246872,0) (-0.01466480269,0) (0.05142104472,0) (-0.03675624203,0) (0.005432133241,0) (0.01745725437,0) (-0.02288938761,0) (-0.009939728979,0) (0.02293658634,0) (-0.01299685736,0) (0.0009346548029,0) (0.006928611436,0) (-0.007863266239,0) (-0.002292082329,0) (0.006540467226,0) (-0.004248384897,0) (0.0007511567492,0) (0.001716174845,0) (-0.002467331594,0) (-0.0007179158406,0) (0.001916075511,0) (-0.00119815967,0) (0.0004232273626,0) (0.0002078052141,0) (-0.0006310325767,0) (-7.912951479e-05,0) (0.0003179706291,0) (-0.0002388411143,0) (9.769891917e-05,0) (1.648674933e-05,0) (-0.0001141856685,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.0008172287347,0) (-0.00280811301,0) (-2.968547159e-06,0) (-0.0003536329813,0) (-3.496572923e-05,0) (-6.325669591e-05,0) (-6.601323888e-06,0) (-3.855489098e-06,0) (-5.64426606e-06,0) (-1.765983606e-06,0) (-2.054917267e-07,0) (-3.991282865e-08,0) (-5.172202734e-07,0) (0.02065391313,0) (-0.01874311768,0) (-2.839598951e-06,0) (0.001922210209,0) (-0.002074278464,0) (-0.00378330843,0) (0.0001500682067,0) (-0.0001650648726,0) (-0.0009079186671,0) (0.0002733644709,0) (-0.0002099969132,0) (-0.000231728652,0) (-1.467732161e-05,0) (1.720867302e-05,0) (-0.0003162091956,0) (-5.007846613e-06,0) (-1.116087826e-05,0) (-1.792231646e-06,0) (-1.513850326e-06,0) (-4.757169056e-06,0) (-3.730015351e-05,0) (1.142734126e-05,0) (-6.157851779e-06,0) (-5.327686836e-06,0) (-9.058902923e-07,0) (3.219670478e-06,0) (-1.974033463e-05,0) (-3.048988288e-07,0) (6.478429413e-07,0) (-3.602534663e-07,0) (-9.787608102e-07,0) (-1.968661101e-06,0) (2.586840302e-06,0) (-8.801255416e-07,0) (3.545150804e-06,0) (-3.546258443e-06,0) (-5.013482219e-07,0) (2.325538149e-06,0) (-2.752961059e-06,0) (-8.67361738e-19,0) (0.001081420423,0) (0.03683490234,0) (-0.03477674716,0) (-0.0005078099275,0) (-4.878909776e-19,0) (2.592330502e-05,0) (0.01315681817,0) (-0.01006015626,0) (-0.00380032527,0) (-3.388131789e-20,0) (5.636850501e-07,0) (2.319957752e-05,0) (-2.332385676e-05,0) (-0.001925267643,0) (1.355252716e-20,0) (7.146844379e-11,0) (0.0005565170578,0) (-0.0006475377206,0) (0.0001477002938,0) (-5.505714157e-21,0) (5.082980186e-07,0) (-3.210905036e-06,0) (1.660522345e-06,0) (-0.0003762065667,0) (8.470329473e-22,0) (1.287500472e-06,0) (-1.21303074e-05,0) (4.235369307e-05,0) (-4.425289125e-05,0) (2.117582368e-21,0) (2.385662691e-06,0) (-1.929410409e-05,0) (2.488333702e-06,0) (-1.793936166e-05,0) (1.270549421e-21,0) (9.350130233e-07,0) (-1.152532848e-05,0) (1.956543723e-05,0) (-2.651761138e-05,0) (-3.176373552e-22,0) (4.335966598e-08,0) (-3.011056923e-07,0) (1.016306761e-06,0) (-1.070586547e-05,0) (-5.29395592e-23,0) (2.401865277e-07,0) (-1.133223818e-06,0) (-4.430724484e-06,0) (4.166258622e-06,0) (5.29395592e-23,0) (-3.427165247e-10,0) (7.278680151e-07,0) (-3.068866642e-06,0) (2.654190084e-06,0) (5.29395592e-23,0) (1.64497237e-07,0) (-1.697154657e-06,0) (6.207993408e-06,0) (-6.345131393e-06,0) (1.588186776e-22,0) (9.009374426e-08,0) (-1.008053064e-06,0) (2.068286092e-06,0) (-1.472957506e-06,0) -(0.006996970788,0) (0.02648866226,0) (0.0003000404036,0) (0.002950260254,0) (0.0006171004868,0) (0.0004135149158,0) (0.0001280079144,0) (1.038046461e-05,0) (7.090544467e-05,0) (4.394723674e-06,0) (3.264040205e-06,0) (2.168226279e-06,0) (4.463860426e-06,0) (-0.0197553569,0) (0.003169952543,0) (-0.001001057065,0) (0.0004308924624,0) (-0.002770174458,0) (0.0345564099,0) (-1.463376791e-05,0) (-0.000104145023,0) (0.01124524197,0) (8.482571159e-05,0) (-0.0002556526339,0) (0.0007911948594,0) (-5.099026091e-06,0) (4.407108103e-06,0) (0.003311940614,0) (-7.032866511e-06,0) (-6.547290259e-06,0) (2.17110916e-05,0) (-3.549379796e-06,0) (-6.299896001e-06,0) (0.000423327795,0) (-5.761058672e-06,0) (3.827017946e-05,0) (1.944685014e-05,0) (-3.72626502e-07,0) (3.938617866e-06,0) (0.0001271093011,0) (-3.486916283e-07,0) (8.356272429e-08,0) (4.1630784e-06,0) (-8.202975706e-07,0) (-1.144619623e-06,0) (2.265084665e-06,0) (-7.4172067e-07,0) (7.646110877e-06,0) (7.028005024e-06,0) (-4.193909109e-07,0) (3.865265904e-06,0) (1.465586965e-06,0) (0,0) (6.036641356e-05,0) (-0.03492203779,0) (0.0248557125,0) (-0.01195439354,0) (-6.505213035e-19,0) (3.980786074e-05,0) (0.003563583505,0) (-0.01195701747,0) (0.009444674026,0) (4.33680869e-19,0) (-6.897536925e-07,0) (3.64387135e-06,0) (-0.0001452631239,0) (0.01867201301,0) (2.710505431e-20,0) (-5.822791923e-09,0) (-0.0001187671813,0) (-0.0006389488347,0) (0.0008196149627,0) (5.421010862e-20,0) (-2.79072853e-06,0) (-2.5788548e-06,0) (-2.32486879e-05,0) (0.002942712557,0) (0,0) (-3.739146372e-07,0) (-7.534478148e-06,0) (1.681240677e-06,0) (0.0004156051342,0) (-3.388131789e-21,0) (-3.079720876e-07,0) (-2.842608235e-05,0) (-3.184660905e-05,0) (0.0002010405408,0) (-6.776263578e-21,0) (-1.028458898e-07,0) (-7.315992414e-06,0) (1.276502879e-05,0) (0.000267013377,0) (-5.020416579e-10,0) (0,0) (-2.62595584e-08,0) (1.224289849e-06,0) (3.061993997e-05,0) (0,0) (-2.317871362e-08,0) (-1.732223519e-06,0) (6.817124161e-06,0) (1.627774038e-05,0) (1.058791184e-22,0) (-4.037988332e-08,0) (5.914031108e-06,0) (-3.068111963e-06,0) (-1.752991826e-06,0) (-2.137047511e-08,0) (0,0) (-1.256735752e-06,0) (1.465535905e-05,0) (2.691960492e-06,0) (3.97046694e-23,0) (-4.779938991e-09,0) (-9.112894287e-07,0) (1.646291736e-06,0) (-4.897159534e-07,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0.04715705099,0) (0.02200154358,0) (0.1067286698,0) (0.02202428562,0) (0.17465834,0) (0.07141108635,0) (0.1000731762,0) (0.06107260141,0) (0.05848951507,0) (0.07464156391,0) (0.02679567375,0) (0.03681690082,0) (0.0005054573398,0) (0.06266017622,0) (0.02292789445,0) (0.005280432053,0) (0.03058641266,0) (0.0130185903,0) (4.477807442e-05,0) (0.02165478127,0) (0.007876474827,0) (0.007860017766,0) (0.003864294445,0) (0.004255431357,0) (8.845381168e-05,0) (0.006720385865,0) (0.002471484938,0) (0.00210919833,0) (0.001197367089,0) (0.001200149458,0) (0.0001043161214,0) (0.001637026661,0) (0.0006321024569,0) (0.0005029865235,0) (0.0001561530053,0) (0.0002392339673,0) (3.034857158e-05,0) (0.0002847271479,0) (0.0001143827643,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.01859825451,0) (0.06390622139,0) (6.755733522e-05,0) (0.008047876816,0) (0.000795739924,0) (0.001439577538,0) (0.0001502310143,0) (8.77421026e-05,0) (0.0001284505699,0) (4.018974268e-05,0) (4.676521113e-06,0) (9.083245777e-07,0) (1.177074896e-05,0) (0.008307597159,0) (0.01873421824,0) (2.900333486e-08,0) (0.0006427535352,0) (0.002074227619,0) (0.09464435446,0) (4.913666987e-05,0) (0.0001652571093,0) (0.02141018871,0) (0.0001298657198,0) (0.0002102475176,0) (0.004281715785,0) (1.48520788e-05,0) (7.255278567e-06,0) (0.007171961804,0) (5.016290298e-06,0) (8.510401907e-06,0) (0.0004140783138,0) (1.516294083e-06,0) (4.817059328e-06,0) (0.0009909456417,0) (1.489550748e-05,0) (6.169100968e-06,0) (3.434653454e-06,0) (9.073734504e-07,0) (4.539544298e-06,0) (0.0003945514261,0) (3.054738133e-07,0) (6.950824905e-07,0) (5.407485655e-07,0) (9.805598736e-07,0) (1.955658851e-06,0) (8.959547428e-06,0) (8.815473737e-07,0) (7.766105257e-06,0) (1.471985915e-05,0) (5.021918199e-07,0) (5.508541434e-06,0) (1.701290994e-05,0) (6.505213035e-19,0) (0.0003326380646,0) (0.01469282168,0) (0.03477374258,0) (0.02107630735,0) (3.252606517e-19,0) (1.4617477e-05,0) (0.006316834902,0) (0.01007236596,0) (0.03687902424,0) (-2.059984128e-18,0) (2.1761899e-07,0) (8.535073252e-06,0) (2.333908512e-05,0) (0.04386035073,0) (3.388131789e-21,0) (2.12877168e-11,0) (0.0001802105721,0) (0.0006483001201,0) (0.0003180537728,0) (-1.423015351e-19,0) (1.934512603e-07,0) (3.215971441e-06,0) (3.60306497e-07,0) (0.008593632408,0) (9.95263713e-21,0) (3.785330716e-07,0) (1.214894467e-05,0) (8.316142622e-05,0) (0.0002399527039,0) (-2.943439492e-20,0) (1.065981606e-06,0) (1.932844051e-05,0) (1.262102486e-07,0) (0.0007885513656,0) (-1.905824131e-20,0) (2.756248094e-07,0) (1.154541289e-05,0) (1.377253857e-05,0) (0.0004170207456,0) (1.334076892e-20,0) (1.372912756e-08,0) (3.015892013e-07,0) (1.65338949e-06,0) (0.000225542516,0) (-7.27918939e-22,0) (1.277388161e-07,0) (1.135050709e-06,0) (1.097300767e-05,0) (1.837231386e-05,0) (0,0) (2.299303327e-09,0) (3.123692756e-07,0) (3.074695245e-06,0) (1.039677966e-06,0) (6.882142696e-22,0) (4.239383809e-08,0) (1.699838817e-06,0) (1.420235844e-05,0) (2.844450342e-05,0) (-2.779326858e-22,0) (2.066829092e-08,0) (1.009713072e-06,0) (8.983597702e-06,0) (1.122430129e-06,0) -(0.002275502001,0) (0.008614442707,0) (9.757687426e-05,0) (0.0009594613604,0) (0.0002006887602,0) (0.0001344801982,0) (4.162976727e-05,0) (3.375856311e-06,0) (2.305933326e-05,0) (1.429218846e-06,0) (1.061506507e-06,0) (7.051341767e-07,0) (1.451702978e-06,0) (0.0197919787,0) (0.04576663462,0) (0.003064285325,0) (0.006931890706,0) (0.002776848162,0) (0.01119185278,0) (0.0002405708549,0) (0.0001044086936,0) (0.003665373389,0) (0.0006670496628,0) (0.0002562656941,0) (0.0002404198937,0) (5.111300906e-06,0) (1.4983551e-05,0) (0.001075955865,0) (7.907287005e-06,0) (6.558427154e-06,0) (1.279841726e-05,0) (3.558166217e-06,0) (2.878390215e-06,0) (0.0001413922296,0) (5.77551433e-06,0) (2.981494912e-05,0) (2.987868567e-06,0) (3.734951082e-07,0) (2.875161334e-06,0) (4.065104123e-05,0) (3.494642989e-07,0) (1.349041095e-09,0) (2.229293379e-06,0) (2.854297262e-07,0) (1.146538659e-06,0) (2.970188831e-06,0) (7.434637826e-07,0) (5.101582132e-06,0) (1.477386609e-06,0) (4.203040616e-07,0) (2.548710907e-06,0) (2.065288763e-07,0) (0,0) (0.00381120272,0) (0.03499174491,0) (0.02310179904,0) (0.06236724561,0) (0,0) (0.001009633108,0) (0.0298739139,0) (0.0119849688,0) (0.002478434544,0) (0,0) (1.099057939e-05,0) (0.0003399323208,0) (0.000145642374,0) (0.00607617128,0) (-5.421010862e-20,0) (2.892328027e-07,0) (0.001438457613,0) (0.0006405979474,0) (0.0003449598824,0) (-1.355252716e-20,0) (4.286455912e-05,0) (9.37661877e-06,0) (2.331100428e-05,0) (0.0009596164022,0) (-3.388131789e-21,0) (5.739308119e-06,0) (7.551310522e-06,0) (1.320365452e-05,0) (0.0001350056191,0) (-1.694065895e-21,0) (4.544913819e-06,0) (2.850249043e-05,0) (6.63333715e-06,0) (0.0001130091179,0) (0,0) (1.524088828e-06,0) (7.334038823e-06,0) (2.344902083e-05,0) (8.380257917e-05,0) (1.053196334e-08,0) (2.117582368e-22,0) (2.631799423e-08,0) (5.681500867e-07,0) (9.841263226e-06,0) (0,0) (4.420829531e-07,0) (1.736699721e-06,0) (1.043708995e-06,0) (1.023766845e-05,0) (-4.235164736e-22,0) (6.41372051e-07,0) (3.151162781e-06,0) (3.071688387e-06,0) (5.020121102e-06,0) (3.257591355e-07,0) (-1.058791184e-22,0) (1.259765493e-06,0) (8.095219997e-06,0) (2.749685552e-07,0) (5.29395592e-23,0) (2.494036453e-07,0) (9.133146635e-07,0) (8.753312292e-07,0) (1.469478759e-06,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (-0.06251041084,0) (-0.02312716577,0) (0.08563757661,0) (-0.03295383896,0) (0.1276303109,0) (-0.0946764719,0) (0.1030608728,0) (-0.02550019993,0) (-0.07756067291,0) (0.0673281933,0) (-0.01850623727,0) (-0.04882195603,0) (-0.003708510075,0) (0.03411132104,0) (-0.03040281096,0) (0.01146538456,0) (0.005797797515,0) (-0.01726318207,0) (-0.0006699053532,0) (0.01111428551,0) (-0.01044438016,0) (0.007652943725,0) (-0.002009962988,0) (-0.005642980737,0) (-0.0004988181503,0) (0.003776045562,0) (-0.003277227412,0) (0.002131064227,0) (-0.0005395912934,0) (-0.001591472934,0) (-0.0002399694735,0) (0.00107812515,0) (-0.0008381556767,0) (0.0004388767921,0) (-0.000121633216,0) (-0.0003172435761,0) (-5.066889512e-05,0) (0.0002023292553,0) (-0.0001516603602,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.01463443893,0) (0.0502859929,0) (5.315895081e-05,0) (0.006332645988,0) (0.0006261451749,0) (0.001132762731,0) (0.0001182125239,0) (6.904177173e-05,0) (0.0001010741099,0) (3.162416853e-05,0) (3.679821814e-06,0) (7.147348455e-07,0) (9.262068479e-06,0) (-0.009313391119,0) (-0.02485528906,0) (2.158341618e-06,0) (-0.0009642227618,0) (-0.002752518914,0) (0.07418909208,0) (-7.592983434e-05,0) (-0.0002192988358,0) (0.01682223941,0) (-0.0001078732284,0) (-0.0002790327477,0) (0.003401814836,0) (-1.969725446e-05,0) (-7.352308847e-06,0) (0.005644203073,0) (-6.658775869e-06,0) (1.481098257e-05,0) (0.000313481762,0) (-2.012532792e-06,0) (7.210277511e-06,0) (0.0007750485214,0) (2.629829628e-06,0) (-8.184795682e-06,0) (6.597129124e-06,0) (-1.204185994e-06,0) (9.994640053e-07,0) (0.0003122689409,0) (-4.05238327e-07,0) (3.652865445e-08,0) (6.786751343e-07,0) (-1.303286861e-06,0) (2.952998217e-06,0) (4.80736646e-06,0) (-1.169838614e-06,0) (3.186477351e-06,0) (1.376395317e-05,0) (-6.663773466e-07,0) (2.4025461e-06,0) (1.489570409e-05,0) (0,0) (-0.0005631257223,0) (-0.01669247861,0) (-0.04613755182,0) (0.01626508487,0) (0,0) (-8.490090396e-06,0) (-0.005142060373,0) (-0.01336677666,0) (0.03065388695,0) (4.33680869e-19,0) (-2.601810625e-07,0) (-1.103815192e-05,0) (-3.097608686e-05,0) (0.03451093673,0) (1.016439537e-20,0) (-3.774812831e-11,0) (-0.0002830758546,0) (-0.0008602105367,0) (0.0001283005263,0) (-1.355252716e-19,0) (-2.367183435e-07,0) (-4.268285589e-06,0) (-9.777383985e-07,0) (0.006761023897,0) (5.717472394e-21,0) (-6.8364659e-07,0) (-1.612492008e-05,0) (3.081896923e-05,0) (0.0002141657343,0) (1.270549421e-21,0) (-9.918547086e-07,0) (-2.565648968e-05,0) (-1.776462113e-06,0) (0.0006078986526,0) (-1.651714247e-20,0) (-4.959282655e-07,0) (-1.532305696e-05,0) (-4.336478179e-06,0) (0.0003342957791,0) (-1.058791184e-22,0) (-2.228367745e-08,0) (-4.002309418e-07,0) (4.816661111e-07,0) (0.0001780711778,0) (2.911675756e-22,0) (-8.446585262e-08,0) (-1.506512155e-06,0) (1.160455761e-05,0) (1.071428823e-05,0) (-1.32348898e-23,0) (1.991555512e-09,0) (-3.123218372e-07,0) (-4.078876345e-06,0) (-1.21309979e-06,0) (-4.63221143e-22,0) (-9.18463487e-08,0) (-2.255974777e-06,0) (6.034671105e-06,0) (2.62148383e-05,0) (-9.264422861e-23,0) (-5.222643711e-08,0) (-1.339863123e-06,0) (5.215289271e-06,0) (1.954276747e-06,0) -(-0.003549268956,0) (-0.01343658413,0) (-0.0001521978757,0) (-0.001496542925,0) (-0.0003130291189,0) (-0.0002097587224,0) (-6.49330304e-05,0) (-5.265573046e-06,0) (-3.596734947e-05,0) (-2.229258458e-06,0) (-1.655710296e-06,0) (-1.099849986e-06,0) (-2.264328624e-06,0) (-0.02625611128,0) (0.03211320294,0) (0.003063780447,0) (0.004903291854,0) (-0.003682232749,0) (-0.01756345289,0) (0.0001924317751,0) (-0.0001384529431,0) (-0.005697965572,0) (0.0004391819773,0) (-0.000339842748,0) (-0.0004140257883,0) (-6.779946273e-06,0) (7.980037421e-06,0) (-0.001680857268,0) (1.12590218e-05,0) (-8.694108655e-06,0) (-6.689394366e-06,0) (-4.720166369e-06,0) (6.909971635e-06,0) (-0.0002119300653,0) (-7.660029649e-06,0) (-6.315433174e-06,0) (-1.237961572e-05,0) (-4.954443068e-07,0) (-7.960133638e-07,0) (-6.499462137e-05,0) (-4.636178842e-07,0) (-6.185385077e-08,0) (-1.451794079e-06,0) (8.328918145e-07,0) (-1.520070884e-06,0) (5.349167374e-07,0) (-9.861286637e-07,0) (-1.906935634e-06,0) (-4.174253742e-06,0) (-5.575045068e-07,0) (-9.86831296e-07,0) (-9.470422496e-07,0) (-8.67361738e-19,0) (0.002828880622,0) (-0.04641579736,0) (-0.001282046906,0) (0.05600852667,0) (-4.33680869e-19,0) (0.0007314810716,0) (0.01984557116,0) (-0.01589400852,0) (-0.005236486429,0) (-1.084202172e-19,0) (8.808045082e-06,0) (0.0002536017549,0) (-0.0001931366618,0) (-0.009468612536,0) (-2.710505431e-20,0) (2.225154949e-07,0) (0.001174190644,0) (-0.0008494051089,0) (-0.0003564038288,0) (0,0) (3.442811834e-05,0) (9.018351715e-06,0) (-3.090440545e-05,0) (-0.001490739516,0) (0,0) (4.609909213e-06,0) (-1.002012226e-05,0) (8.682331798e-06,0) (-0.0002109323487,0) (-2.541098842e-21,0) (3.659487597e-06,0) (-3.781049624e-05,0) (2.895905309e-05,0) (-6.605743182e-05,0) (-3.388131789e-21,0) (1.226847403e-06,0) (-9.727843585e-06,0) (8.073711052e-06,0) (-0.0001377292668,0) (8.320855081e-09,0) (4.235164736e-22,0) (-3.491009668e-08,0) (-4.928831568e-07,0) (-1.562019084e-05,0) (0,0) (3.508562431e-07,0) (-2.303710515e-06,0) (-4.342307445e-06,0) (-4.529449878e-06,0) (2.117582368e-22,0) (5.141031785e-07,0) (-2.076654126e-06,0) (-4.074920738e-06,0) (5.103558646e-06,0) (2.617659823e-07,0) (-2.117582368e-22,0) (-1.67094328e-06,0) (-4.923886331e-06,0) (-1.818172343e-06,0) (0,0) (1.916922473e-07,0) (-1.21138326e-06,0) (-5.785828522e-07,0) (1.476275077e-06,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (-1.352214984e-05,0) (-0.001516611742,0) (-0.1815201801,0) (0.001529805043,0) (-0.06184377689,0) (-1.018009989e-05,0) (0.0100894037,0) (0.002033057526,0) (1.382974519e-06,0) (0.01420621429,0) (0.001104706844,0) (1.705669872e-06,0) (0.0001243303037,0) (-0.00416102366,0) (-4.957044252e-07,0) (-2.976561439e-05,0) (-6.894765397e-05,0) (-1.167054917e-08,0) (2.109279228e-05,0) (-0.001212800252,0) (-1.454478514e-07,0) (0.0009931054366,0) (0.0001417158764,0) (1.284692074e-07,0) (1.74742353e-05,0) (-0.0004985374759,0) (-5.936260932e-08,0) (0.0002260156754,0) (4.076642451e-05,0) (3.037514902e-08,0) (1.036691613e-05,0) (-0.0002489763116,0) (-3.115196758e-08,0) (0.0001252345373,0) (6.832339961e-06,0) (1.454786252e-08,0) (2.35247391e-06,0) (-7.547512391e-05,0) (-1.072474815e-08,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.09590197642,0) (-0.1401646988,0) (-0.002985838421,0) (0.01780950172,0) (0.003649578912,0) (-0.002683292763,0) (-0.0006693273457,0) (0.0002766372549,0) (0.0002942175258,0) (-8.172856693e-05,0) (-2.758117892e-05,0) (-4.976700232e-06,0) (2.128685141e-05,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.01470014553,0) (0.01382695546,0) (-0.0003039299897,0) (-4.71970691e-05,0) (9.103863821e-05,0) (0.000163575563,0) (-9.961621062e-05,0) (-2.390391798e-05,0) (5.002522838e-05,0) (1.012786441e-05,0) (-7.88201233e-06,0) (6.23141672e-06,0) (8.301457933e-06,0) (-1.457628927e-06,0) (-0.04559196335,0) (-0.02299600676,0) (0.008358714646,0) (1.091418551e-06,0) (0.01108001222,0) (0.0001174809611,0) (1.180077153e-08,0) (-0.0004752201501,0) (-5.445124097e-06,0) (-7.103876161e-10,0) (-3.157105631e-06,0) (-9.404551985e-10,0) (-3.878017573e-05,0) (0.0003533999622,0) (2.141472362e-05,0) (3.593291973e-09,0) (7.639707444e-05,0) (-1.211070338e-09,0) (-2.325109286e-05,0) (-0.0002136717171,0) (-9.75273999e-10,0) (-2.050776465e-05,0) (2.993656717e-05,0) (-1.380484768e-10,0) (-1.387528677e-05,0) (6.936217859e-05,0) (-1.771963067e-10,0) (2.805955058e-08,0) (-1.784210166e-05,0) (8.180342229e-07,0) (4.010017397e-11,0) (-1.893631504e-05,0) (-1.860366417e-10,0) (-5.633722485e-06,0) (1.251832324e-05,0) (-1.176319828e-10,0) (-2.00923065e-06,0) (4.53804567e-06,0) (6.938893904e-18,0) (0.005994823377,0) (-7.444950055e-08,0) (-0.003435817589,0) (-0.1102116782,0) (-8.67361738e-19,0) (0.001606299893,0) (0.01230377284,0) (1.525748086e-06,0) (0.001045366821,0) (-1.355252716e-20,0) (1.798364778e-05,0) (0.0001386402286,0) (1.737100717e-08,0) (0.0002209886563,0) (-3.388131789e-21,0) (4.610365646e-07,0) (6.817192153e-05,0) (6.679547034e-09,0) (-7.354140116e-06,0) (0,0) (6.988489398e-05,0) (4.1665471e-05,0) (2.546341754e-08,0) (0.0001696441168,0) (1.016439537e-20,0) (9.362266021e-06,0) (-1.188796278e-08,0) (8.158151922e-05,0) (-8.232622071e-05,0) (8.470329473e-21,0) (7.420259143e-06,0) (-4.143616472e-09,0) (-3.256963719e-05,0) (-0.000166117142,0) (-1.694065895e-21,0) (2.488480358e-06,0) (-1.386998724e-09,0) (-6.937063544e-05,0) (5.261433427e-05,0) (1.696781277e-08,0) (4.235164736e-22,0) (-1.09460803e-11,0) (-7.964340301e-06,0) (1.633611477e-05,0) (6.352747104e-22,0) (7.199518179e-07,0) (-5.160270666e-10,0) (3.653434698e-06,0) (-3.163718351e-05,0) (-4.235164736e-22,0) (1.047169952e-06,0) (6.944596701e-07,0) (-6.615208134e-10,0) (-2.354858994e-05,0) (5.29902449e-07,0) (-4.235164736e-22,0) (-2.91384935e-10,0) (-1.338045233e-05,0) (4.545817498e-06,0) (-2.117582368e-22,0) (3.968631531e-07,0) (-1.826512278e-10,0) (3.288624992e-07,0) (-1.102174207e-05,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0.0003039026374,-0.0005263748085) (0.04090131005,-0.07084314711) (-0.00883687416,0.01530591502) (0.01252654015,-0.02169660398) (-0.000346879798,0.0006008134342) (-5.135379222e-06,8.894737729e-06) (0.001183168129,-0.002049307314) (-0.00268255013,0.004646313118) (5.808926845e-07,-1.006135643e-06) (0.001574284488,-0.002726740719) (-0.004459427703,0.007723955355) (1.129113895e-06,-1.955682633e-06) (0.0001341706355,-0.0002323903576) (0.0003683995724,-0.0006380867769) (-1.952858243e-07,3.382449696e-07) (-4.227609596e-05,7.322434614e-05) (9.017141291e-05,-0.0001561814685) (-1.85615821e-08,3.214960327e-08) (3.392569073e-05,-5.876102003e-05) (0.0002193194444,-0.0003798724208) (-9.853361838e-08,1.706652333e-07) (0.0001346486464,-0.0002332182967) (-0.0003281340941,0.0005683449226) (7.513718213e-08,-1.30141417e-07) (2.344440262e-05,-4.060689649e-05) (4.508202613e-05,-7.808435976e-05) (-2.665283983e-08,4.616407275e-08) (3.529806653e-05,-6.113804464e-05) (-8.179885248e-05,0.0001416797685) (1.80411161e-08,-3.12481297e-08) (3.253944728e-05,-5.635997594e-05) (1.08655697e-05,-1.881971877e-05) (-1.708094113e-08,2.958505788e-08) (1.043761257e-05,-1.807847528e-05) (-3.251583845e-05,5.631908425e-05) (8.68155776e-09,-1.503689913e-08) (1.137503137e-05,-1.970213227e-05) (5.505628404e-07,-9.536028123e-07) (-4.783889003e-09,8.285938811e-09) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.02101305131,-0.03639567249) (-0.01883018317,0.03261483397) (0.0001264463693,-0.0002190115361) (6.834581865e-05,-0.0001183784304) (-9.063998106e-05,0.0001569930524) (-0.0002675942571,0.0004634868491) (9.461888584e-05,-0.0001638847176) (6.093280015e-05,-0.0001055387057) (-5.903420635e-05,0.0001022502448) (-2.685320506e-05,4.65111155e-05) (8.271937295e-06,-1.432741567e-05) (-3.536237701e-06,6.124943366e-06) (-1.181918528e-05,2.04714294e-05) (0.01305259065,-0.02260775017) (-1.972421406e-05,3.41633409e-05) (-3.139793852e-05,5.438282477e-05) (-0.001208003877,0.002092324091) (1.712798772e-06,-2.966654497e-06) (-0.01682721675,0.02914559437) (-2.585942318e-05,4.47898348e-05) (9.67925942e-09,-1.67649691e-08) (0.0005877851435,-0.001018073733) (1.150133528e-06,-1.992089707e-06) (-3.493905947e-10,6.051622618e-10) (6.952941289e-06,-1.204284757e-05) (8.190971413e-08,-1.418717865e-07) (1.32217184e-05,-2.290068804e-05) (-0.0004639768554,0.0008036314871) (-6.629958665e-10,1.148342526e-09) (1.637002792e-05,-2.835372008e-05) (-0.0002004334016,0.0003471608352) (9.621648202e-11,-1.666518354e-10) (-1.475131992e-05,2.555003558e-05) (0.0002859360877,-0.0004952558317) (1.363844101e-07,-2.362247277e-07) (8.972964103e-10,-1.554162972e-09) (-1.642133626e-05,2.844258873e-05) (6.808895039e-11,-1.179335215e-10) (8.86002333e-06,-1.534601056e-05) (-0.0001070329349,0.0001853864814) (1.530817236e-11,-2.651453229e-11) (1.09037461e-06,-1.888584223e-06) (-4.296340024e-06,7.441479207e-06) (2.752512015e-10,-4.767490659e-10) (-7.394344286e-07,1.280737999e-06) (1.652763697e-05,-2.862670696e-05) (7.276235858e-11,-1.260281019e-10) (3.451371935e-06,-5.977951547e-06) (-1.976500436e-05,3.423399176e-05) (3.583427253e-11,-6.206678068e-11) (3.65150322e-06,-6.3245891e-06) (-1.973991048e-05,3.419052789e-05) (4.33680869e-19,1.301042607e-18) (-0.0008395542634,0.00145415064) (0.02522679048,-0.04369408282) (-3.126224837e-05,5.414780254e-05) (-0.01100183246,0.01905573281) (-1.084202172e-19,-3.252606517e-19) (6.005470316e-05,-0.0001040177971) (-0.003199103504,0.005541009808) (9.138118664e-07,-1.582768581e-06) (-0.002344817337,0.004061342763) (4.404571326e-20,-5.421010862e-20) (5.727926757e-07,-9.921060165e-07) (-1.287812239e-05,2.230556228e-05) (8.725406379e-09,-1.511284716e-08) (-0.000335289152,0.0005807378464) (-6.352747104e-22,8.470329473e-22) (1.81243952e-09,-3.139237334e-09) (-1.242058352e-05,2.151308171e-05) (3.802120767e-09,-6.585466345e-09) (2.538152278e-06,-4.396208702e-06) (1.694065895e-20,-2.710505431e-20) (9.202421743e-08,-1.593906201e-07) (-2.195446888e-10,3.802625555e-10) (-5.129786172e-06,8.885050281e-06) (-0.0002810210377,0.0004867427153) (2.964615315e-21,8.470329473e-22) (3.473961335e-07,-6.017077536e-07) (-1.186831509e-09,2.055652473e-09) (-7.965351864e-05,0.0001379639413) (0.0001256283905,-0.0002175947552) (-1.482307658e-21,-1.694065895e-21) (-9.779151322e-07,1.693798695e-06) (5.110513569e-09,-8.851669155e-09) (3.289864391e-06,-5.698212276e-06) (0.0001171394555,-0.0002028914885) (8.893845946e-21,1.270549421e-21) (-3.844266251e-07,6.658464465e-07) (2.55914016e-09,-4.432560781e-09) (2.632175311e-05,-4.559061372e-05) (-6.372623528e-05,0.0001103770773) (-3.494010907e-21,-1.058791184e-21) (-3.632365662e-09,6.291441879e-09) (1.155167341e-11,-2.000808526e-11) (6.979756536e-06,-1.208929295e-05) (-3.434954941e-05,5.94951648e-05) (6.6174449e-22,4.764560328e-22) (-4.430089943e-08,7.673140864e-08) (9.242620673e-11,-1.60086886e-10) (-7.708935966e-06,1.335226877e-05) (2.033211796e-05,-3.521626133e-05) (2.64697796e-23,0) (2.732028175e-11,-4.732011607e-11) (-2.030819374e-07,3.517482337e-07) (4.158427398e-10,-7.202607533e-10) (5.390575629e-06,-9.336750872e-06) (-4.235164736e-22,-2.117582368e-22) (-3.944424504e-08,6.831943648e-08) (1.737627841e-10,-3.009659705e-10) (1.261265833e-05,-2.184576504e-05) (-1.944658249e-05,3.36824689e-05) (6.6174449e-22,-1.535247217e-21) (-1.766566272e-08,3.059782538e-08) (8.522954168e-11,-1.476218965e-10) (2.700280003e-06,-4.67702216e-06) (-4.74143023e-06,8.212398059e-06) -(0.01677258801,-0.02905097462) (0.02573064519,-0.04456678478) (0.001794210947,-0.00310766452) (-0.003074644141,0.005325439867) (-0.0009164076666,0.001587264639) (0.0004100621676,-0.0007102485086) (0.0001761695175,-0.000305134555) (-2.713117662e-05,4.699257638e-05) (-6.232953669e-05,0.0001079579244) (7.706117781e-06,-1.334738753e-05) (6.57026234e-06,-1.138002819e-05) (2.192435553e-06,-3.797409769e-06) (-3.737819008e-06,6.474092431e-06) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.0411321873,0) (-0.008339062533,0) (0.0006096469769,0) (-0.001541034196,0) (0.0003931502828,0) (-1.829129434e-05,0) (-1.884297833e-05,0) (-5.725387206e-06,0) (6.503070519e-06,0) (1.447036132e-05,0) (-3.098376047e-06,0) (4.108944902e-07,0) (2.993889774e-06,0) (-0.003692931319,0) (6.684943117e-06,0) (0.006341380197,0) (-0.0001230406465,0) (-2.74369599e-07,0) (-0.04913856285,0) (6.893948142e-06,0) (1.71308782e-08,0) (0.007067222778,0) (1.30112031e-05,0) (-5.544016143e-08,0) (-0.002630298682,0) (1.854554824e-10,0) (-4.611068783e-08,0) (0.0005833114635,0) (-4.475959074e-11,0) (-3.716938248e-07,0) (-5.172975408e-06,0) (-6.23653338e-11,0) (-9.518968852e-07,0) (-7.449260097e-05,0) (-2.062491615e-07,0) (-6.585442473e-11,0) (-1.207582855e-06,0) (4.133017006e-11,0) (9.861243906e-08,0) (4.383718543e-05,0) (-2.959197357e-12,0) (9.323612458e-08,0) (3.492314996e-06,0) (-6.522504806e-10,0) (-1.657548191e-06,0) (-1.703770788e-06,0) (4.242558686e-11,0) (4.549582158e-07,0) (2.634266796e-06,0) (4.460116865e-11,0) (8.116553402e-07,0) (6.443219229e-06,0) (-3.252606517e-18,0) (0.0004829576041,0) (0.0001242870854,0) (5.888692216e-06,0) (0.04723623807,0) (-1.029992064e-18,0) (3.294780257e-06,0) (0.001149751687,0) (-3.89436725e-06,0) (-0.04242691604,0) (-1.778769189e-20,0) (-2.768655948e-10,0) (-2.949608241e-08,0) (-2.64989249e-10,0) (-0.001090599805,0) (1.016439537e-20,0) (3.933175975e-11,0) (0.0002019770285,0) (3.09697559e-07,0) (0.0003194157652,0) (-2.541098842e-21,0) (-1.91547415e-10,0) (-2.098780887e-11,0) (-1.35141104e-08,0) (-0.0001132326063,0) (6.088049308e-22,0) (-2.624027897e-08,0) (-5.605204444e-10,0) (-2.631350537e-06,0) (-2.46417407e-05,0) (2.713152409e-22,0) (1.457134286e-09,0) (-1.394145316e-10,0) (-1.684666273e-07,0) (-8.469855444e-06,0) (2.117582368e-22,0) (-5.243764032e-09,0) (-1.348940671e-10,0) (5.599469354e-08,0) (-1.022219073e-05,0) (1.694065895e-21,0) (1.779518342e-09,0) (2.80884512e-11,0) (1.111762798e-07,0) (5.549890313e-05,0) (-2.514629062e-22,0) (1.163451117e-08,0) (-2.697230875e-10,0) (-7.446974375e-06,0) (-5.385302829e-06,0) (-7.754818243e-26,0) (3.272970404e-10,0) (-3.370708344e-09,0) (9.449748969e-13,0) (3.578609755e-09,0) (7.610061635e-23,0) (9.0329589e-09,0) (1.116684355e-10,0) (8.917771118e-07,0) (5.110647247e-06,0) (4.63221143e-23,0) (2.385951371e-08,0) (1.501339326e-10,0) (2.921382097e-06,0) (1.83702408e-06,0) -(0.02917389264,0) (0.008838028944,0) (-0.001424096841,0) (0.001390526193,0) (-0.0003488462539,0) (3.20272016e-05,0) (1.878777362e-05,0) (1.011353251e-06,0) (-9.024838172e-06,0) (-5.66671952e-06,0) (1.99122386e-06,0) (-5.609910046e-07,0) (-2.414963783e-06,0) (3.131764434e-06,0) (0.02113859613,0) (-0.02661209925,0) (-7.166687639e-05,0) (4.97322524e-07,0) (0.03782720766,0) (-5.177796953e-06,0) (-1.043334764e-08,0) (-0.004535076858,0) (-4.088571921e-05,0) (7.933896824e-08,0) (0.001461529417,0) (-1.081506332e-10,0) (9.410884509e-08,0) (-0.0002381860178,0) (1.194202806e-06,0) (-4.647773923e-10,0) (1.261180451e-06,0) (1.372863619e-10,0) (1.038364612e-06,0) (4.216515965e-05,0) (9.30177865e-11,0) (2.694383648e-07,0) (2.749813509e-06,0) (-2.841116772e-11,0) (-1.995626923e-07,0) (-3.784413631e-05,0) (1.343156087e-10,0) (4.046369427e-06,0) (2.801726811e-06,0) (6.603081789e-07,0) (-1.781739592e-10,0) (-1.048868705e-07,0) (-4.49845343e-11,0) (-4.575800789e-07,0) (-3.241043012e-06,0) (-4.809009413e-11,0) (-7.612857105e-07,0) (-3.494038197e-06,0) (0,0) (-0.0001781248725,0) (-5.875863018e-06,0) (-0.00325358254,0) (-0.03202255516,0) (-8.67361738e-19,0) (2.27129912e-06,0) (-0.002309571161,0) (4.314038673e-06,0) (0.02951567944,0) (0,0) (9.109152453e-08,0) (7.736946357e-07,0) (6.824590353e-09,0) (0.002846967579,0) (0,0) (-1.380258363e-08,0) (-0.00014659622,0) (-2.405362853e-07,0) (-0.000837203801,0) (0,0) (1.804379704e-07,0) (1.404322281e-07,0) (4.172190712e-10,0) (0.0002216784642,0) (0,0) (2.542909593e-08,0) (2.030650731e-10,0) (-3.866749846e-08,0) (3.31291695e-05,0) (-2.64697796e-23,0) (-1.148514282e-08,0) (-6.330232694e-10,0) (-4.027290359e-06,0) (-3.296411943e-06,0) (0,0) (-1.548017159e-09,0) (-4.061005464e-11,0) (4.700979461e-08,0) (-5.014173148e-06,0) (-4.001910504e-10,0) (-8.470329473e-22,0) (-4.040786576e-12,0) (-5.617850981e-07,0) (-2.586134062e-05,0) (5.29395592e-23,0) (7.229839581e-09,0) (2.418124915e-10,0) (6.181658491e-06,0) (1.538533616e-06,0) (-2.64697796e-23,0) (5.335196032e-09,0) (3.786615396e-07,0) (-2.026498209e-10,0) (1.980117903e-07,0) (-6.313576244e-09,0) (0,0) (-1.199476441e-10,0) (-1.961240248e-06,0) (-3.991018329e-06,0) (-2.117582368e-22,0) (-1.197908084e-08,0) (-2.132048396e-10,0) (-1.09602752e-06,0) (-5.6965094e-07,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0.0616499241,0) (-0.05612508663,0) (-0.005524837477,0) (-0.09849767551,0) (0.003987118413,0) (0.0945105571,0) (-0.03774692604,0) (-0.03968505748,0) (0.07743198352,0) (-0.01322794725,0) (-0.0355135707,0) (0.04874151795,0) (-0.03985523459,0) (0.009503484414,0) (0.03035175017,0) (-0.02158210048,0) (0.004347737172,0) (0.01723436331,0) (-0.01398296519,0) (0.00355609991,0) (0.01042686528,0) (-0.002231696874,0) (-0.003401939794,0) (0.005633636669,0) (-0.004236003097,0) (0.0009642830837,0) (0.003271720014,0) (-0.0007253584191,0) (-0.0008634759321,0) (0.001588834351,0) (-0.000973594934,0) (0.0001368578979,0) (0.0008367370361,0) (-6.904381328e-05,0) (-0.0002476788081,0) (0.0003167226213,0) (-0.0001631146387,0) (1.171560823e-05,0) (0.0001513990305,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.0006430541106,0) (-0.002209624475,0) (-2.335865557e-06,0) (-0.0002782637621,0) (-2.751354053e-05,0) (-4.977489973e-05,0) (-5.19439452e-06,0) (-3.03377501e-06,0) (-4.441312862e-06,0) (-1.389602407e-06,0) (-1.616956109e-07,0) (-3.140627274e-08,0) (-4.069859621e-07,0) (-0.02315446542,0) (0.02486709624,0) (-0.0002113144789,0) (-0.002883591821,0) (0.002752586386,0) (-0.002965630851,0) (-0.0002318971576,0) (0.0002190437346,0) (-0.0007133624739,0) (-0.0002270707624,0) (0.0002787001547,0) (-0.0001841079618,0) (1.946548646e-05,0) (-1.743881751e-05,0) (-0.0002488508671,0) (6.647567465e-06,0) (-1.942370938e-05,0) (-1.356825305e-06,0) (2.009289265e-06,0) (-7.120632471e-06,0) (-2.917357685e-05,0) (2.017518414e-06,0) (8.169870928e-06,0) (-1.023318319e-05,0) (1.202217678e-06,0) (7.088695561e-07,0) (-1.562354862e-05,0) (4.044755587e-07,0) (3.404607548e-08,0) (-4.521418737e-07,0) (1.300895681e-06,0) (-2.972631304e-06,0) (1.388004183e-06,0) (1.167951802e-06,0) (1.454595627e-06,0) (-3.315964822e-06,0) (6.652579445e-07,0) (1.014281671e-06,0) (-2.410363274e-06,0) (2.168404345e-18,0) (-0.001830745551,0) (-0.04184804203,0) (0.04614153827,0) (-0.0003918889316,0) (8.67361738e-19,0) (-1.505671622e-05,0) (-0.0107099765,0) (0.01335057348,0) (-0.003158834692,0) (-1.355252716e-20,0) (-6.739309617e-07,0) (-3.000331146e-05,0) (3.095587548e-05,0) (-0.001514871375,0) (1.355252716e-20,0) (-1.267303586e-10,0) (-0.0008741803541,0) (0.0008591989311,0) (5.958119995e-05,0) (-2.117582368e-21,0) (-6.219833605e-07,0) (4.261561381e-06,0) (-4.506042692e-06,0) (-0.0002959797984,0) (-2.117582368e-22,0) (-2.325279806e-06,0) (1.61001834e-05,0) (1.56959449e-05,0) (-3.949717088e-05,0) (-4.235164736e-21,0) (-2.219766983e-06,0) (2.561091166e-05,0) (-3.502433912e-05,0) (-1.382955411e-05,0) (5.29395592e-21,0) (-1.682357216e-06,0) (1.529640096e-05,0) (-6.160454092e-06,0) (-2.125727712e-05,0) (0,0) (-7.037685441e-08,0) (3.9958929e-07,0) (2.960709067e-07,0) (-8.452535281e-06,0) (1.058791184e-22,0) (-1.588206347e-07,0) (1.504087388e-06,0) (-4.685734219e-06,0) (2.429661067e-06,0) (0,0) (-2.96845995e-10,0) (-7.277574765e-07,0) (4.071144148e-06,0) (-3.096918026e-06,0) (-4.367513634e-22,0) (-3.56383646e-07,0) (2.252412441e-06,0) (2.637815303e-06,0) (-5.847758739e-06,0) (-1.32348898e-23,0) (-2.276567175e-07,0) (1.337660336e-06,0) (1.200711633e-06,0) (-2.564584225e-06,0) -(-0.01091369342,0) (-0.04131632783,0) (-0.0004679952334,0) (-0.004601739364,0) (-0.0009625373212,0) (-0.000644989832,0) (-0.0001996634222,0) (-1.619117925e-05,0) (-0.0001105964721,0) (-6.854775913e-06,0) (-5.091165187e-06,0) (-3.381943069e-06,0) (-6.962613624e-06,0) (0.02620752866,0) (0.002224269497,0) (-0.001000892129,0) (0.0003047929621,0) (0.003673383099,0) (-0.05422961591,0) (-1.170549913e-05,0) (0.0001381032981,0) (-0.01748116626,0) (5.58488008e-05,0) (0.0003390297478,0) (-0.001362512354,0) (6.763664198e-06,0) (2.347166408e-06,0) (-0.005173910596,0) (-1.001395262e-05,0) (8.679345149e-06,0) (-1.134781363e-05,0) (4.708510543e-06,0) (-1.51237669e-05,0) (-0.0006345178053,0) (7.640857198e-06,0) (-8.106428758e-06,0) (-8.057400327e-05,0) (4.942920937e-07,0) (-1.090440533e-06,0) (-0.0002032277807,0) (4.625928184e-07,0) (-3.831370518e-06,0) (-2.711142746e-06,0) (-2.393650938e-06,0) (1.517526643e-06,0) (4.079308649e-07,0) (9.838166031e-07,0) (-2.85806264e-06,0) (-1.98571424e-05,0) (5.56293275e-07,0) (-1.496586117e-06,0) (-6.720478032e-06,0) (-2.168404345e-19,0) (4.480721443e-05,0) (0.04632333236,0) (-0.001379381288,0) (-0.01073557061,0) (0,0) (2.884086942e-05,0) (0.002367327906,0) (0.01585694053,0) (-0.01995489753,0) (0,0) (-5.527808322e-07,0) (2.718459272e-06,0) (0.0001926337373,0) (-0.02909695075,0) (0,0) (-4.47964897e-09,0) (-9.694780846e-05,0) (0.0008472184569,0) (-0.0008468054569,0) (5.421010862e-20,0) (-2.241467871e-06,0) (-2.480320484e-06,0) (3.082178995e-05,0) (-0.004571428628,0) (1.355252716e-20,0) (-3.003345517e-07,0) (9.997786745e-06,0) (1.10553403e-06,0) (-0.0006493401365,0) (0,0) (-2.479739066e-07,0) (3.770913572e-05,0) (-0.0001390322279,0) (-0.0001175146047,0) (0,0) (-8.278796515e-08,0) (9.703906891e-06,0) (4.395115462e-06,0) (-0.0004388356181,0) (-3.966417036e-10,0) (0,0) (3.483258316e-08,0) (-1.062099363e-06,0) (-4.860039762e-05,0) (-8.470329473e-22,0) (-1.83956344e-08,0) (2.297772888e-06,0) (-2.83623588e-05,0) (-7.201757854e-06,0) (0,0) (-3.23672139e-08,0) (-3.897417542e-06,0) (4.070176231e-06,0) (-1.782127644e-06,0) (-1.71723915e-08,0) (0,0) (1.666924655e-06,0) (-8.914065602e-06,0) (-1.780002849e-05,0) (0,0) (-3.673872713e-09,0) (1.208697071e-06,0) (-1.088177979e-06,0) (-4.919808827e-07,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (-0.06251041084,0) (-0.02312716577,0) (0.08563757661,0) (-0.03295383896,0) (0.1276303109,0) (-0.0946764719,0) (0.1030608728,0) (-0.02550019993,0) (-0.07756067291,0) (0.0673281933,0) (-0.01850623727,0) (-0.04882195603,0) (-0.003708510075,0) (0.03411132104,0) (-0.03040281096,0) (0.01146538456,0) (0.005797797515,0) (-0.01726318207,0) (-0.0006699053532,0) (0.01111428551,0) (-0.01044438016,0) (0.007652943725,0) (-0.002009962988,0) (-0.005642980737,0) (-0.0004988181503,0) (0.003776045562,0) (-0.003277227412,0) (0.002131064227,0) (-0.0005395912934,0) (-0.001591472934,0) (-0.0002399694735,0) (0.00107812515,0) (-0.0008381556767,0) (0.0004388767921,0) (-0.000121633216,0) (-0.0003172435761,0) (-5.066889512e-05,0) (0.0002023292553,0) (-0.0001516603602,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.01463443893,0) (0.0502859929,0) (5.315895081e-05,0) (0.006332645988,0) (0.0006261451749,0) (0.001132762731,0) (0.0001182125239,0) (6.904177173e-05,0) (0.0001010741099,0) (3.162416853e-05,0) (3.679821814e-06,0) (7.147348455e-07,0) (9.262068479e-06,0) (-0.009313391119,0) (-0.02485528906,0) (2.158341618e-06,0) (-0.0009642227618,0) (-0.002752518914,0) (0.07418909208,0) (-7.592983434e-05,0) (-0.0002192988358,0) (0.01682223941,0) (-0.0001078732284,0) (-0.0002790327477,0) (0.003401814836,0) (-1.969725446e-05,0) (-7.352308847e-06,0) (0.005644203073,0) (-6.658775869e-06,0) (1.481098257e-05,0) (0.000313481762,0) (-2.012532792e-06,0) (7.210277511e-06,0) (0.0007750485214,0) (2.629829628e-06,0) (-8.184795682e-06,0) (6.597129124e-06,0) (-1.204185994e-06,0) (9.994640053e-07,0) (0.0003122689409,0) (-4.05238327e-07,0) (3.652865445e-08,0) (6.786751343e-07,0) (-1.303286861e-06,0) (2.952998217e-06,0) (4.80736646e-06,0) (-1.169838614e-06,0) (3.186477351e-06,0) (1.376395317e-05,0) (-6.663773466e-07,0) (2.4025461e-06,0) (1.489570409e-05,0) (0,0) (-0.0005631257223,0) (-0.01669247861,0) (-0.04613755182,0) (0.01626508487,0) (2.439454888e-19,0) (-8.490090396e-06,0) (-0.005142060373,0) (-0.01336677666,0) (0.03065388695,0) (4.607859233e-19,0) (-2.601810625e-07,0) (-1.103815192e-05,0) (-3.097608686e-05,0) (0.03451093673,0) (1.016439537e-20,0) (-3.774812831e-11,0) (-0.0002830758546,0) (-0.0008602105367,0) (0.0001283005263,0) (-1.355252716e-19,0) (-2.367183435e-07,0) (-4.268285589e-06,0) (-9.777383985e-07,0) (0.006761023897,0) (6.035109749e-21,0) (-6.8364659e-07,0) (-1.612492008e-05,0) (3.081896923e-05,0) (0.0002141657343,0) (1.482307658e-21,0) (-9.918547086e-07,0) (-2.565648968e-05,0) (-1.776462113e-06,0) (0.0006078986526,0) (-1.672890071e-20,0) (-4.959282655e-07,0) (-1.532305696e-05,0) (-4.336478179e-06,0) (0.0003342957791,0) (1.058791184e-22,0) (-2.228367745e-08,0) (-4.002309418e-07,0) (4.816661111e-07,0) (0.0001780711778,0) (2.382280164e-22,0) (-8.446585262e-08,0) (-1.506512155e-06,0) (1.160455761e-05,0) (1.071428823e-05,0) (-1.32348898e-23,0) (1.991555512e-09,0) (-3.123218372e-07,0) (-4.078876345e-06,0) (-1.21309979e-06,0) (-3.97046694e-22,0) (-9.18463487e-08,0) (-2.255974777e-06,0) (6.034671105e-06,0) (2.62148383e-05,0) (-6.6174449e-23,0) (-5.222643711e-08,0) (-1.339863123e-06,0) (5.215289271e-06,0) (1.954276747e-06,0) -(-0.003549268956,0) (-0.01343658413,0) (-0.0001521978757,0) (-0.001496542925,0) (-0.0003130291189,0) (-0.0002097587224,0) (-6.49330304e-05,0) (-5.265573046e-06,0) (-3.596734947e-05,0) (-2.229258458e-06,0) (-1.655710296e-06,0) (-1.099849986e-06,0) (-2.264328624e-06,0) (-0.02625611128,0) (0.03211320294,0) (0.003063780447,0) (0.004903291854,0) (-0.003682232749,0) (-0.01756345289,0) (0.0001924317751,0) (-0.0001384529431,0) (-0.005697965572,0) (0.0004391819773,0) (-0.000339842748,0) (-0.0004140257883,0) (-6.779946273e-06,0) (7.980037421e-06,0) (-0.001680857268,0) (1.12590218e-05,0) (-8.694108655e-06,0) (-6.689394366e-06,0) (-4.720166369e-06,0) (6.909971635e-06,0) (-0.0002119300653,0) (-7.660029649e-06,0) (-6.315433174e-06,0) (-1.237961572e-05,0) (-4.954443068e-07,0) (-7.960133638e-07,0) (-6.499462137e-05,0) (-4.636178842e-07,0) (-6.185385077e-08,0) (-1.451794079e-06,0) (8.328918145e-07,0) (-1.520070884e-06,0) (5.349167374e-07,0) (-9.861286637e-07,0) (-1.906935634e-06,0) (-4.174253742e-06,0) (-5.575045068e-07,0) (-9.86831296e-07,0) (-9.470422496e-07,0) (0,0) (0.002828880622,0) (-0.04641579736,0) (-0.001282046906,0) (0.05600852667,0) (-4.33680869e-19,0) (0.0007314810716,0) (0.01984557116,0) (-0.01589400852,0) (-0.005236486429,0) (0,0) (8.808045082e-06,0) (0.0002536017549,0) (-0.0001931366618,0) (-0.009468612536,0) (-5.421010862e-20,0) (2.225154949e-07,0) (0.001174190644,0) (-0.0008494051089,0) (-0.0003564038288,0) (0,0) (3.442811834e-05,0) (9.018351715e-06,0) (-3.090440545e-05,0) (-0.001490739516,0) (0,0) (4.609909213e-06,0) (-1.002012226e-05,0) (8.682331798e-06,0) (-0.0002109323487,0) (-5.082197684e-21,0) (3.659487597e-06,0) (-3.781049624e-05,0) (2.895905309e-05,0) (-6.605743182e-05,0) (-3.388131789e-21,0) (1.226847403e-06,0) (-9.727843585e-06,0) (8.073711052e-06,0) (-0.0001377292668,0) (8.320855081e-09,0) (0,0) (-3.491009668e-08,0) (-4.928831568e-07,0) (-1.562019084e-05,0) (-1.058791184e-22,0) (3.508562431e-07,0) (-2.303710515e-06,0) (-4.342307445e-06,0) (-4.529449878e-06,0) (2.117582368e-22,0) (5.141031785e-07,0) (-2.076654126e-06,0) (-4.074920738e-06,0) (5.103558646e-06,0) (2.617659823e-07,0) (0,0) (-1.67094328e-06,0) (-4.923886331e-06,0) (-1.818172343e-06,0) (0,0) (1.916922473e-07,0) (-1.21138326e-06,0) (-5.785828522e-07,0) (1.476275077e-06,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0.08286250691,0) (0.02431037598,0) (0.06871438145,0) (0.04930718395,0) (0.09326492082,0) (0.1255216072,0) (0.1061377676,0) (0.01064733091,0) (0.1028501942,0) (0.06073138578,0) (0.01278119823,0) (0.06474155448,0) (0.02720911517,0) (0.01856972471,0) (0.04031468813,0) (0.02489475137,0) (0.001098999625,0) (0.02289168401,0) (0.01002216348,0) (0.005704391145,0) (0.01384947954,0) (0.007451325099,0) (0.001045456362,0) (0.007482962107,0) (0.00281298841,0) (0.002121681757,0) (0.004345654447,0) (0.002153156807,0) (0.0002431658316,0) (0.002110392238,0) (0.000552027313,0) (0.0007100396512,0) (0.001111378275,0) (0.0003829383684,0) (9.474450534e-05,0) (0.0004206906223,0) (8.459498418e-05,0) (0.0001437766924,0) (0.0002010868071,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.01151542489,0) (0.03956862145,0) (4.182927054e-05,0) (0.004982979502,0) (0.0004926958775,0) (0.0008913388619,0) (9.301808191e-05,0) (5.432701179e-05,0) (7.953235012e-05,0) (2.488416119e-05,0) (2.895547407e-06,0) (5.624045764e-07,0) (7.288058967e-06,0) (0.01044095573,0) (0.03297631033,0) (0.0001606173415,0) (0.001446472844,0) (0.003652617632,0) (0.05815477759,0) (0.0001173327325,0) (0.0002910130741,0) (0.01321743319,0) (8.960512001e-05,0) (0.000370321967,0) (0.002702735249,0) (2.612306591e-05,0) (7.450636785e-06,0) (0.004441884828,0) (8.839061027e-06,0) (2.57761275e-05,0) (0.0002373242255,0) (2.671175919e-06,0) (1.079249771e-05,0) (0.0006061888617,0) (4.643013261e-07,0) (1.085909936e-05,0) (1.26714713e-05,0) (1.598089418e-06,0) (2.20050347e-07,0) (0.0002471462147,0) (5.375848748e-07,0) (1.919689554e-09,0) (8.5178208e-07,0) (1.732231442e-06,0) (4.45895687e-06,0) (2.579457553e-06,0) (1.552409348e-06,0) (1.30742986e-06,0) (1.287012362e-05,0) (8.842413405e-07,0) (1.047868629e-06,0) (1.304197819e-05,0) (-6.505213035e-19,0) (0.0009533201785,0) (0.01896428393,0) (0.06121497228,0) (0.0125521507,0) (-3.252606517e-19,0) (4.931195373e-06,0) (0.004185764753,0) (0.017738704,0) (0.02547954574,0) (-1.219727444e-18,0) (3.110674544e-07,0) (1.42753078e-05,0) (4.111206382e-05,0) (0.02715447401,0) (1.355252716e-20,0) (6.693630906e-11,0) (0.0004446572613,0) (0.001141388293,0) (5.175547801e-05,0) (-2.710505431e-20,0) (2.896624921e-07,0) (5.66493273e-06,0) (2.653219922e-06,0) (0.005319222649,0) (4.446922973e-21,0) (1.23469439e-06,0) (2.140210977e-05,0) (1.142126714e-05,0) (0.0001911500099,0) (4.235164736e-21,0) (9.22882494e-07,0) (3.405631521e-05,0) (2.500444833e-05,0) (0.000468632467,0) (-1.270549421e-20,0) (8.923175134e-07,0) (2.033674126e-05,0) (1.365401367e-06,0) (0.0002679810755,0) (-3.388131789e-21,0) (3.61685241e-08,0) (5.311357506e-07,0) (1.40319171e-07,0) (0.0001405914279,0) (7.676236084e-22,0) (5.585209319e-08,0) (1.999539627e-06,0) (1.227245632e-05,0) (6.248313256e-06,0) (2.64697796e-23,0) (1.724997877e-09,0) (3.122744061e-07,0) (5.411018301e-06,0) (1.415448965e-06,0) (8.999725065e-22,0) (1.989853278e-07,0) (2.994061638e-06,0) (2.564169571e-06,0) (2.415994883e-05,0) (-5.29395592e-23,0) (1.319703087e-07,0) (1.777963699e-06,0) (3.027655855e-06,0) (3.402615008e-06,0) -(0.00553605759,0) (0.02095803515,0) (0.0002373942959,0) (0.002334268809,0) (0.0004882546943,0) (0.0003271762106,0) (0.0001012808553,0) (8.213104159e-06,0) (5.610093811e-05,0) (3.477139478e-06,0) (2.582533942e-06,0) (1.715517459e-06,0) (3.531841012e-06,0) (0.03483145319,0) (0.02253296123,0) (0.003063275652,0) (0.003468356907,0) (0.004882815777,0) (0.02756244955,0) (0.0001539254955,0) (0.0001835979054,0) (0.008857709221,0) (0.0002891550959,0) (0.0004506771526,0) (0.0007129915528,0) (8.993340896e-06,0) (4.250060433e-06,0) (0.002625833686,0) (1.60314874e-05,0) (1.152525194e-05,0) (3.496369595e-06,0) (6.261644115e-06,0) (1.658833738e-05,0) (0.0003176578563,0) (1.01594509e-05,0) (1.337741548e-06,0) (5.129237847e-05,0) (6.572109132e-07,0) (2.20383207e-07,0) (0.0001039161773,0) (6.150600883e-07,0) (2.836013573e-06,0) (9.454592508e-07,0) (2.430401289e-06,0) (2.015296627e-06,0) (9.633593424e-08,0) (1.307998808e-06,0) (7.127991709e-07,0) (1.179406541e-05,0) (7.39491486e-07,0) (3.820896297e-07,0) (4.342680978e-06,0) (0,0) (0.002099748074,0) (0.06156955733,0) (7.114789054e-05,0) (0.05029811769,0) (0,0) (0.0005299594019,0) (0.01318363225,0) (0.02107802791,0) (0.01106375401,0) (2.168404345e-19,0) (7.058923414e-06,0) (0.0001891960434,0) (0.0002561189377,0) (0.01475511786,0) (0,0) (1.711878633e-07,0) (0.0009584736151,0) (0.001126274353,0) (0.0003682274248,0) (-2.710505431e-20,0) (2.7652106e-05,0) (8.673773527e-06,0) (4.097130545e-05,0) (0.002315825677,0) (0,0) (3.702756937e-06,0) (1.329608283e-05,0) (5.70924401e-06,0) (0.0003295600291,0) (2.541098842e-21,0) (2.946557407e-06,0) (5.015820037e-05,0) (0.0001264260713,0) (3.861267461e-05,0) (-6.776263578e-21,0) (9.875766575e-07,0) (1.29029779e-05,0) (2.779852115e-06,0) (0.0002263576027,0) (6.573952743e-09,0) (-4.235164736e-22,0) (4.630728464e-08,0) (4.275873786e-07,0) (2.47925857e-05,0) (3.705769144e-22,0) (2.784547616e-07,0) (3.05584326e-06,0) (1.806598778e-05,0) (2.003963724e-06,0) (4.235164736e-22,0) (4.120885495e-07,0) (1.368540015e-06,0) (5.405814955e-06,0) (5.188382974e-06,0) (2.103438461e-07,0) (-8.470329473e-22,0) (2.21632634e-06,0) (2.994934864e-06,0) (1.202228621e-05,0) (-1.058791184e-22,0) (1.473351266e-07,0) (1.60672927e-06,0) (3.824359347e-07,0) (1.483102828e-06,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (1.792468198e-05,0) (0.0015942032,0) (-0.1456492277,0) (-0.002288970907,0) (-0.04519188989,0) (1.349672706e-05,0) (0.01039062405,0) (-0.0008488810399,0) (-1.833908765e-06,0) (0.01281429128,0) (-0.0007629577502,0) (-2.261845447e-06,0) (-0.0009122039538,0) (-0.002265202916,0) (6.573132114e-07,0) (-6.462997956e-05,0) (-1.306935015e-05,0) (1.547562452e-08,0) (-0.0003155601183,0) (-0.000622467995,0) (1.928670741e-07,0) (0.0009669418372,0) (-7.371168797e-05,0) (-1.703585845e-07,0) (-9.854256778e-05,0) (-0.0002801178774,0) (7.871574193e-08,0) (0.0002283587626,0) (-1.837131481e-05,0) (-4.027933956e-08,0) (-2.384812022e-05,0) (-0.0001639726644,0) (4.130690869e-08,0) (0.000109272375,0) (-5.321956378e-06,0) (-1.92916415e-08,0) (-3.927606724e-06,0) (-5.36331914e-05,0) (1.42199673e-08,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.07546254497,0) (-0.1102916257,0) (-0.00234947156,0) (0.01401379174,0) (0.002871750125,0) (-0.002111406963,0) (-0.0005266747028,0) (0.0002176780091,0) (0.0002315114256,0) (-6.430989108e-05,0) (-2.170284735e-05,0) (-3.916024248e-06,0) (1.675001957e-05,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.02292890543,0) (-0.02156692623,0) (0.0004740621088,0) (7.361676329e-05,0) (-0.0001419997048,0) (-0.0002551409173,0) (0.0001553787796,0) (3.72847108e-05,0) (-7.802805272e-05,0) (-1.579718001e-05,0) (1.229415824e-05,0) (-9.719602051e-06,0) (-1.29483986e-05,0) (1.933695861e-06,0) (-0.03199064087,0) (-0.02299221789,0) (0.005912559672,0) (-1.447272914e-06,0) (-0.01738794072,0) (9.397260481e-05,0) (-1.564861596e-08,0) (0.0007387482168,0) (-3.585040966e-06,0) (9.420694424e-10,0) (5.436834395e-06,0) (1.247478056e-09,0) (-2.065379919e-05,0) (-0.0005520810976,0) (3.049198037e-05,0) (-4.763408986e-09,0) (-3.993073118e-05,0) (1.606572917e-09,0) (-5.581744661e-05,0) (0.0003202683844,0) (1.293499994e-09,0) (4.343975792e-06,0) (-0.0001240359772,0) (1.831224303e-10,0) (3.841493541e-06,0) (-0.0001108992143,0) (2.350780239e-10,0) (-1.286536979e-06,0) (1.161940272e-05,0) (2.387046427e-06,0) (-5.316445846e-11,0) (-3.410339354e-06,0) (2.467585767e-10,0) (2.105845968e-06,0) (-3.536965701e-05,0) (1.560307562e-10,0) (7.77950799e-07,0) (-2.080929823e-05,0) (5.204170428e-18,0) (0.004449681879,0) (9.875566194e-08,0) (0.0001906725663,0) (-0.09897492918,0) (-2.168404345e-19,0) (0.001163767271,0) (0.008173532278,0) (-2.023388919e-06,0) (-0.002208672077,0) (0,0) (1.441241402e-05,0) (0.000103430604,0) (-2.303572953e-08,0) (-0.0003443707994,0) (-1.694065895e-21,0) (3.546892966e-07,0) (5.564768243e-05,0) (-8.856789814e-09,0) (7.598111631e-06,0) (0,0) (5.613041285e-05,0) (4.007349356e-05,0) (-3.375795271e-08,0) (-0.0002635377927,0) (-6.776263578e-21,0) (7.519930189e-06,0) (1.577459173e-08,0) (5.364558862e-05,0) (0.0001286262247,0) (5.082197684e-21,0) (5.974666933e-06,0) (5.496789673e-09,0) (-0.0001421887402,0) (9.710076482e-05,0) (0,0) (2.003154677e-06,0) (1.839710283e-09,0) (-2.388494044e-05,0) (-8.647148753e-05,0) (1.340554525e-08,0) (-8.470329473e-22,0) (1.451967495e-11,0) (6.909246837e-06,0) (-2.592891019e-05,0) (0,0) (5.713850495e-07,0) (6.845034665e-10,0) (-1.519996164e-05,0) (1.399723361e-05,0) (-1.270549421e-21,0) (8.393777059e-07,0) (-4.576572648e-07,0) (8.775775864e-10,0) (-2.393998219e-05,0) (4.258067386e-07,0) (4.235164736e-22,0) (3.864907411e-10,0) (8.138608507e-06,0) (-3.005827211e-05,0) (-8.470329473e-22,0) (3.050299829e-07,0) (2.42261127e-10,0) (-2.173739453e-07,0) (-1.107271747e-05,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (-0.0004028470466,0.0006977515524) (-0.04299386424,0.07446755728) (-0.007090582965,0.01228124995) (-0.01874283661,0.03246354529) (-0.0002534798879,0.0004390400445) (6.808460863e-06,-1.179260014e-05) (0.001218491756,-0.00211048963) (0.001120069607,-0.001940017466) (-7.702992143e-07,1.334197376e-06) (0.001420036301,-0.002459575022) (0.003079871323,-0.005334493612) (-1.497289225e-06,2.593381012e-06) (-0.0009844018759,0.001705034064) (0.0002005515599,-0.0003473654913) (2.589526051e-07,-4.485190688e-07) (-9.179394658e-05,0.0001589917793) (1.709241288e-05,-2.960492753e-05) (2.461341544e-08,-4.263168609e-08) (-0.0005075475471,0.0008790981388) (0.0001125653912,-0.0001949689767) (1.306577615e-07,-2.263058812e-07) (0.0001311012957,-0.0002270741051) (0.0001706747231,-0.0002956172919) (-9.963682546e-08,1.72576044e-07) (-0.0001322101708,0.0002289947331) (2.533065632e-05,-4.387398374e-05) (3.534207956e-08,-6.121427745e-08) (3.566399888e-05,-6.177185807e-05) (3.686250359e-05,-6.384772911e-05) (-2.392364366e-08,4.143696631e-08) (-7.485395282e-05,0.0001296508494) (7.155927413e-06,-1.239442985e-05) (2.264899878e-08,-3.922921662e-08) (9.107253788e-06,-1.577422628e-05) (2.532776104e-05,-4.386896896e-05) (-1.151244726e-08,1.994014357e-08) (-1.899134758e-05,3.289397892e-05) (3.912341003e-07,-6.776373393e-07) (6.342969012e-09,-1.09863446e-08) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.01653457404,-0.02863872232) (-0.01481693702,0.02566368773) (9.949706138e-05,-0.0001723339655) (5.377938606e-05,-9.314862906e-05) (-7.132203009e-05,0.0001235333798) (-0.0002105623306,0.0003647046547) (7.44529174e-05,-0.0001289562357) (4.794629208e-05,-8.304541391e-05) (-4.645234247e-05,8.045781728e-05) (-2.113002537e-05,3.65982775e-05) (6.508952823e-06,-1.127383699e-05) (-2.782565142e-06,4.819544201e-06) (-9.300181641e-06,1.610838712e-05) (-0.01463285707,0.0253448519) (2.616874833e-05,-4.532560167e-05) (-0.002336540875,0.00404700751) (0.001812179585,-0.003138787114) (-2.272899548e-06,3.936777498e-06) (-0.01319038986,0.02284642541) (3.996000794e-05,-6.921276402e-05) (-1.284453257e-08,2.224738301e-08) (0.0004618297644,-0.0007999126164) (-9.553607913e-07,1.65473343e-06) (4.636983056e-10,-8.031490246e-10) (5.524098285e-06,-9.568018896e-06) (-1.086310209e-07,1.881544475e-07) (-1.339854236e-05,2.320695611e-05) (-0.000365141319,0.0006324433165) (8.800808196e-10,-1.524344694e-09) (2.84893946e-05,-4.934507893e-05) (-0.0001517399338,0.0002628212748) (-1.277053227e-10,2.211921074e-10) (-2.208009141e-05,3.824384015e-05) (0.0002236392519,-0.0003873545469) (2.407892199e-08,-4.170591628e-08) (-1.190479427e-09,2.061970853e-09) (-3.154137007e-05,5.46312555e-05) (-9.036164812e-11,1.565109656e-10) (1.950696771e-06,-3.378705918e-06) (-8.471154588e-05,0.0001467247015) (-2.03076594e-11,3.517389786e-11) (5.730243228e-08,-9.925072411e-08) (-5.392190249e-06,9.339547476e-06) (-3.658433149e-10,6.336592089e-10) (-1.116528349e-06,1.933883829e-06) (8.868127353e-06,-1.536004714e-05) (-9.65577339e-11,1.67242901e-10) (1.416117621e-06,-2.452787669e-06) (-1.848146722e-05,3.201084023e-05) (-4.754985346e-11,8.235876209e-11) (1.592600314e-06,-2.75846466e-06) (-1.728333755e-05,2.993561877e-05) (-4.33680869e-19,-2.602085214e-18) (0.001421288335,-0.002461743608) (-0.02866009467,0.04964074012) (4.147852654e-05,-7.184291538e-05) (-0.008490374326,0.01470575971) (0,-2.710505431e-20) (-3.488083878e-05,6.041538497e-05) (0.002604149643,-0.004510519493) (-1.212696121e-06,2.100451296e-06) (-0.001949014841,0.003375792729) (2.879912021e-20,-1.863472484e-20) (-6.84819863e-07,1.186142797e-06) (1.665488592e-05,-2.88471086e-05) (-1.158052873e-08,2.005806414e-08) (-0.0002638178336,0.0004569458917) (0,2.117582368e-22) (-3.213881516e-09,5.566606076e-09) (1.951032757e-05,-3.379287863e-05) (-5.044923245e-09,8.738063381e-09) (1.02387175e-06,-1.773397892e-06) (1.6093626e-20,1.863472484e-20) (-1.126062466e-07,1.950397403e-07) (2.913830078e-10,-5.046901739e-10) (1.392033993e-05,-2.411073601e-05) (-0.0002210927651,0.0003829439024) (-4.235164736e-22,-2.541098842e-21) (-6.274119749e-07,1.086709418e-06) (1.575244907e-09,-2.728404213e-09) (-2.951896633e-05,5.112834946e-05) (0.0001121274987,-0.0001942105247) (-3.811648263e-21,5.082197684e-21) (9.099122566e-07,-1.576014259e-06) (-6.783673963e-09,1.174966797e-08) (-4.63062193e-05,8.020472453e-05) (9.03034606e-05,-0.0001564101819) (2.752857079e-21,-2.329340605e-21) (6.916940092e-07,-1.198049167e-06) (-3.396487491e-09,5.882888901e-09) (-8.287775515e-06,1.435484827e-05) (-5.108477623e-05,8.848142792e-05) (-2.223461487e-21,2.329340605e-21) (5.895674323e-09,-1.021160747e-08) (-1.532991602e-11,2.655219342e-11) (2.033345566e-06,-3.521857829e-06) (-2.71197858e-05,4.697284689e-05) (6.352747104e-22,-1.270549421e-21) (2.929347052e-08,-5.073777927e-08) (-1.226739939e-10,2.124775902e-10) (-8.152622709e-06,1.412075675e-05) (1.185719849e-05,-2.053727021e-05) (-5.29395592e-23,1.058791184e-22) (2.366362762e-11,-4.098660533e-11) (2.030510961e-07,-3.51694815e-07) (-5.516550356e-10,9.554945499e-10) (-6.289741996e-06,1.08941527e-05) (-1.588186776e-22,-2.117582368e-22) (8.545604851e-08,-1.480142178e-07) (-2.306127229e-10,3.994329529e-10) (5.359197563e-06,-9.282402468e-06) (-1.792223291e-05,3.104221799e-05) (1.588186776e-22,-4.235164736e-22) (4.463913472e-08,-7.731724935e-08) (-1.130973968e-10,1.958904374e-10) (1.567605963e-06,-2.715173175e-06) (-8.255361831e-06,1.429870613e-05) -(-0.02616144742,0.04531295613) (-0.04013399248,0.06951411408) (-0.002798563663,0.004847254452) (0.004795750123,-0.008306482873) (0.001429388891,-0.002475774183) (-0.0006396043251,0.001107827188) (-0.0002747846405,0.0004759409585) (4.231850505e-05,-7.329780085e-05) (9.721999344e-05,-0.0001683899681) (-1.201980249e-05,2.08189086e-05) (-1.024812465e-05,1.775027258e-05) (-3.419704066e-06,5.923101189e-06) (5.830153065e-06,-1.009812133e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.2731656004,0) (0.01615280688,0) (-0.02892567571,0) (-0.00681892694,0) (0.00311081643,0) (-0.0001242414384,0) (9.142358452e-06,0) (0.0001499983368,0) (-0.0001504484689,0) (9.162783375e-05,0) (-7.145343949e-05,0) (6.119624794e-05,0) (-3.277313972e-05,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.2695462447,0) (0.02324389201,0) (-0.03424272561,0) (-0.004333899483,0) (0.002291534039,0) (4.332848919e-05,0) (0.0001066902242,0) (-2.294053818e-05,0) (1.892984583e-05,0) (-3.739677434e-05,0) (2.322309841e-05,0) (-2.861059199e-06,0) (6.880804962e-06,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.1208306479,0) (-0.009094799051,0) (-0.002843835608,0) (4.385357727e-05,0) (0.000101455379,0) (-2.497568383e-05,0) (2.882303202e-05,0) (4.591201175e-06,0) (1.25522063e-05,0) (2.574477926e-05,0) (9.479225358e-06,0) (3.178405029e-06,0) (8.85371498e-06,0) (1.738623898e-10,0) (-0.03001102387,0) (0.1997440824,0) (-0.0001221715915,0) (-1.474070406e-10,0) (-0.02386352647,0) (-3.161081699e-06,0) (8.892664166e-13,0) (-0.0003782332269,0) (5.069147332e-07,0) (1.658455888e-13,0) (1.114472307e-05,0) (-1.500172006e-14,0) (-4.573358943e-07,0) (5.007857078e-05,0) (2.271380542e-06,0) (1.920933975e-13,0) (-1.440347086e-05,0) (3.522406586e-14,0) (-3.493952407e-06,0) (4.251167502e-05,0) (1.184301307e-14,0) (8.749326325e-07,0) (-6.649639108e-06,0) (-7.916366537e-15,0) (-3.478571729e-06,0) (4.038721491e-05,0) (5.133587681e-14,0) (-1.83560613e-06,0) (3.443235877e-05,0) (6.48529231e-07,0) (4.700311397e-15,0) (3.713046695e-06,0) (-8.486490438e-15,0) (-1.351843834e-06,0) (9.719683219e-06,0) (-1.014688338e-14,0) (-1.550010209e-06,0) (1.674276403e-05,0) (-1.734723476e-18,0) (-0.000377473387,0) (-9.424695399e-12,0) (-0.008719428334,0) (0.06301289739,0) (-4.33680869e-19,0) (4.987671827e-06,0) (-0.00143187811,0) (-4.141268852e-10,0) (-0.005892254741,0) (1.694065895e-21,0) (1.859842766e-07,0) (4.229671091e-07,0) (-6.138141033e-13,0) (-6.644558929e-05,0) (8.470329473e-22,0) (-2.859798928e-08,0) (-8.511178364e-06,0) (1.891527865e-12,0) (-1.727510638e-05,0) (-8.470329473e-22,0) (3.662671398e-07,0) (6.488075772e-07,0) (-3.437640454e-13,0) (-2.522670586e-05,0) (0,0) (5.164395866e-08,0) (2.409182211e-13,0) (-3.633301909e-07,0) (1.293020884e-05,0) (1.058791184e-22,0) (-2.328816091e-08,0) (-6.937242073e-14,0) (4.52940866e-06,0) (-8.289612776e-06,0) (0,0) (-3.139926191e-09,0) (-5.790193243e-15,0) (-4.039157833e-07,0) (1.915478012e-06,0) (-8.160659869e-10,0) (8.470329473e-22,0) (-1.266989765e-15,0) (-9.077704595e-06,0) (2.704664962e-05,0) (0,0) (1.483552381e-08,0) (5.416556846e-14,0) (-5.200987241e-06,0) (1.074630952e-05,0) (0,0) (1.08671901e-08,0) (-1.266292565e-07,0) (-3.289808164e-14,0) (-9.136562887e-07,0) (-1.278080324e-08,0) (-4.235164736e-22,0) (-2.091688994e-14,0) (-5.329587217e-06,0) (9.978394523e-06,0) (6.352747104e-22,0) (-2.480045938e-08,0) (-3.21468247e-14,0) (6.229744764e-07,0) (4.252964659e-06,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (1.333601076e-05,0) (-0.003680518671,0) (0.01171062439,0) (0.004572524643,0) (-0.001931974151,0) (1.016225988e-05,0) (-0.003695330387,0) (0.003163975381,0) (-1.380679875e-06,0) (-0.002791090092,0) (0.002119938484,0) (-1.702859645e-06,0) (0.001336173644,0) (-0.001159269776,0) (4.948719016e-07,0) (5.602991138e-05,0) (-5.170347486e-05,0) (1.165106662e-08,0) (0.0004402708215,0) (-0.0003880446353,0) (1.452039402e-07,0) (-0.0002896023254,0) (0.0002398595806,0) (-1.282564785e-07,0) (0.0001483925852,0) (-0.0001273107664,0) (5.926285014e-08,0) (-7.692981325e-05,0) (6.523609042e-05,0) (-3.032478854e-08,0) (4.206025406e-05,0) (-3.160521265e-05,0) (3.109924057e-08,0) (-1.970181647e-05,0) (1.391253042e-05,0) (-1.452397306e-08,0) (7.57314583e-06,0) (-4.370287337e-06,0) (1.070626807e-08,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.004214043356,0) (0.006158998385,0) (0.0001312011809,0) (-0.0007825700286,0) (-0.000160366703,0) (0.0001179069761,0) (2.941101487e-05,0) (-1.215575976e-05,0) (-1.292825713e-05,0) (3.591247411e-06,0) (1.211948785e-06,0) (2.186819431e-07,0) (-9.353687809e-07,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.04520166927,0) (0.04251668573,0) (-0.0009345582901,0) (-0.0001451268835,0) (0.0002799358963,0) (0.0005029806326,0) (-0.0003063111856,0) (-7.350246924e-05,0) (0.0001538232273,0) (3.114230238e-05,0) (-2.423650254e-05,0) (1.916106456e-05,0) (2.552626129e-05,0) (1.454931824e-06,0) (-0.003157854218,0) (0.007512458075,0) (0.0005195851016,0) (-1.088795504e-06,0) (0.03421108654,0) (-7.146290097e-06,0) (-1.177097021e-08,0) (-0.001457959397,0) (-6.924319911e-07,0) (7.086881675e-10,0) (-1.038967993e-05,0) (9.381966906e-10,0) (-1.140640338e-05,0) (0.001087813846,0) (-1.904659493e-05,0) (-3.587190187e-09,0) (0.0001295991408,0) (1.20807976e-09,0) (5.088937078e-05,0) (-0.0006397323042,0) (9.728329649e-10,0) (-2.632356776e-05,0) (0.0001948452291,0) (1.377274291e-10,0) (-1.900743854e-05,0) (0.0002168844333,0) (1.768045232e-10,0) (1.738073434e-06,0) (-3.331910854e-05,0) (-2.35095165e-06,0) (-4.003305574e-11,0) (-1.444095283e-05,0) (1.856004633e-10,0) (-8.44366819e-06,0) (5.955031546e-05,0) (1.173764161e-10,0) (-3.04711323e-06,0) (3.220324779e-05,0) (-7.589415207e-19,0) (9.495322441e-05,0) (7.430118958e-08,0) (-0.00369666856,0) (0.02112509155,0) (6.505213035e-19,0) (6.333326623e-05,0) (0.001467685891,0) (-1.522189737e-06,0) (0.003983623004,0) (2.710505431e-20,0) (-1.128629076e-06,0) (1.486140405e-06,0) (-1.732577337e-08,0) (0.0006790959101,0) (8.470329473e-22,0) (-9.281519799e-09,0) (-5.628658706e-06,0) (-6.662351652e-09,0) (-1.747322974e-05,0) (4.065758147e-20,0) (-4.549907229e-06,0) (-1.145926933e-05,0) (-2.539534721e-08,0) (0.0005202223217,0) (-6.776263578e-21,0) (-6.099495322e-07,0) (1.186146372e-08,0) (1.038789438e-05,0) (-0.0002534353773,0) (0,0) (-5.02811008e-07,0) (4.132508469e-09,0) (0.000156366619,0) (-0.0002955184562,0) (0,0) (-1.679232679e-07,0) (1.383585823e-09,0) (-3.776354522e-05,0) (0.0001676407959,0) (-8.088281908e-10,0) (1.694065895e-21,0) (1.092177589e-11,0) (-1.716212179e-05,0) (5.082791124e-05,0) (8.470329473e-22,0) (-3.774756953e-08,0) (5.146970487e-10,0) (2.38628948e-05,0) (-5.030265065e-05,0) (4.235164736e-22,0) (-6.59283491e-08,0) (1.303346218e-06,0) (6.607505923e-10,0) (8.223005948e-06,0) (-3.476269999e-08,0) (0,0) (2.906841531e-10,0) (-2.422359532e-05,0) (4.450385645e-05,0) (0,0) (-7.6060703e-09,0) (1.822462067e-10,0) (6.185128518e-07,0) (3.673086727e-06,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (-1.352214984e-05,0) (-0.001516611742,0) (-0.1815201801,0) (0.001529805043,0) (-0.06184377689,0) (-1.018009989e-05,0) (0.0100894037,0) (0.002033057526,0) (1.382974519e-06,0) (0.01420621429,0) (0.001104706844,0) (1.705669872e-06,0) (0.0001243303037,0) (-0.00416102366,0) (-4.957044252e-07,0) (-2.976561439e-05,0) (-6.894765397e-05,0) (-1.167054917e-08,0) (2.109279228e-05,0) (-0.001212800252,0) (-1.454478514e-07,0) (0.0009931054366,0) (0.0001417158764,0) (1.284692074e-07,0) (1.74742353e-05,0) (-0.0004985374759,0) (-5.936260932e-08,0) (0.0002260156754,0) (4.076642451e-05,0) (3.037514902e-08,0) (1.036691613e-05,0) (-0.0002489763116,0) (-3.115196758e-08,0) (0.0001252345373,0) (6.832339961e-06,0) (1.454786252e-08,0) (2.35247391e-06,0) (-7.547512391e-05,0) (-1.072474815e-08,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.09590197642,0) (-0.1401646988,0) (-0.002985838421,0) (0.01780950172,0) (0.003649578912,0) (-0.002683292763,0) (-0.0006693273457,0) (0.0002766372549,0) (0.0002942175258,0) (-8.172856693e-05,0) (-2.758117892e-05,0) (-4.976700232e-06,0) (2.128685141e-05,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.01470014553,0) (0.01382695546,0) (-0.0003039299897,0) (-4.71970691e-05,0) (9.103863821e-05,0) (0.000163575563,0) (-9.961621062e-05,0) (-2.390391798e-05,0) (5.002522838e-05,0) (1.012786441e-05,0) (-7.88201233e-06,0) (6.23141672e-06,0) (8.301457933e-06,0) (-1.457628927e-06,0) (-0.04559196335,0) (-0.02299600676,0) (0.008358714646,0) (1.091418551e-06,0) (0.01108001222,0) (0.0001174809611,0) (1.180077153e-08,0) (-0.0004752201501,0) (-5.445124097e-06,0) (-7.103876161e-10,0) (-3.157105631e-06,0) (-9.404551985e-10,0) (-3.878017573e-05,0) (0.0003533999622,0) (2.141472362e-05,0) (3.593291973e-09,0) (7.639707444e-05,0) (-1.211070338e-09,0) (-2.325109286e-05,0) (-0.0002136717171,0) (-9.75273999e-10,0) (-2.050776465e-05,0) (2.993656717e-05,0) (-1.380484768e-10,0) (-1.387528677e-05,0) (6.936217859e-05,0) (-1.771963067e-10,0) (2.805955058e-08,0) (-1.784210166e-05,0) (8.180342229e-07,0) (4.010017397e-11,0) (-1.893631504e-05,0) (-1.860366417e-10,0) (-5.633722485e-06,0) (1.251832324e-05,0) (-1.176319828e-10,0) (-2.00923065e-06,0) (4.53804567e-06,0) (1.734723476e-18,0) (0.005994823377,0) (-7.444950055e-08,0) (-0.003435817589,0) (-0.1102116782,0) (-1.084202172e-18,0) (0.001606299893,0) (0.01230377284,0) (1.525748086e-06,0) (0.001045366821,0) (-1.355252716e-20,0) (1.798364778e-05,0) (0.0001386402286,0) (1.737100717e-08,0) (0.0002209886563,0) (-1.694065895e-21,0) (4.610365646e-07,0) (6.817192153e-05,0) (6.679547034e-09,0) (-7.354140116e-06,0) (0,0) (6.988489398e-05,0) (4.1665471e-05,0) (2.546341754e-08,0) (0.0001696441168,0) (1.016439537e-20,0) (9.362266021e-06,0) (-1.188796278e-08,0) (8.158151922e-05,0) (-8.232622071e-05,0) (6.776263578e-21,0) (7.420259143e-06,0) (-4.143616472e-09,0) (-3.256963719e-05,0) (-0.000166117142,0) (3.388131789e-21,0) (2.488480358e-06,0) (-1.386998724e-09,0) (-6.937063544e-05,0) (5.261433427e-05,0) (1.696781277e-08,0) (0,0) (-1.09460803e-11,0) (-7.964340301e-06,0) (1.633611477e-05,0) (1.058791184e-21,0) (7.199518179e-07,0) (-5.160270666e-10,0) (3.653434698e-06,0) (-3.163718351e-05,0) (4.235164736e-22,0) (1.047169952e-06,0) (6.944596701e-07,0) (-6.615208134e-10,0) (-2.354858994e-05,0) (5.29902449e-07,0) (-2.117582368e-22,0) (-2.91384935e-10,0) (-1.338045233e-05,0) (4.545817498e-06,0) (-6.352747104e-22,0) (3.968631531e-07,0) (-1.826512278e-10,0) (3.288624992e-07,0) (-1.102174207e-05,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (1.792468198e-05,0) (0.0015942032,0) (-0.1456492277,0) (-0.002288970907,0) (-0.04519188989,0) (1.349672706e-05,0) (0.01039062405,0) (-0.0008488810399,0) (-1.833908765e-06,0) (0.01281429128,0) (-0.0007629577502,0) (-2.261845447e-06,0) (-0.0009122039538,0) (-0.002265202916,0) (6.573132114e-07,0) (-6.462997956e-05,0) (-1.306935015e-05,0) (1.547562452e-08,0) (-0.0003155601183,0) (-0.000622467995,0) (1.928670741e-07,0) (0.0009669418372,0) (-7.371168797e-05,0) (-1.703585845e-07,0) (-9.854256778e-05,0) (-0.0002801178774,0) (7.871574193e-08,0) (0.0002283587626,0) (-1.837131481e-05,0) (-4.027933956e-08,0) (-2.384812022e-05,0) (-0.0001639726644,0) (4.130690869e-08,0) (0.000109272375,0) (-5.321956378e-06,0) (-1.92916415e-08,0) (-3.927606724e-06,0) (-5.36331914e-05,0) (1.42199673e-08,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.07546254497,0) (-0.1102916257,0) (-0.00234947156,0) (0.01401379174,0) (0.002871750125,0) (-0.002111406963,0) (-0.0005266747028,0) (0.0002176780091,0) (0.0002315114256,0) (-6.430989108e-05,0) (-2.170284735e-05,0) (-3.916024248e-06,0) (1.675001957e-05,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.02292890543,0) (-0.02156692623,0) (0.0004740621088,0) (7.361676329e-05,0) (-0.0001419997048,0) (-0.0002551409173,0) (0.0001553787796,0) (3.72847108e-05,0) (-7.802805272e-05,0) (-1.579718001e-05,0) (1.229415824e-05,0) (-9.719602051e-06,0) (-1.29483986e-05,0) (1.933695861e-06,0) (-0.03199064087,0) (-0.02299221789,0) (0.005912559672,0) (-1.447272914e-06,0) (-0.01738794072,0) (9.397260481e-05,0) (-1.564861596e-08,0) (0.0007387482168,0) (-3.585040966e-06,0) (9.420694424e-10,0) (5.436834395e-06,0) (1.247478056e-09,0) (-2.065379919e-05,0) (-0.0005520810976,0) (3.049198037e-05,0) (-4.763408986e-09,0) (-3.993073118e-05,0) (1.606572917e-09,0) (-5.581744661e-05,0) (0.0003202683844,0) (1.293499994e-09,0) (4.343975792e-06,0) (-0.0001240359772,0) (1.831224303e-10,0) (3.841493541e-06,0) (-0.0001108992143,0) (2.350780239e-10,0) (-1.286536979e-06,0) (1.161940272e-05,0) (2.387046427e-06,0) (-5.316445846e-11,0) (-3.410339354e-06,0) (2.467585767e-10,0) (2.105845968e-06,0) (-3.536965701e-05,0) (1.560307562e-10,0) (7.77950799e-07,0) (-2.080929823e-05,0) (5.204170428e-18,0) (0.004449681879,0) (9.875566195e-08,0) (0.0001906725663,0) (-0.09897492918,0) (-2.168404345e-19,0) (0.001163767271,0) (0.008173532278,0) (-2.023388919e-06,0) (-0.002208672077,0) (-6.776263578e-21,0) (1.441241402e-05,0) (0.000103430604,0) (-2.303572953e-08,0) (-0.0003443707994,0) (-3.388131789e-21,0) (3.546892966e-07,0) (5.564768243e-05,0) (-8.856789814e-09,0) (7.598111631e-06,0) (0,0) (5.613041285e-05,0) (4.007349356e-05,0) (-3.375795271e-08,0) (-0.0002635377927,0) (0,0) (7.519930189e-06,0) (1.577459173e-08,0) (5.364558862e-05,0) (0.0001286262247,0) (0,0) (5.974666933e-06,0) (5.496789673e-09,0) (-0.0001421887402,0) (9.710076482e-05,0) (-3.388131789e-21,0) (2.003154677e-06,0) (1.839710283e-09,0) (-2.388494044e-05,0) (-8.647148753e-05,0) (1.340554525e-08,0) (0,0) (1.451967495e-11,0) (6.909246837e-06,0) (-2.592891019e-05,0) (4.235164736e-22,0) (5.713850495e-07,0) (6.845034665e-10,0) (-1.519996164e-05,0) (1.399723361e-05,0) (-8.470329473e-22,0) (8.393777059e-07,0) (-4.576572648e-07,0) (8.775775864e-10,0) (-2.393998219e-05,0) (4.258067386e-07,0) (1.270549421e-21,0) (3.864907411e-10,0) (8.138608507e-06,0) (-3.005827211e-05,0) (-4.235164736e-22,0) (3.050299829e-07,0) (2.42261127e-10,0) (-2.173739453e-07,0) (-1.107271747e-05,0) -(0.2370734683,0) (0.0006670533688,0) (0.004066218674,0) (0.0006820777545,0) (0.0005956356081,0) (8.044155541e-06,0) (9.655870575e-06,0) (6.831873609e-05,0) (4.382157398e-05,0) (1.591626787e-05,0) (1.652759785e-05,0) (1.94939596e-05,0) (1.491606603e-05,0) (3.877437899e-09,0) (0.000104543173,0) (0.3087228188,0) (0.0001062601308,0) (0.02189791074,0) (1.451237323e-09,0) (0.00101721631,0) (6.767884142e-05,0) (3.270019455e-11,0) (0.002703808895,0) (4.554381508e-05,0) (7.902103776e-11,0) (3.058225334e-05,0) (0.0002763177339,0) (1.071720204e-11,0) (1.677877475e-07,0) (1.554212663e-07,0) (1.046209416e-14,0) (9.935797639e-06,0) (6.792423503e-05,0) (2.685856042e-12,0) (0.0001254778854,0) (5.197168565e-06,0) (3.878416987e-12,0) (3.452071693e-06,0) (3.698293816e-05,0) (1.425830819e-12,0) (2.421919495e-05,0) (1.387963126e-06,0) (7.687789817e-13,0) (1.030262135e-06,0) (3.786694817e-05,0) (1.535265483e-12,0) (3.118113231e-05,0) (2.989431376e-07,0) (8.846582533e-13,0) (1.823523549e-07,0) (2.000685348e-05,0) (1.00557303e-12,0) (3.415236843e-18,0) (-4.33680869e-19,0) (0,0) (0.03787629397,0) (0.1290043371,0) (9.757819552e-19,0) (1.626303259e-19,0) (1.734723476e-18,0) (0.01166407464,0) (0.02777002614,0) (0,0) (-1.905824131e-21,0) (-6.776263578e-21,0) (0.0001520492622,0) (9.479976155e-05,0) (3.726944968e-20,0) (-1.016439537e-20,0) (0,0) (0.0005765989928,0) (0.002012299337,0) (3.30872245e-24,0) (-2.067951531e-24,0) (4.135903063e-25,0) (2.968303438e-07,0) (9.832055907e-08,0) (-1.058791184e-22,0) (3.97046694e-23,0) (-1.389663429e-22,0) (3.860134312e-07,0) (9.979758691e-06,0) (-1.694065895e-21,0) (4.235164736e-22,0) (-2.01170325e-21,0) (3.578750522e-05,0) (7.498366886e-05,0) (-2.488159283e-21,0) (5.29395592e-23,0) (8.470329473e-22,0) (1.02162398e-05,0) (6.854234909e-05,0) (-1.058791184e-22,0) (-9.264422861e-23,0) (0,0) (9.779609685e-07,0) (8.699365442e-06,0) (-2.117582368e-22,0) (-5.29395592e-23,0) (-1.32348898e-23,0) (4.056902711e-06,0) (8.419618364e-06,0) (0,0) (1.98523347e-23,0) (-1.032321404e-21,0) (5.202177913e-06,0) (1.997650936e-05,0) (5.29395592e-23,0) (-3.176373552e-22,0) (4.764560328e-22,0) (2.701400034e-06,0) (1.519803296e-05,0) (2.117582368e-22,0) (-3.30872245e-23,0) (4.566036981e-22,0) (2.43172997e-06,0) (8.192639034e-06,0) -(0.4945189387,0) (0.307421443,0) (0.1319654046,0) (0.03941143222,0) (0.01673841645,0) (0.005001509027,0) (0.002982067969,0) (0.0008721944031,0) (0.0006739086684,0) (0.0001662005827,0) (0.000162668234,0) (2.726728507e-05,0) (3.849627959e-05,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.09496554104,0) (0.02219350733,0) (0.0009466734748,0) (2.321681126e-06,0) (4.129794632e-05,0) (0.0001989658342,0) (0.0002383724452,0) (0.0001692599573,0) (0.0001085254047,0) (7.176902103e-05,0) (5.852636604e-05,0) (5.506831979e-05,0) (4.747128362e-05,0) (1.073506527e-10,0) (0.04541795873,0) (0.1725741146,0) (0.01007922853,0) (4.289735641e-10,0) (0.01096928929,0) (5.737094057e-05,0) (1.333779821e-12,0) (6.161287463e-05,0) (4.444852922e-08,0) (1.969247442e-15,0) (4.145795013e-08,0) (1.730393003e-13,0) (0.0001003702013,0) (0.0001160749593,0) (5.79959204e-05,0) (1.968726167e-12,0) (0.000456033966,0) (4.122042944e-13,0) (0.0001878179395,0) (0.0003229003659,0) (1.646882568e-13,0) (1.410595769e-05,0) (0.0002999456081,0) (5.102445159e-14,0) (6.696096688e-05,0) (0.0001183515028,0) (8.984760364e-14,0) (5.83628165e-07,0) (0.0001427988773,0) (2.344464954e-06,0) (1.402501907e-15,0) (0.0001207276869,0) (4.655188215e-14,0) (6.221369806e-06,0) (0.0001060713667,0) (3.292207679e-14,0) (1.583941041e-06,0) (9.971418463e-05,0) (-4.33680869e-18,0) (0.009429544937,0) (1.5840107e-13,0) (0.0005109923468,0) (0.194759507,0) (2.710505431e-19,0) (0.002555581156,0) (0.005067391794,0) (1.942355678e-10,0) (0.0004409201741,0) (-3.388131789e-21,0) (2.942625463e-05,0) (5.654394068e-05,0) (2.071868796e-12,0) (8.037295849e-06,0) (-1.058791184e-22,0) (7.348914505e-07,0) (3.230829218e-06,0) (6.964797294e-14,0) (1.567816421e-07,0) (-1.355252716e-20,0) (0.000113937913,0) (0.0001851425888,0) (2.781457311e-11,0) (2.999024015e-05,0) (-6.776263578e-21,0) (1.52722285e-05,0) (1.871511688e-11,0) (0.0005040683449,0) (5.02024039e-05,0) (-1.016439537e-20,0) (1.211469523e-05,0) (6.023879719e-13,0) (0.0001599166819,0) (0.0002441829949,0) (-1.355252716e-20,0) (4.063106018e-06,0) (2.623064153e-13,0) (0.000205223284,0) (3.30332097e-05,0) (2.733646717e-08,0) (8.470329473e-22,0) (4.552654708e-15,0) (0.000111644296,0) (2.711731612e-05,0) (-6.776263578e-21,0) (1.172473665e-06,0) (1.533275629e-13,0) (1.278860789e-05,0) (9.776751272e-05,0) (2.541098842e-21,0) (1.709717327e-06,0) (1.530464362e-07,0) (1.424655546e-13,0) (0.0001104626914,0) (8.6197615e-07,0) (-2.964615315e-21,0) (6.739760524e-14,0) (2.211632354e-05,0) (7.515207224e-05,0) (4.65868121e-21,0) (6.315078598e-07,0) (3.652790367e-14,0) (1.2355385e-07,0) (8.266795114e-05,0) -(-0.12111549,0.2097781823) (-0.0005607657229,0.0009712747232) (-0.002000518664,0.003464999967) (-0.0004075616168,0.0007059174275) (-0.0002729746153,0.0004728059028) (-1.278868443e-06,2.21506512e-06) (-6.037625137e-06,1.045747349e-05) (-3.526857492e-05,6.108696368e-05) (-1.932297171e-05,3.346836876e-05) (-7.415213061e-06,1.284352577e-05) (-8.572210917e-06,1.484750484e-05) (-9.354879707e-06,1.620312695e-05) (-6.899174245e-06,1.194972032e-05) (-8.714321431e-08,1.509364747e-07) (-0.002819411596,0.004883364132) (0.01502942923,-0.02603173503) (0.0008700924344,-0.001507044304) (0.0001228246921,-0.0002127386071) (7.320806355e-10,-1.268000856e-09) (0.0001192873191,-0.0002066116974) (-8.929992509e-05,0.0001546720074) (1.373510759e-11,-2.378990418e-11) (0.000299626932,-0.0005189690695) (-0.0001838490925,0.0003184359691) (5.231009427e-11,-9.060374109e-11) (3.300273741e-05,-5.716241798e-05) (-2.446401255e-05,4.237291269e-05) (4.22210803e-12,-7.312905618e-12) (2.383089031e-07,-4.12763128e-07) (-2.03263699e-07,3.52063054e-07) (1.663957861e-14,-2.882059558e-14) (1.598075748e-05,-2.767948389e-05) (-1.228323086e-05,2.127517993e-05) (1.819532646e-12,-3.151522988e-12) (1.701272271e-05,-2.946690011e-05) (-1.203371311e-05,2.08430025e-05) (2.268351532e-12,-3.928900099e-12) (4.63149072e-06,-8.021977241e-06) (-3.344313848e-06,5.792521501e-06) (6.401746961e-13,-1.1088151e-12) (3.782440103e-06,-6.551378435e-06) (-2.784982798e-06,4.823731704e-06) (4.566111217e-13,-7.908736608e-13) (3.233764025e-06,-5.601043591e-06) (-1.652550646e-06,2.862301681e-06) (8.418017027e-13,-1.458043318e-12) (2.598776547e-06,-4.501213017e-06) (-1.422702445e-06,2.464192919e-06) (5.279271586e-13,-9.143966619e-13) (8.817371997e-07,-1.527213629e-06) (-1.45942524e-07,2.527798665e-07) (4.485466413e-13,-7.769055725e-13) (2.710505431e-18,-1.95156391e-18) (-8.67361738e-19,0) (0,0) (-0.02060375576,0.0356867518) (0.06045012766,-0.1047026924) (0,0) (2.168404345e-19,0) (2.168404345e-19,-8.67361738e-19) (-0.005297526462,0.009175584986) (0.01558567133,-0.02699517461) (3.388131789e-21,-6.776263578e-21) (6.776263578e-21,0) (-2.541098842e-21,1.694065895e-21) (-2.702014961e-05,4.680027195e-05) (0.0001359807469,-0.0002355255625) (2.710505431e-20,-2.710505431e-20) (6.776263578e-21,-1.355252716e-20) (3.388131789e-21,0) (-0.0003173531288,0.0005496717431) (0.0009319561715,-0.001614195439) (-1.32348898e-23,-2.64697796e-23) (-1.98523347e-23,6.6174449e-23) (-6.6174449e-24,0) (1.10762366e-08,-1.918460455e-08) (-6.716194071e-07,1.163278936e-06) (0,0) (-1.32348898e-23,5.29395592e-23) (-1.32348898e-22,-1.32348898e-22) (-4.754822232e-07,8.235593687e-07) (2.065183874e-06,-3.577003397e-06) (0,0) (3.176373552e-22,-2.329340605e-21) (1.058791184e-21,-6.776263578e-21) (-1.517604603e-05,2.628568279e-05) (4.50724991e-05,-7.806785847e-05) (-1.588186776e-21,4.341043855e-21) (-2.64697796e-22,3.176373552e-22) (-4.235164736e-22,8.470329473e-22) (-7.538565652e-06,1.305717873e-05) (2.367733081e-05,-4.101033996e-05) (1.98523347e-23,-1.32348898e-23) (9.264422861e-23,1.852884572e-22) (2.64697796e-23,5.29395592e-23) (-8.103564901e-07,1.403578613e-06) (2.67611154e-06,-4.635161153e-06) (-1.588186776e-22,0) (-7.940933881e-23,5.29395592e-23) (-2.64697796e-23,5.29395592e-23) (-1.711417653e-06,2.964262327e-06) (5.087485249e-06,-8.811782933e-06) (0,-2.117582368e-22) (-3.97046694e-23,0) (-2.117582368e-22,5.29395592e-22) (-2.996110319e-06,5.189415297e-06) (8.841353425e-06,-1.531367334e-05) (-1.058791184e-22,0) (2.117582368e-22,2.117582368e-22) (-7.940933881e-23,5.823351512e-22) (-1.848699751e-06,3.202041897e-06) (5.660846895e-06,-9.804874436e-06) (0,0) (4.135903063e-23,-2.249931266e-22) (2.316105715e-23,5.29395592e-23) (-1.315863121e-06,2.279141781e-06) (3.859226647e-06,-6.68437663e-06) -(-0.1083538861,0.187674436) (0.04130000015,-0.07153369861) (-0.005588563056,0.009679675154) (0.0001512454779,-0.0002619648521) (-0.0004157109044,0.0007200324077) (0.0004987808677,-0.0008639138046) (-0.0004215574793,0.0007301589725) (0.0001921116781,-0.0003327471872) (-0.000135218537,0.0002342053762) (5.460781335e-05,-9.458350721e-05) (-4.878621887e-05,8.45002098e-05) (1.937500693e-05,-3.35584964e-05) (-2.137444623e-05,3.702162685e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.1083538861,0.187674436) (0.04130000015,-0.07153369861) (-0.005588563056,0.009679675154) (0.0001512454779,-0.0002619648521) (-0.0004157109044,0.0007200324077) (0.0004987808677,-0.0008639138046) (-0.0004215574793,0.0007301589725) (0.0001921116781,-0.0003327471872) (-0.000135218537,0.0002342053762) (5.460781335e-05,-9.458350721e-05) (-4.878621887e-05,8.45002098e-05) (1.937500693e-05,-3.35584964e-05) (-2.137444623e-05,3.702162685e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.1395541466,-0.2417148723) (-0.01357903408,-0.02351957694) (0.01423099906,0.02464881341) (0.004074510377,0.007057258989) (-0.001425660096,-0.00246931572) (1.975203663e-05,3.4211531e-05) (-5.71653615e-06,-9.901331055e-06) (-7.743450601e-05,-0.0001341204987) (6.633973277e-05,0.0001149037877) (-4.268839373e-05,-7.393846683e-05) (3.706007127e-05,6.418992637e-05) (-2.936722707e-05,-5.086552936e-05) (1.515866188e-05,2.625557255e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.05906019127,-0.102295252) (0.003122660326,0.005408606339) (0.001450134843,0.002511707226) (-1.663179087e-05,-2.88071068e-05) (-5.691193611e-05,-9.85743649e-05) (4.320980191e-06,7.484157229e-06) (-1.508217198e-05,-2.612308816e-05) (-5.052939195e-06,-8.751947413e-06) (-3.798238809e-06,-6.578742597e-06) (-1.228729791e-05,-2.128222427e-05) (-6.964894952e-06,-1.206355193e-05) (-2.032950537e-06,-3.521173619e-06) (-3.820457386e-06,-6.6172263e-06) (0.005175592884,0.008964389834) (5.304917144e-09,9.188386024e-09) (-0.09224965312,-0.1597810862) (-0.0001541485888,-0.0002669931877) (1.707308578e-10,2.957145201e-10) (0.01114537494,0.01930435567) (2.347871873e-06,4.066633374e-06) (-7.561107841e-13,-1.309622278e-12) (0.000246935527,0.000427704879) (-1.387241408e-07,-2.402772602e-07) (-6.941934625e-14,-1.202378346e-13) (-5.376045784e-06,-9.311584441e-06) (-7.712042098e-13,-1.335764866e-12) (8.292123503e-08,1.436237921e-07) (-4.795061678e-05,-8.305290452e-05) (-4.456588466e-15,-7.719037506e-15) (-4.108193539e-07,-7.115599937e-07) (3.307487654e-06,5.728736662e-06) (2.981603408e-15,5.164287035e-15) (1.947461171e-06,3.373101694e-06) (-2.748230891e-05,-4.760075535e-05) (-1.069619489e-08,-1.8526353e-08) (7.219598505e-15,1.25047114e-14) (3.005871758e-06,5.206322606e-06) (-2.336955431e-15,-4.047727356e-15) (8.74177065e-07,1.514119091e-06) (-1.502558212e-05,-2.602507165e-05) (1.117846321e-16,1.936173322e-16) (2.783083705e-06,4.820442378e-06) (-2.210803363e-05,-3.82922375e-05) (1.377538078e-13,2.385965939e-13) (4.150521297e-07,7.188913765e-07) (-5.857532454e-06,-1.014554382e-05) (-2.638813198e-15,-4.570558867e-15) (4.927792809e-07,8.535187514e-07) (-3.782800919e-06,-6.552003387e-06) (-2.398416777e-15,-4.154178646e-15) (1.233592183e-06,2.136644337e-06) (-8.538607507e-06,-1.478930203e-05) (-7.047314121e-19,1.19262239e-18) (0.0007200330219,0.001247133777) (-0.0001878309588,-0.0003253327639) (3.990106786e-09,6.911067683e-09) (-0.03195096622,-0.05534069685) (5.895349313e-19,4.065758147e-20) (-2.330564706e-05,-4.036656481e-05) (0.0007153114482,0.001238955771) (2.662361388e-10,4.611345187e-10) (0.003245375324,0.005621154951) (5.29395592e-23,-1.217609862e-21) (6.095239344e-10,1.055726423e-09) (-3.44128403e-08,-5.960478783e-08) (7.464270409e-14,1.292849562e-13) (1.059566382e-05,1.835222807e-05) (1.694065895e-21,2.541098842e-21) (-1.888476037e-09,-3.270936446e-09) (8.862191923e-06,1.534976668e-05) (-1.368859682e-12,-2.370934516e-12) (6.318959677e-06,1.094475921e-05) (-2.64697796e-22,-8.999725065e-22) (7.446402637e-11,1.28975477e-10) (-1.079534703e-15,-1.869808926e-15) (-7.090290898e-08,-1.228074408e-07) (4.706497865e-06,8.151893428e-06) (-1.058791184e-22,-1.588186776e-22) (1.33340407e-08,2.309523596e-08) (-4.125560409e-14,-7.14568029e-14) (6.800887061e-06,1.177948193e-05) (-1.445470366e-05,-2.503628115e-05) (-3.97046694e-23,3.441071348e-22) (1.436655647e-09,2.488360574e-09) (2.776996633e-14,4.809899276e-14) (3.119865907e-07,5.403766263e-07) (-1.632104712e-06,-2.826888284e-06) (-2.117582368e-22,-2.382280164e-22) (-4.064786482e-09,-7.040416709e-09) (2.25289788e-14,3.902133595e-14) (-3.398791457e-07,-5.886879487e-07) (1.948638818e-06,3.375141438e-06) (1.720535674e-22,1.244079641e-21) (2.900715708e-10,5.024186985e-10) (-8.107039159e-16,-1.40417988e-15) (1.611039988e-06,2.790403113e-06) (-1.070561973e-05,-1.854267731e-05) (-6.6174449e-23,5.161607022e-22) (6.102102725e-09,1.056915195e-08) (1.654781332e-14,2.866165417e-14) (4.947043268e-06,8.568530288e-06) (-1.021949476e-05,-1.770068415e-05) (1.654361225e-24,4.652890946e-25) (4.489881054e-12,7.776702106e-12) (-2.191745498e-09,-3.79621456e-09) (-9.634049138e-17,-1.668666272e-16) (-1.590204424e-08,-2.754314857e-08) (-6.6174449e-24,-4.63221143e-23) (3.879285887e-09,6.719120253e-09) (-8.601079543e-15,-1.489750653e-14) (1.863843086e-06,3.228270922e-06) (-3.791159118e-06,-6.566480212e-06) (-7.940933881e-23,1.720535674e-22) (8.070512659e-09,1.397853797e-08) (-9.55011458e-15,-1.654128355e-14) (1.512581421e-06,2.619867872e-06) (-4.456953971e-06,-7.719670724e-06) -(-0.1378654839,-0.2387900227) (-0.0169245535,-0.02931418655) (0.0167882116,0.02907803547) (0.002856832998,0.004948179901) (-0.001021264037,-0.001768881199) (-6.261071557e-05,-0.0001084449405) (-5.097302548e-05,-8.828786994e-05) (5.211057454e-06,9.025816272e-06) (-1.563957284e-05,-2.708853477e-05) (1.958875962e-05,3.392872691e-05) (-7.901662008e-06,-1.368608006e-05) (1.11827671e-06,1.936912078e-06) (-3.986478569e-06,-6.904783425e-06) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (-0.0002997192672,-0.0005191289988) (0.09925944203,0.1719223967) (0.0005701036329,0.0009874484577) (0.03744131566,0.06485026102) (-1.08363822e-05,-1.876916455e-05) (5.12637978e-06,8.879150237e-06) (-0.0004333454456,-0.000750576329) (-0.004174757703,-0.007230892451) (-5.79928862e-07,-1.004466254e-06) (-0.0003092991382,-0.0005357218221) (-0.008557666191,-0.01482231264) (-1.127253589e-06,-1.952460489e-06) (0.001441927363,0.002497491453) (0.0001026368809,0.0001777722925) (1.949578464e-07,3.376768953e-07) (7.957927152e-05,0.0001378353415) (6.761905753e-05,0.0001171196432) (1.853059582e-08,3.209593345e-08) (0.0007081325001,0.001226521469) (7.017291895e-05,0.0001215430609) (9.836838076e-08,1.703790333e-07) (-3.926527806e-05,-6.800945657e-05) (-0.000555379596,-0.0009619456778) (-7.501276439e-08,-1.299259191e-07) (0.0001990917172,0.0003448369695) (1.15125293e-05,1.994028567e-05) (2.660804959e-08,4.608649378e-08) (-1.201453687e-05,-2.080978829e-05) (-0.0001308978504,-0.0002267217275) (-1.801120482e-08,-3.119632186e-08) (0.0001320177961,0.0002286615304) (1.379282385e-06,2.388987168e-06) (1.705203038e-08,2.953498298e-08) (-1.642038463e-06,-2.844094046e-06) (-6.621122398e-05,-0.000114681204) (-8.667301526e-09,-1.501220661e-08) (3.661879991e-05,6.342562196e-05) (3.18796139e-08,5.521711101e-08) (4.775645764e-09,8.271661102e-09) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.000923337689,-0.00159926779) (0.0008274199475,0.001433133388) (-5.55619918e-06,-9.623619276e-06) (-3.00319403e-06,-5.201684645e-06) (3.982825217e-06,6.898455633e-06) (1.175840002e-05,2.036614625e-05) (-4.157662878e-06,-7.201283346e-06) (-2.677457455e-06,-4.637492347e-06) (2.594031055e-06,4.492993584e-06) (1.179960774e-06,2.043752012e-06) (-3.634784569e-07,-6.295631548e-07) (1.553863596e-07,2.691370696e-07) (5.193486208e-07,8.995381981e-07) (0.03245066753,0.05620620491) (1.973358379e-05,3.417956974e-05) (0.003074044889,0.005324401932) (-0.003612640396,-0.006257276715) (-1.712840758e-06,-2.966727218e-06) (0.0006726502744,0.001165064451) (-7.897721341e-05,-0.0001367925463) (-9.66799994e-09,-1.67454671e-08) (-2.492556751e-05,-4.317234933e-05) (2.421005667e-06,4.19330482e-06) (3.489741388e-10,6.044409389e-10) (-3.762967448e-07,-6.517650808e-07) (-8.094592238e-08,-1.402024502e-07) (3.136037117e-05,5.431775621e-05) (2.045657133e-05,3.54318209e-05) (6.618798767e-10,1.146409575e-09) (-2.146830323e-05,-3.718419194e-05) (8.675245077e-07,1.502596524e-06) (-9.606141336e-11,-1.663832486e-10) (1.456791745e-05,2.523237319e-05) (-1.076291122e-05,-1.864190907e-05) (1.04629614e-07,1.812238073e-07) (-8.956602146e-10,-1.551328998e-09) (2.547207111e-05,4.411892133e-05) (-6.797765478e-11,-1.177407519e-10) (6.283968979e-06,1.088415354e-05) (5.35510915e-06,9.275321128e-06) (-1.527935823e-11,-2.646462476e-11) (1.016270017e-06,1.760231303e-06) (2.862275528e-06,4.95760664e-06) (-2.747461897e-10,-4.758743597e-10) (7.443505779e-07,1.28925302e-06) (4.771932706e-06,8.265229897e-06) (-7.264500146e-11,-1.258248334e-10) (1.575517403e-06,2.728876191e-06) (4.761717681e-06,8.247536954e-06) (-3.577407697e-11,-6.196251891e-11) (1.541553266e-06,2.67004858e-06) (3.194233381e-06,5.532574508e-06) (0,1.734723476e-18) (-0.002729426434,-0.004727505259) (0.06324356095,0.1095410608) (3.126494954e-05,5.415248111e-05) (0.0002650767828,0.0004591264557) (5.421010862e-20,-3.252606517e-19) (0.0001065037686,0.0001844699384) (-0.006663150733,-0.01154091561) (-9.127041456e-07,-1.580849952e-06) (0.0002416297276,0.0004185149648) (-1.270549421e-21,-1.270549421e-21) (1.483669546e-06,2.569791035e-06) (-3.500462032e-05,-6.06297809e-05) (-8.719713196e-09,-1.510298628e-08) (1.471765147e-05,2.549172011e-05) (-1.270549421e-21,-2.964615315e-21) (6.08483442e-09,1.053924237e-08) (-3.835660981e-05,-6.643559699e-05) (-3.797649481e-09,-6.577721851e-09) (1.178686968e-06,2.041545716e-06) (-2.117582368e-22,-8.470329473e-22) (2.4179593e-07,4.188028358e-07) (2.191988206e-10,3.796634942e-10) (-2.364132934e-05,-4.094798358e-05) (1.230236002e-05,2.130831261e-05) (-8.470329473e-22,8.470329473e-22) (1.181594739e-06,2.046582122e-06) (1.185010832e-09,2.052498968e-09) (-4.056713351e-05,-7.026433636e-05) (-2.316881374e-05,-4.012956255e-05) (4.235164736e-22,8.470329473e-22) (-2.188570265e-06,-3.790714895e-06) (-5.101434888e-09,-8.835944417e-09) (6.486224796e-05,0.000112344709) (-2.66489559e-06,-4.61573456e-06) (-4.235164736e-22,4.235164736e-22) (-1.304105758e-06,-2.258777432e-06) (-2.554688277e-09,-4.424849894e-09) (3.739300532e-05,6.476658507e-05) (4.052238551e-06,7.018683054e-06) (1.058791184e-22,-1.058791184e-22) (-1.147182595e-08,-1.986978541e-08) (-1.153315372e-11,-1.997600821e-11) (4.290322277e-06,7.431056164e-06) (1.630475981e-06,2.824067239e-06) (0,-2.117582368e-22) (-8.329871479e-08,-1.442776062e-07) (-9.227744456e-11,-1.598292224e-10) (3.112744687e-06,5.391431949e-06) (4.610680091e-06,7.985932175e-06) (9.529120657e-22,1.270549421e-21) (-4.072151728e-12,-7.053173691e-12) (-4.732118624e-07,-8.196269885e-07) (-4.150544398e-10,-7.188953777e-10) (1.376158085e-05,2.383575722e-05) (0,1.058791184e-22) (-1.530521796e-07,-2.650941513e-07) (-1.73488401e-10,-3.004907251e-10) (5.513119534e-06,9.54900314e-06) (4.337960104e-06,7.513567301e-06) (-5.29395592e-23,-1.058791184e-22) (-7.700519144e-08,-1.33376904e-07) (-8.508942103e-11,-1.473792004e-10) (6.216831785e-07,1.076786851e-06) (6.222146986e-06,1.077707471e-05) -(0.05157424969,0.08932922082) (0.07911949656,0.1370389879) (0.005517042647,0.009555798172) (-0.009454263379,-0.01637526452) (-0.002817873889,-0.004880700745) (0.001260905509,0.002183952404) (0.0005417059474,0.0009382622237) (-8.342600894e-05,-0.0001444980862) (-0.0001916579055,-0.0003319612299) (2.369564209e-05,4.104205603e-05) (2.020298538e-05,3.499259714e-05) (6.741548682e-06,1.167670484e-05) (-1.149346843e-05,-1.990727127e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0.0003039026374,0.0005263748085) (0.04090131005,0.07084314711) (-0.00883687416,-0.01530591502) (0.01252654015,0.02169660398) (-0.000346879798,-0.0006008134342) (-5.135379222e-06,-8.894737729e-06) (0.001183168129,0.002049307314) (-0.00268255013,-0.004646313118) (5.808926845e-07,1.006135643e-06) (0.001574284488,0.002726740719) (-0.004459427703,-0.007723955355) (1.129113895e-06,1.955682633e-06) (0.0001341706355,0.0002323903576) (0.0003683995724,0.0006380867769) (-1.952858243e-07,-3.382449696e-07) (-4.227609596e-05,-7.322434614e-05) (9.017141291e-05,0.0001561814685) (-1.85615821e-08,-3.214960327e-08) (3.392569073e-05,5.876102003e-05) (0.0002193194444,0.0003798724208) (-9.853361838e-08,-1.706652333e-07) (0.0001346486464,0.0002332182967) (-0.0003281340941,-0.0005683449226) (7.513718213e-08,1.30141417e-07) (2.344440262e-05,4.060689649e-05) (4.508202613e-05,7.808435976e-05) (-2.665283983e-08,-4.616407275e-08) (3.529806653e-05,6.113804464e-05) (-8.179885248e-05,-0.0001416797685) (1.80411161e-08,3.12481297e-08) (3.253944728e-05,5.635997594e-05) (1.08655697e-05,1.881971877e-05) (-1.708094113e-08,-2.958505788e-08) (1.043761257e-05,1.807847528e-05) (-3.251583845e-05,-5.631908425e-05) (8.68155776e-09,1.503689913e-08) (1.137503137e-05,1.970213227e-05) (5.505628404e-07,9.536028123e-07) (-4.783889003e-09,-8.285938811e-09) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.02101305131,0.03639567249) (-0.01883018317,-0.03261483397) (0.0001264463693,0.0002190115361) (6.834581865e-05,0.0001183784304) (-9.063998106e-05,-0.0001569930524) (-0.0002675942571,-0.0004634868491) (9.461888584e-05,0.0001638847176) (6.093280015e-05,0.0001055387057) (-5.903420635e-05,-0.0001022502448) (-2.685320506e-05,-4.65111155e-05) (8.271937295e-06,1.432741567e-05) (-3.536237701e-06,-6.124943366e-06) (-1.181918528e-05,-2.04714294e-05) (0.01305259065,0.02260775017) (-1.972421406e-05,-3.41633409e-05) (-3.139793852e-05,-5.438282477e-05) (-0.001208003877,-0.002092324091) (1.712798772e-06,2.966654497e-06) (-0.01682721675,-0.02914559437) (-2.585942318e-05,-4.47898348e-05) (9.67925942e-09,1.67649691e-08) (0.0005877851435,0.001018073733) (1.150133528e-06,1.992089707e-06) (-3.493905947e-10,-6.051622618e-10) (6.952941289e-06,1.204284757e-05) (8.190971413e-08,1.418717865e-07) (1.32217184e-05,2.290068804e-05) (-0.0004639768554,-0.0008036314871) (-6.629958665e-10,-1.148342526e-09) (1.637002792e-05,2.835372008e-05) (-0.0002004334016,-0.0003471608352) (9.621648202e-11,1.666518354e-10) (-1.475131992e-05,-2.555003558e-05) (0.0002859360877,0.0004952558317) (1.363844101e-07,2.362247277e-07) (8.972964103e-10,1.554162972e-09) (-1.642133626e-05,-2.844258873e-05) (6.808895039e-11,1.179335215e-10) (8.86002333e-06,1.534601056e-05) (-0.0001070329349,-0.0001853864814) (1.530817236e-11,2.651453229e-11) (1.09037461e-06,1.888584223e-06) (-4.296340024e-06,-7.441479207e-06) (2.752512015e-10,4.767490659e-10) (-7.394344286e-07,-1.280737999e-06) (1.652763697e-05,2.862670696e-05) (7.276235858e-11,1.260281019e-10) (3.451371935e-06,5.977951547e-06) (-1.976500436e-05,-3.423399176e-05) (3.583427253e-11,6.206678068e-11) (3.65150322e-06,6.3245891e-06) (-1.973991048e-05,-3.419052789e-05) (2.168404345e-19,0) (-0.0008395542634,-0.00145415064) (0.02522679048,0.04369408282) (-3.126224837e-05,-5.414780254e-05) (-0.01100183246,-0.01905573281) (-1.084202172e-19,3.794707604e-19) (6.005470316e-05,0.0001040177971) (-0.003199103504,-0.005541009808) (9.138118664e-07,1.582768581e-06) (-0.002344817337,-0.004061342763) (3.388131789e-20,5.759824041e-20) (5.727926757e-07,9.921060165e-07) (-1.287812239e-05,-2.230556228e-05) (8.725406379e-09,1.511284716e-08) (-0.000335289152,-0.0005807378464) (-4.235164736e-22,-4.235164736e-22) (1.81243952e-09,3.139237334e-09) (-1.242058352e-05,-2.151308171e-05) (3.802120767e-09,6.585466345e-09) (2.538152278e-06,4.396208702e-06) (2.329340605e-20,1.43995601e-20) (9.202421743e-08,1.593906201e-07) (-2.195446888e-10,-3.802625555e-10) (-5.129786172e-06,-8.885050281e-06) (-0.0002810210377,-0.0004867427153) (1.694065895e-21,1.694065895e-21) (3.473961335e-07,6.017077536e-07) (-1.186831509e-09,-2.055652473e-09) (-7.965351864e-05,-0.0001379639413) (0.0001256283905,0.0002175947552) (-4.446922973e-21,-4.235164736e-21) (-9.779151322e-07,-1.693798695e-06) (5.110513569e-09,8.851669155e-09) (3.289864391e-06,5.698212276e-06) (0.0001171394555,0.0002028914885) (7.199780052e-21,6.352747104e-21) (-3.844266251e-07,-6.658464465e-07) (2.55914016e-09,4.432560781e-09) (2.632175311e-05,4.559061372e-05) (-6.372623528e-05,-0.0001103770773) (-1.058791184e-22,4.235164736e-22) (-3.632365662e-09,-6.291441879e-09) (1.155167341e-11,2.000808525e-11) (6.979756536e-06,1.208929295e-05) (-3.434954941e-05,-5.94951648e-05) (3.97046694e-22,5.29395592e-23) (-4.430089943e-08,-7.673140864e-08) (9.242620673e-11,1.60086886e-10) (-7.708935966e-06,-1.335226877e-05) (2.033211796e-05,3.521626133e-05) (2.64697796e-23,0) (2.732028175e-11,4.732011607e-11) (-2.030819374e-07,-3.517482337e-07) (4.158427398e-10,7.202607533e-10) (5.390575629e-06,9.336750872e-06) (-5.29395592e-23,-1.588186776e-22) (-3.944424504e-08,-6.831943648e-08) (1.737627841e-10,3.009659705e-10) (1.261265833e-05,2.184576504e-05) (-1.944658249e-05,-3.36824689e-05) (3.97046694e-22,1.270549421e-21) (-1.766566272e-08,-3.059782538e-08) (8.522954168e-11,1.476218965e-10) (2.700280003e-06,4.67702216e-06) (-4.74143023e-06,-8.212398059e-06) -(0.01677258801,0.02905097462) (0.02573064519,0.04456678478) (0.001794210947,0.00310766452) (-0.003074644141,-0.005325439867) (-0.0009164076666,-0.001587264639) (0.0004100621676,0.0007102485086) (0.0001761695175,0.000305134555) (-2.713117662e-05,-4.699257638e-05) (-6.232953669e-05,-0.0001079579244) (7.706117781e-06,1.334738753e-05) (6.57026234e-06,1.138002819e-05) (2.192435553e-06,3.797409769e-06) (-3.737819008e-06,-6.474092431e-06) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (-0.0004028470466,-0.0006977515524) (-0.04299386424,-0.07446755728) (-0.007090582965,-0.01228124995) (-0.01874283661,-0.03246354529) (-0.0002534798879,-0.0004390400445) (6.808460863e-06,1.179260014e-05) (0.001218491756,0.00211048963) (0.001120069607,0.001940017466) (-7.702992143e-07,-1.334197376e-06) (0.001420036301,0.002459575022) (0.003079871323,0.005334493612) (-1.497289225e-06,-2.593381012e-06) (-0.0009844018759,-0.001705034064) (0.0002005515599,0.0003473654913) (2.589526051e-07,4.485190688e-07) (-9.179394658e-05,-0.0001589917793) (1.709241288e-05,2.960492753e-05) (2.461341544e-08,4.263168609e-08) (-0.0005075475471,-0.0008790981388) (0.0001125653912,0.0001949689767) (1.306577615e-07,2.263058812e-07) (0.0001311012957,0.0002270741051) (0.0001706747231,0.0002956172919) (-9.963682546e-08,-1.72576044e-07) (-0.0001322101708,-0.0002289947331) (2.533065632e-05,4.387398374e-05) (3.534207956e-08,6.121427745e-08) (3.566399888e-05,6.177185807e-05) (3.686250359e-05,6.384772911e-05) (-2.392364366e-08,-4.143696631e-08) (-7.485395282e-05,-0.0001296508494) (7.155927413e-06,1.239442985e-05) (2.264899878e-08,3.922921662e-08) (9.107253788e-06,1.577422628e-05) (2.532776104e-05,4.386896896e-05) (-1.151244726e-08,-1.994014357e-08) (-1.899134758e-05,-3.289397892e-05) (3.912341003e-07,6.776373393e-07) (6.342969012e-09,1.09863446e-08) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.01653457404,0.02863872232) (-0.01481693702,-0.02566368773) (9.949706138e-05,0.0001723339655) (5.377938606e-05,9.314862906e-05) (-7.132203009e-05,-0.0001235333798) (-0.0002105623306,-0.0003647046547) (7.44529174e-05,0.0001289562357) (4.794629208e-05,8.304541391e-05) (-4.645234247e-05,-8.045781728e-05) (-2.113002537e-05,-3.65982775e-05) (6.508952823e-06,1.127383699e-05) (-2.782565142e-06,-4.819544201e-06) (-9.300181641e-06,-1.610838712e-05) (-0.01463285707,-0.0253448519) (2.616874833e-05,4.532560167e-05) (-0.002336540875,-0.00404700751) (0.001812179585,0.003138787114) (-2.272899548e-06,-3.936777498e-06) (-0.01319038986,-0.02284642541) (3.996000794e-05,6.921276402e-05) (-1.284453257e-08,-2.224738301e-08) (0.0004618297644,0.0007999126164) (-9.553607913e-07,-1.65473343e-06) (4.636983056e-10,8.031490246e-10) (5.524098285e-06,9.568018896e-06) (-1.086310209e-07,-1.881544475e-07) (-1.339854236e-05,-2.320695611e-05) (-0.000365141319,-0.0006324433165) (8.800808196e-10,1.524344694e-09) (2.84893946e-05,4.934507893e-05) (-0.0001517399338,-0.0002628212748) (-1.277053227e-10,-2.211921074e-10) (-2.208009141e-05,-3.824384015e-05) (0.0002236392519,0.0003873545469) (2.407892199e-08,4.170591628e-08) (-1.190479427e-09,-2.061970853e-09) (-3.154137007e-05,-5.46312555e-05) (-9.036164812e-11,-1.565109656e-10) (1.950696771e-06,3.378705918e-06) (-8.471154588e-05,-0.0001467247015) (-2.03076594e-11,-3.517389786e-11) (5.730243228e-08,9.925072411e-08) (-5.392190249e-06,-9.339547476e-06) (-3.658433149e-10,-6.336592089e-10) (-1.116528349e-06,-1.933883829e-06) (8.868127353e-06,1.536004714e-05) (-9.65577339e-11,-1.67242901e-10) (1.416117621e-06,2.452787669e-06) (-1.848146722e-05,-3.201084023e-05) (-4.754985346e-11,-8.235876209e-11) (1.592600314e-06,2.75846466e-06) (-1.728333755e-05,-2.993561877e-05) (2.168404345e-19,1.301042607e-18) (0.001421288335,0.002461743608) (-0.02866009467,-0.04964074012) (4.147852654e-05,7.184291538e-05) (-0.008490374326,-0.01470575971) (2.710505431e-20,1.897353802e-19) (-3.488083878e-05,-6.041538497e-05) (0.002604149643,0.004510519493) (-1.212696121e-06,-2.100451296e-06) (-0.001949014841,-0.003375792729) (1.6093626e-20,3.04931861e-20) (-6.84819863e-07,-1.186142797e-06) (1.665488592e-05,2.88471086e-05) (-1.158052873e-08,-2.005806414e-08) (-0.0002638178336,-0.0004569458917) (6.352747104e-22,-6.352747104e-22) (-3.213881516e-09,-5.566606076e-09) (1.951032757e-05,3.379287863e-05) (-5.044923245e-09,-8.738063381e-09) (1.02387175e-06,1.773397892e-06) (2.286988958e-20,-1.694065895e-20) (-1.126062466e-07,-1.950397403e-07) (2.913830078e-10,5.046901739e-10) (1.392033993e-05,2.411073601e-05) (-0.0002210927651,-0.0003829439024) (-2.117582368e-21,3.811648263e-21) (-6.274119749e-07,-1.086709418e-06) (1.575244907e-09,2.728404213e-09) (-2.951896633e-05,-5.112834946e-05) (0.0001121274987,0.0001942105247) (-2.117582368e-22,-1.694065895e-21) (9.099122566e-07,1.576014259e-06) (-6.783673963e-09,-1.174966797e-08) (-4.63062193e-05,-8.020472453e-05) (9.03034606e-05,0.0001564101819) (1.058791184e-22,3.176373552e-21) (6.916940092e-07,1.198049167e-06) (-3.396487491e-09,-5.882888901e-09) (-8.287775515e-06,-1.435484827e-05) (-5.108477623e-05,-8.848142792e-05) (1.111730743e-21,-2.064642809e-21) (5.895674323e-09,1.021160747e-08) (-1.532991602e-11,-2.655219342e-11) (2.033345566e-06,3.521857829e-06) (-2.71197858e-05,-4.697284689e-05) (1.852884572e-22,8.470329473e-22) (2.929347052e-08,5.073777927e-08) (-1.226739939e-10,-2.124775902e-10) (-8.152622709e-06,-1.412075675e-05) (1.185719849e-05,2.053727021e-05) (-1.058791184e-22,5.29395592e-23) (2.366362762e-11,4.098660533e-11) (2.030510961e-07,3.51694815e-07) (-5.516550356e-10,-9.554945499e-10) (-6.289741996e-06,-1.08941527e-05) (-6.6174449e-22,-2.64697796e-22) (8.545604851e-08,1.480142178e-07) (-2.306127229e-10,-3.994329529e-10) (5.359197563e-06,9.282402468e-06) (-1.792223291e-05,-3.104221799e-05) (2.64697796e-22,2.117582368e-22) (4.463913472e-08,7.731724935e-08) (-1.130973968e-10,-1.958904374e-10) (1.567605963e-06,2.715173175e-06) (-8.255361831e-06,-1.429870613e-05) -(-0.02616144742,-0.04531295613) (-0.04013399248,-0.06951411408) (-0.002798563663,-0.004847254452) (0.004795750123,0.008306482873) (0.001429388891,0.002475774183) (-0.0006396043251,-0.001107827188) (-0.0002747846405,-0.0004759409585) (4.231850505e-05,7.329780085e-05) (9.721999344e-05,0.0001683899681) (-1.201980249e-05,-2.08189086e-05) (-1.024812465e-05,-1.775027258e-05) (-3.419704066e-06,-5.923101189e-06) (5.830153065e-06,1.009812133e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.12111549,-0.2097781823) (-0.0005607657229,-0.0009712747232) (-0.002000518664,-0.003464999967) (-0.0004075616168,-0.0007059174275) (-0.0002729746153,-0.0004728059028) (-1.278868443e-06,-2.21506512e-06) (-6.037625137e-06,-1.045747349e-05) (-3.526857492e-05,-6.108696368e-05) (-1.932297171e-05,-3.346836876e-05) (-7.415213061e-06,-1.284352577e-05) (-8.572210917e-06,-1.484750484e-05) (-9.354879707e-06,-1.620312695e-05) (-6.899174245e-06,-1.194972032e-05) (-8.714321431e-08,-1.509364747e-07) (-0.002819411596,-0.004883364132) (0.01502942923,0.02603173503) (0.0008700924344,0.001507044304) (0.0001228246921,0.0002127386071) (7.320806355e-10,1.268000856e-09) (0.0001192873191,0.0002066116974) (-8.929992509e-05,-0.0001546720074) (1.373510759e-11,2.378990418e-11) (0.000299626932,0.0005189690695) (-0.0001838490925,-0.0003184359691) (5.231009427e-11,9.060374109e-11) (3.300273741e-05,5.716241798e-05) (-2.446401255e-05,-4.237291269e-05) (4.22210803e-12,7.312905618e-12) (2.383089031e-07,4.12763128e-07) (-2.03263699e-07,-3.52063054e-07) (1.663957861e-14,2.882059558e-14) (1.598075748e-05,2.767948389e-05) (-1.228323086e-05,-2.127517993e-05) (1.819532646e-12,3.151522988e-12) (1.701272271e-05,2.946690011e-05) (-1.203371311e-05,-2.08430025e-05) (2.268351532e-12,3.928900099e-12) (4.63149072e-06,8.021977241e-06) (-3.344313848e-06,-5.792521501e-06) (6.401746961e-13,1.1088151e-12) (3.782440103e-06,6.551378435e-06) (-2.784982798e-06,-4.823731704e-06) (4.566111217e-13,7.908736608e-13) (3.233764025e-06,5.601043591e-06) (-1.652550646e-06,-2.862301681e-06) (8.418017027e-13,1.458043318e-12) (2.598776547e-06,4.501213017e-06) (-1.422702445e-06,-2.464192919e-06) (5.279271586e-13,9.143966619e-13) (8.817371997e-07,1.527213629e-06) (-1.45942524e-07,-2.527798665e-07) (4.485466413e-13,7.769055725e-13) (1.029992064e-18,8.67361738e-19) (8.67361738e-19,-1.734723476e-18) (2.168404345e-19,1.734723476e-18) (-0.02060375576,-0.0356867518) (0.06045012766,0.1047026924) (-2.168404345e-19,0) (2.168404345e-19,-2.168404345e-19) (2.168404345e-19,8.67361738e-19) (-0.005297526462,-0.009175584986) (0.01558567133,0.02699517461) (0,6.776263578e-21) (8.470329473e-22,2.117582368e-21) (-3.388131789e-21,5.082197684e-21) (-2.702014961e-05,-4.680027195e-05) (0.0001359807469,0.0002355255625) (6.776263578e-21,6.776263578e-21) (0,1.355252716e-20) (6.776263578e-21,-6.776263578e-21) (-0.0003173531288,-0.0005496717431) (0.0009319561715,0.001614195439) (-1.32348898e-23,0) (3.30872245e-24,0) (0,-1.32348898e-23) (1.10762366e-08,1.918460455e-08) (-6.716194071e-07,-1.163278936e-06) (0,0) (0,0) (-5.29395592e-23,-7.27918939e-23) (-4.754822232e-07,-8.235593687e-07) (2.065183874e-06,3.577003397e-06) (8.470329473e-22,0) (4.235164736e-22,2.117582368e-21) (6.352747104e-22,5.717472394e-21) (-1.517604603e-05,-2.628568279e-05) (4.50724991e-05,7.806785847e-05) (-1.376428539e-21,-3.494010907e-21) (-3.705769144e-22,-1.058791184e-22) (-8.470329473e-22,-4.235164736e-22) (-7.538565652e-06,-1.305717873e-05) (2.367733081e-05,4.101033996e-05) (4.63221143e-23,2.64697796e-23) (1.191140082e-22,-2.514629062e-22) (2.64697796e-23,5.29395592e-23) (-8.103564901e-07,-1.403578613e-06) (2.67611154e-06,4.635161153e-06) (-1.588186776e-22,-3.176373552e-22) (-5.29395592e-23,2.117582368e-22) (2.64697796e-23,5.29395592e-23) (-1.711417653e-06,-2.964262327e-06) (5.087485249e-06,8.811782933e-06) (0,4.235164736e-22) (-2.64697796e-23,2.64697796e-23) (-3.441071348e-22,-6.352747104e-22) (-2.996110319e-06,-5.189415297e-06) (8.841353425e-06,1.531367334e-05) (-1.058791184e-22,-2.117582368e-22) (0,2.117582368e-22) (-1.32348898e-22,-4.764560328e-22) (-1.848699751e-06,-3.202041897e-06) (5.660846895e-06,9.804874436e-06) (5.29395592e-23,0) (-4.135903063e-23,1.257314531e-22) (7.27918939e-23,-1.058791184e-22) (-1.315863121e-06,-2.279141781e-06) (3.859226647e-06,6.68437663e-06) -(-0.1083538861,-0.187674436) (0.04130000015,0.07153369861) (-0.005588563056,-0.009679675154) (0.0001512454779,0.0002619648521) (-0.0004157109044,-0.0007200324077) (0.0004987808677,0.0008639138046) (-0.0004215574793,-0.0007301589725) (0.0001921116781,0.0003327471872) (-0.000135218537,-0.0002342053762) (5.460781335e-05,9.458350721e-05) (-4.878621887e-05,-8.45002098e-05) (1.937500693e-05,3.35584964e-05) (-2.137444623e-05,-3.702162685e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.1083538861,-0.187674436) (0.04130000015,0.07153369861) (-0.005588563056,-0.009679675154) (0.0001512454779,0.0002619648521) (-0.0004157109044,-0.0007200324077) (0.0004987808677,0.0008639138046) (-0.0004215574793,-0.0007301589725) (0.0001921116781,0.0003327471872) (-0.000135218537,-0.0002342053762) (5.460781335e-05,9.458350721e-05) (-4.878621887e-05,-8.45002098e-05) (1.937500693e-05,3.35584964e-05) (-2.137444623e-05,-3.702162685e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.2475006931,0) (0.001885655396,0) (0.003936900835,0) (0.0009741204454,0) (0.0005004075617,0) (8.132634863e-07,0) (1.510083094e-05,0) (7.282759888e-05,0) (3.408159058e-05,0) (1.381866281e-05,0) (1.778426622e-05,0) (1.795710592e-05,0) (1.276438578e-05,0) (7.833976983e-06,0) (0.3041454174,0) (0.002926686712,0) (0.02849839687,0) (2.755679327e-06,0) (1.477200313e-09,0) (5.595452752e-05,0) (0.000471312833,0) (2.30767043e-11,0) (0.0001328145617,0) (0.002968612862,0) (1.385122765e-10,0) (0.0001424591791,0) (8.663764015e-06,0) (6.653302287e-12,0) (1.353880343e-06,0) (1.063332768e-06,0) (1.058585676e-13,0) (0.0001028139335,0) (8.885062031e-06,0) (4.930568137e-12,0) (9.226573536e-06,0) (0.0001114531879,0) (5.306720436e-12,0) (2.485545863e-05,0) (1.209685944e-06,0) (1.149711836e-12,0) (2.362894913e-06,0) (2.235255113e-05,0) (1.084804457e-12,0) (4.060026829e-05,0) (2.884757044e-07,0) (1.846273793e-12,0) (8.663751496e-07,0) (2.708317392e-05,0) (1.260179665e-12,0) (1.705402686e-05,0) (4.258384822e-09,0) (8.003161713e-13,0) (1.561251128e-17,0) (6.938893904e-18,0) (8.67361738e-19,0) (0.04483170943,0) (0.1133052738,0) (8.67361738e-19,0) (-1.734723476e-18,0) (4.33680869e-19,0) (0.009624007898,0) (0.03498925778,0) (0,0) (5.421010862e-20,0) (6.776263578e-21,0) (1.920663012e-05,0) (0.0007802029551,0) (2.439454888e-19,0) (0,0) (2.710505431e-20,0) (0.0006986693326,0) (0.001726467409,0) (0,0) (-3.176373552e-22,0) (-4.235164736e-22,0) (1.653240914e-09,0) (1.835110102e-05,0) (0,0) (0,0) (0,0) (2.342751068e-06,0) (1.709453932e-06,0) (0,0) (1.016439537e-20,0) (1.101142831e-20,0) (2.57422105e-05,0) (0.0001083718738,0) (1.270549421e-21,0) (0,0) (-4.235164736e-22,0) (2.225083718e-05,0) (3.271647394e-05,0) (0,0) (2.911675756e-22,0) (0,0) (2.685905316e-06,0) (3.292917407e-06,0) (2.117582368e-22,0) (2.117582368e-22,0) (0,0) (2.887868495e-06,0) (1.229628472e-05,0) (2.117582368e-22,0) (0,0) (-4.235164736e-22,0) (6.902245323e-06,0) (1.565229019e-05,0) (-6.352747104e-22,0) (2.117582368e-22,0) (-4.235164736e-22,0) (5.060621495e-06,0) (8.434035548e-06,0) (-1.058791184e-22,0) (-8.470329473e-22,0) (-3.176373552e-22,0) (2.848171096e-06,0) (7.27171318e-06,0) -(0.09496554104,0) (0.02219350733,0) (0.0009466734748,0) (2.321681126e-06,0) (4.129794632e-05,0) (0.0001989658342,0) (0.0002383724452,0) (0.0001692599573,0) (0.0001085254047,0) (7.176902103e-05,0) (5.852636604e-05,0) (5.506831979e-05,0) (4.747128362e-05,0) (0.08203099855,0) (8.306610194e-08,0) (0.1359609918,0) (0.009081386798,0) (5.657391905e-09,0) (0.01196712578,0) (5.443671855e-05,0) (2.267692166e-12,0) (6.454709571e-05,0) (4.074384328e-08,0) (2.322477598e-15,0) (4.516263572e-08,0) (1.806939314e-09,0) (9.637884248e-05,0) (0.0001200645114,0) (3.505088404e-13,0) (0.0001259530711,0) (0.0003880768169,0) (2.442169459e-14,0) (0.0001806923474,0) (0.0003300259584,0) (4.99498452e-09,0) (5.220474457e-13,0) (0.0003140465704,0) (2.043749217e-14,0) (6.916995033e-05,0) (0.0001161425193,0) (3.068536094e-15,0) (6.841874488e-06,0) (0.0001365406311,0) (3.090610873e-13,0) (1.118320353e-06,0) (0.0001219538312,0) (2.402304362e-14,0) (6.135362753e-06,0) (0.0001061573737,0) (1.022792114e-14,0) (9.682037194e-06,0) (9.16160885e-05,0) (0,0) (0.008475895408,0) (0.1732522102,0) (1.124213962e-07,0) (0.02297182624,0) (1.084202172e-19,0) (0.0009869192534,0) (0.006480627332,0) (3.316210435e-10,0) (0.000596346401,0) (1.694065895e-21,0) (6.030566529e-06,0) (7.772448169e-05,0) (1.304810639e-11,0) (1.025243196e-05,0) (0,0) (6.172455307e-07,0) (3.424236285e-06,0) (8.91940129e-14,0) (8.102047562e-08,0) (0,0) (1.7510264e-07,0) (5.995060337e-14,0) (0.0002921369044,0) (3.675876272e-05,0) (2.032879073e-20,0) (1.275281687e-06,0) (4.637667068e-13,0) (0.0003051743252,0) (0.0002630933887,0) (6.776263578e-21,0) (3.588497215e-06,0) (5.404957306e-12,0) (0.0003430215163,0) (6.96043537e-05,0) (5.082197684e-21,0) (2.144710129e-06,0) (2.269021793e-12,0) (0.0002012220718,0) (3.895281572e-05,0) (1.694065895e-21,0) (3.844113255e-09,0) (1.769838074e-15,0) (0.0001178597097,0) (2.092539475e-05,0) (-8.470329473e-22,0) (6.145570316e-08,0) (3.010474357e-14,0) (2.166322872e-05,0) (9.000390998e-05,0) (0,0) (1.298476433e-12,0) (5.281220211e-07,0) (2.249656277e-13,0) (0.0001117973318,0) (2.541098842e-21,0) (1.467994913e-07,0) (7.105028024e-14,0) (4.480358687e-05,0) (5.317998557e-05,0) (0,0) (6.039698986e-08,0) (2.87767903e-14,0) (3.246588878e-06,0) (8.011602699e-05,0) -(0.4945189387,0) (0.307421443,0) (0.1319654046,0) (0.03941143222,0) (0.01673841645,0) (0.005001509027,0) (0.002982067969,0) (0.0008721944031,0) (0.0006739086684,0) (0.0001662005827,0) (0.000162668234,0) (2.726728507e-05,0) (3.849627959e-05,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.3147524089,0) (0.3911428714,0) (0.2057672699,0) (0.06817076837,0) (0.01624681051,0) (0.001918900616,0) (8.656155591e-06,0) (0.0003293313421,0) (0.0005165205109,0) (0.0005274892321,0) (0.000308913253,0) (0.0001921098042,0) (7.200817462e-05,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.1469209212,0) (0.001757452279,0) (0.008885391297,0) (0.0004765796032,0) (0.0003137171467,0) (3.753583099e-07,0) (3.817084e-06,0) (6.033841652e-07,0) (5.317323845e-07,0) (8.414643968e-06,0) (3.31541252e-06,0) (3.002007615e-07,0) (1.229871495e-06,0) (0.001306177527,0) (1.355168727e-09,0) (0.2503658847,0) (1.046614926e-05,0) (2.060951583e-11,0) (0.04152020624,0) (4.050576507e-07,0) (1.00843227e-12,0) (0.003778769832,0) (1.889305054e-06,0) (8.299835645e-12,0) (0.002559803502,0) (1.316604296e-15,0) (2.853709815e-10,0) (7.660087477e-05,0) (2.266554089e-16,0) (5.359854749e-09,0) (1.127557649e-07,0) (1.456075894e-15,0) (8.395718063e-08,0) (9.154156321e-06,0) (9.161877051e-08,0) (3.993706216e-16,0) (1.150818494e-07,0) (1.068890781e-15,0) (4.419176462e-08,0) (7.775554357e-06,0) (1.628929061e-17,0) (4.528323296e-06,0) (1.43185262e-05,0) (2.455969101e-13,0) (6.161678805e-07,0) (1.125366415e-06,0) (1.15944313e-15,0) (1.58315933e-07,0) (5.391837529e-07,0) (2.24968478e-15,0) (6.286898691e-07,0) (3.183188427e-06,0) (6.2883726e-18,0) (0.0002446691601,0) (8.145458932e-07,0) (5.664740933e-10,0) (0.177759353,0) (2.493664997e-18,0) (2.201408811e-06,0) (0.0003158153936,0) (8.549720567e-10,0) (0.0706465972,0) (1.058791184e-22,0) (2.464242287e-13,0) (6.094571757e-11,0) (1.707997469e-15,0) (4.38015457e-05,0) (8.131516294e-20,0) (2.311133296e-11,0) (9.174418953e-05,0) (8.403150672e-11,0) (0.001971316564,0) (5.29395592e-23,0) (1.266660794e-13,0) (7.775698928e-17,0) (6.88337889e-11,0) (2.410431746e-06,0) (1.356576205e-22,0) (5.576701781e-10,0) (1.468000911e-14,0) (6.062379565e-07,0) (3.176643229e-06,0) (-2.067951531e-24,0) (2.300661614e-12,0) (5.707138741e-16,0) (1.135038219e-09,0) (1.530804122e-07,0) (-1.178732373e-23,0) (3.081533289e-11,0) (8.947554122e-16,0) (2.296325301e-09,0) (3.899274721e-07,0) (6.749793798e-22,0) (8.755362874e-11,0) (1.48542241e-15,0) (8.808607626e-08,0) (2.190836451e-05,0) (-1.058791184e-22,0) (2.423577032e-09,0) (3.638364687e-14,0) (4.518853107e-06,0) (4.641490491e-06,0) (1.413638742e-27,0) (6.210057073e-11,0) (3.638362452e-11,0) (1.650294841e-19,0) (9.04762241e-12,0) (8.271806126e-24,0) (4.100520746e-10,0) (4.164857336e-15,0) (3.101457978e-07,0) (1.081074942e-06,0) (7.940933881e-23,0) (4.313670249e-09,0) (1.26775354e-14,0) (2.818838655e-06,0) (9.917835142e-07,0) -(0.1537404548,0) (0.003727007567,0) (0.00854296775,0) (0.0008283378013,0) (0.000249242271,0) (3.135135163e-06,0) (3.485164461e-06,0) (1.245370055e-07,0) (1.451806454e-06,0) (9.235094054e-06,0) (1.535303137e-06,0) (1.834495508e-07,0) (1.651277635e-06,0) (2.815830936e-10,0) (0.01983051592,0) (0.2311916741,0) (1.480857164e-06,0) (5.065308416e-11,0) (0.05191474862,0) (1.74172454e-07,0) (5.928976114e-13,0) (0.002321923377,0) (5.781125973e-06,0) (1.396714217e-11,0) (0.002995923626,0) (1.300580339e-15,0) (2.083846774e-09,0) (2.160554926e-05,0) (8.895745648e-08,0) (1.874301973e-14,0) (4.549221948e-07,0) (3.009999658e-15,0) (6.499753675e-08,0) (5.596904508e-06,0) (8.516512091e-16,0) (5.426835441e-08,0) (1.474190623e-07,0) (1.228211538e-15,0) (1.807091778e-07,0) (1.378205676e-05,0) (2.933157846e-14,0) (5.773281799e-06,0) (8.30249756e-06,0) (1.793970786e-07,0) (1.57524998e-14,0) (1.14196802e-07,0) (1.547102555e-15,0) (2.937426657e-07,0) (8.906479179e-07,0) (3.127361261e-15,0) (1.516806236e-06,0) (2.811236419e-06,0) (0,0) (1.511060808e-05,0) (5.607603461e-10,0) (0.1487858497,0) (0.02038732434,0) (1.734723476e-18,0) (9.734329973e-09,0) (0.0004046016186,0) (8.829540289e-10,0) (0.0787413867,0) (0,0) (1.175486027e-09,0) (3.16393186e-09,0) (1.818492629e-13,0) (0.0005493161406,0) (0,0) (1.11287863e-09,0) (2.242153709e-05,0) (5.137087983e-11,0) (0.001903470945,0) (-4.235164736e-22,0) (1.177409821e-09,0) (2.273659858e-09,0) (4.248625572e-15,0) (2.121979301e-05,0) (0,0) (1.746371504e-10,0) (3.101321166e-15,0) (2.618867638e-10,0) (3.3303246e-06,0) (-6.6174449e-24,0) (4.476698989e-11,0) (7.989091628e-15,0) (1.282889475e-07,0) (2.814187778e-07,0) (1.654361225e-24,0) (2.426502395e-12,0) (1.278136264e-16,0) (7.949778252e-10,0) (1.110717381e-07,0) (2.436173229e-11,0) (0,0) (3.526056281e-16,0) (7.3810059e-07,0) (2.697616726e-05,0) (0,0) (1.877165974e-10,0) (1.913490841e-14,0) (2.115184742e-06,0) (1.181201865e-06,0) (-1.654361225e-24,0) (6.907330169e-11,0) (1.047719175e-07,0) (7.596810143e-15,0) (7.557011361e-09,0) (1.895051636e-10,0) (0,0) (6.491569902e-15,0) (1.28432286e-06,0) (1.324891707e-06,0) (0,0) (9.739590345e-10,0) (2.829120299e-14,0) (3.141117806e-06,0) (2.187995244e-07,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.002296938444,0) (0.0004656769935,0) (-3.404442288e-05,0) (8.60557369e-05,0) (-2.195463111e-05,0) (1.021437952e-06,0) (1.052245556e-06,0) (3.19721922e-07,0) (-3.631499723e-07,0) (-8.080661741e-07,0) (1.730221396e-07,0) (-2.294551817e-08,0) (-1.671873287e-07,0) (0.008189657419,0) (5.041046806e-06,0) (-0.008342968697,0) (0.0002452856292,0) (-2.067629571e-07,0) (0.002505844645,0) (-1.362524288e-05,0) (1.28943057e-08,0) (-0.0003814274264,0) (-3.297204231e-05,0) (-4.172364306e-08,0) (0.0001791736462,0) (1.381913284e-10,0) (1.079257912e-07,0) (-3.267927222e-05,0) (-3.366221799e-11,0) (2.800914463e-07,0) (2.957483131e-08,0) (-4.691192177e-11,0) (6.280388515e-07,0) (3.585047097e-06,0) (-8.962099782e-07,0) (-4.954574338e-11,0) (9.752156065e-07,0) (3.109204061e-11,0) (3.176698282e-07,0) (-2.771203269e-06,0) (-2.22648192e-12,0) (1.653561186e-06,0) (-1.853786177e-06,0) (-4.89836296e-10,0) (1.10502967e-06,0) (-9.167977887e-07,0) (3.191879817e-11,0) (5.061688212e-07,0) (-6.78714229e-07,0) (3.355563738e-11,0) (7.856396421e-07,0) (-1.190808539e-06,0) (0,0) (-0.0009274664534,0) (-0.0002742614059,0) (4.438674186e-06,0) (-0.001474755946,0) (-8.67361738e-19,0) (-1.006015126e-05,0) (-0.002941831249,0) (-2.930994065e-06,0) (0.005259890253,0) (1.376428539e-21,0) (5.998322676e-10,0) (6.199376993e-08,0) (-1.995271809e-10,0) (6.084148142e-05,0) (5.421010862e-20,0) (-7.446672951e-11,0) (-0.0003970796515,0) (2.33129964e-07,0) (0.0003677132413,0) (5.29395592e-23,0) (4.113038732e-10,0) (-1.578850801e-11,0) (2.295141761e-08,0) (6.300650718e-06,0) (-3.176373552e-22,0) (4.941788939e-08,0) (-4.216631935e-10,0) (-3.616195343e-06,0) (5.091702812e-06,0) (3.97046694e-23,0) (-3.504778343e-09,0) (-1.048420309e-10,0) (2.359753035e-07,0) (2.499492298e-07,0) (-1.522012327e-22,0) (9.88648561e-09,0) (-1.014613753e-10,0) (-2.52638343e-07,0) (8.108630087e-07,0) (1.058791184e-22,0) (-3.46259369e-09,0) (2.113178083e-11,0) (2.345799347e-07,0) (-3.336664573e-06,0) (9.264422861e-23,0) (-3.308381734e-08,0) (-2.028902496e-10,0) (2.843321806e-06,0) (-2.094078847e-06,0) (6.203854594e-25,0) (-5.632286098e-11,0) (7.855457093e-09,0) (7.109805969e-13,0) (-7.829784988e-09,0) (-1.389663429e-22,0) (-1.617807133e-08,0) (8.400741329e-11,0) (9.173899183e-07,0) (-1.236998982e-06,0) (0,0) (-4.115909576e-08,0) (1.129540535e-10,0) (1.15856545e-06,0) (-1.384583023e-06,0) -(-0.05751293495,0) (-0.01742314575,0) (0.002807441229,0) (-0.002741260601,0) (0.0006877098011,0) (-6.313790157e-05,0) (-3.703790973e-05,0) (-1.993765262e-06,0) (1.779141841e-05,0) (1.117127821e-05,0) (-3.925466161e-06,0) (1.105928494e-06,0) (4.760820116e-06,0) (2.356370425e-06,0) (0.002086629187,0) (0.008695215087,0) (-6.2979561e-06,0) (3.741398894e-07,0) (-0.07442571239,0) (3.937534685e-07,0) (-7.848018285e-09,0) (0.008950218454,0) (-7.896863725e-06,0) (5.968412251e-08,0) (-0.002792952986,0) (-8.133735556e-11,0) (5.197317153e-08,0) (0.0004693188178,0) (-7.459501429e-07,0) (-3.500108653e-10,0) (-4.093285999e-06,0) (1.032339543e-10,0) (-9.466882665e-07,0) (-8.422440694e-05,0) (6.995807459e-11,0) (-1.632739084e-06,0) (-4.319618027e-06,0) (-2.136820204e-11,0) (9.874220973e-07,0) (7.401138147e-05,0) (1.010201071e-10,0) (-5.466525505e-06,0) (-8.034065257e-06,0) (-6.503235901e-07,0) (-1.341657236e-10,0) (-4.441394808e-07,0) (-3.383529974e-11,0) (1.834727903e-06,0) (5.4567997e-06,0) (-3.617647595e-11,0) (2.98183865e-06,0) (5.407168305e-06,0) (6.505213035e-19,0) (-3.801065212e-06,0) (-4.420846394e-06,0) (0.06307890282,0) (0.006834856211,0) (-1.734723476e-18,0) (1.2360615e-07,0) (-0.0004147197189,0) (3.245439041e-06,0) (-0.05323530859,0) (-1.084202172e-19,0) (-7.133332631e-09,0) (1.11168147e-08,0) (5.132952515e-09,0) (-0.005614192732,0) (0,0) (3.611864086e-10,0) (1.48279327e-05,0) (-1.809388448e-07,0) (0.00192530132,0) (-1.355252716e-20,0) (-1.462622461e-08,0) (-4.015748519e-08,0) (3.138645067e-10,0) (-0.0004375922108,0) (8.470329473e-22,0) (-2.062581006e-09,0) (1.526916853e-10,0) (-7.487547447e-09,0) (-6.5275208e-05,0) (0,0) (9.665570157e-10,0) (-4.759094266e-10,0) (4.428858264e-06,0) (1.003236761e-05,0) (0,0) (1.297693598e-10,0) (-3.054149145e-11,0) (7.432534774e-08,0) (9.720891838e-06,0) (2.414566489e-11,0) (8.470329473e-22,0) (-3.039500918e-12,0) (1.39543781e-06,0) (5.069545599e-05,0) (0,0) (-4.776269042e-10,0) (1.818254864e-10,0) (-9.70477885e-06,0) (-5.529115333e-06,0) (0,0) (-4.190493315e-10,0) (-1.078377038e-06,0) (-1.525802291e-10,0) (-6.801392399e-08,0) (5.154379602e-10,0) (2.117582368e-22,0) (-9.02140094e-11,0) (5.837397148e-06,0) (5.909045808e-06,0) (2.64697796e-23,0) (2.987041801e-10,0) (-1.60387982e-10,0) (3.118621718e-06,0) (1.889669192e-07,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.05227305888,0) (-0.01059774195,0) (0.0007747731012,0) (-0.0019584315,0) (0.0004996371268,0) (-2.324558865e-05,0) (-2.394669917e-05,0) (-7.276138765e-06,0) (8.264461737e-06,0) (1.838973561e-05,0) (-3.937587669e-06,0) (5.221874471e-07,0) (3.804800733e-06,0) (0.003294115467,0) (-5.03865326e-06,0) (8.521411615e-05,0) (8.201923211e-05,0) (2.067578889e-07,0) (-0.06268694534,0) (-4.461298473e-06,0) (-1.290932257e-08,0) (0.008994674824,0) (-1.566384246e-05,0) (4.177343488e-08,0) (-0.003310642092,0) (-1.39836719e-10,0) (4.550215342e-08,0) (0.0007412007475,0) (3.371897556e-11,0) (-2.135755559e-07,0) (-6.832987415e-06,0) (4.698765009e-11,0) (-6.359455323e-07,0) (-9.524322186e-05,0) (-1.168207208e-06,0) (4.963625375e-11,0) (-6.28702053e-07,0) (-3.114294568e-11,0) (4.478956051e-07,0) (5.538823034e-05,0) (2.230680666e-12,0) (1.774135912e-06,0) (2.782574797e-06,0) (4.907366656e-10,0) (-1.097731374e-06,0) (-3.17533837e-06,0) (-3.19703626e-11,0) (1.108827398e-06,0) (2.817216516e-06,0) (-3.361210006e-11,0) (1.86095787e-06,0) (7.359028335e-06,0) (-4.33680869e-19,0) (-0.0002852827998,0) (-0.0001093982521,0) (-4.438290702e-06,0) (0.0612087474,0) (-1.084202172e-18,0) (-5.672657459e-06,0) (-0.001412428299,0) (2.934551322e-06,0) (-0.05104289932,0) (5.844527336e-20,0) (2.315741605e-10,0) (2.280737082e-08,0) (1.99657454e-10,0) (-0.001386055972,0) (2.032879073e-20,0) (-2.218079147e-11,0) (-0.0001285817751,0) (-2.334044471e-07,0) (0.000791823636,0) (2.435219723e-21,0) (1.565366177e-10,0) (1.581342029e-11,0) (4.980086481e-09,0) (-0.0001439248567,0) (-5.558653716e-22,0) (1.452916396e-08,0) (4.223110462e-10,0) (-7.100395277e-06,0) (-2.760876911e-05,0) (-2.415367389e-22,0) (-1.566034151e-09,0) (1.050286112e-10,0) (1.196885357e-08,0) (-1.098689074e-05,0) (3.441071348e-22,0) (2.91435589e-09,0) (1.016381852e-10,0) (-1.778376473e-07,0) (-1.275177812e-05,0) (-2.64697796e-22,0) (-1.096373539e-09,0) (-2.116571378e-11,0) (3.816288677e-07,0) (7.029415091e-05,0) (2.067951531e-22,0) (-1.759502375e-08,0) (2.032173328e-10,0) (-7.041690834e-06,0) (-9.234442056e-06,0) (2.714186385e-25,0) (3.778730592e-10,0) (3.371220318e-09,0) (-7.123309402e-13,0) (-3.067020323e-09,0) (9.264422861e-23,0) (-4.169374205e-09,0) (-8.414027643e-11,0) (2.098761966e-06,0) (5.54532595e-06,0) (-9.926167351e-23,0) (-9.442255645e-09,0) (-1.131400601e-10,0) (5.032227385e-06,0) (1.055086583e-06,0) -(-0.01870392239,0) (-0.005666223889,0) (0.0009130148356,0) (-0.0008914920716,0) (0.0002236517882,0) (-2.053323155e-05,0) (-1.204518931e-05,0) (-6.483972824e-07,0) (5.785990742e-06,0) (3.633038737e-06,0) (-1.276610461e-06,0) (3.596617133e-07,0) (1.548277966e-06,0) (-2.360738584e-06,0) (0.03012600167,0) (-0.02661648463,0) (-0.0001013170272,0) (-3.750412402e-07,0) (-0.02410440258,0) (-6.473083976e-06,0) (7.86788762e-09,0) (0.002917313174,0) (-6.209909928e-05,0) (-5.982724624e-08,0) (-0.0008486929007,0) (8.153315783e-11,0) (1.767015122e-07,0) (0.0001524684146,0) (8.386966911e-07,0) (3.506062313e-10,0) (-2.412940959e-06,0) (-1.03489508e-10,0) (4.325370202e-07,0) (-2.813110036e-05,0) (-7.01336135e-11,0) (-1.272009523e-06,0) (-6.63678222e-07,0) (2.141801211e-11,0) (7.20810683e-07,0) (2.366970548e-05,0) (-1.012439589e-10,0) (-8.825188043e-08,0) (-4.302174199e-06,0) (2.262857906e-07,0) (1.343906619e-10,0) (-5.823968285e-07,0) (3.391481584e-11,0) (1.224153722e-06,0) (1.147096904e-06,0) (3.625524393e-11,0) (1.96618936e-06,0) (7.619721113e-07,0) (1.734723476e-18,0) (-0.0002399783128,0) (4.429670749e-06,0) (0.05862781591,0) (-0.03565811638,0) (0,0) (3.134980355e-06,0) (-0.003476641184,0) (-3.253025745e-06,0) (-0.01396980218,0) (-2.710505431e-20,0) (1.136629777e-07,0) (1.037074105e-06,0) (-5.146353529e-09,0) (-0.00182694799,0) (2.710505431e-20,0) (-1.794104248e-08,0) (-0.0001795896175,0) (1.81405844e-07,0) (0.0008103216112,0) (3.388131789e-21,0) (2.246534061e-07,0) (1.460111013e-07,0) (-3.147057971e-10,0) (-0.0001426984983,0) (0,0) (3.165906529e-08,0) (-1.530328056e-10,0) (-5.880359132e-08,0) (-2.120406882e-05,0) (5.29395592e-23,0) (-1.426401455e-08,0) (4.771886505e-10,0) (-9.224878544e-07,0) (5.639404919e-06,0) (0,0) (-1.923071812e-09,0) (3.061682836e-11,0) (1.365337013e-07,0) (3.050917587e-06,0) (-5.065341759e-10,0) (4.235164736e-22,0) (3.046264775e-12,0) (6.475738678e-07,0) (1.629354359e-05,0) (0,0) (9.109682087e-09,0) (-1.822953378e-10,0) (-1.485812014e-06,0) (-3.477463597e-06,0) (0,0) (6.655951109e-09,0) (-5.74589738e-07,0) (1.527580882e-10,0) (1.947745163e-07,0) (-7.857037501e-09,0) (2.117582368e-22,0) (9.043149751e-11,0) (3.224418723e-06,0) (6.035756443e-07,0) (-1.058791184e-22,0) (-1.558553604e-08,0) (1.607444256e-10,0) (1.658167214e-06,0) (-5.670284416e-07,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.0411321873,0) (-0.008339062533,0) (0.0006096469769,0) (-0.001541034196,0) (0.0003931502828,0) (-1.829129434e-05,0) (-1.884297833e-05,0) (-5.725387206e-06,0) (6.503070519e-06,0) (1.447036132e-05,0) (-3.098376047e-06,0) (4.108944902e-07,0) (2.993889774e-06,0) (-0.003692931319,0) (6.684943117e-06,0) (0.006341380197,0) (-0.0001230406465,0) (-2.74369599e-07,0) (-0.04913856285,0) (6.893948142e-06,0) (1.71308782e-08,0) (0.007067222778,0) (1.30112031e-05,0) (-5.544016143e-08,0) (-0.002630298682,0) (1.854554824e-10,0) (-4.611068783e-08,0) (0.0005833114635,0) (-4.475959074e-11,0) (-3.716938248e-07,0) (-5.172975408e-06,0) (-6.23653338e-11,0) (-9.518968852e-07,0) (-7.449260097e-05,0) (-2.062491615e-07,0) (-6.585442473e-11,0) (-1.207582855e-06,0) (4.133017006e-11,0) (9.861243906e-08,0) (4.383718543e-05,0) (-2.959197357e-12,0) (9.323612458e-08,0) (3.492314996e-06,0) (-6.522504806e-10,0) (-1.657548191e-06,0) (-1.703770788e-06,0) (4.242558686e-11,0) (4.549582158e-07,0) (2.634266796e-06,0) (4.460116865e-11,0) (8.116553402e-07,0) (6.443219229e-06,0) (-3.035766083e-18,0) (0.0004829576041,0) (0.0001242870854,0) (5.888692216e-06,0) (0.04723623807,0) (-1.138412281e-18,0) (3.294780257e-06,0) (0.001149751687,0) (-3.89436725e-06,0) (-0.04242691604,0) (-1.694065895e-20,0) (-2.768655948e-10,0) (-2.949608241e-08,0) (-2.64989249e-10,0) (-0.001090599805,0) (3.726944968e-20,0) (3.933175976e-11,0) (0.0002019770285,0) (3.09697559e-07,0) (0.0003194157652,0) (-2.541098842e-21,0) (-1.91547415e-10,0) (-2.098780888e-11,0) (-1.35141104e-08,0) (-0.0001132326063,0) (5.823351512e-22,0) (-2.624027897e-08,0) (-5.605204444e-10,0) (-2.631350537e-06,0) (-2.46417407e-05,0) (2.514629062e-22,0) (1.457134286e-09,0) (-1.394145316e-10,0) (-1.684666273e-07,0) (-8.469855444e-06,0) (2.117582368e-22,0) (-5.243764032e-09,0) (-1.348940671e-10,0) (5.599469354e-08,0) (-1.022219073e-05,0) (1.694065895e-21,0) (1.779518342e-09,0) (2.808845119e-11,0) (1.111762798e-07,0) (5.549890313e-05,0) (-2.249931266e-22,0) (1.163451117e-08,0) (-2.697230875e-10,0) (-7.446974375e-06,0) (-5.385302829e-06,0) (-1.550963649e-25,0) (3.272970404e-10,0) (-3.370708344e-09,0) (9.449748969e-13,0) (3.578609755e-09,0) (6.948317145e-23,0) (9.0329589e-09,0) (1.116684355e-10,0) (8.917771118e-07,0) (5.110647247e-06,0) (5.128519798e-23,0) (2.385951371e-08,0) (1.501339326e-10,0) (2.921382097e-06,0) (1.83702408e-06,0) -(0.02917389264,0) (0.008838028944,0) (-0.001424096841,0) (0.001390526193,0) (-0.0003488462539,0) (3.20272016e-05,0) (1.878777362e-05,0) (1.011353251e-06,0) (-9.024838172e-06,0) (-5.66671952e-06,0) (1.99122386e-06,0) (-5.609910046e-07,0) (-2.414963783e-06,0) (3.131764434e-06,0) (0.02113859613,0) (-0.02661209925,0) (-7.166687639e-05,0) (4.97322524e-07,0) (0.03782720766,0) (-5.177796953e-06,0) (-1.043334764e-08,0) (-0.004535076858,0) (-4.088571921e-05,0) (7.933896824e-08,0) (0.001461529417,0) (-1.081506332e-10,0) (9.410884509e-08,0) (-0.0002381860178,0) (1.194202806e-06,0) (-4.647773923e-10,0) (1.261180451e-06,0) (1.372863619e-10,0) (1.038364612e-06,0) (4.216515965e-05,0) (9.30177865e-11,0) (2.694383648e-07,0) (2.749813509e-06,0) (-2.841116772e-11,0) (-1.995626923e-07,0) (-3.784413631e-05,0) (1.343156087e-10,0) (4.046369427e-06,0) (2.801726811e-06,0) (6.603081789e-07,0) (-1.781739592e-10,0) (-1.048868705e-07,0) (-4.49845343e-11,0) (-4.575800789e-07,0) (-3.241043012e-06,0) (-4.809009413e-11,0) (-7.612857105e-07,0) (-3.494038197e-06,0) (0,0) (-0.0001781248725,0) (-5.875863018e-06,0) (-0.00325358254,0) (-0.03202255516,0) (-4.33680869e-19,0) (2.27129912e-06,0) (-0.002309571161,0) (4.314038673e-06,0) (0.02951567944,0) (-5.421010862e-20,0) (9.109152453e-08,0) (7.736946357e-07,0) (6.824590353e-09,0) (0.002846967579,0) (0,0) (-1.380258363e-08,0) (-0.00014659622,0) (-2.405362853e-07,0) (-0.000837203801,0) (0,0) (1.804379704e-07,0) (1.404322281e-07,0) (4.172190712e-10,0) (0.0002216784642,0) (-8.470329473e-22,0) (2.542909593e-08,0) (2.030650731e-10,0) (-3.866749846e-08,0) (3.31291695e-05,0) (0,0) (-1.148514282e-08,0) (-6.330232694e-10,0) (-4.027290359e-06,0) (-3.296411943e-06,0) (0,0) (-1.548017159e-09,0) (-4.061005464e-11,0) (4.700979461e-08,0) (-5.014173148e-06,0) (-4.001910504e-10,0) (0,0) (-4.040786575e-12,0) (-5.617850981e-07,0) (-2.586134062e-05,0) (1.058791184e-22,0) (7.229839581e-09,0) (2.418124915e-10,0) (6.181658491e-06,0) (1.538533616e-06,0) (-2.64697796e-23,0) (5.335196032e-09,0) (3.786615396e-07,0) (-2.026498209e-10,0) (1.980117903e-07,0) (-6.313576244e-09,0) (-2.117582368e-22,0) (-1.199476441e-10,0) (-1.961240248e-06,0) (-3.991018329e-06,0) (-2.117582368e-22,0) (-1.197908084e-08,0) (-2.132048396e-10,0) (-1.09602752e-06,0) (-5.6965094e-07,0) -(0.2731656004,0) (0.01615280688,0) (-0.02892567571,0) (-0.00681892694,0) (0.00311081643,0) (-0.0001242414384,0) (9.142358452e-06,0) (0.0001499983368,0) (-0.0001504484689,0) (9.162783375e-05,0) (-7.145343949e-05,0) (6.119624794e-05,0) (-3.277313972e-05,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.2695462447,0) (0.02324389201,0) (-0.03424272561,0) (-0.004333899483,0) (0.002291534039,0) (4.332848919e-05,0) (0.0001066902242,0) (-2.294053818e-05,0) (1.892984583e-05,0) (-3.739677434e-05,0) (2.322309841e-05,0) (-2.861059199e-06,0) (6.880804962e-06,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.1208306479,0) (-0.009094799051,0) (-0.002843835608,0) (4.385357727e-05,0) (0.000101455379,0) (-2.497568383e-05,0) (2.882303202e-05,0) (4.591201175e-06,0) (1.25522063e-05,0) (2.574477926e-05,0) (9.479225358e-06,0) (3.178405029e-06,0) (8.85371498e-06,0) (1.738623898e-10,0) (-0.03001102387,0) (0.1997440824,0) (-0.0001221715915,0) (-1.474070406e-10,0) (-0.02386352647,0) (-3.161081699e-06,0) (8.892664166e-13,0) (-0.0003782332269,0) (5.069147332e-07,0) (1.658455888e-13,0) (1.114472307e-05,0) (-1.500172006e-14,0) (-4.573358943e-07,0) (5.007857078e-05,0) (2.271380542e-06,0) (1.920933975e-13,0) (-1.440347086e-05,0) (3.522406586e-14,0) (-3.493952407e-06,0) (4.251167502e-05,0) (1.184301307e-14,0) (8.749326325e-07,0) (-6.649639108e-06,0) (-7.916366537e-15,0) (-3.478571729e-06,0) (4.038721491e-05,0) (5.133587681e-14,0) (-1.83560613e-06,0) (3.443235877e-05,0) (6.48529231e-07,0) (4.700311397e-15,0) (3.713046695e-06,0) (-8.486490438e-15,0) (-1.351843834e-06,0) (9.719683219e-06,0) (-1.014688338e-14,0) (-1.550010209e-06,0) (1.674276403e-05,0) (-1.734723476e-18,0) (-0.000377473387,0) (-9.424696266e-12,0) (-0.008719428334,0) (0.06301289739,0) (0,0) (4.987671827e-06,0) (-0.00143187811,0) (-4.141268852e-10,0) (-0.005892254741,0) (1.694065895e-21,0) (1.859842766e-07,0) (4.229671091e-07,0) (-6.138140965e-13,0) (-6.644558929e-05,0) (0,0) (-2.859798928e-08,0) (-8.511178364e-06,0) (1.891527865e-12,0) (-1.727510638e-05,0) (0,0) (3.662671398e-07,0) (6.488075772e-07,0) (-3.437640456e-13,0) (-2.522670586e-05,0) (0,0) (5.164395866e-08,0) (2.409182199e-13,0) (-3.633301909e-07,0) (1.293020884e-05,0) (0,0) (-2.328816091e-08,0) (-6.937242073e-14,0) (4.52940866e-06,0) (-8.289612776e-06,0) (-5.29395592e-23,0) (-3.139926191e-09,0) (-5.790193031e-15,0) (-4.039157833e-07,0) (1.915478012e-06,0) (-8.160659869e-10,0) (0,0) (-1.266989765e-15,0) (-9.077704595e-06,0) (2.704664962e-05,0) (0,0) (1.483552381e-08,0) (5.416556893e-14,0) (-5.200987241e-06,0) (1.074630952e-05,0) (0,0) (1.08671901e-08,0) (-1.266292565e-07,0) (-3.289808167e-14,0) (-9.136562887e-07,0) (-1.278080324e-08,0) (-2.117582368e-22,0) (-2.091689037e-14,0) (-5.329587217e-06,0) (9.978394523e-06,0) (6.352747104e-22,0) (-2.480045938e-08,0) (-3.214682481e-14,0) (6.229744764e-07,0) (4.252964659e-06,0) -(-0.1395541466,-0.2417148723) (-0.01357903408,-0.02351957694) (0.01423099906,0.02464881341) (0.004074510377,0.007057258989) (-0.001425660096,-0.00246931572) (1.975203663e-05,3.4211531e-05) (-5.71653615e-06,-9.901331055e-06) (-7.743450601e-05,-0.0001341204987) (6.633973277e-05,0.0001149037877) (-4.268839373e-05,-7.393846683e-05) (3.706007127e-05,6.418992637e-05) (-2.936722707e-05,-5.086552936e-05) (1.515866188e-05,2.625557255e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.05906019127,-0.102295252) (0.003122660326,0.005408606339) (0.001450134843,0.002511707226) (-1.663179087e-05,-2.88071068e-05) (-5.691193611e-05,-9.85743649e-05) (4.320980191e-06,7.484157229e-06) (-1.508217198e-05,-2.612308816e-05) (-5.052939195e-06,-8.751947413e-06) (-3.798238809e-06,-6.578742597e-06) (-1.228729791e-05,-2.128222427e-05) (-6.964894952e-06,-1.206355193e-05) (-2.032950537e-06,-3.521173619e-06) (-3.820457386e-06,-6.6172263e-06) (0.005175592884,0.008964389834) (5.304917151e-09,9.188386021e-09) (-0.09224965312,-0.1597810862) (-0.0001541485888,-0.0002669931877) (1.707308574e-10,2.957145206e-10) (0.01114537494,0.01930435567) (2.347871873e-06,4.066633374e-06) (-7.561107841e-13,-1.309622251e-12) (0.000246935527,0.000427704879) (-1.387241408e-07,-2.402772602e-07) (-6.941934646e-14,-1.20237835e-13) (-5.376045784e-06,-9.311584441e-06) (-7.712042081e-13,-1.335764869e-12) (8.292123503e-08,1.436237921e-07) (-4.795061678e-05,-8.305290452e-05) (-4.456588466e-15,-7.71903793e-15) (-4.108193539e-07,-7.115599937e-07) (3.307487654e-06,5.728736662e-06) (2.981602561e-15,5.164290423e-15) (1.947461171e-06,3.373101694e-06) (-2.748230891e-05,-4.760075535e-05) (-1.069619489e-08,-1.8526353e-08) (7.219598505e-15,1.25047114e-14) (3.005871758e-06,5.206322606e-06) (-2.336955431e-15,-4.047724815e-15) (8.74177065e-07,1.514119091e-06) (-1.502558212e-05,-2.602507165e-05) (1.117880202e-16,1.936207203e-16) (2.783083705e-06,4.820442378e-06) (-2.210803363e-05,-3.82922375e-05) (1.37753808e-13,2.385965945e-13) (4.150521297e-07,7.188913765e-07) (-5.857532454e-06,-1.014554382e-05) (-2.638813198e-15,-4.570558867e-15) (4.927792809e-07,8.535187514e-07) (-3.782800919e-06,-6.552003387e-06) (-2.398416777e-15,-4.154179493e-15) (1.233592183e-06,2.136644337e-06) (-8.538607507e-06,-1.478930203e-05) (-4.33680869e-19,5.854691731e-18) (0.0007200330219,0.001247133777) (-0.0001878309588,-0.0003253327639) (3.990106787e-09,6.911067684e-09) (-0.03195096622,-0.05534069685) (4.878909776e-19,7.047314121e-19) (-2.330564706e-05,-4.036656481e-05) (0.0007153114482,0.001238955771) (2.662361385e-10,4.611345193e-10) (0.003245375324,0.005621154951) (-2.117582368e-22,8.470329473e-22) (6.095239344e-10,1.055726423e-09) (-3.44128403e-08,-5.960478783e-08) (7.464270367e-14,1.292849566e-13) (1.059566382e-05,1.835222807e-05) (-8.470329473e-22,6.352747104e-22) (-1.888476037e-09,-3.270936446e-09) (8.862191923e-06,1.534976668e-05) (-1.368859682e-12,-2.370934517e-12) (6.318959677e-06,1.094475921e-05) (-7.940933881e-22,-3.176373552e-22) (7.446402637e-11,1.28975477e-10) (-1.079534703e-15,-1.869809137e-15) (-7.090290898e-08,-1.228074408e-07) (4.706497865e-06,8.151893428e-06) (-3.705769144e-22,1.217609862e-21) (1.33340407e-08,2.309523596e-08) (-4.125560452e-14,-7.145680375e-14) (6.800887061e-06,1.177948193e-05) (-1.445470366e-05,-2.503628115e-05) (9.926167351e-23,-5.29395592e-23) (1.436655647e-09,2.488360574e-09) (2.776996631e-14,4.809899276e-14) (3.119865907e-07,5.403766263e-07) (-1.632104712e-06,-2.826888284e-06) (0,-2.514629062e-22) (-4.064786482e-09,-7.040416709e-09) (2.25289788e-14,3.902133579e-14) (-3.398791457e-07,-5.886879487e-07) (1.948638818e-06,3.375141438e-06) (1.111730743e-21,2.117582368e-22) (2.900715708e-10,5.024186985e-10) (-8.107034924e-16,-1.404180727e-15) (1.611039988e-06,2.790403113e-06) (-1.070561973e-05,-1.854267731e-05) (-1.852884572e-22,5.29395592e-23) (6.102102725e-09,1.056915195e-08) (1.654781311e-14,2.866165354e-14) (4.947043268e-06,8.568530288e-06) (-1.021949476e-05,-1.770068415e-05) (9.305781891e-25,2.688336991e-24) (4.489881054e-12,7.776702106e-12) (-2.191745498e-09,-3.79621456e-09) (-9.634049096e-17,-1.668666247e-16) (-1.590204424e-08,-2.754314857e-08) (-1.588186776e-22,-3.705769144e-22) (3.879285887e-09,6.719120253e-09) (-8.601079384e-15,-1.489750658e-14) (1.863843086e-06,3.228270922e-06) (-3.791159118e-06,-6.566480212e-06) (-6.6174449e-23,1.32348898e-22) (8.070512659e-09,1.397853797e-08) (-9.550114421e-15,-1.654128376e-14) (1.512581421e-06,2.619867872e-06) (-4.456953971e-06,-7.719670724e-06) -(-0.1378654839,-0.2387900227) (-0.0169245535,-0.02931418655) (0.0167882116,0.02907803547) (0.002856832998,0.004948179901) (-0.001021264037,-0.001768881199) (-6.261071557e-05,-0.0001084449405) (-5.097302548e-05,-8.828786994e-05) (5.211057454e-06,9.025816272e-06) (-1.563957284e-05,-2.708853477e-05) (1.958875962e-05,3.392872691e-05) (-7.901662008e-06,-1.368608006e-05) (1.11827671e-06,1.936912078e-06) (-3.986478569e-06,-6.904783425e-06) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.002296938444,0) (0.0004656769935,0) (-3.404442288e-05,0) (8.60557369e-05,0) (-2.195463111e-05,0) (1.021437952e-06,0) (1.052245556e-06,0) (3.19721922e-07,0) (-3.631499723e-07,0) (-8.080661741e-07,0) (1.730221396e-07,0) (-2.294551817e-08,0) (-1.671873287e-07,0) (0.008189657419,0) (5.041046806e-06,0) (-0.008342968697,0) (0.0002452856292,0) (-2.067629571e-07,0) (0.002505844645,0) (-1.362524288e-05,0) (1.28943057e-08,0) (-0.0003814274264,0) (-3.297204231e-05,0) (-4.172364306e-08,0) (0.0001791736462,0) (1.381913284e-10,0) (1.079257912e-07,0) (-3.267927222e-05,0) (-3.366221799e-11,0) (2.800914463e-07,0) (2.957483131e-08,0) (-4.691192177e-11,0) (6.280388515e-07,0) (3.585047097e-06,0) (-8.962099782e-07,0) (-4.954574338e-11,0) (9.752156065e-07,0) (3.109204061e-11,0) (3.176698282e-07,0) (-2.771203269e-06,0) (-2.22648192e-12,0) (1.653561186e-06,0) (-1.853786177e-06,0) (-4.89836296e-10,0) (1.10502967e-06,0) (-9.167977887e-07,0) (3.191879817e-11,0) (5.061688212e-07,0) (-6.78714229e-07,0) (3.355563738e-11,0) (7.856396421e-07,0) (-1.190808539e-06,0) (6.505213035e-19,0) (-0.0009274664534,0) (-0.0002742614059,0) (4.438674186e-06,0) (-0.001474755946,0) (-1.084202172e-19,0) (-1.006015126e-05,0) (-0.002941831249,0) (-2.930994065e-06,0) (0.005259890253,0) (1.799945013e-21,0) (5.998322676e-10,0) (6.199376993e-08,0) (-1.995271809e-10,0) (6.084148142e-05,0) (5.082197684e-20,0) (-7.44667295e-11,0) (-0.0003970796515,0) (2.33129964e-07,0) (0.0003677132413,0) (1.98523347e-23,0) (4.113038732e-10,0) (-1.578850801e-11,0) (2.295141761e-08,0) (6.300650718e-06,0) (-1.588186776e-22,0) (4.941788939e-08,0) (-4.216631935e-10,0) (-3.616195343e-06,0) (5.091702812e-06,0) (5.95570041e-23,0) (-3.504778343e-09,0) (-1.048420309e-10,0) (2.359753035e-07,0) (2.499492298e-07,0) (-1.058791184e-22,0) (9.88648561e-09,0) (-1.014613753e-10,0) (-2.52638343e-07,0) (8.108630087e-07,0) (1.32348898e-22,0) (-3.46259369e-09,0) (2.113178083e-11,0) (2.345799347e-07,0) (-3.336664573e-06,0) (5.29395592e-23,0) (-3.308381734e-08,0) (-2.028902496e-10,0) (2.843321806e-06,0) (-2.094078847e-06,0) (3.101927297e-25,0) (-5.632286098e-11,0) (7.855457093e-09,0) (7.109805969e-13,0) (-7.829784988e-09,0) (-5.95570041e-23,0) (-1.617807133e-08,0) (8.400741329e-11,0) (9.173899183e-07,0) (-1.236998982e-06,0) (5.29395592e-23,0) (-4.115909576e-08,0) (1.129540535e-10,0) (1.15856545e-06,0) (-1.384583023e-06,0) -(-0.05751293495,0) (-0.01742314575,0) (0.002807441229,0) (-0.002741260601,0) (0.0006877098011,0) (-6.313790157e-05,0) (-3.703790973e-05,0) (-1.993765262e-06,0) (1.779141841e-05,0) (1.117127821e-05,0) (-3.925466161e-06,0) (1.105928494e-06,0) (4.760820116e-06,0) (2.356370425e-06,0) (0.002086629187,0) (0.008695215087,0) (-6.2979561e-06,0) (3.741398894e-07,0) (-0.07442571239,0) (3.937534685e-07,0) (-7.848018285e-09,0) (0.008950218454,0) (-7.896863725e-06,0) (5.968412251e-08,0) (-0.002792952986,0) (-8.133735556e-11,0) (5.197317153e-08,0) (0.0004693188178,0) (-7.459501429e-07,0) (-3.500108653e-10,0) (-4.093285999e-06,0) (1.032339543e-10,0) (-9.466882665e-07,0) (-8.422440694e-05,0) (6.995807459e-11,0) (-1.632739084e-06,0) (-4.319618027e-06,0) (-2.136820204e-11,0) (9.874220973e-07,0) (7.401138147e-05,0) (1.010201071e-10,0) (-5.466525505e-06,0) (-8.034065257e-06,0) (-6.503235901e-07,0) (-1.341657236e-10,0) (-4.441394808e-07,0) (-3.383529974e-11,0) (1.834727903e-06,0) (5.4567997e-06,0) (-3.617647595e-11,0) (2.98183865e-06,0) (5.407168305e-06,0) (0,0) (-3.801065212e-06,0) (-4.420846394e-06,0) (0.06307890282,0) (0.006834856211,0) (-1.734723476e-18,0) (1.2360615e-07,0) (-0.0004147197189,0) (3.245439041e-06,0) (-0.05323530859,0) (-1.084202172e-19,0) (-7.133332631e-09,0) (1.11168147e-08,0) (5.132952515e-09,0) (-0.005614192732,0) (-1.355252716e-20,0) (3.611864086e-10,0) (1.48279327e-05,0) (-1.809388448e-07,0) (0.00192530132,0) (-6.776263578e-21,0) (-1.462622461e-08,0) (-4.015748519e-08,0) (3.138645067e-10,0) (-0.0004375922108,0) (8.470329473e-22,0) (-2.062581006e-09,0) (1.526916853e-10,0) (-7.487547447e-09,0) (-6.5275208e-05,0) (-4.235164736e-22,0) (9.665570157e-10,0) (-4.759094266e-10,0) (4.428858264e-06,0) (1.003236761e-05,0) (2.117582368e-22,0) (1.297693598e-10,0) (-3.054149145e-11,0) (7.432534774e-08,0) (9.720891838e-06,0) (2.414566489e-11,0) (8.470329473e-22,0) (-3.039500918e-12,0) (1.39543781e-06,0) (5.069545599e-05,0) (0,0) (-4.776269042e-10,0) (1.818254864e-10,0) (-9.70477885e-06,0) (-5.529115333e-06,0) (0,0) (-4.190493315e-10,0) (-1.078377038e-06,0) (-1.525802291e-10,0) (-6.801392399e-08,0) (5.154379602e-10,0) (2.117582368e-22,0) (-9.02140094e-11,0) (5.837397148e-06,0) (5.909045808e-06,0) (2.64697796e-23,0) (2.987041801e-10,0) (-1.60387982e-10,0) (3.118621718e-06,0) (1.889669192e-07,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0.04586770644,0) (0.1295753448,0) (0.0004442131108,0) (0.1967622424,0) (0.0001704511524,0) (0.07116101842,0) (0.01342434892,0) (0.1479153603,0) (0.05829558339,0) (0.002881188799,0) (0.0986772665,0) (0.03669568318,0) (0.0583789555,0) (0.004863627082,0) (0.02285094543,0) (0.01871025158,0) (0.01720002272,0) (0.0129751607,0) (0.01950909261,0) (0.002216861756,0) (0.007850079801,0) (0.0006684007036,0) (0.01106999276,0) (0.004241350104,0) (0.006378882393,0) (0.0004382569924,0) (0.00246318523,0) (0.0002443597394,0) (0.003066181956,0) (0.001196173181,0) (0.001717101805,0) (2.637892713e-05,0) (0.0006299645073,0) (1.244860412e-05,0) (0.0006474759855,0) (0.0002384489065,0) (0.000314514928,0) (9.546434388e-07,0) (0.0001139889123,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(3.590997234e-05,0) (0.0001233917216,0) (1.30441383e-07,0) (1.553904071e-05,0) (1.536434435e-06,0) (2.779572112e-06,0) (2.900697787e-07,0) (1.694146338e-07,0) (2.480155548e-07,0) (7.759935467e-08,0) (9.02954327e-09,0) (1.753815685e-09,0) (2.272725483e-08,0) (0.05134867755,0) (0.01875202135,0) (0.000278013623,0) (0.005748536394,0) (0.00207432931,0) (0.0001512337715,0) (0.0004583230146,0) (0.0001648728595,0) (3.850112287e-05,0) (0.0005754261716,0) (0.0002097466075,0) (1.254127337e-05,0) (1.450462071e-05,0) (4.081696167e-05,0) (1.394154879e-05,0) (4.99941714e-06,0) (1.463681797e-05,0) (7.757214435e-09,0) (1.511410508e-06,0) (4.698023398e-06,0) (1.404013897e-06,0) (8.766678713e-06,0) (6.146623103e-06,0) (8.264078866e-06,0) (9.044095585e-07,0) (2.283550353e-06,0) (9.876553109e-07,0) (3.043249266e-07,0) (6.038139103e-07,0) (2.400053708e-07,0) (9.769650476e-07,0) (1.981749796e-06,0) (7.468840143e-07,0) (8.787060028e-07,0) (1.618326537e-06,0) (8.543525323e-07,0) (5.00506041e-07,0) (9.817712635e-07,0) (4.454731505e-07,0) (3.469446952e-18,0) (0.003515743553,0) (0.09234509611,0) (0.03477975199,0) (1.223510922e-05,0) (4.33680869e-19,0) (4.597357965e-05,0) (0.02740325923,0) (0.01004796136,0) (0.0003916175239,0) (1.694065895e-21,0) (1.460078625e-06,0) (6.30598451e-05,0) (2.330863833e-05,0) (8.451039346e-05,0) (2.710505431e-20,0) (2.399382941e-10,0) (0.001718607472,0) (0.0006467762177,0) (6.859021545e-05,0) (1.482307658e-21,0) (1.335565741e-06,0) (3.205846614e-06,0) (7.65274698e-06,0) (1.646933149e-05,0) (-8.470329473e-22,0) (4.379161533e-06,0) (1.211169872e-05,0) (2.157052131e-05,0) (8.161268252e-06,0) (0,0) (5.33910383e-06,0) (1.925982866e-05,0) (4.905944391e-05,0) (4.081163393e-07,0) (-8.470329473e-22,0) (3.171881935e-06,0) (1.1505279e-05,0) (2.779490012e-05,0) (1.68620799e-06,0) (1.32348898e-23,0) (1.369395562e-07,0) (3.006229585e-07,0) (6.24704245e-07,0) (5.081771609e-07,0) (0,0) (4.516212835e-07,0) (1.131399868e-06,0) (1.789055475e-06,0) (9.447754395e-07,0) (2.117582368e-22,0) (5.10826975e-11,0) (1.696043397e-06,0) (3.063049089e-06,0) (6.775872177e-06,0) (1.058791184e-22,0) (6.382847646e-07,0) (1.694474736e-06,0) (2.713576222e-06,0) (1.415412032e-06,0) (1.058791184e-22,0) (3.927215262e-07,0) (1.006395786e-06,0) (4.761797554e-07,0) (1.932952223e-06,0) -(0.02151507676,0) (0.08145033313,0) (0.0009225981511,0) (0.009071793741,0) (0.001897530337,0) (0.001271522409,0) (0.000393613206,0) (3.191902604e-05,0) (0.0002180280768,0) (1.351339316e-05,0) (1.003663981e-05,0) (6.66710727e-06,0) (1.372598266e-05,0) (0.01971880285,0) (0.0002195616787,0) (0.0003270306584,0) (2.678465689e-05,0) (0.002763516793,0) (0.106697746,0) (8.901625396e-07,0) (0.0001038820182,0) (0.0345000232,0) (1.0786905e-05,0) (0.0002550410404,0) (0.002603733392,0) (5.086780754e-06,0) (1.296261603e-06,0) (0.01019461019,0) (6.255143051e-06,0) (6.536172276e-06,0) (3.683045246e-05,0) (3.540615072e-06,0) (1.378850213e-05,0) (0.0012674418,0) (5.746639196e-06,0) (4.91232311e-05,0) (0.000126571826,0) (3.717599159e-07,0) (5.395422689e-06,0) (0.0003974504446,0) (3.479206662e-07,0) (5.176068333e-06,0) (7.774311777e-06,0) (2.357456293e-06,0) (1.1427038e-06,0) (1.727367798e-06,0) (7.399816442e-07,0) (1.145978052e-05,0) (3.343258584e-05,0) (4.18479744e-07,0) (5.861896876e-06,0) (1.04002171e-05,0) (-5.421010862e-20,0) (9.561558787e-07,0) (0.03485246954,0) (0.02674278495,0) (0.002291387465,0) (0,0) (1.569546168e-06,0) (0.0004250908481,0) (0.01192913133,0) (0.03599121376,0) (-8.67361738e-19,0) (4.328799598e-08,0) (3.906012346e-08,0) (0.0001448848612,0) (0.05737890751,0) (0,0) (1.172235841e-10,0) (9.806088991e-06,0) (0.0006373039673,0) (0.001947382062,0) (0,0) (1.816924258e-07,0) (7.09263354e-07,0) (2.318653812e-05,0) (0.009023977889,0) (0,0) (2.436045478e-08,0) (7.517683295e-06,0) (2.140748389e-07,0) (0.001279410655,0) (0,0) (2.086878003e-08,0) (2.83498791e-05,0) (0.0001528953655,0) (0.0003576463545,0) (0,0) (6.94006599e-09,0) (7.29799041e-06,0) (6.948945167e-06,0) (0.0008507631173,0) (2.393151383e-11,0) (0,0) (2.620125233e-08,0) (2.63818605e-06,0) (9.527036339e-05,0) (0,0) (1.215275915e-09,0) (1.727758853e-06,0) (4.452695345e-05,0) (2.58813648e-05,0) (0,0) (2.542260728e-09,0) (1.109931996e-05,0) (3.064539702e-06,0) (6.121327117e-07,0) (1.401947502e-09,0) (0,0) (1.253713298e-06,0) (2.653165066e-05,0) (2.635447273e-05,0) (-2.64697796e-23,0) (9.160979474e-11,0) (9.092686847e-07,0) (3.096286743e-06,0) (1.632018929e-07,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (-0.04650791085,0) (0.05339342277,0) (-0.006885511921,0) (0.06582968803,0) (0.005456254699,0) (-0.07128594273,0) (-0.03665265658,0) (0.0950451253,0) (-0.05839246872,0) (-0.01466480269,0) (0.05142104472,0) (-0.03675624203,0) (0.005432133241,0) (0.01745725437,0) (-0.02288938761,0) (-0.009939728979,0) (0.02293658634,0) (-0.01299685736,0) (0.0009346548029,0) (0.006928611436,0) (-0.007863266239,0) (-0.002292082329,0) (0.006540467226,0) (-0.004248384897,0) (0.0007511567492,0) (0.001716174845,0) (-0.002467331594,0) (-0.0007179158406,0) (0.001916075511,0) (-0.00119815967,0) (0.0004232273626,0) (0.0002078052141,0) (-0.0006310325767,0) (-7.912951479e-05,0) (0.0003179706291,0) (-0.0002388411143,0) (9.769891917e-05,0) (1.648674933e-05,0) (-0.0001141856685,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.0008172287347,0) (-0.00280811301,0) (-2.968547159e-06,0) (-0.0003536329813,0) (-3.496572923e-05,0) (-6.325669591e-05,0) (-6.601323888e-06,0) (-3.855489098e-06,0) (-5.64426606e-06,0) (-1.765983606e-06,0) (-2.054917267e-07,0) (-3.991282865e-08,0) (-5.172202734e-07,0) (0.02065391313,0) (-0.01874311768,0) (-2.839598951e-06,0) (0.001922210209,0) (-0.002074278464,0) (-0.00378330843,0) (0.0001500682067,0) (-0.0001650648726,0) (-0.0009079186671,0) (0.0002733644709,0) (-0.0002099969132,0) (-0.000231728652,0) (-1.467732161e-05,0) (1.720867302e-05,0) (-0.0003162091956,0) (-5.007846613e-06,0) (-1.116087826e-05,0) (-1.792231646e-06,0) (-1.513850326e-06,0) (-4.757169056e-06,0) (-3.730015351e-05,0) (1.142734126e-05,0) (-6.157851779e-06,0) (-5.327686836e-06,0) (-9.058902923e-07,0) (3.219670478e-06,0) (-1.974033463e-05,0) (-3.048988288e-07,0) (6.478429413e-07,0) (-3.602534663e-07,0) (-9.787608102e-07,0) (-1.968661101e-06,0) (2.586840302e-06,0) (-8.801255416e-07,0) (3.545150804e-06,0) (-3.546258443e-06,0) (-5.013482219e-07,0) (2.325538149e-06,0) (-2.752961059e-06,0) (-8.67361738e-19,0) (0.001081420423,0) (0.03683490234,0) (-0.03477674716,0) (-0.0005078099275,0) (-3.794707604e-19,0) (2.592330502e-05,0) (0.01315681817,0) (-0.01006015626,0) (-0.00380032527,0) (-8.809142651e-20,0) (5.636850501e-07,0) (2.319957752e-05,0) (-2.332385676e-05,0) (-0.001925267643,0) (1.355252716e-20,0) (7.146844379e-11,0) (0.0005565170578,0) (-0.0006475377206,0) (0.0001477002938,0) (-1.694065895e-21,0) (5.082980186e-07,0) (-3.210905036e-06,0) (1.660522345e-06,0) (-0.0003762065667,0) (1.694065895e-21,0) (1.287500472e-06,0) (-1.21303074e-05,0) (4.235369307e-05,0) (-4.425289125e-05,0) (4.65868121e-21,0) (2.385662691e-06,0) (-1.929410409e-05,0) (2.488333702e-06,0) (-1.793936166e-05,0) (2.117582368e-21,0) (9.350130233e-07,0) (-1.152532848e-05,0) (1.956543723e-05,0) (-2.651761138e-05,0) (-3.705769144e-22,0) (4.335966598e-08,0) (-3.011056923e-07,0) (1.016306761e-06,0) (-1.070586547e-05,0) (-2.64697796e-23,0) (2.401865277e-07,0) (-1.133223818e-06,0) (-4.430724484e-06,0) (4.166258622e-06,0) (5.29395592e-23,0) (-3.427165247e-10,0) (7.278680151e-07,0) (-3.068866642e-06,0) (2.654190084e-06,0) (-5.29395592e-23,0) (1.64497237e-07,0) (-1.697154657e-06,0) (6.207993408e-06,0) (-6.345131393e-06,0) (1.32348898e-22,0) (9.009374426e-08,0) (-1.008053064e-06,0) (2.068286092e-06,0) (-1.472957506e-06,0) -(0.006996970788,0) (0.02648866226,0) (0.0003000404036,0) (0.002950260254,0) (0.0006171004868,0) (0.0004135149158,0) (0.0001280079144,0) (1.038046461e-05,0) (7.090544467e-05,0) (4.394723674e-06,0) (3.264040205e-06,0) (2.168226279e-06,0) (4.463860426e-06,0) (-0.0197553569,0) (0.003169952543,0) (-0.001001057065,0) (0.0004308924624,0) (-0.002770174458,0) (0.0345564099,0) (-1.463376791e-05,0) (-0.000104145023,0) (0.01124524197,0) (8.482571159e-05,0) (-0.0002556526339,0) (0.0007911948594,0) (-5.099026091e-06,0) (4.407108103e-06,0) (0.003311940614,0) (-7.032866511e-06,0) (-6.547290259e-06,0) (2.17110916e-05,0) (-3.549379796e-06,0) (-6.299896001e-06,0) (0.000423327795,0) (-5.761058672e-06,0) (3.827017946e-05,0) (1.944685014e-05,0) (-3.72626502e-07,0) (3.938617866e-06,0) (0.0001271093011,0) (-3.486916283e-07,0) (8.356272429e-08,0) (4.1630784e-06,0) (-8.202975706e-07,0) (-1.144619623e-06,0) (2.265084665e-06,0) (-7.4172067e-07,0) (7.646110877e-06,0) (7.028005024e-06,0) (-4.193909109e-07,0) (3.865265904e-06,0) (1.465586965e-06,0) (4.33680869e-19,0) (6.036641356e-05,0) (-0.03492203779,0) (0.0248557125,0) (-0.01195439354,0) (2.168404345e-19,0) (3.980786074e-05,0) (0.003563583505,0) (-0.01195701747,0) (0.009444674026,0) (4.33680869e-19,0) (-6.897536925e-07,0) (3.64387135e-06,0) (-0.0001452631239,0) (0.01867201301,0) (4.065758147e-20,0) (-5.822791923e-09,0) (-0.0001187671813,0) (-0.0006389488347,0) (0.0008196149627,0) (0,0) (-2.79072853e-06,0) (-2.5788548e-06,0) (-2.32486879e-05,0) (0.002942712557,0) (6.776263578e-21,0) (-3.739146372e-07,0) (-7.534478148e-06,0) (1.681240677e-06,0) (0.0004156051342,0) (-3.388131789e-21,0) (-3.079720876e-07,0) (-2.842608235e-05,0) (-3.184660905e-05,0) (0.0002010405408,0) (-6.776263578e-21,0) (-1.028458898e-07,0) (-7.315992414e-06,0) (1.276502879e-05,0) (0.000267013377,0) (-5.020416579e-10,0) (0,0) (-2.62595584e-08,0) (1.224289849e-06,0) (3.061993997e-05,0) (-4.235164736e-22,0) (-2.317871362e-08,0) (-1.732223519e-06,0) (6.817124161e-06,0) (1.627774038e-05,0) (-5.29395592e-23,0) (-4.037988332e-08,0) (5.914031108e-06,0) (-3.068111963e-06,0) (-1.752991826e-06,0) (-2.137047511e-08,0) (4.235164736e-22,0) (-1.256735752e-06,0) (1.465535905e-05,0) (2.691960492e-06,0) (2.64697796e-23,0) (-4.779938991e-09,0) (-9.112894287e-07,0) (1.646291736e-06,0) (-4.897159534e-07,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0.0616499241,0) (-0.05612508663,0) (-0.005524837477,0) (-0.09849767551,0) (0.003987118413,0) (0.0945105571,0) (-0.03774692604,0) (-0.03968505748,0) (0.07743198352,0) (-0.01322794725,0) (-0.0355135707,0) (0.04874151795,0) (-0.03985523459,0) (0.009503484414,0) (0.03035175017,0) (-0.02158210048,0) (0.004347737172,0) (0.01723436331,0) (-0.01398296519,0) (0.00355609991,0) (0.01042686528,0) (-0.002231696874,0) (-0.003401939794,0) (0.005633636669,0) (-0.004236003097,0) (0.0009642830837,0) (0.003271720014,0) (-0.0007253584191,0) (-0.0008634759321,0) (0.001588834351,0) (-0.000973594934,0) (0.0001368578979,0) (0.0008367370361,0) (-6.904381328e-05,0) (-0.0002476788081,0) (0.0003167226213,0) (-0.0001631146387,0) (1.171560823e-05,0) (0.0001513990305,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.0006430541106,0) (-0.002209624475,0) (-2.335865557e-06,0) (-0.0002782637621,0) (-2.751354053e-05,0) (-4.977489973e-05,0) (-5.19439452e-06,0) (-3.03377501e-06,0) (-4.441312862e-06,0) (-1.389602407e-06,0) (-1.616956109e-07,0) (-3.140627274e-08,0) (-4.069859621e-07,0) (-0.02315446542,0) (0.02486709624,0) (-0.0002113144789,0) (-0.002883591821,0) (0.002752586386,0) (-0.002965630851,0) (-0.0002318971576,0) (0.0002190437346,0) (-0.0007133624739,0) (-0.0002270707624,0) (0.0002787001547,0) (-0.0001841079618,0) (1.946548646e-05,0) (-1.743881751e-05,0) (-0.0002488508671,0) (6.647567465e-06,0) (-1.942370938e-05,0) (-1.356825305e-06,0) (2.009289265e-06,0) (-7.120632471e-06,0) (-2.917357685e-05,0) (2.017518414e-06,0) (8.169870928e-06,0) (-1.023318319e-05,0) (1.202217678e-06,0) (7.088695561e-07,0) (-1.562354862e-05,0) (4.044755587e-07,0) (3.404607548e-08,0) (-4.521418737e-07,0) (1.300895681e-06,0) (-2.972631304e-06,0) (1.388004183e-06,0) (1.167951802e-06,0) (1.454595627e-06,0) (-3.315964822e-06,0) (6.652579445e-07,0) (1.014281671e-06,0) (-2.410363274e-06,0) (1.734723476e-18,0) (-0.001830745551,0) (-0.04184804203,0) (0.04614153827,0) (-0.0003918889316,0) (6.505213035e-19,0) (-1.505671622e-05,0) (-0.0107099765,0) (0.01335057348,0) (-0.003158834692,0) (-2.032879073e-20,0) (-6.739309617e-07,0) (-3.000331146e-05,0) (3.095587548e-05,0) (-0.001514871375,0) (0,0) (-1.267303587e-10,0) (-0.0008741803541,0) (0.0008591989311,0) (5.958119995e-05,0) (-1.694065895e-21,0) (-6.219833605e-07,0) (4.261561381e-06,0) (-4.506042692e-06,0) (-0.0002959797984,0) (-2.382280164e-21,0) (-2.325279806e-06,0) (1.61001834e-05,0) (1.56959449e-05,0) (-3.949717088e-05,0) (0,0) (-2.219766983e-06,0) (2.561091166e-05,0) (-3.502433912e-05,0) (-1.382955411e-05,0) (3.546950467e-21,0) (-1.682357216e-06,0) (1.529640096e-05,0) (-6.160454092e-06,0) (-2.125727712e-05,0) (0,0) (-7.037685441e-08,0) (3.9958929e-07,0) (2.960709067e-07,0) (-8.452535281e-06,0) (1.058791184e-22,0) (-1.588206347e-07,0) (1.504087388e-06,0) (-4.685734219e-06,0) (2.429661067e-06,0) (0,0) (-2.96845995e-10,0) (-7.277574765e-07,0) (4.071144148e-06,0) (-3.096918026e-06,0) (-3.30872245e-22,0) (-3.56383646e-07,0) (2.252412441e-06,0) (2.637815303e-06,0) (-5.847758739e-06,0) (5.29395592e-23,0) (-2.276567175e-07,0) (1.337660336e-06,0) (1.200711633e-06,0) (-2.564584225e-06,0) -(-0.01091369342,0) (-0.04131632783,0) (-0.0004679952334,0) (-0.004601739364,0) (-0.0009625373212,0) (-0.000644989832,0) (-0.0001996634222,0) (-1.619117925e-05,0) (-0.0001105964721,0) (-6.854775913e-06,0) (-5.091165187e-06,0) (-3.381943069e-06,0) (-6.962613624e-06,0) (0.02620752866,0) (0.002224269497,0) (-0.001000892129,0) (0.0003047929621,0) (0.003673383099,0) (-0.05422961591,0) (-1.170549913e-05,0) (0.0001381032981,0) (-0.01748116626,0) (5.58488008e-05,0) (0.0003390297478,0) (-0.001362512354,0) (6.763664198e-06,0) (2.347166408e-06,0) (-0.005173910596,0) (-1.001395262e-05,0) (8.679345149e-06,0) (-1.134781363e-05,0) (4.708510543e-06,0) (-1.51237669e-05,0) (-0.0006345178053,0) (7.640857198e-06,0) (-8.106428758e-06,0) (-8.057400327e-05,0) (4.942920937e-07,0) (-1.090440533e-06,0) (-0.0002032277807,0) (4.625928184e-07,0) (-3.831370518e-06,0) (-2.711142746e-06,0) (-2.393650938e-06,0) (1.517526643e-06,0) (4.079308649e-07,0) (9.838166031e-07,0) (-2.85806264e-06,0) (-1.98571424e-05,0) (5.56293275e-07,0) (-1.496586117e-06,0) (-6.720478032e-06,0) (-6.505213035e-19,0) (4.480721443e-05,0) (0.04632333236,0) (-0.001379381288,0) (-0.01073557061,0) (-4.33680869e-19,0) (2.884086942e-05,0) (0.002367327906,0) (0.01585694053,0) (-0.01995489753,0) (0,0) (-5.527808322e-07,0) (2.718459272e-06,0) (0.0001926337373,0) (-0.02909695075,0) (-2.710505431e-20,0) (-4.47964897e-09,0) (-9.694780846e-05,0) (0.0008472184569,0) (-0.0008468054569,0) (-5.421010862e-20,0) (-2.241467871e-06,0) (-2.480320484e-06,0) (3.082178995e-05,0) (-0.004571428628,0) (1.355252716e-20,0) (-3.003345517e-07,0) (9.997786745e-06,0) (1.10553403e-06,0) (-0.0006493401365,0) (1.694065895e-21,0) (-2.479739066e-07,0) (3.770913572e-05,0) (-0.0001390322279,0) (-0.0001175146047,0) (0,0) (-8.278796515e-08,0) (9.703906891e-06,0) (4.395115462e-06,0) (-0.0004388356181,0) (-3.966417036e-10,0) (0,0) (3.483258316e-08,0) (-1.062099363e-06,0) (-4.860039762e-05,0) (-4.235164736e-22,0) (-1.83956344e-08,0) (2.297772888e-06,0) (-2.83623588e-05,0) (-7.201757854e-06,0) (0,0) (-3.23672139e-08,0) (-3.897417542e-06,0) (4.070176231e-06,0) (-1.782127644e-06,0) (-1.71723915e-08,0) (0,0) (1.666924655e-06,0) (-8.914065602e-06,0) (-1.780002849e-05,0) (5.29395592e-23,0) (-3.673872713e-09,0) (1.208697071e-06,0) (-1.088177979e-06,0) (-4.919808827e-07,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (1.333601076e-05,0) (-0.003680518671,0) (0.01171062439,0) (0.004572524643,0) (-0.001931974151,0) (1.016225988e-05,0) (-0.003695330387,0) (0.003163975381,0) (-1.380679875e-06,0) (-0.002791090092,0) (0.002119938484,0) (-1.702859645e-06,0) (0.001336173644,0) (-0.001159269776,0) (4.948719016e-07,0) (5.602991138e-05,0) (-5.170347486e-05,0) (1.165106662e-08,0) (0.0004402708215,0) (-0.0003880446353,0) (1.452039402e-07,0) (-0.0002896023254,0) (0.0002398595806,0) (-1.282564785e-07,0) (0.0001483925852,0) (-0.0001273107664,0) (5.926285014e-08,0) (-7.692981325e-05,0) (6.523609042e-05,0) (-3.032478854e-08,0) (4.206025406e-05,0) (-3.160521265e-05,0) (3.109924057e-08,0) (-1.970181647e-05,0) (1.391253042e-05,0) (-1.452397306e-08,0) (7.57314583e-06,0) (-4.370287337e-06,0) (1.070626807e-08,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.004214043356,0) (0.006158998385,0) (0.0001312011809,0) (-0.0007825700286,0) (-0.000160366703,0) (0.0001179069761,0) (2.941101487e-05,0) (-1.215575976e-05,0) (-1.292825713e-05,0) (3.591247411e-06,0) (1.211948785e-06,0) (2.186819431e-07,0) (-9.353687809e-07,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.04520166927,0) (0.04251668573,0) (-0.0009345582901,0) (-0.0001451268835,0) (0.0002799358963,0) (0.0005029806326,0) (-0.0003063111856,0) (-7.350246924e-05,0) (0.0001538232273,0) (3.114230238e-05,0) (-2.423650254e-05,0) (1.916106456e-05,0) (2.552626129e-05,0) (1.454931824e-06,0) (-0.003157854218,0) (0.007512458075,0) (0.0005195851016,0) (-1.088795504e-06,0) (0.03421108654,0) (-7.146290097e-06,0) (-1.177097021e-08,0) (-0.001457959397,0) (-6.924319911e-07,0) (7.086881675e-10,0) (-1.038967993e-05,0) (9.381966906e-10,0) (-1.140640338e-05,0) (0.001087813846,0) (-1.904659493e-05,0) (-3.587190187e-09,0) (0.0001295991408,0) (1.20807976e-09,0) (5.088937078e-05,0) (-0.0006397323042,0) (9.728329649e-10,0) (-2.632356776e-05,0) (0.0001948452291,0) (1.377274291e-10,0) (-1.900743854e-05,0) (0.0002168844333,0) (1.768045232e-10,0) (1.738073434e-06,0) (-3.331910854e-05,0) (-2.35095165e-06,0) (-4.003305574e-11,0) (-1.444095283e-05,0) (1.856004633e-10,0) (-8.44366819e-06,0) (5.955031546e-05,0) (1.173764161e-10,0) (-3.04711323e-06,0) (3.220324779e-05,0) (-5.421010862e-19,0) (9.495322441e-05,0) (7.430118958e-08,0) (-0.00369666856,0) (0.02112509155,0) (6.505213035e-19,0) (6.333326623e-05,0) (0.001467685891,0) (-1.522189737e-06,0) (0.003983623004,0) (0,0) (-1.128629076e-06,0) (1.486140405e-06,0) (-1.732577337e-08,0) (0.0006790959101,0) (8.470329473e-22,0) (-9.281519799e-09,0) (-5.628658706e-06,0) (-6.662351652e-09,0) (-1.747322974e-05,0) (5.421010862e-20,0) (-4.549907229e-06,0) (-1.145926933e-05,0) (-2.539534721e-08,0) (0.0005202223217,0) (0,0) (-6.099495322e-07,0) (1.186146372e-08,0) (1.038789438e-05,0) (-0.0002534353773,0) (6.776263578e-21,0) (-5.02811008e-07,0) (4.132508469e-09,0) (0.000156366619,0) (-0.0002955184562,0) (0,0) (-1.679232679e-07,0) (1.383585823e-09,0) (-3.776354522e-05,0) (0.0001676407959,0) (-8.088281908e-10,0) (0,0) (1.092177589e-11,0) (-1.716212179e-05,0) (5.082791124e-05,0) (1.694065895e-21,0) (-3.774756953e-08,0) (5.146970487e-10,0) (2.38628948e-05,0) (-5.030265065e-05,0) (2.117582368e-22,0) (-6.59283491e-08,0) (1.303346218e-06,0) (6.607505923e-10,0) (8.223005948e-06,0) (-3.476269999e-08,0) (4.235164736e-22,0) (2.906841531e-10,0) (-2.422359532e-05,0) (4.450385645e-05,0) (0,0) (-7.6060703e-09,0) (1.822462067e-10,0) (6.185128518e-07,0) (3.673086727e-06,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (-0.0002997192672,-0.0005191289988) (0.09925944203,0.1719223967) (0.0005701036329,0.0009874484577) (0.03744131566,0.06485026102) (-1.08363822e-05,-1.876916455e-05) (5.12637978e-06,8.879150237e-06) (-0.0004333454456,-0.000750576329) (-0.004174757703,-0.007230892451) (-5.79928862e-07,-1.004466254e-06) (-0.0003092991382,-0.0005357218221) (-0.008557666191,-0.01482231264) (-1.127253589e-06,-1.952460489e-06) (0.001441927363,0.002497491453) (0.0001026368809,0.0001777722925) (1.949578464e-07,3.376768953e-07) (7.957927152e-05,0.0001378353415) (6.761905753e-05,0.0001171196432) (1.853059582e-08,3.209593345e-08) (0.0007081325001,0.001226521469) (7.017291895e-05,0.0001215430609) (9.836838076e-08,1.703790333e-07) (-3.926527806e-05,-6.800945657e-05) (-0.000555379596,-0.0009619456778) (-7.501276439e-08,-1.299259191e-07) (0.0001990917172,0.0003448369695) (1.15125293e-05,1.994028567e-05) (2.660804959e-08,4.608649378e-08) (-1.201453687e-05,-2.080978829e-05) (-0.0001308978504,-0.0002267217275) (-1.801120482e-08,-3.119632186e-08) (0.0001320177961,0.0002286615304) (1.379282385e-06,2.388987168e-06) (1.705203038e-08,2.953498298e-08) (-1.642038463e-06,-2.844094046e-06) (-6.621122398e-05,-0.000114681204) (-8.667301526e-09,-1.501220661e-08) (3.661879991e-05,6.342562196e-05) (3.18796139e-08,5.521711101e-08) (4.775645764e-09,8.271661102e-09) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.000923337689,-0.00159926779) (0.0008274199475,0.001433133388) (-5.55619918e-06,-9.623619276e-06) (-3.00319403e-06,-5.201684645e-06) (3.982825217e-06,6.898455633e-06) (1.175840002e-05,2.036614625e-05) (-4.157662878e-06,-7.201283346e-06) (-2.677457455e-06,-4.637492347e-06) (2.594031055e-06,4.492993584e-06) (1.179960774e-06,2.043752012e-06) (-3.634784569e-07,-6.295631548e-07) (1.553863596e-07,2.691370696e-07) (5.193486208e-07,8.995381981e-07) (0.03245066753,0.05620620491) (1.973358379e-05,3.417956974e-05) (0.003074044889,0.005324401932) (-0.003612640396,-0.006257276715) (-1.712840758e-06,-2.966727218e-06) (0.0006726502744,0.001165064451) (-7.897721341e-05,-0.0001367925463) (-9.66799994e-09,-1.67454671e-08) (-2.492556751e-05,-4.317234933e-05) (2.421005667e-06,4.19330482e-06) (3.489741388e-10,6.044409389e-10) (-3.762967448e-07,-6.517650808e-07) (-8.094592238e-08,-1.402024502e-07) (3.136037117e-05,5.431775621e-05) (2.045657133e-05,3.54318209e-05) (6.618798767e-10,1.146409575e-09) (-2.146830323e-05,-3.718419194e-05) (8.675245077e-07,1.502596524e-06) (-9.606141336e-11,-1.663832486e-10) (1.456791745e-05,2.523237319e-05) (-1.076291122e-05,-1.864190907e-05) (1.04629614e-07,1.812238073e-07) (-8.956602146e-10,-1.551328998e-09) (2.547207111e-05,4.411892133e-05) (-6.797765478e-11,-1.177407519e-10) (6.283968979e-06,1.088415354e-05) (5.35510915e-06,9.275321128e-06) (-1.527935823e-11,-2.646462476e-11) (1.016270017e-06,1.760231303e-06) (2.862275528e-06,4.95760664e-06) (-2.747461897e-10,-4.758743597e-10) (7.443505779e-07,1.28925302e-06) (4.771932706e-06,8.265229897e-06) (-7.264500146e-11,-1.258248334e-10) (1.575517403e-06,2.728876191e-06) (4.761717681e-06,8.247536954e-06) (-3.577407697e-11,-6.196251891e-11) (1.541553266e-06,2.67004858e-06) (3.194233381e-06,5.532574508e-06) (0,-8.67361738e-19) (-0.002729426434,-0.004727505259) (0.06324356095,0.1095410608) (3.126494954e-05,5.415248111e-05) (0.0002650767828,0.0004591264557) (-2.168404345e-19,-4.33680869e-19) (0.0001065037686,0.0001844699384) (-0.006663150733,-0.01154091561) (-9.127041456e-07,-1.580849952e-06) (0.0002416297276,0.0004185149648) (-1.694065895e-21,-8.470329473e-22) (1.483669546e-06,2.569791035e-06) (-3.500462032e-05,-6.06297809e-05) (-8.719713196e-09,-1.510298628e-08) (1.471765147e-05,2.549172011e-05) (-4.235164736e-22,-8.470329473e-22) (6.08483442e-09,1.053924237e-08) (-3.835660981e-05,-6.643559699e-05) (-3.797649481e-09,-6.577721851e-09) (1.178686968e-06,2.041545716e-06) (-1.694065895e-21,-1.694065895e-21) (2.4179593e-07,4.188028358e-07) (2.191988206e-10,3.796634942e-10) (-2.364132934e-05,-4.094798358e-05) (1.230236002e-05,2.130831261e-05) (1.694065895e-21,-1.694065895e-21) (1.181594739e-06,2.046582122e-06) (1.185010832e-09,2.052498968e-09) (-4.056713351e-05,-7.026433636e-05) (-2.316881374e-05,-4.012956255e-05) (2.117582368e-21,1.694065895e-21) (-2.188570265e-06,-3.790714895e-06) (-5.101434888e-09,-8.835944417e-09) (6.486224796e-05,0.000112344709) (-2.66489559e-06,-4.61573456e-06) (1.270549421e-21,1.270549421e-21) (-1.304105758e-06,-2.258777432e-06) (-2.554688277e-09,-4.424849894e-09) (3.739300532e-05,6.476658507e-05) (4.052238551e-06,7.018683054e-06) (-5.29395592e-23,-2.117582368e-22) (-1.147182595e-08,-1.986978541e-08) (-1.153315372e-11,-1.997600821e-11) (4.290322277e-06,7.431056164e-06) (1.630475981e-06,2.824067239e-06) (0,-2.117582368e-22) (-8.329871479e-08,-1.442776062e-07) (-9.227744456e-11,-1.598292224e-10) (3.112744687e-06,5.391431949e-06) (4.610680091e-06,7.985932175e-06) (3.176373552e-22,2.117582368e-22) (-4.072151729e-12,-7.053173691e-12) (-4.732118624e-07,-8.196269885e-07) (-4.150544398e-10,-7.188953777e-10) (1.376158085e-05,2.383575722e-05) (1.058791184e-22,2.117582368e-22) (-1.530521796e-07,-2.650941513e-07) (-1.73488401e-10,-3.004907251e-10) (5.513119534e-06,9.54900314e-06) (4.337960104e-06,7.513567301e-06) (-1.588186776e-22,-1.058791184e-22) (-7.700519144e-08,-1.33376904e-07) (-8.508942103e-11,-1.473792004e-10) (6.216831785e-07,1.076786851e-06) (6.222146986e-06,1.077707471e-05) -(0.05157424969,0.08932922082) (0.07911949656,0.1370389879) (0.005517042647,0.009555798172) (-0.009454263379,-0.01637526452) (-0.002817873889,-0.004880700745) (0.001260905509,0.002183952404) (0.0005417059474,0.0009382622237) (-8.342600894e-05,-0.0001444980862) (-0.0001916579055,-0.0003319612299) (2.369564209e-05,4.104205603e-05) (2.020298538e-05,3.499259714e-05) (6.741548682e-06,1.167670484e-05) (-1.149346843e-05,-1.990727127e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.05227305888,0) (-0.01059774195,0) (0.0007747731012,0) (-0.0019584315,0) (0.0004996371268,0) (-2.324558865e-05,0) (-2.394669917e-05,0) (-7.276138765e-06,0) (8.264461737e-06,0) (1.838973561e-05,0) (-3.937587669e-06,0) (5.221874471e-07,0) (3.804800733e-06,0) (0.003294115467,0) (-5.03865326e-06,0) (8.521411615e-05,0) (8.201923211e-05,0) (2.067578889e-07,0) (-0.06268694534,0) (-4.461298473e-06,0) (-1.290932257e-08,0) (0.008994674824,0) (-1.566384246e-05,0) (4.177343488e-08,0) (-0.003310642092,0) (-1.39836719e-10,0) (4.550215342e-08,0) (0.0007412007475,0) (3.371897556e-11,0) (-2.135755559e-07,0) (-6.832987415e-06,0) (4.698765009e-11,0) (-6.359455323e-07,0) (-9.524322186e-05,0) (-1.168207208e-06,0) (4.963625375e-11,0) (-6.28702053e-07,0) (-3.114294568e-11,0) (4.478956051e-07,0) (5.538823034e-05,0) (2.230680666e-12,0) (1.774135912e-06,0) (2.782574797e-06,0) (4.907366656e-10,0) (-1.097731374e-06,0) (-3.17533837e-06,0) (-3.19703626e-11,0) (1.108827398e-06,0) (2.817216516e-06,0) (-3.361210006e-11,0) (1.86095787e-06,0) (7.359028335e-06,0) (-4.33680869e-19,0) (-0.0002852827998,0) (-0.0001093982521,0) (-4.438290702e-06,0) (0.0612087474,0) (-1.029992064e-18,0) (-5.672657459e-06,0) (-0.001412428299,0) (2.934551322e-06,0) (-0.05104289932,0) (5.844527336e-20,0) (2.315741605e-10,0) (2.280737082e-08,0) (1.99657454e-10,0) (-0.001386055972,0) (2.202285663e-20,0) (-2.218079148e-11,0) (-0.0001285817751,0) (-2.334044471e-07,0) (0.000791823636,0) (2.435219723e-21,0) (1.565366177e-10,0) (1.581342029e-11,0) (4.980086481e-09,0) (-0.0001439248567,0) (-5.029258124e-22,0) (1.452916396e-08,0) (4.223110462e-10,0) (-7.100395277e-06,0) (-2.760876911e-05,0) (-2.580803511e-22,0) (-1.566034151e-09,0) (1.050286112e-10,0) (1.196885357e-08,0) (-1.098689074e-05,0) (3.374896899e-22,0) (2.91435589e-09,0) (1.016381852e-10,0) (-1.778376473e-07,0) (-1.275177812e-05,0) (-2.64697796e-22,0) (-1.096373539e-09,0) (-2.116571378e-11,0) (3.816288677e-07,0) (7.029415091e-05,0) (1.852884572e-22,0) (-1.759502375e-08,0) (2.032173328e-10,0) (-7.041690834e-06,0) (-9.234442056e-06,0) (2.584939414e-25,0) (3.778730592e-10,0) (3.371220318e-09,0) (-7.123309402e-13,0) (-3.067020323e-09,0) (8.602678371e-23,0) (-4.169374205e-09,0) (-8.414027643e-11,0) (2.098761966e-06,0) (5.54532595e-06,0) (-9.926167351e-23,0) (-9.442255645e-09,0) (-1.131400601e-10,0) (5.032227385e-06,0) (1.055086583e-06,0) -(-0.01870392239,0) (-0.005666223889,0) (0.0009130148356,0) (-0.0008914920716,0) (0.0002236517882,0) (-2.053323155e-05,0) (-1.204518931e-05,0) (-6.483972824e-07,0) (5.785990742e-06,0) (3.633038737e-06,0) (-1.276610461e-06,0) (3.596617133e-07,0) (1.548277966e-06,0) (-2.360738584e-06,0) (0.03012600167,0) (-0.02661648463,0) (-0.0001013170272,0) (-3.750412402e-07,0) (-0.02410440258,0) (-6.473083976e-06,0) (7.86788762e-09,0) (0.002917313174,0) (-6.209909928e-05,0) (-5.982724624e-08,0) (-0.0008486929007,0) (8.153315783e-11,0) (1.767015122e-07,0) (0.0001524684146,0) (8.386966911e-07,0) (3.506062313e-10,0) (-2.412940959e-06,0) (-1.03489508e-10,0) (4.325370202e-07,0) (-2.813110036e-05,0) (-7.01336135e-11,0) (-1.272009523e-06,0) (-6.63678222e-07,0) (2.141801211e-11,0) (7.20810683e-07,0) (2.366970548e-05,0) (-1.012439589e-10,0) (-8.825188043e-08,0) (-4.302174199e-06,0) (2.262857906e-07,0) (1.343906619e-10,0) (-5.823968285e-07,0) (3.391481584e-11,0) (1.224153722e-06,0) (1.147096904e-06,0) (3.625524393e-11,0) (1.96618936e-06,0) (7.619721113e-07,0) (1.734723476e-18,0) (-0.0002399783128,0) (4.429670749e-06,0) (0.05862781591,0) (-0.03565811638,0) (-4.33680869e-19,0) (3.134980355e-06,0) (-0.003476641184,0) (-3.253025745e-06,0) (-0.01396980218,0) (-2.710505431e-20,0) (1.136629777e-07,0) (1.037074105e-06,0) (-5.146353529e-09,0) (-0.00182694799,0) (0,0) (-1.794104248e-08,0) (-0.0001795896175,0) (1.81405844e-07,0) (0.0008103216112,0) (3.388131789e-21,0) (2.246534061e-07,0) (1.460111013e-07,0) (-3.147057971e-10,0) (-0.0001426984983,0) (8.470329473e-22,0) (3.165906529e-08,0) (-1.530328056e-10,0) (-5.880359132e-08,0) (-2.120406882e-05,0) (1.058791184e-22,0) (-1.426401455e-08,0) (4.771886505e-10,0) (-9.224878544e-07,0) (5.639404919e-06,0) (0,0) (-1.923071812e-09,0) (3.061682836e-11,0) (1.365337013e-07,0) (3.050917587e-06,0) (-5.065341759e-10,0) (4.235164736e-22,0) (3.046264775e-12,0) (6.475738678e-07,0) (1.629354359e-05,0) (0,0) (9.109682087e-09,0) (-1.822953378e-10,0) (-1.485812014e-06,0) (-3.477463597e-06,0) (0,0) (6.655951109e-09,0) (-5.74589738e-07,0) (1.527580882e-10,0) (1.947745163e-07,0) (-7.857037501e-09,0) (1.058791184e-22,0) (9.043149751e-11,0) (3.224418723e-06,0) (6.035756443e-07,0) (-1.058791184e-22,0) (-1.558553604e-08,0) (1.607444256e-10,0) (1.658167214e-06,0) (-5.670284416e-07,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (-0.04650791085,0) (0.05339342277,0) (-0.006885511921,0) (0.06582968803,0) (0.005456254699,0) (-0.07128594273,0) (-0.03665265658,0) (0.0950451253,0) (-0.05839246872,0) (-0.01466480269,0) (0.05142104472,0) (-0.03675624203,0) (0.005432133241,0) (0.01745725437,0) (-0.02288938761,0) (-0.009939728979,0) (0.02293658634,0) (-0.01299685736,0) (0.0009346548029,0) (0.006928611436,0) (-0.007863266239,0) (-0.002292082329,0) (0.006540467226,0) (-0.004248384897,0) (0.0007511567492,0) (0.001716174845,0) (-0.002467331594,0) (-0.0007179158406,0) (0.001916075511,0) (-0.00119815967,0) (0.0004232273626,0) (0.0002078052141,0) (-0.0006310325767,0) (-7.912951479e-05,0) (0.0003179706291,0) (-0.0002388411143,0) (9.769891917e-05,0) (1.648674933e-05,0) (-0.0001141856685,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.0008172287347,0) (-0.00280811301,0) (-2.968547159e-06,0) (-0.0003536329813,0) (-3.496572923e-05,0) (-6.325669591e-05,0) (-6.601323888e-06,0) (-3.855489098e-06,0) (-5.64426606e-06,0) (-1.765983606e-06,0) (-2.054917267e-07,0) (-3.991282865e-08,0) (-5.172202734e-07,0) (0.02065391313,0) (-0.01874311768,0) (-2.839598951e-06,0) (0.001922210209,0) (-0.002074278464,0) (-0.00378330843,0) (0.0001500682067,0) (-0.0001650648726,0) (-0.0009079186671,0) (0.0002733644709,0) (-0.0002099969132,0) (-0.000231728652,0) (-1.467732161e-05,0) (1.720867302e-05,0) (-0.0003162091956,0) (-5.007846613e-06,0) (-1.116087826e-05,0) (-1.792231646e-06,0) (-1.513850326e-06,0) (-4.757169056e-06,0) (-3.730015351e-05,0) (1.142734126e-05,0) (-6.157851779e-06,0) (-5.327686836e-06,0) (-9.058902923e-07,0) (3.219670478e-06,0) (-1.974033463e-05,0) (-3.048988288e-07,0) (6.478429413e-07,0) (-3.602534663e-07,0) (-9.787608102e-07,0) (-1.968661101e-06,0) (2.586840302e-06,0) (-8.801255416e-07,0) (3.545150804e-06,0) (-3.546258443e-06,0) (-5.013482219e-07,0) (2.325538149e-06,0) (-2.752961059e-06,0) (-8.67361738e-19,0) (0.001081420423,0) (0.03683490234,0) (-0.03477674716,0) (-0.0005078099275,0) (-4.878909776e-19,0) (2.592330502e-05,0) (0.01315681817,0) (-0.01006015626,0) (-0.00380032527,0) (-3.388131789e-20,0) (5.636850501e-07,0) (2.319957752e-05,0) (-2.332385676e-05,0) (-0.001925267643,0) (1.355252716e-20,0) (7.146844379e-11,0) (0.0005565170578,0) (-0.0006475377206,0) (0.0001477002938,0) (-5.505714157e-21,0) (5.082980186e-07,0) (-3.210905036e-06,0) (1.660522345e-06,0) (-0.0003762065667,0) (8.470329473e-22,0) (1.287500472e-06,0) (-1.21303074e-05,0) (4.235369307e-05,0) (-4.425289125e-05,0) (2.117582368e-21,0) (2.385662691e-06,0) (-1.929410409e-05,0) (2.488333702e-06,0) (-1.793936166e-05,0) (1.270549421e-21,0) (9.350130233e-07,0) (-1.152532848e-05,0) (1.956543723e-05,0) (-2.651761138e-05,0) (-3.176373552e-22,0) (4.335966598e-08,0) (-3.011056923e-07,0) (1.016306761e-06,0) (-1.070586547e-05,0) (-5.29395592e-23,0) (2.401865277e-07,0) (-1.133223818e-06,0) (-4.430724484e-06,0) (4.166258622e-06,0) (5.29395592e-23,0) (-3.427165247e-10,0) (7.278680151e-07,0) (-3.068866642e-06,0) (2.654190084e-06,0) (5.29395592e-23,0) (1.64497237e-07,0) (-1.697154657e-06,0) (6.207993408e-06,0) (-6.345131393e-06,0) (1.588186776e-22,0) (9.009374426e-08,0) (-1.008053064e-06,0) (2.068286092e-06,0) (-1.472957506e-06,0) -(0.006996970788,0) (0.02648866226,0) (0.0003000404036,0) (0.002950260254,0) (0.0006171004868,0) (0.0004135149158,0) (0.0001280079144,0) (1.038046461e-05,0) (7.090544467e-05,0) (4.394723674e-06,0) (3.264040205e-06,0) (2.168226279e-06,0) (4.463860426e-06,0) (-0.0197553569,0) (0.003169952543,0) (-0.001001057065,0) (0.0004308924624,0) (-0.002770174458,0) (0.0345564099,0) (-1.463376791e-05,0) (-0.000104145023,0) (0.01124524197,0) (8.482571159e-05,0) (-0.0002556526339,0) (0.0007911948594,0) (-5.099026091e-06,0) (4.407108103e-06,0) (0.003311940614,0) (-7.032866511e-06,0) (-6.547290259e-06,0) (2.17110916e-05,0) (-3.549379796e-06,0) (-6.299896001e-06,0) (0.000423327795,0) (-5.761058672e-06,0) (3.827017946e-05,0) (1.944685014e-05,0) (-3.72626502e-07,0) (3.938617866e-06,0) (0.0001271093011,0) (-3.486916283e-07,0) (8.356272429e-08,0) (4.1630784e-06,0) (-8.202975706e-07,0) (-1.144619623e-06,0) (2.265084665e-06,0) (-7.4172067e-07,0) (7.646110877e-06,0) (7.028005024e-06,0) (-4.193909109e-07,0) (3.865265904e-06,0) (1.465586965e-06,0) (0,0) (6.036641356e-05,0) (-0.03492203779,0) (0.0248557125,0) (-0.01195439354,0) (-6.505213035e-19,0) (3.980786074e-05,0) (0.003563583505,0) (-0.01195701747,0) (0.009444674026,0) (4.33680869e-19,0) (-6.897536925e-07,0) (3.64387135e-06,0) (-0.0001452631239,0) (0.01867201301,0) (2.710505431e-20,0) (-5.822791923e-09,0) (-0.0001187671813,0) (-0.0006389488347,0) (0.0008196149627,0) (5.421010862e-20,0) (-2.79072853e-06,0) (-2.5788548e-06,0) (-2.32486879e-05,0) (0.002942712557,0) (0,0) (-3.739146372e-07,0) (-7.534478148e-06,0) (1.681240677e-06,0) (0.0004156051342,0) (-3.388131789e-21,0) (-3.079720876e-07,0) (-2.842608235e-05,0) (-3.184660905e-05,0) (0.0002010405408,0) (-6.776263578e-21,0) (-1.028458898e-07,0) (-7.315992414e-06,0) (1.276502879e-05,0) (0.000267013377,0) (-5.020416579e-10,0) (0,0) (-2.62595584e-08,0) (1.224289849e-06,0) (3.061993997e-05,0) (0,0) (-2.317871362e-08,0) (-1.732223519e-06,0) (6.817124161e-06,0) (1.627774038e-05,0) (1.058791184e-22,0) (-4.037988332e-08,0) (5.914031108e-06,0) (-3.068111963e-06,0) (-1.752991826e-06,0) (-2.137047511e-08,0) (0,0) (-1.256735752e-06,0) (1.465535905e-05,0) (2.691960492e-06,0) (3.97046694e-23,0) (-4.779938991e-09,0) (-9.112894287e-07,0) (1.646291736e-06,0) (-4.897159534e-07,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0.04715705099,0) (0.02200154358,0) (0.1067286698,0) (0.02202428562,0) (0.17465834,0) (0.07141108635,0) (0.1000731762,0) (0.06107260141,0) (0.05848951507,0) (0.07464156391,0) (0.02679567375,0) (0.03681690082,0) (0.0005054573398,0) (0.06266017622,0) (0.02292789445,0) (0.005280432053,0) (0.03058641266,0) (0.0130185903,0) (4.477807442e-05,0) (0.02165478127,0) (0.007876474827,0) (0.007860017766,0) (0.003864294445,0) (0.004255431357,0) (8.845381168e-05,0) (0.006720385865,0) (0.002471484938,0) (0.00210919833,0) (0.001197367089,0) (0.001200149458,0) (0.0001043161214,0) (0.001637026661,0) (0.0006321024569,0) (0.0005029865235,0) (0.0001561530053,0) (0.0002392339673,0) (3.034857158e-05,0) (0.0002847271479,0) (0.0001143827643,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.01859825451,0) (0.06390622139,0) (6.755733522e-05,0) (0.008047876816,0) (0.000795739924,0) (0.001439577538,0) (0.0001502310143,0) (8.77421026e-05,0) (0.0001284505699,0) (4.018974268e-05,0) (4.676521113e-06,0) (9.083245777e-07,0) (1.177074896e-05,0) (0.008307597159,0) (0.01873421824,0) (2.900333486e-08,0) (0.0006427535352,0) (0.002074227619,0) (0.09464435446,0) (4.913666987e-05,0) (0.0001652571093,0) (0.02141018871,0) (0.0001298657198,0) (0.0002102475176,0) (0.004281715785,0) (1.48520788e-05,0) (7.255278567e-06,0) (0.007171961804,0) (5.016290298e-06,0) (8.510401907e-06,0) (0.0004140783138,0) (1.516294083e-06,0) (4.817059328e-06,0) (0.0009909456417,0) (1.489550748e-05,0) (6.169100968e-06,0) (3.434653454e-06,0) (9.073734504e-07,0) (4.539544298e-06,0) (0.0003945514261,0) (3.054738133e-07,0) (6.950824905e-07,0) (5.407485655e-07,0) (9.805598736e-07,0) (1.955658851e-06,0) (8.959547428e-06,0) (8.815473737e-07,0) (7.766105257e-06,0) (1.471985915e-05,0) (5.021918199e-07,0) (5.508541434e-06,0) (1.701290994e-05,0) (6.505213035e-19,0) (0.0003326380646,0) (0.01469282168,0) (0.03477374258,0) (0.02107630735,0) (3.252606517e-19,0) (1.4617477e-05,0) (0.006316834902,0) (0.01007236596,0) (0.03687902424,0) (-2.059984128e-18,0) (2.1761899e-07,0) (8.535073252e-06,0) (2.333908512e-05,0) (0.04386035073,0) (3.388131789e-21,0) (2.12877168e-11,0) (0.0001802105721,0) (0.0006483001201,0) (0.0003180537728,0) (-1.423015351e-19,0) (1.934512603e-07,0) (3.215971441e-06,0) (3.60306497e-07,0) (0.008593632408,0) (9.95263713e-21,0) (3.785330716e-07,0) (1.214894467e-05,0) (8.316142622e-05,0) (0.0002399527039,0) (-2.943439492e-20,0) (1.065981606e-06,0) (1.932844051e-05,0) (1.262102486e-07,0) (0.0007885513656,0) (-1.905824131e-20,0) (2.756248094e-07,0) (1.154541289e-05,0) (1.377253857e-05,0) (0.0004170207456,0) (1.334076892e-20,0) (1.372912756e-08,0) (3.015892013e-07,0) (1.65338949e-06,0) (0.000225542516,0) (-7.27918939e-22,0) (1.277388161e-07,0) (1.135050709e-06,0) (1.097300767e-05,0) (1.837231386e-05,0) (0,0) (2.299303327e-09,0) (3.123692756e-07,0) (3.074695245e-06,0) (1.039677966e-06,0) (6.882142696e-22,0) (4.239383809e-08,0) (1.699838817e-06,0) (1.420235844e-05,0) (2.844450342e-05,0) (-2.779326858e-22,0) (2.066829092e-08,0) (1.009713072e-06,0) (8.983597702e-06,0) (1.122430129e-06,0) -(0.002275502001,0) (0.008614442707,0) (9.757687426e-05,0) (0.0009594613604,0) (0.0002006887602,0) (0.0001344801982,0) (4.162976727e-05,0) (3.375856311e-06,0) (2.305933326e-05,0) (1.429218846e-06,0) (1.061506507e-06,0) (7.051341767e-07,0) (1.451702978e-06,0) (0.0197919787,0) (0.04576663462,0) (0.003064285325,0) (0.006931890706,0) (0.002776848162,0) (0.01119185278,0) (0.0002405708549,0) (0.0001044086936,0) (0.003665373389,0) (0.0006670496628,0) (0.0002562656941,0) (0.0002404198937,0) (5.111300906e-06,0) (1.4983551e-05,0) (0.001075955865,0) (7.907287005e-06,0) (6.558427154e-06,0) (1.279841726e-05,0) (3.558166217e-06,0) (2.878390215e-06,0) (0.0001413922296,0) (5.77551433e-06,0) (2.981494912e-05,0) (2.987868567e-06,0) (3.734951082e-07,0) (2.875161334e-06,0) (4.065104123e-05,0) (3.494642989e-07,0) (1.349041095e-09,0) (2.229293379e-06,0) (2.854297262e-07,0) (1.146538659e-06,0) (2.970188831e-06,0) (7.434637826e-07,0) (5.101582132e-06,0) (1.477386609e-06,0) (4.203040616e-07,0) (2.548710907e-06,0) (2.065288763e-07,0) (0,0) (0.00381120272,0) (0.03499174491,0) (0.02310179904,0) (0.06236724561,0) (0,0) (0.001009633108,0) (0.0298739139,0) (0.0119849688,0) (0.002478434544,0) (0,0) (1.099057939e-05,0) (0.0003399323208,0) (0.000145642374,0) (0.00607617128,0) (-5.421010862e-20,0) (2.892328027e-07,0) (0.001438457613,0) (0.0006405979474,0) (0.0003449598824,0) (-1.355252716e-20,0) (4.286455912e-05,0) (9.37661877e-06,0) (2.331100428e-05,0) (0.0009596164022,0) (-3.388131789e-21,0) (5.739308119e-06,0) (7.551310522e-06,0) (1.320365452e-05,0) (0.0001350056191,0) (-1.694065895e-21,0) (4.544913819e-06,0) (2.850249043e-05,0) (6.63333715e-06,0) (0.0001130091179,0) (0,0) (1.524088828e-06,0) (7.334038823e-06,0) (2.344902083e-05,0) (8.380257917e-05,0) (1.053196334e-08,0) (2.117582368e-22,0) (2.631799423e-08,0) (5.681500867e-07,0) (9.841263226e-06,0) (0,0) (4.420829531e-07,0) (1.736699721e-06,0) (1.043708995e-06,0) (1.023766845e-05,0) (-4.235164736e-22,0) (6.41372051e-07,0) (3.151162781e-06,0) (3.071688387e-06,0) (5.020121102e-06,0) (3.257591355e-07,0) (-1.058791184e-22,0) (1.259765493e-06,0) (8.095219997e-06,0) (2.749685552e-07,0) (5.29395592e-23,0) (2.494036453e-07,0) (9.133146635e-07,0) (8.753312292e-07,0) (1.469478759e-06,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (-0.06251041084,0) (-0.02312716577,0) (0.08563757661,0) (-0.03295383896,0) (0.1276303109,0) (-0.0946764719,0) (0.1030608728,0) (-0.02550019993,0) (-0.07756067291,0) (0.0673281933,0) (-0.01850623727,0) (-0.04882195603,0) (-0.003708510075,0) (0.03411132104,0) (-0.03040281096,0) (0.01146538456,0) (0.005797797515,0) (-0.01726318207,0) (-0.0006699053532,0) (0.01111428551,0) (-0.01044438016,0) (0.007652943725,0) (-0.002009962988,0) (-0.005642980737,0) (-0.0004988181503,0) (0.003776045562,0) (-0.003277227412,0) (0.002131064227,0) (-0.0005395912934,0) (-0.001591472934,0) (-0.0002399694735,0) (0.00107812515,0) (-0.0008381556767,0) (0.0004388767921,0) (-0.000121633216,0) (-0.0003172435761,0) (-5.066889512e-05,0) (0.0002023292553,0) (-0.0001516603602,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.01463443893,0) (0.0502859929,0) (5.315895081e-05,0) (0.006332645988,0) (0.0006261451749,0) (0.001132762731,0) (0.0001182125239,0) (6.904177173e-05,0) (0.0001010741099,0) (3.162416853e-05,0) (3.679821814e-06,0) (7.147348455e-07,0) (9.262068479e-06,0) (-0.009313391119,0) (-0.02485528906,0) (2.158341618e-06,0) (-0.0009642227618,0) (-0.002752518914,0) (0.07418909208,0) (-7.592983434e-05,0) (-0.0002192988358,0) (0.01682223941,0) (-0.0001078732284,0) (-0.0002790327477,0) (0.003401814836,0) (-1.969725446e-05,0) (-7.352308847e-06,0) (0.005644203073,0) (-6.658775869e-06,0) (1.481098257e-05,0) (0.000313481762,0) (-2.012532792e-06,0) (7.210277511e-06,0) (0.0007750485214,0) (2.629829628e-06,0) (-8.184795682e-06,0) (6.597129124e-06,0) (-1.204185994e-06,0) (9.994640053e-07,0) (0.0003122689409,0) (-4.05238327e-07,0) (3.652865445e-08,0) (6.786751343e-07,0) (-1.303286861e-06,0) (2.952998217e-06,0) (4.80736646e-06,0) (-1.169838614e-06,0) (3.186477351e-06,0) (1.376395317e-05,0) (-6.663773466e-07,0) (2.4025461e-06,0) (1.489570409e-05,0) (0,0) (-0.0005631257223,0) (-0.01669247861,0) (-0.04613755182,0) (0.01626508487,0) (0,0) (-8.490090396e-06,0) (-0.005142060373,0) (-0.01336677666,0) (0.03065388695,0) (4.33680869e-19,0) (-2.601810625e-07,0) (-1.103815192e-05,0) (-3.097608686e-05,0) (0.03451093673,0) (1.016439537e-20,0) (-3.774812831e-11,0) (-0.0002830758546,0) (-0.0008602105367,0) (0.0001283005263,0) (-1.355252716e-19,0) (-2.367183435e-07,0) (-4.268285589e-06,0) (-9.777383985e-07,0) (0.006761023897,0) (5.717472394e-21,0) (-6.8364659e-07,0) (-1.612492008e-05,0) (3.081896923e-05,0) (0.0002141657343,0) (1.270549421e-21,0) (-9.918547086e-07,0) (-2.565648968e-05,0) (-1.776462113e-06,0) (0.0006078986526,0) (-1.651714247e-20,0) (-4.959282655e-07,0) (-1.532305696e-05,0) (-4.336478179e-06,0) (0.0003342957791,0) (-1.058791184e-22,0) (-2.228367745e-08,0) (-4.002309418e-07,0) (4.816661111e-07,0) (0.0001780711778,0) (2.911675756e-22,0) (-8.446585262e-08,0) (-1.506512155e-06,0) (1.160455761e-05,0) (1.071428823e-05,0) (-1.32348898e-23,0) (1.991555512e-09,0) (-3.123218372e-07,0) (-4.078876345e-06,0) (-1.21309979e-06,0) (-4.63221143e-22,0) (-9.18463487e-08,0) (-2.255974777e-06,0) (6.034671105e-06,0) (2.62148383e-05,0) (-9.264422861e-23,0) (-5.222643711e-08,0) (-1.339863123e-06,0) (5.215289271e-06,0) (1.954276747e-06,0) -(-0.003549268956,0) (-0.01343658413,0) (-0.0001521978757,0) (-0.001496542925,0) (-0.0003130291189,0) (-0.0002097587224,0) (-6.49330304e-05,0) (-5.265573046e-06,0) (-3.596734947e-05,0) (-2.229258458e-06,0) (-1.655710296e-06,0) (-1.099849986e-06,0) (-2.264328624e-06,0) (-0.02625611128,0) (0.03211320294,0) (0.003063780447,0) (0.004903291854,0) (-0.003682232749,0) (-0.01756345289,0) (0.0001924317751,0) (-0.0001384529431,0) (-0.005697965572,0) (0.0004391819773,0) (-0.000339842748,0) (-0.0004140257883,0) (-6.779946273e-06,0) (7.980037421e-06,0) (-0.001680857268,0) (1.12590218e-05,0) (-8.694108655e-06,0) (-6.689394366e-06,0) (-4.720166369e-06,0) (6.909971635e-06,0) (-0.0002119300653,0) (-7.660029649e-06,0) (-6.315433174e-06,0) (-1.237961572e-05,0) (-4.954443068e-07,0) (-7.960133638e-07,0) (-6.499462137e-05,0) (-4.636178842e-07,0) (-6.185385077e-08,0) (-1.451794079e-06,0) (8.328918145e-07,0) (-1.520070884e-06,0) (5.349167374e-07,0) (-9.861286637e-07,0) (-1.906935634e-06,0) (-4.174253742e-06,0) (-5.575045068e-07,0) (-9.86831296e-07,0) (-9.470422496e-07,0) (-8.67361738e-19,0) (0.002828880622,0) (-0.04641579736,0) (-0.001282046906,0) (0.05600852667,0) (-4.33680869e-19,0) (0.0007314810716,0) (0.01984557116,0) (-0.01589400852,0) (-0.005236486429,0) (-1.084202172e-19,0) (8.808045082e-06,0) (0.0002536017549,0) (-0.0001931366618,0) (-0.009468612536,0) (-2.710505431e-20,0) (2.225154949e-07,0) (0.001174190644,0) (-0.0008494051089,0) (-0.0003564038288,0) (0,0) (3.442811834e-05,0) (9.018351715e-06,0) (-3.090440545e-05,0) (-0.001490739516,0) (0,0) (4.609909213e-06,0) (-1.002012226e-05,0) (8.682331798e-06,0) (-0.0002109323487,0) (-2.541098842e-21,0) (3.659487597e-06,0) (-3.781049624e-05,0) (2.895905309e-05,0) (-6.605743182e-05,0) (-3.388131789e-21,0) (1.226847403e-06,0) (-9.727843585e-06,0) (8.073711052e-06,0) (-0.0001377292668,0) (8.320855081e-09,0) (4.235164736e-22,0) (-3.491009668e-08,0) (-4.928831568e-07,0) (-1.562019084e-05,0) (0,0) (3.508562431e-07,0) (-2.303710515e-06,0) (-4.342307445e-06,0) (-4.529449878e-06,0) (2.117582368e-22,0) (5.141031785e-07,0) (-2.076654126e-06,0) (-4.074920738e-06,0) (5.103558646e-06,0) (2.617659823e-07,0) (-2.117582368e-22,0) (-1.67094328e-06,0) (-4.923886331e-06,0) (-1.818172343e-06,0) (0,0) (1.916922473e-07,0) (-1.21138326e-06,0) (-5.785828522e-07,0) (1.476275077e-06,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (-1.352214984e-05,0) (-0.001516611742,0) (-0.1815201801,0) (0.001529805043,0) (-0.06184377689,0) (-1.018009989e-05,0) (0.0100894037,0) (0.002033057526,0) (1.382974519e-06,0) (0.01420621429,0) (0.001104706844,0) (1.705669872e-06,0) (0.0001243303037,0) (-0.00416102366,0) (-4.957044252e-07,0) (-2.976561439e-05,0) (-6.894765397e-05,0) (-1.167054917e-08,0) (2.109279228e-05,0) (-0.001212800252,0) (-1.454478514e-07,0) (0.0009931054366,0) (0.0001417158764,0) (1.284692074e-07,0) (1.74742353e-05,0) (-0.0004985374759,0) (-5.936260932e-08,0) (0.0002260156754,0) (4.076642451e-05,0) (3.037514902e-08,0) (1.036691613e-05,0) (-0.0002489763116,0) (-3.115196758e-08,0) (0.0001252345373,0) (6.832339961e-06,0) (1.454786252e-08,0) (2.35247391e-06,0) (-7.547512391e-05,0) (-1.072474815e-08,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.09590197642,0) (-0.1401646988,0) (-0.002985838421,0) (0.01780950172,0) (0.003649578912,0) (-0.002683292763,0) (-0.0006693273457,0) (0.0002766372549,0) (0.0002942175258,0) (-8.172856693e-05,0) (-2.758117892e-05,0) (-4.976700232e-06,0) (2.128685141e-05,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.01470014553,0) (0.01382695546,0) (-0.0003039299897,0) (-4.71970691e-05,0) (9.103863821e-05,0) (0.000163575563,0) (-9.961621062e-05,0) (-2.390391798e-05,0) (5.002522838e-05,0) (1.012786441e-05,0) (-7.88201233e-06,0) (6.23141672e-06,0) (8.301457933e-06,0) (-1.457628927e-06,0) (-0.04559196335,0) (-0.02299600676,0) (0.008358714646,0) (1.091418551e-06,0) (0.01108001222,0) (0.0001174809611,0) (1.180077153e-08,0) (-0.0004752201501,0) (-5.445124097e-06,0) (-7.103876161e-10,0) (-3.157105631e-06,0) (-9.404551985e-10,0) (-3.878017573e-05,0) (0.0003533999622,0) (2.141472362e-05,0) (3.593291973e-09,0) (7.639707444e-05,0) (-1.211070338e-09,0) (-2.325109286e-05,0) (-0.0002136717171,0) (-9.75273999e-10,0) (-2.050776465e-05,0) (2.993656717e-05,0) (-1.380484768e-10,0) (-1.387528677e-05,0) (6.936217859e-05,0) (-1.771963067e-10,0) (2.805955058e-08,0) (-1.784210166e-05,0) (8.180342229e-07,0) (4.010017397e-11,0) (-1.893631504e-05,0) (-1.860366417e-10,0) (-5.633722485e-06,0) (1.251832324e-05,0) (-1.176319828e-10,0) (-2.00923065e-06,0) (4.53804567e-06,0) (6.938893904e-18,0) (0.005994823377,0) (-7.444950055e-08,0) (-0.003435817589,0) (-0.1102116782,0) (-8.67361738e-19,0) (0.001606299893,0) (0.01230377284,0) (1.525748086e-06,0) (0.001045366821,0) (-1.355252716e-20,0) (1.798364778e-05,0) (0.0001386402286,0) (1.737100717e-08,0) (0.0002209886563,0) (-3.388131789e-21,0) (4.610365646e-07,0) (6.817192153e-05,0) (6.679547034e-09,0) (-7.354140116e-06,0) (0,0) (6.988489398e-05,0) (4.1665471e-05,0) (2.546341754e-08,0) (0.0001696441168,0) (1.016439537e-20,0) (9.362266021e-06,0) (-1.188796278e-08,0) (8.158151922e-05,0) (-8.232622071e-05,0) (8.470329473e-21,0) (7.420259143e-06,0) (-4.143616472e-09,0) (-3.256963719e-05,0) (-0.000166117142,0) (-1.694065895e-21,0) (2.488480358e-06,0) (-1.386998724e-09,0) (-6.937063544e-05,0) (5.261433427e-05,0) (1.696781277e-08,0) (4.235164736e-22,0) (-1.09460803e-11,0) (-7.964340301e-06,0) (1.633611477e-05,0) (6.352747104e-22,0) (7.199518179e-07,0) (-5.160270666e-10,0) (3.653434698e-06,0) (-3.163718351e-05,0) (-4.235164736e-22,0) (1.047169952e-06,0) (6.944596701e-07,0) (-6.615208134e-10,0) (-2.354858994e-05,0) (5.29902449e-07,0) (-4.235164736e-22,0) (-2.91384935e-10,0) (-1.338045233e-05,0) (4.545817498e-06,0) (-2.117582368e-22,0) (3.968631531e-07,0) (-1.826512278e-10,0) (3.288624992e-07,0) (-1.102174207e-05,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0.0003039026374,0.0005263748085) (0.04090131005,0.07084314711) (-0.00883687416,-0.01530591502) (0.01252654015,0.02169660398) (-0.000346879798,-0.0006008134342) (-5.135379222e-06,-8.894737729e-06) (0.001183168129,0.002049307314) (-0.00268255013,-0.004646313118) (5.808926845e-07,1.006135643e-06) (0.001574284488,0.002726740719) (-0.004459427703,-0.007723955355) (1.129113895e-06,1.955682633e-06) (0.0001341706355,0.0002323903576) (0.0003683995724,0.0006380867769) (-1.952858243e-07,-3.382449696e-07) (-4.227609596e-05,-7.322434614e-05) (9.017141291e-05,0.0001561814685) (-1.85615821e-08,-3.214960327e-08) (3.392569073e-05,5.876102003e-05) (0.0002193194444,0.0003798724208) (-9.853361838e-08,-1.706652333e-07) (0.0001346486464,0.0002332182967) (-0.0003281340941,-0.0005683449226) (7.513718213e-08,1.30141417e-07) (2.344440262e-05,4.060689649e-05) (4.508202613e-05,7.808435976e-05) (-2.665283983e-08,-4.616407275e-08) (3.529806653e-05,6.113804464e-05) (-8.179885248e-05,-0.0001416797685) (1.80411161e-08,3.12481297e-08) (3.253944728e-05,5.635997594e-05) (1.08655697e-05,1.881971877e-05) (-1.708094113e-08,-2.958505788e-08) (1.043761257e-05,1.807847528e-05) (-3.251583845e-05,-5.631908425e-05) (8.68155776e-09,1.503689913e-08) (1.137503137e-05,1.970213227e-05) (5.505628404e-07,9.536028123e-07) (-4.783889003e-09,-8.285938811e-09) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.02101305131,0.03639567249) (-0.01883018317,-0.03261483397) (0.0001264463693,0.0002190115361) (6.834581865e-05,0.0001183784304) (-9.063998106e-05,-0.0001569930524) (-0.0002675942571,-0.0004634868491) (9.461888584e-05,0.0001638847176) (6.093280015e-05,0.0001055387057) (-5.903420635e-05,-0.0001022502448) (-2.685320506e-05,-4.65111155e-05) (8.271937295e-06,1.432741567e-05) (-3.536237701e-06,-6.124943366e-06) (-1.181918528e-05,-2.04714294e-05) (0.01305259065,0.02260775017) (-1.972421406e-05,-3.41633409e-05) (-3.139793852e-05,-5.438282477e-05) (-0.001208003877,-0.002092324091) (1.712798772e-06,2.966654497e-06) (-0.01682721675,-0.02914559437) (-2.585942318e-05,-4.47898348e-05) (9.67925942e-09,1.67649691e-08) (0.0005877851435,0.001018073733) (1.150133528e-06,1.992089707e-06) (-3.493905947e-10,-6.051622618e-10) (6.952941289e-06,1.204284757e-05) (8.190971413e-08,1.418717865e-07) (1.32217184e-05,2.290068804e-05) (-0.0004639768554,-0.0008036314871) (-6.629958665e-10,-1.148342526e-09) (1.637002792e-05,2.835372008e-05) (-0.0002004334016,-0.0003471608352) (9.621648201e-11,1.666518354e-10) (-1.475131992e-05,-2.555003558e-05) (0.0002859360877,0.0004952558317) (1.363844101e-07,2.362247277e-07) (8.972964103e-10,1.554162972e-09) (-1.642133626e-05,-2.844258873e-05) (6.808895039e-11,1.179335215e-10) (8.86002333e-06,1.534601056e-05) (-0.0001070329349,-0.0001853864814) (1.530817236e-11,2.651453229e-11) (1.09037461e-06,1.888584223e-06) (-4.296340024e-06,-7.441479207e-06) (2.752512015e-10,4.767490659e-10) (-7.394344286e-07,-1.280737999e-06) (1.652763697e-05,2.862670696e-05) (7.276235857e-11,1.260281019e-10) (3.451371935e-06,5.977951547e-06) (-1.976500436e-05,-3.423399176e-05) (3.583427253e-11,6.206678068e-11) (3.65150322e-06,6.3245891e-06) (-1.973991048e-05,-3.419052789e-05) (0,-4.33680869e-19) (-0.0008395542634,-0.00145415064) (0.02522679048,0.04369408282) (-3.126224837e-05,-5.414780254e-05) (-0.01100183246,-0.01905573281) (1.626303259e-19,-4.878909776e-19) (6.005470316e-05,0.0001040177971) (-0.003199103504,-0.005541009808) (9.138118664e-07,1.582768581e-06) (-0.002344817337,-0.004061342763) (1.863472484e-20,4.065758147e-20) (5.727926757e-07,9.921060165e-07) (-1.287812239e-05,-2.230556228e-05) (8.725406379e-09,1.511284716e-08) (-0.000335289152,-0.0005807378464) (-2.117582368e-22,2.117582368e-22) (1.81243952e-09,3.139237334e-09) (-1.242058352e-05,-2.151308171e-05) (3.802120767e-09,6.585466345e-09) (2.538152278e-06,4.396208702e-06) (2.202285663e-20,4.065758147e-20) (9.202421743e-08,1.593906201e-07) (-2.195446888e-10,-3.802625555e-10) (-5.129786172e-06,-8.885050281e-06) (-0.0002810210377,-0.0004867427153) (2.117582368e-21,-5.082197684e-21) (3.473961335e-07,6.017077536e-07) (-1.186831509e-09,-2.055652473e-09) (-7.965351864e-05,-0.0001379639413) (0.0001256283905,0.0002175947552) (-6.352747104e-22,2.541098842e-21) (-9.779151322e-07,-1.693798695e-06) (5.110513569e-09,8.851669155e-09) (3.289864391e-06,5.698212276e-06) (0.0001171394555,0.0002028914885) (9.529120657e-21,1.270549421e-21) (-3.844266251e-07,-6.658464465e-07) (2.55914016e-09,4.432560781e-09) (2.632175311e-05,4.559061372e-05) (-6.372623528e-05,-0.0001103770773) (-2.223461487e-21,1.905824131e-21) (-3.632365662e-09,-6.291441879e-09) (1.155167341e-11,2.000808525e-11) (6.979756536e-06,1.208929295e-05) (-3.434954941e-05,-5.94951648e-05) (4.764560328e-22,4.235164736e-22) (-4.430089943e-08,-7.673140864e-08) (9.242620673e-11,1.60086886e-10) (-7.708935966e-06,-1.335226877e-05) (2.033211796e-05,3.521626133e-05) (-5.29395592e-23,-1.058791184e-22) (2.732028175e-11,4.732011607e-11) (-2.030819374e-07,-3.517482337e-07) (4.158427398e-10,7.202607533e-10) (5.390575629e-06,9.336750872e-06) (-2.64697796e-22,-1.376428539e-21) (-3.944424504e-08,-6.831943648e-08) (1.737627841e-10,3.009659705e-10) (1.261265833e-05,2.184576504e-05) (-1.944658249e-05,-3.36824689e-05) (1.588186776e-22,1.455837878e-21) (-1.766566272e-08,-3.059782538e-08) (8.522954168e-11,1.476218965e-10) (2.700280003e-06,4.67702216e-06) (-4.74143023e-06,-8.212398059e-06) -(0.01677258801,0.02905097462) (0.02573064519,0.04456678478) (0.001794210947,0.00310766452) (-0.003074644141,-0.005325439867) (-0.0009164076666,-0.001587264639) (0.0004100621676,0.0007102485086) (0.0001761695175,0.000305134555) (-2.713117662e-05,-4.699257638e-05) (-6.232953669e-05,-0.0001079579244) (7.706117781e-06,1.334738753e-05) (6.57026234e-06,1.138002819e-05) (2.192435553e-06,3.797409769e-06) (-3.737819008e-06,-6.474092431e-06) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.0411321873,0) (-0.008339062533,0) (0.0006096469769,0) (-0.001541034196,0) (0.0003931502828,0) (-1.829129434e-05,0) (-1.884297833e-05,0) (-5.725387206e-06,0) (6.503070519e-06,0) (1.447036132e-05,0) (-3.098376047e-06,0) (4.108944902e-07,0) (2.993889774e-06,0) (-0.003692931319,0) (6.684943117e-06,0) (0.006341380197,0) (-0.0001230406465,0) (-2.74369599e-07,0) (-0.04913856285,0) (6.893948142e-06,0) (1.71308782e-08,0) (0.007067222778,0) (1.30112031e-05,0) (-5.544016143e-08,0) (-0.002630298682,0) (1.854554824e-10,0) (-4.611068783e-08,0) (0.0005833114635,0) (-4.475959074e-11,0) (-3.716938248e-07,0) (-5.172975408e-06,0) (-6.23653338e-11,0) (-9.518968852e-07,0) (-7.449260097e-05,0) (-2.062491615e-07,0) (-6.585442473e-11,0) (-1.207582855e-06,0) (4.133017006e-11,0) (9.861243906e-08,0) (4.383718543e-05,0) (-2.959197357e-12,0) (9.323612458e-08,0) (3.492314996e-06,0) (-6.522504806e-10,0) (-1.657548191e-06,0) (-1.703770788e-06,0) (4.242558686e-11,0) (4.549582158e-07,0) (2.634266796e-06,0) (4.460116865e-11,0) (8.116553402e-07,0) (6.443219229e-06,0) (-3.252606517e-18,0) (0.0004829576041,0) (0.0001242870854,0) (5.888692216e-06,0) (0.04723623807,0) (-1.029992064e-18,0) (3.294780257e-06,0) (0.001149751687,0) (-3.89436725e-06,0) (-0.04242691604,0) (-1.778769189e-20,0) (-2.768655948e-10,0) (-2.949608241e-08,0) (-2.64989249e-10,0) (-0.001090599805,0) (1.016439537e-20,0) (3.933175975e-11,0) (0.0002019770285,0) (3.09697559e-07,0) (0.0003194157652,0) (-2.541098842e-21,0) (-1.91547415e-10,0) (-2.098780887e-11,0) (-1.35141104e-08,0) (-0.0001132326063,0) (6.088049308e-22,0) (-2.624027897e-08,0) (-5.605204444e-10,0) (-2.631350537e-06,0) (-2.46417407e-05,0) (2.713152409e-22,0) (1.457134286e-09,0) (-1.394145316e-10,0) (-1.684666273e-07,0) (-8.469855444e-06,0) (2.117582368e-22,0) (-5.243764032e-09,0) (-1.348940671e-10,0) (5.599469354e-08,0) (-1.022219073e-05,0) (1.694065895e-21,0) (1.779518342e-09,0) (2.80884512e-11,0) (1.111762798e-07,0) (5.549890313e-05,0) (-2.514629062e-22,0) (1.163451117e-08,0) (-2.697230875e-10,0) (-7.446974375e-06,0) (-5.385302829e-06,0) (-7.754818243e-26,0) (3.272970404e-10,0) (-3.370708344e-09,0) (9.449748969e-13,0) (3.578609755e-09,0) (7.610061635e-23,0) (9.0329589e-09,0) (1.116684355e-10,0) (8.917771118e-07,0) (5.110647247e-06,0) (4.63221143e-23,0) (2.385951371e-08,0) (1.501339326e-10,0) (2.921382097e-06,0) (1.83702408e-06,0) -(0.02917389264,0) (0.008838028944,0) (-0.001424096841,0) (0.001390526193,0) (-0.0003488462539,0) (3.20272016e-05,0) (1.878777362e-05,0) (1.011353251e-06,0) (-9.024838172e-06,0) (-5.66671952e-06,0) (1.99122386e-06,0) (-5.609910046e-07,0) (-2.414963783e-06,0) (3.131764434e-06,0) (0.02113859613,0) (-0.02661209925,0) (-7.166687639e-05,0) (4.97322524e-07,0) (0.03782720766,0) (-5.177796953e-06,0) (-1.043334764e-08,0) (-0.004535076858,0) (-4.088571921e-05,0) (7.933896824e-08,0) (0.001461529417,0) (-1.081506332e-10,0) (9.410884509e-08,0) (-0.0002381860178,0) (1.194202806e-06,0) (-4.647773923e-10,0) (1.261180451e-06,0) (1.372863619e-10,0) (1.038364612e-06,0) (4.216515965e-05,0) (9.30177865e-11,0) (2.694383648e-07,0) (2.749813509e-06,0) (-2.841116772e-11,0) (-1.995626923e-07,0) (-3.784413631e-05,0) (1.343156087e-10,0) (4.046369427e-06,0) (2.801726811e-06,0) (6.603081789e-07,0) (-1.781739592e-10,0) (-1.048868705e-07,0) (-4.49845343e-11,0) (-4.575800789e-07,0) (-3.241043012e-06,0) (-4.809009413e-11,0) (-7.612857105e-07,0) (-3.494038197e-06,0) (0,0) (-0.0001781248725,0) (-5.875863018e-06,0) (-0.00325358254,0) (-0.03202255516,0) (-8.67361738e-19,0) (2.27129912e-06,0) (-0.002309571161,0) (4.314038673e-06,0) (0.02951567944,0) (0,0) (9.109152453e-08,0) (7.736946357e-07,0) (6.824590353e-09,0) (0.002846967579,0) (0,0) (-1.380258363e-08,0) (-0.00014659622,0) (-2.405362853e-07,0) (-0.000837203801,0) (0,0) (1.804379704e-07,0) (1.404322281e-07,0) (4.172190712e-10,0) (0.0002216784642,0) (0,0) (2.542909593e-08,0) (2.030650731e-10,0) (-3.866749846e-08,0) (3.31291695e-05,0) (-2.64697796e-23,0) (-1.148514282e-08,0) (-6.330232694e-10,0) (-4.027290359e-06,0) (-3.296411943e-06,0) (0,0) (-1.548017159e-09,0) (-4.061005464e-11,0) (4.700979461e-08,0) (-5.014173148e-06,0) (-4.001910504e-10,0) (-8.470329473e-22,0) (-4.040786576e-12,0) (-5.617850981e-07,0) (-2.586134062e-05,0) (5.29395592e-23,0) (7.229839581e-09,0) (2.418124915e-10,0) (6.181658491e-06,0) (1.538533616e-06,0) (-2.64697796e-23,0) (5.335196032e-09,0) (3.786615396e-07,0) (-2.026498209e-10,0) (1.980117903e-07,0) (-6.313576244e-09,0) (0,0) (-1.199476441e-10,0) (-1.961240248e-06,0) (-3.991018329e-06,0) (-2.117582368e-22,0) (-1.197908084e-08,0) (-2.132048396e-10,0) (-1.09602752e-06,0) (-5.6965094e-07,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0.0616499241,0) (-0.05612508663,0) (-0.005524837477,0) (-0.09849767551,0) (0.003987118413,0) (0.0945105571,0) (-0.03774692604,0) (-0.03968505748,0) (0.07743198352,0) (-0.01322794725,0) (-0.0355135707,0) (0.04874151795,0) (-0.03985523459,0) (0.009503484414,0) (0.03035175017,0) (-0.02158210048,0) (0.004347737172,0) (0.01723436331,0) (-0.01398296519,0) (0.00355609991,0) (0.01042686528,0) (-0.002231696874,0) (-0.003401939794,0) (0.005633636669,0) (-0.004236003097,0) (0.0009642830837,0) (0.003271720014,0) (-0.0007253584191,0) (-0.0008634759321,0) (0.001588834351,0) (-0.000973594934,0) (0.0001368578979,0) (0.0008367370361,0) (-6.904381328e-05,0) (-0.0002476788081,0) (0.0003167226213,0) (-0.0001631146387,0) (1.171560823e-05,0) (0.0001513990305,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.0006430541106,0) (-0.002209624475,0) (-2.335865557e-06,0) (-0.0002782637621,0) (-2.751354053e-05,0) (-4.977489973e-05,0) (-5.19439452e-06,0) (-3.03377501e-06,0) (-4.441312862e-06,0) (-1.389602407e-06,0) (-1.616956109e-07,0) (-3.140627274e-08,0) (-4.069859621e-07,0) (-0.02315446542,0) (0.02486709624,0) (-0.0002113144789,0) (-0.002883591821,0) (0.002752586386,0) (-0.002965630851,0) (-0.0002318971576,0) (0.0002190437346,0) (-0.0007133624739,0) (-0.0002270707624,0) (0.0002787001547,0) (-0.0001841079618,0) (1.946548646e-05,0) (-1.743881751e-05,0) (-0.0002488508671,0) (6.647567465e-06,0) (-1.942370938e-05,0) (-1.356825305e-06,0) (2.009289265e-06,0) (-7.120632471e-06,0) (-2.917357685e-05,0) (2.017518414e-06,0) (8.169870928e-06,0) (-1.023318319e-05,0) (1.202217678e-06,0) (7.088695561e-07,0) (-1.562354862e-05,0) (4.044755587e-07,0) (3.404607548e-08,0) (-4.521418737e-07,0) (1.300895681e-06,0) (-2.972631304e-06,0) (1.388004183e-06,0) (1.167951802e-06,0) (1.454595627e-06,0) (-3.315964822e-06,0) (6.652579445e-07,0) (1.014281671e-06,0) (-2.410363274e-06,0) (2.168404345e-18,0) (-0.001830745551,0) (-0.04184804203,0) (0.04614153827,0) (-0.0003918889316,0) (8.67361738e-19,0) (-1.505671622e-05,0) (-0.0107099765,0) (0.01335057348,0) (-0.003158834692,0) (-1.355252716e-20,0) (-6.739309617e-07,0) (-3.000331146e-05,0) (3.095587548e-05,0) (-0.001514871375,0) (1.355252716e-20,0) (-1.267303586e-10,0) (-0.0008741803541,0) (0.0008591989311,0) (5.958119995e-05,0) (-2.117582368e-21,0) (-6.219833605e-07,0) (4.261561381e-06,0) (-4.506042692e-06,0) (-0.0002959797984,0) (-2.117582368e-22,0) (-2.325279806e-06,0) (1.61001834e-05,0) (1.56959449e-05,0) (-3.949717088e-05,0) (-4.235164736e-21,0) (-2.219766983e-06,0) (2.561091166e-05,0) (-3.502433912e-05,0) (-1.382955411e-05,0) (5.29395592e-21,0) (-1.682357216e-06,0) (1.529640096e-05,0) (-6.160454092e-06,0) (-2.125727712e-05,0) (0,0) (-7.037685441e-08,0) (3.9958929e-07,0) (2.960709067e-07,0) (-8.452535281e-06,0) (1.058791184e-22,0) (-1.588206347e-07,0) (1.504087388e-06,0) (-4.685734219e-06,0) (2.429661067e-06,0) (0,0) (-2.96845995e-10,0) (-7.277574765e-07,0) (4.071144148e-06,0) (-3.096918026e-06,0) (-4.367513634e-22,0) (-3.56383646e-07,0) (2.252412441e-06,0) (2.637815303e-06,0) (-5.847758739e-06,0) (-1.32348898e-23,0) (-2.276567175e-07,0) (1.337660336e-06,0) (1.200711633e-06,0) (-2.564584225e-06,0) -(-0.01091369342,0) (-0.04131632783,0) (-0.0004679952334,0) (-0.004601739364,0) (-0.0009625373212,0) (-0.000644989832,0) (-0.0001996634222,0) (-1.619117925e-05,0) (-0.0001105964721,0) (-6.854775913e-06,0) (-5.091165187e-06,0) (-3.381943069e-06,0) (-6.962613624e-06,0) (0.02620752866,0) (0.002224269497,0) (-0.001000892129,0) (0.0003047929621,0) (0.003673383099,0) (-0.05422961591,0) (-1.170549913e-05,0) (0.0001381032981,0) (-0.01748116626,0) (5.58488008e-05,0) (0.0003390297478,0) (-0.001362512354,0) (6.763664198e-06,0) (2.347166408e-06,0) (-0.005173910596,0) (-1.001395262e-05,0) (8.679345149e-06,0) (-1.134781363e-05,0) (4.708510543e-06,0) (-1.51237669e-05,0) (-0.0006345178053,0) (7.640857198e-06,0) (-8.106428758e-06,0) (-8.057400327e-05,0) (4.942920937e-07,0) (-1.090440533e-06,0) (-0.0002032277807,0) (4.625928184e-07,0) (-3.831370518e-06,0) (-2.711142746e-06,0) (-2.393650938e-06,0) (1.517526643e-06,0) (4.079308649e-07,0) (9.838166031e-07,0) (-2.85806264e-06,0) (-1.98571424e-05,0) (5.56293275e-07,0) (-1.496586117e-06,0) (-6.720478032e-06,0) (-2.168404345e-19,0) (4.480721443e-05,0) (0.04632333236,0) (-0.001379381288,0) (-0.01073557061,0) (0,0) (2.884086942e-05,0) (0.002367327906,0) (0.01585694053,0) (-0.01995489753,0) (0,0) (-5.527808322e-07,0) (2.718459272e-06,0) (0.0001926337373,0) (-0.02909695075,0) (0,0) (-4.47964897e-09,0) (-9.694780846e-05,0) (0.0008472184569,0) (-0.0008468054569,0) (5.421010862e-20,0) (-2.241467871e-06,0) (-2.480320484e-06,0) (3.082178995e-05,0) (-0.004571428628,0) (1.355252716e-20,0) (-3.003345517e-07,0) (9.997786745e-06,0) (1.10553403e-06,0) (-0.0006493401365,0) (0,0) (-2.479739066e-07,0) (3.770913572e-05,0) (-0.0001390322279,0) (-0.0001175146047,0) (0,0) (-8.278796515e-08,0) (9.703906891e-06,0) (4.395115462e-06,0) (-0.0004388356181,0) (-3.966417036e-10,0) (0,0) (3.483258316e-08,0) (-1.062099363e-06,0) (-4.860039762e-05,0) (-8.470329473e-22,0) (-1.83956344e-08,0) (2.297772888e-06,0) (-2.83623588e-05,0) (-7.201757854e-06,0) (0,0) (-3.23672139e-08,0) (-3.897417542e-06,0) (4.070176231e-06,0) (-1.782127644e-06,0) (-1.71723915e-08,0) (0,0) (1.666924655e-06,0) (-8.914065602e-06,0) (-1.780002849e-05,0) (0,0) (-3.673872713e-09,0) (1.208697071e-06,0) (-1.088177979e-06,0) (-4.919808827e-07,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (-0.06251041084,0) (-0.02312716577,0) (0.08563757661,0) (-0.03295383896,0) (0.1276303109,0) (-0.0946764719,0) (0.1030608728,0) (-0.02550019993,0) (-0.07756067291,0) (0.0673281933,0) (-0.01850623727,0) (-0.04882195603,0) (-0.003708510075,0) (0.03411132104,0) (-0.03040281096,0) (0.01146538456,0) (0.005797797515,0) (-0.01726318207,0) (-0.0006699053532,0) (0.01111428551,0) (-0.01044438016,0) (0.007652943725,0) (-0.002009962988,0) (-0.005642980737,0) (-0.0004988181503,0) (0.003776045562,0) (-0.003277227412,0) (0.002131064227,0) (-0.0005395912934,0) (-0.001591472934,0) (-0.0002399694735,0) (0.00107812515,0) (-0.0008381556767,0) (0.0004388767921,0) (-0.000121633216,0) (-0.0003172435761,0) (-5.066889512e-05,0) (0.0002023292553,0) (-0.0001516603602,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.01463443893,0) (0.0502859929,0) (5.315895081e-05,0) (0.006332645988,0) (0.0006261451749,0) (0.001132762731,0) (0.0001182125239,0) (6.904177173e-05,0) (0.0001010741099,0) (3.162416853e-05,0) (3.679821814e-06,0) (7.147348455e-07,0) (9.262068479e-06,0) (-0.009313391119,0) (-0.02485528906,0) (2.158341618e-06,0) (-0.0009642227618,0) (-0.002752518914,0) (0.07418909208,0) (-7.592983434e-05,0) (-0.0002192988358,0) (0.01682223941,0) (-0.0001078732284,0) (-0.0002790327477,0) (0.003401814836,0) (-1.969725446e-05,0) (-7.352308847e-06,0) (0.005644203073,0) (-6.658775869e-06,0) (1.481098257e-05,0) (0.000313481762,0) (-2.012532792e-06,0) (7.210277511e-06,0) (0.0007750485214,0) (2.629829628e-06,0) (-8.184795682e-06,0) (6.597129124e-06,0) (-1.204185994e-06,0) (9.994640053e-07,0) (0.0003122689409,0) (-4.05238327e-07,0) (3.652865445e-08,0) (6.786751343e-07,0) (-1.303286861e-06,0) (2.952998217e-06,0) (4.80736646e-06,0) (-1.169838614e-06,0) (3.186477351e-06,0) (1.376395317e-05,0) (-6.663773466e-07,0) (2.4025461e-06,0) (1.489570409e-05,0) (0,0) (-0.0005631257223,0) (-0.01669247861,0) (-0.04613755182,0) (0.01626508487,0) (2.439454888e-19,0) (-8.490090396e-06,0) (-0.005142060373,0) (-0.01336677666,0) (0.03065388695,0) (4.607859233e-19,0) (-2.601810625e-07,0) (-1.103815192e-05,0) (-3.097608686e-05,0) (0.03451093673,0) (1.016439537e-20,0) (-3.774812831e-11,0) (-0.0002830758546,0) (-0.0008602105367,0) (0.0001283005263,0) (-1.355252716e-19,0) (-2.367183435e-07,0) (-4.268285589e-06,0) (-9.777383985e-07,0) (0.006761023897,0) (6.035109749e-21,0) (-6.8364659e-07,0) (-1.612492008e-05,0) (3.081896923e-05,0) (0.0002141657343,0) (1.482307658e-21,0) (-9.918547086e-07,0) (-2.565648968e-05,0) (-1.776462113e-06,0) (0.0006078986526,0) (-1.672890071e-20,0) (-4.959282655e-07,0) (-1.532305696e-05,0) (-4.336478179e-06,0) (0.0003342957791,0) (1.058791184e-22,0) (-2.228367745e-08,0) (-4.002309418e-07,0) (4.816661111e-07,0) (0.0001780711778,0) (2.382280164e-22,0) (-8.446585262e-08,0) (-1.506512155e-06,0) (1.160455761e-05,0) (1.071428823e-05,0) (-1.32348898e-23,0) (1.991555512e-09,0) (-3.123218372e-07,0) (-4.078876345e-06,0) (-1.21309979e-06,0) (-3.97046694e-22,0) (-9.18463487e-08,0) (-2.255974777e-06,0) (6.034671105e-06,0) (2.62148383e-05,0) (-6.6174449e-23,0) (-5.222643711e-08,0) (-1.339863123e-06,0) (5.215289271e-06,0) (1.954276747e-06,0) -(-0.003549268956,0) (-0.01343658413,0) (-0.0001521978757,0) (-0.001496542925,0) (-0.0003130291189,0) (-0.0002097587224,0) (-6.49330304e-05,0) (-5.265573046e-06,0) (-3.596734947e-05,0) (-2.229258458e-06,0) (-1.655710296e-06,0) (-1.099849986e-06,0) (-2.264328624e-06,0) (-0.02625611128,0) (0.03211320294,0) (0.003063780447,0) (0.004903291854,0) (-0.003682232749,0) (-0.01756345289,0) (0.0001924317751,0) (-0.0001384529431,0) (-0.005697965572,0) (0.0004391819773,0) (-0.000339842748,0) (-0.0004140257883,0) (-6.779946273e-06,0) (7.980037421e-06,0) (-0.001680857268,0) (1.12590218e-05,0) (-8.694108655e-06,0) (-6.689394366e-06,0) (-4.720166369e-06,0) (6.909971635e-06,0) (-0.0002119300653,0) (-7.660029649e-06,0) (-6.315433174e-06,0) (-1.237961572e-05,0) (-4.954443068e-07,0) (-7.960133638e-07,0) (-6.499462137e-05,0) (-4.636178842e-07,0) (-6.185385077e-08,0) (-1.451794079e-06,0) (8.328918145e-07,0) (-1.520070884e-06,0) (5.349167374e-07,0) (-9.861286637e-07,0) (-1.906935634e-06,0) (-4.174253742e-06,0) (-5.575045068e-07,0) (-9.86831296e-07,0) (-9.470422496e-07,0) (0,0) (0.002828880622,0) (-0.04641579736,0) (-0.001282046906,0) (0.05600852667,0) (-4.33680869e-19,0) (0.0007314810716,0) (0.01984557116,0) (-0.01589400852,0) (-0.005236486429,0) (0,0) (8.808045082e-06,0) (0.0002536017549,0) (-0.0001931366618,0) (-0.009468612536,0) (-5.421010862e-20,0) (2.225154949e-07,0) (0.001174190644,0) (-0.0008494051089,0) (-0.0003564038288,0) (0,0) (3.442811834e-05,0) (9.018351715e-06,0) (-3.090440545e-05,0) (-0.001490739516,0) (0,0) (4.609909213e-06,0) (-1.002012226e-05,0) (8.682331798e-06,0) (-0.0002109323487,0) (-5.082197684e-21,0) (3.659487597e-06,0) (-3.781049624e-05,0) (2.895905309e-05,0) (-6.605743182e-05,0) (-3.388131789e-21,0) (1.226847403e-06,0) (-9.727843585e-06,0) (8.073711052e-06,0) (-0.0001377292668,0) (8.320855081e-09,0) (0,0) (-3.491009668e-08,0) (-4.928831568e-07,0) (-1.562019084e-05,0) (-1.058791184e-22,0) (3.508562431e-07,0) (-2.303710515e-06,0) (-4.342307445e-06,0) (-4.529449878e-06,0) (2.117582368e-22,0) (5.141031785e-07,0) (-2.076654126e-06,0) (-4.074920738e-06,0) (5.103558646e-06,0) (2.617659823e-07,0) (0,0) (-1.67094328e-06,0) (-4.923886331e-06,0) (-1.818172343e-06,0) (0,0) (1.916922473e-07,0) (-1.21138326e-06,0) (-5.785828522e-07,0) (1.476275077e-06,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0.08286250691,0) (0.02431037598,0) (0.06871438145,0) (0.04930718395,0) (0.09326492082,0) (0.1255216072,0) (0.1061377676,0) (0.01064733091,0) (0.1028501942,0) (0.06073138578,0) (0.01278119823,0) (0.06474155448,0) (0.02720911517,0) (0.01856972471,0) (0.04031468813,0) (0.02489475137,0) (0.001098999625,0) (0.02289168401,0) (0.01002216348,0) (0.005704391145,0) (0.01384947954,0) (0.007451325099,0) (0.001045456362,0) (0.007482962107,0) (0.00281298841,0) (0.002121681757,0) (0.004345654447,0) (0.002153156807,0) (0.0002431658316,0) (0.002110392238,0) (0.000552027313,0) (0.0007100396512,0) (0.001111378275,0) (0.0003829383684,0) (9.474450534e-05,0) (0.0004206906223,0) (8.459498418e-05,0) (0.0001437766924,0) (0.0002010868071,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.01151542489,0) (0.03956862145,0) (4.182927054e-05,0) (0.004982979502,0) (0.0004926958775,0) (0.0008913388619,0) (9.301808191e-05,0) (5.432701179e-05,0) (7.953235012e-05,0) (2.488416119e-05,0) (2.895547407e-06,0) (5.624045764e-07,0) (7.288058967e-06,0) (0.01044095573,0) (0.03297631033,0) (0.0001606173415,0) (0.001446472844,0) (0.003652617632,0) (0.05815477759,0) (0.0001173327325,0) (0.0002910130741,0) (0.01321743319,0) (8.960512001e-05,0) (0.000370321967,0) (0.002702735249,0) (2.612306591e-05,0) (7.450636785e-06,0) (0.004441884828,0) (8.839061027e-06,0) (2.57761275e-05,0) (0.0002373242255,0) (2.671175919e-06,0) (1.079249771e-05,0) (0.0006061888617,0) (4.643013261e-07,0) (1.085909936e-05,0) (1.26714713e-05,0) (1.598089418e-06,0) (2.20050347e-07,0) (0.0002471462147,0) (5.375848748e-07,0) (1.919689554e-09,0) (8.5178208e-07,0) (1.732231442e-06,0) (4.45895687e-06,0) (2.579457553e-06,0) (1.552409348e-06,0) (1.30742986e-06,0) (1.287012362e-05,0) (8.842413405e-07,0) (1.047868629e-06,0) (1.304197819e-05,0) (-6.505213035e-19,0) (0.0009533201785,0) (0.01896428393,0) (0.06121497228,0) (0.0125521507,0) (-3.252606517e-19,0) (4.931195373e-06,0) (0.004185764753,0) (0.017738704,0) (0.02547954574,0) (-1.219727444e-18,0) (3.110674544e-07,0) (1.42753078e-05,0) (4.111206382e-05,0) (0.02715447401,0) (1.355252716e-20,0) (6.693630906e-11,0) (0.0004446572613,0) (0.001141388293,0) (5.175547801e-05,0) (-2.710505431e-20,0) (2.896624921e-07,0) (5.66493273e-06,0) (2.653219922e-06,0) (0.005319222649,0) (4.446922973e-21,0) (1.23469439e-06,0) (2.140210977e-05,0) (1.142126714e-05,0) (0.0001911500099,0) (4.235164736e-21,0) (9.22882494e-07,0) (3.405631521e-05,0) (2.500444833e-05,0) (0.000468632467,0) (-1.270549421e-20,0) (8.923175134e-07,0) (2.033674126e-05,0) (1.365401367e-06,0) (0.0002679810755,0) (-3.388131789e-21,0) (3.61685241e-08,0) (5.311357506e-07,0) (1.40319171e-07,0) (0.0001405914279,0) (7.676236084e-22,0) (5.585209319e-08,0) (1.999539627e-06,0) (1.227245632e-05,0) (6.248313256e-06,0) (2.64697796e-23,0) (1.724997877e-09,0) (3.122744061e-07,0) (5.411018301e-06,0) (1.415448965e-06,0) (8.999725065e-22,0) (1.989853278e-07,0) (2.994061638e-06,0) (2.564169571e-06,0) (2.415994883e-05,0) (-5.29395592e-23,0) (1.319703087e-07,0) (1.777963699e-06,0) (3.027655855e-06,0) (3.402615008e-06,0) -(0.00553605759,0) (0.02095803515,0) (0.0002373942959,0) (0.002334268809,0) (0.0004882546943,0) (0.0003271762106,0) (0.0001012808553,0) (8.213104159e-06,0) (5.610093811e-05,0) (3.477139478e-06,0) (2.582533942e-06,0) (1.715517459e-06,0) (3.531841012e-06,0) (0.03483145319,0) (0.02253296123,0) (0.003063275652,0) (0.003468356907,0) (0.004882815777,0) (0.02756244955,0) (0.0001539254955,0) (0.0001835979054,0) (0.008857709221,0) (0.0002891550959,0) (0.0004506771526,0) (0.0007129915528,0) (8.993340896e-06,0) (4.250060433e-06,0) (0.002625833686,0) (1.60314874e-05,0) (1.152525194e-05,0) (3.496369595e-06,0) (6.261644115e-06,0) (1.658833738e-05,0) (0.0003176578563,0) (1.01594509e-05,0) (1.337741548e-06,0) (5.129237847e-05,0) (6.572109132e-07,0) (2.20383207e-07,0) (0.0001039161773,0) (6.150600883e-07,0) (2.836013573e-06,0) (9.454592508e-07,0) (2.430401289e-06,0) (2.015296627e-06,0) (9.633593424e-08,0) (1.307998808e-06,0) (7.127991709e-07,0) (1.179406541e-05,0) (7.39491486e-07,0) (3.820896297e-07,0) (4.342680978e-06,0) (0,0) (0.002099748074,0) (0.06156955733,0) (7.114789054e-05,0) (0.05029811769,0) (0,0) (0.0005299594019,0) (0.01318363225,0) (0.02107802791,0) (0.01106375401,0) (2.168404345e-19,0) (7.058923414e-06,0) (0.0001891960434,0) (0.0002561189377,0) (0.01475511786,0) (0,0) (1.711878633e-07,0) (0.0009584736151,0) (0.001126274353,0) (0.0003682274248,0) (-2.710505431e-20,0) (2.7652106e-05,0) (8.673773527e-06,0) (4.097130545e-05,0) (0.002315825677,0) (0,0) (3.702756937e-06,0) (1.329608283e-05,0) (5.70924401e-06,0) (0.0003295600291,0) (2.541098842e-21,0) (2.946557407e-06,0) (5.015820037e-05,0) (0.0001264260713,0) (3.861267461e-05,0) (-6.776263578e-21,0) (9.875766575e-07,0) (1.29029779e-05,0) (2.779852115e-06,0) (0.0002263576027,0) (6.573952743e-09,0) (-4.235164736e-22,0) (4.630728464e-08,0) (4.275873786e-07,0) (2.47925857e-05,0) (3.705769144e-22,0) (2.784547616e-07,0) (3.05584326e-06,0) (1.806598778e-05,0) (2.003963724e-06,0) (4.235164736e-22,0) (4.120885495e-07,0) (1.368540015e-06,0) (5.405814955e-06,0) (5.188382974e-06,0) (2.103438461e-07,0) (-8.470329473e-22,0) (2.21632634e-06,0) (2.994934864e-06,0) (1.202228621e-05,0) (-1.058791184e-22,0) (1.473351266e-07,0) (1.60672927e-06,0) (3.824359347e-07,0) (1.483102828e-06,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (1.792468198e-05,0) (0.0015942032,0) (-0.1456492277,0) (-0.002288970907,0) (-0.04519188989,0) (1.349672706e-05,0) (0.01039062405,0) (-0.0008488810399,0) (-1.833908765e-06,0) (0.01281429128,0) (-0.0007629577502,0) (-2.261845447e-06,0) (-0.0009122039538,0) (-0.002265202916,0) (6.573132114e-07,0) (-6.462997956e-05,0) (-1.306935015e-05,0) (1.547562452e-08,0) (-0.0003155601183,0) (-0.000622467995,0) (1.928670741e-07,0) (0.0009669418372,0) (-7.371168797e-05,0) (-1.703585845e-07,0) (-9.854256778e-05,0) (-0.0002801178774,0) (7.871574193e-08,0) (0.0002283587626,0) (-1.837131481e-05,0) (-4.027933956e-08,0) (-2.384812022e-05,0) (-0.0001639726644,0) (4.130690869e-08,0) (0.000109272375,0) (-5.321956378e-06,0) (-1.92916415e-08,0) (-3.927606724e-06,0) (-5.36331914e-05,0) (1.42199673e-08,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.07546254497,0) (-0.1102916257,0) (-0.00234947156,0) (0.01401379174,0) (0.002871750125,0) (-0.002111406963,0) (-0.0005266747028,0) (0.0002176780091,0) (0.0002315114256,0) (-6.430989108e-05,0) (-2.170284735e-05,0) (-3.916024248e-06,0) (1.675001957e-05,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.02292890543,0) (-0.02156692623,0) (0.0004740621088,0) (7.361676329e-05,0) (-0.0001419997048,0) (-0.0002551409173,0) (0.0001553787796,0) (3.72847108e-05,0) (-7.802805272e-05,0) (-1.579718001e-05,0) (1.229415824e-05,0) (-9.719602051e-06,0) (-1.29483986e-05,0) (1.933695861e-06,0) (-0.03199064087,0) (-0.02299221789,0) (0.005912559672,0) (-1.447272914e-06,0) (-0.01738794072,0) (9.397260481e-05,0) (-1.564861596e-08,0) (0.0007387482168,0) (-3.585040966e-06,0) (9.420694424e-10,0) (5.436834395e-06,0) (1.247478056e-09,0) (-2.065379919e-05,0) (-0.0005520810976,0) (3.049198037e-05,0) (-4.763408986e-09,0) (-3.993073118e-05,0) (1.606572917e-09,0) (-5.581744661e-05,0) (0.0003202683844,0) (1.293499994e-09,0) (4.343975792e-06,0) (-0.0001240359772,0) (1.831224303e-10,0) (3.841493541e-06,0) (-0.0001108992143,0) (2.350780239e-10,0) (-1.286536979e-06,0) (1.161940272e-05,0) (2.387046427e-06,0) (-5.316445846e-11,0) (-3.410339354e-06,0) (2.467585767e-10,0) (2.105845968e-06,0) (-3.536965701e-05,0) (1.560307562e-10,0) (7.77950799e-07,0) (-2.080929823e-05,0) (5.204170428e-18,0) (0.004449681879,0) (9.875566194e-08,0) (0.0001906725663,0) (-0.09897492918,0) (-2.168404345e-19,0) (0.001163767271,0) (0.008173532278,0) (-2.023388919e-06,0) (-0.002208672077,0) (0,0) (1.441241402e-05,0) (0.000103430604,0) (-2.303572953e-08,0) (-0.0003443707994,0) (-1.694065895e-21,0) (3.546892966e-07,0) (5.564768243e-05,0) (-8.856789814e-09,0) (7.598111631e-06,0) (0,0) (5.613041285e-05,0) (4.007349356e-05,0) (-3.375795271e-08,0) (-0.0002635377927,0) (-6.776263578e-21,0) (7.519930189e-06,0) (1.577459173e-08,0) (5.364558862e-05,0) (0.0001286262247,0) (5.082197684e-21,0) (5.974666933e-06,0) (5.496789673e-09,0) (-0.0001421887402,0) (9.710076482e-05,0) (0,0) (2.003154677e-06,0) (1.839710283e-09,0) (-2.388494044e-05,0) (-8.647148753e-05,0) (1.340554525e-08,0) (-8.470329473e-22,0) (1.451967495e-11,0) (6.909246837e-06,0) (-2.592891019e-05,0) (0,0) (5.713850495e-07,0) (6.845034665e-10,0) (-1.519996164e-05,0) (1.399723361e-05,0) (-1.270549421e-21,0) (8.393777059e-07,0) (-4.576572648e-07,0) (8.775775864e-10,0) (-2.393998219e-05,0) (4.258067386e-07,0) (4.235164736e-22,0) (3.864907411e-10,0) (8.138608507e-06,0) (-3.005827211e-05,0) (-8.470329473e-22,0) (3.050299829e-07,0) (2.42261127e-10,0) (-2.173739453e-07,0) (-1.107271747e-05,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (-0.0004028470466,-0.0006977515524) (-0.04299386424,-0.07446755728) (-0.007090582965,-0.01228124995) (-0.01874283661,-0.03246354529) (-0.0002534798879,-0.0004390400445) (6.808460863e-06,1.179260014e-05) (0.001218491756,0.00211048963) (0.001120069607,0.001940017466) (-7.702992143e-07,-1.334197376e-06) (0.001420036301,0.002459575022) (0.003079871323,0.005334493612) (-1.497289225e-06,-2.593381012e-06) (-0.0009844018759,-0.001705034064) (0.0002005515599,0.0003473654913) (2.589526051e-07,4.485190688e-07) (-9.179394658e-05,-0.0001589917793) (1.709241288e-05,2.960492753e-05) (2.461341544e-08,4.263168609e-08) (-0.0005075475471,-0.0008790981388) (0.0001125653912,0.0001949689767) (1.306577615e-07,2.263058812e-07) (0.0001311012957,0.0002270741051) (0.0001706747231,0.0002956172919) (-9.963682546e-08,-1.72576044e-07) (-0.0001322101708,-0.0002289947331) (2.533065632e-05,4.387398374e-05) (3.534207956e-08,6.121427745e-08) (3.566399888e-05,6.177185807e-05) (3.686250359e-05,6.384772911e-05) (-2.392364366e-08,-4.143696631e-08) (-7.485395282e-05,-0.0001296508494) (7.155927413e-06,1.239442985e-05) (2.264899878e-08,3.922921662e-08) (9.107253788e-06,1.577422628e-05) (2.532776104e-05,4.386896896e-05) (-1.151244726e-08,-1.994014357e-08) (-1.899134758e-05,-3.289397892e-05) (3.912341003e-07,6.776373393e-07) (6.342969012e-09,1.09863446e-08) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.01653457404,0.02863872232) (-0.01481693702,-0.02566368773) (9.949706138e-05,0.0001723339655) (5.377938606e-05,9.314862906e-05) (-7.132203009e-05,-0.0001235333798) (-0.0002105623306,-0.0003647046547) (7.44529174e-05,0.0001289562357) (4.794629208e-05,8.304541391e-05) (-4.645234247e-05,-8.045781728e-05) (-2.113002537e-05,-3.65982775e-05) (6.508952823e-06,1.127383699e-05) (-2.782565142e-06,-4.819544201e-06) (-9.300181641e-06,-1.610838712e-05) (-0.01463285707,-0.0253448519) (2.616874833e-05,4.532560167e-05) (-0.002336540875,-0.00404700751) (0.001812179585,0.003138787114) (-2.272899548e-06,-3.936777498e-06) (-0.01319038986,-0.02284642541) (3.996000794e-05,6.921276402e-05) (-1.284453257e-08,-2.224738301e-08) (0.0004618297644,0.0007999126164) (-9.553607913e-07,-1.65473343e-06) (4.636983056e-10,8.031490246e-10) (5.524098285e-06,9.568018896e-06) (-1.086310209e-07,-1.881544475e-07) (-1.339854236e-05,-2.320695611e-05) (-0.000365141319,-0.0006324433165) (8.800808196e-10,1.524344694e-09) (2.84893946e-05,4.934507893e-05) (-0.0001517399338,-0.0002628212748) (-1.277053227e-10,-2.211921074e-10) (-2.208009141e-05,-3.824384015e-05) (0.0002236392519,0.0003873545469) (2.407892199e-08,4.170591628e-08) (-1.190479427e-09,-2.061970853e-09) (-3.154137007e-05,-5.46312555e-05) (-9.036164811e-11,-1.565109656e-10) (1.950696771e-06,3.378705918e-06) (-8.471154588e-05,-0.0001467247015) (-2.03076594e-11,-3.517389786e-11) (5.730243228e-08,9.925072411e-08) (-5.392190249e-06,-9.339547476e-06) (-3.658433149e-10,-6.336592089e-10) (-1.116528349e-06,-1.933883829e-06) (8.868127353e-06,1.536004714e-05) (-9.65577339e-11,-1.67242901e-10) (1.416117621e-06,2.452787669e-06) (-1.848146722e-05,-3.201084023e-05) (-4.754985347e-11,-8.235876209e-11) (1.592600314e-06,2.75846466e-06) (-1.728333755e-05,-2.993561877e-05) (1.517883041e-18,2.602085214e-18) (0.001421288335,0.002461743608) (-0.02866009467,-0.04964074012) (4.147852654e-05,7.184291538e-05) (-0.008490374326,-0.01470575971) (-8.131516294e-20,-1.626303259e-19) (-3.488083878e-05,-6.041538497e-05) (0.002604149643,0.004510519493) (-1.212696121e-06,-2.100451296e-06) (-0.001949014841,-0.003375792729) (5.082197684e-21,-1.355252716e-20) (-6.84819863e-07,-1.186142797e-06) (1.665488592e-05,2.88471086e-05) (-1.158052873e-08,-2.005806414e-08) (-0.0002638178336,-0.0004569458917) (-3.176373552e-22,-4.235164736e-22) (-3.213881516e-09,-5.566606076e-09) (1.951032757e-05,3.379287863e-05) (-5.044923245e-09,-8.738063381e-09) (1.02387175e-06,1.773397892e-06) (-7.623296525e-21,-2.371692252e-20) (-1.126062466e-07,-1.950397403e-07) (2.913830078e-10,5.046901739e-10) (1.392033993e-05,2.411073601e-05) (-0.0002210927651,-0.0003829439024) (-1.270549421e-21,0) (-6.274119749e-07,-1.086709418e-06) (1.575244907e-09,2.728404213e-09) (-2.951896633e-05,-5.112834946e-05) (0.0001121274987,0.0001942105247) (0,1.694065895e-21) (9.099122566e-07,1.576014259e-06) (-6.783673963e-09,-1.174966797e-08) (-4.63062193e-05,-8.020472453e-05) (9.03034606e-05,0.0001564101819) (2.01170325e-21,4.235164736e-22) (6.916940092e-07,1.198049167e-06) (-3.396487491e-09,-5.882888901e-09) (-8.287775515e-06,-1.435484827e-05) (-5.108477623e-05,-8.848142792e-05) (-1.905824131e-21,-1.694065895e-21) (5.895674323e-09,1.021160747e-08) (-1.532991602e-11,-2.655219342e-11) (2.033345566e-06,3.521857829e-06) (-2.71197858e-05,-4.697284689e-05) (6.088049308e-22,4.764560328e-22) (2.929347052e-08,5.073777927e-08) (-1.226739939e-10,-2.124775902e-10) (-8.152622709e-06,-1.412075675e-05) (1.185719849e-05,2.053727021e-05) (-5.29395592e-23,1.058791184e-22) (2.366362762e-11,4.098660533e-11) (2.030510961e-07,3.51694815e-07) (-5.516550356e-10,-9.554945499e-10) (-6.289741996e-06,-1.08941527e-05) (3.176373552e-22,-7.411538288e-22) (8.545604851e-08,1.480142178e-07) (-2.306127229e-10,-3.994329529e-10) (5.359197563e-06,9.282402468e-06) (-1.792223291e-05,-3.104221799e-05) (5.29395592e-23,6.352747104e-22) (4.463913472e-08,7.731724935e-08) (-1.130973968e-10,-1.958904374e-10) (1.567605963e-06,2.715173175e-06) (-8.255361831e-06,-1.429870613e-05) -(-0.02616144742,-0.04531295613) (-0.04013399248,-0.06951411408) (-0.002798563663,-0.004847254452) (0.004795750123,0.008306482873) (0.001429388891,0.002475774183) (-0.0006396043251,-0.001107827188) (-0.0002747846405,-0.0004759409585) (4.231850505e-05,7.329780085e-05) (9.721999344e-05,0.0001683899681) (-1.201980249e-05,-2.08189086e-05) (-1.024812465e-05,-1.775027258e-05) (-3.419704066e-06,-5.923101189e-06) (5.830153065e-06,1.009812133e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.2731656004,0) (0.01615280688,0) (-0.02892567571,0) (-0.00681892694,0) (0.00311081643,0) (-0.0001242414384,0) (9.142358452e-06,0) (0.0001499983368,0) (-0.0001504484689,0) (9.162783375e-05,0) (-7.145343949e-05,0) (6.119624794e-05,0) (-3.277313972e-05,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.2695462447,0) (0.02324389201,0) (-0.03424272561,0) (-0.004333899483,0) (0.002291534039,0) (4.332848919e-05,0) (0.0001066902242,0) (-2.294053818e-05,0) (1.892984583e-05,0) (-3.739677434e-05,0) (2.322309841e-05,0) (-2.861059199e-06,0) (6.880804962e-06,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.1208306479,0) (-0.009094799051,0) (-0.002843835608,0) (4.385357727e-05,0) (0.000101455379,0) (-2.497568383e-05,0) (2.882303202e-05,0) (4.591201175e-06,0) (1.25522063e-05,0) (2.574477926e-05,0) (9.479225358e-06,0) (3.178405029e-06,0) (8.85371498e-06,0) (1.738623898e-10,0) (-0.03001102387,0) (0.1997440824,0) (-0.0001221715915,0) (-1.474070406e-10,0) (-0.02386352647,0) (-3.161081699e-06,0) (8.892664166e-13,0) (-0.0003782332269,0) (5.069147332e-07,0) (1.658455888e-13,0) (1.114472307e-05,0) (-1.500172006e-14,0) (-4.573358943e-07,0) (5.007857078e-05,0) (2.271380542e-06,0) (1.920933975e-13,0) (-1.440347086e-05,0) (3.522406586e-14,0) (-3.493952407e-06,0) (4.251167502e-05,0) (1.184301307e-14,0) (8.749326325e-07,0) (-6.649639108e-06,0) (-7.916366537e-15,0) (-3.478571729e-06,0) (4.038721491e-05,0) (5.133587681e-14,0) (-1.83560613e-06,0) (3.443235877e-05,0) (6.48529231e-07,0) (4.700311397e-15,0) (3.713046695e-06,0) (-8.486490438e-15,0) (-1.351843834e-06,0) (9.719683219e-06,0) (-1.014688338e-14,0) (-1.550010209e-06,0) (1.674276403e-05,0) (-1.734723476e-18,0) (-0.000377473387,0) (-9.424695399e-12,0) (-0.008719428334,0) (0.06301289739,0) (-4.33680869e-19,0) (4.987671827e-06,0) (-0.00143187811,0) (-4.141268852e-10,0) (-0.005892254741,0) (1.694065895e-21,0) (1.859842766e-07,0) (4.229671091e-07,0) (-6.138141033e-13,0) (-6.644558929e-05,0) (8.470329473e-22,0) (-2.859798928e-08,0) (-8.511178364e-06,0) (1.891527865e-12,0) (-1.727510638e-05,0) (-8.470329473e-22,0) (3.662671398e-07,0) (6.488075772e-07,0) (-3.437640454e-13,0) (-2.522670586e-05,0) (0,0) (5.164395866e-08,0) (2.409182211e-13,0) (-3.633301909e-07,0) (1.293020884e-05,0) (1.058791184e-22,0) (-2.328816091e-08,0) (-6.937242073e-14,0) (4.52940866e-06,0) (-8.289612776e-06,0) (0,0) (-3.139926191e-09,0) (-5.790193243e-15,0) (-4.039157833e-07,0) (1.915478012e-06,0) (-8.160659869e-10,0) (8.470329473e-22,0) (-1.266989765e-15,0) (-9.077704595e-06,0) (2.704664962e-05,0) (0,0) (1.483552381e-08,0) (5.416556846e-14,0) (-5.200987241e-06,0) (1.074630952e-05,0) (0,0) (1.08671901e-08,0) (-1.266292565e-07,0) (-3.289808164e-14,0) (-9.136562887e-07,0) (-1.278080324e-08,0) (-4.235164736e-22,0) (-2.091688994e-14,0) (-5.329587217e-06,0) (9.978394523e-06,0) (6.352747104e-22,0) (-2.480045938e-08,0) (-3.21468247e-14,0) (6.229744764e-07,0) (4.252964659e-06,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (1.333601076e-05,0) (-0.003680518671,0) (0.01171062439,0) (0.004572524643,0) (-0.001931974151,0) (1.016225988e-05,0) (-0.003695330387,0) (0.003163975381,0) (-1.380679875e-06,0) (-0.002791090092,0) (0.002119938484,0) (-1.702859645e-06,0) (0.001336173644,0) (-0.001159269776,0) (4.948719016e-07,0) (5.602991138e-05,0) (-5.170347486e-05,0) (1.165106662e-08,0) (0.0004402708215,0) (-0.0003880446353,0) (1.452039402e-07,0) (-0.0002896023254,0) (0.0002398595806,0) (-1.282564785e-07,0) (0.0001483925852,0) (-0.0001273107664,0) (5.926285014e-08,0) (-7.692981325e-05,0) (6.523609042e-05,0) (-3.032478854e-08,0) (4.206025406e-05,0) (-3.160521265e-05,0) (3.109924057e-08,0) (-1.970181647e-05,0) (1.391253042e-05,0) (-1.452397306e-08,0) (7.57314583e-06,0) (-4.370287337e-06,0) (1.070626807e-08,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.004214043356,0) (0.006158998385,0) (0.0001312011809,0) (-0.0007825700286,0) (-0.000160366703,0) (0.0001179069761,0) (2.941101487e-05,0) (-1.215575976e-05,0) (-1.292825713e-05,0) (3.591247411e-06,0) (1.211948785e-06,0) (2.186819431e-07,0) (-9.353687809e-07,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.04520166927,0) (0.04251668573,0) (-0.0009345582901,0) (-0.0001451268835,0) (0.0002799358963,0) (0.0005029806326,0) (-0.0003063111856,0) (-7.350246924e-05,0) (0.0001538232273,0) (3.114230238e-05,0) (-2.423650254e-05,0) (1.916106456e-05,0) (2.552626129e-05,0) (1.454931824e-06,0) (-0.003157854218,0) (0.007512458075,0) (0.0005195851016,0) (-1.088795504e-06,0) (0.03421108654,0) (-7.146290097e-06,0) (-1.177097021e-08,0) (-0.001457959397,0) (-6.924319911e-07,0) (7.086881675e-10,0) (-1.038967993e-05,0) (9.381966906e-10,0) (-1.140640338e-05,0) (0.001087813846,0) (-1.904659493e-05,0) (-3.587190187e-09,0) (0.0001295991408,0) (1.20807976e-09,0) (5.088937078e-05,0) (-0.0006397323042,0) (9.728329649e-10,0) (-2.632356776e-05,0) (0.0001948452291,0) (1.377274291e-10,0) (-1.900743854e-05,0) (0.0002168844333,0) (1.768045232e-10,0) (1.738073434e-06,0) (-3.331910854e-05,0) (-2.35095165e-06,0) (-4.003305574e-11,0) (-1.444095283e-05,0) (1.856004633e-10,0) (-8.44366819e-06,0) (5.955031546e-05,0) (1.173764161e-10,0) (-3.04711323e-06,0) (3.220324779e-05,0) (-7.589415207e-19,0) (9.495322441e-05,0) (7.430118958e-08,0) (-0.00369666856,0) (0.02112509155,0) (6.505213035e-19,0) (6.333326623e-05,0) (0.001467685891,0) (-1.522189737e-06,0) (0.003983623004,0) (2.710505431e-20,0) (-1.128629076e-06,0) (1.486140405e-06,0) (-1.732577337e-08,0) (0.0006790959101,0) (8.470329473e-22,0) (-9.281519799e-09,0) (-5.628658706e-06,0) (-6.662351652e-09,0) (-1.747322974e-05,0) (4.065758147e-20,0) (-4.549907229e-06,0) (-1.145926933e-05,0) (-2.539534721e-08,0) (0.0005202223217,0) (-6.776263578e-21,0) (-6.099495322e-07,0) (1.186146372e-08,0) (1.038789438e-05,0) (-0.0002534353773,0) (0,0) (-5.02811008e-07,0) (4.132508469e-09,0) (0.000156366619,0) (-0.0002955184562,0) (0,0) (-1.679232679e-07,0) (1.383585823e-09,0) (-3.776354522e-05,0) (0.0001676407959,0) (-8.088281908e-10,0) (1.694065895e-21,0) (1.092177589e-11,0) (-1.716212179e-05,0) (5.082791124e-05,0) (8.470329473e-22,0) (-3.774756953e-08,0) (5.146970487e-10,0) (2.38628948e-05,0) (-5.030265065e-05,0) (4.235164736e-22,0) (-6.59283491e-08,0) (1.303346218e-06,0) (6.607505923e-10,0) (8.223005948e-06,0) (-3.476269999e-08,0) (0,0) (2.906841531e-10,0) (-2.422359532e-05,0) (4.450385645e-05,0) (0,0) (-7.6060703e-09,0) (1.822462067e-10,0) (6.185128518e-07,0) (3.673086727e-06,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (-1.352214984e-05,0) (-0.001516611742,0) (-0.1815201801,0) (0.001529805043,0) (-0.06184377689,0) (-1.018009989e-05,0) (0.0100894037,0) (0.002033057526,0) (1.382974519e-06,0) (0.01420621429,0) (0.001104706844,0) (1.705669872e-06,0) (0.0001243303037,0) (-0.00416102366,0) (-4.957044252e-07,0) (-2.976561439e-05,0) (-6.894765397e-05,0) (-1.167054917e-08,0) (2.109279228e-05,0) (-0.001212800252,0) (-1.454478514e-07,0) (0.0009931054366,0) (0.0001417158764,0) (1.284692074e-07,0) (1.74742353e-05,0) (-0.0004985374759,0) (-5.936260932e-08,0) (0.0002260156754,0) (4.076642451e-05,0) (3.037514902e-08,0) (1.036691613e-05,0) (-0.0002489763116,0) (-3.115196758e-08,0) (0.0001252345373,0) (6.832339961e-06,0) (1.454786252e-08,0) (2.35247391e-06,0) (-7.547512391e-05,0) (-1.072474815e-08,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.09590197642,0) (-0.1401646988,0) (-0.002985838421,0) (0.01780950172,0) (0.003649578912,0) (-0.002683292763,0) (-0.0006693273457,0) (0.0002766372549,0) (0.0002942175258,0) (-8.172856693e-05,0) (-2.758117892e-05,0) (-4.976700232e-06,0) (2.128685141e-05,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.01470014553,0) (0.01382695546,0) (-0.0003039299897,0) (-4.71970691e-05,0) (9.103863821e-05,0) (0.000163575563,0) (-9.961621062e-05,0) (-2.390391798e-05,0) (5.002522838e-05,0) (1.012786441e-05,0) (-7.88201233e-06,0) (6.23141672e-06,0) (8.301457933e-06,0) (-1.457628927e-06,0) (-0.04559196335,0) (-0.02299600676,0) (0.008358714646,0) (1.091418551e-06,0) (0.01108001222,0) (0.0001174809611,0) (1.180077153e-08,0) (-0.0004752201501,0) (-5.445124097e-06,0) (-7.103876161e-10,0) (-3.157105631e-06,0) (-9.404551985e-10,0) (-3.878017573e-05,0) (0.0003533999622,0) (2.141472362e-05,0) (3.593291973e-09,0) (7.639707444e-05,0) (-1.211070338e-09,0) (-2.325109286e-05,0) (-0.0002136717171,0) (-9.75273999e-10,0) (-2.050776465e-05,0) (2.993656717e-05,0) (-1.380484768e-10,0) (-1.387528677e-05,0) (6.936217859e-05,0) (-1.771963067e-10,0) (2.805955058e-08,0) (-1.784210166e-05,0) (8.180342229e-07,0) (4.010017397e-11,0) (-1.893631504e-05,0) (-1.860366417e-10,0) (-5.633722485e-06,0) (1.251832324e-05,0) (-1.176319828e-10,0) (-2.00923065e-06,0) (4.53804567e-06,0) (1.734723476e-18,0) (0.005994823377,0) (-7.444950055e-08,0) (-0.003435817589,0) (-0.1102116782,0) (-1.084202172e-18,0) (0.001606299893,0) (0.01230377284,0) (1.525748086e-06,0) (0.001045366821,0) (-1.355252716e-20,0) (1.798364778e-05,0) (0.0001386402286,0) (1.737100717e-08,0) (0.0002209886563,0) (-1.694065895e-21,0) (4.610365646e-07,0) (6.817192153e-05,0) (6.679547034e-09,0) (-7.354140116e-06,0) (0,0) (6.988489398e-05,0) (4.1665471e-05,0) (2.546341754e-08,0) (0.0001696441168,0) (1.016439537e-20,0) (9.362266021e-06,0) (-1.188796278e-08,0) (8.158151922e-05,0) (-8.232622071e-05,0) (6.776263578e-21,0) (7.420259143e-06,0) (-4.143616472e-09,0) (-3.256963719e-05,0) (-0.000166117142,0) (3.388131789e-21,0) (2.488480358e-06,0) (-1.386998724e-09,0) (-6.937063544e-05,0) (5.261433427e-05,0) (1.696781277e-08,0) (0,0) (-1.09460803e-11,0) (-7.964340301e-06,0) (1.633611477e-05,0) (1.058791184e-21,0) (7.199518179e-07,0) (-5.160270666e-10,0) (3.653434698e-06,0) (-3.163718351e-05,0) (4.235164736e-22,0) (1.047169952e-06,0) (6.944596701e-07,0) (-6.615208134e-10,0) (-2.354858994e-05,0) (5.29902449e-07,0) (-2.117582368e-22,0) (-2.91384935e-10,0) (-1.338045233e-05,0) (4.545817498e-06,0) (-6.352747104e-22,0) (3.968631531e-07,0) (-1.826512278e-10,0) (3.288624992e-07,0) (-1.102174207e-05,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (1.792468198e-05,0) (0.0015942032,0) (-0.1456492277,0) (-0.002288970907,0) (-0.04519188989,0) (1.349672706e-05,0) (0.01039062405,0) (-0.0008488810399,0) (-1.833908765e-06,0) (0.01281429128,0) (-0.0007629577502,0) (-2.261845447e-06,0) (-0.0009122039538,0) (-0.002265202916,0) (6.573132114e-07,0) (-6.462997956e-05,0) (-1.306935015e-05,0) (1.547562452e-08,0) (-0.0003155601183,0) (-0.000622467995,0) (1.928670741e-07,0) (0.0009669418372,0) (-7.371168797e-05,0) (-1.703585845e-07,0) (-9.854256778e-05,0) (-0.0002801178774,0) (7.871574193e-08,0) (0.0002283587626,0) (-1.837131481e-05,0) (-4.027933956e-08,0) (-2.384812022e-05,0) (-0.0001639726644,0) (4.130690869e-08,0) (0.000109272375,0) (-5.321956378e-06,0) (-1.92916415e-08,0) (-3.927606724e-06,0) (-5.36331914e-05,0) (1.42199673e-08,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.07546254497,0) (-0.1102916257,0) (-0.00234947156,0) (0.01401379174,0) (0.002871750125,0) (-0.002111406963,0) (-0.0005266747028,0) (0.0002176780091,0) (0.0002315114256,0) (-6.430989108e-05,0) (-2.170284735e-05,0) (-3.916024248e-06,0) (1.675001957e-05,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.02292890543,0) (-0.02156692623,0) (0.0004740621088,0) (7.361676329e-05,0) (-0.0001419997048,0) (-0.0002551409173,0) (0.0001553787796,0) (3.72847108e-05,0) (-7.802805272e-05,0) (-1.579718001e-05,0) (1.229415824e-05,0) (-9.719602051e-06,0) (-1.29483986e-05,0) (1.933695861e-06,0) (-0.03199064087,0) (-0.02299221789,0) (0.005912559672,0) (-1.447272914e-06,0) (-0.01738794072,0) (9.397260481e-05,0) (-1.564861596e-08,0) (0.0007387482168,0) (-3.585040966e-06,0) (9.420694424e-10,0) (5.436834395e-06,0) (1.247478056e-09,0) (-2.065379919e-05,0) (-0.0005520810976,0) (3.049198037e-05,0) (-4.763408986e-09,0) (-3.993073118e-05,0) (1.606572917e-09,0) (-5.581744661e-05,0) (0.0003202683844,0) (1.293499994e-09,0) (4.343975792e-06,0) (-0.0001240359772,0) (1.831224303e-10,0) (3.841493541e-06,0) (-0.0001108992143,0) (2.350780239e-10,0) (-1.286536979e-06,0) (1.161940272e-05,0) (2.387046427e-06,0) (-5.316445846e-11,0) (-3.410339354e-06,0) (2.467585767e-10,0) (2.105845968e-06,0) (-3.536965701e-05,0) (1.560307562e-10,0) (7.77950799e-07,0) (-2.080929823e-05,0) (5.204170428e-18,0) (0.004449681879,0) (9.875566195e-08,0) (0.0001906725663,0) (-0.09897492918,0) (-2.168404345e-19,0) (0.001163767271,0) (0.008173532278,0) (-2.023388919e-06,0) (-0.002208672077,0) (-6.776263578e-21,0) (1.441241402e-05,0) (0.000103430604,0) (-2.303572953e-08,0) (-0.0003443707994,0) (-3.388131789e-21,0) (3.546892966e-07,0) (5.564768243e-05,0) (-8.856789814e-09,0) (7.598111631e-06,0) (0,0) (5.613041285e-05,0) (4.007349356e-05,0) (-3.375795271e-08,0) (-0.0002635377927,0) (0,0) (7.519930189e-06,0) (1.577459173e-08,0) (5.364558862e-05,0) (0.0001286262247,0) (0,0) (5.974666933e-06,0) (5.496789673e-09,0) (-0.0001421887402,0) (9.710076482e-05,0) (-3.388131789e-21,0) (2.003154677e-06,0) (1.839710283e-09,0) (-2.388494044e-05,0) (-8.647148753e-05,0) (1.340554525e-08,0) (0,0) (1.451967495e-11,0) (6.909246837e-06,0) (-2.592891019e-05,0) (4.235164736e-22,0) (5.713850495e-07,0) (6.845034665e-10,0) (-1.519996164e-05,0) (1.399723361e-05,0) (-8.470329473e-22,0) (8.393777059e-07,0) (-4.576572648e-07,0) (8.775775864e-10,0) (-2.393998219e-05,0) (4.258067386e-07,0) (1.270549421e-21,0) (3.864907411e-10,0) (8.138608507e-06,0) (-3.005827211e-05,0) (-4.235164736e-22,0) (3.050299829e-07,0) (2.42261127e-10,0) (-2.173739453e-07,0) (-1.107271747e-05,0) -(0.2370734683,0) (0.0006670533688,0) (0.004066218674,0) (0.0006820777545,0) (0.0005956356081,0) (8.044155541e-06,0) (9.655870575e-06,0) (6.831873609e-05,0) (4.382157398e-05,0) (1.591626787e-05,0) (1.652759785e-05,0) (1.94939596e-05,0) (1.491606603e-05,0) (3.877437899e-09,0) (0.000104543173,0) (0.3087228188,0) (0.0001062601308,0) (0.02189791074,0) (1.451237323e-09,0) (0.00101721631,0) (6.767884142e-05,0) (3.270019455e-11,0) (0.002703808895,0) (4.554381508e-05,0) (7.902103776e-11,0) (3.058225334e-05,0) (0.0002763177339,0) (1.071720204e-11,0) (1.677877475e-07,0) (1.554212663e-07,0) (1.046209416e-14,0) (9.935797639e-06,0) (6.792423503e-05,0) (2.685856042e-12,0) (0.0001254778854,0) (5.197168565e-06,0) (3.878416987e-12,0) (3.452071693e-06,0) (3.698293816e-05,0) (1.425830819e-12,0) (2.421919495e-05,0) (1.387963126e-06,0) (7.687789817e-13,0) (1.030262135e-06,0) (3.786694817e-05,0) (1.535265483e-12,0) (3.118113231e-05,0) (2.989431376e-07,0) (8.846582533e-13,0) (1.823523549e-07,0) (2.000685348e-05,0) (1.00557303e-12,0) (3.415236843e-18,0) (-4.33680869e-19,0) (0,0) (0.03787629397,0) (0.1290043371,0) (9.757819552e-19,0) (1.626303259e-19,0) (1.734723476e-18,0) (0.01166407464,0) (0.02777002614,0) (0,0) (-1.905824131e-21,0) (-6.776263578e-21,0) (0.0001520492622,0) (9.479976155e-05,0) (3.726944968e-20,0) (-1.016439537e-20,0) (0,0) (0.0005765989928,0) (0.002012299337,0) (3.30872245e-24,0) (-2.067951531e-24,0) (4.135903063e-25,0) (2.968303438e-07,0) (9.832055907e-08,0) (-1.058791184e-22,0) (3.97046694e-23,0) (-1.389663429e-22,0) (3.860134312e-07,0) (9.979758691e-06,0) (-1.694065895e-21,0) (4.235164736e-22,0) (-2.01170325e-21,0) (3.578750522e-05,0) (7.498366886e-05,0) (-2.488159283e-21,0) (5.29395592e-23,0) (8.470329473e-22,0) (1.02162398e-05,0) (6.854234909e-05,0) (-1.058791184e-22,0) (-9.264422861e-23,0) (0,0) (9.779609685e-07,0) (8.699365442e-06,0) (-2.117582368e-22,0) (-5.29395592e-23,0) (-1.32348898e-23,0) (4.056902711e-06,0) (8.419618364e-06,0) (0,0) (1.98523347e-23,0) (-1.032321404e-21,0) (5.202177913e-06,0) (1.997650936e-05,0) (5.29395592e-23,0) (-3.176373552e-22,0) (4.764560328e-22,0) (2.701400034e-06,0) (1.519803296e-05,0) (2.117582368e-22,0) (-3.30872245e-23,0) (4.566036981e-22,0) (2.43172997e-06,0) (8.192639034e-06,0) -(0.4945189387,0) (0.307421443,0) (0.1319654046,0) (0.03941143222,0) (0.01673841645,0) (0.005001509027,0) (0.002982067969,0) (0.0008721944031,0) (0.0006739086684,0) (0.0001662005827,0) (0.000162668234,0) (2.726728507e-05,0) (3.849627959e-05,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.09496554104,0) (0.02219350733,0) (0.0009466734748,0) (2.321681126e-06,0) (4.129794632e-05,0) (0.0001989658342,0) (0.0002383724452,0) (0.0001692599573,0) (0.0001085254047,0) (7.176902103e-05,0) (5.852636604e-05,0) (5.506831979e-05,0) (4.747128362e-05,0) (1.073506527e-10,0) (0.04541795873,0) (0.1725741146,0) (0.01007922853,0) (4.289735641e-10,0) (0.01096928929,0) (5.737094057e-05,0) (1.333779821e-12,0) (6.161287463e-05,0) (4.444852922e-08,0) (1.969247442e-15,0) (4.145795013e-08,0) (1.730393003e-13,0) (0.0001003702013,0) (0.0001160749593,0) (5.79959204e-05,0) (1.968726167e-12,0) (0.000456033966,0) (4.122042944e-13,0) (0.0001878179395,0) (0.0003229003659,0) (1.646882568e-13,0) (1.410595769e-05,0) (0.0002999456081,0) (5.102445159e-14,0) (6.696096688e-05,0) (0.0001183515028,0) (8.984760364e-14,0) (5.83628165e-07,0) (0.0001427988773,0) (2.344464954e-06,0) (1.402501907e-15,0) (0.0001207276869,0) (4.655188215e-14,0) (6.221369806e-06,0) (0.0001060713667,0) (3.292207679e-14,0) (1.583941041e-06,0) (9.971418463e-05,0) (-4.33680869e-18,0) (0.009429544937,0) (1.5840107e-13,0) (0.0005109923468,0) (0.194759507,0) (2.710505431e-19,0) (0.002555581156,0) (0.005067391794,0) (1.942355678e-10,0) (0.0004409201741,0) (-3.388131789e-21,0) (2.942625463e-05,0) (5.654394068e-05,0) (2.071868796e-12,0) (8.037295849e-06,0) (-1.058791184e-22,0) (7.348914505e-07,0) (3.230829218e-06,0) (6.964797294e-14,0) (1.567816421e-07,0) (-1.355252716e-20,0) (0.000113937913,0) (0.0001851425888,0) (2.781457311e-11,0) (2.999024015e-05,0) (-6.776263578e-21,0) (1.52722285e-05,0) (1.871511688e-11,0) (0.0005040683449,0) (5.02024039e-05,0) (-1.016439537e-20,0) (1.211469523e-05,0) (6.023879719e-13,0) (0.0001599166819,0) (0.0002441829949,0) (-1.355252716e-20,0) (4.063106018e-06,0) (2.623064153e-13,0) (0.000205223284,0) (3.30332097e-05,0) (2.733646717e-08,0) (8.470329473e-22,0) (4.552654708e-15,0) (0.000111644296,0) (2.711731612e-05,0) (-6.776263578e-21,0) (1.172473665e-06,0) (1.533275629e-13,0) (1.278860789e-05,0) (9.776751272e-05,0) (2.541098842e-21,0) (1.709717327e-06,0) (1.530464362e-07,0) (1.424655546e-13,0) (0.0001104626914,0) (8.6197615e-07,0) (-2.964615315e-21,0) (6.739760524e-14,0) (2.211632354e-05,0) (7.515207224e-05,0) (4.65868121e-21,0) (6.315078598e-07,0) (3.652790367e-14,0) (1.2355385e-07,0) (8.266795114e-05,0) -(-0.12111549,-0.2097781823) (-0.0005607657229,-0.0009712747232) (-0.002000518664,-0.003464999967) (-0.0004075616168,-0.0007059174275) (-0.0002729746153,-0.0004728059028) (-1.278868443e-06,-2.21506512e-06) (-6.037625137e-06,-1.045747349e-05) (-3.526857492e-05,-6.108696368e-05) (-1.932297171e-05,-3.346836876e-05) (-7.415213061e-06,-1.284352577e-05) (-8.572210917e-06,-1.484750484e-05) (-9.354879707e-06,-1.620312695e-05) (-6.899174245e-06,-1.194972032e-05) (-8.71432143e-08,-1.509364747e-07) (-0.002819411596,-0.004883364132) (0.01502942923,0.02603173503) (0.0008700924344,0.001507044304) (0.0001228246921,0.0002127386071) (7.320806353e-10,1.268000856e-09) (0.0001192873191,0.0002066116974) (-8.929992509e-05,-0.0001546720074) (1.373510757e-11,2.378990418e-11) (0.000299626932,0.0005189690695) (-0.0001838490925,-0.0003184359691) (5.231009419e-11,9.060374093e-11) (3.300273741e-05,5.716241798e-05) (-2.446401255e-05,-4.237291269e-05) (4.222108033e-12,7.312905615e-12) (2.383089031e-07,4.12763128e-07) (-2.03263699e-07,-3.52063054e-07) (1.663957862e-14,2.882059555e-14) (1.598075748e-05,2.767948389e-05) (-1.228323086e-05,-2.127517993e-05) (1.819532649e-12,3.151522991e-12) (1.701272271e-05,2.946690011e-05) (-1.203371311e-05,-2.08430025e-05) (2.268351531e-12,3.928900099e-12) (4.63149072e-06,8.021977241e-06) (-3.344313848e-06,-5.792521501e-06) (6.401746952e-13,1.1088151e-12) (3.782440103e-06,6.551378435e-06) (-2.784982798e-06,-4.823731704e-06) (4.566111209e-13,7.908736621e-13) (3.233764025e-06,5.601043591e-06) (-1.652550646e-06,-2.862301681e-06) (8.418017035e-13,1.458043318e-12) (2.598776547e-06,4.501213017e-06) (-1.422702445e-06,-2.464192919e-06) (5.27927159e-13,9.14396661e-13) (8.817371997e-07,1.527213629e-06) (-1.45942524e-07,-2.527798665e-07) (4.485466415e-13,7.769055717e-13) (2.331034671e-18,7.806255642e-18) (8.67361738e-19,-1.734723476e-18) (0,1.301042607e-18) (-0.02060375576,-0.0356867518) (0.06045012766,0.1047026924) (-1.084202172e-19,-2.168404345e-19) (-1.084202172e-19,-4.33680869e-19) (4.33680869e-19,0) (-0.005297526462,-0.009175584986) (0.01558567133,0.02699517461) (0,0) (0,-1.694065895e-21) (0,-6.776263578e-21) (-2.702014961e-05,-4.680027195e-05) (0.0001359807469,0.0002355255625) (1.355252716e-20,6.776263578e-21) (-6.776263578e-21,0) (3.388131789e-21,-1.355252716e-20) (-0.0003173531288,-0.0005496717431) (0.0009319561715,0.001614195439) (1.32348898e-23,-2.64697796e-23) (9.926167351e-24,2.64697796e-23) (-6.6174449e-24,1.32348898e-23) (1.10762366e-08,1.918460455e-08) (-6.716194071e-07,-1.163278936e-06) (0,-1.058791184e-22) (-1.32348898e-23,-7.940933881e-23) (-1.852884572e-22,-1.058791184e-22) (-4.754822232e-07,-8.235593687e-07) (2.065183874e-06,3.577003397e-06) (0,0) (4.235164736e-22,-5.29395592e-22) (8.470329473e-22,2.541098842e-21) (-1.517604603e-05,-2.628568279e-05) (4.50724991e-05,7.806785847e-05) (-1.588186776e-21,-2.223461487e-21) (-2.117582368e-22,-1.058791184e-22) (0,4.235164736e-22) (-7.538565652e-06,-1.305717873e-05) (2.367733081e-05,4.101033996e-05) (5.95570041e-23,3.97046694e-23) (7.940933881e-23,1.058791184e-22) (0,0) (-8.103564901e-07,-1.403578613e-06) (2.67611154e-06,4.635161153e-06) (-2.64697796e-22,-3.176373552e-22) (-1.852884572e-22,-2.117582368e-22) (0,0) (-1.711417653e-06,-2.964262327e-06) (5.087485249e-06,8.811782933e-06) (-1.058791184e-22,4.235164736e-22) (-1.98523347e-23,-2.117582368e-22) (-2.117582368e-22,5.29395592e-23) (-2.996110319e-06,-5.189415297e-06) (8.841353425e-06,1.531367334e-05) (5.29395592e-23,0) (1.058791184e-22,0) (-3.176373552e-22,-4.235164736e-22) (-1.848699751e-06,-3.202041897e-06) (5.660846895e-06,9.804874436e-06) (-1.058791184e-22,0) (3.30872245e-23,-5.95570041e-23) (2.34919294e-22,-1.588186776e-22) (-1.315863121e-06,-2.279141781e-06) (3.859226647e-06,6.68437663e-06) -(-0.1083538861,-0.187674436) (0.04130000015,0.07153369861) (-0.005588563056,-0.009679675154) (0.0001512454779,0.0002619648521) (-0.0004157109044,-0.0007200324077) (0.0004987808677,0.0008639138046) (-0.0004215574793,-0.0007301589725) (0.0001921116781,0.0003327471872) (-0.000135218537,-0.0002342053762) (5.460781335e-05,9.458350721e-05) (-4.878621887e-05,-8.45002098e-05) (1.937500693e-05,3.35584964e-05) (-2.137444623e-05,-3.702162685e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.1083538861,-0.187674436) (0.04130000015,0.07153369861) (-0.005588563056,-0.009679675154) (0.0001512454779,0.0002619648521) (-0.0004157109044,-0.0007200324077) (0.0004987808677,0.0008639138046) (-0.0004215574793,-0.0007301589725) (0.0001921116781,0.0003327471872) (-0.000135218537,-0.0002342053762) (5.460781335e-05,9.458350721e-05) (-4.878621887e-05,-8.45002098e-05) (1.937500693e-05,3.35584964e-05) (-2.137444623e-05,-3.702162685e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.1395541466,0.2417148723) (-0.01357903408,0.02351957694) (0.01423099906,-0.02464881341) (0.004074510377,-0.007057258989) (-0.001425660096,0.00246931572) (1.975203663e-05,-3.4211531e-05) (-5.71653615e-06,9.901331055e-06) (-7.743450601e-05,0.0001341204987) (6.633973277e-05,-0.0001149037877) (-4.268839373e-05,7.393846683e-05) (3.706007127e-05,-6.418992637e-05) (-2.936722707e-05,5.086552936e-05) (1.515866188e-05,-2.625557255e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.05906019127,0.102295252) (0.003122660326,-0.005408606339) (0.001450134843,-0.002511707226) (-1.663179087e-05,2.88071068e-05) (-5.691193611e-05,9.85743649e-05) (4.320980191e-06,-7.484157229e-06) (-1.508217198e-05,2.612308816e-05) (-5.052939195e-06,8.751947413e-06) (-3.798238809e-06,6.578742597e-06) (-1.228729791e-05,2.128222427e-05) (-6.964894952e-06,1.206355193e-05) (-2.032950537e-06,3.521173619e-06) (-3.820457386e-06,6.6172263e-06) (0.005175592884,-0.008964389834) (5.304917151e-09,-9.188386021e-09) (-0.09224965312,0.1597810862) (-0.0001541485888,0.0002669931877) (1.707308574e-10,-2.957145206e-10) (0.01114537494,-0.01930435567) (2.347871873e-06,-4.066633374e-06) (-7.561107841e-13,1.309622251e-12) (0.000246935527,-0.000427704879) (-1.387241408e-07,2.402772602e-07) (-6.941934646e-14,1.20237835e-13) (-5.376045784e-06,9.311584441e-06) (-7.712042081e-13,1.335764869e-12) (8.292123503e-08,-1.436237921e-07) (-4.795061678e-05,8.305290452e-05) (-4.456588466e-15,7.71903793e-15) (-4.108193539e-07,7.115599937e-07) (3.307487654e-06,-5.728736662e-06) (2.981602561e-15,-5.164290423e-15) (1.947461171e-06,-3.373101694e-06) (-2.748230891e-05,4.760075535e-05) (-1.069619489e-08,1.8526353e-08) (7.219598505e-15,-1.25047114e-14) (3.005871758e-06,-5.206322606e-06) (-2.336955431e-15,4.047724815e-15) (8.74177065e-07,-1.514119091e-06) (-1.502558212e-05,2.602507165e-05) (1.117880202e-16,-1.936207203e-16) (2.783083705e-06,-4.820442378e-06) (-2.210803363e-05,3.82922375e-05) (1.37753808e-13,-2.385965945e-13) (4.150521297e-07,-7.188913765e-07) (-5.857532454e-06,1.014554382e-05) (-2.638813198e-15,4.570558867e-15) (4.927792809e-07,-8.535187514e-07) (-3.782800919e-06,6.552003387e-06) (-2.398416777e-15,4.154179493e-15) (1.233592183e-06,-2.136644337e-06) (-8.538607507e-06,1.478930203e-05) (5.421010862e-19,-4.662069342e-18) (0.0007200330219,-0.001247133777) (-0.0001878309588,0.0003253327639) (3.990106785e-09,-6.911067683e-09) (-0.03195096622,0.05534069685) (6.640738306e-19,-3.252606517e-19) (-2.330564706e-05,4.036656481e-05) (0.0007153114482,-0.001238955771) (2.662361387e-10,-4.611345192e-10) (0.003245375324,-0.005621154951) (-8.205631677e-22,-1.058791184e-22) (6.095239344e-10,-1.055726423e-09) (-3.44128403e-08,5.960478783e-08) (7.464270367e-14,-1.292849554e-13) (1.059566382e-05,-1.835222807e-05) (2.117582368e-22,-2.117582368e-21) (-1.888476037e-09,3.270936446e-09) (8.862191923e-06,-1.534976668e-05) (-1.368859681e-12,2.370934516e-12) (6.318959677e-06,-1.094475921e-05) (-6.021874859e-22,3.044024654e-22) (7.446402637e-11,-1.28975477e-10) (-1.079534492e-15,1.869808926e-15) (-7.090290898e-08,1.228074408e-07) (4.706497865e-06,-8.151893428e-06) (-1.058791184e-22,-1.164670302e-21) (1.33340407e-08,-2.309523596e-08) (-4.12556043e-14,7.145680375e-14) (6.800887061e-06,-1.177948193e-05) (-1.445470366e-05,2.503628115e-05) (6.6174449e-23,-1.488925103e-22) (1.436655647e-09,-2.488360574e-09) (2.776996631e-14,-4.80989927e-14) (3.119865907e-07,-5.403766263e-07) (-1.632104712e-06,2.826888284e-06) (-1.257314531e-22,4.367513634e-22) (-4.064786482e-09,7.040416709e-09) (2.252897883e-14,-3.90213359e-14) (-3.398791457e-07,5.886879487e-07) (1.948638818e-06,-3.375141438e-06) (3.441071348e-22,-1.111730743e-21) (2.900715708e-10,-5.024186985e-10) (-8.107032806e-16,1.404180303e-15) (1.611039988e-06,-2.790403113e-06) (-1.070561973e-05,1.854267731e-05) (3.97046694e-23,-1.32348898e-22) (6.102102725e-09,-1.056915195e-08) (1.654781322e-14,-2.866165396e-14) (4.947043268e-06,-8.568530288e-06) (-1.021949476e-05,1.770068415e-05) (2.55909002e-24,-1.80945759e-24) (4.489881054e-12,-7.776702106e-12) (-2.191745498e-09,3.79621456e-09) (-9.634049096e-17,1.668666263e-16) (-1.590204424e-08,2.754314857e-08) (-1.124965633e-22,2.316105715e-22) (3.879285887e-09,-6.719120253e-09) (-8.60107949e-15,1.489750647e-14) (1.863843086e-06,-3.228270922e-06) (-3.791159118e-06,6.566480212e-06) (9.264422861e-23,-1.191140082e-22) (8.070512659e-09,-1.397853797e-08) (-9.550114633e-15,1.654128365e-14) (1.512581421e-06,-2.619867872e-06) (-4.456953971e-06,7.719670724e-06) -(-0.1378654839,0.2387900227) (-0.0169245535,0.02931418655) (0.0167882116,-0.02907803547) (0.002856832998,-0.004948179901) (-0.001021264037,0.001768881199) (-6.261071557e-05,0.0001084449405) (-5.097302548e-05,8.828786994e-05) (5.211057454e-06,-9.025816272e-06) (-1.563957284e-05,2.708853477e-05) (1.958875962e-05,-3.392872691e-05) (-7.901662008e-06,1.368608006e-05) (1.11827671e-06,-1.936912078e-06) (-3.986478569e-06,6.904783425e-06) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (-0.0002997192672,0.0005191289988) (0.09925944203,-0.1719223967) (0.0005701036329,-0.0009874484577) (0.03744131566,-0.06485026102) (-1.08363822e-05,1.876916455e-05) (5.12637978e-06,-8.879150237e-06) (-0.0004333454456,0.000750576329) (-0.004174757703,0.007230892451) (-5.79928862e-07,1.004466254e-06) (-0.0003092991382,0.0005357218221) (-0.008557666191,0.01482231264) (-1.127253589e-06,1.952460489e-06) (0.001441927363,-0.002497491453) (0.0001026368809,-0.0001777722925) (1.949578464e-07,-3.376768953e-07) (7.957927152e-05,-0.0001378353415) (6.761905753e-05,-0.0001171196432) (1.853059582e-08,-3.209593345e-08) (0.0007081325001,-0.001226521469) (7.017291895e-05,-0.0001215430609) (9.836838076e-08,-1.703790333e-07) (-3.926527806e-05,6.800945657e-05) (-0.000555379596,0.0009619456778) (-7.501276439e-08,1.299259191e-07) (0.0001990917172,-0.0003448369695) (1.15125293e-05,-1.994028567e-05) (2.660804959e-08,-4.608649378e-08) (-1.201453687e-05,2.080978829e-05) (-0.0001308978504,0.0002267217275) (-1.801120482e-08,3.119632186e-08) (0.0001320177961,-0.0002286615304) (1.379282385e-06,-2.388987168e-06) (1.705203038e-08,-2.953498298e-08) (-1.642038463e-06,2.844094046e-06) (-6.621122398e-05,0.000114681204) (-8.667301526e-09,1.501220661e-08) (3.661879991e-05,-6.342562196e-05) (3.18796139e-08,-5.521711101e-08) (4.775645764e-09,-8.271661102e-09) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.000923337689,0.00159926779) (0.0008274199475,-0.001433133388) (-5.55619918e-06,9.623619276e-06) (-3.00319403e-06,5.201684645e-06) (3.982825217e-06,-6.898455633e-06) (1.175840002e-05,-2.036614625e-05) (-4.157662878e-06,7.201283346e-06) (-2.677457455e-06,4.637492347e-06) (2.594031055e-06,-4.492993584e-06) (1.179960774e-06,-2.043752012e-06) (-3.634784569e-07,6.295631548e-07) (1.553863596e-07,-2.691370696e-07) (5.193486208e-07,-8.995381981e-07) (0.03245066753,-0.05620620491) (1.973358379e-05,-3.417956974e-05) (0.003074044889,-0.005324401932) (-0.003612640396,0.006257276715) (-1.712840758e-06,2.966727218e-06) (0.0006726502744,-0.001165064451) (-7.897721341e-05,0.0001367925463) (-9.66799994e-09,1.67454671e-08) (-2.492556751e-05,4.317234933e-05) (2.421005667e-06,-4.19330482e-06) (3.489741388e-10,-6.044409389e-10) (-3.762967448e-07,6.517650808e-07) (-8.094592238e-08,1.402024502e-07) (3.136037117e-05,-5.431775621e-05) (2.045657133e-05,-3.54318209e-05) (6.618798767e-10,-1.146409575e-09) (-2.146830323e-05,3.718419194e-05) (8.675245077e-07,-1.502596524e-06) (-9.606141336e-11,1.663832486e-10) (1.456791745e-05,-2.523237319e-05) (-1.076291122e-05,1.864190907e-05) (1.04629614e-07,-1.812238073e-07) (-8.956602146e-10,1.551328998e-09) (2.547207111e-05,-4.411892133e-05) (-6.797765478e-11,1.177407519e-10) (6.283968979e-06,-1.088415354e-05) (5.35510915e-06,-9.275321128e-06) (-1.527935823e-11,2.646462476e-11) (1.016270017e-06,-1.760231303e-06) (2.862275528e-06,-4.95760664e-06) (-2.747461897e-10,4.758743597e-10) (7.443505779e-07,-1.28925302e-06) (4.771932706e-06,-8.265229897e-06) (-7.264500146e-11,1.258248334e-10) (1.575517403e-06,-2.728876191e-06) (4.761717681e-06,-8.247536954e-06) (-3.577407697e-11,6.196251891e-11) (1.541553266e-06,-2.67004858e-06) (3.194233381e-06,-5.532574508e-06) (0,-2.602085214e-18) (-0.002729426434,0.004727505259) (0.06324356095,-0.1095410608) (3.126494954e-05,-5.415248111e-05) (0.0002650767828,-0.0004591264557) (5.421010862e-20,1.084202172e-19) (0.0001065037686,-0.0001844699384) (-0.006663150733,0.01154091561) (-9.127041456e-07,1.580849952e-06) (0.0002416297276,-0.0004185149648) (-4.235164736e-22,8.470329473e-22) (1.483669546e-06,-2.569791035e-06) (-3.500462032e-05,6.06297809e-05) (-8.719713196e-09,1.510298628e-08) (1.471765147e-05,-2.549172011e-05) (0,1.694065895e-21) (6.08483442e-09,-1.053924237e-08) (-3.835660981e-05,6.643559699e-05) (-3.797649481e-09,6.577721851e-09) (1.178686968e-06,-2.041545716e-06) (-1.058791184e-21,4.235164736e-22) (2.4179593e-07,-4.188028358e-07) (2.191988206e-10,-3.796634942e-10) (-2.364132934e-05,4.094798358e-05) (1.230236002e-05,-2.130831261e-05) (-8.470329473e-22,-8.470329473e-22) (1.181594739e-06,-2.046582122e-06) (1.185010832e-09,-2.052498968e-09) (-4.056713351e-05,7.026433636e-05) (-2.316881374e-05,4.012956255e-05) (4.235164736e-22,-1.694065895e-21) (-2.188570265e-06,3.790714895e-06) (-5.101434888e-09,8.835944417e-09) (6.486224796e-05,-0.000112344709) (-2.66489559e-06,4.61573456e-06) (4.235164736e-22,-1.694065895e-21) (-1.304105758e-06,2.258777432e-06) (-2.554688277e-09,4.424849894e-09) (3.739300532e-05,-6.476658507e-05) (4.052238551e-06,-7.018683054e-06) (5.29395592e-23,2.117582368e-22) (-1.147182595e-08,1.986978541e-08) (-1.153315372e-11,1.997600821e-11) (4.290322277e-06,-7.431056164e-06) (1.630475981e-06,-2.824067239e-06) (-1.058791184e-22,3.176373552e-22) (-8.329871479e-08,1.442776062e-07) (-9.227744456e-11,1.598292224e-10) (3.112744687e-06,-5.391431949e-06) (4.610680091e-06,-7.985932175e-06) (1.058791184e-22,-6.352747104e-22) (-4.072151729e-12,7.053173691e-12) (-4.732118624e-07,8.196269885e-07) (-4.150544398e-10,7.188953777e-10) (1.376158085e-05,-2.383575722e-05) (3.176373552e-22,-3.176373552e-22) (-1.530521796e-07,2.650941513e-07) (-1.73488401e-10,3.004907251e-10) (5.513119534e-06,-9.54900314e-06) (4.337960104e-06,-7.513567301e-06) (-2.64697796e-22,0) (-7.700519144e-08,1.33376904e-07) (-8.508942103e-11,1.473792004e-10) (6.216831785e-07,-1.076786851e-06) (6.222146986e-06,-1.077707471e-05) -(0.05157424969,-0.08932922082) (0.07911949656,-0.1370389879) (0.005517042647,-0.009555798172) (-0.009454263379,0.01637526452) (-0.002817873889,0.004880700745) (0.001260905509,-0.002183952404) (0.0005417059474,-0.0009382622237) (-8.342600894e-05,0.0001444980862) (-0.0001916579055,0.0003319612299) (2.369564209e-05,-4.104205603e-05) (2.020298538e-05,-3.499259714e-05) (6.741548682e-06,-1.167670484e-05) (-1.149346843e-05,1.990727127e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0.0003039026374,-0.0005263748085) (0.04090131005,-0.07084314711) (-0.00883687416,0.01530591502) (0.01252654015,-0.02169660398) (-0.000346879798,0.0006008134342) (-5.135379222e-06,8.894737729e-06) (0.001183168129,-0.002049307314) (-0.00268255013,0.004646313118) (5.808926845e-07,-1.006135643e-06) (0.001574284488,-0.002726740719) (-0.004459427703,0.007723955355) (1.129113895e-06,-1.955682633e-06) (0.0001341706355,-0.0002323903576) (0.0003683995724,-0.0006380867769) (-1.952858243e-07,3.382449696e-07) (-4.227609596e-05,7.322434614e-05) (9.017141291e-05,-0.0001561814685) (-1.85615821e-08,3.214960327e-08) (3.392569073e-05,-5.876102003e-05) (0.0002193194444,-0.0003798724208) (-9.853361838e-08,1.706652333e-07) (0.0001346486464,-0.0002332182967) (-0.0003281340941,0.0005683449226) (7.513718213e-08,-1.30141417e-07) (2.344440262e-05,-4.060689649e-05) (4.508202613e-05,-7.808435976e-05) (-2.665283983e-08,4.616407275e-08) (3.529806653e-05,-6.113804464e-05) (-8.179885248e-05,0.0001416797685) (1.80411161e-08,-3.12481297e-08) (3.253944728e-05,-5.635997594e-05) (1.08655697e-05,-1.881971877e-05) (-1.708094113e-08,2.958505788e-08) (1.043761257e-05,-1.807847528e-05) (-3.251583845e-05,5.631908425e-05) (8.68155776e-09,-1.503689913e-08) (1.137503137e-05,-1.970213227e-05) (5.505628404e-07,-9.536028123e-07) (-4.783889003e-09,8.285938811e-09) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.02101305131,-0.03639567249) (-0.01883018317,0.03261483397) (0.0001264463693,-0.0002190115361) (6.834581865e-05,-0.0001183784304) (-9.063998106e-05,0.0001569930524) (-0.0002675942571,0.0004634868491) (9.461888584e-05,-0.0001638847176) (6.093280015e-05,-0.0001055387057) (-5.903420635e-05,0.0001022502448) (-2.685320506e-05,4.65111155e-05) (8.271937295e-06,-1.432741567e-05) (-3.536237701e-06,6.124943366e-06) (-1.181918528e-05,2.04714294e-05) (0.01305259065,-0.02260775017) (-1.972421406e-05,3.41633409e-05) (-3.139793852e-05,5.438282477e-05) (-0.001208003877,0.002092324091) (1.712798772e-06,-2.966654497e-06) (-0.01682721675,0.02914559437) (-2.585942318e-05,4.47898348e-05) (9.67925942e-09,-1.67649691e-08) (0.0005877851435,-0.001018073733) (1.150133528e-06,-1.992089707e-06) (-3.493905947e-10,6.051622618e-10) (6.952941289e-06,-1.204284757e-05) (8.190971413e-08,-1.418717865e-07) (1.32217184e-05,-2.290068804e-05) (-0.0004639768554,0.0008036314871) (-6.629958665e-10,1.148342526e-09) (1.637002792e-05,-2.835372008e-05) (-0.0002004334016,0.0003471608352) (9.621648201e-11,-1.666518354e-10) (-1.475131992e-05,2.555003558e-05) (0.0002859360877,-0.0004952558317) (1.363844101e-07,-2.362247277e-07) (8.972964103e-10,-1.554162972e-09) (-1.642133626e-05,2.844258873e-05) (6.808895039e-11,-1.179335215e-10) (8.86002333e-06,-1.534601056e-05) (-0.0001070329349,0.0001853864814) (1.530817236e-11,-2.651453229e-11) (1.09037461e-06,-1.888584223e-06) (-4.296340024e-06,7.441479207e-06) (2.752512015e-10,-4.767490659e-10) (-7.394344286e-07,1.280737999e-06) (1.652763697e-05,-2.862670696e-05) (7.276235857e-11,-1.260281019e-10) (3.451371935e-06,-5.977951547e-06) (-1.976500436e-05,3.423399176e-05) (3.583427253e-11,-6.206678068e-11) (3.65150322e-06,-6.3245891e-06) (-1.973991048e-05,3.419052789e-05) (0,0) (-0.0008395542634,0.00145415064) (0.02522679048,-0.04369408282) (-3.126224837e-05,5.414780254e-05) (-0.01100183246,0.01905573281) (-1.084202172e-19,5.421010862e-20) (6.005470316e-05,-0.0001040177971) (-0.003199103504,0.005541009808) (9.138118664e-07,-1.582768581e-06) (-0.002344817337,0.004061342763) (2.710505431e-20,-5.675120747e-20) (5.727926757e-07,-9.921060165e-07) (-1.287812239e-05,2.230556228e-05) (8.725406379e-09,-1.511284716e-08) (-0.000335289152,0.0005807378464) (-2.117582368e-22,4.235164736e-22) (1.81243952e-09,-3.139237334e-09) (-1.242058352e-05,2.151308171e-05) (3.802120767e-09,-6.585466345e-09) (2.538152278e-06,-4.396208702e-06) (1.905824131e-20,-3.811648263e-20) (9.202421743e-08,-1.593906201e-07) (-2.195446888e-10,3.802625555e-10) (-5.129786172e-06,8.885050281e-06) (-0.0002810210377,0.0004867427153) (0,-4.235164736e-22) (3.473961335e-07,-6.017077536e-07) (-1.186831509e-09,2.055652473e-09) (-7.965351864e-05,0.0001379639413) (0.0001256283905,-0.0002175947552) (-3.599890026e-21,2.541098842e-21) (-9.779151322e-07,1.693798695e-06) (5.110513569e-09,-8.851669155e-09) (3.289864391e-06,-5.698212276e-06) (0.0001171394555,-0.0002028914885) (6.564505341e-21,-8.046812999e-21) (-3.844266251e-07,6.658464465e-07) (2.55914016e-09,-4.432560781e-09) (2.632175311e-05,-4.559061372e-05) (-6.372623528e-05,0.0001103770773) (0,2.117582368e-22) (-3.632365662e-09,6.291441879e-09) (1.155167341e-11,-2.000808525e-11) (6.979756536e-06,-1.208929295e-05) (-3.434954941e-05,5.94951648e-05) (5.823351512e-22,-8.470329473e-22) (-4.430089943e-08,7.673140864e-08) (9.242620673e-11,-1.60086886e-10) (-7.708935966e-06,1.335226877e-05) (2.033211796e-05,-3.521626133e-05) (0,1.058791184e-22) (2.732028175e-11,-4.732011607e-11) (-2.030819374e-07,3.517482337e-07) (4.158427398e-10,-7.202607533e-10) (5.390575629e-06,-9.336750872e-06) (-2.117582368e-22,1.694065895e-21) (-3.944424504e-08,6.831943648e-08) (1.737627841e-10,-3.009659705e-10) (1.261265833e-05,-2.184576504e-05) (-1.944658249e-05,3.36824689e-05) (2.911675756e-22,-1.032321404e-21) (-1.766566272e-08,3.059782538e-08) (8.522954168e-11,-1.476218965e-10) (2.700280003e-06,-4.67702216e-06) (-4.74143023e-06,8.212398059e-06) -(0.01677258801,-0.02905097462) (0.02573064519,-0.04456678478) (0.001794210947,-0.00310766452) (-0.003074644141,0.005325439867) (-0.0009164076666,0.001587264639) (0.0004100621676,-0.0007102485086) (0.0001761695175,-0.000305134555) (-2.713117662e-05,4.699257638e-05) (-6.232953669e-05,0.0001079579244) (7.706117781e-06,-1.334738753e-05) (6.57026234e-06,-1.138002819e-05) (2.192435553e-06,-3.797409769e-06) (-3.737819008e-06,6.474092431e-06) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (-0.0004028470466,0.0006977515524) (-0.04299386424,0.07446755728) (-0.007090582965,0.01228124995) (-0.01874283661,0.03246354529) (-0.0002534798879,0.0004390400445) (6.808460863e-06,-1.179260014e-05) (0.001218491756,-0.00211048963) (0.001120069607,-0.001940017466) (-7.702992143e-07,1.334197376e-06) (0.001420036301,-0.002459575022) (0.003079871323,-0.005334493612) (-1.497289225e-06,2.593381012e-06) (-0.0009844018759,0.001705034064) (0.0002005515599,-0.0003473654913) (2.589526051e-07,-4.485190688e-07) (-9.179394658e-05,0.0001589917793) (1.709241288e-05,-2.960492753e-05) (2.461341544e-08,-4.263168609e-08) (-0.0005075475471,0.0008790981388) (0.0001125653912,-0.0001949689767) (1.306577615e-07,-2.263058812e-07) (0.0001311012957,-0.0002270741051) (0.0001706747231,-0.0002956172919) (-9.963682546e-08,1.72576044e-07) (-0.0001322101708,0.0002289947331) (2.533065632e-05,-4.387398374e-05) (3.534207956e-08,-6.121427745e-08) (3.566399888e-05,-6.177185807e-05) (3.686250359e-05,-6.384772911e-05) (-2.392364366e-08,4.143696631e-08) (-7.485395282e-05,0.0001296508494) (7.155927413e-06,-1.239442985e-05) (2.264899878e-08,-3.922921662e-08) (9.107253788e-06,-1.577422628e-05) (2.532776104e-05,-4.386896896e-05) (-1.151244726e-08,1.994014357e-08) (-1.899134758e-05,3.289397892e-05) (3.912341003e-07,-6.776373393e-07) (6.342969012e-09,-1.09863446e-08) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.01653457404,-0.02863872232) (-0.01481693702,0.02566368773) (9.949706138e-05,-0.0001723339655) (5.377938606e-05,-9.314862906e-05) (-7.132203009e-05,0.0001235333798) (-0.0002105623306,0.0003647046547) (7.44529174e-05,-0.0001289562357) (4.794629208e-05,-8.304541391e-05) (-4.645234247e-05,8.045781728e-05) (-2.113002537e-05,3.65982775e-05) (6.508952823e-06,-1.127383699e-05) (-2.782565142e-06,4.819544201e-06) (-9.300181641e-06,1.610838712e-05) (-0.01463285707,0.0253448519) (2.616874833e-05,-4.532560167e-05) (-0.002336540875,0.00404700751) (0.001812179585,-0.003138787114) (-2.272899548e-06,3.936777498e-06) (-0.01319038986,0.02284642541) (3.996000794e-05,-6.921276402e-05) (-1.284453257e-08,2.224738301e-08) (0.0004618297644,-0.0007999126164) (-9.553607913e-07,1.65473343e-06) (4.636983056e-10,-8.031490246e-10) (5.524098285e-06,-9.568018896e-06) (-1.086310209e-07,1.881544475e-07) (-1.339854236e-05,2.320695611e-05) (-0.000365141319,0.0006324433165) (8.800808196e-10,-1.524344694e-09) (2.84893946e-05,-4.934507893e-05) (-0.0001517399338,0.0002628212748) (-1.277053227e-10,2.211921074e-10) (-2.208009141e-05,3.824384015e-05) (0.0002236392519,-0.0003873545469) (2.407892199e-08,-4.170591628e-08) (-1.190479427e-09,2.061970853e-09) (-3.154137007e-05,5.46312555e-05) (-9.036164811e-11,1.565109656e-10) (1.950696771e-06,-3.378705918e-06) (-8.471154588e-05,0.0001467247015) (-2.03076594e-11,3.517389786e-11) (5.730243228e-08,-9.925072411e-08) (-5.392190249e-06,9.339547476e-06) (-3.658433149e-10,6.336592089e-10) (-1.116528349e-06,1.933883829e-06) (8.868127353e-06,-1.536004714e-05) (-9.65577339e-11,1.67242901e-10) (1.416117621e-06,-2.452787669e-06) (-1.848146722e-05,3.201084023e-05) (-4.754985347e-11,8.235876209e-11) (1.592600314e-06,-2.75846466e-06) (-1.728333755e-05,2.993561877e-05) (1.734723476e-18,-8.67361738e-19) (0.001421288335,-0.002461743608) (-0.02866009467,0.04964074012) (4.147852654e-05,-7.184291538e-05) (-0.008490374326,0.01470575971) (-8.131516294e-20,-2.710505431e-20) (-3.488083878e-05,6.041538497e-05) (0.002604149643,-0.004510519493) (-1.212696121e-06,2.100451296e-06) (-0.001949014841,0.003375792729) (6.776263578e-21,-1.43995601e-20) (-6.84819863e-07,1.186142797e-06) (1.665488592e-05,-2.88471086e-05) (-1.158052873e-08,2.005806414e-08) (-0.0002638178336,0.0004569458917) (-3.176373552e-22,0) (-3.213881516e-09,5.566606076e-09) (1.951032757e-05,-3.379287863e-05) (-5.044923245e-09,8.738063381e-09) (1.02387175e-06,-1.773397892e-06) (4.235164736e-21,2.541098842e-21) (-1.126062466e-07,1.950397403e-07) (2.913830078e-10,-5.046901739e-10) (1.392033993e-05,-2.411073601e-05) (-0.0002210927651,0.0003829439024) (-4.023406499e-21,3.388131789e-21) (-6.274119749e-07,1.086709418e-06) (1.575244907e-09,-2.728404213e-09) (-2.951896633e-05,5.112834946e-05) (0.0001121274987,-0.0001942105247) (-2.117582368e-22,5.082197684e-21) (9.099122566e-07,-1.576014259e-06) (-6.783673963e-09,1.174966797e-08) (-4.63062193e-05,8.020472453e-05) (9.03034606e-05,-0.0001564101819) (1.058791184e-22,-1.694065895e-21) (6.916940092e-07,-1.198049167e-06) (-3.396487491e-09,5.882888901e-09) (-8.287775515e-06,1.435484827e-05) (-5.108477623e-05,8.848142792e-05) (-8.999725065e-22,3.176373552e-21) (5.895674323e-09,-1.021160747e-08) (-1.532991602e-11,2.655219342e-11) (2.033345566e-06,-3.521857829e-06) (-2.71197858e-05,4.697284689e-05) (2.911675756e-22,-3.176373552e-22) (2.929347052e-08,-5.073777927e-08) (-1.226739939e-10,2.124775902e-10) (-8.152622709e-06,1.412075675e-05) (1.185719849e-05,-2.053727021e-05) (-1.058791184e-22,0) (2.366362762e-11,-4.098660533e-11) (2.030510961e-07,-3.51694815e-07) (-5.516550356e-10,9.554945499e-10) (-6.289741996e-06,1.08941527e-05) (1.058791184e-22,1.164670302e-21) (8.545604851e-08,-1.480142178e-07) (-2.306127229e-10,3.994329529e-10) (5.359197563e-06,-9.282402468e-06) (-1.792223291e-05,3.104221799e-05) (1.058791184e-22,-4.235164736e-22) (4.463913472e-08,-7.731724935e-08) (-1.130973968e-10,1.958904374e-10) (1.567605963e-06,-2.715173175e-06) (-8.255361831e-06,1.429870613e-05) -(-0.02616144742,0.04531295613) (-0.04013399248,0.06951411408) (-0.002798563663,0.004847254452) (0.004795750123,-0.008306482873) (0.001429388891,-0.002475774183) (-0.0006396043251,0.001107827188) (-0.0002747846405,0.0004759409585) (4.231850505e-05,-7.329780085e-05) (9.721999344e-05,-0.0001683899681) (-1.201980249e-05,2.08189086e-05) (-1.024812465e-05,1.775027258e-05) (-3.419704066e-06,5.923101189e-06) (5.830153065e-06,-1.009812133e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.12111549,0.2097781823) (-0.0005607657229,0.0009712747232) (-0.002000518664,0.003464999967) (-0.0004075616168,0.0007059174275) (-0.0002729746153,0.0004728059028) (-1.278868443e-06,2.21506512e-06) (-6.037625137e-06,1.045747349e-05) (-3.526857492e-05,6.108696368e-05) (-1.932297171e-05,3.346836876e-05) (-7.415213061e-06,1.284352577e-05) (-8.572210917e-06,1.484750484e-05) (-9.354879707e-06,1.620312695e-05) (-6.899174245e-06,1.194972032e-05) (-8.71432143e-08,1.509364747e-07) (-0.002819411596,0.004883364132) (0.01502942923,-0.02603173503) (0.0008700924344,-0.001507044304) (0.0001228246921,-0.0002127386071) (7.320806353e-10,-1.268000856e-09) (0.0001192873191,-0.0002066116974) (-8.929992509e-05,0.0001546720074) (1.373510757e-11,-2.378990418e-11) (0.000299626932,-0.0005189690695) (-0.0001838490925,0.0003184359691) (5.231009419e-11,-9.060374093e-11) (3.300273741e-05,-5.716241798e-05) (-2.446401255e-05,4.237291269e-05) (4.222108033e-12,-7.312905615e-12) (2.383089031e-07,-4.12763128e-07) (-2.03263699e-07,3.52063054e-07) (1.663957862e-14,-2.882059555e-14) (1.598075748e-05,-2.767948389e-05) (-1.228323086e-05,2.127517993e-05) (1.819532649e-12,-3.151522991e-12) (1.701272271e-05,-2.946690011e-05) (-1.203371311e-05,2.08430025e-05) (2.268351531e-12,-3.928900099e-12) (4.63149072e-06,-8.021977241e-06) (-3.344313848e-06,5.792521501e-06) (6.401746952e-13,-1.1088151e-12) (3.782440103e-06,-6.551378435e-06) (-2.784982798e-06,4.823731704e-06) (4.566111209e-13,-7.908736621e-13) (3.233764025e-06,-5.601043591e-06) (-1.652550646e-06,2.862301681e-06) (8.418017035e-13,-1.458043318e-12) (2.598776547e-06,-4.501213017e-06) (-1.422702445e-06,2.464192919e-06) (5.27927159e-13,-9.14396661e-13) (8.817371997e-07,-1.527213629e-06) (-1.45942524e-07,2.527798665e-07) (4.485466415e-13,-7.769055717e-13) (1.843143693e-18,-6.396792818e-18) (8.67361738e-19,3.469446952e-18) (0,-1.301042607e-18) (-0.02060375576,0.0356867518) (0.06045012766,-0.1047026924) (0,2.168404345e-19) (1.084202172e-19,2.168404345e-19) (4.33680869e-19,0) (-0.005297526462,0.009175584986) (0.01558567133,-0.02699517461) (0,0) (-1.694065895e-21,-3.811648263e-21) (1.694065895e-21,-1.694065895e-21) (-2.702014961e-05,4.680027195e-05) (0.0001359807469,-0.0002355255625) (2.371692252e-20,3.388131789e-20) (6.776263578e-21,1.355252716e-20) (6.776263578e-21,1.355252716e-20) (-0.0003173531288,0.0005496717431) (0.0009319561715,-0.001614195439) (-2.64697796e-23,0) (2.316105715e-23,-8.602678371e-23) (-1.32348898e-23,0) (1.10762366e-08,-1.918460455e-08) (-6.716194071e-07,1.163278936e-06) (0,0) (0,5.29395592e-23) (-7.940933881e-23,1.389663429e-22) (-4.754822232e-07,8.235593687e-07) (2.065183874e-06,-3.577003397e-06) (8.470329473e-22,0) (-1.058791184e-22,6.352747104e-22) (0,-1.905824131e-21) (-1.517604603e-05,2.628568279e-05) (4.50724991e-05,-7.806785847e-05) (-1.482307658e-21,2.329340605e-21) (0,-2.117582368e-22) (0,-4.235164736e-22) (-7.538565652e-06,1.305717873e-05) (2.367733081e-05,-4.101033996e-05) (4.63221143e-23,1.32348898e-23) (5.29395592e-23,-3.97046694e-23) (-2.64697796e-23,-5.29395592e-23) (-8.103564901e-07,1.403578613e-06) (2.67611154e-06,-4.635161153e-06) (-2.117582368e-22,4.235164736e-22) (-1.588186776e-22,0) (0,0) (-1.711417653e-06,2.964262327e-06) (5.087485249e-06,-8.811782933e-06) (-1.058791184e-22,-4.235164736e-22) (-4.63221143e-23,6.6174449e-23) (5.29395592e-23,4.235164736e-22) (-2.996110319e-06,5.189415297e-06) (8.841353425e-06,-1.531367334e-05) (5.29395592e-23,-2.117582368e-22) (1.058791184e-22,2.117582368e-22) (-2.382280164e-22,2.64697796e-22) (-1.848699751e-06,3.202041897e-06) (5.660846895e-06,-9.804874436e-06) (0,0) (2.316105715e-23,3.30872245e-23) (2.382280164e-22,1.058791184e-22) (-1.315863121e-06,2.279141781e-06) (3.859226647e-06,-6.68437663e-06) -(-0.1083538861,0.187674436) (0.04130000015,-0.07153369861) (-0.005588563056,0.009679675154) (0.0001512454779,-0.0002619648521) (-0.0004157109044,0.0007200324077) (0.0004987808677,-0.0008639138046) (-0.0004215574793,0.0007301589725) (0.0001921116781,-0.0003327471872) (-0.000135218537,0.0002342053762) (5.460781335e-05,-9.458350721e-05) (-4.878621887e-05,8.45002098e-05) (1.937500693e-05,-3.35584964e-05) (-2.137444623e-05,3.702162685e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.1083538861,0.187674436) (0.04130000015,-0.07153369861) (-0.005588563056,0.009679675154) (0.0001512454779,-0.0002619648521) (-0.0004157109044,0.0007200324077) (0.0004987808677,-0.0008639138046) (-0.0004215574793,0.0007301589725) (0.0001921116781,-0.0003327471872) (-0.000135218537,0.0002342053762) (5.460781335e-05,-9.458350721e-05) (-4.878621887e-05,8.45002098e-05) (1.937500693e-05,-3.35584964e-05) (-2.137444623e-05,3.702162685e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.2475006931,0) (0.001885655396,0) (0.003936900835,0) (0.0009741204454,0) (0.0005004075617,0) (8.132634863e-07,0) (1.510083094e-05,0) (7.282759888e-05,0) (3.408159058e-05,0) (1.381866281e-05,0) (1.778426622e-05,0) (1.795710592e-05,0) (1.276438578e-05,0) (7.833976983e-06,0) (0.3041454174,0) (0.002926686712,0) (0.02849839687,0) (2.755679327e-06,0) (1.477200313e-09,0) (5.595452752e-05,0) (0.000471312833,0) (2.30767043e-11,0) (0.0001328145617,0) (0.002968612862,0) (1.385122765e-10,0) (0.0001424591791,0) (8.663764015e-06,0) (6.653302287e-12,0) (1.353880343e-06,0) (1.063332768e-06,0) (1.058585676e-13,0) (0.0001028139335,0) (8.885062031e-06,0) (4.930568137e-12,0) (9.226573536e-06,0) (0.0001114531879,0) (5.306720436e-12,0) (2.485545863e-05,0) (1.209685944e-06,0) (1.149711836e-12,0) (2.362894913e-06,0) (2.235255113e-05,0) (1.084804457e-12,0) (4.060026829e-05,0) (2.884757044e-07,0) (1.846273793e-12,0) (8.663751496e-07,0) (2.708317392e-05,0) (1.260179665e-12,0) (1.705402686e-05,0) (4.258384822e-09,0) (8.003161713e-13,0) (1.561251128e-17,0) (6.938893904e-18,0) (8.67361738e-19,0) (0.04483170943,0) (0.1133052738,0) (8.67361738e-19,0) (-1.734723476e-18,0) (4.33680869e-19,0) (0.009624007898,0) (0.03498925778,0) (0,0) (5.421010862e-20,0) (6.776263578e-21,0) (1.920663012e-05,0) (0.0007802029551,0) (2.439454888e-19,0) (0,0) (2.710505431e-20,0) (0.0006986693326,0) (0.001726467409,0) (0,0) (-3.176373552e-22,0) (-4.235164736e-22,0) (1.653240914e-09,0) (1.835110102e-05,0) (0,0) (0,0) (0,0) (2.342751068e-06,0) (1.709453932e-06,0) (0,0) (1.016439537e-20,0) (1.101142831e-20,0) (2.57422105e-05,0) (0.0001083718738,0) (1.270549421e-21,0) (0,0) (-4.235164736e-22,0) (2.225083718e-05,0) (3.271647394e-05,0) (0,0) (2.911675756e-22,0) (0,0) (2.685905316e-06,0) (3.292917407e-06,0) (2.117582368e-22,0) (2.117582368e-22,0) (0,0) (2.887868495e-06,0) (1.229628472e-05,0) (2.117582368e-22,0) (0,0) (-4.235164736e-22,0) (6.902245323e-06,0) (1.565229019e-05,0) (-6.352747104e-22,0) (2.117582368e-22,0) (-4.235164736e-22,0) (5.060621495e-06,0) (8.434035548e-06,0) (-1.058791184e-22,0) (-8.470329473e-22,0) (-3.176373552e-22,0) (2.848171096e-06,0) (7.27171318e-06,0) -(0.09496554104,0) (0.02219350733,0) (0.0009466734748,0) (2.321681126e-06,0) (4.129794632e-05,0) (0.0001989658342,0) (0.0002383724452,0) (0.0001692599573,0) (0.0001085254047,0) (7.176902103e-05,0) (5.852636604e-05,0) (5.506831979e-05,0) (4.747128362e-05,0) (0.08203099855,0) (8.306610194e-08,0) (0.1359609918,0) (0.009081386798,0) (5.657391905e-09,0) (0.01196712578,0) (5.443671855e-05,0) (2.267692166e-12,0) (6.454709571e-05,0) (4.074384328e-08,0) (2.322477598e-15,0) (4.516263572e-08,0) (1.806939314e-09,0) (9.637884248e-05,0) (0.0001200645114,0) (3.505088404e-13,0) (0.0001259530711,0) (0.0003880768169,0) (2.442169459e-14,0) (0.0001806923474,0) (0.0003300259584,0) (4.99498452e-09,0) (5.220474457e-13,0) (0.0003140465704,0) (2.043749217e-14,0) (6.916995033e-05,0) (0.0001161425193,0) (3.068536094e-15,0) (6.841874488e-06,0) (0.0001365406311,0) (3.090610873e-13,0) (1.118320353e-06,0) (0.0001219538312,0) (2.402304362e-14,0) (6.135362753e-06,0) (0.0001061573737,0) (1.022792114e-14,0) (9.682037194e-06,0) (9.16160885e-05,0) (0,0) (0.008475895408,0) (0.1732522102,0) (1.124213962e-07,0) (0.02297182624,0) (1.084202172e-19,0) (0.0009869192534,0) (0.006480627332,0) (3.316210435e-10,0) (0.000596346401,0) (1.694065895e-21,0) (6.030566529e-06,0) (7.772448169e-05,0) (1.304810639e-11,0) (1.025243196e-05,0) (0,0) (6.172455307e-07,0) (3.424236285e-06,0) (8.91940129e-14,0) (8.102047562e-08,0) (0,0) (1.7510264e-07,0) (5.995060337e-14,0) (0.0002921369044,0) (3.675876272e-05,0) (2.032879073e-20,0) (1.275281687e-06,0) (4.637667068e-13,0) (0.0003051743252,0) (0.0002630933887,0) (6.776263578e-21,0) (3.588497215e-06,0) (5.404957306e-12,0) (0.0003430215163,0) (6.96043537e-05,0) (5.082197684e-21,0) (2.144710129e-06,0) (2.269021793e-12,0) (0.0002012220718,0) (3.895281572e-05,0) (1.694065895e-21,0) (3.844113255e-09,0) (1.769838074e-15,0) (0.0001178597097,0) (2.092539475e-05,0) (-8.470329473e-22,0) (6.145570316e-08,0) (3.010474357e-14,0) (2.166322872e-05,0) (9.000390998e-05,0) (0,0) (1.298476433e-12,0) (5.281220211e-07,0) (2.249656277e-13,0) (0.0001117973318,0) (2.541098842e-21,0) (1.467994913e-07,0) (7.105028024e-14,0) (4.480358687e-05,0) (5.317998557e-05,0) (0,0) (6.039698986e-08,0) (2.87767903e-14,0) (3.246588878e-06,0) (8.011602699e-05,0) -(0.4945189387,0) (0.307421443,0) (0.1319654046,0) (0.03941143222,0) (0.01673841645,0) (0.005001509027,0) (0.002982067969,0) (0.0008721944031,0) (0.0006739086684,0) (0.0001662005827,0) (0.000162668234,0) (2.726728507e-05,0) (3.849627959e-05,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.3147524089,0) (0.3911428714,0) (0.2057672699,0) (0.06817076837,0) (0.01624681051,0) (0.001918900616,0) (8.656155591e-06,0) (0.0003293313421,0) (0.0005165205109,0) (0.0005274892321,0) (0.000308913253,0) (0.0001921098042,0) (7.200817462e-05,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.1469209212,0) (0.001757452279,0) (0.008885391297,0) (0.0004765796032,0) (0.0003137171467,0) (3.753583099e-07,0) (3.817084e-06,0) (6.033841652e-07,0) (5.317323845e-07,0) (8.414643968e-06,0) (3.31541252e-06,0) (3.002007615e-07,0) (1.229871495e-06,0) (0.001306177527,0) (1.355168727e-09,0) (0.2503658847,0) (1.046614926e-05,0) (2.060951583e-11,0) (0.04152020624,0) (4.050576507e-07,0) (1.00843227e-12,0) (0.003778769832,0) (1.889305054e-06,0) (8.299835645e-12,0) (0.002559803502,0) (1.316604296e-15,0) (2.853709815e-10,0) (7.660087477e-05,0) (2.266554089e-16,0) (5.359854749e-09,0) (1.127557649e-07,0) (1.456075894e-15,0) (8.395718063e-08,0) (9.154156321e-06,0) (9.161877051e-08,0) (3.993706216e-16,0) (1.150818494e-07,0) (1.068890781e-15,0) (4.419176462e-08,0) (7.775554357e-06,0) (1.628929061e-17,0) (4.528323296e-06,0) (1.43185262e-05,0) (2.455969101e-13,0) (6.161678805e-07,0) (1.125366415e-06,0) (1.15944313e-15,0) (1.58315933e-07,0) (5.391837529e-07,0) (2.24968478e-15,0) (6.286898691e-07,0) (3.183188427e-06,0) (6.2883726e-18,0) (0.0002446691601,0) (8.145458932e-07,0) (5.664740933e-10,0) (0.177759353,0) (2.493664997e-18,0) (2.201408811e-06,0) (0.0003158153936,0) (8.549720567e-10,0) (0.0706465972,0) (1.058791184e-22,0) (2.464242287e-13,0) (6.094571757e-11,0) (1.707997469e-15,0) (4.38015457e-05,0) (8.131516294e-20,0) (2.311133296e-11,0) (9.174418953e-05,0) (8.403150672e-11,0) (0.001971316564,0) (5.29395592e-23,0) (1.266660794e-13,0) (7.775698928e-17,0) (6.88337889e-11,0) (2.410431746e-06,0) (1.356576205e-22,0) (5.576701781e-10,0) (1.468000911e-14,0) (6.062379565e-07,0) (3.176643229e-06,0) (-2.067951531e-24,0) (2.300661614e-12,0) (5.707138741e-16,0) (1.135038219e-09,0) (1.530804122e-07,0) (-1.178732373e-23,0) (3.081533289e-11,0) (8.947554122e-16,0) (2.296325301e-09,0) (3.899274721e-07,0) (6.749793798e-22,0) (8.755362874e-11,0) (1.48542241e-15,0) (8.808607626e-08,0) (2.190836451e-05,0) (-1.058791184e-22,0) (2.423577032e-09,0) (3.638364687e-14,0) (4.518853107e-06,0) (4.641490491e-06,0) (1.413638742e-27,0) (6.210057073e-11,0) (3.638362452e-11,0) (1.650294841e-19,0) (9.04762241e-12,0) (8.271806126e-24,0) (4.100520746e-10,0) (4.164857336e-15,0) (3.101457978e-07,0) (1.081074942e-06,0) (7.940933881e-23,0) (4.313670249e-09,0) (1.26775354e-14,0) (2.818838655e-06,0) (9.917835142e-07,0) -(0.1537404548,0) (0.003727007567,0) (0.00854296775,0) (0.0008283378013,0) (0.000249242271,0) (3.135135163e-06,0) (3.485164461e-06,0) (1.245370055e-07,0) (1.451806454e-06,0) (9.235094054e-06,0) (1.535303137e-06,0) (1.834495508e-07,0) (1.651277635e-06,0) (2.815830936e-10,0) (0.01983051592,0) (0.2311916741,0) (1.480857164e-06,0) (5.065308416e-11,0) (0.05191474862,0) (1.74172454e-07,0) (5.928976114e-13,0) (0.002321923377,0) (5.781125973e-06,0) (1.396714217e-11,0) (0.002995923626,0) (1.300580339e-15,0) (2.083846774e-09,0) (2.160554926e-05,0) (8.895745648e-08,0) (1.874301973e-14,0) (4.549221948e-07,0) (3.009999658e-15,0) (6.499753675e-08,0) (5.596904508e-06,0) (8.516512091e-16,0) (5.426835441e-08,0) (1.474190623e-07,0) (1.228211538e-15,0) (1.807091778e-07,0) (1.378205676e-05,0) (2.933157846e-14,0) (5.773281799e-06,0) (8.30249756e-06,0) (1.793970786e-07,0) (1.57524998e-14,0) (1.14196802e-07,0) (1.547102555e-15,0) (2.937426657e-07,0) (8.906479179e-07,0) (3.127361261e-15,0) (1.516806236e-06,0) (2.811236419e-06,0) (0,0) (1.511060808e-05,0) (5.607603461e-10,0) (0.1487858497,0) (0.02038732434,0) (1.734723476e-18,0) (9.734329973e-09,0) (0.0004046016186,0) (8.829540289e-10,0) (0.0787413867,0) (0,0) (1.175486027e-09,0) (3.16393186e-09,0) (1.818492629e-13,0) (0.0005493161406,0) (0,0) (1.11287863e-09,0) (2.242153709e-05,0) (5.137087983e-11,0) (0.001903470945,0) (-4.235164736e-22,0) (1.177409821e-09,0) (2.273659858e-09,0) (4.248625572e-15,0) (2.121979301e-05,0) (0,0) (1.746371504e-10,0) (3.101321166e-15,0) (2.618867638e-10,0) (3.3303246e-06,0) (-6.6174449e-24,0) (4.476698989e-11,0) (7.989091628e-15,0) (1.282889475e-07,0) (2.814187778e-07,0) (1.654361225e-24,0) (2.426502395e-12,0) (1.278136264e-16,0) (7.949778252e-10,0) (1.110717381e-07,0) (2.436173229e-11,0) (0,0) (3.526056281e-16,0) (7.3810059e-07,0) (2.697616726e-05,0) (0,0) (1.877165974e-10,0) (1.913490841e-14,0) (2.115184742e-06,0) (1.181201865e-06,0) (-1.654361225e-24,0) (6.907330169e-11,0) (1.047719175e-07,0) (7.596810143e-15,0) (7.557011361e-09,0) (1.895051636e-10,0) (0,0) (6.491569902e-15,0) (1.28432286e-06,0) (1.324891707e-06,0) (0,0) (9.739590345e-10,0) (2.829120299e-14,0) (3.141117806e-06,0) (2.187995244e-07,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.002296938444,0) (0.0004656769935,0) (-3.404442288e-05,0) (8.60557369e-05,0) (-2.195463111e-05,0) (1.021437952e-06,0) (1.052245556e-06,0) (3.19721922e-07,0) (-3.631499723e-07,0) (-8.080661741e-07,0) (1.730221396e-07,0) (-2.294551817e-08,0) (-1.671873287e-07,0) (0.008189657419,0) (5.041046806e-06,0) (-0.008342968697,0) (0.0002452856292,0) (-2.067629571e-07,0) (0.002505844645,0) (-1.362524288e-05,0) (1.28943057e-08,0) (-0.0003814274264,0) (-3.297204231e-05,0) (-4.172364306e-08,0) (0.0001791736462,0) (1.381913284e-10,0) (1.079257912e-07,0) (-3.267927222e-05,0) (-3.366221799e-11,0) (2.800914463e-07,0) (2.957483131e-08,0) (-4.691192177e-11,0) (6.280388515e-07,0) (3.585047097e-06,0) (-8.962099782e-07,0) (-4.954574338e-11,0) (9.752156065e-07,0) (3.109204061e-11,0) (3.176698282e-07,0) (-2.771203269e-06,0) (-2.22648192e-12,0) (1.653561186e-06,0) (-1.853786177e-06,0) (-4.89836296e-10,0) (1.10502967e-06,0) (-9.167977887e-07,0) (3.191879817e-11,0) (5.061688212e-07,0) (-6.78714229e-07,0) (3.355563738e-11,0) (7.856396421e-07,0) (-1.190808539e-06,0) (0,0) (-0.0009274664534,0) (-0.0002742614059,0) (4.438674186e-06,0) (-0.001474755946,0) (-8.67361738e-19,0) (-1.006015126e-05,0) (-0.002941831249,0) (-2.930994065e-06,0) (0.005259890253,0) (1.376428539e-21,0) (5.998322676e-10,0) (6.199376993e-08,0) (-1.995271809e-10,0) (6.084148142e-05,0) (5.421010862e-20,0) (-7.446672951e-11,0) (-0.0003970796515,0) (2.33129964e-07,0) (0.0003677132413,0) (5.29395592e-23,0) (4.113038732e-10,0) (-1.578850801e-11,0) (2.295141761e-08,0) (6.300650718e-06,0) (-3.176373552e-22,0) (4.941788939e-08,0) (-4.216631935e-10,0) (-3.616195343e-06,0) (5.091702812e-06,0) (3.97046694e-23,0) (-3.504778343e-09,0) (-1.048420309e-10,0) (2.359753035e-07,0) (2.499492298e-07,0) (-1.522012327e-22,0) (9.88648561e-09,0) (-1.014613753e-10,0) (-2.52638343e-07,0) (8.108630087e-07,0) (1.058791184e-22,0) (-3.46259369e-09,0) (2.113178083e-11,0) (2.345799347e-07,0) (-3.336664573e-06,0) (9.264422861e-23,0) (-3.308381734e-08,0) (-2.028902496e-10,0) (2.843321806e-06,0) (-2.094078847e-06,0) (6.203854594e-25,0) (-5.632286098e-11,0) (7.855457093e-09,0) (7.109805969e-13,0) (-7.829784988e-09,0) (-1.389663429e-22,0) (-1.617807133e-08,0) (8.400741329e-11,0) (9.173899183e-07,0) (-1.236998982e-06,0) (0,0) (-4.115909576e-08,0) (1.129540535e-10,0) (1.15856545e-06,0) (-1.384583023e-06,0) -(-0.05751293495,0) (-0.01742314575,0) (0.002807441229,0) (-0.002741260601,0) (0.0006877098011,0) (-6.313790157e-05,0) (-3.703790973e-05,0) (-1.993765262e-06,0) (1.779141841e-05,0) (1.117127821e-05,0) (-3.925466161e-06,0) (1.105928494e-06,0) (4.760820116e-06,0) (2.356370425e-06,0) (0.002086629187,0) (0.008695215087,0) (-6.2979561e-06,0) (3.741398894e-07,0) (-0.07442571239,0) (3.937534685e-07,0) (-7.848018285e-09,0) (0.008950218454,0) (-7.896863725e-06,0) (5.968412251e-08,0) (-0.002792952986,0) (-8.133735556e-11,0) (5.197317153e-08,0) (0.0004693188178,0) (-7.459501429e-07,0) (-3.500108653e-10,0) (-4.093285999e-06,0) (1.032339543e-10,0) (-9.466882665e-07,0) (-8.422440694e-05,0) (6.995807459e-11,0) (-1.632739084e-06,0) (-4.319618027e-06,0) (-2.136820204e-11,0) (9.874220973e-07,0) (7.401138147e-05,0) (1.010201071e-10,0) (-5.466525505e-06,0) (-8.034065257e-06,0) (-6.503235901e-07,0) (-1.341657236e-10,0) (-4.441394808e-07,0) (-3.383529974e-11,0) (1.834727903e-06,0) (5.4567997e-06,0) (-3.617647595e-11,0) (2.98183865e-06,0) (5.407168305e-06,0) (6.505213035e-19,0) (-3.801065212e-06,0) (-4.420846394e-06,0) (0.06307890282,0) (0.006834856211,0) (-1.734723476e-18,0) (1.2360615e-07,0) (-0.0004147197189,0) (3.245439041e-06,0) (-0.05323530859,0) (-1.084202172e-19,0) (-7.133332631e-09,0) (1.11168147e-08,0) (5.132952515e-09,0) (-0.005614192732,0) (0,0) (3.611864086e-10,0) (1.48279327e-05,0) (-1.809388448e-07,0) (0.00192530132,0) (-1.355252716e-20,0) (-1.462622461e-08,0) (-4.015748519e-08,0) (3.138645067e-10,0) (-0.0004375922108,0) (8.470329473e-22,0) (-2.062581006e-09,0) (1.526916853e-10,0) (-7.487547447e-09,0) (-6.5275208e-05,0) (0,0) (9.665570157e-10,0) (-4.759094266e-10,0) (4.428858264e-06,0) (1.003236761e-05,0) (0,0) (1.297693598e-10,0) (-3.054149145e-11,0) (7.432534774e-08,0) (9.720891838e-06,0) (2.414566489e-11,0) (8.470329473e-22,0) (-3.039500918e-12,0) (1.39543781e-06,0) (5.069545599e-05,0) (0,0) (-4.776269042e-10,0) (1.818254864e-10,0) (-9.70477885e-06,0) (-5.529115333e-06,0) (0,0) (-4.190493315e-10,0) (-1.078377038e-06,0) (-1.525802291e-10,0) (-6.801392399e-08,0) (5.154379602e-10,0) (2.117582368e-22,0) (-9.02140094e-11,0) (5.837397148e-06,0) (5.909045808e-06,0) (2.64697796e-23,0) (2.987041801e-10,0) (-1.60387982e-10,0) (3.118621718e-06,0) (1.889669192e-07,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.05227305888,0) (-0.01059774195,0) (0.0007747731012,0) (-0.0019584315,0) (0.0004996371268,0) (-2.324558865e-05,0) (-2.394669917e-05,0) (-7.276138765e-06,0) (8.264461737e-06,0) (1.838973561e-05,0) (-3.937587669e-06,0) (5.221874471e-07,0) (3.804800733e-06,0) (0.003294115467,0) (-5.03865326e-06,0) (8.521411615e-05,0) (8.201923211e-05,0) (2.067578889e-07,0) (-0.06268694534,0) (-4.461298473e-06,0) (-1.290932257e-08,0) (0.008994674824,0) (-1.566384246e-05,0) (4.177343488e-08,0) (-0.003310642092,0) (-1.39836719e-10,0) (4.550215342e-08,0) (0.0007412007475,0) (3.371897556e-11,0) (-2.135755559e-07,0) (-6.832987415e-06,0) (4.698765009e-11,0) (-6.359455323e-07,0) (-9.524322186e-05,0) (-1.168207208e-06,0) (4.963625375e-11,0) (-6.28702053e-07,0) (-3.114294568e-11,0) (4.478956051e-07,0) (5.538823034e-05,0) (2.230680666e-12,0) (1.774135912e-06,0) (2.782574797e-06,0) (4.907366656e-10,0) (-1.097731374e-06,0) (-3.17533837e-06,0) (-3.19703626e-11,0) (1.108827398e-06,0) (2.817216516e-06,0) (-3.361210006e-11,0) (1.86095787e-06,0) (7.359028335e-06,0) (-4.33680869e-19,0) (-0.0002852827998,0) (-0.0001093982521,0) (-4.438290702e-06,0) (0.0612087474,0) (-1.084202172e-18,0) (-5.672657459e-06,0) (-0.001412428299,0) (2.934551322e-06,0) (-0.05104289932,0) (5.844527336e-20,0) (2.315741605e-10,0) (2.280737082e-08,0) (1.99657454e-10,0) (-0.001386055972,0) (2.032879073e-20,0) (-2.218079147e-11,0) (-0.0001285817751,0) (-2.334044471e-07,0) (0.000791823636,0) (2.435219723e-21,0) (1.565366177e-10,0) (1.581342029e-11,0) (4.980086481e-09,0) (-0.0001439248567,0) (-5.558653716e-22,0) (1.452916396e-08,0) (4.223110462e-10,0) (-7.100395277e-06,0) (-2.760876911e-05,0) (-2.415367389e-22,0) (-1.566034151e-09,0) (1.050286112e-10,0) (1.196885357e-08,0) (-1.098689074e-05,0) (3.441071348e-22,0) (2.91435589e-09,0) (1.016381852e-10,0) (-1.778376473e-07,0) (-1.275177812e-05,0) (-2.64697796e-22,0) (-1.096373539e-09,0) (-2.116571378e-11,0) (3.816288677e-07,0) (7.029415091e-05,0) (2.067951531e-22,0) (-1.759502375e-08,0) (2.032173328e-10,0) (-7.041690834e-06,0) (-9.234442056e-06,0) (2.714186385e-25,0) (3.778730592e-10,0) (3.371220318e-09,0) (-7.123309402e-13,0) (-3.067020323e-09,0) (9.264422861e-23,0) (-4.169374205e-09,0) (-8.414027643e-11,0) (2.098761966e-06,0) (5.54532595e-06,0) (-9.926167351e-23,0) (-9.442255645e-09,0) (-1.131400601e-10,0) (5.032227385e-06,0) (1.055086583e-06,0) -(-0.01870392239,0) (-0.005666223889,0) (0.0009130148356,0) (-0.0008914920716,0) (0.0002236517882,0) (-2.053323155e-05,0) (-1.204518931e-05,0) (-6.483972824e-07,0) (5.785990742e-06,0) (3.633038737e-06,0) (-1.276610461e-06,0) (3.596617133e-07,0) (1.548277966e-06,0) (-2.360738584e-06,0) (0.03012600167,0) (-0.02661648463,0) (-0.0001013170272,0) (-3.750412402e-07,0) (-0.02410440258,0) (-6.473083976e-06,0) (7.86788762e-09,0) (0.002917313174,0) (-6.209909928e-05,0) (-5.982724624e-08,0) (-0.0008486929007,0) (8.153315783e-11,0) (1.767015122e-07,0) (0.0001524684146,0) (8.386966911e-07,0) (3.506062313e-10,0) (-2.412940959e-06,0) (-1.03489508e-10,0) (4.325370202e-07,0) (-2.813110036e-05,0) (-7.01336135e-11,0) (-1.272009523e-06,0) (-6.63678222e-07,0) (2.141801211e-11,0) (7.20810683e-07,0) (2.366970548e-05,0) (-1.012439589e-10,0) (-8.825188043e-08,0) (-4.302174199e-06,0) (2.262857906e-07,0) (1.343906619e-10,0) (-5.823968285e-07,0) (3.391481584e-11,0) (1.224153722e-06,0) (1.147096904e-06,0) (3.625524393e-11,0) (1.96618936e-06,0) (7.619721113e-07,0) (1.734723476e-18,0) (-0.0002399783128,0) (4.429670749e-06,0) (0.05862781591,0) (-0.03565811638,0) (0,0) (3.134980355e-06,0) (-0.003476641184,0) (-3.253025745e-06,0) (-0.01396980218,0) (-2.710505431e-20,0) (1.136629777e-07,0) (1.037074105e-06,0) (-5.146353529e-09,0) (-0.00182694799,0) (2.710505431e-20,0) (-1.794104248e-08,0) (-0.0001795896175,0) (1.81405844e-07,0) (0.0008103216112,0) (3.388131789e-21,0) (2.246534061e-07,0) (1.460111013e-07,0) (-3.147057971e-10,0) (-0.0001426984983,0) (0,0) (3.165906529e-08,0) (-1.530328056e-10,0) (-5.880359132e-08,0) (-2.120406882e-05,0) (5.29395592e-23,0) (-1.426401455e-08,0) (4.771886505e-10,0) (-9.224878544e-07,0) (5.639404919e-06,0) (0,0) (-1.923071812e-09,0) (3.061682836e-11,0) (1.365337013e-07,0) (3.050917587e-06,0) (-5.065341759e-10,0) (4.235164736e-22,0) (3.046264775e-12,0) (6.475738678e-07,0) (1.629354359e-05,0) (0,0) (9.109682087e-09,0) (-1.822953378e-10,0) (-1.485812014e-06,0) (-3.477463597e-06,0) (0,0) (6.655951109e-09,0) (-5.74589738e-07,0) (1.527580882e-10,0) (1.947745163e-07,0) (-7.857037501e-09,0) (2.117582368e-22,0) (9.043149751e-11,0) (3.224418723e-06,0) (6.035756443e-07,0) (-1.058791184e-22,0) (-1.558553604e-08,0) (1.607444256e-10,0) (1.658167214e-06,0) (-5.670284416e-07,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.0411321873,0) (-0.008339062533,0) (0.0006096469769,0) (-0.001541034196,0) (0.0003931502828,0) (-1.829129434e-05,0) (-1.884297833e-05,0) (-5.725387206e-06,0) (6.503070519e-06,0) (1.447036132e-05,0) (-3.098376047e-06,0) (4.108944902e-07,0) (2.993889774e-06,0) (-0.003692931319,0) (6.684943117e-06,0) (0.006341380197,0) (-0.0001230406465,0) (-2.74369599e-07,0) (-0.04913856285,0) (6.893948142e-06,0) (1.71308782e-08,0) (0.007067222778,0) (1.30112031e-05,0) (-5.544016143e-08,0) (-0.002630298682,0) (1.854554824e-10,0) (-4.611068783e-08,0) (0.0005833114635,0) (-4.475959074e-11,0) (-3.716938248e-07,0) (-5.172975408e-06,0) (-6.23653338e-11,0) (-9.518968852e-07,0) (-7.449260097e-05,0) (-2.062491615e-07,0) (-6.585442473e-11,0) (-1.207582855e-06,0) (4.133017006e-11,0) (9.861243906e-08,0) (4.383718543e-05,0) (-2.959197357e-12,0) (9.323612458e-08,0) (3.492314996e-06,0) (-6.522504806e-10,0) (-1.657548191e-06,0) (-1.703770788e-06,0) (4.242558686e-11,0) (4.549582158e-07,0) (2.634266796e-06,0) (4.460116865e-11,0) (8.116553402e-07,0) (6.443219229e-06,0) (-3.035766083e-18,0) (0.0004829576041,0) (0.0001242870854,0) (5.888692216e-06,0) (0.04723623807,0) (-1.138412281e-18,0) (3.294780257e-06,0) (0.001149751687,0) (-3.89436725e-06,0) (-0.04242691604,0) (-1.694065895e-20,0) (-2.768655948e-10,0) (-2.949608241e-08,0) (-2.64989249e-10,0) (-0.001090599805,0) (3.726944968e-20,0) (3.933175976e-11,0) (0.0002019770285,0) (3.09697559e-07,0) (0.0003194157652,0) (-2.541098842e-21,0) (-1.91547415e-10,0) (-2.098780888e-11,0) (-1.35141104e-08,0) (-0.0001132326063,0) (5.823351512e-22,0) (-2.624027897e-08,0) (-5.605204444e-10,0) (-2.631350537e-06,0) (-2.46417407e-05,0) (2.514629062e-22,0) (1.457134286e-09,0) (-1.394145316e-10,0) (-1.684666273e-07,0) (-8.469855444e-06,0) (2.117582368e-22,0) (-5.243764032e-09,0) (-1.348940671e-10,0) (5.599469354e-08,0) (-1.022219073e-05,0) (1.694065895e-21,0) (1.779518342e-09,0) (2.808845119e-11,0) (1.111762798e-07,0) (5.549890313e-05,0) (-2.249931266e-22,0) (1.163451117e-08,0) (-2.697230875e-10,0) (-7.446974375e-06,0) (-5.385302829e-06,0) (-1.550963649e-25,0) (3.272970404e-10,0) (-3.370708344e-09,0) (9.449748969e-13,0) (3.578609755e-09,0) (6.948317145e-23,0) (9.0329589e-09,0) (1.116684355e-10,0) (8.917771118e-07,0) (5.110647247e-06,0) (5.128519798e-23,0) (2.385951371e-08,0) (1.501339326e-10,0) (2.921382097e-06,0) (1.83702408e-06,0) -(0.02917389264,0) (0.008838028944,0) (-0.001424096841,0) (0.001390526193,0) (-0.0003488462539,0) (3.20272016e-05,0) (1.878777362e-05,0) (1.011353251e-06,0) (-9.024838172e-06,0) (-5.66671952e-06,0) (1.99122386e-06,0) (-5.609910046e-07,0) (-2.414963783e-06,0) (3.131764434e-06,0) (0.02113859613,0) (-0.02661209925,0) (-7.166687639e-05,0) (4.97322524e-07,0) (0.03782720766,0) (-5.177796953e-06,0) (-1.043334764e-08,0) (-0.004535076858,0) (-4.088571921e-05,0) (7.933896824e-08,0) (0.001461529417,0) (-1.081506332e-10,0) (9.410884509e-08,0) (-0.0002381860178,0) (1.194202806e-06,0) (-4.647773923e-10,0) (1.261180451e-06,0) (1.372863619e-10,0) (1.038364612e-06,0) (4.216515965e-05,0) (9.30177865e-11,0) (2.694383648e-07,0) (2.749813509e-06,0) (-2.841116772e-11,0) (-1.995626923e-07,0) (-3.784413631e-05,0) (1.343156087e-10,0) (4.046369427e-06,0) (2.801726811e-06,0) (6.603081789e-07,0) (-1.781739592e-10,0) (-1.048868705e-07,0) (-4.49845343e-11,0) (-4.575800789e-07,0) (-3.241043012e-06,0) (-4.809009413e-11,0) (-7.612857105e-07,0) (-3.494038197e-06,0) (0,0) (-0.0001781248725,0) (-5.875863018e-06,0) (-0.00325358254,0) (-0.03202255516,0) (-4.33680869e-19,0) (2.27129912e-06,0) (-0.002309571161,0) (4.314038673e-06,0) (0.02951567944,0) (-5.421010862e-20,0) (9.109152453e-08,0) (7.736946357e-07,0) (6.824590353e-09,0) (0.002846967579,0) (0,0) (-1.380258363e-08,0) (-0.00014659622,0) (-2.405362853e-07,0) (-0.000837203801,0) (0,0) (1.804379704e-07,0) (1.404322281e-07,0) (4.172190712e-10,0) (0.0002216784642,0) (-8.470329473e-22,0) (2.542909593e-08,0) (2.030650731e-10,0) (-3.866749846e-08,0) (3.31291695e-05,0) (0,0) (-1.148514282e-08,0) (-6.330232694e-10,0) (-4.027290359e-06,0) (-3.296411943e-06,0) (0,0) (-1.548017159e-09,0) (-4.061005464e-11,0) (4.700979461e-08,0) (-5.014173148e-06,0) (-4.001910504e-10,0) (0,0) (-4.040786575e-12,0) (-5.617850981e-07,0) (-2.586134062e-05,0) (1.058791184e-22,0) (7.229839581e-09,0) (2.418124915e-10,0) (6.181658491e-06,0) (1.538533616e-06,0) (-2.64697796e-23,0) (5.335196032e-09,0) (3.786615396e-07,0) (-2.026498209e-10,0) (1.980117903e-07,0) (-6.313576244e-09,0) (-2.117582368e-22,0) (-1.199476441e-10,0) (-1.961240248e-06,0) (-3.991018329e-06,0) (-2.117582368e-22,0) (-1.197908084e-08,0) (-2.132048396e-10,0) (-1.09602752e-06,0) (-5.6965094e-07,0) -(0.2731656004,0) (0.01615280688,0) (-0.02892567571,0) (-0.00681892694,0) (0.00311081643,0) (-0.0001242414384,0) (9.142358452e-06,0) (0.0001499983368,0) (-0.0001504484689,0) (9.162783375e-05,0) (-7.145343949e-05,0) (6.119624794e-05,0) (-3.277313972e-05,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.2695462447,0) (0.02324389201,0) (-0.03424272561,0) (-0.004333899483,0) (0.002291534039,0) (4.332848919e-05,0) (0.0001066902242,0) (-2.294053818e-05,0) (1.892984583e-05,0) (-3.739677434e-05,0) (2.322309841e-05,0) (-2.861059199e-06,0) (6.880804962e-06,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.1208306479,0) (-0.009094799051,0) (-0.002843835608,0) (4.385357727e-05,0) (0.000101455379,0) (-2.497568383e-05,0) (2.882303202e-05,0) (4.591201175e-06,0) (1.25522063e-05,0) (2.574477926e-05,0) (9.479225358e-06,0) (3.178405029e-06,0) (8.85371498e-06,0) (1.738623898e-10,0) (-0.03001102387,0) (0.1997440824,0) (-0.0001221715915,0) (-1.474070406e-10,0) (-0.02386352647,0) (-3.161081699e-06,0) (8.892664166e-13,0) (-0.0003782332269,0) (5.069147332e-07,0) (1.658455888e-13,0) (1.114472307e-05,0) (-1.500172006e-14,0) (-4.573358943e-07,0) (5.007857078e-05,0) (2.271380542e-06,0) (1.920933975e-13,0) (-1.440347086e-05,0) (3.522406586e-14,0) (-3.493952407e-06,0) (4.251167502e-05,0) (1.184301307e-14,0) (8.749326325e-07,0) (-6.649639108e-06,0) (-7.916366537e-15,0) (-3.478571729e-06,0) (4.038721491e-05,0) (5.133587681e-14,0) (-1.83560613e-06,0) (3.443235877e-05,0) (6.48529231e-07,0) (4.700311397e-15,0) (3.713046695e-06,0) (-8.486490438e-15,0) (-1.351843834e-06,0) (9.719683219e-06,0) (-1.014688338e-14,0) (-1.550010209e-06,0) (1.674276403e-05,0) (-1.734723476e-18,0) (-0.000377473387,0) (-9.424696266e-12,0) (-0.008719428334,0) (0.06301289739,0) (0,0) (4.987671827e-06,0) (-0.00143187811,0) (-4.141268852e-10,0) (-0.005892254741,0) (1.694065895e-21,0) (1.859842766e-07,0) (4.229671091e-07,0) (-6.138140965e-13,0) (-6.644558929e-05,0) (0,0) (-2.859798928e-08,0) (-8.511178364e-06,0) (1.891527865e-12,0) (-1.727510638e-05,0) (0,0) (3.662671398e-07,0) (6.488075772e-07,0) (-3.437640456e-13,0) (-2.522670586e-05,0) (0,0) (5.164395866e-08,0) (2.409182199e-13,0) (-3.633301909e-07,0) (1.293020884e-05,0) (0,0) (-2.328816091e-08,0) (-6.937242073e-14,0) (4.52940866e-06,0) (-8.289612776e-06,0) (-5.29395592e-23,0) (-3.139926191e-09,0) (-5.790193031e-15,0) (-4.039157833e-07,0) (1.915478012e-06,0) (-8.160659869e-10,0) (0,0) (-1.266989765e-15,0) (-9.077704595e-06,0) (2.704664962e-05,0) (0,0) (1.483552381e-08,0) (5.416556893e-14,0) (-5.200987241e-06,0) (1.074630952e-05,0) (0,0) (1.08671901e-08,0) (-1.266292565e-07,0) (-3.289808167e-14,0) (-9.136562887e-07,0) (-1.278080324e-08,0) (-2.117582368e-22,0) (-2.091689037e-14,0) (-5.329587217e-06,0) (9.978394523e-06,0) (6.352747104e-22,0) (-2.480045938e-08,0) (-3.214682481e-14,0) (6.229744764e-07,0) (4.252964659e-06,0) -(-0.1395541466,-0.2417148723) (-0.01357903408,-0.02351957694) (0.01423099906,0.02464881341) (0.004074510377,0.007057258989) (-0.001425660096,-0.00246931572) (1.975203663e-05,3.4211531e-05) (-5.71653615e-06,-9.901331055e-06) (-7.743450601e-05,-0.0001341204987) (6.633973277e-05,0.0001149037877) (-4.268839373e-05,-7.393846683e-05) (3.706007127e-05,6.418992637e-05) (-2.936722707e-05,-5.086552936e-05) (1.515866188e-05,2.625557255e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.05906019127,-0.102295252) (0.003122660326,0.005408606339) (0.001450134843,0.002511707226) (-1.663179087e-05,-2.88071068e-05) (-5.691193611e-05,-9.85743649e-05) (4.320980191e-06,7.484157229e-06) (-1.508217198e-05,-2.612308816e-05) (-5.052939195e-06,-8.751947413e-06) (-3.798238809e-06,-6.578742597e-06) (-1.228729791e-05,-2.128222427e-05) (-6.964894952e-06,-1.206355193e-05) (-2.032950537e-06,-3.521173619e-06) (-3.820457386e-06,-6.6172263e-06) (0.005175592884,0.008964389834) (5.304917151e-09,9.188386021e-09) (-0.09224965312,-0.1597810862) (-0.0001541485888,-0.0002669931877) (1.707308574e-10,2.957145206e-10) (0.01114537494,0.01930435567) (2.347871873e-06,4.066633374e-06) (-7.561107841e-13,-1.309622251e-12) (0.000246935527,0.000427704879) (-1.387241408e-07,-2.402772602e-07) (-6.941934646e-14,-1.20237835e-13) (-5.376045784e-06,-9.311584441e-06) (-7.712042081e-13,-1.335764869e-12) (8.292123503e-08,1.436237921e-07) (-4.795061678e-05,-8.305290452e-05) (-4.456588466e-15,-7.71903793e-15) (-4.108193539e-07,-7.115599937e-07) (3.307487654e-06,5.728736662e-06) (2.981602561e-15,5.164290423e-15) (1.947461171e-06,3.373101694e-06) (-2.748230891e-05,-4.760075535e-05) (-1.069619489e-08,-1.8526353e-08) (7.219598505e-15,1.25047114e-14) (3.005871758e-06,5.206322606e-06) (-2.336955431e-15,-4.047724815e-15) (8.74177065e-07,1.514119091e-06) (-1.502558212e-05,-2.602507165e-05) (1.117880202e-16,1.936207203e-16) (2.783083705e-06,4.820442378e-06) (-2.210803363e-05,-3.82922375e-05) (1.37753808e-13,2.385965945e-13) (4.150521297e-07,7.188913765e-07) (-5.857532454e-06,-1.014554382e-05) (-2.638813198e-15,-4.570558867e-15) (4.927792809e-07,8.535187514e-07) (-3.782800919e-06,-6.552003387e-06) (-2.398416777e-15,-4.154179493e-15) (1.233592183e-06,2.136644337e-06) (-8.538607507e-06,-1.478930203e-05) (-4.33680869e-19,5.854691731e-18) (0.0007200330219,0.001247133777) (-0.0001878309588,-0.0003253327639) (3.990106787e-09,6.911067684e-09) (-0.03195096622,-0.05534069685) (4.878909776e-19,7.047314121e-19) (-2.330564706e-05,-4.036656481e-05) (0.0007153114482,0.001238955771) (2.662361385e-10,4.611345193e-10) (0.003245375324,0.005621154951) (-2.117582368e-22,8.470329473e-22) (6.095239344e-10,1.055726423e-09) (-3.44128403e-08,-5.960478783e-08) (7.464270367e-14,1.292849566e-13) (1.059566382e-05,1.835222807e-05) (-8.470329473e-22,6.352747104e-22) (-1.888476037e-09,-3.270936446e-09) (8.862191923e-06,1.534976668e-05) (-1.368859682e-12,-2.370934517e-12) (6.318959677e-06,1.094475921e-05) (-7.940933881e-22,-3.176373552e-22) (7.446402637e-11,1.28975477e-10) (-1.079534703e-15,-1.869809137e-15) (-7.090290898e-08,-1.228074408e-07) (4.706497865e-06,8.151893428e-06) (-3.705769144e-22,1.217609862e-21) (1.33340407e-08,2.309523596e-08) (-4.125560452e-14,-7.145680375e-14) (6.800887061e-06,1.177948193e-05) (-1.445470366e-05,-2.503628115e-05) (9.926167351e-23,-5.29395592e-23) (1.436655647e-09,2.488360574e-09) (2.776996631e-14,4.809899276e-14) (3.119865907e-07,5.403766263e-07) (-1.632104712e-06,-2.826888284e-06) (0,-2.514629062e-22) (-4.064786482e-09,-7.040416709e-09) (2.25289788e-14,3.902133579e-14) (-3.398791457e-07,-5.886879487e-07) (1.948638818e-06,3.375141438e-06) (1.111730743e-21,2.117582368e-22) (2.900715708e-10,5.024186985e-10) (-8.107034924e-16,-1.404180727e-15) (1.611039988e-06,2.790403113e-06) (-1.070561973e-05,-1.854267731e-05) (-1.852884572e-22,5.29395592e-23) (6.102102725e-09,1.056915195e-08) (1.654781311e-14,2.866165354e-14) (4.947043268e-06,8.568530288e-06) (-1.021949476e-05,-1.770068415e-05) (9.305781891e-25,2.688336991e-24) (4.489881054e-12,7.776702106e-12) (-2.191745498e-09,-3.79621456e-09) (-9.634049096e-17,-1.668666247e-16) (-1.590204424e-08,-2.754314857e-08) (-1.588186776e-22,-3.705769144e-22) (3.879285887e-09,6.719120253e-09) (-8.601079384e-15,-1.489750658e-14) (1.863843086e-06,3.228270922e-06) (-3.791159118e-06,-6.566480212e-06) (-6.6174449e-23,1.32348898e-22) (8.070512659e-09,1.397853797e-08) (-9.550114421e-15,-1.654128376e-14) (1.512581421e-06,2.619867872e-06) (-4.456953971e-06,-7.719670724e-06) -(-0.1378654839,-0.2387900227) (-0.0169245535,-0.02931418655) (0.0167882116,0.02907803547) (0.002856832998,0.004948179901) (-0.001021264037,-0.001768881199) (-6.261071557e-05,-0.0001084449405) (-5.097302548e-05,-8.828786994e-05) (5.211057454e-06,9.025816272e-06) (-1.563957284e-05,-2.708853477e-05) (1.958875962e-05,3.392872691e-05) (-7.901662008e-06,-1.368608006e-05) (1.11827671e-06,1.936912078e-06) (-3.986478569e-06,-6.904783425e-06) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.002296938444,0) (0.0004656769935,0) (-3.404442288e-05,0) (8.60557369e-05,0) (-2.195463111e-05,0) (1.021437952e-06,0) (1.052245556e-06,0) (3.19721922e-07,0) (-3.631499723e-07,0) (-8.080661741e-07,0) (1.730221396e-07,0) (-2.294551817e-08,0) (-1.671873287e-07,0) (0.008189657419,0) (5.041046806e-06,0) (-0.008342968697,0) (0.0002452856292,0) (-2.067629571e-07,0) (0.002505844645,0) (-1.362524288e-05,0) (1.28943057e-08,0) (-0.0003814274264,0) (-3.297204231e-05,0) (-4.172364306e-08,0) (0.0001791736462,0) (1.381913284e-10,0) (1.079257912e-07,0) (-3.267927222e-05,0) (-3.366221799e-11,0) (2.800914463e-07,0) (2.957483131e-08,0) (-4.691192177e-11,0) (6.280388515e-07,0) (3.585047097e-06,0) (-8.962099782e-07,0) (-4.954574338e-11,0) (9.752156065e-07,0) (3.109204061e-11,0) (3.176698282e-07,0) (-2.771203269e-06,0) (-2.22648192e-12,0) (1.653561186e-06,0) (-1.853786177e-06,0) (-4.89836296e-10,0) (1.10502967e-06,0) (-9.167977887e-07,0) (3.191879817e-11,0) (5.061688212e-07,0) (-6.78714229e-07,0) (3.355563738e-11,0) (7.856396421e-07,0) (-1.190808539e-06,0) (6.505213035e-19,0) (-0.0009274664534,0) (-0.0002742614059,0) (4.438674186e-06,0) (-0.001474755946,0) (-1.084202172e-19,0) (-1.006015126e-05,0) (-0.002941831249,0) (-2.930994065e-06,0) (0.005259890253,0) (1.799945013e-21,0) (5.998322676e-10,0) (6.199376993e-08,0) (-1.995271809e-10,0) (6.084148142e-05,0) (5.082197684e-20,0) (-7.44667295e-11,0) (-0.0003970796515,0) (2.33129964e-07,0) (0.0003677132413,0) (1.98523347e-23,0) (4.113038732e-10,0) (-1.578850801e-11,0) (2.295141761e-08,0) (6.300650718e-06,0) (-1.588186776e-22,0) (4.941788939e-08,0) (-4.216631935e-10,0) (-3.616195343e-06,0) (5.091702812e-06,0) (5.95570041e-23,0) (-3.504778343e-09,0) (-1.048420309e-10,0) (2.359753035e-07,0) (2.499492298e-07,0) (-1.058791184e-22,0) (9.88648561e-09,0) (-1.014613753e-10,0) (-2.52638343e-07,0) (8.108630087e-07,0) (1.32348898e-22,0) (-3.46259369e-09,0) (2.113178083e-11,0) (2.345799347e-07,0) (-3.336664573e-06,0) (5.29395592e-23,0) (-3.308381734e-08,0) (-2.028902496e-10,0) (2.843321806e-06,0) (-2.094078847e-06,0) (3.101927297e-25,0) (-5.632286098e-11,0) (7.855457093e-09,0) (7.109805969e-13,0) (-7.829784988e-09,0) (-5.95570041e-23,0) (-1.617807133e-08,0) (8.400741329e-11,0) (9.173899183e-07,0) (-1.236998982e-06,0) (5.29395592e-23,0) (-4.115909576e-08,0) (1.129540535e-10,0) (1.15856545e-06,0) (-1.384583023e-06,0) -(-0.05751293495,0) (-0.01742314575,0) (0.002807441229,0) (-0.002741260601,0) (0.0006877098011,0) (-6.313790157e-05,0) (-3.703790973e-05,0) (-1.993765262e-06,0) (1.779141841e-05,0) (1.117127821e-05,0) (-3.925466161e-06,0) (1.105928494e-06,0) (4.760820116e-06,0) (2.356370425e-06,0) (0.002086629187,0) (0.008695215087,0) (-6.2979561e-06,0) (3.741398894e-07,0) (-0.07442571239,0) (3.937534685e-07,0) (-7.848018285e-09,0) (0.008950218454,0) (-7.896863725e-06,0) (5.968412251e-08,0) (-0.002792952986,0) (-8.133735556e-11,0) (5.197317153e-08,0) (0.0004693188178,0) (-7.459501429e-07,0) (-3.500108653e-10,0) (-4.093285999e-06,0) (1.032339543e-10,0) (-9.466882665e-07,0) (-8.422440694e-05,0) (6.995807459e-11,0) (-1.632739084e-06,0) (-4.319618027e-06,0) (-2.136820204e-11,0) (9.874220973e-07,0) (7.401138147e-05,0) (1.010201071e-10,0) (-5.466525505e-06,0) (-8.034065257e-06,0) (-6.503235901e-07,0) (-1.341657236e-10,0) (-4.441394808e-07,0) (-3.383529974e-11,0) (1.834727903e-06,0) (5.4567997e-06,0) (-3.617647595e-11,0) (2.98183865e-06,0) (5.407168305e-06,0) (0,0) (-3.801065212e-06,0) (-4.420846394e-06,0) (0.06307890282,0) (0.006834856211,0) (-1.734723476e-18,0) (1.2360615e-07,0) (-0.0004147197189,0) (3.245439041e-06,0) (-0.05323530859,0) (-1.084202172e-19,0) (-7.133332631e-09,0) (1.11168147e-08,0) (5.132952515e-09,0) (-0.005614192732,0) (-1.355252716e-20,0) (3.611864086e-10,0) (1.48279327e-05,0) (-1.809388448e-07,0) (0.00192530132,0) (-6.776263578e-21,0) (-1.462622461e-08,0) (-4.015748519e-08,0) (3.138645067e-10,0) (-0.0004375922108,0) (8.470329473e-22,0) (-2.062581006e-09,0) (1.526916853e-10,0) (-7.487547447e-09,0) (-6.5275208e-05,0) (-4.235164736e-22,0) (9.665570157e-10,0) (-4.759094266e-10,0) (4.428858264e-06,0) (1.003236761e-05,0) (2.117582368e-22,0) (1.297693598e-10,0) (-3.054149145e-11,0) (7.432534774e-08,0) (9.720891838e-06,0) (2.414566489e-11,0) (8.470329473e-22,0) (-3.039500918e-12,0) (1.39543781e-06,0) (5.069545599e-05,0) (0,0) (-4.776269042e-10,0) (1.818254864e-10,0) (-9.70477885e-06,0) (-5.529115333e-06,0) (0,0) (-4.190493315e-10,0) (-1.078377038e-06,0) (-1.525802291e-10,0) (-6.801392399e-08,0) (5.154379602e-10,0) (2.117582368e-22,0) (-9.02140094e-11,0) (5.837397148e-06,0) (5.909045808e-06,0) (2.64697796e-23,0) (2.987041801e-10,0) (-1.60387982e-10,0) (3.118621718e-06,0) (1.889669192e-07,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0.04586770644,0) (0.1295753448,0) (0.0004442131108,0) (0.1967622424,0) (0.0001704511524,0) (0.07116101842,0) (0.01342434892,0) (0.1479153603,0) (0.05829558339,0) (0.002881188799,0) (0.0986772665,0) (0.03669568318,0) (0.0583789555,0) (0.004863627082,0) (0.02285094543,0) (0.01871025158,0) (0.01720002272,0) (0.0129751607,0) (0.01950909261,0) (0.002216861756,0) (0.007850079801,0) (0.0006684007036,0) (0.01106999276,0) (0.004241350104,0) (0.006378882393,0) (0.0004382569924,0) (0.00246318523,0) (0.0002443597394,0) (0.003066181956,0) (0.001196173181,0) (0.001717101805,0) (2.637892713e-05,0) (0.0006299645073,0) (1.244860412e-05,0) (0.0006474759855,0) (0.0002384489065,0) (0.000314514928,0) (9.546434388e-07,0) (0.0001139889123,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(3.590997234e-05,0) (0.0001233917216,0) (1.30441383e-07,0) (1.553904071e-05,0) (1.536434435e-06,0) (2.779572112e-06,0) (2.900697787e-07,0) (1.694146338e-07,0) (2.480155548e-07,0) (7.759935467e-08,0) (9.02954327e-09,0) (1.753815685e-09,0) (2.272725483e-08,0) (0.05134867755,0) (0.01875202135,0) (0.000278013623,0) (0.005748536394,0) (0.00207432931,0) (0.0001512337715,0) (0.0004583230146,0) (0.0001648728595,0) (3.850112287e-05,0) (0.0005754261716,0) (0.0002097466075,0) (1.254127337e-05,0) (1.450462071e-05,0) (4.081696167e-05,0) (1.394154879e-05,0) (4.99941714e-06,0) (1.463681797e-05,0) (7.757214435e-09,0) (1.511410508e-06,0) (4.698023398e-06,0) (1.404013897e-06,0) (8.766678713e-06,0) (6.146623103e-06,0) (8.264078866e-06,0) (9.044095585e-07,0) (2.283550353e-06,0) (9.876553109e-07,0) (3.043249266e-07,0) (6.038139103e-07,0) (2.400053708e-07,0) (9.769650476e-07,0) (1.981749796e-06,0) (7.468840143e-07,0) (8.787060028e-07,0) (1.618326537e-06,0) (8.543525323e-07,0) (5.00506041e-07,0) (9.817712635e-07,0) (4.454731505e-07,0) (3.469446952e-18,0) (0.003515743553,0) (0.09234509611,0) (0.03477975199,0) (1.223510922e-05,0) (4.33680869e-19,0) (4.597357965e-05,0) (0.02740325923,0) (0.01004796136,0) (0.0003916175239,0) (1.694065895e-21,0) (1.460078625e-06,0) (6.30598451e-05,0) (2.330863833e-05,0) (8.451039346e-05,0) (2.710505431e-20,0) (2.399382941e-10,0) (0.001718607472,0) (0.0006467762177,0) (6.859021545e-05,0) (1.482307658e-21,0) (1.335565741e-06,0) (3.205846614e-06,0) (7.65274698e-06,0) (1.646933149e-05,0) (-8.470329473e-22,0) (4.379161533e-06,0) (1.211169872e-05,0) (2.157052131e-05,0) (8.161268252e-06,0) (0,0) (5.33910383e-06,0) (1.925982866e-05,0) (4.905944391e-05,0) (4.081163393e-07,0) (-8.470329473e-22,0) (3.171881935e-06,0) (1.1505279e-05,0) (2.779490012e-05,0) (1.68620799e-06,0) (1.32348898e-23,0) (1.369395562e-07,0) (3.006229585e-07,0) (6.24704245e-07,0) (5.081771609e-07,0) (0,0) (4.516212835e-07,0) (1.131399868e-06,0) (1.789055475e-06,0) (9.447754395e-07,0) (2.117582368e-22,0) (5.10826975e-11,0) (1.696043397e-06,0) (3.063049089e-06,0) (6.775872177e-06,0) (1.058791184e-22,0) (6.382847646e-07,0) (1.694474736e-06,0) (2.713576222e-06,0) (1.415412032e-06,0) (1.058791184e-22,0) (3.927215262e-07,0) (1.006395786e-06,0) (4.761797554e-07,0) (1.932952223e-06,0) -(0.02151507676,0) (0.08145033313,0) (0.0009225981511,0) (0.009071793741,0) (0.001897530337,0) (0.001271522409,0) (0.000393613206,0) (3.191902604e-05,0) (0.0002180280768,0) (1.351339316e-05,0) (1.003663981e-05,0) (6.66710727e-06,0) (1.372598266e-05,0) (0.01971880285,0) (0.0002195616787,0) (0.0003270306584,0) (2.678465689e-05,0) (0.002763516793,0) (0.106697746,0) (8.901625396e-07,0) (0.0001038820182,0) (0.0345000232,0) (1.0786905e-05,0) (0.0002550410404,0) (0.002603733392,0) (5.086780754e-06,0) (1.296261603e-06,0) (0.01019461019,0) (6.255143051e-06,0) (6.536172276e-06,0) (3.683045246e-05,0) (3.540615072e-06,0) (1.378850213e-05,0) (0.0012674418,0) (5.746639196e-06,0) (4.91232311e-05,0) (0.000126571826,0) (3.717599159e-07,0) (5.395422689e-06,0) (0.0003974504446,0) (3.479206662e-07,0) (5.176068333e-06,0) (7.774311777e-06,0) (2.357456293e-06,0) (1.1427038e-06,0) (1.727367798e-06,0) (7.399816442e-07,0) (1.145978052e-05,0) (3.343258584e-05,0) (4.18479744e-07,0) (5.861896876e-06,0) (1.04002171e-05,0) (-5.421010862e-20,0) (9.561558787e-07,0) (0.03485246954,0) (0.02674278495,0) (0.002291387465,0) (0,0) (1.569546168e-06,0) (0.0004250908481,0) (0.01192913133,0) (0.03599121376,0) (-8.67361738e-19,0) (4.328799598e-08,0) (3.906012346e-08,0) (0.0001448848612,0) (0.05737890751,0) (0,0) (1.172235841e-10,0) (9.806088991e-06,0) (0.0006373039673,0) (0.001947382062,0) (0,0) (1.816924258e-07,0) (7.09263354e-07,0) (2.318653812e-05,0) (0.009023977889,0) (0,0) (2.436045478e-08,0) (7.517683295e-06,0) (2.140748389e-07,0) (0.001279410655,0) (0,0) (2.086878003e-08,0) (2.83498791e-05,0) (0.0001528953655,0) (0.0003576463545,0) (0,0) (6.94006599e-09,0) (7.29799041e-06,0) (6.948945167e-06,0) (0.0008507631173,0) (2.393151383e-11,0) (0,0) (2.620125233e-08,0) (2.63818605e-06,0) (9.527036339e-05,0) (0,0) (1.215275915e-09,0) (1.727758853e-06,0) (4.452695345e-05,0) (2.58813648e-05,0) (0,0) (2.542260728e-09,0) (1.109931996e-05,0) (3.064539702e-06,0) (6.121327117e-07,0) (1.401947502e-09,0) (0,0) (1.253713298e-06,0) (2.653165066e-05,0) (2.635447273e-05,0) (-2.64697796e-23,0) (9.160979474e-11,0) (9.092686847e-07,0) (3.096286743e-06,0) (1.632018929e-07,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (-0.04650791085,0) (0.05339342277,0) (-0.006885511921,0) (0.06582968803,0) (0.005456254699,0) (-0.07128594273,0) (-0.03665265658,0) (0.0950451253,0) (-0.05839246872,0) (-0.01466480269,0) (0.05142104472,0) (-0.03675624203,0) (0.005432133241,0) (0.01745725437,0) (-0.02288938761,0) (-0.009939728979,0) (0.02293658634,0) (-0.01299685736,0) (0.0009346548029,0) (0.006928611436,0) (-0.007863266239,0) (-0.002292082329,0) (0.006540467226,0) (-0.004248384897,0) (0.0007511567492,0) (0.001716174845,0) (-0.002467331594,0) (-0.0007179158406,0) (0.001916075511,0) (-0.00119815967,0) (0.0004232273626,0) (0.0002078052141,0) (-0.0006310325767,0) (-7.912951479e-05,0) (0.0003179706291,0) (-0.0002388411143,0) (9.769891917e-05,0) (1.648674933e-05,0) (-0.0001141856685,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.0008172287347,0) (-0.00280811301,0) (-2.968547159e-06,0) (-0.0003536329813,0) (-3.496572923e-05,0) (-6.325669591e-05,0) (-6.601323888e-06,0) (-3.855489098e-06,0) (-5.64426606e-06,0) (-1.765983606e-06,0) (-2.054917267e-07,0) (-3.991282865e-08,0) (-5.172202734e-07,0) (0.02065391313,0) (-0.01874311768,0) (-2.839598951e-06,0) (0.001922210209,0) (-0.002074278464,0) (-0.00378330843,0) (0.0001500682067,0) (-0.0001650648726,0) (-0.0009079186671,0) (0.0002733644709,0) (-0.0002099969132,0) (-0.000231728652,0) (-1.467732161e-05,0) (1.720867302e-05,0) (-0.0003162091956,0) (-5.007846613e-06,0) (-1.116087826e-05,0) (-1.792231646e-06,0) (-1.513850326e-06,0) (-4.757169056e-06,0) (-3.730015351e-05,0) (1.142734126e-05,0) (-6.157851779e-06,0) (-5.327686836e-06,0) (-9.058902923e-07,0) (3.219670478e-06,0) (-1.974033463e-05,0) (-3.048988288e-07,0) (6.478429413e-07,0) (-3.602534663e-07,0) (-9.787608102e-07,0) (-1.968661101e-06,0) (2.586840302e-06,0) (-8.801255416e-07,0) (3.545150804e-06,0) (-3.546258443e-06,0) (-5.013482219e-07,0) (2.325538149e-06,0) (-2.752961059e-06,0) (-8.67361738e-19,0) (0.001081420423,0) (0.03683490234,0) (-0.03477674716,0) (-0.0005078099275,0) (-3.794707604e-19,0) (2.592330502e-05,0) (0.01315681817,0) (-0.01006015626,0) (-0.00380032527,0) (-8.809142651e-20,0) (5.636850501e-07,0) (2.319957752e-05,0) (-2.332385676e-05,0) (-0.001925267643,0) (1.355252716e-20,0) (7.146844379e-11,0) (0.0005565170578,0) (-0.0006475377206,0) (0.0001477002938,0) (-1.694065895e-21,0) (5.082980186e-07,0) (-3.210905036e-06,0) (1.660522345e-06,0) (-0.0003762065667,0) (1.694065895e-21,0) (1.287500472e-06,0) (-1.21303074e-05,0) (4.235369307e-05,0) (-4.425289125e-05,0) (4.65868121e-21,0) (2.385662691e-06,0) (-1.929410409e-05,0) (2.488333702e-06,0) (-1.793936166e-05,0) (2.117582368e-21,0) (9.350130233e-07,0) (-1.152532848e-05,0) (1.956543723e-05,0) (-2.651761138e-05,0) (-3.705769144e-22,0) (4.335966598e-08,0) (-3.011056923e-07,0) (1.016306761e-06,0) (-1.070586547e-05,0) (-2.64697796e-23,0) (2.401865277e-07,0) (-1.133223818e-06,0) (-4.430724484e-06,0) (4.166258622e-06,0) (5.29395592e-23,0) (-3.427165247e-10,0) (7.278680151e-07,0) (-3.068866642e-06,0) (2.654190084e-06,0) (-5.29395592e-23,0) (1.64497237e-07,0) (-1.697154657e-06,0) (6.207993408e-06,0) (-6.345131393e-06,0) (1.32348898e-22,0) (9.009374426e-08,0) (-1.008053064e-06,0) (2.068286092e-06,0) (-1.472957506e-06,0) -(0.006996970788,0) (0.02648866226,0) (0.0003000404036,0) (0.002950260254,0) (0.0006171004868,0) (0.0004135149158,0) (0.0001280079144,0) (1.038046461e-05,0) (7.090544467e-05,0) (4.394723674e-06,0) (3.264040205e-06,0) (2.168226279e-06,0) (4.463860426e-06,0) (-0.0197553569,0) (0.003169952543,0) (-0.001001057065,0) (0.0004308924624,0) (-0.002770174458,0) (0.0345564099,0) (-1.463376791e-05,0) (-0.000104145023,0) (0.01124524197,0) (8.482571159e-05,0) (-0.0002556526339,0) (0.0007911948594,0) (-5.099026091e-06,0) (4.407108103e-06,0) (0.003311940614,0) (-7.032866511e-06,0) (-6.547290259e-06,0) (2.17110916e-05,0) (-3.549379796e-06,0) (-6.299896001e-06,0) (0.000423327795,0) (-5.761058672e-06,0) (3.827017946e-05,0) (1.944685014e-05,0) (-3.72626502e-07,0) (3.938617866e-06,0) (0.0001271093011,0) (-3.486916283e-07,0) (8.356272429e-08,0) (4.1630784e-06,0) (-8.202975706e-07,0) (-1.144619623e-06,0) (2.265084665e-06,0) (-7.4172067e-07,0) (7.646110877e-06,0) (7.028005024e-06,0) (-4.193909109e-07,0) (3.865265904e-06,0) (1.465586965e-06,0) (4.33680869e-19,0) (6.036641356e-05,0) (-0.03492203779,0) (0.0248557125,0) (-0.01195439354,0) (2.168404345e-19,0) (3.980786074e-05,0) (0.003563583505,0) (-0.01195701747,0) (0.009444674026,0) (4.33680869e-19,0) (-6.897536925e-07,0) (3.64387135e-06,0) (-0.0001452631239,0) (0.01867201301,0) (4.065758147e-20,0) (-5.822791923e-09,0) (-0.0001187671813,0) (-0.0006389488347,0) (0.0008196149627,0) (0,0) (-2.79072853e-06,0) (-2.5788548e-06,0) (-2.32486879e-05,0) (0.002942712557,0) (6.776263578e-21,0) (-3.739146372e-07,0) (-7.534478148e-06,0) (1.681240677e-06,0) (0.0004156051342,0) (-3.388131789e-21,0) (-3.079720876e-07,0) (-2.842608235e-05,0) (-3.184660905e-05,0) (0.0002010405408,0) (-6.776263578e-21,0) (-1.028458898e-07,0) (-7.315992414e-06,0) (1.276502879e-05,0) (0.000267013377,0) (-5.020416579e-10,0) (0,0) (-2.62595584e-08,0) (1.224289849e-06,0) (3.061993997e-05,0) (-4.235164736e-22,0) (-2.317871362e-08,0) (-1.732223519e-06,0) (6.817124161e-06,0) (1.627774038e-05,0) (-5.29395592e-23,0) (-4.037988332e-08,0) (5.914031108e-06,0) (-3.068111963e-06,0) (-1.752991826e-06,0) (-2.137047511e-08,0) (4.235164736e-22,0) (-1.256735752e-06,0) (1.465535905e-05,0) (2.691960492e-06,0) (2.64697796e-23,0) (-4.779938991e-09,0) (-9.112894287e-07,0) (1.646291736e-06,0) (-4.897159534e-07,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0.0616499241,0) (-0.05612508663,0) (-0.005524837477,0) (-0.09849767551,0) (0.003987118413,0) (0.0945105571,0) (-0.03774692604,0) (-0.03968505748,0) (0.07743198352,0) (-0.01322794725,0) (-0.0355135707,0) (0.04874151795,0) (-0.03985523459,0) (0.009503484414,0) (0.03035175017,0) (-0.02158210048,0) (0.004347737172,0) (0.01723436331,0) (-0.01398296519,0) (0.00355609991,0) (0.01042686528,0) (-0.002231696874,0) (-0.003401939794,0) (0.005633636669,0) (-0.004236003097,0) (0.0009642830837,0) (0.003271720014,0) (-0.0007253584191,0) (-0.0008634759321,0) (0.001588834351,0) (-0.000973594934,0) (0.0001368578979,0) (0.0008367370361,0) (-6.904381328e-05,0) (-0.0002476788081,0) (0.0003167226213,0) (-0.0001631146387,0) (1.171560823e-05,0) (0.0001513990305,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.0006430541106,0) (-0.002209624475,0) (-2.335865557e-06,0) (-0.0002782637621,0) (-2.751354053e-05,0) (-4.977489973e-05,0) (-5.19439452e-06,0) (-3.03377501e-06,0) (-4.441312862e-06,0) (-1.389602407e-06,0) (-1.616956109e-07,0) (-3.140627274e-08,0) (-4.069859621e-07,0) (-0.02315446542,0) (0.02486709624,0) (-0.0002113144789,0) (-0.002883591821,0) (0.002752586386,0) (-0.002965630851,0) (-0.0002318971576,0) (0.0002190437346,0) (-0.0007133624739,0) (-0.0002270707624,0) (0.0002787001547,0) (-0.0001841079618,0) (1.946548646e-05,0) (-1.743881751e-05,0) (-0.0002488508671,0) (6.647567465e-06,0) (-1.942370938e-05,0) (-1.356825305e-06,0) (2.009289265e-06,0) (-7.120632471e-06,0) (-2.917357685e-05,0) (2.017518414e-06,0) (8.169870928e-06,0) (-1.023318319e-05,0) (1.202217678e-06,0) (7.088695561e-07,0) (-1.562354862e-05,0) (4.044755587e-07,0) (3.404607548e-08,0) (-4.521418737e-07,0) (1.300895681e-06,0) (-2.972631304e-06,0) (1.388004183e-06,0) (1.167951802e-06,0) (1.454595627e-06,0) (-3.315964822e-06,0) (6.652579445e-07,0) (1.014281671e-06,0) (-2.410363274e-06,0) (1.734723476e-18,0) (-0.001830745551,0) (-0.04184804203,0) (0.04614153827,0) (-0.0003918889316,0) (6.505213035e-19,0) (-1.505671622e-05,0) (-0.0107099765,0) (0.01335057348,0) (-0.003158834692,0) (-2.032879073e-20,0) (-6.739309617e-07,0) (-3.000331146e-05,0) (3.095587548e-05,0) (-0.001514871375,0) (0,0) (-1.267303587e-10,0) (-0.0008741803541,0) (0.0008591989311,0) (5.958119995e-05,0) (-1.694065895e-21,0) (-6.219833605e-07,0) (4.261561381e-06,0) (-4.506042692e-06,0) (-0.0002959797984,0) (-2.382280164e-21,0) (-2.325279806e-06,0) (1.61001834e-05,0) (1.56959449e-05,0) (-3.949717088e-05,0) (0,0) (-2.219766983e-06,0) (2.561091166e-05,0) (-3.502433912e-05,0) (-1.382955411e-05,0) (3.546950467e-21,0) (-1.682357216e-06,0) (1.529640096e-05,0) (-6.160454092e-06,0) (-2.125727712e-05,0) (0,0) (-7.037685441e-08,0) (3.9958929e-07,0) (2.960709067e-07,0) (-8.452535281e-06,0) (1.058791184e-22,0) (-1.588206347e-07,0) (1.504087388e-06,0) (-4.685734219e-06,0) (2.429661067e-06,0) (0,0) (-2.96845995e-10,0) (-7.277574765e-07,0) (4.071144148e-06,0) (-3.096918026e-06,0) (-3.30872245e-22,0) (-3.56383646e-07,0) (2.252412441e-06,0) (2.637815303e-06,0) (-5.847758739e-06,0) (5.29395592e-23,0) (-2.276567175e-07,0) (1.337660336e-06,0) (1.200711633e-06,0) (-2.564584225e-06,0) -(-0.01091369342,0) (-0.04131632783,0) (-0.0004679952334,0) (-0.004601739364,0) (-0.0009625373212,0) (-0.000644989832,0) (-0.0001996634222,0) (-1.619117925e-05,0) (-0.0001105964721,0) (-6.854775913e-06,0) (-5.091165187e-06,0) (-3.381943069e-06,0) (-6.962613624e-06,0) (0.02620752866,0) (0.002224269497,0) (-0.001000892129,0) (0.0003047929621,0) (0.003673383099,0) (-0.05422961591,0) (-1.170549913e-05,0) (0.0001381032981,0) (-0.01748116626,0) (5.58488008e-05,0) (0.0003390297478,0) (-0.001362512354,0) (6.763664198e-06,0) (2.347166408e-06,0) (-0.005173910596,0) (-1.001395262e-05,0) (8.679345149e-06,0) (-1.134781363e-05,0) (4.708510543e-06,0) (-1.51237669e-05,0) (-0.0006345178053,0) (7.640857198e-06,0) (-8.106428758e-06,0) (-8.057400327e-05,0) (4.942920937e-07,0) (-1.090440533e-06,0) (-0.0002032277807,0) (4.625928184e-07,0) (-3.831370518e-06,0) (-2.711142746e-06,0) (-2.393650938e-06,0) (1.517526643e-06,0) (4.079308649e-07,0) (9.838166031e-07,0) (-2.85806264e-06,0) (-1.98571424e-05,0) (5.56293275e-07,0) (-1.496586117e-06,0) (-6.720478032e-06,0) (-6.505213035e-19,0) (4.480721443e-05,0) (0.04632333236,0) (-0.001379381288,0) (-0.01073557061,0) (-4.33680869e-19,0) (2.884086942e-05,0) (0.002367327906,0) (0.01585694053,0) (-0.01995489753,0) (0,0) (-5.527808322e-07,0) (2.718459272e-06,0) (0.0001926337373,0) (-0.02909695075,0) (-2.710505431e-20,0) (-4.47964897e-09,0) (-9.694780846e-05,0) (0.0008472184569,0) (-0.0008468054569,0) (-5.421010862e-20,0) (-2.241467871e-06,0) (-2.480320484e-06,0) (3.082178995e-05,0) (-0.004571428628,0) (1.355252716e-20,0) (-3.003345517e-07,0) (9.997786745e-06,0) (1.10553403e-06,0) (-0.0006493401365,0) (1.694065895e-21,0) (-2.479739066e-07,0) (3.770913572e-05,0) (-0.0001390322279,0) (-0.0001175146047,0) (0,0) (-8.278796515e-08,0) (9.703906891e-06,0) (4.395115462e-06,0) (-0.0004388356181,0) (-3.966417036e-10,0) (0,0) (3.483258316e-08,0) (-1.062099363e-06,0) (-4.860039762e-05,0) (-4.235164736e-22,0) (-1.83956344e-08,0) (2.297772888e-06,0) (-2.83623588e-05,0) (-7.201757854e-06,0) (0,0) (-3.23672139e-08,0) (-3.897417542e-06,0) (4.070176231e-06,0) (-1.782127644e-06,0) (-1.71723915e-08,0) (0,0) (1.666924655e-06,0) (-8.914065602e-06,0) (-1.780002849e-05,0) (5.29395592e-23,0) (-3.673872713e-09,0) (1.208697071e-06,0) (-1.088177979e-06,0) (-4.919808827e-07,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (1.333601076e-05,0) (-0.003680518671,0) (0.01171062439,0) (0.004572524643,0) (-0.001931974151,0) (1.016225988e-05,0) (-0.003695330387,0) (0.003163975381,0) (-1.380679875e-06,0) (-0.002791090092,0) (0.002119938484,0) (-1.702859645e-06,0) (0.001336173644,0) (-0.001159269776,0) (4.948719016e-07,0) (5.602991138e-05,0) (-5.170347486e-05,0) (1.165106662e-08,0) (0.0004402708215,0) (-0.0003880446353,0) (1.452039402e-07,0) (-0.0002896023254,0) (0.0002398595806,0) (-1.282564785e-07,0) (0.0001483925852,0) (-0.0001273107664,0) (5.926285014e-08,0) (-7.692981325e-05,0) (6.523609042e-05,0) (-3.032478854e-08,0) (4.206025406e-05,0) (-3.160521265e-05,0) (3.109924057e-08,0) (-1.970181647e-05,0) (1.391253042e-05,0) (-1.452397306e-08,0) (7.57314583e-06,0) (-4.370287337e-06,0) (1.070626807e-08,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.004214043356,0) (0.006158998385,0) (0.0001312011809,0) (-0.0007825700286,0) (-0.000160366703,0) (0.0001179069761,0) (2.941101487e-05,0) (-1.215575976e-05,0) (-1.292825713e-05,0) (3.591247411e-06,0) (1.211948785e-06,0) (2.186819431e-07,0) (-9.353687809e-07,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.04520166927,0) (0.04251668573,0) (-0.0009345582901,0) (-0.0001451268835,0) (0.0002799358963,0) (0.0005029806326,0) (-0.0003063111856,0) (-7.350246924e-05,0) (0.0001538232273,0) (3.114230238e-05,0) (-2.423650254e-05,0) (1.916106456e-05,0) (2.552626129e-05,0) (1.454931824e-06,0) (-0.003157854218,0) (0.007512458075,0) (0.0005195851016,0) (-1.088795504e-06,0) (0.03421108654,0) (-7.146290097e-06,0) (-1.177097021e-08,0) (-0.001457959397,0) (-6.924319911e-07,0) (7.086881675e-10,0) (-1.038967993e-05,0) (9.381966906e-10,0) (-1.140640338e-05,0) (0.001087813846,0) (-1.904659493e-05,0) (-3.587190187e-09,0) (0.0001295991408,0) (1.20807976e-09,0) (5.088937078e-05,0) (-0.0006397323042,0) (9.728329649e-10,0) (-2.632356776e-05,0) (0.0001948452291,0) (1.377274291e-10,0) (-1.900743854e-05,0) (0.0002168844333,0) (1.768045232e-10,0) (1.738073434e-06,0) (-3.331910854e-05,0) (-2.35095165e-06,0) (-4.003305574e-11,0) (-1.444095283e-05,0) (1.856004633e-10,0) (-8.44366819e-06,0) (5.955031546e-05,0) (1.173764161e-10,0) (-3.04711323e-06,0) (3.220324779e-05,0) (-5.421010862e-19,0) (9.495322441e-05,0) (7.430118958e-08,0) (-0.00369666856,0) (0.02112509155,0) (6.505213035e-19,0) (6.333326623e-05,0) (0.001467685891,0) (-1.522189737e-06,0) (0.003983623004,0) (0,0) (-1.128629076e-06,0) (1.486140405e-06,0) (-1.732577337e-08,0) (0.0006790959101,0) (8.470329473e-22,0) (-9.281519799e-09,0) (-5.628658706e-06,0) (-6.662351652e-09,0) (-1.747322974e-05,0) (5.421010862e-20,0) (-4.549907229e-06,0) (-1.145926933e-05,0) (-2.539534721e-08,0) (0.0005202223217,0) (0,0) (-6.099495322e-07,0) (1.186146372e-08,0) (1.038789438e-05,0) (-0.0002534353773,0) (6.776263578e-21,0) (-5.02811008e-07,0) (4.132508469e-09,0) (0.000156366619,0) (-0.0002955184562,0) (0,0) (-1.679232679e-07,0) (1.383585823e-09,0) (-3.776354522e-05,0) (0.0001676407959,0) (-8.088281908e-10,0) (0,0) (1.092177589e-11,0) (-1.716212179e-05,0) (5.082791124e-05,0) (1.694065895e-21,0) (-3.774756953e-08,0) (5.146970487e-10,0) (2.38628948e-05,0) (-5.030265065e-05,0) (2.117582368e-22,0) (-6.59283491e-08,0) (1.303346218e-06,0) (6.607505923e-10,0) (8.223005948e-06,0) (-3.476269999e-08,0) (4.235164736e-22,0) (2.906841531e-10,0) (-2.422359532e-05,0) (4.450385645e-05,0) (0,0) (-7.6060703e-09,0) (1.822462067e-10,0) (6.185128518e-07,0) (3.673086727e-06,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (-0.0002997192672,-0.0005191289988) (0.09925944203,0.1719223967) (0.0005701036329,0.0009874484577) (0.03744131566,0.06485026102) (-1.08363822e-05,-1.876916455e-05) (5.12637978e-06,8.879150237e-06) (-0.0004333454456,-0.000750576329) (-0.004174757703,-0.007230892451) (-5.79928862e-07,-1.004466254e-06) (-0.0003092991382,-0.0005357218221) (-0.008557666191,-0.01482231264) (-1.127253589e-06,-1.952460489e-06) (0.001441927363,0.002497491453) (0.0001026368809,0.0001777722925) (1.949578464e-07,3.376768953e-07) (7.957927152e-05,0.0001378353415) (6.761905753e-05,0.0001171196432) (1.853059582e-08,3.209593345e-08) (0.0007081325001,0.001226521469) (7.017291895e-05,0.0001215430609) (9.836838076e-08,1.703790333e-07) (-3.926527806e-05,-6.800945657e-05) (-0.000555379596,-0.0009619456778) (-7.501276439e-08,-1.299259191e-07) (0.0001990917172,0.0003448369695) (1.15125293e-05,1.994028567e-05) (2.660804959e-08,4.608649378e-08) (-1.201453687e-05,-2.080978829e-05) (-0.0001308978504,-0.0002267217275) (-1.801120482e-08,-3.119632186e-08) (0.0001320177961,0.0002286615304) (1.379282385e-06,2.388987168e-06) (1.705203038e-08,2.953498298e-08) (-1.642038463e-06,-2.844094046e-06) (-6.621122398e-05,-0.000114681204) (-8.667301526e-09,-1.501220661e-08) (3.661879991e-05,6.342562196e-05) (3.18796139e-08,5.521711101e-08) (4.775645764e-09,8.271661102e-09) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.000923337689,-0.00159926779) (0.0008274199475,0.001433133388) (-5.55619918e-06,-9.623619276e-06) (-3.00319403e-06,-5.201684645e-06) (3.982825217e-06,6.898455633e-06) (1.175840002e-05,2.036614625e-05) (-4.157662878e-06,-7.201283346e-06) (-2.677457455e-06,-4.637492347e-06) (2.594031055e-06,4.492993584e-06) (1.179960774e-06,2.043752012e-06) (-3.634784569e-07,-6.295631548e-07) (1.553863596e-07,2.691370696e-07) (5.193486208e-07,8.995381981e-07) (0.03245066753,0.05620620491) (1.973358379e-05,3.417956974e-05) (0.003074044889,0.005324401932) (-0.003612640396,-0.006257276715) (-1.712840758e-06,-2.966727218e-06) (0.0006726502744,0.001165064451) (-7.897721341e-05,-0.0001367925463) (-9.66799994e-09,-1.67454671e-08) (-2.492556751e-05,-4.317234933e-05) (2.421005667e-06,4.19330482e-06) (3.489741388e-10,6.044409389e-10) (-3.762967448e-07,-6.517650808e-07) (-8.094592238e-08,-1.402024502e-07) (3.136037117e-05,5.431775621e-05) (2.045657133e-05,3.54318209e-05) (6.618798767e-10,1.146409575e-09) (-2.146830323e-05,-3.718419194e-05) (8.675245077e-07,1.502596524e-06) (-9.606141336e-11,-1.663832486e-10) (1.456791745e-05,2.523237319e-05) (-1.076291122e-05,-1.864190907e-05) (1.04629614e-07,1.812238073e-07) (-8.956602146e-10,-1.551328998e-09) (2.547207111e-05,4.411892133e-05) (-6.797765478e-11,-1.177407519e-10) (6.283968979e-06,1.088415354e-05) (5.35510915e-06,9.275321128e-06) (-1.527935823e-11,-2.646462476e-11) (1.016270017e-06,1.760231303e-06) (2.862275528e-06,4.95760664e-06) (-2.747461897e-10,-4.758743597e-10) (7.443505779e-07,1.28925302e-06) (4.771932706e-06,8.265229897e-06) (-7.264500146e-11,-1.258248334e-10) (1.575517403e-06,2.728876191e-06) (4.761717681e-06,8.247536954e-06) (-3.577407697e-11,-6.196251891e-11) (1.541553266e-06,2.67004858e-06) (3.194233381e-06,5.532574508e-06) (0,-8.67361738e-19) (-0.002729426434,-0.004727505259) (0.06324356095,0.1095410608) (3.126494954e-05,5.415248111e-05) (0.0002650767828,0.0004591264557) (-2.168404345e-19,-4.33680869e-19) (0.0001065037686,0.0001844699384) (-0.006663150733,-0.01154091561) (-9.127041456e-07,-1.580849952e-06) (0.0002416297276,0.0004185149648) (-1.694065895e-21,-8.470329473e-22) (1.483669546e-06,2.569791035e-06) (-3.500462032e-05,-6.06297809e-05) (-8.719713196e-09,-1.510298628e-08) (1.471765147e-05,2.549172011e-05) (-4.235164736e-22,-8.470329473e-22) (6.08483442e-09,1.053924237e-08) (-3.835660981e-05,-6.643559699e-05) (-3.797649481e-09,-6.577721851e-09) (1.178686968e-06,2.041545716e-06) (-1.694065895e-21,-1.694065895e-21) (2.4179593e-07,4.188028358e-07) (2.191988206e-10,3.796634942e-10) (-2.364132934e-05,-4.094798358e-05) (1.230236002e-05,2.130831261e-05) (1.694065895e-21,-1.694065895e-21) (1.181594739e-06,2.046582122e-06) (1.185010832e-09,2.052498968e-09) (-4.056713351e-05,-7.026433636e-05) (-2.316881374e-05,-4.012956255e-05) (2.117582368e-21,1.694065895e-21) (-2.188570265e-06,-3.790714895e-06) (-5.101434888e-09,-8.835944417e-09) (6.486224796e-05,0.000112344709) (-2.66489559e-06,-4.61573456e-06) (1.270549421e-21,1.270549421e-21) (-1.304105758e-06,-2.258777432e-06) (-2.554688277e-09,-4.424849894e-09) (3.739300532e-05,6.476658507e-05) (4.052238551e-06,7.018683054e-06) (-5.29395592e-23,-2.117582368e-22) (-1.147182595e-08,-1.986978541e-08) (-1.153315372e-11,-1.997600821e-11) (4.290322277e-06,7.431056164e-06) (1.630475981e-06,2.824067239e-06) (0,-2.117582368e-22) (-8.329871479e-08,-1.442776062e-07) (-9.227744456e-11,-1.598292224e-10) (3.112744687e-06,5.391431949e-06) (4.610680091e-06,7.985932175e-06) (3.176373552e-22,2.117582368e-22) (-4.072151729e-12,-7.053173691e-12) (-4.732118624e-07,-8.196269885e-07) (-4.150544398e-10,-7.188953777e-10) (1.376158085e-05,2.383575722e-05) (1.058791184e-22,2.117582368e-22) (-1.530521796e-07,-2.650941513e-07) (-1.73488401e-10,-3.004907251e-10) (5.513119534e-06,9.54900314e-06) (4.337960104e-06,7.513567301e-06) (-1.588186776e-22,-1.058791184e-22) (-7.700519144e-08,-1.33376904e-07) (-8.508942103e-11,-1.473792004e-10) (6.216831785e-07,1.076786851e-06) (6.222146986e-06,1.077707471e-05) -(0.05157424969,0.08932922082) (0.07911949656,0.1370389879) (0.005517042647,0.009555798172) (-0.009454263379,-0.01637526452) (-0.002817873889,-0.004880700745) (0.001260905509,0.002183952404) (0.0005417059474,0.0009382622237) (-8.342600894e-05,-0.0001444980862) (-0.0001916579055,-0.0003319612299) (2.369564209e-05,4.104205603e-05) (2.020298538e-05,3.499259714e-05) (6.741548682e-06,1.167670484e-05) (-1.149346843e-05,-1.990727127e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.05227305888,0) (-0.01059774195,0) (0.0007747731012,0) (-0.0019584315,0) (0.0004996371268,0) (-2.324558865e-05,0) (-2.394669917e-05,0) (-7.276138765e-06,0) (8.264461737e-06,0) (1.838973561e-05,0) (-3.937587669e-06,0) (5.221874471e-07,0) (3.804800733e-06,0) (0.003294115467,0) (-5.03865326e-06,0) (8.521411615e-05,0) (8.201923211e-05,0) (2.067578889e-07,0) (-0.06268694534,0) (-4.461298473e-06,0) (-1.290932257e-08,0) (0.008994674824,0) (-1.566384246e-05,0) (4.177343488e-08,0) (-0.003310642092,0) (-1.39836719e-10,0) (4.550215342e-08,0) (0.0007412007475,0) (3.371897556e-11,0) (-2.135755559e-07,0) (-6.832987415e-06,0) (4.698765009e-11,0) (-6.359455323e-07,0) (-9.524322186e-05,0) (-1.168207208e-06,0) (4.963625375e-11,0) (-6.28702053e-07,0) (-3.114294568e-11,0) (4.478956051e-07,0) (5.538823034e-05,0) (2.230680666e-12,0) (1.774135912e-06,0) (2.782574797e-06,0) (4.907366656e-10,0) (-1.097731374e-06,0) (-3.17533837e-06,0) (-3.19703626e-11,0) (1.108827398e-06,0) (2.817216516e-06,0) (-3.361210006e-11,0) (1.86095787e-06,0) (7.359028335e-06,0) (-4.33680869e-19,0) (-0.0002852827998,0) (-0.0001093982521,0) (-4.438290702e-06,0) (0.0612087474,0) (-1.029992064e-18,0) (-5.672657459e-06,0) (-0.001412428299,0) (2.934551322e-06,0) (-0.05104289932,0) (5.844527336e-20,0) (2.315741605e-10,0) (2.280737082e-08,0) (1.99657454e-10,0) (-0.001386055972,0) (2.202285663e-20,0) (-2.218079148e-11,0) (-0.0001285817751,0) (-2.334044471e-07,0) (0.000791823636,0) (2.435219723e-21,0) (1.565366177e-10,0) (1.581342029e-11,0) (4.980086481e-09,0) (-0.0001439248567,0) (-5.029258124e-22,0) (1.452916396e-08,0) (4.223110462e-10,0) (-7.100395277e-06,0) (-2.760876911e-05,0) (-2.580803511e-22,0) (-1.566034151e-09,0) (1.050286112e-10,0) (1.196885357e-08,0) (-1.098689074e-05,0) (3.374896899e-22,0) (2.91435589e-09,0) (1.016381852e-10,0) (-1.778376473e-07,0) (-1.275177812e-05,0) (-2.64697796e-22,0) (-1.096373539e-09,0) (-2.116571378e-11,0) (3.816288677e-07,0) (7.029415091e-05,0) (1.852884572e-22,0) (-1.759502375e-08,0) (2.032173328e-10,0) (-7.041690834e-06,0) (-9.234442056e-06,0) (2.584939414e-25,0) (3.778730592e-10,0) (3.371220318e-09,0) (-7.123309402e-13,0) (-3.067020323e-09,0) (8.602678371e-23,0) (-4.169374205e-09,0) (-8.414027643e-11,0) (2.098761966e-06,0) (5.54532595e-06,0) (-9.926167351e-23,0) (-9.442255645e-09,0) (-1.131400601e-10,0) (5.032227385e-06,0) (1.055086583e-06,0) -(-0.01870392239,0) (-0.005666223889,0) (0.0009130148356,0) (-0.0008914920716,0) (0.0002236517882,0) (-2.053323155e-05,0) (-1.204518931e-05,0) (-6.483972824e-07,0) (5.785990742e-06,0) (3.633038737e-06,0) (-1.276610461e-06,0) (3.596617133e-07,0) (1.548277966e-06,0) (-2.360738584e-06,0) (0.03012600167,0) (-0.02661648463,0) (-0.0001013170272,0) (-3.750412402e-07,0) (-0.02410440258,0) (-6.473083976e-06,0) (7.86788762e-09,0) (0.002917313174,0) (-6.209909928e-05,0) (-5.982724624e-08,0) (-0.0008486929007,0) (8.153315783e-11,0) (1.767015122e-07,0) (0.0001524684146,0) (8.386966911e-07,0) (3.506062313e-10,0) (-2.412940959e-06,0) (-1.03489508e-10,0) (4.325370202e-07,0) (-2.813110036e-05,0) (-7.01336135e-11,0) (-1.272009523e-06,0) (-6.63678222e-07,0) (2.141801211e-11,0) (7.20810683e-07,0) (2.366970548e-05,0) (-1.012439589e-10,0) (-8.825188043e-08,0) (-4.302174199e-06,0) (2.262857906e-07,0) (1.343906619e-10,0) (-5.823968285e-07,0) (3.391481584e-11,0) (1.224153722e-06,0) (1.147096904e-06,0) (3.625524393e-11,0) (1.96618936e-06,0) (7.619721113e-07,0) (1.734723476e-18,0) (-0.0002399783128,0) (4.429670749e-06,0) (0.05862781591,0) (-0.03565811638,0) (-4.33680869e-19,0) (3.134980355e-06,0) (-0.003476641184,0) (-3.253025745e-06,0) (-0.01396980218,0) (-2.710505431e-20,0) (1.136629777e-07,0) (1.037074105e-06,0) (-5.146353529e-09,0) (-0.00182694799,0) (0,0) (-1.794104248e-08,0) (-0.0001795896175,0) (1.81405844e-07,0) (0.0008103216112,0) (3.388131789e-21,0) (2.246534061e-07,0) (1.460111013e-07,0) (-3.147057971e-10,0) (-0.0001426984983,0) (8.470329473e-22,0) (3.165906529e-08,0) (-1.530328056e-10,0) (-5.880359132e-08,0) (-2.120406882e-05,0) (1.058791184e-22,0) (-1.426401455e-08,0) (4.771886505e-10,0) (-9.224878544e-07,0) (5.639404919e-06,0) (0,0) (-1.923071812e-09,0) (3.061682836e-11,0) (1.365337013e-07,0) (3.050917587e-06,0) (-5.065341759e-10,0) (4.235164736e-22,0) (3.046264775e-12,0) (6.475738678e-07,0) (1.629354359e-05,0) (0,0) (9.109682087e-09,0) (-1.822953378e-10,0) (-1.485812014e-06,0) (-3.477463597e-06,0) (0,0) (6.655951109e-09,0) (-5.74589738e-07,0) (1.527580882e-10,0) (1.947745163e-07,0) (-7.857037501e-09,0) (1.058791184e-22,0) (9.043149751e-11,0) (3.224418723e-06,0) (6.035756443e-07,0) (-1.058791184e-22,0) (-1.558553604e-08,0) (1.607444256e-10,0) (1.658167214e-06,0) (-5.670284416e-07,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (-0.04650791085,0) (0.05339342277,0) (-0.006885511921,0) (0.06582968803,0) (0.005456254699,0) (-0.07128594273,0) (-0.03665265658,0) (0.0950451253,0) (-0.05839246872,0) (-0.01466480269,0) (0.05142104472,0) (-0.03675624203,0) (0.005432133241,0) (0.01745725437,0) (-0.02288938761,0) (-0.009939728979,0) (0.02293658634,0) (-0.01299685736,0) (0.0009346548029,0) (0.006928611436,0) (-0.007863266239,0) (-0.002292082329,0) (0.006540467226,0) (-0.004248384897,0) (0.0007511567492,0) (0.001716174845,0) (-0.002467331594,0) (-0.0007179158406,0) (0.001916075511,0) (-0.00119815967,0) (0.0004232273626,0) (0.0002078052141,0) (-0.0006310325767,0) (-7.912951479e-05,0) (0.0003179706291,0) (-0.0002388411143,0) (9.769891917e-05,0) (1.648674933e-05,0) (-0.0001141856685,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.0008172287347,0) (-0.00280811301,0) (-2.968547159e-06,0) (-0.0003536329813,0) (-3.496572923e-05,0) (-6.325669591e-05,0) (-6.601323888e-06,0) (-3.855489098e-06,0) (-5.64426606e-06,0) (-1.765983606e-06,0) (-2.054917267e-07,0) (-3.991282865e-08,0) (-5.172202734e-07,0) (0.02065391313,0) (-0.01874311768,0) (-2.839598951e-06,0) (0.001922210209,0) (-0.002074278464,0) (-0.00378330843,0) (0.0001500682067,0) (-0.0001650648726,0) (-0.0009079186671,0) (0.0002733644709,0) (-0.0002099969132,0) (-0.000231728652,0) (-1.467732161e-05,0) (1.720867302e-05,0) (-0.0003162091956,0) (-5.007846613e-06,0) (-1.116087826e-05,0) (-1.792231646e-06,0) (-1.513850326e-06,0) (-4.757169056e-06,0) (-3.730015351e-05,0) (1.142734126e-05,0) (-6.157851779e-06,0) (-5.327686836e-06,0) (-9.058902923e-07,0) (3.219670478e-06,0) (-1.974033463e-05,0) (-3.048988288e-07,0) (6.478429413e-07,0) (-3.602534663e-07,0) (-9.787608102e-07,0) (-1.968661101e-06,0) (2.586840302e-06,0) (-8.801255416e-07,0) (3.545150804e-06,0) (-3.546258443e-06,0) (-5.013482219e-07,0) (2.325538149e-06,0) (-2.752961059e-06,0) (-8.67361738e-19,0) (0.001081420423,0) (0.03683490234,0) (-0.03477674716,0) (-0.0005078099275,0) (-4.878909776e-19,0) (2.592330502e-05,0) (0.01315681817,0) (-0.01006015626,0) (-0.00380032527,0) (-3.388131789e-20,0) (5.636850501e-07,0) (2.319957752e-05,0) (-2.332385676e-05,0) (-0.001925267643,0) (1.355252716e-20,0) (7.146844379e-11,0) (0.0005565170578,0) (-0.0006475377206,0) (0.0001477002938,0) (-5.505714157e-21,0) (5.082980186e-07,0) (-3.210905036e-06,0) (1.660522345e-06,0) (-0.0003762065667,0) (8.470329473e-22,0) (1.287500472e-06,0) (-1.21303074e-05,0) (4.235369307e-05,0) (-4.425289125e-05,0) (2.117582368e-21,0) (2.385662691e-06,0) (-1.929410409e-05,0) (2.488333702e-06,0) (-1.793936166e-05,0) (1.270549421e-21,0) (9.350130233e-07,0) (-1.152532848e-05,0) (1.956543723e-05,0) (-2.651761138e-05,0) (-3.176373552e-22,0) (4.335966598e-08,0) (-3.011056923e-07,0) (1.016306761e-06,0) (-1.070586547e-05,0) (-5.29395592e-23,0) (2.401865277e-07,0) (-1.133223818e-06,0) (-4.430724484e-06,0) (4.166258622e-06,0) (5.29395592e-23,0) (-3.427165247e-10,0) (7.278680151e-07,0) (-3.068866642e-06,0) (2.654190084e-06,0) (5.29395592e-23,0) (1.64497237e-07,0) (-1.697154657e-06,0) (6.207993408e-06,0) (-6.345131393e-06,0) (1.588186776e-22,0) (9.009374426e-08,0) (-1.008053064e-06,0) (2.068286092e-06,0) (-1.472957506e-06,0) -(0.006996970788,0) (0.02648866226,0) (0.0003000404036,0) (0.002950260254,0) (0.0006171004868,0) (0.0004135149158,0) (0.0001280079144,0) (1.038046461e-05,0) (7.090544467e-05,0) (4.394723674e-06,0) (3.264040205e-06,0) (2.168226279e-06,0) (4.463860426e-06,0) (-0.0197553569,0) (0.003169952543,0) (-0.001001057065,0) (0.0004308924624,0) (-0.002770174458,0) (0.0345564099,0) (-1.463376791e-05,0) (-0.000104145023,0) (0.01124524197,0) (8.482571159e-05,0) (-0.0002556526339,0) (0.0007911948594,0) (-5.099026091e-06,0) (4.407108103e-06,0) (0.003311940614,0) (-7.032866511e-06,0) (-6.547290259e-06,0) (2.17110916e-05,0) (-3.549379796e-06,0) (-6.299896001e-06,0) (0.000423327795,0) (-5.761058672e-06,0) (3.827017946e-05,0) (1.944685014e-05,0) (-3.72626502e-07,0) (3.938617866e-06,0) (0.0001271093011,0) (-3.486916283e-07,0) (8.356272429e-08,0) (4.1630784e-06,0) (-8.202975706e-07,0) (-1.144619623e-06,0) (2.265084665e-06,0) (-7.4172067e-07,0) (7.646110877e-06,0) (7.028005024e-06,0) (-4.193909109e-07,0) (3.865265904e-06,0) (1.465586965e-06,0) (0,0) (6.036641356e-05,0) (-0.03492203779,0) (0.0248557125,0) (-0.01195439354,0) (-6.505213035e-19,0) (3.980786074e-05,0) (0.003563583505,0) (-0.01195701747,0) (0.009444674026,0) (4.33680869e-19,0) (-6.897536925e-07,0) (3.64387135e-06,0) (-0.0001452631239,0) (0.01867201301,0) (2.710505431e-20,0) (-5.822791923e-09,0) (-0.0001187671813,0) (-0.0006389488347,0) (0.0008196149627,0) (5.421010862e-20,0) (-2.79072853e-06,0) (-2.5788548e-06,0) (-2.32486879e-05,0) (0.002942712557,0) (0,0) (-3.739146372e-07,0) (-7.534478148e-06,0) (1.681240677e-06,0) (0.0004156051342,0) (-3.388131789e-21,0) (-3.079720876e-07,0) (-2.842608235e-05,0) (-3.184660905e-05,0) (0.0002010405408,0) (-6.776263578e-21,0) (-1.028458898e-07,0) (-7.315992414e-06,0) (1.276502879e-05,0) (0.000267013377,0) (-5.020416579e-10,0) (0,0) (-2.62595584e-08,0) (1.224289849e-06,0) (3.061993997e-05,0) (0,0) (-2.317871362e-08,0) (-1.732223519e-06,0) (6.817124161e-06,0) (1.627774038e-05,0) (1.058791184e-22,0) (-4.037988332e-08,0) (5.914031108e-06,0) (-3.068111963e-06,0) (-1.752991826e-06,0) (-2.137047511e-08,0) (0,0) (-1.256735752e-06,0) (1.465535905e-05,0) (2.691960492e-06,0) (3.97046694e-23,0) (-4.779938991e-09,0) (-9.112894287e-07,0) (1.646291736e-06,0) (-4.897159534e-07,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0.04715705099,0) (0.02200154358,0) (0.1067286698,0) (0.02202428562,0) (0.17465834,0) (0.07141108635,0) (0.1000731762,0) (0.06107260141,0) (0.05848951507,0) (0.07464156391,0) (0.02679567375,0) (0.03681690082,0) (0.0005054573398,0) (0.06266017622,0) (0.02292789445,0) (0.005280432053,0) (0.03058641266,0) (0.0130185903,0) (4.477807442e-05,0) (0.02165478127,0) (0.007876474827,0) (0.007860017766,0) (0.003864294445,0) (0.004255431357,0) (8.845381168e-05,0) (0.006720385865,0) (0.002471484938,0) (0.00210919833,0) (0.001197367089,0) (0.001200149458,0) (0.0001043161214,0) (0.001637026661,0) (0.0006321024569,0) (0.0005029865235,0) (0.0001561530053,0) (0.0002392339673,0) (3.034857158e-05,0) (0.0002847271479,0) (0.0001143827643,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.01859825451,0) (0.06390622139,0) (6.755733522e-05,0) (0.008047876816,0) (0.000795739924,0) (0.001439577538,0) (0.0001502310143,0) (8.77421026e-05,0) (0.0001284505699,0) (4.018974268e-05,0) (4.676521113e-06,0) (9.083245777e-07,0) (1.177074896e-05,0) (0.008307597159,0) (0.01873421824,0) (2.900333486e-08,0) (0.0006427535352,0) (0.002074227619,0) (0.09464435446,0) (4.913666987e-05,0) (0.0001652571093,0) (0.02141018871,0) (0.0001298657198,0) (0.0002102475176,0) (0.004281715785,0) (1.48520788e-05,0) (7.255278567e-06,0) (0.007171961804,0) (5.016290298e-06,0) (8.510401907e-06,0) (0.0004140783138,0) (1.516294083e-06,0) (4.817059328e-06,0) (0.0009909456417,0) (1.489550748e-05,0) (6.169100968e-06,0) (3.434653454e-06,0) (9.073734504e-07,0) (4.539544298e-06,0) (0.0003945514261,0) (3.054738133e-07,0) (6.950824905e-07,0) (5.407485655e-07,0) (9.805598736e-07,0) (1.955658851e-06,0) (8.959547428e-06,0) (8.815473737e-07,0) (7.766105257e-06,0) (1.471985915e-05,0) (5.021918199e-07,0) (5.508541434e-06,0) (1.701290994e-05,0) (6.505213035e-19,0) (0.0003326380646,0) (0.01469282168,0) (0.03477374258,0) (0.02107630735,0) (3.252606517e-19,0) (1.4617477e-05,0) (0.006316834902,0) (0.01007236596,0) (0.03687902424,0) (-2.059984128e-18,0) (2.1761899e-07,0) (8.535073252e-06,0) (2.333908512e-05,0) (0.04386035073,0) (3.388131789e-21,0) (2.12877168e-11,0) (0.0001802105721,0) (0.0006483001201,0) (0.0003180537728,0) (-1.423015351e-19,0) (1.934512603e-07,0) (3.215971441e-06,0) (3.60306497e-07,0) (0.008593632408,0) (9.95263713e-21,0) (3.785330716e-07,0) (1.214894467e-05,0) (8.316142622e-05,0) (0.0002399527039,0) (-2.943439492e-20,0) (1.065981606e-06,0) (1.932844051e-05,0) (1.262102486e-07,0) (0.0007885513656,0) (-1.905824131e-20,0) (2.756248094e-07,0) (1.154541289e-05,0) (1.377253857e-05,0) (0.0004170207456,0) (1.334076892e-20,0) (1.372912756e-08,0) (3.015892013e-07,0) (1.65338949e-06,0) (0.000225542516,0) (-7.27918939e-22,0) (1.277388161e-07,0) (1.135050709e-06,0) (1.097300767e-05,0) (1.837231386e-05,0) (0,0) (2.299303327e-09,0) (3.123692756e-07,0) (3.074695245e-06,0) (1.039677966e-06,0) (6.882142696e-22,0) (4.239383809e-08,0) (1.699838817e-06,0) (1.420235844e-05,0) (2.844450342e-05,0) (-2.779326858e-22,0) (2.066829092e-08,0) (1.009713072e-06,0) (8.983597702e-06,0) (1.122430129e-06,0) -(0.002275502001,0) (0.008614442707,0) (9.757687426e-05,0) (0.0009594613604,0) (0.0002006887602,0) (0.0001344801982,0) (4.162976727e-05,0) (3.375856311e-06,0) (2.305933326e-05,0) (1.429218846e-06,0) (1.061506507e-06,0) (7.051341767e-07,0) (1.451702978e-06,0) (0.0197919787,0) (0.04576663462,0) (0.003064285325,0) (0.006931890706,0) (0.002776848162,0) (0.01119185278,0) (0.0002405708549,0) (0.0001044086936,0) (0.003665373389,0) (0.0006670496628,0) (0.0002562656941,0) (0.0002404198937,0) (5.111300906e-06,0) (1.4983551e-05,0) (0.001075955865,0) (7.907287005e-06,0) (6.558427154e-06,0) (1.279841726e-05,0) (3.558166217e-06,0) (2.878390215e-06,0) (0.0001413922296,0) (5.77551433e-06,0) (2.981494912e-05,0) (2.987868567e-06,0) (3.734951082e-07,0) (2.875161334e-06,0) (4.065104123e-05,0) (3.494642989e-07,0) (1.349041095e-09,0) (2.229293379e-06,0) (2.854297262e-07,0) (1.146538659e-06,0) (2.970188831e-06,0) (7.434637826e-07,0) (5.101582132e-06,0) (1.477386609e-06,0) (4.203040616e-07,0) (2.548710907e-06,0) (2.065288763e-07,0) (0,0) (0.00381120272,0) (0.03499174491,0) (0.02310179904,0) (0.06236724561,0) (0,0) (0.001009633108,0) (0.0298739139,0) (0.0119849688,0) (0.002478434544,0) (0,0) (1.099057939e-05,0) (0.0003399323208,0) (0.000145642374,0) (0.00607617128,0) (-5.421010862e-20,0) (2.892328027e-07,0) (0.001438457613,0) (0.0006405979474,0) (0.0003449598824,0) (-1.355252716e-20,0) (4.286455912e-05,0) (9.37661877e-06,0) (2.331100428e-05,0) (0.0009596164022,0) (-3.388131789e-21,0) (5.739308119e-06,0) (7.551310522e-06,0) (1.320365452e-05,0) (0.0001350056191,0) (-1.694065895e-21,0) (4.544913819e-06,0) (2.850249043e-05,0) (6.63333715e-06,0) (0.0001130091179,0) (0,0) (1.524088828e-06,0) (7.334038823e-06,0) (2.344902083e-05,0) (8.380257917e-05,0) (1.053196334e-08,0) (2.117582368e-22,0) (2.631799423e-08,0) (5.681500867e-07,0) (9.841263226e-06,0) (0,0) (4.420829531e-07,0) (1.736699721e-06,0) (1.043708995e-06,0) (1.023766845e-05,0) (-4.235164736e-22,0) (6.41372051e-07,0) (3.151162781e-06,0) (3.071688387e-06,0) (5.020121102e-06,0) (3.257591355e-07,0) (-1.058791184e-22,0) (1.259765493e-06,0) (8.095219997e-06,0) (2.749685552e-07,0) (5.29395592e-23,0) (2.494036453e-07,0) (9.133146635e-07,0) (8.753312292e-07,0) (1.469478759e-06,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (-0.06251041084,0) (-0.02312716577,0) (0.08563757661,0) (-0.03295383896,0) (0.1276303109,0) (-0.0946764719,0) (0.1030608728,0) (-0.02550019993,0) (-0.07756067291,0) (0.0673281933,0) (-0.01850623727,0) (-0.04882195603,0) (-0.003708510075,0) (0.03411132104,0) (-0.03040281096,0) (0.01146538456,0) (0.005797797515,0) (-0.01726318207,0) (-0.0006699053532,0) (0.01111428551,0) (-0.01044438016,0) (0.007652943725,0) (-0.002009962988,0) (-0.005642980737,0) (-0.0004988181503,0) (0.003776045562,0) (-0.003277227412,0) (0.002131064227,0) (-0.0005395912934,0) (-0.001591472934,0) (-0.0002399694735,0) (0.00107812515,0) (-0.0008381556767,0) (0.0004388767921,0) (-0.000121633216,0) (-0.0003172435761,0) (-5.066889512e-05,0) (0.0002023292553,0) (-0.0001516603602,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.01463443893,0) (0.0502859929,0) (5.315895081e-05,0) (0.006332645988,0) (0.0006261451749,0) (0.001132762731,0) (0.0001182125239,0) (6.904177173e-05,0) (0.0001010741099,0) (3.162416853e-05,0) (3.679821814e-06,0) (7.147348455e-07,0) (9.262068479e-06,0) (-0.009313391119,0) (-0.02485528906,0) (2.158341618e-06,0) (-0.0009642227618,0) (-0.002752518914,0) (0.07418909208,0) (-7.592983434e-05,0) (-0.0002192988358,0) (0.01682223941,0) (-0.0001078732284,0) (-0.0002790327477,0) (0.003401814836,0) (-1.969725446e-05,0) (-7.352308847e-06,0) (0.005644203073,0) (-6.658775869e-06,0) (1.481098257e-05,0) (0.000313481762,0) (-2.012532792e-06,0) (7.210277511e-06,0) (0.0007750485214,0) (2.629829628e-06,0) (-8.184795682e-06,0) (6.597129124e-06,0) (-1.204185994e-06,0) (9.994640053e-07,0) (0.0003122689409,0) (-4.05238327e-07,0) (3.652865445e-08,0) (6.786751343e-07,0) (-1.303286861e-06,0) (2.952998217e-06,0) (4.80736646e-06,0) (-1.169838614e-06,0) (3.186477351e-06,0) (1.376395317e-05,0) (-6.663773466e-07,0) (2.4025461e-06,0) (1.489570409e-05,0) (0,0) (-0.0005631257223,0) (-0.01669247861,0) (-0.04613755182,0) (0.01626508487,0) (0,0) (-8.490090396e-06,0) (-0.005142060373,0) (-0.01336677666,0) (0.03065388695,0) (4.33680869e-19,0) (-2.601810625e-07,0) (-1.103815192e-05,0) (-3.097608686e-05,0) (0.03451093673,0) (1.016439537e-20,0) (-3.774812831e-11,0) (-0.0002830758546,0) (-0.0008602105367,0) (0.0001283005263,0) (-1.355252716e-19,0) (-2.367183435e-07,0) (-4.268285589e-06,0) (-9.777383985e-07,0) (0.006761023897,0) (5.717472394e-21,0) (-6.8364659e-07,0) (-1.612492008e-05,0) (3.081896923e-05,0) (0.0002141657343,0) (1.270549421e-21,0) (-9.918547086e-07,0) (-2.565648968e-05,0) (-1.776462113e-06,0) (0.0006078986526,0) (-1.651714247e-20,0) (-4.959282655e-07,0) (-1.532305696e-05,0) (-4.336478179e-06,0) (0.0003342957791,0) (-1.058791184e-22,0) (-2.228367745e-08,0) (-4.002309418e-07,0) (4.816661111e-07,0) (0.0001780711778,0) (2.911675756e-22,0) (-8.446585262e-08,0) (-1.506512155e-06,0) (1.160455761e-05,0) (1.071428823e-05,0) (-1.32348898e-23,0) (1.991555512e-09,0) (-3.123218372e-07,0) (-4.078876345e-06,0) (-1.21309979e-06,0) (-4.63221143e-22,0) (-9.18463487e-08,0) (-2.255974777e-06,0) (6.034671105e-06,0) (2.62148383e-05,0) (-9.264422861e-23,0) (-5.222643711e-08,0) (-1.339863123e-06,0) (5.215289271e-06,0) (1.954276747e-06,0) -(-0.003549268956,0) (-0.01343658413,0) (-0.0001521978757,0) (-0.001496542925,0) (-0.0003130291189,0) (-0.0002097587224,0) (-6.49330304e-05,0) (-5.265573046e-06,0) (-3.596734947e-05,0) (-2.229258458e-06,0) (-1.655710296e-06,0) (-1.099849986e-06,0) (-2.264328624e-06,0) (-0.02625611128,0) (0.03211320294,0) (0.003063780447,0) (0.004903291854,0) (-0.003682232749,0) (-0.01756345289,0) (0.0001924317751,0) (-0.0001384529431,0) (-0.005697965572,0) (0.0004391819773,0) (-0.000339842748,0) (-0.0004140257883,0) (-6.779946273e-06,0) (7.980037421e-06,0) (-0.001680857268,0) (1.12590218e-05,0) (-8.694108655e-06,0) (-6.689394366e-06,0) (-4.720166369e-06,0) (6.909971635e-06,0) (-0.0002119300653,0) (-7.660029649e-06,0) (-6.315433174e-06,0) (-1.237961572e-05,0) (-4.954443068e-07,0) (-7.960133638e-07,0) (-6.499462137e-05,0) (-4.636178842e-07,0) (-6.185385077e-08,0) (-1.451794079e-06,0) (8.328918145e-07,0) (-1.520070884e-06,0) (5.349167374e-07,0) (-9.861286637e-07,0) (-1.906935634e-06,0) (-4.174253742e-06,0) (-5.575045068e-07,0) (-9.86831296e-07,0) (-9.470422496e-07,0) (-8.67361738e-19,0) (0.002828880622,0) (-0.04641579736,0) (-0.001282046906,0) (0.05600852667,0) (-4.33680869e-19,0) (0.0007314810716,0) (0.01984557116,0) (-0.01589400852,0) (-0.005236486429,0) (-1.084202172e-19,0) (8.808045082e-06,0) (0.0002536017549,0) (-0.0001931366618,0) (-0.009468612536,0) (-2.710505431e-20,0) (2.225154949e-07,0) (0.001174190644,0) (-0.0008494051089,0) (-0.0003564038288,0) (0,0) (3.442811834e-05,0) (9.018351715e-06,0) (-3.090440545e-05,0) (-0.001490739516,0) (0,0) (4.609909213e-06,0) (-1.002012226e-05,0) (8.682331798e-06,0) (-0.0002109323487,0) (-2.541098842e-21,0) (3.659487597e-06,0) (-3.781049624e-05,0) (2.895905309e-05,0) (-6.605743182e-05,0) (-3.388131789e-21,0) (1.226847403e-06,0) (-9.727843585e-06,0) (8.073711052e-06,0) (-0.0001377292668,0) (8.320855081e-09,0) (4.235164736e-22,0) (-3.491009668e-08,0) (-4.928831568e-07,0) (-1.562019084e-05,0) (0,0) (3.508562431e-07,0) (-2.303710515e-06,0) (-4.342307445e-06,0) (-4.529449878e-06,0) (2.117582368e-22,0) (5.141031785e-07,0) (-2.076654126e-06,0) (-4.074920738e-06,0) (5.103558646e-06,0) (2.617659823e-07,0) (-2.117582368e-22,0) (-1.67094328e-06,0) (-4.923886331e-06,0) (-1.818172343e-06,0) (0,0) (1.916922473e-07,0) (-1.21138326e-06,0) (-5.785828522e-07,0) (1.476275077e-06,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (-1.352214984e-05,0) (-0.001516611742,0) (-0.1815201801,0) (0.001529805043,0) (-0.06184377689,0) (-1.018009989e-05,0) (0.0100894037,0) (0.002033057526,0) (1.382974519e-06,0) (0.01420621429,0) (0.001104706844,0) (1.705669872e-06,0) (0.0001243303037,0) (-0.00416102366,0) (-4.957044252e-07,0) (-2.976561439e-05,0) (-6.894765397e-05,0) (-1.167054917e-08,0) (2.109279228e-05,0) (-0.001212800252,0) (-1.454478514e-07,0) (0.0009931054366,0) (0.0001417158764,0) (1.284692074e-07,0) (1.74742353e-05,0) (-0.0004985374759,0) (-5.936260932e-08,0) (0.0002260156754,0) (4.076642451e-05,0) (3.037514902e-08,0) (1.036691613e-05,0) (-0.0002489763116,0) (-3.115196758e-08,0) (0.0001252345373,0) (6.832339961e-06,0) (1.454786252e-08,0) (2.35247391e-06,0) (-7.547512391e-05,0) (-1.072474815e-08,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.09590197642,0) (-0.1401646988,0) (-0.002985838421,0) (0.01780950172,0) (0.003649578912,0) (-0.002683292763,0) (-0.0006693273457,0) (0.0002766372549,0) (0.0002942175258,0) (-8.172856693e-05,0) (-2.758117892e-05,0) (-4.976700232e-06,0) (2.128685141e-05,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.01470014553,0) (0.01382695546,0) (-0.0003039299897,0) (-4.71970691e-05,0) (9.103863821e-05,0) (0.000163575563,0) (-9.961621062e-05,0) (-2.390391798e-05,0) (5.002522838e-05,0) (1.012786441e-05,0) (-7.88201233e-06,0) (6.23141672e-06,0) (8.301457933e-06,0) (-1.457628927e-06,0) (-0.04559196335,0) (-0.02299600676,0) (0.008358714646,0) (1.091418551e-06,0) (0.01108001222,0) (0.0001174809611,0) (1.180077153e-08,0) (-0.0004752201501,0) (-5.445124097e-06,0) (-7.103876161e-10,0) (-3.157105631e-06,0) (-9.404551985e-10,0) (-3.878017573e-05,0) (0.0003533999622,0) (2.141472362e-05,0) (3.593291973e-09,0) (7.639707444e-05,0) (-1.211070338e-09,0) (-2.325109286e-05,0) (-0.0002136717171,0) (-9.75273999e-10,0) (-2.050776465e-05,0) (2.993656717e-05,0) (-1.380484768e-10,0) (-1.387528677e-05,0) (6.936217859e-05,0) (-1.771963067e-10,0) (2.805955058e-08,0) (-1.784210166e-05,0) (8.180342229e-07,0) (4.010017397e-11,0) (-1.893631504e-05,0) (-1.860366417e-10,0) (-5.633722485e-06,0) (1.251832324e-05,0) (-1.176319828e-10,0) (-2.00923065e-06,0) (4.53804567e-06,0) (6.938893904e-18,0) (0.005994823377,0) (-7.444950055e-08,0) (-0.003435817589,0) (-0.1102116782,0) (-8.67361738e-19,0) (0.001606299893,0) (0.01230377284,0) (1.525748086e-06,0) (0.001045366821,0) (-1.355252716e-20,0) (1.798364778e-05,0) (0.0001386402286,0) (1.737100717e-08,0) (0.0002209886563,0) (-3.388131789e-21,0) (4.610365646e-07,0) (6.817192153e-05,0) (6.679547034e-09,0) (-7.354140116e-06,0) (0,0) (6.988489398e-05,0) (4.1665471e-05,0) (2.546341754e-08,0) (0.0001696441168,0) (1.016439537e-20,0) (9.362266021e-06,0) (-1.188796278e-08,0) (8.158151922e-05,0) (-8.232622071e-05,0) (8.470329473e-21,0) (7.420259143e-06,0) (-4.143616472e-09,0) (-3.256963719e-05,0) (-0.000166117142,0) (-1.694065895e-21,0) (2.488480358e-06,0) (-1.386998724e-09,0) (-6.937063544e-05,0) (5.261433427e-05,0) (1.696781277e-08,0) (4.235164736e-22,0) (-1.09460803e-11,0) (-7.964340301e-06,0) (1.633611477e-05,0) (6.352747104e-22,0) (7.199518179e-07,0) (-5.160270666e-10,0) (3.653434698e-06,0) (-3.163718351e-05,0) (-4.235164736e-22,0) (1.047169952e-06,0) (6.944596701e-07,0) (-6.615208134e-10,0) (-2.354858994e-05,0) (5.29902449e-07,0) (-4.235164736e-22,0) (-2.91384935e-10,0) (-1.338045233e-05,0) (4.545817498e-06,0) (-2.117582368e-22,0) (3.968631531e-07,0) (-1.826512278e-10,0) (3.288624992e-07,0) (-1.102174207e-05,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0.0003039026374,0.0005263748085) (0.04090131005,0.07084314711) (-0.00883687416,-0.01530591502) (0.01252654015,0.02169660398) (-0.000346879798,-0.0006008134342) (-5.135379222e-06,-8.894737729e-06) (0.001183168129,0.002049307314) (-0.00268255013,-0.004646313118) (5.808926845e-07,1.006135643e-06) (0.001574284488,0.002726740719) (-0.004459427703,-0.007723955355) (1.129113895e-06,1.955682633e-06) (0.0001341706355,0.0002323903576) (0.0003683995724,0.0006380867769) (-1.952858243e-07,-3.382449696e-07) (-4.227609596e-05,-7.322434614e-05) (9.017141291e-05,0.0001561814685) (-1.85615821e-08,-3.214960327e-08) (3.392569073e-05,5.876102003e-05) (0.0002193194444,0.0003798724208) (-9.853361838e-08,-1.706652333e-07) (0.0001346486464,0.0002332182967) (-0.0003281340941,-0.0005683449226) (7.513718213e-08,1.30141417e-07) (2.344440262e-05,4.060689649e-05) (4.508202613e-05,7.808435976e-05) (-2.665283983e-08,-4.616407275e-08) (3.529806653e-05,6.113804464e-05) (-8.179885248e-05,-0.0001416797685) (1.80411161e-08,3.12481297e-08) (3.253944728e-05,5.635997594e-05) (1.08655697e-05,1.881971877e-05) (-1.708094113e-08,-2.958505788e-08) (1.043761257e-05,1.807847528e-05) (-3.251583845e-05,-5.631908425e-05) (8.68155776e-09,1.503689913e-08) (1.137503137e-05,1.970213227e-05) (5.505628404e-07,9.536028123e-07) (-4.783889003e-09,-8.285938811e-09) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.02101305131,0.03639567249) (-0.01883018317,-0.03261483397) (0.0001264463693,0.0002190115361) (6.834581865e-05,0.0001183784304) (-9.063998106e-05,-0.0001569930524) (-0.0002675942571,-0.0004634868491) (9.461888584e-05,0.0001638847176) (6.093280015e-05,0.0001055387057) (-5.903420635e-05,-0.0001022502448) (-2.685320506e-05,-4.65111155e-05) (8.271937295e-06,1.432741567e-05) (-3.536237701e-06,-6.124943366e-06) (-1.181918528e-05,-2.04714294e-05) (0.01305259065,0.02260775017) (-1.972421406e-05,-3.41633409e-05) (-3.139793852e-05,-5.438282477e-05) (-0.001208003877,-0.002092324091) (1.712798772e-06,2.966654497e-06) (-0.01682721675,-0.02914559437) (-2.585942318e-05,-4.47898348e-05) (9.67925942e-09,1.67649691e-08) (0.0005877851435,0.001018073733) (1.150133528e-06,1.992089707e-06) (-3.493905947e-10,-6.051622618e-10) (6.952941289e-06,1.204284757e-05) (8.190971413e-08,1.418717865e-07) (1.32217184e-05,2.290068804e-05) (-0.0004639768554,-0.0008036314871) (-6.629958665e-10,-1.148342526e-09) (1.637002792e-05,2.835372008e-05) (-0.0002004334016,-0.0003471608352) (9.621648201e-11,1.666518354e-10) (-1.475131992e-05,-2.555003558e-05) (0.0002859360877,0.0004952558317) (1.363844101e-07,2.362247277e-07) (8.972964103e-10,1.554162972e-09) (-1.642133626e-05,-2.844258873e-05) (6.808895039e-11,1.179335215e-10) (8.86002333e-06,1.534601056e-05) (-0.0001070329349,-0.0001853864814) (1.530817236e-11,2.651453229e-11) (1.09037461e-06,1.888584223e-06) (-4.296340024e-06,-7.441479207e-06) (2.752512015e-10,4.767490659e-10) (-7.394344286e-07,-1.280737999e-06) (1.652763697e-05,2.862670696e-05) (7.276235857e-11,1.260281019e-10) (3.451371935e-06,5.977951547e-06) (-1.976500436e-05,-3.423399176e-05) (3.583427253e-11,6.206678068e-11) (3.65150322e-06,6.3245891e-06) (-1.973991048e-05,-3.419052789e-05) (0,-4.33680869e-19) (-0.0008395542634,-0.00145415064) (0.02522679048,0.04369408282) (-3.126224837e-05,-5.414780254e-05) (-0.01100183246,-0.01905573281) (1.626303259e-19,-4.878909776e-19) (6.005470316e-05,0.0001040177971) (-0.003199103504,-0.005541009808) (9.138118664e-07,1.582768581e-06) (-0.002344817337,-0.004061342763) (1.863472484e-20,4.065758147e-20) (5.727926757e-07,9.921060165e-07) (-1.287812239e-05,-2.230556228e-05) (8.725406379e-09,1.511284716e-08) (-0.000335289152,-0.0005807378464) (-2.117582368e-22,2.117582368e-22) (1.81243952e-09,3.139237334e-09) (-1.242058352e-05,-2.151308171e-05) (3.802120767e-09,6.585466345e-09) (2.538152278e-06,4.396208702e-06) (2.202285663e-20,4.065758147e-20) (9.202421743e-08,1.593906201e-07) (-2.195446888e-10,-3.802625555e-10) (-5.129786172e-06,-8.885050281e-06) (-0.0002810210377,-0.0004867427153) (2.117582368e-21,-5.082197684e-21) (3.473961335e-07,6.017077536e-07) (-1.186831509e-09,-2.055652473e-09) (-7.965351864e-05,-0.0001379639413) (0.0001256283905,0.0002175947552) (-6.352747104e-22,2.541098842e-21) (-9.779151322e-07,-1.693798695e-06) (5.110513569e-09,8.851669155e-09) (3.289864391e-06,5.698212276e-06) (0.0001171394555,0.0002028914885) (9.529120657e-21,1.270549421e-21) (-3.844266251e-07,-6.658464465e-07) (2.55914016e-09,4.432560781e-09) (2.632175311e-05,4.559061372e-05) (-6.372623528e-05,-0.0001103770773) (-2.223461487e-21,1.905824131e-21) (-3.632365662e-09,-6.291441879e-09) (1.155167341e-11,2.000808525e-11) (6.979756536e-06,1.208929295e-05) (-3.434954941e-05,-5.94951648e-05) (4.764560328e-22,4.235164736e-22) (-4.430089943e-08,-7.673140864e-08) (9.242620673e-11,1.60086886e-10) (-7.708935966e-06,-1.335226877e-05) (2.033211796e-05,3.521626133e-05) (-5.29395592e-23,-1.058791184e-22) (2.732028175e-11,4.732011607e-11) (-2.030819374e-07,-3.517482337e-07) (4.158427398e-10,7.202607533e-10) (5.390575629e-06,9.336750872e-06) (-2.64697796e-22,-1.376428539e-21) (-3.944424504e-08,-6.831943648e-08) (1.737627841e-10,3.009659705e-10) (1.261265833e-05,2.184576504e-05) (-1.944658249e-05,-3.36824689e-05) (1.588186776e-22,1.455837878e-21) (-1.766566272e-08,-3.059782538e-08) (8.522954168e-11,1.476218965e-10) (2.700280003e-06,4.67702216e-06) (-4.74143023e-06,-8.212398059e-06) -(0.01677258801,0.02905097462) (0.02573064519,0.04456678478) (0.001794210947,0.00310766452) (-0.003074644141,-0.005325439867) (-0.0009164076666,-0.001587264639) (0.0004100621676,0.0007102485086) (0.0001761695175,0.000305134555) (-2.713117662e-05,-4.699257638e-05) (-6.232953669e-05,-0.0001079579244) (7.706117781e-06,1.334738753e-05) (6.57026234e-06,1.138002819e-05) (2.192435553e-06,3.797409769e-06) (-3.737819008e-06,-6.474092431e-06) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.0411321873,0) (-0.008339062533,0) (0.0006096469769,0) (-0.001541034196,0) (0.0003931502828,0) (-1.829129434e-05,0) (-1.884297833e-05,0) (-5.725387206e-06,0) (6.503070519e-06,0) (1.447036132e-05,0) (-3.098376047e-06,0) (4.108944902e-07,0) (2.993889774e-06,0) (-0.003692931319,0) (6.684943117e-06,0) (0.006341380197,0) (-0.0001230406465,0) (-2.74369599e-07,0) (-0.04913856285,0) (6.893948142e-06,0) (1.71308782e-08,0) (0.007067222778,0) (1.30112031e-05,0) (-5.544016143e-08,0) (-0.002630298682,0) (1.854554824e-10,0) (-4.611068783e-08,0) (0.0005833114635,0) (-4.475959074e-11,0) (-3.716938248e-07,0) (-5.172975408e-06,0) (-6.23653338e-11,0) (-9.518968852e-07,0) (-7.449260097e-05,0) (-2.062491615e-07,0) (-6.585442473e-11,0) (-1.207582855e-06,0) (4.133017006e-11,0) (9.861243906e-08,0) (4.383718543e-05,0) (-2.959197357e-12,0) (9.323612458e-08,0) (3.492314996e-06,0) (-6.522504806e-10,0) (-1.657548191e-06,0) (-1.703770788e-06,0) (4.242558686e-11,0) (4.549582158e-07,0) (2.634266796e-06,0) (4.460116865e-11,0) (8.116553402e-07,0) (6.443219229e-06,0) (-3.252606517e-18,0) (0.0004829576041,0) (0.0001242870854,0) (5.888692216e-06,0) (0.04723623807,0) (-1.029992064e-18,0) (3.294780257e-06,0) (0.001149751687,0) (-3.89436725e-06,0) (-0.04242691604,0) (-1.778769189e-20,0) (-2.768655948e-10,0) (-2.949608241e-08,0) (-2.64989249e-10,0) (-0.001090599805,0) (1.016439537e-20,0) (3.933175975e-11,0) (0.0002019770285,0) (3.09697559e-07,0) (0.0003194157652,0) (-2.541098842e-21,0) (-1.91547415e-10,0) (-2.098780887e-11,0) (-1.35141104e-08,0) (-0.0001132326063,0) (6.088049308e-22,0) (-2.624027897e-08,0) (-5.605204444e-10,0) (-2.631350537e-06,0) (-2.46417407e-05,0) (2.713152409e-22,0) (1.457134286e-09,0) (-1.394145316e-10,0) (-1.684666273e-07,0) (-8.469855444e-06,0) (2.117582368e-22,0) (-5.243764032e-09,0) (-1.348940671e-10,0) (5.599469354e-08,0) (-1.022219073e-05,0) (1.694065895e-21,0) (1.779518342e-09,0) (2.80884512e-11,0) (1.111762798e-07,0) (5.549890313e-05,0) (-2.514629062e-22,0) (1.163451117e-08,0) (-2.697230875e-10,0) (-7.446974375e-06,0) (-5.385302829e-06,0) (-7.754818243e-26,0) (3.272970404e-10,0) (-3.370708344e-09,0) (9.449748969e-13,0) (3.578609755e-09,0) (7.610061635e-23,0) (9.0329589e-09,0) (1.116684355e-10,0) (8.917771118e-07,0) (5.110647247e-06,0) (4.63221143e-23,0) (2.385951371e-08,0) (1.501339326e-10,0) (2.921382097e-06,0) (1.83702408e-06,0) -(0.02917389264,0) (0.008838028944,0) (-0.001424096841,0) (0.001390526193,0) (-0.0003488462539,0) (3.20272016e-05,0) (1.878777362e-05,0) (1.011353251e-06,0) (-9.024838172e-06,0) (-5.66671952e-06,0) (1.99122386e-06,0) (-5.609910046e-07,0) (-2.414963783e-06,0) (3.131764434e-06,0) (0.02113859613,0) (-0.02661209925,0) (-7.166687639e-05,0) (4.97322524e-07,0) (0.03782720766,0) (-5.177796953e-06,0) (-1.043334764e-08,0) (-0.004535076858,0) (-4.088571921e-05,0) (7.933896824e-08,0) (0.001461529417,0) (-1.081506332e-10,0) (9.410884509e-08,0) (-0.0002381860178,0) (1.194202806e-06,0) (-4.647773923e-10,0) (1.261180451e-06,0) (1.372863619e-10,0) (1.038364612e-06,0) (4.216515965e-05,0) (9.30177865e-11,0) (2.694383648e-07,0) (2.749813509e-06,0) (-2.841116772e-11,0) (-1.995626923e-07,0) (-3.784413631e-05,0) (1.343156087e-10,0) (4.046369427e-06,0) (2.801726811e-06,0) (6.603081789e-07,0) (-1.781739592e-10,0) (-1.048868705e-07,0) (-4.49845343e-11,0) (-4.575800789e-07,0) (-3.241043012e-06,0) (-4.809009413e-11,0) (-7.612857105e-07,0) (-3.494038197e-06,0) (0,0) (-0.0001781248725,0) (-5.875863018e-06,0) (-0.00325358254,0) (-0.03202255516,0) (-8.67361738e-19,0) (2.27129912e-06,0) (-0.002309571161,0) (4.314038673e-06,0) (0.02951567944,0) (0,0) (9.109152453e-08,0) (7.736946357e-07,0) (6.824590353e-09,0) (0.002846967579,0) (0,0) (-1.380258363e-08,0) (-0.00014659622,0) (-2.405362853e-07,0) (-0.000837203801,0) (0,0) (1.804379704e-07,0) (1.404322281e-07,0) (4.172190712e-10,0) (0.0002216784642,0) (0,0) (2.542909593e-08,0) (2.030650731e-10,0) (-3.866749846e-08,0) (3.31291695e-05,0) (-2.64697796e-23,0) (-1.148514282e-08,0) (-6.330232694e-10,0) (-4.027290359e-06,0) (-3.296411943e-06,0) (0,0) (-1.548017159e-09,0) (-4.061005464e-11,0) (4.700979461e-08,0) (-5.014173148e-06,0) (-4.001910504e-10,0) (-8.470329473e-22,0) (-4.040786576e-12,0) (-5.617850981e-07,0) (-2.586134062e-05,0) (5.29395592e-23,0) (7.229839581e-09,0) (2.418124915e-10,0) (6.181658491e-06,0) (1.538533616e-06,0) (-2.64697796e-23,0) (5.335196032e-09,0) (3.786615396e-07,0) (-2.026498209e-10,0) (1.980117903e-07,0) (-6.313576244e-09,0) (0,0) (-1.199476441e-10,0) (-1.961240248e-06,0) (-3.991018329e-06,0) (-2.117582368e-22,0) (-1.197908084e-08,0) (-2.132048396e-10,0) (-1.09602752e-06,0) (-5.6965094e-07,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0.0616499241,0) (-0.05612508663,0) (-0.005524837477,0) (-0.09849767551,0) (0.003987118413,0) (0.0945105571,0) (-0.03774692604,0) (-0.03968505748,0) (0.07743198352,0) (-0.01322794725,0) (-0.0355135707,0) (0.04874151795,0) (-0.03985523459,0) (0.009503484414,0) (0.03035175017,0) (-0.02158210048,0) (0.004347737172,0) (0.01723436331,0) (-0.01398296519,0) (0.00355609991,0) (0.01042686528,0) (-0.002231696874,0) (-0.003401939794,0) (0.005633636669,0) (-0.004236003097,0) (0.0009642830837,0) (0.003271720014,0) (-0.0007253584191,0) (-0.0008634759321,0) (0.001588834351,0) (-0.000973594934,0) (0.0001368578979,0) (0.0008367370361,0) (-6.904381328e-05,0) (-0.0002476788081,0) (0.0003167226213,0) (-0.0001631146387,0) (1.171560823e-05,0) (0.0001513990305,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.0006430541106,0) (-0.002209624475,0) (-2.335865557e-06,0) (-0.0002782637621,0) (-2.751354053e-05,0) (-4.977489973e-05,0) (-5.19439452e-06,0) (-3.03377501e-06,0) (-4.441312862e-06,0) (-1.389602407e-06,0) (-1.616956109e-07,0) (-3.140627274e-08,0) (-4.069859621e-07,0) (-0.02315446542,0) (0.02486709624,0) (-0.0002113144789,0) (-0.002883591821,0) (0.002752586386,0) (-0.002965630851,0) (-0.0002318971576,0) (0.0002190437346,0) (-0.0007133624739,0) (-0.0002270707624,0) (0.0002787001547,0) (-0.0001841079618,0) (1.946548646e-05,0) (-1.743881751e-05,0) (-0.0002488508671,0) (6.647567465e-06,0) (-1.942370938e-05,0) (-1.356825305e-06,0) (2.009289265e-06,0) (-7.120632471e-06,0) (-2.917357685e-05,0) (2.017518414e-06,0) (8.169870928e-06,0) (-1.023318319e-05,0) (1.202217678e-06,0) (7.088695561e-07,0) (-1.562354862e-05,0) (4.044755587e-07,0) (3.404607548e-08,0) (-4.521418737e-07,0) (1.300895681e-06,0) (-2.972631304e-06,0) (1.388004183e-06,0) (1.167951802e-06,0) (1.454595627e-06,0) (-3.315964822e-06,0) (6.652579445e-07,0) (1.014281671e-06,0) (-2.410363274e-06,0) (2.168404345e-18,0) (-0.001830745551,0) (-0.04184804203,0) (0.04614153827,0) (-0.0003918889316,0) (8.67361738e-19,0) (-1.505671622e-05,0) (-0.0107099765,0) (0.01335057348,0) (-0.003158834692,0) (-1.355252716e-20,0) (-6.739309617e-07,0) (-3.000331146e-05,0) (3.095587548e-05,0) (-0.001514871375,0) (1.355252716e-20,0) (-1.267303586e-10,0) (-0.0008741803541,0) (0.0008591989311,0) (5.958119995e-05,0) (-2.117582368e-21,0) (-6.219833605e-07,0) (4.261561381e-06,0) (-4.506042692e-06,0) (-0.0002959797984,0) (-2.117582368e-22,0) (-2.325279806e-06,0) (1.61001834e-05,0) (1.56959449e-05,0) (-3.949717088e-05,0) (-4.235164736e-21,0) (-2.219766983e-06,0) (2.561091166e-05,0) (-3.502433912e-05,0) (-1.382955411e-05,0) (5.29395592e-21,0) (-1.682357216e-06,0) (1.529640096e-05,0) (-6.160454092e-06,0) (-2.125727712e-05,0) (0,0) (-7.037685441e-08,0) (3.9958929e-07,0) (2.960709067e-07,0) (-8.452535281e-06,0) (1.058791184e-22,0) (-1.588206347e-07,0) (1.504087388e-06,0) (-4.685734219e-06,0) (2.429661067e-06,0) (0,0) (-2.96845995e-10,0) (-7.277574765e-07,0) (4.071144148e-06,0) (-3.096918026e-06,0) (-4.367513634e-22,0) (-3.56383646e-07,0) (2.252412441e-06,0) (2.637815303e-06,0) (-5.847758739e-06,0) (-1.32348898e-23,0) (-2.276567175e-07,0) (1.337660336e-06,0) (1.200711633e-06,0) (-2.564584225e-06,0) -(-0.01091369342,0) (-0.04131632783,0) (-0.0004679952334,0) (-0.004601739364,0) (-0.0009625373212,0) (-0.000644989832,0) (-0.0001996634222,0) (-1.619117925e-05,0) (-0.0001105964721,0) (-6.854775913e-06,0) (-5.091165187e-06,0) (-3.381943069e-06,0) (-6.962613624e-06,0) (0.02620752866,0) (0.002224269497,0) (-0.001000892129,0) (0.0003047929621,0) (0.003673383099,0) (-0.05422961591,0) (-1.170549913e-05,0) (0.0001381032981,0) (-0.01748116626,0) (5.58488008e-05,0) (0.0003390297478,0) (-0.001362512354,0) (6.763664198e-06,0) (2.347166408e-06,0) (-0.005173910596,0) (-1.001395262e-05,0) (8.679345149e-06,0) (-1.134781363e-05,0) (4.708510543e-06,0) (-1.51237669e-05,0) (-0.0006345178053,0) (7.640857198e-06,0) (-8.106428758e-06,0) (-8.057400327e-05,0) (4.942920937e-07,0) (-1.090440533e-06,0) (-0.0002032277807,0) (4.625928184e-07,0) (-3.831370518e-06,0) (-2.711142746e-06,0) (-2.393650938e-06,0) (1.517526643e-06,0) (4.079308649e-07,0) (9.838166031e-07,0) (-2.85806264e-06,0) (-1.98571424e-05,0) (5.56293275e-07,0) (-1.496586117e-06,0) (-6.720478032e-06,0) (-2.168404345e-19,0) (4.480721443e-05,0) (0.04632333236,0) (-0.001379381288,0) (-0.01073557061,0) (0,0) (2.884086942e-05,0) (0.002367327906,0) (0.01585694053,0) (-0.01995489753,0) (0,0) (-5.527808322e-07,0) (2.718459272e-06,0) (0.0001926337373,0) (-0.02909695075,0) (0,0) (-4.47964897e-09,0) (-9.694780846e-05,0) (0.0008472184569,0) (-0.0008468054569,0) (5.421010862e-20,0) (-2.241467871e-06,0) (-2.480320484e-06,0) (3.082178995e-05,0) (-0.004571428628,0) (1.355252716e-20,0) (-3.003345517e-07,0) (9.997786745e-06,0) (1.10553403e-06,0) (-0.0006493401365,0) (0,0) (-2.479739066e-07,0) (3.770913572e-05,0) (-0.0001390322279,0) (-0.0001175146047,0) (0,0) (-8.278796515e-08,0) (9.703906891e-06,0) (4.395115462e-06,0) (-0.0004388356181,0) (-3.966417036e-10,0) (0,0) (3.483258316e-08,0) (-1.062099363e-06,0) (-4.860039762e-05,0) (-8.470329473e-22,0) (-1.83956344e-08,0) (2.297772888e-06,0) (-2.83623588e-05,0) (-7.201757854e-06,0) (0,0) (-3.23672139e-08,0) (-3.897417542e-06,0) (4.070176231e-06,0) (-1.782127644e-06,0) (-1.71723915e-08,0) (0,0) (1.666924655e-06,0) (-8.914065602e-06,0) (-1.780002849e-05,0) (0,0) (-3.673872713e-09,0) (1.208697071e-06,0) (-1.088177979e-06,0) (-4.919808827e-07,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (-0.06251041084,0) (-0.02312716577,0) (0.08563757661,0) (-0.03295383896,0) (0.1276303109,0) (-0.0946764719,0) (0.1030608728,0) (-0.02550019993,0) (-0.07756067291,0) (0.0673281933,0) (-0.01850623727,0) (-0.04882195603,0) (-0.003708510075,0) (0.03411132104,0) (-0.03040281096,0) (0.01146538456,0) (0.005797797515,0) (-0.01726318207,0) (-0.0006699053532,0) (0.01111428551,0) (-0.01044438016,0) (0.007652943725,0) (-0.002009962988,0) (-0.005642980737,0) (-0.0004988181503,0) (0.003776045562,0) (-0.003277227412,0) (0.002131064227,0) (-0.0005395912934,0) (-0.001591472934,0) (-0.0002399694735,0) (0.00107812515,0) (-0.0008381556767,0) (0.0004388767921,0) (-0.000121633216,0) (-0.0003172435761,0) (-5.066889512e-05,0) (0.0002023292553,0) (-0.0001516603602,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.01463443893,0) (0.0502859929,0) (5.315895081e-05,0) (0.006332645988,0) (0.0006261451749,0) (0.001132762731,0) (0.0001182125239,0) (6.904177173e-05,0) (0.0001010741099,0) (3.162416853e-05,0) (3.679821814e-06,0) (7.147348455e-07,0) (9.262068479e-06,0) (-0.009313391119,0) (-0.02485528906,0) (2.158341618e-06,0) (-0.0009642227618,0) (-0.002752518914,0) (0.07418909208,0) (-7.592983434e-05,0) (-0.0002192988358,0) (0.01682223941,0) (-0.0001078732284,0) (-0.0002790327477,0) (0.003401814836,0) (-1.969725446e-05,0) (-7.352308847e-06,0) (0.005644203073,0) (-6.658775869e-06,0) (1.481098257e-05,0) (0.000313481762,0) (-2.012532792e-06,0) (7.210277511e-06,0) (0.0007750485214,0) (2.629829628e-06,0) (-8.184795682e-06,0) (6.597129124e-06,0) (-1.204185994e-06,0) (9.994640053e-07,0) (0.0003122689409,0) (-4.05238327e-07,0) (3.652865445e-08,0) (6.786751343e-07,0) (-1.303286861e-06,0) (2.952998217e-06,0) (4.80736646e-06,0) (-1.169838614e-06,0) (3.186477351e-06,0) (1.376395317e-05,0) (-6.663773466e-07,0) (2.4025461e-06,0) (1.489570409e-05,0) (0,0) (-0.0005631257223,0) (-0.01669247861,0) (-0.04613755182,0) (0.01626508487,0) (2.439454888e-19,0) (-8.490090396e-06,0) (-0.005142060373,0) (-0.01336677666,0) (0.03065388695,0) (4.607859233e-19,0) (-2.601810625e-07,0) (-1.103815192e-05,0) (-3.097608686e-05,0) (0.03451093673,0) (1.016439537e-20,0) (-3.774812831e-11,0) (-0.0002830758546,0) (-0.0008602105367,0) (0.0001283005263,0) (-1.355252716e-19,0) (-2.367183435e-07,0) (-4.268285589e-06,0) (-9.777383985e-07,0) (0.006761023897,0) (6.035109749e-21,0) (-6.8364659e-07,0) (-1.612492008e-05,0) (3.081896923e-05,0) (0.0002141657343,0) (1.482307658e-21,0) (-9.918547086e-07,0) (-2.565648968e-05,0) (-1.776462113e-06,0) (0.0006078986526,0) (-1.672890071e-20,0) (-4.959282655e-07,0) (-1.532305696e-05,0) (-4.336478179e-06,0) (0.0003342957791,0) (1.058791184e-22,0) (-2.228367745e-08,0) (-4.002309418e-07,0) (4.816661111e-07,0) (0.0001780711778,0) (2.382280164e-22,0) (-8.446585262e-08,0) (-1.506512155e-06,0) (1.160455761e-05,0) (1.071428823e-05,0) (-1.32348898e-23,0) (1.991555512e-09,0) (-3.123218372e-07,0) (-4.078876345e-06,0) (-1.21309979e-06,0) (-3.97046694e-22,0) (-9.18463487e-08,0) (-2.255974777e-06,0) (6.034671105e-06,0) (2.62148383e-05,0) (-6.6174449e-23,0) (-5.222643711e-08,0) (-1.339863123e-06,0) (5.215289271e-06,0) (1.954276747e-06,0) -(-0.003549268956,0) (-0.01343658413,0) (-0.0001521978757,0) (-0.001496542925,0) (-0.0003130291189,0) (-0.0002097587224,0) (-6.49330304e-05,0) (-5.265573046e-06,0) (-3.596734947e-05,0) (-2.229258458e-06,0) (-1.655710296e-06,0) (-1.099849986e-06,0) (-2.264328624e-06,0) (-0.02625611128,0) (0.03211320294,0) (0.003063780447,0) (0.004903291854,0) (-0.003682232749,0) (-0.01756345289,0) (0.0001924317751,0) (-0.0001384529431,0) (-0.005697965572,0) (0.0004391819773,0) (-0.000339842748,0) (-0.0004140257883,0) (-6.779946273e-06,0) (7.980037421e-06,0) (-0.001680857268,0) (1.12590218e-05,0) (-8.694108655e-06,0) (-6.689394366e-06,0) (-4.720166369e-06,0) (6.909971635e-06,0) (-0.0002119300653,0) (-7.660029649e-06,0) (-6.315433174e-06,0) (-1.237961572e-05,0) (-4.954443068e-07,0) (-7.960133638e-07,0) (-6.499462137e-05,0) (-4.636178842e-07,0) (-6.185385077e-08,0) (-1.451794079e-06,0) (8.328918145e-07,0) (-1.520070884e-06,0) (5.349167374e-07,0) (-9.861286637e-07,0) (-1.906935634e-06,0) (-4.174253742e-06,0) (-5.575045068e-07,0) (-9.86831296e-07,0) (-9.470422496e-07,0) (0,0) (0.002828880622,0) (-0.04641579736,0) (-0.001282046906,0) (0.05600852667,0) (-4.33680869e-19,0) (0.0007314810716,0) (0.01984557116,0) (-0.01589400852,0) (-0.005236486429,0) (0,0) (8.808045082e-06,0) (0.0002536017549,0) (-0.0001931366618,0) (-0.009468612536,0) (-5.421010862e-20,0) (2.225154949e-07,0) (0.001174190644,0) (-0.0008494051089,0) (-0.0003564038288,0) (0,0) (3.442811834e-05,0) (9.018351715e-06,0) (-3.090440545e-05,0) (-0.001490739516,0) (0,0) (4.609909213e-06,0) (-1.002012226e-05,0) (8.682331798e-06,0) (-0.0002109323487,0) (-5.082197684e-21,0) (3.659487597e-06,0) (-3.781049624e-05,0) (2.895905309e-05,0) (-6.605743182e-05,0) (-3.388131789e-21,0) (1.226847403e-06,0) (-9.727843585e-06,0) (8.073711052e-06,0) (-0.0001377292668,0) (8.320855081e-09,0) (0,0) (-3.491009668e-08,0) (-4.928831568e-07,0) (-1.562019084e-05,0) (-1.058791184e-22,0) (3.508562431e-07,0) (-2.303710515e-06,0) (-4.342307445e-06,0) (-4.529449878e-06,0) (2.117582368e-22,0) (5.141031785e-07,0) (-2.076654126e-06,0) (-4.074920738e-06,0) (5.103558646e-06,0) (2.617659823e-07,0) (0,0) (-1.67094328e-06,0) (-4.923886331e-06,0) (-1.818172343e-06,0) (0,0) (1.916922473e-07,0) (-1.21138326e-06,0) (-5.785828522e-07,0) (1.476275077e-06,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0.08286250691,0) (0.02431037598,0) (0.06871438145,0) (0.04930718395,0) (0.09326492082,0) (0.1255216072,0) (0.1061377676,0) (0.01064733091,0) (0.1028501942,0) (0.06073138578,0) (0.01278119823,0) (0.06474155448,0) (0.02720911517,0) (0.01856972471,0) (0.04031468813,0) (0.02489475137,0) (0.001098999625,0) (0.02289168401,0) (0.01002216348,0) (0.005704391145,0) (0.01384947954,0) (0.007451325099,0) (0.001045456362,0) (0.007482962107,0) (0.00281298841,0) (0.002121681757,0) (0.004345654447,0) (0.002153156807,0) (0.0002431658316,0) (0.002110392238,0) (0.000552027313,0) (0.0007100396512,0) (0.001111378275,0) (0.0003829383684,0) (9.474450534e-05,0) (0.0004206906223,0) (8.459498418e-05,0) (0.0001437766924,0) (0.0002010868071,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.01151542489,0) (0.03956862145,0) (4.182927054e-05,0) (0.004982979502,0) (0.0004926958775,0) (0.0008913388619,0) (9.301808191e-05,0) (5.432701179e-05,0) (7.953235012e-05,0) (2.488416119e-05,0) (2.895547407e-06,0) (5.624045764e-07,0) (7.288058967e-06,0) (0.01044095573,0) (0.03297631033,0) (0.0001606173415,0) (0.001446472844,0) (0.003652617632,0) (0.05815477759,0) (0.0001173327325,0) (0.0002910130741,0) (0.01321743319,0) (8.960512001e-05,0) (0.000370321967,0) (0.002702735249,0) (2.612306591e-05,0) (7.450636785e-06,0) (0.004441884828,0) (8.839061027e-06,0) (2.57761275e-05,0) (0.0002373242255,0) (2.671175919e-06,0) (1.079249771e-05,0) (0.0006061888617,0) (4.643013261e-07,0) (1.085909936e-05,0) (1.26714713e-05,0) (1.598089418e-06,0) (2.20050347e-07,0) (0.0002471462147,0) (5.375848748e-07,0) (1.919689554e-09,0) (8.5178208e-07,0) (1.732231442e-06,0) (4.45895687e-06,0) (2.579457553e-06,0) (1.552409348e-06,0) (1.30742986e-06,0) (1.287012362e-05,0) (8.842413405e-07,0) (1.047868629e-06,0) (1.304197819e-05,0) (-6.505213035e-19,0) (0.0009533201785,0) (0.01896428393,0) (0.06121497228,0) (0.0125521507,0) (-3.252606517e-19,0) (4.931195373e-06,0) (0.004185764753,0) (0.017738704,0) (0.02547954574,0) (-1.219727444e-18,0) (3.110674544e-07,0) (1.42753078e-05,0) (4.111206382e-05,0) (0.02715447401,0) (1.355252716e-20,0) (6.693630906e-11,0) (0.0004446572613,0) (0.001141388293,0) (5.175547801e-05,0) (-2.710505431e-20,0) (2.896624921e-07,0) (5.66493273e-06,0) (2.653219922e-06,0) (0.005319222649,0) (4.446922973e-21,0) (1.23469439e-06,0) (2.140210977e-05,0) (1.142126714e-05,0) (0.0001911500099,0) (4.235164736e-21,0) (9.22882494e-07,0) (3.405631521e-05,0) (2.500444833e-05,0) (0.000468632467,0) (-1.270549421e-20,0) (8.923175134e-07,0) (2.033674126e-05,0) (1.365401367e-06,0) (0.0002679810755,0) (-3.388131789e-21,0) (3.61685241e-08,0) (5.311357506e-07,0) (1.40319171e-07,0) (0.0001405914279,0) (7.676236084e-22,0) (5.585209319e-08,0) (1.999539627e-06,0) (1.227245632e-05,0) (6.248313256e-06,0) (2.64697796e-23,0) (1.724997877e-09,0) (3.122744061e-07,0) (5.411018301e-06,0) (1.415448965e-06,0) (8.999725065e-22,0) (1.989853278e-07,0) (2.994061638e-06,0) (2.564169571e-06,0) (2.415994883e-05,0) (-5.29395592e-23,0) (1.319703087e-07,0) (1.777963699e-06,0) (3.027655855e-06,0) (3.402615008e-06,0) -(0.00553605759,0) (0.02095803515,0) (0.0002373942959,0) (0.002334268809,0) (0.0004882546943,0) (0.0003271762106,0) (0.0001012808553,0) (8.213104159e-06,0) (5.610093811e-05,0) (3.477139478e-06,0) (2.582533942e-06,0) (1.715517459e-06,0) (3.531841012e-06,0) (0.03483145319,0) (0.02253296123,0) (0.003063275652,0) (0.003468356907,0) (0.004882815777,0) (0.02756244955,0) (0.0001539254955,0) (0.0001835979054,0) (0.008857709221,0) (0.0002891550959,0) (0.0004506771526,0) (0.0007129915528,0) (8.993340896e-06,0) (4.250060433e-06,0) (0.002625833686,0) (1.60314874e-05,0) (1.152525194e-05,0) (3.496369595e-06,0) (6.261644115e-06,0) (1.658833738e-05,0) (0.0003176578563,0) (1.01594509e-05,0) (1.337741548e-06,0) (5.129237847e-05,0) (6.572109132e-07,0) (2.20383207e-07,0) (0.0001039161773,0) (6.150600883e-07,0) (2.836013573e-06,0) (9.454592508e-07,0) (2.430401289e-06,0) (2.015296627e-06,0) (9.633593424e-08,0) (1.307998808e-06,0) (7.127991709e-07,0) (1.179406541e-05,0) (7.39491486e-07,0) (3.820896297e-07,0) (4.342680978e-06,0) (0,0) (0.002099748074,0) (0.06156955733,0) (7.114789054e-05,0) (0.05029811769,0) (0,0) (0.0005299594019,0) (0.01318363225,0) (0.02107802791,0) (0.01106375401,0) (2.168404345e-19,0) (7.058923414e-06,0) (0.0001891960434,0) (0.0002561189377,0) (0.01475511786,0) (0,0) (1.711878633e-07,0) (0.0009584736151,0) (0.001126274353,0) (0.0003682274248,0) (-2.710505431e-20,0) (2.7652106e-05,0) (8.673773527e-06,0) (4.097130545e-05,0) (0.002315825677,0) (0,0) (3.702756937e-06,0) (1.329608283e-05,0) (5.70924401e-06,0) (0.0003295600291,0) (2.541098842e-21,0) (2.946557407e-06,0) (5.015820037e-05,0) (0.0001264260713,0) (3.861267461e-05,0) (-6.776263578e-21,0) (9.875766575e-07,0) (1.29029779e-05,0) (2.779852115e-06,0) (0.0002263576027,0) (6.573952743e-09,0) (-4.235164736e-22,0) (4.630728464e-08,0) (4.275873786e-07,0) (2.47925857e-05,0) (3.705769144e-22,0) (2.784547616e-07,0) (3.05584326e-06,0) (1.806598778e-05,0) (2.003963724e-06,0) (4.235164736e-22,0) (4.120885495e-07,0) (1.368540015e-06,0) (5.405814955e-06,0) (5.188382974e-06,0) (2.103438461e-07,0) (-8.470329473e-22,0) (2.21632634e-06,0) (2.994934864e-06,0) (1.202228621e-05,0) (-1.058791184e-22,0) (1.473351266e-07,0) (1.60672927e-06,0) (3.824359347e-07,0) (1.483102828e-06,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (1.792468198e-05,0) (0.0015942032,0) (-0.1456492277,0) (-0.002288970907,0) (-0.04519188989,0) (1.349672706e-05,0) (0.01039062405,0) (-0.0008488810399,0) (-1.833908765e-06,0) (0.01281429128,0) (-0.0007629577502,0) (-2.261845447e-06,0) (-0.0009122039538,0) (-0.002265202916,0) (6.573132114e-07,0) (-6.462997956e-05,0) (-1.306935015e-05,0) (1.547562452e-08,0) (-0.0003155601183,0) (-0.000622467995,0) (1.928670741e-07,0) (0.0009669418372,0) (-7.371168797e-05,0) (-1.703585845e-07,0) (-9.854256778e-05,0) (-0.0002801178774,0) (7.871574193e-08,0) (0.0002283587626,0) (-1.837131481e-05,0) (-4.027933956e-08,0) (-2.384812022e-05,0) (-0.0001639726644,0) (4.130690869e-08,0) (0.000109272375,0) (-5.321956378e-06,0) (-1.92916415e-08,0) (-3.927606724e-06,0) (-5.36331914e-05,0) (1.42199673e-08,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.07546254497,0) (-0.1102916257,0) (-0.00234947156,0) (0.01401379174,0) (0.002871750125,0) (-0.002111406963,0) (-0.0005266747028,0) (0.0002176780091,0) (0.0002315114256,0) (-6.430989108e-05,0) (-2.170284735e-05,0) (-3.916024248e-06,0) (1.675001957e-05,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.02292890543,0) (-0.02156692623,0) (0.0004740621088,0) (7.361676329e-05,0) (-0.0001419997048,0) (-0.0002551409173,0) (0.0001553787796,0) (3.72847108e-05,0) (-7.802805272e-05,0) (-1.579718001e-05,0) (1.229415824e-05,0) (-9.719602051e-06,0) (-1.29483986e-05,0) (1.933695861e-06,0) (-0.03199064087,0) (-0.02299221789,0) (0.005912559672,0) (-1.447272914e-06,0) (-0.01738794072,0) (9.397260481e-05,0) (-1.564861596e-08,0) (0.0007387482168,0) (-3.585040966e-06,0) (9.420694424e-10,0) (5.436834395e-06,0) (1.247478056e-09,0) (-2.065379919e-05,0) (-0.0005520810976,0) (3.049198037e-05,0) (-4.763408986e-09,0) (-3.993073118e-05,0) (1.606572917e-09,0) (-5.581744661e-05,0) (0.0003202683844,0) (1.293499994e-09,0) (4.343975792e-06,0) (-0.0001240359772,0) (1.831224303e-10,0) (3.841493541e-06,0) (-0.0001108992143,0) (2.350780239e-10,0) (-1.286536979e-06,0) (1.161940272e-05,0) (2.387046427e-06,0) (-5.316445846e-11,0) (-3.410339354e-06,0) (2.467585767e-10,0) (2.105845968e-06,0) (-3.536965701e-05,0) (1.560307562e-10,0) (7.77950799e-07,0) (-2.080929823e-05,0) (5.204170428e-18,0) (0.004449681879,0) (9.875566194e-08,0) (0.0001906725663,0) (-0.09897492918,0) (-2.168404345e-19,0) (0.001163767271,0) (0.008173532278,0) (-2.023388919e-06,0) (-0.002208672077,0) (0,0) (1.441241402e-05,0) (0.000103430604,0) (-2.303572953e-08,0) (-0.0003443707994,0) (-1.694065895e-21,0) (3.546892966e-07,0) (5.564768243e-05,0) (-8.856789814e-09,0) (7.598111631e-06,0) (0,0) (5.613041285e-05,0) (4.007349356e-05,0) (-3.375795271e-08,0) (-0.0002635377927,0) (-6.776263578e-21,0) (7.519930189e-06,0) (1.577459173e-08,0) (5.364558862e-05,0) (0.0001286262247,0) (5.082197684e-21,0) (5.974666933e-06,0) (5.496789673e-09,0) (-0.0001421887402,0) (9.710076482e-05,0) (0,0) (2.003154677e-06,0) (1.839710283e-09,0) (-2.388494044e-05,0) (-8.647148753e-05,0) (1.340554525e-08,0) (-8.470329473e-22,0) (1.451967495e-11,0) (6.909246837e-06,0) (-2.592891019e-05,0) (0,0) (5.713850495e-07,0) (6.845034665e-10,0) (-1.519996164e-05,0) (1.399723361e-05,0) (-1.270549421e-21,0) (8.393777059e-07,0) (-4.576572648e-07,0) (8.775775864e-10,0) (-2.393998219e-05,0) (4.258067386e-07,0) (4.235164736e-22,0) (3.864907411e-10,0) (8.138608507e-06,0) (-3.005827211e-05,0) (-8.470329473e-22,0) (3.050299829e-07,0) (2.42261127e-10,0) (-2.173739453e-07,0) (-1.107271747e-05,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (-0.0004028470466,-0.0006977515524) (-0.04299386424,-0.07446755728) (-0.007090582965,-0.01228124995) (-0.01874283661,-0.03246354529) (-0.0002534798879,-0.0004390400445) (6.808460863e-06,1.179260014e-05) (0.001218491756,0.00211048963) (0.001120069607,0.001940017466) (-7.702992143e-07,-1.334197376e-06) (0.001420036301,0.002459575022) (0.003079871323,0.005334493612) (-1.497289225e-06,-2.593381012e-06) (-0.0009844018759,-0.001705034064) (0.0002005515599,0.0003473654913) (2.589526051e-07,4.485190688e-07) (-9.179394658e-05,-0.0001589917793) (1.709241288e-05,2.960492753e-05) (2.461341544e-08,4.263168609e-08) (-0.0005075475471,-0.0008790981388) (0.0001125653912,0.0001949689767) (1.306577615e-07,2.263058812e-07) (0.0001311012957,0.0002270741051) (0.0001706747231,0.0002956172919) (-9.963682546e-08,-1.72576044e-07) (-0.0001322101708,-0.0002289947331) (2.533065632e-05,4.387398374e-05) (3.534207956e-08,6.121427745e-08) (3.566399888e-05,6.177185807e-05) (3.686250359e-05,6.384772911e-05) (-2.392364366e-08,-4.143696631e-08) (-7.485395282e-05,-0.0001296508494) (7.155927413e-06,1.239442985e-05) (2.264899878e-08,3.922921662e-08) (9.107253788e-06,1.577422628e-05) (2.532776104e-05,4.386896896e-05) (-1.151244726e-08,-1.994014357e-08) (-1.899134758e-05,-3.289397892e-05) (3.912341003e-07,6.776373393e-07) (6.342969012e-09,1.09863446e-08) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.01653457404,0.02863872232) (-0.01481693702,-0.02566368773) (9.949706138e-05,0.0001723339655) (5.377938606e-05,9.314862906e-05) (-7.132203009e-05,-0.0001235333798) (-0.0002105623306,-0.0003647046547) (7.44529174e-05,0.0001289562357) (4.794629208e-05,8.304541391e-05) (-4.645234247e-05,-8.045781728e-05) (-2.113002537e-05,-3.65982775e-05) (6.508952823e-06,1.127383699e-05) (-2.782565142e-06,-4.819544201e-06) (-9.300181641e-06,-1.610838712e-05) (-0.01463285707,-0.0253448519) (2.616874833e-05,4.532560167e-05) (-0.002336540875,-0.00404700751) (0.001812179585,0.003138787114) (-2.272899548e-06,-3.936777498e-06) (-0.01319038986,-0.02284642541) (3.996000794e-05,6.921276402e-05) (-1.284453257e-08,-2.224738301e-08) (0.0004618297644,0.0007999126164) (-9.553607913e-07,-1.65473343e-06) (4.636983056e-10,8.031490246e-10) (5.524098285e-06,9.568018896e-06) (-1.086310209e-07,-1.881544475e-07) (-1.339854236e-05,-2.320695611e-05) (-0.000365141319,-0.0006324433165) (8.800808196e-10,1.524344694e-09) (2.84893946e-05,4.934507893e-05) (-0.0001517399338,-0.0002628212748) (-1.277053227e-10,-2.211921074e-10) (-2.208009141e-05,-3.824384015e-05) (0.0002236392519,0.0003873545469) (2.407892199e-08,4.170591628e-08) (-1.190479427e-09,-2.061970853e-09) (-3.154137007e-05,-5.46312555e-05) (-9.036164811e-11,-1.565109656e-10) (1.950696771e-06,3.378705918e-06) (-8.471154588e-05,-0.0001467247015) (-2.03076594e-11,-3.517389786e-11) (5.730243228e-08,9.925072411e-08) (-5.392190249e-06,-9.339547476e-06) (-3.658433149e-10,-6.336592089e-10) (-1.116528349e-06,-1.933883829e-06) (8.868127353e-06,1.536004714e-05) (-9.65577339e-11,-1.67242901e-10) (1.416117621e-06,2.452787669e-06) (-1.848146722e-05,-3.201084023e-05) (-4.754985347e-11,-8.235876209e-11) (1.592600314e-06,2.75846466e-06) (-1.728333755e-05,-2.993561877e-05) (1.517883041e-18,2.602085214e-18) (0.001421288335,0.002461743608) (-0.02866009467,-0.04964074012) (4.147852654e-05,7.184291538e-05) (-0.008490374326,-0.01470575971) (-8.131516294e-20,-1.626303259e-19) (-3.488083878e-05,-6.041538497e-05) (0.002604149643,0.004510519493) (-1.212696121e-06,-2.100451296e-06) (-0.001949014841,-0.003375792729) (5.082197684e-21,-1.355252716e-20) (-6.84819863e-07,-1.186142797e-06) (1.665488592e-05,2.88471086e-05) (-1.158052873e-08,-2.005806414e-08) (-0.0002638178336,-0.0004569458917) (-3.176373552e-22,-4.235164736e-22) (-3.213881516e-09,-5.566606076e-09) (1.951032757e-05,3.379287863e-05) (-5.044923245e-09,-8.738063381e-09) (1.02387175e-06,1.773397892e-06) (-7.623296525e-21,-2.371692252e-20) (-1.126062466e-07,-1.950397403e-07) (2.913830078e-10,5.046901739e-10) (1.392033993e-05,2.411073601e-05) (-0.0002210927651,-0.0003829439024) (-1.270549421e-21,0) (-6.274119749e-07,-1.086709418e-06) (1.575244907e-09,2.728404213e-09) (-2.951896633e-05,-5.112834946e-05) (0.0001121274987,0.0001942105247) (0,1.694065895e-21) (9.099122566e-07,1.576014259e-06) (-6.783673963e-09,-1.174966797e-08) (-4.63062193e-05,-8.020472453e-05) (9.03034606e-05,0.0001564101819) (2.01170325e-21,4.235164736e-22) (6.916940092e-07,1.198049167e-06) (-3.396487491e-09,-5.882888901e-09) (-8.287775515e-06,-1.435484827e-05) (-5.108477623e-05,-8.848142792e-05) (-1.905824131e-21,-1.694065895e-21) (5.895674323e-09,1.021160747e-08) (-1.532991602e-11,-2.655219342e-11) (2.033345566e-06,3.521857829e-06) (-2.71197858e-05,-4.697284689e-05) (6.088049308e-22,4.764560328e-22) (2.929347052e-08,5.073777927e-08) (-1.226739939e-10,-2.124775902e-10) (-8.152622709e-06,-1.412075675e-05) (1.185719849e-05,2.053727021e-05) (-5.29395592e-23,1.058791184e-22) (2.366362762e-11,4.098660533e-11) (2.030510961e-07,3.51694815e-07) (-5.516550356e-10,-9.554945499e-10) (-6.289741996e-06,-1.08941527e-05) (3.176373552e-22,-7.411538288e-22) (8.545604851e-08,1.480142178e-07) (-2.306127229e-10,-3.994329529e-10) (5.359197563e-06,9.282402468e-06) (-1.792223291e-05,-3.104221799e-05) (5.29395592e-23,6.352747104e-22) (4.463913472e-08,7.731724935e-08) (-1.130973968e-10,-1.958904374e-10) (1.567605963e-06,2.715173175e-06) (-8.255361831e-06,-1.429870613e-05) -(-0.02616144742,-0.04531295613) (-0.04013399248,-0.06951411408) (-0.002798563663,-0.004847254452) (0.004795750123,0.008306482873) (0.001429388891,0.002475774183) (-0.0006396043251,-0.001107827188) (-0.0002747846405,-0.0004759409585) (4.231850505e-05,7.329780085e-05) (9.721999344e-05,0.0001683899681) (-1.201980249e-05,-2.08189086e-05) (-1.024812465e-05,-1.775027258e-05) (-3.419704066e-06,-5.923101189e-06) (5.830153065e-06,1.009812133e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.2731656004,0) (0.01615280688,0) (-0.02892567571,0) (-0.00681892694,0) (0.00311081643,0) (-0.0001242414384,0) (9.142358452e-06,0) (0.0001499983368,0) (-0.0001504484689,0) (9.162783375e-05,0) (-7.145343949e-05,0) (6.119624794e-05,0) (-3.277313972e-05,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.2695462447,0) (0.02324389201,0) (-0.03424272561,0) (-0.004333899483,0) (0.002291534039,0) (4.332848919e-05,0) (0.0001066902242,0) (-2.294053818e-05,0) (1.892984583e-05,0) (-3.739677434e-05,0) (2.322309841e-05,0) (-2.861059199e-06,0) (6.880804962e-06,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.1208306479,0) (-0.009094799051,0) (-0.002843835608,0) (4.385357727e-05,0) (0.000101455379,0) (-2.497568383e-05,0) (2.882303202e-05,0) (4.591201175e-06,0) (1.25522063e-05,0) (2.574477926e-05,0) (9.479225358e-06,0) (3.178405029e-06,0) (8.85371498e-06,0) (1.738623898e-10,0) (-0.03001102387,0) (0.1997440824,0) (-0.0001221715915,0) (-1.474070406e-10,0) (-0.02386352647,0) (-3.161081699e-06,0) (8.892664166e-13,0) (-0.0003782332269,0) (5.069147332e-07,0) (1.658455888e-13,0) (1.114472307e-05,0) (-1.500172006e-14,0) (-4.573358943e-07,0) (5.007857078e-05,0) (2.271380542e-06,0) (1.920933975e-13,0) (-1.440347086e-05,0) (3.522406586e-14,0) (-3.493952407e-06,0) (4.251167502e-05,0) (1.184301307e-14,0) (8.749326325e-07,0) (-6.649639108e-06,0) (-7.916366537e-15,0) (-3.478571729e-06,0) (4.038721491e-05,0) (5.133587681e-14,0) (-1.83560613e-06,0) (3.443235877e-05,0) (6.48529231e-07,0) (4.700311397e-15,0) (3.713046695e-06,0) (-8.486490438e-15,0) (-1.351843834e-06,0) (9.719683219e-06,0) (-1.014688338e-14,0) (-1.550010209e-06,0) (1.674276403e-05,0) (-1.734723476e-18,0) (-0.000377473387,0) (-9.424695399e-12,0) (-0.008719428334,0) (0.06301289739,0) (-4.33680869e-19,0) (4.987671827e-06,0) (-0.00143187811,0) (-4.141268852e-10,0) (-0.005892254741,0) (1.694065895e-21,0) (1.859842766e-07,0) (4.229671091e-07,0) (-6.138141033e-13,0) (-6.644558929e-05,0) (8.470329473e-22,0) (-2.859798928e-08,0) (-8.511178364e-06,0) (1.891527865e-12,0) (-1.727510638e-05,0) (-8.470329473e-22,0) (3.662671398e-07,0) (6.488075772e-07,0) (-3.437640454e-13,0) (-2.522670586e-05,0) (0,0) (5.164395866e-08,0) (2.409182211e-13,0) (-3.633301909e-07,0) (1.293020884e-05,0) (1.058791184e-22,0) (-2.328816091e-08,0) (-6.937242073e-14,0) (4.52940866e-06,0) (-8.289612776e-06,0) (0,0) (-3.139926191e-09,0) (-5.790193243e-15,0) (-4.039157833e-07,0) (1.915478012e-06,0) (-8.160659869e-10,0) (8.470329473e-22,0) (-1.266989765e-15,0) (-9.077704595e-06,0) (2.704664962e-05,0) (0,0) (1.483552381e-08,0) (5.416556846e-14,0) (-5.200987241e-06,0) (1.074630952e-05,0) (0,0) (1.08671901e-08,0) (-1.266292565e-07,0) (-3.289808164e-14,0) (-9.136562887e-07,0) (-1.278080324e-08,0) (-4.235164736e-22,0) (-2.091688994e-14,0) (-5.329587217e-06,0) (9.978394523e-06,0) (6.352747104e-22,0) (-2.480045938e-08,0) (-3.21468247e-14,0) (6.229744764e-07,0) (4.252964659e-06,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (1.333601076e-05,0) (-0.003680518671,0) (0.01171062439,0) (0.004572524643,0) (-0.001931974151,0) (1.016225988e-05,0) (-0.003695330387,0) (0.003163975381,0) (-1.380679875e-06,0) (-0.002791090092,0) (0.002119938484,0) (-1.702859645e-06,0) (0.001336173644,0) (-0.001159269776,0) (4.948719016e-07,0) (5.602991138e-05,0) (-5.170347486e-05,0) (1.165106662e-08,0) (0.0004402708215,0) (-0.0003880446353,0) (1.452039402e-07,0) (-0.0002896023254,0) (0.0002398595806,0) (-1.282564785e-07,0) (0.0001483925852,0) (-0.0001273107664,0) (5.926285014e-08,0) (-7.692981325e-05,0) (6.523609042e-05,0) (-3.032478854e-08,0) (4.206025406e-05,0) (-3.160521265e-05,0) (3.109924057e-08,0) (-1.970181647e-05,0) (1.391253042e-05,0) (-1.452397306e-08,0) (7.57314583e-06,0) (-4.370287337e-06,0) (1.070626807e-08,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.004214043356,0) (0.006158998385,0) (0.0001312011809,0) (-0.0007825700286,0) (-0.000160366703,0) (0.0001179069761,0) (2.941101487e-05,0) (-1.215575976e-05,0) (-1.292825713e-05,0) (3.591247411e-06,0) (1.211948785e-06,0) (2.186819431e-07,0) (-9.353687809e-07,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.04520166927,0) (0.04251668573,0) (-0.0009345582901,0) (-0.0001451268835,0) (0.0002799358963,0) (0.0005029806326,0) (-0.0003063111856,0) (-7.350246924e-05,0) (0.0001538232273,0) (3.114230238e-05,0) (-2.423650254e-05,0) (1.916106456e-05,0) (2.552626129e-05,0) (1.454931824e-06,0) (-0.003157854218,0) (0.007512458075,0) (0.0005195851016,0) (-1.088795504e-06,0) (0.03421108654,0) (-7.146290097e-06,0) (-1.177097021e-08,0) (-0.001457959397,0) (-6.924319911e-07,0) (7.086881675e-10,0) (-1.038967993e-05,0) (9.381966906e-10,0) (-1.140640338e-05,0) (0.001087813846,0) (-1.904659493e-05,0) (-3.587190187e-09,0) (0.0001295991408,0) (1.20807976e-09,0) (5.088937078e-05,0) (-0.0006397323042,0) (9.728329649e-10,0) (-2.632356776e-05,0) (0.0001948452291,0) (1.377274291e-10,0) (-1.900743854e-05,0) (0.0002168844333,0) (1.768045232e-10,0) (1.738073434e-06,0) (-3.331910854e-05,0) (-2.35095165e-06,0) (-4.003305574e-11,0) (-1.444095283e-05,0) (1.856004633e-10,0) (-8.44366819e-06,0) (5.955031546e-05,0) (1.173764161e-10,0) (-3.04711323e-06,0) (3.220324779e-05,0) (-7.589415207e-19,0) (9.495322441e-05,0) (7.430118958e-08,0) (-0.00369666856,0) (0.02112509155,0) (6.505213035e-19,0) (6.333326623e-05,0) (0.001467685891,0) (-1.522189737e-06,0) (0.003983623004,0) (2.710505431e-20,0) (-1.128629076e-06,0) (1.486140405e-06,0) (-1.732577337e-08,0) (0.0006790959101,0) (8.470329473e-22,0) (-9.281519799e-09,0) (-5.628658706e-06,0) (-6.662351652e-09,0) (-1.747322974e-05,0) (4.065758147e-20,0) (-4.549907229e-06,0) (-1.145926933e-05,0) (-2.539534721e-08,0) (0.0005202223217,0) (-6.776263578e-21,0) (-6.099495322e-07,0) (1.186146372e-08,0) (1.038789438e-05,0) (-0.0002534353773,0) (0,0) (-5.02811008e-07,0) (4.132508469e-09,0) (0.000156366619,0) (-0.0002955184562,0) (0,0) (-1.679232679e-07,0) (1.383585823e-09,0) (-3.776354522e-05,0) (0.0001676407959,0) (-8.088281908e-10,0) (1.694065895e-21,0) (1.092177589e-11,0) (-1.716212179e-05,0) (5.082791124e-05,0) (8.470329473e-22,0) (-3.774756953e-08,0) (5.146970487e-10,0) (2.38628948e-05,0) (-5.030265065e-05,0) (4.235164736e-22,0) (-6.59283491e-08,0) (1.303346218e-06,0) (6.607505923e-10,0) (8.223005948e-06,0) (-3.476269999e-08,0) (0,0) (2.906841531e-10,0) (-2.422359532e-05,0) (4.450385645e-05,0) (0,0) (-7.6060703e-09,0) (1.822462067e-10,0) (6.185128518e-07,0) (3.673086727e-06,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (-1.352214984e-05,0) (-0.001516611742,0) (-0.1815201801,0) (0.001529805043,0) (-0.06184377689,0) (-1.018009989e-05,0) (0.0100894037,0) (0.002033057526,0) (1.382974519e-06,0) (0.01420621429,0) (0.001104706844,0) (1.705669872e-06,0) (0.0001243303037,0) (-0.00416102366,0) (-4.957044252e-07,0) (-2.976561439e-05,0) (-6.894765397e-05,0) (-1.167054917e-08,0) (2.109279228e-05,0) (-0.001212800252,0) (-1.454478514e-07,0) (0.0009931054366,0) (0.0001417158764,0) (1.284692074e-07,0) (1.74742353e-05,0) (-0.0004985374759,0) (-5.936260932e-08,0) (0.0002260156754,0) (4.076642451e-05,0) (3.037514902e-08,0) (1.036691613e-05,0) (-0.0002489763116,0) (-3.115196758e-08,0) (0.0001252345373,0) (6.832339961e-06,0) (1.454786252e-08,0) (2.35247391e-06,0) (-7.547512391e-05,0) (-1.072474815e-08,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.09590197642,0) (-0.1401646988,0) (-0.002985838421,0) (0.01780950172,0) (0.003649578912,0) (-0.002683292763,0) (-0.0006693273457,0) (0.0002766372549,0) (0.0002942175258,0) (-8.172856693e-05,0) (-2.758117892e-05,0) (-4.976700232e-06,0) (2.128685141e-05,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.01470014553,0) (0.01382695546,0) (-0.0003039299897,0) (-4.71970691e-05,0) (9.103863821e-05,0) (0.000163575563,0) (-9.961621062e-05,0) (-2.390391798e-05,0) (5.002522838e-05,0) (1.012786441e-05,0) (-7.88201233e-06,0) (6.23141672e-06,0) (8.301457933e-06,0) (-1.457628927e-06,0) (-0.04559196335,0) (-0.02299600676,0) (0.008358714646,0) (1.091418551e-06,0) (0.01108001222,0) (0.0001174809611,0) (1.180077153e-08,0) (-0.0004752201501,0) (-5.445124097e-06,0) (-7.103876161e-10,0) (-3.157105631e-06,0) (-9.404551985e-10,0) (-3.878017573e-05,0) (0.0003533999622,0) (2.141472362e-05,0) (3.593291973e-09,0) (7.639707444e-05,0) (-1.211070338e-09,0) (-2.325109286e-05,0) (-0.0002136717171,0) (-9.75273999e-10,0) (-2.050776465e-05,0) (2.993656717e-05,0) (-1.380484768e-10,0) (-1.387528677e-05,0) (6.936217859e-05,0) (-1.771963067e-10,0) (2.805955058e-08,0) (-1.784210166e-05,0) (8.180342229e-07,0) (4.010017397e-11,0) (-1.893631504e-05,0) (-1.860366417e-10,0) (-5.633722485e-06,0) (1.251832324e-05,0) (-1.176319828e-10,0) (-2.00923065e-06,0) (4.53804567e-06,0) (1.734723476e-18,0) (0.005994823377,0) (-7.444950055e-08,0) (-0.003435817589,0) (-0.1102116782,0) (-1.084202172e-18,0) (0.001606299893,0) (0.01230377284,0) (1.525748086e-06,0) (0.001045366821,0) (-1.355252716e-20,0) (1.798364778e-05,0) (0.0001386402286,0) (1.737100717e-08,0) (0.0002209886563,0) (-1.694065895e-21,0) (4.610365646e-07,0) (6.817192153e-05,0) (6.679547034e-09,0) (-7.354140116e-06,0) (0,0) (6.988489398e-05,0) (4.1665471e-05,0) (2.546341754e-08,0) (0.0001696441168,0) (1.016439537e-20,0) (9.362266021e-06,0) (-1.188796278e-08,0) (8.158151922e-05,0) (-8.232622071e-05,0) (6.776263578e-21,0) (7.420259143e-06,0) (-4.143616472e-09,0) (-3.256963719e-05,0) (-0.000166117142,0) (3.388131789e-21,0) (2.488480358e-06,0) (-1.386998724e-09,0) (-6.937063544e-05,0) (5.261433427e-05,0) (1.696781277e-08,0) (0,0) (-1.09460803e-11,0) (-7.964340301e-06,0) (1.633611477e-05,0) (1.058791184e-21,0) (7.199518179e-07,0) (-5.160270666e-10,0) (3.653434698e-06,0) (-3.163718351e-05,0) (4.235164736e-22,0) (1.047169952e-06,0) (6.944596701e-07,0) (-6.615208134e-10,0) (-2.354858994e-05,0) (5.29902449e-07,0) (-2.117582368e-22,0) (-2.91384935e-10,0) (-1.338045233e-05,0) (4.545817498e-06,0) (-6.352747104e-22,0) (3.968631531e-07,0) (-1.826512278e-10,0) (3.288624992e-07,0) (-1.102174207e-05,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (1.792468198e-05,0) (0.0015942032,0) (-0.1456492277,0) (-0.002288970907,0) (-0.04519188989,0) (1.349672706e-05,0) (0.01039062405,0) (-0.0008488810399,0) (-1.833908765e-06,0) (0.01281429128,0) (-0.0007629577502,0) (-2.261845447e-06,0) (-0.0009122039538,0) (-0.002265202916,0) (6.573132114e-07,0) (-6.462997956e-05,0) (-1.306935015e-05,0) (1.547562452e-08,0) (-0.0003155601183,0) (-0.000622467995,0) (1.928670741e-07,0) (0.0009669418372,0) (-7.371168797e-05,0) (-1.703585845e-07,0) (-9.854256778e-05,0) (-0.0002801178774,0) (7.871574193e-08,0) (0.0002283587626,0) (-1.837131481e-05,0) (-4.027933956e-08,0) (-2.384812022e-05,0) (-0.0001639726644,0) (4.130690869e-08,0) (0.000109272375,0) (-5.321956378e-06,0) (-1.92916415e-08,0) (-3.927606724e-06,0) (-5.36331914e-05,0) (1.42199673e-08,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.07546254497,0) (-0.1102916257,0) (-0.00234947156,0) (0.01401379174,0) (0.002871750125,0) (-0.002111406963,0) (-0.0005266747028,0) (0.0002176780091,0) (0.0002315114256,0) (-6.430989108e-05,0) (-2.170284735e-05,0) (-3.916024248e-06,0) (1.675001957e-05,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.02292890543,0) (-0.02156692623,0) (0.0004740621088,0) (7.361676329e-05,0) (-0.0001419997048,0) (-0.0002551409173,0) (0.0001553787796,0) (3.72847108e-05,0) (-7.802805272e-05,0) (-1.579718001e-05,0) (1.229415824e-05,0) (-9.719602051e-06,0) (-1.29483986e-05,0) (1.933695861e-06,0) (-0.03199064087,0) (-0.02299221789,0) (0.005912559672,0) (-1.447272914e-06,0) (-0.01738794072,0) (9.397260481e-05,0) (-1.564861596e-08,0) (0.0007387482168,0) (-3.585040966e-06,0) (9.420694424e-10,0) (5.436834395e-06,0) (1.247478056e-09,0) (-2.065379919e-05,0) (-0.0005520810976,0) (3.049198037e-05,0) (-4.763408986e-09,0) (-3.993073118e-05,0) (1.606572917e-09,0) (-5.581744661e-05,0) (0.0003202683844,0) (1.293499994e-09,0) (4.343975792e-06,0) (-0.0001240359772,0) (1.831224303e-10,0) (3.841493541e-06,0) (-0.0001108992143,0) (2.350780239e-10,0) (-1.286536979e-06,0) (1.161940272e-05,0) (2.387046427e-06,0) (-5.316445846e-11,0) (-3.410339354e-06,0) (2.467585767e-10,0) (2.105845968e-06,0) (-3.536965701e-05,0) (1.560307562e-10,0) (7.77950799e-07,0) (-2.080929823e-05,0) (5.204170428e-18,0) (0.004449681879,0) (9.875566195e-08,0) (0.0001906725663,0) (-0.09897492918,0) (-2.168404345e-19,0) (0.001163767271,0) (0.008173532278,0) (-2.023388919e-06,0) (-0.002208672077,0) (-6.776263578e-21,0) (1.441241402e-05,0) (0.000103430604,0) (-2.303572953e-08,0) (-0.0003443707994,0) (-3.388131789e-21,0) (3.546892966e-07,0) (5.564768243e-05,0) (-8.856789814e-09,0) (7.598111631e-06,0) (0,0) (5.613041285e-05,0) (4.007349356e-05,0) (-3.375795271e-08,0) (-0.0002635377927,0) (0,0) (7.519930189e-06,0) (1.577459173e-08,0) (5.364558862e-05,0) (0.0001286262247,0) (0,0) (5.974666933e-06,0) (5.496789673e-09,0) (-0.0001421887402,0) (9.710076482e-05,0) (-3.388131789e-21,0) (2.003154677e-06,0) (1.839710283e-09,0) (-2.388494044e-05,0) (-8.647148753e-05,0) (1.340554525e-08,0) (0,0) (1.451967495e-11,0) (6.909246837e-06,0) (-2.592891019e-05,0) (4.235164736e-22,0) (5.713850495e-07,0) (6.845034665e-10,0) (-1.519996164e-05,0) (1.399723361e-05,0) (-8.470329473e-22,0) (8.393777059e-07,0) (-4.576572648e-07,0) (8.775775864e-10,0) (-2.393998219e-05,0) (4.258067386e-07,0) (1.270549421e-21,0) (3.864907411e-10,0) (8.138608507e-06,0) (-3.005827211e-05,0) (-4.235164736e-22,0) (3.050299829e-07,0) (2.42261127e-10,0) (-2.173739453e-07,0) (-1.107271747e-05,0) -(0.2370734683,0) (0.0006670533688,0) (0.004066218674,0) (0.0006820777545,0) (0.0005956356081,0) (8.044155541e-06,0) (9.655870575e-06,0) (6.831873609e-05,0) (4.382157398e-05,0) (1.591626787e-05,0) (1.652759785e-05,0) (1.94939596e-05,0) (1.491606603e-05,0) (3.877437899e-09,0) (0.000104543173,0) (0.3087228188,0) (0.0001062601308,0) (0.02189791074,0) (1.451237323e-09,0) (0.00101721631,0) (6.767884142e-05,0) (3.270019455e-11,0) (0.002703808895,0) (4.554381508e-05,0) (7.902103776e-11,0) (3.058225334e-05,0) (0.0002763177339,0) (1.071720204e-11,0) (1.677877475e-07,0) (1.554212663e-07,0) (1.046209416e-14,0) (9.935797639e-06,0) (6.792423503e-05,0) (2.685856042e-12,0) (0.0001254778854,0) (5.197168565e-06,0) (3.878416987e-12,0) (3.452071693e-06,0) (3.698293816e-05,0) (1.425830819e-12,0) (2.421919495e-05,0) (1.387963126e-06,0) (7.687789817e-13,0) (1.030262135e-06,0) (3.786694817e-05,0) (1.535265483e-12,0) (3.118113231e-05,0) (2.989431376e-07,0) (8.846582533e-13,0) (1.823523549e-07,0) (2.000685348e-05,0) (1.00557303e-12,0) (3.415236843e-18,0) (-4.33680869e-19,0) (0,0) (0.03787629397,0) (0.1290043371,0) (9.757819552e-19,0) (1.626303259e-19,0) (1.734723476e-18,0) (0.01166407464,0) (0.02777002614,0) (0,0) (-1.905824131e-21,0) (-6.776263578e-21,0) (0.0001520492622,0) (9.479976155e-05,0) (3.726944968e-20,0) (-1.016439537e-20,0) (0,0) (0.0005765989928,0) (0.002012299337,0) (3.30872245e-24,0) (-2.067951531e-24,0) (4.135903063e-25,0) (2.968303438e-07,0) (9.832055907e-08,0) (-1.058791184e-22,0) (3.97046694e-23,0) (-1.389663429e-22,0) (3.860134312e-07,0) (9.979758691e-06,0) (-1.694065895e-21,0) (4.235164736e-22,0) (-2.01170325e-21,0) (3.578750522e-05,0) (7.498366886e-05,0) (-2.488159283e-21,0) (5.29395592e-23,0) (8.470329473e-22,0) (1.02162398e-05,0) (6.854234909e-05,0) (-1.058791184e-22,0) (-9.264422861e-23,0) (0,0) (9.779609685e-07,0) (8.699365442e-06,0) (-2.117582368e-22,0) (-5.29395592e-23,0) (-1.32348898e-23,0) (4.056902711e-06,0) (8.419618364e-06,0) (0,0) (1.98523347e-23,0) (-1.032321404e-21,0) (5.202177913e-06,0) (1.997650936e-05,0) (5.29395592e-23,0) (-3.176373552e-22,0) (4.764560328e-22,0) (2.701400034e-06,0) (1.519803296e-05,0) (2.117582368e-22,0) (-3.30872245e-23,0) (4.566036981e-22,0) (2.43172997e-06,0) (8.192639034e-06,0) -(0.4945189387,0) (0.307421443,0) (0.1319654046,0) (0.03941143222,0) (0.01673841645,0) (0.005001509027,0) (0.002982067969,0) (0.0008721944031,0) (0.0006739086684,0) (0.0001662005827,0) (0.000162668234,0) (2.726728507e-05,0) (3.849627959e-05,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.09496554104,0) (0.02219350733,0) (0.0009466734748,0) (2.321681126e-06,0) (4.129794632e-05,0) (0.0001989658342,0) (0.0002383724452,0) (0.0001692599573,0) (0.0001085254047,0) (7.176902103e-05,0) (5.852636604e-05,0) (5.506831979e-05,0) (4.747128362e-05,0) (1.073506527e-10,0) (0.04541795873,0) (0.1725741146,0) (0.01007922853,0) (4.289735641e-10,0) (0.01096928929,0) (5.737094057e-05,0) (1.333779821e-12,0) (6.161287463e-05,0) (4.444852922e-08,0) (1.969247442e-15,0) (4.145795013e-08,0) (1.730393003e-13,0) (0.0001003702013,0) (0.0001160749593,0) (5.79959204e-05,0) (1.968726167e-12,0) (0.000456033966,0) (4.122042944e-13,0) (0.0001878179395,0) (0.0003229003659,0) (1.646882568e-13,0) (1.410595769e-05,0) (0.0002999456081,0) (5.102445159e-14,0) (6.696096688e-05,0) (0.0001183515028,0) (8.984760364e-14,0) (5.83628165e-07,0) (0.0001427988773,0) (2.344464954e-06,0) (1.402501907e-15,0) (0.0001207276869,0) (4.655188215e-14,0) (6.221369806e-06,0) (0.0001060713667,0) (3.292207679e-14,0) (1.583941041e-06,0) (9.971418463e-05,0) (-4.33680869e-18,0) (0.009429544937,0) (1.5840107e-13,0) (0.0005109923468,0) (0.194759507,0) (2.710505431e-19,0) (0.002555581156,0) (0.005067391794,0) (1.942355678e-10,0) (0.0004409201741,0) (-3.388131789e-21,0) (2.942625463e-05,0) (5.654394068e-05,0) (2.071868796e-12,0) (8.037295849e-06,0) (-1.058791184e-22,0) (7.348914505e-07,0) (3.230829218e-06,0) (6.964797294e-14,0) (1.567816421e-07,0) (-1.355252716e-20,0) (0.000113937913,0) (0.0001851425888,0) (2.781457311e-11,0) (2.999024015e-05,0) (-6.776263578e-21,0) (1.52722285e-05,0) (1.871511688e-11,0) (0.0005040683449,0) (5.02024039e-05,0) (-1.016439537e-20,0) (1.211469523e-05,0) (6.023879719e-13,0) (0.0001599166819,0) (0.0002441829949,0) (-1.355252716e-20,0) (4.063106018e-06,0) (2.623064153e-13,0) (0.000205223284,0) (3.30332097e-05,0) (2.733646717e-08,0) (8.470329473e-22,0) (4.552654708e-15,0) (0.000111644296,0) (2.711731612e-05,0) (-6.776263578e-21,0) (1.172473665e-06,0) (1.533275629e-13,0) (1.278860789e-05,0) (9.776751272e-05,0) (2.541098842e-21,0) (1.709717327e-06,0) (1.530464362e-07,0) (1.424655546e-13,0) (0.0001104626914,0) (8.6197615e-07,0) (-2.964615315e-21,0) (6.739760524e-14,0) (2.211632354e-05,0) (7.515207224e-05,0) (4.65868121e-21,0) (6.315078598e-07,0) (3.652790367e-14,0) (1.2355385e-07,0) (8.266795114e-05,0) -(-0.12111549,-0.2097781823) (-0.0005607657229,-0.0009712747232) (-0.002000518664,-0.003464999967) (-0.0004075616168,-0.0007059174275) (-0.0002729746153,-0.0004728059028) (-1.278868443e-06,-2.21506512e-06) (-6.037625137e-06,-1.045747349e-05) (-3.526857492e-05,-6.108696368e-05) (-1.932297171e-05,-3.346836876e-05) (-7.415213061e-06,-1.284352577e-05) (-8.572210917e-06,-1.484750484e-05) (-9.354879707e-06,-1.620312695e-05) (-6.899174245e-06,-1.194972032e-05) (-8.71432143e-08,-1.509364747e-07) (-0.002819411596,-0.004883364132) (0.01502942923,0.02603173503) (0.0008700924344,0.001507044304) (0.0001228246921,0.0002127386071) (7.320806353e-10,1.268000856e-09) (0.0001192873191,0.0002066116974) (-8.929992509e-05,-0.0001546720074) (1.373510757e-11,2.378990418e-11) (0.000299626932,0.0005189690695) (-0.0001838490925,-0.0003184359691) (5.231009419e-11,9.060374093e-11) (3.300273741e-05,5.716241798e-05) (-2.446401255e-05,-4.237291269e-05) (4.222108033e-12,7.312905615e-12) (2.383089031e-07,4.12763128e-07) (-2.03263699e-07,-3.52063054e-07) (1.663957862e-14,2.882059555e-14) (1.598075748e-05,2.767948389e-05) (-1.228323086e-05,-2.127517993e-05) (1.819532649e-12,3.151522991e-12) (1.701272271e-05,2.946690011e-05) (-1.203371311e-05,-2.08430025e-05) (2.268351531e-12,3.928900099e-12) (4.63149072e-06,8.021977241e-06) (-3.344313848e-06,-5.792521501e-06) (6.401746952e-13,1.1088151e-12) (3.782440103e-06,6.551378435e-06) (-2.784982798e-06,-4.823731704e-06) (4.566111209e-13,7.908736621e-13) (3.233764025e-06,5.601043591e-06) (-1.652550646e-06,-2.862301681e-06) (8.418017035e-13,1.458043318e-12) (2.598776547e-06,4.501213017e-06) (-1.422702445e-06,-2.464192919e-06) (5.27927159e-13,9.14396661e-13) (8.817371997e-07,1.527213629e-06) (-1.45942524e-07,-2.527798665e-07) (4.485466415e-13,7.769055717e-13) (2.331034671e-18,7.806255642e-18) (8.67361738e-19,-1.734723476e-18) (0,1.301042607e-18) (-0.02060375576,-0.0356867518) (0.06045012766,0.1047026924) (-1.084202172e-19,-2.168404345e-19) (-1.084202172e-19,-4.33680869e-19) (4.33680869e-19,0) (-0.005297526462,-0.009175584986) (0.01558567133,0.02699517461) (0,0) (0,-1.694065895e-21) (0,-6.776263578e-21) (-2.702014961e-05,-4.680027195e-05) (0.0001359807469,0.0002355255625) (1.355252716e-20,6.776263578e-21) (-6.776263578e-21,0) (3.388131789e-21,-1.355252716e-20) (-0.0003173531288,-0.0005496717431) (0.0009319561715,0.001614195439) (1.32348898e-23,-2.64697796e-23) (9.926167351e-24,2.64697796e-23) (-6.6174449e-24,1.32348898e-23) (1.10762366e-08,1.918460455e-08) (-6.716194071e-07,-1.163278936e-06) (0,-1.058791184e-22) (-1.32348898e-23,-7.940933881e-23) (-1.852884572e-22,-1.058791184e-22) (-4.754822232e-07,-8.235593687e-07) (2.065183874e-06,3.577003397e-06) (0,0) (4.235164736e-22,-5.29395592e-22) (8.470329473e-22,2.541098842e-21) (-1.517604603e-05,-2.628568279e-05) (4.50724991e-05,7.806785847e-05) (-1.588186776e-21,-2.223461487e-21) (-2.117582368e-22,-1.058791184e-22) (0,4.235164736e-22) (-7.538565652e-06,-1.305717873e-05) (2.367733081e-05,4.101033996e-05) (5.95570041e-23,3.97046694e-23) (7.940933881e-23,1.058791184e-22) (0,0) (-8.103564901e-07,-1.403578613e-06) (2.67611154e-06,4.635161153e-06) (-2.64697796e-22,-3.176373552e-22) (-1.852884572e-22,-2.117582368e-22) (0,0) (-1.711417653e-06,-2.964262327e-06) (5.087485249e-06,8.811782933e-06) (-1.058791184e-22,4.235164736e-22) (-1.98523347e-23,-2.117582368e-22) (-2.117582368e-22,5.29395592e-23) (-2.996110319e-06,-5.189415297e-06) (8.841353425e-06,1.531367334e-05) (5.29395592e-23,0) (1.058791184e-22,0) (-3.176373552e-22,-4.235164736e-22) (-1.848699751e-06,-3.202041897e-06) (5.660846895e-06,9.804874436e-06) (-1.058791184e-22,0) (3.30872245e-23,-5.95570041e-23) (2.34919294e-22,-1.588186776e-22) (-1.315863121e-06,-2.279141781e-06) (3.859226647e-06,6.68437663e-06) -(-0.1083538861,-0.187674436) (0.04130000015,0.07153369861) (-0.005588563056,-0.009679675154) (0.0001512454779,0.0002619648521) (-0.0004157109044,-0.0007200324077) (0.0004987808677,0.0008639138046) (-0.0004215574793,-0.0007301589725) (0.0001921116781,0.0003327471872) (-0.000135218537,-0.0002342053762) (5.460781335e-05,9.458350721e-05) (-4.878621887e-05,-8.45002098e-05) (1.937500693e-05,3.35584964e-05) (-2.137444623e-05,-3.702162685e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.1083538861,-0.187674436) (0.04130000015,0.07153369861) (-0.005588563056,-0.009679675154) (0.0001512454779,0.0002619648521) (-0.0004157109044,-0.0007200324077) (0.0004987808677,0.0008639138046) (-0.0004215574793,-0.0007301589725) (0.0001921116781,0.0003327471872) (-0.000135218537,-0.0002342053762) (5.460781335e-05,9.458350721e-05) (-4.878621887e-05,-8.45002098e-05) (1.937500693e-05,3.35584964e-05) (-2.137444623e-05,-3.702162685e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.1395541466,0.2417148723) (-0.01357903408,0.02351957694) (0.01423099906,-0.02464881341) (0.004074510377,-0.007057258989) (-0.001425660096,0.00246931572) (1.975203663e-05,-3.4211531e-05) (-5.71653615e-06,9.901331055e-06) (-7.743450601e-05,0.0001341204987) (6.633973277e-05,-0.0001149037877) (-4.268839373e-05,7.393846683e-05) (3.706007127e-05,-6.418992637e-05) (-2.936722707e-05,5.086552936e-05) (1.515866188e-05,-2.625557255e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.05906019127,0.102295252) (0.003122660326,-0.005408606339) (0.001450134843,-0.002511707226) (-1.663179087e-05,2.88071068e-05) (-5.691193611e-05,9.85743649e-05) (4.320980191e-06,-7.484157229e-06) (-1.508217198e-05,2.612308816e-05) (-5.052939195e-06,8.751947413e-06) (-3.798238809e-06,6.578742597e-06) (-1.228729791e-05,2.128222427e-05) (-6.964894952e-06,1.206355193e-05) (-2.032950537e-06,3.521173619e-06) (-3.820457386e-06,6.6172263e-06) (0.005175592884,-0.008964389834) (5.304917151e-09,-9.188386021e-09) (-0.09224965312,0.1597810862) (-0.0001541485888,0.0002669931877) (1.707308574e-10,-2.957145206e-10) (0.01114537494,-0.01930435567) (2.347871873e-06,-4.066633374e-06) (-7.561107841e-13,1.309622251e-12) (0.000246935527,-0.000427704879) (-1.387241408e-07,2.402772602e-07) (-6.941934646e-14,1.20237835e-13) (-5.376045784e-06,9.311584441e-06) (-7.712042081e-13,1.335764869e-12) (8.292123503e-08,-1.436237921e-07) (-4.795061678e-05,8.305290452e-05) (-4.456588466e-15,7.71903793e-15) (-4.108193539e-07,7.115599937e-07) (3.307487654e-06,-5.728736662e-06) (2.981602561e-15,-5.164290423e-15) (1.947461171e-06,-3.373101694e-06) (-2.748230891e-05,4.760075535e-05) (-1.069619489e-08,1.8526353e-08) (7.219598505e-15,-1.25047114e-14) (3.005871758e-06,-5.206322606e-06) (-2.336955431e-15,4.047724815e-15) (8.74177065e-07,-1.514119091e-06) (-1.502558212e-05,2.602507165e-05) (1.117880202e-16,-1.936207203e-16) (2.783083705e-06,-4.820442378e-06) (-2.210803363e-05,3.82922375e-05) (1.37753808e-13,-2.385965945e-13) (4.150521297e-07,-7.188913765e-07) (-5.857532454e-06,1.014554382e-05) (-2.638813198e-15,4.570558867e-15) (4.927792809e-07,-8.535187514e-07) (-3.782800919e-06,6.552003387e-06) (-2.398416777e-15,4.154179493e-15) (1.233592183e-06,-2.136644337e-06) (-8.538607507e-06,1.478930203e-05) (5.421010862e-19,-4.662069342e-18) (0.0007200330219,-0.001247133777) (-0.0001878309588,0.0003253327639) (3.990106785e-09,-6.911067683e-09) (-0.03195096622,0.05534069685) (6.640738306e-19,-3.252606517e-19) (-2.330564706e-05,4.036656481e-05) (0.0007153114482,-0.001238955771) (2.662361387e-10,-4.611345192e-10) (0.003245375324,-0.005621154951) (-8.205631677e-22,-1.058791184e-22) (6.095239344e-10,-1.055726423e-09) (-3.44128403e-08,5.960478783e-08) (7.464270367e-14,-1.292849554e-13) (1.059566382e-05,-1.835222807e-05) (2.117582368e-22,-2.117582368e-21) (-1.888476037e-09,3.270936446e-09) (8.862191923e-06,-1.534976668e-05) (-1.368859681e-12,2.370934516e-12) (6.318959677e-06,-1.094475921e-05) (-6.021874859e-22,3.044024654e-22) (7.446402637e-11,-1.28975477e-10) (-1.079534492e-15,1.869808926e-15) (-7.090290898e-08,1.228074408e-07) (4.706497865e-06,-8.151893428e-06) (-1.058791184e-22,-1.164670302e-21) (1.33340407e-08,-2.309523596e-08) (-4.12556043e-14,7.145680375e-14) (6.800887061e-06,-1.177948193e-05) (-1.445470366e-05,2.503628115e-05) (6.6174449e-23,-1.488925103e-22) (1.436655647e-09,-2.488360574e-09) (2.776996631e-14,-4.80989927e-14) (3.119865907e-07,-5.403766263e-07) (-1.632104712e-06,2.826888284e-06) (-1.257314531e-22,4.367513634e-22) (-4.064786482e-09,7.040416709e-09) (2.252897883e-14,-3.90213359e-14) (-3.398791457e-07,5.886879487e-07) (1.948638818e-06,-3.375141438e-06) (3.441071348e-22,-1.111730743e-21) (2.900715708e-10,-5.024186985e-10) (-8.107032806e-16,1.404180303e-15) (1.611039988e-06,-2.790403113e-06) (-1.070561973e-05,1.854267731e-05) (3.97046694e-23,-1.32348898e-22) (6.102102725e-09,-1.056915195e-08) (1.654781322e-14,-2.866165396e-14) (4.947043268e-06,-8.568530288e-06) (-1.021949476e-05,1.770068415e-05) (2.55909002e-24,-1.80945759e-24) (4.489881054e-12,-7.776702106e-12) (-2.191745498e-09,3.79621456e-09) (-9.634049096e-17,1.668666263e-16) (-1.590204424e-08,2.754314857e-08) (-1.124965633e-22,2.316105715e-22) (3.879285887e-09,-6.719120253e-09) (-8.60107949e-15,1.489750647e-14) (1.863843086e-06,-3.228270922e-06) (-3.791159118e-06,6.566480212e-06) (9.264422861e-23,-1.191140082e-22) (8.070512659e-09,-1.397853797e-08) (-9.550114633e-15,1.654128365e-14) (1.512581421e-06,-2.619867872e-06) (-4.456953971e-06,7.719670724e-06) -(-0.1378654839,0.2387900227) (-0.0169245535,0.02931418655) (0.0167882116,-0.02907803547) (0.002856832998,-0.004948179901) (-0.001021264037,0.001768881199) (-6.261071557e-05,0.0001084449405) (-5.097302548e-05,8.828786994e-05) (5.211057454e-06,-9.025816272e-06) (-1.563957284e-05,2.708853477e-05) (1.958875962e-05,-3.392872691e-05) (-7.901662008e-06,1.368608006e-05) (1.11827671e-06,-1.936912078e-06) (-3.986478569e-06,6.904783425e-06) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (-0.0002997192672,0.0005191289988) (0.09925944203,-0.1719223967) (0.0005701036329,-0.0009874484577) (0.03744131566,-0.06485026102) (-1.08363822e-05,1.876916455e-05) (5.12637978e-06,-8.879150237e-06) (-0.0004333454456,0.000750576329) (-0.004174757703,0.007230892451) (-5.79928862e-07,1.004466254e-06) (-0.0003092991382,0.0005357218221) (-0.008557666191,0.01482231264) (-1.127253589e-06,1.952460489e-06) (0.001441927363,-0.002497491453) (0.0001026368809,-0.0001777722925) (1.949578464e-07,-3.376768953e-07) (7.957927152e-05,-0.0001378353415) (6.761905753e-05,-0.0001171196432) (1.853059582e-08,-3.209593345e-08) (0.0007081325001,-0.001226521469) (7.017291895e-05,-0.0001215430609) (9.836838076e-08,-1.703790333e-07) (-3.926527806e-05,6.800945657e-05) (-0.000555379596,0.0009619456778) (-7.501276439e-08,1.299259191e-07) (0.0001990917172,-0.0003448369695) (1.15125293e-05,-1.994028567e-05) (2.660804959e-08,-4.608649378e-08) (-1.201453687e-05,2.080978829e-05) (-0.0001308978504,0.0002267217275) (-1.801120482e-08,3.119632186e-08) (0.0001320177961,-0.0002286615304) (1.379282385e-06,-2.388987168e-06) (1.705203038e-08,-2.953498298e-08) (-1.642038463e-06,2.844094046e-06) (-6.621122398e-05,0.000114681204) (-8.667301526e-09,1.501220661e-08) (3.661879991e-05,-6.342562196e-05) (3.18796139e-08,-5.521711101e-08) (4.775645764e-09,-8.271661102e-09) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.000923337689,0.00159926779) (0.0008274199475,-0.001433133388) (-5.55619918e-06,9.623619276e-06) (-3.00319403e-06,5.201684645e-06) (3.982825217e-06,-6.898455633e-06) (1.175840002e-05,-2.036614625e-05) (-4.157662878e-06,7.201283346e-06) (-2.677457455e-06,4.637492347e-06) (2.594031055e-06,-4.492993584e-06) (1.179960774e-06,-2.043752012e-06) (-3.634784569e-07,6.295631548e-07) (1.553863596e-07,-2.691370696e-07) (5.193486208e-07,-8.995381981e-07) (0.03245066753,-0.05620620491) (1.973358379e-05,-3.417956974e-05) (0.003074044889,-0.005324401932) (-0.003612640396,0.006257276715) (-1.712840758e-06,2.966727218e-06) (0.0006726502744,-0.001165064451) (-7.897721341e-05,0.0001367925463) (-9.66799994e-09,1.67454671e-08) (-2.492556751e-05,4.317234933e-05) (2.421005667e-06,-4.19330482e-06) (3.489741388e-10,-6.044409389e-10) (-3.762967448e-07,6.517650808e-07) (-8.094592238e-08,1.402024502e-07) (3.136037117e-05,-5.431775621e-05) (2.045657133e-05,-3.54318209e-05) (6.618798767e-10,-1.146409575e-09) (-2.146830323e-05,3.718419194e-05) (8.675245077e-07,-1.502596524e-06) (-9.606141336e-11,1.663832486e-10) (1.456791745e-05,-2.523237319e-05) (-1.076291122e-05,1.864190907e-05) (1.04629614e-07,-1.812238073e-07) (-8.956602146e-10,1.551328998e-09) (2.547207111e-05,-4.411892133e-05) (-6.797765478e-11,1.177407519e-10) (6.283968979e-06,-1.088415354e-05) (5.35510915e-06,-9.275321128e-06) (-1.527935823e-11,2.646462476e-11) (1.016270017e-06,-1.760231303e-06) (2.862275528e-06,-4.95760664e-06) (-2.747461897e-10,4.758743597e-10) (7.443505779e-07,-1.28925302e-06) (4.771932706e-06,-8.265229897e-06) (-7.264500146e-11,1.258248334e-10) (1.575517403e-06,-2.728876191e-06) (4.761717681e-06,-8.247536954e-06) (-3.577407697e-11,6.196251891e-11) (1.541553266e-06,-2.67004858e-06) (3.194233381e-06,-5.532574508e-06) (0,-2.602085214e-18) (-0.002729426434,0.004727505259) (0.06324356095,-0.1095410608) (3.126494954e-05,-5.415248111e-05) (0.0002650767828,-0.0004591264557) (5.421010862e-20,1.084202172e-19) (0.0001065037686,-0.0001844699384) (-0.006663150733,0.01154091561) (-9.127041456e-07,1.580849952e-06) (0.0002416297276,-0.0004185149648) (-4.235164736e-22,8.470329473e-22) (1.483669546e-06,-2.569791035e-06) (-3.500462032e-05,6.06297809e-05) (-8.719713196e-09,1.510298628e-08) (1.471765147e-05,-2.549172011e-05) (0,1.694065895e-21) (6.08483442e-09,-1.053924237e-08) (-3.835660981e-05,6.643559699e-05) (-3.797649481e-09,6.577721851e-09) (1.178686968e-06,-2.041545716e-06) (-1.058791184e-21,4.235164736e-22) (2.4179593e-07,-4.188028358e-07) (2.191988206e-10,-3.796634942e-10) (-2.364132934e-05,4.094798358e-05) (1.230236002e-05,-2.130831261e-05) (-8.470329473e-22,-8.470329473e-22) (1.181594739e-06,-2.046582122e-06) (1.185010832e-09,-2.052498968e-09) (-4.056713351e-05,7.026433636e-05) (-2.316881374e-05,4.012956255e-05) (4.235164736e-22,-1.694065895e-21) (-2.188570265e-06,3.790714895e-06) (-5.101434888e-09,8.835944417e-09) (6.486224796e-05,-0.000112344709) (-2.66489559e-06,4.61573456e-06) (4.235164736e-22,-1.694065895e-21) (-1.304105758e-06,2.258777432e-06) (-2.554688277e-09,4.424849894e-09) (3.739300532e-05,-6.476658507e-05) (4.052238551e-06,-7.018683054e-06) (5.29395592e-23,2.117582368e-22) (-1.147182595e-08,1.986978541e-08) (-1.153315372e-11,1.997600821e-11) (4.290322277e-06,-7.431056164e-06) (1.630475981e-06,-2.824067239e-06) (-1.058791184e-22,3.176373552e-22) (-8.329871479e-08,1.442776062e-07) (-9.227744456e-11,1.598292224e-10) (3.112744687e-06,-5.391431949e-06) (4.610680091e-06,-7.985932175e-06) (1.058791184e-22,-6.352747104e-22) (-4.072151729e-12,7.053173691e-12) (-4.732118624e-07,8.196269885e-07) (-4.150544398e-10,7.188953777e-10) (1.376158085e-05,-2.383575722e-05) (3.176373552e-22,-3.176373552e-22) (-1.530521796e-07,2.650941513e-07) (-1.73488401e-10,3.004907251e-10) (5.513119534e-06,-9.54900314e-06) (4.337960104e-06,-7.513567301e-06) (-2.64697796e-22,0) (-7.700519144e-08,1.33376904e-07) (-8.508942103e-11,1.473792004e-10) (6.216831785e-07,-1.076786851e-06) (6.222146986e-06,-1.077707471e-05) -(0.05157424969,-0.08932922082) (0.07911949656,-0.1370389879) (0.005517042647,-0.009555798172) (-0.009454263379,0.01637526452) (-0.002817873889,0.004880700745) (0.001260905509,-0.002183952404) (0.0005417059474,-0.0009382622237) (-8.342600894e-05,0.0001444980862) (-0.0001916579055,0.0003319612299) (2.369564209e-05,-4.104205603e-05) (2.020298538e-05,-3.499259714e-05) (6.741548682e-06,-1.167670484e-05) (-1.149346843e-05,1.990727127e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0.0003039026374,-0.0005263748085) (0.04090131005,-0.07084314711) (-0.00883687416,0.01530591502) (0.01252654015,-0.02169660398) (-0.000346879798,0.0006008134342) (-5.135379222e-06,8.894737729e-06) (0.001183168129,-0.002049307314) (-0.00268255013,0.004646313118) (5.808926845e-07,-1.006135643e-06) (0.001574284488,-0.002726740719) (-0.004459427703,0.007723955355) (1.129113895e-06,-1.955682633e-06) (0.0001341706355,-0.0002323903576) (0.0003683995724,-0.0006380867769) (-1.952858243e-07,3.382449696e-07) (-4.227609596e-05,7.322434614e-05) (9.017141291e-05,-0.0001561814685) (-1.85615821e-08,3.214960327e-08) (3.392569073e-05,-5.876102003e-05) (0.0002193194444,-0.0003798724208) (-9.853361838e-08,1.706652333e-07) (0.0001346486464,-0.0002332182967) (-0.0003281340941,0.0005683449226) (7.513718213e-08,-1.30141417e-07) (2.344440262e-05,-4.060689649e-05) (4.508202613e-05,-7.808435976e-05) (-2.665283983e-08,4.616407275e-08) (3.529806653e-05,-6.113804464e-05) (-8.179885248e-05,0.0001416797685) (1.80411161e-08,-3.12481297e-08) (3.253944728e-05,-5.635997594e-05) (1.08655697e-05,-1.881971877e-05) (-1.708094113e-08,2.958505788e-08) (1.043761257e-05,-1.807847528e-05) (-3.251583845e-05,5.631908425e-05) (8.68155776e-09,-1.503689913e-08) (1.137503137e-05,-1.970213227e-05) (5.505628404e-07,-9.536028123e-07) (-4.783889003e-09,8.285938811e-09) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.02101305131,-0.03639567249) (-0.01883018317,0.03261483397) (0.0001264463693,-0.0002190115361) (6.834581865e-05,-0.0001183784304) (-9.063998106e-05,0.0001569930524) (-0.0002675942571,0.0004634868491) (9.461888584e-05,-0.0001638847176) (6.093280015e-05,-0.0001055387057) (-5.903420635e-05,0.0001022502448) (-2.685320506e-05,4.65111155e-05) (8.271937295e-06,-1.432741567e-05) (-3.536237701e-06,6.124943366e-06) (-1.181918528e-05,2.04714294e-05) (0.01305259065,-0.02260775017) (-1.972421406e-05,3.41633409e-05) (-3.139793852e-05,5.438282477e-05) (-0.001208003877,0.002092324091) (1.712798772e-06,-2.966654497e-06) (-0.01682721675,0.02914559437) (-2.585942318e-05,4.47898348e-05) (9.67925942e-09,-1.67649691e-08) (0.0005877851435,-0.001018073733) (1.150133528e-06,-1.992089707e-06) (-3.493905947e-10,6.051622618e-10) (6.952941289e-06,-1.204284757e-05) (8.190971413e-08,-1.418717865e-07) (1.32217184e-05,-2.290068804e-05) (-0.0004639768554,0.0008036314871) (-6.629958665e-10,1.148342526e-09) (1.637002792e-05,-2.835372008e-05) (-0.0002004334016,0.0003471608352) (9.621648201e-11,-1.666518354e-10) (-1.475131992e-05,2.555003558e-05) (0.0002859360877,-0.0004952558317) (1.363844101e-07,-2.362247277e-07) (8.972964103e-10,-1.554162972e-09) (-1.642133626e-05,2.844258873e-05) (6.808895039e-11,-1.179335215e-10) (8.86002333e-06,-1.534601056e-05) (-0.0001070329349,0.0001853864814) (1.530817236e-11,-2.651453229e-11) (1.09037461e-06,-1.888584223e-06) (-4.296340024e-06,7.441479207e-06) (2.752512015e-10,-4.767490659e-10) (-7.394344286e-07,1.280737999e-06) (1.652763697e-05,-2.862670696e-05) (7.276235857e-11,-1.260281019e-10) (3.451371935e-06,-5.977951547e-06) (-1.976500436e-05,3.423399176e-05) (3.583427253e-11,-6.206678068e-11) (3.65150322e-06,-6.3245891e-06) (-1.973991048e-05,3.419052789e-05) (0,0) (-0.0008395542634,0.00145415064) (0.02522679048,-0.04369408282) (-3.126224837e-05,5.414780254e-05) (-0.01100183246,0.01905573281) (-1.084202172e-19,5.421010862e-20) (6.005470316e-05,-0.0001040177971) (-0.003199103504,0.005541009808) (9.138118664e-07,-1.582768581e-06) (-0.002344817337,0.004061342763) (2.710505431e-20,-5.675120747e-20) (5.727926757e-07,-9.921060165e-07) (-1.287812239e-05,2.230556228e-05) (8.725406379e-09,-1.511284716e-08) (-0.000335289152,0.0005807378464) (-2.117582368e-22,4.235164736e-22) (1.81243952e-09,-3.139237334e-09) (-1.242058352e-05,2.151308171e-05) (3.802120767e-09,-6.585466345e-09) (2.538152278e-06,-4.396208702e-06) (1.905824131e-20,-3.811648263e-20) (9.202421743e-08,-1.593906201e-07) (-2.195446888e-10,3.802625555e-10) (-5.129786172e-06,8.885050281e-06) (-0.0002810210377,0.0004867427153) (0,-4.235164736e-22) (3.473961335e-07,-6.017077536e-07) (-1.186831509e-09,2.055652473e-09) (-7.965351864e-05,0.0001379639413) (0.0001256283905,-0.0002175947552) (-3.599890026e-21,2.541098842e-21) (-9.779151322e-07,1.693798695e-06) (5.110513569e-09,-8.851669155e-09) (3.289864391e-06,-5.698212276e-06) (0.0001171394555,-0.0002028914885) (6.564505341e-21,-8.046812999e-21) (-3.844266251e-07,6.658464465e-07) (2.55914016e-09,-4.432560781e-09) (2.632175311e-05,-4.559061372e-05) (-6.372623528e-05,0.0001103770773) (0,2.117582368e-22) (-3.632365662e-09,6.291441879e-09) (1.155167341e-11,-2.000808525e-11) (6.979756536e-06,-1.208929295e-05) (-3.434954941e-05,5.94951648e-05) (5.823351512e-22,-8.470329473e-22) (-4.430089943e-08,7.673140864e-08) (9.242620673e-11,-1.60086886e-10) (-7.708935966e-06,1.335226877e-05) (2.033211796e-05,-3.521626133e-05) (0,1.058791184e-22) (2.732028175e-11,-4.732011607e-11) (-2.030819374e-07,3.517482337e-07) (4.158427398e-10,-7.202607533e-10) (5.390575629e-06,-9.336750872e-06) (-2.117582368e-22,1.694065895e-21) (-3.944424504e-08,6.831943648e-08) (1.737627841e-10,-3.009659705e-10) (1.261265833e-05,-2.184576504e-05) (-1.944658249e-05,3.36824689e-05) (2.911675756e-22,-1.032321404e-21) (-1.766566272e-08,3.059782538e-08) (8.522954168e-11,-1.476218965e-10) (2.700280003e-06,-4.67702216e-06) (-4.74143023e-06,8.212398059e-06) -(0.01677258801,-0.02905097462) (0.02573064519,-0.04456678478) (0.001794210947,-0.00310766452) (-0.003074644141,0.005325439867) (-0.0009164076666,0.001587264639) (0.0004100621676,-0.0007102485086) (0.0001761695175,-0.000305134555) (-2.713117662e-05,4.699257638e-05) (-6.232953669e-05,0.0001079579244) (7.706117781e-06,-1.334738753e-05) (6.57026234e-06,-1.138002819e-05) (2.192435553e-06,-3.797409769e-06) (-3.737819008e-06,6.474092431e-06) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (-0.0004028470466,0.0006977515524) (-0.04299386424,0.07446755728) (-0.007090582965,0.01228124995) (-0.01874283661,0.03246354529) (-0.0002534798879,0.0004390400445) (6.808460863e-06,-1.179260014e-05) (0.001218491756,-0.00211048963) (0.001120069607,-0.001940017466) (-7.702992143e-07,1.334197376e-06) (0.001420036301,-0.002459575022) (0.003079871323,-0.005334493612) (-1.497289225e-06,2.593381012e-06) (-0.0009844018759,0.001705034064) (0.0002005515599,-0.0003473654913) (2.589526051e-07,-4.485190688e-07) (-9.179394658e-05,0.0001589917793) (1.709241288e-05,-2.960492753e-05) (2.461341544e-08,-4.263168609e-08) (-0.0005075475471,0.0008790981388) (0.0001125653912,-0.0001949689767) (1.306577615e-07,-2.263058812e-07) (0.0001311012957,-0.0002270741051) (0.0001706747231,-0.0002956172919) (-9.963682546e-08,1.72576044e-07) (-0.0001322101708,0.0002289947331) (2.533065632e-05,-4.387398374e-05) (3.534207956e-08,-6.121427745e-08) (3.566399888e-05,-6.177185807e-05) (3.686250359e-05,-6.384772911e-05) (-2.392364366e-08,4.143696631e-08) (-7.485395282e-05,0.0001296508494) (7.155927413e-06,-1.239442985e-05) (2.264899878e-08,-3.922921662e-08) (9.107253788e-06,-1.577422628e-05) (2.532776104e-05,-4.386896896e-05) (-1.151244726e-08,1.994014357e-08) (-1.899134758e-05,3.289397892e-05) (3.912341003e-07,-6.776373393e-07) (6.342969012e-09,-1.09863446e-08) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.01653457404,-0.02863872232) (-0.01481693702,0.02566368773) (9.949706138e-05,-0.0001723339655) (5.377938606e-05,-9.314862906e-05) (-7.132203009e-05,0.0001235333798) (-0.0002105623306,0.0003647046547) (7.44529174e-05,-0.0001289562357) (4.794629208e-05,-8.304541391e-05) (-4.645234247e-05,8.045781728e-05) (-2.113002537e-05,3.65982775e-05) (6.508952823e-06,-1.127383699e-05) (-2.782565142e-06,4.819544201e-06) (-9.300181641e-06,1.610838712e-05) (-0.01463285707,0.0253448519) (2.616874833e-05,-4.532560167e-05) (-0.002336540875,0.00404700751) (0.001812179585,-0.003138787114) (-2.272899548e-06,3.936777498e-06) (-0.01319038986,0.02284642541) (3.996000794e-05,-6.921276402e-05) (-1.284453257e-08,2.224738301e-08) (0.0004618297644,-0.0007999126164) (-9.553607913e-07,1.65473343e-06) (4.636983056e-10,-8.031490246e-10) (5.524098285e-06,-9.568018896e-06) (-1.086310209e-07,1.881544475e-07) (-1.339854236e-05,2.320695611e-05) (-0.000365141319,0.0006324433165) (8.800808196e-10,-1.524344694e-09) (2.84893946e-05,-4.934507893e-05) (-0.0001517399338,0.0002628212748) (-1.277053227e-10,2.211921074e-10) (-2.208009141e-05,3.824384015e-05) (0.0002236392519,-0.0003873545469) (2.407892199e-08,-4.170591628e-08) (-1.190479427e-09,2.061970853e-09) (-3.154137007e-05,5.46312555e-05) (-9.036164811e-11,1.565109656e-10) (1.950696771e-06,-3.378705918e-06) (-8.471154588e-05,0.0001467247015) (-2.03076594e-11,3.517389786e-11) (5.730243228e-08,-9.925072411e-08) (-5.392190249e-06,9.339547476e-06) (-3.658433149e-10,6.336592089e-10) (-1.116528349e-06,1.933883829e-06) (8.868127353e-06,-1.536004714e-05) (-9.65577339e-11,1.67242901e-10) (1.416117621e-06,-2.452787669e-06) (-1.848146722e-05,3.201084023e-05) (-4.754985347e-11,8.235876209e-11) (1.592600314e-06,-2.75846466e-06) (-1.728333755e-05,2.993561877e-05) (1.734723476e-18,-8.67361738e-19) (0.001421288335,-0.002461743608) (-0.02866009467,0.04964074012) (4.147852654e-05,-7.184291538e-05) (-0.008490374326,0.01470575971) (-8.131516294e-20,-2.710505431e-20) (-3.488083878e-05,6.041538497e-05) (0.002604149643,-0.004510519493) (-1.212696121e-06,2.100451296e-06) (-0.001949014841,0.003375792729) (6.776263578e-21,-1.43995601e-20) (-6.84819863e-07,1.186142797e-06) (1.665488592e-05,-2.88471086e-05) (-1.158052873e-08,2.005806414e-08) (-0.0002638178336,0.0004569458917) (-3.176373552e-22,0) (-3.213881516e-09,5.566606076e-09) (1.951032757e-05,-3.379287863e-05) (-5.044923245e-09,8.738063381e-09) (1.02387175e-06,-1.773397892e-06) (4.235164736e-21,2.541098842e-21) (-1.126062466e-07,1.950397403e-07) (2.913830078e-10,-5.046901739e-10) (1.392033993e-05,-2.411073601e-05) (-0.0002210927651,0.0003829439024) (-4.023406499e-21,3.388131789e-21) (-6.274119749e-07,1.086709418e-06) (1.575244907e-09,-2.728404213e-09) (-2.951896633e-05,5.112834946e-05) (0.0001121274987,-0.0001942105247) (-2.117582368e-22,5.082197684e-21) (9.099122566e-07,-1.576014259e-06) (-6.783673963e-09,1.174966797e-08) (-4.63062193e-05,8.020472453e-05) (9.03034606e-05,-0.0001564101819) (1.058791184e-22,-1.694065895e-21) (6.916940092e-07,-1.198049167e-06) (-3.396487491e-09,5.882888901e-09) (-8.287775515e-06,1.435484827e-05) (-5.108477623e-05,8.848142792e-05) (-8.999725065e-22,3.176373552e-21) (5.895674323e-09,-1.021160747e-08) (-1.532991602e-11,2.655219342e-11) (2.033345566e-06,-3.521857829e-06) (-2.71197858e-05,4.697284689e-05) (2.911675756e-22,-3.176373552e-22) (2.929347052e-08,-5.073777927e-08) (-1.226739939e-10,2.124775902e-10) (-8.152622709e-06,1.412075675e-05) (1.185719849e-05,-2.053727021e-05) (-1.058791184e-22,0) (2.366362762e-11,-4.098660533e-11) (2.030510961e-07,-3.51694815e-07) (-5.516550356e-10,9.554945499e-10) (-6.289741996e-06,1.08941527e-05) (1.058791184e-22,1.164670302e-21) (8.545604851e-08,-1.480142178e-07) (-2.306127229e-10,3.994329529e-10) (5.359197563e-06,-9.282402468e-06) (-1.792223291e-05,3.104221799e-05) (1.058791184e-22,-4.235164736e-22) (4.463913472e-08,-7.731724935e-08) (-1.130973968e-10,1.958904374e-10) (1.567605963e-06,-2.715173175e-06) (-8.255361831e-06,1.429870613e-05) -(-0.02616144742,0.04531295613) (-0.04013399248,0.06951411408) (-0.002798563663,0.004847254452) (0.004795750123,-0.008306482873) (0.001429388891,-0.002475774183) (-0.0006396043251,0.001107827188) (-0.0002747846405,0.0004759409585) (4.231850505e-05,-7.329780085e-05) (9.721999344e-05,-0.0001683899681) (-1.201980249e-05,2.08189086e-05) (-1.024812465e-05,1.775027258e-05) (-3.419704066e-06,5.923101189e-06) (5.830153065e-06,-1.009812133e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.12111549,0.2097781823) (-0.0005607657229,0.0009712747232) (-0.002000518664,0.003464999967) (-0.0004075616168,0.0007059174275) (-0.0002729746153,0.0004728059028) (-1.278868443e-06,2.21506512e-06) (-6.037625137e-06,1.045747349e-05) (-3.526857492e-05,6.108696368e-05) (-1.932297171e-05,3.346836876e-05) (-7.415213061e-06,1.284352577e-05) (-8.572210917e-06,1.484750484e-05) (-9.354879707e-06,1.620312695e-05) (-6.899174245e-06,1.194972032e-05) (-8.71432143e-08,1.509364747e-07) (-0.002819411596,0.004883364132) (0.01502942923,-0.02603173503) (0.0008700924344,-0.001507044304) (0.0001228246921,-0.0002127386071) (7.320806353e-10,-1.268000856e-09) (0.0001192873191,-0.0002066116974) (-8.929992509e-05,0.0001546720074) (1.373510757e-11,-2.378990418e-11) (0.000299626932,-0.0005189690695) (-0.0001838490925,0.0003184359691) (5.231009419e-11,-9.060374093e-11) (3.300273741e-05,-5.716241798e-05) (-2.446401255e-05,4.237291269e-05) (4.222108033e-12,-7.312905615e-12) (2.383089031e-07,-4.12763128e-07) (-2.03263699e-07,3.52063054e-07) (1.663957862e-14,-2.882059555e-14) (1.598075748e-05,-2.767948389e-05) (-1.228323086e-05,2.127517993e-05) (1.819532649e-12,-3.151522991e-12) (1.701272271e-05,-2.946690011e-05) (-1.203371311e-05,2.08430025e-05) (2.268351531e-12,-3.928900099e-12) (4.63149072e-06,-8.021977241e-06) (-3.344313848e-06,5.792521501e-06) (6.401746952e-13,-1.1088151e-12) (3.782440103e-06,-6.551378435e-06) (-2.784982798e-06,4.823731704e-06) (4.566111209e-13,-7.908736621e-13) (3.233764025e-06,-5.601043591e-06) (-1.652550646e-06,2.862301681e-06) (8.418017035e-13,-1.458043318e-12) (2.598776547e-06,-4.501213017e-06) (-1.422702445e-06,2.464192919e-06) (5.27927159e-13,-9.14396661e-13) (8.817371997e-07,-1.527213629e-06) (-1.45942524e-07,2.527798665e-07) (4.485466415e-13,-7.769055717e-13) (1.843143693e-18,-6.396792818e-18) (8.67361738e-19,3.469446952e-18) (0,-1.301042607e-18) (-0.02060375576,0.0356867518) (0.06045012766,-0.1047026924) (0,2.168404345e-19) (1.084202172e-19,2.168404345e-19) (4.33680869e-19,0) (-0.005297526462,0.009175584986) (0.01558567133,-0.02699517461) (0,0) (-1.694065895e-21,-3.811648263e-21) (1.694065895e-21,-1.694065895e-21) (-2.702014961e-05,4.680027195e-05) (0.0001359807469,-0.0002355255625) (2.371692252e-20,3.388131789e-20) (6.776263578e-21,1.355252716e-20) (6.776263578e-21,1.355252716e-20) (-0.0003173531288,0.0005496717431) (0.0009319561715,-0.001614195439) (-2.64697796e-23,0) (2.316105715e-23,-8.602678371e-23) (-1.32348898e-23,0) (1.10762366e-08,-1.918460455e-08) (-6.716194071e-07,1.163278936e-06) (0,0) (0,5.29395592e-23) (-7.940933881e-23,1.389663429e-22) (-4.754822232e-07,8.235593687e-07) (2.065183874e-06,-3.577003397e-06) (8.470329473e-22,0) (-1.058791184e-22,6.352747104e-22) (0,-1.905824131e-21) (-1.517604603e-05,2.628568279e-05) (4.50724991e-05,-7.806785847e-05) (-1.482307658e-21,2.329340605e-21) (0,-2.117582368e-22) (0,-4.235164736e-22) (-7.538565652e-06,1.305717873e-05) (2.367733081e-05,-4.101033996e-05) (4.63221143e-23,1.32348898e-23) (5.29395592e-23,-3.97046694e-23) (-2.64697796e-23,-5.29395592e-23) (-8.103564901e-07,1.403578613e-06) (2.67611154e-06,-4.635161153e-06) (-2.117582368e-22,4.235164736e-22) (-1.588186776e-22,0) (0,0) (-1.711417653e-06,2.964262327e-06) (5.087485249e-06,-8.811782933e-06) (-1.058791184e-22,-4.235164736e-22) (-4.63221143e-23,6.6174449e-23) (5.29395592e-23,4.235164736e-22) (-2.996110319e-06,5.189415297e-06) (8.841353425e-06,-1.531367334e-05) (5.29395592e-23,-2.117582368e-22) (1.058791184e-22,2.117582368e-22) (-2.382280164e-22,2.64697796e-22) (-1.848699751e-06,3.202041897e-06) (5.660846895e-06,-9.804874436e-06) (0,0) (2.316105715e-23,3.30872245e-23) (2.382280164e-22,1.058791184e-22) (-1.315863121e-06,2.279141781e-06) (3.859226647e-06,-6.68437663e-06) -(-0.1083538861,0.187674436) (0.04130000015,-0.07153369861) (-0.005588563056,0.009679675154) (0.0001512454779,-0.0002619648521) (-0.0004157109044,0.0007200324077) (0.0004987808677,-0.0008639138046) (-0.0004215574793,0.0007301589725) (0.0001921116781,-0.0003327471872) (-0.000135218537,0.0002342053762) (5.460781335e-05,-9.458350721e-05) (-4.878621887e-05,8.45002098e-05) (1.937500693e-05,-3.35584964e-05) (-2.137444623e-05,3.702162685e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.1083538861,0.187674436) (0.04130000015,-0.07153369861) (-0.005588563056,0.009679675154) (0.0001512454779,-0.0002619648521) (-0.0004157109044,0.0007200324077) (0.0004987808677,-0.0008639138046) (-0.0004215574793,0.0007301589725) (0.0001921116781,-0.0003327471872) (-0.000135218537,0.0002342053762) (5.460781335e-05,-9.458350721e-05) (-4.878621887e-05,8.45002098e-05) (1.937500693e-05,-3.35584964e-05) (-2.137444623e-05,3.702162685e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.2475006931,0) (0.001885655396,0) (0.003936900835,0) (0.0009741204454,0) (0.0005004075617,0) (8.132634863e-07,0) (1.510083094e-05,0) (7.282759888e-05,0) (3.408159058e-05,0) (1.381866281e-05,0) (1.778426622e-05,0) (1.795710592e-05,0) (1.276438578e-05,0) (7.833976983e-06,0) (0.3041454174,0) (0.002926686712,0) (0.02849839687,0) (2.755679327e-06,0) (1.477200313e-09,0) (5.595452752e-05,0) (0.000471312833,0) (2.30767043e-11,0) (0.0001328145617,0) (0.002968612862,0) (1.385122765e-10,0) (0.0001424591791,0) (8.663764015e-06,0) (6.653302287e-12,0) (1.353880343e-06,0) (1.063332768e-06,0) (1.058585676e-13,0) (0.0001028139335,0) (8.885062031e-06,0) (4.930568137e-12,0) (9.226573536e-06,0) (0.0001114531879,0) (5.306720436e-12,0) (2.485545863e-05,0) (1.209685944e-06,0) (1.149711836e-12,0) (2.362894913e-06,0) (2.235255113e-05,0) (1.084804457e-12,0) (4.060026829e-05,0) (2.884757044e-07,0) (1.846273793e-12,0) (8.663751496e-07,0) (2.708317392e-05,0) (1.260179665e-12,0) (1.705402686e-05,0) (4.258384822e-09,0) (8.003161713e-13,0) (1.561251128e-17,0) (6.938893904e-18,0) (8.67361738e-19,0) (0.04483170943,0) (0.1133052738,0) (8.67361738e-19,0) (-1.734723476e-18,0) (4.33680869e-19,0) (0.009624007898,0) (0.03498925778,0) (0,0) (5.421010862e-20,0) (6.776263578e-21,0) (1.920663012e-05,0) (0.0007802029551,0) (2.439454888e-19,0) (0,0) (2.710505431e-20,0) (0.0006986693326,0) (0.001726467409,0) (0,0) (-3.176373552e-22,0) (-4.235164736e-22,0) (1.653240914e-09,0) (1.835110102e-05,0) (0,0) (0,0) (0,0) (2.342751068e-06,0) (1.709453932e-06,0) (0,0) (1.016439537e-20,0) (1.101142831e-20,0) (2.57422105e-05,0) (0.0001083718738,0) (1.270549421e-21,0) (0,0) (-4.235164736e-22,0) (2.225083718e-05,0) (3.271647394e-05,0) (0,0) (2.911675756e-22,0) (0,0) (2.685905316e-06,0) (3.292917407e-06,0) (2.117582368e-22,0) (2.117582368e-22,0) (0,0) (2.887868495e-06,0) (1.229628472e-05,0) (2.117582368e-22,0) (0,0) (-4.235164736e-22,0) (6.902245323e-06,0) (1.565229019e-05,0) (-6.352747104e-22,0) (2.117582368e-22,0) (-4.235164736e-22,0) (5.060621495e-06,0) (8.434035548e-06,0) (-1.058791184e-22,0) (-8.470329473e-22,0) (-3.176373552e-22,0) (2.848171096e-06,0) (7.27171318e-06,0) -(0.09496554104,0) (0.02219350733,0) (0.0009466734748,0) (2.321681126e-06,0) (4.129794632e-05,0) (0.0001989658342,0) (0.0002383724452,0) (0.0001692599573,0) (0.0001085254047,0) (7.176902103e-05,0) (5.852636604e-05,0) (5.506831979e-05,0) (4.747128362e-05,0) (0.08203099855,0) (8.306610194e-08,0) (0.1359609918,0) (0.009081386798,0) (5.657391905e-09,0) (0.01196712578,0) (5.443671855e-05,0) (2.267692166e-12,0) (6.454709571e-05,0) (4.074384328e-08,0) (2.322477598e-15,0) (4.516263572e-08,0) (1.806939314e-09,0) (9.637884248e-05,0) (0.0001200645114,0) (3.505088404e-13,0) (0.0001259530711,0) (0.0003880768169,0) (2.442169459e-14,0) (0.0001806923474,0) (0.0003300259584,0) (4.99498452e-09,0) (5.220474457e-13,0) (0.0003140465704,0) (2.043749217e-14,0) (6.916995033e-05,0) (0.0001161425193,0) (3.068536094e-15,0) (6.841874488e-06,0) (0.0001365406311,0) (3.090610873e-13,0) (1.118320353e-06,0) (0.0001219538312,0) (2.402304362e-14,0) (6.135362753e-06,0) (0.0001061573737,0) (1.022792114e-14,0) (9.682037194e-06,0) (9.16160885e-05,0) (0,0) (0.008475895408,0) (0.1732522102,0) (1.124213962e-07,0) (0.02297182624,0) (1.084202172e-19,0) (0.0009869192534,0) (0.006480627332,0) (3.316210435e-10,0) (0.000596346401,0) (1.694065895e-21,0) (6.030566529e-06,0) (7.772448169e-05,0) (1.304810639e-11,0) (1.025243196e-05,0) (0,0) (6.172455307e-07,0) (3.424236285e-06,0) (8.91940129e-14,0) (8.102047562e-08,0) (0,0) (1.7510264e-07,0) (5.995060337e-14,0) (0.0002921369044,0) (3.675876272e-05,0) (2.032879073e-20,0) (1.275281687e-06,0) (4.637667068e-13,0) (0.0003051743252,0) (0.0002630933887,0) (6.776263578e-21,0) (3.588497215e-06,0) (5.404957306e-12,0) (0.0003430215163,0) (6.96043537e-05,0) (5.082197684e-21,0) (2.144710129e-06,0) (2.269021793e-12,0) (0.0002012220718,0) (3.895281572e-05,0) (1.694065895e-21,0) (3.844113255e-09,0) (1.769838074e-15,0) (0.0001178597097,0) (2.092539475e-05,0) (-8.470329473e-22,0) (6.145570316e-08,0) (3.010474357e-14,0) (2.166322872e-05,0) (9.000390998e-05,0) (0,0) (1.298476433e-12,0) (5.281220211e-07,0) (2.249656277e-13,0) (0.0001117973318,0) (2.541098842e-21,0) (1.467994913e-07,0) (7.105028024e-14,0) (4.480358687e-05,0) (5.317998557e-05,0) (0,0) (6.039698986e-08,0) (2.87767903e-14,0) (3.246588878e-06,0) (8.011602699e-05,0) -(0.4945189387,0) (0.307421443,0) (0.1319654046,0) (0.03941143222,0) (0.01673841645,0) (0.005001509027,0) (0.002982067969,0) (0.0008721944031,0) (0.0006739086684,0) (0.0001662005827,0) (0.000162668234,0) (2.726728507e-05,0) (3.849627959e-05,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.3147524089,0) (0.3911428714,0) (0.2057672699,0) (0.06817076837,0) (0.01624681051,0) (0.001918900616,0) (8.656155591e-06,0) (0.0003293313421,0) (0.0005165205109,0) (0.0005274892321,0) (0.000308913253,0) (0.0001921098042,0) (7.200817462e-05,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.1469209212,0) (0.001757452279,0) (0.008885391297,0) (0.0004765796032,0) (0.0003137171467,0) (3.753583099e-07,0) (3.817084e-06,0) (6.033841652e-07,0) (5.317323845e-07,0) (8.414643968e-06,0) (3.31541252e-06,0) (3.002007615e-07,0) (1.229871495e-06,0) (0.001306177527,0) (1.355168727e-09,0) (0.2503658847,0) (1.046614926e-05,0) (2.060951583e-11,0) (0.04152020624,0) (4.050576507e-07,0) (1.00843227e-12,0) (0.003778769832,0) (1.889305054e-06,0) (8.299835645e-12,0) (0.002559803502,0) (1.316604296e-15,0) (2.853709815e-10,0) (7.660087477e-05,0) (2.266554089e-16,0) (5.359854749e-09,0) (1.127557649e-07,0) (1.456075894e-15,0) (8.395718063e-08,0) (9.154156321e-06,0) (9.161877051e-08,0) (3.993706216e-16,0) (1.150818494e-07,0) (1.068890781e-15,0) (4.419176462e-08,0) (7.775554357e-06,0) (1.628929061e-17,0) (4.528323296e-06,0) (1.43185262e-05,0) (2.455969101e-13,0) (6.161678805e-07,0) (1.125366415e-06,0) (1.15944313e-15,0) (1.58315933e-07,0) (5.391837529e-07,0) (2.24968478e-15,0) (6.286898691e-07,0) (3.183188427e-06,0) (6.2883726e-18,0) (0.0002446691601,0) (8.145458932e-07,0) (5.664740933e-10,0) (0.177759353,0) (2.493664997e-18,0) (2.201408811e-06,0) (0.0003158153936,0) (8.549720567e-10,0) (0.0706465972,0) (1.058791184e-22,0) (2.464242287e-13,0) (6.094571757e-11,0) (1.707997469e-15,0) (4.38015457e-05,0) (8.131516294e-20,0) (2.311133296e-11,0) (9.174418953e-05,0) (8.403150672e-11,0) (0.001971316564,0) (5.29395592e-23,0) (1.266660794e-13,0) (7.775698928e-17,0) (6.88337889e-11,0) (2.410431746e-06,0) (1.356576205e-22,0) (5.576701781e-10,0) (1.468000911e-14,0) (6.062379565e-07,0) (3.176643229e-06,0) (-2.067951531e-24,0) (2.300661614e-12,0) (5.707138741e-16,0) (1.135038219e-09,0) (1.530804122e-07,0) (-1.178732373e-23,0) (3.081533289e-11,0) (8.947554122e-16,0) (2.296325301e-09,0) (3.899274721e-07,0) (6.749793798e-22,0) (8.755362874e-11,0) (1.48542241e-15,0) (8.808607626e-08,0) (2.190836451e-05,0) (-1.058791184e-22,0) (2.423577032e-09,0) (3.638364687e-14,0) (4.518853107e-06,0) (4.641490491e-06,0) (1.413638742e-27,0) (6.210057073e-11,0) (3.638362452e-11,0) (1.650294841e-19,0) (9.04762241e-12,0) (8.271806126e-24,0) (4.100520746e-10,0) (4.164857336e-15,0) (3.101457978e-07,0) (1.081074942e-06,0) (7.940933881e-23,0) (4.313670249e-09,0) (1.26775354e-14,0) (2.818838655e-06,0) (9.917835142e-07,0) -(0.1537404548,0) (0.003727007567,0) (0.00854296775,0) (0.0008283378013,0) (0.000249242271,0) (3.135135163e-06,0) (3.485164461e-06,0) (1.245370055e-07,0) (1.451806454e-06,0) (9.235094054e-06,0) (1.535303137e-06,0) (1.834495508e-07,0) (1.651277635e-06,0) (2.815830936e-10,0) (0.01983051592,0) (0.2311916741,0) (1.480857164e-06,0) (5.065308416e-11,0) (0.05191474862,0) (1.74172454e-07,0) (5.928976114e-13,0) (0.002321923377,0) (5.781125973e-06,0) (1.396714217e-11,0) (0.002995923626,0) (1.300580339e-15,0) (2.083846774e-09,0) (2.160554926e-05,0) (8.895745648e-08,0) (1.874301973e-14,0) (4.549221948e-07,0) (3.009999658e-15,0) (6.499753675e-08,0) (5.596904508e-06,0) (8.516512091e-16,0) (5.426835441e-08,0) (1.474190623e-07,0) (1.228211538e-15,0) (1.807091778e-07,0) (1.378205676e-05,0) (2.933157846e-14,0) (5.773281799e-06,0) (8.30249756e-06,0) (1.793970786e-07,0) (1.57524998e-14,0) (1.14196802e-07,0) (1.547102555e-15,0) (2.937426657e-07,0) (8.906479179e-07,0) (3.127361261e-15,0) (1.516806236e-06,0) (2.811236419e-06,0) (0,0) (1.511060808e-05,0) (5.607603461e-10,0) (0.1487858497,0) (0.02038732434,0) (1.734723476e-18,0) (9.734329973e-09,0) (0.0004046016186,0) (8.829540289e-10,0) (0.0787413867,0) (0,0) (1.175486027e-09,0) (3.16393186e-09,0) (1.818492629e-13,0) (0.0005493161406,0) (0,0) (1.11287863e-09,0) (2.242153709e-05,0) (5.137087983e-11,0) (0.001903470945,0) (-4.235164736e-22,0) (1.177409821e-09,0) (2.273659858e-09,0) (4.248625572e-15,0) (2.121979301e-05,0) (0,0) (1.746371504e-10,0) (3.101321166e-15,0) (2.618867638e-10,0) (3.3303246e-06,0) (-6.6174449e-24,0) (4.476698989e-11,0) (7.989091628e-15,0) (1.282889475e-07,0) (2.814187778e-07,0) (1.654361225e-24,0) (2.426502395e-12,0) (1.278136264e-16,0) (7.949778252e-10,0) (1.110717381e-07,0) (2.436173229e-11,0) (0,0) (3.526056281e-16,0) (7.3810059e-07,0) (2.697616726e-05,0) (0,0) (1.877165974e-10,0) (1.913490841e-14,0) (2.115184742e-06,0) (1.181201865e-06,0) (-1.654361225e-24,0) (6.907330169e-11,0) (1.047719175e-07,0) (7.596810143e-15,0) (7.557011361e-09,0) (1.895051636e-10,0) (0,0) (6.491569902e-15,0) (1.28432286e-06,0) (1.324891707e-06,0) (0,0) (9.739590345e-10,0) (2.829120299e-14,0) (3.141117806e-06,0) (2.187995244e-07,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.002296938444,0) (0.0004656769935,0) (-3.404442288e-05,0) (8.60557369e-05,0) (-2.195463111e-05,0) (1.021437952e-06,0) (1.052245556e-06,0) (3.19721922e-07,0) (-3.631499723e-07,0) (-8.080661741e-07,0) (1.730221396e-07,0) (-2.294551817e-08,0) (-1.671873287e-07,0) (0.008189657419,0) (5.041046806e-06,0) (-0.008342968697,0) (0.0002452856292,0) (-2.067629571e-07,0) (0.002505844645,0) (-1.362524288e-05,0) (1.28943057e-08,0) (-0.0003814274264,0) (-3.297204231e-05,0) (-4.172364306e-08,0) (0.0001791736462,0) (1.381913284e-10,0) (1.079257912e-07,0) (-3.267927222e-05,0) (-3.366221799e-11,0) (2.800914463e-07,0) (2.957483131e-08,0) (-4.691192177e-11,0) (6.280388515e-07,0) (3.585047097e-06,0) (-8.962099782e-07,0) (-4.954574338e-11,0) (9.752156065e-07,0) (3.109204061e-11,0) (3.176698282e-07,0) (-2.771203269e-06,0) (-2.22648192e-12,0) (1.653561186e-06,0) (-1.853786177e-06,0) (-4.89836296e-10,0) (1.10502967e-06,0) (-9.167977887e-07,0) (3.191879817e-11,0) (5.061688212e-07,0) (-6.78714229e-07,0) (3.355563738e-11,0) (7.856396421e-07,0) (-1.190808539e-06,0) (0,0) (-0.0009274664534,0) (-0.0002742614059,0) (4.438674186e-06,0) (-0.001474755946,0) (-8.67361738e-19,0) (-1.006015126e-05,0) (-0.002941831249,0) (-2.930994065e-06,0) (0.005259890253,0) (1.376428539e-21,0) (5.998322676e-10,0) (6.199376993e-08,0) (-1.995271809e-10,0) (6.084148142e-05,0) (5.421010862e-20,0) (-7.446672951e-11,0) (-0.0003970796515,0) (2.33129964e-07,0) (0.0003677132413,0) (5.29395592e-23,0) (4.113038732e-10,0) (-1.578850801e-11,0) (2.295141761e-08,0) (6.300650718e-06,0) (-3.176373552e-22,0) (4.941788939e-08,0) (-4.216631935e-10,0) (-3.616195343e-06,0) (5.091702812e-06,0) (3.97046694e-23,0) (-3.504778343e-09,0) (-1.048420309e-10,0) (2.359753035e-07,0) (2.499492298e-07,0) (-1.522012327e-22,0) (9.88648561e-09,0) (-1.014613753e-10,0) (-2.52638343e-07,0) (8.108630087e-07,0) (1.058791184e-22,0) (-3.46259369e-09,0) (2.113178083e-11,0) (2.345799347e-07,0) (-3.336664573e-06,0) (9.264422861e-23,0) (-3.308381734e-08,0) (-2.028902496e-10,0) (2.843321806e-06,0) (-2.094078847e-06,0) (6.203854594e-25,0) (-5.632286098e-11,0) (7.855457093e-09,0) (7.109805969e-13,0) (-7.829784988e-09,0) (-1.389663429e-22,0) (-1.617807133e-08,0) (8.400741329e-11,0) (9.173899183e-07,0) (-1.236998982e-06,0) (0,0) (-4.115909576e-08,0) (1.129540535e-10,0) (1.15856545e-06,0) (-1.384583023e-06,0) -(-0.05751293495,0) (-0.01742314575,0) (0.002807441229,0) (-0.002741260601,0) (0.0006877098011,0) (-6.313790157e-05,0) (-3.703790973e-05,0) (-1.993765262e-06,0) (1.779141841e-05,0) (1.117127821e-05,0) (-3.925466161e-06,0) (1.105928494e-06,0) (4.760820116e-06,0) (2.356370425e-06,0) (0.002086629187,0) (0.008695215087,0) (-6.2979561e-06,0) (3.741398894e-07,0) (-0.07442571239,0) (3.937534685e-07,0) (-7.848018285e-09,0) (0.008950218454,0) (-7.896863725e-06,0) (5.968412251e-08,0) (-0.002792952986,0) (-8.133735556e-11,0) (5.197317153e-08,0) (0.0004693188178,0) (-7.459501429e-07,0) (-3.500108653e-10,0) (-4.093285999e-06,0) (1.032339543e-10,0) (-9.466882665e-07,0) (-8.422440694e-05,0) (6.995807459e-11,0) (-1.632739084e-06,0) (-4.319618027e-06,0) (-2.136820204e-11,0) (9.874220973e-07,0) (7.401138147e-05,0) (1.010201071e-10,0) (-5.466525505e-06,0) (-8.034065257e-06,0) (-6.503235901e-07,0) (-1.341657236e-10,0) (-4.441394808e-07,0) (-3.383529974e-11,0) (1.834727903e-06,0) (5.4567997e-06,0) (-3.617647595e-11,0) (2.98183865e-06,0) (5.407168305e-06,0) (6.505213035e-19,0) (-3.801065212e-06,0) (-4.420846394e-06,0) (0.06307890282,0) (0.006834856211,0) (-1.734723476e-18,0) (1.2360615e-07,0) (-0.0004147197189,0) (3.245439041e-06,0) (-0.05323530859,0) (-1.084202172e-19,0) (-7.133332631e-09,0) (1.11168147e-08,0) (5.132952515e-09,0) (-0.005614192732,0) (0,0) (3.611864086e-10,0) (1.48279327e-05,0) (-1.809388448e-07,0) (0.00192530132,0) (-1.355252716e-20,0) (-1.462622461e-08,0) (-4.015748519e-08,0) (3.138645067e-10,0) (-0.0004375922108,0) (8.470329473e-22,0) (-2.062581006e-09,0) (1.526916853e-10,0) (-7.487547447e-09,0) (-6.5275208e-05,0) (0,0) (9.665570157e-10,0) (-4.759094266e-10,0) (4.428858264e-06,0) (1.003236761e-05,0) (0,0) (1.297693598e-10,0) (-3.054149145e-11,0) (7.432534774e-08,0) (9.720891838e-06,0) (2.414566489e-11,0) (8.470329473e-22,0) (-3.039500918e-12,0) (1.39543781e-06,0) (5.069545599e-05,0) (0,0) (-4.776269042e-10,0) (1.818254864e-10,0) (-9.70477885e-06,0) (-5.529115333e-06,0) (0,0) (-4.190493315e-10,0) (-1.078377038e-06,0) (-1.525802291e-10,0) (-6.801392399e-08,0) (5.154379602e-10,0) (2.117582368e-22,0) (-9.02140094e-11,0) (5.837397148e-06,0) (5.909045808e-06,0) (2.64697796e-23,0) (2.987041801e-10,0) (-1.60387982e-10,0) (3.118621718e-06,0) (1.889669192e-07,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.05227305888,0) (-0.01059774195,0) (0.0007747731012,0) (-0.0019584315,0) (0.0004996371268,0) (-2.324558865e-05,0) (-2.394669917e-05,0) (-7.276138765e-06,0) (8.264461737e-06,0) (1.838973561e-05,0) (-3.937587669e-06,0) (5.221874471e-07,0) (3.804800733e-06,0) (0.003294115467,0) (-5.03865326e-06,0) (8.521411615e-05,0) (8.201923211e-05,0) (2.067578889e-07,0) (-0.06268694534,0) (-4.461298473e-06,0) (-1.290932257e-08,0) (0.008994674824,0) (-1.566384246e-05,0) (4.177343488e-08,0) (-0.003310642092,0) (-1.39836719e-10,0) (4.550215342e-08,0) (0.0007412007475,0) (3.371897556e-11,0) (-2.135755559e-07,0) (-6.832987415e-06,0) (4.698765009e-11,0) (-6.359455323e-07,0) (-9.524322186e-05,0) (-1.168207208e-06,0) (4.963625375e-11,0) (-6.28702053e-07,0) (-3.114294568e-11,0) (4.478956051e-07,0) (5.538823034e-05,0) (2.230680666e-12,0) (1.774135912e-06,0) (2.782574797e-06,0) (4.907366656e-10,0) (-1.097731374e-06,0) (-3.17533837e-06,0) (-3.19703626e-11,0) (1.108827398e-06,0) (2.817216516e-06,0) (-3.361210006e-11,0) (1.86095787e-06,0) (7.359028335e-06,0) (-4.33680869e-19,0) (-0.0002852827998,0) (-0.0001093982521,0) (-4.438290702e-06,0) (0.0612087474,0) (-1.084202172e-18,0) (-5.672657459e-06,0) (-0.001412428299,0) (2.934551322e-06,0) (-0.05104289932,0) (5.844527336e-20,0) (2.315741605e-10,0) (2.280737082e-08,0) (1.99657454e-10,0) (-0.001386055972,0) (2.032879073e-20,0) (-2.218079147e-11,0) (-0.0001285817751,0) (-2.334044471e-07,0) (0.000791823636,0) (2.435219723e-21,0) (1.565366177e-10,0) (1.581342029e-11,0) (4.980086481e-09,0) (-0.0001439248567,0) (-5.558653716e-22,0) (1.452916396e-08,0) (4.223110462e-10,0) (-7.100395277e-06,0) (-2.760876911e-05,0) (-2.415367389e-22,0) (-1.566034151e-09,0) (1.050286112e-10,0) (1.196885357e-08,0) (-1.098689074e-05,0) (3.441071348e-22,0) (2.91435589e-09,0) (1.016381852e-10,0) (-1.778376473e-07,0) (-1.275177812e-05,0) (-2.64697796e-22,0) (-1.096373539e-09,0) (-2.116571378e-11,0) (3.816288677e-07,0) (7.029415091e-05,0) (2.067951531e-22,0) (-1.759502375e-08,0) (2.032173328e-10,0) (-7.041690834e-06,0) (-9.234442056e-06,0) (2.714186385e-25,0) (3.778730592e-10,0) (3.371220318e-09,0) (-7.123309402e-13,0) (-3.067020323e-09,0) (9.264422861e-23,0) (-4.169374205e-09,0) (-8.414027643e-11,0) (2.098761966e-06,0) (5.54532595e-06,0) (-9.926167351e-23,0) (-9.442255645e-09,0) (-1.131400601e-10,0) (5.032227385e-06,0) (1.055086583e-06,0) -(-0.01870392239,0) (-0.005666223889,0) (0.0009130148356,0) (-0.0008914920716,0) (0.0002236517882,0) (-2.053323155e-05,0) (-1.204518931e-05,0) (-6.483972824e-07,0) (5.785990742e-06,0) (3.633038737e-06,0) (-1.276610461e-06,0) (3.596617133e-07,0) (1.548277966e-06,0) (-2.360738584e-06,0) (0.03012600167,0) (-0.02661648463,0) (-0.0001013170272,0) (-3.750412402e-07,0) (-0.02410440258,0) (-6.473083976e-06,0) (7.86788762e-09,0) (0.002917313174,0) (-6.209909928e-05,0) (-5.982724624e-08,0) (-0.0008486929007,0) (8.153315783e-11,0) (1.767015122e-07,0) (0.0001524684146,0) (8.386966911e-07,0) (3.506062313e-10,0) (-2.412940959e-06,0) (-1.03489508e-10,0) (4.325370202e-07,0) (-2.813110036e-05,0) (-7.01336135e-11,0) (-1.272009523e-06,0) (-6.63678222e-07,0) (2.141801211e-11,0) (7.20810683e-07,0) (2.366970548e-05,0) (-1.012439589e-10,0) (-8.825188043e-08,0) (-4.302174199e-06,0) (2.262857906e-07,0) (1.343906619e-10,0) (-5.823968285e-07,0) (3.391481584e-11,0) (1.224153722e-06,0) (1.147096904e-06,0) (3.625524393e-11,0) (1.96618936e-06,0) (7.619721113e-07,0) (1.734723476e-18,0) (-0.0002399783128,0) (4.429670749e-06,0) (0.05862781591,0) (-0.03565811638,0) (0,0) (3.134980355e-06,0) (-0.003476641184,0) (-3.253025745e-06,0) (-0.01396980218,0) (-2.710505431e-20,0) (1.136629777e-07,0) (1.037074105e-06,0) (-5.146353529e-09,0) (-0.00182694799,0) (2.710505431e-20,0) (-1.794104248e-08,0) (-0.0001795896175,0) (1.81405844e-07,0) (0.0008103216112,0) (3.388131789e-21,0) (2.246534061e-07,0) (1.460111013e-07,0) (-3.147057971e-10,0) (-0.0001426984983,0) (0,0) (3.165906529e-08,0) (-1.530328056e-10,0) (-5.880359132e-08,0) (-2.120406882e-05,0) (5.29395592e-23,0) (-1.426401455e-08,0) (4.771886505e-10,0) (-9.224878544e-07,0) (5.639404919e-06,0) (0,0) (-1.923071812e-09,0) (3.061682836e-11,0) (1.365337013e-07,0) (3.050917587e-06,0) (-5.065341759e-10,0) (4.235164736e-22,0) (3.046264775e-12,0) (6.475738678e-07,0) (1.629354359e-05,0) (0,0) (9.109682087e-09,0) (-1.822953378e-10,0) (-1.485812014e-06,0) (-3.477463597e-06,0) (0,0) (6.655951109e-09,0) (-5.74589738e-07,0) (1.527580882e-10,0) (1.947745163e-07,0) (-7.857037501e-09,0) (2.117582368e-22,0) (9.043149751e-11,0) (3.224418723e-06,0) (6.035756443e-07,0) (-1.058791184e-22,0) (-1.558553604e-08,0) (1.607444256e-10,0) (1.658167214e-06,0) (-5.670284416e-07,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.0411321873,0) (-0.008339062533,0) (0.0006096469769,0) (-0.001541034196,0) (0.0003931502828,0) (-1.829129434e-05,0) (-1.884297833e-05,0) (-5.725387206e-06,0) (6.503070519e-06,0) (1.447036132e-05,0) (-3.098376047e-06,0) (4.108944902e-07,0) (2.993889774e-06,0) (-0.003692931319,0) (6.684943117e-06,0) (0.006341380197,0) (-0.0001230406465,0) (-2.74369599e-07,0) (-0.04913856285,0) (6.893948142e-06,0) (1.71308782e-08,0) (0.007067222778,0) (1.30112031e-05,0) (-5.544016143e-08,0) (-0.002630298682,0) (1.854554824e-10,0) (-4.611068783e-08,0) (0.0005833114635,0) (-4.475959074e-11,0) (-3.716938248e-07,0) (-5.172975408e-06,0) (-6.23653338e-11,0) (-9.518968852e-07,0) (-7.449260097e-05,0) (-2.062491615e-07,0) (-6.585442473e-11,0) (-1.207582855e-06,0) (4.133017006e-11,0) (9.861243906e-08,0) (4.383718543e-05,0) (-2.959197357e-12,0) (9.323612458e-08,0) (3.492314996e-06,0) (-6.522504806e-10,0) (-1.657548191e-06,0) (-1.703770788e-06,0) (4.242558686e-11,0) (4.549582158e-07,0) (2.634266796e-06,0) (4.460116865e-11,0) (8.116553402e-07,0) (6.443219229e-06,0) (-3.035766083e-18,0) (0.0004829576041,0) (0.0001242870854,0) (5.888692216e-06,0) (0.04723623807,0) (-1.138412281e-18,0) (3.294780257e-06,0) (0.001149751687,0) (-3.89436725e-06,0) (-0.04242691604,0) (-1.694065895e-20,0) (-2.768655948e-10,0) (-2.949608241e-08,0) (-2.64989249e-10,0) (-0.001090599805,0) (3.726944968e-20,0) (3.933175976e-11,0) (0.0002019770285,0) (3.09697559e-07,0) (0.0003194157652,0) (-2.541098842e-21,0) (-1.91547415e-10,0) (-2.098780888e-11,0) (-1.35141104e-08,0) (-0.0001132326063,0) (5.823351512e-22,0) (-2.624027897e-08,0) (-5.605204444e-10,0) (-2.631350537e-06,0) (-2.46417407e-05,0) (2.514629062e-22,0) (1.457134286e-09,0) (-1.394145316e-10,0) (-1.684666273e-07,0) (-8.469855444e-06,0) (2.117582368e-22,0) (-5.243764032e-09,0) (-1.348940671e-10,0) (5.599469354e-08,0) (-1.022219073e-05,0) (1.694065895e-21,0) (1.779518342e-09,0) (2.808845119e-11,0) (1.111762798e-07,0) (5.549890313e-05,0) (-2.249931266e-22,0) (1.163451117e-08,0) (-2.697230875e-10,0) (-7.446974375e-06,0) (-5.385302829e-06,0) (-1.550963649e-25,0) (3.272970404e-10,0) (-3.370708344e-09,0) (9.449748969e-13,0) (3.578609755e-09,0) (6.948317145e-23,0) (9.0329589e-09,0) (1.116684355e-10,0) (8.917771118e-07,0) (5.110647247e-06,0) (5.128519798e-23,0) (2.385951371e-08,0) (1.501339326e-10,0) (2.921382097e-06,0) (1.83702408e-06,0) -(0.02917389264,0) (0.008838028944,0) (-0.001424096841,0) (0.001390526193,0) (-0.0003488462539,0) (3.20272016e-05,0) (1.878777362e-05,0) (1.011353251e-06,0) (-9.024838172e-06,0) (-5.66671952e-06,0) (1.99122386e-06,0) (-5.609910046e-07,0) (-2.414963783e-06,0) (3.131764434e-06,0) (0.02113859613,0) (-0.02661209925,0) (-7.166687639e-05,0) (4.97322524e-07,0) (0.03782720766,0) (-5.177796953e-06,0) (-1.043334764e-08,0) (-0.004535076858,0) (-4.088571921e-05,0) (7.933896824e-08,0) (0.001461529417,0) (-1.081506332e-10,0) (9.410884509e-08,0) (-0.0002381860178,0) (1.194202806e-06,0) (-4.647773923e-10,0) (1.261180451e-06,0) (1.372863619e-10,0) (1.038364612e-06,0) (4.216515965e-05,0) (9.30177865e-11,0) (2.694383648e-07,0) (2.749813509e-06,0) (-2.841116772e-11,0) (-1.995626923e-07,0) (-3.784413631e-05,0) (1.343156087e-10,0) (4.046369427e-06,0) (2.801726811e-06,0) (6.603081789e-07,0) (-1.781739592e-10,0) (-1.048868705e-07,0) (-4.49845343e-11,0) (-4.575800789e-07,0) (-3.241043012e-06,0) (-4.809009413e-11,0) (-7.612857105e-07,0) (-3.494038197e-06,0) (0,0) (-0.0001781248725,0) (-5.875863018e-06,0) (-0.00325358254,0) (-0.03202255516,0) (-4.33680869e-19,0) (2.27129912e-06,0) (-0.002309571161,0) (4.314038673e-06,0) (0.02951567944,0) (-5.421010862e-20,0) (9.109152453e-08,0) (7.736946357e-07,0) (6.824590353e-09,0) (0.002846967579,0) (0,0) (-1.380258363e-08,0) (-0.00014659622,0) (-2.405362853e-07,0) (-0.000837203801,0) (0,0) (1.804379704e-07,0) (1.404322281e-07,0) (4.172190712e-10,0) (0.0002216784642,0) (-8.470329473e-22,0) (2.542909593e-08,0) (2.030650731e-10,0) (-3.866749846e-08,0) (3.31291695e-05,0) (0,0) (-1.148514282e-08,0) (-6.330232694e-10,0) (-4.027290359e-06,0) (-3.296411943e-06,0) (0,0) (-1.548017159e-09,0) (-4.061005464e-11,0) (4.700979461e-08,0) (-5.014173148e-06,0) (-4.001910504e-10,0) (0,0) (-4.040786575e-12,0) (-5.617850981e-07,0) (-2.586134062e-05,0) (1.058791184e-22,0) (7.229839581e-09,0) (2.418124915e-10,0) (6.181658491e-06,0) (1.538533616e-06,0) (-2.64697796e-23,0) (5.335196032e-09,0) (3.786615396e-07,0) (-2.026498209e-10,0) (1.980117903e-07,0) (-6.313576244e-09,0) (-2.117582368e-22,0) (-1.199476441e-10,0) (-1.961240248e-06,0) (-3.991018329e-06,0) (-2.117582368e-22,0) (-1.197908084e-08,0) (-2.132048396e-10,0) (-1.09602752e-06,0) (-5.6965094e-07,0) -(0.2731656004,0) (0.01615280688,0) (-0.02892567571,0) (-0.00681892694,0) (0.00311081643,0) (-0.0001242414384,0) (9.142358452e-06,0) (0.0001499983368,0) (-0.0001504484689,0) (9.162783375e-05,0) (-7.145343949e-05,0) (6.119624794e-05,0) (-3.277313972e-05,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.2695462447,0) (0.02324389201,0) (-0.03424272561,0) (-0.004333899483,0) (0.002291534039,0) (4.332848919e-05,0) (0.0001066902242,0) (-2.294053818e-05,0) (1.892984583e-05,0) (-3.739677434e-05,0) (2.322309841e-05,0) (-2.861059199e-06,0) (6.880804962e-06,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.1208306479,0) (-0.009094799051,0) (-0.002843835608,0) (4.385357727e-05,0) (0.000101455379,0) (-2.497568383e-05,0) (2.882303202e-05,0) (4.591201175e-06,0) (1.25522063e-05,0) (2.574477926e-05,0) (9.479225358e-06,0) (3.178405029e-06,0) (8.85371498e-06,0) (1.738623898e-10,0) (-0.03001102387,0) (0.1997440824,0) (-0.0001221715915,0) (-1.474070406e-10,0) (-0.02386352647,0) (-3.161081699e-06,0) (8.892664166e-13,0) (-0.0003782332269,0) (5.069147332e-07,0) (1.658455888e-13,0) (1.114472307e-05,0) (-1.500172006e-14,0) (-4.573358943e-07,0) (5.007857078e-05,0) (2.271380542e-06,0) (1.920933975e-13,0) (-1.440347086e-05,0) (3.522406586e-14,0) (-3.493952407e-06,0) (4.251167502e-05,0) (1.184301307e-14,0) (8.749326325e-07,0) (-6.649639108e-06,0) (-7.916366537e-15,0) (-3.478571729e-06,0) (4.038721491e-05,0) (5.133587681e-14,0) (-1.83560613e-06,0) (3.443235877e-05,0) (6.48529231e-07,0) (4.700311397e-15,0) (3.713046695e-06,0) (-8.486490438e-15,0) (-1.351843834e-06,0) (9.719683219e-06,0) (-1.014688338e-14,0) (-1.550010209e-06,0) (1.674276403e-05,0) (-1.734723476e-18,0) (-0.000377473387,0) (-9.424696266e-12,0) (-0.008719428334,0) (0.06301289739,0) (0,0) (4.987671827e-06,0) (-0.00143187811,0) (-4.141268852e-10,0) (-0.005892254741,0) (1.694065895e-21,0) (1.859842766e-07,0) (4.229671091e-07,0) (-6.138140965e-13,0) (-6.644558929e-05,0) (0,0) (-2.859798928e-08,0) (-8.511178364e-06,0) (1.891527865e-12,0) (-1.727510638e-05,0) (0,0) (3.662671398e-07,0) (6.488075772e-07,0) (-3.437640456e-13,0) (-2.522670586e-05,0) (0,0) (5.164395866e-08,0) (2.409182199e-13,0) (-3.633301909e-07,0) (1.293020884e-05,0) (0,0) (-2.328816091e-08,0) (-6.937242073e-14,0) (4.52940866e-06,0) (-8.289612776e-06,0) (-5.29395592e-23,0) (-3.139926191e-09,0) (-5.790193031e-15,0) (-4.039157833e-07,0) (1.915478012e-06,0) (-8.160659869e-10,0) (0,0) (-1.266989765e-15,0) (-9.077704595e-06,0) (2.704664962e-05,0) (0,0) (1.483552381e-08,0) (5.416556893e-14,0) (-5.200987241e-06,0) (1.074630952e-05,0) (0,0) (1.08671901e-08,0) (-1.266292565e-07,0) (-3.289808167e-14,0) (-9.136562887e-07,0) (-1.278080324e-08,0) (-2.117582368e-22,0) (-2.091689037e-14,0) (-5.329587217e-06,0) (9.978394523e-06,0) (6.352747104e-22,0) (-2.480045938e-08,0) (-3.214682481e-14,0) (6.229744764e-07,0) (4.252964659e-06,0) -(-0.1395541466,-0.2417148723) (-0.01357903408,-0.02351957694) (0.01423099906,0.02464881341) (0.004074510377,0.007057258989) (-0.001425660096,-0.00246931572) (1.975203663e-05,3.4211531e-05) (-5.71653615e-06,-9.901331055e-06) (-7.743450601e-05,-0.0001341204987) (6.633973277e-05,0.0001149037877) (-4.268839373e-05,-7.393846683e-05) (3.706007127e-05,6.418992637e-05) (-2.936722707e-05,-5.086552936e-05) (1.515866188e-05,2.625557255e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.05906019127,-0.102295252) (0.003122660326,0.005408606339) (0.001450134843,0.002511707226) (-1.663179087e-05,-2.88071068e-05) (-5.691193611e-05,-9.85743649e-05) (4.320980191e-06,7.484157229e-06) (-1.508217198e-05,-2.612308816e-05) (-5.052939195e-06,-8.751947413e-06) (-3.798238809e-06,-6.578742597e-06) (-1.228729791e-05,-2.128222427e-05) (-6.964894952e-06,-1.206355193e-05) (-2.032950537e-06,-3.521173619e-06) (-3.820457386e-06,-6.6172263e-06) (0.005175592884,0.008964389834) (5.304917151e-09,9.188386021e-09) (-0.09224965312,-0.1597810862) (-0.0001541485888,-0.0002669931877) (1.707308574e-10,2.957145206e-10) (0.01114537494,0.01930435567) (2.347871873e-06,4.066633374e-06) (-7.561107841e-13,-1.309622251e-12) (0.000246935527,0.000427704879) (-1.387241408e-07,-2.402772602e-07) (-6.941934646e-14,-1.20237835e-13) (-5.376045784e-06,-9.311584441e-06) (-7.712042081e-13,-1.335764869e-12) (8.292123503e-08,1.436237921e-07) (-4.795061678e-05,-8.305290452e-05) (-4.456588466e-15,-7.71903793e-15) (-4.108193539e-07,-7.115599937e-07) (3.307487654e-06,5.728736662e-06) (2.981602561e-15,5.164290423e-15) (1.947461171e-06,3.373101694e-06) (-2.748230891e-05,-4.760075535e-05) (-1.069619489e-08,-1.8526353e-08) (7.219598505e-15,1.25047114e-14) (3.005871758e-06,5.206322606e-06) (-2.336955431e-15,-4.047724815e-15) (8.74177065e-07,1.514119091e-06) (-1.502558212e-05,-2.602507165e-05) (1.117880202e-16,1.936207203e-16) (2.783083705e-06,4.820442378e-06) (-2.210803363e-05,-3.82922375e-05) (1.37753808e-13,2.385965945e-13) (4.150521297e-07,7.188913765e-07) (-5.857532454e-06,-1.014554382e-05) (-2.638813198e-15,-4.570558867e-15) (4.927792809e-07,8.535187514e-07) (-3.782800919e-06,-6.552003387e-06) (-2.398416777e-15,-4.154179493e-15) (1.233592183e-06,2.136644337e-06) (-8.538607507e-06,-1.478930203e-05) (-4.33680869e-19,5.854691731e-18) (0.0007200330219,0.001247133777) (-0.0001878309588,-0.0003253327639) (3.990106787e-09,6.911067684e-09) (-0.03195096622,-0.05534069685) (4.878909776e-19,7.047314121e-19) (-2.330564706e-05,-4.036656481e-05) (0.0007153114482,0.001238955771) (2.662361385e-10,4.611345193e-10) (0.003245375324,0.005621154951) (-2.117582368e-22,8.470329473e-22) (6.095239344e-10,1.055726423e-09) (-3.44128403e-08,-5.960478783e-08) (7.464270367e-14,1.292849566e-13) (1.059566382e-05,1.835222807e-05) (-8.470329473e-22,6.352747104e-22) (-1.888476037e-09,-3.270936446e-09) (8.862191923e-06,1.534976668e-05) (-1.368859682e-12,-2.370934517e-12) (6.318959677e-06,1.094475921e-05) (-7.940933881e-22,-3.176373552e-22) (7.446402637e-11,1.28975477e-10) (-1.079534703e-15,-1.869809137e-15) (-7.090290898e-08,-1.228074408e-07) (4.706497865e-06,8.151893428e-06) (-3.705769144e-22,1.217609862e-21) (1.33340407e-08,2.309523596e-08) (-4.125560452e-14,-7.145680375e-14) (6.800887061e-06,1.177948193e-05) (-1.445470366e-05,-2.503628115e-05) (9.926167351e-23,-5.29395592e-23) (1.436655647e-09,2.488360574e-09) (2.776996631e-14,4.809899276e-14) (3.119865907e-07,5.403766263e-07) (-1.632104712e-06,-2.826888284e-06) (0,-2.514629062e-22) (-4.064786482e-09,-7.040416709e-09) (2.25289788e-14,3.902133579e-14) (-3.398791457e-07,-5.886879487e-07) (1.948638818e-06,3.375141438e-06) (1.111730743e-21,2.117582368e-22) (2.900715708e-10,5.024186985e-10) (-8.107034924e-16,-1.404180727e-15) (1.611039988e-06,2.790403113e-06) (-1.070561973e-05,-1.854267731e-05) (-1.852884572e-22,5.29395592e-23) (6.102102725e-09,1.056915195e-08) (1.654781311e-14,2.866165354e-14) (4.947043268e-06,8.568530288e-06) (-1.021949476e-05,-1.770068415e-05) (9.305781891e-25,2.688336991e-24) (4.489881054e-12,7.776702106e-12) (-2.191745498e-09,-3.79621456e-09) (-9.634049096e-17,-1.668666247e-16) (-1.590204424e-08,-2.754314857e-08) (-1.588186776e-22,-3.705769144e-22) (3.879285887e-09,6.719120253e-09) (-8.601079384e-15,-1.489750658e-14) (1.863843086e-06,3.228270922e-06) (-3.791159118e-06,-6.566480212e-06) (-6.6174449e-23,1.32348898e-22) (8.070512659e-09,1.397853797e-08) (-9.550114421e-15,-1.654128376e-14) (1.512581421e-06,2.619867872e-06) (-4.456953971e-06,-7.719670724e-06) -(-0.1378654839,-0.2387900227) (-0.0169245535,-0.02931418655) (0.0167882116,0.02907803547) (0.002856832998,0.004948179901) (-0.001021264037,-0.001768881199) (-6.261071557e-05,-0.0001084449405) (-5.097302548e-05,-8.828786994e-05) (5.211057454e-06,9.025816272e-06) (-1.563957284e-05,-2.708853477e-05) (1.958875962e-05,3.392872691e-05) (-7.901662008e-06,-1.368608006e-05) (1.11827671e-06,1.936912078e-06) (-3.986478569e-06,-6.904783425e-06) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.002296938444,0) (0.0004656769935,0) (-3.404442288e-05,0) (8.60557369e-05,0) (-2.195463111e-05,0) (1.021437952e-06,0) (1.052245556e-06,0) (3.19721922e-07,0) (-3.631499723e-07,0) (-8.080661741e-07,0) (1.730221396e-07,0) (-2.294551817e-08,0) (-1.671873287e-07,0) (0.008189657419,0) (5.041046806e-06,0) (-0.008342968697,0) (0.0002452856292,0) (-2.067629571e-07,0) (0.002505844645,0) (-1.362524288e-05,0) (1.28943057e-08,0) (-0.0003814274264,0) (-3.297204231e-05,0) (-4.172364306e-08,0) (0.0001791736462,0) (1.381913284e-10,0) (1.079257912e-07,0) (-3.267927222e-05,0) (-3.366221799e-11,0) (2.800914463e-07,0) (2.957483131e-08,0) (-4.691192177e-11,0) (6.280388515e-07,0) (3.585047097e-06,0) (-8.962099782e-07,0) (-4.954574338e-11,0) (9.752156065e-07,0) (3.109204061e-11,0) (3.176698282e-07,0) (-2.771203269e-06,0) (-2.22648192e-12,0) (1.653561186e-06,0) (-1.853786177e-06,0) (-4.89836296e-10,0) (1.10502967e-06,0) (-9.167977887e-07,0) (3.191879817e-11,0) (5.061688212e-07,0) (-6.78714229e-07,0) (3.355563738e-11,0) (7.856396421e-07,0) (-1.190808539e-06,0) (6.505213035e-19,0) (-0.0009274664534,0) (-0.0002742614059,0) (4.438674186e-06,0) (-0.001474755946,0) (-1.084202172e-19,0) (-1.006015126e-05,0) (-0.002941831249,0) (-2.930994065e-06,0) (0.005259890253,0) (1.799945013e-21,0) (5.998322676e-10,0) (6.199376993e-08,0) (-1.995271809e-10,0) (6.084148142e-05,0) (5.082197684e-20,0) (-7.44667295e-11,0) (-0.0003970796515,0) (2.33129964e-07,0) (0.0003677132413,0) (1.98523347e-23,0) (4.113038732e-10,0) (-1.578850801e-11,0) (2.295141761e-08,0) (6.300650718e-06,0) (-1.588186776e-22,0) (4.941788939e-08,0) (-4.216631935e-10,0) (-3.616195343e-06,0) (5.091702812e-06,0) (5.95570041e-23,0) (-3.504778343e-09,0) (-1.048420309e-10,0) (2.359753035e-07,0) (2.499492298e-07,0) (-1.058791184e-22,0) (9.88648561e-09,0) (-1.014613753e-10,0) (-2.52638343e-07,0) (8.108630087e-07,0) (1.32348898e-22,0) (-3.46259369e-09,0) (2.113178083e-11,0) (2.345799347e-07,0) (-3.336664573e-06,0) (5.29395592e-23,0) (-3.308381734e-08,0) (-2.028902496e-10,0) (2.843321806e-06,0) (-2.094078847e-06,0) (3.101927297e-25,0) (-5.632286098e-11,0) (7.855457093e-09,0) (7.109805969e-13,0) (-7.829784988e-09,0) (-5.95570041e-23,0) (-1.617807133e-08,0) (8.400741329e-11,0) (9.173899183e-07,0) (-1.236998982e-06,0) (5.29395592e-23,0) (-4.115909576e-08,0) (1.129540535e-10,0) (1.15856545e-06,0) (-1.384583023e-06,0) -(-0.05751293495,0) (-0.01742314575,0) (0.002807441229,0) (-0.002741260601,0) (0.0006877098011,0) (-6.313790157e-05,0) (-3.703790973e-05,0) (-1.993765262e-06,0) (1.779141841e-05,0) (1.117127821e-05,0) (-3.925466161e-06,0) (1.105928494e-06,0) (4.760820116e-06,0) (2.356370425e-06,0) (0.002086629187,0) (0.008695215087,0) (-6.2979561e-06,0) (3.741398894e-07,0) (-0.07442571239,0) (3.937534685e-07,0) (-7.848018285e-09,0) (0.008950218454,0) (-7.896863725e-06,0) (5.968412251e-08,0) (-0.002792952986,0) (-8.133735556e-11,0) (5.197317153e-08,0) (0.0004693188178,0) (-7.459501429e-07,0) (-3.500108653e-10,0) (-4.093285999e-06,0) (1.032339543e-10,0) (-9.466882665e-07,0) (-8.422440694e-05,0) (6.995807459e-11,0) (-1.632739084e-06,0) (-4.319618027e-06,0) (-2.136820204e-11,0) (9.874220973e-07,0) (7.401138147e-05,0) (1.010201071e-10,0) (-5.466525505e-06,0) (-8.034065257e-06,0) (-6.503235901e-07,0) (-1.341657236e-10,0) (-4.441394808e-07,0) (-3.383529974e-11,0) (1.834727903e-06,0) (5.4567997e-06,0) (-3.617647595e-11,0) (2.98183865e-06,0) (5.407168305e-06,0) (0,0) (-3.801065212e-06,0) (-4.420846394e-06,0) (0.06307890282,0) (0.006834856211,0) (-1.734723476e-18,0) (1.2360615e-07,0) (-0.0004147197189,0) (3.245439041e-06,0) (-0.05323530859,0) (-1.084202172e-19,0) (-7.133332631e-09,0) (1.11168147e-08,0) (5.132952515e-09,0) (-0.005614192732,0) (-1.355252716e-20,0) (3.611864086e-10,0) (1.48279327e-05,0) (-1.809388448e-07,0) (0.00192530132,0) (-6.776263578e-21,0) (-1.462622461e-08,0) (-4.015748519e-08,0) (3.138645067e-10,0) (-0.0004375922108,0) (8.470329473e-22,0) (-2.062581006e-09,0) (1.526916853e-10,0) (-7.487547447e-09,0) (-6.5275208e-05,0) (-4.235164736e-22,0) (9.665570157e-10,0) (-4.759094266e-10,0) (4.428858264e-06,0) (1.003236761e-05,0) (2.117582368e-22,0) (1.297693598e-10,0) (-3.054149145e-11,0) (7.432534774e-08,0) (9.720891838e-06,0) (2.414566489e-11,0) (8.470329473e-22,0) (-3.039500918e-12,0) (1.39543781e-06,0) (5.069545599e-05,0) (0,0) (-4.776269042e-10,0) (1.818254864e-10,0) (-9.70477885e-06,0) (-5.529115333e-06,0) (0,0) (-4.190493315e-10,0) (-1.078377038e-06,0) (-1.525802291e-10,0) (-6.801392399e-08,0) (5.154379602e-10,0) (2.117582368e-22,0) (-9.02140094e-11,0) (5.837397148e-06,0) (5.909045808e-06,0) (2.64697796e-23,0) (2.987041801e-10,0) (-1.60387982e-10,0) (3.118621718e-06,0) (1.889669192e-07,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0.04586770644,0) (0.1295753448,0) (0.0004442131108,0) (0.1967622424,0) (0.0001704511524,0) (0.07116101842,0) (0.01342434892,0) (0.1479153603,0) (0.05829558339,0) (0.002881188799,0) (0.0986772665,0) (0.03669568318,0) (0.0583789555,0) (0.004863627082,0) (0.02285094543,0) (0.01871025158,0) (0.01720002272,0) (0.0129751607,0) (0.01950909261,0) (0.002216861756,0) (0.007850079801,0) (0.0006684007036,0) (0.01106999276,0) (0.004241350104,0) (0.006378882393,0) (0.0004382569924,0) (0.00246318523,0) (0.0002443597394,0) (0.003066181956,0) (0.001196173181,0) (0.001717101805,0) (2.637892713e-05,0) (0.0006299645073,0) (1.244860412e-05,0) (0.0006474759855,0) (0.0002384489065,0) (0.000314514928,0) (9.546434388e-07,0) (0.0001139889123,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(3.590997234e-05,0) (0.0001233917216,0) (1.30441383e-07,0) (1.553904071e-05,0) (1.536434435e-06,0) (2.779572112e-06,0) (2.900697787e-07,0) (1.694146338e-07,0) (2.480155548e-07,0) (7.759935467e-08,0) (9.02954327e-09,0) (1.753815685e-09,0) (2.272725483e-08,0) (0.05134867755,0) (0.01875202135,0) (0.000278013623,0) (0.005748536394,0) (0.00207432931,0) (0.0001512337715,0) (0.0004583230146,0) (0.0001648728595,0) (3.850112287e-05,0) (0.0005754261716,0) (0.0002097466075,0) (1.254127337e-05,0) (1.450462071e-05,0) (4.081696167e-05,0) (1.394154879e-05,0) (4.99941714e-06,0) (1.463681797e-05,0) (7.757214435e-09,0) (1.511410508e-06,0) (4.698023398e-06,0) (1.404013897e-06,0) (8.766678713e-06,0) (6.146623103e-06,0) (8.264078866e-06,0) (9.044095585e-07,0) (2.283550353e-06,0) (9.876553109e-07,0) (3.043249266e-07,0) (6.038139103e-07,0) (2.400053708e-07,0) (9.769650476e-07,0) (1.981749796e-06,0) (7.468840143e-07,0) (8.787060028e-07,0) (1.618326537e-06,0) (8.543525323e-07,0) (5.00506041e-07,0) (9.817712635e-07,0) (4.454731505e-07,0) (3.469446952e-18,0) (0.003515743553,0) (0.09234509611,0) (0.03477975199,0) (1.223510922e-05,0) (4.33680869e-19,0) (4.597357965e-05,0) (0.02740325923,0) (0.01004796136,0) (0.0003916175239,0) (1.694065895e-21,0) (1.460078625e-06,0) (6.30598451e-05,0) (2.330863833e-05,0) (8.451039346e-05,0) (2.710505431e-20,0) (2.399382941e-10,0) (0.001718607472,0) (0.0006467762177,0) (6.859021545e-05,0) (1.482307658e-21,0) (1.335565741e-06,0) (3.205846614e-06,0) (7.65274698e-06,0) (1.646933149e-05,0) (-8.470329473e-22,0) (4.379161533e-06,0) (1.211169872e-05,0) (2.157052131e-05,0) (8.161268252e-06,0) (0,0) (5.33910383e-06,0) (1.925982866e-05,0) (4.905944391e-05,0) (4.081163393e-07,0) (-8.470329473e-22,0) (3.171881935e-06,0) (1.1505279e-05,0) (2.779490012e-05,0) (1.68620799e-06,0) (1.32348898e-23,0) (1.369395562e-07,0) (3.006229585e-07,0) (6.24704245e-07,0) (5.081771609e-07,0) (0,0) (4.516212835e-07,0) (1.131399868e-06,0) (1.789055475e-06,0) (9.447754395e-07,0) (2.117582368e-22,0) (5.10826975e-11,0) (1.696043397e-06,0) (3.063049089e-06,0) (6.775872177e-06,0) (1.058791184e-22,0) (6.382847646e-07,0) (1.694474736e-06,0) (2.713576222e-06,0) (1.415412032e-06,0) (1.058791184e-22,0) (3.927215262e-07,0) (1.006395786e-06,0) (4.761797554e-07,0) (1.932952223e-06,0) -(0.02151507676,0) (0.08145033313,0) (0.0009225981511,0) (0.009071793741,0) (0.001897530337,0) (0.001271522409,0) (0.000393613206,0) (3.191902604e-05,0) (0.0002180280768,0) (1.351339316e-05,0) (1.003663981e-05,0) (6.66710727e-06,0) (1.372598266e-05,0) (0.01971880285,0) (0.0002195616787,0) (0.0003270306584,0) (2.678465689e-05,0) (0.002763516793,0) (0.106697746,0) (8.901625396e-07,0) (0.0001038820182,0) (0.0345000232,0) (1.0786905e-05,0) (0.0002550410404,0) (0.002603733392,0) (5.086780754e-06,0) (1.296261603e-06,0) (0.01019461019,0) (6.255143051e-06,0) (6.536172276e-06,0) (3.683045246e-05,0) (3.540615072e-06,0) (1.378850213e-05,0) (0.0012674418,0) (5.746639196e-06,0) (4.91232311e-05,0) (0.000126571826,0) (3.717599159e-07,0) (5.395422689e-06,0) (0.0003974504446,0) (3.479206662e-07,0) (5.176068333e-06,0) (7.774311777e-06,0) (2.357456293e-06,0) (1.1427038e-06,0) (1.727367798e-06,0) (7.399816442e-07,0) (1.145978052e-05,0) (3.343258584e-05,0) (4.18479744e-07,0) (5.861896876e-06,0) (1.04002171e-05,0) (-5.421010862e-20,0) (9.561558787e-07,0) (0.03485246954,0) (0.02674278495,0) (0.002291387465,0) (0,0) (1.569546168e-06,0) (0.0004250908481,0) (0.01192913133,0) (0.03599121376,0) (-8.67361738e-19,0) (4.328799598e-08,0) (3.906012346e-08,0) (0.0001448848612,0) (0.05737890751,0) (0,0) (1.172235841e-10,0) (9.806088991e-06,0) (0.0006373039673,0) (0.001947382062,0) (0,0) (1.816924258e-07,0) (7.09263354e-07,0) (2.318653812e-05,0) (0.009023977889,0) (0,0) (2.436045478e-08,0) (7.517683295e-06,0) (2.140748389e-07,0) (0.001279410655,0) (0,0) (2.086878003e-08,0) (2.83498791e-05,0) (0.0001528953655,0) (0.0003576463545,0) (0,0) (6.94006599e-09,0) (7.29799041e-06,0) (6.948945167e-06,0) (0.0008507631173,0) (2.393151383e-11,0) (0,0) (2.620125233e-08,0) (2.63818605e-06,0) (9.527036339e-05,0) (0,0) (1.215275915e-09,0) (1.727758853e-06,0) (4.452695345e-05,0) (2.58813648e-05,0) (0,0) (2.542260728e-09,0) (1.109931996e-05,0) (3.064539702e-06,0) (6.121327117e-07,0) (1.401947502e-09,0) (0,0) (1.253713298e-06,0) (2.653165066e-05,0) (2.635447273e-05,0) (-2.64697796e-23,0) (9.160979474e-11,0) (9.092686847e-07,0) (3.096286743e-06,0) (1.632018929e-07,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (-0.04650791085,0) (0.05339342277,0) (-0.006885511921,0) (0.06582968803,0) (0.005456254699,0) (-0.07128594273,0) (-0.03665265658,0) (0.0950451253,0) (-0.05839246872,0) (-0.01466480269,0) (0.05142104472,0) (-0.03675624203,0) (0.005432133241,0) (0.01745725437,0) (-0.02288938761,0) (-0.009939728979,0) (0.02293658634,0) (-0.01299685736,0) (0.0009346548029,0) (0.006928611436,0) (-0.007863266239,0) (-0.002292082329,0) (0.006540467226,0) (-0.004248384897,0) (0.0007511567492,0) (0.001716174845,0) (-0.002467331594,0) (-0.0007179158406,0) (0.001916075511,0) (-0.00119815967,0) (0.0004232273626,0) (0.0002078052141,0) (-0.0006310325767,0) (-7.912951479e-05,0) (0.0003179706291,0) (-0.0002388411143,0) (9.769891917e-05,0) (1.648674933e-05,0) (-0.0001141856685,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.0008172287347,0) (-0.00280811301,0) (-2.968547159e-06,0) (-0.0003536329813,0) (-3.496572923e-05,0) (-6.325669591e-05,0) (-6.601323888e-06,0) (-3.855489098e-06,0) (-5.64426606e-06,0) (-1.765983606e-06,0) (-2.054917267e-07,0) (-3.991282865e-08,0) (-5.172202734e-07,0) (0.02065391313,0) (-0.01874311768,0) (-2.839598951e-06,0) (0.001922210209,0) (-0.002074278464,0) (-0.00378330843,0) (0.0001500682067,0) (-0.0001650648726,0) (-0.0009079186671,0) (0.0002733644709,0) (-0.0002099969132,0) (-0.000231728652,0) (-1.467732161e-05,0) (1.720867302e-05,0) (-0.0003162091956,0) (-5.007846613e-06,0) (-1.116087826e-05,0) (-1.792231646e-06,0) (-1.513850326e-06,0) (-4.757169056e-06,0) (-3.730015351e-05,0) (1.142734126e-05,0) (-6.157851779e-06,0) (-5.327686836e-06,0) (-9.058902923e-07,0) (3.219670478e-06,0) (-1.974033463e-05,0) (-3.048988288e-07,0) (6.478429413e-07,0) (-3.602534663e-07,0) (-9.787608102e-07,0) (-1.968661101e-06,0) (2.586840302e-06,0) (-8.801255416e-07,0) (3.545150804e-06,0) (-3.546258443e-06,0) (-5.013482219e-07,0) (2.325538149e-06,0) (-2.752961059e-06,0) (-8.67361738e-19,0) (0.001081420423,0) (0.03683490234,0) (-0.03477674716,0) (-0.0005078099275,0) (-3.794707604e-19,0) (2.592330502e-05,0) (0.01315681817,0) (-0.01006015626,0) (-0.00380032527,0) (-8.809142651e-20,0) (5.636850501e-07,0) (2.319957752e-05,0) (-2.332385676e-05,0) (-0.001925267643,0) (1.355252716e-20,0) (7.146844379e-11,0) (0.0005565170578,0) (-0.0006475377206,0) (0.0001477002938,0) (-1.694065895e-21,0) (5.082980186e-07,0) (-3.210905036e-06,0) (1.660522345e-06,0) (-0.0003762065667,0) (1.694065895e-21,0) (1.287500472e-06,0) (-1.21303074e-05,0) (4.235369307e-05,0) (-4.425289125e-05,0) (4.65868121e-21,0) (2.385662691e-06,0) (-1.929410409e-05,0) (2.488333702e-06,0) (-1.793936166e-05,0) (2.117582368e-21,0) (9.350130233e-07,0) (-1.152532848e-05,0) (1.956543723e-05,0) (-2.651761138e-05,0) (-3.705769144e-22,0) (4.335966598e-08,0) (-3.011056923e-07,0) (1.016306761e-06,0) (-1.070586547e-05,0) (-2.64697796e-23,0) (2.401865277e-07,0) (-1.133223818e-06,0) (-4.430724484e-06,0) (4.166258622e-06,0) (5.29395592e-23,0) (-3.427165247e-10,0) (7.278680151e-07,0) (-3.068866642e-06,0) (2.654190084e-06,0) (-5.29395592e-23,0) (1.64497237e-07,0) (-1.697154657e-06,0) (6.207993408e-06,0) (-6.345131393e-06,0) (1.32348898e-22,0) (9.009374426e-08,0) (-1.008053064e-06,0) (2.068286092e-06,0) (-1.472957506e-06,0) -(0.006996970788,0) (0.02648866226,0) (0.0003000404036,0) (0.002950260254,0) (0.0006171004868,0) (0.0004135149158,0) (0.0001280079144,0) (1.038046461e-05,0) (7.090544467e-05,0) (4.394723674e-06,0) (3.264040205e-06,0) (2.168226279e-06,0) (4.463860426e-06,0) (-0.0197553569,0) (0.003169952543,0) (-0.001001057065,0) (0.0004308924624,0) (-0.002770174458,0) (0.0345564099,0) (-1.463376791e-05,0) (-0.000104145023,0) (0.01124524197,0) (8.482571159e-05,0) (-0.0002556526339,0) (0.0007911948594,0) (-5.099026091e-06,0) (4.407108103e-06,0) (0.003311940614,0) (-7.032866511e-06,0) (-6.547290259e-06,0) (2.17110916e-05,0) (-3.549379796e-06,0) (-6.299896001e-06,0) (0.000423327795,0) (-5.761058672e-06,0) (3.827017946e-05,0) (1.944685014e-05,0) (-3.72626502e-07,0) (3.938617866e-06,0) (0.0001271093011,0) (-3.486916283e-07,0) (8.356272429e-08,0) (4.1630784e-06,0) (-8.202975706e-07,0) (-1.144619623e-06,0) (2.265084665e-06,0) (-7.4172067e-07,0) (7.646110877e-06,0) (7.028005024e-06,0) (-4.193909109e-07,0) (3.865265904e-06,0) (1.465586965e-06,0) (4.33680869e-19,0) (6.036641356e-05,0) (-0.03492203779,0) (0.0248557125,0) (-0.01195439354,0) (2.168404345e-19,0) (3.980786074e-05,0) (0.003563583505,0) (-0.01195701747,0) (0.009444674026,0) (4.33680869e-19,0) (-6.897536925e-07,0) (3.64387135e-06,0) (-0.0001452631239,0) (0.01867201301,0) (4.065758147e-20,0) (-5.822791923e-09,0) (-0.0001187671813,0) (-0.0006389488347,0) (0.0008196149627,0) (0,0) (-2.79072853e-06,0) (-2.5788548e-06,0) (-2.32486879e-05,0) (0.002942712557,0) (6.776263578e-21,0) (-3.739146372e-07,0) (-7.534478148e-06,0) (1.681240677e-06,0) (0.0004156051342,0) (-3.388131789e-21,0) (-3.079720876e-07,0) (-2.842608235e-05,0) (-3.184660905e-05,0) (0.0002010405408,0) (-6.776263578e-21,0) (-1.028458898e-07,0) (-7.315992414e-06,0) (1.276502879e-05,0) (0.000267013377,0) (-5.020416579e-10,0) (0,0) (-2.62595584e-08,0) (1.224289849e-06,0) (3.061993997e-05,0) (-4.235164736e-22,0) (-2.317871362e-08,0) (-1.732223519e-06,0) (6.817124161e-06,0) (1.627774038e-05,0) (-5.29395592e-23,0) (-4.037988332e-08,0) (5.914031108e-06,0) (-3.068111963e-06,0) (-1.752991826e-06,0) (-2.137047511e-08,0) (4.235164736e-22,0) (-1.256735752e-06,0) (1.465535905e-05,0) (2.691960492e-06,0) (2.64697796e-23,0) (-4.779938991e-09,0) (-9.112894287e-07,0) (1.646291736e-06,0) (-4.897159534e-07,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0.0616499241,0) (-0.05612508663,0) (-0.005524837477,0) (-0.09849767551,0) (0.003987118413,0) (0.0945105571,0) (-0.03774692604,0) (-0.03968505748,0) (0.07743198352,0) (-0.01322794725,0) (-0.0355135707,0) (0.04874151795,0) (-0.03985523459,0) (0.009503484414,0) (0.03035175017,0) (-0.02158210048,0) (0.004347737172,0) (0.01723436331,0) (-0.01398296519,0) (0.00355609991,0) (0.01042686528,0) (-0.002231696874,0) (-0.003401939794,0) (0.005633636669,0) (-0.004236003097,0) (0.0009642830837,0) (0.003271720014,0) (-0.0007253584191,0) (-0.0008634759321,0) (0.001588834351,0) (-0.000973594934,0) (0.0001368578979,0) (0.0008367370361,0) (-6.904381328e-05,0) (-0.0002476788081,0) (0.0003167226213,0) (-0.0001631146387,0) (1.171560823e-05,0) (0.0001513990305,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.0006430541106,0) (-0.002209624475,0) (-2.335865557e-06,0) (-0.0002782637621,0) (-2.751354053e-05,0) (-4.977489973e-05,0) (-5.19439452e-06,0) (-3.03377501e-06,0) (-4.441312862e-06,0) (-1.389602407e-06,0) (-1.616956109e-07,0) (-3.140627274e-08,0) (-4.069859621e-07,0) (-0.02315446542,0) (0.02486709624,0) (-0.0002113144789,0) (-0.002883591821,0) (0.002752586386,0) (-0.002965630851,0) (-0.0002318971576,0) (0.0002190437346,0) (-0.0007133624739,0) (-0.0002270707624,0) (0.0002787001547,0) (-0.0001841079618,0) (1.946548646e-05,0) (-1.743881751e-05,0) (-0.0002488508671,0) (6.647567465e-06,0) (-1.942370938e-05,0) (-1.356825305e-06,0) (2.009289265e-06,0) (-7.120632471e-06,0) (-2.917357685e-05,0) (2.017518414e-06,0) (8.169870928e-06,0) (-1.023318319e-05,0) (1.202217678e-06,0) (7.088695561e-07,0) (-1.562354862e-05,0) (4.044755587e-07,0) (3.404607548e-08,0) (-4.521418737e-07,0) (1.300895681e-06,0) (-2.972631304e-06,0) (1.388004183e-06,0) (1.167951802e-06,0) (1.454595627e-06,0) (-3.315964822e-06,0) (6.652579445e-07,0) (1.014281671e-06,0) (-2.410363274e-06,0) (1.734723476e-18,0) (-0.001830745551,0) (-0.04184804203,0) (0.04614153827,0) (-0.0003918889316,0) (6.505213035e-19,0) (-1.505671622e-05,0) (-0.0107099765,0) (0.01335057348,0) (-0.003158834692,0) (-2.032879073e-20,0) (-6.739309617e-07,0) (-3.000331146e-05,0) (3.095587548e-05,0) (-0.001514871375,0) (0,0) (-1.267303587e-10,0) (-0.0008741803541,0) (0.0008591989311,0) (5.958119995e-05,0) (-1.694065895e-21,0) (-6.219833605e-07,0) (4.261561381e-06,0) (-4.506042692e-06,0) (-0.0002959797984,0) (-2.382280164e-21,0) (-2.325279806e-06,0) (1.61001834e-05,0) (1.56959449e-05,0) (-3.949717088e-05,0) (0,0) (-2.219766983e-06,0) (2.561091166e-05,0) (-3.502433912e-05,0) (-1.382955411e-05,0) (3.546950467e-21,0) (-1.682357216e-06,0) (1.529640096e-05,0) (-6.160454092e-06,0) (-2.125727712e-05,0) (0,0) (-7.037685441e-08,0) (3.9958929e-07,0) (2.960709067e-07,0) (-8.452535281e-06,0) (1.058791184e-22,0) (-1.588206347e-07,0) (1.504087388e-06,0) (-4.685734219e-06,0) (2.429661067e-06,0) (0,0) (-2.96845995e-10,0) (-7.277574765e-07,0) (4.071144148e-06,0) (-3.096918026e-06,0) (-3.30872245e-22,0) (-3.56383646e-07,0) (2.252412441e-06,0) (2.637815303e-06,0) (-5.847758739e-06,0) (5.29395592e-23,0) (-2.276567175e-07,0) (1.337660336e-06,0) (1.200711633e-06,0) (-2.564584225e-06,0) -(-0.01091369342,0) (-0.04131632783,0) (-0.0004679952334,0) (-0.004601739364,0) (-0.0009625373212,0) (-0.000644989832,0) (-0.0001996634222,0) (-1.619117925e-05,0) (-0.0001105964721,0) (-6.854775913e-06,0) (-5.091165187e-06,0) (-3.381943069e-06,0) (-6.962613624e-06,0) (0.02620752866,0) (0.002224269497,0) (-0.001000892129,0) (0.0003047929621,0) (0.003673383099,0) (-0.05422961591,0) (-1.170549913e-05,0) (0.0001381032981,0) (-0.01748116626,0) (5.58488008e-05,0) (0.0003390297478,0) (-0.001362512354,0) (6.763664198e-06,0) (2.347166408e-06,0) (-0.005173910596,0) (-1.001395262e-05,0) (8.679345149e-06,0) (-1.134781363e-05,0) (4.708510543e-06,0) (-1.51237669e-05,0) (-0.0006345178053,0) (7.640857198e-06,0) (-8.106428758e-06,0) (-8.057400327e-05,0) (4.942920937e-07,0) (-1.090440533e-06,0) (-0.0002032277807,0) (4.625928184e-07,0) (-3.831370518e-06,0) (-2.711142746e-06,0) (-2.393650938e-06,0) (1.517526643e-06,0) (4.079308649e-07,0) (9.838166031e-07,0) (-2.85806264e-06,0) (-1.98571424e-05,0) (5.56293275e-07,0) (-1.496586117e-06,0) (-6.720478032e-06,0) (-6.505213035e-19,0) (4.480721443e-05,0) (0.04632333236,0) (-0.001379381288,0) (-0.01073557061,0) (-4.33680869e-19,0) (2.884086942e-05,0) (0.002367327906,0) (0.01585694053,0) (-0.01995489753,0) (0,0) (-5.527808322e-07,0) (2.718459272e-06,0) (0.0001926337373,0) (-0.02909695075,0) (-2.710505431e-20,0) (-4.47964897e-09,0) (-9.694780846e-05,0) (0.0008472184569,0) (-0.0008468054569,0) (-5.421010862e-20,0) (-2.241467871e-06,0) (-2.480320484e-06,0) (3.082178995e-05,0) (-0.004571428628,0) (1.355252716e-20,0) (-3.003345517e-07,0) (9.997786745e-06,0) (1.10553403e-06,0) (-0.0006493401365,0) (1.694065895e-21,0) (-2.479739066e-07,0) (3.770913572e-05,0) (-0.0001390322279,0) (-0.0001175146047,0) (0,0) (-8.278796515e-08,0) (9.703906891e-06,0) (4.395115462e-06,0) (-0.0004388356181,0) (-3.966417036e-10,0) (0,0) (3.483258316e-08,0) (-1.062099363e-06,0) (-4.860039762e-05,0) (-4.235164736e-22,0) (-1.83956344e-08,0) (2.297772888e-06,0) (-2.83623588e-05,0) (-7.201757854e-06,0) (0,0) (-3.23672139e-08,0) (-3.897417542e-06,0) (4.070176231e-06,0) (-1.782127644e-06,0) (-1.71723915e-08,0) (0,0) (1.666924655e-06,0) (-8.914065602e-06,0) (-1.780002849e-05,0) (5.29395592e-23,0) (-3.673872713e-09,0) (1.208697071e-06,0) (-1.088177979e-06,0) (-4.919808827e-07,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (1.333601076e-05,0) (-0.003680518671,0) (0.01171062439,0) (0.004572524643,0) (-0.001931974151,0) (1.016225988e-05,0) (-0.003695330387,0) (0.003163975381,0) (-1.380679875e-06,0) (-0.002791090092,0) (0.002119938484,0) (-1.702859645e-06,0) (0.001336173644,0) (-0.001159269776,0) (4.948719016e-07,0) (5.602991138e-05,0) (-5.170347486e-05,0) (1.165106662e-08,0) (0.0004402708215,0) (-0.0003880446353,0) (1.452039402e-07,0) (-0.0002896023254,0) (0.0002398595806,0) (-1.282564785e-07,0) (0.0001483925852,0) (-0.0001273107664,0) (5.926285014e-08,0) (-7.692981325e-05,0) (6.523609042e-05,0) (-3.032478854e-08,0) (4.206025406e-05,0) (-3.160521265e-05,0) (3.109924057e-08,0) (-1.970181647e-05,0) (1.391253042e-05,0) (-1.452397306e-08,0) (7.57314583e-06,0) (-4.370287337e-06,0) (1.070626807e-08,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.004214043356,0) (0.006158998385,0) (0.0001312011809,0) (-0.0007825700286,0) (-0.000160366703,0) (0.0001179069761,0) (2.941101487e-05,0) (-1.215575976e-05,0) (-1.292825713e-05,0) (3.591247411e-06,0) (1.211948785e-06,0) (2.186819431e-07,0) (-9.353687809e-07,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.04520166927,0) (0.04251668573,0) (-0.0009345582901,0) (-0.0001451268835,0) (0.0002799358963,0) (0.0005029806326,0) (-0.0003063111856,0) (-7.350246924e-05,0) (0.0001538232273,0) (3.114230238e-05,0) (-2.423650254e-05,0) (1.916106456e-05,0) (2.552626129e-05,0) (1.454931824e-06,0) (-0.003157854218,0) (0.007512458075,0) (0.0005195851016,0) (-1.088795504e-06,0) (0.03421108654,0) (-7.146290097e-06,0) (-1.177097021e-08,0) (-0.001457959397,0) (-6.924319911e-07,0) (7.086881675e-10,0) (-1.038967993e-05,0) (9.381966906e-10,0) (-1.140640338e-05,0) (0.001087813846,0) (-1.904659493e-05,0) (-3.587190187e-09,0) (0.0001295991408,0) (1.20807976e-09,0) (5.088937078e-05,0) (-0.0006397323042,0) (9.728329649e-10,0) (-2.632356776e-05,0) (0.0001948452291,0) (1.377274291e-10,0) (-1.900743854e-05,0) (0.0002168844333,0) (1.768045232e-10,0) (1.738073434e-06,0) (-3.331910854e-05,0) (-2.35095165e-06,0) (-4.003305574e-11,0) (-1.444095283e-05,0) (1.856004633e-10,0) (-8.44366819e-06,0) (5.955031546e-05,0) (1.173764161e-10,0) (-3.04711323e-06,0) (3.220324779e-05,0) (-5.421010862e-19,0) (9.495322441e-05,0) (7.430118958e-08,0) (-0.00369666856,0) (0.02112509155,0) (6.505213035e-19,0) (6.333326623e-05,0) (0.001467685891,0) (-1.522189737e-06,0) (0.003983623004,0) (0,0) (-1.128629076e-06,0) (1.486140405e-06,0) (-1.732577337e-08,0) (0.0006790959101,0) (8.470329473e-22,0) (-9.281519799e-09,0) (-5.628658706e-06,0) (-6.662351652e-09,0) (-1.747322974e-05,0) (5.421010862e-20,0) (-4.549907229e-06,0) (-1.145926933e-05,0) (-2.539534721e-08,0) (0.0005202223217,0) (0,0) (-6.099495322e-07,0) (1.186146372e-08,0) (1.038789438e-05,0) (-0.0002534353773,0) (6.776263578e-21,0) (-5.02811008e-07,0) (4.132508469e-09,0) (0.000156366619,0) (-0.0002955184562,0) (0,0) (-1.679232679e-07,0) (1.383585823e-09,0) (-3.776354522e-05,0) (0.0001676407959,0) (-8.088281908e-10,0) (0,0) (1.092177589e-11,0) (-1.716212179e-05,0) (5.082791124e-05,0) (1.694065895e-21,0) (-3.774756953e-08,0) (5.146970487e-10,0) (2.38628948e-05,0) (-5.030265065e-05,0) (2.117582368e-22,0) (-6.59283491e-08,0) (1.303346218e-06,0) (6.607505923e-10,0) (8.223005948e-06,0) (-3.476269999e-08,0) (4.235164736e-22,0) (2.906841531e-10,0) (-2.422359532e-05,0) (4.450385645e-05,0) (0,0) (-7.6060703e-09,0) (1.822462067e-10,0) (6.185128518e-07,0) (3.673086727e-06,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (-0.0002997192672,-0.0005191289988) (0.09925944203,0.1719223967) (0.0005701036329,0.0009874484577) (0.03744131566,0.06485026102) (-1.08363822e-05,-1.876916455e-05) (5.12637978e-06,8.879150237e-06) (-0.0004333454456,-0.000750576329) (-0.004174757703,-0.007230892451) (-5.79928862e-07,-1.004466254e-06) (-0.0003092991382,-0.0005357218221) (-0.008557666191,-0.01482231264) (-1.127253589e-06,-1.952460489e-06) (0.001441927363,0.002497491453) (0.0001026368809,0.0001777722925) (1.949578464e-07,3.376768953e-07) (7.957927152e-05,0.0001378353415) (6.761905753e-05,0.0001171196432) (1.853059582e-08,3.209593345e-08) (0.0007081325001,0.001226521469) (7.017291895e-05,0.0001215430609) (9.836838076e-08,1.703790333e-07) (-3.926527806e-05,-6.800945657e-05) (-0.000555379596,-0.0009619456778) (-7.501276439e-08,-1.299259191e-07) (0.0001990917172,0.0003448369695) (1.15125293e-05,1.994028567e-05) (2.660804959e-08,4.608649378e-08) (-1.201453687e-05,-2.080978829e-05) (-0.0001308978504,-0.0002267217275) (-1.801120482e-08,-3.119632186e-08) (0.0001320177961,0.0002286615304) (1.379282385e-06,2.388987168e-06) (1.705203038e-08,2.953498298e-08) (-1.642038463e-06,-2.844094046e-06) (-6.621122398e-05,-0.000114681204) (-8.667301526e-09,-1.501220661e-08) (3.661879991e-05,6.342562196e-05) (3.18796139e-08,5.521711101e-08) (4.775645764e-09,8.271661102e-09) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.000923337689,-0.00159926779) (0.0008274199475,0.001433133388) (-5.55619918e-06,-9.623619276e-06) (-3.00319403e-06,-5.201684645e-06) (3.982825217e-06,6.898455633e-06) (1.175840002e-05,2.036614625e-05) (-4.157662878e-06,-7.201283346e-06) (-2.677457455e-06,-4.637492347e-06) (2.594031055e-06,4.492993584e-06) (1.179960774e-06,2.043752012e-06) (-3.634784569e-07,-6.295631548e-07) (1.553863596e-07,2.691370696e-07) (5.193486208e-07,8.995381981e-07) (0.03245066753,0.05620620491) (1.973358379e-05,3.417956974e-05) (0.003074044889,0.005324401932) (-0.003612640396,-0.006257276715) (-1.712840758e-06,-2.966727218e-06) (0.0006726502744,0.001165064451) (-7.897721341e-05,-0.0001367925463) (-9.66799994e-09,-1.67454671e-08) (-2.492556751e-05,-4.317234933e-05) (2.421005667e-06,4.19330482e-06) (3.489741388e-10,6.044409389e-10) (-3.762967448e-07,-6.517650808e-07) (-8.094592238e-08,-1.402024502e-07) (3.136037117e-05,5.431775621e-05) (2.045657133e-05,3.54318209e-05) (6.618798767e-10,1.146409575e-09) (-2.146830323e-05,-3.718419194e-05) (8.675245077e-07,1.502596524e-06) (-9.606141336e-11,-1.663832486e-10) (1.456791745e-05,2.523237319e-05) (-1.076291122e-05,-1.864190907e-05) (1.04629614e-07,1.812238073e-07) (-8.956602146e-10,-1.551328998e-09) (2.547207111e-05,4.411892133e-05) (-6.797765478e-11,-1.177407519e-10) (6.283968979e-06,1.088415354e-05) (5.35510915e-06,9.275321128e-06) (-1.527935823e-11,-2.646462476e-11) (1.016270017e-06,1.760231303e-06) (2.862275528e-06,4.95760664e-06) (-2.747461897e-10,-4.758743597e-10) (7.443505779e-07,1.28925302e-06) (4.771932706e-06,8.265229897e-06) (-7.264500146e-11,-1.258248334e-10) (1.575517403e-06,2.728876191e-06) (4.761717681e-06,8.247536954e-06) (-3.577407697e-11,-6.196251891e-11) (1.541553266e-06,2.67004858e-06) (3.194233381e-06,5.532574508e-06) (0,-8.67361738e-19) (-0.002729426434,-0.004727505259) (0.06324356095,0.1095410608) (3.126494954e-05,5.415248111e-05) (0.0002650767828,0.0004591264557) (-2.168404345e-19,-4.33680869e-19) (0.0001065037686,0.0001844699384) (-0.006663150733,-0.01154091561) (-9.127041456e-07,-1.580849952e-06) (0.0002416297276,0.0004185149648) (-1.694065895e-21,-8.470329473e-22) (1.483669546e-06,2.569791035e-06) (-3.500462032e-05,-6.06297809e-05) (-8.719713196e-09,-1.510298628e-08) (1.471765147e-05,2.549172011e-05) (-4.235164736e-22,-8.470329473e-22) (6.08483442e-09,1.053924237e-08) (-3.835660981e-05,-6.643559699e-05) (-3.797649481e-09,-6.577721851e-09) (1.178686968e-06,2.041545716e-06) (-1.694065895e-21,-1.694065895e-21) (2.4179593e-07,4.188028358e-07) (2.191988206e-10,3.796634942e-10) (-2.364132934e-05,-4.094798358e-05) (1.230236002e-05,2.130831261e-05) (1.694065895e-21,-1.694065895e-21) (1.181594739e-06,2.046582122e-06) (1.185010832e-09,2.052498968e-09) (-4.056713351e-05,-7.026433636e-05) (-2.316881374e-05,-4.012956255e-05) (2.117582368e-21,1.694065895e-21) (-2.188570265e-06,-3.790714895e-06) (-5.101434888e-09,-8.835944417e-09) (6.486224796e-05,0.000112344709) (-2.66489559e-06,-4.61573456e-06) (1.270549421e-21,1.270549421e-21) (-1.304105758e-06,-2.258777432e-06) (-2.554688277e-09,-4.424849894e-09) (3.739300532e-05,6.476658507e-05) (4.052238551e-06,7.018683054e-06) (-5.29395592e-23,-2.117582368e-22) (-1.147182595e-08,-1.986978541e-08) (-1.153315372e-11,-1.997600821e-11) (4.290322277e-06,7.431056164e-06) (1.630475981e-06,2.824067239e-06) (0,-2.117582368e-22) (-8.329871479e-08,-1.442776062e-07) (-9.227744456e-11,-1.598292224e-10) (3.112744687e-06,5.391431949e-06) (4.610680091e-06,7.985932175e-06) (3.176373552e-22,2.117582368e-22) (-4.072151729e-12,-7.053173691e-12) (-4.732118624e-07,-8.196269885e-07) (-4.150544398e-10,-7.188953777e-10) (1.376158085e-05,2.383575722e-05) (1.058791184e-22,2.117582368e-22) (-1.530521796e-07,-2.650941513e-07) (-1.73488401e-10,-3.004907251e-10) (5.513119534e-06,9.54900314e-06) (4.337960104e-06,7.513567301e-06) (-1.588186776e-22,-1.058791184e-22) (-7.700519144e-08,-1.33376904e-07) (-8.508942103e-11,-1.473792004e-10) (6.216831785e-07,1.076786851e-06) (6.222146986e-06,1.077707471e-05) -(0.05157424969,0.08932922082) (0.07911949656,0.1370389879) (0.005517042647,0.009555798172) (-0.009454263379,-0.01637526452) (-0.002817873889,-0.004880700745) (0.001260905509,0.002183952404) (0.0005417059474,0.0009382622237) (-8.342600894e-05,-0.0001444980862) (-0.0001916579055,-0.0003319612299) (2.369564209e-05,4.104205603e-05) (2.020298538e-05,3.499259714e-05) (6.741548682e-06,1.167670484e-05) (-1.149346843e-05,-1.990727127e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.05227305888,0) (-0.01059774195,0) (0.0007747731012,0) (-0.0019584315,0) (0.0004996371268,0) (-2.324558865e-05,0) (-2.394669917e-05,0) (-7.276138765e-06,0) (8.264461737e-06,0) (1.838973561e-05,0) (-3.937587669e-06,0) (5.221874471e-07,0) (3.804800733e-06,0) (0.003294115467,0) (-5.03865326e-06,0) (8.521411615e-05,0) (8.201923211e-05,0) (2.067578889e-07,0) (-0.06268694534,0) (-4.461298473e-06,0) (-1.290932257e-08,0) (0.008994674824,0) (-1.566384246e-05,0) (4.177343488e-08,0) (-0.003310642092,0) (-1.39836719e-10,0) (4.550215342e-08,0) (0.0007412007475,0) (3.371897556e-11,0) (-2.135755559e-07,0) (-6.832987415e-06,0) (4.698765009e-11,0) (-6.359455323e-07,0) (-9.524322186e-05,0) (-1.168207208e-06,0) (4.963625375e-11,0) (-6.28702053e-07,0) (-3.114294568e-11,0) (4.478956051e-07,0) (5.538823034e-05,0) (2.230680666e-12,0) (1.774135912e-06,0) (2.782574797e-06,0) (4.907366656e-10,0) (-1.097731374e-06,0) (-3.17533837e-06,0) (-3.19703626e-11,0) (1.108827398e-06,0) (2.817216516e-06,0) (-3.361210006e-11,0) (1.86095787e-06,0) (7.359028335e-06,0) (-4.33680869e-19,0) (-0.0002852827998,0) (-0.0001093982521,0) (-4.438290702e-06,0) (0.0612087474,0) (-1.029992064e-18,0) (-5.672657459e-06,0) (-0.001412428299,0) (2.934551322e-06,0) (-0.05104289932,0) (5.844527336e-20,0) (2.315741605e-10,0) (2.280737082e-08,0) (1.99657454e-10,0) (-0.001386055972,0) (2.202285663e-20,0) (-2.218079148e-11,0) (-0.0001285817751,0) (-2.334044471e-07,0) (0.000791823636,0) (2.435219723e-21,0) (1.565366177e-10,0) (1.581342029e-11,0) (4.980086481e-09,0) (-0.0001439248567,0) (-5.029258124e-22,0) (1.452916396e-08,0) (4.223110462e-10,0) (-7.100395277e-06,0) (-2.760876911e-05,0) (-2.580803511e-22,0) (-1.566034151e-09,0) (1.050286112e-10,0) (1.196885357e-08,0) (-1.098689074e-05,0) (3.374896899e-22,0) (2.91435589e-09,0) (1.016381852e-10,0) (-1.778376473e-07,0) (-1.275177812e-05,0) (-2.64697796e-22,0) (-1.096373539e-09,0) (-2.116571378e-11,0) (3.816288677e-07,0) (7.029415091e-05,0) (1.852884572e-22,0) (-1.759502375e-08,0) (2.032173328e-10,0) (-7.041690834e-06,0) (-9.234442056e-06,0) (2.584939414e-25,0) (3.778730592e-10,0) (3.371220318e-09,0) (-7.123309402e-13,0) (-3.067020323e-09,0) (8.602678371e-23,0) (-4.169374205e-09,0) (-8.414027643e-11,0) (2.098761966e-06,0) (5.54532595e-06,0) (-9.926167351e-23,0) (-9.442255645e-09,0) (-1.131400601e-10,0) (5.032227385e-06,0) (1.055086583e-06,0) -(-0.01870392239,0) (-0.005666223889,0) (0.0009130148356,0) (-0.0008914920716,0) (0.0002236517882,0) (-2.053323155e-05,0) (-1.204518931e-05,0) (-6.483972824e-07,0) (5.785990742e-06,0) (3.633038737e-06,0) (-1.276610461e-06,0) (3.596617133e-07,0) (1.548277966e-06,0) (-2.360738584e-06,0) (0.03012600167,0) (-0.02661648463,0) (-0.0001013170272,0) (-3.750412402e-07,0) (-0.02410440258,0) (-6.473083976e-06,0) (7.86788762e-09,0) (0.002917313174,0) (-6.209909928e-05,0) (-5.982724624e-08,0) (-0.0008486929007,0) (8.153315783e-11,0) (1.767015122e-07,0) (0.0001524684146,0) (8.386966911e-07,0) (3.506062313e-10,0) (-2.412940959e-06,0) (-1.03489508e-10,0) (4.325370202e-07,0) (-2.813110036e-05,0) (-7.01336135e-11,0) (-1.272009523e-06,0) (-6.63678222e-07,0) (2.141801211e-11,0) (7.20810683e-07,0) (2.366970548e-05,0) (-1.012439589e-10,0) (-8.825188043e-08,0) (-4.302174199e-06,0) (2.262857906e-07,0) (1.343906619e-10,0) (-5.823968285e-07,0) (3.391481584e-11,0) (1.224153722e-06,0) (1.147096904e-06,0) (3.625524393e-11,0) (1.96618936e-06,0) (7.619721113e-07,0) (1.734723476e-18,0) (-0.0002399783128,0) (4.429670749e-06,0) (0.05862781591,0) (-0.03565811638,0) (-4.33680869e-19,0) (3.134980355e-06,0) (-0.003476641184,0) (-3.253025745e-06,0) (-0.01396980218,0) (-2.710505431e-20,0) (1.136629777e-07,0) (1.037074105e-06,0) (-5.146353529e-09,0) (-0.00182694799,0) (0,0) (-1.794104248e-08,0) (-0.0001795896175,0) (1.81405844e-07,0) (0.0008103216112,0) (3.388131789e-21,0) (2.246534061e-07,0) (1.460111013e-07,0) (-3.147057971e-10,0) (-0.0001426984983,0) (8.470329473e-22,0) (3.165906529e-08,0) (-1.530328056e-10,0) (-5.880359132e-08,0) (-2.120406882e-05,0) (1.058791184e-22,0) (-1.426401455e-08,0) (4.771886505e-10,0) (-9.224878544e-07,0) (5.639404919e-06,0) (0,0) (-1.923071812e-09,0) (3.061682836e-11,0) (1.365337013e-07,0) (3.050917587e-06,0) (-5.065341759e-10,0) (4.235164736e-22,0) (3.046264775e-12,0) (6.475738678e-07,0) (1.629354359e-05,0) (0,0) (9.109682087e-09,0) (-1.822953378e-10,0) (-1.485812014e-06,0) (-3.477463597e-06,0) (0,0) (6.655951109e-09,0) (-5.74589738e-07,0) (1.527580882e-10,0) (1.947745163e-07,0) (-7.857037501e-09,0) (1.058791184e-22,0) (9.043149751e-11,0) (3.224418723e-06,0) (6.035756443e-07,0) (-1.058791184e-22,0) (-1.558553604e-08,0) (1.607444256e-10,0) (1.658167214e-06,0) (-5.670284416e-07,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (-0.04650791085,0) (0.05339342277,0) (-0.006885511921,0) (0.06582968803,0) (0.005456254699,0) (-0.07128594273,0) (-0.03665265658,0) (0.0950451253,0) (-0.05839246872,0) (-0.01466480269,0) (0.05142104472,0) (-0.03675624203,0) (0.005432133241,0) (0.01745725437,0) (-0.02288938761,0) (-0.009939728979,0) (0.02293658634,0) (-0.01299685736,0) (0.0009346548029,0) (0.006928611436,0) (-0.007863266239,0) (-0.002292082329,0) (0.006540467226,0) (-0.004248384897,0) (0.0007511567492,0) (0.001716174845,0) (-0.002467331594,0) (-0.0007179158406,0) (0.001916075511,0) (-0.00119815967,0) (0.0004232273626,0) (0.0002078052141,0) (-0.0006310325767,0) (-7.912951479e-05,0) (0.0003179706291,0) (-0.0002388411143,0) (9.769891917e-05,0) (1.648674933e-05,0) (-0.0001141856685,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.0008172287347,0) (-0.00280811301,0) (-2.968547159e-06,0) (-0.0003536329813,0) (-3.496572923e-05,0) (-6.325669591e-05,0) (-6.601323888e-06,0) (-3.855489098e-06,0) (-5.64426606e-06,0) (-1.765983606e-06,0) (-2.054917267e-07,0) (-3.991282865e-08,0) (-5.172202734e-07,0) (0.02065391313,0) (-0.01874311768,0) (-2.839598951e-06,0) (0.001922210209,0) (-0.002074278464,0) (-0.00378330843,0) (0.0001500682067,0) (-0.0001650648726,0) (-0.0009079186671,0) (0.0002733644709,0) (-0.0002099969132,0) (-0.000231728652,0) (-1.467732161e-05,0) (1.720867302e-05,0) (-0.0003162091956,0) (-5.007846613e-06,0) (-1.116087826e-05,0) (-1.792231646e-06,0) (-1.513850326e-06,0) (-4.757169056e-06,0) (-3.730015351e-05,0) (1.142734126e-05,0) (-6.157851779e-06,0) (-5.327686836e-06,0) (-9.058902923e-07,0) (3.219670478e-06,0) (-1.974033463e-05,0) (-3.048988288e-07,0) (6.478429413e-07,0) (-3.602534663e-07,0) (-9.787608102e-07,0) (-1.968661101e-06,0) (2.586840302e-06,0) (-8.801255416e-07,0) (3.545150804e-06,0) (-3.546258443e-06,0) (-5.013482219e-07,0) (2.325538149e-06,0) (-2.752961059e-06,0) (-8.67361738e-19,0) (0.001081420423,0) (0.03683490234,0) (-0.03477674716,0) (-0.0005078099275,0) (-4.878909776e-19,0) (2.592330502e-05,0) (0.01315681817,0) (-0.01006015626,0) (-0.00380032527,0) (-3.388131789e-20,0) (5.636850501e-07,0) (2.319957752e-05,0) (-2.332385676e-05,0) (-0.001925267643,0) (1.355252716e-20,0) (7.146844379e-11,0) (0.0005565170578,0) (-0.0006475377206,0) (0.0001477002938,0) (-5.505714157e-21,0) (5.082980186e-07,0) (-3.210905036e-06,0) (1.660522345e-06,0) (-0.0003762065667,0) (8.470329473e-22,0) (1.287500472e-06,0) (-1.21303074e-05,0) (4.235369307e-05,0) (-4.425289125e-05,0) (2.117582368e-21,0) (2.385662691e-06,0) (-1.929410409e-05,0) (2.488333702e-06,0) (-1.793936166e-05,0) (1.270549421e-21,0) (9.350130233e-07,0) (-1.152532848e-05,0) (1.956543723e-05,0) (-2.651761138e-05,0) (-3.176373552e-22,0) (4.335966598e-08,0) (-3.011056923e-07,0) (1.016306761e-06,0) (-1.070586547e-05,0) (-5.29395592e-23,0) (2.401865277e-07,0) (-1.133223818e-06,0) (-4.430724484e-06,0) (4.166258622e-06,0) (5.29395592e-23,0) (-3.427165247e-10,0) (7.278680151e-07,0) (-3.068866642e-06,0) (2.654190084e-06,0) (5.29395592e-23,0) (1.64497237e-07,0) (-1.697154657e-06,0) (6.207993408e-06,0) (-6.345131393e-06,0) (1.588186776e-22,0) (9.009374426e-08,0) (-1.008053064e-06,0) (2.068286092e-06,0) (-1.472957506e-06,0) -(0.006996970788,0) (0.02648866226,0) (0.0003000404036,0) (0.002950260254,0) (0.0006171004868,0) (0.0004135149158,0) (0.0001280079144,0) (1.038046461e-05,0) (7.090544467e-05,0) (4.394723674e-06,0) (3.264040205e-06,0) (2.168226279e-06,0) (4.463860426e-06,0) (-0.0197553569,0) (0.003169952543,0) (-0.001001057065,0) (0.0004308924624,0) (-0.002770174458,0) (0.0345564099,0) (-1.463376791e-05,0) (-0.000104145023,0) (0.01124524197,0) (8.482571159e-05,0) (-0.0002556526339,0) (0.0007911948594,0) (-5.099026091e-06,0) (4.407108103e-06,0) (0.003311940614,0) (-7.032866511e-06,0) (-6.547290259e-06,0) (2.17110916e-05,0) (-3.549379796e-06,0) (-6.299896001e-06,0) (0.000423327795,0) (-5.761058672e-06,0) (3.827017946e-05,0) (1.944685014e-05,0) (-3.72626502e-07,0) (3.938617866e-06,0) (0.0001271093011,0) (-3.486916283e-07,0) (8.356272429e-08,0) (4.1630784e-06,0) (-8.202975706e-07,0) (-1.144619623e-06,0) (2.265084665e-06,0) (-7.4172067e-07,0) (7.646110877e-06,0) (7.028005024e-06,0) (-4.193909109e-07,0) (3.865265904e-06,0) (1.465586965e-06,0) (0,0) (6.036641356e-05,0) (-0.03492203779,0) (0.0248557125,0) (-0.01195439354,0) (-6.505213035e-19,0) (3.980786074e-05,0) (0.003563583505,0) (-0.01195701747,0) (0.009444674026,0) (4.33680869e-19,0) (-6.897536925e-07,0) (3.64387135e-06,0) (-0.0001452631239,0) (0.01867201301,0) (2.710505431e-20,0) (-5.822791923e-09,0) (-0.0001187671813,0) (-0.0006389488347,0) (0.0008196149627,0) (5.421010862e-20,0) (-2.79072853e-06,0) (-2.5788548e-06,0) (-2.32486879e-05,0) (0.002942712557,0) (0,0) (-3.739146372e-07,0) (-7.534478148e-06,0) (1.681240677e-06,0) (0.0004156051342,0) (-3.388131789e-21,0) (-3.079720876e-07,0) (-2.842608235e-05,0) (-3.184660905e-05,0) (0.0002010405408,0) (-6.776263578e-21,0) (-1.028458898e-07,0) (-7.315992414e-06,0) (1.276502879e-05,0) (0.000267013377,0) (-5.020416579e-10,0) (0,0) (-2.62595584e-08,0) (1.224289849e-06,0) (3.061993997e-05,0) (0,0) (-2.317871362e-08,0) (-1.732223519e-06,0) (6.817124161e-06,0) (1.627774038e-05,0) (1.058791184e-22,0) (-4.037988332e-08,0) (5.914031108e-06,0) (-3.068111963e-06,0) (-1.752991826e-06,0) (-2.137047511e-08,0) (0,0) (-1.256735752e-06,0) (1.465535905e-05,0) (2.691960492e-06,0) (3.97046694e-23,0) (-4.779938991e-09,0) (-9.112894287e-07,0) (1.646291736e-06,0) (-4.897159534e-07,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0.04715705099,0) (0.02200154358,0) (0.1067286698,0) (0.02202428562,0) (0.17465834,0) (0.07141108635,0) (0.1000731762,0) (0.06107260141,0) (0.05848951507,0) (0.07464156391,0) (0.02679567375,0) (0.03681690082,0) (0.0005054573398,0) (0.06266017622,0) (0.02292789445,0) (0.005280432053,0) (0.03058641266,0) (0.0130185903,0) (4.477807442e-05,0) (0.02165478127,0) (0.007876474827,0) (0.007860017766,0) (0.003864294445,0) (0.004255431357,0) (8.845381168e-05,0) (0.006720385865,0) (0.002471484938,0) (0.00210919833,0) (0.001197367089,0) (0.001200149458,0) (0.0001043161214,0) (0.001637026661,0) (0.0006321024569,0) (0.0005029865235,0) (0.0001561530053,0) (0.0002392339673,0) (3.034857158e-05,0) (0.0002847271479,0) (0.0001143827643,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.01859825451,0) (0.06390622139,0) (6.755733522e-05,0) (0.008047876816,0) (0.000795739924,0) (0.001439577538,0) (0.0001502310143,0) (8.77421026e-05,0) (0.0001284505699,0) (4.018974268e-05,0) (4.676521113e-06,0) (9.083245777e-07,0) (1.177074896e-05,0) (0.008307597159,0) (0.01873421824,0) (2.900333486e-08,0) (0.0006427535352,0) (0.002074227619,0) (0.09464435446,0) (4.913666987e-05,0) (0.0001652571093,0) (0.02141018871,0) (0.0001298657198,0) (0.0002102475176,0) (0.004281715785,0) (1.48520788e-05,0) (7.255278567e-06,0) (0.007171961804,0) (5.016290298e-06,0) (8.510401907e-06,0) (0.0004140783138,0) (1.516294083e-06,0) (4.817059328e-06,0) (0.0009909456417,0) (1.489550748e-05,0) (6.169100968e-06,0) (3.434653454e-06,0) (9.073734504e-07,0) (4.539544298e-06,0) (0.0003945514261,0) (3.054738133e-07,0) (6.950824905e-07,0) (5.407485655e-07,0) (9.805598736e-07,0) (1.955658851e-06,0) (8.959547428e-06,0) (8.815473737e-07,0) (7.766105257e-06,0) (1.471985915e-05,0) (5.021918199e-07,0) (5.508541434e-06,0) (1.701290994e-05,0) (6.505213035e-19,0) (0.0003326380646,0) (0.01469282168,0) (0.03477374258,0) (0.02107630735,0) (3.252606517e-19,0) (1.4617477e-05,0) (0.006316834902,0) (0.01007236596,0) (0.03687902424,0) (-2.059984128e-18,0) (2.1761899e-07,0) (8.535073252e-06,0) (2.333908512e-05,0) (0.04386035073,0) (3.388131789e-21,0) (2.12877168e-11,0) (0.0001802105721,0) (0.0006483001201,0) (0.0003180537728,0) (-1.423015351e-19,0) (1.934512603e-07,0) (3.215971441e-06,0) (3.60306497e-07,0) (0.008593632408,0) (9.95263713e-21,0) (3.785330716e-07,0) (1.214894467e-05,0) (8.316142622e-05,0) (0.0002399527039,0) (-2.943439492e-20,0) (1.065981606e-06,0) (1.932844051e-05,0) (1.262102486e-07,0) (0.0007885513656,0) (-1.905824131e-20,0) (2.756248094e-07,0) (1.154541289e-05,0) (1.377253857e-05,0) (0.0004170207456,0) (1.334076892e-20,0) (1.372912756e-08,0) (3.015892013e-07,0) (1.65338949e-06,0) (0.000225542516,0) (-7.27918939e-22,0) (1.277388161e-07,0) (1.135050709e-06,0) (1.097300767e-05,0) (1.837231386e-05,0) (0,0) (2.299303327e-09,0) (3.123692756e-07,0) (3.074695245e-06,0) (1.039677966e-06,0) (6.882142696e-22,0) (4.239383809e-08,0) (1.699838817e-06,0) (1.420235844e-05,0) (2.844450342e-05,0) (-2.779326858e-22,0) (2.066829092e-08,0) (1.009713072e-06,0) (8.983597702e-06,0) (1.122430129e-06,0) -(0.002275502001,0) (0.008614442707,0) (9.757687426e-05,0) (0.0009594613604,0) (0.0002006887602,0) (0.0001344801982,0) (4.162976727e-05,0) (3.375856311e-06,0) (2.305933326e-05,0) (1.429218846e-06,0) (1.061506507e-06,0) (7.051341767e-07,0) (1.451702978e-06,0) (0.0197919787,0) (0.04576663462,0) (0.003064285325,0) (0.006931890706,0) (0.002776848162,0) (0.01119185278,0) (0.0002405708549,0) (0.0001044086936,0) (0.003665373389,0) (0.0006670496628,0) (0.0002562656941,0) (0.0002404198937,0) (5.111300906e-06,0) (1.4983551e-05,0) (0.001075955865,0) (7.907287005e-06,0) (6.558427154e-06,0) (1.279841726e-05,0) (3.558166217e-06,0) (2.878390215e-06,0) (0.0001413922296,0) (5.77551433e-06,0) (2.981494912e-05,0) (2.987868567e-06,0) (3.734951082e-07,0) (2.875161334e-06,0) (4.065104123e-05,0) (3.494642989e-07,0) (1.349041095e-09,0) (2.229293379e-06,0) (2.854297262e-07,0) (1.146538659e-06,0) (2.970188831e-06,0) (7.434637826e-07,0) (5.101582132e-06,0) (1.477386609e-06,0) (4.203040616e-07,0) (2.548710907e-06,0) (2.065288763e-07,0) (0,0) (0.00381120272,0) (0.03499174491,0) (0.02310179904,0) (0.06236724561,0) (0,0) (0.001009633108,0) (0.0298739139,0) (0.0119849688,0) (0.002478434544,0) (0,0) (1.099057939e-05,0) (0.0003399323208,0) (0.000145642374,0) (0.00607617128,0) (-5.421010862e-20,0) (2.892328027e-07,0) (0.001438457613,0) (0.0006405979474,0) (0.0003449598824,0) (-1.355252716e-20,0) (4.286455912e-05,0) (9.37661877e-06,0) (2.331100428e-05,0) (0.0009596164022,0) (-3.388131789e-21,0) (5.739308119e-06,0) (7.551310522e-06,0) (1.320365452e-05,0) (0.0001350056191,0) (-1.694065895e-21,0) (4.544913819e-06,0) (2.850249043e-05,0) (6.63333715e-06,0) (0.0001130091179,0) (0,0) (1.524088828e-06,0) (7.334038823e-06,0) (2.344902083e-05,0) (8.380257917e-05,0) (1.053196334e-08,0) (2.117582368e-22,0) (2.631799423e-08,0) (5.681500867e-07,0) (9.841263226e-06,0) (0,0) (4.420829531e-07,0) (1.736699721e-06,0) (1.043708995e-06,0) (1.023766845e-05,0) (-4.235164736e-22,0) (6.41372051e-07,0) (3.151162781e-06,0) (3.071688387e-06,0) (5.020121102e-06,0) (3.257591355e-07,0) (-1.058791184e-22,0) (1.259765493e-06,0) (8.095219997e-06,0) (2.749685552e-07,0) (5.29395592e-23,0) (2.494036453e-07,0) (9.133146635e-07,0) (8.753312292e-07,0) (1.469478759e-06,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (-0.06251041084,0) (-0.02312716577,0) (0.08563757661,0) (-0.03295383896,0) (0.1276303109,0) (-0.0946764719,0) (0.1030608728,0) (-0.02550019993,0) (-0.07756067291,0) (0.0673281933,0) (-0.01850623727,0) (-0.04882195603,0) (-0.003708510075,0) (0.03411132104,0) (-0.03040281096,0) (0.01146538456,0) (0.005797797515,0) (-0.01726318207,0) (-0.0006699053532,0) (0.01111428551,0) (-0.01044438016,0) (0.007652943725,0) (-0.002009962988,0) (-0.005642980737,0) (-0.0004988181503,0) (0.003776045562,0) (-0.003277227412,0) (0.002131064227,0) (-0.0005395912934,0) (-0.001591472934,0) (-0.0002399694735,0) (0.00107812515,0) (-0.0008381556767,0) (0.0004388767921,0) (-0.000121633216,0) (-0.0003172435761,0) (-5.066889512e-05,0) (0.0002023292553,0) (-0.0001516603602,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.01463443893,0) (0.0502859929,0) (5.315895081e-05,0) (0.006332645988,0) (0.0006261451749,0) (0.001132762731,0) (0.0001182125239,0) (6.904177173e-05,0) (0.0001010741099,0) (3.162416853e-05,0) (3.679821814e-06,0) (7.147348455e-07,0) (9.262068479e-06,0) (-0.009313391119,0) (-0.02485528906,0) (2.158341618e-06,0) (-0.0009642227618,0) (-0.002752518914,0) (0.07418909208,0) (-7.592983434e-05,0) (-0.0002192988358,0) (0.01682223941,0) (-0.0001078732284,0) (-0.0002790327477,0) (0.003401814836,0) (-1.969725446e-05,0) (-7.352308847e-06,0) (0.005644203073,0) (-6.658775869e-06,0) (1.481098257e-05,0) (0.000313481762,0) (-2.012532792e-06,0) (7.210277511e-06,0) (0.0007750485214,0) (2.629829628e-06,0) (-8.184795682e-06,0) (6.597129124e-06,0) (-1.204185994e-06,0) (9.994640053e-07,0) (0.0003122689409,0) (-4.05238327e-07,0) (3.652865445e-08,0) (6.786751343e-07,0) (-1.303286861e-06,0) (2.952998217e-06,0) (4.80736646e-06,0) (-1.169838614e-06,0) (3.186477351e-06,0) (1.376395317e-05,0) (-6.663773466e-07,0) (2.4025461e-06,0) (1.489570409e-05,0) (0,0) (-0.0005631257223,0) (-0.01669247861,0) (-0.04613755182,0) (0.01626508487,0) (0,0) (-8.490090396e-06,0) (-0.005142060373,0) (-0.01336677666,0) (0.03065388695,0) (4.33680869e-19,0) (-2.601810625e-07,0) (-1.103815192e-05,0) (-3.097608686e-05,0) (0.03451093673,0) (1.016439537e-20,0) (-3.774812831e-11,0) (-0.0002830758546,0) (-0.0008602105367,0) (0.0001283005263,0) (-1.355252716e-19,0) (-2.367183435e-07,0) (-4.268285589e-06,0) (-9.777383985e-07,0) (0.006761023897,0) (5.717472394e-21,0) (-6.8364659e-07,0) (-1.612492008e-05,0) (3.081896923e-05,0) (0.0002141657343,0) (1.270549421e-21,0) (-9.918547086e-07,0) (-2.565648968e-05,0) (-1.776462113e-06,0) (0.0006078986526,0) (-1.651714247e-20,0) (-4.959282655e-07,0) (-1.532305696e-05,0) (-4.336478179e-06,0) (0.0003342957791,0) (-1.058791184e-22,0) (-2.228367745e-08,0) (-4.002309418e-07,0) (4.816661111e-07,0) (0.0001780711778,0) (2.911675756e-22,0) (-8.446585262e-08,0) (-1.506512155e-06,0) (1.160455761e-05,0) (1.071428823e-05,0) (-1.32348898e-23,0) (1.991555512e-09,0) (-3.123218372e-07,0) (-4.078876345e-06,0) (-1.21309979e-06,0) (-4.63221143e-22,0) (-9.18463487e-08,0) (-2.255974777e-06,0) (6.034671105e-06,0) (2.62148383e-05,0) (-9.264422861e-23,0) (-5.222643711e-08,0) (-1.339863123e-06,0) (5.215289271e-06,0) (1.954276747e-06,0) -(-0.003549268956,0) (-0.01343658413,0) (-0.0001521978757,0) (-0.001496542925,0) (-0.0003130291189,0) (-0.0002097587224,0) (-6.49330304e-05,0) (-5.265573046e-06,0) (-3.596734947e-05,0) (-2.229258458e-06,0) (-1.655710296e-06,0) (-1.099849986e-06,0) (-2.264328624e-06,0) (-0.02625611128,0) (0.03211320294,0) (0.003063780447,0) (0.004903291854,0) (-0.003682232749,0) (-0.01756345289,0) (0.0001924317751,0) (-0.0001384529431,0) (-0.005697965572,0) (0.0004391819773,0) (-0.000339842748,0) (-0.0004140257883,0) (-6.779946273e-06,0) (7.980037421e-06,0) (-0.001680857268,0) (1.12590218e-05,0) (-8.694108655e-06,0) (-6.689394366e-06,0) (-4.720166369e-06,0) (6.909971635e-06,0) (-0.0002119300653,0) (-7.660029649e-06,0) (-6.315433174e-06,0) (-1.237961572e-05,0) (-4.954443068e-07,0) (-7.960133638e-07,0) (-6.499462137e-05,0) (-4.636178842e-07,0) (-6.185385077e-08,0) (-1.451794079e-06,0) (8.328918145e-07,0) (-1.520070884e-06,0) (5.349167374e-07,0) (-9.861286637e-07,0) (-1.906935634e-06,0) (-4.174253742e-06,0) (-5.575045068e-07,0) (-9.86831296e-07,0) (-9.470422496e-07,0) (-8.67361738e-19,0) (0.002828880622,0) (-0.04641579736,0) (-0.001282046906,0) (0.05600852667,0) (-4.33680869e-19,0) (0.0007314810716,0) (0.01984557116,0) (-0.01589400852,0) (-0.005236486429,0) (-1.084202172e-19,0) (8.808045082e-06,0) (0.0002536017549,0) (-0.0001931366618,0) (-0.009468612536,0) (-2.710505431e-20,0) (2.225154949e-07,0) (0.001174190644,0) (-0.0008494051089,0) (-0.0003564038288,0) (0,0) (3.442811834e-05,0) (9.018351715e-06,0) (-3.090440545e-05,0) (-0.001490739516,0) (0,0) (4.609909213e-06,0) (-1.002012226e-05,0) (8.682331798e-06,0) (-0.0002109323487,0) (-2.541098842e-21,0) (3.659487597e-06,0) (-3.781049624e-05,0) (2.895905309e-05,0) (-6.605743182e-05,0) (-3.388131789e-21,0) (1.226847403e-06,0) (-9.727843585e-06,0) (8.073711052e-06,0) (-0.0001377292668,0) (8.320855081e-09,0) (4.235164736e-22,0) (-3.491009668e-08,0) (-4.928831568e-07,0) (-1.562019084e-05,0) (0,0) (3.508562431e-07,0) (-2.303710515e-06,0) (-4.342307445e-06,0) (-4.529449878e-06,0) (2.117582368e-22,0) (5.141031785e-07,0) (-2.076654126e-06,0) (-4.074920738e-06,0) (5.103558646e-06,0) (2.617659823e-07,0) (-2.117582368e-22,0) (-1.67094328e-06,0) (-4.923886331e-06,0) (-1.818172343e-06,0) (0,0) (1.916922473e-07,0) (-1.21138326e-06,0) (-5.785828522e-07,0) (1.476275077e-06,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (-1.352214984e-05,0) (-0.001516611742,0) (-0.1815201801,0) (0.001529805043,0) (-0.06184377689,0) (-1.018009989e-05,0) (0.0100894037,0) (0.002033057526,0) (1.382974519e-06,0) (0.01420621429,0) (0.001104706844,0) (1.705669872e-06,0) (0.0001243303037,0) (-0.00416102366,0) (-4.957044252e-07,0) (-2.976561439e-05,0) (-6.894765397e-05,0) (-1.167054917e-08,0) (2.109279228e-05,0) (-0.001212800252,0) (-1.454478514e-07,0) (0.0009931054366,0) (0.0001417158764,0) (1.284692074e-07,0) (1.74742353e-05,0) (-0.0004985374759,0) (-5.936260932e-08,0) (0.0002260156754,0) (4.076642451e-05,0) (3.037514902e-08,0) (1.036691613e-05,0) (-0.0002489763116,0) (-3.115196758e-08,0) (0.0001252345373,0) (6.832339961e-06,0) (1.454786252e-08,0) (2.35247391e-06,0) (-7.547512391e-05,0) (-1.072474815e-08,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.09590197642,0) (-0.1401646988,0) (-0.002985838421,0) (0.01780950172,0) (0.003649578912,0) (-0.002683292763,0) (-0.0006693273457,0) (0.0002766372549,0) (0.0002942175258,0) (-8.172856693e-05,0) (-2.758117892e-05,0) (-4.976700232e-06,0) (2.128685141e-05,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.01470014553,0) (0.01382695546,0) (-0.0003039299897,0) (-4.71970691e-05,0) (9.103863821e-05,0) (0.000163575563,0) (-9.961621062e-05,0) (-2.390391798e-05,0) (5.002522838e-05,0) (1.012786441e-05,0) (-7.88201233e-06,0) (6.23141672e-06,0) (8.301457933e-06,0) (-1.457628927e-06,0) (-0.04559196335,0) (-0.02299600676,0) (0.008358714646,0) (1.091418551e-06,0) (0.01108001222,0) (0.0001174809611,0) (1.180077153e-08,0) (-0.0004752201501,0) (-5.445124097e-06,0) (-7.103876161e-10,0) (-3.157105631e-06,0) (-9.404551985e-10,0) (-3.878017573e-05,0) (0.0003533999622,0) (2.141472362e-05,0) (3.593291973e-09,0) (7.639707444e-05,0) (-1.211070338e-09,0) (-2.325109286e-05,0) (-0.0002136717171,0) (-9.75273999e-10,0) (-2.050776465e-05,0) (2.993656717e-05,0) (-1.380484768e-10,0) (-1.387528677e-05,0) (6.936217859e-05,0) (-1.771963067e-10,0) (2.805955058e-08,0) (-1.784210166e-05,0) (8.180342229e-07,0) (4.010017397e-11,0) (-1.893631504e-05,0) (-1.860366417e-10,0) (-5.633722485e-06,0) (1.251832324e-05,0) (-1.176319828e-10,0) (-2.00923065e-06,0) (4.53804567e-06,0) (6.938893904e-18,0) (0.005994823377,0) (-7.444950055e-08,0) (-0.003435817589,0) (-0.1102116782,0) (-8.67361738e-19,0) (0.001606299893,0) (0.01230377284,0) (1.525748086e-06,0) (0.001045366821,0) (-1.355252716e-20,0) (1.798364778e-05,0) (0.0001386402286,0) (1.737100717e-08,0) (0.0002209886563,0) (-3.388131789e-21,0) (4.610365646e-07,0) (6.817192153e-05,0) (6.679547034e-09,0) (-7.354140116e-06,0) (0,0) (6.988489398e-05,0) (4.1665471e-05,0) (2.546341754e-08,0) (0.0001696441168,0) (1.016439537e-20,0) (9.362266021e-06,0) (-1.188796278e-08,0) (8.158151922e-05,0) (-8.232622071e-05,0) (8.470329473e-21,0) (7.420259143e-06,0) (-4.143616472e-09,0) (-3.256963719e-05,0) (-0.000166117142,0) (-1.694065895e-21,0) (2.488480358e-06,0) (-1.386998724e-09,0) (-6.937063544e-05,0) (5.261433427e-05,0) (1.696781277e-08,0) (4.235164736e-22,0) (-1.09460803e-11,0) (-7.964340301e-06,0) (1.633611477e-05,0) (6.352747104e-22,0) (7.199518179e-07,0) (-5.160270666e-10,0) (3.653434698e-06,0) (-3.163718351e-05,0) (-4.235164736e-22,0) (1.047169952e-06,0) (6.944596701e-07,0) (-6.615208134e-10,0) (-2.354858994e-05,0) (5.29902449e-07,0) (-4.235164736e-22,0) (-2.91384935e-10,0) (-1.338045233e-05,0) (4.545817498e-06,0) (-2.117582368e-22,0) (3.968631531e-07,0) (-1.826512278e-10,0) (3.288624992e-07,0) (-1.102174207e-05,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0.0003039026374,0.0005263748085) (0.04090131005,0.07084314711) (-0.00883687416,-0.01530591502) (0.01252654015,0.02169660398) (-0.000346879798,-0.0006008134342) (-5.135379222e-06,-8.894737729e-06) (0.001183168129,0.002049307314) (-0.00268255013,-0.004646313118) (5.808926845e-07,1.006135643e-06) (0.001574284488,0.002726740719) (-0.004459427703,-0.007723955355) (1.129113895e-06,1.955682633e-06) (0.0001341706355,0.0002323903576) (0.0003683995724,0.0006380867769) (-1.952858243e-07,-3.382449696e-07) (-4.227609596e-05,-7.322434614e-05) (9.017141291e-05,0.0001561814685) (-1.85615821e-08,-3.214960327e-08) (3.392569073e-05,5.876102003e-05) (0.0002193194444,0.0003798724208) (-9.853361838e-08,-1.706652333e-07) (0.0001346486464,0.0002332182967) (-0.0003281340941,-0.0005683449226) (7.513718213e-08,1.30141417e-07) (2.344440262e-05,4.060689649e-05) (4.508202613e-05,7.808435976e-05) (-2.665283983e-08,-4.616407275e-08) (3.529806653e-05,6.113804464e-05) (-8.179885248e-05,-0.0001416797685) (1.80411161e-08,3.12481297e-08) (3.253944728e-05,5.635997594e-05) (1.08655697e-05,1.881971877e-05) (-1.708094113e-08,-2.958505788e-08) (1.043761257e-05,1.807847528e-05) (-3.251583845e-05,-5.631908425e-05) (8.68155776e-09,1.503689913e-08) (1.137503137e-05,1.970213227e-05) (5.505628404e-07,9.536028123e-07) (-4.783889003e-09,-8.285938811e-09) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.02101305131,0.03639567249) (-0.01883018317,-0.03261483397) (0.0001264463693,0.0002190115361) (6.834581865e-05,0.0001183784304) (-9.063998106e-05,-0.0001569930524) (-0.0002675942571,-0.0004634868491) (9.461888584e-05,0.0001638847176) (6.093280015e-05,0.0001055387057) (-5.903420635e-05,-0.0001022502448) (-2.685320506e-05,-4.65111155e-05) (8.271937295e-06,1.432741567e-05) (-3.536237701e-06,-6.124943366e-06) (-1.181918528e-05,-2.04714294e-05) (0.01305259065,0.02260775017) (-1.972421406e-05,-3.41633409e-05) (-3.139793852e-05,-5.438282477e-05) (-0.001208003877,-0.002092324091) (1.712798772e-06,2.966654497e-06) (-0.01682721675,-0.02914559437) (-2.585942318e-05,-4.47898348e-05) (9.67925942e-09,1.67649691e-08) (0.0005877851435,0.001018073733) (1.150133528e-06,1.992089707e-06) (-3.493905947e-10,-6.051622618e-10) (6.952941289e-06,1.204284757e-05) (8.190971413e-08,1.418717865e-07) (1.32217184e-05,2.290068804e-05) (-0.0004639768554,-0.0008036314871) (-6.629958665e-10,-1.148342526e-09) (1.637002792e-05,2.835372008e-05) (-0.0002004334016,-0.0003471608352) (9.621648201e-11,1.666518354e-10) (-1.475131992e-05,-2.555003558e-05) (0.0002859360877,0.0004952558317) (1.363844101e-07,2.362247277e-07) (8.972964103e-10,1.554162972e-09) (-1.642133626e-05,-2.844258873e-05) (6.808895039e-11,1.179335215e-10) (8.86002333e-06,1.534601056e-05) (-0.0001070329349,-0.0001853864814) (1.530817236e-11,2.651453229e-11) (1.09037461e-06,1.888584223e-06) (-4.296340024e-06,-7.441479207e-06) (2.752512015e-10,4.767490659e-10) (-7.394344286e-07,-1.280737999e-06) (1.652763697e-05,2.862670696e-05) (7.276235857e-11,1.260281019e-10) (3.451371935e-06,5.977951547e-06) (-1.976500436e-05,-3.423399176e-05) (3.583427253e-11,6.206678068e-11) (3.65150322e-06,6.3245891e-06) (-1.973991048e-05,-3.419052789e-05) (0,-4.33680869e-19) (-0.0008395542634,-0.00145415064) (0.02522679048,0.04369408282) (-3.126224837e-05,-5.414780254e-05) (-0.01100183246,-0.01905573281) (1.626303259e-19,-4.878909776e-19) (6.005470316e-05,0.0001040177971) (-0.003199103504,-0.005541009808) (9.138118664e-07,1.582768581e-06) (-0.002344817337,-0.004061342763) (1.863472484e-20,4.065758147e-20) (5.727926757e-07,9.921060165e-07) (-1.287812239e-05,-2.230556228e-05) (8.725406379e-09,1.511284716e-08) (-0.000335289152,-0.0005807378464) (-2.117582368e-22,2.117582368e-22) (1.81243952e-09,3.139237334e-09) (-1.242058352e-05,-2.151308171e-05) (3.802120767e-09,6.585466345e-09) (2.538152278e-06,4.396208702e-06) (2.202285663e-20,4.065758147e-20) (9.202421743e-08,1.593906201e-07) (-2.195446888e-10,-3.802625555e-10) (-5.129786172e-06,-8.885050281e-06) (-0.0002810210377,-0.0004867427153) (2.117582368e-21,-5.082197684e-21) (3.473961335e-07,6.017077536e-07) (-1.186831509e-09,-2.055652473e-09) (-7.965351864e-05,-0.0001379639413) (0.0001256283905,0.0002175947552) (-6.352747104e-22,2.541098842e-21) (-9.779151322e-07,-1.693798695e-06) (5.110513569e-09,8.851669155e-09) (3.289864391e-06,5.698212276e-06) (0.0001171394555,0.0002028914885) (9.529120657e-21,1.270549421e-21) (-3.844266251e-07,-6.658464465e-07) (2.55914016e-09,4.432560781e-09) (2.632175311e-05,4.559061372e-05) (-6.372623528e-05,-0.0001103770773) (-2.223461487e-21,1.905824131e-21) (-3.632365662e-09,-6.291441879e-09) (1.155167341e-11,2.000808525e-11) (6.979756536e-06,1.208929295e-05) (-3.434954941e-05,-5.94951648e-05) (4.764560328e-22,4.235164736e-22) (-4.430089943e-08,-7.673140864e-08) (9.242620673e-11,1.60086886e-10) (-7.708935966e-06,-1.335226877e-05) (2.033211796e-05,3.521626133e-05) (-5.29395592e-23,-1.058791184e-22) (2.732028175e-11,4.732011607e-11) (-2.030819374e-07,-3.517482337e-07) (4.158427398e-10,7.202607533e-10) (5.390575629e-06,9.336750872e-06) (-2.64697796e-22,-1.376428539e-21) (-3.944424504e-08,-6.831943648e-08) (1.737627841e-10,3.009659705e-10) (1.261265833e-05,2.184576504e-05) (-1.944658249e-05,-3.36824689e-05) (1.588186776e-22,1.455837878e-21) (-1.766566272e-08,-3.059782538e-08) (8.522954168e-11,1.476218965e-10) (2.700280003e-06,4.67702216e-06) (-4.74143023e-06,-8.212398059e-06) -(0.01677258801,0.02905097462) (0.02573064519,0.04456678478) (0.001794210947,0.00310766452) (-0.003074644141,-0.005325439867) (-0.0009164076666,-0.001587264639) (0.0004100621676,0.0007102485086) (0.0001761695175,0.000305134555) (-2.713117662e-05,-4.699257638e-05) (-6.232953669e-05,-0.0001079579244) (7.706117781e-06,1.334738753e-05) (6.57026234e-06,1.138002819e-05) (2.192435553e-06,3.797409769e-06) (-3.737819008e-06,-6.474092431e-06) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.0411321873,0) (-0.008339062533,0) (0.0006096469769,0) (-0.001541034196,0) (0.0003931502828,0) (-1.829129434e-05,0) (-1.884297833e-05,0) (-5.725387206e-06,0) (6.503070519e-06,0) (1.447036132e-05,0) (-3.098376047e-06,0) (4.108944902e-07,0) (2.993889774e-06,0) (-0.003692931319,0) (6.684943117e-06,0) (0.006341380197,0) (-0.0001230406465,0) (-2.74369599e-07,0) (-0.04913856285,0) (6.893948142e-06,0) (1.71308782e-08,0) (0.007067222778,0) (1.30112031e-05,0) (-5.544016143e-08,0) (-0.002630298682,0) (1.854554824e-10,0) (-4.611068783e-08,0) (0.0005833114635,0) (-4.475959074e-11,0) (-3.716938248e-07,0) (-5.172975408e-06,0) (-6.23653338e-11,0) (-9.518968852e-07,0) (-7.449260097e-05,0) (-2.062491615e-07,0) (-6.585442473e-11,0) (-1.207582855e-06,0) (4.133017006e-11,0) (9.861243906e-08,0) (4.383718543e-05,0) (-2.959197357e-12,0) (9.323612458e-08,0) (3.492314996e-06,0) (-6.522504806e-10,0) (-1.657548191e-06,0) (-1.703770788e-06,0) (4.242558686e-11,0) (4.549582158e-07,0) (2.634266796e-06,0) (4.460116865e-11,0) (8.116553402e-07,0) (6.443219229e-06,0) (-3.252606517e-18,0) (0.0004829576041,0) (0.0001242870854,0) (5.888692216e-06,0) (0.04723623807,0) (-1.029992064e-18,0) (3.294780257e-06,0) (0.001149751687,0) (-3.89436725e-06,0) (-0.04242691604,0) (-1.778769189e-20,0) (-2.768655948e-10,0) (-2.949608241e-08,0) (-2.64989249e-10,0) (-0.001090599805,0) (1.016439537e-20,0) (3.933175975e-11,0) (0.0002019770285,0) (3.09697559e-07,0) (0.0003194157652,0) (-2.541098842e-21,0) (-1.91547415e-10,0) (-2.098780887e-11,0) (-1.35141104e-08,0) (-0.0001132326063,0) (6.088049308e-22,0) (-2.624027897e-08,0) (-5.605204444e-10,0) (-2.631350537e-06,0) (-2.46417407e-05,0) (2.713152409e-22,0) (1.457134286e-09,0) (-1.394145316e-10,0) (-1.684666273e-07,0) (-8.469855444e-06,0) (2.117582368e-22,0) (-5.243764032e-09,0) (-1.348940671e-10,0) (5.599469354e-08,0) (-1.022219073e-05,0) (1.694065895e-21,0) (1.779518342e-09,0) (2.80884512e-11,0) (1.111762798e-07,0) (5.549890313e-05,0) (-2.514629062e-22,0) (1.163451117e-08,0) (-2.697230875e-10,0) (-7.446974375e-06,0) (-5.385302829e-06,0) (-7.754818243e-26,0) (3.272970404e-10,0) (-3.370708344e-09,0) (9.449748969e-13,0) (3.578609755e-09,0) (7.610061635e-23,0) (9.0329589e-09,0) (1.116684355e-10,0) (8.917771118e-07,0) (5.110647247e-06,0) (4.63221143e-23,0) (2.385951371e-08,0) (1.501339326e-10,0) (2.921382097e-06,0) (1.83702408e-06,0) -(0.02917389264,0) (0.008838028944,0) (-0.001424096841,0) (0.001390526193,0) (-0.0003488462539,0) (3.20272016e-05,0) (1.878777362e-05,0) (1.011353251e-06,0) (-9.024838172e-06,0) (-5.66671952e-06,0) (1.99122386e-06,0) (-5.609910046e-07,0) (-2.414963783e-06,0) (3.131764434e-06,0) (0.02113859613,0) (-0.02661209925,0) (-7.166687639e-05,0) (4.97322524e-07,0) (0.03782720766,0) (-5.177796953e-06,0) (-1.043334764e-08,0) (-0.004535076858,0) (-4.088571921e-05,0) (7.933896824e-08,0) (0.001461529417,0) (-1.081506332e-10,0) (9.410884509e-08,0) (-0.0002381860178,0) (1.194202806e-06,0) (-4.647773923e-10,0) (1.261180451e-06,0) (1.372863619e-10,0) (1.038364612e-06,0) (4.216515965e-05,0) (9.30177865e-11,0) (2.694383648e-07,0) (2.749813509e-06,0) (-2.841116772e-11,0) (-1.995626923e-07,0) (-3.784413631e-05,0) (1.343156087e-10,0) (4.046369427e-06,0) (2.801726811e-06,0) (6.603081789e-07,0) (-1.781739592e-10,0) (-1.048868705e-07,0) (-4.49845343e-11,0) (-4.575800789e-07,0) (-3.241043012e-06,0) (-4.809009413e-11,0) (-7.612857105e-07,0) (-3.494038197e-06,0) (0,0) (-0.0001781248725,0) (-5.875863018e-06,0) (-0.00325358254,0) (-0.03202255516,0) (-8.67361738e-19,0) (2.27129912e-06,0) (-0.002309571161,0) (4.314038673e-06,0) (0.02951567944,0) (0,0) (9.109152453e-08,0) (7.736946357e-07,0) (6.824590353e-09,0) (0.002846967579,0) (0,0) (-1.380258363e-08,0) (-0.00014659622,0) (-2.405362853e-07,0) (-0.000837203801,0) (0,0) (1.804379704e-07,0) (1.404322281e-07,0) (4.172190712e-10,0) (0.0002216784642,0) (0,0) (2.542909593e-08,0) (2.030650731e-10,0) (-3.866749846e-08,0) (3.31291695e-05,0) (-2.64697796e-23,0) (-1.148514282e-08,0) (-6.330232694e-10,0) (-4.027290359e-06,0) (-3.296411943e-06,0) (0,0) (-1.548017159e-09,0) (-4.061005464e-11,0) (4.700979461e-08,0) (-5.014173148e-06,0) (-4.001910504e-10,0) (-8.470329473e-22,0) (-4.040786576e-12,0) (-5.617850981e-07,0) (-2.586134062e-05,0) (5.29395592e-23,0) (7.229839581e-09,0) (2.418124915e-10,0) (6.181658491e-06,0) (1.538533616e-06,0) (-2.64697796e-23,0) (5.335196032e-09,0) (3.786615396e-07,0) (-2.026498209e-10,0) (1.980117903e-07,0) (-6.313576244e-09,0) (0,0) (-1.199476441e-10,0) (-1.961240248e-06,0) (-3.991018329e-06,0) (-2.117582368e-22,0) (-1.197908084e-08,0) (-2.132048396e-10,0) (-1.09602752e-06,0) (-5.6965094e-07,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0.0616499241,0) (-0.05612508663,0) (-0.005524837477,0) (-0.09849767551,0) (0.003987118413,0) (0.0945105571,0) (-0.03774692604,0) (-0.03968505748,0) (0.07743198352,0) (-0.01322794725,0) (-0.0355135707,0) (0.04874151795,0) (-0.03985523459,0) (0.009503484414,0) (0.03035175017,0) (-0.02158210048,0) (0.004347737172,0) (0.01723436331,0) (-0.01398296519,0) (0.00355609991,0) (0.01042686528,0) (-0.002231696874,0) (-0.003401939794,0) (0.005633636669,0) (-0.004236003097,0) (0.0009642830837,0) (0.003271720014,0) (-0.0007253584191,0) (-0.0008634759321,0) (0.001588834351,0) (-0.000973594934,0) (0.0001368578979,0) (0.0008367370361,0) (-6.904381328e-05,0) (-0.0002476788081,0) (0.0003167226213,0) (-0.0001631146387,0) (1.171560823e-05,0) (0.0001513990305,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.0006430541106,0) (-0.002209624475,0) (-2.335865557e-06,0) (-0.0002782637621,0) (-2.751354053e-05,0) (-4.977489973e-05,0) (-5.19439452e-06,0) (-3.03377501e-06,0) (-4.441312862e-06,0) (-1.389602407e-06,0) (-1.616956109e-07,0) (-3.140627274e-08,0) (-4.069859621e-07,0) (-0.02315446542,0) (0.02486709624,0) (-0.0002113144789,0) (-0.002883591821,0) (0.002752586386,0) (-0.002965630851,0) (-0.0002318971576,0) (0.0002190437346,0) (-0.0007133624739,0) (-0.0002270707624,0) (0.0002787001547,0) (-0.0001841079618,0) (1.946548646e-05,0) (-1.743881751e-05,0) (-0.0002488508671,0) (6.647567465e-06,0) (-1.942370938e-05,0) (-1.356825305e-06,0) (2.009289265e-06,0) (-7.120632471e-06,0) (-2.917357685e-05,0) (2.017518414e-06,0) (8.169870928e-06,0) (-1.023318319e-05,0) (1.202217678e-06,0) (7.088695561e-07,0) (-1.562354862e-05,0) (4.044755587e-07,0) (3.404607548e-08,0) (-4.521418737e-07,0) (1.300895681e-06,0) (-2.972631304e-06,0) (1.388004183e-06,0) (1.167951802e-06,0) (1.454595627e-06,0) (-3.315964822e-06,0) (6.652579445e-07,0) (1.014281671e-06,0) (-2.410363274e-06,0) (2.168404345e-18,0) (-0.001830745551,0) (-0.04184804203,0) (0.04614153827,0) (-0.0003918889316,0) (8.67361738e-19,0) (-1.505671622e-05,0) (-0.0107099765,0) (0.01335057348,0) (-0.003158834692,0) (-1.355252716e-20,0) (-6.739309617e-07,0) (-3.000331146e-05,0) (3.095587548e-05,0) (-0.001514871375,0) (1.355252716e-20,0) (-1.267303586e-10,0) (-0.0008741803541,0) (0.0008591989311,0) (5.958119995e-05,0) (-2.117582368e-21,0) (-6.219833605e-07,0) (4.261561381e-06,0) (-4.506042692e-06,0) (-0.0002959797984,0) (-2.117582368e-22,0) (-2.325279806e-06,0) (1.61001834e-05,0) (1.56959449e-05,0) (-3.949717088e-05,0) (-4.235164736e-21,0) (-2.219766983e-06,0) (2.561091166e-05,0) (-3.502433912e-05,0) (-1.382955411e-05,0) (5.29395592e-21,0) (-1.682357216e-06,0) (1.529640096e-05,0) (-6.160454092e-06,0) (-2.125727712e-05,0) (0,0) (-7.037685441e-08,0) (3.9958929e-07,0) (2.960709067e-07,0) (-8.452535281e-06,0) (1.058791184e-22,0) (-1.588206347e-07,0) (1.504087388e-06,0) (-4.685734219e-06,0) (2.429661067e-06,0) (0,0) (-2.96845995e-10,0) (-7.277574765e-07,0) (4.071144148e-06,0) (-3.096918026e-06,0) (-4.367513634e-22,0) (-3.56383646e-07,0) (2.252412441e-06,0) (2.637815303e-06,0) (-5.847758739e-06,0) (-1.32348898e-23,0) (-2.276567175e-07,0) (1.337660336e-06,0) (1.200711633e-06,0) (-2.564584225e-06,0) -(-0.01091369342,0) (-0.04131632783,0) (-0.0004679952334,0) (-0.004601739364,0) (-0.0009625373212,0) (-0.000644989832,0) (-0.0001996634222,0) (-1.619117925e-05,0) (-0.0001105964721,0) (-6.854775913e-06,0) (-5.091165187e-06,0) (-3.381943069e-06,0) (-6.962613624e-06,0) (0.02620752866,0) (0.002224269497,0) (-0.001000892129,0) (0.0003047929621,0) (0.003673383099,0) (-0.05422961591,0) (-1.170549913e-05,0) (0.0001381032981,0) (-0.01748116626,0) (5.58488008e-05,0) (0.0003390297478,0) (-0.001362512354,0) (6.763664198e-06,0) (2.347166408e-06,0) (-0.005173910596,0) (-1.001395262e-05,0) (8.679345149e-06,0) (-1.134781363e-05,0) (4.708510543e-06,0) (-1.51237669e-05,0) (-0.0006345178053,0) (7.640857198e-06,0) (-8.106428758e-06,0) (-8.057400327e-05,0) (4.942920937e-07,0) (-1.090440533e-06,0) (-0.0002032277807,0) (4.625928184e-07,0) (-3.831370518e-06,0) (-2.711142746e-06,0) (-2.393650938e-06,0) (1.517526643e-06,0) (4.079308649e-07,0) (9.838166031e-07,0) (-2.85806264e-06,0) (-1.98571424e-05,0) (5.56293275e-07,0) (-1.496586117e-06,0) (-6.720478032e-06,0) (-2.168404345e-19,0) (4.480721443e-05,0) (0.04632333236,0) (-0.001379381288,0) (-0.01073557061,0) (0,0) (2.884086942e-05,0) (0.002367327906,0) (0.01585694053,0) (-0.01995489753,0) (0,0) (-5.527808322e-07,0) (2.718459272e-06,0) (0.0001926337373,0) (-0.02909695075,0) (0,0) (-4.47964897e-09,0) (-9.694780846e-05,0) (0.0008472184569,0) (-0.0008468054569,0) (5.421010862e-20,0) (-2.241467871e-06,0) (-2.480320484e-06,0) (3.082178995e-05,0) (-0.004571428628,0) (1.355252716e-20,0) (-3.003345517e-07,0) (9.997786745e-06,0) (1.10553403e-06,0) (-0.0006493401365,0) (0,0) (-2.479739066e-07,0) (3.770913572e-05,0) (-0.0001390322279,0) (-0.0001175146047,0) (0,0) (-8.278796515e-08,0) (9.703906891e-06,0) (4.395115462e-06,0) (-0.0004388356181,0) (-3.966417036e-10,0) (0,0) (3.483258316e-08,0) (-1.062099363e-06,0) (-4.860039762e-05,0) (-8.470329473e-22,0) (-1.83956344e-08,0) (2.297772888e-06,0) (-2.83623588e-05,0) (-7.201757854e-06,0) (0,0) (-3.23672139e-08,0) (-3.897417542e-06,0) (4.070176231e-06,0) (-1.782127644e-06,0) (-1.71723915e-08,0) (0,0) (1.666924655e-06,0) (-8.914065602e-06,0) (-1.780002849e-05,0) (0,0) (-3.673872713e-09,0) (1.208697071e-06,0) (-1.088177979e-06,0) (-4.919808827e-07,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (-0.06251041084,0) (-0.02312716577,0) (0.08563757661,0) (-0.03295383896,0) (0.1276303109,0) (-0.0946764719,0) (0.1030608728,0) (-0.02550019993,0) (-0.07756067291,0) (0.0673281933,0) (-0.01850623727,0) (-0.04882195603,0) (-0.003708510075,0) (0.03411132104,0) (-0.03040281096,0) (0.01146538456,0) (0.005797797515,0) (-0.01726318207,0) (-0.0006699053532,0) (0.01111428551,0) (-0.01044438016,0) (0.007652943725,0) (-0.002009962988,0) (-0.005642980737,0) (-0.0004988181503,0) (0.003776045562,0) (-0.003277227412,0) (0.002131064227,0) (-0.0005395912934,0) (-0.001591472934,0) (-0.0002399694735,0) (0.00107812515,0) (-0.0008381556767,0) (0.0004388767921,0) (-0.000121633216,0) (-0.0003172435761,0) (-5.066889512e-05,0) (0.0002023292553,0) (-0.0001516603602,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.01463443893,0) (0.0502859929,0) (5.315895081e-05,0) (0.006332645988,0) (0.0006261451749,0) (0.001132762731,0) (0.0001182125239,0) (6.904177173e-05,0) (0.0001010741099,0) (3.162416853e-05,0) (3.679821814e-06,0) (7.147348455e-07,0) (9.262068479e-06,0) (-0.009313391119,0) (-0.02485528906,0) (2.158341618e-06,0) (-0.0009642227618,0) (-0.002752518914,0) (0.07418909208,0) (-7.592983434e-05,0) (-0.0002192988358,0) (0.01682223941,0) (-0.0001078732284,0) (-0.0002790327477,0) (0.003401814836,0) (-1.969725446e-05,0) (-7.352308847e-06,0) (0.005644203073,0) (-6.658775869e-06,0) (1.481098257e-05,0) (0.000313481762,0) (-2.012532792e-06,0) (7.210277511e-06,0) (0.0007750485214,0) (2.629829628e-06,0) (-8.184795682e-06,0) (6.597129124e-06,0) (-1.204185994e-06,0) (9.994640053e-07,0) (0.0003122689409,0) (-4.05238327e-07,0) (3.652865445e-08,0) (6.786751343e-07,0) (-1.303286861e-06,0) (2.952998217e-06,0) (4.80736646e-06,0) (-1.169838614e-06,0) (3.186477351e-06,0) (1.376395317e-05,0) (-6.663773466e-07,0) (2.4025461e-06,0) (1.489570409e-05,0) (0,0) (-0.0005631257223,0) (-0.01669247861,0) (-0.04613755182,0) (0.01626508487,0) (2.439454888e-19,0) (-8.490090396e-06,0) (-0.005142060373,0) (-0.01336677666,0) (0.03065388695,0) (4.607859233e-19,0) (-2.601810625e-07,0) (-1.103815192e-05,0) (-3.097608686e-05,0) (0.03451093673,0) (1.016439537e-20,0) (-3.774812831e-11,0) (-0.0002830758546,0) (-0.0008602105367,0) (0.0001283005263,0) (-1.355252716e-19,0) (-2.367183435e-07,0) (-4.268285589e-06,0) (-9.777383985e-07,0) (0.006761023897,0) (6.035109749e-21,0) (-6.8364659e-07,0) (-1.612492008e-05,0) (3.081896923e-05,0) (0.0002141657343,0) (1.482307658e-21,0) (-9.918547086e-07,0) (-2.565648968e-05,0) (-1.776462113e-06,0) (0.0006078986526,0) (-1.672890071e-20,0) (-4.959282655e-07,0) (-1.532305696e-05,0) (-4.336478179e-06,0) (0.0003342957791,0) (1.058791184e-22,0) (-2.228367745e-08,0) (-4.002309418e-07,0) (4.816661111e-07,0) (0.0001780711778,0) (2.382280164e-22,0) (-8.446585262e-08,0) (-1.506512155e-06,0) (1.160455761e-05,0) (1.071428823e-05,0) (-1.32348898e-23,0) (1.991555512e-09,0) (-3.123218372e-07,0) (-4.078876345e-06,0) (-1.21309979e-06,0) (-3.97046694e-22,0) (-9.18463487e-08,0) (-2.255974777e-06,0) (6.034671105e-06,0) (2.62148383e-05,0) (-6.6174449e-23,0) (-5.222643711e-08,0) (-1.339863123e-06,0) (5.215289271e-06,0) (1.954276747e-06,0) -(-0.003549268956,0) (-0.01343658413,0) (-0.0001521978757,0) (-0.001496542925,0) (-0.0003130291189,0) (-0.0002097587224,0) (-6.49330304e-05,0) (-5.265573046e-06,0) (-3.596734947e-05,0) (-2.229258458e-06,0) (-1.655710296e-06,0) (-1.099849986e-06,0) (-2.264328624e-06,0) (-0.02625611128,0) (0.03211320294,0) (0.003063780447,0) (0.004903291854,0) (-0.003682232749,0) (-0.01756345289,0) (0.0001924317751,0) (-0.0001384529431,0) (-0.005697965572,0) (0.0004391819773,0) (-0.000339842748,0) (-0.0004140257883,0) (-6.779946273e-06,0) (7.980037421e-06,0) (-0.001680857268,0) (1.12590218e-05,0) (-8.694108655e-06,0) (-6.689394366e-06,0) (-4.720166369e-06,0) (6.909971635e-06,0) (-0.0002119300653,0) (-7.660029649e-06,0) (-6.315433174e-06,0) (-1.237961572e-05,0) (-4.954443068e-07,0) (-7.960133638e-07,0) (-6.499462137e-05,0) (-4.636178842e-07,0) (-6.185385077e-08,0) (-1.451794079e-06,0) (8.328918145e-07,0) (-1.520070884e-06,0) (5.349167374e-07,0) (-9.861286637e-07,0) (-1.906935634e-06,0) (-4.174253742e-06,0) (-5.575045068e-07,0) (-9.86831296e-07,0) (-9.470422496e-07,0) (0,0) (0.002828880622,0) (-0.04641579736,0) (-0.001282046906,0) (0.05600852667,0) (-4.33680869e-19,0) (0.0007314810716,0) (0.01984557116,0) (-0.01589400852,0) (-0.005236486429,0) (0,0) (8.808045082e-06,0) (0.0002536017549,0) (-0.0001931366618,0) (-0.009468612536,0) (-5.421010862e-20,0) (2.225154949e-07,0) (0.001174190644,0) (-0.0008494051089,0) (-0.0003564038288,0) (0,0) (3.442811834e-05,0) (9.018351715e-06,0) (-3.090440545e-05,0) (-0.001490739516,0) (0,0) (4.609909213e-06,0) (-1.002012226e-05,0) (8.682331798e-06,0) (-0.0002109323487,0) (-5.082197684e-21,0) (3.659487597e-06,0) (-3.781049624e-05,0) (2.895905309e-05,0) (-6.605743182e-05,0) (-3.388131789e-21,0) (1.226847403e-06,0) (-9.727843585e-06,0) (8.073711052e-06,0) (-0.0001377292668,0) (8.320855081e-09,0) (0,0) (-3.491009668e-08,0) (-4.928831568e-07,0) (-1.562019084e-05,0) (-1.058791184e-22,0) (3.508562431e-07,0) (-2.303710515e-06,0) (-4.342307445e-06,0) (-4.529449878e-06,0) (2.117582368e-22,0) (5.141031785e-07,0) (-2.076654126e-06,0) (-4.074920738e-06,0) (5.103558646e-06,0) (2.617659823e-07,0) (0,0) (-1.67094328e-06,0) (-4.923886331e-06,0) (-1.818172343e-06,0) (0,0) (1.916922473e-07,0) (-1.21138326e-06,0) (-5.785828522e-07,0) (1.476275077e-06,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0.08286250691,0) (0.02431037598,0) (0.06871438145,0) (0.04930718395,0) (0.09326492082,0) (0.1255216072,0) (0.1061377676,0) (0.01064733091,0) (0.1028501942,0) (0.06073138578,0) (0.01278119823,0) (0.06474155448,0) (0.02720911517,0) (0.01856972471,0) (0.04031468813,0) (0.02489475137,0) (0.001098999625,0) (0.02289168401,0) (0.01002216348,0) (0.005704391145,0) (0.01384947954,0) (0.007451325099,0) (0.001045456362,0) (0.007482962107,0) (0.00281298841,0) (0.002121681757,0) (0.004345654447,0) (0.002153156807,0) (0.0002431658316,0) (0.002110392238,0) (0.000552027313,0) (0.0007100396512,0) (0.001111378275,0) (0.0003829383684,0) (9.474450534e-05,0) (0.0004206906223,0) (8.459498418e-05,0) (0.0001437766924,0) (0.0002010868071,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.01151542489,0) (0.03956862145,0) (4.182927054e-05,0) (0.004982979502,0) (0.0004926958775,0) (0.0008913388619,0) (9.301808191e-05,0) (5.432701179e-05,0) (7.953235012e-05,0) (2.488416119e-05,0) (2.895547407e-06,0) (5.624045764e-07,0) (7.288058967e-06,0) (0.01044095573,0) (0.03297631033,0) (0.0001606173415,0) (0.001446472844,0) (0.003652617632,0) (0.05815477759,0) (0.0001173327325,0) (0.0002910130741,0) (0.01321743319,0) (8.960512001e-05,0) (0.000370321967,0) (0.002702735249,0) (2.612306591e-05,0) (7.450636785e-06,0) (0.004441884828,0) (8.839061027e-06,0) (2.57761275e-05,0) (0.0002373242255,0) (2.671175919e-06,0) (1.079249771e-05,0) (0.0006061888617,0) (4.643013261e-07,0) (1.085909936e-05,0) (1.26714713e-05,0) (1.598089418e-06,0) (2.20050347e-07,0) (0.0002471462147,0) (5.375848748e-07,0) (1.919689554e-09,0) (8.5178208e-07,0) (1.732231442e-06,0) (4.45895687e-06,0) (2.579457553e-06,0) (1.552409348e-06,0) (1.30742986e-06,0) (1.287012362e-05,0) (8.842413405e-07,0) (1.047868629e-06,0) (1.304197819e-05,0) (-6.505213035e-19,0) (0.0009533201785,0) (0.01896428393,0) (0.06121497228,0) (0.0125521507,0) (-3.252606517e-19,0) (4.931195373e-06,0) (0.004185764753,0) (0.017738704,0) (0.02547954574,0) (-1.219727444e-18,0) (3.110674544e-07,0) (1.42753078e-05,0) (4.111206382e-05,0) (0.02715447401,0) (1.355252716e-20,0) (6.693630906e-11,0) (0.0004446572613,0) (0.001141388293,0) (5.175547801e-05,0) (-2.710505431e-20,0) (2.896624921e-07,0) (5.66493273e-06,0) (2.653219922e-06,0) (0.005319222649,0) (4.446922973e-21,0) (1.23469439e-06,0) (2.140210977e-05,0) (1.142126714e-05,0) (0.0001911500099,0) (4.235164736e-21,0) (9.22882494e-07,0) (3.405631521e-05,0) (2.500444833e-05,0) (0.000468632467,0) (-1.270549421e-20,0) (8.923175134e-07,0) (2.033674126e-05,0) (1.365401367e-06,0) (0.0002679810755,0) (-3.388131789e-21,0) (3.61685241e-08,0) (5.311357506e-07,0) (1.40319171e-07,0) (0.0001405914279,0) (7.676236084e-22,0) (5.585209319e-08,0) (1.999539627e-06,0) (1.227245632e-05,0) (6.248313256e-06,0) (2.64697796e-23,0) (1.724997877e-09,0) (3.122744061e-07,0) (5.411018301e-06,0) (1.415448965e-06,0) (8.999725065e-22,0) (1.989853278e-07,0) (2.994061638e-06,0) (2.564169571e-06,0) (2.415994883e-05,0) (-5.29395592e-23,0) (1.319703087e-07,0) (1.777963699e-06,0) (3.027655855e-06,0) (3.402615008e-06,0) -(0.00553605759,0) (0.02095803515,0) (0.0002373942959,0) (0.002334268809,0) (0.0004882546943,0) (0.0003271762106,0) (0.0001012808553,0) (8.213104159e-06,0) (5.610093811e-05,0) (3.477139478e-06,0) (2.582533942e-06,0) (1.715517459e-06,0) (3.531841012e-06,0) (0.03483145319,0) (0.02253296123,0) (0.003063275652,0) (0.003468356907,0) (0.004882815777,0) (0.02756244955,0) (0.0001539254955,0) (0.0001835979054,0) (0.008857709221,0) (0.0002891550959,0) (0.0004506771526,0) (0.0007129915528,0) (8.993340896e-06,0) (4.250060433e-06,0) (0.002625833686,0) (1.60314874e-05,0) (1.152525194e-05,0) (3.496369595e-06,0) (6.261644115e-06,0) (1.658833738e-05,0) (0.0003176578563,0) (1.01594509e-05,0) (1.337741548e-06,0) (5.129237847e-05,0) (6.572109132e-07,0) (2.20383207e-07,0) (0.0001039161773,0) (6.150600883e-07,0) (2.836013573e-06,0) (9.454592508e-07,0) (2.430401289e-06,0) (2.015296627e-06,0) (9.633593424e-08,0) (1.307998808e-06,0) (7.127991709e-07,0) (1.179406541e-05,0) (7.39491486e-07,0) (3.820896297e-07,0) (4.342680978e-06,0) (0,0) (0.002099748074,0) (0.06156955733,0) (7.114789054e-05,0) (0.05029811769,0) (0,0) (0.0005299594019,0) (0.01318363225,0) (0.02107802791,0) (0.01106375401,0) (2.168404345e-19,0) (7.058923414e-06,0) (0.0001891960434,0) (0.0002561189377,0) (0.01475511786,0) (0,0) (1.711878633e-07,0) (0.0009584736151,0) (0.001126274353,0) (0.0003682274248,0) (-2.710505431e-20,0) (2.7652106e-05,0) (8.673773527e-06,0) (4.097130545e-05,0) (0.002315825677,0) (0,0) (3.702756937e-06,0) (1.329608283e-05,0) (5.70924401e-06,0) (0.0003295600291,0) (2.541098842e-21,0) (2.946557407e-06,0) (5.015820037e-05,0) (0.0001264260713,0) (3.861267461e-05,0) (-6.776263578e-21,0) (9.875766575e-07,0) (1.29029779e-05,0) (2.779852115e-06,0) (0.0002263576027,0) (6.573952743e-09,0) (-4.235164736e-22,0) (4.630728464e-08,0) (4.275873786e-07,0) (2.47925857e-05,0) (3.705769144e-22,0) (2.784547616e-07,0) (3.05584326e-06,0) (1.806598778e-05,0) (2.003963724e-06,0) (4.235164736e-22,0) (4.120885495e-07,0) (1.368540015e-06,0) (5.405814955e-06,0) (5.188382974e-06,0) (2.103438461e-07,0) (-8.470329473e-22,0) (2.21632634e-06,0) (2.994934864e-06,0) (1.202228621e-05,0) (-1.058791184e-22,0) (1.473351266e-07,0) (1.60672927e-06,0) (3.824359347e-07,0) (1.483102828e-06,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (1.792468198e-05,0) (0.0015942032,0) (-0.1456492277,0) (-0.002288970907,0) (-0.04519188989,0) (1.349672706e-05,0) (0.01039062405,0) (-0.0008488810399,0) (-1.833908765e-06,0) (0.01281429128,0) (-0.0007629577502,0) (-2.261845447e-06,0) (-0.0009122039538,0) (-0.002265202916,0) (6.573132114e-07,0) (-6.462997956e-05,0) (-1.306935015e-05,0) (1.547562452e-08,0) (-0.0003155601183,0) (-0.000622467995,0) (1.928670741e-07,0) (0.0009669418372,0) (-7.371168797e-05,0) (-1.703585845e-07,0) (-9.854256778e-05,0) (-0.0002801178774,0) (7.871574193e-08,0) (0.0002283587626,0) (-1.837131481e-05,0) (-4.027933956e-08,0) (-2.384812022e-05,0) (-0.0001639726644,0) (4.130690869e-08,0) (0.000109272375,0) (-5.321956378e-06,0) (-1.92916415e-08,0) (-3.927606724e-06,0) (-5.36331914e-05,0) (1.42199673e-08,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.07546254497,0) (-0.1102916257,0) (-0.00234947156,0) (0.01401379174,0) (0.002871750125,0) (-0.002111406963,0) (-0.0005266747028,0) (0.0002176780091,0) (0.0002315114256,0) (-6.430989108e-05,0) (-2.170284735e-05,0) (-3.916024248e-06,0) (1.675001957e-05,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.02292890543,0) (-0.02156692623,0) (0.0004740621088,0) (7.361676329e-05,0) (-0.0001419997048,0) (-0.0002551409173,0) (0.0001553787796,0) (3.72847108e-05,0) (-7.802805272e-05,0) (-1.579718001e-05,0) (1.229415824e-05,0) (-9.719602051e-06,0) (-1.29483986e-05,0) (1.933695861e-06,0) (-0.03199064087,0) (-0.02299221789,0) (0.005912559672,0) (-1.447272914e-06,0) (-0.01738794072,0) (9.397260481e-05,0) (-1.564861596e-08,0) (0.0007387482168,0) (-3.585040966e-06,0) (9.420694424e-10,0) (5.436834395e-06,0) (1.247478056e-09,0) (-2.065379919e-05,0) (-0.0005520810976,0) (3.049198037e-05,0) (-4.763408986e-09,0) (-3.993073118e-05,0) (1.606572917e-09,0) (-5.581744661e-05,0) (0.0003202683844,0) (1.293499994e-09,0) (4.343975792e-06,0) (-0.0001240359772,0) (1.831224303e-10,0) (3.841493541e-06,0) (-0.0001108992143,0) (2.350780239e-10,0) (-1.286536979e-06,0) (1.161940272e-05,0) (2.387046427e-06,0) (-5.316445846e-11,0) (-3.410339354e-06,0) (2.467585767e-10,0) (2.105845968e-06,0) (-3.536965701e-05,0) (1.560307562e-10,0) (7.77950799e-07,0) (-2.080929823e-05,0) (5.204170428e-18,0) (0.004449681879,0) (9.875566194e-08,0) (0.0001906725663,0) (-0.09897492918,0) (-2.168404345e-19,0) (0.001163767271,0) (0.008173532278,0) (-2.023388919e-06,0) (-0.002208672077,0) (0,0) (1.441241402e-05,0) (0.000103430604,0) (-2.303572953e-08,0) (-0.0003443707994,0) (-1.694065895e-21,0) (3.546892966e-07,0) (5.564768243e-05,0) (-8.856789814e-09,0) (7.598111631e-06,0) (0,0) (5.613041285e-05,0) (4.007349356e-05,0) (-3.375795271e-08,0) (-0.0002635377927,0) (-6.776263578e-21,0) (7.519930189e-06,0) (1.577459173e-08,0) (5.364558862e-05,0) (0.0001286262247,0) (5.082197684e-21,0) (5.974666933e-06,0) (5.496789673e-09,0) (-0.0001421887402,0) (9.710076482e-05,0) (0,0) (2.003154677e-06,0) (1.839710283e-09,0) (-2.388494044e-05,0) (-8.647148753e-05,0) (1.340554525e-08,0) (-8.470329473e-22,0) (1.451967495e-11,0) (6.909246837e-06,0) (-2.592891019e-05,0) (0,0) (5.713850495e-07,0) (6.845034665e-10,0) (-1.519996164e-05,0) (1.399723361e-05,0) (-1.270549421e-21,0) (8.393777059e-07,0) (-4.576572648e-07,0) (8.775775864e-10,0) (-2.393998219e-05,0) (4.258067386e-07,0) (4.235164736e-22,0) (3.864907411e-10,0) (8.138608507e-06,0) (-3.005827211e-05,0) (-8.470329473e-22,0) (3.050299829e-07,0) (2.42261127e-10,0) (-2.173739453e-07,0) (-1.107271747e-05,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (-0.0004028470466,-0.0006977515524) (-0.04299386424,-0.07446755728) (-0.007090582965,-0.01228124995) (-0.01874283661,-0.03246354529) (-0.0002534798879,-0.0004390400445) (6.808460863e-06,1.179260014e-05) (0.001218491756,0.00211048963) (0.001120069607,0.001940017466) (-7.702992143e-07,-1.334197376e-06) (0.001420036301,0.002459575022) (0.003079871323,0.005334493612) (-1.497289225e-06,-2.593381012e-06) (-0.0009844018759,-0.001705034064) (0.0002005515599,0.0003473654913) (2.589526051e-07,4.485190688e-07) (-9.179394658e-05,-0.0001589917793) (1.709241288e-05,2.960492753e-05) (2.461341544e-08,4.263168609e-08) (-0.0005075475471,-0.0008790981388) (0.0001125653912,0.0001949689767) (1.306577615e-07,2.263058812e-07) (0.0001311012957,0.0002270741051) (0.0001706747231,0.0002956172919) (-9.963682546e-08,-1.72576044e-07) (-0.0001322101708,-0.0002289947331) (2.533065632e-05,4.387398374e-05) (3.534207956e-08,6.121427745e-08) (3.566399888e-05,6.177185807e-05) (3.686250359e-05,6.384772911e-05) (-2.392364366e-08,-4.143696631e-08) (-7.485395282e-05,-0.0001296508494) (7.155927413e-06,1.239442985e-05) (2.264899878e-08,3.922921662e-08) (9.107253788e-06,1.577422628e-05) (2.532776104e-05,4.386896896e-05) (-1.151244726e-08,-1.994014357e-08) (-1.899134758e-05,-3.289397892e-05) (3.912341003e-07,6.776373393e-07) (6.342969012e-09,1.09863446e-08) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.01653457404,0.02863872232) (-0.01481693702,-0.02566368773) (9.949706138e-05,0.0001723339655) (5.377938606e-05,9.314862906e-05) (-7.132203009e-05,-0.0001235333798) (-0.0002105623306,-0.0003647046547) (7.44529174e-05,0.0001289562357) (4.794629208e-05,8.304541391e-05) (-4.645234247e-05,-8.045781728e-05) (-2.113002537e-05,-3.65982775e-05) (6.508952823e-06,1.127383699e-05) (-2.782565142e-06,-4.819544201e-06) (-9.300181641e-06,-1.610838712e-05) (-0.01463285707,-0.0253448519) (2.616874833e-05,4.532560167e-05) (-0.002336540875,-0.00404700751) (0.001812179585,0.003138787114) (-2.272899548e-06,-3.936777498e-06) (-0.01319038986,-0.02284642541) (3.996000794e-05,6.921276402e-05) (-1.284453257e-08,-2.224738301e-08) (0.0004618297644,0.0007999126164) (-9.553607913e-07,-1.65473343e-06) (4.636983056e-10,8.031490246e-10) (5.524098285e-06,9.568018896e-06) (-1.086310209e-07,-1.881544475e-07) (-1.339854236e-05,-2.320695611e-05) (-0.000365141319,-0.0006324433165) (8.800808196e-10,1.524344694e-09) (2.84893946e-05,4.934507893e-05) (-0.0001517399338,-0.0002628212748) (-1.277053227e-10,-2.211921074e-10) (-2.208009141e-05,-3.824384015e-05) (0.0002236392519,0.0003873545469) (2.407892199e-08,4.170591628e-08) (-1.190479427e-09,-2.061970853e-09) (-3.154137007e-05,-5.46312555e-05) (-9.036164811e-11,-1.565109656e-10) (1.950696771e-06,3.378705918e-06) (-8.471154588e-05,-0.0001467247015) (-2.03076594e-11,-3.517389786e-11) (5.730243228e-08,9.925072411e-08) (-5.392190249e-06,-9.339547476e-06) (-3.658433149e-10,-6.336592089e-10) (-1.116528349e-06,-1.933883829e-06) (8.868127353e-06,1.536004714e-05) (-9.65577339e-11,-1.67242901e-10) (1.416117621e-06,2.452787669e-06) (-1.848146722e-05,-3.201084023e-05) (-4.754985347e-11,-8.235876209e-11) (1.592600314e-06,2.75846466e-06) (-1.728333755e-05,-2.993561877e-05) (1.517883041e-18,2.602085214e-18) (0.001421288335,0.002461743608) (-0.02866009467,-0.04964074012) (4.147852654e-05,7.184291538e-05) (-0.008490374326,-0.01470575971) (-8.131516294e-20,-1.626303259e-19) (-3.488083878e-05,-6.041538497e-05) (0.002604149643,0.004510519493) (-1.212696121e-06,-2.100451296e-06) (-0.001949014841,-0.003375792729) (5.082197684e-21,-1.355252716e-20) (-6.84819863e-07,-1.186142797e-06) (1.665488592e-05,2.88471086e-05) (-1.158052873e-08,-2.005806414e-08) (-0.0002638178336,-0.0004569458917) (-3.176373552e-22,-4.235164736e-22) (-3.213881516e-09,-5.566606076e-09) (1.951032757e-05,3.379287863e-05) (-5.044923245e-09,-8.738063381e-09) (1.02387175e-06,1.773397892e-06) (-7.623296525e-21,-2.371692252e-20) (-1.126062466e-07,-1.950397403e-07) (2.913830078e-10,5.046901739e-10) (1.392033993e-05,2.411073601e-05) (-0.0002210927651,-0.0003829439024) (-1.270549421e-21,0) (-6.274119749e-07,-1.086709418e-06) (1.575244907e-09,2.728404213e-09) (-2.951896633e-05,-5.112834946e-05) (0.0001121274987,0.0001942105247) (0,1.694065895e-21) (9.099122566e-07,1.576014259e-06) (-6.783673963e-09,-1.174966797e-08) (-4.63062193e-05,-8.020472453e-05) (9.03034606e-05,0.0001564101819) (2.01170325e-21,4.235164736e-22) (6.916940092e-07,1.198049167e-06) (-3.396487491e-09,-5.882888901e-09) (-8.287775515e-06,-1.435484827e-05) (-5.108477623e-05,-8.848142792e-05) (-1.905824131e-21,-1.694065895e-21) (5.895674323e-09,1.021160747e-08) (-1.532991602e-11,-2.655219342e-11) (2.033345566e-06,3.521857829e-06) (-2.71197858e-05,-4.697284689e-05) (6.088049308e-22,4.764560328e-22) (2.929347052e-08,5.073777927e-08) (-1.226739939e-10,-2.124775902e-10) (-8.152622709e-06,-1.412075675e-05) (1.185719849e-05,2.053727021e-05) (-5.29395592e-23,1.058791184e-22) (2.366362762e-11,4.098660533e-11) (2.030510961e-07,3.51694815e-07) (-5.516550356e-10,-9.554945499e-10) (-6.289741996e-06,-1.08941527e-05) (3.176373552e-22,-7.411538288e-22) (8.545604851e-08,1.480142178e-07) (-2.306127229e-10,-3.994329529e-10) (5.359197563e-06,9.282402468e-06) (-1.792223291e-05,-3.104221799e-05) (5.29395592e-23,6.352747104e-22) (4.463913472e-08,7.731724935e-08) (-1.130973968e-10,-1.958904374e-10) (1.567605963e-06,2.715173175e-06) (-8.255361831e-06,-1.429870613e-05) -(-0.02616144742,-0.04531295613) (-0.04013399248,-0.06951411408) (-0.002798563663,-0.004847254452) (0.004795750123,0.008306482873) (0.001429388891,0.002475774183) (-0.0006396043251,-0.001107827188) (-0.0002747846405,-0.0004759409585) (4.231850505e-05,7.329780085e-05) (9.721999344e-05,0.0001683899681) (-1.201980249e-05,-2.08189086e-05) (-1.024812465e-05,-1.775027258e-05) (-3.419704066e-06,-5.923101189e-06) (5.830153065e-06,1.009812133e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.2731656004,0) (0.01615280688,0) (-0.02892567571,0) (-0.00681892694,0) (0.00311081643,0) (-0.0001242414384,0) (9.142358452e-06,0) (0.0001499983368,0) (-0.0001504484689,0) (9.162783375e-05,0) (-7.145343949e-05,0) (6.119624794e-05,0) (-3.277313972e-05,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.2695462447,0) (0.02324389201,0) (-0.03424272561,0) (-0.004333899483,0) (0.002291534039,0) (4.332848919e-05,0) (0.0001066902242,0) (-2.294053818e-05,0) (1.892984583e-05,0) (-3.739677434e-05,0) (2.322309841e-05,0) (-2.861059199e-06,0) (6.880804962e-06,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.1208306479,0) (-0.009094799051,0) (-0.002843835608,0) (4.385357727e-05,0) (0.000101455379,0) (-2.497568383e-05,0) (2.882303202e-05,0) (4.591201175e-06,0) (1.25522063e-05,0) (2.574477926e-05,0) (9.479225358e-06,0) (3.178405029e-06,0) (8.85371498e-06,0) (1.738623898e-10,0) (-0.03001102387,0) (0.1997440824,0) (-0.0001221715915,0) (-1.474070406e-10,0) (-0.02386352647,0) (-3.161081699e-06,0) (8.892664166e-13,0) (-0.0003782332269,0) (5.069147332e-07,0) (1.658455888e-13,0) (1.114472307e-05,0) (-1.500172006e-14,0) (-4.573358943e-07,0) (5.007857078e-05,0) (2.271380542e-06,0) (1.920933975e-13,0) (-1.440347086e-05,0) (3.522406586e-14,0) (-3.493952407e-06,0) (4.251167502e-05,0) (1.184301307e-14,0) (8.749326325e-07,0) (-6.649639108e-06,0) (-7.916366537e-15,0) (-3.478571729e-06,0) (4.038721491e-05,0) (5.133587681e-14,0) (-1.83560613e-06,0) (3.443235877e-05,0) (6.48529231e-07,0) (4.700311397e-15,0) (3.713046695e-06,0) (-8.486490438e-15,0) (-1.351843834e-06,0) (9.719683219e-06,0) (-1.014688338e-14,0) (-1.550010209e-06,0) (1.674276403e-05,0) (-1.734723476e-18,0) (-0.000377473387,0) (-9.424695399e-12,0) (-0.008719428334,0) (0.06301289739,0) (-4.33680869e-19,0) (4.987671827e-06,0) (-0.00143187811,0) (-4.141268852e-10,0) (-0.005892254741,0) (1.694065895e-21,0) (1.859842766e-07,0) (4.229671091e-07,0) (-6.138141033e-13,0) (-6.644558929e-05,0) (8.470329473e-22,0) (-2.859798928e-08,0) (-8.511178364e-06,0) (1.891527865e-12,0) (-1.727510638e-05,0) (-8.470329473e-22,0) (3.662671398e-07,0) (6.488075772e-07,0) (-3.437640454e-13,0) (-2.522670586e-05,0) (0,0) (5.164395866e-08,0) (2.409182211e-13,0) (-3.633301909e-07,0) (1.293020884e-05,0) (1.058791184e-22,0) (-2.328816091e-08,0) (-6.937242073e-14,0) (4.52940866e-06,0) (-8.289612776e-06,0) (0,0) (-3.139926191e-09,0) (-5.790193243e-15,0) (-4.039157833e-07,0) (1.915478012e-06,0) (-8.160659869e-10,0) (8.470329473e-22,0) (-1.266989765e-15,0) (-9.077704595e-06,0) (2.704664962e-05,0) (0,0) (1.483552381e-08,0) (5.416556846e-14,0) (-5.200987241e-06,0) (1.074630952e-05,0) (0,0) (1.08671901e-08,0) (-1.266292565e-07,0) (-3.289808164e-14,0) (-9.136562887e-07,0) (-1.278080324e-08,0) (-4.235164736e-22,0) (-2.091688994e-14,0) (-5.329587217e-06,0) (9.978394523e-06,0) (6.352747104e-22,0) (-2.480045938e-08,0) (-3.21468247e-14,0) (6.229744764e-07,0) (4.252964659e-06,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (1.333601076e-05,0) (-0.003680518671,0) (0.01171062439,0) (0.004572524643,0) (-0.001931974151,0) (1.016225988e-05,0) (-0.003695330387,0) (0.003163975381,0) (-1.380679875e-06,0) (-0.002791090092,0) (0.002119938484,0) (-1.702859645e-06,0) (0.001336173644,0) (-0.001159269776,0) (4.948719016e-07,0) (5.602991138e-05,0) (-5.170347486e-05,0) (1.165106662e-08,0) (0.0004402708215,0) (-0.0003880446353,0) (1.452039402e-07,0) (-0.0002896023254,0) (0.0002398595806,0) (-1.282564785e-07,0) (0.0001483925852,0) (-0.0001273107664,0) (5.926285014e-08,0) (-7.692981325e-05,0) (6.523609042e-05,0) (-3.032478854e-08,0) (4.206025406e-05,0) (-3.160521265e-05,0) (3.109924057e-08,0) (-1.970181647e-05,0) (1.391253042e-05,0) (-1.452397306e-08,0) (7.57314583e-06,0) (-4.370287337e-06,0) (1.070626807e-08,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.004214043356,0) (0.006158998385,0) (0.0001312011809,0) (-0.0007825700286,0) (-0.000160366703,0) (0.0001179069761,0) (2.941101487e-05,0) (-1.215575976e-05,0) (-1.292825713e-05,0) (3.591247411e-06,0) (1.211948785e-06,0) (2.186819431e-07,0) (-9.353687809e-07,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.04520166927,0) (0.04251668573,0) (-0.0009345582901,0) (-0.0001451268835,0) (0.0002799358963,0) (0.0005029806326,0) (-0.0003063111856,0) (-7.350246924e-05,0) (0.0001538232273,0) (3.114230238e-05,0) (-2.423650254e-05,0) (1.916106456e-05,0) (2.552626129e-05,0) (1.454931824e-06,0) (-0.003157854218,0) (0.007512458075,0) (0.0005195851016,0) (-1.088795504e-06,0) (0.03421108654,0) (-7.146290097e-06,0) (-1.177097021e-08,0) (-0.001457959397,0) (-6.924319911e-07,0) (7.086881675e-10,0) (-1.038967993e-05,0) (9.381966906e-10,0) (-1.140640338e-05,0) (0.001087813846,0) (-1.904659493e-05,0) (-3.587190187e-09,0) (0.0001295991408,0) (1.20807976e-09,0) (5.088937078e-05,0) (-0.0006397323042,0) (9.728329649e-10,0) (-2.632356776e-05,0) (0.0001948452291,0) (1.377274291e-10,0) (-1.900743854e-05,0) (0.0002168844333,0) (1.768045232e-10,0) (1.738073434e-06,0) (-3.331910854e-05,0) (-2.35095165e-06,0) (-4.003305574e-11,0) (-1.444095283e-05,0) (1.856004633e-10,0) (-8.44366819e-06,0) (5.955031546e-05,0) (1.173764161e-10,0) (-3.04711323e-06,0) (3.220324779e-05,0) (-7.589415207e-19,0) (9.495322441e-05,0) (7.430118958e-08,0) (-0.00369666856,0) (0.02112509155,0) (6.505213035e-19,0) (6.333326623e-05,0) (0.001467685891,0) (-1.522189737e-06,0) (0.003983623004,0) (2.710505431e-20,0) (-1.128629076e-06,0) (1.486140405e-06,0) (-1.732577337e-08,0) (0.0006790959101,0) (8.470329473e-22,0) (-9.281519799e-09,0) (-5.628658706e-06,0) (-6.662351652e-09,0) (-1.747322974e-05,0) (4.065758147e-20,0) (-4.549907229e-06,0) (-1.145926933e-05,0) (-2.539534721e-08,0) (0.0005202223217,0) (-6.776263578e-21,0) (-6.099495322e-07,0) (1.186146372e-08,0) (1.038789438e-05,0) (-0.0002534353773,0) (0,0) (-5.02811008e-07,0) (4.132508469e-09,0) (0.000156366619,0) (-0.0002955184562,0) (0,0) (-1.679232679e-07,0) (1.383585823e-09,0) (-3.776354522e-05,0) (0.0001676407959,0) (-8.088281908e-10,0) (1.694065895e-21,0) (1.092177589e-11,0) (-1.716212179e-05,0) (5.082791124e-05,0) (8.470329473e-22,0) (-3.774756953e-08,0) (5.146970487e-10,0) (2.38628948e-05,0) (-5.030265065e-05,0) (4.235164736e-22,0) (-6.59283491e-08,0) (1.303346218e-06,0) (6.607505923e-10,0) (8.223005948e-06,0) (-3.476269999e-08,0) (0,0) (2.906841531e-10,0) (-2.422359532e-05,0) (4.450385645e-05,0) (0,0) (-7.6060703e-09,0) (1.822462067e-10,0) (6.185128518e-07,0) (3.673086727e-06,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (-1.352214984e-05,0) (-0.001516611742,0) (-0.1815201801,0) (0.001529805043,0) (-0.06184377689,0) (-1.018009989e-05,0) (0.0100894037,0) (0.002033057526,0) (1.382974519e-06,0) (0.01420621429,0) (0.001104706844,0) (1.705669872e-06,0) (0.0001243303037,0) (-0.00416102366,0) (-4.957044252e-07,0) (-2.976561439e-05,0) (-6.894765397e-05,0) (-1.167054917e-08,0) (2.109279228e-05,0) (-0.001212800252,0) (-1.454478514e-07,0) (0.0009931054366,0) (0.0001417158764,0) (1.284692074e-07,0) (1.74742353e-05,0) (-0.0004985374759,0) (-5.936260932e-08,0) (0.0002260156754,0) (4.076642451e-05,0) (3.037514902e-08,0) (1.036691613e-05,0) (-0.0002489763116,0) (-3.115196758e-08,0) (0.0001252345373,0) (6.832339961e-06,0) (1.454786252e-08,0) (2.35247391e-06,0) (-7.547512391e-05,0) (-1.072474815e-08,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.09590197642,0) (-0.1401646988,0) (-0.002985838421,0) (0.01780950172,0) (0.003649578912,0) (-0.002683292763,0) (-0.0006693273457,0) (0.0002766372549,0) (0.0002942175258,0) (-8.172856693e-05,0) (-2.758117892e-05,0) (-4.976700232e-06,0) (2.128685141e-05,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.01470014553,0) (0.01382695546,0) (-0.0003039299897,0) (-4.71970691e-05,0) (9.103863821e-05,0) (0.000163575563,0) (-9.961621062e-05,0) (-2.390391798e-05,0) (5.002522838e-05,0) (1.012786441e-05,0) (-7.88201233e-06,0) (6.23141672e-06,0) (8.301457933e-06,0) (-1.457628927e-06,0) (-0.04559196335,0) (-0.02299600676,0) (0.008358714646,0) (1.091418551e-06,0) (0.01108001222,0) (0.0001174809611,0) (1.180077153e-08,0) (-0.0004752201501,0) (-5.445124097e-06,0) (-7.103876161e-10,0) (-3.157105631e-06,0) (-9.404551985e-10,0) (-3.878017573e-05,0) (0.0003533999622,0) (2.141472362e-05,0) (3.593291973e-09,0) (7.639707444e-05,0) (-1.211070338e-09,0) (-2.325109286e-05,0) (-0.0002136717171,0) (-9.75273999e-10,0) (-2.050776465e-05,0) (2.993656717e-05,0) (-1.380484768e-10,0) (-1.387528677e-05,0) (6.936217859e-05,0) (-1.771963067e-10,0) (2.805955058e-08,0) (-1.784210166e-05,0) (8.180342229e-07,0) (4.010017397e-11,0) (-1.893631504e-05,0) (-1.860366417e-10,0) (-5.633722485e-06,0) (1.251832324e-05,0) (-1.176319828e-10,0) (-2.00923065e-06,0) (4.53804567e-06,0) (1.734723476e-18,0) (0.005994823377,0) (-7.444950055e-08,0) (-0.003435817589,0) (-0.1102116782,0) (-1.084202172e-18,0) (0.001606299893,0) (0.01230377284,0) (1.525748086e-06,0) (0.001045366821,0) (-1.355252716e-20,0) (1.798364778e-05,0) (0.0001386402286,0) (1.737100717e-08,0) (0.0002209886563,0) (-1.694065895e-21,0) (4.610365646e-07,0) (6.817192153e-05,0) (6.679547034e-09,0) (-7.354140116e-06,0) (0,0) (6.988489398e-05,0) (4.1665471e-05,0) (2.546341754e-08,0) (0.0001696441168,0) (1.016439537e-20,0) (9.362266021e-06,0) (-1.188796278e-08,0) (8.158151922e-05,0) (-8.232622071e-05,0) (6.776263578e-21,0) (7.420259143e-06,0) (-4.143616472e-09,0) (-3.256963719e-05,0) (-0.000166117142,0) (3.388131789e-21,0) (2.488480358e-06,0) (-1.386998724e-09,0) (-6.937063544e-05,0) (5.261433427e-05,0) (1.696781277e-08,0) (0,0) (-1.09460803e-11,0) (-7.964340301e-06,0) (1.633611477e-05,0) (1.058791184e-21,0) (7.199518179e-07,0) (-5.160270666e-10,0) (3.653434698e-06,0) (-3.163718351e-05,0) (4.235164736e-22,0) (1.047169952e-06,0) (6.944596701e-07,0) (-6.615208134e-10,0) (-2.354858994e-05,0) (5.29902449e-07,0) (-2.117582368e-22,0) (-2.91384935e-10,0) (-1.338045233e-05,0) (4.545817498e-06,0) (-6.352747104e-22,0) (3.968631531e-07,0) (-1.826512278e-10,0) (3.288624992e-07,0) (-1.102174207e-05,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (1.792468198e-05,0) (0.0015942032,0) (-0.1456492277,0) (-0.002288970907,0) (-0.04519188989,0) (1.349672706e-05,0) (0.01039062405,0) (-0.0008488810399,0) (-1.833908765e-06,0) (0.01281429128,0) (-0.0007629577502,0) (-2.261845447e-06,0) (-0.0009122039538,0) (-0.002265202916,0) (6.573132114e-07,0) (-6.462997956e-05,0) (-1.306935015e-05,0) (1.547562452e-08,0) (-0.0003155601183,0) (-0.000622467995,0) (1.928670741e-07,0) (0.0009669418372,0) (-7.371168797e-05,0) (-1.703585845e-07,0) (-9.854256778e-05,0) (-0.0002801178774,0) (7.871574193e-08,0) (0.0002283587626,0) (-1.837131481e-05,0) (-4.027933956e-08,0) (-2.384812022e-05,0) (-0.0001639726644,0) (4.130690869e-08,0) (0.000109272375,0) (-5.321956378e-06,0) (-1.92916415e-08,0) (-3.927606724e-06,0) (-5.36331914e-05,0) (1.42199673e-08,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.07546254497,0) (-0.1102916257,0) (-0.00234947156,0) (0.01401379174,0) (0.002871750125,0) (-0.002111406963,0) (-0.0005266747028,0) (0.0002176780091,0) (0.0002315114256,0) (-6.430989108e-05,0) (-2.170284735e-05,0) (-3.916024248e-06,0) (1.675001957e-05,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.02292890543,0) (-0.02156692623,0) (0.0004740621088,0) (7.361676329e-05,0) (-0.0001419997048,0) (-0.0002551409173,0) (0.0001553787796,0) (3.72847108e-05,0) (-7.802805272e-05,0) (-1.579718001e-05,0) (1.229415824e-05,0) (-9.719602051e-06,0) (-1.29483986e-05,0) (1.933695861e-06,0) (-0.03199064087,0) (-0.02299221789,0) (0.005912559672,0) (-1.447272914e-06,0) (-0.01738794072,0) (9.397260481e-05,0) (-1.564861596e-08,0) (0.0007387482168,0) (-3.585040966e-06,0) (9.420694424e-10,0) (5.436834395e-06,0) (1.247478056e-09,0) (-2.065379919e-05,0) (-0.0005520810976,0) (3.049198037e-05,0) (-4.763408986e-09,0) (-3.993073118e-05,0) (1.606572917e-09,0) (-5.581744661e-05,0) (0.0003202683844,0) (1.293499994e-09,0) (4.343975792e-06,0) (-0.0001240359772,0) (1.831224303e-10,0) (3.841493541e-06,0) (-0.0001108992143,0) (2.350780239e-10,0) (-1.286536979e-06,0) (1.161940272e-05,0) (2.387046427e-06,0) (-5.316445846e-11,0) (-3.410339354e-06,0) (2.467585767e-10,0) (2.105845968e-06,0) (-3.536965701e-05,0) (1.560307562e-10,0) (7.77950799e-07,0) (-2.080929823e-05,0) (5.204170428e-18,0) (0.004449681879,0) (9.875566195e-08,0) (0.0001906725663,0) (-0.09897492918,0) (-2.168404345e-19,0) (0.001163767271,0) (0.008173532278,0) (-2.023388919e-06,0) (-0.002208672077,0) (-6.776263578e-21,0) (1.441241402e-05,0) (0.000103430604,0) (-2.303572953e-08,0) (-0.0003443707994,0) (-3.388131789e-21,0) (3.546892966e-07,0) (5.564768243e-05,0) (-8.856789814e-09,0) (7.598111631e-06,0) (0,0) (5.613041285e-05,0) (4.007349356e-05,0) (-3.375795271e-08,0) (-0.0002635377927,0) (0,0) (7.519930189e-06,0) (1.577459173e-08,0) (5.364558862e-05,0) (0.0001286262247,0) (0,0) (5.974666933e-06,0) (5.496789673e-09,0) (-0.0001421887402,0) (9.710076482e-05,0) (-3.388131789e-21,0) (2.003154677e-06,0) (1.839710283e-09,0) (-2.388494044e-05,0) (-8.647148753e-05,0) (1.340554525e-08,0) (0,0) (1.451967495e-11,0) (6.909246837e-06,0) (-2.592891019e-05,0) (4.235164736e-22,0) (5.713850495e-07,0) (6.845034665e-10,0) (-1.519996164e-05,0) (1.399723361e-05,0) (-8.470329473e-22,0) (8.393777059e-07,0) (-4.576572648e-07,0) (8.775775864e-10,0) (-2.393998219e-05,0) (4.258067386e-07,0) (1.270549421e-21,0) (3.864907411e-10,0) (8.138608507e-06,0) (-3.005827211e-05,0) (-4.235164736e-22,0) (3.050299829e-07,0) (2.42261127e-10,0) (-2.173739453e-07,0) (-1.107271747e-05,0) -(0.2370734683,0) (0.0006670533688,0) (0.004066218674,0) (0.0006820777545,0) (0.0005956356081,0) (8.044155541e-06,0) (9.655870575e-06,0) (6.831873609e-05,0) (4.382157398e-05,0) (1.591626787e-05,0) (1.652759785e-05,0) (1.94939596e-05,0) (1.491606603e-05,0) (3.877437899e-09,0) (0.000104543173,0) (0.3087228188,0) (0.0001062601308,0) (0.02189791074,0) (1.451237323e-09,0) (0.00101721631,0) (6.767884142e-05,0) (3.270019455e-11,0) (0.002703808895,0) (4.554381508e-05,0) (7.902103776e-11,0) (3.058225334e-05,0) (0.0002763177339,0) (1.071720204e-11,0) (1.677877475e-07,0) (1.554212663e-07,0) (1.046209416e-14,0) (9.935797639e-06,0) (6.792423503e-05,0) (2.685856042e-12,0) (0.0001254778854,0) (5.197168565e-06,0) (3.878416987e-12,0) (3.452071693e-06,0) (3.698293816e-05,0) (1.425830819e-12,0) (2.421919495e-05,0) (1.387963126e-06,0) (7.687789817e-13,0) (1.030262135e-06,0) (3.786694817e-05,0) (1.535265483e-12,0) (3.118113231e-05,0) (2.989431376e-07,0) (8.846582533e-13,0) (1.823523549e-07,0) (2.000685348e-05,0) (1.00557303e-12,0) (3.415236843e-18,0) (-4.33680869e-19,0) (0,0) (0.03787629397,0) (0.1290043371,0) (9.757819552e-19,0) (1.626303259e-19,0) (1.734723476e-18,0) (0.01166407464,0) (0.02777002614,0) (0,0) (-1.905824131e-21,0) (-6.776263578e-21,0) (0.0001520492622,0) (9.479976155e-05,0) (3.726944968e-20,0) (-1.016439537e-20,0) (0,0) (0.0005765989928,0) (0.002012299337,0) (3.30872245e-24,0) (-2.067951531e-24,0) (4.135903063e-25,0) (2.968303438e-07,0) (9.832055907e-08,0) (-1.058791184e-22,0) (3.97046694e-23,0) (-1.389663429e-22,0) (3.860134312e-07,0) (9.979758691e-06,0) (-1.694065895e-21,0) (4.235164736e-22,0) (-2.01170325e-21,0) (3.578750522e-05,0) (7.498366886e-05,0) (-2.488159283e-21,0) (5.29395592e-23,0) (8.470329473e-22,0) (1.02162398e-05,0) (6.854234909e-05,0) (-1.058791184e-22,0) (-9.264422861e-23,0) (0,0) (9.779609685e-07,0) (8.699365442e-06,0) (-2.117582368e-22,0) (-5.29395592e-23,0) (-1.32348898e-23,0) (4.056902711e-06,0) (8.419618364e-06,0) (0,0) (1.98523347e-23,0) (-1.032321404e-21,0) (5.202177913e-06,0) (1.997650936e-05,0) (5.29395592e-23,0) (-3.176373552e-22,0) (4.764560328e-22,0) (2.701400034e-06,0) (1.519803296e-05,0) (2.117582368e-22,0) (-3.30872245e-23,0) (4.566036981e-22,0) (2.43172997e-06,0) (8.192639034e-06,0) -(0.4945189387,0) (0.307421443,0) (0.1319654046,0) (0.03941143222,0) (0.01673841645,0) (0.005001509027,0) (0.002982067969,0) (0.0008721944031,0) (0.0006739086684,0) (0.0001662005827,0) (0.000162668234,0) (2.726728507e-05,0) (3.849627959e-05,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.09496554104,0) (0.02219350733,0) (0.0009466734748,0) (2.321681126e-06,0) (4.129794632e-05,0) (0.0001989658342,0) (0.0002383724452,0) (0.0001692599573,0) (0.0001085254047,0) (7.176902103e-05,0) (5.852636604e-05,0) (5.506831979e-05,0) (4.747128362e-05,0) (1.073506527e-10,0) (0.04541795873,0) (0.1725741146,0) (0.01007922853,0) (4.289735641e-10,0) (0.01096928929,0) (5.737094057e-05,0) (1.333779821e-12,0) (6.161287463e-05,0) (4.444852922e-08,0) (1.969247442e-15,0) (4.145795013e-08,0) (1.730393003e-13,0) (0.0001003702013,0) (0.0001160749593,0) (5.79959204e-05,0) (1.968726167e-12,0) (0.000456033966,0) (4.122042944e-13,0) (0.0001878179395,0) (0.0003229003659,0) (1.646882568e-13,0) (1.410595769e-05,0) (0.0002999456081,0) (5.102445159e-14,0) (6.696096688e-05,0) (0.0001183515028,0) (8.984760364e-14,0) (5.83628165e-07,0) (0.0001427988773,0) (2.344464954e-06,0) (1.402501907e-15,0) (0.0001207276869,0) (4.655188215e-14,0) (6.221369806e-06,0) (0.0001060713667,0) (3.292207679e-14,0) (1.583941041e-06,0) (9.971418463e-05,0) (-4.33680869e-18,0) (0.009429544937,0) (1.5840107e-13,0) (0.0005109923468,0) (0.194759507,0) (2.710505431e-19,0) (0.002555581156,0) (0.005067391794,0) (1.942355678e-10,0) (0.0004409201741,0) (-3.388131789e-21,0) (2.942625463e-05,0) (5.654394068e-05,0) (2.071868796e-12,0) (8.037295849e-06,0) (-1.058791184e-22,0) (7.348914505e-07,0) (3.230829218e-06,0) (6.964797294e-14,0) (1.567816421e-07,0) (-1.355252716e-20,0) (0.000113937913,0) (0.0001851425888,0) (2.781457311e-11,0) (2.999024015e-05,0) (-6.776263578e-21,0) (1.52722285e-05,0) (1.871511688e-11,0) (0.0005040683449,0) (5.02024039e-05,0) (-1.016439537e-20,0) (1.211469523e-05,0) (6.023879719e-13,0) (0.0001599166819,0) (0.0002441829949,0) (-1.355252716e-20,0) (4.063106018e-06,0) (2.623064153e-13,0) (0.000205223284,0) (3.30332097e-05,0) (2.733646717e-08,0) (8.470329473e-22,0) (4.552654708e-15,0) (0.000111644296,0) (2.711731612e-05,0) (-6.776263578e-21,0) (1.172473665e-06,0) (1.533275629e-13,0) (1.278860789e-05,0) (9.776751272e-05,0) (2.541098842e-21,0) (1.709717327e-06,0) (1.530464362e-07,0) (1.424655546e-13,0) (0.0001104626914,0) (8.6197615e-07,0) (-2.964615315e-21,0) (6.739760524e-14,0) (2.211632354e-05,0) (7.515207224e-05,0) (4.65868121e-21,0) (6.315078598e-07,0) (3.652790367e-14,0) (1.2355385e-07,0) (8.266795114e-05,0) -(-0.12111549,-0.2097781823) (-0.0005607657229,-0.0009712747232) (-0.002000518664,-0.003464999967) (-0.0004075616168,-0.0007059174275) (-0.0002729746153,-0.0004728059028) (-1.278868443e-06,-2.21506512e-06) (-6.037625137e-06,-1.045747349e-05) (-3.526857492e-05,-6.108696368e-05) (-1.932297171e-05,-3.346836876e-05) (-7.415213061e-06,-1.284352577e-05) (-8.572210917e-06,-1.484750484e-05) (-9.354879707e-06,-1.620312695e-05) (-6.899174245e-06,-1.194972032e-05) (-8.71432143e-08,-1.509364747e-07) (-0.002819411596,-0.004883364132) (0.01502942923,0.02603173503) (0.0008700924344,0.001507044304) (0.0001228246921,0.0002127386071) (7.320806353e-10,1.268000856e-09) (0.0001192873191,0.0002066116974) (-8.929992509e-05,-0.0001546720074) (1.373510757e-11,2.378990418e-11) (0.000299626932,0.0005189690695) (-0.0001838490925,-0.0003184359691) (5.231009419e-11,9.060374093e-11) (3.300273741e-05,5.716241798e-05) (-2.446401255e-05,-4.237291269e-05) (4.222108033e-12,7.312905615e-12) (2.383089031e-07,4.12763128e-07) (-2.03263699e-07,-3.52063054e-07) (1.663957862e-14,2.882059555e-14) (1.598075748e-05,2.767948389e-05) (-1.228323086e-05,-2.127517993e-05) (1.819532649e-12,3.151522991e-12) (1.701272271e-05,2.946690011e-05) (-1.203371311e-05,-2.08430025e-05) (2.268351531e-12,3.928900099e-12) (4.63149072e-06,8.021977241e-06) (-3.344313848e-06,-5.792521501e-06) (6.401746952e-13,1.1088151e-12) (3.782440103e-06,6.551378435e-06) (-2.784982798e-06,-4.823731704e-06) (4.566111209e-13,7.908736621e-13) (3.233764025e-06,5.601043591e-06) (-1.652550646e-06,-2.862301681e-06) (8.418017035e-13,1.458043318e-12) (2.598776547e-06,4.501213017e-06) (-1.422702445e-06,-2.464192919e-06) (5.27927159e-13,9.14396661e-13) (8.817371997e-07,1.527213629e-06) (-1.45942524e-07,-2.527798665e-07) (4.485466415e-13,7.769055717e-13) (2.331034671e-18,7.806255642e-18) (8.67361738e-19,-1.734723476e-18) (0,1.301042607e-18) (-0.02060375576,-0.0356867518) (0.06045012766,0.1047026924) (-1.084202172e-19,-2.168404345e-19) (-1.084202172e-19,-4.33680869e-19) (4.33680869e-19,0) (-0.005297526462,-0.009175584986) (0.01558567133,0.02699517461) (0,0) (0,-1.694065895e-21) (0,-6.776263578e-21) (-2.702014961e-05,-4.680027195e-05) (0.0001359807469,0.0002355255625) (1.355252716e-20,6.776263578e-21) (-6.776263578e-21,0) (3.388131789e-21,-1.355252716e-20) (-0.0003173531288,-0.0005496717431) (0.0009319561715,0.001614195439) (1.32348898e-23,-2.64697796e-23) (9.926167351e-24,2.64697796e-23) (-6.6174449e-24,1.32348898e-23) (1.10762366e-08,1.918460455e-08) (-6.716194071e-07,-1.163278936e-06) (0,-1.058791184e-22) (-1.32348898e-23,-7.940933881e-23) (-1.852884572e-22,-1.058791184e-22) (-4.754822232e-07,-8.235593687e-07) (2.065183874e-06,3.577003397e-06) (0,0) (4.235164736e-22,-5.29395592e-22) (8.470329473e-22,2.541098842e-21) (-1.517604603e-05,-2.628568279e-05) (4.50724991e-05,7.806785847e-05) (-1.588186776e-21,-2.223461487e-21) (-2.117582368e-22,-1.058791184e-22) (0,4.235164736e-22) (-7.538565652e-06,-1.305717873e-05) (2.367733081e-05,4.101033996e-05) (5.95570041e-23,3.97046694e-23) (7.940933881e-23,1.058791184e-22) (0,0) (-8.103564901e-07,-1.403578613e-06) (2.67611154e-06,4.635161153e-06) (-2.64697796e-22,-3.176373552e-22) (-1.852884572e-22,-2.117582368e-22) (0,0) (-1.711417653e-06,-2.964262327e-06) (5.087485249e-06,8.811782933e-06) (-1.058791184e-22,4.235164736e-22) (-1.98523347e-23,-2.117582368e-22) (-2.117582368e-22,5.29395592e-23) (-2.996110319e-06,-5.189415297e-06) (8.841353425e-06,1.531367334e-05) (5.29395592e-23,0) (1.058791184e-22,0) (-3.176373552e-22,-4.235164736e-22) (-1.848699751e-06,-3.202041897e-06) (5.660846895e-06,9.804874436e-06) (-1.058791184e-22,0) (3.30872245e-23,-5.95570041e-23) (2.34919294e-22,-1.588186776e-22) (-1.315863121e-06,-2.279141781e-06) (3.859226647e-06,6.68437663e-06) -(-0.1083538861,-0.187674436) (0.04130000015,0.07153369861) (-0.005588563056,-0.009679675154) (0.0001512454779,0.0002619648521) (-0.0004157109044,-0.0007200324077) (0.0004987808677,0.0008639138046) (-0.0004215574793,-0.0007301589725) (0.0001921116781,0.0003327471872) (-0.000135218537,-0.0002342053762) (5.460781335e-05,9.458350721e-05) (-4.878621887e-05,-8.45002098e-05) (1.937500693e-05,3.35584964e-05) (-2.137444623e-05,-3.702162685e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.1083538861,-0.187674436) (0.04130000015,0.07153369861) (-0.005588563056,-0.009679675154) (0.0001512454779,0.0002619648521) (-0.0004157109044,-0.0007200324077) (0.0004987808677,0.0008639138046) (-0.0004215574793,-0.0007301589725) (0.0001921116781,0.0003327471872) (-0.000135218537,-0.0002342053762) (5.460781335e-05,9.458350721e-05) (-4.878621887e-05,-8.45002098e-05) (1.937500693e-05,3.35584964e-05) (-2.137444623e-05,-3.702162685e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.1395541466,0.2417148723) (-0.01357903408,0.02351957694) (0.01423099906,-0.02464881341) (0.004074510377,-0.007057258989) (-0.001425660096,0.00246931572) (1.975203663e-05,-3.4211531e-05) (-5.71653615e-06,9.901331055e-06) (-7.743450601e-05,0.0001341204987) (6.633973277e-05,-0.0001149037877) (-4.268839373e-05,7.393846683e-05) (3.706007127e-05,-6.418992637e-05) (-2.936722707e-05,5.086552936e-05) (1.515866188e-05,-2.625557255e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.05906019127,0.102295252) (0.003122660326,-0.005408606339) (0.001450134843,-0.002511707226) (-1.663179087e-05,2.88071068e-05) (-5.691193611e-05,9.85743649e-05) (4.320980191e-06,-7.484157229e-06) (-1.508217198e-05,2.612308816e-05) (-5.052939195e-06,8.751947413e-06) (-3.798238809e-06,6.578742597e-06) (-1.228729791e-05,2.128222427e-05) (-6.964894952e-06,1.206355193e-05) (-2.032950537e-06,3.521173619e-06) (-3.820457386e-06,6.6172263e-06) (0.005175592884,-0.008964389834) (5.304917151e-09,-9.188386021e-09) (-0.09224965312,0.1597810862) (-0.0001541485888,0.0002669931877) (1.707308574e-10,-2.957145206e-10) (0.01114537494,-0.01930435567) (2.347871873e-06,-4.066633374e-06) (-7.561107841e-13,1.309622251e-12) (0.000246935527,-0.000427704879) (-1.387241408e-07,2.402772602e-07) (-6.941934646e-14,1.20237835e-13) (-5.376045784e-06,9.311584441e-06) (-7.712042081e-13,1.335764869e-12) (8.292123503e-08,-1.436237921e-07) (-4.795061678e-05,8.305290452e-05) (-4.456588466e-15,7.71903793e-15) (-4.108193539e-07,7.115599937e-07) (3.307487654e-06,-5.728736662e-06) (2.981602561e-15,-5.164290423e-15) (1.947461171e-06,-3.373101694e-06) (-2.748230891e-05,4.760075535e-05) (-1.069619489e-08,1.8526353e-08) (7.219598505e-15,-1.25047114e-14) (3.005871758e-06,-5.206322606e-06) (-2.336955431e-15,4.047724815e-15) (8.74177065e-07,-1.514119091e-06) (-1.502558212e-05,2.602507165e-05) (1.117880202e-16,-1.936207203e-16) (2.783083705e-06,-4.820442378e-06) (-2.210803363e-05,3.82922375e-05) (1.37753808e-13,-2.385965945e-13) (4.150521297e-07,-7.188913765e-07) (-5.857532454e-06,1.014554382e-05) (-2.638813198e-15,4.570558867e-15) (4.927792809e-07,-8.535187514e-07) (-3.782800919e-06,6.552003387e-06) (-2.398416777e-15,4.154179493e-15) (1.233592183e-06,-2.136644337e-06) (-8.538607507e-06,1.478930203e-05) (5.421010862e-19,-4.662069342e-18) (0.0007200330219,-0.001247133777) (-0.0001878309588,0.0003253327639) (3.990106785e-09,-6.911067683e-09) (-0.03195096622,0.05534069685) (6.640738306e-19,-3.252606517e-19) (-2.330564706e-05,4.036656481e-05) (0.0007153114482,-0.001238955771) (2.662361387e-10,-4.611345192e-10) (0.003245375324,-0.005621154951) (-8.205631677e-22,-1.058791184e-22) (6.095239344e-10,-1.055726423e-09) (-3.44128403e-08,5.960478783e-08) (7.464270367e-14,-1.292849554e-13) (1.059566382e-05,-1.835222807e-05) (2.117582368e-22,-2.117582368e-21) (-1.888476037e-09,3.270936446e-09) (8.862191923e-06,-1.534976668e-05) (-1.368859681e-12,2.370934516e-12) (6.318959677e-06,-1.094475921e-05) (-6.021874859e-22,3.044024654e-22) (7.446402637e-11,-1.28975477e-10) (-1.079534492e-15,1.869808926e-15) (-7.090290898e-08,1.228074408e-07) (4.706497865e-06,-8.151893428e-06) (-1.058791184e-22,-1.164670302e-21) (1.33340407e-08,-2.309523596e-08) (-4.12556043e-14,7.145680375e-14) (6.800887061e-06,-1.177948193e-05) (-1.445470366e-05,2.503628115e-05) (6.6174449e-23,-1.488925103e-22) (1.436655647e-09,-2.488360574e-09) (2.776996631e-14,-4.80989927e-14) (3.119865907e-07,-5.403766263e-07) (-1.632104712e-06,2.826888284e-06) (-1.257314531e-22,4.367513634e-22) (-4.064786482e-09,7.040416709e-09) (2.252897883e-14,-3.90213359e-14) (-3.398791457e-07,5.886879487e-07) (1.948638818e-06,-3.375141438e-06) (3.441071348e-22,-1.111730743e-21) (2.900715708e-10,-5.024186985e-10) (-8.107032806e-16,1.404180303e-15) (1.611039988e-06,-2.790403113e-06) (-1.070561973e-05,1.854267731e-05) (3.97046694e-23,-1.32348898e-22) (6.102102725e-09,-1.056915195e-08) (1.654781322e-14,-2.866165396e-14) (4.947043268e-06,-8.568530288e-06) (-1.021949476e-05,1.770068415e-05) (2.55909002e-24,-1.80945759e-24) (4.489881054e-12,-7.776702106e-12) (-2.191745498e-09,3.79621456e-09) (-9.634049096e-17,1.668666263e-16) (-1.590204424e-08,2.754314857e-08) (-1.124965633e-22,2.316105715e-22) (3.879285887e-09,-6.719120253e-09) (-8.60107949e-15,1.489750647e-14) (1.863843086e-06,-3.228270922e-06) (-3.791159118e-06,6.566480212e-06) (9.264422861e-23,-1.191140082e-22) (8.070512659e-09,-1.397853797e-08) (-9.550114633e-15,1.654128365e-14) (1.512581421e-06,-2.619867872e-06) (-4.456953971e-06,7.719670724e-06) -(-0.1378654839,0.2387900227) (-0.0169245535,0.02931418655) (0.0167882116,-0.02907803547) (0.002856832998,-0.004948179901) (-0.001021264037,0.001768881199) (-6.261071557e-05,0.0001084449405) (-5.097302548e-05,8.828786994e-05) (5.211057454e-06,-9.025816272e-06) (-1.563957284e-05,2.708853477e-05) (1.958875962e-05,-3.392872691e-05) (-7.901662008e-06,1.368608006e-05) (1.11827671e-06,-1.936912078e-06) (-3.986478569e-06,6.904783425e-06) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (-0.0002997192672,0.0005191289988) (0.09925944203,-0.1719223967) (0.0005701036329,-0.0009874484577) (0.03744131566,-0.06485026102) (-1.08363822e-05,1.876916455e-05) (5.12637978e-06,-8.879150237e-06) (-0.0004333454456,0.000750576329) (-0.004174757703,0.007230892451) (-5.79928862e-07,1.004466254e-06) (-0.0003092991382,0.0005357218221) (-0.008557666191,0.01482231264) (-1.127253589e-06,1.952460489e-06) (0.001441927363,-0.002497491453) (0.0001026368809,-0.0001777722925) (1.949578464e-07,-3.376768953e-07) (7.957927152e-05,-0.0001378353415) (6.761905753e-05,-0.0001171196432) (1.853059582e-08,-3.209593345e-08) (0.0007081325001,-0.001226521469) (7.017291895e-05,-0.0001215430609) (9.836838076e-08,-1.703790333e-07) (-3.926527806e-05,6.800945657e-05) (-0.000555379596,0.0009619456778) (-7.501276439e-08,1.299259191e-07) (0.0001990917172,-0.0003448369695) (1.15125293e-05,-1.994028567e-05) (2.660804959e-08,-4.608649378e-08) (-1.201453687e-05,2.080978829e-05) (-0.0001308978504,0.0002267217275) (-1.801120482e-08,3.119632186e-08) (0.0001320177961,-0.0002286615304) (1.379282385e-06,-2.388987168e-06) (1.705203038e-08,-2.953498298e-08) (-1.642038463e-06,2.844094046e-06) (-6.621122398e-05,0.000114681204) (-8.667301526e-09,1.501220661e-08) (3.661879991e-05,-6.342562196e-05) (3.18796139e-08,-5.521711101e-08) (4.775645764e-09,-8.271661102e-09) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.000923337689,0.00159926779) (0.0008274199475,-0.001433133388) (-5.55619918e-06,9.623619276e-06) (-3.00319403e-06,5.201684645e-06) (3.982825217e-06,-6.898455633e-06) (1.175840002e-05,-2.036614625e-05) (-4.157662878e-06,7.201283346e-06) (-2.677457455e-06,4.637492347e-06) (2.594031055e-06,-4.492993584e-06) (1.179960774e-06,-2.043752012e-06) (-3.634784569e-07,6.295631548e-07) (1.553863596e-07,-2.691370696e-07) (5.193486208e-07,-8.995381981e-07) (0.03245066753,-0.05620620491) (1.973358379e-05,-3.417956974e-05) (0.003074044889,-0.005324401932) (-0.003612640396,0.006257276715) (-1.712840758e-06,2.966727218e-06) (0.0006726502744,-0.001165064451) (-7.897721341e-05,0.0001367925463) (-9.66799994e-09,1.67454671e-08) (-2.492556751e-05,4.317234933e-05) (2.421005667e-06,-4.19330482e-06) (3.489741388e-10,-6.044409389e-10) (-3.762967448e-07,6.517650808e-07) (-8.094592238e-08,1.402024502e-07) (3.136037117e-05,-5.431775621e-05) (2.045657133e-05,-3.54318209e-05) (6.618798767e-10,-1.146409575e-09) (-2.146830323e-05,3.718419194e-05) (8.675245077e-07,-1.502596524e-06) (-9.606141336e-11,1.663832486e-10) (1.456791745e-05,-2.523237319e-05) (-1.076291122e-05,1.864190907e-05) (1.04629614e-07,-1.812238073e-07) (-8.956602146e-10,1.551328998e-09) (2.547207111e-05,-4.411892133e-05) (-6.797765478e-11,1.177407519e-10) (6.283968979e-06,-1.088415354e-05) (5.35510915e-06,-9.275321128e-06) (-1.527935823e-11,2.646462476e-11) (1.016270017e-06,-1.760231303e-06) (2.862275528e-06,-4.95760664e-06) (-2.747461897e-10,4.758743597e-10) (7.443505779e-07,-1.28925302e-06) (4.771932706e-06,-8.265229897e-06) (-7.264500146e-11,1.258248334e-10) (1.575517403e-06,-2.728876191e-06) (4.761717681e-06,-8.247536954e-06) (-3.577407697e-11,6.196251891e-11) (1.541553266e-06,-2.67004858e-06) (3.194233381e-06,-5.532574508e-06) (0,-2.602085214e-18) (-0.002729426434,0.004727505259) (0.06324356095,-0.1095410608) (3.126494954e-05,-5.415248111e-05) (0.0002650767828,-0.0004591264557) (5.421010862e-20,1.084202172e-19) (0.0001065037686,-0.0001844699384) (-0.006663150733,0.01154091561) (-9.127041456e-07,1.580849952e-06) (0.0002416297276,-0.0004185149648) (-4.235164736e-22,8.470329473e-22) (1.483669546e-06,-2.569791035e-06) (-3.500462032e-05,6.06297809e-05) (-8.719713196e-09,1.510298628e-08) (1.471765147e-05,-2.549172011e-05) (0,1.694065895e-21) (6.08483442e-09,-1.053924237e-08) (-3.835660981e-05,6.643559699e-05) (-3.797649481e-09,6.577721851e-09) (1.178686968e-06,-2.041545716e-06) (-1.058791184e-21,4.235164736e-22) (2.4179593e-07,-4.188028358e-07) (2.191988206e-10,-3.796634942e-10) (-2.364132934e-05,4.094798358e-05) (1.230236002e-05,-2.130831261e-05) (-8.470329473e-22,-8.470329473e-22) (1.181594739e-06,-2.046582122e-06) (1.185010832e-09,-2.052498968e-09) (-4.056713351e-05,7.026433636e-05) (-2.316881374e-05,4.012956255e-05) (4.235164736e-22,-1.694065895e-21) (-2.188570265e-06,3.790714895e-06) (-5.101434888e-09,8.835944417e-09) (6.486224796e-05,-0.000112344709) (-2.66489559e-06,4.61573456e-06) (4.235164736e-22,-1.694065895e-21) (-1.304105758e-06,2.258777432e-06) (-2.554688277e-09,4.424849894e-09) (3.739300532e-05,-6.476658507e-05) (4.052238551e-06,-7.018683054e-06) (5.29395592e-23,2.117582368e-22) (-1.147182595e-08,1.986978541e-08) (-1.153315372e-11,1.997600821e-11) (4.290322277e-06,-7.431056164e-06) (1.630475981e-06,-2.824067239e-06) (-1.058791184e-22,3.176373552e-22) (-8.329871479e-08,1.442776062e-07) (-9.227744456e-11,1.598292224e-10) (3.112744687e-06,-5.391431949e-06) (4.610680091e-06,-7.985932175e-06) (1.058791184e-22,-6.352747104e-22) (-4.072151729e-12,7.053173691e-12) (-4.732118624e-07,8.196269885e-07) (-4.150544398e-10,7.188953777e-10) (1.376158085e-05,-2.383575722e-05) (3.176373552e-22,-3.176373552e-22) (-1.530521796e-07,2.650941513e-07) (-1.73488401e-10,3.004907251e-10) (5.513119534e-06,-9.54900314e-06) (4.337960104e-06,-7.513567301e-06) (-2.64697796e-22,0) (-7.700519144e-08,1.33376904e-07) (-8.508942103e-11,1.473792004e-10) (6.216831785e-07,-1.076786851e-06) (6.222146986e-06,-1.077707471e-05) -(0.05157424969,-0.08932922082) (0.07911949656,-0.1370389879) (0.005517042647,-0.009555798172) (-0.009454263379,0.01637526452) (-0.002817873889,0.004880700745) (0.001260905509,-0.002183952404) (0.0005417059474,-0.0009382622237) (-8.342600894e-05,0.0001444980862) (-0.0001916579055,0.0003319612299) (2.369564209e-05,-4.104205603e-05) (2.020298538e-05,-3.499259714e-05) (6.741548682e-06,-1.167670484e-05) (-1.149346843e-05,1.990727127e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0.0003039026374,-0.0005263748085) (0.04090131005,-0.07084314711) (-0.00883687416,0.01530591502) (0.01252654015,-0.02169660398) (-0.000346879798,0.0006008134342) (-5.135379222e-06,8.894737729e-06) (0.001183168129,-0.002049307314) (-0.00268255013,0.004646313118) (5.808926845e-07,-1.006135643e-06) (0.001574284488,-0.002726740719) (-0.004459427703,0.007723955355) (1.129113895e-06,-1.955682633e-06) (0.0001341706355,-0.0002323903576) (0.0003683995724,-0.0006380867769) (-1.952858243e-07,3.382449696e-07) (-4.227609596e-05,7.322434614e-05) (9.017141291e-05,-0.0001561814685) (-1.85615821e-08,3.214960327e-08) (3.392569073e-05,-5.876102003e-05) (0.0002193194444,-0.0003798724208) (-9.853361838e-08,1.706652333e-07) (0.0001346486464,-0.0002332182967) (-0.0003281340941,0.0005683449226) (7.513718213e-08,-1.30141417e-07) (2.344440262e-05,-4.060689649e-05) (4.508202613e-05,-7.808435976e-05) (-2.665283983e-08,4.616407275e-08) (3.529806653e-05,-6.113804464e-05) (-8.179885248e-05,0.0001416797685) (1.80411161e-08,-3.12481297e-08) (3.253944728e-05,-5.635997594e-05) (1.08655697e-05,-1.881971877e-05) (-1.708094113e-08,2.958505788e-08) (1.043761257e-05,-1.807847528e-05) (-3.251583845e-05,5.631908425e-05) (8.68155776e-09,-1.503689913e-08) (1.137503137e-05,-1.970213227e-05) (5.505628404e-07,-9.536028123e-07) (-4.783889003e-09,8.285938811e-09) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.02101305131,-0.03639567249) (-0.01883018317,0.03261483397) (0.0001264463693,-0.0002190115361) (6.834581865e-05,-0.0001183784304) (-9.063998106e-05,0.0001569930524) (-0.0002675942571,0.0004634868491) (9.461888584e-05,-0.0001638847176) (6.093280015e-05,-0.0001055387057) (-5.903420635e-05,0.0001022502448) (-2.685320506e-05,4.65111155e-05) (8.271937295e-06,-1.432741567e-05) (-3.536237701e-06,6.124943366e-06) (-1.181918528e-05,2.04714294e-05) (0.01305259065,-0.02260775017) (-1.972421406e-05,3.41633409e-05) (-3.139793852e-05,5.438282477e-05) (-0.001208003877,0.002092324091) (1.712798772e-06,-2.966654497e-06) (-0.01682721675,0.02914559437) (-2.585942318e-05,4.47898348e-05) (9.67925942e-09,-1.67649691e-08) (0.0005877851435,-0.001018073733) (1.150133528e-06,-1.992089707e-06) (-3.493905947e-10,6.051622618e-10) (6.952941289e-06,-1.204284757e-05) (8.190971413e-08,-1.418717865e-07) (1.32217184e-05,-2.290068804e-05) (-0.0004639768554,0.0008036314871) (-6.629958665e-10,1.148342526e-09) (1.637002792e-05,-2.835372008e-05) (-0.0002004334016,0.0003471608352) (9.621648201e-11,-1.666518354e-10) (-1.475131992e-05,2.555003558e-05) (0.0002859360877,-0.0004952558317) (1.363844101e-07,-2.362247277e-07) (8.972964103e-10,-1.554162972e-09) (-1.642133626e-05,2.844258873e-05) (6.808895039e-11,-1.179335215e-10) (8.86002333e-06,-1.534601056e-05) (-0.0001070329349,0.0001853864814) (1.530817236e-11,-2.651453229e-11) (1.09037461e-06,-1.888584223e-06) (-4.296340024e-06,7.441479207e-06) (2.752512015e-10,-4.767490659e-10) (-7.394344286e-07,1.280737999e-06) (1.652763697e-05,-2.862670696e-05) (7.276235857e-11,-1.260281019e-10) (3.451371935e-06,-5.977951547e-06) (-1.976500436e-05,3.423399176e-05) (3.583427253e-11,-6.206678068e-11) (3.65150322e-06,-6.3245891e-06) (-1.973991048e-05,3.419052789e-05) (0,0) (-0.0008395542634,0.00145415064) (0.02522679048,-0.04369408282) (-3.126224837e-05,5.414780254e-05) (-0.01100183246,0.01905573281) (-1.084202172e-19,5.421010862e-20) (6.005470316e-05,-0.0001040177971) (-0.003199103504,0.005541009808) (9.138118664e-07,-1.582768581e-06) (-0.002344817337,0.004061342763) (2.710505431e-20,-5.675120747e-20) (5.727926757e-07,-9.921060165e-07) (-1.287812239e-05,2.230556228e-05) (8.725406379e-09,-1.511284716e-08) (-0.000335289152,0.0005807378464) (-2.117582368e-22,4.235164736e-22) (1.81243952e-09,-3.139237334e-09) (-1.242058352e-05,2.151308171e-05) (3.802120767e-09,-6.585466345e-09) (2.538152278e-06,-4.396208702e-06) (1.905824131e-20,-3.811648263e-20) (9.202421743e-08,-1.593906201e-07) (-2.195446888e-10,3.802625555e-10) (-5.129786172e-06,8.885050281e-06) (-0.0002810210377,0.0004867427153) (0,-4.235164736e-22) (3.473961335e-07,-6.017077536e-07) (-1.186831509e-09,2.055652473e-09) (-7.965351864e-05,0.0001379639413) (0.0001256283905,-0.0002175947552) (-3.599890026e-21,2.541098842e-21) (-9.779151322e-07,1.693798695e-06) (5.110513569e-09,-8.851669155e-09) (3.289864391e-06,-5.698212276e-06) (0.0001171394555,-0.0002028914885) (6.564505341e-21,-8.046812999e-21) (-3.844266251e-07,6.658464465e-07) (2.55914016e-09,-4.432560781e-09) (2.632175311e-05,-4.559061372e-05) (-6.372623528e-05,0.0001103770773) (0,2.117582368e-22) (-3.632365662e-09,6.291441879e-09) (1.155167341e-11,-2.000808525e-11) (6.979756536e-06,-1.208929295e-05) (-3.434954941e-05,5.94951648e-05) (5.823351512e-22,-8.470329473e-22) (-4.430089943e-08,7.673140864e-08) (9.242620673e-11,-1.60086886e-10) (-7.708935966e-06,1.335226877e-05) (2.033211796e-05,-3.521626133e-05) (0,1.058791184e-22) (2.732028175e-11,-4.732011607e-11) (-2.030819374e-07,3.517482337e-07) (4.158427398e-10,-7.202607533e-10) (5.390575629e-06,-9.336750872e-06) (-2.117582368e-22,1.694065895e-21) (-3.944424504e-08,6.831943648e-08) (1.737627841e-10,-3.009659705e-10) (1.261265833e-05,-2.184576504e-05) (-1.944658249e-05,3.36824689e-05) (2.911675756e-22,-1.032321404e-21) (-1.766566272e-08,3.059782538e-08) (8.522954168e-11,-1.476218965e-10) (2.700280003e-06,-4.67702216e-06) (-4.74143023e-06,8.212398059e-06) -(0.01677258801,-0.02905097462) (0.02573064519,-0.04456678478) (0.001794210947,-0.00310766452) (-0.003074644141,0.005325439867) (-0.0009164076666,0.001587264639) (0.0004100621676,-0.0007102485086) (0.0001761695175,-0.000305134555) (-2.713117662e-05,4.699257638e-05) (-6.232953669e-05,0.0001079579244) (7.706117781e-06,-1.334738753e-05) (6.57026234e-06,-1.138002819e-05) (2.192435553e-06,-3.797409769e-06) (-3.737819008e-06,6.474092431e-06) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (-0.0004028470466,0.0006977515524) (-0.04299386424,0.07446755728) (-0.007090582965,0.01228124995) (-0.01874283661,0.03246354529) (-0.0002534798879,0.0004390400445) (6.808460863e-06,-1.179260014e-05) (0.001218491756,-0.00211048963) (0.001120069607,-0.001940017466) (-7.702992143e-07,1.334197376e-06) (0.001420036301,-0.002459575022) (0.003079871323,-0.005334493612) (-1.497289225e-06,2.593381012e-06) (-0.0009844018759,0.001705034064) (0.0002005515599,-0.0003473654913) (2.589526051e-07,-4.485190688e-07) (-9.179394658e-05,0.0001589917793) (1.709241288e-05,-2.960492753e-05) (2.461341544e-08,-4.263168609e-08) (-0.0005075475471,0.0008790981388) (0.0001125653912,-0.0001949689767) (1.306577615e-07,-2.263058812e-07) (0.0001311012957,-0.0002270741051) (0.0001706747231,-0.0002956172919) (-9.963682546e-08,1.72576044e-07) (-0.0001322101708,0.0002289947331) (2.533065632e-05,-4.387398374e-05) (3.534207956e-08,-6.121427745e-08) (3.566399888e-05,-6.177185807e-05) (3.686250359e-05,-6.384772911e-05) (-2.392364366e-08,4.143696631e-08) (-7.485395282e-05,0.0001296508494) (7.155927413e-06,-1.239442985e-05) (2.264899878e-08,-3.922921662e-08) (9.107253788e-06,-1.577422628e-05) (2.532776104e-05,-4.386896896e-05) (-1.151244726e-08,1.994014357e-08) (-1.899134758e-05,3.289397892e-05) (3.912341003e-07,-6.776373393e-07) (6.342969012e-09,-1.09863446e-08) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.01653457404,-0.02863872232) (-0.01481693702,0.02566368773) (9.949706138e-05,-0.0001723339655) (5.377938606e-05,-9.314862906e-05) (-7.132203009e-05,0.0001235333798) (-0.0002105623306,0.0003647046547) (7.44529174e-05,-0.0001289562357) (4.794629208e-05,-8.304541391e-05) (-4.645234247e-05,8.045781728e-05) (-2.113002537e-05,3.65982775e-05) (6.508952823e-06,-1.127383699e-05) (-2.782565142e-06,4.819544201e-06) (-9.300181641e-06,1.610838712e-05) (-0.01463285707,0.0253448519) (2.616874833e-05,-4.532560167e-05) (-0.002336540875,0.00404700751) (0.001812179585,-0.003138787114) (-2.272899548e-06,3.936777498e-06) (-0.01319038986,0.02284642541) (3.996000794e-05,-6.921276402e-05) (-1.284453257e-08,2.224738301e-08) (0.0004618297644,-0.0007999126164) (-9.553607913e-07,1.65473343e-06) (4.636983056e-10,-8.031490246e-10) (5.524098285e-06,-9.568018896e-06) (-1.086310209e-07,1.881544475e-07) (-1.339854236e-05,2.320695611e-05) (-0.000365141319,0.0006324433165) (8.800808196e-10,-1.524344694e-09) (2.84893946e-05,-4.934507893e-05) (-0.0001517399338,0.0002628212748) (-1.277053227e-10,2.211921074e-10) (-2.208009141e-05,3.824384015e-05) (0.0002236392519,-0.0003873545469) (2.407892199e-08,-4.170591628e-08) (-1.190479427e-09,2.061970853e-09) (-3.154137007e-05,5.46312555e-05) (-9.036164811e-11,1.565109656e-10) (1.950696771e-06,-3.378705918e-06) (-8.471154588e-05,0.0001467247015) (-2.03076594e-11,3.517389786e-11) (5.730243228e-08,-9.925072411e-08) (-5.392190249e-06,9.339547476e-06) (-3.658433149e-10,6.336592089e-10) (-1.116528349e-06,1.933883829e-06) (8.868127353e-06,-1.536004714e-05) (-9.65577339e-11,1.67242901e-10) (1.416117621e-06,-2.452787669e-06) (-1.848146722e-05,3.201084023e-05) (-4.754985347e-11,8.235876209e-11) (1.592600314e-06,-2.75846466e-06) (-1.728333755e-05,2.993561877e-05) (1.734723476e-18,-8.67361738e-19) (0.001421288335,-0.002461743608) (-0.02866009467,0.04964074012) (4.147852654e-05,-7.184291538e-05) (-0.008490374326,0.01470575971) (-8.131516294e-20,-2.710505431e-20) (-3.488083878e-05,6.041538497e-05) (0.002604149643,-0.004510519493) (-1.212696121e-06,2.100451296e-06) (-0.001949014841,0.003375792729) (6.776263578e-21,-1.43995601e-20) (-6.84819863e-07,1.186142797e-06) (1.665488592e-05,-2.88471086e-05) (-1.158052873e-08,2.005806414e-08) (-0.0002638178336,0.0004569458917) (-3.176373552e-22,0) (-3.213881516e-09,5.566606076e-09) (1.951032757e-05,-3.379287863e-05) (-5.044923245e-09,8.738063381e-09) (1.02387175e-06,-1.773397892e-06) (4.235164736e-21,2.541098842e-21) (-1.126062466e-07,1.950397403e-07) (2.913830078e-10,-5.046901739e-10) (1.392033993e-05,-2.411073601e-05) (-0.0002210927651,0.0003829439024) (-4.023406499e-21,3.388131789e-21) (-6.274119749e-07,1.086709418e-06) (1.575244907e-09,-2.728404213e-09) (-2.951896633e-05,5.112834946e-05) (0.0001121274987,-0.0001942105247) (-2.117582368e-22,5.082197684e-21) (9.099122566e-07,-1.576014259e-06) (-6.783673963e-09,1.174966797e-08) (-4.63062193e-05,8.020472453e-05) (9.03034606e-05,-0.0001564101819) (1.058791184e-22,-1.694065895e-21) (6.916940092e-07,-1.198049167e-06) (-3.396487491e-09,5.882888901e-09) (-8.287775515e-06,1.435484827e-05) (-5.108477623e-05,8.848142792e-05) (-8.999725065e-22,3.176373552e-21) (5.895674323e-09,-1.021160747e-08) (-1.532991602e-11,2.655219342e-11) (2.033345566e-06,-3.521857829e-06) (-2.71197858e-05,4.697284689e-05) (2.911675756e-22,-3.176373552e-22) (2.929347052e-08,-5.073777927e-08) (-1.226739939e-10,2.124775902e-10) (-8.152622709e-06,1.412075675e-05) (1.185719849e-05,-2.053727021e-05) (-1.058791184e-22,0) (2.366362762e-11,-4.098660533e-11) (2.030510961e-07,-3.51694815e-07) (-5.516550356e-10,9.554945499e-10) (-6.289741996e-06,1.08941527e-05) (1.058791184e-22,1.164670302e-21) (8.545604851e-08,-1.480142178e-07) (-2.306127229e-10,3.994329529e-10) (5.359197563e-06,-9.282402468e-06) (-1.792223291e-05,3.104221799e-05) (1.058791184e-22,-4.235164736e-22) (4.463913472e-08,-7.731724935e-08) (-1.130973968e-10,1.958904374e-10) (1.567605963e-06,-2.715173175e-06) (-8.255361831e-06,1.429870613e-05) -(-0.02616144742,0.04531295613) (-0.04013399248,0.06951411408) (-0.002798563663,0.004847254452) (0.004795750123,-0.008306482873) (0.001429388891,-0.002475774183) (-0.0006396043251,0.001107827188) (-0.0002747846405,0.0004759409585) (4.231850505e-05,-7.329780085e-05) (9.721999344e-05,-0.0001683899681) (-1.201980249e-05,2.08189086e-05) (-1.024812465e-05,1.775027258e-05) (-3.419704066e-06,5.923101189e-06) (5.830153065e-06,-1.009812133e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.12111549,0.2097781823) (-0.0005607657229,0.0009712747232) (-0.002000518664,0.003464999967) (-0.0004075616168,0.0007059174275) (-0.0002729746153,0.0004728059028) (-1.278868443e-06,2.21506512e-06) (-6.037625137e-06,1.045747349e-05) (-3.526857492e-05,6.108696368e-05) (-1.932297171e-05,3.346836876e-05) (-7.415213061e-06,1.284352577e-05) (-8.572210917e-06,1.484750484e-05) (-9.354879707e-06,1.620312695e-05) (-6.899174245e-06,1.194972032e-05) (-8.71432143e-08,1.509364747e-07) (-0.002819411596,0.004883364132) (0.01502942923,-0.02603173503) (0.0008700924344,-0.001507044304) (0.0001228246921,-0.0002127386071) (7.320806353e-10,-1.268000856e-09) (0.0001192873191,-0.0002066116974) (-8.929992509e-05,0.0001546720074) (1.373510757e-11,-2.378990418e-11) (0.000299626932,-0.0005189690695) (-0.0001838490925,0.0003184359691) (5.231009419e-11,-9.060374093e-11) (3.300273741e-05,-5.716241798e-05) (-2.446401255e-05,4.237291269e-05) (4.222108033e-12,-7.312905615e-12) (2.383089031e-07,-4.12763128e-07) (-2.03263699e-07,3.52063054e-07) (1.663957862e-14,-2.882059555e-14) (1.598075748e-05,-2.767948389e-05) (-1.228323086e-05,2.127517993e-05) (1.819532649e-12,-3.151522991e-12) (1.701272271e-05,-2.946690011e-05) (-1.203371311e-05,2.08430025e-05) (2.268351531e-12,-3.928900099e-12) (4.63149072e-06,-8.021977241e-06) (-3.344313848e-06,5.792521501e-06) (6.401746952e-13,-1.1088151e-12) (3.782440103e-06,-6.551378435e-06) (-2.784982798e-06,4.823731704e-06) (4.566111209e-13,-7.908736621e-13) (3.233764025e-06,-5.601043591e-06) (-1.652550646e-06,2.862301681e-06) (8.418017035e-13,-1.458043318e-12) (2.598776547e-06,-4.501213017e-06) (-1.422702445e-06,2.464192919e-06) (5.27927159e-13,-9.14396661e-13) (8.817371997e-07,-1.527213629e-06) (-1.45942524e-07,2.527798665e-07) (4.485466415e-13,-7.769055717e-13) (1.843143693e-18,-6.396792818e-18) (8.67361738e-19,3.469446952e-18) (0,-1.301042607e-18) (-0.02060375576,0.0356867518) (0.06045012766,-0.1047026924) (0,2.168404345e-19) (1.084202172e-19,2.168404345e-19) (4.33680869e-19,0) (-0.005297526462,0.009175584986) (0.01558567133,-0.02699517461) (0,0) (-1.694065895e-21,-3.811648263e-21) (1.694065895e-21,-1.694065895e-21) (-2.702014961e-05,4.680027195e-05) (0.0001359807469,-0.0002355255625) (2.371692252e-20,3.388131789e-20) (6.776263578e-21,1.355252716e-20) (6.776263578e-21,1.355252716e-20) (-0.0003173531288,0.0005496717431) (0.0009319561715,-0.001614195439) (-2.64697796e-23,0) (2.316105715e-23,-8.602678371e-23) (-1.32348898e-23,0) (1.10762366e-08,-1.918460455e-08) (-6.716194071e-07,1.163278936e-06) (0,0) (0,5.29395592e-23) (-7.940933881e-23,1.389663429e-22) (-4.754822232e-07,8.235593687e-07) (2.065183874e-06,-3.577003397e-06) (8.470329473e-22,0) (-1.058791184e-22,6.352747104e-22) (0,-1.905824131e-21) (-1.517604603e-05,2.628568279e-05) (4.50724991e-05,-7.806785847e-05) (-1.482307658e-21,2.329340605e-21) (0,-2.117582368e-22) (0,-4.235164736e-22) (-7.538565652e-06,1.305717873e-05) (2.367733081e-05,-4.101033996e-05) (4.63221143e-23,1.32348898e-23) (5.29395592e-23,-3.97046694e-23) (-2.64697796e-23,-5.29395592e-23) (-8.103564901e-07,1.403578613e-06) (2.67611154e-06,-4.635161153e-06) (-2.117582368e-22,4.235164736e-22) (-1.588186776e-22,0) (0,0) (-1.711417653e-06,2.964262327e-06) (5.087485249e-06,-8.811782933e-06) (-1.058791184e-22,-4.235164736e-22) (-4.63221143e-23,6.6174449e-23) (5.29395592e-23,4.235164736e-22) (-2.996110319e-06,5.189415297e-06) (8.841353425e-06,-1.531367334e-05) (5.29395592e-23,-2.117582368e-22) (1.058791184e-22,2.117582368e-22) (-2.382280164e-22,2.64697796e-22) (-1.848699751e-06,3.202041897e-06) (5.660846895e-06,-9.804874436e-06) (0,0) (2.316105715e-23,3.30872245e-23) (2.382280164e-22,1.058791184e-22) (-1.315863121e-06,2.279141781e-06) (3.859226647e-06,-6.68437663e-06) -(-0.1083538861,0.187674436) (0.04130000015,-0.07153369861) (-0.005588563056,0.009679675154) (0.0001512454779,-0.0002619648521) (-0.0004157109044,0.0007200324077) (0.0004987808677,-0.0008639138046) (-0.0004215574793,0.0007301589725) (0.0001921116781,-0.0003327471872) (-0.000135218537,0.0002342053762) (5.460781335e-05,-9.458350721e-05) (-4.878621887e-05,8.45002098e-05) (1.937500693e-05,-3.35584964e-05) (-2.137444623e-05,3.702162685e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(-0.1083538861,0.187674436) (0.04130000015,-0.07153369861) (-0.005588563056,0.009679675154) (0.0001512454779,-0.0002619648521) (-0.0004157109044,0.0007200324077) (0.0004987808677,-0.0008639138046) (-0.0004215574793,0.0007301589725) (0.0001921116781,-0.0003327471872) (-0.000135218537,0.0002342053762) (5.460781335e-05,-9.458350721e-05) (-4.878621887e-05,8.45002098e-05) (1.937500693e-05,-3.35584964e-05) (-2.137444623e-05,3.702162685e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) -(0.2475006931,0) (0.001885655396,0) (0.003936900835,0) (0.0009741204454,0) (0.0005004075617,0) (8.132634863e-07,0) (1.510083094e-05,0) (7.282759888e-05,0) (3.408159058e-05,0) (1.381866281e-05,0) (1.778426622e-05,0) (1.795710592e-05,0) (1.276438578e-05,0) (7.833976983e-06,0) (0.3041454174,0) (0.002926686712,0) (0.02849839687,0) (2.755679327e-06,0) (1.477200313e-09,0) (5.595452752e-05,0) (0.000471312833,0) (2.30767043e-11,0) (0.0001328145617,0) (0.002968612862,0) (1.385122765e-10,0) (0.0001424591791,0) (8.663764015e-06,0) (6.653302287e-12,0) (1.353880343e-06,0) (1.063332768e-06,0) (1.058585676e-13,0) (0.0001028139335,0) (8.885062031e-06,0) (4.930568137e-12,0) (9.226573536e-06,0) (0.0001114531879,0) (5.306720436e-12,0) (2.485545863e-05,0) (1.209685944e-06,0) (1.149711836e-12,0) (2.362894913e-06,0) (2.235255113e-05,0) (1.084804457e-12,0) (4.060026829e-05,0) (2.884757044e-07,0) (1.846273793e-12,0) (8.663751496e-07,0) (2.708317392e-05,0) (1.260179665e-12,0) (1.705402686e-05,0) (4.258384822e-09,0) (8.003161713e-13,0) (1.561251128e-17,0) (6.938893904e-18,0) (8.67361738e-19,0) (0.04483170943,0) (0.1133052738,0) (8.67361738e-19,0) (-1.734723476e-18,0) (4.33680869e-19,0) (0.009624007898,0) (0.03498925778,0) (0,0) (5.421010862e-20,0) (6.776263578e-21,0) (1.920663012e-05,0) (0.0007802029551,0) (2.439454888e-19,0) (0,0) (2.710505431e-20,0) (0.0006986693326,0) (0.001726467409,0) (0,0) (-3.176373552e-22,0) (-4.235164736e-22,0) (1.653240914e-09,0) (1.835110102e-05,0) (0,0) (0,0) (0,0) (2.342751068e-06,0) (1.709453932e-06,0) (0,0) (1.016439537e-20,0) (1.101142831e-20,0) (2.57422105e-05,0) (0.0001083718738,0) (1.270549421e-21,0) (0,0) (-4.235164736e-22,0) (2.225083718e-05,0) (3.271647394e-05,0) (0,0) (2.911675756e-22,0) (0,0) (2.685905316e-06,0) (3.292917407e-06,0) (2.117582368e-22,0) (2.117582368e-22,0) (0,0) (2.887868495e-06,0) (1.229628472e-05,0) (2.117582368e-22,0) (0,0) (-4.235164736e-22,0) (6.902245323e-06,0) (1.565229019e-05,0) (-6.352747104e-22,0) (2.117582368e-22,0) (-4.235164736e-22,0) (5.060621495e-06,0) (8.434035548e-06,0) (-1.058791184e-22,0) (-8.470329473e-22,0) (-3.176373552e-22,0) (2.848171096e-06,0) (7.27171318e-06,0) -(0.09496554104,0) (0.02219350733,0) (0.0009466734748,0) (2.321681126e-06,0) (4.129794632e-05,0) (0.0001989658342,0) (0.0002383724452,0) (0.0001692599573,0) (0.0001085254047,0) (7.176902103e-05,0) (5.852636604e-05,0) (5.506831979e-05,0) (4.747128362e-05,0) (0.08203099855,0) (8.306610194e-08,0) (0.1359609918,0) (0.009081386798,0) (5.657391905e-09,0) (0.01196712578,0) (5.443671855e-05,0) (2.267692166e-12,0) (6.454709571e-05,0) (4.074384328e-08,0) (2.322477598e-15,0) (4.516263572e-08,0) (1.806939314e-09,0) (9.637884248e-05,0) (0.0001200645114,0) (3.505088404e-13,0) (0.0001259530711,0) (0.0003880768169,0) (2.442169459e-14,0) (0.0001806923474,0) (0.0003300259584,0) (4.99498452e-09,0) (5.220474457e-13,0) (0.0003140465704,0) (2.043749217e-14,0) (6.916995033e-05,0) (0.0001161425193,0) (3.068536094e-15,0) (6.841874488e-06,0) (0.0001365406311,0) (3.090610873e-13,0) (1.118320353e-06,0) (0.0001219538312,0) (2.402304362e-14,0) (6.135362753e-06,0) (0.0001061573737,0) (1.022792114e-14,0) (9.682037194e-06,0) (9.16160885e-05,0) (0,0) (0.008475895408,0) (0.1732522102,0) (1.124213962e-07,0) (0.02297182624,0) (1.084202172e-19,0) (0.0009869192534,0) (0.006480627332,0) (3.316210435e-10,0) (0.000596346401,0) (1.694065895e-21,0) (6.030566529e-06,0) (7.772448169e-05,0) (1.304810639e-11,0) (1.025243196e-05,0) (0,0) (6.172455307e-07,0) (3.424236285e-06,0) (8.91940129e-14,0) (8.102047562e-08,0) (0,0) (1.7510264e-07,0) (5.995060337e-14,0) (0.0002921369044,0) (3.675876272e-05,0) (2.032879073e-20,0) (1.275281687e-06,0) (4.637667068e-13,0) (0.0003051743252,0) (0.0002630933887,0) (6.776263578e-21,0) (3.588497215e-06,0) (5.404957306e-12,0) (0.0003430215163,0) (6.96043537e-05,0) (5.082197684e-21,0) (2.144710129e-06,0) (2.269021793e-12,0) (0.0002012220718,0) (3.895281572e-05,0) (1.694065895e-21,0) (3.844113255e-09,0) (1.769838074e-15,0) (0.0001178597097,0) (2.092539475e-05,0) (-8.470329473e-22,0) (6.145570316e-08,0) (3.010474357e-14,0) (2.166322872e-05,0) (9.000390998e-05,0) (0,0) (1.298476433e-12,0) (5.281220211e-07,0) (2.249656277e-13,0) (0.0001117973318,0) (2.541098842e-21,0) (1.467994913e-07,0) (7.105028024e-14,0) (4.480358687e-05,0) (5.317998557e-05,0) (0,0) (6.039698986e-08,0) (2.87767903e-14,0) (3.246588878e-06,0) (8.011602699e-05,0) -(0.4945189387,0) (0.307421443,0) (0.1319654046,0) (0.03941143222,0) (0.01673841645,0) (0.005001509027,0) (0.002982067969,0) (0.0008721944031,0) (0.0006739086684,0) (0.0001662005827,0) (0.000162668234,0) (2.726728507e-05,0) (3.849627959e-05,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) diff --git a/tests/09_DeePKS/100_NO_KP_deepks_UT/vdrpre_ref.dat b/tests/09_DeePKS/100_NO_KP_deepks_UT/vdrpre_ref.dat deleted file mode 100644 index 2e89a5c17d..0000000000 --- a/tests/09_DeePKS/100_NO_KP_deepks_UT/vdrpre_ref.dat +++ /dev/null @@ -1,108 +0,0 @@ -0.3147524089 0.3911428714 0.2057672699 0.06817076837 0.01624681051 0.001918900616 8.656155591e-06 0.0003293313421 0.0005165205109 0.0005274892321 0.000308913253 0.0001921098042 7.200817462e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.1469209212 0.001757452279 0.008885391297 0.0004765796032 0.0003137171467 3.753583099e-07 3.817084e-06 6.033841652e-07 5.317323845e-07 8.414643968e-06 3.31541252e-06 3.002007615e-07 1.229871495e-06 0.001306177527 1.355168736e-09 0.2503658847 1.046614926e-05 2.060951688e-11 0.04152020624 4.050576507e-07 1.008432388e-12 0.003778769832 1.889305054e-06 8.299835696e-12 0.002559803502 1.316603047e-15 2.853709815e-10 7.660087477e-05 2.266554054e-16 5.359854749e-09 1.127557649e-07 1.45607619e-15 8.395718063e-08 9.154156321e-06 9.161877051e-08 3.993706237e-16 1.150818494e-07 1.068890628e-15 4.419176462e-08 7.775554357e-06 1.628861158e-17 4.528323296e-06 1.43185262e-05 2.4559691e-13 6.161678805e-07 1.125366415e-06 1.159443188e-15 1.58315933e-07 5.391837529e-07 2.249684773e-15 6.286898691e-07 3.183188427e-06 4.448028559e-19 0.0002446691601 8.145458932e-07 5.664740953e-10 0.177759353 -6.349579338e-19 2.201408811e-06 0.0003158153936 8.549720583e-10 0.0706465972 1.479912098e-22 2.464242292e-13 6.094571757e-11 1.707997834e-15 4.38015457e-05 8.269300325e-20 2.311133295e-11 9.174418953e-05 8.403150674e-11 0.001971316564 -2.007326991e-23 1.266660794e-13 7.775697971e-17 6.88337889e-11 2.410431746e-06 -6.86036081e-23 5.576701781e-10 1.468000917e-14 6.062379565e-07 3.176643229e-06 -4.986134895e-24 2.300661614e-12 5.707138737e-16 1.135038219e-09 1.530804122e-07 -5.980944546e-24 3.081533289e-11 8.947554131e-16 2.296325301e-09 3.899274721e-07 6.919820755e-22 8.755362874e-11 1.48542278e-15 8.808607626e-08 2.190836451e-05 7.33336844e-23 2.423577032e-09 3.638364692e-14 4.518853107e-06 4.641490491e-06 1.992518989e-27 6.210057073e-11 3.638362452e-11 1.650294839e-19 9.04762241e-12 3.587164823e-23 4.100520746e-10 4.164857323e-15 3.101457978e-07 1.081074942e-06 -3.80276458e-23 4.313670249e-09 1.267753544e-14 2.818838655e-06 9.917835142e-07 -0.1537404548 0.003727007567 0.00854296775 0.0008283378013 0.000249242271 3.135135163e-06 3.485164461e-06 1.245370055e-07 1.451806454e-06 9.235094054e-06 1.535303137e-06 1.834495508e-07 1.651277635e-06 2.815830942e-10 0.01983051592 0.2311916741 1.480857164e-06 5.065308511e-11 0.05191474862 1.74172454e-07 5.928974891e-13 0.002321923377 5.781125973e-06 1.396714216e-11 0.002995923626 1.300580172e-15 2.083846774e-09 2.160554926e-05 8.895745648e-08 1.874301971e-14 4.549221948e-07 3.00999963e-15 6.499753675e-08 5.596904508e-06 8.516512065e-16 5.426835441e-08 1.474190623e-07 1.228211982e-15 1.807091778e-07 1.378205676e-05 2.933157802e-14 5.773281799e-06 8.30249756e-06 1.793970786e-07 1.575249981e-14 1.14196802e-07 1.547102566e-15 2.937426657e-07 8.906479179e-07 3.127361326e-15 1.516806236e-06 2.811236419e-06 2.811943765e-19 1.511060808e-05 5.607603491e-10 0.1487858497 0.02038732434 1.050266011e-18 9.734329974e-09 0.0004046016186 8.829540298e-10 0.0787413867 1.540137289e-21 1.175486027e-09 3.16393186e-09 1.81849237e-13 0.0005493161406 6.283105506e-21 1.11287863e-09 2.242153709e-05 5.137087989e-11 0.001903470945 1.173677349e-22 1.177409821e-09 2.273659858e-09 4.248626625e-15 2.121979301e-05 -1.62663242e-23 1.746371504e-10 3.101321218e-15 2.618867638e-10 3.3303246e-06 -9.241192164e-25 4.476698989e-11 7.989091629e-15 1.282889475e-07 2.814187778e-07 2.49305795e-25 2.426502395e-12 1.278136369e-16 7.949778252e-10 1.110717381e-07 2.436173229e-11 1.214922802e-22 3.526017041e-16 7.3810059e-07 2.697616726e-05 5.123629247e-23 1.877165974e-10 1.913490852e-14 2.115184742e-06 1.181201865e-06 -1.081200185e-24 6.907330169e-11 1.047719175e-07 7.59681015e-15 7.557011361e-09 1.895051636e-10 2.706506283e-23 6.491569807e-15 1.28432286e-06 1.324891707e-06 -2.095882442e-23 9.739590345e-10 2.829120282e-14 3.141117806e-06 2.187995244e-07 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.002296938444 0.0004656769935 -3.404442288e-05 8.60557369e-05 -2.195463111e-05 1.021437952e-06 1.052245556e-06 3.19721922e-07 -3.631499723e-07 -8.080661741e-07 1.730221396e-07 -2.294551817e-08 -1.671873287e-07 0.008189657419 5.041046806e-06 -0.008342968697 0.0002452856292 -2.067629571e-07 0.002505844645 -1.362524288e-05 1.28943057e-08 -0.0003814274264 -3.297204231e-05 -4.172364306e-08 0.0001791736462 1.381913284e-10 1.079257912e-07 -3.267927222e-05 -3.366221799e-11 2.800914463e-07 2.957483131e-08 -4.691192177e-11 6.280388515e-07 3.585047097e-06 -8.962099782e-07 -4.954574338e-11 9.752156065e-07 3.109204061e-11 3.176698282e-07 -2.771203269e-06 -2.22648192e-12 1.653561186e-06 -1.853786177e-06 -4.89836296e-10 1.10502967e-06 -9.167977887e-07 3.191879817e-11 5.061688212e-07 -6.78714229e-07 3.355563738e-11 7.856396421e-07 -1.190808539e-06 6.043190332e-19 -0.0009274664534 -0.0002742614059 4.438674186e-06 -0.001474755946 -7.468940745e-19 -1.006015126e-05 -0.002941831249 -2.930994065e-06 0.005259890253 1.166565424e-21 5.998322676e-10 6.199376993e-08 -1.995271809e-10 6.084148142e-05 4.776679407e-20 -7.44667295e-11 -0.0003970796515 2.33129964e-07 0.0003677132413 -3.68699226e-23 4.113038732e-10 -1.578850801e-11 2.295141761e-08 6.300650718e-06 -2.94232626e-22 4.941788939e-08 -4.216631935e-10 -3.616195343e-06 5.091702812e-06 -4.798836428e-24 -3.504778343e-09 -1.048420309e-10 2.359753035e-07 2.499492298e-07 -8.405546557e-23 9.88648561e-09 -1.014613753e-10 -2.52638343e-07 8.108630087e-07 2.684442651e-23 -3.46259369e-09 2.113178083e-11 2.345799347e-07 -3.336664573e-06 -1.117133926e-23 -3.308381734e-08 -2.028902496e-10 2.843321806e-06 -2.094078847e-06 4.108838252e-25 -5.632286098e-11 7.855457093e-09 7.109805969e-13 -7.829784988e-09 -6.990447582e-23 -1.617807133e-08 8.400741329e-11 9.173899183e-07 -1.236998982e-06 6.91933089e-23 -4.115909576e-08 1.129540535e-10 1.15856545e-06 -1.384583023e-06 --0.05751293495 -0.01742314575 0.002807441229 -0.002741260601 0.0006877098011 -6.313790157e-05 -3.703790973e-05 -1.993765262e-06 1.779141841e-05 1.117127821e-05 -3.925466161e-06 1.105928494e-06 4.760820116e-06 2.356370425e-06 0.002086629187 0.008695215087 -6.2979561e-06 3.741398894e-07 -0.07442571239 3.937534685e-07 -7.848018286e-09 0.008950218454 -7.896863725e-06 5.968412251e-08 -0.002792952986 -8.133735554e-11 5.197317153e-08 0.0004693188178 -7.459501429e-07 -3.500108653e-10 -4.093285999e-06 1.032339543e-10 -9.466882665e-07 -8.422440694e-05 6.995807459e-11 -1.632739084e-06 -4.319618027e-06 -2.136820204e-11 9.874220973e-07 7.401138147e-05 1.010201071e-10 -5.466525505e-06 -8.034065257e-06 -6.503235901e-07 -1.341657236e-10 -4.441394808e-07 -3.383529974e-11 1.834727903e-06 5.4567997e-06 -3.617647595e-11 2.98183865e-06 5.407168305e-06 1.598134e-19 -3.801065212e-06 -4.420846394e-06 0.06307890282 0.006834856211 -4.576452274e-19 1.2360615e-07 -0.0004147197189 3.245439041e-06 -0.05323530859 -8.236760234e-21 -7.133332631e-09 1.11168147e-08 5.132952514e-09 -0.005614192732 1.086175827e-21 3.611864086e-10 1.48279327e-05 -1.809388448e-07 0.00192530132 -3.410533991e-21 -1.462622461e-08 -4.015748519e-08 3.138645067e-10 -0.0004375922108 7.359980678e-22 -2.062581006e-09 1.526916853e-10 -7.487547447e-09 -6.5275208e-05 -1.070557335e-22 9.665570157e-10 -4.759094266e-10 4.428858264e-06 1.003236761e-05 -1.429327378e-23 1.297693598e-10 -3.054149145e-11 7.432534774e-08 9.720891838e-06 2.414566489e-11 7.427719019e-22 -3.039500919e-12 1.39543781e-06 5.069545599e-05 -1.940421899e-22 -4.776269042e-10 1.818254864e-10 -9.70477885e-06 -5.529115333e-06 -1.194470295e-25 -4.190493315e-10 -1.078377038e-06 -1.525802291e-10 -6.801392399e-08 5.154379602e-10 3.537893142e-23 -9.02140094e-11 5.837397148e-06 5.909045808e-06 6.466991571e-24 2.987041801e-10 -1.60387982e-10 3.118621718e-06 1.889669192e-07 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.05227305888 -0.01059774195 0.0007747731012 -0.0019584315 0.0004996371268 -2.324558865e-05 -2.394669917e-05 -7.276138765e-06 8.264461737e-06 1.838973561e-05 -3.937587669e-06 5.221874471e-07 3.804800733e-06 0.003294115467 -5.03865326e-06 8.521411615e-05 8.201923211e-05 2.067578889e-07 -0.06268694534 -4.461298473e-06 -1.290932257e-08 0.008994674824 -1.566384246e-05 4.177343488e-08 -0.003310642092 -1.39836719e-10 4.550215342e-08 0.0007412007475 3.371897556e-11 -2.135755559e-07 -6.832987415e-06 4.698765008e-11 -6.359455323e-07 -9.524322186e-05 -1.168207208e-06 4.963625375e-11 -6.28702053e-07 -3.114294568e-11 4.478956051e-07 5.538823034e-05 2.230680665e-12 1.774135912e-06 2.782574797e-06 4.907366656e-10 -1.097731374e-06 -3.17533837e-06 -3.19703626e-11 1.108827398e-06 2.817216516e-06 -3.361210006e-11 1.86095787e-06 7.359028335e-06 -9.803448877e-19 -0.0002852827998 -0.0001093982521 -4.438290702e-06 0.0612087474 -3.397598074e-19 -5.672657459e-06 -0.001412428299 2.934551322e-06 -0.05104289932 1.803454727e-20 2.315741605e-10 2.280737082e-08 1.99657454e-10 -0.001386055972 2.965016531e-20 -2.218079148e-11 -0.0001285817751 -2.334044471e-07 0.000791823636 -3.10231296e-21 1.565366177e-10 1.581342029e-11 4.980086481e-09 -0.0001439248567 2.832122044e-23 1.452916396e-08 4.223110462e-10 -7.100395277e-06 -2.760876911e-05 -3.929599613e-22 -1.566034151e-09 1.050286112e-10 1.196885357e-08 -1.098689074e-05 3.482091021e-22 2.91435589e-09 1.016381852e-10 -1.778376473e-07 -1.275177812e-05 -8.267208313e-24 -1.096373539e-09 -2.116571378e-11 3.816288677e-07 7.029415091e-05 -1.755306226e-22 -1.759502375e-08 2.032173328e-10 -7.041690834e-06 -9.234442056e-06 1.556223992e-25 3.778730592e-10 3.371220318e-09 -7.123309402e-13 -3.067020323e-09 5.848383874e-24 -4.169374205e-09 -8.414027643e-11 2.098761966e-06 5.54532595e-06 -6.358169866e-23 -9.442255645e-09 -1.131400601e-10 5.032227385e-06 1.055086583e-06 --0.01870392239 -0.005666223889 0.0009130148356 -0.0008914920716 0.0002236517882 -2.053323155e-05 -1.204518931e-05 -6.483972824e-07 5.785990742e-06 3.633038737e-06 -1.276610461e-06 3.596617133e-07 1.548277966e-06 -2.360738584e-06 0.03012600167 -0.02661648463 -0.0001013170272 -3.750412402e-07 -0.02410440258 -6.473083976e-06 7.86788762e-09 0.002917313174 -6.209909928e-05 -5.982724624e-08 -0.0008486929007 8.153315782e-11 1.767015122e-07 0.0001524684146 8.386966911e-07 3.506062313e-10 -2.412940959e-06 -1.03489508e-10 4.325370202e-07 -2.813110036e-05 -7.01336135e-11 -1.272009523e-06 -6.63678222e-07 2.141801211e-11 7.20810683e-07 2.366970548e-05 -1.012439589e-10 -8.825188043e-08 -4.302174199e-06 2.262857906e-07 1.343906619e-10 -5.823968285e-07 3.391481584e-11 1.224153722e-06 1.147096904e-06 3.625524393e-11 1.96618936e-06 7.619721113e-07 -3.744936505e-20 -0.0002399783128 4.429670749e-06 0.05862781591 -0.03565811638 2.006737816e-19 3.134980355e-06 -0.003476641184 -3.253025745e-06 -0.01396980218 8.38773361e-22 1.136629777e-07 1.037074105e-06 -5.146353529e-09 -0.00182694799 -8.959366313e-21 -1.794104248e-08 -0.0001795896175 1.81405844e-07 0.0008103216112 -8.218998856e-22 2.246534061e-07 1.460111013e-07 -3.147057971e-10 -0.0001426984983 2.407381486e-22 3.165906529e-08 -1.530328056e-10 -5.880359132e-08 -2.120406882e-05 5.161917122e-23 -1.426401455e-08 4.771886505e-10 -9.224878544e-07 5.639404919e-06 -9.630491888e-24 -1.923071812e-09 3.061682836e-11 1.365337013e-07 3.050917587e-06 -5.065341759e-10 1.395353467e-22 3.046264775e-12 6.475738678e-07 1.629354359e-05 5.914770965e-23 9.109682087e-09 -1.822953378e-10 -1.485812014e-06 -3.477463597e-06 1.738616418e-23 6.655951109e-09 -5.74589738e-07 1.527580882e-10 1.947745163e-07 -7.857037501e-09 4.265848827e-23 9.043149751e-11 3.224418723e-06 6.035756443e-07 2.356688693e-23 -1.558553604e-08 1.607444256e-10 1.658167214e-06 -5.670284416e-07 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.0411321873 -0.008339062533 0.0006096469769 -0.001541034196 0.0003931502828 -1.829129434e-05 -1.884297833e-05 -5.725387206e-06 6.503070519e-06 1.447036132e-05 -3.098376047e-06 4.108944902e-07 2.993889774e-06 -0.003692931319 6.684943117e-06 0.006341380197 -0.0001230406465 -2.74369599e-07 -0.04913856285 6.893948142e-06 1.71308782e-08 0.007067222778 1.30112031e-05 -5.544016143e-08 -0.002630298682 1.854554824e-10 -4.611068783e-08 0.0005833114635 -4.475959074e-11 -3.716938248e-07 -5.172975408e-06 -6.236533381e-11 -9.518968852e-07 -7.449260097e-05 -2.062491615e-07 -6.585442473e-11 -1.207582855e-06 4.133017006e-11 9.861243906e-08 4.383718543e-05 -2.959197357e-12 9.323612458e-08 3.492314996e-06 -6.522504806e-10 -1.657548191e-06 -1.703770788e-06 4.242558686e-11 4.549582158e-07 2.634266796e-06 4.460116865e-11 8.116553402e-07 6.443219229e-06 -1.068966517e-18 0.0004829576041 0.0001242870854 5.888692216e-06 0.04723623807 -1.110279007e-18 3.294780257e-06 0.001149751687 -3.89436725e-06 -0.04242691604 5.593243827e-21 -2.768655948e-10 -2.949608241e-08 -2.64989249e-10 -0.001090599805 1.715199122e-20 3.933175976e-11 0.0002019770285 3.09697559e-07 0.0003194157652 -3.495880179e-21 -1.91547415e-10 -2.098780887e-11 -1.35141104e-08 -0.0001132326063 1.321395472e-22 -2.624027897e-08 -5.605204444e-10 -2.631350537e-06 -2.46417407e-05 2.743392169e-22 1.457134286e-09 -1.394145316e-10 -1.684666273e-07 -8.469855444e-06 1.913215578e-22 -5.243764032e-09 -1.348940671e-10 5.599469354e-08 -1.022219073e-05 1.320565933e-21 1.779518342e-09 2.80884512e-11 1.111762798e-07 5.549890313e-05 -4.672020974e-22 1.163451117e-08 -2.697230875e-10 -7.446974375e-06 -5.385302829e-06 1.02284459e-25 3.272970404e-10 -3.370708344e-09 9.449748969e-13 3.578609755e-09 1.563977974e-22 9.0329589e-09 1.116684355e-10 8.917771118e-07 5.110647247e-06 1.381276361e-22 2.385951371e-08 1.501339326e-10 2.921382097e-06 1.83702408e-06 -0.02917389264 0.008838028944 -0.001424096841 0.001390526193 -0.0003488462539 3.20272016e-05 1.878777362e-05 1.011353251e-06 -9.024838172e-06 -5.66671952e-06 1.99122386e-06 -5.609910046e-07 -2.414963783e-06 3.131764434e-06 0.02113859613 -0.02661209925 -7.166687639e-05 4.97322524e-07 0.03782720766 -5.177796953e-06 -1.043334764e-08 -0.004535076858 -4.088571921e-05 7.933896824e-08 0.001461529417 -1.081506332e-10 9.410884509e-08 -0.0002381860178 1.194202806e-06 -4.647773923e-10 1.261180451e-06 1.372863619e-10 1.038364612e-06 4.216515965e-05 9.30177865e-11 2.694383648e-07 2.749813509e-06 -2.841116772e-11 -1.995626923e-07 -3.784413631e-05 1.343156087e-10 4.046369427e-06 2.801726811e-06 6.603081789e-07 -1.781739592e-10 -1.048868705e-07 -4.49845343e-11 -4.575800789e-07 -3.241043012e-06 -4.809009413e-11 -7.612857105e-07 -3.494038197e-06 -5.741651832e-19 -0.0001781248725 -5.875863018e-06 -0.00325358254 -0.03202255516 -8.101736883e-19 2.27129912e-06 -0.002309571161 4.314038673e-06 0.02951567944 -8.224158858e-21 9.109152453e-08 7.736946357e-07 6.824590353e-09 0.002846967579 -2.262829101e-21 -1.380258363e-08 -0.00014659622 -2.405362853e-07 -0.000837203801 -3.039381199e-22 1.804379704e-07 1.404322281e-07 4.172190712e-10 0.0002216784642 -8.026239776e-23 2.542909593e-08 2.030650731e-10 -3.866749846e-08 3.31291695e-05 -3.002652305e-25 -1.148514282e-08 -6.330232694e-10 -4.027290359e-06 -3.296411943e-06 -3.292775826e-23 -1.548017159e-09 -4.061005464e-11 4.700979461e-08 -5.014173148e-06 -4.001910504e-10 -3.414142269e-22 -4.040786575e-12 -5.617850981e-07 -2.586134062e-05 4.196693038e-23 7.229839581e-09 2.418124915e-10 6.181658491e-06 1.538533616e-06 -3.325977813e-24 5.335196032e-09 3.786615396e-07 -2.026498209e-10 1.980117903e-07 -6.313576244e-09 -5.264077005e-23 -1.199476441e-10 -1.961240248e-06 -3.991018329e-06 -5.951271131e-23 -1.197908084e-08 -2.132048396e-10 -1.09602752e-06 -5.6965094e-07 -0.2731656004 0.01615280688 -0.02892567571 -0.00681892694 0.00311081643 -0.0001242414384 9.142358452e-06 0.0001499983368 -0.0001504484689 9.162783375e-05 -7.145343949e-05 6.119624794e-05 -3.277313972e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.2695462447 0.02324389201 -0.03424272561 -0.004333899483 0.002291534039 4.332848919e-05 0.0001066902242 -2.294053818e-05 1.892984583e-05 -3.739677434e-05 2.322309841e-05 -2.861059199e-06 6.880804962e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.1208306479 -0.009094799051 -0.002843835608 4.385357727e-05 0.000101455379 -2.497568383e-05 2.882303202e-05 4.591201175e-06 1.25522063e-05 2.574477926e-05 9.479225358e-06 3.178405029e-06 8.85371498e-06 1.738623967e-10 -0.03001102387 0.1997440824 -0.0001221715915 -1.474070407e-10 -0.02386352647 -3.161081699e-06 8.892664108e-13 -0.0003782332269 5.069147332e-07 1.658455888e-13 1.114472307e-05 -1.500171579e-14 -4.573358943e-07 5.007857078e-05 2.271380542e-06 1.920933973e-13 -1.440347086e-05 3.522406308e-14 -3.493952407e-06 4.251167502e-05 1.184301284e-14 8.749326325e-07 -6.649639108e-06 -7.916368834e-15 -3.478571729e-06 4.038721491e-05 5.133587596e-14 -1.83560613e-06 3.443235877e-05 6.48529231e-07 4.700311431e-15 3.713046695e-06 -8.486490725e-15 -1.351843834e-06 9.719683219e-06 -1.014688306e-14 -1.550010209e-06 1.674276403e-05 1.659787342e-19 -0.000377473387 -9.424700907e-12 -0.008719428334 0.06301289739 1.509206601e-19 4.987671827e-06 -0.00143187811 -4.141268854e-10 -0.005892254741 1.36923888e-21 1.859842766e-07 4.229671091e-07 -6.138141063e-13 -6.644558929e-05 1.317108531e-22 -2.859798928e-08 -8.511178364e-06 1.891527864e-12 -1.727510638e-05 -1.017620099e-21 3.662671398e-07 6.488075772e-07 -3.437640429e-13 -2.522670586e-05 5.705380246e-23 5.164395866e-08 2.409182206e-13 -3.633301909e-07 1.293020884e-05 2.534751714e-23 -2.328816091e-08 -6.937242033e-14 4.52940866e-06 -8.289612776e-06 -3.36358598e-23 -3.139926191e-09 -5.790193192e-15 -4.039157833e-07 1.915478012e-06 -8.160659869e-10 9.58734191e-22 -1.266991673e-15 -9.077704595e-06 2.704664962e-05 -2.163291385e-22 1.483552381e-08 5.416556888e-14 -5.200987241e-06 1.074630952e-05 -4.44851724e-24 1.08671901e-08 -1.266292565e-07 -3.289808152e-14 -9.136562887e-07 -1.278080324e-08 -3.784986404e-22 -2.091689006e-14 -5.329587217e-06 9.978394523e-06 2.477348889e-22 -2.480045938e-08 -3.214682514e-14 6.229744764e-07 4.252964659e-06 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.002296938444 0.0004656769935 -3.404442288e-05 8.60557369e-05 -2.195463111e-05 1.021437952e-06 1.052245556e-06 3.19721922e-07 -3.631499723e-07 -8.080661741e-07 1.730221396e-07 -2.294551817e-08 -1.671873287e-07 0.008189657419 5.041046806e-06 -0.008342968697 0.0002452856292 -2.067629571e-07 0.002505844645 -1.362524288e-05 1.28943057e-08 -0.0003814274264 -3.297204231e-05 -4.172364306e-08 0.0001791736462 1.381913284e-10 1.079257912e-07 -3.267927222e-05 -3.366221799e-11 2.800914463e-07 2.957483131e-08 -4.691192177e-11 6.280388515e-07 3.585047097e-06 -8.962099782e-07 -4.954574338e-11 9.752156065e-07 3.109204061e-11 3.176698282e-07 -2.771203269e-06 -2.22648192e-12 1.653561186e-06 -1.853786177e-06 -4.89836296e-10 1.10502967e-06 -9.167977887e-07 3.191879817e-11 5.061688212e-07 -6.78714229e-07 3.355563738e-11 7.856396421e-07 -1.190808539e-06 4.344816528e-18 -0.0009274664534 -0.0002742614059 4.438674186e-06 -0.001474755946 1.204676635e-19 -1.006015126e-05 -0.002941831249 -2.930994065e-06 0.005259890253 -2.221566365e-21 5.998322676e-10 6.199376993e-08 -1.995271809e-10 6.084148142e-05 7.109212604e-21 -7.446672947e-11 -0.0003970796515 2.33129964e-07 0.0003677132413 -3.545072778e-22 4.113038732e-10 -1.578850801e-11 2.295141761e-08 6.300650718e-06 -4.001117444e-22 4.941788939e-08 -4.216631935e-10 -3.616195343e-06 5.091702812e-06 2.167094317e-23 -3.504778343e-09 -1.048420309e-10 2.359753035e-07 2.499492298e-07 -1.788101657e-23 9.88648561e-09 -1.014613753e-10 -2.52638343e-07 8.108630087e-07 -1.849138103e-22 -3.46259369e-09 2.113178083e-11 2.345799347e-07 -3.336664573e-06 1.529844035e-23 -3.308381734e-08 -2.028902496e-10 2.843321806e-06 -2.094078847e-06 6.176789783e-25 -5.632286098e-11 7.855457093e-09 7.109805969e-13 -7.829784988e-09 -8.975681052e-23 -1.617807133e-08 8.400741329e-11 9.173899183e-07 -1.236998982e-06 6.91933089e-23 -4.115909576e-08 1.129540535e-10 1.15856545e-06 -1.384583023e-06 --0.05751293495 -0.01742314575 0.002807441229 -0.002741260601 0.0006877098011 -6.313790157e-05 -3.703790973e-05 -1.993765262e-06 1.779141841e-05 1.117127821e-05 -3.925466161e-06 1.105928494e-06 4.760820116e-06 2.356370425e-06 0.002086629187 0.008695215087 -6.2979561e-06 3.741398894e-07 -0.07442571239 3.937534685e-07 -7.848018286e-09 0.008950218454 -7.896863725e-06 5.968412251e-08 -0.002792952986 -8.133735554e-11 5.197317153e-08 0.0004693188178 -7.459501429e-07 -3.500108653e-10 -4.093285999e-06 1.032339543e-10 -9.466882665e-07 -8.422440694e-05 6.995807459e-11 -1.632739084e-06 -4.319618027e-06 -2.136820204e-11 9.874220973e-07 7.401138147e-05 1.010201071e-10 -5.466525505e-06 -8.034065257e-06 -6.503235901e-07 -1.341657236e-10 -4.441394808e-07 -3.383529974e-11 1.834727903e-06 5.4567997e-06 -3.617647595e-11 2.98183865e-06 5.407168305e-06 1.598134e-19 -3.801065212e-06 -4.420846394e-06 0.06307890282 0.006834856211 -9.997463137e-19 1.2360615e-07 -0.0004147197189 3.245439041e-06 -0.05323530859 -1.84011556e-20 -7.133332631e-09 1.11168147e-08 5.132952515e-09 -0.005614192732 6.62659353e-22 3.611864086e-10 1.48279327e-05 -1.809388448e-07 0.00192530132 -3.410533991e-21 -1.462622461e-08 -4.015748519e-08 3.138645067e-10 -0.0004375922108 7.359980678e-22 -2.062581006e-09 1.526916853e-10 -7.487547447e-09 -6.5275208e-05 -1.467604029e-22 9.665570157e-10 -4.759094266e-10 4.428858264e-06 1.003236761e-05 1.548522827e-23 1.297693598e-10 -3.054149145e-11 7.432534774e-08 9.720891838e-06 2.414566489e-11 6.633625631e-22 -3.039500919e-12 1.39543781e-06 5.069545599e-05 -1.808073001e-22 -4.776269042e-10 1.818254864e-10 -9.70477885e-06 -5.529115333e-06 3.751499743e-24 -4.190493315e-10 -1.078377038e-06 -1.525802291e-10 -6.801392399e-08 5.154379602e-10 4.199637632e-23 -9.02140094e-11 5.837397148e-06 5.909045808e-06 2.076170653e-23 2.987041801e-10 -1.60387982e-10 3.118621718e-06 1.889669192e-07 -0 0 0 0 0 0 0 0 0 0 0 0 0 0.04586770644 0.1295753448 0.0004442131108 0.1967622424 0.0001704511524 0.07116101842 0.01342434892 0.1479153603 0.05829558339 0.002881188799 0.0986772665 0.03669568318 0.0583789555 0.004863627082 0.02285094543 0.01871025158 0.01720002272 0.0129751607 0.01950909261 0.002216861756 0.007850079801 0.0006684007036 0.01106999276 0.004241350104 0.006378882393 0.0004382569924 0.00246318523 0.0002443597394 0.003066181956 0.001196173181 0.001717101805 2.637892713e-05 0.0006299645073 1.244860412e-05 0.0006474759855 0.0002384489065 0.000314514928 9.546434388e-07 0.0001139889123 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -3.590997234e-05 0.0001233917216 1.30441383e-07 1.553904071e-05 1.536434435e-06 2.779572112e-06 2.900697787e-07 1.694146338e-07 2.480155548e-07 7.759935467e-08 9.02954327e-09 1.753815685e-09 2.272725483e-08 0.05134867755 0.01875202135 0.000278013623 0.005748536394 0.00207432931 0.0001512337715 0.0004583230146 0.0001648728595 3.850112287e-05 0.0005754261716 0.0002097466075 1.254127337e-05 1.450462071e-05 4.081696167e-05 1.394154879e-05 4.99941714e-06 1.463681797e-05 7.757214435e-09 1.511410508e-06 4.698023398e-06 1.404013897e-06 8.766678713e-06 6.146623103e-06 8.264078866e-06 9.044095585e-07 2.283550353e-06 9.876553109e-07 3.043249266e-07 6.038139103e-07 2.400053708e-07 9.769650476e-07 1.981749796e-06 7.468840143e-07 8.787060028e-07 1.618326537e-06 8.543525323e-07 5.00506041e-07 9.817712635e-07 4.454731505e-07 1.491737581e-19 0.003515743553 0.09234509611 0.03477975199 1.223510922e-05 -1.501767784e-19 4.597357965e-05 0.02740325923 0.01004796136 0.0003916175239 2.992264509e-21 1.460078625e-06 6.30598451e-05 2.330863833e-05 8.451039346e-05 -1.844823213e-21 2.399382941e-10 0.001718607472 0.0006467762177 6.859021545e-05 4.251345641e-22 1.335565741e-06 3.205846614e-06 7.65274698e-06 1.646933149e-05 3.944387583e-24 4.379161533e-06 1.211169872e-05 2.157052131e-05 8.161268252e-06 4.968072677e-23 5.33910383e-06 1.925982866e-05 4.905944391e-05 4.081163393e-07 1.469227726e-22 3.171881935e-06 1.1505279e-05 2.779490012e-05 1.68620799e-06 -1.036785146e-23 1.369395562e-07 3.006229585e-07 6.24704245e-07 5.081771609e-07 3.424744145e-23 4.516212835e-07 1.131399868e-06 1.789055475e-06 9.447754395e-07 -8.075302296e-24 5.108269749e-11 1.696043397e-06 3.063049089e-06 6.775872177e-06 7.795889265e-23 6.382847646e-07 1.694474736e-06 2.713576222e-06 1.415412032e-06 3.838234423e-23 3.927215262e-07 1.006395786e-06 4.761797554e-07 1.932952223e-06 -0.02151507676 0.08145033313 0.0009225981511 0.009071793741 0.001897530337 0.001271522409 0.000393613206 3.191902604e-05 0.0002180280768 1.351339316e-05 1.003663981e-05 6.66710727e-06 1.372598266e-05 0.01971880285 0.0002195616787 0.0003270306584 2.678465689e-05 0.002763516793 0.106697746 8.901625396e-07 0.0001038820182 0.0345000232 1.0786905e-05 0.0002550410404 0.002603733392 5.086780754e-06 1.296261603e-06 0.01019461019 6.255143051e-06 6.536172276e-06 3.683045246e-05 3.540615072e-06 1.378850213e-05 0.0012674418 5.746639196e-06 4.91232311e-05 0.000126571826 3.717599159e-07 5.395422689e-06 0.0003974504446 3.479206662e-07 5.176068333e-06 7.774311777e-06 2.357456293e-06 1.1427038e-06 1.727367798e-06 7.399816442e-07 1.145978052e-05 3.343258584e-05 4.18479744e-07 5.861896876e-06 1.04002171e-05 -2.519287535e-20 9.561558787e-07 0.03485246954 0.02674278495 0.002291387465 1.627842927e-19 1.569546168e-06 0.0004250908481 0.01192913133 0.03599121376 8.549265763e-19 4.328799598e-08 3.906012346e-08 0.0001448848612 0.05737890751 4.792259135e-21 1.172235841e-10 9.806088991e-06 0.0006373039673 0.001947382062 5.603328817e-20 1.816924258e-07 7.09263354e-07 2.318653812e-05 0.009023977889 -1.438259125e-21 2.436045478e-08 7.517683295e-06 2.140748389e-07 0.001279410655 -1.121855366e-20 2.086878003e-08 2.83498791e-05 0.0001528953655 0.0003576463545 7.993980623e-21 6.94006599e-09 7.29799041e-06 6.948945167e-06 0.0008507631173 2.393151383e-11 1.257910817e-21 2.620125233e-08 2.63818605e-06 9.527036339e-05 -4.328713316e-22 1.215275915e-09 1.727758853e-06 4.452695345e-05 2.58813648e-05 -3.032763467e-23 2.542260728e-09 1.109931996e-05 3.064539702e-06 6.121327117e-07 1.401947502e-09 2.749151978e-22 1.253713298e-06 2.653165066e-05 2.635447273e-05 -4.544341389e-24 9.160979474e-11 9.092686847e-07 3.096286743e-06 1.632018929e-07 -0 0 0 0 0 0 0 0 0 0 0 0 0 -0.04650791085 0.05339342277 -0.006885511921 0.06582968803 0.005456254699 -0.07128594273 -0.03665265658 0.0950451253 -0.05839246872 -0.01466480269 0.05142104472 -0.03675624203 0.005432133241 0.01745725437 -0.02288938761 -0.009939728979 0.02293658634 -0.01299685736 0.0009346548029 0.006928611436 -0.007863266239 -0.002292082329 0.006540467226 -0.004248384897 0.0007511567492 0.001716174845 -0.002467331594 -0.0007179158406 0.001916075511 -0.00119815967 0.0004232273626 0.0002078052141 -0.0006310325767 -7.912951479e-05 0.0003179706291 -0.0002388411143 9.769891917e-05 1.648674933e-05 -0.0001141856685 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.0008172287347 -0.00280811301 -2.968547159e-06 -0.0003536329813 -3.496572923e-05 -6.325669591e-05 -6.601323888e-06 -3.855489098e-06 -5.64426606e-06 -1.765983606e-06 -2.054917267e-07 -3.991282865e-08 -5.172202734e-07 0.02065391313 -0.01874311768 -2.839598951e-06 0.001922210209 -0.002074278464 -0.00378330843 0.0001500682067 -0.0001650648726 -0.0009079186671 0.0002733644709 -0.0002099969132 -0.000231728652 -1.467732161e-05 1.720867302e-05 -0.0003162091956 -5.007846613e-06 -1.116087826e-05 -1.792231646e-06 -1.513850326e-06 -4.757169056e-06 -3.730015351e-05 1.142734126e-05 -6.157851779e-06 -5.327686836e-06 -9.058902923e-07 3.219670478e-06 -1.974033463e-05 -3.048988288e-07 6.478429413e-07 -3.602534663e-07 -9.787608102e-07 -1.968661101e-06 2.586840302e-06 -8.801255416e-07 3.545150804e-06 -3.546258443e-06 -5.013482219e-07 2.325538149e-06 -2.752961059e-06 2.777873386e-20 0.001081420423 0.03683490234 -0.03477674716 -0.0005078099275 -6.231946013e-20 2.592330502e-05 0.01315681817 -0.01006015626 -0.00380032527 -1.46836857e-20 5.636850501e-07 2.319957752e-05 -2.332385676e-05 -0.001925267643 9.946441141e-21 7.146844379e-11 0.0005565170578 -0.0006475377206 0.0001477002938 -1.025570991e-20 5.082980186e-07 -3.210905036e-06 1.660522345e-06 -0.0003762065667 1.763305915e-22 1.287500472e-06 -1.21303074e-05 4.235369307e-05 -4.425289125e-05 3.23242418e-21 2.385662691e-06 -1.929410409e-05 2.488333702e-06 -1.793936166e-05 2.3551947e-21 9.350130233e-07 -1.152532848e-05 1.956543723e-05 -2.651761138e-05 -3.767215424e-22 4.335966598e-08 -3.011056923e-07 1.016306761e-06 -1.070586547e-05 5.40744227e-23 2.401865277e-07 -1.133223818e-06 -4.430724484e-06 4.166258622e-06 -2.490130388e-24 -3.427165247e-10 7.278680151e-07 -3.068866642e-06 2.654190084e-06 4.100047502e-23 1.64497237e-07 -1.697154657e-06 6.207993408e-06 -6.345131393e-06 1.188776048e-24 9.009374426e-08 -1.008053064e-06 2.068286092e-06 -1.472957506e-06 -0.006996970788 0.02648866226 0.0003000404036 0.002950260254 0.0006171004868 0.0004135149158 0.0001280079144 1.038046461e-05 7.090544467e-05 4.394723674e-06 3.264040205e-06 2.168226279e-06 4.463860426e-06 -0.0197553569 0.003169952543 -0.001001057065 0.0004308924624 -0.002770174458 0.0345564099 -1.463376791e-05 -0.000104145023 0.01124524197 8.482571159e-05 -0.0002556526339 0.0007911948594 -5.099026091e-06 4.407108103e-06 0.003311940614 -7.032866511e-06 -6.547290259e-06 2.17110916e-05 -3.549379796e-06 -6.299896001e-06 0.000423327795 -5.761058672e-06 3.827017946e-05 1.944685014e-05 -3.72626502e-07 3.938617866e-06 0.0001271093011 -3.486916283e-07 8.356272429e-08 4.1630784e-06 -8.202975706e-07 -1.144619623e-06 2.265084665e-06 -7.4172067e-07 7.646110877e-06 7.028005024e-06 -4.193909109e-07 3.865265904e-06 1.465586965e-06 3.801670102e-19 6.036641356e-05 -0.03492203779 0.0248557125 -0.01195439354 2.286540998e-19 3.980786074e-05 0.003563583505 -0.01195701747 0.009444674026 1.694195919e-19 -6.897536925e-07 3.64387135e-06 -0.0001452631239 0.01867201301 3.681967098e-20 -5.822791923e-09 -0.0001187671813 -0.0006389488347 0.0008196149627 3.318479423e-21 -2.79072853e-06 -2.5788548e-06 -2.32486879e-05 0.002942712557 -5.698451686e-21 -3.739146372e-07 -7.534478148e-06 1.681240677e-06 0.0004156051342 1.06627487e-21 -3.079720876e-07 -2.842608235e-05 -3.184660905e-05 0.0002010405408 4.027771147e-22 -1.028458898e-07 -7.315992414e-06 1.276502879e-05 0.000267013377 -5.020416579e-10 6.329357093e-23 -2.62595584e-08 1.224289849e-06 3.061993997e-05 1.844870906e-23 -2.317871362e-08 -1.732223519e-06 6.817124161e-06 1.627774038e-05 -1.258620615e-22 -4.037988332e-08 5.914031108e-06 -3.068111963e-06 -1.752991826e-06 -2.137047511e-08 2.938446993e-22 -1.256735752e-06 1.465535905e-05 2.691960492e-06 3.773048953e-24 -4.779938991e-09 -9.112894287e-07 1.646291736e-06 -4.897159534e-07 -0 0 0 0 0 0 0 0 0 0 0 0 0 0.0616499241 -0.05612508663 -0.005524837477 -0.09849767551 0.003987118413 0.0945105571 -0.03774692604 -0.03968505748 0.07743198352 -0.01322794725 -0.0355135707 0.04874151795 -0.03985523459 0.009503484414 0.03035175017 -0.02158210048 0.004347737172 0.01723436331 -0.01398296519 0.00355609991 0.01042686528 -0.002231696874 -0.003401939794 0.005633636669 -0.004236003097 0.0009642830837 0.003271720014 -0.0007253584191 -0.0008634759321 0.001588834351 -0.000973594934 0.0001368578979 0.0008367370361 -6.904381328e-05 -0.0002476788081 0.0003167226213 -0.0001631146387 1.171560823e-05 0.0001513990305 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.0006430541106 -0.002209624475 -2.335865557e-06 -0.0002782637621 -2.751354053e-05 -4.977489973e-05 -5.19439452e-06 -3.03377501e-06 -4.441312862e-06 -1.389602407e-06 -1.616956109e-07 -3.140627274e-08 -4.069859621e-07 -0.02315446542 0.02486709624 -0.0002113144789 -0.002883591821 0.002752586386 -0.002965630851 -0.0002318971576 0.0002190437346 -0.0007133624739 -0.0002270707624 0.0002787001547 -0.0001841079618 1.946548646e-05 -1.743881751e-05 -0.0002488508671 6.647567465e-06 -1.942370938e-05 -1.356825305e-06 2.009289265e-06 -7.120632471e-06 -2.917357685e-05 2.017518414e-06 8.169870928e-06 -1.023318319e-05 1.202217678e-06 7.088695561e-07 -1.562354862e-05 4.044755587e-07 3.404607548e-08 -4.521418737e-07 1.300895681e-06 -2.972631304e-06 1.388004183e-06 1.167951802e-06 1.454595627e-06 -3.315964822e-06 6.652579445e-07 1.014281671e-06 -2.410363274e-06 6.163535258e-19 -0.001830745551 -0.04184804203 0.04614153827 -0.0003918889316 1.764947461e-19 -1.505671622e-05 -0.0107099765 0.01335057348 -0.003158834692 3.398586641e-20 -6.739309617e-07 -3.000331146e-05 3.095587548e-05 -0.001514871375 3.97471341e-21 -1.267303587e-10 -0.0008741803541 0.0008591989311 5.958119995e-05 7.088844651e-21 -6.219833605e-07 4.261561381e-06 -4.506042692e-06 -0.0002959797984 1.344794969e-21 -2.325279806e-06 1.61001834e-05 1.56959449e-05 -3.949717088e-05 -3.339223934e-21 -2.219766983e-06 2.561091166e-05 -3.502433912e-05 -1.382955411e-05 5.460294355e-22 -1.682357216e-06 1.529640096e-05 -6.160454092e-06 -2.125727712e-05 -1.889043096e-22 -7.037685441e-08 3.9958929e-07 2.960709067e-07 -8.452535281e-06 -5.617685434e-24 -1.588206347e-07 1.504087388e-06 -4.685734219e-06 2.429661067e-06 2.594227694e-23 -2.96845995e-10 -7.277574765e-07 4.071144148e-06 -3.096918026e-06 -1.308137e-22 -3.56383646e-07 2.252412441e-06 2.637815303e-06 -5.847758739e-06 5.335784493e-23 -2.276567175e-07 1.337660336e-06 1.200711633e-06 -2.564584225e-06 --0.01091369342 -0.04131632783 -0.0004679952334 -0.004601739364 -0.0009625373212 -0.000644989832 -0.0001996634222 -1.619117925e-05 -0.0001105964721 -6.854775913e-06 -5.091165187e-06 -3.381943069e-06 -6.962613624e-06 0.02620752866 0.002224269497 -0.001000892129 0.0003047929621 0.003673383099 -0.05422961591 -1.170549913e-05 0.0001381032981 -0.01748116626 5.58488008e-05 0.0003390297478 -0.001362512354 6.763664198e-06 2.347166408e-06 -0.005173910596 -1.001395262e-05 8.679345149e-06 -1.134781363e-05 4.708510543e-06 -1.51237669e-05 -0.0006345178053 7.640857198e-06 -8.106428758e-06 -8.057400327e-05 4.942920937e-07 -1.090440533e-06 -0.0002032277807 4.625928184e-07 -3.831370518e-06 -2.711142746e-06 -2.393650938e-06 1.517526643e-06 4.079308649e-07 9.838166031e-07 -2.85806264e-06 -1.98571424e-05 5.56293275e-07 -1.496586117e-06 -6.720478032e-06 -2.281668516e-19 4.480721443e-05 0.04632333236 -0.001379381288 -0.01073557061 9.300625427e-20 2.884086942e-05 0.002367327906 0.01585694053 -0.01995489753 7.925591351e-20 -5.527808322e-07 2.718459272e-06 0.0001926337373 -0.02909695075 2.03428278e-21 -4.47964897e-09 -9.694780846e-05 0.0008472184569 -0.0008468054569 -2.072597897e-20 -2.241467871e-06 -2.480320484e-06 3.082178995e-05 -0.004571428628 1.998257695e-21 -3.003345517e-07 9.997786745e-06 1.10553403e-06 -0.0006493401365 1.8929894e-22 -2.479739066e-07 3.770913572e-05 -0.0001390322279 -0.0001175146047 2.233757008e-21 -8.278796515e-08 9.703906891e-06 4.395115462e-06 -0.0004388356181 -3.966417036e-10 -3.01985468e-22 3.483258316e-08 -1.062099363e-06 -4.860039762e-05 -6.661622542e-22 -1.83956344e-08 2.297772888e-06 -2.83623588e-05 -7.201757854e-06 -1.332597352e-23 -3.23672139e-08 -3.897417542e-06 4.070176231e-06 -1.782127644e-06 -1.71723915e-08 3.090396322e-23 1.666924655e-06 -8.914065602e-06 -1.780002849e-05 9.679275628e-24 -3.673872713e-09 1.208697071e-06 -1.088177979e-06 -4.919808827e-07 -0 0 0 0 0 0 0 0 0 0 0 0 0 1.333601076e-05 -0.003680518671 0.01171062439 0.004572524643 -0.001931974151 1.016225988e-05 -0.003695330387 0.003163975381 -1.380679875e-06 -0.002791090092 0.002119938484 -1.702859645e-06 0.001336173644 -0.001159269776 4.948719016e-07 5.602991138e-05 -5.170347486e-05 1.165106662e-08 0.0004402708215 -0.0003880446353 1.452039402e-07 -0.0002896023254 0.0002398595806 -1.282564785e-07 0.0001483925852 -0.0001273107664 5.926285014e-08 -7.692981325e-05 6.523609042e-05 -3.032478854e-08 4.206025406e-05 -3.160521265e-05 3.109924057e-08 -1.970181647e-05 1.391253042e-05 -1.452397306e-08 7.57314583e-06 -4.370287337e-06 1.070626807e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.004214043356 0.006158998385 0.0001312011809 -0.0007825700286 -0.000160366703 0.0001179069761 2.941101487e-05 -1.215575976e-05 -1.292825713e-05 3.591247411e-06 1.211948785e-06 2.186819431e-07 -9.353687809e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.04520166927 0.04251668573 -0.0009345582901 -0.0001451268835 0.0002799358963 0.0005029806326 -0.0003063111856 -7.350246924e-05 0.0001538232273 3.114230238e-05 -2.423650254e-05 1.916106456e-05 2.552626129e-05 1.454931824e-06 -0.003157854218 0.007512458075 0.0005195851016 -1.088795504e-06 0.03421108654 -7.146290097e-06 -1.177097021e-08 -0.001457959397 -6.924319911e-07 7.086881675e-10 -1.038967993e-05 9.381966906e-10 -1.140640338e-05 0.001087813846 -1.904659493e-05 -3.587190187e-09 0.0001295991408 1.20807976e-09 5.088937078e-05 -0.0006397323042 9.728329649e-10 -2.632356776e-05 0.0001948452291 1.377274291e-10 -1.900743854e-05 0.0002168844333 1.768045232e-10 1.738073434e-06 -3.331910854e-05 -2.35095165e-06 -4.003305574e-11 -1.444095283e-05 1.856004633e-10 -8.44366819e-06 5.955031546e-05 1.173764161e-10 -3.04711323e-06 3.220324779e-05 1.279583594e-19 9.495322441e-05 7.430118957e-08 -0.00369666856 0.02112509155 3.419787431e-19 6.333326623e-05 0.001467685891 -1.522189737e-06 0.003983623004 3.454912087e-20 -1.128629076e-06 1.486140405e-06 -1.732577337e-08 0.0006790959101 1.154097429e-22 -9.281519799e-09 -5.628658706e-06 -6.662351652e-09 -1.747322974e-05 1.337485782e-20 -4.549907229e-06 -1.145926933e-05 -2.539534721e-08 0.0005202223217 -1.586521241e-21 -6.099495322e-07 1.186146372e-08 1.038789438e-05 -0.0002534353773 -5.153734141e-21 -5.02811008e-07 4.132508469e-09 0.000156366619 -0.0002955184562 4.099301301e-21 -1.679232679e-07 1.383585823e-09 -3.776354522e-05 0.0001676407959 -8.088281908e-10 9.556481871e-23 1.092177589e-11 -1.716212179e-05 5.082791124e-05 1.635831506e-21 -3.774756953e-08 5.146970487e-10 2.38628948e-05 -5.030265065e-05 1.304201895e-22 -6.59283491e-08 1.303346218e-06 6.607505923e-10 8.223005948e-06 -3.476269999e-08 -7.970519971e-22 2.906841531e-10 -2.422359532e-05 4.450385645e-05 1.558245265e-22 -7.6060703e-09 1.822462067e-10 6.185128518e-07 3.673086727e-06 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.05227305888 -0.01059774195 0.0007747731012 -0.0019584315 0.0004996371268 -2.324558865e-05 -2.394669917e-05 -7.276138765e-06 8.264461737e-06 1.838973561e-05 -3.937587669e-06 5.221874471e-07 3.804800733e-06 0.003294115467 -5.03865326e-06 8.521411615e-05 8.201923211e-05 2.067578889e-07 -0.06268694534 -4.461298473e-06 -1.290932257e-08 0.008994674824 -1.566384246e-05 4.177343488e-08 -0.003310642092 -1.39836719e-10 4.550215342e-08 0.0007412007475 3.371897556e-11 -2.135755559e-07 -6.832987415e-06 4.698765008e-11 -6.359455323e-07 -9.524322186e-05 -1.168207208e-06 4.963625375e-11 -6.28702053e-07 -3.114294568e-11 4.478956051e-07 5.538823034e-05 2.230680665e-12 1.774135912e-06 2.782574797e-06 4.907366656e-10 -1.097731374e-06 -3.17533837e-06 -3.19703626e-11 1.108827398e-06 2.817216516e-06 -3.361210006e-11 1.86095787e-06 7.359028335e-06 -9.803448877e-19 -0.0002852827998 -0.0001093982521 -4.438290702e-06 0.0612087474 -3.397598074e-19 -5.672657459e-06 -0.001412428299 2.934551322e-06 -0.05104289932 -9.070507038e-21 2.315741605e-10 2.280737082e-08 1.99657454e-10 -0.001386055972 2.287390173e-20 -2.218079148e-11 -0.0001285817751 -2.334044471e-07 0.000791823636 -3.10231296e-21 1.565366177e-10 1.581342029e-11 4.980086481e-09 -0.0001439248567 2.832122044e-23 1.452916396e-08 4.223110462e-10 -7.100395277e-06 -2.760876911e-05 -3.929599613e-22 -1.566034151e-09 1.050286112e-10 1.196885357e-08 -1.098689074e-05 1.364508652e-22 2.91435589e-09 1.016381852e-10 -1.778376473e-07 -1.275177812e-05 -8.267208313e-24 -1.096373539e-09 -2.116571378e-11 3.816288677e-07 7.029415091e-05 2.47985851e-22 -1.759502375e-08 2.032173328e-10 -7.041690834e-06 -9.234442056e-06 1.556223992e-25 3.778730592e-10 3.371220318e-09 -7.123309402e-13 -3.067020323e-09 -1.000307345e-22 -4.169374205e-09 -8.414027643e-11 2.098761966e-06 5.54532595e-06 -6.358169866e-23 -9.442255645e-09 -1.131400601e-10 5.032227385e-06 1.055086583e-06 --0.01870392239 -0.005666223889 0.0009130148356 -0.0008914920716 0.0002236517882 -2.053323155e-05 -1.204518931e-05 -6.483972824e-07 5.785990742e-06 3.633038737e-06 -1.276610461e-06 3.596617133e-07 1.548277966e-06 -2.360738584e-06 0.03012600167 -0.02661648463 -0.0001013170272 -3.750412402e-07 -0.02410440258 -6.473083976e-06 7.86788762e-09 0.002917313174 -6.209909928e-05 -5.982724624e-08 -0.0008486929007 8.153315782e-11 1.767015122e-07 0.0001524684146 8.386966911e-07 3.506062313e-10 -2.412940959e-06 -1.03489508e-10 4.325370202e-07 -2.813110036e-05 -7.01336135e-11 -1.272009523e-06 -6.63678222e-07 2.141801211e-11 7.20810683e-07 2.366970548e-05 -1.012439589e-10 -8.825188043e-08 -4.302174199e-06 2.262857906e-07 1.343906619e-10 -5.823968285e-07 3.391481584e-11 1.224153722e-06 1.147096904e-06 3.625524393e-11 1.96618936e-06 7.619721113e-07 1.263593242e-18 -0.0002399783128 4.429670749e-06 0.05862781591 -0.03565811638 6.514851e-20 3.134980355e-06 -0.003476641184 -3.253025745e-06 -0.01396980218 2.956355729e-21 1.136629777e-07 1.037074105e-06 -5.146353529e-09 -0.00182694799 6.287226737e-21 -1.794104248e-08 -0.0001795896175 1.81405844e-07 0.0008103216112 -4.777927508e-22 2.246534061e-07 1.460111013e-07 -3.147057971e-10 -0.0001426984983 2.672079282e-22 3.165906529e-08 -1.530328056e-10 -5.880359132e-08 -2.120406882e-05 -7.080355944e-23 -1.426401455e-08 4.771886505e-10 -9.224878544e-07 5.639404919e-06 6.913120363e-24 -1.923071812e-09 3.061682836e-11 1.365337013e-07 3.050917587e-06 -5.065341759e-10 7.186448656e-24 3.046264774e-12 6.475738678e-07 1.629354359e-05 -2.522471283e-23 9.109682087e-09 -1.822953378e-10 -1.485812014e-06 -3.477463597e-06 2.483078969e-23 6.655951109e-09 -5.74589738e-07 1.527580882e-10 1.947745163e-07 -7.857037501e-09 1.287998622e-23 9.043149751e-11 3.224418723e-06 6.035756443e-07 -4.260756208e-23 -1.558553604e-08 1.607444256e-10 1.658167214e-06 -5.670284416e-07 -0 0 0 0 0 0 0 0 0 0 0 0 0 -0.04650791085 0.05339342277 -0.006885511921 0.06582968803 0.005456254699 -0.07128594273 -0.03665265658 0.0950451253 -0.05839246872 -0.01466480269 0.05142104472 -0.03675624203 0.005432133241 0.01745725437 -0.02288938761 -0.009939728979 0.02293658634 -0.01299685736 0.0009346548029 0.006928611436 -0.007863266239 -0.002292082329 0.006540467226 -0.004248384897 0.0007511567492 0.001716174845 -0.002467331594 -0.0007179158406 0.001916075511 -0.00119815967 0.0004232273626 0.0002078052141 -0.0006310325767 -7.912951479e-05 0.0003179706291 -0.0002388411143 9.769891917e-05 1.648674933e-05 -0.0001141856685 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.0008172287347 -0.00280811301 -2.968547159e-06 -0.0003536329813 -3.496572923e-05 -6.325669591e-05 -6.601323888e-06 -3.855489098e-06 -5.64426606e-06 -1.765983606e-06 -2.054917267e-07 -3.991282865e-08 -5.172202734e-07 0.02065391313 -0.01874311768 -2.839598951e-06 0.001922210209 -0.002074278464 -0.00378330843 0.0001500682067 -0.0001650648726 -0.0009079186671 0.0002733644709 -0.0002099969132 -0.000231728652 -1.467732161e-05 1.720867302e-05 -0.0003162091956 -5.007846613e-06 -1.116087826e-05 -1.792231646e-06 -1.513850326e-06 -4.757169056e-06 -3.730015351e-05 1.142734126e-05 -6.157851779e-06 -5.327686836e-06 -9.058902923e-07 3.219670478e-06 -1.974033463e-05 -3.048988288e-07 6.478429413e-07 -3.602534663e-07 -9.787608102e-07 -1.968661101e-06 2.586840302e-06 -8.801255416e-07 3.545150804e-06 -3.546258443e-06 -5.013482219e-07 2.325538149e-06 -2.752961059e-06 -6.362950968e-19 0.001081420423 0.03683490234 -0.03477674716 -0.0005078099275 -2.791598946e-19 2.592330502e-05 0.01315681817 -0.01006015626 -0.00380032527 -1.46836857e-20 5.636850501e-07 2.319957752e-05 -2.332385676e-05 -0.001925267643 6.134792878e-21 7.146844379e-11 0.0005565170578 -0.0006475377206 0.0001477002938 -3.479446333e-21 5.082980186e-07 -3.210905036e-06 1.660522345e-06 -0.0003762065667 1.870396486e-21 1.287500472e-06 -1.21303074e-05 4.235369307e-05 -4.425289125e-05 2.385391232e-21 2.385662691e-06 -1.929410409e-05 2.488333702e-06 -1.793936166e-05 1.719919989e-21 9.350130233e-07 -1.152532848e-05 1.956543723e-05 -2.651761138e-05 -1.649633056e-22 4.335966598e-08 -3.011056923e-07 1.016306761e-06 -1.070586547e-05 1.070139819e-22 2.401865277e-07 -1.133223818e-06 -4.430724484e-06 4.166258622e-06 -1.903374264e-23 -3.427165247e-10 7.278680151e-07 -3.068866642e-06 2.654190084e-06 -9.134842299e-23 1.64497237e-07 -1.697154657e-06 6.207993408e-06 -6.345131393e-06 6.074578015e-23 9.009374426e-08 -1.008053064e-06 2.068286092e-06 -1.472957506e-06 -0.006996970788 0.02648866226 0.0003000404036 0.002950260254 0.0006171004868 0.0004135149158 0.0001280079144 1.038046461e-05 7.090544467e-05 4.394723674e-06 3.264040205e-06 2.168226279e-06 4.463860426e-06 -0.0197553569 0.003169952543 -0.001001057065 0.0004308924624 -0.002770174458 0.0345564099 -1.463376791e-05 -0.000104145023 0.01124524197 8.482571159e-05 -0.0002556526339 0.0007911948594 -5.099026091e-06 4.407108103e-06 0.003311940614 -7.032866511e-06 -6.547290259e-06 2.17110916e-05 -3.549379796e-06 -6.299896001e-06 0.000423327795 -5.761058672e-06 3.827017946e-05 1.944685014e-05 -3.72626502e-07 3.938617866e-06 0.0001271093011 -3.486916283e-07 8.356272429e-08 4.1630784e-06 -8.202975706e-07 -1.144619623e-06 2.265084665e-06 -7.4172067e-07 7.646110877e-06 7.028005024e-06 -4.193909109e-07 3.865265904e-06 1.465586965e-06 3.801670102e-19 6.036641356e-05 -0.03492203779 0.0248557125 -0.01195439354 -5.302874209e-19 3.980786074e-05 0.003563583505 -0.01195701747 0.009444674026 1.592551966e-19 -6.897536925e-07 3.64387135e-06 -0.0001452631239 0.01867201301 2.961989093e-20 -5.822791923e-09 -0.0001187671813 -0.0006389488347 0.0008196149627 9.247710054e-21 -2.79072853e-06 -2.5788548e-06 -2.32486879e-05 0.002942712557 -3.580869317e-21 -3.739146372e-07 -7.534478148e-06 1.681240677e-06 0.0004156051342 -2.745373393e-21 -3.079720876e-07 -2.842608235e-05 -3.184660905e-05 0.0002010405408 -2.138321727e-21 -1.028458898e-07 -7.315992414e-06 1.276502879e-05 0.000267013377 -5.020416579e-10 3.412262568e-22 -2.62595584e-08 1.224289849e-06 3.061993997e-05 -1.205176339e-22 -2.317871362e-08 -1.732223519e-06 6.817124161e-06 1.627774038e-05 -2.556641228e-23 -4.037988332e-08 5.914031108e-06 -3.068111963e-06 -1.752991826e-06 -2.137047511e-08 2.673749197e-22 -1.256735752e-06 1.465535905e-05 2.691960492e-06 -5.842925668e-24 -4.779938991e-09 -9.112894287e-07 1.646291736e-06 -4.897159534e-07 -0 0 0 0 0 0 0 0 0 0 0 0 0 0.04715705099 0.02200154358 0.1067286698 0.02202428562 0.17465834 0.07141108635 0.1000731762 0.06107260141 0.05848951507 0.07464156391 0.02679567375 0.03681690082 0.0005054573398 0.06266017622 0.02292789445 0.005280432053 0.03058641266 0.0130185903 4.477807442e-05 0.02165478127 0.007876474827 0.007860017766 0.003864294445 0.004255431357 8.845381168e-05 0.006720385865 0.002471484938 0.00210919833 0.001197367089 0.001200149458 0.0001043161214 0.001637026661 0.0006321024569 0.0005029865235 0.0001561530053 0.0002392339673 3.034857158e-05 0.0002847271479 0.0001143827643 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.01859825451 0.06390622139 6.755733522e-05 0.008047876816 0.000795739924 0.001439577538 0.0001502310143 8.77421026e-05 0.0001284505699 4.018974268e-05 4.676521113e-06 9.083245777e-07 1.177074896e-05 0.008307597159 0.01873421824 2.900333486e-08 0.0006427535352 0.002074227619 0.09464435446 4.913666987e-05 0.0001652571093 0.02141018871 0.0001298657198 0.0002102475176 0.004281715785 1.48520788e-05 7.255278567e-06 0.007171961804 5.016290298e-06 8.510401907e-06 0.0004140783138 1.516294083e-06 4.817059328e-06 0.0009909456417 1.489550748e-05 6.169100968e-06 3.434653454e-06 9.073734504e-07 4.539544298e-06 0.0003945514261 3.054738133e-07 6.950824905e-07 5.407485655e-07 9.805598736e-07 1.955658851e-06 8.959547428e-06 8.815473737e-07 7.766105257e-06 1.471985915e-05 5.021918199e-07 5.508541434e-06 1.701290994e-05 5.036674214e-19 0.0003326380646 0.01469282168 0.03477374258 0.02107630735 -1.577339481e-18 1.4617477e-05 0.006316834902 0.01007236596 0.03687902424 -1.793385629e-18 2.1761899e-07 8.535073252e-06 2.333908512e-05 0.04386035073 1.154144513e-21 2.12877168e-11 0.0001802105721 0.0006483001201 0.0003180537728 -3.494958033e-19 1.934512603e-07 3.215971441e-06 3.60306497e-07 0.008593632408 1.257171642e-20 3.785330716e-07 1.214894467e-05 8.316142622e-05 0.0002399527039 -2.032848556e-20 1.065981606e-06 1.932844051e-05 1.262102486e-07 0.0007885513656 -4.031883625e-21 2.756248094e-07 1.154541289e-05 1.377253857e-05 0.0004170207456 1.250916514e-20 1.372912756e-08 3.015892013e-07 1.65338949e-06 0.000225542516 -7.439567917e-22 1.277388161e-07 1.135050709e-06 1.097300767e-05 1.837231386e-05 1.787345955e-24 2.299303327e-09 3.123692756e-07 3.074695245e-06 1.039677966e-06 -5.861123882e-23 4.239383809e-08 1.699838817e-06 1.420235844e-05 2.844450342e-05 -1.54556575e-22 2.066829092e-08 1.009713072e-06 8.983597702e-06 1.122430129e-06 -0.002275502001 0.008614442707 9.757687426e-05 0.0009594613604 0.0002006887602 0.0001344801982 4.162976727e-05 3.375856311e-06 2.305933326e-05 1.429218846e-06 1.061506507e-06 7.051341767e-07 1.451702978e-06 0.0197919787 0.04576663462 0.003064285325 0.006931890706 0.002776848162 0.01119185278 0.0002405708549 0.0001044086936 0.003665373389 0.0006670496628 0.0002562656941 0.0002404198937 5.111300906e-06 1.4983551e-05 0.001075955865 7.907287005e-06 6.558427154e-06 1.279841726e-05 3.558166217e-06 2.878390215e-06 0.0001413922296 5.77551433e-06 2.981494912e-05 2.987868567e-06 3.734951082e-07 2.875161334e-06 4.065104123e-05 3.494642989e-07 1.349041095e-09 2.229293379e-06 2.854297262e-07 1.146538659e-06 2.970188831e-06 7.434637826e-07 5.101582132e-06 1.477386609e-06 4.203040616e-07 2.548710907e-06 2.065288763e-07 8.898738087e-19 0.00381120272 0.03499174491 0.02310179904 0.06236724561 -8.608092736e-19 0.001009633108 0.0298739139 0.0119849688 0.002478434544 2.248034506e-20 1.099057939e-05 0.0003399323208 0.000145642374 0.00607617128 1.148958361e-20 2.892328027e-07 0.001438457613 0.0006405979474 0.0003449598824 1.288829085e-20 4.286455912e-05 9.37661877e-06 2.331100428e-05 0.0009596164022 -2.079060759e-21 5.739308119e-06 7.551310522e-06 1.320365452e-05 0.0001350056191 3.851894538e-22 4.544913819e-06 2.850249043e-05 6.63333715e-06 0.0001130091179 -1.36178011e-21 1.524088828e-06 7.334038823e-06 2.344902083e-05 8.380257917e-05 1.053196334e-08 8.464792285e-23 2.631799423e-08 5.681500867e-07 9.841263226e-06 -2.116126316e-22 4.420829531e-07 1.736699721e-06 1.043708995e-06 1.023766845e-05 -1.67823731e-22 6.41372051e-07 3.151162781e-06 3.071688387e-06 5.020121102e-06 3.257591355e-07 2.821865261e-22 1.259765493e-06 8.095219997e-06 2.749685552e-07 -6.681889642e-23 2.494036453e-07 9.133146635e-07 8.753312292e-07 1.469478759e-06 -0 0 0 0 0 0 0 0 0 0 0 0 0 -0.06251041084 -0.02312716577 0.08563757661 -0.03295383896 0.1276303109 -0.0946764719 0.1030608728 -0.02550019993 -0.07756067291 0.0673281933 -0.01850623727 -0.04882195603 -0.003708510075 0.03411132104 -0.03040281096 0.01146538456 0.005797797515 -0.01726318207 -0.0006699053532 0.01111428551 -0.01044438016 0.007652943725 -0.002009962988 -0.005642980737 -0.0004988181503 0.003776045562 -0.003277227412 0.002131064227 -0.0005395912934 -0.001591472934 -0.0002399694735 0.00107812515 -0.0008381556767 0.0004388767921 -0.000121633216 -0.0003172435761 -5.066889512e-05 0.0002023292553 -0.0001516603602 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.01463443893 0.0502859929 5.315895081e-05 0.006332645988 0.0006261451749 0.001132762731 0.0001182125239 6.904177173e-05 0.0001010741099 3.162416853e-05 3.679821814e-06 7.147348455e-07 9.262068479e-06 -0.009313391119 -0.02485528906 2.158341618e-06 -0.0009642227618 -0.002752518914 0.07418909208 -7.592983434e-05 -0.0002192988358 0.01682223941 -0.0001078732284 -0.0002790327477 0.003401814836 -1.969725446e-05 -7.352308847e-06 0.005644203073 -6.658775869e-06 1.481098257e-05 0.000313481762 -2.012532792e-06 7.210277511e-06 0.0007750485214 2.629829628e-06 -8.184795682e-06 6.597129124e-06 -1.204185994e-06 9.994640053e-07 0.0003122689409 -4.05238327e-07 3.652865445e-08 6.786751343e-07 -1.303286861e-06 2.952998217e-06 4.80736646e-06 -1.169838614e-06 3.186477351e-06 1.376395317e-05 -6.663773466e-07 2.4025461e-06 1.489570409e-05 4.331661991e-19 -0.0005631257223 -0.01669247861 -0.04613755182 0.01626508487 -2.512054205e-19 -8.490090396e-06 -0.005142060373 -0.01336677666 0.03065388695 1.188177676e-18 -2.601810625e-07 -1.103815192e-05 -3.097608686e-05 0.03451093673 6.119403546e-21 -3.77481283e-11 -0.0002830758546 -0.0008602105367 0.0001283005263 -1.095612139e-19 -2.367183435e-07 -4.268285589e-06 -9.777383985e-07 0.006761023897 -3.52421427e-21 -6.8364659e-07 -1.612492008e-05 3.081896923e-05 0.0002141657343 1.448133983e-20 -9.918547086e-07 -2.565648968e-05 -1.776462113e-06 0.0006078986526 -6.358655379e-21 -4.959282655e-07 -1.532305696e-05 -4.336478179e-06 0.0003342957791 9.728169875e-23 -2.228367745e-08 -4.002309418e-07 4.816661111e-07 0.0001780711778 -2.508684042e-22 -8.446585262e-08 -1.506512155e-06 1.160455761e-05 1.071428823e-05 -2.357856899e-23 1.991555512e-09 -3.123218372e-07 -4.078876345e-06 -1.21309979e-06 1.234262299e-21 -9.18463487e-08 -2.255974777e-06 6.034671105e-06 2.62148383e-05 -5.662731784e-23 -5.222643711e-08 -1.339863123e-06 5.215289271e-06 1.954276747e-06 --0.003549268956 -0.01343658413 -0.0001521978757 -0.001496542925 -0.0003130291189 -0.0002097587224 -6.49330304e-05 -5.265573046e-06 -3.596734947e-05 -2.229258458e-06 -1.655710296e-06 -1.099849986e-06 -2.264328624e-06 -0.02625611128 0.03211320294 0.003063780447 0.004903291854 -0.003682232749 -0.01756345289 0.0001924317751 -0.0001384529431 -0.005697965572 0.0004391819773 -0.000339842748 -0.0004140257883 -6.779946273e-06 7.980037421e-06 -0.001680857268 1.12590218e-05 -8.694108655e-06 -6.689394366e-06 -4.720166369e-06 6.909971635e-06 -0.0002119300653 -7.660029649e-06 -6.315433174e-06 -1.237961572e-05 -4.954443068e-07 -7.960133638e-07 -6.499462137e-05 -4.636178842e-07 -6.185385077e-08 -1.451794079e-06 8.328918145e-07 -1.520070884e-06 5.349167374e-07 -9.861286637e-07 -1.906935634e-06 -4.174253742e-06 -5.575045068e-07 -9.86831296e-07 -9.470422496e-07 6.871425522e-19 0.002828880622 -0.04641579736 -0.001282046906 0.05600852667 -1.470363652e-19 0.0007314810716 0.01984557116 -0.01589400852 -0.005236486429 -4.198096645e-21 8.808045082e-06 0.0002536017549 -0.0001931366618 -0.009468612536 4.521584494e-21 2.225154949e-07 0.001174190644 -0.0008494051089 -0.0003564038288 1.087856848e-20 3.442811834e-05 9.018351715e-06 -3.090440545e-05 -0.001490739516 -7.663421673e-22 4.609909213e-06 -1.002012226e-05 8.682331798e-06 -0.0002109323487 6.200859732e-22 3.659487597e-06 -3.781049624e-05 2.895905309e-05 -6.605743182e-05 -1.547867513e-21 1.226847403e-06 -9.727843585e-06 8.073711052e-06 -0.0001377292668 8.320855081e-09 -1.823176791e-22 -3.491009668e-08 -4.928831568e-07 -1.562019084e-05 1.309746086e-23 3.508562431e-07 -2.303710515e-06 -4.342307445e-06 -4.529449878e-06 7.102570554e-23 5.141031785e-07 -2.076654126e-06 -4.074920738e-06 5.103558646e-06 2.617659823e-07 -1.479838124e-22 -1.67094328e-06 -4.923886331e-06 -1.818172343e-06 -8.205182952e-23 1.916922473e-07 -1.21138326e-06 -5.785828522e-07 1.476275077e-06 -0 0 0 0 0 0 0 0 0 0 0 0 0 -1.352214984e-05 -0.001516611742 -0.1815201801 0.001529805043 -0.06184377689 -1.018009989e-05 0.0100894037 0.002033057526 1.382974519e-06 0.01420621429 0.001104706844 1.705669872e-06 0.0001243303037 -0.00416102366 -4.957044252e-07 -2.976561439e-05 -6.894765397e-05 -1.167054917e-08 2.109279228e-05 -0.001212800252 -1.454478514e-07 0.0009931054366 0.0001417158764 1.284692074e-07 1.74742353e-05 -0.0004985374759 -5.936260932e-08 0.0002260156754 4.076642451e-05 3.037514902e-08 1.036691613e-05 -0.0002489763116 -3.115196758e-08 0.0001252345373 6.832339961e-06 1.454786252e-08 2.35247391e-06 -7.547512391e-05 -1.072474815e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.09590197642 -0.1401646988 -0.002985838421 0.01780950172 0.003649578912 -0.002683292763 -0.0006693273457 0.0002766372549 0.0002942175258 -8.172856693e-05 -2.758117892e-05 -4.976700232e-06 2.128685141e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.01470014553 0.01382695546 -0.0003039299897 -4.71970691e-05 9.103863821e-05 0.000163575563 -9.961621062e-05 -2.390391798e-05 5.002522838e-05 1.012786441e-05 -7.88201233e-06 6.23141672e-06 8.301457933e-06 -1.457628927e-06 -0.04559196335 -0.02299600676 0.008358714646 1.091418551e-06 0.01108001222 0.0001174809611 1.180077153e-08 -0.0004752201501 -5.445124097e-06 -7.103876161e-10 -3.157105631e-06 -9.404551985e-10 -3.878017573e-05 0.0003533999622 2.141472362e-05 3.593291973e-09 7.639707444e-05 -1.211070338e-09 -2.325109286e-05 -0.0002136717171 -9.75273999e-10 -2.050776465e-05 2.993656717e-05 -1.380484768e-10 -1.387528677e-05 6.936217859e-05 -1.771963067e-10 2.805955058e-08 -1.784210166e-05 8.180342229e-07 4.010017397e-11 -1.893631504e-05 -1.860366417e-10 -5.633722485e-06 1.251832324e-05 -1.176319828e-10 -2.00923065e-06 4.53804567e-06 1.025124127e-18 0.005994823377 -7.444950055e-08 -0.003435817589 -0.1102116782 -6.902189039e-19 0.001606299893 0.01230377284 1.525748086e-06 0.001045366821 2.285437735e-21 1.798364778e-05 0.0001386402286 1.737100717e-08 0.0002209886563 -2.312523556e-21 4.610365646e-07 6.817192153e-05 6.679547034e-09 -7.354140116e-06 8.271263627e-21 6.988489398e-05 4.1665471e-05 2.546341754e-08 0.0001696441168 -6.847969713e-22 9.362266021e-06 -1.188796278e-08 8.158151922e-05 -8.232622071e-05 1.861227895e-21 7.420259143e-06 -4.143616472e-09 -3.256963719e-05 -0.000166117142 1.83836406e-21 2.488480358e-06 -1.386998724e-09 -6.937063544e-05 5.261433427e-05 1.696781277e-08 3.698647944e-23 -1.09460803e-11 -7.964340301e-06 1.633611477e-05 2.724816358e-22 7.199518179e-07 -5.160270666e-10 3.653434698e-06 -3.163718351e-05 2.943279119e-23 1.047169952e-06 6.944596701e-07 -6.615208134e-10 -2.354858994e-05 5.29902449e-07 -8.568595239e-22 -2.91384935e-10 -1.338045233e-05 4.545817498e-06 -1.027381943e-23 3.968631531e-07 -1.826512278e-10 3.288624992e-07 -1.102174207e-05 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.0411321873 -0.008339062533 0.0006096469769 -0.001541034196 0.0003931502828 -1.829129434e-05 -1.884297833e-05 -5.725387206e-06 6.503070519e-06 1.447036132e-05 -3.098376047e-06 4.108944902e-07 2.993889774e-06 -0.003692931319 6.684943117e-06 0.006341380197 -0.0001230406465 -2.74369599e-07 -0.04913856285 6.893948142e-06 1.71308782e-08 0.007067222778 1.30112031e-05 -5.544016143e-08 -0.002630298682 1.854554824e-10 -4.611068783e-08 0.0005833114635 -4.475959074e-11 -3.716938248e-07 -5.172975408e-06 -6.236533381e-11 -9.518968852e-07 -7.449260097e-05 -2.062491615e-07 -6.585442473e-11 -1.207582855e-06 4.133017006e-11 9.861243906e-08 4.383718543e-05 -2.959197357e-12 9.323612458e-08 3.492314996e-06 -6.522504806e-10 -1.657548191e-06 -1.703770788e-06 4.242558686e-11 4.549582158e-07 2.634266796e-06 4.460116865e-11 8.116553402e-07 6.443219229e-06 -2.803689993e-18 0.0004829576041 0.0001242870854 5.888692216e-06 0.04723623807 -2.429172694e-19 3.294780257e-06 0.001149751687 -3.89436725e-06 -0.04242691604 5.593243827e-21 -2.768655948e-10 -2.949608241e-08 -2.64989249e-10 -0.001090599805 1.715199122e-20 3.933175975e-11 0.0002019770285 3.09697559e-07 0.0003194157652 -1.077483897e-22 -1.91547415e-10 -2.098780887e-11 -1.35141104e-08 -0.0001132326063 1.321395472e-22 -2.624027897e-08 -5.605204444e-10 -2.631350537e-06 -2.46417407e-05 -1.491772567e-22 1.457134286e-09 -1.394145316e-10 -1.684666273e-07 -8.469855444e-06 4.030797946e-22 -5.243764032e-09 -1.348940671e-10 5.599469354e-08 -1.022219073e-05 1.320565933e-21 1.779518342e-09 2.80884512e-11 1.111762798e-07 5.549890313e-05 -6.789603342e-22 1.163451117e-08 -2.697230875e-10 -7.446974375e-06 -5.385302829e-06 -3.113058472e-25 3.272970404e-10 -3.370708344e-09 9.449748969e-13 3.578609755e-09 5.051867902e-23 9.0329589e-09 1.116684355e-10 8.917771118e-07 5.110647247e-06 1.381276361e-22 2.385951371e-08 1.501339326e-10 2.921382097e-06 1.83702408e-06 -0.02917389264 0.008838028944 -0.001424096841 0.001390526193 -0.0003488462539 3.20272016e-05 1.878777362e-05 1.011353251e-06 -9.024838172e-06 -5.66671952e-06 1.99122386e-06 -5.609910046e-07 -2.414963783e-06 3.131764434e-06 0.02113859613 -0.02661209925 -7.166687639e-05 4.97322524e-07 0.03782720766 -5.177796953e-06 -1.043334764e-08 -0.004535076858 -4.088571921e-05 7.933896824e-08 0.001461529417 -1.081506332e-10 9.410884509e-08 -0.0002381860178 1.194202806e-06 -4.647773923e-10 1.261180451e-06 1.372863619e-10 1.038364612e-06 4.216515965e-05 9.30177865e-11 2.694383648e-07 2.749813509e-06 -2.841116772e-11 -1.995626923e-07 -3.784413631e-05 1.343156087e-10 4.046369427e-06 2.801726811e-06 6.603081789e-07 -1.781739592e-10 -1.048868705e-07 -4.49845343e-11 -4.575800789e-07 -3.241043012e-06 -4.809009413e-11 -7.612857105e-07 -3.494038197e-06 4.01616772e-19 -0.0001781248725 -5.875863018e-06 -0.00325358254 -0.03202255516 -5.933332538e-19 2.27129912e-06 -0.002309571161 4.314038673e-06 0.02951567944 -5.683060017e-21 9.109152453e-08 7.736946357e-07 6.824590353e-09 0.002846967579 1.128969805e-20 -1.380258363e-08 -0.00014659622 -2.405362853e-07 -0.000837203801 1.072490419e-21 1.804379704e-07 1.404322281e-07 4.172190712e-10 0.0002216784642 -2.258461856e-22 2.542909593e-08 2.030650731e-10 -3.866749846e-08 3.31291695e-05 -9.399251969e-24 -1.148514282e-08 -6.330232694e-10 -4.027290359e-06 -3.296411943e-06 -5.608881541e-23 -1.548017159e-09 -4.061005464e-11 4.700979461e-08 -5.014173148e-06 -4.001910504e-10 -3.678840066e-22 -4.040786576e-12 -5.617850981e-07 -2.586134062e-05 9.159776714e-23 7.229839581e-09 2.418124915e-10 6.181658491e-06 1.538533616e-06 -8.44435975e-25 5.335196032e-09 3.786615396e-07 -2.026498209e-10 1.980117903e-07 -6.313576244e-09 -4.27146027e-23 -1.199476441e-10 -1.961240248e-06 -3.991018329e-06 -5.289526641e-23 -1.197908084e-08 -2.132048396e-10 -1.09602752e-06 -5.6965094e-07 -0 0 0 0 0 0 0 0 0 0 0 0 0 0.0616499241 -0.05612508663 -0.005524837477 -0.09849767551 0.003987118413 0.0945105571 -0.03774692604 -0.03968505748 0.07743198352 -0.01322794725 -0.0355135707 0.04874151795 -0.03985523459 0.009503484414 0.03035175017 -0.02158210048 0.004347737172 0.01723436331 -0.01398296519 0.00355609991 0.01042686528 -0.002231696874 -0.003401939794 0.005633636669 -0.004236003097 0.0009642830837 0.003271720014 -0.0007253584191 -0.0008634759321 0.001588834351 -0.000973594934 0.0001368578979 0.0008367370361 -6.904381328e-05 -0.0002476788081 0.0003167226213 -0.0001631146387 1.171560823e-05 0.0001513990305 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.0006430541106 -0.002209624475 -2.335865557e-06 -0.0002782637621 -2.751354053e-05 -4.977489973e-05 -5.19439452e-06 -3.03377501e-06 -4.441312862e-06 -1.389602407e-06 -1.616956109e-07 -3.140627274e-08 -4.069859621e-07 -0.02315446542 0.02486709624 -0.0002113144789 -0.002883591821 0.002752586386 -0.002965630851 -0.0002318971576 0.0002190437346 -0.0007133624739 -0.0002270707624 0.0002787001547 -0.0001841079618 1.946548646e-05 -1.743881751e-05 -0.0002488508671 6.647567465e-06 -1.942370938e-05 -1.356825305e-06 2.009289265e-06 -7.120632471e-06 -2.917357685e-05 2.017518414e-06 8.169870928e-06 -1.023318319e-05 1.202217678e-06 7.088695561e-07 -1.562354862e-05 4.044755587e-07 3.404607548e-08 -4.521418737e-07 1.300895681e-06 -2.972631304e-06 1.388004183e-06 1.167951802e-06 1.454595627e-06 -3.315964822e-06 6.652579445e-07 1.014281671e-06 -2.410363274e-06 1.781870861e-18 -0.001830745551 -0.04184804203 0.04614153827 -0.0003918889316 2.849149633e-19 -1.505671622e-05 -0.0107099765 0.01335057348 -0.003158834692 6.880812096e-21 -6.739309617e-07 -3.000331146e-05 3.095587548e-05 -0.001514871375 -2.801550168e-21 -1.267303587e-10 -0.0008741803541 0.0008591989311 5.958119995e-05 7.088844651e-21 -6.219833605e-07 4.261561381e-06 -4.506042692e-06 -0.0002959797984 -3.49270925e-22 -2.325279806e-06 1.61001834e-05 1.56959449e-05 -3.949717088e-05 -2.492190987e-21 -2.219766983e-06 2.561091166e-05 -3.502433912e-05 -1.382955411e-05 1.60482062e-21 -1.682357216e-06 1.529640096e-05 -6.160454092e-06 -2.125727712e-05 -1.889043096e-22 -7.037685441e-08 3.9958929e-07 2.960709067e-07 -8.452535281e-06 7.379165337e-23 -1.588206347e-07 1.504087388e-06 -4.685734219e-06 2.429661067e-06 2.925099939e-23 -2.96845995e-10 -7.277574765e-07 4.071144148e-06 -3.096918026e-06 -2.366928184e-22 -3.56383646e-07 2.252412441e-06 2.637815303e-06 -5.847758739e-06 3.019678777e-23 -2.276567175e-07 1.337660336e-06 1.200711633e-06 -2.564584225e-06 --0.01091369342 -0.04131632783 -0.0004679952334 -0.004601739364 -0.0009625373212 -0.000644989832 -0.0001996634222 -1.619117925e-05 -0.0001105964721 -6.854775913e-06 -5.091165187e-06 -3.381943069e-06 -6.962613624e-06 0.02620752866 0.002224269497 -0.001000892129 0.0003047929621 0.003673383099 -0.05422961591 -1.170549913e-05 0.0001381032981 -0.01748116626 5.58488008e-05 0.0003390297478 -0.001362512354 6.763664198e-06 2.347166408e-06 -0.005173910596 -1.001395262e-05 8.679345149e-06 -1.134781363e-05 4.708510543e-06 -1.51237669e-05 -0.0006345178053 7.640857198e-06 -8.106428758e-06 -8.057400327e-05 4.942920937e-07 -1.090440533e-06 -0.0002032277807 4.625928184e-07 -3.831370518e-06 -2.711142746e-06 -2.393650938e-06 1.517526643e-06 4.079308649e-07 9.838166031e-07 -2.85806264e-06 -1.98571424e-05 5.56293275e-07 -1.496586117e-06 -6.720478032e-06 -4.721123404e-19 4.480721443e-05 0.04632333236 -0.001379381288 -0.01073557061 -1.509392345e-19 2.884086942e-05 0.002367327906 0.01585694053 -0.01995489753 -2.059249426e-21 -5.527808322e-07 2.718459272e-06 0.0001926337373 -0.02909695075 1.495153523e-20 -4.47964897e-09 -9.694780846e-05 0.0008472184569 -0.0008468054569 -2.580817665e-20 -2.241467871e-06 -2.480320484e-06 3.082178995e-05 -0.004571428628 3.69232359e-21 -3.003345517e-07 9.997786745e-06 1.10553403e-06 -0.0006493401365 -9.224318033e-22 -2.479739066e-07 3.770913572e-05 -0.0001390322279 -0.0001175146047 2.445515245e-21 -8.278796515e-08 9.703906891e-06 4.395115462e-06 -0.0004388356181 -3.966417036e-10 -1.961063495e-22 3.483258316e-08 -1.062099363e-06 -4.860039762e-05 -5.602831358e-22 -1.83956344e-08 2.297772888e-06 -2.83623588e-05 -7.201757854e-06 3.07213941e-23 -3.23672139e-08 -3.897417542e-06 4.070176231e-06 -1.782127644e-06 -1.71723915e-08 -1.411496042e-22 1.666924655e-06 -8.914065602e-06 -1.780002849e-05 -1.847071459e-23 -3.673872713e-09 1.208697071e-06 -1.088177979e-06 -4.919808827e-07 -0 0 0 0 0 0 0 0 0 0 0 0 0 -0.06251041084 -0.02312716577 0.08563757661 -0.03295383896 0.1276303109 -0.0946764719 0.1030608728 -0.02550019993 -0.07756067291 0.0673281933 -0.01850623727 -0.04882195603 -0.003708510075 0.03411132104 -0.03040281096 0.01146538456 0.005797797515 -0.01726318207 -0.0006699053532 0.01111428551 -0.01044438016 0.007652943725 -0.002009962988 -0.005642980737 -0.0004988181503 0.003776045562 -0.003277227412 0.002131064227 -0.0005395912934 -0.001591472934 -0.0002399694735 0.00107812515 -0.0008381556767 0.0004388767921 -0.000121633216 -0.0003172435761 -5.066889512e-05 0.0002023292553 -0.0001516603602 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.01463443893 0.0502859929 5.315895081e-05 0.006332645988 0.0006261451749 0.001132762731 0.0001182125239 6.904177173e-05 0.0001010741099 3.162416853e-05 3.679821814e-06 7.147348455e-07 9.262068479e-06 -0.009313391119 -0.02485528906 2.158341618e-06 -0.0009642227618 -0.002752518914 0.07418909208 -7.592983434e-05 -0.0002192988358 0.01682223941 -0.0001078732284 -0.0002790327477 0.003401814836 -1.969725446e-05 -7.352308847e-06 0.005644203073 -6.658775869e-06 1.481098257e-05 0.000313481762 -2.012532792e-06 7.210277511e-06 0.0007750485214 2.629829628e-06 -8.184795682e-06 6.597129124e-06 -1.204185994e-06 9.994640053e-07 0.0003122689409 -4.05238327e-07 3.652865445e-08 6.786751343e-07 -1.303286861e-06 2.952998217e-06 4.80736646e-06 -1.169838614e-06 3.186477351e-06 1.376395317e-05 -6.663773466e-07 2.4025461e-06 1.489570409e-05 -5.146699255e-22 -0.0005631257223 -0.01669247861 -0.04613755182 0.01626508487 6.161563175e-19 -8.490090396e-06 -0.005142060373 -0.01336677666 0.03065388695 3.208159376e-19 -2.601810625e-07 -1.103815192e-05 -3.097608686e-05 0.03451093673 6.119403546e-21 -3.774812831e-11 -0.0002830758546 -0.0008602105367 0.0001283005263 -1.140996632e-21 -2.367183435e-07 -4.268285589e-06 -9.777383985e-07 0.006761023897 3.252049308e-21 -6.8364659e-07 -1.612492008e-05 3.081896923e-05 0.0002141657343 1.448133983e-20 -9.918547086e-07 -2.565648968e-05 -1.776462113e-06 0.0006078986526 -6.358655379e-21 -4.959282655e-07 -1.532305696e-05 -4.336478179e-06 0.0003342957791 9.728169875e-23 -2.228367745e-08 -4.002309418e-07 4.816661111e-07 0.0001780711778 1.726480695e-22 -8.446585262e-08 -1.506512155e-06 1.160455761e-05 1.071428823e-05 -2.357856899e-23 1.991555512e-09 -3.123218372e-07 -4.078876345e-06 -1.21309979e-06 3.872293515e-22 -9.18463487e-08 -2.255974777e-06 6.034671105e-06 2.62148383e-05 -4.801437915e-22 -5.222643711e-08 -1.339863123e-06 5.215289271e-06 1.954276747e-06 --0.003549268956 -0.01343658413 -0.0001521978757 -0.001496542925 -0.0003130291189 -0.0002097587224 -6.49330304e-05 -5.265573046e-06 -3.596734947e-05 -2.229258458e-06 -1.655710296e-06 -1.099849986e-06 -2.264328624e-06 -0.02625611128 0.03211320294 0.003063780447 0.004903291854 -0.003682232749 -0.01756345289 0.0001924317751 -0.0001384529431 -0.005697965572 0.0004391819773 -0.000339842748 -0.0004140257883 -6.779946273e-06 7.980037421e-06 -0.001680857268 1.12590218e-05 -8.694108655e-06 -6.689394366e-06 -4.720166369e-06 6.909971635e-06 -0.0002119300653 -7.660029649e-06 -6.315433174e-06 -1.237961572e-05 -4.954443068e-07 -7.960133638e-07 -6.499462137e-05 -4.636178842e-07 -6.185385077e-08 -1.451794079e-06 8.328918145e-07 -1.520070884e-06 5.349167374e-07 -9.861286637e-07 -1.906935634e-06 -4.174253742e-06 -5.575045068e-07 -9.86831296e-07 -9.470422496e-07 -6.139000547e-19 0.002828880622 -0.04641579736 -0.001282046906 0.05600852667 2.041433549e-21 0.0007314810716 0.01984557116 -0.01589400852 -0.005236486429 7.660364617e-21 8.808045082e-06 0.0002536017549 -0.0001931366618 -0.009468612536 -9.030942662e-21 2.225154949e-07 0.001174190644 -0.0008494051089 -0.0003564038288 7.889840287e-23 3.442811834e-05 9.018351715e-06 -3.090440545e-05 -0.001490739516 -1.310674569e-22 4.609909213e-06 -1.002012226e-05 8.682331798e-06 -0.0002109323487 1.850930725e-21 3.659487597e-06 -3.781049624e-05 2.895905309e-05 -6.605743182e-05 -1.75962575e-21 1.226847403e-06 -9.727843585e-06 8.073711052e-06 -0.0001377292668 8.320855081e-09 -6.320367092e-23 -3.491009668e-08 -4.928831568e-07 -1.562019084e-05 -1.374289419e-25 3.508562431e-07 -2.303710515e-06 -4.342307445e-06 -4.529449878e-06 2.430792729e-22 5.141031785e-07 -2.076654126e-06 -4.074920738e-06 5.103558646e-06 2.617659823e-07 -1.215140328e-22 -1.67094328e-06 -4.923886331e-06 -1.818172343e-06 -7.874310707e-23 1.916922473e-07 -1.21138326e-06 -5.785828522e-07 1.476275077e-06 -0 0 0 0 0 0 0 0 0 0 0 0 0 0.08286250691 0.02431037598 0.06871438145 0.04930718395 0.09326492082 0.1255216072 0.1061377676 0.01064733091 0.1028501942 0.06073138578 0.01278119823 0.06474155448 0.02720911517 0.01856972471 0.04031468813 0.02489475137 0.001098999625 0.02289168401 0.01002216348 0.005704391145 0.01384947954 0.007451325099 0.001045456362 0.007482962107 0.00281298841 0.002121681757 0.004345654447 0.002153156807 0.0002431658316 0.002110392238 0.000552027313 0.0007100396512 0.001111378275 0.0003829383684 9.474450534e-05 0.0004206906223 8.459498418e-05 0.0001437766924 0.0002010868071 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.01151542489 0.03956862145 4.182927054e-05 0.004982979502 0.0004926958775 0.0008913388619 9.301808191e-05 5.432701179e-05 7.953235012e-05 2.488416119e-05 2.895547407e-06 5.624045764e-07 7.288058967e-06 0.01044095573 0.03297631033 0.0001606173415 0.001446472844 0.003652617632 0.05815477759 0.0001173327325 0.0002910130741 0.01321743319 8.960512001e-05 0.000370321967 0.002702735249 2.612306591e-05 7.450636785e-06 0.004441884828 8.839061027e-06 2.57761275e-05 0.0002373242255 2.671175919e-06 1.079249771e-05 0.0006061888617 4.643013261e-07 1.085909936e-05 1.26714713e-05 1.598089418e-06 2.20050347e-07 0.0002471462147 5.375848748e-07 1.919689554e-09 8.5178208e-07 1.732231442e-06 4.45895687e-06 2.579457553e-06 1.552409348e-06 1.30742986e-06 1.287012362e-05 8.842413405e-07 1.047868629e-06 1.304197819e-05 -8.150267882e-19 0.0009533201785 0.01896428393 0.06121497228 0.0125521507 -2.38694896e-19 4.931195373e-06 0.004185764753 0.017738704 0.02547954574 -8.785127739e-19 3.110674544e-07 1.42753078e-05 4.111206382e-05 0.02715447401 8.308720925e-21 6.693630906e-11 0.0004446572613 0.001141388293 5.175547801e-05 -2.815204918e-20 2.896624921e-07 5.66493273e-06 2.653219922e-06 0.005319222649 1.06752313e-22 1.23469439e-06 2.140210977e-05 1.142126714e-05 0.0001911500099 -6.051568428e-22 9.22882494e-07 3.405631521e-05 2.500444833e-05 0.000468632467 -9.354248476e-21 8.923175134e-07 2.033674126e-05 1.365401367e-06 0.0002679810755 -6.864987296e-21 3.61685241e-08 5.311357506e-07 1.40319171e-07 0.0001405914279 6.532736148e-22 5.585209319e-08 1.999539627e-06 1.227245632e-05 6.248313256e-06 5.918376486e-24 1.724997877e-09 3.122744061e-07 5.411018301e-06 1.415448965e-06 1.095251852e-21 1.989853278e-07 2.994061638e-06 2.564169571e-06 2.415994883e-05 1.949160908e-22 1.319703087e-07 1.777963699e-06 3.027655855e-06 3.402615008e-06 -0.00553605759 0.02095803515 0.0002373942959 0.002334268809 0.0004882546943 0.0003271762106 0.0001012808553 8.213104159e-06 5.610093811e-05 3.477139478e-06 2.582533942e-06 1.715517459e-06 3.531841012e-06 0.03483145319 0.02253296123 0.003063275652 0.003468356907 0.004882815777 0.02756244955 0.0001539254955 0.0001835979054 0.008857709221 0.0002891550959 0.0004506771526 0.0007129915528 8.993340896e-06 4.250060433e-06 0.002625833686 1.60314874e-05 1.152525194e-05 3.496369595e-06 6.261644115e-06 1.658833738e-05 0.0003176578563 1.01594509e-05 1.337741548e-06 5.129237847e-05 6.572109132e-07 2.20383207e-07 0.0001039161773 6.150600883e-07 2.836013573e-06 9.454592508e-07 2.430401289e-06 2.015296627e-06 9.633593424e-08 1.307998808e-06 7.127991709e-07 1.179406541e-05 7.39491486e-07 3.820896297e-07 4.342680978e-06 1.51915067e-19 0.002099748074 0.06156955733 7.114789054e-05 0.05029811769 -5.01371443e-19 0.0005299594019 0.01318363225 0.02107802791 0.01106375401 6.405927176e-20 7.058923414e-06 0.0001891960434 0.0002561189377 0.01475511786 1.173631073e-20 1.711878633e-07 0.0009584736151 0.001126274353 0.0003682274248 1.042665724e-20 2.7652106e-05 8.673773527e-06 4.097130545e-05 0.002315825677 -1.005962426e-21 3.702756937e-06 1.329608283e-05 5.70924401e-06 0.0003295600291 3.198563391e-22 2.946557407e-06 5.015820037e-05 0.0001264260713 3.861267461e-05 2.406444603e-22 9.875766575e-07 1.29029779e-05 2.779852115e-06 0.0002263576027 6.573952743e-09 2.731338121e-22 4.630728464e-08 4.275873786e-07 2.47925857e-05 3.030419678e-22 2.784547616e-07 3.05584326e-06 1.806598778e-05 2.003963724e-06 1.400444886e-22 4.120885495e-07 1.368540015e-06 5.405814955e-06 5.188382974e-06 2.103438461e-07 -1.750496937e-22 2.21632634e-06 2.994934864e-06 1.202228621e-05 -2.063555225e-23 1.473351266e-07 1.60672927e-06 3.824359347e-07 1.483102828e-06 -0 0 0 0 0 0 0 0 0 0 0 0 0 1.792468198e-05 0.0015942032 -0.1456492277 -0.002288970907 -0.04519188989 1.349672706e-05 0.01039062405 -0.0008488810399 -1.833908765e-06 0.01281429128 -0.0007629577502 -2.261845447e-06 -0.0009122039538 -0.002265202916 6.573132114e-07 -6.462997956e-05 -1.306935015e-05 1.547562452e-08 -0.0003155601183 -0.000622467995 1.928670741e-07 0.0009669418372 -7.371168797e-05 -1.703585845e-07 -9.854256778e-05 -0.0002801178774 7.871574193e-08 0.0002283587626 -1.837131481e-05 -4.027933956e-08 -2.384812022e-05 -0.0001639726644 4.130690869e-08 0.000109272375 -5.321956378e-06 -1.92916415e-08 -3.927606724e-06 -5.36331914e-05 1.42199673e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.07546254497 -0.1102916257 -0.00234947156 0.01401379174 0.002871750125 -0.002111406963 -0.0005266747028 0.0002176780091 0.0002315114256 -6.430989108e-05 -2.170284735e-05 -3.916024248e-06 1.675001957e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.02292890543 -0.02156692623 0.0004740621088 7.361676329e-05 -0.0001419997048 -0.0002551409173 0.0001553787796 3.72847108e-05 -7.802805272e-05 -1.579718001e-05 1.229415824e-05 -9.719602051e-06 -1.29483986e-05 1.933695861e-06 -0.03199064087 -0.02299221789 0.005912559672 -1.447272914e-06 -0.01738794072 9.397260481e-05 -1.564861596e-08 0.0007387482168 -3.585040966e-06 9.420694424e-10 5.436834395e-06 1.247478056e-09 -2.065379919e-05 -0.0005520810976 3.049198037e-05 -4.763408986e-09 -3.993073118e-05 1.606572917e-09 -5.581744661e-05 0.0003202683844 1.293499994e-09 4.343975792e-06 -0.0001240359772 1.831224303e-10 3.841493541e-06 -0.0001108992143 2.350780239e-10 -1.286536979e-06 1.161940272e-05 2.387046427e-06 -5.316445846e-11 -3.410339354e-06 2.467585767e-10 2.105845968e-06 -3.536965701e-05 1.560307562e-10 7.77950799e-07 -2.080929823e-05 5.957449202e-18 0.004449681879 9.875566195e-08 0.0001906725663 -0.09897492918 1.829384505e-19 0.001163767271 0.008173532278 -2.023388919e-06 -0.002208672077 3.258315282e-23 1.441241402e-05 0.000103430604 -2.303572953e-08 -0.0003443707994 -3.622950109e-22 3.546892966e-07 5.564768243e-05 -8.856789814e-09 7.598111631e-06 2.957954202e-21 5.613041285e-05 4.007349356e-05 -3.375795271e-08 -0.0002635377927 4.069884536e-21 7.519930189e-06 1.577459173e-08 5.364558862e-05 0.0001286262247 -1.699486734e-21 5.974666933e-06 5.496789673e-09 -0.0001421887402 9.710076482e-05 -4.997510958e-22 2.003154677e-06 1.839710283e-09 -2.388494044e-05 -8.647148753e-05 1.340554525e-08 -6.571428796e-22 1.451967495e-11 6.909246837e-06 -2.592891019e-05 7.507174652e-22 5.713850495e-07 6.845034665e-10 -1.519996164e-05 1.399723361e-05 -6.448659927e-23 8.393777059e-07 -4.576572648e-07 8.775775864e-10 -2.393998219e-05 4.258067386e-07 6.459367263e-22 3.864907411e-10 8.138608507e-06 -3.005827211e-05 -3.647123687e-22 3.050299829e-07 2.42261127e-10 -2.173739453e-07 -1.107271747e-05 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.2731656004 0.01615280688 -0.02892567571 -0.00681892694 0.00311081643 -0.0001242414384 9.142358452e-06 0.0001499983368 -0.0001504484689 9.162783375e-05 -7.145343949e-05 6.119624794e-05 -3.277313972e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.2695462447 0.02324389201 -0.03424272561 -0.004333899483 0.002291534039 4.332848919e-05 0.0001066902242 -2.294053818e-05 1.892984583e-05 -3.739677434e-05 2.322309841e-05 -2.861059199e-06 6.880804962e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.1208306479 -0.009094799051 -0.002843835608 4.385357727e-05 0.000101455379 -2.497568383e-05 2.882303202e-05 4.591201175e-06 1.25522063e-05 2.574477926e-05 9.479225358e-06 3.178405029e-06 8.85371498e-06 1.738623967e-10 -0.03001102387 0.1997440824 -0.0001221715915 -1.474070407e-10 -0.02386352647 -3.161081699e-06 8.892664108e-13 -0.0003782332269 5.069147332e-07 1.658455884e-13 1.114472307e-05 -1.500171579e-14 -4.573358943e-07 5.007857078e-05 2.271380542e-06 1.920933973e-13 -1.440347086e-05 3.522406478e-14 -3.493952407e-06 4.251167502e-05 1.184301284e-14 8.749326325e-07 -6.649639108e-06 -7.916369681e-15 -3.478571729e-06 4.038721491e-05 5.133587511e-14 -1.83560613e-06 3.443235877e-05 6.48529231e-07 4.700311325e-15 3.713046695e-06 -8.486490937e-15 -1.351843834e-06 9.719683219e-06 -1.014688348e-14 -1.550010209e-06 1.674276403e-05 5.996596032e-19 -0.000377473387 -9.424701341e-12 -0.008719428334 0.06301289739 4.250044289e-20 4.987671827e-06 -0.00143187811 -4.141268856e-10 -0.005892254741 5.222059328e-22 1.859842766e-07 4.229671091e-07 -6.138141093e-13 -6.644558929e-05 -3.97684739e-22 -2.859798928e-08 -8.511178364e-06 1.891527865e-12 -1.727510638e-05 -5.941036258e-22 3.662671398e-07 6.488075772e-07 -3.437640422e-13 -2.522670586e-05 4.114243255e-24 5.164395866e-08 2.409182204e-13 -3.633301909e-07 1.293020884e-05 -1.435715226e-23 -2.328816091e-08 -6.937242028e-14 4.52940866e-06 -8.289612776e-06 -2.040097e-23 -3.139926191e-09 -5.790193087e-15 -4.039157833e-07 1.915478012e-06 -8.160659869e-10 1.276371546e-21 -1.266989979e-15 -9.077704595e-06 2.704664962e-05 -3.222082569e-22 1.483552381e-08 5.416556904e-14 -5.200987241e-06 1.074630952e-05 2.863870726e-23 1.08671901e-08 -1.266292565e-07 -3.289808145e-14 -9.136562887e-07 -1.278080324e-08 -2.06445073e-22 -2.091689011e-14 -5.329587217e-06 9.978394523e-06 3.139093379e-22 -2.480045938e-08 -3.214682483e-14 6.229744764e-07 4.252964659e-06 -0 0 0 0 0 0 0 0 0 0 0 0 0 1.333601076e-05 -0.003680518671 0.01171062439 0.004572524643 -0.001931974151 1.016225988e-05 -0.003695330387 0.003163975381 -1.380679875e-06 -0.002791090092 0.002119938484 -1.702859645e-06 0.001336173644 -0.001159269776 4.948719016e-07 5.602991138e-05 -5.170347486e-05 1.165106662e-08 0.0004402708215 -0.0003880446353 1.452039402e-07 -0.0002896023254 0.0002398595806 -1.282564785e-07 0.0001483925852 -0.0001273107664 5.926285014e-08 -7.692981325e-05 6.523609042e-05 -3.032478854e-08 4.206025406e-05 -3.160521265e-05 3.109924057e-08 -1.970181647e-05 1.391253042e-05 -1.452397306e-08 7.57314583e-06 -4.370287337e-06 1.070626807e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.004214043356 0.006158998385 0.0001312011809 -0.0007825700286 -0.000160366703 0.0001179069761 2.941101487e-05 -1.215575976e-05 -1.292825713e-05 3.591247411e-06 1.211948785e-06 2.186819431e-07 -9.353687809e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.04520166927 0.04251668573 -0.0009345582901 -0.0001451268835 0.0002799358963 0.0005029806326 -0.0003063111856 -7.350246924e-05 0.0001538232273 3.114230238e-05 -2.423650254e-05 1.916106456e-05 2.552626129e-05 1.454931824e-06 -0.003157854218 0.007512458075 0.0005195851016 -1.088795504e-06 0.03421108654 -7.146290097e-06 -1.177097021e-08 -0.001457959397 -6.924319911e-07 7.086881675e-10 -1.038967993e-05 9.381966906e-10 -1.140640338e-05 0.001087813846 -1.904659493e-05 -3.587190187e-09 0.0001295991408 1.20807976e-09 5.088937078e-05 -0.0006397323042 9.728329649e-10 -2.632356776e-05 0.0001948452291 1.377274291e-10 -1.900743854e-05 0.0002168844333 1.768045232e-10 1.738073434e-06 -3.331910854e-05 -2.35095165e-06 -4.003305574e-11 -1.444095283e-05 1.856004633e-10 -8.44366819e-06 5.955031546e-05 1.173764161e-10 -3.04711323e-06 3.220324779e-05 2.363785767e-19 9.495322441e-05 7.430118957e-08 -0.00369666856 0.02112509155 -1.038696295e-20 6.333326623e-05 0.001467685891 -1.522189737e-06 0.003983623004 1.422033013e-20 -1.128629076e-06 1.486140405e-06 -1.732577337e-08 0.0006790959101 2.279063062e-22 -9.281519799e-09 -5.628658706e-06 -6.662351652e-09 -1.747322974e-05 3.031551677e-20 -4.549907229e-06 -1.145926933e-05 -2.539534721e-08 0.0005202223217 3.495676442e-21 -6.099495322e-07 1.186146372e-08 1.038789438e-05 -0.0002534353773 -2.612635299e-21 -5.02811008e-07 4.132508469e-09 0.000156366619 -0.0002955184562 3.675784827e-21 -1.679232679e-07 1.383585823e-09 -3.776354522e-05 0.0001676407959 -8.088281908e-10 4.132021739e-22 1.092177589e-11 -1.716212179e-05 5.082791124e-05 1.318194151e-21 -3.774756953e-08 5.146970487e-10 2.38628948e-05 -5.030265065e-05 3.777596088e-23 -6.59283491e-08 1.303346218e-06 6.607505923e-10 8.223005948e-06 -3.476269999e-08 1.029205093e-22 2.906841531e-10 -2.422359532e-05 4.450385645e-05 8.675494531e-23 -7.6060703e-09 1.822462067e-10 6.185128518e-07 3.673086727e-06 -0 0 0 0 0 0 0 0 0 0 0 0 0 -1.352214984e-05 -0.001516611742 -0.1815201801 0.001529805043 -0.06184377689 -1.018009989e-05 0.0100894037 0.002033057526 1.382974519e-06 0.01420621429 0.001104706844 1.705669872e-06 0.0001243303037 -0.00416102366 -4.957044252e-07 -2.976561439e-05 -6.894765397e-05 -1.167054917e-08 2.109279228e-05 -0.001212800252 -1.454478514e-07 0.0009931054366 0.0001417158764 1.284692074e-07 1.74742353e-05 -0.0004985374759 -5.936260932e-08 0.0002260156754 4.076642451e-05 3.037514902e-08 1.036691613e-05 -0.0002489763116 -3.115196758e-08 0.0001252345373 6.832339961e-06 1.454786252e-08 2.35247391e-06 -7.547512391e-05 -1.072474815e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.09590197642 -0.1401646988 -0.002985838421 0.01780950172 0.003649578912 -0.002683292763 -0.0006693273457 0.0002766372549 0.0002942175258 -8.172856693e-05 -2.758117892e-05 -4.976700232e-06 2.128685141e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.01470014553 0.01382695546 -0.0003039299897 -4.71970691e-05 9.103863821e-05 0.000163575563 -9.961621062e-05 -2.390391798e-05 5.002522838e-05 1.012786441e-05 -7.88201233e-06 6.23141672e-06 8.301457933e-06 -1.457628927e-06 -0.04559196335 -0.02299600676 0.008358714646 1.091418551e-06 0.01108001222 0.0001174809611 1.180077153e-08 -0.0004752201501 -5.445124097e-06 -7.103876161e-10 -3.157105631e-06 -9.404551985e-10 -3.878017573e-05 0.0003533999622 2.141472362e-05 3.593291973e-09 7.639707444e-05 -1.211070338e-09 -2.325109286e-05 -0.0002136717171 -9.75273999e-10 -2.050776465e-05 2.993656717e-05 -1.380484768e-10 -1.387528677e-05 6.936217859e-05 -1.771963067e-10 2.805955058e-08 -1.784210166e-05 8.180342229e-07 4.010017397e-11 -1.893631504e-05 -1.860366417e-10 -5.633722485e-06 1.251832324e-05 -1.176319828e-10 -2.00923065e-06 4.53804567e-06 4.06089021e-18 0.005994823377 -7.444950055e-08 -0.003435817589 -0.1102116782 -2.294329805e-19 0.001606299893 0.01230377284 1.525748086e-06 0.001045366821 -2.55661107e-22 1.798364778e-05 0.0001386402286 1.737100717e-08 0.0002209886563 -2.947798266e-21 4.610365646e-07 6.817192153e-05 6.679547034e-09 -7.354140116e-06 1.229467013e-20 6.988489398e-05 4.1665471e-05 2.546341754e-08 0.0001696441168 3.126851291e-21 9.362266021e-06 -1.188796278e-08 8.158151922e-05 -8.232622071e-05 1.861227895e-21 7.420259143e-06 -4.143616472e-09 -3.256963719e-05 -0.000166117142 1.83836406e-21 2.488480358e-06 -1.386998724e-09 -6.937063544e-05 5.261433427e-05 1.696781277e-08 5.134425123e-22 -1.09460803e-11 -7.964340301e-06 1.633611477e-05 5.23944542e-22 7.199518179e-07 -5.160270666e-10 3.653434698e-06 -3.163718351e-05 -4.470232416e-22 1.047169952e-06 6.944596701e-07 -6.615208134e-10 -2.354858994e-05 5.29902449e-07 -5.921617279e-22 -2.91384935e-10 -1.338045233e-05 4.545817498e-06 2.27954197e-22 3.968631531e-07 -1.826512278e-10 3.288624992e-07 -1.102174207e-05 -0 0 0 0 0 0 0 0 0 0 0 0 0 1.792468198e-05 0.0015942032 -0.1456492277 -0.002288970907 -0.04519188989 1.349672706e-05 0.01039062405 -0.0008488810399 -1.833908765e-06 0.01281429128 -0.0007629577502 -2.261845447e-06 -0.0009122039538 -0.002265202916 6.573132114e-07 -6.462997956e-05 -1.306935015e-05 1.547562452e-08 -0.0003155601183 -0.000622467995 1.928670741e-07 0.0009669418372 -7.371168797e-05 -1.703585845e-07 -9.854256778e-05 -0.0002801178774 7.871574193e-08 0.0002283587626 -1.837131481e-05 -4.027933956e-08 -2.384812022e-05 -0.0001639726644 4.130690869e-08 0.000109272375 -5.321956378e-06 -1.92916415e-08 -3.927606724e-06 -5.36331914e-05 1.42199673e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.07546254497 -0.1102916257 -0.00234947156 0.01401379174 0.002871750125 -0.002111406963 -0.0005266747028 0.0002176780091 0.0002315114256 -6.430989108e-05 -2.170284735e-05 -3.916024248e-06 1.675001957e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.02292890543 -0.02156692623 0.0004740621088 7.361676329e-05 -0.0001419997048 -0.0002551409173 0.0001553787796 3.72847108e-05 -7.802805272e-05 -1.579718001e-05 1.229415824e-05 -9.719602051e-06 -1.29483986e-05 1.933695861e-06 -0.03199064087 -0.02299221789 0.005912559672 -1.447272914e-06 -0.01738794072 9.397260481e-05 -1.564861596e-08 0.0007387482168 -3.585040966e-06 9.420694424e-10 5.436834395e-06 1.247478056e-09 -2.065379919e-05 -0.0005520810976 3.049198037e-05 -4.763408986e-09 -3.993073118e-05 1.606572917e-09 -5.581744661e-05 0.0003202683844 1.293499994e-09 4.343975792e-06 -0.0001240359772 1.831224303e-10 3.841493541e-06 -0.0001108992143 2.350780239e-10 -1.286536979e-06 1.161940272e-05 2.387046427e-06 -5.316445846e-11 -3.410339354e-06 2.467585767e-10 2.105845968e-06 -3.536965701e-05 1.560307562e-10 7.77950799e-07 -2.080929823e-05 4.222725726e-18 0.004449681879 9.875566195e-08 0.0001906725663 -0.09897492918 8.129449681e-20 0.001163767271 0.008173532278 -2.023388919e-06 -0.002208672077 -5.049614531e-21 1.441241402e-05 0.000103430604 -2.303572953e-08 -0.0003443707994 -4.681741293e-22 3.546892966e-07 5.564768243e-05 -8.856789814e-09 7.598111631e-06 -2.124243482e-21 5.613041285e-05 4.007349356e-05 -3.375795271e-08 -0.0002635377927 2.799335115e-21 7.519930189e-06 1.577459173e-08 5.364558862e-05 0.0001286262247 -7.465746681e-22 5.974666933e-06 5.496789673e-09 -0.0001421887402 9.710076482e-05 -3.676124648e-21 2.003154677e-06 1.839710283e-09 -2.388494044e-05 -8.647148753e-05 1.340554525e-08 -7.63021998e-22 1.451967495e-11 6.909246837e-06 -2.592891019e-05 1.041885041e-21 5.713850495e-07 6.845034665e-10 -1.519996164e-05 1.399723361e-05 -1.703657177e-22 8.393777059e-07 -4.576572648e-07 8.775775864e-10 -2.393998219e-05 4.258067386e-07 5.400576079e-22 3.864907411e-10 8.138608507e-06 -3.005827211e-05 -3.117728095e-22 3.050299829e-07 2.42261127e-10 -2.173739453e-07 -1.107271747e-05 -0.2370734683 0.0006670533688 0.004066218674 0.0006820777545 0.0005956356081 8.044155541e-06 9.655870575e-06 6.831873609e-05 4.382157398e-05 1.591626787e-05 1.652759785e-05 1.94939596e-05 1.491606603e-05 3.877437901e-09 0.000104543173 0.3087228188 0.0001062601308 0.02189791074 1.451237322e-09 0.00101721631 6.767884142e-05 3.270019455e-11 0.002703808895 4.554381508e-05 7.902103779e-11 3.058225334e-05 0.0002763177339 1.071720203e-11 1.677877475e-07 1.554212663e-07 1.046209417e-14 9.935797639e-06 6.792423503e-05 2.68585604e-12 0.0001254778854 5.197168565e-06 3.878416985e-12 3.452071693e-06 3.698293816e-05 1.425830819e-12 2.421919495e-05 1.387963126e-06 7.687789809e-13 1.030262135e-06 3.786694817e-05 1.535265484e-12 3.118113231e-05 2.989431376e-07 8.846582553e-13 1.823523549e-07 2.000685348e-05 1.00557303e-12 2.687257001e-18 -5.738915916e-20 6.025691442e-19 0.03787629397 0.1290043371 -9.127447334e-20 -7.37985618e-20 1.337300843e-18 0.01166407464 0.02777002614 2.446560727e-23 -3.231297238e-21 -3.488840341e-21 0.0001520492622 9.479976155e-05 1.363245244e-19 -7.767778458e-21 -1.111393635e-20 0.0005765989928 0.002012299337 3.702999509e-24 6.195882383e-24 -1.878566523e-25 2.968303438e-07 9.832055907e-08 -3.600530667e-23 2.380670185e-23 3.064886668e-23 3.860134312e-07 9.979758691e-06 -1.46135199e-21 3.824500158e-22 1.652771929e-21 3.578750522e-05 7.498366886e-05 -1.137572303e-21 -4.622359593e-25 -6.869957845e-23 1.02162398e-05 6.854234909e-05 -6.055528137e-23 5.601287563e-23 -1.561542852e-23 9.779609685e-07 8.699365442e-06 7.958933798e-23 6.975462614e-24 -3.148177266e-23 4.056902711e-06 8.419618364e-06 -1.54458219e-23 4.563732055e-24 -1.70998134e-21 5.202177913e-06 1.997650936e-05 5.923413577e-23 -4.412511968e-23 2.27999328e-22 2.701400034e-06 1.519803296e-05 -1.249839732e-23 3.597664158e-23 1.315549188e-22 2.43172997e-06 8.192639034e-06 -0.4945189387 0.307421443 0.1319654046 0.03941143222 0.01673841645 0.005001509027 0.002982067969 0.0008721944031 0.0006739086684 0.0001662005827 0.000162668234 2.726728507e-05 3.849627959e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.09496554104 0.02219350733 0.0009466734748 2.321681126e-06 4.129794632e-05 0.0001989658342 0.0002383724452 0.0001692599573 0.0001085254047 7.176902103e-05 5.852636604e-05 5.506831979e-05 4.747128362e-05 1.073506554e-10 0.04541795873 0.1725741146 0.01007922853 4.289735641e-10 0.01096928929 5.737094057e-05 1.33377982e-12 6.161287463e-05 4.444852922e-08 1.969247443e-15 4.145795013e-08 1.73039299e-13 0.0001003702013 0.0001160749593 5.79959204e-05 1.968726171e-12 0.000456033966 4.122042996e-13 0.0001878179395 0.0003229003659 1.646882683e-13 1.410595769e-05 0.0002999456081 5.102445037e-14 6.696096688e-05 0.0001183515028 8.984760511e-14 5.83628165e-07 0.0001427988773 2.344464954e-06 1.402502874e-15 0.0001207276869 4.655187561e-14 6.221369806e-06 0.0001060713667 3.292207202e-14 1.583941041e-06 9.971418463e-05 -3.318599178e-18 0.009429544937 1.584009502e-13 0.0005109923468 0.194759507 1.954082079e-19 0.002555581156 0.005067391794 1.942355678e-10 0.0004409201741 -5.079331171e-22 2.942625463e-05 5.654394068e-05 2.071868797e-12 8.037295849e-06 -6.200175494e-23 7.348914505e-07 3.230829218e-06 6.964797296e-14 1.567816421e-07 -2.968571044e-22 0.000113937913 0.0001851425888 2.781457311e-11 2.999024015e-05 -2.105133234e-21 1.52722285e-05 1.871511687e-11 0.0005040683449 5.02024039e-05 -8.120338301e-21 1.211469523e-05 6.023879749e-13 0.0001599166819 0.0002441829949 -3.054780618e-21 4.063106018e-06 2.623064167e-13 0.000205223284 3.30332097e-05 2.733646717e-08 1.888872325e-21 4.552652556e-15 0.000111644296 2.711731612e-05 -4.007654468e-21 1.172473665e-06 1.53327562e-13 1.278860789e-05 9.776751272e-05 6.363550309e-22 1.709717327e-06 1.530464362e-07 1.42465555e-13 0.0001104626914 8.6197615e-07 2.086056763e-21 6.739760702e-14 2.211632354e-05 7.515207224e-05 1.520267997e-21 6.315078598e-07 3.652790537e-14 1.2355385e-07 8.266795114e-05 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.2475006931 0.001885655396 0.003936900835 0.0009741204454 0.0005004075617 8.132634863e-07 1.510083094e-05 7.282759888e-05 3.408159058e-05 1.381866281e-05 1.778426622e-05 1.795710592e-05 1.276438578e-05 7.833976983e-06 0.3041454174 0.002926686712 0.02849839687 2.755679327e-06 1.477200312e-09 5.595452752e-05 0.000471312833 2.30767043e-11 0.0001328145617 0.002968612862 1.385122764e-10 0.0001424591791 8.663764015e-06 6.653302283e-12 1.353880343e-06 1.063332768e-06 1.058585677e-13 0.0001028139335 8.885062031e-06 4.930568138e-12 9.226573536e-06 0.0001114531879 5.306720441e-12 2.485545863e-05 1.209685944e-06 1.149711835e-12 2.362894913e-06 2.235255113e-05 1.084804457e-12 4.060026829e-05 2.884757044e-07 1.846273792e-12 8.663751496e-07 2.708317392e-05 1.260179665e-12 1.705402686e-05 4.258384822e-09 8.003161715e-13 3.870924633e-18 1.372399809e-19 2.759266841e-19 0.04483170943 0.1133052738 -1.321800191e-18 -1.258438732e-18 -9.331195032e-20 0.009624007898 0.03498925778 6.881697341e-21 3.110445962e-20 -4.218051546e-21 1.920663012e-05 0.0007802029551 1.31164502e-19 9.096641998e-21 2.717059248e-20 0.0006986693326 0.001726467409 6.936881002e-23 1.342778177e-22 2.899718079e-22 1.653240914e-09 1.835110102e-05 1.18117536e-24 8.68741555e-23 -6.485646061e-23 2.342751068e-06 1.709453932e-06 1.293073351e-22 -2.100935983e-21 7.157240037e-21 2.57422105e-05 0.0001083718738 -8.572247763e-22 -2.295633179e-21 -2.123210351e-22 2.225083718e-05 3.271647394e-05 -8.27899951e-24 4.61730562e-23 6.713425529e-23 2.685905316e-06 3.292917407e-06 -4.193674986e-23 -3.540292786e-23 2.490545308e-23 2.887868495e-06 1.229628472e-05 1.833177847e-22 -4.65908724e-22 -8.034510315e-22 6.902245323e-06 1.565229019e-05 4.150039347e-23 1.851908045e-22 -2.553987219e-22 5.060621495e-06 8.434035548e-06 -5.466895185e-23 -9.94289375e-23 -1.50214522e-22 2.848171096e-06 7.27171318e-06 -0.09496554104 0.02219350733 0.0009466734748 2.321681126e-06 4.129794632e-05 0.0001989658342 0.0002383724452 0.0001692599573 0.0001085254047 7.176902103e-05 5.852636604e-05 5.506831979e-05 4.747128362e-05 0.08203099855 8.306610194e-08 0.1359609918 0.009081386798 5.657391906e-09 0.01196712578 5.443671855e-05 2.267692166e-12 6.454709571e-05 4.074384328e-08 2.322477595e-15 4.516263572e-08 1.806939314e-09 9.637884248e-05 0.0001200645114 3.505088244e-13 0.0001259530711 0.0003880768169 2.442170179e-14 0.0001806923474 0.0003300259584 4.99498452e-09 5.220474437e-13 0.0003140465704 2.043748954e-14 6.916995033e-05 0.0001161425193 3.068538768e-15 6.841874488e-06 0.0001365406311 3.090610852e-13 1.118320353e-06 0.0001219538312 2.402303536e-14 6.135362753e-06 0.0001061573737 1.022791965e-14 9.682037194e-06 9.16160885e-05 3.68494155e-19 0.008475895408 0.1732522102 1.124213962e-07 0.02297182624 3.162356928e-20 0.0009869192534 0.006480627332 3.316210437e-10 0.000596346401 -7.543441011e-22 6.030566529e-06 7.772448169e-05 1.30481064e-11 1.025243196e-05 -1.238784211e-24 6.172455307e-07 3.424236285e-06 8.919401295e-14 8.102047562e-08 -4.395296128e-21 1.7510264e-07 5.995061664e-14 0.0002921369044 3.675876272e-05 2.26305628e-21 1.275281687e-06 4.63766704e-13 0.0003051743252 0.0002630933887 2.015335135e-21 3.588497215e-06 5.404957302e-12 0.0003430215163 6.96043537e-05 2.416580836e-21 2.144710129e-06 2.269021791e-12 0.0002012220718 3.895281572e-05 -2.236334575e-21 3.844113255e-09 1.769841843e-15 0.0001178597097 2.092539475e-05 6.439958555e-22 6.145570316e-08 3.010474493e-14 2.166322872e-05 9.000390998e-05 6.105276282e-22 1.298476432e-12 5.281220211e-07 2.249656267e-13 0.0001117973318 2.014791259e-21 1.467994913e-07 7.105028029e-14 4.480358687e-05 5.317998557e-05 -9.635311147e-22 6.039698986e-08 2.877678924e-14 3.246588878e-06 8.011602699e-05 -0.4945189387 0.307421443 0.1319654046 0.03941143222 0.01673841645 0.005001509027 0.002982067969 0.0008721944031 0.0006739086684 0.0001662005827 0.000162668234 2.726728507e-05 3.849627959e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 diff --git a/tests/09_DeePKS/101_PW_ORB_deepks_d/INPUT b/tests/09_DeePKS/101_PW_ORB_deepks_d/INPUT deleted file mode 100644 index 8cd4bf65e4..0000000000 --- a/tests/09_DeePKS/101_PW_ORB_deepks_d/INPUT +++ /dev/null @@ -1,29 +0,0 @@ -INPUT_PARAMETERS -#Parameters (1.General) -suffix autotest -calculation gen_bessel -pseudo_dir ../../PP_ORB -nbands 6 -symmetry 0 - -#Parameters (2.Iteration) -ecutwfc 20 -scf_thr 1e-8 -scf_nmax 50 - -#Parameters (3.Basis) -basis_type pw -gamma_only 1 - -#Parameters (4.Smearing) -smearing_method gaussian -smearing_sigma 0.1 - -#Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.4 - -#Parameters (6.File) -deepks_out_labels 1 -bessel_descriptor_lmax 2 -bessel_descriptor_rcut 2 diff --git a/tests/09_DeePKS/101_PW_ORB_deepks_p/INPUT b/tests/09_DeePKS/101_PW_ORB_deepks_p/INPUT deleted file mode 100644 index 93595ffd33..0000000000 --- a/tests/09_DeePKS/101_PW_ORB_deepks_p/INPUT +++ /dev/null @@ -1,30 +0,0 @@ -INPUT_PARAMETERS -#Parameters (1.General) -suffix autotest -calculation gen_bessel -pseudo_dir ../../PP_ORB - -nbands 6 -symmetry 0 - -#Parameters (2.Iteration) -ecutwfc 20 -scf_thr 1e-8 -scf_nmax 50 - -#Parameters (3.Basis) -basis_type pw -gamma_only 1 - -#Parameters (4.Smearing) -smearing_method gaussian -smearing_sigma 0.1 - -#Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.4 - -#Parameters (6.File) -deepks_out_labels 1 -bessel_descriptor_lmax 1 -bessel_descriptor_rcut 2.0 diff --git a/tests/09_DeePKS/101_PW_ORB_deepks_s/INPUT b/tests/09_DeePKS/101_PW_ORB_deepks_s/INPUT deleted file mode 100644 index 9f8840ad7b..0000000000 --- a/tests/09_DeePKS/101_PW_ORB_deepks_s/INPUT +++ /dev/null @@ -1,30 +0,0 @@ -INPUT_PARAMETERS -#Parameters (1.General) -suffix autotest -calculation gen_bessel -pseudo_dir ../../PP_ORB - -nbands 6 -symmetry 0 - -#Parameters (2.Iteration) -ecutwfc 20 -scf_thr 1e-8 -scf_nmax 50 - -#Parameters (3.Basis) -basis_type pw -gamma_only 1 - -#Parameters (4.Smearing) -smearing_method gaussian -smearing_sigma 0.1 - -#Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.4 - -#Parameters (6.File) -deepks_out_labels 1 -bessel_descriptor_lmax 0 -bessel_descriptor_rcut 2.0 diff --git a/tests/09_DeePKS/102_NO_GO_deepks_md/INPUT b/tests/09_DeePKS/102_NO_GO_deepks_md/INPUT deleted file mode 100644 index 76cb63f2e1..0000000000 --- a/tests/09_DeePKS/102_NO_GO_deepks_md/INPUT +++ /dev/null @@ -1,42 +0,0 @@ -INPUT_PARAMETERS -#Parameters (1.General) -suffix autotest -calculation md - -nbands 6 -symmetry 0 -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB - -#Parameters (2.Iteration) -ecutwfc 50 -scf_thr 1e-6 -scf_nmax 50 - -#Parameters (3.Basis) -basis_type lcao -gamma_only 1 -mixing_restart 1e-3 -mixing_dmr 1 - -#Parameters (4.Smearing) -smearing_method gaussian -smearing_sigma 0.02 - -#Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.4 - -#Parameters (6.File) -deepks_out_labels 0 -deepks_scf 1 -deepks_model ../Model_ProjOrb/model_lda_pbe_18.ptg -cal_force 1 -cal_stress 1 - -md_type nvt -md_nstep 1 -md_dt 1 -md_tfirst 300 -md_tfreq 0.025 -md_tchain 1 diff --git a/tests/09_DeePKS/102_NO_GO_deepks_nscf/INPUT b/tests/09_DeePKS/102_NO_GO_deepks_nscf/INPUT deleted file mode 100644 index e2aae04685..0000000000 --- a/tests/09_DeePKS/102_NO_GO_deepks_nscf/INPUT +++ /dev/null @@ -1,37 +0,0 @@ -INPUT_PARAMETERS -#Parameters (1.General) -suffix autotest -calculation nscf -dft_functional pbe - -nbands 6 -symmetry 0 -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB -read_file_dir ./ - -#Parameters (2.Iteration) -ecutwfc 20 -scf_thr 1e-7 -scf_nmax 50 - -#Parameters (3.Basis) -basis_type lcao -gamma_only 1 - -#Parameters (4.Smearing) -smearing_method gaussian -smearing_sigma 0.02 - -#Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.4 - -cal_force 1 -cal_stress 1 -deepks_scf 1 -deepks_out_labels 0 -deepks_model ../Model_ProjOrb/model_lda_pbe_18.ptg - -init_chg file -out_dos 1 diff --git a/tests/09_DeePKS/102_NO_GO_deepks_relax/INPUT b/tests/09_DeePKS/102_NO_GO_deepks_relax/INPUT deleted file mode 100644 index c111a61dc5..0000000000 --- a/tests/09_DeePKS/102_NO_GO_deepks_relax/INPUT +++ /dev/null @@ -1,35 +0,0 @@ -INPUT_PARAMETERS -#Parameters (1.General) -suffix autotest -calculation relax -relax_method bfgs -relax_nmax 10 -dft_functional pbe - -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB - -#Parameters (2.Iteration) -ecutwfc 20 -scf_thr 5e-6 -scf_nmax 50 - -#Parameters (3.Basis) -basis_type lcao -gamma_only 1 - -#Parameters (4.Smearing) -smearing_method gaussian -smearing_sigma 0.02 - -#Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.8 - -cal_force 1 -force_thr_ev 1e-4 -cal_stress 1 -stress_thr 1e-7 -deepks_scf 1 -deepks_out_labels 0 -deepks_model ../Model_ProjOrb/model_Si_135.ptg diff --git a/tests/09_DeePKS/102_NO_GO_deepks_scf/INPUT b/tests/09_DeePKS/102_NO_GO_deepks_scf/INPUT deleted file mode 100644 index 2c6eb8f995..0000000000 --- a/tests/09_DeePKS/102_NO_GO_deepks_scf/INPUT +++ /dev/null @@ -1,33 +0,0 @@ -INPUT_PARAMETERS -#Parameters (1.General) -suffix autotest -calculation scf -dft_functional lda - -nbands 6 -symmetry 0 -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB - -#Parameters (2.Iteration) -ecutwfc 20 -scf_thr 1e-7 -scf_nmax 50 - -#Parameters (3.Basis) -basis_type lcao -gamma_only 1 - -#Parameters (4.Smearing) -smearing_method gaussian -smearing_sigma 0.02 - -#Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.4 - -cal_force 1 -cal_stress 1 -deepks_scf 1 -deepks_out_labels 0 -deepks_model ../Model_ProjOrb/model_lda_pbe_18.ptg diff --git a/tests/09_DeePKS/102_NO_KP_deepks_md/INPUT b/tests/09_DeePKS/102_NO_KP_deepks_md/INPUT deleted file mode 100644 index 92ddd973d0..0000000000 --- a/tests/09_DeePKS/102_NO_KP_deepks_md/INPUT +++ /dev/null @@ -1,42 +0,0 @@ -INPUT_PARAMETERS -#Parameters (1.General) -suffix autotest -calculation md -dft_functional lda - -nbands 12 -symmetry 0 -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB - -#Parameters (2.Iteration) -ecutwfc 50 -scf_thr 1e-6 -scf_nmax 50 - -#Parameters (3.Basis) -basis_type lcao -gamma_only 0 - -#Parameters (4.Smearing) -smearing_method gaussian -smearing_sigma 0.02 - -#Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.8 -mixing_gg0 0.0 - -#Parameters (6.File) -deepks_out_labels 0 -deepks_scf 1 -cal_force 1 -cal_stress 1 -deepks_model ../Model_ProjOrb/model_lda_pbe_18.ptg - -md_type nvt -md_nstep 1 -md_dt 1 -md_tfirst 300 -md_tfreq 0.025 -md_tchain 1 \ No newline at end of file diff --git a/tests/09_DeePKS/102_NO_KP_deepks_nscf/INPUT b/tests/09_DeePKS/102_NO_KP_deepks_nscf/INPUT deleted file mode 100644 index e5490d590f..0000000000 --- a/tests/09_DeePKS/102_NO_KP_deepks_nscf/INPUT +++ /dev/null @@ -1,26 +0,0 @@ -INPUT_PARAMETERS -calculation nscf -suffix autotest - -ecutwfc 50 -scf_thr 1e-06 -scf_nmax 35 -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB -read_file_dir ./ -basis_type lcao -dft_functional pbe -gamma_only 0 -mixing_type broyden -mixing_beta 0.8 -smearing_method gaussian -smearing_sigma 0.02 - -cal_force 1 -cal_stress 1 -deepks_out_labels 0 -deepks_scf 1 -deepks_model ../Model_ProjOrb/model_lda_pbe_18.ptg - -init_chg file -out_dos 1 \ No newline at end of file diff --git a/tests/09_DeePKS/102_NO_KP_deepks_relax/INPUT b/tests/09_DeePKS/102_NO_KP_deepks_relax/INPUT deleted file mode 100644 index 329564682c..0000000000 --- a/tests/09_DeePKS/102_NO_KP_deepks_relax/INPUT +++ /dev/null @@ -1,35 +0,0 @@ -INPUT_PARAMETERS -#Parameters (1.General) -suffix autotest -calculation relax -relax_method bfgs -relax_nmax 10 -dft_functional pbe - -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB - -#Parameters (2.Iteration) -ecutwfc 20 -scf_thr 1e-7 -scf_nmax 50 - -#Parameters (3.Basis) -basis_type lcao -gamma_only 0 - -#Parameters (4.Smearing) -smearing_method gaussian -smearing_sigma 0.02 - -#Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.8 - -cal_force 1 -force_thr_ev 1e-4 -cal_stress 1 -stress_thr 1e-7 -deepks_scf 1 -deepks_out_labels 0 -deepks_model ../Model_ProjOrb/model_Si_135.ptg diff --git a/tests/09_DeePKS/102_NO_KP_deepks_scf/INPUT b/tests/09_DeePKS/102_NO_KP_deepks_scf/INPUT deleted file mode 100644 index 755e2a11bd..0000000000 --- a/tests/09_DeePKS/102_NO_KP_deepks_scf/INPUT +++ /dev/null @@ -1,23 +0,0 @@ -INPUT_PARAMETERS -calculation scf -suffix autotest - -ecutwfc 50 -scf_thr 1e-06 -scf_nmax 35 -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB -basis_type lcao -dft_functional lda -gamma_only 0 -mixing_type broyden -mixing_beta 0.8 -smearing_method gaussian -smearing_sigma 0.02 - -cal_force 1 -cal_stress 1 -deepks_out_labels 0 -deepks_scf 1 -deepks_model ../Model_ProjOrb/model_lda_pbe_18.ptg - diff --git a/tests/09_DeePKS/103_NO_GO_deepks_bandgap/INPUT b/tests/09_DeePKS/103_NO_GO_deepks_bandgap/INPUT deleted file mode 100644 index e63ac26817..0000000000 --- a/tests/09_DeePKS/103_NO_GO_deepks_bandgap/INPUT +++ /dev/null @@ -1,24 +0,0 @@ -INPUT_PARAMETERS -suffix autotest -calculation scf - -ecutwfc 50 -scf_thr 1e-6 -scf_nmax 35 -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB -basis_type lcao -dft_functional lda -gamma_only 1 -mixing_type broyden -mixing_beta 0.8 -smearing_method gaussian -smearing_sigma 0.02 - -cal_force 0 -cal_stress 0 -deepks_scf 1 -deepks_model ../Model_ProjOrb/model_lda_pbe_18.ptg -deepks_out_labels 1 -deepks_bandgap 1 -deepks_band_range -1 0 diff --git a/tests/09_DeePKS/103_NO_GO_deepks_bandgap_2/INPUT b/tests/09_DeePKS/103_NO_GO_deepks_bandgap_2/INPUT deleted file mode 100644 index 0e5355765d..0000000000 --- a/tests/09_DeePKS/103_NO_GO_deepks_bandgap_2/INPUT +++ /dev/null @@ -1,24 +0,0 @@ -INPUT_PARAMETERS -suffix autotest -calculation scf - -ecutwfc 50 -scf_thr 1e-6 -scf_nmax 35 -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB -basis_type lcao -dft_functional lda -gamma_only 1 -mixing_type broyden -mixing_beta 0.8 -smearing_method gaussian -smearing_sigma 0.02 - -cal_force 0 -cal_stress 0 -deepks_scf 1 -deepks_model ../Model_ProjOrb/model_lda_pbe_18.ptg -deepks_out_labels 1 -deepks_bandgap 2 -deepks_band_range -1 0 diff --git a/tests/09_DeePKS/103_NO_GO_deepks_bandgap_3/INPUT b/tests/09_DeePKS/103_NO_GO_deepks_bandgap_3/INPUT deleted file mode 100644 index a7293e9d74..0000000000 --- a/tests/09_DeePKS/103_NO_GO_deepks_bandgap_3/INPUT +++ /dev/null @@ -1,23 +0,0 @@ -INPUT_PARAMETERS -suffix autotest -calculation scf - -ecutwfc 50 -scf_thr 1e-6 -scf_nmax 35 -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB -basis_type lcao -dft_functional lda -gamma_only 1 -mixing_type broyden -mixing_beta 0.8 -smearing_method gaussian -smearing_sigma 0.02 - -cal_force 0 -cal_stress 0 -deepks_scf 1 -deepks_model ../Model_ProjOrb/model_lda_pbe_18.ptg -deepks_out_labels 1 -deepks_bandgap 3 diff --git a/tests/09_DeePKS/103_NO_GO_deepks_bandgap_3/result.ref b/tests/09_DeePKS/103_NO_GO_deepks_bandgap_3/result.ref deleted file mode 100644 index b4a2174c4a..0000000000 --- a/tests/09_DeePKS/103_NO_GO_deepks_bandgap_3/result.ref +++ /dev/null @@ -1,10 +0,0 @@ -etotref -466.7530905050443 -etotperatomref -155.5843635017 -deepks_desc 2.297551 -deepks_dm_eig 10.742704784158393 -deepks_e_label 17.152853550955058 -deepks_edelta 0.09792547271228358 -deepks_o_label 0.29172556580830844 -deepks_odelta 9.932412417318348e-05 -deepks_oprec -0.45169372175959677 -totaltimeref 1.22 diff --git a/tests/09_DeePKS/103_NO_GO_deepks_basic/INPUT b/tests/09_DeePKS/103_NO_GO_deepks_basic/INPUT deleted file mode 100644 index 244b250885..0000000000 --- a/tests/09_DeePKS/103_NO_GO_deepks_basic/INPUT +++ /dev/null @@ -1,33 +0,0 @@ -INPUT_PARAMETERS -#Parameters (1.General) -suffix autotest -calculation scf - -nbands 6 -symmetry 0 -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB - -#Parameters (2.Iteration) -ecutwfc 50 -scf_thr 1e-6 -scf_nmax 50 - -#Parameters (3.Basis) -basis_type lcao -gamma_only 1 - -#Parameters (4.Smearing) -smearing_method gaussian -smearing_sigma 0.02 - -#Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.8 - -#Parameters (6.File) -deepks_out_labels 1 -deepks_scf 1 -deepks_model ../Model_ProjOrb/model_lda_pbe_18.ptg -cal_force 1 -cal_stress 1 diff --git a/tests/09_DeePKS/103_NO_GO_deepks_out_freq_elec/INPUT b/tests/09_DeePKS/103_NO_GO_deepks_out_freq_elec/INPUT deleted file mode 100644 index dec208abeb..0000000000 --- a/tests/09_DeePKS/103_NO_GO_deepks_out_freq_elec/INPUT +++ /dev/null @@ -1,39 +0,0 @@ -INPUT_PARAMETERS -#Parameters (1.General) -suffix autotest -calculation scf - -nbands 6 -symmetry 0 -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB - -#Parameters (2.Iteration) -ecutwfc 50 -scf_thr 5e-3 #relatively large to avoid many steps -scf_nmax 50 - -#Parameters (3.Basis) -basis_type lcao -gamma_only 1 - -#Parameters (4.Smearing) -smearing_method gaussian -smearing_sigma 0.02 - -#Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.8 -mixing_gg0 0 - -#Parameters (6.File) -deepks_out_labels 1 - -deepks_bandgap 1 -deepks_v_delta 1 -cal_force 1 -cal_stress 1 - -deepks_out_freq_elec 1 - -dft_functional lda diff --git a/tests/09_DeePKS/103_NO_GO_deepks_out_freq_elec/result.ref b/tests/09_DeePKS/103_NO_GO_deepks_out_freq_elec/result.ref deleted file mode 100644 index 58d0d417a1..0000000000 --- a/tests/09_DeePKS/103_NO_GO_deepks_out_freq_elec/result.ref +++ /dev/null @@ -1,27 +0,0 @@ -etotref -463.3717558791495890 -etotperatomref -154.4572519597 -totalforceref 3.661556 -totalstressref 9.690490 -deepks_e_label 17.02859183994638 -deepks_edelta 0.0 -deepks_o_label 0.3103148500892656 -deepks_odelta 0.0 -deepks_oprec -0.42236872134755643 -deepks_h_label 49.03922791708764 -deepks_vdelta 0.0 -deepks_vdp 176.26236130240005 -deepks_f_label 0.07120588316979731 -deepks_fdelta 0.0 -deepks_fpre 19.53717375096851 -deepks_s_label 0.08886477565384877 -deepks_sdelta 0.0 -deepks_spre 19.22629462223564 -deepks_e_label_elec 51.047596216236645 -deepks_edelta_elec 0 -deepks_o_label_elec .86018933752816427 -deepks_odelta_elec 0 -deepks_oprec_elec -1.23599151361440239 -deepks_h_label_elec 147.028760179109205 -deepks_vdelta_elec 0 -deepks_vdp_elec 529.07335498441735 -totaltimeref 1.03 diff --git a/tests/09_DeePKS/103_NO_GO_deepks_vdelta_1/INPUT b/tests/09_DeePKS/103_NO_GO_deepks_vdelta_1/INPUT deleted file mode 100644 index 097b3e525b..0000000000 --- a/tests/09_DeePKS/103_NO_GO_deepks_vdelta_1/INPUT +++ /dev/null @@ -1,32 +0,0 @@ -INPUT_PARAMETERS -#Parameters (1.General) -suffix autotest -calculation scf - -nbands 6 -symmetry 0 -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB - -#Parameters (2.Iteration) -ecutwfc 50 -scf_thr 1e-6 -scf_nmax 50 - -#Parameters (3.Basis) -basis_type lcao -gamma_only 0 - -#Parameters (4.Smearing) -smearing_method gaussian -smearing_sigma 0.02 - -#Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.8 - -#Parameters (6.File) -deepks_out_labels 1 -deepks_scf 1 -deepks_model ../Model_ProjOrb/model_lda_pbe_18.ptg -deepks_v_delta 1 diff --git a/tests/09_DeePKS/103_NO_GO_deepks_vdelta_2/INPUT b/tests/09_DeePKS/103_NO_GO_deepks_vdelta_2/INPUT deleted file mode 100644 index 5b25697bfc..0000000000 --- a/tests/09_DeePKS/103_NO_GO_deepks_vdelta_2/INPUT +++ /dev/null @@ -1,32 +0,0 @@ -INPUT_PARAMETERS -#Parameters (1.General) -suffix autotest -calculation scf - -nbands 6 -symmetry 0 -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB - -#Parameters (2.Iteration) -ecutwfc 50 -scf_thr 1e-6 -scf_nmax 50 - -#Parameters (3.Basis) -basis_type lcao -gamma_only 0 - -#Parameters (4.Smearing) -smearing_method gaussian -smearing_sigma 0.02 - -#Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.8 - -#Parameters (6.File) -deepks_out_labels 1 -deepks_scf 1 -deepks_model ../Model_ProjOrb/model_lda_pbe_18.ptg -deepks_v_delta 2 diff --git a/tests/09_DeePKS/103_NO_GO_deepks_vdelta_r_1/INPUT b/tests/09_DeePKS/103_NO_GO_deepks_vdelta_r_1/INPUT deleted file mode 100644 index ca4032ee9d..0000000000 --- a/tests/09_DeePKS/103_NO_GO_deepks_vdelta_r_1/INPUT +++ /dev/null @@ -1,32 +0,0 @@ -INPUT_PARAMETERS -#Parameters (1.General) -suffix autotest -calculation scf - -nbands 6 -symmetry 0 -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB - -#Parameters (2.Iteration) -ecutwfc 50 -scf_thr 1e-6 -scf_nmax 50 - -#Parameters (3.Basis) -basis_type lcao -gamma_only 0 - -#Parameters (4.Smearing) -smearing_method gaussian -smearing_sigma 0.02 - -#Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.8 - -#Parameters (6.File) -deepks_out_labels 1 -deepks_scf 1 -deepks_model ../Model_ProjOrb/model_lda_pbe_18.ptg -deepks_v_delta -1 diff --git a/tests/09_DeePKS/103_NO_GO_deepks_vdelta_r_1/deepks_hrdelta.csr.ref b/tests/09_DeePKS/103_NO_GO_deepks_vdelta_r_1/deepks_hrdelta.csr.ref deleted file mode 100644 index 82fa87c452..0000000000 --- a/tests/09_DeePKS/103_NO_GO_deepks_vdelta_r_1/deepks_hrdelta.csr.ref +++ /dev/null @@ -1,6 +0,0 @@ -Matrix Dimension of H_delta(R): 23 -Matrix number of H_delta(R): 1 -0 0 0 144 - -1.17226740e-02 -7.57658616e-05 1.61519520e-03 2.14838886e-03 -1.34740806e-03 -8.30754807e-03 7.47161074e-04 -3.31336838e-03 -1.94293588e-03 2.75341536e-03 4.07871413e-04 4.10885575e-03 -7.57658616e-05 -2.29579487e-03 7.50289951e-04 1.02377862e-04 -5.48909920e-05 -2.94642184e-04 -8.25177686e-04 1.94818297e-04 -1.19266527e-04 -7.46808290e-05 -8.73270929e-04 3.20285418e-04 1.61519520e-03 7.50289951e-04 -5.96371822e-04 -5.81645379e-05 1.37541461e-03 3.71901393e-03 -1.08600805e-04 -5.51784265e-04 -1.08973508e-04 -2.26761593e-04 2.01147715e-04 -2.82691276e-04 2.14838886e-03 1.02377862e-04 -5.81645379e-05 -3.34036572e-03 3.80487988e-04 6.01680816e-04 5.43170647e-04 2.59440381e-03 -2.85153605e-04 3.33506511e-04 -1.05075443e-03 -3.77203641e-03 -1.34740806e-03 -5.48909920e-05 1.37541461e-03 3.80487988e-04 4.66309048e-04 -2.79020310e-03 2.98197496e-04 -7.00712687e-04 -7.72562067e-05 -1.48728519e-04 -2.30021977e-04 -3.50951237e-04 -8.30754807e-03 -2.94642184e-04 3.71901393e-03 6.01680816e-04 -2.79020310e-03 -1.26915681e-02 6.40881586e-04 -6.12780257e-05 -1.56385352e-03 1.75141762e-03 -4.37464862e-04 1.26280909e-05 7.47161074e-04 -8.25177686e-04 -1.08600805e-04 5.43170647e-04 2.98197496e-04 6.40881586e-04 -1.80813878e-03 -6.96488950e-05 2.45238335e-04 9.54997836e-05 1.72195202e-04 2.89724169e-04 -3.31336838e-03 1.94818297e-04 -5.51784265e-04 2.59440381e-03 -7.00712687e-04 -6.12780257e-05 -6.96488950e-05 -2.13180521e-03 -4.05397975e-05 1.71581618e-04 8.85356707e-04 3.60025084e-03 -1.94293588e-03 -1.19266527e-04 -1.08973508e-04 -2.85153605e-04 -7.72562067e-05 -1.56385352e-03 2.45238335e-04 -4.05397975e-05 -6.06345144e-04 7.81662817e-04 -1.54549695e-04 2.40887746e-05 2.75341536e-03 -7.46808290e-05 -2.26761593e-04 3.33506511e-04 -1.48728519e-04 1.75141762e-03 9.54997836e-05 1.71581618e-04 7.81662817e-04 -5.88627411e-04 -2.89432341e-04 -2.73772524e-04 4.07871413e-04 -8.73270929e-04 2.01147715e-04 -1.05075443e-03 -2.30021977e-04 -4.37464862e-04 1.72195202e-04 8.85356707e-04 -1.54549695e-04 -2.89432341e-04 -2.37112515e-03 -1.20550576e-03 4.10885575e-03 3.20285418e-04 -2.82691276e-04 -3.77203641e-03 -3.50951237e-04 1.26280909e-05 2.89724169e-04 3.60025084e-03 2.40887746e-05 -2.73772524e-04 -1.20550576e-03 -7.09398430e-03 - 0 1 2 3 4 5 6 7 8 9 10 11 0 1 2 3 4 5 6 7 8 9 10 11 0 1 2 3 4 5 6 7 8 9 10 11 0 1 2 3 4 5 6 7 8 9 10 11 0 1 2 3 4 5 6 7 8 9 10 11 0 1 2 3 4 5 6 7 8 9 10 11 0 1 2 3 4 5 6 7 8 9 10 11 0 1 2 3 4 5 6 7 8 9 10 11 0 1 2 3 4 5 6 7 8 9 10 11 0 1 2 3 4 5 6 7 8 9 10 11 0 1 2 3 4 5 6 7 8 9 10 11 0 1 2 3 4 5 6 7 8 9 10 11 - 0 12 24 36 48 60 72 84 96 108 120 132 144 144 144 144 144 144 144 144 144 144 144 144 diff --git a/tests/09_DeePKS/103_NO_GO_deepks_vdelta_r_1/deepks_hrtot.csr.ref b/tests/09_DeePKS/103_NO_GO_deepks_vdelta_r_1/deepks_hrtot.csr.ref deleted file mode 100644 index 48eaf60c3a..0000000000 --- a/tests/09_DeePKS/103_NO_GO_deepks_vdelta_r_1/deepks_hrtot.csr.ref +++ /dev/null @@ -1,6 +0,0 @@ -Matrix Dimension of H(R): 23 -Matrix number of H(R): 1 -0 0 0 144 - -8.42107904e-01 -3.36018443e-02 4.57125255e-01 2.48575301e-01 -1.13625395e-01 -1.07975761e+00 6.92996341e-02 -4.87107239e-01 -7.19175506e-03 1.10813024e-01 9.06402772e-04 9.15211632e-02 -3.36018443e-02 2.49598467e+00 3.30086601e-02 2.78231936e-02 9.74834800e-03 -4.25617904e-02 -2.15042800e-01 -2.49406909e-02 1.47258242e-02 -8.47667718e-02 3.92807294e-01 -7.69616324e-02 4.57125255e-01 3.30086601e-02 2.06576968e+00 -3.14993633e-02 9.87617873e-02 5.39706282e-01 -4.07170235e-02 6.21072104e-02 -1.28863490e-01 2.24558957e-01 6.67403369e-02 5.21985815e-01 2.48575301e-01 2.78231936e-02 -3.14993633e-02 9.32647363e-01 -2.91947949e-02 1.96293189e-01 8.84269909e-02 3.75282153e-01 4.31349825e-02 -1.22832429e-01 4.49127331e-02 6.44049862e-02 -1.13625395e-01 9.74834800e-03 9.87617873e-02 -2.91947949e-02 2.23408330e+00 -4.00917139e-01 6.85175949e-02 2.02359643e-01 -3.39239660e-02 -1.39561982e-01 2.40210913e-01 2.44261809e-01 -1.07975761e+00 -4.25617904e-02 5.39706282e-01 1.96293189e-01 -4.00917139e-01 -1.70549181e+00 6.48395657e-02 -7.05142835e-03 -2.62232291e-02 1.66491876e-01 -3.83218137e-02 1.50531270e-03 6.92996341e-02 -2.15042800e-01 -4.07170235e-02 8.84269909e-02 6.85175949e-02 6.48395657e-02 -4.74768823e-01 -2.57988231e-02 1.11451453e-02 1.52852492e-02 7.90528504e-03 2.42311440e-02 -4.87107239e-01 -2.49406909e-02 6.21072104e-02 3.75282153e-01 2.02359643e-01 -7.05142835e-03 -2.57988231e-02 -7.15138160e-01 -1.64611138e-03 1.55738906e-02 9.09657799e-02 3.66026282e-01 -7.19175506e-03 1.47258242e-02 -1.28863490e-01 4.31349825e-02 -3.39239660e-02 -2.62232291e-02 1.11451453e-02 -1.64611138e-03 7.76366120e-01 5.68900637e-02 -1.06890265e-02 1.61948811e-03 1.10813024e-01 -8.47667718e-02 2.24558957e-01 -1.22832429e-01 -1.39561982e-01 1.66491876e-01 1.52852492e-02 1.55738906e-02 5.68900637e-02 3.19891456e+00 7.27737784e-03 -1.42881909e-02 9.06402772e-04 3.92807294e-01 6.67403369e-02 4.49127331e-02 2.40210913e-01 -3.83218137e-02 7.90528504e-03 9.09657799e-02 -1.06890265e-02 7.27737784e-03 3.19660717e+00 -9.14134117e-02 9.15211632e-02 -7.69616324e-02 5.21985815e-01 6.44049862e-02 2.44261809e-01 1.50531270e-03 2.42311440e-02 3.66026282e-01 1.61948811e-03 -1.42881909e-02 -9.14134117e-02 2.85906938e+00 - 0 1 2 3 4 5 6 7 8 9 10 11 0 1 2 3 4 5 6 7 8 9 10 11 0 1 2 3 4 5 6 7 8 9 10 11 0 1 2 3 4 5 6 7 8 9 10 11 0 1 2 3 4 5 6 7 8 9 10 11 0 1 2 3 4 5 6 7 8 9 10 11 0 1 2 3 4 5 6 7 8 9 10 11 0 1 2 3 4 5 6 7 8 9 10 11 0 1 2 3 4 5 6 7 8 9 10 11 0 1 2 3 4 5 6 7 8 9 10 11 0 1 2 3 4 5 6 7 8 9 10 11 0 1 2 3 4 5 6 7 8 9 10 11 - 0 12 24 36 48 60 72 84 96 108 120 132 144 144 144 144 144 144 144 144 144 144 144 144 diff --git a/tests/09_DeePKS/103_NO_GO_deepks_vdelta_r_2/INPUT b/tests/09_DeePKS/103_NO_GO_deepks_vdelta_r_2/INPUT deleted file mode 100644 index be2febd2d5..0000000000 --- a/tests/09_DeePKS/103_NO_GO_deepks_vdelta_r_2/INPUT +++ /dev/null @@ -1,32 +0,0 @@ -INPUT_PARAMETERS -#Parameters (1.General) -suffix autotest -calculation scf - -nbands 6 -symmetry 0 -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB - -#Parameters (2.Iteration) -ecutwfc 50 -scf_thr 1e-6 -scf_nmax 50 - -#Parameters (3.Basis) -basis_type lcao -gamma_only 0 - -#Parameters (4.Smearing) -smearing_method gaussian -smearing_sigma 0.02 - -#Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.8 - -#Parameters (6.File) -deepks_out_labels 1 -deepks_scf 1 -deepks_model ../Model_ProjOrb/model_lda_pbe_18.ptg -deepks_v_delta -2 diff --git a/tests/09_DeePKS/103_NO_GO_deepks_vdelta_r_2/deepks_hrdelta.csr.ref b/tests/09_DeePKS/103_NO_GO_deepks_vdelta_r_2/deepks_hrdelta.csr.ref deleted file mode 100644 index 82fa87c452..0000000000 --- a/tests/09_DeePKS/103_NO_GO_deepks_vdelta_r_2/deepks_hrdelta.csr.ref +++ /dev/null @@ -1,6 +0,0 @@ -Matrix Dimension of H_delta(R): 23 -Matrix number of H_delta(R): 1 -0 0 0 144 - -1.17226740e-02 -7.57658616e-05 1.61519520e-03 2.14838886e-03 -1.34740806e-03 -8.30754807e-03 7.47161074e-04 -3.31336838e-03 -1.94293588e-03 2.75341536e-03 4.07871413e-04 4.10885575e-03 -7.57658616e-05 -2.29579487e-03 7.50289951e-04 1.02377862e-04 -5.48909920e-05 -2.94642184e-04 -8.25177686e-04 1.94818297e-04 -1.19266527e-04 -7.46808290e-05 -8.73270929e-04 3.20285418e-04 1.61519520e-03 7.50289951e-04 -5.96371822e-04 -5.81645379e-05 1.37541461e-03 3.71901393e-03 -1.08600805e-04 -5.51784265e-04 -1.08973508e-04 -2.26761593e-04 2.01147715e-04 -2.82691276e-04 2.14838886e-03 1.02377862e-04 -5.81645379e-05 -3.34036572e-03 3.80487988e-04 6.01680816e-04 5.43170647e-04 2.59440381e-03 -2.85153605e-04 3.33506511e-04 -1.05075443e-03 -3.77203641e-03 -1.34740806e-03 -5.48909920e-05 1.37541461e-03 3.80487988e-04 4.66309048e-04 -2.79020310e-03 2.98197496e-04 -7.00712687e-04 -7.72562067e-05 -1.48728519e-04 -2.30021977e-04 -3.50951237e-04 -8.30754807e-03 -2.94642184e-04 3.71901393e-03 6.01680816e-04 -2.79020310e-03 -1.26915681e-02 6.40881586e-04 -6.12780257e-05 -1.56385352e-03 1.75141762e-03 -4.37464862e-04 1.26280909e-05 7.47161074e-04 -8.25177686e-04 -1.08600805e-04 5.43170647e-04 2.98197496e-04 6.40881586e-04 -1.80813878e-03 -6.96488950e-05 2.45238335e-04 9.54997836e-05 1.72195202e-04 2.89724169e-04 -3.31336838e-03 1.94818297e-04 -5.51784265e-04 2.59440381e-03 -7.00712687e-04 -6.12780257e-05 -6.96488950e-05 -2.13180521e-03 -4.05397975e-05 1.71581618e-04 8.85356707e-04 3.60025084e-03 -1.94293588e-03 -1.19266527e-04 -1.08973508e-04 -2.85153605e-04 -7.72562067e-05 -1.56385352e-03 2.45238335e-04 -4.05397975e-05 -6.06345144e-04 7.81662817e-04 -1.54549695e-04 2.40887746e-05 2.75341536e-03 -7.46808290e-05 -2.26761593e-04 3.33506511e-04 -1.48728519e-04 1.75141762e-03 9.54997836e-05 1.71581618e-04 7.81662817e-04 -5.88627411e-04 -2.89432341e-04 -2.73772524e-04 4.07871413e-04 -8.73270929e-04 2.01147715e-04 -1.05075443e-03 -2.30021977e-04 -4.37464862e-04 1.72195202e-04 8.85356707e-04 -1.54549695e-04 -2.89432341e-04 -2.37112515e-03 -1.20550576e-03 4.10885575e-03 3.20285418e-04 -2.82691276e-04 -3.77203641e-03 -3.50951237e-04 1.26280909e-05 2.89724169e-04 3.60025084e-03 2.40887746e-05 -2.73772524e-04 -1.20550576e-03 -7.09398430e-03 - 0 1 2 3 4 5 6 7 8 9 10 11 0 1 2 3 4 5 6 7 8 9 10 11 0 1 2 3 4 5 6 7 8 9 10 11 0 1 2 3 4 5 6 7 8 9 10 11 0 1 2 3 4 5 6 7 8 9 10 11 0 1 2 3 4 5 6 7 8 9 10 11 0 1 2 3 4 5 6 7 8 9 10 11 0 1 2 3 4 5 6 7 8 9 10 11 0 1 2 3 4 5 6 7 8 9 10 11 0 1 2 3 4 5 6 7 8 9 10 11 0 1 2 3 4 5 6 7 8 9 10 11 0 1 2 3 4 5 6 7 8 9 10 11 - 0 12 24 36 48 60 72 84 96 108 120 132 144 144 144 144 144 144 144 144 144 144 144 144 diff --git a/tests/09_DeePKS/103_NO_GO_deepks_vdelta_r_2/deepks_hrtot.csr.ref b/tests/09_DeePKS/103_NO_GO_deepks_vdelta_r_2/deepks_hrtot.csr.ref deleted file mode 100644 index 48eaf60c3a..0000000000 --- a/tests/09_DeePKS/103_NO_GO_deepks_vdelta_r_2/deepks_hrtot.csr.ref +++ /dev/null @@ -1,6 +0,0 @@ -Matrix Dimension of H(R): 23 -Matrix number of H(R): 1 -0 0 0 144 - -8.42107904e-01 -3.36018443e-02 4.57125255e-01 2.48575301e-01 -1.13625395e-01 -1.07975761e+00 6.92996341e-02 -4.87107239e-01 -7.19175506e-03 1.10813024e-01 9.06402772e-04 9.15211632e-02 -3.36018443e-02 2.49598467e+00 3.30086601e-02 2.78231936e-02 9.74834800e-03 -4.25617904e-02 -2.15042800e-01 -2.49406909e-02 1.47258242e-02 -8.47667718e-02 3.92807294e-01 -7.69616324e-02 4.57125255e-01 3.30086601e-02 2.06576968e+00 -3.14993633e-02 9.87617873e-02 5.39706282e-01 -4.07170235e-02 6.21072104e-02 -1.28863490e-01 2.24558957e-01 6.67403369e-02 5.21985815e-01 2.48575301e-01 2.78231936e-02 -3.14993633e-02 9.32647363e-01 -2.91947949e-02 1.96293189e-01 8.84269909e-02 3.75282153e-01 4.31349825e-02 -1.22832429e-01 4.49127331e-02 6.44049862e-02 -1.13625395e-01 9.74834800e-03 9.87617873e-02 -2.91947949e-02 2.23408330e+00 -4.00917139e-01 6.85175949e-02 2.02359643e-01 -3.39239660e-02 -1.39561982e-01 2.40210913e-01 2.44261809e-01 -1.07975761e+00 -4.25617904e-02 5.39706282e-01 1.96293189e-01 -4.00917139e-01 -1.70549181e+00 6.48395657e-02 -7.05142835e-03 -2.62232291e-02 1.66491876e-01 -3.83218137e-02 1.50531270e-03 6.92996341e-02 -2.15042800e-01 -4.07170235e-02 8.84269909e-02 6.85175949e-02 6.48395657e-02 -4.74768823e-01 -2.57988231e-02 1.11451453e-02 1.52852492e-02 7.90528504e-03 2.42311440e-02 -4.87107239e-01 -2.49406909e-02 6.21072104e-02 3.75282153e-01 2.02359643e-01 -7.05142835e-03 -2.57988231e-02 -7.15138160e-01 -1.64611138e-03 1.55738906e-02 9.09657799e-02 3.66026282e-01 -7.19175506e-03 1.47258242e-02 -1.28863490e-01 4.31349825e-02 -3.39239660e-02 -2.62232291e-02 1.11451453e-02 -1.64611138e-03 7.76366120e-01 5.68900637e-02 -1.06890265e-02 1.61948811e-03 1.10813024e-01 -8.47667718e-02 2.24558957e-01 -1.22832429e-01 -1.39561982e-01 1.66491876e-01 1.52852492e-02 1.55738906e-02 5.68900637e-02 3.19891456e+00 7.27737784e-03 -1.42881909e-02 9.06402772e-04 3.92807294e-01 6.67403369e-02 4.49127331e-02 2.40210913e-01 -3.83218137e-02 7.90528504e-03 9.09657799e-02 -1.06890265e-02 7.27737784e-03 3.19660717e+00 -9.14134117e-02 9.15211632e-02 -7.69616324e-02 5.21985815e-01 6.44049862e-02 2.44261809e-01 1.50531270e-03 2.42311440e-02 3.66026282e-01 1.61948811e-03 -1.42881909e-02 -9.14134117e-02 2.85906938e+00 - 0 1 2 3 4 5 6 7 8 9 10 11 0 1 2 3 4 5 6 7 8 9 10 11 0 1 2 3 4 5 6 7 8 9 10 11 0 1 2 3 4 5 6 7 8 9 10 11 0 1 2 3 4 5 6 7 8 9 10 11 0 1 2 3 4 5 6 7 8 9 10 11 0 1 2 3 4 5 6 7 8 9 10 11 0 1 2 3 4 5 6 7 8 9 10 11 0 1 2 3 4 5 6 7 8 9 10 11 0 1 2 3 4 5 6 7 8 9 10 11 0 1 2 3 4 5 6 7 8 9 10 11 0 1 2 3 4 5 6 7 8 9 10 11 - 0 12 24 36 48 60 72 84 96 108 120 132 144 144 144 144 144 144 144 144 144 144 144 144 diff --git a/tests/09_DeePKS/103_NO_GO_deepks_vdelta_r_2/result.ref b/tests/09_DeePKS/103_NO_GO_deepks_vdelta_r_2/result.ref deleted file mode 100644 index 3de8b5a4c8..0000000000 --- a/tests/09_DeePKS/103_NO_GO_deepks_vdelta_r_2/result.ref +++ /dev/null @@ -1,11 +0,0 @@ -etotref -466.0431711618678 -etotperatomref -155.3477237206 -deepks_desc 2.319019 -deepks_dm_eig 10.787022245391771 -deepks_e_label 17.126764505645642 -deepks_edelta 0.09815855485768665 -deepks_hr_label_pass 0 -deepks_vdelta_r_pass 0 -deepks_phialpha_r 73.40481582340394 -deepks_gevdm 54.0 -totaltimeref 1.81 diff --git a/tests/09_DeePKS/103_NO_KP_deepks_bandgap/INPUT b/tests/09_DeePKS/103_NO_KP_deepks_bandgap/INPUT deleted file mode 100644 index 9437c80975..0000000000 --- a/tests/09_DeePKS/103_NO_KP_deepks_bandgap/INPUT +++ /dev/null @@ -1,25 +0,0 @@ -INPUT_PARAMETERS -calculation scf -suffix autotest -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB - -ecutwfc 50 -scf_thr 1e-06 -scf_nmax 35 -basis_type lcao -dft_functional lda -gamma_only 0 -mixing_type broyden -mixing_beta 0.8 -smearing_method gaussian -smearing_sigma 0.02 - -cal_force 0 -cal_stress 0 -deepks_scf 1 -deepks_out_labels 1 -deepks_bandgap 1 -deepks_band_range -1 0 -deepks_model ../Model_ProjOrb/model_lda_pbe_18.ptg -symmetry_prec 1e-5 diff --git a/tests/09_DeePKS/103_NO_KP_deepks_bandgap_2/INPUT b/tests/09_DeePKS/103_NO_KP_deepks_bandgap_2/INPUT deleted file mode 100644 index a3c4638b6f..0000000000 --- a/tests/09_DeePKS/103_NO_KP_deepks_bandgap_2/INPUT +++ /dev/null @@ -1,25 +0,0 @@ -INPUT_PARAMETERS -calculation scf -suffix autotest -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB - -ecutwfc 50 -scf_thr 1e-06 -scf_nmax 35 -basis_type lcao -dft_functional lda -gamma_only 0 -mixing_type broyden -mixing_beta 0.8 -smearing_method gaussian -smearing_sigma 0.02 - -cal_force 0 -cal_stress 0 -deepks_scf 1 -deepks_out_labels 1 -deepks_bandgap 2 -deepks_band_range -1 0 -deepks_model ../Model_ProjOrb/model_lda_pbe_18.ptg -symmetry_prec 1e-5 diff --git a/tests/09_DeePKS/103_NO_KP_deepks_bandgap_3/INPUT b/tests/09_DeePKS/103_NO_KP_deepks_bandgap_3/INPUT deleted file mode 100644 index a1db172bb7..0000000000 --- a/tests/09_DeePKS/103_NO_KP_deepks_bandgap_3/INPUT +++ /dev/null @@ -1,24 +0,0 @@ -INPUT_PARAMETERS -calculation scf -suffix autotest -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB - -ecutwfc 50 -scf_thr 1e-06 -scf_nmax 35 -basis_type lcao -dft_functional lda -gamma_only 0 -mixing_type broyden -mixing_beta 0.8 -smearing_method gaussian -smearing_sigma 0.02 - -cal_force 0 -cal_stress 0 -deepks_scf 1 -deepks_out_labels 1 -deepks_bandgap 3 -deepks_model ../Model_ProjOrb/model_lda_pbe_18.ptg -symmetry_prec 1e-5 diff --git a/tests/09_DeePKS/103_NO_KP_deepks_bandgap_3/STRU b/tests/09_DeePKS/103_NO_KP_deepks_bandgap_3/STRU deleted file mode 100644 index d96524cc65..0000000000 --- a/tests/09_DeePKS/103_NO_KP_deepks_bandgap_3/STRU +++ /dev/null @@ -1,32 +0,0 @@ -ATOMIC_SPECIES -Si 1.00 Si_ONCV_PBE-1.2.upf -O 1.00 O_ONCV_PBE-1.2.upf - - -LATTICE_CONSTANT -1 - -LATTICE_VECTORS -15 0 0 -0 15 0 -0 0 9 - -ATOMIC_POSITIONS -Direct # Cartesian(Unit is LATTICE_CONSTANT) - -Si -0.0 -1 -0.5 0.5 0 0 0 0 -O -0.0 -2 -0.5 0.5 0.25 0 0 0 -0.5 0.5 0.75 0 0 0 - -NUMERICAL_ORBITAL -Si_gga_8au_60Ry_2s2p1d.orb -O_gga_7au_60Ry_2s2p1d.orb - -NUMERICAL_DESCRIPTOR -../Model_ProjOrb/2au_20Ry_jle.orb diff --git a/tests/09_DeePKS/103_NO_KP_deepks_bandgap_3/result.ref b/tests/09_DeePKS/103_NO_KP_deepks_bandgap_3/result.ref deleted file mode 100644 index 1582fefe3b..0000000000 --- a/tests/09_DeePKS/103_NO_KP_deepks_bandgap_3/result.ref +++ /dev/null @@ -1,10 +0,0 @@ -etotref -959.2783700856231 -etotperatomref -319.7594566952 -deepks_desc 2.456992 -deepks_dm_eig 15.506898379534249 -deepks_e_label 35.25281724192405 -deepks_edelta 0.09772974729136052 -deepks_o_label 0.3368945080257191 -deepks_odelta 0.0014646771995326935 -deepks_oprec -1.2637665734018695 -totaltimeref 1.53 diff --git a/tests/09_DeePKS/103_NO_KP_deepks_basic/INPUT b/tests/09_DeePKS/103_NO_KP_deepks_basic/INPUT deleted file mode 100644 index 6b135bae84..0000000000 --- a/tests/09_DeePKS/103_NO_KP_deepks_basic/INPUT +++ /dev/null @@ -1,24 +0,0 @@ -INPUT_PARAMETERS -suffix autotest -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB -calculation scf - -ecutwfc 50 -scf_thr 1e-6 -scf_nmax 50 -basis_type lcao -dft_functional lda -gamma_only 0 -mixing_type broyden -mixing_beta 0.8 -mixing_gg0 0.0 -nbands 18 -smearing_method gaussian -smearing_sigma 0.02 - -cal_force 1 -cal_stress 1 -deepks_out_labels 1 -deepks_scf 1 -deepks_model ../Model_ProjOrb/model_lda_pbe_18.ptg diff --git a/tests/09_DeePKS/103_NO_KP_deepks_out_freq_elec/INPUT b/tests/09_DeePKS/103_NO_KP_deepks_out_freq_elec/INPUT deleted file mode 100644 index 9a82dfcb10..0000000000 --- a/tests/09_DeePKS/103_NO_KP_deepks_out_freq_elec/INPUT +++ /dev/null @@ -1,39 +0,0 @@ -INPUT_PARAMETERS -#Parameters (1.General) -suffix autotest -calculation scf - -nbands 6 -symmetry 0 -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB - -#Parameters (2.Iteration) -ecutwfc 50 -scf_thr 5e-3 #relatively large to avoid many steps -scf_nmax 50 - -#Parameters (3.Basis) -basis_type lcao -gamma_only 0 - -#Parameters (4.Smearing) -smearing_method gaussian -smearing_sigma 0.02 - -#Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.8 -mixing_gg0 0 - -#Parameters (6.File) -deepks_out_labels 1 - -deepks_bandgap 1 -deepks_v_delta 1 -cal_force 1 -cal_stress 1 - -deepks_out_freq_elec 1 - -dft_functional lda diff --git a/tests/09_DeePKS/103_NO_KP_deepks_out_freq_elec/result.ref b/tests/09_DeePKS/103_NO_KP_deepks_out_freq_elec/result.ref deleted file mode 100644 index 56a29b13c8..0000000000 --- a/tests/09_DeePKS/103_NO_KP_deepks_out_freq_elec/result.ref +++ /dev/null @@ -1,27 +0,0 @@ -etotref -463.3717558791492479 -etotperatomref -154.4572519597 -totalforceref 3.661556 -totalstressref 9.690490 -deepks_e_label 17.02859183994637 -deepks_edelta 0.0 -deepks_o_label 0.3103148500892669 -deepks_odelta 0.0 -deepks_oprec -0.42236872134754927 -deepks_h_label 49.03922791708764 -deepks_vdelta 0.0 -deepks_vdp 176.26236130239985 -deepks_f_label 0.07120588316980042 -deepks_fdelta 0.0 -deepks_fpre 19.53717375096855 -deepks_s_label 0.08886477565386258 -deepks_sdelta 0.0 -deepks_spre 19.22629462223567 -deepks_e_label_elec 51.047596216236626 -deepks_edelta_elec 0 -deepks_o_label_elec .86018933752817077 -deepks_odelta_elec 0 -deepks_oprec_elec -1.23599151361439742 -deepks_h_label_elec 147.028760179109226 -deepks_vdelta_elec 0 -deepks_vdp_elec 529.07335498441665 -totaltimeref 1.06 diff --git a/tests/09_DeePKS/103_NO_KP_deepks_vdelta_1/INPUT b/tests/09_DeePKS/103_NO_KP_deepks_vdelta_1/INPUT deleted file mode 100644 index 097b3e525b..0000000000 --- a/tests/09_DeePKS/103_NO_KP_deepks_vdelta_1/INPUT +++ /dev/null @@ -1,32 +0,0 @@ -INPUT_PARAMETERS -#Parameters (1.General) -suffix autotest -calculation scf - -nbands 6 -symmetry 0 -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB - -#Parameters (2.Iteration) -ecutwfc 50 -scf_thr 1e-6 -scf_nmax 50 - -#Parameters (3.Basis) -basis_type lcao -gamma_only 0 - -#Parameters (4.Smearing) -smearing_method gaussian -smearing_sigma 0.02 - -#Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.8 - -#Parameters (6.File) -deepks_out_labels 1 -deepks_scf 1 -deepks_model ../Model_ProjOrb/model_lda_pbe_18.ptg -deepks_v_delta 1 diff --git a/tests/09_DeePKS/103_NO_KP_deepks_vdelta_2/INPUT b/tests/09_DeePKS/103_NO_KP_deepks_vdelta_2/INPUT deleted file mode 100644 index 5b25697bfc..0000000000 --- a/tests/09_DeePKS/103_NO_KP_deepks_vdelta_2/INPUT +++ /dev/null @@ -1,32 +0,0 @@ -INPUT_PARAMETERS -#Parameters (1.General) -suffix autotest -calculation scf - -nbands 6 -symmetry 0 -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB - -#Parameters (2.Iteration) -ecutwfc 50 -scf_thr 1e-6 -scf_nmax 50 - -#Parameters (3.Basis) -basis_type lcao -gamma_only 0 - -#Parameters (4.Smearing) -smearing_method gaussian -smearing_sigma 0.02 - -#Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.8 - -#Parameters (6.File) -deepks_out_labels 1 -deepks_scf 1 -deepks_model ../Model_ProjOrb/model_lda_pbe_18.ptg -deepks_v_delta 2 diff --git a/tests/09_DeePKS/103_NO_KP_deepks_vdelta_r_1/INPUT b/tests/09_DeePKS/103_NO_KP_deepks_vdelta_r_1/INPUT deleted file mode 100644 index ca4032ee9d..0000000000 --- a/tests/09_DeePKS/103_NO_KP_deepks_vdelta_r_1/INPUT +++ /dev/null @@ -1,32 +0,0 @@ -INPUT_PARAMETERS -#Parameters (1.General) -suffix autotest -calculation scf - -nbands 6 -symmetry 0 -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB - -#Parameters (2.Iteration) -ecutwfc 50 -scf_thr 1e-6 -scf_nmax 50 - -#Parameters (3.Basis) -basis_type lcao -gamma_only 0 - -#Parameters (4.Smearing) -smearing_method gaussian -smearing_sigma 0.02 - -#Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.8 - -#Parameters (6.File) -deepks_out_labels 1 -deepks_scf 1 -deepks_model ../Model_ProjOrb/model_lda_pbe_18.ptg -deepks_v_delta -1 diff --git a/tests/09_DeePKS/103_NO_KP_deepks_vdelta_r_1/deepks_hrdelta.csr.ref b/tests/09_DeePKS/103_NO_KP_deepks_vdelta_r_1/deepks_hrdelta.csr.ref deleted file mode 100644 index 82fa87c452..0000000000 --- a/tests/09_DeePKS/103_NO_KP_deepks_vdelta_r_1/deepks_hrdelta.csr.ref +++ /dev/null @@ -1,6 +0,0 @@ -Matrix Dimension of H_delta(R): 23 -Matrix number of H_delta(R): 1 -0 0 0 144 - -1.17226740e-02 -7.57658616e-05 1.61519520e-03 2.14838886e-03 -1.34740806e-03 -8.30754807e-03 7.47161074e-04 -3.31336838e-03 -1.94293588e-03 2.75341536e-03 4.07871413e-04 4.10885575e-03 -7.57658616e-05 -2.29579487e-03 7.50289951e-04 1.02377862e-04 -5.48909920e-05 -2.94642184e-04 -8.25177686e-04 1.94818297e-04 -1.19266527e-04 -7.46808290e-05 -8.73270929e-04 3.20285418e-04 1.61519520e-03 7.50289951e-04 -5.96371822e-04 -5.81645379e-05 1.37541461e-03 3.71901393e-03 -1.08600805e-04 -5.51784265e-04 -1.08973508e-04 -2.26761593e-04 2.01147715e-04 -2.82691276e-04 2.14838886e-03 1.02377862e-04 -5.81645379e-05 -3.34036572e-03 3.80487988e-04 6.01680816e-04 5.43170647e-04 2.59440381e-03 -2.85153605e-04 3.33506511e-04 -1.05075443e-03 -3.77203641e-03 -1.34740806e-03 -5.48909920e-05 1.37541461e-03 3.80487988e-04 4.66309048e-04 -2.79020310e-03 2.98197496e-04 -7.00712687e-04 -7.72562067e-05 -1.48728519e-04 -2.30021977e-04 -3.50951237e-04 -8.30754807e-03 -2.94642184e-04 3.71901393e-03 6.01680816e-04 -2.79020310e-03 -1.26915681e-02 6.40881586e-04 -6.12780257e-05 -1.56385352e-03 1.75141762e-03 -4.37464862e-04 1.26280909e-05 7.47161074e-04 -8.25177686e-04 -1.08600805e-04 5.43170647e-04 2.98197496e-04 6.40881586e-04 -1.80813878e-03 -6.96488950e-05 2.45238335e-04 9.54997836e-05 1.72195202e-04 2.89724169e-04 -3.31336838e-03 1.94818297e-04 -5.51784265e-04 2.59440381e-03 -7.00712687e-04 -6.12780257e-05 -6.96488950e-05 -2.13180521e-03 -4.05397975e-05 1.71581618e-04 8.85356707e-04 3.60025084e-03 -1.94293588e-03 -1.19266527e-04 -1.08973508e-04 -2.85153605e-04 -7.72562067e-05 -1.56385352e-03 2.45238335e-04 -4.05397975e-05 -6.06345144e-04 7.81662817e-04 -1.54549695e-04 2.40887746e-05 2.75341536e-03 -7.46808290e-05 -2.26761593e-04 3.33506511e-04 -1.48728519e-04 1.75141762e-03 9.54997836e-05 1.71581618e-04 7.81662817e-04 -5.88627411e-04 -2.89432341e-04 -2.73772524e-04 4.07871413e-04 -8.73270929e-04 2.01147715e-04 -1.05075443e-03 -2.30021977e-04 -4.37464862e-04 1.72195202e-04 8.85356707e-04 -1.54549695e-04 -2.89432341e-04 -2.37112515e-03 -1.20550576e-03 4.10885575e-03 3.20285418e-04 -2.82691276e-04 -3.77203641e-03 -3.50951237e-04 1.26280909e-05 2.89724169e-04 3.60025084e-03 2.40887746e-05 -2.73772524e-04 -1.20550576e-03 -7.09398430e-03 - 0 1 2 3 4 5 6 7 8 9 10 11 0 1 2 3 4 5 6 7 8 9 10 11 0 1 2 3 4 5 6 7 8 9 10 11 0 1 2 3 4 5 6 7 8 9 10 11 0 1 2 3 4 5 6 7 8 9 10 11 0 1 2 3 4 5 6 7 8 9 10 11 0 1 2 3 4 5 6 7 8 9 10 11 0 1 2 3 4 5 6 7 8 9 10 11 0 1 2 3 4 5 6 7 8 9 10 11 0 1 2 3 4 5 6 7 8 9 10 11 0 1 2 3 4 5 6 7 8 9 10 11 0 1 2 3 4 5 6 7 8 9 10 11 - 0 12 24 36 48 60 72 84 96 108 120 132 144 144 144 144 144 144 144 144 144 144 144 144 diff --git a/tests/09_DeePKS/103_NO_KP_deepks_vdelta_r_1/deepks_hrtot.csr.ref b/tests/09_DeePKS/103_NO_KP_deepks_vdelta_r_1/deepks_hrtot.csr.ref deleted file mode 100644 index 48eaf60c3a..0000000000 --- a/tests/09_DeePKS/103_NO_KP_deepks_vdelta_r_1/deepks_hrtot.csr.ref +++ /dev/null @@ -1,6 +0,0 @@ -Matrix Dimension of H(R): 23 -Matrix number of H(R): 1 -0 0 0 144 - -8.42107904e-01 -3.36018443e-02 4.57125255e-01 2.48575301e-01 -1.13625395e-01 -1.07975761e+00 6.92996341e-02 -4.87107239e-01 -7.19175506e-03 1.10813024e-01 9.06402772e-04 9.15211632e-02 -3.36018443e-02 2.49598467e+00 3.30086601e-02 2.78231936e-02 9.74834800e-03 -4.25617904e-02 -2.15042800e-01 -2.49406909e-02 1.47258242e-02 -8.47667718e-02 3.92807294e-01 -7.69616324e-02 4.57125255e-01 3.30086601e-02 2.06576968e+00 -3.14993633e-02 9.87617873e-02 5.39706282e-01 -4.07170235e-02 6.21072104e-02 -1.28863490e-01 2.24558957e-01 6.67403369e-02 5.21985815e-01 2.48575301e-01 2.78231936e-02 -3.14993633e-02 9.32647363e-01 -2.91947949e-02 1.96293189e-01 8.84269909e-02 3.75282153e-01 4.31349825e-02 -1.22832429e-01 4.49127331e-02 6.44049862e-02 -1.13625395e-01 9.74834800e-03 9.87617873e-02 -2.91947949e-02 2.23408330e+00 -4.00917139e-01 6.85175949e-02 2.02359643e-01 -3.39239660e-02 -1.39561982e-01 2.40210913e-01 2.44261809e-01 -1.07975761e+00 -4.25617904e-02 5.39706282e-01 1.96293189e-01 -4.00917139e-01 -1.70549181e+00 6.48395657e-02 -7.05142835e-03 -2.62232291e-02 1.66491876e-01 -3.83218137e-02 1.50531270e-03 6.92996341e-02 -2.15042800e-01 -4.07170235e-02 8.84269909e-02 6.85175949e-02 6.48395657e-02 -4.74768823e-01 -2.57988231e-02 1.11451453e-02 1.52852492e-02 7.90528504e-03 2.42311440e-02 -4.87107239e-01 -2.49406909e-02 6.21072104e-02 3.75282153e-01 2.02359643e-01 -7.05142835e-03 -2.57988231e-02 -7.15138160e-01 -1.64611138e-03 1.55738906e-02 9.09657799e-02 3.66026282e-01 -7.19175506e-03 1.47258242e-02 -1.28863490e-01 4.31349825e-02 -3.39239660e-02 -2.62232291e-02 1.11451453e-02 -1.64611138e-03 7.76366120e-01 5.68900637e-02 -1.06890265e-02 1.61948811e-03 1.10813024e-01 -8.47667718e-02 2.24558957e-01 -1.22832429e-01 -1.39561982e-01 1.66491876e-01 1.52852492e-02 1.55738906e-02 5.68900637e-02 3.19891456e+00 7.27737784e-03 -1.42881909e-02 9.06402772e-04 3.92807294e-01 6.67403369e-02 4.49127331e-02 2.40210913e-01 -3.83218137e-02 7.90528504e-03 9.09657799e-02 -1.06890265e-02 7.27737784e-03 3.19660717e+00 -9.14134117e-02 9.15211632e-02 -7.69616324e-02 5.21985815e-01 6.44049862e-02 2.44261809e-01 1.50531270e-03 2.42311440e-02 3.66026282e-01 1.61948811e-03 -1.42881909e-02 -9.14134117e-02 2.85906938e+00 - 0 1 2 3 4 5 6 7 8 9 10 11 0 1 2 3 4 5 6 7 8 9 10 11 0 1 2 3 4 5 6 7 8 9 10 11 0 1 2 3 4 5 6 7 8 9 10 11 0 1 2 3 4 5 6 7 8 9 10 11 0 1 2 3 4 5 6 7 8 9 10 11 0 1 2 3 4 5 6 7 8 9 10 11 0 1 2 3 4 5 6 7 8 9 10 11 0 1 2 3 4 5 6 7 8 9 10 11 0 1 2 3 4 5 6 7 8 9 10 11 0 1 2 3 4 5 6 7 8 9 10 11 0 1 2 3 4 5 6 7 8 9 10 11 - 0 12 24 36 48 60 72 84 96 108 120 132 144 144 144 144 144 144 144 144 144 144 144 144 diff --git a/tests/09_DeePKS/103_NO_KP_deepks_vdelta_r_2/INPUT b/tests/09_DeePKS/103_NO_KP_deepks_vdelta_r_2/INPUT deleted file mode 100644 index be2febd2d5..0000000000 --- a/tests/09_DeePKS/103_NO_KP_deepks_vdelta_r_2/INPUT +++ /dev/null @@ -1,32 +0,0 @@ -INPUT_PARAMETERS -#Parameters (1.General) -suffix autotest -calculation scf - -nbands 6 -symmetry 0 -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB - -#Parameters (2.Iteration) -ecutwfc 50 -scf_thr 1e-6 -scf_nmax 50 - -#Parameters (3.Basis) -basis_type lcao -gamma_only 0 - -#Parameters (4.Smearing) -smearing_method gaussian -smearing_sigma 0.02 - -#Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.8 - -#Parameters (6.File) -deepks_out_labels 1 -deepks_scf 1 -deepks_model ../Model_ProjOrb/model_lda_pbe_18.ptg -deepks_v_delta -2 diff --git a/tests/09_DeePKS/103_NO_KP_deepks_vdelta_r_2/deepks_hrdelta.csr.ref b/tests/09_DeePKS/103_NO_KP_deepks_vdelta_r_2/deepks_hrdelta.csr.ref deleted file mode 100644 index 82fa87c452..0000000000 --- a/tests/09_DeePKS/103_NO_KP_deepks_vdelta_r_2/deepks_hrdelta.csr.ref +++ /dev/null @@ -1,6 +0,0 @@ -Matrix Dimension of H_delta(R): 23 -Matrix number of H_delta(R): 1 -0 0 0 144 - -1.17226740e-02 -7.57658616e-05 1.61519520e-03 2.14838886e-03 -1.34740806e-03 -8.30754807e-03 7.47161074e-04 -3.31336838e-03 -1.94293588e-03 2.75341536e-03 4.07871413e-04 4.10885575e-03 -7.57658616e-05 -2.29579487e-03 7.50289951e-04 1.02377862e-04 -5.48909920e-05 -2.94642184e-04 -8.25177686e-04 1.94818297e-04 -1.19266527e-04 -7.46808290e-05 -8.73270929e-04 3.20285418e-04 1.61519520e-03 7.50289951e-04 -5.96371822e-04 -5.81645379e-05 1.37541461e-03 3.71901393e-03 -1.08600805e-04 -5.51784265e-04 -1.08973508e-04 -2.26761593e-04 2.01147715e-04 -2.82691276e-04 2.14838886e-03 1.02377862e-04 -5.81645379e-05 -3.34036572e-03 3.80487988e-04 6.01680816e-04 5.43170647e-04 2.59440381e-03 -2.85153605e-04 3.33506511e-04 -1.05075443e-03 -3.77203641e-03 -1.34740806e-03 -5.48909920e-05 1.37541461e-03 3.80487988e-04 4.66309048e-04 -2.79020310e-03 2.98197496e-04 -7.00712687e-04 -7.72562067e-05 -1.48728519e-04 -2.30021977e-04 -3.50951237e-04 -8.30754807e-03 -2.94642184e-04 3.71901393e-03 6.01680816e-04 -2.79020310e-03 -1.26915681e-02 6.40881586e-04 -6.12780257e-05 -1.56385352e-03 1.75141762e-03 -4.37464862e-04 1.26280909e-05 7.47161074e-04 -8.25177686e-04 -1.08600805e-04 5.43170647e-04 2.98197496e-04 6.40881586e-04 -1.80813878e-03 -6.96488950e-05 2.45238335e-04 9.54997836e-05 1.72195202e-04 2.89724169e-04 -3.31336838e-03 1.94818297e-04 -5.51784265e-04 2.59440381e-03 -7.00712687e-04 -6.12780257e-05 -6.96488950e-05 -2.13180521e-03 -4.05397975e-05 1.71581618e-04 8.85356707e-04 3.60025084e-03 -1.94293588e-03 -1.19266527e-04 -1.08973508e-04 -2.85153605e-04 -7.72562067e-05 -1.56385352e-03 2.45238335e-04 -4.05397975e-05 -6.06345144e-04 7.81662817e-04 -1.54549695e-04 2.40887746e-05 2.75341536e-03 -7.46808290e-05 -2.26761593e-04 3.33506511e-04 -1.48728519e-04 1.75141762e-03 9.54997836e-05 1.71581618e-04 7.81662817e-04 -5.88627411e-04 -2.89432341e-04 -2.73772524e-04 4.07871413e-04 -8.73270929e-04 2.01147715e-04 -1.05075443e-03 -2.30021977e-04 -4.37464862e-04 1.72195202e-04 8.85356707e-04 -1.54549695e-04 -2.89432341e-04 -2.37112515e-03 -1.20550576e-03 4.10885575e-03 3.20285418e-04 -2.82691276e-04 -3.77203641e-03 -3.50951237e-04 1.26280909e-05 2.89724169e-04 3.60025084e-03 2.40887746e-05 -2.73772524e-04 -1.20550576e-03 -7.09398430e-03 - 0 1 2 3 4 5 6 7 8 9 10 11 0 1 2 3 4 5 6 7 8 9 10 11 0 1 2 3 4 5 6 7 8 9 10 11 0 1 2 3 4 5 6 7 8 9 10 11 0 1 2 3 4 5 6 7 8 9 10 11 0 1 2 3 4 5 6 7 8 9 10 11 0 1 2 3 4 5 6 7 8 9 10 11 0 1 2 3 4 5 6 7 8 9 10 11 0 1 2 3 4 5 6 7 8 9 10 11 0 1 2 3 4 5 6 7 8 9 10 11 0 1 2 3 4 5 6 7 8 9 10 11 0 1 2 3 4 5 6 7 8 9 10 11 - 0 12 24 36 48 60 72 84 96 108 120 132 144 144 144 144 144 144 144 144 144 144 144 144 diff --git a/tests/09_DeePKS/103_NO_KP_deepks_vdelta_r_2/deepks_hrtot.csr.ref b/tests/09_DeePKS/103_NO_KP_deepks_vdelta_r_2/deepks_hrtot.csr.ref deleted file mode 100644 index 48eaf60c3a..0000000000 --- a/tests/09_DeePKS/103_NO_KP_deepks_vdelta_r_2/deepks_hrtot.csr.ref +++ /dev/null @@ -1,6 +0,0 @@ -Matrix Dimension of H(R): 23 -Matrix number of H(R): 1 -0 0 0 144 - -8.42107904e-01 -3.36018443e-02 4.57125255e-01 2.48575301e-01 -1.13625395e-01 -1.07975761e+00 6.92996341e-02 -4.87107239e-01 -7.19175506e-03 1.10813024e-01 9.06402772e-04 9.15211632e-02 -3.36018443e-02 2.49598467e+00 3.30086601e-02 2.78231936e-02 9.74834800e-03 -4.25617904e-02 -2.15042800e-01 -2.49406909e-02 1.47258242e-02 -8.47667718e-02 3.92807294e-01 -7.69616324e-02 4.57125255e-01 3.30086601e-02 2.06576968e+00 -3.14993633e-02 9.87617873e-02 5.39706282e-01 -4.07170235e-02 6.21072104e-02 -1.28863490e-01 2.24558957e-01 6.67403369e-02 5.21985815e-01 2.48575301e-01 2.78231936e-02 -3.14993633e-02 9.32647363e-01 -2.91947949e-02 1.96293189e-01 8.84269909e-02 3.75282153e-01 4.31349825e-02 -1.22832429e-01 4.49127331e-02 6.44049862e-02 -1.13625395e-01 9.74834800e-03 9.87617873e-02 -2.91947949e-02 2.23408330e+00 -4.00917139e-01 6.85175949e-02 2.02359643e-01 -3.39239660e-02 -1.39561982e-01 2.40210913e-01 2.44261809e-01 -1.07975761e+00 -4.25617904e-02 5.39706282e-01 1.96293189e-01 -4.00917139e-01 -1.70549181e+00 6.48395657e-02 -7.05142835e-03 -2.62232291e-02 1.66491876e-01 -3.83218137e-02 1.50531270e-03 6.92996341e-02 -2.15042800e-01 -4.07170235e-02 8.84269909e-02 6.85175949e-02 6.48395657e-02 -4.74768823e-01 -2.57988231e-02 1.11451453e-02 1.52852492e-02 7.90528504e-03 2.42311440e-02 -4.87107239e-01 -2.49406909e-02 6.21072104e-02 3.75282153e-01 2.02359643e-01 -7.05142835e-03 -2.57988231e-02 -7.15138160e-01 -1.64611138e-03 1.55738906e-02 9.09657799e-02 3.66026282e-01 -7.19175506e-03 1.47258242e-02 -1.28863490e-01 4.31349825e-02 -3.39239660e-02 -2.62232291e-02 1.11451453e-02 -1.64611138e-03 7.76366120e-01 5.68900637e-02 -1.06890265e-02 1.61948811e-03 1.10813024e-01 -8.47667718e-02 2.24558957e-01 -1.22832429e-01 -1.39561982e-01 1.66491876e-01 1.52852492e-02 1.55738906e-02 5.68900637e-02 3.19891456e+00 7.27737784e-03 -1.42881909e-02 9.06402772e-04 3.92807294e-01 6.67403369e-02 4.49127331e-02 2.40210913e-01 -3.83218137e-02 7.90528504e-03 9.09657799e-02 -1.06890265e-02 7.27737784e-03 3.19660717e+00 -9.14134117e-02 9.15211632e-02 -7.69616324e-02 5.21985815e-01 6.44049862e-02 2.44261809e-01 1.50531270e-03 2.42311440e-02 3.66026282e-01 1.61948811e-03 -1.42881909e-02 -9.14134117e-02 2.85906938e+00 - 0 1 2 3 4 5 6 7 8 9 10 11 0 1 2 3 4 5 6 7 8 9 10 11 0 1 2 3 4 5 6 7 8 9 10 11 0 1 2 3 4 5 6 7 8 9 10 11 0 1 2 3 4 5 6 7 8 9 10 11 0 1 2 3 4 5 6 7 8 9 10 11 0 1 2 3 4 5 6 7 8 9 10 11 0 1 2 3 4 5 6 7 8 9 10 11 0 1 2 3 4 5 6 7 8 9 10 11 0 1 2 3 4 5 6 7 8 9 10 11 0 1 2 3 4 5 6 7 8 9 10 11 0 1 2 3 4 5 6 7 8 9 10 11 - 0 12 24 36 48 60 72 84 96 108 120 132 144 144 144 144 144 144 144 144 144 144 144 144 diff --git a/tests/09_DeePKS/103_NO_KP_deepks_vdelta_r_2/result.ref b/tests/09_DeePKS/103_NO_KP_deepks_vdelta_r_2/result.ref deleted file mode 100644 index 3fce0adcd5..0000000000 --- a/tests/09_DeePKS/103_NO_KP_deepks_vdelta_r_2/result.ref +++ /dev/null @@ -1,11 +0,0 @@ -etotref -466.043171161868 -etotperatomref -155.3477237206 -deepks_desc 2.319019 -deepks_dm_eig 10.787022245391766 -deepks_e_label 17.12676450564565 -deepks_edelta 0.09815855485768665 -deepks_hr_label_pass 0 -deepks_vdelta_r_pass 0 -deepks_phialpha_r 73.40481582340394 -deepks_gevdm 54.0 -totaltimeref 1.81 diff --git a/tests/09_DeePKS/104_NO_GO_deepks_out_2/INPUT b/tests/09_DeePKS/104_NO_GO_deepks_out_2/INPUT deleted file mode 100644 index 9da98259c2..0000000000 --- a/tests/09_DeePKS/104_NO_GO_deepks_out_2/INPUT +++ /dev/null @@ -1,36 +0,0 @@ -INPUT_PARAMETERS -#Parameters (1.General) -suffix autotest -calculation scf - -nbands 6 -symmetry 0 -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB - -#Parameters (2.Iteration) -ecutwfc 50 -scf_thr 1e-6 -scf_nmax 50 - -#Parameters (3.Basis) -basis_type lcao -gamma_only 1 - -#Parameters (4.Smearing) -smearing_method gaussian -smearing_sigma 0.02 - -#Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.8 - -#Parameters (6.File) -deepks_out_labels 2 - -deepks_bandgap 1 -deepks_v_delta 1 -cal_force 1 -cal_stress 1 - -dft_functional lda \ No newline at end of file diff --git a/tests/09_DeePKS/104_NO_KP_deepks_out_2/INPUT b/tests/09_DeePKS/104_NO_KP_deepks_out_2/INPUT deleted file mode 100644 index 253a2b4a00..0000000000 --- a/tests/09_DeePKS/104_NO_KP_deepks_out_2/INPUT +++ /dev/null @@ -1,36 +0,0 @@ -INPUT_PARAMETERS -#Parameters (1.General) -suffix autotest -calculation scf - -nbands 6 -symmetry 0 -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB - -#Parameters (2.Iteration) -ecutwfc 50 -scf_thr 1e-6 -scf_nmax 50 - -#Parameters (3.Basis) -basis_type lcao -gamma_only 0 - -#Parameters (4.Smearing) -smearing_method gaussian -smearing_sigma 0.02 - -#Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.8 - -#Parameters (6.File) -deepks_out_labels 2 - -deepks_bandgap 1 -deepks_v_delta 1 -cal_force 1 -cal_stress 1 - -dft_functional lda \ No newline at end of file diff --git a/tests/09_DeePKS/10_NO_KP_deepks_basic/INPUT b/tests/09_DeePKS/10_NO_KP_deepks_basic/INPUT new file mode 100644 index 0000000000..500de565a9 --- /dev/null +++ b/tests/09_DeePKS/10_NO_KP_deepks_basic/INPUT @@ -0,0 +1,24 @@ +INPUT_PARAMETERS +suffix autotest +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB +calculation scf + +ecutwfc 50 +scf_thr 1e-6 +scf_nmax 50 +basis_type lcao +dft_functional lda +gamma_only 0 +mixing_type broyden +mixing_beta 0.8 +mixing_gg0 0.0 +nbands 18 +smearing_method gaussian +smearing_sigma 0.02 + +cal_force 1 +cal_stress 1 +deepks_out_labels 1 +deepks_scf 1 +deepks_model ../Model_ProjOrb/model_lda_pbe_18.ptg diff --git a/tests/09_DeePKS/10_NO_KP_deepks_basic/KPT b/tests/09_DeePKS/10_NO_KP_deepks_basic/KPT new file mode 100644 index 0000000000..e769af7638 --- /dev/null +++ b/tests/09_DeePKS/10_NO_KP_deepks_basic/KPT @@ -0,0 +1,4 @@ +K_POINTS +0 +Gamma +2 1 1 0 0 0 diff --git a/tests/09_DeePKS/103_NO_KP_deepks_basic/README b/tests/09_DeePKS/10_NO_KP_deepks_basic/README similarity index 100% rename from tests/09_DeePKS/103_NO_KP_deepks_basic/README rename to tests/09_DeePKS/10_NO_KP_deepks_basic/README diff --git a/tests/09_DeePKS/103_NO_KP_deepks_basic/STRU b/tests/09_DeePKS/10_NO_KP_deepks_basic/STRU similarity index 100% rename from tests/09_DeePKS/103_NO_KP_deepks_basic/STRU rename to tests/09_DeePKS/10_NO_KP_deepks_basic/STRU diff --git a/tests/09_DeePKS/103_NO_KP_deepks_basic/result.ref b/tests/09_DeePKS/10_NO_KP_deepks_basic/result.ref similarity index 100% rename from tests/09_DeePKS/103_NO_KP_deepks_basic/result.ref rename to tests/09_DeePKS/10_NO_KP_deepks_basic/result.ref diff --git a/tests/09_DeePKS/11_NO_GO_deepks_bandgap/INPUT b/tests/09_DeePKS/11_NO_GO_deepks_bandgap/INPUT new file mode 100644 index 0000000000..5e08a1b052 --- /dev/null +++ b/tests/09_DeePKS/11_NO_GO_deepks_bandgap/INPUT @@ -0,0 +1,24 @@ +INPUT_PARAMETERS +suffix autotest +calculation scf + +ecutwfc 50 +scf_thr 1e-6 +scf_nmax 35 +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB +basis_type lcao +dft_functional lda +gamma_only 1 +mixing_type broyden +mixing_beta 0.8 +smearing_method gaussian +smearing_sigma 0.02 + +cal_force 0 +cal_stress 0 +deepks_scf 1 +deepks_model ../Model_ProjOrb/model_lda_pbe_18.ptg +deepks_out_labels 1 +deepks_bandgap 1 +deepks_band_range -1 0 diff --git a/tests/09_DeePKS/102_NO_GO_deepks_scf/KPT b/tests/09_DeePKS/11_NO_GO_deepks_bandgap/KPT similarity index 100% rename from tests/09_DeePKS/102_NO_GO_deepks_scf/KPT rename to tests/09_DeePKS/11_NO_GO_deepks_bandgap/KPT diff --git a/tests/09_DeePKS/103_NO_GO_deepks_bandgap/README b/tests/09_DeePKS/11_NO_GO_deepks_bandgap/README similarity index 100% rename from tests/09_DeePKS/103_NO_GO_deepks_bandgap/README rename to tests/09_DeePKS/11_NO_GO_deepks_bandgap/README diff --git a/tests/09_DeePKS/103_NO_GO_deepks_bandgap/STRU b/tests/09_DeePKS/11_NO_GO_deepks_bandgap/STRU similarity index 100% rename from tests/09_DeePKS/103_NO_GO_deepks_bandgap/STRU rename to tests/09_DeePKS/11_NO_GO_deepks_bandgap/STRU diff --git a/tests/09_DeePKS/103_NO_GO_deepks_bandgap/result.ref b/tests/09_DeePKS/11_NO_GO_deepks_bandgap/result.ref similarity index 100% rename from tests/09_DeePKS/103_NO_GO_deepks_bandgap/result.ref rename to tests/09_DeePKS/11_NO_GO_deepks_bandgap/result.ref diff --git a/tests/09_DeePKS/12_NO_GO_deepks_bandgap_2/INPUT b/tests/09_DeePKS/12_NO_GO_deepks_bandgap_2/INPUT new file mode 100644 index 0000000000..7ad7953278 --- /dev/null +++ b/tests/09_DeePKS/12_NO_GO_deepks_bandgap_2/INPUT @@ -0,0 +1,24 @@ +INPUT_PARAMETERS +suffix autotest +calculation scf + +ecutwfc 50 +scf_thr 1e-6 +scf_nmax 35 +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB +basis_type lcao +dft_functional lda +gamma_only 1 +mixing_type broyden +mixing_beta 0.8 +smearing_method gaussian +smearing_sigma 0.02 + +cal_force 0 +cal_stress 0 +deepks_scf 1 +deepks_model ../Model_ProjOrb/model_lda_pbe_18.ptg +deepks_out_labels 1 +deepks_bandgap 2 +deepks_band_range -1 0 diff --git a/tests/09_DeePKS/103_NO_GO_deepks_bandgap/KPT b/tests/09_DeePKS/12_NO_GO_deepks_bandgap_2/KPT similarity index 100% rename from tests/09_DeePKS/103_NO_GO_deepks_bandgap/KPT rename to tests/09_DeePKS/12_NO_GO_deepks_bandgap_2/KPT diff --git a/tests/09_DeePKS/103_NO_GO_deepks_bandgap_2/README b/tests/09_DeePKS/12_NO_GO_deepks_bandgap_2/README similarity index 100% rename from tests/09_DeePKS/103_NO_GO_deepks_bandgap_2/README rename to tests/09_DeePKS/12_NO_GO_deepks_bandgap_2/README diff --git a/tests/09_DeePKS/103_NO_GO_deepks_bandgap_2/STRU b/tests/09_DeePKS/12_NO_GO_deepks_bandgap_2/STRU similarity index 100% rename from tests/09_DeePKS/103_NO_GO_deepks_bandgap_2/STRU rename to tests/09_DeePKS/12_NO_GO_deepks_bandgap_2/STRU diff --git a/tests/09_DeePKS/103_NO_GO_deepks_bandgap_2/result.ref b/tests/09_DeePKS/12_NO_GO_deepks_bandgap_2/result.ref similarity index 100% rename from tests/09_DeePKS/103_NO_GO_deepks_bandgap_2/result.ref rename to tests/09_DeePKS/12_NO_GO_deepks_bandgap_2/result.ref diff --git a/tests/09_DeePKS/13_NO_GO_deepks_bandgap_3/INPUT b/tests/09_DeePKS/13_NO_GO_deepks_bandgap_3/INPUT new file mode 100644 index 0000000000..9148f4eb20 --- /dev/null +++ b/tests/09_DeePKS/13_NO_GO_deepks_bandgap_3/INPUT @@ -0,0 +1,23 @@ +INPUT_PARAMETERS +suffix autotest +calculation scf + +ecutwfc 50 +scf_thr 1e-6 +scf_nmax 35 +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB +basis_type lcao +dft_functional lda +gamma_only 1 +mixing_type broyden +mixing_beta 0.8 +smearing_method gaussian +smearing_sigma 0.02 + +cal_force 0 +cal_stress 0 +deepks_scf 1 +deepks_model ../Model_ProjOrb/model_lda_pbe_18.ptg +deepks_out_labels 1 +deepks_bandgap 3 diff --git a/tests/09_DeePKS/103_NO_GO_deepks_bandgap_2/KPT b/tests/09_DeePKS/13_NO_GO_deepks_bandgap_3/KPT similarity index 100% rename from tests/09_DeePKS/103_NO_GO_deepks_bandgap_2/KPT rename to tests/09_DeePKS/13_NO_GO_deepks_bandgap_3/KPT diff --git a/tests/09_DeePKS/103_NO_GO_deepks_bandgap_3/README b/tests/09_DeePKS/13_NO_GO_deepks_bandgap_3/README similarity index 100% rename from tests/09_DeePKS/103_NO_GO_deepks_bandgap_3/README rename to tests/09_DeePKS/13_NO_GO_deepks_bandgap_3/README diff --git a/tests/09_DeePKS/103_NO_GO_deepks_bandgap_3/STRU b/tests/09_DeePKS/13_NO_GO_deepks_bandgap_3/STRU similarity index 100% rename from tests/09_DeePKS/103_NO_GO_deepks_bandgap_3/STRU rename to tests/09_DeePKS/13_NO_GO_deepks_bandgap_3/STRU diff --git a/tests/09_DeePKS/13_NO_GO_deepks_bandgap_3/result.ref b/tests/09_DeePKS/13_NO_GO_deepks_bandgap_3/result.ref new file mode 100644 index 0000000000..936d94803e --- /dev/null +++ b/tests/09_DeePKS/13_NO_GO_deepks_bandgap_3/result.ref @@ -0,0 +1,10 @@ +etotref -466.7530905050443 +etotperatomref -155.5843635017 +deepks_desc 2.297551 +deepks_dm_eig 10.742704784158393 +deepks_e_label 17.152853550955058 +deepks_edelta 0.09792547271228358 +deepks_o_label 0.08594440507271628 +deepks_odelta 0.0013346191380371325 +deepks_oprec 0.01788986161267927 +totaltimeref 1.22 diff --git a/tests/09_DeePKS/14_NO_KP_deepks_bandgap/INPUT b/tests/09_DeePKS/14_NO_KP_deepks_bandgap/INPUT new file mode 100644 index 0000000000..79614a455e --- /dev/null +++ b/tests/09_DeePKS/14_NO_KP_deepks_bandgap/INPUT @@ -0,0 +1,25 @@ +INPUT_PARAMETERS +calculation scf +suffix autotest +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB + +ecutwfc 50 +scf_thr 1e-06 +scf_nmax 35 +basis_type lcao +dft_functional lda +gamma_only 0 +mixing_type broyden +mixing_beta 0.8 +smearing_method gaussian +smearing_sigma 0.02 + +cal_force 0 +cal_stress 0 +deepks_scf 1 +deepks_out_labels 1 +deepks_bandgap 1 +deepks_band_range -1 0 +deepks_model ../Model_ProjOrb/model_lda_pbe_18.ptg +symmetry_prec 1e-5 diff --git a/tests/09_DeePKS/103_NO_KP_deepks_bandgap/KPT b/tests/09_DeePKS/14_NO_KP_deepks_bandgap/KPT similarity index 100% rename from tests/09_DeePKS/103_NO_KP_deepks_bandgap/KPT rename to tests/09_DeePKS/14_NO_KP_deepks_bandgap/KPT diff --git a/tests/09_DeePKS/103_NO_KP_deepks_bandgap/README b/tests/09_DeePKS/14_NO_KP_deepks_bandgap/README similarity index 100% rename from tests/09_DeePKS/103_NO_KP_deepks_bandgap/README rename to tests/09_DeePKS/14_NO_KP_deepks_bandgap/README diff --git a/tests/09_DeePKS/103_NO_KP_deepks_bandgap/STRU b/tests/09_DeePKS/14_NO_KP_deepks_bandgap/STRU similarity index 100% rename from tests/09_DeePKS/103_NO_KP_deepks_bandgap/STRU rename to tests/09_DeePKS/14_NO_KP_deepks_bandgap/STRU diff --git a/tests/09_DeePKS/103_NO_KP_deepks_bandgap/result.ref b/tests/09_DeePKS/14_NO_KP_deepks_bandgap/result.ref similarity index 100% rename from tests/09_DeePKS/103_NO_KP_deepks_bandgap/result.ref rename to tests/09_DeePKS/14_NO_KP_deepks_bandgap/result.ref diff --git a/tests/09_DeePKS/15_NO_KP_deepks_bandgap_2/INPUT b/tests/09_DeePKS/15_NO_KP_deepks_bandgap_2/INPUT new file mode 100644 index 0000000000..f9950dff40 --- /dev/null +++ b/tests/09_DeePKS/15_NO_KP_deepks_bandgap_2/INPUT @@ -0,0 +1,25 @@ +INPUT_PARAMETERS +calculation scf +suffix autotest +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB + +ecutwfc 50 +scf_thr 1e-06 +scf_nmax 35 +basis_type lcao +dft_functional lda +gamma_only 0 +mixing_type broyden +mixing_beta 0.8 +smearing_method gaussian +smearing_sigma 0.02 + +cal_force 0 +cal_stress 0 +deepks_scf 1 +deepks_out_labels 1 +deepks_bandgap 2 +deepks_band_range -1 0 +deepks_model ../Model_ProjOrb/model_lda_pbe_18.ptg +symmetry_prec 1e-5 diff --git a/tests/09_DeePKS/103_NO_KP_deepks_bandgap_2/KPT b/tests/09_DeePKS/15_NO_KP_deepks_bandgap_2/KPT similarity index 100% rename from tests/09_DeePKS/103_NO_KP_deepks_bandgap_2/KPT rename to tests/09_DeePKS/15_NO_KP_deepks_bandgap_2/KPT diff --git a/tests/09_DeePKS/103_NO_KP_deepks_bandgap_2/README b/tests/09_DeePKS/15_NO_KP_deepks_bandgap_2/README similarity index 100% rename from tests/09_DeePKS/103_NO_KP_deepks_bandgap_2/README rename to tests/09_DeePKS/15_NO_KP_deepks_bandgap_2/README diff --git a/tests/09_DeePKS/103_NO_KP_deepks_bandgap_2/STRU b/tests/09_DeePKS/15_NO_KP_deepks_bandgap_2/STRU similarity index 100% rename from tests/09_DeePKS/103_NO_KP_deepks_bandgap_2/STRU rename to tests/09_DeePKS/15_NO_KP_deepks_bandgap_2/STRU diff --git a/tests/09_DeePKS/103_NO_KP_deepks_bandgap_2/result.ref b/tests/09_DeePKS/15_NO_KP_deepks_bandgap_2/result.ref similarity index 100% rename from tests/09_DeePKS/103_NO_KP_deepks_bandgap_2/result.ref rename to tests/09_DeePKS/15_NO_KP_deepks_bandgap_2/result.ref diff --git a/tests/09_DeePKS/16_NO_KP_deepks_bandgap_3/INPUT b/tests/09_DeePKS/16_NO_KP_deepks_bandgap_3/INPUT new file mode 100644 index 0000000000..955195a853 --- /dev/null +++ b/tests/09_DeePKS/16_NO_KP_deepks_bandgap_3/INPUT @@ -0,0 +1,24 @@ +INPUT_PARAMETERS +calculation scf +suffix autotest +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB + +ecutwfc 50 +scf_thr 1e-06 +scf_nmax 35 +basis_type lcao +dft_functional lda +gamma_only 0 +mixing_type broyden +mixing_beta 0.8 +smearing_method gaussian +smearing_sigma 0.02 + +cal_force 0 +cal_stress 0 +deepks_scf 1 +deepks_out_labels 1 +deepks_bandgap 3 +deepks_model ../Model_ProjOrb/model_lda_pbe_18.ptg +symmetry_prec 1e-5 diff --git a/tests/09_DeePKS/103_NO_KP_deepks_bandgap_3/KPT b/tests/09_DeePKS/16_NO_KP_deepks_bandgap_3/KPT similarity index 100% rename from tests/09_DeePKS/103_NO_KP_deepks_bandgap_3/KPT rename to tests/09_DeePKS/16_NO_KP_deepks_bandgap_3/KPT diff --git a/tests/09_DeePKS/103_NO_KP_deepks_bandgap_3/README b/tests/09_DeePKS/16_NO_KP_deepks_bandgap_3/README similarity index 100% rename from tests/09_DeePKS/103_NO_KP_deepks_bandgap_3/README rename to tests/09_DeePKS/16_NO_KP_deepks_bandgap_3/README diff --git a/tests/09_DeePKS/16_NO_KP_deepks_bandgap_3/STRU b/tests/09_DeePKS/16_NO_KP_deepks_bandgap_3/STRU new file mode 100644 index 0000000000..5a76b6ea66 --- /dev/null +++ b/tests/09_DeePKS/16_NO_KP_deepks_bandgap_3/STRU @@ -0,0 +1,32 @@ +ATOMIC_SPECIES +H 1.00 H_ONCV_PBE-1.0.upf +O 1.00 O_ONCV_PBE-1.0.upf + + +LATTICE_CONSTANT +1 + +LATTICE_VECTORS +15 0 0 +0 15 0 +0 0 15 + +ATOMIC_POSITIONS +Cartesian # Cartesian(Unit is LATTICE_CONSTANT) + +H +0.0 +2 +2.451268787740 18.304568063522 29.094778093001 0 0 0 +0.634768813069 17.692018052980 31.090158495369 0 0 0 +O +0.0 +1 +0.953925982272 17.270156608314 29.386199785767 0 0 0 + +NUMERICAL_ORBITAL +H_gga_6au_60Ry_1s.orb +O_gga_6au_60Ry_1s1p.orb + +NUMERICAL_DESCRIPTOR +../Model_ProjOrb/2au_20Ry_jle.orb diff --git a/tests/09_DeePKS/16_NO_KP_deepks_bandgap_3/result.ref b/tests/09_DeePKS/16_NO_KP_deepks_bandgap_3/result.ref new file mode 100644 index 0000000000..af081db36c --- /dev/null +++ b/tests/09_DeePKS/16_NO_KP_deepks_bandgap_3/result.ref @@ -0,0 +1,10 @@ +etotref -463.0496320856034 +etotperatomref -154.3498773619 +deepks_desc 2.195131 +deepks_dm_eig 10.54665348088368 +deepks_e_label 17.016754013120217 +deepks_edelta 0.09796908127552584 +deepks_o_label 0.14114716003295213 +deepks_odelta 0.0031174723761221435 +deepks_oprec 0.16883858360329146 +totaltimeref 2.96 diff --git a/tests/09_DeePKS/17_NO_GO_deepks_vdelta_1/INPUT b/tests/09_DeePKS/17_NO_GO_deepks_vdelta_1/INPUT new file mode 100644 index 0000000000..55dc3c779f --- /dev/null +++ b/tests/09_DeePKS/17_NO_GO_deepks_vdelta_1/INPUT @@ -0,0 +1,32 @@ +INPUT_PARAMETERS +#Parameters (1.General) +suffix autotest +calculation scf + +nbands 6 +symmetry 0 +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB + +#Parameters (2.Iteration) +ecutwfc 50 +scf_thr 1e-6 +scf_nmax 50 + +#Parameters (3.Basis) +basis_type lcao +gamma_only 0 + +#Parameters (4.Smearing) +smearing_method gaussian +smearing_sigma 0.02 + +#Parameters (5.Mixing) +mixing_type broyden +mixing_beta 0.8 + +#Parameters (6.File) +deepks_out_labels 1 +deepks_scf 1 +deepks_model ../Model_ProjOrb/model_lda_pbe_18.ptg +deepks_v_delta 1 diff --git a/tests/09_DeePKS/103_NO_GO_deepks_bandgap_3/KPT b/tests/09_DeePKS/17_NO_GO_deepks_vdelta_1/KPT similarity index 100% rename from tests/09_DeePKS/103_NO_GO_deepks_bandgap_3/KPT rename to tests/09_DeePKS/17_NO_GO_deepks_vdelta_1/KPT diff --git a/tests/09_DeePKS/103_NO_GO_deepks_vdelta_1/README b/tests/09_DeePKS/17_NO_GO_deepks_vdelta_1/README similarity index 100% rename from tests/09_DeePKS/103_NO_GO_deepks_vdelta_1/README rename to tests/09_DeePKS/17_NO_GO_deepks_vdelta_1/README diff --git a/tests/09_DeePKS/103_NO_GO_deepks_vdelta_1/STRU b/tests/09_DeePKS/17_NO_GO_deepks_vdelta_1/STRU similarity index 100% rename from tests/09_DeePKS/103_NO_GO_deepks_vdelta_1/STRU rename to tests/09_DeePKS/17_NO_GO_deepks_vdelta_1/STRU diff --git a/tests/09_DeePKS/103_NO_GO_deepks_vdelta_1/result.ref b/tests/09_DeePKS/17_NO_GO_deepks_vdelta_1/result.ref similarity index 100% rename from tests/09_DeePKS/103_NO_GO_deepks_vdelta_1/result.ref rename to tests/09_DeePKS/17_NO_GO_deepks_vdelta_1/result.ref diff --git a/tests/09_DeePKS/18_NO_GO_deepks_vdelta_2/INPUT b/tests/09_DeePKS/18_NO_GO_deepks_vdelta_2/INPUT new file mode 100644 index 0000000000..99eea24f4d --- /dev/null +++ b/tests/09_DeePKS/18_NO_GO_deepks_vdelta_2/INPUT @@ -0,0 +1,32 @@ +INPUT_PARAMETERS +#Parameters (1.General) +suffix autotest +calculation scf + +nbands 6 +symmetry 0 +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB + +#Parameters (2.Iteration) +ecutwfc 50 +scf_thr 1e-6 +scf_nmax 50 + +#Parameters (3.Basis) +basis_type lcao +gamma_only 0 + +#Parameters (4.Smearing) +smearing_method gaussian +smearing_sigma 0.02 + +#Parameters (5.Mixing) +mixing_type broyden +mixing_beta 0.8 + +#Parameters (6.File) +deepks_out_labels 1 +deepks_scf 1 +deepks_model ../Model_ProjOrb/model_lda_pbe_18.ptg +deepks_v_delta 2 diff --git a/tests/09_DeePKS/103_NO_GO_deepks_basic/KPT b/tests/09_DeePKS/18_NO_GO_deepks_vdelta_2/KPT similarity index 100% rename from tests/09_DeePKS/103_NO_GO_deepks_basic/KPT rename to tests/09_DeePKS/18_NO_GO_deepks_vdelta_2/KPT diff --git a/tests/09_DeePKS/103_NO_GO_deepks_vdelta_2/README b/tests/09_DeePKS/18_NO_GO_deepks_vdelta_2/README similarity index 100% rename from tests/09_DeePKS/103_NO_GO_deepks_vdelta_2/README rename to tests/09_DeePKS/18_NO_GO_deepks_vdelta_2/README diff --git a/tests/09_DeePKS/103_NO_GO_deepks_vdelta_2/STRU b/tests/09_DeePKS/18_NO_GO_deepks_vdelta_2/STRU similarity index 100% rename from tests/09_DeePKS/103_NO_GO_deepks_vdelta_2/STRU rename to tests/09_DeePKS/18_NO_GO_deepks_vdelta_2/STRU diff --git a/tests/09_DeePKS/103_NO_GO_deepks_vdelta_2/result.ref b/tests/09_DeePKS/18_NO_GO_deepks_vdelta_2/result.ref similarity index 100% rename from tests/09_DeePKS/103_NO_GO_deepks_vdelta_2/result.ref rename to tests/09_DeePKS/18_NO_GO_deepks_vdelta_2/result.ref diff --git a/tests/09_DeePKS/19_NO_KP_deepks_vdelta_1/INPUT b/tests/09_DeePKS/19_NO_KP_deepks_vdelta_1/INPUT new file mode 100644 index 0000000000..55dc3c779f --- /dev/null +++ b/tests/09_DeePKS/19_NO_KP_deepks_vdelta_1/INPUT @@ -0,0 +1,32 @@ +INPUT_PARAMETERS +#Parameters (1.General) +suffix autotest +calculation scf + +nbands 6 +symmetry 0 +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB + +#Parameters (2.Iteration) +ecutwfc 50 +scf_thr 1e-6 +scf_nmax 50 + +#Parameters (3.Basis) +basis_type lcao +gamma_only 0 + +#Parameters (4.Smearing) +smearing_method gaussian +smearing_sigma 0.02 + +#Parameters (5.Mixing) +mixing_type broyden +mixing_beta 0.8 + +#Parameters (6.File) +deepks_out_labels 1 +deepks_scf 1 +deepks_model ../Model_ProjOrb/model_lda_pbe_18.ptg +deepks_v_delta 1 diff --git a/tests/09_DeePKS/103_NO_KP_deepks_vdelta_1/KPT b/tests/09_DeePKS/19_NO_KP_deepks_vdelta_1/KPT similarity index 100% rename from tests/09_DeePKS/103_NO_KP_deepks_vdelta_1/KPT rename to tests/09_DeePKS/19_NO_KP_deepks_vdelta_1/KPT diff --git a/tests/09_DeePKS/103_NO_KP_deepks_vdelta_1/README b/tests/09_DeePKS/19_NO_KP_deepks_vdelta_1/README similarity index 100% rename from tests/09_DeePKS/103_NO_KP_deepks_vdelta_1/README rename to tests/09_DeePKS/19_NO_KP_deepks_vdelta_1/README diff --git a/tests/09_DeePKS/103_NO_GO_deepks_vdelta_r_1/STRU b/tests/09_DeePKS/19_NO_KP_deepks_vdelta_1/STRU similarity index 100% rename from tests/09_DeePKS/103_NO_GO_deepks_vdelta_r_1/STRU rename to tests/09_DeePKS/19_NO_KP_deepks_vdelta_1/STRU diff --git a/tests/09_DeePKS/103_NO_KP_deepks_vdelta_1/result.ref b/tests/09_DeePKS/19_NO_KP_deepks_vdelta_1/result.ref similarity index 100% rename from tests/09_DeePKS/103_NO_KP_deepks_vdelta_1/result.ref rename to tests/09_DeePKS/19_NO_KP_deepks_vdelta_1/result.ref diff --git a/tests/09_DeePKS/20_NO_KP_deepks_vdelta_2/INPUT b/tests/09_DeePKS/20_NO_KP_deepks_vdelta_2/INPUT new file mode 100644 index 0000000000..99eea24f4d --- /dev/null +++ b/tests/09_DeePKS/20_NO_KP_deepks_vdelta_2/INPUT @@ -0,0 +1,32 @@ +INPUT_PARAMETERS +#Parameters (1.General) +suffix autotest +calculation scf + +nbands 6 +symmetry 0 +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB + +#Parameters (2.Iteration) +ecutwfc 50 +scf_thr 1e-6 +scf_nmax 50 + +#Parameters (3.Basis) +basis_type lcao +gamma_only 0 + +#Parameters (4.Smearing) +smearing_method gaussian +smearing_sigma 0.02 + +#Parameters (5.Mixing) +mixing_type broyden +mixing_beta 0.8 + +#Parameters (6.File) +deepks_out_labels 1 +deepks_scf 1 +deepks_model ../Model_ProjOrb/model_lda_pbe_18.ptg +deepks_v_delta 2 diff --git a/tests/09_DeePKS/103_NO_KP_deepks_vdelta_2/KPT b/tests/09_DeePKS/20_NO_KP_deepks_vdelta_2/KPT similarity index 100% rename from tests/09_DeePKS/103_NO_KP_deepks_vdelta_2/KPT rename to tests/09_DeePKS/20_NO_KP_deepks_vdelta_2/KPT diff --git a/tests/09_DeePKS/103_NO_KP_deepks_vdelta_2/README b/tests/09_DeePKS/20_NO_KP_deepks_vdelta_2/README similarity index 100% rename from tests/09_DeePKS/103_NO_KP_deepks_vdelta_2/README rename to tests/09_DeePKS/20_NO_KP_deepks_vdelta_2/README diff --git a/tests/09_DeePKS/103_NO_GO_deepks_vdelta_r_2/STRU b/tests/09_DeePKS/20_NO_KP_deepks_vdelta_2/STRU similarity index 100% rename from tests/09_DeePKS/103_NO_GO_deepks_vdelta_r_2/STRU rename to tests/09_DeePKS/20_NO_KP_deepks_vdelta_2/STRU diff --git a/tests/09_DeePKS/103_NO_KP_deepks_vdelta_2/result.ref b/tests/09_DeePKS/20_NO_KP_deepks_vdelta_2/result.ref similarity index 100% rename from tests/09_DeePKS/103_NO_KP_deepks_vdelta_2/result.ref rename to tests/09_DeePKS/20_NO_KP_deepks_vdelta_2/result.ref diff --git a/tests/09_DeePKS/21_NO_GO_deepks_vdelta_r_1/INPUT b/tests/09_DeePKS/21_NO_GO_deepks_vdelta_r_1/INPUT new file mode 100644 index 0000000000..4b0fc9e328 --- /dev/null +++ b/tests/09_DeePKS/21_NO_GO_deepks_vdelta_r_1/INPUT @@ -0,0 +1,32 @@ +INPUT_PARAMETERS +#Parameters (1.General) +suffix autotest +calculation scf + +nbands 6 +symmetry 0 +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB + +#Parameters (2.Iteration) +ecutwfc 50 +scf_thr 1e-6 +scf_nmax 50 + +#Parameters (3.Basis) +basis_type lcao +gamma_only 0 + +#Parameters (4.Smearing) +smearing_method gaussian +smearing_sigma 0.02 + +#Parameters (5.Mixing) +mixing_type broyden +mixing_beta 0.8 + +#Parameters (6.File) +deepks_out_labels 1 +deepks_scf 1 +deepks_model ../Model_ProjOrb/model_lda_pbe_18.ptg +deepks_v_delta -1 diff --git a/tests/09_DeePKS/103_NO_GO_deepks_out_freq_elec/KPT b/tests/09_DeePKS/21_NO_GO_deepks_vdelta_r_1/KPT similarity index 100% rename from tests/09_DeePKS/103_NO_GO_deepks_out_freq_elec/KPT rename to tests/09_DeePKS/21_NO_GO_deepks_vdelta_r_1/KPT diff --git a/tests/09_DeePKS/103_NO_GO_deepks_vdelta_r_1/README b/tests/09_DeePKS/21_NO_GO_deepks_vdelta_r_1/README similarity index 100% rename from tests/09_DeePKS/103_NO_GO_deepks_vdelta_r_1/README rename to tests/09_DeePKS/21_NO_GO_deepks_vdelta_r_1/README diff --git a/tests/09_DeePKS/103_NO_KP_deepks_vdelta_1/STRU b/tests/09_DeePKS/21_NO_GO_deepks_vdelta_r_1/STRU similarity index 100% rename from tests/09_DeePKS/103_NO_KP_deepks_vdelta_1/STRU rename to tests/09_DeePKS/21_NO_GO_deepks_vdelta_r_1/STRU diff --git a/tests/09_DeePKS/21_NO_GO_deepks_vdelta_r_1/deepks_hrdelta.csr.ref b/tests/09_DeePKS/21_NO_GO_deepks_vdelta_r_1/deepks_hrdelta.csr.ref new file mode 100644 index 0000000000..445b7d58f8 --- /dev/null +++ b/tests/09_DeePKS/21_NO_GO_deepks_vdelta_r_1/deepks_hrdelta.csr.ref @@ -0,0 +1,141 @@ +Matrix Dimension of H_delta(R): 23 +Matrix number of H_delta(R): 1 + #----------------------------------------------------------------------# + # CSR Format # + # The outer loop corresponds to the number of Bravais lattice vectors. # + # The first line contains the index of the Bravais lattice vector # + # (Rx, Ry, Rz), followed by the number of non-zero elements. # + # The subsequent lines consist of three blocks of data, which are # + # values, column indices, row pointers. # + #----------------------------------------------------------------------# + + 0 0 0 529 + # CSR values + -1.17226740e-02 -3.62139850e-03 -7.57658616e-05 -9.43627902e-04 1.61519520e-03 -4.88126962e-03 + 2.14838886e-03 -5.69092611e-04 -1.34740806e-03 -2.17211583e-03 -8.30754807e-03 1.86867772e-03 + 7.47161074e-04 4.24371075e-03 -3.31336838e-03 -3.08073383e-04 -1.94293588e-03 1.84789083e-03 + 2.75341536e-03 -4.52073594e-04 4.07871413e-04 1.43137381e-03 4.10885575e-03 -3.62139850e-03 + -3.31857643e-03 5.55124135e-05 3.97210123e-04 -4.50233142e-04 2.17069899e-03 1.85031146e-03 + 1.16739328e-04 4.32408136e-04 5.70274689e-05 6.99594086e-04 8.77920587e-04 -3.74216359e-05 + 9.07138684e-04 -2.62303837e-03 7.06198588e-05 -2.95999181e-04 1.42369135e-03 6.63247569e-04 + 2.20553361e-04 8.23578297e-04 3.58777368e-04 3.75990027e-03 -7.57658616e-05 5.55124135e-05 + -2.29579487e-03 1.05517608e-03 7.50289951e-04 -9.10169189e-05 1.02377862e-04 -7.14728269e-05 + -5.48909920e-05 -2.21731453e-04 -2.94642184e-04 -1.21531930e-04 -8.25177686e-04 2.75393644e-04 + 1.94818297e-04 2.58520504e-04 -1.19266527e-04 -5.18116647e-05 -7.46808290e-05 2.18067883e-04 + -8.73270929e-04 -5.57969648e-04 3.20285418e-04 -9.43627902e-04 3.97210123e-04 1.05517608e-03 + 6.27129594e-04 2.10459678e-03 -1.27654053e-03 4.22599368e-04 -3.24706105e-04 -8.00733857e-04 + -1.24619255e-03 -2.64164211e-03 -7.12039715e-04 3.97104856e-04 3.86729044e-04 6.13908324e-04 + -1.21192491e-04 -1.27023518e-04 -1.27553282e-04 -2.84217179e-05 -2.61293083e-04 4.81255708e-04 + -9.33661463e-04 4.67067072e-04 1.61519520e-03 -4.50233142e-04 7.50289951e-04 2.10459678e-03 + -5.96371822e-04 2.29609857e-03 -5.81645379e-05 4.50571959e-04 1.37541461e-03 9.15962708e-04 + 3.71901393e-03 5.93156794e-04 -1.08600805e-04 -5.69854124e-04 -5.51784265e-04 -4.70073968e-05 + -1.08973508e-04 1.08735999e-04 -2.26761593e-04 -3.08497239e-04 2.01147715e-04 -1.30198784e-03 + -2.82691276e-04 -4.88126962e-03 2.17069899e-03 -9.10169189e-05 -1.27654053e-03 2.29609857e-03 + -1.17946700e-02 -3.65752097e-03 -4.36949713e-04 -1.04991930e-03 -1.62944026e-03 -8.44403565e-03 + 1.79978067e-03 1.45734825e-03 4.45177303e-03 3.06765884e-03 -6.61583941e-04 -1.92602393e-03 + -1.62896982e-03 2.38699965e-03 -1.34201368e-03 -1.60643312e-03 1.01382835e-03 -3.99355953e-03 + 2.14838886e-03 1.85031146e-03 1.02377862e-04 4.22599368e-04 -5.81645379e-05 -3.65752097e-03 + -3.34036572e-03 1.35458391e-04 3.80487988e-04 3.67953176e-04 6.01680816e-04 8.31307908e-04 + 5.43170647e-04 1.07691641e-03 2.59440381e-03 -2.15248177e-04 -2.85153605e-04 -1.38080932e-03 + 3.33506511e-04 -6.12806701e-04 -1.05075443e-03 -3.24643167e-05 -3.77203641e-03 -5.69092611e-04 + 1.16739328e-04 -7.14728269e-05 -3.24706105e-04 4.50571959e-04 -4.36949713e-04 1.35458391e-04 + -2.52025047e-03 5.47037477e-04 -3.72802097e-04 -1.08319501e-03 -2.53748022e-04 -8.37977755e-04 + 4.25201851e-04 -1.28245874e-04 2.69077723e-04 -7.65612532e-05 1.78789433e-05 3.00822298e-04 + 2.01309516e-04 8.80835967e-04 -9.65086570e-05 -4.10402146e-04 -1.34740806e-03 4.32408136e-04 + -5.48909920e-05 -8.00733857e-04 1.37541461e-03 -1.04991930e-03 3.80487988e-04 5.47037477e-04 + 4.66309048e-04 -2.37927182e-03 -2.79020310e-03 -7.57048101e-04 2.98197496e-04 5.10331568e-04 + -7.00712687e-04 -7.83000417e-05 -7.72562067e-05 1.46308569e-04 -1.48728519e-04 -3.56662803e-04 + -2.30021977e-04 -1.02634361e-03 -3.50951237e-04 -2.17211583e-03 5.70274689e-05 -2.21731453e-04 + -1.24619255e-03 9.15962708e-04 -1.62944026e-03 3.67953176e-04 -3.72802097e-04 -2.37927182e-03 + -3.17636479e-04 -3.57230311e-03 -5.79161721e-04 1.88119336e-04 5.32895704e-04 -4.33752888e-04 + 2.21933361e-05 1.63097910e-04 9.65159816e-05 1.95088303e-04 2.11139203e-04 -3.63635539e-04 + 1.41676091e-03 -3.12986333e-04 -8.30754807e-03 6.99594086e-04 -2.94642184e-04 -2.64164211e-03 + 3.71901393e-03 -8.44403565e-03 6.01680816e-04 -1.08319501e-03 -2.79020310e-03 -3.57230311e-03 + -1.26915681e-02 -5.67704352e-04 6.40881586e-04 2.52353706e-03 -6.12780257e-05 -3.97812123e-04 + -1.56385352e-03 3.12831896e-05 1.75141762e-03 -5.52685598e-04 -4.37464862e-04 1.06022860e-03 + 1.26280909e-05 1.86867772e-03 8.77920587e-04 -1.21531930e-04 -7.12039715e-04 5.93156794e-04 + 1.79978067e-03 8.31307908e-04 -2.53748022e-04 -7.57048101e-04 -5.79161721e-04 -5.67704352e-04 + -1.87025156e-03 -5.03563736e-04 -1.99325653e-03 7.33280233e-05 1.43780052e-04 5.95513212e-04 + -8.69591639e-05 -1.07247375e-03 5.14077802e-04 1.89341367e-04 1.97742222e-05 -5.93739376e-05 + 7.47161074e-04 -3.74216359e-05 -8.25177686e-04 3.97104856e-04 -1.08600805e-04 1.45734825e-03 + 5.43170647e-04 -8.37977755e-04 2.98197496e-04 1.88119336e-04 6.40881586e-04 -5.03563736e-04 + -1.80813878e-03 -5.80109174e-04 -6.96488950e-05 -5.96140210e-05 2.45238335e-04 2.42989359e-04 + 9.54997836e-05 1.09138808e-03 1.72195202e-04 -7.57142452e-04 2.89724169e-04 4.24371075e-03 + 9.07138684e-04 2.75393644e-04 3.86729044e-04 -5.69854124e-04 4.45177303e-03 1.07691641e-03 + 4.25201851e-04 5.10331568e-04 5.32895704e-04 2.52353706e-03 -1.99325653e-03 -5.80109174e-04 + -3.88395486e-03 -7.80058099e-05 2.48044905e-04 8.24811995e-04 -1.35230180e-05 -1.66664666e-03 + -3.24481106e-05 5.25573118e-04 -1.88659888e-03 1.21499755e-04 -3.31336838e-03 -2.62303837e-03 + 1.94818297e-04 6.13908324e-04 -5.51784265e-04 3.06765884e-03 2.59440381e-03 -1.28245874e-04 + -7.00712687e-04 -4.33752888e-04 -6.12780257e-05 7.33280233e-05 -6.96488950e-05 -7.80058099e-05 + -2.13180521e-03 2.36142590e-04 -4.05397975e-05 2.24871509e-03 1.71581618e-04 2.66907522e-04 + 8.85356707e-04 2.23424203e-04 3.60025084e-03 -3.08073383e-04 7.06198588e-05 2.58520504e-04 + -1.21192491e-04 -4.70073968e-05 -6.61583941e-04 -2.15248177e-04 2.69077723e-04 -7.83000417e-05 + 2.21933361e-05 -3.97812123e-04 1.43780052e-04 -5.96140210e-05 2.48044905e-04 2.36142590e-04 + -1.52959026e-04 -1.18960326e-04 -1.30874299e-05 1.95942523e-04 -9.74404173e-05 -7.49881215e-05 + 5.55136968e-07 -1.83179620e-04 -1.94293588e-03 -2.95999181e-04 -1.19266527e-04 -1.27023518e-04 + -1.08973508e-04 -1.92602393e-03 -2.85153605e-04 -7.65612532e-05 -7.72562067e-05 1.63097910e-04 + -1.56385352e-03 5.95513212e-04 2.45238335e-04 8.24811995e-04 -4.05397975e-05 -1.18960326e-04 + -6.06345144e-04 5.27778316e-05 7.81662817e-04 -3.57182818e-04 -1.54549695e-04 7.53587456e-05 + 2.40887746e-05 1.84789083e-03 1.42369135e-03 -5.18116647e-05 -1.27553282e-04 1.08735999e-04 + -1.62896982e-03 -1.38080932e-03 1.78789433e-05 1.46308569e-04 9.65159816e-05 3.12831896e-05 + -8.69591639e-05 2.42989359e-04 -1.35230180e-05 2.24871509e-03 -1.30874299e-05 5.27778316e-05 + -3.79019608e-04 -1.27242112e-04 -1.94073358e-04 -4.33793272e-04 -1.54117619e-04 -1.79992794e-03 + 2.75341536e-03 6.63247569e-04 -7.46808290e-05 -2.84217179e-05 -2.26761593e-04 2.38699965e-03 + 3.33506511e-04 3.00822298e-04 -1.48728519e-04 1.95088303e-04 1.75141762e-03 -1.07247375e-03 + 9.54997836e-05 -1.66664666e-03 1.71581618e-04 1.95942523e-04 7.81662817e-04 -1.27242112e-04 + -5.88627411e-04 8.54510996e-04 -2.89432341e-04 -5.24942201e-04 -2.73772524e-04 -4.52073594e-04 + 2.20553361e-04 2.18067883e-04 -2.61293083e-04 -3.08497239e-04 -1.34201368e-03 -6.12806701e-04 + 2.01309516e-04 -3.56662803e-04 2.11139203e-04 -5.52685598e-04 5.14077802e-04 1.09138808e-03 + -3.24481106e-05 2.66907522e-04 -9.74404173e-05 -3.57182818e-04 -1.94073358e-04 8.54510996e-04 + 1.25682163e-03 -3.89499039e-04 4.78108647e-04 -9.56639530e-04 4.07871413e-04 8.23578297e-04 + -8.73270929e-04 4.81255708e-04 2.01147715e-04 -1.60643312e-03 -1.05075443e-03 8.80835967e-04 + -2.30021977e-04 -3.63635539e-04 -4.37464862e-04 1.89341367e-04 1.72195202e-04 5.25573118e-04 + 8.85356707e-04 -7.49881215e-05 -1.54549695e-04 -4.33793272e-04 -2.89432341e-04 -3.89499039e-04 + -2.37112515e-03 -5.15360701e-04 -1.20550576e-03 1.43137381e-03 3.58777368e-04 -5.57969648e-04 + -9.33661463e-04 -1.30198784e-03 1.01382835e-03 -3.24643167e-05 -9.65086570e-05 -1.02634361e-03 + 1.41676091e-03 1.06022860e-03 1.97742222e-05 -7.57142452e-04 -1.88659888e-03 2.23424203e-04 + 5.55136968e-07 7.53587456e-05 -1.54117619e-04 -5.24942201e-04 4.78108647e-04 -5.15360701e-04 + 2.76519524e-03 -4.59410571e-04 4.10885575e-03 3.75990027e-03 3.20285418e-04 4.67067072e-04 + -2.82691276e-04 -3.99355953e-03 -3.77203641e-03 -4.10402146e-04 -3.50951237e-04 -3.12986333e-04 + 1.26280909e-05 -5.93739376e-05 2.89724169e-04 1.21499755e-04 3.60025084e-03 -1.83179620e-04 + 2.40887746e-05 -1.79992794e-03 -2.73772524e-04 -9.56639530e-04 -1.20550576e-03 -4.59410571e-04 + -7.09398430e-03 + # CSR column indices + 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 + 16 17 18 19 20 21 22 0 1 2 3 4 5 6 7 8 + 9 10 11 12 13 14 15 16 17 18 19 20 21 22 0 1 + 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 + 18 19 20 21 22 0 1 2 3 4 5 6 7 8 9 10 + 11 12 13 14 15 16 17 18 19 20 21 22 0 1 2 3 + 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 + 20 21 22 0 1 2 3 4 5 6 7 8 9 10 11 12 + 13 14 15 16 17 18 19 20 21 22 0 1 2 3 4 5 + 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 + 22 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 + 15 16 17 18 19 20 21 22 0 1 2 3 4 5 6 7 + 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 0 + 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 + 17 18 19 20 21 22 0 1 2 3 4 5 6 7 8 9 + 10 11 12 13 14 15 16 17 18 19 20 21 22 0 1 2 + 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 + 19 20 21 22 0 1 2 3 4 5 6 7 8 9 10 11 + 12 13 14 15 16 17 18 19 20 21 22 0 1 2 3 4 + 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 + 21 22 0 1 2 3 4 5 6 7 8 9 10 11 12 13 + 14 15 16 17 18 19 20 21 22 0 1 2 3 4 5 6 + 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 + 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 + 16 17 18 19 20 21 22 0 1 2 3 4 5 6 7 8 + 9 10 11 12 13 14 15 16 17 18 19 20 21 22 0 1 + 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 + 18 19 20 21 22 0 1 2 3 4 5 6 7 8 9 10 + 11 12 13 14 15 16 17 18 19 20 21 22 0 1 2 3 + 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 + 20 21 22 0 1 2 3 4 5 6 7 8 9 10 11 12 + 13 14 15 16 17 18 19 20 21 22 0 1 2 3 4 5 + 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 + 22 + # CSR row pointers + 0 23 46 69 92 115 138 161 184 207 230 253 276 299 322 345 + 368 391 414 437 460 483 506 529 + diff --git a/tests/09_DeePKS/21_NO_GO_deepks_vdelta_r_1/deepks_hrtot.csr.ref b/tests/09_DeePKS/21_NO_GO_deepks_vdelta_r_1/deepks_hrtot.csr.ref new file mode 100644 index 0000000000..0e043b92b4 --- /dev/null +++ b/tests/09_DeePKS/21_NO_GO_deepks_vdelta_r_1/deepks_hrtot.csr.ref @@ -0,0 +1,141 @@ +Matrix Dimension of H(R): 23 +Matrix number of H(R): 1 + #----------------------------------------------------------------------# + # CSR Format # + # The outer loop corresponds to the number of Bravais lattice vectors. # + # The first line contains the index of the Bravais lattice vector # + # (Rx, Ry, Rz), followed by the number of non-zero elements. # + # The subsequent lines consist of three blocks of data, which are # + # values, column indices, row pointers. # + #----------------------------------------------------------------------# + + 0 0 0 529 + # CSR values + -8.42107904e-01 2.13550175e-01 -3.36018443e-02 -3.14634851e-01 4.57125255e-01 -5.72184336e-01 + 2.48575301e-01 -6.34432974e-02 -1.13625395e-01 -3.33175047e-01 -1.07975761e+00 -1.36939378e-02 + 6.92996341e-02 4.65693698e-01 -4.87107239e-01 -6.51964644e-03 -7.19175506e-03 -4.52287980e-02 + 1.10813024e-01 -3.76437594e-02 9.06402772e-04 1.79320238e-02 9.15211632e-02 2.13550175e-01 + 9.37557925e-01 -3.14883586e-03 -2.33953762e-02 2.74497309e-02 2.52264246e-01 1.62953161e-01 + 3.47485631e-02 1.25139207e-01 2.55561956e-02 2.06575092e-01 7.81936184e-02 6.09841771e-03 + 1.77838932e-01 -3.83774181e-01 1.66830601e-02 4.06237997e-02 6.06539730e-02 -1.23947605e-01 + 3.89192709e-02 1.23675296e-02 -4.91257564e-02 -6.21130683e-02 -3.36018443e-02 -3.14883586e-03 + 2.49598467e+00 -2.93735098e-02 3.30086601e-02 7.91829015e-03 2.78231936e-02 -3.57932496e-02 + 9.74834800e-03 1.32482382e-02 -4.25617904e-02 -1.19113287e-02 -2.15042800e-01 1.64767651e-02 + -2.49406909e-02 -1.41883945e-01 1.47258242e-02 -1.75059826e-02 -8.47667718e-02 -2.83002918e-01 + 3.92807294e-01 -1.91830301e-02 -7.69616324e-02 -3.14634851e-01 -2.33953762e-02 -2.93735098e-02 + 2.26416924e+00 3.02825162e-01 -1.05733259e-01 1.21240901e-01 -9.89002286e-03 -4.12343578e-02 + -9.20422560e-02 -3.82618437e-01 -8.78853635e-02 2.28135770e-02 -4.37649468e-02 -2.09195274e-01 + 1.50466367e-02 -3.49131417e-02 -1.25610573e-01 -1.96101650e-01 1.95711769e-02 -7.66969379e-02 + -4.70085222e-01 -2.24201687e-01 4.57125255e-01 2.74497309e-02 3.30086601e-02 3.02825162e-01 + 2.06576968e+00 3.40251911e-01 -3.14993633e-02 6.21783525e-02 9.87617873e-02 3.18364998e-01 + 5.39706282e-01 1.03444338e-01 -4.07170235e-02 -2.70661856e-01 6.21072104e-02 -1.83219256e-02 + -1.28863490e-01 -1.00471591e-03 2.24558957e-01 -5.34584506e-02 6.67403369e-02 -1.42412780e-01 + 5.21985815e-01 -5.72184336e-01 2.52264246e-01 7.91829015e-03 -1.05733259e-01 3.40251911e-01 + -8.53117379e-01 2.07158983e-01 -1.31678616e-01 -3.35702404e-01 -4.42556733e-01 -1.09366461e+00 + -1.90391346e-02 1.70392560e-01 4.82309376e-01 4.53921680e-01 4.71108828e-03 -2.30352410e-03 + 5.11994676e-02 1.02538910e-01 -5.65270345e-02 -4.20139930e-02 8.66970933e-03 -8.16033294e-02 + 2.48575301e-01 1.62953161e-01 2.78231936e-02 1.21240901e-01 -3.14993633e-02 2.07158983e-01 + 9.32647363e-01 -1.07576511e-02 -2.91947949e-02 -3.14958024e-02 1.96293189e-01 7.49540951e-02 + 8.84269909e-02 1.94186183e-01 3.75282153e-01 4.71677901e-03 4.31349825e-02 -6.12568379e-02 + -1.22832429e-01 5.44860904e-02 4.49127331e-02 -4.46464286e-02 6.44049862e-02 -6.34432974e-02 + 3.47485631e-02 -3.57932496e-02 -9.89002286e-03 6.21783525e-02 -1.31678616e-01 -1.07576511e-02 + 2.45482838e+00 -9.70421303e-02 -1.17589370e-01 -1.55741908e-01 -3.08046058e-02 -1.93818873e-01 + 7.49083880e-02 7.67291521e-02 -1.31762368e-01 4.12789539e-02 4.21152823e-02 -2.58528719e-01 + -2.40023990e-01 -3.01464445e-01 -4.73539656e-02 2.40800483e-01 -1.13625395e-01 1.25139207e-01 + 9.74834800e-03 -4.12343578e-02 9.87617873e-02 -3.35702404e-01 -2.91947949e-02 -9.70421303e-02 + 2.23408330e+00 -3.00411324e-01 -4.00917139e-01 -8.44826003e-02 6.85175949e-02 -3.49076902e-02 + 2.02359643e-01 4.09475364e-02 -3.39239660e-02 1.16576059e-01 -1.39561982e-01 7.61057430e-02 + 2.40210913e-01 -4.30999603e-01 2.44261809e-01 -3.33175047e-01 2.55561956e-02 1.32482382e-02 + -9.20422560e-02 3.18364998e-01 -4.42556733e-01 -3.14958024e-02 -1.17589370e-01 -3.00411324e-01 + 2.09720426e+00 -5.14102784e-01 -8.90011899e-02 9.25869978e-02 2.64278795e-01 2.02339288e-02 + 4.30138516e-02 1.19988640e-01 -2.79010532e-02 -1.34585031e-01 2.17217063e-01 1.62894422e-01 + 2.26474234e-01 4.41068047e-01 -1.07975761e+00 2.06575092e-01 -4.25617904e-02 -3.82618437e-01 + 5.39706282e-01 -1.09366461e+00 1.96293189e-01 -1.55741908e-01 -4.00917139e-01 -5.14102784e-01 + -1.70549181e+00 1.06890459e-01 6.48395657e-02 2.55626981e-01 -7.05142835e-03 -6.52750829e-03 + -2.62232291e-02 1.97400693e-03 1.66491876e-01 -6.12915685e-02 -3.83218137e-02 6.82878309e-02 + 1.50531270e-03 -1.36939378e-02 7.81936184e-02 -1.19113287e-02 -8.78853635e-02 1.03444338e-01 + -1.90391346e-02 7.49540951e-02 -3.08046058e-02 -8.44826003e-02 -8.90011899e-02 1.06890459e-01 + 7.63241563e-01 -2.08258108e-02 -8.28144449e-02 4.08521934e-03 4.97774980e-02 1.97467121e-01 + -8.61689966e-03 -8.85521131e-02 3.26336608e-02 1.96753831e-02 -3.51712925e-02 -3.03301439e-03 + 6.92996341e-02 6.09841771e-03 -2.15042800e-01 2.28135770e-02 -4.07170235e-02 1.70392560e-01 + 8.84269909e-02 -1.93818873e-01 6.85175949e-02 9.25869978e-02 6.48395657e-02 -2.08258108e-02 + -4.74768823e-01 -4.18800128e-02 -2.57988231e-02 1.33369284e-01 1.11451453e-02 6.70184175e-03 + 1.52852492e-02 1.49187733e-01 7.90528504e-03 -9.52436820e-03 2.42311440e-02 4.65693698e-01 + 1.77838932e-01 1.64767651e-02 -4.37649468e-02 -2.70661856e-01 4.82309376e-01 1.94186183e-01 + 7.49083880e-02 -3.49076902e-02 2.64278795e-01 2.55626981e-01 -8.28144449e-02 -4.18800128e-02 + -6.25253768e-01 1.17220819e-03 1.11479519e-02 1.74097194e-01 -1.61909460e-03 -1.81049264e-01 + 7.25135236e-02 2.44669930e-02 9.44835226e-02 -1.58895514e-03 -4.87107239e-01 -3.83774181e-01 + -2.49406909e-02 -2.09195274e-01 6.21072104e-02 4.53921680e-01 3.75282153e-01 7.67291521e-02 + 2.02359643e-01 2.02339288e-02 -7.05142835e-03 4.08521934e-03 -2.57988231e-02 1.17220819e-03 + -7.15138160e-01 6.69499498e-03 -1.64611138e-03 1.99230425e-01 1.55738906e-02 2.42083274e-02 + 9.09657799e-02 1.74574611e-02 3.66026282e-01 -6.51964644e-03 1.66830601e-02 -1.41883945e-01 + 1.50466367e-02 -1.83219256e-02 4.71108828e-03 4.71677901e-03 -1.31762368e-01 4.09475364e-02 + 4.30138516e-02 -6.52750829e-03 4.97774980e-02 1.33369284e-01 1.11479519e-02 6.69499498e-03 + 8.75538128e-01 -2.72119238e-02 -1.63950542e-02 6.35931764e-03 -2.27284124e-02 -4.41425269e-03 + 4.04264505e-03 -1.07176564e-02 -7.19175506e-03 4.06237997e-02 1.47258242e-02 -3.49131417e-02 + -1.28863490e-01 -2.30352410e-03 4.31349825e-02 4.12789539e-02 -3.39239660e-02 1.19988640e-01 + -2.62232291e-02 1.97467121e-01 1.11451453e-02 1.74097194e-01 -1.64611138e-03 -2.72119238e-02 + 7.76366120e-01 3.07599587e-03 5.68900637e-02 -2.18237129e-02 -1.06890265e-02 1.34071159e-03 + 1.61948811e-03 -4.52287980e-02 6.06539730e-02 -1.75059826e-02 -1.25610573e-01 -1.00471591e-03 + 5.11994676e-02 -6.12568379e-02 4.21152823e-02 1.16576059e-01 -2.79010532e-02 1.97400693e-03 + -8.61689966e-03 6.70184175e-03 -1.61909460e-03 1.99230425e-01 -1.63950542e-02 3.07599587e-03 + 7.16371266e-01 -7.86277031e-03 -1.07285502e-02 -2.99845032e-02 -7.61778157e-03 -1.22878854e-01 + 1.10813024e-01 -1.23947605e-01 -8.47667718e-02 -1.96101650e-01 2.24558957e-01 1.02538910e-01 + -1.22832429e-01 -2.58528719e-01 -1.39561982e-01 -1.34585031e-01 1.66491876e-01 -8.85521131e-02 + 1.52852492e-02 -1.81049264e-01 1.55738906e-02 6.35931764e-03 5.68900637e-02 -7.86277031e-03 + 3.19891456e+00 1.69988370e-02 7.27737784e-03 -6.44291741e-02 -1.42881909e-02 -3.76437594e-02 + 3.89192709e-02 -2.83002918e-01 1.95711769e-02 -5.34584506e-02 -5.65270345e-02 5.44860904e-02 + -2.40023990e-01 7.61057430e-02 2.17217063e-01 -6.12915685e-02 3.26336608e-02 1.49187733e-01 + 7.25135236e-02 2.42083274e-02 -2.27284124e-02 -2.18237129e-02 -1.07285502e-02 1.69988370e-02 + 3.25920245e+00 -1.39442716e-02 -1.21347611e-02 -4.50278047e-02 9.06402772e-04 1.23675296e-02 + 3.92807294e-01 -7.66969379e-02 6.67403369e-02 -4.20139930e-02 4.49127331e-02 -3.01464445e-01 + 2.40210913e-01 1.62894422e-01 -3.83218137e-02 1.96753831e-02 7.90528504e-03 2.44669930e-02 + 9.09657799e-02 -4.41425269e-03 -1.06890265e-02 -2.99845032e-02 7.27737784e-03 -1.39442716e-02 + 3.19660717e+00 1.79839764e-02 -9.14134117e-02 1.79320238e-02 -4.91257564e-02 -1.91830301e-02 + -4.70085222e-01 -1.42412780e-01 8.66970933e-03 -4.46464286e-02 -4.73539656e-02 -4.30999603e-01 + 2.26474234e-01 6.82878309e-02 -3.51712925e-02 -9.52436820e-03 9.44835226e-02 1.74574611e-02 + 4.04264505e-03 1.34071159e-03 -7.61778157e-03 -6.44291741e-02 -1.21347611e-02 1.79839764e-02 + 3.12536899e+00 -1.50940944e-02 9.15211632e-02 -6.21130683e-02 -7.69616324e-02 -2.24201687e-01 + 5.21985815e-01 -8.16033294e-02 6.44049862e-02 2.40800483e-01 2.44261809e-01 4.41068047e-01 + 1.50531270e-03 -3.03301439e-03 2.42311440e-02 -1.58895514e-03 3.66026282e-01 -1.07176564e-02 + 1.61948811e-03 -1.22878854e-01 -1.42881909e-02 -4.50278047e-02 -9.14134117e-02 -1.50940944e-02 + 2.85906938e+00 + # CSR column indices + 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 + 16 17 18 19 20 21 22 0 1 2 3 4 5 6 7 8 + 9 10 11 12 13 14 15 16 17 18 19 20 21 22 0 1 + 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 + 18 19 20 21 22 0 1 2 3 4 5 6 7 8 9 10 + 11 12 13 14 15 16 17 18 19 20 21 22 0 1 2 3 + 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 + 20 21 22 0 1 2 3 4 5 6 7 8 9 10 11 12 + 13 14 15 16 17 18 19 20 21 22 0 1 2 3 4 5 + 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 + 22 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 + 15 16 17 18 19 20 21 22 0 1 2 3 4 5 6 7 + 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 0 + 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 + 17 18 19 20 21 22 0 1 2 3 4 5 6 7 8 9 + 10 11 12 13 14 15 16 17 18 19 20 21 22 0 1 2 + 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 + 19 20 21 22 0 1 2 3 4 5 6 7 8 9 10 11 + 12 13 14 15 16 17 18 19 20 21 22 0 1 2 3 4 + 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 + 21 22 0 1 2 3 4 5 6 7 8 9 10 11 12 13 + 14 15 16 17 18 19 20 21 22 0 1 2 3 4 5 6 + 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 + 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 + 16 17 18 19 20 21 22 0 1 2 3 4 5 6 7 8 + 9 10 11 12 13 14 15 16 17 18 19 20 21 22 0 1 + 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 + 18 19 20 21 22 0 1 2 3 4 5 6 7 8 9 10 + 11 12 13 14 15 16 17 18 19 20 21 22 0 1 2 3 + 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 + 20 21 22 0 1 2 3 4 5 6 7 8 9 10 11 12 + 13 14 15 16 17 18 19 20 21 22 0 1 2 3 4 5 + 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 + 22 + # CSR row pointers + 0 23 46 69 92 115 138 161 184 207 230 253 276 299 322 345 + 368 391 414 437 460 483 506 529 + diff --git a/tests/09_DeePKS/103_NO_GO_deepks_vdelta_r_1/result.ref b/tests/09_DeePKS/21_NO_GO_deepks_vdelta_r_1/result.ref similarity index 100% rename from tests/09_DeePKS/103_NO_GO_deepks_vdelta_r_1/result.ref rename to tests/09_DeePKS/21_NO_GO_deepks_vdelta_r_1/result.ref diff --git a/tests/09_DeePKS/22_NO_GO_deepks_vdelta_r_2/INPUT b/tests/09_DeePKS/22_NO_GO_deepks_vdelta_r_2/INPUT new file mode 100644 index 0000000000..c5abc4ae5d --- /dev/null +++ b/tests/09_DeePKS/22_NO_GO_deepks_vdelta_r_2/INPUT @@ -0,0 +1,32 @@ +INPUT_PARAMETERS +#Parameters (1.General) +suffix autotest +calculation scf + +nbands 6 +symmetry 0 +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB + +#Parameters (2.Iteration) +ecutwfc 50 +scf_thr 1e-6 +scf_nmax 50 + +#Parameters (3.Basis) +basis_type lcao +gamma_only 0 + +#Parameters (4.Smearing) +smearing_method gaussian +smearing_sigma 0.02 + +#Parameters (5.Mixing) +mixing_type broyden +mixing_beta 0.8 + +#Parameters (6.File) +deepks_out_labels 1 +deepks_scf 1 +deepks_model ../Model_ProjOrb/model_lda_pbe_18.ptg +deepks_v_delta -2 diff --git a/tests/09_DeePKS/103_NO_GO_deepks_vdelta_1/KPT b/tests/09_DeePKS/22_NO_GO_deepks_vdelta_r_2/KPT similarity index 100% rename from tests/09_DeePKS/103_NO_GO_deepks_vdelta_1/KPT rename to tests/09_DeePKS/22_NO_GO_deepks_vdelta_r_2/KPT diff --git a/tests/09_DeePKS/103_NO_GO_deepks_vdelta_r_2/README b/tests/09_DeePKS/22_NO_GO_deepks_vdelta_r_2/README similarity index 100% rename from tests/09_DeePKS/103_NO_GO_deepks_vdelta_r_2/README rename to tests/09_DeePKS/22_NO_GO_deepks_vdelta_r_2/README diff --git a/tests/09_DeePKS/103_NO_KP_deepks_vdelta_2/STRU b/tests/09_DeePKS/22_NO_GO_deepks_vdelta_r_2/STRU similarity index 100% rename from tests/09_DeePKS/103_NO_KP_deepks_vdelta_2/STRU rename to tests/09_DeePKS/22_NO_GO_deepks_vdelta_r_2/STRU diff --git a/tests/09_DeePKS/22_NO_GO_deepks_vdelta_r_2/deepks_hrdelta.csr.ref b/tests/09_DeePKS/22_NO_GO_deepks_vdelta_r_2/deepks_hrdelta.csr.ref new file mode 100644 index 0000000000..445b7d58f8 --- /dev/null +++ b/tests/09_DeePKS/22_NO_GO_deepks_vdelta_r_2/deepks_hrdelta.csr.ref @@ -0,0 +1,141 @@ +Matrix Dimension of H_delta(R): 23 +Matrix number of H_delta(R): 1 + #----------------------------------------------------------------------# + # CSR Format # + # The outer loop corresponds to the number of Bravais lattice vectors. # + # The first line contains the index of the Bravais lattice vector # + # (Rx, Ry, Rz), followed by the number of non-zero elements. # + # The subsequent lines consist of three blocks of data, which are # + # values, column indices, row pointers. # + #----------------------------------------------------------------------# + + 0 0 0 529 + # CSR values + -1.17226740e-02 -3.62139850e-03 -7.57658616e-05 -9.43627902e-04 1.61519520e-03 -4.88126962e-03 + 2.14838886e-03 -5.69092611e-04 -1.34740806e-03 -2.17211583e-03 -8.30754807e-03 1.86867772e-03 + 7.47161074e-04 4.24371075e-03 -3.31336838e-03 -3.08073383e-04 -1.94293588e-03 1.84789083e-03 + 2.75341536e-03 -4.52073594e-04 4.07871413e-04 1.43137381e-03 4.10885575e-03 -3.62139850e-03 + -3.31857643e-03 5.55124135e-05 3.97210123e-04 -4.50233142e-04 2.17069899e-03 1.85031146e-03 + 1.16739328e-04 4.32408136e-04 5.70274689e-05 6.99594086e-04 8.77920587e-04 -3.74216359e-05 + 9.07138684e-04 -2.62303837e-03 7.06198588e-05 -2.95999181e-04 1.42369135e-03 6.63247569e-04 + 2.20553361e-04 8.23578297e-04 3.58777368e-04 3.75990027e-03 -7.57658616e-05 5.55124135e-05 + -2.29579487e-03 1.05517608e-03 7.50289951e-04 -9.10169189e-05 1.02377862e-04 -7.14728269e-05 + -5.48909920e-05 -2.21731453e-04 -2.94642184e-04 -1.21531930e-04 -8.25177686e-04 2.75393644e-04 + 1.94818297e-04 2.58520504e-04 -1.19266527e-04 -5.18116647e-05 -7.46808290e-05 2.18067883e-04 + -8.73270929e-04 -5.57969648e-04 3.20285418e-04 -9.43627902e-04 3.97210123e-04 1.05517608e-03 + 6.27129594e-04 2.10459678e-03 -1.27654053e-03 4.22599368e-04 -3.24706105e-04 -8.00733857e-04 + -1.24619255e-03 -2.64164211e-03 -7.12039715e-04 3.97104856e-04 3.86729044e-04 6.13908324e-04 + -1.21192491e-04 -1.27023518e-04 -1.27553282e-04 -2.84217179e-05 -2.61293083e-04 4.81255708e-04 + -9.33661463e-04 4.67067072e-04 1.61519520e-03 -4.50233142e-04 7.50289951e-04 2.10459678e-03 + -5.96371822e-04 2.29609857e-03 -5.81645379e-05 4.50571959e-04 1.37541461e-03 9.15962708e-04 + 3.71901393e-03 5.93156794e-04 -1.08600805e-04 -5.69854124e-04 -5.51784265e-04 -4.70073968e-05 + -1.08973508e-04 1.08735999e-04 -2.26761593e-04 -3.08497239e-04 2.01147715e-04 -1.30198784e-03 + -2.82691276e-04 -4.88126962e-03 2.17069899e-03 -9.10169189e-05 -1.27654053e-03 2.29609857e-03 + -1.17946700e-02 -3.65752097e-03 -4.36949713e-04 -1.04991930e-03 -1.62944026e-03 -8.44403565e-03 + 1.79978067e-03 1.45734825e-03 4.45177303e-03 3.06765884e-03 -6.61583941e-04 -1.92602393e-03 + -1.62896982e-03 2.38699965e-03 -1.34201368e-03 -1.60643312e-03 1.01382835e-03 -3.99355953e-03 + 2.14838886e-03 1.85031146e-03 1.02377862e-04 4.22599368e-04 -5.81645379e-05 -3.65752097e-03 + -3.34036572e-03 1.35458391e-04 3.80487988e-04 3.67953176e-04 6.01680816e-04 8.31307908e-04 + 5.43170647e-04 1.07691641e-03 2.59440381e-03 -2.15248177e-04 -2.85153605e-04 -1.38080932e-03 + 3.33506511e-04 -6.12806701e-04 -1.05075443e-03 -3.24643167e-05 -3.77203641e-03 -5.69092611e-04 + 1.16739328e-04 -7.14728269e-05 -3.24706105e-04 4.50571959e-04 -4.36949713e-04 1.35458391e-04 + -2.52025047e-03 5.47037477e-04 -3.72802097e-04 -1.08319501e-03 -2.53748022e-04 -8.37977755e-04 + 4.25201851e-04 -1.28245874e-04 2.69077723e-04 -7.65612532e-05 1.78789433e-05 3.00822298e-04 + 2.01309516e-04 8.80835967e-04 -9.65086570e-05 -4.10402146e-04 -1.34740806e-03 4.32408136e-04 + -5.48909920e-05 -8.00733857e-04 1.37541461e-03 -1.04991930e-03 3.80487988e-04 5.47037477e-04 + 4.66309048e-04 -2.37927182e-03 -2.79020310e-03 -7.57048101e-04 2.98197496e-04 5.10331568e-04 + -7.00712687e-04 -7.83000417e-05 -7.72562067e-05 1.46308569e-04 -1.48728519e-04 -3.56662803e-04 + -2.30021977e-04 -1.02634361e-03 -3.50951237e-04 -2.17211583e-03 5.70274689e-05 -2.21731453e-04 + -1.24619255e-03 9.15962708e-04 -1.62944026e-03 3.67953176e-04 -3.72802097e-04 -2.37927182e-03 + -3.17636479e-04 -3.57230311e-03 -5.79161721e-04 1.88119336e-04 5.32895704e-04 -4.33752888e-04 + 2.21933361e-05 1.63097910e-04 9.65159816e-05 1.95088303e-04 2.11139203e-04 -3.63635539e-04 + 1.41676091e-03 -3.12986333e-04 -8.30754807e-03 6.99594086e-04 -2.94642184e-04 -2.64164211e-03 + 3.71901393e-03 -8.44403565e-03 6.01680816e-04 -1.08319501e-03 -2.79020310e-03 -3.57230311e-03 + -1.26915681e-02 -5.67704352e-04 6.40881586e-04 2.52353706e-03 -6.12780257e-05 -3.97812123e-04 + -1.56385352e-03 3.12831896e-05 1.75141762e-03 -5.52685598e-04 -4.37464862e-04 1.06022860e-03 + 1.26280909e-05 1.86867772e-03 8.77920587e-04 -1.21531930e-04 -7.12039715e-04 5.93156794e-04 + 1.79978067e-03 8.31307908e-04 -2.53748022e-04 -7.57048101e-04 -5.79161721e-04 -5.67704352e-04 + -1.87025156e-03 -5.03563736e-04 -1.99325653e-03 7.33280233e-05 1.43780052e-04 5.95513212e-04 + -8.69591639e-05 -1.07247375e-03 5.14077802e-04 1.89341367e-04 1.97742222e-05 -5.93739376e-05 + 7.47161074e-04 -3.74216359e-05 -8.25177686e-04 3.97104856e-04 -1.08600805e-04 1.45734825e-03 + 5.43170647e-04 -8.37977755e-04 2.98197496e-04 1.88119336e-04 6.40881586e-04 -5.03563736e-04 + -1.80813878e-03 -5.80109174e-04 -6.96488950e-05 -5.96140210e-05 2.45238335e-04 2.42989359e-04 + 9.54997836e-05 1.09138808e-03 1.72195202e-04 -7.57142452e-04 2.89724169e-04 4.24371075e-03 + 9.07138684e-04 2.75393644e-04 3.86729044e-04 -5.69854124e-04 4.45177303e-03 1.07691641e-03 + 4.25201851e-04 5.10331568e-04 5.32895704e-04 2.52353706e-03 -1.99325653e-03 -5.80109174e-04 + -3.88395486e-03 -7.80058099e-05 2.48044905e-04 8.24811995e-04 -1.35230180e-05 -1.66664666e-03 + -3.24481106e-05 5.25573118e-04 -1.88659888e-03 1.21499755e-04 -3.31336838e-03 -2.62303837e-03 + 1.94818297e-04 6.13908324e-04 -5.51784265e-04 3.06765884e-03 2.59440381e-03 -1.28245874e-04 + -7.00712687e-04 -4.33752888e-04 -6.12780257e-05 7.33280233e-05 -6.96488950e-05 -7.80058099e-05 + -2.13180521e-03 2.36142590e-04 -4.05397975e-05 2.24871509e-03 1.71581618e-04 2.66907522e-04 + 8.85356707e-04 2.23424203e-04 3.60025084e-03 -3.08073383e-04 7.06198588e-05 2.58520504e-04 + -1.21192491e-04 -4.70073968e-05 -6.61583941e-04 -2.15248177e-04 2.69077723e-04 -7.83000417e-05 + 2.21933361e-05 -3.97812123e-04 1.43780052e-04 -5.96140210e-05 2.48044905e-04 2.36142590e-04 + -1.52959026e-04 -1.18960326e-04 -1.30874299e-05 1.95942523e-04 -9.74404173e-05 -7.49881215e-05 + 5.55136968e-07 -1.83179620e-04 -1.94293588e-03 -2.95999181e-04 -1.19266527e-04 -1.27023518e-04 + -1.08973508e-04 -1.92602393e-03 -2.85153605e-04 -7.65612532e-05 -7.72562067e-05 1.63097910e-04 + -1.56385352e-03 5.95513212e-04 2.45238335e-04 8.24811995e-04 -4.05397975e-05 -1.18960326e-04 + -6.06345144e-04 5.27778316e-05 7.81662817e-04 -3.57182818e-04 -1.54549695e-04 7.53587456e-05 + 2.40887746e-05 1.84789083e-03 1.42369135e-03 -5.18116647e-05 -1.27553282e-04 1.08735999e-04 + -1.62896982e-03 -1.38080932e-03 1.78789433e-05 1.46308569e-04 9.65159816e-05 3.12831896e-05 + -8.69591639e-05 2.42989359e-04 -1.35230180e-05 2.24871509e-03 -1.30874299e-05 5.27778316e-05 + -3.79019608e-04 -1.27242112e-04 -1.94073358e-04 -4.33793272e-04 -1.54117619e-04 -1.79992794e-03 + 2.75341536e-03 6.63247569e-04 -7.46808290e-05 -2.84217179e-05 -2.26761593e-04 2.38699965e-03 + 3.33506511e-04 3.00822298e-04 -1.48728519e-04 1.95088303e-04 1.75141762e-03 -1.07247375e-03 + 9.54997836e-05 -1.66664666e-03 1.71581618e-04 1.95942523e-04 7.81662817e-04 -1.27242112e-04 + -5.88627411e-04 8.54510996e-04 -2.89432341e-04 -5.24942201e-04 -2.73772524e-04 -4.52073594e-04 + 2.20553361e-04 2.18067883e-04 -2.61293083e-04 -3.08497239e-04 -1.34201368e-03 -6.12806701e-04 + 2.01309516e-04 -3.56662803e-04 2.11139203e-04 -5.52685598e-04 5.14077802e-04 1.09138808e-03 + -3.24481106e-05 2.66907522e-04 -9.74404173e-05 -3.57182818e-04 -1.94073358e-04 8.54510996e-04 + 1.25682163e-03 -3.89499039e-04 4.78108647e-04 -9.56639530e-04 4.07871413e-04 8.23578297e-04 + -8.73270929e-04 4.81255708e-04 2.01147715e-04 -1.60643312e-03 -1.05075443e-03 8.80835967e-04 + -2.30021977e-04 -3.63635539e-04 -4.37464862e-04 1.89341367e-04 1.72195202e-04 5.25573118e-04 + 8.85356707e-04 -7.49881215e-05 -1.54549695e-04 -4.33793272e-04 -2.89432341e-04 -3.89499039e-04 + -2.37112515e-03 -5.15360701e-04 -1.20550576e-03 1.43137381e-03 3.58777368e-04 -5.57969648e-04 + -9.33661463e-04 -1.30198784e-03 1.01382835e-03 -3.24643167e-05 -9.65086570e-05 -1.02634361e-03 + 1.41676091e-03 1.06022860e-03 1.97742222e-05 -7.57142452e-04 -1.88659888e-03 2.23424203e-04 + 5.55136968e-07 7.53587456e-05 -1.54117619e-04 -5.24942201e-04 4.78108647e-04 -5.15360701e-04 + 2.76519524e-03 -4.59410571e-04 4.10885575e-03 3.75990027e-03 3.20285418e-04 4.67067072e-04 + -2.82691276e-04 -3.99355953e-03 -3.77203641e-03 -4.10402146e-04 -3.50951237e-04 -3.12986333e-04 + 1.26280909e-05 -5.93739376e-05 2.89724169e-04 1.21499755e-04 3.60025084e-03 -1.83179620e-04 + 2.40887746e-05 -1.79992794e-03 -2.73772524e-04 -9.56639530e-04 -1.20550576e-03 -4.59410571e-04 + -7.09398430e-03 + # CSR column indices + 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 + 16 17 18 19 20 21 22 0 1 2 3 4 5 6 7 8 + 9 10 11 12 13 14 15 16 17 18 19 20 21 22 0 1 + 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 + 18 19 20 21 22 0 1 2 3 4 5 6 7 8 9 10 + 11 12 13 14 15 16 17 18 19 20 21 22 0 1 2 3 + 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 + 20 21 22 0 1 2 3 4 5 6 7 8 9 10 11 12 + 13 14 15 16 17 18 19 20 21 22 0 1 2 3 4 5 + 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 + 22 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 + 15 16 17 18 19 20 21 22 0 1 2 3 4 5 6 7 + 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 0 + 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 + 17 18 19 20 21 22 0 1 2 3 4 5 6 7 8 9 + 10 11 12 13 14 15 16 17 18 19 20 21 22 0 1 2 + 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 + 19 20 21 22 0 1 2 3 4 5 6 7 8 9 10 11 + 12 13 14 15 16 17 18 19 20 21 22 0 1 2 3 4 + 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 + 21 22 0 1 2 3 4 5 6 7 8 9 10 11 12 13 + 14 15 16 17 18 19 20 21 22 0 1 2 3 4 5 6 + 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 + 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 + 16 17 18 19 20 21 22 0 1 2 3 4 5 6 7 8 + 9 10 11 12 13 14 15 16 17 18 19 20 21 22 0 1 + 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 + 18 19 20 21 22 0 1 2 3 4 5 6 7 8 9 10 + 11 12 13 14 15 16 17 18 19 20 21 22 0 1 2 3 + 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 + 20 21 22 0 1 2 3 4 5 6 7 8 9 10 11 12 + 13 14 15 16 17 18 19 20 21 22 0 1 2 3 4 5 + 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 + 22 + # CSR row pointers + 0 23 46 69 92 115 138 161 184 207 230 253 276 299 322 345 + 368 391 414 437 460 483 506 529 + diff --git a/tests/09_DeePKS/22_NO_GO_deepks_vdelta_r_2/deepks_hrtot.csr.ref b/tests/09_DeePKS/22_NO_GO_deepks_vdelta_r_2/deepks_hrtot.csr.ref new file mode 100644 index 0000000000..0e043b92b4 --- /dev/null +++ b/tests/09_DeePKS/22_NO_GO_deepks_vdelta_r_2/deepks_hrtot.csr.ref @@ -0,0 +1,141 @@ +Matrix Dimension of H(R): 23 +Matrix number of H(R): 1 + #----------------------------------------------------------------------# + # CSR Format # + # The outer loop corresponds to the number of Bravais lattice vectors. # + # The first line contains the index of the Bravais lattice vector # + # (Rx, Ry, Rz), followed by the number of non-zero elements. # + # The subsequent lines consist of three blocks of data, which are # + # values, column indices, row pointers. # + #----------------------------------------------------------------------# + + 0 0 0 529 + # CSR values + -8.42107904e-01 2.13550175e-01 -3.36018443e-02 -3.14634851e-01 4.57125255e-01 -5.72184336e-01 + 2.48575301e-01 -6.34432974e-02 -1.13625395e-01 -3.33175047e-01 -1.07975761e+00 -1.36939378e-02 + 6.92996341e-02 4.65693698e-01 -4.87107239e-01 -6.51964644e-03 -7.19175506e-03 -4.52287980e-02 + 1.10813024e-01 -3.76437594e-02 9.06402772e-04 1.79320238e-02 9.15211632e-02 2.13550175e-01 + 9.37557925e-01 -3.14883586e-03 -2.33953762e-02 2.74497309e-02 2.52264246e-01 1.62953161e-01 + 3.47485631e-02 1.25139207e-01 2.55561956e-02 2.06575092e-01 7.81936184e-02 6.09841771e-03 + 1.77838932e-01 -3.83774181e-01 1.66830601e-02 4.06237997e-02 6.06539730e-02 -1.23947605e-01 + 3.89192709e-02 1.23675296e-02 -4.91257564e-02 -6.21130683e-02 -3.36018443e-02 -3.14883586e-03 + 2.49598467e+00 -2.93735098e-02 3.30086601e-02 7.91829015e-03 2.78231936e-02 -3.57932496e-02 + 9.74834800e-03 1.32482382e-02 -4.25617904e-02 -1.19113287e-02 -2.15042800e-01 1.64767651e-02 + -2.49406909e-02 -1.41883945e-01 1.47258242e-02 -1.75059826e-02 -8.47667718e-02 -2.83002918e-01 + 3.92807294e-01 -1.91830301e-02 -7.69616324e-02 -3.14634851e-01 -2.33953762e-02 -2.93735098e-02 + 2.26416924e+00 3.02825162e-01 -1.05733259e-01 1.21240901e-01 -9.89002286e-03 -4.12343578e-02 + -9.20422560e-02 -3.82618437e-01 -8.78853635e-02 2.28135770e-02 -4.37649468e-02 -2.09195274e-01 + 1.50466367e-02 -3.49131417e-02 -1.25610573e-01 -1.96101650e-01 1.95711769e-02 -7.66969379e-02 + -4.70085222e-01 -2.24201687e-01 4.57125255e-01 2.74497309e-02 3.30086601e-02 3.02825162e-01 + 2.06576968e+00 3.40251911e-01 -3.14993633e-02 6.21783525e-02 9.87617873e-02 3.18364998e-01 + 5.39706282e-01 1.03444338e-01 -4.07170235e-02 -2.70661856e-01 6.21072104e-02 -1.83219256e-02 + -1.28863490e-01 -1.00471591e-03 2.24558957e-01 -5.34584506e-02 6.67403369e-02 -1.42412780e-01 + 5.21985815e-01 -5.72184336e-01 2.52264246e-01 7.91829015e-03 -1.05733259e-01 3.40251911e-01 + -8.53117379e-01 2.07158983e-01 -1.31678616e-01 -3.35702404e-01 -4.42556733e-01 -1.09366461e+00 + -1.90391346e-02 1.70392560e-01 4.82309376e-01 4.53921680e-01 4.71108828e-03 -2.30352410e-03 + 5.11994676e-02 1.02538910e-01 -5.65270345e-02 -4.20139930e-02 8.66970933e-03 -8.16033294e-02 + 2.48575301e-01 1.62953161e-01 2.78231936e-02 1.21240901e-01 -3.14993633e-02 2.07158983e-01 + 9.32647363e-01 -1.07576511e-02 -2.91947949e-02 -3.14958024e-02 1.96293189e-01 7.49540951e-02 + 8.84269909e-02 1.94186183e-01 3.75282153e-01 4.71677901e-03 4.31349825e-02 -6.12568379e-02 + -1.22832429e-01 5.44860904e-02 4.49127331e-02 -4.46464286e-02 6.44049862e-02 -6.34432974e-02 + 3.47485631e-02 -3.57932496e-02 -9.89002286e-03 6.21783525e-02 -1.31678616e-01 -1.07576511e-02 + 2.45482838e+00 -9.70421303e-02 -1.17589370e-01 -1.55741908e-01 -3.08046058e-02 -1.93818873e-01 + 7.49083880e-02 7.67291521e-02 -1.31762368e-01 4.12789539e-02 4.21152823e-02 -2.58528719e-01 + -2.40023990e-01 -3.01464445e-01 -4.73539656e-02 2.40800483e-01 -1.13625395e-01 1.25139207e-01 + 9.74834800e-03 -4.12343578e-02 9.87617873e-02 -3.35702404e-01 -2.91947949e-02 -9.70421303e-02 + 2.23408330e+00 -3.00411324e-01 -4.00917139e-01 -8.44826003e-02 6.85175949e-02 -3.49076902e-02 + 2.02359643e-01 4.09475364e-02 -3.39239660e-02 1.16576059e-01 -1.39561982e-01 7.61057430e-02 + 2.40210913e-01 -4.30999603e-01 2.44261809e-01 -3.33175047e-01 2.55561956e-02 1.32482382e-02 + -9.20422560e-02 3.18364998e-01 -4.42556733e-01 -3.14958024e-02 -1.17589370e-01 -3.00411324e-01 + 2.09720426e+00 -5.14102784e-01 -8.90011899e-02 9.25869978e-02 2.64278795e-01 2.02339288e-02 + 4.30138516e-02 1.19988640e-01 -2.79010532e-02 -1.34585031e-01 2.17217063e-01 1.62894422e-01 + 2.26474234e-01 4.41068047e-01 -1.07975761e+00 2.06575092e-01 -4.25617904e-02 -3.82618437e-01 + 5.39706282e-01 -1.09366461e+00 1.96293189e-01 -1.55741908e-01 -4.00917139e-01 -5.14102784e-01 + -1.70549181e+00 1.06890459e-01 6.48395657e-02 2.55626981e-01 -7.05142835e-03 -6.52750829e-03 + -2.62232291e-02 1.97400693e-03 1.66491876e-01 -6.12915685e-02 -3.83218137e-02 6.82878309e-02 + 1.50531270e-03 -1.36939378e-02 7.81936184e-02 -1.19113287e-02 -8.78853635e-02 1.03444338e-01 + -1.90391346e-02 7.49540951e-02 -3.08046058e-02 -8.44826003e-02 -8.90011899e-02 1.06890459e-01 + 7.63241563e-01 -2.08258108e-02 -8.28144449e-02 4.08521934e-03 4.97774980e-02 1.97467121e-01 + -8.61689966e-03 -8.85521131e-02 3.26336608e-02 1.96753831e-02 -3.51712925e-02 -3.03301439e-03 + 6.92996341e-02 6.09841771e-03 -2.15042800e-01 2.28135770e-02 -4.07170235e-02 1.70392560e-01 + 8.84269909e-02 -1.93818873e-01 6.85175949e-02 9.25869978e-02 6.48395657e-02 -2.08258108e-02 + -4.74768823e-01 -4.18800128e-02 -2.57988231e-02 1.33369284e-01 1.11451453e-02 6.70184175e-03 + 1.52852492e-02 1.49187733e-01 7.90528504e-03 -9.52436820e-03 2.42311440e-02 4.65693698e-01 + 1.77838932e-01 1.64767651e-02 -4.37649468e-02 -2.70661856e-01 4.82309376e-01 1.94186183e-01 + 7.49083880e-02 -3.49076902e-02 2.64278795e-01 2.55626981e-01 -8.28144449e-02 -4.18800128e-02 + -6.25253768e-01 1.17220819e-03 1.11479519e-02 1.74097194e-01 -1.61909460e-03 -1.81049264e-01 + 7.25135236e-02 2.44669930e-02 9.44835226e-02 -1.58895514e-03 -4.87107239e-01 -3.83774181e-01 + -2.49406909e-02 -2.09195274e-01 6.21072104e-02 4.53921680e-01 3.75282153e-01 7.67291521e-02 + 2.02359643e-01 2.02339288e-02 -7.05142835e-03 4.08521934e-03 -2.57988231e-02 1.17220819e-03 + -7.15138160e-01 6.69499498e-03 -1.64611138e-03 1.99230425e-01 1.55738906e-02 2.42083274e-02 + 9.09657799e-02 1.74574611e-02 3.66026282e-01 -6.51964644e-03 1.66830601e-02 -1.41883945e-01 + 1.50466367e-02 -1.83219256e-02 4.71108828e-03 4.71677901e-03 -1.31762368e-01 4.09475364e-02 + 4.30138516e-02 -6.52750829e-03 4.97774980e-02 1.33369284e-01 1.11479519e-02 6.69499498e-03 + 8.75538128e-01 -2.72119238e-02 -1.63950542e-02 6.35931764e-03 -2.27284124e-02 -4.41425269e-03 + 4.04264505e-03 -1.07176564e-02 -7.19175506e-03 4.06237997e-02 1.47258242e-02 -3.49131417e-02 + -1.28863490e-01 -2.30352410e-03 4.31349825e-02 4.12789539e-02 -3.39239660e-02 1.19988640e-01 + -2.62232291e-02 1.97467121e-01 1.11451453e-02 1.74097194e-01 -1.64611138e-03 -2.72119238e-02 + 7.76366120e-01 3.07599587e-03 5.68900637e-02 -2.18237129e-02 -1.06890265e-02 1.34071159e-03 + 1.61948811e-03 -4.52287980e-02 6.06539730e-02 -1.75059826e-02 -1.25610573e-01 -1.00471591e-03 + 5.11994676e-02 -6.12568379e-02 4.21152823e-02 1.16576059e-01 -2.79010532e-02 1.97400693e-03 + -8.61689966e-03 6.70184175e-03 -1.61909460e-03 1.99230425e-01 -1.63950542e-02 3.07599587e-03 + 7.16371266e-01 -7.86277031e-03 -1.07285502e-02 -2.99845032e-02 -7.61778157e-03 -1.22878854e-01 + 1.10813024e-01 -1.23947605e-01 -8.47667718e-02 -1.96101650e-01 2.24558957e-01 1.02538910e-01 + -1.22832429e-01 -2.58528719e-01 -1.39561982e-01 -1.34585031e-01 1.66491876e-01 -8.85521131e-02 + 1.52852492e-02 -1.81049264e-01 1.55738906e-02 6.35931764e-03 5.68900637e-02 -7.86277031e-03 + 3.19891456e+00 1.69988370e-02 7.27737784e-03 -6.44291741e-02 -1.42881909e-02 -3.76437594e-02 + 3.89192709e-02 -2.83002918e-01 1.95711769e-02 -5.34584506e-02 -5.65270345e-02 5.44860904e-02 + -2.40023990e-01 7.61057430e-02 2.17217063e-01 -6.12915685e-02 3.26336608e-02 1.49187733e-01 + 7.25135236e-02 2.42083274e-02 -2.27284124e-02 -2.18237129e-02 -1.07285502e-02 1.69988370e-02 + 3.25920245e+00 -1.39442716e-02 -1.21347611e-02 -4.50278047e-02 9.06402772e-04 1.23675296e-02 + 3.92807294e-01 -7.66969379e-02 6.67403369e-02 -4.20139930e-02 4.49127331e-02 -3.01464445e-01 + 2.40210913e-01 1.62894422e-01 -3.83218137e-02 1.96753831e-02 7.90528504e-03 2.44669930e-02 + 9.09657799e-02 -4.41425269e-03 -1.06890265e-02 -2.99845032e-02 7.27737784e-03 -1.39442716e-02 + 3.19660717e+00 1.79839764e-02 -9.14134117e-02 1.79320238e-02 -4.91257564e-02 -1.91830301e-02 + -4.70085222e-01 -1.42412780e-01 8.66970933e-03 -4.46464286e-02 -4.73539656e-02 -4.30999603e-01 + 2.26474234e-01 6.82878309e-02 -3.51712925e-02 -9.52436820e-03 9.44835226e-02 1.74574611e-02 + 4.04264505e-03 1.34071159e-03 -7.61778157e-03 -6.44291741e-02 -1.21347611e-02 1.79839764e-02 + 3.12536899e+00 -1.50940944e-02 9.15211632e-02 -6.21130683e-02 -7.69616324e-02 -2.24201687e-01 + 5.21985815e-01 -8.16033294e-02 6.44049862e-02 2.40800483e-01 2.44261809e-01 4.41068047e-01 + 1.50531270e-03 -3.03301439e-03 2.42311440e-02 -1.58895514e-03 3.66026282e-01 -1.07176564e-02 + 1.61948811e-03 -1.22878854e-01 -1.42881909e-02 -4.50278047e-02 -9.14134117e-02 -1.50940944e-02 + 2.85906938e+00 + # CSR column indices + 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 + 16 17 18 19 20 21 22 0 1 2 3 4 5 6 7 8 + 9 10 11 12 13 14 15 16 17 18 19 20 21 22 0 1 + 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 + 18 19 20 21 22 0 1 2 3 4 5 6 7 8 9 10 + 11 12 13 14 15 16 17 18 19 20 21 22 0 1 2 3 + 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 + 20 21 22 0 1 2 3 4 5 6 7 8 9 10 11 12 + 13 14 15 16 17 18 19 20 21 22 0 1 2 3 4 5 + 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 + 22 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 + 15 16 17 18 19 20 21 22 0 1 2 3 4 5 6 7 + 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 0 + 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 + 17 18 19 20 21 22 0 1 2 3 4 5 6 7 8 9 + 10 11 12 13 14 15 16 17 18 19 20 21 22 0 1 2 + 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 + 19 20 21 22 0 1 2 3 4 5 6 7 8 9 10 11 + 12 13 14 15 16 17 18 19 20 21 22 0 1 2 3 4 + 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 + 21 22 0 1 2 3 4 5 6 7 8 9 10 11 12 13 + 14 15 16 17 18 19 20 21 22 0 1 2 3 4 5 6 + 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 + 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 + 16 17 18 19 20 21 22 0 1 2 3 4 5 6 7 8 + 9 10 11 12 13 14 15 16 17 18 19 20 21 22 0 1 + 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 + 18 19 20 21 22 0 1 2 3 4 5 6 7 8 9 10 + 11 12 13 14 15 16 17 18 19 20 21 22 0 1 2 3 + 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 + 20 21 22 0 1 2 3 4 5 6 7 8 9 10 11 12 + 13 14 15 16 17 18 19 20 21 22 0 1 2 3 4 5 + 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 + 22 + # CSR row pointers + 0 23 46 69 92 115 138 161 184 207 230 253 276 299 322 345 + 368 391 414 437 460 483 506 529 + diff --git a/tests/09_DeePKS/22_NO_GO_deepks_vdelta_r_2/result.ref b/tests/09_DeePKS/22_NO_GO_deepks_vdelta_r_2/result.ref new file mode 100644 index 0000000000..5678831f58 --- /dev/null +++ b/tests/09_DeePKS/22_NO_GO_deepks_vdelta_r_2/result.ref @@ -0,0 +1,11 @@ +etotref -466.0431711618678 +etotperatomref -155.3477237206 +deepks_desc 2.319019 +deepks_dm_eig 10.787022245391771 +deepks_e_label 17.126764505645642 +deepks_edelta 0.09815855485768665 +deepks_hr_label_pass 0 +deepks_vdelta_r_pass 0 +deepks_phialpha_r 40.10770566607966 +deepks_gevdm 54.0 +totaltimeref 1.81 diff --git a/tests/09_DeePKS/23_NO_KP_deepks_vdelta_r_1/INPUT b/tests/09_DeePKS/23_NO_KP_deepks_vdelta_r_1/INPUT new file mode 100644 index 0000000000..4b0fc9e328 --- /dev/null +++ b/tests/09_DeePKS/23_NO_KP_deepks_vdelta_r_1/INPUT @@ -0,0 +1,32 @@ +INPUT_PARAMETERS +#Parameters (1.General) +suffix autotest +calculation scf + +nbands 6 +symmetry 0 +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB + +#Parameters (2.Iteration) +ecutwfc 50 +scf_thr 1e-6 +scf_nmax 50 + +#Parameters (3.Basis) +basis_type lcao +gamma_only 0 + +#Parameters (4.Smearing) +smearing_method gaussian +smearing_sigma 0.02 + +#Parameters (5.Mixing) +mixing_type broyden +mixing_beta 0.8 + +#Parameters (6.File) +deepks_out_labels 1 +deepks_scf 1 +deepks_model ../Model_ProjOrb/model_lda_pbe_18.ptg +deepks_v_delta -1 diff --git a/tests/09_DeePKS/103_NO_KP_deepks_vdelta_r_1/KPT b/tests/09_DeePKS/23_NO_KP_deepks_vdelta_r_1/KPT similarity index 100% rename from tests/09_DeePKS/103_NO_KP_deepks_vdelta_r_1/KPT rename to tests/09_DeePKS/23_NO_KP_deepks_vdelta_r_1/KPT diff --git a/tests/09_DeePKS/103_NO_KP_deepks_vdelta_r_1/README b/tests/09_DeePKS/23_NO_KP_deepks_vdelta_r_1/README similarity index 100% rename from tests/09_DeePKS/103_NO_KP_deepks_vdelta_r_1/README rename to tests/09_DeePKS/23_NO_KP_deepks_vdelta_r_1/README diff --git a/tests/09_DeePKS/103_NO_KP_deepks_vdelta_r_1/STRU b/tests/09_DeePKS/23_NO_KP_deepks_vdelta_r_1/STRU similarity index 100% rename from tests/09_DeePKS/103_NO_KP_deepks_vdelta_r_1/STRU rename to tests/09_DeePKS/23_NO_KP_deepks_vdelta_r_1/STRU diff --git a/tests/09_DeePKS/23_NO_KP_deepks_vdelta_r_1/deepks_hrdelta.csr.ref b/tests/09_DeePKS/23_NO_KP_deepks_vdelta_r_1/deepks_hrdelta.csr.ref new file mode 100644 index 0000000000..445b7d58f8 --- /dev/null +++ b/tests/09_DeePKS/23_NO_KP_deepks_vdelta_r_1/deepks_hrdelta.csr.ref @@ -0,0 +1,141 @@ +Matrix Dimension of H_delta(R): 23 +Matrix number of H_delta(R): 1 + #----------------------------------------------------------------------# + # CSR Format # + # The outer loop corresponds to the number of Bravais lattice vectors. # + # The first line contains the index of the Bravais lattice vector # + # (Rx, Ry, Rz), followed by the number of non-zero elements. # + # The subsequent lines consist of three blocks of data, which are # + # values, column indices, row pointers. # + #----------------------------------------------------------------------# + + 0 0 0 529 + # CSR values + -1.17226740e-02 -3.62139850e-03 -7.57658616e-05 -9.43627902e-04 1.61519520e-03 -4.88126962e-03 + 2.14838886e-03 -5.69092611e-04 -1.34740806e-03 -2.17211583e-03 -8.30754807e-03 1.86867772e-03 + 7.47161074e-04 4.24371075e-03 -3.31336838e-03 -3.08073383e-04 -1.94293588e-03 1.84789083e-03 + 2.75341536e-03 -4.52073594e-04 4.07871413e-04 1.43137381e-03 4.10885575e-03 -3.62139850e-03 + -3.31857643e-03 5.55124135e-05 3.97210123e-04 -4.50233142e-04 2.17069899e-03 1.85031146e-03 + 1.16739328e-04 4.32408136e-04 5.70274689e-05 6.99594086e-04 8.77920587e-04 -3.74216359e-05 + 9.07138684e-04 -2.62303837e-03 7.06198588e-05 -2.95999181e-04 1.42369135e-03 6.63247569e-04 + 2.20553361e-04 8.23578297e-04 3.58777368e-04 3.75990027e-03 -7.57658616e-05 5.55124135e-05 + -2.29579487e-03 1.05517608e-03 7.50289951e-04 -9.10169189e-05 1.02377862e-04 -7.14728269e-05 + -5.48909920e-05 -2.21731453e-04 -2.94642184e-04 -1.21531930e-04 -8.25177686e-04 2.75393644e-04 + 1.94818297e-04 2.58520504e-04 -1.19266527e-04 -5.18116647e-05 -7.46808290e-05 2.18067883e-04 + -8.73270929e-04 -5.57969648e-04 3.20285418e-04 -9.43627902e-04 3.97210123e-04 1.05517608e-03 + 6.27129594e-04 2.10459678e-03 -1.27654053e-03 4.22599368e-04 -3.24706105e-04 -8.00733857e-04 + -1.24619255e-03 -2.64164211e-03 -7.12039715e-04 3.97104856e-04 3.86729044e-04 6.13908324e-04 + -1.21192491e-04 -1.27023518e-04 -1.27553282e-04 -2.84217179e-05 -2.61293083e-04 4.81255708e-04 + -9.33661463e-04 4.67067072e-04 1.61519520e-03 -4.50233142e-04 7.50289951e-04 2.10459678e-03 + -5.96371822e-04 2.29609857e-03 -5.81645379e-05 4.50571959e-04 1.37541461e-03 9.15962708e-04 + 3.71901393e-03 5.93156794e-04 -1.08600805e-04 -5.69854124e-04 -5.51784265e-04 -4.70073968e-05 + -1.08973508e-04 1.08735999e-04 -2.26761593e-04 -3.08497239e-04 2.01147715e-04 -1.30198784e-03 + -2.82691276e-04 -4.88126962e-03 2.17069899e-03 -9.10169189e-05 -1.27654053e-03 2.29609857e-03 + -1.17946700e-02 -3.65752097e-03 -4.36949713e-04 -1.04991930e-03 -1.62944026e-03 -8.44403565e-03 + 1.79978067e-03 1.45734825e-03 4.45177303e-03 3.06765884e-03 -6.61583941e-04 -1.92602393e-03 + -1.62896982e-03 2.38699965e-03 -1.34201368e-03 -1.60643312e-03 1.01382835e-03 -3.99355953e-03 + 2.14838886e-03 1.85031146e-03 1.02377862e-04 4.22599368e-04 -5.81645379e-05 -3.65752097e-03 + -3.34036572e-03 1.35458391e-04 3.80487988e-04 3.67953176e-04 6.01680816e-04 8.31307908e-04 + 5.43170647e-04 1.07691641e-03 2.59440381e-03 -2.15248177e-04 -2.85153605e-04 -1.38080932e-03 + 3.33506511e-04 -6.12806701e-04 -1.05075443e-03 -3.24643167e-05 -3.77203641e-03 -5.69092611e-04 + 1.16739328e-04 -7.14728269e-05 -3.24706105e-04 4.50571959e-04 -4.36949713e-04 1.35458391e-04 + -2.52025047e-03 5.47037477e-04 -3.72802097e-04 -1.08319501e-03 -2.53748022e-04 -8.37977755e-04 + 4.25201851e-04 -1.28245874e-04 2.69077723e-04 -7.65612532e-05 1.78789433e-05 3.00822298e-04 + 2.01309516e-04 8.80835967e-04 -9.65086570e-05 -4.10402146e-04 -1.34740806e-03 4.32408136e-04 + -5.48909920e-05 -8.00733857e-04 1.37541461e-03 -1.04991930e-03 3.80487988e-04 5.47037477e-04 + 4.66309048e-04 -2.37927182e-03 -2.79020310e-03 -7.57048101e-04 2.98197496e-04 5.10331568e-04 + -7.00712687e-04 -7.83000417e-05 -7.72562067e-05 1.46308569e-04 -1.48728519e-04 -3.56662803e-04 + -2.30021977e-04 -1.02634361e-03 -3.50951237e-04 -2.17211583e-03 5.70274689e-05 -2.21731453e-04 + -1.24619255e-03 9.15962708e-04 -1.62944026e-03 3.67953176e-04 -3.72802097e-04 -2.37927182e-03 + -3.17636479e-04 -3.57230311e-03 -5.79161721e-04 1.88119336e-04 5.32895704e-04 -4.33752888e-04 + 2.21933361e-05 1.63097910e-04 9.65159816e-05 1.95088303e-04 2.11139203e-04 -3.63635539e-04 + 1.41676091e-03 -3.12986333e-04 -8.30754807e-03 6.99594086e-04 -2.94642184e-04 -2.64164211e-03 + 3.71901393e-03 -8.44403565e-03 6.01680816e-04 -1.08319501e-03 -2.79020310e-03 -3.57230311e-03 + -1.26915681e-02 -5.67704352e-04 6.40881586e-04 2.52353706e-03 -6.12780257e-05 -3.97812123e-04 + -1.56385352e-03 3.12831896e-05 1.75141762e-03 -5.52685598e-04 -4.37464862e-04 1.06022860e-03 + 1.26280909e-05 1.86867772e-03 8.77920587e-04 -1.21531930e-04 -7.12039715e-04 5.93156794e-04 + 1.79978067e-03 8.31307908e-04 -2.53748022e-04 -7.57048101e-04 -5.79161721e-04 -5.67704352e-04 + -1.87025156e-03 -5.03563736e-04 -1.99325653e-03 7.33280233e-05 1.43780052e-04 5.95513212e-04 + -8.69591639e-05 -1.07247375e-03 5.14077802e-04 1.89341367e-04 1.97742222e-05 -5.93739376e-05 + 7.47161074e-04 -3.74216359e-05 -8.25177686e-04 3.97104856e-04 -1.08600805e-04 1.45734825e-03 + 5.43170647e-04 -8.37977755e-04 2.98197496e-04 1.88119336e-04 6.40881586e-04 -5.03563736e-04 + -1.80813878e-03 -5.80109174e-04 -6.96488950e-05 -5.96140210e-05 2.45238335e-04 2.42989359e-04 + 9.54997836e-05 1.09138808e-03 1.72195202e-04 -7.57142452e-04 2.89724169e-04 4.24371075e-03 + 9.07138684e-04 2.75393644e-04 3.86729044e-04 -5.69854124e-04 4.45177303e-03 1.07691641e-03 + 4.25201851e-04 5.10331568e-04 5.32895704e-04 2.52353706e-03 -1.99325653e-03 -5.80109174e-04 + -3.88395486e-03 -7.80058099e-05 2.48044905e-04 8.24811995e-04 -1.35230180e-05 -1.66664666e-03 + -3.24481106e-05 5.25573118e-04 -1.88659888e-03 1.21499755e-04 -3.31336838e-03 -2.62303837e-03 + 1.94818297e-04 6.13908324e-04 -5.51784265e-04 3.06765884e-03 2.59440381e-03 -1.28245874e-04 + -7.00712687e-04 -4.33752888e-04 -6.12780257e-05 7.33280233e-05 -6.96488950e-05 -7.80058099e-05 + -2.13180521e-03 2.36142590e-04 -4.05397975e-05 2.24871509e-03 1.71581618e-04 2.66907522e-04 + 8.85356707e-04 2.23424203e-04 3.60025084e-03 -3.08073383e-04 7.06198588e-05 2.58520504e-04 + -1.21192491e-04 -4.70073968e-05 -6.61583941e-04 -2.15248177e-04 2.69077723e-04 -7.83000417e-05 + 2.21933361e-05 -3.97812123e-04 1.43780052e-04 -5.96140210e-05 2.48044905e-04 2.36142590e-04 + -1.52959026e-04 -1.18960326e-04 -1.30874299e-05 1.95942523e-04 -9.74404173e-05 -7.49881215e-05 + 5.55136968e-07 -1.83179620e-04 -1.94293588e-03 -2.95999181e-04 -1.19266527e-04 -1.27023518e-04 + -1.08973508e-04 -1.92602393e-03 -2.85153605e-04 -7.65612532e-05 -7.72562067e-05 1.63097910e-04 + -1.56385352e-03 5.95513212e-04 2.45238335e-04 8.24811995e-04 -4.05397975e-05 -1.18960326e-04 + -6.06345144e-04 5.27778316e-05 7.81662817e-04 -3.57182818e-04 -1.54549695e-04 7.53587456e-05 + 2.40887746e-05 1.84789083e-03 1.42369135e-03 -5.18116647e-05 -1.27553282e-04 1.08735999e-04 + -1.62896982e-03 -1.38080932e-03 1.78789433e-05 1.46308569e-04 9.65159816e-05 3.12831896e-05 + -8.69591639e-05 2.42989359e-04 -1.35230180e-05 2.24871509e-03 -1.30874299e-05 5.27778316e-05 + -3.79019608e-04 -1.27242112e-04 -1.94073358e-04 -4.33793272e-04 -1.54117619e-04 -1.79992794e-03 + 2.75341536e-03 6.63247569e-04 -7.46808290e-05 -2.84217179e-05 -2.26761593e-04 2.38699965e-03 + 3.33506511e-04 3.00822298e-04 -1.48728519e-04 1.95088303e-04 1.75141762e-03 -1.07247375e-03 + 9.54997836e-05 -1.66664666e-03 1.71581618e-04 1.95942523e-04 7.81662817e-04 -1.27242112e-04 + -5.88627411e-04 8.54510996e-04 -2.89432341e-04 -5.24942201e-04 -2.73772524e-04 -4.52073594e-04 + 2.20553361e-04 2.18067883e-04 -2.61293083e-04 -3.08497239e-04 -1.34201368e-03 -6.12806701e-04 + 2.01309516e-04 -3.56662803e-04 2.11139203e-04 -5.52685598e-04 5.14077802e-04 1.09138808e-03 + -3.24481106e-05 2.66907522e-04 -9.74404173e-05 -3.57182818e-04 -1.94073358e-04 8.54510996e-04 + 1.25682163e-03 -3.89499039e-04 4.78108647e-04 -9.56639530e-04 4.07871413e-04 8.23578297e-04 + -8.73270929e-04 4.81255708e-04 2.01147715e-04 -1.60643312e-03 -1.05075443e-03 8.80835967e-04 + -2.30021977e-04 -3.63635539e-04 -4.37464862e-04 1.89341367e-04 1.72195202e-04 5.25573118e-04 + 8.85356707e-04 -7.49881215e-05 -1.54549695e-04 -4.33793272e-04 -2.89432341e-04 -3.89499039e-04 + -2.37112515e-03 -5.15360701e-04 -1.20550576e-03 1.43137381e-03 3.58777368e-04 -5.57969648e-04 + -9.33661463e-04 -1.30198784e-03 1.01382835e-03 -3.24643167e-05 -9.65086570e-05 -1.02634361e-03 + 1.41676091e-03 1.06022860e-03 1.97742222e-05 -7.57142452e-04 -1.88659888e-03 2.23424203e-04 + 5.55136968e-07 7.53587456e-05 -1.54117619e-04 -5.24942201e-04 4.78108647e-04 -5.15360701e-04 + 2.76519524e-03 -4.59410571e-04 4.10885575e-03 3.75990027e-03 3.20285418e-04 4.67067072e-04 + -2.82691276e-04 -3.99355953e-03 -3.77203641e-03 -4.10402146e-04 -3.50951237e-04 -3.12986333e-04 + 1.26280909e-05 -5.93739376e-05 2.89724169e-04 1.21499755e-04 3.60025084e-03 -1.83179620e-04 + 2.40887746e-05 -1.79992794e-03 -2.73772524e-04 -9.56639530e-04 -1.20550576e-03 -4.59410571e-04 + -7.09398430e-03 + # CSR column indices + 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 + 16 17 18 19 20 21 22 0 1 2 3 4 5 6 7 8 + 9 10 11 12 13 14 15 16 17 18 19 20 21 22 0 1 + 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 + 18 19 20 21 22 0 1 2 3 4 5 6 7 8 9 10 + 11 12 13 14 15 16 17 18 19 20 21 22 0 1 2 3 + 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 + 20 21 22 0 1 2 3 4 5 6 7 8 9 10 11 12 + 13 14 15 16 17 18 19 20 21 22 0 1 2 3 4 5 + 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 + 22 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 + 15 16 17 18 19 20 21 22 0 1 2 3 4 5 6 7 + 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 0 + 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 + 17 18 19 20 21 22 0 1 2 3 4 5 6 7 8 9 + 10 11 12 13 14 15 16 17 18 19 20 21 22 0 1 2 + 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 + 19 20 21 22 0 1 2 3 4 5 6 7 8 9 10 11 + 12 13 14 15 16 17 18 19 20 21 22 0 1 2 3 4 + 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 + 21 22 0 1 2 3 4 5 6 7 8 9 10 11 12 13 + 14 15 16 17 18 19 20 21 22 0 1 2 3 4 5 6 + 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 + 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 + 16 17 18 19 20 21 22 0 1 2 3 4 5 6 7 8 + 9 10 11 12 13 14 15 16 17 18 19 20 21 22 0 1 + 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 + 18 19 20 21 22 0 1 2 3 4 5 6 7 8 9 10 + 11 12 13 14 15 16 17 18 19 20 21 22 0 1 2 3 + 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 + 20 21 22 0 1 2 3 4 5 6 7 8 9 10 11 12 + 13 14 15 16 17 18 19 20 21 22 0 1 2 3 4 5 + 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 + 22 + # CSR row pointers + 0 23 46 69 92 115 138 161 184 207 230 253 276 299 322 345 + 368 391 414 437 460 483 506 529 + diff --git a/tests/09_DeePKS/23_NO_KP_deepks_vdelta_r_1/deepks_hrtot.csr.ref b/tests/09_DeePKS/23_NO_KP_deepks_vdelta_r_1/deepks_hrtot.csr.ref new file mode 100644 index 0000000000..0e043b92b4 --- /dev/null +++ b/tests/09_DeePKS/23_NO_KP_deepks_vdelta_r_1/deepks_hrtot.csr.ref @@ -0,0 +1,141 @@ +Matrix Dimension of H(R): 23 +Matrix number of H(R): 1 + #----------------------------------------------------------------------# + # CSR Format # + # The outer loop corresponds to the number of Bravais lattice vectors. # + # The first line contains the index of the Bravais lattice vector # + # (Rx, Ry, Rz), followed by the number of non-zero elements. # + # The subsequent lines consist of three blocks of data, which are # + # values, column indices, row pointers. # + #----------------------------------------------------------------------# + + 0 0 0 529 + # CSR values + -8.42107904e-01 2.13550175e-01 -3.36018443e-02 -3.14634851e-01 4.57125255e-01 -5.72184336e-01 + 2.48575301e-01 -6.34432974e-02 -1.13625395e-01 -3.33175047e-01 -1.07975761e+00 -1.36939378e-02 + 6.92996341e-02 4.65693698e-01 -4.87107239e-01 -6.51964644e-03 -7.19175506e-03 -4.52287980e-02 + 1.10813024e-01 -3.76437594e-02 9.06402772e-04 1.79320238e-02 9.15211632e-02 2.13550175e-01 + 9.37557925e-01 -3.14883586e-03 -2.33953762e-02 2.74497309e-02 2.52264246e-01 1.62953161e-01 + 3.47485631e-02 1.25139207e-01 2.55561956e-02 2.06575092e-01 7.81936184e-02 6.09841771e-03 + 1.77838932e-01 -3.83774181e-01 1.66830601e-02 4.06237997e-02 6.06539730e-02 -1.23947605e-01 + 3.89192709e-02 1.23675296e-02 -4.91257564e-02 -6.21130683e-02 -3.36018443e-02 -3.14883586e-03 + 2.49598467e+00 -2.93735098e-02 3.30086601e-02 7.91829015e-03 2.78231936e-02 -3.57932496e-02 + 9.74834800e-03 1.32482382e-02 -4.25617904e-02 -1.19113287e-02 -2.15042800e-01 1.64767651e-02 + -2.49406909e-02 -1.41883945e-01 1.47258242e-02 -1.75059826e-02 -8.47667718e-02 -2.83002918e-01 + 3.92807294e-01 -1.91830301e-02 -7.69616324e-02 -3.14634851e-01 -2.33953762e-02 -2.93735098e-02 + 2.26416924e+00 3.02825162e-01 -1.05733259e-01 1.21240901e-01 -9.89002286e-03 -4.12343578e-02 + -9.20422560e-02 -3.82618437e-01 -8.78853635e-02 2.28135770e-02 -4.37649468e-02 -2.09195274e-01 + 1.50466367e-02 -3.49131417e-02 -1.25610573e-01 -1.96101650e-01 1.95711769e-02 -7.66969379e-02 + -4.70085222e-01 -2.24201687e-01 4.57125255e-01 2.74497309e-02 3.30086601e-02 3.02825162e-01 + 2.06576968e+00 3.40251911e-01 -3.14993633e-02 6.21783525e-02 9.87617873e-02 3.18364998e-01 + 5.39706282e-01 1.03444338e-01 -4.07170235e-02 -2.70661856e-01 6.21072104e-02 -1.83219256e-02 + -1.28863490e-01 -1.00471591e-03 2.24558957e-01 -5.34584506e-02 6.67403369e-02 -1.42412780e-01 + 5.21985815e-01 -5.72184336e-01 2.52264246e-01 7.91829015e-03 -1.05733259e-01 3.40251911e-01 + -8.53117379e-01 2.07158983e-01 -1.31678616e-01 -3.35702404e-01 -4.42556733e-01 -1.09366461e+00 + -1.90391346e-02 1.70392560e-01 4.82309376e-01 4.53921680e-01 4.71108828e-03 -2.30352410e-03 + 5.11994676e-02 1.02538910e-01 -5.65270345e-02 -4.20139930e-02 8.66970933e-03 -8.16033294e-02 + 2.48575301e-01 1.62953161e-01 2.78231936e-02 1.21240901e-01 -3.14993633e-02 2.07158983e-01 + 9.32647363e-01 -1.07576511e-02 -2.91947949e-02 -3.14958024e-02 1.96293189e-01 7.49540951e-02 + 8.84269909e-02 1.94186183e-01 3.75282153e-01 4.71677901e-03 4.31349825e-02 -6.12568379e-02 + -1.22832429e-01 5.44860904e-02 4.49127331e-02 -4.46464286e-02 6.44049862e-02 -6.34432974e-02 + 3.47485631e-02 -3.57932496e-02 -9.89002286e-03 6.21783525e-02 -1.31678616e-01 -1.07576511e-02 + 2.45482838e+00 -9.70421303e-02 -1.17589370e-01 -1.55741908e-01 -3.08046058e-02 -1.93818873e-01 + 7.49083880e-02 7.67291521e-02 -1.31762368e-01 4.12789539e-02 4.21152823e-02 -2.58528719e-01 + -2.40023990e-01 -3.01464445e-01 -4.73539656e-02 2.40800483e-01 -1.13625395e-01 1.25139207e-01 + 9.74834800e-03 -4.12343578e-02 9.87617873e-02 -3.35702404e-01 -2.91947949e-02 -9.70421303e-02 + 2.23408330e+00 -3.00411324e-01 -4.00917139e-01 -8.44826003e-02 6.85175949e-02 -3.49076902e-02 + 2.02359643e-01 4.09475364e-02 -3.39239660e-02 1.16576059e-01 -1.39561982e-01 7.61057430e-02 + 2.40210913e-01 -4.30999603e-01 2.44261809e-01 -3.33175047e-01 2.55561956e-02 1.32482382e-02 + -9.20422560e-02 3.18364998e-01 -4.42556733e-01 -3.14958024e-02 -1.17589370e-01 -3.00411324e-01 + 2.09720426e+00 -5.14102784e-01 -8.90011899e-02 9.25869978e-02 2.64278795e-01 2.02339288e-02 + 4.30138516e-02 1.19988640e-01 -2.79010532e-02 -1.34585031e-01 2.17217063e-01 1.62894422e-01 + 2.26474234e-01 4.41068047e-01 -1.07975761e+00 2.06575092e-01 -4.25617904e-02 -3.82618437e-01 + 5.39706282e-01 -1.09366461e+00 1.96293189e-01 -1.55741908e-01 -4.00917139e-01 -5.14102784e-01 + -1.70549181e+00 1.06890459e-01 6.48395657e-02 2.55626981e-01 -7.05142835e-03 -6.52750829e-03 + -2.62232291e-02 1.97400693e-03 1.66491876e-01 -6.12915685e-02 -3.83218137e-02 6.82878309e-02 + 1.50531270e-03 -1.36939378e-02 7.81936184e-02 -1.19113287e-02 -8.78853635e-02 1.03444338e-01 + -1.90391346e-02 7.49540951e-02 -3.08046058e-02 -8.44826003e-02 -8.90011899e-02 1.06890459e-01 + 7.63241563e-01 -2.08258108e-02 -8.28144449e-02 4.08521934e-03 4.97774980e-02 1.97467121e-01 + -8.61689966e-03 -8.85521131e-02 3.26336608e-02 1.96753831e-02 -3.51712925e-02 -3.03301439e-03 + 6.92996341e-02 6.09841771e-03 -2.15042800e-01 2.28135770e-02 -4.07170235e-02 1.70392560e-01 + 8.84269909e-02 -1.93818873e-01 6.85175949e-02 9.25869978e-02 6.48395657e-02 -2.08258108e-02 + -4.74768823e-01 -4.18800128e-02 -2.57988231e-02 1.33369284e-01 1.11451453e-02 6.70184175e-03 + 1.52852492e-02 1.49187733e-01 7.90528504e-03 -9.52436820e-03 2.42311440e-02 4.65693698e-01 + 1.77838932e-01 1.64767651e-02 -4.37649468e-02 -2.70661856e-01 4.82309376e-01 1.94186183e-01 + 7.49083880e-02 -3.49076902e-02 2.64278795e-01 2.55626981e-01 -8.28144449e-02 -4.18800128e-02 + -6.25253768e-01 1.17220819e-03 1.11479519e-02 1.74097194e-01 -1.61909460e-03 -1.81049264e-01 + 7.25135236e-02 2.44669930e-02 9.44835226e-02 -1.58895514e-03 -4.87107239e-01 -3.83774181e-01 + -2.49406909e-02 -2.09195274e-01 6.21072104e-02 4.53921680e-01 3.75282153e-01 7.67291521e-02 + 2.02359643e-01 2.02339288e-02 -7.05142835e-03 4.08521934e-03 -2.57988231e-02 1.17220819e-03 + -7.15138160e-01 6.69499498e-03 -1.64611138e-03 1.99230425e-01 1.55738906e-02 2.42083274e-02 + 9.09657799e-02 1.74574611e-02 3.66026282e-01 -6.51964644e-03 1.66830601e-02 -1.41883945e-01 + 1.50466367e-02 -1.83219256e-02 4.71108828e-03 4.71677901e-03 -1.31762368e-01 4.09475364e-02 + 4.30138516e-02 -6.52750829e-03 4.97774980e-02 1.33369284e-01 1.11479519e-02 6.69499498e-03 + 8.75538128e-01 -2.72119238e-02 -1.63950542e-02 6.35931764e-03 -2.27284124e-02 -4.41425269e-03 + 4.04264505e-03 -1.07176564e-02 -7.19175506e-03 4.06237997e-02 1.47258242e-02 -3.49131417e-02 + -1.28863490e-01 -2.30352410e-03 4.31349825e-02 4.12789539e-02 -3.39239660e-02 1.19988640e-01 + -2.62232291e-02 1.97467121e-01 1.11451453e-02 1.74097194e-01 -1.64611138e-03 -2.72119238e-02 + 7.76366120e-01 3.07599587e-03 5.68900637e-02 -2.18237129e-02 -1.06890265e-02 1.34071159e-03 + 1.61948811e-03 -4.52287980e-02 6.06539730e-02 -1.75059826e-02 -1.25610573e-01 -1.00471591e-03 + 5.11994676e-02 -6.12568379e-02 4.21152823e-02 1.16576059e-01 -2.79010532e-02 1.97400693e-03 + -8.61689966e-03 6.70184175e-03 -1.61909460e-03 1.99230425e-01 -1.63950542e-02 3.07599587e-03 + 7.16371266e-01 -7.86277031e-03 -1.07285502e-02 -2.99845032e-02 -7.61778157e-03 -1.22878854e-01 + 1.10813024e-01 -1.23947605e-01 -8.47667718e-02 -1.96101650e-01 2.24558957e-01 1.02538910e-01 + -1.22832429e-01 -2.58528719e-01 -1.39561982e-01 -1.34585031e-01 1.66491876e-01 -8.85521131e-02 + 1.52852492e-02 -1.81049264e-01 1.55738906e-02 6.35931764e-03 5.68900637e-02 -7.86277031e-03 + 3.19891456e+00 1.69988370e-02 7.27737784e-03 -6.44291741e-02 -1.42881909e-02 -3.76437594e-02 + 3.89192709e-02 -2.83002918e-01 1.95711769e-02 -5.34584506e-02 -5.65270345e-02 5.44860904e-02 + -2.40023990e-01 7.61057430e-02 2.17217063e-01 -6.12915685e-02 3.26336608e-02 1.49187733e-01 + 7.25135236e-02 2.42083274e-02 -2.27284124e-02 -2.18237129e-02 -1.07285502e-02 1.69988370e-02 + 3.25920245e+00 -1.39442716e-02 -1.21347611e-02 -4.50278047e-02 9.06402772e-04 1.23675296e-02 + 3.92807294e-01 -7.66969379e-02 6.67403369e-02 -4.20139930e-02 4.49127331e-02 -3.01464445e-01 + 2.40210913e-01 1.62894422e-01 -3.83218137e-02 1.96753831e-02 7.90528504e-03 2.44669930e-02 + 9.09657799e-02 -4.41425269e-03 -1.06890265e-02 -2.99845032e-02 7.27737784e-03 -1.39442716e-02 + 3.19660717e+00 1.79839764e-02 -9.14134117e-02 1.79320238e-02 -4.91257564e-02 -1.91830301e-02 + -4.70085222e-01 -1.42412780e-01 8.66970933e-03 -4.46464286e-02 -4.73539656e-02 -4.30999603e-01 + 2.26474234e-01 6.82878309e-02 -3.51712925e-02 -9.52436820e-03 9.44835226e-02 1.74574611e-02 + 4.04264505e-03 1.34071159e-03 -7.61778157e-03 -6.44291741e-02 -1.21347611e-02 1.79839764e-02 + 3.12536899e+00 -1.50940944e-02 9.15211632e-02 -6.21130683e-02 -7.69616324e-02 -2.24201687e-01 + 5.21985815e-01 -8.16033294e-02 6.44049862e-02 2.40800483e-01 2.44261809e-01 4.41068047e-01 + 1.50531270e-03 -3.03301439e-03 2.42311440e-02 -1.58895514e-03 3.66026282e-01 -1.07176564e-02 + 1.61948811e-03 -1.22878854e-01 -1.42881909e-02 -4.50278047e-02 -9.14134117e-02 -1.50940944e-02 + 2.85906938e+00 + # CSR column indices + 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 + 16 17 18 19 20 21 22 0 1 2 3 4 5 6 7 8 + 9 10 11 12 13 14 15 16 17 18 19 20 21 22 0 1 + 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 + 18 19 20 21 22 0 1 2 3 4 5 6 7 8 9 10 + 11 12 13 14 15 16 17 18 19 20 21 22 0 1 2 3 + 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 + 20 21 22 0 1 2 3 4 5 6 7 8 9 10 11 12 + 13 14 15 16 17 18 19 20 21 22 0 1 2 3 4 5 + 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 + 22 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 + 15 16 17 18 19 20 21 22 0 1 2 3 4 5 6 7 + 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 0 + 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 + 17 18 19 20 21 22 0 1 2 3 4 5 6 7 8 9 + 10 11 12 13 14 15 16 17 18 19 20 21 22 0 1 2 + 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 + 19 20 21 22 0 1 2 3 4 5 6 7 8 9 10 11 + 12 13 14 15 16 17 18 19 20 21 22 0 1 2 3 4 + 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 + 21 22 0 1 2 3 4 5 6 7 8 9 10 11 12 13 + 14 15 16 17 18 19 20 21 22 0 1 2 3 4 5 6 + 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 + 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 + 16 17 18 19 20 21 22 0 1 2 3 4 5 6 7 8 + 9 10 11 12 13 14 15 16 17 18 19 20 21 22 0 1 + 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 + 18 19 20 21 22 0 1 2 3 4 5 6 7 8 9 10 + 11 12 13 14 15 16 17 18 19 20 21 22 0 1 2 3 + 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 + 20 21 22 0 1 2 3 4 5 6 7 8 9 10 11 12 + 13 14 15 16 17 18 19 20 21 22 0 1 2 3 4 5 + 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 + 22 + # CSR row pointers + 0 23 46 69 92 115 138 161 184 207 230 253 276 299 322 345 + 368 391 414 437 460 483 506 529 + diff --git a/tests/09_DeePKS/103_NO_KP_deepks_vdelta_r_1/result.ref b/tests/09_DeePKS/23_NO_KP_deepks_vdelta_r_1/result.ref similarity index 100% rename from tests/09_DeePKS/103_NO_KP_deepks_vdelta_r_1/result.ref rename to tests/09_DeePKS/23_NO_KP_deepks_vdelta_r_1/result.ref diff --git a/tests/09_DeePKS/24_NO_KP_deepks_vdelta_r_2/INPUT b/tests/09_DeePKS/24_NO_KP_deepks_vdelta_r_2/INPUT new file mode 100644 index 0000000000..c5abc4ae5d --- /dev/null +++ b/tests/09_DeePKS/24_NO_KP_deepks_vdelta_r_2/INPUT @@ -0,0 +1,32 @@ +INPUT_PARAMETERS +#Parameters (1.General) +suffix autotest +calculation scf + +nbands 6 +symmetry 0 +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB + +#Parameters (2.Iteration) +ecutwfc 50 +scf_thr 1e-6 +scf_nmax 50 + +#Parameters (3.Basis) +basis_type lcao +gamma_only 0 + +#Parameters (4.Smearing) +smearing_method gaussian +smearing_sigma 0.02 + +#Parameters (5.Mixing) +mixing_type broyden +mixing_beta 0.8 + +#Parameters (6.File) +deepks_out_labels 1 +deepks_scf 1 +deepks_model ../Model_ProjOrb/model_lda_pbe_18.ptg +deepks_v_delta -2 diff --git a/tests/09_DeePKS/103_NO_KP_deepks_vdelta_r_2/KPT b/tests/09_DeePKS/24_NO_KP_deepks_vdelta_r_2/KPT similarity index 100% rename from tests/09_DeePKS/103_NO_KP_deepks_vdelta_r_2/KPT rename to tests/09_DeePKS/24_NO_KP_deepks_vdelta_r_2/KPT diff --git a/tests/09_DeePKS/103_NO_KP_deepks_vdelta_r_2/README b/tests/09_DeePKS/24_NO_KP_deepks_vdelta_r_2/README similarity index 100% rename from tests/09_DeePKS/103_NO_KP_deepks_vdelta_r_2/README rename to tests/09_DeePKS/24_NO_KP_deepks_vdelta_r_2/README diff --git a/tests/09_DeePKS/103_NO_KP_deepks_vdelta_r_2/STRU b/tests/09_DeePKS/24_NO_KP_deepks_vdelta_r_2/STRU similarity index 100% rename from tests/09_DeePKS/103_NO_KP_deepks_vdelta_r_2/STRU rename to tests/09_DeePKS/24_NO_KP_deepks_vdelta_r_2/STRU diff --git a/tests/09_DeePKS/24_NO_KP_deepks_vdelta_r_2/deepks_hrdelta.csr.ref b/tests/09_DeePKS/24_NO_KP_deepks_vdelta_r_2/deepks_hrdelta.csr.ref new file mode 100644 index 0000000000..445b7d58f8 --- /dev/null +++ b/tests/09_DeePKS/24_NO_KP_deepks_vdelta_r_2/deepks_hrdelta.csr.ref @@ -0,0 +1,141 @@ +Matrix Dimension of H_delta(R): 23 +Matrix number of H_delta(R): 1 + #----------------------------------------------------------------------# + # CSR Format # + # The outer loop corresponds to the number of Bravais lattice vectors. # + # The first line contains the index of the Bravais lattice vector # + # (Rx, Ry, Rz), followed by the number of non-zero elements. # + # The subsequent lines consist of three blocks of data, which are # + # values, column indices, row pointers. # + #----------------------------------------------------------------------# + + 0 0 0 529 + # CSR values + -1.17226740e-02 -3.62139850e-03 -7.57658616e-05 -9.43627902e-04 1.61519520e-03 -4.88126962e-03 + 2.14838886e-03 -5.69092611e-04 -1.34740806e-03 -2.17211583e-03 -8.30754807e-03 1.86867772e-03 + 7.47161074e-04 4.24371075e-03 -3.31336838e-03 -3.08073383e-04 -1.94293588e-03 1.84789083e-03 + 2.75341536e-03 -4.52073594e-04 4.07871413e-04 1.43137381e-03 4.10885575e-03 -3.62139850e-03 + -3.31857643e-03 5.55124135e-05 3.97210123e-04 -4.50233142e-04 2.17069899e-03 1.85031146e-03 + 1.16739328e-04 4.32408136e-04 5.70274689e-05 6.99594086e-04 8.77920587e-04 -3.74216359e-05 + 9.07138684e-04 -2.62303837e-03 7.06198588e-05 -2.95999181e-04 1.42369135e-03 6.63247569e-04 + 2.20553361e-04 8.23578297e-04 3.58777368e-04 3.75990027e-03 -7.57658616e-05 5.55124135e-05 + -2.29579487e-03 1.05517608e-03 7.50289951e-04 -9.10169189e-05 1.02377862e-04 -7.14728269e-05 + -5.48909920e-05 -2.21731453e-04 -2.94642184e-04 -1.21531930e-04 -8.25177686e-04 2.75393644e-04 + 1.94818297e-04 2.58520504e-04 -1.19266527e-04 -5.18116647e-05 -7.46808290e-05 2.18067883e-04 + -8.73270929e-04 -5.57969648e-04 3.20285418e-04 -9.43627902e-04 3.97210123e-04 1.05517608e-03 + 6.27129594e-04 2.10459678e-03 -1.27654053e-03 4.22599368e-04 -3.24706105e-04 -8.00733857e-04 + -1.24619255e-03 -2.64164211e-03 -7.12039715e-04 3.97104856e-04 3.86729044e-04 6.13908324e-04 + -1.21192491e-04 -1.27023518e-04 -1.27553282e-04 -2.84217179e-05 -2.61293083e-04 4.81255708e-04 + -9.33661463e-04 4.67067072e-04 1.61519520e-03 -4.50233142e-04 7.50289951e-04 2.10459678e-03 + -5.96371822e-04 2.29609857e-03 -5.81645379e-05 4.50571959e-04 1.37541461e-03 9.15962708e-04 + 3.71901393e-03 5.93156794e-04 -1.08600805e-04 -5.69854124e-04 -5.51784265e-04 -4.70073968e-05 + -1.08973508e-04 1.08735999e-04 -2.26761593e-04 -3.08497239e-04 2.01147715e-04 -1.30198784e-03 + -2.82691276e-04 -4.88126962e-03 2.17069899e-03 -9.10169189e-05 -1.27654053e-03 2.29609857e-03 + -1.17946700e-02 -3.65752097e-03 -4.36949713e-04 -1.04991930e-03 -1.62944026e-03 -8.44403565e-03 + 1.79978067e-03 1.45734825e-03 4.45177303e-03 3.06765884e-03 -6.61583941e-04 -1.92602393e-03 + -1.62896982e-03 2.38699965e-03 -1.34201368e-03 -1.60643312e-03 1.01382835e-03 -3.99355953e-03 + 2.14838886e-03 1.85031146e-03 1.02377862e-04 4.22599368e-04 -5.81645379e-05 -3.65752097e-03 + -3.34036572e-03 1.35458391e-04 3.80487988e-04 3.67953176e-04 6.01680816e-04 8.31307908e-04 + 5.43170647e-04 1.07691641e-03 2.59440381e-03 -2.15248177e-04 -2.85153605e-04 -1.38080932e-03 + 3.33506511e-04 -6.12806701e-04 -1.05075443e-03 -3.24643167e-05 -3.77203641e-03 -5.69092611e-04 + 1.16739328e-04 -7.14728269e-05 -3.24706105e-04 4.50571959e-04 -4.36949713e-04 1.35458391e-04 + -2.52025047e-03 5.47037477e-04 -3.72802097e-04 -1.08319501e-03 -2.53748022e-04 -8.37977755e-04 + 4.25201851e-04 -1.28245874e-04 2.69077723e-04 -7.65612532e-05 1.78789433e-05 3.00822298e-04 + 2.01309516e-04 8.80835967e-04 -9.65086570e-05 -4.10402146e-04 -1.34740806e-03 4.32408136e-04 + -5.48909920e-05 -8.00733857e-04 1.37541461e-03 -1.04991930e-03 3.80487988e-04 5.47037477e-04 + 4.66309048e-04 -2.37927182e-03 -2.79020310e-03 -7.57048101e-04 2.98197496e-04 5.10331568e-04 + -7.00712687e-04 -7.83000417e-05 -7.72562067e-05 1.46308569e-04 -1.48728519e-04 -3.56662803e-04 + -2.30021977e-04 -1.02634361e-03 -3.50951237e-04 -2.17211583e-03 5.70274689e-05 -2.21731453e-04 + -1.24619255e-03 9.15962708e-04 -1.62944026e-03 3.67953176e-04 -3.72802097e-04 -2.37927182e-03 + -3.17636479e-04 -3.57230311e-03 -5.79161721e-04 1.88119336e-04 5.32895704e-04 -4.33752888e-04 + 2.21933361e-05 1.63097910e-04 9.65159816e-05 1.95088303e-04 2.11139203e-04 -3.63635539e-04 + 1.41676091e-03 -3.12986333e-04 -8.30754807e-03 6.99594086e-04 -2.94642184e-04 -2.64164211e-03 + 3.71901393e-03 -8.44403565e-03 6.01680816e-04 -1.08319501e-03 -2.79020310e-03 -3.57230311e-03 + -1.26915681e-02 -5.67704352e-04 6.40881586e-04 2.52353706e-03 -6.12780257e-05 -3.97812123e-04 + -1.56385352e-03 3.12831896e-05 1.75141762e-03 -5.52685598e-04 -4.37464862e-04 1.06022860e-03 + 1.26280909e-05 1.86867772e-03 8.77920587e-04 -1.21531930e-04 -7.12039715e-04 5.93156794e-04 + 1.79978067e-03 8.31307908e-04 -2.53748022e-04 -7.57048101e-04 -5.79161721e-04 -5.67704352e-04 + -1.87025156e-03 -5.03563736e-04 -1.99325653e-03 7.33280233e-05 1.43780052e-04 5.95513212e-04 + -8.69591639e-05 -1.07247375e-03 5.14077802e-04 1.89341367e-04 1.97742222e-05 -5.93739376e-05 + 7.47161074e-04 -3.74216359e-05 -8.25177686e-04 3.97104856e-04 -1.08600805e-04 1.45734825e-03 + 5.43170647e-04 -8.37977755e-04 2.98197496e-04 1.88119336e-04 6.40881586e-04 -5.03563736e-04 + -1.80813878e-03 -5.80109174e-04 -6.96488950e-05 -5.96140210e-05 2.45238335e-04 2.42989359e-04 + 9.54997836e-05 1.09138808e-03 1.72195202e-04 -7.57142452e-04 2.89724169e-04 4.24371075e-03 + 9.07138684e-04 2.75393644e-04 3.86729044e-04 -5.69854124e-04 4.45177303e-03 1.07691641e-03 + 4.25201851e-04 5.10331568e-04 5.32895704e-04 2.52353706e-03 -1.99325653e-03 -5.80109174e-04 + -3.88395486e-03 -7.80058099e-05 2.48044905e-04 8.24811995e-04 -1.35230180e-05 -1.66664666e-03 + -3.24481106e-05 5.25573118e-04 -1.88659888e-03 1.21499755e-04 -3.31336838e-03 -2.62303837e-03 + 1.94818297e-04 6.13908324e-04 -5.51784265e-04 3.06765884e-03 2.59440381e-03 -1.28245874e-04 + -7.00712687e-04 -4.33752888e-04 -6.12780257e-05 7.33280233e-05 -6.96488950e-05 -7.80058099e-05 + -2.13180521e-03 2.36142590e-04 -4.05397975e-05 2.24871509e-03 1.71581618e-04 2.66907522e-04 + 8.85356707e-04 2.23424203e-04 3.60025084e-03 -3.08073383e-04 7.06198588e-05 2.58520504e-04 + -1.21192491e-04 -4.70073968e-05 -6.61583941e-04 -2.15248177e-04 2.69077723e-04 -7.83000417e-05 + 2.21933361e-05 -3.97812123e-04 1.43780052e-04 -5.96140210e-05 2.48044905e-04 2.36142590e-04 + -1.52959026e-04 -1.18960326e-04 -1.30874299e-05 1.95942523e-04 -9.74404173e-05 -7.49881215e-05 + 5.55136968e-07 -1.83179620e-04 -1.94293588e-03 -2.95999181e-04 -1.19266527e-04 -1.27023518e-04 + -1.08973508e-04 -1.92602393e-03 -2.85153605e-04 -7.65612532e-05 -7.72562067e-05 1.63097910e-04 + -1.56385352e-03 5.95513212e-04 2.45238335e-04 8.24811995e-04 -4.05397975e-05 -1.18960326e-04 + -6.06345144e-04 5.27778316e-05 7.81662817e-04 -3.57182818e-04 -1.54549695e-04 7.53587456e-05 + 2.40887746e-05 1.84789083e-03 1.42369135e-03 -5.18116647e-05 -1.27553282e-04 1.08735999e-04 + -1.62896982e-03 -1.38080932e-03 1.78789433e-05 1.46308569e-04 9.65159816e-05 3.12831896e-05 + -8.69591639e-05 2.42989359e-04 -1.35230180e-05 2.24871509e-03 -1.30874299e-05 5.27778316e-05 + -3.79019608e-04 -1.27242112e-04 -1.94073358e-04 -4.33793272e-04 -1.54117619e-04 -1.79992794e-03 + 2.75341536e-03 6.63247569e-04 -7.46808290e-05 -2.84217179e-05 -2.26761593e-04 2.38699965e-03 + 3.33506511e-04 3.00822298e-04 -1.48728519e-04 1.95088303e-04 1.75141762e-03 -1.07247375e-03 + 9.54997836e-05 -1.66664666e-03 1.71581618e-04 1.95942523e-04 7.81662817e-04 -1.27242112e-04 + -5.88627411e-04 8.54510996e-04 -2.89432341e-04 -5.24942201e-04 -2.73772524e-04 -4.52073594e-04 + 2.20553361e-04 2.18067883e-04 -2.61293083e-04 -3.08497239e-04 -1.34201368e-03 -6.12806701e-04 + 2.01309516e-04 -3.56662803e-04 2.11139203e-04 -5.52685598e-04 5.14077802e-04 1.09138808e-03 + -3.24481106e-05 2.66907522e-04 -9.74404173e-05 -3.57182818e-04 -1.94073358e-04 8.54510996e-04 + 1.25682163e-03 -3.89499039e-04 4.78108647e-04 -9.56639530e-04 4.07871413e-04 8.23578297e-04 + -8.73270929e-04 4.81255708e-04 2.01147715e-04 -1.60643312e-03 -1.05075443e-03 8.80835967e-04 + -2.30021977e-04 -3.63635539e-04 -4.37464862e-04 1.89341367e-04 1.72195202e-04 5.25573118e-04 + 8.85356707e-04 -7.49881215e-05 -1.54549695e-04 -4.33793272e-04 -2.89432341e-04 -3.89499039e-04 + -2.37112515e-03 -5.15360701e-04 -1.20550576e-03 1.43137381e-03 3.58777368e-04 -5.57969648e-04 + -9.33661463e-04 -1.30198784e-03 1.01382835e-03 -3.24643167e-05 -9.65086570e-05 -1.02634361e-03 + 1.41676091e-03 1.06022860e-03 1.97742222e-05 -7.57142452e-04 -1.88659888e-03 2.23424203e-04 + 5.55136968e-07 7.53587456e-05 -1.54117619e-04 -5.24942201e-04 4.78108647e-04 -5.15360701e-04 + 2.76519524e-03 -4.59410571e-04 4.10885575e-03 3.75990027e-03 3.20285418e-04 4.67067072e-04 + -2.82691276e-04 -3.99355953e-03 -3.77203641e-03 -4.10402146e-04 -3.50951237e-04 -3.12986333e-04 + 1.26280909e-05 -5.93739376e-05 2.89724169e-04 1.21499755e-04 3.60025084e-03 -1.83179620e-04 + 2.40887746e-05 -1.79992794e-03 -2.73772524e-04 -9.56639530e-04 -1.20550576e-03 -4.59410571e-04 + -7.09398430e-03 + # CSR column indices + 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 + 16 17 18 19 20 21 22 0 1 2 3 4 5 6 7 8 + 9 10 11 12 13 14 15 16 17 18 19 20 21 22 0 1 + 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 + 18 19 20 21 22 0 1 2 3 4 5 6 7 8 9 10 + 11 12 13 14 15 16 17 18 19 20 21 22 0 1 2 3 + 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 + 20 21 22 0 1 2 3 4 5 6 7 8 9 10 11 12 + 13 14 15 16 17 18 19 20 21 22 0 1 2 3 4 5 + 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 + 22 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 + 15 16 17 18 19 20 21 22 0 1 2 3 4 5 6 7 + 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 0 + 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 + 17 18 19 20 21 22 0 1 2 3 4 5 6 7 8 9 + 10 11 12 13 14 15 16 17 18 19 20 21 22 0 1 2 + 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 + 19 20 21 22 0 1 2 3 4 5 6 7 8 9 10 11 + 12 13 14 15 16 17 18 19 20 21 22 0 1 2 3 4 + 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 + 21 22 0 1 2 3 4 5 6 7 8 9 10 11 12 13 + 14 15 16 17 18 19 20 21 22 0 1 2 3 4 5 6 + 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 + 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 + 16 17 18 19 20 21 22 0 1 2 3 4 5 6 7 8 + 9 10 11 12 13 14 15 16 17 18 19 20 21 22 0 1 + 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 + 18 19 20 21 22 0 1 2 3 4 5 6 7 8 9 10 + 11 12 13 14 15 16 17 18 19 20 21 22 0 1 2 3 + 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 + 20 21 22 0 1 2 3 4 5 6 7 8 9 10 11 12 + 13 14 15 16 17 18 19 20 21 22 0 1 2 3 4 5 + 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 + 22 + # CSR row pointers + 0 23 46 69 92 115 138 161 184 207 230 253 276 299 322 345 + 368 391 414 437 460 483 506 529 + diff --git a/tests/09_DeePKS/24_NO_KP_deepks_vdelta_r_2/deepks_hrtot.csr.ref b/tests/09_DeePKS/24_NO_KP_deepks_vdelta_r_2/deepks_hrtot.csr.ref new file mode 100644 index 0000000000..0e043b92b4 --- /dev/null +++ b/tests/09_DeePKS/24_NO_KP_deepks_vdelta_r_2/deepks_hrtot.csr.ref @@ -0,0 +1,141 @@ +Matrix Dimension of H(R): 23 +Matrix number of H(R): 1 + #----------------------------------------------------------------------# + # CSR Format # + # The outer loop corresponds to the number of Bravais lattice vectors. # + # The first line contains the index of the Bravais lattice vector # + # (Rx, Ry, Rz), followed by the number of non-zero elements. # + # The subsequent lines consist of three blocks of data, which are # + # values, column indices, row pointers. # + #----------------------------------------------------------------------# + + 0 0 0 529 + # CSR values + -8.42107904e-01 2.13550175e-01 -3.36018443e-02 -3.14634851e-01 4.57125255e-01 -5.72184336e-01 + 2.48575301e-01 -6.34432974e-02 -1.13625395e-01 -3.33175047e-01 -1.07975761e+00 -1.36939378e-02 + 6.92996341e-02 4.65693698e-01 -4.87107239e-01 -6.51964644e-03 -7.19175506e-03 -4.52287980e-02 + 1.10813024e-01 -3.76437594e-02 9.06402772e-04 1.79320238e-02 9.15211632e-02 2.13550175e-01 + 9.37557925e-01 -3.14883586e-03 -2.33953762e-02 2.74497309e-02 2.52264246e-01 1.62953161e-01 + 3.47485631e-02 1.25139207e-01 2.55561956e-02 2.06575092e-01 7.81936184e-02 6.09841771e-03 + 1.77838932e-01 -3.83774181e-01 1.66830601e-02 4.06237997e-02 6.06539730e-02 -1.23947605e-01 + 3.89192709e-02 1.23675296e-02 -4.91257564e-02 -6.21130683e-02 -3.36018443e-02 -3.14883586e-03 + 2.49598467e+00 -2.93735098e-02 3.30086601e-02 7.91829015e-03 2.78231936e-02 -3.57932496e-02 + 9.74834800e-03 1.32482382e-02 -4.25617904e-02 -1.19113287e-02 -2.15042800e-01 1.64767651e-02 + -2.49406909e-02 -1.41883945e-01 1.47258242e-02 -1.75059826e-02 -8.47667718e-02 -2.83002918e-01 + 3.92807294e-01 -1.91830301e-02 -7.69616324e-02 -3.14634851e-01 -2.33953762e-02 -2.93735098e-02 + 2.26416924e+00 3.02825162e-01 -1.05733259e-01 1.21240901e-01 -9.89002286e-03 -4.12343578e-02 + -9.20422560e-02 -3.82618437e-01 -8.78853635e-02 2.28135770e-02 -4.37649468e-02 -2.09195274e-01 + 1.50466367e-02 -3.49131417e-02 -1.25610573e-01 -1.96101650e-01 1.95711769e-02 -7.66969379e-02 + -4.70085222e-01 -2.24201687e-01 4.57125255e-01 2.74497309e-02 3.30086601e-02 3.02825162e-01 + 2.06576968e+00 3.40251911e-01 -3.14993633e-02 6.21783525e-02 9.87617873e-02 3.18364998e-01 + 5.39706282e-01 1.03444338e-01 -4.07170235e-02 -2.70661856e-01 6.21072104e-02 -1.83219256e-02 + -1.28863490e-01 -1.00471591e-03 2.24558957e-01 -5.34584506e-02 6.67403369e-02 -1.42412780e-01 + 5.21985815e-01 -5.72184336e-01 2.52264246e-01 7.91829015e-03 -1.05733259e-01 3.40251911e-01 + -8.53117379e-01 2.07158983e-01 -1.31678616e-01 -3.35702404e-01 -4.42556733e-01 -1.09366461e+00 + -1.90391346e-02 1.70392560e-01 4.82309376e-01 4.53921680e-01 4.71108828e-03 -2.30352410e-03 + 5.11994676e-02 1.02538910e-01 -5.65270345e-02 -4.20139930e-02 8.66970933e-03 -8.16033294e-02 + 2.48575301e-01 1.62953161e-01 2.78231936e-02 1.21240901e-01 -3.14993633e-02 2.07158983e-01 + 9.32647363e-01 -1.07576511e-02 -2.91947949e-02 -3.14958024e-02 1.96293189e-01 7.49540951e-02 + 8.84269909e-02 1.94186183e-01 3.75282153e-01 4.71677901e-03 4.31349825e-02 -6.12568379e-02 + -1.22832429e-01 5.44860904e-02 4.49127331e-02 -4.46464286e-02 6.44049862e-02 -6.34432974e-02 + 3.47485631e-02 -3.57932496e-02 -9.89002286e-03 6.21783525e-02 -1.31678616e-01 -1.07576511e-02 + 2.45482838e+00 -9.70421303e-02 -1.17589370e-01 -1.55741908e-01 -3.08046058e-02 -1.93818873e-01 + 7.49083880e-02 7.67291521e-02 -1.31762368e-01 4.12789539e-02 4.21152823e-02 -2.58528719e-01 + -2.40023990e-01 -3.01464445e-01 -4.73539656e-02 2.40800483e-01 -1.13625395e-01 1.25139207e-01 + 9.74834800e-03 -4.12343578e-02 9.87617873e-02 -3.35702404e-01 -2.91947949e-02 -9.70421303e-02 + 2.23408330e+00 -3.00411324e-01 -4.00917139e-01 -8.44826003e-02 6.85175949e-02 -3.49076902e-02 + 2.02359643e-01 4.09475364e-02 -3.39239660e-02 1.16576059e-01 -1.39561982e-01 7.61057430e-02 + 2.40210913e-01 -4.30999603e-01 2.44261809e-01 -3.33175047e-01 2.55561956e-02 1.32482382e-02 + -9.20422560e-02 3.18364998e-01 -4.42556733e-01 -3.14958024e-02 -1.17589370e-01 -3.00411324e-01 + 2.09720426e+00 -5.14102784e-01 -8.90011899e-02 9.25869978e-02 2.64278795e-01 2.02339288e-02 + 4.30138516e-02 1.19988640e-01 -2.79010532e-02 -1.34585031e-01 2.17217063e-01 1.62894422e-01 + 2.26474234e-01 4.41068047e-01 -1.07975761e+00 2.06575092e-01 -4.25617904e-02 -3.82618437e-01 + 5.39706282e-01 -1.09366461e+00 1.96293189e-01 -1.55741908e-01 -4.00917139e-01 -5.14102784e-01 + -1.70549181e+00 1.06890459e-01 6.48395657e-02 2.55626981e-01 -7.05142835e-03 -6.52750829e-03 + -2.62232291e-02 1.97400693e-03 1.66491876e-01 -6.12915685e-02 -3.83218137e-02 6.82878309e-02 + 1.50531270e-03 -1.36939378e-02 7.81936184e-02 -1.19113287e-02 -8.78853635e-02 1.03444338e-01 + -1.90391346e-02 7.49540951e-02 -3.08046058e-02 -8.44826003e-02 -8.90011899e-02 1.06890459e-01 + 7.63241563e-01 -2.08258108e-02 -8.28144449e-02 4.08521934e-03 4.97774980e-02 1.97467121e-01 + -8.61689966e-03 -8.85521131e-02 3.26336608e-02 1.96753831e-02 -3.51712925e-02 -3.03301439e-03 + 6.92996341e-02 6.09841771e-03 -2.15042800e-01 2.28135770e-02 -4.07170235e-02 1.70392560e-01 + 8.84269909e-02 -1.93818873e-01 6.85175949e-02 9.25869978e-02 6.48395657e-02 -2.08258108e-02 + -4.74768823e-01 -4.18800128e-02 -2.57988231e-02 1.33369284e-01 1.11451453e-02 6.70184175e-03 + 1.52852492e-02 1.49187733e-01 7.90528504e-03 -9.52436820e-03 2.42311440e-02 4.65693698e-01 + 1.77838932e-01 1.64767651e-02 -4.37649468e-02 -2.70661856e-01 4.82309376e-01 1.94186183e-01 + 7.49083880e-02 -3.49076902e-02 2.64278795e-01 2.55626981e-01 -8.28144449e-02 -4.18800128e-02 + -6.25253768e-01 1.17220819e-03 1.11479519e-02 1.74097194e-01 -1.61909460e-03 -1.81049264e-01 + 7.25135236e-02 2.44669930e-02 9.44835226e-02 -1.58895514e-03 -4.87107239e-01 -3.83774181e-01 + -2.49406909e-02 -2.09195274e-01 6.21072104e-02 4.53921680e-01 3.75282153e-01 7.67291521e-02 + 2.02359643e-01 2.02339288e-02 -7.05142835e-03 4.08521934e-03 -2.57988231e-02 1.17220819e-03 + -7.15138160e-01 6.69499498e-03 -1.64611138e-03 1.99230425e-01 1.55738906e-02 2.42083274e-02 + 9.09657799e-02 1.74574611e-02 3.66026282e-01 -6.51964644e-03 1.66830601e-02 -1.41883945e-01 + 1.50466367e-02 -1.83219256e-02 4.71108828e-03 4.71677901e-03 -1.31762368e-01 4.09475364e-02 + 4.30138516e-02 -6.52750829e-03 4.97774980e-02 1.33369284e-01 1.11479519e-02 6.69499498e-03 + 8.75538128e-01 -2.72119238e-02 -1.63950542e-02 6.35931764e-03 -2.27284124e-02 -4.41425269e-03 + 4.04264505e-03 -1.07176564e-02 -7.19175506e-03 4.06237997e-02 1.47258242e-02 -3.49131417e-02 + -1.28863490e-01 -2.30352410e-03 4.31349825e-02 4.12789539e-02 -3.39239660e-02 1.19988640e-01 + -2.62232291e-02 1.97467121e-01 1.11451453e-02 1.74097194e-01 -1.64611138e-03 -2.72119238e-02 + 7.76366120e-01 3.07599587e-03 5.68900637e-02 -2.18237129e-02 -1.06890265e-02 1.34071159e-03 + 1.61948811e-03 -4.52287980e-02 6.06539730e-02 -1.75059826e-02 -1.25610573e-01 -1.00471591e-03 + 5.11994676e-02 -6.12568379e-02 4.21152823e-02 1.16576059e-01 -2.79010532e-02 1.97400693e-03 + -8.61689966e-03 6.70184175e-03 -1.61909460e-03 1.99230425e-01 -1.63950542e-02 3.07599587e-03 + 7.16371266e-01 -7.86277031e-03 -1.07285502e-02 -2.99845032e-02 -7.61778157e-03 -1.22878854e-01 + 1.10813024e-01 -1.23947605e-01 -8.47667718e-02 -1.96101650e-01 2.24558957e-01 1.02538910e-01 + -1.22832429e-01 -2.58528719e-01 -1.39561982e-01 -1.34585031e-01 1.66491876e-01 -8.85521131e-02 + 1.52852492e-02 -1.81049264e-01 1.55738906e-02 6.35931764e-03 5.68900637e-02 -7.86277031e-03 + 3.19891456e+00 1.69988370e-02 7.27737784e-03 -6.44291741e-02 -1.42881909e-02 -3.76437594e-02 + 3.89192709e-02 -2.83002918e-01 1.95711769e-02 -5.34584506e-02 -5.65270345e-02 5.44860904e-02 + -2.40023990e-01 7.61057430e-02 2.17217063e-01 -6.12915685e-02 3.26336608e-02 1.49187733e-01 + 7.25135236e-02 2.42083274e-02 -2.27284124e-02 -2.18237129e-02 -1.07285502e-02 1.69988370e-02 + 3.25920245e+00 -1.39442716e-02 -1.21347611e-02 -4.50278047e-02 9.06402772e-04 1.23675296e-02 + 3.92807294e-01 -7.66969379e-02 6.67403369e-02 -4.20139930e-02 4.49127331e-02 -3.01464445e-01 + 2.40210913e-01 1.62894422e-01 -3.83218137e-02 1.96753831e-02 7.90528504e-03 2.44669930e-02 + 9.09657799e-02 -4.41425269e-03 -1.06890265e-02 -2.99845032e-02 7.27737784e-03 -1.39442716e-02 + 3.19660717e+00 1.79839764e-02 -9.14134117e-02 1.79320238e-02 -4.91257564e-02 -1.91830301e-02 + -4.70085222e-01 -1.42412780e-01 8.66970933e-03 -4.46464286e-02 -4.73539656e-02 -4.30999603e-01 + 2.26474234e-01 6.82878309e-02 -3.51712925e-02 -9.52436820e-03 9.44835226e-02 1.74574611e-02 + 4.04264505e-03 1.34071159e-03 -7.61778157e-03 -6.44291741e-02 -1.21347611e-02 1.79839764e-02 + 3.12536899e+00 -1.50940944e-02 9.15211632e-02 -6.21130683e-02 -7.69616324e-02 -2.24201687e-01 + 5.21985815e-01 -8.16033294e-02 6.44049862e-02 2.40800483e-01 2.44261809e-01 4.41068047e-01 + 1.50531270e-03 -3.03301439e-03 2.42311440e-02 -1.58895514e-03 3.66026282e-01 -1.07176564e-02 + 1.61948811e-03 -1.22878854e-01 -1.42881909e-02 -4.50278047e-02 -9.14134117e-02 -1.50940944e-02 + 2.85906938e+00 + # CSR column indices + 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 + 16 17 18 19 20 21 22 0 1 2 3 4 5 6 7 8 + 9 10 11 12 13 14 15 16 17 18 19 20 21 22 0 1 + 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 + 18 19 20 21 22 0 1 2 3 4 5 6 7 8 9 10 + 11 12 13 14 15 16 17 18 19 20 21 22 0 1 2 3 + 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 + 20 21 22 0 1 2 3 4 5 6 7 8 9 10 11 12 + 13 14 15 16 17 18 19 20 21 22 0 1 2 3 4 5 + 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 + 22 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 + 15 16 17 18 19 20 21 22 0 1 2 3 4 5 6 7 + 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 0 + 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 + 17 18 19 20 21 22 0 1 2 3 4 5 6 7 8 9 + 10 11 12 13 14 15 16 17 18 19 20 21 22 0 1 2 + 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 + 19 20 21 22 0 1 2 3 4 5 6 7 8 9 10 11 + 12 13 14 15 16 17 18 19 20 21 22 0 1 2 3 4 + 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 + 21 22 0 1 2 3 4 5 6 7 8 9 10 11 12 13 + 14 15 16 17 18 19 20 21 22 0 1 2 3 4 5 6 + 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 + 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 + 16 17 18 19 20 21 22 0 1 2 3 4 5 6 7 8 + 9 10 11 12 13 14 15 16 17 18 19 20 21 22 0 1 + 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 + 18 19 20 21 22 0 1 2 3 4 5 6 7 8 9 10 + 11 12 13 14 15 16 17 18 19 20 21 22 0 1 2 3 + 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 + 20 21 22 0 1 2 3 4 5 6 7 8 9 10 11 12 + 13 14 15 16 17 18 19 20 21 22 0 1 2 3 4 5 + 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 + 22 + # CSR row pointers + 0 23 46 69 92 115 138 161 184 207 230 253 276 299 322 345 + 368 391 414 437 460 483 506 529 + diff --git a/tests/09_DeePKS/24_NO_KP_deepks_vdelta_r_2/result.ref b/tests/09_DeePKS/24_NO_KP_deepks_vdelta_r_2/result.ref new file mode 100644 index 0000000000..b7e5a997dd --- /dev/null +++ b/tests/09_DeePKS/24_NO_KP_deepks_vdelta_r_2/result.ref @@ -0,0 +1,11 @@ +etotref -466.043171161868 +etotperatomref -155.3477237206 +deepks_desc 2.319019 +deepks_dm_eig 10.787022245391766 +deepks_e_label 17.12676450564565 +deepks_edelta 0.09815855485768665 +deepks_hr_label_pass 0 +deepks_vdelta_r_pass 0 +deepks_phialpha_r 40.10770566607966 +deepks_gevdm 54.0 +totaltimeref 1.81 diff --git a/tests/09_DeePKS/25_NO_GO_deepks_out_freq_elec/INPUT b/tests/09_DeePKS/25_NO_GO_deepks_out_freq_elec/INPUT new file mode 100644 index 0000000000..453b17fec4 --- /dev/null +++ b/tests/09_DeePKS/25_NO_GO_deepks_out_freq_elec/INPUT @@ -0,0 +1,39 @@ +INPUT_PARAMETERS +#Parameters (1.General) +suffix autotest +calculation scf + +nbands 6 +symmetry 0 +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB + +#Parameters (2.Iteration) +ecutwfc 50 +scf_thr 5e-3 #relatively large to avoid many steps +scf_nmax 50 + +#Parameters (3.Basis) +basis_type lcao +gamma_only 1 + +#Parameters (4.Smearing) +smearing_method gaussian +smearing_sigma 0.02 + +#Parameters (5.Mixing) +mixing_type broyden +mixing_beta 0.8 +mixing_gg0 0 + +#Parameters (6.File) +deepks_out_labels 1 + +deepks_v_delta 1 +cal_force 1 +cal_stress 1 + +deepks_out_freq_elec 1 + +dft_functional pbe +deepks_out_base lda diff --git a/tests/09_DeePKS/103_NO_GO_deepks_vdelta_2/KPT b/tests/09_DeePKS/25_NO_GO_deepks_out_freq_elec/KPT similarity index 100% rename from tests/09_DeePKS/103_NO_GO_deepks_vdelta_2/KPT rename to tests/09_DeePKS/25_NO_GO_deepks_out_freq_elec/KPT diff --git a/tests/09_DeePKS/103_NO_GO_deepks_out_freq_elec/README b/tests/09_DeePKS/25_NO_GO_deepks_out_freq_elec/README similarity index 100% rename from tests/09_DeePKS/103_NO_GO_deepks_out_freq_elec/README rename to tests/09_DeePKS/25_NO_GO_deepks_out_freq_elec/README diff --git a/tests/09_DeePKS/103_NO_GO_deepks_out_freq_elec/STRU b/tests/09_DeePKS/25_NO_GO_deepks_out_freq_elec/STRU similarity index 100% rename from tests/09_DeePKS/103_NO_GO_deepks_out_freq_elec/STRU rename to tests/09_DeePKS/25_NO_GO_deepks_out_freq_elec/STRU diff --git a/tests/09_DeePKS/25_NO_GO_deepks_out_freq_elec/result.ref b/tests/09_DeePKS/25_NO_GO_deepks_out_freq_elec/result.ref new file mode 100644 index 0000000000..4707e8c814 --- /dev/null +++ b/tests/09_DeePKS/25_NO_GO_deepks_out_freq_elec/result.ref @@ -0,0 +1,27 @@ +etotref -466.0484517111885907 +etotperatomref -155.3494839037 +totalforceref 3.432943 +totalstressref 7.674750 +deepks_e_label 17.126958562184335 +deepks_edelta 0.0 +deepks_h_label 49.12707696738566 +deepks_vdelta 0.0 +deepks_vdp 176.08561725742982 +deepks_f_label 0.06676003678176294 +deepks_fdelta 0.0 +deepks_s_label 0.06851710382835817 +deepks_sdelta 0.0 +deepks_fpre 19.69171134871589 +deepks_spre 19.372132511297153 +deepks_e_label_elec 85.389836665688162 +deepks_edelta_elec .49279432475411510 +deepks_h_label_elec 246.793639290695066 +deepks_vdelta_elec 3.4234699193308799 +deepks_vdp_elec 881.06539843219689 +deepks_f_label_elec .06676003678176294 +deepks_fdelta_elec .017979102769780632 +deepks_s_label_elec .06851710382835817 +deepks_sdelta_elec .013725178909672755 +deepks_overlap 61.931587180384426 +deepks_overlap_elec 309.657935901922130 +totaltimeref 3.76 diff --git a/tests/09_DeePKS/26_NO_KP_deepks_out_freq_elec/INPUT b/tests/09_DeePKS/26_NO_KP_deepks_out_freq_elec/INPUT new file mode 100644 index 0000000000..ab5b0e47b3 --- /dev/null +++ b/tests/09_DeePKS/26_NO_KP_deepks_out_freq_elec/INPUT @@ -0,0 +1,39 @@ +INPUT_PARAMETERS +#Parameters (1.General) +suffix autotest +calculation scf + +nbands 6 +symmetry 0 +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB + +#Parameters (2.Iteration) +ecutwfc 50 +scf_thr 5e-3 #relatively large to avoid many steps +scf_nmax 50 + +#Parameters (3.Basis) +basis_type lcao +gamma_only 0 + +#Parameters (4.Smearing) +smearing_method gaussian +smearing_sigma 0.02 + +#Parameters (5.Mixing) +mixing_type broyden +mixing_beta 0.8 +mixing_gg0 0 + +#Parameters (6.File) +deepks_out_labels 1 + +deepks_v_delta 1 +cal_force 1 +cal_stress 1 + +deepks_out_freq_elec 1 + +dft_functional pbe +deepks_out_base lda diff --git a/tests/09_DeePKS/103_NO_GO_deepks_vdelta_r_1/KPT b/tests/09_DeePKS/26_NO_KP_deepks_out_freq_elec/KPT similarity index 100% rename from tests/09_DeePKS/103_NO_GO_deepks_vdelta_r_1/KPT rename to tests/09_DeePKS/26_NO_KP_deepks_out_freq_elec/KPT diff --git a/tests/09_DeePKS/103_NO_KP_deepks_out_freq_elec/README b/tests/09_DeePKS/26_NO_KP_deepks_out_freq_elec/README similarity index 100% rename from tests/09_DeePKS/103_NO_KP_deepks_out_freq_elec/README rename to tests/09_DeePKS/26_NO_KP_deepks_out_freq_elec/README diff --git a/tests/09_DeePKS/103_NO_KP_deepks_out_freq_elec/STRU b/tests/09_DeePKS/26_NO_KP_deepks_out_freq_elec/STRU similarity index 100% rename from tests/09_DeePKS/103_NO_KP_deepks_out_freq_elec/STRU rename to tests/09_DeePKS/26_NO_KP_deepks_out_freq_elec/STRU diff --git a/tests/09_DeePKS/26_NO_KP_deepks_out_freq_elec/result.ref b/tests/09_DeePKS/26_NO_KP_deepks_out_freq_elec/result.ref new file mode 100644 index 0000000000..996128b56d --- /dev/null +++ b/tests/09_DeePKS/26_NO_KP_deepks_out_freq_elec/result.ref @@ -0,0 +1,27 @@ +etotref -466.0484517111889318 +etotperatomref -155.3494839037 +totalforceref 3.432943 +totalstressref 7.674750 +deepks_e_label 17.12695856218435 +deepks_edelta 0.0 +deepks_h_label 49.127076967385676 +deepks_vdelta 0.0 +deepks_vdp 176.0856172574296 +deepks_f_label 0.0667600367817765 +deepks_fdelta 0.0 +deepks_s_label 0.06851710382837811 +deepks_sdelta 0.0 +deepks_fpre 19.691711348715746 +deepks_spre 19.372132511297018 +deepks_e_label_elec 85.389836665688179 +deepks_edelta_elec .49279432475412220 +deepks_h_label_elec 246.793639290695098 +deepks_vdelta_elec 3.4234699193308906 +deepks_vdp_elec 881.06539843219701 +deepks_f_label_elec .0667600367817765 +deepks_fdelta_elec .017979102769778977 +deepks_s_label_elec .06851710382837811 +deepks_sdelta_elec .013725178909649378 +deepks_overlap 61.931587180384426 +deepks_overlap_elec 309.657935901922130 +totaltimeref 3.52 diff --git a/tests/09_DeePKS/27_NO_GO_deepks_out_2/INPUT b/tests/09_DeePKS/27_NO_GO_deepks_out_2/INPUT new file mode 100644 index 0000000000..49bb547731 --- /dev/null +++ b/tests/09_DeePKS/27_NO_GO_deepks_out_2/INPUT @@ -0,0 +1,36 @@ +INPUT_PARAMETERS +#Parameters (1.General) +suffix autotest +calculation scf + +nbands 6 +symmetry 0 +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB + +#Parameters (2.Iteration) +ecutwfc 50 +scf_thr 1e-6 +scf_nmax 50 + +#Parameters (3.Basis) +basis_type lcao +gamma_only 1 + +#Parameters (4.Smearing) +smearing_method gaussian +smearing_sigma 0.02 + +#Parameters (5.Mixing) +mixing_type broyden +mixing_beta 0.8 + +#Parameters (6.File) +deepks_out_labels 2 + +deepks_bandgap 1 +deepks_v_delta 1 +cal_force 1 +cal_stress 1 + +dft_functional lda diff --git a/tests/09_DeePKS/103_NO_GO_deepks_vdelta_r_2/KPT b/tests/09_DeePKS/27_NO_GO_deepks_out_2/KPT similarity index 100% rename from tests/09_DeePKS/103_NO_GO_deepks_vdelta_r_2/KPT rename to tests/09_DeePKS/27_NO_GO_deepks_out_2/KPT diff --git a/tests/09_DeePKS/104_NO_GO_deepks_out_2/README b/tests/09_DeePKS/27_NO_GO_deepks_out_2/README similarity index 100% rename from tests/09_DeePKS/104_NO_GO_deepks_out_2/README rename to tests/09_DeePKS/27_NO_GO_deepks_out_2/README diff --git a/tests/09_DeePKS/104_NO_GO_deepks_out_2/STRU b/tests/09_DeePKS/27_NO_GO_deepks_out_2/STRU similarity index 100% rename from tests/09_DeePKS/104_NO_GO_deepks_out_2/STRU rename to tests/09_DeePKS/27_NO_GO_deepks_out_2/STRU diff --git a/tests/09_DeePKS/104_NO_GO_deepks_out_2/result.ref b/tests/09_DeePKS/27_NO_GO_deepks_out_2/result.ref similarity index 100% rename from tests/09_DeePKS/104_NO_GO_deepks_out_2/result.ref rename to tests/09_DeePKS/27_NO_GO_deepks_out_2/result.ref diff --git a/tests/09_DeePKS/28_NO_KP_deepks_out_2/INPUT b/tests/09_DeePKS/28_NO_KP_deepks_out_2/INPUT new file mode 100644 index 0000000000..c9ab42909d --- /dev/null +++ b/tests/09_DeePKS/28_NO_KP_deepks_out_2/INPUT @@ -0,0 +1,36 @@ +INPUT_PARAMETERS +#Parameters (1.General) +suffix autotest +calculation scf + +nbands 6 +symmetry 0 +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB + +#Parameters (2.Iteration) +ecutwfc 50 +scf_thr 1e-6 +scf_nmax 50 + +#Parameters (3.Basis) +basis_type lcao +gamma_only 0 + +#Parameters (4.Smearing) +smearing_method gaussian +smearing_sigma 0.02 + +#Parameters (5.Mixing) +mixing_type broyden +mixing_beta 0.8 + +#Parameters (6.File) +deepks_out_labels 2 + +deepks_bandgap 1 +deepks_v_delta 1 +cal_force 1 +cal_stress 1 + +dft_functional lda diff --git a/tests/09_DeePKS/104_NO_KP_deepks_out_2/KPT b/tests/09_DeePKS/28_NO_KP_deepks_out_2/KPT similarity index 100% rename from tests/09_DeePKS/104_NO_KP_deepks_out_2/KPT rename to tests/09_DeePKS/28_NO_KP_deepks_out_2/KPT diff --git a/tests/09_DeePKS/104_NO_KP_deepks_out_2/README b/tests/09_DeePKS/28_NO_KP_deepks_out_2/README similarity index 100% rename from tests/09_DeePKS/104_NO_KP_deepks_out_2/README rename to tests/09_DeePKS/28_NO_KP_deepks_out_2/README diff --git a/tests/09_DeePKS/104_NO_KP_deepks_out_2/STRU b/tests/09_DeePKS/28_NO_KP_deepks_out_2/STRU similarity index 100% rename from tests/09_DeePKS/104_NO_KP_deepks_out_2/STRU rename to tests/09_DeePKS/28_NO_KP_deepks_out_2/STRU diff --git a/tests/09_DeePKS/104_NO_KP_deepks_out_2/result.ref b/tests/09_DeePKS/28_NO_KP_deepks_out_2/result.ref similarity index 100% rename from tests/09_DeePKS/104_NO_KP_deepks_out_2/result.ref rename to tests/09_DeePKS/28_NO_KP_deepks_out_2/result.ref diff --git a/tests/09_DeePKS/97_PW_ORB_deepks_s/INPUT b/tests/09_DeePKS/97_PW_ORB_deepks_s/INPUT new file mode 100644 index 0000000000..3cf927acfa --- /dev/null +++ b/tests/09_DeePKS/97_PW_ORB_deepks_s/INPUT @@ -0,0 +1,30 @@ +INPUT_PARAMETERS +#Parameters (1.General) +suffix autotest +calculation gen_bessel +pseudo_dir ../../PP_ORB + +nbands 6 +symmetry 0 + +#Parameters (2.Iteration) +ecutwfc 20 +scf_thr 1e-8 +scf_nmax 50 + +#Parameters (3.Basis) +basis_type pw +gamma_only 1 + +#Parameters (4.Smearing) +smearing_method gaussian +smearing_sigma 0.1 + +#Parameters (5.Mixing) +mixing_type broyden +mixing_beta 0.4 + +#Parameters (6.File) +deepks_out_labels 1 +bessel_descriptor_lmax 0 +bessel_descriptor_rcut 2.0 diff --git a/tests/09_DeePKS/103_NO_KP_deepks_out_freq_elec/KPT b/tests/09_DeePKS/97_PW_ORB_deepks_s/KPT similarity index 100% rename from tests/09_DeePKS/103_NO_KP_deepks_out_freq_elec/KPT rename to tests/09_DeePKS/97_PW_ORB_deepks_s/KPT diff --git a/tests/09_DeePKS/101_PW_ORB_deepks_d/README b/tests/09_DeePKS/97_PW_ORB_deepks_s/README similarity index 100% rename from tests/09_DeePKS/101_PW_ORB_deepks_d/README rename to tests/09_DeePKS/97_PW_ORB_deepks_s/README diff --git a/tests/09_DeePKS/101_PW_ORB_deepks_s/STRU b/tests/09_DeePKS/97_PW_ORB_deepks_s/STRU similarity index 100% rename from tests/09_DeePKS/101_PW_ORB_deepks_s/STRU rename to tests/09_DeePKS/97_PW_ORB_deepks_s/STRU diff --git a/tests/09_DeePKS/101_PW_ORB_deepks_s/descriptor.dat.ref b/tests/09_DeePKS/97_PW_ORB_deepks_s/descriptor.dat.ref similarity index 100% rename from tests/09_DeePKS/101_PW_ORB_deepks_s/descriptor.dat.ref rename to tests/09_DeePKS/97_PW_ORB_deepks_s/descriptor.dat.ref diff --git a/tests/09_DeePKS/101_PW_ORB_deepks_s/jle.orb.ref b/tests/09_DeePKS/97_PW_ORB_deepks_s/jle.orb.ref similarity index 100% rename from tests/09_DeePKS/101_PW_ORB_deepks_s/jle.orb.ref rename to tests/09_DeePKS/97_PW_ORB_deepks_s/jle.orb.ref diff --git a/tests/09_DeePKS/101_PW_ORB_deepks_s/result.ref b/tests/09_DeePKS/97_PW_ORB_deepks_s/result.ref similarity index 100% rename from tests/09_DeePKS/101_PW_ORB_deepks_s/result.ref rename to tests/09_DeePKS/97_PW_ORB_deepks_s/result.ref diff --git a/tests/09_DeePKS/98_PW_ORB_deepks_p/INPUT b/tests/09_DeePKS/98_PW_ORB_deepks_p/INPUT new file mode 100644 index 0000000000..39b2060b46 --- /dev/null +++ b/tests/09_DeePKS/98_PW_ORB_deepks_p/INPUT @@ -0,0 +1,30 @@ +INPUT_PARAMETERS +#Parameters (1.General) +suffix autotest +calculation gen_bessel +pseudo_dir ../../PP_ORB + +nbands 6 +symmetry 0 + +#Parameters (2.Iteration) +ecutwfc 20 +scf_thr 1e-8 +scf_nmax 50 + +#Parameters (3.Basis) +basis_type pw +gamma_only 1 + +#Parameters (4.Smearing) +smearing_method gaussian +smearing_sigma 0.1 + +#Parameters (5.Mixing) +mixing_type broyden +mixing_beta 0.4 + +#Parameters (6.File) +deepks_out_labels 1 +bessel_descriptor_lmax 1 +bessel_descriptor_rcut 2.0 diff --git a/tests/09_DeePKS/104_NO_GO_deepks_out_2/KPT b/tests/09_DeePKS/98_PW_ORB_deepks_p/KPT similarity index 100% rename from tests/09_DeePKS/104_NO_GO_deepks_out_2/KPT rename to tests/09_DeePKS/98_PW_ORB_deepks_p/KPT diff --git a/tests/09_DeePKS/101_PW_ORB_deepks_p/README b/tests/09_DeePKS/98_PW_ORB_deepks_p/README similarity index 100% rename from tests/09_DeePKS/101_PW_ORB_deepks_p/README rename to tests/09_DeePKS/98_PW_ORB_deepks_p/README diff --git a/tests/09_DeePKS/101_PW_ORB_deepks_d/STRU b/tests/09_DeePKS/98_PW_ORB_deepks_p/STRU similarity index 100% rename from tests/09_DeePKS/101_PW_ORB_deepks_d/STRU rename to tests/09_DeePKS/98_PW_ORB_deepks_p/STRU diff --git a/tests/09_DeePKS/101_PW_ORB_deepks_p/descriptor.dat.ref b/tests/09_DeePKS/98_PW_ORB_deepks_p/descriptor.dat.ref similarity index 100% rename from tests/09_DeePKS/101_PW_ORB_deepks_p/descriptor.dat.ref rename to tests/09_DeePKS/98_PW_ORB_deepks_p/descriptor.dat.ref diff --git a/tests/09_DeePKS/101_PW_ORB_deepks_p/jle.orb.ref b/tests/09_DeePKS/98_PW_ORB_deepks_p/jle.orb.ref similarity index 100% rename from tests/09_DeePKS/101_PW_ORB_deepks_p/jle.orb.ref rename to tests/09_DeePKS/98_PW_ORB_deepks_p/jle.orb.ref diff --git a/tests/09_DeePKS/101_PW_ORB_deepks_p/result.ref b/tests/09_DeePKS/98_PW_ORB_deepks_p/result.ref similarity index 100% rename from tests/09_DeePKS/101_PW_ORB_deepks_p/result.ref rename to tests/09_DeePKS/98_PW_ORB_deepks_p/result.ref diff --git a/tests/09_DeePKS/99_PW_ORB_deepks_d/INPUT b/tests/09_DeePKS/99_PW_ORB_deepks_d/INPUT new file mode 100644 index 0000000000..7126cc9cba --- /dev/null +++ b/tests/09_DeePKS/99_PW_ORB_deepks_d/INPUT @@ -0,0 +1,29 @@ +INPUT_PARAMETERS +#Parameters (1.General) +suffix autotest +calculation gen_bessel +pseudo_dir ../../PP_ORB +nbands 6 +symmetry 0 + +#Parameters (2.Iteration) +ecutwfc 20 +scf_thr 1e-8 +scf_nmax 50 + +#Parameters (3.Basis) +basis_type pw +gamma_only 1 + +#Parameters (4.Smearing) +smearing_method gaussian +smearing_sigma 0.1 + +#Parameters (5.Mixing) +mixing_type broyden +mixing_beta 0.4 + +#Parameters (6.File) +deepks_out_labels 1 +bessel_descriptor_lmax 2 +bessel_descriptor_rcut 2 diff --git a/tests/16_SDFT_GPU/186_PW_SKG_MALL_GPU/KPT b/tests/09_DeePKS/99_PW_ORB_deepks_d/KPT similarity index 100% rename from tests/16_SDFT_GPU/186_PW_SKG_MALL_GPU/KPT rename to tests/09_DeePKS/99_PW_ORB_deepks_d/KPT diff --git a/tests/09_DeePKS/101_PW_ORB_deepks_s/README b/tests/09_DeePKS/99_PW_ORB_deepks_d/README similarity index 100% rename from tests/09_DeePKS/101_PW_ORB_deepks_s/README rename to tests/09_DeePKS/99_PW_ORB_deepks_d/README diff --git a/tests/09_DeePKS/101_PW_ORB_deepks_p/STRU b/tests/09_DeePKS/99_PW_ORB_deepks_d/STRU similarity index 100% rename from tests/09_DeePKS/101_PW_ORB_deepks_p/STRU rename to tests/09_DeePKS/99_PW_ORB_deepks_d/STRU diff --git a/tests/09_DeePKS/101_PW_ORB_deepks_d/descriptor.dat.ref b/tests/09_DeePKS/99_PW_ORB_deepks_d/descriptor.dat.ref similarity index 100% rename from tests/09_DeePKS/101_PW_ORB_deepks_d/descriptor.dat.ref rename to tests/09_DeePKS/99_PW_ORB_deepks_d/descriptor.dat.ref diff --git a/tests/09_DeePKS/101_PW_ORB_deepks_d/jle.orb.ref b/tests/09_DeePKS/99_PW_ORB_deepks_d/jle.orb.ref similarity index 100% rename from tests/09_DeePKS/101_PW_ORB_deepks_d/jle.orb.ref rename to tests/09_DeePKS/99_PW_ORB_deepks_d/jle.orb.ref diff --git a/tests/09_DeePKS/101_PW_ORB_deepks_d/result.ref b/tests/09_DeePKS/99_PW_ORB_deepks_d/result.ref similarity index 100% rename from tests/09_DeePKS/101_PW_ORB_deepks_d/result.ref rename to tests/09_DeePKS/99_PW_ORB_deepks_d/result.ref diff --git a/tests/09_DeePKS/CASES1 b/tests/09_DeePKS/CASES1 deleted file mode 100644 index e22d970cbd..0000000000 --- a/tests/09_DeePKS/CASES1 +++ /dev/null @@ -1,2 +0,0 @@ -100_NO_GO_deepks_UT -100_NO_KP_deepks_UT \ No newline at end of file diff --git a/tests/09_DeePKS/CASES_CPU.txt b/tests/09_DeePKS/CASES_CPU.txt index e90fd05bef..6d0393047d 100644 --- a/tests/09_DeePKS/CASES_CPU.txt +++ b/tests/09_DeePKS/CASES_CPU.txt @@ -1,31 +1,28 @@ -#101_PW_ORB_deepks_s -#101_PW_ORB_deepks_p -#101_PW_ORB_deepks_d -102_NO_GO_deepks_scf -102_NO_KP_deepks_scf -102_NO_GO_deepks_md -102_NO_KP_deepks_md -102_NO_GO_deepks_nscf -102_NO_KP_deepks_nscf -102_NO_GO_deepks_relax -102_NO_KP_deepks_relax -103_NO_GO_deepks_basic -103_NO_KP_deepks_basic -103_NO_GO_deepks_bandgap -103_NO_GO_deepks_bandgap_2 -103_NO_GO_deepks_bandgap_3 -103_NO_KP_deepks_bandgap -103_NO_KP_deepks_bandgap_2 -103_NO_KP_deepks_bandgap_3 -103_NO_GO_deepks_vdelta_1 -103_NO_KP_deepks_vdelta_1 -103_NO_GO_deepks_vdelta_2 -103_NO_KP_deepks_vdelta_2 -103_NO_GO_deepks_vdelta_r_1 -103_NO_KP_deepks_vdelta_r_1 -103_NO_GO_deepks_vdelta_r_2 -103_NO_KP_deepks_vdelta_r_2 -103_NO_GO_deepks_out_freq_elec -103_NO_KP_deepks_out_freq_elec -104_NO_GO_deepks_out_2 -104_NO_KP_deepks_out_2 \ No newline at end of file +01_NO_GO_deepks_scf +02_NO_KP_deepks_scf +03_NO_GO_deepks_md +04_NO_KP_deepks_md +05_NO_GO_deepks_nscf +06_NO_KP_deepks_nscf +07_NO_GO_deepks_relax +08_NO_KP_deepks_relax +09_NO_GO_deepks_basic +10_NO_KP_deepks_basic +11_NO_GO_deepks_bandgap +12_NO_GO_deepks_bandgap_2 +13_NO_GO_deepks_bandgap_3 +14_NO_KP_deepks_bandgap +15_NO_KP_deepks_bandgap_2 +16_NO_KP_deepks_bandgap_3 +17_NO_GO_deepks_vdelta_1 +18_NO_GO_deepks_vdelta_2 +19_NO_KP_deepks_vdelta_1 +20_NO_KP_deepks_vdelta_2 +21_NO_GO_deepks_vdelta_r_1 +22_NO_GO_deepks_vdelta_r_2 +23_NO_KP_deepks_vdelta_r_1 +24_NO_KP_deepks_vdelta_r_2 +25_NO_GO_deepks_out_freq_elec +26_NO_KP_deepks_out_freq_elec +27_NO_GO_deepks_out_2 +28_NO_KP_deepks_out_2 diff --git a/tests/09_DeePKS/NO_GO_deepks_UT/E_delta_bands_ref.dat b/tests/09_DeePKS/NO_GO_deepks_UT/E_delta_bands_ref.dat new file mode 100644 index 0000000000..7e497eb30a --- /dev/null +++ b/tests/09_DeePKS/NO_GO_deepks_UT/E_delta_bands_ref.dat @@ -0,0 +1 @@ +-0.08058091803 diff --git a/tests/09_DeePKS/NO_GO_deepks_UT/E_delta_ref.dat b/tests/09_DeePKS/NO_GO_deepks_UT/E_delta_ref.dat new file mode 100644 index 0000000000..494c177b48 --- /dev/null +++ b/tests/09_DeePKS/NO_GO_deepks_UT/E_delta_ref.dat @@ -0,0 +1 @@ +-0.3135463017 diff --git a/tests/09_DeePKS/NO_GO_deepks_UT/F_delta_ref.dat b/tests/09_DeePKS/NO_GO_deepks_UT/F_delta_ref.dat new file mode 100644 index 0000000000..96be6564a5 --- /dev/null +++ b/tests/09_DeePKS/NO_GO_deepks_UT/F_delta_ref.dat @@ -0,0 +1,5 @@ +-0.001966690223 0.0003863484866 -0.0002775679931 +0.0001490387822 0.0001336996716 -0.010866736 +-0.009536649342 -0.0001507865891 0.002944084409 +0.005665599528 0.00917496669 0.003914146719 +0.005688701256 -0.009544228259 0.004286072869 diff --git a/tests/09_DeePKS/NO_GO_deepks_UT/INPUT b/tests/09_DeePKS/NO_GO_deepks_UT/INPUT new file mode 100644 index 0000000000..48df2b805f --- /dev/null +++ b/tests/09_DeePKS/NO_GO_deepks_UT/INPUT @@ -0,0 +1 @@ +gamma_only_local 1 diff --git a/tests/16_SDFT_GPU/187_PW_MD_SDFT_ALL_GPU/KPT b/tests/09_DeePKS/NO_GO_deepks_UT/KPT similarity index 100% rename from tests/16_SDFT_GPU/187_PW_MD_SDFT_ALL_GPU/KPT rename to tests/09_DeePKS/NO_GO_deepks_UT/KPT diff --git a/tests/09_DeePKS/100_NO_GO_deepks_UT/STRU b/tests/09_DeePKS/NO_GO_deepks_UT/STRU similarity index 100% rename from tests/09_DeePKS/100_NO_GO_deepks_UT/STRU rename to tests/09_DeePKS/NO_GO_deepks_UT/STRU diff --git a/tests/09_DeePKS/NO_GO_deepks_UT/S_I_mu_alpha_ref.dat b/tests/09_DeePKS/NO_GO_deepks_UT/S_I_mu_alpha_ref.dat new file mode 100644 index 0000000000..e69de29bb2 diff --git a/tests/09_DeePKS/NO_GO_deepks_UT/descriptor_ref.dat b/tests/09_DeePKS/NO_GO_deepks_UT/descriptor_ref.dat new file mode 100644 index 0000000000..b3de52d081 --- /dev/null +++ b/tests/09_DeePKS/NO_GO_deepks_UT/descriptor_ref.dat @@ -0,0 +1,24 @@ +C atom_index 1 n_descriptor 18 +1.056940269 0.1266618616 0.8734002808 0.902430529 0.970664598 0.007596404359 0.008745980544 0.01021958025 +-7.027367648e-18 2.237266295e-07 0.01497960358 0.01708725446 0.02300553405 5.14127977e-19 5.904406668e-08 0.004380552522 +0.004727727944 0.005122035518 + +H atom_index 1 n_descriptor 18 +1.400632299 0.04117702106 0.1027305888 0.1041966275 0.1294135661 0.01642938298 0.02242890128 0.02280997959 +-5.263808249e-16 2.234016552e-07 0.015913677 0.07687398759 0.07817548593 -4.778097868e-16 4.735625439e-10 0.003893476503 +0.01697098872 0.01735324613 + +H atom_index 2 n_descriptor 18 +1.181670195 0.04550076051 0.04232612155 0.04377413388 0.1245819176 0.01174657886 0.01215933419 0.02044853859 +7.197982145e-16 9.606563449e-09 0.03052951885 0.0335141051 0.03505048493 3.93594073e-16 2.191861746e-09 0.004314213193 +0.0101011116 0.0105768787 + +H atom_index 3 n_descriptor 18 +1.236604132 0.04560187401 0.05263608364 0.05494823354 0.1308693603 0.01393374205 0.01453588332 0.01879213875 +-5.446263208e-16 1.187865741e-07 0.02895598367 0.04150173332 0.04376939009 -1.586846631e-16 2.888713946e-08 0.003184943987 +0.0118208337 0.01253806203 + +H atom_index 4 n_descriptor 18 +1.26662277 0.04521520737 0.05931915163 0.06187700248 0.1329947817 0.01527065544 0.01573939534 0.01794575804 +-1.230035378e-15 1.136899733e-07 0.02742236223 0.04651814046 0.04908940065 -4.340124768e-16 2.520267511e-08 0.002668663015 +0.01279224077 0.01358768798 diff --git a/tests/09_DeePKS/100_NO_GO_deepks_UT/dm b/tests/09_DeePKS/NO_GO_deepks_UT/dm similarity index 100% rename from tests/09_DeePKS/100_NO_GO_deepks_UT/dm rename to tests/09_DeePKS/NO_GO_deepks_UT/dm diff --git a/tests/09_DeePKS/NO_GO_deepks_UT/dphialpha_x_ref.dat b/tests/09_DeePKS/NO_GO_deepks_UT/dphialpha_x_ref.dat new file mode 100644 index 0000000000..de02a5dfd4 --- /dev/null +++ b/tests/09_DeePKS/NO_GO_deepks_UT/dphialpha_x_ref.dat @@ -0,0 +1,230 @@ +iat : 0 +ad : 0 2.003222249 +iw : 6 +-0.1350474564 0.04625626275 0.05280537895 0.05467537292 -0.1276010244 -0.02084843237 +-0.03616664702 0.05037898374 0.006694914847 -0.01002143973 0.06008070704 0.1087221695 +0.02421620678 0.0006207542169 0.008786092567 -0.02577915935 -0.05270072757 -0.02123106461 + +ad : 1 1.950638213 +iw : 7 +-0.1397691115 0.04496369775 0.05496396384 0.06169280578 0.1314977421 -0.02048668373 +-0.04045757546 -0.04901307083 0.005223674626 -0.01222018763 -0.06249528398 0.1143462361 +-0.02923601154 0.002174158519 0.01048710558 0.02521862919 -0.05355871275 0.02508972439 + +ad : 2 1.709269535 +iw : 4 +-0.006829627906 0.001349733251 -0.007590491732 0.1840226174 -2.14203587e-05 0.001783792571 +-0.08281527996 5.033860527e-06 -0.008043773926 0.1835376919 -2.91738053e-05 0.003594314003 +0.0005179431497 0.002368988524 -0.08320681159 6.982128978e-06 -0.001629049628 -0.000234809524 + +ad : 3 2.100474535 +iw : 5 +0.2607979876 -0.09804316647 -0.09329187015 -0.1758517674 8.08727981e-05 0.040040435 +0.06496091736 -3.471022727e-05 -0.02369913269 0.08759528412 -3.459156927e-05 0.08095162744 +-7.593454516e-05 0.006126363268 -0.03818590047 1.618625744e-05 -0.02928302662 3.310256954e-05 + +ad : 4 0 +iw : 0 +0 0 0 0.3093059965 0 0 +-0.2658882637 0 0 0 0 0 +0 0 0 0 0 0 + +iw : 1 +0 0 0 0 0 0 +0 0 0 0.606887676 0 0 +0 0 0.1361643547 0 0 0 + +iw : 2 +-0.7216730379 -0.5231309515 0 0 0 0 +0 0 -0.3503867631 0 0 0.606887676 +0 -0.07861452683 0 0 0.1361643547 0 + +iw : 3 +0 0 0 0 0 0 +0 0 0 0 0 0 +0.606887676 0 0 0 0 0.1361643547 + +iat : 1 +ad : 0 3.03052076 +iw : 6 +-0.03361307734 0.01773152453 0.02920995683 0.01939510667 -0.02004916746 -0.01648705289 +-0.01181806134 0.01131640441 -0.01655478877 -0.01233244137 0.0198650031 0.01336705666 +0.008464756848 0.009957178313 0.007903441778 -0.01179993724 -0.008154075019 -0.005424774456 + +ad : 1 2.994710688 +iw : 7 +-0.03426816203 0.01797221099 0.03006974218 0.02087997662 0.02029674451 -0.01688631613 +-0.01268506067 -0.01139807725 -0.01739294908 -0.01357817298 -0.02032427298 0.01373360596 +-0.00916511709 0.01042438206 0.008662563596 0.01202845911 -0.008354406241 0.005847134938 + +ad : 2 1.709269535 +iw : 0 +0.006093857275 -0.0005597980386 -0.004265753606 0.1681515226 -1.203795163e-05 0.0008310689207 +-0.06237591619 2.345275512e-06 0.001841323432 -0.102375067 3.344934242e-06 -0.002003968428 +-0.0002889023181 -0.0009024212975 0.03784314671 -2.320247674e-06 0.0007408459976 0.0001067933153 + +iw : 1 +0.01039663673 0.003727798564 -0.007950018959 0.3314987894 -4.076042507e-05 -0.00467138667 +-0.07766430904 -8.896378867e-06 0.008907178214 -0.2511887274 4.354983128e-05 -0.007987202529 +-0.00115094873 0.003394364571 0.0285872455 1.659331541e-05 0.001925265582 0.0002776997246 + +iw : 2 +-0.3359639025 0.06576344403 0.3314987894 0.01947585235 0.0009354891918 -0.07766430904 +-0.00455783962 -0.0002191685883 -0.3257829611 -0.02396581347 -0.00115094873 0.156427125 +-6.763149728e-05 0.09709097749 0.00577508498 0.0002776997246 -0.06976195976 1.629728299e-05 + +iw : 3 +2.933929656e-05 1.051984314e-05 -4.076042507e-05 0.0009354891918 0.00649367967 -8.896378867e-06 +-0.0002191685883 -0.001518901998 6.419772647e-05 -0.00115094873 -0.007991408411 1.239540977e-08 +0.1566567885 1.721253833e-07 0.0002776997246 0.001924553817 2.097492169e-09 -0.06981730071 + +ad : 3 3.113220902 +iw : 5 +0.06899082042 -0.03684426631 -0.05723703775 -0.0223028608 -0.0001032801252 0.03265658527 +0.01202886452 5.892646346e-05 0.02940260284 0.02688751635 9.753508468e-05 0.003126203256 +4.851659279e-05 -0.01783955235 -0.01563146843 -5.840493132e-05 -0.001468439791 -2.820586249e-05 + +ad : 4 0 +iw : 4 +0 0 0 0.5483938892 0 0 +0.08221087936 0 0 0 0 0 +0 0 0 0 0 0 + +iat : 2 +ad : 0 3.347258395 +iw : 6 +-0.0723338245 0.03971025247 0.0006898735761 -0.04791190265 -0.03805751864 -0.0004034905059 +0.02765875064 0.02225892973 0.01795264243 0.0005671478247 0.0004122198951 -0.008361866562 +-0.03128723821 -0.01080242851 -0.0003438165665 -0.0002522643473 0.004798530078 0.01896696125 + +ad : 1 3.303653192 +iw : 7 +-0.07601168647 0.04154537934 0.0004418801603 -0.05075935582 0.03960835712 -0.0002573678864 +0.02915130034 -0.02306942034 0.01894104367 0.0003664315686 -0.0002615867077 -0.009362189828 +0.03284544936 -0.01133897573 -0.0002211409945 0.0001594393374 0.005349961028 -0.01982218771 + +ad : 2 2.100474535 +iw : 0 +-0.2663347691 0.05771323962 -0.07464695722 -0.1099817578 6.470990763e-05 0.01701249595 +-0.001059809364 -1.474778186e-05 -0.01487787033 -0.02497091863 1.555418462e-05 0.007826508445 +2.164677434e-05 0.01732069528 -0.005031870219 -2.212724997e-06 -0.0274478084 4.362024511e-06 + +iw : 1 +0.1536572536 -0.01317595074 -0.1525024244 0.1390095389 -5.966802893e-05 0.07571363693 +-0.01442310271 1.236338045e-05 -0.1262493673 -0.1014550923 4.424445264e-05 0.08096904902 +-7.024858364e-05 0.04300086337 0.05540286391 -2.472239382e-05 -0.007674760246 1.515614345e-05 + +iw : 2 +0.2457898752 0.03878203729 0.1390095389 -0.01621676215 -0.0001205045022 -0.01442310271 +0.1357043875 1.250309027e-05 0.08548426147 0.07527564688 -7.024858364e-05 -0.06702697589 +-6.525490574e-05 -0.07248752816 0.02293654514 1.515614345e-05 0.108068528 -1.988321792e-05 + +iw : 3 +-0.000133202304 1.142195994e-05 -5.966802893e-05 -0.0001205045022 -0.221333205 1.236338045e-05 +1.250309027e-05 0.08997556485 -2.067892859e-05 -7.024858364e-05 -0.08666245116 -0.0001453163133 +-0.1824912005 2.020917766e-05 1.515614345e-05 0.03828606564 3.984249839e-05 0.07288641755 + +ad : 3 3.113220902 +iw : 4 +-0.06899082042 0.03684426631 -0.05723703775 -0.0223028608 -0.0001032801252 0.03265658527 +0.01202886452 5.892646346e-05 -0.02940260284 -0.02688751635 -9.753508468e-05 -0.003126203256 +-4.851659279e-05 0.01783955235 0.01563146843 5.840493132e-05 0.001468439791 2.820586249e-05 + +ad : 4 0 +iw : 5 +0 0 0 0.5483938892 0 0 +0.08221087936 0 0 0 0 0 +0 0 0 0 0 0 + +iat : 3 +ad : 0 3.245352337 +iw : 7 +0.000721544508 -0.0003918528057 2.87386954e-06 0.02246307657 -0.0007802851134 -1.664130893e-06 +-0.01349333682 0.000451828639 -0.0001806214982 7.850402081e-05 -3.532205435e-06 -0.0006461714531 +-0.0213146484 0.0001073910517 -4.931004344e-05 2.141314447e-06 0.0003953742329 0.01338818353 + +ad : 1 2.003222249 +iw : 0 +0.1331676332 -0.0236772392 0.03878778757 0.07862238791 -0.09372835738 -0.007550352991 +-0.04557486779 0.0182449742 0.01234096871 0.02243776458 -0.02126402978 -0.06395870013 +-0.05421950951 -0.009265299224 -0.01257554326 0.002185228131 0.02042412425 0.03038804444 + +iw : 1 +-0.08330306541 1.29688427e-05 0.07715604042 -0.03241820167 0.09862242065 -0.03889072106 +0.0256777908 -0.01256018894 0.0671070985 0.02342557455 -0.06641287304 0.09724748126 +0.01522566622 -0.01912321935 -0.01393096994 0.03878635223 -0.02947055413 -0.02221435861 + +iw : 2 +-0.1383034797 0.08028099243 -0.03241820167 0.2796626 0.07833663588 0.0256777908 +-0.1228102666 -0.06204883814 0.03257930804 0.1098202121 0.01522566622 -0.02593797641 +-0.265373942 -0.01763613309 -0.05341778868 -0.02221435861 -0.01393997283 0.1290808757 + +iw : 3 +0.2012968507 -3.13384289e-05 0.09862242065 0.07833663588 -0.1203460042 -0.01256018894 +-0.06204883814 -0.0137375867 0.04987583284 0.01522566622 -0.0846747504 -0.1125735924 +-0.007065465833 -0.03962942665 -0.02221435861 0.005523319583 0.02165434308 0.03055568146 + +ad : 2 3.03052076 +iw : 4 +0.03361307734 -0.01773152453 0.02920995683 0.01939510667 -0.02004916746 -0.01648705289 +-0.01181806134 0.01131640441 0.01655478877 0.01233244137 -0.0198650031 -0.01336705666 +-0.008464756848 -0.009957178313 -0.007903441778 0.01179993724 0.008154075019 0.005424774456 + +ad : 3 3.347258395 +iw : 5 +0.0723338245 -0.03971025247 0.0006898735761 -0.04791190265 -0.03805751864 -0.0004034905059 +0.02765875064 0.02225892973 -0.01795264243 -0.0005671478247 -0.0004122198951 0.008361866562 +0.03128723821 0.01080242851 0.0003438165665 0.0002522643473 -0.004798530078 -0.01896696125 + +ad : 4 0 +iw : 6 +0 0 0 0.5483938892 0 0 +0.08221087936 0 0 0 0 0 +0 0 0 0 0 0 + +iat : 4 +ad : 0 3.245352337 +iw : 6 +-0.000721544508 0.0003918528057 2.87386954e-06 0.02246307657 -0.0007802851134 -1.664130893e-06 +-0.01349333682 0.000451828639 0.0001806214982 -7.850402081e-05 3.532205435e-06 0.0006461714531 +0.0213146484 -0.0001073910517 4.931004344e-05 -2.141314447e-06 -0.0003953742329 -0.01338818353 + +ad : 1 1.950638213 +iw : 0 +0.1352370737 -0.02139849526 0.03849455423 0.08612595488 0.09209574075 -0.006981143132 +-0.04767313063 -0.01670193514 0.01439519809 0.0244759048 0.01907423473 -0.06259436548 +0.05855702523 -0.009312570481 -0.0126507914 -0.001868050578 0.01981822045 -0.03026620332 + +iw : 1 +-0.08462388184 -0.004460470853 0.08230336422 -0.03722658832 -0.09975742083 -0.0405957859 +0.02851969087 0.007721565221 0.06888091766 0.02696882757 0.07128215191 0.100652887 +-0.01996929179 -0.01715145419 -0.01610141766 -0.04093670546 -0.02708233024 0.02596162739 + +iw : 2 +-0.1519808972 0.085880924 -0.03722658832 0.2976955927 -0.08906221401 0.02851969087 +-0.1257182891 0.06823152284 0.03422283785 0.1184341766 -0.01996929179 -0.01984729619 +0.2833461368 -0.0174605483 -0.0554206592 0.02596162739 -0.02101741686 -0.1325903563 + +iw : 3 +-0.2024571849 -0.01067138912 -0.09975742083 -0.08906221401 -0.114662823 0.007721565221 +0.06823152284 -0.02534993002 -0.0575056558 -0.01996929179 -0.08287159733 0.1124612673 +-0.01245957016 0.04377911424 0.02596162739 -0.001255998721 -0.01582600069 0.03515855598 + +ad : 2 2.994710688 +iw : 4 +0.03426816203 -0.01797221099 0.03006974218 0.02087997662 0.02029674451 -0.01688631613 +-0.01268506067 -0.01139807725 0.01739294908 0.01357817298 0.02032427298 -0.01373360596 +0.00916511709 -0.01042438206 -0.008662563596 -0.01202845911 0.008354406241 -0.005847134938 + +ad : 3 3.303653192 +iw : 5 +0.07601168647 -0.04154537934 0.0004418801603 -0.05075935582 0.03960835712 -0.0002573678864 +0.02915130034 -0.02306942034 -0.01894104367 -0.0003664315686 0.0002615867077 0.009362189828 +-0.03284544936 0.01133897573 0.0002211409945 -0.0001594393374 -0.005349961028 0.01982218771 + +ad : 4 0 +iw : 7 +0 0 0 0.5483938892 0 0 +0.08221087936 0 0 0 0 0 +0 0 0 0 0 0 + diff --git a/tests/09_DeePKS/NO_GO_deepks_UT/dphialpha_y_ref.dat b/tests/09_DeePKS/NO_GO_deepks_UT/dphialpha_y_ref.dat new file mode 100644 index 0000000000..8a10e9a47e --- /dev/null +++ b/tests/09_DeePKS/NO_GO_deepks_UT/dphialpha_y_ref.dat @@ -0,0 +1,230 @@ +iat : 0 +ad : 0 2.003222249 +iw : 6 +-0.2419517899 0.08287298308 0.09460641687 -0.1276010244 -0.1027137465 -0.03735216985 +0.05037898374 0.0259731667 0.01199464747 0.06008070704 0.0640849369 -0.01571365141 +-0.08643497841 0.001112146781 -0.02577915935 -0.02301113796 0.01758282642 0.03103642305 + +ad : 1 1.950638213 +iw : 7 +0.2504917182 -0.08058314019 -0.09850543939 0.1314977421 -0.1006021361 0.03671587056 +-0.04901307083 0.02003451632 -0.009361776849 -0.06249528398 0.06491169556 0.02039623183 +-0.08665248798 -0.003896488266 0.02521862919 -0.02063780877 -0.02152262121 0.02755000405 + +ad : 2 1.709269535 +iw : 4 +-0.0009847079011 0.0001946069412 -0.001094410601 -2.14203587e-05 0.1841680939 0.0002571903862 +5.033860527e-06 -0.08284946746 -0.001159765634 -2.91738053e-05 0.183735826 -0.0005187937213 +0.003596170665 0.0003415649797 6.982128978e-06 -0.08325423077 0.0002350130902 -0.00162949398 + +ad : 3 2.100474535 +iw : 5 +-7.369527365e-05 2.770465389e-05 2.636205119e-05 8.08727981e-05 0.1103465228 -1.131446926e-05 +-3.471022727e-05 -0.05787405226 6.696808074e-06 -3.459156927e-05 -0.03481977029 -8.324409213e-05 +-0.1068191634 -1.731163732e-06 1.618625744e-05 0.01909515464 4.138108232e-05 0.05857960652 + +ad : 4 0 +iw : 0 +0 0 0 0 0.3093059965 0 +0 -0.2658882637 0 0 0 0 +0 0 0 0 0 0 + +iw : 1 +0 0 0 0 0 0 +0 0 0 0 0.606887676 0 +0 0 0 0.1361643547 0 0 + +iw : 2 +0 0 0 0 0 0 +0 0 0 0 0 0 +0.606887676 0 0 0 0 0.1361643547 + +iw : 3 +-0.7216730379 -0.5231309515 0 0 0 0 +0 0 -0.3503867631 0 0 -0.606887676 +0 -0.07861452683 0 0 -0.1361643547 0 + +iat : 1 +ad : 0 3.03052076 +iw : 6 +-0.06231479607 0.0328722159 0.05415191488 -0.02004916746 -0.006959079608 -0.03056510799 +0.01131640441 0.003057101456 -0.03069068256 0.0198650031 0.01377966495 -0.006858131403 +-0.005101773604 0.01845946831 -0.01179993724 -0.007607314208 0.0044704288 0.002816526743 + +ad : 1 2.994710688 +iw : 7 +0.06399737535 -0.03356393412 -0.05615663238 0.02029674451 -0.006156995985 0.03153597531 +-0.01139807725 0.0024981379 0.03248213575 -0.02032427298 0.01349546986 0.007373732968 +-0.004877680378 -0.01946801498 0.01202845911 -0.007360356692 -0.004786944954 0.002660260649 + +ad : 2 1.709269535 +iw : 0 +0.0008786231825 -8.071267706e-05 -0.0006150439435 -1.203795163e-05 0.1682332784 0.0001198249954 +2.345275512e-06 -0.06239184415 0.000265485288 3.344934242e-06 -0.1023977841 0.0002889998407 +-0.002004181305 -0.000130112708 -2.320247674e-06 0.03785890469 -0.0001068609629 0.0007409936615 + +iw : 1 +0.001499005579 0.0005374806285 -0.001146247876 -4.076042507e-05 0.3317756141 -0.0006735288403 +-8.896378867e-06 -0.07760388922 0.0012842528 4.354983128e-05 -0.2514844964 0.001152875958 +-0.00799140936 0.0004894055222 1.659331541e-05 0.02847455188 -0.0002773742838 0.001924555196 + +iw : 2 +2.933929656e-05 1.051984314e-05 -4.076042507e-05 0.0009354890877 0.006493680392 -8.896378867e-06 +-0.0002191684968 -0.001518902633 6.419772647e-05 -0.001150948593 -0.00799140936 1.240076719e-08 +0.1566567885 1.721253833e-07 0.0002776995258 0.001924555196 2.089708294e-09 -0.06981730069 + +iw : 3 +-0.3361631605 0.06569199844 0.3317756141 0.006493680392 0.002808844238 -0.07760388922 +-0.001518902633 -0.0006569869199 -0.3262189604 -0.00799140936 -0.003456700508 -0.156886529 +-6.765629346e-05 0.0970898085 0.001924555196 0.0008324480933 0.06987262866 1.629309579e-05 + +ad : 3 3.113220902 +iw : 5 +0.0001446850818 -7.726847793e-05 -0.000120035469 -0.0001032801252 0.02694443645 6.848622297e-05 +5.892646346e-05 -0.01606917523 6.166208737e-05 9.753508468e-05 -0.01962036017 7.736396234e-05 +-0.01688162066 -3.741247133e-05 -5.840493132e-05 0.01221788796 -4.717260467e-05 0.01051243443 + +ad : 4 0 +iw : 4 +0 0 0 0 0.5483938892 0 +0 0.08221087936 0 0 0 0 +0 0 0 0 0 0 + +iat : 2 +ad : 0 3.347258395 +iw : 6 +-0.04080390077 0.02240076773 0.0003891614074 -0.03805751864 -0.001915091852 -0.0002276111719 +0.02225892973 0.0007563193738 0.01012718248 0.0004122198951 6.893351115e-05 -0.02276748278 +-0.006741260402 -0.00609370822 -0.0002522643473 -3.892660341e-05 0.01411266219 0.003806775047 + +ad : 1 3.303653192 +iw : 7 +0.04210273754 -0.02301191151 -0.0002447566325 0.03960835712 -0.001189986814 0.0001425556132 +-0.02306942034 0.0002802061433 -0.0104914103 -0.0002615867077 3.905903946e-05 0.0241586542 +-0.006320827215 0.00628063843 0.0001594393374 -2.160463582e-05 -0.01492230134 0.003496224483 + +ad : 2 2.100474535 +iw : 0 +7.525983568e-05 -1.630838116e-05 2.109344474e-05 6.470990763e-05 0.1190181699 -4.80732446e-06 +-1.474778186e-05 -0.05325028691 4.204130313e-06 1.555418462e-05 0.03007331314 4.992829334e-05 +0.09225810862 -4.894414217e-06 -2.212724997e-06 -0.01286241554 -1.454423241e-05 -0.03945897561 + +iw : 1 +-4.341986477e-05 3.723208543e-06 4.309353764e-05 -5.966802893e-05 -0.07214783734 -2.139486291e-05 +1.236338045e-05 0.02932928905 3.567505163e-05 4.424445264e-05 0.05512025809 -7.185740214e-05 +-0.08666244842 -1.215101551e-05 -2.472239382e-05 -0.03208646509 2.38061717e-05 0.03828608507 + +iw : 2 +-0.000133202304 1.142195994e-05 -5.966802893e-05 -0.0001205045044 -0.2213332127 1.236338045e-05 +1.25031034e-05 0.08997561133 -2.067892859e-05 -7.024858287e-05 -0.08666244842 -0.0001453163086 +-0.1824911921 2.020917766e-05 1.515614894e-05 0.03828608507 3.984253209e-05 0.07288647718 + +iw : 3 +-0.225595715 0.07920286461 -0.07214783734 -0.2213332127 0.0001876304435 0.02932928905 +0.08997561133 -7.627486022e-05 0.01230422882 -0.08666244842 7.346622141e-05 -0.2162999007 +0.0002253777162 -0.0009698828101 0.03828608507 -3.245619445e-05 0.103293056 -9.95682484e-05 + +ad : 3 3.113220902 +iw : 4 +-0.0001446850818 7.726847793e-05 -0.000120035469 -0.0001032801252 0.02694443645 6.848622297e-05 +5.892646346e-05 -0.01606917523 -6.166208737e-05 -9.753508468e-05 0.01962036017 -7.736396234e-05 +0.01688162066 3.741247133e-05 5.840493132e-05 -0.01221788796 4.717260467e-05 -0.01051243443 + +ad : 4 0 +iw : 5 +0 0 0 0 0.5483938892 0 +0 0.08221087936 0 0 0 0 +0 0 0 0 0 0 + +iat : 3 +ad : 0 3.245352337 +iw : 7 +0.09229871044 -0.05012512499 0.000367620361 -0.0007802851134 -0.07734352942 -0.0002128727109 +0.000451828639 0.04430025961 -0.02310478588 -3.532205435e-06 -0.0003733019025 -0.04001282998 +0.0007923443537 0.01373727536 2.141314447e-06 0.0002245864126 0.02379012272 -0.0004766913181 + +ad : 1 2.003222249 +iw : 0 +0.2385838881 -0.04242027624 0.06949242053 -0.09372835738 -0.03698658701 -0.01352725531 +0.0182449742 -0.02307065644 0.02211014963 -0.02126402978 -0.003790292271 0.05121024747 +0.005112181527 -0.01659976272 0.002185228131 -0.009880179854 -0.03007879337 0.01332595729 + +iw : 1 +-0.1492462452 2.323505224e-05 0.1382332003 0.09862242065 0.08922734162 -0.06967683675 +-0.01256018894 0.0101854616 0.1202294588 -0.06641287304 -0.05849119416 -0.007299726613 +-0.08467474102 -0.0342612684 0.03878635223 0.03390994553 0.0206897575 0.005523255577 + +iw : 2 +0.2012968507 -3.13384289e-05 0.09862242065 0.07833655921 -0.1203459615 -0.01256018894 +-0.06204862074 -0.01373770805 0.04987583284 0.01522564941 -0.08467474102 -0.112573547 +-0.007065437859 -0.03962942665 -0.02221424394 0.005523255577 0.02165403374 0.03055549068 + +iw : 3 +0.1099855463 0.08024233813 0.08922734162 -0.1203459615 0.2070959586 0.0101854616 +-0.01373770805 -0.1825912889 0.09409851171 -0.08467474102 0.02982510264 0.2144091595 +-0.04022680254 -0.06651693629 0.005523255577 -0.06359375894 -0.1185651681 0.08577249892 + +ad : 2 3.03052076 +iw : 4 +0.06231479607 -0.0328722159 0.05415191488 -0.02004916746 -0.006959079608 -0.03056510799 +0.01131640441 0.003057101456 0.03069068256 -0.0198650031 -0.01377966495 0.006858131403 +0.005101773604 -0.01845946831 0.01179993724 0.007607314208 -0.0044704288 -0.002816526743 + +ad : 3 3.347258395 +iw : 5 +0.04080390077 -0.02240076773 0.0003891614074 -0.03805751864 -0.001915091852 -0.0002276111719 +0.02225892973 0.0007563193738 -0.01012718248 -0.0004122198951 -6.893351115e-05 0.02276748278 +0.006741260402 0.00609370822 0.0002522643473 3.892660341e-05 -0.01411266219 -0.003806775047 + +ad : 4 0 +iw : 6 +0 0 0 0 0.5483938892 0 +0 0.08221087936 0 0 0 0 +0 0 0 0 0 0 + +iat : 4 +ad : 0 3.245352337 +iw : 6 +-0.09229871044 0.05012512499 0.000367620361 -0.0007802851134 -0.07734352942 -0.0002128727109 +0.000451828639 0.04430025961 0.02310478588 3.532205435e-06 0.0003733019025 0.04001282998 +-0.0007923443537 -0.01373727536 -2.141314447e-06 -0.0002245864126 -0.02379012272 0.0004766913181 + +ad : 1 1.950638213 +iw : 0 +-0.2423694806 0.03835000299 -0.06898925612 0.09209574075 -0.02753890854 0.01251148068 +-0.01670193514 -0.02705954784 -0.02579881823 0.01907423473 0.0009344221251 -0.05585902912 +-0.00124738695 0.01668982335 -0.001868050578 -0.01034523729 0.0300019729 0.01381015458 + +iw : 1 +0.1516614174 0.007993976609 -0.147502627 -0.09975742083 0.08589434562 0.07275504618 +0.007721565221 0.0189897099 -0.1234471567 0.07128215191 -0.06100783665 0.01189801654 +-0.08287159903 0.03073853146 -0.04093670546 0.03442279764 -0.0248258034 -0.001255988204 + +iw : 2 +-0.2024571849 -0.01067138912 -0.09975742083 -0.08906222754 -0.1146628306 0.007721565221 +0.06823155959 -0.02534990951 -0.0575056558 -0.01996929484 -0.08287159903 0.1124612754 +-0.01245957519 0.04377911424 0.02596164624 -0.001255988204 -0.01582605101 0.03515858704 + +iw : 3 +0.09789242028 0.09905158724 0.08589434562 -0.1146628306 -0.2389658501 0.0189897099 +-0.02534990951 0.2025102185 0.1051965057 -0.08287159903 -0.04376532792 0.2307539541 +0.05842359406 -0.07149287379 -0.001255988204 0.07561325304 -0.1230935004 -0.1009383046 + +ad : 2 2.994710688 +iw : 4 +-0.06399737535 0.03356393412 -0.05615663238 0.02029674451 -0.006156995985 0.03153597531 +-0.01139807725 0.0024981379 -0.03248213575 0.02032427298 -0.01349546986 -0.007373732968 +0.004877680378 0.01946801498 -0.01202845911 0.007360356692 0.004786944954 -0.002660260649 + +ad : 3 3.303653192 +iw : 5 +-0.04210273754 0.02301191151 -0.0002447566325 0.03960835712 -0.001189986814 0.0001425556132 +-0.02306942034 0.0002802061433 0.0104914103 0.0002615867077 -3.905903946e-05 -0.0241586542 +0.006320827215 -0.00628063843 -0.0001594393374 2.160463582e-05 0.01492230134 -0.003496224483 + +ad : 4 0 +iw : 7 +0 0 0 0 0.5483938892 0 +0 0.08221087936 0 0 0 0 +0 0 0 0 0 0 + diff --git a/tests/09_DeePKS/NO_GO_deepks_UT/dphialpha_z_ref.dat b/tests/09_DeePKS/NO_GO_deepks_UT/dphialpha_z_ref.dat new file mode 100644 index 0000000000..081aae7229 --- /dev/null +++ b/tests/09_DeePKS/NO_GO_deepks_UT/dphialpha_z_ref.dat @@ -0,0 +1,230 @@ +iat : 0 +ad : 0 2.003222249 +iw : 6 +-0.1001273776 0.03429548701 -0.08674581703 -0.05280537895 -0.09460641687 0.04882858598 +0.02084843237 0.03735216985 0.08040497159 -0.03388312378 -0.06070519702 0.03705318832 +-0.06008070704 -0.03967994963 0.02058912668 0.0368875963 -0.01589861526 0.02577915935 + +ad : 1 1.950638213 +iw : 7 +-0.1047015525 0.03368247038 -0.09389207451 -0.05496396384 0.09850543939 0.05245918867 +0.02048668373 -0.03671587056 0.08547749743 -0.03674141801 0.06584731652 0.0385659416 +0.06249528398 -0.04090802155 0.02224295568 -0.03986342995 -0.01556245717 -0.02521862919 + +ad : 2 1.709269535 +iw : 4 +0.3489398701 -0.06896067425 0.2036428004 0.007590491732 0.001094410601 -0.0082874729 +-0.001783792571 -0.0002571903862 0.09272603973 0.006741740455 0.0009720361321 9.906705687e-05 +2.91738053e-05 0.02316575886 -0.0008446648782 -0.0001217852848 -2.370959021e-05 -6.982128978e-06 + +ad : 3 2.100474535 +iw : 5 +-0.08501214328 0.03195906453 -0.07993625797 0.09329187015 -2.636205119e-05 0.0448221086 +-0.040040435 1.131446926e-05 0.06803481841 0.06691563784 -1.89087588e-05 -0.0612075272 +3.459156927e-05 -0.03507079242 -0.03990775235 1.127697632e-05 0.02864052756 -1.618625744e-05 + +ad : 4 0 +iw : 0 +0 0 -0.3093059965 0 0 0.2658882637 +0 0 0 0 0 0 +0 0 0 0 0 0 + +iw : 1 +0.7216730379 0.5231309515 0 0 0 0 +0 0 -0.7007735262 0 0 0 +0 -0.1572290537 0 0 0 0 + +iw : 2 +0 0 0 0 0 0 +0 0 0 -0.606887676 0 0 +0 0 -0.1361643547 0 0 0 + +iw : 3 +0 0 0 0 0 0 +0 0 0 0 -0.606887676 0 +0 0 0 -0.1361643547 0 0 + +iat : 1 +ad : 0 3.03052076 +iw : 6 +-0.0907874358 0.04789206382 0.04868502111 -0.02920995683 -0.05415191488 -0.02660858455 +0.01648705289 0.03056510799 -0.00479383372 0.02040845221 0.03783493326 0.01305605316 +-0.0198650031 0.002180273261 -0.01190879046 -0.02207753374 -0.007755377993 0.01179993724 + +ad : 1 2.994710688 +iw : 7 +-0.09481247479 0.04972515888 0.05144825773 -0.03006974218 0.05615663238 -0.02793242859 +0.01688631613 -0.03153597531 -0.005754689371 0.02126954592 -0.0397218594 0.01353682142 +0.02032427298 0.002682211592 -0.01236141378 0.02308551117 -0.008011460144 -0.01202845911 + +ad : 2 1.709269535 +iw : 0 +-0.3113478209 0.0286012441 0.04971119462 0.004265753606 0.0006150439435 0.01993114559 +-0.0008310689207 -0.0001198249954 0.08328196277 0.000818883996 0.0001180681513 -1.135857278e-05 +-3.344934242e-06 -0.01946754809 8.119987795e-05 1.170754285e-05 7.878989592e-06 2.320247674e-06 + +iw : 1 +-0.1950183663 -0.2561514503 -0.2573800067 0.007950018237 0.001146247772 0.3938760572 +0.004671387305 0.0006735289318 0.3067367883 0.0005509276189 7.943372416e-05 -0.000147884491 +-4.35498286e-05 -0.319830144 -0.009729034053 -0.001402749437 -5.634682517e-05 -1.65933193e-05 + +iw : 2 +-0.01039663673 -0.003727798564 0.007950018237 -0.3314987525 4.076042507e-05 0.004671387305 +0.07766427661 8.896378867e-06 -0.00890717657 0.2511886789 -4.35498286e-05 0.00798720158 +0.001150948593 -0.003394366959 -0.02858717506 -1.65933193e-05 -0.001925264203 -0.0002776995258 + +iw : 3 +-0.001499005579 -0.0005374806285 0.001146247772 4.076042507e-05 -0.3317755772 0.0006735289318 +8.896378867e-06 0.07760385679 -0.001284252563 -4.35498286e-05 0.2514844479 -0.001152875821 +0.007991408411 -0.0004894058666 -1.65933193e-05 -0.02847448141 0.0002773740849 -0.001924553817 + +ad : 3 3.113220902 +iw : 5 +-0.08018334095 0.04282158626 0.03957806526 0.05723703775 0.000120035469 -0.02188523043 +-0.03265658527 -6.848622297e-05 -0.0001888316882 -0.03717138459 -7.795449868e-05 -0.02325393826 +-9.753508468e-05 -0.0004285157932 0.02185501642 4.5833559e-05 0.01392467819 5.840493132e-05 + +ad : 4 0 +iw : 4 +0 0 -0.5483938892 0 0 -0.08221087936 +0 0 0 0 0 0 +0 0 0 0 0 0 + +iat : 2 +ad : 0 3.347258395 +iw : 6 +-0.0007396576011 0.0004060616217 -0.01954630542 -0.0006898735761 -0.0003891614074 0.01179593707 +0.0004034905059 0.0002276111719 0.0004669436508 -0.01599176185 -0.009021039163 -0.0002491071568 +-0.0004122198951 -0.0002895157877 0.0101050499 0.005700313182 0.0001524449815 0.0002522643473 + +ad : 1 3.303653192 +iw : 7 +-0.0004697080557 0.0002567263044 -0.02074628098 -0.0004418801603 0.0002447566325 0.01249631425 +0.0002573678864 -0.0001425556132 0.0003003534204 -0.01712383295 0.009484860522 -0.0001636862645 +0.0002615867077 -0.0001856108426 0.01079349656 -0.005978498491 9.976817933e-05 -0.0001594393374 + +ad : 2 2.100474535 +iw : 0 +0.0868169642 -0.01881274561 -0.09468557015 0.07464695722 -2.109344474e-05 0.0477047393 +-0.01701249595 4.80732446e-06 -0.04723878462 -0.07431538974 2.09997517e-05 0.02752211589 +-1.555418462e-05 0.016632343 0.03690645978 -1.042888282e-05 -0.00391527266 2.212724997e-06 + +iw : 1 +0.1755082018 -0.0749079121 0.1940068203 0.1525024321 -4.309353981e-05 -0.08333890801 +-0.07571368342 2.139487605e-05 -0.06662191146 0.2243637153 -6.339981971e-05 0.07828767097 +-4.424445027e-05 0.04252831468 -0.1050910244 2.969620997e-05 -0.04374469431 2.472241067e-05 + +iw : 2 +-0.1536572536 0.01317595074 0.1525024321 -0.1390095414 5.966802893e-05 -0.07571368342 +0.01442311787 -1.236338045e-05 0.1262493626 0.1014550848 -4.424445027e-05 -0.08096904628 +7.024858287e-05 -0.04300089703 -0.0554029172 2.472241067e-05 0.007674779684 -1.515614894e-05 + +iw : 3 +4.341986477e-05 -3.723208543e-06 -4.309353981e-05 5.966802893e-05 0.07214783483 2.139487605e-05 +-1.236338045e-05 -0.0293292739 -3.567505029e-05 -4.424445027e-05 -0.0551202572 7.185740291e-05 +0.08666245116 1.215102503e-05 2.472241067e-05 0.03208647143 -2.38061662e-05 -0.03828606564 + +ad : 3 3.113220902 +iw : 4 +0.08018334095 -0.04282158626 0.03957806526 0.05723703775 0.000120035469 -0.02188523043 +-0.03265658527 -6.848622297e-05 0.0001888316882 0.03717138459 7.795449868e-05 0.02325393826 +9.753508468e-05 0.0004285157932 -0.02185501642 -4.5833559e-05 -0.01392467819 -5.840493132e-05 + +ad : 4 0 +iw : 5 +0 0 -0.5483938892 0 0 -0.08221087936 +0 0 0 0 0 0 +0 0 0 0 0 0 + +iat : 3 +ad : 0 3.245352337 +iw : 7 +0.0003399455506 -0.0001846159403 -0.02246782246 -2.87386954e-06 -0.000367620361 0.01349608496 +1.664130893e-06 0.0002128727109 -0.0002211180592 0.0001666727111 0.02132048146 -0.0002259029617 +3.532205435e-06 0.0001360322788 -0.0001046896727 -0.01339171968 0.000136948228 -2.141314447e-06 + +ad : 1 2.003222249 +iw : 0 +0.09873363226 -0.01755486503 -0.1021794875 -0.03878778757 -0.06949242053 0.0501604456 +0.007550352991 0.01352725531 -0.05027065312 0.03747133379 0.06713385445 -0.01311402842 +0.02126402978 0.01702455674 -0.01770211254 -0.03171520539 0.001347681701 -0.002185228131 + +iw : 1 +0.1888961723 -0.08028886883 0.2321356077 -0.07715608321 -0.1382332769 -0.09421123513 +0.03889084241 0.06967705416 -0.05976542064 -0.1288056538 -0.2307689409 -0.04095839834 +0.06641289572 0.04296442388 0.05706975008 0.1022464884 0.02392055312 -0.0387865069 + +iw : 2 +0.08330306541 -1.29688427e-05 -0.07715608321 0.03241816994 -0.09862242065 0.03889084241 +-0.02567770083 0.01256018894 -0.06710711476 -0.02342556885 0.06641289572 -0.09724747188 +-0.01522564941 0.01912333021 0.01393093107 -0.0387865069 0.02947049013 0.02221424394 + +iw : 3 +0.1492462452 -2.323505224e-05 -0.1382332769 -0.09862242065 -0.08922737335 0.06967705416 +0.01256018894 -0.01018537163 -0.120229488 0.06641289572 0.05849122783 0.007299709798 +0.0846747504 0.03426146703 -0.0387865069 -0.03391017518 -0.02068964283 -0.005523319583 + +ad : 2 3.03052076 +iw : 4 +0.0907874358 -0.04789206382 0.04868502111 -0.02920995683 -0.05415191488 -0.02660858455 +0.01648705289 0.03056510799 0.00479383372 -0.02040845221 -0.03783493326 -0.01305605316 +0.0198650031 -0.002180273261 0.01190879046 0.02207753374 0.007755377993 -0.01179993724 + +ad : 3 3.347258395 +iw : 5 +0.0007396576011 -0.0004060616217 -0.01954630542 -0.0006898735761 -0.0003891614074 0.01179593707 +0.0004034905059 0.0002276111719 -0.0004669436508 0.01599176185 0.009021039163 0.0002491071568 +0.0004122198951 0.0002895157877 -0.0101050499 -0.005700313182 -0.0001524449815 -0.0002522643473 + +ad : 4 0 +iw : 6 +0 0 -0.5483938892 0 0 -0.08221087936 +0 0 0 0 0 0 +0 0 0 0 0 0 + +iat : 4 +ad : 0 3.245352337 +iw : 6 +-0.0003399455506 0.0001846159403 -0.02246782246 -2.87386954e-06 -0.000367620361 0.01349608496 +1.664130893e-06 0.0002128727109 0.0002211180592 -0.0001666727111 -0.02132048146 0.0002259029617 +-3.532205435e-06 -0.0001360322788 0.0001046896727 0.01339171968 -0.000136948228 2.141314447e-06 + +ad : 1 1.950638213 +iw : 0 +0.1013065864 -0.01602969104 -0.1086770303 -0.03849455423 0.06898925612 0.05176285939 +0.006981143132 -0.01251148068 -0.05004426983 0.03890853796 -0.06973119039 -0.01177074134 +-0.01907423473 0.01674110648 -0.01749852981 0.03136055421 0.001152777056 0.001868050578 + +iw : 1 +0.2015556899 -0.08326786829 0.247432014 -0.08230335667 0.1475026134 -0.09606677543 +0.0405957654 -0.07275500943 -0.06613881157 -0.1370865353 0.2456840528 -0.04398832959 +-0.07128214783 0.04763617378 0.05804549801 -0.1040281102 0.02526209212 0.04093668029 + +iw : 2 +0.08462388184 0.004460470853 -0.08230335667 0.03722659398 0.09975742083 0.0405957654 +-0.02851970623 -0.007721565221 -0.0688809147 -0.02696882857 -0.07128214783 -0.1006528887 +0.01996929484 0.01715143598 0.01610142382 0.04093668029 0.02708234076 -0.02596164624 + +iw : 3 +-0.1516614174 -0.007993976609 0.1475026134 0.09975742083 -0.08589433996 -0.07275500943 +-0.007721565221 -0.01898972526 0.1234471514 -0.07128214783 0.06100783062 -0.01189801959 +0.08287159733 -0.03073849881 0.04093668029 -0.03442276043 0.02482582225 0.001255998721 + +ad : 2 2.994710688 +iw : 4 +0.09481247479 -0.04972515888 0.05144825773 -0.03006974218 0.05615663238 -0.02793242859 +0.01688631613 -0.03153597531 0.005754689371 -0.02126954592 0.0397218594 -0.01353682142 +-0.02032427298 -0.002682211592 0.01236141378 -0.02308551117 0.008011460144 0.01202845911 + +ad : 3 3.303653192 +iw : 5 +0.0004697080557 -0.0002567263044 -0.02074628098 -0.0004418801603 0.0002447566325 0.01249631425 +0.0002573678864 -0.0001425556132 -0.0003003534204 0.01712383295 -0.009484860522 0.0001636862645 +-0.0002615867077 0.0001856108426 -0.01079349656 0.005978498491 -9.976817933e-05 0.0001594393374 + +ad : 4 0 +iw : 7 +0 0 -0.5483938892 0 0 -0.08221087936 +0 0 0 0 0 0 +0 0 0 0 0 0 + diff --git a/tests/09_DeePKS/NO_GO_deepks_UT/gdmepsl_ref.dat b/tests/09_DeePKS/NO_GO_deepks_UT/gdmepsl_ref.dat new file mode 100644 index 0000000000..acd7a2bd6b --- /dev/null +++ b/tests/09_DeePKS/NO_GO_deepks_UT/gdmepsl_ref.dat @@ -0,0 +1,900 @@ +0.2954061534 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.03799107986 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.1252765806 0.163152113 -0.0007791372169 0 0 +0.1904341361 0.3511552915 0.002367842226 0 0 +0.0004846590391 -0.0009759155031 0.2363619563 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.005125239535 0.00664737143 -0.0001340452636 0 0 +0.008366331859 0.01032527812 0.0002111918275 0 0 +-4.21760995e-05 4.387981934e-05 0.008934422009 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.003972255456 -0.003318971567 0.0001757051896 -0.005191139271 -0.0002118431245 +-0.01432469935 0.0130964293 -6.910070903e-05 0.02043673276 -2.459165278e-06 +-0.0001448795986 -0.0001645579206 0.009180114309 -0.0002068149701 -0.01231709724 +0.003109126503 0.02200680821 -0.0005677060092 0.03321068014 0.0006527127592 +-0.0003069630837 -0.0002420317831 0.004002209447 -0.0003381160265 -0.005369354343 +0.0003331923502 -0.0005962504588 6.670017531e-05 -0.0009163363503 -8.607419909e-05 +-0.003386118191 0.002919152859 1.875799607e-05 0.004559407404 -4.464788015e-05 +3.123468956e-05 8.359879246e-06 0.002012160131 1.961081339e-05 -0.002699986557 +0.001230834138 0.004843700782 -2.237489855e-05 0.007287803212 6.832840023e-06 +-0.0001024089183 -8.77379152e-05 0.001825887596 -0.000121352273 -0.002449706768 +-0.04011155194 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.004646645224 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.005147570431 0.04271670628 -0.0003488080535 0 0 +-0.00413765821 0.01140197483 9.394821814e-05 0 0 +-5.658967074e-06 0.0001466821567 0.01217256553 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.005802793758 0.01049755492 -9.105234073e-05 0 0 +0.002521763218 0.002685737875 3.622043718e-05 0 0 +-6.488312121e-07 4.017701796e-05 0.003186909439 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.0001333071641 0.02094598915 -7.621237319e-05 0.001557967264 5.774010453e-05 +-0.001473609218 0.01522834038 8.429125328e-05 0.001128652732 3.540302265e-05 +-2.63870322e-05 9.201855291e-05 0.01051808451 -2.26406702e-05 -0.0003869352477 +-0.0003636840017 0.003513209217 2.384571427e-05 0.000271432392 9.473027665e-06 +-3.530709561e-06 -3.302712047e-05 0.001948171096 -8.143224631e-06 -7.182914111e-05 +0.001858384417 0.005252325518 -1.625660483e-05 0.0004787242577 1.463629882e-05 +0.001568956274 0.004070038032 3.330389971e-05 0.0003698866626 8.790766768e-06 +-1.612825043e-06 2.496900848e-05 0.002913757259 -5.628236325e-06 -0.0001586764497 +-0.0004883756107 0.00104792804 7.797948734e-06 0.0001014835932 2.448973559e-06 +1.16392895e-05 -9.284677321e-06 0.000824032207 -3.206566569e-06 -4.492054204e-05 +1.380572984 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.02507554609 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.2076413761 0.09068189136 0.000126588553 0 0 +-0.08128177198 0.1667525051 -0.001298822231 0 0 +0.0003590767344 -0.001166124326 0.2110670331 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.03967140157 -0.004177713199 1.905407695e-05 0 0 +-0.03692934445 -0.01674495964 -0.0003937000802 0 0 +9.965711234e-05 -0.0003196318281 0.04979571885 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.05796706198 0.1120122097 0.0001040947068 -0.01072042794 0.000586514245 +0.03967433705 0.08867572257 -1.531146558e-05 -0.0001479426071 7.638727577e-05 +0.0001262819993 6.660289986e-06 0.01470384761 -0.0001236207354 0.05404486545 +-0.03024783228 -0.06629774406 -8.801552264e-05 0.0009054769912 -0.000456077001 +0.0005310189701 0.000313301508 0.04066329869 -0.0004093792864 0.1494614657 +0.01366807065 0.0307339235 3.307949364e-05 0.0004639562019 0.0001872723775 +0.01348115416 0.01368856674 -3.616175754e-06 -0.009612395414 -5.435014411e-06 +3.788498051e-05 9.736323085e-06 0.003460433244 -3.520433358e-05 0.01310099491 +-0.002365502402 -0.02227282066 -3.030163367e-05 -0.01035008596 -0.0001729882673 +0.0001566024371 9.049777505e-05 0.009715498708 -0.0001273234413 0.03678259531 +0.2893550246 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.001599910982 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.05321283368 -0.0343519212 -0.001630442139 0 0 +0.0755083194 0.05253248131 -0.1368620259 0 0 +0.00820262525 0.1093248511 0.04079592999 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.009039158922 -0.003944811236 0.004555930727 0 0 +0.0157816751 0.01537005823 -0.02443438127 0 0 +0.00707039511 0.01786108378 -0.003993796056 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.01971257794 -0.01342651857 -0.03214706239 -0.008698770229 -0.009467274735 +0.005556188062 -0.003194162241 -0.02383438702 -0.02800266483 -0.008951649418 +-0.01550157267 0.02026650032 0.02539663235 -0.01503403195 -0.009403481745 +0.02052442329 0.007507201828 0.01019036312 0.01355154259 -0.03167499912 +-0.001717153604 -0.005755780689 0.04799936457 0.09052245117 0.02896760554 +0.004875037163 -0.00314467112 -0.007479907102 -0.001912363854 -0.002399118178 +0.002801671898 -0.001354818068 -0.006269906227 -0.005489785659 -0.00292424313 +-0.004674379043 0.00373148584 0.00438776823 -0.004522403587 -2.634790137e-05 +0.00224430242 0.0003793543422 -0.0007265620194 -0.0006071301931 -0.003353071722 +-0.001724601685 -0.002270277419 0.01002622274 0.02106043311 0.009660384647 +0.2759140717 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.0003299212465 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.05595117464 -0.03507779152 -0.002246083963 0 0 +0.0822683119 0.0596792612 0.1452832149 0 0 +-0.0135831872 -0.1132807346 0.03436847996 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.009136130172 -0.003877238341 -0.004797176894 0 0 +0.0159087769 0.01746461886 0.02286746201 0 0 +-0.007583516509 -0.01848263687 -0.004359111325 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.0216432147 -0.01473393144 0.03489770581 -0.008940439073 0.00999971062 +0.007270729668 -0.003712111613 0.02652631091 -0.02986579213 0.01061428152 +0.01773630722 -0.0209585837 0.02563374074 0.01746866505 -0.008171427775 +0.0201691832 0.006680292122 -0.007966873981 0.01156408646 0.03049472387 +0.002997417495 0.007107698258 0.05132848069 -0.09740876167 0.03328376907 +0.005261288777 -0.003073546853 0.007313948839 -0.001561554182 0.002811825561 +0.003515844232 -0.001468225145 0.006524914179 -0.005163150966 0.003518903461 +0.004676380971 -0.003765555482 0.0044391078 0.004469567601 -0.0001094251993 +0.001999170447 0.0003071670714 0.001101433129 -0.00122751393 0.003075323698 +0.002486258844 0.002890955937 0.009456283246 -0.0209448103 0.01126502359 +-0.003098580915 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.0003766510133 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.0008144628362 0.001026371316 -0.1761505214 0 0 +0.0004846590391 -0.0009759155031 0.2363619563 0 0 +-0.1882167583 -0.1548427119 0.006179270533 0 0 +0 0 0 0 0 +0 0 0 0 0 +1.261914838e-05 -2.236723404e-05 -0.006657713545 0 0 +-4.21760995e-05 4.387981934e-05 0.008934422009 0 0 +-0.007148114279 -0.01026833714 0.0006684788277 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.0001718771487 9.716133408e-05 0.001600302463 0.0001464619652 -0.00214745411 +-0.0001448795986 -0.0001645579206 0.009180114309 -0.0002068149701 -0.01231709724 +0.01153598403 -0.0004305974622 6.959614411e-05 -0.001119110539 -7.580538418e-05 +0.0003073756287 0.0001941713853 -0.002702979956 0.0002707612382 0.003626320415 +0.003437341521 -0.02413660162 0.0002453485507 -0.03670738914 -0.0001984893576 +8.330658492e-05 6.014258554e-05 -0.0001964781255 8.695537679e-05 0.0002634333448 +3.123468956e-05 8.359879246e-06 0.002012160131 1.961081339e-05 -0.002699986557 +0.002334137938 -0.0007481583286 0.0001318291906 -0.001224795313 -0.0001712780161 +0.0001117067012 8.263682809e-05 -0.001541122405 0.0001144127425 0.00206763632 +0.002149270379 -0.006387338547 -9.850789974e-05 -0.009762102376 0.0001670042046 +0.0001616728331 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +-1.229497353e-05 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +5.842060251e-06 0.000191157354 -0.02655902686 0 0 +-5.658967e-06 0.0001466821547 0.01217256555 0 0 +-0.008733767216 -0.01973778176 0.0004562999664 0 0 +0 0 0 0 0 +0 0 0 0 0 +-1.220573781e-05 3.988337214e-05 -0.007976685586 0 0 +-6.488311815e-07 4.017701714e-05 0.003186909445 0 0 +-0.002553143492 -0.005672860945 0.0001262714736 0 0 +0 0 0 0 0 +0 0 0 0 0 +1.540688636e-05 0.0001837276422 -0.0108953786 4.477203107e-05 0.0004016144777 +-2.638703214e-05 9.201855064e-05 0.01051808453 -2.264067042e-05 -0.0003869352483 +-0.001978609747 -0.009732223582 0.0003247573497 -0.0007175949681 -3.768139897e-05 +2.813607007e-06 0.000101136314 -0.001067473968 1.070571454e-05 3.958492336e-05 +0.0003354006783 -0.01579032126 -3.078125921e-05 -0.001187441077 -4.178578469e-05 +-1.168697122e-05 4.873039668e-05 -0.003852705016 1.519019515e-05 0.0002100297071 +-1.612824996e-06 2.496900692e-05 0.002913757269 -5.6282365e-06 -0.0001586764503 +-0.001344265641 -0.003005027236 8.729325371e-05 -0.0002722005837 -1.261332236e-05 +-4.157974951e-06 2.870705637e-05 -0.0005788305096 4.30114233e-06 3.161255475e-05 +-0.0004422453033 -0.004363982193 -1.16382226e-05 -0.0004053862311 -1.096041663e-05 +0.001398209662 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.0002433058434 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +3.197398451e-05 -0.0002645889088 0.05236003671 0 0 +0.0003590767311 -0.001166124348 0.2110670387 0 0 +-0.1094895524 -0.2904701602 0.0002247207237 0 0 +0 0 0 0 0 +0 0 0 0 0 +1.864390951e-05 -6.229929388e-05 0.01117633294 0 0 +9.965710125e-05 -0.000319631909 0.04979573676 0 0 +-0.01919909465 -0.0448450936 9.501440084e-05 0 0 +0 0 0 0 0 +0 0 0 0 0 +-8.145774842e-05 -7.030337022e-05 -0.00515299689 5.25956486e-05 -0.01894043167 +0.0001262819966 6.660291004e-06 0.01470384715 -0.0001236207324 0.05404486374 +-0.0181306 -0.0709913273 -1.816736826e-05 -0.01814963368 -0.000174784508 +0.000545183937 0.0002571986621 0.04389206412 -0.0004527364073 0.1613288036 +0.04991876026 -0.06253101331 3.867947497e-05 -0.1042921796 6.013568919e-05 +-2.110500079e-05 -1.542934466e-05 -0.001066542608 1.585041035e-05 -0.004037942089 +3.788499303e-05 9.736318631e-06 0.003460435018 -3.520434818e-05 0.01310100163 +-0.007927599231 -0.01796746502 -7.279039908e-06 -0.0003557404506 -5.53662564e-05 +0.0001742290878 8.12105373e-05 0.01171861162 -0.0001510238106 0.04436620861 +0.007230588891 -0.00848590068 1.727323073e-05 -0.01474561473 4.761807738e-05 +0.5644494357 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.00118760503 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.09630264152 -0.002295198297 -0.0364649566 0 0 +0.008202625154 0.1093248225 0.04079594636 0 0 +0.04925128421 -0.0655733018 0.03958805811 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.01645428693 0.004403393273 0.001701817516 0 0 +0.007070394979 0.01786104196 -0.003993772136 0 0 +0.0146533991 -0.01994708943 -0.005395650294 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.03075600359 -0.02562049043 -0.04970900401 -0.002228925451 -0.006480553508 +-0.01550157267 0.02026649868 0.02539663328 -0.01503402669 -0.009403478568 +-0.01393211031 0.001115342361 0.01989226737 0.02059617891 0.02023955912 +-0.008054651565 -0.03276842736 -0.008979795009 0.0543627458 0.06252534246 +-0.01917235194 0.01233817558 0.02222882623 -0.004706849179 0.007244337288 +0.00709688665 -0.005558130512 -0.01149683511 -0.001505046894 -0.00196681056 +-0.004674379027 0.003731480043 0.004387771518 -0.004522384377 -2.633632725e-05 +-0.003095419228 -0.001085868417 0.001801492058 0.003534129103 0.005924318149 +-0.002248975411 -0.006335544622 -0.0004661934323 0.01263299129 0.01355538373 +-0.002691745592 0.003938825552 0.006296968753 -0.0004995496366 -0.001797082339 +-0.5460186499 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.003066404385 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.1012308842 -0.002021063191 -0.03239981762 0 0 +-0.01358318722 -0.1132807398 0.03436847699 0 0 +0.05768542796 -0.07676099195 -0.03199085776 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.01663019838 -0.004745737415 0.002062222035 0 0 +-0.007583516525 -0.01848264409 -0.004359115405 0 0 +0.01440520647 -0.01963841755 0.004786102127 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.03348428567 0.02752927669 -0.05399405414 0.00319927776 -0.007292626079 +0.01773630722 -0.02095858401 0.02563374057 0.01746866604 -0.008171428371 +-0.01510602553 -0.0006255201 -0.01859041536 0.02142928521 -0.02378436913 +0.008813459935 0.03480147443 -0.008621093286 -0.05831823146 0.06655211668 +-0.01938772623 0.01484818265 -0.02575657334 -0.004656728414 -0.004208143503 +-0.007547087656 0.005223078585 -0.01117791925 0.001491431749 -0.002834922623 +0.004676380966 -0.003765556454 0.004439107253 0.004469570787 -0.000109427132 +-0.002410770254 -0.001218553497 -0.001622920993 0.003979426653 -0.005308326674 +0.002159543746 0.005801678054 0.0005042113166 -0.01297643053 0.01278747752 +-0.002996859681 0.003795049253 -0.005623325103 -0.001462790656 0.001485416515 +0.005486539023 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.0001932778559 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.01880615908 0.2770563498 -0.005174274864 0 0 +-0.1252765806 -0.163152113 0.0007791372169 0 0 +0.0008144628362 -0.001026371316 0.1761505214 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.0008410712494 0.01453983568 -0.000350790002 0 0 +-0.005125239535 -0.00664737143 0.0001340452636 0 0 +-1.261914838e-05 2.236723404e-05 0.006657713545 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.0006722454903 0.01759433352 -0.0005082457307 0.02662954158 0.0005900032811 +-0.01342661629 0.00787842079 1.80271429e-05 0.01248802596 -8.730034668e-05 +0.0003166387581 0.0002679148013 -0.009476994577 0.0003551976995 0.01271517438 +0.01293034169 -0.006763513379 6.934842657e-05 -0.01077792165 -3.667310945e-05 +0.0001448795986 0.0001645579206 -0.009180114309 0.0002068149701 0.01231709724 +0.0001481801071 0.004803532963 -5.35595662e-05 0.007269778341 4.789970914e-05 +-0.003957210596 0.002576373854 5.354705771e-06 0.00406144028 -2.475215854e-05 +6.982438178e-05 6.620472944e-05 -0.003026699905 8.515388487e-05 0.004061063151 +0.002860128065 -0.001833655594 5.653559726e-05 -0.002892101359 -6.331506799e-05 +-3.123468956e-05 -8.359879246e-06 -0.002012160131 -1.961081339e-05 0.002699986557 +-0.02481795753 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.0009350625264 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.003587870955 -0.04847776917 0.0004909097551 0 0 +-0.005147570453 -0.04271670557 0.000348808053 0 0 +-5.842059548e-06 -0.0001911573544 0.02655902757 0 0 +0 0 0 0 0 +0 0 0 0 0 +5.976897277e-05 -0.01250107738 9.426645289e-05 0 0 +-0.005802793767 -0.01049755463 9.105234047e-05 0 0 +1.220573806e-05 -3.988337236e-05 0.007976685878 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.001930825929 -0.001339488825 0.0002419814183 -0.0001036996129 -1.170843434e-05 +-0.0002026114906 -0.02400240459 0.0001389392467 -0.001782469711 -6.769603541e-05 +-2.034119487e-05 -0.0001840621773 0.01585570504 -5.869849571e-05 -0.0005842026456 +-0.0002525002648 -0.01248028197 0.0001202330471 -0.0009231238497 -3.654221075e-05 +2.638703211e-05 -9.201855066e-05 -0.01051808451 2.264067038e-05 0.0003869352477 +-0.0006126674777 -0.0001821538944 4.825930527e-05 -1.26550345e-05 -2.875816099e-06 +-0.00228819534 -0.005781239957 3.199753868e-05 -0.000525272048 -1.683936863e-05 +4.445162547e-06 -4.641178985e-05 0.005270218669 -1.880248244e-05 -0.0002872490571 +-0.001456610958 -0.003537532628 2.699467622e-05 -0.0003210436227 -1.070204451e-05 +1.612824978e-06 -2.496900694e-05 -0.002913757259 5.628236469e-06 0.0001586764497 +-0.4485384979 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.009414113827 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.05196859923 0.2890481066 -0.0006732303702 0 0 +-0.2076413819 -0.09068188968 -0.0001265885569 0 0 +-3.197398398e-05 0.0002645889013 -0.05236003488 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.01732224349 0.05350947125 -0.0002006462063 0 0 +-0.03967141998 0.004177718501 -1.905409294e-05 0 0 +-1.864390792e-05 6.229926601e-05 -0.0111763271 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.01331920796 0.08792393434 -3.248676019e-05 0.03472053403 1.906218013e-05 +-0.1200728235 -0.06518207935 -0.0001309612731 0.121955028 -0.0006199311567 +0.000155253933 6.566616004e-05 0.01215401914 -0.0001344554644 0.04467313255 +-0.02890246694 -0.07983352259 -1.427951765e-06 -0.009000846264 -0.0001255858893 +-0.0001262820002 -6.660291312e-06 -0.01470384761 0.0001236207358 -0.05404486545 +0.008336694059 0.01935257546 -8.081560321e-06 0.0006514027083 2.720009834e-07 +-0.02853888339 -0.02247400165 -4.426696194e-05 0.02429210679 -0.0001989950971 +5.418155118e-05 1.743718503e-05 0.003850414036 -5.115404579e-05 0.01457751574 +-0.01070438296 -0.01582802504 -1.831431322e-06 0.004628330259 -2.496563303e-05 +-3.788497696e-05 -9.736317909e-06 -0.003460433244 3.520433201e-05 -0.01310099491 +0.2270485521 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.001507083806 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.03467819979 0.08642763143 0.1255514426 0 0 +-0.0532128503 0.03435190957 0.001630442658 0 0 +-0.09630267122 0.002295198715 0.03646494539 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.01064427952 0.01581802667 0.01925119241 0 0 +-0.009039183271 0.003944794328 -0.004555929876 0 0 +-0.01645433046 -0.004403392561 -0.001701833725 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.00926287433 0.02105500649 0.03773158246 0.007605655385 -0.01314342291 +-0.03549525991 0.003410039629 0.02326115634 0.006222007049 0.04082845679 +-0.05960846239 0.0173633448 0.02911936612 -0.03229908796 0.04478238999 +-0.009744152162 0.002154754874 0.02186333019 0.0242994189 0.01459560408 +0.01550157749 -0.02026650211 -0.02539663855 0.01503402913 0.009403477429 +-0.004831236888 0.004136016566 0.007410116176 -0.0004957293594 0.0005511088307 +-0.007996376262 0.001128567021 0.007385173785 0.004418949074 0.009305527096 +-0.01281655512 0.005561698652 0.009420705079 -0.005820604742 0.007301633439 +-0.002948556516 0.0001344841228 0.004035710098 0.004511946589 0.004424279846 +0.00467439678 -0.003731492495 -0.004387790771 0.004522393183 2.633237548e-05 +0.2223877131 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.0002127558542 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.04014946048 0.09150240659 -0.1307648665 0 0 +-0.05595117161 0.03507779367 0.002246084056 0 0 +0.1012308787 0.00202106327 0.03239981967 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.01185446839 0.01557547806 -0.01776392146 0 0 +-0.00913612598 0.003877241288 0.004797177036 0 0 +0.01663019088 0.004745737539 -0.002062219233 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.01216773935 0.02184874888 -0.03926549984 0.006455011063 0.0109808276 +-0.0382686041 0.003991442201 -0.02672115215 0.008577938795 -0.04360658831 +0.0638125258 -0.01998832968 0.03357087013 0.03354921956 0.04589954554 +-0.01118837704 0.001543295278 -0.02255836258 0.02564753922 -0.01719932536 +-0.01773630632 0.02095858337 -0.02563373959 -0.01746866558 0.008171428583 +-0.00547009006 0.004192447105 -0.007544427827 -0.0007946577208 -0.001119021936 +-0.008115129016 0.001221320211 -0.008146238777 0.005395002667 -0.009430968491 +0.01274522196 -0.006135915128 0.01040864903 0.005385147366 0.006432680876 +-0.002963305424 0.0001248342893 -0.004073915787 0.004571290596 -0.004413615205 +-0.004676378016 0.003765554406 -0.004439104091 -0.004469569334 0.0001094277828 +0.320586926 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.03754650505 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.1486275193 -0.1740943018 0.001671666294 0 0 +-0.1994150413 0.2335936317 -6.072815237e-05 0 0 +-0.004278790602 0.003589220902 0.3324678714 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.005875939316 -0.00638411962 -0.0001812090615 0 0 +-0.007884512424 0.008566725898 0.0003256388684 0 0 +-0.000503688661 0.0005030730561 0.007415648498 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.002397919164 0.001544470823 0.0003641522187 0.0022427875 -0.0004926622823 +0.01375660117 0.008880188643 -0.0002620875267 0.01288719377 0.0003283120159 +-0.0002673168988 -0.000184020942 0.01731249517 -0.0001978808486 -0.0232296107 +-0.004052069925 -0.0026196145 0.000610190371 -0.003799793584 -0.000811842107 +1.62316984e-05 0.0001778602464 -0.02322998672 0.0001763518504 0.03116867208 +-0.0002683097538 -0.0001927347785 0.0001932753142 -0.0002804062317 -0.0002586691066 +0.002746705164 0.001960031248 7.582461798e-05 0.002859196126 -0.0001085703689 +0.0001107120367 8.626587167e-05 0.003087342886 0.0001390466478 -0.004143125128 +-0.00210408514 -0.001503330799 0.0002507538184 -0.00219183103 -0.0003312301404 +-0.0002164237712 -0.000127596277 -0.004144084414 -0.0002014862303 0.005561061996 +-0.04276062214 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.00506058345 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.007827570538 -0.03436317426 0.001106910005 0 0 +-0.002862230356 0.01257248413 0.000219184792 0 0 +-0.001053371668 0.0002209595439 0.007297811364 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.006822869778 -0.008947471419 0.0001257917735 0 0 +-0.002495553863 0.003273352403 6.382565225e-05 0 0 +-0.0001173833539 7.38073642e-05 0.001446677822 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.001802126248 -0.01700429702 0.001193892104 -0.001323222836 -9.479531989e-05 +-0.001148165612 0.01082176807 8.443493623e-05 0.0008397406363 2.925114312e-05 +-0.0002882862326 0.0001093081705 0.01312462084 -2.828715466e-05 -0.0004829415528 +0.0004060497806 -0.003830549339 0.0005227883207 -0.0002987946762 -3.069825878e-05 +3.077165039e-05 -0.0004814616822 -0.004800170941 -2.309893143e-05 0.0001753469802 +0.002579508927 -0.004724982986 0.0002243599437 -0.0004609288695 -2.524096212e-05 +-0.001620828939 0.002969217262 2.177073333e-05 0.0002892047127 6.994293208e-06 +-3.40960412e-05 3.901368875e-05 0.00339006394 -5.398416154e-06 -0.0001845880877 +0.0006293923523 -0.001153238447 0.0001228038523 -0.0001126849361 -9.86763621e-06 +1.690432086e-05 -0.000110273237 -0.001240165425 -7.045602884e-06 6.726770951e-05 +-0.02341152238 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.0008998181301 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.0001281226402 -5.216290989e-05 -6.972313279e-05 0 0 +-0.01562334894 0.006405255903 -0.000146348789 0 0 +-0.0001565824844 0.0001484041602 0.001103993861 0 0 +0 0 0 0 0 +0 0 0 0 0 +3.663501671e-05 -2.465941988e-05 -2.017873292e-05 0 0 +-0.004464686064 0.003021989128 -2.478519618e-05 0 0 +-5.357789347e-05 4.568438994e-05 0.0001948335748 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.002142097485 0.00323203565 4.158739741e-07 -0.000940298708 1.308645376e-05 +7.01656014e-05 0.0001060814788 -1.763751634e-05 -3.072186724e-05 -6.444869536e-05 +-3.579893202e-06 7.814877336e-06 -9.000810437e-06 9.437886615e-06 -3.304855118e-05 +-0.004874709822 -0.007354360448 -5.655477673e-05 0.002140065973 -0.0002341707071 +-7.938495735e-05 -9.347956603e-05 0.00108139731 5.361395153e-05 0.003974413426 +0.0007733036172 0.0009776210074 -1.301763299e-06 -0.0004351372585 -1.126197393e-06 +2.578587205e-05 3.267039607e-05 -5.408163284e-06 -1.448064014e-05 -2.034801604e-05 +-5.731460827e-07 3.795274639e-07 -2.695617563e-06 9.830784693e-07 -1.019558984e-05 +-0.001814271376 -0.002293375242 -1.594647595e-05 0.001020990577 -6.929212283e-05 +-2.851890717e-05 -3.615367406e-05 0.0003229739662 1.684597749e-05 0.001222633498 +0.9818454385 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.00356687021 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.1733760021 -0.003447657124 -0.06544051329 0 0 +-0.003201916935 0.1618049104 0.08336329749 0 0 +0.1226328423 -0.1626643243 0.1138426282 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.02973621336 0.008071862652 0.002986884503 0 0 +0.007788715335 0.02105982364 -0.005302368107 0 0 +0.03554002048 -0.04760486696 0.005280532643 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.05864018171 -0.05420815392 -0.08976295377 0.01617379567 -0.001255533741 +-0.0280455401 0.03639632468 0.0458592741 -0.0267306431 -0.01657477938 +-0.02499703466 0.001940133999 0.03572026256 0.03714156591 0.03643029141 +0.001970427521 -0.07152789387 -0.03395366775 0.1085311212 0.1101517927 +-0.03272870598 0.02256929334 0.03708330906 -0.01287127104 0.009436664728 +0.01393112774 -0.01246596149 -0.02070475365 0.003853751651 -0.0003845236986 +-0.008464082681 0.006712802473 0.007974868323 -0.0080354949 4.202883755e-05 +-0.005550000734 -0.00196177985 0.003255426557 0.006414618491 0.01065812897 +0.001830069451 -0.01496721825 -0.005891417261 0.02659842209 0.02257878178 +-0.004285964977 0.007228019579 0.01053579507 -0.002192012064 -0.004379709402 +0.9483838232 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.003900927475 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.1827943197 0.003778790124 0.05766194701 0 0 +0.003673276361 0.166255077 -0.07155671648 0 0 +-0.1414636155 0.1862000619 0.1042091486 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.03020661614 0.008539856419 -0.003793767822 0 0 +0.008127732378 0.02139026468 0.006422228957 0 0 +-0.03585011718 0.04758144236 0.007797840999 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.06391710922 -0.05848190668 0.09752579048 0.01626385072 0.001778305001 +-0.03207101967 0.03767871928 -0.0462907335 -0.03119299962 0.0144191168 +0.0273299098 0.0008992444838 0.03357244378 -0.03814669082 0.04260885263 +0.002603696517 -0.07635188898 0.03517478386 0.1164091157 -0.1166850445 +0.0326575867 -0.02651754847 0.04309660724 0.01169901837 0.004385269083 +0.01486014616 -0.01205547905 0.02013552683 0.004351387055 0.001747022563 +-0.008469839337 0.006786448905 -0.008067190178 -0.007971118158 0.0001282078303 +0.004399860703 0.002118339535 0.002982057119 -0.007048896774 0.009508195784 +0.002661703783 -0.01418706995 0.004432787243 0.02754860935 -0.02074486017 +0.004685093291 -0.006812214656 0.009291588103 0.003505979683 -0.003699743179 +-0.003699913138 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.0001588773829 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.002856220367 -0.005065270898 0.2951637818 0 0 +0.0008144628362 -0.001026371316 0.1761505214 0 0 +-0.1486275193 0.1740943018 -0.001671666294 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.000321652137 -0.0003432388101 0.0163093443 0 0 +-1.261914838e-05 2.236723404e-05 0.006657713545 0 0 +-0.005875939316 0.00638411962 0.0001812090615 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.0006536972271 -0.000525589969 0.02226069778 -0.0006802924951 -0.02986762381 +0.0003166387581 0.0002679148013 -0.009476994577 0.0003551976995 0.01271517438 +-0.01420376455 -0.009170723439 0.0006261415225 -0.01330752614 -0.0008160269987 +-0.0001718622566 -0.0001755733461 0.01014801391 -0.000218540401 -0.01361579575 +-0.01375660117 -0.008880188643 0.0002620875267 -0.01288719377 -0.0003283120159 +-1.8332736e-05 -5.445173646e-05 0.00569605605 -5.859885709e-05 -0.007642858223 +6.982438178e-05 6.620472944e-05 -0.003026699905 8.515388487e-05 0.004061063151 +-0.004132056514 -0.002950148703 0.0001558877524 -0.004302516068 -0.0001988978376 +3.196511776e-05 1.095070991e-05 0.002224276583 2.43707426e-05 -0.00298462349 +-0.002746705164 -0.001960031248 -7.582461798e-05 -0.002859196126 0.0001085703689 +-0.002252022012 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +-5.385927945e-05 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.000131845627 0.0005499792746 -0.05561257987 0 0 +2.828695097e-05 -0.00111100095 0.03293470519 0 0 +-0.007827570537 0.03436317426 -0.001106909903 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.0002024178515 0.0001064454687 -0.01417298121 0 0 +1.594844233e-05 -0.0001404550436 0.008674329025 0 0 +-0.006822869778 0.008947471419 -0.0001257917314 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.000241926102 0.0002794880594 -0.005059830344 3.599624631e-05 0.0001872625413 +-3.538958738e-06 -0.0007863767463 0.02003840639 -0.0001160441832 -0.0007398417539 +-0.002212399797 0.02087646339 -0.0009581957876 0.001623118235 9.769860948e-05 +-2.155317644e-05 -0.0001204530398 0.01278837658 -4.515234047e-05 -0.0004711023475 +0.001148165612 -0.01082176807 -8.443493396e-05 -0.0008397406363 -2.925114321e-05 +-0.0001479645229 5.818690599e-05 -0.001099590092 9.526417953e-06 6.010555258e-05 +5.401568586e-06 -7.84652229e-05 0.005493142644 -2.241987564e-05 -0.000299479871 +-0.003072104992 0.0056264534 -0.0001251264504 0.0005484830367 2.231840156e-05 +2.784452868e-06 -2.755224369e-05 0.003568960638 -1.236906588e-05 -0.0001945133562 +0.001620828939 -0.002969217262 -2.177073177e-05 -0.0002892047127 -6.994293292e-06 +0.0001224535755 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +1.589592515e-06 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +8.862313458e-05 -0.0001883540796 0.01426551336 0 0 +-6.335866578e-05 6.260129149e-05 0.000402062349 0 0 +-0.0001281226402 5.216290989e-05 6.972313227e-05 0 0 +0 0 0 0 0 +0 0 0 0 0 +2.373034442e-05 -6.172994178e-05 0.004531241781 0 0 +-2.563729878e-05 1.124978968e-05 0.0001236813636 0 0 +-3.663501671e-05 2.465941989e-05 2.017873127e-05 0 0 +0 0 0 0 0 +0 0 0 0 0 +1.409814972e-05 2.897772947e-06 -6.3731299e-05 -1.735888771e-05 -0.0002341880187 +0.0001002227827 8.617854594e-05 0.002738355688 -7.511293513e-05 0.01006537761 +-0.001922524443 -0.002900565103 -1.382949016e-05 0.0008439808398 -6.12036725e-05 +-1.517239269e-05 -1.215958437e-05 3.425544615e-05 1.316453657e-05 0.0001258746198 +-7.01656014e-05 -0.0001060814788 1.763751648e-05 3.072186724e-05 6.444869585e-05 +4.515841355e-06 3.525266378e-06 -2.107733786e-05 -3.921018626e-06 -7.977204987e-05 +3.351315182e-05 2.478876931e-05 0.0009230100441 -2.704750422e-05 0.0034945801 +-0.0007297995808 -0.0009225555217 -4.072142898e-06 0.0004106840836 -1.900492048e-05 +-4.869783983e-06 -6.98775006e-06 1.117841182e-05 2.265325245e-06 4.230445978e-05 +-2.578587205e-05 -3.267039607e-05 5.408162783e-06 1.448064015e-05 2.034801414e-05 +0.4060394472 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.002749217897 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.06393623481 0.1250696901 0.242534917 0 0 +-0.0961051779 0.06087302934 0.002998099621 0 0 +-0.1733760553 0.003447657873 0.06544049321 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.0195902876 0.01911920327 0.03995757742 0 0 +-0.01641885298 0.006861915707 -0.008145394162 0 0 +-0.02973629134 -0.008071861376 -0.002986913543 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.01662209681 0.03760757878 0.06770833091 0.01404598106 -0.02328080531 +-0.05957677138 0.006797236695 0.03512319296 0.001601853917 0.06525955321 +-0.1102238136 0.03881108266 0.05304577802 -0.07630562975 0.07086984883 +-0.01744178891 0.003858996499 0.03914020525 0.04350050635 0.02612386068 +0.02804554873 -0.03639633083 -0.04585928355 0.02673064748 0.01657477734 +-0.008671087588 0.007373438799 0.01331096278 -0.0007533835257 0.001082530263 +-0.01280753538 0.002339101817 0.01124871527 0.00485772754 0.01373549764 +-0.02420295735 0.01241488466 0.01705295033 -0.01674520776 0.01009666692 +-0.005270843286 0.0002446969356 0.007228090758 0.008079184714 0.007906275061 +0.008464114488 -0.006712824782 -0.007974902816 0.008035510677 -4.203591757e-05 +-0.3977991145 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.0003253369583 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.0737779768 -0.1308525392 0.2536260223 0 0 +0.1010642902 -0.0623674226 -0.004039081678 0 0 +-0.1827943099 -0.003778790265 -0.05766195069 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.02177314019 -0.01778321962 0.03769455708 0 0 +0.01660372886 -0.006805221962 -0.008594826157 0 0 +-0.0302066027 -0.008539856642 0.0037937628 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.02189635896 -0.03919160857 0.07048801636 -0.01161977932 -0.01960191281 +0.06384630679 -0.007851531975 0.04042165692 -0.004880492864 0.06924179585 +-0.1181262823 0.04431517283 -0.06106534065 -0.08032782648 -0.07198611916 +0.02020908033 -0.002940753015 0.04056086952 -0.04568011507 0.03073794511 +0.03207101805 -0.03767871814 0.04629073176 0.0311929988 -0.01441911718 +0.00984371375 -0.007522591867 0.01355457377 0.00141592901 0.002044848465 +0.01276164354 -0.002538253031 0.01243329515 -0.006413997895 0.01358892255 +-0.02418826491 0.01363403767 -0.01881100882 -0.01645838454 -0.008329612913 +0.005358253427 -0.0002796818026 0.007345636552 -0.008104675665 0.007877159536 +0.00846983405 -0.006786445235 0.008067184512 0.007971115553 -0.0001282089967 +0.3426579006 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.02651431782 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.3618611847 0.01006756186 -0.0008697899066 0 0 +0.00760787609 0.1113799938 -0.001065723822 0 0 +0.003309794935 -0.001187162509 0.1312956234 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.002699274148 0.0004741614792 -0.0001848447878 0 0 +0.0001046731045 0.004295227352 7.950042641e-06 0 0 +6.024050593e-05 1.568323277e-07 0.004961997279 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.04178799752 0.002942582392 -0.0002961328798 0.002557292967 0.0005457299034 +0.001882513272 -0.005519791457 0.0002171878041 -0.008452299265 -0.000252813134 +0.0005942077419 0.0002385335928 -0.007064884378 0.0003069308711 0.009480270913 +0.0008919435121 0.005481732196 -0.0001419577336 0.008267473846 0.0001636318506 +0.0001523342617 0.0001362025988 -0.006842083461 0.0001727974771 0.009180159243 +-0.001053308366 0.0001185499979 -8.767540567e-06 0.0002444494171 -1.813496979e-06 +4.248885141e-05 -0.00181808673 5.605233801e-05 -0.002756336522 -6.551238364e-05 +7.940592588e-05 5.761919066e-05 -0.002256051357 7.478340456e-05 0.0030271003 +8.429060183e-05 0.001320730161 4.572174151e-06 0.001997254453 -1.272707569e-05 +-1.512510701e-05 -3.497082242e-06 -0.001499408505 -1.080812104e-05 0.002011957552 +1.088671147 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.01870932347 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.08085014381 -0.02363658018 -0.0006533177886 0 0 +-0.007567975274 0.4053351507 -0.0009446668927 0 0 +0.001246191301 -0.0009883403247 0.4157437714 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.04189659013 -0.00311463856 0.0002373644939 0 0 +-0.001123647927 0.05689352985 -0.0001857420908 0 0 +0.0003572055901 -0.0001976689092 0.05935249817 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.08990673643 -0.0201968634 -0.001577333133 -0.001593322941 -6.17801505e-05 +-0.01207420957 0.2582520393 -0.000882964385 0.01955610576 0.0007480912224 +-0.0006400963988 -0.000927658919 0.268445039 -0.0008259636352 -0.00988461182 +-0.001560831769 0.03607730692 -0.001319510891 0.002738026425 0.000148977046 +-4.631730084e-06 0.001220446133 -0.02160241546 0.0001533715842 0.0007986318321 +0.04221009594 -0.001165639532 0.0002668687793 -0.000417383327 -3.157945452e-05 +0.0001472252001 0.02405950528 -0.0001653547152 0.002251219842 7.305255361e-05 +0.0002760168792 -0.0001818472813 0.02640617534 -9.129300194e-05 -0.001439184497 +-0.0005699013461 0.008968683814 -0.000199066531 0.0008440672182 3.48953723e-05 +-1.175538438e-05 0.0001737176418 -0.007154764638 3.592988185e-05 0.0003902617844 +0.1199679613 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.004315426111 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.0288036016 -0.09638337494 0.0001628732017 0 0 +0.09171178871 0.02361440559 0.0002192815555 0 0 +4.287201402e-05 -9.200951194e-05 0.01720265956 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.009274326551 -0.01711864209 4.771587416e-05 0 0 +0.02044014956 -0.002297170591 6.096362564e-05 0 0 +1.66484512e-05 -1.900340286e-05 0.003684637511 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.004253693377 -0.0285303035 1.877179901e-06 -0.01135791592 -3.793308353e-05 +0.04500668339 0.02958327061 2.751446915e-05 -0.04262707496 0.0001442975471 +-1.068183765e-05 2.648197322e-05 -0.003046796515 2.153300272e-05 -0.01119867361 +0.01435232728 0.03314032423 1.54698363e-05 0.0005827822077 0.0001016350191 +5.239735925e-05 1.735378934e-05 0.004826484647 -4.616195141e-05 0.01774000208 +-0.002748130739 -0.006361505569 -4.008806953e-07 -0.0002038886434 -1.153668378e-05 +0.01099024701 0.01019780706 9.775133586e-06 -0.0084192389 4.566867676e-05 +-4.05521697e-06 9.17910879e-06 -0.0009466851162 8.426956865e-06 -0.00358408693 +0.005052417119 0.007606091363 5.621562439e-06 -0.002102376352 2.855567175e-05 +1.540781799e-05 8.876525698e-06 0.001138921595 -1.205158963e-05 0.004311877716 +0.1368351366 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.003007671511 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.04351657158 0.05706848088 0.1015661959 0 0 +-0.05363794402 0.02316533279 -0.001967127491 0 0 +-0.09744821625 -0.002101489568 0.02100954343 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.01325369941 0.008782622309 0.01554196375 0 0 +-0.01103553837 0.002521830118 -0.003816847873 0 0 +-0.02016587083 -0.003861012541 -0.002099566899 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.005690597539 0.01483076096 0.02669143511 0.00610688172 -0.01012035967 +-0.02912273093 0.006124091736 0.01917731896 -0.002284215717 0.02773858056 +-0.05263407762 0.01911960961 0.03036576466 -0.02948293942 0.03460239665 +-0.01059198036 0.003702224706 0.01996447235 0.01709897834 0.01214547912 +0.01674129864 -0.01821252468 -0.02474171484 0.01226453842 0.004723971661 +-0.003317338719 0.002861893602 0.005165227378 -0.0002630386512 0.0003682866476 +-0.006577856124 0.002087880782 0.006238930596 0.001190551158 0.00564145295 +-0.01191971906 0.006234774638 0.009976473008 -0.005856860771 0.005344401495 +-0.003209725385 0.0008141727903 0.004268184864 0.003128960286 0.003575680495 +0.005068313038 -0.0038460487 -0.005253313953 0.003595933418 -0.0005139598699 +0.1326257852 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.002061794257 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.04991621734 0.06057220152 -0.1073752481 0 0 +-0.05728219199 0.02383998849 0.00516761241 0 0 +0.1043601458 0.005737558622 0.01766931194 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.01479986199 0.008287315151 -0.01451403544 0 0 +-0.01148395702 0.002535380225 0.003998375922 0 0 +0.02107724481 0.004139980114 -0.002314738405 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.007572427221 0.01539036607 -0.02772156873 0.005321655689 0.008786764379 +-0.0316133767 0.006951299004 -0.02196570447 -0.001292719644 -0.02966563193 +0.05718787892 -0.02189508379 0.03484718886 0.03126072456 0.0358951716 +-0.01210347789 0.003442070194 -0.02102584815 0.01826864018 -0.01437526065 +-0.0189619843 0.01912094173 -0.02553535604 -0.01431513935 0.003721455582 +-0.003744898458 0.002880295525 -0.005205128796 -0.0005010560948 -0.000763431565 +-0.006694886283 0.002293492828 -0.006923986737 0.001793026756 -0.005562971636 +0.01214362937 -0.00692103133 0.01109759712 0.00565613406 0.004645580457 +-0.003319900276 0.0008629711919 -0.004441867617 0.003225470558 -0.003614122633 +-0.005186112608 0.003970414999 -0.005450843926 -0.003590199637 -0.0004377646164 diff --git a/tests/09_DeePKS/NO_GO_deepks_UT/gdmx_ref.dat b/tests/09_DeePKS/NO_GO_deepks_UT/gdmx_ref.dat new file mode 100644 index 0000000000..6ac591196a --- /dev/null +++ b/tests/09_DeePKS/NO_GO_deepks_UT/gdmx_ref.dat @@ -0,0 +1,2250 @@ +-0.01548257497 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +5.494390654e-05 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.02137308267 0.2106222523 -0.002571299866 0 0 +0.2106222523 0.2714719853 -0.002037800391 0 0 +-0.002571299866 -0.002037800391 -0.2610692252 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.0006071674638 0.008110437364 -3.06477412e-05 0 0 +0.008110437364 0.01105032655 -0.0002077952576 0 0 +-3.06477412e-05 -0.0002077952576 -0.009865480502 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.0008116590405 0.0145746748 0.0001015499842 -0.01196038641 0.0003080111969 +0.0145746748 0.009771936285 -6.767726455e-05 0.004930763675 0.0004566575319 +0.0001015499842 -6.767726455e-05 -0.01014187502 0.0004347201626 0.004590650423 +-0.01196038641 0.004930763675 0.0004347201626 -0.004369004037 -0.0001742636214 +0.0003080111969 0.0004566575319 0.004590650423 -0.0001742636214 0.0059384374 +8.135210349e-05 0.003381648065 -3.716872034e-05 -0.002340765035 0.0001230648301 +0.003381648065 0.002486258136 -4.949472566e-05 0.001105861041 0.0001343560878 +-3.716872034e-05 -4.949472566e-05 -0.002221820569 1.934937188e-05 0.0004812383707 +-0.002340765035 0.001105861041 1.934937188e-05 -0.00168408731 4.946133481e-05 +0.0001230648301 0.0001343560878 0.0004812383707 4.946133481e-05 0.002708577118 +-0.01434215032 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.0006135991975 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.002841622854 0.00725789183 7.752145183e-05 0 0 +0.00725789183 -0.003135416199 1.991649618e-05 0 0 +7.752145183e-05 1.991649618e-05 -0.003729976261 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.0001141595404 -0.005318515732 9.408992403e-06 0 0 +-0.005318515732 -0.0005797241556 -1.724367684e-05 0 0 +9.408992403e-06 -1.724367684e-05 -0.0004081282578 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.005902883816 -0.05504058542 0.000113367823 -0.007172296554 -0.0002264179792 +-0.05504058542 -0.007449742536 -0.0002758327929 0.03835393556 -4.179853897e-05 +0.000113367823 -0.0002758327929 -0.003972406825 -5.131576087e-05 0.03901493326 +-0.007172296554 0.03835393556 -5.131576087e-05 0.00585054272 -4.095878451e-06 +-0.0002264179792 -4.179853897e-05 0.03901493326 -4.095878451e-06 -0.002867189489 +0.0004414443785 -0.01086035817 1.598639558e-05 -0.001385369964 -4.37023312e-05 +-0.01086035817 -0.001176453915 -5.32176309e-05 0.008019401241 -1.144868934e-05 +1.598639558e-05 -5.32176309e-05 -0.0004503226898 -1.318346967e-05 0.008182060179 +-0.001385369964 0.008019401241 -1.318346967e-05 0.001516732322 -1.116775725e-06 +-4.37023312e-05 -1.144868934e-05 0.008182060179 -1.116775725e-06 -0.000890253564 +0.7422510548 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.01047440296 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.08930102086 0.0102636966 8.924637279e-06 0 0 +0.0102636966 0.07760679337 -0.000187084664 0 0 +8.924637279e-06 -0.000187084664 0.08105049435 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.01528728471 -0.008310270821 1.881609406e-06 0 0 +-0.008310270821 -0.01156657432 -5.189615697e-05 0 0 +1.881609406e-06 -5.189615697e-05 0.01735851316 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.02183956123 0.03091909366 1.570459687e-05 -0.007983657868 8.31969743e-05 +0.03091909366 0.03931773684 -1.78679171e-05 -0.01484287005 2.013708766e-05 +1.570459687e-05 -1.78679171e-05 0.007412780577 -1.610292577e-05 0.02142781388 +-0.007983657868 -0.01484287005 -1.610292577e-05 -8.089656104e-05 -5.289660518e-05 +8.31969743e-05 2.013708766e-05 0.02142781388 -5.289660518e-05 0.05737392458 +0.004398136933 0.008799255405 4.919154537e-06 0.0003369317128 2.451730394e-05 +0.008799255405 0.005161749856 -3.586886461e-06 -0.007491447953 1.565893544e-06 +4.919154537e-06 -3.586886461e-06 0.001749088469 -5.122893761e-06 0.004975855348 +0.0003369317128 -0.007491447953 -5.122893761e-06 -0.005464689256 -2.073444313e-05 +2.451730394e-05 1.565893544e-06 0.004975855348 -2.073444313e-05 0.01260637269 +-0.3623937084 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.0004460780824 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.05046517146 -0.009579899701 0.002708951778 0 0 +-0.009579899701 -0.01887733619 0.02453408307 0 0 +0.002708951778 0.02453408307 -0.05447630794 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.007543494795 -0.002921702524 -0.004840490668 0 0 +-0.002921702524 -0.004669954638 0.007451055897 0 0 +-0.004840490668 0.007451055897 0.002658285555 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.01485513219 0.004768710031 0.01983497453 -0.01277843938 -0.002606093224 +0.004768710031 0.002393238702 0.001728081026 0.01170424088 0.00740684671 +0.01983497453 0.001728081026 -0.0245855996 0.004836294365 -0.01396711096 +-0.01277843938 0.01170424088 0.004836294365 -0.01086534499 -0.02174205792 +-0.002606093224 0.00740684671 -0.01396711096 -0.02174205792 -0.01725459188 +-0.003064857847 0.0003760829447 0.004760617249 -0.00217942067 -0.0007772256443 +0.0003760829447 0.001080266566 0.00128865759 0.002942736098 0.002601181766 +0.004760617249 0.00128865759 -0.00372946661 0.003555910053 -0.003384041315 +-0.00217942067 0.002942736098 0.003555910053 0.001821739244 -0.006435613949 +-0.0007772256443 0.002601181766 -0.003384041315 -0.006435613949 -0.00548557007 +-0.3607107397 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.003205785842 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.05440928919 -0.01149204293 0.001679923084 0 0 +-0.01149204293 -0.02301076923 -0.02897352035 0 0 +0.001679923084 -0.02897352035 -0.04933801951 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.007729272494 -0.002746908701 0.005300794382 0 0 +-0.002746908701 -0.0059263436 -0.006972849095 0 0 +0.005300794382 -0.006972849095 0.003310385315 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.01665246495 0.004769874675 -0.02261917451 -0.01352077009 0.002785575179 +0.004769874675 0.002899246993 -0.002837859538 0.01361437579 -0.00932718279 +-0.02261917451 -0.002837859538 -0.02533971161 -0.007951892191 -0.01612526107 +-0.01352077009 0.01361437579 -0.007951892191 -0.008227256325 0.02587505213 +0.002785575179 -0.00932718279 -0.01612526107 0.02587505213 -0.02105774168 +-0.003353138881 -2.109579822e-05 -0.004694750129 -0.002470492585 0.0004923005953 +-2.109579822e-05 0.001189774081 -0.001425696087 0.002892365086 -0.003357451269 +-0.004694750129 -0.001425696087 -0.003832886858 -0.003929885296 -0.002972917572 +-0.002470492585 0.002892365086 -0.003929885296 0.002743526796 0.006494184742 +0.0004923005953 -0.003357451269 -0.002972917572 0.006494184742 -0.00694410955 +0.003051358242 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.0001973016416 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.009632835348 -0.1167351572 3.99623178e-05 0 0 +-0.1167351572 -0.0016132222 -0.0006392255216 0 0 +3.99623178e-05 -0.0006392255216 1.488344347e-07 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.000232202022 -0.00539060082 1.557002606e-06 0 0 +-0.00539060082 4.039195953e-05 -5.707639733e-05 0 0 +1.557002606e-06 -5.707639733e-05 6.938537047e-09 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.001577391203 -0.01795785673 1.343371126e-06 -0.0003317529187 -4.524144282e-05 +-0.01795785673 -0.001738471916 3.47551481e-05 -0.0004886840975 -0.0001289321866 +1.343371126e-06 3.47551481e-05 -1.10049227e-08 7.5289416e-07 1.177932852e-07 +-0.0003317529187 -0.0004886840975 7.5289416e-07 -1.847358055e-05 -3.807935884e-06 +-4.524144282e-05 -0.0001289321866 1.177932852e-07 -3.807935884e-06 -7.13848327e-07 +0.0002167631708 -0.003801680843 2.250406111e-07 -7.191479219e-05 -1.016602909e-05 +-0.003801680843 -0.0003542855086 3.330257686e-06 -9.529731609e-05 -2.074999541e-05 +2.250406111e-07 3.330257686e-06 -5.5640883e-10 7.261548463e-08 1.105528097e-08 +-7.191479219e-05 -9.529731609e-05 7.261548463e-08 -3.595721397e-06 -6.556047012e-07 +-1.016602909e-05 -2.074999541e-05 1.105528097e-08 -6.556047012e-07 -1.142915096e-07 +0.01460468264 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.0007112690982 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.003964669799 0.009238484715 -0.0002530024418 0 0 +0.009238484715 0.01975302543 -0.0002197332696 0 0 +-0.0002530024418 -0.0002197332696 -0.01008614286 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.0004849039137 0.009369212501 -5.361686252e-05 0 0 +0.009369212501 0.005003269498 -4.061434719e-05 0 0 +-5.361686252e-05 -4.061434719e-05 -0.003230783929 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.006593694587 0.06262914665 -0.0002394783489 0.008001957326 0.0002527769773 +0.06262914665 0.02097181101 0.0001406046124 -0.03955385483 0.0001374847662 +-0.0002394783489 0.0001406046124 -0.007938057457 0.0001081141025 -0.04140763609 +0.008001957326 -0.03955385483 0.0001081141025 -0.006119575669 1.023025354e-05 +0.0002527769773 0.0001374847662 -0.04140763609 1.023025354e-05 0.003059910867 +-0.0007402852236 0.01298352322 -5.600147986e-05 0.001963900228 4.351869789e-05 +0.01298352322 0.004979920039 1.241957221e-05 -0.008355510227 3.929754085e-05 +-5.600147986e-05 1.241957221e-05 -0.002874056976 2.990858921e-05 -0.008877699587 +0.001963900228 -0.008355510227 2.990858921e-05 -0.001618362211 3.153601528e-06 +4.351869789e-05 3.929754085e-05 -0.008877699587 3.153601528e-06 0.0009760308204 +-0.01319353149 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.0006277859927 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.01423031708 0.001005495612 4.886066298e-05 0 0 +0.001005495612 -0.00137703659 1.084781266e-05 0 0 +4.886066298e-05 1.084781266e-05 1.299977572e-07 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.004444852555 0.0005354449964 1.504957793e-05 0 0 +0.0005354449964 -0.0002086101912 3.555322758e-06 0 0 +1.504957793e-05 3.555322758e-06 3.983949852e-08 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.003690912774 0.004351835041 1.00233986e-05 -0.0006833697747 1.950311784e-05 +0.004351835041 0.004872680787 1.240574174e-05 -0.000521074154 1.944636388e-05 +1.00233986e-05 1.240574174e-05 2.588499483e-08 -2.5029521e-06 6.103275999e-08 +-0.0006833697747 -0.000521074154 -2.5029521e-06 -0.0001870422874 2.984918976e-07 +1.950311784e-05 1.944636388e-05 6.103275999e-08 2.984918976e-07 5.431387555e-08 +0.001186470446 0.00144729462 3.276374664e-06 -0.0001771315223 6.532829651e-06 +0.00144729462 0.001625375049 4.205543728e-06 -0.0001216495532 6.368806745e-06 +3.276374664e-06 4.205543728e-06 8.735954607e-09 -6.299588494e-07 2.042651901e-08 +-0.0001771315223 -0.0001216495532 -6.299588494e-07 -3.719969323e-05 1.032680895e-07 +6.532829651e-06 6.368806745e-06 2.042651901e-08 1.032680895e-07 1.769195102e-08 +0.006787487168 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.0004063090445 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.008069778455 -0.003239008472 0.001822657746 0 0 +-0.003239008472 -0.0007435144183 -0.0002443810973 0 0 +0.001822657746 -0.0002443810973 0.001299751727 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.002469212003 -0.0009674966559 0.0007154849061 0 0 +-0.0009674966559 -0.0001183027418 -3.792486572e-05 0 0 +0.0007154849061 -3.792486572e-05 0.0001811024372 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.002491403459 -0.0001602097904 0.002890671887 0.0007024505782 0.001148002556 +-0.0001602097904 0.001143899092 0.0001185690051 -0.0008459369822 -1.186788491e-05 +0.002890671887 0.0001185690051 -0.003350000437 -0.0007630526786 -0.001326981997 +0.0007024505782 -0.0008459369822 -0.0007630526786 0.0004899295738 -0.0002575213759 +0.001148002556 -1.186788491e-05 -0.001326981997 -0.0002575213759 -0.0005226211022 +-0.0007685350856 -4.136380904e-05 0.0009346843212 0.0002446575498 0.0003285352167 +-4.136380904e-05 0.0004185342529 6.800344208e-05 -0.0002714849388 -4.903694097e-05 +0.0009346843212 6.800344208e-05 -0.001136008936 -0.0003095224622 -0.0004023673043 +0.0002446575498 -0.0002714849388 -0.0003095224622 0.0001146882983 -5.944990968e-05 +0.0003285352167 -4.903694097e-05 -0.0004023673043 -5.944990968e-05 -0.0001298634699 +0.0071181525 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.0004650234534 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.008786551273 -0.003681537451 -0.001940179258 0 0 +-0.003681537451 -0.000876192907 0.0002860473493 0 0 +-0.001940179258 0.0002860473493 0.001384042446 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.002655695085 -0.00108103328 -0.0007765340026 0 0 +-0.00108103328 -0.0001255253453 3.356047841e-05 0 0 +-0.0007765340026 3.356047841e-05 0.0001616577695 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.00277887873 -0.0002391520967 -0.003169011103 0.0007698991086 -0.001303888103 +-0.0002391520967 0.001320182127 -0.000218404108 -0.0009230929376 -7.795400938e-07 +-0.003169011103 -0.000218404108 -0.003611713966 0.0008379017699 -0.001482428665 +0.0007698991086 -0.0009230929376 0.0008379017699 0.0005167395789 0.0002790200456 +-0.001303888103 -7.795400938e-07 -0.001482428665 0.0002790200456 -0.000602540698 +-0.0008330687232 -5.812968847e-05 -0.001006832189 0.0002660682812 -0.0003561162523 +-5.812968847e-05 0.0004786613174 -0.0001049452684 -0.0002871202767 5.976734617e-05 +-0.001006832189 -0.0001049452684 -0.001214346585 0.0003435337229 -0.000436476831 +0.0002660682812 -0.0002871202767 0.0003435337229 0.0001086010589 6.015340758e-05 +-0.0003561162523 5.976734617e-05 -0.000436476831 6.015340758e-05 -0.00013739834 +-0.0978749605 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.01316487075 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.03939202273 -0.0915488962 0.0003350137738 0 0 +-0.0915488962 -0.2051693551 0.0006464825943 0 0 +0.0003350137738 0.0006464825943 -5.512307504e-07 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.00164618274 -0.003497475003 1.986564565e-05 0 0 +-0.003497475003 -0.007015526448 3.294636457e-05 0 0 +1.986564565e-05 3.294636457e-05 -3.320516381e-08 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.001588839658 0.003888321774 -1.670916701e-05 0.004188515594 1.207384275e-05 +0.003888321774 -0.007037713025 5.886316275e-05 -0.008703522498 -5.098434759e-05 +-1.670916701e-05 5.886316275e-05 -4.539286799e-08 5.526731193e-05 -2.848419306e-08 +0.004188515594 -0.008703522498 5.526731193e-05 -0.01007616153 -4.521067002e-05 +1.207384275e-05 -5.098434759e-05 -2.848419306e-08 -4.521067002e-05 9.36832583e-08 +-0.0002050705574 0.0007734477463 -1.910301803e-06 0.0006977069205 8.479684313e-07 +0.0007734477463 -0.001674703338 1.057337177e-05 -0.001936137315 -8.012829017e-06 +-1.910301803e-06 1.057337177e-05 -8.662789851e-09 8.384557643e-06 -5.153981019e-09 +0.0006977069205 -0.001936137315 8.384557643e-06 -0.001984635324 -5.579568865e-06 +8.479684313e-07 -8.012829017e-06 -5.153981019e-09 -5.579568865e-06 1.515081824e-08 +0.0139066722 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.001578721016 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.001468947188 -0.01168536759 6.468147061e-05 0 0 +-0.01168536759 -0.008883555301 5.151066507e-06 0 0 +6.468147061e-05 5.151066507e-06 2.382089745e-07 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.001889276165 -0.003398515353 1.392733595e-05 0 0 +-0.003398515353 -0.002247314789 2.533855167e-07 0 0 +1.392733595e-05 2.533855167e-07 5.641316531e-08 0 0 +0 0 0 0 0 +0 0 0 0 0 +9.363763338e-05 -0.004999722471 3.072987625e-05 -0.0003722864166 -1.451566201e-05 +-0.004999722471 -0.009222399887 1.123199779e-05 -0.0008811361419 -2.166522387e-05 +3.072987625e-05 1.123199779e-05 2.028455141e-07 1.999339984e-06 2.042420574e-09 +-0.0003722864166 -0.0008811361419 1.999339984e-06 -8.022453968e-05 -2.174093446e-06 +-1.451566201e-05 -2.166522387e-05 2.042420574e-09 -2.174093446e-06 -4.815890632e-08 +-0.0005556327628 -0.001687772575 6.520661381e-06 -0.0001561508704 -4.661300324e-06 +-0.001687772575 -0.002531139642 1.781898318e-06 -0.0002356749669 -5.983096163e-06 +6.520661381e-06 1.781898318e-06 4.86515121e-08 1.752531165e-07 -2.074779432e-09 +-0.0001561508704 -0.0002356749669 1.752531165e-07 -2.194199976e-05 -5.582640085e-07 +-4.661300324e-06 -5.983096163e-06 -2.074779432e-09 -5.582640085e-07 -1.33508426e-08 +-0.7032312922 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.01209572718 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.1036717094 -0.005122655589 -0.0001227101671 0 0 +-0.005122655589 -0.08124831699 0.0005354106286 0 0 +-0.0001227101671 0.0005354106286 -0.0980038953 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.01977227147 0.009513006191 -3.173782122e-05 0 0 +0.009513006191 0.009439711961 0.0001563475147 0 0 +-3.173782122e-05 0.0001563475147 -0.02257141393 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.0278934946 -0.03708321133 -5.161169518e-05 0.009753463494 -0.000248404876 +-0.03708321133 -0.0442806435 3.375452118e-06 0.01623329796 -9.31759194e-05 +-5.161169518e-05 3.375452118e-06 -0.007378416037 4.416526462e-05 -0.02299960265 +0.009753463494 0.01623329796 4.416526462e-05 -0.0002306735956 0.0001766943288 +-0.000248404876 -9.31759194e-05 -0.02299960265 0.0001766943288 -0.06939288973 +-0.006437624258 -0.01079652689 -1.602625427e-05 0.0002757555553 -7.710088956e-05 +-0.01079652689 -0.006814644087 -1.188628807e-06 0.007866296176 -2.130974765e-05 +-1.602625427e-05 -1.188628807e-06 -0.001737874734 1.365589474e-05 -0.005482782569 +0.0002757555553 0.007866296176 1.365589474e-05 0.005281772284 6.22931001e-05 +-7.710088956e-05 -2.130974765e-05 -0.005482782569 6.22931001e-05 -0.01660557324 +0.01282645885 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.0005659372887 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +9.092570704e-05 -0.003072353533 -0.002533117018 0 0 +-0.003072353533 -0.01181400265 -0.002947729467 0 0 +-0.002533117018 -0.002947729467 0.002771132823 0 0 +0 0 0 0 0 +0 0 0 0 0 +2.472973355e-05 -0.0008201994271 -0.0006864529675 0 0 +-0.0008201994271 -0.003755940579 -0.001214273314 0 0 +-0.0006864529675 -0.001214273314 0.000478130903 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.001326683768 -0.0001036346914 0.001047507631 0.001783764684 0.002398208398 +-0.0001036346914 -5.223868793e-06 3.167490426e-05 8.510043362e-05 0.0001833312582 +0.001047507631 3.167490426e-05 4.880419659e-05 -0.0004611321461 -0.001823582491 +0.001783764684 8.510043362e-05 -0.0004611321461 -0.001373843482 -0.003148790677 +0.002398208398 0.0001833312582 -0.001823582491 -0.003148790677 -0.004329583795 +-0.0004736176122 -4.710708765e-05 0.0003014613666 0.0005553971907 0.0008551442742 +-4.710708765e-05 -2.518845356e-06 8.846774352e-06 3.190631639e-05 8.346086115e-05 +0.0003014613666 8.846774352e-06 1.433807218e-05 -0.0001258547692 -0.0005287571872 +0.0005553971907 3.190631639e-05 -0.0001258547692 -0.0003999694834 -0.0009856366423 +0.0008551442742 8.346086115e-05 -0.0005287571872 -0.0009856366423 -0.001542840576 +0.01384999961 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.0007379273084 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +6.202304063e-05 -0.00350436529 0.002796148849 0 0 +-0.00350436529 -0.01331792329 0.003312078534 0 0 +0.002796148849 0.003312078534 0.002940260787 0 0 +0 0 0 0 0 +0 0 0 0 0 +1.634837214e-05 -0.0009073919907 0.000735144358 0 0 +-0.0009073919907 -0.004184973234 0.00137918771 0 0 +0.000735144358 0.00137918771 0.0004380070246 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.00151788044 -0.0001114191075 -0.001175787422 0.002006002079 -0.002713545328 +-0.0001114191075 -3.742918326e-06 -2.16134502e-05 7.936578564e-05 -0.000194785486 +-0.001175787422 -2.16134502e-05 3.276610954e-05 0.000563826338 -0.00203779539 +0.002006002079 7.936578564e-05 0.000563826338 -0.001612217346 0.003518822917 +-0.002713545328 -0.000194785486 -0.00203779539 0.003518822917 -0.004846693528 +-0.0005368233992 -5.275678537e-05 -0.0003246317501 0.0006085731598 -0.0009598793125 +-5.275678537e-05 -1.853618516e-06 -5.736597062e-06 3.18208356e-05 -9.264458757e-05 +-0.0003246317501 -5.736597062e-06 9.235547518e-06 0.0001481721301 -0.0005672023908 +0.0006085731598 3.18208356e-05 0.0001481721301 -0.0004547698565 0.001073987646 +-0.0009598793125 -9.264458757e-05 -0.0005672023908 0.001073987646 -0.001715478313 +0.05344704517 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.006484969473 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.02495367737 -0.001680719325 -0.05678138574 0 0 +-0.001680719325 -0.03023281469 0.007703604303 0 0 +-0.05678138574 0.007703604303 0.1287085537 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.001000410141 0.0003232707179 -0.002236010266 0 0 +0.0003232707179 -0.001888980897 -0.0004664461707 0 0 +-0.002236010266 -0.0004664461707 0.004964792172 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.000456750041 -0.0001963200378 0.002323577899 0.003920882443 0.0004578664896 +-0.0001963200378 -0.0004356753165 0.0008956581319 0.002045700486 0.00107752516 +0.002323577899 0.0008956581319 0.004919986034 0.006355754777 -0.002312637363 +0.003920882443 0.002045700486 0.006355754777 0.006891494445 -0.005211736548 +0.0004578664896 0.00107752516 -0.002312637363 -0.005211736548 -0.002663562203 +-2.049415301e-05 -0.0001522714584 0.0004120771432 0.0008593512076 0.0003685723379 +-0.0001522714584 -0.0002048174292 0.0001098040228 0.0004641793156 0.0005036691916 +0.0004120771432 0.0001098040228 0.001118896727 0.001584061465 -0.0002909792815 +0.0008593512076 0.0004641793156 0.001584061465 0.001800521079 -0.001174086777 +0.0003685723379 0.0005036691916 -0.0002909792815 -0.001174086777 -0.001238206459 +-0.00696663245 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.0008231750485 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.001275481798 -0.002376200851 -0.005460316304 0 0 +-0.002376200851 -0.003717882318 -0.00141331246 0 0 +-0.005460316304 -0.00141331246 0.006894813713 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.001110497448 -0.0003326779362 -0.001705960885 0 0 +-0.0003326779362 -0.001047522584 -0.0004481343407 0 0 +-0.001705960885 -0.0004481343407 0.001818702487 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.0003022657103 -0.001257786652 -0.00264414612 -0.0002214789059 9.284020179e-06 +-0.001257786652 -0.002041710146 -0.0001902651681 0.001032415232 0.0007651791171 +-0.00264414612 -0.0001902651681 0.005910483158 0.002107899328 0.001155400722 +-0.0002214789059 0.001032415232 0.002107899328 0.0001605967402 -1.904370557e-05 +9.284020179e-06 0.0007651791171 0.001155400722 -1.904370557e-05 -8.852027171e-05 +0.0004179112427 -0.0002154454088 -0.0009438433367 -0.000206363308 -7.696149551e-05 +-0.0002154454088 -0.0006053124648 -0.0001007476311 0.0002842773125 0.000237010582 +-0.0009438433367 -0.0001007476311 0.00165012865 0.0006119113137 0.000335601104 +-0.000206363308 0.0002842773125 0.0006119113137 5.772784557e-05 -1.099861216e-05 +-7.696149551e-05 0.000237010582 0.000335601104 -1.099861216e-05 -4.018489311e-05 +-0.01249355754 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.0004596431505 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +8.561801537e-05 -0.00299028221 -0.002437109195 0 0 +-0.00299028221 0.00238704501 0.00619225925 0 0 +-0.002437109195 0.00619225925 0.008331202795 0 0 +0 0 0 0 0 +0 0 0 0 0 +2.452213671e-05 -0.0008486457515 -0.0006996560425 0 0 +-0.0008486457515 0.001119458607 0.00204508682 0 0 +-0.0006996560425 0.00204508682 0.002566626103 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.001143199762 0.0008861615839 -0.0004465356276 -0.0005150646483 -0.002682571891 +0.0008861615839 5.484911631e-05 5.411700371e-06 -0.0004122007256 -0.00156617716 +-0.0004465356276 5.411700371e-06 -2.110900098e-05 0.0002083842035 0.0007623576638 +-0.0005150646483 -0.0004122007256 0.0002083842035 0.000231795506 0.001219133761 +-0.002682571891 -0.00156617716 0.0007623576638 0.001219133761 0.005878024467 +0.0004136478789 0.00026990808 -0.0001428593253 -0.0002075212268 -0.0009212612589 +0.00026990808 1.676208582e-05 1.448711787e-06 -0.0001206521659 -0.0004801116815 +-0.0001428593253 1.448711787e-06 -6.89784116e-06 6.290410511e-05 0.0002462799695 +-0.0002075212268 -0.0001206521659 6.290410511e-05 0.0001027438913 0.0004509769113 +-0.0009212612589 -0.0004801116815 0.0002462799695 0.0004509769113 0.001959895508 +0.3426463083 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.0005323739912 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.05844361309 0.01428480527 -0.001942927746 0 0 +0.01428480527 0.03538122277 -0.02333668144 0 0 +-0.001942927746 -0.02333668144 0.05053923943 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.009987865795 0.00425835808 0.004826476809 0 0 +0.00425835808 0.009638728768 -0.006925969304 0 0 +0.004826476809 -0.006925969304 -0.003270051035 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.01868778331 -0.004517577898 -0.02377876452 0.01033556157 -7.414417467e-05 +-0.004517577898 -0.003523614721 -0.001876011254 -0.01098507318 -0.008707860416 +-0.02377876452 -0.001876011254 0.02788657083 -0.003632352337 0.01643892455 +0.01033556157 -0.01098507318 -0.003632352337 0.01187294248 0.02721208017 +-7.414417467e-05 -0.008707860416 0.01643892455 0.02721208017 0.0236764908 +0.004312126136 -0.0002915892123 -0.005998236999 0.001394546493 -8.588195604e-05 +-0.0002915892123 -0.001493708162 -0.001364863437 -0.002716122532 -0.002985793329 +-0.005998236999 -0.001364863437 0.004851076656 -0.00312603262 0.004125073602 +0.001394546493 -0.002716122532 -0.00312603262 -0.001494018392 0.008205497947 +-8.588195604e-05 -0.002985793329 0.004125073602 0.008205497947 0.007581570622 +-0.0001348710844 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +7.129399411e-06 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +4.380577884e-07 0.001711731209 -5.9731615e-05 0 0 +0.001711731209 -0.004191963313 -0.001983036109 0 0 +-5.9731615e-05 -0.001983036109 0.0001428249209 0 0 +0 0 0 0 0 +0 0 0 0 0 +1.155529577e-07 0.0004684013918 -1.578027854e-05 0 0 +0.0004684013918 -0.001132963566 -0.0007381131645 0 0 +-1.578027854e-05 -0.0007381131645 5.070225812e-05 0 0 +0 0 0 0 0 +0 0 0 0 0 +1.563092541e-05 -1.356027656e-05 6.195787053e-06 4.631525907e-05 0.0009152854106 +-1.356027656e-05 8.834710988e-06 -2.825217905e-06 -4.433743935e-05 -0.001196316746 +6.195787053e-06 -2.825217905e-06 2.363499126e-07 2.197754271e-05 0.0007129750642 +4.631525907e-05 -4.433743935e-05 2.197754271e-05 0.0001313333901 0.002141057441 +0.0009152854106 -0.001196316746 0.0007129750642 0.002141057441 -0.001651143918 +5.458447838e-06 -4.147521984e-06 1.571561407e-06 1.610278365e-05 0.0003385611929 +-4.147521984e-06 2.657970514e-06 -7.54328133e-07 -1.343611095e-05 -0.0003600596601 +1.571561407e-06 -7.54328133e-07 6.050185079e-08 5.706287095e-06 0.000189104882 +1.610278365e-05 -1.343611095e-05 5.706287095e-06 4.458299176e-05 0.0007486338532 +0.0003385611929 -0.0003600596601 0.000189104882 0.0007486338532 -0.0004200234766 +0.05685913206 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.006427655725 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.02617859268 -0.0006574796284 0.05897770952 0 0 +-0.0006574796284 -0.03445659322 -0.005673060985 0 0 +0.05897770952 -0.005673060985 0.1323610738 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.001020738041 0.0004543677405 0.002245235359 0 0 +0.0004543677405 -0.002186211164 0.0006983714611 0 0 +0.002245235359 0.0006983714611 0.004900714596 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.0003663574549 -0.0003088198114 -0.002409762087 0.004182741288 -0.0007327100865 +-0.0003088198114 -0.0005600760277 -0.0009215991783 0.002215742434 -0.001354266157 +-0.002409762087 -0.0009215991783 0.005221945383 -0.006846495146 -0.002278102369 +0.004182741288 0.002215742434 -0.006846495146 0.007572144698 0.005435018775 +-0.0007327100865 -0.001354266157 -0.002278102369 0.005435018775 -0.003274255033 +-7.255056387e-05 -0.0002011435096 -0.0003732231617 0.000855621699 -0.0004823191073 +-0.0002011435096 -0.0002524518601 -7.421292662e-05 0.0004613942746 -0.0006092624549 +-0.0003732231617 -7.421292662e-05 0.001102933061 -0.00161186801 -0.0001902649905 +0.000855621699 0.0004613942746 -0.00161186801 0.001871797277 0.001130860615 +-0.0004823191073 -0.0006092624549 -0.0001902649905 0.001130860615 -0.001470271519 +-0.007202572067 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.0008532158683 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.001316512335 -0.00243480811 0.005571115823 0 0 +-0.00243480811 -0.004016171615 0.001607978167 0 0 +0.005571115823 0.001607978167 0.006921067197 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.00114952309 -0.0003195034803 0.001736241419 0 0 +-0.0003195034803 -0.00112870797 0.0005057389792 0 0 +0.001736241419 0.0005057389792 0.001820153286 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.0002949074271 -0.001331052114 0.00273952677 -0.000235895449 -2.112735633e-05 +-0.001331052114 -0.002257958442 0.0003142613508 0.001048640178 -0.0008392001205 +0.00273952677 0.0003142613508 0.005999778278 -0.00216669701 0.001237300072 +-0.000235895449 0.001048640178 -0.00216669701 0.0001886607488 1.508342393e-05 +-2.112735633e-05 -0.0008392001205 0.001237300072 1.508342393e-05 -0.0001041529471 +0.0004365623653 -0.0002199470631 0.0009773377596 -0.0002160160853 8.180642914e-05 +-0.0002199470631 -0.0006670140172 0.0001397637914 0.0002875066406 -0.0002588763373 +0.0009773377596 0.0001397637914 0.001674202364 -0.0006288116864 0.0003600403791 +-0.0002160160853 0.0002875066406 -0.0006288116864 6.584404248e-05 9.520050363e-06 +8.180642914e-05 -0.0002588763373 0.0003600403791 9.520050363e-06 -4.557901246e-05 +-0.01333267353 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.0005338950753 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +5.475344618e-05 -0.003156254415 0.002502034061 0 0 +-0.003156254415 0.002631515202 -0.006551433027 0 0 +0.002502034061 -0.006551433027 0.008622068163 0 0 +0 0 0 0 0 +0 0 0 0 0 +1.561207317e-05 -0.0008895346153 0.0007144626764 0 0 +-0.0008895346153 0.001216013947 -0.002153093501 0 0 +0.0007144626764 -0.002153093501 0.002646234825 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.00121982083 0.0009261210441 0.0004724193273 -0.0005713712035 0.002828276675 +0.0009261210441 3.537675841e-05 -3.324977128e-06 -0.0004571530303 0.001619769628 +0.0004724193273 -3.324977128e-06 -1.328142413e-05 -0.0002339435902 0.0008093700774 +-0.0005713712035 -0.0004571530303 -0.0002339435902 0.000266816938 -0.001343229977 +0.002828276675 0.001619769628 0.0008093700774 -0.001343229977 0.00614088637 +0.0004393689994 0.0002800687813 0.0001506900504 -0.0002280345191 0.0009673120149 +0.0002800687813 1.075709539e-05 -8.78740246e-07 -0.0001325465037 0.0004934867289 +0.0001506900504 -8.78740246e-07 -4.324629326e-06 -7.080714724e-05 0.0002606268251 +-0.0002280345191 -0.0001325465037 -7.080714724e-05 0.0001173727739 -0.0004926388363 +0.0009673120149 0.0004934867289 0.0002606268251 -0.0004926388363 0.002039287346 +0.0001334541053 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +-6.205740446e-06 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +4.111165897e-07 0.001606456438 -5.556476042e-05 0 0 +0.001606456438 -0.003946369509 0.001994708939 0 0 +-5.556476042e-05 0.001994708939 -0.0001338160418 0 0 +0 0 0 0 0 +0 0 0 0 0 +1.112701483e-07 0.0004510405274 -1.501807989e-05 0 0 +0.0004510405274 -0.001094530809 0.0007271115858 0 0 +-1.501807989e-05 0.0007271115858 -4.746786098e-05 0 0 +0 0 0 0 0 +0 0 0 0 0 +-1.456389561e-05 1.271234878e-05 5.610469781e-06 -4.333745702e-05 -0.0008659735565 +1.271234878e-05 -8.299204547e-06 -2.313680727e-06 4.166885482e-05 0.001129550332 +5.610469781e-06 -2.313680727e-06 2.250046027e-07 2.024279637e-05 0.0006787508919 +-4.333745702e-05 4.166885482e-05 2.024279637e-05 -0.0001236835859 -0.002063710205 +-0.0008659735565 0.001129550332 0.0006787508919 -0.002063710205 -0.00156969402 +-5.115590855e-06 3.977164311e-06 1.474063093e-06 -1.518056356e-05 -0.0003205718905 +3.977164311e-06 -2.573811388e-06 -6.443690743e-07 1.296505668e-05 0.0003501876428 +1.474063093e-06 -6.443690743e-07 6.081776062e-08 5.499798239e-06 0.0001900922049 +-1.518056356e-05 1.296505668e-05 5.499798239e-06 -4.24396667e-05 -0.0007247974454 +-0.0003205718905 0.0003501876428 0.0001900922049 -0.0007247974454 -0.0004232965069 +0.3398774587 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.002009964479 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.06313337936 0.01696621446 -0.002476161059 0 0 +0.01696621446 0.04139684874 0.02735843058 0 0 +-0.002476161059 0.02735843058 0.04487089135 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.01036850365 0.00426693258 -0.005243624459 0 0 +0.00426693258 0.01136980575 0.006298214071 0 0 +-0.005243624459 0.006298214071 -0.003960752368 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.02093359319 -0.004405743194 0.02695777725 0.01069855364 0.0003165728416 +-0.004405743194 -0.004224520913 0.003080702314 -0.01272631119 0.01071906456 +0.02695777725 0.003080702314 0.02891842312 0.00652818654 0.01893251006 +0.01069855364 -0.01272631119 0.00652818654 0.009191400702 -0.03181395253 +0.0003165728416 0.01071906456 0.01893251006 -0.03181395253 0.02815811982 +0.004717572555 0.000136129794 0.006024642508 0.001579748361 0.0004851337766 +0.000136129794 -0.00166923975 0.00153713228 -0.002623629534 0.003750388171 +0.006024642508 0.00153713228 0.005037937394 0.003432473156 0.003787491912 +0.001579748361 -0.002623629534 0.003432473156 -0.00244194099 -0.008376959648 +0.0004851337766 0.003750388171 0.003787491912 -0.008376959648 0.00921700968 +0.005678289085 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.0001311451398 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.0008096479519 -0.002568812645 0.239077149 0 0 +-0.002568812645 0.002792277186 -0.2505909194 0 0 +0.239077149 -0.2505909194 -0.0003108628612 0 0 +0 0 0 0 0 +0 0 0 0 0 +3.0636172e-06 -3.045866882e-05 0.009000874239 0 0 +-3.045866882e-05 1.348940838e-05 -0.009297622856 0 0 +0.009000874239 -0.009297622856 -0.0003868548615 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.0003896166845 8.894821263e-05 0.01383824025 -0.0003000307689 0.0111034738 +8.894821263e-05 0.0002492621825 -0.008480076653 3.125079688e-05 0.006394168116 +0.01383824025 -0.008480076653 0.0001523472704 -0.004379506897 -1.709829659e-05 +-0.0003000307689 3.125079688e-05 -0.004379506897 -0.0003676608441 -0.003036926342 +0.0111034738 0.006394168116 -1.709829659e-05 -0.003036926342 7.065949241e-05 +-0.0001246176381 -3.945617602e-05 0.003513646728 -0.0001283191994 0.001880296565 +-3.945617602e-05 5.386137803e-06 -0.001869006209 -5.577107607e-05 0.0009029059867 +0.003513646728 -0.001869006209 -9.257927965e-05 -0.0004566769075 0.0001689113492 +-0.0001283191994 -5.577107607e-05 -0.0004566769075 -0.0001547893697 -0.00211510554 +0.001880296565 0.0009029059867 0.0001689113492 -0.00211510554 -0.00022163303 +-0.002633446556 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +-4.342591322e-06 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.0006106455762 6.775233551e-05 0.006789328884 0 0 +6.775233551e-05 -0.0005333676651 0.0002838780996 0 0 +0.006789328884 0.0002838780996 -0.0005081431271 0 0 +0 0 0 0 0 +0 0 0 0 0 +-9.543602482e-05 8.766582327e-06 -0.005387348001 0 0 +8.766582327e-06 -5.8190062e-05 -8.800018615e-05 0 0 +-0.005387348001 -8.800018615e-05 -9.472530795e-05 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.0001994681063 0.0001013888284 -0.05588545407 0.0002347597419 0.00189787919 +0.0001013888284 -0.0005643194026 -0.00176916442 1.367801841e-05 0.03876737714 +-0.05588545407 -0.00176916442 -0.001142074546 -0.038984082 -1.593715991e-05 +0.0002347597419 1.367801841e-05 -0.038984082 0.0002235126596 0.004365259989 +0.00189787919 0.03876737714 -1.593715991e-05 0.004365259989 0.0002190756403 +-3.385620806e-05 1.494769192e-05 -0.01099972958 4.547093462e-05 0.0002864174571 +1.494769192e-05 -6.368058905e-05 -0.0003678461024 7.218822843e-06 0.008094778326 +-0.01099972958 -0.0003678461024 -0.0001738189291 -0.00819118274 -7.954283269e-06 +4.547093462e-05 7.218822843e-06 -0.00819118274 4.637475811e-05 0.001204446678 +0.0002864174571 0.008094778326 -7.954283269e-06 0.001204446678 4.470104473e-05 +0.0003297547696 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +-7.373850327e-05 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +-4.094983105e-05 -8.428218949e-05 -0.01051706315 0 0 +-8.428218949e-05 -0.0003738562778 -0.03315947195 0 0 +-0.01051706315 -0.03315947195 -9.013136867e-05 0 0 +0 0 0 0 0 +0 0 0 0 0 +-7.821678293e-06 -1.68355303e-05 -0.0008199427023 0 0 +-1.68355303e-05 -8.159417904e-05 -0.002721030027 0 0 +-0.0008199427023 -0.002721030027 -2.217196318e-05 0 0 +0 0 0 0 0 +0 0 0 0 0 +-1.232256621e-05 1.31416099e-05 -0.003818491368 6.765553372e-05 0.01224909561 +1.31416099e-05 -3.628701958e-05 -0.01226760301 -4.822105562e-05 0.00043987879 +-0.003818491368 -0.01226760301 -1.519566687e-06 0.004112054586 -3.622575418e-05 +6.765553372e-05 -4.822105562e-05 0.004112054586 -0.0001469792262 0.007109827577 +0.01224909561 0.00043987879 -3.622575418e-05 0.007109827577 -8.938561468e-05 +-1.555640836e-06 3.299130155e-06 -0.001595574742 1.808525973e-05 0.002286288652 +3.299130155e-06 -8.029615134e-06 -0.002980242851 -1.182002267e-05 0.002000568091 +-0.001595574742 -0.002980242851 -1.08098709e-06 0.002113993604 -1.087526889e-05 +1.808525973e-05 -1.182002267e-05 0.002113993604 -4.177099132e-05 0.004990513741 +0.002286288652 0.002000568091 -1.087526889e-05 0.004990513741 -2.31773964e-05 +-0.6502913699 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.0004679525617 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.09062877121 0.002927585855 -0.005599850004 0 0 +0.002927585855 -0.09001244751 0.008902057533 0 0 +-0.005599850004 0.008902057533 -0.04362497945 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.01355360554 -0.004799722103 -0.008768919507 0 0 +-0.004799722103 -0.009965286277 0.01228963371 0 0 +-0.008768919507 0.01228963371 0.005906085718 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.02661724389 0.01974317252 0.0292468503 0.001432372418 0.01043294067 +0.01974317252 -0.02028404982 -0.01228388951 0.02487391351 -0.001423089581 +0.0292468503 -0.01228388951 -0.01945143334 -0.00289920234 -0.02187713739 +0.001432372418 0.02487391351 -0.00289920234 -0.04687448288 -0.02479967769 +0.01043294067 -0.001423089581 -0.02187713739 -0.02479967769 -0.005232905676 +-0.005489778937 0.00474070318 0.006254525118 0.0005829873723 0.001382427606 +0.00474070318 -0.003455849779 -0.001079064185 0.00550382426 -0.002142747757 +0.006254525118 -0.001079064185 -0.001263448348 -0.0006702978094 -0.006359060939 +0.0005829873723 0.00550382426 -0.0006702978094 -0.00989227829 -0.00480604965 +0.001382427606 -0.002142747757 -0.006359060939 -0.00480604965 0.00287489271 +0.6486826899 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.005567378938 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.09769794229 0.00156266333 -0.01305172623 0 0 +0.00156266333 0.09406299856 0.01890357454 0 0 +-0.01305172623 0.01890357454 0.03692241976 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.01388190257 0.00527784037 -0.009206530519 0 0 +0.00527784037 0.01009085395 0.01275886726 0 0 +-0.009206530519 0.01275886726 -0.005167912048 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.029843041 -0.02251055231 0.03278146697 -0.001709459871 0.01093689925 +-0.02251055231 0.0215631225 -0.01168801954 -0.02815019627 -0.003489894645 +0.03278146697 -0.01168801954 0.01852965423 -0.00312212867 0.02646020447 +-0.001709459871 -0.02815019627 -0.00312212867 0.05181554336 -0.02732227496 +0.01093689925 -0.003489894645 0.02646020447 -0.02732227496 0.002004664777 +0.006012726472 -0.004671345273 0.005799324262 -0.0003039489769 0.001993983468 +-0.004671345273 0.00357338709 -0.001038190306 -0.005343262254 -0.002068076824 +0.005799324262 -0.001038190306 0.001106684605 -0.001383682554 0.005842786382 +-0.0003039489769 -0.005343262254 -0.001383682554 0.01044442246 -0.003819787396 +0.001993983468 -0.002068076824 0.005842786382 -0.003819787396 -0.002582438844 +0.0004399502596 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +2.844730168e-05 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.001388879337 1.838896434e-05 -0.1168569355 0 0 +1.838896434e-05 1.877801689e-07 -0.0008071743378 0 0 +-0.1168569355 -0.0008071743378 -0.001279649633 0 0 +0 0 0 0 0 +0 0 0 0 0 +3.347930061e-05 2.649164633e-07 -0.005392213707 0 0 +2.649164633e-07 -2.45519294e-09 2.020778626e-05 0 0 +-0.005392213707 2.020778626e-05 -0.0001141974626 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.0002274310697 8.353163749e-06 -0.01801559799 5.384835963e-05 -0.000351806913 +8.353163749e-06 2.763347444e-07 -0.0008701798251 2.531982996e-06 -1.701138846e-05 +-0.01801559799 -0.0008701798251 6.930870148e-05 -0.0004722684193 -0.0001259374691 +5.384835963e-05 2.531982996e-06 -0.0004722684193 2.666427471e-06 -8.884051279e-06 +-0.000351806913 -1.701138846e-05 -0.0001259374691 -8.884051279e-06 -4.956374874e-06 +3.125329958e-05 1.046606637e-06 -0.003808907334 1.112884445e-05 -7.446647061e-05 +1.046606637e-06 2.972914198e-08 -0.0001772439853 5.080356801e-07 -3.46740438e-06 +-0.003808907334 -0.0001772439853 6.634565085e-06 -9.189085563e-05 -2.019671168e-05 +1.112884445e-05 5.080356801e-07 -9.189085563e-05 5.18732875e-07 -1.7411558e-06 +-7.446647061e-05 -3.46740438e-06 -2.019671168e-05 -1.7411558e-06 -7.931421338e-07 +0.00206848473 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +7.500119937e-05 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.0007077766051 -0.0002596056949 0.01203732781 0 0 +-0.0002596056949 0.000635234747 -0.01381725369 0 0 +0.01203732781 -0.01381725369 0.0002765926432 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.0001874505155 -5.592827981e-05 0.01008457719 0 0 +-5.592827981e-05 8.033517433e-05 -0.003479160654 0 0 +0.01008457719 -0.003479160654 1.771708084e-05 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.0002092772506 -0.000242187275 0.0655169845 -0.0002729300022 -0.002303933221 +-0.000242187275 0.0006887919393 -0.009813708953 -2.42909395e-05 -0.04061529123 +0.0655169845 -0.009813708953 0.001066879642 0.0406654122 5.814227438e-05 +-0.0002729300022 -2.42909395e-05 0.0406654122 -0.000240425385 -0.004595436656 +-0.002303933221 -0.04061529123 5.814227438e-05 -0.004595436656 -0.0002337543898 +7.556225675e-05 -5.787577026e-05 0.01376875989 -4.940854279e-05 -0.0007091781764 +-5.787577026e-05 9.558545234e-05 -0.002858228553 -1.043736876e-05 -0.008645019475 +0.01376875989 -0.002858228553 0.0001446375309 0.008689664487 2.072803014e-05 +-4.940854279e-05 -1.043736876e-05 0.008689664487 -5.17485117e-05 -0.001297737819 +-0.0007091781764 -0.008645019475 2.072803014e-05 -0.001297737819 -4.980382967e-05 +-2.766900249e-05 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +1.316570337e-06 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +2.984331218e-05 9.133141827e-06 -0.003349397886 0 0 +9.133141827e-06 -6.376783347e-06 0.0008318747658 0 0 +-0.003349397886 0.0008318747658 -3.391471787e-05 0 0 +0 0 0 0 0 +0 0 0 0 0 +9.321585851e-06 3.416348608e-06 -0.001093555892 0 0 +3.416348608e-06 -1.021930274e-06 0.0001393594938 0 0 +-0.001093555892 0.0001393594938 -1.0864183e-05 0 0 +0 0 0 0 0 +0 0 0 0 0 +7.740450299e-06 1.170914145e-05 -0.001231465071 3.011117814e-06 -0.001059541565 +1.170914145e-05 1.767576176e-05 -0.001777833527 4.092342384e-06 -0.001529628318 +-0.001231465071 -0.001777833527 -5.207079312e-06 0.0005869581935 -1.322252598e-05 +3.011117814e-06 4.092342384e-06 0.0005869581935 -4.62872414e-06 0.0005050611619 +-0.001059541565 -0.001529628318 -1.322252598e-05 0.0005050611619 -1.889881772e-05 +2.488223397e-06 3.88728578e-06 -0.0004062899915 1.09479314e-06 -0.0003495680241 +3.88728578e-06 6.073000661e-06 -0.0006352094741 1.712746037e-06 -0.0005465281799 +-0.0004062899915 -0.0006352094741 -1.827498332e-06 0.000154760191 -4.617998963e-06 +1.09479314e-06 1.712746037e-06 0.000154760191 -1.195014214e-06 0.0001331694998 +-0.0003495680241 -0.0005465281799 -4.617998963e-06 0.0001331694998 -6.593858816e-06 +0.01258322392 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.0007532504386 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.01496044512 0.001731511396 -0.000794000222 0 0 +0.001731511396 0.0007685879397 0.0007832645608 0 0 +-0.000794000222 0.0007832645608 0.0004511447051 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.004577636283 0.0006944269727 -1.564879348e-05 0 0 +0.0006944269727 0.0001132809884 0.000105852522 0 0 +-1.564879348e-05 0.000105852522 4.89244202e-05 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.004618776701 0.002918147611 0.003624693725 -0.001078492973 0.0005635398379 +0.002918147611 -0.00184258399 -0.002314068581 0.0006821101657 -0.0003766326484 +0.003624693725 -0.002314068581 -0.00232377933 0.0008307980748 4.793258461e-06 +-0.001078492973 0.0006821101657 0.0008307980748 -0.0002513643416 0.0001182182142 +0.0005635398379 -0.0003766326484 4.793258461e-06 0.0001182182142 0.00031498773 +-0.001424776037 0.0009441526403 0.001182150732 -0.0003023404476 0.0001122548225 +0.0009441526403 -0.0006248768645 -0.0007694307361 0.0002013518487 -6.666320287e-05 +0.001182150732 -0.0007694307361 -0.0007323748203 0.0002686885918 4.452136999e-05 +-0.0003023404476 0.0002013518487 0.0002686885918 -6.287725714e-05 3.370127542e-05 +0.0001122548225 -6.666320287e-05 4.452136999e-05 3.370127542e-05 6.742472682e-05 +-0.01329347856 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.0008684527776 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.01640929033 -0.001787153574 -0.001015115885 0 0 +-0.001787153574 -0.000851718558 0.0008212051847 0 0 +-0.001015115885 0.0008212051847 -0.0004198478123 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.004959633231 -0.0007402499253 -2.719586291e-05 0 0 +-0.0007402499253 -0.0001127899676 9.318907879e-05 0 0 +-2.719586291e-05 9.318907879e-05 -3.543083558e-05 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.005189684378 -0.003202699549 0.00396419863 0.00120013734 0.0006780791848 +-0.003202699549 0.001976093689 -0.002461927507 -0.0007408273608 -0.000430963384 +0.00396419863 -0.002461927507 0.002398205191 0.000909062364 1.022238319e-05 +0.00120013734 -0.0007408273608 0.000909062364 0.0002774434974 0.0001506214123 +0.0006780791848 -0.000430963384 1.022238319e-05 0.0001506214123 -0.0003206724923 +0.001555794318 -0.001018494951 0.001276810594 0.000317810172 0.0001224357375 +-0.001018494951 0.0006646482904 -0.0008105263758 -0.000210434967 -6.782670057e-05 +0.001276810594 -0.0008105263758 0.0007430730681 0.0002894752769 -4.780648109e-05 +0.000317810172 -0.000210434967 0.0002894752769 6.222671915e-05 3.895208008e-05 +0.0001224357375 -6.782670057e-05 -4.780648109e-05 3.895208008e-05 -6.251187994e-05 +2.765712291e-05 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +3.720077601e-06 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +1.113124346e-05 3.245260081e-05 0.02329654216 0 0 +3.245260081e-05 9.435571836e-05 0.0643713405 0 0 +0.02329654216 0.0643713405 -0.0007521242988 0 0 +0 0 0 0 0 +0 0 0 0 0 +4.651718696e-07 1.324480272e-06 0.001189682786 0 0 +1.324480272e-06 3.74856956e-06 0.003125069686 0 0 +0.001189682786 0.003125069686 -5.536458665e-05 0 0 +0 0 0 0 0 +0 0 0 0 0 +4.489680862e-07 -1.428568298e-06 -0.001167190892 -3.207209937e-06 -0.003580694724 +-1.428568298e-06 2.779208265e-06 0.001398748672 5.496891823e-06 0.004291134866 +-0.001167190892 0.001398748672 -4.569232532e-05 0.002166977971 -4.860762941e-05 +-3.207209937e-06 5.496891823e-06 0.002166977971 1.036150779e-05 0.006648016179 +-0.003580694724 0.004291134866 -4.860762941e-05 0.006648016179 0.0001317867546 +5.794803474e-08 -3.088664643e-07 -0.0003195899556 -7.512481062e-07 -0.0009804313661 +-3.088664643e-07 7.098740382e-07 0.0004187198419 1.45592233e-06 0.001284554564 +-0.0003195899556 0.0004187198419 -1.021961453e-05 0.00064706887 -1.130587013e-05 +-7.512481062e-07 1.45592233e-06 0.00064706887 2.804572041e-06 0.001985104076 +-0.0009804313661 0.001284554564 -1.130587013e-05 0.001985104076 2.681148271e-05 +2.916457569e-05 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +-3.310837267e-06 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +-3.08062352e-06 -2.523124539e-05 0.0003458931666 0 0 +-2.523124539e-05 -4.113798278e-05 0.005366300454 0 0 +0.0003458931666 0.005366300454 -6.21456119e-05 0 0 +0 0 0 0 0 +0 0 0 0 0 +-3.96212242e-06 -8.102064027e-06 0.000464856485 0 0 +-8.102064027e-06 -1.100904517e-05 0.001501104849 0 0 +0.000464856485 0.001501104849 -1.538380187e-05 0 0 +0 0 0 0 0 +0 0 0 0 0 +1.963734967e-07 -1.041971849e-05 -3.117808173e-05 -6.679959667e-07 -2.691181243e-05 +-1.041971849e-05 -3.345446795e-05 0.003364986544 -1.451936462e-05 0.002895143815 +-3.117808173e-05 0.003364986544 -4.080482483e-05 0.0002518290119 -7.816653927e-06 +-6.679959667e-07 -1.451936462e-05 0.0002518290119 -1.985311817e-06 0.0002165694395 +-2.691181243e-05 0.002895143815 -7.816653927e-06 0.0002165694395 1.675716164e-05 +-1.165253163e-06 -3.93856748e-06 0.0001902854587 -1.014137568e-06 0.0001637018955 +-3.93856748e-06 -9.457271249e-06 0.0009892205964 -4.255587931e-06 0.0008511038967 +0.0001902854587 0.0009892205964 -1.017754341e-05 9.130186965e-05 -1.48686585e-06 +-1.014137568e-06 -4.255587931e-06 9.130186965e-05 -7.048714467e-07 7.852928224e-05 +0.0001637018955 0.0008511038967 -1.48686585e-06 7.852928224e-05 4.975910857e-06 +-0.0006393466189 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.000108858281 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +-6.863229488e-06 -1.384144723e-05 0.01412826026 0 0 +-1.384144723e-05 0.0005375631205 0.02377240907 0 0 +0.01412826026 0.02377240907 -3.614828588e-05 0 0 +0 0 0 0 0 +0 0 0 0 0 +-6.685477735e-06 -8.256338547e-06 0.001966278735 0 0 +-8.256338547e-06 0.0001440246413 -4.590978698e-05 0 0 +0.001966278735 -4.590978698e-05 -2.20315675e-05 0 0 +0 0 0 0 0 +0 0 0 0 0 +3.535354228e-05 -1.281327888e-05 0.005572138678 -0.0001328194577 -0.008839318526 +-1.281327888e-05 3.999909218e-06 0.014057413 -1.914488362e-05 0.001784019542 +0.005572138678 0.014057413 8.27347367e-06 -0.005893738859 4.013101176e-05 +-0.0001328194577 -1.914488362e-05 -0.005893738859 0.0002089884226 -0.0121954792 +-0.008839318526 0.001784019542 4.013101176e-05 -0.0121954792 2.354555101e-05 +9.092121602e-06 -4.714060902e-06 0.002169191093 -4.174466802e-05 -0.001158188308 +-4.714060902e-06 -2.586322568e-06 0.003619589203 -7.861039142e-06 -0.001254974613 +0.002169191093 0.003619589203 3.386879169e-06 -0.002663422377 1.176321858e-05 +-4.174466802e-05 -7.861039142e-06 -0.002663422377 6.817256529e-05 -0.006699530774 +-0.001158188308 -0.001254974613 1.176321858e-05 -0.006699530774 -3.902552317e-06 +0.00723547466 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.0003192482788 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +5.129168204e-05 -0.00246002143 -0.0001403733303 0 0 +-0.00246002143 -0.009384132153 0.001149457021 0 0 +-0.0001403733303 0.001149457021 0.0001394461352 0 0 +0 0 0 0 0 +0 0 0 0 0 +1.395017616e-05 -0.000666665083 -2.562181066e-05 0 0 +-0.000666665083 -0.00302266789 0.0001877129761 0 0 +-2.562181066e-05 0.0001877129761 1.62460491e-05 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.0007483894735 -6.187091546e-05 0.0005969497246 0.001673189284 0.0009497952545 +-6.187091546e-05 -3.796863097e-06 2.40846329e-05 0.0001387166247 5.956796519e-05 +0.0005969497246 2.40846329e-05 8.161286415e-06 -0.001342099261 -0.0003942914663 +0.001673189284 0.0001387166247 -0.001342099261 -0.003740666943 -0.002129092456 +0.0009497952545 5.956796519e-05 -0.0003942914663 -0.002129092456 -0.0009328676312 +-0.000267170251 -2.785174525e-05 0.0001723221966 0.0005633380367 0.000331293435 +-2.785174525e-05 -1.848121765e-06 7.026445381e-06 6.22090412e-05 2.420451003e-05 +0.0001723221966 7.026445381e-06 2.21249041e-06 -0.0003994418293 -0.0001066005536 +0.0005633380367 6.22090412e-05 -0.0003994418293 -0.00117632569 -0.0007326393605 +0.000331293435 2.420451003e-05 -0.0001066005536 -0.0007326393605 -0.0003096567197 +-0.007671490075 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.0004087366197 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +-3.435445157e-05 0.002747638868 -9.259882442e-05 0 0 +0.002747638868 0.01039219378 0.001314019734 0 0 +-9.259882442e-05 0.001314019734 -8.833670015e-05 0 0 +0 0 0 0 0 +0 0 0 0 0 +-9.055334163e-06 0.0007224684306 -1.025285971e-05 0 0 +0.0007224684306 0.00331185592 0.000198890255 0 0 +-1.025285971e-05 0.000198890255 -5.320127567e-06 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.0008407512681 6.406370016e-05 0.0006555071456 -0.001871339792 0.001027325693 +6.406370016e-05 2.671979617e-06 1.618357033e-05 -0.0001459076775 5.15820143e-05 +0.0006555071456 1.618357033e-05 -4.892499227e-06 -0.001509682278 0.0003929887038 +-0.001871339792 -0.0001459076775 -0.001509682278 0.004160244778 -0.002326672015 +0.001027325693 5.15820143e-05 0.0003929887038 -0.002326672015 0.000932704924 +0.0002973455232 3.009654866e-05 0.0001813920449 -0.0006201754836 0.0003545349387 +3.009654866e-05 1.336431125e-06 4.527228012e-06 -6.931637797e-05 2.155199934e-05 +0.0001813920449 4.527228012e-06 -1.251451768e-06 -0.000431270027 0.0001003247949 +-0.0006201754836 -6.931637797e-05 -0.000431270027 0.001268460238 -0.0007943100036 +0.0003545349387 2.155199934e-05 0.0001003247949 -0.0007943100036 0.000302574941 +0.09575602972 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.01161850814 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.04470715012 -0.05630589805 -0.07198295504 0 0 +-0.05630589805 0.07055714336 0.09275212306 0 0 +-0.07198295504 0.09275212306 0.1036052635 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.001792340491 -0.002184165815 -0.002463667186 0 0 +-0.002184165815 0.002631290035 0.00316068423 0 0 +-0.002463667186 0.00316068423 0.002559626359 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.0008183159679 0.00231018549 0.002677165577 -0.0001558715101 -0.003608096255 +0.00231018549 0.002611968116 0.003853017668 0.00156257623 -0.005183016424 +0.002677165577 0.003853017668 0.00524789088 0.001387660603 -0.007063443309 +-0.0001558715101 0.00156257623 0.001387660603 -0.0009960299897 -0.001875216823 +-0.003608096255 -0.005183016424 -0.007063443309 -0.001875216823 0.009507060438 +-3.671744095e-05 0.0004125855553 0.0003557201433 -0.00030924609 -0.0004799020848 +0.0004125855553 0.0006009521417 0.000827661001 0.0002354312044 -0.001113480377 +0.0003557201433 0.000827661001 0.0009987558788 1.151289299e-05 -0.001344549886 +-0.00030924609 0.0002354312044 1.151289299e-05 -0.0006007175055 -1.746023085e-05 +-0.0004799020848 -0.001113480377 -0.001344549886 -1.746023085e-05 0.001810059937 +-0.01291533875 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.001526072271 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.002364597187 -0.005627971605 -0.009463231067 0 0 +-0.005627971605 0.003843260387 0.004114405999 0 0 +-0.009463231067 0.004114405999 0.002393194512 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.002058735096 -0.001735718637 -0.002559074152 0 0 +-0.001735718637 0.001003057003 0.001044838052 0 0 +-0.002559074152 0.001044838052 0.0004913184276 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.0005603660119 -0.002721866562 -0.004691535125 -0.0001217549634 0.000207049428 +-0.002721866562 0.003288771231 0.004095894954 -0.000448369805 -0.0005261839407 +-0.004691535125 0.004095894954 0.004099897553 -0.0009374813556 -0.0008310221008 +-0.0001217549634 -0.000448369805 -0.0009374813556 -8.239611575e-05 5.212192507e-06 +0.000207049428 -0.0005261839407 -0.0008310221008 5.212192507e-06 5.335184386e-05 +0.0007747595853 -0.0009545178617 -0.001450348637 2.847073369e-05 0.0001274767582 +-0.0009545178617 0.0009037390666 0.00111638058 -0.0001294220341 -0.0001515616989 +-0.001450348637 0.00111638058 0.001063823211 -0.0002856487079 -0.0002251107888 +2.847073369e-05 -0.0001294220341 -0.0002856487079 -3.164898812e-05 6.587726157e-06 +0.0001274767582 -0.0001515616989 -0.0002251107888 6.587726157e-06 2.086387683e-05 +-0.007047683233 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.0002592871818 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +4.829758453e-05 -0.002371293109 -0.0001614338017 0 0 +-0.002371293109 0.001896084374 0.004213307815 0 0 +-0.0001614338017 0.004213307815 0.0004192343369 0 0 +0 0 0 0 0 +0 0 0 0 0 +1.383306965e-05 -0.0006809994208 -3.610531704e-05 0 0 +-0.0006809994208 0.0009009065808 0.001298618664 0 0 +-3.610531704e-05 0.001298618664 8.720945127e-05 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.0006448851555 0.0005028269425 -0.000257102132 -0.0008652666251 -0.001165948748 +0.0005028269425 3.98659679e-05 -7.221205355e-06 -0.001106640132 -0.0003646976091 +-0.000257102132 -7.221205355e-06 -3.529954696e-06 0.0005819844233 0.0001661282263 +-0.0008652666251 -0.001106640132 0.0005819844233 0.0006311270519 0.002232132323 +-0.001165948748 -0.0003646976091 0.0001661282263 0.002232132323 0.001266500204 +0.0002333410008 0.0001533731179 -8.256698003e-05 -0.0003354396919 -0.0003877225064 +0.0001533731179 1.229864134e-05 -2.500026416e-06 -0.0003467179267 -0.0001058293335 +-8.256698003e-05 -2.500026416e-06 -1.064397447e-06 0.0001925294762 5.003447801e-05 +-0.0003354396919 -0.0003467179267 0.0001925294762 0.0003021737503 0.0007698997981 +-0.0003877225064 -0.0001058293335 5.003447801e-05 0.0007698997981 0.0003933619737 +0.6134014558 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.001398373611 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.1054853353 -0.002110972399 0.01203482526 0 0 +-0.002110972399 0.09849090928 -0.0175618235 0 0 +0.01203482526 -0.0175618235 0.05629852089 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.01810305817 0.004795699441 0.01028005049 0 0 +0.004795699441 0.01283802247 -0.01435620391 0 0 +0.01028005049 -0.01435620391 -0.001317194043 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.03384739809 -0.0238205904 -0.03418934131 0.001797332958 -0.0111274566 +-0.0238205904 0.02213005726 0.01455402879 -0.02780941914 0.001782166436 +-0.03418934131 0.01455402879 0.02174327172 0.002171804071 0.02230561782 +0.001797332958 -0.02780941914 0.002171804071 0.05852536426 0.02820807127 +-0.0111274566 0.001782166436 0.02230561782 0.02820807127 0.005792434242 +0.007836102653 -0.00601547188 -0.007798732463 0.0004599212749 -0.001620162598 +-0.00601547188 0.004082462997 0.001835576755 -0.006388150724 0.002197681109 +-0.007798732463 0.001835576755 0.001987231959 0.0004752603022 0.006431460026 +0.0004599212749 -0.006388150724 0.0004752603022 0.01368512484 0.005855491799 +-0.001620162598 0.002197681109 0.006431460026 0.005855491799 -0.002647732348 +-0.01725247303 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.0009119802931 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +5.60355855e-05 -9.377046568e-05 -0.005928299375 0 0 +-9.377046568e-05 0.0001456134719 0.007288171858 0 0 +-0.005928299375 0.007288171858 0.01415711166 0 0 +0 0 0 0 0 +0 0 0 0 0 +1.478133208e-05 -2.462380116e-05 -0.00154999172 0 0 +-2.462380116e-05 3.793764234e-05 0.001885179457 0 0 +-0.00154999172 0.001885179457 0.004971183771 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.001999480618 -0.00129993411 0.0007891561834 0.004079355356 -0.0009291932662 +-0.00129993411 -3.975084823e-07 -2.088721041e-05 -0.002251129469 4.444774156e-05 +0.0007891561834 -2.088721041e-05 2.497869212e-05 0.001376622662 -4.096796414e-05 +0.004079355356 -0.002251129469 0.001376622662 0.008132548387 -0.001630322737 +-0.0009291932662 4.444774156e-05 -4.096796414e-05 -0.001630322737 6.137912933e-05 +0.0006982350927 -0.0003701873237 0.000199777799 0.001379117352 -0.0002276022937 +-0.0003701873237 -1.154237608e-07 -6.022715377e-06 -0.0006410614758 1.281401099e-05 +0.000199777799 -6.022715377e-06 6.34558537e-06 0.0003487518159 -1.025728769e-05 +0.001379117352 -0.0006410614758 0.0003487518159 0.002682609936 -0.0004000564156 +-0.0002276022937 1.281401099e-05 -1.025728769e-05 -0.0004000564156 1.495509411e-05 +-0.1019019262 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.01151953038 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.04691680865 0.05882386912 -0.07353380065 0 0 +0.05882386912 -0.07344396404 0.09427463022 0 0 +-0.07353380065 0.09427463022 -0.1012626267 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.00182934858 0.002213035087 -0.002334676132 0 0 +0.002213035087 -0.002648525558 0.002991661155 0 0 +-0.002334676132 0.002991661155 -0.002003209448 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.0006565793211 -0.002406058298 0.002667383047 0.0004052611294 -0.003562875904 +-0.002406058298 -0.002864285842 0.004098490138 -0.001601855902 -0.005485275169 +0.002667383047 0.004098490138 -0.005423854527 0.001297136742 0.007255086705 +0.0004052611294 -0.001601855902 0.001297136742 0.001350662898 -0.001726988963 +-0.003562875904 -0.005485275169 0.007255086705 -0.001726988963 -0.00970455031 +0.0001300238315 -0.0003738671194 0.0002591304181 0.0004271876931 -0.0003454966433 +-0.0003738671194 -0.0006070778827 0.0007998693513 -0.0001816240863 -0.001070512769 +0.0002591304181 0.0007998693513 -0.0009025915497 -0.0001100139999 0.001207141119 +0.0004271876931 -0.0001816240863 -0.0001100139999 0.0007521835703 0.0001492028505 +-0.0003454966433 -0.001070512769 0.001207141119 0.0001492028505 -0.001614445247 +0.013451136 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.001593420042 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.002458647593 0.00584505621 -0.009709318789 0 0 +0.00584505621 -0.003903989486 0.00405266914 0 0 +-0.009709318789 0.00405266914 -0.002099498416 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.002146787464 0.001790982399 -0.002603011521 0 0 +0.001790982399 -0.00101419307 0.001021217939 0 0 +-0.002603011521 0.001021217939 -0.0003989263987 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.0005507532411 0.002873084727 -0.00490881722 0.0001605932197 0.0002259164155 +0.002873084727 -0.0033797893 0.004121991875 0.0004735020907 -0.0005210457843 +-0.00490881722 0.004121991875 -0.003983897825 -0.0009956778636 0.0007966336402 +0.0001605932197 0.0004735020907 -0.0009956778636 0.000101294153 8.395035559e-06 +0.0002259164155 -0.0005210457843 0.0007966336402 8.395035559e-06 -5.543025596e-05 +-0.0008153003809 0.001001384508 -0.001508967128 -2.351898796e-05 0.0001315820655 +0.001001384508 -0.0009261866586 0.001120473479 0.000136896168 -0.0001493010481 +-0.001508967128 0.001120473479 -0.00102446427 -0.0003041349092 0.0002138239078 +-2.351898796e-05 0.000136896168 -0.0003041349092 3.772761316e-05 8.17413231e-06 +0.0001315820655 -0.0001493010481 0.0002138239078 8.17413231e-06 -2.073700274e-05 +0.007384944085 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.0002957235298 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +-3.032783617e-05 0.002460283604 -0.0001003654204 0 0 +0.002460283604 -0.002053414433 0.0043418803 0 0 +-0.0001003654204 0.0043418803 -0.0002590399645 0 0 +0 0 0 0 0 +0 0 0 0 0 +-8.647499478e-06 0.000702674941 -1.667482381e-05 0 0 +0.000702674941 -0.0009623151128 0.001328961656 0 0 +-1.667482381e-05 0.001328961656 -3.214173758e-05 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.0006756565819 -0.000514864415 -0.0002650801065 0.0009274194313 -0.001184286767 +-0.000514864415 -2.52546193e-05 -4.755254696e-06 0.001169913729 -0.0003295724051 +-0.0002650801065 -4.755254696e-06 1.983127024e-06 0.000612741656 -0.0001568109579 +0.0009274194313 0.001169913729 0.000612741656 -0.0006885075243 0.002348458137 +-0.001184286767 -0.0003295724051 -0.0001568109579 0.002348458137 -0.001181761323 +-0.000243365705 -0.0001558454729 -8.475937986e-05 0.000358004307 -0.0003908098141 +-0.0001558454729 -7.755704301e-06 -1.636850968e-06 0.0003646862424 -9.32359648e-05 +-8.475937986e-05 -1.636850968e-06 5.860036999e-07 0.0002021391061 -4.630442873e-05 +0.000358004307 0.0003646862424 0.0002021391061 -0.0003273803101 0.0008059477342 +-0.0003908098141 -9.32359648e-05 -4.630442873e-05 0.0008059477342 -0.0003596881662 +0.01707121554 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.0007938274551 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +5.258931452e-05 -8.8103422e-05 -0.005500601704 0 0 +-8.8103422e-05 0.0001370824415 0.006727044385 0 0 +-0.005500601704 0.006727044385 -0.01326413229 0 0 +0 0 0 0 0 +0 0 0 0 0 +1.42334826e-05 -2.373922759e-05 -0.001469860383 0 0 +-2.373922759e-05 3.665070935e-05 0.001773004699 0 0 +-0.001469860383 0.001773004699 -0.004654062145 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.001862988033 0.001221141181 0.0007208475599 -0.003824401687 -0.0008188191651 +0.001221141181 3.734139361e-07 1.984466898e-05 0.002114678844 -4.201217139e-05 +0.0007208475599 1.984466898e-05 2.377966056e-05 0.001238699455 -3.898222282e-05 +-0.003824401687 0.002114678844 0.001238699455 -0.007658850094 -0.001397519338 +-0.0008188191651 -4.201217139e-05 -3.898222282e-05 -0.001397519338 5.835133521e-05 +-0.0006543774277 0.0003584678046 0.0001897344153 -0.001303906236 -0.0002058132661 +0.0003584678046 1.117691067e-07 5.891720551e-06 0.0006207655743 -1.247465892e-05 +0.0001897344153 5.891720551e-06 6.378718783e-06 0.0003257907448 -1.031990351e-05 +-0.001303906236 0.0006207655743 0.0003257907448 -0.002553643599 -0.0003505040644 +-0.0002058132661 -1.247465892e-05 -1.031990351e-05 -0.0003505040644 1.507163159e-05 +-0.6104652482 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.003378209247 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.1141289138 -0.002429378159 0.02008774031 0 0 +-0.002429378159 -0.1037490872 -0.02832697132 0 0 +0.02008774031 -0.02832697132 -0.0505713469 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.0188472618 -0.005235435075 0.01079397096 0 0 +-0.005235435075 -0.01332785754 -0.01493612605 0 0 +0.01079397096 -0.01493612605 0.0002374792394 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.03787295726 0.02694912227 -0.03819032893 -0.001698693034 -0.01171311087 +0.02694912227 -0.02354149066 0.01415465069 0.03128806078 0.003824828273 +-0.03819032893 0.01415465069 -0.02094794561 0.002346125921 -0.02682244759 +-0.001698693034 0.03128806078 0.002346125921 -0.06438578002 0.0311286483 +-0.01171311087 0.003824828273 -0.02682244759 0.0311286483 -0.002678076338 +-0.008564101406 0.006029931 -0.0074573047 -0.0007728030633 -0.00224335185 +0.006029931 -0.004239256387 0.001850212169 0.006264075074 0.002101537514 +-0.0074573047 0.001850212169 -0.001854851807 0.001176725489 -0.005885047408 +-0.0007728030633 0.006264075074 0.001176725489 -0.01445771936 0.004975201736 +-0.00224335185 0.002101537514 -0.005885047408 0.004975201736 0.002327420689 +0.04177570674 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.003833883588 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.3779009219 0.008007323669 0.003535121299 0 0 +0.008007323669 -0.1686759345 0.002747245825 0 0 +0.003535121299 0.002747245825 -0.194572305 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.007878365007 2.934101438e-05 0.0001993817653 0 0 +2.934101438e-05 -0.006521034675 3.440507553e-05 0 0 +0.0001993817653 3.440507553e-05 -0.00735181386 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.002142075626 0.0003278217007 7.447672574e-05 -0.001460899045 -0.0003990710225 +0.0003278217007 0.00859707516 -0.0003784033916 0.002324705735 0.0001152827963 +7.447672574e-05 -0.0003784033916 0.01047281603 -0.0001207434464 -0.001954162695 +-0.001460899045 0.002324705735 -0.0001207434464 -0.01252062357 -0.000322389309 +-0.0003990710225 0.0001152827963 -0.001954162695 -0.000322389309 -0.01360733847 +-0.005968725021 -0.0001534470572 -2.545620263e-05 -0.0002714561114 -3.432021405e-05 +-0.0001534470572 0.002769224513 -0.0001001352142 0.001093071788 5.798575385e-05 +-2.545620263e-05 -0.0001001352142 0.003344455498 -6.374981107e-05 -0.001132723679 +-0.0002714561114 0.001093071788 -6.374981107e-05 -0.003028099214 1.327007367e-06 +-3.432021405e-05 5.798575385e-05 -0.001132723679 1.327007367e-06 -0.002981268254 +0.7134057583 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.01987536419 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.05481975247 -0.005811640255 -0.0003214903792 0 0 +-0.005811640255 0.1898256089 -0.0001409572679 0 0 +-0.0003214903792 -0.0001409572679 0.1905920277 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.017615884 -0.0004133819374 1.847730302e-05 0 0 +-0.0004133819374 0.02073246774 -1.819156867e-05 0 0 +1.847730302e-05 -1.819156867e-05 0.02085473542 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.05286711993 -0.007672765675 -0.0008184514425 -0.0004534370443 -2.275858313e-05 +-0.007672765675 0.1238661862 -0.0001565143504 0.006659345619 0.0004566273783 +-0.0008184514425 -0.0001565143504 0.1250265341 -0.000469934185 -0.0003152142744 +-0.0004534370443 0.006659345619 -0.000469934185 0.0003000406867 3.187451342e-05 +-2.275858313e-05 0.0004566273783 -0.0003152142744 3.187451342e-05 -0.0001446626698 +0.02443382145 0.0002499913193 8.634714929e-05 -9.739731208e-05 -6.369975162e-06 +0.0002499913193 0.006591936512 -7.167668879e-06 0.0005292253489 4.071539727e-05 +8.634714929e-05 -7.167668879e-06 0.006663829572 -4.265558326e-05 4.360853013e-05 +-9.739731208e-05 0.0005292253489 -4.265558326e-05 4.195668516e-05 4.748162607e-06 +-6.369975162e-06 4.071539727e-05 4.360853013e-05 4.748162607e-06 -2.436382596e-05 +-0.2398852528 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.003983784973 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.008756734551 0.02498686668 2.170150516e-05 0 0 +0.02498686668 -0.04908433081 2.180607295e-05 0 0 +2.170150516e-05 2.180607295e-05 -0.02641995859 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.003501782125 0.004834879451 5.563244886e-06 0 0 +0.004834879451 0.001476735232 6.427980662e-06 0 0 +5.563244886e-06 6.427980662e-06 -0.005658338392 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.006622135785 -0.004172297116 1.947792205e-05 0.002969746579 9.857788765e-06 +-0.004172297116 -0.0211399528 1.424223538e-06 0.01091003892 7.617845914e-06 +1.947792205e-05 1.424223538e-06 0.004714776988 -2.349262643e-05 0.00495831897 +0.002969746579 0.01091003892 -2.349262643e-05 -0.005938492404 -5.187397691e-06 +9.857788765e-06 7.617845914e-06 0.00495831897 -5.187397691e-06 -0.027246024 +0.004118930113 -0.001015479095 6.899200244e-06 -0.002026100612 3.020786103e-06 +-0.001015479095 -0.007464081525 -5.777473247e-08 0.002253437614 2.462897318e-06 +6.899200244e-06 -5.777473247e-08 0.001465861549 -8.065785758e-06 0.001900278849 +-0.002026100612 0.002253437614 -8.065785758e-06 0.00195098861 7.688479796e-07 +3.020786103e-06 2.462897318e-06 0.001900278849 7.688479796e-07 -0.006621915389 +-0.2653539434 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.0005654130723 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.01653860598 -0.0133343995 -0.02373804259 0 0 +-0.0133343995 -0.03795041666 -0.003978414816 0 0 +-0.02373804259 -0.003978414816 -0.04318365405 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.005432112044 -0.002185616626 -0.003883571209 0 0 +-0.002185616626 -0.004281213374 0.004639188276 0 0 +-0.003883571209 0.004639188276 0.001367173348 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.01089309674 0.004299523505 0.007609952403 0.0001523154045 -0.0001370683252 +0.004299523505 -0.002356891549 -0.01586751353 -0.0001718306438 -0.007970518498 +0.007609952403 -0.01586751353 -0.02213647116 0.008418373431 -0.009007243019 +0.0001523154045 -0.0001718306438 0.008418373431 -0.02679363619 -0.015232709 +-0.0001370683252 -0.007970518498 -0.009007243019 -0.015232709 -0.01124171125 +0.005464168494 0.0009035124487 0.001590147646 0.001553282133 -0.002486696548 +0.0009035124487 -0.0008563068842 -0.005079208966 -0.001027265279 -0.001897068723 +0.001590147646 -0.005079208966 -0.007172580558 0.001930145773 -0.001126373813 +0.001553282133 -0.001027265279 0.001930145773 -0.004978166573 -0.00464923081 +-0.002486696548 -0.001897068723 -0.001126373813 -0.00464923081 -0.0002357182257 +-0.2683120973 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.001491561749 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.02116958747 -0.01412942418 0.02524246929 0 0 +-0.01412942418 -0.04012680009 -0.0003185411181 0 0 +0.02524246929 -0.0003185411181 -0.04003093972 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.006506169452 -0.001805294516 0.003221776927 0 0 +-0.001805294516 -0.004383798527 -0.005103591168 0 0 +0.003221776927 -0.005103591168 0.001871110888 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.01459143828 0.005074066142 -0.008935013188 0.001610019964 0.002507803121 +0.005074066142 -0.003045537708 0.01919929292 -0.0006509787882 0.008876307982 +-0.008935013188 0.01919929292 -0.02700053392 -0.009331235841 -0.009488838322 +0.001610019964 -0.0006509787882 -0.009331235841 -0.02912324327 0.0185056774 +0.002507803121 0.008876307982 -0.009488838322 0.0185056774 -0.01031326488 +0.006361520485 0.0008253233008 -0.001428418805 0.001780272078 0.002851315477 +0.0008253233008 -0.001003106241 0.005863054555 -0.001472213913 0.001843233904 +-0.001428418805 0.005863054555 -0.00830434646 -0.001832323488 -0.0005815129804 +0.001780272078 -0.001472213913 -0.001832323488 -0.005192249292 0.004772807464 +0.002851315477 0.001843233904 -0.0005815129804 0.004772807464 -0.0003499576944 +-0.1559002281 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.01008055053 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.258436164 -0.005709028297 -0.001401922244 0 0 +-0.005709028297 -6.654154766e-05 -3.116743217e-05 0 0 +-0.001401922244 -3.116743217e-05 -7.604260295e-06 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.001078807029 -0.0001140799632 -2.245126442e-05 0 0 +-0.0001140799632 8.700191242e-07 -1.166645237e-06 0 0 +-2.245126442e-05 -1.166645237e-06 -3.545042642e-07 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.01818365865 -0.001100181898 -7.781954756e-05 -0.0002480040969 -6.675972628e-05 +-0.001100181898 -6.385787204e-05 -3.332013455e-06 -1.779433609e-05 -4.784024884e-06 +-7.781954756e-05 -3.332013455e-06 3.666707988e-07 -2.479286482e-06 -6.643455394e-07 +-0.0002480040969 -1.779433609e-05 -2.479286482e-06 -5.091717788e-07 -1.432407697e-07 +-6.675972628e-05 -4.784024884e-06 -6.643455394e-07 -1.432407697e-07 -4.020841306e-08 +0.002119673985 1.067508783e-05 -6.494739898e-06 2.448160469e-05 5.31843315e-06 +1.067508783e-05 -3.596490723e-06 -2.256183634e-07 -9.826701144e-07 -2.204312414e-07 +-6.494739898e-06 -2.256183634e-07 9.705121177e-09 -1.334606313e-07 -2.936076381e-08 +2.448160469e-05 -9.826701144e-07 -1.334606313e-07 -5.233301637e-08 -1.347587476e-08 +5.31843315e-06 -2.204312414e-07 -2.936076381e-08 -1.347587476e-08 -3.398491031e-09 +-0.6584984779 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.01345650382 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.0494256245 0.008105084815 -8.193139196e-05 0 0 +0.008105084815 -0.2240070482 0.0004977777375 0 0 +-8.193139196e-05 0.0004977777375 -0.22836341 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.02257572606 0.0009763422769 -0.0001460829419 0 0 +0.0009763422769 -0.02979749727 9.927944092e-05 0 0 +-0.0001460829419 9.927944092e-05 -0.03080286908 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.052682619 0.008941510074 0.0006911840756 0.0007903205109 2.140492509e-05 +0.008941510074 -0.1435316703 0.0004559599833 -0.01359931778 -0.0005514557351 +0.0006911840756 0.0004559599833 -0.1480094888 0.0005944188194 0.006693938116 +0.0007903205109 -0.01359931778 0.0005944188194 -0.001239600311 -7.358313645e-05 +2.140492509e-05 -0.0005514557351 0.006693938116 -7.358313645e-05 -0.0002941388688 +-0.02462431102 0.000139862321 -0.0001415487835 0.0002325422618 1.218356821e-05 +0.000139862321 -0.01199472979 8.350214554e-05 -0.002516184648 -6.591130427e-05 +-0.0001415487835 8.350214554e-05 -0.012964359 7.621520276e-05 0.00179031886 +0.0002325422618 -0.002516184648 7.621520276e-05 -0.0003680710346 -1.661118325e-05 +1.218356821e-05 -6.591130427e-05 0.00179031886 -1.661118325e-05 -0.0001568368245 +0.01533394482 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.0007296329857 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.009839929534 -0.005893332236 -3.982993204e-05 0 0 +-0.005893332236 0.003533963467 -3.231621933e-05 0 0 +-3.982993204e-05 -3.231621933e-05 -1.510875566e-07 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.00297877508 -0.00203265433 -1.205896816e-05 0 0 +-0.00203265433 0.0005663457667 -1.044550923e-05 0 0 +-1.205896816e-05 -1.044550923e-05 -4.630274105e-08 0 0 +0 0 0 0 0 +0 0 0 0 0 +-2.370406776e-05 -0.002350174986 -4.917876639e-06 -0.001453886085 -6.227493951e-06 +-0.002350174986 -0.006736371229 -1.199612556e-05 -0.0009951022671 -2.964439099e-05 +-4.917876639e-06 -1.199612556e-05 -2.068847125e-08 -7.53672146e-07 -5.657716647e-08 +-0.001453886085 -0.0009951022671 -7.53672146e-07 0.00139129463 -1.009849789e-05 +-6.227493951e-06 -2.964439099e-05 -5.657716647e-08 -1.009849789e-05 -1.091896225e-07 +2.849966828e-05 -0.0007044864425 -1.492098197e-06 -0.000468478025 -1.807801564e-06 +-0.0007044864425 -0.002272505526 -4.017397631e-06 -0.0004471262908 -9.890711582e-06 +-1.492098197e-06 -4.017397631e-06 -6.855583627e-09 -4.608500638e-07 -1.874238406e-08 +-0.000468478025 -0.0004471262908 -4.608500638e-07 0.0003527511037 -3.627303444e-06 +-1.807801564e-06 -9.890711582e-06 -1.874238406e-08 -3.627303444e-06 -3.663412827e-08 +0.01833270275 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.001097422765 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.01345011692 0.003101715315 0.005902141065 0 0 +0.003101715315 0.001119768219 0.001984775695 0 0 +0.005902141065 0.001984775695 0.00351057195 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.003985080705 0.001101425592 0.002075902478 0 0 +0.001101425592 0.0001650409069 0.0002849090078 0 0 +0.002075902478 0.0002849090078 0.000489149676 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.0007214452612 0.001758005868 0.003251185305 0.0008945797875 -0.001346798501 +0.001758005868 -0.001892991766 -0.003475518363 -0.0002315034964 0.000291274619 +0.003251185305 -0.003475518363 -0.006380418987 -0.0004075120437 0.0005070201523 +0.0008945797875 -0.0002315034964 -0.0004075120437 0.0004785306685 -0.0007670919757 +-0.001346798501 0.000291274619 0.0005070201523 -0.0007670919757 0.001226481753 +-0.0001682822627 0.0005173134007 0.0009569665727 0.0002839627023 -0.0004292865776 +0.0005173134007 -0.0006306412901 -0.001157812617 -0.000121597228 0.0001698963908 +0.0009569665727 -0.001157812617 -0.00212545839 -0.0002180527168 0.0003037478465 +0.0002839627023 -0.000121597228 -0.0002180527168 0.0001090805643 -0.0001758118007 +-0.0004292865776 0.0001698963908 0.0003037478465 -0.0001758118007 0.0002824782499 +0.01969436394 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.001286617719 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.01503347623 0.003313806073 -0.006450507393 0 0 +0.003313806073 0.001261825877 -0.002203492422 0 0 +-0.006450507393 -0.002203492422 0.003829341339 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.004392906822 0.001189644508 -0.00228173522 0 0 +0.001189644508 0.0001670989771 -0.0002757809803 0 0 +-0.00228173522 -0.0002757809803 0.0004472715281 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.0009194291213 0.001978881328 -0.003684506008 0.0009731290576 0.001434444015 +0.001978881328 -0.002068000932 0.00382089022 -0.0002579376616 -0.0002888868165 +-0.003684506008 0.00382089022 -0.007058751597 0.0004554909936 0.0005001433381 +0.0009731290576 -0.0002579376616 0.0004554909936 0.0005093353794 0.0008273341969 +0.001434444015 -0.0002888868165 0.0005001433381 0.0008273341969 0.001336175142 +-0.0002143500279 0.0005680382598 -0.001057836838 0.0003026861679 0.0004491157497 +0.0005680382598 -0.0006830461374 0.001261790304 -0.0001409972847 -0.0001870873966 +-0.001057836838 0.001261790304 -0.002330623682 0.0002543557481 0.0003359369566 +0.0003026861679 -0.0001409972847 0.0002543557481 0.0001041430151 0.0001723087692 +0.0004491157497 -0.0001870873966 0.0003359369566 0.0001723087692 0.0002826495938 +0.03190423454 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.004291343995 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.03375268269 -0.02693550888 0.0002668580145 0 0 +-0.02693550888 0.1088452685 -0.0003333182425 0 0 +0.0002668580145 -0.0003333182425 1.796843141e-07 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.001842771727 -0.00159721534 2.120670697e-05 0 0 +-0.00159721534 0.004324211266 -1.976308405e-05 0 0 +2.120670697e-05 -1.976308405e-05 1.082386475e-08 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.004561197197 -0.0004899957369 4.400558363e-05 -0.006285934804 -4.080899079e-05 +-0.0004899957369 -0.005376237554 4.46646995e-05 -0.00170572726 -4.266775343e-05 +4.400558363e-05 4.46646995e-05 -2.481306312e-08 -3.89830609e-05 3.436065171e-08 +-0.006285934804 -0.00170572726 -3.89830609e-05 0.00761858594 3.56041653e-05 +-4.080899079e-05 -4.266775343e-05 3.436065171e-08 3.56041653e-05 -4.267689906e-08 +0.001173940662 -0.0001011174463 9.196101298e-06 -0.001667797155 -7.754925154e-06 +-0.0001011174463 -0.001750217888 1.092648211e-05 -0.0007243211785 -9.487688803e-06 +9.196101298e-06 1.092648211e-05 -6.035371446e-09 -7.281976672e-06 6.912092147e-09 +-0.001667797155 -0.0007243211785 -7.281976672e-06 0.001941090429 6.005780394e-06 +-7.754925154e-06 -9.487688803e-06 6.912092147e-09 6.005780394e-06 -7.408338624e-09 +-0.01616277979 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.001834840124 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.001015742428 0.008616734411 -4.410182085e-05 0 0 +0.008616734411 0.02279834837 -4.210083495e-05 0 0 +-4.410182085e-05 -4.210083495e-05 -2.768540988e-07 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.001266122709 0.002989012342 -8.494835776e-06 0 0 +0.002989012342 0.006101126745 -9.234335113e-06 0 0 +-8.494835776e-06 -9.234335113e-06 -6.556518737e-08 0 0 +0 0 0 0 0 +0 0 0 0 0 +-6.013669091e-07 -2.680475533e-05 -3.204881098e-07 -3.460518132e-05 -6.15888383e-08 +-2.680475533e-05 0.01274975973 -2.528383686e-05 0.004464988043 3.517590406e-05 +-3.204881098e-07 -2.528383686e-05 -1.621234083e-07 -2.318058902e-05 -6.273286578e-08 +-3.460518132e-05 0.004464988043 -2.318058902e-05 0.0005967419069 1.27927211e-05 +-6.15888383e-08 3.517590406e-05 -6.273286578e-08 1.27927211e-05 9.68160115e-08 +-1.33466025e-05 0.0003056555323 8.922462446e-07 0.0002136482945 8.081274576e-07 +0.0003056555323 0.003538893271 -5.391832348e-06 0.001290666133 9.901015734e-06 +8.922462446e-07 -5.391832348e-06 -3.817951498e-08 -5.457221371e-06 -1.347842543e-08 +0.0002136482945 0.001290666133 -5.457221371e-06 0.0002080679694 3.731878506e-06 +8.081274576e-07 9.901015734e-06 -1.347842543e-08 3.731878506e-06 2.764514098e-08 +0.2247614504 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.004705418665 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.0235931691 -0.02004803657 0.0001457212872 0 0 +-0.02004803657 0.0454930884 -2.025519612e-05 0 0 +0.0001457212872 -2.025519612e-05 0.02628163866 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.007955488398 -0.003281506939 4.571758332e-05 0 0 +-0.003281506939 -0.002070147663 -6.1171304e-06 0 0 +4.571758332e-05 -6.1171304e-06 0.005615787179 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.006647509092 0.00754595645 -2.842243976e-05 -0.001491906403 1.685682247e-05 +0.00754595645 0.03107609719 1.418958963e-05 -0.01036064936 0.0001278850802 +-2.842243976e-05 1.418958963e-05 -0.005658277201 3.214595535e-05 -0.006709521409 +-0.001491906403 -0.01036064936 3.214595535e-05 0.004535627425 5.201350388e-06 +1.685682247e-05 0.0001278850802 -0.006709521409 5.201350388e-06 0.02711978118 +-0.004165708107 0.002110981887 -1.065671055e-05 0.002504565841 5.938263806e-06 +0.002110981887 0.01075427305 5.84752031e-06 -0.002026750257 4.282358534e-05 +-1.065671055e-05 5.84752031e-06 -0.00178388303 1.23503876e-05 -0.002507914991 +0.002504565841 -0.002026750257 1.23503876e-05 -0.002309192608 -8.37460203e-07 +5.938263806e-06 4.282358534e-05 -0.002507914991 -8.37460203e-07 0.00657948206 +0.0001311583875 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +-5.787054953e-06 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.002576213529 -0.002455303533 0.0006859797516 0 0 +-0.002455303533 -0.0001701073806 -2.286290367e-05 0 0 +0.0006859797516 -2.286290367e-05 2.833652818e-05 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.0007229671492 -0.0008132838835 0.0001197156853 0 0 +-0.0008132838835 -5.479229285e-05 -1.11207436e-05 0 0 +0.0001197156853 -1.11207436e-05 4.88918095e-06 0 0 +0 0 0 0 0 +0 0 0 0 0 +-3.450670645e-05 0.0005887377928 0.0003609648192 4.756350329e-05 4.753958299e-05 +0.0005887377928 0.0001472964579 -0.0009051157493 -0.001312565298 -0.001104585824 +0.0003609648192 -0.0009051157493 -0.001068033285 -0.0007558186754 -0.0006485758382 +4.756350329e-05 -0.001312565298 -0.0007558186754 -4.092797238e-05 -5.109953467e-05 +4.753958299e-05 -0.001104585824 -0.0006485758382 -5.109953467e-05 -5.70437239e-05 +-1.269342129e-05 0.000220460488 0.0001331888687 1.540780271e-05 1.730521724e-05 +0.000220460488 7.403092372e-05 -0.0002662922117 -0.0004205821751 -0.0004100664187 +0.0001331888687 -0.0002662922117 -0.0003239914903 -0.0002418999753 -0.0002390109836 +1.540780271e-05 -0.0004205821751 -0.0002418999753 -1.270667048e-05 -1.671364259e-05 +1.730521724e-05 -0.0004100664187 -0.0002390109836 -1.671364259e-05 -2.052008572e-05 +8.558495e-05 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +-4.559961992e-06 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.002911982804 -0.002752651443 -0.0007528556773 0 0 +-0.002752651443 -0.0001159377612 1.570773866e-05 0 0 +-0.0007528556773 1.570773866e-05 1.816910322e-05 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.0007937835542 -0.0009051623139 -0.000114102826 0 0 +-0.0009051623139 -3.694784463e-05 7.789417854e-06 0 0 +-0.000114102826 7.789417854e-06 2.706628907e-06 0 0 +0 0 0 0 0 +0 0 0 0 0 +-2.406945414e-05 0.0006845932337 -0.0003988556365 3.241987542e-05 -3.26415633e-05 +0.0006845932337 0.000174911535 0.00102401616 -0.001473570162 0.001262065363 +-0.0003988556365 0.00102401616 -0.001188064873 0.000826922531 -0.0007161788103 +3.241987542e-05 -0.001473570162 0.000826922531 -2.818761847e-05 3.46001097e-05 +-3.26415633e-05 0.001262065363 -0.0007161788103 3.46001097e-05 -3.859988607e-05 +-8.787411299e-06 0.0002547214336 -0.0001468963937 1.025053517e-05 -1.180587529e-05 +0.0002547214336 9.047180567e-05 0.0002875513671 -0.0004583288438 0.000466384401 +-0.0001468963937 0.0002875513671 -0.0003463054212 0.0002569886748 -0.0002633173849 +1.025053517e-05 -0.0004583288438 0.0002569886748 -8.48072731e-06 1.109365277e-05 +-1.180587529e-05 0.000466384401 -0.0002633173849 1.109365277e-05 -1.379841265e-05 +0.03962690314 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.004808109716 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.0409925499 0.01150626441 0.02139579411 0 0 +0.01150626441 0.02919879922 0.05278822223 0 0 +0.02139579411 0.05278822223 0.09542756526 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.00234303528 0.0007749513757 0.001509830863 0 0 +0.0007749513757 0.001088911849 0.002002745105 0 0 +0.001509830863 0.002002745105 0.003681014318 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.00548550279 0.00059196446 0.001221407808 0.003812233993 -0.006471363198 +0.00059196446 -0.001473045897 -0.002706896697 -0.0002684315191 0.0005574334584 +0.001221407808 -0.002706896697 -0.004971125279 -0.0004068027828 0.0008785163901 +0.003812233993 -0.0002684315191 -0.0004068027828 0.002348663962 -0.003941903046 +-0.006471363198 0.0005574334584 0.0008785163901 -0.003941903046 0.006608330603 +0.001310030503 0.0001226263276 0.0002521968224 0.0009402787949 -0.001582625883 +0.0001226263276 -0.0004799644397 -0.0008767699878 -0.0001664032214 0.0002999080855 +0.0002521968224 -0.0008767699878 -0.001601037886 -0.0002851076227 0.0005162033012 +0.0009402787949 -0.0001664032214 -0.0002851076227 0.0005431764081 -0.0009039803198 +-0.001582625883 0.0002999080855 0.0005162033012 -0.0009039803198 0.001503453651 +-0.01881656624 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.002223359412 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.002125879837 -0.005303999822 -0.009553572661 0 0 +-0.005303999822 0.005599308312 0.01021282108 0 0 +-0.009553572661 0.01021282108 0.01862258701 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.00179224058 -0.001734506999 -0.003167551071 0 0 +-0.001734506999 0.001461369996 0.002679454866 0 0 +-0.003167551071 0.002679454866 0.004912235009 0 0 +0 0 0 0 0 +0 0 0 0 0 +8.752824179e-05 -0.0005831379854 -0.001058565238 -0.0001479894542 0.0002064184191 +-0.0005831379854 0.003378742515 0.006167989301 0.001203351554 -0.001751096403 +-0.001058565238 0.006167989301 0.01125712061 0.002169581189 -0.003153071159 +-0.0001479894542 0.001203351554 0.002169581189 0.0001568602297 -0.0001875996279 +0.0002064184191 -0.001751096403 -0.003153071159 -0.0001875996279 0.0002077384505 +9.150792313e-05 -0.0003334029221 -0.0006157534898 -0.0001704676708 0.0002557020643 +-0.0003334029221 0.0009120759676 0.001678117657 0.0003391411669 -0.0004959776778 +-0.0006157534898 0.001678117657 0.003087369891 0.0006204147856 -0.000906835774 +-0.0001704676708 0.0003391411669 0.0006204147856 5.490521759e-05 -7.049421077e-05 +0.0002557020643 -0.0004959776778 -0.000906835774 -7.049421077e-05 8.740994128e-05 +-0.000127754268 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +4.700132371e-06 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.002425829798 0.0004441045589 0.002115300128 0 0 +0.0004441045589 3.437056735e-05 8.520470804e-05 0 0 +0.002115300128 8.520470804e-05 8.519164466e-05 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.0007168981109 0.0002264529549 0.0006731646815 0 0 +0.0002264529549 1.633085043e-05 2.786894255e-05 0 0 +0.0006731646815 2.786894255e-05 2.624532188e-05 0 0 +0 0 0 0 0 +0 0 0 0 0 +2.973433425e-05 -0.0004865876188 -0.00029917938 -1.44033683e-05 -5.698783118e-05 +-0.0004865876188 -0.001546570343 -2.676040306e-05 0.0002096045528 0.001482276428 +-0.00029917938 -2.676040306e-05 0.0004619503493 0.0001314122183 0.0008579589368 +-1.44033683e-05 0.0002096045528 0.0001314122183 6.905386379e-06 2.911372341e-05 +-5.698783118e-05 0.001482276428 0.0008579589368 2.911372341e-05 7.744495099e-05 +1.108617302e-05 -0.0001864145068 -0.0001130967523 -6.018209301e-06 -1.97880021e-05 +-0.0001864145068 -0.0004926514023 -7.989203576e-07 0.0001044662368 0.0005159385784 +-0.0001130967523 -7.989203576e-07 0.0001558676655 6.311043064e-05 0.000297961522 +-6.018209301e-06 0.0001044662368 6.311043064e-05 3.264080949e-06 1.057691168e-05 +-1.97880021e-05 0.0005159385784 0.000297961522 1.057691168e-05 2.606699906e-05 +0.2468272073 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.00167154664 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.03577903311 0.01071459164 0.01910279111 0 0 +0.01071459164 0.03700025094 0.001984456221 0 0 +0.01910279111 0.001984456221 0.03970779112 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.01104255969 0.001350153689 0.002404000374 0 0 +0.001350153689 0.004170829772 -0.004921522859 0 0 +0.002404000374 -0.004921522859 -0.001838848389 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.01011931556 -0.006664674715 -0.01208870312 -0.001064189089 0.001444326838 +-0.006664674715 0.004120206986 0.02138042423 0.001688007153 0.008777879195 +-0.01208870312 0.02138042423 0.03094305691 -0.009302712982 0.008363849413 +-0.001064189089 0.001688007153 -0.009302712982 0.02639927355 0.01605888065 +0.001444326838 0.008777879195 0.008363849413 0.01605888065 0.0100720131 +-0.00527671289 -0.001647329997 -0.003001193299 -0.001842089976 0.002900777385 +-0.001647329997 0.001418381684 0.006854300905 0.001560251853 0.002135639639 +-0.003001193299 0.006854300905 0.01000238298 -0.002190874811 0.0008499632043 +-0.001842089976 0.001560251853 -0.002190874811 0.00489649277 0.004843806286 +0.002900777385 0.002135639639 0.0008499632043 0.004843806286 -2.630764075e-05 +-6.354261522e-05 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +3.358916299e-06 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.003424722132 0.002096205457 0.002028259401 0 0 +0.002096205457 5.363092469e-07 3.456488941e-05 0 0 +0.002028259401 3.456488941e-05 6.728995349e-05 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.0009371333353 0.0005665393798 0.0007498455115 0 0 +0.0005665393798 1.397282004e-07 9.030264197e-06 0 0 +0.0007498455115 9.030264197e-06 2.388765608e-05 0 0 +0 0 0 0 0 +0 0 0 0 0 +1.913548457e-05 -1.965402895e-05 -0.0009151359291 3.224574313e-05 -8.717317455e-06 +-1.965402895e-05 1.875706769e-05 0.001194109361 -2.964936118e-05 6.654423323e-06 +-0.0009151359291 0.001194109361 -0.001426614058 -0.002159120223 0.0008256797137 +3.224574313e-05 -2.964936118e-05 -0.002159120223 4.591444213e-05 -9.108769022e-06 +-8.717317455e-06 6.654423323e-06 0.0008256797137 -9.108769022e-06 2.736230695e-07 +6.914217581e-06 -6.326860851e-06 -0.0003384138693 1.114998856e-05 -2.188269114e-06 +-6.326860851e-06 5.643111299e-06 0.0003594494805 -9.593458072e-06 1.699910772e-06 +-0.0003384138693 0.0003594494805 -0.0003783768551 -0.0007531004985 0.0002100369567 +1.114998856e-05 -9.593458072e-06 -0.0007531004985 1.544248768e-05 -2.268946809e-06 +-2.188269114e-06 1.699910772e-06 0.0002100369567 -2.268946809e-06 6.717881752e-08 +0.04259338371 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.004814980404 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.04471952535 0.0131309491 -0.02379585118 0 0 +0.0131309491 0.03069840835 -0.05517098238 0 0 +-0.02379585118 -0.05517098238 0.09915216436 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.00261375097 0.0009070029131 -0.001707968071 0 0 +0.0009070029131 0.001107041541 -0.002016220451 0 0 +-0.001707968071 -0.002016220451 0.003671143222 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.005994883038 0.0006703914745 -0.00126207057 0.004182603953 0.006978002938 +0.0006703914745 -0.001683933838 0.003043967403 -0.0003327526205 -0.0006252644764 +-0.00126207057 0.003043967403 -0.00550203261 0.0005690085765 0.00107627629 +0.004182603953 -0.0003327526205 0.0005690085765 0.002553882839 0.004228831431 +0.006978002938 -0.0006252644764 0.00107627629 0.004228831431 0.006999090756 +0.001365079871 0.0001212630881 -0.0002294419811 0.0009744928665 0.001619382589 +0.0001212630881 -0.0005354456952 0.0009662043382 -0.0002013647185 -0.0003481857193 +-0.0002294419811 0.0009662043382 -0.001743421282 0.0003562728711 0.0006165428262 +0.0009744928665 -0.0002013647185 0.0003562728711 0.0005438847101 0.0008966610079 +0.001619382589 -0.0003481857193 0.0006165428262 0.0008966610079 0.00147782541 +-0.01992793433 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.002360660836 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.002252505709 -0.005606179149 0.01000109625 0 0 +-0.005606179149 0.00578378258 -0.01052754072 0 0 +0.01000109625 -0.01052754072 0.01914907221 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.00190147877 -0.001817465683 0.003303651546 0 0 +-0.001817465683 0.00150253279 -0.002751308403 0 0 +0.003303651546 -0.002751308403 0.005035964211 0 0 +0 0 0 0 0 +0 0 0 0 0 +9.757405877e-05 -0.0006588016587 0.001186153093 -0.0001542888311 -0.0002050031722 +-0.0006588016587 0.003536981805 -0.006442151097 0.001271632561 0.001810748856 +0.001186153093 -0.006442151097 0.01172599627 -0.002270885235 -0.00322558995 +-0.0001542888311 0.001271632561 -0.002270885235 0.000185957488 0.0002165155299 +-0.0002050031722 0.001810748856 -0.00322558995 0.0002165155299 0.0002309662722 +0.0001123282541 -0.0003621062505 0.0006700628777 -0.0001783255735 -0.0002623237848 +-0.0003621062505 0.0009518240382 -0.001749060301 0.0003571519987 0.0005112725691 +0.0006700628777 -0.001749060301 0.00321319772 -0.0006485171837 -0.0009270781377 +-0.0001783255735 0.0003571519987 -0.0006485171837 6.31411625e-05 7.86253529e-05 +-0.0002623237848 0.0005112725691 -0.0009270781377 7.86253529e-05 9.376306403e-05 +-8.238817545e-05 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +3.299161345e-06 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.002570675221 0.0005103975737 -0.002242892989 0 0 +0.0005103975737 2.290837502e-05 -5.443936554e-05 0 0 +-0.002242892989 -5.443936554e-05 5.327937139e-05 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.0007580330827 0.0002528288618 -0.0007123865416 0 0 +0.0002528288618 1.073581404e-05 -1.773428359e-05 0 0 +-0.0007123865416 -1.773428359e-05 1.635219362e-05 0 0 +0 0 0 0 0 +0 0 0 0 0 +1.934303965e-05 -0.0005368967288 0.0003130417744 -9.550722309e-06 3.65007139e-05 +-0.0005368967288 -0.001653202816 2.314271546e-05 0.0002361081543 -0.001588134963 +0.0003130417744 2.314271546e-05 0.0004815705526 -0.0001393118751 0.0008933000794 +-9.550722309e-06 0.0002361081543 -0.0001393118751 4.664962868e-06 -1.902917821e-05 +3.65007139e-05 -0.001588134963 0.0008933000794 -1.902917821e-05 4.890705652e-05 +7.192153166e-06 -0.0002046018428 0.0001183463608 -3.968994492e-06 1.263675376e-05 +-0.0002046018428 -0.0005250345934 -9.734275894e-07 0.0001159726972 -0.0005513343495 +0.0001183463608 -9.734275894e-07 0.0001621606707 -6.693418242e-05 0.0003096933627 +-3.968994492e-06 0.0001159726972 -6.693418242e-05 2.188813692e-06 -6.880996008e-06 +1.263675376e-05 -0.0005513343495 0.0003096933627 -6.880996008e-06 1.640296359e-05 +6.287502544e-05 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +-2.923747363e-06 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.003214096681 0.001973396081 -0.001952869327 0 0 +0.001973396081 5.04888593e-07 3.204580347e-05 0 0 +-0.001952869327 3.204580347e-05 -6.304554674e-05 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.0009023997939 0.0005473212291 -0.0007160473282 0 0 +0.0005473212291 1.349882952e-07 8.546318732e-06 0 0 +-0.0007160473282 8.546318732e-06 -2.236381534e-05 0 0 +0 0 0 0 0 +0 0 0 0 0 +-1.782921947e-05 1.840754948e-05 0.0008666005938 -3.026960629e-05 -7.999594459e-06 +1.840754948e-05 -1.762012834e-05 -0.001132276587 2.789228444e-05 5.95050799e-06 +0.0008666005938 -0.001132276587 -0.00135813348 0.002047670271 0.0007849492923 +-3.026960629e-05 2.789228444e-05 0.002047670271 -4.324005376e-05 -7.980139068e-06 +-7.999594459e-06 5.95050799e-06 0.0007849492923 -7.980139068e-06 2.601254144e-07 +-6.479920534e-06 6.043659118e-06 0.0003208902115 -1.056266218e-05 -2.099477069e-06 +6.043659118e-06 -5.464433877e-06 -0.0003509871098 9.192829439e-06 1.599111163e-06 +0.0003208902115 -0.0003509871098 -0.0003803525462 0.0007206817305 0.0002116737462 +-1.056266218e-05 9.192829439e-06 0.0007206817305 -1.470009087e-05 -2.05003299e-06 +-2.099477069e-06 1.599111163e-06 0.0002116737462 -2.05003299e-06 6.770230804e-08 +0.248595691 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.0002037429842 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.04253976864 0.01147206409 -0.02006736562 0 0 +0.01147206409 0.03898037567 0.002471760913 0 0 +-0.02006736562 0.002471760913 0.03611613932 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.01262999316 0.0009542729416 -0.001575784393 0 0 +0.0009542729416 0.004253507666 0.005362552466 0 0 +-0.001575784393 0.005362552466 -0.002344976701 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.01366707519 -0.007717886675 0.01393351076 -0.002647814641 -0.003900888255 +-0.007717886675 0.004919870038 -0.02523830866 0.002412135973 -0.009856140952 +0.01393351076 -0.02523830866 0.03667396445 0.01020794254 0.008879194081 +-0.002647814641 0.002412135973 0.01020794254 0.02859618107 -0.01935850294 +-0.003900888255 -0.009856140952 0.008879194081 -0.01935850294 0.009015416006 +-0.006145297263 -0.001641756133 0.002971565905 -0.002104358769 -0.003286437082 +-0.001641756133 0.001590037462 -0.007771845706 0.002081133499 -0.002124230819 +0.002971565905 -0.007771845706 0.01135965242 0.002074079564 0.0002988564521 +-0.002104358769 0.002081133499 0.002074079564 0.005081144516 -0.004953940939 +-0.003286437082 -0.002124230819 0.0002988564521 -0.004953940939 8.10393345e-05 diff --git a/tests/09_DeePKS/NO_GO_deepks_UT/gedm_ref.dat b/tests/09_DeePKS/NO_GO_deepks_UT/gedm_ref.dat new file mode 100644 index 0000000000..05769bc66e --- /dev/null +++ b/tests/09_DeePKS/NO_GO_deepks_UT/gedm_ref.dat @@ -0,0 +1,30 @@ +-0.0123152 +-0.00174896 +-0.000490982 0.000185466 0.000301842 0.000185466 0.00229147 0.000947966 0.000301842 0.000947966 -0.00369704 +0.000239378 0.000248976 0.000122279 0.000248976 0.00231572 0.000302943 0.000122279 0.000302943 -0.000380869 +-0.00532973 -0.00097044 0.000112163 -0.001209 -0.000182273 -0.00097044 0.00172838 0.000543801 0.00213172 -0.000214823 0.000112163 0.000543801 0.000260905 0.00027027 -0.000495474 -0.001209 0.00213172 0.00027027 0.00363753 -0.000727803 -0.000182273 -0.000214823 -0.000495474 -0.000727803 0.00055767 +0.000269229 0.000363932 0.000107088 0.000495872 -8.72832e-05 0.000363932 -0.0011638 -0.00111668 -0.000482061 -0.000541426 0.000107088 -0.00111668 0.000791301 0.000438318 0.000181878 0.000495872 -0.000482061 0.000438318 -0.00160465 0.000770512 -8.72832e-05 -0.000541426 0.000181878 0.000770512 0.00068476 +-0.0124649 +-0.00164849 +-0.000142048 6.46642e-05 7.10416e-05 6.46642e-05 0.00300899 0.000702492 7.10416e-05 0.000702492 -0.00296457 +0.00243575 0.000211441 -1.20241e-05 0.000211441 -0.000295339 -0.00014708 -1.20241e-05 -0.00014708 0.000687397 +0.00540957 0.000217344 -2.97995e-05 4.08288e-06 3.45642e-06 0.000217344 0.000335716 0.000962472 -3.33602e-05 -4.38545e-05 -2.97995e-05 0.000962472 -0.00539522 9.5031e-05 0.000192357 4.08288e-06 -3.33602e-05 9.5031e-05 0.000725737 0.000130217 3.45642e-06 -4.38545e-05 0.000192357 0.000130217 -0.000259694 +-0.00188718 -0.000126929 -1.16244e-06 -4.26169e-06 -8.75969e-06 -0.000126929 0.000725236 4.47908e-05 0.000143966 0.000116627 -1.16244e-06 4.47908e-05 0.00050641 -6.87989e-05 3.37606e-06 -4.26169e-06 0.000143966 -6.87989e-05 -0.000754452 -0.00126491 -8.75969e-06 0.000116627 3.37606e-06 -0.00126491 0.000630072 +-0.0129652 +-0.0017353 +-0.00297552 0.000980399 -0.000520382 0.000980399 -0.0004614 0.000187874 -0.000520382 0.000187874 0.00321702 +-0.000141097 0.000282264 -0.000259846 0.000282264 0.000487295 0.000115772 -0.000259846 0.000115772 0.00259453 +-0.000210306 -0.00341164 0.000238019 -0.00170388 -0.000343658 -0.00341164 -0.00334934 -0.000205588 0.00254571 -0.000221214 0.000238019 -0.000205588 0.000410763 0.000282241 6.05991e-05 -0.00170388 0.00254571 0.000282241 0.00384763 0.000131777 -0.000343658 -0.000221214 6.05991e-05 0.000131777 0.000617126 +0.000688573 0.000238199 -0.000541112 0.00114103 0.000144063 0.000238199 7.92607e-05 0.000242875 -0.00114076 -7.7933e-05 -0.000541112 0.000242875 -0.00127667 -0.00040977 0.000513302 0.00114103 -0.00114076 -0.00040977 -0.000767995 9.78296e-05 0.000144063 -7.7933e-05 0.000513302 9.78296e-05 0.000529913 +-0.0128504 +-0.00171635 +-0.00281276 -4.92685e-06 -0.00119588 -4.92685e-06 0.00249763 -0.00144355 -0.00119588 -0.00144355 0.00012916 +-3.77755e-05 0.000131551 -0.000476648 0.000131551 0.00224135 -0.000747162 -0.000476648 -0.000747162 0.000712668 +-0.000778033 0.00169461 0.00333471 -4.31671e-05 -0.000811796 0.00169461 -0.000669257 -0.000927765 0.000968866 -0.00154283 0.00333471 -0.000927765 -0.00127674 0.00176338 -0.00209952 -4.31671e-05 0.000968866 0.00176338 0.00113829 -0.00122188 -0.000811796 -0.00154283 -0.00209952 -0.00122188 0.0027828 +-0.000537141 0.000374702 -0.00118079 0.000187866 0.000202991 0.000374702 0.000960768 -0.00027912 -0.000404561 0.000905294 -0.00118079 -0.00027912 -0.000431822 -5.2106e-05 0.00029738 0.000187866 -0.000404561 -5.2106e-05 -5.5081e-05 0.00104723 0.000202991 0.000905294 0.00029738 0.00104723 -0.000692059 +-0.0127853 +-0.00170528 +-0.00280012 -0.000350666 0.00103446 -0.000350666 0.00238592 0.00154874 0.00103446 0.00154874 0.000246375 +0.000129147 -1.56268e-05 0.000497403 -1.56268e-05 0.00221681 0.000809292 0.000497403 0.000809292 0.000556031 +-0.000807886 0.00178929 -0.00333529 7.8294e-05 0.000523234 0.00178929 -0.000616226 0.000736256 0.000785051 0.00151128 -0.00333529 0.000736256 -0.00131359 -0.00168286 -0.00226033 7.8294e-05 0.000785051 -0.00168286 0.00121253 0.00123408 0.000523234 0.00151128 -0.00226033 0.00123408 0.00265594 +-0.00082005 -0.000137113 0.00106147 0.00018526 8.2782e-05 -0.000137113 0.00110551 0.000657149 -0.000121708 -0.000599431 0.00106147 0.000657149 -0.000177455 0.00021974 0.000293612 0.00018526 -0.000121708 0.00021974 3.41997e-05 -0.00110066 8.2782e-05 -0.000599431 0.000293612 -0.00110066 -0.000901877 diff --git a/tests/09_DeePKS/NO_GO_deepks_UT/gvepsl_ref.dat b/tests/09_DeePKS/NO_GO_deepks_UT/gvepsl_ref.dat new file mode 100644 index 0000000000..ad17be1550 --- /dev/null +++ b/tests/09_DeePKS/NO_GO_deepks_UT/gvepsl_ref.dat @@ -0,0 +1,30 @@ +0.2954061534 0.03799107986 0.3743442133 0.2422523507 0.09619726439 0.01205035824 0.009076173037 0.003258408394 -1.488836576e-16 3.130643398e-05 0.04571334328 0.005477215739 0.002868259407 4.667149945e-17 8.234857233e-06 0.009842868821 -0.0001930654161 0.0004445635218 +-0.04011155194 0.004646645224 0.01229361747 0.0122355935 0.004192899826 0.006789672025 0.001763761828 0.003122007219 2.198945621e-15 6.785837089e-06 0.0009967637704 0.01454446251 0.01053132319 8.401622731e-15 1.177163696e-08 0.002194276009 0.003822232409 0.002882222569 +1.380572984 0.02507554609 0.2108745632 0.2006005983 0.1739857529 0.04971102609 0.04624169368 -0.023230559 5.27211977e-14 -4.347114711e-07 -0.006628482928 0.1637923886 0.1545501039 1.472977144e-14 -4.424077469e-08 -0.02092590794 0.04020052313 0.03797500904 +0.2893550246 0.001599910982 0.06412912652 0.05635840387 0.02605371459 0.01536302776 0.01162459673 -0.006572203388 -5.068445125e-14 -1.050270913e-08 -0.008855190968 0.04985185207 0.04343754558 -1.936492555e-14 1.259992026e-07 -0.003944935241 0.01156320772 0.009342843296 +0.2759140717 -0.0003299212465 0.06836461611 0.06351844715 0.01811585254 0.01613796589 0.0112311921 -0.005127520277 -4.300592455e-14 1.079975961e-06 -0.01246384366 0.05317487805 0.047700585 -1.453664268e-14 3.999781337e-07 -0.002717830771 0.01139890557 0.009588206319 +-0.003098580915 0.0003766510133 0.007384920109 0.02270668674 -0.02570271465 -0.0002953816185 0.002741530788 -0.001721171374 -2.902679698e-16 -1.958649368e-05 0.007118112315 -0.006493924617 -0.0004554139508 9.344450417e-17 -5.168512493e-06 0.00139464219 -0.0008459786173 -3.858245829e-05 +0.0001616728331 -1.229497353e-05 -0.0008036664853 0.002077672398 -0.0006651817314 0.0001327336347 -0.0001970582159 0.0002185673341 -1.428417167e-14 1.137053469e-06 8.514187912e-06 0.0003411946744 5.025680072e-05 -7.628189547e-15 3.411474693e-09 -6.796650789e-06 6.394980638e-05 3.675944806e-05 +0.001398209662 -0.0002433058434 0.002346013067 -0.002475791979 -0.0007796507271 0.00101374323 -0.0009440373159 -0.000275679513 -2.137952048e-14 -5.007035707e-07 0.0005529464113 3.095492815e-05 -0.00106896618 -1.076934674e-15 -8.795328843e-08 -7.756173841e-07 0.0003675431045 -0.0004887329891 +0.5644494357 0.00118760503 0.1050292266 0.09289650545 0.04728979 0.02330069481 0.01804229529 -0.01242331151 -2.545603463e-14 -4.78393437e-06 -0.01643820037 0.07738956723 0.07157526982 -1.107131439e-14 -1.4308228e-06 -0.008030812465 0.01682607711 0.01467193388 +-0.5460186499 0.003066404385 -0.1128482721 -0.101403536 -0.0322506736 -0.02388589739 -0.01466530398 0.008224461033 3.709136826e-14 4.263471862e-06 0.02270721827 -0.08167427378 -0.07659686795 1.718636381e-14 1.125358011e-06 0.006133784242 -0.01623009693 -0.01433139179 +0.005486539023 -0.0001932778559 -0.1425132211 0.1695291174 -0.03282364692 -0.00525379879 0.006546377535 -0.00212330788 -2.263919691e-16 4.839983049e-05 -0.006937279201 0.002060610084 0.005441116585 7.167572577e-17 1.277305666e-05 -0.002344019462 -0.0005116953323 0.002348680992 +-0.02481795753 0.0009350625264 -0.0429433071 0.02547021479 0.004903285262 -0.00141636112 -0.00871152303 0.007666784373 3.176501306e-15 1.76241481e-05 0.001816618458 -0.0237530485 0.01516674368 1.337657071e-14 1.940888093e-08 -0.0007406621233 -0.00570531989 0.005159906666 +-0.4485384979 -0.009414113827 -0.05252112537 -0.08097079295 -0.06151860546 -0.01122877489 -0.01912997865 0.006037901457 4.492161928e-14 -5.348350802e-07 0.003406143821 -0.04190277086 -0.0642574021 8.490444155e-15 -5.216605365e-08 0.006851704528 -0.009285665154 -0.01632554542 +0.2270485521 0.001507083806 0.03466023365 0.04772524384 0.02310957727 0.006975858495 0.008992182789 -0.003080801164 -6.882217684e-14 -8.214062437e-07 -0.006754566524 0.0266512315 0.03707358417 -2.905575361e-14 -5.380014054e-07 -0.003282760731 0.005202111674 0.008337501234 +0.2223877131 -0.0002127558542 0.03677928236 0.05329486166 0.0175529298 0.006835396215 0.006217790065 0.0006163041695 -5.784839044e-14 8.394603539e-07 -0.009245200094 0.02791545228 0.04054244913 -2.543957066e-14 -1.285457855e-07 -0.002527307857 0.004790731835 0.008577302132 +0.320586926 0.03754650505 0.2073227832 0.3243136767 0.1830525624 0.006891611943 0.007216099712 0.007750602057 1.517916848e-16 -3.25195852e-05 0.005340095728 0.04668893144 0.003962973891 -4.916742655e-17 -8.612066601e-06 0.0001380370446 0.00830857464 -0.0002897042722 +-0.04276062214 0.00506058345 0.01172266704 0.007223392943 0.008751806047 0.005917173023 0.004120490481 0.001505236498 -1.924081673e-15 -8.099796962e-06 0.001040777967 0.0113827985 0.01320959078 -5.79577607e-15 -1.028888164e-08 0.002272249229 0.003180795916 0.003440338047 +-0.02341152238 0.0008998181301 0.001156802978 0.005565899714 0.0009146697116 0.0002229137939 0.001903882411 0.001126661515 -5.678197235e-14 5.478055894e-07 0.001064207839 0.003954975315 0.003333926592 -1.781639368e-14 6.813700496e-08 0.0003783906941 0.001223891757 0.001444551882 +0.9818454385 0.00356687021 0.1810997016 0.1814787925 0.08644504661 0.03765468232 0.03895975725 -0.02053786993 4.521531053e-14 6.361685555e-07 -0.0294834809 0.1393900049 0.1388173947 1.534472148e-14 1.59396418e-07 -0.01380401089 0.03002819464 0.0298937263 +0.9483838232 -0.003900927475 0.199138866 0.1948810093 0.05923867006 0.038672722 0.03503879617 -0.01431679635 3.310022138e-14 -6.194865985e-07 -0.04059007595 0.1495889887 0.1469643638 1.035901141e-14 -1.176002388e-07 -0.01023382397 0.02986279289 0.02884866704 +-0.003699913138 0.0001588773829 0.05407790622 -0.06477595082 0.01085622736 0.001589732552 -0.002537216913 0.001472712793 3.913985273e-16 2.642670953e-05 0.0006755192844 0.001896462907 -0.002904902222 -1.22843816e-16 6.974938749e-06 -0.0002837208885 0.001578756153 -0.000965309346 +-0.002252022012 -5.385927945e-05 0.006453781925 -0.007419755884 -0.001120091268 6.654988694e-05 0.002533587509 -0.003068802022 2.806374549e-14 -2.291546435e-06 0.0002462109507 0.005973411312 -0.007794380632 1.940311927e-14 -1.090834083e-08 -0.0001429320711 0.001705424732 -0.001933401307 +0.0001224535755 1.589592515e-06 -0.001021498002 0.001266946768 -2.450120737e-05 -0.0003724530421 0.0004567750027 -2.916309522e-05 5.898342021e-14 1.363410058e-06 0.0001365487669 -0.0005735473622 0.0005996956231 6.594240513e-15 4.705181712e-07 9.821461119e-07 -0.0001834107213 0.0002298038641 +0.4060394472 0.002749217897 0.05877976432 0.09010191817 0.04136807486 0.01115037064 0.01789995012 -0.005585030999 1.91681819e-14 4.490900312e-06 -0.01189993702 0.04576333232 0.06942831539 1.162694486e-14 9.400611386e-07 -0.005869894305 0.00866389819 0.01596316941 +-0.3977991145 0.0003253369583 -0.06436622661 -0.09791521131 -0.03152591217 -0.01126993862 -0.01235226803 -0.001162392703 -2.45944852e-14 -4.086475812e-06 0.016478021 -0.04900447445 -0.07458920599 -1.305356713e-14 -5.404068881e-07 0.004519554495 -0.008248855432 -0.01600859142 +0.3426579006 0.02651431782 0.11442276 0.1326757719 0.3574382701 0.00426954642 0.004820434867 -0.002532030803 -5.440639598e-18 1.894109929e-06 0.002764557255 0.002259152585 0.04162535083 9.916990195e-19 4.510655229e-07 4.627090261e-05 -0.0002700579522 -0.0008948984641 +1.088671147 -0.01870932347 0.4043161795 0.4155017965 -0.07958919776 0.04165496306 0.05711191038 0.05937574471 -3.554420603e-15 1.969138926e-06 -0.0906516441 0.2616054087 0.2693712664 -3.679627554e-14 -5.777338177e-08 0.04211847279 0.0249697318 0.02682195873 +0.1199679613 0.004315426111 0.01727821748 0.02961656926 0.02272588001 0.003702083776 0.006640720174 0.0003189895206 1.638501123e-14 -1.481091692e-07 -0.002856145985 0.01474106163 0.02872079747 7.82742944e-15 -3.03657983e-08 -0.001984586462 0.003388838076 0.007308271317 +0.1368351366 0.003007671511 0.02461896591 0.04191256383 0.02115991806 0.004683903129 0.007008608497 0.001983451007 3.17546001e-15 -5.741782056e-07 -0.005836570794 0.02047117778 0.03798817606 3.913391037e-15 -4.155046888e-07 -0.001930886027 0.004083435783 0.009209881236 +0.1326257852 0.002061794257 0.02706766313 0.04638019612 0.01797765853 0.004748156179 0.002753388042 0.007518959588 1.443527441e-15 -5.322840026e-07 -0.00760851781 0.02208329695 0.04174190955 1.722074974e-15 -4.660482892e-07 -0.001199463875 0.003959878549 0.009673948804 diff --git a/tests/09_DeePKS/NO_GO_deepks_UT/gvx_ref.dat b/tests/09_DeePKS/NO_GO_deepks_UT/gvx_ref.dat new file mode 100644 index 0000000000..f3ed0fb300 --- /dev/null +++ b/tests/09_DeePKS/NO_GO_deepks_UT/gvx_ref.dat @@ -0,0 +1,75 @@ +-0.01548257497 5.494390654e-05 0.2884424894 -0.2416248422 -0.05778796982 0.0124997455 -0.009208113991 -0.002713952924 -2.144892648e-17 3.085314466e-06 0.00458303819 -0.003928227449 -0.0002700604663 4.450675701e-18 8.133452121e-07 0.0005715368601 0.0004716305944 0.0003262986782 +-0.01434215032 0.0006135991975 -0.002812605192 -0.003690655658 0.002479491244 -0.000711318656 0.0002077959899 -0.0003701702069 -3.492035131e-15 -7.812484343e-06 0.001151961716 0.002824054317 -0.006504115863 -8.279423916e-14 -1.182657312e-07 -0.0006109979278 0.00130942345 -0.001257160724 +0.7422510548 0.01047440296 0.08103814455 0.08175402739 0.08516613663 0.01734846116 0.01739632231 -0.01366555992 -1.061613163e-14 1.150247399e-07 -0.003941827451 0.06466321636 0.06514160273 -4.138147362e-15 1.820929713e-08 -0.01068590945 0.0143528188 0.01478373113 +-0.3623937084 0.0004460780824 -0.04758446167 -0.04889606801 -0.02733828591 -0.009103297037 -0.008977344438 0.008525477596 -2.589371533e-14 -2.006707637e-06 0.01028414398 -0.03639329508 -0.03905627213 -1.403759191e-14 -7.35376552e-07 0.004874114822 -0.00670136849 -0.007549899673 +-0.3607107397 0.003205785842 -0.05355495482 -0.05437560643 -0.01882751668 -0.009588764856 -0.007252377105 0.006495911183 -2.615239874e-14 -1.304539182e-06 0.0143840586 -0.04025339189 -0.04250728974 -1.590455006e-14 -4.61781064e-07 0.003783779714 -0.006662958858 -0.007317193488 +0.005678289085 -0.0001311451398 -0.06866032543 0.03579116674 0.03616022096 -0.001833253926 -0.001191016692 0.002653968783 3.436207066e-17 1.935889502e-06 -0.002126064107 0.00202022796 -0.0001811083254 -8.314032693e-18 5.110791749e-07 -7.664091792e-05 -0.0002069781535 -0.0003051251874 +-0.002633446556 -4.342591322e-06 -0.000429867937 -0.0008659795371 -0.0003563088943 4.857779622e-05 2.899584082e-05 -0.0003259250318 -1.26884244e-14 6.410844237e-07 8.882380045e-05 -0.001561378682 0.000407576255 -1.399912692e-13 6.861294831e-08 -2.187684637e-05 -0.0003410730738 0.000182601384 +0.0003297547696 -7.373850327e-05 -0.0004018158747 0.0001162761509 -0.0002193977537 -0.0001046616595 3.549969181e-05 -4.242585279e-05 2.624344639e-14 6.750587876e-07 -0.0001424891283 -0.0003507293163 0.0002060493924 3.078349684e-15 2.601937021e-07 -3.643116007e-06 -0.0001737254426 0.0001014937341 +-0.6502913699 0.0004679525617 -0.08688147767 -0.08709110137 -0.05029361913 -0.01659626356 -0.01596687323 0.01495033069 2.024068376e-14 2.285072342e-07 0.01788241921 -0.06772690006 -0.06861586326 1.147089647e-14 1.097681958e-07 0.00871872859 -0.01290051123 -0.01304478977 +0.6486826899 -0.005567378938 0.09677629501 0.09724051808 0.03466654752 0.0171064114 0.01306136332 -0.01136293025 -1.806846864e-14 2.778742772e-07 -0.02540576448 0.07385268071 0.07530883175 -1.079097759e-14 7.462531913e-08 -0.006788728961 0.01252805203 0.0128153841 +0.04177570674 -0.003833883588 -0.1638288986 -0.191509659 0.3699912399 -0.006300325374 -0.007087710975 0.007393552821 4.904993616e-18 -3.284970309e-07 -0.003666858082 -0.003027027087 0.001778218441 1.128780444e-18 -9.162668127e-08 -0.0005272617424 0.0002542499609 -0.00559130907 +0.7134057583 -0.01987536419 0.1894207311 0.1904830997 -0.05430594667 0.01757087028 0.02077304467 0.02085917222 -3.110400367e-16 -1.610338076e-07 -0.05320132453 0.1244599564 0.1249225076 -2.036769264e-14 -3.586024168e-08 0.02441611887 0.006646230082 0.006644867301 +-0.2398852528 -0.003983784973 -0.02644929061 -0.02838531147 -0.02942642187 -0.005665309977 -0.006097131162 0.004079055853 -3.051351299e-14 3.091534939e-07 0.0002813577284 -0.02249365733 -0.02077556598 -1.184935351e-14 5.149102468e-08 0.003401044386 -0.005157727329 -0.004793585189 +-0.2653539434 -0.0005654130723 -0.03587558956 -0.03878037182 -0.02301671532 -0.006861758066 -0.007022265901 0.005537871896 -1.297753785e-14 1.851553481e-06 0.00663339746 -0.02965473144 -0.02861613098 -8.390779214e-15 7.428759662e-07 0.003579202024 -0.005863689838 -0.005494858808 +-0.2683120973 0.001491561749 -0.04038556799 -0.04381134686 -0.01713041243 -0.007155438411 -0.005318641437 0.003455222756 -7.201568845e-15 2.057038194e-06 0.009787958115 -0.03286495172 -0.03181620493 -4.45936307e-15 8.506882724e-07 0.0028511835 -0.005870061236 -0.005470112155 +0.003051358242 0.0001973016416 -0.01961287539 -0.002580141532 0.03021277891 -0.001257696035 -0.0001336223293 0.001663919285 9.978256832e-17 -2.115397016e-05 0.001800430888 0.0002449343405 -0.002204490405 -3.109313352e-17 -5.582524408e-06 0.0008618486242 8.092628252e-05 -0.001078425289 +0.01460468264 -0.0007112690982 0.01970261907 -0.009581648406 -0.004418757893 0.0009953281869 0.003414290198 -0.003122036729 6.511670317e-16 -7.643492919e-07 -0.001165214235 0.009075968477 -0.004529595727 7.604044329e-14 1.091471826e-07 0.000525098542 0.002008182484 -0.001810143723 +-0.01319353149 0.0006277859927 7.485233494e-05 0.01188237664 0.0008961815187 2.867249445e-05 0.003453165735 0.0007544439735 -4.192259599e-14 4.525618267e-07 1.379986542e-06 2.526338771e-05 0.008349535537 -1.169753484e-14 5.53455617e-08 8.377907485e-06 1.431793111e-05 0.002751921046 +0.006787487168 -0.0004063090445 -0.0008459850331 -0.006106280002 -0.0005612761111 -0.0003505589606 -0.00138478248 -0.0006710708666 3.610771459e-14 -1.781926507e-07 -1.520319294e-05 -0.0005887921146 -0.004126022831 1.644074155e-14 1.719166192e-08 4.838294481e-06 -0.0002188920955 -0.00128714833 +0.0071181525 -0.0004650234534 -0.0003902853122 -0.007244938579 -0.0006434778438 -0.0002629124538 -0.001030478917 -0.00132617129 2.867832368e-14 -1.085875584e-06 -1.319013601e-05 -0.0003286708058 -0.004813264871 1.332100038e-14 -2.341246895e-07 1.058984055e-05 -0.000118950011 -0.001488956977 +0.0004399502596 2.844730168e-05 -0.00309894522 0.01742047588 -0.01421211317 -0.0001446709377 0.001423292702 -0.001359342382 -1.758558345e-16 -1.178035254e-05 0.0003453864962 -0.001316521598 0.001277641613 5.474715644e-17 -3.109326643e-06 0.0001459168921 -0.0005964491929 0.000491284812 +0.00206848473 7.500119937e-05 -0.002486927136 0.002915920766 0.001190610366 -8.101028491e-05 -0.001097227981 0.001463741037 -6.797366665e-16 1.787958018e-07 -9.115422399e-05 -0.002085895356 0.003249085341 1.296292328e-13 -6.434537405e-08 5.683912151e-05 -0.0006228063411 0.0007802644635 +-2.766900249e-05 1.316570337e-06 0.0005392849012 -0.0005543130331 4.57994295e-06 0.0001952312214 -0.0002042181668 6.422418061e-06 -2.746734792e-14 -6.534588955e-07 2.228406557e-05 0.0002466692546 -0.0002716182704 -3.01520293e-15 -2.257925446e-07 -1.055650474e-07 0.0001173168319 -0.0001180406217 +0.01258322392 -0.0007532504386 0.0002916574868 -0.01297873141 -0.001053638553 0.0001126102433 -0.003322974616 -0.001205066502 -1.392381749e-15 -3.310263339e-06 8.687109298e-06 0.0002012436315 -0.008928137109 -2.567423775e-16 -9.223341253e-07 -1.729769398e-06 7.275333922e-05 -0.002847581488 +-0.01329347856 0.0008684527776 -0.0001798071149 0.01408932769 0.001228203385 -0.0001086931514 0.002511880079 0.0024082255 9.243919406e-15 3.324158319e-06 -3.555454625e-07 -0.000144932717 0.009662718368 4.085211885e-15 8.290087758e-07 -4.695686266e-06 -5.189772048e-05 0.003018994914 +-0.1559002281 -0.01008055053 -0.002552901898 -0.001567214048 -0.2543901938 -4.311196582e-05 -1.946972196e-05 -0.001015709827 1.450753636e-18 -4.978439872e-07 -0.0001564959782 -9.064809215e-05 -0.01800005732 -4.536157137e-19 -1.094625228e-07 0.0001200780125 4.288485747e-05 0.001953178061 +-0.6584984779 0.01345650382 -0.22345386 -0.2282443689 0.04875339512 -0.02246608868 -0.02989055822 -0.03081944551 1.637027787e-15 -7.26152164e-07 0.05308951609 -0.1450982707 -0.1483827986 2.127759795e-14 3.442936982e-08 -0.02458122029 -0.01239000092 -0.01313712089 +0.01533394482 -0.0007296329857 -2.592450054e-05 -0.004768502596 -0.001511690058 -6.208271532e-06 -0.001147417237 -0.001258850107 1.917561839e-15 -2.425279028e-08 0.001134739218 -3.181322198e-05 -0.006471812288 7.24310808e-17 -1.144204392e-09 -9.632466103e-05 -9.948006621e-06 -0.001785024432 +0.01833270275 -0.001097422765 -7.661442411e-05 -0.00644505496 -0.002298107362 -3.143168807e-06 -0.0009190377189 -0.002408709234 2.099690762e-15 -2.742928147e-07 0.0005519039471 -0.0001254956882 -0.00771597756 6.273860991e-16 -3.418072422e-08 -0.0002127864738 -4.062560358e-05 -0.00227937687 +0.01969436394 -0.001286617719 -2.083467044e-05 -0.007179413599 -0.002742060747 1.765772364e-05 0.0003374769583 -0.004133670998 1.179429649e-15 -3.569624436e-07 0.0004463582242 -4.239405678e-05 -0.008604278334 4.202560503e-16 -4.403060216e-08 -0.0002977069748 -1.401854786e-05 -0.002529457686 +-0.0978749605 -0.01316487075 -0.2130407789 -0.007257566838 -0.02426358333 -0.007673870259 -0.000207274938 -0.0007805971954 2.491182495e-17 -5.446403899e-06 -0.01770142063 -0.0007528564893 -0.0002429423989 -8.175729944e-18 -1.427764525e-06 -0.003824710931 -0.0001071885732 6.892453705e-05 +0.0139066722 -0.001578721016 -0.009279593416 -0.0001802038331 -0.0008924670316 -0.002416084784 -0.001698798776 -2.165098016e-05 9.639341687e-17 3.317770631e-07 -0.0003526875816 -0.008617890737 -0.000238585565 5.533632511e-17 6.185366803e-11 -0.0007231940104 -0.002328518152 -5.696700398e-05 +-0.7032312922 -0.01209572718 -0.09794951616 -0.0981931234 -0.08678128214 -0.02254506377 -0.02239848709 0.01203957742 -2.416945628e-15 -2.567890927e-08 0.003513822691 -0.07660978606 -0.07608012841 -2.848616889e-16 -8.230672456e-09 0.01054061706 -0.01833100498 -0.01852354788 +0.01282645885 -0.0005659372887 -0.006714288254 -0.002080964219 -0.0001566916507 -0.002284531356 -0.0007406077646 -0.0002279408227 1.473231347e-14 6.754771089e-07 -0.0001969760475 -0.005439738093 -0.001350492054 6.146919901e-15 1.791713722e-07 -0.0001843499208 -0.001782767559 -0.000437670136 +0.01384999961 -0.0007379273084 -0.007036266369 -0.003019670661 -0.000259702428 -0.002555983858 -0.001336395682 0.0001617617037 1.435752742e-14 3.698255233e-07 -0.0001270746844 -0.005885278828 -0.001935784436 5.946203227e-15 7.844759667e-08 -0.0002305191663 -0.00185688277 -0.0006123661508 +2.765712291e-05 3.720077601e-06 0.02036238075 -0.0233477642 0.002338746112 0.0007356468049 -0.0009812032831 0.000194405633 1.422542625e-16 9.595955332e-06 -0.001878669073 0.002128511619 -0.0001597543875 -4.596437741e-17 2.532252223e-06 -0.0005000689252 0.0005576019356 -3.99010004e-05 +2.916457569e-05 -3.310837267e-06 0.001189685587 -0.001302264186 6.214380247e-06 -2.06103457e-05 0.0003995787006 -0.0004093233243 9.078265652e-15 -6.672666382e-07 -4.52571742e-07 0.001026795406 -0.001084966637 7.336973683e-15 -3.274995636e-09 -1.789679354e-06 0.0002800299886 -0.0002947660627 +-0.0006393466189 0.000108858281 -0.0008418543798 0.0009982596025 0.0003381463824 -0.0003746796156 0.0003806652316 0.0001093219801 7.278884116e-15 1.597283949e-07 -0.0001498937733 3.528645958e-05 0.0003946084841 2.683893486e-16 1.715701531e-08 2.454526191e-06 -0.0001043909285 0.0001760819365 +0.00723547466 -0.0003192482788 -0.008685526295 -0.0004521943602 -5.567368067e-05 -0.002783533671 -0.0001324906441 -7.644734927e-05 2.997713185e-15 2.573168027e-06 3.499773229e-06 -0.005222654209 -0.000200978356 3.548101184e-16 7.362544702e-07 1.062643713e-05 -0.001714157241 -4.999374318e-05 +-0.007671490075 0.0004087366197 0.009283539995 0.0008973374162 8.862521263e-05 0.003030434937 0.000318283606 -5.123808375e-05 -9.833720972e-15 -2.555933767e-06 -7.898051518e-06 0.005549511916 0.0003924225201 -3.755216383e-15 -6.603782556e-07 -2.186680558e-05 0.00178004751 0.0001109453549 +0.03190423454 0.004291343995 0.1011177583 0.001624756044 -0.0276497488 0.003792657123 -4.559096828e-05 -0.001265615791 7.741028608e-17 -1.635250031e-05 0.003582821245 0.0002666046463 0.002970404703 -2.483857303e-17 -4.320584938e-06 0.000935241971 8.835981513e-05 0.0003455185581 +-0.01616277979 0.001834840124 0.02285690221 0.000356075832 0.0006008359032 0.001756537887 0.005508268792 0.0001023772094 -1.413597992e-15 -5.810025103e-06 2.076804464e-05 0.01296747733 0.0003633996064 -4.595476113e-15 -5.873869434e-09 2.334295533e-05 0.003619352433 9.09145889e-05 +0.2247614504 0.004705418665 0.02635109424 0.03818800495 0.03082879698 0.005636825896 0.008838887995 -0.002974585976 -6.378392968e-15 9.879575586e-08 -0.001601851696 0.02146172422 0.03056574819 7.672203169e-16 3.522663332e-09 -0.003392646564 0.004810646689 0.007656967713 +0.0001311583875 -5.787054953e-06 -0.0005697628855 -0.002167515495 1.929399857e-05 -0.0002320847707 -0.0005833891603 4.260366993e-05 2.718519895e-14 -2.000524086e-07 6.01954771e-05 0.0002288025252 -0.00134201318 1.247048921e-14 -3.356314348e-08 6.269065159e-05 7.227663683e-05 -0.0004308144694 +8.558495e-05 -4.559961992e-06 -0.0002414969708 -0.00280294775 3.469325952e-05 -0.0001587182493 -0.000617880095 -5.142642555e-05 2.175506298e-14 -8.346528609e-07 4.245281087e-05 0.0005143816637 -0.001660010119 9.993156893e-15 -2.092958701e-07 8.299433649e-05 0.0001624542912 -0.0005321394986 +0.05344704517 0.006484969473 -0.02532672345 0.1311413074 0.01761483245 -0.001846972845 0.005553309593 0.000369884667 -1.431332507e-16 5.59163416e-06 0.007774424025 0.0001860606278 0.001202916714 4.58549642e-17 1.471462346e-06 0.001608241683 -0.0004803858361 0.0003265724559 +-0.00696663245 0.0008231750485 -0.004031895656 0.007298376478 0.001185932372 0.001092296493 -0.001018036254 0.001807417112 -3.165948902e-15 4.430303371e-06 0.0001842070819 -0.001539253785 0.005593731591 -4.591323028e-16 6.233299139e-09 0.0003964604108 -0.0004732580649 0.001557061802 +-0.01249355754 0.0004596431505 0.009035601357 0.001491013851 0.000277250612 0.002846039353 0.0004810967925 0.0003834707016 9.156609086e-15 -6.815111497e-07 0.0003094171288 0.006063340443 0.0009146837909 6.106323544e-15 -1.657293427e-07 6.853333644e-05 0.002086088829 0.0003316950864 +0.3426463083 0.0005323739912 0.05962858685 0.0567654184 0.02797007004 0.01307961115 0.01099051124 -0.007713578865 -7.613582388e-15 -1.286904909e-07 -0.01006393012 0.04461434867 0.04404988284 -2.197765723e-16 7.810930725e-08 -0.004796502438 0.009450858627 0.009102612561 +-0.0001348710844 7.129399411e-06 -0.004783677766 0.000647580866 8.739656508e-05 -0.001412493743 0.0003261517667 4.196221483e-06 -8.591938475e-15 2.001531979e-06 1.456566741e-05 -0.002192720752 0.0006810450111 -4.158608274e-15 5.193907418e-07 0.0001353489152 -0.0007307710654 0.000227639195 +0.09575602972 0.01161850814 0.08922902354 0.08518846132 0.0444520721 0.002736237065 0.00259093501 0.00165608481 4.601549919e-17 -9.882359018e-06 0.003449671742 0.01299202201 0.0007573940207 -1.483596582e-17 -2.617039589e-06 0.0002548192956 0.002682241335 -0.0001621105801 +-0.01291533875 0.001526072271 0.004467360632 0.001853079832 0.002280611621 0.001849622216 0.001600964591 0.0001025237204 1.521567445e-15 -2.571307373e-06 0.0003222177319 0.004802563616 0.002797780484 -4.884459214e-16 -3.563688244e-09 0.0006837402297 0.001318211468 0.0007295886174 +-0.007047683233 0.0002592871818 0.0007031231884 0.001439518717 0.0002209743903 0.0002085526352 0.0004824021613 0.0003109943053 -2.044262799e-14 8.033786616e-08 0.0004611020545 0.001252241664 0.0008654243689 -5.648796171e-15 -4.093518511e-09 0.0001172368428 0.00045626573 0.0003666124896 +0.6134014558 0.001398373611 0.1027839693 0.1055060873 0.05198470884 0.02110359319 0.02158689084 -0.01306659744 3.171559303e-15 4.512763858e-07 -0.01790859237 0.07882334036 0.0811233263 -9.796064645e-16 8.798711777e-08 -0.008557014605 0.01642348661 0.0170766301 +-0.01725247303 0.0009119802931 0.009155250039 0.004693836196 0.0005096744771 0.002041010266 0.002957486109 2.540637085e-05 1.938478762e-14 -7.111934347e-07 2.344695905e-05 0.007014385482 0.00318086807 8.345320744e-15 -1.572986944e-07 0.0002069738727 0.002172425347 0.001022788363 +0.03962690314 0.004808109716 0.04883017502 0.07444221295 -0.03963857338 0.001747001307 0.002745070289 -0.002065180709 7.994048634e-17 1.661730839e-05 0.0003263681129 0.001990268421 0.005665072337 -2.556881e-17 4.379733424e-06 -0.0003481411398 0.0002963275669 0.001323092076 +-0.01881656624 0.002223359412 0.00782752212 0.01649638396 0.002023869072 0.001601196753 0.00260380566 0.003960843172 8.688780341e-15 2.59819868e-06 4.186050202e-05 0.005836352175 0.009207179173 7.765359264e-15 1.903078633e-10 6.237917757e-05 0.001590800649 0.002580088924 +-0.000127754268 4.700132371e-06 -0.0002581115927 -0.002091392285 4.323629121e-05 -9.863433418e-05 -0.0006452103887 6.952278433e-05 3.541736091e-14 2.30954454e-07 0.0001322602817 0.0003440880068 -0.001447114565 7.45969732e-15 1.184268849e-07 4.439038839e-05 0.0001187036462 -0.0004595789453 +0.2468272073 0.00167154664 0.03612099079 0.05114270186 0.02522338251 0.006935326121 0.009720562286 -0.003281347332 -2.1386277e-15 7.052195862e-07 -0.007240313655 0.02867297343 0.03998186999 1.26029501e-15 -4.316042962e-08 -0.003499281362 0.005545420602 0.008968140829 +-6.354261522e-05 3.358916299e-06 0.0002084961176 -0.003636466396 7.107440934e-05 0.0001249635068 -0.001045920379 7.850921721e-06 -1.534926269e-14 -1.685268854e-06 9.708029923e-06 0.0008717217914 -0.002222277993 -6.962109617e-15 -4.609665548e-07 9.31221427e-05 0.0002793518783 -0.0007223229142 +0.05685913206 0.006427655725 -0.03046211166 0.1203212432 0.0342239418 -0.001721206359 0.003995701665 0.001460746168 3.38840663e-17 1.792342543e-05 0.003543527523 0.00425008897 0.001514576557 -1.100358739e-17 4.725481375e-06 0.0007830837638 3.501753237e-05 0.0003566296182 +-0.007202572067 0.0008532158683 -0.003578524811 0.00615413142 0.001645801309 0.00103977876 -0.0009052511582 0.001706440804 5.909800265e-15 3.814753201e-06 0.0001817330186 -0.001742878271 0.005678565564 7.157213477e-15 2.823395796e-09 0.0004126329855 -0.0005158297166 0.00156720965 +-0.01333267353 0.0005338950753 0.007800917915 0.003065705519 0.000441713377 0.002321890766 0.001067902258 0.0004880678207 4.580113175e-14 1.396034923e-07 0.0001172076447 0.005857965877 0.001674306347 1.001766449e-14 1.004051563e-07 6.838113974e-05 0.00187777942 0.0006562006206 +0.0001334541053 -6.205740446e-06 -0.004483851894 0.000317893827 8.618363341e-05 -0.001341223798 0.0001122234392 8.71129581e-05 -1.733215963e-14 1.638113669e-06 -8.034616086e-06 -0.002192523381 0.0004829041824 -8.331693386e-15 4.609042106e-07 0.0001018992421 -0.0007478304822 0.0001721055778 +0.3398774587 -0.002009964479 0.06576518426 0.06399263481 0.01964330038 0.01382015491 0.009293099938 -0.005335697818 -8.294702469e-15 1.905726414e-08 -0.01425835945 0.04866006228 0.04857529403 7.962838116e-16 9.806741507e-08 -0.003699199303 0.009369562704 0.009190877421 +-0.1019019262 -0.01151953038 -0.03783213364 -0.1150523397 -0.068738926 -0.001493959006 -0.001842007736 -0.003145116844 -4.793555672e-17 1.013086673e-05 0.0002096749421 -0.01582423999 -0.001694172921 1.484526742e-17 2.683034835e-06 0.0001759736554 -0.002436415924 1.58519559e-05 +0.013451136 -0.001593420042 -0.002740251146 -0.002600756875 -0.003121127473 -0.001796579382 -0.0009323111509 -0.0008310164009 2.767790061e-15 2.418693786e-06 -0.0003194347366 -0.002182084984 -0.005369475442 3.513178329e-15 2.57110962e-09 -0.0007169128254 -0.000634362042 -0.001397688402 +0.007384944085 -0.0002957235298 1.262164923e-06 -0.001999741437 -0.000344302962 7.555741853e-05 -0.0006943489178 -0.0003843128506 1.438783408e-14 -2.616661531e-07 -0.0001910032185 -0.001183468062 -0.001194463975 5.317422235e-15 -4.746465428e-08 -0.0001159426879 -0.0002954661908 -0.0005261475386 +0.01707121554 -0.0007938274551 -0.007508622858 -0.004984060189 -0.0005817774835 -0.001836406205 -0.002164552347 -0.0006022194013 -2.501309552e-14 5.731169191e-08 1.398627422e-05 -0.006075029726 -0.003378347578 -1.059442835e-14 -1.167565843e-08 -0.0001706106526 -0.001881571479 -0.0011342651 +-0.6104652482 0.003378209247 -0.1150352779 -0.1169210194 -0.03649305059 -0.02206916345 -0.01884901311 0.008980536464 -7.289714041e-16 -3.34905395e-07 0.02539057111 -0.0862716454 -0.08854484071 2.11341502e-15 -8.595714501e-08 0.006608317581 -0.01642862716 -0.01696811273 +0.04259338371 0.004814980404 0.0164338672 0.1170099041 -0.0483127239 0.0008037789104 0.004407701376 -0.003047046494 -1.623755138e-16 5.615329415e-07 -8.583529782e-05 0.0008608021115 0.007586361838 5.072048727e-17 1.419407183e-07 -0.0001799171012 -0.0006818222004 0.001969520375 +-0.01992793433 0.002360660836 0.003348704552 0.02090880938 0.00292784657 0.001537483765 0.001005439096 0.00589705291 -8.601120969e-15 4.099012394e-06 4.917989682e-05 0.001834484819 0.01388971217 -4.080000173e-15 7.114433426e-09 7.937929032e-05 0.0005336177604 0.003821250074 +-8.238817545e-05 3.299161345e-06 0.0003822324693 -0.002942798595 6.607865063e-05 0.000133326686 -0.0009491292072 8.485744613e-05 -4.455568528e-16 -6.146509135e-07 5.349446761e-05 0.0007196583275 -0.001871255349 3.548631792e-15 -1.722963685e-07 4.353645039e-05 0.0002383250006 -0.0006187791468 +6.287502544e-05 -2.923747363e-06 0.0004009760776 -0.003749759584 7.2146167e-05 0.000161659885 -0.001195869506 0.0001095809997 -1.416849868e-14 -2.082427844e-06 -5.183229324e-06 0.0008784511704 -0.00230774827 -5.966598048e-15 -6.319716689e-07 7.017516053e-05 0.0002866182029 -0.000763090681 +0.248595691 -0.0002037429842 0.04043940352 0.05743017461 0.0197667055 0.00717153543 0.006644964953 0.0007220237458 -3.893814968e-16 8.198459645e-07 -0.01028647718 0.03152124232 0.04430277138 1.00633236e-15 -1.363952453e-07 -0.002729593005 0.005442273615 0.009254032253 diff --git a/tests/09_DeePKS/NO_GO_deepks_UT/iRmat_ref.dat b/tests/09_DeePKS/NO_GO_deepks_UT/iRmat_ref.dat new file mode 100644 index 0000000000..af12828313 --- /dev/null +++ b/tests/09_DeePKS/NO_GO_deepks_UT/iRmat_ref.dat @@ -0,0 +1,125 @@ +0 0 0 +0 1 0 +0 1 1 +1 1 0 +0 1 1 +0 2 0 +0 0 0 +0 0 1 +1 0 0 +0 0 1 +0 2 2 +0 0 2 +0 0 0 +1 0 2 +0 0 0 +2 2 0 +2 0 0 +2 0 1 +0 0 0 +2 0 1 +0 2 2 +0 0 2 +0 0 0 +1 0 2 +0 0 0 +0 0 0 +0 1 0 +0 1 1 +1 1 0 +0 1 1 +0 2 0 +0 0 0 +0 0 1 +1 0 0 +0 0 1 +0 2 2 +0 0 2 +0 0 0 +1 0 2 +0 0 0 +2 2 0 +2 0 0 +2 0 1 +0 0 0 +2 0 1 +0 2 2 +0 0 2 +0 0 0 +1 0 2 +0 0 0 +0 0 0 +0 1 0 +0 1 1 +0 1 1 +1 1 0 +0 2 0 +0 0 0 +0 0 1 +0 0 1 +1 0 0 +0 2 2 +0 0 2 +0 0 0 +0 0 0 +1 0 2 +0 2 2 +0 0 2 +0 0 0 +0 0 0 +1 0 2 +2 2 0 +2 0 0 +2 0 1 +2 0 1 +0 0 0 +0 0 0 +0 0 1 +0 0 1 +1 0 0 +0 2 0 +0 0 2 +0 0 0 +0 0 0 +1 0 2 +0 2 2 +0 0 2 +0 0 0 +0 0 0 +1 0 2 +0 2 2 +2 0 0 +2 0 1 +2 0 1 +0 0 0 +2 2 0 +0 1 0 +0 1 1 +0 1 1 +1 1 0 +0 0 0 +0 0 0 +0 1 1 +0 1 1 +1 1 0 +0 1 0 +0 2 2 +0 0 0 +0 0 0 +1 0 2 +0 0 2 +0 2 2 +0 0 0 +0 0 0 +1 0 2 +0 0 2 +2 2 0 +2 0 1 +2 0 1 +0 0 0 +2 0 0 +0 2 0 +0 0 1 +0 0 1 +1 0 0 +0 0 0 diff --git a/tests/09_DeePKS/NO_GO_deepks_UT/jle.orb b/tests/09_DeePKS/NO_GO_deepks_UT/jle.orb new file mode 100644 index 0000000000..6fecaa8b68 --- /dev/null +++ b/tests/09_DeePKS/NO_GO_deepks_UT/jle.orb @@ -0,0 +1,336 @@ +--------------------------------------------------------------------------- +Energy Cutoff(Ry) 20 +Radius Cutoff(a.u.) 2 +Lmax 2 +Number of Sorbitals--> 2 +Number of Porbitals--> 2 +Number of Dorbitals--> 2 +--------------------------------------------------------------------------- +SUMMARY END + +Mesh 205 +dr 0.01 + Type L N + 0 0 0 +1.000000000000e+00 9.999588771557e-01 9.998355147105e-01 9.996299309272e-01 +9.993421562398e-01 9.989722332485e-01 9.985202167122e-01 9.979861735385e-01 +9.973701827725e-01 9.966723355824e-01 9.958927352436e-01 9.950314971204e-01 +9.940887486459e-01 9.930646292992e-01 9.919592905814e-01 9.907728959881e-01 +9.895056209813e-01 9.881576529582e-01 9.867291912182e-01 9.852204469278e-01 +9.836316430835e-01 9.819630144724e-01 9.802148076310e-01 9.783872808018e-01 +9.764807038877e-01 9.744953584044e-01 9.724315374315e-01 9.702895455599e-01 +9.680696988392e-01 9.657723247216e-01 9.633977620041e-01 9.609463607696e-01 +9.584184823246e-01 9.558144991363e-01 9.531347947667e-01 9.503797638053e-01 +9.475498118000e-01 9.446453551854e-01 9.416668212101e-01 9.386146478614e-01 +9.354892837887e-01 9.322911882241e-01 9.290208309025e-01 9.256786919789e-01 +9.222652619442e-01 9.187810415390e-01 9.152265416659e-01 9.116022833003e-01 +9.079087973984e-01 9.041466248047e-01 9.003163161571e-01 8.964184317906e-01 +8.924535416387e-01 8.884222251345e-01 8.843250711084e-01 8.801626776859e-01 +8.759356521824e-01 8.716446109973e-01 8.672901795064e-01 8.628729919524e-01 +8.583936913342e-01 8.538529292946e-01 8.492513660070e-01 8.445896700594e-01 +8.398685183386e-01 8.350885959117e-01 8.302505959068e-01 8.253552193925e-01 +8.204031752555e-01 8.153951800774e-01 8.103319580098e-01 8.052142406487e-01 +8.000427669069e-01 7.948182828860e-01 7.895415417463e-01 7.842133035766e-01 +7.788343352618e-01 7.734054103501e-01 7.679273089189e-01 7.624008174394e-01 +7.568267286407e-01 7.512058413722e-01 7.455389604655e-01 7.398268965953e-01 +7.340704661391e-01 7.282704910361e-01 7.224277986456e-01 7.165432216037e-01 +7.106175976801e-01 7.046517696336e-01 6.986465850665e-01 6.926028962792e-01 +6.865215601233e-01 6.804034378540e-01 6.742493949824e-01 6.680603011269e-01 +6.618370298634e-01 6.555804585759e-01 6.492914683061e-01 6.429709436022e-01 +6.366197723676e-01 6.302388457091e-01 6.238290577843e-01 6.173913056492e-01 +6.109264891046e-01 6.044355105434e-01 5.979192747958e-01 5.913786889759e-01 +5.848146623272e-01 5.782281060680e-01 5.716199332362e-01 5.649910585351e-01 +5.583423981773e-01 5.516748697303e-01 5.449893919607e-01 5.382868846789e-01 +5.315682685835e-01 5.248344651061e-01 5.180863962557e-01 5.113249844635e-01 +5.045511524272e-01 4.977658229563e-01 4.909699188170e-01 4.841643625769e-01 +4.773500764508e-01 4.705279821460e-01 4.636990007082e-01 4.568640523676e-01 +4.500240563852e-01 4.431799308997e-01 4.363325927746e-01 4.294829574454e-01 +4.226319387680e-01 4.157804488670e-01 4.089293979840e-01 4.020796943279e-01 +3.952322439241e-01 3.883879504654e-01 3.815477151626e-01 3.747124365970e-01 +3.678830105719e-01 3.610603299660e-01 3.542452845872e-01 3.474387610270e-01 +3.406416425155e-01 3.338548087775e-01 3.270791358895e-01 3.203154961370e-01 +3.135647578731e-01 3.068277853781e-01 3.001054387191e-01 2.933985736122e-01 +2.867080412838e-01 2.800346883342e-01 2.733793566016e-01 2.667428830275e-01 +2.601260995228e-01 2.535298328351e-01 2.469549044172e-01 2.404021302969e-01 +2.338723209473e-01 2.273662811591e-01 2.208848099136e-01 2.144287002569e-01 +2.079987391757e-01 2.015957074739e-01 1.952203796511e-01 1.888735237815e-01 +1.825559013953e-01 1.762682673602e-01 1.700113697655e-01 1.637859498067e-01 +1.575927416716e-01 1.514324724285e-01 1.453058619151e-01 1.392136226293e-01 +1.331564596211e-01 1.271350703868e-01 1.211501447635e-01 1.152023648265e-01 +1.092924047871e-01 1.034209308931e-01 9.758860132936e-02 9.179606612189e-02 +8.604396704195e-02 8.033293751264e-02 7.466360251697e-02 6.903657850753e-02 +6.345247331791e-02 5.791188607588e-02 5.241540711817e-02 4.696361790712e-02 +4.155709094895e-02 3.619638971392e-02 3.088206855820e-02 2.561467264749e-02 +2.039473788254e-02 1.522279082639e-02 1.009934863353e-02 5.024918980770e-03 +8.824636488425e-14 -4.974919786756e-03 -9.899361531700e-03 -1.477285612199e-02 +-1.959494423991e-02 + Type L N + 0 0 1 +1.000000000000e+00 9.998355147105e-01 9.993421562398e-01 9.985202167122e-01 +9.973701827725e-01 9.958927352436e-01 9.940887486459e-01 9.919592905814e-01 +9.895056209813e-01 9.867291912182e-01 9.836316430835e-01 9.802148076310e-01 +9.764807038877e-01 9.724315374315e-01 9.680696988392e-01 9.633977620041e-01 +9.584184823246e-01 9.531347947667e-01 9.475498117999e-01 9.416668212101e-01 +9.354892837886e-01 9.290208309025e-01 9.222652619442e-01 9.152265416659e-01 +9.079087973984e-01 9.003163161571e-01 8.924535416387e-01 8.843250711084e-01 +8.759356521824e-01 8.672901795064e-01 8.583936913341e-01 8.492513660070e-01 +8.398685183386e-01 8.302505959068e-01 8.204031752555e-01 8.103319580098e-01 +8.000427669069e-01 7.895415417463e-01 7.788343352617e-01 7.679273089188e-01 +7.568267286407e-01 7.455389604655e-01 7.340704661390e-01 7.224277986455e-01 +7.106175976801e-01 6.986465850664e-01 6.865215601232e-01 6.742493949824e-01 +6.618370298633e-01 6.492914683061e-01 6.366197723676e-01 6.238290577843e-01 +6.109264891046e-01 5.979192747957e-01 5.848146623272e-01 5.716199332362e-01 +5.583423981772e-01 5.449893919607e-01 5.315682685834e-01 5.180863962557e-01 +5.045511524271e-01 4.909699188170e-01 4.773500764508e-01 4.636990007081e-01 +4.500240563851e-01 4.363325927745e-01 4.226319387680e-01 4.089293979839e-01 +3.952322439241e-01 3.815477151626e-01 3.678830105718e-01 3.542452845871e-01 +3.406416425154e-01 3.270791358894e-01 3.135647578731e-01 3.001054387191e-01 +2.867080412837e-01 2.733793566015e-01 2.601260995227e-01 2.469549044171e-01 +2.338723209472e-01 2.208848099135e-01 2.079987391756e-01 1.952203796510e-01 +1.825559013952e-01 1.700113697655e-01 1.575927416715e-01 1.453058619151e-01 +1.331564596211e-01 1.211501447634e-01 1.092924047871e-01 9.758860132929e-02 +8.604396704188e-02 7.466360251690e-02 6.345247331784e-02 5.241540711810e-02 +4.155709094888e-02 3.088206855813e-02 2.039473788247e-02 1.009934863346e-02 +2.180811153812e-14 -9.899361531766e-03 -1.959494423998e-02 -2.908311310810e-02 +-3.836039164508e-02 -4.742346358301e-02 -5.626917445163e-02 -6.489453302867e-02 +-7.329671266526e-02 -8.147305248589e-02 -8.942105846211e-02 -9.713840435981e-02 +-1.046229325594e-01 -1.118726547487e-01 -1.188857524890e-01 -1.256605776527e-01 +-1.321956527344e-01 -1.384896710345e-01 -1.445414967152e-01 -1.503501647310e-01 +-1.559148806314e-01 -1.612350202393e-01 -1.663101292030e-01 -1.711399224253e-01 +-1.757242833674e-01 -1.800632632314e-01 -1.841570800207e-01 -1.880061174797e-01 +-1.916109239149e-01 -1.949722108968e-01 -1.980908518463e-01 -2.009678805055e-01 +-2.036044892942e-01 -2.060020275558e-01 -2.081619996917e-01 -2.100860631877e-01 +-2.117760265342e-01 -2.132338470410e-01 -2.144616285503e-01 -2.154616190492e-01 +-2.162362081830e-01 -2.167879246744e-01 -2.171194336468e-01 -2.172335338584e-01 +-2.171331548467e-01 -2.168213539861e-01 -2.163013134635e-01 -2.155763371712e-01 +-2.146498475232e-01 -2.135253821946e-01 -2.122065907892e-01 -2.106972314371e-01 +-2.090011673253e-01 -2.071223631645e-01 -2.050648815953e-01 -2.028328795354e-01 +-2.004306044739e-01 -1.978623907118e-01 -1.951326555560e-01 -1.922458954659e-01 +-1.892066821602e-01 -1.860196586822e-01 -1.826895354318e-01 -1.792210861633e-01 +-1.756191439552e-01 -1.718885971536e-01 -1.680343852933e-01 -1.640614949996e-01 +-1.599749558740e-01 -1.557798363682e-01 -1.514812396472e-01 -1.470842994485e-01 +-1.425941759367e-01 -1.380160515603e-01 -1.333551269115e-01 -1.286166165939e-01 +-1.238057450998e-01 -1.189277427024e-01 -1.139878413639e-01 -1.089912706646e-01 +-1.039432537543e-01 -9.884900333146e-02 -9.371371765056e-02 -8.854257656305e-02 +-8.334073759347e-02 -7.811333205441e-02 -7.286546120297e-02 -6.760219244178e-02 +-6.232855556732e-02 -5.704953906849e-02 -5.177008647810e-02 -4.649509277994e-02 +-4.122940087424e-02 -3.597779810401e-02 -3.074501284474e-02 -2.553571116011e-02 +-2.035449352599e-02 -1.520589162508e-02 -1.009436521457e-02 -5.024299068919e-03 +-2.180811153812e-14 4.974306043314e-03 9.894476794432e-03 1.475645640459e-02 +1.955627809356e-02 + Type L N + 0 1 0 +0.000000000000e+00 7.488637748270e-03 1.497500757073e-02 2.245684235920e-02 +2.993187664049e-02 3.739784739318e-02 4.485249486326e-02 5.229356337864e-02 +5.971880216197e-02 6.712596614162e-02 7.451281676032e-02 8.187712278134e-02 +8.921666109172e-02 9.652921750236e-02 1.038125875446e-01 1.110645772630e-01 +1.182830040039e-01 1.254656971996e-01 1.326104991481e-01 1.397152657871e-01 +1.467778674633e-01 1.537961896959e-01 1.607681339337e-01 1.676916183067e-01 +1.745645783707e-01 1.813849678449e-01 1.881507593431e-01 1.948599450964e-01 +2.015105376695e-01 2.081005706678e-01 2.146280994373e-01 2.210912017554e-01 +2.274879785128e-01 2.338165543868e-01 2.400750785054e-01 2.462617251009e-01 +2.523746941547e-01 2.584122120318e-01 2.643725321043e-01 2.702539353656e-01 +2.760547310324e-01 2.817732571367e-01 2.874078811063e-01 2.929570003335e-01 +2.984190427326e-01 3.037924672851e-01 3.090757645728e-01 3.142674572991e-01 +3.193661007968e-01 3.243702835244e-01 3.292786275485e-01 3.340897890136e-01 +3.388024585987e-01 3.434153619598e-01 3.479272601599e-01 3.523369500844e-01 +3.566432648428e-01 3.608450741561e-01 3.649412847309e-01 3.689308406179e-01 +3.728127235570e-01 3.765859533068e-01 3.802495879603e-01 3.838027242452e-01 +3.872444978093e-01 3.905740834913e-01 3.937906955755e-01 3.968935880325e-01 +3.998820547434e-01 4.027554297095e-01 4.055130872460e-01 4.081544421604e-01 +4.106789499151e-01 4.130861067746e-01 4.153754499369e-01 4.175465576492e-01 +4.195990493076e-01 4.215325855415e-01 4.233468682816e-01 4.250416408125e-01 +4.266166878097e-01 4.280718353596e-01 4.294069509652e-01 4.306219435350e-01 +4.317167633563e-01 4.326914020530e-01 4.335458925272e-01 4.342803088856e-01 +4.348947663497e-01 4.353894211511e-01 4.357644704103e-01 4.360201520010e-01 +4.361567443983e-01 4.361745665118e-01 4.360739775033e-01 4.358553765897e-01 +4.355192028303e-01 4.350659348995e-01 4.344960908441e-01 4.338102278270e-01 +4.330089418547e-01 4.320928674913e-01 4.310626775581e-01 4.299190828181e-01 +4.286628316477e-01 4.272947096929e-01 4.258155395130e-01 4.242261802101e-01 +4.225275270446e-01 4.207205110385e-01 4.188060985641e-01 4.167852909214e-01 +4.146591239012e-01 4.124286673363e-01 4.100950246402e-01 4.076593323337e-01 +4.051227595591e-01 4.024865075830e-01 3.997518092873e-01 3.969199286487e-01 +3.939921602073e-01 3.909698285243e-01 3.878542876288e-01 3.846469204537e-01 +3.813491382626e-01 3.779623800657e-01 3.744881120259e-01 3.709278268561e-01 +3.672830432068e-01 3.635553050448e-01 3.597461810232e-01 3.558572638428e-01 +3.518901696056e-01 3.478465371601e-01 3.437280274391e-01 3.395363227902e-01 +3.352731262987e-01 3.309401611045e-01 3.265391697118e-01 3.220719132928e-01 +3.175401709852e-01 3.129457391848e-01 3.082904308316e-01 3.035760746916e-01 +2.988045146335e-01 2.939776089012e-01 2.890972293815e-01 2.841652608687e-01 +2.791836003246e-01 2.741541561365e-01 2.690788473710e-01 2.639596030257e-01 +2.587983612786e-01 2.535970687348e-01 2.483576796724e-01 2.430821552860e-01 +2.377724629297e-01 2.324305753586e-01 2.270584699704e-01 2.216581280466e-01 +2.162315339932e-01 2.107806745824e-01 2.053075381949e-01 1.998141140629e-01 +1.943023915144e-01 1.887743592194e-01 1.832320044375e-01 1.776773122682e-01 +1.721122649033e-01 1.665388408820e-01 1.609590143496e-01 1.553747543190e-01 +1.497880239360e-01 1.442007797487e-01 1.386149709812e-01 1.330325388114e-01 +1.274554156537e-01 1.218855244475e-01 1.163247779500e-01 1.107750780353e-01 +1.052383149992e-01 9.971636687013e-02 9.421109872690e-02 8.872436202246e-02 +8.325799391531e-02 7.781381660774e-02 7.239363669171e-02 6.699924450243e-02 +6.163241347987e-02 5.629489953858e-02 5.098844044591e-02 4.571475520896e-02 +4.047554347042e-02 3.527248491362e-02 3.010723867693e-02 2.498144277778e-02 +1.989671354647e-02 1.485464507002e-02 9.856808646282e-03 4.904752248416e-03 +8.084377910810e-14 -4.855948338613e-03 -9.661617874115e-03 -1.441555907126e-02 +-1.911634823371e-02 + Type L N + 0 1 1 +0.000000000000e+00 1.287349883354e-02 2.573547475531e-02 3.857441713205e-02 +5.137883987341e-02 6.413729366771e-02 7.683837817512e-02 8.947075416401e-02 +1.020231555764e-01 1.144844015086e-01 1.268434080930e-01 1.390892002673e-01 +1.512109234179e-01 1.631978548831e-01 1.750394153042e-01 1.867251798097e-01 +1.982448890213e-01 2.095884598674e-01 2.207459961937e-01 2.317077991564e-01 +2.424643773877e-01 2.530064569210e-01 2.633249908654e-01 2.734111688171e-01 +2.832564259984e-01 2.928524521123e-01 3.021911999042e-01 3.112648934202e-01 +3.200660359520e-01 3.285874176609e-01 3.368221228716e-01 3.447635370265e-01 +3.524053532954e-01 3.597415788301e-01 3.667665406600e-01 3.734748912194e-01 +3.798616135028e-01 3.859220258413e-01 3.916517862950e-01 3.970468966577e-01 +4.021037060685e-01 4.068189142273e-01 4.111895742108e-01 4.152130948861e-01 +4.188872429201e-01 4.222101443820e-01 4.251802859385e-01 4.277965156404e-01 +4.300580433007e-01 4.319644404634e-01 4.335156399653e-01 4.347119350899e-01 +4.355539783170e-01 4.360427796690e-01 4.361797046561e-01 4.359664718249e-01 +4.354051499131e-01 4.344981546136e-01 4.332482449540e-01 4.316585192952e-01 +4.297324109555e-01 4.274736834644e-01 4.248864254548e-01 4.219750451979e-01 +4.187442647891e-01 4.151991139927e-01 4.113449237518e-01 4.071873193743e-01 +4.027322134004e-01 3.979857981635e-01 3.929545380524e-01 3.876451614846e-01 +3.820646526015e-01 3.762202426951e-01 3.701194013774e-01 3.637698275033e-01 +3.571794398579e-01 3.503563676209e-01 3.433089406181e-01 3.360456793733e-01 +3.285752849731e-01 3.209066287553e-01 3.130487418352e-01 3.050108044820e-01 +2.968021353580e-01 2.884321806341e-01 2.799105029940e-01 2.712467705418e-01 +2.624507456248e-01 2.535322735859e-01 2.445012714596e-01 2.353677166230e-01 +2.261416354183e-01 2.168330917584e-01 2.074521757289e-01 1.980089922025e-01 +1.885136494756e-01 1.789762479447e-01 1.694068688318e-01 1.598155629754e-01 +1.502123396984e-01 1.406071557664e-01 1.310099044496e-01 1.214304047005e-01 +1.118783904600e-01 1.023635001051e-01 9.289526604868e-02 8.348310450536e-02 +7.413630543331e-02 6.486402266461e-02 5.567526423484e-02 4.657888292306e-02 +3.758356701260e-02 2.869783128319e-02 1.993000824438e-02 1.128823961984e-02 +2.780468092110e-03 -5.585570683343e-03 -1.380235578603e-02 -2.186258845205e-02 +-2.975919920140e-02 -3.748535466356e-02 -4.503446409415e-02 -5.240018557589e-02 +-5.957643189757e-02 -6.655737610510e-02 -7.333745671913e-02 -7.991138261421e-02 +-8.627413755471e-02 -9.242098438353e-02 -9.834746885961e-02 -1.040494231411e-01 +-1.095229689111e-01 -1.147645201439e-01 -1.197707855094e-01 -1.245387704143e-01 +-1.290657786791e-01 -1.333494138503e-01 -1.373875801476e-01 -1.411784830461e-01 +-1.447206294949e-01 -1.480128277725e-01 -1.510541869820e-01 -1.538441161856e-01 +-1.563823231847e-01 -1.586688129443e-01 -1.607038856690e-01 -1.624881345314e-01 +-1.640224430593e-01 -1.653079821847e-01 -1.663462069605e-01 -1.671388529506e-01 +-1.676879322986e-01 -1.679957294811e-01 -1.680647967533e-01 -1.678979492927e-01 +-1.674982600487e-01 -1.668690543061e-01 -1.660139039692e-01 -1.649366215765e-01 +-1.636412540531e-01 -1.621320762106e-01 -1.604135840036e-01 -1.584904875512e-01 +-1.563677039349e-01 -1.540503497817e-01 -1.515437336425e-01 -1.488533481770e-01 +-1.459848621550e-01 -1.429441122854e-01 -1.397370948832e-01 -1.363699573865e-01 +-1.328489897337e-01 -1.291806156141e-01 -1.253713836005e-01 -1.214279581791e-01 +-1.173571106849e-01 -1.131657101573e-01 -1.088607141251e-01 -1.044491593355e-01 +-9.993815243651e-02 -9.533486062644e-02 -9.064650228155e-02 -8.588033757396e-02 +-8.104365909172e-02 -7.614378247274e-02 -7.118803706450e-02 -6.618375662098e-02 +-6.113827004858e-02 -5.605889221235e-02 -5.095291481399e-02 -4.582759735266e-02 +-4.069015817980e-02 -3.554776565875e-02 -3.040752943992e-02 -2.527649186198e-02 +-2.016161948939e-02 -1.506979479638e-02 -1.000780800721e-02 -4.982349102379e-03 +-6.437579797176e-15 4.932773078295e-03 9.809627048423e-03 1.462434920303e-02 +1.937086424077e-02 + Type L N + 0 2 0 +0.000000000000e+00 5.535915211195e-05 2.213972080154e-04 4.979959858820e-04 +8.849586090862e-04 1.382009641449e-03 1.988795277024e-03 2.704883585487e-03 +3.529764810931e-03 4.462851724475e-03 5.503480030692e-03 6.650908827167e-03 +7.904321117094e-03 9.262824374522e-03 1.072545116179e-02 1.229115979875e-02 +1.395883508334e-02 1.572728906294e-02 1.759526185599e-02 1.956142252333e-02 +2.162436998860e-02 2.378263400702e-02 2.603467618203e-02 2.837889102883e-02 +3.081360708426e-02 3.333708806224e-02 3.594753405377e-02 3.864308277085e-02 +4.142181083340e-02 4.428173509816e-02 4.722081402876e-02 5.023694910596e-02 +5.332798627704e-02 5.649171744338e-02 5.972588198510e-02 6.302816832176e-02 +6.639621550800e-02 6.982761486302e-02 7.331991163267e-02 7.687060668312e-02 +8.047715822478e-02 8.413698356539e-02 8.784746089095e-02 9.160593107325e-02 +9.540969950283e-02 9.925603794593e-02 1.031421864243e-01 1.070653551164e-01 +1.110227262786e-01 1.150114561856e-01 1.190286770876e-01 1.230714991840e-01 +1.271370126117e-01 1.312222894466e-01 1.353243857168e-01 1.394403434265e-01 +1.435671925888e-01 1.477019532664e-01 1.518416376183e-01 1.559832519508e-01 +1.601237987727e-01 1.642602788521e-01 1.683896932733e-01 1.725090454930e-01 +1.766153433942e-01 1.807056013362e-01 1.847768421993e-01 1.888260994226e-01 +1.928504190344e-01 1.968468616722e-01 2.008125045921e-01 2.047444436666e-01 +2.086397953674e-01 2.124956987344e-01 2.163093173272e-01 2.200778411595e-01 +2.237984886144e-01 2.274685083383e-01 2.310851811145e-01 2.346458217128e-01 +2.381477807144e-01 2.415884463125e-01 2.449652460847e-01 2.482756487386e-01 +2.515171658267e-01 2.546873534324e-01 2.577838138234e-01 2.608041970725e-01 +2.637462026449e-01 2.666075809504e-01 2.693861348596e-01 2.720797211832e-01 +2.746862521131e-01 2.772036966244e-01 2.796300818381e-01 2.819634943422e-01 +2.842020814712e-01 2.863440525436e-01 2.883876800545e-01 2.903313008259e-01 +2.921733171103e-01 2.939121976491e-01 2.955464786849e-01 2.970747649265e-01 +2.984957304652e-01 2.998081196445e-01 3.010107478787e-01 3.021025024244e-01 +3.030823430996e-01 3.039493029542e-01 3.047024888889e-01 3.053410822225e-01 +3.058643392084e-01 3.062715914985e-01 3.065622465553e-01 3.067357880110e-01 +3.067917759749e-01 3.067298472868e-01 3.065497157184e-01 3.062511721212e-01 +3.058340845212e-01 3.052983981609e-01 3.046441354877e-01 3.038713960897e-01 +3.029803565781e-01 3.019712704172e-01 3.008444677015e-01 2.996003548804e-01 +2.982394144306e-01 2.967622044769e-01 2.951693583611e-01 2.934615841593e-01 +2.916396641495e-01 2.897044542274e-01 2.876568832728e-01 2.854979524671e-01 +2.832287345604e-01 2.808503730919e-01 2.783640815610e-01 2.757711425520e-01 +2.730729068125e-01 2.702707922851e-01 2.673662830950e-01 2.643609284924e-01 +2.612563417520e-01 2.580541990295e-01 2.547562381760e-01 2.513642575117e-01 +2.478801145597e-01 2.443057247399e-01 2.406430600253e-01 2.368941475610e-01 +2.330610682465e-01 2.291459552836e-01 2.251509926894e-01 2.210784137768e-01 +2.169304996024e-01 2.127095773847e-01 2.084180188913e-01 2.040582387984e-01 +1.996326930228e-01 1.951438770279e-01 1.905943241041e-01 1.859866036266e-01 +1.813233192898e-01 1.766071073212e-01 1.718406346748e-01 1.670265972066e-01 +1.621677178324e-01 1.572667446692e-01 1.523264491631e-01 1.473496242024e-01 +1.423390822201e-01 1.372976532846e-01 1.322281831820e-01 1.271335314898e-01 +1.220165696442e-01 1.168801790025e-01 1.117272489014e-01 1.065606747123e-01 +1.013833558967e-01 9.619819406050e-02 9.100809101075e-02 8.581594681512e-02 +8.062465786566e-02 7.543711494816e-02 7.025620131870e-02 6.508479078835e-02 +5.992574581769e-02 5.478191562228e-02 4.965613429040e-02 4.455121891443e-02 +3.946996773718e-02 3.441515831428e-02 2.938954569414e-02 2.439586061649e-02 +1.943680773090e-02 1.451506383641e-02 9.633276143556e-03 4.794060559853e-03 +4.131818525851e-15 -4.746357278055e-03 -9.442499310155e-03 -1.408595203483e-02 +-1.867428087307e-02 + Type L N + 0 2 1 +0.000000000000e+00 1.378450216078e-04 5.511357836611e-04 1.239139794773e-03 +2.200637640491e-03 3.433925082304e-03 4.936815994628e-03 6.706646131180e-03 +8.740277714831e-03 1.103410484304e-02 1.358405969917e-02 1.638561955894e-02 +1.943381457962e-02 2.272323635834e-02 2.624804724465e-02 3.000199039070e-02 +3.397840052178e-02 3.817021540801e-02 4.256998801741e-02 4.716989932876e-02 +5.196177178198e-02 5.693708334247e-02 6.208698215471e-02 6.740230175952e-02 +7.287357684839e-02 7.849105952722e-02 8.424473606111e-02 9.012434407095e-02 +9.611939015158e-02 1.022191678810e-01 1.084127761890e-01 1.146891380531e-01 +1.210370194893e-01 1.274450488047e-01 1.339017360777e-01 1.403954928328e-01 +1.469146518750e-01 1.534474872496e-01 1.599822342926e-01 1.665071097367e-01 +1.730103318384e-01 1.794801404905e-01 1.859048172859e-01 1.922727054973e-01 +1.985722299387e-01 2.047919166733e-01 2.109204125357e-01 2.169465044320e-01 +2.228591383867e-01 2.286474383027e-01 2.343007244016e-01 2.398085313134e-01 +2.451606257844e-01 2.503470239719e-01 2.553580082979e-01 2.601841438308e-01 +2.648162941690e-01 2.692456367986e-01 2.734636778979e-01 2.774622665664e-01 +2.812336084509e-01 2.847702787484e-01 2.880652345620e-01 2.911118265905e-01 +2.939038101309e-01 2.964353553767e-01 2.987010569941e-01 3.006959429600e-01 +3.024154826495e-01 3.038555941563e-01 3.050126508376e-01 3.058834870714e-01 +3.064654032169e-01 3.067561697721e-01 3.067540307204e-01 3.064577060637e-01 +3.058663935363e-01 3.049797694999e-01 3.037979890185e-01 3.023216851136e-01 +3.005519672032e-01 2.984904187284e-01 2.961390939721e-01 2.935005140777e-01 +2.905776622752e-01 2.873739783248e-01 2.838933521878e-01 2.801401169391e-01 +2.761190409326e-01 2.718353192356e-01 2.672945643488e-01 2.625027962274e-01 +2.574664316246e-01 2.521922727737e-01 2.466874954338e-01 2.409596363168e-01 +2.350165799226e-01 2.288665448033e-01 2.225180692832e-01 2.159799966602e-01 +2.092614599151e-01 2.023718659557e-01 1.953208794259e-01 1.881184061067e-01 +1.807745759402e-01 1.732997257066e-01 1.657043813846e-01 1.579992402274e-01 +1.501951525855e-01 1.423031035083e-01 1.343341941582e-01 1.262996230683e-01 +1.182106672782e-01 1.100786633801e-01 1.019149885090e-01 9.373104130994e-02 +8.553822291517e-02 7.734791796572e-02 6.917147570869e-02 6.102019120418e-02 +5.290528667402e-02 4.483789302445e-02 3.682903157469e-02 2.888959602278e-02 +2.103033467944e-02 1.326183300055e-02 5.594496447730e-03 -1.961466293644e-03 +-9.396059710778e-03 -1.669951744637e-02 -2.386231784130e-02 -3.087519901112e-02 +-3.772917343115e-02 -4.441554200612e-02 -5.092590760095e-02 -5.725218801079e-02 +-6.338662834879e-02 -6.932181283193e-02 -7.505067594562e-02 -8.056651296961e-02 +-8.586298984831e-02 -9.093415239043e-02 -9.577443478343e-02 -1.003786674102e-01 +-1.047420839562e-01 -1.088603277967e-01 -1.127294576547e-01 -1.163459525234e-01 +-1.197067158441e-01 -1.228090789373e-01 -1.256508036817e-01 -1.282300844387e-01 +-1.305455492228e-01 -1.325962601165e-01 -1.343817129326e-01 -1.359018361263e-01 +-1.371569889621e-01 -1.381479589410e-01 -1.388759584938e-01 -1.393426209511e-01 +-1.395499957974e-01 -1.395005432216e-01 -1.391971279746e-01 -1.386430125484e-01 +-1.378418496907e-01 -1.367976742705e-01 -1.355148945107e-01 -1.339982826069e-01 +-1.322529647502e-01 -1.302844105739e-01 -1.280984220447e-01 -1.257011218207e-01 +-1.230989410988e-01 -1.202986069733e-01 -1.173071293331e-01 -1.141317873188e-01 +-1.107801153683e-01 -1.072598888758e-01 -1.035791094915e-01 -9.974599008950e-02 +-9.576893943205e-02 -9.165654655832e-02 -8.741756492694e-02 -8.306089634124e-02 +-7.859557468680e-02 -7.403074951113e-02 -6.937566947526e-02 -6.463966570746e-02 +-5.983213508908e-02 -5.496252350283e-02 -5.004030907345e-02 -4.507498543086e-02 +-4.007604502571e-02 -3.505296252697e-02 -3.001517833094e-02 -2.497208221092e-02 +-1.993299713613e-02 -1.490716328841e-02 -9.903722304457e-03 -4.931701771028e-03 +4.773444701199e-14 4.882628890872e-03 9.707589564902e-03 1.446645969794e-02 +1.915100382853e-02 diff --git a/tests/09_DeePKS/NO_GO_deepks_UT/model.ptg b/tests/09_DeePKS/NO_GO_deepks_UT/model.ptg new file mode 100644 index 0000000000..400c7e0bd8 Binary files /dev/null and b/tests/09_DeePKS/NO_GO_deepks_UT/model.ptg differ diff --git a/tests/09_DeePKS/NO_GO_deepks_UT/o_delta_ref.dat b/tests/09_DeePKS/NO_GO_deepks_UT/o_delta_ref.dat new file mode 100644 index 0000000000..b48023e5c5 --- /dev/null +++ b/tests/09_DeePKS/NO_GO_deepks_UT/o_delta_ref.dat @@ -0,0 +1 @@ +-0.08058091803 diff --git a/tests/09_DeePKS/NO_GO_deepks_UT/orbpre_ref.dat b/tests/09_DeePKS/NO_GO_deepks_UT/orbpre_ref.dat new file mode 100644 index 0000000000..3e3237ec88 --- /dev/null +++ b/tests/09_DeePKS/NO_GO_deepks_UT/orbpre_ref.dat @@ -0,0 +1,5 @@ +1.056940269 0.1266618616 0.8734002808 0.902430529 0.970664598 0.007596404359 0.008745980544 0.01021958025 4.33680869e-19 2.237266295e-07 0.01497960358 0.01708725446 0.02300553405 -1.084202172e-19 5.904406667e-08 0.004380552522 0.004727727944 0.005122035518 +1.400632299 0.04117702106 0.1027305888 0.1041966275 0.1294135661 0.01642938298 0.02242890128 0.02280997959 -5.391601878e-16 2.234016552e-07 0.015913677 0.07687398759 0.07817548593 -4.762900144e-16 4.735625451e-10 0.003893476503 0.01697098872 0.01735324613 +1.181670195 0.04550076051 0.04232612155 0.04377413388 0.1245819176 0.01174657886 0.01215933419 0.02044853859 7.253312534e-16 9.606563449e-09 0.03052951885 0.0335141051 0.03505048493 3.947444585e-16 2.191861746e-09 0.004314213193 0.0101011116 0.0105768787 +1.236604132 0.04560187401 0.05263608364 0.05494823354 0.1308693603 0.01393374205 0.01453588332 0.01879213875 -5.316927454e-16 1.187865741e-07 0.02895598367 0.04150173332 0.04376939009 -1.551493309e-16 2.888713947e-08 0.003184943987 0.0118208337 0.01253806203 +1.26662277 0.04521520737 0.05931915163 0.06187700248 0.1329947817 0.01527065544 0.01573939534 0.01794575804 -1.230352625e-15 1.136899733e-07 0.02742236223 0.04651814046 0.04908940065 -4.36174534e-16 2.52026751e-08 0.002668663015 0.01279224077 0.01358768798 diff --git a/tests/09_DeePKS/NO_GO_deepks_UT/pdm_ref.dat b/tests/09_DeePKS/NO_GO_deepks_UT/pdm_ref.dat new file mode 100644 index 0000000000..1e77195ae8 --- /dev/null +++ b/tests/09_DeePKS/NO_GO_deepks_UT/pdm_ref.dat @@ -0,0 +1,30 @@ +1.056940269 +0.1266618616 +0.9696380172 -0.008276973755 0.004198141806 -0.008276973755 0.8748219651 -0.004855034857 0.004198141806 -0.004855034857 0.9020354255 +0.0101502352 -0.0003336854009 0.0001739723559 -0.0003336854009 0.007655220799 -0.0001549161293 0.0001739723559 -0.0001549161293 0.008756509147 +0.02280510752 0.001110308569 -0.0001106436065 0.0006402588197 0.0002344865099 0.001110308569 0.004655393053 -0.0001658418354 0.007003152155 0.0002020587 -0.0001106436065 -0.0001658418354 0.006081823482 -0.0002230074617 -0.008159539019 0.0006402588197 0.007003152155 -0.0002230074617 0.01058262495 0.0002639975883 0.0002344865099 0.0002020587 -0.008159539019 0.0002639975883 0.01094766681 +0.005063468369 0.0002062836131 -7.773555812e-06 8.585678025e-05 2.734963738e-05 0.0002062836131 0.001354094788 -2.80022863e-05 0.00204199572 3.13538236e-05 -7.773555812e-06 -2.80022863e-05 0.001686685205 -3.534717459e-05 -0.002263054205 8.585678025e-05 0.00204199572 -3.534717459e-05 0.003089616313 3.717288192e-05 2.734963738e-05 3.13538236e-05 -0.002263054205 3.717288192e-05 0.003036510351 +1.400632299 +0.04117702106 +0.1293882863 -0.0006562996898 0.0004751024874 -0.0006562996898 0.1027663035 -0.0001799273552 0.0004751024874 -0.0001799273552 0.1041861925 +0.01646661898 -0.0004643522135 8.827396097e-05 -0.0004643522135 0.02240041222 -4.667729356e-05 8.827396097e-05 -4.667729356e-05 0.02280123265 +0.01602555364 -0.002599719101 -5.792995776e-05 -0.0002388505883 -1.145069952e-06 -0.002599719101 0.07635812543 -0.000186006658 0.005780684203 0.0002188352918 -5.792995776e-05 -0.000186006658 0.07803474603 -0.0002336687246 -0.002873050229 -0.0002388505883 0.005780684203 -0.0002336687246 0.0004385766018 2.466924249e-05 -1.145069952e-06 0.0002188352918 -0.002873050229 2.466924249e-05 0.0001063722064 +0.003923594653 -0.0006237187894 8.94628758e-06 -8.576090222e-05 -2.719270453e-06 -0.0006237187894 0.01680158632 -5.067944151e-05 0.001577266332 4.775163859e-05 8.94628758e-06 -5.067944151e-05 0.01729268107 -5.21447323e-05 -0.0009422517396 -8.576090222e-05 0.001577266332 -5.21447323e-05 0.0001483872541 7.06854024e-06 -2.719270453e-06 4.775163859e-05 -0.0009422517396 7.06854024e-06 5.146253295e-05 +1.181670195 +0.04550076051 +0.05233041084 0.02487839982 4.850858059e-05 0.02487839982 0.1160149685 -0.0002306317475 4.850858059e-05 -0.0002306317475 0.04233679371 +0.01323092278 0.002786161948 1.511243323e-05 0.002786161948 0.01937249669 -7.313399902e-05 1.511243323e-05 -7.313399902e-05 0.01175103218 +0.01422171088 0.009660149088 1.990518703e-05 -0.01328666797 9.86970372e-05 0.009660149088 0.03041119021 -2.165130407e-07 0.005239425896 3.911393063e-05 1.990518703e-05 -2.165130407e-07 0.002309922489 -2.02636851e-05 0.008490251542 -0.01328666797 0.005239425896 -2.02636851e-05 0.02094472847 -8.486944555e-05 9.86970372e-05 3.911393063e-05 0.008490251542 -8.486944555e-05 0.03120656644 +0.003718726483 0.0038506992 6.742822082e-06 -0.00260687294 3.376656647e-05 0.0038506992 0.007903974669 7.221507042e-07 -0.0003258351673 1.244533936e-05 6.742822082e-06 7.221507042e-07 0.0006589305945 -6.763129836e-06 0.002494667664 -0.00260687294 -0.0003258351673 -6.763129836e-06 0.003265876801 -3.066845778e-05 3.376656647e-05 1.244533936e-05 0.002494667664 -3.066845778e-05 0.009444697143 +1.236604132 +0.04560187401 +0.06502116543 -0.01258059357 -0.02250373663 -0.01258059357 0.06835543229 0.02868681204 -0.02250373663 0.02868681204 0.1050770797 +0.01551611587 -0.0008840668584 -0.001571655783 -0.0008840668584 0.014715163 0.001542546003 -0.001571655783 0.001542546003 0.01703048524 +0.01811988174 -0.006929940475 -0.01250374384 0.007610176869 -0.01204499016 -0.006929940475 0.01079867937 0.01304084988 -0.007905435983 -0.006628807541 -0.01250374384 0.01304084988 0.02710542693 0.006256111508 0.0005172368891 0.007610176869 -0.007905435983 0.006256111508 0.03342680503 0.007719801988 -0.01204499016 -0.006628807541 0.0005172368891 0.007719801988 0.02477643281 +0.00470572302 -0.002457279602 -0.004432396181 0.001482886838 -0.002304640426 -0.002457279602 0.002671566943 0.003096514643 -0.002720235876 -0.0009868634508 -0.004432396181 0.003096514643 0.006561135223 0.0007951636583 0.00166333381 0.001482886838 -0.002720235876 0.0007951636583 0.008750300914 0.003570570517 -0.002304640426 -0.0009868634508 0.00166333381 0.003570570517 0.004855142505 +1.26662277 +0.04521520737 +0.07180659333 -0.01196648867 0.02155329937 -0.01196648867 0.07414734694 -0.02692945331 0.02155329937 -0.02692945331 0.1082369956 +0.0167034182 -0.0005240822289 0.0009642675937 -0.0005240822289 0.01559502462 -0.0006655644302 0.0009642675937 -0.0006655644302 0.01665736599 +0.01995735887 -0.008218903199 0.01490296149 0.007769582827 0.01249503876 -0.008218903199 0.01176177993 -0.01388592324 -0.009437841267 0.006631422019 0.01490296149 -0.01388592324 0.02917020495 -0.006122814905 0.002192331037 0.007769582827 -0.009437841267 -0.006122814905 0.03646331787 -0.01001620164 0.01249503876 0.006631422019 0.002192331037 -0.01001620164 0.0256773554 +0.00508126445 -0.002731668197 0.004953082553 0.001473164536 0.002357079604 -0.002731668197 0.002830659871 -0.003225426248 -0.003028077136 0.0009518145762 0.004953082553 -0.003225426248 0.006896031839 -0.0007270976368 0.002049114935 0.001473164536 -0.003028077136 -0.0007270976368 0.009289226972 -0.004082920909 0.002357079604 0.0009518145762 0.002049114935 -0.004082920909 0.004951433843 diff --git a/tests/09_DeePKS/NO_GO_deepks_UT/phialpha_r_ref.dat b/tests/09_DeePKS/NO_GO_deepks_UT/phialpha_r_ref.dat new file mode 100644 index 0000000000..20267a8218 --- /dev/null +++ b/tests/09_DeePKS/NO_GO_deepks_UT/phialpha_r_ref.dat @@ -0,0 +1,200 @@ +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.3164811566 -0.1534527887 -0.08570920339 0.1156008495 0.2071111386 0.04376523785 -0.05902865122 -0.1057560668 -0.04843479778 -0.03999389619 -0.07165329159 -0.05960192152 0.09664284637 0.02577082509 0.02127965328 0.03812474768 0.0317125448 -0.05142100316 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.3322570668 -0.1586938262 -0.0903368452 0.120593251 -0.2161250816 0.04535098 -0.06054032659 0.1084992976 -0.05005969208 -0.0420453347 0.07535290178 -0.06207471837 -0.1005907542 0.02610664785 0.02192707748 -0.03929731865 0.0323726085 0.05245912008 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.4114648095 -0.1794735013 0.3147366589 0.00616018533 0.0008881864795 -0.1415856307 -0.00277118569 -0.0003995544826 0.1812524527 0.00614576416 0.0008861072096 5.889370801e-05 1.73433392e-05 -0.08212807954 -0.00278473367 -0.0004015078544 -2.66855817e-05 -7.858515125e-06 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.2888131094 -0.1435047394 -0.07183317419 -0.2203678974 6.227069716e-05 0.03767474148 0.1155775679 -3.265945635e-05 -0.04849447325 0.06953694541 -1.964947762e-05 0.1066617855 -6.028014379e-05 0.02659435774 -0.03813404454 1.077576891e-05 -0.05849329812 3.30576167e-05 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.8170531799 -0.247178539 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0.8150193757 0 0 0.02256967339 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0.8150193757 0 0 0.02256967339 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0.8150193757 0 0 0.02256967339 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.1150935953 -0.06410311347 -0.07219303423 0.02672869898 0.04955194699 0.04282914818 -0.01585703416 -0.0293971254 0.02212911648 -0.02039197394 -0.03780438443 -0.009199155668 0.0139966691 -0.01369969442 0.01262426414 0.02340394 0.005695013702 -0.008665058534 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.1192926978 -0.06631180479 -0.07548975067 0.02728433166 -0.05095474957 0.04467427619 -0.0161466657 0.03015464398 0.02373719934 -0.02102182856 0.03925923579 -0.009450806053 -0.01418950255 -0.01465640929 0.01297981784 -0.02424040932 0.005835350652 0.008761233963 +0.4396940853 -0.1615590582 -0.2875027763 -0.005627149984 -0.0008113324951 0.1066242109 0.002086903071 0.0003008933973 0.101011939 0.003425032573 0.0004938272893 3.282144628e-05 9.665437873e-06 -0.03734667878 -0.001266321512 -0.0001825804883 -1.213492211e-05 -3.57355781e-06 +0.5744883648 -0.1122607916 -0.264174326 -0.01109747707 -0.001600053986 -0.001574581052 0.002595663622 0.0003742473986 0.0933320631 0.008411901177 0.001212842876 0.0001308736388 3.854038041e-05 0.04085026979 -0.0009523410587 -0.000137310228 -3.151678617e-05 -9.281234472e-06 +0.0112441773 -0.002197225083 -0.01109747707 0.3026016138 -3.131706718e-05 0.002595663622 -0.1341416212 7.324959673e-06 0.01091173032 -0.267721887 3.854038041e-05 -0.005242658682 -0.0007555108486 -0.003247473646 0.1193145981 -9.281234472e-06 0.002335928811 0.0003367056548 +0.001621205486 -0.0003167998213 -0.001600053986 -3.131706718e-05 0.3028143039 0.0003742473986 7.324959673e-06 -0.1341913688 0.001573272688 3.854038041e-05 -0.2679836342 0.0007566345057 -0.005245111447 -0.0004682265274 -9.281234472e-06 0.1193776317 -0.0003369762521 0.002336519482 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.1059639845 -0.05925714388 -0.06358704877 -0.05471114836 -0.0001147382641 0.03792215417 0.03262872933 6.842780449e-05 0.01683755767 0.03983957875 8.355014007e-05 0.01713917818 7.188765948e-05 -0.01048499156 -0.02480868396 -5.202788496e-05 -0.01067281503 -4.476548901e-05 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.8778350314 -0.01899237841 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.083970075 -0.04734479653 -0.0005828940149 0.05700333953 0.03215589146 0.000351764923 -0.03440037954 -0.01940543975 -0.01774617636 -0.0004769440117 -0.000269046691 0.01589994474 0.02631106082 0.01121348344 0.0003013721755 0.0001700056706 -0.01004688353 -0.01662547687 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.08767473994 -0.04937413925 -0.0003705339936 0.05996259465 -0.03321317421 0.0002231864639 -0.03611771037 0.02000553535 -0.01867033849 -0.0003058479934 0.000169408658 0.0171547553 -0.02741498179 0.01176822392 0.0001927810615 -0.0001067810861 -0.01081292671 0.01728011759 +0.3230572918 -0.1446202823 0.07747822275 0.237685627 -6.716427333e-05 -0.03466476827 -0.1063436523 3.005017266e-05 -0.04188394327 0.0600580083 -1.69709567e-05 0.09212217131 -5.206304871e-05 0.01791384367 -0.02568692648 7.258511056e-06 -0.03940083111 2.226746678e-05 +-0.146857873 0.05155932492 0.1452936884 -0.144083087 4.071443426e-05 -0.07923392798 0.05857215097 -1.655108896e-05 0.102011228 0.1100781004 -3.110543838e-05 -0.0865347701 4.890531656e-05 -0.0508813716 -0.06407838456 1.810701888e-05 0.03822967435 -2.160558495e-05 +-0.4505266692 0.1581723229 -0.144083087 -0.2497538998 0.0001249026564 0.05857215097 0.08135943147 -5.077498963e-05 0.02457218512 -0.1187977918 4.890531656e-05 -0.09897559591 0.0001029833556 -0.001936895948 0.04744750208 -2.160558495e-05 0.02827818753 -4.113126096e-05 +0.0001273080612 -4.469571537e-05 4.071443426e-05 0.0001249026564 0.1922603193 -1.655108896e-05 -5.077498963e-05 -0.09832663799 -6.943511807e-06 4.890531656e-05 0.05427174835 0.0001220622787 0.1664934233 5.473204692e-07 -2.160558495e-05 -0.02901184662 -5.829029298e-05 -0.0890017699 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.1059639845 -0.05925714388 0.06358704877 0.05471114836 0.0001147382641 -0.03792215417 -0.03262872933 -6.842780449e-05 0.01683755767 0.03983957875 8.355014007e-05 0.01713917818 7.188765948e-05 -0.01048499156 -0.02480868396 -5.202788496e-05 -0.01067281503 -4.476548901e-05 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.8778350314 -0.01899237841 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.09289685966 -0.05221929161 0.0002685632109 -0.000570033376 -0.07291767165 -0.0001613215545 0.0003424097814 0.04380045987 -0.01997563887 -1.99231389e-06 -0.0002548533054 -0.03459553134 0.0005409336953 0.01254696941 1.251399347e-06 0.000160076814 0.02172992194 -0.0003397677827 +0.3508189026 -0.1500864749 0.08914085147 -0.1202293073 -0.2154035099 -0.03795971177 0.05119840989 0.09172736198 -0.03814920318 -0.03150080814 -0.05643702679 -0.04694488092 0.07611980955 0.01534048149 0.01266704214 0.02269434464 0.01887738188 -0.03060914599 +-0.1706457715 0.05466627924 0.1565431659 0.08031206029 0.1438875434 -0.08537396789 -0.03001504274 -0.05377512106 0.1188507876 -0.05554711773 -0.09951853164 0.05139868212 -0.08334152344 -0.05683263389 0.03267010273 0.05853194161 -0.02080802258 0.03373962581 +0.2301596021 -0.0737315022 0.08031206029 0.1077670091 -0.1940692666 -0.03001504274 -0.06714484484 0.07252954677 -0.004352982816 0.02023740889 -0.08334152344 -0.1593608109 -0.04890248224 -0.004116710019 -0.01574247999 0.03373962581 0.07469759414 0.03804075672 +0.4123552504 -0.1320977781 0.1438875434 -0.1940692666 -0.131607174 -0.05377512106 0.07252954677 0.02231651763 -0.007798828739 -0.08334152344 -0.08255995535 0.03710808178 0.1113532806 -0.007375521054 0.03373962581 0.02587356517 -0.0332659621 -0.0348971405 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.1150935953 -0.06410311347 0.07219303423 -0.02672869898 -0.04955194699 -0.04282914818 0.01585703416 0.0293971254 0.02212911648 -0.02039197394 -0.03780438443 -0.009199155668 0.0139966691 -0.01369969442 0.01262426414 0.02340394 0.005695013702 -0.008665058534 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.083970075 -0.04734479653 0.0005828940149 -0.05700333953 -0.03215589146 -0.000351764923 0.03440037954 0.01940543975 -0.01774617636 -0.0004769440117 -0.000269046691 0.01589994474 0.02631106082 0.01121348344 0.0003013721755 0.0001700056706 -0.01004688353 -0.01662547687 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.8778350314 -0.01899237841 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.09289685966 -0.05221929161 -0.0002685632109 0.000570033376 0.07291767165 0.0001613215545 -0.0003424097814 -0.04380045987 -0.01997563887 -1.99231389e-06 -0.0002548533054 -0.03459553134 0.0005409336953 0.01254696941 1.251399347e-06 0.000160076814 0.02172992194 -0.0003397677827 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.3662277175 -0.1526733097 0.09197392871 -0.1227786408 0.2200416984 -0.03811860367 0.05088561957 -0.09119630325 -0.03733268828 -0.03135587353 0.0561954394 -0.04629305564 -0.07501690712 0.01455628605 0.01222588261 -0.02191100958 0.0180499983 0.02924963641 +-0.1772065705 0.05345772271 0.1678497891 0.08293590189 -0.1486362497 -0.09072180452 -0.0293105681 0.05252987935 0.1253013898 -0.05959116734 0.1067982313 0.05297278213 0.08584126111 -0.05821576032 0.03477040377 -0.06231489983 -0.02021050449 -0.03275069052 +0.2365581439 -0.07136225042 0.08293590189 0.1192638574 0.1984188016 -0.0293105681 -0.07355093851 -0.07012364566 -0.001907026722 0.02362039255 0.08584126111 -0.1661863379 0.05651026729 -0.006220721217 -0.0180271203 -0.03275069052 0.07543925459 -0.04312872381 +-0.4239553023 0.1278941572 -0.1486362497 0.1984188016 -0.1256252743 0.05252987935 -0.07012364566 0.01299589353 0.003417739406 0.08584126111 -0.0823251717 -0.04436826569 0.1098982377 0.01114866603 -0.03275069052 0.02239388869 0.03849623203 -0.02989424561 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.1192926978 -0.06631180479 0.07548975067 -0.02728433166 0.05095474957 -0.04467427619 0.0161466657 -0.03015464398 0.02373719934 -0.02102182856 0.03925923579 -0.009450806053 -0.01418950255 -0.01465640929 0.01297981784 -0.02424040932 0.005835350652 0.008761233963 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.08767473994 -0.04937413925 0.0003705339936 -0.05996259465 0.03321317421 -0.0002231864639 0.03611771037 -0.02000553535 -0.01867033849 -0.0003058479934 0.000169408658 0.0171547553 -0.02741498179 0.01176822392 0.0001927810615 -0.0001067810861 -0.01081292671 0.01728011759 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.8778350314 -0.01899237841 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 diff --git a/tests/09_DeePKS/NO_GO_deepks_UT/phialpha_ref.dat b/tests/09_DeePKS/NO_GO_deepks_UT/phialpha_ref.dat new file mode 100644 index 0000000000..597a29a3fe --- /dev/null +++ b/tests/09_DeePKS/NO_GO_deepks_UT/phialpha_ref.dat @@ -0,0 +1,230 @@ +iat : 0 +ad : 0 2.003222249 +iw : 6 +0.3164811566 -0.1534527887 -0.08570920339 0.1156008495 0.2071111386 0.04376523785 +-0.05902865122 -0.1057560668 -0.04843479778 -0.03999389619 -0.07165329159 -0.05960192152 +0.09664284637 0.02577082509 0.02127965328 0.03812474768 0.0317125448 -0.05142100316 + +ad : 1 1.950638213 +iw : 7 +0.3322570668 -0.1586938262 -0.0903368452 0.120593251 -0.2161250816 0.04535098 +-0.06054032659 0.1084992976 -0.05005969208 -0.0420453347 0.07535290178 -0.06207471837 +-0.1005907542 0.02610664785 0.02192707748 -0.03929731865 0.0323726085 0.05245912008 + +ad : 2 1.709269535 +iw : 4 +0.4114648095 -0.1794735013 0.3147366589 0.00616018533 0.0008881864795 -0.1415856307 +-0.00277118569 -0.0003995544826 0.1812524527 0.00614576416 0.0008861072096 5.889370801e-05 +1.73433392e-05 -0.08212807954 -0.00278473367 -0.0004015078544 -2.66855817e-05 -7.858515125e-06 + +ad : 3 2.100474535 +iw : 5 +0.2888131094 -0.1435047394 -0.07183317419 -0.2203678974 6.227069716e-05 0.03767474148 +0.1155775679 -3.265945635e-05 -0.04849447325 0.06953694541 -1.964947762e-05 0.1066617855 +-6.028014379e-05 0.02659435774 -0.03813404454 1.077576891e-05 -0.05849329812 3.30576167e-05 + +ad : 4 0 +iw : 0 +0.8170531799 -0.247178539 0 0 0 0 +0 0 0 0 0 0 +0 0 0 0 0 0 + +iw : 1 +0 0 0.8150193757 0 0 0.02256967339 +0 0 0 0 0 0 +0 0 0 0 0 0 + +iw : 2 +0 0 0 0.8150193757 0 0 +0.02256967339 0 0 0 0 0 +0 0 0 0 0 0 + +iw : 3 +0 0 0 0 0.8150193757 0 +0 0.02256967339 0 0 0 0 +0 0 0 0 0 0 + +iat : 1 +ad : 0 3.03052076 +iw : 6 +0.1150935953 -0.06410311347 -0.07219303423 0.02672869898 0.04955194699 0.04282914818 +-0.01585703416 -0.0293971254 0.02212911648 -0.02039197394 -0.03780438443 -0.009199155668 +0.0139966691 -0.01369969442 0.01262426414 0.02340394 0.005695013702 -0.008665058534 + +ad : 1 2.994710688 +iw : 7 +0.1192926978 -0.06631180479 -0.07548975067 0.02728433166 -0.05095474957 0.04467427619 +-0.0161466657 0.03015464398 0.02373719934 -0.02102182856 0.03925923579 -0.009450806053 +-0.01418950255 -0.01465640929 0.01297981784 -0.02424040932 0.005835350652 0.008761233963 + +ad : 2 1.709269535 +iw : 0 +0.4396940853 -0.1615590582 -0.2875027763 -0.005627149984 -0.0008113324951 0.1066242109 +0.002086903071 0.0003008933973 0.101011939 0.003425032573 0.0004938272893 3.282144628e-05 +9.665437873e-06 -0.03734667878 -0.001266321512 -0.0001825804883 -1.213492211e-05 -3.57355781e-06 + +iw : 1 +0.5744883648 -0.1122607916 -0.264174326 -0.01109747707 -0.001600053986 -0.001574581052 +0.002595663622 0.0003742473986 0.0933320631 0.008411901177 0.001212842876 0.0001308736388 +3.854038041e-05 0.04085026979 -0.0009523410587 -0.000137310228 -3.151678617e-05 -9.281234472e-06 + +iw : 2 +0.0112441773 -0.002197225083 -0.01109747707 0.3026016138 -3.131706718e-05 0.002595663622 +-0.1341416212 7.324959673e-06 0.01091173032 -0.267721887 3.854038041e-05 -0.005242658682 +-0.0007555108486 -0.003247473646 0.1193145981 -9.281234472e-06 0.002335928811 0.0003367056548 + +iw : 3 +0.001621205486 -0.0003167998213 -0.001600053986 -3.131706718e-05 0.3028143039 0.0003742473986 +7.324959673e-06 -0.1341913688 0.001573272688 3.854038041e-05 -0.2679836342 0.0007566345057 +-0.005245111447 -0.0004682265274 -9.281234472e-06 0.1193776317 -0.0003369762521 0.002336519482 + +ad : 3 3.113220902 +iw : 5 +0.1059639845 -0.05925714388 -0.06358704877 -0.05471114836 -0.0001147382641 0.03792215417 +0.03262872933 6.842780449e-05 0.01683755767 0.03983957875 8.355014007e-05 0.01713917818 +7.188765948e-05 -0.01048499156 -0.02480868396 -5.202788496e-05 -0.01067281503 -4.476548901e-05 + +ad : 4 0 +iw : 4 +0.8778350314 -0.01899237841 0 0 0 0 +0 0 0 0 0 0 +0 0 0 0 0 0 + +iat : 2 +ad : 0 3.347258395 +iw : 6 +0.083970075 -0.04734479653 -0.0005828940149 0.05700333953 0.03215589146 0.000351764923 +-0.03440037954 -0.01940543975 -0.01774617636 -0.0004769440117 -0.000269046691 0.01589994474 +0.02631106082 0.01121348344 0.0003013721755 0.0001700056706 -0.01004688353 -0.01662547687 + +ad : 1 3.303653192 +iw : 7 +0.08767473994 -0.04937413925 -0.0003705339936 0.05996259465 -0.03321317421 0.0002231864639 +-0.03611771037 0.02000553535 -0.01867033849 -0.0003058479934 0.000169408658 0.0171547553 +-0.02741498179 0.01176822392 0.0001927810615 -0.0001067810861 -0.01081292671 0.01728011759 + +ad : 2 2.100474535 +iw : 0 +0.3230572918 -0.1446202823 0.07747822275 0.237685627 -6.716427333e-05 -0.03466476827 +-0.1063436523 3.005017266e-05 -0.04188394327 0.0600580083 -1.69709567e-05 0.09212217131 +-5.206304871e-05 0.01791384367 -0.02568692648 7.258511056e-06 -0.03940083111 2.226746678e-05 + +iw : 1 +-0.146857873 0.05155932492 0.1452936884 -0.144083087 4.071443426e-05 -0.07923392798 +0.05857215097 -1.655108896e-05 0.102011228 0.1100781004 -3.110543838e-05 -0.0865347701 +4.890531656e-05 -0.0508813716 -0.06407838456 1.810701888e-05 0.03822967435 -2.160558495e-05 + +iw : 2 +-0.4505266692 0.1581723229 -0.144083087 -0.2497538998 0.0001249026564 0.05857215097 +0.08135943147 -5.077498963e-05 0.02457218512 -0.1187977918 4.890531656e-05 -0.09897559591 +0.0001029833556 -0.001936895948 0.04744750208 -2.160558495e-05 0.02827818753 -4.113126096e-05 + +iw : 3 +0.0001273080612 -4.469571537e-05 4.071443426e-05 0.0001249026564 0.1922603193 -1.655108896e-05 +-5.077498963e-05 -0.09832663799 -6.943511807e-06 4.890531656e-05 0.05427174835 0.0001220622787 +0.1664934233 5.473204692e-07 -2.160558495e-05 -0.02901184662 -5.829029298e-05 -0.0890017699 + +ad : 3 3.113220902 +iw : 4 +0.1059639845 -0.05925714388 0.06358704877 0.05471114836 0.0001147382641 -0.03792215417 +-0.03262872933 -6.842780449e-05 0.01683755767 0.03983957875 8.355014007e-05 0.01713917818 +7.188765948e-05 -0.01048499156 -0.02480868396 -5.202788496e-05 -0.01067281503 -4.476548901e-05 + +ad : 4 0 +iw : 5 +0.8778350314 -0.01899237841 0 0 0 0 +0 0 0 0 0 0 +0 0 0 0 0 0 + +iat : 3 +ad : 0 3.245352337 +iw : 7 +0.09289685966 -0.05221929161 0.0002685632109 -0.000570033376 -0.07291767165 -0.0001613215545 +0.0003424097814 0.04380045987 -0.01997563887 -1.99231389e-06 -0.0002548533054 -0.03459553134 +0.0005409336953 0.01254696941 1.251399347e-06 0.000160076814 0.02172992194 -0.0003397677827 + +ad : 1 2.003222249 +iw : 0 +0.3508189026 -0.1500864749 0.08914085147 -0.1202293073 -0.2154035099 -0.03795971177 +0.05119840989 0.09172736198 -0.03814920318 -0.03150080814 -0.05643702679 -0.04694488092 +0.07611980955 0.01534048149 0.01266704214 0.02269434464 0.01887738188 -0.03060914599 + +iw : 1 +-0.1706457715 0.05466627924 0.1565431659 0.08031206029 0.1438875434 -0.08537396789 +-0.03001504274 -0.05377512106 0.1188507876 -0.05554711773 -0.09951853164 0.05139868212 +-0.08334152344 -0.05683263389 0.03267010273 0.05853194161 -0.02080802258 0.03373962581 + +iw : 2 +0.2301596021 -0.0737315022 0.08031206029 0.1077670091 -0.1940692666 -0.03001504274 +-0.06714484484 0.07252954677 -0.004352982816 0.02023740889 -0.08334152344 -0.1593608109 +-0.04890248224 -0.004116710019 -0.01574247999 0.03373962581 0.07469759414 0.03804075672 + +iw : 3 +0.4123552504 -0.1320977781 0.1438875434 -0.1940692666 -0.131607174 -0.05377512106 +0.07252954677 0.02231651763 -0.007798828739 -0.08334152344 -0.08255995535 0.03710808178 +0.1113532806 -0.007375521054 0.03373962581 0.02587356517 -0.0332659621 -0.0348971405 + +ad : 2 3.03052076 +iw : 4 +0.1150935953 -0.06410311347 0.07219303423 -0.02672869898 -0.04955194699 -0.04282914818 +0.01585703416 0.0293971254 0.02212911648 -0.02039197394 -0.03780438443 -0.009199155668 +0.0139966691 -0.01369969442 0.01262426414 0.02340394 0.005695013702 -0.008665058534 + +ad : 3 3.347258395 +iw : 5 +0.083970075 -0.04734479653 0.0005828940149 -0.05700333953 -0.03215589146 -0.000351764923 +0.03440037954 0.01940543975 -0.01774617636 -0.0004769440117 -0.000269046691 0.01589994474 +0.02631106082 0.01121348344 0.0003013721755 0.0001700056706 -0.01004688353 -0.01662547687 + +ad : 4 0 +iw : 6 +0.8778350314 -0.01899237841 0 0 0 0 +0 0 0 0 0 0 +0 0 0 0 0 0 + +iat : 4 +ad : 0 3.245352337 +iw : 6 +0.09289685966 -0.05221929161 -0.0002685632109 0.000570033376 0.07291767165 0.0001613215545 +-0.0003424097814 -0.04380045987 -0.01997563887 -1.99231389e-06 -0.0002548533054 -0.03459553134 +0.0005409336953 0.01254696941 1.251399347e-06 0.000160076814 0.02172992194 -0.0003397677827 + +ad : 1 1.950638213 +iw : 0 +0.3662277175 -0.1526733097 0.09197392871 -0.1227786408 0.2200416984 -0.03811860367 +0.05088561957 -0.09119630325 -0.03733268828 -0.03135587353 0.0561954394 -0.04629305564 +-0.07501690712 0.01455628605 0.01222588261 -0.02191100958 0.0180499983 0.02924963641 + +iw : 1 +-0.1772065705 0.05345772271 0.1678497891 0.08293590189 -0.1486362497 -0.09072180452 +-0.0293105681 0.05252987935 0.1253013898 -0.05959116734 0.1067982313 0.05297278213 +0.08584126111 -0.05821576032 0.03477040377 -0.06231489983 -0.02021050449 -0.03275069052 + +iw : 2 +0.2365581439 -0.07136225042 0.08293590189 0.1192638574 0.1984188016 -0.0293105681 +-0.07355093851 -0.07012364566 -0.001907026722 0.02362039255 0.08584126111 -0.1661863379 +0.05651026729 -0.006220721217 -0.0180271203 -0.03275069052 0.07543925459 -0.04312872381 + +iw : 3 +-0.4239553023 0.1278941572 -0.1486362497 0.1984188016 -0.1256252743 0.05252987935 +-0.07012364566 0.01299589353 0.003417739406 0.08584126111 -0.0823251717 -0.04436826569 +0.1098982377 0.01114866603 -0.03275069052 0.02239388869 0.03849623203 -0.02989424561 + +ad : 2 2.994710688 +iw : 4 +0.1192926978 -0.06631180479 0.07548975067 -0.02728433166 0.05095474957 -0.04467427619 +0.0161466657 -0.03015464398 0.02373719934 -0.02102182856 0.03925923579 -0.009450806053 +-0.01418950255 -0.01465640929 0.01297981784 -0.02424040932 0.005835350652 0.008761233963 + +ad : 3 3.303653192 +iw : 5 +0.08767473994 -0.04937413925 0.0003705339936 -0.05996259465 0.03321317421 -0.0002231864639 +0.03611771037 -0.02000553535 -0.01867033849 -0.0003058479934 0.000169408658 0.0171547553 +-0.02741498179 0.01176822392 0.0001927810615 -0.0001067810861 -0.01081292671 0.01728011759 + +ad : 4 0 +iw : 7 +0.8778350314 -0.01899237841 0 0 0 0 +0 0 0 0 0 0 +0 0 0 0 0 0 + diff --git a/tests/09_DeePKS/NO_GO_deepks_UT/stress_delta_ref.dat b/tests/09_DeePKS/NO_GO_deepks_UT/stress_delta_ref.dat new file mode 100644 index 0000000000..f8816fe57b --- /dev/null +++ b/tests/09_DeePKS/NO_GO_deepks_UT/stress_delta_ref.dat @@ -0,0 +1,3 @@ +-2.781755381e-07 -2.019757904e-09 -1.13714432e-08 +-2.019757904e-09 -2.879888241e-07 4.400060866e-09 +-1.13714432e-08 4.400060866e-09 -2.46754576e-07 diff --git a/tests/09_DeePKS/NO_GO_deepks_UT/vdpre_ref.dat b/tests/09_DeePKS/NO_GO_deepks_UT/vdpre_ref.dat new file mode 100644 index 0000000000..78b3c13220 --- /dev/null +++ b/tests/09_DeePKS/NO_GO_deepks_UT/vdpre_ref.dat @@ -0,0 +1,320 @@ +0.6675758988 0.06109723014 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.1933308886 0.02610132929 0.0001468775901 3.705346024e-05 0.08250623843 0.01133210627 3.447014936e-05 6.591640326e-06 1.509798793e-10 1.719308976e-09 0.01021440446 7.021723606e-07 2.791996725e-07 4.222367813e-09 1.96568189e-08 0.00139605966 2.493047337e-07 7.863858305e-08 +0.1043660138 0.02091502606 7.94817584e-07 1.652919315e-05 0.06248001278 1.846314548e-06 3.423263329e-05 0.0124745405 6.77469941e-10 2.800292118e-10 0.01349989326 2.575251759e-05 0.0003220797782 4.347406872e-10 1.020669776e-11 0.002528867608 2.068635425e-07 4.075111794e-06 +0.1230739025 0.02252594996 5.866756463e-06 4.525992154e-05 0.06874872312 3.63544531e-05 0.0002780702035 0.01216170117 3.459664499e-13 1.348531826e-09 0.01356241525 1.497436155e-05 5.345689671e-05 2.03568899e-12 7.183577352e-10 0.002200490209 6.595832789e-07 2.942459604e-06 +0.1341227411 0.0233091395 2.553312694e-06 7.755451658e-05 0.07187203941 7.05524111e-05 0.001588176704 0.01070041084 2.93797881e-11 2.835812644e-09 0.01326437759 3.28744042e-06 3.776328798e-05 1.371380109e-11 9.916221826e-10 0.00201964812 2.002594915e-07 2.944293297e-06 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.2525991361 0.01813674777 0.0002074871209 3.302842752e-05 0.07577408197 -0.0001462343165 -1.604528069e-05 -7.935805989e-08 -8.613195382e-10 -1.022583899e-08 0.009460658081 -3.782690705e-06 2.029999558e-07 -1.173550738e-08 -4.049075341e-08 -0.001522797234 -1.447448288e-06 -9.353998722e-08 +-0.04744350675 -0.007456524125 -1.393030807e-05 -0.0007465409834 -0.02222891355 -1.294151409e-05 -0.0005530945277 -0.002916115159 -1.908369174e-07 -8.134249598e-08 -0.008481429056 3.612246467e-05 0.002812244819 -1.083210912e-07 4.049944664e-09 -0.000952092539 2.961472004e-06 0.0001774498629 +-0.0598657623 -0.008204669149 -5.004887091e-05 -0.001377847705 -0.02526745758 -9.758423002e-05 -0.00172137458 -0.001409642432 -2.770673799e-09 -3.181077171e-07 -0.007302047603 6.123625458e-05 0.001316532611 -4.385675262e-09 1.356998117e-07 -0.0007254296412 8.070674227e-06 0.0001620231875 +-0.06489795784 -0.008161567456 -1.269326905e-05 -0.00192997543 -0.02550845692 -0.000110490383 -0.004264536145 0.001551197814 1.25936334e-08 -5.454033764e-07 -0.006895849708 1.347974447e-05 0.001183353827 5.757489696e-09 1.91322911e-07 -0.0005513727293 2.065637405e-06 0.0001694406321 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.004943998254 0.0003549816152 -0.003638820992 -0.0002104806099 0.005337097812 -0.000830136543 0.0007785465501 4.841222119e-05 2.463518232e-08 6.157771778e-07 -5.974116391e-05 0.0002212423032 2.295696042e-05 2.927530312e-07 1.062583557e-06 -9.506016517e-05 5.87204788e-05 5.148207691e-06 +-0.1455459257 -0.022874926 3.596887781e-06 0.0002226963278 -0.07075251537 2.5120782e-06 0.0001479397186 -0.01083290245 6.12362155e-08 2.616256882e-08 -0.01587298786 -4.757877117e-05 -0.00136131254 3.485229539e-08 -1.335373699e-09 -0.002304452401 -1.191220353e-06 -6.205280872e-05 +0.08074433903 0.01106610126 -0.0004601908797 -9.242299947e-05 0.03655814765 -0.0005627070488 4.328127562e-05 0.004874022846 3.838682394e-09 -2.063210121e-07 0.007164806305 0.0006802684405 0.0001459702757 5.457790587e-09 9.753673835e-08 0.0006620379712 7.328145534e-05 1.341323811e-05 +0.0866341491 0.01089511096 -0.0003215003477 -0.0002381361633 0.03720493304 -0.0008147130499 0.0002858982241 0.004298424933 -4.525165449e-08 -2.092999611e-07 0.00708760878 0.0003340410166 0.0001870964494 -1.859635343e-08 8.017450278e-08 0.0004416869644 4.167569802e-05 2.340732569e-05 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.0007128344634 5.118188077e-05 -0.0004228570104 0.001830852048 -0.001193481933 0.0002289638627 0.0001115869508 -0.0003410089903 1.839030163e-07 -8.297742658e-08 0.0001297138024 3.640198602e-05 -0.0001395288813 4.941366148e-07 -6.284189824e-07 1.96527422e-05 9.17143385e-06 -3.299172173e-05 +4.112779749e-05 6.463906975e-06 0.0001708016316 -6.551355537e-05 -8.535905264e-05 0.0001329538713 -5.661649535e-05 -7.331877092e-05 -1.254679668e-07 1.203823194e-07 0.0006978026769 -0.0008853767958 0.0001924626256 -2.668860072e-08 -1.649962511e-08 2.890368377e-05 -4.238624069e-05 1.419479005e-05 +0.1446620165 0.01982608987 0.0002443041523 -0.0004556861743 0.06471910085 0.000307405608 -0.0004786795105 0.007972994753 -3.288647839e-09 -1.438312468e-08 0.01410089064 -0.0003310353745 0.0005466012859 -4.859407525e-09 2.364321134e-09 0.00131636873 -3.696744676e-05 6.221943228e-05 +-0.1552641827 -0.01952602428 -0.0001775481836 0.0005686284607 -0.0660661296 -0.0004657202653 0.0006519347021 -0.006942042692 -3.055815399e-08 1.068661557e-07 -0.0133638881 0.000175746938 -0.0004477387751 -1.279206462e-08 -3.589596583e-08 -0.0008708155132 2.225712431e-05 -5.972745069e-05 +0.336188631 0.04436199784 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.3859788712 0.00306839077 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.03423243788 0.008569784877 -2.901767732e-06 -0.0001715122336 0.01810507142 -2.637656985e-06 -0.000137795848 0.004924852381 1.92648744e-07 8.396933758e-08 0.002532553704 1.570213328e-05 0.0007178231336 1.092455491e-07 -4.257458729e-09 0.0008221382259 8.114804982e-07 4.689405498e-05 +0.0403770088 0.009621010332 -1.168582687e-05 -0.0003125010968 0.02064677173 -1.310824769e-05 -0.0003557704763 0.005503036542 2.746891412e-09 3.424946023e-07 0.003099955334 2.130986978e-05 0.0003073891633 4.359122813e-09 -1.453711785e-07 0.0008070631271 2.77271285e-06 4.393141974e-05 +0.04368829243 0.01012404271 -3.608776147e-06 -0.0004260093906 0.02193480991 -1.788582557e-06 -0.0004338832843 0.00571021804 -1.188802465e-08 5.787067509e-07 0.003204947453 5.621322272e-06 0.0002699980315 -5.481119573e-09 -2.015867125e-07 0.0007912084335 8.746332744e-07 4.619366227e-05 +0.2359756694 0.03547129182 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.04659173726 0.009573528358 0.0006758764722 4.600189219e-05 0.01786753562 0.004293257787 -0.000172505292 -9.219144734e-06 2.35904045e-08 5.805216259e-07 0.001873980433 -3.329276048e-05 -3.441094764e-06 2.785378711e-07 1.010676143e-06 0.0004353412596 -1.241665373e-05 -1.079264857e-06 +0.2835910079 0.002746683128 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.02945828957 0.007105813618 8.772114857e-05 0.00011018425 0.01363401818 0.0001426529805 0.0002086810338 0.003203273409 2.906501164e-09 -2.889126199e-07 0.002144958679 -0.0001041165763 -7.697336581e-05 3.991817949e-09 1.333975419e-07 0.0005244895988 -1.405577969e-05 -1.164252037e-05 +0.03210891989 0.007538113254 5.936279049e-05 0.0001775201647 0.01446760564 0.0002129726766 0.0007974893812 0.002660348437 -4.049460789e-08 -3.586806435e-07 0.002109510284 -5.096830317e-05 -7.957765224e-05 -1.646175326e-08 1.338178329e-07 0.0005083401584 -8.003820042e-06 -1.419161274e-05 +0.2585819354 0.03793023611 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.05060597311 0.01035643864 -0.0003714232064 0.0002904013543 0.02064611012 0.004455929716 0.0001351220421 -6.636512195e-05 -1.665932333e-07 -2.461370675e-07 0.002141792 2.333379934e-05 -1.8086762e-05 -5.624066045e-07 -9.246401797e-09 0.0004893131837 8.605766782e-06 -6.006834021e-06 +0.02712714502 0.00684701784 3.011226639e-05 6.641529747e-05 0.01340502561 2.825215823e-05 6.272877372e-05 0.003554504082 1.045588086e-08 -1.396989692e-07 0.002482206555 -0.0001281798853 -0.0001758897255 -3.157012159e-08 1.571203521e-08 0.0006110938485 -7.534440399e-06 -1.492169793e-05 +0.3079611224 0.002850499127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.03402140488 0.007972492082 -5.577570533e-05 0.00022145974 0.01578455554 -0.0001457821003 0.001106132121 0.003010516914 5.133791865e-08 -1.597821649e-07 0.002349045598 5.057134464e-05 -0.0001070696379 2.149107933e-08 5.294058905e-08 0.0005728731201 7.802584023e-06 -1.931803518e-05 +0.271471693 0.03922570811 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.05245229364 0.01071327273 -0.000236596623 -0.0003171496901 0.02214506743 0.004565396071 8.814447319e-05 8.519571092e-05 1.419299902e-07 -3.848472316e-07 0.002308879491 1.337007594e-05 2.267337993e-05 2.66803035e-07 -1.062346233e-06 0.0005235014391 5.092548611e-06 7.456848269e-06 +0.02832396405 0.007140501957 -2.789737143e-05 9.178037531e-05 0.01416188632 -2.495486669e-05 8.832365489e-05 0.003770384908 -1.996621563e-07 6.241218517e-08 0.002453226298 0.0001337781467 -0.0002414906786 -7.614084086e-08 -1.197514073e-08 0.0006457592888 7.289537107e-06 -2.067623074e-05 +0.03258997436 0.007837409402 -7.80727605e-05 0.0001770974542 0.01570017238 -0.0001023761436 0.0003533428577 0.003790388479 -5.50758023e-09 -9.669094641e-09 0.002472439512 0.0001038001536 -0.0001344649918 -8.138034954e-09 -2.672779784e-09 0.0006240597692 1.343828815e-05 -2.075796814e-05 +0.3214875199 0.002899629272 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.2525991361 0.01813674777 0.0002074871209 3.302842752e-05 0.07577408197 -0.0001462343165 -1.604528069e-05 -7.935805989e-08 -8.613195382e-10 -1.022583899e-08 0.009460658081 -3.782690705e-06 2.029999558e-07 -1.173550738e-08 -4.049075341e-08 -0.001522797234 -1.447448288e-06 -9.353998722e-08 +-0.04744350675 -0.007456524125 -1.393030807e-05 -0.0007465409834 -0.02222891355 -1.294151409e-05 -0.0005530945277 -0.002916115159 -1.908369174e-07 -8.134249598e-08 -0.008481429056 3.612246467e-05 0.002812244819 -1.083210912e-07 4.049944664e-09 -0.000952092539 2.961472004e-06 0.0001774498629 +-0.0598657623 -0.008204669149 -5.004887091e-05 -0.001377847705 -0.02526745758 -9.758423002e-05 -0.00172137458 -0.001409642432 -2.770673799e-09 -3.181077171e-07 -0.007302047603 6.123625458e-05 0.001316532611 -4.385675262e-09 1.356998117e-07 -0.0007254296412 8.070674227e-06 0.0001620231875 +-0.06489795784 -0.008161567456 -1.269326905e-05 -0.00192997543 -0.02550845692 -0.000110490383 -0.004264536145 0.001551197814 1.25936334e-08 -5.454033764e-07 -0.006895849708 1.347974447e-05 0.001183353827 5.757489696e-09 1.91322911e-07 -0.0005513727293 2.065637405e-06 0.0001694406321 +0 0 0.004031914173 0.004246437011 0.6559782316 7.472119734e-06 1.066978924e-05 0.0004912482479 0 0 0 0 0 0 0 0 0 0 +0.3300368813 0.01260248533 0.0002931073781 2.94406249e-05 0.06959124071 1.887069784e-06 7.468811051e-06 9.554073582e-10 4.913710028e-09 6.081965755e-08 0.008762532524 2.037782997e-05 1.475968137e-07 3.26172753e-08 8.340622761e-08 0.001661040343 8.403797688e-06 1.112650924e-07 +0.02156723487 0.002658363986 0.0002441484522 0.03371752238 0.007908522671 9.071194678e-05 0.008936313897 0.0006816866421 5.375696667e-05 2.36282551e-05 0.005328533898 5.066815114e-05 0.02455516136 2.698955758e-05 1.606989074e-06 0.0003584530088 4.23966269e-05 0.007727015957 +0.02911997934 0.002988402086 0.0004269632624 0.04194581504 0.009286636661 0.0002619399038 0.01065605163 0.0001633892955 2.218895805e-05 7.503902962e-05 0.003931445706 0.0002504199503 0.03242347056 9.448470606e-06 2.563407895e-05 0.000239150423 9.875293168e-05 0.008921622326 +0.03140216863 0.002857728117 6.310197708e-05 0.04802821711 0.009053331164 0.0001730362512 0.01145103595 0.0002248712405 5.39825552e-06 0.0001048958025 0.003584996196 5.527203168e-05 0.03708168317 2.417177228e-06 3.691371261e-05 0.0001505271555 2.130664498e-05 0.00975111 +0 0 0.05096248647 0.007931563521 -0.05889404999 6.083864586e-05 7.04776874e-06 -6.78864146e-05 0 0 0 0 0 0 0 0 0 0 +0.006459649032 0.0002466622272 -0.005140392693 -0.0001876165822 0.004901613439 1.071243484e-05 -0.0003624004584 -5.828442936e-07 -1.405403419e-07 -3.662423896e-06 -5.533271442e-05 -0.001191860077 1.669150221e-05 -8.136679487e-07 -2.188798147e-06 0.0001036899502 -0.0003409275676 -6.123753289e-06 +0.06616338839 0.008155258192 -6.304057169e-05 -0.01005807931 0.02517207468 -1.76081023e-05 -0.002390252836 0.00253235709 -1.724966658e-05 -7.599666604e-06 0.00997234703 -6.673764902e-05 -0.01188632258 -8.683886234e-06 -5.298667321e-07 0.000867602531 -1.705358848e-05 -0.002702076154 +-0.03927576287 -0.004030626888 0.003925854784 0.002813633196 -0.0134363433 0.001510443134 -0.0002679297771 -0.0005649398322 -3.07421114e-05 4.866945287e-05 -0.003857554553 0.002781894325 0.003594945463 -1.175822897e-05 1.842496625e-05 -0.000218252263 0.0008966733571 0.0007385846828 +-0.0419196574 -0.003814863395 0.001598272872 0.005926114486 -0.01320458469 0.001275901922 -0.0007676874415 0.000623126295 -1.939710216e-05 4.025403642e-05 -0.003684687397 0.001369694039 0.005862871357 -7.807340421e-06 1.546881416e-05 -0.0001205824641 0.0004298766569 0.001347064188 +0 0 0.00804948266 -0.05234292513 0.04429344247 7.003630478e-06 -7.260557947e-05 6.560194899e-05 0 0 0 0 0 0 0 0 0 0 +0.0009313636889 3.556419872e-05 -0.0005973503757 0.001631970773 -0.001096098908 -2.954647015e-06 -5.194186797e-05 4.105474591e-06 -1.049141527e-06 4.935202552e-07 0.0001201418974 -0.0001961020711 -0.0001014483881 -1.373386721e-06 1.294469781e-06 -2.143686429e-05 -5.324879324e-05 3.92433982e-05 +-1.869619109e-05 -2.304480911e-06 -0.002993541404 0.002958919629 3.036873581e-05 -0.0009319237622 0.0009147491954 1.713938717e-05 3.534314745e-05 -3.49684887e-05 -0.0004384007923 -0.001241897687 0.001680490544 6.649799384e-06 -6.546933227e-06 -1.088193845e-05 -0.0006068041939 0.0006181090671 +-0.07036667984 -0.007221294027 -0.00208414088 0.01387245333 -0.02378643647 -0.0008251517214 0.002963232777 -0.0009241364803 2.633715631e-05 3.392862421e-06 -0.00759196447 -0.001353738282 0.01346165719 1.046907635e-05 4.466269617e-07 -0.0004339637102 -0.0004523344198 0.00342604219 +0.07512766516 0.006836930393 0.0008826442875 -0.01415054863 0.02344785308 0.0007293529685 -0.001750560309 -0.001006361495 -1.309873951e-05 -2.055324857e-05 0.006947582968 0.0007206286693 -0.01403038299 -5.370515439e-06 -6.925743287e-06 0.0002377364262 0.000229577875 -0.00343724486 +0 0 0.001950970795 0.001642757289 0.2529227472 -5.44685907e-05 -6.651445969e-05 -0.003074558391 0 0 0 0 0 0 0 0 0 0 +0.5043060117 0.002132099435 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.01556164539 -0.003055258335 5.085760465e-05 0.007746349768 -0.006441356997 1.84883313e-05 0.002226358949 -0.001151259775 -5.426734121e-05 -2.439129639e-05 -0.001591099586 2.202502154e-05 0.006267684361 -2.721989784e-05 -1.689329171e-06 -0.0003095265519 1.161720789e-05 0.002041991496 +-0.01964023536 -0.003504278701 9.969093553e-05 0.009513470293 -0.007588379903 3.518573788e-05 0.002202372806 -0.0006378477571 -2.199849665e-05 -8.079169801e-05 -0.001669025833 8.714472446e-05 0.007570358228 -9.391266179e-06 -2.746102754e-05 -0.0002660623129 3.392697003e-05 0.002419033604 +-0.02113944986 -0.003544878072 1.794028858e-05 0.01060141553 -0.007784990631 2.801054827e-06 0.001165053576 0.0008277885659 -5.095796634e-06 -0.000111300941 -0.001666179646 2.30495395e-05 0.008460682874 -2.301148263e-06 -3.889400351e-05 -0.0002160033468 9.021670801e-06 0.002658391181 +0 0 -0.01413416697 -0.00252283138 -0.04188843043 0.0003240128486 5.40068418e-05 0.0004722869198 0 0 0 0 0 0 0 0 0 0 +0.0608750762 0.006652253881 0.0009547791682 4.100481175e-05 0.01640962107 -5.540202352e-05 8.029834168e-05 1.109911045e-07 -1.345800275e-07 -3.452736398e-06 0.001735694743 0.0001793522826 -2.5019445e-06 -7.741588099e-07 -2.08187493e-06 -0.0004748625615 7.209034467e-05 1.283777212e-06 +-0.1289169856 -0.0009792342096 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.01432913823 -0.002588163868 -0.0007483427117 -0.003354338911 -0.005010958173 -0.000382915436 -0.00129182567 -0.0003712860606 -2.327673232e-05 6.815214306e-05 -0.00115485259 -0.0004257750257 -0.001895694523 -8.59994694e-06 2.519917366e-05 -0.000172907064 -0.0001719868021 -0.0006410821267 +-0.01553653998 -0.002639429045 -0.0002951099068 -0.004417660908 -0.005134768656 -0.0003335312321 -0.002141400439 0.0003856605828 -1.735799618e-05 6.898397692e-05 -0.001096686654 -0.0002089892485 -0.002493652549 -6.911167401e-06 2.581872187e-05 -0.0001387790763 -8.255783502e-05 -0.0008167106978 +0 0 0.008849939412 -0.01262284846 -0.06608175239 -0.0001774452139 0.0003424695591 0.0008227427789 0 0 0 0 0 0 0 0 0 0 +0.06611993135 0.007196266263 -0.0005246922398 0.0002588557187 0.01896147577 -5.750121124e-05 -6.289706119e-05 7.989828119e-07 9.503915849e-07 1.463935836e-06 0.001983743826 -0.000125702108 -1.31504878e-05 1.563134039e-06 1.904650884e-08 -0.0005337341835 -4.996456427e-05 7.145082678e-06 +-0.01233166661 -0.002441065748 -0.0005277602759 -0.002999646809 -0.004769191654 -0.0001980300184 -0.001013504897 -0.0008309198435 -2.945323403e-06 4.057956228e-05 -0.001559468538 -0.0001797949797 -0.001535783998 7.866091493e-06 6.234423187e-06 -0.0002300705233 -0.0001078635415 -0.0006497621136 +-0.1497988362 -0.001038242662 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.01646193391 -0.002791524411 0.0002772774505 -0.005511114966 -0.005602173784 0.0002283057353 -0.002970160938 0.0004364231736 2.200597666e-05 3.073042658e-05 -0.001221215643 0.000207361569 -0.003355143913 9.022638389e-06 1.021432132e-05 -0.0001563968558 8.048212492e-05 -0.001111730307 +0 0 0.004959153779 0.01458309168 -0.09316852463 -0.0001145091692 -0.0003465022761 0.001484568252 0 0 0 0 0 0 0 0 0 0 +0.06853226689 0.007444215699 -0.000334229014 -0.000282698444 0.02033812457 -5.891381162e-05 -4.10297849e-05 -1.025687992e-06 -8.096911599e-07 2.288934614e-06 0.002138501514 -7.202627847e-05 1.648531706e-05 -7.415434004e-07 2.188309287e-06 -0.0005710261291 -2.95670309e-05 -8.869863427e-06 +-0.01287572583 -0.002545697288 0.0004889410931 -0.004145260511 -0.005038464827 0.0001749180601 -0.001427039801 -0.0008813852975 5.624295356e-05 -1.812940474e-05 -0.001541261431 0.0001876475323 -0.002108579787 1.897144485e-05 -4.751650187e-06 -0.0002431217035 0.00010435749 -0.000900342002 +-0.01585245629 -0.002854634377 0.0006660330177 -0.005391377461 -0.005770339021 0.0002748025699 -0.002187344799 -0.000439337586 4.410748991e-05 2.28086098e-06 -0.001331169315 0.0004244810445 -0.003311594156 1.753253021e-05 -5.048956748e-07 -0.0002057320921 0.0001644311633 -0.001143013879 +-0.1555581354 -0.001015289299 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.004943998254 0.0003549816152 -0.003638820992 -0.0002104806099 0.005337097812 -0.000830136543 0.0007785465501 4.841222119e-05 2.463518232e-08 6.157771778e-07 -5.974116391e-05 0.0002212423032 2.295696042e-05 2.927530312e-07 1.062583557e-06 -9.506016517e-05 5.87204788e-05 5.148207691e-06 +-0.1455459257 -0.022874926 3.596887781e-06 0.0002226963278 -0.07075251537 2.5120782e-06 0.0001479397186 -0.01083290245 6.12362155e-08 2.616256882e-08 -0.01587298786 -4.757877117e-05 -0.00136131254 3.485229539e-08 -1.335373699e-09 -0.002304452401 -1.191220353e-06 -6.205280872e-05 +0.08074433903 0.01106610126 -0.0004601908797 -9.242299947e-05 0.03655814765 -0.0005627070488 4.328127562e-05 0.004874022846 3.838682394e-09 -2.063210121e-07 0.007164806305 0.0006802684405 0.0001459702757 5.457790587e-09 9.753673835e-08 0.0006620379712 7.328145534e-05 1.341323811e-05 +0.0866341491 0.01089511096 -0.0003215003477 -0.0002381361633 0.03720493304 -0.0008147130499 0.0002858982241 0.004298424933 -4.525165449e-08 -2.092999611e-07 0.00708760878 0.0003340410166 0.0001870964494 -1.859635343e-08 8.017450278e-08 0.0004416869644 4.167569802e-05 2.340732569e-05 +0 0 0.05096248647 0.007931563521 -0.05889404999 6.083864586e-05 7.04776874e-06 -6.78864146e-05 0 0 0 0 0 0 0 0 0 0 +0.006459649032 0.0002466622272 -0.005140392693 -0.0001876165822 0.004901613439 1.071243484e-05 -0.0003624004584 -5.828442936e-07 -1.405403419e-07 -3.662423896e-06 -5.533271442e-05 -0.001191860077 1.669150221e-05 -8.136679487e-07 -2.188798147e-06 0.0001036899502 -0.0003409275676 -6.123753289e-06 +0.06616338839 0.008155258192 -6.304057169e-05 -0.01005807931 0.02517207468 -1.76081023e-05 -0.002390252836 0.00253235709 -1.724966658e-05 -7.599666604e-06 0.00997234703 -6.673764902e-05 -0.01188632258 -8.683886234e-06 -5.298667321e-07 0.000867602531 -1.705358848e-05 -0.002702076154 +-0.03927576287 -0.004030626888 0.003925854784 0.002813633196 -0.0134363433 0.001510443134 -0.0002679297771 -0.0005649398322 -3.07421114e-05 4.866945287e-05 -0.003857554553 0.002781894325 0.003594945463 -1.175822897e-05 1.842496625e-05 -0.000218252263 0.0008966733571 0.0007385846828 +-0.0419196574 -0.003814863395 0.001598272872 0.005926114486 -0.01320458469 0.001275901922 -0.0007676874415 0.000623126295 -1.939710216e-05 4.025403642e-05 -0.003684687397 0.001369694039 0.005862871357 -7.807340421e-06 1.546881416e-05 -0.0001205824641 0.0004298766569 0.001347064188 +0 0 0.6441543436 0.01481470223 0.00528753693 0.0004953535224 4.655297596e-06 9.381336844e-06 0 0 0 0 0 0 0 0 0 0 +0.0001264315232 4.827798067e-06 0.09015002357 0.001195626181 0.0003452419308 6.081187941e-05 0.01758433723 0.0003555629623 4.019689318e-06 0.0002205429845 3.494091778e-07 0.06970960335 0.001887616941 2.029769577e-05 5.743980356e-05 6.472814353e-06 0.01383084299 0.0003370361139 +0.2029742797 0.02501848375 1.627744777e-05 0.00300036753 0.08012031702 3.417909962e-06 0.0006393361607 0.009407302466 5.535115083e-06 2.444316444e-06 0.01866323968 8.790361789e-05 0.005753766482 2.794039136e-06 1.747110533e-07 0.002099952109 6.85962307e-06 0.0009448945857 +0.05297344243 0.005436334416 0.03609756891 0.0001887323385 0.0194403343 0.008709778191 6.736675832e-06 0.001953353266 4.259223941e-05 3.156644821e-05 0.003785052178 0.03090383184 0.0003985888203 1.463262726e-05 1.324328376e-05 0.0001991802888 0.008141764459 6.114441004e-05 +0.05595975544 0.005092570785 0.04048171375 0.0007312125042 0.01925932607 0.009408003827 5.146643591e-05 0.001726705375 6.969799236e-05 1.544759094e-05 0.003787150801 0.033942334 0.000926960634 2.521725083e-05 6.482258069e-06 9.659473479e-05 0.008673066094 0.0001860897813 +0 0 0.1017436467 -0.09776695955 -0.003976687167 5.702416578e-05 -4.795852305e-05 -9.065642732e-06 0 0 0 0 0 0 0 0 0 0 +1.822912194e-05 6.960805137e-07 0.01047607715 -0.01040007743 -7.720300833e-05 -1.677281036e-05 0.002520315032 -0.002504536329 3.000720598e-05 -2.971868715e-05 -7.586593578e-07 0.01146963293 -0.011472646 3.426039564e-05 -3.397028182e-05 -1.338189888e-06 0.002160211637 -0.002159858799 +-5.735567679e-05 -7.069625126e-06 0.0007729500631 -0.00088265822 9.666079463e-05 0.0001808957863 -0.0002446737976 6.367008818e-05 -1.134099536e-05 1.124707917e-05 -0.0008204667404 0.001635767836 -0.0008134685983 -2.139571987e-06 2.158696764e-06 -2.633873092e-05 0.0002440804792 -0.0002161478351 +0.09490752035 0.009739767619 -0.01916332192 0.0009305337176 0.03441533657 -0.004758132435 -7.450586064e-05 0.003195322598 -3.64893111e-05 2.200571603e-06 0.007449274211 -0.01503856557 0.001492558404 -1.30283304e-05 3.210213526e-07 0.0003960417909 -0.004107181588 0.0002836280434 +-0.1002900794 -0.009126814875 0.02235597814 -0.001746010496 -0.03419947379 0.005377964718 0.0001173590905 -0.002788663898 4.706661021e-05 -7.887362476e-06 -0.007140780633 0.01785787066 -0.002218300883 1.734644931e-05 -2.902255781e-06 -0.0001904430067 0.004631896269 -0.000474837168 +0 0 0.02465983115 0.003068368553 -0.0227075293 -0.0004434879817 -4.393512553e-05 0.0004248783514 0 0 0 0 0 0 0 0 0 0 +0.009870532737 4.173053025e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.04773960101 -0.009372840099 -1.313173376e-05 -0.002310768847 -0.02050222603 -3.588771274e-06 -0.0005954984181 -0.004276746343 1.74134368e-05 7.845087158e-06 -0.002977741633 -2.901029788e-05 -0.003033973877 8.75799818e-06 5.570164362e-07 -0.0007491805433 -4.672897281e-06 -0.0007140682198 +0.02648989609 0.004726418851 0.0009166412445 0.0006381427039 0.01097922543 0.0002028940815 -5.537522485e-05 0.00220544194 3.047823306e-05 -5.240056752e-05 0.001637656649 0.0009680834697 0.0008393618726 1.168704044e-05 -1.973811919e-05 0.0002428124574 0.000308055767 0.0002002619145 +0.02821965917 0.004732159619 0.0004543990201 0.00130808941 0.01135466783 2.065388733e-05 -7.81062083e-05 0.002293831888 1.831030182e-05 -4.271202496e-05 0.001712512596 0.00057118973 0.001337692657 7.432573682e-06 -1.629866165e-05 0.0001730333357 0.0001820185997 0.0003672426585 +0 0 -0.1786526851 -0.00471218513 0.003760763997 0.002638140669 3.567340673e-05 -6.526611705e-05 0 0 0 0 0 0 0 0 0 0 +0.00119147783 0.0001302012829 -0.01674451149 -0.0002613117982 0.001155800908 -0.0003145037729 -0.003896223325 -6.770989496e-05 3.849214336e-06 0.0002079160718 -1.096038175e-05 -0.01048997002 -0.0002829411496 1.931210394e-05 5.463385793e-05 -2.96431544e-05 -0.002924580859 -7.065589718e-05 +-0.3954880928 -0.003004068612 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.01932651905 0.003490802969 -0.006880884315 -0.0002250016909 0.007250090287 -0.002208033151 3.248093908e-05 0.001283770055 3.224918883e-05 4.420269733e-05 0.001133147244 -0.004729899219 -0.0002101847305 1.070227654e-05 1.811237007e-05 0.00015779758 -0.001561634481 -5.307257155e-05 +0.02074017375 0.003523449689 -0.007474665297 -0.0005450871566 0.007489230912 -0.0024593294 0.0001435613539 0.001068679346 6.237104263e-05 2.647278017e-05 0.001127183202 -0.005178954331 -0.0003942637673 2.232266463e-05 1.081942135e-05 0.0001111714557 -0.001665662809 -0.0001128242562 +0 0 0.1118612397 -0.02357715989 0.005932852405 -0.001444774296 0.0002262131142 -0.0001136961967 0 0 0 0 0 0 0 0 0 0 +0.001294132792 0.0001408489688 0.009201829629 -0.001649612581 0.001335539121 -0.0003264203496 0.003051881169 -0.0004874178208 -2.718279214e-05 -8.815494535e-05 -1.252673588e-05 0.007352074504 -0.001487168935 -3.89938171e-05 -4.99830342e-07 -3.331819793e-05 0.002026976136 -0.0003932475371 +-0.0378307582 -0.007488636447 0.0001362708189 0.00089480731 -0.01517988295 3.843962065e-05 0.0002710886146 -0.003086734618 9.451025572e-07 -1.305179511e-05 -0.002918544151 0.0002368172901 0.0007434210567 -2.530913796e-06 -2.055653951e-06 -0.0005568645357 4.338695278e-05 0.0002272166542 +0.2020421615 0.001400336591 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.02197550869 0.003726486165 0.007022997497 -0.000680006467 0.008170956841 0.00168343757 0.0001991221809 0.00120934431 -7.907224393e-05 1.179288095e-05 0.00125517508 0.005138618869 -0.0005304715282 -2.914259186e-05 4.280345355e-06 0.0001252844923 0.001623783887 -0.0001535796524 +0 0 0.06268258612 0.02723853377 0.008364716211 -0.0009323435709 -0.0002288768647 -0.0002051549624 0 0 0 0 0 0 0 0 0 0 +0.001341348245 0.0001457019608 0.005861566477 0.001801555368 0.001432502477 -0.0003344393373 0.001990840678 0.0006257188496 2.315852417e-05 -0.0001378345286 -1.350398338e-05 0.004212678483 0.001864299772 1.849848253e-05 -5.742697458e-05 -3.564613656e-05 0.001199483412 0.0004881751695 +-0.03949980856 -0.007809622299 -0.0001262474767 0.001236548715 -0.01603695382 -3.395335681e-05 0.000381699431 -0.003274205726 -1.804737611e-05 5.831045551e-06 -0.002884469566 -0.0002471602944 0.001020692113 -6.104059627e-06 1.566744539e-06 -0.0005884537169 -4.197668114e-05 0.0003148424524 +0.02138110425 0.003850206814 0.006124060638 -0.0003616417653 0.008348798262 0.001584614062 5.499736909e-05 0.001519067093 -6.110955573e-05 1.479340238e-06 0.001306150112 0.00471552449 -0.000367172304 -2.181850517e-05 -3.629030631e-07 0.000187754193 0.00149302953 -9.462545178e-05 +0.2076590257 0.001355338865 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.0007128344634 5.118188077e-05 -0.0004228570104 0.001830852048 -0.001193481933 0.0002289638627 0.0001115869508 -0.0003410089903 1.839030163e-07 -8.297742658e-08 0.0001297138024 3.640198602e-05 -0.0001395288813 4.941366148e-07 -6.284189824e-07 1.96527422e-05 9.17143385e-06 -3.299172173e-05 +4.112779749e-05 6.463906975e-06 0.0001708016316 -6.551355537e-05 -8.535905264e-05 0.0001329538713 -5.661649535e-05 -7.331877092e-05 -1.254679668e-07 1.203823194e-07 0.0006978026769 -0.0008853767958 0.0001924626256 -2.668860072e-08 -1.649962511e-08 2.890368377e-05 -4.238624069e-05 1.419479005e-05 +0.1446620165 0.01982608987 0.0002443041523 -0.0004556861743 0.06471910085 0.000307405608 -0.0004786795105 0.007972994753 -3.288647839e-09 -1.438312468e-08 0.01410089064 -0.0003310353745 0.0005466012859 -4.859407525e-09 2.364321134e-09 0.00131636873 -3.696744676e-05 6.221943228e-05 +-0.1552641827 -0.01952602428 -0.0001775481836 0.0005686284607 -0.0660661296 -0.0004657202653 0.0006519347021 -0.006942042692 -3.055815399e-08 1.068661557e-07 -0.0133638881 0.000175746938 -0.0004477387751 -1.279206462e-08 -3.589596583e-08 -0.0008708155132 2.225712431e-05 -5.972745069e-05 +0 0 0.00804948266 -0.05234292513 0.04429344247 7.003630478e-06 -7.260557947e-05 6.560194899e-05 0 0 0 0 0 0 0 0 0 0 +0.0009313636889 3.556419872e-05 -0.0005973503757 0.001631970773 -0.001096098908 -2.954647015e-06 -5.194186797e-05 4.105474591e-06 -1.049141527e-06 4.935202552e-07 0.0001201418974 -0.0001961020711 -0.0001014483881 -1.373386721e-06 1.294469781e-06 -2.143686429e-05 -5.324879324e-05 3.92433982e-05 +-1.869619109e-05 -2.304480911e-06 -0.002993541404 0.002958919629 3.036873581e-05 -0.0009319237622 0.0009147491954 1.713938717e-05 3.534314745e-05 -3.49684887e-05 -0.0004384007923 -0.001241897687 0.001680490544 6.649799384e-06 -6.546933227e-06 -1.088193845e-05 -0.0006068041939 0.0006181090671 +-0.07036667984 -0.007221294027 -0.00208414088 0.01387245333 -0.02378643647 -0.0008251517214 0.002963232777 -0.0009241364803 2.633715631e-05 3.392862421e-06 -0.00759196447 -0.001353738282 0.01346165719 1.046907635e-05 4.466269617e-07 -0.0004339637102 -0.0004523344198 0.00342604219 +0.07512766516 0.006836930393 0.0008826442875 -0.01415054863 0.02344785308 0.0007293529685 -0.001750560309 -0.001006361495 -1.309873951e-05 -2.055324857e-05 0.006947582968 0.0007206286693 -0.01403038299 -5.370515439e-06 -6.925743287e-06 0.0002377364262 0.000229577875 -0.00343724486 +0 0 0.1017436467 -0.09776695955 -0.003976687167 5.702416578e-05 -4.795852305e-05 -9.065642732e-06 0 0 0 0 0 0 0 0 0 0 +1.822912194e-05 6.960805137e-07 0.01047607715 -0.01040007743 -7.720300833e-05 -1.677281036e-05 0.002520315032 -0.002504536329 3.000720598e-05 -2.971868715e-05 -7.586593578e-07 0.01146963293 -0.011472646 3.426039564e-05 -3.397028182e-05 -1.338189888e-06 0.002160211637 -0.002159858799 +-5.735567679e-05 -7.069625126e-06 0.0007729500631 -0.00088265822 9.666079463e-05 0.0001808957863 -0.0002446737976 6.367008818e-05 -1.134099536e-05 1.124707917e-05 -0.0008204667404 0.001635767836 -0.0008134685983 -2.139571987e-06 2.158696764e-06 -2.633873092e-05 0.0002440804792 -0.0002161478351 +0.09490752035 0.009739767619 -0.01916332192 0.0009305337176 0.03441533657 -0.004758132435 -7.450586064e-05 0.003195322598 -3.64893111e-05 2.200571603e-06 0.007449274211 -0.01503856557 0.001492558404 -1.30283304e-05 3.210213526e-07 0.0003960417909 -0.004107181588 0.0002836280434 +-0.1002900794 -0.009126814875 0.02235597814 -0.001746010496 -0.03419947379 0.005377964718 0.0001173590905 -0.002788663898 4.706661021e-05 -7.887362476e-06 -0.007140780633 0.01785787066 -0.002218300883 1.734644931e-05 -2.902255781e-06 -0.0001904430067 0.004631896269 -0.000474837168 +0 0 0.01607032499 0.6451954435 0.002990814255 6.564514706e-06 0.00049406507 8.760572134e-06 0 0 0 0 0 0 0 0 0 0 +2.628307229e-06 1.003621268e-07 0.00121739505 0.09046440464 1.726413846e-05 4.626187679e-06 0.0003612298704 0.0176416075 0.0002240054739 4.004663164e-06 1.647249293e-06 0.001887150023 0.06972898118 5.782797825e-05 2.009025058e-05 2.76657429e-07 0.0003373991244 0.01384121713 +1.620734245e-08 1.997706972e-09 0.03670426767 0.0002596633664 1.166159792e-07 0.009574063057 9.363660454e-05 4.309290728e-07 2.323676631e-05 5.175139665e-05 3.606906859e-05 0.03043943443 0.000115008345 1.638405213e-06 2.667244934e-05 3.303545559e-07 0.008684920397 4.944454896e-05 +0.1700368525 0.01744982299 0.01017334181 0.004587941879 0.06092566995 0.002599357156 0.0008240151979 0.005226953404 3.12608551e-05 1.534070399e-07 0.01466074539 0.007318136325 0.005589044335 1.159992597e-05 7.781658288e-09 0.0007874730031 0.002071902311 0.001315653662 +0.1797380983 0.01635691545 0.01234606227 0.004169174674 0.06072922817 0.003074244552 0.0002676143371 0.004503748264 3.178378202e-05 4.027196671e-06 0.01346414514 0.009395451249 0.005308595238 1.193228024e-05 1.299406553e-06 0.0003754711776 0.002473688407 0.001211621264 +0 0 0.00389499997 -0.02024914571 0.01707803493 -5.105350229e-05 0.0004526163337 -0.0004105806456 0 0 0 0 0 0 0 0 0 0 +0.001423150969 6.016782087e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +1.349006943e-05 2.648540436e-06 -0.0006235728463 0.0006797897581 -2.4734818e-05 -0.0001899387663 0.0002278971039 -2.894568531e-05 -3.567869917e-05 3.60977469e-05 0.0001309064242 -0.0005398425379 0.0004289438032 -6.706551575e-06 6.882389842e-06 9.396626072e-06 -0.0001662719651 0.0001633455225 +0.04745944831 0.00846787886 -0.0004866225561 0.003146325147 0.01943658647 -0.000110840585 0.0006124354041 0.003607692777 -2.611108839e-05 -3.652967229e-06 0.003223034419 -0.0004710932551 0.003143080168 -1.040569281e-05 -4.784582009e-07 0.000482798178 -0.0001554013237 0.0009289466514 +-0.05057477175 -0.008480892387 0.0002509413169 -0.003123493959 -0.02016288957 1.180652978e-05 -0.000178105855 -0.00370458462 1.236483017e-05 2.180826928e-05 -0.003228991245 0.0003005165266 -0.003201219871 5.112720793e-06 7.297285065e-06 -0.0003411468419 9.720798433e-05 -0.0009370770531 +0 0 -0.0282180441 0.03109721719 -0.002828421271 0.0003036977916 -0.0003675047327 6.306982784e-05 0 0 0 0 0 0 0 0 0 0 +0.0001717893931 1.877265259e-05 -0.001945831929 0.00227300387 -0.000258460225 8.67447642e-05 -0.0005584350485 0.0004769391353 2.873460069e-05 -2.80171809e-05 2.379787569e-05 -0.001725961701 0.001719672872 3.259681932e-05 -3.231082691e-05 6.128426882e-06 -0.0004567844206 0.0004527905318 +0.0001117554759 8.488779398e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.0346255013 0.006254142428 0.003652894231 -0.001109357631 0.01283487689 0.001206243595 -0.0003592306326 0.002100009014 -2.762828864e-05 3.081474351e-06 0.002230121052 0.002301685432 -0.0007870591695 -9.528896777e-06 4.390495321e-07 0.0003137581364 0.0007877796542 -0.0002461855404 +-0.03717017087 -0.006314663928 -0.004127874996 0.001301574975 -0.01329889505 -0.001405844108 0.0003273634482 -0.00172593863 4.211876773e-05 -1.351669744e-05 -0.002125336012 -0.002724771272 0.0009435089593 1.535532058e-05 -4.84410337e-06 -0.0002191819909 -0.0008895559271 0.0002878887273 +0 0 0.01766839044 0.1555932209 -0.004462020471 -0.0001663196995 -0.00233043036 0.0001098701727 0 0 0 0 0 0 0 0 0 0 +0.0001865903681 2.030785489e-05 0.00106931838 0.01434904893 -0.0002986532883 9.003153123e-05 0.0004374177932 0.003433303716 -0.0002029210663 1.187908674e-05 2.719884309e-05 0.001209669713 0.009038784486 -6.58175005e-05 2.956029883e-07 6.888205521e-06 0.0003165893386 0.002520083511 +1.069006745e-05 2.11610955e-06 0.006470949226 -0.0002632374266 -1.831370123e-05 0.002034449555 -0.0001037455488 -2.089150062e-05 -1.936437373e-06 -6.005546999e-05 0.0001283040055 0.004406850542 -0.0001051050102 1.938080319e-06 -2.539927182e-05 6.984495075e-06 0.001543803226 -5.197657881e-05 +0.3619798842 0.00250885099 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.03938411622 -0.006678542292 0.003878441992 0.001623739231 -0.01450946016 0.0009623154949 0.0004540589928 -0.001953115377 -5.339698257e-05 -6.021309538e-06 -0.002366668341 0.002703549824 0.001269466487 -2.004661396e-05 -1.916408899e-06 -0.0002470067905 0.0008671902701 0.0003918824917 +0 0 0.009900662722 -0.1797557985 -0.006290993339 -0.0001073296382 0.002357872116 0.0001982512327 0 0 0 0 0 0 0 0 0 0 +0.0001933979762 2.10075679e-05 0.0006811559245 -0.0156707135 -0.0003203362362 9.224328594e-05 0.0002853417573 -0.004407477035 0.0001728796805 1.857352771e-05 2.93207048e-05 0.000693130839 -0.01133092782 3.122351116e-05 3.396269468e-05 7.369483644e-06 0.0001873449092 -0.003128416784 +1.116170116e-05 2.206812475e-06 -0.005994981305 -0.0003637720635 -1.934771052e-05 -0.001797010233 -0.0001460762821 -2.216033428e-05 3.697758865e-05 2.683049942e-05 0.0001268060306 -0.004599319909 -0.0001443056448 4.67426344e-06 1.93583995e-05 7.380703607e-06 -0.001493622659 -7.202127678e-05 +0.03830650783 0.006898052398 -0.003251114937 -0.001783053498 0.01477992599 -0.0008656711343 -0.0006082564189 0.0024849112 5.235333059e-05 1.031282993e-07 0.002570604021 -0.002294690335 -0.001374915903 1.942636063e-05 -8.796884088e-09 0.000373322618 -0.0007531713093 -0.0004389351656 +-0.3721628161 -0.002429014231 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.336188631 0.04436199784 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.3859788712 0.00306839077 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.03423243788 0.008569784877 -2.901767732e-06 -0.0001715122336 0.01810507142 -2.637656985e-06 -0.000137795848 0.004924852381 1.92648744e-07 8.396933758e-08 0.002532553704 1.570213328e-05 0.0007178231336 1.092455491e-07 -4.257458729e-09 0.0008221382259 8.114804982e-07 4.689405498e-05 +0.0403770088 0.009621010332 -1.168582687e-05 -0.0003125010968 0.02064677173 -1.310824769e-05 -0.0003557704763 0.005503036542 2.746891412e-09 3.424946023e-07 0.003099955334 2.130986978e-05 0.0003073891633 4.359122813e-09 -1.453711785e-07 0.0008070631271 2.77271285e-06 4.393141974e-05 +0.04368829243 0.01012404271 -3.608776147e-06 -0.0004260093906 0.02193480991 -1.788582557e-06 -0.0004338832843 0.00571021804 -1.188802465e-08 5.787067509e-07 0.003204947453 5.621322272e-06 0.0002699980315 -5.481119573e-09 -2.015867125e-07 0.0007912084335 8.746332744e-07 4.619366227e-05 +0 0 0.001950970795 0.001642757289 0.2529227472 -5.44685907e-05 -6.651445969e-05 -0.003074558391 0 0 0 0 0 0 0 0 0 0 +0.5043060117 0.002132099435 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.01556164539 -0.003055258335 5.085760465e-05 0.007746349768 -0.006441356997 1.84883313e-05 0.002226358949 -0.001151259775 -5.426734121e-05 -2.439129639e-05 -0.001591099586 2.202502154e-05 0.006267684361 -2.721989784e-05 -1.689329171e-06 -0.0003095265519 1.161720789e-05 0.002041991496 +-0.01964023536 -0.003504278701 9.969093553e-05 0.009513470293 -0.007588379903 3.518573788e-05 0.002202372806 -0.0006378477571 -2.199849665e-05 -8.079169801e-05 -0.001669025833 8.714472446e-05 0.007570358228 -9.391266179e-06 -2.746102754e-05 -0.0002660623129 3.392697003e-05 0.002419033604 +-0.02113944986 -0.003544878072 1.794028858e-05 0.01060141553 -0.007784990631 2.801054827e-06 0.001165053576 0.0008277885659 -5.095796634e-06 -0.000111300941 -0.001666179646 2.30495395e-05 0.008460682874 -2.301148263e-06 -3.889400351e-05 -0.0002160033468 9.021670801e-06 0.002658391181 +0 0 0.02465983115 0.003068368553 -0.0227075293 -0.0004434879817 -4.393512553e-05 0.0004248783514 0 0 0 0 0 0 0 0 0 0 +0.009870532737 4.173053025e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.04773960101 -0.009372840099 -1.313173376e-05 -0.002310768847 -0.02050222603 -3.588771274e-06 -0.0005954984181 -0.004276746343 1.74134368e-05 7.845087158e-06 -0.002977741633 -2.901029788e-05 -0.003033973877 8.75799818e-06 5.570164362e-07 -0.0007491805433 -4.672897281e-06 -0.0007140682198 +0.02648989609 0.004726418851 0.0009166412445 0.0006381427039 0.01097922543 0.0002028940815 -5.537522485e-05 0.00220544194 3.047823306e-05 -5.240056752e-05 0.001637656649 0.0009680834697 0.0008393618726 1.168704044e-05 -1.973811919e-05 0.0002428124574 0.000308055767 0.0002002619145 +0.02821965917 0.004732159619 0.0004543990201 0.00130808941 0.01135466783 2.065388733e-05 -7.81062083e-05 0.002293831888 1.831030182e-05 -4.271202496e-05 0.001712512596 0.00057118973 0.001337692657 7.432573682e-06 -1.629866165e-05 0.0001730333357 0.0001820185997 0.0003672426585 +0 0 0.00389499997 -0.02024914571 0.01707803493 -5.105350229e-05 0.0004526163337 -0.0004105806456 0 0 0 0 0 0 0 0 0 0 +0.001423150969 6.016782087e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +1.349006943e-05 2.648540436e-06 -0.0006235728463 0.0006797897581 -2.4734818e-05 -0.0001899387663 0.0002278971039 -2.894568531e-05 -3.567869917e-05 3.60977469e-05 0.0001309064242 -0.0005398425379 0.0004289438032 -6.706551575e-06 6.882389842e-06 9.396626072e-06 -0.0001662719651 0.0001633455225 +0.04745944831 0.00846787886 -0.0004866225561 0.003146325147 0.01943658647 -0.000110840585 0.0006124354041 0.003607692777 -2.611108839e-05 -3.652967229e-06 0.003223034419 -0.0004710932551 0.003143080168 -1.040569281e-05 -4.784582009e-07 0.000482798178 -0.0001554013237 0.0009289466514 +-0.05057477175 -0.008480892387 0.0002509413169 -0.003123493959 -0.02016288957 1.180652978e-05 -0.000178105855 -0.00370458462 1.236483017e-05 2.180826928e-05 -0.003228991245 0.0003005165266 -0.003201219871 5.112720793e-06 7.297285065e-06 -0.0003411468419 9.720798433e-05 -0.0009370770531 +0.1693032894 0.03221073766 0.0009440396988 0.0006355096057 0.09751835192 0.0003970529754 0.0004146448675 0.0192426321 -1.428603631e-21 3.801040115e-07 0.000451243219 0.0002034850233 0.03223590265 5.709943376e-23 1.0683005e-07 0.000366062592 0.0001479879955 0.006238780756 +0.7705943424 0.0003607104378 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.01122836602 0.003511409101 1.059394777e-05 0.001779666194 0.005246375548 3.768173943e-06 0.0005546665241 0.001944293738 5.47825613e-05 2.517897904e-05 0.0004751021464 9.57409266e-06 0.001599821181 2.745220392e-05 1.775888271e-06 0.0002672782317 3.183260767e-06 0.0005396299547 +0.01324653568 0.004109209156 2.327666922e-05 0.002157691224 0.006200685097 4.726412938e-06 0.0004551822893 0.002490063746 2.18096701e-05 8.698537947e-05 0.0007085554374 3.032587057e-05 0.001767556733 9.334408088e-06 2.941818331e-05 0.0002960026308 1.16557481e-05 0.0006559035299 +0.01423074775 0.004397255454 5.100536769e-06 0.002340082936 0.006694340241 4.534256891e-08 0.0001185351126 0.003047227864 4.810284218e-06 0.0001180971896 0.0007743814669 9.612117649e-06 0.001930418162 2.190688903e-06 4.098053006e-05 0.0003099603237 3.819960587e-06 0.000724742483 +0.118836431 0.02575529802 -0.006839269334 -0.0009759710617 -0.01615074463 -0.002361916546 -0.0003366735575 -0.002955885784 -1.571985058e-20 3.617469984e-07 -0.002771210873 -0.0003784027782 -0.005206869397 -6.596104799e-22 9.669920535e-08 -0.001402558888 -0.0001567881113 -0.0005171437284 +0.0930188977 0.0011254341 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.0930188977 0.0011254341 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.009664417828 0.003034948864 -0.0001747292838 -0.0007607768154 0.004094599119 -5.14360812e-05 -0.0002669921115 0.001449446124 2.307693389e-05 -7.337684653e-05 0.0004902722689 -0.0001481672976 -0.0004426141428 8.547879779e-06 -2.699512642e-05 0.0001923645077 -5.908676313e-05 -0.000173824799 +0.01045895626 0.003274088283 -8.390160078e-05 -0.000975123829 0.004415405242 -5.399095628e-06 -0.0002178707892 0.00141968097 1.638544493e-05 -7.319627064e-05 0.0005097012328 -8.715268449e-05 -0.0005689602416 6.57941862e-06 -2.720380552e-05 0.0001991450968 -3.495668185e-05 -0.0002226553199 +0.1302208588 0.02754070927 0.004282326604 -0.004883217686 -0.02547886126 0.001293500516 -0.002134922927 -0.005149271729 7.843452751e-22 3.627612309e-07 0.001823397528 -0.001555227457 -0.009358578348 3.646506169e-21 9.800831969e-08 0.000772762878 -0.000750202475 -0.002214174512 +0.1010331898 0.001217470588 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.008897803728 0.00280551742 -0.0001099356691 -0.0006891465247 0.003884425361 -4.036121721e-05 -0.0002525007204 0.001403290798 2.973286627e-06 -4.189002223e-05 0.0004656571193 -7.815537397e-05 -0.0003920075785 -7.933224034e-06 -6.553867181e-06 0.0001986674237 -2.955596417e-05 -0.0001717103625 +0.1010331898 0.001217470588 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.01108191701 0.003462755472 7.883172141e-05 -0.001216485294 0.004817328521 3.695739345e-06 -0.0003021907047 0.001606546539 -2.077300368e-05 -3.260688526e-05 0.0005675779098 8.647390967e-05 -0.0007655210393 -8.589535107e-06 -1.076228375e-05 0.000224426245 3.407778359e-05 -0.0003030848842 +0.1367120907 0.02848133662 0.002399645373 0.005641548452 -0.03592259326 0.000834723384 0.002160062504 -0.009291415889 -1.889195486e-20 3.642168861e-07 0.0009024769482 0.001892554096 -0.01206586759 8.621905257e-21 9.899031123e-08 0.0003836979351 0.0007961617298 -0.003370606528 +0.1047193091 0.00125941889 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.009290364787 0.002925770473 0.0001018493977 -0.0009523427445 0.004103743774 3.565068505e-05 -0.0003555272193 0.001488518883 -5.677693033e-05 1.871486839e-05 0.0004602204795 8.156881292e-05 -0.0005382132236 -1.913335516e-05 4.995118759e-06 0.0002099372045 2.859526204e-05 -0.0002379302336 +0.01069183357 0.003347419175 0.0001555109314 -0.001222784901 0.004715111214 3.691354793e-05 -0.0004520763289 0.001715109261 -4.372888835e-05 -2.455717143e-06 0.00056512442 0.0001477169994 -0.0007732039056 -1.742638199e-05 5.408797429e-07 0.0002288833764 5.649099277e-05 -0.0003099199766 +0.1047193091 0.00125941889 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.2359756694 0.03547129182 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.04659173726 0.009573528358 0.0006758764722 4.600189219e-05 0.01786753562 0.004293257787 -0.000172505292 -9.219144734e-06 2.35904045e-08 5.805216259e-07 0.001873980433 -3.329276048e-05 -3.441094764e-06 2.785378711e-07 1.010676143e-06 0.0004353412596 -1.241665373e-05 -1.079264857e-06 +0.2835910079 0.002746683128 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.02945828957 0.007105813618 8.772114857e-05 0.00011018425 0.01363401818 0.0001426529805 0.0002086810338 0.003203273409 2.906501164e-09 -2.889126199e-07 0.002144958679 -0.0001041165763 -7.697336581e-05 3.991817949e-09 1.333975419e-07 0.0005244895988 -1.405577969e-05 -1.164252037e-05 +0.03210891989 0.007538113254 5.936279049e-05 0.0001775201647 0.01446760564 0.0002129726766 0.0007974893812 0.002660348437 -4.049460789e-08 -3.586806435e-07 0.002109510284 -5.096830317e-05 -7.957765224e-05 -1.646175326e-08 1.338178329e-07 0.0005083401584 -8.003820042e-06 -1.419161274e-05 +0 0 -0.01413416697 -0.00252283138 -0.04188843043 0.0003240128486 5.40068418e-05 0.0004722869198 0 0 0 0 0 0 0 0 0 0 +0.0608750762 0.006652253881 0.0009547791682 4.100481175e-05 0.01640962107 -5.540202352e-05 8.029834168e-05 1.109911045e-07 -1.345800275e-07 -3.452736398e-06 0.001735694743 0.0001793522826 -2.5019445e-06 -7.741588099e-07 -2.08187493e-06 -0.0004748625615 7.209034467e-05 1.283777212e-06 +-0.1289169856 -0.0009792342096 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.01432913823 -0.002588163868 -0.0007483427117 -0.003354338911 -0.005010958173 -0.000382915436 -0.00129182567 -0.0003712860606 -2.327673232e-05 6.815214306e-05 -0.00115485259 -0.0004257750257 -0.001895694523 -8.59994694e-06 2.519917366e-05 -0.000172907064 -0.0001719868021 -0.0006410821267 +-0.01553653998 -0.002639429045 -0.0002951099068 -0.004417660908 -0.005134768656 -0.0003335312321 -0.002141400439 0.0003856605828 -1.735799618e-05 6.898397692e-05 -0.001096686654 -0.0002089892485 -0.002493652549 -6.911167401e-06 2.581872187e-05 -0.0001387790763 -8.255783502e-05 -0.0008167106978 +0 0 -0.1786526851 -0.00471218513 0.003760763997 0.002638140669 3.567340673e-05 -6.526611705e-05 0 0 0 0 0 0 0 0 0 0 +0.00119147783 0.0001302012829 -0.01674451149 -0.0002613117982 0.001155800908 -0.0003145037729 -0.003896223325 -6.770989496e-05 3.849214336e-06 0.0002079160718 -1.096038175e-05 -0.01048997002 -0.0002829411496 1.931210394e-05 5.463385793e-05 -2.96431544e-05 -0.002924580859 -7.065589718e-05 +-0.3954880928 -0.003004068612 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.01932651905 0.003490802969 -0.006880884315 -0.0002250016909 0.007250090287 -0.002208033151 3.248093908e-05 0.001283770055 3.224918883e-05 4.420269733e-05 0.001133147244 -0.004729899219 -0.0002101847305 1.070227654e-05 1.811237007e-05 0.00015779758 -0.001561634481 -5.307257155e-05 +0.02074017375 0.003523449689 -0.007474665297 -0.0005450871566 0.007489230912 -0.0024593294 0.0001435613539 0.001068679346 6.237104263e-05 2.647278017e-05 0.001127183202 -0.005178954331 -0.0003942637673 2.232266463e-05 1.081942135e-05 0.0001111714557 -0.001665662809 -0.0001128242562 +0 0 -0.0282180441 0.03109721719 -0.002828421271 0.0003036977916 -0.0003675047327 6.306982784e-05 0 0 0 0 0 0 0 0 0 0 +0.0001717893931 1.877265259e-05 -0.001945831929 0.00227300387 -0.000258460225 8.67447642e-05 -0.0005584350485 0.0004769391353 2.873460069e-05 -2.80171809e-05 2.379787569e-05 -0.001725961701 0.001719672872 3.259681932e-05 -3.231082691e-05 6.128426882e-06 -0.0004567844206 0.0004527905318 +0.0001117554759 8.488779398e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.0346255013 0.006254142428 0.003652894231 -0.001109357631 0.01283487689 0.001206243595 -0.0003592306326 0.002100009014 -2.762828864e-05 3.081474351e-06 0.002230121052 0.002301685432 -0.0007870591695 -9.528896777e-06 4.390495321e-07 0.0003137581364 0.0007877796542 -0.0002461855404 +-0.03717017087 -0.006314663928 -0.004127874996 0.001301574975 -0.01329889505 -0.001405844108 0.0003273634482 -0.00172593863 4.211876773e-05 -1.351669744e-05 -0.002125336012 -0.002724771272 0.0009435089593 1.535532058e-05 -4.84410337e-06 -0.0002191819909 -0.0008895559271 0.0002878887273 +0.118836431 0.02575529802 -0.006839269334 -0.0009759710617 -0.01615074463 -0.002361916546 -0.0003366735575 -0.002955885784 -2.605066434e-20 3.617469984e-07 -0.002771210873 -0.0003784027782 -0.005206869397 -1.959369716e-21 9.669920535e-08 -0.001402558888 -0.0001567881113 -0.0005171437284 +0.0930188977 0.0011254341 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.0930188977 0.0011254341 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.009664417828 0.003034948864 -0.0001747292838 -0.0007607768154 0.004094599119 -5.14360812e-05 -0.0002669921115 0.001449446124 2.307693389e-05 -7.337684653e-05 0.0004902722689 -0.0001481672976 -0.0004426141428 8.547879779e-06 -2.699512642e-05 0.0001923645077 -5.908676313e-05 -0.000173824799 +0.01045895626 0.003274088283 -8.390160078e-05 -0.000975123829 0.004415405242 -5.399095628e-06 -0.0002178707892 0.00141968097 1.638544493e-05 -7.319627064e-05 0.0005097012328 -8.715268449e-05 -0.0005689602416 6.57941862e-06 -2.720380552e-05 0.0001991450968 -3.495668185e-05 -0.0002226553199 +0.08341301216 0.02059361022 0.04954834536 0.001498827877 0.002674845779 0.01405013969 0.0002733642526 0.000454057466 -2.027096283e-20 3.442765319e-07 0.0170187814 0.0007036815792 0.000841033962 -3.85723698e-20 8.7529083e-08 0.005373866323 0.0001661115266 4.286697133e-05 +0.01122836602 0.003511409101 0.003110134129 5.71113756e-05 0.003869390186 0.001626534555 0.000863299879 1.289400292e-05 3.685969197e-06 0.0001960120973 0.0003438088512 0.001578541058 4.241098519e-05 1.837436933e-05 5.196498329e-05 0.0001357549522 0.0006184130065 1.481222813e-05 +0.7705943424 0.0003607104378 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.007050973495 0.002241529759 0.001311627635 0.0002682410515 0.002703853153 0.0005597628654 0.0001566071205 0.0008437109567 2.44178328e-05 6.189731699e-05 0.0003392351325 0.0007239214458 0.0001108350729 7.82762528e-06 2.477164693e-05 0.0001250127531 0.0002995299442 4.606631822e-05 +0.007686860024 0.002437805627 0.001380144666 0.0004063387956 0.002912281532 0.0006428888858 0.0004004524885 0.0006614188849 5.581433305e-05 4.536682079e-05 0.0003354875573 0.0007902098883 0.0001676920383 1.976033627e-05 1.805850324e-05 0.0001279478905 0.0003198906318 6.840414721e-05 +0.0914039069 0.02202120244 -0.03102410318 0.00749930309 0.004219745038 -0.007694540677 0.001733464352 0.0007909863384 7.718992826e-20 3.452417823e-07 -0.01119799443 0.002892116486 0.001511634271 1.389453508e-19 8.871405218e-08 -0.002960819999 0.0007948133141 0.0001835368972 +0.01219577595 0.003798567418 -0.001709152542 0.0003605334483 0.004471117762 0.001688164097 -0.0006762160236 9.281903052e-05 -2.602997021e-05 -8.310774424e-05 0.0003929427618 -0.001106347439 0.0002229166728 -3.710040083e-05 -4.754135321e-07 0.0001525853256 -0.0004286113008 8.244000095e-05 +0.07371187342 0.0008991902917 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.07371187342 0.0008991902917 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.008144708012 0.002578282576 -0.001296747366 0.0005069152804 0.003177379225 -0.0004400643948 0.0005554348066 0.0007484781741 -7.075983296e-05 2.020964603e-05 0.0003735822365 -0.0007840554643 0.0002256252267 -2.579743164e-05 7.144248105e-06 0.0001441906685 -0.0003118477827 9.311371064e-05 +0.09596019658 0.02277331617 -0.01738467252 -0.008663894271 0.005949409713 -0.004965450694 -0.001753876593 0.001427266499 1.5873437e-19 3.466271371e-07 -0.005542363466 -0.003519412466 0.001948926245 2.718259773e-21 8.960292007e-08 -0.001470128227 -0.000843505539 0.0002793956216 +0.01264072958 0.003929448157 -0.001088730356 -0.0003937415227 0.004795731678 0.001729636289 -0.0004411175573 -0.000119155711 2.217637141e-05 -0.0001299429851 0.0004235973819 -0.0006339280223 -0.0002794460619 1.76002548e-05 -5.462165565e-05 0.0001632464446 -0.0002536350264 -0.0001023405302 +0.07696395809 0.0009377323365 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.007800556272 0.002472311736 -0.001167362625 0.000431139726 0.003113605984 -0.0004017186551 0.0002651702768 0.0009983513368 -4.626978129e-05 2.071529503e-06 0.0003910277404 -0.000721721362 0.0001936181043 -1.595801436e-05 -4.96329664e-07 0.000148745428 -0.0002863711433 8.213369066e-05 +0.07696395809 0.0009377323365 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.2585819354 0.03793023611 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.05060597311 0.01035643864 -0.0003714232064 0.0002904013543 0.02064611012 0.004455929716 0.0001351220421 -6.636512195e-05 -1.665932333e-07 -2.461370675e-07 0.002141792 2.333379934e-05 -1.8086762e-05 -5.624066045e-07 -9.246401797e-09 0.0004893131837 8.605766782e-06 -6.006834021e-06 +0.02712714502 0.00684701784 3.011226639e-05 6.641529747e-05 0.01340502561 2.825215823e-05 6.272877372e-05 0.003554504082 1.045588086e-08 -1.396989692e-07 0.002482206555 -0.0001281798853 -0.0001758897255 -3.157012159e-08 1.571203521e-08 0.0006110938485 -7.534440399e-06 -1.492169793e-05 +0.3079611224 0.002850499127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.03402140488 0.007972492082 -5.577570533e-05 0.00022145974 0.01578455554 -0.0001457821003 0.001106132121 0.003010516914 5.133791865e-08 -1.597821649e-07 0.002349045598 5.057134464e-05 -0.0001070696379 2.149107933e-08 5.294058905e-08 0.0005728731201 7.802584023e-06 -1.931803518e-05 +0 0 0.008849939412 -0.01262284846 -0.06608175239 -0.0001774452139 0.0003424695591 0.0008227427789 0 0 0 0 0 0 0 0 0 0 +0.06611993135 0.007196266263 -0.0005246922398 0.0002588557187 0.01896147577 -5.750121124e-05 -6.289706119e-05 7.989828119e-07 9.503915849e-07 1.463935836e-06 0.001983743826 -0.000125702108 -1.31504878e-05 1.563134039e-06 1.904650884e-08 -0.0005337341835 -4.996456427e-05 7.145082678e-06 +-0.01233166661 -0.002441065748 -0.0005277602759 -0.002999646809 -0.004769191654 -0.0001980300184 -0.001013504897 -0.0008309198435 -2.945323403e-06 4.057956228e-05 -0.001559468538 -0.0001797949797 -0.001535783998 7.866091493e-06 6.234423187e-06 -0.0002300705233 -0.0001078635415 -0.0006497621136 +-0.1497988362 -0.001038242662 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.01646193391 -0.002791524411 0.0002772774505 -0.005511114966 -0.005602173784 0.0002283057353 -0.002970160938 0.0004364231736 2.200597666e-05 3.073042658e-05 -0.001221215643 0.000207361569 -0.003355143913 9.022638389e-06 1.021432132e-05 -0.0001563968558 8.048212492e-05 -0.001111730307 +0 0 0.1118612397 -0.02357715989 0.005932852405 -0.001444774296 0.0002262131142 -0.0001136961967 0 0 0 0 0 0 0 0 0 0 +0.001294132792 0.0001408489688 0.009201829629 -0.001649612581 0.001335539121 -0.0003264203496 0.003051881169 -0.0004874178208 -2.718279214e-05 -8.815494535e-05 -1.252673588e-05 0.007352074504 -0.001487168935 -3.89938171e-05 -4.99830342e-07 -3.331819793e-05 0.002026976136 -0.0003932475371 +-0.0378307582 -0.007488636447 0.0001362708189 0.00089480731 -0.01517988295 3.843962065e-05 0.0002710886146 -0.003086734618 9.451025572e-07 -1.305179511e-05 -0.002918544151 0.0002368172901 0.0007434210567 -2.530913796e-06 -2.055653951e-06 -0.0005568645357 4.338695278e-05 0.0002272166542 +0.2020421615 0.001400336591 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.02197550869 0.003726486165 0.007022997497 -0.000680006467 0.008170956841 0.00168343757 0.0001991221809 0.00120934431 -7.907224393e-05 1.179288095e-05 0.00125517508 0.005138618869 -0.0005304715282 -2.914259186e-05 4.280345355e-06 0.0001252844923 0.001623783887 -0.0001535796524 +0 0 0.01766839044 0.1555932209 -0.004462020471 -0.0001663196995 -0.00233043036 0.0001098701727 0 0 0 0 0 0 0 0 0 0 +0.0001865903681 2.030785489e-05 0.00106931838 0.01434904893 -0.0002986532883 9.003153123e-05 0.0004374177932 0.003433303716 -0.0002029210663 1.187908674e-05 2.719884309e-05 0.001209669713 0.009038784486 -6.58175005e-05 2.956029883e-07 6.888205521e-06 0.0003165893386 0.002520083511 +1.069006745e-05 2.11610955e-06 0.006470949226 -0.0002632374266 -1.831370123e-05 0.002034449555 -0.0001037455488 -2.089150062e-05 -1.936437373e-06 -6.005546999e-05 0.0001283040055 0.004406850542 -0.0001051050102 1.938080319e-06 -2.539927182e-05 6.984495075e-06 0.001543803226 -5.197657881e-05 +0.3619798842 0.00250885099 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.03938411622 -0.006678542292 0.003878441992 0.001623739231 -0.01450946016 0.0009623154949 0.0004540589928 -0.001953115377 -5.339698257e-05 -6.021309538e-06 -0.002366668341 0.002703549824 0.001269466487 -2.004661396e-05 -1.916408899e-06 -0.0002470067905 0.0008671902701 0.0003918824917 +0.1302208588 0.02754070927 0.004282326604 -0.004883217686 -0.02547886126 0.001293500516 -0.002134922927 -0.005149271729 5.19647479e-22 3.627612309e-07 0.001823397528 -0.001555227457 -0.009358578348 6.686559637e-22 9.800831969e-08 0.000772762878 -0.000750202475 -0.002214174512 +0.1010331898 0.001217470588 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.008897803728 0.00280551742 -0.0001099356691 -0.0006891465247 0.003884425361 -4.036121721e-05 -0.0002525007204 0.001403290798 2.973286627e-06 -4.189002223e-05 0.0004656571193 -7.815537397e-05 -0.0003920075785 -7.933224034e-06 -6.553867181e-06 0.0001986674237 -2.955596417e-05 -0.0001717103625 +0.1010331898 0.001217470588 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.01108191701 0.003462755472 7.883172141e-05 -0.001216485294 0.004817328521 3.695739345e-06 -0.0003021907047 0.001606546539 -2.077300368e-05 -3.260688526e-05 0.0005675779098 8.647390967e-05 -0.0007655210393 -8.589535107e-06 -1.076228375e-05 0.000224426245 3.407778359e-05 -0.0003030848842 +0.0914039069 0.02202120244 -0.03102410318 0.00749930309 0.004219745038 -0.007694540677 0.001733464352 0.0007909863384 -8.438160643e-20 3.452417823e-07 -0.01119799443 0.002892116486 0.001511634271 3.592496859e-20 8.871405218e-08 -0.002960819999 0.0007948133141 0.0001835368972 +0.01219577595 0.003798567418 -0.001709152542 0.0003605334483 0.004471117762 0.001688164097 -0.0006762160236 9.281903052e-05 -2.602997021e-05 -8.310774424e-05 0.0003929427618 -0.001106347439 0.0002229166728 -3.710040083e-05 -4.754135321e-07 0.0001525853256 -0.0004286113008 8.244000095e-05 +0.07371187342 0.0008991902917 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.07371187342 0.0008991902917 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.008144708012 0.002578282576 -0.001296747366 0.0005069152804 0.003177379225 -0.0004400643948 0.0005554348066 0.0007484781741 -7.075983296e-05 2.020964603e-05 0.0003735822365 -0.0007840554643 0.0002256252267 -2.579743164e-05 7.144248105e-06 0.0001441906685 -0.0003118477827 9.311371064e-05 +0.1001603225 0.02354775835 0.01942537074 0.03752235176 0.006656925168 0.004213905166 0.01099228825 0.001377929963 -2.892612415e-19 3.46209739e-07 0.007368041012 0.01188653791 0.002716939235 -1.063651705e-19 8.991506348e-08 0.001631312455 0.003803036533 0.0007858216147 +0.01324653568 0.004109209156 0.0009392528716 0.002275980327 0.005166419792 0.001752128789 0.0005296747071 0.0006681689524 0.0001838212185 3.523709633e-05 0.0004490984264 0.0007754024829 0.001171673867 7.491085637e-05 4.349429407e-09 0.0001715022636 0.0002970630392 0.0004588339916 +0.007050973495 0.002241529759 0.001140826028 0.0002668606809 0.002876035131 0.0004323122762 0.0001149458477 0.001012822819 1.613731296e-07 6.969202205e-05 0.0004563998592 0.0006379990979 9.605444873e-05 2.292567975e-06 2.418686791e-05 0.0001476691348 0.0002744214444 5.463827261e-05 +0.7705943424 0.0003607104378 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.008629826534 0.002726854417 0.001218389472 0.0006323863344 0.003466608096 0.0003012288372 0.0007703980704 0.0008469966461 8.970731507e-05 9.002830383e-06 0.0004160025743 0.000777948973 0.0003035728077 3.367895517e-05 2.826384906e-06 0.0001624954409 0.0003040071508 0.0001267490856 +0.1051531008 0.02435201017 0.01088520454 -0.04334931987 0.009385584886 0.002719322596 -0.01112172687 0.002486355553 -2.091505228e-19 3.475989779e-07 0.003646756709 -0.01446471119 0.003502906941 1.540935926e-19 9.081596487e-08 0.000809991316 -0.004036019936 0.001196245125 +0.01372982548 0.004250793146 0.0005983041817 -0.002485616699 0.00554151431 0.001795172365 0.0003455239226 -0.0008577567139 -0.0001566074637 5.509490752e-05 0.000484133915 0.0004442992728 -0.00146879838 -3.553735621e-05 4.997187066e-07 0.0001834851069 0.0001757900262 -0.0005695938067 +0.007362054488 0.002337608577 -0.001056913054 0.0003687790973 0.003038418856 -0.0003818573836 0.0001618465782 0.001074336049 -3.081529663e-06 -3.11357443e-05 0.0004510712998 -0.0006658637329 0.0001318795282 5.529217013e-06 -1.843434941e-05 0.0001560459424 -0.0002655015099 7.570944922e-05 +0.08154811772 0.0009917685469 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.08154811772 0.0009917685469 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.271471693 0.03922570811 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.05245229364 0.01071327273 -0.000236596623 -0.0003171496901 0.02214506743 0.004565396071 8.814447319e-05 8.519571092e-05 1.419299902e-07 -3.848472316e-07 0.002308879491 1.337007594e-05 2.267337993e-05 2.66803035e-07 -1.062346233e-06 0.0005235014391 5.092548611e-06 7.456848269e-06 +0.02832396405 0.007140501957 -2.789737143e-05 9.178037531e-05 0.01416188632 -2.495486669e-05 8.832365489e-05 0.003770384908 -1.996621563e-07 6.241218517e-08 0.002453226298 0.0001337781467 -0.0002414906786 -7.614084086e-08 -1.197514073e-08 0.0006457592888 7.289537107e-06 -2.067623074e-05 +0.03258997436 0.007837409402 -7.80727605e-05 0.0001770974542 0.01570017238 -0.0001023761436 0.0003533428577 0.003790388479 -5.50758023e-09 -9.66909464e-09 0.002472439512 0.0001038001536 -0.0001344649918 -8.138034954e-09 -2.672779784e-09 0.0006240597692 1.343828815e-05 -2.075796814e-05 +0.3214875199 0.002899629272 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0.004959153779 0.01458309168 -0.09316852463 -0.0001145091692 -0.0003465022761 0.001484568252 0 0 0 0 0 0 0 0 0 0 +0.06853226689 0.007444215699 -0.000334229014 -0.000282698444 0.02033812457 -5.891381162e-05 -4.10297849e-05 -1.025687992e-06 -8.096911599e-07 2.288934614e-06 0.002138501514 -7.202627847e-05 1.648531706e-05 -7.415434004e-07 2.188309287e-06 -0.0005710261291 -2.95670309e-05 -8.869863427e-06 +-0.01287572583 -0.002545697288 0.0004889410931 -0.004145260511 -0.005038464827 0.0001749180601 -0.001427039801 -0.0008813852975 5.624295356e-05 -1.812940474e-05 -0.001541261431 0.0001876475323 -0.002108579787 1.897144485e-05 -4.751650187e-06 -0.0002431217035 0.00010435749 -0.000900342002 +-0.01585245629 -0.002854634377 0.0006660330177 -0.005391377461 -0.005770339021 0.0002748025699 -0.002187344799 -0.000439337586 4.410748991e-05 2.28086098e-06 -0.001331169315 0.0004244810445 -0.003311594156 1.753253021e-05 -5.048956748e-07 -0.0002057320921 0.0001644311633 -0.001143013879 +-0.1555581354 -0.001015289299 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0.06268258612 0.02723853377 0.008364716211 -0.0009323435709 -0.0002288768647 -0.0002051549624 0 0 0 0 0 0 0 0 0 0 +0.001341348245 0.0001457019608 0.005861566477 0.001801555368 0.001432502477 -0.0003344393373 0.001990840678 0.0006257188496 2.315852417e-05 -0.0001378345286 -1.350398338e-05 0.004212678483 0.001864299772 1.849848253e-05 -5.742697458e-05 -3.564613656e-05 0.001199483412 0.0004881751695 +-0.03949980856 -0.007809622299 -0.0001262474767 0.001236548715 -0.01603695382 -3.395335681e-05 0.000381699431 -0.003274205726 -1.804737611e-05 5.831045551e-06 -0.002884469566 -0.0002471602944 0.001020692113 -6.104059627e-06 1.566744539e-06 -0.0005884537169 -4.197668114e-05 0.0003148424524 +0.02138110425 0.003850206814 0.006124060638 -0.0003616417653 0.008348798262 0.001584614062 5.499736909e-05 0.001519067093 -6.110955573e-05 1.479340238e-06 0.001306150112 0.00471552449 -0.000367172304 -2.181850517e-05 -3.629030631e-07 0.000187754193 0.00149302953 -9.462545178e-05 +0.2076590257 0.001355338865 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0.009900662722 -0.1797557985 -0.006290993339 -0.0001073296382 0.002357872116 0.0001982512327 0 0 0 0 0 0 0 0 0 0 +0.0001933979762 2.10075679e-05 0.0006811559245 -0.0156707135 -0.0003203362362 9.224328594e-05 0.0002853417573 -0.004407477035 0.0001728796805 1.857352771e-05 2.93207048e-05 0.000693130839 -0.01133092782 3.122351116e-05 3.396269468e-05 7.369483644e-06 0.0001873449092 -0.003128416784 +1.116170116e-05 2.206812475e-06 -0.005994981305 -0.0003637720635 -1.934771052e-05 -0.001797010233 -0.0001460762821 -2.216033428e-05 3.697758865e-05 2.683049942e-05 0.0001268060306 -0.004599319909 -0.0001443056448 4.67426344e-06 1.93583995e-05 7.380703607e-06 -0.001493622659 -7.202127678e-05 +0.03830650783 0.006898052398 -0.003251114937 -0.001783053498 0.01477992599 -0.0008656711343 -0.0006082564189 0.0024849112 5.235333059e-05 1.031282993e-07 0.002570604021 -0.002294690335 -0.001374915903 1.942636063e-05 -8.796884088e-09 0.000373322618 -0.0007531713093 -0.0004389351656 +-0.3721628161 -0.002429014231 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.1367120907 0.02848133662 0.002399645373 0.005641548452 -0.03592259326 0.000834723384 0.002160062504 -0.009291415889 -1.862725706e-20 3.642168861e-07 0.0009024769482 0.001892554096 -0.01206586759 8.026335216e-21 9.899031123e-08 0.0003836979351 0.0007961617298 -0.003370606528 +0.1047193091 0.00125941889 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.009290364787 0.002925770473 0.0001018493977 -0.0009523427445 0.004103743774 3.565068505e-05 -0.0003555272193 0.001488518883 -5.677693033e-05 1.871486839e-05 0.0004602204795 8.156881292e-05 -0.0005382132236 -1.913335516e-05 4.995118759e-06 0.0002099372045 2.859526204e-05 -0.0002379302336 +0.01069183357 0.003347419175 0.0001555109314 -0.001222784901 0.004715111214 3.691354793e-05 -0.0004520763289 0.001715109261 -4.372888835e-05 -2.455717143e-06 0.00056512442 0.0001477169994 -0.0007732039056 -1.742638199e-05 5.408797429e-07 0.0002288833764 5.649099277e-05 -0.0003099199766 +0.1047193091 0.00125941889 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.09596019658 0.02277331617 -0.01738467252 -0.008663894271 0.005949409713 -0.004965450694 -0.001753876593 0.001427266499 -7.29291411e-20 3.466271371e-07 -0.005542363466 -0.003519412466 0.001948926245 -8.928443252e-21 8.960292007e-08 -0.001470128227 -0.000843505539 0.0002793956216 +0.01264072958 0.003929448157 -0.001088730356 -0.0003937415227 0.004795731678 0.001729636289 -0.0004411175573 -0.000119155711 2.217637141e-05 -0.0001299429851 0.0004235973819 -0.0006339280223 -0.0002794460619 1.76002548e-05 -5.462165565e-05 0.0001632464446 -0.0002536350264 -0.0001023405302 +0.07696395809 0.0009377323365 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.007800556272 0.002472311736 -0.001167362625 0.000431139726 0.003113605984 -0.0004017186551 0.0002651702768 0.0009983513368 -4.626978129e-05 2.071529503e-06 0.0003910277404 -0.000721721362 0.0001936181043 -1.595801436e-05 -4.96329664e-07 0.000148745428 -0.0002863711433 8.213369066e-05 +0.07696395809 0.0009377323365 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.1051531008 0.02435201017 0.01088520454 -0.04334931987 0.009385584886 0.002719322596 -0.01112172687 0.002486355553 -6.428313918e-19 3.475989779e-07 0.003646756709 -0.01446471119 0.003502906941 1.540935926e-19 9.081596487e-08 0.000809991316 -0.004036019936 0.001196245125 +0.01372982548 0.004250793146 0.0005983041817 -0.002485616699 0.00554151431 0.001795172365 0.0003455239226 -0.0008577567139 -0.0001566074637 5.509490752e-05 0.000484133915 0.0004442992728 -0.00146879838 -3.553735621e-05 4.997187066e-07 0.0001834851069 0.0001757900262 -0.0005695938067 +0.007362054488 0.002337608577 -0.001056913054 0.0003687790973 0.003038418856 -0.0003818573836 0.0001618465782 0.001074336049 -3.081529663e-06 -3.11357443e-05 0.0004510712998 -0.0006658637329 0.0001318795282 5.529217013e-06 -1.843434941e-05 0.0001560459424 -0.0002655015099 7.570944922e-05 +0.08154811772 0.0009917685469 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.08154811772 0.0009917685469 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.1103947584 0.02518373047 0.006099635347 0.05008117682 0.01323271652 0.001754836687 0.01125268968 0.00448641375 -4.291577243e-19 3.489937914e-07 0.001804934917 0.01760208662 0.004516242718 -1.425167107e-19 9.172589281e-08 0.0004021828743 0.004283276476 0.001821027026 +0.01423074775 0.004397255454 0.000381119829 0.002714562292 0.005943841593 0.001839273369 0.0002253964168 0.001101138533 0.0001334225607 8.614355752e-05 0.000521902625 0.0002545798448 0.001841270633 1.685875382e-05 5.741414847e-05 0.00019630519 0.0001040255071 0.0007070903868 +0.007686860024 0.002437805627 0.0009791722633 0.0005096218076 0.003209970923 0.0003372910496 0.0002278839593 0.00113958525 5.884390472e-05 1.391026612e-05 0.0004458049523 0.000694945357 0.0001810661576 1.333536938e-05 1.404998942e-05 0.00016489794 0.0002568715134 0.0001049066969 +0.008629826534 0.002726854417 0.001038965222 0.0006929642658 0.003585454415 0.0002882968625 0.0004489915623 0.001181335129 8.767742325e-05 6.932827936e-08 0.000450727767 0.0007195279646 0.0003382320173 3.253326687e-05 9.944560246e-09 0.0001769835621 0.0002737904283 0.0001464398155 +0.7705943424 0.0003607104378 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 diff --git a/tests/09_DeePKS/NO_GO_deepks_UT/vdrpre_ref.dat b/tests/09_DeePKS/NO_GO_deepks_UT/vdrpre_ref.dat new file mode 100644 index 0000000000..8c2018d97b --- /dev/null +++ b/tests/09_DeePKS/NO_GO_deepks_UT/vdrpre_ref.dat @@ -0,0 +1,640 @@ +0.6675758988 0.06109723014 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.1933308886 0.02610132929 0.0001468775901 3.705346024e-05 0.08250623843 0.01133210627 3.447014936e-05 6.591640326e-06 1.509798793e-10 1.719308976e-09 0.01021440446 7.021723606e-07 2.791996725e-07 4.222367813e-09 1.96568189e-08 0.00139605966 2.493047337e-07 7.863858305e-08 +0.1043660138 0.02091502606 7.94817584e-07 1.652919315e-05 0.06248001278 1.846314548e-06 3.423263329e-05 0.0124745405 6.77469941e-10 2.800292118e-10 0.01349989326 2.575251759e-05 0.0003220797782 4.347406872e-10 1.020669776e-11 0.002528867608 2.068635425e-07 4.075111794e-06 +0.1230739025 0.02252594996 5.866756463e-06 4.525992154e-05 0.06874872312 3.63544531e-05 0.0002780702035 0.01216170117 3.459664499e-13 1.348531826e-09 0.01356241525 1.497436155e-05 5.345689671e-05 2.03568899e-12 7.183577352e-10 0.002200490209 6.595832789e-07 2.942459604e-06 +0.1341227411 0.0233091395 2.553312694e-06 7.755451658e-05 0.07187203941 7.05524111e-05 0.001588176704 0.01070041084 2.93797881e-11 2.835812644e-09 0.01326437759 3.28744042e-06 3.776328798e-05 1.371380109e-11 9.916221826e-10 0.00201964812 2.002594915e-07 2.944293297e-06 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.2525991361 0.01813674777 0.0002074871209 3.302842752e-05 0.07577408197 -0.0001462343165 -1.604528069e-05 -7.935805989e-08 -8.613195382e-10 -1.022583899e-08 0.009460658081 -3.782690705e-06 2.029999558e-07 -1.173550738e-08 -4.049075341e-08 -0.001522797234 -1.447448288e-06 -9.353998722e-08 +-0.04744350675 -0.007456524125 -1.393030807e-05 -0.0007465409834 -0.02222891355 -1.294151409e-05 -0.0005530945277 -0.002916115159 -1.908369174e-07 -8.134249598e-08 -0.008481429056 3.612246467e-05 0.002812244819 -1.083210912e-07 4.049944664e-09 -0.000952092539 2.961472004e-06 0.0001774498629 +-0.0598657623 -0.008204669149 -5.004887091e-05 -0.001377847705 -0.02526745758 -9.758423002e-05 -0.00172137458 -0.001409642432 -2.770673799e-09 -3.181077171e-07 -0.007302047603 6.123625458e-05 0.001316532611 -4.385675262e-09 1.356998117e-07 -0.0007254296412 8.070674227e-06 0.0001620231875 +-0.06489795784 -0.008161567456 -1.269326905e-05 -0.00192997543 -0.02550845692 -0.000110490383 -0.004264536145 0.001551197814 1.25936334e-08 -5.454033764e-07 -0.006895849708 1.347974447e-05 0.001183353827 5.757489696e-09 1.91322911e-07 -0.0005513727293 2.065637405e-06 0.0001694406321 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.004943998254 0.0003549816152 -0.003638820992 -0.0002104806099 0.005337097812 -0.000830136543 0.0007785465501 4.841222119e-05 2.463518232e-08 6.157771778e-07 -5.974116391e-05 0.0002212423032 2.295696042e-05 2.927530312e-07 1.062583557e-06 -9.506016517e-05 5.87204788e-05 5.148207691e-06 +-0.1455459257 -0.022874926 3.596887781e-06 0.0002226963278 -0.07075251537 2.5120782e-06 0.0001479397186 -0.01083290245 6.12362155e-08 2.616256882e-08 -0.01587298786 -4.757877117e-05 -0.00136131254 3.485229539e-08 -1.335373699e-09 -0.002304452401 -1.191220353e-06 -6.205280872e-05 +0.08074433903 0.01106610126 -0.0004601908797 -9.242299947e-05 0.03655814765 -0.0005627070488 4.328127562e-05 0.004874022846 3.838682394e-09 -2.063210121e-07 0.007164806305 0.0006802684405 0.0001459702757 5.457790587e-09 9.753673835e-08 0.0006620379712 7.328145534e-05 1.341323811e-05 +0.0866341491 0.01089511096 -0.0003215003477 -0.0002381361633 0.03720493304 -0.0008147130499 0.0002858982241 0.004298424933 -4.525165449e-08 -2.092999611e-07 0.00708760878 0.0003340410166 0.0001870964494 -1.859635343e-08 8.017450278e-08 0.0004416869644 4.167569802e-05 2.340732569e-05 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.0007128344634 5.118188077e-05 -0.0004228570104 0.001830852048 -0.001193481933 0.0002289638627 0.0001115869508 -0.0003410089903 1.839030163e-07 -8.297742658e-08 0.0001297138024 3.640198602e-05 -0.0001395288813 4.941366148e-07 -6.284189824e-07 1.96527422e-05 9.17143385e-06 -3.299172173e-05 +4.112779749e-05 6.463906975e-06 0.0001708016316 -6.551355537e-05 -8.535905264e-05 0.0001329538713 -5.661649535e-05 -7.331877092e-05 -1.254679668e-07 1.203823194e-07 0.0006978026769 -0.0008853767958 0.0001924626256 -2.668860072e-08 -1.649962511e-08 2.890368377e-05 -4.238624069e-05 1.419479005e-05 +0.1446620165 0.01982608987 0.0002443041523 -0.0004556861743 0.06471910085 0.000307405608 -0.0004786795105 0.007972994753 -3.288647839e-09 -1.438312468e-08 0.01410089064 -0.0003310353745 0.0005466012859 -4.859407525e-09 2.364321134e-09 0.00131636873 -3.696744676e-05 6.221943228e-05 +-0.1552641827 -0.01952602428 -0.0001775481836 0.0005686284607 -0.0660661296 -0.0004657202653 0.0006519347021 -0.006942042692 -3.055815399e-08 1.068661557e-07 -0.0133638881 0.000175746938 -0.0004477387751 -1.279206462e-08 -3.589596583e-08 -0.0008708155132 2.225712431e-05 -5.972745069e-05 +0.336188631 0.04436199784 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.3859788712 0.00306839077 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.03423243788 0.008569784877 -2.901767732e-06 -0.0001715122336 0.01810507142 -2.637656985e-06 -0.000137795848 0.004924852381 1.92648744e-07 8.396933758e-08 0.002532553704 1.570213328e-05 0.0007178231336 1.092455491e-07 -4.257458729e-09 0.0008221382259 8.114804982e-07 4.689405498e-05 +0.0403770088 0.009621010332 -1.168582687e-05 -0.0003125010968 0.02064677173 -1.310824769e-05 -0.0003557704763 0.005503036542 2.746891412e-09 3.424946023e-07 0.003099955334 2.130986978e-05 0.0003073891633 4.359122813e-09 -1.453711785e-07 0.0008070631271 2.77271285e-06 4.393141974e-05 +0.04368829243 0.01012404271 -3.608776147e-06 -0.0004260093906 0.02193480991 -1.788582557e-06 -0.0004338832843 0.00571021804 -1.188802465e-08 5.787067509e-07 0.003204947453 5.621322272e-06 0.0002699980315 -5.481119573e-09 -2.015867125e-07 0.0007912084335 8.746332744e-07 4.619366227e-05 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.2525991361 0.01813674777 0.0002074871209 3.302842752e-05 0.07577408197 -0.0001462343165 -1.604528069e-05 -7.935805989e-08 -8.613195382e-10 -1.022583899e-08 0.009460658081 -3.782690705e-06 2.029999558e-07 -1.173550738e-08 -4.049075341e-08 -0.001522797234 -1.447448288e-06 -9.353998722e-08 +-0.04744350675 -0.007456524125 -1.393030807e-05 -0.0007465409834 -0.02222891355 -1.294151409e-05 -0.0005530945277 -0.002916115159 -1.908369174e-07 -8.134249598e-08 -0.008481429056 3.612246467e-05 0.002812244819 -1.083210912e-07 4.049944664e-09 -0.000952092539 2.961472004e-06 0.0001774498629 +-0.0598657623 -0.008204669149 -5.004887091e-05 -0.001377847705 -0.02526745758 -9.758423002e-05 -0.00172137458 -0.001409642432 -2.770673799e-09 -3.181077171e-07 -0.007302047603 6.123625458e-05 0.001316532611 -4.385675262e-09 1.356998117e-07 -0.0007254296412 8.070674227e-06 0.0001620231875 +-0.06489795784 -0.008161567456 -1.269326905e-05 -0.00192997543 -0.02550845692 -0.000110490383 -0.004264536145 0.001551197814 1.25936334e-08 -5.454033764e-07 -0.006895849708 1.347974447e-05 0.001183353827 5.757489696e-09 1.91322911e-07 -0.0005513727293 2.065637405e-06 0.0001694406321 +0 0 0.004031914173 0.004246437011 0.6559782316 7.472119734e-06 1.066978924e-05 0.0004912482479 0 0 0 0 0 0 0 0 0 0 +0.3300368813 0.01260248533 0.0002931073781 2.94406249e-05 0.06959124071 1.887069784e-06 7.468811051e-06 9.554073582e-10 4.913710028e-09 6.081965755e-08 0.008762532524 2.037782997e-05 1.475968137e-07 3.26172753e-08 8.340622761e-08 0.001661040343 8.403797688e-06 1.112650924e-07 +0.02156723487 0.002658363986 0.0002441484522 0.03371752238 0.007908522671 9.071194678e-05 0.008936313897 0.0006816866421 5.375696667e-05 2.36282551e-05 0.005328533898 5.066815114e-05 0.02455516136 2.698955758e-05 1.606989074e-06 0.0003584530088 4.23966269e-05 0.007727015957 +0.02911997934 0.002988402086 0.0004269632624 0.04194581504 0.009286636661 0.0002619399038 0.01065605163 0.0001633892955 2.218895805e-05 7.503902962e-05 0.003931445706 0.0002504199503 0.03242347056 9.448470606e-06 2.563407895e-05 0.000239150423 9.875293168e-05 0.008921622326 +0.03140216863 0.002857728117 6.310197708e-05 0.04802821711 0.009053331164 0.0001730362512 0.01145103595 0.0002248712405 5.39825552e-06 0.0001048958025 0.003584996196 5.527203168e-05 0.03708168317 2.417177228e-06 3.691371261e-05 0.0001505271555 2.130664498e-05 0.00975111 +0 0 0.05096248647 0.007931563521 -0.05889404999 6.083864586e-05 7.04776874e-06 -6.78864146e-05 0 0 0 0 0 0 0 0 0 0 +0.006459649032 0.0002466622272 -0.005140392693 -0.0001876165822 0.004901613439 1.071243484e-05 -0.0003624004584 -5.828442936e-07 -1.405403419e-07 -3.662423896e-06 -5.533271442e-05 -0.001191860077 1.669150221e-05 -8.136679487e-07 -2.188798147e-06 0.0001036899502 -0.0003409275676 -6.123753289e-06 +0.06616338839 0.008155258192 -6.304057169e-05 -0.01005807931 0.02517207468 -1.76081023e-05 -0.002390252836 0.00253235709 -1.724966658e-05 -7.599666604e-06 0.00997234703 -6.673764902e-05 -0.01188632258 -8.683886234e-06 -5.298667321e-07 0.000867602531 -1.705358848e-05 -0.002702076154 +-0.03927576287 -0.004030626888 0.003925854784 0.002813633196 -0.0134363433 0.001510443134 -0.0002679297771 -0.0005649398322 -3.07421114e-05 4.866945287e-05 -0.003857554553 0.002781894325 0.003594945463 -1.175822897e-05 1.842496625e-05 -0.000218252263 0.0008966733571 0.0007385846828 +-0.0419196574 -0.003814863395 0.001598272872 0.005926114486 -0.01320458469 0.001275901922 -0.0007676874415 0.000623126295 -1.939710216e-05 4.025403642e-05 -0.003684687397 0.001369694039 0.005862871357 -7.807340421e-06 1.546881416e-05 -0.0001205824641 0.0004298766569 0.001347064188 +0 0 0.00804948266 -0.05234292513 0.04429344247 7.003630478e-06 -7.260557947e-05 6.560194899e-05 0 0 0 0 0 0 0 0 0 0 +0.0009313636889 3.556419872e-05 -0.0005973503757 0.001631970773 -0.001096098908 -2.954647015e-06 -5.194186797e-05 4.105474591e-06 -1.049141527e-06 4.935202552e-07 0.0001201418974 -0.0001961020711 -0.0001014483881 -1.373386721e-06 1.294469781e-06 -2.143686429e-05 -5.324879324e-05 3.92433982e-05 +-1.869619109e-05 -2.304480911e-06 -0.002993541404 0.002958919629 3.036873581e-05 -0.0009319237622 0.0009147491954 1.713938717e-05 3.534314745e-05 -3.49684887e-05 -0.0004384007923 -0.001241897687 0.001680490544 6.649799384e-06 -6.546933227e-06 -1.088193845e-05 -0.0006068041939 0.0006181090671 +-0.07036667984 -0.007221294027 -0.00208414088 0.01387245333 -0.02378643647 -0.0008251517214 0.002963232777 -0.0009241364803 2.633715631e-05 3.392862421e-06 -0.00759196447 -0.001353738282 0.01346165719 1.046907635e-05 4.466269617e-07 -0.0004339637102 -0.0004523344198 0.00342604219 +0.07512766516 0.006836930393 0.0008826442875 -0.01415054863 0.02344785308 0.0007293529685 -0.001750560309 -0.001006361495 -1.309873951e-05 -2.055324857e-05 0.006947582968 0.0007206286693 -0.01403038299 -5.370515439e-06 -6.925743287e-06 0.0002377364262 0.000229577875 -0.00343724486 +0 0 0.001950970795 0.001642757289 0.2529227472 -5.44685907e-05 -6.651445969e-05 -0.003074558391 0 0 0 0 0 0 0 0 0 0 +0.5043060117 0.002132099435 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.01556164539 -0.003055258335 5.085760465e-05 0.007746349768 -0.006441356997 1.84883313e-05 0.002226358949 -0.001151259775 -5.426734121e-05 -2.439129639e-05 -0.001591099586 2.202502154e-05 0.006267684361 -2.721989784e-05 -1.689329171e-06 -0.0003095265519 1.161720789e-05 0.002041991496 +-0.01964023536 -0.003504278701 9.969093553e-05 0.009513470293 -0.007588379903 3.518573788e-05 0.002202372806 -0.0006378477571 -2.199849665e-05 -8.079169801e-05 -0.001669025833 8.714472446e-05 0.007570358228 -9.391266179e-06 -2.746102754e-05 -0.0002660623129 3.392697003e-05 0.002419033604 +-0.02113944986 -0.003544878072 1.794028858e-05 0.01060141553 -0.007784990631 2.801054827e-06 0.001165053576 0.0008277885659 -5.095796634e-06 -0.000111300941 -0.001666179646 2.30495395e-05 0.008460682874 -2.301148263e-06 -3.889400351e-05 -0.0002160033468 9.021670801e-06 0.002658391181 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.004943998254 0.0003549816152 -0.003638820992 -0.0002104806099 0.005337097812 -0.000830136543 0.0007785465501 4.841222119e-05 2.463518232e-08 6.157771778e-07 -5.974116391e-05 0.0002212423032 2.295696042e-05 2.927530312e-07 1.062583557e-06 -9.506016517e-05 5.87204788e-05 5.148207691e-06 +-0.1455459257 -0.022874926 3.596887781e-06 0.0002226963278 -0.07075251537 2.5120782e-06 0.0001479397186 -0.01083290245 6.12362155e-08 2.616256882e-08 -0.01587298786 -4.757877117e-05 -0.00136131254 3.485229539e-08 -1.335373699e-09 -0.002304452401 -1.191220353e-06 -6.205280872e-05 +0.08074433903 0.01106610126 -0.0004601908797 -9.242299947e-05 0.03655814765 -0.0005627070488 4.328127562e-05 0.004874022846 3.838682394e-09 -2.063210121e-07 0.007164806305 0.0006802684405 0.0001459702757 5.457790587e-09 9.753673835e-08 0.0006620379712 7.328145534e-05 1.341323811e-05 +0.0866341491 0.01089511096 -0.0003215003477 -0.0002381361633 0.03720493304 -0.0008147130499 0.0002858982241 0.004298424933 -4.525165449e-08 -2.092999611e-07 0.00708760878 0.0003340410166 0.0001870964494 -1.859635343e-08 8.017450278e-08 0.0004416869644 4.167569802e-05 2.340732569e-05 +0 0 0.05096248647 0.007931563521 -0.05889404999 6.083864586e-05 7.04776874e-06 -6.78864146e-05 0 0 0 0 0 0 0 0 0 0 +0.006459649032 0.0002466622272 -0.005140392693 -0.0001876165822 0.004901613439 1.071243484e-05 -0.0003624004584 -5.828442936e-07 -1.405403419e-07 -3.662423896e-06 -5.533271442e-05 -0.001191860077 1.669150221e-05 -8.136679487e-07 -2.188798147e-06 0.0001036899502 -0.0003409275676 -6.123753289e-06 +0.06616338839 0.008155258192 -6.304057169e-05 -0.01005807931 0.02517207468 -1.76081023e-05 -0.002390252836 0.00253235709 -1.724966658e-05 -7.599666604e-06 0.00997234703 -6.673764902e-05 -0.01188632258 -8.683886234e-06 -5.298667321e-07 0.000867602531 -1.705358848e-05 -0.002702076154 +-0.03927576287 -0.004030626888 0.003925854784 0.002813633196 -0.0134363433 0.001510443134 -0.0002679297771 -0.0005649398322 -3.07421114e-05 4.866945287e-05 -0.003857554553 0.002781894325 0.003594945463 -1.175822897e-05 1.842496625e-05 -0.000218252263 0.0008966733571 0.0007385846828 +-0.0419196574 -0.003814863395 0.001598272872 0.005926114486 -0.01320458469 0.001275901922 -0.0007676874415 0.000623126295 -1.939710216e-05 4.025403642e-05 -0.003684687397 0.001369694039 0.005862871357 -7.807340421e-06 1.546881416e-05 -0.0001205824641 0.0004298766569 0.001347064188 +0 0 0.6441543436 0.01481470223 0.00528753693 0.0004953535224 4.655297596e-06 9.381336844e-06 0 0 0 0 0 0 0 0 0 0 +0.0001264315232 4.827798067e-06 0.09015002357 0.001195626181 0.0003452419308 6.081187941e-05 0.01758433723 0.0003555629623 4.019689318e-06 0.0002205429845 3.494091778e-07 0.06970960335 0.001887616941 2.029769577e-05 5.743980356e-05 6.472814353e-06 0.01383084299 0.0003370361139 +0.2029742797 0.02501848375 1.627744777e-05 0.00300036753 0.08012031702 3.417909962e-06 0.0006393361607 0.009407302466 5.535115083e-06 2.444316444e-06 0.01866323968 8.790361789e-05 0.005753766482 2.794039136e-06 1.747110533e-07 0.002099952109 6.85962307e-06 0.0009448945857 +0.05297344243 0.005436334416 0.03609756891 0.0001887323385 0.0194403343 0.008709778191 6.736675832e-06 0.001953353266 4.259223941e-05 3.156644821e-05 0.003785052178 0.03090383184 0.0003985888203 1.463262726e-05 1.324328376e-05 0.0001991802888 0.008141764459 6.114441004e-05 +0.05595975544 0.005092570785 0.04048171375 0.0007312125042 0.01925932607 0.009408003827 5.146643591e-05 0.001726705375 6.969799236e-05 1.544759094e-05 0.003787150801 0.033942334 0.000926960634 2.521725083e-05 6.482258069e-06 9.659473479e-05 0.008673066094 0.0001860897813 +0 0 0.1017436467 -0.09776695955 -0.003976687167 5.702416578e-05 -4.795852305e-05 -9.065642732e-06 0 0 0 0 0 0 0 0 0 0 +1.822912194e-05 6.960805137e-07 0.01047607715 -0.01040007743 -7.720300833e-05 -1.677281036e-05 0.002520315032 -0.002504536329 3.000720598e-05 -2.971868715e-05 -7.586593578e-07 0.01146963293 -0.011472646 3.426039564e-05 -3.397028182e-05 -1.338189888e-06 0.002160211637 -0.002159858799 +-5.735567679e-05 -7.069625126e-06 0.0007729500631 -0.00088265822 9.666079463e-05 0.0001808957863 -0.0002446737976 6.367008818e-05 -1.134099536e-05 1.124707917e-05 -0.0008204667404 0.001635767836 -0.0008134685983 -2.139571987e-06 2.158696764e-06 -2.633873092e-05 0.0002440804792 -0.0002161478351 +0.09490752035 0.009739767619 -0.01916332192 0.0009305337176 0.03441533657 -0.004758132435 -7.450586064e-05 0.003195322598 -3.64893111e-05 2.200571603e-06 0.007449274211 -0.01503856557 0.001492558404 -1.30283304e-05 3.210213526e-07 0.0003960417909 -0.004107181588 0.0002836280434 +-0.1002900794 -0.009126814875 0.02235597814 -0.001746010496 -0.03419947379 0.005377964718 0.0001173590905 -0.002788663898 4.706661021e-05 -7.887362476e-06 -0.007140780633 0.01785787066 -0.002218300883 1.734644931e-05 -2.902255781e-06 -0.0001904430067 0.004631896269 -0.000474837168 +0 0 0.02465983115 0.003068368553 -0.0227075293 -0.0004434879817 -4.393512553e-05 0.0004248783514 0 0 0 0 0 0 0 0 0 0 +0.009870532737 4.173053025e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.04773960101 -0.009372840099 -1.313173376e-05 -0.002310768847 -0.02050222603 -3.588771274e-06 -0.0005954984181 -0.004276746343 1.74134368e-05 7.845087158e-06 -0.002977741633 -2.901029788e-05 -0.003033973877 8.75799818e-06 5.570164362e-07 -0.0007491805433 -4.672897281e-06 -0.0007140682198 +0.02648989609 0.004726418851 0.0009166412445 0.0006381427039 0.01097922543 0.0002028940815 -5.537522485e-05 0.00220544194 3.047823306e-05 -5.240056752e-05 0.001637656649 0.0009680834697 0.0008393618726 1.168704044e-05 -1.973811919e-05 0.0002428124574 0.000308055767 0.0002002619145 +0.02821965917 0.004732159619 0.0004543990201 0.00130808941 0.01135466783 2.065388733e-05 -7.81062083e-05 0.002293831888 1.831030182e-05 -4.271202496e-05 0.001712512596 0.00057118973 0.001337692657 7.432573682e-06 -1.629866165e-05 0.0001730333357 0.0001820185997 0.0003672426585 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.0007128344634 5.118188077e-05 -0.0004228570104 0.001830852048 -0.001193481933 0.0002289638627 0.0001115869508 -0.0003410089903 1.839030163e-07 -8.297742658e-08 0.0001297138024 3.640198602e-05 -0.0001395288813 4.941366148e-07 -6.284189824e-07 1.96527422e-05 9.17143385e-06 -3.299172173e-05 +4.112779749e-05 6.463906975e-06 0.0001708016316 -6.551355537e-05 -8.535905264e-05 0.0001329538713 -5.661649535e-05 -7.331877092e-05 -1.254679668e-07 1.203823194e-07 0.0006978026769 -0.0008853767958 0.0001924626256 -2.668860072e-08 -1.649962511e-08 2.890368377e-05 -4.238624069e-05 1.419479005e-05 +0.1446620165 0.01982608987 0.0002443041523 -0.0004556861743 0.06471910085 0.000307405608 -0.0004786795105 0.007972994753 -3.288647839e-09 -1.438312468e-08 0.01410089064 -0.0003310353745 0.0005466012859 -4.859407525e-09 2.364321134e-09 0.00131636873 -3.696744676e-05 6.221943228e-05 +-0.1552641827 -0.01952602428 -0.0001775481836 0.0005686284607 -0.0660661296 -0.0004657202653 0.0006519347021 -0.006942042692 -3.055815399e-08 1.068661557e-07 -0.0133638881 0.000175746938 -0.0004477387751 -1.279206462e-08 -3.589596583e-08 -0.0008708155132 2.225712431e-05 -5.972745069e-05 +0 0 0.00804948266 -0.05234292513 0.04429344247 7.003630478e-06 -7.260557947e-05 6.560194899e-05 0 0 0 0 0 0 0 0 0 0 +0.0009313636889 3.556419872e-05 -0.0005973503757 0.001631970773 -0.001096098908 -2.954647015e-06 -5.194186797e-05 4.105474591e-06 -1.049141527e-06 4.935202552e-07 0.0001201418974 -0.0001961020711 -0.0001014483881 -1.373386721e-06 1.294469781e-06 -2.143686429e-05 -5.324879324e-05 3.92433982e-05 +-1.869619109e-05 -2.304480911e-06 -0.002993541404 0.002958919629 3.036873581e-05 -0.0009319237622 0.0009147491954 1.713938717e-05 3.534314745e-05 -3.49684887e-05 -0.0004384007923 -0.001241897687 0.001680490544 6.649799384e-06 -6.546933227e-06 -1.088193845e-05 -0.0006068041939 0.0006181090671 +-0.07036667984 -0.007221294027 -0.00208414088 0.01387245333 -0.02378643647 -0.0008251517214 0.002963232777 -0.0009241364803 2.633715631e-05 3.392862421e-06 -0.00759196447 -0.001353738282 0.01346165719 1.046907635e-05 4.466269617e-07 -0.0004339637102 -0.0004523344198 0.00342604219 +0.07512766516 0.006836930393 0.0008826442875 -0.01415054863 0.02344785308 0.0007293529685 -0.001750560309 -0.001006361495 -1.309873951e-05 -2.055324857e-05 0.006947582968 0.0007206286693 -0.01403038299 -5.370515439e-06 -6.925743287e-06 0.0002377364262 0.000229577875 -0.00343724486 +0 0 0.1017436467 -0.09776695955 -0.003976687167 5.702416578e-05 -4.795852305e-05 -9.065642732e-06 0 0 0 0 0 0 0 0 0 0 +1.822912194e-05 6.960805137e-07 0.01047607715 -0.01040007743 -7.720300833e-05 -1.677281036e-05 0.002520315032 -0.002504536329 3.000720598e-05 -2.971868715e-05 -7.586593578e-07 0.01146963293 -0.011472646 3.426039564e-05 -3.397028182e-05 -1.338189888e-06 0.002160211637 -0.002159858799 +-5.735567679e-05 -7.069625126e-06 0.0007729500631 -0.00088265822 9.666079463e-05 0.0001808957863 -0.0002446737976 6.367008818e-05 -1.134099536e-05 1.124707917e-05 -0.0008204667404 0.001635767836 -0.0008134685983 -2.139571987e-06 2.158696764e-06 -2.633873092e-05 0.0002440804792 -0.0002161478351 +0.09490752035 0.009739767619 -0.01916332192 0.0009305337176 0.03441533657 -0.004758132435 -7.450586064e-05 0.003195322598 -3.64893111e-05 2.200571603e-06 0.007449274211 -0.01503856557 0.001492558404 -1.30283304e-05 3.210213526e-07 0.0003960417909 -0.004107181588 0.0002836280434 +-0.1002900794 -0.009126814875 0.02235597814 -0.001746010496 -0.03419947379 0.005377964718 0.0001173590905 -0.002788663898 4.706661021e-05 -7.887362476e-06 -0.007140780633 0.01785787066 -0.002218300883 1.734644931e-05 -2.902255781e-06 -0.0001904430067 0.004631896269 -0.000474837168 +0 0 0.01607032499 0.6451954435 0.002990814255 6.564514706e-06 0.00049406507 8.760572134e-06 0 0 0 0 0 0 0 0 0 0 +2.628307229e-06 1.003621268e-07 0.00121739505 0.09046440464 1.726413846e-05 4.626187679e-06 0.0003612298704 0.0176416075 0.0002240054739 4.004663164e-06 1.647249293e-06 0.001887150023 0.06972898118 5.782797825e-05 2.009025058e-05 2.76657429e-07 0.0003373991244 0.01384121713 +1.620734245e-08 1.997706972e-09 0.03670426767 0.0002596633664 1.166159792e-07 0.009574063057 9.363660454e-05 4.309290728e-07 2.323676631e-05 5.175139665e-05 3.606906859e-05 0.03043943443 0.000115008345 1.638405213e-06 2.667244934e-05 3.303545559e-07 0.008684920397 4.944454896e-05 +0.1700368525 0.01744982299 0.01017334181 0.004587941879 0.06092566995 0.002599357156 0.0008240151979 0.005226953404 3.12608551e-05 1.534070399e-07 0.01466074539 0.007318136325 0.005589044335 1.159992597e-05 7.781658288e-09 0.0007874730031 0.002071902311 0.001315653662 +0.1797380983 0.01635691545 0.01234606227 0.004169174674 0.06072922817 0.003074244552 0.0002676143371 0.004503748264 3.178378202e-05 4.027196671e-06 0.01346414514 0.009395451249 0.005308595238 1.193228024e-05 1.299406553e-06 0.0003754711776 0.002473688407 0.001211621264 +0 0 0.00389499997 -0.02024914571 0.01707803493 -5.105350229e-05 0.0004526163337 -0.0004105806456 0 0 0 0 0 0 0 0 0 0 +0.001423150969 6.016782087e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +1.349006943e-05 2.648540436e-06 -0.0006235728463 0.0006797897581 -2.4734818e-05 -0.0001899387663 0.0002278971039 -2.894568531e-05 -3.567869917e-05 3.60977469e-05 0.0001309064242 -0.0005398425379 0.0004289438032 -6.706551575e-06 6.882389842e-06 9.396626072e-06 -0.0001662719651 0.0001633455225 +0.04745944831 0.00846787886 -0.0004866225561 0.003146325147 0.01943658647 -0.000110840585 0.0006124354041 0.003607692777 -2.611108839e-05 -3.652967229e-06 0.003223034419 -0.0004710932551 0.003143080168 -1.040569281e-05 -4.784582009e-07 0.000482798178 -0.0001554013237 0.0009289466514 +-0.05057477175 -0.008480892387 0.0002509413169 -0.003123493959 -0.02016288957 1.180652978e-05 -0.000178105855 -0.00370458462 1.236483017e-05 2.180826928e-05 -0.003228991245 0.0003005165266 -0.003201219871 5.112720793e-06 7.297285065e-06 -0.0003411468419 9.720798433e-05 -0.0009370770531 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.336188631 0.04436199784 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.3859788712 0.00306839077 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.03423243788 0.008569784877 -2.901767732e-06 -0.0001715122336 0.01810507142 -2.637656985e-06 -0.000137795848 0.004924852381 1.92648744e-07 8.396933758e-08 0.002532553704 1.570213328e-05 0.0007178231336 1.092455491e-07 -4.257458729e-09 0.0008221382259 8.114804982e-07 4.689405498e-05 +0.0403770088 0.009621010332 -1.168582687e-05 -0.0003125010968 0.02064677173 -1.310824769e-05 -0.0003557704763 0.005503036542 2.746891412e-09 3.424946023e-07 0.003099955334 2.130986978e-05 0.0003073891633 4.359122813e-09 -1.453711785e-07 0.0008070631271 2.77271285e-06 4.393141974e-05 +0.04368829243 0.01012404271 -3.608776147e-06 -0.0004260093906 0.02193480991 -1.788582557e-06 -0.0004338832843 0.00571021804 -1.188802465e-08 5.787067509e-07 0.003204947453 5.621322272e-06 0.0002699980315 -5.481119573e-09 -2.015867125e-07 0.0007912084335 8.746332744e-07 4.619366227e-05 +0 0 0.001950970795 0.001642757289 0.2529227472 -5.44685907e-05 -6.651445969e-05 -0.003074558391 0 0 0 0 0 0 0 0 0 0 +0.5043060117 0.002132099435 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.01556164539 -0.003055258335 5.085760465e-05 0.007746349768 -0.006441356997 1.84883313e-05 0.002226358949 -0.001151259775 -5.426734121e-05 -2.439129639e-05 -0.001591099586 2.202502154e-05 0.006267684361 -2.721989784e-05 -1.689329171e-06 -0.0003095265519 1.161720789e-05 0.002041991496 +-0.01964023536 -0.003504278701 9.969093553e-05 0.009513470293 -0.007588379903 3.518573788e-05 0.002202372806 -0.0006378477571 -2.199849665e-05 -8.079169801e-05 -0.001669025833 8.714472446e-05 0.007570358228 -9.391266179e-06 -2.746102754e-05 -0.0002660623129 3.392697003e-05 0.002419033604 +-0.02113944986 -0.003544878072 1.794028858e-05 0.01060141553 -0.007784990631 2.801054827e-06 0.001165053576 0.0008277885659 -5.095796634e-06 -0.000111300941 -0.001666179646 2.30495395e-05 0.008460682874 -2.301148263e-06 -3.889400351e-05 -0.0002160033468 9.021670801e-06 0.002658391181 +0 0 0.02465983115 0.003068368553 -0.0227075293 -0.0004434879817 -4.393512553e-05 0.0004248783514 0 0 0 0 0 0 0 0 0 0 +0.009870532737 4.173053025e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.04773960101 -0.009372840099 -1.313173376e-05 -0.002310768847 -0.02050222603 -3.588771274e-06 -0.0005954984181 -0.004276746343 1.74134368e-05 7.845087158e-06 -0.002977741633 -2.901029788e-05 -0.003033973877 8.75799818e-06 5.570164362e-07 -0.0007491805433 -4.672897281e-06 -0.0007140682198 +0.02648989609 0.004726418851 0.0009166412445 0.0006381427039 0.01097922543 0.0002028940815 -5.537522485e-05 0.00220544194 3.047823306e-05 -5.240056752e-05 0.001637656649 0.0009680834697 0.0008393618726 1.168704044e-05 -1.973811919e-05 0.0002428124574 0.000308055767 0.0002002619145 +0.02821965917 0.004732159619 0.0004543990201 0.00130808941 0.01135466783 2.065388733e-05 -7.81062083e-05 0.002293831888 1.831030182e-05 -4.271202496e-05 0.001712512596 0.00057118973 0.001337692657 7.432573682e-06 -1.629866165e-05 0.0001730333357 0.0001820185997 0.0003672426585 +0 0 0.00389499997 -0.02024914571 0.01707803493 -5.105350229e-05 0.0004526163337 -0.0004105806456 0 0 0 0 0 0 0 0 0 0 +0.001423150969 6.016782087e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +1.349006943e-05 2.648540436e-06 -0.0006235728463 0.0006797897581 -2.4734818e-05 -0.0001899387663 0.0002278971039 -2.894568531e-05 -3.567869917e-05 3.60977469e-05 0.0001309064242 -0.0005398425379 0.0004289438032 -6.706551575e-06 6.882389842e-06 9.396626072e-06 -0.0001662719651 0.0001633455225 +0.04745944831 0.00846787886 -0.0004866225561 0.003146325147 0.01943658647 -0.000110840585 0.0006124354041 0.003607692777 -2.611108839e-05 -3.652967229e-06 0.003223034419 -0.0004710932551 0.003143080168 -1.040569281e-05 -4.784582009e-07 0.000482798178 -0.0001554013237 0.0009289466514 +-0.05057477175 -0.008480892387 0.0002509413169 -0.003123493959 -0.02016288957 1.180652978e-05 -0.000178105855 -0.00370458462 1.236483017e-05 2.180826928e-05 -0.003228991245 0.0003005165266 -0.003201219871 5.112720793e-06 7.297285065e-06 -0.0003411468419 9.720798433e-05 -0.0009370770531 +0.1693032894 0.03221073766 0.0009440396988 0.0006355096057 0.09751835192 0.0003970529754 0.0004146448675 0.0192426321 -1.428603631e-21 3.801040115e-07 0.000451243219 0.0002034850233 0.03223590265 5.709943376e-23 1.0683005e-07 0.000366062592 0.0001479879955 0.006238780756 +0.7705943424 0.0003607104378 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.01122836602 0.003511409101 1.059394777e-05 0.001779666194 0.005246375548 3.768173943e-06 0.0005546665241 0.001944293738 5.47825613e-05 2.517897904e-05 0.0004751021464 9.57409266e-06 0.001599821181 2.745220392e-05 1.775888271e-06 0.0002672782317 3.183260767e-06 0.0005396299547 +0.01324653568 0.004109209156 2.327666922e-05 0.002157691224 0.006200685097 4.726412938e-06 0.0004551822893 0.002490063746 2.18096701e-05 8.698537947e-05 0.0007085554374 3.032587057e-05 0.001767556733 9.334408088e-06 2.941818331e-05 0.0002960026308 1.16557481e-05 0.0006559035299 +0.01423074775 0.004397255454 5.100536769e-06 0.002340082936 0.006694340241 4.534256891e-08 0.0001185351126 0.003047227864 4.810284218e-06 0.0001180971896 0.0007743814669 9.612117649e-06 0.001930418162 2.190688903e-06 4.098053006e-05 0.0003099603237 3.819960587e-06 0.000724742483 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.08341301216 0.02059361022 0.04954834536 0.001498827877 0.002674845779 0.01405013969 0.0002733642526 0.000454057466 -2.027096283e-20 3.442765319e-07 0.0170187814 0.0007036815792 0.000841033962 -3.85723698e-20 8.7529083e-08 0.005373866323 0.0001661115266 4.286697133e-05 +0.01122836602 0.003511409101 0.003110134129 5.71113756e-05 0.003869390186 0.001626534555 0.000863299879 1.289400292e-05 3.685969197e-06 0.0001960120973 0.0003438088512 0.001578541058 4.241098519e-05 1.837436933e-05 5.196498329e-05 0.0001357549522 0.0006184130065 1.481222813e-05 +0.7705943424 0.0003607104378 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.007050973495 0.002241529759 0.001311627635 0.0002682410515 0.002703853153 0.0005597628654 0.0001566071205 0.0008437109567 2.44178328e-05 6.189731699e-05 0.0003392351325 0.0007239214458 0.0001108350729 7.82762528e-06 2.477164693e-05 0.0001250127531 0.0002995299442 4.606631822e-05 +0.007686860024 0.002437805627 0.001380144666 0.0004063387956 0.002912281532 0.0006428888858 0.0004004524885 0.0006614188849 5.581433305e-05 4.536682079e-05 0.0003354875573 0.0007902098883 0.0001676920383 1.976033627e-05 1.805850324e-05 0.0001279478905 0.0003198906318 6.840414721e-05 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.1001603225 0.02354775835 0.01942537074 0.03752235176 0.006656925168 0.004213905166 0.01099228825 0.001377929963 -2.892612415e-19 3.46209739e-07 0.007368041012 0.01188653791 0.002716939235 -1.063651705e-19 8.991506348e-08 0.001631312455 0.003803036533 0.0007858216147 +0.01324653568 0.004109209156 0.0009392528716 0.002275980327 0.005166419792 0.001752128789 0.0005296747071 0.0006681689524 0.0001838212185 3.523709633e-05 0.0004490984264 0.0007754024829 0.001171673867 7.491085637e-05 4.349429407e-09 0.0001715022636 0.0002970630392 0.0004588339916 +0.007050973495 0.002241529759 0.001140826028 0.0002668606809 0.002876035131 0.0004323122762 0.0001149458477 0.001012822819 1.613731296e-07 6.969202205e-05 0.0004563998592 0.0006379990979 9.605444873e-05 2.292567975e-06 2.418686791e-05 0.0001476691348 0.0002744214444 5.463827261e-05 +0.7705943424 0.0003607104378 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.008629826534 0.002726854417 0.001218389472 0.0006323863344 0.003466608096 0.0003012288372 0.0007703980704 0.0008469966461 8.970731507e-05 9.002830383e-06 0.0004160025743 0.000777948973 0.0003035728077 3.367895517e-05 2.826384906e-06 0.0001624954409 0.0003040071508 0.0001267490856 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.1103947584 0.02518373047 0.006099635347 0.05008117682 0.01323271652 0.001754836687 0.01125268968 0.00448641375 -4.291577243e-19 3.489937914e-07 0.001804934917 0.01760208662 0.004516242718 -1.425167107e-19 9.172589281e-08 0.0004021828743 0.004283276476 0.001821027026 +0.01423074775 0.004397255454 0.000381119829 0.002714562292 0.005943841593 0.001839273369 0.0002253964168 0.001101138533 0.0001334225607 8.614355752e-05 0.000521902625 0.0002545798448 0.001841270633 1.685875382e-05 5.741414847e-05 0.00019630519 0.0001040255071 0.0007070903868 +0.007686860024 0.002437805627 0.0009791722633 0.0005096218076 0.003209970923 0.0003372910496 0.0002278839593 0.00113958525 5.884390472e-05 1.391026612e-05 0.0004458049523 0.000694945357 0.0001810661576 1.333536938e-05 1.404998942e-05 0.00016489794 0.0002568715134 0.0001049066969 +0.008629826534 0.002726854417 0.001038965222 0.0006929642658 0.003585454415 0.0002882968625 0.0004489915623 0.001181335129 8.767742325e-05 6.932827936e-08 0.000450727767 0.0007195279646 0.0003382320173 3.253326687e-05 9.944560246e-09 0.0001769835621 0.0002737904283 0.0001464398155 +0.7705943424 0.0003607104378 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.271471693 0.03922570811 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.05245229364 0.01071327273 -0.000236596623 -0.0003171496901 0.02214506743 0.004565396071 8.814447319e-05 8.519571092e-05 1.419299902e-07 -3.848472316e-07 0.002308879491 1.337007594e-05 2.267337993e-05 2.66803035e-07 -1.062346233e-06 0.0005235014391 5.092548611e-06 7.456848269e-06 +0.02832396405 0.007140501957 -2.789737143e-05 9.178037531e-05 0.01416188632 -2.495486669e-05 8.832365489e-05 0.003770384908 -1.996621563e-07 6.241218517e-08 0.002453226298 0.0001337781467 -0.0002414906786 -7.614084086e-08 -1.197514073e-08 0.0006457592888 7.289537107e-06 -2.067623074e-05 +0.03258997436 0.007837409402 -7.80727605e-05 0.0001770974542 0.01570017238 -0.0001023761436 0.0003533428577 0.003790388479 -5.50758023e-09 -9.66909464e-09 0.002472439512 0.0001038001536 -0.0001344649918 -8.138034954e-09 -2.672779784e-09 0.0006240597692 1.343828815e-05 -2.075796814e-05 +0.3214875199 0.002899629272 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0.004959153779 0.01458309168 -0.09316852463 -0.0001145091692 -0.0003465022761 0.001484568252 0 0 0 0 0 0 0 0 0 0 +0.06853226689 0.007444215699 -0.000334229014 -0.000282698444 0.02033812457 -5.891381162e-05 -4.10297849e-05 -1.025687992e-06 -8.096911599e-07 2.288934614e-06 0.002138501514 -7.202627847e-05 1.648531706e-05 -7.415434004e-07 2.188309287e-06 -0.0005710261291 -2.95670309e-05 -8.869863427e-06 +-0.01287572583 -0.002545697288 0.0004889410931 -0.004145260511 -0.005038464827 0.0001749180601 -0.001427039801 -0.0008813852975 5.624295356e-05 -1.812940474e-05 -0.001541261431 0.0001876475323 -0.002108579787 1.897144485e-05 -4.751650187e-06 -0.0002431217035 0.00010435749 -0.000900342002 +-0.01585245629 -0.002854634377 0.0006660330177 -0.005391377461 -0.005770339021 0.0002748025699 -0.002187344799 -0.000439337586 4.410748991e-05 2.28086098e-06 -0.001331169315 0.0004244810445 -0.003311594156 1.753253021e-05 -5.048956748e-07 -0.0002057320921 0.0001644311633 -0.001143013879 +-0.1555581354 -0.001015289299 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0.06268258612 0.02723853377 0.008364716211 -0.0009323435709 -0.0002288768647 -0.0002051549624 0 0 0 0 0 0 0 0 0 0 +0.001341348245 0.0001457019608 0.005861566477 0.001801555368 0.001432502477 -0.0003344393373 0.001990840678 0.0006257188496 2.315852417e-05 -0.0001378345286 -1.350398338e-05 0.004212678483 0.001864299772 1.849848253e-05 -5.742697458e-05 -3.564613656e-05 0.001199483412 0.0004881751695 +-0.03949980856 -0.007809622299 -0.0001262474767 0.001236548715 -0.01603695382 -3.395335681e-05 0.000381699431 -0.003274205726 -1.804737611e-05 5.831045551e-06 -0.002884469566 -0.0002471602944 0.001020692113 -6.104059627e-06 1.566744539e-06 -0.0005884537169 -4.197668114e-05 0.0003148424524 +0.02138110425 0.003850206814 0.006124060638 -0.0003616417653 0.008348798262 0.001584614062 5.499736909e-05 0.001519067093 -6.110955573e-05 1.479340238e-06 0.001306150112 0.00471552449 -0.000367172304 -2.181850517e-05 -3.629030631e-07 0.000187754193 0.00149302953 -9.462545178e-05 +0.2076590257 0.001355338865 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0.009900662722 -0.1797557985 -0.006290993339 -0.0001073296382 0.002357872116 0.0001982512327 0 0 0 0 0 0 0 0 0 0 +0.0001933979762 2.10075679e-05 0.0006811559245 -0.0156707135 -0.0003203362362 9.224328594e-05 0.0002853417573 -0.004407477035 0.0001728796805 1.857352771e-05 2.93207048e-05 0.000693130839 -0.01133092782 3.122351116e-05 3.396269468e-05 7.369483644e-06 0.0001873449092 -0.003128416784 +1.116170116e-05 2.206812475e-06 -0.005994981305 -0.0003637720635 -1.934771052e-05 -0.001797010233 -0.0001460762821 -2.216033428e-05 3.697758865e-05 2.683049942e-05 0.0001268060306 -0.004599319909 -0.0001443056448 4.67426344e-06 1.93583995e-05 7.380703607e-06 -0.001493622659 -7.202127678e-05 +0.03830650783 0.006898052398 -0.003251114937 -0.001783053498 0.01477992599 -0.0008656711343 -0.0006082564189 0.0024849112 5.235333059e-05 1.031282993e-07 0.002570604021 -0.002294690335 -0.001374915903 1.942636063e-05 -8.796884088e-09 0.000373322618 -0.0007531713093 -0.0004389351656 +-0.3721628161 -0.002429014231 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.1367120907 0.02848133662 0.002399645373 0.005641548452 -0.03592259326 0.000834723384 0.002160062504 -0.009291415889 -1.862725706e-20 3.642168861e-07 0.0009024769482 0.001892554096 -0.01206586759 8.026335216e-21 9.899031123e-08 0.0003836979351 0.0007961617298 -0.003370606528 +0.1047193091 0.00125941889 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.009290364787 0.002925770473 0.0001018493977 -0.0009523427445 0.004103743774 3.565068505e-05 -0.0003555272193 0.001488518883 -5.677693033e-05 1.871486839e-05 0.0004602204795 8.156881292e-05 -0.0005382132236 -1.913335516e-05 4.995118759e-06 0.0002099372045 2.859526204e-05 -0.0002379302336 +0.01069183357 0.003347419175 0.0001555109314 -0.001222784901 0.004715111214 3.691354793e-05 -0.0004520763289 0.001715109261 -4.372888835e-05 -2.455717143e-06 0.00056512442 0.0001477169994 -0.0007732039056 -1.742638199e-05 5.408797429e-07 0.0002288833764 5.649099277e-05 -0.0003099199766 +0.1047193091 0.00125941889 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 diff --git a/tests/09_DeePKS/NO_KP_deepks_UT/E_delta_bands_ref.dat b/tests/09_DeePKS/NO_KP_deepks_UT/E_delta_bands_ref.dat new file mode 100644 index 0000000000..8d8de91f86 --- /dev/null +++ b/tests/09_DeePKS/NO_KP_deepks_UT/E_delta_bands_ref.dat @@ -0,0 +1 @@ +-0.0398377061 diff --git a/tests/09_DeePKS/NO_KP_deepks_UT/E_delta_ref.dat b/tests/09_DeePKS/NO_KP_deepks_UT/E_delta_ref.dat new file mode 100644 index 0000000000..fa5ef95daf --- /dev/null +++ b/tests/09_DeePKS/NO_KP_deepks_UT/E_delta_ref.dat @@ -0,0 +1 @@ +-0.1774931848 diff --git a/tests/09_DeePKS/NO_KP_deepks_UT/F_delta_ref.dat b/tests/09_DeePKS/NO_KP_deepks_UT/F_delta_ref.dat new file mode 100644 index 0000000000..d536bd5cbf --- /dev/null +++ b/tests/09_DeePKS/NO_KP_deepks_UT/F_delta_ref.dat @@ -0,0 +1,3 @@ +-0.0004728929345 -0.0003772016596 0.0006485797214 +0.0004497844091 0.0003182658044 -0.0006969482618 +2.310852542e-05 5.893585522e-05 4.836854035e-05 diff --git a/tests/09_DeePKS/NO_KP_deepks_UT/INPUT b/tests/09_DeePKS/NO_KP_deepks_UT/INPUT new file mode 100644 index 0000000000..60ccf4b955 --- /dev/null +++ b/tests/09_DeePKS/NO_KP_deepks_UT/INPUT @@ -0,0 +1 @@ +gamma_only_local 0 diff --git a/tests/09_DeePKS/100_NO_KP_deepks_UT/KPT b/tests/09_DeePKS/NO_KP_deepks_UT/KPT similarity index 100% rename from tests/09_DeePKS/100_NO_KP_deepks_UT/KPT rename to tests/09_DeePKS/NO_KP_deepks_UT/KPT diff --git a/tests/09_DeePKS/NO_KP_deepks_UT/STRU b/tests/09_DeePKS/NO_KP_deepks_UT/STRU new file mode 100644 index 0000000000..743d25b561 --- /dev/null +++ b/tests/09_DeePKS/NO_KP_deepks_UT/STRU @@ -0,0 +1,31 @@ +ATOMIC_SPECIES +O 1.00 ../../PP_ORB/O_ONCV_PBE-1.0.upf +H 1.00 ../../PP_ORB/H_ONCV_PBE-1.0.upf + +LATTICE_CONSTANT +1 + +LATTICE_VECTORS +10 0 0 +0 10 0 +0 0 10 + +ATOMIC_POSITIONS +Direct # Cartesian(Unit is LATTICE_CONSTANT) + +O +0.0 +1 +-0.3230414703476 0.08341764682815 0.125126470242225 1 1 1 +H +0.0 +2 +-0.10349451100655 0.2561729216652 0.87770626909185 1 1 1 +-0.2473714095935 -0.0346105497687 0.63538026574395 1 1 1 + +NUMERICAL_ORBITAL +../../PP_ORB/O_gga_6au_60Ry_1s1p.orb +../../PP_ORB/H_gga_6au_60Ry_1s.orb + +NUMERICAL_DESCRIPTOR +jle.orb diff --git a/tests/09_DeePKS/NO_KP_deepks_UT/S_I_mu_alpha_ref.dat b/tests/09_DeePKS/NO_KP_deepks_UT/S_I_mu_alpha_ref.dat new file mode 100644 index 0000000000..e69de29bb2 diff --git a/tests/09_DeePKS/NO_KP_deepks_UT/descriptor_ref.dat b/tests/09_DeePKS/NO_KP_deepks_UT/descriptor_ref.dat new file mode 100644 index 0000000000..39af423b90 --- /dev/null +++ b/tests/09_DeePKS/NO_KP_deepks_UT/descriptor_ref.dat @@ -0,0 +1,15 @@ +O atom_index 1 n_descriptor 18 +1.829098073 0.003595392232 0.7211701876 1.156920446 1.253498837 0.04184356956 0.05595845307 0.05917886621 +-4.240006338e-20 1.797666149e-21 4.264533235e-06 1.745641376e-05 0.0003634039542 -3.627614412e-20 -1.520870249e-20 3.208308532e-06 +1.253973845e-05 0.0001501550505 + +H atom_index 1 n_descriptor 18 +0.4644558568 0.001878782073 0.0003374501873 0.001099743362 0.005247846845 0.0001282574426 0.0004126742367 0.002038460449 +8.118907832e-11 0.0001321652214 0.0002961810852 0.0003154778128 0.002013921078 1.832405564e-10 5.494959847e-05 0.0001230467995 +0.0001309944115 0.0008503941736 + +H atom_index 2 n_descriptor 18 +0.6269313444 0.0007429165505 2.850466544e-05 0.0002184540152 0.0006142492166 1.099437411e-05 8.357410571e-05 0.000232746058 +7.054511185e-07 2.449751213e-06 2.541855747e-05 7.660852787e-05 0.000138608511 3.099026595e-07 1.036509312e-06 1.270289915e-05 +3.815049394e-05 6.046192562e-05 + diff --git a/tests/09_DeePKS/NO_KP_deepks_UT/dm_0 b/tests/09_DeePKS/NO_KP_deepks_UT/dm_0 new file mode 100644 index 0000000000..e87ef1969f --- /dev/null +++ b/tests/09_DeePKS/NO_KP_deepks_UT/dm_0 @@ -0,0 +1,6 @@ + (2.238e-01,-1.355e-20) (5.098e-03,2.632e-03) (7.586e-03,-2.186e-03) (4.315e-03,-2.024e-03) (-1.329e-03,1.013e-02) (-3.376e-03,8.945e-03) + (5.098e-03,-2.632e-03) (1.238e-01,0.000e+00) (-2.064e-02,3.420e-02) (-1.097e-02,-2.711e-03) (6.743e-05,4.131e-02) (4.239e-02,3.303e-02) + (7.586e-03,2.186e-03) (-2.064e-02,-3.420e-02) (1.580e-01,-3.469e-18) (-9.144e-03,2.450e-03) (-4.588e-03,5.395e-02) (-3.210e-02,-1.488e-02) + (4.315e-03,2.024e-03) (-1.097e-02,2.711e-03) (-9.144e-03,-2.450e-03) (1.732e-01,0.000e+00) (-5.538e-03,4.401e-02) (3.619e-03,-3.993e-02) + (-1.329e-03,-1.013e-02) (6.743e-05,-4.131e-02) (-4.588e-03,-5.395e-02) (-5.538e-03,-4.401e-02) (7.861e-02,0.000e+00) (3.741e-02,6.338e-03) + (-3.376e-03,-8.945e-03) (4.239e-02,-3.303e-02) (-3.210e-02,1.488e-02) (3.619e-03,3.993e-02) (3.741e-02,-6.338e-03) (9.321e-02,-6.939e-18) \ No newline at end of file diff --git a/tests/09_DeePKS/NO_KP_deepks_UT/dm_1 b/tests/09_DeePKS/NO_KP_deepks_UT/dm_1 new file mode 100644 index 0000000000..d86fef02cd --- /dev/null +++ b/tests/09_DeePKS/NO_KP_deepks_UT/dm_1 @@ -0,0 +1,6 @@ + (2.238e-01,-1.355e-20) (4.983e-03,2.765e-03) (7.827e-03,-2.447e-03) (4.101e-03,-1.915e-03) (-1.276e-03,1.003e-02) (-3.268e-03,8.676e-03) + (4.983e-03,-2.765e-03) (1.245e-01,0.000e+00) (-2.116e-02,3.606e-02) (-1.041e-02,-3.838e-03) (6.115e-04,4.073e-02) (4.359e-02,3.460e-02) + (7.827e-03,2.447e-03) (-2.116e-02,-3.606e-02) (1.558e-01,0.000e+00) (-9.585e-03,2.077e-03) (-6.130e-03,5.604e-02) (-3.258e-02,-1.451e-02) + (4.101e-03,1.915e-03) (-1.041e-02,3.838e-03) (-9.585e-03,-2.077e-03) (1.736e-01,1.388e-17) (-4.854e-03,4.307e-02) (4.437e-03,-3.962e-02) + (-1.276e-03,-1.003e-02) (6.115e-04,-4.073e-02) (-6.130e-03,-5.604e-02) (-4.854e-03,-4.307e-02) (7.832e-02,8.674e-19) (3.640e-02,6.451e-03) + (-3.268e-03,-8.676e-03) (4.359e-02,-3.460e-02) (-3.258e-02,1.451e-02) (4.437e-03,3.962e-02) (3.640e-02,-6.451e-03) (9.092e-02,0.000e+00) \ No newline at end of file diff --git a/tests/09_DeePKS/NO_KP_deepks_UT/dm_2 b/tests/09_DeePKS/NO_KP_deepks_UT/dm_2 new file mode 100644 index 0000000000..499d914273 --- /dev/null +++ b/tests/09_DeePKS/NO_KP_deepks_UT/dm_2 @@ -0,0 +1,6 @@ + (2.237e-01,1.355e-20) (5.014e-03,2.737e-03) (7.910e-03,-1.819e-03) (4.100e-03,-1.979e-03) (-1.316e-03,9.987e-03) (-3.191e-03,8.669e-03) + (5.014e-03,-2.737e-03) (1.245e-01,0.000e+00) (-2.374e-02,3.316e-02) (-1.019e-02,-3.581e-03) (-1.858e-04,4.101e-02) (4.301e-02,3.495e-02) + (7.910e-03,1.819e-03) (-2.374e-02,-3.316e-02) (1.568e-01,-1.735e-18) (-9.315e-03,3.031e-03) (-2.810e-03,5.622e-02) (-3.244e-02,-1.297e-02) + (4.100e-03,1.979e-03) (-1.019e-02,3.581e-03) (-9.315e-03,-3.031e-03) (1.735e-01,0.000e+00) (-5.647e-03,4.295e-02) (4.147e-03,-3.979e-02) + (-1.316e-03,-9.987e-03) (-1.858e-04,-4.101e-02) (-2.810e-03,-5.622e-02) (-5.647e-03,-4.295e-02) (7.824e-02,0.000e+00) (3.621e-02,5.585e-03) + (-3.191e-03,-8.669e-03) (4.301e-02,-3.495e-02) (-3.244e-02,1.297e-02) (4.147e-03,3.979e-02) (3.621e-02,-5.585e-03) (9.097e-02,0.000e+00) \ No newline at end of file diff --git a/tests/09_DeePKS/NO_KP_deepks_UT/dm_3 b/tests/09_DeePKS/NO_KP_deepks_UT/dm_3 new file mode 100644 index 0000000000..cc1bd73d0c --- /dev/null +++ b/tests/09_DeePKS/NO_KP_deepks_UT/dm_3 @@ -0,0 +1,6 @@ + (2.238e-01,-6.776e-21) (5.317e-03,2.920e-03) (7.686e-03,-2.116e-03) (4.529e-03,-2.285e-03) (-1.101e-03,1.008e-02) (9.002e-03,-1.057e-03) + (5.317e-03,-2.920e-03) (1.230e-01,0.000e+00) (-2.050e-02,3.402e-02) (-1.035e-02,-1.824e-03) (8.639e-04,4.223e-02) (9.806e-03,-5.634e-02) + (7.686e-03,2.116e-03) (-2.050e-02,-3.402e-02) (1.573e-01,0.000e+00) (-1.203e-02,4.525e-03) (-4.191e-03,5.466e-02) (4.472e-03,3.463e-02) + (4.529e-03,2.285e-03) (-1.035e-02,1.824e-03) (-1.203e-02,-4.525e-03) (1.727e-01,0.000e+00) (-7.029e-03,4.637e-02) (-3.794e-02,1.772e-02) + (-1.101e-03,-1.008e-02) (8.639e-04,-4.223e-02) (-4.191e-03,-5.466e-02) (-7.029e-03,-4.637e-02) (7.882e-02,-4.337e-19) (-9.868e-03,-3.321e-02) + (9.002e-03,1.057e-03) (9.806e-03,5.634e-02) (4.472e-03,-3.463e-02) (-3.794e-02,-1.772e-02) (-9.868e-03,3.321e-02) (9.208e-02,3.469e-18) \ No newline at end of file diff --git a/tests/09_DeePKS/NO_KP_deepks_UT/dm_4 b/tests/09_DeePKS/NO_KP_deepks_UT/dm_4 new file mode 100644 index 0000000000..68896ecc8a --- /dev/null +++ b/tests/09_DeePKS/NO_KP_deepks_UT/dm_4 @@ -0,0 +1,6 @@ + (2.237e-01,1.355e-20) (5.191e-03,3.035e-03) (7.922e-03,-2.374e-03) (4.308e-03,-2.162e-03) (-1.059e-03,9.980e-03) (8.724e-03,-1.054e-03) + (5.191e-03,-3.035e-03) (1.240e-01,3.469e-18) (-2.098e-02,3.575e-02) (-9.859e-03,-3.049e-03) (1.367e-03,4.157e-02) (1.048e-02,-5.793e-02) + (7.922e-03,2.374e-03) (-2.098e-02,-3.575e-02) (1.553e-01,0.000e+00) (-1.243e-02,4.043e-03) (-5.691e-03,5.671e-02) (5.008e-03,3.492e-02) + (4.308e-03,2.162e-03) (-9.859e-03,3.049e-03) (-1.243e-02,-4.043e-03) (1.733e-01,1.388e-17) (-6.243e-03,4.537e-02) (-3.803e-02,1.684e-02) + (-1.059e-03,-9.980e-03) (1.367e-03,-4.157e-02) (-5.691e-03,-5.671e-02) (-6.243e-03,-4.537e-02) (7.849e-02,0.000e+00) (-9.541e-03,-3.243e-02) + (8.724e-03,1.054e-03) (1.048e-02,5.793e-02) (5.008e-03,-3.492e-02) (-3.803e-02,-1.684e-02) (-9.541e-03,3.243e-02) (8.975e-02,0.000e+00) \ No newline at end of file diff --git a/tests/09_DeePKS/NO_KP_deepks_UT/dm_5 b/tests/09_DeePKS/NO_KP_deepks_UT/dm_5 new file mode 100644 index 0000000000..0a97963a7c --- /dev/null +++ b/tests/09_DeePKS/NO_KP_deepks_UT/dm_5 @@ -0,0 +1,6 @@ + (2.237e-01,0.000e+00) (5.220e-03,3.001e-03) (7.996e-03,-1.748e-03) (4.302e-03,-2.235e-03) (-1.099e-03,9.943e-03) (8.701e-03,-1.104e-03) + (5.220e-03,-3.001e-03) (1.240e-01,-3.469e-18) (-2.349e-02,3.300e-02) (-9.595e-03,-2.716e-03) (5.578e-04,4.186e-02) (1.100e-02,-5.759e-02) + (7.996e-03,1.748e-03) (-2.349e-02,-3.300e-02) (1.562e-01,-1.735e-18) (-1.203e-02,5.156e-03) (-2.406e-03,5.683e-02) (6.254e-03,3.394e-02) + (4.302e-03,2.235e-03) (-9.595e-03,2.716e-03) (-1.203e-02,-5.156e-03) (1.732e-01,0.000e+00) (-7.140e-03,4.518e-02) (-3.804e-02,1.717e-02) + (-1.099e-03,-9.943e-03) (5.578e-04,-4.186e-02) (-2.406e-03,-5.683e-02) (-7.140e-03,-4.518e-02) (7.843e-02,0.000e+00) (-1.007e-02,-3.200e-02) + (8.701e-03,1.104e-03) (1.100e-02,5.759e-02) (6.254e-03,-3.394e-02) (-3.804e-02,-1.717e-02) (-1.007e-02,3.200e-02) (8.982e-02,3.469e-18) \ No newline at end of file diff --git a/tests/09_DeePKS/NO_KP_deepks_UT/dm_6 b/tests/09_DeePKS/NO_KP_deepks_UT/dm_6 new file mode 100644 index 0000000000..a98bf7cfcd --- /dev/null +++ b/tests/09_DeePKS/NO_KP_deepks_UT/dm_6 @@ -0,0 +1,6 @@ + (2.237e-01,6.776e-21) (5.359e-03,3.030e-03) (7.818e-03,-2.202e-03) (4.563e-03,-1.839e-03) (-1.321e-03,9.810e-03) (-5.778e-03,-6.579e-03) + (5.359e-03,-3.030e-03) (1.220e-01,0.000e+00) (-2.086e-02,3.367e-02) (-1.365e-02,-5.250e-03) (1.170e-03,4.234e-02) (-5.404e-02,1.841e-02) + (7.818e-03,2.202e-03) (-2.086e-02,-3.367e-02) (1.588e-01,-1.735e-18) (-1.068e-02,1.657e-03) (-4.566e-03,5.476e-02) (2.869e-02,-2.310e-02) + (4.563e-03,1.839e-03) (-1.365e-02,5.250e-03) (-1.068e-02,-1.657e-03) (1.735e-01,0.000e+00) (-4.430e-03,4.647e-02) (3.270e-02,2.406e-02) + (-1.321e-03,-9.810e-03) (1.170e-03,-4.234e-02) (-4.566e-03,-5.476e-02) (-4.430e-03,-4.647e-02) (7.798e-02,0.000e+00) (-1.994e-02,2.774e-02) + (-5.778e-03,6.579e-03) (-5.404e-02,-1.841e-02) (2.869e-02,2.310e-02) (3.270e-02,-2.406e-02) (-1.994e-02,-2.774e-02) (8.971e-02,0.000e+00) \ No newline at end of file diff --git a/tests/09_DeePKS/NO_KP_deepks_UT/dm_7 b/tests/09_DeePKS/NO_KP_deepks_UT/dm_7 new file mode 100644 index 0000000000..4173b9a7df --- /dev/null +++ b/tests/09_DeePKS/NO_KP_deepks_UT/dm_7 @@ -0,0 +1,6 @@ + (2.237e-01,-6.776e-20) (5.218e-03,3.122e-03) (8.034e-03,-2.464e-03) (4.330e-03,-1.730e-03) (-1.276e-03,9.732e-03) (-5.629e-03,-6.397e-03) + (5.218e-03,-3.122e-03) (1.231e-01,3.469e-18) (-2.138e-02,3.539e-02) (-1.302e-02,-6.311e-03) (1.583e-03,4.165e-02) (-5.557e-02,1.880e-02) + (8.034e-03,2.464e-03) (-2.138e-02,-3.539e-02) (1.568e-01,0.000e+00) (-1.106e-02,1.185e-03) (-6.135e-03,5.672e-02) (2.862e-02,-2.353e-02) + (4.330e-03,1.730e-03) (-1.302e-02,6.311e-03) (-1.106e-02,-1.185e-03) (1.740e-01,0.000e+00) (-3.740e-03,4.540e-02) (3.197e-02,2.466e-02) + (-1.276e-03,-9.732e-03) (1.583e-03,-4.165e-02) (-6.135e-03,-5.672e-02) (-3.740e-03,-4.540e-02) (7.774e-02,0.000e+00) (-1.975e-02,2.702e-02) + (-5.629e-03,6.397e-03) (-5.557e-02,-1.880e-02) (2.862e-02,2.353e-02) (3.197e-02,-2.466e-02) (-1.975e-02,-2.702e-02) (8.760e-02,-8.674e-19) \ No newline at end of file diff --git a/tests/09_DeePKS/NO_KP_deepks_UT/dm_8 b/tests/09_DeePKS/NO_KP_deepks_UT/dm_8 new file mode 100644 index 0000000000..bd54e807ca --- /dev/null +++ b/tests/09_DeePKS/NO_KP_deepks_UT/dm_8 @@ -0,0 +1,6 @@ + (2.237e-01,5.421e-20) (5.254e-03,3.102e-03) (8.121e-03,-1.834e-03) (4.332e-03,-1.800e-03) (-1.306e-03,9.688e-03) (-5.636e-03,-6.329e-03) + (5.254e-03,-3.102e-03) (1.230e-01,0.000e+00) (-2.382e-02,3.257e-02) (-1.279e-02,-6.014e-03) (8.039e-04,4.195e-02) (-5.572e-02,1.812e-02) + (8.121e-03,1.834e-03) (-2.382e-02,-3.257e-02) (1.576e-01,0.000e+00) (-1.092e-02,2.253e-03) (-2.822e-03,5.695e-02) (2.712e-02,-2.417e-02) + (4.332e-03,1.800e-03) (-1.279e-02,6.014e-03) (-1.092e-02,-2.253e-03) (1.739e-01,0.000e+00) (-4.613e-03,4.533e-02) (3.223e-02,2.451e-02) + (-1.306e-03,-9.688e-03) (8.039e-04,-4.195e-02) (-2.822e-03,-5.695e-02) (-4.613e-03,-4.533e-02) (7.767e-02,-8.674e-19) (-1.898e-02,2.707e-02) + (-5.636e-03,6.329e-03) (-5.572e-02,-1.812e-02) (2.712e-02,2.417e-02) (3.223e-02,-2.451e-02) (-1.898e-02,-2.707e-02) (8.758e-02,0.000e+00) \ No newline at end of file diff --git a/tests/09_DeePKS/NO_KP_deepks_UT/dphialpha_x_ref.dat b/tests/09_DeePKS/NO_KP_deepks_UT/dphialpha_x_ref.dat new file mode 100644 index 0000000000..39c36de04a --- /dev/null +++ b/tests/09_DeePKS/NO_KP_deepks_UT/dphialpha_x_ref.dat @@ -0,0 +1,183 @@ +iat : 0 +ad : 20 5.094192361 +R : 0 -1 -1 +iw : 5 +0.002436850725 -0.001356070563 -0.001587305472 0.002296148589 0.0003825385488 0.001299025481 +-0.001380106431 -0.0003130634469 0.0008855939637 -0.001082643662 -0.000335083815 -0.0002242517046 +0.0002609157106 -0.000338300133 0.0009766848463 0.0001066701404 0.0001690432977 -0.0002353797742 + +ad : 23 5.291649545 +R : 0 -1 0 +iw : 5 +0.00202013382 -0.0009999132266 0.001323806415 0.001953668099 0.0003062132711 -0.001174147046 +-0.001070101475 -0.0002715951543 0.0004930624289 0.0009563448048 0.0001673745368 -0.00016913953 +0.0002212147242 -0.0003421386333 -0.0009019964257 -0.0001078337938 0.000151362979 -0.0002086432524 + +ad : 27 3.731782527 +R : 0 0 -1 +iw : 4 +0.03274296968 -0.01841626388 -0.02242684549 -0.008214510619 -0.01565901183 0.01356904138 +0.004915977116 0.009474260637 0.007178516761 0.008267839954 0.01200413491 -0.003622828914 +0.00577282274 -0.004565885898 -0.005114314892 -0.00755739492 0.002361412511 -0.003570948818 + +ad : 29 8.027587471 +R : 0 0 0 +iw : 4 +-4.30155299e-10 8.585643556e-10 -9.969046797e-10 2.898267394e-10 2.288402402e-10 1.709280364e-09 +-4.969328883e-10 -3.923666293e-10 -1.438491983e-09 7.777130357e-10 6.140644174e-10 -4.256996934e-11 +-1.785246288e-10 2.262305401e-09 -1.223101889e-09 -9.65734341e-10 6.694906241e-11 2.807639844e-10 + +ad : 49 0 +R : 0 0 0 +iw : 0 +0 0 0 0.6352565802 0 0 +-0.1192854802 0 0 0 0 0 +0 0 0 0 0 0 + +iw : 1 +0 0 0 0 0 0 +0 0 0 0.8035776717 0 0 +0 0 0.3531341943 0 0 0 + +iw : 2 +-0.7203491342 -0.8266768175 0 0 0 0 +0 0 -0.4639457851 0 0 0.8035776717 +0 -0.2038821222 0 0 0.3531341943 0 + +iw : 3 +0 0 0 0 0 0 +0 0 0 0 0 0 +0.8035776717 0 0 0 0 0.3531341943 + +iat : 1 +ad : 16 4.049413304 +R : 0 -1 0 +iw : 5 +-0.01428133181 0.008154055683 0.008455965221 0.002718467402 -0.01014688844 -0.005089298708 +-0.001706681347 0.006106996051 -0.001727710988 -0.000623291416 0.006896406624 0.005520792751 +0.0007479298101 0.001119371361 0.0003504252216 -0.004551511217 -0.003607449416 -0.0004204990839 + +ad : 22 8.027587471 +R : 0 0 0 +iw : 0 +1.174112446e-10 -2.343459212e-10 -2.721052843e-10 7.910851958e-11 6.246197845e-11 4.665485107e-10 +-1.356384077e-10 -1.070965714e-10 3.926370399e-10 -2.122778998e-10 -1.676092126e-10 1.161970281e-11 +4.872855606e-11 -6.174973731e-10 3.33847448e-10 2.63597742e-10 -1.827410186e-11 -7.663493986e-11 + +iw : 1 +3.242867407e-10 -6.47256243e-10 -7.51426262e-10 2.187197394e-10 1.726957004e-10 1.288385418e-09 +-3.750135611e-10 -2.961016967e-10 1.083420242e-09 -5.863967335e-10 -4.630049999e-10 3.212908462e-11 +1.347380844e-10 -1.703887459e-09 9.222208918e-10 7.281645791e-10 -5.052888652e-11 -2.119013548e-10 + +iw : 2 +-9.427878576e-11 1.881744911e-10 2.187197394e-10 -6.269294983e-11 -5.020728532e-11 -3.750135611e-10 +1.074924682e-10 8.608465297e-11 -3.159619944e-10 1.68693312e-10 1.347380844e-10 -8.772733914e-12 +-3.872368022e-11 4.969105308e-10 -2.653024644e-10 -2.119013548e-10 1.379681951e-11 6.090038588e-11 + +iw : 3 +-7.444027212e-11 1.485781711e-10 1.726957004e-10 -5.020728532e-11 -3.874842073e-11 -2.961016967e-10 +8.608465297e-11 6.643769487e-11 -2.494755832e-10 1.347380844e-10 1.044351427e-10 -7.823065721e-12 +-3.036177213e-11 3.923483814e-10 -2.119013548e-10 -1.642446914e-10 1.230313762e-11 4.774978615e-11 + +ad : 23 7.631582655 +R : 0 0 0 +iw : 5 +-1.585429048e-05 3.049633741e-05 1.209228827e-05 -5.345815632e-06 3.539055072e-05 -1.972959603e-05 +8.681920644e-06 -5.774269131e-05 2.013627693e-05 4.562027749e-06 -3.030622342e-05 4.346522738e-05 +1.335170571e-05 -2.971621693e-05 -6.694590026e-06 4.474573901e-05 -6.419876329e-05 -1.959308466e-05 + +ad : 24 3.731782527 +R : 0 0 1 +iw : 0 +-0.02182834346 0.01472431413 -0.01894692123 -0.009384945339 -0.01322923742 0.0126026897 +0.006214447081 0.008799528547 -0.006613904554 -0.009871092467 -0.01227415253 0.002446705887 +-0.006892255702 0.004473128468 0.006593542025 0.008256831461 -0.001687383465 0.004603784005 + +iw : 1 +0.03796727256 -0.02116113731 0.02223091059 0.0168383499 0.02393809878 -0.01309517658 +-0.009864480805 -0.01425872036 0.00142976457 0.01393817797 0.01646423103 -0.004562654689 +0.01301564937 -0.000829564338 -0.008563756697 -0.01022323848 0.002967611658 -0.008055419031 + +iw : 2 +0.01491360757 -0.007947672629 0.0168383499 -0.00916508369 0.01175697761 -0.009864480805 +0.005899151169 -0.006887639266 0.01149749951 -0.002511588119 0.01301564937 -0.01036110083 +-0.00175365671 -0.007242964704 0.001909605952 -0.008055419031 0.006632712107 0.001333336969 + +iw : 3 +0.02650974567 -0.01477526118 0.02393809878 0.01175697761 0.004660960653 -0.01425872036 +-0.006887639266 -0.002629641907 0.01251905044 0.01301564937 0.006613721258 0.003465743675 +0.004385025484 -0.007924215802 -0.008055419031 -0.004025617364 -0.002168568929 -0.002651285939 + +ad : 48 0 +R : 0 0 0 +iw : 4 +0 0 0 0.548393889 0 0 +0.08221087957 0 0 0 0 0 +0 0 0 0 0 0 + +iat : 2 +ad : 19 7.631582655 +R : 0 0 0 +iw : 4 +1.585429048e-05 -3.049633741e-05 1.209228827e-05 -5.345815632e-06 3.539055072e-05 -1.972959603e-05 +8.681920644e-06 -5.774269131e-05 -2.013627693e-05 -4.562027749e-06 3.030622342e-05 -4.346522738e-05 +-1.335170571e-05 2.971621693e-05 6.694590026e-06 -4.474573901e-05 6.419876329e-05 1.959308466e-05 + +ad : 25 5.291649545 +R : 0 1 0 +iw : 0 +-0.0006212528878 0.000396584521 0.0006178283596 0.0005318729525 0.0001429115623 -0.0004715591947 +-0.0003375220846 -0.000109077643 -0.0004129106259 -0.0004207684521 -0.0001534142184 8.743590934e-05 +-9.732909784e-05 0.000268305054 0.0003357644492 9.751379395e-05 -6.570724558e-05 7.766659018e-05 + +iw : 1 +-0.002351174781 0.001293165971 0.002124326822 0.002078921731 0.0005753513687 -0.001538109613 +-0.001221711874 -0.0004066361847 -0.001215562149 -0.001504842201 -0.0005090208764 0.0003599811763 +-0.0004130624435 0.0007807143728 0.001161527831 0.0003271912641 -0.0002608180773 0.0003097048241 + +iw : 2 +-0.001827523849 0.001063548981 0.002078921731 -0.00103431066 0.0004808810536 -0.001221711874 +0.000620859076 -0.0002825975045 -0.001126824251 0.0009053450199 -0.0004130624435 0.0002615318602 +0.0002094178249 0.000826134357 -0.0006682182599 0.0003097048241 -0.0001636444191 -0.0001545673875 + +iw : 3 +-0.0005438566488 0.0002991257465 0.0005753513687 0.0004808810536 -0.000229918316 -0.0004066361847 +-0.0002825975045 0.0001257801642 -0.0004094862688 -0.0004130624435 0.0001853826674 9.18767869e-06 +0.0001853427925 0.000274672865 0.0003097048241 -0.0001465821053 -6.011293993e-06 -0.0001057344305 + +ad : 26 4.049413304 +R : 0 1 0 +iw : 4 +0.01428133181 -0.008154055683 0.008455965221 0.002718467402 -0.01014688844 -0.005089298708 +-0.001706681347 0.006106996051 0.001727710988 0.000623291416 -0.006896406624 -0.005520792751 +-0.0007479298101 -0.001119371361 -0.0003504252216 0.004551511217 0.003607449416 0.0004204990839 + +ad : 28 5.094192361 +R : 0 1 1 +iw : 0 +-0.0008279175926 0.0005568542785 -0.0008460043084 0.0006891508918 0.000203885935 0.0006142250623 +-0.000458814061 -0.000148027439 -0.000624221249 0.0005620365148 0.0002438054346 0.0001282934285 +-0.0001354500671 0.0003800933256 -0.0004223542268 -0.0001454195742 -8.998289147e-05 0.0001017868179 + +iw : 1 +0.003004370516 -0.001740221772 0.00270321447 -0.002605685336 -0.0007668032738 -0.001857886771 +0.001608230119 0.0005200480349 0.001752157662 -0.001860047339 -0.0007670637638 -0.0004914481519 +0.0005356566206 -0.0009584202952 0.001377086421 0.0004202309693 0.0003332178458 -0.0003892316157 + +iw : 2 +-0.00243404529 0.001395094002 -0.002605685336 -0.001359719606 0.0006279667679 0.001608230119 +0.0008484868612 -0.0003875813613 -0.001401689034 -0.001202740388 0.0005356566206 0.0003342355644 +0.000289858865 0.001005051193 0.0008461272896 -0.0003892316157 -0.0002195263574 -0.0002039155733 + +iw : 3 +-0.0007240493762 0.0004193911777 -0.0007668032738 0.0006279667679 -0.0002937604814 0.0005200480349 +-0.0003875813613 0.0001746696714 -0.0006016173589 0.0005356566206 -0.0002198440844 1.48907966e-05 +0.0002335137202 0.0003554915135 -0.0003892316157 0.0001796915981 -8.417179544e-06 -0.0001441869517 + +ad : 47 0 +R : 0 0 0 +iw : 5 +0 0 0 0.548393889 0 0 +0.08221087957 0 0 0 0 0 +0 0 0 0 0 0 + diff --git a/tests/09_DeePKS/NO_KP_deepks_UT/dphialpha_y_ref.dat b/tests/09_DeePKS/NO_KP_deepks_UT/dphialpha_y_ref.dat new file mode 100644 index 0000000000..c4a36d03b0 --- /dev/null +++ b/tests/09_DeePKS/NO_KP_deepks_UT/dphialpha_y_ref.dat @@ -0,0 +1,183 @@ +iat : 0 +ad : 20 5.094192361 +R : 0 -1 -1 +iw : 5 +-0.003800936508 0.002115163665 0.002475837874 0.0003825385488 0.001944727432 -0.002026186227 +-0.0003130634469 -0.001092508961 -0.001381326477 -0.000335083815 -0.0007748170589 -0.0002755961781 +-0.0001197159945 0.0005276717663 0.0001066701404 0.0008786917309 0.0002400531349 0.0001357655374 + +ad : 23 5.291649545 +R : 0 -1 0 +iw : 5 +-0.003150952296 0.001559638696 -0.002064838884 0.0003062132711 0.001672363581 0.001831404084 +-0.0002715951543 -0.0008205990824 -0.0007690659782 0.0001673745368 0.0008025852594 -0.0002282529089 +-0.0001190224862 0.0005336589593 -0.0001078337938 -0.0008029343137 0.0002131777185 0.0001190742506 + +ad : 27 3.731782527 +R : 0 0 -1 +iw : 4 +0.02576451409 -0.01449123567 -0.01764704858 -0.01565901183 -0.0006358044361 0.01067709377 +0.009474260637 0.0003305895803 0.00564857122 0.01200413491 0.002458034554 0.006907259845 +0.002181123489 -0.003592766102 -0.00755739492 -0.001456659081 -0.004411999759 -0.001292558452 + +ad : 29 8.027587471 +R : 0 0 0 +iw : 4 +-3.384770034e-10 6.755799381e-10 -7.844360152e-10 2.288402402e-10 1.790717976e-10 1.344984234e-09 +-3.923666293e-10 -3.070338428e-10 -1.131908538e-09 6.140644174e-10 4.805158787e-10 -3.472473585e-11 +-1.40178889e-10 1.780143949e-09 -9.65734341e-10 -7.557022276e-10 5.461163546e-11 2.204578524e-10 + +ad : 49 0 +R : 0 0 0 +iw : 0 +0 0 0 0 0.6352565802 0 +0 -0.1192854802 0 0 0 0 +0 0 0 0 0 0 + +iw : 1 +0 0 0 0 0 0 +0 0 0 0 0.8035776717 0 +0 0 0 0.3531341943 0 0 + +iw : 2 +0 0 0 0 0 0 +0 0 0 0 0 0 +0.8035776717 0 0 0 0 0.3531341943 + +iw : 3 +-0.7203491342 -0.8266768175 0 0 0 0 +0 0 -0.4639457851 0 0 -0.8035776717 +0 -0.2038821222 0 0 -0.3531341943 0 + +iat : 1 +ad : 16 4.049413304 +R : 0 -1 0 +iw : 5 +-0.02886339143 0.01647981463 0.01708999113 -0.01014688844 -0.01276839264 -0.01028576484 +0.006106996051 0.007614224634 -0.003491803087 0.006896406624 0.009902465799 0.001472733706 +-0.005879418832 0.002262313779 -0.004551511217 -0.006596395731 -0.001045101113 0.003916496565 + +ad : 22 8.027587471 +R : 0 0 0 +iw : 0 +9.238757803e-11 -1.844001581e-10 -2.141119299e-10 6.246197845e-11 4.887794134e-11 3.671137894e-10 +-1.070965714e-10 -8.380541481e-11 3.089549495e-10 -1.676092126e-10 -1.311577761e-10 9.477972564e-12 +3.826210986e-11 -4.858911675e-10 2.63597742e-10 2.062704425e-10 -1.490602785e-11 -6.01744141e-11 + +iw : 1 +2.551720379e-10 -5.093075781e-10 -5.912760113e-10 1.726957004e-10 1.351378386e-10 1.01379394e-09 +-2.961016967e-10 -2.317051721e-10 8.52512657e-10 -4.630049999e-10 -3.623098695e-10 2.620759871e-11 +1.0579746e-10 -1.340740711e-09 7.281645791e-10 5.698011186e-10 -4.121671892e-11 -1.663865903e-10 + +iw : 2 +-7.444027212e-11 1.485781711e-10 1.726957004e-10 -4.967632312e-11 -3.942319685e-11 -2.961016967e-10 +8.517448911e-11 6.759438144e-11 -2.494755832e-10 1.336661156e-10 1.0579746e-10 -7.197623739e-12 +-3.051312399e-11 3.923483814e-10 -2.102159553e-10 -1.663865903e-10 1.13197885e-11 4.798774861e-11 + +iw : 3 +-5.825090886e-11 1.16265081e-10 1.351378386e-10 -3.942319685e-11 -3.014501397e-11 -2.317051721e-10 +6.759438144e-11 5.168622268e-11 -1.952198833e-10 1.0579746e-10 8.125091814e-11 -6.334011089e-12 +-2.370299076e-11 3.07020317e-10 -1.663865903e-10 -1.277825175e-10 9.96141804e-12 3.727745976e-11 + +ad : 23 7.631582655 +R : 0 0 0 +iw : 5 +7.81510094e-05 -0.0001503264719 -5.96068639e-05 3.539055072e-05 -0.0001726178855 9.725366439e-05 +-5.774269131e-05 0.0002816005189 -9.925832824e-05 -3.030622342e-05 0.0001478032212 -0.0002049702068 +-8.775562165e-05 0.0001464810016 4.474573901e-05 -0.0002181835957 0.0003025089505 0.0001295427591 + +ad : 24 3.731782527 +R : 0 0 1 +iw : 0 +-0.01717610431 0.01158614513 -0.01490879488 -0.01322923742 -0.002982210317 0.00991669905 +0.008799528547 0.001955618866 -0.005204293889 -0.01227415253 -0.003930602947 -0.006073049077 +-0.003487798981 0.003519777911 0.008256831461 0.002597370343 0.004117986083 0.002304762337 + +iw : 1 +0.02987536983 -0.01665109872 0.01749287296 0.02393809878 0.005252700739 -0.010304223 +-0.01425872036 -0.002963492844 0.001125041185 0.01646423103 0.005969758831 0.01140172789 +0.00661371538 -0.0006527606469 -0.01022323848 -0.003615876106 -0.007222907081 -0.004025613895 + +iw : 2 +0.02650974567 -0.01477526118 0.02393809878 0.01175698189 0.00466095521 -0.01425872036 +-0.00688764145 -0.002629639132 0.01251905044 0.013015654 0.00661371538 0.003465751885 +0.004385023498 -0.007924215802 -0.00805542176 -0.004025613895 -0.002168573773 -0.002651284766 + +iw : 3 +0.002083323287 -0.0007966873394 0.005252700739 0.00466095521 -0.01530114855 -0.002963492844 +-0.002629639132 0.009460325548 0.005438483403 0.00661371538 -0.00978780179 0.007834994237 +-0.00868515227 -0.003407773572 -0.004025613895 0.006390392401 -0.004937845628 0.00567047967 + +ad : 48 0 +R : 0 0 0 +iw : 4 +0 0 0 0 0.548393889 0 +0 0.08221087957 0 0 0 0 +0 0 0 0 0 0 + +iat : 2 +ad : 19 7.631582655 +R : 0 0 0 +iw : 4 +-7.81510094e-05 0.0001503264719 -5.96068639e-05 3.539055072e-05 -0.0001726178855 9.725366439e-05 +-5.774269131e-05 0.0002816005189 9.925832824e-05 3.030622342e-05 -0.0001478032212 0.0002049702068 +8.775562165e-05 -0.0001464810016 -4.474573901e-05 0.0002181835957 -0.0003025089505 -0.0001295427591 + +ad : 25 5.291649545 +R : 0 1 0 +iw : 0 +0.0009690141285 -0.0006185822418 -0.0009636726384 0.0001429115623 0.0004005864541 0.0007355257916 +-0.000109077643 -0.0002373173037 0.0006440472763 -0.0001534142184 -0.0002798336305 0.000103780244 +4.14990109e-05 -0.0004184952588 9.751379395e-05 0.0002461828622 -8.176709497e-05 -3.650864002e-05 + +iw : 1 +0.003667301393 -0.002017046715 -0.003313469836 0.0005753513687 0.001550372009 0.00239910345 +-0.0004066361847 -0.0008481532903 0.001896002287 -0.0005090208764 -0.001037227353 0.0004375821559 +0.0001853828162 -0.001217738014 0.0003271912641 0.0008609517634 -0.0003257475357 -0.0001465821886 + +iw : 2 +-0.0005438566488 0.0002991257465 0.0005753513687 0.0004808808986 -0.0002299184154 -0.0004066361847 +-0.0002825974897 0.0001257801737 -0.0004094862688 -0.0004130622114 0.0001853828162 9.187609849e-06 +0.0001853428241 0.000274672865 0.0003097046942 -0.0001465821886 -6.011255452e-06 -0.0001057344482 + +iw : 3 +-0.001327906926 0.000788755457 0.001550372009 -0.0002299184154 0.001491030643 -0.0008481532903 +0.0001257801737 -0.0008819910167 -0.0007506474215 0.0001853828162 -0.001288226523 -7.758929556e-05 +0.0001910425363 0.000573804608 -0.0001465821886 0.0009611997657 2.717252309e-05 -0.0001425448381 + +ad : 26 4.049413304 +R : 0 1 0 +iw : 4 +0.02886339143 -0.01647981463 0.01708999113 -0.01014688844 -0.01276839264 -0.01028576484 +0.006106996051 0.007614224634 0.003491803087 -0.006896406624 -0.009902465799 -0.001472733706 +0.005879418832 -0.002262313779 0.004551511217 0.006596395731 0.001045101113 -0.003916496565 + +ad : 28 5.094192361 +R : 0 1 1 +iw : 0 +0.001291364371 -0.0008685668493 0.00131957556 0.000203885935 0.0005018499481 -0.0009580523087 +-0.000148027439 -0.0003228278341 0.0009736441013 0.0002438054346 0.0003380633017 0.0001461315074 +5.223372911e-05 -0.0005928597032 -0.0001454195742 -0.0002887637295 -0.0001081578428 -4.461651515e-05 + +iw : 1 +-0.004686139146 0.002714352749 -0.004216403763 -0.0007668032738 -0.001901257261 0.00289788356 +0.0005200480349 0.001130485111 -0.002732970041 -0.0007670637638 -0.001155379963 -0.0005737992606 +-0.0002198445422 0.001494919099 0.0004202309693 0.0009910389131 0.0004107919972 0.0001796920956 + +iw : 2 +-0.0007240493762 0.0004193911777 -0.0007668032738 0.0006279662213 -0.0002937608319 0.0005200480349 +-0.0003875811434 0.0001746698111 -0.0006016173589 0.0005356559066 -0.0002198445422 1.489057596e-05 +0.0002335138215 0.0003554915135 -0.0003892308397 0.0001796920956 -8.416939741e-06 -0.0001441870619 + +iw : 3 +-0.001768893319 0.001009817973 -0.001901257261 -0.0002937608319 0.001951089099 0.001130485111 +0.0001746698111 -0.001208311858 -0.0008490099149 -0.0002198445422 0.001683254428 -8.163452377e-05 +0.0002600774925 0.0006784769446 0.0001796920956 -0.001210814834 3.993056479e-05 -0.0001870814541 + +ad : 47 0 +R : 0 0 0 +iw : 5 +0 0 0 0 0.548393889 0 +0 0.08221087957 0 0 0 0 +0 0 0 0 0 0 + diff --git a/tests/09_DeePKS/NO_KP_deepks_UT/dphialpha_z_ref.dat b/tests/09_DeePKS/NO_KP_deepks_UT/dphialpha_z_ref.dat new file mode 100644 index 0000000000..daaa1b4bd6 --- /dev/null +++ b/tests/09_DeePKS/NO_KP_deepks_UT/dphialpha_z_ref.dat @@ -0,0 +1,183 @@ +iat : 0 +ad : 20 5.094192361 +R : 0 -1 -1 +iw : 5 +-0.01577160613 0.008776660211 0.00773184066 0.001587305472 -0.002475837874 -0.006826640025 +-0.001299025481 0.002026186227 -0.003484388558 -0.001189926041 0.001856015752 0.0001539133015 +0.000335083815 0.0003794016366 0.0002811441835 -0.0004385213997 -4.89965577e-05 -0.0001066701404 + +ad : 23 5.291649545 +R : 0 -1 0 +iw : 5 +0.01362204469 -0.006742554637 0.006776624581 -0.001323806415 0.002064838884 -0.006673211475 +0.001174147046 -0.001831404084 0.001482490054 -0.000565847162 0.0008825937156 -7.687977271e-05 +-0.0001673745368 -0.0006250409679 0.0003221642666 -0.0005025034606 4.953105602e-05 0.0001078337938 + +ad : 27 3.731782527 +R : 0 0 -1 +iw : 4 +-0.03689995147 0.02075435582 0.01358828503 0.02242684549 0.01764704858 -0.008167302291 +-0.01356904138 -0.01067709377 0.004013127696 -0.01099185033 -0.008649175237 -0.0029049027 +-0.01200413491 -0.002631416854 0.006839492298 0.005381802487 0.001828827905 0.00755739492 + +ad : 29 8.027587471 +R : 0 0 0 +iw : 4 +-1.474519116e-09 2.943052329e-09 -3.416269739e-09 9.969046797e-10 7.844360152e-10 5.857493166e-09 +-1.709280364e-09 -1.344984234e-09 -4.926340952e-09 2.674290058e-09 2.10432299e-09 -1.485985785e-10 +-6.140644174e-10 7.747616588e-09 -4.205834811e-09 -3.309452114e-09 2.336998305e-10 9.65734341e-10 + +ad : 49 0 +R : 0 0 0 +iw : 0 +0 0 -0.6352565802 0 0 0.1192854802 +0 0 0 0 0 0 +0 0 0 0 0 0 + +iw : 1 +0.7203491342 0.8266768175 0 0 0 0 +0 0 -0.9278915701 0 0 0 +0 -0.4077642443 0 0 0 0 + +iw : 2 +0 0 0 0 0 0 +0 0 0 -0.8035776717 0 0 +0 0 -0.3531341943 0 0 0 + +iw : 3 +0 0 0 0 0 0 +0 0 0 0 -0.8035776717 0 +0 0 0 -0.3531341943 0 0 + +iat : 1 +ad : 16 4.049413304 +R : 0 -1 0 +iw : 5 +-0.02405346581 0.01373354405 0.006502986614 -0.008455965221 -0.01708999113 -0.003843333676 +0.005089298708 0.01028576484 0.004079895325 0.003351109292 0.006772784253 0.005262878607 +-0.006896406624 -0.002622298169 -0.002247855219 -0.004543044438 -0.003473410477 0.004551511217 + +ad : 22 8.027587471 +R : 0 0 0 +iw : 0 +4.024712123e-10 -8.03308808e-10 -9.324716129e-10 2.721052843e-10 2.141119299e-10 1.598804701e-09 +-4.665485107e-10 -3.671137894e-10 1.344648228e-09 -7.299491147e-10 -5.743762533e-10 4.056006182e-11 +1.676092126e-10 -2.114717644e-09 1.14798534e-09 9.033171011e-10 -6.378850272e-11 -2.63597742e-10 + +iw : 1 +1.111290774e-09 -2.21806741e-09 -2.574293188e-09 7.521010381e-10 5.918069735e-10 4.413848016e-09 +-1.289542105e-09 -1.014704104e-09 3.709253919e-09 -2.015827767e-09 -1.586197691e-09 1.12119108e-10 +4.633177208e-10 -5.833515571e-09 3.170277025e-09 2.494601066e-09 -1.763288678e-10 -7.286562536e-10 + +iw : 2 +-3.242867407e-10 6.47256243e-10 7.521010381e-10 -2.164066903e-10 -1.726957004e-10 -1.289542105e-09 +3.710485827e-10 2.961016967e-10 -1.085779845e-09 5.821243016e-10 4.633177208e-10 -3.076676731e-11 +-1.336661156e-10 1.707597337e-09 -9.155035746e-10 -7.286562536e-10 4.838698758e-11 2.102159553e-10 + +iw : 3 +-2.551720379e-10 5.093075781e-10 5.918069735e-10 -1.726957004e-10 -1.328247896e-10 -1.014704104e-09 +2.961016967e-10 2.277401937e-10 -8.543693615e-10 4.633177208e-10 3.578860857e-10 -2.727956756e-11 +-1.044351427e-10 1.343659908e-09 -7.286562536e-10 -5.628458389e-10 4.290211844e-11 1.642446914e-10 + +ad : 23 7.631582655 +R : 0 0 0 +iw : 5 +-2.670273605e-05 5.136373965e-05 1.853277624e-05 -1.209228827e-05 5.96068639e-05 -3.019756762e-05 +1.972959603e-05 -9.725366439e-05 3.666194569e-05 9.413339541e-06 -4.640144496e-05 7.162059672e-05 +3.030622342e-05 -5.417705043e-05 -1.387399825e-05 6.838949806e-05 -0.0001057445028 -4.474573901e-05 + +ad : 24 3.731782527 +R : 0 0 1 +iw : 0 +0.02459962619 -0.01659368353 0.013924883 0.01894692123 0.01490879488 -0.009234221372 +-0.0126026897 -0.00991669905 -0.002466866119 0.01249671182 0.009833308059 0.00297024476 +0.01227415253 0.001713443937 -0.008365064648 -0.006582232095 -0.001998085841 -0.008256831461 + +iw : 1 +-0.02401107774 0.0130181663 0.002113717949 -0.02223090514 -0.01749286868 -0.001754865565 +0.0130951738 0.01030422082 0.01490031971 -0.00452747969 -0.003562545346 -0.003984208575 +-0.01646422693 -0.009563070381 0.00249484635 0.001963123826 0.002473939709 0.01022323606 + +iw : 2 +-0.03796727256 0.02116113731 -0.02223090514 -0.01683835603 -0.02393809878 0.0130951738 +0.009864483933 0.01425872036 -0.001429754388 -0.01393817938 -0.01646422693 0.00456264881 +-0.013015654 0.00082955833 0.008563757528 0.01022323606 -0.002967608189 0.00805542176 + +iw : 3 +-0.02987536983 0.01665109872 -0.01749286868 -0.02393809878 -0.005252706874 0.01030422082 +0.01425872036 0.002963495972 -0.001125033173 -0.01646422693 -0.005969762227 -0.01140172327 +-0.006613721258 0.0006527559193 0.01022323606 0.00361587811 0.007222904351 0.004025617364 + +ad : 48 0 +R : 0 0 0 +iw : 4 +0 0 -0.548393889 0 0 -0.08221087957 +0 0 0 0 0 0 +0 0 0 0 0 0 + +iat : 2 +ad : 19 7.631582655 +R : 0 0 0 +iw : 4 +2.670273605e-05 -5.136373965e-05 1.853277624e-05 -1.209228827e-05 5.96068639e-05 -3.019756762e-05 +1.972959603e-05 -9.725366439e-05 -3.666194569e-05 -9.413339541e-06 4.640144496e-05 -7.162059672e-05 +-3.030622342e-05 5.417705043e-05 1.387399825e-05 -6.838949806e-05 0.0001057445028 4.474573901e-05 + +ad : 25 5.291649545 +R : 0 1 0 +iw : 0 +-0.00418919505 0.002674224853 0.003542606779 -0.0006178283596 0.0009636726384 -0.002772335776 +0.0004715591947 -0.0007355257916 -0.001885162931 0.0005862472628 -0.0009144132633 7.04674108e-05 +0.0001534142184 0.001119373217 -0.0003625020998 0.0005654213658 -4.47907935e-05 -9.751379395e-05 + +iw : 1 +-0.01367809974 0.007464674847 0.009429052384 -0.002124326723 0.003313469681 -0.00740686038 +0.001538109604 -0.002399103435 -0.003635646693 0.00156005126 -0.002433327461 0.0002338074081 +0.000509020842 0.001887079219 -0.0009448366106 0.00147373162 -0.0001502880248 -0.0003271912448 + +iw : 2 +0.002351174781 -0.001293165971 -0.002124326723 -0.002078921061 -0.0005753513687 0.001538109604 +0.00122171181 0.0004066361847 0.001215561891 0.001504841219 0.000509020842 -0.0003599810275 +0.0004130622114 -0.0007807142285 -0.001161527281 -0.0003271912448 0.000260817994 -0.0003097046942 + +iw : 3 +-0.003667301393 0.002017046715 0.003313469681 -0.0005753513687 -0.001550371339 -0.002399103435 +0.0004066361847 0.0008481532264 -0.001896001885 0.000509020842 0.001037226403 -0.0004375819238 +-0.0001853826674 0.001217737789 -0.0003271912448 -0.0008609512317 0.0003257474058 0.0001465821053 + +ad : 26 4.049413304 +R : 0 1 0 +iw : 4 +0.02405346581 -0.01373354405 0.006502986614 -0.008455965221 -0.01708999113 -0.003843333676 +0.005089298708 0.01028576484 -0.004079895325 -0.003351109292 -0.006772784253 -0.005262878607 +0.006896406624 0.002622298169 0.002247855219 0.004543044438 0.003473410477 -0.004551511217 + +ad : 28 5.094192361 +R : 0 1 1 +iw : 0 +0.00535838738 -0.003604031325 0.004655580955 0.0008460043084 -0.00131957556 -0.003421625104 +-0.0006142250623 0.0009580523087 0.002795829379 0.0009006557608 -0.001404819477 -0.0001119866065 +-0.0002438054346 -0.001566991961 -0.000523741545 0.0008169184671 6.679524869e-05 0.0001454195742 + +iw : 1 +-0.01654641925 0.00959896198 -0.01130095176 -0.002703214119 0.004216403216 0.008141193107 +0.001857886631 -0.002897883342 -0.005479306646 -0.002323532942 0.003624186372 0.0003523336373 +0.0007670636535 0.002118224946 0.001147122207 -0.001789251443 -0.0001930236989 -0.0004202308494 + +iw : 2 +-0.003004370516 0.001740221772 -0.002703214119 0.002605683068 0.0007668032738 0.001857886631 +-0.001608229215 -0.0005200480349 -0.00175215687 0.001860044447 0.0007670636535 0.0004914476941 +-0.0005356559066 0.0009584194335 -0.001377083278 -0.0004202308494 -0.0003332173482 0.0003892308397 + +iw : 3 +0.004686139146 -0.002714352749 0.004216403216 0.0007668032738 0.001901254993 -0.002897883342 +-0.0005200480349 -0.001130484207 0.002732968805 0.0007670636535 0.001155377173 0.0005737985466 +0.0002198440844 -0.001494917755 -0.0004202308494 -0.0009910358802 -0.0004107912211 -0.0001796915981 + +ad : 47 0 +R : 0 0 0 +iw : 5 +0 0 -0.548393889 0 0 -0.08221087957 +0 0 0 0 0 0 +0 0 0 0 0 0 + diff --git a/tests/09_DeePKS/NO_KP_deepks_UT/gdmepsl_ref.dat b/tests/09_DeePKS/NO_KP_deepks_UT/gdmepsl_ref.dat new file mode 100644 index 0000000000..efe4ca8fcd --- /dev/null +++ b/tests/09_DeePKS/NO_KP_deepks_UT/gdmepsl_ref.dat @@ -0,0 +1,540 @@ +0.01811297538 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.00213915435 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.03051567017 -0.04194414141 -0.03374556319 0 0 +-0.01123897374 -0.01536247211 -0.01233758812 0 0 +-0.02135607988 -0.02929025185 -0.02355853551 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.005020521812 0.006377213665 0.00511394412 0 0 +0.001811595254 0.002305914795 0.001857367569 0 0 +0.00349281856 0.004451919226 0.003572562303 0 0 +0 0 0 0 0 +0 0 0 0 0 +8.574046565e-05 0.0003410988638 0.0002670758908 5.737560822e-05 0.0002374155362 +9.111638896e-05 0.0003899960219 0.0003122022605 6.633157313e-05 0.0002740041407 +0.0001331126161 0.000568926917 0.0004490712564 9.626876266e-05 0.0003977414157 +-4.201570086e-05 -0.0001719635577 -0.00013508979 -2.899569783e-05 -0.0001199070914 +6.635559576e-05 0.0002739521386 0.0002153699079 4.622204124e-05 0.0001911087476 +3.503570003e-05 0.0001391947311 0.0001094969449 2.345149076e-05 9.703791463e-05 +3.628380434e-05 0.0001541481433 0.0001254485334 2.63676132e-05 0.0001089160087 +5.412455146e-05 0.0002301796745 0.0001816182337 3.893564394e-05 0.0001608816888 +-1.801296259e-05 -7.200741674e-05 -5.66036324e-05 -1.213195878e-05 -5.019373283e-05 +2.71005676e-05 0.0001088895628 8.559923621e-05 1.83502933e-05 7.591286496e-05 +-0.09745098376 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.005651757386 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.01012243635 0.008472426559 0.005098546306 0 0 +0.002562659031 0.004352121427 0.001331039806 0 0 +0.005161884196 0.005916184556 0.005319026817 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.003873208242 0.003254305055 0.001976132899 0 0 +0.0009837257425 0.001653597444 0.0005172359518 0 0 +0.001998026144 0.002272019401 0.002034988371 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.001418795121 0.002517816097 0.001675860481 0.0004893173473 0.00109431188 +0.0002026327312 0.002924416134 0.00125752763 0.001347910354 0.001744227446 +0.0007720199239 0.003518569948 0.003034918263 0.0005478165022 0.002400757556 +-0.0003441880328 -0.0005801069729 -0.001092714904 0.0005436930876 -0.0008846094301 +-0.0002176051601 0.001772074236 0.0009909481293 0.0007192942161 0.00138197559 +0.0005848221103 0.001048009082 0.0006987433386 0.0002036338895 0.0004600619528 +7.974801238e-05 0.001202258467 0.0005189127326 0.0005539729024 0.0007192886256 +0.0003185827927 0.001463298576 0.001263264963 0.0002289422646 0.0009979462822 +-0.0001445029955 -0.0002523609898 -0.0004578712287 0.0002206791643 -0.0003743590585 +-9.035538293e-05 0.000729497638 0.0004073792502 0.0002958972434 0.0005703989357 +0.001175847459 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.0003822339303 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.0003669664726 -0.0001816827172 -0.0003711371267 0 0 +9.074324185e-05 -9.238506698e-05 -0.0001209607845 0 0 +-0.0002695689135 0.0002120194782 0.0004079889218 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.0001424662015 -6.596945283e-05 -0.0001358158926 0 0 +3.236680269e-05 -3.543275119e-05 -4.615513373e-05 0 0 +-9.814846025e-05 7.764437316e-05 0.0001499927976 0 0 +0 0 0 0 0 +0 0 0 0 0 +1.937957904e-05 -1.190359166e-05 -4.132276246e-05 -1.755161808e-05 2.414386983e-05 +-7.373141539e-06 -2.065622785e-05 -1.896128231e-05 -1.460982744e-05 2.019058976e-05 +2.008966277e-05 6.058755286e-05 0.000133969196 6.532836428e-05 -9.669025341e-05 +1.289583688e-05 5.420517461e-05 0.0001032797153 5.27613418e-05 -7.763985374e-05 +1.166771375e-05 1.155983324e-05 2.058158147e-05 9.301927603e-06 -1.547580006e-05 +7.108417281e-06 -5.849995109e-06 -1.786117481e-05 -7.69498471e-06 1.066474895e-05 +-2.596403261e-06 -9.843244823e-06 -6.357521737e-06 -6.217966544e-06 8.475034297e-06 +1.045314663e-05 2.604894571e-05 5.671712417e-05 2.784355085e-05 -4.148547335e-05 +5.858515021e-06 2.291998608e-05 4.280653721e-05 2.213841573e-05 -3.270782179e-05 +6.260778391e-06 4.521267294e-06 8.019012236e-06 3.525656066e-06 -6.077053675e-06 +0.01407771093 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.001633462841 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.02415451076 -0.03301877145 -0.02655405827 0 0 +-0.02135607988 -0.02929025185 -0.02355853551 0 0 +-0.0009000193356 -0.001186663072 -0.0009372453747 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.003907783066 0.005019069394 0.0040270267 0 0 +0.00349281856 0.004451919226 0.003572562303 0 0 +0.0001210974351 0.0001517464351 0.0001278810588 0 0 +0 0 0 0 0 +0 0 0 0 0 +5.422166723e-05 0.0002671297492 0.0002123510181 4.556159599e-05 0.0001877477292 +0.0001331126161 0.000568926917 0.0004490712564 9.626876266e-05 0.0003977414157 +2.705140191e-05 0.000114889444 9.447071828e-05 1.972678539e-05 8.147612711e-05 +7.503642821e-05 0.0003275954915 0.0002580617842 5.544054113e-05 0.0002289684074 +2.337979273e-05 0.000103454773 8.147959314e-05 1.751625465e-05 7.232365493e-05 +2.209674676e-05 0.0001095096839 8.625428033e-05 1.862036227e-05 7.672922574e-05 +5.412455146e-05 0.0002301796745 0.0001816182337 3.893564394e-05 0.0001608816888 +1.009125535e-05 4.283206361e-05 3.741185307e-05 7.522868918e-06 3.105067376e-05 +3.004707812e-05 0.0001344628726 0.0001059151485 2.277748137e-05 9.402718341e-05 +8.383972472e-06 3.93825087e-05 3.105047433e-05 6.685817935e-06 2.75752464e-05 +-0.07487328142 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.004855435328 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.008196729995 0.005095848667 0.004698462244 0 0 +0.005161884108 0.005916184038 0.005319027315 0 0 +-0.001225389411 -0.0003247139433 0.002106917076 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.003132159964 0.001974761874 0.001816719866 0 0 +0.001998026116 0.002272019238 0.002034988527 0 0 +-0.0004590368226 -0.000128103189 0.0007812249269 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.001108388427 0.001683372846 0.001514010568 -4.995372335e-05 0.0009637069523 +0.0007720199099 0.003518569589 0.0030349186 0.0005478159577 0.002400757645 +-0.0002343352146 0.0002062927622 0.001288990296 -0.0005619663605 0.000648055573 +0.0003103357167 0.002202100486 0.001373192259 0.0007078169299 0.001400103818 +-0.000329423875 -9.782449391e-06 0.0006703424241 -0.0005995910175 0.0008651838174 +0.0004569084859 0.0007017380828 0.0006303342021 -1.947216929e-05 0.0004047133149 +0.0003185827874 0.00146329844 0.001263265092 0.0002289420577 0.0009979463162 +-0.0001005320276 8.044957148e-05 0.0005298111924 -0.0002296882732 0.0002602675887 +0.0001303150738 0.00092189131 0.0005800440861 0.0002936042951 0.000586796402 +-0.0001372372413 -1.124501504e-05 0.0002692183711 -0.0002495604238 0.0003544627116 +0.001924053685 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.0006664753625 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.0003874543736 -0.0004247271231 -0.0007642301534 0 0 +-0.0002695688968 0.0002120194743 0.0004079889103 0 0 +-0.0003553016684 0.0002614453575 0.0005188722773 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.0001306319303 -0.0001584672877 -0.00028315107 0 0 +-9.814845602e-05 7.764437213e-05 0.0001499927946 0 0 +-0.0001307373272 9.555444399e-05 0.0001890590975 0 0 +0 0 0 0 0 +0 0 0 0 0 +-5.554562654e-05 -5.392421765e-05 -8.72783902e-05 -4.143631288e-05 6.929596125e-05 +2.00896647e-05 6.058755287e-05 0.0001339691869 6.532836044e-05 -9.669024793e-05 +2.526408424e-05 9.347798502e-05 0.0001887748223 9.587970137e-05 -0.0001432684671 +-3.921926692e-06 1.171680747e-05 2.418517206e-05 1.289465619e-05 -1.786591152e-05 +-2.457564908e-05 -5.997057534e-05 -0.0001063268348 -5.578177551e-05 8.284452436e-05 +-2.379569883e-05 -2.135912768e-05 -3.60671466e-05 -1.675264883e-05 2.860698838e-05 +1.045314767e-05 2.604894561e-05 5.671711769e-05 2.784354831e-05 -4.148546959e-05 +1.244563149e-05 3.858122282e-05 8.081611e-05 4.068979654e-05 -6.123851828e-05 +-2.40348628e-06 5.452923642e-06 1.088581052e-05 5.880489977e-06 -8.187515559e-06 +-1.259067059e-05 -2.605354495e-05 -4.506975549e-05 -2.389911688e-05 3.576071094e-05 +-0.02042846348 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.002420060264 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.01839578169 0.02542818227 0.02052450105 0 0 +0.03051567017 0.04194414141 0.03374556319 0 0 +0.02415451076 0.03301877145 0.02655405827 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.00300335657 -0.00386488975 -0.003056683548 0 0 +-0.005020521812 -0.006377213665 -0.00511394412 0 0 +-0.003907783066 -0.005019069394 -0.0040270267 0 0 +0 0 0 0 0 +0 0 0 0 0 +3.522696524e-05 0.0001847929571 0.0001587293496 3.249619351e-05 0.0001336733559 +-0.0001298709346 -0.0005222917779 -0.0004089788155 -8.789802536e-05 -0.0003636323347 +-8.523385007e-05 -0.0004090389449 -0.0003251108761 -6.969649925e-05 -0.0002873289461 +-3.203249352e-05 -0.0001375532889 -0.0001088657711 -2.330239387e-05 -9.626400681e-05 +-0.0001331126161 -0.000568926917 -0.0004490712564 -9.626876266e-05 -0.0003977414157 +1.964042349e-05 7.928176638e-05 6.458201189e-05 1.353716898e-05 5.597364601e-05 +-5.105462242e-05 -0.0002084674383 -0.0001641011137 -3.517303267e-05 -0.000145456112 +-3.532617756e-05 -0.0001641030265 -0.0001290808836 -2.782422543e-05 -0.000114784599 +-1.309627449e-05 -5.565803986e-05 -4.401834018e-05 -9.422372139e-06 -3.893266745e-05 +-5.412455146e-05 -0.0002301796745 -0.0001816182337 -3.893564394e-05 -0.0001608816888 +0.1267846477 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.005164226709 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.007420733334 -0.004611917247 -0.00371300959 0 0 +-0.010122437 -0.008472426094 -0.005098546432 0 0 +-0.00819673061 -0.005095848885 -0.004698461783 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.002819925173 -0.001761924706 -0.001416718312 0 0 +-0.003873208447 -0.003254304908 -0.001976132937 0 0 +-0.003132160156 -0.001974761941 -0.00181671972 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.0006491506396 0.000940110882 0.0007737851145 0.0003554989683 0.001099058068 +-0.001783813957 -0.003771096229 -0.002480303122 -0.0007916246004 -0.0018759779 +-0.001391844684 -0.002485661131 -0.002240099282 7.504525079e-05 -0.001651060997 +-0.0002184840722 -0.001359061544 1.573114315e-05 -0.0009549380829 -0.0005480859377 +-0.000772020357 -0.003518569946 -0.003034918499 -0.0005478162532 -0.002400757415 +-0.0002604393052 0.0004060672031 0.0003334253342 0.0001495332534 0.0004637280356 +-0.0007312016108 -0.001551599065 -0.001021606145 -0.0003238229921 -0.0007769542292 +-0.000570718442 -0.001023052372 -0.0009191060978 3.143389548e-05 -0.0006845864887 +-9.01400577e-05 -0.0005609043936 5.449157787e-06 -0.0003918304834 -0.0002295105188 +-0.0003185829572 -0.001463298575 -0.001263265053 -0.0002289421699 -0.0009979462283 +0.001622477917 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.0006107646611 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.0001716681341 -0.0002739458359 -0.0002481917349 0 0 +-0.0003669664271 0.0001816827089 0.0003711370904 0 0 +-0.0003874543274 0.0004247271047 0.00076423012 0 0 +0 0 0 0 0 +0 0 0 0 0 +6.301048437e-05 -0.000111751434 -8.443958382e-05 0 0 +-0.0001424661907 6.596945111e-05 0.0001358158842 0 0 +-0.0001306319192 0.0001584672834 0.0002831510626 0 0 +0 0 0 0 0 +0 0 0 0 0 +-2.046873775e-05 -3.057542601e-06 7.91928079e-05 2.596438837e-05 -4.006709289e-05 +-2.188661285e-05 2.638302798e-05 7.46202187e-05 3.3420721e-05 -4.702307115e-05 +8.061822235e-05 9.355644762e-05 0.0001547741803 7.536252085e-05 -0.0001224142206 +1.631861436e-05 5.706710552e-05 0.0001038680485 5.524476246e-05 -8.172952544e-05 +-2.008966283e-05 -6.058755488e-05 -0.0001339691888 -6.532836199e-05 9.669025061e-05 +3.431305705e-07 4.933122215e-06 3.504122115e-05 1.31173605e-05 -2.04606816e-05 +-5.57999013e-06 1.326605046e-05 3.319966223e-05 1.508880052e-05 -2.152476983e-05 +3.255110555e-05 3.792674252e-05 6.533691818e-05 3.137126761e-05 -5.165920761e-05 +7.521018393e-06 2.421223317e-05 4.358681312e-05 2.345388026e-05 -3.485677422e-05 +-1.045314619e-05 -2.604894696e-05 -5.671711916e-05 -2.784354933e-05 4.148547146e-05 +0.01135011786 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.00136296651 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.01878408264 -0.0259595164 -0.02089364979 0 0 +-0.01678851209 -0.0230487204 -0.0185462027 0 0 +-0.0006303548894 -0.0009399236731 -0.0007831436324 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.003141562095 0.003947771043 0.003164059521 0 0 +0.00274823446 0.003505722934 0.002808855362 0 0 +9.711047548e-05 0.0001279362742 9.298498383e-05 0 0 +0 0 0 0 0 +0 0 0 0 0 +6.332481324e-05 0.0002121797187 0.0001636668317 3.520482369e-05 0.0001462793755 +0.0001066825333 0.0004489938594 0.0003512646883 7.568487588e-05 0.0003128221151 +2.216543711e-05 9.444546725e-05 6.800200969e-05 1.547543784e-05 6.40047739e-05 +6.381513967e-05 0.0002579935828 0.0002026454435 4.347651267e-05 0.0001798356616 +2.064186606e-05 8.14531314e-05 6.400431017e-05 1.371363999e-05 5.675332545e-05 +2.592215566e-05 8.619923446e-05 6.772405302e-05 1.439127559e-05 5.979450014e-05 +4.2604464e-05 0.0001815922227 0.000142173756 3.063450326e-05 0.0001265866352 +8.743802456e-06 3.739420173e-05 2.365121001e-05 5.876339792e-06 2.433460893e-05 +2.729131401e-05 0.0001058820229 8.317777585e-05 1.781125438e-05 7.37379844e-05 +8.648534631e-06 3.103574033e-05 2.433518288e-05 5.198051626e-06 2.155792905e-05 +-0.05542814982 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.004983102735 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.007365113157 0.003445370771 0.002575551893 0 0 +0.003518273495 0.004990384954 0.004851283711 0 0 +-0.001649380564 0.0001642004141 0.002493264965 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.002801044333 0.001346021536 0.00101671587 0 0 +0.001372436687 0.001911202319 0.00184637327 0 0 +-0.0006115152557 5.108864925e-05 0.0009178423922 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.000877296407 0.001267261115 0.001073976979 -9.227520684e-05 0.0008296441197 +0.0005973799584 0.002881012157 0.002618853763 0.0005359833418 0.001746849205 +-0.0001989331912 0.0003244021226 0.001346478367 -0.0002917997865 0.0003068464234 +0.0002420769239 0.001755979578 0.001128913741 0.0005796384992 0.001070134678 +-0.0002505805625 -0.0001039274891 0.0003302303744 -0.0005610959676 0.0008013698751 +0.0003616961869 0.0005280080917 0.0004466969086 -3.735638247e-05 0.0003479473223 +0.0002463972503 0.001199207523 0.00109218295 0.0002248397671 0.0007246426032 +-8.538064605e-05 0.000133255485 0.0005599988362 -0.0001162657919 0.000118021771 +0.0001016215271 0.0007356517689 0.0004780796074 0.0002416019344 0.0004467113078 +-0.000104262511 -5.038118031e-05 0.0001268739067 -0.0002346496137 0.0003304380625 +0.004188362949 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.001394067959 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.0009909534916 -0.0006676688477 -0.00123903677 0 0 +-0.0005267122744 0.0004590495543 0.0008070314259 0 0 +-0.0006375389135 0.0005859588673 0.001006976057 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.0003764701532 -0.0002429470631 -0.0004506036183 0 0 +-0.0001914100641 0.0001698927816 0.0002958063822 0 0 +-0.0002254324076 0.0002137367974 0.0003656377261 0 0 +0 0 0 0 0 +0 0 0 0 0 +4.404039231e-05 -4.324486787e-05 -9.555506257e-05 -5.510104269e-05 7.020880182e-05 +5.280043293e-05 0.0001570307013 0.0002486607791 0.0001346117616 -0.0002013247314 +8.14006454e-05 0.0002153652068 0.0003626238063 0.0001900207927 -0.0002821645097 +2.408729943e-05 3.544407286e-05 6.002777499e-05 3.042436713e-05 -4.733512373e-05 +-3.339456539e-05 -0.0001208977782 -0.0002242781049 -0.0001146077524 0.000170990943 +1.688704732e-05 -2.018403804e-05 -3.90801585e-05 -2.363965083e-05 3.001822839e-05 +2.441369524e-05 6.701192574e-05 0.0001033495473 5.676666657e-05 -8.544561529e-05 +3.958281653e-05 9.581908604e-05 0.0001519311144 8.169111274e-05 -0.0001221046412 +1.311579477e-05 1.621778641e-05 2.707229939e-05 1.389032991e-05 -2.16978124e-05 +-1.538877837e-05 -5.19829389e-05 -9.475076495e-05 -4.890784559e-05 7.343122249e-05 +-0.01584018661 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.001826301959 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.01478086073 0.01998326678 0.01596684637 0 0 +0.02415451076 0.03301877145 0.02655405827 0 0 +0.01878408264 0.0259595164 0.02089364979 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.002381026645 -0.002979836619 -0.002457331471 0 0 +-0.003907783066 -0.005019069394 -0.0040270267 0 0 +-0.003141562095 -0.003947771043 -0.003164059521 0 0 +0 0 0 0 0 +0 0 0 0 0 +5.013091106e-05 0.0001585365391 0.0001040189356 2.481512828e-05 0.0001034827912 +-8.523385007e-05 -0.0004090389449 -0.0003251108761 -6.969649925e-05 -0.0002873289461 +-9.351859836e-05 -0.0003248834243 -0.0002506778784 -5.401234186e-05 -0.0002242239849 +-2.609655252e-05 -0.0001088437398 -8.470029388e-05 -1.830554723e-05 -7.567882824e-05 +-0.0001066825333 -0.0004489938594 -0.0003512646883 -7.568487588e-05 -0.0003128221151 +1.35948727e-05 6.457754972e-05 4.740700708e-05 1.069765339e-05 4.414481494e-05 +-3.532617756e-05 -0.0001641030265 -0.0001290808836 -2.782422543e-05 -0.000114784599 +-3.53577922e-05 -0.0001290252082 -0.0001016412554 -2.166392771e-05 -8.980709534e-05 +-1.031215584e-05 -4.401178494e-05 -3.429849737e-05 -7.412888037e-06 -3.063197905e-05 +-4.2604464e-05 -0.0001815922227 -0.000142173756 -3.063450326e-05 -0.0001265866352 +0.1026386788 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.003098164344 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.005490621691 -0.003843377203 -0.00334794045 0 0 +-0.008418205035 -0.00638782643 -0.00345746269 0 0 +-0.007365113641 -0.003445370942 -0.00257555153 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.002092970845 -0.001463704133 -0.001268559036 0 0 +-0.003214425023 -0.002458252624 -0.001351182918 0 0 +-0.002801044484 -0.001346021589 -0.001016715756 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.0005167845943 0.0008064276646 0.0007456332308 0.0003417293517 0.0007809973225 +-0.001408545513 -0.002912680396 -0.001839439404 -0.0005719558623 -0.0015451257 +-0.001105119338 -0.001845626268 -0.001536119495 0.0001621154093 -0.001438962154 +-0.0001796459087 -0.0009832954465 0.0001889065832 -0.0006714732406 -0.0005392515295 +-0.0005973803102 -0.002881012438 -0.002618853683 -0.0005359835744 -0.001746849025 +-0.0002074195814 0.0003472498786 0.0003191544563 0.0001433269755 0.000330275131 +-0.0005774867303 -0.00119722266 -0.0007552886746 -0.0002327734994 -0.0006411622695 +-0.0004533554476 -0.0007573794983 -0.0006253169716 6.936831815e-05 -0.00059927165 +-7.42307295e-05 -0.0004045485181 7.961416306e-05 -0.0002743634353 -0.0002263224918 +-0.0002463973839 -0.001199207629 -0.001092182919 -0.0002248398554 -0.0007246425341 +0.003443543961 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.001074659153 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.0003392389548 -7.883997106e-05 -0.0005379288441 0 0 +-0.0002169216402 0.0003747536599 0.0006239744127 0 0 +-0.0009909535638 0.0006676688764 0.001239036822 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.0001184907391 -8.821603494e-06 -0.0002016930941 0 0 +-6.484282829e-05 0.0001396016639 0.0002296409967 0 0 +-0.0003764701704 0.0002429470698 0.00045060363 0 0 +0 0 0 0 0 +0 0 0 0 0 +8.170035198e-05 0.0001535744458 0.0001471982852 9.941129329e-05 -0.0001458286585 +7.502118447e-05 8.107337285e-05 0.0001059746041 6.27923591e-05 -9.776645577e-05 +-4.311839875e-05 0.0001010981501 0.0002080086619 0.0001147237085 -0.0001548890065 +3.875217545e-05 0.0001029397982 0.0001872041333 9.430427694e-05 -0.0001412489338 +-5.280043585e-05 -0.0001570306982 -0.0002486607761 -0.0001346117592 0.0002013247273 +2.291937689e-05 5.43204843e-05 5.585363512e-05 3.725149096e-05 -5.459764903e-05 +2.88109132e-05 3.246849649e-05 4.294697869e-05 2.594196456e-05 -4.058371553e-05 +-1.012846364e-05 4.828555004e-05 8.954841836e-05 5.108237053e-05 -6.929681662e-05 +1.933407016e-05 4.437670793e-05 7.839148326e-05 3.985366264e-05 -6.022293728e-05 +-2.441369756e-05 -6.701192363e-05 -0.000103349545 -5.676666499e-05 8.544561236e-05 +0.02613468812 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.003606597771 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.01891276899 -0.02844259824 -0.0230099405 0 0 +-0.03428427445 -0.0472902396 -0.03813345838 0 0 +-0.02738583718 -0.03717808647 -0.02976367695 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.004053121691 0.004300110839 0.003432263629 0 0 +0.005630493595 0.007218866248 0.005737657852 0 0 +0.004446681885 0.005606345877 0.004578131002 0 0 +0 0 0 0 0 +0 0 0 0 0 +8.380316318e-05 -0.0001981740099 -0.0001965892892 -4.047674327e-05 -0.0001593162825 +0.0001573312647 0.0006005807731 0.0004419971312 9.866030202e-05 0.0004089030657 +7.89408525e-05 0.0004422838066 0.00039587354 7.916438279e-05 0.0003252041207 +3.031224383e-05 0.0001546622673 0.0001233326989 2.644087004e-05 0.0001088905154 +0.0001374134134 0.0006403849328 0.0005074898614 0.0001088828397 0.0004491196424 +1.532661906e-06 -9.193112863e-05 -6.901742056e-05 -1.596484582e-05 -6.466108434e-05 +5.419573578e-05 0.0002386903742 0.0001790946732 3.972144529e-05 0.0001641060653 +4.502182271e-05 0.0001790781954 0.0001545784203 3.122740479e-05 0.0001290717692 +1.253173666e-05 6.283274942e-05 4.946345727e-05 1.06860243e-05 4.402586885e-05 +5.614723919e-05 0.0002596389879 0.0002043640054 4.402558597e-05 0.0001816343144 +-0.1363064452 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.008021591432 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.009156460096 0.004708633904 0.003212833193 0 0 +0.0103755859 0.01018361549 0.007009134735 0 0 +0.007151445696 0.007026908977 0.007847661989 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.003464523881 0.001809082899 0.00124571117 0 0 +0.00398541354 0.003901171321 0.002691568882 0 0 +0.002762521733 0.002697429372 0.002985778048 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.0007179498685 -0.0009079808783 -0.0005609609167 -0.0002592767115 -0.001430127483 +0.001999098105 0.004374332793 0.003050741573 0.001008219142 0.001956888308 +0.00154593785 0.003052914829 0.003041111419 0.0001500107999 0.001543037963 +0.000228661417 0.001726966709 0.0003834747956 0.001258533703 0.0003705266968 +0.0008930582945 0.003709040516 0.002894219973 0.0003784890349 0.00302903912 +0.0002878716277 -0.0003948389127 -0.0002468487933 -0.0001099017678 -0.0006020249237 +0.0008192019478 0.001802444463 0.001261856635 0.0004151637547 0.0008075737811 +0.0006334002773 0.001261904254 0.001259362978 6.604028907e-05 0.0006342048885 +9.412730104e-05 0.0007152331064 0.000164556121 0.0005192348884 0.0001533849659 +0.0003688207313 0.001539935024 0.001199696275 0.0001563416637 0.001262238958 +0.007822272009 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.002265799783 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.003133553065 0.0002950629998 0.0002412195726 0 0 +-3.321352131e-05 0.000455305531 0.0003200792566 0 0 +-0.0003926388299 0.000225975259 0.0009875310932 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.001445574139 0.0001492047451 0.0001475826982 0 0 +-5.601699644e-06 0.000179456135 0.0001075302882 0 0 +-0.0001348741273 6.178714383e-05 0.0003663459458 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.0009447607967 0.0002505014412 0.000267142084 0.000134922619 -0.000229907052 +0.0001282922378 0.0002353809325 -6.832182936e-05 3.05663184e-05 -5.905637756e-05 +-2.299330828e-05 -0.0001250602437 0.0001866011964 -2.029292883e-06 -3.995121798e-06 +2.788090432e-06 6.292384751e-05 0.0001018366528 6.719797454e-05 -8.6123764e-05 +-8.347763155e-05 -0.0001425844231 -0.0002129234467 -0.0001141257085 0.0001834716734 +0.0003480772336 6.598533399e-05 9.182887172e-05 4.124691687e-05 -7.172774661e-05 +4.411586509e-05 9.54974737e-05 -4.152530593e-05 7.166680055e-06 -1.707791092e-05 +2.00633614e-05 -3.820373848e-05 8.995424467e-05 4.545972019e-06 -1.146853464e-05 +3.372304975e-06 2.805656307e-05 4.115942637e-05 2.885090292e-05 -3.669659888e-05 +-3.338056423e-05 -5.851602192e-05 -8.764667447e-05 -4.726597692e-05 7.690894254e-05 diff --git a/tests/09_DeePKS/NO_KP_deepks_UT/gdmx_ref.dat b/tests/09_DeePKS/NO_KP_deepks_UT/gdmx_ref.dat new file mode 100644 index 0000000000..613bb0a142 --- /dev/null +++ b/tests/09_DeePKS/NO_KP_deepks_UT/gdmx_ref.dat @@ -0,0 +1,810 @@ +0.008314698841 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.0009927198453 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.01384675614 -0.01212648241 -0.01255177486 0 0 +-0.01212648241 -0.006994716793 -0.00947030939 0 0 +-0.01255177486 -0.00947030939 -0.01072732655 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.00230253167 0.001864436737 0.001959594103 0 0 +0.001864436737 0.001046264419 0.001438200332 0 0 +0.001959594103 0.001438200332 0.001628088987 0 0 +0 0 0 0 0 +0 0 0 0 0 +4.394153167e-05 9.817687903e-05 9.0376303e-05 2.731816935e-06 6.985104836e-05 +9.817687903e-05 0.0001756969132 0.0002019503233 -2.407689658e-05 0.0001248732993 +9.0376303e-05 0.0002019503233 0.000205318328 -8.755519395e-06 0.0001395892702 +2.731816935e-06 -2.407689658e-05 -8.755519395e-06 -1.316415773e-05 -1.675901636e-05 +6.985104836e-05 0.0001248732993 0.0001395892702 -1.675901636e-05 8.692940179e-05 +1.797759915e-05 3.981639638e-05 3.724320962e-05 7.31885729e-07 2.886222266e-05 +3.981639638e-05 6.869031756e-05 8.209731141e-05 -1.039514472e-05 4.963675414e-05 +3.724320962e-05 8.209731141e-05 8.299589669e-05 -4.002673508e-06 5.610532706e-05 +7.31885729e-07 -1.039514472e-05 -4.002673508e-06 -5.496770798e-06 -7.239755391e-06 +2.886222266e-05 4.963675414e-05 5.610532706e-05 -7.239755391e-06 3.448689574e-05 +-0.04501976847 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.002362478674 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.004443397632 0.002537757055 0.002539400783 0 0 +0.002537757055 0.002015416953 0.001621627689 0 0 +0.002539400783 0.001621627689 0.002177162776 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.001702689416 0.0009737964873 0.0009796220172 0 0 +0.0009737964873 0.0007658776145 0.0006251452269 0 0 +0.0009796220172 0.0006251452269 0.0008366295117 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.0006453029034 0.0006245935291 0.0005700273791 3.939201759e-05 0.0001933025744 +0.0006245935291 0.0013357759 0.001070809797 0.0001600026016 0.0007961918174 +0.0005700273791 0.001070809797 0.001297129648 -0.0001775485946 0.0007940206078 +3.939201759e-05 0.0001600026016 -0.0001775485946 0.0002166522875 -1.875371589e-05 +0.0001933025744 0.0007961918174 0.0007940206078 -1.875371589e-05 0.0006351591676 +0.0002659862973 0.0002589525677 0.0002369449179 1.611913406e-05 8.15321048e-05 +0.0002589525677 0.0005489709075 0.0004439876967 6.232571464e-05 0.0003282768468 +0.0002369449179 0.0004439876967 0.0005391110199 -7.474044566e-05 0.0003295248039 +1.611913406e-05 6.232571464e-05 -7.474044566e-05 8.745152417e-05 -9.781135427e-06 +8.15321048e-05 0.0003282768468 0.0003295248039 -9.781135427e-06 0.0002618740459 +0.0002425835115 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +6.080685817e-05 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.0001936511593 1.453224713e-05 -2.662162579e-05 0 0 +1.453224713e-05 -4.40040543e-05 -1.42034306e-05 0 0 +-2.662162579e-05 -1.42034306e-05 6.473995637e-06 0 0 +0 0 0 0 0 +0 0 0 0 0 +8.232527201e-05 4.782141301e-06 -9.570322574e-06 0 0 +4.782141301e-06 -1.681331399e-05 -5.568874401e-06 0 0 +-9.570322574e-06 -5.568874401e-06 2.70565433e-06 0 0 +0 0 0 0 0 +0 0 0 0 0 +3.338943295e-05 2.93709308e-07 -8.400758072e-06 -4.572337441e-06 5.700343079e-06 +2.93709308e-07 -1.890792647e-05 -1.127778917e-05 -7.049430349e-06 1.007288346e-05 +-8.400758072e-06 -1.127778917e-05 8.158606881e-06 1.685299937e-07 5.531250241e-06 +-4.572337441e-06 -7.049430349e-06 1.685299937e-07 -1.502240678e-07 2.129646414e-06 +5.700343079e-06 1.007288346e-05 5.531250241e-06 2.129646414e-06 -6.357290315e-06 +1.308875588e-05 -1.178884454e-07 -3.702896352e-06 -2.623446096e-06 3.674953346e-06 +-1.178884454e-07 -9.949652233e-06 -4.126199685e-06 -3.284033381e-06 4.619039392e-06 +-3.702896352e-06 -4.126199685e-06 4.163494256e-06 1.433613598e-07 2.324514976e-06 +-2.623446096e-06 -3.284033381e-06 1.433613598e-07 -5.39548727e-08 9.690834921e-07 +3.674953346e-06 4.619039392e-06 2.324514976e-06 9.690834921e-07 -2.911569353e-06 +-0.00821621666 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.0009646876275 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.01392705958 0.01210440393 0.01254745275 0 0 +0.01210440393 0.006998736947 0.009485700104 0 0 +0.01254745275 0.009485700104 0.01073220311 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.002278471895 -0.001865194534 -0.001960394837 0 0 +-0.001865194534 -0.001052431549 -0.001436197439 0 0 +-0.001960394837 -0.001436197439 -0.001626797909 0 0 +0 0 0 0 0 +0 0 0 0 0 +-3.648249472e-05 -9.8568376e-05 -9.154106833e-05 -3.901103094e-06 -6.882914229e-05 +-9.8568376e-05 -0.0001786569376 -0.0001999964269 2.404624393e-05 -0.0001247500051 +-9.154106833e-05 -0.0001999964269 -0.0002041375341 8.886212408e-06 -0.0001396529798 +-3.901103094e-06 2.404624393e-05 8.886212408e-06 1.322962329e-05 1.679280515e-05 +-6.882914229e-05 -0.0001247500051 -0.0001396529798 1.679280515e-05 -8.710864477e-05 +-1.489609523e-05 -4.004129706e-05 -3.727407899e-05 -1.505068382e-06 -2.796083325e-05 +-4.004129706e-05 -7.101219118e-05 -8.040972504e-05 1.039353058e-05 -4.95858782e-05 +-3.727407899e-05 -8.040972504e-05 -8.25811436e-05 4.034816437e-06 -5.614906093e-05 +-1.505068382e-06 1.039353058e-05 4.034816437e-06 5.541229379e-06 7.258561011e-06 +-2.796083325e-05 -4.95858782e-05 -5.614906093e-05 7.258561011e-06 -3.462446751e-05 +0.04405467329 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.002685676698 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.004698540716 -0.002500207139 -0.002230135044 0 0 +-0.002500207139 -0.001964911825 -0.001665677775 0 0 +-0.002230135044 -0.001665677775 -0.002551880432 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.001796523384 -0.0009606427571 -0.0008658783709 0 0 +-0.0009606427571 -0.000746511357 -0.0006405336175 0 0 +-0.0008658783709 -0.0006405336175 -0.0009743817977 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.0006467292738 -0.0006169121796 -0.0005508877005 -2.971755304e-05 -0.0002030077013 +-0.0006169121796 -0.001330049311 -0.001096608546 -0.0001826753478 -0.0008032366701 +-0.0005508877005 -0.001096608546 -0.001427178019 9.598349212e-05 -0.0007610790731 +-2.971755304e-05 -0.0001826753478 9.598349212e-05 -0.0002639424214 4.758697153e-05 +-0.0002030077013 -0.0008032366701 -0.0007610790731 4.758697153e-05 -0.0006264732357 +-0.0002665821416 -0.0002557248491 -0.0002289225758 -1.20714921e-05 -8.559949021e-05 +-0.0002557248491 -0.0005468924166 -0.0004553475235 -7.203661687e-05 -0.0003308285395 +-0.0002289225758 -0.0004553475235 -0.0005944799586 4.024853327e-05 -0.0003150687507 +-1.20714921e-05 -7.203661687e-05 4.024853327e-05 -0.0001073866231 2.212274296e-05 +-8.559949021e-05 -0.0003308285395 -0.0003150687507 2.212274296e-05 -0.00025872026 +-0.0006896759509 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.0002336868163 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.0001532077247 3.924625737e-05 0.0002086564436 0 0 +3.924625737e-05 4.10678663e-05 -3.911475153e-05 0 0 +0.0002086564436 -3.911475153e-05 -0.000280163146 0 0 +0 0 0 0 0 +0 0 0 0 0 +-5.572167525e-05 1.419267061e-05 7.627375108e-05 0 0 +1.419267061e-05 1.578440077e-05 -1.387199095e-05 0 0 +7.627375108e-05 -1.387199095e-05 -0.0001028277846 0 0 +0 0 0 0 0 +0 0 0 0 0 +4.091153765e-06 6.853509291e-06 2.9606498e-06 -7.86783654e-07 -9.447200249e-06 +6.853509291e-06 4.412514072e-06 -2.039732958e-05 -1.746769777e-05 -5.736191531e-06 +2.9606498e-06 -2.039732958e-05 -8.882285792e-05 -5.850592683e-05 2.935831729e-05 +-7.86783654e-07 -1.746769777e-05 -5.850592683e-05 -3.675017808e-05 2.486880671e-05 +-9.447200249e-06 -5.736191531e-06 2.935831729e-05 2.486880671e-05 7.412749875e-06 +1.943225265e-06 2.873284709e-06 6.269457995e-07 -7.415564422e-07 -3.949156743e-06 +2.873284709e-06 1.608553531e-06 -9.013267536e-06 -7.531466087e-06 -2.087145963e-06 +6.269457995e-07 -9.013267536e-06 -3.72308592e-05 -2.447687068e-05 1.285278779e-05 +-7.415564422e-07 -7.531466087e-06 -2.447687068e-05 -1.541543057e-05 1.065104202e-05 +-3.949156743e-06 -2.087145963e-06 1.285278779e-05 1.065104202e-05 2.692487407e-06 +-9.848218044e-05 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +-2.803221774e-05 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +-8.030344164e-05 2.207848107e-05 4.322108801e-06 0 0 +2.207848107e-05 -4.020154013e-06 -1.539071311e-05 0 0 +4.322108801e-06 -1.539071311e-05 -4.876563134e-06 0 0 +0 0 0 0 0 +0 0 0 0 0 +-2.40597752e-05 7.577967039e-07 8.007336154e-07 0 0 +7.577967039e-07 6.167130004e-06 -2.002893771e-06 0 0 +8.007336154e-07 -2.002893771e-06 -1.291078219e-06 0 0 +0 0 0 0 0 +0 0 0 0 0 +-7.459036948e-06 3.914969679e-07 1.164765334e-06 1.169286159e-06 -1.021906067e-06 +3.914969679e-07 2.960024389e-06 -1.953896345e-06 3.065265394e-08 -1.232942006e-07 +1.164765334e-06 -1.953896345e-06 -1.1807939e-06 -1.306930139e-07 6.370960503e-08 +1.169286159e-06 3.065265394e-08 -1.306930139e-07 -6.546555225e-08 -3.378879096e-08 +-1.021906067e-06 -1.232942006e-07 6.370960503e-08 -3.378879096e-08 1.792429755e-07 +-3.081503914e-06 2.249006792e-07 3.086937165e-08 7.731826532e-07 -9.013894127e-07 +2.249006792e-07 2.321873627e-06 -1.687586367e-06 1.614139009e-09 -5.087594078e-08 +3.086937165e-08 -1.687586367e-06 -4.147530927e-07 -3.214292917e-08 4.373387297e-08 +7.731826532e-07 1.614139009e-09 -3.214292917e-08 -4.445858099e-08 -1.880562005e-08 +-9.013894127e-07 -5.087594078e-08 4.373387297e-08 -1.880562005e-08 1.375717629e-07 +0.0009650951828 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.000323198024 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.0002551430846 -3.754991585e-05 -0.0003092657393 0 0 +-3.754991585e-05 -5.050512805e-05 4.405008681e-05 0 0 +-0.0003092657393 4.405008681e-05 0.0003747176561 0 0 +0 0 0 0 0 +0 0 0 0 0 +9.38339679e-05 -1.315373022e-05 -0.0001137436463 0 0 +-1.315373022e-05 -1.936625746e-05 1.538839057e-05 0 0 +-0.0001137436463 1.538839057e-05 0.000137752286 0 0 +0 0 0 0 0 +0 0 0 0 0 +1.426370378e-06 -7.681349523e-06 -1.91396786e-05 -9.674464556e-06 9.705126852e-06 +-7.681349523e-06 -5.72658897e-06 2.579874887e-05 2.267274625e-05 7.044852746e-06 +-1.91396786e-05 2.579874887e-05 0.0001300483706 8.156510248e-05 -3.29415347e-05 +-9.674464556e-06 2.267274625e-05 8.156510248e-05 4.729013389e-05 -2.883325563e-05 +9.705126852e-06 7.044852746e-06 -3.29415347e-05 -2.883325563e-05 -8.685931815e-06 +5.95844361e-07 -3.227718567e-06 -8.022342096e-06 -4.047641959e-06 4.06738541e-06 +-3.227718567e-06 -2.07849085e-06 1.135982675e-05 9.710902225e-06 2.551692692e-06 +-8.022342096e-06 1.135982675e-05 5.53689387e-05 3.44919124e-05 -1.445605324e-05 +-4.047641959e-06 9.710902225e-06 3.44919124e-05 1.993509897e-05 -1.234160753e-05 +4.06738541e-06 2.551692692e-06 -1.445605324e-05 -1.234160753e-05 -3.153785902e-06 +0.0004470924394 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.0001728799582 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +-4.044343461e-05 -5.37785045e-05 -0.0001820348178 0 0 +-5.37785045e-05 2.936188002e-06 5.331818213e-05 0 0 +-0.0001820348178 5.331818213e-05 0.0002736891503 0 0 +0 0 0 0 0 +0 0 0 0 0 +-2.660359676e-05 -1.897481191e-05 -6.670342851e-05 0 0 +-1.897481191e-05 1.028913225e-06 1.944086535e-05 0 0 +-6.670342851e-05 1.944086535e-05 0.0001001221303 0 0 +0 0 0 0 0 +0 0 0 0 0 +-3.748058671e-05 -7.147218599e-06 5.440108272e-06 5.359121095e-06 3.74685717e-06 +-7.147218599e-06 1.44954124e-05 3.167511875e-05 2.451712812e-05 -4.336691926e-06 +5.440108272e-06 3.167511875e-05 8.066425104e-05 5.833739684e-05 -3.488956753e-05 +5.359121095e-06 2.451712812e-05 5.833739684e-05 3.690040214e-05 -2.699845312e-05 +3.74685717e-06 -4.336691926e-06 -3.488956753e-05 -2.699845312e-05 -1.055459561e-06 +-1.503198114e-05 -2.755396263e-06 3.075950553e-06 3.365002539e-06 2.742033965e-07 +-2.755396263e-06 8.341098702e-06 1.313946722e-05 1.081549947e-05 -2.531893429e-06 +3.075950553e-06 1.313946722e-05 3.306736494e-05 2.433350932e-05 -1.517730276e-05 +3.365002539e-06 1.081549947e-05 2.433350932e-05 1.546938545e-05 -1.162012552e-05 +2.742033965e-07 -2.531893429e-06 -1.517730276e-05 -1.162012552e-05 2.190819458e-07 +0.006311497887 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.0007153614051 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.01108406337 -0.01239043364 -0.006266984969 0 0 +-0.01239043364 -0.01334083584 -0.005632777017 0 0 +-0.006266984969 -0.005632777017 -0.0004100516556 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.001755337092 0.001938836262 0.0009452307058 0 0 +0.001938836262 0.002026803314 0.0008470292217 0 0 +0.0009452307058 0.0008470292217 6.106765524e-05 0 0 +0 0 0 0 0 +0 0 0 0 0 +1.707262805e-05 9.042799855e-05 5.499185465e-05 2.67040598e-05 4.793658443e-05 +9.042799855e-05 0.0002586491056 0.0001280783796 9.650357729e-05 0.0001141620654 +5.499185465e-05 0.0001280783796 4.536756303e-05 6.334949225e-05 3.715170012e-05 +2.67040598e-05 9.650357729e-05 6.334949225e-05 2.530689582e-05 5.620910865e-05 +4.793658443e-05 0.0001141620654 3.715170012e-05 5.620910865e-05 3.299983797e-05 +6.914864992e-06 3.725811801e-05 2.182079394e-05 1.045850654e-05 1.911259268e-05 +3.725811801e-05 0.0001046694342 5.057152804e-05 3.947639162e-05 4.56011004e-05 +2.182079394e-05 5.057152804e-05 1.917624754e-05 2.587277322e-05 1.417915964e-05 +1.045850654e-05 3.947639162e-05 2.587277322e-05 1.041598852e-05 2.299415488e-05 +1.911259268e-05 4.56011004e-05 1.417915964e-05 2.299415488e-05 1.261182769e-05 +-0.03537882375 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.001783824862 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.003395505585 0.002540472594 0.001123963548 0 0 +0.002540472594 0.002571194855 0.0009368302478 0 0 +0.001123963548 0.0009368302478 0.0006504546194 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.001302327707 0.0009799097023 0.0004311880561 0 0 +0.0009799097023 0.0009894655702 0.0003607578898 0 0 +0.0004311880561 0.0003607578898 0.0002430842126 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.000502965588 0.0005715529946 0.0003156673649 6.950423271e-05 0.0001295672668 +0.0005715529946 0.0015611332 0.0006657696294 0.0006024546434 0.0005884104143 +0.0003156673649 0.0006657696294 0.000464808232 0.0001478169896 0.0003742375508 +6.950423271e-05 0.0006024546434 0.0001478169896 0.0003141552762 0.0002043632976 +0.0001295672668 0.0005884104143 0.0003742375508 0.0002043632976 0.0003493391781 +0.0002073286966 0.0002375407818 0.000130802639 2.952918175e-05 5.466849143e-05 +0.0002375407818 0.0006488247719 0.0002750913357 0.0002517973151 0.0002434513232 +0.000130802639 0.0002750913357 0.0001888007227 6.364126865e-05 0.0001523747979 +2.952918175e-05 0.0002517973151 6.364126865e-05 0.0001299743508 8.64124226e-05 +5.466849143e-05 0.0002434513232 0.0001523747979 8.64124226e-05 0.000142217929 +-9.952539996e-05 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +-1.688667661e-05 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +-7.668841022e-05 -3.854855093e-05 -7.119271761e-05 0 0 +-3.854855093e-05 -1.126894011e-05 -7.395310476e-06 0 0 +-7.119271761e-05 -7.395310476e-06 1.53796666e-05 0 0 +0 0 0 0 0 +0 0 0 0 0 +-4.146675019e-05 -1.556643559e-05 -2.955509789e-05 0 0 +-1.556643559e-05 -4.781295381e-06 -2.463571097e-06 0 0 +-2.955509789e-05 -2.463571097e-06 6.086734714e-06 0 0 +0 0 0 0 0 +0 0 0 0 0 +-5.768286647e-05 -1.438057692e-05 -2.051173677e-05 -1.118622368e-05 9.884848649e-06 +-1.438057692e-05 -1.276135378e-05 -8.010279608e-07 -2.643203804e-06 1.03434226e-06 +-2.051173677e-05 -8.010279608e-07 6.961047591e-06 -1.362346342e-06 3.732583854e-07 +-1.118622368e-05 -2.643203804e-06 -1.362346342e-06 -1.586519576e-06 2.420956666e-06 +9.884848649e-06 1.03434226e-06 3.732583854e-07 2.420956666e-06 -1.31361141e-06 +-2.397445754e-05 -4.845500122e-06 -8.905641594e-06 -5.184687795e-06 3.27829012e-06 +-4.845500122e-06 -5.300898093e-06 -1.212908484e-06 -1.044149585e-06 1.72964913e-07 +-8.905641594e-06 -1.212908484e-06 4.203892196e-06 -8.480193392e-07 3.677964308e-07 +-5.184687795e-06 -1.044149585e-06 -8.480193392e-07 -6.961305195e-07 1.075335378e-06 +3.27829012e-06 1.72964913e-07 3.677964308e-07 1.075335378e-06 -4.238025227e-07 +-0.006465107836 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.0007590853307 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.01095880814 0.01237973377 0.006244788121 0 0 +0.01237973377 0.0133414283 0.005636953242 0 0 +0.006244788121 0.005636953242 0.0004357607399 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.001792864905 -0.001938341337 -0.0009444222329 0 0 +-0.001938341337 -0.002028286651 -0.0008487859096 0 0 +-0.0009444222329 -0.0008487859096 -5.676458679e-05 0 0 +0 0 0 0 0 +0 0 0 0 0 +-2.870704027e-05 -9.153259661e-05 -5.427475914e-05 -2.786551157e-05 -4.815930775e-05 +-9.153259661e-05 -0.0002593932628 -0.0001286261828 -9.654629263e-05 -0.0001141333958 +-5.427475914e-05 -0.0001286261828 -4.180035597e-05 -6.321910355e-05 -3.70908371e-05 +-2.786551157e-05 -9.654629263e-05 -6.321910355e-05 -2.522350568e-05 -5.609577712e-05 +-4.815930775e-05 -0.0001141333958 -3.70908371e-05 -5.609577712e-05 -3.291192537e-05 +-1.172131481e-05 -3.727066517e-05 -2.200558959e-05 -1.141236856e-05 -1.952647638e-05 +-3.727066517e-05 -0.0001049343234 -5.140341735e-05 -3.949727116e-05 -4.561240828e-05 +-2.200558959e-05 -5.140341735e-05 -1.591720084e-05 -2.581447463e-05 -1.412401541e-05 +-1.141236856e-05 -3.949727116e-05 -2.581447463e-05 -1.035308425e-05 -2.29062553e-05 +-1.952647638e-05 -4.561240828e-05 -1.412401541e-05 -2.29062553e-05 -1.253284502e-05 +0.03343281963 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.002436537071 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.003911224742 -0.002228633828 -0.0006158268116 0 0 +-0.002228633828 -0.002759692048 -0.001242907434 0 0 +-0.0006158268116 -0.001242907434 -0.001122291129 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.001492030908 -0.0008652505997 -0.0002450436874 0 0 +-0.0008652505997 -0.001058745396 -0.0004729438578 0 0 +-0.0002450436874 -0.0004729438578 -0.0004151347168 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.0005058449742 -0.0005526960114 -0.0002786910155 -5.393298183e-05 -0.0001522815068 +-0.0005526960114 -0.001624485356 -0.0007762312152 -0.0006387963852 -0.0005214437391 +-0.0002786910155 -0.0007762312152 -0.0006514385798 -0.0002041743646 -0.0002613437044 +-5.393298183e-05 -0.0006387963852 -0.0002041743646 -0.0003267344836 -0.0001707116093 +-0.0001522815068 -0.0005214437391 -0.0002613437044 -0.0001707116093 -0.0004176060611 +-0.0002085273857 -0.0002296499191 -0.0001153226491 -2.298958541e-05 -6.420096417e-05 +-0.0002296499191 -0.0006758085212 -0.0003222863123 -0.0002675075056 -0.0002148579024 +-0.0001153226491 -0.0003222863123 -0.0002689421127 -8.828416589e-05 -0.0001038671803 +-2.298958541e-05 -0.0002675075056 -8.828416589e-05 -0.0001357081135 -7.17485972e-05 +-6.420096417e-05 -0.0002148579024 -0.0001038671803 -7.17485972e-05 -0.0001715677226 +-0.001389635609 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.0004721074249 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.0003096289568 0.0002210071951 0.000351616099 0 0 +0.0002210071951 -0.0001532884641 -0.0002365307934 0 0 +0.000351616099 -0.0002365307934 -0.0003525475453 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.0001126030982 8.099197422e-05 0.0001282901146 0 0 +8.099197422e-05 -5.648049273e-05 -8.662808711e-05 0 0 +0.0001282901146 -8.662808711e-05 -0.0001282021391 0 0 +0 0 0 0 0 +0 0 0 0 0 +8.26885105e-06 4.194895248e-06 1.076330492e-05 9.879624642e-06 -1.034237272e-05 +4.194895248e-06 -4.882234585e-05 -7.946357299e-05 -2.816483972e-05 5.498665861e-05 +1.076330492e-05 -7.946357299e-05 -0.0001275447241 -4.244136871e-05 8.693549624e-05 +9.879624642e-06 -2.816483972e-05 -4.244136871e-05 -9.79669193e-06 2.686726172e-05 +-1.034237272e-05 5.498665861e-05 8.693549624e-05 2.686726172e-05 -5.8271019e-05 +3.929895837e-06 1.241614973e-06 3.525133778e-06 3.930312098e-06 -3.841808394e-06 +1.241614973e-06 -2.08929569e-05 -3.37559256e-05 -1.212032284e-05 2.356207998e-05 +3.525133778e-06 -3.37559256e-05 -5.395933814e-05 -1.836952321e-05 3.7137615e-05 +3.930312098e-06 -1.212032284e-05 -1.836952321e-05 -4.453287795e-06 1.171628199e-05 +-3.841808394e-06 2.356207998e-05 3.7137615e-05 1.171628199e-05 -2.507796799e-05 +0.0001536099487 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +4.37239256e-05 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.0001252552238 1.069986316e-05 2.21968482e-05 0 0 +1.069986316e-05 -5.924601743e-07 -4.176225163e-06 0 0 +2.21968482e-05 -4.176225163e-06 -2.57090843e-05 0 0 +0 0 0 0 0 +0 0 0 0 0 +3.752781283e-05 -4.94925778e-07 -8.084728788e-07 0 0 +-4.94925778e-07 1.483337065e-06 1.756687987e-06 0 0 +-8.084728788e-07 1.756687987e-06 -4.303068448e-06 0 0 +0 0 0 0 0 +0 0 0 0 0 +1.163441222e-05 1.104598065e-06 -7.170955073e-07 1.161451771e-06 2.227233228e-07 +1.104598065e-06 7.441572261e-07 5.478031656e-07 4.271533828e-08 -2.866966576e-08 +-7.170955073e-07 5.478031656e-07 -3.567207058e-06 -1.303886997e-07 -6.086302519e-08 +1.161451771e-06 4.271533828e-08 -1.303886997e-07 -8.339014665e-08 -1.1333153e-07 +2.227233228e-07 -2.866966576e-08 -6.086302519e-08 -1.1333153e-07 -8.791260891e-08 +4.806449819e-06 1.254715685e-08 1.84795649e-07 9.538620135e-07 4.138836929e-07 +1.254715685e-08 2.648891928e-07 8.318893047e-07 2.08795342e-08 1.130787713e-08 +1.84795649e-07 8.318893047e-07 -3.259046701e-06 -5.829859129e-08 -5.514422931e-08 +9.538620135e-07 2.08795342e-08 -5.829859129e-08 -6.290426956e-08 -8.789957646e-08 +4.138836929e-07 1.130787713e-08 -5.514422931e-08 -8.789957646e-08 -7.898266457e-08 +0.001946004123 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.0006527122098 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.0005157191571 -0.0003118387658 -0.0005081367364 0 0 +-0.0003118387658 0.0001884971925 0.0003060771858 0 0 +-0.0005081367364 0.0003060771858 0.0004718365101 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.0001897032012 -0.0001146591027 -0.0001861443687 0 0 +-0.0001146591027 6.927982607e-05 0.000112185968 0 0 +-0.0001861443687 0.000112185968 0.0001720505042 0 0 +0 0 0 0 0 +0 0 0 0 0 +2.879386195e-06 -1.88569832e-05 -3.69763494e-05 -1.557125088e-05 2.271424005e-05 +-1.88569832e-05 6.33521557e-05 0.0001104615858 3.634174175e-05 -6.696667518e-05 +-3.69763494e-05 0.0001104615858 0.0001866303479 5.635737502e-05 -0.0001128938463 +-1.557125088e-05 3.634174175e-05 5.635737502e-05 1.257920732e-05 -3.365168838e-05 +2.271424005e-05 -6.696667518e-05 -0.0001128938463 -3.365168838e-05 6.826688302e-05 +1.198689038e-06 -7.890862667e-06 -1.547998988e-05 -6.539596343e-06 9.53247274e-06 +-7.890862667e-06 2.698374938e-05 4.719497669e-05 1.571019043e-05 -2.859342075e-05 +-1.547998988e-05 4.719497669e-05 8.014139003e-05 2.464289724e-05 -4.850761758e-05 +-6.539596343e-06 1.571019043e-05 2.464289724e-05 5.733762718e-06 -1.466382539e-05 +9.53247274e-06 -2.859342075e-05 -4.850761758e-05 -1.466382539e-05 2.934979358e-05 +0.001489161009 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.0004889941015 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.0003863173671 -0.0001824586442 -0.0002804233814 0 0 +-0.0001824586442 0.0001645574043 0.0002439261039 0 0 +-0.0002804233814 0.0002439261039 0.0003371678787 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.0001540698483 -6.542553862e-05 -9.873501672e-05 0 0 +-6.542553862e-05 6.126178811e-05 8.909165821e-05 0 0 +-9.873501672e-05 8.909165821e-05 0.0001221154043 0 0 +0 0 0 0 0 +0 0 0 0 0 +4.941401542e-05 1.018568168e-05 9.748431855e-06 1.30659904e-06 4.575240666e-07 +1.018568168e-05 6.158369964e-05 8.026460095e-05 3.080804352e-05 -5.602100087e-05 +9.748431855e-06 8.026460095e-05 0.0001205836765 4.380371505e-05 -8.730875463e-05 +1.30659904e-06 3.080804352e-05 4.380371505e-05 1.138321151e-05 -2.928821838e-05 +4.575240666e-07 -5.602100087e-05 -8.730875463e-05 -2.928821838e-05 5.958463041e-05 +2.00445617e-05 3.603885149e-06 5.380507815e-06 1.254375696e-06 5.635182743e-07 +3.603885149e-06 2.6193855e-05 3.496883408e-05 1.316447243e-05 -2.37350449e-05 +5.380507815e-06 3.496883408e-05 4.975544595e-05 1.921754255e-05 -3.750541143e-05 +1.254375696e-06 1.316447243e-05 1.921754255e-05 5.149418314e-06 -1.279161737e-05 +5.635182743e-07 -2.37350449e-05 -3.750541143e-05 -1.279161737e-05 2.550177051e-05 +-0.009391330091 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.001131074386 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.008266137736 0.01271913176 0.01025014086 0 0 +0.01271913176 0.01909965129 0.01520897016 0 0 +0.01025014086 0.01520897016 0.01209529698 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.001361420799 -0.002042780547 -0.001564186418 0 0 +-0.002042780547 -0.002904338343 -0.002307448382 0 0 +-0.001564186418 -0.002307448382 -0.001835976082 0 0 +0 0 0 0 0 +0 0 0 0 0 +7.774089599e-06 6.956309065e-06 2.54719153e-05 4.093914829e-07 7.995648537e-07 +6.956309065e-06 -0.0002386103429 -0.0001851306714 -5.113449156e-05 -0.000211917927 +2.54719153e-05 -0.0001851306714 -0.000149980538 -4.09969261e-05 -0.0001684404655 +4.093914829e-07 -5.113449156e-05 -4.09969261e-05 -1.062509016e-05 -4.387262966e-05 +7.995648537e-07 -0.000211917927 -0.0001684404655 -4.387262966e-05 -0.000181219729 +9.632190616e-06 5.129378576e-06 8.687297867e-06 9.329278819e-08 4.05366334e-07 +5.129378576e-06 -9.492913648e-05 -7.477316291e-05 -2.061892653e-05 -8.540037387e-05 +8.687297867e-06 -7.477316291e-05 -5.87679369e-05 -1.646644401e-05 -6.773397193e-05 +9.329278819e-08 -2.061892653e-05 -1.646644401e-05 -4.292217508e-06 -1.773494802e-05 +4.05366334e-07 -8.540037387e-05 -6.773397193e-05 -1.773494802e-05 -7.328137856e-05 +0.05668307659 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.002708951006 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.003508603673 -0.003232426053 -0.002464651222 0 0 +-0.003232426053 -0.003962023243 -0.002528057504 0 0 +-0.002464651222 -0.002528057504 -0.002553667844 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.001330862862 -0.001238307285 -0.0009453850377 0 0 +-0.001238307285 -0.001520147885 -0.0009756515641 0 0 +-0.0009453850377 -0.0009756515641 -0.0009795304548 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.000293471327 -0.0002035122975 -0.0001641258037 2.117518323e-05 8.81315112e-05 +-0.0002035122975 -0.001737838162 -0.001172048219 -0.0005150322999 -0.001195065172 +-0.0001641258037 -0.001172048219 -0.001104031627 -3.083265089e-05 -0.0009988478685 +2.117518323e-05 -0.0005150322999 -3.083265089e-05 -0.0004645048519 -0.0002102092943 +8.81315112e-05 -0.001195065172 -0.0009988478685 -0.0002102092943 -0.001145917615 +-0.0001177132101 -7.87413365e-05 -6.369267564e-05 9.381821102e-06 3.86965565e-05 +-7.87413365e-05 -0.0007154538015 -0.0004834374269 -0.0002122919512 -0.000495846786 +-6.369267564e-05 -0.0004834374269 -0.0004548610026 -1.364852779e-05 -0.0004143418787 +9.381821102e-06 -0.0002122919512 -1.364852779e-05 -0.0001910547772 -8.764500807e-05 +3.86965565e-05 -0.000495846786 -0.0004143418787 -8.764500807e-05 -0.0004768416762 +-6.447232959e-05 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +5.878248059e-05 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +2.835937459e-06 -0.0001844420289 4.50465508e-05 0 0 +-0.0001844420289 -2.792426888e-06 5.846984486e-05 0 0 +4.50465508e-05 5.846984486e-05 0.0001127552492 0 0 +0 0 0 0 0 +0 0 0 0 0 +3.257693969e-06 -8.121023296e-05 2.645974569e-05 0 0 +-8.121023296e-05 -2.3170253e-06 2.254933592e-05 0 0 +2.645974569e-05 2.254933592e-05 4.489569784e-05 0 0 +0 0 0 0 0 +0 0 0 0 0 +-4.541965308e-05 -5.148534222e-05 4.039296778e-05 -9.728436042e-06 1.421765542e-05 +-5.148534222e-05 -1.024210734e-05 2.45092877e-05 3.163301254e-06 6.884499854e-06 +4.039296778e-05 2.45092877e-05 3.868115899e-05 1.112760189e-05 -2.115148947e-05 +-9.728436042e-06 3.163301254e-06 1.112760189e-05 6.394247506e-06 -3.941457696e-06 +1.421765542e-05 6.884499854e-06 -2.115148947e-05 -3.941457696e-06 -2.180195724e-06 +-8.205039148e-06 -1.558208983e-05 1.677140869e-05 -2.751035438e-06 3.049088823e-06 +-1.558208983e-05 -2.08800699e-06 9.691493508e-06 1.67930088e-06 2.111629851e-06 +1.677140869e-05 9.691493508e-06 1.568671242e-05 4.067346763e-06 -8.559587858e-06 +-2.751035438e-06 1.67930088e-06 4.067346763e-06 2.770237035e-06 -1.800231141e-06 +3.049088823e-06 2.111629851e-06 -8.559587858e-06 -1.800231141e-06 -5.919673142e-07 +0.009259331014 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.001087162432 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.008438318007 -0.01275211773 -0.01013589967 0 0 +-0.01275211773 -0.01910760098 -0.0152029482 0 0 +-0.01013589967 -0.0152029482 -0.01209474201 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.001371428384 0.002013479946 0.001597624439 0 0 +0.002013479946 0.00290491324 0.002307847331 0 0 +0.001597624439 0.002307847331 0.001833332876 0 0 +0 0 0 0 0 +0 0 0 0 0 +-2.039542637e-05 -1.542788881e-05 -1.21445042e-05 5.416908082e-08 2.256521297e-07 +-1.542788881e-05 0.0002375191499 0.0001869100539 5.145520722e-05 0.0002126270476 +-1.21445042e-05 0.0001869100539 0.000147084427 4.049207124e-05 0.0001673243593 +5.416908082e-08 5.145520722e-05 4.049207124e-05 1.060794459e-05 4.383465298e-05 +2.256521297e-07 0.0002126270476 0.0001673243593 4.383465298e-05 0.0001811356369 +-8.584935538e-06 -7.111751918e-06 -5.598003342e-06 -1.041532966e-07 -4.293992495e-07 +-7.111751918e-06 9.496625547e-05 7.473136645e-05 2.072131268e-05 8.562554494e-05 +-5.598003342e-06 7.473136645e-05 5.880801637e-05 1.630638056e-05 6.738196303e-05 +-1.041532966e-07 2.072131268e-05 1.630638056e-05 4.29148015e-06 1.773329145e-05 +-4.293992495e-07 8.562554494e-05 6.738196303e-05 1.773329145e-05 7.327766042e-05 +-0.05830854712 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.002164601731 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.003312394728 0.003420422886 0.002842615502 0 0 +0.003420422886 0.003804892066 0.002213152383 0 0 +0.002842615502 0.002213152383 0.00192254615 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.001260008003 0.001307047011 0.001083610932 0 0 +0.001307047011 0.001462366857 0.0008598818296 0 0 +0.001083610932 0.0008598818296 0.0007475198871 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.0002968375829 0.0001861686349 0.0001284679411 -3.647852752e-05 -6.730037156e-05 +0.0001861686349 0.001707065595 0.001109345936 0.000476530857 0.001246181561 +0.0001284679411 0.001109345936 0.0009763053644 -4.776255487e-05 0.001103138151 +-3.647852752e-05 0.000476530857 -4.776255487e-05 0.0004194189514 0.0002702905043 +-6.730037156e-05 0.001246181561 0.001103138151 0.0002702905043 0.001065939615 +0.000119105742 7.157756924e-05 4.89656562e-05 -1.57060434e-05 -3.008879941e-05 +7.157756924e-05 0.0007021382506 0.000456301095 0.000195807838 0.0005177473556 +4.89656562e-05 0.000456301095 0.000399586387 -1.999582712e-05 0.000458998648 +-1.57060434e-05 0.000195807838 -1.999582712e-05 0.0001718547035 0.0001132254831 +-3.008879941e-05 0.0005177473556 0.000458998648 0.0001132254831 0.0004428228913 +-0.001161593129 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.0003935891918 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +-0.0001178244598 0.0001257246563 0.0002445908877 0 0 +0.0001257246563 -0.0001277451362 -0.0002458267685 0 0 +0.0002445908877 -0.0002458267685 -0.0004718673819 0 0 +0 0 0 0 0 +0 0 0 0 0 +-4.208138065e-05 4.563413611e-05 8.865763609e-05 0 0 +4.563413611e-05 -4.706992312e-05 -9.040957156e-05 0 0 +8.865763609e-05 -9.040957156e-05 -0.0001731886517 0 0 +0 0 0 0 0 +0 0 0 0 0 +-9.661273957e-06 -1.840942658e-05 -3.429329681e-05 -1.981069589e-05 2.838321284e-05 +-1.840942658e-05 -2.372391757e-05 -4.555431824e-05 -2.978257226e-05 4.10175774e-05 +-3.429329681e-05 -4.555431824e-05 -8.723021208e-05 -5.643367516e-05 7.797385186e-05 +-1.981069589e-05 -2.978257226e-05 -5.643367516e-05 -3.503427721e-05 4.903249999e-05 +2.838321284e-05 4.10175774e-05 7.797385186e-05 4.903249999e-05 -6.835010137e-05 +-4.553815618e-06 -7.970385095e-06 -1.466894853e-05 -8.619104079e-06 1.2346778e-05 +-7.970385095e-06 -1.031857565e-05 -1.962069215e-05 -1.277466294e-05 1.764336751e-05 +-1.466894853e-05 -1.962069215e-05 -3.716147199e-05 -2.391021556e-05 3.31610693e-05 +-8.619104079e-06 -1.277466294e-05 -2.391021556e-05 -1.484438463e-05 2.084276633e-05 +1.2346778e-05 1.764336751e-05 3.31610693e-05 2.084276633e-05 -2.914534154e-05 +0.0001319990764 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +4.391195452e-05 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.0001721802709 3.298596823e-05 -0.0001142411948 0 0 +3.298596823e-05 7.949684072e-06 -6.02195651e-06 0 0 +-0.0001142411948 -6.02195651e-06 -5.549642448e-07 0 0 +0 0 0 0 0 +0 0 0 0 0 +-1.000758465e-05 2.930060163e-05 -3.343802062e-05 0 0 +2.930060163e-05 -5.748977026e-07 -3.989488795e-07 0 0 +-3.343802062e-05 -3.989488795e-07 2.643205997e-06 0 0 +0 0 0 0 0 +0 0 0 0 0 +1.262133677e-05 8.471579746e-06 -1.33274111e-05 -4.635605637e-07 -1.025216983e-06 +8.471579746e-06 1.091192947e-06 -1.779382403e-06 -3.207156542e-07 -7.091205903e-07 +-1.33274111e-05 -1.779382403e-06 2.896111034e-06 5.048548625e-07 1.116106277e-06 +-4.635605637e-07 -3.207156542e-07 5.048548625e-07 1.714556743e-08 3.797667058e-08 +-1.025216983e-06 -7.091205903e-07 1.116106277e-06 3.797667058e-08 8.409206171e-08 +-1.047255078e-06 1.982373342e-06 -3.089294525e-06 1.08605084e-08 2.403291551e-08 +1.982373342e-06 -3.711898753e-08 4.179645848e-08 -1.023861447e-07 -2.251710743e-07 +-3.089294525e-06 4.179645848e-08 -4.007946047e-08 1.600634531e-07 3.520088996e-07 +1.08605084e-08 -1.023861447e-07 1.600634531e-07 7.373582466e-10 1.656572984e-09 +2.403291551e-08 -2.251710743e-07 3.520088996e-07 1.656572984e-09 3.718145158e-09 +0.001625470529 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.0005443492751 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.0001962089447 -0.0001879968336 -0.0003779642797 0 0 +-0.0001879968336 0.0001571311777 0.0003149051214 0 0 +-0.0003779642797 0.0003149051214 0.0006311216941 0 0 +0 0 0 0 0 +0 0 0 0 0 +7.085485911e-05 -6.873972605e-05 -0.0001382258942 0 0 +-6.873972605e-05 5.778102836e-05 0.0001157697345 0 0 +-0.0001382258942 0.0001157697345 0.0002320105677 0 0 +0 0 0 0 0 +0 0 0 0 0 +-3.366255961e-06 1.734366256e-05 3.565786262e-05 1.530334429e-05 -2.083113963e-05 +1.734366256e-05 3.077256655e-05 6.270228374e-05 3.850144286e-05 -5.111638891e-05 +3.565786262e-05 6.270228374e-05 0.0001277262621 7.859520575e-05 -0.0001042902827 +1.530334429e-05 3.850144286e-05 7.859520575e-05 4.508590052e-05 -6.008121004e-05 +-2.083113963e-05 -5.111638891e-05 -0.0001042902827 -6.008121004e-05 7.997799953e-05 +-1.392531873e-06 7.163767254e-06 1.472701944e-05 6.324222297e-06 -8.607757095e-06 +7.163767254e-06 1.331555089e-05 2.713633191e-05 1.648411324e-05 -2.190056958e-05 +1.472701944e-05 2.713633191e-05 5.527461564e-05 3.364435491e-05 -4.46567693e-05 +6.324222297e-06 1.648411324e-05 3.364435491e-05 1.920007364e-05 -2.558047502e-05 +-8.607757095e-06 -2.190056958e-05 -4.46567693e-05 -2.558047502e-05 3.401878485e-05 +0.001226065458 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.0003348067112 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0 0 0 0 0 +0.0001149885223 5.871737263e-05 -0.0002896374385 0 0 +5.871737263e-05 0.0001305375631 0.0001873569236 0 0 +-0.0002896374385 0.0001873569236 0.0003591121327 0 0 +0 0 0 0 0 +0 0 0 0 0 +3.882368668e-05 3.557609685e-05 -0.0001151173818 0 0 +3.557609685e-05 4.938694842e-05 6.786023565e-05 0 0 +-0.0001151173818 6.786023565e-05 0.0001282929538 0 0 +0 0 0 0 0 +0 0 0 0 0 +5.508092703e-05 6.98947688e-05 -6.099670968e-06 2.953913193e-05 -4.260086825e-05 +6.98947688e-05 3.396602491e-05 2.104503054e-05 2.6619271e-05 -4.790207725e-05 +-6.099670968e-06 2.104503054e-05 4.854905309e-05 4.530607326e-05 -5.682236239e-05 +2.953913193e-05 2.6619271e-05 4.530607326e-05 2.86400297e-05 -4.509104229e-05 +-4.260086825e-05 -4.790207725e-05 -5.682236239e-05 -4.509104229e-05 7.05302971e-05 +1.275885477e-05 2.355247492e-05 -2.102460155e-06 1.137013952e-05 -1.539586682e-05 +2.355247492e-05 1.240658264e-05 9.929198644e-06 1.109536206e-05 -1.975499737e-05 +-2.102460155e-06 9.929198644e-06 2.147475957e-05 1.98428688e-05 -2.460148145e-05 +1.137013952e-05 1.109536206e-05 1.98428688e-05 1.207414759e-05 -1.904253519e-05 +-1.539586682e-05 -1.975499737e-05 -2.460148145e-05 -1.904253519e-05 2.973730885e-05 diff --git a/tests/09_DeePKS/NO_KP_deepks_UT/gedm_ref.dat b/tests/09_DeePKS/NO_KP_deepks_UT/gedm_ref.dat new file mode 100644 index 0000000000..56064b4efb --- /dev/null +++ b/tests/09_DeePKS/NO_KP_deepks_UT/gedm_ref.dat @@ -0,0 +1,18 @@ +-0.0105395 +-0.00143729 +0.000572678 0.0018424 0.000984104 0.0018424 -0.00116035 -0.000321265 0.000984104 -0.000321265 -0.000690085 +0.00155469 0.000725826 0.00017287 0.000725826 -0.000326987 -0.000172799 0.00017287 -0.000172799 0.000596387 +0.000104793 -0.000824195 -0.000167842 -9.5002e-05 -0.000381175 -0.000824195 -0.000820364 -0.00332201 -0.00047684 -0.00179171 -0.000167842 -0.00332201 0.000797551 -0.00041539 -0.00159238 -9.5002e-05 -0.00047684 -0.00041539 -0.000412545 8.30466e-05 -0.000381175 -0.00179171 -0.00159238 8.30466e-05 -0.000492714 +0.00088259 4.38924e-06 -0.000119081 -0.000107989 -0.000104282 4.38924e-06 -0.000576257 0.000860398 0.000454042 -2.22839e-05 -0.000119081 0.000860398 -0.00103049 0.000322221 8.60976e-05 -0.000107989 0.000454042 0.000322221 -0.000717212 -0.000762624 -0.000104282 -2.22839e-05 8.60976e-05 -0.000762624 0.00032204 +-0.0141053 +-0.00188726 +-0.00182612 1.99073e-05 0.00252918 1.99073e-05 0.00175757 -0.00238282 0.00252918 -0.00238282 -0.000687653 +0.000228156 -0.000521053 0.000635841 -0.000521053 0.00184178 -0.00134863 0.000635841 -0.00134863 0.00101454 +0.00380061 -0.000982323 0.000703556 -0.00142829 -0.00344333 -0.000982323 -0.00276982 -0.0025961 -0.000144876 -0.00161526 0.000703556 -0.0025961 -0.000808081 -0.00127233 -0.00257785 -0.00142829 -0.000144876 -0.00127233 0.000823322 0.000266071 -0.00344333 -0.00161526 -0.00257785 0.000266071 0.00157394 +-0.0015008 -0.000311446 0.000357447 0.00118258 0.00068892 -0.000311446 0.00125234 -1.34666e-05 -0.000664964 -0.00046898 0.000357447 -1.34666e-05 -0.000445242 0.000159827 0.00137588 0.00118258 -0.000664964 0.000159827 0.000786882 0.000335878 0.00068892 -0.00046898 0.00137588 0.000335878 -0.000731421 +-0.0138936 +-0.0018592 +-0.00155153 -0.00106638 -0.00162111 -0.00106638 0.00213377 -0.00257139 -0.00162111 -0.00257139 -0.00117574 +0.000131697 -0.000228244 -0.000149277 -0.000228244 0.00229487 -0.00125788 -0.000149277 -0.00125788 0.000662333 +0.000222069 -0.00149942 -0.001192 -0.000863896 0.00129244 -0.00149942 0.00405582 -0.0043836 -0.000277787 0.000313092 -0.001192 -0.0043836 -0.000338983 -0.00165664 0.00248213 -0.000863896 -0.000277787 -0.00165664 -0.000439445 0.000538551 0.00129244 0.000313092 0.00248213 0.000538551 -0.00113209 +0.000513884 0.000254967 8.65459e-06 4.07475e-05 -1.79259e-05 0.000254967 -0.00175525 0.000787655 0.000471526 -0.000184028 8.65459e-06 0.000787655 -0.000670299 0.000822193 -0.00074256 4.07475e-05 0.000471526 0.000822193 0.00074893 0.00153252 -1.79259e-05 -0.000184028 -0.00074256 0.00153252 0.000510836 diff --git a/tests/09_DeePKS/NO_KP_deepks_UT/gvepsl_ref.dat b/tests/09_DeePKS/NO_KP_deepks_UT/gvepsl_ref.dat new file mode 100644 index 0000000000..f3da5bc471 --- /dev/null +++ b/tests/09_DeePKS/NO_KP_deepks_UT/gvepsl_ref.dat @@ -0,0 +1,18 @@ +0.01811297538 0.00213915435 -0.06499202146 -5.715118466e-05 -0.00438750514 0.008078037638 0.0007095930583 0.002111368214 -9.915212565e-21 5.229972371e-20 -2.151655367e-06 3.846145649e-06 0.001085226303 9.008876546e-21 1.86456466e-20 -1.929884712e-06 6.637442899e-07 0.0004358491236 +-0.09745098376 0.005651757386 0.001214538562 0.002053211067 0.01652583496 0.0004550668339 0.0007626651279 0.006344062096 6.789899953e-10 0.0002717974994 0.001026394131 0.001135096021 0.006870509865 1.507978918e-09 0.0001146629259 0.0004217130032 0.0004647982214 0.002840247982 +0.001175847459 0.0003822339303 -2.734937031e-05 4.977202778e-05 0.00066014767 -1.029329616e-05 2.10873735e-05 0.0002462321706 3.625552146e-08 7.205225348e-07 -6.154938476e-06 5.487777368e-05 0.0001204984757 2.894396271e-08 3.480865159e-07 -4.37105043e-06 3.47775153e-05 3.926016334e-05 +0.01407771093 0.001633462841 -0.05453435973 -0.002925157688 0.003077509424 0.006910932843 0.002064592146 -0.0004879416378 -1.154943332e-20 1.425263863e-20 2.362390793e-06 -1.013796405e-05 0.0008531590718 3.992670901e-20 -1.84527216e-21 2.381071868e-06 -4.576748348e-06 0.0003422366786 +-0.07487328142 0.004855435328 0.0009663020944 0.002693842466 0.01255968655 0.0003621387322 0.0009957339432 0.004827531453 -2.931430122e-09 0.0004248544787 0.0007895532106 0.000928916752 0.005345627549 -6.495453816e-09 0.0001802684733 0.0003249216576 0.0003805221413 0.002212379348 +0.001924053685 0.0006664753625 5.82904182e-06 -3.273628758e-05 0.001145253371 1.812848738e-06 -1.340995316e-05 0.0004089325043 2.267746649e-07 -2.282457728e-06 -3.227054182e-06 2.378305675e-05 0.0002710556097 7.920899345e-08 -1.045217669e-06 -3.045505994e-07 4.17751635e-05 8.420595347e-05 +-0.02042846348 -0.002420060264 0.06458459928 0.0200864283 0.002222953803 -0.006854042441 -0.004542603821 -0.002010950673 1.816973422e-20 1.092900161e-19 -3.020178412e-07 -1.539170155e-05 -0.001217525779 8.396482038e-20 4.928754993e-20 2.597443525e-07 -1.853663057e-06 -0.0004866180407 +0.1267846477 -0.005164226709 -0.001377870717 0.0001597887148 -0.01937353921 -0.0005163272744 4.825050494e-05 -0.007422873032 1.223569829e-09 0.0001765901285 -0.001116317187 -0.001300591573 -0.00777572424 2.720310075e-09 7.682486453e-05 -0.0004575952179 -0.0005319541632 -0.003208199384 +0.001622477917 0.0006107646611 -1.007270532e-05 0.0002492391574 0.000878414511 -2.35892319e-06 0.0001026202675 0.0003118696537 -3.414663801e-07 4.297384413e-06 -4.945224853e-06 -3.370530689e-05 0.0003473180973 -1.623698516e-07 2.014418938e-06 -2.820076539e-06 9.638615631e-06 0.0001352148628 +0.01135011786 0.00136296651 -0.04272716331 -0.00228030437 0.002391521003 0.005497174509 0.001635369136 -0.0003922736321 -7.59651578e-21 7.881493724e-21 -2.702172614e-06 1.166607841e-05 0.0006715866146 2.55091279e-20 3.29468053e-21 -2.989583462e-06 4.193477507e-06 0.0002693308778 +-0.05542814982 0.004983102735 0.0007662533855 0.004195154543 0.009887355147 0.0002870977174 0.001543808162 0.003799183164 1.487318029e-08 0.000700385046 0.0006694829389 0.0007426406588 0.004373271788 3.297348308e-08 0.0002986040693 0.0002766853287 0.0003054581703 0.001812162001 +0.004188362949 0.001394067959 9.997218525e-06 0.0002189012032 0.002228080681 4.792261612e-06 9.70633778e-05 0.0008101450215 -5.209686072e-07 -2.207560252e-06 1.110359246e-05 0.0001333402657 0.0006233948806 -1.613676332e-07 -8.510725777e-07 3.379989525e-06 0.0001018275366 0.000218956554 +-0.01584018661 -0.001826301959 0.05099504795 0.01593510533 0.001763128693 -0.005388481142 -0.003601788591 -0.001573885826 4.934702848e-21 5.255111342e-20 2.658237737e-07 1.724069946e-05 -0.0009582200978 2.956551629e-20 4.385902779e-20 -4.684449543e-07 -2.613446132e-06 -0.0003830670413 +0.1026386788 -0.003098164344 -0.001086392487 0.001760071789 -0.01512767895 -0.000407079711 0.0006362513502 -0.005797110864 -5.367265063e-09 0.0003568140127 -0.0007588940578 -0.0009711578663 -0.006010663472 -1.191051986e-08 0.0001547666039 -0.0003098998563 -0.0003957929674 -0.002478027052 +0.003443543961 0.001074659153 1.401666765e-05 0.0004069740017 0.001532038767 2.92277564e-06 0.000158840717 0.0005469325403 5.548478103e-07 -2.955329314e-06 8.034001695e-06 5.805831285e-05 0.0006027195579 2.538042541e-07 -1.601803515e-06 4.94261199e-06 3.430892411e-05 0.0002323320299 +0.02613468812 0.003606597771 -0.07138367345 -0.02223015383 -0.002352858256 0.008300920747 0.005229530095 0.002319668099 3.621493606e-21 1.357434886e-19 3.775315666e-05 0.0001444199735 0.001373644859 1.899942462e-19 1.821962469e-19 1.29062651e-05 2.541115999e-05 0.0005488043701 +-0.1363064452 0.008021591432 0.001547618842 0.003542203474 0.02209791526 0.0005798909962 0.001307994424 0.00846358783 1.83158888e-09 0.0002971221973 0.001530120655 0.001585402904 0.009008319315 4.06439818e-09 0.0001281723922 0.0006298485827 0.0006521051402 0.003721022735 +0.007822272009 0.002265799783 0.0003389799418 0.001850382095 0.002387027652 0.0001479923303 0.0008042552663 0.001039128623 9.074338133e-06 3.208519714e-05 0.0002967475637 0.0007160921966 0.000563413278 4.260880766e-06 1.53025763e-05 0.0001286609379 0.0002058062035 0.0002852581991 diff --git a/tests/09_DeePKS/NO_KP_deepks_UT/gvx_ref.dat b/tests/09_DeePKS/NO_KP_deepks_UT/gvx_ref.dat new file mode 100644 index 0000000000..02dcecd594 --- /dev/null +++ b/tests/09_DeePKS/NO_KP_deepks_UT/gvx_ref.dat @@ -0,0 +1,27 @@ +0.008314698841 0.0009927198453 -0.02957512076 1.008213592e-05 -0.002003760863 0.003692802063 0.0003222123389 0.0009618706751 1.76789608e-19 7.635972149e-20 -2.476737112e-06 6.610248977e-06 0.000494588505 6.254049466e-20 -7.575534506e-20 -2.318216518e-06 2.184151094e-06 0.0001987880038 +-0.04501976847 0.002362478674 0.0005558496595 0.0005397174845 0.007540410217 0.0002082834378 0.0002023123744 0.00289460073 -1.295791519e-11 4.561085291e-05 0.0004729746201 0.0005165857522 0.003094848694 -2.924324762e-11 1.886757742e-05 0.0001941398113 0.0002114432129 0.001278943222 +0.0002425835115 6.080685817e-05 -2.265792734e-05 4.527746827e-05 0.0001335015597 -8.38635146e-06 1.888395122e-05 5.772001259e-05 -1.844392095e-07 1.058102228e-06 -3.628024192e-06 3.617985003e-05 -1.729288988e-05 -7.212879251e-08 5.110178781e-07 -3.258000328e-06 1.322717475e-05 -6.070989831e-06 +0.006311497887 0.0007153614051 -0.02490754228 -0.001340265725 0.001412857146 0.003125982918 0.0009364016384 -0.0002191764946 -9.615492929e-20 -9.558404888e-19 2.759319528e-06 -1.18671686e-05 0.0003885038795 5.858195916e-20 4.784668109e-20 2.879324065e-06 -4.961345828e-06 0.0001558703847 +-0.03537882375 0.001783824862 0.0004378598615 0.0004608675468 0.005718427651 0.0001640752359 0.0001727753559 0.002198026898 6.966738241e-11 5.835781194e-05 0.0003417697679 0.0004191216237 0.002373152201 1.57246229e-10 2.421875485e-05 0.0001401794577 0.0001714350442 0.0009813130571 +-9.952539996e-05 -1.688667661e-05 6.70143158e-07 -0.0001051673925 3.191956557e-05 -3.952588891e-07 -4.577554089e-05 6.009488924e-06 3.798545884e-07 -8.853686232e-07 -6.507553106e-06 -3.147526343e-05 -2.789497308e-05 1.578272503e-07 -4.56234312e-07 -1.472958373e-06 -6.420064042e-06 -1.7999967e-05 +-0.009391330091 -0.001131074386 0.02935253394 0.009101181574 0.001007370495 -0.003123663254 -0.00205898982 -0.00091908215 7.014162783e-22 5.17677791e-20 -3.233737686e-07 -1.784318814e-05 -0.0005544950485 4.56481726e-20 3.645083611e-20 3.666212161e-07 -4.181082339e-07 -0.0002215869918 +0.05668307659 -0.002708951006 -0.0006267573947 -0.0005303157123 -0.008867221653 -0.0002348563741 -0.0001987588444 -0.003396925984 3.713840472e-11 4.882649052e-08 -0.0005525470364 -0.0006117906287 -0.003581474781 8.381479489e-11 1.977637772e-07 -0.0002269233279 -0.0002508211904 -0.001478377797 +-6.447232959e-05 5.878248059e-05 -1.269007876e-05 3.5694727e-05 8.979411149e-05 -2.845424345e-06 1.790527153e-05 3.077651932e-05 -4.65914265e-07 4.295230324e-06 -6.652719236e-06 -4.656534178e-05 3.662219531e-05 -2.284940523e-07 2.090549591e-06 -3.928046696e-06 -5.472834622e-06 1.511076178e-05 +-0.00821621666 -0.0009646876275 0.02961733957 4.502483976e-05 0.001995635231 -0.003672370009 -0.0003237314609 -0.0009615998836 7.787114576e-21 3.147787623e-21 1.928780038e-07 8.033490986e-07 -0.000494152215 4.09411353e-21 9.355625456e-23 1.221105448e-07 6.87396086e-07 -0.0001983821748 +0.04405467329 -0.002685676698 -0.0005518097728 -0.001143204041 -0.00752031916 -0.0002067452336 -0.0004236783231 -0.002886992982 -4.787393002e-10 -0.000164921361 -0.0004646291064 -0.000517244447 -0.003147576868 -1.063483656e-09 -6.977202013e-05 -0.0001910016776 -0.0002118470837 -0.001301439555 +-0.0006896759509 -0.0002336868163 7.092245541e-06 -1.078042423e-05 -0.0003886148257 2.743552964e-06 -4.724786405e-06 -0.0001407838256 -1.222022334e-07 5.570321884e-08 2.369810859e-06 -1.9113881e-05 -9.284604913e-05 -5.805231045e-08 2.68292014e-08 1.324548709e-06 -1.721506675e-05 -3.048028242e-05 +-0.006465107836 -0.0007590853307 0.02480370907 0.001328203359 -0.001395915247 -0.003159297785 -0.0009424837971 0.0002238654394 2.607664456e-21 -7.300805093e-21 -1.90726956e-07 8.049036176e-07 -0.0003886502667 -1.378242874e-20 -1.292427092e-21 -1.405963018e-07 5.71665746e-07 -0.0001558898378 +0.03343281963 -0.002436537071 -0.0004413309416 -0.001629937632 -0.005721939346 -0.0001654073057 -0.0006012047347 -0.002199298981 2.074097719e-09 -0.0002645977851 -0.0003690208955 -0.0004252018015 -0.002467291046 4.597292685e-09 -0.0001125560311 -0.0001521076552 -0.0001743136957 -0.001021581071 +-0.001389635609 -0.0004721074249 -3.698956634e-06 -3.255834859e-05 -0.0007792076611 -1.467880807e-06 -1.475457607e-05 -0.0002810632731 4.216210768e-08 1.120748896e-06 -1.179630103e-06 -3.308412134e-05 -0.0002030650894 2.795374596e-08 4.865165258e-07 -5.630076155e-07 -3.241189539e-05 -6.799322226e-05 +0.009259331014 0.001087162432 -0.02945123187 -0.009174202948 -0.001015226177 0.003120976754 0.002074387899 0.0009143098472 1.443489957e-22 -4.107940343e-21 3.984010957e-08 1.313449386e-06 0.0005545984426 -2.059604814e-20 -1.627863507e-20 1.228699297e-08 1.068469169e-06 0.0002216777207 +-0.05830854712 0.002164601731 0.0006280389864 -0.0003899715256 0.008801765483 0.0002353479376 -0.0001380704235 0.003372617233 -8.30895847e-10 -0.0001227112783 0.0004852790932 0.0005821985604 0.003520801565 -1.846639311e-09 -5.329223615e-05 0.0001986991661 0.0002378127548 0.001452290136 +-0.001161593129 -0.0003935891918 3.267480836e-07 -0.0001544576912 -0.0005633060347 1.430312032e-07 -6.190801898e-05 -0.0002005749677 -7.708831216e-09 -7.278312411e-07 -6.178325753e-08 -1.063906395e-06 -0.0002221385525 -7.319963607e-09 -3.006033612e-07 -1.058396335e-07 -9.577571556e-06 -8.603225491e-05 +-9.848218044e-05 -2.803221774e-05 -4.221881467e-05 -5.510697568e-05 8.125631563e-06 -2.043205401e-05 1.519122033e-06 -2.707914306e-07 2.507108803e-21 -1.216125932e-21 2.283859108e-06 -7.413598076e-06 -4.362900682e-07 2.317143451e-21 -4.010166608e-22 2.196105973e-06 -2.87154718e-06 -4.058289921e-07 +0.0009650951828 0.000323198024 -4.039886667e-06 0.0006034865567 -2.009105741e-05 -1.53820426e-06 0.0002213659487 -7.607747993e-06 4.916972154e-10 0.0001193105081 -8.345513739e-06 6.586947795e-07 5.272817332e-05 1.092726904e-09 5.09044427e-05 -3.138133649e-06 4.038707646e-07 2.249633273e-05 +0.0004470924394 0.0001728799582 1.55656818e-05 -3.449704404e-05 0.000255113266 5.642798496e-06 -1.415916481e-05 8.306381305e-05 3.066414429e-07 -1.113805446e-06 1.258213334e-06 -1.706596904e-05 0.000110138939 1.30181103e-07 -5.378470795e-07 1.93345162e-06 3.987891999e-06 3.655127225e-05 +0.0001536099487 4.37239256e-05 0.0001038332129 1.206236583e-05 -1.694189933e-05 3.331486756e-05 6.082158705e-06 -4.688944816e-06 2.040167006e-21 -8.575730152e-22 -2.568592573e-06 1.106226499e-05 1.463872153e-07 1.029746788e-21 -4.585427811e-22 -2.738727764e-06 4.389680082e-06 1.945305746e-08 +0.001946004123 0.0006527122098 3.471080069e-06 0.001169070085 3.511694532e-06 1.332069822e-06 0.0004284293788 1.272082925e-06 -2.143765101e-09 0.0002062399732 2.725112764e-05 6.080177764e-06 9.413884526e-05 -4.754538914e-09 8.833727628e-05 1.192819755e-05 2.878651463e-06 4.0268014e-05 +0.001489161009 0.0004889941015 3.028813476e-06 0.000137725741 0.0007472880955 1.863139696e-06 6.053011696e-05 0.0002750537841 -4.220166961e-07 -2.353802729e-07 7.687183209e-06 6.455938477e-05 0.0002309600625 -1.857809962e-07 -3.028221375e-08 2.035965988e-06 3.883195943e-05 8.599318926e-05 +0.0001319990764 4.391195452e-05 9.869793426e-05 7.302137391e-05 7.855682521e-06 2.686499584e-06 -1.539807881e-05 4.772302874e-06 -1.442406336e-22 2.150262335e-23 2.83533659e-07 1.652973876e-05 -1.033940342e-07 1.805149526e-22 -8.013415534e-23 -3.78908209e-07 -6.50360935e-07 -9.072887859e-08 +0.001625470529 0.0005443492751 -1.281591717e-06 0.000920287238 6.545617028e-05 -4.915635193e-07 0.0003368292679 2.430875078e-05 7.93757442e-10 0.0001226624518 6.726794316e-05 2.959206829e-05 6.067321573e-05 1.762824516e-09 5.309447237e-05 2.822416174e-05 1.300843552e-05 2.608766069e-05 +0.001226065458 0.0003348067112 1.236333068e-05 0.0001187629642 0.0004735119232 2.702393142e-06 4.400274745e-05 0.0001697984484 4.736230962e-07 -3.567399083e-06 6.714502494e-06 4.762924818e-05 0.0001855163571 2.358140159e-07 -1.78994623e-06 4.03388633e-06 1.505040618e-05 7.092149313e-05 diff --git a/tests/09_DeePKS/NO_KP_deepks_UT/iRmat_ref.dat b/tests/09_DeePKS/NO_KP_deepks_UT/iRmat_ref.dat new file mode 100644 index 0000000000..3578fe72ea --- /dev/null +++ b/tests/09_DeePKS/NO_KP_deepks_UT/iRmat_ref.dat @@ -0,0 +1,75 @@ +0 0 0 +0 0 1 +0 1 0 +0 1 1 +0 1 1 +0 0 2 +0 0 0 +0 1 2 +0 1 0 +0 1 0 +0 2 0 +0 2 1 +0 0 0 +0 0 1 +0 0 1 +0 2 2 +0 2 0 +0 0 2 +0 0 0 +0 0 0 +0 2 2 +0 2 0 +0 0 2 +0 0 0 +0 0 0 +0 0 0 +0 1 0 +0 1 0 +0 1 1 +0 1 0 +0 2 0 +0 0 0 +0 0 0 +0 0 1 +0 0 0 +0 2 0 +0 0 0 +0 0 0 +0 0 1 +0 0 0 +0 2 2 +0 0 2 +0 0 2 +0 0 0 +0 0 2 +0 2 0 +0 0 0 +0 0 0 +0 0 1 +0 0 0 +0 0 0 +0 1 0 +0 1 0 +0 1 1 +0 0 0 +0 2 0 +0 0 0 +0 0 0 +0 0 1 +0 2 0 +0 2 0 +0 0 0 +0 0 0 +0 0 1 +0 2 0 +0 2 2 +0 0 2 +0 0 2 +0 0 0 +0 2 2 +0 0 0 +0 1 0 +0 1 0 +0 1 1 +0 0 0 diff --git a/tests/09_DeePKS/NO_KP_deepks_UT/jle.orb b/tests/09_DeePKS/NO_KP_deepks_UT/jle.orb new file mode 100644 index 0000000000..6fecaa8b68 --- /dev/null +++ b/tests/09_DeePKS/NO_KP_deepks_UT/jle.orb @@ -0,0 +1,336 @@ +--------------------------------------------------------------------------- +Energy Cutoff(Ry) 20 +Radius Cutoff(a.u.) 2 +Lmax 2 +Number of Sorbitals--> 2 +Number of Porbitals--> 2 +Number of Dorbitals--> 2 +--------------------------------------------------------------------------- +SUMMARY END + +Mesh 205 +dr 0.01 + Type L N + 0 0 0 +1.000000000000e+00 9.999588771557e-01 9.998355147105e-01 9.996299309272e-01 +9.993421562398e-01 9.989722332485e-01 9.985202167122e-01 9.979861735385e-01 +9.973701827725e-01 9.966723355824e-01 9.958927352436e-01 9.950314971204e-01 +9.940887486459e-01 9.930646292992e-01 9.919592905814e-01 9.907728959881e-01 +9.895056209813e-01 9.881576529582e-01 9.867291912182e-01 9.852204469278e-01 +9.836316430835e-01 9.819630144724e-01 9.802148076310e-01 9.783872808018e-01 +9.764807038877e-01 9.744953584044e-01 9.724315374315e-01 9.702895455599e-01 +9.680696988392e-01 9.657723247216e-01 9.633977620041e-01 9.609463607696e-01 +9.584184823246e-01 9.558144991363e-01 9.531347947667e-01 9.503797638053e-01 +9.475498118000e-01 9.446453551854e-01 9.416668212101e-01 9.386146478614e-01 +9.354892837887e-01 9.322911882241e-01 9.290208309025e-01 9.256786919789e-01 +9.222652619442e-01 9.187810415390e-01 9.152265416659e-01 9.116022833003e-01 +9.079087973984e-01 9.041466248047e-01 9.003163161571e-01 8.964184317906e-01 +8.924535416387e-01 8.884222251345e-01 8.843250711084e-01 8.801626776859e-01 +8.759356521824e-01 8.716446109973e-01 8.672901795064e-01 8.628729919524e-01 +8.583936913342e-01 8.538529292946e-01 8.492513660070e-01 8.445896700594e-01 +8.398685183386e-01 8.350885959117e-01 8.302505959068e-01 8.253552193925e-01 +8.204031752555e-01 8.153951800774e-01 8.103319580098e-01 8.052142406487e-01 +8.000427669069e-01 7.948182828860e-01 7.895415417463e-01 7.842133035766e-01 +7.788343352618e-01 7.734054103501e-01 7.679273089189e-01 7.624008174394e-01 +7.568267286407e-01 7.512058413722e-01 7.455389604655e-01 7.398268965953e-01 +7.340704661391e-01 7.282704910361e-01 7.224277986456e-01 7.165432216037e-01 +7.106175976801e-01 7.046517696336e-01 6.986465850665e-01 6.926028962792e-01 +6.865215601233e-01 6.804034378540e-01 6.742493949824e-01 6.680603011269e-01 +6.618370298634e-01 6.555804585759e-01 6.492914683061e-01 6.429709436022e-01 +6.366197723676e-01 6.302388457091e-01 6.238290577843e-01 6.173913056492e-01 +6.109264891046e-01 6.044355105434e-01 5.979192747958e-01 5.913786889759e-01 +5.848146623272e-01 5.782281060680e-01 5.716199332362e-01 5.649910585351e-01 +5.583423981773e-01 5.516748697303e-01 5.449893919607e-01 5.382868846789e-01 +5.315682685835e-01 5.248344651061e-01 5.180863962557e-01 5.113249844635e-01 +5.045511524272e-01 4.977658229563e-01 4.909699188170e-01 4.841643625769e-01 +4.773500764508e-01 4.705279821460e-01 4.636990007082e-01 4.568640523676e-01 +4.500240563852e-01 4.431799308997e-01 4.363325927746e-01 4.294829574454e-01 +4.226319387680e-01 4.157804488670e-01 4.089293979840e-01 4.020796943279e-01 +3.952322439241e-01 3.883879504654e-01 3.815477151626e-01 3.747124365970e-01 +3.678830105719e-01 3.610603299660e-01 3.542452845872e-01 3.474387610270e-01 +3.406416425155e-01 3.338548087775e-01 3.270791358895e-01 3.203154961370e-01 +3.135647578731e-01 3.068277853781e-01 3.001054387191e-01 2.933985736122e-01 +2.867080412838e-01 2.800346883342e-01 2.733793566016e-01 2.667428830275e-01 +2.601260995228e-01 2.535298328351e-01 2.469549044172e-01 2.404021302969e-01 +2.338723209473e-01 2.273662811591e-01 2.208848099136e-01 2.144287002569e-01 +2.079987391757e-01 2.015957074739e-01 1.952203796511e-01 1.888735237815e-01 +1.825559013953e-01 1.762682673602e-01 1.700113697655e-01 1.637859498067e-01 +1.575927416716e-01 1.514324724285e-01 1.453058619151e-01 1.392136226293e-01 +1.331564596211e-01 1.271350703868e-01 1.211501447635e-01 1.152023648265e-01 +1.092924047871e-01 1.034209308931e-01 9.758860132936e-02 9.179606612189e-02 +8.604396704195e-02 8.033293751264e-02 7.466360251697e-02 6.903657850753e-02 +6.345247331791e-02 5.791188607588e-02 5.241540711817e-02 4.696361790712e-02 +4.155709094895e-02 3.619638971392e-02 3.088206855820e-02 2.561467264749e-02 +2.039473788254e-02 1.522279082639e-02 1.009934863353e-02 5.024918980770e-03 +8.824636488425e-14 -4.974919786756e-03 -9.899361531700e-03 -1.477285612199e-02 +-1.959494423991e-02 + Type L N + 0 0 1 +1.000000000000e+00 9.998355147105e-01 9.993421562398e-01 9.985202167122e-01 +9.973701827725e-01 9.958927352436e-01 9.940887486459e-01 9.919592905814e-01 +9.895056209813e-01 9.867291912182e-01 9.836316430835e-01 9.802148076310e-01 +9.764807038877e-01 9.724315374315e-01 9.680696988392e-01 9.633977620041e-01 +9.584184823246e-01 9.531347947667e-01 9.475498117999e-01 9.416668212101e-01 +9.354892837886e-01 9.290208309025e-01 9.222652619442e-01 9.152265416659e-01 +9.079087973984e-01 9.003163161571e-01 8.924535416387e-01 8.843250711084e-01 +8.759356521824e-01 8.672901795064e-01 8.583936913341e-01 8.492513660070e-01 +8.398685183386e-01 8.302505959068e-01 8.204031752555e-01 8.103319580098e-01 +8.000427669069e-01 7.895415417463e-01 7.788343352617e-01 7.679273089188e-01 +7.568267286407e-01 7.455389604655e-01 7.340704661390e-01 7.224277986455e-01 +7.106175976801e-01 6.986465850664e-01 6.865215601232e-01 6.742493949824e-01 +6.618370298633e-01 6.492914683061e-01 6.366197723676e-01 6.238290577843e-01 +6.109264891046e-01 5.979192747957e-01 5.848146623272e-01 5.716199332362e-01 +5.583423981772e-01 5.449893919607e-01 5.315682685834e-01 5.180863962557e-01 +5.045511524271e-01 4.909699188170e-01 4.773500764508e-01 4.636990007081e-01 +4.500240563851e-01 4.363325927745e-01 4.226319387680e-01 4.089293979839e-01 +3.952322439241e-01 3.815477151626e-01 3.678830105718e-01 3.542452845871e-01 +3.406416425154e-01 3.270791358894e-01 3.135647578731e-01 3.001054387191e-01 +2.867080412837e-01 2.733793566015e-01 2.601260995227e-01 2.469549044171e-01 +2.338723209472e-01 2.208848099135e-01 2.079987391756e-01 1.952203796510e-01 +1.825559013952e-01 1.700113697655e-01 1.575927416715e-01 1.453058619151e-01 +1.331564596211e-01 1.211501447634e-01 1.092924047871e-01 9.758860132929e-02 +8.604396704188e-02 7.466360251690e-02 6.345247331784e-02 5.241540711810e-02 +4.155709094888e-02 3.088206855813e-02 2.039473788247e-02 1.009934863346e-02 +2.180811153812e-14 -9.899361531766e-03 -1.959494423998e-02 -2.908311310810e-02 +-3.836039164508e-02 -4.742346358301e-02 -5.626917445163e-02 -6.489453302867e-02 +-7.329671266526e-02 -8.147305248589e-02 -8.942105846211e-02 -9.713840435981e-02 +-1.046229325594e-01 -1.118726547487e-01 -1.188857524890e-01 -1.256605776527e-01 +-1.321956527344e-01 -1.384896710345e-01 -1.445414967152e-01 -1.503501647310e-01 +-1.559148806314e-01 -1.612350202393e-01 -1.663101292030e-01 -1.711399224253e-01 +-1.757242833674e-01 -1.800632632314e-01 -1.841570800207e-01 -1.880061174797e-01 +-1.916109239149e-01 -1.949722108968e-01 -1.980908518463e-01 -2.009678805055e-01 +-2.036044892942e-01 -2.060020275558e-01 -2.081619996917e-01 -2.100860631877e-01 +-2.117760265342e-01 -2.132338470410e-01 -2.144616285503e-01 -2.154616190492e-01 +-2.162362081830e-01 -2.167879246744e-01 -2.171194336468e-01 -2.172335338584e-01 +-2.171331548467e-01 -2.168213539861e-01 -2.163013134635e-01 -2.155763371712e-01 +-2.146498475232e-01 -2.135253821946e-01 -2.122065907892e-01 -2.106972314371e-01 +-2.090011673253e-01 -2.071223631645e-01 -2.050648815953e-01 -2.028328795354e-01 +-2.004306044739e-01 -1.978623907118e-01 -1.951326555560e-01 -1.922458954659e-01 +-1.892066821602e-01 -1.860196586822e-01 -1.826895354318e-01 -1.792210861633e-01 +-1.756191439552e-01 -1.718885971536e-01 -1.680343852933e-01 -1.640614949996e-01 +-1.599749558740e-01 -1.557798363682e-01 -1.514812396472e-01 -1.470842994485e-01 +-1.425941759367e-01 -1.380160515603e-01 -1.333551269115e-01 -1.286166165939e-01 +-1.238057450998e-01 -1.189277427024e-01 -1.139878413639e-01 -1.089912706646e-01 +-1.039432537543e-01 -9.884900333146e-02 -9.371371765056e-02 -8.854257656305e-02 +-8.334073759347e-02 -7.811333205441e-02 -7.286546120297e-02 -6.760219244178e-02 +-6.232855556732e-02 -5.704953906849e-02 -5.177008647810e-02 -4.649509277994e-02 +-4.122940087424e-02 -3.597779810401e-02 -3.074501284474e-02 -2.553571116011e-02 +-2.035449352599e-02 -1.520589162508e-02 -1.009436521457e-02 -5.024299068919e-03 +-2.180811153812e-14 4.974306043314e-03 9.894476794432e-03 1.475645640459e-02 +1.955627809356e-02 + Type L N + 0 1 0 +0.000000000000e+00 7.488637748270e-03 1.497500757073e-02 2.245684235920e-02 +2.993187664049e-02 3.739784739318e-02 4.485249486326e-02 5.229356337864e-02 +5.971880216197e-02 6.712596614162e-02 7.451281676032e-02 8.187712278134e-02 +8.921666109172e-02 9.652921750236e-02 1.038125875446e-01 1.110645772630e-01 +1.182830040039e-01 1.254656971996e-01 1.326104991481e-01 1.397152657871e-01 +1.467778674633e-01 1.537961896959e-01 1.607681339337e-01 1.676916183067e-01 +1.745645783707e-01 1.813849678449e-01 1.881507593431e-01 1.948599450964e-01 +2.015105376695e-01 2.081005706678e-01 2.146280994373e-01 2.210912017554e-01 +2.274879785128e-01 2.338165543868e-01 2.400750785054e-01 2.462617251009e-01 +2.523746941547e-01 2.584122120318e-01 2.643725321043e-01 2.702539353656e-01 +2.760547310324e-01 2.817732571367e-01 2.874078811063e-01 2.929570003335e-01 +2.984190427326e-01 3.037924672851e-01 3.090757645728e-01 3.142674572991e-01 +3.193661007968e-01 3.243702835244e-01 3.292786275485e-01 3.340897890136e-01 +3.388024585987e-01 3.434153619598e-01 3.479272601599e-01 3.523369500844e-01 +3.566432648428e-01 3.608450741561e-01 3.649412847309e-01 3.689308406179e-01 +3.728127235570e-01 3.765859533068e-01 3.802495879603e-01 3.838027242452e-01 +3.872444978093e-01 3.905740834913e-01 3.937906955755e-01 3.968935880325e-01 +3.998820547434e-01 4.027554297095e-01 4.055130872460e-01 4.081544421604e-01 +4.106789499151e-01 4.130861067746e-01 4.153754499369e-01 4.175465576492e-01 +4.195990493076e-01 4.215325855415e-01 4.233468682816e-01 4.250416408125e-01 +4.266166878097e-01 4.280718353596e-01 4.294069509652e-01 4.306219435350e-01 +4.317167633563e-01 4.326914020530e-01 4.335458925272e-01 4.342803088856e-01 +4.348947663497e-01 4.353894211511e-01 4.357644704103e-01 4.360201520010e-01 +4.361567443983e-01 4.361745665118e-01 4.360739775033e-01 4.358553765897e-01 +4.355192028303e-01 4.350659348995e-01 4.344960908441e-01 4.338102278270e-01 +4.330089418547e-01 4.320928674913e-01 4.310626775581e-01 4.299190828181e-01 +4.286628316477e-01 4.272947096929e-01 4.258155395130e-01 4.242261802101e-01 +4.225275270446e-01 4.207205110385e-01 4.188060985641e-01 4.167852909214e-01 +4.146591239012e-01 4.124286673363e-01 4.100950246402e-01 4.076593323337e-01 +4.051227595591e-01 4.024865075830e-01 3.997518092873e-01 3.969199286487e-01 +3.939921602073e-01 3.909698285243e-01 3.878542876288e-01 3.846469204537e-01 +3.813491382626e-01 3.779623800657e-01 3.744881120259e-01 3.709278268561e-01 +3.672830432068e-01 3.635553050448e-01 3.597461810232e-01 3.558572638428e-01 +3.518901696056e-01 3.478465371601e-01 3.437280274391e-01 3.395363227902e-01 +3.352731262987e-01 3.309401611045e-01 3.265391697118e-01 3.220719132928e-01 +3.175401709852e-01 3.129457391848e-01 3.082904308316e-01 3.035760746916e-01 +2.988045146335e-01 2.939776089012e-01 2.890972293815e-01 2.841652608687e-01 +2.791836003246e-01 2.741541561365e-01 2.690788473710e-01 2.639596030257e-01 +2.587983612786e-01 2.535970687348e-01 2.483576796724e-01 2.430821552860e-01 +2.377724629297e-01 2.324305753586e-01 2.270584699704e-01 2.216581280466e-01 +2.162315339932e-01 2.107806745824e-01 2.053075381949e-01 1.998141140629e-01 +1.943023915144e-01 1.887743592194e-01 1.832320044375e-01 1.776773122682e-01 +1.721122649033e-01 1.665388408820e-01 1.609590143496e-01 1.553747543190e-01 +1.497880239360e-01 1.442007797487e-01 1.386149709812e-01 1.330325388114e-01 +1.274554156537e-01 1.218855244475e-01 1.163247779500e-01 1.107750780353e-01 +1.052383149992e-01 9.971636687013e-02 9.421109872690e-02 8.872436202246e-02 +8.325799391531e-02 7.781381660774e-02 7.239363669171e-02 6.699924450243e-02 +6.163241347987e-02 5.629489953858e-02 5.098844044591e-02 4.571475520896e-02 +4.047554347042e-02 3.527248491362e-02 3.010723867693e-02 2.498144277778e-02 +1.989671354647e-02 1.485464507002e-02 9.856808646282e-03 4.904752248416e-03 +8.084377910810e-14 -4.855948338613e-03 -9.661617874115e-03 -1.441555907126e-02 +-1.911634823371e-02 + Type L N + 0 1 1 +0.000000000000e+00 1.287349883354e-02 2.573547475531e-02 3.857441713205e-02 +5.137883987341e-02 6.413729366771e-02 7.683837817512e-02 8.947075416401e-02 +1.020231555764e-01 1.144844015086e-01 1.268434080930e-01 1.390892002673e-01 +1.512109234179e-01 1.631978548831e-01 1.750394153042e-01 1.867251798097e-01 +1.982448890213e-01 2.095884598674e-01 2.207459961937e-01 2.317077991564e-01 +2.424643773877e-01 2.530064569210e-01 2.633249908654e-01 2.734111688171e-01 +2.832564259984e-01 2.928524521123e-01 3.021911999042e-01 3.112648934202e-01 +3.200660359520e-01 3.285874176609e-01 3.368221228716e-01 3.447635370265e-01 +3.524053532954e-01 3.597415788301e-01 3.667665406600e-01 3.734748912194e-01 +3.798616135028e-01 3.859220258413e-01 3.916517862950e-01 3.970468966577e-01 +4.021037060685e-01 4.068189142273e-01 4.111895742108e-01 4.152130948861e-01 +4.188872429201e-01 4.222101443820e-01 4.251802859385e-01 4.277965156404e-01 +4.300580433007e-01 4.319644404634e-01 4.335156399653e-01 4.347119350899e-01 +4.355539783170e-01 4.360427796690e-01 4.361797046561e-01 4.359664718249e-01 +4.354051499131e-01 4.344981546136e-01 4.332482449540e-01 4.316585192952e-01 +4.297324109555e-01 4.274736834644e-01 4.248864254548e-01 4.219750451979e-01 +4.187442647891e-01 4.151991139927e-01 4.113449237518e-01 4.071873193743e-01 +4.027322134004e-01 3.979857981635e-01 3.929545380524e-01 3.876451614846e-01 +3.820646526015e-01 3.762202426951e-01 3.701194013774e-01 3.637698275033e-01 +3.571794398579e-01 3.503563676209e-01 3.433089406181e-01 3.360456793733e-01 +3.285752849731e-01 3.209066287553e-01 3.130487418352e-01 3.050108044820e-01 +2.968021353580e-01 2.884321806341e-01 2.799105029940e-01 2.712467705418e-01 +2.624507456248e-01 2.535322735859e-01 2.445012714596e-01 2.353677166230e-01 +2.261416354183e-01 2.168330917584e-01 2.074521757289e-01 1.980089922025e-01 +1.885136494756e-01 1.789762479447e-01 1.694068688318e-01 1.598155629754e-01 +1.502123396984e-01 1.406071557664e-01 1.310099044496e-01 1.214304047005e-01 +1.118783904600e-01 1.023635001051e-01 9.289526604868e-02 8.348310450536e-02 +7.413630543331e-02 6.486402266461e-02 5.567526423484e-02 4.657888292306e-02 +3.758356701260e-02 2.869783128319e-02 1.993000824438e-02 1.128823961984e-02 +2.780468092110e-03 -5.585570683343e-03 -1.380235578603e-02 -2.186258845205e-02 +-2.975919920140e-02 -3.748535466356e-02 -4.503446409415e-02 -5.240018557589e-02 +-5.957643189757e-02 -6.655737610510e-02 -7.333745671913e-02 -7.991138261421e-02 +-8.627413755471e-02 -9.242098438353e-02 -9.834746885961e-02 -1.040494231411e-01 +-1.095229689111e-01 -1.147645201439e-01 -1.197707855094e-01 -1.245387704143e-01 +-1.290657786791e-01 -1.333494138503e-01 -1.373875801476e-01 -1.411784830461e-01 +-1.447206294949e-01 -1.480128277725e-01 -1.510541869820e-01 -1.538441161856e-01 +-1.563823231847e-01 -1.586688129443e-01 -1.607038856690e-01 -1.624881345314e-01 +-1.640224430593e-01 -1.653079821847e-01 -1.663462069605e-01 -1.671388529506e-01 +-1.676879322986e-01 -1.679957294811e-01 -1.680647967533e-01 -1.678979492927e-01 +-1.674982600487e-01 -1.668690543061e-01 -1.660139039692e-01 -1.649366215765e-01 +-1.636412540531e-01 -1.621320762106e-01 -1.604135840036e-01 -1.584904875512e-01 +-1.563677039349e-01 -1.540503497817e-01 -1.515437336425e-01 -1.488533481770e-01 +-1.459848621550e-01 -1.429441122854e-01 -1.397370948832e-01 -1.363699573865e-01 +-1.328489897337e-01 -1.291806156141e-01 -1.253713836005e-01 -1.214279581791e-01 +-1.173571106849e-01 -1.131657101573e-01 -1.088607141251e-01 -1.044491593355e-01 +-9.993815243651e-02 -9.533486062644e-02 -9.064650228155e-02 -8.588033757396e-02 +-8.104365909172e-02 -7.614378247274e-02 -7.118803706450e-02 -6.618375662098e-02 +-6.113827004858e-02 -5.605889221235e-02 -5.095291481399e-02 -4.582759735266e-02 +-4.069015817980e-02 -3.554776565875e-02 -3.040752943992e-02 -2.527649186198e-02 +-2.016161948939e-02 -1.506979479638e-02 -1.000780800721e-02 -4.982349102379e-03 +-6.437579797176e-15 4.932773078295e-03 9.809627048423e-03 1.462434920303e-02 +1.937086424077e-02 + Type L N + 0 2 0 +0.000000000000e+00 5.535915211195e-05 2.213972080154e-04 4.979959858820e-04 +8.849586090862e-04 1.382009641449e-03 1.988795277024e-03 2.704883585487e-03 +3.529764810931e-03 4.462851724475e-03 5.503480030692e-03 6.650908827167e-03 +7.904321117094e-03 9.262824374522e-03 1.072545116179e-02 1.229115979875e-02 +1.395883508334e-02 1.572728906294e-02 1.759526185599e-02 1.956142252333e-02 +2.162436998860e-02 2.378263400702e-02 2.603467618203e-02 2.837889102883e-02 +3.081360708426e-02 3.333708806224e-02 3.594753405377e-02 3.864308277085e-02 +4.142181083340e-02 4.428173509816e-02 4.722081402876e-02 5.023694910596e-02 +5.332798627704e-02 5.649171744338e-02 5.972588198510e-02 6.302816832176e-02 +6.639621550800e-02 6.982761486302e-02 7.331991163267e-02 7.687060668312e-02 +8.047715822478e-02 8.413698356539e-02 8.784746089095e-02 9.160593107325e-02 +9.540969950283e-02 9.925603794593e-02 1.031421864243e-01 1.070653551164e-01 +1.110227262786e-01 1.150114561856e-01 1.190286770876e-01 1.230714991840e-01 +1.271370126117e-01 1.312222894466e-01 1.353243857168e-01 1.394403434265e-01 +1.435671925888e-01 1.477019532664e-01 1.518416376183e-01 1.559832519508e-01 +1.601237987727e-01 1.642602788521e-01 1.683896932733e-01 1.725090454930e-01 +1.766153433942e-01 1.807056013362e-01 1.847768421993e-01 1.888260994226e-01 +1.928504190344e-01 1.968468616722e-01 2.008125045921e-01 2.047444436666e-01 +2.086397953674e-01 2.124956987344e-01 2.163093173272e-01 2.200778411595e-01 +2.237984886144e-01 2.274685083383e-01 2.310851811145e-01 2.346458217128e-01 +2.381477807144e-01 2.415884463125e-01 2.449652460847e-01 2.482756487386e-01 +2.515171658267e-01 2.546873534324e-01 2.577838138234e-01 2.608041970725e-01 +2.637462026449e-01 2.666075809504e-01 2.693861348596e-01 2.720797211832e-01 +2.746862521131e-01 2.772036966244e-01 2.796300818381e-01 2.819634943422e-01 +2.842020814712e-01 2.863440525436e-01 2.883876800545e-01 2.903313008259e-01 +2.921733171103e-01 2.939121976491e-01 2.955464786849e-01 2.970747649265e-01 +2.984957304652e-01 2.998081196445e-01 3.010107478787e-01 3.021025024244e-01 +3.030823430996e-01 3.039493029542e-01 3.047024888889e-01 3.053410822225e-01 +3.058643392084e-01 3.062715914985e-01 3.065622465553e-01 3.067357880110e-01 +3.067917759749e-01 3.067298472868e-01 3.065497157184e-01 3.062511721212e-01 +3.058340845212e-01 3.052983981609e-01 3.046441354877e-01 3.038713960897e-01 +3.029803565781e-01 3.019712704172e-01 3.008444677015e-01 2.996003548804e-01 +2.982394144306e-01 2.967622044769e-01 2.951693583611e-01 2.934615841593e-01 +2.916396641495e-01 2.897044542274e-01 2.876568832728e-01 2.854979524671e-01 +2.832287345604e-01 2.808503730919e-01 2.783640815610e-01 2.757711425520e-01 +2.730729068125e-01 2.702707922851e-01 2.673662830950e-01 2.643609284924e-01 +2.612563417520e-01 2.580541990295e-01 2.547562381760e-01 2.513642575117e-01 +2.478801145597e-01 2.443057247399e-01 2.406430600253e-01 2.368941475610e-01 +2.330610682465e-01 2.291459552836e-01 2.251509926894e-01 2.210784137768e-01 +2.169304996024e-01 2.127095773847e-01 2.084180188913e-01 2.040582387984e-01 +1.996326930228e-01 1.951438770279e-01 1.905943241041e-01 1.859866036266e-01 +1.813233192898e-01 1.766071073212e-01 1.718406346748e-01 1.670265972066e-01 +1.621677178324e-01 1.572667446692e-01 1.523264491631e-01 1.473496242024e-01 +1.423390822201e-01 1.372976532846e-01 1.322281831820e-01 1.271335314898e-01 +1.220165696442e-01 1.168801790025e-01 1.117272489014e-01 1.065606747123e-01 +1.013833558967e-01 9.619819406050e-02 9.100809101075e-02 8.581594681512e-02 +8.062465786566e-02 7.543711494816e-02 7.025620131870e-02 6.508479078835e-02 +5.992574581769e-02 5.478191562228e-02 4.965613429040e-02 4.455121891443e-02 +3.946996773718e-02 3.441515831428e-02 2.938954569414e-02 2.439586061649e-02 +1.943680773090e-02 1.451506383641e-02 9.633276143556e-03 4.794060559853e-03 +4.131818525851e-15 -4.746357278055e-03 -9.442499310155e-03 -1.408595203483e-02 +-1.867428087307e-02 + Type L N + 0 2 1 +0.000000000000e+00 1.378450216078e-04 5.511357836611e-04 1.239139794773e-03 +2.200637640491e-03 3.433925082304e-03 4.936815994628e-03 6.706646131180e-03 +8.740277714831e-03 1.103410484304e-02 1.358405969917e-02 1.638561955894e-02 +1.943381457962e-02 2.272323635834e-02 2.624804724465e-02 3.000199039070e-02 +3.397840052178e-02 3.817021540801e-02 4.256998801741e-02 4.716989932876e-02 +5.196177178198e-02 5.693708334247e-02 6.208698215471e-02 6.740230175952e-02 +7.287357684839e-02 7.849105952722e-02 8.424473606111e-02 9.012434407095e-02 +9.611939015158e-02 1.022191678810e-01 1.084127761890e-01 1.146891380531e-01 +1.210370194893e-01 1.274450488047e-01 1.339017360777e-01 1.403954928328e-01 +1.469146518750e-01 1.534474872496e-01 1.599822342926e-01 1.665071097367e-01 +1.730103318384e-01 1.794801404905e-01 1.859048172859e-01 1.922727054973e-01 +1.985722299387e-01 2.047919166733e-01 2.109204125357e-01 2.169465044320e-01 +2.228591383867e-01 2.286474383027e-01 2.343007244016e-01 2.398085313134e-01 +2.451606257844e-01 2.503470239719e-01 2.553580082979e-01 2.601841438308e-01 +2.648162941690e-01 2.692456367986e-01 2.734636778979e-01 2.774622665664e-01 +2.812336084509e-01 2.847702787484e-01 2.880652345620e-01 2.911118265905e-01 +2.939038101309e-01 2.964353553767e-01 2.987010569941e-01 3.006959429600e-01 +3.024154826495e-01 3.038555941563e-01 3.050126508376e-01 3.058834870714e-01 +3.064654032169e-01 3.067561697721e-01 3.067540307204e-01 3.064577060637e-01 +3.058663935363e-01 3.049797694999e-01 3.037979890185e-01 3.023216851136e-01 +3.005519672032e-01 2.984904187284e-01 2.961390939721e-01 2.935005140777e-01 +2.905776622752e-01 2.873739783248e-01 2.838933521878e-01 2.801401169391e-01 +2.761190409326e-01 2.718353192356e-01 2.672945643488e-01 2.625027962274e-01 +2.574664316246e-01 2.521922727737e-01 2.466874954338e-01 2.409596363168e-01 +2.350165799226e-01 2.288665448033e-01 2.225180692832e-01 2.159799966602e-01 +2.092614599151e-01 2.023718659557e-01 1.953208794259e-01 1.881184061067e-01 +1.807745759402e-01 1.732997257066e-01 1.657043813846e-01 1.579992402274e-01 +1.501951525855e-01 1.423031035083e-01 1.343341941582e-01 1.262996230683e-01 +1.182106672782e-01 1.100786633801e-01 1.019149885090e-01 9.373104130994e-02 +8.553822291517e-02 7.734791796572e-02 6.917147570869e-02 6.102019120418e-02 +5.290528667402e-02 4.483789302445e-02 3.682903157469e-02 2.888959602278e-02 +2.103033467944e-02 1.326183300055e-02 5.594496447730e-03 -1.961466293644e-03 +-9.396059710778e-03 -1.669951744637e-02 -2.386231784130e-02 -3.087519901112e-02 +-3.772917343115e-02 -4.441554200612e-02 -5.092590760095e-02 -5.725218801079e-02 +-6.338662834879e-02 -6.932181283193e-02 -7.505067594562e-02 -8.056651296961e-02 +-8.586298984831e-02 -9.093415239043e-02 -9.577443478343e-02 -1.003786674102e-01 +-1.047420839562e-01 -1.088603277967e-01 -1.127294576547e-01 -1.163459525234e-01 +-1.197067158441e-01 -1.228090789373e-01 -1.256508036817e-01 -1.282300844387e-01 +-1.305455492228e-01 -1.325962601165e-01 -1.343817129326e-01 -1.359018361263e-01 +-1.371569889621e-01 -1.381479589410e-01 -1.388759584938e-01 -1.393426209511e-01 +-1.395499957974e-01 -1.395005432216e-01 -1.391971279746e-01 -1.386430125484e-01 +-1.378418496907e-01 -1.367976742705e-01 -1.355148945107e-01 -1.339982826069e-01 +-1.322529647502e-01 -1.302844105739e-01 -1.280984220447e-01 -1.257011218207e-01 +-1.230989410988e-01 -1.202986069733e-01 -1.173071293331e-01 -1.141317873188e-01 +-1.107801153683e-01 -1.072598888758e-01 -1.035791094915e-01 -9.974599008950e-02 +-9.576893943205e-02 -9.165654655832e-02 -8.741756492694e-02 -8.306089634124e-02 +-7.859557468680e-02 -7.403074951113e-02 -6.937566947526e-02 -6.463966570746e-02 +-5.983213508908e-02 -5.496252350283e-02 -5.004030907345e-02 -4.507498543086e-02 +-4.007604502571e-02 -3.505296252697e-02 -3.001517833094e-02 -2.497208221092e-02 +-1.993299713613e-02 -1.490716328841e-02 -9.903722304457e-03 -4.931701771028e-03 +4.773444701199e-14 4.882628890872e-03 9.707589564902e-03 1.446645969794e-02 +1.915100382853e-02 diff --git a/tests/09_DeePKS/NO_KP_deepks_UT/model.ptg b/tests/09_DeePKS/NO_KP_deepks_UT/model.ptg new file mode 100644 index 0000000000..400c7e0bd8 Binary files /dev/null and b/tests/09_DeePKS/NO_KP_deepks_UT/model.ptg differ diff --git a/tests/09_DeePKS/NO_KP_deepks_UT/o_delta_ref.dat b/tests/09_DeePKS/NO_KP_deepks_UT/o_delta_ref.dat new file mode 100644 index 0000000000..9e37109564 --- /dev/null +++ b/tests/09_DeePKS/NO_KP_deepks_UT/o_delta_ref.dat @@ -0,0 +1,9 @@ +-0.004461997742 +-0.004432410065 +-0.004439336216 +-0.004446706113 +-0.004415529913 +-0.004423577618 +-0.004421982625 +-0.004394847892 +-0.004401317917 diff --git a/tests/09_DeePKS/NO_KP_deepks_UT/orbpre_ref.dat b/tests/09_DeePKS/NO_KP_deepks_UT/orbpre_ref.dat new file mode 100644 index 0000000000..5a4e6dfc11 --- /dev/null +++ b/tests/09_DeePKS/NO_KP_deepks_UT/orbpre_ref.dat @@ -0,0 +1,27 @@ +0.2035597949 0.0004215229555 0.08186309906 0.1289546843 0.138156727 0.004699812287 0.006211347756 0.006570054184 -2.440101941e-22 -5.125203867e-22 4.932164871e-07 1.975355456e-06 4.093233521e-05 -1.143490549e-22 -2.420871593e-22 3.720239362e-07 1.411841259e-06 1.695323634e-05 +0.05497891088 0.0002692312004 3.72422203e-05 7.593244657e-05 0.0005979408965 1.415628528e-05 2.840298733e-05 0.0002320720617 9.266058353e-12 1.957319992e-05 2.684464514e-05 3.184363029e-05 0.0002211876779 2.096448589e-11 8.129634514e-06 1.117843333e-05 1.317459924e-05 9.335083701e-05 +0.07475183576 0.0001178148593 3.169431729e-06 2.427595713e-05 6.959701492e-05 1.223218079e-06 9.275839306e-06 2.636627278e-05 8.092355347e-08 2.821184378e-07 2.822994573e-06 8.511182446e-06 1.558751215e-05 3.554282058e-08 1.197633635e-07 1.41213441e-06 4.252042045e-06 6.775639293e-06 +0.203539683 0.0004200500763 0.08162668771 0.128125964 0.138324721 0.004708023418 0.00615662993 0.006580961506 -3.125196868e-22 -1.144633606e-21 4.811205805e-07 1.927108578e-06 4.076534314e-05 2.006697945e-22 -4.275495153e-23 3.629016273e-07 1.377493521e-06 1.68815649e-05 +0.05460861494 0.0002621450038 3.716265672e-05 7.295625694e-05 0.000594634269 1.412591178e-05 2.729068248e-05 0.0002308581101 9.044651437e-12 1.927422013e-05 2.663893544e-05 3.171050909e-05 0.0002210694533 2.046359329e-11 8.006173262e-06 1.109248588e-05 1.311914227e-05 9.331088476e-05 +0.0729010348 0.0001162235395 3.151571193e-06 2.432622157e-05 6.867162072e-05 1.216463388e-06 9.295244932e-06 2.601743523e-05 8.060691691e-08 2.728496902e-07 2.854091231e-06 8.627290677e-06 1.544522501e-05 3.544958514e-08 1.156276488e-07 1.427164122e-06 4.299843934e-06 6.726686173e-06 +0.2034470227 0.0004200413302 0.08026560705 0.1302274171 0.1382404677 0.004663555859 0.006246796597 0.006573660032 1.212176922e-23 2.489749017e-23 4.812812822e-07 1.927773602e-06 4.074207844e-05 -8.582145063e-23 -6.330497248e-23 3.630080376e-07 1.377723897e-06 1.687559201e-05 +0.0544882815 0.0002570769221 3.74821859e-05 7.319982598e-05 0.0005883875069 1.424772661e-05 2.738362565e-05 0.0002285487687 9.052797081e-12 1.926242846e-05 2.724281373e-05 3.145354596e-05 0.000219780491 2.048216055e-11 8.00154646e-06 1.134678042e-05 1.301064616e-05 9.279015223e-05 +0.07289466215 0.0001149364372 3.211738568e-06 2.428891452e-05 6.910716491e-05 1.238876129e-06 9.276378469e-06 2.617835779e-05 8.15279949e-08 2.841699934e-07 2.829563132e-06 8.410482485e-06 1.559889754e-05 3.58503818e-08 1.205266817e-07 1.41663125e-06 4.18226326e-06 6.813576189e-06 +0.20289508 0.0003710000386 0.08009353288 0.1259291228 0.1399559022 0.004796494788 0.006237225409 0.00653362932 -3.398993376e-22 7.74938736e-22 4.845459805e-07 2.018214962e-06 3.974788671e-05 -1.855840806e-23 -8.161357603e-23 3.642577407e-07 1.464022111e-06 1.626585032e-05 +0.0501496753 0.0001585578554 3.725961327e-05 0.0001194294729 0.0005769121573 1.416628099e-05 4.481736058e-05 0.0002241180535 9.194152947e-12 1.513609829e-05 2.861000825e-05 3.762320662e-05 0.0002340823897 2.073219757e-11 6.304231189e-06 1.18734932e-05 1.56325465e-05 9.876200319e-05 +0.06800916174 4.472056683e-05 3.156878736e-06 2.42821792e-05 6.919422158e-05 1.215589245e-06 9.292615125e-06 2.621786419e-05 7.981665631e-08 2.634499348e-07 2.810192725e-06 8.440183041e-06 1.543626452e-05 3.501027796e-08 1.10676336e-07 1.405189e-06 4.215970121e-06 6.716416751e-06 +0.2028041309 0.000370796419 0.08007272207 0.125282095 0.1402506432 0.004816862904 0.006191399157 0.006551626505 -1.64503004e-22 1.003077523e-21 4.72275653e-07 1.9672264e-06 3.959994952e-05 5.559116808e-22 2.25351035e-22 3.550314645e-07 1.427066027e-06 1.62084267e-05 +0.04988571864 0.0001565334349 3.720306461e-05 0.0001172686217 0.0005754125531 1.414494595e-05 4.401090495e-05 0.000223569274 8.95652669e-12 1.480999027e-05 2.854230567e-05 3.763277317e-05 0.0002333157525 2.019694191e-11 6.168723453e-06 1.184296394e-05 1.563759282e-05 9.844899828e-05 +0.06621903348 4.426636454e-05 3.147745072e-06 2.435234875e-05 6.835128908e-05 1.212154685e-06 9.318916926e-06 2.590211492e-05 7.966898027e-08 2.557837308e-07 2.844426769e-06 8.574137603e-06 1.529664361e-05 3.500084908e-08 1.071956072e-07 1.421949393e-06 4.272244621e-06 6.669553122e-06 +0.2028012586 0.0003708977199 0.07881452129 0.1273441182 0.1400787754 0.004769705611 0.006277349592 0.006541207401 -4.171338798e-23 -7.35246146e-22 4.727161445e-07 1.968324491e-06 3.957204706e-05 4.967273926e-22 3.847446622e-22 3.553807802e-07 1.427778968e-06 1.619696726e-05 +0.0498625041 0.0001563154686 3.746532796e-05 0.0001176814191 0.0005707542026 1.424448189e-05 4.416647476e-05 0.0002218541241 8.962692576e-12 1.484455926e-05 2.906810048e-05 3.748472503e-05 0.0002310956922 2.021058621e-11 6.182878802e-06 1.206310311e-05 1.5575626e-05 9.754866268e-05 +0.06634136985 4.438322155e-05 3.205197569e-06 2.431389726e-05 6.88264562e-05 1.233635215e-06 9.299628987e-06 2.607762961e-05 8.079586633e-08 2.670016447e-07 2.820946932e-06 8.354592771e-06 1.54582477e-05 3.547142043e-08 1.120867841e-07 1.412023241e-06 4.153293043e-06 6.759832091e-06 +0.2033630042 0.0004077313766 0.07984145739 0.1301651433 0.139365185 0.004470591004 0.006216407106 0.006601437089 -2.377579452e-23 1.371842698e-21 4.671447006e-07 1.920993286e-06 4.078699327e-05 -2.667787341e-22 1.491847535e-22 3.507545561e-07 1.372803943e-06 1.697047616e-05 +0.05031816566 0.0002065744278 3.780662408e-05 0.0001754706878 0.0005833801342 1.436343897e-05 6.592391776e-05 0.0002265829563 9.047679263e-12 9.95116695e-06 4.282407708e-05 3.601712706e-05 0.0002193958018 2.038756429e-11 4.134013205e-06 1.777855492e-05 1.499244004e-05 9.270856351e-05 +0.06965049373 8.684482284e-05 3.139520224e-06 2.416609448e-05 6.711835894e-05 1.212710078e-06 9.259132724e-06 2.543589401e-05 7.367319063e-08 2.764597314e-07 2.797043861e-06 8.548700045e-06 1.528801577e-05 3.235376502e-08 1.176688476e-07 1.39462168e-06 4.260089565e-06 6.66340398e-06 +0.203348661 0.0004070389682 0.07996598651 0.1295364987 0.139575914 0.004484757016 0.006170083786 0.006616340297 -3.071219254e-22 -1.853083835e-21 4.561525393e-07 1.875518882e-06 4.065729547e-05 -2.099314987e-22 -1.237658555e-22 3.425039653e-07 1.34020763e-06 1.691515521e-05 +0.05014747825 0.0002076194078 3.777378195e-05 0.0001739317921 0.0005830812365 1.435080873e-05 6.534994418e-05 0.0002264863874 8.834556234e-12 9.636323728e-06 4.302562486e-05 3.589140265e-05 0.0002180790914 1.990665596e-11 4.002709003e-06 1.786006625e-05 1.494087776e-05 9.217497194e-05 +0.06810232224 8.740037013e-05 3.133328488e-06 2.42495334e-05 6.648033976e-05 1.210476245e-06 9.290074181e-06 2.519742565e-05 7.3758016e-08 2.687915032e-07 2.83255562e-06 8.681118166e-06 1.517493074e-05 3.241371929e-08 1.142199602e-07 1.412247093e-06 4.317211499e-06 6.626155361e-06 +0.2033394379 0.0004063133478 0.07862657364 0.1313554028 0.139550502 0.004433766673 0.006251213741 0.006609949881 -3.566083061e-23 -1.514972162e-21 4.560798671e-07 1.8758981e-06 4.060002543e-05 8.73543831e-23 -3.752766477e-23 3.424464239e-07 1.340801099e-06 1.688778155e-05 +0.05001650757 0.0002047283524 3.805471253e-05 0.000173872839 0.0005773438887 1.445756237e-05 6.532833903e-05 0.0002243707132 8.829963757e-12 9.677234398e-06 4.338457454e-05 3.582089292e-05 0.000215914728 1.989637071e-11 4.019688577e-06 1.801091843e-05 1.49109407e-05 9.129909998e-05 +0.06806143065 8.63263686e-05 3.189253865e-06 2.419886891e-05 6.690275045e-05 1.231251045e-06 9.266275056e-06 2.535306376e-05 7.467994368e-08 2.791265468e-07 2.806742628e-06 8.460840637e-06 1.5322774e-05 3.280984024e-08 1.187440827e-07 1.400938957e-06 4.197535855e-06 6.710662662e-06 diff --git a/tests/09_DeePKS/NO_KP_deepks_UT/pdm_ref.dat b/tests/09_DeePKS/NO_KP_deepks_UT/pdm_ref.dat new file mode 100644 index 0000000000..7adbaab3db --- /dev/null +++ b/tests/09_DeePKS/NO_KP_deepks_UT/pdm_ref.dat @@ -0,0 +1,18 @@ +1.829098073 +0.003595392232 +0.8490272341 -0.1740580377 -0.09524926094 -0.1740580377 1.079335651 -0.09355891198 -0.09524926094 -0.09355891198 1.203226586 +0.04334753747 -0.004166022719 -0.001285470213 -0.004166022719 0.05469762591 -0.001023623707 -0.001285470213 -0.001023623707 0.05893572547 +2.659400179e-05 3.981556572e-05 2.937703696e-05 6.068037848e-06 2.608978168e-05 3.981556572e-05 0.0001670522077 0.000128396985 2.797904524e-05 0.000115672994 2.937703696e-05 0.000128396985 0.0001058343295 2.209111518e-05 9.118949265e-05 6.068037848e-06 2.797904524e-05 2.209111518e-05 4.749014145e-06 1.959317025e-05 2.608978168e-05 0.000115672994 9.118949265e-05 1.959317025e-05 8.089534815e-05 +1.644740977e-05 1.625660432e-05 1.237821866e-05 2.341660773e-06 1.041053081e-05 1.625660432e-05 6.938007956e-05 5.238095146e-05 1.155581717e-05 4.776798071e-05 1.237821866e-05 5.238095146e-05 4.468501447e-05 9.116764038e-06 3.764156091e-05 2.341660773e-06 1.155581717e-05 9.116764038e-06 1.965735911e-06 8.100680269e-06 1.041053081e-05 4.776798071e-05 3.764156091e-05 8.100680269e-06 3.342485773e-05 +0.4644558568 +0.001878782073 +0.002884826402 0.001785295542 0.001143167089 0.001785295542 0.002094276435 0.001458859514 0.001143167089 0.001458859514 0.001705937557 +0.001112783091 0.0006966926645 0.0004503369843 0.0006966926645 0.0008110613751 0.0005656206165 0.0004503369843 0.0005656206165 0.000655547662 +0.0002795157442 0.000279351416 0.0002118042808 1.551191055e-05 5.698163506e-05 0.000279351416 0.001006777132 0.0006959354568 0.0002804089628 0.0005385278674 0.0002118042808 0.0006959354568 0.0007363775966 5.560526846e-05 0.0004142401613 1.551191055e-05 0.0002804089628 5.560526846e-05 0.000221824679 5.432139371e-05 5.698163506e-05 0.0005385278674 0.0004142401613 5.432139371e-05 0.0005132501266 +0.0001162122756 0.0001171440251 8.886809703e-05 6.641409461e-06 2.455431543e-05 0.0001171440251 0.0004244147362 0.0002941125191 0.0001175063726 0.0002283044665 8.886809703e-05 0.0002941125191 0.0003098920049 2.40040228e-05 0.0001757195668 6.641409461e-06 0.0001175063726 2.40040228e-05 9.227199331e-05 2.333458618e-05 2.455431543e-05 0.0002283044665 0.0001757195668 2.333458618e-05 0.0002165941562 +0.6269313444 +0.0007429165505 +0.0004662807159 -7.593680204e-05 -0.0001761958779 -7.593680204e-05 9.7527937e-05 0.0001357171454 -0.0001761958779 0.0001357171454 0.0002973992443 +0.0001796082467 -2.700581308e-05 -6.638667511e-05 -2.700581308e-05 3.673014514e-05 5.039491517e-05 -6.638667511e-05 5.039491517e-05 0.000110976146 +8.333106992e-05 1.432806967e-05 1.202804904e-05 4.704489998e-06 -1.053002591e-05 1.432806967e-05 3.528996212e-05 2.176201914e-05 1.684999799e-05 -2.625749051e-05 1.202804904e-05 2.176201914e-05 7.307313825e-05 2.94776476e-05 -4.458130742e-05 4.704489998e-06 1.684999799e-05 2.94776476e-05 1.63669368e-05 -2.331768637e-05 -1.053002591e-05 -2.625749051e-05 -4.458130742e-05 -2.331768637e-05 3.572969161e-05 +4.44132817e-05 6.099053728e-06 6.51282944e-06 2.025094068e-06 -5.327649216e-06 6.099053728e-06 1.567091833e-05 7.904027037e-06 7.058687339e-06 -1.104165946e-05 6.51282944e-06 7.904027037e-06 3.086995875e-05 1.194757521e-05 -1.828651869e-05 2.025094068e-06 7.058687339e-06 1.194757521e-05 6.759001793e-06 -9.656762858e-06 -5.327649216e-06 -1.104165946e-05 -1.828651869e-05 -9.656762858e-06 1.494857011e-05 diff --git a/tests/09_DeePKS/NO_KP_deepks_UT/phialpha_r_ref.dat b/tests/09_DeePKS/NO_KP_deepks_UT/phialpha_r_ref.dat new file mode 100644 index 0000000000..e737ce22e4 --- /dev/null +++ b/tests/09_DeePKS/NO_KP_deepks_UT/phialpha_r_ref.dat @@ -0,0 +1,90 @@ +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.01543554467 -0.008065153447 -0.01244641558 -0.001923079779 0.002999569923 0.007741992235 0.001196205335 -0.001865810032 0.003518338782 0.0009817979232 -0.001531382916 -0.0001086824711 -0.0002366120191 -0.002833911453 -0.0007908074096 0.001233480871 8.754031902e-05 0.0001905835544 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.01242662179 -0.006477161275 0.01097039075 -0.00162689654 0.002537590993 -0.006348711177 0.0009415066869 -0.001468537692 0.003015181109 -0.0008048659007 0.00125540894 -8.551568097e-05 -0.0001861757259 -0.002752907546 0.0007348551651 -0.001146208012 7.807715522e-05 0.0001699813518 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.05764787604 -0.03269664837 -0.02891309865 -0.02565587961 -0.02018788394 0.01762729729 0.01564148563 0.01230784137 0.003618889031 0.01534123614 0.01207158356 0.002592132746 0.01071165351 -0.002325372903 -0.009857747643 -0.007756782004 -0.001665614833 -0.006882937995 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-3.235665827e-12 6.459383561e-12 -7.496419526e-12 2.186899137e-12 1.720808899e-12 1.285653335e-11 -3.750582742e-12 -2.951227174e-12 -1.081805427e-11 5.870671048e-12 4.619464525e-12 -3.261123371e-13 -1.347617079e-12 1.701898686e-11 -9.235752656e-12 -7.267351792e-12 5.130406489e-13 2.120074165e-12 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.949842409 -0.03558002646 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0.8831112507 0 0 0.1909716474 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0.8831112507 0 0 0.1909716474 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0.8831112507 0 0 0.1909716474 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.04257844364 -0.02417633078 -0.01875373391 0.01113470711 0.02250388227 0.01145805784 -0.006803024862 -0.01374930378 0.0005859403333 -0.00580624991 -0.01173476438 -0.005316990868 0.006967314615 -0.000377863047 0.003744352724 0.007567551803 0.003428837812 -0.004493103787 +-8.823436698e-13 1.761408977e-12 2.044140447e-12 -5.963285493e-13 -4.692340205e-13 -3.505813654e-12 1.022736365e-12 8.047622355e-13 -2.9499256e-12 1.600846362e-12 1.259660594e-12 -8.892607748e-14 -3.674755204e-13 4.640947554e-12 -2.518519113e-12 -1.981751252e-12 1.399022612e-13 5.781280102e-13 +-2.438582561e-12 4.86819372e-12 5.650113754e-12 -1.649916376e-12 -1.298272396e-12 -9.690033745e-12 2.829639951e-12 2.226563415e-12 -8.146925528e-12 4.425258164e-12 3.482110127e-12 -2.4602072e-13 -1.016648824e-12 1.28164617e-11 -6.961689698e-12 -5.477956155e-12 3.870340474e-13 1.599368172e-12 +7.113974986e-13 -1.420177807e-12 -1.649916376e-12 4.757278704e-13 3.7873958e-13 2.829639951e-12 -8.158573101e-13 -6.495460392e-13 2.38291152e-12 -1.279658162e-12 -1.016648824e-12 6.816620704e-14 2.937465207e-13 -3.748754012e-12 2.013049372e-12 1.599368172e-12 -1.072144542e-13 -4.620970402e-13 +5.597785128e-13 -1.117497633e-12 -1.298272396e-12 3.7873958e-13 2.924240944e-13 2.226563415e-12 -6.495460392e-13 -5.014876272e-13 1.875045484e-12 -1.016648824e-12 -7.876167218e-13 5.931043831e-14 2.297681345e-13 -2.949788198e-12 1.599368172e-12 1.238981277e-12 -9.332391695e-14 -3.614428298e-13 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +5.816977142e-06 -1.130009148e-05 -4.443707969e-06 2.638375214e-06 -1.300541872e-05 7.347779566e-06 -4.362617799e-06 2.150477722e-05 -7.675952679e-06 -2.282055052e-06 1.124899951e-05 -1.578378151e-05 -6.678900075e-06 1.153176835e-05 3.428386197e-06 -1.689964255e-05 2.371235462e-05 1.003387224e-05 +0.02620624272 -0.01765994681 0.01837713881 0.0163068534 0.01283140039 -0.01229302457 -0.01090814797 -0.008583312227 0.00296628903 0.01257472668 0.009894695743 0.002124689335 0.008780004033 -0.002019636009 -0.008561664272 -0.006736930763 -0.00144662204 -0.005977978586 +-0.0464567146 0.02679448593 -0.01898647553 -0.02982218359 -0.02346623036 0.01141316902 0.01812643311 0.01426317606 0.005154366219 -0.01533640357 -0.01206778095 -0.003982504916 -0.01645718678 -0.003357712502 0.009722637692 0.007650467816 0.002539024192 0.01049218927 +-0.04122311106 0.02377594023 -0.02982218359 -0.01184067845 -0.02082263089 0.01812643311 0.007069831373 0.01265635109 -0.009687295039 -0.01163579488 -0.01645718678 0.004699734615 -0.008124417219 0.006207837528 0.007356351899 0.01049218927 -0.003051292448 0.00513639787 +-0.0324372968 0.01870861296 -0.02346623036 -0.02082263089 -0.001762864906 0.01426317606 0.01265635109 0.0009443639846 -0.007622657685 -0.01645718678 -0.003670785049 -0.009259466665 -0.003257250993 0.004884771265 0.01049218927 0.002278303515 0.005946602068 0.002021640136 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.8778350314 -0.01899237841 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +5.816977142e-06 -1.130009148e-05 4.443707969e-06 -2.638375214e-06 1.300541872e-05 -7.347779566e-06 4.362617799e-06 -2.150477722e-05 -7.675952679e-06 -2.282055052e-06 1.124899951e-05 -1.578378151e-05 -6.678900075e-06 1.153176835e-05 3.428386197e-06 -1.689964255e-05 2.371235462e-05 1.003387224e-05 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.003090520969 -0.001951458591 -0.003181413023 0.0004717999529 -0.0007359013201 0.002079048377 -0.0003083205228 0.0004809103483 0.001471587277 -0.0003928223135 0.0006127140481 -4.173672609e-05 -9.086480033e-05 -0.001129028787 0.0003013804938 -0.0004700854714 3.202118283e-05 6.971314372e-05 +0.01110414519 -0.006405338519 -0.01079981165 0.001852244286 -0.002889082558 0.006534436311 -0.001121743466 0.001749666341 0.004187020407 -0.001385658729 0.002161314518 -0.0001736254316 -0.0003779989868 -0.003238551237 0.001037660671 -0.00161851618 0.0001273100938 0.0002771661156 +-0.001646732172 0.0009499044576 0.001852244286 0.001415444712 0.0004284476757 -0.001121743466 -0.0008632833679 -0.0002594735394 -0.001051324618 -0.001433248674 -0.0003779989868 0.0002742366783 -0.0003315286583 0.0007583897246 0.0009050529002 0.0002771661156 -0.0001794504284 0.0002093502539 +0.002568530098 -0.001481636316 -0.002889082558 0.0004284476757 0.001021848881 0.001749666341 -0.0002594735394 -0.0006249165636 0.00163982885 -0.0003779989868 -0.00108599781 0.0003474237086 0.000161052247 -0.001182916607 0.0002771661156 0.0006504327127 -0.0002210052305 -9.645843562e-05 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.04257844364 -0.02417633078 0.01875373391 -0.01113470711 -0.02250388227 -0.01145805784 0.006803024862 0.01374930378 0.0005859403333 -0.00580624991 -0.01173476438 -0.005316990868 0.006967314615 -0.000377863047 0.003744352724 0.007567551803 0.003428837812 -0.004493103787 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.00406420697 -0.002591654052 0.00401526231 0.0006203930529 -0.0009676729803 -0.002711808927 -0.0004189981349 0.0006535424149 0.001947926272 0.0005435718634 -0.0008478492831 -6.017198847e-05 -0.0001310001102 -0.00139810647 -0.0003901437904 0.0006085361573 4.318790069e-05 9.402414469e-05 +-0.01419405342 0.008149246796 -0.01291285755 -0.0023437266 0.003655683914 0.008129862255 0.001469242087 -0.00229168567 -0.00511471444 -0.001779628247 0.002775817947 0.0002329346753 0.00050712082 0.003628639963 0.001245910782 -0.001943339298 -0.0001617149694 -0.000352068784 +-0.002193105071 0.001259129718 -0.0023437266 0.001893911254 0.0005648350541 0.001469242087 -0.001152247654 -0.0003540854269 -0.001352524437 0.001775850084 0.00050712082 0.0003606093461 -0.0004279775544 0.0009329841386 -0.001165552804 -0.000352068784 -0.0002399498199 0.0002808967057 +0.003420748363 -0.00196395785 0.003655683914 0.0005648350541 0.001375022403 -0.00229168567 -0.0003540854269 -0.0008269651152 0.00210963251 0.00050712082 0.001309980734 0.0004501951918 0.0002024034506 -0.001455244442 -0.000352068784 -0.000842122865 -0.0002963213072 -0.0001301153287 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.8778350314 -0.01899237841 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 diff --git a/tests/09_DeePKS/NO_KP_deepks_UT/phialpha_ref.dat b/tests/09_DeePKS/NO_KP_deepks_UT/phialpha_ref.dat new file mode 100644 index 0000000000..9a4ff4d3c0 --- /dev/null +++ b/tests/09_DeePKS/NO_KP_deepks_UT/phialpha_ref.dat @@ -0,0 +1,183 @@ +iat : 0 +ad : 20 5.094192361 +R : 0 -1 -1 +iw : 5 +0.01543554467 -0.008065153447 -0.01244641558 -0.001923079779 0.002999569923 0.007741992235 +0.001196205335 -0.001865810032 0.003518338782 0.0009817979232 -0.001531382916 -0.0001086824711 +-0.0002366120191 -0.002833911453 -0.0007908074096 0.001233480871 8.754031902e-05 0.0001905835544 + +ad : 23 5.291649545 +R : 0 -1 0 +iw : 5 +0.01242662179 -0.006477161275 0.01097039075 -0.00162689654 0.002537590993 -0.006348711177 +0.0009415066869 -0.001468537692 0.003015181109 -0.0008048659007 0.00125540894 -8.551568097e-05 +-0.0001861757259 -0.002752907546 0.0007348551651 -0.001146208012 7.807715522e-05 0.0001699813518 + +ad : 27 3.731782527 +R : 0 0 -1 +iw : 4 +0.05764787604 -0.03269664837 -0.02891309865 -0.02565587961 -0.02018788394 0.01762729729 +0.01564148563 0.01230784137 0.003618889031 0.01534123614 0.01207158356 0.002592132746 +0.01071165351 -0.002325372903 -0.009857747643 -0.007756782004 -0.001665614833 -0.006882937995 + +ad : 29 8.027587471 +R : 0 0 0 +iw : 4 +-3.235665827e-12 6.459383561e-12 -7.496419526e-12 2.186899137e-12 1.720808899e-12 1.285653335e-11 +-3.750582742e-12 -2.951227174e-12 -1.081805427e-11 5.870671048e-12 4.619464525e-12 -3.261123371e-13 +-1.347617079e-12 1.701898686e-11 -9.235752656e-12 -7.267351792e-12 5.130406489e-13 2.120074165e-12 + +ad : 49 0 +R : 0 0 0 +iw : 0 +0.949842409 -0.03558002646 0 0 0 0 +0 0 0 0 0 0 +0 0 0 0 0 0 + +iw : 1 +0 0 0.8831112507 0 0 0.1909716474 +0 0 0 0 0 0 +0 0 0 0 0 0 + +iw : 2 +0 0 0 0.8831112507 0 0 +0.1909716474 0 0 0 0 0 +0 0 0 0 0 0 + +iw : 3 +0 0 0 0 0.8831112507 0 +0 0.1909716474 0 0 0 0 +0 0 0 0 0 0 + +iat : 1 +ad : 16 4.049413304 +R : 0 -1 0 +iw : 5 +0.04257844364 -0.02417633078 -0.01875373391 0.01113470711 0.02250388227 0.01145805784 +-0.006803024862 -0.01374930378 0.0005859403333 -0.00580624991 -0.01173476438 -0.005316990868 +0.006967314615 -0.000377863047 0.003744352724 0.007567551803 0.003428837812 -0.004493103787 + +ad : 22 8.027587471 +R : 0 0 0 +iw : 0 +-8.823436698e-13 1.761408977e-12 2.044140447e-12 -5.963285493e-13 -4.692340205e-13 -3.505813654e-12 +1.022736365e-12 8.047622355e-13 -2.9499256e-12 1.600846362e-12 1.259660594e-12 -8.892607748e-14 +-3.674755204e-13 4.640947554e-12 -2.518519113e-12 -1.981751252e-12 1.399022612e-13 5.781280102e-13 + +iw : 1 +-2.438582561e-12 4.86819372e-12 5.650113754e-12 -1.649916376e-12 -1.298272396e-12 -9.690033745e-12 +2.829639951e-12 2.226563415e-12 -8.146925528e-12 4.425258164e-12 3.482110127e-12 -2.4602072e-13 +-1.016648824e-12 1.28164617e-11 -6.961689698e-12 -5.477956155e-12 3.870340474e-13 1.599368172e-12 + +iw : 2 +7.113974986e-13 -1.420177807e-12 -1.649916376e-12 4.757278704e-13 3.7873958e-13 2.829639951e-12 +-8.158573101e-13 -6.495460392e-13 2.38291152e-12 -1.279658162e-12 -1.016648824e-12 6.816620704e-14 +2.937465207e-13 -3.748754012e-12 2.013049372e-12 1.599368172e-12 -1.072144542e-13 -4.620970402e-13 + +iw : 3 +5.597785128e-13 -1.117497633e-12 -1.298272396e-12 3.7873958e-13 2.924240944e-13 2.226563415e-12 +-6.495460392e-13 -5.014876272e-13 1.875045484e-12 -1.016648824e-12 -7.876167218e-13 5.931043831e-14 +2.297681345e-13 -2.949788198e-12 1.599368172e-12 1.238981277e-12 -9.332391695e-14 -3.614428298e-13 + +ad : 23 7.631582655 +R : 0 0 0 +iw : 5 +5.816977142e-06 -1.130009148e-05 -4.443707969e-06 2.638375214e-06 -1.300541872e-05 7.347779566e-06 +-4.362617799e-06 2.150477722e-05 -7.675952679e-06 -2.282055052e-06 1.124899951e-05 -1.578378151e-05 +-6.678900075e-06 1.153176835e-05 3.428386197e-06 -1.689964255e-05 2.371235462e-05 1.003387224e-05 + +ad : 24 3.731782527 +R : 0 0 1 +iw : 0 +0.02620624272 -0.01765994681 0.01837713881 0.0163068534 0.01283140039 -0.01229302457 +-0.01090814797 -0.008583312227 0.00296628903 0.01257472668 0.009894695743 0.002124689335 +0.008780004033 -0.002019636009 -0.008561664272 -0.006736930763 -0.00144662204 -0.005977978586 + +iw : 1 +-0.0464567146 0.02679448593 -0.01898647553 -0.02982218359 -0.02346623036 0.01141316902 +0.01812643311 0.01426317606 0.005154366219 -0.01533640357 -0.01206778095 -0.003982504916 +-0.01645718678 -0.003357712502 0.009722637692 0.007650467816 0.002539024192 0.01049218927 + +iw : 2 +-0.04122311106 0.02377594023 -0.02982218359 -0.01184067845 -0.02082263089 0.01812643311 +0.007069831373 0.01265635109 -0.009687295039 -0.01163579488 -0.01645718678 0.004699734615 +-0.008124417219 0.006207837528 0.007356351899 0.01049218927 -0.003051292448 0.00513639787 + +iw : 3 +-0.0324372968 0.01870861296 -0.02346623036 -0.02082263089 -0.001762864906 0.01426317606 +0.01265635109 0.0009443639846 -0.007622657685 -0.01645718678 -0.003670785049 -0.009259466665 +-0.003257250993 0.004884771265 0.01049218927 0.002278303515 0.005946602068 0.002021640136 + +ad : 48 0 +R : 0 0 0 +iw : 4 +0.8778350314 -0.01899237841 0 0 0 0 +0 0 0 0 0 0 +0 0 0 0 0 0 + +iat : 2 +ad : 19 7.631582655 +R : 0 0 0 +iw : 4 +5.816977142e-06 -1.130009148e-05 4.443707969e-06 -2.638375214e-06 1.300541872e-05 -7.347779566e-06 +4.362617799e-06 -2.150477722e-05 -7.675952679e-06 -2.282055052e-06 1.124899951e-05 -1.578378151e-05 +-6.678900075e-06 1.153176835e-05 3.428386197e-06 -1.689964255e-05 2.371235462e-05 1.003387224e-05 + +ad : 25 5.291649545 +R : 0 1 0 +iw : 0 +0.003090520969 -0.001951458591 -0.003181413023 0.0004717999529 -0.0007359013201 0.002079048377 +-0.0003083205228 0.0004809103483 0.001471587277 -0.0003928223135 0.0006127140481 -4.173672609e-05 +-9.086480033e-05 -0.001129028787 0.0003013804938 -0.0004700854714 3.202118283e-05 6.971314372e-05 + +iw : 1 +0.01110414519 -0.006405338519 -0.01079981165 0.001852244286 -0.002889082558 0.006534436311 +-0.001121743466 0.001749666341 0.004187020407 -0.001385658729 0.002161314518 -0.0001736254316 +-0.0003779989868 -0.003238551237 0.001037660671 -0.00161851618 0.0001273100938 0.0002771661156 + +iw : 2 +-0.001646732172 0.0009499044576 0.001852244286 0.001415444712 0.0004284476757 -0.001121743466 +-0.0008632833679 -0.0002594735394 -0.001051324618 -0.001433248674 -0.0003779989868 0.0002742366783 +-0.0003315286583 0.0007583897246 0.0009050529002 0.0002771661156 -0.0001794504284 0.0002093502539 + +iw : 3 +0.002568530098 -0.001481636316 -0.002889082558 0.0004284476757 0.001021848881 0.001749666341 +-0.0002594735394 -0.0006249165636 0.00163982885 -0.0003779989868 -0.00108599781 0.0003474237086 +0.000161052247 -0.001182916607 0.0002771661156 0.0006504327127 -0.0002210052305 -9.645843562e-05 + +ad : 26 4.049413304 +R : 0 1 0 +iw : 4 +0.04257844364 -0.02417633078 0.01875373391 -0.01113470711 -0.02250388227 -0.01145805784 +0.006803024862 0.01374930378 0.0005859403333 -0.00580624991 -0.01173476438 -0.005316990868 +0.006967314615 -0.000377863047 0.003744352724 0.007567551803 0.003428837812 -0.004493103787 + +ad : 28 5.094192361 +R : 0 1 1 +iw : 0 +0.00406420697 -0.002591654052 0.00401526231 0.0006203930529 -0.0009676729803 -0.002711808927 +-0.0004189981349 0.0006535424149 0.001947926272 0.0005435718634 -0.0008478492831 -6.017198847e-05 +-0.0001310001102 -0.00139810647 -0.0003901437904 0.0006085361573 4.318790069e-05 9.402414469e-05 + +iw : 1 +-0.01419405342 0.008149246796 -0.01291285755 -0.0023437266 0.003655683914 0.008129862255 +0.001469242087 -0.00229168567 -0.00511471444 -0.001779628247 0.002775817947 0.0002329346753 +0.00050712082 0.003628639963 0.001245910782 -0.001943339298 -0.0001617149694 -0.000352068784 + +iw : 2 +-0.002193105071 0.001259129718 -0.0023437266 0.001893911254 0.0005648350541 0.001469242087 +-0.001152247654 -0.0003540854269 -0.001352524437 0.001775850084 0.00050712082 0.0003606093461 +-0.0004279775544 0.0009329841386 -0.001165552804 -0.000352068784 -0.0002399498199 0.0002808967057 + +iw : 3 +0.003420748363 -0.00196395785 0.003655683914 0.0005648350541 0.001375022403 -0.00229168567 +-0.0003540854269 -0.0008269651152 0.00210963251 0.00050712082 0.001309980734 0.0004501951918 +0.0002024034506 -0.001455244442 -0.000352068784 -0.000842122865 -0.0002963213072 -0.0001301153287 + +ad : 47 0 +R : 0 0 0 +iw : 5 +0.8778350314 -0.01899237841 0 0 0 0 +0 0 0 0 0 0 +0 0 0 0 0 0 + diff --git a/tests/09_DeePKS/NO_KP_deepks_UT/stress_delta_ref.dat b/tests/09_DeePKS/NO_KP_deepks_UT/stress_delta_ref.dat new file mode 100644 index 0000000000..49053ea78f --- /dev/null +++ b/tests/09_DeePKS/NO_KP_deepks_UT/stress_delta_ref.dat @@ -0,0 +1,3 @@ +1.004974229e-06 7.499294394e-07 -1.238457495e-06 +7.499294394e-07 4.793843415e-07 -1.054309464e-06 +-1.238457495e-06 -1.054309464e-06 1.389465455e-06 diff --git a/tests/09_DeePKS/NO_KP_deepks_UT/vdpre_ref.dat b/tests/09_DeePKS/NO_KP_deepks_UT/vdpre_ref.dat new file mode 100644 index 0000000000..7ea3e5a941 --- /dev/null +++ b/tests/09_DeePKS/NO_KP_deepks_UT/vdpre_ref.dat @@ -0,0 +1,972 @@ +(0.9022006019,0) (0.001265938283,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.0006867671573,0) (0.0003118737213,0) (5.478741969e-09,0) (2.484389374e-08,0) (0.0007682472119,0) (2.546730763e-09,0) (9.802916105e-09,0) (0.0003437670443,0) (2.902829344e-15,3.944304526e-31) (2.474974783e-07,0) (1.106742305e-06,0) (6.746724226e-07,5.916456789e-31) (0.000344401489,0) (6.865622166e-15,0) (1.123246758e-07,0) (4.728420013e-07,0) (3.041028689e-07,-3.944304526e-31) (0.0001597069346,0) +(2.606909815e-05,0) (1.052486136e-05,0) (1.50160704e-06,0) (9.220031973e-06,0) (1.760750571e-05,0) (6.598984231e-07,0) (3.84839452e-06,0) (8.0970703e-06,0) (1.625045466e-08,-1.292469707e-25) (6.544979468e-08,1.033975766e-25) (1.123332837e-06,5.169878828e-26) (5.541294868e-06,-1.80945759e-25) (7.884846338e-07,-4.135903063e-24) (6.573341473e-09,-7.754818243e-26) (2.967925929e-08,1.783608196e-24) (6.405630384e-07,-1.550963649e-25) (2.445001313e-06,2.067951531e-25) (9.585207486e-07,4.135903063e-25) +(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-0.001217455938,-1.048968745e-13) (-0.0004731891963,-1.331680902e-13) (2.838254859e-07,-2.667032522e-15) (-1.646163048e-06,-2.058752428e-14) (-0.001134965332,9.353993365e-14) (1.193742549e-07,-2.806929651e-15) (-6.363442288e-07,-2.174782716e-14) (-0.0004599365052,1.036925755e-13) (-6.39905609e-15,-4.744497745e-19) (8.721502128e-07,9.270421917e-16) (-1.184494378e-05,2.305635264e-14) (-2.850339931e-06,1.637935329e-15) (-0.0004361013826,7.942071128e-14) (-1.451212062e-14,-1.126939084e-18) (3.845477493e-07,8.539000264e-16) (-4.942394664e-06,2.315955851e-14) (-1.259856574e-06,1.799159549e-15) (-0.0001885786623,8.350119887e-14) +(-2.336997728e-05,8.899656399e-05) (-8.620275597e-06,3.25033392e-05) (9.817825478e-08,5.801548646e-06) (5.084310361e-06,-3.009317751e-05) (-2.466390723e-05,-5.241278162e-05) (1.420505313e-07,2.363204515e-06) (1.623034791e-06,-1.170234502e-05) (-1.115234346e-05,-2.211479671e-05) (-4.043179797e-08,5.656802291e-08) (-2.05138522e-07,-2.751341749e-08) (7.187037426e-07,-3.7854683e-06) (-7.485119781e-06,1.298409725e-05) (1.719364356e-06,1.585304449e-06) (-1.709340046e-08,2.258118837e-08) (-9.133145593e-08,-1.217697277e-08) (1.259848231e-07,-2.133345284e-06) (-3.269905813e-06,5.697606153e-06) (1.2237451e-06,2.432502756e-06) +(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-0.001080302854,-1.772989558e-14) (-0.0004198818397,-1.679889e-14) (-8.346906342e-07,8.241968752e-15) (5.740844431e-07,7.132640533e-15) (-0.001008053523,1.105114258e-14) (-3.508811352e-07,8.716645911e-15) (2.231317455e-07,7.573389404e-15) (-0.000408453118,9.53184962e-15) (-4.05730137e-15,-5.694584659e-20) (-8.286469788e-07,-3.094091175e-15) (8.264893354e-06,-1.417463855e-14) (-6.263236738e-06,1.984783545e-15) (-0.0004004110629,7.138747102e-15) (-9.588196122e-15,-1.375244239e-19) (-3.576931874e-07,-3.070677107e-15) (3.541007804e-06,-1.454441084e-14) (-2.664277624e-06,2.070054798e-15) (-0.0001730155867,5.991069674e-15) +(-1.400249322e-05,8.517683491e-08) (-5.116927849e-06,-4.684231583e-09) (2.138336521e-06,-4.599405375e-07) (-5.084421801e-06,3.325365207e-06) (-1.137644059e-05,-2.898889879e-06) (8.535405516e-07,-2.174669906e-07) (-1.941555583e-06,1.356036493e-06) (-4.835683466e-06,-1.14408203e-06) (-7.579709164e-09,2.762279321e-08) (-1.753976932e-07,2.708152116e-07) (1.596704523e-06,6.809813049e-07) (-4.264485678e-06,-1.255174248e-07) (-4.111833037e-07,-9.800694867e-07) (-3.057891808e-09,1.074053857e-08) (-8.079752589e-08,1.194200536e-07) (7.764209185e-07,2.571247395e-07) (-2.00927223e-06,2.278516912e-07) (-4.360917395e-07,-6.207081838e-07) +(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-0.0008500596729,-1.395115192e-14) (-0.0003303931097,-1.321857004e-14) (6.278742745e-07,-6.267371997e-15) (1.508336107e-06,1.829707832e-14) (-0.0007955499976,8.763968249e-15) (2.638376718e-07,-6.633341259e-15) (5.85025715e-07,1.938064798e-14) (-0.0003223495585,7.571202097e-15) (2.037832522e-15,1.279206619e-19) (-1.243278326e-06,-5.349347949e-15) (1.777719935e-06,-3.844960139e-15) (9.187079385e-06,-3.340764983e-15) (-0.0003238706207,6.12567423e-15) (5.892571045e-15,3.456051733e-19) (-5.39163517e-07,-5.385811883e-15) (7.135796431e-07,-3.765088724e-15) (3.990946276e-06,-3.584746342e-15) (-0.0001398980045,5.217450273e-15) +(2.184072547e-05,-1.328566161e-07) (7.98125124e-06,7.306342835e-09) (-2.353317487e-07,2.431358997e-07) (8.89348769e-06,5.889722967e-06) (1.368174814e-05,-6.080660701e-06) (-9.52595112e-08,1.163421003e-07) (3.483016518e-06,2.340901803e-06) (5.851874148e-06,-2.448645606e-06) (-8.904308778e-08,1.862177347e-09) (-1.575009145e-07,2.041408412e-07) (-4.182973373e-07,-3.929932664e-07) (5.261261828e-06,1.934800189e-06) (4.914717562e-07,-1.551016991e-06) (-3.785085941e-08,1.286475674e-10) (-7.066595277e-08,8.72698674e-08) (-1.727701374e-07,-1.345678508e-07) (2.079943364e-06,1.093768337e-06) (9.353131396e-07,-1.037909249e-06) +(-3.073369271e-12,0.05475639745) (-2.298249668e-13,0.001163347614) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-7.745507745e-13,0.0230047579) (-3.345332529e-14,0.0003354043926) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.0001316075504,0.0001730712488) (4.720116007e-05,6.268597155e-05) (4.031033681e-08,3.956133911e-08) (1.905169148e-05,-1.703869909e-05) (-6.747304549e-05,0.0001071724234) (-5.145549248e-09,-4.804649686e-09) (7.921469579e-06,-7.275844325e-06) (-2.725047363e-05,4.449205454e-05) (3.972157313e-08,8.413345314e-08) (-1.312821309e-08,2.731487938e-07) (5.080023904e-08,-4.112130507e-08) (7.129046668e-06,1.241194881e-05) (-1.166681958e-05,-5.410234195e-06) (1.633681841e-08,3.614193552e-08) (-6.193488424e-09,1.219375237e-07) (4.487741215e-09,-4.249329443e-09) (4.483008284e-06,7.834532362e-06) (-6.705958711e-06,-4.615929459e-06) +(0.01180333237,0.01466133493) (0.0002304575695,0.000286958373) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-3.757388445e-14,0.001115973469) (-4.260428398e-14,0.0004271522746) (-2.922087985e-16,-2.943727023e-08) (-5.871141873e-14,4.890402007e-06) (3.464283974e-15,0.0001206219073) (-3.263684734e-16,-1.306127586e-08) (-6.150440357e-14,1.876272823e-06) (3.625422672e-15,4.927825048e-05) (1.759877347e-17,-5.348850364e-13) (-2.898493743e-14,5.889902487e-06) (8.821843004e-15,5.701133382e-06) (9.816179971e-16,2.824098531e-06) (-8.691825774e-15,-0.000151957234) (4.163347328e-17,-1.236962896e-12) (-2.938201667e-14,2.554513476e-06) (8.878386964e-15,2.395083132e-06) (1.077392545e-15,1.256996698e-06) (-8.826665706e-15,-6.661703989e-05) +(0.002712967572,0.003567703253) (3.706284003e-05,4.922167448e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-0.001217455938,1.048968745e-13) (-0.0004731891963,1.331680902e-13) (2.838254859e-07,2.667032522e-15) (-1.646163048e-06,2.058752428e-14) (-0.001134965332,-9.353993365e-14) (1.193742549e-07,2.806929651e-15) (-6.363442288e-07,2.174782716e-14) (-0.0004599365052,-1.036925755e-13) (-6.399069642e-15,4.744497745e-19) (8.721502128e-07,-9.270421917e-16) (-1.184494378e-05,-2.305635264e-14) (-2.850339931e-06,-1.637935329e-15) (-0.0004361013826,-7.942071128e-14) (-1.451212062e-14,1.126939084e-18) (3.845477493e-07,-8.539000264e-16) (-4.942394664e-06,-2.315955851e-14) (-1.259856574e-06,-1.799159549e-15) (-0.0001885786623,-8.350119887e-14) +(-2.336997728e-05,-8.899656399e-05) (-8.620275597e-06,-3.25033392e-05) (9.817825478e-08,-5.801548646e-06) (5.084310361e-06,3.009317751e-05) (-2.466390723e-05,5.241278162e-05) (1.420505313e-07,-2.363204515e-06) (1.623034791e-06,1.170234502e-05) (-1.115234346e-05,2.211479671e-05) (-4.043179797e-08,-5.656802291e-08) (-2.05138522e-07,2.751341749e-08) (7.187037426e-07,3.7854683e-06) (-7.485119781e-06,-1.298409725e-05) (1.719364356e-06,-1.585304449e-06) (-1.709340046e-08,-2.258118837e-08) (-9.133145593e-08,1.217697277e-08) (1.259848231e-07,2.133345284e-06) (-3.269905813e-06,-5.697606153e-06) (1.2237451e-06,-2.432502756e-06) +(0,0) (0,0) (0.5510606563,0) (0.2287898526,0) (3.497233206e-05,0) (0.03259042882,0) (0.003852456277,0) (2.728501408e-05,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.002158226331,0) (0.0007179444763,0) (1.470354086e-05,0) (0.0001090752041,0) (0.001676734109,0) (5.595492446e-06,0) (4.130750209e-05,0) (0.0006153632011,0) (1.410625631e-14,3.155443621e-30) (3.07334846e-06,3.944304526e-31) (0.0001267708775,0) (1.204204804e-05,1.57772181e-30) (0.0005522171709,0) (3.067480352e-14,0) (1.316513672e-06,0) (5.166052285e-05,0) (5.219413394e-06,0) (0.0002226698044,0) +(0.0003247731928,0) (0.0001074385849,0) (2.242104943e-05,0) (0.000101024546,0) (0.0001905669123,0) (8.493601038e-06,0) (3.626944176e-05,0) (7.576061162e-05,0) (2.975099223e-07,-2.067951531e-24) (6.545291938e-07,4.301339185e-23) (1.321630137e-05,8.271806126e-25) (4.053453297e-05,2.067951531e-25) (6.936601868e-06,-1.98523347e-23) (1.220223247e-07,-4.135903063e-25) (2.860486991e-07,-1.240770919e-24) (7.129718703e-06,1.447566072e-24) (1.765029723e-05,3.30872245e-24) (7.735483806e-06,-1.32348898e-23) +(0,0) (0,0) (0.3120626857,0) (-0.3145069131,0) (0.002444227455,0) (0.01080935722,0) (-0.01100723887,0) (0.0001978816593,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.001915090305,-1.335751503e-13) (0.0006370640959,-1.537988172e-13) (-4.324103528e-05,2.064957961e-14) (-3.803898884e-05,3.11900116e-15) (0.001489241722,1.064118355e-13) (-1.644703661e-05,2.184936467e-14) (-1.448432252e-05,3.401844515e-15) (0.0005464819933,1.104512803e-13) (8.944071612e-15,-5.37611904e-19) (-2.920048495e-06,-7.799358519e-15) (-8.845527695e-05,-2.047495515e-14) (2.646077292e-05,6.820300902e-15) (0.0005070239929,8.329729939e-14) (2.026694378e-14,-1.283138686e-18) (-1.22457607e-06,-7.793369903e-15) (-3.701248625e-05,-2.141087058e-14) (1.103773763e-05,7.186674661e-15) (0.0002042932449,8.338536484e-14) +(1.284349739e-05,4.772636154e-05) (4.176499206e-06,1.580615794e-05) (-1.637198807e-06,-8.291662982e-06) (-1.365739124e-05,-1.476125239e-05) (2.456488526e-05,-2.98039344e-05) (-5.950508007e-07,-3.103480952e-06) (-4.942325707e-06,-5.332056991e-06) (9.785063172e-06,-1.163148615e-05) (1.150138939e-07,-4.234158657e-08) (4.359031483e-07,-9.22545632e-07) (-1.273242959e-06,5.816351088e-06) (5.466313628e-06,1.016188654e-05) (-2.867123006e-06,-1.31041973e-06) (4.484840704e-08,-1.742515531e-08) (1.996404585e-07,-4.006392654e-07) (-7.036287942e-07,2.636380213e-06) (3.2181333e-06,4.377497957e-06) (-2.131972104e-06,3.142402084e-07) +(0,0) (0,0) (0.1694498108,0) (-0.164834733,0) (-0.0046150778,0) (0.003098423631,0) (-0.002121086697,0) (-0.0009773369338,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.001506930239,-1.051064969e-13) (0.0005012876667,-1.210199267e-13) (3.252694177e-05,-1.903334618e-14) (-9.99427541e-05,3.755176299e-14) (0.001175300936,8.391686018e-14) (1.236700242e-05,-2.013420008e-14) (-3.797622396e-05,3.981209702e-14) (0.000431281392,8.71025428e-14) (-4.492296834e-15,5.108271321e-20) (-4.381157595e-06,-1.419353245e-14) (-1.902610263e-05,4.116223754e-15) (-3.881335348e-05,-8.189939113e-15) (0.0004101039919,6.692950174e-14) (-1.245537216e-14,2.367029216e-19) (-1.845846564e-06,-1.433977071e-14) (-7.458711811e-06,4.403933919e-15) (-1.653394432e-05,-8.760466044e-15) (0.0001651886852,6.698363681e-14) +(-2.003295385e-05,-7.44423399e-05) (-6.514395052e-06,-2.465403487e-05) (9.239836074e-07,9.251150332e-07) (-1.431917237e-05,3.227521164e-05) (-1.064377077e-06,4.92444156e-05) (3.961344705e-07,3.661838786e-07) (-5.649364548e-06,1.15785494e-05) (-1.372201324e-06,1.935529002e-05) (2.280251171e-07,3.053268573e-07) (4.078376831e-07,-7.060455894e-07) (1.056705235e-06,-1.661036676e-06) (-2.573322934e-06,-1.49414439e-05) (-2.046729951e-06,-4.370276278e-06) (9.88697933e-08,1.296933022e-07) (1.816535076e-07,-2.975472314e-07) (4.141876113e-07,-6.018640503e-07) (-2.328660063e-07,-6.309697042e-06) (-1.439856402e-06,-3.698707777e-06) +(0,0) (0,0) (-3.574796693e-12,-0.03098131397) (-3.042140382e-12,0.00541448473) (-3.236912117e-15,3.334652474e-05) (1.933870538e-12,0.004093227976) (5.083089287e-13,-0.0006826519903) (1.305409463e-14,-4.426198274e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-2.140675696e-12,-0.04078133152) (-9.245860848e-14,-0.0005088910162) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.0004728618127,-0.0006044432699) (0.0001549299637,-0.0001971109734) (1.554831761e-07,-1.531547939e-07) (6.611835083e-05,5.278679084e-05) (-0.0002245097037,-0.0003509719554) (-1.831387591e-08,1.739280133e-08) (2.546549238e-05,2.101936826e-05) (-8.398421587e-05,-0.0001357070295) (1.940406315e-07,-3.475987446e-07) (-7.367715354e-08,-8.616458177e-07) (1.710746026e-07,1.448801756e-07) (1.945324779e-05,-3.347036445e-05) (-3.631825003e-05,1.165944999e-05) (8.16747581e-08,-1.501052935e-07) (-3.097009875e-08,-3.777772687e-07) (1.503470171e-08,1.41103217e-08) (1.226136967e-05,-2.092456893e-05) (-2.027566464e-05,1.11249986e-05) +(0,0) (0,0) (0.006757530639,-0.007870554039) (0.002947874522,-0.003099524556) (-1.732966813e-05,-2.149103312e-05) (-0.001053979961,0.00135865188) (-0.0001660279204,0.0001079548395) (7.584049129e-06,1.18942919e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-1.038453564e-13,-0.001978324842) (-1.177501124e-13,-0.0006480951351) (-8.078765504e-16,-1.524993798e-06) (-1.623216596e-13,-0.0003240393457) (9.568694665e-15,-0.0001782000389) (-9.022983093e-16,-6.122280759e-07) (-1.700396895e-13,-0.0001217959401) (1.001353833e-14,-6.593088745e-05) (4.86286969e-17,1.179117263e-12) (-8.00777098e-14,2.0755281e-05) (2.435355293e-14,-6.10165565e-05) (2.709086246e-15,-1.1931184e-05) (-2.403600052e-14,0.0001924171699) (1.1503569e-16,2.614614073e-12) (-8.11708486e-14,8.745472892e-06) (2.450834643e-14,-2.503467556e-05) (2.973262089e-15,-5.207565317e-06) (-2.440771839e-14,7.866003003e-05) +(0.009747607642,-0.01246003733) (0.000121652613,-0.0001547735789) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-0.001080302854,1.772989558e-14) (-0.0004198818397,1.679889e-14) (-8.346906342e-07,-8.241968752e-15) (5.740844431e-07,-7.132640533e-15) (-0.001008053523,-1.105114258e-14) (-3.508811352e-07,-8.716645911e-15) (2.231317455e-07,-7.573389404e-15) (-0.000408453118,-9.53184962e-15) (-4.057328475e-15,5.694584659e-20) (-8.286469788e-07,3.094091175e-15) (8.264893354e-06,1.417463855e-14) (-6.263236738e-06,-1.984783545e-15) (-0.0004004110629,-7.138747102e-15) (-9.588196122e-15,1.375244239e-19) (-3.576931874e-07,3.070677107e-15) (3.541007804e-06,1.454441084e-14) (-2.664277624e-06,-2.070054798e-15) (-0.0001730155867,-5.991069674e-15) +(-1.400249322e-05,-8.517683491e-08) (-5.116927849e-06,4.684231583e-09) (2.138336521e-06,4.599405375e-07) (-5.084421801e-06,-3.325365207e-06) (-1.137644059e-05,2.898889879e-06) (8.535405516e-07,2.174669906e-07) (-1.941555583e-06,-1.356036493e-06) (-4.835683466e-06,1.14408203e-06) (-7.579709164e-09,-2.762279321e-08) (-1.753976932e-07,-2.708152116e-07) (1.596704523e-06,-6.809813049e-07) (-4.264485678e-06,1.255174248e-07) (-4.111833037e-07,9.800694867e-07) (-3.057891808e-09,-1.074053857e-08) (-8.079752589e-08,-1.194200536e-07) (7.764209185e-07,-2.571247395e-07) (-2.00927223e-06,-2.278516912e-07) (-4.360917395e-07,6.207081838e-07) +(0,0) (0,0) (0.3120626857,0) (-0.3145069131,0) (0.002444227455,0) (0.01080935722,0) (-0.01100723887,0) (0.0001978816593,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.001915090305,1.335751503e-13) (0.0006370640959,1.537988172e-13) (-4.324103528e-05,-2.064957961e-14) (-3.803898884e-05,-3.11900116e-15) (0.001489241722,-1.064118355e-13) (-1.644703661e-05,-2.184936467e-14) (-1.448432252e-05,-3.401844515e-15) (0.0005464819933,-1.104512803e-13) (8.944071612e-15,5.37611904e-19) (-2.920048495e-06,7.799358519e-15) (-8.845527695e-05,2.047495515e-14) (2.646077292e-05,-6.820300902e-15) (0.0005070239929,-8.329729939e-14) (2.026694378e-14,1.283138686e-18) (-1.22457607e-06,7.793369903e-15) (-3.701248625e-05,2.141087058e-14) (1.103773763e-05,-7.186674661e-15) (0.0002042932449,-8.338536484e-14) +(1.284349739e-05,-4.772636154e-05) (4.176499206e-06,-1.580615794e-05) (-1.637198807e-06,8.291662982e-06) (-1.365739124e-05,1.476125239e-05) (2.456488526e-05,2.98039344e-05) (-5.950508007e-07,3.103480952e-06) (-4.942325707e-06,5.332056991e-06) (9.785063172e-06,1.163148615e-05) (1.150138939e-07,4.234158657e-08) (4.359031483e-07,9.22545632e-07) (-1.273242959e-06,-5.816351088e-06) (5.466313628e-06,-1.016188654e-05) (-2.867123006e-06,1.31041973e-06) (4.484840704e-08,1.742515531e-08) (1.996404585e-07,4.006392654e-07) (-7.036287942e-07,-2.636380213e-06) (3.2181333e-06,-4.377497957e-06) (-2.131972104e-06,-3.142402084e-07) +(0,0) (0,0) (0.1767194204,0) (0.4323382235,0) (0.1708278373,0) (0.003585169254,0) (0.0314498852,0) (0.001435115663,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.001699344885,0) (0.0005652953336,0) (0.0001271657725,0) (1.32657526e-05,0) (0.001322714732,0) (4.834337921e-05,0) (5.078874012e-06,0) (0.0004853110627,0) (5.670946568e-15,0) (2.774395199e-06,1.972152263e-31) (6.172029553e-05,0) (5.814397199e-05,0) (0.0004655294022,-4.930380658e-32) (1.339042538e-14,0) (1.139058852e-06,0) (2.651781405e-05,0) (2.334202003e-05,0) (0.0001874332715,-2.958228395e-31) +(7.521436699e-06,0) (2.487726124e-06,0) (3.185938962e-06,0) (4.003174709e-06,0) (7.827739219e-06,0) (1.175670888e-06,0) (1.457353976e-06,0) (3.049591687e-06,0) (5.048909171e-08,2.568783543e-24) (1.590612012e-06,1.609124785e-23) (2.682375849e-06,-5.764414894e-24) (3.284718312e-06,6.203854594e-25) (1.43263148e-06,1.550963649e-25) (1.897206644e-08,-6.720842477e-25) (7.004686066e-07,5.11818004e-24) (1.044304049e-06,-3.231174268e-25) (1.672429076e-06,0) (6.003570143e-07,8.271806126e-25) +(0,0) (0,0) (0.09595851645,0) (0.2265907446,0) (-0.3225492611,0) (0.001027662692,0) (0.006060369352,0) (-0.007088032044,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.001337166288,-3.155443621e-30) (0.0004448148634,6.310887242e-30) (-9.565713795e-05,1.029370554e-14) (3.485412968e-05,-1.023797789e-14) (0.0010438788,-5.572765633e-17) (-3.635078475e-05,1.089033375e-14) (1.331622219e-05,-1.083246436e-14) (0.0003830055394,-5.786938279e-17) (-2.848348185e-15,-1.388191666e-19) (4.162623539e-06,2.367315108e-15) (1.327559777e-05,-5.945058718e-15) (-8.528709815e-05,3.98658355e-15) (0.0003765412857,-4.087011207e-16) (-8.229297777e-15,-3.646221352e-19) (1.716943454e-06,2.411501735e-15) (5.343838064e-06,-6.246511632e-15) (-3.496510539e-05,4.239624517e-15) (0.0001515559446,-4.042499974e-16) +(-1.173174173e-05,0) (-3.880290635e-06,0) (-4.095921988e-07,2.741514604e-07) (-2.780116483e-06,-6.455501517e-06) (-7.838840513e-06,6.181350057e-06) (-1.61552776e-07,1.190893908e-07) (-9.323685179e-07,-2.408299986e-06) (-3.148837626e-06,2.289210596e-06) (4.469778006e-08,1.504883457e-07) (1.26676856e-06,1.046269265e-07) (-8.328059922e-07,-3.050222055e-07) (-4.092802746e-06,-1.369814789e-06) (1.671585455e-06,1.419721722e-06) (1.781827059e-08,6.178672245e-08) (5.435245616e-07,4.675798968e-08) (-2.634292994e-07,-9.375785702e-08) (-1.60734289e-06,-1.092677106e-06) (2.465845742e-07,1.077890251e-06) +(0,0) (0,0) (-2.024388139e-12,-0.01754455146) (4.181890806e-12,-0.007443043734) (-2.262288214e-13,0.002330599262) (6.414121631e-13,0.001357612187) (-1.452340376e-12,0.001950473409) (9.467343129e-14,-0.0003210053167) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(6.244874297e-13,-0.03618709099) (2.697252669e-14,-0.0004515616539) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-7.012487199e-05,-9.339175788e-05) (-2.297593838e-05,-3.045536483e-05) (4.528561733e-08,6.868362458e-08) (-1.66514317e-05,2.524731063e-06) (2.59504127e-05,-8.035423414e-05) (-5.072117342e-09,-7.910233257e-09) (-6.560212001e-06,8.794977546e-07) (9.987822964e-06,-3.042165383e-05) (1.244840867e-07,-1.067618071e-07) (1.165404828e-06,-6.776850675e-07) (4.727906968e-08,-8.924566574e-08) (-5.76753882e-06,-9.390541307e-06) (1.28088823e-05,-1.16802478e-05) (5.145444379e-08,-4.350669412e-08) (5.074993285e-07,-3.070367565e-07) (3.733853324e-09,-6.951973956e-09) (-2.953974939e-06,-6.856098294e-06) (6.040097097e-06,-2.242491619e-06) +(0,0) (0,0) (0.003826753254,-0.004457052419) (-0.004052307853,0.004260774197) (-0.001211176039,-0.001502015167) (-0.0003495764342,0.000450627808) (0.0004743750085,-0.0003084485899) (5.500250875e-05,8.626208551e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(3.029422899e-14,-0.001755455705) (3.435070136e-14,-0.0005750836658) (2.341570381e-16,4.484791197e-06) (4.73423153e-14,0.0001130057849) (-2.810519498e-15,-0.0001582737129) (2.615210098e-16,1.799544486e-06) (4.959338497e-14,4.270729501e-05) (-2.941242734e-15,-5.855085701e-05) (-1.410498678e-17,7.476163209e-13) (2.341189723e-14,-1.97199985e-05) (-7.137988075e-15,4.257473413e-05) (-8.046595515e-16,-2.621716418e-05) (6.955599815e-15,0.0001766698447) (-3.336587022e-17,1.727483119e-12) (2.373175019e-14,-8.134740302e-06) (-7.183447176e-15,1.793624094e-05) (-8.826644913e-16,-1.101268195e-05) (7.063208752e-15,7.21683518e-05) +(-0.001445559188,-0.001925184459) (-1.804094492e-05,-2.391386807e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-0.0008500596729,1.395115192e-14) (-0.0003303931097,1.321857004e-14) (6.278742745e-07,6.267371997e-15) (1.508336107e-06,-1.829707832e-14) (-0.0007955499976,-8.763968249e-15) (2.638376718e-07,6.633341259e-15) (5.85025715e-07,-1.938064798e-14) (-0.0003223495585,-7.571202097e-15) (2.037825746e-15,-1.279206619e-19) (-1.243278326e-06,5.349347949e-15) (1.777719935e-06,3.844960139e-15) (9.187079385e-06,3.340764983e-15) (-0.0003238706207,-6.12567423e-15) (5.892564269e-15,-3.456051733e-19) (-5.39163517e-07,5.385811883e-15) (7.135796431e-07,3.765088724e-15) (3.990946276e-06,3.584746342e-15) (-0.0001398980045,-5.217450273e-15) +(2.184072547e-05,1.328566161e-07) (7.98125124e-06,-7.306342835e-09) (-2.353317487e-07,-2.431358997e-07) (8.89348769e-06,-5.889722967e-06) (1.368174814e-05,6.080660701e-06) (-9.52595112e-08,-1.163421003e-07) (3.483016518e-06,-2.340901803e-06) (5.851874148e-06,2.448645606e-06) (-8.904308778e-08,-1.862177347e-09) (-1.575009145e-07,-2.041408412e-07) (-4.182973373e-07,3.929932664e-07) (5.261261828e-06,-1.934800189e-06) (4.914717562e-07,1.551016991e-06) (-3.785085941e-08,-1.286475674e-10) (-7.066595277e-08,-8.72698674e-08) (-1.727701374e-07,1.345678508e-07) (2.079943364e-06,-1.093768337e-06) (9.353131396e-07,1.037909249e-06) +(0,0) (0,0) (0.1694498108,0) (-0.164834733,0) (-0.0046150778,0) (0.003098423631,0) (-0.002121086697,0) (-0.0009773369338,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.001506930239,1.051064969e-13) (0.0005012876667,1.210199267e-13) (3.252694177e-05,1.903334618e-14) (-9.99427541e-05,-3.755176299e-14) (0.001175300936,-8.391686018e-14) (1.236700242e-05,2.013420008e-14) (-3.797622396e-05,-3.981209702e-14) (0.000431281392,-8.71025428e-14) (-4.492290058e-15,-5.108271322e-20) (-4.381157595e-06,1.419353245e-14) (-1.902610263e-05,-4.116223754e-15) (-3.881335348e-05,8.189939113e-15) (0.0004101039919,-6.692950174e-14) (-1.245536538e-14,-2.367029216e-19) (-1.845846564e-06,1.433977071e-14) (-7.458711811e-06,-4.403933919e-15) (-1.653394432e-05,8.760466044e-15) (0.0001651886852,-6.698363681e-14) +(-2.003295385e-05,7.44423399e-05) (-6.514395052e-06,2.465403487e-05) (9.239836074e-07,-9.251150332e-07) (-1.431917237e-05,-3.227521164e-05) (-1.064377077e-06,-4.92444156e-05) (3.961344705e-07,-3.661838786e-07) (-5.649364548e-06,-1.15785494e-05) (-1.372201324e-06,-1.935529002e-05) (2.280251171e-07,-3.053268573e-07) (4.078376831e-07,7.060455894e-07) (1.056705235e-06,1.661036676e-06) (-2.573322934e-06,1.49414439e-05) (-2.046729951e-06,4.370276278e-06) (9.88697933e-08,-1.296933022e-07) (1.816535076e-07,2.975472314e-07) (4.141876113e-07,6.018640503e-07) (-2.328660063e-07,6.309697042e-06) (-1.439856402e-06,3.698707777e-06) +(0,0) (0,0) (0.09595851645,0) (0.2265907446,0) (-0.3225492611,0) (0.001027662692,0) (0.006060369352,0) (-0.007088032044,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.001337166288,3.155443621e-30) (0.0004448148634,-6.310887242e-30) (-9.565713795e-05,-1.029370554e-14) (3.485412968e-05,1.023797789e-14) (0.0010438788,5.572765633e-17) (-3.635078475e-05,-1.089033375e-14) (1.331622219e-05,1.083246436e-14) (0.0003830055394,5.786938279e-17) (-2.848334632e-15,1.388191666e-19) (4.162623539e-06,-2.367315108e-15) (1.327559777e-05,5.945058718e-15) (-8.528709815e-05,-3.98658355e-15) (0.0003765412857,4.087011207e-16) (-8.229297777e-15,3.646221352e-19) (1.716943454e-06,-2.411501735e-15) (5.343838064e-06,6.246511632e-15) (-3.496510539e-05,-4.239624517e-15) (0.0001515559446,4.042499974e-16) +(-1.173174173e-05,0) (-3.880290635e-06,0) (-4.095921988e-07,-2.741514604e-07) (-2.780116483e-06,6.455501517e-06) (-7.838840513e-06,-6.181350057e-06) (-1.61552776e-07,-1.190893908e-07) (-9.323685179e-07,2.408299986e-06) (-3.148837626e-06,-2.289210596e-06) (4.469778006e-08,-1.504883457e-07) (1.26676856e-06,-1.046269265e-07) (-8.328059922e-07,3.050222055e-07) (-4.092802746e-06,1.369814789e-06) (1.671585455e-06,-1.419721722e-06) (1.781827059e-08,-6.178672245e-08) (5.435245616e-07,-4.675798968e-08) (-2.634292994e-07,9.375785702e-08) (-1.60734289e-06,1.092677106e-06) (2.465845742e-07,-1.077890251e-06) +(0,0) (0,0) (0.05210540448,0) (0.1187574051,0) (0.6090226715,0) (0.0002945720367,0) (0.001167828641,0) (0.03500776944,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.001052178223,0) (0.0003500121988,0) (7.195558885e-05,0) (9.157492925e-05,0) (0.0008238230987,0) (2.733320619e-05,0) (3.491359954e-05,0) (0.0003022664318,0) (1.430604767e-15,-9.860761315e-32) (6.245481801e-06,-9.860761315e-32) (2.855486911e-06,-2.465190329e-32) (0.0001251013452,-3.45126646e-31) (0.0003045636627,3.45126646e-31) (5.057437216e-15,2.958228395e-31) (2.588009232e-06,2.958228395e-31) (1.076883833e-06,-1.972152263e-31) (5.23758695e-05,4.930380658e-32) (0.0001225460354,2.958228395e-31) +(1.829886623e-05,0) (6.052376612e-06,0) (7.624904163e-08,0) (1.234084223e-05,0) (1.273119943e-05,0) (3.426263494e-08,0) (4.576252571e-06,0) (4.96973533e-06,0) (4.881179852e-07,-9.564275833e-25) (1.015740713e-06,-3.282873056e-24) (2.932491235e-07,-1.783608196e-24) (5.670935863e-06,3.231174268e-24) (3.357323756e-06,-8.685396432e-24) (2.179567445e-07,9.04728795e-25) (4.248659482e-07,5.014782464e-24) (7.486855157e-08,1.395867284e-24) (2.258687365e-06,-1.240770919e-24) (2.036540451e-06,-3.30872245e-24) +(0,0) (0,0) (-1.099241284e-12,-0.009526678654) (2.191751042e-12,-0.003900938503) (4.271548499e-13,-0.004400530276) (1.838561317e-13,0.0003891496597) (-2.798649041e-13,0.0003758547668) (-4.675917989e-13,0.001585444316) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(4.913914448e-13,-0.02847459545) (2.122391617e-14,-0.0003553210569) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.0001093789551,0.0001456700398) (3.58372723e-05,4.750348753e-05) (8.822529576e-11,-1.272698423e-08) (7.492681859e-06,-2.86053938e-05) (-8.9440741e-05,5.997586631e-05) (-1.042895797e-10,1.600750282e-09) (2.743630426e-06,-1.140352637e-05) (-3.314922633e-05,2.391422379e-05) (-2.08010187e-07,-4.655544245e-07) (8.835555619e-07,-6.163683256e-07) (-4.530454876e-09,3.308465939e-08) (1.110253532e-05,9.295522593e-06) (3.370329281e-06,-2.632189876e-05) (-9.336393785e-08,-2.084335672e-07) (3.732957139e-07,-2.721202136e-07) (-3.177275675e-10,2.088885624e-09) (7.318428284e-06,4.659306735e-06) (-1.545355614e-06,-1.176554191e-05) +(0,0) (0,0) (0.002077924227,-0.002420176214) (-0.002123835932,0.002233094243) (0.002286886861,0.002836035917) (-0.0001002035425,0.0001291691838) (9.141170929e-05,-5.943781255e-05) (-0.0002716572291,-0.0004260481869) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(2.383766949e-14,-0.0013813183) (2.702959254e-14,-0.0004525170243) (1.868924904e-16,-3.373567288e-06) (3.717274731e-14,0.0002969087697) (-2.211377425e-15,-0.0001249086968) (2.087389478e-16,-1.353129535e-06) (3.893998583e-14,0.0001119736044) (-2.314235229e-15,-4.620810094e-05) (-1.121640748e-17,-3.755020248e-13) (1.830001153e-14,-2.958732411e-05) (-5.636239261e-15,9.157523315e-06) (-6.172580938e-16,3.84560218e-05) (5.470901132e-15,0.0001428985799) (-2.653396731e-17,-1.061651775e-12) (1.854964101e-14,-1.226178005e-05) (-5.6726439e-15,3.614489749e-06) (-6.780552581e-16,1.649641224e-05) (5.555562305e-15,5.835432863e-05) +(0.0022547457,0.003002852747) (2.813979759e-05,3.730023068e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-3.073369271e-12,-0.05475639745) (-2.298249668e-13,-0.001163347614) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-7.745507745e-13,-0.0230047579) (-3.345332529e-14,-0.0003354043926) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.0001316075504,-0.0001730712488) (4.720116007e-05,-6.268597155e-05) (4.031033681e-08,-3.956133911e-08) (1.905169148e-05,1.703869909e-05) (-6.747304549e-05,-0.0001071724234) (-5.145549248e-09,4.804649686e-09) (7.921469579e-06,7.275844325e-06) (-2.725047363e-05,-4.449205454e-05) (3.972157313e-08,-8.413345314e-08) (-1.312821309e-08,-2.731487938e-07) (5.080023904e-08,4.112130507e-08) (7.129046668e-06,-1.241194881e-05) (-1.166681958e-05,5.410234195e-06) (1.633681841e-08,-3.614193552e-08) (-6.193488424e-09,-1.219375237e-07) (4.487741215e-09,4.249329443e-09) (4.483008284e-06,-7.834532362e-06) (-6.705958711e-06,4.615929459e-06) +(0,0) (0,0) (-3.574796693e-12,0.03098131397) (-3.042140382e-12,-0.00541448473) (-3.236912117e-15,-3.334652474e-05) (1.933870538e-12,-0.004093227976) (5.083089287e-13,0.0006826519903) (1.305409463e-14,4.426198274e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-2.140675696e-12,0.04078133152) (-9.245860848e-14,0.0005088910162) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.0004728618127,0.0006044432699) (0.0001549299637,0.0001971109734) (1.554831761e-07,1.531547939e-07) (6.611835083e-05,-5.278679084e-05) (-0.0002245097037,0.0003509719554) (-1.831387591e-08,-1.739280133e-08) (2.546549238e-05,-2.101936826e-05) (-8.398421587e-05,0.0001357070295) (1.940406315e-07,3.475987446e-07) (-7.367715354e-08,8.616458177e-07) (1.710746026e-07,-1.448801756e-07) (1.945324779e-05,3.347036445e-05) (-3.631825003e-05,-1.165944999e-05) (8.16747581e-08,1.501052935e-07) (-3.097009875e-08,3.777772687e-07) (1.503470171e-08,-1.41103217e-08) (1.226136967e-05,2.092456893e-05) (-2.027566464e-05,-1.11249986e-05) +(0,0) (0,0) (-2.024388139e-12,0.01754455146) (4.181890806e-12,0.007443043734) (-2.262288214e-13,-0.002330599262) (6.414121631e-13,-0.001357612187) (-1.452340376e-12,-0.001950473409) (9.467343129e-14,0.0003210053167) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(6.244874297e-13,0.03618709099) (2.697252669e-14,0.0004515616539) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-7.012487199e-05,9.339175788e-05) (-2.297593838e-05,3.045536483e-05) (4.528561733e-08,-6.868362458e-08) (-1.66514317e-05,-2.524731063e-06) (2.59504127e-05,8.035423414e-05) (-5.072117342e-09,7.910233257e-09) (-6.560212001e-06,-8.794977546e-07) (9.987822964e-06,3.042165383e-05) (1.244840867e-07,1.067618071e-07) (1.165404828e-06,6.776850675e-07) (4.727906968e-08,8.924566574e-08) (-5.76753882e-06,9.390541307e-06) (1.28088823e-05,1.16802478e-05) (5.145444379e-08,4.350669412e-08) (5.074993285e-07,3.070367565e-07) (3.733853324e-09,6.951973956e-09) (-2.953974939e-06,6.856098294e-06) (6.040097097e-06,2.242491619e-06) +(0,0) (0,0) (-1.099241284e-12,0.009526678654) (2.191751042e-12,0.003900938503) (4.271548499e-13,0.004400530276) (1.838561317e-13,-0.0003891496597) (-2.798649041e-13,-0.0003758547668) (-4.675917989e-13,-0.001585444316) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(4.913914448e-13,0.02847459545) (2.122391617e-14,0.0003553210569) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.0001093789551,-0.0001456700398) (3.58372723e-05,-4.750348753e-05) (8.822529576e-11,1.272698423e-08) (7.492681859e-06,2.86053938e-05) (-8.9440741e-05,-5.997586631e-05) (-1.042895797e-10,-1.600750282e-09) (2.743630426e-06,1.140352637e-05) (-3.314922633e-05,-2.391422379e-05) (-2.08010187e-07,4.655544245e-07) (8.835555619e-07,6.163683256e-07) (-4.530454876e-09,-3.308465939e-08) (1.110253532e-05,-9.295522593e-06) (3.370329281e-06,2.632189876e-05) (-9.336393785e-08,2.084335672e-07) (3.732957139e-07,2.721202136e-07) (-3.177275675e-10,-2.088885624e-09) (7.318428284e-06,-4.659306735e-06) (-1.545355614e-06,1.176554191e-05) +(0.003323277612,0) (0.001069070815,0) (0.00174180792,0) (0.0001281378722,0) (3.179629858e-05,0) (0.0005140931207,0) (0.0001209653547,0) (7.18021662e-05,0) (0,-4.930380658e-32) (-2.710505431e-20,0) (7.588732639e-10,0) (1.442267609e-08,0) (0.0005156165052,0) (0,0) (4.235164736e-21,-1.972152263e-30) (8.97091465e-10,0) (2.352707791e-08,0) (0.0002128748988,0) +(0.7705943424,0) (0.0003607104378,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.001813419252,0) (0.0005850414871,0) (2.124405867e-09,0) (7.085487522e-05,0) (0.0009108922339,0) (7.510449176e-11,0) (3.00612607e-05,0) (0.00033618718,0) (5.326768691e-07,0) (1.142595082e-06,0) (3.802636117e-09,0) (3.697326789e-05,0) (0.0002097508387,0) (2.393198566e-07,0) (5.022739562e-07,0) (5.962976263e-11,0) (3.332401508e-05,0) (6.914475989e-05,0) +(0.0008898263656,-0.0007163683525) (0.0002637034863,-0.0002117814647) (0.0004424923155,0.0003799167587) (-7.335259059e-05,-6.976367787e-05) (-2.049194964e-05,1.652403981e-05) (0.0001706412613,0.0001323756827) (-1.912950618e-05,-2.942000689e-05) (-1.929502185e-05,1.230290924e-05) (5.29395592e-23,0) (0,0) (3.78505961e-08,5.053828036e-08) (-4.457323768e-07,3.33625692e-07) (6.899910963e-06,-1.188698807e-05) (0,0) (-3.176373552e-22,-2.117582368e-22) (4.038949444e-08,4.375042653e-08) (-4.428814282e-07,4.084217944e-07) (3.762547207e-06,-7.200560218e-06) +(0.03738195575,0) (0.0004593806384,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.03738195575,0) (0.0004593806384,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.01180333237,-0.01466133493) (0.0002304575695,-0.000286958373) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-3.757388445e-14,-0.001115973469) (-4.260428398e-14,-0.0004271522746) (-2.922087985e-16,2.943727023e-08) (-5.871141873e-14,-4.890402007e-06) (3.464283974e-15,-0.0001206219073) (-3.263684734e-16,1.306127586e-08) (-6.150440357e-14,-1.876272823e-06) (3.625422672e-15,-4.927825048e-05) (1.759877347e-17,5.348850398e-13) (-2.898493743e-14,-5.889902487e-06) (8.821843004e-15,-5.701133382e-06) (9.816179971e-16,-2.824098531e-06) (-8.691825774e-15,0.000151957234) (4.163347328e-17,1.236962894e-12) (-2.938201667e-14,-2.554513476e-06) (8.878386964e-15,-2.395083132e-06) (1.077392545e-15,-1.256996698e-06) (-8.826665706e-15,6.661703989e-05) +(0.002712967572,-0.003567703253) (3.706284003e-05,-4.922167448e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0,0) (0,0) (0.006757530639,0.007870554039) (0.002947874522,0.003099524556) (-1.732966813e-05,2.149103312e-05) (-0.001053979961,-0.00135865188) (-0.0001660279204,-0.0001079548395) (7.584049129e-06,-1.18942919e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-1.038453564e-13,0.001978324842) (-1.177501124e-13,0.0006480951351) (-8.078765504e-16,1.524993798e-06) (-1.623216596e-13,0.0003240393457) (9.568694665e-15,0.0001782000389) (-9.022983093e-16,6.122280759e-07) (-1.700396895e-13,0.0001217959401) (1.001353833e-14,6.593088745e-05) (4.86286969e-17,-1.179117259e-12) (-8.00777098e-14,-2.0755281e-05) (2.435355293e-14,6.10165565e-05) (2.709086246e-15,1.1931184e-05) (-2.403600052e-14,-0.0001924171699) (1.1503569e-16,-2.614614061e-12) (-8.11708486e-14,-8.745472892e-06) (2.450834643e-14,2.503467556e-05) (2.973262089e-15,5.207565317e-06) (-2.440771839e-14,-7.866003003e-05) +(0.009747607642,0.01246003733) (0.000121652613,0.0001547735789) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0,0) (0,0) (0.003826753254,0.004457052419) (-0.004052307853,-0.004260774197) (-0.001211176039,0.001502015167) (-0.0003495764342,-0.000450627808) (0.0004743750085,0.0003084485899) (5.500250875e-05,-8.626208551e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(3.029422899e-14,0.001755455705) (3.435070136e-14,0.0005750836658) (2.341570381e-16,-4.484791197e-06) (4.73423153e-14,-0.0001130057849) (-2.810519498e-15,0.0001582737129) (2.615210098e-16,-1.799544486e-06) (4.959338497e-14,-4.270729501e-05) (-2.941242734e-15,5.855085701e-05) (-1.410498678e-17,-7.476163125e-13) (2.341189723e-14,1.97199985e-05) (-7.137988075e-15,-4.257473413e-05) (-8.046595515e-16,2.621716418e-05) (6.955599815e-15,-0.0001766698447) (-3.336587022e-17,-1.727483116e-12) (2.373175019e-14,8.134740302e-06) (-7.183447176e-15,-1.793624094e-05) (-8.826644913e-16,1.101268195e-05) (7.063208752e-15,-7.21683518e-05) +(-0.001445559188,0.001925184459) (-1.804094492e-05,2.391386807e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0,0) (0,0) (0.002077924227,0.002420176214) (-0.002123835932,-0.002233094243) (0.002286886861,-0.002836035917) (-0.0001002035425,-0.0001291691838) (9.141170929e-05,5.943781255e-05) (-0.0002716572291,0.0004260481869) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(2.383766949e-14,0.0013813183) (2.702959254e-14,0.0004525170243) (1.868924904e-16,3.373567288e-06) (3.717274731e-14,-0.0002969087697) (-2.211377425e-15,0.0001249086968) (2.087389478e-16,1.353129535e-06) (3.893998583e-14,-0.0001119736044) (-2.314235229e-15,4.620810094e-05) (-1.121640748e-17,3.755020044e-13) (1.830001153e-14,2.958732411e-05) (-5.636239261e-15,-9.157523315e-06) (-6.172580938e-16,-3.84560218e-05) (5.470901132e-15,-0.0001428985799) (-2.653396731e-17,1.061651774e-12) (1.854964101e-14,1.226178005e-05) (-5.6726439e-15,-3.614489749e-06) (-6.780552581e-16,-1.649641224e-05) (5.555562305e-15,-5.835432863e-05) +(0.0022547457,-0.003002852747) (2.813979759e-05,-3.730023068e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.0008898263656,0.0007163683525) (0.0002637034863,0.0002117814647) (0.0004424923155,-0.0003799167587) (-7.335259059e-05,6.976367787e-05) (-2.049194964e-05,-1.652403981e-05) (0.0001706412613,-0.0001323756827) (-1.912950618e-05,2.942000689e-05) (-1.929502185e-05,-1.230290924e-05) (5.29395592e-23,-1.058791184e-22) (-8.470329473e-22,0) (3.78505961e-08,-5.053828036e-08) (-4.457323768e-07,-3.33625692e-07) (6.899910963e-06,1.188698807e-05) (0,0) (1.058791184e-22,1.588186776e-22) (4.038949444e-08,-4.375042653e-08) (-4.428814282e-07,-4.084217944e-07) (3.762547207e-06,7.200560218e-06) +(0.03738195575,0) (0.0004593806384,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.03738195575,0) (0.0004593806384,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.0003926769682,0) (0.0001070003183,0) (0.0001952776704,0) (7.997302531e-05,0) (2.179385408e-05,0) (9.072628978e-05,0) (1.018039269e-05,0) (7.293086984e-06,0) (6.6174449e-24,-7.754818243e-25) (1.058791184e-22,-1.240770919e-24) (5.253558923e-06,5.169878828e-26) (2.149278346e-05,-1.033975766e-25) (3.663755034e-07,0) (0,1.178732373e-23) (2.64697796e-23,2.067951531e-25) (3.952117728e-06,3.877409121e-26) (1.542700385e-05,0) (3.100639357e-07,-4.135903063e-25) +(0.001813419252,0) (0.0005850414871,0) (1.581663972e-07,0) (0.0009626523137,0) (1.893875344e-05,0) (6.698663622e-08,0) (0.0003591176002,0) (7.063928932e-06,0) (9.856002163e-11,0) (0.000140166888,0) (2.936810284e-05,0) (1.182134062e-05,0) (6.704675123e-05,0) (2.228606217e-10,0) (5.80953299e-05,0) (1.213179708e-05,0) (5.195744135e-06,0) (2.778733444e-05,0) +(0.7705943424,0) (0.0003607104378,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.9022006019,0) (0.001265938283,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.0006867671573,0) (0.0003118737213,0) (5.478741969e-09,0) (2.484389374e-08,0) (0.0007682472119,0) (2.546730763e-09,0) (9.802916105e-09,0) (0.0003437670443,0) (2.902829344e-15,3.944304526e-31) (2.474974783e-07,0) (1.106742305e-06,0) (6.746724226e-07,5.916456789e-31) (0.000344401489,0) (6.865622166e-15,0) (1.123246758e-07,0) (4.728420013e-07,0) (3.041028689e-07,-3.944304526e-31) (0.0001597069346,0) +(2.606909815e-05,0) (1.052486136e-05,0) (1.50160704e-06,0) (9.220031973e-06,0) (1.760750571e-05,0) (6.598984231e-07,0) (3.84839452e-06,0) (8.0970703e-06,0) (1.625045466e-08,-1.292469707e-25) (6.544979468e-08,1.033975766e-25) (1.123332837e-06,5.169878828e-26) (5.541294868e-06,-1.80945759e-25) (7.884846338e-07,-4.135903063e-24) (6.573341473e-09,-7.754818243e-26) (2.967925929e-08,1.783608196e-24) (6.405630384e-07,-1.550963649e-25) (2.445001313e-06,2.067951531e-25) (9.585207486e-07,4.135903063e-25) +(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-0.001217455938,-1.048968745e-13) (-0.0004731891963,-1.331680902e-13) (2.838254859e-07,-2.667032522e-15) (-1.646163048e-06,-2.058752428e-14) (-0.001134965332,9.353993365e-14) (1.193742549e-07,-2.806929651e-15) (-6.363442288e-07,-2.174782716e-14) (-0.0004599365052,1.036925755e-13) (-6.39905609e-15,-4.744497745e-19) (8.721502128e-07,9.270421917e-16) (-1.184494378e-05,2.305635264e-14) (-2.850339931e-06,1.637935329e-15) (-0.0004361013826,7.942071128e-14) (-1.451212062e-14,-1.126939084e-18) (3.845477493e-07,8.539000264e-16) (-4.942394664e-06,2.315955851e-14) (-1.259856574e-06,1.799159549e-15) (-0.0001885786623,8.350119887e-14) +(-2.336997728e-05,8.899656399e-05) (-8.620275597e-06,3.25033392e-05) (9.817825478e-08,5.801548646e-06) (5.084310361e-06,-3.009317751e-05) (-2.466390723e-05,-5.241278162e-05) (1.420505313e-07,2.363204515e-06) (1.623034791e-06,-1.170234502e-05) (-1.115234346e-05,-2.211479671e-05) (-4.043179797e-08,5.656802291e-08) (-2.05138522e-07,-2.751341749e-08) (7.187037426e-07,-3.7854683e-06) (-7.485119781e-06,1.298409725e-05) (1.719364356e-06,1.585304449e-06) (-1.709340046e-08,2.258118837e-08) (-9.133145593e-08,-1.217697277e-08) (1.259848231e-07,-2.133345284e-06) (-3.269905813e-06,5.697606153e-06) (1.2237451e-06,2.432502756e-06) +(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-0.001080302854,-1.772989558e-14) (-0.0004198818397,-1.679889e-14) (-8.346906342e-07,8.241968752e-15) (5.740844431e-07,7.132640533e-15) (-0.001008053523,1.105114258e-14) (-3.508811352e-07,8.716645911e-15) (2.231317455e-07,7.573389404e-15) (-0.000408453118,9.53184962e-15) (-4.05730137e-15,-5.694584659e-20) (-8.286469788e-07,-3.094091175e-15) (8.264893354e-06,-1.417463855e-14) (-6.263236738e-06,1.984783545e-15) (-0.0004004110629,7.138747102e-15) (-9.588196122e-15,-1.375244239e-19) (-3.576931874e-07,-3.070677107e-15) (3.541007804e-06,-1.454441084e-14) (-2.664277624e-06,2.070054798e-15) (-0.0001730155867,5.991069674e-15) +(-1.400249322e-05,8.517683491e-08) (-5.116927849e-06,-4.684231583e-09) (2.138336521e-06,-4.599405375e-07) (-5.084421801e-06,3.325365207e-06) (-1.137644059e-05,-2.898889879e-06) (8.535405516e-07,-2.174669906e-07) (-1.941555583e-06,1.356036493e-06) (-4.835683466e-06,-1.14408203e-06) (-7.579709164e-09,2.762279321e-08) (-1.753976932e-07,2.708152116e-07) (1.596704523e-06,6.809813049e-07) (-4.264485678e-06,-1.255174248e-07) (-4.111833037e-07,-9.800694867e-07) (-3.057891808e-09,1.074053857e-08) (-8.079752589e-08,1.194200536e-07) (7.764209185e-07,2.571247395e-07) (-2.00927223e-06,2.278516912e-07) (-4.360917395e-07,-6.207081838e-07) +(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-0.0008500596729,-1.395115192e-14) (-0.0003303931097,-1.321857004e-14) (6.278742745e-07,-6.267371997e-15) (1.508336107e-06,1.829707832e-14) (-0.0007955499976,8.763968249e-15) (2.638376718e-07,-6.633341259e-15) (5.85025715e-07,1.938064798e-14) (-0.0003223495585,7.571202097e-15) (2.037832522e-15,1.279206619e-19) (-1.243278326e-06,-5.349347949e-15) (1.777719935e-06,-3.844960139e-15) (9.187079385e-06,-3.340764983e-15) (-0.0003238706207,6.12567423e-15) (5.892571045e-15,3.456051733e-19) (-5.39163517e-07,-5.385811883e-15) (7.135796431e-07,-3.765088724e-15) (3.990946276e-06,-3.584746342e-15) (-0.0001398980045,5.217450273e-15) +(2.184072547e-05,-1.328566161e-07) (7.98125124e-06,7.306342835e-09) (-2.353317487e-07,2.431358997e-07) (8.89348769e-06,5.889722967e-06) (1.368174814e-05,-6.080660701e-06) (-9.52595112e-08,1.163421003e-07) (3.483016518e-06,2.340901803e-06) (5.851874148e-06,-2.448645606e-06) (-8.904308778e-08,1.862177347e-09) (-1.575009145e-07,2.041408412e-07) (-4.182973373e-07,-3.929932664e-07) (5.261261828e-06,1.934800189e-06) (4.914717562e-07,-1.551016991e-06) (-3.785085941e-08,1.286475674e-10) (-7.066595277e-08,8.72698674e-08) (-1.727701374e-07,-1.345678508e-07) (2.079943364e-06,1.093768337e-06) (9.353131396e-07,-1.037909249e-06) +(-3.073369271e-12,0.05475639745) (-2.298249668e-13,0.001163347614) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-7.745507745e-13,0.0230047579) (-3.345332529e-14,0.0003354043926) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.0001316075504,0.0001730712488) (4.720116007e-05,6.268597155e-05) (4.031033681e-08,3.956133911e-08) (1.905169148e-05,-1.703869909e-05) (-6.747304549e-05,0.0001071724234) (-5.145549248e-09,-4.804649686e-09) (7.921469579e-06,-7.275844325e-06) (-2.725047363e-05,4.449205454e-05) (3.972157313e-08,8.413345314e-08) (-1.312821309e-08,2.731487938e-07) (5.080023904e-08,-4.112130507e-08) (7.129046668e-06,1.241194881e-05) (-1.166681958e-05,-5.410234195e-06) (1.633681841e-08,3.614193552e-08) (-6.193488424e-09,1.219375237e-07) (4.487741215e-09,-4.249329443e-09) (4.483008284e-06,7.834532362e-06) (-6.705958711e-06,-4.615929459e-06) +(0.01180333237,0.01466133493) (0.0002304575695,0.000286958373) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-3.757388445e-14,0.001115973469) (-4.260428398e-14,0.0004271522746) (-2.922087985e-16,-2.943727023e-08) (-5.871141873e-14,4.890402007e-06) (3.464283974e-15,0.0001206219073) (-3.263684734e-16,-1.306127586e-08) (-6.150440357e-14,1.876272823e-06) (3.625422672e-15,4.927825048e-05) (1.759877347e-17,-5.348850364e-13) (-2.898493743e-14,5.889902487e-06) (8.821843004e-15,5.701133382e-06) (9.816179971e-16,2.824098531e-06) (-8.691825774e-15,-0.000151957234) (4.163347328e-17,-1.236962896e-12) (-2.938201667e-14,2.554513476e-06) (8.878386964e-15,2.395083132e-06) (1.077392545e-15,1.256996698e-06) (-8.826665706e-15,-6.661703989e-05) +(0.002712967572,0.003567703253) (3.706284003e-05,4.922167448e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-0.001217455938,1.048968745e-13) (-0.0004731891963,1.331680902e-13) (2.838254859e-07,2.667032522e-15) (-1.646163048e-06,2.058752428e-14) (-0.001134965332,-9.353993365e-14) (1.193742549e-07,2.806929651e-15) (-6.363442288e-07,2.174782716e-14) (-0.0004599365052,-1.036925755e-13) (-6.399069642e-15,4.744497745e-19) (8.721502128e-07,-9.270421917e-16) (-1.184494378e-05,-2.305635264e-14) (-2.850339931e-06,-1.637935329e-15) (-0.0004361013826,-7.942071128e-14) (-1.451212062e-14,1.126939084e-18) (3.845477493e-07,-8.539000264e-16) (-4.942394664e-06,-2.315955851e-14) (-1.259856574e-06,-1.799159549e-15) (-0.0001885786623,-8.350119887e-14) +(-2.336997728e-05,-8.899656399e-05) (-8.620275597e-06,-3.25033392e-05) (9.817825478e-08,-5.801548646e-06) (5.084310361e-06,3.009317751e-05) (-2.466390723e-05,5.241278162e-05) (1.420505313e-07,-2.363204515e-06) (1.623034791e-06,1.170234502e-05) (-1.115234346e-05,2.211479671e-05) (-4.043179797e-08,-5.656802291e-08) (-2.05138522e-07,2.751341749e-08) (7.187037426e-07,3.7854683e-06) (-7.485119781e-06,-1.298409725e-05) (1.719364356e-06,-1.585304449e-06) (-1.709340046e-08,-2.258118837e-08) (-9.133145593e-08,1.217697277e-08) (1.259848231e-07,2.133345284e-06) (-3.269905813e-06,-5.697606153e-06) (1.2237451e-06,-2.432502756e-06) +(0,0) (0,0) (0.5510606563,0) (0.2287898526,0) (3.497233206e-05,0) (0.03259042882,0) (0.003852456277,0) (2.728501408e-05,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.002158226331,0) (0.0007179444763,0) (1.470354086e-05,0) (0.0001090752041,0) (0.001676734109,0) (5.595492446e-06,0) (4.130750209e-05,0) (0.0006153632011,0) (1.410625631e-14,3.155443621e-30) (3.07334846e-06,3.944304526e-31) (0.0001267708775,0) (1.204204804e-05,1.57772181e-30) (0.0005522171709,0) (3.067480352e-14,0) (1.316513672e-06,0) (5.166052285e-05,0) (5.219413394e-06,0) (0.0002226698044,0) +(0.0003247731928,0) (0.0001074385849,0) (2.242104943e-05,0) (0.000101024546,0) (0.0001905669123,0) (8.493601038e-06,0) (3.626944176e-05,0) (7.576061162e-05,0) (2.975099223e-07,-2.067951531e-24) (6.545291938e-07,4.301339185e-23) (1.321630137e-05,8.271806126e-25) (4.053453297e-05,2.067951531e-25) (6.936601868e-06,-1.98523347e-23) (1.220223247e-07,-4.135903063e-25) (2.860486991e-07,-1.240770919e-24) (7.129718703e-06,1.447566072e-24) (1.765029723e-05,3.30872245e-24) (7.735483806e-06,-1.32348898e-23) +(0,0) (0,0) (0.3120626857,0) (-0.3145069131,0) (0.002444227455,0) (0.01080935722,0) (-0.01100723887,0) (0.0001978816593,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.001915090305,-1.335751503e-13) (0.0006370640959,-1.537988172e-13) (-4.324103528e-05,2.064957961e-14) (-3.803898884e-05,3.11900116e-15) (0.001489241722,1.064118355e-13) (-1.644703661e-05,2.184936467e-14) (-1.448432252e-05,3.401844515e-15) (0.0005464819933,1.104512803e-13) (8.944071612e-15,-5.37611904e-19) (-2.920048495e-06,-7.799358519e-15) (-8.845527695e-05,-2.047495515e-14) (2.646077292e-05,6.820300902e-15) (0.0005070239929,8.329729939e-14) (2.026694378e-14,-1.283138686e-18) (-1.22457607e-06,-7.793369903e-15) (-3.701248625e-05,-2.141087058e-14) (1.103773763e-05,7.186674661e-15) (0.0002042932449,8.338536484e-14) +(1.284349739e-05,4.772636154e-05) (4.176499206e-06,1.580615794e-05) (-1.637198807e-06,-8.291662982e-06) (-1.365739124e-05,-1.476125239e-05) (2.456488526e-05,-2.98039344e-05) (-5.950508007e-07,-3.103480952e-06) (-4.942325707e-06,-5.332056991e-06) (9.785063172e-06,-1.163148615e-05) (1.150138939e-07,-4.234158657e-08) (4.359031483e-07,-9.22545632e-07) (-1.273242959e-06,5.816351088e-06) (5.466313628e-06,1.016188654e-05) (-2.867123006e-06,-1.31041973e-06) (4.484840704e-08,-1.742515531e-08) (1.996404585e-07,-4.006392654e-07) (-7.036287942e-07,2.636380213e-06) (3.2181333e-06,4.377497957e-06) (-2.131972104e-06,3.142402084e-07) +(0,0) (0,0) (0.1694498108,0) (-0.164834733,0) (-0.0046150778,0) (0.003098423631,0) (-0.002121086697,0) (-0.0009773369338,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.001506930239,-1.051064969e-13) (0.0005012876667,-1.210199267e-13) (3.252694177e-05,-1.903334618e-14) (-9.99427541e-05,3.755176299e-14) (0.001175300936,8.391686018e-14) (1.236700242e-05,-2.013420008e-14) (-3.797622396e-05,3.981209702e-14) (0.000431281392,8.71025428e-14) (-4.492296834e-15,5.108271321e-20) (-4.381157595e-06,-1.419353245e-14) (-1.902610263e-05,4.116223754e-15) (-3.881335348e-05,-8.189939113e-15) (0.0004101039919,6.692950174e-14) (-1.245537216e-14,2.367029216e-19) (-1.845846564e-06,-1.433977071e-14) (-7.458711811e-06,4.403933919e-15) (-1.653394432e-05,-8.760466044e-15) (0.0001651886852,6.698363681e-14) +(-2.003295385e-05,-7.44423399e-05) (-6.514395052e-06,-2.465403487e-05) (9.239836074e-07,9.251150332e-07) (-1.431917237e-05,3.227521164e-05) (-1.064377077e-06,4.92444156e-05) (3.961344705e-07,3.661838786e-07) (-5.649364548e-06,1.15785494e-05) (-1.372201324e-06,1.935529002e-05) (2.280251171e-07,3.053268573e-07) (4.078376831e-07,-7.060455894e-07) (1.056705235e-06,-1.661036676e-06) (-2.573322934e-06,-1.49414439e-05) (-2.046729951e-06,-4.370276278e-06) (9.88697933e-08,1.296933022e-07) (1.816535076e-07,-2.975472314e-07) (4.141876113e-07,-6.018640503e-07) (-2.328660063e-07,-6.309697042e-06) (-1.439856402e-06,-3.698707777e-06) +(0,0) (0,0) (-3.574796693e-12,-0.03098131397) (-3.042140382e-12,0.00541448473) (-3.236912117e-15,3.334652474e-05) (1.933870538e-12,0.004093227976) (5.083089287e-13,-0.0006826519903) (1.305409463e-14,-4.426198274e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-2.140675696e-12,-0.04078133152) (-9.245860848e-14,-0.0005088910162) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.0004728618127,-0.0006044432699) (0.0001549299637,-0.0001971109734) (1.554831761e-07,-1.531547939e-07) (6.611835083e-05,5.278679084e-05) (-0.0002245097037,-0.0003509719554) (-1.831387591e-08,1.739280133e-08) (2.546549238e-05,2.101936826e-05) (-8.398421587e-05,-0.0001357070295) (1.940406315e-07,-3.475987446e-07) (-7.367715354e-08,-8.616458177e-07) (1.710746026e-07,1.448801756e-07) (1.945324779e-05,-3.347036445e-05) (-3.631825003e-05,1.165944999e-05) (8.16747581e-08,-1.501052935e-07) (-3.097009875e-08,-3.777772687e-07) (1.503470171e-08,1.41103217e-08) (1.226136967e-05,-2.092456893e-05) (-2.027566464e-05,1.11249986e-05) +(0,0) (0,0) (0.006757530639,-0.007870554039) (0.002947874522,-0.003099524556) (-1.732966813e-05,-2.149103312e-05) (-0.001053979961,0.00135865188) (-0.0001660279204,0.0001079548395) (7.584049129e-06,1.18942919e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-1.038453564e-13,-0.001978324842) (-1.177501124e-13,-0.0006480951351) (-8.078765504e-16,-1.524993798e-06) (-1.623216596e-13,-0.0003240393457) (9.568694665e-15,-0.0001782000389) (-9.022983093e-16,-6.122280759e-07) (-1.700396895e-13,-0.0001217959401) (1.001353833e-14,-6.593088745e-05) (4.86286969e-17,1.179117263e-12) (-8.00777098e-14,2.0755281e-05) (2.435355293e-14,-6.10165565e-05) (2.709086246e-15,-1.1931184e-05) (-2.403600052e-14,0.0001924171699) (1.1503569e-16,2.614614073e-12) (-8.11708486e-14,8.745472892e-06) (2.450834643e-14,-2.503467556e-05) (2.973262089e-15,-5.207565317e-06) (-2.440771839e-14,7.866003003e-05) +(0.009747607642,-0.01246003733) (0.000121652613,-0.0001547735789) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-0.001080302854,1.772989558e-14) (-0.0004198818397,1.679889e-14) (-8.346906342e-07,-8.241968752e-15) (5.740844431e-07,-7.132640533e-15) (-0.001008053523,-1.105114258e-14) (-3.508811352e-07,-8.716645911e-15) (2.231317455e-07,-7.573389404e-15) (-0.000408453118,-9.53184962e-15) (-4.057328475e-15,5.694584659e-20) (-8.286469788e-07,3.094091175e-15) (8.264893354e-06,1.417463855e-14) (-6.263236738e-06,-1.984783545e-15) (-0.0004004110629,-7.138747102e-15) (-9.588196122e-15,1.375244239e-19) (-3.576931874e-07,3.070677107e-15) (3.541007804e-06,1.454441084e-14) (-2.664277624e-06,-2.070054798e-15) (-0.0001730155867,-5.991069674e-15) +(-1.400249322e-05,-8.517683491e-08) (-5.116927849e-06,4.684231583e-09) (2.138336521e-06,4.599405375e-07) (-5.084421801e-06,-3.325365207e-06) (-1.137644059e-05,2.898889879e-06) (8.535405516e-07,2.174669906e-07) (-1.941555583e-06,-1.356036493e-06) (-4.835683466e-06,1.14408203e-06) (-7.579709164e-09,-2.762279321e-08) (-1.753976932e-07,-2.708152116e-07) (1.596704523e-06,-6.809813049e-07) (-4.264485678e-06,1.255174248e-07) (-4.111833037e-07,9.800694867e-07) (-3.057891808e-09,-1.074053857e-08) (-8.079752589e-08,-1.194200536e-07) (7.764209185e-07,-2.571247395e-07) (-2.00927223e-06,-2.278516912e-07) (-4.360917395e-07,6.207081838e-07) +(0,0) (0,0) (0.3120626857,0) (-0.3145069131,0) (0.002444227455,0) (0.01080935722,0) (-0.01100723887,0) (0.0001978816593,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.001915090305,1.335751503e-13) (0.0006370640959,1.537988172e-13) (-4.324103528e-05,-2.064957961e-14) (-3.803898884e-05,-3.11900116e-15) (0.001489241722,-1.064118355e-13) (-1.644703661e-05,-2.184936467e-14) (-1.448432252e-05,-3.401844515e-15) (0.0005464819933,-1.104512803e-13) (8.944071612e-15,5.37611904e-19) (-2.920048495e-06,7.799358519e-15) (-8.845527695e-05,2.047495515e-14) (2.646077292e-05,-6.820300902e-15) (0.0005070239929,-8.329729939e-14) (2.026694378e-14,1.283138686e-18) (-1.22457607e-06,7.793369903e-15) (-3.701248625e-05,2.141087058e-14) (1.103773763e-05,-7.186674661e-15) (0.0002042932449,-8.338536484e-14) +(1.284349739e-05,-4.772636154e-05) (4.176499206e-06,-1.580615794e-05) (-1.637198807e-06,8.291662982e-06) (-1.365739124e-05,1.476125239e-05) (2.456488526e-05,2.98039344e-05) (-5.950508007e-07,3.103480952e-06) (-4.942325707e-06,5.332056991e-06) (9.785063172e-06,1.163148615e-05) (1.150138939e-07,4.234158657e-08) (4.359031483e-07,9.22545632e-07) (-1.273242959e-06,-5.816351088e-06) (5.466313628e-06,-1.016188654e-05) (-2.867123006e-06,1.31041973e-06) (4.484840704e-08,1.742515531e-08) (1.996404585e-07,4.006392654e-07) (-7.036287942e-07,-2.636380213e-06) (3.2181333e-06,-4.377497957e-06) (-2.131972104e-06,-3.142402084e-07) +(0,0) (0,0) (0.1767194204,0) (0.4323382235,0) (0.1708278373,0) (0.003585169254,0) (0.0314498852,0) (0.001435115663,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.001699344885,0) (0.0005652953336,0) (0.0001271657725,0) (1.32657526e-05,0) (0.001322714732,0) (4.834337921e-05,0) (5.078874012e-06,0) (0.0004853110627,0) (5.670946568e-15,0) (2.774395199e-06,1.972152263e-31) (6.172029553e-05,0) (5.814397199e-05,0) (0.0004655294022,-4.930380658e-32) (1.339042538e-14,0) (1.139058852e-06,0) (2.651781405e-05,0) (2.334202003e-05,0) (0.0001874332715,-2.958228395e-31) +(7.521436699e-06,0) (2.487726124e-06,0) (3.185938962e-06,0) (4.003174709e-06,0) (7.827739219e-06,0) (1.175670888e-06,0) (1.457353976e-06,0) (3.049591687e-06,0) (5.048909171e-08,2.568783543e-24) (1.590612012e-06,1.609124785e-23) (2.682375849e-06,-5.764414894e-24) (3.284718312e-06,6.203854594e-25) (1.43263148e-06,1.550963649e-25) (1.897206644e-08,-6.720842477e-25) (7.004686066e-07,5.11818004e-24) (1.044304049e-06,-3.231174268e-25) (1.672429076e-06,0) (6.003570143e-07,8.271806126e-25) +(0,0) (0,0) (0.09595851645,0) (0.2265907446,0) (-0.3225492611,0) (0.001027662692,0) (0.006060369352,0) (-0.007088032044,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.001337166288,-3.155443621e-30) (0.0004448148634,6.310887242e-30) (-9.565713795e-05,1.029370554e-14) (3.485412968e-05,-1.023797789e-14) (0.0010438788,-5.572765633e-17) (-3.635078475e-05,1.089033375e-14) (1.331622219e-05,-1.083246436e-14) (0.0003830055394,-5.786938279e-17) (-2.848348185e-15,-1.388191666e-19) (4.162623539e-06,2.367315108e-15) (1.327559777e-05,-5.945058718e-15) (-8.528709815e-05,3.98658355e-15) (0.0003765412857,-4.087011207e-16) (-8.229297777e-15,-3.646221352e-19) (1.716943454e-06,2.411501735e-15) (5.343838064e-06,-6.246511632e-15) (-3.496510539e-05,4.239624517e-15) (0.0001515559446,-4.042499974e-16) +(-1.173174173e-05,0) (-3.880290635e-06,0) (-4.095921988e-07,2.741514604e-07) (-2.780116483e-06,-6.455501517e-06) (-7.838840513e-06,6.181350057e-06) (-1.61552776e-07,1.190893908e-07) (-9.323685179e-07,-2.408299986e-06) (-3.148837626e-06,2.289210596e-06) (4.469778006e-08,1.504883457e-07) (1.26676856e-06,1.046269265e-07) (-8.328059922e-07,-3.050222055e-07) (-4.092802746e-06,-1.369814789e-06) (1.671585455e-06,1.419721722e-06) (1.781827059e-08,6.178672245e-08) (5.435245616e-07,4.675798968e-08) (-2.634292994e-07,-9.375785702e-08) (-1.60734289e-06,-1.092677106e-06) (2.465845742e-07,1.077890251e-06) +(0,0) (0,0) (-2.024388139e-12,-0.01754455146) (4.181890806e-12,-0.007443043734) (-2.262288214e-13,0.002330599262) (6.414121631e-13,0.001357612187) (-1.452340376e-12,0.001950473409) (9.467343129e-14,-0.0003210053167) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(6.244874297e-13,-0.03618709099) (2.697252669e-14,-0.0004515616539) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-7.012487199e-05,-9.339175788e-05) (-2.297593838e-05,-3.045536483e-05) (4.528561733e-08,6.868362458e-08) (-1.66514317e-05,2.524731063e-06) (2.59504127e-05,-8.035423414e-05) (-5.072117342e-09,-7.910233257e-09) (-6.560212001e-06,8.794977546e-07) (9.987822964e-06,-3.042165383e-05) (1.244840867e-07,-1.067618071e-07) (1.165404828e-06,-6.776850675e-07) (4.727906968e-08,-8.924566574e-08) (-5.76753882e-06,-9.390541307e-06) (1.28088823e-05,-1.16802478e-05) (5.145444379e-08,-4.350669412e-08) (5.074993285e-07,-3.070367565e-07) (3.733853324e-09,-6.951973956e-09) (-2.953974939e-06,-6.856098294e-06) (6.040097097e-06,-2.242491619e-06) +(0,0) (0,0) (0.003826753254,-0.004457052419) (-0.004052307853,0.004260774197) (-0.001211176039,-0.001502015167) (-0.0003495764342,0.000450627808) (0.0004743750085,-0.0003084485899) (5.500250875e-05,8.626208551e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(3.029422899e-14,-0.001755455705) (3.435070136e-14,-0.0005750836658) (2.341570381e-16,4.484791197e-06) (4.73423153e-14,0.0001130057849) (-2.810519498e-15,-0.0001582737129) (2.615210098e-16,1.799544486e-06) (4.959338497e-14,4.270729501e-05) (-2.941242734e-15,-5.855085701e-05) (-1.410498678e-17,7.476163209e-13) (2.341189723e-14,-1.97199985e-05) (-7.137988075e-15,4.257473413e-05) (-8.046595515e-16,-2.621716418e-05) (6.955599815e-15,0.0001766698447) (-3.336587022e-17,1.727483119e-12) (2.373175019e-14,-8.134740302e-06) (-7.183447176e-15,1.793624094e-05) (-8.826644913e-16,-1.101268195e-05) (7.063208752e-15,7.21683518e-05) +(-0.001445559188,-0.001925184459) (-1.804094492e-05,-2.391386807e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-0.0008500596729,1.395115192e-14) (-0.0003303931097,1.321857004e-14) (6.278742745e-07,6.267371997e-15) (1.508336107e-06,-1.829707832e-14) (-0.0007955499976,-8.763968249e-15) (2.638376718e-07,6.633341259e-15) (5.85025715e-07,-1.938064798e-14) (-0.0003223495585,-7.571202097e-15) (2.037825746e-15,-1.279206619e-19) (-1.243278326e-06,5.349347949e-15) (1.777719935e-06,3.844960139e-15) (9.187079385e-06,3.340764983e-15) (-0.0003238706207,-6.12567423e-15) (5.892564269e-15,-3.456051733e-19) (-5.39163517e-07,5.385811883e-15) (7.135796431e-07,3.765088724e-15) (3.990946276e-06,3.584746342e-15) (-0.0001398980045,-5.217450273e-15) +(2.184072547e-05,1.328566161e-07) (7.98125124e-06,-7.306342835e-09) (-2.353317487e-07,-2.431358997e-07) (8.89348769e-06,-5.889722967e-06) (1.368174814e-05,6.080660701e-06) (-9.52595112e-08,-1.163421003e-07) (3.483016518e-06,-2.340901803e-06) (5.851874148e-06,2.448645606e-06) (-8.904308778e-08,-1.862177347e-09) (-1.575009145e-07,-2.041408412e-07) (-4.182973373e-07,3.929932664e-07) (5.261261828e-06,-1.934800189e-06) (4.914717562e-07,1.551016991e-06) (-3.785085941e-08,-1.286475674e-10) (-7.066595277e-08,-8.72698674e-08) (-1.727701374e-07,1.345678508e-07) (2.079943364e-06,-1.093768337e-06) (9.353131396e-07,1.037909249e-06) +(0,0) (0,0) (0.1694498108,0) (-0.164834733,0) (-0.0046150778,0) (0.003098423631,0) (-0.002121086697,0) (-0.0009773369338,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.001506930239,1.051064969e-13) (0.0005012876667,1.210199267e-13) (3.252694177e-05,1.903334618e-14) (-9.99427541e-05,-3.755176299e-14) (0.001175300936,-8.391686018e-14) (1.236700242e-05,2.013420008e-14) (-3.797622396e-05,-3.981209702e-14) (0.000431281392,-8.71025428e-14) (-4.492290058e-15,-5.108271322e-20) (-4.381157595e-06,1.419353245e-14) (-1.902610263e-05,-4.116223754e-15) (-3.881335348e-05,8.189939113e-15) (0.0004101039919,-6.692950174e-14) (-1.245536538e-14,-2.367029216e-19) (-1.845846564e-06,1.433977071e-14) (-7.458711811e-06,-4.403933919e-15) (-1.653394432e-05,8.760466044e-15) (0.0001651886852,-6.698363681e-14) +(-2.003295385e-05,7.44423399e-05) (-6.514395052e-06,2.465403487e-05) (9.239836074e-07,-9.251150332e-07) (-1.431917237e-05,-3.227521164e-05) (-1.064377077e-06,-4.92444156e-05) (3.961344705e-07,-3.661838786e-07) (-5.649364548e-06,-1.15785494e-05) (-1.372201324e-06,-1.935529002e-05) (2.280251171e-07,-3.053268573e-07) (4.078376831e-07,7.060455894e-07) (1.056705235e-06,1.661036676e-06) (-2.573322934e-06,1.49414439e-05) (-2.046729951e-06,4.370276278e-06) (9.88697933e-08,-1.296933022e-07) (1.816535076e-07,2.975472314e-07) (4.141876113e-07,6.018640503e-07) (-2.328660063e-07,6.309697042e-06) (-1.439856402e-06,3.698707777e-06) +(0,0) (0,0) (0.09595851645,0) (0.2265907446,0) (-0.3225492611,0) (0.001027662692,0) (0.006060369352,0) (-0.007088032044,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.001337166288,3.155443621e-30) (0.0004448148634,-6.310887242e-30) (-9.565713795e-05,-1.029370554e-14) (3.485412968e-05,1.023797789e-14) (0.0010438788,5.572765633e-17) (-3.635078475e-05,-1.089033375e-14) (1.331622219e-05,1.083246436e-14) (0.0003830055394,5.786938279e-17) (-2.848334632e-15,1.388191666e-19) (4.162623539e-06,-2.367315108e-15) (1.327559777e-05,5.945058718e-15) (-8.528709815e-05,-3.98658355e-15) (0.0003765412857,4.087011207e-16) (-8.229297777e-15,3.646221352e-19) (1.716943454e-06,-2.411501735e-15) (5.343838064e-06,6.246511632e-15) (-3.496510539e-05,-4.239624517e-15) (0.0001515559446,4.042499974e-16) +(-1.173174173e-05,0) (-3.880290635e-06,0) (-4.095921988e-07,-2.741514604e-07) (-2.780116483e-06,6.455501517e-06) (-7.838840513e-06,-6.181350057e-06) (-1.61552776e-07,-1.190893908e-07) (-9.323685179e-07,2.408299986e-06) (-3.148837626e-06,-2.289210596e-06) (4.469778006e-08,-1.504883457e-07) (1.26676856e-06,-1.046269265e-07) (-8.328059922e-07,3.050222055e-07) (-4.092802746e-06,1.369814789e-06) (1.671585455e-06,-1.419721722e-06) (1.781827059e-08,-6.178672245e-08) (5.435245616e-07,-4.675798968e-08) (-2.634292994e-07,9.375785702e-08) (-1.60734289e-06,1.092677106e-06) (2.465845742e-07,-1.077890251e-06) +(0,0) (0,0) (0.05210540448,0) (0.1187574051,0) (0.6090226715,0) (0.0002945720367,0) (0.001167828641,0) (0.03500776944,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.001052178223,0) (0.0003500121988,0) (7.195558885e-05,0) (9.157492925e-05,0) (0.0008238230987,0) (2.733320619e-05,0) (3.491359954e-05,0) (0.0003022664318,0) (1.430604767e-15,-9.860761315e-32) (6.245481801e-06,-9.860761315e-32) (2.855486911e-06,-2.465190329e-32) (0.0001251013452,-3.45126646e-31) (0.0003045636627,3.45126646e-31) (5.057437216e-15,2.958228395e-31) (2.588009232e-06,2.958228395e-31) (1.076883833e-06,-1.972152263e-31) (5.23758695e-05,4.930380658e-32) (0.0001225460354,2.958228395e-31) +(1.829886623e-05,0) (6.052376612e-06,0) (7.624904163e-08,0) (1.234084223e-05,0) (1.273119943e-05,0) (3.426263494e-08,0) (4.576252571e-06,0) (4.96973533e-06,0) (4.881179852e-07,-9.564275833e-25) (1.015740713e-06,-3.282873056e-24) (2.932491235e-07,-1.783608196e-24) (5.670935863e-06,3.231174268e-24) (3.357323756e-06,-8.685396432e-24) (2.179567445e-07,9.04728795e-25) (4.248659482e-07,5.014782464e-24) (7.486855157e-08,1.395867284e-24) (2.258687365e-06,-1.240770919e-24) (2.036540451e-06,-3.30872245e-24) +(0,0) (0,0) (-1.099241284e-12,-0.009526678654) (2.191751042e-12,-0.003900938503) (4.271548499e-13,-0.004400530276) (1.838561317e-13,0.0003891496597) (-2.798649041e-13,0.0003758547668) (-4.675917989e-13,0.001585444316) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(4.913914448e-13,-0.02847459545) (2.122391617e-14,-0.0003553210569) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.0001093789551,0.0001456700398) (3.58372723e-05,4.750348753e-05) (8.822529576e-11,-1.272698423e-08) (7.492681859e-06,-2.86053938e-05) (-8.9440741e-05,5.997586631e-05) (-1.042895797e-10,1.600750282e-09) (2.743630426e-06,-1.140352637e-05) (-3.314922633e-05,2.391422379e-05) (-2.08010187e-07,-4.655544245e-07) (8.835555619e-07,-6.163683256e-07) (-4.530454876e-09,3.308465939e-08) (1.110253532e-05,9.295522593e-06) (3.370329281e-06,-2.632189876e-05) (-9.336393785e-08,-2.084335672e-07) (3.732957139e-07,-2.721202136e-07) (-3.177275675e-10,2.088885624e-09) (7.318428284e-06,4.659306735e-06) (-1.545355614e-06,-1.176554191e-05) +(0,0) (0,0) (0.002077924227,-0.002420176214) (-0.002123835932,0.002233094243) (0.002286886861,0.002836035917) (-0.0001002035425,0.0001291691838) (9.141170929e-05,-5.943781255e-05) (-0.0002716572291,-0.0004260481869) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(2.383766949e-14,-0.0013813183) (2.702959254e-14,-0.0004525170243) (1.868924904e-16,-3.373567288e-06) (3.717274731e-14,0.0002969087697) (-2.211377425e-15,-0.0001249086968) (2.087389478e-16,-1.353129535e-06) (3.893998583e-14,0.0001119736044) (-2.314235229e-15,-4.620810094e-05) (-1.121640748e-17,-3.755020248e-13) (1.830001153e-14,-2.958732411e-05) (-5.636239261e-15,9.157523315e-06) (-6.172580938e-16,3.84560218e-05) (5.470901132e-15,0.0001428985799) (-2.653396731e-17,-1.061651775e-12) (1.854964101e-14,-1.226178005e-05) (-5.6726439e-15,3.614489749e-06) (-6.780552581e-16,1.649641224e-05) (5.555562305e-15,5.835432863e-05) +(0.0022547457,0.003002852747) (2.813979759e-05,3.730023068e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-3.073369271e-12,-0.05475639745) (-2.298249668e-13,-0.001163347614) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-7.745507745e-13,-0.0230047579) (-3.345332529e-14,-0.0003354043926) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.0001316075504,-0.0001730712488) (4.720116007e-05,-6.268597155e-05) (4.031033681e-08,-3.956133911e-08) (1.905169148e-05,1.703869909e-05) (-6.747304549e-05,-0.0001071724234) (-5.145549248e-09,4.804649686e-09) (7.921469579e-06,7.275844325e-06) (-2.725047363e-05,-4.449205454e-05) (3.972157313e-08,-8.413345314e-08) (-1.312821309e-08,-2.731487938e-07) (5.080023904e-08,4.112130507e-08) (7.129046668e-06,-1.241194881e-05) (-1.166681958e-05,5.410234195e-06) (1.633681841e-08,-3.614193552e-08) (-6.193488424e-09,-1.219375237e-07) (4.487741215e-09,4.249329443e-09) (4.483008284e-06,-7.834532362e-06) (-6.705958711e-06,4.615929459e-06) +(0,0) (0,0) (-3.574796693e-12,0.03098131397) (-3.042140382e-12,-0.00541448473) (-3.236912117e-15,-3.334652474e-05) (1.933870538e-12,-0.004093227976) (5.083089287e-13,0.0006826519903) (1.305409463e-14,4.426198274e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-2.140675696e-12,0.04078133152) (-9.245860848e-14,0.0005088910162) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.0004728618127,0.0006044432699) (0.0001549299637,0.0001971109734) (1.554831761e-07,1.531547939e-07) (6.611835083e-05,-5.278679084e-05) (-0.0002245097037,0.0003509719554) (-1.831387591e-08,-1.739280133e-08) (2.546549238e-05,-2.101936826e-05) (-8.398421587e-05,0.0001357070295) (1.940406315e-07,3.475987446e-07) (-7.367715354e-08,8.616458177e-07) (1.710746026e-07,-1.448801756e-07) (1.945324779e-05,3.347036445e-05) (-3.631825003e-05,-1.165944999e-05) (8.16747581e-08,1.501052935e-07) (-3.097009875e-08,3.777772687e-07) (1.503470171e-08,-1.41103217e-08) (1.226136967e-05,2.092456893e-05) (-2.027566464e-05,-1.11249986e-05) +(0,0) (0,0) (-2.024388139e-12,0.01754455146) (4.181890806e-12,0.007443043734) (-2.262288214e-13,-0.002330599262) (6.414121631e-13,-0.001357612187) (-1.452340376e-12,-0.001950473409) (9.467343129e-14,0.0003210053167) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(6.244874297e-13,0.03618709099) (2.697252669e-14,0.0004515616539) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-7.012487199e-05,9.339175788e-05) (-2.297593838e-05,3.045536483e-05) (4.528561733e-08,-6.868362458e-08) (-1.66514317e-05,-2.524731063e-06) (2.59504127e-05,8.035423414e-05) (-5.072117342e-09,7.910233257e-09) (-6.560212001e-06,-8.794977546e-07) (9.987822964e-06,3.042165383e-05) (1.244840867e-07,1.067618071e-07) (1.165404828e-06,6.776850675e-07) (4.727906968e-08,8.924566574e-08) (-5.76753882e-06,9.390541307e-06) (1.28088823e-05,1.16802478e-05) (5.145444379e-08,4.350669412e-08) (5.074993285e-07,3.070367565e-07) (3.733853324e-09,6.951973956e-09) (-2.953974939e-06,6.856098294e-06) (6.040097097e-06,2.242491619e-06) +(0,0) (0,0) (-1.099241284e-12,0.009526678654) (2.191751042e-12,0.003900938503) (4.271548499e-13,0.004400530276) (1.838561317e-13,-0.0003891496597) (-2.798649041e-13,-0.0003758547668) (-4.675917989e-13,-0.001585444316) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(4.913914448e-13,0.02847459545) (2.122391617e-14,0.0003553210569) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.0001093789551,-0.0001456700398) (3.58372723e-05,-4.750348753e-05) (8.822529576e-11,1.272698423e-08) (7.492681859e-06,2.86053938e-05) (-8.9440741e-05,-5.997586631e-05) (-1.042895797e-10,-1.600750282e-09) (2.743630426e-06,1.140352637e-05) (-3.314922633e-05,-2.391422379e-05) (-2.08010187e-07,4.655544245e-07) (8.835555619e-07,6.163683256e-07) (-4.530454876e-09,-3.308465939e-08) (1.110253532e-05,-9.295522593e-06) (3.370329281e-06,2.632189876e-05) (-9.336393785e-08,2.084335672e-07) (3.732957139e-07,2.721202136e-07) (-3.177275675e-10,-2.088885624e-09) (7.318428284e-06,-4.659306735e-06) (-1.545355614e-06,1.176554191e-05) +(0.003323277612,0) (0.001069070815,0) (0.00174180792,0) (0.0001281378722,0) (3.179629858e-05,0) (0.0005140931207,0) (0.0001209653547,0) (7.18021662e-05,0) (0,-4.930380658e-32) (-2.710505431e-20,0) (7.588732639e-10,0) (1.442267609e-08,0) (0.0005156165052,0) (0,0) (4.235164736e-21,-1.972152263e-30) (8.97091465e-10,0) (2.352707791e-08,0) (0.0002128748988,0) +(0.7705943424,0) (0.0003607104378,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.001813419252,0) (0.0005850414871,0) (2.124405867e-09,0) (7.085487522e-05,0) (0.0009108922339,0) (7.510449176e-11,0) (3.00612607e-05,0) (0.00033618718,0) (5.326768691e-07,0) (1.142595082e-06,0) (3.802636117e-09,0) (3.697326789e-05,0) (0.0002097508387,0) (2.393198566e-07,0) (5.022739562e-07,0) (5.962976263e-11,0) (3.332401508e-05,0) (6.914475989e-05,0) +(0.0008898263656,-0.0007163683525) (0.0002637034863,-0.0002117814647) (0.0004424923155,0.0003799167587) (-7.335259059e-05,-6.976367787e-05) (-2.049194964e-05,1.652403981e-05) (0.0001706412613,0.0001323756827) (-1.912950618e-05,-2.942000689e-05) (-1.929502185e-05,1.230290924e-05) (5.29395592e-23,0) (0,0) (3.78505961e-08,5.053828036e-08) (-4.457323768e-07,3.33625692e-07) (6.899910963e-06,-1.188698807e-05) (0,0) (-3.176373552e-22,-2.117582368e-22) (4.038949444e-08,4.375042653e-08) (-4.428814282e-07,4.084217944e-07) (3.762547207e-06,-7.200560218e-06) +(0.03738195575,0) (0.0004593806384,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.03738195575,0) (0.0004593806384,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.01180333237,-0.01466133493) (0.0002304575695,-0.000286958373) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-3.757388445e-14,-0.001115973469) (-4.260428398e-14,-0.0004271522746) (-2.922087985e-16,2.943727023e-08) (-5.871141873e-14,-4.890402007e-06) (3.464283974e-15,-0.0001206219073) (-3.263684734e-16,1.306127586e-08) (-6.150440357e-14,-1.876272823e-06) (3.625422672e-15,-4.927825048e-05) (1.759877347e-17,5.348850398e-13) (-2.898493743e-14,-5.889902487e-06) (8.821843004e-15,-5.701133382e-06) (9.816179971e-16,-2.824098531e-06) (-8.691825774e-15,0.000151957234) (4.163347328e-17,1.236962894e-12) (-2.938201667e-14,-2.554513476e-06) (8.878386964e-15,-2.395083132e-06) (1.077392545e-15,-1.256996698e-06) (-8.826665706e-15,6.661703989e-05) +(0.002712967572,-0.003567703253) (3.706284003e-05,-4.922167448e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0,0) (0,0) (0.006757530639,0.007870554039) (0.002947874522,0.003099524556) (-1.732966813e-05,2.149103312e-05) (-0.001053979961,-0.00135865188) (-0.0001660279204,-0.0001079548395) (7.584049129e-06,-1.18942919e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-1.038453564e-13,0.001978324842) (-1.177501124e-13,0.0006480951351) (-8.078765504e-16,1.524993798e-06) (-1.623216596e-13,0.0003240393457) (9.568694665e-15,0.0001782000389) (-9.022983093e-16,6.122280759e-07) (-1.700396895e-13,0.0001217959401) (1.001353833e-14,6.593088745e-05) (4.86286969e-17,-1.179117259e-12) (-8.00777098e-14,-2.0755281e-05) (2.435355293e-14,6.10165565e-05) (2.709086246e-15,1.1931184e-05) (-2.403600052e-14,-0.0001924171699) (1.1503569e-16,-2.614614061e-12) (-8.11708486e-14,-8.745472892e-06) (2.450834643e-14,2.503467556e-05) (2.973262089e-15,5.207565317e-06) (-2.440771839e-14,-7.866003003e-05) +(0.009747607642,0.01246003733) (0.000121652613,0.0001547735789) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0,0) (0,0) (0.003826753254,0.004457052419) (-0.004052307853,-0.004260774197) (-0.001211176039,0.001502015167) (-0.0003495764342,-0.000450627808) (0.0004743750085,0.0003084485899) (5.500250875e-05,-8.626208551e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(3.029422899e-14,0.001755455705) (3.435070136e-14,0.0005750836658) (2.341570381e-16,-4.484791197e-06) (4.73423153e-14,-0.0001130057849) (-2.810519498e-15,0.0001582737129) (2.615210098e-16,-1.799544486e-06) (4.959338497e-14,-4.270729501e-05) (-2.941242734e-15,5.855085701e-05) (-1.410498678e-17,-7.476163125e-13) (2.341189723e-14,1.97199985e-05) (-7.137988075e-15,-4.257473413e-05) (-8.046595515e-16,2.621716418e-05) (6.955599815e-15,-0.0001766698447) (-3.336587022e-17,-1.727483116e-12) (2.373175019e-14,8.134740302e-06) (-7.183447176e-15,-1.793624094e-05) (-8.826644913e-16,1.101268195e-05) (7.063208752e-15,-7.21683518e-05) +(-0.001445559188,0.001925184459) (-1.804094492e-05,2.391386807e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0,0) (0,0) (0.002077924227,0.002420176214) (-0.002123835932,-0.002233094243) (0.002286886861,-0.002836035917) (-0.0001002035425,-0.0001291691838) (9.141170929e-05,5.943781255e-05) (-0.0002716572291,0.0004260481869) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(2.383766949e-14,0.0013813183) (2.702959254e-14,0.0004525170243) (1.868924904e-16,3.373567288e-06) (3.717274731e-14,-0.0002969087697) (-2.211377425e-15,0.0001249086968) (2.087389478e-16,1.353129535e-06) (3.893998583e-14,-0.0001119736044) (-2.314235229e-15,4.620810094e-05) (-1.121640748e-17,3.755020044e-13) (1.830001153e-14,2.958732411e-05) (-5.636239261e-15,-9.157523315e-06) (-6.172580938e-16,-3.84560218e-05) (5.470901132e-15,-0.0001428985799) (-2.653396731e-17,1.061651774e-12) (1.854964101e-14,1.226178005e-05) (-5.6726439e-15,-3.614489749e-06) (-6.780552581e-16,-1.649641224e-05) (5.555562305e-15,-5.835432863e-05) +(0.0022547457,-0.003002852747) (2.813979759e-05,-3.730023068e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.0008898263656,0.0007163683525) (0.0002637034863,0.0002117814647) (0.0004424923155,-0.0003799167587) (-7.335259059e-05,6.976367787e-05) (-2.049194964e-05,-1.652403981e-05) (0.0001706412613,-0.0001323756827) (-1.912950618e-05,2.942000689e-05) (-1.929502185e-05,-1.230290924e-05) (5.29395592e-23,-1.058791184e-22) (-8.470329473e-22,0) (3.78505961e-08,-5.053828036e-08) (-4.457323768e-07,-3.33625692e-07) (6.899910963e-06,1.188698807e-05) (0,0) (1.058791184e-22,1.588186776e-22) (4.038949444e-08,-4.375042653e-08) (-4.428814282e-07,-4.084217944e-07) (3.762547207e-06,7.200560218e-06) +(0.03738195575,0) (0.0004593806384,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.03738195575,0) (0.0004593806384,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.0003926769682,0) (0.0001070003183,0) (0.0001952776704,0) (7.997302531e-05,0) (2.179385408e-05,0) (9.072628978e-05,0) (1.018039269e-05,0) (7.293086984e-06,0) (6.6174449e-24,-7.754818243e-25) (1.058791184e-22,-1.240770919e-24) (5.253558923e-06,5.169878828e-26) (2.149278346e-05,-1.033975766e-25) (3.663755034e-07,0) (0,1.178732373e-23) (2.64697796e-23,2.067951531e-25) (3.952117728e-06,3.877409121e-26) (1.542700385e-05,0) (3.100639357e-07,-4.135903063e-25) +(0.001813419252,0) (0.0005850414871,0) (1.581663972e-07,0) (0.0009626523137,0) (1.893875344e-05,0) (6.698663622e-08,0) (0.0003591176002,0) (7.063928932e-06,0) (9.856002163e-11,0) (0.000140166888,0) (2.936810284e-05,0) (1.182134062e-05,0) (6.704675123e-05,0) (2.228606217e-10,0) (5.80953299e-05,0) (1.213179708e-05,0) (5.195744135e-06,0) (2.778733444e-05,0) +(0.7705943424,0) (0.0003607104378,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.9022006019,0) (0.001265938283,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.0006867671573,0) (0.0003118737213,0) (5.478741969e-09,0) (2.484389374e-08,0) (0.0007682472119,0) (2.546730763e-09,0) (9.802916105e-09,0) (0.0003437670443,0) (2.902829344e-15,3.944304526e-31) (2.474974783e-07,0) (1.106742305e-06,0) (6.746724226e-07,5.916456789e-31) (0.000344401489,0) (6.865622166e-15,0) (1.123246758e-07,0) (4.728420013e-07,0) (3.041028689e-07,-3.944304526e-31) (0.0001597069346,0) +(2.606909815e-05,0) (1.052486136e-05,0) (1.50160704e-06,0) (9.220031973e-06,0) (1.760750571e-05,0) (6.598984231e-07,0) (3.84839452e-06,0) (8.0970703e-06,0) (1.625045466e-08,-1.292469707e-25) (6.544979468e-08,1.033975766e-25) (1.123332837e-06,5.169878828e-26) (5.541294868e-06,-1.80945759e-25) (7.884846338e-07,-4.135903063e-24) (6.573341473e-09,-7.754818243e-26) (2.967925929e-08,1.783608196e-24) (6.405630384e-07,-1.550963649e-25) (2.445001313e-06,2.067951531e-25) (9.585207486e-07,4.135903063e-25) +(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-0.001217455938,-1.048968745e-13) (-0.0004731891963,-1.331680902e-13) (2.838254859e-07,-2.667032522e-15) (-1.646163048e-06,-2.058752428e-14) (-0.001134965332,9.353993365e-14) (1.193742549e-07,-2.806929651e-15) (-6.363442288e-07,-2.174782716e-14) (-0.0004599365052,1.036925755e-13) (-6.39905609e-15,-4.744497745e-19) (8.721502128e-07,9.270421917e-16) (-1.184494378e-05,2.305635264e-14) (-2.850339931e-06,1.637935329e-15) (-0.0004361013826,7.942071128e-14) (-1.451212062e-14,-1.126939084e-18) (3.845477493e-07,8.539000264e-16) (-4.942394664e-06,2.315955851e-14) (-1.259856574e-06,1.799159549e-15) (-0.0001885786623,8.350119887e-14) +(-2.336997728e-05,8.899656399e-05) (-8.620275597e-06,3.25033392e-05) (9.817825478e-08,5.801548646e-06) (5.084310361e-06,-3.009317751e-05) (-2.466390723e-05,-5.241278162e-05) (1.420505313e-07,2.363204515e-06) (1.623034791e-06,-1.170234502e-05) (-1.115234346e-05,-2.211479671e-05) (-4.043179797e-08,5.656802291e-08) (-2.05138522e-07,-2.751341749e-08) (7.187037426e-07,-3.7854683e-06) (-7.485119781e-06,1.298409725e-05) (1.719364356e-06,1.585304449e-06) (-1.709340046e-08,2.258118837e-08) (-9.133145593e-08,-1.217697277e-08) (1.259848231e-07,-2.133345284e-06) (-3.269905813e-06,5.697606153e-06) (1.2237451e-06,2.432502756e-06) +(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-0.001080302854,-1.772989558e-14) (-0.0004198818397,-1.679889e-14) (-8.346906342e-07,8.241968752e-15) (5.740844431e-07,7.132640533e-15) (-0.001008053523,1.105114258e-14) (-3.508811352e-07,8.716645911e-15) (2.231317455e-07,7.573389404e-15) (-0.000408453118,9.53184962e-15) (-4.05730137e-15,-5.694584659e-20) (-8.286469788e-07,-3.094091175e-15) (8.264893354e-06,-1.417463855e-14) (-6.263236738e-06,1.984783545e-15) (-0.0004004110629,7.138747102e-15) (-9.588196122e-15,-1.375244239e-19) (-3.576931874e-07,-3.070677107e-15) (3.541007804e-06,-1.454441084e-14) (-2.664277624e-06,2.070054798e-15) (-0.0001730155867,5.991069674e-15) +(-1.400249322e-05,8.517683491e-08) (-5.116927849e-06,-4.684231583e-09) (2.138336521e-06,-4.599405375e-07) (-5.084421801e-06,3.325365207e-06) (-1.137644059e-05,-2.898889879e-06) (8.535405516e-07,-2.174669906e-07) (-1.941555583e-06,1.356036493e-06) (-4.835683466e-06,-1.14408203e-06) (-7.579709164e-09,2.762279321e-08) (-1.753976932e-07,2.708152116e-07) (1.596704523e-06,6.809813049e-07) (-4.264485678e-06,-1.255174248e-07) (-4.111833037e-07,-9.800694867e-07) (-3.057891808e-09,1.074053857e-08) (-8.079752589e-08,1.194200536e-07) (7.764209185e-07,2.571247395e-07) (-2.00927223e-06,2.278516912e-07) (-4.360917395e-07,-6.207081838e-07) +(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-0.0008500596729,-1.395115192e-14) (-0.0003303931097,-1.321857004e-14) (6.278742745e-07,-6.267371997e-15) (1.508336107e-06,1.829707832e-14) (-0.0007955499976,8.763968249e-15) (2.638376718e-07,-6.633341259e-15) (5.85025715e-07,1.938064798e-14) (-0.0003223495585,7.571202097e-15) (2.037832522e-15,1.279206619e-19) (-1.243278326e-06,-5.349347949e-15) (1.777719935e-06,-3.844960139e-15) (9.187079385e-06,-3.340764983e-15) (-0.0003238706207,6.12567423e-15) (5.892571045e-15,3.456051733e-19) (-5.39163517e-07,-5.385811883e-15) (7.135796431e-07,-3.765088724e-15) (3.990946276e-06,-3.584746342e-15) (-0.0001398980045,5.217450273e-15) +(2.184072547e-05,-1.328566161e-07) (7.98125124e-06,7.306342835e-09) (-2.353317487e-07,2.431358997e-07) (8.89348769e-06,5.889722967e-06) (1.368174814e-05,-6.080660701e-06) (-9.52595112e-08,1.163421003e-07) (3.483016518e-06,2.340901803e-06) (5.851874148e-06,-2.448645606e-06) (-8.904308778e-08,1.862177347e-09) (-1.575009145e-07,2.041408412e-07) (-4.182973373e-07,-3.929932664e-07) (5.261261828e-06,1.934800189e-06) (4.914717562e-07,-1.551016991e-06) (-3.785085941e-08,1.286475674e-10) (-7.066595277e-08,8.72698674e-08) (-1.727701374e-07,-1.345678508e-07) (2.079943364e-06,1.093768337e-06) (9.353131396e-07,-1.037909249e-06) +(-3.073369271e-12,0.05475639745) (-2.298249668e-13,0.001163347614) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-7.745507745e-13,0.0230047579) (-3.345332529e-14,0.0003354043926) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.0001316075504,0.0001730712488) (4.720116007e-05,6.268597155e-05) (4.031033681e-08,3.956133911e-08) (1.905169148e-05,-1.703869909e-05) (-6.747304549e-05,0.0001071724234) (-5.145549248e-09,-4.804649686e-09) (7.921469579e-06,-7.275844325e-06) (-2.725047363e-05,4.449205454e-05) (3.972157313e-08,8.413345314e-08) (-1.312821309e-08,2.731487938e-07) (5.080023904e-08,-4.112130507e-08) (7.129046668e-06,1.241194881e-05) (-1.166681958e-05,-5.410234195e-06) (1.633681841e-08,3.614193552e-08) (-6.193488424e-09,1.219375237e-07) (4.487741215e-09,-4.249329443e-09) (4.483008284e-06,7.834532362e-06) (-6.705958711e-06,-4.615929459e-06) +(0.01180333237,0.01466133493) (0.0002304575695,0.000286958373) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-3.757388445e-14,0.001115973469) (-4.260428398e-14,0.0004271522746) (-2.922087985e-16,-2.943727023e-08) (-5.871141873e-14,4.890402007e-06) (3.464283974e-15,0.0001206219073) (-3.263684734e-16,-1.306127586e-08) (-6.150440357e-14,1.876272823e-06) (3.625422672e-15,4.927825048e-05) (1.759877347e-17,-5.348850364e-13) (-2.898493743e-14,5.889902487e-06) (8.821843004e-15,5.701133382e-06) (9.816179971e-16,2.824098531e-06) (-8.691825774e-15,-0.000151957234) (4.163347328e-17,-1.236962896e-12) (-2.938201667e-14,2.554513476e-06) (8.878386964e-15,2.395083132e-06) (1.077392545e-15,1.256996698e-06) (-8.826665706e-15,-6.661703989e-05) +(0.002712967572,0.003567703253) (3.706284003e-05,4.922167448e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-0.001217455938,1.048968745e-13) (-0.0004731891963,1.331680902e-13) (2.838254859e-07,2.667032522e-15) (-1.646163048e-06,2.058752428e-14) (-0.001134965332,-9.353993365e-14) (1.193742549e-07,2.806929651e-15) (-6.363442288e-07,2.174782716e-14) (-0.0004599365052,-1.036925755e-13) (-6.399069642e-15,4.744497745e-19) (8.721502128e-07,-9.270421917e-16) (-1.184494378e-05,-2.305635264e-14) (-2.850339931e-06,-1.637935329e-15) (-0.0004361013826,-7.942071128e-14) (-1.451212062e-14,1.126939084e-18) (3.845477493e-07,-8.539000264e-16) (-4.942394664e-06,-2.315955851e-14) (-1.259856574e-06,-1.799159549e-15) (-0.0001885786623,-8.350119887e-14) +(-2.336997728e-05,-8.899656399e-05) (-8.620275597e-06,-3.25033392e-05) (9.817825478e-08,-5.801548646e-06) (5.084310361e-06,3.009317751e-05) (-2.466390723e-05,5.241278162e-05) (1.420505313e-07,-2.363204515e-06) (1.623034791e-06,1.170234502e-05) (-1.115234346e-05,2.211479671e-05) (-4.043179797e-08,-5.656802291e-08) (-2.05138522e-07,2.751341749e-08) (7.187037426e-07,3.7854683e-06) (-7.485119781e-06,-1.298409725e-05) (1.719364356e-06,-1.585304449e-06) (-1.709340046e-08,-2.258118837e-08) (-9.133145593e-08,1.217697277e-08) (1.259848231e-07,2.133345284e-06) (-3.269905813e-06,-5.697606153e-06) (1.2237451e-06,-2.432502756e-06) +(0,0) (0,0) (0.5510606563,0) (0.2287898526,0) (3.497233206e-05,0) (0.03259042882,0) (0.003852456277,0) (2.728501408e-05,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.002158226331,0) (0.0007179444763,0) (1.470354086e-05,0) (0.0001090752041,0) (0.001676734109,0) (5.595492446e-06,0) (4.130750209e-05,0) (0.0006153632011,0) (1.410625631e-14,3.155443621e-30) (3.07334846e-06,3.944304526e-31) (0.0001267708775,0) (1.204204804e-05,1.57772181e-30) (0.0005522171709,0) (3.067480352e-14,0) (1.316513672e-06,0) (5.166052285e-05,0) (5.219413394e-06,0) (0.0002226698044,0) +(0.0003247731928,0) (0.0001074385849,0) (2.242104943e-05,0) (0.000101024546,0) (0.0001905669123,0) (8.493601038e-06,0) (3.626944176e-05,0) (7.576061162e-05,0) (2.975099223e-07,-2.067951531e-24) (6.545291938e-07,4.301339185e-23) (1.321630137e-05,8.271806126e-25) (4.053453297e-05,2.067951531e-25) (6.936601868e-06,-1.98523347e-23) (1.220223247e-07,-4.135903063e-25) (2.860486991e-07,-1.240770919e-24) (7.129718703e-06,1.447566072e-24) (1.765029723e-05,3.30872245e-24) (7.735483806e-06,-1.32348898e-23) +(0,0) (0,0) (0.3120626857,0) (-0.3145069131,0) (0.002444227455,0) (0.01080935722,0) (-0.01100723887,0) (0.0001978816593,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.001915090305,-1.335751503e-13) (0.0006370640959,-1.537988172e-13) (-4.324103528e-05,2.064957961e-14) (-3.803898884e-05,3.11900116e-15) (0.001489241722,1.064118355e-13) (-1.644703661e-05,2.184936467e-14) (-1.448432252e-05,3.401844515e-15) (0.0005464819933,1.104512803e-13) (8.944071612e-15,-5.37611904e-19) (-2.920048495e-06,-7.799358519e-15) (-8.845527695e-05,-2.047495515e-14) (2.646077292e-05,6.820300902e-15) (0.0005070239929,8.329729939e-14) (2.026694378e-14,-1.283138686e-18) (-1.22457607e-06,-7.793369903e-15) (-3.701248625e-05,-2.141087058e-14) (1.103773763e-05,7.186674661e-15) (0.0002042932449,8.338536484e-14) +(1.284349739e-05,4.772636154e-05) (4.176499206e-06,1.580615794e-05) (-1.637198807e-06,-8.291662982e-06) (-1.365739124e-05,-1.476125239e-05) (2.456488526e-05,-2.98039344e-05) (-5.950508007e-07,-3.103480952e-06) (-4.942325707e-06,-5.332056991e-06) (9.785063172e-06,-1.163148615e-05) (1.150138939e-07,-4.234158657e-08) (4.359031483e-07,-9.22545632e-07) (-1.273242959e-06,5.816351088e-06) (5.466313628e-06,1.016188654e-05) (-2.867123006e-06,-1.31041973e-06) (4.484840704e-08,-1.742515531e-08) (1.996404585e-07,-4.006392654e-07) (-7.036287942e-07,2.636380213e-06) (3.2181333e-06,4.377497957e-06) (-2.131972104e-06,3.142402084e-07) +(0,0) (0,0) (0.1694498108,0) (-0.164834733,0) (-0.0046150778,0) (0.003098423631,0) (-0.002121086697,0) (-0.0009773369338,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.001506930239,-1.051064969e-13) (0.0005012876667,-1.210199267e-13) (3.252694177e-05,-1.903334618e-14) (-9.99427541e-05,3.755176299e-14) (0.001175300936,8.391686018e-14) (1.236700242e-05,-2.013420008e-14) (-3.797622396e-05,3.981209702e-14) (0.000431281392,8.71025428e-14) (-4.492296834e-15,5.108271321e-20) (-4.381157595e-06,-1.419353245e-14) (-1.902610263e-05,4.116223754e-15) (-3.881335348e-05,-8.189939113e-15) (0.0004101039919,6.692950174e-14) (-1.245537216e-14,2.367029216e-19) (-1.845846564e-06,-1.433977071e-14) (-7.458711811e-06,4.403933919e-15) (-1.653394432e-05,-8.760466044e-15) (0.0001651886852,6.698363681e-14) +(-2.003295385e-05,-7.44423399e-05) (-6.514395052e-06,-2.465403487e-05) (9.239836074e-07,9.251150332e-07) (-1.431917237e-05,3.227521164e-05) (-1.064377077e-06,4.92444156e-05) (3.961344705e-07,3.661838786e-07) (-5.649364548e-06,1.15785494e-05) (-1.372201324e-06,1.935529002e-05) (2.280251171e-07,3.053268573e-07) (4.078376831e-07,-7.060455894e-07) (1.056705235e-06,-1.661036676e-06) (-2.573322934e-06,-1.49414439e-05) (-2.046729951e-06,-4.370276278e-06) (9.88697933e-08,1.296933022e-07) (1.816535076e-07,-2.975472314e-07) (4.141876113e-07,-6.018640503e-07) (-2.328660063e-07,-6.309697042e-06) (-1.439856402e-06,-3.698707777e-06) +(0,0) (0,0) (-3.574796693e-12,-0.03098131397) (-3.042140382e-12,0.00541448473) (-3.236912117e-15,3.334652474e-05) (1.933870538e-12,0.004093227976) (5.083089287e-13,-0.0006826519903) (1.305409463e-14,-4.426198274e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-2.140675696e-12,-0.04078133152) (-9.245860848e-14,-0.0005088910162) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.0004728618127,-0.0006044432699) (0.0001549299637,-0.0001971109734) (1.554831761e-07,-1.531547939e-07) (6.611835083e-05,5.278679084e-05) (-0.0002245097037,-0.0003509719554) (-1.831387591e-08,1.739280133e-08) (2.546549238e-05,2.101936826e-05) (-8.398421587e-05,-0.0001357070295) (1.940406315e-07,-3.475987446e-07) (-7.367715354e-08,-8.616458177e-07) (1.710746026e-07,1.448801756e-07) (1.945324779e-05,-3.347036445e-05) (-3.631825003e-05,1.165944999e-05) (8.16747581e-08,-1.501052935e-07) (-3.097009875e-08,-3.777772687e-07) (1.503470171e-08,1.41103217e-08) (1.226136967e-05,-2.092456893e-05) (-2.027566464e-05,1.11249986e-05) +(0,0) (0,0) (0.006757530639,-0.007870554039) (0.002947874522,-0.003099524556) (-1.732966813e-05,-2.149103312e-05) (-0.001053979961,0.00135865188) (-0.0001660279204,0.0001079548395) (7.584049129e-06,1.18942919e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-1.038453564e-13,-0.001978324842) (-1.177501124e-13,-0.0006480951351) (-8.078765504e-16,-1.524993798e-06) (-1.623216596e-13,-0.0003240393457) (9.568694665e-15,-0.0001782000389) (-9.022983093e-16,-6.122280759e-07) (-1.700396895e-13,-0.0001217959401) (1.001353833e-14,-6.593088745e-05) (4.86286969e-17,1.179117263e-12) (-8.00777098e-14,2.0755281e-05) (2.435355293e-14,-6.10165565e-05) (2.709086246e-15,-1.1931184e-05) (-2.403600052e-14,0.0001924171699) (1.1503569e-16,2.614614073e-12) (-8.11708486e-14,8.745472892e-06) (2.450834643e-14,-2.503467556e-05) (2.973262089e-15,-5.207565317e-06) (-2.440771839e-14,7.866003003e-05) +(0.009747607642,-0.01246003733) (0.000121652613,-0.0001547735789) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-0.001080302854,1.772989558e-14) (-0.0004198818397,1.679889e-14) (-8.346906342e-07,-8.241968752e-15) (5.740844431e-07,-7.132640533e-15) (-0.001008053523,-1.105114258e-14) (-3.508811352e-07,-8.716645911e-15) (2.231317455e-07,-7.573389404e-15) (-0.000408453118,-9.53184962e-15) (-4.057328475e-15,5.694584659e-20) (-8.286469788e-07,3.094091175e-15) (8.264893354e-06,1.417463855e-14) (-6.263236738e-06,-1.984783545e-15) (-0.0004004110629,-7.138747102e-15) (-9.588196122e-15,1.375244239e-19) (-3.576931874e-07,3.070677107e-15) (3.541007804e-06,1.454441084e-14) (-2.664277624e-06,-2.070054798e-15) (-0.0001730155867,-5.991069674e-15) +(-1.400249322e-05,-8.517683491e-08) (-5.116927849e-06,4.684231583e-09) (2.138336521e-06,4.599405375e-07) (-5.084421801e-06,-3.325365207e-06) (-1.137644059e-05,2.898889879e-06) (8.535405516e-07,2.174669906e-07) (-1.941555583e-06,-1.356036493e-06) (-4.835683466e-06,1.14408203e-06) (-7.579709164e-09,-2.762279321e-08) (-1.753976932e-07,-2.708152116e-07) (1.596704523e-06,-6.809813049e-07) (-4.264485678e-06,1.255174248e-07) (-4.111833037e-07,9.800694867e-07) (-3.057891808e-09,-1.074053857e-08) (-8.079752589e-08,-1.194200536e-07) (7.764209185e-07,-2.571247395e-07) (-2.00927223e-06,-2.278516912e-07) (-4.360917395e-07,6.207081838e-07) +(0,0) (0,0) (0.3120626857,0) (-0.3145069131,0) (0.002444227455,0) (0.01080935722,0) (-0.01100723887,0) (0.0001978816593,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.001915090305,1.335751503e-13) (0.0006370640959,1.537988172e-13) (-4.324103528e-05,-2.064957961e-14) (-3.803898884e-05,-3.11900116e-15) (0.001489241722,-1.064118355e-13) (-1.644703661e-05,-2.184936467e-14) (-1.448432252e-05,-3.401844515e-15) (0.0005464819933,-1.104512803e-13) (8.944071612e-15,5.37611904e-19) (-2.920048495e-06,7.799358519e-15) (-8.845527695e-05,2.047495515e-14) (2.646077292e-05,-6.820300902e-15) (0.0005070239929,-8.329729939e-14) (2.026694378e-14,1.283138686e-18) (-1.22457607e-06,7.793369903e-15) (-3.701248625e-05,2.141087058e-14) (1.103773763e-05,-7.186674661e-15) (0.0002042932449,-8.338536484e-14) +(1.284349739e-05,-4.772636154e-05) (4.176499206e-06,-1.580615794e-05) (-1.637198807e-06,8.291662982e-06) (-1.365739124e-05,1.476125239e-05) (2.456488526e-05,2.98039344e-05) (-5.950508007e-07,3.103480952e-06) (-4.942325707e-06,5.332056991e-06) (9.785063172e-06,1.163148615e-05) (1.150138939e-07,4.234158657e-08) (4.359031483e-07,9.22545632e-07) (-1.273242959e-06,-5.816351088e-06) (5.466313628e-06,-1.016188654e-05) (-2.867123006e-06,1.31041973e-06) (4.484840704e-08,1.742515531e-08) (1.996404585e-07,4.006392654e-07) (-7.036287942e-07,-2.636380213e-06) (3.2181333e-06,-4.377497957e-06) (-2.131972104e-06,-3.142402084e-07) +(0,0) (0,0) (0.1767194204,0) (0.4323382235,0) (0.1708278373,0) (0.003585169254,0) (0.0314498852,0) (0.001435115663,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.001699344885,0) (0.0005652953336,0) (0.0001271657725,0) (1.32657526e-05,0) (0.001322714732,0) (4.834337921e-05,0) (5.078874012e-06,0) (0.0004853110627,0) (5.670946568e-15,0) (2.774395199e-06,1.972152263e-31) (6.172029553e-05,0) (5.814397199e-05,0) (0.0004655294022,-4.930380658e-32) (1.339042538e-14,0) (1.139058852e-06,0) (2.651781405e-05,0) (2.334202003e-05,0) (0.0001874332715,-2.958228395e-31) +(7.521436699e-06,0) (2.487726124e-06,0) (3.185938962e-06,0) (4.003174709e-06,0) (7.827739219e-06,0) (1.175670888e-06,0) (1.457353976e-06,0) (3.049591687e-06,0) (5.048909171e-08,2.568783543e-24) (1.590612012e-06,1.609124785e-23) (2.682375849e-06,-5.764414894e-24) (3.284718312e-06,6.203854594e-25) (1.43263148e-06,1.550963649e-25) (1.897206644e-08,-6.720842477e-25) (7.004686066e-07,5.11818004e-24) (1.044304049e-06,-3.231174268e-25) (1.672429076e-06,0) (6.003570143e-07,8.271806126e-25) +(0,0) (0,0) (0.09595851645,0) (0.2265907446,0) (-0.3225492611,0) (0.001027662692,0) (0.006060369352,0) (-0.007088032044,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.001337166288,-3.155443621e-30) (0.0004448148634,6.310887242e-30) (-9.565713795e-05,1.029370554e-14) (3.485412968e-05,-1.023797789e-14) (0.0010438788,-5.572765633e-17) (-3.635078475e-05,1.089033375e-14) (1.331622219e-05,-1.083246436e-14) (0.0003830055394,-5.786938279e-17) (-2.848348185e-15,-1.388191666e-19) (4.162623539e-06,2.367315108e-15) (1.327559777e-05,-5.945058718e-15) (-8.528709815e-05,3.98658355e-15) (0.0003765412857,-4.087011207e-16) (-8.229297777e-15,-3.646221352e-19) (1.716943454e-06,2.411501735e-15) (5.343838064e-06,-6.246511632e-15) (-3.496510539e-05,4.239624517e-15) (0.0001515559446,-4.042499974e-16) +(-1.173174173e-05,0) (-3.880290635e-06,0) (-4.095921988e-07,2.741514604e-07) (-2.780116483e-06,-6.455501517e-06) (-7.838840513e-06,6.181350057e-06) (-1.61552776e-07,1.190893908e-07) (-9.323685179e-07,-2.408299986e-06) (-3.148837626e-06,2.289210596e-06) (4.469778006e-08,1.504883457e-07) (1.26676856e-06,1.046269265e-07) (-8.328059922e-07,-3.050222055e-07) (-4.092802746e-06,-1.369814789e-06) (1.671585455e-06,1.419721722e-06) (1.781827059e-08,6.178672245e-08) (5.435245616e-07,4.675798968e-08) (-2.634292994e-07,-9.375785702e-08) (-1.60734289e-06,-1.092677106e-06) (2.465845742e-07,1.077890251e-06) +(0,0) (0,0) (-2.024388139e-12,-0.01754455146) (4.181890806e-12,-0.007443043734) (-2.262288214e-13,0.002330599262) (6.414121631e-13,0.001357612187) (-1.452340376e-12,0.001950473409) (9.467343129e-14,-0.0003210053167) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(6.244874297e-13,-0.03618709099) (2.697252669e-14,-0.0004515616539) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-7.012487199e-05,-9.339175788e-05) (-2.297593838e-05,-3.045536483e-05) (4.528561733e-08,6.868362458e-08) (-1.66514317e-05,2.524731063e-06) (2.59504127e-05,-8.035423414e-05) (-5.072117342e-09,-7.910233257e-09) (-6.560212001e-06,8.794977546e-07) (9.987822964e-06,-3.042165383e-05) (1.244840867e-07,-1.067618071e-07) (1.165404828e-06,-6.776850675e-07) (4.727906968e-08,-8.924566574e-08) (-5.76753882e-06,-9.390541307e-06) (1.28088823e-05,-1.16802478e-05) (5.145444379e-08,-4.350669412e-08) (5.074993285e-07,-3.070367565e-07) (3.733853324e-09,-6.951973956e-09) (-2.953974939e-06,-6.856098294e-06) (6.040097097e-06,-2.242491619e-06) +(0,0) (0,0) (0.003826753254,-0.004457052419) (-0.004052307853,0.004260774197) (-0.001211176039,-0.001502015167) (-0.0003495764342,0.000450627808) (0.0004743750085,-0.0003084485899) (5.500250875e-05,8.626208551e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(3.029422899e-14,-0.001755455705) (3.435070136e-14,-0.0005750836658) (2.341570381e-16,4.484791197e-06) (4.73423153e-14,0.0001130057849) (-2.810519498e-15,-0.0001582737129) (2.615210098e-16,1.799544486e-06) (4.959338497e-14,4.270729501e-05) (-2.941242734e-15,-5.855085701e-05) (-1.410498678e-17,7.476163209e-13) (2.341189723e-14,-1.97199985e-05) (-7.137988075e-15,4.257473413e-05) (-8.046595515e-16,-2.621716418e-05) (6.955599815e-15,0.0001766698447) (-3.336587022e-17,1.727483119e-12) (2.373175019e-14,-8.134740302e-06) (-7.183447176e-15,1.793624094e-05) (-8.826644913e-16,-1.101268195e-05) (7.063208752e-15,7.21683518e-05) +(-0.001445559188,-0.001925184459) (-1.804094492e-05,-2.391386807e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-0.0008500596729,1.395115192e-14) (-0.0003303931097,1.321857004e-14) (6.278742745e-07,6.267371997e-15) (1.508336107e-06,-1.829707832e-14) (-0.0007955499976,-8.763968249e-15) (2.638376718e-07,6.633341259e-15) (5.85025715e-07,-1.938064798e-14) (-0.0003223495585,-7.571202097e-15) (2.037825746e-15,-1.279206619e-19) (-1.243278326e-06,5.349347949e-15) (1.777719935e-06,3.844960139e-15) (9.187079385e-06,3.340764983e-15) (-0.0003238706207,-6.12567423e-15) (5.892564269e-15,-3.456051733e-19) (-5.39163517e-07,5.385811883e-15) (7.135796431e-07,3.765088724e-15) (3.990946276e-06,3.584746342e-15) (-0.0001398980045,-5.217450273e-15) +(2.184072547e-05,1.328566161e-07) (7.98125124e-06,-7.306342835e-09) (-2.353317487e-07,-2.431358997e-07) (8.89348769e-06,-5.889722967e-06) (1.368174814e-05,6.080660701e-06) (-9.52595112e-08,-1.163421003e-07) (3.483016518e-06,-2.340901803e-06) (5.851874148e-06,2.448645606e-06) (-8.904308778e-08,-1.862177347e-09) (-1.575009145e-07,-2.041408412e-07) (-4.182973373e-07,3.929932664e-07) (5.261261828e-06,-1.934800189e-06) (4.914717562e-07,1.551016991e-06) (-3.785085941e-08,-1.286475674e-10) (-7.066595277e-08,-8.72698674e-08) (-1.727701374e-07,1.345678508e-07) (2.079943364e-06,-1.093768337e-06) (9.353131396e-07,1.037909249e-06) +(0,0) (0,0) (0.1694498108,0) (-0.164834733,0) (-0.0046150778,0) (0.003098423631,0) (-0.002121086697,0) (-0.0009773369338,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.001506930239,1.051064969e-13) (0.0005012876667,1.210199267e-13) (3.252694177e-05,1.903334618e-14) (-9.99427541e-05,-3.755176299e-14) (0.001175300936,-8.391686018e-14) (1.236700242e-05,2.013420008e-14) (-3.797622396e-05,-3.981209702e-14) (0.000431281392,-8.71025428e-14) (-4.492290058e-15,-5.108271322e-20) (-4.381157595e-06,1.419353245e-14) (-1.902610263e-05,-4.116223754e-15) (-3.881335348e-05,8.189939113e-15) (0.0004101039919,-6.692950174e-14) (-1.245536538e-14,-2.367029216e-19) (-1.845846564e-06,1.433977071e-14) (-7.458711811e-06,-4.403933919e-15) (-1.653394432e-05,8.760466044e-15) (0.0001651886852,-6.698363681e-14) +(-2.003295385e-05,7.44423399e-05) (-6.514395052e-06,2.465403487e-05) (9.239836074e-07,-9.251150332e-07) (-1.431917237e-05,-3.227521164e-05) (-1.064377077e-06,-4.92444156e-05) (3.961344705e-07,-3.661838786e-07) (-5.649364548e-06,-1.15785494e-05) (-1.372201324e-06,-1.935529002e-05) (2.280251171e-07,-3.053268573e-07) (4.078376831e-07,7.060455894e-07) (1.056705235e-06,1.661036676e-06) (-2.573322934e-06,1.49414439e-05) (-2.046729951e-06,4.370276278e-06) (9.88697933e-08,-1.296933022e-07) (1.816535076e-07,2.975472314e-07) (4.141876113e-07,6.018640503e-07) (-2.328660063e-07,6.309697042e-06) (-1.439856402e-06,3.698707777e-06) +(0,0) (0,0) (0.09595851645,0) (0.2265907446,0) (-0.3225492611,0) (0.001027662692,0) (0.006060369352,0) (-0.007088032044,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.001337166288,3.155443621e-30) (0.0004448148634,-6.310887242e-30) (-9.565713795e-05,-1.029370554e-14) (3.485412968e-05,1.023797789e-14) (0.0010438788,5.572765633e-17) (-3.635078475e-05,-1.089033375e-14) (1.331622219e-05,1.083246436e-14) (0.0003830055394,5.786938279e-17) (-2.848334632e-15,1.388191666e-19) (4.162623539e-06,-2.367315108e-15) (1.327559777e-05,5.945058718e-15) (-8.528709815e-05,-3.98658355e-15) (0.0003765412857,4.087011207e-16) (-8.229297777e-15,3.646221352e-19) (1.716943454e-06,-2.411501735e-15) (5.343838064e-06,6.246511632e-15) (-3.496510539e-05,-4.239624517e-15) (0.0001515559446,4.042499974e-16) +(-1.173174173e-05,0) (-3.880290635e-06,0) (-4.095921988e-07,-2.741514604e-07) (-2.780116483e-06,6.455501517e-06) (-7.838840513e-06,-6.181350057e-06) (-1.61552776e-07,-1.190893908e-07) (-9.323685179e-07,2.408299986e-06) (-3.148837626e-06,-2.289210596e-06) (4.469778006e-08,-1.504883457e-07) (1.26676856e-06,-1.046269265e-07) (-8.328059922e-07,3.050222055e-07) (-4.092802746e-06,1.369814789e-06) (1.671585455e-06,-1.419721722e-06) (1.781827059e-08,-6.178672245e-08) (5.435245616e-07,-4.675798968e-08) (-2.634292994e-07,9.375785702e-08) (-1.60734289e-06,1.092677106e-06) (2.465845742e-07,-1.077890251e-06) +(0,0) (0,0) (0.05210540448,0) (0.1187574051,0) (0.6090226715,0) (0.0002945720367,0) (0.001167828641,0) (0.03500776944,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.001052178223,0) (0.0003500121988,0) (7.195558885e-05,0) (9.157492925e-05,0) (0.0008238230987,0) (2.733320619e-05,0) (3.491359954e-05,0) (0.0003022664318,0) (1.430604767e-15,-9.860761315e-32) (6.245481801e-06,-9.860761315e-32) (2.855486911e-06,-2.465190329e-32) (0.0001251013452,-3.45126646e-31) (0.0003045636627,3.45126646e-31) (5.057437216e-15,2.958228395e-31) (2.588009232e-06,2.958228395e-31) (1.076883833e-06,-1.972152263e-31) (5.23758695e-05,4.930380658e-32) (0.0001225460354,2.958228395e-31) +(1.829886623e-05,0) (6.052376612e-06,0) (7.624904163e-08,0) (1.234084223e-05,0) (1.273119943e-05,0) (3.426263494e-08,0) (4.576252571e-06,0) (4.96973533e-06,0) (4.881179852e-07,-9.564275833e-25) (1.015740713e-06,-3.282873056e-24) (2.932491235e-07,-1.783608196e-24) (5.670935863e-06,3.231174268e-24) (3.357323756e-06,-8.685396432e-24) (2.179567445e-07,9.04728795e-25) (4.248659482e-07,5.014782464e-24) (7.486855157e-08,1.395867284e-24) (2.258687365e-06,-1.240770919e-24) (2.036540451e-06,-3.30872245e-24) +(0,0) (0,0) (-1.099241284e-12,-0.009526678654) (2.191751042e-12,-0.003900938503) (4.271548499e-13,-0.004400530276) (1.838561317e-13,0.0003891496597) (-2.798649041e-13,0.0003758547668) (-4.675917989e-13,0.001585444316) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(4.913914448e-13,-0.02847459545) (2.122391617e-14,-0.0003553210569) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.0001093789551,0.0001456700398) (3.58372723e-05,4.750348753e-05) (8.822529576e-11,-1.272698423e-08) (7.492681859e-06,-2.86053938e-05) (-8.9440741e-05,5.997586631e-05) (-1.042895797e-10,1.600750282e-09) (2.743630426e-06,-1.140352637e-05) (-3.314922633e-05,2.391422379e-05) (-2.08010187e-07,-4.655544245e-07) (8.835555619e-07,-6.163683256e-07) (-4.530454876e-09,3.308465939e-08) (1.110253532e-05,9.295522593e-06) (3.370329281e-06,-2.632189876e-05) (-9.336393785e-08,-2.084335672e-07) (3.732957139e-07,-2.721202136e-07) (-3.177275675e-10,2.088885624e-09) (7.318428284e-06,4.659306735e-06) (-1.545355614e-06,-1.176554191e-05) +(0,0) (0,0) (0.002077924227,-0.002420176214) (-0.002123835932,0.002233094243) (0.002286886861,0.002836035917) (-0.0001002035425,0.0001291691838) (9.141170929e-05,-5.943781255e-05) (-0.0002716572291,-0.0004260481869) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(2.383766949e-14,-0.0013813183) (2.702959254e-14,-0.0004525170243) (1.868924904e-16,-3.373567288e-06) (3.717274731e-14,0.0002969087697) (-2.211377425e-15,-0.0001249086968) (2.087389478e-16,-1.353129535e-06) (3.893998583e-14,0.0001119736044) (-2.314235229e-15,-4.620810094e-05) (-1.121640748e-17,-3.755020248e-13) (1.830001153e-14,-2.958732411e-05) (-5.636239261e-15,9.157523315e-06) (-6.172580938e-16,3.84560218e-05) (5.470901132e-15,0.0001428985799) (-2.653396731e-17,-1.061651775e-12) (1.854964101e-14,-1.226178005e-05) (-5.6726439e-15,3.614489749e-06) (-6.780552581e-16,1.649641224e-05) (5.555562305e-15,5.835432863e-05) +(0.0022547457,0.003002852747) (2.813979759e-05,3.730023068e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-3.073369271e-12,-0.05475639745) (-2.298249668e-13,-0.001163347614) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-7.745507745e-13,-0.0230047579) (-3.345332529e-14,-0.0003354043926) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.0001316075504,-0.0001730712488) (4.720116007e-05,-6.268597155e-05) (4.031033681e-08,-3.956133911e-08) (1.905169148e-05,1.703869909e-05) (-6.747304549e-05,-0.0001071724234) (-5.145549248e-09,4.804649686e-09) (7.921469579e-06,7.275844325e-06) (-2.725047363e-05,-4.449205454e-05) (3.972157313e-08,-8.413345314e-08) (-1.312821309e-08,-2.731487938e-07) (5.080023904e-08,4.112130507e-08) (7.129046668e-06,-1.241194881e-05) (-1.166681958e-05,5.410234195e-06) (1.633681841e-08,-3.614193552e-08) (-6.193488424e-09,-1.219375237e-07) (4.487741215e-09,4.249329443e-09) (4.483008284e-06,-7.834532362e-06) (-6.705958711e-06,4.615929459e-06) +(0,0) (0,0) (-3.574796693e-12,0.03098131397) (-3.042140382e-12,-0.00541448473) (-3.236912117e-15,-3.334652474e-05) (1.933870538e-12,-0.004093227976) (5.083089287e-13,0.0006826519903) (1.305409463e-14,4.426198274e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-2.140675696e-12,0.04078133152) (-9.245860848e-14,0.0005088910162) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.0004728618127,0.0006044432699) (0.0001549299637,0.0001971109734) (1.554831761e-07,1.531547939e-07) (6.611835083e-05,-5.278679084e-05) (-0.0002245097037,0.0003509719554) (-1.831387591e-08,-1.739280133e-08) (2.546549238e-05,-2.101936826e-05) (-8.398421587e-05,0.0001357070295) (1.940406315e-07,3.475987446e-07) (-7.367715354e-08,8.616458177e-07) (1.710746026e-07,-1.448801756e-07) (1.945324779e-05,3.347036445e-05) (-3.631825003e-05,-1.165944999e-05) (8.16747581e-08,1.501052935e-07) (-3.097009875e-08,3.777772687e-07) (1.503470171e-08,-1.41103217e-08) (1.226136967e-05,2.092456893e-05) (-2.027566464e-05,-1.11249986e-05) +(0,0) (0,0) (-2.024388139e-12,0.01754455146) (4.181890806e-12,0.007443043734) (-2.262288214e-13,-0.002330599262) (6.414121631e-13,-0.001357612187) (-1.452340376e-12,-0.001950473409) (9.467343129e-14,0.0003210053167) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(6.244874297e-13,0.03618709099) (2.697252669e-14,0.0004515616539) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-7.012487199e-05,9.339175788e-05) (-2.297593838e-05,3.045536483e-05) (4.528561733e-08,-6.868362458e-08) (-1.66514317e-05,-2.524731063e-06) (2.59504127e-05,8.035423414e-05) (-5.072117342e-09,7.910233257e-09) (-6.560212001e-06,-8.794977546e-07) (9.987822964e-06,3.042165383e-05) (1.244840867e-07,1.067618071e-07) (1.165404828e-06,6.776850675e-07) (4.727906968e-08,8.924566574e-08) (-5.76753882e-06,9.390541307e-06) (1.28088823e-05,1.16802478e-05) (5.145444379e-08,4.350669412e-08) (5.074993285e-07,3.070367565e-07) (3.733853324e-09,6.951973956e-09) (-2.953974939e-06,6.856098294e-06) (6.040097097e-06,2.242491619e-06) +(0,0) (0,0) (-1.099241284e-12,0.009526678654) (2.191751042e-12,0.003900938503) (4.271548499e-13,0.004400530276) (1.838561317e-13,-0.0003891496597) (-2.798649041e-13,-0.0003758547668) (-4.675917989e-13,-0.001585444316) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(4.913914448e-13,0.02847459545) (2.122391617e-14,0.0003553210569) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.0001093789551,-0.0001456700398) (3.58372723e-05,-4.750348753e-05) (8.822529576e-11,1.272698423e-08) (7.492681859e-06,2.86053938e-05) (-8.9440741e-05,-5.997586631e-05) (-1.042895797e-10,-1.600750282e-09) (2.743630426e-06,1.140352637e-05) (-3.314922633e-05,-2.391422379e-05) (-2.08010187e-07,4.655544245e-07) (8.835555619e-07,6.163683256e-07) (-4.530454876e-09,-3.308465939e-08) (1.110253532e-05,-9.295522593e-06) (3.370329281e-06,2.632189876e-05) (-9.336393785e-08,2.084335672e-07) (3.732957139e-07,2.721202136e-07) (-3.177275675e-10,-2.088885624e-09) (7.318428284e-06,-4.659306735e-06) (-1.545355614e-06,1.176554191e-05) +(0.003323277612,0) (0.001069070815,0) (0.00174180792,0) (0.0001281378722,0) (3.179629858e-05,0) (0.0005140931207,0) (0.0001209653547,0) (7.18021662e-05,0) (0,-4.930380658e-32) (-2.710505431e-20,0) (7.588732639e-10,0) (1.442267609e-08,0) (0.0005156165052,0) (0,0) (4.235164736e-21,-1.972152263e-30) (8.97091465e-10,0) (2.352707791e-08,0) (0.0002128748988,0) +(0.7705943424,0) (0.0003607104378,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.001813419252,0) (0.0005850414871,0) (2.124405867e-09,0) (7.085487522e-05,0) (0.0009108922339,0) (7.510449176e-11,0) (3.00612607e-05,0) (0.00033618718,0) (5.326768691e-07,0) (1.142595082e-06,0) (3.802636117e-09,0) (3.697326789e-05,0) (0.0002097508387,0) (2.393198566e-07,0) (5.022739562e-07,0) (5.962976263e-11,0) (3.332401508e-05,0) (6.914475989e-05,0) +(0.0008898263656,-0.0007163683525) (0.0002637034863,-0.0002117814647) (0.0004424923155,0.0003799167587) (-7.335259059e-05,-6.976367787e-05) (-2.049194964e-05,1.652403981e-05) (0.0001706412613,0.0001323756827) (-1.912950618e-05,-2.942000689e-05) (-1.929502185e-05,1.230290924e-05) (5.29395592e-23,0) (0,0) (3.78505961e-08,5.053828036e-08) (-4.457323768e-07,3.33625692e-07) (6.899910963e-06,-1.188698807e-05) (0,0) (-3.176373552e-22,-2.117582368e-22) (4.038949444e-08,4.375042653e-08) (-4.428814282e-07,4.084217944e-07) (3.762547207e-06,-7.200560218e-06) +(0.03738195575,0) (0.0004593806384,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.03738195575,0) (0.0004593806384,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.01180333237,-0.01466133493) (0.0002304575695,-0.000286958373) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-3.757388445e-14,-0.001115973469) (-4.260428398e-14,-0.0004271522746) (-2.922087985e-16,2.943727023e-08) (-5.871141873e-14,-4.890402007e-06) (3.464283974e-15,-0.0001206219073) (-3.263684734e-16,1.306127586e-08) (-6.150440357e-14,-1.876272823e-06) (3.625422672e-15,-4.927825048e-05) (1.759877347e-17,5.348850398e-13) (-2.898493743e-14,-5.889902487e-06) (8.821843004e-15,-5.701133382e-06) (9.816179971e-16,-2.824098531e-06) (-8.691825774e-15,0.000151957234) (4.163347328e-17,1.236962894e-12) (-2.938201667e-14,-2.554513476e-06) (8.878386964e-15,-2.395083132e-06) (1.077392545e-15,-1.256996698e-06) (-8.826665706e-15,6.661703989e-05) +(0.002712967572,-0.003567703253) (3.706284003e-05,-4.922167448e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0,0) (0,0) (0.006757530639,0.007870554039) (0.002947874522,0.003099524556) (-1.732966813e-05,2.149103312e-05) (-0.001053979961,-0.00135865188) (-0.0001660279204,-0.0001079548395) (7.584049129e-06,-1.18942919e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-1.038453564e-13,0.001978324842) (-1.177501124e-13,0.0006480951351) (-8.078765504e-16,1.524993798e-06) (-1.623216596e-13,0.0003240393457) (9.568694665e-15,0.0001782000389) (-9.022983093e-16,6.122280759e-07) (-1.700396895e-13,0.0001217959401) (1.001353833e-14,6.593088745e-05) (4.86286969e-17,-1.179117259e-12) (-8.00777098e-14,-2.0755281e-05) (2.435355293e-14,6.10165565e-05) (2.709086246e-15,1.1931184e-05) (-2.403600052e-14,-0.0001924171699) (1.1503569e-16,-2.614614061e-12) (-8.11708486e-14,-8.745472892e-06) (2.450834643e-14,2.503467556e-05) (2.973262089e-15,5.207565317e-06) (-2.440771839e-14,-7.866003003e-05) +(0.009747607642,0.01246003733) (0.000121652613,0.0001547735789) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0,0) (0,0) (0.003826753254,0.004457052419) (-0.004052307853,-0.004260774197) (-0.001211176039,0.001502015167) (-0.0003495764342,-0.000450627808) (0.0004743750085,0.0003084485899) (5.500250875e-05,-8.626208551e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(3.029422899e-14,0.001755455705) (3.435070136e-14,0.0005750836658) (2.341570381e-16,-4.484791197e-06) (4.73423153e-14,-0.0001130057849) (-2.810519498e-15,0.0001582737129) (2.615210098e-16,-1.799544486e-06) (4.959338497e-14,-4.270729501e-05) (-2.941242734e-15,5.855085701e-05) (-1.410498678e-17,-7.476163125e-13) (2.341189723e-14,1.97199985e-05) (-7.137988075e-15,-4.257473413e-05) (-8.046595515e-16,2.621716418e-05) (6.955599815e-15,-0.0001766698447) (-3.336587022e-17,-1.727483116e-12) (2.373175019e-14,8.134740302e-06) (-7.183447176e-15,-1.793624094e-05) (-8.826644913e-16,1.101268195e-05) (7.063208752e-15,-7.21683518e-05) +(-0.001445559188,0.001925184459) (-1.804094492e-05,2.391386807e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0,0) (0,0) (0.002077924227,0.002420176214) (-0.002123835932,-0.002233094243) (0.002286886861,-0.002836035917) (-0.0001002035425,-0.0001291691838) (9.141170929e-05,5.943781255e-05) (-0.0002716572291,0.0004260481869) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(2.383766949e-14,0.0013813183) (2.702959254e-14,0.0004525170243) (1.868924904e-16,3.373567288e-06) (3.717274731e-14,-0.0002969087697) (-2.211377425e-15,0.0001249086968) (2.087389478e-16,1.353129535e-06) (3.893998583e-14,-0.0001119736044) (-2.314235229e-15,4.620810094e-05) (-1.121640748e-17,3.755020044e-13) (1.830001153e-14,2.958732411e-05) (-5.636239261e-15,-9.157523315e-06) (-6.172580938e-16,-3.84560218e-05) (5.470901132e-15,-0.0001428985799) (-2.653396731e-17,1.061651774e-12) (1.854964101e-14,1.226178005e-05) (-5.6726439e-15,-3.614489749e-06) (-6.780552581e-16,-1.649641224e-05) (5.555562305e-15,-5.835432863e-05) +(0.0022547457,-0.003002852747) (2.813979759e-05,-3.730023068e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.0008898263656,0.0007163683525) (0.0002637034863,0.0002117814647) (0.0004424923155,-0.0003799167587) (-7.335259059e-05,6.976367787e-05) (-2.049194964e-05,-1.652403981e-05) (0.0001706412613,-0.0001323756827) (-1.912950618e-05,2.942000689e-05) (-1.929502185e-05,-1.230290924e-05) (5.29395592e-23,-1.058791184e-22) (-8.470329473e-22,0) (3.78505961e-08,-5.053828036e-08) (-4.457323768e-07,-3.33625692e-07) (6.899910963e-06,1.188698807e-05) (0,0) (1.058791184e-22,1.588186776e-22) (4.038949444e-08,-4.375042653e-08) (-4.428814282e-07,-4.084217944e-07) (3.762547207e-06,7.200560218e-06) +(0.03738195575,0) (0.0004593806384,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.03738195575,0) (0.0004593806384,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.0003926769682,0) (0.0001070003183,0) (0.0001952776704,0) (7.997302531e-05,0) (2.179385408e-05,0) (9.072628978e-05,0) (1.018039269e-05,0) (7.293086984e-06,0) (6.6174449e-24,-7.754818243e-25) (1.058791184e-22,-1.240770919e-24) (5.253558923e-06,5.169878828e-26) (2.149278346e-05,-1.033975766e-25) (3.663755034e-07,0) (0,1.178732373e-23) (2.64697796e-23,2.067951531e-25) (3.952117728e-06,3.877409121e-26) (1.542700385e-05,0) (3.100639357e-07,-4.135903063e-25) +(0.001813419252,0) (0.0005850414871,0) (1.581663972e-07,0) (0.0009626523137,0) (1.893875344e-05,0) (6.698663622e-08,0) (0.0003591176002,0) (7.063928932e-06,0) (9.856002163e-11,0) (0.000140166888,0) (2.936810284e-05,0) (1.182134062e-05,0) (6.704675123e-05,0) (2.228606217e-10,0) (5.80953299e-05,0) (1.213179708e-05,0) (5.195744135e-06,0) (2.778733444e-05,0) +(0.7705943424,0) (0.0003607104378,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.9022006019,0) (0.001265938283,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.0006867671573,0) (0.0003118737213,0) (5.478741969e-09,0) (2.484389374e-08,0) (0.0007682472119,0) (2.546730763e-09,0) (9.802916105e-09,0) (0.0003437670443,0) (2.902829344e-15,3.944304526e-31) (2.474974783e-07,0) (1.106742305e-06,0) (6.746724226e-07,5.916456789e-31) (0.000344401489,0) (6.865622166e-15,0) (1.123246758e-07,0) (4.728420013e-07,0) (3.041028689e-07,-3.944304526e-31) (0.0001597069346,0) +(2.606909815e-05,0) (1.052486136e-05,0) (1.50160704e-06,0) (9.220031973e-06,0) (1.760750571e-05,0) (6.598984231e-07,0) (3.84839452e-06,0) (8.0970703e-06,0) (1.625045466e-08,-1.292469707e-25) (6.544979468e-08,1.033975766e-25) (1.123332837e-06,5.169878828e-26) (5.541294868e-06,-1.80945759e-25) (7.884846338e-07,-4.135903063e-24) (6.573341473e-09,-7.754818243e-26) (2.967925929e-08,1.783608196e-24) (6.405630384e-07,-1.550963649e-25) (2.445001313e-06,2.067951531e-25) (9.585207486e-07,4.135903063e-25) +(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-0.001217455938,-1.048968745e-13) (-0.0004731891963,-1.331680902e-13) (2.838254859e-07,-2.667032522e-15) (-1.646163048e-06,-2.058752428e-14) (-0.001134965332,9.353993365e-14) (1.193742549e-07,-2.806929651e-15) (-6.363442288e-07,-2.174782716e-14) (-0.0004599365052,1.036925755e-13) (-6.39905609e-15,-4.744497745e-19) (8.721502128e-07,9.270421917e-16) (-1.184494378e-05,2.305635264e-14) (-2.850339931e-06,1.637935329e-15) (-0.0004361013826,7.942071128e-14) (-1.451212062e-14,-1.126939084e-18) (3.845477493e-07,8.539000264e-16) (-4.942394664e-06,2.315955851e-14) (-1.259856574e-06,1.799159549e-15) (-0.0001885786623,8.350119887e-14) +(-2.336997728e-05,8.899656399e-05) (-8.620275597e-06,3.25033392e-05) (9.817825478e-08,5.801548646e-06) (5.084310361e-06,-3.009317751e-05) (-2.466390723e-05,-5.241278162e-05) (1.420505313e-07,2.363204515e-06) (1.623034791e-06,-1.170234502e-05) (-1.115234346e-05,-2.211479671e-05) (-4.043179797e-08,5.656802291e-08) (-2.05138522e-07,-2.751341749e-08) (7.187037426e-07,-3.7854683e-06) (-7.485119781e-06,1.298409725e-05) (1.719364356e-06,1.585304449e-06) (-1.709340046e-08,2.258118837e-08) (-9.133145593e-08,-1.217697277e-08) (1.259848231e-07,-2.133345284e-06) (-3.269905813e-06,5.697606153e-06) (1.2237451e-06,2.432502756e-06) +(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-0.001080302854,-1.772989558e-14) (-0.0004198818397,-1.679889e-14) (-8.346906342e-07,8.241968752e-15) (5.740844431e-07,7.132640533e-15) (-0.001008053523,1.105114258e-14) (-3.508811352e-07,8.716645911e-15) (2.231317455e-07,7.573389404e-15) (-0.000408453118,9.53184962e-15) (-4.05730137e-15,-5.694584659e-20) (-8.286469788e-07,-3.094091175e-15) (8.264893354e-06,-1.417463855e-14) (-6.263236738e-06,1.984783545e-15) (-0.0004004110629,7.138747102e-15) (-9.588196122e-15,-1.375244239e-19) (-3.576931874e-07,-3.070677107e-15) (3.541007804e-06,-1.454441084e-14) (-2.664277624e-06,2.070054798e-15) (-0.0001730155867,5.991069674e-15) +(-1.400249322e-05,8.517683491e-08) (-5.116927849e-06,-4.684231583e-09) (2.138336521e-06,-4.599405375e-07) (-5.084421801e-06,3.325365207e-06) (-1.137644059e-05,-2.898889879e-06) (8.535405516e-07,-2.174669906e-07) (-1.941555583e-06,1.356036493e-06) (-4.835683466e-06,-1.14408203e-06) (-7.579709164e-09,2.762279321e-08) (-1.753976932e-07,2.708152116e-07) (1.596704523e-06,6.809813049e-07) (-4.264485678e-06,-1.255174248e-07) (-4.111833037e-07,-9.800694867e-07) (-3.057891808e-09,1.074053857e-08) (-8.079752589e-08,1.194200536e-07) (7.764209185e-07,2.571247395e-07) (-2.00927223e-06,2.278516912e-07) (-4.360917395e-07,-6.207081838e-07) +(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-0.0008500596729,-1.395115192e-14) (-0.0003303931097,-1.321857004e-14) (6.278742745e-07,-6.267371997e-15) (1.508336107e-06,1.829707832e-14) (-0.0007955499976,8.763968249e-15) (2.638376718e-07,-6.633341259e-15) (5.85025715e-07,1.938064798e-14) (-0.0003223495585,7.571202097e-15) (2.037832522e-15,1.279206619e-19) (-1.243278326e-06,-5.349347949e-15) (1.777719935e-06,-3.844960139e-15) (9.187079385e-06,-3.340764983e-15) (-0.0003238706207,6.12567423e-15) (5.892571045e-15,3.456051733e-19) (-5.39163517e-07,-5.385811883e-15) (7.135796431e-07,-3.765088724e-15) (3.990946276e-06,-3.584746342e-15) (-0.0001398980045,5.217450273e-15) +(2.184072547e-05,-1.328566161e-07) (7.98125124e-06,7.306342835e-09) (-2.353317487e-07,2.431358997e-07) (8.89348769e-06,5.889722967e-06) (1.368174814e-05,-6.080660701e-06) (-9.52595112e-08,1.163421003e-07) (3.483016518e-06,2.340901803e-06) (5.851874148e-06,-2.448645606e-06) (-8.904308778e-08,1.862177347e-09) (-1.575009145e-07,2.041408412e-07) (-4.182973373e-07,-3.929932664e-07) (5.261261828e-06,1.934800189e-06) (4.914717562e-07,-1.551016991e-06) (-3.785085941e-08,1.286475674e-10) (-7.066595277e-08,8.72698674e-08) (-1.727701374e-07,-1.345678508e-07) (2.079943364e-06,1.093768337e-06) (9.353131396e-07,-1.037909249e-06) +(-3.073369271e-12,0.05475639745) (-2.298249668e-13,0.001163347614) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-7.745507745e-13,0.0230047579) (-3.345332529e-14,0.0003354043926) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.0001315601101,0.0001730513556) (4.714272022e-05,6.266113996e-05) (5.795093163e-08,4.411126475e-08) (1.906917157e-05,-1.709188873e-05) (-6.747387277e-05,0.0001071940222) (1.453425306e-08,-2.475386522e-10) (7.939327188e-06,-7.332714519e-06) (-2.725106785e-05,4.451495134e-05) (3.68732518e-08,8.215921054e-08) (-1.118974817e-08,2.769128241e-07) (4.59324699e-08,-2.844750319e-08) (7.162075505e-06,1.243111672e-05) (-1.167000609e-05,-5.409948601e-06) (1.362845101e-08,3.419748453e-08) (-4.294076558e-09,1.256505281e-07) (-2.120868259e-10,1.155313223e-08) (4.515484695e-06,7.853450267e-06) (-6.706727958e-06,-4.615990553e-06) +(-0.01859875469,0.00289131822) (-0.0003637420256,5.610292319e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-0.0009663293566,-0.0005577580731) (-0.0003697518979,-0.0002132767988) (2.479801027e-08,1.3514143e-08) (-4.23588132e-06,-2.446359757e-06) (-0.0001046382544,-6.061686563e-05) (1.0527476e-08,5.172846965e-09) (-1.625594762e-06,-9.393400046e-07) (-4.287160338e-05,-2.497754476e-05) (-3.520336691e-15,-5.410133841e-13) (-5.105327903e-06,-2.952784881e-06) (-4.942304714e-06,-2.859189473e-06) (-2.434700457e-06,-1.392926361e-06) (0.0001315692818,7.592744685e-05) (-7.129223054e-15,-1.249384147e-12) (-2.216852174e-06,-1.285187174e-06) (-2.079248817e-06,-1.206281444e-06) (-1.077501277e-06,-6.092902574e-07) (5.766194007e-05,3.325636996e-05) +(-0.004446205436,0.0005656472102) (-6.115864053e-05,7.486523763e-06) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-0.001217455938,1.048968745e-13) (-0.0004731891963,1.331680902e-13) (2.838254859e-07,2.667032522e-15) (-1.646163048e-06,2.058752428e-14) (-0.001134965332,-9.353993365e-14) (1.193742549e-07,2.806929651e-15) (-6.363442288e-07,2.174782716e-14) (-0.0004599365052,-1.036925755e-13) (-6.399069642e-15,4.744497745e-19) (8.721502128e-07,-9.270421917e-16) (-1.184494378e-05,-2.305635264e-14) (-2.850339931e-06,-1.637935329e-15) (-0.0004361013826,-7.942071128e-14) (-1.451212062e-14,1.126939084e-18) (3.845477493e-07,-8.539000264e-16) (-4.942394664e-06,-2.315955851e-14) (-1.259856574e-06,-1.799159549e-15) (-0.0001885786623,-8.350119887e-14) +(-2.336997728e-05,-8.899656399e-05) (-8.620275597e-06,-3.25033392e-05) (9.817825478e-08,-5.801548646e-06) (5.084310361e-06,3.009317751e-05) (-2.466390723e-05,5.241278162e-05) (1.420505313e-07,-2.363204515e-06) (1.623034791e-06,1.170234502e-05) (-1.115234346e-05,2.211479671e-05) (-4.043179797e-08,-5.656802291e-08) (-2.05138522e-07,2.751341749e-08) (7.187037426e-07,3.7854683e-06) (-7.485119781e-06,-1.298409725e-05) (1.719364356e-06,-1.585304449e-06) (-1.709340046e-08,-2.258118837e-08) (-9.133145593e-08,1.217697277e-08) (1.259848231e-07,2.133345284e-06) (-3.269905813e-06,-5.697606153e-06) (1.2237451e-06,-2.432502756e-06) +(0,0) (0,0) (0.5510606563,0) (0.2287898526,0) (3.497233206e-05,0) (0.03259042882,0) (0.003852456277,0) (2.728501408e-05,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.002158226331,0) (0.0007179444763,0) (1.470354086e-05,0) (0.0001090752041,0) (0.001676734109,0) (5.595492446e-06,0) (4.130750209e-05,0) (0.0006153632011,0) (1.410625631e-14,3.155443621e-30) (3.07334846e-06,3.944304526e-31) (0.0001267708775,0) (1.204204804e-05,1.57772181e-30) (0.0005522171709,0) (3.067480352e-14,0) (1.316513672e-06,0) (5.166052285e-05,0) (5.219413394e-06,0) (0.0002226698044,0) +(0.0003247731928,0) (0.0001074385849,0) (2.242104943e-05,0) (0.000101024546,0) (0.0001905669123,0) (8.493601038e-06,0) (3.626944176e-05,0) (7.576061162e-05,0) (2.975099223e-07,-2.067951531e-24) (6.545291938e-07,4.301339185e-23) (1.321630137e-05,8.271806126e-25) (4.053453297e-05,2.067951531e-25) (6.936601868e-06,-1.98523347e-23) (1.220223247e-07,-4.135903063e-25) (2.860486991e-07,-1.240770919e-24) (7.129718703e-06,1.447566072e-24) (1.765029723e-05,3.30872245e-24) (7.735483806e-06,-1.32348898e-23) +(0,0) (0,0) (0.3120626857,0) (-0.3145069131,0) (0.002444227455,0) (0.01080935722,0) (-0.01100723887,0) (0.0001978816593,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.001915090305,-1.335751503e-13) (0.0006370640959,-1.537988172e-13) (-4.324103528e-05,2.064957961e-14) (-3.803898884e-05,3.11900116e-15) (0.001489241722,1.064118355e-13) (-1.644703661e-05,2.184936467e-14) (-1.448432252e-05,3.401844515e-15) (0.0005464819933,1.104512803e-13) (8.944071612e-15,-5.37611904e-19) (-2.920048495e-06,-7.799358519e-15) (-8.845527695e-05,-2.047495515e-14) (2.646077292e-05,6.820300902e-15) (0.0005070239929,8.329729939e-14) (2.026694378e-14,-1.283138686e-18) (-1.22457607e-06,-7.793369903e-15) (-3.701248625e-05,-2.141087058e-14) (1.103773763e-05,7.186674661e-15) (0.0002042932449,8.338536484e-14) +(1.284349739e-05,4.772636154e-05) (4.176499206e-06,1.580615794e-05) (-1.637198807e-06,-8.291662982e-06) (-1.365739124e-05,-1.476125239e-05) (2.456488526e-05,-2.98039344e-05) (-5.950508007e-07,-3.103480952e-06) (-4.942325707e-06,-5.332056991e-06) (9.785063172e-06,-1.163148615e-05) (1.150138939e-07,-4.234158657e-08) (4.359031483e-07,-9.22545632e-07) (-1.273242959e-06,5.816351088e-06) (5.466313628e-06,1.016188654e-05) (-2.867123006e-06,-1.31041973e-06) (4.484840704e-08,-1.742515531e-08) (1.996404585e-07,-4.006392654e-07) (-7.036287942e-07,2.636380213e-06) (3.2181333e-06,4.377497957e-06) (-2.131972104e-06,3.142402084e-07) +(0,0) (0,0) (0.1694498108,0) (-0.164834733,0) (-0.0046150778,0) (0.003098423631,0) (-0.002121086697,0) (-0.0009773369338,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.001506930239,-1.051064969e-13) (0.0005012876667,-1.210199267e-13) (3.252694177e-05,-1.903334618e-14) (-9.99427541e-05,3.755176299e-14) (0.001175300936,8.391686018e-14) (1.236700242e-05,-2.013420008e-14) (-3.797622396e-05,3.981209702e-14) (0.000431281392,8.71025428e-14) (-4.492296834e-15,5.108271321e-20) (-4.381157595e-06,-1.419353245e-14) (-1.902610263e-05,4.116223754e-15) (-3.881335348e-05,-8.189939113e-15) (0.0004101039919,6.692950174e-14) (-1.245537216e-14,2.367029216e-19) (-1.845846564e-06,-1.433977071e-14) (-7.458711811e-06,4.403933919e-15) (-1.653394432e-05,-8.760466044e-15) (0.0001651886852,6.698363681e-14) +(-2.003295385e-05,-7.44423399e-05) (-6.514395052e-06,-2.465403487e-05) (9.239836074e-07,9.251150332e-07) (-1.431917237e-05,3.227521164e-05) (-1.064377077e-06,4.92444156e-05) (3.961344705e-07,3.661838786e-07) (-5.649364548e-06,1.15785494e-05) (-1.372201324e-06,1.935529002e-05) (2.280251171e-07,3.053268573e-07) (4.078376831e-07,-7.060455894e-07) (1.056705235e-06,-1.661036676e-06) (-2.573322934e-06,-1.49414439e-05) (-2.046729951e-06,-4.370276278e-06) (9.88697933e-08,1.296933022e-07) (1.816535076e-07,-2.975472314e-07) (4.141876113e-07,-6.018640503e-07) (-2.328660063e-07,-6.309697042e-06) (-1.439856402e-06,-3.698707777e-06) +(0,0) (0,0) (-3.574796693e-12,-0.03098131397) (-3.042140382e-12,0.00541448473) (-3.236912117e-15,3.334652474e-05) (1.933870538e-12,0.004093227976) (5.083089287e-13,-0.0006826519903) (1.305409463e-14,-4.426198274e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-2.140675696e-12,-0.04078133152) (-9.245860848e-14,-0.0005088910162) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.0004728364285,-0.0006042634813) (0.0001549011422,-0.0001969101588) (1.742154656e-07,-2.210128037e-07) (6.630159526e-05,5.281451296e-05) (-0.0002245728385,-0.0003510046726) (2.242184337e-09,-5.210283013e-08) (2.564595677e-05,2.104968573e-05) (-8.40459334e-05,-0.0001357401889) (1.942550103e-07,-3.327717081e-07) (-8.133516325e-08,-8.726284924e-07) (1.252513546e-07,1.365851479e-07) (1.945354614e-05,-3.357364785e-05) (-3.63246243e-05,1.166647945e-05) (8.203792112e-08,-1.357449512e-07) (-3.833851731e-08,-3.884239297e-07) (-3.851851949e-08,1.565911284e-09) (1.226202078e-05,-2.102554947e-05) (-2.027680178e-05,1.112687277e-05) +(0,0) (0,0) (0.00343733442,0.009787470219) (0.001210329744,0.004102696501) (2.72766147e-05,-4.262416284e-06) (-0.0006496370623,-0.001592099361) (-1.047767332e-05,-0.0001977618165) (-1.409278351e-05,6.208332571e-07) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.001713045537,0.0009887570642) (0.0005610046358,0.0003235933972) (1.284657558e-06,7.000983605e-07) (0.0002806706319,0.0001620964487) (0.0001545866867,8.955195666e-05) (4.934599324e-07,2.424695971e-07) (0.0001055234845,6.09760962e-05) (5.735923717e-05,3.341822563e-05) (7.848773308e-15,1.192626205e-12) (-1.799053813e-05,-1.040524524e-05) (5.289516912e-05,3.060056395e-05) (1.028606432e-05,5.884802014e-06) (-0.0001666007481,-9.614379037e-05) (1.527438251e-14,2.640868147e-12) (-7.589476744e-06,-4.399886574e-06) (2.17334082e-05,1.260869171e-05) (4.463940347e-06,2.524206171e-06) (-6.808603241e-05,-3.926843742e-05) +(0.005916905037,0.01467169451) (7.321154469e-05,0.0001827410428) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-0.001080302854,1.772989558e-14) (-0.0004198818397,1.679889e-14) (-8.346906342e-07,-8.241968752e-15) (5.740844431e-07,-7.132640533e-15) (-0.001008053523,-1.105114258e-14) (-3.508811352e-07,-8.716645911e-15) (2.231317455e-07,-7.573389404e-15) (-0.000408453118,-9.53184962e-15) (-4.057328475e-15,5.694584659e-20) (-8.286469788e-07,3.094091175e-15) (8.264893354e-06,1.417463855e-14) (-6.263236738e-06,-1.984783545e-15) (-0.0004004110629,-7.138747102e-15) (-9.588196122e-15,1.375244239e-19) (-3.576931874e-07,3.070677107e-15) (3.541007804e-06,1.454441084e-14) (-2.664277624e-06,-2.070054798e-15) (-0.0001730155867,-5.991069674e-15) +(-1.400249322e-05,-8.517683491e-08) (-5.116927849e-06,4.684231583e-09) (2.138336521e-06,4.599405375e-07) (-5.084421801e-06,-3.325365207e-06) (-1.137644059e-05,2.898889879e-06) (8.535405516e-07,2.174669906e-07) (-1.941555583e-06,-1.356036493e-06) (-4.835683466e-06,1.14408203e-06) (-7.579709164e-09,-2.762279321e-08) (-1.753976932e-07,-2.708152116e-07) (1.596704523e-06,-6.809813049e-07) (-4.264485678e-06,1.255174248e-07) (-4.111833037e-07,9.800694867e-07) (-3.057891808e-09,-1.074053857e-08) (-8.079752589e-08,-1.194200536e-07) (7.764209185e-07,-2.571247395e-07) (-2.00927223e-06,-2.278516912e-07) (-4.360917395e-07,6.207081838e-07) +(0,0) (0,0) (0.3120626857,0) (-0.3145069131,0) (0.002444227455,0) (0.01080935722,0) (-0.01100723887,0) (0.0001978816593,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.001915090305,1.335751503e-13) (0.0006370640959,1.537988172e-13) (-4.324103528e-05,-2.064957961e-14) (-3.803898884e-05,-3.11900116e-15) (0.001489241722,-1.064118355e-13) (-1.644703661e-05,-2.184936467e-14) (-1.448432252e-05,-3.401844515e-15) (0.0005464819933,-1.104512803e-13) (8.944071612e-15,5.37611904e-19) (-2.920048495e-06,7.799358519e-15) (-8.845527695e-05,2.047495515e-14) (2.646077292e-05,-6.820300902e-15) (0.0005070239929,-8.329729939e-14) (2.026694378e-14,1.283138686e-18) (-1.22457607e-06,7.793369903e-15) (-3.701248625e-05,2.141087058e-14) (1.103773763e-05,-7.186674661e-15) (0.0002042932449,-8.338536484e-14) +(1.284349739e-05,-4.772636154e-05) (4.176499206e-06,-1.580615794e-05) (-1.637198807e-06,8.291662982e-06) (-1.365739124e-05,1.476125239e-05) (2.456488526e-05,2.98039344e-05) (-5.950508007e-07,3.103480952e-06) (-4.942325707e-06,5.332056991e-06) (9.785063172e-06,1.163148615e-05) (1.150138939e-07,4.234158657e-08) (4.359031483e-07,9.22545632e-07) (-1.273242959e-06,-5.816351088e-06) (5.466313628e-06,-1.016188654e-05) (-2.867123006e-06,1.31041973e-06) (4.484840704e-08,1.742515531e-08) (1.996404585e-07,4.006392654e-07) (-7.036287942e-07,-2.636380213e-06) (3.2181333e-06,-4.377497957e-06) (-2.131972104e-06,-3.142402084e-07) +(0,0) (0,0) (0.1767194204,0) (0.4323382235,0) (0.1708278373,0) (0.003585169254,0) (0.0314498852,0) (0.001435115663,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.001699344885,0) (0.0005652953336,0) (0.0001271657725,0) (1.32657526e-05,0) (0.001322714732,0) (4.834337921e-05,0) (5.078874012e-06,0) (0.0004853110627,0) (5.670946568e-15,0) (2.774395199e-06,1.972152263e-31) (6.172029553e-05,0) (5.814397199e-05,0) (0.0004655294022,-4.930380658e-32) (1.339042538e-14,0) (1.139058852e-06,0) (2.651781405e-05,0) (2.334202003e-05,0) (0.0001874332715,-2.958228395e-31) +(7.521436699e-06,0) (2.487726124e-06,0) (3.185938962e-06,0) (4.003174709e-06,0) (7.827739219e-06,0) (1.175670888e-06,0) (1.457353976e-06,0) (3.049591687e-06,0) (5.048909171e-08,2.568783543e-24) (1.590612012e-06,1.609124785e-23) (2.682375849e-06,-5.764414894e-24) (3.284718312e-06,6.203854594e-25) (1.43263148e-06,1.550963649e-25) (1.897206644e-08,-6.720842477e-25) (7.004686066e-07,5.11818004e-24) (1.044304049e-06,-3.231174268e-25) (1.672429076e-06,0) (6.003570143e-07,8.271806126e-25) +(0,0) (0,0) (0.09595851645,0) (0.2265907446,0) (-0.3225492611,0) (0.001027662692,0) (0.006060369352,0) (-0.007088032044,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.001337166288,-3.155443621e-30) (0.0004448148634,6.310887242e-30) (-9.565713795e-05,1.029370554e-14) (3.485412968e-05,-1.023797789e-14) (0.0010438788,-5.572765633e-17) (-3.635078475e-05,1.089033375e-14) (1.331622219e-05,-1.083246436e-14) (0.0003830055394,-5.786938279e-17) (-2.848348185e-15,-1.388191666e-19) (4.162623539e-06,2.367315108e-15) (1.327559777e-05,-5.945058718e-15) (-8.528709815e-05,3.98658355e-15) (0.0003765412857,-4.087011207e-16) (-8.229297777e-15,-3.646221352e-19) (1.716943454e-06,2.411501735e-15) (5.343838064e-06,-6.246511632e-15) (-3.496510539e-05,4.239624517e-15) (0.0001515559446,-4.042499974e-16) +(-1.173174173e-05,0) (-3.880290635e-06,0) (-4.095921988e-07,2.741514604e-07) (-2.780116483e-06,-6.455501517e-06) (-7.838840513e-06,6.181350057e-06) (-1.61552776e-07,1.190893908e-07) (-9.323685179e-07,-2.408299986e-06) (-3.148837626e-06,2.289210596e-06) (4.469778006e-08,1.504883457e-07) (1.26676856e-06,1.046269265e-07) (-8.328059922e-07,-3.050222055e-07) (-4.092802746e-06,-1.369814789e-06) (1.671585455e-06,1.419721722e-06) (1.781827059e-08,6.178672245e-08) (5.435245616e-07,4.675798968e-08) (-2.634292994e-07,-9.375785702e-08) (-1.60734289e-06,-1.092677106e-06) (2.465845742e-07,1.077890251e-06) +(0,0) (0,0) (-2.024388139e-12,-0.01754455146) (4.181890806e-12,-0.007443043734) (-2.262288214e-13,0.002330599262) (6.414121631e-13,0.001357612187) (-1.452340376e-12,0.001950473409) (9.467343129e-14,-0.0003210053167) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(6.244874297e-13,-0.03618709099) (2.697252669e-14,-0.0004515616539) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-7.009945539e-05,-9.338091768e-05) (-2.294751532e-05,-3.044331833e-05) (6.90127523e-08,8.056615866e-08) (-1.668025493e-05,2.547758194e-06) (2.594739121e-05,-8.036832558e-05) (1.88807935e-08,4.469530297e-09) (-6.589260373e-06,9.018969849e-07) (9.98494262e-06,-3.043541208e-05) (1.224567805e-07,-1.00999336e-07) (1.175784606e-06,-6.957931152e-07) (4.804307578e-08,-6.828021738e-08) (-5.793391426e-06,-9.404544457e-06) (1.281018903e-05,-1.168435749e-05) (4.953722157e-08,-3.817679525e-08) (5.172684202e-07,-3.247875174e-07) (4.380408014e-09,1.408858421e-08) (-2.978900681e-06,-6.8746713e-06) (6.040486638e-06,-2.242961964e-06) +(0,0) (0,0) (0.001946543994,0.005542591742) (-0.001663784768,-0.005639788643) (0.001906371311,-0.0002979016351) (-0.0002154669122,-0.0005280559766) (2.993681038e-05,0.0005650451033) (-0.0001022064118,4.50252709e-06) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.001520061568,0.0008773681615) (0.0004978043885,0.0002871388275) (-3.777996285e-06,-2.058890319e-06) (-9.788133906e-05,-5.652966735e-05) (0.0001373008054,7.953825799e-05) (-1.450444915e-06,-7.126998007e-07) (-3.700141877e-05,-2.138104216e-05) (5.093868177e-05,2.967752787e-05) (4.931041266e-15,7.561819314e-13) (1.709316225e-05,9.88622701e-06) (-3.690797862e-05,-2.135176006e-05) (2.260223605e-05,1.293105701e-05) (-0.0001529662259,-8.827543048e-05) (9.981358747e-15,1.744829897e-12) (7.059472179e-06,4.092624228e-06) (-1.557102848e-05,-9.033571523e-06) (9.440103444e-06,5.338056846e-06) (-6.246700819e-05,-3.602768017e-05) +(0.002390038242,-0.0002892987505) (2.973048971e-05,-3.666982572e-06) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-0.0008500596729,1.395115192e-14) (-0.0003303931097,1.321857004e-14) (6.278742745e-07,6.267371997e-15) (1.508336107e-06,-1.829707832e-14) (-0.0007955499976,-8.763968249e-15) (2.638376718e-07,6.633341259e-15) (5.85025715e-07,-1.938064798e-14) (-0.0003223495585,-7.571202097e-15) (2.037825746e-15,-1.279206619e-19) (-1.243278326e-06,5.349347949e-15) (1.777719935e-06,3.844960139e-15) (9.187079385e-06,3.340764983e-15) (-0.0003238706207,-6.12567423e-15) (5.892564269e-15,-3.456051733e-19) (-5.39163517e-07,5.385811883e-15) (7.135796431e-07,3.765088724e-15) (3.990946276e-06,3.584746342e-15) (-0.0001398980045,-5.217450273e-15) +(2.184072547e-05,1.328566161e-07) (7.98125124e-06,-7.306342835e-09) (-2.353317487e-07,-2.431358997e-07) (8.89348769e-06,-5.889722967e-06) (1.368174814e-05,6.080660701e-06) (-9.52595112e-08,-1.163421003e-07) (3.483016518e-06,-2.340901803e-06) (5.851874148e-06,2.448645606e-06) (-8.904308778e-08,-1.862177347e-09) (-1.575009145e-07,-2.041408412e-07) (-4.182973373e-07,3.929932664e-07) (5.261261828e-06,-1.934800189e-06) (4.914717562e-07,1.551016991e-06) (-3.785085941e-08,-1.286475674e-10) (-7.066595277e-08,-8.72698674e-08) (-1.727701374e-07,1.345678508e-07) (2.079943364e-06,-1.093768337e-06) (9.353131396e-07,1.037909249e-06) +(0,0) (0,0) (0.1694498108,0) (-0.164834733,0) (-0.0046150778,0) (0.003098423631,0) (-0.002121086697,0) (-0.0009773369338,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.001506930239,1.051064969e-13) (0.0005012876667,1.210199267e-13) (3.252694177e-05,1.903334618e-14) (-9.99427541e-05,-3.755176299e-14) (0.001175300936,-8.391686018e-14) (1.236700242e-05,2.013420008e-14) (-3.797622396e-05,-3.981209702e-14) (0.000431281392,-8.71025428e-14) (-4.492290058e-15,-5.108271322e-20) (-4.381157595e-06,1.419353245e-14) (-1.902610263e-05,-4.116223754e-15) (-3.881335348e-05,8.189939113e-15) (0.0004101039919,-6.692950174e-14) (-1.245536538e-14,-2.367029216e-19) (-1.845846564e-06,1.433977071e-14) (-7.458711811e-06,-4.403933919e-15) (-1.653394432e-05,8.760466044e-15) (0.0001651886852,-6.698363681e-14) +(-2.003295385e-05,7.44423399e-05) (-6.514395052e-06,2.465403487e-05) (9.239836074e-07,-9.251150332e-07) (-1.431917237e-05,-3.227521164e-05) (-1.064377077e-06,-4.92444156e-05) (3.961344705e-07,-3.661838786e-07) (-5.649364548e-06,-1.15785494e-05) (-1.372201324e-06,-1.935529002e-05) (2.280251171e-07,-3.053268573e-07) (4.078376831e-07,7.060455894e-07) (1.056705235e-06,1.661036676e-06) (-2.573322934e-06,1.49414439e-05) (-2.046729951e-06,4.370276278e-06) (9.88697933e-08,-1.296933022e-07) (1.816535076e-07,2.975472314e-07) (4.141876113e-07,6.018640503e-07) (-2.328660063e-07,6.309697042e-06) (-1.439856402e-06,3.698707777e-06) +(0,0) (0,0) (0.09595851645,0) (0.2265907446,0) (-0.3225492611,0) (0.001027662692,0) (0.006060369352,0) (-0.007088032044,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.001337166288,3.155443621e-30) (0.0004448148634,-6.310887242e-30) (-9.565713795e-05,-1.029370554e-14) (3.485412968e-05,1.023797789e-14) (0.0010438788,5.572765633e-17) (-3.635078475e-05,-1.089033375e-14) (1.331622219e-05,1.083246436e-14) (0.0003830055394,5.786938279e-17) (-2.848334632e-15,1.388191666e-19) (4.162623539e-06,-2.367315108e-15) (1.327559777e-05,5.945058718e-15) (-8.528709815e-05,-3.98658355e-15) (0.0003765412857,4.087011207e-16) (-8.229297777e-15,3.646221352e-19) (1.716943454e-06,-2.411501735e-15) (5.343838064e-06,6.246511632e-15) (-3.496510539e-05,-4.239624517e-15) (0.0001515559446,4.042499974e-16) +(-1.173174173e-05,0) (-3.880290635e-06,0) (-4.095921988e-07,-2.741514604e-07) (-2.780116483e-06,6.455501517e-06) (-7.838840513e-06,-6.181350057e-06) (-1.61552776e-07,-1.190893908e-07) (-9.323685179e-07,2.408299986e-06) (-3.148837626e-06,-2.289210596e-06) (4.469778006e-08,-1.504883457e-07) (1.26676856e-06,-1.046269265e-07) (-8.328059922e-07,3.050222055e-07) (-4.092802746e-06,1.369814789e-06) (1.671585455e-06,-1.419721722e-06) (1.781827059e-08,-6.178672245e-08) (5.435245616e-07,-4.675798968e-08) (-2.634292994e-07,9.375785702e-08) (-1.60734289e-06,1.092677106e-06) (2.465845742e-07,-1.077890251e-06) +(0,0) (0,0) (0.05210540448,0) (0.1187574051,0) (0.6090226715,0) (0.0002945720367,0) (0.001167828641,0) (0.03500776944,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.001052178223,0) (0.0003500121988,0) (7.195558885e-05,0) (9.157492925e-05,0) (0.0008238230987,0) (2.733320619e-05,0) (3.491359954e-05,0) (0.0003022664318,0) (1.430604767e-15,-9.860761315e-32) (6.245481801e-06,-9.860761315e-32) (2.855486911e-06,-2.465190329e-32) (0.0001251013452,-3.45126646e-31) (0.0003045636627,3.45126646e-31) (5.057437216e-15,2.958228395e-31) (2.588009232e-06,2.958228395e-31) (1.076883833e-06,-1.972152263e-31) (5.23758695e-05,4.930380658e-32) (0.0001225460354,2.958228395e-31) +(1.829886623e-05,0) (6.052376612e-06,0) (7.624904163e-08,0) (1.234084223e-05,0) (1.273119943e-05,0) (3.426263494e-08,0) (4.576252571e-06,0) (4.96973533e-06,0) (4.881179852e-07,-9.564275833e-25) (1.015740713e-06,-3.282873056e-24) (2.932491235e-07,-1.783608196e-24) (5.670935863e-06,3.231174268e-24) (3.357323756e-06,-8.685396432e-24) (2.179567445e-07,9.04728795e-25) (4.248659482e-07,5.014782464e-24) (7.486855157e-08,1.395867284e-24) (2.258687365e-06,-1.240770919e-24) (2.036540451e-06,-3.30872245e-24) +(0,0) (0,0) (-1.099241284e-12,-0.009526678654) (2.191751042e-12,-0.003900938503) (4.271548499e-13,-0.004400530276) (1.838561317e-13,0.0003891496597) (-2.798649041e-13,0.0003758547668) (-4.675917989e-13,0.001585444316) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(4.913914448e-13,-0.02847459545) (2.122391617e-14,-0.0003553210569) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.0001093393109,0.0001456531315) (3.579293875e-05,4.748469771e-05) (-1.939696579e-09,-1.629636271e-08) (7.475565512e-06,-2.866786586e-05) (-8.944884285e-05,5.999236372e-05) (-2.14173115e-09,-2.526699651e-09) (2.725199573e-06,-1.146585957e-05) (-3.315658003e-05,2.393059195e-05) (-1.926292674e-07,-4.544103218e-07) (8.906309439e-07,-6.314723923e-07) (-7.151711759e-09,2.666232592e-08) (1.11405877e-05,9.30218948e-06) (3.367781307e-06,-2.632798887e-05) (-7.780657096e-08,-1.971839515e-07) (3.796910775e-07,-2.865459246e-07) (-2.369849357e-09,-3.160619939e-09) (7.354518612e-06,4.660871765e-06) (-1.546040082e-06,-1.176643449e-05) +(0,0) (0,0) (0.00105697197,0.003009623275) (-0.0008719983776,-0.002955842992) (-0.003599522581,0.0005624841584) (-6.176202333e-05,-0.0001513634052) (5.768800967e-06,0.0001088837687) (0.0005047971676,-2.223796807e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.001196093331,0.0006903761197) (0.0003917081531,0.0002259413986) (2.841899237e-06,1.54874658e-06) (-0.0002571711525,-0.0001485247326) (0.0001083569998,6.277113221e-05) (1.090631473e-06,5.358995892e-07) (-9.701345459e-05,-5.605862791e-05) (4.020060285e-05,2.342138567e-05) (-2.495213373e-15,-3.798040949e-13) (2.564609381e-05,1.483301342e-05) (-7.938644399e-06,-4.592612137e-06) (-3.315355071e-05,-1.896761248e-05) (-0.0001237260184,-7.140117022e-05) (-6.181712518e-15,-1.07231224e-12) (1.064099062e-05,6.168956371e-06) (-3.13785497e-06,-1.820434496e-06) (-1.414077322e-05,-7.996125443e-06) (-5.05099567e-05,-2.913148265e-05) +(-0.003727919612,0.0004512406817) (-4.637284614e-05,5.719664231e-06) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-3.073369271e-12,-0.05475639745) (-2.298249668e-13,-0.001163347614) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-7.745507745e-13,-0.0230047579) (-3.345332529e-14,-0.0003354043926) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.0001315601101,-0.0001730513556) (4.714272022e-05,-6.266113996e-05) (5.795093163e-08,-4.411126475e-08) (1.906917157e-05,1.709188873e-05) (-6.747387277e-05,-0.0001071940222) (1.453425306e-08,2.475386522e-10) (7.939327188e-06,7.332714519e-06) (-2.725106785e-05,-4.451495134e-05) (3.68732518e-08,-8.215921054e-08) (-1.118974817e-08,-2.769128241e-07) (4.59324699e-08,2.844750319e-08) (7.162075505e-06,-1.243111672e-05) (-1.167000609e-05,5.409948601e-06) (1.362845101e-08,-3.419748453e-08) (-4.294076558e-09,-1.256505281e-07) (-2.120868259e-10,-1.155313223e-08) (4.515484695e-06,-7.853450267e-06) (-6.706727958e-06,4.615990553e-06) +(0,0) (0,0) (-3.574796693e-12,0.03098131397) (-3.042140382e-12,-0.00541448473) (-3.236912117e-15,-3.334652474e-05) (1.933870538e-12,-0.004093227976) (5.083089287e-13,0.0006826519903) (1.305409463e-14,4.426198274e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-2.140675696e-12,0.04078133152) (-9.245860848e-14,0.0005088910162) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.0004728364285,0.0006042634813) (0.0001549011422,0.0001969101588) (1.742154656e-07,2.210128037e-07) (6.630159526e-05,-5.281451296e-05) (-0.0002245728385,0.0003510046726) (2.242184337e-09,5.210283013e-08) (2.564595677e-05,-2.104968573e-05) (-8.40459334e-05,0.0001357401889) (1.942550103e-07,3.327717081e-07) (-8.133516325e-08,8.726284924e-07) (1.252513546e-07,-1.365851479e-07) (1.945354614e-05,3.357364785e-05) (-3.63246243e-05,-1.166647945e-05) (8.203792112e-08,1.357449512e-07) (-3.833851731e-08,3.884239297e-07) (-3.851851949e-08,-1.565911284e-09) (1.226202078e-05,2.102554947e-05) (-2.027680178e-05,-1.112687277e-05) +(0,0) (0,0) (-2.024388139e-12,0.01754455146) (4.181890806e-12,0.007443043734) (-2.262288214e-13,-0.002330599262) (6.414121631e-13,-0.001357612187) (-1.452340376e-12,-0.001950473409) (9.467343129e-14,0.0003210053167) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(6.244874297e-13,0.03618709099) (2.697252669e-14,0.0004515616539) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-7.009945539e-05,9.338091768e-05) (-2.294751532e-05,3.044331833e-05) (6.90127523e-08,-8.056615866e-08) (-1.668025493e-05,-2.547758194e-06) (2.594739121e-05,8.036832558e-05) (1.88807935e-08,-4.469530297e-09) (-6.589260373e-06,-9.018969849e-07) (9.98494262e-06,3.043541208e-05) (1.224567805e-07,1.00999336e-07) (1.175784606e-06,6.957931152e-07) (4.804307578e-08,6.828021738e-08) (-5.793391426e-06,9.404544457e-06) (1.281018903e-05,1.168435749e-05) (4.953722157e-08,3.817679525e-08) (5.172684202e-07,3.247875174e-07) (4.380408014e-09,-1.408858421e-08) (-2.978900681e-06,6.8746713e-06) (6.040486638e-06,2.242961964e-06) +(0,0) (0,0) (-1.099241284e-12,0.009526678654) (2.191751042e-12,0.003900938503) (4.271548499e-13,0.004400530276) (1.838561317e-13,-0.0003891496597) (-2.798649041e-13,-0.0003758547668) (-4.675917989e-13,-0.001585444316) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(4.913914448e-13,0.02847459545) (2.122391617e-14,0.0003553210569) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.0001093393109,-0.0001456531315) (3.579293875e-05,-4.748469771e-05) (-1.939696579e-09,1.629636271e-08) (7.475565512e-06,2.866786586e-05) (-8.944884285e-05,-5.999236372e-05) (-2.14173115e-09,2.526699651e-09) (2.725199573e-06,1.146585957e-05) (-3.315658003e-05,-2.393059195e-05) (-1.926292674e-07,4.544103218e-07) (8.906309439e-07,6.314723923e-07) (-7.151711759e-09,-2.666232592e-08) (1.11405877e-05,-9.30218948e-06) (3.367781307e-06,2.632798887e-05) (-7.780657096e-08,1.971839515e-07) (3.796910775e-07,2.865459246e-07) (-2.369849357e-09,3.160619939e-09) (7.354518612e-06,-4.660871765e-06) (-1.546040082e-06,1.176643449e-05) +(0.003323277612,0) (0.001069070815,0) (0.00174180792,0) (0.0001281378722,0) (3.179629858e-05,0) (0.0005140931207,0) (0.0001209653547,0) (7.18021662e-05,0) (0,-4.930380658e-32) (-2.710505431e-20,0) (7.588732639e-10,0) (1.442267609e-08,0) (0.0005156165052,0) (0,0) (4.235164736e-21,-1.972152263e-30) (8.97091465e-10,0) (2.352707791e-08,0) (0.0002128748988,0) +(0.7705943424,0) (0.0003607104378,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.001812676218,0) (0.0005842219029,0) (3.532291747e-09,0) (7.112404456e-05,0) (0.000911161533,0) (3.202095655e-10,0) (3.03507392e-05,0) (0.0003364428726,0) (4.990489648e-07,2.067951531e-25) (1.173508992e-06,-1.447566072e-24) (2.598563963e-09,1.861156378e-24) (3.714438472e-05,3.231174268e-26) (0.0002098412308,-3.30872245e-24) (2.061664726e-07,-2.067951531e-25) (5.325771156e-07,-1.550963649e-24) (2.084413822e-10,2.584939414e-24) (3.356492395e-05,-1.240770919e-24) (6.915611245e-05,-2.481541838e-24) +(0.0001754800089,0.001128796414) (5.155638535e-05,0.0003342646506) (-0.0005502637221,0.0001932512068) (9.709341259e-05,-2.864336795e-05) (-4.064263427e-06,-2.600856887e-05) (-0.0001999613347,8.159182589e-05) (3.504322644e-05,-1.856634867e-06) (-1.007121016e-06,-2.28614337e-05) (-5.29395592e-23,0) (0,0) (-6.269273271e-08,7.510437591e-09) (-6.606213617e-08,-5.528284076e-07) (6.844478161e-06,1.191899221e-05) (4.235164736e-22,2.117582368e-22) (-3.176373552e-22,1.058791184e-22) (-5.808372802e-08,1.310311496e-08) (-1.322629353e-07,-5.877574649e-07) (4.354594467e-06,6.858741574e-06) +(-0.01868331836,0.0323693011) (-0.0002293683958,0.0003976494403) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-0.01868331836,0.0323693011) (-0.0002293683958,0.0003976494403) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-0.01859875469,-0.00289131822) (-0.0003637420256,-5.610292319e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-0.0009663293566,0.0005577580731) (-0.0003697518979,0.0002132767988) (2.479801027e-08,-1.3514143e-08) (-4.23588132e-06,2.446359757e-06) (-0.0001046382544,6.061686563e-05) (1.0527476e-08,-5.172846965e-09) (-1.625594762e-06,9.393400046e-07) (-4.287160338e-05,2.497754476e-05) (-3.520336691e-15,5.410133858e-13) (-5.105327903e-06,2.952784881e-06) (-4.942304714e-06,2.859189473e-06) (-2.434700457e-06,1.392926361e-06) (0.0001315692818,-7.592744685e-05) (-7.129225595e-15,1.249384147e-12) (-2.216852174e-06,1.285187174e-06) (-2.079248817e-06,1.206281444e-06) (-1.077501277e-06,6.092902574e-07) (5.766194007e-05,-3.325636996e-05) +(-0.004446205436,-0.0005656472102) (-6.115864053e-05,-7.486523763e-06) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0,0) (0,0) (0.00343733442,-0.009787470219) (0.001210329744,-0.004102696501) (2.72766147e-05,4.262416284e-06) (-0.0006496370623,0.001592099361) (-1.047767332e-05,0.0001977618165) (-1.409278351e-05,-6.208332571e-07) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.001713045537,-0.0009887570642) (0.0005610046358,-0.0003235933972) (1.284657558e-06,-7.000983605e-07) (0.0002806706319,-0.0001620964487) (0.0001545866867,-8.955195666e-05) (4.934599324e-07,-2.424695971e-07) (0.0001055234845,-6.09760962e-05) (5.735923717e-05,-3.341822563e-05) (7.84876992e-15,-1.192626206e-12) (-1.799053813e-05,1.040524524e-05) (5.289516912e-05,-3.060056395e-05) (1.028606432e-05,-5.884802014e-06) (-0.0001666007481,9.614379037e-05) (1.52743842e-14,-2.640868145e-12) (-7.589476744e-06,4.399886574e-06) (2.17334082e-05,-1.260869171e-05) (4.463940347e-06,-2.524206171e-06) (-6.808603241e-05,3.926843742e-05) +(0.005916905037,-0.01467169451) (7.321154469e-05,-0.0001827410428) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0,0) (0,0) (0.001946543994,-0.005542591742) (-0.001663784768,0.005639788643) (0.001906371311,0.0002979016351) (-0.0002154669122,0.0005280559766) (2.993681038e-05,-0.0005650451033) (-0.0001022064118,-4.50252709e-06) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.001520061568,-0.0008773681615) (0.0004978043885,-0.0002871388275) (-3.777996285e-06,2.058890319e-06) (-9.788133906e-05,5.652966735e-05) (0.0001373008054,-7.953825799e-05) (-1.450444915e-06,7.126998007e-07) (-3.700141877e-05,2.138104216e-05) (5.093868177e-05,-2.967752787e-05) (4.931033643e-15,-7.561819314e-13) (1.709316225e-05,-9.88622701e-06) (-3.690797862e-05,2.135176006e-05) (2.260223605e-05,-1.293105701e-05) (-0.0001529662259,8.827543048e-05) (9.981358323e-15,-1.744829897e-12) (7.059472179e-06,-4.092624228e-06) (-1.557102848e-05,9.033571523e-06) (9.440103444e-06,-5.338056846e-06) (-6.246700819e-05,3.602768017e-05) +(0.002390038242,0.0002892987505) (2.973048971e-05,3.666982572e-06) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0,0) (0,0) (0.00105697197,-0.003009623275) (-0.0008719983776,0.002955842992) (-0.003599522581,-0.0005624841584) (-6.176202333e-05,0.0001513634052) (5.768800967e-06,-0.0001088837687) (0.0005047971676,2.223796807e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.001196093331,-0.0006903761197) (0.0003917081531,-0.0002259413986) (2.841899237e-06,-1.54874658e-06) (-0.0002571711525,0.0001485247326) (0.0001083569998,-6.277113221e-05) (1.090631473e-06,-5.358995892e-07) (-9.701345459e-05,5.605862791e-05) (4.020060285e-05,-2.342138567e-05) (-2.495189656e-15,3.798040983e-13) (2.564609381e-05,-1.483301342e-05) (-7.938644399e-06,4.592612137e-06) (-3.315355071e-05,1.896761248e-05) (-0.0001237260184,7.140117022e-05) (-6.181715906e-15,1.072312241e-12) (1.064099062e-05,-6.168956371e-06) (-3.13785497e-06,1.820434496e-06) (-1.414077322e-05,7.996125443e-06) (-5.05099567e-05,2.913148265e-05) +(-0.003727919612,-0.0004512406817) (-4.637284614e-05,-5.719664231e-06) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.0001754800089,-0.001128796414) (5.155638535e-05,-0.0003342646506) (-0.0005502637221,-0.0001932512068) (9.709341259e-05,2.864336795e-05) (-4.064263427e-06,2.600856887e-05) (-0.0001999613347,-8.159182589e-05) (3.504322644e-05,1.856634867e-06) (-1.007121016e-06,2.28614337e-05) (0,0) (-1.694065895e-21,4.235164736e-22) (-6.269273271e-08,-7.510437591e-09) (-6.606213617e-08,5.528284076e-07) (6.844478161e-06,-1.191899221e-05) (-4.235164736e-22,-2.64697796e-22) (1.058791184e-22,0) (-5.808372802e-08,-1.310311496e-08) (-1.322629353e-07,5.877574649e-07) (4.354594467e-06,-6.858741574e-06) +(-0.01868331836,-0.0323693011) (-0.0002293683958,-0.0003976494403) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-0.01868331836,-0.0323693011) (-0.0002293683958,-0.0003976494403) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.0003926769682,0) (0.0001070003183,0) (0.0001952776704,0) (7.997302531e-05,0) (2.179385408e-05,0) (9.072628978e-05,0) (1.018039269e-05,0) (7.293086984e-06,0) (6.6174449e-24,-7.754818243e-25) (1.058791184e-22,-1.240770919e-24) (5.253558923e-06,5.169878828e-26) (2.149278346e-05,-1.033975766e-25) (3.663755034e-07,0) (0,1.178732373e-23) (2.64697796e-23,2.067951531e-25) (3.952117728e-06,3.877409121e-26) (1.542700385e-05,0) (3.100639357e-07,-4.135903063e-25) +(0.001812676218,0) (0.0005842219029,0) (1.455760061e-07,0) (0.000963108556,0) (1.903497787e-05,0) (5.40245945e-08,0) (0.0003595785109,0) (7.161396531e-06,0) (1.008356953e-10,8.271806126e-25) (0.0001405400645,-1.861156378e-24) (2.945702913e-05,8.271806126e-25) (1.166197091e-05,4.135903063e-24) (6.700160668e-05,-4.549493369e-24) (2.273663116e-10,0) (5.845678685e-05,3.101927297e-24) (1.222055263e-05,-4.135903063e-25) (5.038570089e-06,7.858215819e-24) (2.77438515e-05,-4.135903063e-25) +(0.7705943424,0) (0.0003607104378,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.9022006019,0) (0.001265938283,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.0006867671573,0) (0.0003118737213,0) (5.478741969e-09,0) (2.484389374e-08,0) (0.0007682472119,0) (2.546730763e-09,0) (9.802916105e-09,0) (0.0003437670443,0) (2.902829344e-15,3.944304526e-31) (2.474974783e-07,0) (1.106742305e-06,0) (6.746724226e-07,5.916456789e-31) (0.000344401489,0) (6.865622166e-15,0) (1.123246758e-07,0) (4.728420013e-07,0) (3.041028689e-07,-3.944304526e-31) (0.0001597069346,0) +(2.606909815e-05,0) (1.052486136e-05,0) (1.50160704e-06,0) (9.220031973e-06,0) (1.760750571e-05,0) (6.598984231e-07,0) (3.84839452e-06,0) (8.0970703e-06,0) (1.625045466e-08,-1.292469707e-25) (6.544979468e-08,1.033975766e-25) (1.123332837e-06,5.169878828e-26) (5.541294868e-06,-1.80945759e-25) (7.884846338e-07,-4.135903063e-24) (6.573341473e-09,-7.754818243e-26) (2.967925929e-08,1.783608196e-24) (6.405630384e-07,-1.550963649e-25) (2.445001313e-06,2.067951531e-25) (9.585207486e-07,4.135903063e-25) +(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-0.001217455938,-1.048968745e-13) (-0.0004731891963,-1.331680902e-13) (2.838254859e-07,-2.667032522e-15) (-1.646163048e-06,-2.058752428e-14) (-0.001134965332,9.353993365e-14) (1.193742549e-07,-2.806929651e-15) (-6.363442288e-07,-2.174782716e-14) (-0.0004599365052,1.036925755e-13) (-6.39905609e-15,-4.744497745e-19) (8.721502128e-07,9.270421917e-16) (-1.184494378e-05,2.305635264e-14) (-2.850339931e-06,1.637935329e-15) (-0.0004361013826,7.942071128e-14) (-1.451212062e-14,-1.126939084e-18) (3.845477493e-07,8.539000264e-16) (-4.942394664e-06,2.315955851e-14) (-1.259856574e-06,1.799159549e-15) (-0.0001885786623,8.350119887e-14) +(-2.336997728e-05,8.899656399e-05) (-8.620275597e-06,3.25033392e-05) (9.817825478e-08,5.801548646e-06) (5.084310361e-06,-3.009317751e-05) (-2.466390723e-05,-5.241278162e-05) (1.420505313e-07,2.363204515e-06) (1.623034791e-06,-1.170234502e-05) (-1.115234346e-05,-2.211479671e-05) (-4.043179797e-08,5.656802291e-08) (-2.05138522e-07,-2.751341749e-08) (7.187037426e-07,-3.7854683e-06) (-7.485119781e-06,1.298409725e-05) (1.719364356e-06,1.585304449e-06) (-1.709340046e-08,2.258118837e-08) (-9.133145593e-08,-1.217697277e-08) (1.259848231e-07,-2.133345284e-06) (-3.269905813e-06,5.697606153e-06) (1.2237451e-06,2.432502756e-06) +(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-0.001080302854,-1.772989558e-14) (-0.0004198818397,-1.679889e-14) (-8.346906342e-07,8.241968752e-15) (5.740844431e-07,7.132640533e-15) (-0.001008053523,1.105114258e-14) (-3.508811352e-07,8.716645911e-15) (2.231317455e-07,7.573389404e-15) (-0.000408453118,9.53184962e-15) (-4.05730137e-15,-5.694584659e-20) (-8.286469788e-07,-3.094091175e-15) (8.264893354e-06,-1.417463855e-14) (-6.263236738e-06,1.984783545e-15) (-0.0004004110629,7.138747102e-15) (-9.588196122e-15,-1.375244239e-19) (-3.576931874e-07,-3.070677107e-15) (3.541007804e-06,-1.454441084e-14) (-2.664277624e-06,2.070054798e-15) (-0.0001730155867,5.991069674e-15) +(-1.400249322e-05,8.517683491e-08) (-5.116927849e-06,-4.684231583e-09) (2.138336521e-06,-4.599405375e-07) (-5.084421801e-06,3.325365207e-06) (-1.137644059e-05,-2.898889879e-06) (8.535405516e-07,-2.174669906e-07) (-1.941555583e-06,1.356036493e-06) (-4.835683466e-06,-1.14408203e-06) (-7.579709164e-09,2.762279321e-08) (-1.753976932e-07,2.708152116e-07) (1.596704523e-06,6.809813049e-07) (-4.264485678e-06,-1.255174248e-07) (-4.111833037e-07,-9.800694867e-07) (-3.057891808e-09,1.074053857e-08) (-8.079752589e-08,1.194200536e-07) (7.764209185e-07,2.571247395e-07) (-2.00927223e-06,2.278516912e-07) (-4.360917395e-07,-6.207081838e-07) +(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-0.0008500596729,-1.395115192e-14) (-0.0003303931097,-1.321857004e-14) (6.278742745e-07,-6.267371997e-15) (1.508336107e-06,1.829707832e-14) (-0.0007955499976,8.763968249e-15) (2.638376718e-07,-6.633341259e-15) (5.85025715e-07,1.938064798e-14) (-0.0003223495585,7.571202097e-15) (2.037832522e-15,1.279206619e-19) (-1.243278326e-06,-5.349347949e-15) (1.777719935e-06,-3.844960139e-15) (9.187079385e-06,-3.340764983e-15) (-0.0003238706207,6.12567423e-15) (5.892571045e-15,3.456051733e-19) (-5.39163517e-07,-5.385811883e-15) (7.135796431e-07,-3.765088724e-15) (3.990946276e-06,-3.584746342e-15) (-0.0001398980045,5.217450273e-15) +(2.184072547e-05,-1.328566161e-07) (7.98125124e-06,7.306342835e-09) (-2.353317487e-07,2.431358997e-07) (8.89348769e-06,5.889722967e-06) (1.368174814e-05,-6.080660701e-06) (-9.52595112e-08,1.163421003e-07) (3.483016518e-06,2.340901803e-06) (5.851874148e-06,-2.448645606e-06) (-8.904308778e-08,1.862177347e-09) (-1.575009145e-07,2.041408412e-07) (-4.182973373e-07,-3.929932664e-07) (5.261261828e-06,1.934800189e-06) (4.914717562e-07,-1.551016991e-06) (-3.785085941e-08,1.286475674e-10) (-7.066595277e-08,8.72698674e-08) (-1.727701374e-07,-1.345678508e-07) (2.079943364e-06,1.093768337e-06) (9.353131396e-07,-1.037909249e-06) +(-3.073369271e-12,0.05475639745) (-2.298249668e-13,0.001163347614) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-7.745507745e-13,0.0230047579) (-3.345332529e-14,0.0003354043926) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.0001315601101,0.0001730513556) (4.714272022e-05,6.266113996e-05) (5.795093163e-08,4.411126475e-08) (1.906917157e-05,-1.709188873e-05) (-6.747387277e-05,0.0001071940222) (1.453425306e-08,-2.475386522e-10) (7.939327188e-06,-7.332714519e-06) (-2.725106785e-05,4.451495134e-05) (3.68732518e-08,8.215921054e-08) (-1.118974817e-08,2.769128241e-07) (4.59324699e-08,-2.844750319e-08) (7.162075505e-06,1.243111672e-05) (-1.167000609e-05,-5.409948601e-06) (1.362845101e-08,3.419748453e-08) (-4.294076558e-09,1.256505281e-07) (-2.120868259e-10,1.155313223e-08) (4.515484695e-06,7.853450267e-06) (-6.706727958e-06,-4.615990553e-06) +(-0.01859875469,0.00289131822) (-0.0003637420256,5.610292319e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-0.0009663293566,-0.0005577580731) (-0.0003697518979,-0.0002132767988) (2.479801027e-08,1.3514143e-08) (-4.23588132e-06,-2.446359757e-06) (-0.0001046382544,-6.061686563e-05) (1.0527476e-08,5.172846965e-09) (-1.625594762e-06,-9.393400046e-07) (-4.287160338e-05,-2.497754476e-05) (-3.520336691e-15,-5.410133841e-13) (-5.105327903e-06,-2.952784881e-06) (-4.942304714e-06,-2.859189473e-06) (-2.434700457e-06,-1.392926361e-06) (0.0001315692818,7.592744685e-05) (-7.129223054e-15,-1.249384147e-12) (-2.216852174e-06,-1.285187174e-06) (-2.079248817e-06,-1.206281444e-06) (-1.077501277e-06,-6.092902574e-07) (5.766194007e-05,3.325636996e-05) +(-0.004446205436,0.0005656472102) (-6.115864053e-05,7.486523763e-06) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-0.001217455938,1.048968745e-13) (-0.0004731891963,1.331680902e-13) (2.838254859e-07,2.667032522e-15) (-1.646163048e-06,2.058752428e-14) (-0.001134965332,-9.353993365e-14) (1.193742549e-07,2.806929651e-15) (-6.363442288e-07,2.174782716e-14) (-0.0004599365052,-1.036925755e-13) (-6.399069642e-15,4.744497745e-19) (8.721502128e-07,-9.270421917e-16) (-1.184494378e-05,-2.305635264e-14) (-2.850339931e-06,-1.637935329e-15) (-0.0004361013826,-7.942071128e-14) (-1.451212062e-14,1.126939084e-18) (3.845477493e-07,-8.539000264e-16) (-4.942394664e-06,-2.315955851e-14) (-1.259856574e-06,-1.799159549e-15) (-0.0001885786623,-8.350119887e-14) +(-2.336997728e-05,-8.899656399e-05) (-8.620275597e-06,-3.25033392e-05) (9.817825478e-08,-5.801548646e-06) (5.084310361e-06,3.009317751e-05) (-2.466390723e-05,5.241278162e-05) (1.420505313e-07,-2.363204515e-06) (1.623034791e-06,1.170234502e-05) (-1.115234346e-05,2.211479671e-05) (-4.043179797e-08,-5.656802291e-08) (-2.05138522e-07,2.751341749e-08) (7.187037426e-07,3.7854683e-06) (-7.485119781e-06,-1.298409725e-05) (1.719364356e-06,-1.585304449e-06) (-1.709340046e-08,-2.258118837e-08) (-9.133145593e-08,1.217697277e-08) (1.259848231e-07,2.133345284e-06) (-3.269905813e-06,-5.697606153e-06) (1.2237451e-06,-2.432502756e-06) +(0,0) (0,0) (0.5510606563,0) (0.2287898526,0) (3.497233206e-05,0) (0.03259042882,0) (0.003852456277,0) (2.728501408e-05,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.002158226331,0) (0.0007179444763,0) (1.470354086e-05,0) (0.0001090752041,0) (0.001676734109,0) (5.595492446e-06,0) (4.130750209e-05,0) (0.0006153632011,0) (1.410625631e-14,3.155443621e-30) (3.07334846e-06,3.944304526e-31) (0.0001267708775,0) (1.204204804e-05,1.57772181e-30) (0.0005522171709,0) (3.067480352e-14,0) (1.316513672e-06,0) (5.166052285e-05,0) (5.219413394e-06,0) (0.0002226698044,0) +(0.0003247731928,0) (0.0001074385849,0) (2.242104943e-05,0) (0.000101024546,0) (0.0001905669123,0) (8.493601038e-06,0) (3.626944176e-05,0) (7.576061162e-05,0) (2.975099223e-07,-2.067951531e-24) (6.545291938e-07,4.301339185e-23) (1.321630137e-05,8.271806126e-25) (4.053453297e-05,2.067951531e-25) (6.936601868e-06,-1.98523347e-23) (1.220223247e-07,-4.135903063e-25) (2.860486991e-07,-1.240770919e-24) (7.129718703e-06,1.447566072e-24) (1.765029723e-05,3.30872245e-24) (7.735483806e-06,-1.32348898e-23) +(0,0) (0,0) (0.3120626857,0) (-0.3145069131,0) (0.002444227455,0) (0.01080935722,0) (-0.01100723887,0) (0.0001978816593,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.001915090305,-1.335751503e-13) (0.0006370640959,-1.537988172e-13) (-4.324103528e-05,2.064957961e-14) (-3.803898884e-05,3.11900116e-15) (0.001489241722,1.064118355e-13) (-1.644703661e-05,2.184936467e-14) (-1.448432252e-05,3.401844515e-15) (0.0005464819933,1.104512803e-13) (8.944071612e-15,-5.37611904e-19) (-2.920048495e-06,-7.799358519e-15) (-8.845527695e-05,-2.047495515e-14) (2.646077292e-05,6.820300902e-15) (0.0005070239929,8.329729939e-14) (2.026694378e-14,-1.283138686e-18) (-1.22457607e-06,-7.793369903e-15) (-3.701248625e-05,-2.141087058e-14) (1.103773763e-05,7.186674661e-15) (0.0002042932449,8.338536484e-14) +(1.284349739e-05,4.772636154e-05) (4.176499206e-06,1.580615794e-05) (-1.637198807e-06,-8.291662982e-06) (-1.365739124e-05,-1.476125239e-05) (2.456488526e-05,-2.98039344e-05) (-5.950508007e-07,-3.103480952e-06) (-4.942325707e-06,-5.332056991e-06) (9.785063172e-06,-1.163148615e-05) (1.150138939e-07,-4.234158657e-08) (4.359031483e-07,-9.22545632e-07) (-1.273242959e-06,5.816351088e-06) (5.466313628e-06,1.016188654e-05) (-2.867123006e-06,-1.31041973e-06) (4.484840704e-08,-1.742515531e-08) (1.996404585e-07,-4.006392654e-07) (-7.036287942e-07,2.636380213e-06) (3.2181333e-06,4.377497957e-06) (-2.131972104e-06,3.142402084e-07) +(0,0) (0,0) (0.1694498108,0) (-0.164834733,0) (-0.0046150778,0) (0.003098423631,0) (-0.002121086697,0) (-0.0009773369338,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.001506930239,-1.051064969e-13) (0.0005012876667,-1.210199267e-13) (3.252694177e-05,-1.903334618e-14) (-9.99427541e-05,3.755176299e-14) (0.001175300936,8.391686018e-14) (1.236700242e-05,-2.013420008e-14) (-3.797622396e-05,3.981209702e-14) (0.000431281392,8.71025428e-14) (-4.492296834e-15,5.108271321e-20) (-4.381157595e-06,-1.419353245e-14) (-1.902610263e-05,4.116223754e-15) (-3.881335348e-05,-8.189939113e-15) (0.0004101039919,6.692950174e-14) (-1.245537216e-14,2.367029216e-19) (-1.845846564e-06,-1.433977071e-14) (-7.458711811e-06,4.403933919e-15) (-1.653394432e-05,-8.760466044e-15) (0.0001651886852,6.698363681e-14) +(-2.003295385e-05,-7.44423399e-05) (-6.514395052e-06,-2.465403487e-05) (9.239836074e-07,9.251150332e-07) (-1.431917237e-05,3.227521164e-05) (-1.064377077e-06,4.92444156e-05) (3.961344705e-07,3.661838786e-07) (-5.649364548e-06,1.15785494e-05) (-1.372201324e-06,1.935529002e-05) (2.280251171e-07,3.053268573e-07) (4.078376831e-07,-7.060455894e-07) (1.056705235e-06,-1.661036676e-06) (-2.573322934e-06,-1.49414439e-05) (-2.046729951e-06,-4.370276278e-06) (9.88697933e-08,1.296933022e-07) (1.816535076e-07,-2.975472314e-07) (4.141876113e-07,-6.018640503e-07) (-2.328660063e-07,-6.309697042e-06) (-1.439856402e-06,-3.698707777e-06) +(0,0) (0,0) (-3.574796693e-12,-0.03098131397) (-3.042140382e-12,0.00541448473) (-3.236912117e-15,3.334652474e-05) (1.933870538e-12,0.004093227976) (5.083089287e-13,-0.0006826519903) (1.305409463e-14,-4.426198274e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-2.140675696e-12,-0.04078133152) (-9.245860848e-14,-0.0005088910162) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.0004728364285,-0.0006042634813) (0.0001549011422,-0.0001969101588) (1.742154656e-07,-2.210128037e-07) (6.630159526e-05,5.281451296e-05) (-0.0002245728385,-0.0003510046726) (2.242184337e-09,-5.210283013e-08) (2.564595677e-05,2.104968573e-05) (-8.40459334e-05,-0.0001357401889) (1.942550103e-07,-3.327717081e-07) (-8.133516325e-08,-8.726284924e-07) (1.252513546e-07,1.365851479e-07) (1.945354614e-05,-3.357364785e-05) (-3.63246243e-05,1.166647945e-05) (8.203792112e-08,-1.357449512e-07) (-3.833851731e-08,-3.884239297e-07) (-3.851851949e-08,1.565911284e-09) (1.226202078e-05,-2.102554947e-05) (-2.027680178e-05,1.112687277e-05) +(0,0) (0,0) (0.00343733442,0.009787470219) (0.001210329744,0.004102696501) (2.72766147e-05,-4.262416284e-06) (-0.0006496370623,-0.001592099361) (-1.047767332e-05,-0.0001977618165) (-1.409278351e-05,6.208332571e-07) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.001713045537,0.0009887570642) (0.0005610046358,0.0003235933972) (1.284657558e-06,7.000983605e-07) (0.0002806706319,0.0001620964487) (0.0001545866867,8.955195666e-05) (4.934599324e-07,2.424695971e-07) (0.0001055234845,6.09760962e-05) (5.735923717e-05,3.341822563e-05) (7.848773308e-15,1.192626205e-12) (-1.799053813e-05,-1.040524524e-05) (5.289516912e-05,3.060056395e-05) (1.028606432e-05,5.884802014e-06) (-0.0001666007481,-9.614379037e-05) (1.527438251e-14,2.640868147e-12) (-7.589476744e-06,-4.399886574e-06) (2.17334082e-05,1.260869171e-05) (4.463940347e-06,2.524206171e-06) (-6.808603241e-05,-3.926843742e-05) +(0.005916905037,0.01467169451) (7.321154469e-05,0.0001827410428) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-0.001080302854,1.772989558e-14) (-0.0004198818397,1.679889e-14) (-8.346906342e-07,-8.241968752e-15) (5.740844431e-07,-7.132640533e-15) (-0.001008053523,-1.105114258e-14) (-3.508811352e-07,-8.716645911e-15) (2.231317455e-07,-7.573389404e-15) (-0.000408453118,-9.53184962e-15) (-4.057328475e-15,5.694584659e-20) (-8.286469788e-07,3.094091175e-15) (8.264893354e-06,1.417463855e-14) (-6.263236738e-06,-1.984783545e-15) (-0.0004004110629,-7.138747102e-15) (-9.588196122e-15,1.375244239e-19) (-3.576931874e-07,3.070677107e-15) (3.541007804e-06,1.454441084e-14) (-2.664277624e-06,-2.070054798e-15) (-0.0001730155867,-5.991069674e-15) +(-1.400249322e-05,-8.517683491e-08) (-5.116927849e-06,4.684231583e-09) (2.138336521e-06,4.599405375e-07) (-5.084421801e-06,-3.325365207e-06) (-1.137644059e-05,2.898889879e-06) (8.535405516e-07,2.174669906e-07) (-1.941555583e-06,-1.356036493e-06) (-4.835683466e-06,1.14408203e-06) (-7.579709164e-09,-2.762279321e-08) (-1.753976932e-07,-2.708152116e-07) (1.596704523e-06,-6.809813049e-07) (-4.264485678e-06,1.255174248e-07) (-4.111833037e-07,9.800694867e-07) (-3.057891808e-09,-1.074053857e-08) (-8.079752589e-08,-1.194200536e-07) (7.764209185e-07,-2.571247395e-07) (-2.00927223e-06,-2.278516912e-07) (-4.360917395e-07,6.207081838e-07) +(0,0) (0,0) (0.3120626857,0) (-0.3145069131,0) (0.002444227455,0) (0.01080935722,0) (-0.01100723887,0) (0.0001978816593,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.001915090305,1.335751503e-13) (0.0006370640959,1.537988172e-13) (-4.324103528e-05,-2.064957961e-14) (-3.803898884e-05,-3.11900116e-15) (0.001489241722,-1.064118355e-13) (-1.644703661e-05,-2.184936467e-14) (-1.448432252e-05,-3.401844515e-15) (0.0005464819933,-1.104512803e-13) (8.944071612e-15,5.37611904e-19) (-2.920048495e-06,7.799358519e-15) (-8.845527695e-05,2.047495515e-14) (2.646077292e-05,-6.820300902e-15) (0.0005070239929,-8.329729939e-14) (2.026694378e-14,1.283138686e-18) (-1.22457607e-06,7.793369903e-15) (-3.701248625e-05,2.141087058e-14) (1.103773763e-05,-7.186674661e-15) (0.0002042932449,-8.338536484e-14) +(1.284349739e-05,-4.772636154e-05) (4.176499206e-06,-1.580615794e-05) (-1.637198807e-06,8.291662982e-06) (-1.365739124e-05,1.476125239e-05) (2.456488526e-05,2.98039344e-05) (-5.950508007e-07,3.103480952e-06) (-4.942325707e-06,5.332056991e-06) (9.785063172e-06,1.163148615e-05) (1.150138939e-07,4.234158657e-08) (4.359031483e-07,9.22545632e-07) (-1.273242959e-06,-5.816351088e-06) (5.466313628e-06,-1.016188654e-05) (-2.867123006e-06,1.31041973e-06) (4.484840704e-08,1.742515531e-08) (1.996404585e-07,4.006392654e-07) (-7.036287942e-07,-2.636380213e-06) (3.2181333e-06,-4.377497957e-06) (-2.131972104e-06,-3.142402084e-07) +(0,0) (0,0) (0.1767194204,0) (0.4323382235,0) (0.1708278373,0) (0.003585169254,0) (0.0314498852,0) (0.001435115663,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.001699344885,0) (0.0005652953336,0) (0.0001271657725,0) (1.32657526e-05,0) (0.001322714732,0) (4.834337921e-05,0) (5.078874012e-06,0) (0.0004853110627,0) (5.670946568e-15,0) (2.774395199e-06,1.972152263e-31) (6.172029553e-05,0) (5.814397199e-05,0) (0.0004655294022,-4.930380658e-32) (1.339042538e-14,0) (1.139058852e-06,0) (2.651781405e-05,0) (2.334202003e-05,0) (0.0001874332715,-2.958228395e-31) +(7.521436699e-06,0) (2.487726124e-06,0) (3.185938962e-06,0) (4.003174709e-06,0) (7.827739219e-06,0) (1.175670888e-06,0) (1.457353976e-06,0) (3.049591687e-06,0) (5.048909171e-08,2.568783543e-24) (1.590612012e-06,1.609124785e-23) (2.682375849e-06,-5.764414894e-24) (3.284718312e-06,6.203854594e-25) (1.43263148e-06,1.550963649e-25) (1.897206644e-08,-6.720842477e-25) (7.004686066e-07,5.11818004e-24) (1.044304049e-06,-3.231174268e-25) (1.672429076e-06,0) (6.003570143e-07,8.271806126e-25) +(0,0) (0,0) (0.09595851645,0) (0.2265907446,0) (-0.3225492611,0) (0.001027662692,0) (0.006060369352,0) (-0.007088032044,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.001337166288,-3.155443621e-30) (0.0004448148634,6.310887242e-30) (-9.565713795e-05,1.029370554e-14) (3.485412968e-05,-1.023797789e-14) (0.0010438788,-5.572765633e-17) (-3.635078475e-05,1.089033375e-14) (1.331622219e-05,-1.083246436e-14) (0.0003830055394,-5.786938279e-17) (-2.848348185e-15,-1.388191666e-19) (4.162623539e-06,2.367315108e-15) (1.327559777e-05,-5.945058718e-15) (-8.528709815e-05,3.98658355e-15) (0.0003765412857,-4.087011207e-16) (-8.229297777e-15,-3.646221352e-19) (1.716943454e-06,2.411501735e-15) (5.343838064e-06,-6.246511632e-15) (-3.496510539e-05,4.239624517e-15) (0.0001515559446,-4.042499974e-16) +(-1.173174173e-05,0) (-3.880290635e-06,0) (-4.095921988e-07,2.741514604e-07) (-2.780116483e-06,-6.455501517e-06) (-7.838840513e-06,6.181350057e-06) (-1.61552776e-07,1.190893908e-07) (-9.323685179e-07,-2.408299986e-06) (-3.148837626e-06,2.289210596e-06) (4.469778006e-08,1.504883457e-07) (1.26676856e-06,1.046269265e-07) (-8.328059922e-07,-3.050222055e-07) (-4.092802746e-06,-1.369814789e-06) (1.671585455e-06,1.419721722e-06) (1.781827059e-08,6.178672245e-08) (5.435245616e-07,4.675798968e-08) (-2.634292994e-07,-9.375785702e-08) (-1.60734289e-06,-1.092677106e-06) (2.465845742e-07,1.077890251e-06) +(0,0) (0,0) (-2.024388139e-12,-0.01754455146) (4.181890806e-12,-0.007443043734) (-2.262288214e-13,0.002330599262) (6.414121631e-13,0.001357612187) (-1.452340376e-12,0.001950473409) (9.467343129e-14,-0.0003210053167) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(6.244874297e-13,-0.03618709099) (2.697252669e-14,-0.0004515616539) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-7.009945539e-05,-9.338091768e-05) (-2.294751532e-05,-3.044331833e-05) (6.90127523e-08,8.056615866e-08) (-1.668025493e-05,2.547758194e-06) (2.594739121e-05,-8.036832558e-05) (1.88807935e-08,4.469530297e-09) (-6.589260373e-06,9.018969849e-07) (9.98494262e-06,-3.043541208e-05) (1.224567805e-07,-1.00999336e-07) (1.175784606e-06,-6.957931152e-07) (4.804307578e-08,-6.828021738e-08) (-5.793391426e-06,-9.404544457e-06) (1.281018903e-05,-1.168435749e-05) (4.953722157e-08,-3.817679525e-08) (5.172684202e-07,-3.247875174e-07) (4.380408014e-09,1.408858421e-08) (-2.978900681e-06,-6.8746713e-06) (6.040486638e-06,-2.242961964e-06) +(0,0) (0,0) (0.001946543994,0.005542591742) (-0.001663784768,-0.005639788643) (0.001906371311,-0.0002979016351) (-0.0002154669122,-0.0005280559766) (2.993681038e-05,0.0005650451033) (-0.0001022064118,4.50252709e-06) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.001520061568,0.0008773681615) (0.0004978043885,0.0002871388275) (-3.777996285e-06,-2.058890319e-06) (-9.788133906e-05,-5.652966735e-05) (0.0001373008054,7.953825799e-05) (-1.450444915e-06,-7.126998007e-07) (-3.700141877e-05,-2.138104216e-05) (5.093868177e-05,2.967752787e-05) (4.931041266e-15,7.561819314e-13) (1.709316225e-05,9.88622701e-06) (-3.690797862e-05,-2.135176006e-05) (2.260223605e-05,1.293105701e-05) (-0.0001529662259,-8.827543048e-05) (9.981358747e-15,1.744829897e-12) (7.059472179e-06,4.092624228e-06) (-1.557102848e-05,-9.033571523e-06) (9.440103444e-06,5.338056846e-06) (-6.246700819e-05,-3.602768017e-05) +(0.002390038242,-0.0002892987505) (2.973048971e-05,-3.666982572e-06) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-0.0008500596729,1.395115192e-14) (-0.0003303931097,1.321857004e-14) (6.278742745e-07,6.267371997e-15) (1.508336107e-06,-1.829707832e-14) (-0.0007955499976,-8.763968249e-15) (2.638376718e-07,6.633341259e-15) (5.85025715e-07,-1.938064798e-14) (-0.0003223495585,-7.571202097e-15) (2.037825746e-15,-1.279206619e-19) (-1.243278326e-06,5.349347949e-15) (1.777719935e-06,3.844960139e-15) (9.187079385e-06,3.340764983e-15) (-0.0003238706207,-6.12567423e-15) (5.892564269e-15,-3.456051733e-19) (-5.39163517e-07,5.385811883e-15) (7.135796431e-07,3.765088724e-15) (3.990946276e-06,3.584746342e-15) (-0.0001398980045,-5.217450273e-15) +(2.184072547e-05,1.328566161e-07) (7.98125124e-06,-7.306342835e-09) (-2.353317487e-07,-2.431358997e-07) (8.89348769e-06,-5.889722967e-06) (1.368174814e-05,6.080660701e-06) (-9.52595112e-08,-1.163421003e-07) (3.483016518e-06,-2.340901803e-06) (5.851874148e-06,2.448645606e-06) (-8.904308778e-08,-1.862177347e-09) (-1.575009145e-07,-2.041408412e-07) (-4.182973373e-07,3.929932664e-07) (5.261261828e-06,-1.934800189e-06) (4.914717562e-07,1.551016991e-06) (-3.785085941e-08,-1.286475674e-10) (-7.066595277e-08,-8.72698674e-08) (-1.727701374e-07,1.345678508e-07) (2.079943364e-06,-1.093768337e-06) (9.353131396e-07,1.037909249e-06) +(0,0) (0,0) (0.1694498108,0) (-0.164834733,0) (-0.0046150778,0) (0.003098423631,0) (-0.002121086697,0) (-0.0009773369338,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.001506930239,1.051064969e-13) (0.0005012876667,1.210199267e-13) (3.252694177e-05,1.903334618e-14) (-9.99427541e-05,-3.755176299e-14) (0.001175300936,-8.391686018e-14) (1.236700242e-05,2.013420008e-14) (-3.797622396e-05,-3.981209702e-14) (0.000431281392,-8.71025428e-14) (-4.492290058e-15,-5.108271322e-20) (-4.381157595e-06,1.419353245e-14) (-1.902610263e-05,-4.116223754e-15) (-3.881335348e-05,8.189939113e-15) (0.0004101039919,-6.692950174e-14) (-1.245536538e-14,-2.367029216e-19) (-1.845846564e-06,1.433977071e-14) (-7.458711811e-06,-4.403933919e-15) (-1.653394432e-05,8.760466044e-15) (0.0001651886852,-6.698363681e-14) +(-2.003295385e-05,7.44423399e-05) (-6.514395052e-06,2.465403487e-05) (9.239836074e-07,-9.251150332e-07) (-1.431917237e-05,-3.227521164e-05) (-1.064377077e-06,-4.92444156e-05) (3.961344705e-07,-3.661838786e-07) (-5.649364548e-06,-1.15785494e-05) (-1.372201324e-06,-1.935529002e-05) (2.280251171e-07,-3.053268573e-07) (4.078376831e-07,7.060455894e-07) (1.056705235e-06,1.661036676e-06) (-2.573322934e-06,1.49414439e-05) (-2.046729951e-06,4.370276278e-06) (9.88697933e-08,-1.296933022e-07) (1.816535076e-07,2.975472314e-07) (4.141876113e-07,6.018640503e-07) (-2.328660063e-07,6.309697042e-06) (-1.439856402e-06,3.698707777e-06) +(0,0) (0,0) (0.09595851645,0) (0.2265907446,0) (-0.3225492611,0) (0.001027662692,0) (0.006060369352,0) (-0.007088032044,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.001337166288,3.155443621e-30) (0.0004448148634,-6.310887242e-30) (-9.565713795e-05,-1.029370554e-14) (3.485412968e-05,1.023797789e-14) (0.0010438788,5.572765633e-17) (-3.635078475e-05,-1.089033375e-14) (1.331622219e-05,1.083246436e-14) (0.0003830055394,5.786938279e-17) (-2.848334632e-15,1.388191666e-19) (4.162623539e-06,-2.367315108e-15) (1.327559777e-05,5.945058718e-15) (-8.528709815e-05,-3.98658355e-15) (0.0003765412857,4.087011207e-16) (-8.229297777e-15,3.646221352e-19) (1.716943454e-06,-2.411501735e-15) (5.343838064e-06,6.246511632e-15) (-3.496510539e-05,-4.239624517e-15) (0.0001515559446,4.042499974e-16) +(-1.173174173e-05,0) (-3.880290635e-06,0) (-4.095921988e-07,-2.741514604e-07) (-2.780116483e-06,6.455501517e-06) (-7.838840513e-06,-6.181350057e-06) (-1.61552776e-07,-1.190893908e-07) (-9.323685179e-07,2.408299986e-06) (-3.148837626e-06,-2.289210596e-06) (4.469778006e-08,-1.504883457e-07) (1.26676856e-06,-1.046269265e-07) (-8.328059922e-07,3.050222055e-07) (-4.092802746e-06,1.369814789e-06) (1.671585455e-06,-1.419721722e-06) (1.781827059e-08,-6.178672245e-08) (5.435245616e-07,-4.675798968e-08) (-2.634292994e-07,9.375785702e-08) (-1.60734289e-06,1.092677106e-06) (2.465845742e-07,-1.077890251e-06) +(0,0) (0,0) (0.05210540448,0) (0.1187574051,0) (0.6090226715,0) (0.0002945720367,0) (0.001167828641,0) (0.03500776944,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.001052178223,0) (0.0003500121988,0) (7.195558885e-05,0) (9.157492925e-05,0) (0.0008238230987,0) (2.733320619e-05,0) (3.491359954e-05,0) (0.0003022664318,0) (1.430604767e-15,-9.860761315e-32) (6.245481801e-06,-9.860761315e-32) (2.855486911e-06,-2.465190329e-32) (0.0001251013452,-3.45126646e-31) (0.0003045636627,3.45126646e-31) (5.057437216e-15,2.958228395e-31) (2.588009232e-06,2.958228395e-31) (1.076883833e-06,-1.972152263e-31) (5.23758695e-05,4.930380658e-32) (0.0001225460354,2.958228395e-31) +(1.829886623e-05,0) (6.052376612e-06,0) (7.624904163e-08,0) (1.234084223e-05,0) (1.273119943e-05,0) (3.426263494e-08,0) (4.576252571e-06,0) (4.96973533e-06,0) (4.881179852e-07,-9.564275833e-25) (1.015740713e-06,-3.282873056e-24) (2.932491235e-07,-1.783608196e-24) (5.670935863e-06,3.231174268e-24) (3.357323756e-06,-8.685396432e-24) (2.179567445e-07,9.04728795e-25) (4.248659482e-07,5.014782464e-24) (7.486855157e-08,1.395867284e-24) (2.258687365e-06,-1.240770919e-24) (2.036540451e-06,-3.30872245e-24) +(0,0) (0,0) (-1.099241284e-12,-0.009526678654) (2.191751042e-12,-0.003900938503) (4.271548499e-13,-0.004400530276) (1.838561317e-13,0.0003891496597) (-2.798649041e-13,0.0003758547668) (-4.675917989e-13,0.001585444316) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(4.913914448e-13,-0.02847459545) (2.122391617e-14,-0.0003553210569) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.0001093393109,0.0001456531315) (3.579293875e-05,4.748469771e-05) (-1.939696579e-09,-1.629636271e-08) (7.475565512e-06,-2.866786586e-05) (-8.944884285e-05,5.999236372e-05) (-2.14173115e-09,-2.526699651e-09) (2.725199573e-06,-1.146585957e-05) (-3.315658003e-05,2.393059195e-05) (-1.926292674e-07,-4.544103218e-07) (8.906309439e-07,-6.314723923e-07) (-7.151711759e-09,2.666232592e-08) (1.11405877e-05,9.30218948e-06) (3.367781307e-06,-2.632798887e-05) (-7.780657096e-08,-1.971839515e-07) (3.796910775e-07,-2.865459246e-07) (-2.369849357e-09,-3.160619939e-09) (7.354518612e-06,4.660871765e-06) (-1.546040082e-06,-1.176643449e-05) +(0,0) (0,0) (0.00105697197,0.003009623275) (-0.0008719983776,-0.002955842992) (-0.003599522581,0.0005624841584) (-6.176202333e-05,-0.0001513634052) (5.768800967e-06,0.0001088837687) (0.0005047971676,-2.223796807e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.001196093331,0.0006903761197) (0.0003917081531,0.0002259413986) (2.841899237e-06,1.54874658e-06) (-0.0002571711525,-0.0001485247326) (0.0001083569998,6.277113221e-05) (1.090631473e-06,5.358995892e-07) (-9.701345459e-05,-5.605862791e-05) (4.020060285e-05,2.342138567e-05) (-2.495213373e-15,-3.798040949e-13) (2.564609381e-05,1.483301342e-05) (-7.938644399e-06,-4.592612137e-06) (-3.315355071e-05,-1.896761248e-05) (-0.0001237260184,-7.140117022e-05) (-6.181712518e-15,-1.07231224e-12) (1.064099062e-05,6.168956371e-06) (-3.13785497e-06,-1.820434496e-06) (-1.414077322e-05,-7.996125443e-06) (-5.05099567e-05,-2.913148265e-05) +(-0.003727919612,0.0004512406817) (-4.637284614e-05,5.719664231e-06) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-3.073369271e-12,-0.05475639745) (-2.298249668e-13,-0.001163347614) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-7.745507745e-13,-0.0230047579) (-3.345332529e-14,-0.0003354043926) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.0001315601101,-0.0001730513556) (4.714272022e-05,-6.266113996e-05) (5.795093163e-08,-4.411126475e-08) (1.906917157e-05,1.709188873e-05) (-6.747387277e-05,-0.0001071940222) (1.453425306e-08,2.475386522e-10) (7.939327188e-06,7.332714519e-06) (-2.725106785e-05,-4.451495134e-05) (3.68732518e-08,-8.215921054e-08) (-1.118974817e-08,-2.769128241e-07) (4.59324699e-08,2.844750319e-08) (7.162075505e-06,-1.243111672e-05) (-1.167000609e-05,5.409948601e-06) (1.362845101e-08,-3.419748453e-08) (-4.294076558e-09,-1.256505281e-07) (-2.120868259e-10,-1.155313223e-08) (4.515484695e-06,-7.853450267e-06) (-6.706727958e-06,4.615990553e-06) +(0,0) (0,0) (-3.574796693e-12,0.03098131397) (-3.042140382e-12,-0.00541448473) (-3.236912117e-15,-3.334652474e-05) (1.933870538e-12,-0.004093227976) (5.083089287e-13,0.0006826519903) (1.305409463e-14,4.426198274e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-2.140675696e-12,0.04078133152) (-9.245860848e-14,0.0005088910162) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.0004728364285,0.0006042634813) (0.0001549011422,0.0001969101588) (1.742154656e-07,2.210128037e-07) (6.630159526e-05,-5.281451296e-05) (-0.0002245728385,0.0003510046726) (2.242184337e-09,5.210283013e-08) (2.564595677e-05,-2.104968573e-05) (-8.40459334e-05,0.0001357401889) (1.942550103e-07,3.327717081e-07) (-8.133516325e-08,8.726284924e-07) (1.252513546e-07,-1.365851479e-07) (1.945354614e-05,3.357364785e-05) (-3.63246243e-05,-1.166647945e-05) (8.203792112e-08,1.357449512e-07) (-3.833851731e-08,3.884239297e-07) (-3.851851949e-08,-1.565911284e-09) (1.226202078e-05,2.102554947e-05) (-2.027680178e-05,-1.112687277e-05) +(0,0) (0,0) (-2.024388139e-12,0.01754455146) (4.181890806e-12,0.007443043734) (-2.262288214e-13,-0.002330599262) (6.414121631e-13,-0.001357612187) (-1.452340376e-12,-0.001950473409) (9.467343129e-14,0.0003210053167) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(6.244874297e-13,0.03618709099) (2.697252669e-14,0.0004515616539) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-7.009945539e-05,9.338091768e-05) (-2.294751532e-05,3.044331833e-05) (6.90127523e-08,-8.056615866e-08) (-1.668025493e-05,-2.547758194e-06) (2.594739121e-05,8.036832558e-05) (1.88807935e-08,-4.469530297e-09) (-6.589260373e-06,-9.018969849e-07) (9.98494262e-06,3.043541208e-05) (1.224567805e-07,1.00999336e-07) (1.175784606e-06,6.957931152e-07) (4.804307578e-08,6.828021738e-08) (-5.793391426e-06,9.404544457e-06) (1.281018903e-05,1.168435749e-05) (4.953722157e-08,3.817679525e-08) (5.172684202e-07,3.247875174e-07) (4.380408014e-09,-1.408858421e-08) (-2.978900681e-06,6.8746713e-06) (6.040486638e-06,2.242961964e-06) +(0,0) (0,0) (-1.099241284e-12,0.009526678654) (2.191751042e-12,0.003900938503) (4.271548499e-13,0.004400530276) (1.838561317e-13,-0.0003891496597) (-2.798649041e-13,-0.0003758547668) (-4.675917989e-13,-0.001585444316) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(4.913914448e-13,0.02847459545) (2.122391617e-14,0.0003553210569) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.0001093393109,-0.0001456531315) (3.579293875e-05,-4.748469771e-05) (-1.939696579e-09,1.629636271e-08) (7.475565512e-06,2.866786586e-05) (-8.944884285e-05,-5.999236372e-05) (-2.14173115e-09,2.526699651e-09) (2.725199573e-06,1.146585957e-05) (-3.315658003e-05,-2.393059195e-05) (-1.926292674e-07,4.544103218e-07) (8.906309439e-07,6.314723923e-07) (-7.151711759e-09,-2.666232592e-08) (1.11405877e-05,-9.30218948e-06) (3.367781307e-06,2.632798887e-05) (-7.780657096e-08,1.971839515e-07) (3.796910775e-07,2.865459246e-07) (-2.369849357e-09,3.160619939e-09) (7.354518612e-06,-4.660871765e-06) (-1.546040082e-06,1.176643449e-05) +(0.003323277612,0) (0.001069070815,0) (0.00174180792,0) (0.0001281378722,0) (3.179629858e-05,0) (0.0005140931207,0) (0.0001209653547,0) (7.18021662e-05,0) (0,-4.930380658e-32) (-2.710505431e-20,0) (7.588732639e-10,0) (1.442267609e-08,0) (0.0005156165052,0) (0,0) (4.235164736e-21,-1.972152263e-30) (8.97091465e-10,0) (2.352707791e-08,0) (0.0002128748988,0) +(0.7705943424,0) (0.0003607104378,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.001812676218,0) (0.0005842219029,0) (3.532291747e-09,0) (7.112404456e-05,0) (0.000911161533,0) (3.202095655e-10,0) (3.03507392e-05,0) (0.0003364428726,0) (4.990489648e-07,2.067951531e-25) (1.173508992e-06,-1.447566072e-24) (2.598563963e-09,1.861156378e-24) (3.714438472e-05,3.231174268e-26) (0.0002098412308,-3.30872245e-24) (2.061664726e-07,-2.067951531e-25) (5.325771156e-07,-1.550963649e-24) (2.084413822e-10,2.584939414e-24) (3.356492395e-05,-1.240770919e-24) (6.915611245e-05,-2.481541838e-24) +(0.0001754800089,0.001128796414) (5.155638535e-05,0.0003342646506) (-0.0005502637221,0.0001932512068) (9.709341259e-05,-2.864336795e-05) (-4.064263427e-06,-2.600856887e-05) (-0.0001999613347,8.159182589e-05) (3.504322644e-05,-1.856634867e-06) (-1.007121016e-06,-2.28614337e-05) (-5.29395592e-23,0) (0,0) (-6.269273271e-08,7.510437591e-09) (-6.606213617e-08,-5.528284076e-07) (6.844478161e-06,1.191899221e-05) (4.235164736e-22,2.117582368e-22) (-3.176373552e-22,1.058791184e-22) (-5.808372802e-08,1.310311496e-08) (-1.322629353e-07,-5.877574649e-07) (4.354594467e-06,6.858741574e-06) +(-0.01868331836,0.0323693011) (-0.0002293683958,0.0003976494403) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-0.01868331836,0.0323693011) (-0.0002293683958,0.0003976494403) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-0.01859875469,-0.00289131822) (-0.0003637420256,-5.610292319e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-0.0009663293566,0.0005577580731) (-0.0003697518979,0.0002132767988) (2.479801027e-08,-1.3514143e-08) (-4.23588132e-06,2.446359757e-06) (-0.0001046382544,6.061686563e-05) (1.0527476e-08,-5.172846965e-09) (-1.625594762e-06,9.393400046e-07) (-4.287160338e-05,2.497754476e-05) (-3.520336691e-15,5.410133858e-13) (-5.105327903e-06,2.952784881e-06) (-4.942304714e-06,2.859189473e-06) (-2.434700457e-06,1.392926361e-06) (0.0001315692818,-7.592744685e-05) (-7.129225595e-15,1.249384147e-12) (-2.216852174e-06,1.285187174e-06) (-2.079248817e-06,1.206281444e-06) (-1.077501277e-06,6.092902574e-07) (5.766194007e-05,-3.325636996e-05) +(-0.004446205436,-0.0005656472102) (-6.115864053e-05,-7.486523763e-06) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0,0) (0,0) (0.00343733442,-0.009787470219) (0.001210329744,-0.004102696501) (2.72766147e-05,4.262416284e-06) (-0.0006496370623,0.001592099361) (-1.047767332e-05,0.0001977618165) (-1.409278351e-05,-6.208332571e-07) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.001713045537,-0.0009887570642) (0.0005610046358,-0.0003235933972) (1.284657558e-06,-7.000983605e-07) (0.0002806706319,-0.0001620964487) (0.0001545866867,-8.955195666e-05) (4.934599324e-07,-2.424695971e-07) (0.0001055234845,-6.09760962e-05) (5.735923717e-05,-3.341822563e-05) (7.84876992e-15,-1.192626206e-12) (-1.799053813e-05,1.040524524e-05) (5.289516912e-05,-3.060056395e-05) (1.028606432e-05,-5.884802014e-06) (-0.0001666007481,9.614379037e-05) (1.52743842e-14,-2.640868145e-12) (-7.589476744e-06,4.399886574e-06) (2.17334082e-05,-1.260869171e-05) (4.463940347e-06,-2.524206171e-06) (-6.808603241e-05,3.926843742e-05) +(0.005916905037,-0.01467169451) (7.321154469e-05,-0.0001827410428) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0,0) (0,0) (0.001946543994,-0.005542591742) (-0.001663784768,0.005639788643) (0.001906371311,0.0002979016351) (-0.0002154669122,0.0005280559766) (2.993681038e-05,-0.0005650451033) (-0.0001022064118,-4.50252709e-06) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.001520061568,-0.0008773681615) (0.0004978043885,-0.0002871388275) (-3.777996285e-06,2.058890319e-06) (-9.788133906e-05,5.652966735e-05) (0.0001373008054,-7.953825799e-05) (-1.450444915e-06,7.126998007e-07) (-3.700141877e-05,2.138104216e-05) (5.093868177e-05,-2.967752787e-05) (4.931033643e-15,-7.561819314e-13) (1.709316225e-05,-9.88622701e-06) (-3.690797862e-05,2.135176006e-05) (2.260223605e-05,-1.293105701e-05) (-0.0001529662259,8.827543048e-05) (9.981358323e-15,-1.744829897e-12) (7.059472179e-06,-4.092624228e-06) (-1.557102848e-05,9.033571523e-06) (9.440103444e-06,-5.338056846e-06) (-6.246700819e-05,3.602768017e-05) +(0.002390038242,0.0002892987505) (2.973048971e-05,3.666982572e-06) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0,0) (0,0) (0.00105697197,-0.003009623275) (-0.0008719983776,0.002955842992) (-0.003599522581,-0.0005624841584) (-6.176202333e-05,0.0001513634052) (5.768800967e-06,-0.0001088837687) (0.0005047971676,2.223796807e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.001196093331,-0.0006903761197) (0.0003917081531,-0.0002259413986) (2.841899237e-06,-1.54874658e-06) (-0.0002571711525,0.0001485247326) (0.0001083569998,-6.277113221e-05) (1.090631473e-06,-5.358995892e-07) (-9.701345459e-05,5.605862791e-05) (4.020060285e-05,-2.342138567e-05) (-2.495189656e-15,3.798040983e-13) (2.564609381e-05,-1.483301342e-05) (-7.938644399e-06,4.592612137e-06) (-3.315355071e-05,1.896761248e-05) (-0.0001237260184,7.140117022e-05) (-6.181715906e-15,1.072312241e-12) (1.064099062e-05,-6.168956371e-06) (-3.13785497e-06,1.820434496e-06) (-1.414077322e-05,7.996125443e-06) (-5.05099567e-05,2.913148265e-05) +(-0.003727919612,-0.0004512406817) (-4.637284614e-05,-5.719664231e-06) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.0001754800089,-0.001128796414) (5.155638535e-05,-0.0003342646506) (-0.0005502637221,-0.0001932512068) (9.709341259e-05,2.864336795e-05) (-4.064263427e-06,2.600856887e-05) (-0.0001999613347,-8.159182589e-05) (3.504322644e-05,1.856634867e-06) (-1.007121016e-06,2.28614337e-05) (0,0) (-1.694065895e-21,4.235164736e-22) (-6.269273271e-08,-7.510437591e-09) (-6.606213617e-08,5.528284076e-07) (6.844478161e-06,-1.191899221e-05) (-4.235164736e-22,-2.64697796e-22) (1.058791184e-22,0) (-5.808372802e-08,-1.310311496e-08) (-1.322629353e-07,5.877574649e-07) (4.354594467e-06,-6.858741574e-06) +(-0.01868331836,-0.0323693011) (-0.0002293683958,-0.0003976494403) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-0.01868331836,-0.0323693011) (-0.0002293683958,-0.0003976494403) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.0003926769682,0) (0.0001070003183,0) (0.0001952776704,0) (7.997302531e-05,0) (2.179385408e-05,0) (9.072628978e-05,0) (1.018039269e-05,0) (7.293086984e-06,0) (6.6174449e-24,-7.754818243e-25) (1.058791184e-22,-1.240770919e-24) (5.253558923e-06,5.169878828e-26) (2.149278346e-05,-1.033975766e-25) (3.663755034e-07,0) (0,1.178732373e-23) (2.64697796e-23,2.067951531e-25) (3.952117728e-06,3.877409121e-26) (1.542700385e-05,0) (3.100639357e-07,-4.135903063e-25) +(0.001812676218,0) (0.0005842219029,0) (1.455760061e-07,0) (0.000963108556,0) (1.903497787e-05,0) (5.40245945e-08,0) (0.0003595785109,0) (7.161396531e-06,0) (1.008356953e-10,8.271806126e-25) (0.0001405400645,-1.861156378e-24) (2.945702913e-05,8.271806126e-25) (1.166197091e-05,4.135903063e-24) (6.700160668e-05,-4.549493369e-24) (2.273663116e-10,0) (5.845678685e-05,3.101927297e-24) (1.222055263e-05,-4.135903063e-25) (5.038570089e-06,7.858215819e-24) (2.77438515e-05,-4.135903063e-25) +(0.7705943424,0) (0.0003607104378,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.9022006019,0) (0.001265938283,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.0006867671573,0) (0.0003118737213,0) (5.478741969e-09,0) (2.484389374e-08,0) (0.0007682472119,0) (2.546730763e-09,0) (9.802916105e-09,0) (0.0003437670443,0) (2.902829344e-15,3.944304526e-31) (2.474974783e-07,0) (1.106742305e-06,0) (6.746724226e-07,5.916456789e-31) (0.000344401489,0) (6.865622166e-15,0) (1.123246758e-07,0) (4.728420013e-07,0) (3.041028689e-07,-3.944304526e-31) (0.0001597069346,0) +(2.606909815e-05,0) (1.052486136e-05,0) (1.50160704e-06,0) (9.220031973e-06,0) (1.760750571e-05,0) (6.598984231e-07,0) (3.84839452e-06,0) (8.0970703e-06,0) (1.625045466e-08,-1.292469707e-25) (6.544979468e-08,1.033975766e-25) (1.123332837e-06,5.169878828e-26) (5.541294868e-06,-1.80945759e-25) (7.884846338e-07,-4.135903063e-24) (6.573341473e-09,-7.754818243e-26) (2.967925929e-08,1.783608196e-24) (6.405630384e-07,-1.550963649e-25) (2.445001313e-06,2.067951531e-25) (9.585207486e-07,4.135903063e-25) +(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-0.001217455938,-1.048968745e-13) (-0.0004731891963,-1.331680902e-13) (2.838254859e-07,-2.667032522e-15) (-1.646163048e-06,-2.058752428e-14) (-0.001134965332,9.353993365e-14) (1.193742549e-07,-2.806929651e-15) (-6.363442288e-07,-2.174782716e-14) (-0.0004599365052,1.036925755e-13) (-6.39905609e-15,-4.744497745e-19) (8.721502128e-07,9.270421917e-16) (-1.184494378e-05,2.305635264e-14) (-2.850339931e-06,1.637935329e-15) (-0.0004361013826,7.942071128e-14) (-1.451212062e-14,-1.126939084e-18) (3.845477493e-07,8.539000264e-16) (-4.942394664e-06,2.315955851e-14) (-1.259856574e-06,1.799159549e-15) (-0.0001885786623,8.350119887e-14) +(-2.336997728e-05,8.899656399e-05) (-8.620275597e-06,3.25033392e-05) (9.817825478e-08,5.801548646e-06) (5.084310361e-06,-3.009317751e-05) (-2.466390723e-05,-5.241278162e-05) (1.420505313e-07,2.363204515e-06) (1.623034791e-06,-1.170234502e-05) (-1.115234346e-05,-2.211479671e-05) (-4.043179797e-08,5.656802291e-08) (-2.05138522e-07,-2.751341749e-08) (7.187037426e-07,-3.7854683e-06) (-7.485119781e-06,1.298409725e-05) (1.719364356e-06,1.585304449e-06) (-1.709340046e-08,2.258118837e-08) (-9.133145593e-08,-1.217697277e-08) (1.259848231e-07,-2.133345284e-06) (-3.269905813e-06,5.697606153e-06) (1.2237451e-06,2.432502756e-06) +(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-0.001080302854,-1.772989558e-14) (-0.0004198818397,-1.679889e-14) (-8.346906342e-07,8.241968752e-15) (5.740844431e-07,7.132640533e-15) (-0.001008053523,1.105114258e-14) (-3.508811352e-07,8.716645911e-15) (2.231317455e-07,7.573389404e-15) (-0.000408453118,9.53184962e-15) (-4.05730137e-15,-5.694584659e-20) (-8.286469788e-07,-3.094091175e-15) (8.264893354e-06,-1.417463855e-14) (-6.263236738e-06,1.984783545e-15) (-0.0004004110629,7.138747102e-15) (-9.588196122e-15,-1.375244239e-19) (-3.576931874e-07,-3.070677107e-15) (3.541007804e-06,-1.454441084e-14) (-2.664277624e-06,2.070054798e-15) (-0.0001730155867,5.991069674e-15) +(-1.400249322e-05,8.517683491e-08) (-5.116927849e-06,-4.684231583e-09) (2.138336521e-06,-4.599405375e-07) (-5.084421801e-06,3.325365207e-06) (-1.137644059e-05,-2.898889879e-06) (8.535405516e-07,-2.174669906e-07) (-1.941555583e-06,1.356036493e-06) (-4.835683466e-06,-1.14408203e-06) (-7.579709164e-09,2.762279321e-08) (-1.753976932e-07,2.708152116e-07) (1.596704523e-06,6.809813049e-07) (-4.264485678e-06,-1.255174248e-07) (-4.111833037e-07,-9.800694867e-07) (-3.057891808e-09,1.074053857e-08) (-8.079752589e-08,1.194200536e-07) (7.764209185e-07,2.571247395e-07) (-2.00927223e-06,2.278516912e-07) (-4.360917395e-07,-6.207081838e-07) +(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-0.0008500596729,-1.395115192e-14) (-0.0003303931097,-1.321857004e-14) (6.278742745e-07,-6.267371997e-15) (1.508336107e-06,1.829707832e-14) (-0.0007955499976,8.763968249e-15) (2.638376718e-07,-6.633341259e-15) (5.85025715e-07,1.938064798e-14) (-0.0003223495585,7.571202097e-15) (2.037832522e-15,1.279206619e-19) (-1.243278326e-06,-5.349347949e-15) (1.777719935e-06,-3.844960139e-15) (9.187079385e-06,-3.340764983e-15) (-0.0003238706207,6.12567423e-15) (5.892571045e-15,3.456051733e-19) (-5.39163517e-07,-5.385811883e-15) (7.135796431e-07,-3.765088724e-15) (3.990946276e-06,-3.584746342e-15) (-0.0001398980045,5.217450273e-15) +(2.184072547e-05,-1.328566161e-07) (7.98125124e-06,7.306342835e-09) (-2.353317487e-07,2.431358997e-07) (8.89348769e-06,5.889722967e-06) (1.368174814e-05,-6.080660701e-06) (-9.52595112e-08,1.163421003e-07) (3.483016518e-06,2.340901803e-06) (5.851874148e-06,-2.448645606e-06) (-8.904308778e-08,1.862177347e-09) (-1.575009145e-07,2.041408412e-07) (-4.182973373e-07,-3.929932664e-07) (5.261261828e-06,1.934800189e-06) (4.914717562e-07,-1.551016991e-06) (-3.785085941e-08,1.286475674e-10) (-7.066595277e-08,8.72698674e-08) (-1.727701374e-07,-1.345678508e-07) (2.079943364e-06,1.093768337e-06) (9.353131396e-07,-1.037909249e-06) +(-3.073369271e-12,0.05475639745) (-2.298249668e-13,0.001163347614) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-7.745507745e-13,0.0230047579) (-3.345332529e-14,0.0003354043926) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.0001315601101,0.0001730513556) (4.714272022e-05,6.266113996e-05) (5.795093163e-08,4.411126475e-08) (1.906917157e-05,-1.709188873e-05) (-6.747387277e-05,0.0001071940222) (1.453425306e-08,-2.475386522e-10) (7.939327188e-06,-7.332714519e-06) (-2.725106785e-05,4.451495134e-05) (3.68732518e-08,8.215921054e-08) (-1.118974817e-08,2.769128241e-07) (4.59324699e-08,-2.844750319e-08) (7.162075505e-06,1.243111672e-05) (-1.167000609e-05,-5.409948601e-06) (1.362845101e-08,3.419748453e-08) (-4.294076558e-09,1.256505281e-07) (-2.120868259e-10,1.155313223e-08) (4.515484695e-06,7.853450267e-06) (-6.706727958e-06,-4.615990553e-06) +(-0.01859875469,0.00289131822) (-0.0003637420256,5.610292319e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-0.0009663293566,-0.0005577580731) (-0.0003697518979,-0.0002132767988) (2.479801027e-08,1.3514143e-08) (-4.23588132e-06,-2.446359757e-06) (-0.0001046382544,-6.061686563e-05) (1.0527476e-08,5.172846965e-09) (-1.625594762e-06,-9.393400046e-07) (-4.287160338e-05,-2.497754476e-05) (-3.520336691e-15,-5.410133841e-13) (-5.105327903e-06,-2.952784881e-06) (-4.942304714e-06,-2.859189473e-06) (-2.434700457e-06,-1.392926361e-06) (0.0001315692818,7.592744685e-05) (-7.129223054e-15,-1.249384147e-12) (-2.216852174e-06,-1.285187174e-06) (-2.079248817e-06,-1.206281444e-06) (-1.077501277e-06,-6.092902574e-07) (5.766194007e-05,3.325636996e-05) +(-0.004446205436,0.0005656472102) (-6.115864053e-05,7.486523763e-06) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-0.001217455938,1.048968745e-13) (-0.0004731891963,1.331680902e-13) (2.838254859e-07,2.667032522e-15) (-1.646163048e-06,2.058752428e-14) (-0.001134965332,-9.353993365e-14) (1.193742549e-07,2.806929651e-15) (-6.363442288e-07,2.174782716e-14) (-0.0004599365052,-1.036925755e-13) (-6.399069642e-15,4.744497745e-19) (8.721502128e-07,-9.270421917e-16) (-1.184494378e-05,-2.305635264e-14) (-2.850339931e-06,-1.637935329e-15) (-0.0004361013826,-7.942071128e-14) (-1.451212062e-14,1.126939084e-18) (3.845477493e-07,-8.539000264e-16) (-4.942394664e-06,-2.315955851e-14) (-1.259856574e-06,-1.799159549e-15) (-0.0001885786623,-8.350119887e-14) +(-2.336997728e-05,-8.899656399e-05) (-8.620275597e-06,-3.25033392e-05) (9.817825478e-08,-5.801548646e-06) (5.084310361e-06,3.009317751e-05) (-2.466390723e-05,5.241278162e-05) (1.420505313e-07,-2.363204515e-06) (1.623034791e-06,1.170234502e-05) (-1.115234346e-05,2.211479671e-05) (-4.043179797e-08,-5.656802291e-08) (-2.05138522e-07,2.751341749e-08) (7.187037426e-07,3.7854683e-06) (-7.485119781e-06,-1.298409725e-05) (1.719364356e-06,-1.585304449e-06) (-1.709340046e-08,-2.258118837e-08) (-9.133145593e-08,1.217697277e-08) (1.259848231e-07,2.133345284e-06) (-3.269905813e-06,-5.697606153e-06) (1.2237451e-06,-2.432502756e-06) +(0,0) (0,0) (0.5510606563,0) (0.2287898526,0) (3.497233206e-05,0) (0.03259042882,0) (0.003852456277,0) (2.728501408e-05,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.002158226331,0) (0.0007179444763,0) (1.470354086e-05,0) (0.0001090752041,0) (0.001676734109,0) (5.595492446e-06,0) (4.130750209e-05,0) (0.0006153632011,0) (1.410625631e-14,3.155443621e-30) (3.07334846e-06,3.944304526e-31) (0.0001267708775,0) (1.204204804e-05,1.57772181e-30) (0.0005522171709,0) (3.067480352e-14,0) (1.316513672e-06,0) (5.166052285e-05,0) (5.219413394e-06,0) (0.0002226698044,0) +(0.0003247731928,0) (0.0001074385849,0) (2.242104943e-05,0) (0.000101024546,0) (0.0001905669123,0) (8.493601038e-06,0) (3.626944176e-05,0) (7.576061162e-05,0) (2.975099223e-07,-2.067951531e-24) (6.545291938e-07,4.301339185e-23) (1.321630137e-05,8.271806126e-25) (4.053453297e-05,2.067951531e-25) (6.936601868e-06,-1.98523347e-23) (1.220223247e-07,-4.135903063e-25) (2.860486991e-07,-1.240770919e-24) (7.129718703e-06,1.447566072e-24) (1.765029723e-05,3.30872245e-24) (7.735483806e-06,-1.32348898e-23) +(0,0) (0,0) (0.3120626857,0) (-0.3145069131,0) (0.002444227455,0) (0.01080935722,0) (-0.01100723887,0) (0.0001978816593,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.001915090305,-1.335751503e-13) (0.0006370640959,-1.537988172e-13) (-4.324103528e-05,2.064957961e-14) (-3.803898884e-05,3.11900116e-15) (0.001489241722,1.064118355e-13) (-1.644703661e-05,2.184936467e-14) (-1.448432252e-05,3.401844515e-15) (0.0005464819933,1.104512803e-13) (8.944071612e-15,-5.37611904e-19) (-2.920048495e-06,-7.799358519e-15) (-8.845527695e-05,-2.047495515e-14) (2.646077292e-05,6.820300902e-15) (0.0005070239929,8.329729939e-14) (2.026694378e-14,-1.283138686e-18) (-1.22457607e-06,-7.793369903e-15) (-3.701248625e-05,-2.141087058e-14) (1.103773763e-05,7.186674661e-15) (0.0002042932449,8.338536484e-14) +(1.284349739e-05,4.772636154e-05) (4.176499206e-06,1.580615794e-05) (-1.637198807e-06,-8.291662982e-06) (-1.365739124e-05,-1.476125239e-05) (2.456488526e-05,-2.98039344e-05) (-5.950508007e-07,-3.103480952e-06) (-4.942325707e-06,-5.332056991e-06) (9.785063172e-06,-1.163148615e-05) (1.150138939e-07,-4.234158657e-08) (4.359031483e-07,-9.22545632e-07) (-1.273242959e-06,5.816351088e-06) (5.466313628e-06,1.016188654e-05) (-2.867123006e-06,-1.31041973e-06) (4.484840704e-08,-1.742515531e-08) (1.996404585e-07,-4.006392654e-07) (-7.036287942e-07,2.636380213e-06) (3.2181333e-06,4.377497957e-06) (-2.131972104e-06,3.142402084e-07) +(0,0) (0,0) (0.1694498108,0) (-0.164834733,0) (-0.0046150778,0) (0.003098423631,0) (-0.002121086697,0) (-0.0009773369338,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.001506930239,-1.051064969e-13) (0.0005012876667,-1.210199267e-13) (3.252694177e-05,-1.903334618e-14) (-9.99427541e-05,3.755176299e-14) (0.001175300936,8.391686018e-14) (1.236700242e-05,-2.013420008e-14) (-3.797622396e-05,3.981209702e-14) (0.000431281392,8.71025428e-14) (-4.492296834e-15,5.108271321e-20) (-4.381157595e-06,-1.419353245e-14) (-1.902610263e-05,4.116223754e-15) (-3.881335348e-05,-8.189939113e-15) (0.0004101039919,6.692950174e-14) (-1.245537216e-14,2.367029216e-19) (-1.845846564e-06,-1.433977071e-14) (-7.458711811e-06,4.403933919e-15) (-1.653394432e-05,-8.760466044e-15) (0.0001651886852,6.698363681e-14) +(-2.003295385e-05,-7.44423399e-05) (-6.514395052e-06,-2.465403487e-05) (9.239836074e-07,9.251150332e-07) (-1.431917237e-05,3.227521164e-05) (-1.064377077e-06,4.92444156e-05) (3.961344705e-07,3.661838786e-07) (-5.649364548e-06,1.15785494e-05) (-1.372201324e-06,1.935529002e-05) (2.280251171e-07,3.053268573e-07) (4.078376831e-07,-7.060455894e-07) (1.056705235e-06,-1.661036676e-06) (-2.573322934e-06,-1.49414439e-05) (-2.046729951e-06,-4.370276278e-06) (9.88697933e-08,1.296933022e-07) (1.816535076e-07,-2.975472314e-07) (4.141876113e-07,-6.018640503e-07) (-2.328660063e-07,-6.309697042e-06) (-1.439856402e-06,-3.698707777e-06) +(0,0) (0,0) (-3.574796693e-12,-0.03098131397) (-3.042140382e-12,0.00541448473) (-3.236912117e-15,3.334652474e-05) (1.933870538e-12,0.004093227976) (5.083089287e-13,-0.0006826519903) (1.305409463e-14,-4.426198274e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-2.140675696e-12,-0.04078133152) (-9.245860848e-14,-0.0005088910162) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.0004728364285,-0.0006042634813) (0.0001549011422,-0.0001969101588) (1.742154656e-07,-2.210128037e-07) (6.630159526e-05,5.281451296e-05) (-0.0002245728385,-0.0003510046726) (2.242184337e-09,-5.210283013e-08) (2.564595677e-05,2.104968573e-05) (-8.40459334e-05,-0.0001357401889) (1.942550103e-07,-3.327717081e-07) (-8.133516325e-08,-8.726284924e-07) (1.252513546e-07,1.365851479e-07) (1.945354614e-05,-3.357364785e-05) (-3.63246243e-05,1.166647945e-05) (8.203792112e-08,-1.357449512e-07) (-3.833851731e-08,-3.884239297e-07) (-3.851851949e-08,1.565911284e-09) (1.226202078e-05,-2.102554947e-05) (-2.027680178e-05,1.112687277e-05) +(0,0) (0,0) (0.00343733442,0.009787470219) (0.001210329744,0.004102696501) (2.72766147e-05,-4.262416284e-06) (-0.0006496370623,-0.001592099361) (-1.047767332e-05,-0.0001977618165) (-1.409278351e-05,6.208332571e-07) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.001713045537,0.0009887570642) (0.0005610046358,0.0003235933972) (1.284657558e-06,7.000983605e-07) (0.0002806706319,0.0001620964487) (0.0001545866867,8.955195666e-05) (4.934599324e-07,2.424695971e-07) (0.0001055234845,6.09760962e-05) (5.735923717e-05,3.341822563e-05) (7.848773308e-15,1.192626205e-12) (-1.799053813e-05,-1.040524524e-05) (5.289516912e-05,3.060056395e-05) (1.028606432e-05,5.884802014e-06) (-0.0001666007481,-9.614379037e-05) (1.527438251e-14,2.640868147e-12) (-7.589476744e-06,-4.399886574e-06) (2.17334082e-05,1.260869171e-05) (4.463940347e-06,2.524206171e-06) (-6.808603241e-05,-3.926843742e-05) +(0.005916905037,0.01467169451) (7.321154469e-05,0.0001827410428) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-0.001080302854,1.772989558e-14) (-0.0004198818397,1.679889e-14) (-8.346906342e-07,-8.241968752e-15) (5.740844431e-07,-7.132640533e-15) (-0.001008053523,-1.105114258e-14) (-3.508811352e-07,-8.716645911e-15) (2.231317455e-07,-7.573389404e-15) (-0.000408453118,-9.53184962e-15) (-4.057328475e-15,5.694584659e-20) (-8.286469788e-07,3.094091175e-15) (8.264893354e-06,1.417463855e-14) (-6.263236738e-06,-1.984783545e-15) (-0.0004004110629,-7.138747102e-15) (-9.588196122e-15,1.375244239e-19) (-3.576931874e-07,3.070677107e-15) (3.541007804e-06,1.454441084e-14) (-2.664277624e-06,-2.070054798e-15) (-0.0001730155867,-5.991069674e-15) +(-1.400249322e-05,-8.517683491e-08) (-5.116927849e-06,4.684231583e-09) (2.138336521e-06,4.599405375e-07) (-5.084421801e-06,-3.325365207e-06) (-1.137644059e-05,2.898889879e-06) (8.535405516e-07,2.174669906e-07) (-1.941555583e-06,-1.356036493e-06) (-4.835683466e-06,1.14408203e-06) (-7.579709164e-09,-2.762279321e-08) (-1.753976932e-07,-2.708152116e-07) (1.596704523e-06,-6.809813049e-07) (-4.264485678e-06,1.255174248e-07) (-4.111833037e-07,9.800694867e-07) (-3.057891808e-09,-1.074053857e-08) (-8.079752589e-08,-1.194200536e-07) (7.764209185e-07,-2.571247395e-07) (-2.00927223e-06,-2.278516912e-07) (-4.360917395e-07,6.207081838e-07) +(0,0) (0,0) (0.3120626857,0) (-0.3145069131,0) (0.002444227455,0) (0.01080935722,0) (-0.01100723887,0) (0.0001978816593,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.001915090305,1.335751503e-13) (0.0006370640959,1.537988172e-13) (-4.324103528e-05,-2.064957961e-14) (-3.803898884e-05,-3.11900116e-15) (0.001489241722,-1.064118355e-13) (-1.644703661e-05,-2.184936467e-14) (-1.448432252e-05,-3.401844515e-15) (0.0005464819933,-1.104512803e-13) (8.944071612e-15,5.37611904e-19) (-2.920048495e-06,7.799358519e-15) (-8.845527695e-05,2.047495515e-14) (2.646077292e-05,-6.820300902e-15) (0.0005070239929,-8.329729939e-14) (2.026694378e-14,1.283138686e-18) (-1.22457607e-06,7.793369903e-15) (-3.701248625e-05,2.141087058e-14) (1.103773763e-05,-7.186674661e-15) (0.0002042932449,-8.338536484e-14) +(1.284349739e-05,-4.772636154e-05) (4.176499206e-06,-1.580615794e-05) (-1.637198807e-06,8.291662982e-06) (-1.365739124e-05,1.476125239e-05) (2.456488526e-05,2.98039344e-05) (-5.950508007e-07,3.103480952e-06) (-4.942325707e-06,5.332056991e-06) (9.785063172e-06,1.163148615e-05) (1.150138939e-07,4.234158657e-08) (4.359031483e-07,9.22545632e-07) (-1.273242959e-06,-5.816351088e-06) (5.466313628e-06,-1.016188654e-05) (-2.867123006e-06,1.31041973e-06) (4.484840704e-08,1.742515531e-08) (1.996404585e-07,4.006392654e-07) (-7.036287942e-07,-2.636380213e-06) (3.2181333e-06,-4.377497957e-06) (-2.131972104e-06,-3.142402084e-07) +(0,0) (0,0) (0.1767194204,0) (0.4323382235,0) (0.1708278373,0) (0.003585169254,0) (0.0314498852,0) (0.001435115663,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.001699344885,0) (0.0005652953336,0) (0.0001271657725,0) (1.32657526e-05,0) (0.001322714732,0) (4.834337921e-05,0) (5.078874012e-06,0) (0.0004853110627,0) (5.670946568e-15,0) (2.774395199e-06,1.972152263e-31) (6.172029553e-05,0) (5.814397199e-05,0) (0.0004655294022,-4.930380658e-32) (1.339042538e-14,0) (1.139058852e-06,0) (2.651781405e-05,0) (2.334202003e-05,0) (0.0001874332715,-2.958228395e-31) +(7.521436699e-06,0) (2.487726124e-06,0) (3.185938962e-06,0) (4.003174709e-06,0) (7.827739219e-06,0) (1.175670888e-06,0) (1.457353976e-06,0) (3.049591687e-06,0) (5.048909171e-08,2.568783543e-24) (1.590612012e-06,1.609124785e-23) (2.682375849e-06,-5.764414894e-24) (3.284718312e-06,6.203854594e-25) (1.43263148e-06,1.550963649e-25) (1.897206644e-08,-6.720842477e-25) (7.004686066e-07,5.11818004e-24) (1.044304049e-06,-3.231174268e-25) (1.672429076e-06,0) (6.003570143e-07,8.271806126e-25) +(0,0) (0,0) (0.09595851645,0) (0.2265907446,0) (-0.3225492611,0) (0.001027662692,0) (0.006060369352,0) (-0.007088032044,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.001337166288,-3.155443621e-30) (0.0004448148634,6.310887242e-30) (-9.565713795e-05,1.029370554e-14) (3.485412968e-05,-1.023797789e-14) (0.0010438788,-5.572765633e-17) (-3.635078475e-05,1.089033375e-14) (1.331622219e-05,-1.083246436e-14) (0.0003830055394,-5.786938279e-17) (-2.848348185e-15,-1.388191666e-19) (4.162623539e-06,2.367315108e-15) (1.327559777e-05,-5.945058718e-15) (-8.528709815e-05,3.98658355e-15) (0.0003765412857,-4.087011207e-16) (-8.229297777e-15,-3.646221352e-19) (1.716943454e-06,2.411501735e-15) (5.343838064e-06,-6.246511632e-15) (-3.496510539e-05,4.239624517e-15) (0.0001515559446,-4.042499974e-16) +(-1.173174173e-05,0) (-3.880290635e-06,0) (-4.095921988e-07,2.741514604e-07) (-2.780116483e-06,-6.455501517e-06) (-7.838840513e-06,6.181350057e-06) (-1.61552776e-07,1.190893908e-07) (-9.323685179e-07,-2.408299986e-06) (-3.148837626e-06,2.289210596e-06) (4.469778006e-08,1.504883457e-07) (1.26676856e-06,1.046269265e-07) (-8.328059922e-07,-3.050222055e-07) (-4.092802746e-06,-1.369814789e-06) (1.671585455e-06,1.419721722e-06) (1.781827059e-08,6.178672245e-08) (5.435245616e-07,4.675798968e-08) (-2.634292994e-07,-9.375785702e-08) (-1.60734289e-06,-1.092677106e-06) (2.465845742e-07,1.077890251e-06) +(0,0) (0,0) (-2.024388139e-12,-0.01754455146) (4.181890806e-12,-0.007443043734) (-2.262288214e-13,0.002330599262) (6.414121631e-13,0.001357612187) (-1.452340376e-12,0.001950473409) (9.467343129e-14,-0.0003210053167) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(6.244874297e-13,-0.03618709099) (2.697252669e-14,-0.0004515616539) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-7.009945539e-05,-9.338091768e-05) (-2.294751532e-05,-3.044331833e-05) (6.90127523e-08,8.056615866e-08) (-1.668025493e-05,2.547758194e-06) (2.594739121e-05,-8.036832558e-05) (1.88807935e-08,4.469530297e-09) (-6.589260373e-06,9.018969849e-07) (9.98494262e-06,-3.043541208e-05) (1.224567805e-07,-1.00999336e-07) (1.175784606e-06,-6.957931152e-07) (4.804307578e-08,-6.828021738e-08) (-5.793391426e-06,-9.404544457e-06) (1.281018903e-05,-1.168435749e-05) (4.953722157e-08,-3.817679525e-08) (5.172684202e-07,-3.247875174e-07) (4.380408014e-09,1.408858421e-08) (-2.978900681e-06,-6.8746713e-06) (6.040486638e-06,-2.242961964e-06) +(0,0) (0,0) (0.001946543994,0.005542591742) (-0.001663784768,-0.005639788643) (0.001906371311,-0.0002979016351) (-0.0002154669122,-0.0005280559766) (2.993681038e-05,0.0005650451033) (-0.0001022064118,4.50252709e-06) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.001520061568,0.0008773681615) (0.0004978043885,0.0002871388275) (-3.777996285e-06,-2.058890319e-06) (-9.788133906e-05,-5.652966735e-05) (0.0001373008054,7.953825799e-05) (-1.450444915e-06,-7.126998007e-07) (-3.700141877e-05,-2.138104216e-05) (5.093868177e-05,2.967752787e-05) (4.931041266e-15,7.561819314e-13) (1.709316225e-05,9.88622701e-06) (-3.690797862e-05,-2.135176006e-05) (2.260223605e-05,1.293105701e-05) (-0.0001529662259,-8.827543048e-05) (9.981358747e-15,1.744829897e-12) (7.059472179e-06,4.092624228e-06) (-1.557102848e-05,-9.033571523e-06) (9.440103444e-06,5.338056846e-06) (-6.246700819e-05,-3.602768017e-05) +(0.002390038242,-0.0002892987505) (2.973048971e-05,-3.666982572e-06) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-0.0008500596729,1.395115192e-14) (-0.0003303931097,1.321857004e-14) (6.278742745e-07,6.267371997e-15) (1.508336107e-06,-1.829707832e-14) (-0.0007955499976,-8.763968249e-15) (2.638376718e-07,6.633341259e-15) (5.85025715e-07,-1.938064798e-14) (-0.0003223495585,-7.571202097e-15) (2.037825746e-15,-1.279206619e-19) (-1.243278326e-06,5.349347949e-15) (1.777719935e-06,3.844960139e-15) (9.187079385e-06,3.340764983e-15) (-0.0003238706207,-6.12567423e-15) (5.892564269e-15,-3.456051733e-19) (-5.39163517e-07,5.385811883e-15) (7.135796431e-07,3.765088724e-15) (3.990946276e-06,3.584746342e-15) (-0.0001398980045,-5.217450273e-15) +(2.184072547e-05,1.328566161e-07) (7.98125124e-06,-7.306342835e-09) (-2.353317487e-07,-2.431358997e-07) (8.89348769e-06,-5.889722967e-06) (1.368174814e-05,6.080660701e-06) (-9.52595112e-08,-1.163421003e-07) (3.483016518e-06,-2.340901803e-06) (5.851874148e-06,2.448645606e-06) (-8.904308778e-08,-1.862177347e-09) (-1.575009145e-07,-2.041408412e-07) (-4.182973373e-07,3.929932664e-07) (5.261261828e-06,-1.934800189e-06) (4.914717562e-07,1.551016991e-06) (-3.785085941e-08,-1.286475674e-10) (-7.066595277e-08,-8.72698674e-08) (-1.727701374e-07,1.345678508e-07) (2.079943364e-06,-1.093768337e-06) (9.353131396e-07,1.037909249e-06) +(0,0) (0,0) (0.1694498108,0) (-0.164834733,0) (-0.0046150778,0) (0.003098423631,0) (-0.002121086697,0) (-0.0009773369338,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.001506930239,1.051064969e-13) (0.0005012876667,1.210199267e-13) (3.252694177e-05,1.903334618e-14) (-9.99427541e-05,-3.755176299e-14) (0.001175300936,-8.391686018e-14) (1.236700242e-05,2.013420008e-14) (-3.797622396e-05,-3.981209702e-14) (0.000431281392,-8.71025428e-14) (-4.492290058e-15,-5.108271322e-20) (-4.381157595e-06,1.419353245e-14) (-1.902610263e-05,-4.116223754e-15) (-3.881335348e-05,8.189939113e-15) (0.0004101039919,-6.692950174e-14) (-1.245536538e-14,-2.367029216e-19) (-1.845846564e-06,1.433977071e-14) (-7.458711811e-06,-4.403933919e-15) (-1.653394432e-05,8.760466044e-15) (0.0001651886852,-6.698363681e-14) +(-2.003295385e-05,7.44423399e-05) (-6.514395052e-06,2.465403487e-05) (9.239836074e-07,-9.251150332e-07) (-1.431917237e-05,-3.227521164e-05) (-1.064377077e-06,-4.92444156e-05) (3.961344705e-07,-3.661838786e-07) (-5.649364548e-06,-1.15785494e-05) (-1.372201324e-06,-1.935529002e-05) (2.280251171e-07,-3.053268573e-07) (4.078376831e-07,7.060455894e-07) (1.056705235e-06,1.661036676e-06) (-2.573322934e-06,1.49414439e-05) (-2.046729951e-06,4.370276278e-06) (9.88697933e-08,-1.296933022e-07) (1.816535076e-07,2.975472314e-07) (4.141876113e-07,6.018640503e-07) (-2.328660063e-07,6.309697042e-06) (-1.439856402e-06,3.698707777e-06) +(0,0) (0,0) (0.09595851645,0) (0.2265907446,0) (-0.3225492611,0) (0.001027662692,0) (0.006060369352,0) (-0.007088032044,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.001337166288,3.155443621e-30) (0.0004448148634,-6.310887242e-30) (-9.565713795e-05,-1.029370554e-14) (3.485412968e-05,1.023797789e-14) (0.0010438788,5.572765633e-17) (-3.635078475e-05,-1.089033375e-14) (1.331622219e-05,1.083246436e-14) (0.0003830055394,5.786938279e-17) (-2.848334632e-15,1.388191666e-19) (4.162623539e-06,-2.367315108e-15) (1.327559777e-05,5.945058718e-15) (-8.528709815e-05,-3.98658355e-15) (0.0003765412857,4.087011207e-16) (-8.229297777e-15,3.646221352e-19) (1.716943454e-06,-2.411501735e-15) (5.343838064e-06,6.246511632e-15) (-3.496510539e-05,-4.239624517e-15) (0.0001515559446,4.042499974e-16) +(-1.173174173e-05,0) (-3.880290635e-06,0) (-4.095921988e-07,-2.741514604e-07) (-2.780116483e-06,6.455501517e-06) (-7.838840513e-06,-6.181350057e-06) (-1.61552776e-07,-1.190893908e-07) (-9.323685179e-07,2.408299986e-06) (-3.148837626e-06,-2.289210596e-06) (4.469778006e-08,-1.504883457e-07) (1.26676856e-06,-1.046269265e-07) (-8.328059922e-07,3.050222055e-07) (-4.092802746e-06,1.369814789e-06) (1.671585455e-06,-1.419721722e-06) (1.781827059e-08,-6.178672245e-08) (5.435245616e-07,-4.675798968e-08) (-2.634292994e-07,9.375785702e-08) (-1.60734289e-06,1.092677106e-06) (2.465845742e-07,-1.077890251e-06) +(0,0) (0,0) (0.05210540448,0) (0.1187574051,0) (0.6090226715,0) (0.0002945720367,0) (0.001167828641,0) (0.03500776944,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.001052178223,0) (0.0003500121988,0) (7.195558885e-05,0) (9.157492925e-05,0) (0.0008238230987,0) (2.733320619e-05,0) (3.491359954e-05,0) (0.0003022664318,0) (1.430604767e-15,-9.860761315e-32) (6.245481801e-06,-9.860761315e-32) (2.855486911e-06,-2.465190329e-32) (0.0001251013452,-3.45126646e-31) (0.0003045636627,3.45126646e-31) (5.057437216e-15,2.958228395e-31) (2.588009232e-06,2.958228395e-31) (1.076883833e-06,-1.972152263e-31) (5.23758695e-05,4.930380658e-32) (0.0001225460354,2.958228395e-31) +(1.829886623e-05,0) (6.052376612e-06,0) (7.624904163e-08,0) (1.234084223e-05,0) (1.273119943e-05,0) (3.426263494e-08,0) (4.576252571e-06,0) (4.96973533e-06,0) (4.881179852e-07,-9.564275833e-25) (1.015740713e-06,-3.282873056e-24) (2.932491235e-07,-1.783608196e-24) (5.670935863e-06,3.231174268e-24) (3.357323756e-06,-8.685396432e-24) (2.179567445e-07,9.04728795e-25) (4.248659482e-07,5.014782464e-24) (7.486855157e-08,1.395867284e-24) (2.258687365e-06,-1.240770919e-24) (2.036540451e-06,-3.30872245e-24) +(0,0) (0,0) (-1.099241284e-12,-0.009526678654) (2.191751042e-12,-0.003900938503) (4.271548499e-13,-0.004400530276) (1.838561317e-13,0.0003891496597) (-2.798649041e-13,0.0003758547668) (-4.675917989e-13,0.001585444316) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(4.913914448e-13,-0.02847459545) (2.122391617e-14,-0.0003553210569) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.0001093393109,0.0001456531315) (3.579293875e-05,4.748469771e-05) (-1.939696579e-09,-1.629636271e-08) (7.475565512e-06,-2.866786586e-05) (-8.944884285e-05,5.999236372e-05) (-2.14173115e-09,-2.526699651e-09) (2.725199573e-06,-1.146585957e-05) (-3.315658003e-05,2.393059195e-05) (-1.926292674e-07,-4.544103218e-07) (8.906309439e-07,-6.314723923e-07) (-7.151711759e-09,2.666232592e-08) (1.11405877e-05,9.30218948e-06) (3.367781307e-06,-2.632798887e-05) (-7.780657096e-08,-1.971839515e-07) (3.796910775e-07,-2.865459246e-07) (-2.369849357e-09,-3.160619939e-09) (7.354518612e-06,4.660871765e-06) (-1.546040082e-06,-1.176643449e-05) +(0,0) (0,0) (0.00105697197,0.003009623275) (-0.0008719983776,-0.002955842992) (-0.003599522581,0.0005624841584) (-6.176202333e-05,-0.0001513634052) (5.768800967e-06,0.0001088837687) (0.0005047971676,-2.223796807e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.001196093331,0.0006903761197) (0.0003917081531,0.0002259413986) (2.841899237e-06,1.54874658e-06) (-0.0002571711525,-0.0001485247326) (0.0001083569998,6.277113221e-05) (1.090631473e-06,5.358995892e-07) (-9.701345459e-05,-5.605862791e-05) (4.020060285e-05,2.342138567e-05) (-2.495213373e-15,-3.798040949e-13) (2.564609381e-05,1.483301342e-05) (-7.938644399e-06,-4.592612137e-06) (-3.315355071e-05,-1.896761248e-05) (-0.0001237260184,-7.140117022e-05) (-6.181712518e-15,-1.07231224e-12) (1.064099062e-05,6.168956371e-06) (-3.13785497e-06,-1.820434496e-06) (-1.414077322e-05,-7.996125443e-06) (-5.05099567e-05,-2.913148265e-05) +(-0.003727919612,0.0004512406817) (-4.637284614e-05,5.719664231e-06) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-3.073369271e-12,-0.05475639745) (-2.298249668e-13,-0.001163347614) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-7.745507745e-13,-0.0230047579) (-3.345332529e-14,-0.0003354043926) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.0001315601101,-0.0001730513556) (4.714272022e-05,-6.266113996e-05) (5.795093163e-08,-4.411126475e-08) (1.906917157e-05,1.709188873e-05) (-6.747387277e-05,-0.0001071940222) (1.453425306e-08,2.475386522e-10) (7.939327188e-06,7.332714519e-06) (-2.725106785e-05,-4.451495134e-05) (3.68732518e-08,-8.215921054e-08) (-1.118974817e-08,-2.769128241e-07) (4.59324699e-08,2.844750319e-08) (7.162075505e-06,-1.243111672e-05) (-1.167000609e-05,5.409948601e-06) (1.362845101e-08,-3.419748453e-08) (-4.294076558e-09,-1.256505281e-07) (-2.120868259e-10,-1.155313223e-08) (4.515484695e-06,-7.853450267e-06) (-6.706727958e-06,4.615990553e-06) +(0,0) (0,0) (-3.574796693e-12,0.03098131397) (-3.042140382e-12,-0.00541448473) (-3.236912117e-15,-3.334652474e-05) (1.933870538e-12,-0.004093227976) (5.083089287e-13,0.0006826519903) (1.305409463e-14,4.426198274e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-2.140675696e-12,0.04078133152) (-9.245860848e-14,0.0005088910162) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.0004728364285,0.0006042634813) (0.0001549011422,0.0001969101588) (1.742154656e-07,2.210128037e-07) (6.630159526e-05,-5.281451296e-05) (-0.0002245728385,0.0003510046726) (2.242184337e-09,5.210283013e-08) (2.564595677e-05,-2.104968573e-05) (-8.40459334e-05,0.0001357401889) (1.942550103e-07,3.327717081e-07) (-8.133516325e-08,8.726284924e-07) (1.252513546e-07,-1.365851479e-07) (1.945354614e-05,3.357364785e-05) (-3.63246243e-05,-1.166647945e-05) (8.203792112e-08,1.357449512e-07) (-3.833851731e-08,3.884239297e-07) (-3.851851949e-08,-1.565911284e-09) (1.226202078e-05,2.102554947e-05) (-2.027680178e-05,-1.112687277e-05) +(0,0) (0,0) (-2.024388139e-12,0.01754455146) (4.181890806e-12,0.007443043734) (-2.262288214e-13,-0.002330599262) (6.414121631e-13,-0.001357612187) (-1.452340376e-12,-0.001950473409) (9.467343129e-14,0.0003210053167) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(6.244874297e-13,0.03618709099) (2.697252669e-14,0.0004515616539) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-7.009945539e-05,9.338091768e-05) (-2.294751532e-05,3.044331833e-05) (6.90127523e-08,-8.056615866e-08) (-1.668025493e-05,-2.547758194e-06) (2.594739121e-05,8.036832558e-05) (1.88807935e-08,-4.469530297e-09) (-6.589260373e-06,-9.018969849e-07) (9.98494262e-06,3.043541208e-05) (1.224567805e-07,1.00999336e-07) (1.175784606e-06,6.957931152e-07) (4.804307578e-08,6.828021738e-08) (-5.793391426e-06,9.404544457e-06) (1.281018903e-05,1.168435749e-05) (4.953722157e-08,3.817679525e-08) (5.172684202e-07,3.247875174e-07) (4.380408014e-09,-1.408858421e-08) (-2.978900681e-06,6.8746713e-06) (6.040486638e-06,2.242961964e-06) +(0,0) (0,0) (-1.099241284e-12,0.009526678654) (2.191751042e-12,0.003900938503) (4.271548499e-13,0.004400530276) (1.838561317e-13,-0.0003891496597) (-2.798649041e-13,-0.0003758547668) (-4.675917989e-13,-0.001585444316) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(4.913914448e-13,0.02847459545) (2.122391617e-14,0.0003553210569) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.0001093393109,-0.0001456531315) (3.579293875e-05,-4.748469771e-05) (-1.939696579e-09,1.629636271e-08) (7.475565512e-06,2.866786586e-05) (-8.944884285e-05,-5.999236372e-05) (-2.14173115e-09,2.526699651e-09) (2.725199573e-06,1.146585957e-05) (-3.315658003e-05,-2.393059195e-05) (-1.926292674e-07,4.544103218e-07) (8.906309439e-07,6.314723923e-07) (-7.151711759e-09,-2.666232592e-08) (1.11405877e-05,-9.30218948e-06) (3.367781307e-06,2.632798887e-05) (-7.780657096e-08,1.971839515e-07) (3.796910775e-07,2.865459246e-07) (-2.369849357e-09,3.160619939e-09) (7.354518612e-06,-4.660871765e-06) (-1.546040082e-06,1.176643449e-05) +(0.003323277612,0) (0.001069070815,0) (0.00174180792,0) (0.0001281378722,0) (3.179629858e-05,0) (0.0005140931207,0) (0.0001209653547,0) (7.18021662e-05,0) (0,-4.930380658e-32) (-2.710505431e-20,0) (7.588732639e-10,0) (1.442267609e-08,0) (0.0005156165052,0) (0,0) (4.235164736e-21,-1.972152263e-30) (8.97091465e-10,0) (2.352707791e-08,0) (0.0002128748988,0) +(0.7705943424,0) (0.0003607104378,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.001812676218,0) (0.0005842219029,0) (3.532291747e-09,0) (7.112404456e-05,0) (0.000911161533,0) (3.202095655e-10,0) (3.03507392e-05,0) (0.0003364428726,0) (4.990489648e-07,2.067951531e-25) (1.173508992e-06,-1.447566072e-24) (2.598563963e-09,1.861156378e-24) (3.714438472e-05,3.231174268e-26) (0.0002098412308,-3.30872245e-24) (2.061664726e-07,-2.067951531e-25) (5.325771156e-07,-1.550963649e-24) (2.084413822e-10,2.584939414e-24) (3.356492395e-05,-1.240770919e-24) (6.915611245e-05,-2.481541838e-24) +(0.0001754800089,0.001128796414) (5.155638535e-05,0.0003342646506) (-0.0005502637221,0.0001932512068) (9.709341259e-05,-2.864336795e-05) (-4.064263427e-06,-2.600856887e-05) (-0.0001999613347,8.159182589e-05) (3.504322644e-05,-1.856634867e-06) (-1.007121016e-06,-2.28614337e-05) (-5.29395592e-23,0) (0,0) (-6.269273271e-08,7.510437591e-09) (-6.606213617e-08,-5.528284076e-07) (6.844478161e-06,1.191899221e-05) (4.235164736e-22,2.117582368e-22) (-3.176373552e-22,1.058791184e-22) (-5.808372802e-08,1.310311496e-08) (-1.322629353e-07,-5.877574649e-07) (4.354594467e-06,6.858741574e-06) +(-0.01868331836,0.0323693011) (-0.0002293683958,0.0003976494403) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-0.01868331836,0.0323693011) (-0.0002293683958,0.0003976494403) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-0.01859875469,-0.00289131822) (-0.0003637420256,-5.610292319e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-0.0009663293566,0.0005577580731) (-0.0003697518979,0.0002132767988) (2.479801027e-08,-1.3514143e-08) (-4.23588132e-06,2.446359757e-06) (-0.0001046382544,6.061686563e-05) (1.0527476e-08,-5.172846965e-09) (-1.625594762e-06,9.393400046e-07) (-4.287160338e-05,2.497754476e-05) (-3.520336691e-15,5.410133858e-13) (-5.105327903e-06,2.952784881e-06) (-4.942304714e-06,2.859189473e-06) (-2.434700457e-06,1.392926361e-06) (0.0001315692818,-7.592744685e-05) (-7.129225595e-15,1.249384147e-12) (-2.216852174e-06,1.285187174e-06) (-2.079248817e-06,1.206281444e-06) (-1.077501277e-06,6.092902574e-07) (5.766194007e-05,-3.325636996e-05) +(-0.004446205436,-0.0005656472102) (-6.115864053e-05,-7.486523763e-06) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0,0) (0,0) (0.00343733442,-0.009787470219) (0.001210329744,-0.004102696501) (2.72766147e-05,4.262416284e-06) (-0.0006496370623,0.001592099361) (-1.047767332e-05,0.0001977618165) (-1.409278351e-05,-6.208332571e-07) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.001713045537,-0.0009887570642) (0.0005610046358,-0.0003235933972) (1.284657558e-06,-7.000983605e-07) (0.0002806706319,-0.0001620964487) (0.0001545866867,-8.955195666e-05) (4.934599324e-07,-2.424695971e-07) (0.0001055234845,-6.09760962e-05) (5.735923717e-05,-3.341822563e-05) (7.84876992e-15,-1.192626206e-12) (-1.799053813e-05,1.040524524e-05) (5.289516912e-05,-3.060056395e-05) (1.028606432e-05,-5.884802014e-06) (-0.0001666007481,9.614379037e-05) (1.52743842e-14,-2.640868145e-12) (-7.589476744e-06,4.399886574e-06) (2.17334082e-05,-1.260869171e-05) (4.463940347e-06,-2.524206171e-06) (-6.808603241e-05,3.926843742e-05) +(0.005916905037,-0.01467169451) (7.321154469e-05,-0.0001827410428) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0,0) (0,0) (0.001946543994,-0.005542591742) (-0.001663784768,0.005639788643) (0.001906371311,0.0002979016351) (-0.0002154669122,0.0005280559766) (2.993681038e-05,-0.0005650451033) (-0.0001022064118,-4.50252709e-06) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.001520061568,-0.0008773681615) (0.0004978043885,-0.0002871388275) (-3.777996285e-06,2.058890319e-06) (-9.788133906e-05,5.652966735e-05) (0.0001373008054,-7.953825799e-05) (-1.450444915e-06,7.126998007e-07) (-3.700141877e-05,2.138104216e-05) (5.093868177e-05,-2.967752787e-05) (4.931033643e-15,-7.561819314e-13) (1.709316225e-05,-9.88622701e-06) (-3.690797862e-05,2.135176006e-05) (2.260223605e-05,-1.293105701e-05) (-0.0001529662259,8.827543048e-05) (9.981358323e-15,-1.744829897e-12) (7.059472179e-06,-4.092624228e-06) (-1.557102848e-05,9.033571523e-06) (9.440103444e-06,-5.338056846e-06) (-6.246700819e-05,3.602768017e-05) +(0.002390038242,0.0002892987505) (2.973048971e-05,3.666982572e-06) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0,0) (0,0) (0.00105697197,-0.003009623275) (-0.0008719983776,0.002955842992) (-0.003599522581,-0.0005624841584) (-6.176202333e-05,0.0001513634052) (5.768800967e-06,-0.0001088837687) (0.0005047971676,2.223796807e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.001196093331,-0.0006903761197) (0.0003917081531,-0.0002259413986) (2.841899237e-06,-1.54874658e-06) (-0.0002571711525,0.0001485247326) (0.0001083569998,-6.277113221e-05) (1.090631473e-06,-5.358995892e-07) (-9.701345459e-05,5.605862791e-05) (4.020060285e-05,-2.342138567e-05) (-2.495189656e-15,3.798040983e-13) (2.564609381e-05,-1.483301342e-05) (-7.938644399e-06,4.592612137e-06) (-3.315355071e-05,1.896761248e-05) (-0.0001237260184,7.140117022e-05) (-6.181715906e-15,1.072312241e-12) (1.064099062e-05,-6.168956371e-06) (-3.13785497e-06,1.820434496e-06) (-1.414077322e-05,7.996125443e-06) (-5.05099567e-05,2.913148265e-05) +(-0.003727919612,-0.0004512406817) (-4.637284614e-05,-5.719664231e-06) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.0001754800089,-0.001128796414) (5.155638535e-05,-0.0003342646506) (-0.0005502637221,-0.0001932512068) (9.709341259e-05,2.864336795e-05) (-4.064263427e-06,2.600856887e-05) (-0.0001999613347,-8.159182589e-05) (3.504322644e-05,1.856634867e-06) (-1.007121016e-06,2.28614337e-05) (0,0) (-1.694065895e-21,4.235164736e-22) (-6.269273271e-08,-7.510437591e-09) (-6.606213617e-08,5.528284076e-07) (6.844478161e-06,-1.191899221e-05) (-4.235164736e-22,-2.64697796e-22) (1.058791184e-22,0) (-5.808372802e-08,-1.310311496e-08) (-1.322629353e-07,5.877574649e-07) (4.354594467e-06,-6.858741574e-06) +(-0.01868331836,-0.0323693011) (-0.0002293683958,-0.0003976494403) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-0.01868331836,-0.0323693011) (-0.0002293683958,-0.0003976494403) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.0003926769682,0) (0.0001070003183,0) (0.0001952776704,0) (7.997302531e-05,0) (2.179385408e-05,0) (9.072628978e-05,0) (1.018039269e-05,0) (7.293086984e-06,0) (6.6174449e-24,-7.754818243e-25) (1.058791184e-22,-1.240770919e-24) (5.253558923e-06,5.169878828e-26) (2.149278346e-05,-1.033975766e-25) (3.663755034e-07,0) (0,1.178732373e-23) (2.64697796e-23,2.067951531e-25) (3.952117728e-06,3.877409121e-26) (1.542700385e-05,0) (3.100639357e-07,-4.135903063e-25) +(0.001812676218,0) (0.0005842219029,0) (1.455760061e-07,0) (0.000963108556,0) (1.903497787e-05,0) (5.40245945e-08,0) (0.0003595785109,0) (7.161396531e-06,0) (1.008356953e-10,8.271806126e-25) (0.0001405400645,-1.861156378e-24) (2.945702913e-05,8.271806126e-25) (1.166197091e-05,4.135903063e-24) (6.700160668e-05,-4.549493369e-24) (2.273663116e-10,0) (5.845678685e-05,3.101927297e-24) (1.222055263e-05,-4.135903063e-25) (5.038570089e-06,7.858215819e-24) (2.77438515e-05,-4.135903063e-25) +(0.7705943424,0) (0.0003607104378,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.9022006019,0) (0.001265938283,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.0006867671573,0) (0.0003118737213,0) (5.478741969e-09,0) (2.484389374e-08,0) (0.0007682472119,0) (2.546730763e-09,0) (9.802916105e-09,0) (0.0003437670443,0) (2.902829344e-15,3.944304526e-31) (2.474974783e-07,0) (1.106742305e-06,0) (6.746724226e-07,5.916456789e-31) (0.000344401489,0) (6.865622166e-15,0) (1.123246758e-07,0) (4.728420013e-07,0) (3.041028689e-07,-3.944304526e-31) (0.0001597069346,0) +(2.606909815e-05,0) (1.052486136e-05,0) (1.50160704e-06,0) (9.220031973e-06,0) (1.760750571e-05,0) (6.598984231e-07,0) (3.84839452e-06,0) (8.0970703e-06,0) (1.625045466e-08,-1.292469707e-25) (6.544979468e-08,1.033975766e-25) (1.123332837e-06,5.169878828e-26) (5.541294868e-06,-1.80945759e-25) (7.884846338e-07,-4.135903063e-24) (6.573341473e-09,-7.754818243e-26) (2.967925929e-08,1.783608196e-24) (6.405630384e-07,-1.550963649e-25) (2.445001313e-06,2.067951531e-25) (9.585207486e-07,4.135903063e-25) +(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-0.001217455938,-1.048968745e-13) (-0.0004731891963,-1.331680902e-13) (2.838254859e-07,-2.667032522e-15) (-1.646163048e-06,-2.058752428e-14) (-0.001134965332,9.353993365e-14) (1.193742549e-07,-2.806929651e-15) (-6.363442288e-07,-2.174782716e-14) (-0.0004599365052,1.036925755e-13) (-6.39905609e-15,-4.744497745e-19) (8.721502128e-07,9.270421917e-16) (-1.184494378e-05,2.305635264e-14) (-2.850339931e-06,1.637935329e-15) (-0.0004361013826,7.942071128e-14) (-1.451212062e-14,-1.126939084e-18) (3.845477493e-07,8.539000264e-16) (-4.942394664e-06,2.315955851e-14) (-1.259856574e-06,1.799159549e-15) (-0.0001885786623,8.350119887e-14) +(-2.336997728e-05,8.899656399e-05) (-8.620275597e-06,3.25033392e-05) (9.817825478e-08,5.801548646e-06) (5.084310361e-06,-3.009317751e-05) (-2.466390723e-05,-5.241278162e-05) (1.420505313e-07,2.363204515e-06) (1.623034791e-06,-1.170234502e-05) (-1.115234346e-05,-2.211479671e-05) (-4.043179797e-08,5.656802291e-08) (-2.05138522e-07,-2.751341749e-08) (7.187037426e-07,-3.7854683e-06) (-7.485119781e-06,1.298409725e-05) (1.719364356e-06,1.585304449e-06) (-1.709340046e-08,2.258118837e-08) (-9.133145593e-08,-1.217697277e-08) (1.259848231e-07,-2.133345284e-06) (-3.269905813e-06,5.697606153e-06) (1.2237451e-06,2.432502756e-06) +(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-0.001080302854,-1.772989558e-14) (-0.0004198818397,-1.679889e-14) (-8.346906342e-07,8.241968752e-15) (5.740844431e-07,7.132640533e-15) (-0.001008053523,1.105114258e-14) (-3.508811352e-07,8.716645911e-15) (2.231317455e-07,7.573389404e-15) (-0.000408453118,9.53184962e-15) (-4.05730137e-15,-5.694584659e-20) (-8.286469788e-07,-3.094091175e-15) (8.264893354e-06,-1.417463855e-14) (-6.263236738e-06,1.984783545e-15) (-0.0004004110629,7.138747102e-15) (-9.588196122e-15,-1.375244239e-19) (-3.576931874e-07,-3.070677107e-15) (3.541007804e-06,-1.454441084e-14) (-2.664277624e-06,2.070054798e-15) (-0.0001730155867,5.991069674e-15) +(-1.400249322e-05,8.517683491e-08) (-5.116927849e-06,-4.684231583e-09) (2.138336521e-06,-4.599405375e-07) (-5.084421801e-06,3.325365207e-06) (-1.137644059e-05,-2.898889879e-06) (8.535405516e-07,-2.174669906e-07) (-1.941555583e-06,1.356036493e-06) (-4.835683466e-06,-1.14408203e-06) (-7.579709164e-09,2.762279321e-08) (-1.753976932e-07,2.708152116e-07) (1.596704523e-06,6.809813049e-07) (-4.264485678e-06,-1.255174248e-07) (-4.111833037e-07,-9.800694867e-07) (-3.057891808e-09,1.074053857e-08) (-8.079752589e-08,1.194200536e-07) (7.764209185e-07,2.571247395e-07) (-2.00927223e-06,2.278516912e-07) (-4.360917395e-07,-6.207081838e-07) +(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-0.0008500596729,-1.395115192e-14) (-0.0003303931097,-1.321857004e-14) (6.278742745e-07,-6.267371997e-15) (1.508336107e-06,1.829707832e-14) (-0.0007955499976,8.763968249e-15) (2.638376718e-07,-6.633341259e-15) (5.85025715e-07,1.938064798e-14) (-0.0003223495585,7.571202097e-15) (2.037832522e-15,1.279206619e-19) (-1.243278326e-06,-5.349347949e-15) (1.777719935e-06,-3.844960139e-15) (9.187079385e-06,-3.340764983e-15) (-0.0003238706207,6.12567423e-15) (5.892571045e-15,3.456051733e-19) (-5.39163517e-07,-5.385811883e-15) (7.135796431e-07,-3.765088724e-15) (3.990946276e-06,-3.584746342e-15) (-0.0001398980045,5.217450273e-15) +(2.184072547e-05,-1.328566161e-07) (7.98125124e-06,7.306342835e-09) (-2.353317487e-07,2.431358997e-07) (8.89348769e-06,5.889722967e-06) (1.368174814e-05,-6.080660701e-06) (-9.52595112e-08,1.163421003e-07) (3.483016518e-06,2.340901803e-06) (5.851874148e-06,-2.448645606e-06) (-8.904308778e-08,1.862177347e-09) (-1.575009145e-07,2.041408412e-07) (-4.182973373e-07,-3.929932664e-07) (5.261261828e-06,1.934800189e-06) (4.914717562e-07,-1.551016991e-06) (-3.785085941e-08,1.286475674e-10) (-7.066595277e-08,8.72698674e-08) (-1.727701374e-07,-1.345678508e-07) (2.079943364e-06,1.093768337e-06) (9.353131396e-07,-1.037909249e-06) +(-3.073369271e-12,0.05475639745) (-2.298249668e-13,0.001163347614) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-7.745507745e-13,0.0230047579) (-3.345332529e-14,0.0003354043926) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.0001316010582,0.0001730202177) (4.719344493e-05,6.262294536e-05) (4.519028303e-08,5.711350518e-08) (1.910649511e-05,-1.705015571e-05) (-6.749216419e-05,0.0001071825063) (7.477779824e-10,1.451711457e-08) (7.979649417e-06,-7.288814279e-06) (-2.727059995e-05,4.450298833e-05) (4.000715671e-08,8.067961321e-08) (-1.541872643e-08,2.767095688e-07) (3.739052008e-08,-3.900001586e-08) (7.12896119e-06,1.245013658e-05) (-1.166866017e-05,-5.412850993e-06) (1.666657866e-08,3.282419505e-08) (-8.45933864e-09,1.254389648e-07) (-1.154750606e-08,-4.182690836e-10) (4.482863104e-06,7.872116711e-06) (-6.706290426e-06,-4.616626192e-06) +(0.006795422316,-0.01755265315) (0.0001332844561,-0.0003430612962) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.0009663293567,-0.000557758073) (0.0003697518979,-0.0002132767987) (-2.479801e-08,1.35141435e-08) (4.235881379e-06,-2.446359655e-06) (0.0001046382544,-6.061686563e-05) (-1.052747575e-08,5.172847492e-09) (1.625594824e-06,-9.39339898e-07) (4.287160337e-05,-2.497754477e-05) (3.555927322e-15,-5.410131436e-13) (5.105327932e-06,-2.95278483e-06) (4.942304705e-06,-2.859189489e-06) (2.434700456e-06,-1.392926363e-06) (-0.0001315692818,7.592744687e-05) (7.213325803e-15,-1.249383665e-12) (2.216852204e-06,-1.285187123e-06) (2.079248808e-06,-1.20628146e-06) (1.077501276e-06,-6.092902592e-07) (-5.766194006e-05,3.325636998e-05) +(0.001733237864,-0.004133350463) (2.40958005e-05,-5.670819824e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-0.001217455938,1.048968745e-13) (-0.0004731891963,1.331680902e-13) (2.838254859e-07,2.667032522e-15) (-1.646163048e-06,2.058752428e-14) (-0.001134965332,-9.353993365e-14) (1.193742549e-07,2.806929651e-15) (-6.363442288e-07,2.174782716e-14) (-0.0004599365052,-1.036925755e-13) (-6.399069642e-15,4.744497745e-19) (8.721502128e-07,-9.270421917e-16) (-1.184494378e-05,-2.305635264e-14) (-2.850339931e-06,-1.637935329e-15) (-0.0004361013826,-7.942071128e-14) (-1.451212062e-14,1.126939084e-18) (3.845477493e-07,-8.539000264e-16) (-4.942394664e-06,-2.315955851e-14) (-1.259856574e-06,-1.799159549e-15) (-0.0001885786623,-8.350119887e-14) +(-2.336997728e-05,-8.899656399e-05) (-8.620275597e-06,-3.25033392e-05) (9.817825478e-08,-5.801548646e-06) (5.084310361e-06,3.009317751e-05) (-2.466390723e-05,5.241278162e-05) (1.420505313e-07,-2.363204515e-06) (1.623034791e-06,1.170234502e-05) (-1.115234346e-05,2.211479671e-05) (-4.043179797e-08,-5.656802291e-08) (-2.05138522e-07,2.751341749e-08) (7.187037426e-07,3.7854683e-06) (-7.485119781e-06,-1.298409725e-05) (1.719364356e-06,-1.585304449e-06) (-1.709340046e-08,-2.258118837e-08) (-9.133145593e-08,1.217697277e-08) (1.259848231e-07,2.133345284e-06) (-3.269905813e-06,-5.697606153e-06) (1.2237451e-06,-2.432502756e-06) +(0,0) (0,0) (0.5510606563,0) (0.2287898526,0) (3.497233206e-05,0) (0.03259042882,0) (0.003852456277,0) (2.728501408e-05,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.002158226331,0) (0.0007179444763,0) (1.470354086e-05,0) (0.0001090752041,0) (0.001676734109,0) (5.595492446e-06,0) (4.130750209e-05,0) (0.0006153632011,0) (1.410625631e-14,3.155443621e-30) (3.07334846e-06,3.944304526e-31) (0.0001267708775,0) (1.204204804e-05,1.57772181e-30) (0.0005522171709,0) (3.067480352e-14,0) (1.316513672e-06,0) (5.166052285e-05,0) (5.219413394e-06,0) (0.0002226698044,0) +(0.0003247731928,0) (0.0001074385849,0) (2.242104943e-05,0) (0.000101024546,0) (0.0001905669123,0) (8.493601038e-06,0) (3.626944176e-05,0) (7.576061162e-05,0) (2.975099223e-07,-2.067951531e-24) (6.545291938e-07,4.301339185e-23) (1.321630137e-05,8.271806126e-25) (4.053453297e-05,2.067951531e-25) (6.936601868e-06,-1.98523347e-23) (1.220223247e-07,-4.135903063e-25) (2.860486991e-07,-1.240770919e-24) (7.129718703e-06,1.447566072e-24) (1.765029723e-05,3.30872245e-24) (7.735483806e-06,-1.32348898e-23) +(0,0) (0,0) (0.3120626857,0) (-0.3145069131,0) (0.002444227455,0) (0.01080935722,0) (-0.01100723887,0) (0.0001978816593,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.001915090305,-1.335751503e-13) (0.0006370640959,-1.537988172e-13) (-4.324103528e-05,2.064957961e-14) (-3.803898884e-05,3.11900116e-15) (0.001489241722,1.064118355e-13) (-1.644703661e-05,2.184936467e-14) (-1.448432252e-05,3.401844515e-15) (0.0005464819933,1.104512803e-13) (8.944071612e-15,-5.37611904e-19) (-2.920048495e-06,-7.799358519e-15) (-8.845527695e-05,-2.047495515e-14) (2.646077292e-05,6.820300902e-15) (0.0005070239929,8.329729939e-14) (2.026694378e-14,-1.283138686e-18) (-1.22457607e-06,-7.793369903e-15) (-3.701248625e-05,-2.141087058e-14) (1.103773763e-05,7.186674661e-15) (0.0002042932449,8.338536484e-14) +(1.284349739e-05,4.772636154e-05) (4.176499206e-06,1.580615794e-05) (-1.637198807e-06,-8.291662982e-06) (-1.365739124e-05,-1.476125239e-05) (2.456488526e-05,-2.98039344e-05) (-5.950508007e-07,-3.103480952e-06) (-4.942325707e-06,-5.332056991e-06) (9.785063172e-06,-1.163148615e-05) (1.150138939e-07,-4.234158657e-08) (4.359031483e-07,-9.22545632e-07) (-1.273242959e-06,5.816351088e-06) (5.466313628e-06,1.016188654e-05) (-2.867123006e-06,-1.31041973e-06) (4.484840704e-08,-1.742515531e-08) (1.996404585e-07,-4.006392654e-07) (-7.036287942e-07,2.636380213e-06) (3.2181333e-06,4.377497957e-06) (-2.131972104e-06,3.142402084e-07) +(0,0) (0,0) (0.1694498108,0) (-0.164834733,0) (-0.0046150778,0) (0.003098423631,0) (-0.002121086697,0) (-0.0009773369338,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.001506930239,-1.051064969e-13) (0.0005012876667,-1.210199267e-13) (3.252694177e-05,-1.903334618e-14) (-9.99427541e-05,3.755176299e-14) (0.001175300936,8.391686018e-14) (1.236700242e-05,-2.013420008e-14) (-3.797622396e-05,3.981209702e-14) (0.000431281392,8.71025428e-14) (-4.492296834e-15,5.108271321e-20) (-4.381157595e-06,-1.419353245e-14) (-1.902610263e-05,4.116223754e-15) (-3.881335348e-05,-8.189939113e-15) (0.0004101039919,6.692950174e-14) (-1.245537216e-14,2.367029216e-19) (-1.845846564e-06,-1.433977071e-14) (-7.458711811e-06,4.403933919e-15) (-1.653394432e-05,-8.760466044e-15) (0.0001651886852,6.698363681e-14) +(-2.003295385e-05,-7.44423399e-05) (-6.514395052e-06,-2.465403487e-05) (9.239836074e-07,9.251150332e-07) (-1.431917237e-05,3.227521164e-05) (-1.064377077e-06,4.92444156e-05) (3.961344705e-07,3.661838786e-07) (-5.649364548e-06,1.15785494e-05) (-1.372201324e-06,1.935529002e-05) (2.280251171e-07,3.053268573e-07) (4.078376831e-07,-7.060455894e-07) (1.056705235e-06,-1.661036676e-06) (-2.573322934e-06,-1.49414439e-05) (-2.046729951e-06,-4.370276278e-06) (9.88697933e-08,1.296933022e-07) (1.816535076e-07,-2.975472314e-07) (4.141876113e-07,-6.018640503e-07) (-2.328660063e-07,-6.309697042e-06) (-1.439856402e-06,-3.698707777e-06) +(0,0) (0,0) (-3.574796693e-12,-0.03098131397) (-3.042140382e-12,0.00541448473) (-3.236912117e-15,3.334652474e-05) (1.933870538e-12,0.004093227976) (5.083089287e-13,-0.0006826519903) (1.305409463e-14,-4.426198274e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-2.140675696e-12,-0.04078133152) (-9.245860848e-14,-0.0005088910162) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.0004726934192,-0.0006043753589) (0.0001547416424,-0.0001970355262) (2.236160812e-07,-1.708611603e-07) (6.618596498e-05,5.295934623e-05) (-0.0002245129371,-0.0003510429903) (5.214913651e-08,4.470559756e-10) (2.552946888e-05,2.119081374e-05) (-8.398635774e-05,-0.0001357770582) (1.813072306e-07,-3.399995689e-07) (-6.79948831e-08,-8.73769186e-07) (1.553466833e-07,1.010485649e-07) (1.954284301e-05,-3.352174778e-05) (-3.632752486e-05,1.165744445e-05) (6.941991832e-08,-1.426106139e-07) (-2.543402913e-08,-3.894818368e-07) (-8.781307956e-10,-3.854033352e-08) (1.234914694e-05,-2.097449532e-05) (-2.027785628e-05,1.11249509e-05) +(0,0) (0,0) (-0.01019486506,-0.00191691618) (-0.004158204266,-0.001003171945) (-9.946946565e-06,2.57534494e-05) (0.001703617024,0.0002334474815) (0.0001765055937,8.9806977e-05) (6.508734384e-06,-1.251512516e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-0.001713045537,0.0009887570644) (-0.0005610046357,0.0003235933974) (-1.284657557e-06,7.000983619e-07) (-0.0002806706318,0.000162096449) (-0.0001545866867,8.955195664e-05) (-4.934599317e-07,2.424695986e-07) (-0.0001055234843,6.097609649e-05) (-5.735923718e-05,3.341822561e-05) (-7.750395513e-15,1.19262685e-12) (1.799053821e-05,-1.04052451e-05) (-5.289516915e-05,3.06005639e-05) (-1.028606432e-05,5.88480201e-06) (0.0001666007481,-9.614379032e-05) (-1.504199394e-14,2.640869476e-12) (7.589476826e-06,-4.399886433e-06) (-2.173340822e-05,1.260869167e-05) (-4.46394035e-06,2.524206165e-06) (6.808603243e-05,-3.926843738e-05) +(-0.01566451268,-0.00221165718) (-0.0001948641577,-2.796746384e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-0.001080302854,1.772989558e-14) (-0.0004198818397,1.679889e-14) (-8.346906342e-07,-8.241968752e-15) (5.740844431e-07,-7.132640533e-15) (-0.001008053523,-1.105114258e-14) (-3.508811352e-07,-8.716645911e-15) (2.231317455e-07,-7.573389404e-15) (-0.000408453118,-9.53184962e-15) (-4.057328475e-15,5.694584659e-20) (-8.286469788e-07,3.094091175e-15) (8.264893354e-06,1.417463855e-14) (-6.263236738e-06,-1.984783545e-15) (-0.0004004110629,-7.138747102e-15) (-9.588196122e-15,1.375244239e-19) (-3.576931874e-07,3.070677107e-15) (3.541007804e-06,1.454441084e-14) (-2.664277624e-06,-2.070054798e-15) (-0.0001730155867,-5.991069674e-15) +(-1.400249322e-05,-8.517683491e-08) (-5.116927849e-06,4.684231583e-09) (2.138336521e-06,4.599405375e-07) (-5.084421801e-06,-3.325365207e-06) (-1.137644059e-05,2.898889879e-06) (8.535405516e-07,2.174669906e-07) (-1.941555583e-06,-1.356036493e-06) (-4.835683466e-06,1.14408203e-06) (-7.579709164e-09,-2.762279321e-08) (-1.753976932e-07,-2.708152116e-07) (1.596704523e-06,-6.809813049e-07) (-4.264485678e-06,1.255174248e-07) (-4.111833037e-07,9.800694867e-07) (-3.057891808e-09,-1.074053857e-08) (-8.079752589e-08,-1.194200536e-07) (7.764209185e-07,-2.571247395e-07) (-2.00927223e-06,-2.278516912e-07) (-4.360917395e-07,6.207081838e-07) +(0,0) (0,0) (0.3120626857,0) (-0.3145069131,0) (0.002444227455,0) (0.01080935722,0) (-0.01100723887,0) (0.0001978816593,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.001915090305,1.335751503e-13) (0.0006370640959,1.537988172e-13) (-4.324103528e-05,-2.064957961e-14) (-3.803898884e-05,-3.11900116e-15) (0.001489241722,-1.064118355e-13) (-1.644703661e-05,-2.184936467e-14) (-1.448432252e-05,-3.401844515e-15) (0.0005464819933,-1.104512803e-13) (8.944071612e-15,5.37611904e-19) (-2.920048495e-06,7.799358519e-15) (-8.845527695e-05,2.047495515e-14) (2.646077292e-05,-6.820300902e-15) (0.0005070239929,-8.329729939e-14) (2.026694378e-14,1.283138686e-18) (-1.22457607e-06,7.793369903e-15) (-3.701248625e-05,2.141087058e-14) (1.103773763e-05,-7.186674661e-15) (0.0002042932449,-8.338536484e-14) +(1.284349739e-05,-4.772636154e-05) (4.176499206e-06,-1.580615794e-05) (-1.637198807e-06,8.291662982e-06) (-1.365739124e-05,1.476125239e-05) (2.456488526e-05,2.98039344e-05) (-5.950508007e-07,3.103480952e-06) (-4.942325707e-06,5.332056991e-06) (9.785063172e-06,1.163148615e-05) (1.150138939e-07,4.234158657e-08) (4.359031483e-07,9.22545632e-07) (-1.273242959e-06,-5.816351088e-06) (5.466313628e-06,-1.016188654e-05) (-2.867123006e-06,1.31041973e-06) (4.484840704e-08,1.742515531e-08) (1.996404585e-07,4.006392654e-07) (-7.036287942e-07,-2.636380213e-06) (3.2181333e-06,-4.377497957e-06) (-2.131972104e-06,-3.142402084e-07) +(0,0) (0,0) (0.1767194204,0) (0.4323382235,0) (0.1708278373,0) (0.003585169254,0) (0.0314498852,0) (0.001435115663,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.001699344885,0) (0.0005652953336,0) (0.0001271657725,0) (1.32657526e-05,0) (0.001322714732,0) (4.834337921e-05,0) (5.078874012e-06,0) (0.0004853110627,0) (5.670946568e-15,0) (2.774395199e-06,1.972152263e-31) (6.172029553e-05,0) (5.814397199e-05,0) (0.0004655294022,-4.930380658e-32) (1.339042538e-14,0) (1.139058852e-06,0) (2.651781405e-05,0) (2.334202003e-05,0) (0.0001874332715,-2.958228395e-31) +(7.521436699e-06,0) (2.487726124e-06,0) (3.185938962e-06,0) (4.003174709e-06,0) (7.827739219e-06,0) (1.175670888e-06,0) (1.457353976e-06,0) (3.049591687e-06,0) (5.048909171e-08,2.568783543e-24) (1.590612012e-06,1.609124785e-23) (2.682375849e-06,-5.764414894e-24) (3.284718312e-06,6.203854594e-25) (1.43263148e-06,1.550963649e-25) (1.897206644e-08,-6.720842477e-25) (7.004686066e-07,5.11818004e-24) (1.044304049e-06,-3.231174268e-25) (1.672429076e-06,0) (6.003570143e-07,8.271806126e-25) +(0,0) (0,0) (0.09595851645,0) (0.2265907446,0) (-0.3225492611,0) (0.001027662692,0) (0.006060369352,0) (-0.007088032044,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.001337166288,-3.155443621e-30) (0.0004448148634,6.310887242e-30) (-9.565713795e-05,1.029370554e-14) (3.485412968e-05,-1.023797789e-14) (0.0010438788,-5.572765633e-17) (-3.635078475e-05,1.089033375e-14) (1.331622219e-05,-1.083246436e-14) (0.0003830055394,-5.786938279e-17) (-2.848348185e-15,-1.388191666e-19) (4.162623539e-06,2.367315108e-15) (1.327559777e-05,-5.945058718e-15) (-8.528709815e-05,3.98658355e-15) (0.0003765412857,-4.087011207e-16) (-8.229297777e-15,-3.646221352e-19) (1.716943454e-06,2.411501735e-15) (5.343838064e-06,-6.246511632e-15) (-3.496510539e-05,4.239624517e-15) (0.0001515559446,-4.042499974e-16) +(-1.173174173e-05,0) (-3.880290635e-06,0) (-4.095921988e-07,2.741514604e-07) (-2.780116483e-06,-6.455501517e-06) (-7.838840513e-06,6.181350057e-06) (-1.61552776e-07,1.190893908e-07) (-9.323685179e-07,-2.408299986e-06) (-3.148837626e-06,2.289210596e-06) (4.469778006e-08,1.504883457e-07) (1.26676856e-06,1.046269265e-07) (-8.328059922e-07,-3.050222055e-07) (-4.092802746e-06,-1.369814789e-06) (1.671585455e-06,1.419721722e-06) (1.781827059e-08,6.178672245e-08) (5.435245616e-07,4.675798968e-08) (-2.634292994e-07,-9.375785702e-08) (-1.60734289e-06,-1.092677106e-06) (2.465845742e-07,1.077890251e-06) +(0,0) (0,0) (-2.024388139e-12,-0.01754455146) (4.181890806e-12,-0.007443043734) (-2.262288214e-13,0.002330599262) (6.414121631e-13,0.001357612187) (-1.452340376e-12,0.001950473409) (9.467343129e-14,-0.0003210053167) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(6.244874297e-13,-0.03618709099) (2.697252669e-14,-0.0004515616539) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-7.012155158e-05,-9.336432636e-05) (-2.297215943e-05,-3.042472648e-05) (4.685860845e-08,9.517319326e-08) (-1.668578539e-05,2.511282975e-06) (2.59611055e-05,-8.036389655e-05) (-3.816851651e-09,1.90234778e-08) (-6.59413449e-06,8.655407409e-07) (9.998297787e-06,-3.04310274e-05) (1.184799872e-07,-1.056362703e-07) (1.186276746e-06,-6.777499395e-07) (2.950446186e-08,-7.810129287e-08) (-5.76833804e-06,-9.419931895e-06) (1.281309476e-05,-1.168117099e-05) (4.588000485e-08,-4.250210784e-08) (5.277564843e-07,-3.074518553e-07) (-1.416452721e-08,4.128237912e-09) (-2.950353115e-06,-6.886971124e-06) (6.040699198e-06,-2.242389439e-06) +(0,0) (0,0) (-0.005773297248,-0.001085539323) (0.00571609262,0.001379014446) (-0.0006951952716,0.001799916802) (0.0005650433465,7.742816862e-05) (-0.0005043118189,-0.0002565965133) (4.720390306e-05,-9.07646126e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-0.001520061568,0.0008773681614) (-0.0004978043886,0.0002871388274) (3.777996285e-06,-2.058890319e-06) (9.788133901e-05,-5.652966743e-05) (-0.0001373008054,7.9538258e-05) (1.450444915e-06,-7.126998011e-07) (3.700141872e-05,-2.138104225e-05) (-5.093868176e-05,2.967752788e-05) (-4.959570183e-15,7.561817459e-13) (-1.709316227e-05,9.88622697e-06) (3.690797863e-05,-2.135176004e-05) (-2.260223605e-05,1.293105702e-05) (0.0001529662259,-8.827543049e-05) (-1.004876182e-14,1.74482951e-12) (-7.059472203e-06,4.092624187e-06) (1.557102849e-05,-9.033571511e-06) (-9.440103444e-06,5.338056848e-06) (6.246700819e-05,-3.602768019e-05) +(-0.000944479054,0.002214483209) (-1.168954479e-05,2.758085064e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-0.0008500596729,1.395115192e-14) (-0.0003303931097,1.321857004e-14) (6.278742745e-07,6.267371997e-15) (1.508336107e-06,-1.829707832e-14) (-0.0007955499976,-8.763968249e-15) (2.638376718e-07,6.633341259e-15) (5.85025715e-07,-1.938064798e-14) (-0.0003223495585,-7.571202097e-15) (2.037825746e-15,-1.279206619e-19) (-1.243278326e-06,5.349347949e-15) (1.777719935e-06,3.844960139e-15) (9.187079385e-06,3.340764983e-15) (-0.0003238706207,-6.12567423e-15) (5.892564269e-15,-3.456051733e-19) (-5.39163517e-07,5.385811883e-15) (7.135796431e-07,3.765088724e-15) (3.990946276e-06,3.584746342e-15) (-0.0001398980045,-5.217450273e-15) +(2.184072547e-05,1.328566161e-07) (7.98125124e-06,-7.306342835e-09) (-2.353317487e-07,-2.431358997e-07) (8.89348769e-06,-5.889722967e-06) (1.368174814e-05,6.080660701e-06) (-9.52595112e-08,-1.163421003e-07) (3.483016518e-06,-2.340901803e-06) (5.851874148e-06,2.448645606e-06) (-8.904308778e-08,-1.862177347e-09) (-1.575009145e-07,-2.041408412e-07) (-4.182973373e-07,3.929932664e-07) (5.261261828e-06,-1.934800189e-06) (4.914717562e-07,1.551016991e-06) (-3.785085941e-08,-1.286475674e-10) (-7.066595277e-08,-8.72698674e-08) (-1.727701374e-07,1.345678508e-07) (2.079943364e-06,-1.093768337e-06) (9.353131396e-07,1.037909249e-06) +(0,0) (0,0) (0.1694498108,0) (-0.164834733,0) (-0.0046150778,0) (0.003098423631,0) (-0.002121086697,0) (-0.0009773369338,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.001506930239,1.051064969e-13) (0.0005012876667,1.210199267e-13) (3.252694177e-05,1.903334618e-14) (-9.99427541e-05,-3.755176299e-14) (0.001175300936,-8.391686018e-14) (1.236700242e-05,2.013420008e-14) (-3.797622396e-05,-3.981209702e-14) (0.000431281392,-8.71025428e-14) (-4.492290058e-15,-5.108271322e-20) (-4.381157595e-06,1.419353245e-14) (-1.902610263e-05,-4.116223754e-15) (-3.881335348e-05,8.189939113e-15) (0.0004101039919,-6.692950174e-14) (-1.245536538e-14,-2.367029216e-19) (-1.845846564e-06,1.433977071e-14) (-7.458711811e-06,-4.403933919e-15) (-1.653394432e-05,8.760466044e-15) (0.0001651886852,-6.698363681e-14) +(-2.003295385e-05,7.44423399e-05) (-6.514395052e-06,2.465403487e-05) (9.239836074e-07,-9.251150332e-07) (-1.431917237e-05,-3.227521164e-05) (-1.064377077e-06,-4.92444156e-05) (3.961344705e-07,-3.661838786e-07) (-5.649364548e-06,-1.15785494e-05) (-1.372201324e-06,-1.935529002e-05) (2.280251171e-07,-3.053268573e-07) (4.078376831e-07,7.060455894e-07) (1.056705235e-06,1.661036676e-06) (-2.573322934e-06,1.49414439e-05) (-2.046729951e-06,4.370276278e-06) (9.88697933e-08,-1.296933022e-07) (1.816535076e-07,2.975472314e-07) (4.141876113e-07,6.018640503e-07) (-2.328660063e-07,6.309697042e-06) (-1.439856402e-06,3.698707777e-06) +(0,0) (0,0) (0.09595851645,0) (0.2265907446,0) (-0.3225492611,0) (0.001027662692,0) (0.006060369352,0) (-0.007088032044,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.001337166288,3.155443621e-30) (0.0004448148634,-6.310887242e-30) (-9.565713795e-05,-1.029370554e-14) (3.485412968e-05,1.023797789e-14) (0.0010438788,5.572765633e-17) (-3.635078475e-05,-1.089033375e-14) (1.331622219e-05,1.083246436e-14) (0.0003830055394,5.786938279e-17) (-2.848334632e-15,1.388191666e-19) (4.162623539e-06,-2.367315108e-15) (1.327559777e-05,5.945058718e-15) (-8.528709815e-05,-3.98658355e-15) (0.0003765412857,4.087011207e-16) (-8.229297777e-15,3.646221352e-19) (1.716943454e-06,-2.411501735e-15) (5.343838064e-06,6.246511632e-15) (-3.496510539e-05,-4.239624517e-15) (0.0001515559446,4.042499974e-16) +(-1.173174173e-05,0) (-3.880290635e-06,0) (-4.095921988e-07,-2.741514604e-07) (-2.780116483e-06,6.455501517e-06) (-7.838840513e-06,-6.181350057e-06) (-1.61552776e-07,-1.190893908e-07) (-9.323685179e-07,2.408299986e-06) (-3.148837626e-06,-2.289210596e-06) (4.469778006e-08,-1.504883457e-07) (1.26676856e-06,-1.046269265e-07) (-8.328059922e-07,3.050222055e-07) (-4.092802746e-06,1.369814789e-06) (1.671585455e-06,-1.419721722e-06) (1.781827059e-08,-6.178672245e-08) (5.435245616e-07,-4.675798968e-08) (-2.634292994e-07,9.375785702e-08) (-1.60734289e-06,1.092677106e-06) (2.465845742e-07,-1.077890251e-06) +(0,0) (0,0) (0.05210540448,0) (0.1187574051,0) (0.6090226715,0) (0.0002945720367,0) (0.001167828641,0) (0.03500776944,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.001052178223,0) (0.0003500121988,0) (7.195558885e-05,0) (9.157492925e-05,0) (0.0008238230987,0) (2.733320619e-05,0) (3.491359954e-05,0) (0.0003022664318,0) (1.430604767e-15,-9.860761315e-32) (6.245481801e-06,-9.860761315e-32) (2.855486911e-06,-2.465190329e-32) (0.0001251013452,-3.45126646e-31) (0.0003045636627,3.45126646e-31) (5.057437216e-15,2.958228395e-31) (2.588009232e-06,2.958228395e-31) (1.076883833e-06,-1.972152263e-31) (5.23758695e-05,4.930380658e-32) (0.0001225460354,2.958228395e-31) +(1.829886623e-05,0) (6.052376612e-06,0) (7.624904163e-08,0) (1.234084223e-05,0) (1.273119943e-05,0) (3.426263494e-08,0) (4.576252571e-06,0) (4.96973533e-06,0) (4.881179852e-07,-9.564275833e-25) (1.015740713e-06,-3.282873056e-24) (2.932491235e-07,-1.783608196e-24) (5.670935863e-06,3.231174268e-24) (3.357323756e-06,-8.685396432e-24) (2.179567445e-07,9.04728795e-25) (4.248659482e-07,5.014782464e-24) (7.486855157e-08,1.395867284e-24) (2.258687365e-06,-1.240770919e-24) (2.036540451e-06,-3.30872245e-24) +(0,0) (0,0) (-1.099241284e-12,-0.009526678654) (2.191751042e-12,-0.003900938503) (4.271548499e-13,-0.004400530276) (1.838561317e-13,0.0003891496597) (-2.798649041e-13,0.0003758547668) (-4.675917989e-13,0.001585444316) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(4.913914448e-13,-0.02847459545) (2.122391617e-14,-0.0003553210569) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.000109373776,0.0001456272528) (3.583137798e-05,4.745569863e-05) (2.165436796e-09,-1.626790533e-08) (7.53822607e-06,-2.865145302e-05) (-8.94590791e-05,5.997709861e-05) (2.45146613e-09,-2.227450843e-09) (2.788397132e-06,-1.145065455e-05) (-3.316707843e-05,2.391603938e-05) (-2.099708033e-07,-4.46662106e-07) (9.001737584e-07,-6.177928983e-07) (-2.791793818e-10,2.760341761e-08) (1.111578782e-05,9.331810361e-06) (3.374329489e-06,-2.632715043e-05) (-9.532770745e-08,-1.893356844e-07) (3.889864278e-07,-2.737945217e-07) (3.202416713e-09,-2.313056759e-09) (7.335118092e-06,4.691344391e-06) (-1.544924858e-06,-1.176658097e-05) +(0,0) (0,0) (-0.003134896197,-0.0005894470608) (0.00299583431,0.0007227487492) (0.00131263572,-0.003398520076) (0.0001619655658,2.219422141e-05) (-9.718051026e-05,-4.944595617e-05) (-0.0002331399385,0.0004482861549) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-0.001196093331,0.0006903761196) (-0.0003917081531,0.0002259413986) (-2.841899237e-06,1.54874658e-06) (0.0002571711525,-0.0001485247327) (-0.0001083569998,6.277113221e-05) (-1.090631474e-06,5.358995889e-07) (9.701345456e-05,-5.605862798e-05) (-4.020060284e-05,2.342138568e-05) (2.472509502e-15,-3.798042406e-13) (-2.564609383e-05,1.483301339e-05) (7.938644405e-06,-4.592612127e-06) (3.315355071e-05,-1.896761248e-05) (0.0001237260184,-7.140117023e-05) (6.128112273e-15,-1.072312545e-12) (-1.064099064e-05,6.168956339e-06) (3.137854976e-06,-1.820434486e-06) (1.414077322e-05,-7.996125442e-06) (5.05099567e-05,-2.913148266e-05) +(0.001473173913,-0.003454093428) (1.823304854e-05,-4.301989491e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-3.073369271e-12,-0.05475639745) (-2.298249668e-13,-0.001163347614) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-7.745507745e-13,-0.0230047579) (-3.345332529e-14,-0.0003354043926) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.0001316010582,-0.0001730202177) (4.719344493e-05,-6.262294536e-05) (4.519028303e-08,-5.711350518e-08) (1.910649511e-05,1.705015571e-05) (-6.749216419e-05,-0.0001071825063) (7.477779824e-10,-1.451711457e-08) (7.979649417e-06,7.288814279e-06) (-2.727059995e-05,-4.450298833e-05) (4.000715671e-08,-8.067961321e-08) (-1.541872643e-08,-2.767095688e-07) (3.739052008e-08,3.900001586e-08) (7.12896119e-06,-1.245013658e-05) (-1.166866017e-05,5.412850993e-06) (1.666657866e-08,-3.282419505e-08) (-8.45933864e-09,-1.254389648e-07) (-1.154750606e-08,4.182690836e-10) (4.482863104e-06,-7.872116711e-06) (-6.706290426e-06,4.616626192e-06) +(0,0) (0,0) (-3.574796693e-12,0.03098131397) (-3.042140382e-12,-0.00541448473) (-3.236912117e-15,-3.334652474e-05) (1.933870538e-12,-0.004093227976) (5.083089287e-13,0.0006826519903) (1.305409463e-14,4.426198274e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-2.140675696e-12,0.04078133152) (-9.245860848e-14,0.0005088910162) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.0004726934192,0.0006043753589) (0.0001547416424,0.0001970355262) (2.236160812e-07,1.708611603e-07) (6.618596498e-05,-5.295934623e-05) (-0.0002245129371,0.0003510429903) (5.214913651e-08,-4.470559756e-10) (2.552946888e-05,-2.119081374e-05) (-8.398635774e-05,0.0001357770582) (1.813072306e-07,3.399995689e-07) (-6.79948831e-08,8.73769186e-07) (1.553466833e-07,-1.010485649e-07) (1.954284301e-05,3.352174778e-05) (-3.632752486e-05,-1.165744445e-05) (6.941991832e-08,1.426106139e-07) (-2.543402913e-08,3.894818368e-07) (-8.781307956e-10,3.854033352e-08) (1.234914694e-05,2.097449532e-05) (-2.027785628e-05,-1.11249509e-05) +(0,0) (0,0) (-2.024388139e-12,0.01754455146) (4.181890806e-12,0.007443043734) (-2.262288214e-13,-0.002330599262) (6.414121631e-13,-0.001357612187) (-1.452340376e-12,-0.001950473409) (9.467343129e-14,0.0003210053167) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(6.244874297e-13,0.03618709099) (2.697252669e-14,0.0004515616539) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-7.012155158e-05,9.336432636e-05) (-2.297215943e-05,3.042472648e-05) (4.685860845e-08,-9.517319326e-08) (-1.668578539e-05,-2.511282975e-06) (2.59611055e-05,8.036389655e-05) (-3.816851651e-09,-1.90234778e-08) (-6.59413449e-06,-8.655407409e-07) (9.998297787e-06,3.04310274e-05) (1.184799872e-07,1.056362703e-07) (1.186276746e-06,6.777499395e-07) (2.950446186e-08,7.810129287e-08) (-5.76833804e-06,9.419931895e-06) (1.281309476e-05,1.168117099e-05) (4.588000485e-08,4.250210784e-08) (5.277564843e-07,3.074518553e-07) (-1.416452721e-08,-4.128237912e-09) (-2.950353115e-06,6.886971124e-06) (6.040699198e-06,2.242389439e-06) +(0,0) (0,0) (-1.099241284e-12,0.009526678654) (2.191751042e-12,0.003900938503) (4.271548499e-13,0.004400530276) (1.838561317e-13,-0.0003891496597) (-2.798649041e-13,-0.0003758547668) (-4.675917989e-13,-0.001585444316) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(4.913914448e-13,0.02847459545) (2.122391617e-14,0.0003553210569) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.000109373776,-0.0001456272528) (3.583137798e-05,-4.745569863e-05) (2.165436796e-09,1.626790533e-08) (7.53822607e-06,2.865145302e-05) (-8.94590791e-05,-5.997709861e-05) (2.45146613e-09,2.227450843e-09) (2.788397132e-06,1.145065455e-05) (-3.316707843e-05,-2.391603938e-05) (-2.099708033e-07,4.46662106e-07) (9.001737584e-07,6.177928983e-07) (-2.791793818e-10,-2.760341761e-08) (1.111578782e-05,-9.331810361e-06) (3.374329489e-06,2.632715043e-05) (-9.532770745e-08,1.893356844e-07) (3.889864278e-07,2.737945217e-07) (3.202416713e-09,2.313056759e-09) (7.335118092e-06,-4.691344391e-06) (-1.544924858e-06,1.176658097e-05) +(0.003323277612,0) (0.001069070815,0) (0.00174180792,0) (0.0001281378722,0) (3.179629858e-05,0) (0.0005140931207,0) (0.0001209653547,0) (7.18021662e-05,0) (0,-4.930380658e-32) (-2.710505431e-20,0) (7.588732639e-10,0) (1.442267609e-08,0) (0.0005156165052,0) (0,0) (4.235164736e-21,-1.972152263e-30) (8.97091465e-10,0) (2.352707791e-08,0) (0.0002128748988,0) +(0.7705943424,0) (0.0003607104378,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.001812676218,0) (0.0005842219029,0) (3.532291747e-09,0) (7.112404456e-05,0) (0.000911161533,0) (3.202095655e-10,0) (3.03507392e-05,0) (0.0003364428726,0) (4.990489648e-07,-8.271806126e-25) (1.173508992e-06,-4.756288522e-24) (2.598563963e-09,-4.135903063e-24) (3.714438472e-05,-1.938704561e-26) (0.0002098412308,-1.654361225e-24) (2.061664726e-07,-8.271806126e-25) (5.325771156e-07,2.067951531e-25) (2.084413822e-10,-1.861156378e-24) (3.356492395e-05,-6.203854594e-25) (6.915611245e-05,-1.654361225e-24) +(-0.001065306375,-0.0004124280613) (-0.0003152598716,-0.0001224831858) (0.0001077714067,-0.0005731679656) (-2.3740822e-05,9.840704582e-05) (2.455621307e-05,9.484529058e-06) (2.93200734e-05,-0.0002139675086) (-1.591372026e-05,3.127664176e-05) (2.030214286e-05,1.055852447e-05) (0,1.32348898e-23) (2.117582368e-22,-8.470329473e-22) (2.484213661e-08,-5.804871795e-08) (5.11794513e-07,2.192027156e-07) (-1.374438912e-05,-3.200414282e-08) (-2.117582368e-22,0) (-7.940933881e-23,0) (1.769423358e-08,-5.68535415e-08) (5.751443635e-07,1.793356705e-07) (-8.117141674e-06,3.418186447e-07) +(-0.01868331836,-0.0323693011) (-0.0002293683958,-0.0003976494403) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-0.01868331836,-0.0323693011) (-0.0002293683958,-0.0003976494403) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.006795422316,0.01755265315) (0.0001332844561,0.0003430612962) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.0009663293567,0.000557758073) (0.0003697518979,0.0002132767987) (-2.479801e-08,-1.35141435e-08) (4.235881379e-06,2.446359655e-06) (0.0001046382544,6.061686563e-05) (-1.052747575e-08,-5.172847492e-09) (1.625594824e-06,9.39339898e-07) (4.287160337e-05,2.497754477e-05) (3.555927322e-15,5.410131537e-13) (5.105327932e-06,2.95278483e-06) (4.942304705e-06,2.859189489e-06) (2.434700456e-06,1.392926363e-06) (-0.0001315692818,-7.592744687e-05) (7.213322414e-15,1.249383666e-12) (2.216852204e-06,1.285187123e-06) (2.079248808e-06,1.20628146e-06) (1.077501276e-06,6.092902592e-07) (-5.766194006e-05,-3.325636998e-05) +(0.001733237864,0.004133350463) (2.40958005e-05,5.670819824e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0,0) (0,0) (-0.01019486506,0.00191691618) (-0.004158204266,0.001003171945) (-9.946946565e-06,-2.57534494e-05) (0.001703617024,-0.0002334474815) (0.0001765055937,-8.9806977e-05) (6.508734384e-06,1.251512516e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-0.001713045537,-0.0009887570644) (-0.0005610046357,-0.0003235933974) (-1.284657557e-06,-7.000983619e-07) (-0.0002806706318,-0.000162096449) (-0.0001545866867,-8.955195664e-05) (-4.934599317e-07,-2.424695986e-07) (-0.0001055234843,-6.097609649e-05) (-5.735923718e-05,-3.341822561e-05) (-7.750405677e-15,-1.192626849e-12) (1.799053821e-05,1.04052451e-05) (-5.289516915e-05,-3.06005639e-05) (-1.028606432e-05,-5.88480201e-06) (0.0001666007481,9.614379032e-05) (-1.504199563e-14,-2.640869479e-12) (7.589476826e-06,4.399886433e-06) (-2.173340822e-05,-1.260869167e-05) (-4.46394035e-06,-2.524206165e-06) (6.808603243e-05,3.926843738e-05) +(-0.01566451268,0.00221165718) (-0.0001948641577,2.796746384e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0,0) (0,0) (-0.005773297248,0.001085539323) (0.00571609262,-0.001379014446) (-0.0006951952716,-0.001799916802) (0.0005650433465,-7.742816862e-05) (-0.0005043118189,0.0002565965133) (4.720390306e-05,9.07646126e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-0.001520061568,-0.0008773681614) (-0.0004978043886,-0.0002871388274) (3.777996285e-06,2.058890319e-06) (9.788133901e-05,5.652966743e-05) (-0.0001373008054,-7.9538258e-05) (1.450444915e-06,7.126998011e-07) (3.700141872e-05,2.138104225e-05) (-5.093868176e-05,-2.967752788e-05) (-4.959570183e-15,-7.561817409e-13) (-1.709316227e-05,-9.88622697e-06) (3.690797863e-05,2.135176004e-05) (-2.260223605e-05,-1.293105702e-05) (0.0001529662259,8.827543049e-05) (-1.004876097e-14,-1.74482951e-12) (-7.059472203e-06,-4.092624187e-06) (1.557102849e-05,9.033571511e-06) (-9.440103444e-06,-5.338056848e-06) (6.246700819e-05,3.602768019e-05) +(-0.000944479054,-0.002214483209) (-1.168954479e-05,-2.758085064e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0,0) (0,0) (-0.003134896197,0.0005894470608) (0.00299583431,-0.0007227487492) (0.00131263572,0.003398520076) (0.0001619655658,-2.219422141e-05) (-9.718051026e-05,4.944595617e-05) (-0.0002331399385,-0.0004482861549) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-0.001196093331,-0.0006903761196) (-0.0003917081531,-0.0002259413986) (-2.841899237e-06,-1.54874658e-06) (0.0002571711525,0.0001485247327) (-0.0001083569998,-6.277113221e-05) (-1.090631474e-06,-5.358995889e-07) (9.701345456e-05,5.605862798e-05) (-4.020060284e-05,-2.342138568e-05) (2.472516278e-15,3.798042271e-13) (-2.564609383e-05,-1.483301339e-05) (7.938644405e-06,4.592612127e-06) (3.315355071e-05,1.896761248e-05) (0.0001237260184,7.140117023e-05) (6.128107191e-15,1.072312543e-12) (-1.064099064e-05,-6.168956339e-06) (3.137854976e-06,1.820434486e-06) (1.414077322e-05,7.996125442e-06) (5.05099567e-05,2.913148266e-05) +(0.001473173913,0.003454093428) (1.823304854e-05,4.301989491e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-0.001065306375,0.0004124280613) (-0.0003152598716,0.0001224831858) (0.0001077714067,0.0005731679656) (-2.3740822e-05,-9.840704582e-05) (2.455621307e-05,-9.484529058e-06) (2.93200734e-05,0.0002139675086) (-1.591372026e-05,-3.127664176e-05) (2.030214286e-05,-1.055852447e-05) (-1.058791184e-22,-2.64697796e-23) (-2.117582368e-22,8.470329473e-22) (2.484213661e-08,5.804871795e-08) (5.11794513e-07,-2.192027156e-07) (-1.374438912e-05,3.200414282e-08) (0,0) (-1.32348898e-22,4.235164736e-22) (1.769423358e-08,5.68535415e-08) (5.751443635e-07,-1.793356705e-07) (-8.117141674e-06,-3.418186447e-07) +(-0.01868331836,0.0323693011) (-0.0002293683958,0.0003976494403) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-0.01868331836,0.0323693011) (-0.0002293683958,0.0003976494403) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.0003926769682,0) (0.0001070003183,0) (0.0001952776704,0) (7.997302531e-05,0) (2.179385408e-05,0) (9.072628978e-05,0) (1.018039269e-05,0) (7.293086984e-06,0) (6.6174449e-24,-7.754818243e-25) (1.058791184e-22,-1.240770919e-24) (5.253558923e-06,5.169878828e-26) (2.149278346e-05,-1.033975766e-25) (3.663755034e-07,0) (0,1.178732373e-23) (2.64697796e-23,2.067951531e-25) (3.952117728e-06,3.877409121e-26) (1.542700385e-05,0) (3.100639357e-07,-4.135903063e-25) +(0.001812676218,0) (0.0005842219029,0) (1.455760061e-07,0) (0.000963108556,0) (1.903497787e-05,0) (5.40245945e-08,0) (0.0003595785109,0) (7.161396531e-06,0) (1.008356953e-10,8.271806126e-25) (0.0001405400645,2.481541838e-24) (2.945702913e-05,-4.135903063e-25) (1.166197091e-05,6.6174449e-24) (6.700160668e-05,3.722312756e-24) (2.273663116e-10,8.271806126e-25) (5.845678685e-05,-2.481541838e-24) (1.222055263e-05,-6.203854594e-25) (5.038570089e-06,4.549493369e-24) (2.77438515e-05,0) +(0.7705943424,0) (0.0003607104378,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.9022006019,0) (0.001265938283,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.0006867671573,0) (0.0003118737213,0) (5.478741969e-09,0) (2.484389374e-08,0) (0.0007682472119,0) (2.546730763e-09,0) (9.802916105e-09,0) (0.0003437670443,0) (2.902829344e-15,3.944304526e-31) (2.474974783e-07,0) (1.106742305e-06,0) (6.746724226e-07,5.916456789e-31) (0.000344401489,0) (6.865622166e-15,0) (1.123246758e-07,0) (4.728420013e-07,0) (3.041028689e-07,-3.944304526e-31) (0.0001597069346,0) +(2.606909815e-05,0) (1.052486136e-05,0) (1.50160704e-06,0) (9.220031973e-06,0) (1.760750571e-05,0) (6.598984231e-07,0) (3.84839452e-06,0) (8.0970703e-06,0) (1.625045466e-08,-1.292469707e-25) (6.544979468e-08,1.033975766e-25) (1.123332837e-06,5.169878828e-26) (5.541294868e-06,-1.80945759e-25) (7.884846338e-07,-4.135903063e-24) (6.573341473e-09,-7.754818243e-26) (2.967925929e-08,1.783608196e-24) (6.405630384e-07,-1.550963649e-25) (2.445001313e-06,2.067951531e-25) (9.585207486e-07,4.135903063e-25) +(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-0.001217455938,-1.048968745e-13) (-0.0004731891963,-1.331680902e-13) (2.838254859e-07,-2.667032522e-15) (-1.646163048e-06,-2.058752428e-14) (-0.001134965332,9.353993365e-14) (1.193742549e-07,-2.806929651e-15) (-6.363442288e-07,-2.174782716e-14) (-0.0004599365052,1.036925755e-13) (-6.39905609e-15,-4.744497745e-19) (8.721502128e-07,9.270421917e-16) (-1.184494378e-05,2.305635264e-14) (-2.850339931e-06,1.637935329e-15) (-0.0004361013826,7.942071128e-14) (-1.451212062e-14,-1.126939084e-18) (3.845477493e-07,8.539000264e-16) (-4.942394664e-06,2.315955851e-14) (-1.259856574e-06,1.799159549e-15) (-0.0001885786623,8.350119887e-14) +(-2.336997728e-05,8.899656399e-05) (-8.620275597e-06,3.25033392e-05) (9.817825478e-08,5.801548646e-06) (5.084310361e-06,-3.009317751e-05) (-2.466390723e-05,-5.241278162e-05) (1.420505313e-07,2.363204515e-06) (1.623034791e-06,-1.170234502e-05) (-1.115234346e-05,-2.211479671e-05) (-4.043179797e-08,5.656802291e-08) (-2.05138522e-07,-2.751341749e-08) (7.187037426e-07,-3.7854683e-06) (-7.485119781e-06,1.298409725e-05) (1.719364356e-06,1.585304449e-06) (-1.709340046e-08,2.258118837e-08) (-9.133145593e-08,-1.217697277e-08) (1.259848231e-07,-2.133345284e-06) (-3.269905813e-06,5.697606153e-06) (1.2237451e-06,2.432502756e-06) +(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-0.001080302854,-1.772989558e-14) (-0.0004198818397,-1.679889e-14) (-8.346906342e-07,8.241968752e-15) (5.740844431e-07,7.132640533e-15) (-0.001008053523,1.105114258e-14) (-3.508811352e-07,8.716645911e-15) (2.231317455e-07,7.573389404e-15) (-0.000408453118,9.53184962e-15) (-4.05730137e-15,-5.694584659e-20) (-8.286469788e-07,-3.094091175e-15) (8.264893354e-06,-1.417463855e-14) (-6.263236738e-06,1.984783545e-15) (-0.0004004110629,7.138747102e-15) (-9.588196122e-15,-1.375244239e-19) (-3.576931874e-07,-3.070677107e-15) (3.541007804e-06,-1.454441084e-14) (-2.664277624e-06,2.070054798e-15) (-0.0001730155867,5.991069674e-15) +(-1.400249322e-05,8.517683491e-08) (-5.116927849e-06,-4.684231583e-09) (2.138336521e-06,-4.599405375e-07) (-5.084421801e-06,3.325365207e-06) (-1.137644059e-05,-2.898889879e-06) (8.535405516e-07,-2.174669906e-07) (-1.941555583e-06,1.356036493e-06) (-4.835683466e-06,-1.14408203e-06) (-7.579709164e-09,2.762279321e-08) (-1.753976932e-07,2.708152116e-07) (1.596704523e-06,6.809813049e-07) (-4.264485678e-06,-1.255174248e-07) (-4.111833037e-07,-9.800694867e-07) (-3.057891808e-09,1.074053857e-08) (-8.079752589e-08,1.194200536e-07) (7.764209185e-07,2.571247395e-07) (-2.00927223e-06,2.278516912e-07) (-4.360917395e-07,-6.207081838e-07) +(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-0.0008500596729,-1.395115192e-14) (-0.0003303931097,-1.321857004e-14) (6.278742745e-07,-6.267371997e-15) (1.508336107e-06,1.829707832e-14) (-0.0007955499976,8.763968249e-15) (2.638376718e-07,-6.633341259e-15) (5.85025715e-07,1.938064798e-14) (-0.0003223495585,7.571202097e-15) (2.037832522e-15,1.279206619e-19) (-1.243278326e-06,-5.349347949e-15) (1.777719935e-06,-3.844960139e-15) (9.187079385e-06,-3.340764983e-15) (-0.0003238706207,6.12567423e-15) (5.892571045e-15,3.456051733e-19) (-5.39163517e-07,-5.385811883e-15) (7.135796431e-07,-3.765088724e-15) (3.990946276e-06,-3.584746342e-15) (-0.0001398980045,5.217450273e-15) +(2.184072547e-05,-1.328566161e-07) (7.98125124e-06,7.306342835e-09) (-2.353317487e-07,2.431358997e-07) (8.89348769e-06,5.889722967e-06) (1.368174814e-05,-6.080660701e-06) (-9.52595112e-08,1.163421003e-07) (3.483016518e-06,2.340901803e-06) (5.851874148e-06,-2.448645606e-06) (-8.904308778e-08,1.862177347e-09) (-1.575009145e-07,2.041408412e-07) (-4.182973373e-07,-3.929932664e-07) (5.261261828e-06,1.934800189e-06) (4.914717562e-07,-1.551016991e-06) (-3.785085941e-08,1.286475674e-10) (-7.066595277e-08,8.72698674e-08) (-1.727701374e-07,-1.345678508e-07) (2.079943364e-06,1.093768337e-06) (9.353131396e-07,-1.037909249e-06) +(-3.073369271e-12,0.05475639745) (-2.298249668e-13,0.001163347614) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-7.745507745e-13,0.0230047579) (-3.345332529e-14,0.0003354043926) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.0001316010582,0.0001730202177) (4.719344493e-05,6.262294536e-05) (4.519028303e-08,5.711350518e-08) (1.910649511e-05,-1.705015571e-05) (-6.749216419e-05,0.0001071825063) (7.477779824e-10,1.451711457e-08) (7.979649417e-06,-7.288814279e-06) (-2.727059995e-05,4.450298833e-05) (4.000715671e-08,8.067961321e-08) (-1.541872643e-08,2.767095688e-07) (3.739052008e-08,-3.900001586e-08) (7.12896119e-06,1.245013658e-05) (-1.166866017e-05,-5.412850993e-06) (1.666657866e-08,3.282419505e-08) (-8.45933864e-09,1.254389648e-07) (-1.154750606e-08,-4.182690836e-10) (4.482863104e-06,7.872116711e-06) (-6.706290426e-06,-4.616626192e-06) +(0.006795422316,-0.01755265315) (0.0001332844561,-0.0003430612962) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.0009663293567,-0.000557758073) (0.0003697518979,-0.0002132767987) (-2.479801e-08,1.35141435e-08) (4.235881379e-06,-2.446359655e-06) (0.0001046382544,-6.061686563e-05) (-1.052747575e-08,5.172847492e-09) (1.625594824e-06,-9.39339898e-07) (4.287160337e-05,-2.497754477e-05) (3.555927322e-15,-5.410131436e-13) (5.105327932e-06,-2.95278483e-06) (4.942304705e-06,-2.859189489e-06) (2.434700456e-06,-1.392926363e-06) (-0.0001315692818,7.592744687e-05) (7.213325803e-15,-1.249383665e-12) (2.216852204e-06,-1.285187123e-06) (2.079248808e-06,-1.20628146e-06) (1.077501276e-06,-6.092902592e-07) (-5.766194006e-05,3.325636998e-05) +(0.001733237864,-0.004133350463) (2.40958005e-05,-5.670819824e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-0.001217455938,1.048968745e-13) (-0.0004731891963,1.331680902e-13) (2.838254859e-07,2.667032522e-15) (-1.646163048e-06,2.058752428e-14) (-0.001134965332,-9.353993365e-14) (1.193742549e-07,2.806929651e-15) (-6.363442288e-07,2.174782716e-14) (-0.0004599365052,-1.036925755e-13) (-6.399069642e-15,4.744497745e-19) (8.721502128e-07,-9.270421917e-16) (-1.184494378e-05,-2.305635264e-14) (-2.850339931e-06,-1.637935329e-15) (-0.0004361013826,-7.942071128e-14) (-1.451212062e-14,1.126939084e-18) (3.845477493e-07,-8.539000264e-16) (-4.942394664e-06,-2.315955851e-14) (-1.259856574e-06,-1.799159549e-15) (-0.0001885786623,-8.350119887e-14) +(-2.336997728e-05,-8.899656399e-05) (-8.620275597e-06,-3.25033392e-05) (9.817825478e-08,-5.801548646e-06) (5.084310361e-06,3.009317751e-05) (-2.466390723e-05,5.241278162e-05) (1.420505313e-07,-2.363204515e-06) (1.623034791e-06,1.170234502e-05) (-1.115234346e-05,2.211479671e-05) (-4.043179797e-08,-5.656802291e-08) (-2.05138522e-07,2.751341749e-08) (7.187037426e-07,3.7854683e-06) (-7.485119781e-06,-1.298409725e-05) (1.719364356e-06,-1.585304449e-06) (-1.709340046e-08,-2.258118837e-08) (-9.133145593e-08,1.217697277e-08) (1.259848231e-07,2.133345284e-06) (-3.269905813e-06,-5.697606153e-06) (1.2237451e-06,-2.432502756e-06) +(0,0) (0,0) (0.5510606563,0) (0.2287898526,0) (3.497233206e-05,0) (0.03259042882,0) (0.003852456277,0) (2.728501408e-05,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.002158226331,0) (0.0007179444763,0) (1.470354086e-05,0) (0.0001090752041,0) (0.001676734109,0) (5.595492446e-06,0) (4.130750209e-05,0) (0.0006153632011,0) (1.410625631e-14,3.155443621e-30) (3.07334846e-06,3.944304526e-31) (0.0001267708775,0) (1.204204804e-05,1.57772181e-30) (0.0005522171709,0) (3.067480352e-14,0) (1.316513672e-06,0) (5.166052285e-05,0) (5.219413394e-06,0) (0.0002226698044,0) +(0.0003247731928,0) (0.0001074385849,0) (2.242104943e-05,0) (0.000101024546,0) (0.0001905669123,0) (8.493601038e-06,0) (3.626944176e-05,0) (7.576061162e-05,0) (2.975099223e-07,-2.067951531e-24) (6.545291938e-07,4.301339185e-23) (1.321630137e-05,8.271806126e-25) (4.053453297e-05,2.067951531e-25) (6.936601868e-06,-1.98523347e-23) (1.220223247e-07,-4.135903063e-25) (2.860486991e-07,-1.240770919e-24) (7.129718703e-06,1.447566072e-24) (1.765029723e-05,3.30872245e-24) (7.735483806e-06,-1.32348898e-23) +(0,0) (0,0) (0.3120626857,0) (-0.3145069131,0) (0.002444227455,0) (0.01080935722,0) (-0.01100723887,0) (0.0001978816593,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.001915090305,-1.335751503e-13) (0.0006370640959,-1.537988172e-13) (-4.324103528e-05,2.064957961e-14) (-3.803898884e-05,3.11900116e-15) (0.001489241722,1.064118355e-13) (-1.644703661e-05,2.184936467e-14) (-1.448432252e-05,3.401844515e-15) (0.0005464819933,1.104512803e-13) (8.944071612e-15,-5.37611904e-19) (-2.920048495e-06,-7.799358519e-15) (-8.845527695e-05,-2.047495515e-14) (2.646077292e-05,6.820300902e-15) (0.0005070239929,8.329729939e-14) (2.026694378e-14,-1.283138686e-18) (-1.22457607e-06,-7.793369903e-15) (-3.701248625e-05,-2.141087058e-14) (1.103773763e-05,7.186674661e-15) (0.0002042932449,8.338536484e-14) +(1.284349739e-05,4.772636154e-05) (4.176499206e-06,1.580615794e-05) (-1.637198807e-06,-8.291662982e-06) (-1.365739124e-05,-1.476125239e-05) (2.456488526e-05,-2.98039344e-05) (-5.950508007e-07,-3.103480952e-06) (-4.942325707e-06,-5.332056991e-06) (9.785063172e-06,-1.163148615e-05) (1.150138939e-07,-4.234158657e-08) (4.359031483e-07,-9.22545632e-07) (-1.273242959e-06,5.816351088e-06) (5.466313628e-06,1.016188654e-05) (-2.867123006e-06,-1.31041973e-06) (4.484840704e-08,-1.742515531e-08) (1.996404585e-07,-4.006392654e-07) (-7.036287942e-07,2.636380213e-06) (3.2181333e-06,4.377497957e-06) (-2.131972104e-06,3.142402084e-07) +(0,0) (0,0) (0.1694498108,0) (-0.164834733,0) (-0.0046150778,0) (0.003098423631,0) (-0.002121086697,0) (-0.0009773369338,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.001506930239,-1.051064969e-13) (0.0005012876667,-1.210199267e-13) (3.252694177e-05,-1.903334618e-14) (-9.99427541e-05,3.755176299e-14) (0.001175300936,8.391686018e-14) (1.236700242e-05,-2.013420008e-14) (-3.797622396e-05,3.981209702e-14) (0.000431281392,8.71025428e-14) (-4.492296834e-15,5.108271321e-20) (-4.381157595e-06,-1.419353245e-14) (-1.902610263e-05,4.116223754e-15) (-3.881335348e-05,-8.189939113e-15) (0.0004101039919,6.692950174e-14) (-1.245537216e-14,2.367029216e-19) (-1.845846564e-06,-1.433977071e-14) (-7.458711811e-06,4.403933919e-15) (-1.653394432e-05,-8.760466044e-15) (0.0001651886852,6.698363681e-14) +(-2.003295385e-05,-7.44423399e-05) (-6.514395052e-06,-2.465403487e-05) (9.239836074e-07,9.251150332e-07) (-1.431917237e-05,3.227521164e-05) (-1.064377077e-06,4.92444156e-05) (3.961344705e-07,3.661838786e-07) (-5.649364548e-06,1.15785494e-05) (-1.372201324e-06,1.935529002e-05) (2.280251171e-07,3.053268573e-07) (4.078376831e-07,-7.060455894e-07) (1.056705235e-06,-1.661036676e-06) (-2.573322934e-06,-1.49414439e-05) (-2.046729951e-06,-4.370276278e-06) (9.88697933e-08,1.296933022e-07) (1.816535076e-07,-2.975472314e-07) (4.141876113e-07,-6.018640503e-07) (-2.328660063e-07,-6.309697042e-06) (-1.439856402e-06,-3.698707777e-06) +(0,0) (0,0) (-3.574796693e-12,-0.03098131397) (-3.042140382e-12,0.00541448473) (-3.236912117e-15,3.334652474e-05) (1.933870538e-12,0.004093227976) (5.083089287e-13,-0.0006826519903) (1.305409463e-14,-4.426198274e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-2.140675696e-12,-0.04078133152) (-9.245860848e-14,-0.0005088910162) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.0004726934192,-0.0006043753589) (0.0001547416424,-0.0001970355262) (2.236160812e-07,-1.708611603e-07) (6.618596498e-05,5.295934623e-05) (-0.0002245129371,-0.0003510429903) (5.214913651e-08,4.470559756e-10) (2.552946888e-05,2.119081374e-05) (-8.398635774e-05,-0.0001357770582) (1.813072306e-07,-3.399995689e-07) (-6.79948831e-08,-8.73769186e-07) (1.553466833e-07,1.010485649e-07) (1.954284301e-05,-3.352174778e-05) (-3.632752486e-05,1.165744445e-05) (6.941991832e-08,-1.426106139e-07) (-2.543402913e-08,-3.894818368e-07) (-8.781307956e-10,-3.854033352e-08) (1.234914694e-05,-2.097449532e-05) (-2.027785628e-05,1.11249509e-05) +(0,0) (0,0) (-0.01019486506,-0.00191691618) (-0.004158204266,-0.001003171945) (-9.946946565e-06,2.57534494e-05) (0.001703617024,0.0002334474815) (0.0001765055937,8.9806977e-05) (6.508734384e-06,-1.251512516e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-0.001713045537,0.0009887570644) (-0.0005610046357,0.0003235933974) (-1.284657557e-06,7.000983619e-07) (-0.0002806706318,0.000162096449) (-0.0001545866867,8.955195664e-05) (-4.934599317e-07,2.424695986e-07) (-0.0001055234843,6.097609649e-05) (-5.735923718e-05,3.341822561e-05) (-7.750395513e-15,1.19262685e-12) (1.799053821e-05,-1.04052451e-05) (-5.289516915e-05,3.06005639e-05) (-1.028606432e-05,5.88480201e-06) (0.0001666007481,-9.614379032e-05) (-1.504199394e-14,2.640869476e-12) (7.589476826e-06,-4.399886433e-06) (-2.173340822e-05,1.260869167e-05) (-4.46394035e-06,2.524206165e-06) (6.808603243e-05,-3.926843738e-05) +(-0.01566451268,-0.00221165718) (-0.0001948641577,-2.796746384e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-0.001080302854,1.772989558e-14) (-0.0004198818397,1.679889e-14) (-8.346906342e-07,-8.241968752e-15) (5.740844431e-07,-7.132640533e-15) (-0.001008053523,-1.105114258e-14) (-3.508811352e-07,-8.716645911e-15) (2.231317455e-07,-7.573389404e-15) (-0.000408453118,-9.53184962e-15) (-4.057328475e-15,5.694584659e-20) (-8.286469788e-07,3.094091175e-15) (8.264893354e-06,1.417463855e-14) (-6.263236738e-06,-1.984783545e-15) (-0.0004004110629,-7.138747102e-15) (-9.588196122e-15,1.375244239e-19) (-3.576931874e-07,3.070677107e-15) (3.541007804e-06,1.454441084e-14) (-2.664277624e-06,-2.070054798e-15) (-0.0001730155867,-5.991069674e-15) +(-1.400249322e-05,-8.517683491e-08) (-5.116927849e-06,4.684231583e-09) (2.138336521e-06,4.599405375e-07) (-5.084421801e-06,-3.325365207e-06) (-1.137644059e-05,2.898889879e-06) (8.535405516e-07,2.174669906e-07) (-1.941555583e-06,-1.356036493e-06) (-4.835683466e-06,1.14408203e-06) (-7.579709164e-09,-2.762279321e-08) (-1.753976932e-07,-2.708152116e-07) (1.596704523e-06,-6.809813049e-07) (-4.264485678e-06,1.255174248e-07) (-4.111833037e-07,9.800694867e-07) (-3.057891808e-09,-1.074053857e-08) (-8.079752589e-08,-1.194200536e-07) (7.764209185e-07,-2.571247395e-07) (-2.00927223e-06,-2.278516912e-07) (-4.360917395e-07,6.207081838e-07) +(0,0) (0,0) (0.3120626857,0) (-0.3145069131,0) (0.002444227455,0) (0.01080935722,0) (-0.01100723887,0) (0.0001978816593,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.001915090305,1.335751503e-13) (0.0006370640959,1.537988172e-13) (-4.324103528e-05,-2.064957961e-14) (-3.803898884e-05,-3.11900116e-15) (0.001489241722,-1.064118355e-13) (-1.644703661e-05,-2.184936467e-14) (-1.448432252e-05,-3.401844515e-15) (0.0005464819933,-1.104512803e-13) (8.944071612e-15,5.37611904e-19) (-2.920048495e-06,7.799358519e-15) (-8.845527695e-05,2.047495515e-14) (2.646077292e-05,-6.820300902e-15) (0.0005070239929,-8.329729939e-14) (2.026694378e-14,1.283138686e-18) (-1.22457607e-06,7.793369903e-15) (-3.701248625e-05,2.141087058e-14) (1.103773763e-05,-7.186674661e-15) (0.0002042932449,-8.338536484e-14) +(1.284349739e-05,-4.772636154e-05) (4.176499206e-06,-1.580615794e-05) (-1.637198807e-06,8.291662982e-06) (-1.365739124e-05,1.476125239e-05) (2.456488526e-05,2.98039344e-05) (-5.950508007e-07,3.103480952e-06) (-4.942325707e-06,5.332056991e-06) (9.785063172e-06,1.163148615e-05) (1.150138939e-07,4.234158657e-08) (4.359031483e-07,9.22545632e-07) (-1.273242959e-06,-5.816351088e-06) (5.466313628e-06,-1.016188654e-05) (-2.867123006e-06,1.31041973e-06) (4.484840704e-08,1.742515531e-08) (1.996404585e-07,4.006392654e-07) (-7.036287942e-07,-2.636380213e-06) (3.2181333e-06,-4.377497957e-06) (-2.131972104e-06,-3.142402084e-07) +(0,0) (0,0) (0.1767194204,0) (0.4323382235,0) (0.1708278373,0) (0.003585169254,0) (0.0314498852,0) (0.001435115663,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.001699344885,0) (0.0005652953336,0) (0.0001271657725,0) (1.32657526e-05,0) (0.001322714732,0) (4.834337921e-05,0) (5.078874012e-06,0) (0.0004853110627,0) (5.670946568e-15,0) (2.774395199e-06,1.972152263e-31) (6.172029553e-05,0) (5.814397199e-05,0) (0.0004655294022,-4.930380658e-32) (1.339042538e-14,0) (1.139058852e-06,0) (2.651781405e-05,0) (2.334202003e-05,0) (0.0001874332715,-2.958228395e-31) +(7.521436699e-06,0) (2.487726124e-06,0) (3.185938962e-06,0) (4.003174709e-06,0) (7.827739219e-06,0) (1.175670888e-06,0) (1.457353976e-06,0) (3.049591687e-06,0) (5.048909171e-08,2.568783543e-24) (1.590612012e-06,1.609124785e-23) (2.682375849e-06,-5.764414894e-24) (3.284718312e-06,6.203854594e-25) (1.43263148e-06,1.550963649e-25) (1.897206644e-08,-6.720842477e-25) (7.004686066e-07,5.11818004e-24) (1.044304049e-06,-3.231174268e-25) (1.672429076e-06,0) (6.003570143e-07,8.271806126e-25) +(0,0) (0,0) (0.09595851645,0) (0.2265907446,0) (-0.3225492611,0) (0.001027662692,0) (0.006060369352,0) (-0.007088032044,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.001337166288,-3.155443621e-30) (0.0004448148634,6.310887242e-30) (-9.565713795e-05,1.029370554e-14) (3.485412968e-05,-1.023797789e-14) (0.0010438788,-5.572765633e-17) (-3.635078475e-05,1.089033375e-14) (1.331622219e-05,-1.083246436e-14) (0.0003830055394,-5.786938279e-17) (-2.848348185e-15,-1.388191666e-19) (4.162623539e-06,2.367315108e-15) (1.327559777e-05,-5.945058718e-15) (-8.528709815e-05,3.98658355e-15) (0.0003765412857,-4.087011207e-16) (-8.229297777e-15,-3.646221352e-19) (1.716943454e-06,2.411501735e-15) (5.343838064e-06,-6.246511632e-15) (-3.496510539e-05,4.239624517e-15) (0.0001515559446,-4.042499974e-16) +(-1.173174173e-05,0) (-3.880290635e-06,0) (-4.095921988e-07,2.741514604e-07) (-2.780116483e-06,-6.455501517e-06) (-7.838840513e-06,6.181350057e-06) (-1.61552776e-07,1.190893908e-07) (-9.323685179e-07,-2.408299986e-06) (-3.148837626e-06,2.289210596e-06) (4.469778006e-08,1.504883457e-07) (1.26676856e-06,1.046269265e-07) (-8.328059922e-07,-3.050222055e-07) (-4.092802746e-06,-1.369814789e-06) (1.671585455e-06,1.419721722e-06) (1.781827059e-08,6.178672245e-08) (5.435245616e-07,4.675798968e-08) (-2.634292994e-07,-9.375785702e-08) (-1.60734289e-06,-1.092677106e-06) (2.465845742e-07,1.077890251e-06) +(0,0) (0,0) (-2.024388139e-12,-0.01754455146) (4.181890806e-12,-0.007443043734) (-2.262288214e-13,0.002330599262) (6.414121631e-13,0.001357612187) (-1.452340376e-12,0.001950473409) (9.467343129e-14,-0.0003210053167) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(6.244874297e-13,-0.03618709099) (2.697252669e-14,-0.0004515616539) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-7.012155158e-05,-9.336432636e-05) (-2.297215943e-05,-3.042472648e-05) (4.685860845e-08,9.517319326e-08) (-1.668578539e-05,2.511282975e-06) (2.59611055e-05,-8.036389655e-05) (-3.816851651e-09,1.90234778e-08) (-6.59413449e-06,8.655407409e-07) (9.998297787e-06,-3.04310274e-05) (1.184799872e-07,-1.056362703e-07) (1.186276746e-06,-6.777499395e-07) (2.950446186e-08,-7.810129287e-08) (-5.76833804e-06,-9.419931895e-06) (1.281309476e-05,-1.168117099e-05) (4.588000485e-08,-4.250210784e-08) (5.277564843e-07,-3.074518553e-07) (-1.416452721e-08,4.128237912e-09) (-2.950353115e-06,-6.886971124e-06) (6.040699198e-06,-2.242389439e-06) +(0,0) (0,0) (-0.005773297248,-0.001085539323) (0.00571609262,0.001379014446) (-0.0006951952716,0.001799916802) (0.0005650433465,7.742816862e-05) (-0.0005043118189,-0.0002565965133) (4.720390306e-05,-9.07646126e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-0.001520061568,0.0008773681614) (-0.0004978043886,0.0002871388274) (3.777996285e-06,-2.058890319e-06) (9.788133901e-05,-5.652966743e-05) (-0.0001373008054,7.9538258e-05) (1.450444915e-06,-7.126998011e-07) (3.700141872e-05,-2.138104225e-05) (-5.093868176e-05,2.967752788e-05) (-4.959570183e-15,7.561817459e-13) (-1.709316227e-05,9.88622697e-06) (3.690797863e-05,-2.135176004e-05) (-2.260223605e-05,1.293105702e-05) (0.0001529662259,-8.827543049e-05) (-1.004876182e-14,1.74482951e-12) (-7.059472203e-06,4.092624187e-06) (1.557102849e-05,-9.033571511e-06) (-9.440103444e-06,5.338056848e-06) (6.246700819e-05,-3.602768019e-05) +(-0.000944479054,0.002214483209) (-1.168954479e-05,2.758085064e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-0.0008500596729,1.395115192e-14) (-0.0003303931097,1.321857004e-14) (6.278742745e-07,6.267371997e-15) (1.508336107e-06,-1.829707832e-14) (-0.0007955499976,-8.763968249e-15) (2.638376718e-07,6.633341259e-15) (5.85025715e-07,-1.938064798e-14) (-0.0003223495585,-7.571202097e-15) (2.037825746e-15,-1.279206619e-19) (-1.243278326e-06,5.349347949e-15) (1.777719935e-06,3.844960139e-15) (9.187079385e-06,3.340764983e-15) (-0.0003238706207,-6.12567423e-15) (5.892564269e-15,-3.456051733e-19) (-5.39163517e-07,5.385811883e-15) (7.135796431e-07,3.765088724e-15) (3.990946276e-06,3.584746342e-15) (-0.0001398980045,-5.217450273e-15) +(2.184072547e-05,1.328566161e-07) (7.98125124e-06,-7.306342835e-09) (-2.353317487e-07,-2.431358997e-07) (8.89348769e-06,-5.889722967e-06) (1.368174814e-05,6.080660701e-06) (-9.52595112e-08,-1.163421003e-07) (3.483016518e-06,-2.340901803e-06) (5.851874148e-06,2.448645606e-06) (-8.904308778e-08,-1.862177347e-09) (-1.575009145e-07,-2.041408412e-07) (-4.182973373e-07,3.929932664e-07) (5.261261828e-06,-1.934800189e-06) (4.914717562e-07,1.551016991e-06) (-3.785085941e-08,-1.286475674e-10) (-7.066595277e-08,-8.72698674e-08) (-1.727701374e-07,1.345678508e-07) (2.079943364e-06,-1.093768337e-06) (9.353131396e-07,1.037909249e-06) +(0,0) (0,0) (0.1694498108,0) (-0.164834733,0) (-0.0046150778,0) (0.003098423631,0) (-0.002121086697,0) (-0.0009773369338,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.001506930239,1.051064969e-13) (0.0005012876667,1.210199267e-13) (3.252694177e-05,1.903334618e-14) (-9.99427541e-05,-3.755176299e-14) (0.001175300936,-8.391686018e-14) (1.236700242e-05,2.013420008e-14) (-3.797622396e-05,-3.981209702e-14) (0.000431281392,-8.71025428e-14) (-4.492290058e-15,-5.108271322e-20) (-4.381157595e-06,1.419353245e-14) (-1.902610263e-05,-4.116223754e-15) (-3.881335348e-05,8.189939113e-15) (0.0004101039919,-6.692950174e-14) (-1.245536538e-14,-2.367029216e-19) (-1.845846564e-06,1.433977071e-14) (-7.458711811e-06,-4.403933919e-15) (-1.653394432e-05,8.760466044e-15) (0.0001651886852,-6.698363681e-14) +(-2.003295385e-05,7.44423399e-05) (-6.514395052e-06,2.465403487e-05) (9.239836074e-07,-9.251150332e-07) (-1.431917237e-05,-3.227521164e-05) (-1.064377077e-06,-4.92444156e-05) (3.961344705e-07,-3.661838786e-07) (-5.649364548e-06,-1.15785494e-05) (-1.372201324e-06,-1.935529002e-05) (2.280251171e-07,-3.053268573e-07) (4.078376831e-07,7.060455894e-07) (1.056705235e-06,1.661036676e-06) (-2.573322934e-06,1.49414439e-05) (-2.046729951e-06,4.370276278e-06) (9.88697933e-08,-1.296933022e-07) (1.816535076e-07,2.975472314e-07) (4.141876113e-07,6.018640503e-07) (-2.328660063e-07,6.309697042e-06) (-1.439856402e-06,3.698707777e-06) +(0,0) (0,0) (0.09595851645,0) (0.2265907446,0) (-0.3225492611,0) (0.001027662692,0) (0.006060369352,0) (-0.007088032044,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.001337166288,3.155443621e-30) (0.0004448148634,-6.310887242e-30) (-9.565713795e-05,-1.029370554e-14) (3.485412968e-05,1.023797789e-14) (0.0010438788,5.572765633e-17) (-3.635078475e-05,-1.089033375e-14) (1.331622219e-05,1.083246436e-14) (0.0003830055394,5.786938279e-17) (-2.848334632e-15,1.388191666e-19) (4.162623539e-06,-2.367315108e-15) (1.327559777e-05,5.945058718e-15) (-8.528709815e-05,-3.98658355e-15) (0.0003765412857,4.087011207e-16) (-8.229297777e-15,3.646221352e-19) (1.716943454e-06,-2.411501735e-15) (5.343838064e-06,6.246511632e-15) (-3.496510539e-05,-4.239624517e-15) (0.0001515559446,4.042499974e-16) +(-1.173174173e-05,0) (-3.880290635e-06,0) (-4.095921988e-07,-2.741514604e-07) (-2.780116483e-06,6.455501517e-06) (-7.838840513e-06,-6.181350057e-06) (-1.61552776e-07,-1.190893908e-07) (-9.323685179e-07,2.408299986e-06) (-3.148837626e-06,-2.289210596e-06) (4.469778006e-08,-1.504883457e-07) (1.26676856e-06,-1.046269265e-07) (-8.328059922e-07,3.050222055e-07) (-4.092802746e-06,1.369814789e-06) (1.671585455e-06,-1.419721722e-06) (1.781827059e-08,-6.178672245e-08) (5.435245616e-07,-4.675798968e-08) (-2.634292994e-07,9.375785702e-08) (-1.60734289e-06,1.092677106e-06) (2.465845742e-07,-1.077890251e-06) +(0,0) (0,0) (0.05210540448,0) (0.1187574051,0) (0.6090226715,0) (0.0002945720367,0) (0.001167828641,0) (0.03500776944,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.001052178223,0) (0.0003500121988,0) (7.195558885e-05,0) (9.157492925e-05,0) (0.0008238230987,0) (2.733320619e-05,0) (3.491359954e-05,0) (0.0003022664318,0) (1.430604767e-15,-9.860761315e-32) (6.245481801e-06,-9.860761315e-32) (2.855486911e-06,-2.465190329e-32) (0.0001251013452,-3.45126646e-31) (0.0003045636627,3.45126646e-31) (5.057437216e-15,2.958228395e-31) (2.588009232e-06,2.958228395e-31) (1.076883833e-06,-1.972152263e-31) (5.23758695e-05,4.930380658e-32) (0.0001225460354,2.958228395e-31) +(1.829886623e-05,0) (6.052376612e-06,0) (7.624904163e-08,0) (1.234084223e-05,0) (1.273119943e-05,0) (3.426263494e-08,0) (4.576252571e-06,0) (4.96973533e-06,0) (4.881179852e-07,-9.564275833e-25) (1.015740713e-06,-3.282873056e-24) (2.932491235e-07,-1.783608196e-24) (5.670935863e-06,3.231174268e-24) (3.357323756e-06,-8.685396432e-24) (2.179567445e-07,9.04728795e-25) (4.248659482e-07,5.014782464e-24) (7.486855157e-08,1.395867284e-24) (2.258687365e-06,-1.240770919e-24) (2.036540451e-06,-3.30872245e-24) +(0,0) (0,0) (-1.099241284e-12,-0.009526678654) (2.191751042e-12,-0.003900938503) (4.271548499e-13,-0.004400530276) (1.838561317e-13,0.0003891496597) (-2.798649041e-13,0.0003758547668) (-4.675917989e-13,0.001585444316) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(4.913914448e-13,-0.02847459545) (2.122391617e-14,-0.0003553210569) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.000109373776,0.0001456272528) (3.583137798e-05,4.745569863e-05) (2.165436796e-09,-1.626790533e-08) (7.53822607e-06,-2.865145302e-05) (-8.94590791e-05,5.997709861e-05) (2.45146613e-09,-2.227450843e-09) (2.788397132e-06,-1.145065455e-05) (-3.316707843e-05,2.391603938e-05) (-2.099708033e-07,-4.46662106e-07) (9.001737584e-07,-6.177928983e-07) (-2.791793818e-10,2.760341761e-08) (1.111578782e-05,9.331810361e-06) (3.374329489e-06,-2.632715043e-05) (-9.532770745e-08,-1.893356844e-07) (3.889864278e-07,-2.737945217e-07) (3.202416713e-09,-2.313056759e-09) (7.335118092e-06,4.691344391e-06) (-1.544924858e-06,-1.176658097e-05) +(0,0) (0,0) (-0.003134896197,-0.0005894470608) (0.00299583431,0.0007227487492) (0.00131263572,-0.003398520076) (0.0001619655658,2.219422141e-05) (-9.718051026e-05,-4.944595617e-05) (-0.0002331399385,0.0004482861549) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-0.001196093331,0.0006903761196) (-0.0003917081531,0.0002259413986) (-2.841899237e-06,1.54874658e-06) (0.0002571711525,-0.0001485247327) (-0.0001083569998,6.277113221e-05) (-1.090631474e-06,5.358995889e-07) (9.701345456e-05,-5.605862798e-05) (-4.020060284e-05,2.342138568e-05) (2.472509502e-15,-3.798042406e-13) (-2.564609383e-05,1.483301339e-05) (7.938644405e-06,-4.592612127e-06) (3.315355071e-05,-1.896761248e-05) (0.0001237260184,-7.140117023e-05) (6.128112273e-15,-1.072312545e-12) (-1.064099064e-05,6.168956339e-06) (3.137854976e-06,-1.820434486e-06) (1.414077322e-05,-7.996125442e-06) (5.05099567e-05,-2.913148266e-05) +(0.001473173913,-0.003454093428) (1.823304854e-05,-4.301989491e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-3.073369271e-12,-0.05475639745) (-2.298249668e-13,-0.001163347614) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-7.745507745e-13,-0.0230047579) (-3.345332529e-14,-0.0003354043926) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.0001316010582,-0.0001730202177) (4.719344493e-05,-6.262294536e-05) (4.519028303e-08,-5.711350518e-08) (1.910649511e-05,1.705015571e-05) (-6.749216419e-05,-0.0001071825063) (7.477779824e-10,-1.451711457e-08) (7.979649417e-06,7.288814279e-06) (-2.727059995e-05,-4.450298833e-05) (4.000715671e-08,-8.067961321e-08) (-1.541872643e-08,-2.767095688e-07) (3.739052008e-08,3.900001586e-08) (7.12896119e-06,-1.245013658e-05) (-1.166866017e-05,5.412850993e-06) (1.666657866e-08,-3.282419505e-08) (-8.45933864e-09,-1.254389648e-07) (-1.154750606e-08,4.182690836e-10) (4.482863104e-06,-7.872116711e-06) (-6.706290426e-06,4.616626192e-06) +(0,0) (0,0) (-3.574796693e-12,0.03098131397) (-3.042140382e-12,-0.00541448473) (-3.236912117e-15,-3.334652474e-05) (1.933870538e-12,-0.004093227976) (5.083089287e-13,0.0006826519903) (1.305409463e-14,4.426198274e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-2.140675696e-12,0.04078133152) (-9.245860848e-14,0.0005088910162) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.0004726934192,0.0006043753589) (0.0001547416424,0.0001970355262) (2.236160812e-07,1.708611603e-07) (6.618596498e-05,-5.295934623e-05) (-0.0002245129371,0.0003510429903) (5.214913651e-08,-4.470559756e-10) (2.552946888e-05,-2.119081374e-05) (-8.398635774e-05,0.0001357770582) (1.813072306e-07,3.399995689e-07) (-6.79948831e-08,8.73769186e-07) (1.553466833e-07,-1.010485649e-07) (1.954284301e-05,3.352174778e-05) (-3.632752486e-05,-1.165744445e-05) (6.941991832e-08,1.426106139e-07) (-2.543402913e-08,3.894818368e-07) (-8.781307956e-10,3.854033352e-08) (1.234914694e-05,2.097449532e-05) (-2.027785628e-05,-1.11249509e-05) +(0,0) (0,0) (-2.024388139e-12,0.01754455146) (4.181890806e-12,0.007443043734) (-2.262288214e-13,-0.002330599262) (6.414121631e-13,-0.001357612187) (-1.452340376e-12,-0.001950473409) (9.467343129e-14,0.0003210053167) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(6.244874297e-13,0.03618709099) (2.697252669e-14,0.0004515616539) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-7.012155158e-05,9.336432636e-05) (-2.297215943e-05,3.042472648e-05) (4.685860845e-08,-9.517319326e-08) (-1.668578539e-05,-2.511282975e-06) (2.59611055e-05,8.036389655e-05) (-3.816851651e-09,-1.90234778e-08) (-6.59413449e-06,-8.655407409e-07) (9.998297787e-06,3.04310274e-05) (1.184799872e-07,1.056362703e-07) (1.186276746e-06,6.777499395e-07) (2.950446186e-08,7.810129287e-08) (-5.76833804e-06,9.419931895e-06) (1.281309476e-05,1.168117099e-05) (4.588000485e-08,4.250210784e-08) (5.277564843e-07,3.074518553e-07) (-1.416452721e-08,-4.128237912e-09) (-2.950353115e-06,6.886971124e-06) (6.040699198e-06,2.242389439e-06) +(0,0) (0,0) (-1.099241284e-12,0.009526678654) (2.191751042e-12,0.003900938503) (4.271548499e-13,0.004400530276) (1.838561317e-13,-0.0003891496597) (-2.798649041e-13,-0.0003758547668) (-4.675917989e-13,-0.001585444316) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(4.913914448e-13,0.02847459545) (2.122391617e-14,0.0003553210569) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.000109373776,-0.0001456272528) (3.583137798e-05,-4.745569863e-05) (2.165436796e-09,1.626790533e-08) (7.53822607e-06,2.865145302e-05) (-8.94590791e-05,-5.997709861e-05) (2.45146613e-09,2.227450843e-09) (2.788397132e-06,1.145065455e-05) (-3.316707843e-05,-2.391603938e-05) (-2.099708033e-07,4.46662106e-07) (9.001737584e-07,6.177928983e-07) (-2.791793818e-10,-2.760341761e-08) (1.111578782e-05,-9.331810361e-06) (3.374329489e-06,2.632715043e-05) (-9.532770745e-08,1.893356844e-07) (3.889864278e-07,2.737945217e-07) (3.202416713e-09,2.313056759e-09) (7.335118092e-06,-4.691344391e-06) (-1.544924858e-06,1.176658097e-05) +(0.003323277612,0) (0.001069070815,0) (0.00174180792,0) (0.0001281378722,0) (3.179629858e-05,0) (0.0005140931207,0) (0.0001209653547,0) (7.18021662e-05,0) (0,-4.930380658e-32) (-2.710505431e-20,0) (7.588732639e-10,0) (1.442267609e-08,0) (0.0005156165052,0) (0,0) (4.235164736e-21,-1.972152263e-30) (8.97091465e-10,0) (2.352707791e-08,0) (0.0002128748988,0) +(0.7705943424,0) (0.0003607104378,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.001812676218,0) (0.0005842219029,0) (3.532291747e-09,0) (7.112404456e-05,0) (0.000911161533,0) (3.202095655e-10,0) (3.03507392e-05,0) (0.0003364428726,0) (4.990489648e-07,-8.271806126e-25) (1.173508992e-06,-4.756288522e-24) (2.598563963e-09,-4.135903063e-24) (3.714438472e-05,-1.938704561e-26) (0.0002098412308,-1.654361225e-24) (2.061664726e-07,-8.271806126e-25) (5.325771156e-07,2.067951531e-25) (2.084413822e-10,-1.861156378e-24) (3.356492395e-05,-6.203854594e-25) (6.915611245e-05,-1.654361225e-24) +(-0.001065306375,-0.0004124280613) (-0.0003152598716,-0.0001224831858) (0.0001077714067,-0.0005731679656) (-2.3740822e-05,9.840704582e-05) (2.455621307e-05,9.484529058e-06) (2.93200734e-05,-0.0002139675086) (-1.591372026e-05,3.127664176e-05) (2.030214286e-05,1.055852447e-05) (0,1.32348898e-23) (2.117582368e-22,-8.470329473e-22) (2.484213661e-08,-5.804871795e-08) (5.11794513e-07,2.192027156e-07) (-1.374438912e-05,-3.200414282e-08) (-2.117582368e-22,0) (-7.940933881e-23,0) (1.769423358e-08,-5.68535415e-08) (5.751443635e-07,1.793356705e-07) (-8.117141674e-06,3.418186447e-07) +(-0.01868331836,-0.0323693011) (-0.0002293683958,-0.0003976494403) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-0.01868331836,-0.0323693011) (-0.0002293683958,-0.0003976494403) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.006795422316,0.01755265315) (0.0001332844561,0.0003430612962) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.0009663293567,0.000557758073) (0.0003697518979,0.0002132767987) (-2.479801e-08,-1.35141435e-08) (4.235881379e-06,2.446359655e-06) (0.0001046382544,6.061686563e-05) (-1.052747575e-08,-5.172847492e-09) (1.625594824e-06,9.39339898e-07) (4.287160337e-05,2.497754477e-05) (3.555927322e-15,5.410131537e-13) (5.105327932e-06,2.95278483e-06) (4.942304705e-06,2.859189489e-06) (2.434700456e-06,1.392926363e-06) (-0.0001315692818,-7.592744687e-05) (7.213322414e-15,1.249383666e-12) (2.216852204e-06,1.285187123e-06) (2.079248808e-06,1.20628146e-06) (1.077501276e-06,6.092902592e-07) (-5.766194006e-05,-3.325636998e-05) +(0.001733237864,0.004133350463) (2.40958005e-05,5.670819824e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0,0) (0,0) (-0.01019486506,0.00191691618) (-0.004158204266,0.001003171945) (-9.946946565e-06,-2.57534494e-05) (0.001703617024,-0.0002334474815) (0.0001765055937,-8.9806977e-05) (6.508734384e-06,1.251512516e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-0.001713045537,-0.0009887570644) (-0.0005610046357,-0.0003235933974) (-1.284657557e-06,-7.000983619e-07) (-0.0002806706318,-0.000162096449) (-0.0001545866867,-8.955195664e-05) (-4.934599317e-07,-2.424695986e-07) (-0.0001055234843,-6.097609649e-05) (-5.735923718e-05,-3.341822561e-05) (-7.750405677e-15,-1.192626849e-12) (1.799053821e-05,1.04052451e-05) (-5.289516915e-05,-3.06005639e-05) (-1.028606432e-05,-5.88480201e-06) (0.0001666007481,9.614379032e-05) (-1.504199563e-14,-2.640869479e-12) (7.589476826e-06,4.399886433e-06) (-2.173340822e-05,-1.260869167e-05) (-4.46394035e-06,-2.524206165e-06) (6.808603243e-05,3.926843738e-05) +(-0.01566451268,0.00221165718) (-0.0001948641577,2.796746384e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0,0) (0,0) (-0.005773297248,0.001085539323) (0.00571609262,-0.001379014446) (-0.0006951952716,-0.001799916802) (0.0005650433465,-7.742816862e-05) (-0.0005043118189,0.0002565965133) (4.720390306e-05,9.07646126e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-0.001520061568,-0.0008773681614) (-0.0004978043886,-0.0002871388274) (3.777996285e-06,2.058890319e-06) (9.788133901e-05,5.652966743e-05) (-0.0001373008054,-7.9538258e-05) (1.450444915e-06,7.126998011e-07) (3.700141872e-05,2.138104225e-05) (-5.093868176e-05,-2.967752788e-05) (-4.959570183e-15,-7.561817409e-13) (-1.709316227e-05,-9.88622697e-06) (3.690797863e-05,2.135176004e-05) (-2.260223605e-05,-1.293105702e-05) (0.0001529662259,8.827543049e-05) (-1.004876097e-14,-1.74482951e-12) (-7.059472203e-06,-4.092624187e-06) (1.557102849e-05,9.033571511e-06) (-9.440103444e-06,-5.338056848e-06) (6.246700819e-05,3.602768019e-05) +(-0.000944479054,-0.002214483209) (-1.168954479e-05,-2.758085064e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0,0) (0,0) (-0.003134896197,0.0005894470608) (0.00299583431,-0.0007227487492) (0.00131263572,0.003398520076) (0.0001619655658,-2.219422141e-05) (-9.718051026e-05,4.944595617e-05) (-0.0002331399385,-0.0004482861549) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-0.001196093331,-0.0006903761196) (-0.0003917081531,-0.0002259413986) (-2.841899237e-06,-1.54874658e-06) (0.0002571711525,0.0001485247327) (-0.0001083569998,-6.277113221e-05) (-1.090631474e-06,-5.358995889e-07) (9.701345456e-05,5.605862798e-05) (-4.020060284e-05,-2.342138568e-05) (2.472516278e-15,3.798042271e-13) (-2.564609383e-05,-1.483301339e-05) (7.938644405e-06,4.592612127e-06) (3.315355071e-05,1.896761248e-05) (0.0001237260184,7.140117023e-05) (6.128107191e-15,1.072312543e-12) (-1.064099064e-05,-6.168956339e-06) (3.137854976e-06,1.820434486e-06) (1.414077322e-05,7.996125442e-06) (5.05099567e-05,2.913148266e-05) +(0.001473173913,0.003454093428) (1.823304854e-05,4.301989491e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-0.001065306375,0.0004124280613) (-0.0003152598716,0.0001224831858) (0.0001077714067,0.0005731679656) (-2.3740822e-05,-9.840704582e-05) (2.455621307e-05,-9.484529058e-06) (2.93200734e-05,0.0002139675086) (-1.591372026e-05,-3.127664176e-05) (2.030214286e-05,-1.055852447e-05) (-1.058791184e-22,-2.64697796e-23) (-2.117582368e-22,8.470329473e-22) (2.484213661e-08,5.804871795e-08) (5.11794513e-07,-2.192027156e-07) (-1.374438912e-05,3.200414282e-08) (0,0) (-1.32348898e-22,4.235164736e-22) (1.769423358e-08,5.68535415e-08) (5.751443635e-07,-1.793356705e-07) (-8.117141674e-06,-3.418186447e-07) +(-0.01868331836,0.0323693011) (-0.0002293683958,0.0003976494403) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-0.01868331836,0.0323693011) (-0.0002293683958,0.0003976494403) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.0003926769682,0) (0.0001070003183,0) (0.0001952776704,0) (7.997302531e-05,0) (2.179385408e-05,0) (9.072628978e-05,0) (1.018039269e-05,0) (7.293086984e-06,0) (6.6174449e-24,-7.754818243e-25) (1.058791184e-22,-1.240770919e-24) (5.253558923e-06,5.169878828e-26) (2.149278346e-05,-1.033975766e-25) (3.663755034e-07,0) (0,1.178732373e-23) (2.64697796e-23,2.067951531e-25) (3.952117728e-06,3.877409121e-26) (1.542700385e-05,0) (3.100639357e-07,-4.135903063e-25) +(0.001812676218,0) (0.0005842219029,0) (1.455760061e-07,0) (0.000963108556,0) (1.903497787e-05,0) (5.40245945e-08,0) (0.0003595785109,0) (7.161396531e-06,0) (1.008356953e-10,8.271806126e-25) (0.0001405400645,2.481541838e-24) (2.945702913e-05,-4.135903063e-25) (1.166197091e-05,6.6174449e-24) (6.700160668e-05,3.722312756e-24) (2.273663116e-10,8.271806126e-25) (5.845678685e-05,-2.481541838e-24) (1.222055263e-05,-6.203854594e-25) (5.038570089e-06,4.549493369e-24) (2.77438515e-05,0) +(0.7705943424,0) (0.0003607104378,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.9022006019,0) (0.001265938283,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.0006867671573,0) (0.0003118737213,0) (5.478741969e-09,0) (2.484389374e-08,0) (0.0007682472119,0) (2.546730763e-09,0) (9.802916105e-09,0) (0.0003437670443,0) (2.902829344e-15,3.944304526e-31) (2.474974783e-07,0) (1.106742305e-06,0) (6.746724226e-07,5.916456789e-31) (0.000344401489,0) (6.865622166e-15,0) (1.123246758e-07,0) (4.728420013e-07,0) (3.041028689e-07,-3.944304526e-31) (0.0001597069346,0) +(2.606909815e-05,0) (1.052486136e-05,0) (1.50160704e-06,0) (9.220031973e-06,0) (1.760750571e-05,0) (6.598984231e-07,0) (3.84839452e-06,0) (8.0970703e-06,0) (1.625045466e-08,-1.292469707e-25) (6.544979468e-08,1.033975766e-25) (1.123332837e-06,5.169878828e-26) (5.541294868e-06,-1.80945759e-25) (7.884846338e-07,-4.135903063e-24) (6.573341473e-09,-7.754818243e-26) (2.967925929e-08,1.783608196e-24) (6.405630384e-07,-1.550963649e-25) (2.445001313e-06,2.067951531e-25) (9.585207486e-07,4.135903063e-25) +(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-0.001217455938,-1.048968745e-13) (-0.0004731891963,-1.331680902e-13) (2.838254859e-07,-2.667032522e-15) (-1.646163048e-06,-2.058752428e-14) (-0.001134965332,9.353993365e-14) (1.193742549e-07,-2.806929651e-15) (-6.363442288e-07,-2.174782716e-14) (-0.0004599365052,1.036925755e-13) (-6.39905609e-15,-4.744497745e-19) (8.721502128e-07,9.270421917e-16) (-1.184494378e-05,2.305635264e-14) (-2.850339931e-06,1.637935329e-15) (-0.0004361013826,7.942071128e-14) (-1.451212062e-14,-1.126939084e-18) (3.845477493e-07,8.539000264e-16) (-4.942394664e-06,2.315955851e-14) (-1.259856574e-06,1.799159549e-15) (-0.0001885786623,8.350119887e-14) +(-2.336997728e-05,8.899656399e-05) (-8.620275597e-06,3.25033392e-05) (9.817825478e-08,5.801548646e-06) (5.084310361e-06,-3.009317751e-05) (-2.466390723e-05,-5.241278162e-05) (1.420505313e-07,2.363204515e-06) (1.623034791e-06,-1.170234502e-05) (-1.115234346e-05,-2.211479671e-05) (-4.043179797e-08,5.656802291e-08) (-2.05138522e-07,-2.751341749e-08) (7.187037426e-07,-3.7854683e-06) (-7.485119781e-06,1.298409725e-05) (1.719364356e-06,1.585304449e-06) (-1.709340046e-08,2.258118837e-08) (-9.133145593e-08,-1.217697277e-08) (1.259848231e-07,-2.133345284e-06) (-3.269905813e-06,5.697606153e-06) (1.2237451e-06,2.432502756e-06) +(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-0.001080302854,-1.772989558e-14) (-0.0004198818397,-1.679889e-14) (-8.346906342e-07,8.241968752e-15) (5.740844431e-07,7.132640533e-15) (-0.001008053523,1.105114258e-14) (-3.508811352e-07,8.716645911e-15) (2.231317455e-07,7.573389404e-15) (-0.000408453118,9.53184962e-15) (-4.05730137e-15,-5.694584659e-20) (-8.286469788e-07,-3.094091175e-15) (8.264893354e-06,-1.417463855e-14) (-6.263236738e-06,1.984783545e-15) (-0.0004004110629,7.138747102e-15) (-9.588196122e-15,-1.375244239e-19) (-3.576931874e-07,-3.070677107e-15) (3.541007804e-06,-1.454441084e-14) (-2.664277624e-06,2.070054798e-15) (-0.0001730155867,5.991069674e-15) +(-1.400249322e-05,8.517683491e-08) (-5.116927849e-06,-4.684231583e-09) (2.138336521e-06,-4.599405375e-07) (-5.084421801e-06,3.325365207e-06) (-1.137644059e-05,-2.898889879e-06) (8.535405516e-07,-2.174669906e-07) (-1.941555583e-06,1.356036493e-06) (-4.835683466e-06,-1.14408203e-06) (-7.579709164e-09,2.762279321e-08) (-1.753976932e-07,2.708152116e-07) (1.596704523e-06,6.809813049e-07) (-4.264485678e-06,-1.255174248e-07) (-4.111833037e-07,-9.800694867e-07) (-3.057891808e-09,1.074053857e-08) (-8.079752589e-08,1.194200536e-07) (7.764209185e-07,2.571247395e-07) (-2.00927223e-06,2.278516912e-07) (-4.360917395e-07,-6.207081838e-07) +(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-0.0008500596729,-1.395115192e-14) (-0.0003303931097,-1.321857004e-14) (6.278742745e-07,-6.267371997e-15) (1.508336107e-06,1.829707832e-14) (-0.0007955499976,8.763968249e-15) (2.638376718e-07,-6.633341259e-15) (5.85025715e-07,1.938064798e-14) (-0.0003223495585,7.571202097e-15) (2.037832522e-15,1.279206619e-19) (-1.243278326e-06,-5.349347949e-15) (1.777719935e-06,-3.844960139e-15) (9.187079385e-06,-3.340764983e-15) (-0.0003238706207,6.12567423e-15) (5.892571045e-15,3.456051733e-19) (-5.39163517e-07,-5.385811883e-15) (7.135796431e-07,-3.765088724e-15) (3.990946276e-06,-3.584746342e-15) (-0.0001398980045,5.217450273e-15) +(2.184072547e-05,-1.328566161e-07) (7.98125124e-06,7.306342835e-09) (-2.353317487e-07,2.431358997e-07) (8.89348769e-06,5.889722967e-06) (1.368174814e-05,-6.080660701e-06) (-9.52595112e-08,1.163421003e-07) (3.483016518e-06,2.340901803e-06) (5.851874148e-06,-2.448645606e-06) (-8.904308778e-08,1.862177347e-09) (-1.575009145e-07,2.041408412e-07) (-4.182973373e-07,-3.929932664e-07) (5.261261828e-06,1.934800189e-06) (4.914717562e-07,-1.551016991e-06) (-3.785085941e-08,1.286475674e-10) (-7.066595277e-08,8.72698674e-08) (-1.727701374e-07,-1.345678508e-07) (2.079943364e-06,1.093768337e-06) (9.353131396e-07,-1.037909249e-06) +(-3.073369271e-12,0.05475639745) (-2.298249668e-13,0.001163347614) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-7.745507745e-13,0.0230047579) (-3.345332529e-14,0.0003354043926) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.0001316010582,0.0001730202177) (4.719344493e-05,6.262294536e-05) (4.519028303e-08,5.711350518e-08) (1.910649511e-05,-1.705015571e-05) (-6.749216419e-05,0.0001071825063) (7.477779824e-10,1.451711457e-08) (7.979649417e-06,-7.288814279e-06) (-2.727059995e-05,4.450298833e-05) (4.000715671e-08,8.067961321e-08) (-1.541872643e-08,2.767095688e-07) (3.739052008e-08,-3.900001586e-08) (7.12896119e-06,1.245013658e-05) (-1.166866017e-05,-5.412850993e-06) (1.666657866e-08,3.282419505e-08) (-8.45933864e-09,1.254389648e-07) (-1.154750606e-08,-4.182690836e-10) (4.482863104e-06,7.872116711e-06) (-6.706290426e-06,-4.616626192e-06) +(0.006795422316,-0.01755265315) (0.0001332844561,-0.0003430612962) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.0009663293567,-0.000557758073) (0.0003697518979,-0.0002132767987) (-2.479801e-08,1.35141435e-08) (4.235881379e-06,-2.446359655e-06) (0.0001046382544,-6.061686563e-05) (-1.052747575e-08,5.172847492e-09) (1.625594824e-06,-9.39339898e-07) (4.287160337e-05,-2.497754477e-05) (3.555927322e-15,-5.410131436e-13) (5.105327932e-06,-2.95278483e-06) (4.942304705e-06,-2.859189489e-06) (2.434700456e-06,-1.392926363e-06) (-0.0001315692818,7.592744687e-05) (7.213325803e-15,-1.249383665e-12) (2.216852204e-06,-1.285187123e-06) (2.079248808e-06,-1.20628146e-06) (1.077501276e-06,-6.092902592e-07) (-5.766194006e-05,3.325636998e-05) +(0.001733237864,-0.004133350463) (2.40958005e-05,-5.670819824e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-0.001217455938,1.048968745e-13) (-0.0004731891963,1.331680902e-13) (2.838254859e-07,2.667032522e-15) (-1.646163048e-06,2.058752428e-14) (-0.001134965332,-9.353993365e-14) (1.193742549e-07,2.806929651e-15) (-6.363442288e-07,2.174782716e-14) (-0.0004599365052,-1.036925755e-13) (-6.399069642e-15,4.744497745e-19) (8.721502128e-07,-9.270421917e-16) (-1.184494378e-05,-2.305635264e-14) (-2.850339931e-06,-1.637935329e-15) (-0.0004361013826,-7.942071128e-14) (-1.451212062e-14,1.126939084e-18) (3.845477493e-07,-8.539000264e-16) (-4.942394664e-06,-2.315955851e-14) (-1.259856574e-06,-1.799159549e-15) (-0.0001885786623,-8.350119887e-14) +(-2.336997728e-05,-8.899656399e-05) (-8.620275597e-06,-3.25033392e-05) (9.817825478e-08,-5.801548646e-06) (5.084310361e-06,3.009317751e-05) (-2.466390723e-05,5.241278162e-05) (1.420505313e-07,-2.363204515e-06) (1.623034791e-06,1.170234502e-05) (-1.115234346e-05,2.211479671e-05) (-4.043179797e-08,-5.656802291e-08) (-2.05138522e-07,2.751341749e-08) (7.187037426e-07,3.7854683e-06) (-7.485119781e-06,-1.298409725e-05) (1.719364356e-06,-1.585304449e-06) (-1.709340046e-08,-2.258118837e-08) (-9.133145593e-08,1.217697277e-08) (1.259848231e-07,2.133345284e-06) (-3.269905813e-06,-5.697606153e-06) (1.2237451e-06,-2.432502756e-06) +(0,0) (0,0) (0.5510606563,0) (0.2287898526,0) (3.497233206e-05,0) (0.03259042882,0) (0.003852456277,0) (2.728501408e-05,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.002158226331,0) (0.0007179444763,0) (1.470354086e-05,0) (0.0001090752041,0) (0.001676734109,0) (5.595492446e-06,0) (4.130750209e-05,0) (0.0006153632011,0) (1.410625631e-14,3.155443621e-30) (3.07334846e-06,3.944304526e-31) (0.0001267708775,0) (1.204204804e-05,1.57772181e-30) (0.0005522171709,0) (3.067480352e-14,0) (1.316513672e-06,0) (5.166052285e-05,0) (5.219413394e-06,0) (0.0002226698044,0) +(0.0003247731928,0) (0.0001074385849,0) (2.242104943e-05,0) (0.000101024546,0) (0.0001905669123,0) (8.493601038e-06,0) (3.626944176e-05,0) (7.576061162e-05,0) (2.975099223e-07,-2.067951531e-24) (6.545291938e-07,4.301339185e-23) (1.321630137e-05,8.271806126e-25) (4.053453297e-05,2.067951531e-25) (6.936601868e-06,-1.98523347e-23) (1.220223247e-07,-4.135903063e-25) (2.860486991e-07,-1.240770919e-24) (7.129718703e-06,1.447566072e-24) (1.765029723e-05,3.30872245e-24) (7.735483806e-06,-1.32348898e-23) +(0,0) (0,0) (0.3120626857,0) (-0.3145069131,0) (0.002444227455,0) (0.01080935722,0) (-0.01100723887,0) (0.0001978816593,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.001915090305,-1.335751503e-13) (0.0006370640959,-1.537988172e-13) (-4.324103528e-05,2.064957961e-14) (-3.803898884e-05,3.11900116e-15) (0.001489241722,1.064118355e-13) (-1.644703661e-05,2.184936467e-14) (-1.448432252e-05,3.401844515e-15) (0.0005464819933,1.104512803e-13) (8.944071612e-15,-5.37611904e-19) (-2.920048495e-06,-7.799358519e-15) (-8.845527695e-05,-2.047495515e-14) (2.646077292e-05,6.820300902e-15) (0.0005070239929,8.329729939e-14) (2.026694378e-14,-1.283138686e-18) (-1.22457607e-06,-7.793369903e-15) (-3.701248625e-05,-2.141087058e-14) (1.103773763e-05,7.186674661e-15) (0.0002042932449,8.338536484e-14) +(1.284349739e-05,4.772636154e-05) (4.176499206e-06,1.580615794e-05) (-1.637198807e-06,-8.291662982e-06) (-1.365739124e-05,-1.476125239e-05) (2.456488526e-05,-2.98039344e-05) (-5.950508007e-07,-3.103480952e-06) (-4.942325707e-06,-5.332056991e-06) (9.785063172e-06,-1.163148615e-05) (1.150138939e-07,-4.234158657e-08) (4.359031483e-07,-9.22545632e-07) (-1.273242959e-06,5.816351088e-06) (5.466313628e-06,1.016188654e-05) (-2.867123006e-06,-1.31041973e-06) (4.484840704e-08,-1.742515531e-08) (1.996404585e-07,-4.006392654e-07) (-7.036287942e-07,2.636380213e-06) (3.2181333e-06,4.377497957e-06) (-2.131972104e-06,3.142402084e-07) +(0,0) (0,0) (0.1694498108,0) (-0.164834733,0) (-0.0046150778,0) (0.003098423631,0) (-0.002121086697,0) (-0.0009773369338,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.001506930239,-1.051064969e-13) (0.0005012876667,-1.210199267e-13) (3.252694177e-05,-1.903334618e-14) (-9.99427541e-05,3.755176299e-14) (0.001175300936,8.391686018e-14) (1.236700242e-05,-2.013420008e-14) (-3.797622396e-05,3.981209702e-14) (0.000431281392,8.71025428e-14) (-4.492296834e-15,5.108271321e-20) (-4.381157595e-06,-1.419353245e-14) (-1.902610263e-05,4.116223754e-15) (-3.881335348e-05,-8.189939113e-15) (0.0004101039919,6.692950174e-14) (-1.245537216e-14,2.367029216e-19) (-1.845846564e-06,-1.433977071e-14) (-7.458711811e-06,4.403933919e-15) (-1.653394432e-05,-8.760466044e-15) (0.0001651886852,6.698363681e-14) +(-2.003295385e-05,-7.44423399e-05) (-6.514395052e-06,-2.465403487e-05) (9.239836074e-07,9.251150332e-07) (-1.431917237e-05,3.227521164e-05) (-1.064377077e-06,4.92444156e-05) (3.961344705e-07,3.661838786e-07) (-5.649364548e-06,1.15785494e-05) (-1.372201324e-06,1.935529002e-05) (2.280251171e-07,3.053268573e-07) (4.078376831e-07,-7.060455894e-07) (1.056705235e-06,-1.661036676e-06) (-2.573322934e-06,-1.49414439e-05) (-2.046729951e-06,-4.370276278e-06) (9.88697933e-08,1.296933022e-07) (1.816535076e-07,-2.975472314e-07) (4.141876113e-07,-6.018640503e-07) (-2.328660063e-07,-6.309697042e-06) (-1.439856402e-06,-3.698707777e-06) +(0,0) (0,0) (-3.574796693e-12,-0.03098131397) (-3.042140382e-12,0.00541448473) (-3.236912117e-15,3.334652474e-05) (1.933870538e-12,0.004093227976) (5.083089287e-13,-0.0006826519903) (1.305409463e-14,-4.426198274e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-2.140675696e-12,-0.04078133152) (-9.245860848e-14,-0.0005088910162) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.0004726934192,-0.0006043753589) (0.0001547416424,-0.0001970355262) (2.236160812e-07,-1.708611603e-07) (6.618596498e-05,5.295934623e-05) (-0.0002245129371,-0.0003510429903) (5.214913651e-08,4.470559756e-10) (2.552946888e-05,2.119081374e-05) (-8.398635774e-05,-0.0001357770582) (1.813072306e-07,-3.399995689e-07) (-6.79948831e-08,-8.73769186e-07) (1.553466833e-07,1.010485649e-07) (1.954284301e-05,-3.352174778e-05) (-3.632752486e-05,1.165744445e-05) (6.941991832e-08,-1.426106139e-07) (-2.543402913e-08,-3.894818368e-07) (-8.781307956e-10,-3.854033352e-08) (1.234914694e-05,-2.097449532e-05) (-2.027785628e-05,1.11249509e-05) +(0,0) (0,0) (-0.01019486506,-0.00191691618) (-0.004158204266,-0.001003171945) (-9.946946565e-06,2.57534494e-05) (0.001703617024,0.0002334474815) (0.0001765055937,8.9806977e-05) (6.508734384e-06,-1.251512516e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-0.001713045537,0.0009887570644) (-0.0005610046357,0.0003235933974) (-1.284657557e-06,7.000983619e-07) (-0.0002806706318,0.000162096449) (-0.0001545866867,8.955195664e-05) (-4.934599317e-07,2.424695986e-07) (-0.0001055234843,6.097609649e-05) (-5.735923718e-05,3.341822561e-05) (-7.750395513e-15,1.19262685e-12) (1.799053821e-05,-1.04052451e-05) (-5.289516915e-05,3.06005639e-05) (-1.028606432e-05,5.88480201e-06) (0.0001666007481,-9.614379032e-05) (-1.504199394e-14,2.640869476e-12) (7.589476826e-06,-4.399886433e-06) (-2.173340822e-05,1.260869167e-05) (-4.46394035e-06,2.524206165e-06) (6.808603243e-05,-3.926843738e-05) +(-0.01566451268,-0.00221165718) (-0.0001948641577,-2.796746384e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-0.001080302854,1.772989558e-14) (-0.0004198818397,1.679889e-14) (-8.346906342e-07,-8.241968752e-15) (5.740844431e-07,-7.132640533e-15) (-0.001008053523,-1.105114258e-14) (-3.508811352e-07,-8.716645911e-15) (2.231317455e-07,-7.573389404e-15) (-0.000408453118,-9.53184962e-15) (-4.057328475e-15,5.694584659e-20) (-8.286469788e-07,3.094091175e-15) (8.264893354e-06,1.417463855e-14) (-6.263236738e-06,-1.984783545e-15) (-0.0004004110629,-7.138747102e-15) (-9.588196122e-15,1.375244239e-19) (-3.576931874e-07,3.070677107e-15) (3.541007804e-06,1.454441084e-14) (-2.664277624e-06,-2.070054798e-15) (-0.0001730155867,-5.991069674e-15) +(-1.400249322e-05,-8.517683491e-08) (-5.116927849e-06,4.684231583e-09) (2.138336521e-06,4.599405375e-07) (-5.084421801e-06,-3.325365207e-06) (-1.137644059e-05,2.898889879e-06) (8.535405516e-07,2.174669906e-07) (-1.941555583e-06,-1.356036493e-06) (-4.835683466e-06,1.14408203e-06) (-7.579709164e-09,-2.762279321e-08) (-1.753976932e-07,-2.708152116e-07) (1.596704523e-06,-6.809813049e-07) (-4.264485678e-06,1.255174248e-07) (-4.111833037e-07,9.800694867e-07) (-3.057891808e-09,-1.074053857e-08) (-8.079752589e-08,-1.194200536e-07) (7.764209185e-07,-2.571247395e-07) (-2.00927223e-06,-2.278516912e-07) (-4.360917395e-07,6.207081838e-07) +(0,0) (0,0) (0.3120626857,0) (-0.3145069131,0) (0.002444227455,0) (0.01080935722,0) (-0.01100723887,0) (0.0001978816593,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.001915090305,1.335751503e-13) (0.0006370640959,1.537988172e-13) (-4.324103528e-05,-2.064957961e-14) (-3.803898884e-05,-3.11900116e-15) (0.001489241722,-1.064118355e-13) (-1.644703661e-05,-2.184936467e-14) (-1.448432252e-05,-3.401844515e-15) (0.0005464819933,-1.104512803e-13) (8.944071612e-15,5.37611904e-19) (-2.920048495e-06,7.799358519e-15) (-8.845527695e-05,2.047495515e-14) (2.646077292e-05,-6.820300902e-15) (0.0005070239929,-8.329729939e-14) (2.026694378e-14,1.283138686e-18) (-1.22457607e-06,7.793369903e-15) (-3.701248625e-05,2.141087058e-14) (1.103773763e-05,-7.186674661e-15) (0.0002042932449,-8.338536484e-14) +(1.284349739e-05,-4.772636154e-05) (4.176499206e-06,-1.580615794e-05) (-1.637198807e-06,8.291662982e-06) (-1.365739124e-05,1.476125239e-05) (2.456488526e-05,2.98039344e-05) (-5.950508007e-07,3.103480952e-06) (-4.942325707e-06,5.332056991e-06) (9.785063172e-06,1.163148615e-05) (1.150138939e-07,4.234158657e-08) (4.359031483e-07,9.22545632e-07) (-1.273242959e-06,-5.816351088e-06) (5.466313628e-06,-1.016188654e-05) (-2.867123006e-06,1.31041973e-06) (4.484840704e-08,1.742515531e-08) (1.996404585e-07,4.006392654e-07) (-7.036287942e-07,-2.636380213e-06) (3.2181333e-06,-4.377497957e-06) (-2.131972104e-06,-3.142402084e-07) +(0,0) (0,0) (0.1767194204,0) (0.4323382235,0) (0.1708278373,0) (0.003585169254,0) (0.0314498852,0) (0.001435115663,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.001699344885,0) (0.0005652953336,0) (0.0001271657725,0) (1.32657526e-05,0) (0.001322714732,0) (4.834337921e-05,0) (5.078874012e-06,0) (0.0004853110627,0) (5.670946568e-15,0) (2.774395199e-06,1.972152263e-31) (6.172029553e-05,0) (5.814397199e-05,0) (0.0004655294022,-4.930380658e-32) (1.339042538e-14,0) (1.139058852e-06,0) (2.651781405e-05,0) (2.334202003e-05,0) (0.0001874332715,-2.958228395e-31) +(7.521436699e-06,0) (2.487726124e-06,0) (3.185938962e-06,0) (4.003174709e-06,0) (7.827739219e-06,0) (1.175670888e-06,0) (1.457353976e-06,0) (3.049591687e-06,0) (5.048909171e-08,2.568783543e-24) (1.590612012e-06,1.609124785e-23) (2.682375849e-06,-5.764414894e-24) (3.284718312e-06,6.203854594e-25) (1.43263148e-06,1.550963649e-25) (1.897206644e-08,-6.720842477e-25) (7.004686066e-07,5.11818004e-24) (1.044304049e-06,-3.231174268e-25) (1.672429076e-06,0) (6.003570143e-07,8.271806126e-25) +(0,0) (0,0) (0.09595851645,0) (0.2265907446,0) (-0.3225492611,0) (0.001027662692,0) (0.006060369352,0) (-0.007088032044,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.001337166288,-3.155443621e-30) (0.0004448148634,6.310887242e-30) (-9.565713795e-05,1.029370554e-14) (3.485412968e-05,-1.023797789e-14) (0.0010438788,-5.572765633e-17) (-3.635078475e-05,1.089033375e-14) (1.331622219e-05,-1.083246436e-14) (0.0003830055394,-5.786938279e-17) (-2.848348185e-15,-1.388191666e-19) (4.162623539e-06,2.367315108e-15) (1.327559777e-05,-5.945058718e-15) (-8.528709815e-05,3.98658355e-15) (0.0003765412857,-4.087011207e-16) (-8.229297777e-15,-3.646221352e-19) (1.716943454e-06,2.411501735e-15) (5.343838064e-06,-6.246511632e-15) (-3.496510539e-05,4.239624517e-15) (0.0001515559446,-4.042499974e-16) +(-1.173174173e-05,0) (-3.880290635e-06,0) (-4.095921988e-07,2.741514604e-07) (-2.780116483e-06,-6.455501517e-06) (-7.838840513e-06,6.181350057e-06) (-1.61552776e-07,1.190893908e-07) (-9.323685179e-07,-2.408299986e-06) (-3.148837626e-06,2.289210596e-06) (4.469778006e-08,1.504883457e-07) (1.26676856e-06,1.046269265e-07) (-8.328059922e-07,-3.050222055e-07) (-4.092802746e-06,-1.369814789e-06) (1.671585455e-06,1.419721722e-06) (1.781827059e-08,6.178672245e-08) (5.435245616e-07,4.675798968e-08) (-2.634292994e-07,-9.375785702e-08) (-1.60734289e-06,-1.092677106e-06) (2.465845742e-07,1.077890251e-06) +(0,0) (0,0) (-2.024388139e-12,-0.01754455146) (4.181890806e-12,-0.007443043734) (-2.262288214e-13,0.002330599262) (6.414121631e-13,0.001357612187) (-1.452340376e-12,0.001950473409) (9.467343129e-14,-0.0003210053167) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(6.244874297e-13,-0.03618709099) (2.697252669e-14,-0.0004515616539) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-7.012155158e-05,-9.336432636e-05) (-2.297215943e-05,-3.042472648e-05) (4.685860845e-08,9.517319326e-08) (-1.668578539e-05,2.511282975e-06) (2.59611055e-05,-8.036389655e-05) (-3.816851651e-09,1.90234778e-08) (-6.59413449e-06,8.655407409e-07) (9.998297787e-06,-3.04310274e-05) (1.184799872e-07,-1.056362703e-07) (1.186276746e-06,-6.777499395e-07) (2.950446186e-08,-7.810129287e-08) (-5.76833804e-06,-9.419931895e-06) (1.281309476e-05,-1.168117099e-05) (4.588000485e-08,-4.250210784e-08) (5.277564843e-07,-3.074518553e-07) (-1.416452721e-08,4.128237912e-09) (-2.950353115e-06,-6.886971124e-06) (6.040699198e-06,-2.242389439e-06) +(0,0) (0,0) (-0.005773297248,-0.001085539323) (0.00571609262,0.001379014446) (-0.0006951952716,0.001799916802) (0.0005650433465,7.742816862e-05) (-0.0005043118189,-0.0002565965133) (4.720390306e-05,-9.07646126e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-0.001520061568,0.0008773681614) (-0.0004978043886,0.0002871388274) (3.777996285e-06,-2.058890319e-06) (9.788133901e-05,-5.652966743e-05) (-0.0001373008054,7.9538258e-05) (1.450444915e-06,-7.126998011e-07) (3.700141872e-05,-2.138104225e-05) (-5.093868176e-05,2.967752788e-05) (-4.959570183e-15,7.561817459e-13) (-1.709316227e-05,9.88622697e-06) (3.690797863e-05,-2.135176004e-05) (-2.260223605e-05,1.293105702e-05) (0.0001529662259,-8.827543049e-05) (-1.004876182e-14,1.74482951e-12) (-7.059472203e-06,4.092624187e-06) (1.557102849e-05,-9.033571511e-06) (-9.440103444e-06,5.338056848e-06) (6.246700819e-05,-3.602768019e-05) +(-0.000944479054,0.002214483209) (-1.168954479e-05,2.758085064e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-0.0008500596729,1.395115192e-14) (-0.0003303931097,1.321857004e-14) (6.278742745e-07,6.267371997e-15) (1.508336107e-06,-1.829707832e-14) (-0.0007955499976,-8.763968249e-15) (2.638376718e-07,6.633341259e-15) (5.85025715e-07,-1.938064798e-14) (-0.0003223495585,-7.571202097e-15) (2.037825746e-15,-1.279206619e-19) (-1.243278326e-06,5.349347949e-15) (1.777719935e-06,3.844960139e-15) (9.187079385e-06,3.340764983e-15) (-0.0003238706207,-6.12567423e-15) (5.892564269e-15,-3.456051733e-19) (-5.39163517e-07,5.385811883e-15) (7.135796431e-07,3.765088724e-15) (3.990946276e-06,3.584746342e-15) (-0.0001398980045,-5.217450273e-15) +(2.184072547e-05,1.328566161e-07) (7.98125124e-06,-7.306342835e-09) (-2.353317487e-07,-2.431358997e-07) (8.89348769e-06,-5.889722967e-06) (1.368174814e-05,6.080660701e-06) (-9.52595112e-08,-1.163421003e-07) (3.483016518e-06,-2.340901803e-06) (5.851874148e-06,2.448645606e-06) (-8.904308778e-08,-1.862177347e-09) (-1.575009145e-07,-2.041408412e-07) (-4.182973373e-07,3.929932664e-07) (5.261261828e-06,-1.934800189e-06) (4.914717562e-07,1.551016991e-06) (-3.785085941e-08,-1.286475674e-10) (-7.066595277e-08,-8.72698674e-08) (-1.727701374e-07,1.345678508e-07) (2.079943364e-06,-1.093768337e-06) (9.353131396e-07,1.037909249e-06) +(0,0) (0,0) (0.1694498108,0) (-0.164834733,0) (-0.0046150778,0) (0.003098423631,0) (-0.002121086697,0) (-0.0009773369338,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.001506930239,1.051064969e-13) (0.0005012876667,1.210199267e-13) (3.252694177e-05,1.903334618e-14) (-9.99427541e-05,-3.755176299e-14) (0.001175300936,-8.391686018e-14) (1.236700242e-05,2.013420008e-14) (-3.797622396e-05,-3.981209702e-14) (0.000431281392,-8.71025428e-14) (-4.492290058e-15,-5.108271322e-20) (-4.381157595e-06,1.419353245e-14) (-1.902610263e-05,-4.116223754e-15) (-3.881335348e-05,8.189939113e-15) (0.0004101039919,-6.692950174e-14) (-1.245536538e-14,-2.367029216e-19) (-1.845846564e-06,1.433977071e-14) (-7.458711811e-06,-4.403933919e-15) (-1.653394432e-05,8.760466044e-15) (0.0001651886852,-6.698363681e-14) +(-2.003295385e-05,7.44423399e-05) (-6.514395052e-06,2.465403487e-05) (9.239836074e-07,-9.251150332e-07) (-1.431917237e-05,-3.227521164e-05) (-1.064377077e-06,-4.92444156e-05) (3.961344705e-07,-3.661838786e-07) (-5.649364548e-06,-1.15785494e-05) (-1.372201324e-06,-1.935529002e-05) (2.280251171e-07,-3.053268573e-07) (4.078376831e-07,7.060455894e-07) (1.056705235e-06,1.661036676e-06) (-2.573322934e-06,1.49414439e-05) (-2.046729951e-06,4.370276278e-06) (9.88697933e-08,-1.296933022e-07) (1.816535076e-07,2.975472314e-07) (4.141876113e-07,6.018640503e-07) (-2.328660063e-07,6.309697042e-06) (-1.439856402e-06,3.698707777e-06) +(0,0) (0,0) (0.09595851645,0) (0.2265907446,0) (-0.3225492611,0) (0.001027662692,0) (0.006060369352,0) (-0.007088032044,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.001337166288,3.155443621e-30) (0.0004448148634,-6.310887242e-30) (-9.565713795e-05,-1.029370554e-14) (3.485412968e-05,1.023797789e-14) (0.0010438788,5.572765633e-17) (-3.635078475e-05,-1.089033375e-14) (1.331622219e-05,1.083246436e-14) (0.0003830055394,5.786938279e-17) (-2.848334632e-15,1.388191666e-19) (4.162623539e-06,-2.367315108e-15) (1.327559777e-05,5.945058718e-15) (-8.528709815e-05,-3.98658355e-15) (0.0003765412857,4.087011207e-16) (-8.229297777e-15,3.646221352e-19) (1.716943454e-06,-2.411501735e-15) (5.343838064e-06,6.246511632e-15) (-3.496510539e-05,-4.239624517e-15) (0.0001515559446,4.042499974e-16) +(-1.173174173e-05,0) (-3.880290635e-06,0) (-4.095921988e-07,-2.741514604e-07) (-2.780116483e-06,6.455501517e-06) (-7.838840513e-06,-6.181350057e-06) (-1.61552776e-07,-1.190893908e-07) (-9.323685179e-07,2.408299986e-06) (-3.148837626e-06,-2.289210596e-06) (4.469778006e-08,-1.504883457e-07) (1.26676856e-06,-1.046269265e-07) (-8.328059922e-07,3.050222055e-07) (-4.092802746e-06,1.369814789e-06) (1.671585455e-06,-1.419721722e-06) (1.781827059e-08,-6.178672245e-08) (5.435245616e-07,-4.675798968e-08) (-2.634292994e-07,9.375785702e-08) (-1.60734289e-06,1.092677106e-06) (2.465845742e-07,-1.077890251e-06) +(0,0) (0,0) (0.05210540448,0) (0.1187574051,0) (0.6090226715,0) (0.0002945720367,0) (0.001167828641,0) (0.03500776944,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.001052178223,0) (0.0003500121988,0) (7.195558885e-05,0) (9.157492925e-05,0) (0.0008238230987,0) (2.733320619e-05,0) (3.491359954e-05,0) (0.0003022664318,0) (1.430604767e-15,-9.860761315e-32) (6.245481801e-06,-9.860761315e-32) (2.855486911e-06,-2.465190329e-32) (0.0001251013452,-3.45126646e-31) (0.0003045636627,3.45126646e-31) (5.057437216e-15,2.958228395e-31) (2.588009232e-06,2.958228395e-31) (1.076883833e-06,-1.972152263e-31) (5.23758695e-05,4.930380658e-32) (0.0001225460354,2.958228395e-31) +(1.829886623e-05,0) (6.052376612e-06,0) (7.624904163e-08,0) (1.234084223e-05,0) (1.273119943e-05,0) (3.426263494e-08,0) (4.576252571e-06,0) (4.96973533e-06,0) (4.881179852e-07,-9.564275833e-25) (1.015740713e-06,-3.282873056e-24) (2.932491235e-07,-1.783608196e-24) (5.670935863e-06,3.231174268e-24) (3.357323756e-06,-8.685396432e-24) (2.179567445e-07,9.04728795e-25) (4.248659482e-07,5.014782464e-24) (7.486855157e-08,1.395867284e-24) (2.258687365e-06,-1.240770919e-24) (2.036540451e-06,-3.30872245e-24) +(0,0) (0,0) (-1.099241284e-12,-0.009526678654) (2.191751042e-12,-0.003900938503) (4.271548499e-13,-0.004400530276) (1.838561317e-13,0.0003891496597) (-2.798649041e-13,0.0003758547668) (-4.675917989e-13,0.001585444316) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(4.913914448e-13,-0.02847459545) (2.122391617e-14,-0.0003553210569) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.000109373776,0.0001456272528) (3.583137798e-05,4.745569863e-05) (2.165436796e-09,-1.626790533e-08) (7.53822607e-06,-2.865145302e-05) (-8.94590791e-05,5.997709861e-05) (2.45146613e-09,-2.227450843e-09) (2.788397132e-06,-1.145065455e-05) (-3.316707843e-05,2.391603938e-05) (-2.099708033e-07,-4.46662106e-07) (9.001737584e-07,-6.177928983e-07) (-2.791793818e-10,2.760341761e-08) (1.111578782e-05,9.331810361e-06) (3.374329489e-06,-2.632715043e-05) (-9.532770745e-08,-1.893356844e-07) (3.889864278e-07,-2.737945217e-07) (3.202416713e-09,-2.313056759e-09) (7.335118092e-06,4.691344391e-06) (-1.544924858e-06,-1.176658097e-05) +(0,0) (0,0) (-0.003134896197,-0.0005894470608) (0.00299583431,0.0007227487492) (0.00131263572,-0.003398520076) (0.0001619655658,2.219422141e-05) (-9.718051026e-05,-4.944595617e-05) (-0.0002331399385,0.0004482861549) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-0.001196093331,0.0006903761196) (-0.0003917081531,0.0002259413986) (-2.841899237e-06,1.54874658e-06) (0.0002571711525,-0.0001485247327) (-0.0001083569998,6.277113221e-05) (-1.090631474e-06,5.358995889e-07) (9.701345456e-05,-5.605862798e-05) (-4.020060284e-05,2.342138568e-05) (2.472509502e-15,-3.798042406e-13) (-2.564609383e-05,1.483301339e-05) (7.938644405e-06,-4.592612127e-06) (3.315355071e-05,-1.896761248e-05) (0.0001237260184,-7.140117023e-05) (6.128112273e-15,-1.072312545e-12) (-1.064099064e-05,6.168956339e-06) (3.137854976e-06,-1.820434486e-06) (1.414077322e-05,-7.996125442e-06) (5.05099567e-05,-2.913148266e-05) +(0.001473173913,-0.003454093428) (1.823304854e-05,-4.301989491e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-3.073369271e-12,-0.05475639745) (-2.298249668e-13,-0.001163347614) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-7.745507745e-13,-0.0230047579) (-3.345332529e-14,-0.0003354043926) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.0001316010582,-0.0001730202177) (4.719344493e-05,-6.262294536e-05) (4.519028303e-08,-5.711350518e-08) (1.910649511e-05,1.705015571e-05) (-6.749216419e-05,-0.0001071825063) (7.477779824e-10,-1.451711457e-08) (7.979649417e-06,7.288814279e-06) (-2.727059995e-05,-4.450298833e-05) (4.000715671e-08,-8.067961321e-08) (-1.541872643e-08,-2.767095688e-07) (3.739052008e-08,3.900001586e-08) (7.12896119e-06,-1.245013658e-05) (-1.166866017e-05,5.412850993e-06) (1.666657866e-08,-3.282419505e-08) (-8.45933864e-09,-1.254389648e-07) (-1.154750606e-08,4.182690836e-10) (4.482863104e-06,-7.872116711e-06) (-6.706290426e-06,4.616626192e-06) +(0,0) (0,0) (-3.574796693e-12,0.03098131397) (-3.042140382e-12,-0.00541448473) (-3.236912117e-15,-3.334652474e-05) (1.933870538e-12,-0.004093227976) (5.083089287e-13,0.0006826519903) (1.305409463e-14,4.426198274e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-2.140675696e-12,0.04078133152) (-9.245860848e-14,0.0005088910162) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.0004726934192,0.0006043753589) (0.0001547416424,0.0001970355262) (2.236160812e-07,1.708611603e-07) (6.618596498e-05,-5.295934623e-05) (-0.0002245129371,0.0003510429903) (5.214913651e-08,-4.470559756e-10) (2.552946888e-05,-2.119081374e-05) (-8.398635774e-05,0.0001357770582) (1.813072306e-07,3.399995689e-07) (-6.79948831e-08,8.73769186e-07) (1.553466833e-07,-1.010485649e-07) (1.954284301e-05,3.352174778e-05) (-3.632752486e-05,-1.165744445e-05) (6.941991832e-08,1.426106139e-07) (-2.543402913e-08,3.894818368e-07) (-8.781307956e-10,3.854033352e-08) (1.234914694e-05,2.097449532e-05) (-2.027785628e-05,-1.11249509e-05) +(0,0) (0,0) (-2.024388139e-12,0.01754455146) (4.181890806e-12,0.007443043734) (-2.262288214e-13,-0.002330599262) (6.414121631e-13,-0.001357612187) (-1.452340376e-12,-0.001950473409) (9.467343129e-14,0.0003210053167) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(6.244874297e-13,0.03618709099) (2.697252669e-14,0.0004515616539) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-7.012155158e-05,9.336432636e-05) (-2.297215943e-05,3.042472648e-05) (4.685860845e-08,-9.517319326e-08) (-1.668578539e-05,-2.511282975e-06) (2.59611055e-05,8.036389655e-05) (-3.816851651e-09,-1.90234778e-08) (-6.59413449e-06,-8.655407409e-07) (9.998297787e-06,3.04310274e-05) (1.184799872e-07,1.056362703e-07) (1.186276746e-06,6.777499395e-07) (2.950446186e-08,7.810129287e-08) (-5.76833804e-06,9.419931895e-06) (1.281309476e-05,1.168117099e-05) (4.588000485e-08,4.250210784e-08) (5.277564843e-07,3.074518553e-07) (-1.416452721e-08,-4.128237912e-09) (-2.950353115e-06,6.886971124e-06) (6.040699198e-06,2.242389439e-06) +(0,0) (0,0) (-1.099241284e-12,0.009526678654) (2.191751042e-12,0.003900938503) (4.271548499e-13,0.004400530276) (1.838561317e-13,-0.0003891496597) (-2.798649041e-13,-0.0003758547668) (-4.675917989e-13,-0.001585444316) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(4.913914448e-13,0.02847459545) (2.122391617e-14,0.0003553210569) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.000109373776,-0.0001456272528) (3.583137798e-05,-4.745569863e-05) (2.165436796e-09,1.626790533e-08) (7.53822607e-06,2.865145302e-05) (-8.94590791e-05,-5.997709861e-05) (2.45146613e-09,2.227450843e-09) (2.788397132e-06,1.145065455e-05) (-3.316707843e-05,-2.391603938e-05) (-2.099708033e-07,4.46662106e-07) (9.001737584e-07,6.177928983e-07) (-2.791793818e-10,-2.760341761e-08) (1.111578782e-05,-9.331810361e-06) (3.374329489e-06,2.632715043e-05) (-9.532770745e-08,1.893356844e-07) (3.889864278e-07,2.737945217e-07) (3.202416713e-09,2.313056759e-09) (7.335118092e-06,-4.691344391e-06) (-1.544924858e-06,1.176658097e-05) +(0.003323277612,0) (0.001069070815,0) (0.00174180792,0) (0.0001281378722,0) (3.179629858e-05,0) (0.0005140931207,0) (0.0001209653547,0) (7.18021662e-05,0) (0,-4.930380658e-32) (-2.710505431e-20,0) (7.588732639e-10,0) (1.442267609e-08,0) (0.0005156165052,0) (0,0) (4.235164736e-21,-1.972152263e-30) (8.97091465e-10,0) (2.352707791e-08,0) (0.0002128748988,0) +(0.7705943424,0) (0.0003607104378,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.001812676218,0) (0.0005842219029,0) (3.532291747e-09,0) (7.112404456e-05,0) (0.000911161533,0) (3.202095655e-10,0) (3.03507392e-05,0) (0.0003364428726,0) (4.990489648e-07,-8.271806126e-25) (1.173508992e-06,-4.756288522e-24) (2.598563963e-09,-4.135903063e-24) (3.714438472e-05,-1.938704561e-26) (0.0002098412308,-1.654361225e-24) (2.061664726e-07,-8.271806126e-25) (5.325771156e-07,2.067951531e-25) (2.084413822e-10,-1.861156378e-24) (3.356492395e-05,-6.203854594e-25) (6.915611245e-05,-1.654361225e-24) +(-0.001065306375,-0.0004124280613) (-0.0003152598716,-0.0001224831858) (0.0001077714067,-0.0005731679656) (-2.3740822e-05,9.840704582e-05) (2.455621307e-05,9.484529058e-06) (2.93200734e-05,-0.0002139675086) (-1.591372026e-05,3.127664176e-05) (2.030214286e-05,1.055852447e-05) (0,1.32348898e-23) (2.117582368e-22,-8.470329473e-22) (2.484213661e-08,-5.804871795e-08) (5.11794513e-07,2.192027156e-07) (-1.374438912e-05,-3.200414282e-08) (-2.117582368e-22,0) (-7.940933881e-23,0) (1.769423358e-08,-5.68535415e-08) (5.751443635e-07,1.793356705e-07) (-8.117141674e-06,3.418186447e-07) +(-0.01868331836,-0.0323693011) (-0.0002293683958,-0.0003976494403) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-0.01868331836,-0.0323693011) (-0.0002293683958,-0.0003976494403) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.006795422316,0.01755265315) (0.0001332844561,0.0003430612962) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.0009663293567,0.000557758073) (0.0003697518979,0.0002132767987) (-2.479801e-08,-1.35141435e-08) (4.235881379e-06,2.446359655e-06) (0.0001046382544,6.061686563e-05) (-1.052747575e-08,-5.172847492e-09) (1.625594824e-06,9.39339898e-07) (4.287160337e-05,2.497754477e-05) (3.555927322e-15,5.410131537e-13) (5.105327932e-06,2.95278483e-06) (4.942304705e-06,2.859189489e-06) (2.434700456e-06,1.392926363e-06) (-0.0001315692818,-7.592744687e-05) (7.213322414e-15,1.249383666e-12) (2.216852204e-06,1.285187123e-06) (2.079248808e-06,1.20628146e-06) (1.077501276e-06,6.092902592e-07) (-5.766194006e-05,-3.325636998e-05) +(0.001733237864,0.004133350463) (2.40958005e-05,5.670819824e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0,0) (0,0) (-0.01019486506,0.00191691618) (-0.004158204266,0.001003171945) (-9.946946565e-06,-2.57534494e-05) (0.001703617024,-0.0002334474815) (0.0001765055937,-8.9806977e-05) (6.508734384e-06,1.251512516e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-0.001713045537,-0.0009887570644) (-0.0005610046357,-0.0003235933974) (-1.284657557e-06,-7.000983619e-07) (-0.0002806706318,-0.000162096449) (-0.0001545866867,-8.955195664e-05) (-4.934599317e-07,-2.424695986e-07) (-0.0001055234843,-6.097609649e-05) (-5.735923718e-05,-3.341822561e-05) (-7.750405677e-15,-1.192626849e-12) (1.799053821e-05,1.04052451e-05) (-5.289516915e-05,-3.06005639e-05) (-1.028606432e-05,-5.88480201e-06) (0.0001666007481,9.614379032e-05) (-1.504199563e-14,-2.640869479e-12) (7.589476826e-06,4.399886433e-06) (-2.173340822e-05,-1.260869167e-05) (-4.46394035e-06,-2.524206165e-06) (6.808603243e-05,3.926843738e-05) +(-0.01566451268,0.00221165718) (-0.0001948641577,2.796746384e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0,0) (0,0) (-0.005773297248,0.001085539323) (0.00571609262,-0.001379014446) (-0.0006951952716,-0.001799916802) (0.0005650433465,-7.742816862e-05) (-0.0005043118189,0.0002565965133) (4.720390306e-05,9.07646126e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-0.001520061568,-0.0008773681614) (-0.0004978043886,-0.0002871388274) (3.777996285e-06,2.058890319e-06) (9.788133901e-05,5.652966743e-05) (-0.0001373008054,-7.9538258e-05) (1.450444915e-06,7.126998011e-07) (3.700141872e-05,2.138104225e-05) (-5.093868176e-05,-2.967752788e-05) (-4.959570183e-15,-7.561817409e-13) (-1.709316227e-05,-9.88622697e-06) (3.690797863e-05,2.135176004e-05) (-2.260223605e-05,-1.293105702e-05) (0.0001529662259,8.827543049e-05) (-1.004876097e-14,-1.74482951e-12) (-7.059472203e-06,-4.092624187e-06) (1.557102849e-05,9.033571511e-06) (-9.440103444e-06,-5.338056848e-06) (6.246700819e-05,3.602768019e-05) +(-0.000944479054,-0.002214483209) (-1.168954479e-05,-2.758085064e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0,0) (0,0) (-0.003134896197,0.0005894470608) (0.00299583431,-0.0007227487492) (0.00131263572,0.003398520076) (0.0001619655658,-2.219422141e-05) (-9.718051026e-05,4.944595617e-05) (-0.0002331399385,-0.0004482861549) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-0.001196093331,-0.0006903761196) (-0.0003917081531,-0.0002259413986) (-2.841899237e-06,-1.54874658e-06) (0.0002571711525,0.0001485247327) (-0.0001083569998,-6.277113221e-05) (-1.090631474e-06,-5.358995889e-07) (9.701345456e-05,5.605862798e-05) (-4.020060284e-05,-2.342138568e-05) (2.472516278e-15,3.798042271e-13) (-2.564609383e-05,-1.483301339e-05) (7.938644405e-06,4.592612127e-06) (3.315355071e-05,1.896761248e-05) (0.0001237260184,7.140117023e-05) (6.128107191e-15,1.072312543e-12) (-1.064099064e-05,-6.168956339e-06) (3.137854976e-06,1.820434486e-06) (1.414077322e-05,7.996125442e-06) (5.05099567e-05,2.913148266e-05) +(0.001473173913,0.003454093428) (1.823304854e-05,4.301989491e-05) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-0.001065306375,0.0004124280613) (-0.0003152598716,0.0001224831858) (0.0001077714067,0.0005731679656) (-2.3740822e-05,-9.840704582e-05) (2.455621307e-05,-9.484529058e-06) (2.93200734e-05,0.0002139675086) (-1.591372026e-05,-3.127664176e-05) (2.030214286e-05,-1.055852447e-05) (-1.058791184e-22,-2.64697796e-23) (-2.117582368e-22,8.470329473e-22) (2.484213661e-08,5.804871795e-08) (5.11794513e-07,-2.192027156e-07) (-1.374438912e-05,3.200414282e-08) (0,0) (-1.32348898e-22,4.235164736e-22) (1.769423358e-08,5.68535415e-08) (5.751443635e-07,-1.793356705e-07) (-8.117141674e-06,-3.418186447e-07) +(-0.01868331836,0.0323693011) (-0.0002293683958,0.0003976494403) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(-0.01868331836,0.0323693011) (-0.0002293683958,0.0003976494403) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) +(0.0003926769682,0) (0.0001070003183,0) (0.0001952776704,0) (7.997302531e-05,0) (2.179385408e-05,0) (9.072628978e-05,0) (1.018039269e-05,0) (7.293086984e-06,0) (6.6174449e-24,-7.754818243e-25) (1.058791184e-22,-1.240770919e-24) (5.253558923e-06,5.169878828e-26) (2.149278346e-05,-1.033975766e-25) (3.663755034e-07,0) (0,1.178732373e-23) (2.64697796e-23,2.067951531e-25) (3.952117728e-06,3.877409121e-26) (1.542700385e-05,0) (3.100639357e-07,-4.135903063e-25) +(0.001812676218,0) (0.0005842219029,0) (1.455760061e-07,0) (0.000963108556,0) (1.903497787e-05,0) (5.40245945e-08,0) (0.0003595785109,0) (7.161396531e-06,0) (1.008356953e-10,8.271806126e-25) (0.0001405400645,2.481541838e-24) (2.945702913e-05,-4.135903063e-25) (1.166197091e-05,6.6174449e-24) (6.700160668e-05,3.722312756e-24) (2.273663116e-10,8.271806126e-25) (5.845678685e-05,-2.481541838e-24) (1.222055263e-05,-6.203854594e-25) (5.038570089e-06,4.549493369e-24) (2.77438515e-05,0) +(0.7705943424,0) (0.0003607104378,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) diff --git a/tests/09_DeePKS/NO_KP_deepks_UT/vdrpre_ref.dat b/tests/09_DeePKS/NO_KP_deepks_UT/vdrpre_ref.dat new file mode 100644 index 0000000000..5a794e9ba1 --- /dev/null +++ b/tests/09_DeePKS/NO_KP_deepks_UT/vdrpre_ref.dat @@ -0,0 +1,216 @@ +0.9022006019 0.001265938283 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.0006867671573 0.0003118737213 5.478741969e-09 2.484389374e-08 0.0007682472119 2.546730763e-09 9.802916105e-09 0.0003437670443 2.902814201e-15 2.474974783e-07 1.106742305e-06 6.746724226e-07 0.000344401489 6.86562035e-15 1.123246758e-07 4.728420013e-07 3.041028689e-07 0.0001597069346 +2.606909815e-05 1.052486136e-05 1.50160704e-06 9.220031973e-06 1.760750571e-05 6.598984231e-07 3.84839452e-06 8.0970703e-06 1.625045466e-08 6.544979468e-08 1.123332837e-06 5.541294868e-06 7.884846338e-07 6.573341473e-09 2.967925929e-08 6.405630384e-07 2.445001313e-06 9.585207486e-07 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.001217455938 -0.0004731891963 2.838254859e-07 -1.646163048e-06 -0.001134965332 1.193742549e-07 -6.363442288e-07 -0.0004599365052 -6.399057931e-15 8.721502128e-07 -1.184494378e-05 -2.850339931e-06 -0.0004361013826 -1.451211434e-14 3.845477493e-07 -4.942394664e-06 -1.259856574e-06 -0.0001885786623 +-2.336997728e-05 -8.620275597e-06 9.817825478e-08 5.084310361e-06 -2.466390723e-05 1.420505313e-07 1.623034791e-06 -1.115234346e-05 -4.043179797e-08 -2.05138522e-07 7.187037426e-07 -7.485119781e-06 1.719364356e-06 -1.709340046e-08 -9.133145593e-08 1.259848231e-07 -3.269905813e-06 1.2237451e-06 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.001080302854 -0.0004198818397 -8.346906342e-07 5.740844431e-07 -0.001008053523 -3.508811352e-07 2.231317455e-07 -0.000408453118 -4.057313125e-15 -8.286469788e-07 8.264893354e-06 -6.263236738e-06 -0.0004004110629 -9.588198305e-15 -3.576931874e-07 3.541007804e-06 -2.664277624e-06 -0.0001730155867 +-1.400249322e-05 -5.116927849e-06 2.138336521e-06 -5.084421801e-06 -1.137644059e-05 8.535405516e-07 -1.941555583e-06 -4.835683466e-06 -7.579709164e-09 -1.753976932e-07 1.596704523e-06 -4.264485678e-06 -4.111833037e-07 -3.057891808e-09 -8.079752589e-08 7.764209185e-07 -2.00927223e-06 -4.360917395e-07 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0008500596729 -0.0003303931097 6.278742745e-07 1.508336107e-06 -0.0007955499976 2.638376718e-07 5.85025715e-07 -0.0003223495585 2.037849429e-15 -1.243278326e-06 1.777719935e-06 9.187079385e-06 -0.0003238706207 5.892578586e-15 -5.39163517e-07 7.135796431e-07 3.990946276e-06 -0.0001398980045 +2.184072547e-05 7.98125124e-06 -2.353317487e-07 8.89348769e-06 1.368174814e-05 -9.52595112e-08 3.483016518e-06 5.851874148e-06 -8.904308778e-08 -1.575009145e-07 -4.182973373e-07 5.261261828e-06 4.914717562e-07 -3.785085941e-08 -7.066595277e-08 -1.727701374e-07 2.079943364e-06 9.353131396e-07 +-3.073372624e-12 -2.29825038e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-7.745521831e-13 -3.345334583e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.0001315895729 4.717910841e-05 4.781718383e-08 1.907578605e-05 -6.747969415e-05 3.378827264e-09 7.946815395e-06 -2.725738048e-05 3.886732721e-08 -1.324556256e-08 4.470774301e-08 7.140027788e-06 -1.166849528e-05 1.554394936e-08 -6.315634541e-09 -2.423950556e-09 4.493785361e-06 -6.706325698e-06 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-5.132572958e-18 -1.990408256e-17 -7.970918395e-18 9.27382219e-18 -5.85722054e-18 -2.261851917e-17 2.630143361e-17 -1.659843564e-17 1.773319405e-17 2.570011505e-17 -8.895178216e-18 4.431238916e-18 -1.951256555e-18 4.191218274e-17 6.081039168e-17 -2.159871785e-17 1.097571273e-17 -4.606530979e-18 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.001217455938 -0.0004731891963 2.838254859e-07 -1.646163048e-06 -0.001134965332 1.193742549e-07 -6.363442288e-07 -0.0004599365052 -6.399064707e-15 8.721502128e-07 -1.184494378e-05 -2.850339931e-06 -0.0004361013826 -1.451212027e-14 3.845477493e-07 -4.942394664e-06 -1.259856574e-06 -0.0001885786623 +-2.336997728e-05 -8.620275597e-06 9.817825478e-08 5.084310361e-06 -2.466390723e-05 1.420505313e-07 1.623034791e-06 -1.115234346e-05 -4.043179797e-08 -2.05138522e-07 7.187037426e-07 -7.485119781e-06 1.719364356e-06 -1.709340046e-08 -9.133145593e-08 1.259848231e-07 -3.269905813e-06 1.2237451e-06 +0 0 0.5510606563 0.2287898526 3.497233206e-05 0.03259042882 0.003852456277 2.728501408e-05 0 0 0 0 0 0 0 0 0 0 +0.002158226331 0.0007179444763 1.470354086e-05 0.0001090752041 0.001676734109 5.595492446e-06 4.130750209e-05 0.0006153632011 1.410627996e-14 3.07334846e-06 0.0001267708775 1.204204804e-05 0.0005522171709 3.067480244e-14 1.316513672e-06 5.166052285e-05 5.219413394e-06 0.0002226698044 +0.0003247731928 0.0001074385849 2.242104943e-05 0.000101024546 0.0001905669123 8.493601038e-06 3.626944176e-05 7.576061162e-05 2.975099223e-07 6.545291938e-07 1.321630137e-05 4.053453297e-05 6.936601868e-06 1.220223247e-07 2.860486991e-07 7.129718703e-06 1.765029723e-05 7.735483806e-06 +0 0 0.3120626857 -0.3145069131 0.002444227455 0.01080935722 -0.01100723887 0.0001978816593 0 0 0 0 0 0 0 0 0 0 +0.001915090305 0.0006370640959 -4.324103528e-05 -3.803898884e-05 0.001489241722 -1.644703661e-05 -1.448432252e-05 0.0005464819933 8.944046455e-15 -2.920048495e-06 -8.845527695e-05 2.646077292e-05 0.0005070239929 2.026693513e-14 -1.22457607e-06 -3.701248625e-05 1.103773763e-05 0.0002042932449 +1.284349739e-05 4.176499206e-06 -1.637198807e-06 -1.365739124e-05 2.456488526e-05 -5.950508007e-07 -4.942325707e-06 9.785063172e-06 1.150138939e-07 4.359031483e-07 -1.273242959e-06 5.466313628e-06 -2.867123006e-06 4.484840704e-08 1.996404585e-07 -7.036287942e-07 3.2181333e-06 -2.131972104e-06 +0 0 0.1694498108 -0.164834733 -0.0046150778 0.003098423631 -0.002121086697 -0.0009773369338 0 0 0 0 0 0 0 0 0 0 +0.001506930239 0.0005012876667 3.252694177e-05 -9.99427541e-05 0.001175300936 1.236700242e-05 -3.797622396e-05 0.000431281392 -4.492305511e-15 -4.381157595e-06 -1.902610263e-05 -3.881335348e-05 0.0004101039919 -1.245536436e-14 -1.845846564e-06 -7.458711811e-06 -1.653394432e-05 0.0001651886852 +-2.003295385e-05 -6.514395052e-06 9.239836074e-07 -1.431917237e-05 -1.064377077e-06 3.961344705e-07 -5.649364548e-06 -1.372201324e-06 2.280251171e-07 4.078376831e-07 1.056705235e-06 -2.573322934e-06 -2.046729951e-06 9.88697933e-08 1.816535076e-07 4.141876113e-07 -2.328660063e-07 -1.439856402e-06 +0 0 -3.574794795e-12 -3.042140714e-12 -3.236914159e-15 1.933870287e-12 5.083089705e-13 1.305409734e-14 0 0 0 0 0 0 0 0 0 0 +-2.140673199e-12 -9.245857732e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.0004727972201 0.0001548575828 1.84438241e-07 6.620197036e-05 -0.0002245318264 1.202581498e-08 2.554697268e-05 -8.400550234e-05 1.898676241e-07 -7.43357333e-08 1.505575469e-07 1.948321231e-05 -3.63234664e-05 7.771086585e-08 -3.158088173e-08 -8.120649524e-09 1.22908458e-05 -2.027677423e-05 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-1.418517902e-17 -5.501103435e-17 -2.203738349e-17 2.563968049e-17 -1.617827486e-17 -6.253254365e-17 7.271491371e-17 -4.584548943e-17 4.900012606e-17 7.10026153e-17 -2.455600663e-17 1.22294149e-17 -5.395929233e-18 1.158057803e-16 1.679949732e-16 -5.962219302e-17 3.028949528e-17 -1.273810392e-17 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.001080302854 -0.0004198818397 -8.346906342e-07 5.740844431e-07 -0.001008053523 -3.508811352e-07 2.231317455e-07 -0.000408453118 -4.057301266e-15 -8.286469788e-07 8.264893354e-06 -6.263236738e-06 -0.0004004110629 -9.588198305e-15 -3.576931874e-07 3.541007804e-06 -2.664277624e-06 -0.0001730155867 +-1.400249322e-05 -5.116927849e-06 2.138336521e-06 -5.084421801e-06 -1.137644059e-05 8.535405516e-07 -1.941555583e-06 -4.835683466e-06 -7.579709164e-09 -1.753976932e-07 1.596704523e-06 -4.264485678e-06 -4.111833037e-07 -3.057891808e-09 -8.079752589e-08 7.764209185e-07 -2.00927223e-06 -4.360917395e-07 +0 0 0.3120626857 -0.3145069131 0.002444227455 0.01080935722 -0.01100723887 0.0001978816593 0 0 0 0 0 0 0 0 0 0 +0.001915090305 0.0006370640959 -4.324103528e-05 -3.803898884e-05 0.001489241722 -1.644703661e-05 -1.448432252e-05 0.0005464819933 8.944046455e-15 -2.920048495e-06 -8.845527695e-05 2.646077292e-05 0.0005070239929 2.026693513e-14 -1.22457607e-06 -3.701248625e-05 1.103773763e-05 0.0002042932449 +1.284349739e-05 4.176499206e-06 -1.637198807e-06 -1.365739124e-05 2.456488526e-05 -5.950508007e-07 -4.942325707e-06 9.785063172e-06 1.150138939e-07 4.359031483e-07 -1.273242959e-06 5.466313628e-06 -2.867123006e-06 4.484840704e-08 1.996404585e-07 -7.036287942e-07 3.2181333e-06 -2.131972104e-06 +0 0 0.1767194204 0.4323382235 0.1708278373 0.003585169254 0.0314498852 0.001435115663 0 0 0 0 0 0 0 0 0 0 +0.001699344885 0.0005652953336 0.0001271657725 1.32657526e-05 0.001322714732 4.834337921e-05 5.078874012e-06 0.0004853110627 5.670955077e-15 2.774395199e-06 6.172029553e-05 5.814397199e-05 0.0004655294022 1.33904227e-14 1.139058852e-06 2.651781405e-05 2.334202003e-05 0.0001874332715 +7.521436699e-06 2.487726124e-06 3.185938962e-06 4.003174709e-06 7.827739219e-06 1.175670888e-06 1.457353976e-06 3.049591687e-06 5.048909171e-08 1.590612012e-06 2.682375849e-06 3.284718312e-06 1.43263148e-06 1.897206644e-08 7.004686066e-07 1.044304049e-06 1.672429076e-06 6.003570143e-07 +0 0 0.09595851645 0.2265907446 -0.3225492611 0.001027662692 0.006060369352 -0.007088032044 0 0 0 0 0 0 0 0 0 0 +0.001337166288 0.0004448148634 -9.565713795e-05 3.485412968e-05 0.0010438788 -3.635078475e-05 1.331622219e-05 0.0003830055394 -2.848334861e-15 4.162623539e-06 1.327559777e-05 -8.528709815e-05 0.0003765412857 -8.229299398e-15 1.716943454e-06 5.343838064e-06 -3.496510539e-05 0.0001515559446 +-1.173174173e-05 -3.880290635e-06 -4.095921988e-07 -2.780116483e-06 -7.838840513e-06 -1.61552776e-07 -9.323685179e-07 -3.148837626e-06 4.469778006e-08 1.26676856e-06 -8.328059922e-07 -4.092802746e-06 1.671585455e-06 1.781827059e-08 5.435245616e-07 -2.634292994e-07 -1.60734289e-06 2.465845742e-07 +0 0 -2.024387065e-12 4.181891261e-12 -2.262289641e-13 6.4141208e-13 -1.452340496e-12 9.467345094e-14 0 0 0 0 0 0 0 0 0 0 +6.244896456e-13 2.697255434e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-7.011529299e-05 -2.296520438e-05 5.371899269e-08 -1.667249067e-05 2.59529698e-05 3.33060817e-09 -6.581202288e-06 9.990354457e-06 1.218069514e-07 1.17582206e-06 4.160886911e-08 -5.776422762e-06 1.281072203e-05 4.89572234e-08 5.175080777e-07 -2.016755291e-09 -2.961076245e-06 6.040427644e-06 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +4.138182988e-18 1.604813914e-17 6.387365728e-18 -7.478002699e-18 4.751865317e-18 1.812434711e-17 -2.12078644e-17 1.346601866e-17 -1.421272159e-17 -2.075866051e-17 7.197328462e-18 -3.632403077e-18 1.561484722e-18 -3.358923337e-17 -4.911633748e-17 1.747539003e-17 -8.991954915e-18 3.68620334e-18 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0008500596729 -0.0003303931097 6.278742745e-07 1.508336107e-06 -0.0007955499976 2.638376718e-07 5.85025715e-07 -0.0003223495585 2.037846464e-15 -1.243278326e-06 1.777719935e-06 9.187079385e-06 -0.0003238706207 5.892578798e-15 -5.39163517e-07 7.135796431e-07 3.990946276e-06 -0.0001398980045 +2.184072547e-05 7.98125124e-06 -2.353317487e-07 8.89348769e-06 1.368174814e-05 -9.52595112e-08 3.483016518e-06 5.851874148e-06 -8.904308778e-08 -1.575009145e-07 -4.182973373e-07 5.261261828e-06 4.914717562e-07 -3.785085941e-08 -7.066595277e-08 -1.727701374e-07 2.079943364e-06 9.353131396e-07 +0 0 0.1694498108 -0.164834733 -0.0046150778 0.003098423631 -0.002121086697 -0.0009773369338 0 0 0 0 0 0 0 0 0 0 +0.001506930239 0.0005012876667 3.252694177e-05 -9.99427541e-05 0.001175300936 1.236700242e-05 -3.797622396e-05 0.000431281392 -4.49228857e-15 -4.381157595e-06 -1.902610263e-05 -3.881335348e-05 0.0004101039919 -1.245536733e-14 -1.845846564e-06 -7.458711811e-06 -1.653394432e-05 0.0001651886852 +-2.003295385e-05 -6.514395052e-06 9.239836074e-07 -1.431917237e-05 -1.064377077e-06 3.961344705e-07 -5.649364548e-06 -1.372201324e-06 2.280251171e-07 4.078376831e-07 1.056705235e-06 -2.573322934e-06 -2.046729951e-06 9.88697933e-08 1.816535076e-07 4.141876113e-07 -2.328660063e-07 -1.439856402e-06 +0 0 0.09595851645 0.2265907446 -0.3225492611 0.001027662692 0.006060369352 -0.007088032044 0 0 0 0 0 0 0 0 0 0 +0.001337166288 0.0004448148634 -9.565713795e-05 3.485412968e-05 0.0010438788 -3.635078475e-05 1.331622219e-05 0.0003830055394 -2.848328932e-15 4.162623539e-06 1.327559777e-05 -8.528709815e-05 0.0003765412857 -8.229297493e-15 1.716943454e-06 5.343838064e-06 -3.496510539e-05 0.0001515559446 +-1.173174173e-05 -3.880290635e-06 -4.095921988e-07 -2.780116483e-06 -7.838840513e-06 -1.61552776e-07 -9.323685179e-07 -3.148837626e-06 4.469778006e-08 1.26676856e-06 -8.328059922e-07 -4.092802746e-06 1.671585455e-06 1.781827059e-08 5.435245616e-07 -2.634292994e-07 -1.60734289e-06 2.465845742e-07 +0 0 0.05210540448 0.1187574051 0.6090226715 0.0002945720367 0.001167828641 0.03500776944 0 0 0 0 0 0 0 0 0 0 +0.001052178223 0.0003500121988 7.195558885e-05 9.157492925e-05 0.0008238230987 2.733320619e-05 3.491359954e-05 0.0003022664318 1.430611603e-15 6.245481801e-06 2.855486911e-06 0.0001251013452 0.0003045636627 5.057441713e-15 2.588009232e-06 1.076883833e-06 5.23758695e-05 0.0001225460354 +1.829886623e-05 6.052376612e-06 7.624904163e-08 1.234084223e-05 1.273119943e-05 3.426263494e-08 4.576252571e-06 4.96973533e-06 4.881179852e-07 1.015740713e-06 2.932491235e-07 5.670935863e-06 3.357323756e-06 2.179567445e-07 4.248659482e-07 7.486855157e-08 2.258687365e-06 2.036540451e-06 +0 0 -1.099240701e-12 2.191751281e-12 4.271551193e-13 1.838561078e-13 -2.798649271e-13 -4.67591896e-13 0 0 0 0 0 0 0 0 0 0 +4.913931884e-13 2.122393793e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.000109364014 3.582052968e-05 1.046551708e-10 7.502157814e-06 -8.944955432e-05 6.848180014e-11 2.752409044e-06 -3.315762826e-05 -2.035367526e-07 8.914534214e-07 -3.987115339e-09 1.111963695e-05 3.370813359e-06 -8.883273875e-08 3.806577397e-07 1.71613263e-10 7.336021663e-06 -1.545440185e-06 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +3.256218813e-18 1.262782548e-17 5.098088945e-18 -5.871656417e-18 3.738870194e-18 1.44663721e-17 -1.66520966e-17 1.059536307e-17 -1.130207913e-17 -1.622609825e-17 5.683093618e-18 -2.786449526e-18 1.228179939e-18 -2.671159524e-17 -3.839120328e-17 1.380001146e-17 -6.907557868e-18 2.899380817e-18 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-3.073372624e-12 -2.29825038e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-7.745521831e-13 -3.345334583e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.0001315895729 4.717910841e-05 4.781718383e-08 1.907578605e-05 -6.747969415e-05 3.378827264e-09 7.946815395e-06 -2.725738048e-05 3.886732721e-08 -1.324556256e-08 4.470774301e-08 7.140027788e-06 -1.166849528e-05 1.554394936e-08 -6.315634541e-09 -2.423950556e-09 4.493785361e-06 -6.706325698e-06 +0 0 -3.574794795e-12 -3.042140714e-12 -3.236914159e-15 1.933870287e-12 5.083089705e-13 1.305409734e-14 0 0 0 0 0 0 0 0 0 0 +-2.140673199e-12 -9.245857732e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.0004727972201 0.0001548575828 1.84438241e-07 6.620197036e-05 -0.0002245318264 1.202581498e-08 2.554697268e-05 -8.400550234e-05 1.898676241e-07 -7.43357333e-08 1.505575469e-07 1.948321231e-05 -3.63234664e-05 7.771086585e-08 -3.158088173e-08 -8.120649524e-09 1.22908458e-05 -2.027677423e-05 +0 0 -2.024387065e-12 4.181891261e-12 -2.262289641e-13 6.4141208e-13 -1.452340496e-12 9.467345094e-14 0 0 0 0 0 0 0 0 0 0 +6.244896456e-13 2.697255434e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-7.011529299e-05 -2.296520438e-05 5.371899269e-08 -1.667249067e-05 2.59529698e-05 3.33060817e-09 -6.581202288e-06 9.990354457e-06 1.218069514e-07 1.17582206e-06 4.160886911e-08 -5.776422762e-06 1.281072203e-05 4.89572234e-08 5.175080777e-07 -2.016755291e-09 -2.961076245e-06 6.040427644e-06 +0 0 -1.099240701e-12 2.191751281e-12 4.271551193e-13 1.838561078e-13 -2.798649271e-13 -4.67591896e-13 0 0 0 0 0 0 0 0 0 0 +4.913931884e-13 2.122393793e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.000109364014 3.582052968e-05 1.046551708e-10 7.502157814e-06 -8.944955432e-05 6.848180014e-11 2.752409044e-06 -3.315762826e-05 -2.035367526e-07 8.914534214e-07 -3.987115339e-09 1.111963695e-05 3.370813359e-06 -8.883273875e-08 3.806577397e-07 1.71613263e-10 7.336021663e-06 -1.545440185e-06 +0.003323277612 0.001069070815 0.00174180792 0.0001281378722 3.179629858e-05 0.0005140931207 0.0001209653547 7.18021662e-05 -1.093392972e-21 -7.100482999e-21 7.588732639e-10 1.442267609e-08 0.0005156165052 -5.001867165e-21 -1.051673073e-21 8.97091465e-10 2.352707791e-08 0.0002128748988 +0.7705943424 0.0003607104378 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.001812923896 0.0005844950976 3.062996454e-09 7.103432144e-05 0.0009110717666 2.385078743e-10 3.025424637e-05 0.0003363576418 5.102582662e-07 1.163204356e-06 2.999921348e-09 3.708734577e-05 0.0002098111001 2.172176006e-07 5.224760625e-07 1.58837509e-10 3.348462099e-05 6.915232827e-05 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +5.106346312e-06 2.146156134e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +5.106346312e-06 2.146156134e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-5.132572958e-18 -1.990408256e-17 -7.970918395e-18 9.27382219e-18 -5.85722054e-18 -2.261851917e-17 2.630143361e-17 -1.659843564e-17 1.773319405e-17 2.570011505e-17 -8.895178216e-18 4.431238916e-18 -1.951256555e-18 4.191218274e-17 6.081039168e-17 -2.159871785e-17 1.097571273e-17 -4.606530979e-18 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-1.418517902e-17 -5.501103435e-17 -2.203738349e-17 2.563968049e-17 -1.617827486e-17 -6.253254365e-17 7.271491371e-17 -4.584548943e-17 4.900012606e-17 7.10026153e-17 -2.455600663e-17 1.22294149e-17 -5.395929233e-18 1.158057803e-16 1.679949732e-16 -5.962219302e-17 3.028949528e-17 -1.273810392e-17 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +4.138182988e-18 1.604813914e-17 6.387365728e-18 -7.478002699e-18 4.751865317e-18 1.812434711e-17 -2.12078644e-17 1.346601866e-17 -1.421272159e-17 -2.075866051e-17 7.197328462e-18 -3.632403077e-18 1.561484722e-18 -3.358923337e-17 -4.911633748e-17 1.747539003e-17 -8.991954915e-18 3.68620334e-18 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +3.256218813e-18 1.262782548e-17 5.098088945e-18 -5.871656417e-18 3.738870194e-18 1.44663721e-17 -1.66520966e-17 1.059536307e-17 -1.130207913e-17 -1.622609825e-17 5.683093618e-18 -2.786449526e-18 1.228179939e-18 -2.671159524e-17 -3.839120328e-17 1.380001146e-17 -6.907557868e-18 2.899380817e-18 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +5.106346312e-06 2.146156134e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +5.106346312e-06 2.146156134e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.0003926769682 0.0001070003183 0.0001952776704 7.997302531e-05 2.179385408e-05 9.072628978e-05 1.018039269e-05 7.293086984e-06 -1.467798842e-25 1.008349445e-22 5.253558923e-06 2.149278346e-05 3.663755034e-07 -1.387228119e-23 8.173999374e-24 3.952117728e-06 1.542700385e-05 3.100639357e-07 +0.001812923896 0.0005844950976 1.497728031e-07 0.0009629564752 1.900290306e-05 5.834527507e-08 0.000359424874 7.128907331e-06 1.000771374e-10 0.0001404156723 2.942738704e-05 1.171509414e-05 6.701665487e-05 2.25864415e-10 5.83363012e-05 1.219096745e-05 5.090961438e-06 2.775834581e-05 +0.7705943424 0.0003607104378 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-2.312291237e-14 -3.110638884e-14 5.438468261e-17 -2.982618307e-16 2.206415807e-14 6.363640413e-17 -3.213405332e-16 2.529107237e-14 -9.550850817e-20 -1.217965667e-15 1.71255535e-15 2.345068588e-16 1.969945396e-14 -2.310819258e-19 -1.291958546e-15 1.752788509e-15 2.606515523e-16 2.11609383e-14 +1.256051686e-05 5.057505566e-06 7.506714837e-07 -4.581421353e-06 -7.938644696e-06 3.291755394e-07 -1.917264218e-06 -3.606412235e-06 6.273809331e-09 -3.138430775e-09 -5.493484159e-07 2.393225358e-06 3.009295536e-07 2.46717613e-09 -1.503599046e-09 -3.198049101e-07 1.053962837e-06 4.476728593e-07 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +4.099078804e-14 4.719604804e-14 2.817391119e-15 1.976290872e-14 -3.259634933e-14 2.982862752e-15 2.085942505e-14 -3.383770385e-14 2.105419343e-19 -4.291958945e-15 -1.832867665e-14 -9.907389741e-16 -2.494460501e-14 4.884463834e-19 -4.423068638e-15 -1.832107247e-14 -1.079843715e-15 -2.498640055e-14 +-4.386701972e-05 -1.590291767e-05 -2.906093144e-06 1.419348563e-05 2.599774795e-05 -1.191613361e-06 5.53883245e-06 1.100006499e-05 -2.592034638e-08 9.900156297e-09 1.935485628e-06 -6.453629982e-06 -6.485251756e-07 -1.024671733e-08 4.658332592e-09 1.06194406e-06 -2.814937385e-06 -1.078950616e-06 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +3.637295109e-14 4.187915454e-14 -8.285549033e-15 -6.892135299e-15 -2.895142596e-14 -8.767638121e-15 -7.314280089e-15 -3.005005145e-14 1.334935815e-19 4.077874156e-15 1.278896385e-14 -2.177014985e-15 -2.290315097e-14 3.227179458e-19 4.114187438e-15 1.312624041e-14 -2.283596011e-15 -2.29243155e-14 +-6.777837208e-06 -2.457139505e-06 1.303263224e-06 6.788579776e-07 5.952125503e-06 5.419448803e-07 2.317572366e-07 2.465901512e-06 -7.9611997e-09 7.786480187e-09 -1.192252167e-06 -1.81064891e-06 6.496819971e-07 -2.969920556e-09 3.786038622e-09 -5.232061755e-07 -9.223362004e-07 2.174865634e-07 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +2.862084349e-14 3.29535188e-14 6.232588308e-15 -1.81082359e-14 -2.284829757e-14 6.592640632e-15 -1.917719923e-14 -2.371537978e-14 -6.704924114e-20 6.118326241e-15 2.750815408e-15 3.193302492e-15 -1.852510684e-14 -1.983313626e-19 6.20145937e-15 2.645184215e-15 3.420705452e-15 -1.853628366e-14 +1.057189454e-05 3.83258242e-06 -2.414929412e-07 -7.691512204e-06 -4.442626916e-06 -1.096703968e-07 -3.004953389e-06 -1.938425864e-06 -3.471627021e-08 7.081961793e-09 4.419851266e-07 1.792327759e-06 1.464083986e-06 -1.422841124e-08 3.355486328e-09 1.57209717e-07 6.26806543e-07 1.141073285e-06 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-6.390608648e-14 -8.597204215e-14 1.50358597e-16 -8.246155559e-16 6.094358433e-14 1.75933101e-16 -8.884021114e-16 6.985487163e-14 -2.639078401e-19 -3.364916754e-15 4.727675997e-15 6.471963545e-16 5.447610627e-14 -6.384927001e-19 -3.569168612e-15 4.838486039e-15 7.193158344e-16 5.851479832e-14 +4.512954428e-05 1.660042153e-05 2.895455502e-06 -1.589969188e-05 -2.641503366e-05 1.171591154e-06 -6.163512571e-06 -1.111473172e-05 3.064767653e-08 -1.761326119e-08 -1.849982672e-06 6.530467269e-06 9.367792732e-07 1.233447104e-08 -7.518640183e-09 -1.071401224e-06 2.882668769e-06 1.35355214e-06 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +1.132885341e-13 1.304407481e-13 7.789306758e-15 5.463924742e-14 -9.003463252e-14 8.246605084e-15 5.766952918e-14 -9.346098196e-14 5.817666742e-19 -1.185754652e-14 -5.05980987e-14 -2.734259695e-15 -6.898084365e-14 1.349605553e-18 -1.221918288e-14 -5.057441495e-14 -2.980027074e-15 -6.90930699e-14 +-0.00015761283 -5.21986844e-05 -1.120924874e-05 4.925808627e-05 8.650486497e-05 -4.241152532e-06 1.780592529e-05 3.390149637e-05 -1.266213794e-07 5.556090008e-08 6.517930641e-06 -1.761021762e-05 -2.01882778e-06 -5.122773226e-08 2.32936611e-08 3.557694487e-06 -7.699068503e-06 -3.262239122e-06 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +1.005259598e-13 1.157458829e-13 -2.290725013e-14 -1.905494232e-14 -7.996696106e-14 -2.423954943e-14 -2.022160668e-14 -8.299934678e-14 3.688676897e-19 1.126608692e-14 3.530518147e-14 -6.008166109e-15 -6.33354858e-14 8.91688313e-19 1.136586674e-14 3.623433785e-14 -6.302002637e-15 -6.339093658e-14 +-2.435255712e-05 -8.06515208e-06 5.026886935e-06 2.355957211e-06 1.980509288e-05 1.928873053e-06 7.450400565e-07 7.599750658e-06 -3.88906102e-08 4.369868866e-08 -4.015021772e-06 -4.940773088e-06 2.02242891e-06 -1.484790593e-08 1.893181709e-08 -1.7528303e-06 -2.522659875e-06 6.575770614e-07 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +7.91010263e-14 9.10771521e-14 1.723138186e-14 -5.006451205e-14 -6.310946218e-14 1.822641814e-14 -5.301872166e-14 -6.550275077e-14 -1.852695718e-19 1.690331594e-14 7.593894104e-15 8.812935118e-15 -5.122861229e-14 -5.480010034e-19 1.713217053e-14 7.301900278e-15 9.440065003e-15 -5.125703239e-14 +3.798448648e-05 1.257981487e-05 -9.314754595e-07 -2.66931733e-05 -1.47823897e-05 -3.903354027e-07 -9.660154203e-06 -5.974104466e-06 -1.695896326e-07 3.97448444e-08 1.488426656e-06 4.890779601e-06 4.557623256e-06 -7.11339269e-08 1.677887094e-08 5.266794782e-07 1.714363715e-06 3.450068848e-06 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +1.864305552e-14 2.508026454e-14 -4.358028029e-17 2.405052339e-16 -1.790028338e-14 -5.099220989e-17 2.591093153e-16 -2.051820183e-14 7.654773487e-20 9.837829809e-16 -1.385674695e-15 -1.922314395e-16 -1.576440387e-14 1.851935219e-19 1.043510331e-15 -1.418170423e-15 -2.135412126e-16 -1.693324582e-14 +-6.692660373e-06 -2.461823737e-06 8.433226869e-07 4.004223185e-06 3.053235624e-06 3.244778898e-07 1.58779373e-06 1.321819482e-06 1.966159351e-08 2.786016918e-07 -5.112708626e-07 -1.936166335e-06 -3.303874895e-07 7.770618017e-09 1.232060922e-07 -2.66081436e-07 -6.944845092e-07 -4.032216204e-07 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-3.304919056e-14 -3.805293428e-14 -2.257670519e-15 -1.593594116e-14 2.644487445e-14 -2.390184763e-15 -1.681976217e-14 2.74519335e-14 -1.687442143e-19 3.466728397e-15 1.483022632e-14 8.121347926e-16 1.996181359e-14 -3.914503728e-19 3.572496837e-15 1.482346727e-14 8.84672024e-16 1.999442826e-14 +2.337380442e-05 7.741005858e-06 -3.264776047e-06 -1.240529518e-05 -9.998841519e-06 -1.174607899e-06 -4.587016934e-06 -4.031735493e-06 -8.123219678e-08 -8.788469434e-07 1.801329316e-06 5.221113451e-06 7.120091798e-07 -3.227306124e-08 -3.817074483e-07 8.835499129e-07 1.854838082e-06 9.718172698e-07 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-2.932601809e-14 -3.376606266e-14 6.639489868e-15 5.557515048e-15 2.348780893e-14 7.025557924e-15 5.897787269e-15 2.437907778e-14 -1.069918427e-19 -3.293806469e-15 -1.034789537e-14 1.784556436e-15 1.832814872e-14 -2.586323995e-19 -3.323014589e-15 -1.062036054e-14 1.870857307e-15 1.834432217e-14 +3.611456678e-06 1.196052932e-06 1.464117751e-06 -5.933308996e-07 -2.289212116e-06 5.342108089e-07 -1.919311296e-07 -9.038003554e-07 -2.494973374e-08 -6.912137654e-07 -1.109612363e-06 1.464850543e-06 -7.132792424e-07 -9.354061878e-09 -3.102309921e-07 -4.353136743e-07 6.077521719e-07 -1.958914477e-07 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-2.30758118e-14 -2.656955693e-14 -4.994383204e-15 1.460168571e-14 1.853644267e-14 -5.282720157e-15 1.546331835e-14 1.923987016e-14 5.373832795e-20 -4.941933414e-15 -2.225758894e-15 -2.617634034e-15 1.482463761e-14 1.589465875e-19 -5.008896718e-15 -2.140202311e-15 -2.802444812e-15 1.483296456e-14 +-5.633056383e-06 -1.865572317e-06 -2.712990708e-07 6.722483945e-06 1.708652709e-06 -1.081052954e-07 2.488569967e-06 7.104703802e-07 -1.087978861e-07 -6.28672951e-07 4.113493557e-07 -1.450028371e-06 -1.607402884e-06 -4.481380452e-08 -2.749511973e-07 1.308003284e-07 -4.130197185e-07 -1.027771528e-06 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +1.466969157e-14 1.973494876e-14 -3.478368934e-17 1.888424165e-16 -1.408432932e-14 -4.070062651e-17 2.034487428e-16 -1.614417768e-14 6.08714208e-20 7.689782918e-16 -1.094144731e-15 -1.474624903e-16 -1.239943261e-14 1.472738107e-19 8.156474872e-16 -1.119904509e-15 -1.640408896e-16 -1.331883338e-14 +1.043903793e-05 3.839888763e-06 1.642958578e-09 -1.801789237e-06 -1.052328762e-05 6.671703444e-09 -6.640515868e-07 -4.38707147e-06 -3.285409286e-08 2.11222803e-07 4.899186021e-08 3.727127947e-06 -8.693300508e-08 -1.409976368e-08 9.062535373e-08 2.26418662e-08 1.72057488e-06 1.031640361e-07 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-2.600547061e-14 -2.994277461e-14 -1.801964316e-15 -1.251274905e-14 2.080739799e-14 -1.907781944e-15 -1.320662464e-14 2.159979203e-14 -1.341868586e-19 2.709783492e-15 1.171011786e-14 6.229960056e-16 1.570088945e-14 -3.112980817e-19 2.792399827e-15 1.17058342e-14 6.79598959e-16 1.572660442e-14 +-3.645785342e-05 -1.207422e-05 -6.360426318e-09 5.582038341e-06 3.44620259e-05 -2.415152408e-08 1.918395202e-06 1.338118555e-05 1.357372247e-07 -6.66300745e-07 -1.726100204e-07 -1.00506643e-05 1.873469777e-07 5.855937529e-08 -2.807683605e-07 -7.518457211e-08 -4.595333327e-06 -2.486389291e-07 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-2.30758118e-14 -2.656955693e-14 5.29932234e-15 4.363707824e-15 1.848071501e-14 5.607613589e-15 4.630853985e-15 1.918200078e-14 -8.508083862e-20 -2.574618306e-15 -8.170817612e-15 1.368949517e-15 1.441593649e-14 -2.056755478e-19 -2.597394983e-15 -8.386713943e-15 1.437179705e-15 1.442871456e-14 +-5.633056383e-06 -1.865572317e-06 2.852389549e-09 2.669824282e-07 7.890002765e-06 1.098409539e-08 8.026998014e-08 2.999680976e-06 4.169045956e-08 -5.240460245e-07 1.063271502e-07 -2.81984316e-06 -1.876811622e-07 1.697291793e-08 -2.281932077e-07 3.704247135e-08 -1.505696824e-06 5.011872222e-08 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-1.815770176e-14 -2.09068307e-14 -3.98627711e-15 1.146510439e-14 1.458487318e-14 -4.21652681e-15 1.214156532e-14 1.513835789e-14 4.273318315e-20 -3.862883978e-15 -1.75748491e-15 -2.008010939e-15 1.166026299e-14 1.264011257e-19 -3.915144776e-15 -1.690080529e-15 -2.152818813e-15 1.166685853e-14 +8.786295129e-06 2.909871275e-06 -5.285439875e-10 -3.024931094e-06 -5.889045625e-06 -2.222790811e-09 -1.040776773e-06 -2.35802572e-06 1.817988888e-07 -4.766304972e-07 -3.941701279e-08 2.79131042e-06 -4.229468958e-07 8.131451729e-08 -2.022428361e-07 -1.113028996e-08 1.023250113e-06 2.629547963e-07 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.05475639745 0.001163347614 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.0230047579 0.0003354043926 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.0001730476074 6.265668563e-05 4.692870301e-08 -1.706024784e-05 0.000107182984 3.154975411e-09 -7.299124374e-06 4.45033314e-05 8.23240923e-08 2.755903956e-07 -3.618960804e-08 1.243106737e-05 -5.411011263e-06 3.43878717e-08 1.243423389e-07 2.295177901e-09 7.853366447e-06 -4.616182068e-06 +0 0 -0.03098131397 0.00541448473 3.334652474e-05 0.004093227976 -0.0006826519903 -4.426198274e-05 0 0 0 0 0 0 0 0 0 0 +-0.04078133152 -0.0005088910162 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0006043607034 -0.0001970188861 -1.816762526e-07 5.285355001e-05 -0.0003510065394 -1.142099094e-08 2.108662258e-05 -0.0001357414255 -3.401233406e-07 -8.69347832e-07 1.275046295e-07 -3.352192003e-05 1.166112463e-05 -1.428202862e-07 -3.852276784e-07 -7.621366847e-09 -2.097487124e-05 1.112560743e-05 +0 0 -0.01754455146 -0.007443043734 0.002330599262 0.001357612187 0.001950473409 -0.0003210053167 0 0 0 0 0 0 0 0 0 0 +-0.03618709099 -0.0004515616539 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-9.337900064e-05 -3.044113655e-05 8.14743255e-08 2.527924077e-06 -8.036215209e-05 5.194258282e-09 8.823118268e-07 -3.042936444e-05 -1.044658045e-07 -6.837427074e-07 -7.854239199e-08 -9.405005886e-06 -1.168192543e-05 -4.139519907e-08 -3.130920431e-07 3.754949388e-09 -6.872580239e-06 -2.242614341e-06 +0 0 -0.009526678654 -0.003900938503 -0.004400530276 0.0003891496597 0.0003758547668 0.001585444316 0 0 0 0 0 0 0 0 0 0 +-0.02847459545 -0.0003553210569 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.0001456501414 4.748129463e-05 -1.509708409e-08 -2.864157089e-05 5.998177621e-05 -1.051133404e-09 -1.14400135e-05 2.392028504e-05 -4.555422841e-07 -6.21877872e-07 2.911680097e-08 9.309840811e-06 -2.632567935e-05 -1.983177344e-07 -2.774868866e-07 -1.128263691e-09 4.67050763e-06 -1.176618579e-05 +-1.865292625e-13 -2.11200193e-13 2.009793998e-13 -7.199455857e-14 -3.08643524e-15 2.428864009e-13 -9.007191917e-14 -2.117646813e-14 2.252029539e-31 -8.144117512e-30 3.112432484e-17 1.351711398e-15 9.001489553e-14 3.469018202e-30 2.660815516e-30 9.797797504e-18 2.734091772e-15 8.964873498e-14 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +1.524411148e-07 1.995590144e-07 -8.029945758e-10 -7.724684465e-10 -2.039413122e-07 -9.051938018e-10 -8.023598657e-10 -2.256130178e-07 -5.389705257e-13 -5.222408019e-09 -5.748526634e-09 1.274860236e-08 -3.411341576e-08 -1.24524357e-12 -5.286940169e-09 -5.826590557e-09 1.280539364e-08 -3.476665029e-08 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-2.702376469e-07 -3.027801421e-07 -4.159902527e-08 5.118396599e-08 3.012914534e-07 -4.242962674e-08 5.208420275e-08 3.018545979e-07 1.188123438e-12 -1.840311383e-08 6.152378425e-08 -5.385999066e-08 4.319640958e-08 2.63211723e-12 -1.810003837e-08 6.090260594e-08 -5.305099365e-08 4.105174532e-08 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-2.397938947e-07 -2.686702995e-07 1.223368531e-07 -1.784994424e-08 2.676010469e-07 1.247149614e-07 -1.826313267e-08 2.680662446e-07 7.533266633e-13 1.748515847e-08 -4.292865589e-08 -1.183500496e-07 3.966123695e-08 1.739047507e-12 1.683603773e-08 -4.363403119e-08 -1.121894176e-07 3.766381474e-08 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-1.88687014e-07 -2.114090378e-07 -9.202470923e-08 -4.689852813e-08 2.111891952e-07 -9.377678577e-08 -4.788382856e-08 2.115568024e-07 -3.783701101e-13 2.623423376e-08 -9.233649374e-09 1.735989467e-07 3.207980653e-08 -1.068758853e-12 2.537755159e-08 -8.7930776e-09 1.680537847e-07 3.045443838e-08 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.0001918116757 5.223929958e-05 -9.651480188e-05 -3.993625314e-05 1.06493462e-05 -4.393903079e-05 -4.65249083e-06 3.306096668e-06 -8.180331175e-25 -5.187009971e-24 -2.520716139e-06 1.031069269e-05 1.590700811e-07 5.395071381e-24 -1.405324117e-23 -1.969763041e-06 7.688265908e-06 1.272693393e-07 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 diff --git a/tests/10_others/01_NP_KP_sp/INPUT b/tests/10_others/01_NP_KP_sp/INPUT index 86c88a85ef..d17654450a 100644 --- a/tests/10_others/01_NP_KP_sp/INPUT +++ b/tests/10_others/01_NP_KP_sp/INPUT @@ -1,29 +1,29 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf +suffix autotest +calculation scf -nbands 6 -symmetry 1 -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB -gamma_only 0 +nbands 6 +symmetry 1 +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB +gamma_only 0 #Parameters (2.Iteration) -ecutwfc 50 -scf_thr 1e-8 -scf_nmax 100 +ecutwfc 50 +scf_thr 1e-8 +scf_nmax 100 #Parameters (3.Basis) -basis_type lcao_in_pw -ks_solver lapack +basis_type lcao_in_pw +ks_solver lapack #Parameters (4.Smearing) -smearing_method gauss -smearing_sigma 0.002 +smearing_method gauss +smearing_sigma 0.002 #Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.7 -mixing_gg0 1.5 +mixing_type broyden +mixing_beta 0.7 +mixing_gg0 1.5 diff --git a/tests/10_others/02_NP_KP_spd/INPUT b/tests/10_others/02_NP_KP_spd/INPUT index 86c88a85ef..d17654450a 100644 --- a/tests/10_others/02_NP_KP_spd/INPUT +++ b/tests/10_others/02_NP_KP_spd/INPUT @@ -1,29 +1,29 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf +suffix autotest +calculation scf -nbands 6 -symmetry 1 -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB -gamma_only 0 +nbands 6 +symmetry 1 +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB +gamma_only 0 #Parameters (2.Iteration) -ecutwfc 50 -scf_thr 1e-8 -scf_nmax 100 +ecutwfc 50 +scf_thr 1e-8 +scf_nmax 100 #Parameters (3.Basis) -basis_type lcao_in_pw -ks_solver lapack +basis_type lcao_in_pw +ks_solver lapack #Parameters (4.Smearing) -smearing_method gauss -smearing_sigma 0.002 +smearing_method gauss +smearing_sigma 0.002 #Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.7 -mixing_gg0 1.5 +mixing_type broyden +mixing_beta 0.7 +mixing_gg0 1.5 diff --git a/tests/10_others/03_Neighbors/INPUT b/tests/10_others/03_Neighbors/INPUT index 6e205ba58f..4c1806df76 100644 --- a/tests/10_others/03_Neighbors/INPUT +++ b/tests/10_others/03_Neighbors/INPUT @@ -1,34 +1,33 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (General) -suffix autotest -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB +suffix autotest +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB #nbands 40 -gamma_only 0 +gamma_only 0 -calculation test_neighbour -symmetry 0 +calculation test_neighbour +symmetry 0 #test_force 1 -relax_nmax 1 -force_thr_ev 0.001 -out_level ie -relax_method cg +relax_nmax 1 +force_thr_ev 0.001 +out_level ie +relax_method cg -smearing_method gaussian -smearing_sigma 0.001 +smearing_method gaussian +smearing_sigma 0.001 #Parameters (3.PW) -ecutwfc 20 -scf_thr 1e-6 -scf_nmax 100 +ecutwfc 20 +scf_thr 1e-6 +scf_nmax 100 #Parameters (LCAO) -basis_type lcao -chg_extrap second-order -out_dm 0 - -mixing_type broyden -mixing_beta 0.4 -mixing_ndim 5 +basis_type lcao +chg_extrap second-order +out_dm 0 +mixing_type broyden +mixing_beta 0.4 +mixing_ndim 5 diff --git a/tests/10_others/04_RDMFT_Si2/INPUT b/tests/10_others/04_RDMFT_Si2/INPUT index fcbc78adfa..b918a57737 100644 --- a/tests/10_others/04_RDMFT_Si2/INPUT +++ b/tests/10_others/04_RDMFT_Si2/INPUT @@ -1,33 +1,33 @@ INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf +suffix autotest +calculation scf #nbands 8 -symmetry 1 +symmetry 1 #Parameters (2.Iteration) -ecutwfc 50 -scf_thr 1e-5 -scf_nmax 100 -cal_force 0 -cal_stress 0 +ecutwfc 50 +scf_thr 1e-5 +scf_nmax 100 +cal_force 0 +cal_stress 0 #Parameters (3.Basis) -basis_type lcao +basis_type lcao #Parameters (4.Smearing) -smearing_method gauss -smearing_sigma 0.002 +smearing_method gauss +smearing_sigma 0.002 #Parameters (5.Mixing) -mixing_type broyden -mixing_gg0 0 +mixing_type broyden +mixing_gg0 0 #mixing_beta 0.3 #gamma_only 1 -ks_solver genelpa +ks_solver genelpa #Parameters (6.rdmft) -rdmft 1 +rdmft 1 #dft_functional cwp22 #exx_hse_omega 0.33 #rdmft_power_alpha 0.656 diff --git a/tests/10_others/05_Alllog_filename/INPUT b/tests/10_others/05_Alllog_filename/INPUT new file mode 100644 index 0000000000..ba620ac521 --- /dev/null +++ b/tests/10_others/05_Alllog_filename/INPUT @@ -0,0 +1,21 @@ +INPUT_PARAMETERS +#Parameters (1.General) +suffix autotest +calculation md +esolver_type ksdft +md_type nve +md_nstep 4 +symmetry -1 + +#Parameters (2.Iteration) +ecutwfc 50 +scf_thr 1e-5 +scf_nmax 100 +#Parameters (3.Basis) +basis_type lcao + +#Parameters (4.Smearing) +smearing_method gauss +smearing_sigma 0.002 + +out_alllog 1 diff --git a/tests/10_others/05_Alllog_filename/KPT b/tests/10_others/05_Alllog_filename/KPT new file mode 100644 index 0000000000..76cd36e5a4 --- /dev/null +++ b/tests/10_others/05_Alllog_filename/KPT @@ -0,0 +1,4 @@ +K_POINTS +0 +Gamma +3 2 2 0 0 0 diff --git a/tests/10_others/05_Alllog_filename/README b/tests/10_others/05_Alllog_filename/README new file mode 100644 index 0000000000..915635324a --- /dev/null +++ b/tests/10_others/05_Alllog_filename/README @@ -0,0 +1 @@ +Test if the log filenames are set correctly when out_alllog=1 \ No newline at end of file diff --git a/tests/10_others/05_Alllog_filename/STRU b/tests/10_others/05_Alllog_filename/STRU new file mode 100644 index 0000000000..e35b5a9c15 --- /dev/null +++ b/tests/10_others/05_Alllog_filename/STRU @@ -0,0 +1,21 @@ +ATOMIC_SPECIES +Si 14.000 ../../PP_ORB/Si_ONCV_PBE_FR-1.1.upf + +NUMERICAL_ORBITAL +../../PP_ORB/Si_gga_6au_100Ry_2s2p1d.orb + +LATTICE_CONSTANT +10.2 + +LATTICE_VECTORS +0.0 0.5 0.5 #Lattice vector 1 +0.5 0.0 0.5 #Lattice vector 2 +0.5 0.5 0.0 #Lattice vector 3 + +ATOMIC_POSITIONS +Cartesian #Cartesian(Unit is LATTICE_CONSTANT) +Si #Name of element +0.0 #Magnetic for this element. +2 #Number of atoms +0.00 0.00 0.00 0 0 0 #x,y,z, move_x, move_y, move_z +0.25 0.25 0.25 1 1 1 \ No newline at end of file diff --git a/tests/10_others/05_Alllog_filename/result.ref b/tests/10_others/05_Alllog_filename/result.ref new file mode 100644 index 0000000000..33428b89dd --- /dev/null +++ b/tests/10_others/05_Alllog_filename/result.ref @@ -0,0 +1,4 @@ +etotref -211.1186500606459 +etotperatomref -105.5593250303 +log_filename_validation 1 +totaltimeref 1.55 diff --git a/tests/10_others/CASES_CPU.txt b/tests/10_others/CASES_CPU.txt index 45304cf0b0..7c585b7c69 100644 --- a/tests/10_others/CASES_CPU.txt +++ b/tests/10_others/CASES_CPU.txt @@ -1,3 +1,4 @@ 01_NP_KP_sp 02_NP_KP_spd 04_RDMFT_Si2 +05_Alllog_filename \ No newline at end of file diff --git a/tests/11_PW_GPU/001_PW_BPCG_GPU/INPUT b/tests/11_PW_GPU/001_PW_BPCG_GPU/INPUT index 3a699bcf22..6893f16476 100644 --- a/tests/11_PW_GPU/001_PW_BPCG_GPU/INPUT +++ b/tests/11_PW_GPU/001_PW_BPCG_GPU/INPUT @@ -1,38 +1,38 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (General) -suffix autotest -pseudo_dir ../../PP_ORB +suffix autotest +pseudo_dir ../../PP_ORB -gamma_only 0 -calculation scf -symmetry 1 -relax_nmax 1 -out_level ie -smearing_method gaussian -smearing_sigma 0.02 +gamma_only 0 +calculation scf +symmetry 1 +relax_nmax 1 +out_level ie +smearing_method gaussian +smearing_sigma 0.02 #Parameters (3.PW) -ecutwfc 40 -scf_thr 1e-7 -scf_nmax 100 -bndpar 2 +ecutwfc 40 +scf_thr 1e-7 +scf_nmax 100 +bndpar 2 #Parameters (LCAO) -basis_type pw -ks_solver bpcg -device gpu -chg_extrap second-order -pw_diag_thr 0.00001 +basis_type pw +ks_solver bpcg +device gpu +chg_extrap second-order +pw_diag_thr 0.00001 -cal_force 1 +cal_force 1 #test_force 1 -cal_stress 1 +cal_stress 1 #test_stress 1 -mixing_type broyden -mixing_beta 0.4 -mixing_gg0 1.5 +mixing_type broyden +mixing_beta 0.4 +mixing_gg0 1.5 -pw_seed 1 -diago_smooth_ethr 1 -use_k_continuity 1 +pw_seed 1 +diago_smooth_ethr 1 +use_k_continuity 1 diff --git a/tests/11_PW_GPU/002_PW_CG_GPU/INPUT b/tests/11_PW_GPU/002_PW_CG_GPU/INPUT index 923b76aa0b..ddcae1a01b 100644 --- a/tests/11_PW_GPU/002_PW_CG_GPU/INPUT +++ b/tests/11_PW_GPU/002_PW_CG_GPU/INPUT @@ -1,33 +1,33 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (General) -suffix autotest -pseudo_dir ../../PP_ORB +suffix autotest +pseudo_dir ../../PP_ORB -gamma_only 0 -calculation scf -symmetry 1 -relax_nmax 1 -out_level ie -smearing_method gaussian -smearing_sigma 0.02 +gamma_only 0 +calculation scf +symmetry 1 +relax_nmax 1 +out_level ie +smearing_method gaussian +smearing_sigma 0.02 #Parameters (3.PW) -ecutwfc 40 -scf_thr 1e-7 -scf_nmax 100 +ecutwfc 40 +scf_thr 1e-7 +scf_nmax 100 #Parameters (LCAO) -basis_type pw -ks_solver cg -device gpu -chg_extrap second-order -pw_diag_thr 0.00001 +basis_type pw +ks_solver cg +device gpu +chg_extrap second-order +pw_diag_thr 0.00001 -cal_force 1 +cal_force 1 #test_force 1 -cal_stress 1 +cal_stress 1 #test_stress 1 -mixing_type broyden -mixing_beta 0.4 -mixing_gg0 1.5 +mixing_type broyden +mixing_beta 0.4 +mixing_gg0 1.5 diff --git a/tests/11_PW_GPU/002_PW_CG_GPU/README b/tests/11_PW_GPU/002_PW_CG_GPU/README index b8f97be67a..84a084c7b0 100644 --- a/tests/11_PW_GPU/002_PW_CG_GPU/README +++ b/tests/11_PW_GPU/002_PW_CG_GPU/README @@ -4,6 +4,6 @@ This test for: *kpoints 2*2*2 *sg15 pseudopotential *smearing_method gauss -*ks_solver bpcg +*ks_solver cg *mixing_type broyden-kerker *mixing_beta 0.4 diff --git a/tests/11_PW_GPU/003_PW_DA_GPU/INPUT b/tests/11_PW_GPU/003_PW_DA_GPU/INPUT index 52446a770d..88f756cdd8 100644 --- a/tests/11_PW_GPU/003_PW_DA_GPU/INPUT +++ b/tests/11_PW_GPU/003_PW_DA_GPU/INPUT @@ -1,33 +1,33 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (General) -suffix autotest -pseudo_dir ../../PP_ORB +suffix autotest +pseudo_dir ../../PP_ORB -gamma_only 0 -calculation scf -symmetry 1 -relax_nmax 1 -out_level ie -smearing_method gaussian -smearing_sigma 0.02 +gamma_only 0 +calculation scf +symmetry 1 +relax_nmax 1 +out_level ie +smearing_method gaussian +smearing_sigma 0.02 #Parameters (3.PW) -ecutwfc 40 -scf_thr 1e-7 -scf_nmax 100 +ecutwfc 40 +scf_thr 1e-7 +scf_nmax 100 #Parameters (LCAO) -basis_type pw -ks_solver dav -device gpu -chg_extrap second-order -pw_diag_thr 0.00001 +basis_type pw +ks_solver dav +device gpu +chg_extrap second-order +pw_diag_thr 0.00001 -cal_force 1 +cal_force 1 #test_force 1 -cal_stress 1 +cal_stress 1 #test_stress 1 -mixing_type broyden -mixing_beta 0.4 -mixing_gg0 1.5 +mixing_type broyden +mixing_beta 0.4 +mixing_gg0 1.5 diff --git a/tests/11_PW_GPU/003_PW_DA_GPU/README b/tests/11_PW_GPU/003_PW_DA_GPU/README index b8f97be67a..2a580efb1a 100644 --- a/tests/11_PW_GPU/003_PW_DA_GPU/README +++ b/tests/11_PW_GPU/003_PW_DA_GPU/README @@ -4,6 +4,6 @@ This test for: *kpoints 2*2*2 *sg15 pseudopotential *smearing_method gauss -*ks_solver bpcg +*ks_solver dav *mixing_type broyden-kerker *mixing_beta 0.4 diff --git a/tests/11_PW_GPU/004_PW_DS_GPU/INPUT b/tests/11_PW_GPU/004_PW_DS_GPU/INPUT new file mode 100644 index 0000000000..a7a490e410 --- /dev/null +++ b/tests/11_PW_GPU/004_PW_DS_GPU/INPUT @@ -0,0 +1,33 @@ +INPUT_PARAMETERS +#Parameters (General) +suffix autotest +pseudo_dir ../../PP_ORB + +gamma_only 0 +calculation scf +symmetry 1 +relax_nmax 1 +out_level ie +smearing_method gaussian +smearing_sigma 0.02 + +#Parameters (3.PW) +ecutwfc 40 +scf_thr 1e-7 +scf_nmax 100 + +#Parameters (LCAO) +basis_type pw +ks_solver dav_subspace +device gpu +chg_extrap second-order +pw_diag_thr 0.00001 + +cal_force 1 +#test_force 1 +cal_stress 1 +#test_stress 1 + +mixing_type broyden +mixing_beta 0.4 +mixing_gg0 1.5 diff --git a/tests/11_PW_GPU/004_PW_DS_GPU/KPT b/tests/11_PW_GPU/004_PW_DS_GPU/KPT new file mode 100644 index 0000000000..28006d5e2d --- /dev/null +++ b/tests/11_PW_GPU/004_PW_DS_GPU/KPT @@ -0,0 +1,4 @@ +K_POINTS +0 +Gamma +2 2 2 0 0 0 diff --git a/tests/11_PW_GPU/004_PW_DS_GPU/README b/tests/11_PW_GPU/004_PW_DS_GPU/README new file mode 100644 index 0000000000..11f8fbe4e2 --- /dev/null +++ b/tests/11_PW_GPU/004_PW_DS_GPU/README @@ -0,0 +1,9 @@ +This test for: +*GaAs-deformation +*PW +*kpoints 2*2*2 +*sg15 pseudopotential +*smearing_method gauss +*ks_solver dav_subspace +*mixing_type broyden-kerker +*mixing_beta 0.4 diff --git a/tests/11_PW_GPU/004_PW_DS_GPU/STRU b/tests/11_PW_GPU/004_PW_DS_GPU/STRU new file mode 100644 index 0000000000..b03baadd25 --- /dev/null +++ b/tests/11_PW_GPU/004_PW_DS_GPU/STRU @@ -0,0 +1,23 @@ +ATOMIC_SPECIES +As 1 As_dojo.upf upf201 +Ga 1 Ga_dojo.upf upf201 + +LATTICE_CONSTANT +1 // add lattice constant, 10.58 ang + +LATTICE_VECTORS +5.33 5.33 0.0 +0.0 5.33 5.33 +5.33 0.0 5.33 +ATOMIC_POSITIONS +Direct //Cartesian or Direct coordinate. + +As +0 +1 +0.300000 0.3300000 0.27000000 0 0 0 + +Ga //Element Label +0 +1 //number of atom +0.00000 0.00000 0.000000 0 0 0 diff --git a/tests/11_PW_GPU/004_PW_DS_GPU/result.ref b/tests/11_PW_GPU/004_PW_DS_GPU/result.ref new file mode 100644 index 0000000000..5c69f05f9a --- /dev/null +++ b/tests/11_PW_GPU/004_PW_DS_GPU/result.ref @@ -0,0 +1,8 @@ +etotref -4869.7470518365098542 +etotperatomref -2434.8735259183 +totalforceref 5.200640 +totalstressref 37241.467259 +pointgroupref C_1 +spacegroupref C_1 +nksibzref 8 +totaltimeref 4.79 diff --git a/tests/11_PW_GPU/004_PW_DS_GPU/threshold b/tests/11_PW_GPU/004_PW_DS_GPU/threshold new file mode 100644 index 0000000000..b343d16034 --- /dev/null +++ b/tests/11_PW_GPU/004_PW_DS_GPU/threshold @@ -0,0 +1,4 @@ +threshold 1 +force_threshold 1 +stress_threshold 1 +fatal_threshold 1 diff --git a/tests/11_PW_GPU/005_PW_CG_GPU_float/INPUT b/tests/11_PW_GPU/005_PW_CG_GPU_float/INPUT index 005b9ec1ff..1575267872 100644 --- a/tests/11_PW_GPU/005_PW_CG_GPU_float/INPUT +++ b/tests/11_PW_GPU/005_PW_CG_GPU_float/INPUT @@ -1,34 +1,34 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (General) -suffix autotest -pseudo_dir ../../PP_ORB +suffix autotest +pseudo_dir ../../PP_ORB -gamma_only 0 -calculation scf -symmetry 1 -relax_nmax 1 -out_level ie -smearing_method gaussian -smearing_sigma 0.02 +gamma_only 0 +calculation scf +symmetry 1 +relax_nmax 1 +out_level ie +smearing_method gaussian +smearing_sigma 0.02 #Parameters (3.PW) -ecutwfc 40 -scf_thr 1e-7 -scf_nmax 100 +ecutwfc 40 +scf_thr 1e-7 +scf_nmax 100 #Parameters (LCAO) -basis_type pw -ks_solver cg -device gpu -precision single -chg_extrap second-order -pw_diag_thr 0.00001 +basis_type pw +ks_solver cg +device gpu +precision single +chg_extrap second-order +pw_diag_thr 0.00001 -cal_force 1 +cal_force 1 #test_force 1 -cal_stress 1 +cal_stress 1 #test_stress 1 -mixing_type broyden -mixing_beta 0.4 -mixing_gg0 1.5 +mixing_type broyden +mixing_beta 0.4 +mixing_gg0 1.5 diff --git a/tests/11_PW_GPU/006_PW_get_wf_GPU/INPUT b/tests/11_PW_GPU/006_PW_get_wf_GPU/INPUT index c6775e868b..0636b58b9f 100644 --- a/tests/11_PW_GPU/006_PW_get_wf_GPU/INPUT +++ b/tests/11_PW_GPU/006_PW_get_wf_GPU/INPUT @@ -1,22 +1,23 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf +suffix autotest +calculation scf -nbands 6 -symmetry 0 -pseudo_dir ../../PP_ORB +nbands 6 +symmetry 0 +pseudo_dir ../../PP_ORB -device gpu +device gpu +init_wfc random #Parameters (2.Iteration) -ecutwfc 100 -scf_thr 1e-9 -scf_nmax 100 +ecutwfc 100 +scf_thr 1e-9 +scf_nmax 100 #Parameters (3.Basis) -basis_type pw +basis_type pw -out_wfc_norm 1*1 +out_wfc_norm 1*1 -pw_seed 1 +pw_seed 1 diff --git a/tests/11_PW_GPU/007_PW_OW_GPU/INPUT b/tests/11_PW_GPU/007_PW_OW_GPU/INPUT new file mode 100644 index 0000000000..c44e78cd62 --- /dev/null +++ b/tests/11_PW_GPU/007_PW_OW_GPU/INPUT @@ -0,0 +1,24 @@ +INPUT_PARAMETERS +#Parameters (1.General) +suffix autotest +calculation scf + +nbands 6 +symmetry 1 +pseudo_dir ../../PP_ORB + +device gpu +init_wfc random + +#Parameters (2.Iteration) +ecutwfc 20 +scf_thr 1e-9 +scf_nmax 100 + +#Parameters (3.Basis) +basis_type pw + +out_wfc_pw 1 +nspin 1 + +pw_seed 1 diff --git a/tests/11_PW_GPU/007_PW_OW_GPU/KPT b/tests/11_PW_GPU/007_PW_OW_GPU/KPT new file mode 100644 index 0000000000..f5f7f4ec34 --- /dev/null +++ b/tests/11_PW_GPU/007_PW_OW_GPU/KPT @@ -0,0 +1,4 @@ +K_POINTS +0 +Gamma +2 2 2 0 0 0 diff --git a/tests/11_PW_GPU/BUG_PW_OW_GPU/README b/tests/11_PW_GPU/007_PW_OW_GPU/README similarity index 100% rename from tests/11_PW_GPU/BUG_PW_OW_GPU/README rename to tests/11_PW_GPU/007_PW_OW_GPU/README diff --git a/tests/11_PW_GPU/BUG_PW_OW_GPU/STRU b/tests/11_PW_GPU/007_PW_OW_GPU/STRU similarity index 100% rename from tests/11_PW_GPU/BUG_PW_OW_GPU/STRU rename to tests/11_PW_GPU/007_PW_OW_GPU/STRU diff --git a/tests/11_PW_GPU/007_PW_OW_GPU/result.ref b/tests/11_PW_GPU/007_PW_OW_GPU/result.ref new file mode 100644 index 0000000000..641b31e2cf --- /dev/null +++ b/tests/11_PW_GPU/007_PW_OW_GPU/result.ref @@ -0,0 +1,12 @@ +etotref -211.8032873347885 +etotperatomref -105.9016436674 +Max_wfc_1 0.6619 +Max_wfc_2 0.7295 +Max_wfc_3 0.2296 +Max_wfc_4 0.5042 +Max_wfc_5 0.3319 +Max_wfc_6 0.8765 +pointgroupref T_d +spacegroupref O_h +nksibzref 3 +totaltimeref 3.06 diff --git a/tests/11_PW_GPU/BUG_PW_OW_GPU/INPUT b/tests/11_PW_GPU/BUG_PW_OW_GPU/INPUT deleted file mode 100644 index 2e6a424a7d..0000000000 --- a/tests/11_PW_GPU/BUG_PW_OW_GPU/INPUT +++ /dev/null @@ -1,22 +0,0 @@ -INPUT_PARAMETERS -#Parameters (1.General) -suffix autotest -calculation scf - -nbands 6 -symmetry 1 -pseudo_dir ../../PP_ORB - -device gpu - -#Parameters (2.Iteration) -ecutwfc 20 -scf_thr 1e-9 -scf_nmax 100 - -#Parameters (3.Basis) -basis_type pw - -out_wfc_pw 1 - -pw_seed 1 diff --git a/tests/11_PW_GPU/BUG_PW_OW_GPU/result.ref b/tests/11_PW_GPU/BUG_PW_OW_GPU/result.ref deleted file mode 100644 index dd4a5ac692..0000000000 --- a/tests/11_PW_GPU/BUG_PW_OW_GPU/result.ref +++ /dev/null @@ -1,12 +0,0 @@ -etotref -211.8032873347885 -etotperatomref -105.9016436674 -Max_wfc_1 0.9527 -Max_wfc_2 0.3675 -Max_wfc_3 0.3351 -Max_wfc_4 0.3825 -Max_wfc_5 0.4409 -Max_wfc_6 0.4752 -pointgroupref T_d -spacegroupref O_h -nksibzref 3 -totaltimeref 3.06 diff --git a/tests/11_PW_GPU/CASES_GPU.txt b/tests/11_PW_GPU/CASES_GPU.txt index bb0cf0b776..f550b7f044 100644 --- a/tests/11_PW_GPU/CASES_GPU.txt +++ b/tests/11_PW_GPU/CASES_GPU.txt @@ -1,5 +1,7 @@ 001_PW_BPCG_GPU 002_PW_CG_GPU 003_PW_DA_GPU +004_PW_DS_GPU 005_PW_CG_GPU_float 006_PW_get_wf_GPU +007_PW_OW_GPU diff --git a/tests/12_NAO_Gamma_GPU/001_NO_BiSeCuO_GPU/INPUT b/tests/12_NAO_Gamma_GPU/001_NO_BiSeCuO_GPU/INPUT index a6d4bf56a3..6b0421dc84 100644 --- a/tests/12_NAO_Gamma_GPU/001_NO_BiSeCuO_GPU/INPUT +++ b/tests/12_NAO_Gamma_GPU/001_NO_BiSeCuO_GPU/INPUT @@ -1,26 +1,26 @@ INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf +suffix autotest +calculation scf #nbands 8 -symmetry 1 +symmetry 1 #Parameters (2.Iteration) -ecutwfc 30 -scf_thr 1e-7 -scf_nmax 100 -cal_force 1 -cal_stress 1 +ecutwfc 30 +scf_thr 1e-7 +scf_nmax 100 +cal_force 1 +cal_stress 1 #Parameters (3.Basis) -basis_type lcao +basis_type lcao #Parameters (4.Smearing) -smearing_method gauss -smearing_sigma 0.002 +smearing_method gauss +smearing_sigma 0.002 #Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.3 -ks_solver cusolver -device gpu -gamma_only 1 +mixing_type broyden +mixing_beta 0.3 +ks_solver cusolver +device gpu +gamma_only 1 diff --git a/tests/12_NAO_Gamma_GPU/002_NO_H2O_GPU/INPUT b/tests/12_NAO_Gamma_GPU/002_NO_H2O_GPU/INPUT index b02963f8fe..bff3028330 100644 --- a/tests/12_NAO_Gamma_GPU/002_NO_H2O_GPU/INPUT +++ b/tests/12_NAO_Gamma_GPU/002_NO_H2O_GPU/INPUT @@ -1,29 +1,29 @@ INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf -nbands 6 -symmetry 0 +suffix autotest +calculation scf +nbands 6 +symmetry 0 #Parameters (2.Iteration) -ecutwfc 100 -scf_thr 1e-7 -scf_nmax 50 +ecutwfc 100 +scf_thr 1e-7 +scf_nmax 50 #Parameters (3.Basis) -basis_type lcao +basis_type lcao #Parameters (4.Smearing) -smearing_method gaussian -smearing_sigma 0.02 +smearing_method gaussian +smearing_sigma 0.02 #Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.4 +mixing_type broyden +mixing_beta 0.4 #Parameters (6.Deepks) -cal_force 1 -cal_stress 1 -ks_solver cusolver -device gpu -gamma_only 1 +cal_force 1 +cal_stress 1 +ks_solver cusolver +device gpu +gamma_only 1 diff --git a/tests/12_NAO_Gamma_GPU/003_NO_H2_DZP_GPU/INPUT b/tests/12_NAO_Gamma_GPU/003_NO_H2_DZP_GPU/INPUT index e8947e2b18..2caa6ed191 100644 --- a/tests/12_NAO_Gamma_GPU/003_NO_H2_DZP_GPU/INPUT +++ b/tests/12_NAO_Gamma_GPU/003_NO_H2_DZP_GPU/INPUT @@ -1,27 +1,27 @@ INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf +suffix autotest +calculation scf #nbands 8 -symmetry 1 +symmetry 1 #Parameters (2.Iteration) -ecutwfc 100 -scf_thr 1e-7 -scf_nmax 100 -cal_force 1 -cal_stress 1 +ecutwfc 100 +scf_thr 1e-7 +scf_nmax 100 +cal_force 1 +cal_stress 1 #Parameters (3.Basis) -basis_type lcao +basis_type lcao #Parameters (4.Smearing) -smearing_method gauss -smearing_sigma 0.002 +smearing_method gauss +smearing_sigma 0.002 #Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.3 -gamma_only 1 -ks_solver cusolver -device gpu +mixing_type broyden +mixing_beta 0.3 +gamma_only 1 +ks_solver cusolver +device gpu diff --git a/tests/12_NAO_Gamma_GPU/004_NO_H2_DZP_S2_GPU/INPUT b/tests/12_NAO_Gamma_GPU/004_NO_H2_DZP_S2_GPU/INPUT index eff7e5af40..e4b04b9af2 100644 --- a/tests/12_NAO_Gamma_GPU/004_NO_H2_DZP_S2_GPU/INPUT +++ b/tests/12_NAO_Gamma_GPU/004_NO_H2_DZP_S2_GPU/INPUT @@ -1,28 +1,28 @@ INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf +suffix autotest +calculation scf #nbands 8 -symmetry 1 +symmetry 1 #Parameters (2.Iteration) -ecutwfc 50 -scf_thr 1e-7 -scf_nmax 100 -cal_force 1 -cal_stress 1 +ecutwfc 50 +scf_thr 1e-7 +scf_nmax 100 +cal_force 1 +cal_stress 1 #Parameters (3.Basis) -basis_type lcao +basis_type lcao #Parameters (4.Smearing) -smearing_method gauss -smearing_sigma 0.002 +smearing_method gauss +smearing_sigma 0.002 #Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.3 -gamma_only 1 -ks_solver cusolver -device gpu -nspin 2 +mixing_type broyden +mixing_beta 0.3 +gamma_only 1 +ks_solver cusolver +device gpu +nspin 2 diff --git a/tests/12_NAO_Gamma_GPU/005_NO_H2_SZ_GPU/INPUT b/tests/12_NAO_Gamma_GPU/005_NO_H2_SZ_GPU/INPUT index b9822a2a24..ff90468528 100644 --- a/tests/12_NAO_Gamma_GPU/005_NO_H2_SZ_GPU/INPUT +++ b/tests/12_NAO_Gamma_GPU/005_NO_H2_SZ_GPU/INPUT @@ -1,27 +1,27 @@ INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf +suffix autotest +calculation scf #nbands 8 -symmetry 1 +symmetry 1 #Parameters (2.Iteration) -ecutwfc 50 -scf_thr 1e-7 -scf_nmax 100 -cal_force 1 -cal_stress 1 +ecutwfc 50 +scf_thr 1e-7 +scf_nmax 100 +cal_force 1 +cal_stress 1 #Parameters (3.Basis) -basis_type lcao +basis_type lcao #Parameters (4.Smearing) -smearing_method gauss -smearing_sigma 0.002 +smearing_method gauss +smearing_sigma 0.002 #Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.3 -gamma_only 1 -ks_solver cusolver -device gpu +mixing_type broyden +mixing_beta 0.3 +gamma_only 1 +ks_solver cusolver +device gpu diff --git a/tests/12_NAO_Gamma_GPU/006_NO_H2_SZ_S2_GPU/INPUT b/tests/12_NAO_Gamma_GPU/006_NO_H2_SZ_S2_GPU/INPUT index e5f00a390c..0ad826593a 100644 --- a/tests/12_NAO_Gamma_GPU/006_NO_H2_SZ_S2_GPU/INPUT +++ b/tests/12_NAO_Gamma_GPU/006_NO_H2_SZ_S2_GPU/INPUT @@ -1,28 +1,28 @@ INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf +suffix autotest +calculation scf #nbands 8 -symmetry 1 +symmetry 1 #Parameters (2.Iteration) -ecutwfc 50 -scf_thr 1e-7 -scf_nmax 100 -cal_force 1 -cal_stress 1 +ecutwfc 50 +scf_thr 1e-7 +scf_nmax 100 +cal_force 1 +cal_stress 1 #Parameters (3.Basis) -basis_type lcao +basis_type lcao #Parameters (4.Smearing) -smearing_method gauss -smearing_sigma 0.002 +smearing_method gauss +smearing_sigma 0.002 #Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.3 -gamma_only 1 -ks_solver cusolver -device gpu -nspin 2 +mixing_type broyden +mixing_beta 0.3 +gamma_only 1 +ks_solver cusolver +device gpu +nspin 2 diff --git a/tests/12_NAO_Gamma_GPU/007_NO_H_DZP_GPU/INPUT b/tests/12_NAO_Gamma_GPU/007_NO_H_DZP_GPU/INPUT index a9c11eca9e..faa58e5ebb 100644 --- a/tests/12_NAO_Gamma_GPU/007_NO_H_DZP_GPU/INPUT +++ b/tests/12_NAO_Gamma_GPU/007_NO_H_DZP_GPU/INPUT @@ -1,27 +1,27 @@ INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf +suffix autotest +calculation scf #nbands 8 -symmetry 1 +symmetry 1 #Parameters (2.Iteration) -ecutwfc 100 -scf_thr 1e-7 -scf_nmax 100 -cal_force 1 -cal_stress 1 +ecutwfc 100 +scf_thr 1e-7 +scf_nmax 100 +cal_force 1 +cal_stress 1 #Parameters (3.Basis) -basis_type lcao +basis_type lcao #Parameters (4.Smearing) -smearing_method gauss -smearing_sigma 0.002 +smearing_method gauss +smearing_sigma 0.002 #Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.3 -gamma_only 1 -ks_solver cusolver -device gpu +mixing_type broyden +mixing_beta 0.3 +gamma_only 1 +ks_solver cusolver +device gpu diff --git a/tests/12_NAO_Gamma_GPU/008_NO_H_DZP_S2_GPU/INPUT b/tests/12_NAO_Gamma_GPU/008_NO_H_DZP_S2_GPU/INPUT index 0f6a5d0ff5..e4977100ef 100644 --- a/tests/12_NAO_Gamma_GPU/008_NO_H_DZP_S2_GPU/INPUT +++ b/tests/12_NAO_Gamma_GPU/008_NO_H_DZP_S2_GPU/INPUT @@ -1,31 +1,31 @@ INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf +suffix autotest +calculation scf #nbands 8 -symmetry 1 +symmetry 1 #Parameters (2.Iteration) -ecutwfc 100 -scf_thr 1e-7 -scf_nmax 100 -cal_force 1 -cal_stress 1 +ecutwfc 100 +scf_thr 1e-7 +scf_nmax 100 +cal_force 1 +cal_stress 1 #Parameters (3.Basis) -basis_type lcao +basis_type lcao #Parameters (4.Smearing) -smearing_method gauss -smearing_sigma 0.002 +smearing_method gauss +smearing_sigma 0.002 #Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.4 -mixing_beta_mag 0.4 -mixing_gg0 0.0 -mixing_gg0_mag 0.0 -gamma_only 1 -ks_solver cusolver -device gpu -nspin 2 +mixing_type broyden +mixing_beta 0.4 +mixing_beta_mag 0.4 +mixing_gg0 0.0 +mixing_gg0_mag 0.0 +gamma_only 1 +ks_solver cusolver +device gpu +nspin 2 diff --git a/tests/12_NAO_Gamma_GPU/009_NO_Si2_DZP_GPU/INPUT b/tests/12_NAO_Gamma_GPU/009_NO_Si2_DZP_GPU/INPUT index b9822a2a24..ff90468528 100644 --- a/tests/12_NAO_Gamma_GPU/009_NO_Si2_DZP_GPU/INPUT +++ b/tests/12_NAO_Gamma_GPU/009_NO_Si2_DZP_GPU/INPUT @@ -1,27 +1,27 @@ INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf +suffix autotest +calculation scf #nbands 8 -symmetry 1 +symmetry 1 #Parameters (2.Iteration) -ecutwfc 50 -scf_thr 1e-7 -scf_nmax 100 -cal_force 1 -cal_stress 1 +ecutwfc 50 +scf_thr 1e-7 +scf_nmax 100 +cal_force 1 +cal_stress 1 #Parameters (3.Basis) -basis_type lcao +basis_type lcao #Parameters (4.Smearing) -smearing_method gauss -smearing_sigma 0.002 +smearing_method gauss +smearing_sigma 0.002 #Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.3 -gamma_only 1 -ks_solver cusolver -device gpu +mixing_type broyden +mixing_beta 0.3 +gamma_only 1 +ks_solver cusolver +device gpu diff --git a/tests/12_NAO_Gamma_GPU/010_NO_Si2_DZP_NEQ_GPU/INPUT b/tests/12_NAO_Gamma_GPU/010_NO_Si2_DZP_NEQ_GPU/INPUT index b9822a2a24..ff90468528 100644 --- a/tests/12_NAO_Gamma_GPU/010_NO_Si2_DZP_NEQ_GPU/INPUT +++ b/tests/12_NAO_Gamma_GPU/010_NO_Si2_DZP_NEQ_GPU/INPUT @@ -1,27 +1,27 @@ INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf +suffix autotest +calculation scf #nbands 8 -symmetry 1 +symmetry 1 #Parameters (2.Iteration) -ecutwfc 50 -scf_thr 1e-7 -scf_nmax 100 -cal_force 1 -cal_stress 1 +ecutwfc 50 +scf_thr 1e-7 +scf_nmax 100 +cal_force 1 +cal_stress 1 #Parameters (3.Basis) -basis_type lcao +basis_type lcao #Parameters (4.Smearing) -smearing_method gauss -smearing_sigma 0.002 +smearing_method gauss +smearing_sigma 0.002 #Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.3 -gamma_only 1 -ks_solver cusolver -device gpu +mixing_type broyden +mixing_beta 0.3 +gamma_only 1 +ks_solver cusolver +device gpu diff --git a/tests/12_NAO_Gamma_GPU/011_NO_Si2_DZP_NEQ_S2_GPU/INPUT b/tests/12_NAO_Gamma_GPU/011_NO_Si2_DZP_NEQ_S2_GPU/INPUT index eff7e5af40..e4b04b9af2 100644 --- a/tests/12_NAO_Gamma_GPU/011_NO_Si2_DZP_NEQ_S2_GPU/INPUT +++ b/tests/12_NAO_Gamma_GPU/011_NO_Si2_DZP_NEQ_S2_GPU/INPUT @@ -1,28 +1,28 @@ INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf +suffix autotest +calculation scf #nbands 8 -symmetry 1 +symmetry 1 #Parameters (2.Iteration) -ecutwfc 50 -scf_thr 1e-7 -scf_nmax 100 -cal_force 1 -cal_stress 1 +ecutwfc 50 +scf_thr 1e-7 +scf_nmax 100 +cal_force 1 +cal_stress 1 #Parameters (3.Basis) -basis_type lcao +basis_type lcao #Parameters (4.Smearing) -smearing_method gauss -smearing_sigma 0.002 +smearing_method gauss +smearing_sigma 0.002 #Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.3 -gamma_only 1 -ks_solver cusolver -device gpu -nspin 2 +mixing_type broyden +mixing_beta 0.3 +gamma_only 1 +ks_solver cusolver +device gpu +nspin 2 diff --git a/tests/12_NAO_Gamma_GPU/012_NO_Si2_DZP_S2_GPU/INPUT b/tests/12_NAO_Gamma_GPU/012_NO_Si2_DZP_S2_GPU/INPUT index eff7e5af40..e4b04b9af2 100644 --- a/tests/12_NAO_Gamma_GPU/012_NO_Si2_DZP_S2_GPU/INPUT +++ b/tests/12_NAO_Gamma_GPU/012_NO_Si2_DZP_S2_GPU/INPUT @@ -1,28 +1,28 @@ INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf +suffix autotest +calculation scf #nbands 8 -symmetry 1 +symmetry 1 #Parameters (2.Iteration) -ecutwfc 50 -scf_thr 1e-7 -scf_nmax 100 -cal_force 1 -cal_stress 1 +ecutwfc 50 +scf_thr 1e-7 +scf_nmax 100 +cal_force 1 +cal_stress 1 #Parameters (3.Basis) -basis_type lcao +basis_type lcao #Parameters (4.Smearing) -smearing_method gauss -smearing_sigma 0.002 +smearing_method gauss +smearing_sigma 0.002 #Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.3 -gamma_only 1 -ks_solver cusolver -device gpu -nspin 2 +mixing_type broyden +mixing_beta 0.3 +gamma_only 1 +ks_solver cusolver +device gpu +nspin 2 diff --git a/tests/12_NAO_Gamma_GPU/013_NO_Si2_TZDP_GPU/INPUT b/tests/12_NAO_Gamma_GPU/013_NO_Si2_TZDP_GPU/INPUT index b9822a2a24..ff90468528 100644 --- a/tests/12_NAO_Gamma_GPU/013_NO_Si2_TZDP_GPU/INPUT +++ b/tests/12_NAO_Gamma_GPU/013_NO_Si2_TZDP_GPU/INPUT @@ -1,27 +1,27 @@ INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf +suffix autotest +calculation scf #nbands 8 -symmetry 1 +symmetry 1 #Parameters (2.Iteration) -ecutwfc 50 -scf_thr 1e-7 -scf_nmax 100 -cal_force 1 -cal_stress 1 +ecutwfc 50 +scf_thr 1e-7 +scf_nmax 100 +cal_force 1 +cal_stress 1 #Parameters (3.Basis) -basis_type lcao +basis_type lcao #Parameters (4.Smearing) -smearing_method gauss -smearing_sigma 0.002 +smearing_method gauss +smearing_sigma 0.002 #Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.3 -gamma_only 1 -ks_solver cusolver -device gpu +mixing_type broyden +mixing_beta 0.3 +gamma_only 1 +ks_solver cusolver +device gpu diff --git a/tests/12_NAO_Gamma_GPU/014_NO_Si2_TZDP_NEQ_GPU/INPUT b/tests/12_NAO_Gamma_GPU/014_NO_Si2_TZDP_NEQ_GPU/INPUT index b9822a2a24..ff90468528 100644 --- a/tests/12_NAO_Gamma_GPU/014_NO_Si2_TZDP_NEQ_GPU/INPUT +++ b/tests/12_NAO_Gamma_GPU/014_NO_Si2_TZDP_NEQ_GPU/INPUT @@ -1,27 +1,27 @@ INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf +suffix autotest +calculation scf #nbands 8 -symmetry 1 +symmetry 1 #Parameters (2.Iteration) -ecutwfc 50 -scf_thr 1e-7 -scf_nmax 100 -cal_force 1 -cal_stress 1 +ecutwfc 50 +scf_thr 1e-7 +scf_nmax 100 +cal_force 1 +cal_stress 1 #Parameters (3.Basis) -basis_type lcao +basis_type lcao #Parameters (4.Smearing) -smearing_method gauss -smearing_sigma 0.002 +smearing_method gauss +smearing_sigma 0.002 #Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.3 -gamma_only 1 -ks_solver cusolver -device gpu +mixing_type broyden +mixing_beta 0.3 +gamma_only 1 +ks_solver cusolver +device gpu diff --git a/tests/12_NAO_Gamma_GPU/015_NO_Si2_TZDP_NEQ_S2_GPU/INPUT b/tests/12_NAO_Gamma_GPU/015_NO_Si2_TZDP_NEQ_S2_GPU/INPUT index eff7e5af40..e4b04b9af2 100644 --- a/tests/12_NAO_Gamma_GPU/015_NO_Si2_TZDP_NEQ_S2_GPU/INPUT +++ b/tests/12_NAO_Gamma_GPU/015_NO_Si2_TZDP_NEQ_S2_GPU/INPUT @@ -1,28 +1,28 @@ INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf +suffix autotest +calculation scf #nbands 8 -symmetry 1 +symmetry 1 #Parameters (2.Iteration) -ecutwfc 50 -scf_thr 1e-7 -scf_nmax 100 -cal_force 1 -cal_stress 1 +ecutwfc 50 +scf_thr 1e-7 +scf_nmax 100 +cal_force 1 +cal_stress 1 #Parameters (3.Basis) -basis_type lcao +basis_type lcao #Parameters (4.Smearing) -smearing_method gauss -smearing_sigma 0.002 +smearing_method gauss +smearing_sigma 0.002 #Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.3 -gamma_only 1 -ks_solver cusolver -device gpu -nspin 2 +mixing_type broyden +mixing_beta 0.3 +gamma_only 1 +ks_solver cusolver +device gpu +nspin 2 diff --git a/tests/12_NAO_Gamma_GPU/016_NO_Si2_TZDP_S2_GPU/INPUT b/tests/12_NAO_Gamma_GPU/016_NO_Si2_TZDP_S2_GPU/INPUT index eff7e5af40..e4b04b9af2 100644 --- a/tests/12_NAO_Gamma_GPU/016_NO_Si2_TZDP_S2_GPU/INPUT +++ b/tests/12_NAO_Gamma_GPU/016_NO_Si2_TZDP_S2_GPU/INPUT @@ -1,28 +1,28 @@ INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf +suffix autotest +calculation scf #nbands 8 -symmetry 1 +symmetry 1 #Parameters (2.Iteration) -ecutwfc 50 -scf_thr 1e-7 -scf_nmax 100 -cal_force 1 -cal_stress 1 +ecutwfc 50 +scf_thr 1e-7 +scf_nmax 100 +cal_force 1 +cal_stress 1 #Parameters (3.Basis) -basis_type lcao +basis_type lcao #Parameters (4.Smearing) -smearing_method gauss -smearing_sigma 0.002 +smearing_method gauss +smearing_sigma 0.002 #Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.3 -gamma_only 1 -ks_solver cusolver -device gpu -nspin 2 +mixing_type broyden +mixing_beta 0.3 +gamma_only 1 +ks_solver cusolver +device gpu +nspin 2 diff --git a/tests/13_NAO_multik_GPU/001_NO_KP_BiSeCuO_GPU/INPUT b/tests/13_NAO_multik_GPU/001_NO_KP_BiSeCuO_GPU/INPUT index 54fb692742..d4ccc579c3 100644 --- a/tests/13_NAO_multik_GPU/001_NO_KP_BiSeCuO_GPU/INPUT +++ b/tests/13_NAO_multik_GPU/001_NO_KP_BiSeCuO_GPU/INPUT @@ -1,26 +1,26 @@ INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf +suffix autotest +calculation scf #nbands 8 -symmetry 1 +symmetry 1 #Parameters (2.Iteration) -ecutwfc 30 -scf_thr 1e-7 -scf_nmax 100 -cal_force 1 -cal_stress 1 +ecutwfc 30 +scf_thr 1e-7 +scf_nmax 100 +cal_force 1 +cal_stress 1 #Parameters (3.Basis) -basis_type lcao +basis_type lcao #Parameters (4.Smearing) -smearing_method gauss -smearing_sigma 0.002 +smearing_method gauss +smearing_sigma 0.002 #Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.3 -ks_solver cusolver -device gpu -gamma_only 0 +mixing_type broyden +mixing_beta 0.3 +ks_solver cusolver +device gpu +gamma_only 0 diff --git a/tests/13_NAO_multik_GPU/002_NO_KP_Si2_DZP_NEQ_S2_GPU/INPUT b/tests/13_NAO_multik_GPU/002_NO_KP_Si2_DZP_NEQ_S2_GPU/INPUT index 69c5ba3cee..5af2b8f671 100644 --- a/tests/13_NAO_multik_GPU/002_NO_KP_Si2_DZP_NEQ_S2_GPU/INPUT +++ b/tests/13_NAO_multik_GPU/002_NO_KP_Si2_DZP_NEQ_S2_GPU/INPUT @@ -1,28 +1,28 @@ INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf +suffix autotest +calculation scf #nbands 8 -symmetry 1 +symmetry 1 #Parameters (2.Iteration) -ecutwfc 50 -scf_thr 1e-7 -scf_nmax 100 -cal_force 1 -cal_stress 1 +ecutwfc 50 +scf_thr 1e-7 +scf_nmax 100 +cal_force 1 +cal_stress 1 #Parameters (3.Basis) -basis_type lcao +basis_type lcao #Parameters (4.Smearing) -smearing_method gauss -smearing_sigma 0.002 +smearing_method gauss +smearing_sigma 0.002 #Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.3 -gamma_only 0 -ks_solver cusolver -device gpu -nspin 2 +mixing_type broyden +mixing_beta 0.3 +gamma_only 0 +ks_solver cusolver +device gpu +nspin 2 diff --git a/tests/13_NAO_multik_GPU/003_NO_KP_Si2_TZDP_S2_GPU/INPUT b/tests/13_NAO_multik_GPU/003_NO_KP_Si2_TZDP_S2_GPU/INPUT index 69c5ba3cee..5af2b8f671 100644 --- a/tests/13_NAO_multik_GPU/003_NO_KP_Si2_TZDP_S2_GPU/INPUT +++ b/tests/13_NAO_multik_GPU/003_NO_KP_Si2_TZDP_S2_GPU/INPUT @@ -1,28 +1,28 @@ INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf +suffix autotest +calculation scf #nbands 8 -symmetry 1 +symmetry 1 #Parameters (2.Iteration) -ecutwfc 50 -scf_thr 1e-7 -scf_nmax 100 -cal_force 1 -cal_stress 1 +ecutwfc 50 +scf_thr 1e-7 +scf_nmax 100 +cal_force 1 +cal_stress 1 #Parameters (3.Basis) -basis_type lcao +basis_type lcao #Parameters (4.Smearing) -smearing_method gauss -smearing_sigma 0.002 +smearing_method gauss +smearing_sigma 0.002 #Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.3 -gamma_only 0 -ks_solver cusolver -device gpu -nspin 2 +mixing_type broyden +mixing_beta 0.3 +gamma_only 0 +ks_solver cusolver +device gpu +nspin 2 diff --git a/tests/15_rtTDDFT_GPU/01_NO_KP_ocp_TDDFT_GPU/INPUT b/tests/15_rtTDDFT_GPU/01_NO_KP_ocp_TDDFT_GPU/INPUT index dff6576bfb..8de580e34e 100644 --- a/tests/15_rtTDDFT_GPU/01_NO_KP_ocp_TDDFT_GPU/INPUT +++ b/tests/15_rtTDDFT_GPU/01_NO_KP_ocp_TDDFT_GPU/INPUT @@ -1,35 +1,36 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (General) -suffix autotest -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB +suffix autotest +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB -nbands 5 -calculation md -esolver_type tddft +nbands 5 +calculation md +esolver_type tddft #Parameter (Accuracy) -ecutwfc 20 -scf_nmax 50 +ecutwfc 20 +scf_nmax 50 -device gpu -ks_solver cusolver -basis_type lcao -gamma_only 0 -md_nstep 2 +device gpu +ks_solver cusolver +basis_type lcao +gamma_only 0 +md_nstep 3 +estep_per_md 1 -mixing_type broyden -mixing_beta 0.7 -mixing_gg0 0.0 -scf_thr 1.0e-6 +mixing_type broyden +mixing_beta 0.7 +mixing_gg0 0.0 +scf_thr 1.0e-6 -cal_stress 1 -stress_thr 1e-6 -cal_force 1 -force_thr_ev 1.0e-3 +cal_stress 1 +stress_thr 1e-6 +cal_force 1 +force_thr_ev 1.0e-3 -md_type nve -md_dt 0.05 -init_vel 1 -ocp 1 -ocp_set 1*1 1*1 3*0 +md_type nve +md_dt 0.05 +init_vel 1 +ocp 1 +ocp_set 1*1 1*1 3*0 diff --git a/tests/15_rtTDDFT_GPU/01_NO_KP_ocp_TDDFT_GPU/result.ref b/tests/15_rtTDDFT_GPU/01_NO_KP_ocp_TDDFT_GPU/result.ref index c513b14752..0c5a7f4b0e 100644 --- a/tests/15_rtTDDFT_GPU/01_NO_KP_ocp_TDDFT_GPU/result.ref +++ b/tests/15_rtTDDFT_GPU/01_NO_KP_ocp_TDDFT_GPU/result.ref @@ -1,4 +1,4 @@ -etotref -18.06593168523523 +etotref -18.06593168523521 etotperatomref -9.0329658426 totalforceref 40.752890 totalstressref 72.113950 diff --git a/tests/15_rtTDDFT_GPU/02_NO_CH_OW_TDDFT_GPU/INPUT b/tests/15_rtTDDFT_GPU/02_NO_CH_OW_TDDFT_GPU/INPUT new file mode 100644 index 0000000000..93ab6ae8a4 --- /dev/null +++ b/tests/15_rtTDDFT_GPU/02_NO_CH_OW_TDDFT_GPU/INPUT @@ -0,0 +1,39 @@ +INPUT_PARAMETERS +#Parameters (General) +suffix autotest +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB + +nbands 10 +calculation md +esolver_type tddft + +#Parameter (Accuracy) +ecutwfc 5 +scf_nmax 50 + +smearing_method gaussian +smearing_sigma 0.02 + +device gpu +ks_solver cusolver +basis_type lcao +gamma_only 0 +md_nstep 3 +estep_per_md 1 + +mixing_type broyden +mixing_beta 0.7 +mixing_gg0 0.0 +scf_thr 1.0e-6 + +cal_stress 1 +stress_thr 1e-6 +cal_force 1 +force_thr_ev 1e-3 + +md_type nve +md_dt 0.01 +init_vel 1 +out_wfc_lcao 1 +out_app_flag 0 diff --git a/tests/15_rtTDDFT_GPU/02_NO_CH_TDDFT_GPU/KPT b/tests/15_rtTDDFT_GPU/02_NO_CH_OW_TDDFT_GPU/KPT similarity index 100% rename from tests/15_rtTDDFT_GPU/02_NO_CH_TDDFT_GPU/KPT rename to tests/15_rtTDDFT_GPU/02_NO_CH_OW_TDDFT_GPU/KPT diff --git a/tests/15_rtTDDFT_GPU/02_NO_CH_TDDFT_GPU/STRU b/tests/15_rtTDDFT_GPU/02_NO_CH_OW_TDDFT_GPU/STRU similarity index 100% rename from tests/15_rtTDDFT_GPU/02_NO_CH_TDDFT_GPU/STRU rename to tests/15_rtTDDFT_GPU/02_NO_CH_OW_TDDFT_GPU/STRU diff --git a/tests/15_rtTDDFT_GPU/02_NO_CH_OW_TDDFT_GPU/result.ref b/tests/15_rtTDDFT_GPU/02_NO_CH_OW_TDDFT_GPU/result.ref new file mode 100644 index 0000000000..64e2f2ae8f --- /dev/null +++ b/tests/15_rtTDDFT_GPU/02_NO_CH_OW_TDDFT_GPU/result.ref @@ -0,0 +1,6 @@ +etotref -323.5398327660280 +etotperatomref -107.8466109220 +totalforceref 19.450256 +totalstressref 329.292627 +Compare_wfc_lcao_pass 0 +totaltimeref 2.08 diff --git a/tests/15_rtTDDFT_GPU/02_NO_CH_OW_TDDFT_GPU/wfk1g3_nao_mod.txt.ref b/tests/15_rtTDDFT_GPU/02_NO_CH_OW_TDDFT_GPU/wfk1g3_nao_mod.txt.ref new file mode 100644 index 0000000000..5ed19da4f9 --- /dev/null +++ b/tests/15_rtTDDFT_GPU/02_NO_CH_OW_TDDFT_GPU/wfk1g3_nao_mod.txt.ref @@ -0,0 +1,104 @@ +1 (index of k points) +0 0 0 +10 (number of bands) +31 (number of orbitals) +1 (band) +-1.61755584e+00 (Ry) +1.00000000e+00 (Occupations) +1.7973033228e-02 5.6365835155e-03 4.0292551523e-03 9.3613124647e-07 3.1049073715e-04 +4.4881324147e-01 6.1982212024e-02 2.1866639499e-03 5.3854752435e-05 1.3443886400e-02 +2.4004885492e-03 5.6446362484e-05 2.1372116215e-03 1.1018527223e-02 3.0207201941e-08 +3.4647693721e-05 2.2873348749e-03 1.7856076996e-05 4.7006748870e-01 4.4279989219e-02 +2.3897932195e-03 1.0152249673e-04 1.3497145623e-02 2.1842163251e-03 4.9876850598e-05 +2.2483079886e-03 8.2943956363e-03 5.4581218803e-08 2.2605006631e-05 2.5123017963e-03 +1.9513113148e-05 +2 (band) +-7.07747396e-01 (Ry) +1.00000000e+00 (Occupations) +2.0653072429e-01 1.2922034155e-03 5.5721322331e-03 7.2160303746e-07 1.1946461441e-04 +2.4049835276e-02 9.0533892005e-03 4.1353078277e-01 6.9010744273e-08 1.0850266122e-03 +8.5128606326e-03 2.6178316195e-06 2.3615553384e-03 6.7178999601e-03 6.4624310555e-06 +2.8515458235e-03 7.4052768556e-05 1.8573055905e-06 1.8685652776e-02 1.1546953779e-02 +4.1059371287e-01 1.0518947039e-05 2.0025618623e-03 5.0072529498e-03 4.5336636824e-06 +3.1909624844e-04 6.5641355509e-03 6.4650077421e-06 2.5762193433e-03 6.2135728577e-04 +2.3593124810e-07 +3 (band) +-4.79113246e-01 (Ry) +1.00000000e+00 (Occupations) +7.0949989237e-01 8.1390285943e-02 4.9575171275e-03 2.7504618329e-06 8.1835591429e-05 +5.7799204671e-02 3.6790251304e-03 2.2770658483e-01 2.2533967243e-05 7.3942524577e-03 +1.1242094504e-03 1.1736100212e-05 2.4009897873e-03 1.2402323127e-02 3.1370837973e-06 +5.0148798457e-04 2.4032930056e-04 3.7185915214e-07 4.8045592677e-02 8.0553442983e-03 +2.2283814985e-01 4.5776182772e-05 1.5502909712e-02 6.2832313743e-04 3.2578627130e-06 +2.8429788855e-03 1.2036482557e-02 4.3300276852e-06 2.8188339374e-04 1.5085617131e-03 +5.1181029768e-06 +4 (band) +-4.50651346e-01 (Ry) +1.00000000e+00 (Occupations) +1.3215965624e-02 7.3798641996e-04 1.2038973025e-03 1.7937550905e-06 6.7028378581e-04 +6.9718289138e-03 2.5739994415e-03 2.8137532816e-03 3.8119796372e-03 6.3187318495e-01 +3.1901058225e-04 8.0847071103e-04 1.2861262374e-01 3.1525406399e-03 6.1162723759e-06 +1.0276720894e-03 6.6002797230e-02 3.2862533094e-04 8.4196142496e-03 3.4694204484e-03 +2.9150739715e-03 4.0961852049e-03 6.7963857691e-01 2.1227695507e-04 6.8941250116e-04 +1.1232828913e-01 3.2277363043e-03 6.4199729130e-06 1.0253152403e-03 7.2324966855e-02 +3.6949273003e-04 +5 (band) +-4.29244383e-01 (Ry) +1.00000000e+00 (Occupations) +1.2546784263e-04 1.1549555323e-05 5.4861100875e-06 1.7618788451e-04 4.0258885017e-06 +2.4553679476e-05 1.3128486248e-05 2.6970170350e-05 6.3651768261e-01 3.8382457432e-03 +1.6118902935e-06 1.3046899203e-01 7.5113869585e-04 1.7036696317e-05 1.0434795778e-03 +6.3775793448e-06 4.0369713070e-04 5.5551262544e-02 1.4438094641e-04 7.4707587826e-05 +2.7467298158e-05 6.8689923238e-01 4.1429029353e-03 4.1973262045e-07 1.1228566368e-01 +6.6495939232e-04 1.4345339069e-05 1.0445406969e-03 6.1207392476e-06 4.4277257659e-04 +6.2664476162e-02 +6 (band) +4.03555951e-01 (Ry) +0.00000000e+00 (Occupations) +8.1683925769e-06 1.4722915207e-06 1.9948122052e-06 1.3200895008e-04 2.4021948885e-06 +2.4242079429e-04 1.6150496660e-06 6.9023730019e-06 9.7310837647e-01 7.7981683079e-03 +6.0647157972e-06 5.6610304955e-02 4.9202412347e-04 9.7624398044e-06 1.3864041088e-03 +1.0077421290e-05 1.1828407394e-03 1.6453337227e-01 2.3314812432e-04 1.7930229814e-05 +2.1137369530e-06 9.7075032389e-01 7.7723245275e-03 2.2152868719e-06 6.3595469597e-02 +5.5426047813e-04 6.1501583800e-06 1.3430510326e-03 9.4412376964e-06 1.2903623626e-03 +1.7669219433e-01 +7 (band) +4.29135221e-01 (Ry) +0.00000000e+00 (Occupations) +2.0483430953e-03 2.1290771690e-04 4.7751193802e-04 1.4707473235e-06 1.0462721745e-04 +9.8666649512e-02 1.1655949473e-02 8.5225424258e-04 7.7099091869e-03 9.9362720904e-01 +1.1296245859e-03 4.8817605249e-04 6.7644953642e-02 6.7149093710e-04 1.0840345166e-05 +1.2451690036e-03 1.5673285862e-01 1.3488300546e-03 9.5609188618e-02 1.6675102183e-02 +4.1262849603e-04 7.6976327316e-03 9.9115499004e-01 2.8451518740e-04 5.3136929190e-04 +7.4105703116e-02 2.4097974271e-03 1.0772646344e-05 1.2234030864e-03 1.6933164045e-01 +1.4384194040e-03 +8 (band) +4.92284914e-01 (Ry) +0.00000000e+00 (Occupations) +2.5847673924e-01 3.5257716671e-02 5.4429773382e-02 4.3001919268e-08 1.1703814288e-04 +2.5391739847e-01 3.0906462859e-01 1.0309388450e-01 1.5712488430e-05 1.6757312373e-02 +7.4477641576e-02 7.1409157814e-06 2.7625711336e-03 2.1035588378e-01 4.3173293094e-06 +6.4592574702e-04 1.0158460762e-03 3.3313116902e-05 1.5848502785e-01 3.3347675036e-01 +9.6591033633e-02 8.9410837584e-06 2.2780796705e-03 7.3586838421e-02 5.0767785523e-05 +3.0484527462e-03 2.0961786979e-01 5.5400550591e-06 5.4738032999e-04 2.0896375541e-03 +7.0185962671e-06 +9 (band) +7.32222369e-01 (Ry) +0.00000000e+00 (Occupations) +2.4578695350e-03 8.5843807140e-04 6.2468854349e-04 2.5395126951e-07 1.2683386927e-03 +2.2778058062e+00 3.7725419109e-01 4.7386829956e-02 2.8867590703e-04 3.8786144228e-02 +1.0678273189e-02 8.5392123886e-05 4.7205991655e-03 1.4010791076e-01 7.5925567125e-07 +1.1082943750e-04 7.8127831595e-03 5.1040821121e-05 2.2812710521e+00 3.7121246547e-01 +4.2697505218e-02 3.5566666679e-04 3.9610957533e-02 1.5859332778e-02 1.6142457000e-04 +5.7494172987e-03 1.3199569563e-01 6.0546882772e-07 1.5523585585e-04 8.4274708110e-03 +5.9663287292e-05 +10 (band) +9.17560598e-01 (Ry) +0.00000000e+00 (Occupations) +1.4605760895e-02 3.2672341171e-03 3.5046933774e-03 3.2981741935e-07 1.4169970771e-03 +6.0584781494e-02 1.2710680005e-02 1.4913804403e+00 7.1951578087e-06 2.9200959258e-03 +3.1644331888e-01 2.5015543231e-06 1.5440221499e-03 5.6773360365e-03 9.5832726527e-07 +3.3827355085e-03 3.7440570824e-04 8.0049775928e-07 6.2704352743e-02 3.8212494469e-03 +1.4740759426e+00 1.0482135474e-05 3.1784866569e-03 3.4460812261e-01 6.4696964585e-06 +1.4877818341e-03 1.8027792019e-03 7.7708899765e-08 2.5473307995e-03 3.9643734513e-04 +1.7671374051e-06 diff --git a/tests/15_rtTDDFT_GPU/02_NO_CH_TDDFT_GPU/INPUT b/tests/15_rtTDDFT_GPU/02_NO_CH_TDDFT_GPU/INPUT deleted file mode 100644 index 80421d200c..0000000000 --- a/tests/15_rtTDDFT_GPU/02_NO_CH_TDDFT_GPU/INPUT +++ /dev/null @@ -1,36 +0,0 @@ -INPUT_PARAMETERS -#Parameters (General) -suffix autotest -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB - -nbands 10 -calculation md -esolver_type tddft - -#Parameter (Accuracy) -ecutwfc 5 -scf_nmax 50 - -smearing_method gaussian -smearing_sigma 0.02 - -device gpu -ks_solver cusolver -basis_type lcao -gamma_only 0 -md_nstep 2 - -mixing_type broyden -mixing_beta 0.7 -mixing_gg0 0.0 -scf_thr 1.0e-6 - -cal_stress 1 -stress_thr 1e-6 -cal_force 1 -force_thr_ev 1e-3 - -md_type nve -md_dt 0.01 -init_vel 1 diff --git a/tests/15_rtTDDFT_GPU/02_NO_CH_TDDFT_GPU/result.ref b/tests/15_rtTDDFT_GPU/02_NO_CH_TDDFT_GPU/result.ref deleted file mode 100644 index ded16345fe..0000000000 --- a/tests/15_rtTDDFT_GPU/02_NO_CH_TDDFT_GPU/result.ref +++ /dev/null @@ -1,5 +0,0 @@ -etotref -323.5398327660267 -etotperatomref -107.8466109220 -totalforceref 19.450256 -totalstressref 329.292627 -totaltimeref 2.06 diff --git a/tests/15_rtTDDFT_GPU/03_NO_CO_TDDFT_GPU/INPUT b/tests/15_rtTDDFT_GPU/03_NO_CO_TDDFT_GPU/INPUT index 9a2bf58c77..840942b8ab 100644 --- a/tests/15_rtTDDFT_GPU/03_NO_CO_TDDFT_GPU/INPUT +++ b/tests/15_rtTDDFT_GPU/03_NO_CO_TDDFT_GPU/INPUT @@ -1,35 +1,36 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (General) -suffix autotest -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB +suffix autotest +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB -nbands 10 -calculation md -esolver_type tddft +nbands 10 +calculation md +esolver_type tddft #Parameter (Accuracy) -ecutwfc 20 -scf_nmax 50 +ecutwfc 20 +scf_nmax 50 -device gpu -ks_solver cusolver -basis_type lcao -gamma_only 0 -md_nstep 2 +device gpu +ks_solver cusolver +basis_type lcao +gamma_only 0 +md_nstep 3 +estep_per_md 1 -mixing_type broyden -mixing_beta 0.7 -mixing_gg0 0.0 -scf_thr 1.0e-6 +mixing_type broyden +mixing_beta 0.7 +mixing_gg0 0.0 +scf_thr 1.0e-6 -cal_stress 1 -stress_thr 1e-6 -cal_force 1 -force_thr_ev 1.0e-3 +cal_stress 1 +stress_thr 1e-6 +cal_force 1 +force_thr_ev 1.0e-3 -md_type nve -md_dt 0.05 -init_vel 1 -ocp 1 -ocp_set 4*2 2*1 4*0 +md_type nve +md_dt 0.05 +init_vel 1 +ocp 1 +ocp_set 4*2 2*1 4*0 diff --git a/tests/15_rtTDDFT_GPU/03_NO_CO_TDDFT_GPU/result.ref b/tests/15_rtTDDFT_GPU/03_NO_CO_TDDFT_GPU/result.ref index c4d08e3f9f..07685a2d0c 100644 --- a/tests/15_rtTDDFT_GPU/03_NO_CO_TDDFT_GPU/result.ref +++ b/tests/15_rtTDDFT_GPU/03_NO_CO_TDDFT_GPU/result.ref @@ -1,5 +1,5 @@ -etotref -603.4339802028381 -etotperatomref -301.7169901014 -totalforceref 12.079250 -totalstressref 28.046553 +etotref -603.4336857561682 +etotperatomref -301.7168428781 +totalforceref 12.095750 +totalstressref 27.935490 totaltimeref 2.53 diff --git a/tests/15_rtTDDFT_GPU/04_NO_CO_ocp_TDDFT_GPU/INPUT b/tests/15_rtTDDFT_GPU/04_NO_CO_ocp_TDDFT_GPU/INPUT index db1b78eeb9..c9dd98111f 100644 --- a/tests/15_rtTDDFT_GPU/04_NO_CO_ocp_TDDFT_GPU/INPUT +++ b/tests/15_rtTDDFT_GPU/04_NO_CO_ocp_TDDFT_GPU/INPUT @@ -1,35 +1,36 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (General) -suffix autotest -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB +suffix autotest +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB -nbands 10 -calculation md -esolver_type tddft +nbands 10 +calculation md +esolver_type tddft #Parameter (Accuracy) -ecutwfc 20 -scf_nmax 50 +ecutwfc 20 +scf_nmax 50 -device gpu -ks_solver cusolver -basis_type lcao -gamma_only 0 -md_nstep 2 +device gpu +ks_solver cusolver +basis_type lcao +gamma_only 0 +md_nstep 3 +estep_per_md 1 -mixing_type broyden -mixing_beta 0.7 -mixing_gg0 0.0 -scf_thr 1.0e-6 +mixing_type broyden +mixing_beta 0.7 +mixing_gg0 0.0 +scf_thr 1.0e-6 -cal_stress 1 -stress_thr 1e-6 -cal_force 1 -force_thr_ev 1.0e-3 +cal_stress 1 +stress_thr 1e-6 +cal_force 1 +force_thr_ev 1.0e-3 -md_type nve -md_dt 0.05 -init_vel 1 -ocp 1 -ocp_set 4*2 1*1 1*0 1*1 3*0 +md_type nve +md_dt 0.05 +init_vel 1 +ocp 1 +ocp_set 4*2 1*1 1*0 1*1 3*0 diff --git a/tests/15_rtTDDFT_GPU/04_NO_CO_ocp_TDDFT_GPU/result.ref b/tests/15_rtTDDFT_GPU/04_NO_CO_ocp_TDDFT_GPU/result.ref index afac7efc1f..34c12e8623 100644 --- a/tests/15_rtTDDFT_GPU/04_NO_CO_ocp_TDDFT_GPU/result.ref +++ b/tests/15_rtTDDFT_GPU/04_NO_CO_ocp_TDDFT_GPU/result.ref @@ -1,5 +1,5 @@ -etotref -603.4337824685499 -etotperatomref -301.7168912343 -totalforceref 12.090612 -totalstressref 27.990852 +etotref -603.4337279119619 +etotperatomref -301.7168639560 +totalforceref 12.106586 +totalstressref 27.960198 totaltimeref 2.71 diff --git a/tests/15_rtTDDFT_GPU/05_NO_cur_TDDFT_GPU/INPUT b/tests/15_rtTDDFT_GPU/05_NO_cur_TDDFT_GPU/INPUT index 6668e7fe6d..b17b7fd015 100644 --- a/tests/15_rtTDDFT_GPU/05_NO_cur_TDDFT_GPU/INPUT +++ b/tests/15_rtTDDFT_GPU/05_NO_cur_TDDFT_GPU/INPUT @@ -1,50 +1,51 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (General) -suffix autotest -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB -nbands 5 -calculation md -esolver_type tddft +suffix autotest +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB +nbands 5 +calculation md +esolver_type tddft #Parameter (Accuracy) -ecutwfc 20 -scf_nmax 50 - -device gpu -ks_solver cusolver -basis_type lcao -gamma_only 0 -md_nstep 3 - -mixing_type broyden -mixing_beta 0.7 -mixing_gg0 0.0 -scf_thr 1.0e-6 - -cal_stress 1 -stress_thr 1e-6 -cal_force 1 -force_thr_ev 1.0e-3 - -md_type nve -md_dt 0.05 -init_vel 1 - -td_vext 1 -td_vext_dire 1 -td_stype 0 -td_ttype 0 -td_tstart 1 -td_tend 2 +ecutwfc 20 +scf_nmax 50 + +device gpu +ks_solver cusolver +basis_type lcao +gamma_only 0 +md_nstep 4 +estep_per_md 1 + +mixing_type broyden +mixing_beta 0.7 +mixing_gg0 0.0 +scf_thr 1.0e-6 + +cal_stress 1 +stress_thr 1e-6 +cal_force 1 +force_thr_ev 1.0e-3 + +md_type nve +md_dt 0.05 +init_vel 1 + +td_vext 1 +td_vext_dire 1 +td_stype 0 +td_ttype 0 +td_tstart 1 +td_tend 2 # Gauss external field -td_gauss_freq 2.44 -td_gauss_phase 0.0 -td_gauss_sigma 0.5 -td_gauss_t0 0 -td_gauss_amp 0.1 +td_gauss_freq 2.44 +td_gauss_phase 0.0 +td_gauss_sigma 0.5 +td_gauss_t0 0 +td_gauss_amp 0.1 # print out information -out_current 1 -out_current_k 1 +out_current 1 +out_current_k 1 diff --git a/tests/15_rtTDDFT_GPU/05_NO_cur_TDDFT_GPU/README b/tests/15_rtTDDFT_GPU/05_NO_cur_TDDFT_GPU/README index 26c2f588bb..a90ee94200 100644 --- a/tests/15_rtTDDFT_GPU/05_NO_cur_TDDFT_GPU/README +++ b/tests/15_rtTDDFT_GPU/05_NO_cur_TDDFT_GPU/README @@ -1 +1 @@ -test TDDFT length-gauge current output for non-periodic system +Test RT-TDDFT length gauge current output for non-periodic system diff --git a/tests/15_rtTDDFT_GPU/05_NO_cur_TDDFT_GPU/current_tot.txt.ref b/tests/15_rtTDDFT_GPU/05_NO_cur_TDDFT_GPU/current_tot.txt.ref new file mode 100644 index 0000000000..de17d65e7b --- /dev/null +++ b/tests/15_rtTDDFT_GPU/05_NO_cur_TDDFT_GPU/current_tot.txt.ref @@ -0,0 +1,4 @@ +1 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2 1.3253329345174151e-07 -1.1309759467952081e-08 -1.8100967211240555e-08 +3 -1.8712729254901428e-07 -1.9255546268328018e-08 -3.0821009248708681e-08 +4 1.6157844599780660e-08 1.2274265606089292e-08 1.9637494050295524e-08 diff --git a/tests/15_rtTDDFT_GPU/05_NO_cur_TDDFT_GPU/refcurrent_total.dat b/tests/15_rtTDDFT_GPU/05_NO_cur_TDDFT_GPU/refcurrent_total.dat deleted file mode 100644 index 4c3b1c5d5e..0000000000 --- a/tests/15_rtTDDFT_GPU/05_NO_cur_TDDFT_GPU/refcurrent_total.dat +++ /dev/null @@ -1,4 +0,0 @@ -0 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1 1.3253329345179453e-07 -1.1309759467848516e-08 -1.8100967211060974e-08 -2 -1.8712729254911609e-07 -1.9255546268139507e-08 -3.0821009248084689e-08 -3 1.6157844599821334e-08 1.2274265606153575e-08 1.9637494050035531e-08 diff --git a/tests/15_rtTDDFT_GPU/06_NO_dir_TDDFT_GPU/INPUT b/tests/15_rtTDDFT_GPU/06_NO_dir_TDDFT_GPU/INPUT index f5443e21c8..5ae85bfe9f 100755 --- a/tests/15_rtTDDFT_GPU/06_NO_dir_TDDFT_GPU/INPUT +++ b/tests/15_rtTDDFT_GPU/06_NO_dir_TDDFT_GPU/INPUT @@ -1,47 +1,48 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (General) -suffix autotest -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB +suffix autotest +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB -nbands 5 -calculation md -esolver_type tddft +nbands 5 +calculation md +esolver_type tddft #Parameter (Accuracy) -ecutwfc 20 -scf_nmax 50 +ecutwfc 20 +scf_nmax 50 -device gpu -ks_solver cusolver -basis_type lcao -gamma_only 0 -md_nstep 2 +device gpu +ks_solver cusolver +basis_type lcao +gamma_only 0 +md_nstep 3 +estep_per_md 1 -mixing_type broyden -mixing_beta 0.7 -mixing_gg0 0.0 -scf_thr 1.0e-6 +mixing_type broyden +mixing_beta 0.7 +mixing_gg0 0.0 +scf_thr 1.0e-6 -cal_stress 1 -stress_thr 1e-6 -cal_force 1 -force_thr_ev 1.0e-3 +cal_stress 1 +stress_thr 1e-6 +cal_force 1 +force_thr_ev 1.0e-3 -md_type nve -md_dt 0.05 -init_vel 1 +md_type nve +md_dt 0.05 +init_vel 1 -td_vext 1 -td_vext_dire 2 -td_stype 0 -td_ttype 0 -td_tstart 1 -td_tend 2 -td_lcut1 0.05 -td_lcut2 0.95 -td_gauss_freq 22.13 -td_gauss_phase 0.0 -td_gauss_sigma 30.0 -td_gauss_t0 0.0 -td_gauss_amp 0.25 +td_vext 1 +td_vext_dire 2 +td_stype 0 +td_ttype 0 +td_tstart 1 +td_tend 2 +td_lcut1 0.05 +td_lcut2 0.95 +td_gauss_freq 22.13 +td_gauss_phase 0.0 +td_gauss_sigma 30.0 +td_gauss_t0 0.0 +td_gauss_amp 0.25 diff --git a/tests/15_rtTDDFT_GPU/06_NO_dir_TDDFT_GPU/result.ref b/tests/15_rtTDDFT_GPU/06_NO_dir_TDDFT_GPU/result.ref index 8cab4cc796..5fbff0177d 100644 --- a/tests/15_rtTDDFT_GPU/06_NO_dir_TDDFT_GPU/result.ref +++ b/tests/15_rtTDDFT_GPU/06_NO_dir_TDDFT_GPU/result.ref @@ -1,4 +1,4 @@ -etotref -30.45454376271162 +etotref -30.45454376271165 etotperatomref -15.2272718814 totalforceref 0.595498 totalstressref 4.286358 diff --git a/tests/15_rtTDDFT_GPU/07_NO_EDM_TDDFT_GPU/INPUT b/tests/15_rtTDDFT_GPU/07_NO_EDM_TDDFT_GPU/INPUT index 153facbc2f..7189489bab 100644 --- a/tests/15_rtTDDFT_GPU/07_NO_EDM_TDDFT_GPU/INPUT +++ b/tests/15_rtTDDFT_GPU/07_NO_EDM_TDDFT_GPU/INPUT @@ -1,36 +1,37 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (General) -suffix autotest -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB +suffix autotest +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB -nbands 5 -calculation md -esolver_type tddft +nbands 5 +calculation md +esolver_type tddft #Parameter (Accuracy) -ecutwfc 20 -scf_nmax 50 +ecutwfc 20 +scf_nmax 50 -device gpu -ks_solver cusolver -basis_type lcao -gamma_only 0 -md_nstep 2 +device gpu +ks_solver cusolver +basis_type lcao +gamma_only 0 +md_nstep 3 +estep_per_md 1 -mixing_type broyden -mixing_beta 0.7 -mixing_gg0 0.0 -scf_thr 1.0e-6 +mixing_type broyden +mixing_beta 0.7 +mixing_gg0 0.0 +scf_thr 1.0e-6 -cal_stress 1 -stress_thr 1e-6 -cal_force 1 -force_thr_ev 1.0e-3 +cal_stress 1 +stress_thr 1e-6 +cal_force 1 +force_thr_ev 1.0e-3 -md_type nve -md_dt 0.05 -init_vel 1 -ocp 1 -ocp_set 1*0.5 1*0.5 3*0 1*0.5 1*0.5 3*0 -td_edm 1 +md_type nve +md_dt 0.05 +init_vel 1 +ocp 1 +ocp_set 1*0.5 1*0.5 3*0 1*0.5 1*0.5 3*0 +td_edm 1 diff --git a/tests/15_rtTDDFT_GPU/07_NO_EDM_TDDFT_GPU/result.ref b/tests/15_rtTDDFT_GPU/07_NO_EDM_TDDFT_GPU/result.ref index dc986d3d6b..e319cfc11e 100644 --- a/tests/15_rtTDDFT_GPU/07_NO_EDM_TDDFT_GPU/result.ref +++ b/tests/15_rtTDDFT_GPU/07_NO_EDM_TDDFT_GPU/result.ref @@ -1,4 +1,4 @@ -etotref -18.06494189760856 +etotref -18.06494189760862 etotperatomref -9.0324709488 totalforceref 41.359252 totalstressref 73.228950 diff --git a/tests/15_rtTDDFT_GPU/09_NO_HEAV_TDDFT_GPU/INPUT b/tests/15_rtTDDFT_GPU/09_NO_HEAV_TDDFT_GPU/INPUT index 3fcd5bb4cb..78663ce638 100644 --- a/tests/15_rtTDDFT_GPU/09_NO_HEAV_TDDFT_GPU/INPUT +++ b/tests/15_rtTDDFT_GPU/09_NO_HEAV_TDDFT_GPU/INPUT @@ -1,44 +1,45 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (General) -suffix autotest -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB +suffix autotest +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB -nbands 5 -calculation md -esolver_type tddft +nbands 5 +calculation md +esolver_type tddft #Parameter (Accuracy) -ecutwfc 20 -scf_nmax 50 +ecutwfc 20 +scf_nmax 50 -device gpu -ks_solver cusolver -basis_type lcao -gamma_only 0 -md_nstep 2 +device gpu +ks_solver cusolver +basis_type lcao +gamma_only 0 +md_nstep 3 +estep_per_md 1 -mixing_type broyden -mixing_beta 0.7 -mixing_gg0 0.0 -scf_thr 1.0e-6 +mixing_type broyden +mixing_beta 0.7 +mixing_gg0 0.0 +scf_thr 1.0e-6 -cal_stress 1 -stress_thr 1e-6 -cal_force 1 -force_thr_ev 1.0e-3 +cal_stress 1 +stress_thr 1e-6 +cal_force 1 +force_thr_ev 1.0e-3 -md_type nve -md_dt 0.05 -init_vel 1 +md_type nve +md_dt 0.05 +init_vel 1 -td_vext 1 -td_vext_dire 1 -td_stype 0 -td_ttype 3 -td_tstart 1 -td_tend 2 -td_lcut1 0.05 -td_lcut2 0.95 -td_heavi_t0 100 -td_heavi_amp 1.0 +td_vext 1 +td_vext_dire 1 +td_stype 0 +td_ttype 3 +td_tstart 1 +td_tend 2 +td_lcut1 0.05 +td_lcut2 0.95 +td_heavi_t0 100 +td_heavi_amp 1.0 diff --git a/tests/15_rtTDDFT_GPU/09_NO_HEAV_TDDFT_GPU/result.ref b/tests/15_rtTDDFT_GPU/09_NO_HEAV_TDDFT_GPU/result.ref index 19989e81b8..16bc961000 100644 --- a/tests/15_rtTDDFT_GPU/09_NO_HEAV_TDDFT_GPU/result.ref +++ b/tests/15_rtTDDFT_GPU/09_NO_HEAV_TDDFT_GPU/result.ref @@ -1,4 +1,4 @@ -etotref -22.97638349080424 +etotref -22.97638349080425 etotperatomref -11.4881917454 totalforceref 0.582042 totalstressref 76.025571 diff --git a/tests/15_rtTDDFT_GPU/10_NO_HHG_TDDFT_GPU/INPUT b/tests/15_rtTDDFT_GPU/10_NO_HHG_TDDFT_GPU/INPUT old mode 100755 new mode 100644 index 0aade88b68..a360a1a92b --- a/tests/15_rtTDDFT_GPU/10_NO_HHG_TDDFT_GPU/INPUT +++ b/tests/15_rtTDDFT_GPU/10_NO_HHG_TDDFT_GPU/INPUT @@ -1,46 +1,47 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (General) -suffix autotest -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB -nbands 5 -calculation md -esolver_type tddft +suffix autotest +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB +nbands 5 +calculation md +esolver_type tddft #Parameter (Accuracy) -ecutwfc 20 -scf_nmax 50 +ecutwfc 20 +scf_nmax 50 -device gpu -ks_solver cusolver -basis_type lcao -gamma_only 0 -md_nstep 2 +device gpu +ks_solver cusolver +basis_type lcao +gamma_only 0 +md_nstep 3 +estep_per_md 1 -mixing_type broyden -mixing_beta 0.7 -mixing_gg0 0.0 -scf_thr 1.0e-6 +mixing_type broyden +mixing_beta 0.7 +mixing_gg0 0.0 +scf_thr 1.0e-6 -cal_stress 1 -stress_thr 1e-6 -cal_force 1 -force_thr_ev 1.0e-3 +cal_stress 1 +stress_thr 1e-6 +cal_force 1 +force_thr_ev 1.0e-3 -md_type nve -md_dt 0.05 -init_vel 1 +md_type nve +md_dt 0.05 +init_vel 1 -td_vext 1 -td_vext_dire 2*1 -td_stype 0 -td_ttype 2*0 -td_tstart 1 -td_tend 2 -td_lcut1 0.05 -td_lcut2 0.95 -td_gauss_freq 1.164656 0.029116 -td_gauss_amp 2.0 5.0 -td_gauss_phase 2*0.0 -td_gauss_t0 2*0 -td_gauss_sigma 2*30 +td_vext 1 +td_vext_dire 2*1 +td_stype 0 +td_ttype 2*0 +td_tstart 1 +td_tend 2 +td_lcut1 0.05 +td_lcut2 0.95 +td_gauss_freq 1.164656 0.029116 +td_gauss_amp 2.0 5.0 +td_gauss_phase 2*0.0 +td_gauss_t0 2*0 +td_gauss_sigma 2*30 diff --git a/tests/15_rtTDDFT_GPU/10_NO_HHG_TDDFT_GPU/KPT b/tests/15_rtTDDFT_GPU/10_NO_HHG_TDDFT_GPU/KPT old mode 100755 new mode 100644 diff --git a/tests/15_rtTDDFT_GPU/10_NO_HHG_TDDFT_GPU/STRU b/tests/15_rtTDDFT_GPU/10_NO_HHG_TDDFT_GPU/STRU old mode 100755 new mode 100644 diff --git a/tests/15_rtTDDFT_GPU/10_NO_HHG_TDDFT_GPU/result.ref b/tests/15_rtTDDFT_GPU/10_NO_HHG_TDDFT_GPU/result.ref index 91dd29c0e7..e47c61dabb 100644 --- a/tests/15_rtTDDFT_GPU/10_NO_HHG_TDDFT_GPU/result.ref +++ b/tests/15_rtTDDFT_GPU/10_NO_HHG_TDDFT_GPU/result.ref @@ -1,4 +1,4 @@ -etotref 20.47683114572230 +etotref 20.47683114572229 etotperatomref 10.2384155729 totalforceref 0.451670 totalstressref 487.779801 diff --git a/tests/15_rtTDDFT_GPU/11_NO_O3_TDDFT_GPU/INPUT b/tests/15_rtTDDFT_GPU/11_NO_O3_TDDFT_GPU/INPUT index 975bd05f6f..e979da9fe4 100644 --- a/tests/15_rtTDDFT_GPU/11_NO_O3_TDDFT_GPU/INPUT +++ b/tests/15_rtTDDFT_GPU/11_NO_O3_TDDFT_GPU/INPUT @@ -1,36 +1,37 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (General) -suffix autotest -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB +suffix autotest +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB -nbands 18 -calculation md -esolver_type tddft +nbands 18 +calculation md +esolver_type tddft #Parameter (Accuracy) -ecutwfc 20 -scf_nmax 30 +ecutwfc 20 +scf_nmax 30 -device gpu -ks_solver cusolver -basis_type lcao -out_chg 1 -gamma_only 0 -md_nstep 2 +device gpu +ks_solver cusolver +basis_type lcao +# out_chg 1 +gamma_only 0 +md_nstep 3 +estep_per_md 1 -mixing_type broyden -mixing_beta 0.7 -mixing_gg0 0.0 -scf_thr 1.0e-6 +mixing_type broyden +mixing_beta 0.7 +mixing_gg0 0.0 +scf_thr 1.0e-6 -cal_stress 1 -stress_thr 1e-6 -cal_force 1 -force_thr_ev 1.0e-3 +cal_stress 1 +stress_thr 1e-6 +cal_force 1 +force_thr_ev 1.0e-3 -md_type nve -md_dt 0.05 -init_vel 1 -ocp 1 -ocp_set 8*2 1*1 1*1 8*0 +md_type nve +md_dt 0.05 +init_vel 1 +ocp 1 +ocp_set 8*2 1*1 1*1 8*0 diff --git a/tests/15_rtTDDFT_GPU/11_NO_O3_TDDFT_GPU/result.ref b/tests/15_rtTDDFT_GPU/11_NO_O3_TDDFT_GPU/result.ref index 777bb60370..bee5bb6a00 100644 --- a/tests/15_rtTDDFT_GPU/11_NO_O3_TDDFT_GPU/result.ref +++ b/tests/15_rtTDDFT_GPU/11_NO_O3_TDDFT_GPU/result.ref @@ -1,4 +1,4 @@ -etotref -1336.999498209980 +etotref -1336.999498209979 etotperatomref -445.6664994033 totalforceref 11.627501 totalstressref 64.927558 diff --git a/tests/15_rtTDDFT_GPU/12_NO_re_TDDFT_GPU/INPUT b/tests/15_rtTDDFT_GPU/12_NO_re_TDDFT_GPU/INPUT index 464f3d7a06..ed25241b28 100644 --- a/tests/15_rtTDDFT_GPU/12_NO_re_TDDFT_GPU/INPUT +++ b/tests/15_rtTDDFT_GPU/12_NO_re_TDDFT_GPU/INPUT @@ -1,39 +1,40 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (General) -suffix autotest -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB +suffix autotest +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB -nbands 5 -calculation md -esolver_type tddft +nbands 5 +calculation md +esolver_type tddft #Parameter (Accuracy) -ecutwfc 100 -scf_nmax 50 +ecutwfc 100 +scf_nmax 50 -device gpu -ks_solver cusolver -basis_type lcao -gamma_only 0 -md_nstep 2 +device gpu +ks_solver cusolver +basis_type lcao +gamma_only 0 +md_nstep 2 +estep_per_md 1 -mixing_type broyden -mixing_beta 0.7 -mixing_gg0 0.0 -scf_thr 1.0e-6 +mixing_type broyden +mixing_beta 0.7 +mixing_gg0 0.0 +scf_thr 1.0e-6 -read_file_dir restart -init_wfc file +read_file_dir restart +init_wfc file -cal_stress 1 -stress_thr 1e-6 -cal_force 1 -force_thr_ev 1e-3 +cal_stress 1 +stress_thr 1e-6 +cal_force 1 +force_thr_ev 1e-3 -md_type nve -md_dt 0.05 -md_restart 1 -init_vel 1 -ocp 1 -ocp_set 1*1 1*1 3*0 +md_type nve +md_dt 0.05 +md_restart 1 +init_vel 1 +ocp 1 +ocp_set 1*1 1*1 3*0 diff --git a/tests/15_rtTDDFT_GPU/12_NO_re_TDDFT_GPU/restart/Restart_md.dat b/tests/15_rtTDDFT_GPU/12_NO_re_TDDFT_GPU/restart/Restart_md.txt similarity index 100% rename from tests/15_rtTDDFT_GPU/12_NO_re_TDDFT_GPU/restart/Restart_md.dat rename to tests/15_rtTDDFT_GPU/12_NO_re_TDDFT_GPU/restart/Restart_md.txt diff --git a/tests/15_rtTDDFT_GPU/12_NO_re_TDDFT_GPU/restart/WFC/wfs1k1g6_nao.txt b/tests/15_rtTDDFT_GPU/12_NO_re_TDDFT_GPU/restart/WFC/wfk1g6_nao.txt similarity index 100% rename from tests/15_rtTDDFT_GPU/12_NO_re_TDDFT_GPU/restart/WFC/wfs1k1g6_nao.txt rename to tests/15_rtTDDFT_GPU/12_NO_re_TDDFT_GPU/restart/WFC/wfk1g6_nao.txt diff --git a/tests/15_rtTDDFT_GPU/14_NO_TRAP_TDDFT_GPU/INPUT b/tests/15_rtTDDFT_GPU/14_NO_TRAP_TDDFT_GPU/INPUT old mode 100755 new mode 100644 index bfce981848..fc5787696b --- a/tests/15_rtTDDFT_GPU/14_NO_TRAP_TDDFT_GPU/INPUT +++ b/tests/15_rtTDDFT_GPU/14_NO_TRAP_TDDFT_GPU/INPUT @@ -1,47 +1,48 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (General) -suffix autotest -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB -nbands 5 -calculation md -esolver_type tddft +suffix autotest +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB +nbands 5 +calculation md +esolver_type tddft #Parameter (Accuracy) -ecutwfc 20 -scf_nmax 50 +ecutwfc 20 +scf_nmax 50 -device gpu -ks_solver cusolver -basis_type lcao -gamma_only 0 -md_nstep 2 +device gpu +ks_solver cusolver +basis_type lcao +gamma_only 0 +md_nstep 3 +estep_per_md 1 -mixing_type broyden -mixing_beta 0.7 -mixing_gg0 0.0 -scf_thr 1.0e-6 +mixing_type broyden +mixing_beta 0.7 +mixing_gg0 0.0 +scf_thr 1.0e-6 -cal_stress 1 -stress_thr 1e-6 -cal_force 1 -force_thr_ev 1.0e-3 +cal_stress 1 +stress_thr 1e-6 +cal_force 1 +force_thr_ev 1.0e-3 -md_type nve -md_dt 0.05 -init_vel 1 +md_type nve +md_dt 0.05 +init_vel 1 -td_vext 1 -td_vext_dire 1 -td_stype 0 -td_ttype 1 -td_tstart 1 -td_tend 2 -td_lcut1 0.05 -td_lcut2 0.95 -td_trape_freq 1.60 -td_trape_phase 0.0 -td_trape_t1 1875 -td_trape_t2 5625 -td_trape_t3 7500 -td_trape_amp 2.74 +td_vext 1 +td_vext_dire 1 +td_stype 0 +td_ttype 1 +td_tstart 1 +td_tend 2 +td_lcut1 0.05 +td_lcut2 0.95 +td_trape_freq 1.60 +td_trape_phase 0.0 +td_trape_t1 1875 +td_trape_t2 5625 +td_trape_t3 7500 +td_trape_amp 2.74 diff --git a/tests/15_rtTDDFT_GPU/14_NO_TRAP_TDDFT_GPU/KPT b/tests/15_rtTDDFT_GPU/14_NO_TRAP_TDDFT_GPU/KPT old mode 100755 new mode 100644 diff --git a/tests/15_rtTDDFT_GPU/14_NO_TRAP_TDDFT_GPU/STRU b/tests/15_rtTDDFT_GPU/14_NO_TRAP_TDDFT_GPU/STRU old mode 100755 new mode 100644 diff --git a/tests/15_rtTDDFT_GPU/14_NO_TRAP_TDDFT_GPU/result.ref b/tests/15_rtTDDFT_GPU/14_NO_TRAP_TDDFT_GPU/result.ref index 86ddde6b25..c46aedc830 100644 --- a/tests/15_rtTDDFT_GPU/14_NO_TRAP_TDDFT_GPU/result.ref +++ b/tests/15_rtTDDFT_GPU/14_NO_TRAP_TDDFT_GPU/result.ref @@ -1,4 +1,4 @@ -etotref -30.89964815765920 +etotref -30.89964815765915 etotperatomref -15.4498240788 totalforceref 0.596612 totalstressref 1.073053 diff --git a/tests/15_rtTDDFT_GPU/15_NO_TRI_TDDFT_GPU/INPUT b/tests/15_rtTDDFT_GPU/15_NO_TRI_TDDFT_GPU/INPUT old mode 100755 new mode 100644 index 3b6fdd0aea..3a42797290 --- a/tests/15_rtTDDFT_GPU/15_NO_TRI_TDDFT_GPU/INPUT +++ b/tests/15_rtTDDFT_GPU/15_NO_TRI_TDDFT_GPU/INPUT @@ -1,46 +1,47 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (General) -suffix autotest -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB -nbands 5 -calculation md -esolver_type tddft +suffix autotest +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB +nbands 5 +calculation md +esolver_type tddft #Parameter (Accuracy) -ecutwfc 20 -scf_nmax 50 +ecutwfc 20 +scf_nmax 50 -device gpu -ks_solver cusolver -basis_type lcao -gamma_only 0 -md_nstep 2 +device gpu +ks_solver cusolver +basis_type lcao +gamma_only 0 +md_nstep 3 +estep_per_md 1 -mixing_type broyden -mixing_beta 0.7 -mixing_gg0 0.0 -scf_thr 1.0e-6 +mixing_type broyden +mixing_beta 0.7 +mixing_gg0 0.0 +scf_thr 1.0e-6 -cal_stress 1 -stress_thr 1e-6 -cal_force 1 -force_thr_ev 1.0e-3 +cal_stress 1 +stress_thr 1e-6 +cal_force 1 +force_thr_ev 1.0e-3 -md_type nve -md_dt 0.05 -init_vel 1 +md_type nve +md_dt 0.05 +init_vel 1 -td_vext 1 -td_vext_dire 1 -td_stype 0 -td_ttype 2 -td_tstart 1 -td_tend 2 -td_lcut1 0.05 -td_lcut2 0.95 -td_trigo_freq1 1.164656 -td_trigo_freq2 0.029116 -td_trigo_phase1 0.0 -td_trigo_phase2 0.0 -td_trigo_amp 1.50 +td_vext 1 +td_vext_dire 1 +td_stype 0 +td_ttype 2 +td_tstart 1 +td_tend 2 +td_lcut1 0.05 +td_lcut2 0.95 +td_trigo_freq1 1.164656 +td_trigo_freq2 0.029116 +td_trigo_phase1 0.0 +td_trigo_phase2 0.0 +td_trigo_amp 1.50 diff --git a/tests/15_rtTDDFT_GPU/15_NO_TRI_TDDFT_GPU/KPT b/tests/15_rtTDDFT_GPU/15_NO_TRI_TDDFT_GPU/KPT old mode 100755 new mode 100644 diff --git a/tests/15_rtTDDFT_GPU/15_NO_TRI_TDDFT_GPU/STRU b/tests/15_rtTDDFT_GPU/15_NO_TRI_TDDFT_GPU/STRU old mode 100755 new mode 100644 diff --git a/tests/15_rtTDDFT_GPU/15_NO_TRI_TDDFT_GPU/result.ref b/tests/15_rtTDDFT_GPU/15_NO_TRI_TDDFT_GPU/result.ref index 39d05e0518..0db2ec45d1 100644 --- a/tests/15_rtTDDFT_GPU/15_NO_TRI_TDDFT_GPU/result.ref +++ b/tests/15_rtTDDFT_GPU/15_NO_TRI_TDDFT_GPU/result.ref @@ -1,4 +1,4 @@ -etotref -30.90911715730047 +etotref -30.90911715730050 etotperatomref -15.4545585787 totalforceref 0.596616 totalstressref 1.147852 diff --git a/tests/15_rtTDDFT_GPU/16_NO_vel_TDDFT_GPU/INPUT b/tests/15_rtTDDFT_GPU/16_NO_vel_TDDFT_GPU/INPUT index bed4719481..3b7ea795a3 100644 --- a/tests/15_rtTDDFT_GPU/16_NO_vel_TDDFT_GPU/INPUT +++ b/tests/15_rtTDDFT_GPU/16_NO_vel_TDDFT_GPU/INPUT @@ -1,46 +1,47 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (General) -suffix autotest -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB -nbands 5 -calculation md -esolver_type tddft +suffix autotest +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB +nbands 5 +calculation md +esolver_type tddft #Parameter (Accuracy) -ecutwfc 20 -scf_nmax 50 +ecutwfc 20 +scf_nmax 50 -device gpu -ks_solver cusolver -basis_type lcao -gamma_only 0 -md_nstep 3 +device gpu +ks_solver cusolver +basis_type lcao +gamma_only 0 +md_nstep 4 +estep_per_md 1 -mixing_type broyden -mixing_beta 0.7 -mixing_gg0 0.0 -scf_thr 1.0e-6 +mixing_type broyden +mixing_beta 0.7 +mixing_gg0 0.0 +scf_thr 1.0e-6 -cal_stress 1 -stress_thr 1e-6 -cal_force 1 -force_thr_ev 1.0e-3 +cal_stress 1 +stress_thr 1e-6 +cal_force 1 +force_thr_ev 1.0e-3 -md_type nve -md_dt 0.05 -init_vel 1 +md_type nve +md_dt 0.05 +init_vel 1 -td_vext 1 -td_vext_dire 1 -td_stype 1 -td_ttype 0 -td_tstart 1 -td_tend 2 -td_gauss_freq 2.44 -td_gauss_phase 0.0 -td_gauss_sigma 0.5 -td_gauss_t0 0 -td_gauss_amp 0.1 +td_vext 1 +td_vext_dire 1 +td_stype 1 +td_ttype 0 +td_tstart 1 +td_tend 2 +td_gauss_freq 2.44 +td_gauss_phase 0.0 +td_gauss_sigma 0.5 +td_gauss_t0 0 +td_gauss_amp 0.1 -out_current 1 +out_current 1 diff --git a/tests/15_rtTDDFT_GPU/16_NO_vel_TDDFT_GPU/README b/tests/15_rtTDDFT_GPU/16_NO_vel_TDDFT_GPU/README index 127af73539..18c2e75edd 100644 --- a/tests/15_rtTDDFT_GPU/16_NO_vel_TDDFT_GPU/README +++ b/tests/15_rtTDDFT_GPU/16_NO_vel_TDDFT_GPU/README @@ -1 +1 @@ -test TDDFT velocity-gauge output for non-periodic system +Test RT-TDDFT velocity gauge output for non-periodic system diff --git a/tests/15_rtTDDFT_GPU/16_NO_vel_TDDFT_GPU/current_tot.txt.ref b/tests/15_rtTDDFT_GPU/16_NO_vel_TDDFT_GPU/current_tot.txt.ref new file mode 100644 index 0000000000..697c73a444 --- /dev/null +++ b/tests/15_rtTDDFT_GPU/16_NO_vel_TDDFT_GPU/current_tot.txt.ref @@ -0,0 +1,4 @@ +1 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2 2.7669187278007260e-07 -1.3892875565558252e-09 -2.2297436846799228e-09 +3 2.2955881029817558e-07 3.4521250836946458e-09 5.5110950473557321e-09 +4 1.3457006814286624e-07 1.5269022218929118e-08 2.4393767948848288e-08 diff --git a/tests/15_rtTDDFT_GPU/16_NO_vel_TDDFT_GPU/refcurrent_total.dat b/tests/15_rtTDDFT_GPU/16_NO_vel_TDDFT_GPU/refcurrent_total.dat deleted file mode 100644 index 0173583ef3..0000000000 --- a/tests/15_rtTDDFT_GPU/16_NO_vel_TDDFT_GPU/refcurrent_total.dat +++ /dev/null @@ -1,4 +0,0 @@ -0 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1 2.7669187278010950e-07 -1.3892875566265775e-09 -2.2297436847453706e-09 -2 2.2955881029815080e-07 3.4521250838755370e-09 5.5110950477892839e-09 -3 1.3457006814283194e-07 1.5269022219384739e-08 2.4393767949504196e-08 diff --git a/tests/15_rtTDDFT_GPU/17_NO_vel_TDDFT_GPU/INPUT b/tests/15_rtTDDFT_GPU/17_NO_vel_TDDFT_GPU/INPUT index 5683e3b789..1f8ff7e9ee 100644 --- a/tests/15_rtTDDFT_GPU/17_NO_vel_TDDFT_GPU/INPUT +++ b/tests/15_rtTDDFT_GPU/17_NO_vel_TDDFT_GPU/INPUT @@ -1,43 +1,44 @@ -INPUT_PARAMETERS - +INPUT_PARAMETERS + # general information -calculation md -esolver_type tddft -md_type nve -md_nstep 2 -md_dt 0.05 -md_tfirst 0 - +calculation md +esolver_type tddft +md_type nve +md_nstep 3 +estep_per_md 1 +md_dt 0.05 +md_tfirst 0 + # rt-TDDFT parameters -td_vext 1 # add time-dependent external potential -td_vext_dire 3 # direction along z -td_stype 1 # 1: velocity gauge -td_ttype 0 # Gaussian type potential -td_tstart 1 # the step electric field starts -td_tend 2 # the step electric field ends -td_gauss_freq 0.32 -td_gauss_phase 0.0 -td_gauss_sigma 0.5 -td_gauss_t0 1 -td_gauss_amp 0.01 - +td_vext 1 # add time-dependent external potential +td_vext_dire 3 # direction along z +td_stype 1 # 1: velocity gauge +td_ttype 0 # Gaussian type potential +td_tstart 1 # the step electric field starts +td_tend 2 # the step electric field ends +td_gauss_freq 0.32 +td_gauss_phase 0.0 +td_gauss_sigma 0.5 +td_gauss_t0 1 +td_gauss_amp 0.01 + # print out current information -out_current 1 - -suffix autotest -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB -basis_type lcao -gamma_only 0 - +out_current 1 + +suffix autotest +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB +basis_type lcao +gamma_only 0 + # electronic structure calculations -ecutwfc 20 -scf_nmax 50 -scf_thr 1e-6 -device gpu -ks_solver cusolver - +ecutwfc 20 +scf_nmax 50 +scf_thr 1e-6 +device gpu +ks_solver cusolver + # charge mixing -mixing_type broyden -mixing_beta 0.7 -mixing_gg0 0.0 +mixing_type broyden +mixing_beta 0.7 +mixing_gg0 0.0 diff --git a/tests/15_rtTDDFT_GPU/17_NO_vel_TDDFT_GPU/README b/tests/15_rtTDDFT_GPU/17_NO_vel_TDDFT_GPU/README index cf7f610eb0..3d074619ac 100644 --- a/tests/15_rtTDDFT_GPU/17_NO_vel_TDDFT_GPU/README +++ b/tests/15_rtTDDFT_GPU/17_NO_vel_TDDFT_GPU/README @@ -1 +1 @@ -test TDDFT velocity gauge output for periodic system +Test RT-TDDFT velocity gauge output for periodic system diff --git a/tests/15_rtTDDFT_GPU/17_NO_vel_TDDFT_GPU/current_tot.txt.ref b/tests/15_rtTDDFT_GPU/17_NO_vel_TDDFT_GPU/current_tot.txt.ref new file mode 100644 index 0000000000..35175e6f9f --- /dev/null +++ b/tests/15_rtTDDFT_GPU/17_NO_vel_TDDFT_GPU/current_tot.txt.ref @@ -0,0 +1,3 @@ +1 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +2 -1.4281057782732242e-18 5.1480765086224919e-18 5.1985933203093457e-06 +3 -3.1989018653041680e-18 1.4638762354532585e-17 1.3886066143094195e-05 diff --git a/tests/15_rtTDDFT_GPU/17_NO_vel_TDDFT_GPU/refcurrent_total.dat b/tests/15_rtTDDFT_GPU/17_NO_vel_TDDFT_GPU/refcurrent_total.dat deleted file mode 100644 index 8802e3f5cd..0000000000 --- a/tests/15_rtTDDFT_GPU/17_NO_vel_TDDFT_GPU/refcurrent_total.dat +++ /dev/null @@ -1,3 +0,0 @@ -0 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1 3.9383095821745186e-19 -7.1789081877293453e-18 5.1985933203197939e-06 -2 -3.7148491227321649e-18 -1.9227633196995937e-17 1.3886066143115769e-05 diff --git a/tests/15_rtTDDFT_GPU/17_NO_vel_TDDFT_GPU/result.ref b/tests/15_rtTDDFT_GPU/17_NO_vel_TDDFT_GPU/result.ref index cbb6ccf527..2ab84c92e8 100644 --- a/tests/15_rtTDDFT_GPU/17_NO_vel_TDDFT_GPU/result.ref +++ b/tests/15_rtTDDFT_GPU/17_NO_vel_TDDFT_GPU/result.ref @@ -1,4 +1,4 @@ -etotref -194.7715239600904 +etotref -194.7715239600903 etotperatomref -97.3857619800 CompareCurrent_pass 0 totaltimeref 6.74 diff --git a/tests/15_rtTDDFT_GPU/18_NO_hyb_TDDFT_GPU/INPUT b/tests/15_rtTDDFT_GPU/18_NO_hyb_TDDFT_GPU/INPUT new file mode 100644 index 0000000000..b9bbc4572f --- /dev/null +++ b/tests/15_rtTDDFT_GPU/18_NO_hyb_TDDFT_GPU/INPUT @@ -0,0 +1,41 @@ +INPUT_PARAMETERS + +# general information +calculation md +esolver_type tddft +md_type nve +md_nstep 1 +estep_per_md 10 +td_dt 0.005 +md_tfirst 0 + +# rt-TDDFT parameters +td_vext 1 # add time-dependent external potential +td_vext_dire 3 # direction along z +td_stype 2 # 2: hybrid gauge +td_ttype 3 # Heaviside type potential +td_tstart 1 # the step electric field starts +td_tend 10 # the step electric field ends +td_heavi_t0 3 +td_heavi_amp 0.05 + +# print out current information +out_current 1 + +suffix autotest +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB +basis_type lcao +gamma_only 0 + +# electronic structure calculations +ecutwfc 20 +scf_nmax 50 +scf_thr 1e-6 +device gpu +ks_solver cusolver + +# charge mixing +mixing_type broyden +mixing_beta 0.7 +mixing_gg0 0.0 diff --git a/tests/15_rtTDDFT_GPU/18_NO_hyb_TDDFT_GPU/KPT b/tests/15_rtTDDFT_GPU/18_NO_hyb_TDDFT_GPU/KPT new file mode 100644 index 0000000000..e769af7638 --- /dev/null +++ b/tests/15_rtTDDFT_GPU/18_NO_hyb_TDDFT_GPU/KPT @@ -0,0 +1,4 @@ +K_POINTS +0 +Gamma +2 1 1 0 0 0 diff --git a/tests/15_rtTDDFT_GPU/18_NO_hyb_TDDFT_GPU/README b/tests/15_rtTDDFT_GPU/18_NO_hyb_TDDFT_GPU/README new file mode 100644 index 0000000000..a47d3411f7 --- /dev/null +++ b/tests/15_rtTDDFT_GPU/18_NO_hyb_TDDFT_GPU/README @@ -0,0 +1 @@ +Test RT-TDDFT hybrid gauge output and parameter td_dt for periodic system diff --git a/tests/15_rtTDDFT_GPU/18_NO_hyb_TDDFT_GPU/STRU b/tests/15_rtTDDFT_GPU/18_NO_hyb_TDDFT_GPU/STRU new file mode 100644 index 0000000000..822d2c7cc6 --- /dev/null +++ b/tests/15_rtTDDFT_GPU/18_NO_hyb_TDDFT_GPU/STRU @@ -0,0 +1,22 @@ +ATOMIC_SPECIES +Si 28.085 Si_ONCV_PBE-1.0.upf + +NUMERICAL_ORBITAL +Si_gga_6au_100Ry_2s2p1d.orb + +LATTICE_CONSTANT +10.2 // add lattice constant + +LATTICE_VECTORS +0.0 0.5 0.5 +0.5 0.0 0.5 +0.5 0.5 0.0 + +ATOMIC_POSITIONS +Cartesian //Cartesian or Direct coordinate. + +Si // Element type +0.0 // magnetism +2 // number of atoms +0.00 0.00 0.00 0 0 0 +0.25 0.25 0.25 1 1 1 diff --git a/tests/15_rtTDDFT_GPU/18_NO_hyb_TDDFT_GPU/current_tot.txt.ref b/tests/15_rtTDDFT_GPU/18_NO_hyb_TDDFT_GPU/current_tot.txt.ref new file mode 100644 index 0000000000..e19d79a92b --- /dev/null +++ b/tests/15_rtTDDFT_GPU/18_NO_hyb_TDDFT_GPU/current_tot.txt.ref @@ -0,0 +1,11 @@ +1 -1.2080528880846261e-19 1.2080528880846066e-19 1.2080528880845773e-19 +2 9.6988649203065955e-09 -9.6988647723290744e-09 2.4283263685858898e-06 +3 2.6772041590862983e-08 -2.6772038966231164e-08 7.2673271979666816e-06 +4 2.7319060127512691e-08 -2.7319057936239790e-08 9.6256951598233973e-06 +5 9.5656716023055945e-09 -9.5656714606956783e-09 9.4882668471607465e-06 +6 -1.5805949584040751e-08 1.5805949767647706e-08 9.2880215292310497e-06 +7 -4.7582174004461010e-08 4.7582174205200823e-08 9.0311994708317000e-06 +8 -8.4545887860098823e-08 8.4545888087037147e-08 8.7249297042081756e-06 +9 -1.2566554788492410e-07 1.2566554814454782e-07 8.3765586452439330e-06 +10 -1.7019855732619671e-07 1.7019855762999082e-07 7.9931205849008677e-06 +11 -2.1769144339022118e-07 2.1769144375450180e-07 7.5810111633604005e-06 diff --git a/tests/15_rtTDDFT_GPU/18_NO_hyb_TDDFT_GPU/result.ref b/tests/15_rtTDDFT_GPU/18_NO_hyb_TDDFT_GPU/result.ref new file mode 100644 index 0000000000..6bc6181add --- /dev/null +++ b/tests/15_rtTDDFT_GPU/18_NO_hyb_TDDFT_GPU/result.ref @@ -0,0 +1,4 @@ +etotref -202.3030324186810 +etotperatomref -101.1515162093 +CompareCurrent_pass 0 +totaltimeref 6.74 diff --git a/tests/15_rtTDDFT_GPU/CASES_GPU.txt b/tests/15_rtTDDFT_GPU/CASES_GPU.txt index c930799511..53bce2d505 100644 --- a/tests/15_rtTDDFT_GPU/CASES_GPU.txt +++ b/tests/15_rtTDDFT_GPU/CASES_GPU.txt @@ -1,5 +1,5 @@ 01_NO_KP_ocp_TDDFT_GPU -02_NO_CH_TDDFT_GPU +02_NO_CH_OW_TDDFT_GPU 03_NO_CO_TDDFT_GPU 04_NO_CO_ocp_TDDFT_GPU 05_NO_cur_TDDFT_GPU @@ -13,3 +13,4 @@ 15_NO_TRI_TDDFT_GPU 16_NO_vel_TDDFT_GPU 17_NO_vel_TDDFT_GPU +18_NO_hyb_TDDFT_GPU diff --git a/tests/16_SDFT_GPU/001_PW_KG_100_GPU/INPUT b/tests/16_SDFT_GPU/001_PW_KG_100_GPU/INPUT new file mode 100644 index 0000000000..ddee90b1ae --- /dev/null +++ b/tests/16_SDFT_GPU/001_PW_KG_100_GPU/INPUT @@ -0,0 +1,37 @@ +INPUT_PARAMETERS +#Parameters (1.General) +suffix autotest +calculation scf +esolver_type ksdft + +nbands 100 +pseudo_dir ../../PP_ORB +symmetry 1 +kpar 2 +device gpu + +#Parameters (2.Iteration) +ecutwfc 20 +scf_thr 1e-6 +scf_nmax 50 + + +#Parameters (3.Basis) +basis_type pw + +#Parameters (4.Smearing) +smearing_method fd +smearing_sigma 0.6 + +#Parameters (5.Mixing) +mixing_type broyden +mixing_beta 0.4 +mixing_gg0 0.0 + +cal_cond 1 +cond_fwhm 8 +cond_wcut 10 +cond_dw 1 +cond_dt 0.237464 +cond_dtbatch 1 +cond_nonlocal 1 diff --git a/tests/16_SDFT_GPU/186_PW_KG_100_GPU/KPT b/tests/16_SDFT_GPU/001_PW_KG_100_GPU/KPT similarity index 100% rename from tests/16_SDFT_GPU/186_PW_KG_100_GPU/KPT rename to tests/16_SDFT_GPU/001_PW_KG_100_GPU/KPT diff --git a/tests/16_SDFT_GPU/186_PW_KG_100_GPU/README b/tests/16_SDFT_GPU/001_PW_KG_100_GPU/README similarity index 100% rename from tests/16_SDFT_GPU/186_PW_KG_100_GPU/README rename to tests/16_SDFT_GPU/001_PW_KG_100_GPU/README diff --git a/tests/16_SDFT_GPU/186_PW_KG_100_GPU/STRU b/tests/16_SDFT_GPU/001_PW_KG_100_GPU/STRU similarity index 100% rename from tests/16_SDFT_GPU/186_PW_KG_100_GPU/STRU rename to tests/16_SDFT_GPU/001_PW_KG_100_GPU/STRU diff --git a/tests/16_SDFT_GPU/186_PW_KG_100_GPU/refOnsager.txt b/tests/16_SDFT_GPU/001_PW_KG_100_GPU/refOnsager.txt similarity index 100% rename from tests/16_SDFT_GPU/186_PW_KG_100_GPU/refOnsager.txt rename to tests/16_SDFT_GPU/001_PW_KG_100_GPU/refOnsager.txt diff --git a/tests/16_SDFT_GPU/186_PW_KG_100_GPU/result.ref b/tests/16_SDFT_GPU/001_PW_KG_100_GPU/result.ref similarity index 100% rename from tests/16_SDFT_GPU/186_PW_KG_100_GPU/result.ref rename to tests/16_SDFT_GPU/001_PW_KG_100_GPU/result.ref diff --git a/tests/16_SDFT_GPU/002_PW_SKG_MALL_GPU/INPUT b/tests/16_SDFT_GPU/002_PW_SKG_MALL_GPU/INPUT new file mode 100644 index 0000000000..2ee0dcdc6e --- /dev/null +++ b/tests/16_SDFT_GPU/002_PW_SKG_MALL_GPU/INPUT @@ -0,0 +1,43 @@ +INPUT_PARAMETERS +#Parameters (1.General) +suffix autotest +calculation scf +esolver_type sdft +method_sto 1 + +nbands 5 +nbands_sto all +nche_sto 120 +emax_sto 0 +emin_sto 0 +seed_sto 20000 +pseudo_dir ../../PP_ORB +symmetry 1 +kpar 1 +bndpar 2 +device gpu + +#Parameters (2.Iteration) +ecutwfc 20 +scf_thr 1e-6 +scf_nmax 20 + + +#Parameters (3.Basis) +basis_type pw + +#Parameters (4.Smearing) +smearing_method fd +smearing_sigma 0.6 + +#Parameters (5.Mixing) +mixing_type broyden +mixing_beta 0.4 +mixing_gg0 0.0 + +cal_cond 1 +cond_fwhm 16 +cond_wcut 10 +cond_dw 1 +cond_dt 0.237464 +cond_nonlocal 1 diff --git a/tests/16_SDFT_GPU/187_PW_SDFT_MALL_BPCG_GPU/KPT b/tests/16_SDFT_GPU/002_PW_SKG_MALL_GPU/KPT similarity index 100% rename from tests/16_SDFT_GPU/187_PW_SDFT_MALL_BPCG_GPU/KPT rename to tests/16_SDFT_GPU/002_PW_SKG_MALL_GPU/KPT diff --git a/tests/16_SDFT_GPU/186_PW_SKG_MALL_GPU/README b/tests/16_SDFT_GPU/002_PW_SKG_MALL_GPU/README similarity index 100% rename from tests/16_SDFT_GPU/186_PW_SKG_MALL_GPU/README rename to tests/16_SDFT_GPU/002_PW_SKG_MALL_GPU/README diff --git a/tests/16_SDFT_GPU/186_PW_SKG_MALL_GPU/STRU b/tests/16_SDFT_GPU/002_PW_SKG_MALL_GPU/STRU similarity index 100% rename from tests/16_SDFT_GPU/186_PW_SKG_MALL_GPU/STRU rename to tests/16_SDFT_GPU/002_PW_SKG_MALL_GPU/STRU diff --git a/tests/16_SDFT_GPU/186_PW_SKG_MALL_GPU/refOnsager.txt b/tests/16_SDFT_GPU/002_PW_SKG_MALL_GPU/refOnsager.txt similarity index 100% rename from tests/16_SDFT_GPU/186_PW_SKG_MALL_GPU/refOnsager.txt rename to tests/16_SDFT_GPU/002_PW_SKG_MALL_GPU/refOnsager.txt diff --git a/tests/16_SDFT_GPU/186_PW_SKG_MALL_GPU/result.ref b/tests/16_SDFT_GPU/002_PW_SKG_MALL_GPU/result.ref similarity index 100% rename from tests/16_SDFT_GPU/186_PW_SKG_MALL_GPU/result.ref rename to tests/16_SDFT_GPU/002_PW_SKG_MALL_GPU/result.ref diff --git a/tests/16_SDFT_GPU/003_PW_MD_SDFT_ALL_GPU/INPUT b/tests/16_SDFT_GPU/003_PW_MD_SDFT_ALL_GPU/INPUT new file mode 100644 index 0000000000..704aee0b97 --- /dev/null +++ b/tests/16_SDFT_GPU/003_PW_MD_SDFT_ALL_GPU/INPUT @@ -0,0 +1,43 @@ +INPUT_PARAMETERS +#Parameters (1.General) +suffix autotest +calculation md +esolver_type sdft +method_sto 2 +device gpu + +symmetry 0 +pseudo_dir ../../PP_ORB + +nbands 0 +nbands_sto all + +nche_sto 90 +seed_sto 20000 +kpar 1 +bndpar 2 +cal_force 1 +cal_stress 1 + +#Parameters (2.Iteration) +ecutwfc 30 +scf_thr 1e-4 +scf_nmax 20 + + +#Parameters (3.Basis) +basis_type pw + +#Parameters (4.Smearing) +smearing_method fd +smearing_sigma 0.6 + +#Parameters (5.Mixing) +mixing_type broyden +mixing_beta 0.4 + +#MD +md_tfirst 10 +md_tfreq 0.1 +md_nstep 3 +init_vel 1 diff --git a/tests/16_SDFT_GPU/187_PW_SDFT_MALL_GPU/KPT b/tests/16_SDFT_GPU/003_PW_MD_SDFT_ALL_GPU/KPT similarity index 100% rename from tests/16_SDFT_GPU/187_PW_SDFT_MALL_GPU/KPT rename to tests/16_SDFT_GPU/003_PW_MD_SDFT_ALL_GPU/KPT diff --git a/tests/16_SDFT_GPU/187_PW_MD_SDFT_ALL_GPU/README b/tests/16_SDFT_GPU/003_PW_MD_SDFT_ALL_GPU/README similarity index 100% rename from tests/16_SDFT_GPU/187_PW_MD_SDFT_ALL_GPU/README rename to tests/16_SDFT_GPU/003_PW_MD_SDFT_ALL_GPU/README diff --git a/tests/16_SDFT_GPU/187_PW_MD_SDFT_ALL_GPU/STRU b/tests/16_SDFT_GPU/003_PW_MD_SDFT_ALL_GPU/STRU similarity index 100% rename from tests/16_SDFT_GPU/187_PW_MD_SDFT_ALL_GPU/STRU rename to tests/16_SDFT_GPU/003_PW_MD_SDFT_ALL_GPU/STRU diff --git a/tests/16_SDFT_GPU/187_PW_MD_SDFT_ALL_GPU/result.ref b/tests/16_SDFT_GPU/003_PW_MD_SDFT_ALL_GPU/result.ref similarity index 100% rename from tests/16_SDFT_GPU/187_PW_MD_SDFT_ALL_GPU/result.ref rename to tests/16_SDFT_GPU/003_PW_MD_SDFT_ALL_GPU/result.ref diff --git a/tests/16_SDFT_GPU/003_PW_MD_SDFT_ALL_GPU/threshold b/tests/16_SDFT_GPU/003_PW_MD_SDFT_ALL_GPU/threshold new file mode 100644 index 0000000000..521e97582a --- /dev/null +++ b/tests/16_SDFT_GPU/003_PW_MD_SDFT_ALL_GPU/threshold @@ -0,0 +1 @@ +threshold 1e-5 \ No newline at end of file diff --git a/tests/16_SDFT_GPU/004_PW_SDFT_ALL_GPU/INPUT b/tests/16_SDFT_GPU/004_PW_SDFT_ALL_GPU/INPUT new file mode 100644 index 0000000000..2b46e814fb --- /dev/null +++ b/tests/16_SDFT_GPU/004_PW_SDFT_ALL_GPU/INPUT @@ -0,0 +1,38 @@ +INPUT_PARAMETERS +#Parameters (1.General) +suffix autotest +calculation scf +esolver_type sdft +method_sto 1 + +symmetry 0 +pseudo_dir ../../PP_ORB +device gpu + +kpar 2 +bndpar 1 + +nbands 0 +nbands_sto all + +nche_sto 120 +seed_sto 20000 +cal_force 1 +cal_stress 1 + +#Parameters (2.Iteration) +ecutwfc 20 +scf_thr 1e-6 +scf_nmax 30 + + +#Parameters (3.Basis) +basis_type pw + +#Parameters (4.Smearing) +smearing_method fd +smearing_sigma 0.6 + +#Parameters (5.Mixing) +mixing_type plain +mixing_beta 0.7 diff --git a/tests/16_SDFT_GPU/187_PW_SDFT_ALL_GPU/KPT b/tests/16_SDFT_GPU/004_PW_SDFT_ALL_GPU/KPT similarity index 100% rename from tests/16_SDFT_GPU/187_PW_SDFT_ALL_GPU/KPT rename to tests/16_SDFT_GPU/004_PW_SDFT_ALL_GPU/KPT diff --git a/tests/16_SDFT_GPU/187_PW_SDFT_ALL_GPU/README b/tests/16_SDFT_GPU/004_PW_SDFT_ALL_GPU/README similarity index 100% rename from tests/16_SDFT_GPU/187_PW_SDFT_ALL_GPU/README rename to tests/16_SDFT_GPU/004_PW_SDFT_ALL_GPU/README diff --git a/tests/16_SDFT_GPU/187_PW_SDFT_ALL_GPU/STRU b/tests/16_SDFT_GPU/004_PW_SDFT_ALL_GPU/STRU similarity index 100% rename from tests/16_SDFT_GPU/187_PW_SDFT_ALL_GPU/STRU rename to tests/16_SDFT_GPU/004_PW_SDFT_ALL_GPU/STRU diff --git a/tests/16_SDFT_GPU/187_PW_SDFT_ALL_GPU/result.ref b/tests/16_SDFT_GPU/004_PW_SDFT_ALL_GPU/result.ref similarity index 100% rename from tests/16_SDFT_GPU/187_PW_SDFT_ALL_GPU/result.ref rename to tests/16_SDFT_GPU/004_PW_SDFT_ALL_GPU/result.ref diff --git a/tests/16_SDFT_GPU/005_PW_SDFT_MALL_BPCG_GPU/INPUT b/tests/16_SDFT_GPU/005_PW_SDFT_MALL_BPCG_GPU/INPUT new file mode 100644 index 0000000000..8a060bf5ee --- /dev/null +++ b/tests/16_SDFT_GPU/005_PW_SDFT_MALL_BPCG_GPU/INPUT @@ -0,0 +1,39 @@ +INPUT_PARAMETERS +#Parameters (1.General) +suffix autotest +calculation scf +esolver_type sdft +method_sto 2 +device gpu +ks_solver bpcg + +symmetry 0 +pseudo_dir ../../PP_ORB + +kpar 1 +bndpar 2 + +nbands 11 +nbands_sto all + +nche_sto 120 +seed_sto 20000 +cal_force 1 +cal_stress 1 + +#Parameters (2.Iteration) +ecutwfc 30 +scf_thr 1e-6 +scf_nmax 20 + + +#Parameters (3.Basis) +basis_type pw + +#Parameters (4.Smearing) +smearing_method fd +smearing_sigma 0.6 + +#Parameters (5.Mixing) +mixing_type plain +mixing_beta 0.7 diff --git a/tools/SIAB/SimulatedAnnealing/backup_old_version/2_Generate/07_N/KPOINTS b/tests/16_SDFT_GPU/005_PW_SDFT_MALL_BPCG_GPU/KPT similarity index 100% rename from tools/SIAB/SimulatedAnnealing/backup_old_version/2_Generate/07_N/KPOINTS rename to tests/16_SDFT_GPU/005_PW_SDFT_MALL_BPCG_GPU/KPT diff --git a/tests/16_SDFT_GPU/187_PW_SDFT_MALL_BPCG_GPU/README b/tests/16_SDFT_GPU/005_PW_SDFT_MALL_BPCG_GPU/README similarity index 100% rename from tests/16_SDFT_GPU/187_PW_SDFT_MALL_BPCG_GPU/README rename to tests/16_SDFT_GPU/005_PW_SDFT_MALL_BPCG_GPU/README diff --git a/tests/16_SDFT_GPU/187_PW_SDFT_MALL_BPCG_GPU/STRU b/tests/16_SDFT_GPU/005_PW_SDFT_MALL_BPCG_GPU/STRU similarity index 100% rename from tests/16_SDFT_GPU/187_PW_SDFT_MALL_BPCG_GPU/STRU rename to tests/16_SDFT_GPU/005_PW_SDFT_MALL_BPCG_GPU/STRU diff --git a/tests/16_SDFT_GPU/187_PW_SDFT_MALL_BPCG_GPU/result.ref b/tests/16_SDFT_GPU/005_PW_SDFT_MALL_BPCG_GPU/result.ref similarity index 100% rename from tests/16_SDFT_GPU/187_PW_SDFT_MALL_BPCG_GPU/result.ref rename to tests/16_SDFT_GPU/005_PW_SDFT_MALL_BPCG_GPU/result.ref diff --git a/tests/16_SDFT_GPU/006_PW_SDFT_MALL_GPU/INPUT b/tests/16_SDFT_GPU/006_PW_SDFT_MALL_GPU/INPUT new file mode 100644 index 0000000000..7d772ca0f0 --- /dev/null +++ b/tests/16_SDFT_GPU/006_PW_SDFT_MALL_GPU/INPUT @@ -0,0 +1,38 @@ +INPUT_PARAMETERS +#Parameters (1.General) +suffix autotest +calculation scf +esolver_type sdft +method_sto 2 +device gpu + +symmetry 0 +pseudo_dir ../../PP_ORB + +kpar 1 +bndpar 2 + +nbands 10 +nbands_sto all + +nche_sto 120 +seed_sto 20000 +cal_force 1 +cal_stress 1 + +#Parameters (2.Iteration) +ecutwfc 30 +scf_thr 1e-6 +scf_nmax 20 + + +#Parameters (3.Basis) +basis_type pw + +#Parameters (4.Smearing) +smearing_method fd +smearing_sigma 0.6 + +#Parameters (5.Mixing) +mixing_type plain +mixing_beta 0.7 diff --git a/tests/16_SDFT_GPU/006_PW_SDFT_MALL_GPU/KPT b/tests/16_SDFT_GPU/006_PW_SDFT_MALL_GPU/KPT new file mode 100644 index 0000000000..c289c0158a --- /dev/null +++ b/tests/16_SDFT_GPU/006_PW_SDFT_MALL_GPU/KPT @@ -0,0 +1,4 @@ +K_POINTS +0 +Gamma +1 1 1 0 0 0 diff --git a/tests/16_SDFT_GPU/187_PW_SDFT_MALL_GPU/README b/tests/16_SDFT_GPU/006_PW_SDFT_MALL_GPU/README similarity index 100% rename from tests/16_SDFT_GPU/187_PW_SDFT_MALL_GPU/README rename to tests/16_SDFT_GPU/006_PW_SDFT_MALL_GPU/README diff --git a/tests/16_SDFT_GPU/187_PW_SDFT_MALL_GPU/STRU b/tests/16_SDFT_GPU/006_PW_SDFT_MALL_GPU/STRU similarity index 100% rename from tests/16_SDFT_GPU/187_PW_SDFT_MALL_GPU/STRU rename to tests/16_SDFT_GPU/006_PW_SDFT_MALL_GPU/STRU diff --git a/tests/16_SDFT_GPU/187_PW_SDFT_MALL_GPU/result.ref b/tests/16_SDFT_GPU/006_PW_SDFT_MALL_GPU/result.ref similarity index 100% rename from tests/16_SDFT_GPU/187_PW_SDFT_MALL_GPU/result.ref rename to tests/16_SDFT_GPU/006_PW_SDFT_MALL_GPU/result.ref diff --git a/tests/16_SDFT_GPU/186_PW_KG_100_GPU/INPUT b/tests/16_SDFT_GPU/186_PW_KG_100_GPU/INPUT deleted file mode 100644 index 1d34d5335d..0000000000 --- a/tests/16_SDFT_GPU/186_PW_KG_100_GPU/INPUT +++ /dev/null @@ -1,37 +0,0 @@ -INPUT_PARAMETERS -#Parameters (1.General) -suffix autotest -calculation scf -esolver_type ksdft - -nbands 100 -pseudo_dir ../../PP_ORB -symmetry 1 -kpar 2 -device gpu - -#Parameters (2.Iteration) -ecutwfc 20 -scf_thr 1e-6 -scf_nmax 50 - - -#Parameters (3.Basis) -basis_type pw - -#Parameters (4.Smearing) -smearing_method fd -smearing_sigma 0.6 - -#Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.4 -mixing_gg0 0.0 - -cal_cond 1 -cond_fwhm 8 -cond_wcut 10 -cond_dw 1 -cond_dt 0.237464 -cond_dtbatch 1 -cond_nonlocal 1 diff --git a/tests/16_SDFT_GPU/186_PW_SKG_MALL_GPU/INPUT b/tests/16_SDFT_GPU/186_PW_SKG_MALL_GPU/INPUT deleted file mode 100644 index 6b9a901fd8..0000000000 --- a/tests/16_SDFT_GPU/186_PW_SKG_MALL_GPU/INPUT +++ /dev/null @@ -1,43 +0,0 @@ -INPUT_PARAMETERS -#Parameters (1.General) -suffix autotest -calculation scf -esolver_type sdft -method_sto 1 - -nbands 5 -nbands_sto all -nche_sto 120 -emax_sto 0 -emin_sto 0 -seed_sto 20000 -pseudo_dir ../../PP_ORB -symmetry 1 -kpar 1 -bndpar 2 -device gpu - -#Parameters (2.Iteration) -ecutwfc 20 -scf_thr 1e-6 -scf_nmax 20 - - -#Parameters (3.Basis) -basis_type pw - -#Parameters (4.Smearing) -smearing_method fd -smearing_sigma 0.6 - -#Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.4 -mixing_gg0 0.0 - -cal_cond 1 -cond_fwhm 16 -cond_wcut 10 -cond_dw 1 -cond_dt 0.237464 -cond_nonlocal 1 diff --git a/tests/16_SDFT_GPU/187_PW_MD_SDFT_ALL_GPU/INPUT b/tests/16_SDFT_GPU/187_PW_MD_SDFT_ALL_GPU/INPUT deleted file mode 100644 index beef5ef8b4..0000000000 --- a/tests/16_SDFT_GPU/187_PW_MD_SDFT_ALL_GPU/INPUT +++ /dev/null @@ -1,43 +0,0 @@ -INPUT_PARAMETERS -#Parameters (1.General) -suffix autotest -calculation md -esolver_type sdft -method_sto 2 -device gpu - -symmetry 0 -pseudo_dir ../../PP_ORB - -nbands 0 -nbands_sto all - -nche_sto 90 -seed_sto 20000 -kpar 1 -bndpar 2 -cal_force 1 -cal_stress 1 - -#Parameters (2.Iteration) -ecutwfc 30 -scf_thr 1e-4 -scf_nmax 20 - - -#Parameters (3.Basis) -basis_type pw - -#Parameters (4.Smearing) -smearing_method fd -smearing_sigma 0.6 - -#Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.4 - -#MD -md_tfirst 10 -md_tfreq 0.1 -md_nstep 2 -init_vel 1 diff --git a/tests/16_SDFT_GPU/187_PW_SDFT_ALL_GPU/INPUT b/tests/16_SDFT_GPU/187_PW_SDFT_ALL_GPU/INPUT deleted file mode 100644 index a6804500a7..0000000000 --- a/tests/16_SDFT_GPU/187_PW_SDFT_ALL_GPU/INPUT +++ /dev/null @@ -1,38 +0,0 @@ -INPUT_PARAMETERS -#Parameters (1.General) -suffix autotest -calculation scf -esolver_type sdft -method_sto 1 - -symmetry 0 -pseudo_dir ../../PP_ORB -device gpu - -kpar 2 -bndpar 1 - -nbands 0 -nbands_sto all - -nche_sto 120 -seed_sto 20000 -cal_force 1 -cal_stress 1 - -#Parameters (2.Iteration) -ecutwfc 20 -scf_thr 1e-6 -scf_nmax 30 - - -#Parameters (3.Basis) -basis_type pw - -#Parameters (4.Smearing) -smearing_method fd -smearing_sigma 0.6 - -#Parameters (5.Mixing) -mixing_type plain -mixing_beta 0.7 diff --git a/tests/16_SDFT_GPU/187_PW_SDFT_MALL_BPCG_GPU/INPUT b/tests/16_SDFT_GPU/187_PW_SDFT_MALL_BPCG_GPU/INPUT deleted file mode 100644 index 4eab8220a6..0000000000 --- a/tests/16_SDFT_GPU/187_PW_SDFT_MALL_BPCG_GPU/INPUT +++ /dev/null @@ -1,39 +0,0 @@ -INPUT_PARAMETERS -#Parameters (1.General) -suffix autotest -calculation scf -esolver_type sdft -method_sto 2 -device gpu -ks_solver bpcg - -symmetry 0 -pseudo_dir ../../PP_ORB - -kpar 1 -bndpar 2 - -nbands 11 -nbands_sto all - -nche_sto 120 -seed_sto 20000 -cal_force 1 -cal_stress 1 - -#Parameters (2.Iteration) -ecutwfc 30 -scf_thr 1e-6 -scf_nmax 20 - - -#Parameters (3.Basis) -basis_type pw - -#Parameters (4.Smearing) -smearing_method fd -smearing_sigma 0.6 - -#Parameters (5.Mixing) -mixing_type plain -mixing_beta 0.7 diff --git a/tests/16_SDFT_GPU/187_PW_SDFT_MALL_GPU/INPUT b/tests/16_SDFT_GPU/187_PW_SDFT_MALL_GPU/INPUT deleted file mode 100644 index a0855d63f9..0000000000 --- a/tests/16_SDFT_GPU/187_PW_SDFT_MALL_GPU/INPUT +++ /dev/null @@ -1,38 +0,0 @@ -INPUT_PARAMETERS -#Parameters (1.General) -suffix autotest -calculation scf -esolver_type sdft -method_sto 2 -device gpu - -symmetry 0 -pseudo_dir ../../PP_ORB - -kpar 1 -bndpar 2 - -nbands 10 -nbands_sto all - -nche_sto 120 -seed_sto 20000 -cal_force 1 -cal_stress 1 - -#Parameters (2.Iteration) -ecutwfc 30 -scf_thr 1e-6 -scf_nmax 20 - - -#Parameters (3.Basis) -basis_type pw - -#Parameters (4.Smearing) -smearing_method fd -smearing_sigma 0.6 - -#Parameters (5.Mixing) -mixing_type plain -mixing_beta 0.7 diff --git a/tests/16_SDFT_GPU/CASES_GPU.txt b/tests/16_SDFT_GPU/CASES_GPU.txt index d3e55c120b..5c63d300ea 100644 --- a/tests/16_SDFT_GPU/CASES_GPU.txt +++ b/tests/16_SDFT_GPU/CASES_GPU.txt @@ -1,6 +1,6 @@ -186_PW_KG_100_GPU -186_PW_SKG_MALL_GPU -187_PW_MD_SDFT_ALL_GPU -187_PW_SDFT_ALL_GPU -187_PW_SDFT_MALL_BPCG_GPU -187_PW_SDFT_MALL_GPU +001_PW_KG_100_GPU +002_PW_SKG_MALL_GPU +003_PW_MD_SDFT_ALL_GPU +004_PW_SDFT_ALL_GPU +005_PW_SDFT_MALL_BPCG_GPU +006_PW_SDFT_MALL_GPU diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 5b1022bddc..83f1f32629 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -2,7 +2,7 @@ add_subdirectory(integrate) add_subdirectory(01_PW) add_subdirectory(02_NAO_Gamma) add_subdirectory(03_NAO_multik) -add_subdirectory(04_LJ_DP) +add_subdirectory(04_FF) add_subdirectory(05_rtTDDFT) add_subdirectory(06_SDFT) add_subdirectory(07_OFDFT) diff --git a/tests/PP_ORB/F_ONCV_PBE-1.2.upf b/tests/PP_ORB/F_ONCV_PBE-1.2.upf new file mode 100644 index 0000000000..3d1bf0329e --- /dev/null +++ b/tests/PP_ORB/F_ONCV_PBE-1.2.upf @@ -0,0 +1,1229 @@ + + + + F_ONCV_PBE-1.2.upf + + This pseudopotential file has been produced using the code + ONCVPSP (Optimized Norm-Conservinng Vanderbilt PSeudopotential) + scalar-relativistic version 2.1.1, 03/26/2014 by D. R. Hamann + The code is available through a link at URL www.mat-simresearch.com. + Documentation with the package provides a full discription of the + input data below. + + + While it is not required under the terms of the GNU GPL, it is + suggested that you cite D. R. Hamann, Phys. Rev. B 88, 085117 (2013) + in any publication using these pseudopotentials. + + + Copyright 2015 The Regents of the University of California + + This work is licensed under the Creative Commons Attribution-ShareAlike + 4.0 International License. To view a copy of this license, visit + http://creativecommons.org/licenses/by-sa/4.0/ or send a letter to + Creative Commons, PO Box 1866, Mountain View, CA 94042, USA. + + This pseudopotential is part of the Schlipf-Gygi norm-conserving + pseudopotential library. Its construction parameters were tuned to + reproduce materials of a training set with very high accuracy and + should be suitable as a general purpose pseudopotential to treat a + variety of different compounds. For details of the construction and + testing of the pseudopotential please refer to: + + M. Schlipf and F. Gygi, Computer Physics Communications (2015) + DOI: 10.1016/j.cpc.2015.05.011 + http://dx.doi.org/10.1016/j.cpc.2015.05.011 + http://www.quantum-simulation.org + + We kindly ask that you include this reference in all publications + associated to this pseudopotential. + + + +# ATOM AND REFERENCE CONFIGURATION +# atsym z nc nv iexc psfile + F 9.00 1 2 4 upf +# +# n l f energy (Ha) + 1 0 2.00 + 2 0 2.00 + 2 1 5.00 +# +# PSEUDOPOTENTIAL AND OPTIMIZATION +# lmax + 1 +# +# l, rc, ep, ncon, nbas, qcut + 0 1.58478 -1.09879 5 8 8.73495 + 1 1.66223 -0.40834 5 8 8.69707 +# +# LOCAL POTENTIAL +# lloc, lpopt, rc(5), dvloc0 + 4 5 0.97178 0.00000 +# +# VANDERBILT-KLEINMAN-BYLANDER PROJECTORs +# l, nproj, debl + 0 2 1.51125 + 1 2 1.53167 +# +# MODEL CORE CHARGE +# icmod, fcfact + 0 0.00000 +# +# LOG DERIVATIVE ANALYSIS +# epsh1, epsh2, depsh + -5.00 3.00 0.02 +# +# OUTPUT GRID +# rlmax, drl + 6.00 0.01 +# +# TEST CONFIGURATIONS +# ncnf + 0 +# nvcnf +# n l f + + + + + + + + + 0.0000 0.0100 0.0200 0.0300 0.0400 0.0500 0.0600 0.0700 + 0.0800 0.0900 0.1000 0.1100 0.1200 0.1300 0.1400 0.1500 + 0.1600 0.1700 0.1800 0.1900 0.2000 0.2100 0.2200 0.2300 + 0.2400 0.2500 0.2600 0.2700 0.2800 0.2900 0.3000 0.3100 + 0.3200 0.3300 0.3400 0.3500 0.3600 0.3700 0.3800 0.3900 + 0.4000 0.4100 0.4200 0.4300 0.4400 0.4500 0.4600 0.4700 + 0.4800 0.4900 0.5000 0.5100 0.5200 0.5300 0.5400 0.5500 + 0.5600 0.5700 0.5800 0.5900 0.6000 0.6100 0.6200 0.6300 + 0.6400 0.6500 0.6600 0.6700 0.6800 0.6900 0.7000 0.7100 + 0.7200 0.7300 0.7400 0.7500 0.7600 0.7700 0.7800 0.7900 + 0.8000 0.8100 0.8200 0.8300 0.8400 0.8500 0.8600 0.8700 + 0.8800 0.8900 0.9000 0.9100 0.9200 0.9300 0.9400 0.9500 + 0.9600 0.9700 0.9800 0.9900 1.0000 1.0100 1.0200 1.0300 + 1.0400 1.0500 1.0600 1.0700 1.0800 1.0900 1.1000 1.1100 + 1.1200 1.1300 1.1400 1.1500 1.1600 1.1700 1.1800 1.1900 + 1.2000 1.2100 1.2200 1.2300 1.2400 1.2500 1.2600 1.2700 + 1.2800 1.2900 1.3000 1.3100 1.3200 1.3300 1.3400 1.3500 + 1.3600 1.3700 1.3800 1.3900 1.4000 1.4100 1.4200 1.4300 + 1.4400 1.4500 1.4600 1.4700 1.4800 1.4900 1.5000 1.5100 + 1.5200 1.5300 1.5400 1.5500 1.5600 1.5700 1.5800 1.5900 + 1.6000 1.6100 1.6200 1.6300 1.6400 1.6500 1.6600 1.6700 + 1.6800 1.6900 1.7000 1.7100 1.7200 1.7300 1.7400 1.7500 + 1.7600 1.7700 1.7800 1.7900 1.8000 1.8100 1.8200 1.8300 + 1.8400 1.8500 1.8600 1.8700 1.8800 1.8900 1.9000 1.9100 + 1.9200 1.9300 1.9400 1.9500 1.9600 1.9700 1.9800 1.9900 + 2.0000 2.0100 2.0200 2.0300 2.0400 2.0500 2.0600 2.0700 + 2.0800 2.0900 2.1000 2.1100 2.1200 2.1300 2.1400 2.1500 + 2.1600 2.1700 2.1800 2.1900 2.2000 2.2100 2.2200 2.2300 + 2.2400 2.2500 2.2600 2.2700 2.2800 2.2900 2.3000 2.3100 + 2.3200 2.3300 2.3400 2.3500 2.3600 2.3700 2.3800 2.3900 + 2.4000 2.4100 2.4200 2.4300 2.4400 2.4500 2.4600 2.4700 + 2.4800 2.4900 2.5000 2.5100 2.5200 2.5300 2.5400 2.5500 + 2.5600 2.5700 2.5800 2.5900 2.6000 2.6100 2.6200 2.6300 + 2.6400 2.6500 2.6600 2.6700 2.6800 2.6900 2.7000 2.7100 + 2.7200 2.7300 2.7400 2.7500 2.7600 2.7700 2.7800 2.7900 + 2.8000 2.8100 2.8200 2.8300 2.8400 2.8500 2.8600 2.8700 + 2.8800 2.8900 2.9000 2.9100 2.9200 2.9300 2.9400 2.9500 + 2.9600 2.9700 2.9800 2.9900 3.0000 3.0100 3.0200 3.0300 + 3.0400 3.0500 3.0600 3.0700 3.0800 3.0900 3.1000 3.1100 + 3.1200 3.1300 3.1400 3.1500 3.1600 3.1700 3.1800 3.1900 + 3.2000 3.2100 3.2200 3.2300 3.2400 3.2500 3.2600 3.2700 + 3.2800 3.2900 3.3000 3.3100 3.3200 3.3300 3.3400 3.3500 + 3.3600 3.3700 3.3800 3.3900 3.4000 3.4100 3.4200 3.4300 + 3.4400 3.4500 3.4600 3.4700 3.4800 3.4900 3.5000 3.5100 + 3.5200 3.5300 3.5400 3.5500 3.5600 3.5700 3.5800 3.5900 + 3.6000 3.6100 3.6200 3.6300 3.6400 3.6500 3.6600 3.6700 + 3.6800 3.6900 3.7000 3.7100 3.7200 3.7300 3.7400 3.7500 + 3.7600 3.7700 3.7800 3.7900 3.8000 3.8100 3.8200 3.8300 + 3.8400 3.8500 3.8600 3.8700 3.8800 3.8900 3.9000 3.9100 + 3.9200 3.9300 3.9400 3.9500 3.9600 3.9700 3.9800 3.9900 + 4.0000 4.0100 4.0200 4.0300 4.0400 4.0500 4.0600 4.0700 + 4.0800 4.0900 4.1000 4.1100 4.1200 4.1300 4.1400 4.1500 + 4.1600 4.1700 4.1800 4.1900 4.2000 4.2100 4.2200 4.2300 + 4.2400 4.2500 4.2600 4.2700 4.2800 4.2900 4.3000 4.3100 + 4.3200 4.3300 4.3400 4.3500 4.3600 4.3700 4.3800 4.3900 + 4.4000 4.4100 4.4200 4.4300 4.4400 4.4500 4.4600 4.4700 + 4.4800 4.4900 4.5000 4.5100 4.5200 4.5300 4.5400 4.5500 + 4.5600 4.5700 4.5800 4.5900 4.6000 4.6100 4.6200 4.6300 + 4.6400 4.6500 4.6600 4.6700 4.6800 4.6900 4.7000 4.7100 + 4.7200 4.7300 4.7400 4.7500 4.7600 4.7700 4.7800 4.7900 + 4.8000 4.8100 4.8200 4.8300 4.8400 4.8500 4.8600 4.8700 + 4.8800 4.8900 4.9000 4.9100 4.9200 4.9300 4.9400 4.9500 + 4.9600 4.9700 4.9800 4.9900 5.0000 5.0100 5.0200 5.0300 + 5.0400 5.0500 5.0600 5.0700 5.0800 5.0900 5.1000 5.1100 + 5.1200 5.1300 5.1400 5.1500 5.1600 5.1700 5.1800 5.1900 + 5.2000 5.2100 5.2200 5.2300 5.2400 5.2500 5.2600 5.2700 + 5.2800 5.2900 5.3000 5.3100 5.3200 5.3300 5.3400 5.3500 + 5.3600 5.3700 5.3800 5.3900 5.4000 5.4100 5.4200 5.4300 + 5.4400 5.4500 5.4600 5.4700 5.4800 5.4900 5.5000 5.5100 + 5.5200 5.5300 5.5400 5.5500 5.5600 5.5700 5.5800 5.5900 + 5.6000 5.6100 5.6200 5.6300 5.6400 5.6500 5.6600 5.6700 + 5.6800 5.6900 5.7000 5.7100 5.7200 5.7300 5.7400 5.7500 + 5.7600 5.7700 5.7800 5.7900 5.8000 5.8100 5.8200 5.8300 + 5.8400 5.8500 5.8600 5.8700 5.8800 5.8900 5.9000 5.9100 + 5.9200 5.9300 5.9400 5.9500 5.9600 5.9700 5.9800 5.9900 + 6.0000 6.0100 + + + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 + + + + -3.2448411942e+01 -3.2442814758e+01 -3.2425992589e+01 -3.2397853585e+01 + -3.2358244658e+01 -3.2306951489e+01 -3.2243698523e+01 -3.2168148971e+01 + -3.2079904811e+01 -3.1978506784e+01 -3.1863434399e+01 -3.1734965933e+01 + -3.1596125546e+01 -3.1449541783e+01 -3.1296895868e+01 -3.1139269817e+01 + -3.0977385573e+01 -3.0811759007e+01 -3.0642793212e+01 -3.0470831178e+01 + -3.0296182850e+01 -3.0119136896e+01 -2.9939964051e+01 -2.9758916228e+01 + -2.9576223827e+01 -2.9392092491e+01 -2.9206699871e+01 -2.9020192486e+01 + -2.8832682739e+01 -2.8644245942e+01 -2.8454917412e+01 -2.8264689783e+01 + -2.8073510821e+01 -2.7881282138e+01 -2.7687859242e+01 -2.7493053877e+01 + -2.7296638358e+01 -2.7098353254e+01 -2.6897917634e+01 -2.6695042087e+01 + -2.6489443815e+01 -2.6280862692e+01 -2.6069077126e+01 -2.5853918352e+01 + -2.5635281852e+01 -2.5413134883e+01 -2.5187519527e+01 -2.4958551156e+01 + -2.4726412628e+01 -2.4491345579e+01 -2.4253639021e+01 -2.4013616661e+01 + -2.3771624683e+01 -2.3528020235e+01 -2.3283161199e+01 -2.3037398126e+01 + -2.2791068025e+01 -2.2544490282e+01 -2.2297963978e+01 -2.2051766989e+01 + -2.1806156110e+01 -2.1561367463e+01 -2.1317618757e+01 -2.1075109814e+01 + -2.0834025167e+01 -2.0594535793e+01 -2.0356800054e+01 -2.0120965805e+01 + -1.9887171500e+01 -1.9655547171e+01 -1.9426215124e+01 -1.9199290852e+01 + -1.8974883418e+01 -1.8753095796e+01 -1.8534025123e+01 -1.8317762603e+01 + -1.8104393739e+01 -1.7893998199e+01 -1.7686649699e+01 -1.7482415841e+01 + -1.7281357925e+01 -1.7083530724e+01 -1.6888982247e+01 -1.6697753494e+01 + -1.6509878191e+01 -1.6325382529e+01 -1.6144284894e+01 -1.5966595599e+01 + -1.5792316607e+01 -1.5621441266e+01 -1.5453954026e+01 -1.5289830168e+01 + -1.5129035529e+01 -1.4971526213e+01 -1.4817248315e+01 -1.4666137628e+01 + -1.4518119428e+01 -1.4373108287e+01 -1.4231006926e+01 -1.4091714223e+01 + -1.3955131690e+01 -1.3821165428e+01 -1.3689725951e+01 -1.3560727783e+01 + -1.3434089761e+01 -1.3309734625e+01 -1.3187588737e+01 -1.3067582022e+01 + -1.2949647602e+01 -1.2833722239e+01 -1.2719745863e+01 -1.2607661293e+01 + -1.2497414072e+01 -1.2388952600e+01 -1.2282228249e+01 -1.2177194686e+01 + -1.2073807753e+01 -1.1972025927e+01 -1.1871810033e+01 -1.1773122779e+01 + -1.1675928570e+01 -1.1580194509e+01 -1.1485889120e+01 -1.1392982320e+01 + -1.1301446252e+01 -1.1211254433e+01 -1.1122381433e+01 -1.1034803608e+01 + -1.0948498483e+01 -1.0863444311e+01 -1.0779620806e+01 -1.0697008442e+01 + -1.0615588168e+01 -1.0535342065e+01 -1.0456252470e+01 -1.0378302141e+01 + -1.0301474355e+01 -1.0225752426e+01 -1.0151119919e+01 -1.0077560367e+01 + -1.0005057358e+01 -9.9335942731e+00 -9.8631544229e+00 -9.7937209123e+00 + -9.7252765304e+00 -9.6578040444e+00 -9.5912856903e+00 -9.5257037493e+00 + -9.4610401057e+00 -9.3972765929e+00 -9.3343948718e+00 -9.2723765749e+00 + -9.2112032621e+00 -9.1508566973e+00 -9.0913185535e+00 -9.0325710012e+00 + -8.9745961866e+00 -8.9173768549e+00 -8.8608959922e+00 -8.8051371184e+00 + -8.7500844200e+00 -8.6957224979e+00 -8.6420369356e+00 -8.5890134570e+00 + -8.5366390043e+00 -8.4849004018e+00 -8.4337858669e+00 -8.3832833738e+00 + -8.3333822020e+00 -8.2840714673e+00 -8.2353409886e+00 -8.1871804242e+00 + -8.1395800053e+00 -8.0925297962e+00 -8.0460204716e+00 -8.0000426296e+00 + -7.9545873189e+00 -7.9096456069e+00 -7.8652088769e+00 -7.8212686656e+00 + -7.7778166543e+00 -7.7348448410e+00 -7.6923451715e+00 -7.6503100955e+00 + -7.6087317958e+00 -7.5676031435e+00 -7.5269165888e+00 -7.4866653125e+00 + -7.4468421629e+00 -7.4074404781e+00 -7.3684535463e+00 -7.3298748309e+00 + -7.2916980569e+00 -7.2539167922e+00 -7.2165251575e+00 -7.1795168991e+00 + -7.1428863732e+00 -7.1066276965e+00 -7.0707352691e+00 -7.0352036355e+00 + -7.0000272191e+00 -6.9652009361e+00 -6.9307193630e+00 -6.8965775766e+00 + -6.8627705195e+00 -6.8292932415e+00 -6.7961410955e+00 -6.7633091234e+00 + -6.7307929400e+00 -6.6985878974e+00 -6.6666895443e+00 -6.6350936470e+00 + -6.6037956862e+00 -6.5727916984e+00 -6.5420774553e+00 -6.5116488916e+00 + -6.4815021700e+00 -6.4516331846e+00 -6.4220382939e+00 -6.3927136985e+00 + -6.3636556204e+00 -6.3348606021e+00 -6.3063249345e+00 -6.2780452059e+00 + -6.2500180547e+00 -6.2222399092e+00 -6.1947076696e+00 -6.1674180156e+00 + -6.1403676831e+00 -6.1135536801e+00 -6.0869727934e+00 -6.0606220410e+00 + -6.0344985282e+00 -6.0085991542e+00 -5.9829211881e+00 -5.9574618160e+00 + -5.9322180946e+00 -5.9071874719e+00 -5.8823672117e+00 -5.8577545794e+00 + -5.8333471233e+00 -5.8091422106e+00 -5.7851372931e+00 -5.7613300161e+00 + -5.7377178513e+00 -5.7142984140e+00 -5.6910694456e+00 -5.6680285225e+00 + -5.6451734023e+00 -5.6225019218e+00 -5.6000117626e+00 -5.5777008038e+00 + -5.5555669784e+00 -5.5336080725e+00 -5.5118220681e+00 -5.4902069945e+00 + -5.4687607425e+00 -5.4474813788e+00 -5.4263670296e+00 -5.4054156903e+00 + -5.3846254956e+00 -5.3639946692e+00 -5.3435213108e+00 -5.3232036080e+00 + -5.3030398813e+00 -5.2830283359e+00 -5.2631671973e+00 -5.2434548829e+00 + -5.2238897032e+00 -5.2044699097e+00 -5.1851940146e+00 -5.1660604246e+00 + -5.1470674363e+00 -5.1282136243e+00 -5.1094974795e+00 -5.0909174015e+00 + -5.0724719581e+00 -5.0541597420e+00 -5.0359792589e+00 -5.0179290576e+00 + -5.0000078312e+00 -4.9822141930e+00 -4.9645466652e+00 -4.9470040364e+00 + -4.9295849901e+00 -4.9122881334e+00 -4.8951122293e+00 -4.8780560604e+00 + -4.8611183414e+00 -4.8442977816e+00 -4.8275932648e+00 -4.8110035943e+00 + -4.7945274874e+00 -4.7781638569e+00 -4.7619115832e+00 -4.7457694908e+00 + -4.7297364177e+00 -4.7138113480e+00 -4.6979931939e+00 -4.6822807880e+00 + -4.6666731380e+00 -4.6511692299e+00 -4.6357680058e+00 -4.6204683798e+00 + -4.6052694421e+00 -4.5901702041e+00 -4.5751696191e+00 -4.5602667403e+00 + -4.5454606672e+00 -4.5307504570e+00 -4.5161350814e+00 -4.5016137146e+00 + -4.4871854664e+00 -4.4728494180e+00 -4.4586046253e+00 -4.4444503049e+00 + -4.4303855999e+00 -4.4164096110e+00 -4.4025214906e+00 -4.3887204726e+00 + -4.3750057399e+00 -4.3613764167e+00 -4.3478317376e+00 -4.3343709555e+00 + -4.3209932916e+00 -4.3076978967e+00 -4.2944840739e+00 -4.2813510979e+00 + -4.2682982260e+00 -4.2553246387e+00 -4.2424296947e+00 -4.2296126929e+00 + -4.2168729256e+00 -4.2042096048e+00 -4.1916221329e+00 -4.1791098364e+00 + -4.1666720403e+00 -4.1543079905e+00 -4.1420171219e+00 -4.1297987911e+00 + -4.1176523546e+00 -4.1055770937e+00 -4.0935724657e+00 -4.0816378600e+00 + -4.0697726630e+00 -4.0579761930e+00 -4.0462479204e+00 -4.0345872693e+00 + -4.0229936547e+00 -4.0114664342e+00 -4.0000050815e+00 -3.9886090580e+00 + -3.9772778060e+00 -3.9660107241e+00 -3.9548072810e+00 -3.9436669767e+00 + -3.9325892797e+00 -3.9215736322e+00 -3.9106194894e+00 -3.8997263916e+00 + -3.8888938319e+00 -3.8781212984e+00 -3.8674082259e+00 -3.8567541955e+00 + -3.8461587240e+00 -3.8356213281e+00 -3.8251414732e+00 -3.8147187249e+00 + -3.8043526410e+00 -3.7940427607e+00 -3.7837885986e+00 -3.7735896819e+00 + -3.7634456151e+00 -3.7533559589e+00 -3.7433202740e+00 -3.7333380611e+00 + -3.7234089538e+00 -3.7135325387e+00 -3.7037083970e+00 -3.6939360815e+00 + -3.6842151726e+00 -3.6745453081e+00 -3.6649260887e+00 -3.6553571149e+00 + -3.6458379321e+00 -3.6363682052e+00 -3.6269475609e+00 -3.6175756183e+00 + -3.6082519784e+00 -3.5989762400e+00 -3.5897480836e+00 -3.5805671465e+00 + -3.5714330655e+00 -3.5623454389e+00 -3.5533039308e+00 -3.5443082173e+00 + -3.5353579523e+00 -3.5264527898e+00 -3.5175923296e+00 -3.5087762901e+00 + -3.5000043456e+00 -3.4912761662e+00 -3.4825914123e+00 -3.4739497181e+00 + -3.4653508168e+00 -3.4567943938e+00 -3.4482801345e+00 -3.4398077046e+00 + -3.4313767770e+00 -3.4229870888e+00 -3.4146383399e+00 -3.4063302306e+00 + -3.3980624352e+00 -3.3898346558e+00 -3.3816466364e+00 -3.3734980910e+00 + -3.3653887336e+00 -3.3573182499e+00 -3.3492863632e+00 -3.3412928269e+00 + -3.3333373681e+00 -3.3254197144e+00 -3.3175395652e+00 -3.3096966571e+00 + -3.3018907553e+00 -3.2941215999e+00 -3.2863889309e+00 -3.2786924642e+00 + -3.2710319422e+00 -3.2634071444e+00 -3.2558178230e+00 -3.2482637303e+00 + -3.2407446006e+00 -3.2332601752e+00 -3.2258102504e+00 -3.2183945899e+00 + -3.2110129574e+00 -3.2036651083e+00 -3.1963507761e+00 -3.1890697759e+00 + -3.1818218824e+00 -3.1746068703e+00 -3.1674245144e+00 -3.1602745456e+00 + -3.1531567885e+00 -3.1460710318e+00 -3.1390170609e+00 -3.1319946609e+00 + -3.1250035878e+00 -3.1180436444e+00 -3.1111146437e+00 -3.1042163809e+00 + -3.0973486514e+00 -3.0905112384e+00 -3.0837039176e+00 -3.0769265276e+00 + -3.0701788730e+00 -3.0634607588e+00 -3.0567719896e+00 -3.0501123338e+00 + -3.0434816320e+00 -3.0368797061e+00 -3.0303063698e+00 -3.0237614372e+00 + -3.0172447078e+00 -3.0107559829e+00 -3.0042951147e+00 -2.9978619256e+00 + -2.9914562381e+00 -2.9850778749e+00 -2.9787266262e+00 -2.9724023426e+00 + -2.9661048653e+00 -2.9598340251e+00 -2.9535896529e+00 -2.9473715739e+00 + -2.9411795896e+00 -2.9350135744e+00 -2.9288733670e+00 -2.9227588062e+00 + -2.9166697306e+00 -2.9106059613e+00 -2.9045673346e+00 -2.8985537198e+00 + -2.8925649632e+00 -2.8866009110e+00 -2.8806614095e+00 -2.8747462783e+00 + -2.8688553814e+00 -2.8629885856e+00 -2.8571457441e+00 -2.8513267105e+00 + -2.8455313381e+00 -2.8397594484e+00 -2.8340109254e+00 -2.8282856361e+00 + -2.8225834407e+00 -2.8169041995e+00 -2.8112477726e+00 -2.8056139857e+00 + -2.8000027365e+00 -2.7944138947e+00 -2.7888473270e+00 -2.7833029001e+00 + -2.7777804808e+00 -2.7722799012e+00 -2.7668010663e+00 -2.7613438511e+00 + -2.7559081285e+00 -2.7504937715e+00 -2.7451006531e+00 -2.7397286140e+00 + -2.7343775606e+00 -2.7290473757e+00 -2.7237379381e+00 -2.7184491266e+00 + -2.7131808201e+00 -2.7079328702e+00 -2.7027051793e+00 -2.6974976398e+00 + -2.6923101363e+00 -2.6871425533e+00 -2.6819947753e+00 -2.6768666667e+00 + -2.6717581206e+00 -2.6666690413e+00 -2.6615993188e+00 -2.6565488430e+00 + -2.6515175036e+00 -2.6465051801e+00 -2.6415117513e+00 -2.6365371353e+00 + -2.6315812271e+00 -2.6266439217e+00 -2.6217251141e+00 -2.6168246994e+00 + -2.6119425412e+00 -2.6070785694e+00 -2.6022326849e+00 -2.5974047878e+00 + -2.5925947780e+00 -2.5878025552e+00 -2.5830280019e+00 -2.5782710233e+00 + -2.5735315388e+00 -2.5688094527e+00 -2.5641046697e+00 -2.5594170944e+00 + -2.5547466298e+00 -2.5500931528e+00 -2.5454566016e+00 -2.5408368854e+00 + -2.5362339132e+00 -2.5316475940e+00 -2.5270778368e+00 -2.5225245360e+00 + -2.5179876010e+00 -2.5134669613e+00 -2.5089625300e+00 -2.5044742204e+00 + -2.5000019459e+00 -2.4955456195e+00 -2.4911051303e+00 -2.4866804135e+00 + -2.4822713921e+00 -2.4778779831e+00 -2.4735001041e+00 -2.4691376721e+00 + -2.4647906022e+00 -2.4604587878e+00 -2.4561421765e+00 -2.4518406895e+00 + -2.4475542479e+00 -2.4432827729e+00 -2.4390261857e+00 -2.4347843996e+00 + -2.4305573237e+00 -2.4263449036e+00 -2.4221470641e+00 -2.4179637299e+00 + -2.4137948261e+00 -2.4096402773e+00 -2.4054999979e+00 -2.4013739071e+00 + -2.3972619505e+00 -2.3931640565e+00 -2.3890801534e+00 -2.3850101696e+00 + -2.3809540333e+00 -2.3769116622e+00 -2.3728829801e+00 -2.3688679351e+00 + -2.3648664589e+00 -2.3608784832e+00 -2.3569039396e+00 -2.3529427598e+00 + -2.3489948667e+00 -2.3450601839e+00 -2.3411386641e+00 -2.3372302421e+00 + -2.3333348527e+00 -2.3294524309e+00 + + + + 0.0000000000E+00 -8.2765367661E-02 -1.6535439277E-01 -2.4759073313E-01 + -3.2929805361E-01 -4.1030004538E-01 -4.9042046381E-01 -5.6948319073E-01 + -6.4731232665E-01 -7.2373231787E-01 -7.9856812308E-01 -8.7164542344E-01 + -9.4279087946E-01 -1.0118324374E+00 -1.0785996870E+00 -1.1429242724E+00 + -1.2046403547E+00 -1.2635851290E+00 -1.3195993906E+00 -1.3725281521E+00 + -1.4222213049E+00 -1.4685343244E+00 -1.5113290116E+00 -1.5504742676E+00 + -1.5858468932E+00 -1.6173324094E+00 -1.6448258870E+00 -1.6682327836E+00 + -1.6874697713E+00 -1.7024655547E+00 -1.7131616646E+00 -1.7195132203E+00 + -1.7214896476E+00 -1.7190753488E+00 -1.7122703208E+00 -1.7010906727E+00 + -1.6855691189E+00 -1.6657553283E+00 -1.6417162121E+00 -1.6135361183E+00 + -1.5813168878E+00 -1.5451778198E+00 -1.5052555146E+00 -1.4617035941E+00 + -1.4146922985E+00 -1.3644079581E+00 -1.3110523391E+00 -1.2548418642E+00 + -1.1960067203E+00 -1.1347898338E+00 -1.0714457210E+00 -1.0062392688E+00 + -9.3944443284E-01 -8.7134265843E-01 -8.0222155879E-01 -7.3237316395E-01 + -6.6209233374E-01 -5.9167508860E-01 -5.2141676925E-01 -4.5161035964E-01 + -3.8254475928E-01 -3.1450270459E-01 -2.4775971028E-01 -1.8258139941E-01 + -1.1922254256E-01 -5.7925627099E-02 1.0816413515E-03 5.7586891468E-02 + 1.1139453579E-01 1.6232708368E-01 2.1022662989E-01 2.5495518882E-01 + 2.9639569708E-01 3.3445262830E-01 3.6905235947E-01 4.0014400110E-01 + 4.2769890970E-01 4.5171084310E-01 4.7219572975E-01 4.8919125795E-01 + 5.0275628620E-01 5.1297007788E-01 5.1993136431E-01 5.2375724189E-01 + 5.2458191002E-01 5.2255525768E-01 5.1784130741E-01 5.1061652652E-01 + 5.0106801599E-01 4.8939158832E-01 4.7578974627E-01 4.6046957485E-01 + 4.4364055954E-01 4.2551234395E-01 4.0629244057E-01 3.8618390821E-01 + 3.6538313212E-01 3.4407778179E-01 3.2244289156E-01 3.0064331460E-01 + 2.7883485469E-01 2.5716430669E-01 2.3576880028E-01 2.1477587394E-01 + 1.9430130196E-01 1.7444959762E-01 1.5531423192E-01 1.3697718725E-01 + 1.1950972421E-01 1.0297016042E-01 8.7405356812E-02 7.2851518361E-02 + 5.9334602552E-02 4.6869704309E-02 3.5460950262E-02 2.5104002352E-02 + 1.5786392842E-02 7.4865282300E-03 1.7534614752E-04 -6.1821995303E-03 + -1.1626801411E-02 -1.6205272039E-02 -1.9967837257E-02 -2.2968341345E-02 + -2.5263537552E-02 -2.6911637438E-02 -2.7972606425E-02 -2.8506461342E-02 + -2.8572533740E-02 -2.8230657383E-02 -2.7537891173E-02 -2.6549152594E-02 + -2.5319207786E-02 -2.3896863190E-02 -2.2329198646E-02 -2.0661340362E-02 + -1.8931184366E-02 -1.7176104778E-02 -1.5427949189E-02 -1.3713595067E-02 + -1.2059606440E-02 -1.0483629397E-02 -9.0032909803E-03 -7.6311182238E-03 + -6.3753953137E-03 -5.2437916605E-03 -4.2372624797E-03 -3.3573576442E-03 + -2.6008205312E-03 -1.9633918099E-03 -1.4386562128E-03 -1.0180559031E-03 + -6.9256064193E-04 -4.5091828367E-04 -2.8191152043E-04 -1.7292233306E-04 + -1.1121292386E-04 -8.5369253048E-05 -7.9235921821E-05 -5.5422529727E-05 + -1.3577136348E-05 4.8224950449E-06 2.0458210430E-06 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 + + + 0.0000000000E+00 8.4977745027E-03 1.6995075500E-02 2.5490065749E-02 + 3.3978201948E-02 4.2450934978E-02 5.0894473377E-02 5.9288629977E-02 + 6.7605770620E-02 7.5809882731E-02 8.3855780035E-02 9.1688458162E-02 + 9.9242614015E-02 1.0644233988E-01 1.1320100107E-01 1.1942130375E-01 + 1.2499555719E-01 1.2980613222E-01 1.3372611542E-01 1.3662015609E-01 + 1.3834549949E-01 1.3875320039E-01 1.3768950360E-01 1.3499738183E-01 + 1.3051821232E-01 1.2409358079E-01 1.1556718545E-01 1.0478683256E-01 + 9.1606484668E-02 7.5888355321E-02 5.7505016071E-02 3.6341492739E-02 + 1.2297318679E-02 -1.4711469151E-02 -4.4750397420E-02 -7.7864823908E-02 + -1.1407819815E-01 -1.5339064203E-01 -1.9577762913E-01 -2.4118883907E-01 + -2.8954733706E-01 -3.4074892451E-01 -3.9466176559E-01 -4.5112628491E-01 + -5.0995534554E-01 -5.7093471422E-01 -6.3382381778E-01 -6.9835679160E-01 + -7.6424381400E-01 -8.3117271149E-01 -8.9881087821E-01 -9.6680741987E-01 + -1.0347954850E+00 -1.1023950777E+00 -1.1692156453E+00 -1.2348592994E+00 + -1.2989239104E+00 -1.3610063408E+00 -1.4207060156E+00 -1.4776282382E+00 + -1.5313876060E+00 -1.5816120485E+00 -1.6279450506E+00 -1.6700507459E+00 + -1.7076159179E+00 -1.7403527959E+00 -1.7680037914E+00 -1.7903426082E+00 + -1.8071769482E+00 -1.8183509107E+00 -1.8237476452E+00 -1.8232898072E+00 + -1.8169411719E+00 -1.8047074551E+00 -1.7866366075E+00 -1.7628198051E+00 + -1.7333900298E+00 -1.6985216857E+00 -1.6584294326E+00 -1.6133666024E+00 + -1.5636232051E+00 -1.5095235344E+00 -1.4514233827E+00 -1.3897068843E+00 + -1.3247830036E+00 -1.2570816894E+00 -1.1870497206E+00 -1.1151462670E+00 + -1.0418381943E+00 -9.6759514144E-01 -8.9288440216E-01 -8.1816564080E-01 + -7.4388547624E-01 -6.7047196638E-01 -5.9832902667E-01 -5.2783081587E-01 + -4.5931646190E-01 -3.9308523362E-01 -3.2938674171E-01 -2.6843543308E-01 + -2.1042079306E-01 -1.5551012883E-01 -1.0384739811E-01 -5.5553267607E-02 + -1.0721577519E-02 3.0579563964E-02 6.8307117986E-02 1.0244347407E-01 + 1.3299487523E-01 1.5999429677E-01 1.8349831212E-01 2.0358522753E-01 + 2.2035390058E-01 2.3392375318E-01 2.4443326951E-01 2.5203600052E-01 + 2.5689964675E-01 2.5920525667E-01 2.5914348389E-01 2.5691270000E-01 + 2.5271876249E-01 2.4676917902E-01 2.3927328024E-01 2.3044260696E-01 + 2.2048291749E-01 2.0959531547E-01 1.9797894850E-01 1.8582087599E-01 + 1.7329779612E-01 1.6058217724E-01 1.4782763601E-01 1.3517524571E-01 + 1.2276102508E-01 1.1069451482E-01 9.9076780028E-02 8.7998558618E-02 + 7.7524185835E-02 6.7714303821E-02 5.8609844057E-02 5.0235849963E-02 + 4.2613991911E-02 3.5740464725E-02 2.9610292004E-02 2.4204105215E-02 + 1.9492759996E-02 1.5443516351E-02 1.2011201781E-02 9.1503490091E-03 + 6.8082875289E-03 4.9316828485E-03 3.4640512661E-03 2.3510347548E-03 + 1.5352102650E-03 9.6680587365E-04 5.9179985676E-04 3.6746650307E-04 + 2.4847136162E-04 2.0541396997E-04 1.9735433251E-04 1.3946320563E-04 + 3.4431398061E-05 -1.2062177406E-05 -5.1170724142E-06 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 + + + 0.0000000000E+00 1.9611468028E-03 7.8372836409E-03 1.7606497004E-02 + 3.1232255576E-02 4.8663398899E-02 6.9834125173E-02 9.4663981814E-02 + 1.2305786328E-01 1.5490602153E-01 1.9008409525E-01 2.2845316460E-01 + 2.6985983867E-01 3.1413638345E-01 3.6110089808E-01 4.1055754739E-01 + 4.6229685872E-01 5.1609609063E-01 5.7171968095E-01 6.2891978088E-01 + 6.8743688113E-01 7.4700053584E-01 8.0733018784E-01 8.6813609925E-01 + 9.2912038851E-01 9.8997817583E-01 1.0503988343E+00 1.1100673473E+00 + 1.1686657648E+00 1.2258747565E+00 1.2813752541E+00 1.3348501731E+00 + 1.3859862037E+00 1.4344756627E+00 1.4800183971E+00 1.5223236986E+00 + 1.5611122726E+00 1.5961181671E+00 1.6270907089E+00 1.6537964123E+00 + 1.6760208120E+00 1.6935702425E+00 1.7062735245E+00 1.7139835429E+00 + 1.7165786997E+00 1.7139642225E+00 1.7060733141E+00 1.6928681254E+00 + 1.6743405448E+00 1.6505127778E+00 1.6214377008E+00 1.5871990211E+00 + 1.5479112277E+00 1.5037191470E+00 1.4547975498E+00 1.4013502141E+00 + 1.3436089431E+00 1.2818323301E+00 1.2163041610E+00 1.1473317832E+00 + 1.0752442327E+00 1.0003897901E+00 9.2313442610E-01 8.4385832010E-01 + 7.6295402632E-01 6.8082398756E-01 5.9787660971E-01 5.1452439381E-01 + 4.3118089780E-01 3.4825768833E-01 2.6616089417E-01 1.8528906668E-01 + 1.0603009463E-01 2.8758489555E-02 -4.6167094740E-02 -1.1840710263E-01 + -1.8764257635E-01 -2.5357759680E-01 -3.1594124843E-01 -3.7448936894E-01 + -4.2900606955E-01 -4.7930501435E-01 -5.2523044969E-01 -5.6665797759E-01 + -6.0349506996E-01 -6.3568132337E-01 -6.6318845701E-01 -6.8602005930E-01 + -7.0421109184E-01 -7.1782716175E-01 -7.2696357674E-01 -7.3174419967E-01 + -7.3232012198E-01 -7.2886817792E-01 -7.2158932347E-01 -7.1070690591E-01 + -6.9646494868E-01 -6.7912657307E-01 -6.5897082341E-01 -6.3628941070E-01 + -6.1138147417E-01 -5.8455004749E-01 -5.5609924002E-01 -5.2633291671E-01 + -4.9554864077E-01 -4.6403668324E-01 -4.3207875408E-01 -3.9994526442E-01 + -3.6789543425E-01 -3.3617002508E-01 -3.0499270111E-01 -2.7457023768E-01 + -2.4509192377E-01 -2.1672600756E-01 -1.8961681440E-01 -1.6389013143E-01 + -1.3965285480E-01 -1.1698752096E-01 -9.5955006121E-02 -7.6598149605E-02 + -5.8942151644E-02 -4.2987877701E-02 -2.8722116884E-02 -1.6116494201E-02 + -5.1243659392E-03 4.3128249825E-03 1.2265274184E-02 1.8814900779E-02 + 2.4051121315E-02 2.8071869435E-02 3.0979615466E-02 3.2879563259E-02 + 3.3883231589E-02 3.4097515949E-02 3.3630612196E-02 3.2592260650E-02 + 3.1080832705E-02 2.9197482275E-02 2.7034383082E-02 2.4674209618E-02 + 2.2202389214E-02 1.9682885005E-02 1.7181738999E-02 1.4752663233E-02 + 1.2437950076E-02 1.0279876470E-02 8.3001394959E-03 6.5233652879E-03 + 4.9586065009E-03 3.6117758999E-03 2.4815456565E-03 1.5588734699E-03 + 8.3309858928E-04 2.8550623794E-04 -1.0264859051E-04 -3.5445577233E-04 + -4.9345232080E-04 -5.4373776604E-04 -5.2898375604E-04 -4.7169537541E-04 + -3.9127386456E-04 -3.0600972886E-04 -2.2753204476E-04 -1.6741312086E-04 + -1.2713751706E-04 -1.1340499796E-04 -1.0668204175E-04 -6.3668448347E-05 + -9.9072569465E-06 7.0087003564E-06 2.1433819194E-06 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 + + + 0.0000000000E+00 5.9773221541E-04 2.3858361700E-03 5.3490392501E-03 + 9.4619057084E-03 1.4688865992E-02 2.0984260598E-02 2.8292401184E-02 + 3.6547652350E-02 4.5674538108E-02 5.5587877593E-02 6.6192955001E-02 + 7.7385729049E-02 8.9053087475E-02 1.0107315216E-01 1.1331564044E-01 + 1.2564228786E-01 1.3790733761E-01 1.4995810091E-01 1.6163559273E-01 + 1.7277524549E-01 1.8320770403E-01 1.9275970230E-01 2.0125502296E-01 + 2.0851553847E-01 2.1436233260E-01 2.1861689746E-01 2.2110240392E-01 + 2.2164503592E-01 2.2007538495E-01 2.1622989379E-01 2.0995234019E-01 + 2.0109534782E-01 1.8952191445E-01 1.7510694671E-01 1.5773876855E-01 + 1.3732062642E-01 1.1377212564E-01 8.7030621867E-02 5.7052538582E-02 + 2.3814578641E-02 -1.2685164594E-02 -5.2426225232E-02 -9.5364925420E-02 + -1.4143369360E-01 -1.9054055466E-01 -2.4256880496E-01 -2.9737688358E-01 + -3.5479843738E-01 -4.1464262466E-01 -4.7669464387E-01 -5.4071643668E-01 + -6.0644760316E-01 -6.7360676807E-01 -7.4189274074E-01 -8.1098634117E-01 + -8.8055214687E-01 -9.5024048966E-01 -1.0196897847E+00 -1.0885288195E+00 + -1.1563792359E+00 -1.2228585605E+00 -1.2875821909E+00 -1.3501673569E+00 + -1.4102352449E+00 -1.4674137674E+00 -1.5213416399E+00 -1.5716703352E+00 + -1.6180671254E+00 -1.6602180226E+00 -1.6978309486E+00 -1.7306376434E+00 + -1.7583963239E+00 -1.7808939022E+00 -1.7979479107E+00 -1.8094088465E+00 + -1.8151610755E+00 -1.8151243300E+00 -1.8092547063E+00 -1.7975453663E+00 + -1.7800269376E+00 -1.7567676063E+00 -1.7278729008E+00 -1.6934851707E+00 + -1.6537827651E+00 -1.6089789206E+00 -1.5593203713E+00 -1.5050856971E+00 + -1.4465834302E+00 -1.3841499407E+00 -1.3181471291E+00 -1.2489599521E+00 + -1.1769938134E+00 -1.1026718525E+00 -1.0264321663E+00 -9.4872499882E-01 + -8.7001011351E-01 -7.9075447345E-01 -7.1142732772E-01 -6.3249373820E-01 + -5.5440518425E-01 -4.7759471379E-01 -4.0247403745E-01 -3.2943274706E-01 + -2.5883094184E-01 -1.9099956046E-01 -1.2623977953E-01 -6.4820527244E-02 + -6.9793736989E-03 4.7084794883E-02 9.7208629142E-02 1.4326318730E-01 + 1.8515387986E-01 2.2282300659E-01 2.5625035620E-01 2.8544730917E-01 + 3.1045676293E-01 3.3135553498E-01 3.4824977761E-01 3.6127177387E-01 + 3.7057991105E-01 3.7635605020E-01 3.7880100128E-01 3.7813561445E-01 + 3.7459370508E-01 3.6842004805E-01 3.5987311488E-01 3.4921366126E-01 + 3.3670401388E-01 3.2261525743E-01 3.0720796644E-01 2.9073760820E-01 + 2.7346497804E-01 2.5562397686E-01 2.3744521919E-01 2.1915386240E-01 + 2.0094075053E-01 1.8299821550E-01 1.6549220808E-01 1.4856470775E-01 + 1.3235835347E-01 1.1696870987E-01 1.0249228877E-01 8.8997937695E-02 + 7.6531002148E-02 6.5132640119E-02 5.4805852943E-02 4.5555286660E-02 + 3.7357272582E-02 3.0180930773E-02 2.3980892248E-02 1.8699831944E-02 + 1.4273658696E-02 1.0629369785E-02 7.6885993667E-03 5.3718493032E-03 + 3.5948506747E-03 2.2773479413E-03 1.3386652617E-03 7.0309247256E-04 + 3.0188693487E-04 6.9175478476E-05 -4.5419229102E-05 -9.2918901896E-05 + -1.0112529581E-04 -1.0583698968E-04 -1.0076824363E-04 -6.0375466996E-05 + -9.5063621947E-06 6.5516822872E-06 2.0036178809E-06 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 + + + 1.1057842273E+01 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 1.6602233398E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 -8.3468735662E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 -3.2124804198E+00 + + + + + + 0.0000000000E+00 7.2122500061E-04 2.9000415386E-03 6.5816740579E-03 + 1.1840831885E-02 1.8780720652E-02 2.7531675265E-02 3.8249431101E-02 + 5.1113054520E-02 6.6322557873E-02 8.4096227915E-02 1.0466769998E-01 + 1.2828281313E-01 1.5519628407E-01 1.8566823947E-01 2.1996064802E-01 + 2.5833369428E-01 3.0104213680E-01 3.4833169311E-01 4.0043549303E-01 + 4.5757064131E-01 5.1993492791E-01 5.8770372330E-01 6.6102709263E-01 + 7.4002715994E-01 8.2479575130E-01 9.1539233953E-01 1.0118423146E+00 + 1.1141355910E+00 1.2222255698E+00 1.3360284623E+00 1.4554229786E+00 + 1.5802503773E+00 1.7103148785E+00 1.8453844523E+00 1.9851918779E+00 + 2.1294362503E+00 2.2777846613E+00 2.4298742349E+00 2.5853144704E+00 + 2.7436897113E+00 2.9045618961E+00 3.0674734695E+00 3.2319504378E+00 + 3.3975055383E+00 3.5636414911E+00 3.7298542991E+00 3.8956365637E+00 + 4.0604807452E+00 4.2238824963E+00 4.3853438628E+00 4.5443762620E+00 + 4.7005034064E+00 4.8532644259E+00 5.0022160564E+00 5.1469354399E+00 + 5.2870221927E+00 5.4221004449E+00 5.5518206856E+00 5.6758612602E+00 + 5.7939296475E+00 5.9057636370E+00 6.0111319345E+00 6.1098349174E+00 + 6.2017047977E+00 6.2866058165E+00 6.3644339367E+00 6.4351165629E+00 + 6.4986120043E+00 6.5549086866E+00 6.6040239359E+00 6.6460031546E+00 + 6.6809184616E+00 6.7088673123E+00 6.7299711139E+00 6.7443730326E+00 + 6.7522369006E+00 6.7537452720E+00 6.7490976212E+00 6.7385085153E+00 + 6.7222057743E+00 6.7004286372E+00 6.6734259453E+00 6.6414543587E+00 + 6.6047766170E+00 6.5636598556E+00 6.5183739871E+00 6.4691901576E+00 + 6.4163792849E+00 6.3602106846E+00 6.3009507908E+00 6.2388619742E+00 + 6.1742014614E+00 6.1072203569E+00 6.0381627688E+00 5.9672650374E+00 + 5.8947551709E+00 5.8208524378E+00 5.7457656866E+00 5.6696943616E+00 + 5.5928277374E+00 5.5153447151E+00 5.4374136965E+00 5.3591929509E+00 + 5.2808293985E+00 5.2024594974E+00 5.1242096210E+00 5.0461960133E+00 + 4.9685253004E+00 4.8912937852E+00 4.8145885522E+00 4.7384879196E+00 + 4.6630616558E+00 4.5883710574E+00 4.5144696006E+00 4.4414035728E+00 + 4.3692121157E+00 4.2979278271E+00 4.2275775572E+00 4.1581824057E+00 + 4.0897575184E+00 4.0223146380E+00 3.9558607133E+00 3.8903977081E+00 + 3.8259255815E+00 3.7624410845E+00 3.6999366807E+00 3.6384040789E+00 + 3.5778331938E+00 3.5182099993E+00 3.4595214901E+00 3.4017533951E+00 + 3.3448876345E+00 3.2889097193E+00 3.2338026908E+00 3.1795476731E+00 + 3.1261300547E+00 3.0735313239E+00 3.0217351596E+00 2.9707268690E+00 + 2.9204876645E+00 2.8710056160E+00 2.8222646720E+00 2.7742511577E+00 + 2.7269534954E+00 2.6803565836E+00 2.6344520502E+00 2.5892266396E+00 + 2.5446717715E+00 2.5007776259E+00 2.4575347646E+00 2.4149365891E+00 + 2.3729730046E+00 2.3316396721E+00 2.2909270281E+00 2.2508311671E+00 + 2.2113441343E+00 2.1724613880E+00 2.1341764768E+00 2.0964842107E+00 + 2.0593791929E+00 2.0228556086E+00 1.9869087143E+00 1.9515321215E+00 + 1.9167214212E+00 1.8824697225E+00 1.8487727152E+00 1.8156230966E+00 + 1.7830164971E+00 1.7509453257E+00 1.7194050555E+00 1.6883879811E+00 + 1.6578893262E+00 1.6279014501E+00 1.5984192250E+00 1.5694352414E+00 + 1.5409439155E+00 1.5129382374E+00 1.4854120599E+00 1.4583589341E+00 + 1.4317720459E+00 1.4056456537E+00 1.3799721872E+00 1.3547467318E+00 + 1.3299609012E+00 1.3056105459E+00 1.2816868645E+00 1.2581857330E+00 + 1.2350991495E+00 1.2124219217E+00 1.1901473418E+00 1.1682690120E+00 + 1.1467816420E+00 1.1256775740E+00 1.1049527314E+00 1.0845989272E+00 + 1.0646120855E+00 1.0449852080E+00 1.0257127269E+00 1.0067894237E+00 + 9.8820816682E-01 9.6996514733E-01 9.5205286305E-01 9.3446722398E-01 + 9.1720224911E-01 9.0025207362E-01 8.8361268964E-01 8.6727671514E-01 + 8.5124092387E-01 8.3549919581E-01 8.2004638605E-01 8.0487857779E-01 + 7.8998878016E-01 7.7537410888E-01 7.6102884985E-01 7.4694805991E-01 + 7.3312818981E-01 7.1956285256E-01 7.0624904473E-01 6.9318192749E-01 + 6.8035630530E-01 6.6776920994E-01 6.5541507212E-01 6.4329033238E-01 + 6.3139142005E-01 6.1971254164E-01 6.0825141907E-01 5.9700352386E-01 + 5.8596436255E-01 5.7513131826E-01 5.6449955281E-01 5.5406574075E-01 + 5.4382693103E-01 5.3377810904E-01 5.2391693206E-01 5.1424005916E-01 + 5.0474274098E-01 4.9542309576E-01 4.8627744410E-01 4.7730179078E-01 + 4.6849413560E-01 4.5985073833E-01 4.5136823134E-01 4.4304453226E-01 + 4.3487591105E-01 4.2685949621E-01 4.1899317032E-01 4.1127327400E-01 + 4.0369730534E-01 3.9626316217E-01 3.8896730653E-01 3.8180748884E-01 + 3.7478167110E-01 3.6788647967E-01 3.6111981057E-01 3.5447973492E-01 + 3.4796308076E-01 3.4156779294E-01 3.3529209158E-01 3.2913303984E-01 + 3.2308854425E-01 3.1715700762E-01 3.1133575901E-01 3.0562258916E-01 + 3.0001611026E-01 2.9451394536E-01 2.8911370316E-01 2.8381422369E-01 + 2.7861344817E-01 2.7350875159E-01 2.6849921000E-01 2.6358303297E-01 + 2.5875753336E-01 2.5402181497E-01 2.4937429036E-01 2.4481262991E-01 + 2.4033551912E-01 2.3594171009E-01 2.3162925947E-01 2.2739639399E-01 + 2.2324219961E-01 2.1916513678E-01 2.1516296388E-01 2.1123507642E-01 + 2.0738009896E-01 2.0359607314E-01 1.9988193733E-01 1.9623667557E-01 + 1.9265875885E-01 1.8914653303E-01 1.8569935383E-01 1.8231600114E-01 + 1.7899464823E-01 1.7573458175E-01 1.7253482273E-01 1.6939398707E-01 + 1.6631069240E-01 1.6328436194E-01 1.6031392902E-01 1.5739779632E-01 + 1.5453531441E-01 1.5172565594E-01 1.4896767919E-01 1.4626002044E-01 + 1.4360225844E-01 1.4099347302E-01 1.3843236901E-01 1.3591814215E-01 + 1.3345019833E-01 1.3102766191E-01 1.2864914332E-01 1.2631429267E-01 + 1.2402237104E-01 1.2177244390E-01 1.1956339454E-01 1.1739490512E-01 + 1.1526623456E-01 1.1317638355E-01 1.1112457019E-01 1.0911039148E-01 + 1.0713314961E-01 1.0519181590E-01 1.0328586806E-01 1.0141484240E-01 + 9.9578084343E-02 9.7774565481E-02 9.6003953087E-02 9.4265748760E-02 + 9.2559340659E-02 9.0883724385E-02 8.9238694964E-02 8.7623743888E-02 + 8.6038301175E-02 8.4481405081E-02 8.2952925298E-02 8.1452365158E-02 + 7.9979195386E-02 7.8532511636E-02 7.7112213066E-02 7.5717833768E-02 + 7.4348883780E-02 7.3004528274E-02 7.1684657217E-02 7.0388851405E-02 + 6.9116658631E-02 6.7867324069E-02 6.6640695172E-02 6.5436412601E-02 + 6.4254060204E-02 6.3092972617E-02 6.1952926090E-02 6.0833631582E-02 + 5.9734707206E-02 5.8655585604E-02 5.7595947779E-02 5.6555582523E-02 + 5.5534140364E-02 5.4531159211E-02 5.3546206201E-02 5.2579152136E-02 + 5.1629678082E-02 5.0697432386E-02 4.9781856608E-02 4.8882903647E-02 + 4.8000283227E-02 4.7133691940E-02 4.6282635379E-02 4.5446951241E-02 + 4.4626440139E-02 4.3820826750E-02 4.3029741728E-02 4.2252844144E-02 + 4.1490041069E-02 4.0741083314E-02 4.0005710941E-02 3.9283459604E-02 + 3.8574281280E-02 3.7877968585E-02 3.7194286904E-02 3.6522904055E-02 + 3.5863562152E-02 3.5216173145E-02 3.4580525816E-02 3.3956400193E-02 + 3.3343401653E-02 3.2741483390E-02 3.2150477372E-02 3.1570186080E-02 + 3.1000351627E-02 3.0440700372E-02 2.9891187199E-02 2.9351635206E-02 + 2.8821860392E-02 2.8301564787E-02 2.7790623211E-02 2.7288938613E-02 + 2.6796346613E-02 2.6312676428E-02 2.5837607525E-02 2.5371125845E-02 + 2.4913096143E-02 2.4463366217E-02 2.4021753553E-02 2.3588003110E-02 + 2.3162104785E-02 2.2743923291E-02 2.2333318192E-02 2.1930096147E-02 + 2.1534074571E-02 2.1145223209E-02 2.0763417534E-02 2.0388528389E-02 + 2.0020361859E-02 1.9658783708E-02 1.9303752885E-02 1.8955155138E-02 + 1.8612872065E-02 1.8276717555E-02 1.7946584894E-02 1.7622430647E-02 + 1.7304150327E-02 1.6991635725E-02 1.6684715289E-02 1.6383292287E-02 + 1.6087328089E-02 1.5796727433E-02 1.5511391724E-02 1.5231169396E-02 + 1.4955959201E-02 1.4685733191E-02 1.4420404776E-02 1.4159884387E-02 + 1.3904044775E-02 1.3652768471E-02 1.3406042752E-02 1.3163789147E-02 + 1.2925926523E-02 1.2692355307E-02 1.2462932761E-02 1.2237664585E-02 + 1.2016479868E-02 1.1799305335E-02 1.1586065321E-02 1.1376603896E-02 + 1.1170928547E-02 1.0968981515E-02 1.0770696803E-02 1.0576006291E-02 + 1.0384790326E-02 1.0197005567E-02 1.0012624465E-02 9.8315877491E-03 + 9.6538342619E-03 9.4792819969E-03 9.3078339037E-03 9.1394925450E-03 + 8.9742048404E-03 8.8119160350E-03 8.6525696884E-03 8.4960519721E-03 + 8.3423571014E-03 8.1914498854E-03 8.0432814368E-03 7.8978013748E-03 + 7.7549371267E-03 7.6146169080E-03 7.4768408458E-03 7.3415654125E-03 + 7.2087457589E-03 7.0783357057E-03 6.9502433712E-03 6.8244580375E-03 + 6.7009552010E-03 6.5796950462E-03 6.4606365827E-03 6.3437305589E-03 + 6.2288950565E-03 6.1161421384E-03 6.0054365557E-03 5.8967420227E-03 + 5.7900212104E-03 5.6852140092E-03 5.5822776798E-03 5.4812095130E-03 + 5.3819774761E-03 5.2845486177E-03 5.1888890616E-03 5.0949332705E-03 + 5.0026656183E-03 4.9120735137E-03 4.8231279491E-03 4.7357991037E-03 + 4.6500563388E-03 4.5658330649E-03 4.4831304577E-03 4.4019304477E-03 + 4.3222068560E-03 4.2439327856E-03 4.1670806168E-03 4.0915861114E-03 + 4.0174587787E-03 3.9446787976E-03 3.8732226207E-03 3.8030660671E-03 + 3.7341843188E-03 3.6665180885E-03 3.6000784316E-03 3.5348467993E-03 + 3.4708020800E-03 3.4079226043E-03 3.3461861421E-03 3.2855403330E-03 + 3.2259924228E-03 3.1675275066E-03 3.1101267172E-03 3.0537706969E-03 + 2.9984395952E-03 2.9440894779E-03 2.8907196264E-03 2.8383205664E-03 + 2.7868754891E-03 2.7363671559E-03 2.6867778952E-03 2.6380733109E-03 + 2.5902416107E-03 2.5432800015E-03 2.4971735554E-03 2.4519069674E-03 + 2.4074645535E-03 2.3638222108E-03 2.3209549445E-03 2.2788673775E-03 + 2.2375462929E-03 2.1969781437E-03 2.1571490519E-03 2.1180448061E-03 + 2.0796284156E-03 2.0419097912E-03 2.0048780443E-03 1.9685212207E-03 + 1.9328270766E-03 1.8977830774E-03 1.8633646512E-03 1.8295621814E-03 + 1.7963751091E-03 1.7637929168E-03 1.7318048349E-03 1.7003998403E-03 + 1.6695656862E-03 1.6392735156E-03 1.6095325368E-03 1.5803335241E-03 + 1.5516670327E-03 1.5235233969E-03 1.4958927297E-03 1.4687564520E-03 + 1.4421043327E-03 1.4159376467E-03 1.3902481353E-03 1.3650273484E-03 + 1.3402666433E-03 1.3159571837E-03 1.2920767241E-03 1.2686279427E-03 + 1.2456065768E-03 1.2230052603E-03 1.2008164604E-03 1.1790324767E-03 + 1.1576441763E-03 1.1366315658E-03 1.1160016167E-03 1.0957479272E-03 + 1.0758639510E-03 1.0563429968E-03 1.0371782273E-03 1.0183590290E-03 + 9.9987257704E-04 9.8172297343E-04 9.6390454608E-04 9.4641149753E-04 + 9.2923790432E-04 9.1237771640E-04 8.9582021737E-04 8.7955655363E-04 + 8.6358935654E-04 8.4791361793E-04 8.3252422101E-04 8.1741593981E-04 + 8.0258343870E-04 7.8801694228E-04 7.7370904727E-04 7.5966203457E-04 + 7.4587149723E-04 7.3233293435E-04 7.1904175065E-04 7.0599325597E-04 + 6.9317938062E-04 6.8059225437E-04 6.6823465875E-04 6.5610272883E-04 + 6.4419251855E-04 6.3250000039E-04 + + diff --git a/tests/PP_ORB/F_pbe_50.sep b/tests/PP_ORB/F_pbe_50.sep new file mode 100644 index 0000000000..c8bc18b301 --- /dev/null +++ b/tests/PP_ORB/F_pbe_50.sep @@ -0,0 +1,1046 @@ +Sep.Element F +Sep.XcType pbe +Sep.Orbital p +Sep.Points 1038 +Sep.StripAmount 50 + + diff --git a/tests/PP_ORB/Li_ONCV_PBE-1.2.upf b/tests/PP_ORB/Li_ONCV_PBE-1.2.upf new file mode 100644 index 0000000000..86f55672c1 --- /dev/null +++ b/tests/PP_ORB/Li_ONCV_PBE-1.2.upf @@ -0,0 +1,1228 @@ + + + + Li_ONCV_PBE-1.2.upf + + This pseudopotential file has been produced using the code + ONCVPSP (Optimized Norm-Conservinng Vanderbilt PSeudopotential) + scalar-relativistic version 2.1.1, 03/26/2014 by D. R. Hamann + The code is available through a link at URL www.mat-simresearch.com. + Documentation with the package provides a full discription of the + input data below. + + + While it is not required under the terms of the GNU GPL, it is + suggested that you cite D. R. Hamann, Phys. Rev. B 88, 085117 (2013) + in any publication using these pseudopotentials. + + + Copyright 2015 The Regents of the University of California + + This work is licensed under the Creative Commons Attribution-ShareAlike + 4.0 International License. To view a copy of this license, visit + http://creativecommons.org/licenses/by-sa/4.0/ or send a letter to + Creative Commons, PO Box 1866, Mountain View, CA 94042, USA. + + This pseudopotential is part of the Schlipf-Gygi norm-conserving + pseudopotential library. Its construction parameters were tuned to + reproduce materials of a training set with very high accuracy and + should be suitable as a general purpose pseudopotential to treat a + variety of different compounds. For details of the construction and + testing of the pseudopotential please refer to: + + M. Schlipf and F. Gygi, Computer Physics Communications (2015) + DOI: 10.1016/j.cpc.2015.05.011 + http://dx.doi.org/10.1016/j.cpc.2015.05.011 + http://www.quantum-simulation.org + + We kindly ask that you include this reference in all publications + associated to this pseudopotential. + + + +# ATOM AND REFERENCE CONFIGURATION +# atsym z nc nv iexc psfile + Li 3.00 0 2 4 upf +# +# n l f energy (Ha) + 1 0 2.00 + 2 0 1.00 +# +# PSEUDOPOTENTIAL AND OPTIMIZATION +# lmax + 1 +# +# l, rc, ep, ncon, nbas, qcut + 0 1.74553 -1.90562 5 8 7.75888 + 1 1.40824 0.11292 5 8 11.11410 +# +# LOCAL POTENTIAL +# lloc, lpopt, rc(5), dvloc0 + 4 5 0.89499 0.00000 +# +# VANDERBILT-KLEINMAN-BYLANDER PROJECTORs +# l, nproj, debl + 0 2 1.80000 + 1 2 1.03347 +# +# MODEL CORE CHARGE +# icmod, fcfact + 0 0.00000 +# +# LOG DERIVATIVE ANALYSIS +# epsh1, epsh2, depsh + -5.00 3.00 0.02 +# +# OUTPUT GRID +# rlmax, drl + 6.00 0.01 +# +# TEST CONFIGURATIONS +# ncnf + 0 +# nvcnf +# n l f + + + + + + + + + 0.0000 0.0100 0.0200 0.0300 0.0400 0.0500 0.0600 0.0700 + 0.0800 0.0900 0.1000 0.1100 0.1200 0.1300 0.1400 0.1500 + 0.1600 0.1700 0.1800 0.1900 0.2000 0.2100 0.2200 0.2300 + 0.2400 0.2500 0.2600 0.2700 0.2800 0.2900 0.3000 0.3100 + 0.3200 0.3300 0.3400 0.3500 0.3600 0.3700 0.3800 0.3900 + 0.4000 0.4100 0.4200 0.4300 0.4400 0.4500 0.4600 0.4700 + 0.4800 0.4900 0.5000 0.5100 0.5200 0.5300 0.5400 0.5500 + 0.5600 0.5700 0.5800 0.5900 0.6000 0.6100 0.6200 0.6300 + 0.6400 0.6500 0.6600 0.6700 0.6800 0.6900 0.7000 0.7100 + 0.7200 0.7300 0.7400 0.7500 0.7600 0.7700 0.7800 0.7900 + 0.8000 0.8100 0.8200 0.8300 0.8400 0.8500 0.8600 0.8700 + 0.8800 0.8900 0.9000 0.9100 0.9200 0.9300 0.9400 0.9500 + 0.9600 0.9700 0.9800 0.9900 1.0000 1.0100 1.0200 1.0300 + 1.0400 1.0500 1.0600 1.0700 1.0800 1.0900 1.1000 1.1100 + 1.1200 1.1300 1.1400 1.1500 1.1600 1.1700 1.1800 1.1900 + 1.2000 1.2100 1.2200 1.2300 1.2400 1.2500 1.2600 1.2700 + 1.2800 1.2900 1.3000 1.3100 1.3200 1.3300 1.3400 1.3500 + 1.3600 1.3700 1.3800 1.3900 1.4000 1.4100 1.4200 1.4300 + 1.4400 1.4500 1.4600 1.4700 1.4800 1.4900 1.5000 1.5100 + 1.5200 1.5300 1.5400 1.5500 1.5600 1.5700 1.5800 1.5900 + 1.6000 1.6100 1.6200 1.6300 1.6400 1.6500 1.6600 1.6700 + 1.6800 1.6900 1.7000 1.7100 1.7200 1.7300 1.7400 1.7500 + 1.7600 1.7700 1.7800 1.7900 1.8000 1.8100 1.8200 1.8300 + 1.8400 1.8500 1.8600 1.8700 1.8800 1.8900 1.9000 1.9100 + 1.9200 1.9300 1.9400 1.9500 1.9600 1.9700 1.9800 1.9900 + 2.0000 2.0100 2.0200 2.0300 2.0400 2.0500 2.0600 2.0700 + 2.0800 2.0900 2.1000 2.1100 2.1200 2.1300 2.1400 2.1500 + 2.1600 2.1700 2.1800 2.1900 2.2000 2.2100 2.2200 2.2300 + 2.2400 2.2500 2.2600 2.2700 2.2800 2.2900 2.3000 2.3100 + 2.3200 2.3300 2.3400 2.3500 2.3600 2.3700 2.3800 2.3900 + 2.4000 2.4100 2.4200 2.4300 2.4400 2.4500 2.4600 2.4700 + 2.4800 2.4900 2.5000 2.5100 2.5200 2.5300 2.5400 2.5500 + 2.5600 2.5700 2.5800 2.5900 2.6000 2.6100 2.6200 2.6300 + 2.6400 2.6500 2.6600 2.6700 2.6800 2.6900 2.7000 2.7100 + 2.7200 2.7300 2.7400 2.7500 2.7600 2.7700 2.7800 2.7900 + 2.8000 2.8100 2.8200 2.8300 2.8400 2.8500 2.8600 2.8700 + 2.8800 2.8900 2.9000 2.9100 2.9200 2.9300 2.9400 2.9500 + 2.9600 2.9700 2.9800 2.9900 3.0000 3.0100 3.0200 3.0300 + 3.0400 3.0500 3.0600 3.0700 3.0800 3.0900 3.1000 3.1100 + 3.1200 3.1300 3.1400 3.1500 3.1600 3.1700 3.1800 3.1900 + 3.2000 3.2100 3.2200 3.2300 3.2400 3.2500 3.2600 3.2700 + 3.2800 3.2900 3.3000 3.3100 3.3200 3.3300 3.3400 3.3500 + 3.3600 3.3700 3.3800 3.3900 3.4000 3.4100 3.4200 3.4300 + 3.4400 3.4500 3.4600 3.4700 3.4800 3.4900 3.5000 3.5100 + 3.5200 3.5300 3.5400 3.5500 3.5600 3.5700 3.5800 3.5900 + 3.6000 3.6100 3.6200 3.6300 3.6400 3.6500 3.6600 3.6700 + 3.6800 3.6900 3.7000 3.7100 3.7200 3.7300 3.7400 3.7500 + 3.7600 3.7700 3.7800 3.7900 3.8000 3.8100 3.8200 3.8300 + 3.8400 3.8500 3.8600 3.8700 3.8800 3.8900 3.9000 3.9100 + 3.9200 3.9300 3.9400 3.9500 3.9600 3.9700 3.9800 3.9900 + 4.0000 4.0100 4.0200 4.0300 4.0400 4.0500 4.0600 4.0700 + 4.0800 4.0900 4.1000 4.1100 4.1200 4.1300 4.1400 4.1500 + 4.1600 4.1700 4.1800 4.1900 4.2000 4.2100 4.2200 4.2300 + 4.2400 4.2500 4.2600 4.2700 4.2800 4.2900 4.3000 4.3100 + 4.3200 4.3300 4.3400 4.3500 4.3600 4.3700 4.3800 4.3900 + 4.4000 4.4100 4.4200 4.4300 4.4400 4.4500 4.4600 4.4700 + 4.4800 4.4900 4.5000 4.5100 4.5200 4.5300 4.5400 4.5500 + 4.5600 4.5700 4.5800 4.5900 4.6000 4.6100 4.6200 4.6300 + 4.6400 4.6500 4.6600 4.6700 4.6800 4.6900 4.7000 4.7100 + 4.7200 4.7300 4.7400 4.7500 4.7600 4.7700 4.7800 4.7900 + 4.8000 4.8100 4.8200 4.8300 4.8400 4.8500 4.8600 4.8700 + 4.8800 4.8900 4.9000 4.9100 4.9200 4.9300 4.9400 4.9500 + 4.9600 4.9700 4.9800 4.9900 5.0000 5.0100 5.0200 5.0300 + 5.0400 5.0500 5.0600 5.0700 5.0800 5.0900 5.1000 5.1100 + 5.1200 5.1300 5.1400 5.1500 5.1600 5.1700 5.1800 5.1900 + 5.2000 5.2100 5.2200 5.2300 5.2400 5.2500 5.2600 5.2700 + 5.2800 5.2900 5.3000 5.3100 5.3200 5.3300 5.3400 5.3500 + 5.3600 5.3700 5.3800 5.3900 5.4000 5.4100 5.4200 5.4300 + 5.4400 5.4500 5.4600 5.4700 5.4800 5.4900 5.5000 5.5100 + 5.5200 5.5300 5.5400 5.5500 5.5600 5.5700 5.5800 5.5900 + 5.6000 5.6100 5.6200 5.6300 5.6400 5.6500 5.6600 5.6700 + 5.6800 5.6900 5.7000 5.7100 5.7200 5.7300 5.7400 5.7500 + 5.7600 5.7700 5.7800 5.7900 5.8000 5.8100 5.8200 5.8300 + 5.8400 5.8500 5.8600 5.8700 5.8800 5.8900 5.9000 5.9100 + 5.9200 5.9300 5.9400 5.9500 5.9600 5.9700 5.9800 5.9900 + 6.0000 6.0100 + + + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 + + + + -1.4764783187e+01 -1.4762421712e+01 -1.4755341904e+01 -1.4743557621e+01 + -1.4727091957e+01 -1.4705977245e+01 -1.4680255053e+01 -1.4649976190e+01 + -1.4615200700e+01 -1.4575997869e+01 -1.4532446215e+01 -1.4484632422e+01 + -1.4432647073e+01 -1.4376585458e+01 -1.4316547795e+01 -1.4252638643e+01 + -1.4184966350e+01 -1.4113642541e+01 -1.4038781642e+01 -1.3960500446e+01 + -1.3878917734e+01 -1.3794153927e+01 -1.3706330797e+01 -1.3615571202e+01 + -1.3521998877e+01 -1.3425738241e+01 -1.3326914246e+01 -1.3225652250e+01 + -1.3122077901e+01 -1.3016317055e+01 -1.2908495687e+01 -1.2798739830e+01 + -1.2687175506e+01 -1.2573928666e+01 -1.2459125130e+01 -1.2342890521e+01 + -1.2225350201e+01 -1.2106629196e+01 -1.1986852115e+01 -1.1866143062e+01 + -1.1744625534e+01 -1.1622422318e+01 -1.1499655363e+01 -1.1376445652e+01 + -1.1252913055e+01 -1.1129176172e+01 -1.1005352156e+01 -1.0881556528e+01 + -1.0757902982e+01 -1.0634503143e+01 -1.0511466347e+01 -1.0388899397e+01 + -1.0266906283e+01 -1.0145587865e+01 -1.0025041661e+01 -9.9053613968e+00 + -9.7866368106e+00 -9.6689532030e+00 -9.5523911894e+00 -9.4370262316e+00 + -9.3229284979e+00 -9.2101622377e+00 -9.0987858306e+00 -8.9888512337e+00 + -8.8804038404e+00 -8.7734824764e+00 -8.6681190355e+00 -8.5643385515e+00 + -8.4621593395e+00 -8.3615931835e+00 -8.2626453003e+00 -8.1653149407e+00 + -8.0695957776e+00 -7.9754764076e+00 -7.8829409599e+00 -7.7919696970e+00 + -7.7025396999e+00 -7.6146256202e+00 -7.5282003321e+00 -7.4432355746e+00 + -7.3597025333e+00 -7.2775723348e+00 -7.1968164352e+00 -7.1174068854e+00 + -7.0393164610e+00 -6.9625186499e+00 -6.8869874953e+00 -6.8126972968e+00 + -6.7396221776e+00 -6.6677354986e+00 -6.5970091218e+00 -6.5274151254e+00 + -6.4589294106e+00 -6.3915333262e+00 -6.3252128172e+00 -6.2599576024e+00 + -6.1957603525e+00 -6.1326161568e+00 -6.0705215878e+00 -6.0094741617e+00 + -5.9494717776e+00 -5.8905122302e+00 -5.8325928145e+00 -5.7757100172e+00 + -5.7198590687e+00 -5.6650339057e+00 -5.6112270084e+00 -5.5584293517e+00 + -5.5066304495e+00 -5.4558180213e+00 -5.4059784557e+00 -5.3570967939e+00 + -5.3091569411e+00 -5.2621414740e+00 -5.2160321036e+00 -5.1708098001e+00 + -5.1264549503e+00 -5.0829473188e+00 -5.0402664586e+00 -4.9983917466e+00 + -4.9573024633e+00 -4.9169780016e+00 -4.8773979116e+00 -4.8385418947e+00 + -4.8003901001e+00 -4.7629229646e+00 -4.7261211682e+00 -4.6899660023e+00 + -4.6544390276e+00 -4.6195220554e+00 -4.5851974668e+00 -4.5514477922e+00 + -4.5182558055e+00 -4.4856046098e+00 -4.4534773630e+00 -4.4218573946e+00 + -4.3907281023e+00 -4.3600729077e+00 -4.3298752546e+00 -4.3001185680e+00 + -4.2707862586e+00 -4.2418617338e+00 -4.2133284048e+00 -4.1851697524e+00 + -4.1573694385e+00 -4.1299111600e+00 -4.1027793333e+00 -4.0759581858e+00 + -4.0494334087e+00 -4.0231908029e+00 -3.9972175819e+00 -3.9715023819e+00 + -3.9460344924e+00 -3.9208066836e+00 -3.8958109799e+00 -3.8710451737e+00 + -3.8465052785e+00 -3.8221938000e+00 -3.7981118920e+00 -3.7742658045e+00 + -3.7506612931e+00 -3.7273071778e+00 -3.7042115667e+00 -3.6813837089e+00 + -3.6588305994e+00 -3.6365589169e+00 -3.6145710099e+00 -3.5928678431e+00 + -3.5714453031e+00 -3.5502968933e+00 -3.5294134518e+00 -3.5087827985e+00 + -3.4883951946e+00 -3.4682397472e+00 -3.4483103539e+00 -3.4286051671e+00 + -3.4091213744e+00 -3.3898581729e+00 -3.3708131612e+00 -3.3519803539e+00 + -3.3333550063e+00 -3.3149350336e+00 -3.2967176376e+00 -3.2786993931e+00 + -3.2608769319e+00 -3.2432473047e+00 -3.2258074328e+00 -3.2085543756e+00 + -3.1914851723e+00 -3.1745969313e+00 -3.1578868348e+00 -3.1413520321e+00 + -3.1249898488e+00 -3.1087974722e+00 -3.0927723525e+00 -3.0769118058e+00 + -3.0612133195e+00 -3.0456743901e+00 -3.0302925231e+00 -3.0150654059e+00 + -2.9999905670e+00 -2.9850658277e+00 -2.9702888691e+00 -2.9556575104e+00 + -2.9411696287e+00 -2.9268230327e+00 -2.9126157559e+00 -2.8985456889e+00 + -2.8846108983e+00 -2.8708094441e+00 -2.8571393626e+00 -2.8435988684e+00 + -2.8301860477e+00 -2.8168991529e+00 -2.8037364259e+00 -2.7906960741e+00 + -2.7777764806e+00 -2.7649759124e+00 -2.7522927600e+00 -2.7397254480e+00 + -2.7272723106e+00 -2.7149318899e+00 -2.7027026246e+00 -2.6905830037e+00 + -2.6785716161e+00 -2.6666669488e+00 -2.6548676326e+00 -2.6431722927e+00 + -2.6315794842e+00 -2.6200879473e+00 -2.6086963313e+00 -2.5974033107e+00 + -2.5862076702e+00 -2.5751081044e+00 -2.5641033962e+00 -2.5531923717e+00 + -2.5423737725e+00 -2.5316464779e+00 -2.5210093544e+00 -2.5104611917e+00 + -2.5000009534e+00 -2.4896275380e+00 -2.4793398090e+00 -2.4691367781e+00 + -2.4590173860e+00 -2.4489805659e+00 -2.4390253717e+00 -2.4291507877e+00 + -2.4193558087e+00 -2.4096395295e+00 -2.4000009790e+00 -2.3904392045e+00 + -2.3809533418e+00 -2.3715424643e+00 -2.3622056638e+00 -2.3529421172e+00 + -2.3437509424e+00 -2.3346312681e+00 -2.3255823123e+00 -2.3166032375e+00 + -2.3076932024e+00 -2.2988514657e+00 -2.2900772350e+00 -2.2813696923e+00 + -2.2727281369e+00 -2.2641518213e+00 -2.2556399455e+00 -2.2471918487e+00 + -2.2388068181e+00 -2.2304840973e+00 -2.2222230340e+00 -2.2140229585e+00 + -2.2058831591e+00 -2.1978029855e+00 -2.1897818114e+00 -2.1818189705e+00 + -2.1739138094e+00 -2.1660657444e+00 -2.1582741550e+00 -2.1505383815e+00 + -2.1428578806e+00 -2.1352320635e+00 -2.1276603059e+00 -2.1201420589e+00 + -2.1126767754e+00 -2.1052638772e+00 -2.0979027961e+00 -2.0905930287e+00 + -2.0833340398e+00 -2.0761252517e+00 -2.0689661903e+00 -2.0618563489e+00 + -2.0547951950e+00 -2.0477822263e+00 -2.0408169808e+00 -2.0338989721e+00 + -2.0270276714e+00 -2.0202026544e+00 -2.0134234586e+00 -2.0066896006e+00 + -2.0000006195e+00 -1.9933560982e+00 -1.9867555945e+00 -1.9801986303e+00 + -1.9736848092e+00 -1.9672137164e+00 -1.9607849206e+00 -1.9543979813e+00 + -1.9480525288e+00 -1.9417481611e+00 -1.9354844530e+00 -1.9292610168e+00 + -1.9230774878e+00 -1.9169334828e+00 -1.9108285853e+00 -1.9047624529e+00 + -1.8987347270e+00 -1.8927450389e+00 -1.8867929923e+00 -1.8808782739e+00 + -1.8750005352e+00 -1.8691594169e+00 -1.8633545580e+00 -1.8575856539e+00 + -1.8518523724e+00 -1.8461543650e+00 -1.8404913005e+00 -1.8348628839e+00 + -1.8292687983e+00 -1.8237087073e+00 -1.8181823042e+00 -1.8126893044e+00 + -1.8072294058e+00 -1.8018022853e+00 -1.7964076553e+00 -1.7910452428e+00 + -1.7857147599e+00 -1.7804158976e+00 -1.7751483827e+00 -1.7699119550e+00 + -1.7647063401e+00 -1.7595312438e+00 -1.7543864032e+00 -1.7492715716e+00 + -1.7441864873e+00 -1.7391308724e+00 -1.7341044696e+00 -1.7291070468e+00 + -1.7241383546e+00 -1.7191981320e+00 -1.7142861234e+00 -1.7094021123e+00 + -1.7045458608e+00 -1.6997171258e+00 -1.6949156500e+00 -1.6901412328e+00 + -1.6853936475e+00 -1.6806726673e+00 -1.6759780370e+00 -1.6713095656e+00 + -1.6666670390e+00 -1.6620502410e+00 -1.6574589359e+00 -1.6528929222e+00 + -1.6483520048e+00 -1.6438359775e+00 -1.6393446251e+00 -1.6348777327e+00 + -1.6304351244e+00 -1.6260166036e+00 -1.6216219739e+00 -1.6172510124e+00 + -1.6129035546e+00 -1.6085794156e+00 -1.6042784079e+00 -1.6000003305e+00 + -1.5957449988e+00 -1.5915122490e+00 -1.5873019024e+00 -1.5831137805e+00 + -1.5789476779e+00 -1.5748034501e+00 -1.5706809274e+00 -1.5665799392e+00 + -1.5625003035e+00 -1.5584418497e+00 -1.5544044308e+00 -1.5503878843e+00 + -1.5463920480e+00 -1.5424167375e+00 -1.5384618140e+00 -1.5345271270e+00 + -1.5306125219e+00 -1.5267178391e+00 -1.5228429085e+00 -1.5189876035e+00 + -1.5151517766e+00 -1.5113352800e+00 -1.5075379544e+00 -1.5037596533e+00 + -1.5000002496e+00 -1.4962596027e+00 -1.4925375717e+00 -1.4888339989e+00 + -1.4851487572e+00 -1.4814817202e+00 -1.4778327538e+00 -1.4742017237e+00 + -1.4705884751e+00 -1.4669928965e+00 -1.4634148631e+00 -1.4598542471e+00 + -1.4563109205e+00 -1.4527847329e+00 -1.4492755840e+00 -1.4457833525e+00 + -1.4423079162e+00 -1.4388491527e+00 -1.4354069188e+00 -1.4319811201e+00 + -1.4285716403e+00 -1.4251783631e+00 -1.4218011716e+00 -1.4184399288e+00 + -1.4150945452e+00 -1.4117649100e+00 -1.4084509123e+00 -1.4051524412e+00 + -1.4018693650e+00 -1.3986015977e+00 -1.3953490345e+00 -1.3921115697e+00 + -1.3888890974e+00 -1.3856814943e+00 -1.3824886729e+00 -1.3793105360e+00 + -1.3761469829e+00 -1.3729979127e+00 -1.3698632109e+00 -1.3667427861e+00 + -1.3636365496e+00 -1.3605444053e+00 -1.3574662571e+00 -1.3544020005e+00 + -1.3513515374e+00 -1.3483147884e+00 -1.3452916618e+00 -1.3422820661e+00 + -1.3392859077e+00 -1.3363030794e+00 -1.3333335118e+00 -1.3303771174e+00 + -1.3274338089e+00 -1.3245034991e+00 -1.3215860865e+00 -1.3186814951e+00 + -1.3157896473e+00 -1.3129104596e+00 -1.3100438489e+00 -1.3071897266e+00 + -1.3043480019e+00 -1.3015186093e+00 -1.2987014694e+00 -1.2958965028e+00 + -1.2931036300e+00 -1.2903227573e+00 -1.2875538183e+00 -1.2847967415e+00 + -1.2820514512e+00 -1.2793178717e+00 -1.2765959236e+00 -1.2738855213e+00 + -1.2711866068e+00 -1.2684991081e+00 -1.2658229531e+00 -1.2631580695e+00 + -1.2605043750e+00 -1.2578618017e+00 -1.2552302886e+00 -1.2526097668e+00 + -1.2500001676e+00 -1.2474014221e+00 -1.2448134468e+00 -1.2422361878e+00 + -1.2396695821e+00 -1.2371135640e+00 -1.2345680680e+00 -1.2320330270e+00 + -1.2295083618e+00 -1.2269940251e+00 -1.2244899544e+00 -1.2219960871e+00 + -1.2195123608e+00 -1.2170387087e+00 -1.2145750607e+00 -1.2121213696e+00 + -1.2096775757e+00 -1.2072436194e+00 -1.2048194411e+00 -1.2024049758e+00 + -1.2000001593e+00 -1.1976049455e+00 -1.1952192776e+00 -1.1928430989e+00 + -1.1904763523e+00 -1.1881189755e+00 -1.1857709079e+00 -1.1834321054e+00 + -1.1811025140e+00 -1.1787820793e+00 -1.1764707472e+00 -1.1741684590e+00 + -1.1718751548e+00 -1.1695907938e+00 -1.1673153243e+00 -1.1650486947e+00 + -1.1627908533e+00 -1.1605417459e+00 -1.1583013112e+00 -1.1560695124e+00 + -1.1538463003e+00 -1.1516316256e+00 -1.1494254390e+00 -1.1472276913e+00 + -1.1450383192e+00 -1.1428572890e+00 -1.1406845543e+00 -1.1385200682e+00 + -1.1363637837e+00 -1.1342156538e+00 -1.1320756216e+00 -1.1299436471e+00 + -1.1278196898e+00 -1.1257037052e+00 -1.1235956483e+00 -1.1214954744e+00 + -1.1194031341e+00 -1.1173185784e+00 -1.1152417742e+00 -1.1131726786e+00 + -1.1111112491e+00 -1.1090574429e+00 -1.1070112173e+00 -1.1049725173e+00 + -1.1029413129e+00 -1.1009175649e+00 -1.0989012324e+00 -1.0968922747e+00 + -1.0948906513e+00 -1.0928963159e+00 -1.0909092259e+00 -1.0889293506e+00 + -1.0869566511e+00 -1.0849910887e+00 -1.0830326245e+00 -1.0810812197e+00 + -1.0791368249e+00 -1.0771994109e+00 -1.0752689432e+00 -1.0733453847e+00 + -1.0714286984e+00 -1.0695188474e+00 -1.0676157927e+00 -1.0657194887e+00 + -1.0638299108e+00 -1.0619470239e+00 -1.0600707926e+00 -1.0582011817e+00 + -1.0563381559e+00 -1.0544816747e+00 -1.0526317013e+00 -1.0507882095e+00 + -1.0489511656e+00 -1.0471205359e+00 -1.0452962869e+00 -1.0434783850e+00 + -1.0416667891e+00 -1.0398614689e+00 -1.0380623972e+00 -1.0362695421e+00 + -1.0344828714e+00 -1.0327023530e+00 -1.0309279550e+00 -1.0291596370e+00 + -1.0273973724e+00 -1.0256411344e+00 -1.0238908924e+00 -1.0221466158e+00 + -1.0204082742e+00 -1.0186758368e+00 -1.0169492650e+00 -1.0152285339e+00 + -1.0135136176e+00 -1.0118044873e+00 -1.0101011135e+00 -1.0084034673e+00 + -1.0067115195e+00 -1.0050252338e+00 -1.0033445848e+00 -1.0016695488e+00 + -1.0000000982e+00 -9.9833620506e-01 + + + + 0.0000000000E+00 -7.7568112882E-02 -1.5498724243E-01 -2.3210801498E-01 + -3.0878028656E-01 -3.8485278363E-01 -4.6017277454E-01 -5.3458578125E-01 + -6.0793534073E-01 -6.8006282433E-01 -7.5080732330E-01 -8.2000560723E-01 + -8.8749216190E-01 -9.5309931153E-01 -1.0166574296E+00 -1.0779952417E+00 + -1.1369402214E+00 -1.1933190810E+00 -1.2469583555E+00 -1.2976850792E+00 + -1.3453275503E+00 -1.3897161816E+00 -1.4306844291E+00 -1.4680697943E+00 + -1.5017148892E+00 -1.5314685631E+00 -1.5571870658E+00 -1.5787352597E+00 + -1.5959878429E+00 -1.6088305931E+00 -1.6171616083E+00 -1.6208925336E+00 + -1.6199497555E+00 -1.6142755706E+00 -1.6038292855E+00 -1.5885882404E+00 + -1.5685487861E+00 -1.5437271298E+00 -1.5141600735E+00 -1.4799056830E+00 + -1.4410437678E+00 -1.3976762490E+00 -1.3499273790E+00 -1.2979438022E+00 + -1.2418944537E+00 -1.1819702893E+00 -1.1183838452E+00 -1.0513686241E+00 + -9.8117831107E-01 -9.0808582055E-01 -8.3238215206E-01 -7.5437511927E-01 + -6.7438790116E-01 -5.9275737897E-01 -5.0983254731E-01 -4.2597241649E-01 + -3.4154426602E-01 -2.5692133340E-01 -1.7248084841E-01 -8.8601477491E-02 + -5.6615295689E-03 7.5964195063E-02 1.5590581492E-01 2.3380152175E-01 + 3.0929971107E-01 3.8206078265E-01 4.5176018615E-01 5.1809032247E-01 + 5.8076235513E-01 6.3950798647E-01 6.9408236066E-01 7.4426483647E-01 + 7.8986067016E-01 8.3070243078E-01 8.6665103886E-01 8.9759699447E-01 + 9.2346125537E-01 9.4419535446E-01 9.5978191640E-01 9.7023476650E-01 + 9.7559881571E-01 9.7594972330E-01 9.7139334052E-01 9.6206494093E-01 + 9.4812824500E-01 9.2977424836E-01 9.0721986521E-01 8.8070640001E-01 + 8.5049786225E-01 8.1687915003E-01 7.8015412708E-01 7.4064280867E-01 + 6.9867772713E-01 6.5460065898E-01 6.0876000817E-01 5.6150816818E-01 + 5.1319950671E-01 4.6418605311E-01 4.1481632000E-01 3.6543238709E-01 + 3.1636746756E-01 2.6794359011E-01 2.2046978697E-01 1.7424035248E-01 + 1.2952962515E-01 8.6593892523E-02 4.5668710594E-02 6.9679208979E-03 + -2.9316209721E-02 -6.3020506698E-02 -9.4004690093E-02 -1.2215393254E-01 + -1.4737663928E-01 -1.6961235352E-01 -1.8882543345E-01 -2.0500488110E-01 + -2.1816174129E-01 -2.2833811648E-01 -2.3559652922E-01 -2.4002012867E-01 + -2.4171446660E-01 -2.4080682236E-01 -2.3743998798E-01 -2.3177254884E-01 + -2.2398066617E-01 -2.1425053202E-01 -2.0277950923E-01 -1.8977400637E-01 + -1.7544546369E-01 -1.6001246929E-01 -1.4369206549E-01 -1.2670267008E-01 + -1.0926427735E-01 -9.1585684095E-02 -7.3875576850E-02 -5.6334263225E-02 + -3.9146153256E-02 -2.2495908916E-02 -6.5435153726E-03 8.5605239042E-03 + 2.2674739342E-02 3.5689430752E-02 4.7494278860E-02 5.8012381595E-02 + 6.7178999891E-02 7.4944125699E-02 8.1291735754E-02 8.6202999980E-02 + 8.9703262385E-02 9.1816735200E-02 9.2597536643E-02 9.2113254489E-02 + 9.0445338965E-02 8.7698051710E-02 8.3978300235E-02 7.9417150674E-02 + 7.4144895303E-02 6.8307386257E-02 6.2051465743E-02 5.5528012377E-02 + 4.8888120552E-02 4.2278640050E-02 3.5840216946E-02 2.9704927992E-02 + 2.3987650934E-02 1.8793336169E-02 1.4196649715E-02 1.0262047003E-02 + 7.0124306856E-03 4.4588224424E-03 2.5661114128E-03 1.2821764937E-03 + 5.1515721395E-04 1.3819112535E-04 2.7251351286E-05 1.0867405846E-05 + -3.6451782770E-06 -1.3340201323E-06 -1.6625261390E-06 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 + + + 0.0000000000E+00 -1.0194882249E-02 -2.0405942846E-02 -3.0649828503E-02 + -4.0944114104E-02 -5.1307745504E-02 -6.1761457061E-02 -7.2328155947E-02 + -8.3033265677E-02 -9.3905021777E-02 -1.0497471309E-01 -1.1627686287E-01 + -1.2784934449E-01 -1.3973342752E-01 -1.5197375062E-01 -1.6461821862E-01 + -1.7771782234E-01 -1.9132638023E-01 -2.0550020237E-01 -2.2029767795E-01 + -2.3577878916E-01 -2.5200455344E-01 -2.6903640047E-01 -2.8693548714E-01 + -3.0576195894E-01 -3.2557415998E-01 -3.4642780927E-01 -3.6837513654E-01 + -3.9146400429E-01 -4.1573701169E-01 -4.4123059698E-01 -4.6797414784E-01 + -4.9598913476E-01 -5.2528826178E-01 -5.5587466866E-01 -5.8774118911E-01 + -6.2086964621E-01 -6.5523024530E-01 -6.9078104926E-01 -7.2746750872E-01 + -7.6522213452E-01 -8.0396425687E-01 -8.4359989820E-01 -8.8402176724E-01 + -9.2510937741E-01 -9.6672929286E-01 -1.0087355049E+00 -1.0509699393E+00 + -1.0932630908E+00 -1.1354347910E+00 -1.1772951097E+00 -1.2186453548E+00 + -1.2592792043E+00 -1.2989839981E+00 -1.3375419560E+00 -1.3747317966E+00 + -1.4103300576E+00 -1.4441128571E+00 -1.4758573658E+00 -1.5053437310E+00 + -1.5323563941E+00 -1.5566864419E+00 -1.5781326072E+00 -1.5965035863E+00 + -1.6116195582E+00 -1.6233134462E+00 -1.6314330878E+00 -1.6358425296E+00 + -1.6364232395E+00 -1.6330752797E+00 -1.6257192605E+00 -1.6142967296E+00 + -1.5987711985E+00 -1.5791289479E+00 -1.5553795418E+00 -1.5275564378E+00 + -1.4957173144E+00 -1.4599438618E+00 -1.4203418073E+00 -1.3770406341E+00 + -1.3301931172E+00 -1.2799746829E+00 -1.2265825933E+00 -1.1702349653E+00 + -1.1111696300E+00 -1.0496428434E+00 -9.8592785947E-01 -9.2031337823E-01 + -8.5310188296E-01 -7.8460789707E-01 -7.1515618238E-01 -6.4507861532E-01 + -5.7470999142E-01 -5.0438470355E-01 -4.3443461938E-01 -3.6518695508E-01 + -2.9696285429E-01 -2.3007337120E-01 -1.6481914363E-01 -1.0148795443E-01 + -4.0352882291E-02 1.8329428071E-02 7.4320012984E-02 1.2739881255E-01 + 1.7736904094E-01 2.2405489544E-01 2.6730363656E-01 3.0698607831E-01 + 3.4299615758E-01 3.7525697031E-01 4.0371497689E-01 4.2834186436E-01 + 4.4913244699E-01 4.6611061896E-01 4.7932369054E-01 4.8884192192E-01 + 4.9475635787E-01 4.9718478743E-01 4.9626328652E-01 4.9214617126E-01 + 4.8500670485E-01 4.7503531566E-01 4.6243533033E-01 4.4742321362E-01 + 4.3022674113E-01 4.1108120561E-01 3.9023071652E-01 3.6792159943E-01 + 3.4440286656E-01 3.1992840250E-01 2.9474377327E-01 2.6909419239E-01 + 2.4322358517E-01 2.1735907623E-01 1.9172645493E-01 1.6653942388E-01 + 1.4199207997E-01 1.1827782294E-01 9.5561009117E-02 7.3995133777E-02 + 5.3722822304E-02 3.4851894266E-02 1.7490372999E-02 1.7103012707E-03 + -1.2429161374E-02 -2.4884789778E-02 -3.5648403129E-02 -4.4709496401E-02 + -5.2102412579E-02 -5.7860629300E-02 -6.2047734810E-02 -6.4740666961E-02 + -6.6030440320E-02 -6.6029995542E-02 -6.4855547041E-02 -6.2645744938E-02 + -5.9539419773E-02 -5.5688985018E-02 -5.1248601858E-02 -4.6374937418E-02 + -4.1225241798E-02 -3.5951587184E-02 -3.0700087082E-02 -2.5607884051E-02 + -2.0795421432E-02 -1.6373200347E-02 -1.2422542282E-02 -9.0148050908E-03 + -6.1816449299E-03 -3.9433443742E-03 -2.2764002190E-03 -1.1412286606E-03 + -4.6063791798E-04 -1.2500409455E-04 -2.5882578909E-05 -1.0574833444E-05 + 2.9281306236E-06 1.2384991197E-06 1.5434828229E-06 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 + + + 0.0000000000E+00 2.9066480787E-03 1.1611893891E-02 2.6071637731E-02 + 4.6212367355E-02 7.1931146031E-02 1.0309560993E-01 1.3954398848E-01 + 1.8108516481E-01 2.2749879588E-01 2.7853551471E-01 3.3391723855E-01 + 3.9333760799E-01 4.5646258261E-01 5.2293121815E-01 5.9235664962E-01 + 6.6432730246E-01 7.3840835189E-01 8.1414344703E-01 8.9105671317E-01 + 9.6865503942E-01 1.0464306585E+00 1.1238640126E+00 1.2004269027E+00 + 1.2755859033E+00 1.3488060321E+00 1.4195546343E+00 1.4873054734E+00 + 1.5515429661E+00 1.6117665419E+00 1.6674950690E+00 1.7182713005E+00 + 1.7636662803E+00 1.8032836731E+00 1.8367639298E+00 1.8637882452E+00 + 1.8840822675E+00 1.8974194603E+00 1.9036240944E+00 1.9025738135E+00 + 1.8942017045E+00 1.8784978543E+00 1.8555103414E+00 1.8253456352E+00 + 1.7881683791E+00 1.7442005429E+00 1.6937199385E+00 1.6370581035E+00 + 1.5745976610E+00 1.5067687358E+00 1.4340452211E+00 1.3569404231E+00 + 1.2760020160E+00 1.1918064160E+00 1.1049538964E+00 1.0160613673E+00 + 9.2575734998E-01 8.3467460010E-01 7.4344453823E-01 6.5268979540E-01 + 5.6301947864E-01 4.7502081550E-01 3.8925582018E-01 3.0625386766E-01 + 2.2650724422E-01 1.5046748932E-01 7.8539944862E-02 1.1080962825E-02 + -5.1604454191E-02 -1.0926468271E-01 -1.6170387178E-01 -2.0878153104E-01 + -2.5041266276E-01 -2.8656703110E-01 -3.1726770611E-01 -3.4258899489E-01 + -3.6265355456E-01 -3.7762919993E-01 -3.8772519856E-01 -3.9318816576E-01 + -3.9429766074E-01 -3.9136158031E-01 -3.8471145201E-01 -3.7469773352E-01 + -3.6168522807E-01 -3.4604872728E-01 -3.2816899339E-01 -3.0842919160E-01 + -2.8721188071E-01 -2.6489671727E-01 -2.4185903332E-01 -2.1846483271E-01 + -1.9506159850E-01 -1.7197094221E-01 -1.4948529302E-01 -1.2786520940E-01 + -1.0733875677E-01 -8.8095454693E-02 -7.0289971989E-02 -5.4040605369E-02 + -3.9429767264E-02 -2.6505062115E-02 -1.5281164832E-02 -5.7416074630E-03 + 2.1603474044E-03 8.4957731860E-03 1.3357989886E-02 1.6859185849E-02 + 1.9127542817E-02 2.0302039978E-02 2.0528949960E-02 1.9958515175E-02 + 1.8743481839E-02 1.7030711340E-02 1.4960885094E-02 1.2666454443E-02 + 1.0272288328E-02 7.8829341896E-03 5.5906265491E-03 3.4740294105E-03 + 1.5939151368E-03 -9.3161460713E-06 -1.3081421905E-03 -2.2889247613E-03 + -2.9586723728E-03 -3.3330454040E-03 -3.4379043645E-03 -3.3116134947E-03 + -2.9958294325E-03 -2.5381165335E-03 -1.9860195600E-03 -1.3858601492E-03 + -7.8363399407E-04 -2.1414707411E-04 2.9060253303E-04 7.0836142024E-04 + 1.0302894383E-03 1.2507264382E-03 1.3810145934E-03 1.4366075596E-03 + 1.5241743394E-03 1.2970781138E-03 4.2053636224E-04 -8.7628403596E-05 + -3.2926744951E-05 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 + + + 0.0000000000E+00 -1.2766802783E-03 -5.0740737006E-03 -1.1294943109E-02 + -1.9779563399E-02 -3.0309179983E-02 -4.2610757943E-02 -5.6362931200E-02 + -7.1203037941E-02 -8.6735107545E-02 -1.0253864565E-01 -1.1817804821E-01 + -1.3321246274E-01 -1.4720590534E-01 -1.5973743639E-01 -1.7041119538E-01 + -1.7886609650E-01 -1.8478499204E-01 -1.8790311870E-01 -1.8801565373E-01 + -1.8498422559E-01 -1.7874223440E-01 -1.6929887167E-01 -1.5674173580E-01 + -1.4123798444E-01 -1.2303395256E-01 -1.0245327708E-01 -7.9893448530E-02 + -5.5820936769E-02 -3.0764870149E-02 -5.3094015651E-03 1.9915127182E-02 + 4.4242044895E-02 6.6979204402E-02 8.7420468652E-02 1.0485767653E-01 + 1.1859312835E-01 1.2795196636E-01 1.3229442739E-01 1.3102807320E-01 + 1.2361910717E-01 1.0960310900E-01 8.8594823255E-02 6.0296803989E-02 + 2.4506768674E-02 -1.8876479228E-02 -6.9848676444E-02 -1.2829736420E-01 + -1.9400080173E-01 -2.6662869894E-01 -3.4574469394E-01 -4.3081033028E-01 + -5.2119087492E-01 -6.1616312017E-01 -7.1492302352E-01 -8.1659752253E-01 + -9.2025399413E-01 -1.0249140510E+00 -1.1295650232E+00 -1.2331754574E+00 + -1.3347057629E+00 -1.4331269493E+00 -1.5274288997E+00 -1.6166382233E+00 + -1.6998298005E+00 -1.7761364443E+00 -1.8447637570E+00 -1.9049985830E+00 + -1.9562164998E+00 -1.9978886426E+00 -2.0295909423E+00 -2.0510048795E+00 + -2.0619206025E+00 -2.0622380206E+00 -2.0519659827E+00 -2.0312206144E+00 + -2.0002216658E+00 -1.9592872972E+00 -1.9088286742E+00 -1.8493434681E+00 + -1.7814088052E+00 -1.7056739411E+00 -1.6228529519E+00 -1.5337177577E+00 + -1.4390918021E+00 -1.3398447235E+00 -1.2368883551E+00 -1.1311743949E+00 + -1.0236940779E+00 -9.1548062423E-01 -8.0761509710E-01 -7.0119670237E-01 + -5.9727815537E-01 -4.9682183402E-01 -4.0069124431E-01 -3.0964407985E-01 + -2.2433084819E-01 -1.4527813448E-01 -7.2899716146E-02 -7.4927811408E-03 + 5.0760037837E-02 1.0178689731E-01 1.4562073176E-01 1.8239349988E-01 + 2.1233192881E-01 2.3574056152E-01 2.5299461993E-01 2.6452955914E-01 + 2.7083248213E-01 2.7242382097E-01 2.6984883103E-01 2.6366650139E-01 + 2.5444577185E-01 2.4273703310E-01 2.2907310505E-01 2.1396272120E-01 + 1.9789327721E-01 1.8128778726E-01 1.6453274168E-01 1.4797381904E-01 + 1.3190123658E-01 1.1654063300E-01 1.0207835221E-01 8.8658234615E-02 + 7.6355340897E-02 6.5217241440E-02 5.5259676765E-02 4.6450866362E-02 + 3.8745718040E-02 3.2078736044E-02 2.6369386665E-02 2.1535137268E-02 + 1.7487014656E-02 1.4147533461E-02 1.1439231352E-02 9.2948926268E-03 + 7.6571896883E-03 6.4683732706E-03 5.6757938448E-03 5.2095095489E-03 + 5.2694616958E-03 4.4647572585E-03 1.4398345034E-03 -3.0204397696E-04 + -1.1349430762E-04 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 + + + -9.4156269699E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 -4.3831848418E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 -3.3556427390E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 -2.7652208407E-01 + + + + + + 0.0000000000E+00 3.0415688691E-03 1.2151978917E-02 2.7288426879E-02 + 4.8379861526E-02 7.5327412699E-02 1.0800498738E-01 1.4626002824E-01 + 1.8991442900E-01 2.3876559957E-01 2.9258767305E-01 3.5113284544E-01 + 4.1413283819E-01 4.8130047251E-01 5.5233134408E-01 6.2690558567E-01 + 7.0468970489E-01 7.8533848388E-01 8.6849692727E-01 9.5380224473E-01 + 1.0408858538E+00 1.1293753904E+00 1.2188967112E+00 1.3090758769E+00 + 1.3995411011E+00 1.4899246542E+00 1.5798647085E+00 1.6690071143E+00 + 1.7570070963E+00 1.8435308594E+00 1.9282570969E+00 2.0108783907E+00 + 2.0911025002E+00 2.1686535273E+00 2.2432729600E+00 2.3147205903E+00 + 2.3827752900E+00 2.4472356635E+00 2.5079205725E+00 2.5646695005E+00 + 2.6173428134E+00 2.6658218792E+00 2.7100090586E+00 2.7498275741E+00 + 2.7852212616E+00 2.8161542079E+00 2.8426102829E+00 2.8645925720E+00 + 2.8821227497E+00 2.8952402441E+00 2.9040014875E+00 2.9084790451E+00 + 2.9087606224E+00 2.9049479955E+00 2.8971561922E+00 2.8855120902E+00 + 2.8701536321E+00 2.8512284484E+00 2.8288929429E+00 2.8033109141E+00 + 2.7746527947E+00 2.7430940280E+00 2.7088145457E+00 2.6719972634E+00 + 2.6328271836E+00 2.5914906119E+00 2.5481738674E+00 2.5030625091E+00 + 2.4563405746E+00 2.4081898121E+00 2.3587886152E+00 2.3083116229E+00 + 2.2569290340E+00 2.2048060162E+00 2.1521022198E+00 2.0989712711E+00 + 2.0455603737E+00 1.9920100564E+00 1.9384538608E+00 1.8850181234E+00 + 1.8318218112E+00 1.7789764101E+00 1.7265858620E+00 1.6747465488E+00 + 1.6235473200E+00 1.5730695607E+00 1.5233872977E+00 1.4745673387E+00 + 1.4266694441E+00 1.3797465251E+00 1.3338448671E+00 1.2890043744E+00 + 1.2452588318E+00 1.2026361825E+00 1.1611588163E+00 1.1208438669E+00 + 1.0817033235E+00 1.0437448828E+00 1.0069717741E+00 9.7138321116E-01 + 9.3697469855E-01 9.0373833006E-01 8.7166298714E-01 8.4073455925E-01 + 8.1093701315E-01 7.8225175506E-01 7.5465817415E-01 7.2813379835E-01 + 7.0265421686E-01 6.7819483548E-01 6.5472945629E-01 6.3223095464E-01 + 6.1067081467E-01 5.9002121467E-01 5.7025371443E-01 5.5133941858E-01 + 5.3324840941E-01 5.1595268299E-01 4.9942362809E-01 4.8363228547E-01 + 4.6855030159E-01 4.5415075369E-01 4.4040632945E-01 4.2728942160E-01 + 4.1477520474E-01 4.0283835390E-01 3.9145298842E-01 3.8059649564E-01 + 3.7024575718E-01 3.6037713858E-01 3.5097043469E-01 3.4200463563E-01 + 3.3345892212E-01 3.2531531439E-01 3.1755482217E-01 3.1015977495E-01 + 3.0311418725E-01 2.9640096230E-01 2.9000572036E-01 2.8391389275E-01 + 2.7811104108E-01 2.7258512101E-01 2.6732275533E-01 2.6231289263E-01 + 2.5754433062E-01 2.5300615948E-01 2.4868930669E-01 2.4458332187E-01 + 2.4068044353E-01 2.3697169034E-01 2.3344954831E-01 2.3010664934E-01 + 2.2693573692E-01 2.2393081098E-01 2.2108492158E-01 2.1839310542E-01 + 2.1584898900E-01 2.1344814151E-01 2.1118501082E-01 2.0905539572E-01 + 2.0705450035E-01 2.0517834079E-01 2.0342272717E-01 2.0178388609E-01 + 2.0025809905E-01 1.9884179701E-01 1.9753161800E-01 1.9632419054E-01 + 1.9521641473E-01 1.9420511024E-01 1.9328736369E-01 1.9246018152E-01 + 1.9172077787E-01 1.9106634576E-01 1.9049418121E-01 1.9000166972E-01 + 1.8958615218E-01 1.8924521232E-01 1.8897620344E-01 1.8877689062E-01 + 1.8864460981E-01 1.8857728097E-01 1.8857219350E-01 1.8862738763E-01 + 1.8874017578E-01 1.8890859841E-01 1.8913012642E-01 1.8940269338E-01 + 1.8972399615E-01 1.9009184727E-01 1.9050421540E-01 1.9095878234E-01 + 1.9145381279E-01 1.9198690021E-01 1.9255648037E-01 1.9316039485E-01 + 1.9379693642E-01 1.9446433017E-01 1.9516070745E-01 1.9588466926E-01 + 1.9663423407E-01 1.9740819737E-01 1.9820485803E-01 1.9902282196E-01 + 1.9986078801E-01 2.0071718064E-01 2.0159097911E-01 2.0248070389E-01 + 2.0338528007E-01 2.0430356079E-01 2.0523427146E-01 2.0617654663E-01 + 2.0712914254E-01 2.0809117454E-01 2.0906169026E-01 2.1003960441E-01 + 2.1102420555E-01 2.1201447431E-01 2.1300962677E-01 2.1400892197E-01 + 2.1501138799E-01 2.1601645888E-01 2.1702332525E-01 2.1803124611E-01 + 2.1903965352E-01 2.2004775663E-01 2.2105500774E-01 2.2206082762E-01 + 2.2306448888E-01 2.2406556753E-01 2.2506346522E-01 2.2605760461E-01 + 2.2704757316E-01 2.2803279903E-01 2.2901282931E-01 2.2998726454E-01 + 2.3095556709E-01 2.3191738343E-01 2.3287233130E-01 2.3381991251E-01 + 2.3475985084E-01 2.3569177530E-01 2.3661526152E-01 2.3753006086E-01 + 2.3843583107E-01 2.3933221385E-01 2.4021898239E-01 2.4109582742E-01 + 2.4196244396E-01 2.4281862821E-01 2.4366410489E-01 2.4449861163E-01 + 2.4532196850E-01 2.4613393437E-01 2.4693428083E-01 2.4772285220E-01 + 2.4849944097E-01 2.4926384596E-01 2.5001593554E-01 2.5075553475E-01 + 2.5148246463E-01 2.5219661684E-01 2.5289784742E-01 2.5358599623E-01 + 2.5426097693E-01 2.5492267454E-01 2.5557094581E-01 2.5620572461E-01 + 2.5682691775E-01 2.5743441257E-01 2.5802814664E-01 2.5860805146E-01 + 2.5917404261E-01 2.5972606178E-01 2.6026406240E-01 2.6078798553E-01 + 2.6129777854E-01 2.6179341374E-01 2.6227485441E-01 2.6274205625E-01 + 2.6319500717E-01 2.6363368632E-01 2.6405806920E-01 2.6446814791E-01 + 2.6486391801E-01 2.6524537346E-01 2.6561251245E-01 2.6596534387E-01 + 2.6630387611E-01 2.6662811863E-01 2.6693808943E-01 2.6723380819E-01 + 2.6751529802E-01 2.6778258505E-01 2.6803569829E-01 2.6827467048E-01 + 2.6849954094E-01 2.6871034476E-01 2.6890712327E-01 2.6908992399E-01 + 2.6925879503E-01 2.6941378207E-01 2.6955493762E-01 2.6968232463E-01 + 2.6979599394E-01 2.6989600333E-01 2.6998241775E-01 2.7005530807E-01 + 2.7011473105E-01 2.7016075488E-01 2.7019345811E-01 2.7021291174E-01 + 2.7021918302E-01 2.7021234822E-01 2.7019249878E-01 2.7015970346E-01 + 2.7011404000E-01 2.7005559313E-01 2.6998446215E-01 2.6990071628E-01 + 2.6980444200E-01 2.6969573391E-01 2.6957469076E-01 2.6944138903E-01 + 2.6929592069E-01 2.6913838893E-01 2.6896889168E-01 2.6878751188E-01 + 2.6859434618E-01 2.6838950490E-01 2.6817308557E-01 2.6794517651E-01 + 2.6770587827E-01 2.6745530671E-01 2.6719355998E-01 2.6692073043E-01 + 2.6663692179E-01 2.6634225373E-01 2.6603682653E-01 2.6572073504E-01 + 2.6539408550E-01 2.6505699958E-01 2.6470958153E-01 2.6435192709E-01 + 2.6398414437E-01 2.6360635518E-01 2.6321866982E-01 2.6282118328E-01 + 2.6241400492E-01 2.6199725477E-01 2.6157105146E-01 2.6113548757E-01 + 2.6069067320E-01 2.6023672461E-01 2.5977377103E-01 2.5930190116E-01 + 2.5882122532E-01 2.5833185590E-01 2.5783392938E-01 2.5732753475E-01 + 2.5681278029E-01 2.5628977800E-01 2.5575865752E-01 2.5521952295E-01 + 2.5467247490E-01 2.5411762459E-01 2.5355509256E-01 2.5298500070E-01 + 2.5240744063E-01 2.5182252238E-01 2.5123035758E-01 2.5063108149E-01 + 2.5002478223E-01 2.4941156627E-01 2.4879154356E-01 2.4816483725E-01 + 2.4753155805E-01 2.4689179993E-01 2.4624567091E-01 2.4559328030E-01 + 2.4493476189E-01 2.4427019811E-01 2.4359969435E-01 2.4292335756E-01 + 2.4224130632E-01 2.4155365024E-01 2.4086047929E-01 2.4016189785E-01 + 2.3945801134E-01 2.3874894543E-01 2.3803478714E-01 2.3731563409E-01 + 2.3659158881E-01 2.3586275874E-01 2.3512926188E-01 2.3439117846E-01 + 2.3364860799E-01 2.3290165069E-01 2.3215041787E-01 2.3139501051E-01 + 2.3063551292E-01 2.2987202207E-01 2.2910463553E-01 2.2833346633E-01 + 2.2755860157E-01 2.2678012810E-01 2.2599813999E-01 2.2521273185E-01 + 2.2442401641E-01 2.2363207016E-01 2.2283698074E-01 2.2203883909E-01 + 2.2123773653E-01 2.2043378374E-01 2.1962704965E-01 2.1881762105E-01 + 2.1800558546E-01 2.1719103131E-01 2.1637406387E-01 2.1555474909E-01 + 2.1473317076E-01 2.1390941284E-01 2.1308355991E-01 2.1225571260E-01 + 2.1142593426E-01 2.1059430504E-01 2.0976090513E-01 2.0892581478E-01 + 2.0808912997E-01 2.0725091239E-01 2.0641123781E-01 2.0557018255E-01 + 2.0472782288E-01 2.0388424772E-01 2.0303952028E-01 2.0219371059E-01 + 2.0134689102E-01 2.0049913380E-01 1.9965052010E-01 1.9880111577E-01 + 1.9795098459E-01 1.9710019496E-01 1.9624881505E-01 1.9539691782E-01 + 1.9454457232E-01 1.9369183594E-01 1.9283877308E-01 1.9198544785E-01 + 1.9113192506E-01 1.9027827660E-01 1.8942455378E-01 1.8857081705E-01 + 1.8771712650E-01 1.8686354182E-01 1.8601012881E-01 1.8515694118E-01 + 1.8430403294E-01 1.8345146022E-01 1.8259927869E-01 1.8174754563E-01 + 1.8089631859E-01 1.8004564516E-01 1.7919557762E-01 1.7834616772E-01 + 1.7749746673E-01 1.7664952954E-01 1.7580240262E-01 1.7495613329E-01 + 1.7411076952E-01 1.7326635875E-01 1.7242294853E-01 1.7158058705E-01 + 1.7073931652E-01 1.6989918133E-01 1.6906022523E-01 1.6822249133E-01 + 1.6738602300E-01 1.6655086174E-01 1.6571704783E-01 1.6488462152E-01 + 1.6405362242E-01 1.6322408946E-01 1.6239606045E-01 1.6156957341E-01 + 1.6074466538E-01 1.5992137266E-01 1.5909973083E-01 1.5827977450E-01 + 1.5746153575E-01 1.5664505081E-01 1.5583035284E-01 1.5501747430E-01 + 1.5420644688E-01 1.5339730038E-01 1.5259006281E-01 1.5178476798E-01 + 1.5098144541E-01 1.5018012390E-01 1.4938083144E-01 1.4858359301E-01 + 1.4778843310E-01 1.4699538314E-01 1.4620446919E-01 1.4541571658E-01 + 1.4462914982E-01 1.4384478949E-01 1.4306265627E-01 1.4228277961E-01 + 1.4150518235E-01 1.4072988653E-01 1.3995691340E-01 1.3918628014E-01 + 1.3841800224E-01 1.3765210810E-01 1.3688861753E-01 1.3612754956E-01 + 1.3536892238E-01 1.3461275118E-01 1.3385904404E-01 1.3310782962E-01 + 1.3235912496E-01 1.3161294626E-01 1.3086930890E-01 1.3012822745E-01 + 1.2938970114E-01 1.2865375888E-01 1.2792041571E-01 1.2718968527E-01 + 1.2646158037E-01 1.2573611301E-01 1.2501328254E-01 1.2429310725E-01 + 1.2357560469E-01 1.2286078618E-01 1.2214866221E-01 1.2143924245E-01 + 1.2073252930E-01 1.2002852525E-01 1.1932725301E-01 1.1862872179E-01 + 1.1793294000E-01 1.1723991523E-01 1.1654965424E-01 1.1586214410E-01 + 1.1517740930E-01 1.1449545923E-01 1.1381630044E-01 1.1313993867E-01 + 1.1246637886E-01 1.1179561597E-01 1.1112764988E-01 1.1046249995E-01 + 1.0980017109E-01 1.0914066745E-01 1.0848399238E-01 1.0783014842E-01 + 1.0717911737E-01 1.0653091807E-01 1.0588555856E-01 1.0524304159E-01 + 1.0460336915E-01 1.0396654240E-01 1.0333255768E-01 1.0270139719E-01 + 1.0207308500E-01 1.0144762267E-01 1.0082501102E-01 1.0020525010E-01 + 9.9588339177E-02 9.8974265328E-02 9.8363022782E-02 9.7754628250E-02 + 9.7149081583E-02 9.6546381889E-02 9.5946527522E-02 9.5349516086E-02 + 9.4755327333E-02 9.4163964447E-02 9.3575438381E-02 9.2989747485E-02 + 9.2406889385E-02 9.1826860975E-02 9.1249658416E-02 9.0675256466E-02 + 9.0103663213E-02 8.9534885962E-02 8.8968921779E-02 8.8405767024E-02 + 8.7845417348E-02 8.7287867690E-02 8.6733090454E-02 8.6181093799E-02 + 8.5631883902E-02 8.5085456744E-02 8.4541807624E-02 8.4000931157E-02 + 8.3462821266E-02 8.2927450940E-02 8.2394822920E-02 8.1864945075E-02 + 8.1337812493E-02 8.0813419604E-02 + + diff --git a/tests/PP_ORB/nep_hfo2.txt b/tests/PP_ORB/nep_hfo2.txt new file mode 100644 index 0000000000..9fdcc26c3a --- /dev/null +++ b/tests/PP_ORB/nep_hfo2.txt @@ -0,0 +1,2478 @@ +nep4_zbl 2 O Hf +zbl 0.75 1.5 +cutoff 8 4 250 44 +n_max 4 4 +basis_size 12 12 +l_max 4 2 0 +ANN 30 0 + -1.5533842e+00 + -1.3961171e+00 + 3.3405685e+00 + -1.6875142e+00 + 3.5519030e+00 + -1.1462833e+00 + 1.0116381e-01 + 6.7952715e-02 + 3.5003048e-01 + -1.7030668e-01 + -7.1256649e-01 + -1.5600224e+00 + 5.0420427e-01 + 1.5662048e+00 + 6.6071171e-01 + -5.0812531e-01 + -3.2572895e-01 + 7.4311060e-01 + -1.1954777e+00 + 1.3949803e+00 + -6.0012668e-01 + -5.0848001e-01 + 6.6789776e-01 + -7.8436345e-01 + 2.7210480e-03 + 2.1846552e-01 + -4.2398471e-02 + 1.4517822e-02 + -7.2196305e-02 + -5.3533882e-01 + -3.4191072e-02 + -7.7979095e-02 + -1.4120042e+00 + 2.0508022e+00 + -4.1690224e-01 + -4.8395681e-01 + 1.1797905e-01 + -1.6266538e-01 + 5.0959129e-02 + -9.3200477e-03 + -1.4279183e+00 + 1.0652579e-01 + -2.8765094e-01 + -6.9196773e-01 + -1.1719827e-03 + -5.6879723e-01 + -3.8398403e-01 + -9.8231041e-01 + -1.0163052e+00 + -1.1246209e+00 + -1.4233644e+00 + -9.7076178e-01 + -8.9364243e-01 + -3.2399303e-01 + 1.4149309e-02 + 2.2001252e-02 + 1.6074455e-01 + 7.7645682e-02 + 1.3389353e-02 + 9.1075655e-03 + 1.9938855e-02 + -7.9607405e-02 + -6.7291018e-03 + 6.8432584e-02 + -7.3835095e-03 + -2.2786809e-02 + -3.5803532e-03 + 4.8761861e-03 + -6.3879490e-03 + 2.2497166e-02 + 3.4890608e-03 + 1.8671799e-02 + 3.1707793e-02 + -4.8870429e-02 + -1.9023570e-05 + -6.1419070e-02 + 2.2573497e-03 + 1.3801302e-02 + 2.0430773e-02 + 2.1373753e-02 + -2.5856828e-02 + -7.4794115e-03 + -7.1273562e-03 + -8.6361952e-03 + 1.0977860e-02 + 2.1528669e-02 + 6.0094874e-03 + -3.0552249e-02 + -1.4774554e-02 + -6.2929722e-03 + -6.1135310e-01 + 1.9887526e-02 + -3.0682695e-01 + 9.1953224e-01 + -6.4547473e-01 + -3.4369953e-02 + 3.0126595e-01 + -1.8165929e-02 + 7.5616993e-02 + -3.8231429e-02 + -1.9687304e-01 + -6.8616755e-03 + -3.3972260e-01 + -1.8103829e-01 + -1.3639644e-01 + -1.1910355e+00 + -2.6926747e-01 + 5.1797139e-03 + -8.3521521e-01 + -3.5952756e-03 + 7.5987077e-01 + -6.2408593e-02 + 4.4019932e-01 + -2.3265010e-02 + 1.2457320e-02 + 3.4785651e-02 + -9.3590695e-01 + 5.8341045e-02 + -3.4124655e-01 + -6.5846322e-03 + 9.5071286e-01 + -8.8140690e-01 + -1.0541197e+00 + -3.9390899e-02 + -6.7397636e-01 + 4.3877777e-01 + 4.7048733e-01 + -7.7633411e-01 + 8.0214584e-01 + -3.2974353e-01 + 3.1883493e-01 + -1.5757373e-01 + -8.1808084e-01 + 1.8354802e-01 + -2.4627013e+00 + -2.5718105e-01 + 1.0639265e+00 + 1.5450338e-01 + -9.5224369e-01 + -8.6650759e-01 + -8.8831031e-01 + 5.5819947e-01 + -1.5909443e+00 + -1.7562282e-01 + -1.7365746e-01 + 8.1663117e-02 + 8.4073430e-01 + 7.1579200e-01 + -4.2814305e-01 + -2.2796454e-02 + 4.6642068e-01 + -5.4779783e-02 + -4.4556838e-01 + -6.9428071e-02 + -3.1187713e-02 + 1.5238337e-01 + -9.2398334e-01 + 1.8374674e-01 + 7.3650938e-01 + 4.0814039e-01 + 5.4446990e-03 + -4.8339632e-01 + 9.6483761e-01 + 2.3060614e-01 + 2.7252537e-01 + -3.2059692e-02 + 3.4896791e-01 + 2.8511392e-02 + 6.9042408e-01 + -2.5642964e-01 + 3.8858619e-01 + 6.6770041e-01 + -1.3871707e-02 + 1.7523861e-01 + 4.2593192e-02 + 6.6747911e-02 + -1.1678466e+00 + -6.4021642e-03 + 3.1031793e-01 + -1.3201442e-01 + 6.8169339e-03 + 4.7573936e-03 + 7.7245603e-03 + -4.7511641e-02 + -4.7533914e-02 + -2.7271273e-02 + 2.5843592e-02 + -1.5981583e-02 + 1.4571676e-02 + -3.6891356e-02 + -6.1368778e-02 + 3.7512898e-03 + -2.8101203e-03 + -1.1170986e-01 + 1.6563376e-03 + -5.7168992e-04 + 2.1270134e-02 + -1.9786317e-02 + 4.7334418e-02 + 5.0790653e-02 + -8.7428745e-03 + -5.7358123e-02 + -5.6691788e-02 + 4.8337746e-02 + 3.3187447e-04 + -3.1732582e-04 + -7.9288892e-02 + 5.2161511e-02 + 3.8048409e-02 + 4.4954855e-02 + 1.0561645e-02 + -2.9749824e-02 + 2.1458112e-02 + 1.0856581e-02 + -3.1864222e-02 + 9.0588629e-03 + -3.3456866e-02 + -1.2551477e-03 + -9.4641298e-03 + -6.6519424e-02 + 3.3262737e-02 + 2.9121663e-02 + 5.0257418e-02 + -2.2861289e-02 + 1.6314587e-02 + 1.7113203e-02 + -4.6972863e-02 + -2.7230904e-02 + -9.1398065e-04 + 1.0013446e-02 + -2.0375008e-02 + 4.1204547e-03 + 2.5824877e-02 + -1.4079484e-02 + 2.7369779e-02 + -6.0363659e-03 + 7.7950419e-03 + 1.3294880e-02 + -7.2736745e-03 + -8.5742353e-03 + 7.9887822e-02 + 3.4030172e-01 + 5.2396590e-01 + 1.0425525e-01 + -9.9720396e-03 + -4.1197628e-01 + 4.2480439e-01 + -5.7194126e-01 + 2.9740049e-02 + 1.0275854e-02 + 6.1146196e-02 + 1.6517022e+00 + -1.1662266e-02 + -2.4133386e-01 + -2.1769509e-02 + -2.1765687e-01 + 6.6210961e-01 + -6.7576736e-01 + 1.9757186e-01 + -6.4739192e-01 + -3.5957009e-01 + -7.3746997e-01 + -2.7454838e-01 + -5.6521393e-02 + -1.9129170e-01 + -6.7371383e-02 + -7.2697872e-01 + 4.8399229e-02 + 1.0489986e-01 + 1.5167656e-03 + -3.3318326e+00 + -6.3909218e-02 + -2.7729642e+00 + 6.2115723e-01 + -1.4336593e+00 + 6.3389987e-01 + 3.7841506e-02 + 9.5411837e-01 + -1.5336981e-02 + 6.1036491e-01 + 3.6111861e-01 + -2.3854239e+00 + -1.5737851e-03 + -5.4196215e-01 + 7.1373042e-03 + -4.2057219e-01 + -2.3335574e+00 + 1.3107912e-01 + -1.1584100e+00 + 5.9712154e-01 + -4.7217035e-01 + -2.2535858e+00 + -6.9284620e-04 + 1.1485407e-02 + 3.5460096e-02 + -3.0010408e-03 + 1.9983162e-01 + 2.1650704e-02 + -4.5966753e-01 + -3.5841549e-03 + 1.7601755e-02 + 8.9710448e-03 + -2.6406469e-03 + 1.4104334e-02 + -1.4141700e-02 + -9.3275225e-03 + -4.5630774e-03 + 4.4038616e-02 + -1.5087425e-02 + 1.4408885e-02 + -3.9309398e-03 + -1.8914385e-02 + -6.2610600e-03 + 7.8814300e-03 + -2.7512060e-02 + -1.5888473e-02 + -4.5742616e-03 + 4.6605617e-02 + -3.1424817e-02 + -1.0833234e-03 + 2.2012154e-02 + -5.7683703e-02 + 1.1295796e-02 + 2.9231109e-02 + -8.2675070e-03 + -1.2276430e-02 + 1.5593769e-03 + -6.1631473e-03 + -1.7404020e-02 + -1.5782848e-02 + -1.7578206e-03 + 7.9035247e-03 + 2.5656173e-02 + 1.2455444e-02 + -1.6574979e-02 + 2.7992427e-02 + -6.6810567e-03 + 1.2519993e-02 + -4.4025976e-02 + 5.2069917e-02 + -1.0799933e-02 + -2.0434327e-02 + 1.1730954e-03 + 1.2923595e-02 + -1.8531928e-02 + -6.2942185e-04 + 1.9058460e-02 + 6.1256322e-03 + 3.5805248e-02 + -6.6607958e-03 + 1.8041123e-02 + 2.4447843e-02 + -1.4436842e-02 + -8.4400214e-03 + -3.4760563e-03 + -2.4753269e-02 + 3.0526537e-02 + -3.4755066e-02 + 5.4855128e-03 + -4.1933022e-02 + 7.8874350e-01 + 2.9807994e-01 + 8.8287580e-01 + -4.2366959e-02 + -8.0364215e-01 + -1.2714040e+00 + 4.9528247e-01 + -1.1485488e+00 + 9.4109491e-02 + 3.6265265e-02 + -1.2928163e+00 + -2.0973849e-01 + -1.5770923e+00 + -8.1361520e-01 + 7.0091558e-04 + -1.0796026e+00 + -4.0938309e-01 + -2.4113749e-01 + -1.8153520e-01 + 6.0984578e-02 + 6.0962047e-02 + 4.6867672e-01 + -4.9281827e-01 + -4.8094270e-01 + -1.0780424e-01 + 3.2565493e-02 + 8.9389510e-02 + 8.6869020e-03 + 4.8171725e-02 + 6.9392331e-02 + -1.0614427e+00 + -6.2720943e-04 + 3.0752342e+00 + -1.2334282e+00 + 3.6690407e+00 + -1.7859516e+00 + -2.5564829e-01 + 5.8958769e-01 + 6.2757216e-02 + -8.1405163e-01 + -1.3294373e+00 + -4.7609419e-02 + 7.8440917e-01 + -1.6076301e+00 + -7.0976769e-03 + 4.0848342e-01 + -1.4772035e+00 + -1.4631538e+00 + -7.6802534e-01 + 7.7424347e-02 + 1.2938232e+00 + -1.7059858e+00 + -5.7154906e-01 + -8.2183763e-02 + -2.8921232e-01 + -1.2834789e-01 + -8.5807055e-02 + -1.1391416e-01 + 3.9016437e-02 + 3.1840857e-02 + 1.9572571e-01 + 7.2030306e-01 + 2.6134950e-01 + 3.3105952e-01 + -2.5622594e-01 + -4.2617300e-01 + 7.9108471e-01 + -1.0580621e-02 + -2.6168626e-02 + -4.5393223e-01 + -2.0176649e+00 + 1.5474540e+00 + -6.1232084e-01 + 8.2194257e-01 + -5.2398986e-01 + 5.2110428e-01 + 9.9708331e-01 + -1.1019132e+00 + -3.1911219e-03 + -2.9894230e-01 + 6.1271101e-01 + 5.7637948e-01 + 1.8220620e-01 + -2.1431355e-02 + 1.9254673e-02 + 9.4930515e-02 + -8.6608046e-01 + 9.0330578e-02 + 4.7849634e-01 + 4.1637458e-02 + -5.6670797e-01 + 5.0426185e-01 + 1.1017716e+00 + -2.8527301e-04 + -7.7269107e-01 + 1.5950040e+00 + -1.5582093e-02 + -7.8770056e-02 + 6.2490231e-01 + -1.2830810e-01 + 1.6146777e+00 + 4.1480798e-02 + 6.3045788e-01 + -1.5397651e-02 + -6.7336589e-01 + 1.1574367e-01 + 3.8441315e-01 + -1.9876043e-01 + -7.4991804e-01 + 9.3885452e-02 + 5.3045481e-01 + -3.6137089e-01 + 1.5990585e-01 + 3.9098004e-01 + -5.8435488e-01 + -4.0068451e-01 + 4.6165392e-01 + 3.0549431e-01 + -5.9603624e-02 + -5.3087464e-03 + -1.1701569e-02 + -1.7934341e-02 + -4.3717593e-02 + 1.7014343e-02 + -5.1322237e-02 + 1.5941918e-02 + 2.6800504e-02 + -5.1344754e-03 + 2.2037320e-02 + 2.1565268e-02 + 5.0122973e-02 + -2.4583220e-02 + 2.7090648e-02 + 2.7539188e-02 + 9.0609929e-03 + -9.0884557e-04 + -8.2189380e-04 + 2.4118058e-02 + 3.6425779e-03 + 9.5060736e-02 + -1.3310982e-02 + 1.5463824e-02 + -1.7957035e-02 + -1.8245881e-02 + -3.5140985e-03 + 2.6563164e-02 + -3.4438567e-03 + 4.5082448e-03 + -5.0787807e-02 + -2.1656645e-02 + 1.3711317e+00 + 1.1337234e+00 + 1.2596558e+00 + 2.5672248e-01 + -2.9874331e-01 + -1.0138477e+00 + -9.3686140e-01 + -1.0950276e-01 + -4.7894266e-01 + 1.2369180e-02 + -2.8298074e-01 + -8.7517846e-01 + -9.3904519e-01 + -2.8932291e-01 + -2.8747582e-01 + 3.7920401e-01 + -1.6006015e-01 + 2.9780418e-01 + -1.3832451e+00 + -3.7071848e-01 + -1.6827773e-01 + -9.6148199e-01 + -6.0920510e-02 + -7.0718753e-01 + -4.4422336e-02 + 2.1220632e-01 + -9.2157340e-01 + 4.4677634e-02 + 4.2453337e-02 + 9.9028409e-02 + 4.3839280e-02 + 8.1218677e-03 + -9.3200700e-03 + -2.0126449e-03 + 1.8364787e-02 + -5.8334481e-02 + -3.2461349e-02 + -4.7342818e-02 + -8.9094192e-03 + 1.1397540e-02 + -2.4492588e-02 + -3.7034534e-02 + 1.0619391e-02 + -2.6551444e-02 + -2.0778362e-02 + -7.1134930e-04 + 6.7724558e-03 + 1.6936837e-02 + -4.9764225e-03 + 6.4828806e-03 + -5.2051619e-05 + 3.1768929e-02 + -2.8767373e-04 + -1.2685597e-02 + -5.0001394e-02 + 1.8382698e-02 + -3.3922970e-02 + -9.7961705e-03 + -6.8917004e-03 + 1.0502873e-01 + -2.0470790e-04 + 6.0568168e-03 + -6.8617389e-02 + -1.1550117e-02 + -6.9937870e-02 + -1.8276358e-02 + 3.7271686e-02 + 6.2318257e-05 + 1.1846968e-02 + 8.7413393e-02 + 1.5783887e-02 + -4.2945696e-03 + -2.5685389e-02 + 2.1167449e-03 + 5.8518585e-02 + -2.7069140e-02 + 9.7040199e-03 + -8.4278762e-02 + 1.0122267e-02 + -3.9673164e-03 + -7.3972689e-03 + 2.6367128e-02 + 3.6277737e-02 + -3.8262032e-02 + -2.6692316e-02 + -9.4074160e-02 + 2.9207457e-02 + 1.5079098e-02 + 5.6207605e-02 + 1.7911637e-03 + 1.1327605e-02 + -7.5691529e-02 + -7.8304067e-05 + 7.3331617e-02 + 9.6682524e-03 + 1.6396824e-02 + 1.2823214e-02 + -5.4936195e-03 + -4.7048982e-02 + 5.2271407e-02 + -3.1157890e-03 + -1.1862440e-03 + -4.0890314e-03 + 4.5224028e-03 + 2.0718100e-02 + -3.1973526e-03 + -7.1912147e-03 + 3.3767696e-02 + -2.8763402e-02 + -3.4954041e-02 + 2.2551855e-02 + 3.5715152e-02 + -1.7831182e-02 + -5.0948046e-02 + -2.3136989e-03 + 1.1232812e-01 + -6.2537855e-03 + 4.1333441e-02 + -4.0883988e-02 + -6.2899268e-03 + 1.2157757e-03 + 3.1102780e-02 + -9.7883176e-03 + 4.2762300e-03 + -3.9867647e-02 + 1.4984523e-02 + 3.2217752e-02 + -1.9868309e-02 + 6.8553333e-04 + 7.6800603e-03 + -4.7583144e-02 + -4.8936550e-03 + 1.2763740e-02 + -7.5444467e-03 + -1.0949926e-02 + 6.0163881e-03 + 1.1689638e-01 + -1.0851139e-02 + 5.1869370e-02 + 9.9069085e-03 + -6.2761358e-03 + -2.0223195e-02 + -5.3970949e-03 + -2.8824426e-02 + 8.2590273e-03 + 2.1121267e-02 + -1.1314554e-02 + -4.5499536e-03 + -1.1022556e-02 + -4.0911630e-02 + -2.5341708e-02 + -2.8689561e-02 + -3.2600516e-03 + 1.2013450e-02 + 1.1910229e-02 + 4.3315953e-04 + 2.0022996e-02 + 2.9590786e-02 + -4.1729012e-03 + 3.8204886e-02 + 1.6919598e-02 + 4.3231804e-02 + 2.1408904e-02 + 4.5790900e-02 + 6.0931839e-02 + 3.1153079e-02 + -3.3861183e-02 + -4.6897279e-03 + 2.4142407e-02 + -3.7402480e-03 + 8.4102474e-04 + -2.5245285e-02 + -1.0889797e-02 + 3.4454018e-02 + -3.5534397e-02 + -1.5747466e-04 + -1.2373269e-02 + 1.7905924e-02 + -4.2244052e-03 + -5.1262759e-02 + 1.8200416e-03 + -1.2418582e-02 + -1.4071739e-02 + -4.0316742e-02 + 1.2818400e-02 + -3.7924618e-02 + -2.8985678e-03 + -8.7702692e-02 + 6.9489218e-02 + 3.7151739e-02 + -5.5248059e-02 + 1.7044647e-04 + 1.9130122e-02 + -1.2005315e-02 + 1.0293754e-03 + -5.6213912e-02 + -2.5152443e-03 + -5.5101146e-03 + -1.5867703e-02 + 7.3343314e-02 + -5.3770333e-03 + -5.8140125e-02 + -2.6827151e-02 + 1.0268684e-02 + 1.5314277e-02 + -2.8850576e-03 + 2.8233090e-03 + -8.8261068e-03 + -5.8012258e-02 + -8.9916335e-03 + -4.9529523e-03 + -1.3407221e+00 + -3.0955511e-01 + 4.8972845e-01 + -4.8152748e-01 + -6.9162339e-02 + -2.3224574e-01 + -2.6368378e-02 + 3.8579920e-01 + -1.3658817e-02 + 1.9708121e-01 + 1.1226236e+00 + 2.1273157e-02 + 6.7473012e-01 + 3.1147590e-01 + 1.2413511e+00 + 3.8542661e-01 + 2.2972232e-01 + 1.1035845e-01 + 4.4095986e-02 + -3.8160810e-01 + 5.8827358e-01 + -6.5511875e-03 + 2.7560288e-01 + 1.3321730e-01 + 1.7438812e-02 + 1.4589375e-02 + -6.8825237e-02 + 2.7238786e-02 + 3.8228114e-03 + 1.7168875e-03 + 2.3639426e-02 + -1.4021878e-02 + 4.8630189e-02 + 8.1810065e-02 + 2.8571026e-02 + -1.0443772e-01 + 2.8297512e-02 + -7.9741687e-02 + -7.3913999e-02 + -3.8730208e-02 + -3.6129716e-03 + -4.5975495e-02 + -7.2972230e-03 + 6.7367610e-03 + 2.2296105e-02 + 2.5583036e-02 + 5.3056958e-03 + -2.5760340e-02 + 3.6260355e-02 + 1.9638471e-02 + 2.2445494e-02 + -3.6946593e-03 + -5.7818270e-03 + 8.3727218e-02 + -1.1139761e-02 + 1.2045382e-02 + -1.3439134e-03 + -2.5966207e-02 + 1.9410428e-03 + -1.2655141e+00 + 1.1681485e+00 + 4.2920103e+00 + -2.3247337e+00 + 3.6176658e+00 + -9.6877402e-01 + -1.0490178e+00 + 3.8788161e-01 + 2.8987330e-01 + -6.6193354e-01 + -1.3808476e+00 + -1.5762572e+00 + 2.3347577e-02 + -1.0266651e+00 + -1.5827994e-01 + -4.3132955e-01 + -1.2666576e+00 + -5.5675530e-01 + -2.3181431e-01 + 2.2925647e-01 + -6.8384522e-01 + -1.4205322e+00 + -7.6355559e-01 + -1.7369027e-01 + 1.4394751e-01 + 2.8479559e-02 + 2.8610098e-01 + -6.0903639e-01 + 5.3233039e-02 + -1.6745302e-03 + 2.4016194e-02 + 2.8825978e-02 + 9.7523428e-02 + -2.9044978e-03 + -6.1263639e-02 + -1.5218259e-02 + -3.1901747e-02 + 6.8098150e-02 + 1.5494373e-02 + -1.7079085e-02 + -9.1555947e-03 + 5.7319952e-03 + -5.7945825e-02 + -3.3408254e-02 + -2.4819743e-02 + 4.4181854e-02 + 4.0693358e-02 + 7.5645499e-02 + -1.9071868e-02 + -6.7221463e-02 + 3.9471194e-02 + -5.1839769e-02 + -5.0008371e-03 + -1.1342059e-02 + -3.8673498e-02 + -6.5596484e-02 + -1.1536515e-01 + 7.4396450e-03 + -2.0180142e-02 + -3.7941269e-03 + -3.5535827e-01 + -9.2485845e-03 + 1.4068165e+00 + 4.2521958e-03 + -1.0366883e-02 + 2.8783789e-01 + 2.1587063e-01 + -3.1534771e-03 + 1.8987321e+00 + 3.3736277e-02 + 1.4815078e+00 + 2.6589888e-01 + 5.2077442e-01 + 3.4315315e-01 + -1.2423822e-01 + -9.8387618e-03 + 7.5628579e-01 + -6.3569123e-01 + 4.1260013e-01 + -8.0956829e-01 + -1.0126771e-01 + -4.6508691e-01 + -2.8513014e-01 + 1.6454479e-01 + -2.2999957e-02 + 1.5335107e-01 + -1.1834909e-01 + -1.0697015e-02 + 1.4416915e-01 + -4.0303215e-02 + -7.2415168e-03 + -5.5828989e-01 + -8.7947035e-03 + -5.3351824e-03 + 1.8500771e-02 + 2.6408615e-02 + -1.2645995e-02 + 2.0214150e-02 + -1.3744256e-02 + -7.4356589e-03 + 3.2504615e-01 + 3.2672501e-01 + 9.2586823e-02 + 1.5579042e-02 + 1.0976698e-03 + -1.7843543e-02 + -7.9482424e-01 + 9.0871617e-02 + -1.6602024e-02 + 6.7327498e-03 + -1.6807191e-01 + 2.3526333e-01 + -6.5370165e-02 + 1.2134298e-03 + 3.7400417e-02 + -8.3657019e-03 + -1.5608850e-01 + 2.4255829e-02 + -6.4349107e-02 + -4.2699154e-02 + -1.9313157e-01 + 5.9642041e-01 + 1.9218128e-02 + 8.6047292e-01 + -6.9349909e-01 + 9.0511787e-01 + 3.9045842e-04 + -1.7225571e-02 + 5.9367394e-01 + 1.5549664e-01 + -4.1846748e-02 + 1.3270865e-02 + -3.8693711e-01 + -2.7334306e-01 + 3.5476640e-01 + 1.9510963e+00 + 1.0378287e-02 + -4.2606094e-01 + -1.0874054e-02 + 1.9770801e-02 + -4.8331483e-04 + 1.2583368e-02 + 5.7071590e-01 + 5.6383973e-03 + 1.4997941e+00 + 1.0212476e-02 + -7.1414542e-01 + -7.1654774e-02 + -5.4084587e-01 + 5.1585937e-01 + 3.5589128e+00 + -1.7383778e+00 + 1.2233889e-01 + -1.3598928e+00 + -1.5210943e+00 + 1.3895986e+00 + -7.2180048e-02 + 1.5407720e-03 + -7.6731181e-01 + -1.3576379e+00 + -4.1890152e-02 + 3.2560688e-02 + -8.6948270e-01 + 2.7459407e+00 + -8.9200187e-01 + -2.4163818e+00 + 2.0963227e-02 + -7.8312671e-01 + -3.7944797e-02 + 1.6480185e-02 + -1.3883970e-02 + -3.7964765e-02 + 3.5077311e-02 + -1.6459236e-03 + 7.4864554e-01 + 4.1168209e-02 + 3.2125134e+00 + -3.6428928e-02 + 1.1393247e+00 + 6.3595653e-01 + 3.2726175e-01 + 1.7241362e-02 + -3.0670298e-02 + 1.8201707e-01 + 2.6688987e-01 + -1.3087037e-01 + 3.6777306e-02 + 2.0871853e-02 + -1.4401561e-02 + -1.2151102e-02 + -3.5436325e-02 + 1.3446993e-01 + 2.3843296e-02 + 3.2054275e-02 + 3.5445674e-03 + -5.3619009e-02 + 9.4739974e-02 + 2.9487357e-01 + -1.2755167e-02 + -1.3073174e-02 + -1.5254131e-01 + -2.5614795e-01 + 3.4385361e-03 + -5.0293483e-02 + -1.9451633e-02 + -2.5868177e-02 + -1.3363692e-03 + 2.8486084e-02 + -3.6002591e-02 + -4.3067731e-02 + 1.3671353e-02 + -8.7555900e-02 + -2.3893500e-02 + -2.7352320e-02 + -1.8934984e-02 + 6.5847780e-03 + 3.2025422e-03 + -3.3881844e-03 + 4.2698300e-03 + 2.0825664e-02 + -2.8088816e-02 + 8.7136868e-04 + 1.0160359e-03 + -5.7103168e-02 + -8.7514324e-03 + -2.4424898e-03 + 2.2423331e-02 + 8.4371334e-03 + 2.1275582e-03 + -5.5697978e-02 + 1.5950520e-02 + 2.8358743e-02 + -4.9072646e-02 + 2.0621629e-03 + -1.2250674e-03 + -1.9811313e-03 + 2.8666968e-02 + 3.8766284e-02 + 1.2674704e-02 + -3.9721277e-02 + 4.7442835e-02 + -1.0543651e-02 + 1.0125666e-02 + 2.0354623e-02 + 4.1478151e-03 + 3.3321071e-02 + 5.1477755e-04 + 8.0767140e-04 + 2.4629061e-03 + -2.7086163e-02 + -3.0893913e-02 + -8.3197625e-03 + 1.8088130e-02 + 2.5794460e-02 + -8.8582831e-03 + 8.4142890e-03 + 1.6825981e-02 + 5.1251769e-02 + 5.3701997e-02 + 6.0770430e-02 + 2.3236187e-02 + -7.4982643e-05 + 1.4176678e-04 + 1.4859077e-02 + -1.7489528e-02 + -1.4172655e-02 + -2.6420232e-02 + 6.1399259e-02 + -2.0863460e-02 + -1.1308546e-02 + -7.8354317e-01 + -2.5429578e+00 + 3.8551893e-02 + -5.2816797e-02 + -2.3150278e-02 + -1.6537136e-01 + -4.5268533e-01 + -1.4044297e+00 + -5.6756660e-03 + -3.0673174e-02 + 8.4296811e-01 + -9.6955761e-02 + 1.3282896e+00 + -1.2433650e-02 + 7.7405822e-01 + -7.7622076e-03 + -2.2035085e-01 + 1.7106414e+00 + 3.6760113e-01 + -6.5463781e-02 + 2.9742059e-01 + 4.0139118e-01 + 1.0168555e-01 + 4.7909383e-02 + -7.5840569e-01 + -5.3386383e-02 + -1.1539919e-01 + 4.2046931e-02 + 1.3898063e-02 + -1.5289073e-02 + 2.4162829e-02 + 8.9390455e-03 + 3.7359748e-02 + 8.8425111e-03 + 2.4918690e-02 + -2.1601876e-02 + 9.1188289e-03 + -4.3827441e-02 + -3.1310011e-02 + 6.9384016e-02 + -7.2774598e-03 + -1.0857819e-02 + 5.4597504e-02 + -6.2030223e-03 + 1.8026317e-02 + 6.9828164e-03 + -3.7534052e-04 + -1.9239636e-02 + 7.2077308e-03 + 5.0301366e-02 + -2.6530318e-02 + 3.4835365e-02 + 7.6288059e-03 + 2.1178272e-02 + -3.8676471e-02 + -8.5108936e-02 + -1.1989152e-02 + -2.2871310e-02 + 4.4159789e-02 + -4.3947637e-02 + 6.2685102e-02 + -5.5295690e-03 + -9.7404262e-03 + 1.3117246e-02 + -3.5737365e-02 + -2.3191080e-03 + 1.2745224e-02 + -2.5602100e-02 + 4.6742316e-02 + -5.5405558e-03 + -9.0080354e-04 + 8.9469366e-03 + -1.2424357e-03 + -9.5693976e-02 + -2.2594504e-02 + 6.4763064e-03 + 8.1673853e-02 + -1.4766848e-02 + 1.0500731e-02 + 6.4719534e-03 + 1.3187576e-02 + -1.2996297e-02 + -3.9920162e-02 + -1.9689908e-02 + 2.4421699e-03 + -2.1072365e-02 + 1.7704895e-03 + -2.8511679e-03 + 4.0679779e-03 + 1.2659708e-02 + -6.1364651e-01 + -6.1771069e-03 + -6.0888328e-02 + -4.1160408e-01 + -1.7259412e-01 + 1.1738883e+00 + 5.7051461e-03 + 2.7087924e-01 + 6.1110303e-02 + 6.6797739e-01 + 3.1401551e-01 + -2.3760572e-02 + -6.6241873e-03 + 4.4068929e-02 + -1.8373702e-02 + -1.3935455e-02 + -5.0817742e-03 + -1.1775599e-01 + 3.4835141e-02 + -4.2207792e-02 + -3.6258450e-01 + -6.8858373e-01 + -1.8932010e-01 + 1.6617473e-02 + -5.3612202e-01 + -1.8110361e-03 + 1.7110635e-02 + -2.5700793e-02 + 5.2258160e-02 + 2.9145565e-02 + -1.5167152e-02 + 1.8651294e-02 + -1.7118938e-02 + 4.6973187e-02 + -2.2579043e-03 + -4.2108372e-02 + 7.3647171e-02 + -3.6639723e-03 + -5.8211464e-02 + -5.8593578e-03 + 5.8573768e-03 + 1.2365365e-03 + -1.1941416e-03 + 4.3040432e-02 + 3.3440737e-03 + -1.4018307e-02 + -2.9043853e-02 + 2.0140497e-02 + -3.6637072e-02 + -3.4637466e-02 + -8.9264270e-03 + -1.1636298e-02 + 7.2759680e-02 + 2.6183758e-02 + 2.2722136e-02 + -7.0585306e-03 + 6.0564037e-03 + 1.3308802e-02 + 1.2711460e-02 + -3.6305301e-02 + -1.2859229e+00 + 2.5435686e+00 + -1.0114526e+00 + -3.0127573e+00 + 1.1493790e+00 + -9.0601325e-01 + 2.1675761e-01 + -7.7839546e-02 + 1.9366139e+00 + 2.7268806e-01 + -1.3043542e+00 + 2.2542550e-01 + 1.8610415e-01 + 1.6576518e+00 + 9.9478978e-01 + -1.2944284e-01 + -6.6676117e-02 + -9.4569814e-01 + 7.5610477e-01 + 1.3912854e+00 + -3.4176454e-01 + 1.8775037e-01 + -1.9256603e+00 + 1.7433192e+00 + 1.1944612e+00 + -1.9466133e-01 + -9.1839157e-02 + -3.5259706e-01 + 1.2137673e-01 + 8.1676084e-01 + 1.3154082e-02 + 8.2540624e-03 + 1.2563675e-02 + -1.3194494e-02 + 3.4620490e-02 + 3.8660793e-03 + -7.6817991e-03 + -2.7357077e-03 + -2.1938680e-02 + -6.1563868e-04 + 3.6394421e-02 + -2.5398847e-02 + -2.8844111e-02 + -4.8466790e-03 + -7.3434100e-02 + -6.3577509e-03 + 2.4223628e-02 + -3.3755623e-02 + -5.3303041e-03 + -4.5748778e-02 + 4.7028653e-02 + -3.6101551e-03 + 2.0905710e-03 + 5.9310281e-01 + -4.3662861e-03 + -1.8797014e-02 + -3.6430173e-02 + -5.3708288e-03 + 3.3039730e-02 + 2.5267925e-02 + -4.4490989e-02 + -2.5103178e-03 + -4.7674929e-03 + 2.2113258e-02 + -3.5906807e-02 + 5.1145223e-03 + -3.3128347e-02 + 3.9254222e-03 + 5.6080163e-01 + 4.3699175e-02 + 6.5555781e-02 + -3.2321524e-02 + 2.6151616e-02 + -2.9864185e-02 + -6.1670713e-02 + 2.4016290e-03 + 2.2719694e-02 + 2.7135577e-02 + -1.5157213e-02 + 1.9283656e-02 + -3.2270711e-02 + 4.0012490e-02 + 2.1160398e-02 + -4.7802716e-03 + 2.9538465e-03 + 8.2544135e-03 + 1.1164250e-01 + 4.9022241e-03 + -5.8246143e-03 + 2.3828488e-02 + 4.2778865e-02 + -3.8363617e-02 + -1.7233605e-03 + -5.7678934e-02 + 7.4914381e-02 + 5.8670480e-02 + 4.7422271e-02 + 1.2929692e-02 + 9.0519898e-02 + 6.9325939e-02 + 5.6766164e-02 + 1.0433606e-02 + -1.0473707e-02 + -3.0135430e-04 + -5.3937668e-03 + 1.3472772e-02 + 5.3162716e-02 + 5.1077241e-03 + -6.1433390e-03 + 1.6276417e-03 + -5.7221591e-02 + 5.0276078e-02 + -1.0069543e-03 + 3.1008476e-02 + -2.4669420e-02 + 3.3960484e-02 + 4.1524936e-03 + -1.3450331e-02 + -1.5409604e-02 + -1.7822798e-02 + -2.5536211e-02 + -9.9995591e-02 + -2.9669343e-02 + -1.5723905e-02 + -2.9030928e-02 + -1.8528067e-02 + 6.1238818e-03 + 1.6333590e-03 + -7.4690548e-03 + 3.5729315e-02 + -6.1937398e-04 + 3.6494732e-02 + 1.8931068e-02 + 9.5165959e-03 + -7.8600287e-02 + -1.0583200e-01 + 2.2144355e-02 + 2.9615775e-02 + -1.1329384e-02 + 2.3643052e-02 + 4.0507741e-02 + -2.3939317e-02 + 4.0083607e-03 + -1.1366616e-02 + 3.3402093e-02 + -1.6819205e-02 + -2.4746852e-02 + -9.9003632e-03 + 4.3953866e-02 + 1.2566954e-02 + -3.0991789e-02 + 3.0387688e-02 + -1.7007651e-02 + -3.1298101e-02 + 1.4212457e-02 + 5.7893475e-03 + 4.4469483e-02 + -5.9238125e-02 + -4.1731270e-03 + 3.3662263e-02 + 1.3503198e-02 + 3.5513207e-02 + 4.4743229e-02 + -1.3528502e-03 + 3.0906549e-02 + -2.2334220e-02 + 3.8960926e-02 + 2.1640626e-03 + -1.5528753e-02 + -1.5193599e-02 + -4.5458317e-02 + 7.0999429e-02 + -1.2610912e-02 + -1.8694168e-02 + -3.7768285e-04 + -4.1452372e-03 + 6.3824269e-04 + 1.5235241e-02 + 2.6103601e-02 + -3.5696684e-03 + -1.3564389e-02 + 2.6253667e-02 + -6.1674663e-03 + 1.5216682e-02 + -1.0104332e-01 + 1.5912225e-02 + -1.0233815e-01 + -2.4078880e-03 + 6.0237832e-02 + 5.8960125e-02 + 3.1135032e-02 + -1.3117152e-01 + 2.6809985e-02 + 1.8106775e-02 + 5.5703729e-02 + 1.6119227e-02 + -4.3673385e-02 + 4.0464126e-02 + -1.0744950e-02 + 4.5310944e-02 + 3.9689474e-02 + 9.3354732e-03 + 4.4006524e-03 + -1.0044556e-02 + -8.9340312e-03 + -9.1731854e-02 + 3.0520065e-02 + 3.8041654e-03 + 3.4700080e-03 + 9.0277381e-02 + 5.6642000e-02 + 2.7459584e-02 + -1.8281890e-02 + -2.7890142e-02 + 2.8564725e-02 + 1.2724059e-02 + 2.9356193e-02 + 9.9357083e-02 + -1.8005863e-02 + 3.3105850e-02 + 2.5907304e-02 + 2.1244261e-02 + 2.0778723e-02 + 2.9025117e-03 + 4.8376314e-02 + -1.2974681e-02 + 4.2508140e-02 + 5.2306419e-03 + -5.3445652e-02 + 2.0131540e-02 + 2.7386816e-02 + -8.4634507e-03 + 2.5826052e-02 + 5.2964903e-04 + -3.1731132e-02 + -5.3933379e-04 + -7.4944593e-02 + 5.9316335e-03 + 1.6887819e-02 + -3.5331041e-02 + -5.5207270e-03 + -2.5832597e-02 + -1.6339082e-02 + 4.5079462e-02 + -1.3515754e-02 + 1.7516412e-02 + 2.7843213e-02 + -1.4426772e-02 + 6.3490067e-03 + 3.8762307e-03 + 1.6239593e-02 + -3.3344293e-03 + 1.5534725e-02 + 1.4077492e-02 + -5.3484019e-02 + -4.1723806e-02 + 6.5552577e-02 + -5.9950287e-03 + 1.7103175e-02 + 4.6220820e-02 + -6.3528647e-03 + -6.2064151e-03 + 3.3077642e-02 + 1.9305691e-02 + 2.9381711e-02 + -8.3321212e-03 + -7.2309240e-03 + -3.6462075e-03 + 1.1626182e-02 + 9.2088975e-02 + 1.7294625e-02 + 4.8484009e-02 + -4.7061037e-02 + -1.1797550e-03 + 6.4364970e-02 + -6.8759909e-03 + -1.8285022e-03 + -2.6668802e-02 + -1.9058302e-02 + 7.3357718e-03 + 6.6070940e-04 + 4.9108870e-02 + -1.4478339e-02 + -7.6876618e-03 + -6.1577009e-03 + 1.9614285e-02 + 3.6584884e-02 + 2.7400482e-02 + 1.2404723e-02 + 1.1819511e-02 + 2.9576288e-03 + 2.1049764e-02 + -2.2894835e-02 + 2.1097068e-02 + -3.8349468e-03 + -1.9160070e-02 + -1.0487938e-02 + 3.7386287e-03 + -1.4450265e-02 + -3.5766971e-03 + 8.9907721e-03 + 4.0262481e-03 + 1.9238066e-02 + 2.5750520e-02 + 3.3113576e-02 + -1.1036571e-02 + -4.5692172e-02 + 2.5814681e-03 + 1.0001932e-02 + 4.1208554e-02 + 1.1730615e-02 + -4.0673394e-02 + 1.1375252e-02 + -5.9036046e-02 + 2.4958896e-03 + 4.9421683e-02 + 4.9579698e-03 + 1.7377576e-02 + 7.2554378e-03 + 6.3387272e-03 + 2.1966407e-03 + -1.1212576e-02 + 3.5193063e-02 + 3.6114898e-02 + 4.3996472e-02 + -1.1602887e-03 + 1.6135987e-02 + -6.3434541e-02 + -1.0145353e-02 + -1.6245361e-02 + -4.6001232e-01 + 6.1626869e-01 + -2.3963822e-03 + -6.1187431e-02 + -3.7166402e-01 + 2.1852073e-01 + -9.9880673e-02 + -5.7475376e-01 + -8.7726273e-02 + 5.2650607e-01 + 2.2344971e+00 + 5.7895786e-01 + 2.9207492e-01 + -2.0824924e-02 + 6.1410117e-01 + -7.1531588e-01 + -1.9275635e-01 + 3.2602694e-02 + -1.1228339e-02 + 2.1134738e-02 + 3.5230151e-01 + 7.5640374e-01 + 2.4903722e-02 + 9.0075983e-03 + 4.1169837e-02 + 1.7570449e-02 + 6.8279833e-04 + -9.2774019e-02 + -8.3274907e-05 + 4.6560429e-03 + -1.7118834e+00 + 4.3557167e+00 + -2.3830366e+00 + -4.1731143e+00 + 2.1859946e+00 + -1.1789483e+00 + 5.5373222e-01 + -2.4376242e-01 + -4.0478075e-01 + -8.3365418e-02 + -9.8215419e-01 + 9.7493500e-01 + 5.0172669e-01 + -2.6466236e-01 + -8.8650334e-01 + -1.7994871e+00 + 7.6515210e-01 + -5.9515852e-01 + -4.1620612e-01 + -7.8057848e-02 + -1.5179471e+00 + 5.7372272e-01 + -4.5884919e-01 + 7.0727575e-01 + 2.6219524e-02 + 3.1399939e-02 + -3.9405093e-02 + -3.4515777e-01 + 1.1803369e-01 + -2.8065089e-02 + -1.3152692e-02 + 1.9486815e-02 + 3.0020894e-02 + -2.6519386e-02 + 1.6583510e-02 + 1.6366836e-02 + 5.0801195e-02 + 2.0279795e-02 + -4.1049523e-03 + -2.0375507e-02 + -2.1436720e-03 + -2.6839902e-03 + 6.0049769e-02 + 2.0485066e-02 + -3.0155301e-02 + 1.8996093e-02 + -1.9127218e-02 + -2.4970300e-02 + -2.9768236e-02 + -2.6135296e-02 + 5.6028601e-02 + 1.3986877e-03 + 2.9400915e-02 + -1.5222665e-03 + 8.8607006e-02 + 1.2041789e-02 + -7.0432364e-04 + -8.9973718e-02 + -1.3992832e-02 + 6.7019020e-03 + -3.1398905e-03 + -2.2427344e+00 + 2.1784940e-01 + 2.0469395e-02 + -2.2191947e+00 + 9.8463513e-02 + 2.8113538e-01 + 3.4413761e-01 + 3.4374103e-02 + 1.6697140e-02 + 1.4160069e+00 + -1.0464514e+00 + 8.1649637e-01 + 2.9271767e-02 + 2.4228824e-02 + 2.6290450e-01 + -1.0840031e-01 + -9.0434132e-03 + 2.7382642e-01 + -1.0133182e-01 + 1.1937979e+00 + -3.2570016e-01 + 1.0472111e+00 + 1.2761459e-02 + -2.4943119e-02 + -1.2196513e-01 + -2.0588638e-02 + -7.6325284e-03 + 2.0433512e-02 + -1.2291998e-02 + -8.0683492e-03 + -2.5456201e-02 + 1.1591808e-01 + -1.4242776e-03 + 1.6227217e-02 + -6.9630869e-02 + 2.4825886e-02 + 1.7506685e-02 + -1.2136914e-02 + 3.8461674e-03 + 1.3224556e-02 + -1.6781384e-02 + -8.5444357e-03 + -1.2677805e-02 + 6.2917485e-03 + 5.1617038e-02 + -1.5961852e-02 + 2.0259799e-02 + -4.1412981e-03 + -4.0448327e-03 + 1.5058904e-02 + -5.5749778e-02 + -2.8764466e-02 + 2.8329066e-03 + -2.3028350e-02 + -1.9973829e-02 + -1.1501267e-02 + -7.8951439e-04 + -5.3321145e-04 + -2.0499902e-02 + 2.3004189e+00 + -1.3067907e+00 + -2.2079526e-02 + 9.8594379e-01 + 2.3553361e-01 + -1.2101397e-01 + -3.2010368e-01 + -2.0037933e-01 + 4.9550179e-03 + -9.1146611e-02 + 6.8343520e-01 + 1.1884945e-02 + -1.3967377e-01 + -3.4855801e-01 + 1.0431200e-02 + -8.5721397e-01 + -2.4064116e-01 + 1.1404397e-01 + -3.1121323e-01 + 1.5237668e-01 + 2.6650500e-01 + 7.6320782e-02 + -3.7637880e-01 + -3.1761891e-01 + 5.2957650e-02 + 7.3308329e-06 + 1.3403949e-01 + 2.2167411e-01 + 8.7376144e-03 + -3.6904743e-01 + 5.7017341e-02 + 3.4489043e-02 + 6.1921636e-03 + -1.2319417e-01 + -4.2898161e-04 + 2.3125513e-02 + -7.4286088e-03 + -3.2542102e-02 + -6.5022901e-02 + -6.9161407e-03 + 1.1063400e-02 + -3.4671314e-02 + 8.3432756e-03 + -6.7777978e-03 + -5.9519713e-03 + 4.6093959e-02 + -2.4331907e-02 + -3.9427571e-02 + 1.4530468e-02 + 1.4846569e-02 + 2.7990246e-03 + -9.5753334e-03 + 1.5445700e-03 + 7.5419061e-03 + 6.5857619e-03 + 4.5376476e-02 + 2.9847419e-02 + -2.5188224e-02 + 3.7610065e-02 + 9.9697992e-02 + 3.9057050e-02 + -1.4829024e-03 + 2.2595981e-02 + -4.7965936e-02 + -6.3870668e-02 + -2.6725052e-02 + 1.9214423e-02 + 1.8452732e-02 + 2.9813591e-02 + -2.6496936e-02 + -1.3049033e-02 + 4.5982294e-02 + 7.2234585e-03 + 4.6644174e-02 + 3.8339009e-03 + -2.9076836e-03 + -5.8889185e-04 + -1.2208079e-02 + -9.7824953e-02 + -6.6319264e-02 + -6.6960976e-02 + 3.9959446e-02 + -1.0272499e-02 + -3.4041055e-02 + 6.1421834e-02 + -7.3109984e-02 + 2.5109826e-03 + 3.9976947e-02 + -5.9039462e-03 + -2.3242887e-02 + -3.9902639e-01 + -2.4290933e-01 + -4.5738887e-02 + -1.7595840e-01 + 3.3933482e-01 + 5.4824460e-01 + -3.6530660e-03 + 2.1054088e-01 + 2.6955694e-02 + 9.4097413e-02 + 4.2282343e-01 + -4.9199667e-02 + 5.3237587e-01 + -1.7960574e-03 + 1.4054380e-01 + 1.5045016e-01 + -4.8698515e-01 + -5.8458477e-01 + 6.3349055e-03 + -5.0791249e-02 + 4.6189800e-01 + -3.7083976e-02 + 1.1477327e-01 + 5.9243552e-02 + -1.2920426e-02 + 6.6549852e-03 + -1.4640627e-03 + -9.2557240e-03 + 3.3854999e-02 + 7.8092222e-03 + 6.0551417e-01 + 2.0221031e+00 + -1.6419061e+00 + -1.0141656e-01 + 2.4439499e+00 + -7.2629768e-01 + -8.4284507e-03 + 1.7782476e-02 + -1.1311136e-02 + -1.5188789e-04 + -4.0735331e-01 + 4.9576765e-01 + -5.9359109e-01 + -2.1409863e-01 + -4.8849159e-03 + -6.5930158e-01 + 3.1809121e-02 + -4.6113169e-01 + -7.7079338e-01 + 5.7271272e-02 + -2.4048870e+00 + 7.9726326e-01 + -7.4658942e-01 + -1.3221413e-01 + 6.3953072e-01 + 1.7798628e-01 + 9.3984120e-02 + 2.1097271e-02 + -8.4883654e-03 + -7.4102335e-02 + -6.8060762e-01 + -1.7005935e+00 + 2.8584108e-01 + 1.8621204e-02 + -1.5962195e+00 + 3.3425719e-01 + -3.3905159e-03 + 1.4930454e-02 + -3.5559636e-02 + 7.3332883e-02 + 2.6808158e-01 + -3.0524891e-02 + 7.2930795e-01 + 4.6566594e-01 + 2.9631725e-01 + 7.7096438e-01 + 3.2767051e-01 + 1.2886468e-01 + 7.2390521e-01 + -1.2107098e-01 + 6.4246333e-01 + 3.2457608e-01 + 2.4399985e-01 + 5.6976110e-02 + -1.2386327e-01 + 2.1209003e-02 + -1.7734222e-02 + -2.1447888e-01 + 8.8685200e-02 + 9.1041237e-02 + 8.3507737e-03 + 2.3789590e-02 + -1.5370041e-02 + 5.9280670e-01 + -1.0434812e-02 + 4.1775317e-03 + -7.2257996e-01 + 3.6926817e-02 + -6.9779076e-02 + 5.7915192e-02 + -2.3580720e-03 + -6.8679261e-03 + 1.3256833e-02 + 4.3205833e-01 + -5.9622236e-02 + 2.5423600e-03 + -1.9846683e-02 + 1.9841153e-02 + 3.3910662e-02 + -3.5926664e-01 + -3.7349004e-01 + -2.3925286e-03 + 1.3102373e+00 + -2.0344949e-03 + -3.0062097e-01 + -5.0337639e-02 + -9.4367415e-02 + 2.2344317e-01 + -1.6321026e+00 + 1.0317124e+00 + -8.9753062e-01 + 5.4376557e-02 + 3.8783029e-03 + 2.6378965e+00 + 1.5577671e-02 + -8.7758444e-02 + 1.3436873e+00 + -1.5630204e-02 + 4.6781850e+00 + 5.9439614e-03 + 2.7851203e-01 + -1.1714708e-02 + 1.1353766e-02 + 3.5006707e-03 + -1.6578963e-02 + -5.4248073e-03 + 8.8196312e-04 + 3.8172761e-03 + 2.3181522e-03 + 1.2870338e+00 + 4.7150011e+00 + 7.1926095e-02 + 2.6819606e+00 + -7.6394621e-03 + -2.5141878e+00 + -2.2208715e-02 + -1.6365467e-02 + 1.5736102e+00 + -2.5153253e+00 + 2.8927937e+00 + 3.9155262e+00 + 1.4099131e+00 + -2.2940616e-01 + -2.3978636e-01 + -2.3748500e+00 + 2.8657326e-01 + 1.9563338e-02 + -9.0910614e-02 + -2.5686588e+00 + 9.5408869e-01 + -1.3727081e+00 + -1.6112269e+00 + 2.0881071e+00 + -9.1908938e-01 + -3.5890895e-01 + -2.6843009e+00 + 6.2789547e-01 + 5.8642173e-01 + 1.5076664e-02 + 4.0120059e-01 + 4.1221350e-01 + -4.4466174e-01 + 2.1918561e+00 + 1.7434669e+00 + 4.5529962e-01 + 6.8173546e-01 + -2.0915875e+00 + -9.0331662e-01 + 2.6639309e+00 + 4.4237590e-01 + -5.5111068e-01 + -6.4363921e-01 + -1.2755105e+00 + -8.9477026e-01 + 5.1817203e-01 + 2.6136322e+00 + -1.1172168e+00 + -1.0446937e-01 + -7.5461930e-01 + 1.5463486e+00 + 3.7316844e-01 + -1.2297275e-01 + -1.8357255e+00 + 3.5172743e-01 + 6.5976131e-01 + -9.3726027e-01 + 1.8453962e+00 + -7.4409175e-01 + 1.1922665e+00 + -9.3923581e-01 + 1.9594451e+00 + 4.7260043e-01 + 2.1009294e-02 + 2.4724874e-01 + -3.0114096e-01 + -2.5038543e+00 + 3.0408671e+00 + -8.0764284e-03 + -9.3323708e-02 + -1.5286725e+00 + 1.0986918e+00 + -5.2158380e-01 + -1.4115039e-01 + 1.4201791e+00 + -1.9050267e+00 + 6.1161137e-01 + -7.7248119e-02 + 3.1418616e-01 + 1.0913959e+00 + 3.0320907e-01 + -9.3435459e-03 + -3.1722436e+00 + 2.2108128e+00 + -7.1060014e-01 + -2.6849186e-02 + -3.5458228e-01 + -4.3493447e-01 + 1.0016899e+00 + -4.5686325e-01 + -9.1456942e-02 + 4.3866372e-01 + 4.5825163e-01 + 9.5142975e-02 + 2.0926287e+00 + 9.9394280e-01 + -2.9810932e-02 + -5.2124584e-01 + 9.2470419e-01 + 8.0457723e-01 + 1.2161284e-01 + -2.3214631e-01 + 6.4427666e-02 + 2.7944240e-01 + 3.8537703e-02 + -2.5530109e-02 + -3.9351457e-01 + 2.9069493e+00 + 4.1782182e-02 + -4.5735043e-02 + -4.0495887e-01 + 9.4710332e-01 + 1.1381063e+00 + 3.5268404e-02 + -8.6834326e-02 + 3.9066190e-01 + 5.6377345e-01 + -7.3526132e-01 + -4.5397755e-02 + -1.0005380e+00 + 6.8412679e-01 + -3.4439933e+00 + 1.6043544e+00 + 4.5449706e-03 + -1.0303997e+00 + 3.8943484e+00 + -2.7824140e+00 + 2.5553635e-01 + 7.1907926e-01 + -4.6824656e-02 + 3.4129581e-01 + 1.3005282e-01 + 1.6339422e+00 + -3.6333210e+00 + 8.7921940e-02 + 1.4450583e-03 + 7.2421896e-01 + -2.5398893e+00 + 6.3356566e-01 + 3.1766063e-01 + -1.0837486e+00 + -5.5443758e-01 + 2.2252049e-02 + -3.6091042e-01 + -5.6914908e-01 + 5.6063231e-02 + 1.0298314e-03 + 2.4238717e-02 + 9.6030992e-01 + -9.6268421e-01 + 2.3460650e+00 + -1.2383690e-02 + 7.6861513e-01 + -1.9391581e+00 + 1.6428167e+00 + -3.4467268e-01 + 2.0037541e+00 + -4.6746913e-01 + 1.8533632e-01 + 1.9925807e-02 + 1.6490299e+00 + -1.7445420e+00 + -1.2992331e+00 + -1.8981735e-03 + -7.4854843e-02 + -5.1788747e-01 + -8.7893617e-01 + -1.2539268e+00 + 1.0828738e+00 + 1.3129176e+00 + 8.9214385e-01 + 2.1309783e+00 + -3.2122394e-01 + 1.7049128e+00 + 2.0584841e+00 + -8.9311349e-01 + 2.7157090e+00 + -2.7663317e+00 + -1.1899577e+00 + 5.2453309e-01 + -3.6286643e-01 + 7.0048344e-01 + -1.5496627e+00 + -1.0139318e+00 + -1.0544126e+00 + 2.6645690e-01 + 3.2083485e+00 + -2.2817013e+00 + -1.1081134e+00 + -3.3196729e-01 + 7.3396498e-01 + 2.3466904e+00 + -2.8135803e-02 + 2.4156838e-03 + -1.2590913e+00 + 7.0327646e-01 + -2.7724099e-01 + 8.1643122e-01 + 6.6101395e-02 + -2.3891058e-02 + 4.8915258e-01 + -1.4709608e-01 + 1.4207890e+00 + -1.1855311e+00 + -1.6165118e-01 + 1.2200035e+00 + 1.4572439e+00 + -1.3971887e+00 + 1.9258641e+00 + 2.0958705e-01 + -7.2139484e-01 + -7.2869855e-01 + -9.9423409e-01 + -1.2502786e+00 + -1.5623587e+00 + -1.7265791e+00 + -1.4523365e-01 + -1.0325271e+00 + -1.3077756e+00 + 1.2025254e-02 + -4.0335053e-01 + -1.1523438e+00 + -1.7147996e+00 + -6.5376842e-01 + 2.9556179e+00 + -2.3046103e+00 + -1.5913094e+00 + -4.1656005e-03 + -1.5665205e+00 + 5.1338243e+00 + 1.2152119e+00 + 8.0084456e-03 + -2.5743428e-01 + -2.0259600e+00 + -6.0789630e-02 + 2.3534586e+00 + 2.7328367e+00 + -4.9503961e+00 + -1.5224886e+00 + 2.7951398e-01 + 9.1023594e-01 + -8.7686402e-01 + -2.8532007e+00 + -1.6088476e-02 + -4.0433988e-01 + 1.9681743e+00 + -6.2602729e-01 + 1.2792153e+00 + -2.5801936e-01 + -1.0092305e-01 + 1.7260052e-01 + 8.4814884e-02 + 8.2048684e-01 + -4.2905843e-01 + 7.4386853e-01 + 5.4550028e-01 + 1.6546834e+00 + 9.3235427e-01 + -2.3978453e-02 + 5.6542766e-01 + 2.6399046e-01 + -5.8003461e-01 + -4.2401415e-01 + -4.1585934e-01 + -2.3292341e+00 + 2.8095278e-01 + -3.7381209e-02 + 4.8540604e-01 + -4.3058190e-01 + 3.0663306e-02 + -1.6223869e-01 + 1.0673543e+00 + -3.2270724e-01 + 1.6096928e+00 + 7.0881331e-01 + -1.3262657e+00 + -8.6658448e-01 + 1.6230518e+00 + 1.2062315e+00 + 3.0736292e-02 + -4.8507249e-01 + 4.5344341e-01 + -1.7728055e+00 + -5.8851665e-01 + -7.8170061e-01 + 1.3807112e+00 + 9.6331704e-01 + -7.3222792e-01 + -1.1520298e+00 + 2.0514281e+00 + 2.6125135e+00 + -1.5638385e+00 + 1.2422403e+00 + 1.1010884e+00 + -1.8981603e+00 + 4.6118131e-01 + 5.5944973e-01 + -4.9849726e-02 + 8.7087512e-01 + -3.2569520e+00 + -6.7864263e-01 + 6.7467374e-01 + 2.2641261e-01 + 5.7670671e-01 + -1.8522002e+00 + 1.1910535e+00 + 1.4858695e+00 + -1.4665792e+00 + -8.9412475e-01 + -1.5555643e-02 + 4.9453866e-01 + -4.9826938e-01 + -1.3485178e+00 + -2.2061069e-01 + 1.9170229e-01 + 1.3705933e-02 + -1.4263954e+00 + -4.8576653e-02 + 9.5411420e-02 + -5.1099718e-01 + -7.7234089e-01 + 9.3939744e-02 + -7.5306031e-03 + -8.4642690e-01 + -1.2952981e+00 + -2.2496290e+00 + -9.5707327e-01 + -7.8080469e-01 + -2.2568528e-02 + -5.0419599e-01 + -1.5813330e-01 + 1.2654436e-02 + 1.7096540e+00 + 2.0812116e+00 + -9.0956151e-01 + -2.7438506e-01 + -9.2771471e-01 + -5.9655833e-01 + -2.1653114e-01 + -2.0754540e-02 + -1.0045508e-02 + 3.5521922e-01 + -4.9730367e-03 + -3.0306621e-02 + -6.1810076e-01 + -7.2760032e-03 + -2.4689667e-01 + -9.3479287e-03 + 1.0606502e-01 + -2.1872017e+00 + -2.3451116e+00 + -5.4334048e-03 + 1.5824664e-01 + -6.9883293e-01 + -1.0507596e+00 + -1.2689747e-01 + 9.2054254e-01 + -3.1092903e-01 + -1.7526303e-01 + -2.2519223e-02 + 3.9360362e-01 + -5.3563565e-01 + 3.8229361e-01 + -4.3745410e-02 + 5.3959233e-01 + -1.3020818e+00 + -2.7115783e-01 + -2.8851228e-03 + 3.7539884e-01 + -7.9382402e-01 + -7.2198820e-01 + -1.5458927e-02 + 1.8888235e-01 + -3.7149054e-01 + -7.6774979e-01 + -6.1468780e-01 + -9.9117738e-01 + 1.2416965e-01 + -3.5376068e-02 + 1.4645875e-01 + -6.5255439e-01 + -2.8357333e-02 + -1.6877948e+00 + 1.2905836e-02 + 6.6553319e-01 + 2.6627953e+00 + 2.2042987e+00 + 6.0230404e-01 + -1.0562721e+00 + 5.1625454e-01 + -1.3156476e+00 + -8.4150290e-01 + -1.5344197e+00 + 5.0960559e-01 + -1.1831834e+00 + 1.4424776e+00 + 2.9541078e+00 + 7.8359121e-01 + 3.1802005e-01 + -9.7326213e-01 + -1.2878127e+00 + -2.3101887e-01 + -8.3778602e-01 + 3.0522365e-02 + -2.4095502e+00 + 5.7583090e-02 + -8.2950598e-01 + 3.4058121e-01 + -9.5952678e-01 + 9.8995632e-01 + 1.6555600e-01 + -4.8826955e-02 + 9.8164451e-01 + 2.2056359e-01 + 6.1222214e-01 + -2.2871600e-02 + -1.2405845e+00 + -1.1847482e-02 + -7.0693541e-01 + 3.5584363e-01 + -1.9599315e+00 + 8.6801358e-02 + -9.8468047e-01 + -4.7543454e-01 + -9.5725805e-01 + 1.7035109e-01 + -6.1086416e-01 + 9.6900873e-03 + -7.6509431e-02 + 6.1647040e-01 + -8.5837252e-02 + -1.0432316e+00 + 5.4049317e-02 + -1.2632349e+00 + 1.7477356e-02 + -7.1644142e-02 + -5.1446116e-01 + 1.7515757e+00 + 4.4124016e-01 + -1.0891576e-01 + 1.3117826e-01 + -1.4545732e+00 + 1.5600188e-01 + -1.0264823e+00 + 1.7163970e+00 + -2.1161871e+00 + -2.7659209e+00 + 1.1914859e-02 + -1.5993770e+00 + 2.5635638e+00 + 1.2586774e+00 + -2.1482437e+00 + 4.7730151e-01 + -1.1859236e+00 + 1.6749135e+00 + -4.9972497e-02 + 1.1395724e+00 + -1.5923337e+00 + -1.3794301e+00 + -1.8817082e-01 + 3.8936225e-01 + -2.4042067e-01 + -8.5450149e-01 + -5.9953374e-01 + -3.0346897e-01 + -4.4122183e-01 + 8.8261575e-01 + -8.0668241e-01 + 4.2881086e-01 + -1.5606081e+00 + 4.2859793e-01 + -1.3742676e+00 + 9.9328347e-03 + -1.2500426e+00 + -1.0895256e+00 + -7.3715031e-01 + -2.2609261e-01 + -1.7763856e-01 + -1.1882263e+00 + 1.6049725e-01 + 7.2406143e-02 + -7.9275995e-01 + 1.9274653e+00 + -1.0577695e+00 + -1.1794700e-01 + -2.7929199e-01 + 3.0877551e-01 + -1.2493926e-01 + 1.8234780e+00 + 3.6582991e-02 + -1.1440312e+00 + -1.6081604e-01 + 7.2431898e-01 + -4.3476064e-02 + 5.7223046e-01 + -3.0296910e+00 + -2.4203742e+00 + -1.8088571e+00 + 7.9032326e-01 + 3.2279447e-02 + 1.4702298e-02 + 8.5589492e-01 + -4.4538689e-01 + -1.6863515e+00 + 2.2277474e+00 + 6.4718942e-03 + -5.3397065e-01 + -5.3375709e-01 + -1.8962531e+00 + 9.2306399e-01 + 6.1104411e-01 + -9.9028684e-03 + -1.2740175e+00 + -8.4185861e-02 + 2.9369900e-01 + -3.2829079e-01 + 1.5537256e+00 + -2.9375482e-01 + 1.9377233e-02 + -7.7071440e-01 + 1.3044652e+00 + -1.8310229e+00 + -5.2994013e-01 + -3.1108278e-01 + -7.4026924e-01 + -1.0798825e+00 + 4.3720734e-01 + -7.8779936e-01 + -6.1715835e-01 + -7.9118240e-01 + 1.4634629e-01 + -1.3045032e+00 + 4.9530282e-03 + 4.9530282e-03 + 4.9530282e-03 + 4.9530282e-03 + 4.9530282e-03 + 4.3608043e-02 + 4.3608043e-02 + 4.3608043e-02 + 4.3608043e-02 + 4.3608043e-02 + 2.3235502e-02 + 2.3235502e-02 + 2.3235502e-02 + 2.3235502e-02 + 2.3235502e-02 + 1.6144104e-02 + 1.6144104e-02 + 1.6144104e-02 + 1.6144104e-02 + 1.6144104e-02 + 5.8560250e-03 + 5.8560250e-03 + 5.8560250e-03 + 5.8560250e-03 + 5.8560250e-03 + 1.1530891e-02 + 1.1530891e-02 + 1.1530891e-02 + 1.1530891e-02 + 1.1530891e-02 diff --git a/tests/README b/tests/README index 343aefaae9..4a9eb5d6b3 100644 --- a/tests/README +++ b/tests/README @@ -12,7 +12,7 @@ 01_PW: KSDFT calculations in PW basis with multple k-point setting. 02_NAO_Gamma: KSDFT calculations in NAO basis with gamma-only k-point setting. 03_NAO_multik: KSDFT calculations in NAO basis with multiple k-point setting. -04_LJ_DP: Lennard-Jones potentials and Deep Potentials. +04_FF: Force fields, including Lennard-Jones potentials, Deep Potentials and Neuroevolution Potential. 05_rtTDDFT: Real-time TDDFT tests. 06_SDFT: Stochastic DFT tests. 07_OFDFT: Orbital-free DFT tests. diff --git a/tests/integrate/CMakeLists.txt b/tests/integrate/CMakeLists.txt index 8da79197aa..c1db9c03d2 100644 --- a/tests/integrate/CMakeLists.txt +++ b/tests/integrate/CMakeLists.txt @@ -1,5 +1,6 @@ find_program(BASH bash) find_package(Python3 REQUIRED) + if(ENABLE_ASAN) add_test( NAME integrated_test_with_asan @@ -13,10 +14,4 @@ else() COMMAND ${BASH} Autotest.sh -a ${ABACUS_BIN_PATH} -n 4 WORKING_DIRECTORY ${ABACUS_TEST_DIR}/integrate ) - add_executable(sum_cube.exe ${ABACUS_TEST_DIR}/integrate/tools/sum_cube.cpp) - install(TARGETS sum_cube.exe DESTINATION ${ABACUS_TEST_DIR}/integrate/tools/) - - if(ENABLE_COVERAGE) - add_coverage(sum_cube.exe) - endif() -endif() +endif() \ No newline at end of file diff --git a/tests/integrate/README.md b/tests/integrate/README.md index 79ffff96d4..58c6c17d1c 100644 --- a/tests/integrate/README.md +++ b/tests/integrate/README.md @@ -1,4 +1,4 @@ -1. Modify the file general_info +1. Modify the file general_info to include the EXEC address 2. try this script for autotest: ./Autotest.sh > check.txt @@ -21,50 +21,7 @@ NOTES: ####################### -"simple" scripts - ---- - -0-99 Structure Tests (Bravis Lattices, symmetry analysis) - ---- - -100-200 PW basic properties - -100-110: pseudopotentials -(1) Semiconductor (Si), UPF1.0 (s,p,d,f) -(2) UPF2.0 (s,p,d,f) -(3) dojo (s,p,d) - -110-120: smearing methods -(1) Metals -(2) - -120-130: charge mixing -(1) Metals, Charge Mixing Methods, -(2) Surfaces, Charge Mixing Methods - -130-140: diagonalization methods -(1) CG (number of bands/trial wave functions) -(2) Davidson - -140-150: force tests - -* test every components of forces -* small displacements .vs. large displacements - -150-160: stress tests - -160-170: ion relaxatoin - -170-180: cell relaxation - -180-190: md simulations - ---- - -200-300 LCAO basic properties -300-400 LCAO basic Gamma Only properties +ABBREVIATIONS USED IN NAMING THE INTEGRATE TESTS _PW plain wave bases _NO numerical atoms orbitals bases @@ -102,7 +59,8 @@ _MD molecular dynamics _TD real time TDDFT _LR linear response TDDFT -_OH output Halmitonian matrix +_OHK output Hamiltonian and Overlap matrices for each k point +_OHR output Hamiltonian and Overlap matrices with Bravais lattice vectors _OB output bands file _OD output DOS file _OW output wave functions @@ -137,11 +95,7 @@ _MB move ions method: bfgs _1O first-order charge extrapolation _2O second-order charge extrapolation ---- - -900-1000 Orbital free DFT properties - _OF orbital free density functional theory (OFDFT) _OP optimization method used in OFDFT -_KE kinetic energy functional used in OFDFT +_KE kinetic energy functional used in OFDFT _CO convergence check diff --git a/tests/integrate/clean.sh b/tests/integrate/clean.sh index 8738266bd8..0d182f5e39 100755 --- a/tests/integrate/clean.sh +++ b/tests/integrate/clean.sh @@ -55,7 +55,7 @@ for directory in `ls | grep $module`; do #-------------------------------------------- # delete exec files in tools directory (if it exists) #-------------------------------------------- - sumfile1="$directory/sum_cube.exe" + sumfile1="$directory/sum_cube" test -e "$sumfile1" && rm -rf $sumfile1 #-------------------------------------------- diff --git a/tests/integrate/tools/catch_deepks_properties.sh b/tests/integrate/tools/catch_deepks_properties.sh index e49a3c6b26..d9039d261e 100644 --- a/tests/integrate/tools/catch_deepks_properties.sh +++ b/tests/integrate/tools/catch_deepks_properties.sh @@ -37,12 +37,23 @@ process_npy() { local total="0" local file_pattern="" local base_pattern="" + + # Check if force or stress + local is_force_or_stress=0 + if [ "$file_prefix" = "ftot" ] || [ "$file_prefix" = "stot" ]; then + is_force_or_stress=1 + fi # Determine file pattern based on mode if [ "$mode" = "multi" ]; then - # multi mode: multiple files with _e* suffix from different electronic steps - file_pattern="OUT.autotest/DeePKS_Labels_Elec/${file_prefix}_e*.npy" - base_pattern="OUT.autotest/DeePKS_Labels_Elec/${base_prefix}_e*.npy" + # multi mode: multiple files with _e* suffix from different electronic steps, unless for force and stress + if [ "$is_force_or_stress" -eq 1 ] ; then + file_pattern="OUT.autotest/DeePKS_Labels_Elec/${file_prefix}.npy" + base_pattern="OUT.autotest/DeePKS_Labels_Elec/${base_prefix}.npy" + else + file_pattern="OUT.autotest/DeePKS_Labels_Elec/${file_prefix}_e*.npy" + base_pattern="OUT.autotest/DeePKS_Labels_Elec/${base_prefix}_e*.npy" + fi elif [ "$mode" = "single" ];then # single mode: single file file_pattern="OUT.autotest/deepks_${file_prefix}.npy" @@ -63,7 +74,7 @@ process_npy() { # Get corresponding base file local base_file="" - if [ "$mode" = "multi" ]; then + if [ "$mode" = "multi" ] && [ "$is_force_or_stress" -ne 1 ]; then base_file="OUT.autotest/DeePKS_Labels_Elec/${base_prefix}_${step}.npy" else base_file=$base_pattern @@ -100,9 +111,9 @@ process_many_npys() { # energy process_npy "$mode" "abs" "etot" "" "deepks_e_label$suffix" "$output_file" process_npy "$mode" "delta" "etot" "ebase" "deepks_edelta$suffix" "$output_file" - - # For deepks_bandgap = 1 - if ! test -z "$deepks_bandgap" && [ $deepks_bandgap == 1 ]; then + + # For deepks_bandgap > 0 + if ! test -z "$deepks_bandgap" && [ $deepks_bandgap -gt 0 ]; then process_npy "$mode" "abs" "otot" "" "deepks_o_label$suffix" "$output_file" process_npy "$mode" "delta" "otot" "obase" "deepks_odelta$suffix" "$output_file" process_npy "$mode" "numpy" "orbpre" "" "deepks_oprec$suffix" "$output_file" @@ -120,6 +131,17 @@ process_many_npys() { process_npy "$mode" "numpy" "gevdm" "" "deepks_gevdm$suffix" "$output_file" fi fi + + if ! test -z "$has_force" && [ $has_force == 1 ]; then + process_npy "$mode" "abs" "ftot" "" "deepks_f_label$suffix" "$output_file" + process_npy "$mode" "delta" "ftot" "fbase" "deepks_fdelta$suffix" "$output_file" + fi + + # For cal_stress = 1 + if ! test -z "$has_stress" && [ $has_stress == 1 ]; then + process_npy "$mode" "abs" "stot" "" "deepks_s_label$suffix" "$output_file" + process_npy "$mode" "delta" "stot" "sbase" "deepks_sdelta$suffix" "$output_file" + fi } # Main script @@ -150,18 +172,14 @@ fi if ! test -z "$deepks_out_labels" && [ $deepks_out_labels == 1 ]; then process_many_npys "single" "" "$1" - # force and stress not considered in deepks_out_freq_elec > 0, so not in process_many_npys + # gradvx and gvepsl not considered in deepks_out_freq_elec > 0, so not in process_many_npys # For cal_force = 1 if ! test -z "$has_force" && [ $has_force == 1 ]; then - process_npy "single" "abs" "ftot" "" "deepks_f_label" "$1" - process_npy "single" "delta" "ftot" "fbase" "deepks_fdelta" "$1" process_npy "single" "abs" "gradvx" "" "deepks_fpre" "$1" fi # For cal_stress = 1 if ! test -z "$has_stress" && [ $has_stress == 1 ]; then - process_npy "single" "abs" "stot" "" "deepks_s_label" "$1" - process_npy "single" "delta" "stot" "sbase" "deepks_sdelta" "$1" process_npy "single" "abs" "gvepsl" "" "deepks_spre" "$1" fi @@ -185,6 +203,11 @@ if ! test -z "$deepks_out_labels" && [ $deepks_out_labels == 1 ]; then # Process deepks_out_freq_elec > 0 if [ ! -z "$deepks_out_freq_elec" ] && [ $deepks_out_freq_elec -gt 0 ]; then process_many_npys "multi" "_elec" "$1" + if ! test -z "$deepks_v_delta" && [[ $deepks_v_delta -gt 0 ]]; then + process_npy "single" "abs" "overlap" "" "deepks_overlap" "$1" + process_npy "multi" "abs" "overlap" "" "deepks_overlap_elec" "$1" + + fi fi fi diff --git a/tests/integrate/tools/catch_properties.sh b/tests/integrate/tools/catch_properties.sh index a5b1d9eb17..51c8a17b51 100755 --- a/tests/integrate/tools/catch_properties.sh +++ b/tests/integrate/tools/catch_properties.sh @@ -3,7 +3,8 @@ # mohan add 2025-05-03 # this compare script is used in different integrate tests COMPARE_SCRIPT="../../integrate/tools/CompareFile.py" -SUM_CUBE_EXE="../../integrate/tools/sum_cube.exe" +#COMPARE_SCRIPT="../../integrate/tools/compare_file.py" +SUM_CUBE_EXE="python3 ../../integrate/tools/sum_cube.py" sum_file(){ @@ -39,7 +40,12 @@ file=$1 # the command will ignore lines starting with # calculation=`grep calculation INPUT | grep -v '^#' | awk '{print $2}' | sed s/[[:space:]]//g` -running_path=`echo "OUT.autotest/running_$calculation"".log"` +# running_path=`echo "OUT.autotest/running_$calculation"".log"` +running_path=$(ls OUT.autotest/running_${calculation}*.log 2>/dev/null | head -1) +if [ -z "$running_path" ]; then + echo "Error: No running log file found for calculation=$calculation in OUT.autotest/" + exit 1 +fi #echo $running_path natom=`grep -En '(^|[[:space:]])TOTAL ATOM NUMBER($|[[:space:]])' $running_path | tail -1 | awk '{print $6}'` @@ -72,6 +78,7 @@ out_pband=$(get_input_key_value "out_proj_band" "INPUT") toW90=$(get_input_key_value "towannier90" "INPUT") has_mat_r=$(get_input_key_value "out_mat_r" "INPUT") has_mat_t=$(get_input_key_value "out_mat_t" "INPUT") +has_mat_syns=$(get_input_key_value "cal_syns" "INPUT") has_mat_dh=$(get_input_key_value "out_mat_dh" "INPUT") has_scan=$(get_input_key_value "dft_functional" "INPUT") out_chg=$(get_input_key_value "out_chg" "INPUT") @@ -82,6 +89,7 @@ base=$(get_input_key_value "basis_type" "INPUT") word_total_time="atomic_world" symmetry=$(get_input_key_value "symmetry" "INPUT") out_current=$(get_input_key_value "out_current" "INPUT") +nspin=$(get_input_key_value "nspin" "INPUT") test -e $1 && rm $1 #------------------------------------------------------------ @@ -138,7 +146,7 @@ fi # echo $total_charge #------------------------------- if ! test -z "$has_dos" && [ $has_dos == 1 ]; then - total_dos=`cat OUT.autotest/doss1*.txt | awk 'END {print}' | awk '{print $3}'` + total_dos=`cat OUT.autotest/dos*.txt | awk 'END {print}' | awk '{print $3}'` echo "totaldosref $total_dos" >> $1 fi @@ -157,8 +165,8 @@ fi # echo $out_dm1 #------------------------------- if ! test -z "$out_dm1" && [ $out_dm1 == 1 ]; then - dm1ref=dmrs1_nao.csr.ref - dm1cal=OUT.autotest/dmrs1_nao.csr + dm1ref=dmr_nao.csr.ref + dm1cal=OUT.autotest/dmr_nao.csr python3 $COMPARE_SCRIPT $dm1ref $dm1cal 8 echo "CompareDM1_pass $?" >>$1 fi @@ -167,8 +175,8 @@ fi # echo $out_pot1 #------------------------------- if ! test -z "$out_pot" && [ $out_pot == 1 ]; then - pot1ref=pots1.cube.ref - pot1cal=OUT.autotest/pots1.cube + pot1ref=pot.cube.ref + pot1cal=OUT.autotest/pot.cube python3 $COMPARE_SCRIPT $pot1ref $pot1cal 3 echo "ComparePot1_pass $?" >>$1 fi @@ -177,8 +185,8 @@ fi #echo $out_pot2 #------------------------------- if ! test -z "$out_pot" && [ $out_pot == 2 ]; then - pot1ref=pot_es.cube.ref - pot1cal=OUT.autotest/pot_es.cube + pot1ref=potes.cube.ref + pot1cal=OUT.autotest/potes.cube python3 $COMPARE_SCRIPT $pot1ref $pot1cal 8 echo "ComparePot_pass $?" >>$1 fi @@ -188,8 +196,8 @@ fi # echo $out_elf #------------------------------- if ! test -z "$out_elf" && [ $out_elf == 1 ]; then - elf1ref=refELF.cube - elf1cal=OUT.autotest/ELF.cube + elf1ref=refelf.cube + elf1cal=OUT.autotest/elf.cube python3 $COMPARE_SCRIPT $elf1ref $elf1cal 3 echo "ComparePot1_pass $?" >>$1 fi @@ -243,34 +251,90 @@ fi # echo $has_band #------------------------------- if ! test -z "$has_band" && [ $has_band == 1 ]; then - bandref=eigs1.txt.ref - bandcal=OUT.autotest/eigs1.txt + bandref=band.txt.ref + bandcal=OUT.autotest/band.txt python3 $COMPARE_SCRIPT $bandref $bandcal 8 echo "CompareBand_pass $?" >>$1 fi + #-------------------------------- # Hamiltonian and overlap matrix # echo $has_hs #-------------------------------- -if ! test -z "$has_hs" && [ $has_hs == 1 ]; then - if ! test -z "$gamma_only" && [ $gamma_only == 1 ]; then - href=hks1_nao.txt.ref - hcal=OUT.autotest/hks1_nao.txt - sref=sks1_nao.txt.ref - scal=OUT.autotest/sks1_nao.txt - else # multiple k-points - href=hks1k2_nao.txt.ref - hcal=OUT.autotest/hks1k2_nao.txt - sref=sks1k2_nao.txt.ref - scal=OUT.autotest/sks1k2_nao.txt +if ! test -z "$has_hs" && [ $has_hs == 1 ]; then + if ! test -z "$gamma_only" && [ $gamma_only == 1 ]; then + # ========== Γ-point (single k-point) calculation ========== + if ! test -z "$nspin" && [ $nspin == 2 ]; then + # nspin=2 (spin-polarized): compare hks1 + hks2 Hamiltonian + sk overlap matrix + h1ref=hks1_nao.txt.ref + h1cal=OUT.autotest/hks1_nao.txt + h2ref=hks2_nao.txt.ref + h2cal=OUT.autotest/hks2_nao.txt + sref=sk_nao.txt.ref + scal=OUT.autotest/sk_nao.txt + # Compare Hamiltonian matrix for spin 1 + python3 $COMPARE_SCRIPT $h1ref $h1cal 6 + echo "CompareH1_pass $?" >>$1 + # Compare Hamiltonian matrix for spin 2 + python3 $COMPARE_SCRIPT $h2ref $h2cal 6 + echo "CompareH2_pass $?" >>$1 + # Compare overlap matrix + python3 $COMPARE_SCRIPT $sref $scal 8 + echo "CompareS_pass $?" >>$1 + elif ! test -z "$nspin" && [ $nspin == 4 ]; then + # nspin=4 : do nothing, only matching condition without any operation + true + else + # nspin=1 (non-spin-polarized, default case): compare single hk + sk matrix set + href=hk_nao.txt.ref + hcal=OUT.autotest/hk_nao.txt + sref=sk_nao.txt.ref + scal=OUT.autotest/sk_nao.txt + # Compare Hamiltonian matrix + python3 $COMPARE_SCRIPT $href $hcal 6 + echo "CompareH_pass $?" >>$1 + # Compare overlap matrix + python3 $COMPARE_SCRIPT $sref $scal 8 + echo "CompareS_pass $?" >>$1 fi - - python3 $COMPARE_SCRIPT $href $hcal 6 - echo "CompareH_pass $?" >>$1 - python3 $COMPARE_SCRIPT $sref $scal 8 - echo "CompareS_pass $?" >>$1 + else + # ========== Multiple k-points calculation ========== + if ! test -z "$nspin" && [ $nspin == 2 ]; then + # nspin=2 (spin-polarized): compare hks1_2 + hks2_2 Hamiltonian + sk2 overlap matrix + h1ref=hks1_2_nao.txt.ref + h1cal=OUT.autotest/hks1_2_nao.txt + h2ref=hks2_2_nao.txt.ref + h2cal=OUT.autotest/hks2_2_nao.txt + sref=sk2_nao.txt.ref + scal=OUT.autotest/sk2_nao.txt + # Compare Hamiltonian matrix for spin 1 + python3 $COMPARE_SCRIPT $h1ref $h1cal 6 + echo "CompareH1_pass $?" >>$1 + # Compare Hamiltonian matrix for spin 2 + python3 $COMPARE_SCRIPT $h2ref $h2cal 6 + echo "CompareH2_pass $?" >>$1 + # Compare overlap matrix + python3 $COMPARE_SCRIPT $sref $scal 8 + echo "CompareS_pass $?" >>$1 + elif ! test -z "$nspin" && [ $nspin == 4 ]; then + # nspin=4 : do nothing, only matching condition without any operation + true + else + # nspin=1 (non-spin-polarized, default case): compare single hk2 + sk2 matrix set + href=hk2_nao.txt.ref + hcal=OUT.autotest/hk2_nao.txt + sref=sk2_nao.txt.ref + scal=OUT.autotest/sk2_nao.txt + # Compare Hamiltonian matrix + python3 $COMPARE_SCRIPT $href $hcal 6 + echo "CompareH_pass $?" >>$1 + # Compare overlap matrix + python3 $COMPARE_SCRIPT $sref $scal 8 + echo "CompareS_pass $?" >>$1 + fi + fi fi #-------------------------------- @@ -278,11 +342,11 @@ fi #-------------------------------- if ! test -z "$has_xc" && [ $has_xc == 1 ]; then if ! test -z "$gamma_only" && [ $gamma_only == 1 ]; then - xcref=vxcs1_nao.txt.ref - xccal=OUT.autotest/vxcs1_nao.txt + xcref=vxc_nao.txt.ref + xccal=OUT.autotest/vxc_nao.txt else - xcref=vxcs1k2_nao.txt.ref - xccal=OUT.autotest/vxcs1k2_nao.txt + xcref=vxck2_nao.txt.ref + xccal=OUT.autotest/vxck2_nao.txt fi oeref=vxc_out.ref oecal=OUT.autotest/vxc_out.dat @@ -353,6 +417,15 @@ if ! test -z "$has_mat_t" && [ $has_mat_t == 1 ]; then echo "ComparerTR_pass $?" >>$1 fi +#----------------------------------- +# Asynchronous overlap matrix for Hefei-NAMD +#----------------------------------- +#echo $has_mat_syns +if ! test -z "$has_mat_syns" && [ $has_mat_syns == 1 ]; then + python3 $COMPARE_SCRIPT syns_nao.csr.ref OUT.autotest/syns_nao.csr 8 + echo "CompareSYNS_pass $?" >>$1 +fi + #----------------------------------- # matrix #----------------------------------- @@ -366,16 +439,24 @@ if ! test -z "$has_mat_dh" && [ $has_mat_dh == 1 ]; then echo "ComparerdHRz_pass $?" >>$1 fi +#--------------------------------------- +# Charge density +#--------------------------------------- +#echo $out_chg +if ! test -z "$out_chg" && [ $out_chg -ge 1 ]; then + python3 $COMPARE_SCRIPT chg.cube.ref OUT.autotest/chg.cube 8 + echo "chg.cube_pass $?" >>$1 +fi + + #--------------------------------------- # SCAN exchange-correlation information #echo $has_scan #--------------------------------------- if ! test -z "$has_scan" && [ $has_scan == "scan" ] && \ ! test -z "$out_chg" && [ $out_chg == 1 ]; then - python3 $COMPARE_SCRIPT chgs1.cube.ref OUT.autotest/chgs1.cube 8 - echo "chgs1.cube_pass $?" >>$1 - python3 $COMPARE_SCRIPT taus1.cube.ref OUT.autotest/taus1.cube 8 - echo "taus1.cube_pass $?" >>$1 + python3 $COMPARE_SCRIPT tau.cube.ref OUT.autotest/tau.cube 8 + echo "tau.cube_pass $?" >>$1 fi #--------------------------------------- @@ -383,7 +464,7 @@ fi # echo $has_ldos #--------------------------------------- if ! test -z "$has_ldos" && [ $has_ldos == 1 ]; then - stm_bias=$(get_input_key_value "stm_bias" "OUT.autotest/INPUT") + stm_bias=$(get_input_key_value "stm_bias" "OUT.autotest/INPUT.info") python3 $COMPARE_SCRIPT LDOS.cube.ref OUT.autotest/LDOS_"$stm_bias"eV.cube 8 echo "LDOS.cube_pass $?" >> $1 fi @@ -417,8 +498,22 @@ fi # echo "$has_wfc_pw" ## test out_wfc_pw > 0 #-------------------------------------------- if ! test -z "$has_wfc_pw" && [ $has_wfc_pw == 1 ]; then - if [[ ! -f OUT.autotest/wfs1k1_pw.txt ]];then - echo "Can't find file OUT.autotest/wfs1k1_pw.txt" + + # according to nspin value + if [ "$nspin" -eq 1 ]; then + filename="wfk1_pw.txt" + elif [ "$nspin" -eq 2 ]; then + filename="wfk1s1_pw.txt" + else + # other nspin cases + echo "Unsupported nspin value: $nspin" + exit 1 + fi + + full_path="OUT.autotest/$filename" + + if [[ ! -f "$full_path" ]];then + echo "Can't find file $full_path" exit 1 fi awk 'BEGIN {max=0;read=0;band=1} @@ -433,7 +528,7 @@ if ! test -z "$has_wfc_pw" && [ $has_wfc_pw == 1 ]; then if(sqrt($i*$i)>max) {max=sqrt($i*$i)} } } - }' OUT.autotest/wfs1k1_pw.txt >> $1 + }' "$full_path" >> "$1" fi @@ -443,15 +538,15 @@ fi #-------------------------------------------- if ! test -z "$has_lowf" && [ $has_lowf == 1 ]; then if ! test -z "$gamma_only" && [ $gamma_only == 1 ]; then - wfc_cal=OUT.autotest/wfs1_nao.txt - wfc_ref=wfs1_nao.txt.ref + wfc_cal=OUT.autotest/wf_nao.txt + wfc_ref=wf_nao.txt.ref else # multi-k point case if ! test -z "$out_app_flag" && [ $out_app_flag == 0 ]; then - wfc_name=wfs1k1g3_nao - input_file=WFC/wfs1k1g3_nao + wfc_name=wfk1g3_nao + input_file=WFC/wfk1g3_nao else - wfc_name=wfs1k2_nao - input_file=wfs1k2_nao + wfc_name=wfk2_nao + input_file=wfk2_nao fi awk 'BEGIN {flag=999} { @@ -477,8 +572,8 @@ fi # density matrix information #-------------------------------------------- if ! test -z "$out_dm" && [ $out_dm == 1 ]; then - dmfile=OUT.autotest/dms1_nao.txt - dmref=dms1_nao.txt.ref + dmfile=OUT.autotest/dm_nao.txt + dmref=dm_nao.txt.ref if test -z "$dmfile"; then echo "Can't find DM files" exit 1 @@ -571,8 +666,8 @@ fi # check currents in rt-TDDFT #-------------------------------------------- if ! test -z "$out_current" && [ $out_current ]; then - current1ref=refcurrent_total.dat - current1cal=OUT.autotest/current_total.dat + current1ref=current_tot.txt.ref + current1cal=OUT.autotest/current_tot.txt python3 $COMPARE_SCRIPT $current1ref $current1cal 10 echo "CompareCurrent_pass $?" >>$1 fi @@ -625,6 +720,47 @@ if ! test -z "$rdmft" && [[ $rdmft == 1 ]]; then echo "" >>$1 fi +#-------------------------------------------- +# Check if out_alllog is set to 1 +# and verify running*.log filenames +#-------------------------------------------- +out_alllog=$(get_input_key_value "out_alllog" "INPUT") +if ! test -z "$out_alllog" && [ $out_alllog -eq 1 ]; then + calculation=$(get_input_key_value "calculation" "INPUT") + + if [ -z "$calculation" ]; then + echo "Error: calculation parameter not found in INPUT" + exit 1 + fi + + # Find all running*.log files in OUT.autotest directory + log_files=$(ls OUT.autotest/running*.log 2>/dev/null) + + if [ -z "$log_files" ]; then + echo "Error: No running*.log files found in OUT.autotest/" + exit 1 + fi + + # Check each log file name contains the calculation parameter + all_valid=true + for log_file in $log_files; do + filename=$(basename "$log_file") + if [[ ! "$filename" =~ running_${calculation}_ ]]; then + echo "Error: Invalid log filename $filename - should contain 'running_${calculation}_'" + all_valid=false + fi + done + + if $all_valid; then + echo "All log filenames contain 'running_${calculation}_' - validation passed" + echo "log_filename_validation 1" >>$1 + else + echo "Error: Some log filenames do not contain 'running_${calculation}_'" + echo "log_filename_validation 0" >>$1 + exit 1 + fi +fi + #-------------------------------------------- # Check time information #-------------------------------------------- diff --git a/tests/integrate/tools/sum_cube.cpp b/tests/integrate/tools/sum_cube.cpp deleted file mode 100644 index c2773cbfed..0000000000 --- a/tests/integrate/tools/sum_cube.cpp +++ /dev/null @@ -1,70 +0,0 @@ -#include -#include -#include -#include -#include -#include - -using namespace std; - -int main(int argc, char** argv) -{ - string input_file = argv[1]; - - ifstream inp(input_file.c_str(), ios::in); - - if (!inp) - { - cout << "Can't find " << input_file << " !" << endl; - return 1; - } - - // skip the first two lines - string tmpstring; - for (int i = 0; i < 2; i++) - { - getline(inp, tmpstring); - } - - // read the 3rd line: number of atoms + origin coordinates - int natom; - double origin_x, origin_y, origin_z; - inp >> natom >> origin_x >> origin_y >> origin_z; - getline(inp, tmpstring); - - // read the grid vectors (support non-orthogonal) - double v1[3], v2[3], v3[3]; - int nx, ny, nz; - inp >> nx >> v1[0] >> v1[1] >> v1[2]; - inp >> ny >> v2[0] >> v2[1] >> v2[2]; - inp >> nz >> v3[0] >> v3[1] >> v3[2]; - - // calculate the volume element |v1 · (v2 × v3)| - double volume = fabs(v1[0] * (v2[1] * v3[2] - v2[2] * v3[1]) - v1[1] * (v2[0] * v3[2] - v2[2] * v3[0]) - + v1[2] * (v2[0] * v3[1] - v2[1] * v3[0])); - - getline(inp, tmpstring); - - // skip the atom coordinates - for (int i = 0; i < natom; ++i) - { - getline(inp, tmpstring); - } - - int nr = nx * ny * nz; - - double sum = 0.0; - double env = 0.0; - for (int i = 0; i < nr; i++) - { - inp >> env; - sum += env; - } - - double ne = 0.0; - - ne = sum * volume; - std::cout << setprecision(10) << ne << std::endl; - - return 0; -} diff --git a/tests/integrate/tools/sum_cube.py b/tests/integrate/tools/sum_cube.py new file mode 100755 index 0000000000..3e5657fdf3 --- /dev/null +++ b/tests/integrate/tools/sum_cube.py @@ -0,0 +1,96 @@ +#!/usr/bin/env python3 +import sys + +def main(): + if len(sys.argv) < 2: + print(f"Can't find {sys.argv[1] if len(sys.argv) > 1 else 'file'} !") + sys.exit(1) + + input_file = sys.argv[1] + + try: + with open(input_file, 'r') as inp: + # skip the first two lines + inp.readline() + inp.readline() + + # read the 3rd line: number of atoms + origin coordinates + line = inp.readline().split() + if not line: + return + natom = int(line[0]) + # origin_x = float(line[1]) + # origin_y = float(line[2]) + # origin_z = float(line[3]) + + # read the grid vectors (support non-orthogonal) + line = inp.readline().split() + nx = int(line[0]) + v1 = [float(line[1]), float(line[2]), float(line[3])] + + line = inp.readline().split() + ny = int(line[0]) + v2 = [float(line[1]), float(line[2]), float(line[3])] + + line = inp.readline().split() + nz = int(line[0]) + v3 = [float(line[1]), float(line[2]), float(line[3])] + + # calculate the volume element |v1 · (v2 × v3)| + val0 = v2[1] * v3[2] - v2[2] * v3[1] + val1 = v2[0] * v3[2] - v2[2] * v3[0] + val2 = v2[0] * v3[1] - v2[1] * v3[0] + + volume = abs(v1[0] * val0 - v1[1] * val1 + v1[2] * val2) + + # skip the atom coordinates + # natom can be negative in cube files sometimes? + # C++ code: for (int i = 0; i < natom; ++i) + # If natom is negative, loop doesn't run. + + atoms_to_skip = natom + if atoms_to_skip < 0: + # In some cube formats, negative natom means second line of header contains units or something? + # Standard: "If the number of atoms is negative, that indicates that the file contains input lines... One line for each non-zero E value." + # But the C++ code simple loops < natom. If natom < 0, it skips 0 lines. + # We will mimic C++ behavior assuming it works for the files they have. + atoms_to_skip = 0 # Loop won't run if natom < 0 + + for _ in range(atoms_to_skip): + inp.readline() + + nr = nx * ny * nz + + total_sum = 0.0 + count = 0 + + # Read grid values + # iterate over remaining lines to handle values spread across lines + for line in inp: + parts = line.split() + for part in parts: + total_sum += float(part) + count += 1 + if count >= nr: + break + if count >= nr: + break + + ne = total_sum * volume + # cout default precision is 6, but setprecision(10) changes it. + # Python's default float printing is usually sufficient, but let's use formatting to be sure. + # {:.10g} prints up to 10 significant digits. + print(f"{ne:.10g}") + + except FileNotFoundError: + print(f"Can't find {input_file} !") + sys.exit(1) + except Exception as e: + # C++ doesn't print other errors generally, but let's be safe. + # But to be functionally equivalent, maybe we shouldn't. + # The C++ code crashes or behaves weirdly on bad input. + # Let's just exit 1. + sys.exit(1) + +if __name__ == "__main__": + main() diff --git a/tests/libxc/Si_gammapoint_nspin1/INPUT b/tests/libxc/Si_gammapoint_nspin1/INPUT index 156dc96669..e13967dd33 100644 --- a/tests/libxc/Si_gammapoint_nspin1/INPUT +++ b/tests/libxc/Si_gammapoint_nspin1/INPUT @@ -1,16 +1,16 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf -ntype 1 -nbands 6 -symmetry 1 -pseudo_dir ./ +suffix autotest +calculation scf +ntype 1 +nbands 6 +symmetry 1 +pseudo_dir ./ #Parameters (2.Iteration) -ecutwfc 20 -scf_thr 1e-9 -scf_nmax 100 +ecutwfc 20 +scf_thr 1e-9 +scf_nmax 100 #Parameters (3.Basis) -basis_type pw +basis_type pw diff --git a/tests/libxc/Si_gammapoint_nspin2/INPUT b/tests/libxc/Si_gammapoint_nspin2/INPUT index 76a28577c1..52b2655d3d 100644 --- a/tests/libxc/Si_gammapoint_nspin2/INPUT +++ b/tests/libxc/Si_gammapoint_nspin2/INPUT @@ -1,17 +1,17 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf -ntype 1 -nbands 6 -symmetry 1 -pseudo_dir ./ -nspin 2 +suffix autotest +calculation scf +ntype 1 +nbands 6 +symmetry 1 +pseudo_dir ./ +nspin 2 #Parameters (2.Iteration) -ecutwfc 20 -scf_thr 1e-9 -scf_nmax 100 +ecutwfc 20 +scf_thr 1e-9 +scf_nmax 100 #Parameters (3.Basis) -basis_type pw +basis_type pw diff --git a/tests/libxc/Si_ksampling_nspin1/INPUT b/tests/libxc/Si_ksampling_nspin1/INPUT index 156dc96669..e13967dd33 100644 --- a/tests/libxc/Si_ksampling_nspin1/INPUT +++ b/tests/libxc/Si_ksampling_nspin1/INPUT @@ -1,16 +1,16 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf -ntype 1 -nbands 6 -symmetry 1 -pseudo_dir ./ +suffix autotest +calculation scf +ntype 1 +nbands 6 +symmetry 1 +pseudo_dir ./ #Parameters (2.Iteration) -ecutwfc 20 -scf_thr 1e-9 -scf_nmax 100 +ecutwfc 20 +scf_thr 1e-9 +scf_nmax 100 #Parameters (3.Basis) -basis_type pw +basis_type pw diff --git a/tests/libxc/Si_ksampling_nspin2/INPUT b/tests/libxc/Si_ksampling_nspin2/INPUT index 76a28577c1..52b2655d3d 100644 --- a/tests/libxc/Si_ksampling_nspin2/INPUT +++ b/tests/libxc/Si_ksampling_nspin2/INPUT @@ -1,17 +1,17 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf -ntype 1 -nbands 6 -symmetry 1 -pseudo_dir ./ -nspin 2 +suffix autotest +calculation scf +ntype 1 +nbands 6 +symmetry 1 +pseudo_dir ./ +nspin 2 #Parameters (2.Iteration) -ecutwfc 20 -scf_thr 1e-9 -scf_nmax 100 +ecutwfc 20 +scf_thr 1e-9 +scf_nmax 100 #Parameters (3.Basis) -basis_type pw +basis_type pw diff --git a/tests/performance/P000_si16_pw/INPUT b/tests/performance/P000_si16_pw/INPUT index a195787ad0..bba08be54d 100644 --- a/tests/performance/P000_si16_pw/INPUT +++ b/tests/performance/P000_si16_pw/INPUT @@ -1,25 +1,25 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf +suffix autotest +calculation scf #nbands 8 -symmetry 1 +symmetry 1 #Parameters (2.Iteration) -ecutwfc 60 -scf_thr 1e-8 -scf_nmax 100 -cal_force 1 -cal_stress 1 +ecutwfc 60 +scf_thr 1e-8 +scf_nmax 100 +cal_force 1 +cal_stress 1 #Parameters (3.Basis) -basis_type pw +basis_type pw #Parameters (4.Smearing) -smearing_method gauss -smearing_sigma 0.002 +smearing_method gauss +smearing_sigma 0.002 #Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.3 -ks_solver dav \ No newline at end of file +mixing_type broyden +mixing_beta 0.3 +ks_solver dav diff --git a/tests/performance/P001_si32_pw/INPUT b/tests/performance/P001_si32_pw/INPUT index 783c0cb3dd..e8b8055ea4 100644 --- a/tests/performance/P001_si32_pw/INPUT +++ b/tests/performance/P001_si32_pw/INPUT @@ -1,24 +1,24 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf +suffix autotest +calculation scf #nbands 8 -symmetry 1 +symmetry 1 #Parameters (2.Iteration) -ecutwfc 60 -scf_thr 1e-8 -scf_nmax 100 -cal_force 1 -cal_stress 1 +ecutwfc 60 +scf_thr 1e-8 +scf_nmax 100 +cal_force 1 +cal_stress 1 #Parameters (3.Basis) -basis_type pw +basis_type pw #Parameters (4.Smearing) -smearing_method gauss -smearing_sigma 0.002 +smearing_method gauss +smearing_sigma 0.002 #Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.3 +mixing_type broyden +mixing_beta 0.3 diff --git a/tests/performance/P002_si64_pw/INPUT b/tests/performance/P002_si64_pw/INPUT index 5a6727692b..e8b8055ea4 100644 --- a/tests/performance/P002_si64_pw/INPUT +++ b/tests/performance/P002_si64_pw/INPUT @@ -1,24 +1,24 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf +suffix autotest +calculation scf #nbands 8 -symmetry 1 +symmetry 1 #Parameters (2.Iteration) -ecutwfc 60 -scf_thr 1e-8 -scf_nmax 100 -cal_force 1 -cal_stress 1 +ecutwfc 60 +scf_thr 1e-8 +scf_nmax 100 +cal_force 1 +cal_stress 1 #Parameters (3.Basis) -basis_type pw +basis_type pw #Parameters (4.Smearing) -smearing_method gauss -smearing_sigma 0.002 +smearing_method gauss +smearing_sigma 0.002 #Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.3 \ No newline at end of file +mixing_type broyden +mixing_beta 0.3 diff --git a/tests/performance/P003_si128_pw/INPUT b/tests/performance/P003_si128_pw/INPUT index 0b669f4e03..bba08be54d 100644 --- a/tests/performance/P003_si128_pw/INPUT +++ b/tests/performance/P003_si128_pw/INPUT @@ -1,25 +1,25 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf +suffix autotest +calculation scf #nbands 8 -symmetry 1 +symmetry 1 #Parameters (2.Iteration) -ecutwfc 60 -scf_thr 1e-8 -scf_nmax 100 -cal_force 1 -cal_stress 1 +ecutwfc 60 +scf_thr 1e-8 +scf_nmax 100 +cal_force 1 +cal_stress 1 #Parameters (3.Basis) -basis_type pw +basis_type pw #Parameters (4.Smearing) -smearing_method gauss -smearing_sigma 0.002 +smearing_method gauss +smearing_sigma 0.002 #Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.3 -ks_solver dav +mixing_type broyden +mixing_beta 0.3 +ks_solver dav diff --git a/tests/performance/P004_cu4_pw/INPUT b/tests/performance/P004_cu4_pw/INPUT index a92c76479c..dd41792e7b 100644 --- a/tests/performance/P004_cu4_pw/INPUT +++ b/tests/performance/P004_cu4_pw/INPUT @@ -1,24 +1,24 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf +suffix autotest +calculation scf #nbands 8 -symmetry 1 +symmetry 1 #Parameters (2.Iteration) -ecutwfc 130 -scf_thr 1e-8 -scf_nmax 100 -cal_force 1 -cal_stress 1 +ecutwfc 130 +scf_thr 1e-8 +scf_nmax 100 +cal_force 1 +cal_stress 1 #Parameters (3.Basis) -basis_type pw +basis_type pw #Parameters (4.Smearing) -smearing_method gauss -smearing_sigma 0.002 +smearing_method gauss +smearing_sigma 0.002 #Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.3 +mixing_type broyden +mixing_beta 0.3 diff --git a/tests/performance/P005_Bi2Se2Cu2O2_pw/INPUT b/tests/performance/P005_Bi2Se2Cu2O2_pw/INPUT index b0c77edc4f..0d7e1cce46 100644 --- a/tests/performance/P005_Bi2Se2Cu2O2_pw/INPUT +++ b/tests/performance/P005_Bi2Se2Cu2O2_pw/INPUT @@ -1,21 +1,21 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf -symmetry 1 +suffix autotest +calculation scf +symmetry 1 #Parameters (2.Iteration) -ecutwfc 80 -scf_thr 1e-7 -scf_nmax 100 -cal_force 1 -cal_stress 1 +ecutwfc 80 +scf_thr 1e-7 +scf_nmax 100 +cal_force 1 +cal_stress 1 #Parameters (3.Basis) -basis_type pw +basis_type pw #Parameters (4.Smearing) -smearing_method fixed +smearing_method fixed #Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.3 +mixing_type broyden +mixing_beta 0.3 diff --git a/tests/performance/P006_Ge4As8_pw/INPUT b/tests/performance/P006_Ge4As8_pw/INPUT index b0c77edc4f..0d7e1cce46 100644 --- a/tests/performance/P006_Ge4As8_pw/INPUT +++ b/tests/performance/P006_Ge4As8_pw/INPUT @@ -1,21 +1,21 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf -symmetry 1 +suffix autotest +calculation scf +symmetry 1 #Parameters (2.Iteration) -ecutwfc 80 -scf_thr 1e-7 -scf_nmax 100 -cal_force 1 -cal_stress 1 +ecutwfc 80 +scf_thr 1e-7 +scf_nmax 100 +cal_force 1 +cal_stress 1 #Parameters (3.Basis) -basis_type pw +basis_type pw #Parameters (4.Smearing) -smearing_method fixed +smearing_method fixed #Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.3 +mixing_type broyden +mixing_beta 0.3 diff --git a/tests/performance/P007_H2O_pw/INPUT b/tests/performance/P007_H2O_pw/INPUT index 80bf96ddef..7ce1653b03 100644 --- a/tests/performance/P007_H2O_pw/INPUT +++ b/tests/performance/P007_H2O_pw/INPUT @@ -1,26 +1,26 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix abacus -calculation scf -nbands 6 -symmetry 1 +suffix abacus +calculation scf +nbands 6 +symmetry 1 #Parameters (2.Iteration) -ecutwfc 50 -scf_thr 1e-8 -scf_nmax 50 +ecutwfc 50 +scf_thr 1e-8 +scf_nmax 50 #Parameters (3.Basis) -basis_type pw +basis_type pw #Parameters (4.Smearing) -smearing_method gaussian -smearing_sigma 0.02 +smearing_method gaussian +smearing_sigma 0.02 #Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.4 +mixing_type broyden +mixing_beta 0.4 #Parameters (6.Deepks) -cal_force 1 -cal_stress 1 +cal_force 1 +cal_stress 1 diff --git a/tests/performance/P008_C2H6O_pw/INPUT b/tests/performance/P008_C2H6O_pw/INPUT index 3ea75302ce..4b7c73bf8f 100644 --- a/tests/performance/P008_C2H6O_pw/INPUT +++ b/tests/performance/P008_C2H6O_pw/INPUT @@ -1,26 +1,26 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf +suffix autotest +calculation scf #nbands 6 -symmetry 0 +symmetry 0 #Parameters (2.Iteration) -ecutwfc 50 -scf_thr 1e-8 -scf_nmax 50 +ecutwfc 50 +scf_thr 1e-8 +scf_nmax 50 #Parameters (3.Basis) -basis_type pw +basis_type pw #Parameters (4.Smearing) -smearing_method gaussian -smearing_sigma 0.02 +smearing_method gaussian +smearing_sigma 0.02 #Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.4 +mixing_type broyden +mixing_beta 0.4 #Parameters (6.Deepks) -cal_force 1 -cal_stress 1 +cal_force 1 +cal_stress 1 diff --git a/tests/performance/P009_32H2O_pw/INPUT b/tests/performance/P009_32H2O_pw/INPUT index aea806256f..a04c119705 100644 --- a/tests/performance/P009_32H2O_pw/INPUT +++ b/tests/performance/P009_32H2O_pw/INPUT @@ -1,29 +1,29 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf #test; scf; relax; nscf; get_wf; get_pchg; -symmetry 0 #turn symmetry on or off +suffix autotest +calculation scf #test; scf; relax; nscf; get_wf; get_pchg; +symmetry 0 #turn symmetry on or off #Parameters (2.PW) -ecutwfc 100 ##energy cutoff for wave functions -scf_thr 1e-7 #charge density error +ecutwfc 100 ##energy cutoff for wave functions +scf_thr 1e-7 #charge density error #Parameters (3.Relaxation) -scf_nmax 100 ##number of electron iterations -cal_stress 1 #calculate the cal_stress or not -cal_force 1 +scf_nmax 100 ##number of electron iterations +cal_stress 1 #calculate the cal_stress or not +cal_force 1 #Parameters (4.LCAO) -basis_type pw #PW; LCAO in pw; LCAO +basis_type pw #PW; LCAO in pw; LCAO #Parameters (5.Smearing) -smearing_method fixed #type of smearing_method: gauss; fd; fixed; mp; mp2; mv +smearing_method fixed #type of smearing_method: gauss; fd; fixed; mp; mp2; mv #smearing_sigma 0.002 #energy range for smearing_method #Parameters (6.Charge Mixing) -mixing_type broyden #plain; kerker; pulay; pulay-kerker; broyden -mixing_beta 0.7 #mixing parameter: 0 means no new charge +mixing_type broyden #plain; kerker; pulay; pulay-kerker; broyden +mixing_beta 0.7 #mixing parameter: 0 means no new charge -bx 5 -by 5 -bz 5 +bx 5 +by 5 +bz 5 diff --git a/tests/performance/P010_si2_pw/INPUT b/tests/performance/P010_si2_pw/INPUT index 056e5232c0..0e3b0e96e8 100644 --- a/tests/performance/P010_si2_pw/INPUT +++ b/tests/performance/P010_si2_pw/INPUT @@ -1,24 +1,24 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf +suffix autotest +calculation scf #nbands 8 -symmetry 0 +symmetry 0 #Parameters (2.Iteration) -ecutwfc 60 -scf_thr 1e-8 -scf_nmax 100 -cal_force 1 -cal_stress 1 +ecutwfc 60 +scf_thr 1e-8 +scf_nmax 100 +cal_force 1 +cal_stress 1 #Parameters (3.Basis) -basis_type pw +basis_type pw #Parameters (4.Smearing) -smearing_method gauss -smearing_sigma 0.002 +smearing_method gauss +smearing_sigma 0.002 #Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.3 +mixing_type broyden +mixing_beta 0.3 diff --git a/tests/performance/P100_si16_lcao/INPUT b/tests/performance/P100_si16_lcao/INPUT index 824e290b9a..3d4eb3b2c0 100644 --- a/tests/performance/P100_si16_lcao/INPUT +++ b/tests/performance/P100_si16_lcao/INPUT @@ -1,24 +1,24 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf +suffix autotest +calculation scf #nbands 8 -symmetry 1 +symmetry 1 #Parameters (2.Iteration) -ecutwfc 100 -scf_thr 1e-6 -scf_nmax 100 -cal_force 1 -cal_stress 1 +ecutwfc 100 +scf_thr 1e-6 +scf_nmax 100 +cal_force 1 +cal_stress 1 #Parameters (3.Basis) -basis_type lcao +basis_type lcao #Parameters (4.Smearing) -smearing_method gauss -smearing_sigma 0.002 +smearing_method gauss +smearing_sigma 0.002 #Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.3 +mixing_type broyden +mixing_beta 0.3 diff --git a/tests/performance/P101_si32_lcao/INPUT b/tests/performance/P101_si32_lcao/INPUT index 824e290b9a..3d4eb3b2c0 100644 --- a/tests/performance/P101_si32_lcao/INPUT +++ b/tests/performance/P101_si32_lcao/INPUT @@ -1,24 +1,24 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf +suffix autotest +calculation scf #nbands 8 -symmetry 1 +symmetry 1 #Parameters (2.Iteration) -ecutwfc 100 -scf_thr 1e-6 -scf_nmax 100 -cal_force 1 -cal_stress 1 +ecutwfc 100 +scf_thr 1e-6 +scf_nmax 100 +cal_force 1 +cal_stress 1 #Parameters (3.Basis) -basis_type lcao +basis_type lcao #Parameters (4.Smearing) -smearing_method gauss -smearing_sigma 0.002 +smearing_method gauss +smearing_sigma 0.002 #Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.3 +mixing_type broyden +mixing_beta 0.3 diff --git a/tests/performance/P102_si64_lcao/INPUT b/tests/performance/P102_si64_lcao/INPUT index 98d12442f7..6c7c176e6f 100644 --- a/tests/performance/P102_si64_lcao/INPUT +++ b/tests/performance/P102_si64_lcao/INPUT @@ -1,25 +1,25 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf +suffix autotest +calculation scf #nbands 8 -symmetry 1 +symmetry 1 #Parameters (2.Iteration) -ecutwfc 100 -scf_thr 1e-6 -scf_nmax 100 -cal_force 1 -cal_stress 1 +ecutwfc 100 +scf_thr 1e-6 +scf_nmax 100 +cal_force 1 +cal_stress 1 #Parameters (3.Basis) -basis_type lcao +basis_type lcao #Parameters (4.Smearing) -smearing_method gauss -smearing_sigma 0.002 +smearing_method gauss +smearing_sigma 0.002 #Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.3 -ks_solver scalapack_gvx +mixing_type broyden +mixing_beta 0.3 +ks_solver scalapack_gvx diff --git a/tests/performance/P103_si128_lcao/INPUT b/tests/performance/P103_si128_lcao/INPUT index 98d12442f7..6c7c176e6f 100644 --- a/tests/performance/P103_si128_lcao/INPUT +++ b/tests/performance/P103_si128_lcao/INPUT @@ -1,25 +1,25 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf +suffix autotest +calculation scf #nbands 8 -symmetry 1 +symmetry 1 #Parameters (2.Iteration) -ecutwfc 100 -scf_thr 1e-6 -scf_nmax 100 -cal_force 1 -cal_stress 1 +ecutwfc 100 +scf_thr 1e-6 +scf_nmax 100 +cal_force 1 +cal_stress 1 #Parameters (3.Basis) -basis_type lcao +basis_type lcao #Parameters (4.Smearing) -smearing_method gauss -smearing_sigma 0.002 +smearing_method gauss +smearing_sigma 0.002 #Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.3 -ks_solver scalapack_gvx +mixing_type broyden +mixing_beta 0.3 +ks_solver scalapack_gvx diff --git a/tests/performance/P104_si256_lcao/INPUT b/tests/performance/P104_si256_lcao/INPUT index 98d12442f7..6c7c176e6f 100644 --- a/tests/performance/P104_si256_lcao/INPUT +++ b/tests/performance/P104_si256_lcao/INPUT @@ -1,25 +1,25 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf +suffix autotest +calculation scf #nbands 8 -symmetry 1 +symmetry 1 #Parameters (2.Iteration) -ecutwfc 100 -scf_thr 1e-6 -scf_nmax 100 -cal_force 1 -cal_stress 1 +ecutwfc 100 +scf_thr 1e-6 +scf_nmax 100 +cal_force 1 +cal_stress 1 #Parameters (3.Basis) -basis_type lcao +basis_type lcao #Parameters (4.Smearing) -smearing_method gauss -smearing_sigma 0.002 +smearing_method gauss +smearing_sigma 0.002 #Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.3 -ks_solver scalapack_gvx +mixing_type broyden +mixing_beta 0.3 +ks_solver scalapack_gvx diff --git a/tests/performance/P105_si512_lcao/INPUT b/tests/performance/P105_si512_lcao/INPUT index 98d12442f7..6c7c176e6f 100644 --- a/tests/performance/P105_si512_lcao/INPUT +++ b/tests/performance/P105_si512_lcao/INPUT @@ -1,25 +1,25 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf +suffix autotest +calculation scf #nbands 8 -symmetry 1 +symmetry 1 #Parameters (2.Iteration) -ecutwfc 100 -scf_thr 1e-6 -scf_nmax 100 -cal_force 1 -cal_stress 1 +ecutwfc 100 +scf_thr 1e-6 +scf_nmax 100 +cal_force 1 +cal_stress 1 #Parameters (3.Basis) -basis_type lcao +basis_type lcao #Parameters (4.Smearing) -smearing_method gauss -smearing_sigma 0.002 +smearing_method gauss +smearing_sigma 0.002 #Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.3 -ks_solver scalapack_gvx +mixing_type broyden +mixing_beta 0.3 +ks_solver scalapack_gvx diff --git a/tests/performance/P106_Cu4_lcao/INPUT b/tests/performance/P106_Cu4_lcao/INPUT index 824e290b9a..3d4eb3b2c0 100644 --- a/tests/performance/P106_Cu4_lcao/INPUT +++ b/tests/performance/P106_Cu4_lcao/INPUT @@ -1,24 +1,24 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf +suffix autotest +calculation scf #nbands 8 -symmetry 1 +symmetry 1 #Parameters (2.Iteration) -ecutwfc 100 -scf_thr 1e-6 -scf_nmax 100 -cal_force 1 -cal_stress 1 +ecutwfc 100 +scf_thr 1e-6 +scf_nmax 100 +cal_force 1 +cal_stress 1 #Parameters (3.Basis) -basis_type lcao +basis_type lcao #Parameters (4.Smearing) -smearing_method gauss -smearing_sigma 0.002 +smearing_method gauss +smearing_sigma 0.002 #Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.3 +mixing_type broyden +mixing_beta 0.3 diff --git a/tests/performance/P107_Bi2Se2Cu2O2_lcao/INPUT b/tests/performance/P107_Bi2Se2Cu2O2_lcao/INPUT index efce86ec99..e345d57de8 100644 --- a/tests/performance/P107_Bi2Se2Cu2O2_lcao/INPUT +++ b/tests/performance/P107_Bi2Se2Cu2O2_lcao/INPUT @@ -1,23 +1,23 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf +suffix autotest +calculation scf #nbands 8 -symmetry 1 +symmetry 1 #Parameters (2.Iteration) -ecutwfc 100 -scf_thr 1e-6 -scf_nmax 100 -cal_force 1 -cal_stress 1 +ecutwfc 100 +scf_thr 1e-6 +scf_nmax 100 +cal_force 1 +cal_stress 1 #Parameters (3.Basis) -basis_type lcao +basis_type lcao #Parameters (4.Smearing) -smearing_method gauss -smearing_sigma 0.002 +smearing_method gauss +smearing_sigma 0.002 #Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.3 +mixing_type broyden +mixing_beta 0.3 diff --git a/tests/performance/P108_Ge4As8_lcao/INPUT b/tests/performance/P108_Ge4As8_lcao/INPUT index efce86ec99..e345d57de8 100644 --- a/tests/performance/P108_Ge4As8_lcao/INPUT +++ b/tests/performance/P108_Ge4As8_lcao/INPUT @@ -1,23 +1,23 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf +suffix autotest +calculation scf #nbands 8 -symmetry 1 +symmetry 1 #Parameters (2.Iteration) -ecutwfc 100 -scf_thr 1e-6 -scf_nmax 100 -cal_force 1 -cal_stress 1 +ecutwfc 100 +scf_thr 1e-6 +scf_nmax 100 +cal_force 1 +cal_stress 1 #Parameters (3.Basis) -basis_type lcao +basis_type lcao #Parameters (4.Smearing) -smearing_method gauss -smearing_sigma 0.002 +smearing_method gauss +smearing_sigma 0.002 #Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.3 +mixing_type broyden +mixing_beta 0.3 diff --git a/tests/performance/P109_H2O_lcao/INPUT b/tests/performance/P109_H2O_lcao/INPUT index 680100ca2e..f9cd9af784 100644 --- a/tests/performance/P109_H2O_lcao/INPUT +++ b/tests/performance/P109_H2O_lcao/INPUT @@ -1,26 +1,26 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf -nbands 6 -symmetry 0 +suffix autotest +calculation scf +nbands 6 +symmetry 0 #Parameters (2.Iteration) -ecutwfc 100 -scf_thr 1e-6 -scf_nmax 50 +ecutwfc 100 +scf_thr 1e-6 +scf_nmax 50 #Parameters (3.Basis) -basis_type lcao +basis_type lcao #Parameters (4.Smearing) -smearing_method gaussian -smearing_sigma 0.02 +smearing_method gaussian +smearing_sigma 0.02 #Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.4 +mixing_type broyden +mixing_beta 0.4 #Parameters (6.Deepks) -cal_force 1 -cal_stress 1 +cal_force 1 +cal_stress 1 diff --git a/tests/performance/P110_C2H6O_lcao/INPUT b/tests/performance/P110_C2H6O_lcao/INPUT index c0a96e121b..97d338a794 100644 --- a/tests/performance/P110_C2H6O_lcao/INPUT +++ b/tests/performance/P110_C2H6O_lcao/INPUT @@ -1,26 +1,26 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf +suffix autotest +calculation scf #nbands 6 -symmetry 0 +symmetry 0 #Parameters (2.Iteration) -ecutwfc 100 -scf_thr 1e-6 -scf_nmax 50 +ecutwfc 100 +scf_thr 1e-6 +scf_nmax 50 #Parameters (3.Basis) -basis_type lcao +basis_type lcao #Parameters (4.Smearing) -smearing_method gaussian -smearing_sigma 0.02 +smearing_method gaussian +smearing_sigma 0.02 #Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.4 +mixing_type broyden +mixing_beta 0.4 #Parameters (6.Deepks) -cal_force 1 -cal_stress 1 +cal_force 1 +cal_stress 1 diff --git a/tests/performance/P111_si32_lcaogo/INPUT b/tests/performance/P111_si32_lcaogo/INPUT index a8f9f329b6..1567118c82 100644 --- a/tests/performance/P111_si32_lcaogo/INPUT +++ b/tests/performance/P111_si32_lcaogo/INPUT @@ -1,25 +1,25 @@ -INPUT_PARAMETERS +INPUT_PARAMETERS #Parameters (1.General) -suffix autotest -calculation scf +suffix autotest +calculation scf #nbands 8 -symmetry 1 +symmetry 1 #Parameters (2.Iteration) -ecutwfc 100 -scf_thr 1e-6 -scf_nmax 100 -cal_force 1 -cal_stress 1 -gamma_only 1 +ecutwfc 100 +scf_thr 1e-6 +scf_nmax 100 +cal_force 1 +cal_stress 1 +gamma_only 1 #Parameters (3.Basis) -basis_type lcao +basis_type lcao #Parameters (4.Smearing) -smearing_method gauss -smearing_sigma 0.002 +smearing_method gauss +smearing_sigma 0.002 #Parameters (5.Mixing) -mixing_type broyden -mixing_beta 0.3 +mixing_type broyden +mixing_beta 0.3 diff --git a/toolchain/Details.md b/toolchain/Details.md deleted file mode 100644 index 202a492350..0000000000 --- a/toolchain/Details.md +++ /dev/null @@ -1,315 +0,0 @@ -# The ABACUS Toolchain - -## Author -QuantumMisaka (Zhaoqing Liu) @PKU @AISI - -Inspired by cp2k-toolchain, still in improvement. - -## Options - -To use the ABACUS toolchain installer, you may want to first follow -the instructions given in installer help message: - -```shell -> ./install_abacus_toolchain.sh --help -``` - -## Basic usage - -If you are new to ABACUS, and want a basic ABACUS binary, then just calling - -```shell -> ./toolchain_gnu.sh -``` -to install ABACUS requirements by gcc-openmpi-openblas toolchain or -```shell -> ./toolchain_intel.sh -``` -to install ABACUS requirements by intel-mpi-mkl toolchain (intel-environments need to be loaded first) -may be enough. -The gcc-toolchain will use your system gcc, and mpi library (if -existing) and build scalapack, fftw, openblas, elpa and libxc from scratch, -and give you compiled libraries that allow you to compile ABACUS. -The intel-toolchain will use your system intel-mpi and mkl library environments -to build elpa and libxc from scratch, and give you compiled libraries that allow you to compile ABACUS. - -After finish the toolchain requirements installation, you can use the following command to compile ABACUS: - -```shell -> ./build_abacus_gnu.sh -``` -or -```shell -> ./build_abacus_intel.sh -``` -to get ABACUS binary file. - - -## Complete toolchain build - -For a complete toolchain build, with everything installed from -scratch, use: - -```shell -> ./install_abacus_toolchain.sh --install-all -``` - -### Package settings - -One can then change settings for some packages, by setting -`--with-PKG` options after the `--install-all` option. e.g.: - -```shell -> ./install_abacus_toolchain.sh --install-all --with-mkl=system -``` - -will set the script to look for a system MKL library to link, while -compile other packages from scratch. - - -### MPI implementation choice - -If you do not have a MPI installation, by default the `--install-all` -option will install MPICH for you. You can change this default -behavior by setting `--mpi-mode` after the `--install-all` option. - -## Trouble Shooting - -Below are solutions to some of the common problems you may encounter when -running this script. - -### The script terminated with an error message - -Look at the error message. If it does not indicate the reason for -failure then it is likely that some error occurred during -compilation of the package. You can look at the compiler log in -the file make.log in the source directory of the package in -`./build`. - -One of the causes on some systems may be the fact that too many -parallel make processes were initiated. By default the script -tries to use all of the processors on you node. You can override -this behavior using `-j` option. - -### The script failed at a tarball downloading stage - -Try run again with `--no-check-certificate` option. See the help -section for this option for details. - -### I've used --with-XYZ=system cannot find the XYZ library - -The installation script in "system" mode will try to find a library -in the following system PATHS: `LD_LIBRARY_PATH`, `LD_RUN_PATH`, -`LIBRARY_PATH`, `/usr/local/lib64`, `/usr/local/lib`, `/usr/lib64`, -`/usr/lib`. - -For MKL libraries, the installation script will try to look for -MKLROOT environment variable. - -You can use: - -```shell -> module show XYZ -``` - -to see exactly what happens when the module XYZ is loaded into your -system. Sometimes a module will define its own PATHS and -environment variables that is not in the default installation -script search path. And as a result the given library will likely -not be found. - -The simplest solution is perhaps to find where the root -installation directory of the library or package is, and then use -`--with-XYZ=/some/location/to/XYZ` to tell the script exactly where -to look for the library. - -## Licenses - -The toolchain only downloads and installs packages that are -[compatible with the GPL](https://www.gnu.org/licenses/gpl-faq.html#WhatDoesCompatMean). -The following table list the licenses of all those packages. While the toolchain -does support linking proprietary software packages, like e.g. MKL, these have to -be installed separately by the user. - -| Package | License | GPL Compatible | -| --------- | ---------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -| cmake | [BSD 3-Clause](https://gitlab.kitware.com/cmake/cmake/raw/master/Copyright.txt) | Yes | -| elpa | [LGPL](https://gitlab.mpcdf.mpg.de/elpa/elpa/blob/master/LICENSE) | Yes | -| fftw | [GPL](http://www.fftw.org/doc/License-and-Copyright.html) | Yes | -| gcc | [GPL](https://gcc.gnu.org/git/?p=gcc.git;a=blob_plain;f=COPYING;hb=HEAD) | Yes | -| libxc | [MPL](https://gitlab.com/libxc/libxc/blob/master/COPYING) | Yes | -| mpich | [MPICH](https://github.com/pmodels/mpich/blob/master/COPYRIGHT) | [Yes](https://enterprise.dejacode.com/licenses/public/mpich/#license-conditions) | -| openblas | [BSD 3-Clause](https://github.com/xianyi/OpenBLAS/blob/develop/LICENSE) | Yes | -| openmpi | [BSD 3-Clause](https://github.com/open-mpi/ompi/blob/master/LICENSE) | Yes | -| scalapack | [BSD 3-Clause](http://www.netlib.org/scalapack/LICENSE) | Yes | - -## For Developers - -### Structure of the toolchain scripts - -- `install_abacus_toolchain.sh` is the main script that will call all - other scripts. It contains default flag settings, user input - parser, calls to each package installation scripts and the - generator of the ABACUS arch files. - -- `script/install_*.sh` are the installation scripts for individual - packages. They are relatively independent, in the sense that by - running `script/install_PKG.sh` it should install the package on its - own. However, in practice due to dependencies to other libraries, - sometimes for a package to be installed this way, it will depend - on other libraries being already installed and the correct - environment variables set. At the end of each script, it should - write to __two__ files: `build/setup_PKG` and `install/setup`. - - - The `build/setup_PKG` file contains all the instructions to set - the variables used by the `install_abacus_toolchain.sh` and other - `script/install_PKG.sh` scripts in order for them to correctly - compile the toolchain and set the correct library flags for the - arch files. - - The `install/setup` file contains all the instructions for setting - up the correct environment before the user can compile and/or - run ABACUS. - -- `script/toolkit.sh` contains all the macros that may be used by all - of the scripts, and provides functionalities such as prepending a - path, checking if a library exists etc. - -- `script/common_var.sh` contains all of the common variables used by - each installation scripts. All of the variables in the file should - have a default value, but allow the environment to set the values, - using: `VAR=${VAR:-default_value}`. - -- `script/parse_if.py` is a python code for parsing the `IF_XYZ(A|B)` - constructs in the script. Nested structures will be parsed - correctly. See - [`IF_XYZ` constructs](./README_FOR_DEVELOPERS.md#the-if_xyz-constructs) below. - -- `checksums.sha256` contains the pre-calculated SHA256 checksums for - the tar balls of all of the packages. This is used by the - `download_pkg` macro in `script/toolkit.sh`. - -- `arch_base.tmpl` contains the template skeleton structure for the - arch files. The `install_ABACUS_toolchain` script will set all the - variables used in the template file, and then do an eval to expand - all of `${VARIABLE}` items in `arch_base.tmpl` to give the ABACUS arch - files. - -### `enable-FEATURE` options - -The `enable-FEATURE` options control whether a FEATURE is enabled or disabled. -Possible values are: - -- `yes` (equivalent to using the option-keyword alone) -- `no` - -### `with_PKG` and `PKG_MODE` variables - -The `with_PKG` options controls how a package is going to be installed: - -- either compiled and installed from source downloaded - (`install`, or the option-keyword alone), -- or linked to locations provided by system search paths (`system`), -- or linked to locations provided by the user (``, path to some directory), -- or that the installer won't be used (`no`). - -For most packages the `with_pkg` variables will act like a switch for -turning on or off the support for this package. However, for -packages serving the same purpose, with the installer needing only -one, an extra variable `PKG_MODE` (e.g. `MPI_MODE`) are used as a -selector. In this case, while `with_PKG` controls the installation -method, the `PKG_MODE` variable picks which package to actually use. -This provides more flexibility. - -### The IF_XYZ constructs - -Due to the fact that `install_ABACUS_toolchain.sh` needs to produce -several different versions of the arch files: `psmp`, `pdbg`, -`ssmp`, `sdbg`, etc, it will have to resolve different flags for -different arch file versions. - -The solution used by this script is to use a syntax construct: - -```shell -IF_XYZ(A | B) -``` - -A parser will then parse this expression to *A* if *XYZ* is passed -to the parser (python `parse_if.py` filename XYZ); and to *B* if *XYZ* -is not passed as command line option (python `parse_if.py` filename). - -The `IF_XYZ(A|B)` construct can be nested, so things like: - -```shell -IF_XYZ(IF_ABC(flag1|flag2) | flag3) -``` - -will parse to *flag1* if both *XYZ* and *ABC* are present in the command -line arguments of `parser_if.py`, to *flag2* if only *XYZ* is present, -and *flag3* if nothing is present. - -### To ensure portability - -- one should always pass compiler flags through the - `allowed_gcc_flags` and `allowed_gfortran_flags` filters in - `scripts/toolkit.sh` to omit any flags that are not supported by - the gcc version used (or installed by this script). - -- note that `allowed_gcc_flags` and `allowed_gfortran_flags` do not work - with `IF_XYZ` constructs. So if you have something like: - -```shell -FCFLAGS="IF_XYZ(flag1 flag2 | flag3 flag4)" -``` - -Then you should break this into: - -```shell -XYZ_TRUE_FLAGS="flags1 flags2" -XYZ_FALSE_FLAGS="flags3 flags4" -# do filtering -XYZ_TRUE_FLAGS="$(allowed_gcc_flags $XYZ_TRUE_FLAGS)" -XYZ_FALSE_FLAGS="$(allowed_gcc_flags $XYZ_FALSE_FLAGS)" -``` - -So that: - -```shell -FCFLAGS="IF_XYZ($XYZ_TRUE_FLAGS | $XYZ_FALSE_FLAGS)" -``` - -- For any intrinsic fortran modules that may be used, it is best to - check with `check_gfortran_module` macro defined in - `script/tool_kit.sh`. Depending on the gcc version, some intrinsic - modules may not exist. - -- Try to avoid as much hard coding as possible: - e.g. instead of setting: - -```shell -./configure --prefix=some_dir CC=mpicc FC=mpif90 -``` - -use the common variables: - -```shell -./configure --prefix=some_dir CC=${MPICC} FC=${MPIFC} -``` - -## To keep maintainability it is recommended that we follow these practices - -- Reuse as much functionality from the macros defined in the - `script/toolkit.sh` as possible - -- When the existing macros in `script/toolkit.sh` do not provide the - functionalities you want, it is better to write the new - functionality as a macro in `script/toolkit.sh`, and then use the - macro (repeatedly if required) in the actual installation - script. This keeps the installation scripts uncluttered and more - readable. - -- All packages should install into their own directories, and with a - lock file created in their respective directory to indicate - installation has been successful. This allows the script to skip - over the compilation stages of already installed packages if the - user terminated the toolchain script at the middle of a run and - then restarted the script. diff --git a/toolchain/README.md b/toolchain/README.md index feae610a78..ccff2bfdfe 100644 --- a/toolchain/README.md +++ b/toolchain/README.md @@ -1,411 +1,717 @@ -# The ABACUS Toolchain +# ABACUS Toolchain -Version 2025.2 +[![Version](https://img.shields.io/badge/version-2025.3-blue.svg)](https://github.com/deepmodeling/abacus-develop/tree/develop/toolchain) +[![License](https://img.shields.io/badge/license-GPL--compatible-green.svg)](#license) +[![Platform](https://img.shields.io/badge/platform-Linux-lightgrey.svg)]() -## Main Developer +> **Automated dependency management and compilation toolchain for ABACUS** -[QuantumMisaka](https://github.com/QuantumMisaka) -(Zhaoqing Liu) @PKU @AISI +## Table of Contents -Inspired by cp2k-toolchain, still in improvement. +- [Overview](#overview) +- [Features](#features) +- [Quick Start](#quick-start) +- [Installation Methods](#installation-methods) +- [Supported Toolchains](#supported-toolchains) +- [Dependencies](#dependencies) +- [GPU Support](#gpu-support) +- [Troubleshooting](#troubleshooting) +- [Advanced Usage](#advanced-usage) +- [Developer Guide](#developer-guide) +- [License](#license) +- [Contributing](#contributing) -You should have read this README before using this toolchain. +## Overview -## Introduction +The ABACUS Toolchain is an automated build system inspired by the cp2k-toolchain that simplifies the compilation and installation of ABACUS and its dependencies. It supports both online and offline installation modes, multiple compiler toolchains, and provides a streamlined path from dependency installation to ABACUS compilation. -This toolchain will help you easily compile and install, -or link libraries ABACUS depends on -in ONLINE or OFFLINE way, -and give setup files that you can use to compile ABACUS. +### Main Developer -## Todo +**[QuantumMisaka](https://github.com/QuantumMisaka)** (Zhaoqing Liu) +*Peking University, CCME* -- [x] `gnu-openblas` toolchain support for `openmpi` and `mpich`. -- [x] `intel-mkl-mpi` toolchain support using `icc`/`icpc`/`ifort` or `icx`/`icpx`/`ifort`. (`icx` as default, but will have problem for ELPA in AMD machine, one can specify `--with-intel-classic=yes` to use `icc`), -- [x] `intel-mkl-mpich` toolchain support. -- [x] Automatic installation of [CEREAL](https://github.com/USCiLab/cereal) and [LIBNPY](https://github.com/llohse/libnpy) (by github.com) -- [x] Support for [LibRI](https://github.com/abacusmodeling/LibRI) by submodule or automatic installation from github.com (but installed LibRI via `wget` seems to have some problem, please be cautious) -- [x] A mirror station by Bohrium database, which can download CEREAL, LibNPY, LibRI and LibComm by `wget` in China Internet. -- [x] Support for GPU-PW and GPU-LCAO compilation (elpa, cusolvermp is developing), and `-DUSE_CUDA=1` is needed builder scripts. -- [x] Support for AMD compiler and math lib `AOCL` and `AOCC` (not fully complete due to flang and AOCC-ABACUS compliation error) -- [ ] Support for more GPU device out of Nvidia. -- [ ] Change the downloading url from cp2k mirror to other mirror or directly downloading from official website. (doing) -- [ ] Support a JSON or YAML configuration file for toolchain, which can be easily modified by users. -- [ ] A better README and Detail markdown file. -- [ ] Automatic installation of [DEEPMD](https://github.com/deepmodeling/deepmd-kit). -- [ ] Modulefile generation scripts. +## Features +- ✅ **Multiple Toolchain Support**: GNU, Intel OneAPI, AMD AOCC/AOCL +- ✅ **Flexible Installation**: Online/offline modes with automatic dependency resolution +- ✅ **GPU Acceleration**: CUDA support for NVIDIA GPUs with ELPA and cuSolverMP +- ✅ **MPI Implementations**: OpenMPI, MPICH, Intel MPI support +- ✅ **Math Libraries**: OpenBLAS, Intel MKL, AMD AOCL integration +- ✅ **Advanced Features**: LibRI, LibComm and MLALGO support +- ✅ **Resumable Installation**: Interrupt and resume capability +- ✅ **Environment Management**: Automatic setup file generation -## Usage Online & Offline +## Quick Start -Main script is *install_abacus_toolchain.sh*, -which will use scripts in *scripts* directory -to compile install dependencies of ABACUS. -It can be directly used, but not recommended. +### Prerequisites -There are also well-modified script to run *install_abacus_toolchain.sh* for `gnu` (gcc-openblas), `intel` (intel-mkl-mpi-compiler), `gcc-aocl` and `aocc-aocl` toolchains dependencies. +- **GCC**: Version ≥ 5.0 (recommended ≥ 7.3.0) +- **Internet Connection**: For online installation mode +- **System Libraries**: Basic development tools (see [System Requirements](#system-requirements)) -```shell -# for gnu-openblas -> ./toolchain_gnu.sh -# for intel-mkl -> ./toolchain_intel.sh -# for AMD gcc-aocl -> ./toolchain_gcc-aocl.sh -# for AMD aocc-aocl -> ./toolchain_aocc-aocl.sh +### Basic Installation + +For new users, start with one of these pre-configured toolchains: + +```bash +# GNU toolchain (GCC + OpenMPI + OpenBLAS) +./toolchain_gnu.sh + +# Intel toolchain (Intel compilers + Intel MPI + MKL) +./toolchain_intel.sh + +# AMD toolchain options +./toolchain_gcc-aocl.sh # GCC + AMD AOCL +./toolchain_aocc-aocl.sh # AMD AOCC + AOCL ``` -It is recommended to run one of them first to get a fast installation of ABACUS under certain environments. +### Build ABACUS -If you are using Intel environments via Intel-OneAPI: please note: -1. After version 2024.0, Intel classic compilers `icc` and `icpc` are not present, so as `ifort` after version 2025.0. Intel MPI compiler will also be updated to `mpiicx`, `mpiicpx` and `mpiifx`. -2. toolchain will detect `icx`, `icpx`, `ifx`, `mpiicx`, `mpiicpx` and `mpiifx` as default compiler. -3. Users can manually specify `--with-intel-classic=yes` to use Intel classic compiler in `toolchain*.sh`, or specify `--with-intel-mpi-clas=yes` to use Intel MPI classic compiler in `toolchain*.sh` while keep the CC, CXX and F90 compiler to new version. -4. Users can manually specify `--with-ifx=no` in `toolchain*.sh` to use `ifort` while keep other compiler to new version. -5. More information is in the later part of this README. +After successful toolchain installation: -If you are using AMD AOCL and AOCC, please note: +```bash +# For GNU toolchain +./build_abacus_gnu.sh +# For Intel toolchain +./build_abacus_intel.sh -**Notice: You GCC version should be no lower than 5 !!!. The toolchain will check it, and gcc with version larger than 7.3.0 is recommended.** +# For AMD toolchains +./build_abacus_gcc-aocl.sh +./build_abacus_aocc-aocl.sh +``` -**Notice: You SHOULD `source` or `module load` related environments before use toolchain method for installation, especially for `intel`, `gcc-aocl` or `aocc-aocl` toolchain! For example, `module load mkl mpi icc compiler` for loading oneapi envs.** +### Environment Setup -**Notice: You SHOULD keep your environments systematic, for example, you CANNOT load `intel-OneAPI` environments while use gcc toolchain !!!** +```bash +# Source the generated environment +source install/setup -**Notice: If your server system already have libraries like `cmake`, `openmpi`, please change related setting in `toolchain*.sh` like `--with-cmake=system`, note that the environments of these system package will not be added into install/setup file** +# Or use the generated ABACUS environment +source abacus_env.sh +``` +## Installation Methods -All packages will be downloaded from [cp2k-static/download](https://www.cp2k.org/static/downloads). by `wget` , and will be detailedly compiled and installed in `install` directory by toolchain scripts, despite of: +### Online Installation -- `CEREAL` which will be downloaded from [CEREAL](https://github.com/USCiLab/cereal) -- `Libnpy` which will be downloaded from [LIBNPY](https://github.com/llohse/libnpy) -- `LibRI` which will be downloaded from [LibRI](https://github.com/abacusmodeling/LibRI) -- `LibCOMM` which will be downloaded from [LibComm](https://github.com/abacusmodeling/LibComm) -- `RapidJSON` which will be downloaded from [RapidJSON](https://github.com/Tencent/rapidjson) -Notice: These packages will be downloaded by `wget` from `codeload.github.com`, which bypass the difficulty of Chinese Internet in some extent. If any downloading problem occurs, you may need to use offline installation method. +Downloads packages automatically from official sources: -Instead of github.com, we offer other package station, you can use it by: -```shell -wget https://bohrium-api.dp.tech/ds-dl/abacus-deps-93wi-v3 -O abacus-deps-v3.zip +```bash +./toolchain_gnu.sh # Uses system package managers and official repositories ``` -`unzip` it ,and you can do offline installation of these packages above after rename. -```shell -# packages downloaded from github.com -mv v1.3.2.tar.gz build/cereal-1.3.2.tar.gz + +Before running the toolchain, please make sure you have loaded the related environments and set the environment variables. +- You SHOULD source or module load related environments before use toolchain method for installation, especially for *intel*, *gcc-aocl* or *aocc-aocl* toolchain! For example, `module load mkl mpi icc compiler` for loading intel-oneapi envs. +- You SHOULD keep your environments systematic, for example, you CANNOT load intel-OneAPI environments while use gcc toolchain !!! + +**Package Sources:** +- **Build Tools:** + - [GCC](https://mirrors.tuna.tsinghua.edu.cn/gnu/gcc/) - GNU Compiler Collection + - [CMake](https://cmake.org/download/) - Cross-platform build system +- **MPI Libraries:** + - [OpenMPI](https://download.open-mpi.org/release/open-mpi/) - Open source MPI implementation + - [MPICH](https://www.mpich.org/downloads/) - High-performance MPI implementation +- **Math Libraries:** + - [OpenBLAS](https://github.com/xianyi/OpenBLAS/releases) - Optimized BLAS library + - [ScaLAPACK](http://www.netlib.org/scalapack/) - Scalable Linear Algebra PACKage +- **Scientific Libraries:** + - [FFTW](http://www.fftw.org/) - Fast Fourier Transform library + - [LibXC](https://www.tddft.org/programs/libxc/) - Exchange-correlation functionals + - [ELPA](https://elpa.mpcdf.mpg.de/) - Eigenvalue solver +- **Advanced Features:** + - [LibTorch](https://download.pytorch.org/libtorch/cpu/) - PyTorch C++ API + - [LibNPY](https://github.com/llohse/libnpy) - NumPy I/O for C++ + - [LibRI](https://github.com/abacusmodeling/LibRI) - Resolution of Identity library + - [LibComm](https://github.com/abacusmodeling/LibComm) - Communication library + - [NEP](https://github.com/brucefan1983/NEP_CPU) - Neuroevolution Potential + - [Cereal](https://github.com/USCiLab/cereal) - C++ serialization library + - [RapidJSON](https://github.com/Tencent/rapidjson) - Fast JSON parser/generator +- **Reference mirror:** [CP2K static downloads](https://www.cp2k.org/static/downloads) +- All package from GitHub will be downloaded by `wget` from `codeload.github.com`, which bypass the difficulty of CN Internet in some extent. + +### Offline Installation + +For air-gapped systems or unreliable internet: + +```bash +# 1. Create build directory and download packages +mkdir build +# Download required packages to build/ directory with proper naming +# e.g., fftw-3.3.10.tar.gz, openmpi-5.0.8.tar.bz2 + +# 2. Run toolchain (will detect local packages) +./toolchain_gnu.sh ``` -The above station will be updated handly but one should notice that the version will always lower than github repo. -If one want to install ABACUS by toolchain OFFLINE, -one can manually download all the packages from [cp2k-static/download](https://www.cp2k.org/static/downloads) or official website -and put them in *build* directory by formatted name -like *fftw-3.3.10.tar.gz*, or *openmpi-5.0.7.tar.bz2*, -then run this toolchain. -All package will be detected and installed automatically. -Also, one can install parts of packages OFFLINE and parts of packages ONLINE -just by using this toolchain +### Hybrid Installation -```shell -# for OFFLINE installation -# in toolchain directory -> mkdir build -> cp ***.tar.gz build/ +Mix online and offline packages as needed - the toolchain automatically detects locally available packages and downloads missing ones. + +## Supported Toolchains + +### GNU Toolchain +- **Compilers**: System GCC (≥5.0) or installed GCC +- **MPI**: OpenMPI or MPICH +- **Math**: OpenBLAS + ScaLAPACK +- **Features**: Most stable, widely compatible + +### Intel Toolchain +- **Compilers**: Intel OneAPI (icx/icpx/ifx or classic icc/icpc/ifort) with system/installed GCC (≥5.0) +- **MPI**: Intel MPI +- **Math**: Intel MKL +- **Features**: Optimized performance for Intel Machine + +### AMD Toolchain +- **Compilers**: AMD AOCC or system/installed GCC +- **Math**: AMD AOCL (Optimized math libraries) +- **Features**: AMD processor optimization (e.g., Zen3+) + +## Dependencies + +### Supported Packages + +| Package | Version (main/alt) | Purpose | License | Default | +|---------|-------------------|---------|---------|---------| +| **Build Tools** ||||| +| CMake | 3.31.7 / 3.30.5 | Build system | BSD-3-Clause | Install | +| GCC | 13.2.0 / 11.4.0 | C/C++ compiler | GPL-3.0-or-later WITH GCC-exception-3.1 | Install | +| **MPI Libraries** ||||| +| OpenMPI | 5.0.8 / 4.1.6 | MPI implementation | BSD-3-Clause-Open-MPI | Install | +| MPICH | 4.3.1 / 4.1.0 | Alternative MPI | mpich2 (BSD-like) | Alternative | +| **Math Libraries** ||||| +| OpenBLAS | 0.3.30 / 0.3.27 | Linear algebra | BSD-3-Clause | Install | +| ScaLAPACK | 2.2.2 / 2.2.1 | Parallel linear algebra | BSD-3-Clause | Install | +| **Scientific Libraries** ||||| +| FFTW | 3.3.10 / 3.3.10 | Fast Fourier Transform | GPL-2.0-or-later | Install | +| LibXC | 7.0.0 / 6.2.2 | Exchange-correlation | MPL-2.0 | Install | +| ELPA | 2025.06.001 / 2024.05.001 | Eigenvalue solver | LGPL-3.0-only | Install | +| **Advanced Features** ||||| +| Cereal | master | C++ Serialization | BSD | Install | +| RapidJSON | master | JSON parsing | MIT | Install | +| LibRI | master | EXX calculations | GPL-3.0 | Install | +| LibComm | master | EXX calculations | GPL-3.0 | Install | +| LibTorch | 2.1.2 / 1.12.1 | MLALGO support | BSD-3-Clause | Optional | +| LibNPY | 1.0.1 / 1.0.1 | NumPy I/O | MIT | Optional | +| NEP | main | Neuroevolution potential | MIT | Optional | + +Also, [Intel-oneAPI](https://www.intel.cn/content/www/cn/zh/developer/tools/oneapi/toolkits.html) and AMD [AOCC](https://www.amd.com/zh-cn/developer/aocc.html) and [AOCL](https://www.amd.com/zh-cn/developer/aocl.html) are supported in toolchain by setting them to system option, but one should install them manually by server administrator. + +### Package Version Switching + +The toolchain supports a dual-version system for most packages, providing both **main** (latest stable) and **alt** (alternative/legacy) versions. This allows users to choose between cutting-edge features and proven stability based on their specific requirements. + +#### Version Selection Methods + +The `--package-version` parameter supports two flexible usage patterns: + +**Method 1: Multiple Independent Parameters** (Original support) +```bash +./toolchain_gnu.sh --package-version libtorch:alt --package-version elpa:alt ``` -The needed dependencies version default: - -- `cmake` 3.31.7 -- `gcc` 13.2.0 (which will always NOT be installed, But use system) -- `OpenMPI` 5.0.7 (Version 5 OpenMPI is good but will have compability problem, user can manually downarade to Version 4 in toolchain scripts by specify `--with-openmpi4`) -- `MPICH` 4.3.0 -- `OpenBLAS` 0.3.29 (Intel toolchain need `get_vars.sh` tool from it) -- `ScaLAPACK` 2.2.2 -- `FFTW` 3.3.10 -- `LibXC` 7.0.0 -- `ELPA` 2025.01.001 (may not be conpatiable for gpu-ver) -- `CEREAL` master (for oneapi compatibility) -- `RapidJSON` master (for oneapi compatibility) -And: -- Intel-oneAPI need user or server manager to manually install from Intel. -- - [Intel-oneAPI](https://www.intel.cn/content/www/cn/zh/developer/tools/oneapi/toolkits.html) -- AMD AOCC-AOCL need user or server manager to manually install from AMD. -- - [AOCC](https://www.amd.com/zh-cn/developer/aocc.html) -- - [AOCL](https://www.amd.com/zh-cn/developer/aocl.html) - -Dependencies below are optional, which is NOT installed by default: -- `LibTorch` 2.1.2 -- `Libnpy` 1.0.1 -- `LibRI` 0.2.1.0 -- `LibComm` master (for openmpi compatibility) - -Users can install them by using `--with-*=install` in toolchain*.sh, which is `no` in default. Also, user can specify the absolute path of the package by `--with-*=path/to/package` in toolchain*.sh to allow toolchain to use the package. -> Notice: LibTorch always suffer from GLIBC_VERSION problem, if you encounter this, please downgrade LibTorch version to 1.12.1 in scripts/stage4/install_torch.sh -> -> Notice: LibRI, LibComm, Rapidjson and Libnpy is on actively development, you should check-out the package version when using this toolchain. - -Users can easily compile and install dependencies of ABACUS -by running these scripts after loading related environment. - -The toolchain installation process can be interrupted at anytime. -just re-run *toolchain_\*.sh*, toolchain itself may fix it. If you encouter some problem like file corrupted, you can always remove some package in the interrupted points and re-run the toolchain. - -Some useful options: -- `--dry-run`: just run the main install scripts for environment setting, without any package downloading or installation. -- `--pack-run`: just run the install scripts without any package building, which helps user to download and check the packages, paticularly for offline installation to a server. - -If compliation is successful, a message will be shown like this: +**Method 2: Single Parameter with Multiple Key-Value Pairs** (Enhanced functionality) +```bash +./toolchain_gnu.sh --package-version "libtorch:alt elpa:alt" +``` -```shell -========================== usage ========================= -Done! -To use the installed tools and libraries and ABACUS version -compiled with it you will first need to execute at the prompt: - source ${SETUPFILE} -To build ABACUS by gnu-toolchain, just use: - ./build_abacus_gnu.sh -To build ABACUS by intel-toolchain, just use: - ./build_abacus_intel.sh -To build ABACUS by amd-toolchain in gcc-aocl, just use: - ./build_abacus_gnu-aocl.sh -To build ABACUS by amd-toolchain in aocc-aocl, just use: - ./build_abacus_aocc-aocl.sh -or you can modify the builder scripts to suit your needs. +One can also manually edit the `toolchain_gnu.sh` for selecting specific version of packages. + +```bash +# ============================================================================ +# Package Version Selection (main/alt versions) +# ============================================================================ +# Choose between main (latest stable) and alt (alternative/legacy) versions +# Refer to scripts/package_versions.sh for specific version numbers + +CMAKE_VERSION="main" # main=3.31.7, alt=3.30.5 +OPENMPI_VERSION="main" # main=5.0.8, alt=4.1.6 +OPENBLAS_VERSION="main" # main=0.3.30, alt=0.3.27 +ELPA_VERSION="main" # main=2025.06.001, alt=2024.05.001 +LIBXC_VERSION="main" # main=7.0.0, alt=6.2.2 +SCALAPACK_VERSION="main" # main=2.2.2, alt=2.2.1 +# Optional Libraries +LIBTORCH_VERSION="main" # main=2.1.2, alt=1.12.1 (use alt for older GLIBC) ``` -You can run *build_abacus_gnu.sh* or *build_abacus_intel.sh* to build ABACUS -by gnu-toolchain or intel-toolchain respectively, same for the `gcc-aocl` and `aocc-aocl` toolchain. -Then, the builder scripts will automatically locate the environment and compile ABACUS. -You can manually change the builder scripts to suit your needs. -The builder scripts will generate `abacus_env.sh` for source +and other `toolchain_*.sh` scripts share the same version selection. -Then, after `source abacus_env.sh`, one can easily -run builder scripts to build ABACUS binary software. +#### Global Version Strategy -If users want to use toolchain but lack of some system library -dependencies, *install_requirements.sh* scripts will help. +- **Default Behavior**: All packages use their **main** versions unless explicitly overridden +- **Selective Override**: Use `--package-version` to specify alternative versions for specific packages +- **Consistency**: Version selections are validated against available options in `scripts/package_versions.sh` +- **Backward Compatibility**: Both usage methods are fully supported to ensure existing scripts continue to work -If users want to re-install all the package, just do: -```shell -> rm -rf install +### System Requirements + +Install system dependencies using provided scripts: + +```bash +# Ubuntu/Debian +sudo ./root_requirements/install_requirements_ubuntu.sh + +# Fedora/RHEL/CentOS +sudo ./root_requirements/install_requirements_fedora.sh + +# Generic +sudo ./root_requirements/install_requirements.sh ``` -or you can also do it in a more completely way: +## GPU Support -```shell -> rm -rf install build/*/* build/OpenBLAS*/ build/setup_* +### CUDA Support for NVIDIA GPUs + +#### Basic GPU Support + +Add to your build script: + +```bash +cmake -B $BUILD_DIR \ + -DUSE_CUDA=ON \ + -DCMAKE_CUDA_COMPILER=/path/to/cuda/bin/nvcc \ + # ... other options ``` -## GPU version of ABACUS +#### Multi-GPU with ELPA -Toolchain supports compiling GPU version of ABACUS with Nvidia-GPU and CUDA. For usage, adding following options in build*.sh: +1. **Configure toolchain with CUDA:** +```bash +export CUDA_PATH=/path/to/CUDA +./toolchain_gnu.sh --enable-cuda --gpu-ver=70 # For V100 (compute capability 7.0) +``` -```shell -# in build_abacus_gnu.sh -cmake -B $BUILD_DIR -DCMAKE_INSTALL_PREFIX=$PREFIX \ - -DCMAKE_CXX_COMPILER=g++ \ - -DMPI_CXX_COMPILER=mpicxx \ - ...... - -DUSE_CUDA=ON \ - # -DCMAKE_CUDA_COMPILER=${path to cuda toolkit}/bin/nvcc \ # add if needed - ...... -# in build_abacus_intel.sh -cmake -B $BUILD_DIR -DCMAKE_INSTALL_PREFIX=$PREFIX \ - -DCMAKE_CXX_COMPILER=icpc \ - -DMPI_CXX_COMPILER=mpiicpc \ - ...... - -DUSE_CUDA=ON \ - # -DCMAKE_CUDA_COMPILER=${path to cuda toolkit}/bin/nvcc \ # add if needed - ...... +2. **Build with ELPA GPU support:** +```bash +cmake -B $BUILD_DIR \ + -DUSE_CUDA=ON \ + -DUSE_ELPA=ON \ + # ... other options ``` -which will enable GPU version of ABACUS, and the `ks_solver cusolver` method can be directly used for PW and LCAO calculation. -Notice: You CANNOT use `icpx` compiler for GPU version of ABACUS for now, see discussion here [#2906](https://github.com/deepmodeling/abacus-develop/issues/2906) and [#4976](https://github.com/deepmodeling/abacus-develop/issues/4976) +#### Multi-GPU with cuSolverMP -If you wants to use ABACUS GPU-LCAO by `cusolvermp` or `elpa` for multiple-GPU calculation, please compile according to the following usage: +cuSolverMP requires NVIDIA HPC SDK. Follow these steps to build with cuSolverMP: -1. For the elpa method, add -```shell -export CUDA_PATH=/path/to/CUDA -# install_abacus_toolchain.sh part options ---enable-cuda \ ---gpu-ver=(GPU-compatibility-number) \ +1. Load the NVHPC module: + + - **For NVIDIA HPC SDK version < 25.9**: cuSolverMP relies on HPC-X for communication, so you need to load the `nvhpc-hpcx-cudaxx/xx.x` module. For example, with HPC SDK 25.3: + ```bash + module use /opt/nvidia/hpc_sdk/modulefiles + module load nvhpc-hpcx-cuda12/25.3 + ``` + + - **For NVIDIA HPC SDK version >= 25.9**: cuSolverMP uses NCCL for communication instead of HPC-X, so only the base `nvhpc/xx.x` module is needed. For example, with HPC SDK 26.1: + ```bash + module use /opt/nvidia/hpc_sdk/modulefiles + module load nvhpc/26.1 + ``` + +2. Build with cuSolverMP enabled: +```bash +cmake -B $BUILD_DIR \ + -DUSE_CUDA=ON \ + -DENABLE_CUSOLVERMP=ON \ + # ... other options ``` -to the `toolchain_*.sh`, and then follow the normal step to install the dependencies using `./toolchain_*.sh`. For checking the GPU compatibility number, you can refer to the [CUDA compatibility](https://developer.nvidia.com/cuda-gpus). -Afterwards, make sure these option are enable in your `build_abacus_*.sh` script +## Troubleshooting + +### Common Issues + +#### Intel OneAPI Problems + +Most of the OneAPI problem arise from the newer version of Intel-OneAPI. For users who encounter OneAPI problem, one can get Intel-OneAPI in [QE-managed website](https://pranabdas.github.io/espresso/setup/hpc/#installing-intel-oneapi-libraries), and use this code to get Intel oneAPI Base Toolkit and HPC Toolkit: ```shell --DUSE_ELPA=ON \ --DUSE_CUDA=ON \ +wget https://registrationcenter-download.intel.com/akdlm/IRC_NAS/992857b9-624c-45de-9701-f6445d845359/l_BaseKit_p_2023.2.0.49397_offline.sh +wget https://registrationcenter-download.intel.com/akdlm/IRC_NAS/0722521a-34b5-4c41-af3f-d5d14e88248d/l_HPCKit_p_2023.2.0.49440_offline.sh ``` -then just build the abacus executable program by compiling it with `./build_abacus_*.sh`. -The ELPA method need more parameter setting, but it doesn't seem to be affected by the CUDA toolkits version, and it is no need to manually install and package. +Related discussion here [#4976](https://github.com/deepmodeling/abacus-develop/issues/4976) + +**OneAPI 2025.0 Compatibility:** +- LibRI compatibility issues ([#6190](https://github.com/deepmodeling/abacus-develop/issues/6190)) +- Solution: Using the patch from Cereal and the master version of Cereal to fix the compatibility issue (included in toolchain). -Note: ELPA-2025.01.001 may have problem in nvidia-GPU compilation on some V100-GPU with AMD-CPU machine, error message: +**ELPA on AMD servers with Intel compilers:** ```bash - 1872 | static __forceinline void CONCAT_8ARGS(hh_trafo_complex_kernel_,ROW_LENGTH,_,SIMD_SET,_,BLOCK,hv_,WORD_LENGTH) (DATA_TYPE_PTR q, DATA_TYPE_PTR hh, int nb, int ldq - | ^~~~~~~~~~~~~~~~~~~~~~~~ -../src/elpa2/kernels/complex_128bit_256bit_512bit_BLOCK_template.c:51:47: note: in definition of macro 'CONCAT2_8ARGS' - 51 | #define CONCAT2_8ARGS(a, b, c, d, e, f, g, h) a ## b ## c ## d ## e ## f ## g ## h - | ^ -../src/elpa2/kernels/complex_128bit_256bit_512bit_BLOCK_template.c:1872:27: note: in expansion of macro 'CONCAT_8ARGS' - 1872 | static __forceinline void CONCAT_8ARGS(hh_trafo_complex_kernel_,ROW_LENGTH,_,SIMD_SET,_,BLOCK,hv_,WORD_LENGTH) (DATA_TYPE_PTR q, DATA_TYPE_PTR hh, int nb, int ldq - | ^~~~~~~~~~~~ - PPFC src/GPU/libelpa_openmp_private_la-mod_vendor_agnostic_general_layer.lo - PPFC test/shared/GPU/libelpatest_openmp_la-test_gpu_vendor_agnostic_layer.lo -../src/GPU/CUDA/./cudaFunctions_template.h(942): error: identifier "creal" is undefined - double alpha_real = creal(alpha); - ^ - -../src/GPU/CUDA/./cudaFunctions_template.h(960): error: identifier "creal" is undefined - float alpha_real = creal(alpha); +# Use Intel classic compilers instead +./toolchain_intel.sh --with-intel-classic=yes ``` -And you may need to change ELPA version to 2024.05.001, edit `toolchain/scripts/stage3/install_elpa.sh` to do it. +Notice: `icc` and `icpc` from Intel Classic Compiler of Intel-oneAPI are not supported for 2024.0 and newer version. And Intel-OneAPI 2023.2.0 can be found in QE website. You need to download Base-toolkit for MKL and HPC-toolkit for MPi and compiler for Intel-OneAPI 2023.2.0, while in Intel-OneAPI 2024.x, only the HPC-toolkit is needed. -1. For the cusolvermp method, toolchain_*.sh does not need to be changed, just follow it directly install dependencies using `./toolchain_*.sh`, and then add -```shell --DUSE_CUDA=ON \ --DENABLE_CUSOLVERMP=ON \ --D CAL_CUSOLVERMP_PATH=/path/to/math.libs/1x.x/target/x86_64-linux/lib \ +#### Gcc-MKL Issues + +You cannot use gcc as compiler while using MKL as math library for compile ABACUS, there will be lots of error in the lask linking step. See [#3198](https://github.com/deepmodeling/abacus-develop/issues/3198) + +#### AMD AOCC-AOCL problem + +Use AOCC-AOCL to compile dependencies is permitted and usually get boosting in ABACUS efficiency. But you need to get rid of `flang` while compiling ELPA. Toolchain itself helps you make this `flang` shade in default of `aocc-aocl` toolchain, and you can manually use `flang` by setting `--with-flang=yes` in `toolchain_aocc-aocl.sh` to have a try, while toolchain helps you to bypass the possible errors in compiling ELPA with AOCC-AOCL, but the computing efficiency will be relatively lower compared to `gnu` or `gcc-aocl` toolchain. There are some issues related to the numeric instability of ABACUS compiled by AOCC-AOCL toolchain, see [#6420](https://github.com/deepmodeling/abacus-develop/issues/6420) + +The `gcc-aocl` toolchain will have no problem above for aocc-dependent aocl. However, the gcc-dependent aocl will have some package linking problem related to OpenMPI. Take it with caution. + +#### OpenMPI Issues + +**Version 5 compatibility problems:** +```bash +# Use OpenMPI v4 instead +./toolchain_gnu.sh --package-version openmpi:alt +# an deprecated option, but still works +./toolchain_gnu.sh --with-openmpi-4th=yes ``` -to the `build.abacus_*.sh` file. add the following three items to the environment (assuming you are using hpcsdk): -```shell -export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/path/to/comm_libs/1x.x/hpcx/hpcx-x.xx/ucc/lib -export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/path/to/comm_libs/1x.x/hpcx/hpcx-x.xx/ucx/lib -export CPATH=$CPATH:/path/to/math_libs/1x.x/targets/x86_64-linux/include + +**LibComm compilation with OpenMPI:** +- Fixed in toolchain 2025.2 which downlo the master branch of LibComm +- Alternative: Use MPICH or Intel MPI + +#### Shell and Permission Issues + +**Line ending problems:** +```bash +./pre_set.sh # Fixes line endings and permissions +# Or manually: +dos2unix *.sh +chmod +x *.sh ``` -Just enough to build the abacus executable program by compiling it with `./build_abacus_*.sh`. -You can refer to the linking video for auxiliary compilation and installation. [Bilibili](https://www.bilibili.com/video/BV1eqr5YuETN/). +#### Library Version Issues -The cusolverMP requires installation from sources such as apt or yum, which is suitable for containers or local computers. -The second choice is using [NVIDIA HPC_SDK](https://developer.nvidia.com/hpc-sdk-downloads) for installation, which is relatively simple, but the package from NVIDIA HPC_SDK may not be suitable, especially for muitiple-GPU parallel running. To better use cusolvermp and its dependency (libcal, ucx, ucc) in multi-GPU running, please contact your server manager. +**LibTorch GLIBC errors:** +- Requires GLIBCXX_3.4.26 +- Change version from 2.1.2 to 1.12.1 +- Use `--package-version libtorch:alt` when calling toolchain +- Can combine with other packages using two writing styles: + - Multiple independent parameters: `--package-version libtorch:alt --package-version elpa:alt` + - Single parameter with multiple key-value pairs: `--package-version libtorch:alt elpa:alt` -After compiling, you can specify `device GPU` in INPUT file to use GPU version of ABACUS. +**DeepMD GLIBC errors:** +- Requires GCC ≥ 11.3.1 for GLIBCXX_3.4.29 +- Upgrade system GCC or use newer toolchain +### Getting Help -## Common Problems and Solutions +1. **Check logs**: Look in `build/PKG_NAME/make.log` for compilation errors +2. **Reduce parallelism**: Use `NPROCS_OVERWRITE=N` environment variable to limit parallel processes +3. **System libraries**: Use `--with-PKG=system` for system-installed packages +4. **Clean installation**: Remove `install/` and `build/` directories to restart +5. **Certificate issues**: Use `DOWNLOAD_CERT_POLICY=skip` for download problems -### Intel-oneAPI problem +## Advanced Usage -#### OneAPI 2025.0 problem +### Package-Specific Options -Generally, OneAPI 2025.0 can be useful to compile basic function of ABACUS, but one will encounter compatible problem related to something. -- related to LibRI: refer to [#6190](https://github.com/deepmodeling/abacus-develop/issues/6190), it is recommended not to use LibRI or downgrade your OneAPI now. +```bash +# Use Intel MKL instead of installing OpenBLAS +./toolchain_gnu.sh --with-mkl=system -#### ELPA problem via Intel-oneAPI toolchain in AMD server +# Use system FFTW instead of installing +./toolchain_gnu.sh --with-fftw=system -The default compiler for Intel-oneAPI is `icpx` and `icx`, which will cause problem when compling ELPA in AMD server. (Which is a problem and needed to have more check-out) +# Specify custom package installation path +./toolchain_gnu.sh --with-fftw=/path/to/custom/fftw +``` -The best way is to change `icpx` to `icpc`, `icx` to `icc`. user can manually change it in *toolchain_intel.sh* via `--with-intel-classic=yes` +### Execution Mode Control -Notice: `icc` and `icpc` from Intel Classic Compiler of Intel-oneAPI is not supported for 2024.0 and newer version. And Intel-OneAPI 2023.2.0 can be found in QE website. You need to download Base-toolkit for MKL and HPC-toolkit for MPi and compiler for Intel-OneAPI 2023.2.0, while in Intel-OneAPI 2024.x, only the HPC-toolkit is needed. +```bash +# Test configuration without actual installation (recommended for first run) +./toolchain_gnu.sh --dry-run -You can get Intel-OneAPI in [QE-managed website](https://pranabdas.github.io/espresso/setup/hpc/#installing-intel-oneapi-libraries), and use this code to get Intel oneAPI Base Toolkit and HPC Toolkit: -```shell -wget https://registrationcenter-download.intel.com/akdlm/IRC_NAS/992857b9-624c-45de-9701-f6445d845359/l_BaseKit_p_2023.2.0.49397_offline.sh -wget https://registrationcenter-download.intel.com/akdlm/IRC_NAS/0722521a-34b5-4c41-af3f-d5d14e88248d/l_HPCKit_p_2023.2.0.49440_offline.sh +# Only download packages without building (useful for offline preparation) +./toolchain_gnu.sh --pack-run ``` -Related discussion here [#4976](https://github.com/deepmodeling/abacus-develop/issues/4976) +### Environment Variable Configuration -#### linking problem in early 2023 version oneAPI +The toolchain supports several environment variables for advanced configuration: -Sometimes Intel-oneAPI have problem to link `mpirun`, -which will always show in 2023.2.0 version of MPI in Intel-oneAPI. -Try `source /path/to/setvars.sh` or install another version of IntelMPI may help. +#### Download Certificate Verification -which is fixed in 2024.0.0 version of Intel-oneAPI, -And will not occur in Intel-MPI before 2021.10.0 (Intel-oneAPI before 2023.2.0) +Control SSL/TLS certificate verification during package downloads: -More problem and possible solution can be accessed via [#2928](https://github.com/deepmodeling/abacus-develop/issues/2928) +```bash +# Strict mode: Always verify certificates (secure) +export DOWNLOAD_CERT_POLICY=strict +./toolchain_gnu.sh -#### gcc-MKL problem +# Smart mode: Try secure first, fallback if needed (default) +export DOWNLOAD_CERT_POLICY=smart # or leave unset +./toolchain_gnu.sh -You cannot use gcc as compiler while using MKL as math library for compile ABACUS, there will be lots of error in the lask linking step. See [#3198](https://github.com/deepmodeling/abacus-develop/issues/3198) +# Skip mode: Skip certificate verification (legacy compatibility) +export DOWNLOAD_CERT_POLICY=skip +./toolchain_gnu.sh +``` -### AMD AOCC-AOCL problem +**Smart Mode Behavior**: The default `smart` mode first attempts secure downloads with certificate verification. If this fails (e.g., due to corporate firewalls or outdated certificates), it automatically falls back to skipping certificate verification while providing clear user feedback. -Use AOCC-AOCL to compile dependencies is permitted and usually get boosting in ABACUS efficiency. But you need to get rid of `flang` while compiling ELPA. Toolchain itself helps you make this `flang` shade in default of `aocc-aocl` toolchain, and you can manually use `flang` by setting `--with-flang=yes` in `toolchain_aocc-aocl.sh` to have a try, while toolchain helps you to bypass the possible errors in compiling ELPA with AOCC-AOCL, but the computing efficiency will be relatively lower compared to `gnu` or `gcc-aocl` toolchain. +#### Parallel Compilation Control -The `gcc-aocl` toolchain will have no problem above for aocc-dependent aocl. However, the gcc-dependent aocl will have some package linking problem related to OpenMPI. Take it with caution. +Override the automatic CPU core detection for compilation: +```bash +# Use 8 cores for compilation (useful for resource-limited systems) +export NPROCS_OVERWRITE=8 +./toolchain_gnu.sh -### OpenMPI problem +# Use single core for debugging compilation issues +export NPROCS_OVERWRITE=1 +./toolchain_gnu.sh -#### in EXX and LibRI +# Or specify inline +NPROCS_OVERWRITE=4 ./toolchain_gnu.sh --with-gcc --with-openmpi +``` -- [Fixed in Toolchain 2025-02] GCC toolchain with OpenMPI cannot compile LibComm v0.1.1 due to the different MPI variable type from MPICH and IntelMPI, see discussion here [#5033](https://github.com/deepmodeling/abacus-develop/issues/5033), you can try use a newest branch of LibComm by +**Use Cases**: +- **Resource-limited systems**: Reduce parallelism to avoid memory exhaustion +- **Shared servers**: Limit resource usage to be considerate of other users +- **CI/CD environments**: Match container resource limits +- **Debugging**: Use single-core compilation for clearer error messages + +### Legacy Script Options + +The deprecated `install_abacus_toolchain.sh` supports additional options: + +| Option | Description | Availability | +|--------|-------------|--------------| +| `--dry-run` | Test configuration without installation | ✅ New & Legacy | +| `--pack-run` | Download packages without building | ✅ New & Legacy | +| `--no-check-certificate` | Skip SSL certificate verification | ⚠️ Legacy only (use `DOWNLOAD_CERT_POLICY=skip`) | +| `-j N` | Limit parallel compilation processes | ⚠️ Legacy only (use `NPROCS_OVERWRITE=N`) | + +> **Migration Note**: The new toolchain system (`toolchain_*.sh` scripts) is recommended over the legacy `install_abacus_toolchain.sh`. Legacy options like `--no-check-certificate` and `-j N` are replaced by environment variables `DOWNLOAD_CERT_POLICY` and `NPROCS_OVERWRITE` respectively. + +### Environment Management + +The toolchain generates several setup files: + +- `install/setup`: Main environment setup +- `build/setup_PKG`: Individual package environments +- `abacus_env.sh`: ABACUS-specific environment (generated by build scripts) + +## Developer Guide + +### Toolchain Architecture + +The toolchain follows a modular design with staged dependency installation: + +``` +scripts/ +├── stage0/ # Compilers and build tools +├── stage1/ # MPI implementations +├── stage2/ # Math libraries (BLAS, LAPACK) +├── stage3/ # Scientific libraries (FFTW, LibXC, ELPA) +├── stage4/ # Advanced features (LibTorch, LibRI) +└── lib/ # Core toolchain libraries ``` -git clone https://gitee.com/abacus_dft/LibComm -b MPI_Type_Contiguous_Pool -``` -or pull the newest master branch of LibComm + +### Key Components + +| File | Purpose | +|------|---------| +| `install_abacus_toolchain_new.sh` | Main orchestration script (new version) | +| `install_abacus_toolchain.sh` | Legacy main script (deprecated) | +| `toolchain_*.sh` | Frontend scripts for specific toolchains | +| `scripts/lib/config_manager.sh` | Configuration management | +| `scripts/lib/package_manager.sh` | Package installation logic | +| `scripts/lib/user_interface.sh` | User interaction and output | +| `scripts/common_vars.sh` | Shared variables and defaults | +| `scripts/tool_kit.sh` | Utility functions and macros | +| `scripts/parse_if.py` | Parser for IF_XYZ constructs | +| `checksums.sha256` | Pre-calculated SHA256 checksums for packages | + +### Script Structure Details + +**Individual Package Scripts**: Each `scripts/stage*/install_PKG.sh` script is relatively independent and should: + +1. **Generate setup files**: Write to both `build/setup_PKG` and `install/setup` + - `build/setup_PKG`: Variables for toolchain compilation and arch file flags + - `install/setup`: Environment setup for compiling/running ABACUS + +2. **Handle dependencies**: May depend on other libraries being installed with correct environment variables + +3. **Use toolkit macros**: Leverage functionality from `scripts/tool_kit.sh` for common operations + +### Package Installation Scripts + +Each `scripts/stage*/install_PKG.sh` script: + +1. **Downloads** the package (if not available locally) +2. **Configures** build with appropriate flags +3. **Compiles** with error handling and logging +4. **Installs** to the toolchain directory +5. **Generates** setup files for environment configuration + +### Configuration System + +#### Package Control Options (`--with-PKG`) + +The `--with-PKG` options control how a package is going to be installed: + +- `--with-PKG=install` (or `--with-PKG` alone): Compile and install from source downloaded (default) +- `--with-PKG=system`: Link to locations provided by system search paths +- `--with-PKG=/path/to/pkg`: Link to locations provided by the user (custom path) +- `--with-PKG=no`: Skip package installation entirely + +**System Search Paths**: When using `system` mode, the installation script searches in: +- `LD_LIBRARY_PATH`, `LD_RUN_PATH`, `LIBRARY_PATH` +- `/usr/local/lib64`, `/usr/local/lib`, `/usr/lib64`, `/usr/lib` +- For MKL libraries: `MKLROOT` environment variable + +**Troubleshooting System Libraries**: If `--with-PKG=system` cannot find the library: +1. Use `module show PKG` to see module-defined paths +2. Find the root installation directory manually +3. Use `--with-PKG=/path/to/pkg` to specify exact location + +#### Feature Control Options (`--enable-FEATURE`) + +The `--enable-FEATURE` options control whether optional features are enabled: + +- `--enable-FEATURE=yes` (or `--enable-FEATURE` alone): Enable the feature +- `--enable-FEATURE=no`: Disable the feature + +#### Mode Selection (`PKG_MODE` Variables) + +For packages serving the same purpose, mode variables act as selectors: + +- `--mpi-mode=openmpi|mpich|intelmpi`: Choose MPI implementation +- `--math-mode=openblas|mkl|aocl`: Choose math library + +**Note**: While `--with-PKG` controls the installation method, the `PKG_MODE` variable picks which package to actually use, providing maximum flexibility. + +### Adding New Packages + +1. **Create installation script**: `scripts/stageN/install_newpkg.sh` +2. **Add to stage script**: Include in `scripts/stageN/install_stageN.sh` +3. **Update configuration**: Add options to `config_manager.sh` +4. **Add version info**: Update `scripts/package_versions.sh` +5. **Test thoroughly**: Verify with different toolchain combinations + +### Advanced Developer Features + +#### The IF_XYZ Constructs + +The toolchain uses a special syntax construct for conditional compilation flags: + +```shell +IF_XYZ(A | B) ``` -git clone https://github.com/abacusmodeling/LibComm + +This construct is parsed by `scripts/parse_if.py`: +- Evaluates to *A* if *XYZ* is passed as command line option +- Evaluates to *B* if *XYZ* is not passed + +**Nested Constructs**: The `IF_XYZ(A|B)` construct can be nested: + +```shell +IF_XYZ(IF_ABC(flag1|flag2) | flag3) ``` -. yet another is switching to GCC-MPICH or Intel toolchain -- It is recommended to use Intel toolchain if one wants to include EXX feature in ABACUS, which can have much better performance and can use more than 16 threads in OpenMP parallelization to accelerate the EXX process. -#### OpenMPI-v5 +This parses to: +- *flag1* if both *XYZ* and *ABC* are present +- *flag2* if only *XYZ* is present +- *flag3* if neither is present -OpenMPI in version 5 has huge update, lead to compatibility problem. If one wants to use the OpenMPI in version 4 (4.1.6), one can specify `--with-openmpi-4th=yes` in *toolchain_gnu.sh* +#### Portability Requirements +**Compiler Flag Filtering**: Always pass compiler flags through compatibility filters: -### Shell problem +```shell +# Filter flags for GCC compatibility +CFLAGS="$(allowed_gcc_flags $CFLAGS)" +FCFLAGS="$(allowed_gfortran_flags $FCFLAGS)" +``` -If you encounter problem like: +**IF_XYZ with Flag Filtering**: Since filters don't work with IF_XYZ constructs, break them down: ```shell -/bin/bash^M: bad interpreter: No such file or directory +# Instead of: FCFLAGS="IF_XYZ(flag1 flag2 | flag3 flag4)" +XYZ_TRUE_FLAGS="flag1 flag2" +XYZ_FALSE_FLAGS="flag3 flag4" +# Apply filtering +XYZ_TRUE_FLAGS="$(allowed_gcc_flags $XYZ_TRUE_FLAGS)" +XYZ_FALSE_FLAGS="$(allowed_gcc_flags $XYZ_FALSE_FLAGS)" +# Reconstruct +FCFLAGS="IF_XYZ($XYZ_TRUE_FLAGS | $XYZ_FALSE_FLAGS)" ``` -or `permission denied` problem, you can simply run: +**Fortran Module Checking**: Check intrinsic Fortran modules with: ```shell -./pre_set.sh +check_gfortran_module module_name ``` -And also, you can fix `permission denied` problem via `chmod +x` -if *pre_set.sh* have no execution permission; -if the *pre_set.sh* also have `/bin/bash^M` problem, you can run: +**Avoid Hard Coding**: Use common variables instead of hard-coded paths: ```shell -> dos2unix pre_set.sh +# Good practice +./configure --prefix=some_dir CC=${MPICC} FC=${MPIFC} +# Avoid +./configure --prefix=some_dir CC=mpicc FC=mpif90 ``` -to fix it +### Best Practices + +- **Reuse toolkit functions**: Use macros from `scripts/tool_kit.sh` +- **Modular functionality**: Add new functionality as macros in `scripts/tool_kit.sh` rather than inline code +- **Portable compiler flags**: Filter through `allowed_gcc_flags` and `allowed_gfortran_flags` +- **Environment variables**: Use `${VAR:-default}` pattern for configurable defaults +- **Lock files**: Create completion markers for resumable installation +- **Separate directories**: Install each package in its own directory +- **Error handling**: Provide clear error messages and recovery suggestions + +## License + +The ABACUS Toolchain downloads and installs only [GPL-compatible](https://www.gnu.org/licenses/gpl-faq.html#WhatDoesCompatMean) packages. All included packages maintain their original licenses as listed in the Dependencies section above. -### Libtorch and DeePKS problem +**License Compatibility**: All packages use GPL-compatible licenses including BSD, MIT, LGPL, MPL-2.0, and GPL variants, ensuring seamless integration with GPL-licensed software. -If deepks feature have problem, you can manually change libtorch version -from 2.1.2 to 2.0.1 or 1.12.0 in `toolchain/scripts/stage4/install_libtorch.sh`. +**Note**: Proprietary packages like Intel OneAPI (MKL/Compiler/MPI) and AMD AOCC/AOCL are supported but must be installed separately by the user. -Also, you can install ABACUS without deepks by removing all the deepks and related options. +## Contributing -NOTICE: if you want deepks feature, your intel-mkl environment should be accessible in building process. you can check it in `build_abacus_gnu.sh` +We welcome contributions to improve the ABACUS Toolchain! Here's how you can help: -### DeePMD feature problem +### Reporting Issues -When you encounter problem like `GLIBCXX_3.4.29 not found`, it is sure that your `gcc` version is lower than the requirement of `libdeepmd`. +1. **Search existing issues** before creating new ones +2. **Provide detailed information**: + - Operating system and version + - Compiler versions + - Complete error messages and logs + - Steps to reproduce -After my test, you need `gcc`>11.3.1 to enable deepmd feature in ABACUS. +### Contributing Code +1. **Fork the repository** and create a feature branch +2. **Follow coding standards**: + - Use consistent shell scripting style + - Add comments for complex logic + - Test with multiple toolchain combinations +3. **Update documentation** for new features +4. **Submit pull request** with clear description -## Advanced Installation Usage +### Development Setup + +```bash +# Clone the repository +git clone https://github.com/deepmodeling/abacus-develop.git +cd abacus-develop/toolchain + +# Test your changes +./toolchain_gnu.sh --dry-run +``` -1. Users can move toolchain directory to anywhere you like, -and complete installation by change the setting in -`toolchain_*.sh` and `build_*.sh` by your own setting. -By moving toolchain out or rename it ,one can make toolchain independent -from ABACUS repo, make dependencies package more independent and flexible. -2. Users can manually change `pkg_install_dir` variable -in `scripts/stage*/install*` to change the installation directory -of each packages, which may let the installation more fiexible. +### Areas for Contribution +- 🔧 **New package support**: Add support for additional scientific libraries +- 🐛 **Bug fixes**: Resolve compatibility issues and installation problems +- 📚 **Documentation**: Improve guides and troubleshooting information +- 🧪 **Testing**: Expand test coverage for different systems and configurations +- 🚀 **Performance**: Optimize installation speed and resource usage -## More +--- -More infomation can be read from `Details.md`. +**For questions, issues, or contributions, please visit the [ABACUS GitHub repository](https://github.com/deepmodeling/abacus-develop).** diff --git a/toolchain/build_abacus_aocc-aocl.sh b/toolchain/build_abacus_aocc-aocl.sh index c06cdd1f4b..ac174db099 100755 --- a/toolchain/build_abacus_aocc-aocl.sh +++ b/toolchain/build_abacus_aocc-aocl.sh @@ -1,13 +1,13 @@ -#!/bin/bash -#SBATCH -J build +#!/bin/bash -e +#SBATCH -J build_abacus_aocc-aocl #SBATCH -N 1 #SBATCH -n 16 #SBATCH -o install.log #SBATCH -e install.err -# JamesMisaka in 2025.03.09 -# Build ABACUS by amd-openmpi toolchain +# Build ABACUS by aocc-aocl toolchain +# load aocc-aocl env at first # module load openmpi aocc aocl ABACUS_DIR=.. @@ -16,25 +16,27 @@ INSTALL_DIR=$TOOL/install source $INSTALL_DIR/setup cd $ABACUS_DIR ABACUS_DIR=$(pwd) -#AOCLhome=/opt/aocl-linux-aocc-5.0.0/5.0.0/aocl/ # user should specify this parameter +#AOCLhome=/opt/aocl-linux-aocc-5.0.0/5.0.0/aocl/ # user should specify this parameter to the aocl installation path -BUILD_DIR=build_abacus_aocl +BUILD_DIR=build_abacus_aocc_aocl rm -rf $BUILD_DIR PREFIX=$ABACUS_DIR -ELPA=$INSTALL_DIR/elpa-2025.01.001/cpu -# ELPA=$INSTALL_DIR/elpa-2025.01.001/nvidia # for gpu-lcao +ELPA=$INSTALL_DIR/elpa-2025.06.001/cpu +# ELPA=$INSTALL_DIR/elpa-2025.06.001/nvidia # for elpa-gpu CEREAL=$INSTALL_DIR/cereal-master/include/cereal LIBXC=$INSTALL_DIR/libxc-7.0.0 -RAPIDJSON=$INSTALL_DIR/rapidjson-master/ +RAPIDJSON=$INSTALL_DIR/rapidjson-master LAPACK=$AOCLhome/lib SCALAPACK=$AOCLhome/lib FFTW3=$AOCLhome -# LIBRI=$INSTALL_DIR/LibRI-0.2.1.0 -# LIBCOMM=$INSTALL_DIR/LibComm-master +LIBRI=$INSTALL_DIR/LibRI-master +LIBCOMM=$INSTALL_DIR/LibComm-master +USE_CUDA=OFF # set ON to enable gpu-abacus +# NEP_DIR=$INSTALL_DIR/NEP_CPU-main # LIBTORCH=$INSTALL_DIR/libtorch-2.1.2/share/cmake/Torch # LIBNPY=$INSTALL_DIR/libnpy-1.0.1/include -# DEEPMD=$HOME/apps/anaconda3/envs/deepmd # v3.0 might have problem +# DEEPMD=$HOME/apps/anaconda3/envs/deepmd # if clang++ have problem, switch back to g++ @@ -53,18 +55,17 @@ cmake -B $BUILD_DIR -DCMAKE_INSTALL_PREFIX=$PREFIX \ -DUSE_ELPA=ON \ -DENABLE_RAPIDJSON=ON \ -DRapidJSON_DIR=$RAPIDJSON \ -# -DENABLE_DEEPKS=1 \ + -DENABLE_LIBRI=ON \ + -DLIBRI_DIR=$LIBRI \ + -DLIBCOMM_DIR=$LIBCOMM \ + -DUSE_CUDA=$USE_CUDA \ +# -DCMAKE_CUDA_COMPILER=/path/to/cuda/bin/nvcc \ +# -DNEP_DIR=$NEP_DIR \ +# -DENABLE_MLALGO=1 \ # -DTorch_DIR=$LIBTORCH \ # -Dlibnpy_INCLUDE_DIR=$LIBNPY \ -# -DENABLE_LIBRI=ON \ -# -DLIBRI_DIR=$LIBRI \ -# -DLIBCOMM_DIR=$LIBCOMM \ # -DDeePMD_DIR=$DEEPMD \ -# -DUSE_CUDA=ON \ # -DENABLE_CUSOLVERMP=ON \ -# -D CAL_CUSOLVERMP_PATH=/opt/nvidia/hpc_sdk/Linux_x86_64/2x.xx/math_libs/1x.x/targets/x86_64-linux/lib - -# if one want's to include deepmd, your system gcc version should be >= 11.3.0 for glibc requirements cmake --build $BUILD_DIR -j `nproc` cmake --install $BUILD_DIR 2>/dev/null @@ -82,5 +83,4 @@ cat << EOF Done! To use the installed ABACUS version You need to source ${TOOL}/abacus_env.sh first ! -""" EOF \ No newline at end of file diff --git a/toolchain/build_abacus_gcc-aocl.sh b/toolchain/build_abacus_gcc-aocl.sh index acf5942143..e2515f609b 100755 --- a/toolchain/build_abacus_gcc-aocl.sh +++ b/toolchain/build_abacus_gcc-aocl.sh @@ -1,13 +1,13 @@ -#!/bin/bash -#SBATCH -J build +#!/bin/bash -e +#SBATCH -J build_abacus_aocl #SBATCH -N 1 #SBATCH -n 16 #SBATCH -o install.log #SBATCH -e install.err -# JamesMisaka in 2025.03.09 -# Build ABACUS by amd-openmpi toolchain +# Build ABACUS by gcc-aocl toolchain +# load system env modules at first # module load openmpi aocc aocl ABACUS_DIR=.. @@ -16,25 +16,27 @@ INSTALL_DIR=$TOOL/install source $INSTALL_DIR/setup cd $ABACUS_DIR ABACUS_DIR=$(pwd) -#AOCLhome=/opt/aocl-linux-aocc-5.0.0/5.0.0/aocl/ # user should specify this parameter +#AOCLhome=/opt/aocl-linux-aocc-5.0.0/5.0.0/aocl/ # user should specify this parameter to the aocl installation path -BUILD_DIR=build_abacus_aocl +BUILD_DIR=build_abacus_gcc_aocl rm -rf $BUILD_DIR PREFIX=$ABACUS_DIR -ELPA=$INSTALL_DIR/elpa-2025.01.001/cpu -# ELPA=$INSTALL_DIR/elpa-2025.01.001/nvidia # for gpu-lcao +ELPA=$INSTALL_DIR/elpa-2025.06.001/cpu +# ELPA=$INSTALL_DIR/elpa-2025.06.001/nvidia # for elpa-gpu CEREAL=$INSTALL_DIR/cereal-master/include/cereal LIBXC=$INSTALL_DIR/libxc-7.0.0 -RAPIDJSON=$INSTALL_DIR/rapidjson-master/ +RAPIDJSON=$INSTALL_DIR/rapidjson-master LAPACK=$AOCLhome/lib SCALAPACK=$AOCLhome/lib FFTW3=$AOCLhome -# LIBRI=$INSTALL_DIR/LibRI-0.2.1.0 -# LIBCOMM=$INSTALL_DIR/LibComm-master +LIBRI=$INSTALL_DIR/LibRI-master +LIBCOMM=$INSTALL_DIR/LibComm-master +USE_CUDA=OFF # set ON to enable gpu-abacus +# NEP_DIR=$INSTALL_DIR/NEP_CPU-main # LIBTORCH=$INSTALL_DIR/libtorch-2.1.2/share/cmake/Torch # LIBNPY=$INSTALL_DIR/libnpy-1.0.1/include -# DEEPMD=$HOME/apps/anaconda3/envs/deepmd # v3.0 might have problem +# DEEPMD=$HOME/apps/anaconda3/envs/deepmd cmake -B $BUILD_DIR -DCMAKE_INSTALL_PREFIX=$PREFIX \ -DCMAKE_CXX_COMPILER=g++ \ @@ -51,18 +53,17 @@ cmake -B $BUILD_DIR -DCMAKE_INSTALL_PREFIX=$PREFIX \ -DUSE_ELPA=ON \ -DENABLE_RAPIDJSON=ON \ -DRapidJSON_DIR=$RAPIDJSON \ -# -DENABLE_DEEPKS=1 \ + -DENABLE_LIBRI=ON \ + -DLIBRI_DIR=$LIBRI \ + -DLIBCOMM_DIR=$LIBCOMM \ + -DUSE_CUDA=$USE_CUDA \ +# -DCMAKE_CUDA_COMPILER=/path/to/cuda/bin/nvcc \ +# -DNEP_DIR=$NEP_DIR \ +# -DENABLE_MLALGO=1 \ # -DTorch_DIR=$LIBTORCH \ # -Dlibnpy_INCLUDE_DIR=$LIBNPY \ -# -DENABLE_LIBRI=ON \ -# -DLIBRI_DIR=$LIBRI \ -# -DLIBCOMM_DIR=$LIBCOMM \ # -DDeePMD_DIR=$DEEPMD \ -# -DUSE_CUDA=ON \ # -DENABLE_CUSOLVERMP=ON \ -# -D CAL_CUSOLVERMP_PATH=/opt/nvidia/hpc_sdk/Linux_x86_64/2x.xx/math_libs/1x.x/targets/x86_64-linux/lib - -# if one want's to include deepmd, your system gcc version should be >= 11.3.0 for glibc requirements cmake --build $BUILD_DIR -j `nproc` cmake --install $BUILD_DIR 2>/dev/null @@ -80,5 +81,4 @@ cat << EOF Done! To use the installed ABACUS version You need to source ${TOOL}/abacus_env.sh first ! -""" EOF \ No newline at end of file diff --git a/toolchain/build_abacus_gnu.sh b/toolchain/build_abacus_gnu.sh index 1cb6dbf14c..0485738c1e 100755 --- a/toolchain/build_abacus_gnu.sh +++ b/toolchain/build_abacus_gnu.sh @@ -1,14 +1,13 @@ -#!/bin/bash -#SBATCH -J build +#!/bin/bash -e +#SBATCH -J build_abacus_gnu #SBATCH -N 1 #SBATCH -n 16 #SBATCH -o install.log #SBATCH -e install.err -# JamesMisaka in 2025.03.09 # Build ABACUS by gnu-toolchain -# module load openmpi +# load system env modules at first ABACUS_DIR=.. TOOL=$(pwd) @@ -21,19 +20,21 @@ BUILD_DIR=build_abacus_gnu rm -rf $BUILD_DIR PREFIX=$ABACUS_DIR -LAPACK=$INSTALL_DIR/openblas-0.3.29/lib +LAPACK=$INSTALL_DIR/openblas-0.3.30/lib SCALAPACK=$INSTALL_DIR/scalapack-2.2.2/lib -ELPA=$INSTALL_DIR/elpa-2025.01.001/cpu -# ELPA=$INSTALL_DIR/elpa-2025.01.001/nvidia # for gpu-lcao +ELPA=$INSTALL_DIR/elpa-2025.06.001/cpu +# ELPA=$INSTALL_DIR/elpa-2025.06.001/nvidia # for elpa-gpu FFTW3=$INSTALL_DIR/fftw-3.3.10 CEREAL=$INSTALL_DIR/cereal-master/include/cereal LIBXC=$INSTALL_DIR/libxc-7.0.0 RAPIDJSON=$INSTALL_DIR/rapidjson-master/ -# LIBRI=$INSTALL_DIR/LibRI-0.2.1.0 -# LIBCOMM=$INSTALL_DIR/LibComm-master +LIBRI=$INSTALL_DIR/LibRI-master +LIBCOMM=$INSTALL_DIR/LibComm-master +USE_CUDA=OFF # set ON to enable gpu-abacus +# NEP_DIR=$INSTALL_DIR/NEP_CPU-main # LIBTORCH=$INSTALL_DIR/libtorch-2.1.2/share/cmake/Torch # LIBNPY=$INSTALL_DIR/libnpy-1.0.1/include -# DEEPMD=$HOME/apps/anaconda3/envs/deepmd # v3.0 might have problem +# DEEPMD=$HOME/apps/anaconda3/envs/deepmd # cmake -B $BUILD_DIR -DCMAKE_INSTALL_PREFIX=$PREFIX \ -DCMAKE_CXX_COMPILER=g++ \ @@ -50,23 +51,17 @@ cmake -B $BUILD_DIR -DCMAKE_INSTALL_PREFIX=$PREFIX \ -DUSE_ELPA=ON \ -DENABLE_RAPIDJSON=ON \ -DRapidJSON_DIR=$RAPIDJSON \ -# -DENABLE_DEEPKS=1 \ + -DENABLE_LIBRI=ON \ + -DLIBRI_DIR=$LIBRI \ + -DLIBCOMM_DIR=$LIBCOMM \ + -DUSE_CUDA=$USE_CUDA \ +# -DCMAKE_CUDA_COMPILER=/path/to/cuda/bin/nvcc \ +# -DNEP_DIR=$NEP_DIR \ +# -DENABLE_MLALGO=1 \ # -DTorch_DIR=$LIBTORCH \ # -Dlibnpy_INCLUDE_DIR=$LIBNPY \ -# -DENABLE_LIBRI=ON \ -# -DLIBRI_DIR=$LIBRI \ -# -DLIBCOMM_DIR=$LIBCOMM \ # -DDeePMD_DIR=$DEEPMD \ -# -DUSE_CUDA=ON \ # -DENABLE_CUSOLVERMP=ON \ -# -D CAL_CUSOLVERMP_PATH=/opt/nvidia/hpc_sdk/Linux_x86_64/2x.xx/math_libs/1x.x/targets/x86_64-linux/lib - -# # add mkl env for libtorch to link -# if one want to install libtorch, mkl should be load in build process -# for -lmkl when load libtorch -# module load mkl - -# if one want's to include deepmd, your system gcc version should be >= 11.3.0 for glibc requirements cmake --build $BUILD_DIR -j `nproc` cmake --install $BUILD_DIR 2>/dev/null @@ -84,5 +79,4 @@ cat << EOF Done! To use the installed ABACUS version You need to source ${TOOL}/abacus_env.sh first ! -""" EOF diff --git a/toolchain/build_abacus_intel.sh b/toolchain/build_abacus_intel.sh index b54bf6f6ad..06fcdc5ac8 100755 --- a/toolchain/build_abacus_intel.sh +++ b/toolchain/build_abacus_intel.sh @@ -1,13 +1,13 @@ -#!/bin/bash -#SBATCH -J build +#!/bin/bash -e +#SBATCH -J build_abacus_intel #SBATCH -N 1 #SBATCH -n 16 #SBATCH -o install.log #SBATCH -e install.err -# JamesMisaka in 2025.03.09 # Build ABACUS by intel-toolchain +# load intel-oneapi env at first # module load mkl compiler mpi # source path/to/setvars.sh @@ -22,18 +22,20 @@ BUILD_DIR=build_abacus_intel rm -rf $BUILD_DIR PREFIX=$ABACUS_DIR -ELPA=$INSTALL_DIR/elpa-2025.01.001/cpu -# ELPA=$INSTALL_DIR/elpa-2025.01.001/nvidia # for gpu-lcao -CEREAL=$INSTALL_DIR/cereal-master/include/cereal +ELPA=$INSTALL_DIR/elpa-2024.05.001/cpu +# ELPA=$INSTALL_DIR/elpa-2024.05.001/nvidia # for gpu-lcao +CEREAL=$INSTALL_DIR/cereal-master/include LIBXC=$INSTALL_DIR/libxc-7.0.0 -RAPIDJSON=$INSTALL_DIR/rapidjson-master/ +RAPIDJSON=$INSTALL_DIR/rapidjson-master +LIBRI=$INSTALL_DIR/LibRI-master +LIBCOMM=$INSTALL_DIR/LibComm-master +USE_CUDA=OFF # set ON to enable gpu-abacus +# NEP_DIR=$INSTALL_DIR/NEP_CPU-main # LIBTORCH=$INSTALL_DIR/libtorch-2.1.2/share/cmake/Torch # LIBNPY=$INSTALL_DIR/libnpy-1.0.1/include -# LIBRI=$INSTALL_DIR/LibRI-0.2.1.0 -# LIBCOMM=$INSTALL_DIR/LibComm-master # DEEPMD=$HOME/apps/anaconda3/envs/deepmd # v3.0 might have problem -# Notice: if you are compiling with AMD-CPU or GPU-version ABACUS, then `icpc` and `mpiicpc` compilers are recommended +# Notice: if you are compiling with AMD-CPU or GPU-version ABACUS, then `icpc` and `mpiicpc` compilers are needed cmake -B $BUILD_DIR -DCMAKE_INSTALL_PREFIX=$PREFIX \ -DCMAKE_CXX_COMPILER=icpx \ -DMPI_CXX_COMPILER=mpiicpx \ @@ -47,22 +49,21 @@ cmake -B $BUILD_DIR -DCMAKE_INSTALL_PREFIX=$PREFIX \ -DUSE_ELPA=ON \ -DENABLE_RAPIDJSON=ON \ -DRapidJSON_DIR=$RAPIDJSON \ -# -DENABLE_DEEPKS=1 \ + -DENABLE_LIBRI=ON \ + -DLIBRI_DIR=$LIBRI \ + -DLIBCOMM_DIR=$LIBCOMM \ + -DUSE_CUDA=$USE_CUDA \ +# -DCMAKE_CUDA_COMPILER=/path/to/cuda/bin/nvcc \ +# -DNEP_DIR=$NEP_DIR \ +# -DENABLE_MLALGO=1 \ # -DTorch_DIR=$LIBTORCH \ # -Dlibnpy_INCLUDE_DIR=$LIBNPY \ -# -DENABLE_LIBRI=ON \ -# -DLIBRI_DIR=$LIBRI \ -# -DLIBCOMM_DIR=$LIBCOMM \ # -DDeePMD_DIR=$DEEPMD \ -# -DUSE_CUDA=ON \ # -DENABLE_CUSOLVERMP=ON \ -# -D CAL_CUSOLVERMP_PATH=/opt/nvidia/hpc_sdk/Linux_x86_64/2x.xx/math_libs/1x.x/targets/x86_64-linux/lib cmake --build $BUILD_DIR -j `nproc` cmake --install $BUILD_DIR 2>/dev/null -# if one want's to include deepmd, your system gcc version should be >= 11.3.0 for glibc requirements - # generate abacus_env.sh cat << EOF > "${TOOL}/abacus_env.sh" #!/bin/bash @@ -76,5 +77,4 @@ cat << EOF Done! To use the installed ABACUS version You need to source ${TOOL}/abacus_env.sh first ! -""" EOF diff --git a/toolchain/install_abacus_toolchain.sh b/toolchain/install_abacus_toolchain.sh index 92dad2a761..19fe2328ab 100755 --- a/toolchain/install_abacus_toolchain.sh +++ b/toolchain/install_abacus_toolchain.sh @@ -1,30 +1,11 @@ #!/bin/bash -e -# TODO: Review and if possible fix shellcheck errors. +# TODO: Remove this deprecated script in the future. # shellcheck disable=all [ "${BASH_SOURCE[0]}" ] && SCRIPT_NAME="${BASH_SOURCE[0]}" || SCRIPT_NAME=$0 SCRIPT_DIR="$(cd "$(dirname "$SCRIPT_NAME")" && pwd -P)" -# +---------------------------------------------------------------------------+ -# | ABACUS: (Atomic-orbital Based Ab-initio Computation at UStc) | -# | -- an open-source package based on density functional theory(DFT) | -# | Copyright 2004-2022 ABACUS developers group | -# | | -# | | -# | SPDX-License-Identifier: GPL-2.0-or-later | -# +---------------------------------------------------------------------------+ -# -# -# ***************************************************************************** -#> \brief This script will compile and install or link existing tools and -#> libraries ABACUS depends on and generate setup files that -#> can be used to compile and use ABACUS -#> \history Created on Friday, 2023/08/18 -# Update for Intel (18.08.2023, MK) -#> \author Zhaoqing Liu (Quantum Misaka) quanmisaka@stu.pku.edu.cn -# ***************************************************************************** - # ------------------------------------------------------------------------ # Work directories and used files # ------------------------------------------------------------------------ @@ -40,6 +21,29 @@ export SHA256_CHECKSUM="${SCRIPTDIR}/checksums.sha256" # ------------------------------------------------------------------------ TOOLCHAIN_OPTIONS="$@" +# ------------------------------------------------------------------------ +# DEPRECATED WARNING +# ------------------------------------------------------------------------ +echo "" +echo -e "\033[1;31m╔══════════════════════════════════════════════════════════════════════════════╗\033[0m" +echo -e "\033[1;31m║ [DEPRECATED] ║\033[0m" +echo -e "\033[1;31m║ ║\033[0m" +echo -e "\033[1;33m║ This script (install_abacus_toolchain.sh) will be deprecated soon. ║\033[0m" +echo -e "\033[1;33m║ ║\033[0m" +echo -e "\033[1;32m║ Please migrate to the refactored version: ║\033[0m" +echo -e "\033[1;32m║ → install_abacus_toolchain_new.sh ║\033[0m" +echo -e "\033[1;32m║ ║\033[0m" +echo -e "\033[1;36m║ Migration Guide: ║\033[0m" +echo -e "\033[1;36m║ • Use toolchain_*.sh frontend scripts for easier configuration ║\033[0m" +echo -e "\033[1;36m║ • New version supports main/alt package version switch ║\033[0m" +echo -e "\033[1;36m║ • Improved parameter handling and error reporting ║\033[0m" +echo -e "\033[1;31m║ ║\033[0m" +echo -e "\033[1;31m╚══════════════════════════════════════════════════════════════════════════════╝\033[0m" +echo "" +echo -e "\033[1;33mContinuing with legacy script in 3 seconds...\033[0m" +sleep 3 +echo "" + # ------------------------------------------------------------------------ # Load common variables and tools # ------------------------------------------------------------------------ @@ -106,8 +110,7 @@ OPTIONS: or --with-openblas options will switch --math-mode to the respective modes. --gpu-ver Selects the GPU architecture for which to compile. Available - options are: K20X, K40, K80, P100, V100, Mi50, Mi100, Mi250, - and no. + options: CUDA architecture number (7.5 / 75, 8.0 / 80, etc) or no This setting determines the value of nvcc's '-arch' flag. Default = no. --log-lines Number of log file lines dumped in case of a non-zero exit code. @@ -211,6 +214,8 @@ The --with-PKG options follow the rules: Default = no --with-libcomm Enable LibComm for higher-level methods like hybrid functionals, RPA or GW Default = no + --with-nep Enable NEP (CPU version) for machine learning potentials + Default = no FURTHER INSTRUCTIONS @@ -246,7 +251,7 @@ EOF tool_list="gcc intel amd cmake" mpi_list="mpich openmpi intelmpi" math_list="mkl aocl openblas" -lib_list="fftw libxc scalapack elpa cereal rapidjson libtorch libnpy libri libcomm" +lib_list="fftw libxc scalapack elpa cereal rapidjson libtorch libnpy libri libcomm nep" package_list="${tool_list} ${mpi_list} ${math_list} ${lib_list}" # ------------------------------------------------------------------------ @@ -266,19 +271,8 @@ with_gcc="__SYSTEM__" with_fftw="__INSTALL__" with_libxc="__INSTALL__" with_scalapack="__INSTALL__" -# default math library settings, MATH_MODE picks the math library -# to use, and with_* defines the default method of installation if it -# is picked. For non-CRAY systems defaults to mkl if $MKLROOT is -# available, otherwise defaults to openblas -if [ "${MKLROOT}" ]; then - export MATH_MODE="mkl" - with_mkl="__SYSTEM__" -elif [ "${AOCLhome}" ]; then - export MATH_MODE="aocl" - with_aocl="__SYSTEM__" -else - export MATH_MODE="openblas" -fi +# default math library setting: openblas +export MATH_MODE="openblas" with_openblas="__INSTALL__" with_elpa="__INSTALL__" with_cereal="__INSTALL__" @@ -596,6 +590,9 @@ while [ $# -ge 1 ]; do --with-libcomm*) with_libcomm=$(read_with "${1}") ;; + --with-nep*) + with_nep=$(read_with "${1}") + ;; --help*) show_help exit 0 @@ -868,7 +865,7 @@ for ii in ${package_list}; do done # ------------------------------------------------------------------------ -# Build packages unless dry-run mode is enabled. +# Build packages unless dry-run or pack-run mode is enabled. # ------------------------------------------------------------------------ if [ "${dry_run}" = "__TRUE__" ]; then echo "Wrote only configuration files (--dry-run)." diff --git a/toolchain/install_abacus_toolchain_new.sh b/toolchain/install_abacus_toolchain_new.sh new file mode 100755 index 0000000000..c16aaf30e8 --- /dev/null +++ b/toolchain/install_abacus_toolchain_new.sh @@ -0,0 +1,223 @@ +#!/bin/bash -e + +# ============================================================================ +# ABACUS Toolchain Installation Script (New refractored version) +# ============================================================================ +# This is the new refactored version of the ABACUS toolchain installation script. +# It provides the most main functionality as the original script but with +# improved modularity, maintainability, extensibility, and beautiful terminal output. +# +# Author: Quantum Misaka by Trae SOLO +# Date: 2025-10-16 +# ============================================================================ + +# Set script name for error reporting +[ "${BASH_SOURCE[0]}" ] && SCRIPT_NAME="${BASH_SOURCE[0]}" || SCRIPT_NAME=$0 + +# Set directory variables +export ROOTDIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +export SCRIPTDIR="${ROOTDIR}/scripts" +export BUILDDIR="${ROOTDIR}/build" +export INSTALLDIR="${ROOTDIR}/install" +export SETUPFILE="${INSTALLDIR}/setup" +export SHA256_CHECKSUM="${SCRIPTDIR}/checksums.sha256" + +# Make a copy of all options for $SETUPFILE +TOOLCHAIN_OPTIONS="$@" + +# Source required modules +source "${SCRIPTDIR}/tool_kit.sh" +source "${SCRIPTDIR}/lib/error_handler.sh" +source "${SCRIPTDIR}/lib/config_manager.sh" +source "${SCRIPTDIR}/lib/version_helper.sh" +source "${SCRIPTDIR}/lib/package_manager.sh" +source "${SCRIPTDIR}/lib/user_interface.sh" +source "${SCRIPTDIR}/lib/config_validator.sh" + +# Initialize modules +version_helper_init +ui_init +ui_setup_signals + +# Show help function +show_help() { + ui_show_help +} + +# Main function +main() { + local args=("$@") + + # Initialize configuration with command line arguments + if ! config_init "${args[@]}"; then + show_help + exit 0 + fi + + # Handle special version-related requests + if [[ "$(config_get show_version)" == "__TRUE__" ]]; then + version_show_available + exit 0 + fi + + local version_info_request="$(config_get show_version_info)" + if [[ -n "$version_info_request" ]]; then + if [[ "$version_info_request" == "all" ]]; then + version_show_available + else + version_show_available "$version_info_request" + fi + exit 0 + fi + + if [[ "$(config_get show_help)" == "__TRUE__" ]]; then + show_help + version_show_help + exit 0 + fi + + # Show beautiful welcome banner (only when actually running installation) + ui_welcome_banner + + # Show configuration summary with enhanced styling + if [[ "$(config_get dry_run)" == "__TRUE__" ]]; then + ui_section "Dry Run Mode" + ui_warning "Configuration will be written but no packages will be installed" + echo "" + fi + + if [[ "$(config_get PACK_RUN)" == "__TRUE__" ]]; then + ui_section "Pack Run Mode" + ui_info "Only downloading packages, skipping installation" + echo "" + fi + + # Show version configuration + version_show_current + + # Show enhanced summary + ui_show_summary + + # Validate version configuration + if ! version_validate_config; then + echo "" + ui_warning "Some version configuration issues were detected" + ui_info "Please review the warnings above" + echo "" + fi + + # Run configuration validation unless skipped + if ! should_skip_validation; then + echo "" + ui_section "System Validation" + if ! validate_configuration; then + echo "" + report_error $LINENO "Configuration validation failed with errors" "CONFIG_ERROR" + ui_error "Please fix the configuration issues above and try again" + ui_info "You can skip validation with --skip-system-checks if needed" + exit 1 + fi + ui_success "System validation completed successfully" + fi + + # Skip user confirmation - proceed directly with installation + + # Export configuration to environment variables + config_export_to_env + + # Export version configuration for stage scripts + package_export_version_config + + # Preliminaries + ui_section "Preparing Installation Environment" + ui_info "Creating installation directories..." + mkdir -p ${INSTALLDIR} + + # Start writing setup file + ui_info "Generating setup configuration..." + cat << EOF > "$SETUPFILE" +#!/bin/bash +source "${SCRIPTDIR}/tool_kit.sh" +export ABACUS_TOOLCHAIN_OPTIONS="${TOOLCHAIN_OPTIONS}" +EOF + + ui_info "Compiling with $(get_nprocs) processes for target ${TARGET_CPU}" + + write_toolchain_env ${INSTALLDIR} + + # write toolchain config + ui_info "Writing toolchain configuration..." + echo "tool_list=\"${tool_list}\"" > ${INSTALLDIR}/toolchain.conf + for ii in ${package_list}; do + install_mode="$(eval echo \${with_${ii}})" + echo "with_${ii}=\"${install_mode}\"" >> ${INSTALLDIR}/toolchain.conf + done + + # Exit if dry run + if [[ "$(config_get dry_run)" == "__TRUE__" ]]; then + ui_success "Configuration files generated successfully (dry-run mode)" + ui_info "To proceed with actual installation, run without --dry-run" + exit 0 + fi + + # Build packages (following original toolchain logic) + ui_section "Starting Package Installation" + ui_info "Initializing build environment..." + echo "# Leak suppressions" > ${INSTALLDIR}/lsan.supp + + # Install packages stage by stage with enhanced progress display + ui_stage_progress "0" "Build Tools & Compilers" + ./scripts/stage0/install_stage0.sh + + ui_stage_progress "1" "MPI Implementations" + ./scripts/stage1/install_stage1.sh + + ui_stage_progress "2" "Mathematical Libraries" + ./scripts/stage2/install_stage2.sh + + ui_stage_progress "3" "Scientific Computing Libraries" + ./scripts/stage3/install_stage3.sh + + ui_stage_progress "4" "Advanced Feature Libraries" + ./scripts/stage4/install_stage4.sh + + # Show beautiful completion message + ui_section "Installation Complete" + ui_success "ABACUS Toolchain installation completed successfully!" + echo "" + + # Enhanced usage instructions with beautiful formatting + ui_print_color "${UI_BLUE}${UI_BOLD}" "🎉 Congratulations! Your ABACUS toolchain installation finished successfully." + echo "" + ui_print_color "${UI_CYAN}${UI_BOLD}" "$(printf '═%.0s' $(seq 1 60))" + ui_print_color "${UI_BLUE}${UI_BOLD}" " USAGE INSTRUCTIONS" + ui_print_color "${UI_CYAN}${UI_BOLD}" "$(printf '═%.0s' $(seq 1 60))" + echo "" + + ui_print_color "${UI_GREEN}${UI_BOLD}" "🔧 To activate the toolchain environment:" + ui_print_color "${UI_WHITE}" " source ${SETUPFILE}" + echo "" + + ui_print_color "${UI_GREEN}${UI_BOLD}" "🚀 Build ABACUS with your preferred toolchain:" + ui_print_color "${UI_WHITE}" " ./build_abacus_gnu.sh # GNU toolchain (GCC + OpenBLAS)" + ui_print_color "${UI_WHITE}" " ./build_abacus_intel.sh # Intel toolchain (ICC + MKL)" + ui_print_color "${UI_WHITE}" " ./build_abacus_gcc-aocl.sh # AMD GCC + AOCL" + ui_print_color "${UI_WHITE}" " ./build_abacus_aocc-aocl.sh # AMD AOCC + AOCL" + echo "" + + ui_print_color "${UI_ORANGE}${UI_BOLD}" "💡 Pro Tips:" + ui_print_color "${UI_GRAY}" " • Modify the builder scripts to suit your specific needs" + ui_print_color "${UI_GRAY}" " • The environment setup is required for each new shell session" + ui_print_color "${UI_GRAY}" " • Check the generated setup file for all available environment variables" + echo "" + + ui_print_color "${UI_CYAN}${UI_BOLD}" "$(printf '═%.0s' $(seq 1 60))" + ui_print_color "${UI_GREEN}${UI_BOLD}" "✨ Happy DFT calculation with ABACUS! ✨" + ui_print_color "${UI_CYAN}${UI_BOLD}" "$(printf '═%.0s' $(seq 1 60))" + echo "" + + return 0 +} + +# Run main function with all arguments +main "$@" \ No newline at end of file diff --git a/toolchain/scripts/VERSION b/toolchain/scripts/VERSION index e94549a66e..6f4471799a 100644 --- a/toolchain/scripts/VERSION +++ b/toolchain/scripts/VERSION @@ -1,2 +1,2 @@ # version file to force a rebuild of the entire toolchain -VERSION="2025.2" \ No newline at end of file +VERSION="2025.3" \ No newline at end of file diff --git a/toolchain/scripts/common_vars.sh b/toolchain/scripts/common_vars.sh index 51f941f6fe..fd003555c3 100755 --- a/toolchain/scripts/common_vars.sh +++ b/toolchain/scripts/common_vars.sh @@ -14,7 +14,7 @@ ARCH_FILE_TEMPLATE=${ARCH_FILE_TEMPLATE:-"${SCRIPTDIR}/arch_base.tmpl"} VERSION_FILE=${VERSION_FILE:-"${SCRIPTDIR}/VERSION"} # system arch gotten from OpenBLAS prebuild -OPENBLAS_ARCH=${OPENBLAS_ARCH:-"x86_64"} +OPENBLAS_ARCH=${OPENBLAS_ARCH:-''} OPENBLAS_LIBCORE=${OPENBLAS_LIBCORE:-''} # search paths @@ -31,4 +31,10 @@ ENABLE_CRAY=${ENABLE_CRAY:-"__FALSE__"} MPI_MODE=${MPI_MODE:-openmpi} MATH_MODE=${MATH_MODE:-openblas} +# default for log file dump size +export LOG_LINES="200" + +# download configuration +DOWNLOAD_CERT_POLICY=${DOWNLOAD_CERT_POLICY:-"smart"} # strict|smart|skip + export NVCC=${NVCC:-nvcc} diff --git a/toolchain/scripts/get_openblas_arch.sh b/toolchain/scripts/get_openblas_arch.sh index f0fb8b1aa8..6f61db4612 100755 --- a/toolchain/scripts/get_openblas_arch.sh +++ b/toolchain/scripts/get_openblas_arch.sh @@ -3,57 +3,72 @@ # TODO: Review and if possible fix shellcheck errors. # shellcheck disable=all -# Last Update in 2024-0811 - [ "${BASH_SOURCE[0]}" ] && SCRIPT_NAME="${BASH_SOURCE[0]}" || SCRIPT_NAME=$0 SCRIPT_DIR="$(cd "$(dirname "$SCRIPT_NAME")" && pwd -P)" -openblas_ver="0.3.29" # Keep in sync with install_openblas.sh -openblas_sha256="38240eee1b29e2bde47ebb5d61160207dc68668a54cac62c076bb5032013b1eb" +# Load centralized version management +source "${SCRIPT_DIR}"/package_versions.sh + +# Load OpenBLAS package variables with version suffix support +# Check for version configuration from environment or individual package setting +version_suffix="" +if [[ -n "${ABACUS_TOOLCHAIN_PACKAGE_VERSIONS}" ]]; then + # Check for individual package version override + if echo "${ABACUS_TOOLCHAIN_PACKAGE_VERSIONS}" | grep -q "openblas:alt"; then + version_suffix="alt" + elif echo "${ABACUS_TOOLCHAIN_PACKAGE_VERSIONS}" | grep -q "openblas:main"; then + version_suffix="main" + fi +fi +# Fall back to global version suffix if no individual setting +if [[ -z "$version_suffix" && -n "${ABACUS_TOOLCHAIN_VERSION_SUFFIX}" ]]; then + version_suffix="${ABACUS_TOOLCHAIN_VERSION_SUFFIX}" +fi +# Load package variables with appropriate version +load_package_vars "openblas" "$version_suffix" openblas_pkg="OpenBLAS-${openblas_ver}.tar.gz" +find_openblas_dir() { + local __dir='' + for __dir in *OpenBLAS*; do + if [ -d "$__dir" ]; then + echo "$__dir" + return + fi + done + echo '' +} + source "${SCRIPT_DIR}"/common_vars.sh source "${SCRIPT_DIR}"/tool_kit.sh source "${SCRIPT_DIR}"/signal_trap.sh source "${INSTALLDIR}"/toolchain.conf source "${INSTALLDIR}"/toolchain.env -find_openblas_dir() { - local __dir='' - for __dir in *OpenBLAS*; do - if [ -d "$__dir" ]; then - echo "$__dir" - return 0 - fi - done - echo '' -} - ! [ -d "${BUILDDIR}" ] && mkdir -p "${BUILDDIR}" cd "${BUILDDIR}" echo "==================== Getting proc arch info using OpenBLAS tools ====================" -# find existing openblas source dir -openblas_dir="$(find_openblas_dir)" -# if cannot find openblas source dir, try download one -if ! [ "$openblas_dir" ]; then - if [ -f ${openblas_pkg} ]; then +if [ -f ${openblas_pkg} ]; then echo "${openblas_pkg} is found" - else - #download_pkg_from_ABACUS_org "${openblas_sha256}" "${openblas_pkg}" - # using codeload.github +else +# using codeload.github url="https://codeload.github.com/OpenMathLib/OpenBLAS/tar.gz/v${openblas_ver}" download_pkg_from_url "${openblas_sha256}" "${openblas_pkg}" "${url}" - fi - tar -xzf ${openblas_pkg} - openblas_dir="$(find_openblas_dir)" fi +# if toolchain run in pack-run mode, do exit +if [ "${PACK_RUN}" = "__TRUE__" ]; then + echo "--pack-run mode specified, skip arch detection" + exit 0 +fi +tar -xzf ${openblas_pkg} +openblas_dir="$(find_openblas_dir)" openblas_conf="${openblas_dir}/Makefile.conf" # try find Makefile.config, if not then generate one with make lapack_prebuild if ! [ -f "$openblas_conf" ]; then - cd "$openblas_dir" - make lapack_prebuild - cd .. + cd "$openblas_dir" + make lapack_prebuild + cd .. fi OPENBLAS_LIBCORE="$(grep 'LIBCORE=' $openblas_conf | cut -f2 -d=)" OPENBLAS_ARCH="$(grep 'ARCH=' $openblas_conf | cut -f2 -d=)" diff --git a/toolchain/scripts/lib/config_manager.sh b/toolchain/scripts/lib/config_manager.sh new file mode 100644 index 0000000000..6d67bf0261 --- /dev/null +++ b/toolchain/scripts/lib/config_manager.sh @@ -0,0 +1,1245 @@ +#!/bin/bash + +# ============================================================================ +# ABACUS Toolchain Configuration Manager +# ============================================================================ +# Handles configuration parsing, validation, and management +# Author: Quantum Misaka by Trae SOLO +# Date: 2025-10-16 +# ============================================================================ + +# Global configuration variables +declare -A CONFIG_CACHE +declare -A USER_EXPLICIT_MPI +declare -A USER_EXPLICIT_MATH +CONFIG_INITIALIZED=false +CONFIG_FILE_LOADED=false + +# Package lists (from original script) +tool_list="gcc intel amd cmake" +mpi_list="mpich openmpi intelmpi" +math_list="mkl aocl openblas" +lib_list="fftw libxc scalapack elpa cereal rapidjson libtorch libnpy libri libcomm nep" +package_list="${tool_list} ${mpi_list} ${math_list} ${lib_list}" + +# Configuration file paths for loading in advance +# Not in use now +CONFIG_FILE_PATHS=( + "${ROOTDIR}/toolchain_config.conf" +) + +# Load configuration from file +# Usage: config_load_from_file [config_file_path] +config_load_from_file() { + local config_file="$1" + + # If no file specified, search for default locations + if [[ -z "$config_file" ]]; then + for path in "${CONFIG_FILE_PATHS[@]}"; do + if [[ -f "$path" && -r "$path" ]]; then + config_file="$path" + break + fi + done + fi + + # If still no config file found, return silently (not an error) + if [[ -z "$config_file" || ! -f "$config_file" ]]; then + return 0 + fi + + echo "Loading configuration from: $config_file" + + # Read configuration file line by line + local line_num=0 + while IFS= read -r line || [[ -n "$line" ]]; do + line_num=$((line_num + 1)) + + # Skip empty lines and comments + [[ -z "$line" || "$line" =~ ^[[:space:]]*# ]] && continue + + # Remove leading/trailing whitespace + line=$(echo "$line" | sed 's/^[[:space:]]*//;s/[[:space:]]*$//') + + # Parse variable assignments + if [[ "$line" =~ ^([A-Z_][A-Z0-9_]*)=(.*)$ ]]; then + local var_name="${BASH_REMATCH[1]}" + local var_value="${BASH_REMATCH[2]}" + + # Remove quotes if present + var_value=$(echo "$var_value" | sed 's/^"//;s/"$//') + + # Validate and store configuration + case "$var_name" in + # Basic configuration + INSTALL_PREFIX|BUILD_PREFIX) + CONFIG_CACHE["$var_name"]="$var_value" + ;; + NPROCS) + if [[ "$var_value" =~ ^[0-9]+$ ]]; then + CONFIG_CACHE["NPROCS_OVERWRITE"]="$var_value" + else + echo "Warning: Invalid NPROCS value '$var_value' in config file line $line_num" + fi + ;; + + # Mode selections + MPI_MODE) + case "$var_value" in + mpich|openmpi|intelmpi|none) + CONFIG_CACHE["MPI_MODE"]="$var_value" + ;; + *) + echo "Warning: Invalid MPI_MODE value '$var_value' in config file line $line_num" + ;; + esac + ;; + MATH_MODE) + case "$var_value" in + mkl|aocl|openblas|none) + CONFIG_CACHE["MATH_MODE"]="$var_value" + ;; + *) + echo "Warning: Invalid MATH_MODE value '$var_value' in config file line $line_num" + ;; + esac + ;; + + # Package configurations + WITH_*) + local package_name=$(echo "${var_name#WITH_}" | tr '[:upper:]' '[:lower:]') + # Handle special case for 4th-openmpi (convert to OPENMPI_4TH) + if [[ "$package_name" == "4th-openmpi" ]]; then + case "$var_value" in + yes|no|__DONTUSE__) + # Map __DONTUSE__ to "no" for OPENMPI_4TH + if [[ "$var_value" == "__DONTUSE__" ]]; then + CONFIG_CACHE["OPENMPI_4TH"]="no" + else + CONFIG_CACHE["OPENMPI_4TH"]="$var_value" + fi + ;; + *) + echo "Warning: Invalid value '$var_value' for WITH_4TH_OPENMPI in config file line $line_num" + ;; + esac + else + case "$var_value" in + __SYSTEM__|__INSTALL__|__DONTUSE__) + CONFIG_CACHE["with_${package_name}"]="$var_value" + ;; + *) + # Allow custom paths for some packages + CONFIG_CACHE["with_${package_name}"]="$var_value" + ;; + esac + fi + ;; + + # Version strategy options (NEW) + VERSION_STRATEGY) + case "$var_value" in + main|alt) + CONFIG_CACHE["VERSION_STRATEGY"]="$var_value" + ;; + *) + echo "Warning: Invalid VERSION_STRATEGY value '$var_value' in config file line $line_num. Valid options: main, alt" + ;; + esac + ;; + PACKAGE_VERSION_*) + # Extract package name from PACKAGE_VERSION_PACKAGENAME + local pkg_name="${var_name#PACKAGE_VERSION_}" + case "$var_value" in + main|alt) + CONFIG_CACHE["PACKAGE_VERSION_${pkg_name}"]="$var_value" + ;; + *) + echo "Warning: Invalid package version value '$var_value' for $var_name in config file line $line_num. Valid options: main, alt" + ;; + esac + ;; + + # Advanced options + # Not in use, leave it for future + DEBUG_MODE|VERBOSE_MODE|SKIP_SYSTEM_CHECKS|FORCE_REINSTALL) + case "$var_value" in + true|false) + CONFIG_CACHE["$var_name"]="$var_value" + ;; + *) + echo "Warning: Invalid boolean value '$var_value' for $var_name in config file line $line_num" + ;; + esac + ;; + + *) + echo "Warning: Unknown configuration option '$var_name' in config file line $line_num" + ;; + esac + elif [[ -n "$line" ]]; then + echo "Warning: Invalid configuration syntax in config file line $line_num: $line" + fi + done < "$config_file" + + CONFIG_FILE_LOADED=true + echo "Configuration loaded successfully from: $config_file" + return 0 +} + +# Apply mode-based configuration after loading from file +# Usage: config_apply_modes_from_file +config_apply_modes_from_file() { + # Apply MPI mode if set in config file (silent mode to avoid duplicate output) + if [[ -n "${CONFIG_CACHE[MPI_MODE]}" ]]; then + case "${CONFIG_CACHE[MPI_MODE]}" in + mpich) + CONFIG_CACHE["with_mpich"]="__INSTALL__" + CONFIG_CACHE["with_openmpi"]="__DONTUSE__" + CONFIG_CACHE["with_intelmpi"]="__DONTUSE__" + ;; + openmpi) + CONFIG_CACHE["with_mpich"]="__DONTUSE__" + CONFIG_CACHE["with_openmpi"]="__INSTALL__" + CONFIG_CACHE["with_intelmpi"]="__DONTUSE__" + ;; + intelmpi) + CONFIG_CACHE["with_mpich"]="__DONTUSE__" + CONFIG_CACHE["with_openmpi"]="__DONTUSE__" + CONFIG_CACHE["with_intelmpi"]="__INSTALL__" + ;; + none) + CONFIG_CACHE["with_mpich"]="__DONTUSE__" + CONFIG_CACHE["with_openmpi"]="__DONTUSE__" + CONFIG_CACHE["with_intelmpi"]="__DONTUSE__" + ;; + esac + fi + + # Apply Math mode if set in config file (silent mode to avoid duplicate output) + if [[ -n "${CONFIG_CACHE[MATH_MODE]}" ]]; then + case "${CONFIG_CACHE[MATH_MODE]}" in + mkl) + CONFIG_CACHE["with_mkl"]="__SYSTEM__" + CONFIG_CACHE["with_aocl"]="__DONTUSE__" + CONFIG_CACHE["with_openblas"]="__DONTUSE__" + # MKL provides FFTW and ScaLAPACK, so disable them (original logic) + CONFIG_CACHE["with_fftw"]="__DONTUSE__" + CONFIG_CACHE["with_scalapack"]="__DONTUSE__" + ;; + aocl) + CONFIG_CACHE["with_mkl"]="__DONTUSE__" + CONFIG_CACHE["with_aocl"]="__INSTALL__" + CONFIG_CACHE["with_openblas"]="__DONTUSE__" + ;; + openblas) + CONFIG_CACHE["with_mkl"]="__DONTUSE__" + CONFIG_CACHE["with_aocl"]="__DONTUSE__" + CONFIG_CACHE["with_openblas"]="__INSTALL__" + ;; + none) + CONFIG_CACHE["with_mkl"]="__DONTUSE__" + CONFIG_CACHE["with_aocl"]="__DONTUSE__" + CONFIG_CACHE["with_openblas"]="__DONTUSE__" + ;; + esac + fi +} + +# Initialize configuration manager +# Usage: config_manager_init +config_manager_init() { + if [[ "$CONFIG_INITIALIZED" == "true" ]]; then + return 0 + fi + + # Version management is now handled directly in individual scripts via package_versions.sh + + # Set default configuration first + config_set_defaults + + # Load configuration from file (if available) - this will override defaults + config_load_from_file + + # Apply mode-based configurations from file - this will override defaults + config_apply_modes_from_file + + CONFIG_INITIALIZED=true + + return 0 +} + +# Set default configuration values +# Usage: config_set_defaults +config_set_defaults() { + # First set everything to __DONTUSE__ + for ii in ${package_list}; do + CONFIG_CACHE["with_${ii}"]="__DONTUSE__" + done + + # Tools to turn on by default + CONFIG_CACHE["with_gcc"]="__SYSTEM__" + CONFIG_CACHE["with_cmake"]="__INSTALL__" + + # Set default parallel jobs (NEW: Fix for parallel jobs parameter) + if [[ -z "${NPROCS_OVERWRITE}" ]]; then + if command -v nproc > /dev/null 2>&1; then + CONFIG_CACHE["NPROCS_OVERWRITE"]="$(nproc --all)" + elif command -v sysctl > /dev/null 2>&1; then + CONFIG_CACHE["NPROCS_OVERWRITE"]="$(sysctl -n hw.ncpu)" + else + CONFIG_CACHE["NPROCS_OVERWRITE"]="1" + fi + else + CONFIG_CACHE["NPROCS_OVERWRITE"]="${NPROCS_OVERWRITE}" + fi + + # Default MPI and Math modes (following original script logic) + # Default math library settings to openblas + CONFIG_CACHE["MATH_MODE"]="openblas" + + # Set math library defaults based on MATH_MODE (before user input processing) + case "${CONFIG_CACHE[MATH_MODE]}" in + mkl) + CONFIG_CACHE["with_mkl"]="__SYSTEM__" + ;; + aocl) + CONFIG_CACHE["with_aocl"]="__SYSTEM__" + ;; + openblas) + CONFIG_CACHE["with_openblas"]="__INSTALL__" + ;; + esac + + # For MPI, we try to detect system MPI variant (following original script logic) + # Only detect if MPI_MODE is not already set (to avoid duplicate detection) + if [[ -z "${CONFIG_CACHE[MPI_MODE]}" ]] && command -v mpiexec > /dev/null 2>&1; then + # check if we are dealing with openmpi, mpich or intelmpi + if mpiexec --version 2>&1 | grep -s -q "HYDRA"; then + if command -v ui_info &> /dev/null; then + ui_info "🔍 Detected system MPI: MPICH" + else + echo "MPI is detected and it appears to be MPICH" + fi + CONFIG_CACHE["MPI_MODE"]="mpich" + CONFIG_CACHE["with_mpich"]="__SYSTEM__" + elif mpiexec --version 2>&1 | grep -s -q "OpenRTE"; then + if command -v ui_info &> /dev/null; then + ui_info "🔍 Detected system MPI: OpenMPI" + else + echo "MPI is detected and it appears to be OpenMPI" + fi + CONFIG_CACHE["MPI_MODE"]="openmpi" + CONFIG_CACHE["with_openmpi"]="__SYSTEM__" + elif mpiexec --version 2>&1 | grep -s -q "Intel"; then + if command -v ui_info &> /dev/null; then + ui_info "🔍 Detected system MPI: Intel MPI" + else + echo "MPI is detected and it appears to be Intel MPI" + fi + CONFIG_CACHE["with_gcc"]="__DONTUSE__" + CONFIG_CACHE["with_amd"]="__DONTUSE__" + CONFIG_CACHE["with_aocl"]="__DONTUSE__" + CONFIG_CACHE["with_intel"]="__SYSTEM__" + CONFIG_CACHE["with_intelmpi"]="__SYSTEM__" + CONFIG_CACHE["MPI_MODE"]="intelmpi" + else # default to mpich + if command -v ui_info &> /dev/null; then + ui_info "🔍 MPI detected, defaulting to MPICH configuration" + else + echo "MPI is detected and defaults to MPICH" + fi + CONFIG_CACHE["MPI_MODE"]="mpich" + CONFIG_CACHE["with_mpich"]="__SYSTEM__" + fi + else + if command -v report_warning &> /dev/null; then + report_warning ${LINENO} "No MPI installation detected (ignore this message in Cray Linux Environment or when MPI installation was requested)." + else + echo "Warning: No MPI installation detected (ignore this message in Cray Linux Environment or when MPI installation was requested)." + fi + CONFIG_CACHE["MPI_MODE"]="no" + fi + + # Default libraries to install + CONFIG_CACHE["with_fftw"]="__INSTALL__" + CONFIG_CACHE["with_libxc"]="__INSTALL__" + CONFIG_CACHE["with_scalapack"]="__INSTALL__" + CONFIG_CACHE["with_elpa"]="__INSTALL__" + CONFIG_CACHE["with_cereal"]="__INSTALL__" + CONFIG_CACHE["with_rapidjson"]="__INSTALL__" + CONFIG_CACHE["with_libri"]="__INSTALL__" + CONFIG_CACHE["with_libcomm"]="__INSTALL__" + CONFIG_CACHE["with_nep"]="__DONTUSE__" + + # Default enable options (following original script logic) + CONFIG_CACHE["dry_run"]="__FALSE__" + CONFIG_CACHE["enable_tsan"]="__FALSE__" + CONFIG_CACHE["enable_opencl"]="__FALSE__" + CONFIG_CACHE["enable_cuda"]="__FALSE__" + CONFIG_CACHE["enable_hip"]="__FALSE__" + CONFIG_CACHE["intel_classic"]="no" + CONFIG_CACHE["PACK_RUN"]="__FALSE__" + CONFIG_CACHE["INTELMPI_CLASSIC"]="no" + CONFIG_CACHE["WITH_IFX"]="yes" + CONFIG_CACHE["WITH_FLANG"]="no" + CONFIG_CACHE["OPENMPI_4TH"]="no" + CONFIG_CACHE["GPUVER"]="no" + CONFIG_CACHE["MPICH_DEVICE"]="ch4" + CONFIG_CACHE["TARGET_CPU"]="native" + CONFIG_CACHE["LOG_LINES"]="200" + CONFIG_CACHE["show_help"]="false" + CONFIG_CACHE["DOWNLOADER_FLAGS"]="" + + # Version strategy defaults (NEW) + CONFIG_CACHE["VERSION_STRATEGY"]="main" + + # Defaults for CRAY Linux Environment (following original script logic) + if [[ -n "${CRAY_LD_LIBRARY_PATH}" ]]; then + CONFIG_CACHE["enable_cray"]="__TRUE__" + CONFIG_CACHE["MATH_MODE"]="cray" + # Default MPI used by CLE is assumed to be MPICH, in any case + # do not use the installers for the MPI libraries + CONFIG_CACHE["with_mpich"]="__DONTUSE__" + CONFIG_CACHE["with_openmpi"]="__DONTUSE__" + CONFIG_CACHE["with_intelmpi"]="__DONTUSE__" + CONFIG_CACHE["MPI_MODE"]="mpich" + # set default value for some installers appropriate for CLE + CONFIG_CACHE["with_gcc"]="__DONTUSE__" + # Reset math library defaults for CRAY environment + CONFIG_CACHE["with_mkl"]="__DONTUSE__" + CONFIG_CACHE["with_aocl"]="__DONTUSE__" + CONFIG_CACHE["with_openblas"]="__DONTUSE__" + fi + + return 0 +} + +# Helper function to read --enable-* options +# Usage: read_enable_option "--enable-feature=value" +read_enable_option() { + local arg="$1" + if [[ "$arg" == *"="* ]]; then + local value="${arg#*=}" + case "$value" in + yes|true|1) echo "__TRUE__" ;; + no|false|0) echo "__FALSE__" ;; + *) echo "__INVALID__" ;; + esac + else + echo "__TRUE__" + fi +} + +# Helper function to read --with-* options +# Usage: read_with_option "--with-package=value" +read_with_option() { + local arg="$1" + if [[ "$arg" == *"="* ]]; then + local value="${arg#*=}" + case "$value" in + install) echo "__INSTALL__" ;; + system) echo "__SYSTEM__" ;; + no) echo "__DONTUSE__" ;; + *) echo "$value" ;; # Allow custom paths + esac + else + echo "__INSTALL__" + fi +} + +# Validate configuration +# Usage: config_validate +config_validate() { + # Validate numeric values + if [[ -n "${CONFIG_CACHE[NPROCS_OVERWRITE]}" ]]; then + if ! [[ "${CONFIG_CACHE[NPROCS_OVERWRITE]}" =~ ^[0-9]+$ ]]; then + report_error ${LINENO} "Invalid number of processes: ${CONFIG_CACHE[NPROCS_OVERWRITE]}" + exit 1 + fi + fi + + if ! [[ "${CONFIG_CACHE[LOG_LINES]}" =~ ^[0-9]+$ ]]; then + report_error ${LINENO} "Invalid log lines value: ${CONFIG_CACHE[LOG_LINES]}" + exit 1 + fi + + # Validate GPU version - support only numeric formats + local gpu_ver="${CONFIG_CACHE[GPUVER]}" + if [[ "$gpu_ver" != "no" ]]; then + # Set ARCH_NUM based on GPUVER (remove decimal point for numeric versions) + local arch_num="${gpu_ver//.}" + + # Check if it's a valid numeric format (like 8.0, 70, 80, etc.) + if [[ "$arch_num" =~ ^[1-9][0-9]*$ ]]; then + CONFIG_CACHE["ARCH_NUM"]="$arch_num" + else + report_error ${LINENO} "Invalid GPU version: $gpu_ver. Supported formats: numeric with decimal (6.0, 7.0, 8.0, 8.9, etc.) or numeric without decimal (60, 70, 80, 89, etc.)" + exit 1 + fi + else + CONFIG_CACHE["ARCH_NUM"]="no" + fi + + # Backward compatibility: also export ARCH_NUM to environment when set + if [[ -n "${CONFIG_CACHE[ARCH_NUM]}" ]]; then + export ARCH_NUM="${CONFIG_CACHE[ARCH_NUM]}" + fi + + return 0 +} + +# Apply environment variable processing logic (from original script lines 668-744) +# Usage: config_apply_env_logic +config_apply_env_logic() { + # Compiler conflicts (from original script L668-677) + if [ "${CONFIG_CACHE[with_intel]}" != "__DONTUSE__" ] && [ "${CONFIG_CACHE[with_gcc]}" = "__INSTALL__" ]; then + echo "You have chosen to use the Intel compiler, therefore the installation of the GNU compiler will be skipped." + CONFIG_CACHE["with_gcc"]="__SYSTEM__" + fi + if [ "${CONFIG_CACHE[with_amd]}" != "__DONTUSE__" ] && [ "${CONFIG_CACHE[with_gcc]}" = "__INSTALL__" ]; then + echo "You have chosen to use the AMD compiler, therefore the installation of the GNU compiler will be skipped." + CONFIG_CACHE["with_gcc"]="__SYSTEM__" + fi + if [ "${CONFIG_CACHE[with_amd]}" != "__DONTUSE__" ] && [ "${CONFIG_CACHE[with_intel]}" != "__DONTUSE__" ]; then + report_error "You have chosen to use the AMD and the Intel compiler to compile dependent packages. Select only one compiler." + exit 1 + fi + + # MPI library conflicts (from original script L679-710) + if [ "${CONFIG_CACHE[MPI_MODE]}" = "no" ]; then + if [ "${CONFIG_CACHE[with_scalapack]}" != "__DONTUSE__" ]; then + echo "Not using MPI, so scalapack is disabled." + CONFIG_CACHE["with_scalapack"]="__DONTUSE__" + fi + if [ "${CONFIG_CACHE[with_elpa]}" != "__DONTUSE__" ]; then + echo "Not using MPI, so ELPA is disabled." + CONFIG_CACHE["with_elpa"]="__DONTUSE__" + fi + else + # if gcc is installed, then mpi needs to be installed too + if [ "${CONFIG_CACHE[with_gcc]}" = "__INSTALL__" ]; then + echo "You have chosen to install the GNU compiler, therefore MPI libraries have to be installed too" + case ${CONFIG_CACHE[MPI_MODE]} in + mpich) + CONFIG_CACHE["with_mpich"]="__INSTALL__" + CONFIG_CACHE["with_openmpi"]="__DONTUSE__" + ;; + openmpi) + CONFIG_CACHE["with_mpich"]="__DONTUSE__" + CONFIG_CACHE["with_openmpi"]="__INSTALL__" + ;; + esac + echo "and the use of the Intel compiler and Intel MPI will be disabled." + CONFIG_CACHE["with_intel"]="__DONTUSE__" + CONFIG_CACHE["with_intelmpi"]="__DONTUSE__" + fi + # Enable only one MPI implementation + case ${CONFIG_CACHE[MPI_MODE]} in + mpich) + CONFIG_CACHE["with_openmpi"]="__DONTUSE__" + CONFIG_CACHE["with_intelmpi"]="__DONTUSE__" + ;; + openmpi) + CONFIG_CACHE["with_mpich"]="__DONTUSE__" + CONFIG_CACHE["with_intelmpi"]="__DONTUSE__" + ;; + intelmpi) + CONFIG_CACHE["with_mpich"]="__DONTUSE__" + CONFIG_CACHE["with_openmpi"]="__DONTUSE__" + ;; + esac + fi + + # If MATH_MODE is mkl, then openblas, scalapack and fftw is not needed + # QuantumMisaka in 2023-09-17 + if [ "${CONFIG_CACHE[MATH_MODE]}" = "mkl" ]; then + if [ "${CONFIG_CACHE[with_openblas]}" != "__DONTUSE__" ]; then + echo "Using MKL, so openblas is disabled." + CONFIG_CACHE["with_openblas"]="__DONTUSE__" + fi + if [ "${CONFIG_CACHE[with_scalapack]}" != "__DONTUSE__" ]; then + echo "Using MKL, so scalapack is disabled." + CONFIG_CACHE["with_scalapack"]="__DONTUSE__" + fi + if [ "${CONFIG_CACHE[with_fftw]}" != "__DONTUSE__" ]; then + echo "Using MKL, so fftw is disabled." + CONFIG_CACHE["with_fftw"]="__DONTUSE__" + fi + fi + + # Select the correct compute number based on the GPU architecture + # QuantumMisaka in 2025-03-19 + local gpuver="${CONFIG_CACHE[GPUVER]}" + if [ "$gpuver" != "no" ]; then + export ARCH_NUM="${gpuver//.}" + CONFIG_CACHE["ARCH_NUM"]="$ARCH_NUM" + else + export ARCH_NUM="no" + CONFIG_CACHE["ARCH_NUM"]="no" + fi + + # If CUDA or HIP are enabled, make sure the GPU version has been defined. + if [ "${CONFIG_CACHE[enable_cuda]}" = "__TRUE__" ] || [ "${CONFIG_CACHE[enable_hip]}" = "__TRUE__" ]; then + if [ "${CONFIG_CACHE[GPUVER]}" = "no" ]; then + report_error "Please choose GPU architecture to compile for with --gpu-ver" + exit 1 + fi + if [[ "$ARCH_NUM" =~ ^[1-9][0-9]*$ ]] || [ "$ARCH_NUM" = "no" ]; then + echo "Notice: GPU compilation is enabled, and GPU compatibility is set via --gpu-ver to sm_${ARCH_NUM}." + else + report_error ${LINENO} \ + "When GPU compilation is enabled, the --gpu-ver variable should be properly set regarding to GPU compatibility. For check your GPU compatibility, visit https://developer.nvidia.com/cuda-gpus. For example: A100 -> 8.0 (or 80), V100 -> 7.0 (or 70), 4090 -> 8.9 (or 89)" + exit 1 + fi + fi + + # ABACUS itself and some dependencies require cmake. + if [ "${CONFIG_CACHE[with_cmake]}" = "__DONTUSE__" ]; then + report_error "CMake is required for ABACUS and some dependencies. Please enable it." + exit 1 + fi +} + +# Export configuration to environment variables +# Usage: config_export_to_env +config_export_to_env() { + # Apply environment variable processing logic first + config_apply_env_logic + + # Export all configuration values as environment variables + for key in "${!CONFIG_CACHE[@]}"; do + export "$key"="${CONFIG_CACHE[$key]}" + done + + # Backward compatibility for stage scripts expecting uppercase GPU flags + # Installers (e.g., stage3/install_elpa.sh) read ENABLE_CUDA, not enable_cuda + export ENABLE_CUDA="${CONFIG_CACHE[enable_cuda]}" + + # Export package list variables + export tool_list + export mpi_list + export math_list + export lib_list + export package_list +} + +# Get configuration value +# Usage: config_get "key" +config_get() { + local key="$1" + echo "${CONFIG_CACHE[$key]}" +} + +# Set configuration value +# Usage: config_set "key" "value" +config_set() { + local key="$1" + local value="$2" + CONFIG_CACHE["$key"]="$value" +} + +# Check if configuration key exists +# Usage: config_has "key" +config_has() { + local key="$1" + [[ -n "${CONFIG_CACHE[$key]}" ]] +} + +# Print configuration summary +# Usage: config_print_summary +config_print_summary() { + echo "Configuration Summary:" + echo "=====================" + echo "MPI Mode: ${CONFIG_CACHE[MPI_MODE]}" + echo "Math Mode: ${CONFIG_CACHE[MATH_MODE]}" + echo "Target CPU: ${CONFIG_CACHE[TARGET_CPU]}" + echo "GPU Version: ${CONFIG_CACHE[GPUVER]}" + echo "Parallel Jobs: ${CONFIG_CACHE[NPROCS_OVERWRITE]:-$(get_nprocs)}" + echo "Dry Run: ${CONFIG_CACHE[dry_run]}" + echo "" + + echo "Package Configuration:" + echo "=====================" + for pkg in ${package_list}; do + local status="${CONFIG_CACHE[with_${pkg}]}" + if [[ "$status" != "__DONTUSE__" ]]; then + printf "%-15s: %s\n" "$pkg" "$status" + fi + done + echo "" +} + +# Parse command line arguments (New unified version) +# Usage: config_parse_arguments "$@" +config_parse_arguments() { + local show_help=false + local show_version=false + + while [[ $# -gt 0 ]]; do + case $1 in + # Help and version + -h|--help) + show_help=true + shift + ;; + --version) + show_version=true + shift + ;; + --version-info) + if [[ -n "$2" && "$2" != -* ]]; then + CONFIG_CACHE["show_version_info"]="$2" + shift 2 + else + CONFIG_CACHE["show_version_info"]="all" + shift + fi + ;; + + # Build options + -j) + if [[ -n "$2" && "$2" =~ ^[0-9]+$ ]]; then + CONFIG_CACHE["NPROCS_OVERWRITE"]="$2" + shift 2 + else + report_error $LINENO "-j requires a number argument" + return 1 + fi + ;; + --dry-run) + CONFIG_CACHE["dry_run"]="__TRUE__" + shift + ;; + --pack-run) + CONFIG_CACHE["PACK_RUN"]="__TRUE__" + shift + ;; + + # Package version selection - Support multiple package:version pairs + --package-version) + local package_version_args="" + local processed_count=0 + + # Handle --package-version=value format + if [[ "$1" =~ ^--package-version=(.+)$ ]]; then + package_version_args="${BASH_REMATCH[1]}" + shift + processed_count=1 + else + # Collect all consecutive non-option arguments + shift # Skip --package-version + while [[ $# -gt 0 && "$1" != -* ]]; do + if [[ -n "$package_version_args" ]]; then + package_version_args="$package_version_args $1" + else + package_version_args="$1" + fi + shift + ((processed_count++)) + done + fi + + # Validate we have at least one argument + if [[ -z "$package_version_args" ]]; then + report_error $LINENO "--package-version requires at least one package:version argument" + return 1 + fi + + # Process each package:version pair + local pair_count=0 + for pair in $package_version_args; do + if [[ "$pair" =~ ^([a-zA-Z0-9_]+):(main|alt)$ ]]; then + local pkg="${BASH_REMATCH[1]}" + local ver="${BASH_REMATCH[2]}" + CONFIG_CACHE["PACKAGE_VERSION_${pkg^^}"]="$ver" + ((pair_count++)) + else + report_error $LINENO "Invalid package version format: '$pair'. Use format 'package:version' (e.g., openmpi:alt, openblas:main)" + return 1 + fi + done + + # Report successful processing + if [[ $pair_count -gt 1 ]]; then + echo "INFO: Processed $pair_count package version overrides" + fi + ;; + + # Configuration file + --config-file) + if [[ -n "$2" && "$2" != -* ]]; then + config_load_from_file "$2" + shift 2 + else + report_error $LINENO "--config-file requires an argument" + return 1 + fi + ;; + + # Mode selections - Support both --mode=value and --mode value formats + --mpi-mode|--mpi-mode=*) + local mpi_value="" + # Handle --mpi-mode=value format + if [[ "$1" =~ ^--mpi-mode=(.+)$ ]]; then + mpi_value="${BASH_REMATCH[1]}" + shift + elif [[ -n "$2" && "$2" != -* ]]; then + mpi_value="$2" + shift 2 + else + report_error $LINENO "--mpi-mode requires an argument" + return 1 + fi + + case "$mpi_value" in + mpich|openmpi|intelmpi|no) + CONFIG_CACHE["MPI_MODE"]="$mpi_value" + ;; + *) + report_error $LINENO "Invalid MPI mode: $mpi_value. Valid options: mpich, openmpi, intelmpi, no" + return 1 + ;; + esac + ;; + --math-mode|--math-mode=*) + local math_value="" + # Handle --math-mode=value format + if [[ "$1" =~ ^--math-mode=(.+)$ ]]; then + math_value="${BASH_REMATCH[1]}" + shift + elif [[ -n "$2" && "$2" != -* ]]; then + math_value="$2" + shift 2 + else + report_error $LINENO "--math-mode requires an argument" + return 1 + fi + + case "$math_value" in + mkl|aocl|openblas|cray|no) + CONFIG_CACHE["MATH_MODE"]="$math_value" + # Apply automatic parameter settings for specific math modes + case "$math_value" in + aocl) + CONFIG_CACHE["with_aocl"]="__SYSTEM__" + CONFIG_CACHE["with_fftw"]="__SYSTEM__" + CONFIG_CACHE["with_scalapack"]="__SYSTEM__" + ;; + esac + ;; + *) + report_error $LINENO "Invalid math mode: $math_value. Valid options: mkl, aocl, openblas, cray, no" + return 1 + ;; + esac + ;; + + # Package options + --with-*) + local option="${1#--with-}" + local value="__INSTALL__" + + # Handle --with-package=value format + if [[ "$option" =~ ^(.+)=(.+)$ ]]; then + option="${BASH_REMATCH[1]}" + value="${BASH_REMATCH[2]}" + fi + + # Special handling for --with-mpich-device=* (must be handled before general mpich) + if [[ "$option" == "mpich-device" ]]; then + CONFIG_CACHE["MPICH_DEVICE"]="$value" + CONFIG_CACHE["MPI_MODE"]="mpich" + shift + continue + fi + + # Convert value to internal format (matching original read_with function) + case "$value" in + system) + value="__SYSTEM__" + ;; + install) + value="__INSTALL__" + ;; + no) + value="__DONTUSE__" + ;; + __SYSTEM__|__INSTALL__|__DONTUSE__) + # Already in internal format, keep as is + ;; + *) + # For custom paths, expand ~ to $HOME (matching original behavior) + value="${value//\~/$HOME}" + ;; + esac + + # Handle special cases with specific processing logic + case "$option" in + 4th-openmpi) + # Handle --with-4th-openmpi parameter (only yes/no options) + case "$value" in + "yes"|"install"|"__INSTALL__") + CONFIG_CACHE["OPENMPI_4TH"]="yes" + ;; + "no"|"__DONTUSE__") + CONFIG_CACHE["OPENMPI_4TH"]="no" + ;; + *) + # Default to "no" for any other values + CONFIG_CACHE["OPENMPI_4TH"]="no" + ;; + esac + ;; + mpich) + CONFIG_CACHE["with_mpich"]="$value" + USER_EXPLICIT_MPI["with_mpich"]="true" # Mark as explicitly set by user + # Set MPI_MODE if not disabled + if [ "$value" != "__DONTUSE__" ]; then + CONFIG_CACHE["MPI_MODE"]="mpich" + fi + ;; + openmpi) + CONFIG_CACHE["with_openmpi"]="$value" + USER_EXPLICIT_MPI["with_openmpi"]="true" # Mark as explicitly set by user + # Set MPI_MODE if not disabled + if [ "$value" != "__DONTUSE__" ]; then + CONFIG_CACHE["MPI_MODE"]="openmpi" + fi + ;; + intelmpi) + CONFIG_CACHE["with_intelmpi"]="$value" + USER_EXPLICIT_MPI["with_intelmpi"]="true" # Mark as explicitly set by user + # Set MPI_MODE if not disabled + if [ "$value" != "__DONTUSE__" ]; then + CONFIG_CACHE["MPI_MODE"]="intelmpi" + fi + ;; + intel-classic) + # Special handling for intel-classic: only accepts yes/no values + case "$value" in + "__INSTALL__"|""|"__DONTUSE__") + value="no" # Default to "no" + ;; + "yes") + value="yes" + ;; + "no") + value="no" + ;; + *) + report_error $LINENO "Invalid value '$value' for --with-intel-classic. Only 'yes' or 'no' are allowed." "CONFIG_ERROR" + return 1 + ;; + esac + CONFIG_CACHE["intel_classic"]="$value" + ;; + intel-mpi-clas*) + # Special handling for intel-mpi-classic: only accepts yes/no values + case "$value" in + "__INSTALL__"|""|"__DONTUSE__") + value="no" # Default to "no" + ;; + "yes") + value="yes" + ;; + "no") + value="no" + ;; + *) + report_error $LINENO "Invalid value '$value' for --with-intel-mpi-classic. Only 'yes' or 'no' are allowed." "CONFIG_ERROR" + return 1 + ;; + esac + CONFIG_CACHE["INTELMPI_CLASSIC"]="$value" + ;; + intel) + CONFIG_CACHE["with_intel"]="$value" + ;; + ifx) + # Special handling for ifx: only accepts yes/no values + case "$value" in + "__INSTALL__"|""|"__DONTUSE__") + value="no" # Default to "no" + ;; + "yes") + value="yes" + ;; + "no") + value="no" + ;; + *) + report_error $LINENO "Invalid value '$value' for --with-ifx. Only 'yes' or 'no' are allowed." "CONFIG_ERROR" + return 1 + ;; + esac + CONFIG_CACHE["WITH_IFX"]="$value" + ;; + amd) + CONFIG_CACHE["with_amd"]="$value" + ;; + flang) + # Special handling for flang: only accepts yes/no values + case "$value" in + "__INSTALL__"|""|"__DONTUSE__") + value="no" # Default to "no" + ;; + "yes") + value="yes" + ;; + "no") + value="no" + ;; + *) + report_error $LINENO "Invalid value '$value' for --with-flang. Only 'yes' or 'no' are allowed." "CONFIG_ERROR" + return 1 + ;; + esac + CONFIG_CACHE["WITH_FLANG"]="$value" + ;; + aocl) + CONFIG_CACHE["with_aocl"]="$value" + USER_EXPLICIT_MATH["with_aocl"]="true" # Mark as explicitly set by user + ;; + mkl) + CONFIG_CACHE["with_mkl"]="$value" + USER_EXPLICIT_MATH["with_mkl"]="true" # Mark as explicitly set by user + # Set MATH_MODE if not disabled + if [ "$value" != "__DONTUSE__" ]; then + CONFIG_CACHE["MATH_MODE"]="mkl" + fi + ;; + openblas) + CONFIG_CACHE["with_openblas"]="$value" + USER_EXPLICIT_MATH["with_openblas"]="true" # Mark as explicitly set by user + # Set MATH_MODE if not disabled + if [ "$value" != "__DONTUSE__" ]; then + CONFIG_CACHE["MATH_MODE"]="openblas" + fi + ;; + fftw) + CONFIG_CACHE["with_fftw"]="$value" + USER_EXPLICIT_MATH["with_fftw"]="true" # Mark as explicitly set by user + ;; + scalapack) + CONFIG_CACHE["with_scalapack"]="$value" + USER_EXPLICIT_MATH["with_scalapack"]="true" # Mark as explicitly set by user + ;; + *) + # Convert to standard format for all other options + option="${option,,}" # Convert to lowercase + CONFIG_CACHE["with_${option}"]="$value" + ;; + esac + shift + ;; + + # Enable options + --enable-*) + local option="${1#--enable-}" + local value="__TRUE__" + + # Handle --enable-feature=value format + if [[ "$option" =~ ^(.+)=(.+)$ ]]; then + option="${BASH_REMATCH[1]}" + value="${BASH_REMATCH[2]}" + case "$value" in + yes|true|1) value="__TRUE__" ;; + no|false|0) value="__FALSE__" ;; + *) + report_error $LINENO "Invalid value for --enable-${option}: $value. Use yes/no" + return 1 + ;; + esac + fi + + CONFIG_CACHE["enable_${option}"]="$value" + shift + ;; + + # GPU version + --gpu-ver|--gpu-ver=*) + local gpu_value="" + # Handle --gpu-ver=value format + if [[ "$1" =~ ^--gpu-ver=(.+)$ ]]; then + gpu_value="${BASH_REMATCH[1]}" + shift + elif [[ -n "$2" && "$2" != -* ]]; then + gpu_value="$2" + shift 2 + else + report_error $LINENO "--gpu-ver requires an argument" + return 1 + fi + CONFIG_CACHE["GPUVER"]="$gpu_value" + ;; + + # Target CPU + --target-cpu|--target-cpu=*) + local cpu_value="" + # Handle --target-cpu=value format + if [[ "$1" =~ ^--target-cpu=(.+)$ ]]; then + cpu_value="${BASH_REMATCH[1]}" + shift + elif [[ -n "$2" && "$2" != -* ]]; then + cpu_value="$2" + shift 2 + else + report_error $LINENO "--target-cpu requires an argument" + return 1 + fi + CONFIG_CACHE["TARGET_CPU"]="$cpu_value" + ;; + + # Log lines + --log-lines|--log-lines=*) + local log_value="" + # Handle --log-lines=value format + if [[ "$1" =~ ^--log-lines=(.+)$ ]]; then + log_value="${BASH_REMATCH[1]}" + shift + elif [[ -n "$2" && "$2" =~ ^[0-9]+$ ]]; then + log_value="$2" + shift 2 + else + report_error $LINENO "--log-lines requires a number argument" + return 1 + fi + + if [[ "$log_value" =~ ^[0-9]+$ ]]; then + CONFIG_CACHE["LOG_LINES"]="$log_value" + else + report_error $LINENO "--log-lines requires a number argument" + return 1 + fi + ;; + + # Skip system checks + --skip-system-checks) + CONFIG_CACHE["skip_system_checks"]="__TRUE__" + shift + ;; + + # Positional arguments (ignored for now) + *) + shift + ;; + esac + done + + # Handle help and version requests + if [[ "$show_help" == true ]]; then + CONFIG_CACHE["show_help"]="__TRUE__" + return 0 + fi + + if [[ "$show_version" == true ]]; then + CONFIG_CACHE["show_version"]="__TRUE__" + return 0 + fi + + return 0 +} + +# Initialize configuration with command line arguments +# Usage: config_init "$@" +config_init() { + # Set defaults first + config_set_defaults + + # Initialize version helper to ensure VERSION_STRATEGY defaults are set + if command -v version_helper_init > /dev/null 2>&1; then + version_helper_init + fi + + # Load configuration from file (if available) - this will override defaults + config_load_from_file + + # Apply mode-based configurations from file - this will override defaults + config_apply_modes_from_file + + # Parse command line arguments - this will override file settings + config_parse_arguments "$@" + + # Apply mode-based configurations from command line + config_apply_modes + + # Validate configuration + config_validate + + return 0 +} + +# Apply configuration based on modes +# Usage: config_apply_modes +config_apply_modes() { + # Apply MPI mode settings (with output for user feedback) + local mpi_mode="${CONFIG_CACHE[MPI_MODE]}" + if [[ -n "$mpi_mode" ]]; then + if command -v ui_info &> /dev/null; then + ui_info "⚙️ Configuring MPI mode: $mpi_mode" + else + echo "Applying MPI mode: $mpi_mode" + fi + case "$mpi_mode" in + mpich) + # Only override if user hasn't explicitly set these values via command line + [[ -z "${USER_EXPLICIT_MPI[with_mpich]}" ]] && CONFIG_CACHE["with_mpich"]="__INSTALL__" + [[ -z "${USER_EXPLICIT_MPI[with_openmpi]}" ]] && CONFIG_CACHE["with_openmpi"]="__DONTUSE__" + [[ -z "${USER_EXPLICIT_MPI[with_intelmpi]}" ]] && CONFIG_CACHE["with_intelmpi"]="__DONTUSE__" + ;; + openmpi) + [[ -z "${USER_EXPLICIT_MPI[with_mpich]}" ]] && CONFIG_CACHE["with_mpich"]="__DONTUSE__" + [[ -z "${USER_EXPLICIT_MPI[with_openmpi]}" ]] && CONFIG_CACHE["with_openmpi"]="__INSTALL__" + [[ -z "${USER_EXPLICIT_MPI[with_intelmpi]}" ]] && CONFIG_CACHE["with_intelmpi"]="__DONTUSE__" + ;; + intelmpi) + [[ -z "${USER_EXPLICIT_MPI[with_mpich]}" ]] && CONFIG_CACHE["with_mpich"]="__DONTUSE__" + [[ -z "${USER_EXPLICIT_MPI[with_openmpi]}" ]] && CONFIG_CACHE["with_openmpi"]="__DONTUSE__" + [[ -z "${USER_EXPLICIT_MPI[with_intelmpi]}" ]] && CONFIG_CACHE["with_intelmpi"]="__INSTALL__" + ;; + no) + [[ -z "${USER_EXPLICIT_MPI[with_mpich]}" ]] && CONFIG_CACHE["with_mpich"]="__DONTUSE__" + [[ -z "${USER_EXPLICIT_MPI[with_openmpi]}" ]] && CONFIG_CACHE["with_openmpi"]="__DONTUSE__" + [[ -z "${USER_EXPLICIT_MPI[with_intelmpi]}" ]] && CONFIG_CACHE["with_intelmpi"]="__DONTUSE__" + ;; + esac + fi + + # Apply math mode settings (with output for user feedback) + local math_mode="${CONFIG_CACHE[MATH_MODE]}" + if [[ -n "$math_mode" ]]; then + if command -v ui_info &> /dev/null; then + ui_info "🧮 Configuring Math mode: $math_mode" + else + echo "Applying Math mode: $math_mode" + fi + case "$math_mode" in + mkl) + [[ -z "${USER_EXPLICIT_MATH[with_mkl]}" ]] && CONFIG_CACHE["with_mkl"]="__SYSTEM__" + [[ -z "${USER_EXPLICIT_MATH[with_aocl]}" ]] && CONFIG_CACHE["with_aocl"]="__DONTUSE__" + [[ -z "${USER_EXPLICIT_MATH[with_openblas]}" ]] && CONFIG_CACHE["with_openblas"]="__DONTUSE__" + # MKL provides FFTW and ScaLAPACK, so disable them (original logic) + [[ -z "${USER_EXPLICIT_MATH[with_fftw]}" ]] && CONFIG_CACHE["with_fftw"]="__DONTUSE__" + [[ -z "${USER_EXPLICIT_MATH[with_scalapack]}" ]] && CONFIG_CACHE["with_scalapack"]="__DONTUSE__" + ;; + aocl) + [[ -z "${USER_EXPLICIT_MATH[with_mkl]}" ]] && CONFIG_CACHE["with_mkl"]="__DONTUSE__" + [[ -z "${USER_EXPLICIT_MATH[with_aocl]}" ]] && CONFIG_CACHE["with_aocl"]="__SYSTEM__" + [[ -z "${USER_EXPLICIT_MATH[with_openblas]}" ]] && CONFIG_CACHE["with_openblas"]="__DONTUSE__" + [[ -z "${USER_EXPLICIT_MATH[with_fftw]}" ]] && CONFIG_CACHE["with_fftw"]="__SYSTEM__" + [[ -z "${USER_EXPLICIT_MATH[with_scalapack]}" ]] && CONFIG_CACHE["with_scalapack"]="__SYSTEM__" + ;; + openblas) + [[ -z "${USER_EXPLICIT_MATH[with_mkl]}" ]] && CONFIG_CACHE["with_mkl"]="__DONTUSE__" + [[ -z "${USER_EXPLICIT_MATH[with_aocl]}" ]] && CONFIG_CACHE["with_aocl"]="__DONTUSE__" + [[ -z "${USER_EXPLICIT_MATH[with_openblas]}" ]] && CONFIG_CACHE["with_openblas"]="__INSTALL__" + ;; + cray) + [[ -z "${USER_EXPLICIT_MATH[with_mkl]}" ]] && CONFIG_CACHE["with_mkl"]="__DONTUSE__" + [[ -z "${USER_EXPLICIT_MATH[with_aocl]}" ]] && CONFIG_CACHE["with_aocl"]="__DONTUSE__" + [[ -z "${USER_EXPLICIT_MATH[with_openblas]}" ]] && CONFIG_CACHE["with_openblas"]="__DONTUSE__" + ;; + esac + fi +} \ No newline at end of file diff --git a/toolchain/scripts/lib/config_validator.sh b/toolchain/scripts/lib/config_validator.sh new file mode 100644 index 0000000000..648a6ffbe9 --- /dev/null +++ b/toolchain/scripts/lib/config_validator.sh @@ -0,0 +1,531 @@ +#!/bin/bash + +# ============================================================================ +# ABACUS Toolchain Configuration Validator +# ============================================================================ +# Validates configuration settings and detects potential conflicts +# Author: Quantum Misaka by Trae SOLO +# Date: 2025-10-16 +# ============================================================================ + +# Global validation state +VALIDATION_ERRORS=() +VALIDATION_WARNINGS=() +VALIDATION_ERROR_GROUPS=() +VALIDATION_WARNING_GROUPS=() +VALIDATION_INITIALIZED=false + +# Initialize configuration validator +# Usage: config_validator_init +config_validator_init() { + if [[ "$VALIDATION_INITIALIZED" == "true" ]]; then + return 0 + fi + + VALIDATION_ERRORS=() + VALIDATION_WARNINGS=() + VALIDATION_ERROR_GROUPS=() + VALIDATION_WARNING_GROUPS=() + VALIDATION_INITIALIZED=true + + return 0 +} + +# Add validation error +# Usage: add_validation_error "error message" +add_validation_error() { + local message="$1" + VALIDATION_ERRORS+=("ERROR: $message") +} + +# Add validation warning +# Usage: add_validation_warning "warning message" +add_validation_warning() { + local message="$1" + VALIDATION_WARNINGS+=("WARNING: $message") +} + +# Start a new error group (represents one logical error) +# Usage: start_error_group "group_name" +start_error_group() { + local group_name="$1" + VALIDATION_ERROR_GROUPS+=("$group_name") +} + +# Start a new warning group (represents one logical warning) +# Usage: start_warning_group "group_name" +start_warning_group() { + local group_name="$1" + VALIDATION_WARNING_GROUPS+=("$group_name") +} + +# Add validation error group (complete error with all details) +# Usage: add_validation_error_group "group_name" "line1" "line2" ... +add_validation_error_group() { + local group_name="$1" + shift + + # Add the group to track unique errors + VALIDATION_ERROR_GROUPS+=("$group_name") + + # Add all error lines + for line in "$@"; do + VALIDATION_ERRORS+=("ERROR: $line") + done +} + +# Add validation warning group (complete warning with all details) +# Usage: add_validation_warning_group "group_name" "line1" "line2" ... +add_validation_warning_group() { + local group_name="$1" + shift + + # Add the group to track unique warnings + VALIDATION_WARNING_GROUPS+=("$group_name") + + # Add all warning lines + for line in "$@"; do + VALIDATION_WARNINGS+=("WARNING: $line") + done +} + +# Add validation info (for successful validations) +# Usage: add_validation_info "info message" +add_validation_info() { + local message="$1" + # Info messages are displayed immediately during validation + echo "INFO: $message" +} + +# Check for conflicting math libraries +# Usage: validate_math_libraries +validate_math_libraries() { + local math_libs_enabled=0 + local enabled_libs=() + + # Check which math libraries are enabled + for lib in mkl aocl openblas; do + if [[ "${CONFIG_CACHE[with_${lib}]}" == "__INSTALL__" || "${CONFIG_CACHE[with_${lib}]}" == "__SYSTEM__" ]]; then + math_libs_enabled=$((math_libs_enabled + 1)) + enabled_libs+=("$lib") + fi + done + + # Validate math library configuration + if [[ $math_libs_enabled -gt 1 ]]; then + add_validation_error "Multiple math libraries enabled: ${enabled_libs[*]}. Only one should be active." + elif [[ $math_libs_enabled -eq 0 ]]; then + add_validation_warning "No math library enabled. This may cause compilation issues." + fi + + # Check MKL-specific conflicts + if [[ "${CONFIG_CACHE[with_mkl]}" == "__SYSTEM__" || "${CONFIG_CACHE[with_mkl]}" == "__INSTALL__" ]]; then + if [[ "${CONFIG_CACHE[with_fftw]}" == "__INSTALL__" ]]; then + add_validation_warning "MKL includes FFTW interface. Consider setting FFTW to __DONTUSE__ or __SYSTEM__." + fi + if [[ "${CONFIG_CACHE[with_scalapack]}" == "__INSTALL__" ]]; then + add_validation_warning "MKL includes ScaLAPACK. Consider setting ScaLAPACK to __DONTUSE__ or __SYSTEM__." + fi + fi +} + +# Check for conflicting MPI implementations +# Usage: validate_mpi_implementations +validate_mpi_implementations() { + local mpi_libs_enabled=0 + local enabled_mpis=() + + # Check which MPI implementations are enabled + for mpi in mpich openmpi intelmpi; do + if [[ "${CONFIG_CACHE[with_${mpi}]}" == "__INSTALL__" || "${CONFIG_CACHE[with_${mpi}]}" == "__SYSTEM__" ]]; then + mpi_libs_enabled=$((mpi_libs_enabled + 1)) + enabled_mpis+=("$mpi") + fi + done + + # Validate MPI configuration + if [[ $mpi_libs_enabled -gt 1 ]]; then + add_validation_error "Multiple MPI implementations enabled: ${enabled_mpis[*]}. Only one should be active." + elif [[ $mpi_libs_enabled -eq 0 ]]; then + add_validation_warning "No MPI implementation enabled. This may limit parallel functionality." + fi +} + +# Check for compiler consistency +# Usage: validate_compiler_consistency +validate_compiler_consistency() { + local compilers_enabled=0 + local enabled_compilers=() + + # Check which compilers are enabled + for compiler in gcc intel amd; do + if [[ "${CONFIG_CACHE[with_${compiler}]}" == "__INSTALL__" || "${CONFIG_CACHE[with_${compiler}]}" == "__SYSTEM__" ]]; then + compilers_enabled=$((compilers_enabled + 1)) + enabled_compilers+=("$compiler") + fi + done + + # Validate compiler configuration + if [[ $compilers_enabled -gt 1 ]]; then + add_validation_warning "Multiple compilers enabled: ${enabled_compilers[*]}. This may cause compatibility issues." + elif [[ $compilers_enabled -eq 0 ]]; then + add_validation_error "No compiler enabled. At least one compiler must be available." + fi + + # Check Intel-specific dependencies + if [[ "${CONFIG_CACHE[with_intel]}" == "__SYSTEM__" || "${CONFIG_CACHE[with_intel]}" == "__INSTALL__" ]]; then + if [[ "${CONFIG_CACHE[with_mkl]}" == "__DONTUSE__" ]]; then + add_validation_warning "Intel compiler is enabled but MKL is disabled. Consider enabling MKL for optimal performance." + fi + if [[ "${CONFIG_CACHE[with_intelmpi]}" == "__DONTUSE__" ]]; then + add_validation_warning "Intel compiler is enabled but Intel MPI is disabled. Consider using Intel MPI for better integration." + fi + fi +} + +# Check system requirements +# Usage: validate_system_requirements +validate_system_requirements() { + # ABACUS itself and some dependencies require cmake. + # Check cmake requirement based on configuration (mirrors original L768-772) + if [[ "${CONFIG_CACHE[with_cmake]}" == "__DONTUSE__" ]]; then + add_validation_error_group "cmake_required" \ + "CMake is required for ABACUS and some dependencies. Please enable it." \ + "" \ + "SOLUTION: Use '--with-cmake=install' to automatically install CMake:" \ + " ./install_abacus_toolchain_new.sh --with-cmake=install [other options]" + return + fi + + # Check for required system tools (excluding cmake which is handled above) + local required_tools=("make" "git" "wget" "tar" "gzip") + local missing_tools=() + + # Only check for system cmake if using system cmake + if [[ "${CONFIG_CACHE[with_cmake]}" == "__SYSTEM__" ]]; then + if ! command -v "cmake" &> /dev/null; then + missing_tools+=("cmake") + else + # Check cmake version if it exists + local cmake_min_version="3.16" + local cmake_version=$(cmake --version 2>/dev/null | head -n 1 | awk '{print $3}') + + if [[ -z "$cmake_version" ]]; then + add_validation_error "Failed to determine CMake version" + add_validation_error "This usually indicates a corrupted or non-standard CMake installation." + add_validation_error "" + add_validation_error "SOLUTION: Use '--with-cmake=install' to install a known-good CMake version:" + add_validation_error " ./install_abacus_toolchain_new.sh --with-cmake=install [other options]" + add_validation_error "" + add_validation_error "This will install CMake ${cmake_ver:-3.29.6} with proper version information." + return + fi + + # Extract major and minor version numbers for comparison + local cmake_major=$(echo "$cmake_version" | awk -F. '{print $1}') + local cmake_minor=$(echo "$cmake_version" | awk -F. '{print $2}') + local min_major=$(echo "$cmake_min_version" | awk -F. '{print $1}') + local min_minor=$(echo "$cmake_min_version" | awk -F. '{print $2}') + + # Validate version format + if ! [[ "$cmake_major" =~ ^[0-9]+$ ]] || ! [[ "$cmake_minor" =~ ^[0-9]+$ ]]; then + add_validation_error "Unable to parse CMake version from: $cmake_version" + add_validation_error "Expected format: X.Y.Z (e.g., 3.29.6), but got: $cmake_version" + add_validation_error "" + add_validation_error "SOLUTION: Use '--with-cmake=install' to install a standard CMake version:" + add_validation_error " ./install_abacus_toolchain_new.sh --with-cmake=install [other options]" + add_validation_error "" + add_validation_error "This will install CMake ${cmake_ver:-3.29.6} with standard version format." + return + fi + + # Compare versions (major.minor comparison) + local version_too_old=false + if [[ "$cmake_major" -lt "$min_major" ]]; then + version_too_old=true + elif [[ "$cmake_major" -eq "$min_major" ]] && [[ "$cmake_minor" -lt "$min_minor" ]]; then + version_too_old=true + fi + + if [[ "$version_too_old" == "true" ]]; then + add_validation_error "CMake version $cmake_version is too old" + add_validation_error "Minimum required: CMake $cmake_min_version or newer (ABACUS requirement)" + add_validation_error "" + add_validation_error_group "cmake_outdated" \ + "Your system CMake is outdated and may cause build failures." \ + "" \ + "SOLUTION: Use '--with-cmake=install' to install a modern CMake version:" \ + " ./install_abacus_toolchain_new.sh --with-cmake=install [other options]" \ + "" \ + "This will install CMake ${cmake_ver:-3.29.6} (>= $cmake_min_version) with full feature support." + return + fi + + # Success - add informational message + add_validation_info "System CMake validated: version $cmake_version (>= $cmake_min_version required)" + fi + fi + + for tool in "${required_tools[@]}"; do + if ! command -v "$tool" &> /dev/null; then + missing_tools+=("$tool") + fi + done + + if [[ ${#missing_tools[@]} -gt 0 ]]; then + # Check if cmake is in the missing tools and provide specific guidance + if [[ " ${missing_tools[*]} " =~ " cmake " ]]; then + add_validation_error_group "cmake_missing" \ + "CMake is not installed on your system" \ + "CMake is required for building ABACUS and its dependencies." \ + "" \ + "SOLUTION: Use '--with-cmake=install' to automatically install CMake:" \ + " ./install_abacus_toolchain_new.sh --with-cmake=install [other options]" \ + "" \ + "This will install CMake ${cmake_ver:-3.29.6} with full feature support." + + # Remove cmake from missing_tools to avoid duplicate error messages + local filtered_tools=() + for tool in "${missing_tools[@]}"; do + if [[ "$tool" != "cmake" ]]; then + filtered_tools+=("$tool") + fi + done + missing_tools=("${filtered_tools[@]}") + fi + + # Report other missing tools if any + if [[ ${#missing_tools[@]} -gt 0 ]]; then + add_validation_error "Missing required system tools: ${missing_tools[*]}" + fi + fi + + # Check for development packages (common names) + local dev_packages=("build-essential" "gcc" "g++" "gfortran") + local missing_dev=() + + for pkg in "${dev_packages[@]}"; do + if ! command -v "$pkg" &> /dev/null && ! dpkg -l | grep -q "$pkg" 2>/dev/null; then + missing_dev+=("$pkg") + fi + done + + if [[ ${#missing_dev[@]} -gt 0 ]]; then + add_validation_warning "Potentially missing development packages: ${missing_dev[*]}" + fi + + # Check GCC version consistency and minimum requirements + # This mirrors the logic from original install_abacus_toolchain.sh L636-667 + if [[ "${CONFIG_CACHE[with_gcc]}" != "__INSTALL__" ]]; then + local gcc_min_version=5 + + # Check if GCC tools are available + if ! command -v gcc &> /dev/null || ! command -v g++ &> /dev/null || ! command -v gfortran &> /dev/null; then + local missing_tools=() + ! command -v gcc &> /dev/null && missing_tools+=("gcc") + ! command -v g++ &> /dev/null && missing_tools+=("g++") + ! command -v gfortran &> /dev/null && missing_tools+=("gfortran") + + add_validation_error_group "gcc_incomplete" \ + "System GCC toolchain incomplete. Missing: ${missing_tools[*]}" \ + "" \ + "SOLUTION: Use '--with-gcc=install' to automatically download and install a complete GCC toolchain:" \ + " ./install_abacus_toolchain_new.sh --with-gcc=install [other options]" \ + "" \ + "This will install GCC ${gcc_ver:-13.2.0} with all required components (gcc, g++, gfortran)." + return + fi + + # Get versions of GCC components + local gcc_version=$(gcc --version 2>/dev/null | head -n 1 | awk '{print $NF}') + local gxx_version=$(g++ --version 2>/dev/null | head -n 1 | awk '{print $NF}') + local gfc_version=$(gfortran --version 2>/dev/null | head -n 1 | awk '{print $NF}') + + # Check if version extraction was successful + if [[ -z "$gcc_version" || -z "$gxx_version" || -z "$gfc_version" ]]; then + local failed_tools=() + [[ -z "$gcc_version" ]] && failed_tools+=("gcc") + [[ -z "$gxx_version" ]] && failed_tools+=("g++") + [[ -z "$gfc_version" ]] && failed_tools+=("gfortran") + + add_validation_error_group "gcc_version_failed" \ + "Failed to determine GCC toolchain versions for: ${failed_tools[*]}" \ + "This usually indicates corrupted or non-standard GCC installation." \ + "" \ + "SOLUTION: Use '--with-gcc=install' to install a known-good GCC version:" \ + " ./install_abacus_toolchain_new.sh --with-gcc=install [other options]" \ + "" \ + "This will install GCC ${gcc_ver:-13.2.0} with proper version information." + return + fi + + # Check version consistency + if [[ "$gcc_version" != "$gxx_version" ]] || [[ "$gcc_version" != "$gfc_version" ]]; then + add_validation_error_group "gcc_version_inconsistent" \ + "GCC toolchain versions are inconsistent:" \ + " gcc: $gcc_version" \ + " g++: $gxx_version" \ + " gfortran: $gfc_version" \ + "" \ + "All GCC components must have the same version for proper compilation." \ + "SOLUTION: Use '--with-gcc=install' to install a consistent GCC toolchain:" \ + " ./install_abacus_toolchain_new.sh --with-gcc=install [other options]" \ + "" \ + "This will install GCC ${gcc_ver:-13.2.0} with all components at the same version." + return + fi + + # Extract major version number + local gcc_major=$(echo "$gcc_version" | awk -F. '{print $1}') + + # Validate major version is numeric and meets minimum requirement + if ! [[ "$gcc_major" =~ ^[0-9]+$ ]]; then + add_validation_error_group "gcc_version_parse_failed" \ + "Unable to parse GCC major version from: $gcc_version" \ + "Expected format: X.Y.Z (e.g., 13.2.0), but got: $gcc_version" \ + "" \ + "SOLUTION: Use '--with-gcc=install' to install a standard GCC version:" \ + " ./install_abacus_toolchain_new.sh --with-gcc=install [other options]" \ + "" \ + "This will install GCC ${gcc_ver:-13.2.0} with standard version format." + return + fi + + if [[ "$gcc_major" -lt "$gcc_min_version" ]]; then + add_validation_error_group "gcc_version_too_old" \ + "GCC version $gcc_version is too old (major version: $gcc_major)" \ + "Minimum required: GCC $gcc_min_version.x or newer (ABACUS requirement)" \ + "" \ + "Your system GCC is outdated and may cause compilation failures." \ + "" \ + "SOLUTION: Use '--with-gcc=install' to install a modern GCC version:" \ + " ./install_abacus_toolchain_new.sh --with-gcc=install [other options]" \ + "" \ + "This will install GCC ${gcc_ver:-13.2.0} (>= $gcc_min_version.x) with full C++17/C++20 support." + return + fi + + # Success - add informational message + add_validation_info "System GCC toolchain validated: version $gcc_version (>= $gcc_min_version.x required)" + fi +} + +# Check for logical inconsistencies +# Usage: validate_logical_consistency +validate_logical_consistency() { + # Check if ELPA is enabled without ScaLAPACK + if [[ "${CONFIG_CACHE[with_elpa]}" == "__INSTALL__" || "${CONFIG_CACHE[with_elpa]}" == "__SYSTEM__" ]]; then + if [[ "${CONFIG_CACHE[with_scalapack]}" == "__DONTUSE__" ]]; then + # Check if MKL is enabled (MKL provides ScaLAPACK functionality) + if [[ "${CONFIG_CACHE[MATH_MODE]}" == "mkl" || "${CONFIG_CACHE[with_mkl]}" == "__SYSTEM__" || "${CONFIG_CACHE[with_mkl]}" == "__INSTALL__" ]]; then + # MKL provides ScaLAPACK, so this is acceptable + : + else + add_validation_error "ELPA requires ScaLAPACK but ScaLAPACK is disabled." + fi + fi + fi + + # Check if ScaLAPACK is enabled without MPI + if [[ "${CONFIG_CACHE[with_scalapack]}" == "__INSTALL__" || "${CONFIG_CACHE[with_scalapack]}" == "__SYSTEM__" ]]; then + local mpi_enabled=false + for mpi in mpich openmpi intelmpi; do + if [[ "${CONFIG_CACHE[with_${mpi}]}" == "__INSTALL__" || "${CONFIG_CACHE[with_${mpi}]}" == "__SYSTEM__" ]]; then + mpi_enabled=true + break + fi + done + + if [[ "$mpi_enabled" == "false" ]]; then + add_validation_warning "ScaLAPACK is enabled but no MPI implementation is active." + fi + fi + + # Check for GPU-related inconsistencies + if [[ "${CONFIG_CACHE[GPUVER]}" != "no" ]]; then + if [[ "${CONFIG_CACHE[with_elpa]}" == "__INSTALL__" ]]; then + add_validation_warning "GPU support is enabled. Ensure ELPA is compiled with GPU support." + fi + fi +} + +# Validate package versions compatibility +# Usage: validate_package_versions +validate_package_versions() { + # This is a placeholder for version compatibility checks + # In a real implementation, you would check for known incompatible version combinations + + # Example: Check for known problematic combinations + if [[ "${CONFIG_CACHE[with_gcc]}" == "__INSTALL__" ]]; then + local gcc_version="${gcc_ver:-unknown}" + if [[ "$gcc_version" == "unknown" ]]; then + add_validation_warning "GCC version not specified. Using default version." + fi + fi +} + +# Run all validation checks +# Usage: validate_configuration +validate_configuration() { + config_validator_init + + echo "Running configuration validation..." + + # Run all validation checks + validate_math_libraries + validate_mpi_implementations + validate_compiler_consistency + validate_system_requirements + validate_logical_consistency + validate_package_versions + + # Report results using error groups for accurate counting + local error_groups=${#VALIDATION_ERROR_GROUPS[@]} + local warning_groups=${#VALIDATION_WARNING_GROUPS[@]} + local total_issues=$((error_groups + warning_groups)) + + if [[ ${#VALIDATION_ERRORS[@]} -gt 0 ]]; then + echo "" + echo "Configuration Errors Found:" + echo "==========================" + for error in "${VALIDATION_ERRORS[@]}"; do + echo " $error" + done + fi + + if [[ ${#VALIDATION_WARNINGS[@]} -gt 0 ]]; then + echo "" + echo "Configuration Warnings:" + echo "======================" + for warning in "${VALIDATION_WARNINGS[@]}"; do + echo " $warning" + done + fi + + if [[ $total_issues -eq 0 ]]; then + echo "✓ Configuration validation passed with no issues." + return 0 + else + echo "" + echo "Configuration validation completed with $total_issues issue(s)." + echo " Errors: $error_groups" + echo " Warnings: $warning_groups" + + # Return error code if there are validation errors + if [[ $error_groups -gt 0 ]]; then + return 1 + else + return 0 + fi + fi +} + +# Check if validation should be skipped +# Usage: should_skip_validation +should_skip_validation() { + if [[ "${CONFIG_CACHE[SKIP_SYSTEM_CHECKS]}" == "true" ]]; then + echo "Skipping configuration validation (SKIP_SYSTEM_CHECKS=true)" + return 0 + fi + return 1 +} diff --git a/toolchain/scripts/lib/error_handler.sh b/toolchain/scripts/lib/error_handler.sh new file mode 100644 index 0000000000..322fb2a498 --- /dev/null +++ b/toolchain/scripts/lib/error_handler.sh @@ -0,0 +1,135 @@ +#!/bin/bash + +# ============================================================================ +# ABACUS Toolchain Error Handler +# ============================================================================ +# Provides error handling and reporting functions for the toolchain +# Author: Quantum Misaka by Trae SOLO +# Date: 2025-10-16 +# ============================================================================ + +# Global error handling state +ERROR_HANDLER_INITIALIZED=false + +# Initialize error handler +# Usage: error_handler_init +error_handler_init() { + if [[ "$ERROR_HANDLER_INITIALIZED" == "true" ]]; then + return 0 + fi + + # Set up error trapping + set -e + trap 'error_handler ${LINENO}' ERR + + ERROR_HANDLER_INITIALIZED=true + return 0 +} + +# Main error handler function +# Usage: error_handler line_number [error_code] +error_handler() { + local line_number="$1" + local error_code="${2:-$?}" + local script_name="${SCRIPT_NAME:-${BASH_SOURCE[1]}}" + + echo "ERROR: Script failed at line $line_number in $script_name (exit code: $error_code)" >&2 + echo "Command that failed: ${BASH_COMMAND}" >&2 + + # Print stack trace + echo "Call stack:" >&2 + local frame=0 + while caller $frame; do + ((frame++)) + done | while read line func file; do + echo " at $func ($file:$line)" >&2 + done + + exit $error_code +} + +# Report error with context +# Usage: report_error line_number "error message" [context] +report_error() { + local line_number="" + local message="" + local context="" + + if [[ $# -gt 1 ]]; then + line_number="$1" + message="$2" + context="${3:-}" + else + message="$1" + fi + + local location="" + if [[ -n "$line_number" ]]; then + location=", line $line_number" + fi + + echo "ERROR: (${SCRIPT_NAME:-$0}${location}) $message" >&2 + if [[ -n "$context" ]]; then + echo "Context: $context" >&2 + fi +} + +# Report warning with context +# Usage: report_warning line_number "warning message" [context] +report_warning() { + local line_number="" + local message="" + local context="" + + if [[ $# -gt 1 ]]; then + line_number="$1" + message="$2" + context="${3:-}" + else + message="$1" + fi + + local location="" + if [[ -n "$line_number" ]]; then + location=", line $line_number" + fi + + echo "WARNING: (${SCRIPT_NAME:-$0}${location}) $message" >&2 + if [[ -n "$context" ]]; then + echo "Context: $context" >&2 + fi +} + +# Enhanced error reporting with error codes +# Usage: report_error_enhanced error_code "error message" [context] [line_number] +report_error_enhanced() { + local error_code="$1" + local error_message="$2" + local context="${3:-}" + local line_number="${4:-}" + + local location="" + if [[ -n "$line_number" ]]; then + location=", line $line_number" + fi + + echo "ERROR [$error_code]: (${SCRIPT_NAME:-$0}${location}) $error_message" >&2 + if [[ -n "$context" ]]; then + echo "Context: $context" >&2 + fi + + return $error_code +} + +# Enhanced warning reporting with severity levels +# Usage: report_warning_enhanced severity "warning message" [context] +report_warning_enhanced() { + local severity="$1" + local warning_message="$2" + local context="${3:-}" + + echo "$severity: (${SCRIPT_NAME:-$0}) $warning_message" >&2 + if [[ -n "$context" ]]; then + echo "Context: $context" >&2 + fi +} \ No newline at end of file diff --git a/toolchain/scripts/lib/package_manager.sh b/toolchain/scripts/lib/package_manager.sh new file mode 100644 index 0000000000..94a7c0b307 --- /dev/null +++ b/toolchain/scripts/lib/package_manager.sh @@ -0,0 +1,469 @@ +#!/bin/bash + +# ============================================================================ +# ABACUS Toolchain Package Manager +# ============================================================================ +# Handles package downloading, building, and installation +# Author: Quantum Misaka by Trae SOLO +# Date: 2025-10-16 +# ============================================================================ + +# Global package manager variables +PACKAGE_MANAGER_INITIALIZED=false +declare -A PACKAGE_BUILD_STATUS +declare -A PACKAGE_DEPENDENCIES + +# Initialize package manager +# Usage: package_manager_init +package_manager_init() { + if [[ "$PACKAGE_MANAGER_INITIALIZED" == "true" ]]; then + return 0 + fi + + # Initialize dependencies + if ! command -v config_manager_init &> /dev/null; then + source "${SCRIPTDIR}/lib/config_manager.sh" + fi + + config_manager_init + + # Define package dependencies + package_manager_define_dependencies + + PACKAGE_MANAGER_INITIALIZED=true + return 0 +} + +# Define package dependencies +# Usage: package_manager_define_dependencies +package_manager_define_dependencies() { + # Stage 0: Compilers and Build Tools + PACKAGE_DEPENDENCIES["gcc"]="" + PACKAGE_DEPENDENCIES["intel"]="" + PACKAGE_DEPENDENCIES["amd"]="" + PACKAGE_DEPENDENCIES["cmake"]="" + + # Stage 1: MPI Implementations (depend on compilers) + PACKAGE_DEPENDENCIES["openmpi"]="gcc cmake" + PACKAGE_DEPENDENCIES["mpich"]="gcc cmake" + PACKAGE_DEPENDENCIES["intelmpi"]="intel" + + # Stage 2: Mathematical Libraries (depend on compilers and MPI) + PACKAGE_DEPENDENCIES["openblas"]="gcc cmake" + PACKAGE_DEPENDENCIES["mkl"]="intel" + PACKAGE_DEPENDENCIES["aocl"]="amd" + + # Stage 3: Scientific Computing Libraries (depend on math libs and MPI) + PACKAGE_DEPENDENCIES["fftw"]="gcc cmake" + PACKAGE_DEPENDENCIES["libxc"]="gcc cmake" + PACKAGE_DEPENDENCIES["scalapack"]="openblas" + PACKAGE_DEPENDENCIES["elpa"]="scalapack" + + # Stage 4: Advanced Libraries + PACKAGE_DEPENDENCIES["cereal"]="gcc cmake" + PACKAGE_DEPENDENCIES["rapidjson"]="gcc cmake" + PACKAGE_DEPENDENCIES["libtorch"]="gcc cmake" + PACKAGE_DEPENDENCIES["libnpy"]="gcc cmake" + PACKAGE_DEPENDENCIES["libri"]="gcc cmake" + PACKAGE_DEPENDENCIES["libcomm"]="gcc cmake" + PACKAGE_DEPENDENCIES["nep"]="gcc cmake" +} + +# Check if package is enabled for installation +# Usage: package_is_enabled "package_name" +package_is_enabled() { + local package="$1" + local status=$(config_get "with_${package}") + + case "$status" in + "__INSTALL__"|"__SYSTEM__") + return 0 + ;; + *) + return 1 + ;; + esac +} + +# Get package installation mode +# Usage: package_get_mode "package_name" +package_get_mode() { + local package="$1" + config_get "with_${package}" +} + + +# Mark package as built +# Usage: package_mark_built "package_name" +package_mark_built() { + local package="$1" + PACKAGE_BUILD_STATUS["$package"]="built" +} + +# Get package dependencies +# Usage: package_get_dependencies "package_name" +package_get_dependencies() { + local package="$1" + echo "${PACKAGE_DEPENDENCIES[$package]}" +} + +# Check if all dependencies are satisfied +# Usage: package_check_dependencies "package_name" +package_check_dependencies() { + local package="$1" + local deps=$(package_get_dependencies "$package") + + for dep in $deps; do + if package_is_enabled "$dep"; then + if ! package_is_built "$dep"; then + echo "Dependency $dep for $package is not built yet" + return 1 + fi + fi + done + + return 0 +} + +# Install package by stage +# Usage: package_install_stage "stage_number" +package_install_stage() { + local stage="$1" + local stage_script="${SCRIPTDIR}/stage${stage}/install_stage${stage}.sh" + + if [[ ! -f "$stage_script" ]]; then + report_error ${LINENO} "Stage script not found: $stage_script" + return 1 + fi + + echo "Installing Stage ${stage} packages..." + + # Check if dry run mode + if [[ "$(config_get dry_run)" == "__TRUE__" ]]; then + echo "Dry run: would execute $stage_script" + return 0 + fi + + # Export version configuration for stage scripts + package_export_version_config + + # Execute stage installation script + if ! "$stage_script"; then + report_error ${LINENO} "Failed to install Stage ${stage} packages" + return 1 + fi + + echo "Stage ${stage} installation completed successfully" + return 0 +} + +# Install all enabled packages +# Usage: package_install_all +package_install_all() { + echo "Starting package installation process..." + + # Check if pack run mode (only check and install required packages) + if [[ "$(config_get PACK_RUN)" == "__TRUE__" ]]; then + echo "Pack run mode: checking and installing required packages only" + package_check_system_requirements + return $? + fi + + # Install packages by stages + for stage in 0 1 2 3 4; do + if ! package_install_stage "$stage"; then + report_error ${LINENO} "Failed to install stage $stage" + return 1 + fi + done + + echo "All package installations completed successfully" + return 0 +} + +# Check system requirements +# Usage: package_check_system_requirements +package_check_system_requirements() { + echo "Checking system requirements..." + + # Check for essential system tools + local required_tools="wget curl tar gzip make" + local missing_tools="" + + for tool in $required_tools; do + if ! command -v "$tool" &> /dev/null; then + missing_tools="$missing_tools $tool" + fi + done + + if [[ -n "$missing_tools" ]]; then + report_error ${LINENO} "Missing required system tools:$missing_tools" + echo "Please install these tools using your system package manager" + return 1 + fi + + # Check for compiler availability + local compiler_mode=$(config_get MATH_MODE) + case "$compiler_mode" in + gcc) + if ! command -v gcc &> /dev/null; then + report_warning ${LINENO} "GCC compiler not found in system PATH" + fi + ;; + intel) + if ! command -v icc &> /dev/null && ! command -v icx &> /dev/null; then + report_warning ${LINENO} "Intel compiler not found in system PATH" + fi + ;; + amd) + if ! command -v clang &> /dev/null; then + report_warning ${LINENO} "AMD/Clang compiler not found in system PATH" + fi + ;; + esac + + echo "System requirements check completed" + return 0 +} + +# Generate package configuration file +# Usage: package_write_config "config_file" +package_write_config() { + local config_file="$1" + + echo "# ABACUS Toolchain Package Configuration" > "$config_file" + echo "# Generated on $(date)" >> "$config_file" + echo "" >> "$config_file" + + # Write package lists + echo "tool_list=\"${tool_list}\"" >> "$config_file" + echo "mpi_list=\"${mpi_list}\"" >> "$config_file" + echo "math_list=\"${math_list}\"" >> "$config_file" + echo "lib_list=\"${lib_list}\"" >> "$config_file" + echo "package_list=\"${package_list}\"" >> "$config_file" + echo "" >> "$config_file" + + # Write package configurations + for pkg in ${package_list}; do + local status=$(config_get "with_${pkg}") + echo "with_${pkg}=\"${status}\"" >> "$config_file" + done + + echo "" >> "$config_file" + echo "# Configuration modes" >> "$config_file" + echo "MPI_MODE=\"$(config_get MPI_MODE)\"" >> "$config_file" + echo "MATH_MODE=\"$(config_get MATH_MODE)\"" >> "$config_file" + echo "TARGET_CPU=\"$(config_get TARGET_CPU)\"" >> "$config_file" + echo "GPUVER=\"$(config_get GPUVER)\"" >> "$config_file" + + echo "Package configuration written to: $config_file" +} + +# Get list of packages to install +# Usage: package_list_to_install +package_list_to_install() { + local install_packages="" + + for pkg in ${package_list}; do + if [[ "$(config_get with_${pkg})" == "__INSTALL__" ]]; then + install_packages="$install_packages $pkg" + fi + done + + echo "$install_packages" +} + +# Get list of system packages +# Usage: package_get_system_list +package_get_system_list() { + local system_packages="" + + for pkg in ${package_list}; do + if [[ "$(config_get with_${pkg})" == "__SYSTEM__" ]]; then + system_packages="$system_packages $pkg" + fi + done + + echo "$system_packages" +} + +# Print package installation summary +# Usage: package_print_summary +package_print_summary() { + echo "Package Installation Summary:" + echo "============================" + echo "" + + local install_list=$(package_get_install_list) + local system_list=$(package_get_system_list) + + if [[ -n "$install_list" ]]; then + echo "Packages to be installed from source:" + for pkg in $install_list; do + echo " - $pkg" + done + echo "" + fi + + if [[ -n "$system_list" ]]; then + echo "Packages to be used from system:" + for pkg in $system_list; do + echo " - $pkg" + done + echo "" + fi + + echo "Installation modes:" + echo " MPI Mode: $(config_get MPI_MODE)" + echo " Math Mode: $(config_get MATH_MODE)" + echo " Target CPU: $(config_get TARGET_CPU)" + echo " GPU Version: $(config_get GPUVER)" + echo "" +} + +# Validate package configuration +# Usage: package_validate_config +package_validate_config() { + local errors=0 + + # Check for conflicting MPI implementations + local mpi_count=0 + for mpi in mpich openmpi intelmpi; do + if [[ "$(config_get with_${mpi})" != "__DONTUSE__" ]]; then + ((mpi_count++)) + fi + done + + if [[ $mpi_count -gt 1 ]]; then + report_error ${LINENO} "Multiple MPI implementations selected. Please choose only one." + ((errors++)) + fi + + # Check for conflicting math libraries + local math_count=0 + for math in mkl openblas aocl; do + if [[ "$(config_get with_${math})" != "__DONTUSE__" ]]; then + ((math_count++)) + fi + done + + if [[ $math_count -gt 1 ]]; then + report_warning ${LINENO} "Multiple math libraries selected. This may cause conflicts." + fi + + # Check for GPU support consistency + local gpu_ver=$(config_get GPUVER) + if [[ "$gpu_ver" != "no" ]]; then + if [[ "$(config_get enable_cuda)" != "__TRUE__" && "$(config_get enable_hip)" != "__TRUE__" ]]; then + report_warning ${LINENO} "GPU version specified but no GPU support enabled" + fi + fi + + return $errors +} + +# Clean build directories +# Usage: package_clean_build +package_clean_build() { + if [[ -d "$BUILDDIR" ]]; then + echo "Cleaning build directory: $BUILDDIR" + rm -rf "$BUILDDIR" + fi + mkdir -p "$BUILDDIR" +} + +# Clean install directories +# Usage: package_clean_install +package_clean_install() { + if [[ -d "$INSTALLDIR" ]]; then + echo "Cleaning install directory: $INSTALLDIR" + rm -rf "$INSTALLDIR" + fi + mkdir -p "$INSTALLDIR" +} + +# Install all packages in pack run mode +# Usage: package_install_all_pack_run +package_install_all_pack_run() { + echo "Pack run mode - installing all packages in sequence" + + # Execute all stages in sequence + for stage in 0 1 2 3 4; do + local stage_script="${SCRIPTDIR}/stage${stage}/install_stage${stage}.sh" + if [[ -f "$stage_script" ]]; then + echo "Executing stage $stage in pack run mode..." + if ! "$stage_script"; then + echo "Stage $stage failed in pack run mode" + return 1 + fi + fi + done + + return 0 +} + +# Export version configuration for stage scripts +# Usage: package_export_version_config +package_export_version_config() { + # Export version suffix configuration + local use_alt_versions=$(config_get use_alt_versions) + + if [[ "$use_alt_versions" == "__TRUE__" ]]; then + export ABACUS_TOOLCHAIN_VERSION_SUFFIX="alt" + else + export ABACUS_TOOLCHAIN_VERSION_SUFFIX="main" + fi + + # Build package versions string from CONFIG_CACHE PACKAGE_VERSION_* entries + local package_versions="" + for key in "${!CONFIG_CACHE[@]}"; do + if [[ "$key" =~ ^PACKAGE_VERSION_(.+)$ ]]; then + local pkg_name="${BASH_REMATCH[1]}" + local pkg_version="${CONFIG_CACHE[$key]}" + local pkg_lower=$(echo "$pkg_name" | tr '[:upper:]' '[:lower:]') + + if [[ -n "$package_versions" ]]; then + package_versions="${package_versions} ${pkg_lower}:${pkg_version}" + else + package_versions="${pkg_lower}:${pkg_version}" + fi + fi + done + + # Export individual package version overrides + if [[ -n "$package_versions" ]]; then + export ABACUS_TOOLCHAIN_PACKAGE_VERSIONS="$package_versions" + fi + + # Export for backward compatibility + export VERSION_SUFFIX="$ABACUS_TOOLCHAIN_VERSION_SUFFIX" +} + +# Execute stage-based installation (stage0 -> stage1 -> stage2 -> stage3 -> stage4) +# This follows the original toolchain logic exactly +package_install_all_stages() { + echo "Starting stage-based installation..." + + # Export version configuration before starting stages + package_export_version_config + + # Execute stages in order, just like the original fallback version + local stages=("stage0" "stage1" "stage2" "stage3" "stage4") + + for stage in "${stages[@]}"; do + local stage_script="${SCRIPTDIR}/${stage}/install_${stage}.sh" + + if [[ -f "$stage_script" ]]; then + echo "Executing ${stage}..." + if ! "$stage_script"; then + report_error ${LINENO} "Failed to execute ${stage}" + return 1 + fi + else + echo "Warning: Stage script not found: $stage_script" + fi + done + + echo "All stages completed successfully." + return 0 +} \ No newline at end of file diff --git a/toolchain/scripts/lib/user_interface.sh b/toolchain/scripts/lib/user_interface.sh new file mode 100644 index 0000000000..2c18d7bf3f --- /dev/null +++ b/toolchain/scripts/lib/user_interface.sh @@ -0,0 +1,1179 @@ +#!/bin/bash + +# ============================================================================ +# ABACUS Toolchain User Interface Module (Enhanced) +# ============================================================================ +# Provides beautiful and consistent user interaction, help messages, and progress display +# Author: Quantum Misaka by Trae SOLO +# Date: 2025-10-16 +# Enhanced: Beautiful terminal output with harmonious color scheme +# ============================================================================ + +# Global UI variables +UI_INITIALIZED=false +UI_VERBOSE=false +UI_QUIET=false +UI_LOG_FILE="" + +# Enhanced color definitions with harmonious blue-based theme +if [[ -t 1 ]]; then + # Terminal supports colors - Enhanced color palette + readonly UI_RED='\033[38;5;196m' # Bright red for errors + readonly UI_GREEN='\033[38;5;46m' # Bright green for success + readonly UI_YELLOW='\033[38;5;226m' # Bright yellow for warnings + readonly UI_BLUE='\033[38;5;39m' # Bright blue for info (main theme) + readonly UI_PURPLE='\033[38;5;141m' # Purple for debug + readonly UI_CYAN='\033[38;5;51m' # Cyan for progress + readonly UI_WHITE='\033[38;5;255m' # Pure white + readonly UI_GRAY='\033[38;5;244m' # Gray for secondary text + readonly UI_ORANGE='\033[38;5;208m' # Orange for highlights + + # Style definitions + readonly UI_BOLD='\033[1m' + readonly UI_DIM='\033[2m' + readonly UI_ITALIC='\033[3m' + readonly UI_UNDERLINE='\033[4m' + readonly UI_BLINK='\033[5m' + readonly UI_REVERSE='\033[7m' + readonly UI_NC='\033[0m' # No Color + + # Background colors for special effects + readonly UI_BG_RED='\033[48;5;196m' + readonly UI_BG_GREEN='\033[48;5;46m' + readonly UI_BG_BLUE='\033[48;5;39m' + readonly UI_BG_YELLOW='\033[48;5;226m' +else + # No color support - fallback to empty strings + readonly UI_RED='' + readonly UI_GREEN='' + readonly UI_YELLOW='' + readonly UI_BLUE='' + readonly UI_PURPLE='' + readonly UI_CYAN='' + readonly UI_WHITE='' + readonly UI_GRAY='' + readonly UI_ORANGE='' + readonly UI_BOLD='' + readonly UI_DIM='' + readonly UI_ITALIC='' + readonly UI_UNDERLINE='' + readonly UI_BLINK='' + readonly UI_REVERSE='' + readonly UI_NC='' + readonly UI_BG_RED='' + readonly UI_BG_GREEN='' + readonly UI_BG_BLUE='' + readonly UI_BG_YELLOW='' +fi + +# Terminal Unicode support detection +UI_UNICODE_SUPPORT="" + +# Detect terminal Unicode support capability +# Returns: "full", "basic", or "none" +ui_detect_unicode_support() { + # Check if already detected + if [[ -n "$UI_UNICODE_SUPPORT" ]]; then + echo "$UI_UNICODE_SUPPORT" + return 0 + fi + + # Manual override via environment variable + if [[ "${ABACUS_UI_SIMPLE:-}" == "1" ]] || [[ "${ABACUS_UI_ASCII:-}" == "1" ]]; then + UI_UNICODE_SUPPORT="none" + echo "none" + return 0 + fi + + # Force Unicode mode if explicitly requested + if [[ "${ABACUS_UI_UNICODE:-}" == "1" ]]; then + UI_UNICODE_SUPPORT="full" + echo "full" + return 0 + fi + + # Check if we're in a non-interactive environment + if [[ ! -t 1 ]]; then + UI_UNICODE_SUPPORT="none" + echo "none" + return 0 + fi + + # Check locale settings for UTF-8 support + local locale_utf8=false + + # First check environment variables + if [[ "${LC_ALL:-}" =~ [Uu][Tt][Ff]-?8 ]] || \ + [[ "${LC_CTYPE:-}" =~ [Uu][Tt][Ff]-?8 ]] || \ + [[ "${LANG:-}" =~ [Uu][Tt][Ff]-?8 ]]; then + locale_utf8=true + fi + + # Additional check using locale command if available + if [[ "$locale_utf8" == "false" ]] && command -v locale &>/dev/null; then + local charset=$(locale charmap 2>/dev/null || echo "") + if [[ "$charset" =~ UTF-?8 ]]; then + locale_utf8=true + fi + fi + + # Check terminal type and capabilities + local term_support="none" + case "${TERM:-}" in + xterm*|screen*|tmux*|rxvt*|gnome*|konsole*|alacritty*|kitty*|iterm*) + if [[ "$locale_utf8" == "true" ]]; then + term_support="full" + else + term_support="basic" + fi + ;; + linux|vt*) + # Linux console - basic Unicode support + if [[ "$locale_utf8" == "true" ]]; then + term_support="basic" + else + term_support="none" + fi + ;; + dumb|unknown) + term_support="none" + ;; + *) + # Unknown terminal - be conservative + if [[ "$locale_utf8" == "true" ]]; then + term_support="basic" + else + term_support="none" + fi + ;; + esac + + # Final validation - ensure we have both locale and terminal support + if [[ "$term_support" != "none" && "$locale_utf8" == "false" ]]; then + # Terminal claims support but locale doesn't - be conservative + term_support="none" + fi + + UI_UNICODE_SUPPORT="$term_support" + echo "$term_support" +} + +# Unicode symbols with ASCII fallbacks +# These will be set based on terminal capability +UI_ICON_SUCCESS="" +UI_ICON_ERROR="" +UI_ICON_WARNING="" +UI_ICON_INFO="" +UI_ICON_PROGRESS="" +UI_ICON_ROCKET="" +UI_ICON_GEAR="" +UI_ICON_PACKAGE="" +UI_ICON_DOWNLOAD="" +UI_ICON_BUILD="" +UI_ICON_INSTALL="" +UI_ICON_CHECK="" +UI_ICON_CROSS="" +UI_ICON_ARROW="" +UI_ICON_STAR="" + +# Progress bar characters +UI_PROGRESS_FULL="" +UI_PROGRESS_PARTIAL1="" +UI_PROGRESS_PARTIAL2="" +UI_PROGRESS_EMPTY="" + +# Initialize Unicode icons based on terminal capability +ui_init_icons() { + local support=$(ui_detect_unicode_support) + + case "$support" in + "full") + # Full Unicode support - use emoji and special symbols + readonly UI_ICON_SUCCESS="✅" + readonly UI_ICON_ERROR="❌" + readonly UI_ICON_WARNING="⚠️" + readonly UI_ICON_INFO="ℹ️" + readonly UI_ICON_PROGRESS="🔄" + readonly UI_ICON_ROCKET="🚀" + readonly UI_ICON_GEAR="⚙️" + readonly UI_ICON_PACKAGE="📦" + readonly UI_ICON_DOWNLOAD="⬇️" + readonly UI_ICON_BUILD="🔨" + readonly UI_ICON_INSTALL="📥" + readonly UI_ICON_CHECK="✓" + readonly UI_ICON_CROSS="✗" + readonly UI_ICON_ARROW="→" + readonly UI_ICON_STAR="⭐" + # Full Unicode progress bar + readonly UI_PROGRESS_FULL="█" + readonly UI_PROGRESS_PARTIAL1="▓" + readonly UI_PROGRESS_PARTIAL2="▒" + readonly UI_PROGRESS_EMPTY="░" + ;; + "basic") + # Basic Unicode support - use simple Unicode symbols + readonly UI_ICON_SUCCESS="✓" + readonly UI_ICON_ERROR="✗" + readonly UI_ICON_WARNING="!" + readonly UI_ICON_INFO="i" + readonly UI_ICON_PROGRESS="*" + readonly UI_ICON_ROCKET="^" + readonly UI_ICON_GEAR="*" + readonly UI_ICON_PACKAGE="+" + readonly UI_ICON_DOWNLOAD="v" + readonly UI_ICON_BUILD="#" + readonly UI_ICON_INSTALL="+" + readonly UI_ICON_CHECK="✓" + readonly UI_ICON_CROSS="✗" + readonly UI_ICON_ARROW="→" + readonly UI_ICON_STAR="*" + # Basic Unicode progress bar + readonly UI_PROGRESS_FULL="█" + readonly UI_PROGRESS_PARTIAL1="▓" + readonly UI_PROGRESS_PARTIAL2="▒" + readonly UI_PROGRESS_EMPTY="░" + ;; + *) + # ASCII fallback - maximum compatibility + readonly UI_ICON_SUCCESS="[OK]" + readonly UI_ICON_ERROR="[ERR]" + readonly UI_ICON_WARNING="[WARN]" + readonly UI_ICON_INFO="[INFO]" + readonly UI_ICON_PROGRESS="[*]" + readonly UI_ICON_ROCKET="[^]" + readonly UI_ICON_GEAR="[*]" + readonly UI_ICON_PACKAGE="[+]" + readonly UI_ICON_DOWNLOAD="[v]" + readonly UI_ICON_BUILD="[#]" + readonly UI_ICON_INSTALL="[+]" + readonly UI_ICON_CHECK="[+]" + readonly UI_ICON_CROSS="[-]" + readonly UI_ICON_ARROW="->" + readonly UI_ICON_STAR="[*]" + # ASCII progress bar + readonly UI_PROGRESS_FULL="#" + readonly UI_PROGRESS_PARTIAL1="#" + readonly UI_PROGRESS_PARTIAL2="-" + readonly UI_PROGRESS_EMPTY="." + ;; + esac +} + +# Initialize user interface +# Usage: ui_init [verbose] [quiet] [log_file] +ui_init() { + if [[ "$UI_INITIALIZED" == "true" ]]; then + return 0 + fi + + # Parse options + while [[ $# -gt 0 ]]; do + case "$1" in + verbose) + UI_VERBOSE=true + ;; + quiet) + UI_QUIET=true + ;; + --log-file=*) + UI_LOG_FILE="${1#*=}" + ;; + *) + # Assume it's a log file path + UI_LOG_FILE="$1" + ;; + esac + shift + done + + # Initialize icons based on terminal capability + ui_init_icons + + UI_INITIALIZED=true + return 0 +} + +# Print colored message with enhanced formatting +# Usage: ui_print_color "color" "message" [icon] +ui_print_color() { + local color="$1" + local message="$2" + local icon="${3:-}" + + if [[ "$UI_QUIET" == "true" ]]; then + return 0 + fi + + if [[ -n "$icon" ]]; then + echo -e "${color}${icon} ${message}${UI_NC}" + else + echo -e "${color}${message}${UI_NC}" + fi + + # Log to file if specified + if [[ -n "$UI_LOG_FILE" ]]; then + echo "[$(date '+%Y-%m-%d %H:%M:%S')] $message" >> "$UI_LOG_FILE" + fi +} + +# Print info message with enhanced styling +# Usage: ui_info "message" +ui_info() { + ui_print_color "${UI_BLUE}${UI_BOLD}" "$1" "$UI_ICON_INFO" +} + +# Print success message with enhanced styling +# Usage: ui_success "message" +ui_success() { + ui_print_color "${UI_GREEN}${UI_BOLD}" "$1" "$UI_ICON_SUCCESS" +} + +# Print warning message with enhanced styling +# Usage: ui_warning "message" +ui_warning() { + ui_print_color "${UI_YELLOW}${UI_BOLD}" "$1" "$UI_ICON_WARNING" +} + +# Print error message with enhanced styling +# Usage: ui_error "message" +ui_error() { + ui_print_color "${UI_RED}${UI_BOLD}" "$1" "$UI_ICON_ERROR" >&2 +} + +# Print debug message (only in verbose mode) with enhanced styling +# Usage: ui_debug "message" +ui_debug() { + if [[ "$UI_VERBOSE" == "true" ]]; then + ui_print_color "${UI_PURPLE}${UI_DIM}" "DEBUG: $1" "🔍" + fi +} + +# Detect glibc version using multiple methods for maximum compatibility +# Usage: ui_get_glibc_version +ui_get_glibc_version() { + local glibc_version="unknown" + + # Skip on non-Linux systems + if [[ "$(uname -s)" != "Linux" ]]; then + echo "unknown" + return 0 + fi + + # Method 1: ldd --version (most reliable) + if command -v ldd &> /dev/null; then + local ldd_output=$(ldd --version 2>/dev/null | head -n1) + if [[ $? -eq 0 && -n "$ldd_output" ]]; then + # Extract version from ldd output (e.g., "ldd (Ubuntu GLIBC 2.35-0ubuntu3.1) 2.35") + glibc_version=$(echo "$ldd_output" | grep -oE '[0-9]+\.[0-9]+(\.[0-9]+)?' | head -n1) + if [[ -n "$glibc_version" ]]; then + echo "$glibc_version" + return 0 + fi + fi + fi + + # Method 2: Direct library call (fallback) + local libc_paths=( + "/lib/x86_64-linux-gnu/libc.so.6" + "/lib64/libc.so.6" + "/lib/libc.so.6" + "/usr/lib/x86_64-linux-gnu/libc.so.6" + "/usr/lib64/libc.so.6" + ) + + for libc_path in "${libc_paths[@]}"; do + if [[ -x "$libc_path" ]]; then + local libc_output=$("$libc_path" 2>/dev/null | head -n1) + if [[ $? -eq 0 && -n "$libc_output" ]]; then + # Extract version from libc output + glibc_version=$(echo "$libc_output" | grep -oE '[0-9]+\.[0-9]+(\.[0-9]+)?' | head -n1) + if [[ -n "$glibc_version" ]]; then + echo "$glibc_version" + return 0 + fi + fi + fi + done + + # Method 3: getconf GNU_LIBC_VERSION (alternative) + if command -v getconf &> /dev/null; then + local getconf_output=$(getconf GNU_LIBC_VERSION 2>/dev/null) + if [[ $? -eq 0 && -n "$getconf_output" ]]; then + # Extract version from getconf output (e.g., "glibc 2.35") + glibc_version=$(echo "$getconf_output" | grep -oE '[0-9]+\.[0-9]+(\.[0-9]+)?' | head -n1) + if [[ -n "$glibc_version" ]]; then + echo "$glibc_version" + return 0 + fi + fi + fi + + # Method 4: Check /proc/version_signature or similar (last resort) + if [[ -r "/proc/version" ]]; then + local proc_version=$(cat /proc/version 2>/dev/null) + if [[ -n "$proc_version" ]]; then + # Look for glibc version in kernel version string (rare but possible) + glibc_version=$(echo "$proc_version" | grep -oE 'glibc[[:space:]]*[0-9]+\.[0-9]+(\.[0-9]+)?' | grep -oE '[0-9]+\.[0-9]+(\.[0-9]+)?' | head -n1) + if [[ -n "$glibc_version" ]]; then + echo "$glibc_version" + return 0 + fi + fi + fi + + # All methods failed - return unknown + echo "unknown" + return 0 +} + +# Read version from VERSION file +# Usage: ui_get_version +ui_get_version() { + local version_file + local version="Unknown" + + # Try to find VERSION file in multiple locations + if [[ -n "${SCRIPT_DIR:-}" && -f "${SCRIPT_DIR}/VERSION" ]]; then + version_file="${SCRIPT_DIR}/VERSION" + elif [[ -f "$(dirname "${BASH_SOURCE[0]}")/../VERSION" ]]; then + version_file="$(dirname "${BASH_SOURCE[0]}")/../VERSION" + elif [[ -f "./scripts/VERSION" ]]; then + version_file="./scripts/VERSION" + elif [[ -f "./VERSION" ]]; then + version_file="./VERSION" + fi + + if [[ -n "$version_file" && -f "$version_file" ]]; then + # Extract version from VERSION file, handling different formats + version=$(grep -E '^VERSION=' "$version_file" 2>/dev/null | cut -d'=' -f2 | tr -d '"' | tr -d "'" | xargs) + if [[ -z "$version" ]]; then + # Fallback: try to read the entire file content if no VERSION= line + version=$(head -n 1 "$version_file" 2>/dev/null | grep -v '^#' | xargs) + fi + if [[ -z "$version" ]]; then + version="Unknown" + fi + fi + + echo "$version" +} + +# Print beautiful welcome banner +# Usage: ui_welcome_banner +ui_welcome_banner() { + if [[ "$UI_QUIET" == "true" ]]; then + return 0 + fi + + local banner_width=80 + local title="ABACUS Toolchain Installation" + local subtitle="DFT Calculation Made Simple" + local version=$(ui_get_version) + local version_text="Version $version" + + echo "" + ui_print_color "${UI_CYAN}${UI_BOLD}" "$(printf '═%.0s' $(seq 1 $banner_width))" + echo "" + ui_print_color "${UI_BLUE}${UI_BOLD}" "$(printf '%*s' $(((banner_width + ${#title}) / 2)) "$title")" + ui_print_color "${UI_GRAY}${UI_ITALIC}" "$(printf '%*s' $(((banner_width + ${#subtitle}) / 2)) "$subtitle")" + ui_print_color "${UI_GRAY}${UI_DIM}" "$(printf '%*s' $(((banner_width + ${#version_text}) / 2)) "$version_text")" + echo "" + ui_print_color "${UI_CYAN}${UI_BOLD}" "$(printf '═%.0s' $(seq 1 $banner_width))" + echo "" +} + +# Print beautiful section header with enhanced styling +# Usage: ui_section "title" +ui_section() { + local title="$1" + local line_width=60 + + if [[ "$UI_QUIET" != "true" ]]; then + echo "" + ui_print_color "${UI_CYAN}${UI_BOLD}" "$(printf '─%.0s' $(seq 1 $line_width))" + ui_print_color "${UI_BLUE}${UI_BOLD}" "${UI_ICON_GEAR} $title" + ui_print_color "${UI_CYAN}${UI_BOLD}" "$(printf '─%.0s' $(seq 1 $line_width))" + echo "" + fi +} + +# Print enhanced progress bar with percentage and ETA +# Usage: ui_progress "current" "total" "description" [eta_seconds] +ui_progress() { + local current="$1" + local total="$2" + local description="$3" + local eta_seconds="${4:-}" + + if [[ "$UI_QUIET" == "true" ]]; then + return 0 + fi + + local percent=$((current * 100 / total)) + local filled=$((percent / 2)) + local empty=$((50 - filled)) + + # Create progress bar with gradient effect using detected characters + local progress_bar="" + for ((i=1; i<=filled; i++)); do + if [[ $i -le 10 ]]; then + progress_bar+="$UI_PROGRESS_FULL" + elif [[ $i -le 30 ]]; then + progress_bar+="$UI_PROGRESS_PARTIAL1" + else + progress_bar+="$UI_PROGRESS_PARTIAL2" + fi + done + + for ((i=1; i<=empty; i++)); do + progress_bar+="$UI_PROGRESS_EMPTY" + done + + # Format ETA if provided + local eta_text="" + if [[ -n "$eta_seconds" && "$eta_seconds" -gt 0 ]]; then + local eta_min=$((eta_seconds / 60)) + local eta_sec=$((eta_seconds % 60)) + eta_text=" (ETA: ${eta_min}m${eta_sec}s)" + fi + + printf "\r${UI_CYAN}${UI_ICON_PROGRESS} Progress: ${UI_BOLD}[${progress_bar}]${UI_NC} ${UI_GREEN}${percent}%%${UI_NC} - ${UI_BLUE}%s${UI_NC}${eta_text}" "$description" + + if [[ $current -eq $total ]]; then + echo "" + ui_success "Task completed successfully!" + fi +} + +# Show enhanced help message with beautiful formatting +# Usage: ui_show_help +ui_show_help() { + ui_welcome_banner + + cat << 'EOF' +USAGE: + install_abacus_toolchain_new.sh [OPTIONS] + +DESCRIPTION: + This script installs the ABACUS toolchain and its dependencies with a beautiful + and user-friendly interface. It supports various compilers, MPI implementations, + and mathematical libraries for density functional theory calculations. + +RECOMMENDED WORKFLOW: + 1. 🔍 Run with --help to see all available options + 2. 🧪 Use --dry-run to preview what will be installed + 3. 🚀 Run the actual installation + 4. ⚙️ Source the setup file before building ABACUS + +BASIC OPTIONS: + -h, --help Show this comprehensive help message + --version Show version information + --version-info [PACKAGE] Show version information for specific package or all + --dry-run Preview installation without executing (recommended first) + --pack-run Only download packages without building + +CONFIGURATION OPTIONS: + --config-file Load configuration from specified file + 🎯 Default: ./install_abacus_toolchain.conf + + --mpi-mode MPI implementation to use + 📋 Options: mpich, openmpi, intelmpi, no + 🎯 Default: mpich (auto-detect available) + + --math-mode Mathematical library to use + 📋 Options: mkl, aocl, openblas, cray, no + 🎯 Default: openblas + + --gpu-ver GPU version for ELPA (CUDA compute capability) + 📋 Options: Numeric (7.0, 7.5, 8.0, etc.) or (70, 75, 80, etc.) + 🎯 Default: no (CPU-only) + + --target-cpu Target CPU architecture for optimizations + 🎯 Default: native (auto-detect) + + --log-lines Number of log lines to show during compilation + 🎯 Default: 200 + +PACKAGE CONTROL OPTIONS: + --package-version Set package version strategy + 📋 Format: package:version (e.g., openmpi:alt, openblas:main) + 📋 Versions: main (latest stable), alt (alternative/legacy) + + --with-= Fine-tune package installation modes + 📋 Modes: install, system, no, + 📦 Build Tools: gcc, cmake + 📦 Compilers: intel, intel-classic, ifx, amd, flang + 📦 MPI Libraries: openmpi, mpich, intelmpi + 📦 Math Libraries: mkl, aocl, openblas, scalapack + 📦 Scientific: libxc, fftw, elpa + 📦 Advanced: cereal, rapidjson, libri, libcomm, libtorch, libnpy, nep + +ADVANCED OPTIONS: + --enable-[=yes/no] Enable specific advanced features + 📋 Features: tsan, cuda, hip, opencl, cray + 🎯 Default: no for all features + + --with-intel-classic[=yes/no] Use Intel Classic compiler (icc/ifort) + 🎯 Default: no (uses OneAPI icx/ifx) + + --with-intel-mpi-classic[=yes/no] Use Intel MPI Classic + 🎯 Default: no + + --with-ifx[=yes/no] Use Intel Fortran compiler (ifx) + 🎯 Default: yes (when Intel is enabled) + + --with-flang[=yes/no] Use AMD Flang Fortran compiler + 🎯 Default: no + + --with-4th-openmpi[=yes/no] Use OpenMPI 4th generation (v4.x) + 🎯 Default: no (uses v5.x) + + --with-mpich-device= MPICH device type + 📋 Options: ch3, ch4 + 🎯 Default: ch4 + + --skip-system-checks Skip system validation checks + +EXAMPLES: + # 🎯 Basic installation with OpenMPI and OpenBLAS + ./install_abacus_toolchain_new.sh --mpi-mode openmpi --math-mode openblas + + # 🧪 Preview installation with all packages + ./install_abacus_toolchain_new.sh --dry-run --mpi-mode mpich + + # 🏭 Intel compiler with MKL (high performance) + ./install_abacus_toolchain_new.sh --with-intel=install --math-mode mkl + + # 🎮 GPU-enabled installation for CUDA compute capability 8.0 + ./install_abacus_toolchain_new.sh --enable-cuda --gpu-ver 8.0 + + # 🔧 Custom configuration with specific package versions + ./install_abacus_toolchain_new.sh --package-version openmpi:alt --with-fftw=system + + # 📁 Load configuration from file + ./install_abacus_toolchain_new.sh --config-file my_config.conf --dry-run + + # 🚀 Use pre-configured toolchain scripts (recommended) + ./toolchain_gnu.sh # GNU toolchain (GCC + OpenMPI + OpenBLAS) + ./toolchain_intel.sh # Intel toolchain (Intel + MPI + MKL) + ./toolchain_gcc-aocl.sh # GCC + AMD AOCL + ./toolchain_aocc-aocl.sh # AMD AOCC + AOCL + +ENVIRONMENT VARIABLES: + NPROCS_OVERWRITE=N Override parallel compilation processes + DOWNLOAD_CERT_POLICY Certificate verification policy (strict/smart/skip) + 🎯 Default: smart (try secure, fallback if needed) + +NOTES: + 📁 Build and install directories can be safely deleted after installation + 🔧 Source the setup file (install/setup) before building ABACUS + 🧪 Always use --dry-run first to preview changes + 📋 Check log files in build/PKG_NAME/make.log for compilation errors + 💡 For detailed information, see the documentation in README.md + 🎛️ Configuration files allow saving and reusing complex setups + 🚀 Use toolchain_*.sh scripts for easier pre-configured installations + +EOF + + ui_print_color "${UI_ORANGE}${UI_BOLD}" "${UI_ICON_STAR} For the best experience, start with: ${UI_WHITE}./install_abacus_toolchain_new.sh --dry-run${UI_NC}" + echo "" +} + +# Show enhanced package installation summary with beautiful table formatting +# Usage: ui_show_summary +ui_show_summary() { + ui_section "Installation Configuration Summary" + + # System information box + ui_print_color "${UI_BLUE}${UI_BOLD}" "🖥️ System Information:" + echo " ├─ OS: $(uname -s) $(uname -m)" + echo " ├─ Kernel: $(uname -r)" + echo " ├─ glibc: $(ui_get_glibc_version)" + echo " ├─ CPU Cores: $(nproc 2>/dev/null || echo "unknown")" + # CPU model detection + local cpu_model="unknown" + if command -v lscpu &> /dev/null; then + cpu_model=$(LC_ALL=C lscpu | awk -F: '/^Model name/{print $2}' | sed 's/^[[:space:]]*//') + fi + if [[ -z "$cpu_model" || "$cpu_model" == "unknown" ]] && [[ -r /proc/cpuinfo ]]; then + cpu_model=$(awk -F: '/model name|Hardware|Processor/{print $2; exit}' /proc/cpuinfo | sed 's/^[[:space:]]*//') + fi + echo " ├─ CPU Model: ${cpu_model}" + if command -v free &> /dev/null; then + local mem_gb=$(free -g | awk '/^Mem:/ {print $2}') + echo " ├─ Memory: ${mem_gb}GB" + else + echo " ├─ Memory: unknown" + fi + + # GPU detection with comprehensive vendor support + local gpu_info="no GPU detected" + local gpu_count=0 + local gpu_models="" + + # Method 1: Try nvidia-smi for NVIDIA GPUs + if command -v nvidia-smi &> /dev/null; then + local nvidia_output=$(nvidia-smi --query-gpu=name --format=csv,noheader,nounits 2>/dev/null) + if [[ $? -eq 0 && -n "$nvidia_output" ]]; then + gpu_count=$(echo "$nvidia_output" | wc -l) + if [[ $gpu_count -gt 0 ]]; then + local first_gpu=$(echo "$nvidia_output" | head -n1 | sed 's/^[[:space:]]*//;s/[[:space:]]*$//') + if [[ $gpu_count -eq 1 ]]; then + gpu_info="$first_gpu" + else + gpu_info="$first_gpu (${gpu_count} devices)" + fi + fi + fi + fi + + # Method 2: Try rocm-smi for AMD GPUs (if no NVIDIA found) + if [[ "$gpu_info" == "no GPU detected" ]] && command -v rocm-smi &> /dev/null; then + local amd_output=$(rocm-smi --showproductname 2>/dev/null | grep -E "GPU\[" | head -n1) + if [[ $? -eq 0 && -n "$amd_output" ]]; then + local amd_name=$(echo "$amd_output" | sed -n 's/.*: \(.*\)/\1/p' | sed 's/^[[:space:]]*//;s/[[:space:]]*$//') + if [[ -n "$amd_name" ]]; then + local amd_count=$(rocm-smi --showproductname 2>/dev/null | grep -c "GPU\[" || echo "1") + if [[ $amd_count -eq 1 ]]; then + gpu_info="$amd_name" + else + gpu_info="$amd_name (${amd_count} devices)" + fi + fi + fi + fi + + # Method 3: Try lspci as fallback for any GPU vendor + if [[ "$gpu_info" == "no GPU detected" ]] && command -v lspci &> /dev/null; then + local pci_gpus=$(lspci 2>/dev/null | grep -i "vga\|3d\|display" | grep -v "audio") + if [[ -n "$pci_gpus" ]]; then + gpu_count=$(echo "$pci_gpus" | wc -l) + local first_gpu_line=$(echo "$pci_gpus" | head -n1) + + # Extract GPU name from lspci output + local gpu_name="" + if echo "$first_gpu_line" | grep -qi "nvidia"; then + gpu_name=$(echo "$first_gpu_line" | sed -n 's/.*NVIDIA Corporation \(.*\) (rev.*/\1/p' | sed 's/\[.*\]//g' | sed 's/^[[:space:]]*//;s/[[:space:]]*$//') + [[ -z "$gpu_name" ]] && gpu_name=$(echo "$first_gpu_line" | sed -n 's/.*NVIDIA \(.*\)/\1/p' | sed 's/^[[:space:]]*//;s/[[:space:]]*$//') + [[ -z "$gpu_name" ]] && gpu_name="NVIDIA GPU" + elif echo "$first_gpu_line" | grep -qi "amd\|ati\|radeon"; then + gpu_name=$(echo "$first_gpu_line" | sed -n 's/.*Advanced Micro Devices.*\[\(.*\)\].*/\1/p' | sed 's/^[[:space:]]*//;s/[[:space:]]*$//') + [[ -z "$gpu_name" ]] && gpu_name=$(echo "$first_gpu_line" | sed -n 's/.*AMD\/ATI \(.*\)/\1/p' | sed 's/^[[:space:]]*//;s/[[:space:]]*$//') + [[ -z "$gpu_name" ]] && gpu_name="AMD GPU" + elif echo "$first_gpu_line" | grep -qi "intel"; then + gpu_name=$(echo "$first_gpu_line" | sed -n 's/.*Intel Corporation \(.*\) (rev.*/\1/p' | sed 's/^[[:space:]]*//;s/[[:space:]]*$//') + [[ -z "$gpu_name" ]] && gpu_name="Intel GPU" + else + gpu_name="Unknown GPU" + fi + + if [[ -n "$gpu_name" && "$gpu_name" != "Unknown GPU" ]]; then + if [[ $gpu_count -eq 1 ]]; then + gpu_info="$gpu_name" + else + gpu_info="$gpu_name (${gpu_count} devices)" + fi + fi + fi + fi + + echo " └─ GPU: $gpu_info" + echo "" + + # Configuration box with aligned formatting + ui_print_color "${UI_BLUE}${UI_BOLD}" "⚙️ Build Configuration:" + printf " ├─ %-15s %s\n" "MPI Mode:" "$(config_get MPI_MODE)" + printf " ├─ %-15s %s\n" "Math Mode:" "$(config_get MATH_MODE)" + printf " ├─ %-15s %s\n" "Target CPU:" "$(config_get TARGET_CPU)" + printf " ├─ %-15s %s\n" "GPU Version:" "$(config_get GPUVER)" + printf " └─ %-15s %s\n" "Parallel Jobs:" "$(config_get NPROCS_OVERWRITE)" + + # Special modes + if [[ "$(config_get dry_run)" == "__TRUE__" ]]; then + ui_print_color "${UI_YELLOW}${UI_BOLD}" " 🧪 Dry Run Mode: Preview only (no actual installation)" + fi + if [[ "$(config_get PACK_RUN)" == "__TRUE__" ]]; then + ui_print_color "${UI_YELLOW}${UI_BOLD}" " 📦 Pack Run Mode: System packages only" + fi + echo "" + + # Package configuration table + ui_print_color "${UI_BLUE}${UI_BOLD}" "📦 Package Configuration:" + local has_packages=false + for pkg in ${package_list}; do + local status=$(config_get "with_${pkg}") + if [[ "$status" != "__DONTUSE__" ]]; then + has_packages=true + # Convert status for display + local display_status="$status" + local status_icon="" + case "$status" in + "__INSTALL__") + display_status="${UI_GREEN}install${UI_NC}" + status_icon="📥" + ;; + "__SYSTEM__") + display_status="${UI_BLUE}system${UI_NC}" + status_icon="🔗" + ;; + "__DONTUSE__") + display_status="${UI_GRAY}disabled${UI_NC}" + status_icon="❌" + ;; + *) + display_status="${UI_ORANGE}${status}${UI_NC}" + status_icon="📁" + ;; + esac + printf " ├─ %s %-12s %b %b\n" "$status_icon" "$pkg:" "$UI_ARROW" "$display_status" + fi + done + + if [[ "$has_packages" == "false" ]]; then + ui_print_color "${UI_GRAY}" " └─ No packages configured" + else + echo " └─ Configuration complete" + fi + echo "" + + # Installation summary + local install_list=$(package_list_to_install 2>/dev/null || echo "") + if [[ -n "$install_list" ]]; then + ui_print_color "${UI_GREEN}${UI_BOLD}" "🚀 Packages to be built from source:" + for pkg in $install_list; do + ui_print_color "${UI_GREEN}" " ${UI_ICON_BUILD} $pkg" + done + echo "" + fi + + # System packages + local system_packages="" + for pkg in ${package_list}; do + if [[ "$(config_get with_${pkg})" == "__SYSTEM__" ]]; then + system_packages="$system_packages $pkg" + fi + done + + if [[ -n "$system_packages" ]]; then + ui_print_color "${UI_BLUE}${UI_BOLD}" "🔗 System packages to be used:" + for pkg in $system_packages; do + ui_print_color "${UI_BLUE}" " ${UI_ICON_CHECK} $pkg" + done + echo "" + fi +} + +# Confirm installation with user +# Usage: ui_confirm_installation +ui_confirm_installation() { + # Skip confirmation in dry-run mode + if [[ "$(config_get dry_run)" == "__TRUE__" ]]; then + ui_info "Dry run mode - no actual installation will be performed" + return 0 + fi + + # Skip confirmation in quiet mode + if [[ "$UI_QUIET" == "true" ]]; then + return 0 + fi + + # Simple confirmation prompt + echo "" + echo -n "Proceed with installation? [y/N]: " + read -r response + + case "$response" in + [yY]|[yY][eE][sS]) + return 0 + ;; + *) + ui_info "Installation cancelled" + return 1 + ;; + esac +} + +# Show installation progress for a stage with enhanced styling +# Usage: ui_stage_progress "stage_number" "stage_name" +ui_stage_progress() { + local stage="$1" + local name="$2" + + ui_section "Stage $stage: $name" + ui_print_color "${UI_CYAN}${UI_BOLD}" "${UI_ICON_ROCKET} Installing packages for stage $stage..." +} + +# Show package build progress with enhanced visual feedback +# Usage: ui_package_progress "package_name" "action" +ui_package_progress() { + local package="$1" + local action="$2" + + case "$action" in + start) + ui_print_color "${UI_BLUE}${UI_BOLD}" "${UI_ICON_BUILD} Building $package..." + ;; + download) + ui_debug "${UI_ICON_DOWNLOAD} Downloading $package..." + ;; + extract) + ui_debug "${UI_ICON_PACKAGE} Extracting $package..." + ;; + configure) + ui_debug "${UI_ICON_GEAR} Configuring $package..." + ;; + compile) + ui_debug "${UI_ICON_BUILD} Compiling $package..." + ;; + install) + ui_debug "${UI_ICON_INSTALL} Installing $package..." + ;; + success) + ui_success "Successfully built $package" + ;; + skip) + ui_print_color "${UI_GRAY}${UI_BOLD}" "${UI_ICON_INFO} Skipping $package (already built or disabled)" + ;; + error) + ui_error "Failed to build $package" + ;; + esac +} + +# Show enhanced final installation results +# Usage: ui_show_results "success_count" "total_count" "failed_packages" +ui_show_results() { + local success_count="$1" + local total_count="$2" + local failed_packages="$3" + + ui_section "Installation Results" + + if [[ $success_count -eq $total_count ]]; then + ui_success "All packages installed successfully! ($success_count/$total_count)" + echo "" + ui_print_color "${UI_GREEN}${UI_BOLD}" "${UI_ICON_ROCKET} Ready to use ABACUS toolchain!" + echo "" + ui_print_color "${UI_BLUE}${UI_BOLD}" "🔧 To activate the toolchain environment:" + ui_print_color "${UI_WHITE}" " source ${SETUPFILE:-setup}" + ui_print_color "${UI_GRAY}" " # or alternatively:" + ui_print_color "${UI_WHITE}" " source ${INSTALLDIR:-install}/abacus_env.sh" + echo "" + ui_print_color "${UI_BLUE}${UI_BOLD}" "🚀 Build ABACUS with:" + ui_print_color "${UI_WHITE}" " ./build_abacus_gnu.sh # GNU toolchain" + ui_print_color "${UI_WHITE}" " ./build_abacus_intel.sh # Intel toolchain" + ui_print_color "${UI_WHITE}" " ./build_abacus_gcc-aocl.sh # AMD GCC+AOCL" + ui_print_color "${UI_WHITE}" " ./build_abacus_aocc-aocl.sh # AMD AOCC+AOCL" + else + local failed_count=$((total_count - success_count)) + ui_error "Installation completed with errors ($success_count/$total_count successful)" + echo "" + if [[ -n "$failed_packages" ]]; then + ui_print_color "${UI_RED}${UI_BOLD}" "❌ Failed packages:" + for pkg in $failed_packages; do + ui_print_color "${UI_RED}" " ${UI_ICON_CROSS} $pkg" + done + fi + echo "" + ui_print_color "${UI_YELLOW}${UI_BOLD}" "🔍 Troubleshooting tips:" + ui_print_color "${UI_YELLOW}" " • Check log files for detailed error information" + ui_print_color "${UI_YELLOW}" " • Install missing system dependencies" + ui_print_color "${UI_YELLOW}" " • Verify network connectivity for downloads" + ui_print_color "${UI_YELLOW}" " • Try with --install-all for problematic packages" + fi +} + +# Show enhanced environment setup instructions +# Usage: ui_show_env_setup +ui_show_env_setup() { + ui_section "Environment Setup Instructions" + + ui_print_color "${UI_BLUE}${UI_BOLD}" "🔧 To use the installed ABACUS toolchain:" + echo "" + ui_print_color "${UI_GREEN}${UI_BOLD}" " source ${SETUPFILE:-setup}" + ui_print_color "${UI_GRAY}" " # or" + ui_print_color "${UI_GREEN}${UI_BOLD}" " source ${INSTALLDIR:-install}/abacus_env.sh" + echo "" + ui_print_color "${UI_BLUE}${UI_BOLD}" "🚀 Then build ABACUS with:" + ui_print_color "${UI_GREEN}${UI_BOLD}" " make -j\$(nproc)" + echo "" + ui_warning "The environment setup needs to be done in each new shell session" +} + +# Handle user interruption with graceful cleanup +# Usage: ui_handle_interrupt +ui_handle_interrupt() { + echo "" + ui_warning "Installation interrupted by user (Ctrl+C)" + ui_print_color "${UI_BLUE}${UI_BOLD}" "${UI_ICON_GEAR} Cleaning up temporary files..." + + # Clean up any temporary files or processes + if [[ -n "$BUILDDIR" && -d "$BUILDDIR" ]]; then + ui_debug "Cleaning build directory: $BUILDDIR" + # Don't remove the entire build directory, just mark as interrupted + touch "$BUILDDIR/.interrupted" + fi + + ui_print_color "${UI_YELLOW}${UI_BOLD}" "${UI_ICON_INFO} Installation cancelled - you can resume later" + exit 130 +} + +# Set up signal handlers +# Usage: ui_setup_signals +ui_setup_signals() { + trap ui_handle_interrupt SIGINT SIGTERM +} + +# Enhanced input validation with helpful error messages +# Usage: ui_validate_input "input" "type" +ui_validate_input() { + local input="$1" + local type="$2" + + case "$type" in + number) + if [[ ! "$input" =~ ^[0-9]+$ ]]; then + ui_error "Invalid number: $input" + ui_info "Please provide a positive integer" + return 1 + fi + ;; + path) + if [[ ! -d "$input" ]]; then + ui_error "Directory does not exist: $input" + ui_info "Please provide a valid directory path" + return 1 + fi + ;; + file) + if [[ ! -f "$input" ]]; then + ui_error "File does not exist: $input" + ui_info "Please provide a valid file path" + return 1 + fi + ;; + mpi_mode) + case "$input" in + mpich|openmpi|intelmpi|no) + return 0 + ;; + *) + ui_error "Invalid MPI mode: $input" + ui_print_color "${UI_BLUE}${UI_BOLD}" "📋 Valid options:" + ui_print_color "${UI_GREEN}" " • mpich - MPICH implementation (recommended)" + ui_print_color "${UI_GREEN}" " • openmpi - Open MPI implementation" + ui_print_color "${UI_GREEN}" " • intelmpi - Intel MPI (requires Intel compiler)" + ui_print_color "${UI_GREEN}" " • no - Disable MPI support" + return 1 + ;; + esac + ;; + math_mode) + case "$input" in + cray|mkl|openblas|aocl) + return 0 + ;; + *) + ui_error "Invalid math mode: $input" + ui_print_color "${UI_BLUE}${UI_BOLD}" "📋 Valid options:" + ui_print_color "${UI_GREEN}" " • openblas - OpenBLAS (open source, recommended)" + ui_print_color "${UI_GREEN}" " • mkl - Intel Math Kernel Library (high performance)" + ui_print_color "${UI_GREEN}" " • aocl - AMD Optimizing CPU Libraries" + ui_print_color "${UI_GREEN}" " • cray - Cray LibSci (for Cray systems)" + return 1 + ;; + esac + ;; + gpu_version) + # Support only numeric formats for GPU versions + if [[ "$input" == "no" ]]; then + return 0 + fi + + # Check if it's a valid numeric format (like 8.0, 70, 80, etc.) + local arch_num="${input//.}" + if [[ "$arch_num" =~ ^[1-9][0-9]*$ ]]; then + return 0 + fi + + # Invalid format - show enhanced error message + ui_error "Invalid GPU version: $input" + ui_print_color "${UI_BLUE}${UI_BOLD}" "📋 Valid formats:" + ui_print_color "${UI_GREEN}" " • Decimal format: 6.0, 7.0, 8.0, 8.9, etc. (CUDA compute capability)" + ui_print_color "${UI_GREEN}" " • Integer format: 60, 70, 80, 89, etc." + ui_print_color "${UI_GREEN}" " • Disable GPU: no" + ui_print_color "${UI_ORANGE}${UI_BOLD}" "💡 Examples:" + ui_print_color "${UI_WHITE}" " • 8.0 or 80 for compute capability 8.0 (RTX 30xx series)" + ui_print_color "${UI_WHITE}" " • 7.5 or 75 for compute capability 7.5 (RTX 20xx series)" + return 1 + ;; + *) + ui_error "Unknown validation type: $type" + return 1 + ;; + esac + + return 0 +} + +# Enhanced system information display +# Usage: ui_show_system_info +ui_show_system_info() { + ui_section "System Information" + + ui_print_color "${UI_BLUE}${UI_BOLD}" "🖥️ Hardware & OS:" + printf " ├─ %-20s %s\n" "Operating System:" "$(uname -s)" + printf " ├─ %-20s %s\n" "Architecture:" "$(uname -m)" + printf " ├─ %-20s %s\n" "Kernel Version:" "$(uname -r)" + printf " ├─ %-20s %s\n" "CPU Cores:" "$(nproc 2>/dev/null || echo "unknown")" + + if command -v free &> /dev/null; then + local mem_gb=$(free -g | awk '/^Mem:/ {print $2}') + printf " ├─ %-20s %sGB\n" "Total Memory:" "$mem_gb" + fi + + printf " ├─ %-20s %s\n" "Shell:" "$SHELL" + printf " ├─ %-20s %s\n" "User:" "$(whoami)" + printf " └─ %-20s %s\n" "Working Directory:" "$(pwd)" + echo "" +} + +# Enhanced system requirements check +# Usage: ui_check_system_requirements +ui_check_system_requirements() { + ui_section "System Requirements Check" + + local missing_tools="" + local required_tools="wget curl tar gzip make" + local found_tools="" + + ui_print_color "${UI_BLUE}${UI_BOLD}" "🔍 Checking required system tools..." + + for tool in $required_tools; do + if ! command -v "$tool" &> /dev/null; then + missing_tools="$missing_tools $tool" + ui_print_color "${UI_RED}" " ${UI_ICON_CROSS} $tool - not found" + else + found_tools="$found_tools $tool" + ui_print_color "${UI_GREEN}" " ${UI_ICON_CHECK} $tool - found" + fi + done + + echo "" + + if [[ -n "$missing_tools" ]]; then + ui_error "Missing required system tools:$missing_tools" + echo "" + ui_print_color "${UI_YELLOW}${UI_BOLD}" "📦 Install missing tools using your package manager:" + ui_print_color "${UI_WHITE}" " # Ubuntu/Debian:" + ui_print_color "${UI_GREEN}" " sudo apt-get install$missing_tools" + ui_print_color "${UI_WHITE}" " # CentOS/RHEL:" + ui_print_color "${UI_GREEN}" " sudo yum install$missing_tools" + ui_print_color "${UI_WHITE}" " # Fedora:" + ui_print_color "${UI_GREEN}" " sudo dnf install$missing_tools" + return 1 + else + ui_success "All required system tools are available" + return 0 + fi +} \ No newline at end of file diff --git a/toolchain/scripts/lib/version_helper.sh b/toolchain/scripts/lib/version_helper.sh new file mode 100644 index 0000000000..46e7436cad --- /dev/null +++ b/toolchain/scripts/lib/version_helper.sh @@ -0,0 +1,338 @@ +#!/bin/bash + +# ============================================================================ +# ABACUS Toolchain Version Helper +# ============================================================================ +# Provides version display, help information, and user interaction for +# dual-version switching functionality +# Author: Quantum Misaka by Trae SOLO +# Date: 2025-10-16 +# ============================================================================ + +# Source required modules +if [[ -f "${SCRIPTDIR}/package_versions.sh" ]]; then + source "${SCRIPTDIR}/package_versions.sh" +else + echo "Error: package_versions.sh not found in ${SCRIPTDIR}" >&2 + return 1 +fi + +# Display available package versions +# Usage: version_show_available [package_name] +version_show_available() { + local package_name="${1:-all}" + + echo "Available Package Versions:" + echo "==========================" + echo + + if [[ "${package_name}" == "all" ]]; then + # Show all packages + for pkg in gcc cmake openmpi mpich openblas elpa fftw libxc scalapack libtorch libnpy; do + version_show_package_info "${pkg}" + done + else + version_show_package_info "${package_name}" + fi +} + +# Helper function to show package information +version_show_package_info() { + local pkg="$1" + local main_var="${pkg}_main_ver" + local alt_var="${pkg}_alt_ver" + + # Get values using indirect variable expansion + local main_ver="${!main_var}" + local alt_ver="${!alt_var}" + + if [[ -n "$main_ver" || -n "$alt_ver" ]]; then + printf "%-12s: " "$pkg" + + if [[ -n "$main_ver" ]]; then + printf "%s (main)" "$main_ver" + fi + + if [[ -n "$alt_ver" ]]; then + if [[ -n "$main_ver" ]]; then + printf ", %s (alt)" "$alt_ver" + else + printf "%s (alt)" "$alt_ver" + fi + fi + + echo "" + fi +} + +# Display version switching help +# Usage: version_show_help +version_show_help() { + cat << 'EOF' +ABACUS Toolchain Version Switching Help +======================================= + +Command Line Options: + --use-alt-versions Use alternative versions for all packages + --package-version PKG:VER Set specific package version (PKG:main|alt) + Supports two writing styles: + 1. Multiple independent parameters: --package-version PKG1:VER1 --package-version PKG2:VER2 + 2. Single parameter with multiple key-value pairs: --package-version PKG1:VER1 PKG2:VER2 ... + --config-file FILE Load configuration from file + --version-info [PKG] Show version info for package (or all) + +Configuration File Support: + VERSION_STRATEGY=main|alt Global version strategy + PACKAGE_VERSION_PKG=main|alt Specific package version + +Examples: + # Use alternative versions for all packages + ./install_abacus_toolchain_new.sh --use-alt-versions + + # Use specific package versions (single) + ./install_abacus_toolchain_new.sh --package-version openmpi:alt + + # Use specific package versions (multiple independent parameters) + ./install_abacus_toolchain_new.sh --package-version openmpi:alt --package-version gcc:main --package-version cmake:alt + + # Use specific package versions (single parameter with multiple key-value pairs) + ./install_abacus_toolchain_new.sh --package-version openmpi:alt gcc:main cmake:alt + + # Mixed with other options + ./install_abacus_toolchain_new.sh --package-version elpa:alt cmake:alt --dry-run + + # Show version information + ./install_abacus_toolchain_new.sh --version-info openmpi + ./install_abacus_toolchain_new.sh --version-info + +Backward Compatibility: + --with-4th-openmpi Legacy flag (use --package-version openmpi=alt) + OPENMPI_4TH=yes Legacy variable (use PACKAGE_VERSION_OPENMPI=alt) + +Supported Packages: + gcc, cmake, openmpi, mpich, openblas, elpa, fftw, libxc, scalapack, libtorch, libnpy + +EOF +} + +# Interactive version selection interface +# Usage: version_interactive_select +version_interactive_select() { + echo "Interactive Version Selection" + echo "============================" + echo "" + + local packages=( + "openmpi" "mpich" "openblas" "elpa" "fftw" + "libxc" "scalapack" "libtorch" "libnpy" + ) + + echo "Select versions for packages (press Enter for default 'main'):" + echo "" + + for pkg in "${packages[@]}"; do + local main_var="${pkg^^}_main_ver" + local alt_var="${pkg^^}_alt_ver" + + # Skip if no versions available + if [[ -z "${!main_var}" && -z "${!alt_var}" ]]; then + continue + fi + + printf "%-12s: " "$pkg" + + # Show available versions + if [[ -n "${!main_var}" ]]; then + printf "main(%s)" "${!main_var}" + fi + if [[ -n "${!alt_var}" ]]; then + if [[ -n "${!main_var}" ]]; then + printf ", alt(%s)" "${!alt_var}" + else + printf "alt(%s)" "${!alt_var}" + fi + fi + + printf " [main]: " + read -r user_choice + + # Set user choice or default to main + case "$user_choice" in + alt|alternative) + if [[ -n "${!alt_var}" ]]; then + CONFIG_CACHE["PACKAGE_VERSION_${pkg^^}"]="alt" + echo " → Selected: alt (${!alt_var})" + else + echo " → Alternative version not available, using main" + CONFIG_CACHE["PACKAGE_VERSION_${pkg^^}"]="main" + fi + ;; + main|"") + CONFIG_CACHE["PACKAGE_VERSION_${pkg^^}"]="main" + if [[ -n "${!main_var}" ]]; then + echo " → Selected: main (${!main_var})" + else + echo " → Main version not available" + fi + ;; + *) + echo " → Invalid choice, using main" + CONFIG_CACHE["PACKAGE_VERSION_${pkg^^}"]="main" + ;; + esac + echo "" + done + + echo "Version selection completed!" + echo "" +} + +# Get effective version for a package +# Usage: version_get_effective PACKAGE_NAME +version_get_effective() { + local package_name="$1" + local pkg_upper="${package_name^^}" + + # Check for specific package version setting + local specific_version="${CONFIG_CACHE[PACKAGE_VERSION_${pkg_upper}]}" + if [[ -n "$specific_version" ]]; then + echo "$specific_version" + return 0 + fi + + # Check for global version strategy + local global_strategy="${CONFIG_CACHE[VERSION_STRATEGY]}" + if [[ -n "$global_strategy" ]]; then + echo "$global_strategy" + return 0 + fi + + # Check for legacy OPENMPI_4TH support + if [[ "$package_name" == "openmpi" && "${CONFIG_CACHE[OPENMPI_4TH]}" == "yes" ]]; then + echo "alt" + return 0 + fi + + # Default to main + echo "main" + return 0 +} + +# Load package variables with version selection +# Usage: version_load_package_vars PACKAGE_NAME +version_load_package_vars() { + local package_name="$1" + local effective_version + + effective_version=$(version_get_effective "$package_name") + + # Convert effective version to suffix for load_package_vars + local version_suffix="" + if [[ "$effective_version" == "alt" ]]; then + version_suffix="alt" + fi + + # Call the original load_package_vars function + load_package_vars "$package_name" "$version_suffix" + + # Export version information for debugging + export "${package_name^^}_EFFECTIVE_VERSION"="$effective_version" +} + +# Display current version configuration +# Usage: version_show_current +version_show_current() { + echo "Current Version Configuration:" + echo "=============================" + + # Show global strategy + local global_strategy="${CONFIG_CACHE[VERSION_STRATEGY]}" + if [[ -n "$global_strategy" ]]; then + echo "Global Strategy: $global_strategy" + else + echo "Global Strategy: main (default)" + fi + echo "" + + # Show per-package settings + echo "Package-specific settings:" + local packages=( + "gcc" "cmake" "openmpi" "mpich" "openblas" + "elpa" "fftw" "libxc" "scalapack" "libtorch" "libnpy" + ) + + local has_specific=false + for pkg in "${packages[@]}"; do + local pkg_upper="${pkg^^}" + local specific_version="${CONFIG_CACHE[PACKAGE_VERSION_${pkg_upper}]}" + + if [[ -n "$specific_version" ]]; then + printf " %-12s: %s\n" "$pkg" "$specific_version" + has_specific=true + fi + done + + if [[ "$has_specific" == false ]]; then + echo " (none - using global strategy)" + fi + + echo "" + + # Show legacy compatibility + if [[ "${CONFIG_CACHE[OPENMPI_4TH]}" == "yes" ]]; then + echo "Legacy compatibility: OPENMPI_4TH=yes (equivalent to openmpi:alt)" + echo "" + fi +} + +# Validate version configuration +# Usage: version_validate_config +version_validate_config() { + local validation_errors=0 + + # Check if requested versions are available + for key in "${!CONFIG_CACHE[@]}"; do + if [[ "$key" =~ ^PACKAGE_VERSION_(.+)$ ]]; then + local pkg_name="${BASH_REMATCH[1]}" + local requested_version="${CONFIG_CACHE[$key]}" + local pkg_lower=$(echo "$pkg_name" | tr '[:upper:]' '[:lower:]') + + # Check if the requested version exists + local version_var="${pkg_lower}_${requested_version}_ver" + if [[ -z "${!version_var}" ]]; then + echo "Warning: Requested version '$requested_version' for package '$pkg_lower' is not available" + validation_errors=$((validation_errors + 1)) + fi + fi + done + + return $validation_errors +} + +# Initialize version helper +# Usage: version_helper_init +version_helper_init() { + # Set default version strategy if not set + if [[ -z "${CONFIG_CACHE[VERSION_STRATEGY]}" ]]; then + CONFIG_CACHE["VERSION_STRATEGY"]="main" + fi + + # Handle legacy OPENMPI_4TH environment variable + if [[ "${OPENMPI_4TH}" == "yes" && -z "${CONFIG_CACHE[PACKAGE_VERSION_OPENMPI]}" ]]; then + CONFIG_CACHE["PACKAGE_VERSION_OPENMPI"]="alt" + CONFIG_CACHE["OPENMPI_4TH"]="yes" + echo "Notice: Legacy OPENMPI_4TH=yes detected, using openmpi:alt" + fi + + return 0 +} + +# Export functions for use by other modules +export -f version_show_available +export -f version_show_help +export -f version_interactive_select +export -f version_get_effective +export -f version_load_package_vars +export -f version_show_current +export -f version_validate_config +export -f version_helper_init \ No newline at end of file diff --git a/toolchain/scripts/lib/version_loader.sh b/toolchain/scripts/lib/version_loader.sh new file mode 100644 index 0000000000..8883a7e789 --- /dev/null +++ b/toolchain/scripts/lib/version_loader.sh @@ -0,0 +1,81 @@ +#!/bin/bash + +# ============================================================================ +# ABACUS Toolchain Version Loader Helper +# ============================================================================ +# Provides a unified version loading mechanism for all stage scripts +# Author: Quantum Misaka by Trae SOLO +# Date: 2025-10-16 +# ============================================================================ + +# Load package variables with version suffix support +# Usage: load_package_with_version "package_name" +load_package_with_version() { + local package_name="$1" + + # Check for version configuration from environment or individual package setting + local version_suffix="" + + if [[ -n "${ABACUS_TOOLCHAIN_PACKAGE_VERSIONS}" ]]; then + # Check for individual package version override + if echo "${ABACUS_TOOLCHAIN_PACKAGE_VERSIONS}" | grep -q "${package_name}:alt"; then + version_suffix="alt" + elif echo "${ABACUS_TOOLCHAIN_PACKAGE_VERSIONS}" | grep -q "${package_name}:main"; then + version_suffix="main" + fi + fi + + # Fall back to global version suffix if no individual setting + if [[ -z "$version_suffix" && -n "${ABACUS_TOOLCHAIN_VERSION_SUFFIX}" ]]; then + version_suffix="${ABACUS_TOOLCHAIN_VERSION_SUFFIX}" + fi + + # Load package variables with appropriate version + load_package_vars "$package_name" "$version_suffix" + + # Debug output if verbose mode is enabled + if [[ "${VERBOSE_MODE}" == "__TRUE__" ]]; then + echo "DEBUG: Loaded $package_name with version suffix: ${version_suffix:-main}" + fi +} + +# Check if version configuration is available +# Usage: has_version_config +has_version_config() { + [[ -n "${ABACUS_TOOLCHAIN_VERSION_SUFFIX}" || -n "${ABACUS_TOOLCHAIN_PACKAGE_VERSIONS}" ]] +} + +# Get effective version suffix for a package +# Usage: get_package_version_suffix "package_name" +get_package_version_suffix() { + local package_name="$1" + local version_suffix="" + + if [[ -n "${ABACUS_TOOLCHAIN_PACKAGE_VERSIONS}" ]]; then + # Check for individual package version override + if echo "${ABACUS_TOOLCHAIN_PACKAGE_VERSIONS}" | grep -q "${package_name}:alt"; then + version_suffix="alt" + elif echo "${ABACUS_TOOLCHAIN_PACKAGE_VERSIONS}" | grep -q "${package_name}:main"; then + version_suffix="main" + fi + fi + + # Fall back to global version suffix if no individual setting + if [[ -z "$version_suffix" && -n "${ABACUS_TOOLCHAIN_VERSION_SUFFIX}" ]]; then + version_suffix="${ABACUS_TOOLCHAIN_VERSION_SUFFIX}" + fi + + echo "${version_suffix:-main}" +} + +# Show version information for debugging +# Usage: show_version_debug "package_name" +show_version_debug() { + local package_name="$1" + local version_suffix=$(get_package_version_suffix "$package_name") + + echo "Version Debug for $package_name:" + echo " Global suffix: ${ABACUS_TOOLCHAIN_VERSION_SUFFIX:-none}" + echo " Package versions: ${ABACUS_TOOLCHAIN_PACKAGE_VERSIONS:-none}" + echo " Effective suffix: $version_suffix" +} \ No newline at end of file diff --git a/toolchain/scripts/package_versions.sh b/toolchain/scripts/package_versions.sh new file mode 100644 index 0000000000..b8e689c367 --- /dev/null +++ b/toolchain/scripts/package_versions.sh @@ -0,0 +1,268 @@ +#!/bin/bash +# ABACUS Toolchain - Centralized Package Version Management +# +# This file contains all package versions, checksums, and URLs in one place. +# +# Usage: source this file in install scripts to get package version information +# Example: source "${SCRIPT_DIR}/package_versions.sh" && load_package_vars "openmpi" + +# ============================================================================= +# STAGE 0: Build Tools and Compilers +# ============================================================================= + +# GCC (supports dual versions) - Special case: main=13.2.0, alt=11.4.0 +gcc_main_ver="13.2.0" +gcc_main_sha256="8cb4be3796651976f94b9356fa08d833524f62420d6292c5033a9a26af315078" +gcc_alt_ver="11.4.0" +gcc_alt_sha256="af828619dd1970734dda3cfb792ea3f2cba61b5a00170ba8bce4910749d73c07" + +# CMake (supports dual versions) - main=3.31.7, alt=3.30.5 +cmake_main_ver="3.31.7" +cmake_main_sha256_x86_64="b7a5c909cdafc36042c8c9bd5765e92ff1f2528cf01720aa6dc4df294ec7e1a0" +cmake_main_sha256_aarch64="ce8e32b2c1c497dd7f619124c043ac5c28a88677e390c58748dd62fe460c62a2" +cmake_main_sha256_macos="1cb11aa2edae8551bb0f22807c6f5246bd0eb60ae9fa1474781eb4095d299aca" +cmake_alt_ver="3.30.5" +cmake_alt_sha256_x86_64="83de8839f3fb0d9caf982a0435da3fa8c4fbe2c817dfec99def310dc7e6a8404" +cmake_alt_sha256_aarch64="93c3b8920379585dece1314f113c6c9008eaedfe56023c78d856fc86dad5b8e2" +cmake_alt_sha256_macos="3d603e507c7579b13518ef752b4ffcf3ed479fba80ee171d7d85da8153e869d0" + +# ============================================================================= +# STAGE 1: MPI Implementations +# ============================================================================= + +# OpenMPI (supports dual versions) - main=5.0.8, alt=4.1.6 +openmpi_main_ver="5.0.8" +openmpi_main_sha256="53131e1a57e7270f645707f8b0b65ba56048f5b5ac3f68faabed3eb0d710e449" +openmpi_alt_ver="4.1.6" +openmpi_alt_sha256="f740994485516deb63b5311af122c265179f5328a0d857a567b85db00b11e415" + +# MPICH (supports dual versions) - main=4.3.1, alt=4.1.0 +mpich_main_ver="4.3.1" +mpich_main_sha256="acc11cb2bdc69678dc8bba747c24a28233c58596f81f03785bf2b7bb7a0ef7dc" +mpich_alt_ver="4.1.0" +mpich_alt_sha256="8b1ec63bc44c7caa2afbb457bc5b3cd4a70dbe46baba700123d67c48dc5ab6a0" + +# ============================================================================= +# STAGE 2: Math Libraries +# ============================================================================= + +# OpenBLAS (supports dual versions) - main=0.3.30, alt=0.3.27 +openblas_main_ver="0.3.30" +openblas_main_sha256="27342cff518646afb4c2b976d809102e368957974c250a25ccc965e53063c95d" +openblas_alt_ver="0.3.27" +openblas_alt_sha256="aa2d68b1564fe2b13bc292672608e9cdeeeb6dc34995512e65c3b10f4599e897" + +# ============================================================================= +# STAGE 3: Scientific Computing Libraries +# ============================================================================= + +# ELPA (supports dual versions) - main=2025.06.001, alt=2024.05.001 +elpa_main_ver="2025.06.001" +elpa_main_sha256="feeb1fea1ab4a8670b8d3240765ef0ada828062ef7ec9b735eecba2848515c94" +elpa_alt_ver="2024.05.001" +elpa_alt_sha256="9caf41a3e600e2f6f4ce1931bd54185179dade9c171556d0c9b41bbc6940f2f6" + +# FFTW (supports dual versions) - Special case: both main and alt are 3.3.10 +fftw_main_ver="3.3.10" +fftw_main_sha256="56c932549852cddcfafdab3820b0200c7742675be92179e59e6215b340e26467" +fftw_alt_ver="3.3.10" +fftw_alt_sha256="56c932549852cddcfafdab3820b0200c7742675be92179e59e6215b340e26467" + +# LibXC (supports dual versions) - main=7.0.0, alt=6.2.2 +libxc_main_ver="7.0.0" +libxc_main_sha256="e9ae69f8966d8de6b7585abd9fab588794ada1fab8f689337959a35abbf9527d" +libxc_alt_ver="6.2.2" +libxc_alt_sha256="f72ed08af7b9dff5f57482c5f97bff22c7dc49da9564bc93871997cbda6dacf3" + +# ScaLAPACK (supports dual versions) - main=2.2.2, alt=2.2.1 +scalapack_main_ver="2.2.2" +scalapack_main_sha256="a2f0c9180a210bf7ffe126c9cb81099cf337da1a7120ddb4cbe4894eb7b7d022" +scalapack_alt_ver="2.2.1" +scalapack_alt_sha256="4aede775fdb28fa44b331875730bcd5bab130caaec225fadeccf424c8fcb55aa" + +# ============================================================================= +# STAGE 4: Advanced Feature Libraries +# ============================================================================= + +# LibTorch (supports dual versions) - main=2.1.2, alt=1.12.1 +libtorch_main_ver="2.1.2" +libtorch_main_sha256="904b764df6106a8a35bef64c4b55b8c1590ad9d071eb276e680cf42abafe79e9" +libtorch_alt_ver="1.12.1" +libtorch_alt_sha256="82c7be80860f2aa7963f8700004a40af8205e1d721298f2e09b700e766a9d283" +# user can manually download higher version of libtorch by: +# wget https://download.pytorch.org/libtorch/cpu/libtorch-cxx11-abi-shared-with-deps-{libtorch_ver}%2Bcpu.zip +# 2.1.2 recommended for lower GLIBC support (lower than 3.4.26) + +# LibNPY (supports dual versions) - Special case: both main and alt are 1.0.1 +libnpy_main_ver="1.0.1" +libnpy_main_sha256="43452a4db1e8c1df606c64376ea1e32789124051d7640e7e4e8518ab4f0fba44" +libnpy_alt_ver="1.0.1" +libnpy_alt_sha256="43452a4db1e8c1df606c64376ea1e32789124051d7640e7e4e8518ab4f0fba44" + +# Master branch packages (no fixed versions) +cereal_ver="master" +cereal_sha256="--no-checksum" + +libcomm_ver="master" +libcomm_sha256="--no-checksum" + +libri_ver="master" +libri_sha256="--no-checksum" + +rapidjson_ver="master" +rapidjson_sha256="--no-checksum" + +# NEP (Neural Evolution Potential) - CPU version +nep_ver="main" +nep_sha256="--no-checksum" + +# ============================================================================= +# Package Variable Loading Function +# ============================================================================= + +load_package_vars() { + local package_name="$1" + local version_suffix="$2" # Optional version suffix for multi-version packages + + case "${package_name}" in + "gcc") + if [ "${version_suffix}" = "alt" ]; then + gcc_ver="${gcc_alt_ver}" + gcc_sha256="${gcc_alt_sha256}" + else + gcc_ver="${gcc_main_ver}" + gcc_sha256="${gcc_main_sha256}" + fi + ;; + "cmake") + # Determine architecture for SHA256 selection + local arch_suffix="" + if [ "${OPENBLAS_ARCH}" = "arm64" ]; then + if [ "$(uname -s)" = "Darwin" ]; then + arch_suffix="_macos" + else + arch_suffix="_aarch64" + fi + else + arch_suffix="_x86_64" + fi + + if [ "${version_suffix}" = "alt" ]; then + cmake_ver="${cmake_alt_ver}" + eval "cmake_sha256=\${cmake_alt_sha256${arch_suffix}}" + else + cmake_ver="${cmake_main_ver}" + eval "cmake_sha256=\${cmake_main_sha256${arch_suffix}}" + fi + ;; + "openmpi") + if [ "${OPENMPI_4TH}" = "yes" ]; then + echo "WARNING: OPENMPI_4TH=yes is deprecated. Please use 'alt' parameter instead." >&2 + openmpi_ver="${openmpi_alt_ver}" + openmpi_sha256="${openmpi_alt_sha256}" + elif [ "${version_suffix}" = "alt" ]; then + openmpi_ver="${openmpi_alt_ver}" + openmpi_sha256="${openmpi_alt_sha256}" + else + openmpi_ver="${openmpi_main_ver}" + openmpi_sha256="${openmpi_main_sha256}" + fi + ;; + "mpich") + if [ "${version_suffix}" = "alt" ]; then + mpich_ver="${mpich_alt_ver}" + mpich_sha256="${mpich_alt_sha256}" + else + mpich_ver="${mpich_main_ver}" + mpich_sha256="${mpich_main_sha256}" + fi + ;; + "openblas") + if [ "${version_suffix}" = "alt" ]; then + openblas_ver="${openblas_alt_ver}" + openblas_sha256="${openblas_alt_sha256}" + else + openblas_ver="${openblas_main_ver}" + openblas_sha256="${openblas_main_sha256}" + fi + ;; + "elpa") + if [ "${version_suffix}" = "alt" ]; then + elpa_ver="${elpa_alt_ver}" + elpa_sha256="${elpa_alt_sha256}" + else + elpa_ver="${elpa_main_ver}" + elpa_sha256="${elpa_main_sha256}" + fi + ;; + "fftw") + if [ "${version_suffix}" = "alt" ]; then + fftw_ver="${fftw_alt_ver}" + fftw_sha256="${fftw_alt_sha256}" + else + fftw_ver="${fftw_main_ver}" + fftw_sha256="${fftw_main_sha256}" + fi + ;; + "libxc") + if [ "${version_suffix}" = "alt" ]; then + libxc_ver="${libxc_alt_ver}" + libxc_sha256="${libxc_alt_sha256}" + else + libxc_ver="${libxc_main_ver}" + libxc_sha256="${libxc_main_sha256}" + fi + ;; + "scalapack") + if [ "${version_suffix}" = "alt" ]; then + scalapack_ver="${scalapack_alt_ver}" + scalapack_sha256="${scalapack_alt_sha256}" + else + scalapack_ver="${scalapack_main_ver}" + scalapack_sha256="${scalapack_main_sha256}" + fi + ;; + "libtorch") + if [ "${version_suffix}" = "alt" ]; then + libtorch_ver="${libtorch_alt_ver}" + libtorch_sha256="${libtorch_alt_sha256}" + else + libtorch_ver="${libtorch_main_ver}" + libtorch_sha256="${libtorch_main_sha256}" + fi + ;; + "libnpy") + if [ "${version_suffix}" = "alt" ]; then + libnpy_ver="${libnpy_alt_ver}" + libnpy_sha256="${libnpy_alt_sha256}" + else + libnpy_ver="${libnpy_main_ver}" + libnpy_sha256="${libnpy_main_sha256}" + fi + ;; + "cereal") + cereal_ver="${cereal_ver}" + cereal_sha256="${cereal_sha256}" + ;; + "libcomm") + libcomm_ver="${libcomm_ver}" + libcomm_sha256="${libcomm_sha256}" + ;; + "libri") + libri_ver="${libri_ver}" + libri_sha256="${libri_sha256}" + ;; + "rapidjson") + rapidjson_ver="${rapidjson_ver}" + rapidjson_sha256="${rapidjson_sha256}" + ;; + "nep") + nep_ver="${nep_ver}" + nep_sha256="${nep_sha256}" + ;; + *) + echo "Error: Unknown package '${package_name}'" + return 1 + ;; + esac +} \ No newline at end of file diff --git a/toolchain/scripts/patches/6190.patch b/toolchain/scripts/patches/6190.patch new file mode 100644 index 0000000000..5d4d3f3f30 --- /dev/null +++ b/toolchain/scripts/patches/6190.patch @@ -0,0 +1,41 @@ +From 409db5e910279224bd7e78f8188450c7e7d34d87 Mon Sep 17 00:00:00 2001 +From: Khem Raj +Date: Tue, 10 Sep 2024 18:11:40 -0700 +Subject: [PATCH] Fix instances of + -Wmissing-template-arg-list-after-template-kw. + +Clang has a new warning that requires a template argument list after using +the template keyword. Remove uses of the template keyword when we're not +specifying types. + +See https://github.com/llvm/llvm-project/issues/94194 for the upstream +clang changes + +Signed-off-by: Khem Raj +--- + include/cereal/types/tuple.hpp | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/include/cereal/types/tuple.hpp b/include/cereal/types/tuple.hpp +index 80c68075..5c79eca9 100644 +--- a/include/cereal/types/tuple.hpp ++++ b/include/cereal/types/tuple.hpp +@@ -95,7 +95,7 @@ namespace cereal + template inline + static void apply( Archive & ar, std::tuple & tuple ) + { +- serialize::template apply( ar, tuple ); ++ serialize::apply( ar, tuple ); + ar( CEREAL_NVP_(tuple_element_name::c_str(), + std::get( tuple )) ); + } +@@ -116,7 +116,7 @@ namespace cereal + template inline + void CEREAL_SERIALIZE_FUNCTION_NAME( Archive & ar, std::tuple & tuple ) + { +- tuple_detail::serialize>::value>::template apply( ar, tuple ); ++ tuple_detail::serialize>::value>::apply( ar, tuple ); + } + } // namespace cereal + + \ No newline at end of file diff --git a/toolchain/scripts/stage0/install_amd.sh b/toolchain/scripts/stage0/install_amd.sh index 4ecfce526c..e3565a7dff 100755 --- a/toolchain/scripts/stage0/install_amd.sh +++ b/toolchain/scripts/stage0/install_amd.sh @@ -3,7 +3,6 @@ # TODO: Review and if possible fix shellcheck errors. # shellcheck disable=all -# Last Update in 2025-0308 # NOTICE: flang cannot be used when compiling ELPA [ "${BASH_SOURCE[0]}" ] && SCRIPT_NAME="${BASH_SOURCE[0]}" || SCRIPT_NAME=${0} @@ -24,85 +23,83 @@ mkdir -p "${BUILDDIR}" cd "${BUILDDIR}" case "${with_amd}" in - __INSTALL__) - echo "==================== Installing the AMD compiler ======================" - echo "__INSTALL__ is not supported; please install the AMD compiler manually" - if [ "${PACK_RUN}" != "__TRUE__" ]; then + __INSTALL__) + echo "==================== Installing the AMD compiler ======================" + report_error ${LINENO} "To install the AMD compiler, please contact your system administrator." exit 1 - fi - ;; - __SYSTEM__) - echo "==================== Finding AMD compiler from system paths ====================" - if [ "${PACK_RUN}" = "__TRUE__" ]; then - echo "--pack-run mode specified, skip system check" - else - check_command clang "amd" && CC="$(realpath $(command -v clang))" || exit 1 - check_command clang++ "amd" && CXX="$(realpath $(command -v clang++))" || exit 1 - if [ "${WITH_FLANG}" = "yes" ]; then - check_command flang "amd" && FC="$(realpath $(command -v flang))" || exit 1 - else - check_command gfortran "gcc" && FC="gfortran" || exit 1 - add_lib_from_paths GCC_LDFLAGS "libgfortran.*" ${LIB_PATHS} - fi - fi - F90="${FC}" - F77="${FC}" - ;; - __DONTUSE__) - # Nothing to do - ;; - *) - echo "==================== Linking AMD compiler to user paths ====================" - pkg_install_dir="${with_amd}" - check_dir "${pkg_install_dir}/bin" - check_dir "${pkg_install_dir}/lib" - check_dir "${pkg_install_dir}/include" - check_command ${pkg_install_dir}/bin/clang "amd" && CC="${pkg_install_dir}/bin/clang" || exit 1 - check_command ${pkg_install_dir}/bin/clang++ "amd" && CXX="${pkg_install_dir}/bin/clang++" || exit 1 + ;; + __SYSTEM__) + echo "==================== Finding AMD compiler from system paths ====================" + if [ "${PACK_RUN}" = "__TRUE__" ]; then + echo "--pack-run mode specified, skip system check" + exit 0 + fi + check_command clang "amd" && CC="$(realpath $(command -v clang))" || exit 1 + check_command clang++ "amd" && CXX="$(realpath $(command -v clang++))" || exit 1 + if [ "${WITH_FLANG}" = "yes" ]; then + check_command flang "amd" && FC="$(realpath $(command -v flang))" || exit 1 + else + check_command gfortran "gcc" && FC="gfortran" || exit 1 + add_lib_from_paths GCC_LDFLAGS "libgfortran.*" ${LIB_PATHS} + fi + F90="${FC}" + F77="${FC}" + ;; + __DONTUSE__) + # Nothing to do + ;; + *) + echo "==================== Linking AMD compiler to user paths ====================" + pkg_install_dir="${with_amd}" + check_dir "${pkg_install_dir}/bin" + check_dir "${pkg_install_dir}/lib" + check_dir "${pkg_install_dir}/include" + check_command ${pkg_install_dir}/bin/clang "amd" && CC="${pkg_install_dir}/bin/clang" || exit 1 + check_command ${pkg_install_dir}/bin/clang++ "amd" && CXX="${pkg_install_dir}/bin/clang++" || exit 1 + if [ "${WITH_FLANG}" = "yes" ]; then + check_command ${pkg_install_dir}/bin/flang "amd" && FC="${pkg_install_dir}/bin/flang" || exit 1 + else + check_command gfortran "gcc" && FC="$(command -v gfortran)" || exit 1 + fi + F90="${FC}" + F77="${FC}" + AMD_CFLAGS="-I'${pkg_install_dir}/include'" + AMD_LDFLAGS="-L'${pkg_install_dir}/lib' -Wl,-rpath,'${pkg_install_dir}/lib'" + ;; +esac +if [ "${with_amd}" != "__DONTUSE__" ]; then + echo "CC is ${CC}" + [ $(realpath $(command -v clang) | grep -e aocc-compiler) ] || echo "Check the AMD C compiler path" + echo "CXX is ${CXX}" + [ $(realpath $(command -v clang++) | grep -e aocc-compiler) ] || echo "Check the AMD C++ compiler path" + echo "FC is ${FC}" if [ "${WITH_FLANG}" = "yes" ]; then - check_command ${pkg_install_dir}/bin/flang "amd" && FC="${pkg_install_dir}/bin/flang" || exit 1 + [ $(realpath $(command -v flang) | grep -e aocc-compiler) ] || echo "Check the AMD Fortran compiler path" else - check_command gfortran "gcc" && FC="$(command -v gfortran)" || exit 1 + [ $(realpath $(command -v gfortran) | grep -e aocc-compiler) ] || echo "Check the GNU Fortran compiler path" fi - F90="${FC}" - F77="${FC}" - AMD_CFLAGS="-I'${pkg_install_dir}/include'" - AMD_LDFLAGS="-L'${pkg_install_dir}/lib' -Wl,-rpath,'${pkg_install_dir}/lib'" - ;; -esac -if [ "${with_amd}" != "__DONTUSE__" ]; then - echo "CC is ${CC}" - [ $(realpath $(command -v clang) | grep -e aocc-compiler) ] || echo "Check the AMD C compiler path" - echo "CXX is ${CXX}" - [ $(realpath $(command -v clang++) | grep -e aocc-compiler) ] || echo "Check the AMD C++ compiler path" - echo "FC is ${FC}" - if [ "${WITH_FLANG}" = "yes" ]; then - [ $(realpath $(command -v flang) | grep -e aocc-compiler) ] || echo "Check the AMD Fortran compiler path" - else - [ $(realpath $(command -v gfortran) | grep -e aocc-compiler) ] || echo "Check the GNU Fortran compiler path" - fi - cat << EOF > "${BUILDDIR}/setup_amd" + cat << EOF > "${BUILDDIR}/setup_amd" export CC="${CC}" export CXX="${CXX}" export FC="${FC}" export F90="${F90}" export F77="${F77}" EOF - if [ "${with_amd}" != "__SYSTEM__" ]; then - cat << EOF >> "${BUILDDIR}/setup_amd" + if [ "${with_amd}" != "__SYSTEM__" ]; then + cat << EOF >> "${BUILDDIR}/setup_amd" prepend_path PATH "${pkg_install_dir}/bin" prepend_path LD_LIBRARY_PATH "${pkg_install_dir}/lib" prepend_path LD_RUN_PATH "${pkg_install_dir}/lib" prepend_path LIBRARY_PATH "${pkg_install_dir}/lib" prepend_path CPATH "${pkg_install_dir}/include" EOF - fi - cat << EOF >> "${BUILDDIR}/setup_amd" + fi + cat << EOF >> "${BUILDDIR}/setup_amd" export AMD_CFLAGS="${AMD_CFLAGS}" export AMD_LDFLAGS="${AMD_LDFLAGS}" export AMD_LIBS="${AMD_LIBS}" EOF - cat "${BUILDDIR}/setup_amd" >> ${SETUPFILE} + cat "${BUILDDIR}/setup_amd" >> ${SETUPFILE} fi load "${BUILDDIR}/setup_amd" diff --git a/toolchain/scripts/stage0/install_cmake.sh b/toolchain/scripts/stage0/install_cmake.sh index 0ef5158c97..8692bfb058 100755 --- a/toolchain/scripts/stage0/install_cmake.sh +++ b/toolchain/scripts/stage0/install_cmake.sh @@ -11,87 +11,137 @@ SCRIPT_DIR="$(cd "$(dirname "$SCRIPT_NAME")/.." && pwd -P)" source "${SCRIPT_DIR}"/common_vars.sh source "${SCRIPT_DIR}"/tool_kit.sh source "${SCRIPT_DIR}"/signal_trap.sh +source "${SCRIPT_DIR}"/package_versions.sh + +# Load CMake package variables with version suffix support +# Check for version configuration from environment or individual package setting +version_suffix="" +if [[ -n "${ABACUS_TOOLCHAIN_PACKAGE_VERSIONS}" ]]; then + # Check for individual package version override + if echo "${ABACUS_TOOLCHAIN_PACKAGE_VERSIONS}" | grep -q "cmake:alt"; then + version_suffix="alt" + elif echo "${ABACUS_TOOLCHAIN_PACKAGE_VERSIONS}" | grep -q "cmake:main"; then + version_suffix="main" + fi +fi +# Fall back to global version suffix if no individual setting +if [[ -z "$version_suffix" && -n "${ABACUS_TOOLCHAIN_VERSION_SUFFIX}" ]]; then + version_suffix="${ABACUS_TOOLCHAIN_VERSION_SUFFIX}" +fi + +# Ensure OPENBLAS_ARCH is set before loading package variables +# This is needed for architecture-specific SHA256 selection +# In --pack-run mode, openblas_arch file may contain empty values, so we need fallback +if [ -f "${BUILDDIR}/openblas_arch" ]; then + source "${BUILDDIR}/openblas_arch" +fi + +if [ -z "${OPENBLAS_ARCH}" ]; then + case "$(uname -m)" in + x86_64|amd64) OPENBLAS_ARCH="x86_64" ;; + aarch64|arm64) OPENBLAS_ARCH="arm64" ;; + *) OPENBLAS_ARCH="x86_64" ;; # default fallback + esac + echo "OPENBLAS_ARCH not set, using fallback: ${OPENBLAS_ARCH}" +fi + +# Export OPENBLAS_ARCH to ensure it's available throughout the script +export OPENBLAS_ARCH + +# Load package variables with appropriate version +load_package_vars "cmake" "$version_suffix" + source "${INSTALLDIR}"/toolchain.conf source "${INSTALLDIR}"/toolchain.env +# Re-apply architecture detection if OPENBLAS_ARCH is still empty after sourcing +if [ -z "${OPENBLAS_ARCH}" ]; then + case "$(uname -m)" in + x86_64|amd64) OPENBLAS_ARCH="x86_64" ;; + aarch64|arm64) OPENBLAS_ARCH="arm64" ;; + *) OPENBLAS_ARCH="x86_64" ;; # default fallback + esac + export OPENBLAS_ARCH +fi + [ -f "${BUILDDIR}/setup_cmake" ] && rm "${BUILDDIR}/setup_cmake" ! [ -d "${BUILDDIR}" ] && mkdir -p "${BUILDDIR}" cd "${BUILDDIR}" case "${with_cmake}" in - __INSTALL__) - echo "==================== Installing CMake ====================" - cmake_ver="3.31.7" - cmake_ext="sh" - if [ "${OPENBLAS_ARCH}" = "arm64" ]; then - if [ "$(uname -s)" = "Darwin" ]; then - cmake_arch="macos-universal" - cmake_sha256="1cb11aa2edae8551bb0f22807c6f5246bd0eb60ae9fa1474781eb4095d299aca" - cmake_ext="tar.gz" - elif [ "$(uname -s)" = "Linux" ]; then - cmake_arch="linux-aarch64" - cmake_sha256="ce8e32b2c1c497dd7f619124c043ac5c28a88677e390c58748dd62fe460c62a2" - else - report_error ${LINENO} \ - "cmake installation for ARCH=${OPENBLAS_ARCH} under $(uname -s) is not supported. You can try to use the system installation using the flag --with-cmake=system instead." - fi - elif [ "${OPENBLAS_ARCH}" = "x86_64" ]; then - cmake_arch="linux-x86_64" - cmake_sha256="b7a5c909cdafc36042c8c9bd5765e92ff1f2528cf01720aa6dc4df294ec7e1a0" - else - report_error ${LINENO} \ - "cmake installation for ARCH=${ARCH} is not supported. You can try to use the system installation using the flag --with-cmake=system instead." - exit 1 - fi - pkg_install_dir="${INSTALLDIR}/cmake-${cmake_ver}" - #pkg_install_dir="${HOME}/apps/cmake/${cmake_ver}" - install_lock_file="$pkg_install_dir/install_successful" - cmake_pkg="cmake-${cmake_ver}-${cmake_arch}.${cmake_ext}" - if verify_checksums "${install_lock_file}"; then - echo "cmake-${cmake_ver} is already installed, skipping it." - else - if [ -f $cmake_pkg ]; then - echo "$cmake_pkg is found" - else - #download_pkg_from_ABACUS_org "${cmake_sha256}" "$cmake_pkg" - url="https://cmake.org/files/v${cmake_ver%.*}/${cmake_pkg}" - download_pkg_from_url "${cmake_sha256}" "${cmake_pkg}" "${url}" - fi - if [ "${PACK_RUN}" = "__TRUE__" ]; then - echo "--pack-run mode specified, skip installation" - else - echo "Installing from scratch into ${pkg_install_dir}" - mkdir -p ${pkg_install_dir} - if [ "${cmake_arch}" = "macos-universal" ]; then - tar --strip-components=3 -xvf $cmake_pkg -C ${pkg_install_dir} > install.log 2>&1 || tail -n ${LOG_LINES} install.log + __INSTALL__) + echo "==================== Installing CMake ====================" + cmake_ext="sh" + if [ "${OPENBLAS_ARCH}" = "arm64" ]; then + if [ "$(uname -s)" = "Darwin" ]; then + cmake_arch="macos-universal" + cmake_ext="tar.gz" + elif [ "$(uname -s)" = "Linux" ]; then + cmake_arch="linux-aarch64" + else + report_error ${LINENO} \ + "cmake installation for ARCH=${OPENBLAS_ARCH} under $(uname -s) is not supported. You can try to use the system installation using the flag --with-cmake=system instead." + fi + elif [ "${OPENBLAS_ARCH}" = "x86_64" ]; then + cmake_arch="linux-x86_64" else - /bin/sh $cmake_pkg --prefix=${pkg_install_dir} --skip-license > install.log 2>&1 || tail -n ${LOG_LINES} install.log + report_error ${LINENO} \ + "cmake installation for ARCH=${OPENBLAS_ARCH} is not supported. You can try to use the system installation using the flag --with-cmake=system instead." + exit 1 fi - write_checksums "${install_lock_file}" "${SCRIPT_DIR}/stage0/$(basename ${SCRIPT_NAME})" - fi - fi - ;; - __SYSTEM__) - echo "==================== Finding CMake from system paths ====================" - check_command cmake "cmake" - ;; - __DONTUSE__) - # Nothing to do - ;; - *) - echo "==================== Linking CMake to user paths ====================" - pkg_install_dir="$with_cmake" - check_dir "${with_cmake}/bin" - ;; + pkg_install_dir="${INSTALLDIR}/cmake-${cmake_ver}" + #pkg_install_dir="${HOME}/apps/cmake/${cmake_ver}" + install_lock_file="$pkg_install_dir/install_successful" + cmake_pkg="cmake-${cmake_ver}-${cmake_arch}.${cmake_ext}" + if verify_checksums "${install_lock_file}"; then + echo "cmake-${cmake_ver} is already installed, skipping it." + else + if [ -f $cmake_pkg ]; then + echo "$cmake_pkg is found" + else + #download_pkg_from_ABACUS_org "${cmake_sha256}" "$cmake_pkg" + url="https://cmake.org/files/v${cmake_ver%.*}/${cmake_pkg}" + download_pkg_from_url "${cmake_sha256}" "${cmake_pkg}" "${url}" + fi + if [ "${PACK_RUN}" = "__TRUE__" ]; then + echo "--pack-run mode specified, skip installation" + exit 0 + fi + echo "Installing from scratch into ${pkg_install_dir}" + mkdir -p ${pkg_install_dir} + if [ "${cmake_arch}" = "macos-universal" ]; then + tar --strip-components=3 -xvf $cmake_pkg -C ${pkg_install_dir} > install.log 2>&1 || tail -n ${LOG_LINES} install.log + else + /bin/sh $cmake_pkg --prefix=${pkg_install_dir} --skip-license > install.log 2>&1 || tail -n ${LOG_LINES} install.log + fi + write_checksums "${install_lock_file}" "${SCRIPT_DIR}/stage0/$(basename ${SCRIPT_NAME})" + fi + ;; + __SYSTEM__) + echo "==================== Finding CMake from system paths ====================" + if [ "${PACK_RUN}" = "__TRUE__" ]; then + echo "--pack-run mode specified, skip system check" + exit 0 + fi + check_command cmake "cmake" + ;; + __DONTUSE__) + # Nothing to do + ;; + *) + echo "==================== Linking CMake to user paths ====================" + pkg_install_dir="$with_cmake" + check_dir "${with_cmake}/bin" + ;; esac if [ "${with_cmake}" != "__DONTUSE__" ]; then - if [ "${with_cmake}" != "__SYSTEM__" ]; then - cat << EOF > "${BUILDDIR}/setup_cmake" + if [ "${with_cmake}" != "__SYSTEM__" ]; then + cat << EOF > "${BUILDDIR}/setup_cmake" prepend_path PATH "${pkg_install_dir}/bin" export PATH="${pkg_install_dir}/bin":\${PATH} EOF - cat "${BUILDDIR}/setup_cmake" >> $SETUPFILE - fi + cat "${BUILDDIR}/setup_cmake" >> $SETUPFILE + fi fi load "${BUILDDIR}/setup_cmake" diff --git a/toolchain/scripts/stage0/install_gcc.sh b/toolchain/scripts/stage0/install_gcc.sh index 65e9d93aa1..7930d6a9f7 100755 --- a/toolchain/scripts/stage0/install_gcc.sh +++ b/toolchain/scripts/stage0/install_gcc.sh @@ -7,16 +7,30 @@ [ "${BASH_SOURCE[0]}" ] && SCRIPT_NAME="${BASH_SOURCE[0]}" || SCRIPT_NAME=$0 SCRIPT_DIR="$(cd "$(dirname "$SCRIPT_NAME")/.." && pwd -P)" -# gcc 13 is good -gcc_ver="13.2.0" -gcc_sha256="8cb4be3796651976f94b9356fa08d833524f62420d6292c5033a9a26af315078" -# use gcc 14 with caution, do not compatible with GPU-ABACUS -#gcc_ver="14.2.0" -#gcc_sha256="7d376d445f93126dc545e2c0086d0f647c3094aae081cdb78f42ce2bc25e7293" source "${SCRIPT_DIR}"/common_vars.sh source "${SCRIPT_DIR}"/tool_kit.sh source "${SCRIPT_DIR}"/signal_trap.sh +source "${SCRIPT_DIR}"/package_versions.sh + +# Load GCC package variables with version suffix support +# Check for version configuration from environment or individual package setting +version_suffix="" +if [[ -n "${ABACUS_TOOLCHAIN_PACKAGE_VERSIONS}" ]]; then + # Check for individual package version override + if echo "${ABACUS_TOOLCHAIN_PACKAGE_VERSIONS}" | grep -q "gcc:alt"; then + version_suffix="alt" + elif echo "${ABACUS_TOOLCHAIN_PACKAGE_VERSIONS}" | grep -q "gcc:main"; then + version_suffix="main" + fi +fi +# Fall back to global version suffix if no individual setting +if [[ -z "$version_suffix" && -n "${ABACUS_TOOLCHAIN_VERSION_SUFFIX}" ]]; then + version_suffix="${ABACUS_TOOLCHAIN_VERSION_SUFFIX}" +fi +# Load package variables with appropriate version +load_package_vars "gcc" "$version_suffix" + source "${INSTALLDIR}"/toolchain.conf source "${INSTALLDIR}"/toolchain.env @@ -29,101 +43,127 @@ TSANFLAGS="" cd "${BUILDDIR}" case "${with_gcc}" in - __INSTALL__) - echo "==================== Installing GCC ====================" - pkg_install_dir="${INSTALLDIR}/gcc-${gcc_ver}" - #pkg_install_dir="${HOME}/apps/gcc/${gcc_ver}" - install_lock_file="$pkg_install_dir/install_successful" - if verify_checksums "${install_lock_file}"; then - echo "gcc-${gcc_ver} is already installed, skipping it." - else - if [ -f gcc-${gcc_ver}.tar.gz ]; then - echo "gcc-${gcc_ver}.tar.gz is found" - else - #download_pkg_from_ABACUS_org "${gcc_sha256}" "gcc-${gcc_ver}.tar.gz" - url=https://mirrors.tuna.tsinghua.edu.cn/gnu/gcc/gcc-${gcc_ver}/gcc-${gcc_ver}.tar.gz - download_pkg_from_url "${gcc_sha256}" "gcc-${gcc_ver}.tar.gz" "${url}" - fi - if [ "${PACK_RUN}" = "__TRUE__" ]; then - echo "--pack-run mode specified, skip installation" - else - [ -d gcc-${gcc_ver} ] && rm -rf gcc-${gcc_ver} - tar -xzf gcc-${gcc_ver}.tar.gz - - echo "Installing GCC from scratch into ${pkg_install_dir}" - cd gcc-${gcc_ver} - - # Download prerequisites from cp2k.org because gcc.gnu.org returns 403 when queried from GCP. - sed -i 's|http://gcc.gnu.org/pub/gcc/infrastructure/|https://cp2k.org/static/downloads/|' ./contrib/download_prerequisites - ./contrib/download_prerequisites > prereq.log 2>&1 || tail -n ${LOG_LINES} prereq.log - GCCROOT=${PWD} - mkdir obj - cd obj - # TODO: Maybe use --disable-libquadmath-support to improve static linking: - # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=46539 - # - # TODO: Maybe use --disable-gnu-unique-object to improve static linking: - # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=60348#c13 - # https://stackoverflow.com/questions/11931420 - # - # TODO: Unfortunately, we can not simply use --disable-shared, because - # it would break OpenBLAS build and probably others too. - COMMON_FLAGS="-O2 -fPIC -fno-omit-frame-pointer -fopenmp -g" - CFLAGS="${COMMON_FLAGS}" - CXXFLAGS="${CFLAGS}" - FCFLAGS="${COMMON_FLAGS} -fbacktrace" - ${GCCROOT}/configure --prefix="${pkg_install_dir}" \ - --libdir="${pkg_install_dir}/lib" \ - --enable-languages=c,c++,fortran \ - --disable-multilib --disable-bootstrap \ - --enable-lto \ - --enable-plugins \ - > configure.log 2>&1 || tail -n ${LOG_LINES} configure.log - make -j $(get_nprocs) \ - CFLAGS="${CFLAGS}" \ - CXXFLAGS="${CXXFLAGS}" \ - FCFLAGS="${FCFLAGS}" \ - > make.log 2>&1 || tail -n ${LOG_LINES} make.log - make -j $(get_nprocs) install > install.log 2>&1 || tail -n ${LOG_LINES} install.log - # thread sanitizer - if [ ${ENABLE_TSAN} = "__TRUE__" ]; then - # now the tricky bit... we need to recompile in particular - # libgomp with -fsanitize=thread.. there is not configure - # option for this (as far as I know). we need to go in - # the build tree and recompile / reinstall with proper - # options... this is likely to break for later version of - # gcc, tested with 5.1.0 based on - # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=55374#c10 - cd x86_64*/libgfortran - make clean > clean.log 2>&1 || tail -n ${LOG_LINES} clean.log - CFLAGS="${CFLAGS} -fsanitize=thread" - CXXFLAGS="${CXXFLAGS} -fsanitize=thread" - FCFLAGS="${FCFLAGS} -fsanitize=thread" - make -j $(get_nprocs) \ - CFLAGS="${CFLAGS}" \ - CXXFLAGS="${CXXFLAGS}" \ - FCFLAGS="${FCFLAGS}" \ - LDFLAGS="-B$(pwd)/../libsanitizer/tsan/.libs/ -Wl,-rpath,$(pwd)/../libsanitizer/tsan/.libs/ -fsanitize=thread" \ - > make.log 2>&1 || tail -n ${LOG_LINES} make.log - make install > install.log 2>&1 || tail -n ${LOG_LINES} install.log - cd ../libgomp - make clean > clean.log 2>&1 || tail -n ${LOG_LINES} clean.log - make -j $(get_nprocs) \ - CFLAGS="${CFLAGS}" \ - CXXFLAGS="${CXXFLAGS}" \ - FCFLAGS="${FCFLAGS}" \ - LDFLAGS="-B$(pwd)/../libsanitizer/tsan/.libs/ -Wl,-rpath,$(pwd)/../libsanitizer/tsan/.libs/ -fsanitize=thread" \ - > make.log 2>&1 || tail -n ${LOG_LINES} make.log - make install > install.log 2>&1 || tail -n ${LOG_LINES} install.log - cd ${GCCROOT}/obj/ - fi - cd ../.. - write_checksums "${install_lock_file}" "${SCRIPT_DIR}/stage0/$(basename ${SCRIPT_NAME})" - fi - fi - if [ "${PACK_RUN}" = "__TRUE__" ]; then - echo "--pack-run mode specified, skip system check" - else + __INSTALL__) + echo "==================== Installing GCC ====================" + pkg_install_dir="${INSTALLDIR}/gcc-${gcc_ver}" + repack_filename="gcc-${gcc_ver}-with-prereq.tar.gz" + repkg_install_dir="${INSTALLDIR}/${repack_filename}" + #pkg_install_dir="${HOME}/apps/gcc/${gcc_ver}" + install_lock_file="$pkg_install_dir/install_successful" + if verify_checksums "${install_lock_file}"; then + echo "gcc-${gcc_ver} is already installed, skipping it." + else + # Check if repackaged tarball exists for offline installation + if [ -f "${repack_filename}" ]; then + echo "${repack_filename} is found, extracting it..." + tar -xzf "${repack_filename}" + echo "Successfully extracted ${repack_filename}" + else + if [ -f gcc-${gcc_ver}.tar.gz ]; then + echo "gcc-${gcc_ver}.tar.gz is found" + else + #download_pkg_from_ABACUS_org "${gcc_sha256}" "gcc-${gcc_ver}.tar.gz" + url=https://mirrors.tuna.tsinghua.edu.cn/gnu/gcc/gcc-${gcc_ver}/gcc-${gcc_ver}.tar.gz + download_pkg_from_url "${gcc_sha256}" "gcc-${gcc_ver}.tar.gz" "${url}" + fi + fi + [ -d gcc-${gcc_ver} ] && rm -rf gcc-${gcc_ver} + tar -xzf gcc-${gcc_ver}.tar.gz + + echo "Installing GCC from scratch into ${pkg_install_dir}" + cd gcc-${gcc_ver} + + # Check network connectivity before downloading prerequisites + if curl -s --connect-timeout 5 https://gcc.gnu.org > /dev/null 2>&1; then + echo "Downloading prerequisites from official GCC site..." + # Try official site first + if ./contrib/download_prerequisites > prereq.log 2>&1; then + echo "Prerequisites downloaded successfully from official site" + else + echo "Official site failed, trying mirror site..." + # Fallback to cp2k.org mirror + sed -i 's|http://gcc.gnu.org/pub/gcc/infrastructure/|https://cp2k.org/static/downloads/|' ./contrib/download_prerequisites + ./contrib/download_prerequisites > prereq.log 2>&1 || tail -n ${LOG_LINES} prereq.log + fi + else + echo "Network unavailable, skipping prerequisites download (offline mode)" + fi + + if [ "${PACK_RUN}" = "__TRUE__" ]; then + echo "--pack-run mode: repackaging GCC with prerequisites for offline installation" + cd .. + # Create a new tarball with prerequisites included + repack_filename="gcc-${gcc_ver}-with-prereq.tar.gz" + echo "Creating ${repack_filename}..." + tar -czf "${repack_filename}" gcc-${gcc_ver}/ + echo "Successfully created ${repack_filename} for offline installation" + echo "This package contains GCC source code with all prerequisites ready for offline build" + exit 0 + fi + GCCROOT=${PWD} + mkdir obj + cd obj + # TODO: Maybe use --disable-libquadmath-support to improve static linking: + # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=46539 + # + # TODO: Maybe use --disable-gnu-unique-object to improve static linking: + # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=60348#c13 + # https://stackoverflow.com/questions/11931420 + # + # TODO: Unfortunately, we can not simply use --disable-shared, because + # it would break OpenBLAS build and probably others too. + COMMON_FLAGS="-O2 -fPIC -fno-omit-frame-pointer -fopenmp -g" + CFLAGS="${COMMON_FLAGS}" + CXXFLAGS="${CFLAGS}" + FCFLAGS="${COMMON_FLAGS} -fbacktrace" + ${GCCROOT}/configure --prefix="${pkg_install_dir}" \ + --libdir="${pkg_install_dir}/lib" \ + --enable-languages=c,c++,fortran \ + --disable-multilib --disable-bootstrap \ + --enable-lto \ + --enable-plugins \ + > configure.log 2>&1 || tail -n ${LOG_LINES} configure.log + make -j $(get_nprocs) \ + CFLAGS="${CFLAGS}" \ + CXXFLAGS="${CXXFLAGS}" \ + FCFLAGS="${FCFLAGS}" \ + > make.log 2>&1 || tail -n ${LOG_LINES} make.log + make -j $(get_nprocs) install > install.log 2>&1 || tail -n ${LOG_LINES} install.log + # thread sanitizer + if [ "${ENABLE_TSAN}" = "__TRUE__" ]; then + # now the tricky bit... we need to recompile in particular + # libgomp with -fsanitize=thread.. there is not configure + # option for this (as far as I know). we need to go in + # the build tree and recompile / reinstall with proper + # options... this is likely to break for later version of + # gcc, tested with 5.1.0 based on + # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=55374#c10 + cd x86_64*/libgfortran + make clean > clean.log 2>&1 || tail -n ${LOG_LINES} clean.log + CFLAGS="${CFLAGS} -fsanitize=thread" + CXXFLAGS="${CXXFLAGS} -fsanitize=thread" + FCFLAGS="${FCFLAGS} -fsanitize=thread" + make -j $(get_nprocs) \ + CFLAGS="${CFLAGS}" \ + CXXFLAGS="${CXXFLAGS}" \ + FCFLAGS="${FCFLAGS}" \ + LDFLAGS="-B$(pwd)/../libsanitizer/tsan/.libs/ -Wl,-rpath,$(pwd)/../libsanitizer/tsan/.libs/ -fsanitize=thread" \ + > make.log 2>&1 || tail -n ${LOG_LINES} make.log + make install > install.log 2>&1 || tail -n ${LOG_LINES} install.log + cd ../libgomp + make clean > clean.log 2>&1 || tail -n ${LOG_LINES} clean.log + make -j $(get_nprocs) \ + CFLAGS="${CFLAGS}" \ + CXXFLAGS="${CXXFLAGS}" \ + FCFLAGS="${FCFLAGS}" \ + LDFLAGS="-B$(pwd)/../libsanitizer/tsan/.libs/ -Wl,-rpath,$(pwd)/../libsanitizer/tsan/.libs/ -fsanitize=thread" \ + > make.log 2>&1 || tail -n ${LOG_LINES} make.log + make install > install.log 2>&1 || tail -n ${LOG_LINES} install.log + cd ${GCCROOT}/obj/ + fi + cd ../.. + write_checksums "${install_lock_file}" "${SCRIPT_DIR}/stage0/$(basename ${SCRIPT_NAME})" + fi check_install ${pkg_install_dir}/bin/gcc "gcc" && CC="${pkg_install_dir}/bin/gcc" || exit 1 check_install ${pkg_install_dir}/bin/g++ "gcc" && CXX="${pkg_install_dir}/bin/g++" || exit 1 check_install ${pkg_install_dir}/bin/gfortran "gcc" && FC="${pkg_install_dir}/bin/gfortran" || exit 1 @@ -131,52 +171,55 @@ case "${with_gcc}" in F77="${FC}" GCC_CFLAGS="-I'${pkg_install_dir}/include'" GCC_LDFLAGS="-L'${pkg_install_dir}/lib64' -L'${pkg_install_dir}/lib' -Wl,-rpath,'${pkg_install_dir}/lib64' -Wl,-rpath,'${pkg_install_dir}/lib64'" - fi - ;; - __SYSTEM__) - echo "==================== Finding GCC from system paths ====================" - check_command gcc "gcc" && CC="$(command -v gcc)" || exit 1 - check_command g++ "gcc" && CXX="$(command -v g++)" || exit 1 - check_command gfortran "gcc" && FC="$(command -v gfortran)" || exit 1 - F90="${FC}" - F77="${FC}" - add_include_from_paths -p GCC_CFLAGS "c++" ${INCLUDE_PATHS} - add_lib_from_paths GCC_LDFLAGS "libgfortran.*" ${LIB_PATHS} - ;; - __DONTUSE__) - # Nothing to do - ;; - *) - echo "==================== Linking GCC to user paths ====================" - pkg_install_dir="${with_gcc}" - check_dir "${pkg_install_dir}/bin" - check_dir "${pkg_install_dir}/lib" - check_dir "${pkg_install_dir}/lib64" - check_dir "${pkg_install_dir}/include" - check_command ${pkg_install_dir}/bin/gcc "gcc" && CC="${pkg_install_dir}/bin/gcc" || exit 1 - check_command ${pkg_install_dir}/bin/g++ "gcc" && CXX="${pkg_install_dir}/bin/g++" || exit 1 - check_command ${pkg_install_dir}/bin/gfortran "gcc" && FC="${pkg_install_dir}/bin/gfortran" || exit 1 - F90="${FC}" - F77="${FC}" - GCC_CFLAGS="-I'${pkg_install_dir}/include'" - GCC_LDFLAGS="-L'${pkg_install_dir}/lib64' -L'${pkg_install_dir}/lib' -Wl,-rpath,'${pkg_install_dir}/lib64' -Wl,-rpath,'${pkg_install_dir}/lib64'" - ;; + ;; + __SYSTEM__) + if [ "${PACK_RUN}" = "__TRUE__" ]; then + echo "--pack-run mode specified, skip system check" + exit 0 + fi + echo "==================== Finding GCC from system paths ====================" + check_command gcc "gcc" && CC="$(command -v gcc)" || exit 1 + check_command g++ "gcc" && CXX="$(command -v g++)" || exit 1 + check_command gfortran "gcc" && FC="$(command -v gfortran)" || exit 1 + F90="${FC}" + F77="${FC}" + add_include_from_paths -p GCC_CFLAGS "c++" ${INCLUDE_PATHS} + add_lib_from_paths GCC_LDFLAGS "libgfortran.*" ${LIB_PATHS} + ;; + __DONTUSE__) + # Nothing to do + ;; + *) + echo "==================== Linking GCC to user paths ====================" + pkg_install_dir="${with_gcc}" + check_dir "${pkg_install_dir}/bin" + check_dir "${pkg_install_dir}/lib" + check_dir "${pkg_install_dir}/lib64" + check_dir "${pkg_install_dir}/include" + check_command ${pkg_install_dir}/bin/gcc "gcc" && CC="${pkg_install_dir}/bin/gcc" || exit 1 + check_command ${pkg_install_dir}/bin/g++ "gcc" && CXX="${pkg_install_dir}/bin/g++" || exit 1 + check_command ${pkg_install_dir}/bin/gfortran "gcc" && FC="${pkg_install_dir}/bin/gfortran" || exit 1 + F90="${FC}" + F77="${FC}" + GCC_CFLAGS="-I'${pkg_install_dir}/include'" + GCC_LDFLAGS="-L'${pkg_install_dir}/lib64' -L'${pkg_install_dir}/lib' -Wl,-rpath,'${pkg_install_dir}/lib64' -Wl,-rpath,'${pkg_install_dir}/lib64'" + ;; esac if [ "${ENABLE_TSAN}" = "__TRUE__" ]; then - TSANFLAGS="-fsanitize=thread" + TSANFLAGS="-fsanitize=thread" else - TSANFLAGS="" + TSANFLAGS="" fi if [ "${with_gcc}" != "__DONTUSE__" ]; then - cat << EOF > "${BUILDDIR}/setup_gcc" + cat << EOF > "${BUILDDIR}/setup_gcc" export CC="${CC}" export CXX="${CXX}" export FC="${FC}" export F90="${F90}" export F77="${F77}" EOF - if [ "${with_gcc}" != "__SYSTEM__" ]; then - cat << EOF >> "${BUILDDIR}/setup_gcc" + if [ "${with_gcc}" != "__SYSTEM__" ]; then + cat << EOF >> "${BUILDDIR}/setup_gcc" # needs full path for mpich/openmpi builds, triggers openblas bug prepend_path PATH "${pkg_install_dir}/bin" prepend_path LD_LIBRARY_PATH "${pkg_install_dir}/lib" @@ -194,13 +237,13 @@ export LIBRARY_PATH="${pkg_install_dir}/lib":\${LIBRARY_PATH} export LIBRARY_PATH="${pkg_install_dir}/lib64":\${LIBRARY_PATH} export CPATH="${pkg_install_dir}/include":\${CPATH} EOF - fi - cat << EOF >> "${BUILDDIR}/setup_gcc" + fi + cat << EOF >> "${BUILDDIR}/setup_gcc" export GCC_CFLAGS="${GCC_CFLAGS}" export GCC_LDFLAGS="${GCC_LDFLAGS}" export TSANFLAGS="${TSANFLAGS}" EOF - cat "${BUILDDIR}/setup_gcc" >> ${SETUPFILE} + cat "${BUILDDIR}/setup_gcc" >> ${SETUPFILE} fi # ---------------------------------------------------------------------- diff --git a/toolchain/scripts/stage0/install_intel.sh b/toolchain/scripts/stage0/install_intel.sh index afec2e312f..53ef5527ea 100755 --- a/toolchain/scripts/stage0/install_intel.sh +++ b/toolchain/scripts/stage0/install_intel.sh @@ -23,95 +23,87 @@ mkdir -p "${BUILDDIR}" cd "${BUILDDIR}" case "${with_intel}" in - __INSTALL__) - echo "==================== Installing the Intel compiler ====================" - echo "__INSTALL__ is not supported; please install the Intel compiler manually" - if [ "${PACK_RUN}" != "__TRUE__" ]; then + __INSTALL__) + echo "==================== Installing the Intel compiler ====================" + report_error ${LINENO} "To install the Intel compiler, please contact your system administrator." exit 1 - fi - exit 1 - ;; - __SYSTEM__) - echo "==================== Finding Intel compiler from system paths ====================" - if [ "${PACK_RUN}" = "__TRUE__" ]; then - echo "--pack-run mode specified, skip system check" - else - if [ "${intel_classic}" = "yes" ]; then - check_command icc "intel" && CC="$(realpath $(command -v icc))" || exit 1 - check_command icpc "intel" && CXX="$(realpath $(command -v icpc))" || exit 1 - check_command ifort "intel" && FC="$(realpath $(command -v ifort))" || exit 1 - else - check_command icx "intel" && CC="$(realpath $(command -v icx))" || exit 1 - check_command icpx "intel" && CXX="$(realpath $(command -v icpx))" || exit 1 - if [ "${WITH_IFX}" = "yes" ]; then - check_command ifx "intel" && FC="$(realpath $(command -v ifx))" || exit 1 - else - check_command ifort "intel" && FC="$(realpath $(command -v ifort))" || exit 1 - fi - fi - fi - F90="${FC}" - F77="${FC}" - ;; - __DONTUSE__) - # Nothing to do - ;; - *) - echo "==================== Linking Intel compiler to user paths ====================" - pkg_install_dir="${with_intel}" - check_dir "${pkg_install_dir}/bin" - check_dir "${pkg_install_dir}/lib" - check_dir "${pkg_install_dir}/include" - if [ "${intel_classic}" = "yes" ]; then - check_command ${pkg_install_dir}/bin/icc "intel" && CC="${pkg_install_dir}/bin/icc" || exit 1 - check_command ${pkg_install_dir}/bin/icpc "intel" && CXX="${pkg_install_dir}/bin/icpc" || exit 1 - check_command ${pkg_install_dir}/bin/ifort "intel" && FC="${pkg_install_dir}/bin/ifort" || exit 1 - else - check_command ${pkg_install_dir}/bin/icx "intel" && CC="${pkg_install_dir}/bin/icx" || exit 1 - check_command ${pkg_install_dir}/bin/icpx "intel" && CXX="${pkg_install_dir}/bin/icpx" || exit 1 - if [ "${WITH_IFX}" = "yes" ]; then - check_command ${pkg_install_dir}/bin/ifx "intel" && FC="${pkg_install_dir}/bin/ifx" || exit 1 - else - check_command ${pkg_install_dir}/bin/ifort "intel" && FC="${pkg_install_dir}/bin/ifort" || exit 1 - fi - fi - F90="${FC}" - F77="${FC}" - INTEL_CFLAGS="-I'${pkg_install_dir}/include'" - INTEL_LDFLAGS="-L'${pkg_install_dir}/lib' -Wl,-rpath,'${pkg_install_dir}/lib'" - ;; + ;; + __SYSTEM__) + echo "==================== Finding Intel compiler from system paths ====================" + if [ "${PACK_RUN}" = "__TRUE__" ]; then + echo "--pack-run mode specified, skip system check" + exit 0 + fi + if [ "${intel_classic}" = "yes" ]; then + check_command icc "intel" && CC="$(realpath $(command -v icc))" || exit 1 + check_command icpc "intel" && CXX="$(realpath $(command -v icpc))" || exit 1 + check_command ifort "intel" && FC="$(realpath $(command -v ifort))" || exit 1 + else + check_command icx "intel" && CC="$(realpath $(command -v icx))" || exit 1 + check_command icpx "intel" && CXX="$(realpath $(command -v icpx))" || exit 1 + if [ "${WITH_IFX}" = "yes" ]; then + check_command ifx "intel" && FC="$(realpath $(command -v ifx))" || exit 1 + else + check_command ifort "intel" && FC="$(realpath $(command -v ifort))" || exit 1 + fi + fi + F90="${FC}" + F77="${FC}" + ;; + __DONTUSE__) + # Nothing to do + ;; + *) + echo "==================== Linking Intel compiler to user paths ====================" + pkg_install_dir="${with_intel}" + check_dir "${pkg_install_dir}/bin" + check_dir "${pkg_install_dir}/lib" + check_dir "${pkg_install_dir}/include" + if [ "${intel_classic}" = "yes" ]; then + check_command ${pkg_install_dir}/bin/icc "intel" && CC="${pkg_install_dir}/bin/icc" || exit 1 + check_command ${pkg_install_dir}/bin/icpc "intel" && CXX="${pkg_install_dir}/bin/icpc" || exit 1 + check_command ${pkg_install_dir}/bin/ifort "intel" && FC="${pkg_install_dir}/bin/ifort" || exit 1 + else + check_command ${pkg_install_dir}/bin/icx "intel" && CC="${pkg_install_dir}/bin/icx" || exit 1 + check_command ${pkg_install_dir}/bin/icpx "intel" && CXX="${pkg_install_dir}/bin/icpx" || exit 1 + if [ "${WITH_IFX}" = "yes" ]; then + check_command ${pkg_install_dir}/bin/ifx "intel" && FC="${pkg_install_dir}/bin/ifx" || exit 1 + else + check_command ${pkg_install_dir}/bin/ifort "intel" && FC="${pkg_install_dir}/bin/ifort" || exit 1 + fi + fi + F90="${FC}" + F77="${FC}" + INTEL_CFLAGS="-I'${pkg_install_dir}/include'" + INTEL_LDFLAGS="-L'${pkg_install_dir}/lib' -Wl,-rpath,'${pkg_install_dir}/lib'" + ;; esac if [ "${with_intel}" != "__DONTUSE__" ]; then - echo "CC is ${CC}" - echo "CXX is ${CXX}" - echo "FC is ${FC}" - cat << EOF > "${BUILDDIR}/setup_intel" + echo "CC is ${CC}" + echo "CXX is ${CXX}" + echo "FC is ${FC}" + cat << EOF > "${BUILDDIR}/setup_intel" export CC="${CC}" export CXX="${CXX}" export FC="${FC}" export F90="${F90}" export F77="${F77}" EOF - if [ "${with_intel}" != "__SYSTEM__" ]; then - cat << EOF >> "${BUILDDIR}/setup_intel" + if [ "${with_intel}" != "__SYSTEM__" ]; then + cat << EOF >> "${BUILDDIR}/setup_intel" prepend_path PATH "${pkg_install_dir}/bin" prepend_path LD_LIBRARY_PATH "${pkg_install_dir}/lib" prepend_path LD_RUN_PATH "${pkg_install_dir}/lib" prepend_path LIBRARY_PATH "${pkg_install_dir}/lib" prepend_path CPATH "${pkg_install_dir}/include" -export PATH="${pkg_install_dir}/bin":\${PATH} -export LD_LIBRARY_PATH="${pkg_install_dir}/lib":\${LD_LIBRARY_PATH} -export LD_RUN_PATH="${pkg_install_dir}/lib":\${LD_RUN_PATH} -export LIBRARY_PATH="${pkg_install_dir}/lib":\${LIBRARY_PATH} -export CPATH="${pkg_install_dir}/include":\${CPATH} EOF - fi - cat << EOF >> "${BUILDDIR}/setup_intel" + fi + cat << EOF >> "${BUILDDIR}/setup_intel" export INTEL_CFLAGS="${INTEL_CFLAGS}" export INTEL_LDFLAGS="${INTEL_LDFLAGS}" export INTEL_LIBS="${INTEL_LIBS}" EOF - cat "${BUILDDIR}/setup_intel" >> ${SETUPFILE} + cat "${BUILDDIR}/setup_intel" >> ${SETUPFILE} fi load "${BUILDDIR}/setup_intel" diff --git a/toolchain/scripts/stage1/install_intelmpi.sh b/toolchain/scripts/stage1/install_intelmpi.sh index 0c350f69ae..5f311c4b5e 100755 --- a/toolchain/scripts/stage1/install_intelmpi.sh +++ b/toolchain/scripts/stage1/install_intelmpi.sh @@ -24,107 +24,105 @@ mkdir -p "${BUILDDIR}" cd "${BUILDDIR}" case "${with_intelmpi}" in - __INSTALL__) - echo "==================== Installing Intel MPI ====================" - echo '__INSTALL__ is not supported; please manually install Intel MPI' - if [ "${PACK_RUN}" != "__TRUE__" ]; then + __INSTALL__) + echo "==================== Installing Intel MPI ====================" + report_error ${LINENO} "To install Intel MPI, please contact your system administrator." exit 1 - fi - ;; - __SYSTEM__) - echo "==================== Finding Intel MPI from system paths ====================" - if [ "${PACK_RUN}" = "__TRUE__" ]; then - echo "--pack-run mode specified, skip system check" - else - check_command mpiexec "intelmpi" && MPIRUN="$(realpath $(command -v mpiexec))" - if [ "${intel_classic}" = "yes" ]; then - # if intel compiler used as classic, so as intelmpi - export INTELMPI_CLASSIC="yes" - fi - if [ "${with_intel}" != "__DONTUSE__" ]; then - if [ "${INTELMPI_CLASSIC}" = "yes" ]; then - check_command mpiicc "intelmpi" && MPICC="$(realpath $(command -v mpiicc))" || exit 1 - check_command mpiicpc "intelmpi" && MPICXX="$(realpath $(command -v mpiicpc))" || exit 1 - check_command mpiifort "intelmpi" && MPIFC="$(realpath $(command -v mpiifort))" || exit 1 + ;; + __SYSTEM__) + echo "==================== Finding Intel MPI from system paths ====================" + if [ "${PACK_RUN}" = "__TRUE__" ]; then + echo "--pack-run mode specified, skip system check" else - check_command mpiicx "intelmpi" && MPICC="$(realpath $(command -v mpiicx))" || exit 1 - check_command mpiicpx "intelmpi" && MPICXX="$(realpath $(command -v mpiicpx))" || exit 1 - if [ "${WITH_IFX}" == "yes" ]; then - check_command mpiifx "intelmpi" && MPIFC="$(realpath $(command -v mpiifx))" || exit 1 + check_command mpiexec "intelmpi" && MPIRUN="$(realpath $(command -v mpiexec))" + if [ "${intel_classic}" = "yes" ]; then + # if intel compiler used as classic, so as intelmpi + export INTELMPI_CLASSIC="yes" + fi + if [ "${with_intel}" != "__DONTUSE__" ]; then + if [ "${INTELMPI_CLASSIC}" = "yes" ]; then + check_command mpiicc "intelmpi" && MPICC="$(realpath $(command -v mpiicc))" || exit 1 + check_command mpiicpc "intelmpi" && MPICXX="$(realpath $(command -v mpiicpc))" || exit 1 + check_command mpiifort "intelmpi" && MPIFC="$(realpath $(command -v mpiifort))" || exit 1 + else + check_command mpiicx "intelmpi" && MPICC="$(realpath $(command -v mpiicx))" || exit 1 + check_command mpiicpx "intelmpi" && MPICXX="$(realpath $(command -v mpiicpx))" || exit 1 + if [ "${WITH_IFX}" == "yes" ]; then + check_command mpiifx "intelmpi" && MPIFC="$(realpath $(command -v mpiifx))" || exit 1 + else + check_command mpiifort "intelmpi" && MPIFC="$(realpath $(command -v mpiifort))" || exit 1 + fi + fi else - check_command mpiifort "intelmpi" && MPIFC="$(realpath $(command -v mpiifort))" || exit 1 + echo "The use of Intel MPI is only supported with the Intel compiler" + exit 1 fi + MPIFORT="${MPIFC}" + MPIF77="${MPIFC}" + # include path is already handled by compiler wrapper scripts (can cause wrong mpi.mod with GNU Fortran) + # add_include_from_paths INTELMPI_CFLAGS "mpi.h" $INCLUDE_PATHS + add_lib_from_paths INTELMPI_LDFLAGS "libmpi.*" $LIB_PATHS + check_lib -lmpi "intelmpi" + check_lib -lmpicxx "intelmpi" fi - else - echo "The use of Intel MPI is only supported with the Intel compiler" - exit 1 - fi - MPIFORT="${MPIFC}" - MPIF77="${MPIFC}" - # include path is already handled by compiler wrapper scripts (can cause wrong mpi.mod with GNU Fortran) - # add_include_from_paths INTELMPI_CFLAGS "mpi.h" $INCLUDE_PATHS - add_lib_from_paths INTELMPI_LDFLAGS "libmpi.*" $LIB_PATHS - check_lib -lmpi "intelmpi" - check_lib -lmpicxx "intelmpi" - fi - ;; - __DONTUSE__) - # Nothing to do - ;; - *) - echo "==================== Linking INTELMPI to user paths ====================" - pkg_install_dir="${with_intelmpi}" - check_dir "${pkg_install_dir}/bin" - check_dir "${pkg_install_dir}/lib" - check_dir "${pkg_install_dir}/include" - check_command ${pkg_install_dir}/bin/mpiexec "intel" && MPIRUN="${pkg_install_dir}/bin/mpiexec" || exit 1 - if [ "${with_intel}" != "__DONTUSE__" ]; then - if [ "${INTELMPI_CLASSIC}" = "yes" ]; then - check_command ${pkg_install_dir}/bin/mpiicc "intel" && MPICC="${pkg_install_dir}/bin/mpiicc" || exit 1 - check_command ${pkg_install_dir}/bin/mpiicpc "intel" && MPICXX="${pkg_install_dir}/bin/mpiicpc" || exit 1 - check_command ${pkg_install_dir}/bin/mpiifort "intel" && MPIFC="${pkg_install_dir}/bin/mpiifort" || exit 1 - else - check_command ${pkg_install_dir}/bin/mpiicx "intel" && MPICC="${pkg_install_dir}/bin/mpiicx" || exit 1 - check_command ${pkg_install_dir}/bin/mpiicpx "intel" && MPICXX="${pkg_install_dir}/bin/mpiicpx" || exit 1 - if [ "${WITH_IFX}" = "yes" ]; then - check_command ${pkg_install_dir}/bin/mpiifx "intel" && MPIFC="${pkg_install_dir}/bin/mpiifx" || exit 1 - else + ;; + __DONTUSE__) + # Nothing to do + ;; + *) + echo "==================== Linking INTELMPI to user paths ====================" + pkg_install_dir="${with_intelmpi}" + check_dir "${pkg_install_dir}/bin" + check_dir "${pkg_install_dir}/lib" + check_dir "${pkg_install_dir}/include" + check_command ${pkg_install_dir}/bin/mpiexec "intel" && MPIRUN="${pkg_install_dir}/bin/mpiexec" || exit 1 + if [ "${with_intel}" != "__DONTUSE__" ]; then + if [ "${INTELMPI_CLASSIC}" = "yes" ]; then + check_command ${pkg_install_dir}/bin/mpiicc "intel" && MPICC="${pkg_install_dir}/bin/mpiicc" || exit 1 + check_command ${pkg_install_dir}/bin/mpiicpc "intel" && MPICXX="${pkg_install_dir}/bin/mpiicpc" || exit 1 check_command ${pkg_install_dir}/bin/mpiifort "intel" && MPIFC="${pkg_install_dir}/bin/mpiifort" || exit 1 + else + check_command ${pkg_install_dir}/bin/mpiicx "intel" && MPICC="${pkg_install_dir}/bin/mpiicx" || exit 1 + check_command ${pkg_install_dir}/bin/mpiicpx "intel" && MPICXX="${pkg_install_dir}/bin/mpiicpx" || exit 1 + if [ "${WITH_IFX}" = "yes" ]; then + check_command ${pkg_install_dir}/bin/mpiifx "intel" && MPIFC="${pkg_install_dir}/bin/mpiifx" || exit 1 + else + check_command ${pkg_install_dir}/bin/mpiifort "intel" && MPIFC="${pkg_install_dir}/bin/mpiifort" || exit 1 + fi fi + else + echo "The use of Intel MPI is only supported with the Intel compiler" + exit 1 fi - else - echo "The use of Intel MPI is only supported with the Intel compiler" - exit 1 - fi - MPIFORT="${MPIFC}" - MPIF77="${MPIFC}" - # include path is already handled by compiler wrapper scripts (can cause wrong mpi.mod with GNU Fortran) - INTELMPI_CFLAGS="-I'${pkg_install_dir}/include'" - INTELMPI_LDFLAGS="-L'${pkg_install_dir}/lib' -Wl,-rpath,'${pkg_install_dir}/lib'" - ;; + MPIFORT="${MPIFC}" + MPIF77="${MPIFC}" + # include path is already handled by compiler wrapper scripts (can cause wrong mpi.mod with GNU Fortran) + INTELMPI_CFLAGS="-I'${pkg_install_dir}/include'" + INTELMPI_LDFLAGS="-L'${pkg_install_dir}/lib' -Wl,-rpath,'${pkg_install_dir}/lib'" + ;; esac if [ "${with_intelmpi}" != "__DONTUSE__" ]; then - if [ "${intel_classic}" = "yes" ]; then - I_MPI_CXX="icpc" - I_MPI_CC="icc" - I_MPI_FC="ifort" - else - I_MPI_CXX="icpx" - I_MPI_CC="icx" - if [ "${WITH_IFX}" = "yes" ]; then - I_MPI_FC="ifx" + if [ "${intel_classic}" = "yes" ]; then + I_MPI_CXX="icpc" + I_MPI_CC="icc" + I_MPI_FC="ifort" else - I_MPI_FC="ifort" + I_MPI_CXX="icpx" + I_MPI_CC="icx" + if [ "${WITH_IFX}" = "yes" ]; then + I_MPI_FC="ifx" + else + I_MPI_FC="ifort" + fi fi - fi - INTELMPI_LIBS="-lmpi -lmpicxx" - echo "I_MPI_CXX is ${I_MPI_CXX}" - echo "I_MPI_CC is ${I_MPI_CC}" - echo "I_MPI_FC is ${I_MPI_FC}" - echo "MPICXX is ${MPICXX}" - echo "MPICC is ${MPICC}" - echo "MPIFC is ${MPIFC}" - cat << EOF > "${BUILDDIR}/setup_intelmpi" + INTELMPI_LIBS="-lmpi -lmpicxx" + echo "I_MPI_CXX is ${I_MPI_CXX}" + echo "I_MPI_CC is ${I_MPI_CC}" + echo "I_MPI_FC is ${I_MPI_FC}" + echo "MPICXX is ${MPICXX}" + echo "MPICC is ${MPICC}" + echo "MPIFC is ${MPIFC}" + cat << EOF > "${BUILDDIR}/setup_intelmpi" export I_MPI_CXX="${I_MPI_CXX}" export I_MPI_CC="${I_MPI_CC}" export I_MPI_FC="${I_MPI_FC}" @@ -146,8 +144,8 @@ export CP_CFLAGS="\${CP_CFLAGS} IF_MPI(${INTELMPI_CFLAGS}|)" export CP_LDFLAGS="\${CP_LDFLAGS} IF_MPI(${INTELMPI_LDFLAGS}|)" export CP_LIBS="\${CP_LIBS} IF_MPI(${INTELMPI_LIBS}|)" EOF - if [ "${with_intelmpi}" != "__SYSTEM__" ]; then - cat << EOF >> "${BUILDDIR}/setup_intelmpi" + if [ "${with_intelmpi}" != "__SYSTEM__" ]; then + cat << EOF >> "${BUILDDIR}/setup_intelmpi" prepend_path PATH "${pkg_install_dir}/bin" export PATH="${pkg_install_dir}/bin":\${PATH} export LD_LIBRARY_PATH="${pkg_install_dir}/lib":\${LD_LIBRARY_PATH} @@ -155,8 +153,8 @@ export LD_RUN_PATH="${pkg_install_dir}/lib":\${LD_RUN_PATH} export LIBRARY_PATH="${pkg_install_dir}/lib":\${LIBRARY_PATH} export CPATH="${pkg_install_dir}/include":\${CPATH} EOF - fi - cat "${BUILDDIR}/setup_intelmpi" >> ${SETUPFILE} + fi + cat "${BUILDDIR}/setup_intelmpi" >> ${SETUPFILE} fi load "${BUILDDIR}/setup_intelmpi" diff --git a/toolchain/scripts/stage1/install_mpich.sh b/toolchain/scripts/stage1/install_mpich.sh index 2b80c73892..c0909b4a9c 100755 --- a/toolchain/scripts/stage1/install_mpich.sh +++ b/toolchain/scripts/stage1/install_mpich.sh @@ -3,17 +3,29 @@ # TODO: Review and if possible fix shellcheck errors. # shellcheck disable=all -# Last Update in 2025-0308 - [ "${BASH_SOURCE[0]}" ] && SCRIPT_NAME="${BASH_SOURCE[0]}" || SCRIPT_NAME=$0 SCRIPT_DIR="$(cd "$(dirname "$SCRIPT_NAME")/.." && pwd -P)" -# mpich_ver="4.0.3" -# mpich_sha256="17406ea90a6ed4ecd5be39c9ddcbfac9343e6ab4f77ac4e8c5ebe4a3e3b6c501" -# mpich_ver="4.1.2" -# mpich_sha256="3492e98adab62b597ef0d292fb2459b6123bc80070a8aa0a30be6962075a12f0" -mpich_ver="4.3.0" -mpich_sha256="5e04132984ad83cab9cc53f76072d2b5ef5a6d24b0a9ff9047a8ff96121bcc63" +# Load centralized version management +source "${SCRIPT_DIR}"/package_versions.sh + +# Load MPICH package variables with version suffix support +# Check for version configuration from environment or individual package setting +version_suffix="" +if [[ -n "${ABACUS_TOOLCHAIN_PACKAGE_VERSIONS}" ]]; then + # Check for individual package version override + if echo "${ABACUS_TOOLCHAIN_PACKAGE_VERSIONS}" | grep -q "mpich:alt"; then + version_suffix="alt" + elif echo "${ABACUS_TOOLCHAIN_PACKAGE_VERSIONS}" | grep -q "mpich:main"; then + version_suffix="main" + fi +fi +# Fall back to global version suffix if no individual setting +if [[ -z "$version_suffix" && -n "${ABACUS_TOOLCHAIN_VERSION_SUFFIX}" ]]; then + version_suffix="${ABACUS_TOOLCHAIN_VERSION_SUFFIX}" +fi +# Load package variables with appropriate version +load_package_vars "mpich" "$version_suffix" mpich_pkg="mpich-${mpich_ver}.tar.gz" source "${SCRIPT_DIR}"/common_vars.sh @@ -32,111 +44,117 @@ MPICH_LIBS="" cd "${BUILDDIR}" case "${with_mpich}" in - __INSTALL__) - echo "==================== Installing MPICH ====================" - pkg_install_dir="${INSTALLDIR}/mpich-${mpich_ver}" - #pkg_install_dir="${HOME}/apps/mpich/${mpich_ver}-intel" - install_lock_file="$pkg_install_dir/install_successful" - url="https://www.mpich.org/static/downloads/${mpich_ver}/${mpich_pkg}" - if verify_checksums "${install_lock_file}"; then - echo "mpich-${mpich_ver} is already installed, skipping it." - else - if [ -f ${mpich_pkg} ]; then - echo "${mpich_pkg} is found" - else - #download_pkg_from_ABACUS_org "${mpich_sha256}" "${mpich_pkg}" - download_pkg_from_url "${mpich_sha256}" "${mpich_pkg}" "${url}" - fi - if [ "${PACK_RUN}" = "__TRUE__" ]; then - echo "--pack-run mode specified, skip installation" - else - echo "Installing from scratch into ${pkg_install_dir} for MPICH device ${MPICH_DEVICE}" - [ -d mpich-${mpich_ver} ] && rm -rf mpich-${mpich_ver} - tar -xzf ${mpich_pkg} - cd mpich-${mpich_ver} - unset F90 - unset F90FLAGS + __INSTALL__) + echo "==================== Installing MPICH ====================" + pkg_install_dir="${INSTALLDIR}/mpich-${mpich_ver}" + #pkg_install_dir="${HOME}/apps/mpich/${mpich_ver}-intel" + install_lock_file="$pkg_install_dir/install_successful" + url="https://www.mpich.org/static/downloads/${mpich_ver}/${mpich_pkg}" + if verify_checksums "${install_lock_file}"; then + echo "mpich-${mpich_ver} is already installed, skipping it." + else + if [ -f ${mpich_pkg} ]; then + echo "${mpich_pkg} is found" + else + #download_pkg_from_ABACUS_org "${mpich_sha256}" "${mpich_pkg}" + download_pkg_from_url "${mpich_sha256}" "${mpich_pkg}" "${url}" + fi + if [ "${PACK_RUN}" = "__TRUE__" ]; then + echo "--pack-run mode specified, skip installation" + exit 0 + fi + echo "Installing from scratch into ${pkg_install_dir} for MPICH device ${MPICH_DEVICE}" + [ -d mpich-${mpich_ver} ] && rm -rf mpich-${mpich_ver} + tar -xzf ${mpich_pkg} + cd mpich-${mpich_ver} + unset F90 + unset F90FLAGS - # workaround for compilation with GCC >= 10, until properly fixed: - # https://github.com/pmodels/mpich/issues/4300 - if ("${FC}" --version | grep -q 'GNU'); then - compat_flag=$(allowed_gfortran_flags "-fallow-argument-mismatch") - fi - ./configure \ - --prefix="${pkg_install_dir}" \ - --libdir="${pkg_install_dir}/lib" \ - MPICC="" \ - FFLAGS="${FCFLAGS} ${compat_flag}" \ - FCFLAGS="${FCFLAGS} ${compat_flag}" \ - --with-device=${MPICH_DEVICE} \ - > configure.log 2>&1 || tail -n ${LOG_LINES} configure.log - make -j $(get_nprocs) > make.log 2>&1 || tail -n ${LOG_LINES} make.log - make install > install.log 2>&1 || tail -n ${LOG_LINES} install.log - cd .. - write_checksums "${install_lock_file}" "${SCRIPT_DIR}/stage1/$(basename ${SCRIPT_NAME})" - fi - fi - if [ "${PACK_RUN}" = "__TRUE__" ]; then - echo "--pack-run mode specified, skip system check" - else - check_dir "${pkg_install_dir}/bin" - check_dir "${pkg_install_dir}/lib" - check_dir "${pkg_install_dir}/include" - check_install ${pkg_install_dir}/bin/mpiexec "mpich" && MPIRUN="${pkg_install_dir}/bin/mpiexec" || exit 1 - check_install ${pkg_install_dir}/bin/mpicc "mpich" && MPICC="${pkg_install_dir}/bin/mpicc" || exit 1 - check_install ${pkg_install_dir}/bin/mpicxx "mpich" && MPICXX="${pkg_install_dir}/bin/mpicxx" || exit 1 - check_install ${pkg_install_dir}/bin/mpifort "mpich" && MPIFC="${pkg_install_dir}/bin/mpifort" || exit 1 - MPIFORT="${MPIFC}" - MPIF77="${MPIFC}" - MPICH_CFLAGS="-I'${pkg_install_dir}/include'" - MPICH_LDFLAGS="-L'${pkg_install_dir}/lib' -Wl,-rpath,'${pkg_install_dir}/lib'" - fi - ;; - __SYSTEM__) - echo "==================== Finding MPICH from system paths ====================" - check_command mpiexec "mpich" && MPIRUN="$(command -v mpiexec)" - check_command mpicc "mpich" && MPICC="$(command -v mpicc)" || exit 1 - if [ $(command -v mpic++ > /dev/null 2>&1) ]; then - check_command mpic++ "mpich" && MPICXX="$(command -v mpic++)" || exit 1 - else - check_command mpicxx "mpich" && MPICXX="$(command -v mpicxx)" || exit 1 - fi - check_command mpifort "mpich" && MPIFC="$(command -v mpifort)" || exit 1 - MPIFORT="${MPIFC}" - MPIF77="${MPIFC}" - check_lib -lmpifort "mpich" - check_lib -lmpicxx "mpich" - check_lib -lmpi "mpich" - add_include_from_paths MPICH_CFLAGS "mpi.h" ${INCLUDE_PATHS} - add_lib_from_paths MPICH_LDFLAGS "libmpi.*" ${LIB_PATHS} - ;; - __DONTUSE__) - # Nothing to do - ;; - *) - echo "==================== Linking MPICH to user paths ====================" - pkg_install_dir="${with_mpich}" - check_dir "${pkg_install_dir}/bin" - check_dir "${pkg_install_dir}/lib" - check_dir "${pkg_install_dir}/include" - check_command ${pkg_install_dir}/bin/mpiexec "mpich" && MPIRUN="${pkg_install_dir}/bin/mpiexec" || exit 1 - check_command ${pkg_install_dir}/bin/mpicc "mpich" && MPICC="${pkg_install_dir}/bin/mpicc" || exit 1 - check_command ${pkg_install_dir}/bin/mpicxx "mpich" && MPICXX="${pkg_install_dir}/bin/mpicxx" || exit 1 - check_command ${pkg_install_dir}/bin/mpifort "mpich" && MPIFC="${pkg_install_dir}/bin/mpifort" || exit 1 - MPIFORT="${MPIFC}" - MPIF77="${MPIFC}" - MPICH_CFLAGS="-I'${pkg_install_dir}/include'" - MPICH_LDFLAGS="-L'${pkg_install_dir}/lib' -Wl,-rpath,'${pkg_install_dir}/lib'" - ;; + # workaround for compilation with GCC >= 10, until properly fixed: + # https://github.com/pmodels/mpich/issues/4300 + if ("${FC}" --version | grep -q 'GNU'); then + compat_flag=$(allowed_gfortran_flags "-fallow-argument-mismatch") + fi + ./configure \ + --prefix="${pkg_install_dir}" \ + --libdir="${pkg_install_dir}/lib" \ + MPICC="" \ + FFLAGS="${FCFLAGS} ${compat_flag}" \ + FCFLAGS="${FCFLAGS} ${compat_flag}" \ + --without-x \ + --enable-gl=no \ + --with-device=${MPICH_DEVICE} \ + > configure.log 2>&1 || tail -n ${LOG_LINES} configure.log + make -j $(get_nprocs) > make.log 2>&1 || tail -n ${LOG_LINES} make.log + make install > install.log 2>&1 || tail -n ${LOG_LINES} install.log + cd .. + write_checksums "${install_lock_file}" "${SCRIPT_DIR}/stage1/$(basename ${SCRIPT_NAME})" + fi + if [ "${PACK_RUN}" = "__TRUE__" ]; then + echo "--pack-run mode specified, skip system check" + exit 0 + fi + check_dir "${pkg_install_dir}/bin" + check_dir "${pkg_install_dir}/lib" + check_dir "${pkg_install_dir}/include" + check_install ${pkg_install_dir}/bin/mpiexec "mpich" && MPIRUN="${pkg_install_dir}/bin/mpiexec" || exit 1 + check_install ${pkg_install_dir}/bin/mpicc "mpich" && MPICC="${pkg_install_dir}/bin/mpicc" || exit 1 + check_install ${pkg_install_dir}/bin/mpicxx "mpich" && MPICXX="${pkg_install_dir}/bin/mpicxx" || exit 1 + check_install ${pkg_install_dir}/bin/mpifort "mpich" && MPIFC="${pkg_install_dir}/bin/mpifort" || exit 1 + MPIFORT="${MPIFC}" + MPIF77="${MPIFC}" + MPICH_CFLAGS="-I'${pkg_install_dir}/include'" + MPICH_LDFLAGS="-L'${pkg_install_dir}/lib' -Wl,-rpath,'${pkg_install_dir}/lib'" + ;; + __SYSTEM__) + echo "==================== Finding MPICH from system paths ====================" + if [ "${PACK_RUN}" = "__TRUE__" ]; then + echo "--pack-run mode specified, skip system check" + exit 0 + fi + check_command mpiexec "mpich" && MPIRUN="$(command -v mpiexec)" + check_command mpicc "mpich" && MPICC="$(command -v mpicc)" || exit 1 + if [ $(command -v mpic++ > /dev/null 2>&1) ]; then + check_command mpic++ "mpich" && MPICXX="$(command -v mpic++)" || exit 1 + else + check_command mpicxx "mpich" && MPICXX="$(command -v mpicxx)" || exit 1 + fi + check_command mpifort "mpich" && MPIFC="$(command -v mpifort)" || exit 1 + MPIFORT="${MPIFC}" + MPIF77="${MPIFC}" + check_lib -lmpifort "mpich" + check_lib -lmpicxx "mpich" + check_lib -lmpi "mpich" + add_include_from_paths MPICH_CFLAGS "mpi.h" ${INCLUDE_PATHS} + add_lib_from_paths MPICH_LDFLAGS "libmpi.*" ${LIB_PATHS} + ;; + __DONTUSE__) + # Nothing to do + ;; + *) + echo "==================== Linking MPICH to user paths ====================" + pkg_install_dir="${with_mpich}" + check_dir "${pkg_install_dir}/bin" + check_dir "${pkg_install_dir}/lib" + check_dir "${pkg_install_dir}/include" + check_command ${pkg_install_dir}/bin/mpiexec "mpich" && MPIRUN="${pkg_install_dir}/bin/mpiexec" || exit 1 + check_command ${pkg_install_dir}/bin/mpicc "mpich" && MPICC="${pkg_install_dir}/bin/mpicc" || exit 1 + check_command ${pkg_install_dir}/bin/mpicxx "mpich" && MPICXX="${pkg_install_dir}/bin/mpicxx" || exit 1 + check_command ${pkg_install_dir}/bin/mpifort "mpich" && MPIFC="${pkg_install_dir}/bin/mpifort" || exit 1 + MPIFORT="${MPIFC}" + MPIF77="${MPIFC}" + MPICH_CFLAGS="-I'${pkg_install_dir}/include'" + MPICH_LDFLAGS="-L'${pkg_install_dir}/lib' -Wl,-rpath,'${pkg_install_dir}/lib'" + ;; esac if [ "${with_mpich}" != "__DONTUSE__" ]; then - if [ "${with_mpich}" != "__SYSTEM__" ]; then - mpi_bin="${pkg_install_dir}/bin/mpiexec" - else - mpi_bin="mpiexec" - fi - MPICH_LIBS="-lmpifort -lmpicxx -lmpi" - cat << EOF > "${BUILDDIR}/setup_mpich" + if [ "${with_mpich}" != "__SYSTEM__" ]; then + mpi_bin="${pkg_install_dir}/bin/mpiexec" + else + mpi_bin="mpiexec" + fi + MPICH_LIBS="-lmpifort -lmpicxx -lmpi" + cat << EOF > "${BUILDDIR}/setup_mpich" export MPI_MODE="${MPI_MODE}" export MPIRUN="${MPIRUN}" export MPICC="${MPICC}" @@ -155,18 +173,17 @@ export CP_CFLAGS="\${CP_CFLAGS} IF_MPI(${MPICH_CFLAGS}|)" export CP_LDFLAGS="\${CP_LDFLAGS} IF_MPI(${MPICH_LDFLAGS}|)" export CP_LIBS="\${CP_LIBS} IF_MPI(${MPICH_LIBS}|)" EOF - if [ "${with_mpich}" != "__SYSTEM__" ]; then - cat << EOF >> "${BUILDDIR}/setup_mpich" + if [ "${with_mpich}" != "__SYSTEM__" ]; then + cat << EOF >> "${BUILDDIR}/setup_mpich" prepend_path PATH "${pkg_install_dir}/bin" export PATH="${pkg_install_dir}/bin":\${PATH} export LD_LIBRARY_PATH="${pkg_install_dir}/lib":\${LD_LIBRARY_PATH} export LD_RUN_PATH="${pkg_install_dir}/lib":\${LD_RUN_PATH} export LIBRARY_PATH="${pkg_install_dir}/lib":\${LIBRARY_PATH} export CPATH="${pkg_install_dir}/include":\${CPATH} - EOF - fi - cat "${BUILDDIR}/setup_mpich" >> ${SETUPFILE} + fi + cat "${BUILDDIR}/setup_mpich" >> ${SETUPFILE} fi # Update leak suppression file @@ -174,6 +191,8 @@ cat << EOF >> ${INSTALLDIR}/lsan.supp # MPICH 3.3.2 with GCC 10.3.0 leak:MPIR_Find_local_and_external leak:MPIU_Find_local_and_external +# MPICH 4.2.3 +leak:MPL_malloc EOF load "${BUILDDIR}/setup_mpich" diff --git a/toolchain/scripts/stage1/install_openmpi.sh b/toolchain/scripts/stage1/install_openmpi.sh index faad08eb48..6798e8ef17 100755 --- a/toolchain/scripts/stage1/install_openmpi.sh +++ b/toolchain/scripts/stage1/install_openmpi.sh @@ -3,20 +3,29 @@ # TODO: Review and if possible fix shellcheck errors. # shellcheck disable=all -# Last Update in 2025-0504 -# Change default version to openmpi 5 -# allow user to choose openmpi 4 in used scripts - [ "${BASH_SOURCE[0]}" ] && SCRIPT_NAME="${BASH_SOURCE[0]}" || SCRIPT_NAME=$0 SCRIPT_DIR="$(cd "$(dirname "$SCRIPT_NAME")/.." && pwd -P)" -if [ "${OPENMPI_4TH}" = "yes" ]; then - openmpi_ver="4.1.6" - openmpi_sha256="f740994485516deb63b5311af122c265179f5328a0d857a567b85db00b11e415" -else - openmpi_ver="5.0.7" - openmpi_sha256="119f2009936a403334d0df3c0d74d5595a32d99497f9b1d41e90019fee2fc2dd" +# Load centralized version management +source "${SCRIPT_DIR}"/package_versions.sh + +# Load OpenMPI package variables with version suffix support +# Check for version configuration from environment or individual package setting +version_suffix="" +if [[ -n "${ABACUS_TOOLCHAIN_PACKAGE_VERSIONS}" ]]; then + # Check for individual package version override + if echo "${ABACUS_TOOLCHAIN_PACKAGE_VERSIONS}" | grep -q "openmpi:alt"; then + version_suffix="alt" + elif echo "${ABACUS_TOOLCHAIN_PACKAGE_VERSIONS}" | grep -q "openmpi:main"; then + version_suffix="main" + fi +fi +# Fall back to global version suffix if no individual setting +if [[ -z "$version_suffix" && -n "${ABACUS_TOOLCHAIN_VERSION_SUFFIX}" ]]; then + version_suffix="${ABACUS_TOOLCHAIN_VERSION_SUFFIX}" fi +# Load package variables with appropriate version +load_package_vars "openmpi" "$version_suffix" openmpi_pkg="openmpi-${openmpi_ver}.tar.bz2" source "${SCRIPT_DIR}"/common_vars.sh @@ -35,133 +44,141 @@ OPENMPI_LIBS="" cd "${BUILDDIR}" case "${with_openmpi}" in - __INSTALL__) - echo "==================== Installing OpenMPI ====================" - pkg_install_dir="${INSTALLDIR}/openmpi-${openmpi_ver}" - #pkg_install_dir="${HOME}/apps/openmpi/${openmpi_ver}-gcc8" - install_lock_file="$pkg_install_dir/install_successful" - url="https://download.open-mpi.org/release/open-mpi/v${openmpi_ver%.*}/${openmpi_pkg}" - if verify_checksums "${install_lock_file}"; then - echo "openmpi-${openmpi_ver} is already installed, skipping it." - else - if [ -f ${openmpi_pkg} ]; then - echo "${openmpi_pkg} is found" - else - download_pkg_from_url "${openmpi_sha256}" "${openmpi_pkg}" "${url}" - fi - if [ "${PACK_RUN}" = "__TRUE__" ]; then - echo "--pack-run mode specified, skip installation" - else - echo "Installing from scratch into ${pkg_install_dir}" - [ -d openmpi-${openmpi_ver} ] && rm -rf openmpi-${openmpi_ver} - tar -xjf ${openmpi_pkg} - cd openmpi-${openmpi_ver} - if [ "${OPENBLAS_ARCH}" = "x86_64" ]; then - # can have issue with older glibc libraries, in which case - # we need to add the -fgnu89-inline to CFLAGS. We can check - # the version of glibc using ldd --version, as ldd is part of - # glibc package - glibc_version=$(ldd --version | awk '/ldd/{print $NF}') - glibc_major_ver=${glibc_version%%.*} - glibc_minor_ver=${glibc_version##*.} - if [ $glibc_major_ver -lt 2 ] || - [ $glibc_major_ver -eq 2 -a $glibc_minor_ver -lt 12 ]; then - CFLAGS="${CFLAGS} -fgnu89-inline" - fi - fi + __INSTALL__) + echo "==================== Installing OpenMPI ====================" + pkg_install_dir="${INSTALLDIR}/openmpi-${openmpi_ver}" + install_lock_file="$pkg_install_dir/install_successful" + url="https://download.open-mpi.org/release/open-mpi/v${openmpi_ver%.*}/${openmpi_pkg}" + if verify_checksums "${install_lock_file}"; then + echo "openmpi-${openmpi_ver} is already installed, skipping it." + else + if [ -f ${openmpi_pkg} ]; then + echo "${openmpi_pkg} is found" + else + download_pkg_from_url "${openmpi_sha256}" "${openmpi_pkg}" "${url}" + fi + if [ "${PACK_RUN}" = "__TRUE__" ]; then + echo "--pack-run mode specified, skip installation" + exit 0 + fi + echo "Installing from scratch into ${pkg_install_dir}" + [ -d openmpi-${openmpi_ver} ] && rm -rf openmpi-${openmpi_ver} + tar -xjf ${openmpi_pkg} + cd openmpi-${openmpi_ver} + if [ "${OPENBLAS_ARCH}" = "x86_64" ]; then + # can have issue with older glibc libraries, in which case + # we need to add the -fgnu89-inline to CFLAGS. We can check + # the version of glibc using ldd --version, as ldd is part of + # glibc package + glibc_version=$(ldd --version | awk '/ldd/{print $NF}') + glibc_major_ver=${glibc_version%%.*} + glibc_minor_ver=${glibc_version##*.} + if [ $glibc_major_ver -lt 2 ] || + [ $glibc_major_ver -eq 2 -a $glibc_minor_ver -lt 12 ]; then + CFLAGS="${CFLAGS} -fgnu89-inline" + fi + fi - # Notice for RHEL8 refer https://github.com/open-mpi/ompi/issues/13103 + # Notice for RHEL8 refer https://github.com/open-mpi/ompi/issues/13103 - # OpenMPI 5.0 only supports PMIx - # PMI support is required for Slurm, but not for other schedulers - # default not use - # for OpenMPI 4.1 with pmi slurm, we can open this setting manually - # if [ $(command -v srun) ]; then - # echo "Slurm installation found. OpenMPI will be configured with --with-pmi." - # EXTRA_CONFIGURE_FLAGS="--with-pmi" - # else - # EXTRA_CONFIGURE_FLAGS="" - # fi - ./configure CFLAGS="${CFLAGS}" \ - --prefix=${pkg_install_dir} \ - --libdir="${pkg_install_dir}/lib" \ - --with-libevent=internal \ - ${EXTRA_CONFIGURE_FLAGS} \ - > configure.log 2>&1 || tail -n ${LOG_LINES} configure.log - make -j $(get_nprocs) > make.log 2>&1 || tail -n ${LOG_LINES} make.log - make -j $(get_nprocs) install > install.log 2>&1 || tail -n ${LOG_LINES} install.log - cd .. - write_checksums "${install_lock_file}" "${SCRIPT_DIR}/stage1/$(basename ${SCRIPT_NAME})" - fi - fi - if [ "${PACK_RUN}" = "__TRUE__" ]; then - echo "--pack-run mode specified, skip system check" - else - check_dir "${pkg_install_dir}/bin" - check_dir "${pkg_install_dir}/lib" - check_dir "${pkg_install_dir}/include" - check_install ${pkg_install_dir}/bin/mpiexec "openmpi" && MPIRUN="${pkg_install_dir}/bin/mpiexec" || exit 1 - check_install ${pkg_install_dir}/bin/mpicc "openmpi" && MPICC="${pkg_install_dir}/bin/mpicc" || exit 1 - check_install ${pkg_install_dir}/bin/mpicxx "openmpi" && MPICXX="${pkg_install_dir}/bin/mpicxx" || exit 1 - check_install ${pkg_install_dir}/bin/mpifort "openmpi" && MPIFC="${pkg_install_dir}/bin/mpifort" || exit 1 - MPIFORT="${MPIFC}" - MPIF77="${MPIFC}" - OPENMPI_CFLAGS="-I'${pkg_install_dir}/include'" - OPENMPI_LDFLAGS="-L'${pkg_install_dir}/lib' -Wl,-rpath,'${pkg_install_dir}/lib'" - fi - ;; - __SYSTEM__) - echo "==================== Finding OpenMPI from system paths ====================" - check_command mpiexec "openmpi" && MPIRUN="$(command -v mpiexec)" - check_command mpicc "openmpi" && MPICC="$(command -v mpicc)" || exit 1 - check_command mpic++ "openmpi" && MPICXX="$(command -v mpic++)" || exit 1 - check_command mpifort "openmpi" && MPIFC="$(command -v mpifort)" || exit 1 - MPIFORT="${MPIFC}" - MPIF77="${MPIFC}" - # libraries and linker flags for C/C++-based MPI codepaths, pull them in at this point. - OPENMPI_CFLAGS="$(mpicxx --showme:compile)" - OPENMPI_LDFLAGS="$(mpicxx --showme:link)" - ;; - __DONTUSE__) - # Nothing to do - ;; - *) - echo "==================== Linking OpenMPI to user paths ====================" - pkg_install_dir="${with_openmpi}" - check_dir "${pkg_install_dir}/bin" - check_dir "${pkg_install_dir}/lib" - check_dir "${pkg_install_dir}/include" - check_command ${pkg_install_dir}/bin/mpiexec "openmpi" && MPIRUN="${pkg_install_dir}/bin/mpiexec" || exit 1 - check_command ${pkg_install_dir}/bin/mpicc "openmpi" && MPICC="${pkg_install_dir}/bin/mpicc" || exit 1 - check_command ${pkg_install_dir}/bin/mpic++ "openmpi" && MPICXX="${pkg_install_dir}/bin/mpic++" || exit 1 - check_command ${pkg_install_dir}/bin/mpifort "openmpi" && MPIFC="${pkg_install_dir}/bin/mpifort" || exit 1 - MPIFORT="${MPIFC}" - MPIF77="${MPIFC}" - OPENMPI_CFLAGS="-I'${pkg_install_dir}/include'" - OPENMPI_LDFLAGS="-L'${pkg_install_dir}/lib' -Wl,-rpath,'${pkg_install_dir}/lib'" - ;; + # OpenMPI 5.0 only supports PMIx + # PMI support is required for Slurm, but not for other schedulers + # default not use + # for OpenMPI 4.1 with pmi slurm, we can open this setting manually + # if [ $(command -v srun) ]; then + # echo "Slurm installation found. OpenMPI will be configured with --with-pmi." + # EXTRA_CONFIGURE_FLAGS="--with-pmi" + # else + # EXTRA_CONFIGURE_FLAGS="" + # fi + ./configure \ + CC=gcc \ + CXX=g++ \ + FC=gfortran \ + F77=gfortran \ + CFLAGS="${CFLAGS}" \ + --prefix=${pkg_install_dir} \ + --libdir="${pkg_install_dir}/lib" \ + --with-libevent=internal \ + ${EXTRA_CONFIGURE_FLAGS} \ + > configure.log 2>&1 || tail -n ${LOG_LINES} configure.log + make -j $(get_nprocs) > make.log 2>&1 || tail -n ${LOG_LINES} make.log + make -j $(get_nprocs) install > install.log 2>&1 || tail -n ${LOG_LINES} install.log + cd .. + write_checksums "${install_lock_file}" "${SCRIPT_DIR}/stage1/$(basename ${SCRIPT_NAME})" + fi + if [ "${PACK_RUN}" = "__TRUE__" ]; then + echo "--pack-run mode specified, skip system check" + else + check_dir "${pkg_install_dir}/bin" + check_dir "${pkg_install_dir}/lib" + check_dir "${pkg_install_dir}/include" + check_install ${pkg_install_dir}/bin/mpiexec "openmpi" && MPIRUN="${pkg_install_dir}/bin/mpiexec" || exit 1 + check_install ${pkg_install_dir}/bin/mpicc "openmpi" && MPICC="${pkg_install_dir}/bin/mpicc" || exit 1 + check_install ${pkg_install_dir}/bin/mpicxx "openmpi" && MPICXX="${pkg_install_dir}/bin/mpicxx" || exit 1 + check_install ${pkg_install_dir}/bin/mpifort "openmpi" && MPIFC="${pkg_install_dir}/bin/mpifort" || exit 1 + MPIFORT="${MPIFC}" + MPIF77="${MPIFC}" + OPENMPI_CFLAGS="-I'${pkg_install_dir}/include'" + OPENMPI_LDFLAGS="-L'${pkg_install_dir}/lib' -Wl,-rpath,'${pkg_install_dir}/lib'" + fi + ;; + __SYSTEM__) + echo "==================== Finding OpenMPI from system paths ====================" + if [ "${PACK_RUN}" = "__TRUE__" ]; then + echo "--pack-run mode specified, skip system check" + exit 0 + fi + check_command mpiexec "openmpi" && MPIRUN="$(command -v mpiexec)" + check_command mpicc "openmpi" && MPICC="$(command -v mpicc)" || exit 1 + check_command mpicxx "openmpi" && MPICXX="$(command -v mpicxx)" || exit 1 + check_command mpifort "openmpi" && MPIFC="$(command -v mpifort)" || exit 1 + MPIFORT="${MPIFC}" + MPIF77="${MPIFC}" + ;; + __DONTUSE__) + # Nothing to do + ;; + *) + echo "==================== Linking OpenMPI to user paths ====================" + pkg_install_dir="${with_openmpi}" + check_dir "${pkg_install_dir}/bin" + check_dir "${pkg_install_dir}/lib" + check_dir "${pkg_install_dir}/include" + check_command ${pkg_install_dir}/bin/mpiexec "openmpi" && MPIRUN="${pkg_install_dir}/bin/mpiexec" || exit 1 + check_command ${pkg_install_dir}/bin/mpicc "openmpi" && MPICC="${pkg_install_dir}/bin/mpicc" || exit 1 + check_command ${pkg_install_dir}/bin/mpicxx "openmpi" && MPICXX="${pkg_install_dir}/bin/mpicxx" || exit 1 + check_command ${pkg_install_dir}/bin/mpifort "openmpi" && MPIFC="${pkg_install_dir}/bin/mpifort" || exit 1 + MPIFORT="${MPIFC}" + MPIF77="${MPIFC}" + OPENMPI_CFLAGS="-I'${pkg_install_dir}/include'" + OPENMPI_LDFLAGS="-L'${pkg_install_dir}/lib' -Wl,-rpath,'${pkg_install_dir}/lib'" + ;; esac -if [ "${with_openmpi}" != "__DONTUSE__" ]; then - if [ "${with_openmpi}" != "__SYSTEM__" ]; then - mpi_bin="${pkg_install_dir}/bin/mpiexec" - mpicxx_bin="${pkg_install_dir}/bin/mpicxx" - else - mpi_bin="mpiexec" - mpicxx_bin="mpicxx" - fi - # check openmpi version as reported by mpiexec - raw_version=$(${mpi_bin} --version 2>&1 | - grep "(Open MPI)" | awk '{print $4}') - major_version=$(echo ${raw_version} | cut -d '.' -f 1) - minor_version=$(echo ${raw_version} | cut -d '.' -f 2) - OPENMPI_LIBS="" - # grab additional runtime libs (for C/C++) from the mpicxx wrapper, - # and remove them from the LDFLAGS if present - for lib in $("${mpicxx_bin}" --showme:libs); do - OPENMPI_LIBS+=" -l${lib}" - OPENMPI_LDFLAGS="${OPENMPI_LDFLAGS//-l${lib}/}" - done - cat << EOF > "${BUILDDIR}/setup_openmpi" +if [ "${PACK_RUN}" = "__TRUE__" ]; then + echo "--pack-run mode specified, skip env setting" +else + if [ "${with_openmpi}" != "__DONTUSE__" ]; then + if [ "${with_openmpi}" != "__SYSTEM__" ]; then + mpi_bin="${pkg_install_dir}/bin/mpiexec" + mpicxx_bin="${pkg_install_dir}/bin/mpicxx" + else + mpi_bin="mpiexec" + mpicxx_bin="mpicxx" + fi + # check openmpi version as reported by mpiexec + raw_version=$(${mpi_bin} --version 2>&1 | + grep "(Open MPI)" | awk '{print $4}') + major_version=$(echo ${raw_version} | cut -d '.' -f 1) + minor_version=$(echo ${raw_version} | cut -d '.' -f 2) + OPENMPI_LIBS="" + # grab additional runtime libs (for C/C++) from the mpicxx wrapper, + # and remove them from the LDFLAGS if present + for lib in $("${mpicxx_bin}" --showme:libs); do + OPENMPI_LIBS+=" -l${lib}" + OPENMPI_LDFLAGS="${OPENMPI_LDFLAGS//-l${lib}/}" + done + cat << EOF > "${BUILDDIR}/setup_openmpi" export MPI_MODE="${MPI_MODE}" export MPIRUN="${MPIRUN}" export MPICC="${MPICC}" @@ -178,31 +195,31 @@ export MPI_LIBS="${OPENMPI_LIBS}" export CP_DFLAGS="\${CP_DFLAGS} IF_MPI(-D__parallel|)" # For proper mpi_f08 support, we need at least GCC version 9 (asynchronous keyword) # Other compilers should work - if ! [ "$(gfortran -dumpversion | cut -d. -f1)" -lt 9 ]; then - export CP_DFLAGS="\${CP_DFLAGS} IF_MPI(-D__MPI_F08|)" - fi + if ! [ "$(gfortran -dumpversion | cut -d. -f1)" -lt 9 ]; then + export CP_DFLAGS="\${CP_DFLAGS} IF_MPI(-D__MPI_F08|)" + fi export CP_CFLAGS="\${CP_CFLAGS} IF_MPI(${OPENMPI_CFLAGS}|)" export CP_LDFLAGS="\${CP_LDFLAGS} IF_MPI(${OPENMPI_LDFLAGS}|)" export CP_LIBS="\${CP_LIBS} IF_MPI(${OPENMPI_LIBS}|)" EOF - if [ "${with_openmpi}" != "__SYSTEM__" ]; then - cat << EOF >> "${BUILDDIR}/setup_openmpi" + if [ "${with_openmpi}" != "__SYSTEM__" ]; then + cat << EOF >> "${BUILDDIR}/setup_openmpi" prepend_path PATH "${pkg_install_dir}/bin" export PATH="${pkg_install_dir}/bin":\${PATH} export LD_LIBRARY_PATH="${pkg_install_dir}/lib":\${LD_LIBRARY_PATH} export LD_RUN_PATH="${pkg_install_dir}/lib":\${LD_RUN_PATH} export LIBRARY_PATH="${pkg_install_dir}/lib":\${LIBRARY_PATH} export CPATH="${pkg_install_dir}/include":\${CPATH} -export MANPATH="${pkg_install_dir}/share/man":\${MANPATH} + EOF - fi - cat "${BUILDDIR}/setup_openmpi" >> ${SETUPFILE} -fi + fi + cat "${BUILDDIR}/setup_openmpi" >> ${SETUPFILE} + fi -# ---------------------------------------------------------------------- -# Suppress reporting of known leaks -# ---------------------------------------------------------------------- -cat << EOF >> ${INSTALLDIR}/valgrind.supp + # ---------------------------------------------------------------------- + # Suppress reporting of known leaks + # ---------------------------------------------------------------------- + cat << EOF >> ${INSTALLDIR}/valgrind.supp { Memcheck:Leak @@ -249,7 +266,7 @@ cat << EOF >> ${INSTALLDIR}/valgrind.supp fun:ompi_comm_activate } EOF -cat << EOF >> ${INSTALLDIR}/lsan.supp + cat << EOF >> ${INSTALLDIR}/lsan.supp # leaks related to OpenMPI leak:query_2_0_0 leak:ompi_init_f @@ -258,6 +275,7 @@ leak:ompi_file_open_f leak:progress_engine leak:__GI___strdup EOF +fi load "${BUILDDIR}/setup_openmpi" write_toolchain_env "${INSTALLDIR}" diff --git a/toolchain/scripts/stage2/install_aocl.sh b/toolchain/scripts/stage2/install_aocl.sh index d3f0d70dd5..c2c3b10e75 100755 --- a/toolchain/scripts/stage2/install_aocl.sh +++ b/toolchain/scripts/stage2/install_aocl.sh @@ -1,9 +1,6 @@ #!/bin/bash -e -# TODO: Review and if possible fix shellcheck errors. -# shellcheck disable=all - -# Last Update in 2025-0308 +# developer: QuantumMisaka [ "${BASH_SOURCE[0]}" ] && SCRIPT_NAME="${BASH_SOURCE[0]}" || SCRIPT_NAME=$0 SCRIPT_DIR="$(cd "$(dirname "$SCRIPT_NAME")/.." && pwd -P)" @@ -24,18 +21,17 @@ AOCL_ROOT="" cd "${BUILDDIR}" case "${with_aocl}" in - __INSTALL__) - echo "==================== Installing AOCL ====================" - report_error ${LINENO} "To install AOCL, please contact your system administrator." - if [ "${PACK_RUN}" != "__TRUE__" ]; then + __INSTALL__) + echo "==================== Installing AOCL ====================" + report_error ${LINENO} "To install AOCL, please contact your system administrator." exit 1 - fi - ;; - __SYSTEM__) - echo "==================== Finding AOCL from system paths ====================" - if [ "${PACK_RUN}" = "__TRUE__" ]; then - echo "--pack-run mode specified, skip system check" - else + ;; + __SYSTEM__) + echo "==================== Finding AOCL from system paths ====================" + if [ "${PACK_RUN}" = "__TRUE__" ]; then + echo "--pack-run mode specified, skip system check" + exit 0 + fi check_lib -lblis "AOCL" check_lib -lflame "AOCL" AOCL_LIBS="-lblis -lflame" @@ -43,23 +39,26 @@ case "${with_aocl}" in add_lib_from_paths AOCL_LDFLAGS "libblis.*" $LIB_PATHS add_include_from_paths AOCL_CFLAGS "lapack.h" $INCLUDE_PATHS add_lib_from_paths AOCL_LDFLAGS "libflame.*" $LIB_PATHS - fi - ;; - __DONTUSE__) ;; - - *) - echo "==================== Linking AOCL to user paths ====================" - pkg_install_dir="$with_aocl" - check_dir "${pkg_install_dir}/include" - check_dir "${pkg_install_dir}/lib" - AOCL_CFLAGS="-I'${pkg_install_dir}/include'" - AOCL_LDFLAGS="-L'${pkg_install_dir}/lib' -Wl,-rpath,'${pkg_install_dir}/lib'" - AOCL_LIBS="-lblis -lflame" - ;; + ;; + __DONTUSE__) + ;; + *) + echo "==================== Linking AOCL to user paths ====================" + pkg_install_dir="$with_aocl" + if [ "${PACK_RUN}" = "__TRUE__" ]; then + echo "--pack-run mode specified, skip system check" + exit 0 + fi + check_dir "${pkg_install_dir}/include" + check_dir "${pkg_install_dir}/lib" + AOCL_CFLAGS="-I'${pkg_install_dir}/include'" + AOCL_LDFLAGS="-L'${pkg_install_dir}/lib' -Wl,-rpath,'${pkg_install_dir}/lib'" + AOCL_LIBS="-lblis -lflame" + ;; esac if [ "$with_aocl" != "__DONTUSE__" ]; then - if [ "$with_aocl" != "__SYSTEM__" ]; then - cat << EOF > "${BUILDDIR}/setup_aocl" + if [ "$with_aocl" != "__SYSTEM__" ]; then + cat << EOF > "${BUILDDIR}/setup_aocl" prepend_path LD_LIBRARY_PATH "$pkg_install_dir/lib" prepend_path LD_RUN_PATH "$pkg_install_dir/lib" prepend_path LIBRARY_PATH "$pkg_install_dir/lib" @@ -74,9 +73,9 @@ export PKG_CONFIG_PATH="$pkg_install_dir/lib/pkgconfig:"\${PKG_CONFIG_PATH} export CMAKE_PREFIX_PATH="$pkg_install_dir:"\${CMAKE_PREFIX_PATH} export AOCL_ROOT=${pkg_install_dir} EOF - cat "${BUILDDIR}/setup_aocl" >> $SETUPFILE - fi -cat << EOF >> "${BUILDDIR}/setup_aocl" + cat "${BUILDDIR}/setup_aocl" >> $SETUPFILE + fi + cat << EOF >> "${BUILDDIR}/setup_aocl" export AOCL_ROOT="${pkg_install_dir}" export AOCL_CFLAGS="${AOCL_CFLAGS}" export AOCL_LDFLAGS="${AOCL_LDFLAGS}" @@ -84,10 +83,6 @@ export AOCL_LIBS="${AOCL_LIBS}" export MATH_CFLAGS="\${MATH_CFLAGS} ${AOCL_CFLAGS}" export MATH_LDFLAGS="\${MATH_LDFLAGS} ${AOCL_LDFLAGS}" export MATH_LIBS="\${MATH_LIBS} ${AOCL_LIBS}" -export PKG_CONFIG_PATH="${pkg_install_dir}/lib/pkgconfig" -export CMAKE_PREFIX_PATH="${pkg_install_dir}" -prepend_path PKG_CONFIG_PATH "$pkg_install_dir/lib/pkgconfig" -prepend_path CMAKE_PREFIX_PATH "$pkg_install_dir" EOF fi diff --git a/toolchain/scripts/stage2/install_mathlibs.sh b/toolchain/scripts/stage2/install_mathlibs.sh index 3ad3aef336..f747101c80 100755 --- a/toolchain/scripts/stage2/install_mathlibs.sh +++ b/toolchain/scripts/stage2/install_mathlibs.sh @@ -21,24 +21,24 @@ export MATH_LIBS='' write_toolchain_env "${INSTALLDIR}" case "$MATH_MODE" in - mkl) - "${SCRIPTDIR}"/stage2/install_mkl.sh "${with_mkl}" - load "${BUILDDIR}/setup_mkl" - ;; - aocl) - "${SCRIPTDIR}"/stage2/install_aocl.sh "${with_aocl}" - load "${BUILDDIR}/setup_aocl" - ;; - openblas) - "${SCRIPTDIR}"/stage2/install_openblas.sh "${with_openblas}" - load "${BUILDDIR}/setup_openblas" - ;; - cray) - # note the space is intentional so that the variable is - # non-empty and can pass require_env checks - export MATH_LDFLAGS="${MATH_LDFLAGS} " - export MATH_LIBS="${MATH_LIBS} ${CRAY_EXTRA_LIBS}" - ;; + mkl) + "${SCRIPTDIR}"/stage2/install_mkl.sh "${with_mkl}" + load "${BUILDDIR}/setup_mkl" + ;; + aocl) + "${SCRIPTDIR}"/stage2/install_aocl.sh "${with_aocl}" + load "${BUILDDIR}/setup_aocl" + ;; + openblas) + "${SCRIPTDIR}"/stage2/install_openblas.sh "${with_openblas}" + load "${BUILDDIR}/setup_openblas" + ;; + cray) + # note the space is intentional so that the variable is + # non-empty and can pass require_env checks + export MATH_LDFLAGS="${MATH_LDFLAGS} " + export MATH_LIBS="${MATH_LIBS} ${CRAY_EXTRA_LIBS}" + ;; esac export CP_CFLAGS="${CP_CFLAGS} ${MATH_CFLAGS}" diff --git a/toolchain/scripts/stage2/install_mkl.sh b/toolchain/scripts/stage2/install_mkl.sh index 4262b202bf..34248284e4 100755 --- a/toolchain/scripts/stage2/install_mkl.sh +++ b/toolchain/scripts/stage2/install_mkl.sh @@ -3,8 +3,6 @@ # TODO: Review and if possible fix shellcheck errors. # shellcheck disable=all -# Last Update in 2023-0901 - [ "${BASH_SOURCE[0]}" ] && SCRIPT_NAME="${BASH_SOURCE[0]}" || SCRIPT_NAME=$0 SCRIPT_DIR="$(cd "$(dirname "$SCRIPT_NAME")/.." && pwd -P)" @@ -25,90 +23,96 @@ MKL_FFTW="yes" cd "${BUILDDIR}" case "${with_mkl}" in - __INSTALL__) - echo "==================== Installing MKL ====================" - report_error ${LINENO} "To install MKL, please contact your system administrator." - if [ "${PACK_RUN}" != "__TRUE__" ]; then - exit 1 - fi - ;; - __SYSTEM__) - echo "==================== Finding MKL from system paths ====================" - if [ "${PACK_RUN}" = "__TRUE__" ]; then - echo "--pack-run mode specified, skip system check" - else - if ! [ -z "${MKLROOT}" ]; then - echo "MKLROOT is found to be ${MKLROOT}" - else - report_error ${LINENO} "Cannot find env variable MKLROOT, the script relies on it being set. Please check in MKL installation and use --with-mkl= to pass the path to MKL root directory to this script." + __INSTALL__) + echo "==================== Installing MKL ====================" + report_error ${LINENO} "To install MKL, please contact your system administrator." exit 1 - fi - fi - check_lib -lm - check_lib -ldl - ;; - __DONTUSE__) - # Nothing to do - ;; - *) - echo "==================== Linking MKL to user paths ====================" - check_dir "${with_mkl}" - MKLROOT="${with_mkl}" - ;; + ;; + __SYSTEM__) + echo "==================== Finding MKL from system paths ====================" + if [ "${PACK_RUN}" = "__TRUE__" ]; then + echo "--pack-run mode specified, skip system check" + exit 0 + fi + if ! [ -z "${MKLROOT}" ]; then + echo "MKLROOT is found to be ${MKLROOT}" + else + report_error ${LINENO} "Cannot find env variable MKLROOT, the script relies on it being set. Please check in MKL installation and use --with-mkl= to pass the path to MKL root directory to this script." + exit 1 + fi + check_lib -lm + check_lib -ldl + ;; + __DONTUSE__) + # Nothing to do + ;; + *) + echo "==================== Linking MKL to user paths ====================" + if [ "${PACK_RUN}" = "__TRUE__" ]; then + echo "--pack-run mode specified, skip system check" + exit 0 + fi + check_dir "${with_mkl}" + MKLROOT="${with_mkl}" + ;; esac if [ "${with_mkl}" != "__DONTUSE__" ]; then - case ${OPENBLAS_ARCH} in - x86_64) - mkl_arch_dir="intel64" - MKL_CFLAGS="-m64" - ;; - i386) - mkl_arch_dir="ia32" - MKL_CFLAGS="-m32" - ;; - *) - report_error $LINENO "MKL only supports intel64 (x86_64) and ia32 (i386) at the moment, and your arch obtained from OpenBLAS prebuild is $OPENBLAS_ARCH" - exit 1 - ;; - esac - mkl_lib_dir="${MKLROOT}/lib/${mkl_arch_dir}" - # check we have required libraries - mkl_required_libs="libmkl_gf_lp64.so libmkl_sequential.so libmkl_core.so" - for ii in $mkl_required_libs; do - if [ ! -f "$mkl_lib_dir/${ii}" ]; then - report_error $LINENO "missing MKL library ${ii}" - exit 1 - fi - done + case ${OPENBLAS_ARCH} in + x86_64) + mkl_arch_dir="intel64" + MKL_CFLAGS="-m64" + ;; + i386) + mkl_arch_dir="ia32" + MKL_CFLAGS="-m32" + ;; + *) + report_error $LINENO "MKL only supports intel64 (x86_64) and ia32 (i386) at the moment, and your arch obtained from OpenBLAS prebuild is $OPENBLAS_ARCH" + exit 1 + ;; + esac + mkl_lib_dir="${MKLROOT}/lib/${mkl_arch_dir}" + # check we have required libraries + mkl_required_libs="libmkl_gf_lp64.so libmkl_sequential.so libmkl_core.so" + for ii in $mkl_required_libs; do + if [ ! -f "$mkl_lib_dir/${ii}" ]; then + report_error $LINENO "missing MKL library ${ii}" + exit 1 + fi + done + + + case ${MPI_MODE} in + intelmpi | mpich) + mkl_scalapack_lib="IF_MPI(-lmkl_scalapack_lp64|)" + mkl_blacs_lib="IF_MPI(-lmkl_blacs_intelmpi_lp64|)" + ;; + openmpi) + mkl_scalapack_lib="IF_MPI(-lmkl_scalapack_lp64|)" + mkl_blacs_lib="IF_MPI(-lmkl_blacs_openmpi_lp64|)" + ;; + *) + echo "Not using MKL provided ScaLAPACK and BLACS" + mkl_scalapack_lib="" + mkl_blacs_lib="" + ;; + esac - case ${MPI_MODE} in - intelmpi | mpich) - mkl_scalapack_lib="IF_MPI(-lmkl_scalapack_lp64|)" - mkl_blacs_lib="IF_MPI(-lmkl_blacs_intelmpi_lp64|)" - ;; - openmpi) - mkl_scalapack_lib="IF_MPI(-lmkl_scalapack_lp64|)" - mkl_blacs_lib="IF_MPI(-lmkl_blacs_openmpi_lp64|)" - ;; - *) - echo "Not using MKL provided ScaLAPACK and BLACS" - mkl_scalapack_lib="" - mkl_blacs_lib="" - ;; - esac - # set the correct lib flags from MLK link adviser - MKL_LIBS="-L${mkl_lib_dir} -Wl,-rpath,${mkl_lib_dir} ${mkl_scalapack_lib}" - MKL_LIBS+=" -Wl,--start-group -lmkl_gf_lp64 -lmkl_sequential -lmkl_core" - MKL_LIBS+=" ${mkl_blacs_lib} -Wl,--end-group -lpthread -lm -ldl" - # setup_mkl disables using separate FFTW library (see below) - MKL_CFLAGS="${MKL_CFLAGS} -I${MKLROOT}/include" - if [ "${MKL_FFTW}" != "no" ]; then - MKL_CFLAGS+=" -I${MKLROOT}/include/fftw" - fi + # added by trae + MKL_LDFLAGS="-L'${mkl_lib_dir}' -Wl,-rpath,'${mkl_lib_dir}'" + # set the correct lib flags from MLK link adviser + MKL_LIBS="-L${mkl_lib_dir} -Wl,-rpath,${mkl_lib_dir} ${mkl_scalapack_lib}" + MKL_LIBS+=" -Wl,--start-group -lmkl_gf_lp64 -lmkl_sequential -lmkl_core" + MKL_LIBS+=" ${mkl_blacs_lib} -Wl,--end-group -lpthread -lm -ldl" + # setup_mkl disables using separate FFTW library (see below) + MKL_CFLAGS="${MKL_CFLAGS} -I${MKLROOT}/include" + if [ "${MKL_FFTW}" != "no" ]; then + MKL_CFLAGS+=" -I${MKLROOT}/include/fftw" + fi # write setup files - cat << EOF > "${BUILDDIR}/setup_mkl" + cat << EOF > "${BUILDDIR}/setup_mkl" export MKLROOT="${MKLROOT}" export MKL_CFLAGS="${MKL_CFLAGS}" export MKL_LIBS="${MKL_LIBS}" @@ -116,14 +120,14 @@ export MATH_CFLAGS="\${MATH_CFLAGS} ${MKL_CFLAGS}" export MATH_LIBS="\${MATH_LIBS} ${MKL_LIBS}" export CP_DFLAGS="\${CP_DFLAGS} -D__MKL -D__FFTW3 IF_COVERAGE(IF_MPI(|-U__FFTW3)|)" EOF - if [ -n "${mkl_scalapack_lib}" ]; then - cat << EOF >> "${BUILDDIR}/setup_mkl" + if [ -n "${mkl_scalapack_lib}" ]; then + cat << EOF >> "${BUILDDIR}/setup_mkl" export CP_DFLAGS="\${CP_DFLAGS} IF_MPI(-D__SCALAPACK|)" export with_scalapack="__DONTUSE__" EOF - fi - if [ "${MKL_FFTW}" != "no" ]; then - cat << EOF >> "${BUILDDIR}/setup_mkl" + fi + if [ "${MKL_FFTW}" != "no" ]; then + cat << EOF >> "${BUILDDIR}/setup_mkl" export with_fftw="__DONTUSE__" export FFTW3_INCLUDES="${MKL_CFLAGS}" export FFTW3_LIBS="${MKL_LIBS}" @@ -131,8 +135,8 @@ export FFTW_CFLAGS="${MKL_CFLAGS}" export FFTW_LDFLAGS="${MKL_LDFLAGS}" export FFTW_LIBS="${MKL_LIBS}" EOF - fi - cat "${BUILDDIR}/setup_mkl" >> ${SETUPFILE} + fi + cat "${BUILDDIR}/setup_mkl" >> ${SETUPFILE} fi load "${BUILDDIR}/setup_mkl" diff --git a/toolchain/scripts/stage2/install_openblas.sh b/toolchain/scripts/stage2/install_openblas.sh index fb4e0c563e..03da6205bc 100755 --- a/toolchain/scripts/stage2/install_openblas.sh +++ b/toolchain/scripts/stage2/install_openblas.sh @@ -3,18 +3,33 @@ # TODO: Review and if possible fix shellcheck errors. # shellcheck disable=all -# Last Update in 2024-0811 - [ "${BASH_SOURCE[0]}" ] && SCRIPT_NAME="${BASH_SOURCE[0]}" || SCRIPT_NAME=$0 SCRIPT_DIR="$(cd "$(dirname "$SCRIPT_NAME")/.." && pwd -P)" -openblas_ver="0.3.29" # Keep in sync with get_openblas_arch.sh -openblas_sha256="38240eee1b29e2bde47ebb5d61160207dc68668a54cac62c076bb5032013b1eb" -openblas_pkg="OpenBLAS-${openblas_ver}.tar.gz" - source "${SCRIPT_DIR}"/common_vars.sh source "${SCRIPT_DIR}"/tool_kit.sh source "${SCRIPT_DIR}"/signal_trap.sh +source "${SCRIPT_DIR}"/package_versions.sh + +# Load OpenBLAS package variables with version suffix support +# Check for version configuration from environment or individual package setting +version_suffix="" +if [[ -n "${ABACUS_TOOLCHAIN_PACKAGE_VERSIONS}" ]]; then + # Check for individual package version override + if echo "${ABACUS_TOOLCHAIN_PACKAGE_VERSIONS}" | grep -q "openblas:alt"; then + version_suffix="alt" + elif echo "${ABACUS_TOOLCHAIN_PACKAGE_VERSIONS}" | grep -q "openblas:main"; then + version_suffix="main" + fi +fi +# Fall back to global version suffix if no individual setting +if [[ -z "$version_suffix" && -n "${ABACUS_TOOLCHAIN_VERSION_SUFFIX}" ]]; then + version_suffix="${ABACUS_TOOLCHAIN_VERSION_SUFFIX}" +fi +# Load package variables with appropriate version +load_package_vars "openblas" "$version_suffix" +openblas_pkg="OpenBLAS-${openblas_ver}.tar.gz" + source "${INSTALLDIR}"/toolchain.conf source "${INSTALLDIR}"/toolchain.env @@ -28,133 +43,135 @@ OPENBLAS_ROOT="" cd "${BUILDDIR}" case "${with_openblas}" in - __INSTALL__) - echo "==================== Installing OpenBLAS ====================" - pkg_install_dir="${INSTALLDIR}/openblas-${openblas_ver}" - #pkg_install_dir="${HOME}/lib/openblas/${openblas_ver}-gcc8" - install_lock_file="$pkg_install_dir/install_successful" - if verify_checksums "${install_lock_file}"; then - echo "openblas-${openblas_ver} is already installed, skipping it." - else - if [ -f ${openblas_pkg} ]; then - echo "${openblas_pkg} is found" - else - #download_pkg_from_ABACUS_org "${openblas_sha256}" "${openblas_pkg}" - # using codeload.github - url="https://codeload.github.com/OpenMathLib/OpenBLAS/tar.gz/v${openblas_ver}" - download_pkg_from_url "${openblas_sha256}" "${openblas_pkg}" "${url}" - fi - if [ "${PACK_RUN}" = "__TRUE__" ]; then - echo "--pack-run mode specified, skip installation" - else - echo "Installing from scratch into ${pkg_install_dir}" - [ -d OpenBLAS-${openblas_ver} ] && rm -rf OpenBLAS-${openblas_ver} - tar -zxf ${openblas_pkg} - cd OpenBLAS-${openblas_ver} + __INSTALL__) + echo "==================== Installing OpenBLAS ====================" + pkg_install_dir="${INSTALLDIR}/openblas-${openblas_ver}" + install_lock_file="$pkg_install_dir/install_successful" + if verify_checksums "${install_lock_file}"; then + echo "openblas-${openblas_ver} is already installed, skipping it." + else + if [ -f ${openblas_pkg} ]; then + echo "${openblas_pkg} is found" + else + # using codeload.github + url="https://codeload.github.com/OpenMathLib/OpenBLAS/tar.gz/v${openblas_ver}" + download_pkg_from_url "${openblas_sha256}" "${openblas_pkg}" "${url}" + fi + if [ "${PACK_RUN}" = "__TRUE__" ]; then + echo "--pack-run mode specified, skip installation" + exit 0 + fi + echo "Installing from scratch into ${pkg_install_dir}" + [ -d OpenBLAS-${openblas_ver} ] && rm -rf OpenBLAS-${openblas_ver} + tar -zxf ${openblas_pkg} + cd OpenBLAS-${openblas_ver} - # First attempt to make openblas using auto detected - # TARGET, if this fails, then make with forced - # TARGET=NEHALEM - # - # wrt NUM_THREADS=64: this is what the most common Linux distros seem to choose atm - # for a good compromise between memory usage and scalability - # - # Unfortunately, NO_SHARED=1 breaks ScaLAPACK build. - case "${TARGET_CPU}" in - "generic") - TARGET="NEHALEM" - ;; - "native") - TARGET=${OPENBLAS_LIBCORE} - ;; - "broadwell" | "skylake") - TARGET="HASWELL" - ;; - "skylake-avx512") - TARGET="SKYLAKEX" - ;; - *) - TARGET=${TARGET_CPU} - ;; - esac - TARGET=$(echo ${TARGET} | tr '[:lower:]' '[:upper:]') - echo "Installing OpenBLAS library for target ${TARGET}" - ( - make -j $(get_nprocs) \ - MAKE_NB_JOBS=0 \ - TARGET=${TARGET} \ - NUM_THREADS=64 \ - USE_THREAD=1 \ - USE_OPENMP=1 \ - NO_AFFINITY=1 \ - CC="${CC}" \ - FC="${FC}" \ - PREFIX="${pkg_install_dir}" \ - > make.log 2>&1 || tail -n ${LOG_LINES} make.log - ) || ( - make -j $(get_nprocs) \ - MAKE_NB_JOBS=0 \ - TARGET=NEHALEM \ - NUM_THREADS=64 \ - USE_THREAD=1 \ - USE_OPENMP=1 \ - NO_AFFINITY=1 \ - CC="${CC}" \ - FC="${FC}" \ - PREFIX="${pkg_install_dir}" \ - > make.nehalem.log 2>&1 || tail -n ${LOG_LINES} make.nehalem.log - ) - make -j $(get_nprocs) \ - MAKE_NB_JOBS=0 \ - TARGET=${TARGET} \ - NUM_THREADS=64 \ - USE_THREAD=1 \ - USE_OPENMP=1 \ - NO_AFFINITY=1 \ - CC="${CC}" \ - FC="${FC}" \ - PREFIX="${pkg_install_dir}" \ - install > install.log 2>&1 || tail -n ${LOG_LINES} install.log - cd .. - write_checksums "${install_lock_file}" "${SCRIPT_DIR}/stage2/$(basename ${SCRIPT_NAME})" - fi - fi - OPENBLAS_CFLAGS="-I'${pkg_install_dir}/include'" - OPENBLAS_LDFLAGS="-L'${pkg_install_dir}/lib' -Wl,-rpath,'${pkg_install_dir}/lib'" - OPENBLAS_ROOT="${pkg_install_dir}" - OPENBLAS_LIBS="-lopenblas" - ;; - __SYSTEM__) - echo "==================== Finding LAPACK from system paths ====================" - # assume that system openblas is threaded - check_lib -lopenblas "OpenBLAS" - OPENBLAS_LIBS="-lopenblas" - # detect separate omp builds - check_lib -lopenblas_openmp 2> /dev/null && OPENBLAS_LIBS="-lopenblas_openmp" - check_lib -lopenblas_omp 2> /dev/null && OPENBLAS_LIBS="-lopenblas_omp" - add_include_from_paths OPENBLAS_CFLAGS "openblas_config.h" $INCLUDE_PATHS - add_lib_from_paths OPENBLAS_LDFLAGS "libopenblas.*" $LIB_PATHS - ;; - __DONTUSE__) ;; + # First attempt to make openblas using auto detected + # TARGET, if this fails, then make with forced + # TARGET=NEHALEM + # + # wrt NUM_THREADS=64: this is what the most common Linux distros seem to choose atm + # for a good compromise between memory usage and scalability + # + # Unfortunately, NO_SHARED=1 breaks ScaLAPACK build. + case "${TARGET_CPU}" in + "generic") + TARGET="NEHALEM" + ;; + "native") + TARGET=${OPENBLAS_LIBCORE} + ;; + "broadwell" | "skylake") + TARGET="HASWELL" + ;; + "skylake-avx512") + TARGET="SKYLAKEX" + ;; + *) + TARGET=${TARGET_CPU} + ;; + esac + TARGET=$(echo ${TARGET} | tr '[:lower:]' '[:upper:]') + echo "Installing OpenBLAS library for target ${TARGET}" + ( + make -j $(get_nprocs) \ + MAKE_NB_JOBS=0 \ + TARGET=${TARGET} \ + NUM_THREADS=64 \ + USE_THREAD=1 \ + USE_OPENMP=1 \ + NO_AFFINITY=1 \ + CC="${CC}" \ + FC="${FC}" \ + PREFIX="${pkg_install_dir}" \ + > make.log 2>&1 || tail -n ${LOG_LINES} make.log + ) || ( + make -j $(get_nprocs) \ + MAKE_NB_JOBS=0 \ + TARGET=NEHALEM \ + NUM_THREADS=64 \ + USE_THREAD=1 \ + USE_OPENMP=1 \ + NO_AFFINITY=1 \ + CC="${CC}" \ + FC="${FC}" \ + PREFIX="${pkg_install_dir}" \ + > make.nehalem.log 2>&1 || tail -n ${LOG_LINES} make.nehalem.log + ) + make -j $(get_nprocs) \ + MAKE_NB_JOBS=0 \ + TARGET=${TARGET} \ + NUM_THREADS=64 \ + USE_THREAD=1 \ + USE_OPENMP=1 \ + NO_AFFINITY=1 \ + CC="${CC}" \ + FC="${FC}" \ + PREFIX="${pkg_install_dir}" \ + install > install.log 2>&1 || tail -n ${LOG_LINES} install.log + cd .. + write_checksums "${install_lock_file}" "${SCRIPT_DIR}/stage2/$(basename ${SCRIPT_NAME})" + fi + OPENBLAS_CFLAGS="-I'${pkg_install_dir}/include'" + OPENBLAS_LDFLAGS="-L'${pkg_install_dir}/lib' -Wl,-rpath,'${pkg_install_dir}/lib'" + OPENBLAS_ROOT="${pkg_install_dir}" + OPENBLAS_LIBS="-lopenblas" + ;; + __SYSTEM__) + echo "==================== Finding OpenBLAS/LAPACK from system paths ====================" + if [ "${PACK_RUN}" = "__TRUE__" ]; then + echo "--pack-run mode specified, skip system check" + exit 0 + fi + # assume that system openblas is threaded + check_lib -lopenblas "OpenBLAS" + OPENBLAS_LIBS="-lopenblas" + # detect separate omp builds + check_lib -lopenblas_openmp 2> /dev/null && OPENBLAS_LIBS="-lopenblas_openmp" + check_lib -lopenblas_omp 2> /dev/null && OPENBLAS_LIBS="-lopenblas_omp" + add_include_from_paths OPENBLAS_CFLAGS "openblas_config.h" $INCLUDE_PATHS + add_lib_from_paths OPENBLAS_LDFLAGS "libopenblas.*" $LIB_PATHS + ;; + __DONTUSE__) ;; - *) - echo "==================== Linking LAPACK to user paths ====================" - pkg_install_dir="$with_openblas" - check_dir "${pkg_install_dir}/include" - check_dir "${pkg_install_dir}/lib" - OPENBLAS_CFLAGS="-I'${pkg_install_dir}/include'" - OPENBLAS_LDFLAGS="-L'${pkg_install_dir}/lib' -Wl,-rpath,'${pkg_install_dir}/lib'" - OPENBLAS_LIBS="-lopenblas" - # detect separate omp builds - (__libdir="${pkg_install_dir}/lib" LIB_PATHS="__libdir" check_lib -lopenblas_openmp 2> /dev/null) && - OPENBLAS_LIBS="-lopenblas_openmp" - (__libdir="${pkg_install_dir}/lib" LIB_PATHS="__libdir" check_lib -lopenblas_omp 2> /dev/null) && - OPENBLAS_LIBS="-lopenblas_omp" - ;; + *) + echo "==================== Linking OpenBLAS/LAPACK to user paths ====================" + pkg_install_dir="$with_openblas" + check_dir "${pkg_install_dir}/include" + check_dir "${pkg_install_dir}/lib" + OPENBLAS_CFLAGS="-I'${pkg_install_dir}/include'" + OPENBLAS_LDFLAGS="-L'${pkg_install_dir}/lib' -Wl,-rpath,'${pkg_install_dir}/lib'" + OPENBLAS_LIBS="-lopenblas" + # detect separate omp builds + (__libdir="${pkg_install_dir}/lib" LIB_PATHS="__libdir" check_lib -lopenblas_openmp 2> /dev/null) && + OPENBLAS_LIBS="-lopenblas_openmp" + (__libdir="${pkg_install_dir}/lib" LIB_PATHS="__libdir" check_lib -lopenblas_omp 2> /dev/null) && + OPENBLAS_LIBS="-lopenblas_omp" + ;; esac if [ "$with_openblas" != "__DONTUSE__" ]; then - if [ "$with_openblas" != "__SYSTEM__" ]; then - cat << EOF > "${BUILDDIR}/setup_openblas" + if [ "$with_openblas" != "__SYSTEM__" ]; then + cat << EOF > "${BUILDDIR}/setup_openblas" prepend_path LD_LIBRARY_PATH "$pkg_install_dir/lib" prepend_path LD_RUN_PATH "$pkg_install_dir/lib" prepend_path LIBRARY_PATH "$pkg_install_dir/lib" @@ -169,9 +186,9 @@ export PKG_CONFIG_PATH="$pkg_install_dir/lib/pkgconfig:"\${PKG_CONFIG_PATH} export CMAKE_PREFIX_PATH="$pkg_install_dir:"\${CMAKE_PREFIX_PATH} export OPENBLAS_ROOT=${pkg_install_dir} EOF - cat "${BUILDDIR}/setup_openblas" >> $SETUPFILE - fi - cat << EOF >> "${BUILDDIR}/setup_openblas" + cat "${BUILDDIR}/setup_openblas" >> $SETUPFILE + fi + cat << EOF >> "${BUILDDIR}/setup_openblas" export OPENBLAS_ROOT="${pkg_install_dir}" export OPENBLAS_CFLAGS="${OPENBLAS_CFLAGS}" export OPENBLAS_LDFLAGS="${OPENBLAS_LDFLAGS}" diff --git a/toolchain/scripts/stage3/install_elpa.sh b/toolchain/scripts/stage3/install_elpa.sh index 56bd30c966..50cd499452 100755 --- a/toolchain/scripts/stage3/install_elpa.sh +++ b/toolchain/scripts/stage3/install_elpa.sh @@ -3,22 +3,36 @@ # TODO: Review and if possible fix shellcheck errors. # shellcheck disable=all -# Last Update in 2025-0504 +# Last Update in 2025-01-04 # other contributor: Benrui Tang [ "${BASH_SOURCE[0]}" ] && SCRIPT_NAME="${BASH_SOURCE[0]}" || SCRIPT_NAME=$0 SCRIPT_DIR="$(cd "$(dirname "$SCRIPT_NAME")/.." && pwd -P)" -# From https://elpa.mpcdf.mpg.de/software/tarball-archive/ELPA_TARBALL_ARCHIVE.html -# elpa_ver="2024.05.001" -# elpa_sha256="9caf41a3e600e2f6f4ce1931bd54185179dade9c171556d0c9b41bbc6940f2f6" -# newer version of elpa may have problem in GPU-ELPA compliation -elpa_ver="2025.01.001" -elpa_sha256="3ef0c6aed9a3e05db6efafe6e14d66eb88b2a1354d61e765b7cde0d3d5f3951e" - source "${SCRIPT_DIR}"/common_vars.sh source "${SCRIPT_DIR}"/tool_kit.sh source "${SCRIPT_DIR}"/signal_trap.sh +source "${SCRIPT_DIR}"/package_versions.sh + +# Load ELPA package variables with version suffix support +# Check for version configuration from environment or individual package setting +version_suffix="" +if [[ -n "${ABACUS_TOOLCHAIN_PACKAGE_VERSIONS}" ]]; then + # Check for individual package version override + if echo "${ABACUS_TOOLCHAIN_PACKAGE_VERSIONS}" | grep -q "elpa:alt"; then + version_suffix="alt" + elif echo "${ABACUS_TOOLCHAIN_PACKAGE_VERSIONS}" | grep -q "elpa:main"; then + version_suffix="main" + fi +fi +# Fall back to global version suffix if no individual setting +if [[ -z "$version_suffix" && -n "${ABACUS_TOOLCHAIN_VERSION_SUFFIX}" ]]; then + version_suffix="${ABACUS_TOOLCHAIN_VERSION_SUFFIX}" +fi +# Load package variables with appropriate version +load_package_vars "elpa" "$version_suffix" +elpa_pkg="elpa-${elpa_ver}.tar.gz" + source "${INSTALLDIR}"/toolchain.conf source "${INSTALLDIR}"/toolchain.env @@ -34,196 +48,208 @@ cd "${BUILDDIR}" # elpa only works with MPI switched on if [ $MPI_MODE = no ]; then - report_warning $LINENO "MPI is disabled, skipping elpa installation" - exit 0 + report_warning $LINENO "MPI is disabled, skipping elpa installation" + exit 0 fi case "$with_elpa" in - __INSTALL__) - echo "==================== Installing ELPA ====================" - pkg_install_dir="${INSTALLDIR}/elpa-${elpa_ver}" - #pkg_install_dir="${HOME}/lib/elpa/${elpa_ver}-gcc8" - install_lock_file="$pkg_install_dir/install_successful" - enable_openmp="yes" + __INSTALL__) + echo "==================== Installing ELPA ====================" + pkg_install_dir="${INSTALLDIR}/elpa-${elpa_ver}" + #pkg_install_dir="${HOME}/lib/elpa/${elpa_ver}-gcc8" + install_lock_file="$pkg_install_dir/install_successful" + enable_openmp="yes" - # specific settings needed on CRAY Linux Environment - if [ "$ENABLE_CRAY" = "__TRUE__" ]; then - if [ ${CRAY_PRGENVCRAY} ]; then - # extra LDFLAGS needed - cray_ldflags="-dynamic" - fi - # enable_openmp="no" - fi + # specific settings needed on CRAY Linux Environment + if [ "$ENABLE_CRAY" = "__TRUE__" ]; then + if [ ${CRAY_PRGENVCRAY} ]; then + # extra LDFLAGS needed + cray_ldflags="-dynamic" + fi + # enable_openmp="no" + fi - if verify_checksums "${install_lock_file}"; then - echo "elpa-${elpa_ver} is already installed, skipping it." - else - require_env MATH_LIBS - elpa_pkg="elpa-${elpa_ver}.tar.gz" - url="https://elpa.mpcdf.mpg.de/software/tarball-archive/Releases/${elpa_ver}/${elpa_pkg}" - if [ -f ${elpa_pkg} ]; then - echo "${elpa_pkg} is found" - else - download_pkg_from_url "${elpa_sha256}" "${elpa_pkg}" "${url}" - fi - if [ "${PACK_RUN}" = "__TRUE__" ]; then - echo "--pack-run mode specified, skip installation" - else - [ -d elpa-${elpa_ver} ] && rm -rf elpa-${elpa_ver} - tar -xzf ${elpa_pkg} + if verify_checksums "${install_lock_file}"; then + echo "elpa-${elpa_ver} is already installed, skipping it." + else + require_env MATH_LIBS + url="https://elpa.mpcdf.mpg.de/software/tarball-archive/Releases/${elpa_ver}/${elpa_pkg}" + if [ -f ${elpa_pkg} ]; then + echo "${elpa_pkg} is found" + else + download_pkg_from_url "${elpa_sha256}" "${elpa_pkg}" "${url}" + fi + if [ "${PACK_RUN}" = "__TRUE__" ]; then + echo "--pack-run mode specified, skip installation" + exit 0 + fi + [ -d elpa-${elpa_ver} ] && rm -rf elpa-${elpa_ver} + tar -xzf ${elpa_pkg} - # elpa expect FC to be an mpi fortran compiler that is happy - # with long lines, and that a bunch of libs can be found - cd elpa-${elpa_ver} + # elpa expect FC to be an mpi fortran compiler that is happy + # with long lines, and that a bunch of libs can be found + cd elpa-${elpa_ver} - # ELPA-2017xxxx enables AVX2 by default, switch off if machine doesn't support it. - AVX_flag="" - AVX512_flags="" - FMA_flag="" - SSE4_flag="" - config_flags="--disable-avx-kernels --disable-avx2-kernels --disable-avx512-kernels --disable-sse-kernels --disable-sse-assembly-kernels" - if [ "${TARGET_CPU}" = "native" ]; then - if [ -f /proc/cpuinfo ] && [ "${OPENBLAS_ARCH}" = "x86_64" ]; then - has_AVX=$(grep '\bavx\b' /proc/cpuinfo 1> /dev/null && echo 'yes' || echo 'no') - [ "${has_AVX}" = "yes" ] && AVX_flag="-mavx" || AVX_flag="" - has_AVX2=$(grep '\bavx2\b' /proc/cpuinfo 1> /dev/null && echo 'yes' || echo 'no') - [ "${has_AVX2}" = "yes" ] && AVX_flag="-mavx2" - has_AVX512=$(grep '\bavx512f\b' /proc/cpuinfo 1> /dev/null && echo 'yes' || echo 'no') - [ "${has_AVX512}" = "yes" ] && AVX512_flags="-mavx512f" - FMA_flag=$(grep '\bfma\b' /proc/cpuinfo 1> /dev/null && echo '-mfma' || echo '-mno-fma') - SSE4_flag=$(grep '\bsse4_1\b' /proc/cpuinfo 1> /dev/null && echo '-msse4' || echo '-mno-sse4') - grep '\bavx512dq\b' /proc/cpuinfo 1> /dev/null && AVX512_flags+=" -mavx512dq" - grep '\bavx512cd\b' /proc/cpuinfo 1> /dev/null && AVX512_flags+=" -mavx512cd" - grep '\bavx512bw\b' /proc/cpuinfo 1> /dev/null && AVX512_flags+=" -mavx512bw" - grep '\bavx512vl\b' /proc/cpuinfo 1> /dev/null && AVX512_flags+=" -mavx512vl" - config_flags="--enable-avx-kernels=${has_AVX} --enable-avx2-kernels=${has_AVX2} --enable-avx512-kernels=${has_AVX512}" - fi - fi - for TARGET in "cpu" "nvidia"; do - [ "$TARGET" = "nvidia" ] && [ "$ENABLE_CUDA" != "__TRUE__" ] && continue - # disable cpu if cuda is enabled, only install one - [ "$TARGET" != "nvidia" ] && [ "$ENABLE_CUDA" = "__TRUE__" ] && continue - # extend the pkg_install_dir by TARGET - # this linking method is totally different from cp2k toolchain - # for cp2k, ref https://github.com/cp2k/cp2k/commit/6fe2fc105b8cded84256248f68c74139dd8fc2e9 - pkg_install_dir="${pkg_install_dir}/${TARGET}" + # ELPA-2017xxxx enables AVX2 by default, switch off if machine doesn't support it. + AVX_flag="" + AVX512_flags="" + FMA_flag="" + SSE4_flag="" + config_flags="--disable-avx-kernels --disable-avx2-kernels --disable-avx512-kernels --disable-sse-kernels --disable-sse-assembly-kernels" + if [ "${TARGET_CPU}" = "native" ]; then + if [ -f /proc/cpuinfo ] && [ "${OPENBLAS_ARCH}" = "x86_64" ]; then + has_AVX=$(grep '\bavx\b' /proc/cpuinfo 1> /dev/null && echo 'yes' || echo 'no') + [ "${has_AVX}" = "yes" ] && AVX_flag="-mavx" || AVX_flag="" + has_AVX2=$(grep '\bavx2\b' /proc/cpuinfo 1> /dev/null && echo 'yes' || echo 'no') + [ "${has_AVX2}" = "yes" ] && AVX_flag="-mavx2" + has_AVX512=$(grep '\bavx512f\b' /proc/cpuinfo 1> /dev/null && echo 'yes' || echo 'no') + [ "${has_AVX512}" = "yes" ] && AVX512_flags="-mavx512f" + FMA_flag=$(grep '\bfma\b' /proc/cpuinfo 1> /dev/null && echo '-mfma' || echo '-mno-fma') + SSE4_flag=$(grep '\bsse4_1\b' /proc/cpuinfo 1> /dev/null && echo '-msse4' || echo '-mno-sse4') + grep '\bavx512dq\b' /proc/cpuinfo 1> /dev/null && AVX512_flags+=" -mavx512dq" + grep '\bavx512cd\b' /proc/cpuinfo 1> /dev/null && AVX512_flags+=" -mavx512cd" + grep '\bavx512bw\b' /proc/cpuinfo 1> /dev/null && AVX512_flags+=" -mavx512bw" + grep '\bavx512vl\b' /proc/cpuinfo 1> /dev/null && AVX512_flags+=" -mavx512vl" + config_flags="--enable-avx-kernels=${has_AVX} --enable-avx2-kernels=${has_AVX2} --enable-avx512-kernels=${has_AVX512}" + fi + fi + for TARGET in "cpu" "nvidia"; do + # Accept both uppercase and lowercase GPU enable flags for compatibility + gpu_enabled="${ENABLE_CUDA:-${enable_cuda}}" + [ "$TARGET" = "nvidia" ] && [ "$gpu_enabled" != "__TRUE__" ] && continue + # disable cpu if cuda is enabled, only install one + [ "$TARGET" != "nvidia" ] && [ "$gpu_enabled" = "__TRUE__" ] && continue + # extend the pkg_install_dir by TARGET + # this linking method is totally different from cp2k toolchain + # for cp2k, ref https://github.com/cp2k/cp2k/commit/6fe2fc105b8cded84256248f68c74139dd8fc2e9 + pkg_install_dir="${pkg_install_dir}/${TARGET}" - echo "Installing from scratch into ${pkg_install_dir}" - mkdir -p "build_${TARGET}" - cd "build_${TARGET}" - if [ "${with_amd}" != "__DONTUSE__" ] && [ "${WITH_FLANG}" = "yes" ] ; then - echo "AMD fortran compiler detected, enable special option operation" - ../configure --prefix="${pkg_install_dir}" \ - --libdir="${pkg_install_dir}/lib" \ - --enable-openmp=${enable_openmp} \ - --enable-static=no \ - --enable-shared=yes \ - --disable-c-tests \ - --disable-cpp-tests \ - ${config_flags} \ - --with-cuda-path=${CUDA_PATH:-${CUDA_HOME:-/CUDA_HOME-notset}} \ - --enable-nvidia-gpu-kernels=$([ "$TARGET" = "nvidia" ] && echo "yes" || echo "no") \ - --with-NVIDIA-GPU-compute-capability=$([ "$TARGET" = "nvidia" ] && echo "sm_$ARCH_NUM" || echo "sm_70") \ - OMPI_MCA_plm_rsh_agent=/bin/false \ - FC=${MPIFC} \ - CC=${MPICC} \ - CXX=${MPICXX} \ - CPP="cpp -E" \ - FCFLAGS="${FCFLAGS} ${MATH_CFLAGS} ${SCALAPACK_CFLAGS} ${AVX_flag} ${FMA_flag} ${SSE4_flag} ${AVX512_flags} -fno-lto" \ - CFLAGS="${CFLAGS} ${MATH_CFLAGS} ${SCALAPACK_CFLAGS} ${AVX_flag} ${FMA_flag} ${SSE4_flag} ${AVX512_flags} -fno-lto" \ - CXXFLAGS="${CXXFLAGS} ${MATH_CFLAGS} ${SCALAPACK_CFLAGS} ${AVX_flag} ${FMA_flag} ${SSE4_flag} ${AVX512_flags} -fno-lto" \ - LDFLAGS="${MATH_LDFLAGS} ${SCALAPACK_LDFLAGS} ${cray_ldflags} -lstdc++" \ - LIBS="${SCALAPACK_LIBS} $(resolve_string "${MATH_LIBS}" "MPI")" \ - > configure.log 2>&1 || tail -n ${LOG_LINES} configure.log - # remove unsupported compile option in libtool - sed -i ./libtool \ - -e 's/\\$wl-soname //g' \ - -e 's/\\$wl--whole-archive\\$convenience \\$wl--no-whole-archive//g' \ - -e 's/\\$wl\\$soname //g' - else - # normal installation - ../configure --prefix="${pkg_install_dir}/" \ - --libdir="${pkg_install_dir}/lib" \ - --enable-openmp=${enable_openmp} \ - --enable-static=no \ - --enable-shared=yes \ - --disable-c-tests \ - --disable-cpp-tests \ - ${config_flags} \ - --enable-nvidia-gpu-kernels=$([ "$TARGET" = "nvidia" ] && echo "yes" || echo "no") \ - --with-cuda-path=${CUDA_PATH:-${CUDA_HOME:-/CUDA_HOME-notset}} \ - --with-NVIDIA-GPU-compute-capability=$([ "$TARGET" = "nvidia" ] && echo "sm_$ARCH_NUM" || echo "sm_70") \ - FC=${MPIFC} \ - CC=${MPICC} \ - CXX=${MPICXX} \ - CPP="cpp -E" \ - FCFLAGS="${FCFLAGS} ${MATH_CFLAGS} ${SCALAPACK_CFLAGS} ${AVX_flag} ${FMA_flag} ${SSE4_flag} ${AVX512_flags} -fno-lto" \ - CFLAGS="${CFLAGS} ${MATH_CFLAGS} ${SCALAPACK_CFLAGS} ${AVX_flag} ${FMA_flag} ${SSE4_flag} ${AVX512_flags} -fno-lto" \ - CXXFLAGS="${CXXFLAGS} ${MATH_CFLAGS} ${SCALAPACK_CFLAGS} ${AVX_flag} ${FMA_flag} ${SSE4_flag} ${AVX512_flags} -fno-lto" \ - LDFLAGS="-Wl,--allow-multiple-definition -Wl,--enable-new-dtags ${MATH_LDFLAGS} ${SCALAPACK_LDFLAGS} ${cray_ldflags} -lstdc++" \ - LIBS="${SCALAPACK_LIBS} $(resolve_string "${MATH_LIBS}" "MPI")" \ - > configure.log 2>&1 || tail -n ${LOG_LINES} configure.log + echo "Installing from scratch into ${pkg_install_dir}" + mkdir -p "build_${TARGET}" + cd "build_${TARGET}" + if [ "${with_amd}" != "__DONTUSE__" ] && [ "${WITH_FLANG}" = "yes" ] ; then + # special option for flang compiler + echo "AMD fortran compiler detected, enable special option operation" + ../configure --prefix="${pkg_install_dir}" \ + --libdir="${pkg_install_dir}/lib" \ + --enable-openmp=${enable_openmp} \ + --enable-static=no \ + --enable-shared=yes \ + --disable-c-tests \ + --disable-cpp-tests \ + ${config_flags} \ + --with-cuda-path=${CUDA_PATH:-${CUDA_HOME:-/CUDA_HOME-notset}} \ + --enable-nvidia-gpu-kernels=$([ "$TARGET" = "nvidia" ] && echo "yes" || echo "no") \ + --with-NVIDIA-GPU-compute-capability=$([ "$TARGET" = "nvidia" ] && echo "sm_$ARCH_NUM" || echo "sm_70") \ + --enable-nvidia-cub --with-cusolver \ + OMPI_MCA_plm_rsh_agent=/bin/false \ + FC=${MPIFC} \ + CC=${MPICC} \ + CXX=${MPICXX} \ + CPP="cpp -E" \ + FCFLAGS="${FCFLAGS} ${MATH_CFLAGS} ${SCALAPACK_CFLAGS} ${AVX_flag} ${FMA_flag} ${SSE4_flag} ${AVX512_flags} -fno-lto" \ + CFLAGS="${CFLAGS} ${MATH_CFLAGS} ${SCALAPACK_CFLAGS} ${AVX_flag} ${FMA_flag} ${SSE4_flag} ${AVX512_flags} -fno-lto" \ + CXXFLAGS="${CXXFLAGS} ${MATH_CFLAGS} ${SCALAPACK_CFLAGS} ${AVX_flag} ${FMA_flag} ${SSE4_flag} ${AVX512_flags} -fno-lto" \ + LDFLAGS="${MATH_LDFLAGS} ${SCALAPACK_LDFLAGS} ${cray_ldflags} -lstdc++" \ + LIBS="${SCALAPACK_LIBS} $(resolve_string "${MATH_LIBS}" "MPI") ${MPI_LIBS}" \ + SCALAPACK_LDFLAGS="${SCALAPACK_LDFLAGS}" \ + SCALAPACK_FCFLAGS="${SCALAPACK_CFLAGS}" \ + > configure.log 2>&1 || tail -n ${LOG_LINES} configure.log + # remove unsupported compile option in libtool + sed -i ./libtool \ + -e 's/\\$wl-soname //g' \ + -e 's/\\$wl--whole-archive\\$convenience \\$wl--no-whole-archive//g' \ + -e 's/\\$wl\\$soname //g' + else + # normal installation + ../configure --prefix="${pkg_install_dir}/" \ + --libdir="${pkg_install_dir}/lib" \ + --enable-openmp=${enable_openmp} \ + --enable-static=no \ + --enable-shared=yes \ + --disable-c-tests \ + --disable-cpp-tests \ + ${config_flags} \ + --enable-nvidia-gpu-kernels=$([ "$TARGET" = "nvidia" ] && echo "yes" || echo "no") \ + --with-cuda-path=${CUDA_PATH:-${CUDA_HOME:-/CUDA_HOME-notset}} \ + --with-NVIDIA-GPU-compute-capability=$([ "$TARGET" = "nvidia" ] && echo "sm_$ARCH_NUM" || echo "sm_70") \ + --enable-nvidia-cub --with-cusolver \ + FC=${MPIFC} \ + CC=${MPICC} \ + CXX=${MPICXX} \ + CPP="cpp -E" \ + FCFLAGS="${FCFLAGS} ${MATH_CFLAGS} ${SCALAPACK_CFLAGS} ${AVX_flag} ${FMA_flag} ${SSE4_flag} ${AVX512_flags} -fno-lto" \ + CFLAGS="${CFLAGS} ${MATH_CFLAGS} ${SCALAPACK_CFLAGS} ${AVX_flag} ${FMA_flag} ${SSE4_flag} ${AVX512_flags} -fno-lto" \ + CXXFLAGS="${CXXFLAGS} ${MATH_CFLAGS} ${SCALAPACK_CFLAGS} ${AVX_flag} ${FMA_flag} ${SSE4_flag} ${AVX512_flags} -fno-lto" \ + LDFLAGS="-Wl,--allow-multiple-definition -Wl,--enable-new-dtags ${MATH_LDFLAGS} ${SCALAPACK_LDFLAGS} ${cray_ldflags} -lstdc++" \ + LIBS="${SCALAPACK_LIBS} $(resolve_string "${MATH_LIBS}" "MPI")" \ + SCALAPACK_LDFLAGS="${SCALAPACK_LDFLAGS}" \ + SCALAPACK_FCFLAGS="${SCALAPACK_CFLAGS}" \ + > configure.log 2>&1 || tail -n ${LOG_LINES} configure.log + fi + make -j $(get_nprocs) > make.log 2>&1 || tail -n ${LOG_LINES} make.log + make install > install.log 2>&1 || tail -n ${LOG_LINES} install.log + cd .. + # link elpa + link=${pkg_install_dir}/include/elpa + if [[ ! -d $link ]]; then + ln -s ${pkg_install_dir}/include/elpa_openmp-${elpa_ver}/elpa $link + fi + done + cd .. + + write_checksums "${install_lock_file}" "${SCRIPT_DIR}/stage3/$(basename ${SCRIPT_NAME})" fi - make -j $(get_nprocs) > make.log 2>&1 || tail -n ${LOG_LINES} make.log - make install > install.log 2>&1 || tail -n ${LOG_LINES} install.log - cd .. - # link elpa - link=${pkg_install_dir}/include/elpa - if [[ ! -d $link ]]; then - ln -s ${pkg_install_dir}/include/elpa_openmp-${elpa_ver}/elpa $link + [ "$enable_openmp" != "yes" ] && elpa_dir_openmp="" + ELPA_CFLAGS="-I'${pkg_install_dir}/include/elpa${elpa_dir_openmp}-${elpa_ver}/modules' -I'${pkg_install_dir}/include/elpa${elpa_dir_openmp}-${elpa_ver}/elpa'" + ELPA_LDFLAGS="-L'${pkg_install_dir}/lib' -Wl,-rpath,'${pkg_install_dir}/lib'" + ;; + __SYSTEM__) + echo "==================== Finding ELPA from system paths ====================" + if [ "${PACK_RUN}" = "__TRUE__" ]; then + echo "--pack-run mode specified, skip system check" + exit 0 fi - done - cd .. - - write_checksums "${install_lock_file}" "${SCRIPT_DIR}/stage3/$(basename ${SCRIPT_NAME})" - fi - fi - [ "$enable_openmp" != "yes" ] && elpa_dir_openmp="" - ELPA_CFLAGS="-I'${pkg_install_dir}/include/elpa${elpa_dir_openmp}-${elpa_ver}/modules' -I'${pkg_install_dir}/include/elpa${elpa_dir_openmp}-${elpa_ver}/elpa'" - ELPA_LDFLAGS="-L'${pkg_install_dir}/lib' -Wl,-rpath,'${pkg_install_dir}/lib'" - ;; - __SYSTEM__) - echo "==================== Finding ELPA from system paths ====================" - check_lib -lelpa_openmp "ELPA" - # get the include paths - elpa_include="$(find_in_paths "elpa_openmp-*" $INCLUDE_PATHS)" - if [ "$elpa_include" != "__FALSE__" ]; then - echo "ELPA include directory threaded version is found to be $elpa_include" - ELPA_CFLAGS="-I'$elpa_include/modules' -I'$elpa_include/elpa'" - else - echo "Cannot find elpa_openmp-${elpa_ver} from paths $INCLUDE_PATHS" - exit 1 - fi - # get the lib paths - add_lib_from_paths ELPA_LDFLAGS "libelpa.*" $LIB_PATHS - ;; - __DONTUSE__) ;; + check_lib -lelpa_openmp "ELPA" + # get the include paths + elpa_include="$(find_in_paths "elpa_openmp-*" $INCLUDE_PATHS)" + if [ "$elpa_include" != "__FALSE__" ]; then + echo "ELPA include directory threaded version is found to be $elpa_include" + ELPA_CFLAGS="-I'$elpa_include/modules' -I'$elpa_include/elpa'" + else + echo "Cannot find elpa_openmp-${elpa_ver} from paths $INCLUDE_PATHS" + exit 1 + fi + # get the lib paths + add_lib_from_paths ELPA_LDFLAGS "libelpa.*" $LIB_PATHS + ;; + __DONTUSE__) ;; - *) - echo "==================== Linking ELPA to user paths ====================" - pkg_install_dir="$with_elpa" - check_dir "${pkg_install_dir}/include" - check_dir "${pkg_install_dir}/lib" - user_include_path="${pkg_install_dir}/include" - elpa_include="$(find_in_paths "elpa_openmp-*" user_include_path)" - if [ "$elpa_include" != "__FALSE__" ]; then - echo "ELPA include directory threaded version is found to be $elpa_include/modules" - check_dir "$elpa_include/modules" - ELPA_CFLAGS="-I'$elpa_include/modules' -I'$elpa_include/elpa'" - else - echo "Cannot find elpa_openmp-* from path $user_include_path" - exit 1 - fi - ELPA_LDFLAGS="-L'${pkg_install_dir}/lib' -Wl,-rpath,'${pkg_install_dir}/lib'" - ;; + *) + echo "==================== Linking ELPA to user paths ====================" + pkg_install_dir="$with_elpa" + check_dir "${pkg_install_dir}/include" + check_dir "${pkg_install_dir}/lib" + user_include_path="${pkg_install_dir}/include" + elpa_include="$(find_in_paths "elpa_openmp-*" user_include_path)" + if [ "$elpa_include" != "__FALSE__" ]; then + echo "ELPA include directory threaded version is found to be $elpa_include/modules" + check_dir "$elpa_include/modules" + ELPA_CFLAGS="-I'$elpa_include/modules' -I'$elpa_include/elpa'" + else + echo "Cannot find elpa_openmp-* from path $user_include_path" + exit 1 + fi + ELPA_LDFLAGS="-L'${pkg_install_dir}/lib' -Wl,-rpath,'${pkg_install_dir}/lib'" + ;; esac if [ "$with_elpa" != "__DONTUSE__" ]; then - ELPA_LIBS="-lelpa${elpa_dir_openmp}" - cat << EOF > "${BUILDDIR}/setup_elpa" + ELPA_LIBS="-lelpa${elpa_dir_openmp}" + cat << EOF > "${BUILDDIR}/setup_elpa" prepend_path CPATH "$elpa_include" EOF - if [ "$with_elpa" != "__SYSTEM__" ]; then - cat << EOF >> "${BUILDDIR}/setup_elpa" + if [ "$with_elpa" != "__SYSTEM__" ]; then + cat << EOF >> "${BUILDDIR}/setup_elpa" prepend_path PATH "$pkg_install_dir/bin" prepend_path LD_LIBRARY_PATH "$pkg_install_dir/lib" prepend_path CPATH "$pkg_install_dir/include" @@ -240,9 +266,9 @@ export PKG_CONFIG_PATH="$pkg_install_dir/lib/pkgconfig":\${PKG_CONFIG_PATH} export CMAKE_PREFIX_PATH="$pkg_install_dir":\${CMAKE_PREFIX_PATH} export ELPA_ROOT="$pkg_install_dir" EOF - fi - cat "${BUILDDIR}/setup_elpa" >> $SETUPFILE - cat << EOF >> "${BUILDDIR}/setup_elpa" + cat "${BUILDDIR}/setup_elpa" >> $SETUPFILE + fi + cat << EOF >> "${BUILDDIR}/setup_elpa" export ELPA_CFLAGS="${ELPA_CFLAGS}" export ELPA_LDFLAGS="${ELPA_LDFLAGS}" export ELPA_LIBS="${ELPA_LIBS}" diff --git a/toolchain/scripts/stage3/install_fftw.sh b/toolchain/scripts/stage3/install_fftw.sh index fac3c2040d..7f1a05dbcf 100755 --- a/toolchain/scripts/stage3/install_fftw.sh +++ b/toolchain/scripts/stage3/install_fftw.sh @@ -3,112 +3,131 @@ # TODO: Review and if possible fix shellcheck errors. # shellcheck disable=all -# Last Update in 2023-0901 - [ "${BASH_SOURCE[0]}" ] && SCRIPT_NAME="${BASH_SOURCE[0]}" || SCRIPT_NAME=$0 SCRIPT_DIR="$(cd "$(dirname "$SCRIPT_NAME")/.." && pwd -P)" -fftw_ver="3.3.10" -fftw_sha256="56c932549852cddcfafdab3820b0200c7742675be92179e59e6215b340e26467" -fftw_pkg="fftw-${fftw_ver}.tar.gz" - source "${SCRIPT_DIR}"/common_vars.sh source "${SCRIPT_DIR}"/tool_kit.sh source "${SCRIPT_DIR}"/signal_trap.sh +source "${SCRIPT_DIR}"/package_versions.sh + +# Load FFTW package variables with version suffix support +# Check for version configuration from environment or individual package setting +version_suffix="" +if [[ -n "${ABACUS_TOOLCHAIN_PACKAGE_VERSIONS}" ]]; then + # Check for individual package version override + if echo "${ABACUS_TOOLCHAIN_PACKAGE_VERSIONS}" | grep -q "fftw:alt"; then + version_suffix="alt" + elif echo "${ABACUS_TOOLCHAIN_PACKAGE_VERSIONS}" | grep -q "fftw:main"; then + version_suffix="main" + fi +fi +# Fall back to global version suffix if no individual setting +if [[ -z "$version_suffix" && -n "${ABACUS_TOOLCHAIN_VERSION_SUFFIX}" ]]; then + version_suffix="${ABACUS_TOOLCHAIN_VERSION_SUFFIX}" +fi +# Load package variables with appropriate version +load_package_vars "fftw" "$version_suffix" +fftw_pkg="fftw-${fftw_ver}.tar.gz" source "${INSTALLDIR}"/toolchain.conf source "${INSTALLDIR}"/toolchain.env [ -f "${BUILDDIR}/setup_fftw" ] && rm "${BUILDDIR}/setup_fftw" -FFTW_CFLAGS='' -FFTW_LDFLAGS='' -FFTW_LIBS='' +FFTW_CFLAGS="" +FFTW_LDFLAGS="" +FFTW_LIBS="" ! [ -d "${BUILDDIR}" ] && mkdir -p "${BUILDDIR}" cd "${BUILDDIR}" case "$with_fftw" in - __INSTALL__) - require_env MPI_LIBS - echo "==================== Installing FFTW ====================" - pkg_install_dir="${INSTALLDIR}/fftw-${fftw_ver}" - #pkg_install_dir="${HOME}/lib/fftw/${fftw_ver}-gcc8" - install_lock_file="$pkg_install_dir/install_successful" - - if verify_checksums "${install_lock_file}"; then - echo "fftw-${fftw_ver} is already installed, skipping it." - else - if [ -f ${fftw_pkg} ]; then - echo "${fftw_pkg} is found" - else - #download_pkg_from_ABACUS_org "${fftw_sha256}" "${fftw_pkg}" - url="http://www.fftw.org/${fftw_pkg}" - download_pkg_from_url "${fftw_sha256}" "${fftw_pkg}" "${url}" - fi - if [ "${PACK_RUN}" = "__TRUE__" ]; then - echo "--pack-run mode specified, skip installation" - else - echo "Installing from scratch into ${pkg_install_dir}" - [ -d fftw-${fftw_ver} ] && rm -rf fftw-${fftw_ver} - tar -xzf ${fftw_pkg} - cd fftw-${fftw_ver} - FFTW_FLAGS="--enable-openmp --enable-shared" - # fftw has mpi support but not compiled by default. so compile it if we build with mpi. - # it will create a second library to link with if needed - [ "${MPI_MODE}" != "no" ] && FFTW_FLAGS="--enable-mpi ${FFTW_FLAGS}" - if [ "${TARGET_CPU}" = "native" ]; then - if [ -f /proc/cpuinfo ]; then - grep '\bavx\b' /proc/cpuinfo 1> /dev/null && FFTW_FLAGS="${FFTW_FLAGS} --enable-avx" - grep '\bavx2\b' /proc/cpuinfo 1> /dev/null && FFTW_FLAGS="${FFTW_FLAGS} --enable-avx2" - grep '\bavx512f\b' /proc/cpuinfo 1> /dev/null && FFTW_FLAGS="${FFTW_FLAGS} --enable-avx512" + __INSTALL__) + require_env MPI_LIBS + echo "==================== Installing FFTW ====================" + pkg_install_dir="${INSTALLDIR}/fftw-${fftw_ver}" + install_lock_file="$pkg_install_dir/install_successful" + if verify_checksums "${install_lock_file}"; then + echo "fftw-${fftw_ver} is already installed, skipping it." + else + if [ -f ${fftw_pkg} ]; then + echo "${fftw_pkg} is found" + else + url="http://www.fftw.org/${fftw_pkg}" + download_pkg_from_url "${fftw_sha256}" "${fftw_pkg}" "${url}" + fi + if [ "${PACK_RUN}" = "__TRUE__" ]; then + echo "--pack-run mode specified, skip installation" + exit 0 + fi + echo "Installing from scratch into ${pkg_install_dir}" + [ -d fftw-${fftw_ver} ] && rm -rf fftw-${fftw_ver} + tar -xzf ${fftw_pkg} + cd fftw-${fftw_ver} + FFTW_FLAGS="--enable-openmp --enable-shared" + # fftw has mpi support but not compiled by default. so compile it if we build with mpi. + # it will create a second library to link with if needed + [ "${MPI_MODE}" != "no" ] && FFTW_FLAGS="--enable-mpi ${FFTW_FLAGS}" + if [ "${TARGET_CPU}" = "native" ]; then + if [ -f /proc/cpuinfo ]; then + grep '\bavx\b' /proc/cpuinfo 1> /dev/null && FFTW_FLAGS="${FFTW_FLAGS} --enable-avx" + grep '\bavx2\b' /proc/cpuinfo 1> /dev/null && FFTW_FLAGS="${FFTW_FLAGS} --enable-avx2" + grep '\bavx512f\b' /proc/cpuinfo 1> /dev/null && FFTW_FLAGS="${FFTW_FLAGS} --enable-avx512" + fi + fi + # ABACUS need float version and double version fftw at the same time + # install float version fftw + echo "install float version fftw" + ./configure --prefix="${pkg_install_dir}" \ + --libdir="${pkg_install_dir}/lib" \ + --enable-float \ + ${FFTW_FLAGS} \ + > configure.log 2>&1 || tail -n ${LOG_LINES} configure.log + make -j $(get_nprocs) > make.log 2>&1 || tail -n ${LOG_LINES} make.log + make install > install.log 2>&1 || tail -n ${LOG_LINES} install.log + # install double version fftw + echo "clean" + make distclean > /dev/null 2>&1 || true + echo "install double version fftw" + ./configure --prefix="${pkg_install_dir}" \ + --libdir="${pkg_install_dir}/lib" \ + ${FFTW_FLAGS} \ + > configure.log 2>&1 || tail -n ${LOG_LINES} configure.log + make -j $(get_nprocs) > make.log 2>&1 || tail -n ${LOG_LINES} make.log + make install > install.log 2>&1 || tail -n ${LOG_LINES} install.log + cd .. + write_checksums "${install_lock_file}" "${SCRIPT_DIR}/stage3/$(basename ${SCRIPT_NAME})" fi - fi - # ABACUS need float version and double version fftw at the same time - # install float version fftw - echo "install float version fftw" - ./configure --prefix=${pkg_install_dir} --libdir="${pkg_install_dir}/lib" ${FFTW_FLAGS} --enable-float \ - > configure.log 2>&1 || tail -n ${LOG_LINES} configure.log - make -j $(get_nprocs) > make.log 2>&1 || tail -n ${LOG_LINES} make.log - make install > install.log 2>&1 || tail -n ${LOG_LINES} install.log - # install double version fftw - echo "clean" - make distclean > /dev/null 2>&1 || true - echo "install double version fftw" - ./configure --prefix=${pkg_install_dir} --libdir="${pkg_install_dir}/lib" ${FFTW_FLAGS} \ - > configure.log 2>&1 || tail -n ${LOG_LINES} configure.log - make -j $(get_nprocs) > make.log 2>&1 || tail -n ${LOG_LINES} make.log - make install > install.log 2>&1 || tail -n ${LOG_LINES} install.log - cd .. - write_checksums "${install_lock_file}" "${SCRIPT_DIR}/stage3/$(basename ${SCRIPT_NAME})" - fi - fi - FFTW_CFLAGS="-I'${pkg_install_dir}/include'" - FFTW_LDFLAGS="-L'${pkg_install_dir}/lib' -Wl,-rpath,'${pkg_install_dir}/lib'" - ;; - __SYSTEM__) - echo "==================== Finding FFTW from system paths ====================" - check_lib -lfftw3 "FFTW" - check_lib -lfftw3_omp "FFTW" - [ "${MPI_MODE}" != "no" ] && check_lib -lfftw3_mpi "FFTW" - add_include_from_paths FFTW_CFLAGS "fftw3.h" FFTW_INC ${INCLUDE_PATHS} - add_lib_from_paths FFTW_LDFLAGS "libfftw3.*" ${LIB_PATHS} - ;; - __DONTUSE__) - # Nothing to do - ;; - *) - echo "==================== Linking FFTW to user paths ====================" - pkg_install_dir="$with_fftw" - check_dir "${pkg_install_dir}/lib" - check_dir "${pkg_install_dir}/include" - FFTW_CFLAGS="-I'${pkg_install_dir}/include'" - FFTW_LDFLAGS="-L'${pkg_install_dir}/lib' -Wl,-rpath,'${pkg_install_dir}/lib'" - ;; + FFTW_CFLAGS="-I'${pkg_install_dir}/include'" + FFTW_LDFLAGS="-L'${pkg_install_dir}/lib' -Wl,-rpath,'${pkg_install_dir}/lib'" + ;; + __SYSTEM__) + echo "==================== Finding FFTW from system paths ====================" + if [ "${PACK_RUN}" = "__TRUE__" ]; then + echo "--pack-run mode specified, skip system check" + exit 0 + fi + check_lib -lfftw3 "FFTW" + check_lib -lfftw3_omp "FFTW" + [ "${MPI_MODE}" != "no" ] && check_lib -lfftw3_mpi "FFTW" + add_include_from_paths FFTW_CFLAGS "fftw3.h" FFTW_INC ${INCLUDE_PATHS} + add_lib_from_paths FFTW_LDFLAGS "libfftw3.*" ${LIB_PATHS} + ;; + __DONTUSE__) + ;; + *) + echo "==================== Linking FFTW to user paths ====================" + pkg_install_dir="$with_fftw" + check_dir "${pkg_install_dir}/lib" + check_dir "${pkg_install_dir}/include" + FFTW_CFLAGS="-I'${pkg_install_dir}/include'" + FFTW_LDFLAGS="-L'${pkg_install_dir}/lib' -Wl,-rpath,'${pkg_install_dir}/lib'" + ;; esac if [ "$with_fftw" != "__DONTUSE__" ]; then - [ "$MPI_MODE" != "no" ] && FFTW_LIBS="IF_MPI(-lfftw3_mpi|)" - FFTW_LIBS+="-lfftw3 -lfftw3_omp" - if [ "$with_fftw" != "__SYSTEM__" ]; then - cat << EOF > "${BUILDDIR}/setup_fftw" + [ "$MPI_MODE" != "no" ] && FFTW_LIBS="IF_MPI(-lfftw3_mpi|)" + FFTW_LIBS+="-lfftw3 -lfftw3_omp" + if [ "$with_fftw" != "__SYSTEM__" ]; then + cat << EOF > "${BUILDDIR}/setup_fftw" prepend_path LD_LIBRARY_PATH "$pkg_install_dir/lib" prepend_path LD_RUN_PATH "$pkg_install_dir/lib" prepend_path LIBRARY_PATH "$pkg_install_dir/lib" @@ -122,9 +141,9 @@ export CPATH="$pkg_install_dir/include":\${CPATH} export PKG_CONFIG_PATH="$pkg_install_dir/lib/pkgconfig":\${PKG_CONFIG_PATH} export CMAKE_PREFIX_PATH="$pkg_install_dir":\${CMAKE_PREFIX_PATH} EOF - fi - # we may also want to cover FFT_SG - cat << EOF >> "${BUILDDIR}/setup_fftw" + fi + # we may also want to cover FFT_SG + cat << EOF >> "${BUILDDIR}/setup_fftw" export FFTW3_INCLUDES="${FFTW_CFLAGS}" export FFTW3_LIBS="${FFTW_LIBS}" export FFTW_CFLAGS="${FFTW_CFLAGS}" @@ -137,7 +156,7 @@ export CP_LIBS="${FFTW_LIBS} \${CP_LIBS}" export FFTW_ROOT=${FFTW_ROOT:-${pkg_install_dir}} export FFTW3_ROOT=${pkg_install_dir} EOF - cat "${BUILDDIR}/setup_fftw" >> $SETUPFILE + cat "${BUILDDIR}/setup_fftw" >> $SETUPFILE fi cd "${ROOTDIR}" diff --git a/toolchain/scripts/stage3/install_libxc.sh b/toolchain/scripts/stage3/install_libxc.sh index 3eeac7a658..4fc7ff6609 100755 --- a/toolchain/scripts/stage3/install_libxc.sh +++ b/toolchain/scripts/stage3/install_libxc.sh @@ -8,13 +8,29 @@ [ "${BASH_SOURCE[0]}" ] && SCRIPT_NAME="${BASH_SOURCE[0]}" || SCRIPT_NAME=$0 SCRIPT_DIR="$(cd "$(dirname "$SCRIPT_NAME")/.." && pwd -P)" -# libxc_ver="6.2.2" -# libxc_sha256="a0f6f1bba7ba5c0c85b2bfe65aca1591025f509a7f11471b4cd651a79491b045" -libxc_ver="7.0.0" -libxc_sha256="e9ae69f8966d8de6b7585abd9fab588794ada1fab8f689337959a35abbf9527d" source "${SCRIPT_DIR}"/common_vars.sh source "${SCRIPT_DIR}"/tool_kit.sh source "${SCRIPT_DIR}"/signal_trap.sh +source "${SCRIPT_DIR}"/package_versions.sh + +# Load LibXC package variables with version suffix support +# Check for version configuration from environment or individual package setting +version_suffix="" +if [[ -n "${ABACUS_TOOLCHAIN_PACKAGE_VERSIONS}" ]]; then + # Check for individual package version override + if echo "${ABACUS_TOOLCHAIN_PACKAGE_VERSIONS}" | grep -q "libxc:alt"; then + version_suffix="alt" + elif echo "${ABACUS_TOOLCHAIN_PACKAGE_VERSIONS}" | grep -q "libxc:main"; then + version_suffix="main" + fi +fi +# Fall back to global version suffix if no individual setting +if [[ -z "$version_suffix" && -n "${ABACUS_TOOLCHAIN_VERSION_SUFFIX}" ]]; then + version_suffix="${ABACUS_TOOLCHAIN_VERSION_SUFFIX}" +fi +# Load package variables with appropriate version +load_package_vars "libxc" "$version_suffix" +libxc_pkg="libxc-${libxc_ver}.tar.bz2" source "${INSTALLDIR}"/toolchain.conf source "${INSTALLDIR}"/toolchain.env @@ -27,72 +43,76 @@ LIBXC_LIBS="" cd "${BUILDDIR}" case "$with_libxc" in - __INSTALL__) - echo "==================== Installing LIBXC ====================" - pkg_install_dir="${INSTALLDIR}/libxc-${libxc_ver}" - #pkg_install_dir="${HOME}/lib/libxc/${libxc_ver}-gcc8" - install_lock_file="$pkg_install_dir/install_successful" - libxc_pkg="libxc-${libxc_ver}.tar.bz2" - if verify_checksums "${install_lock_file}"; then - echo "libxc-${libxc_ver} is already installed, skipping it." - else - if [ -f ${libxc_pkg} ]; then - echo "${libxc_pkg} is found" - else - #download_pkg_from_ABACUS_org "${libxc_sha256}" "${libxc_pkg}" - libxc_url="https://gitlab.com/libxc/libxc/-/archive/${libxc_ver}/${libxc_pkg}" - download_pkg_from_url "${libxc_sha256}" "${libxc_pkg}" "${libxc_url}" - fi - if [ "${PACK_RUN}" = "__TRUE__" ]; then - echo "--pack-run mode specified, skip installation" - else - echo "Installing from scratch into ${pkg_install_dir}" - [ -d libxc-${libxc_ver} ] && rm -rf libxc-${libxc_ver} - tar -xjf ${libxc_pkg} - cd libxc-${libxc_ver} - # using cmake method to install libxc is neccessary for abacus - mkdir build - cd build - cmake \ - -DCMAKE_BUILD_TYPE=Release \ - -DCMAKE_INSTALL_PREFIX=${pkg_install_dir} \ - -DBUILD_SHARED_LIBS=YES \ - -DCMAKE_INSTALL_LIBDIR=lib \ - -DCMAKE_VERBOSE_MAKEFILE=ON \ - -DENABLE_FORTRAN=ON \ - -DENABLE_PYTHON=OFF \ - -DBUILD_TESTING=OFF .. \ - > configure.log 2>&1 || tail -n ${LOG_LINES} configure.log - make -j $(get_nprocs) > make.log 2>&1 || tail -n ${LOG_LINES} make.log - make install > install.log 2>&1 || tail -n ${LOG_LINES} install.log - cd ../.. - write_checksums "${install_lock_file}" "${SCRIPT_DIR}/stage3/$(basename ${SCRIPT_NAME})" - fi - fi - LIBXC_CFLAGS="-I'${pkg_install_dir}/include'" - LIBXC_LDFLAGS="-L'${pkg_install_dir}/lib' -Wl,-rpath,'${pkg_install_dir}/lib'" - ;; - __SYSTEM__) - echo "==================== Finding LIBXC from system paths ====================" - check_lib -lxcf03 "libxc" - check_lib -lxc "libxc" - add_include_from_paths LIBXC_CFLAGS "xc.h" $INCLUDE_PATHS - add_lib_from_paths LIBXC_LDFLAGS "libxc.*" $LIB_PATHS - ;; - __DONTUSE__) ;; - *) - echo "==================== Linking LIBXC to user paths ====================" - pkg_install_dir="$with_libxc" - check_dir "${pkg_install_dir}/lib" - check_dir "${pkg_install_dir}/include" - LIBXC_CFLAGS="-I'${pkg_install_dir}/include'" - LIBXC_LDFLAGS="-L'${pkg_install_dir}/lib' -Wl,-rpath,'${pkg_install_dir}/lib'" - ;; + __INSTALL__) + echo "==================== Installing LIBXC ====================" + pkg_install_dir="${INSTALLDIR}/libxc-${libxc_ver}" + #pkg_install_dir="${HOME}/lib/libxc/${libxc_ver}-gcc8" + install_lock_file="$pkg_install_dir/install_successful" + if verify_checksums "${install_lock_file}"; then + echo "libxc-${libxc_ver} is already installed, skipping it." + else + if [ -f ${libxc_pkg} ]; then + echo "${libxc_pkg} is found" + else + #download_pkg_from_ABACUS_org "${libxc_sha256}" "${libxc_pkg}" + libxc_url="https://gitlab.com/libxc/libxc/-/archive/${libxc_ver}/${libxc_pkg}" + download_pkg_from_url "${libxc_sha256}" "${libxc_pkg}" "${libxc_url}" + fi + if [ "${PACK_RUN}" = "__TRUE__" ]; then + echo "--pack-run mode specified, skip installation" + exit 0 + fi + echo "Installing from scratch into ${pkg_install_dir}" + [ -d libxc-${libxc_ver} ] && rm -rf libxc-${libxc_ver} + tar -xjf ${libxc_pkg} + cd libxc-${libxc_ver} + # using cmake method to install libxc is neccessary for abacus + mkdir build + cd build + cmake \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_INSTALL_PREFIX=${pkg_install_dir} \ + -DBUILD_SHARED_LIBS=YES \ + -DCMAKE_INSTALL_LIBDIR=lib \ + -DCMAKE_VERBOSE_MAKEFILE=ON \ + -DENABLE_FORTRAN=ON \ + -DENABLE_PYTHON=OFF \ + -DBUILD_TESTING=OFF .. \ + > configure.log 2>&1 || tail -n ${LOG_LINES} configure.log + make -j $(get_nprocs) > make.log 2>&1 || tail -n ${LOG_LINES} make.log + make install > install.log 2>&1 || tail -n ${LOG_LINES} install.log + cd ../.. + write_checksums "${install_lock_file}" "${SCRIPT_DIR}/stage3/$(basename ${SCRIPT_NAME})" + fi + LIBXC_CFLAGS="-I'${pkg_install_dir}/include'" + LIBXC_LDFLAGS="-L'${pkg_install_dir}/lib' -Wl,-rpath,'${pkg_install_dir}/lib'" + ;; + __SYSTEM__) + echo "==================== Finding LIBXC from system paths ====================" + if [ "${PACK_RUN}" = "__TRUE__" ]; then + echo "--pack-run mode specified, skip system check" + exit 0 + fi + check_lib -lxcf03 "libxc" + check_lib -lxc "libxc" + add_include_from_paths LIBXC_CFLAGS "xc.h" $INCLUDE_PATHS + add_lib_from_paths LIBXC_LDFLAGS "libxc.*" $LIB_PATHS + ;; + __DONTUSE__) ;; + + *) + echo "==================== Linking LIBXC to user paths ====================" + pkg_install_dir="$with_libxc" + check_dir "${pkg_install_dir}/lib" + check_dir "${pkg_install_dir}/include" + LIBXC_CFLAGS="-I'${pkg_install_dir}/include'" + LIBXC_LDFLAGS="-L'${pkg_install_dir}/lib' -Wl,-rpath,'${pkg_install_dir}/lib'" + ;; esac if [ "$with_libxc" != "__DONTUSE__" ]; then - LIBXC_LIBS="-lxcf03 -lxc" - if [ "$with_libxc" != "__SYSTEM__" ]; then - cat << EOF > "${BUILDDIR}/setup_libxc" + LIBXC_LIBS="-lxcf03 -lxc" + if [ "$with_libxc" != "__SYSTEM__" ]; then + cat << EOF > "${BUILDDIR}/setup_libxc" prepend_path LD_LIBRARY_PATH "$pkg_install_dir/lib" prepend_path LD_RUN_PATH "$pkg_install_dir/lib" prepend_path LIBRARY_PATH "$pkg_install_dir/lib" @@ -106,9 +126,9 @@ export CPATH="$pkg_install_dir/include":\${CPATH} export PKG_CONFIG_PATH="$pkg_install_dir/lib/pkgconfig":\${PKG_CONFIG_PATH} export CMAKE_PREFIX_PATH="$pkg_install_dir":\${CMAKE_PREFIX_PATH} EOF - cat "${BUILDDIR}/setup_libxc" >> $SETUPFILE - fi - cat << EOF >> "${BUILDDIR}/setup_libxc" + cat "${BUILDDIR}/setup_libxc" >> $SETUPFILE + fi + cat << EOF >> "${BUILDDIR}/setup_libxc" export LIBXC_CFLAGS="${LIBXC_CFLAGS}" export LIBXC_LDFLAGS="${LIBXC_LDFLAGS}" export LIBXC_LIBS="${LIBXC_LIBS}" diff --git a/toolchain/scripts/stage3/install_scalapack.sh b/toolchain/scripts/stage3/install_scalapack.sh index c2d6690bd1..3ffbf42c7d 100755 --- a/toolchain/scripts/stage3/install_scalapack.sh +++ b/toolchain/scripts/stage3/install_scalapack.sh @@ -3,100 +3,117 @@ # TODO: Review and if possible fix shellcheck errors. # shellcheck disable=all -# Last Update in 2024-0504 - [ "${BASH_SOURCE[0]}" ] && SCRIPT_NAME="${BASH_SOURCE[0]}" || SCRIPT_NAME=$0 SCRIPT_DIR="$(cd "$(dirname "$SCRIPT_NAME")/.." && pwd -P)" -scalapack_ver="2.2.2" -scalapack_sha256="a2f0c9180a210bf7ffe126c9cb81099cf337da1a7120ddb4cbe4894eb7b7d022" -scalapack_pkg="scalapack-${scalapack_ver}.tar.gz" - source "${SCRIPT_DIR}"/common_vars.sh source "${SCRIPT_DIR}"/tool_kit.sh source "${SCRIPT_DIR}"/signal_trap.sh +source "${SCRIPT_DIR}"/package_versions.sh + +# Load ScaLAPACK package variables with version suffix support +# Check for version configuration from environment or individual package setting +version_suffix="" +if [[ -n "${ABACUS_TOOLCHAIN_PACKAGE_VERSIONS}" ]]; then + # Check for individual package version override + if echo "${ABACUS_TOOLCHAIN_PACKAGE_VERSIONS}" | grep -q "scalapack:alt"; then + version_suffix="alt" + elif echo "${ABACUS_TOOLCHAIN_PACKAGE_VERSIONS}" | grep -q "scalapack:main"; then + version_suffix="main" + fi +fi +# Fall back to global version suffix if no individual setting +if [[ -z "$version_suffix" && -n "${ABACUS_TOOLCHAIN_VERSION_SUFFIX}" ]]; then + version_suffix="${ABACUS_TOOLCHAIN_VERSION_SUFFIX}" +fi +# Load package variables with appropriate version +load_package_vars "scalapack" "$version_suffix" +scalapack_pkg="scalapack-${scalapack_ver}.tar.gz" source "${INSTALLDIR}"/toolchain.conf source "${INSTALLDIR}"/toolchain.env [ -f "${BUILDDIR}/setup_scalapack" ] && rm "${BUILDDIR}/setup_scalapack" -SCALAPACK_CFLAGS='' -SCALAPACK_LDFLAGS='' -SCALAPACK_LIBS='' +SCALAPACK_CFLAGS="" +SCALAPACK_LDFLAGS="" +SCALAPACK_LIBS="" ! [ -d "${BUILDDIR}" ] && mkdir -p "${BUILDDIR}" cd "${BUILDDIR}" -case "$with_scalapack" in - __INSTALL__) - echo "==================== Installing ScaLAPACK ====================" - pkg_install_dir="${INSTALLDIR}/scalapack-${scalapack_ver}" - #pkg_install_dir="${HOME}/lib/scalapack/${scalapack_ver}-gcc8" - install_lock_file="$pkg_install_dir/install_successful" - if verify_checksums "${install_lock_file}"; then - echo "scalapack-${scalapack_ver} is already installed, skipping it." - else - require_env MATH_LIBS - if [ -f ${scalapack_pkg} ]; then - echo "${scalapack_pkg} is found" - else - url="https://codeload.github.com/Reference-ScaLAPACK/scalapack/tar.gz/v${scalapack_ver}" - download_pkg_from_url "${scalapack_sha256}" "${scalapack_pkg}" "${url}" - #download_pkg_from_ABACUS_org "${scalapack_sha256}" "${scalapack_pkg}" - fi - if [ "${PACK_RUN}" = "__TRUE__" ]; then - echo "--pack-run mode specified, skip installation" - else - echo "Installing from scratch into ${pkg_install_dir}" - [ -d scalapack-${scalapack_ver} ] && rm -rf scalapack-${scalapack_ver} - tar -xzf ${scalapack_pkg} +case "${with_scalapack}" in + __INSTALL__) + echo "==================== Installing ScaLAPACK ====================" + pkg_install_dir="${INSTALLDIR}/scalapack-${scalapack_ver}" + install_lock_file="$pkg_install_dir/install_successful" + if verify_checksums "${install_lock_file}"; then + echo "scalapack-${scalapack_ver} is already installed, skipping it." + else + require_env MATH_LIBS + if [ -f ${scalapack_pkg} ]; then + echo "${scalapack_pkg} is found" + else + url="https://codeload.github.com/Reference-ScaLAPACK/scalapack/tar.gz/v${scalapack_ver}" + download_pkg_from_url "${scalapack_sha256}" "${scalapack_pkg}" "${url}" + #download_pkg_from_ABACUS_org "${scalapack_sha256}" "${scalapack_pkg}" + fi + if [ "${PACK_RUN}" = "__TRUE__" ]; then + echo "--pack-run mode specified, skip installation" + exit 0 + fi + echo "Installing from scratch into ${pkg_install_dir}" + [ -d scalapack-${scalapack_ver} ] && rm -rf scalapack-${scalapack_ver} + tar -xzf ${scalapack_pkg} - mkdir -p "scalapack-${scalapack_ver}/build" - pushd "scalapack-${scalapack_ver}/build" > /dev/null + mkdir -p "scalapack-${scalapack_ver}/build" + pushd "scalapack-${scalapack_ver}/build" > /dev/null - cflags="" - fflags="" - if ("${FC}" --version | grep -q 'GNU'); then - cflags="-fpermissive" - fflags=$(allowed_gfortran_flags "-fallow-argument-mismatch") - fi - CFLAGS=${cflags} FFLAGS=${fflags} \ - cmake -DCMAKE_FIND_ROOT_PATH="$ROOTDIR" \ - -DCMAKE_INSTALL_PREFIX="${pkg_install_dir}" \ - -DCMAKE_INSTALL_LIBDIR="lib" \ - -DCMAKE_POSITION_INDEPENDENT_CODE=ON \ - -DCMAKE_VERBOSE_MAKEFILE=ON \ - -DBUILD_SHARED_LIBS=YES \ - -DCMAKE_BUILD_TYPE=Release .. \ - -DBUILD_TESTING=NO \ - -DSCALAPACK_BUILD_TESTS=NO \ - > configure.log 2>&1 || tail -n ${LOG_LINES} configure.log - make -j $(get_nprocs) > make.log 2>&1 || tail -n ${LOG_LINES} make.log - make install >> make.log 2>&1 || tail -n ${LOG_LINES} make.log + cflags="" + fflags="" + if ("${FC}" --version | grep -q 'GNU'); then + cflags="-fpermissive" + fflags=$(allowed_gfortran_flags "-fallow-argument-mismatch") + fi + CFLAGS=${cflags} FFLAGS=${fflags} \ + cmake -DCMAKE_FIND_ROOT_PATH="$ROOTDIR" \ + -DCMAKE_INSTALL_PREFIX="${pkg_install_dir}" \ + -DCMAKE_INSTALL_LIBDIR="lib" \ + -DCMAKE_POSITION_INDEPENDENT_CODE=ON \ + -DCMAKE_VERBOSE_MAKEFILE=ON \ + -DBUILD_SHARED_LIBS=YES \ + -DCMAKE_BUILD_TYPE=Release .. \ + -DBUILD_TESTING=NO \ + -DSCALAPACK_BUILD_TESTS=NO \ + > configure.log 2>&1 || tail -n ${LOG_LINES} configure.log + make -j $(get_nprocs) > make.log 2>&1 || tail -n ${LOG_LINES} make.log + make install >> make.log 2>&1 || tail -n ${LOG_LINES} make.log - popd > /dev/null - write_checksums "${install_lock_file}" "${SCRIPT_DIR}/stage3/$(basename ${SCRIPT_NAME})" - fi - fi - SCALAPACK_LDFLAGS="-L'${pkg_install_dir}/lib' -Wl,-rpath,'${pkg_install_dir}/lib'" - ;; - __SYSTEM__) - echo "==================== Finding ScaLAPACK from system paths ====================" - check_lib -lscalapack "ScaLAPACK" - add_lib_from_paths SCALAPACK_LDFLAGS "libscalapack.*" $LIB_PATHS - ;; - __DONTUSE__) ;; + popd > /dev/null + write_checksums "${install_lock_file}" "${SCRIPT_DIR}/stage3/$(basename ${SCRIPT_NAME})" + fi + SCALAPACK_LDFLAGS="-L'${pkg_install_dir}/lib' -Wl,-rpath,'${pkg_install_dir}/lib'" + ;; + __SYSTEM__) + echo "==================== Finding ScaLAPACK from system paths ====================" + if [ "${PACK_RUN}" = "__TRUE__" ]; then + echo "--pack-run mode specified, skip system check" + exit 0 + fi + check_lib -lscalapack "ScaLAPACK" + add_lib_from_paths SCALAPACK_LDFLAGS "libscalapack.*" $LIB_PATHS + ;; + __DONTUSE__) ;; - *) - echo "==================== Linking ScaLAPACK to user paths ====================" - pkg_install_dir="$with_scalapack" - check_dir "${pkg_install_dir}/lib" - SCALAPACK_LDFLAGS="-L'${pkg_install_dir}/lib' -Wl,-rpath,'${pkg_install_dir}/lib'" - ;; + *) + echo "==================== Linking ScaLAPACK to user paths ====================" + pkg_install_dir="$with_scalapack" + check_dir "${pkg_install_dir}/lib" + SCALAPACK_LDFLAGS="-L'${pkg_install_dir}/lib' -Wl,-rpath,'${pkg_install_dir}/lib'" + ;; esac if [ "$with_scalapack" != "__DONTUSE__" ]; then - SCALAPACK_LIBS="-lscalapack" - if [ "$with_scalapack" != "__SYSTEM__" ]; then - cat << EOF > "${BUILDDIR}/setup_scalapack" + SCALAPACK_LIBS="-lscalapack" + if [ "$with_scalapack" != "__SYSTEM__" ]; then + cat << EOF > "${BUILDDIR}/setup_scalapack" prepend_path LD_LIBRARY_PATH "${pkg_install_dir}/lib" prepend_path LD_RUN_PATH "${pkg_install_dir}/lib" prepend_path LIBRARY_PATH "${pkg_install_dir}/lib" @@ -109,9 +126,9 @@ export PKG_CONFIG_PATH="${pkg_install_dir}/lib/pkgconfig":\${PKG_CONFIG_PATH} export CMAKE_PREFIX_PATH="${pkg_install_dir}":\${CMAKE_PREFIX_PATH} export SCALAPACK_ROOT="${pkg_install_dir}" EOF - cat "${BUILDDIR}/setup_scalapack" >> $SETUPFILE - fi - cat << EOF >> "${BUILDDIR}/setup_scalapack" + cat "${BUILDDIR}/setup_scalapack" >> $SETUPFILE + fi + cat << EOF >> "${BUILDDIR}/setup_scalapack" export SCALAPACK_LDFLAGS="${SCALAPACK_LDFLAGS}" export SCALAPACK_LIBS="${SCALAPACK_LIBS}" export SCALAPACK_ROOT="${pkg_install_dir}" diff --git a/toolchain/scripts/stage4/install_cereal.sh b/toolchain/scripts/stage4/install_cereal.sh index a6c597d69f..5d5852a337 100755 --- a/toolchain/scripts/stage4/install_cereal.sh +++ b/toolchain/scripts/stage4/install_cereal.sh @@ -5,16 +5,33 @@ # CEREAL is not need any complex setting # Only problem is the installation from github.com -# Last Update in 2025-0504 - [ "${BASH_SOURCE[0]}" ] && SCRIPT_NAME="${BASH_SOURCE[0]}" || SCRIPT_NAME=$0 SCRIPT_DIR="$(cd "$(dirname "$SCRIPT_NAME")/.." && pwd -P)" -cereal_ver="master" # latest version, instead of "1.3.2" -cereal_sha256="--no-checksum" # latest version cannot maintain checksum source "${SCRIPT_DIR}"/common_vars.sh source "${SCRIPT_DIR}"/tool_kit.sh source "${SCRIPT_DIR}"/signal_trap.sh +source "${SCRIPT_DIR}"/package_versions.sh + +# Load Cereal package variables with version suffix support +# Check for version configuration from environment or individual package setting +version_suffix="" +if [[ -n "${ABACUS_TOOLCHAIN_PACKAGE_VERSIONS}" ]]; then + # Check for individual package version override + if echo "${ABACUS_TOOLCHAIN_PACKAGE_VERSIONS}" | grep -q "cereal:alt"; then + version_suffix="alt" + elif echo "${ABACUS_TOOLCHAIN_PACKAGE_VERSIONS}" | grep -q "cereal:main"; then + version_suffix="main" + fi +fi +# Fall back to global version suffix if no individual setting +if [[ -z "$version_suffix" && -n "${ABACUS_TOOLCHAIN_VERSION_SUFFIX}" ]]; then + version_suffix="${ABACUS_TOOLCHAIN_VERSION_SUFFIX}" +fi +# Load package variables with appropriate version +load_package_vars "cereal" "$version_suffix" +dirname="cereal-${cereal_ver}" +filename="cereal-${cereal_ver}.tar.gz" source "${INSTALLDIR}"/toolchain.conf source "${INSTALLDIR}"/toolchain.env @@ -25,67 +42,97 @@ CEREAL_CFLAGS="" cd "${BUILDDIR}" case "$with_cereal" in - __INSTALL__) - echo "==================== Installing CEREAL ====================" - dirname="cereal-${cereal_ver}" - pkg_install_dir="${INSTALLDIR}/$dirname" - #pkg_install_dir="${HOME}/lib/cereal/${cereal_ver}" - install_lock_file="$pkg_install_dir/install_successful" - url="https://codeload.github.com/USCiLab/cereal/tar.gz/${cereal_ver}" - filename="cereal-${cereal_ver}.tar.gz" - if verify_checksums "${install_lock_file}"; then - echo "$dirname is already installed, skipping it." - else - if [ -f $filename ]; then - echo "$filename is found" + __INSTALL__) + echo "==================== Installing CEREAL ====================" + pkg_install_dir="${INSTALLDIR}/$dirname" + #pkg_install_dir="${HOME}/lib/cereal/${cereal_ver}" + install_lock_file="$pkg_install_dir/install_successful" + # url construction rules: + # - Branch names (master, main, develop) without v prefix + # - Version tags (e.g., 1.0.0) with v prefix + if [[ "${cereal_ver}" =~ ^(master|main|develop)$ ]]; then + url="https://codeload.github.com/USCiLab/cereal/tar.gz/${cereal_ver}" else - # download from github.com and checksum - echo "===> Notice: This version of CEREAL is downloaded in GitHub master repository <===" - download_pkg_from_url "${cereal_sha256}" "${filename}" "${url}" + url="https://codeload.github.com/USCiLab/cereal/tar.gz/v${cereal_ver}" fi - if [ "${PACK_RUN}" = "__TRUE__" ]; then - echo "--pack-run mode specified, skip installation" - else - echo "Installing from scratch into ${pkg_install_dir}" - [ -d $dirname ] && rm -rf $dirname - tar -xzf $filename - #unzip -q $filename - mkdir -p "${pkg_install_dir}" - cp -r $dirname/* "${pkg_install_dir}/" - write_checksums "${install_lock_file}" "${SCRIPT_DIR}/stage4/$(basename ${SCRIPT_NAME})" - fi - fi - CEREAL_CFLAGS="-I'${pkg_install_dir}'" + if verify_checksums "${install_lock_file}"; then + echo "$dirname is already installed, skipping it." + else + if [ -f $filename ]; then + echo "$filename is found" + else + # download from github.com and checksum + echo "===> Notice: This version of CEREAL is downloaded in GitHub master repository <===" + download_pkg_from_url "${cereal_sha256}" "${filename}" "${url}" + fi + if [ "${PACK_RUN}" = "__TRUE__" ]; then + echo "--pack-run mode specified, skip installation" + exit 0 + fi + echo "Installing from scratch into ${pkg_install_dir}" + [ -d $dirname ] && rm -rf $dirname + tar -xzf $filename + #unzip -q $filename + # apply patch files for libri installation in issue #6190, Kai Luo + # echo ${SCRIPT_DIR} + cd $dirname && pwd && patch -p1 < ${SCRIPT_DIR}/patches/6190.patch + cd "${BUILDDIR}" + # + mkdir -p "${pkg_install_dir}" + cp -r $dirname/* "${pkg_install_dir}/" + write_checksums "${install_lock_file}" "${SCRIPT_DIR}/stage4/$(basename ${SCRIPT_NAME})" + fi + CEREAL_CFLAGS="-I'${pkg_install_dir}'" ;; __SYSTEM__) - echo "==================== CANNOT Finding CEREAL from system paths NOW ====================" - recommend_offline_installation $filename $url - # How to do it in cereal? -- Zhaoqing in 2023/08/23 - # check_lib -lxcf03 "libxc" - # check_lib -lxc "libxc" - # add_include_from_paths LIBXC_CFLAGS "xc.h" $INCLUDE_PATHS - # add_lib_from_paths LIBXC_LDFLAGS "libxc.*" $LIB_PATHS + echo "==================== Finding CEREAL from system paths ====================" + if [ "${PACK_RUN}" = "__TRUE__" ]; then + echo "--pack-run mode specified, skip system check" + exit 0 + fi + # Find cereal header file and derive package root directory + cereal_header_path="$(find_in_paths "cereal/cereal.hpp" $INCLUDE_PATHS)" + if [ "$cereal_header_path" != "__FALSE__" ]; then + # Derive pkg_install_dir from found header path + # cereal/cereal.hpp -> remove /cereal/cereal.hpp -> get include dir -> get parent dir + cereal_include_dir="$(dirname "$(dirname "$cereal_header_path")")" + pkg_install_dir="$(dirname "$cereal_include_dir")" + echo "Found cereal at: $pkg_install_dir" + CEREAL_CFLAGS="-I'${cereal_include_dir}'" + else + report_error "Cannot find cereal/cereal.hpp in system paths" + exit 1 + fi ;; __DONTUSE__) ;; *) - echo "==================== Linking CEREAL to user paths ====================" - check_dir "${pkg_install_dir}" - CEREAL_CFLAGS="-I'${pkg_install_dir}'" - ;; + echo "==================== Linking CEREAL to user paths ====================" + pkg_install_dir="${with_cereal}" + check_dir "${pkg_install_dir}" + CEREAL_CFLAGS="-I'${pkg_install_dir}'" + ;; esac if [ "$with_cereal" != "__DONTUSE__" ]; then if [ "$with_cereal" != "__SYSTEM__" ]; then - # LibRI deps should find cereal include in CPATH cat << EOF > "${BUILDDIR}/setup_cereal" prepend_path CPATH "$pkg_install_dir/include" +prepend_path CMAKE_PREFIX_PATH "${pkg_install_dir}/include" export CPATH="${pkg_install_dir}/include":\${CPATH} +export CMAKE_PREFIX_PATH="${pkg_install_dir}/include":\${CMAKE_PREFIX_PATH} +export CEREAL_ROOT="$pkg_install_dir" +EOF + else + cat << EOF > "${BUILDDIR}/setup_cereal" +export CEREAL_ROOT="$pkg_install_dir" EOF - cat "${BUILDDIR}/setup_cereal" >> $SETUPFILE fi + cat "${BUILDDIR}/setup_cereal" >> $SETUPFILE cat << EOF >> "${BUILDDIR}/setup_cereal" export CEREAL_CFLAGS="${CEREAL_CFLAGS}" -export CEREAL_ROOT="$pkg_install_dir" +export CP_DFLAGS="\${CP_DFLAGS} -D__CEREAL" +export CP_CFLAGS="\${CP_CFLAGS} ${CEREAL_CFLAGS}" +export CEREAL_VERSION="${cereal_ver}" EOF fi diff --git a/toolchain/scripts/stage4/install_libcomm.sh b/toolchain/scripts/stage4/install_libcomm.sh index ccb39061ea..f5b0c22715 100755 --- a/toolchain/scripts/stage4/install_libcomm.sh +++ b/toolchain/scripts/stage4/install_libcomm.sh @@ -12,11 +12,30 @@ [ "${BASH_SOURCE[0]}" ] && SCRIPT_NAME="${BASH_SOURCE[0]}" || SCRIPT_NAME=$0 SCRIPT_DIR="$(cd "$(dirname "$SCRIPT_NAME")/.." && pwd -P)" -libcomm_ver="master" -libcomm_sha256="--no-checksum" source "${SCRIPT_DIR}"/common_vars.sh source "${SCRIPT_DIR}"/tool_kit.sh source "${SCRIPT_DIR}"/signal_trap.sh +source "${SCRIPT_DIR}"/package_versions.sh + +# Load LibComm package variables with version suffix support +# Check for version configuration from environment or individual package setting +version_suffix="" +if [[ -n "${ABACUS_TOOLCHAIN_PACKAGE_VERSIONS}" ]]; then + # Check for individual package version override + if echo "${ABACUS_TOOLCHAIN_PACKAGE_VERSIONS}" | grep -q "libcomm:alt"; then + version_suffix="alt" + elif echo "${ABACUS_TOOLCHAIN_PACKAGE_VERSIONS}" | grep -q "libcomm:main"; then + version_suffix="main" + fi +fi +# Fall back to global version suffix if no individual setting +if [[ -z "$version_suffix" && -n "${ABACUS_TOOLCHAIN_VERSION_SUFFIX}" ]]; then + version_suffix="${ABACUS_TOOLCHAIN_VERSION_SUFFIX}" +fi +# Load package variables with appropriate version +load_package_vars "libcomm" "$version_suffix" +dirname="LibComm-${libcomm_ver}" +filename="LibComm-${libcomm_ver}.tar.gz" source "${INSTALLDIR}"/toolchain.conf source "${INSTALLDIR}"/toolchain.env @@ -27,54 +46,71 @@ libcomm_CFLAGS="" cd "${BUILDDIR}" case "$with_libcomm" in - __INSTALL__) - echo "==================== Installing LIBCOMM ====================" - dirname="LibComm-${libcomm_ver}" - pkg_install_dir="${INSTALLDIR}/$dirname" - #pkg_install_dir="${HOME}/lib/libcomm/${libcomm_ver}" - install_lock_file="$pkg_install_dir/install_successful" - # url="https://github.com/abacusmodeling/LibComm/archive/refs/tags/v${libcomm_ver}.tar.gz" - filename="LibComm-${libcomm_ver}.tar.gz" - url="https://codeload.github.com/abacusmodeling/LibComm/tar.gz/${libcomm_ver}" - if verify_checksums "${install_lock_file}"; then - echo "$dirname is already installed, skipping it." - else - if [ -f $filename ]; then - echo "$filename is found" + __INSTALL__) + echo "==================== Installing LIBCOMM ====================" + pkg_install_dir="${INSTALLDIR}/$dirname" + #pkg_install_dir="${HOME}/lib/libcomm/${libcomm_ver}" + install_lock_file="$pkg_install_dir/install_successful" + # url="https://github.com/abacusmodeling/LibComm/archive/refs/tags/v${libcomm_ver}.tar.gz" + # url construction rules: + # - Branch names (master, main, develop) without v prefix + # - Version tags (e.g., 1.0.0) with v prefix + if [[ "${libcomm_ver}" =~ ^(master|main|develop)$ ]]; then + url="https://codeload.github.com/abacusmodeling/LibComm/tar.gz/${libcomm_ver}" else - # download from github.com and checksum - echo "===> Notice: This version of LibComm is downloaded in GitHub master repository <===" - download_pkg_from_url "${libcomm_sha256}" "${filename}" "${url}" + url="https://codeload.github.com/abacusmodeling/LibComm/tar.gz/v${libcomm_ver}" fi - if [ "${PACK_RUN}" = "__TRUE__" ]; then - echo "--pack-run mode specified, skip installation" - else - echo "Installing from scratch into ${pkg_install_dir}" - [ -d $dirname ] && rm -rf $dirname - tar -xzf $filename - # unzip -q $filename - cp -r $dirname "${pkg_install_dir}/" - write_checksums "${install_lock_file}" "${SCRIPT_DIR}/stage4/$(basename ${SCRIPT_NAME})" - fi - fi - LIBCOMM_CFLAGS="-I'${pkg_install_dir}'" + if verify_checksums "${install_lock_file}"; then + echo "$dirname is already installed, skipping it." + else + if [ -f $filename ]; then + echo "$filename is found" + else + # download from github.com and checksum + echo "===> Notice: This version of LibComm is downloaded in GitHub master repository <===" + download_pkg_from_url "${libcomm_sha256}" "${filename}" "${url}" + fi + if [ "${PACK_RUN}" = "__TRUE__" ]; then + echo "--pack-run mode specified, skip installation" + exit 0 + fi + echo "Installing from scratch into ${pkg_install_dir}" + [ -d $dirname ] && rm -rf $dirname + tar -xzf $filename + mkdir -p "${pkg_install_dir}" + cp -r $dirname/* "${pkg_install_dir}/" + write_checksums "${install_lock_file}" "${SCRIPT_DIR}/stage4/$(basename ${SCRIPT_NAME})" + fi + LIBCOMM_CFLAGS="-I'${pkg_install_dir}'" ;; __SYSTEM__) - echo "==================== CANNOT Finding LIBCOMM from system paths NOW ====================" - recommend_offline_installation $filename $url - # How to do it in libcomm? -- Zhaoqing in 2023/08/23 - # check_lib -lxcf03 "libxc" - # check_lib -lxc "libxc" - # add_include_from_paths LIBXC_CFLAGS "xc.h" $INCLUDE_PATHS - # add_lib_from_paths LIBXC_LDFLAGS "libxc.*" $LIB_PATHS + echo "==================== Finding LIBCOMM from system paths ====================" + if [ "${PACK_RUN}" = "__TRUE__" ]; then + echo "--pack-run mode specified, skip system check" + exit 0 + fi + # Find libcomm header file and derive package root directory + libcomm_header_path="$(find_in_paths "Comm/Comm_Tools.h" $INCLUDE_PATHS)" + if [ "$libcomm_header_path" != "__FALSE__" ]; then + # Derive pkg_install_dir from found header path + # Comm/Comm_Tools.h -> remove /Comm/Comm_Tools.h -> get include dir -> get parent dir + libcomm_include_dir="$(dirname "$(dirname "$libcomm_header_path")")" + pkg_install_dir="$(dirname "$libcomm_include_dir")" + echo "Found libcomm at: $pkg_install_dir" + LIBCOMM_CFLAGS="-I'${libcomm_include_dir}'" + else + report_error "Cannot find Comm/Comm_Tools.h in system paths" + exit 1 + fi ;; __DONTUSE__) ;; *) - echo "==================== Linking LIBCOMM to user paths ====================" - check_dir "${pkg_install_dir}" - LIBCOMM_CFLAGS="-I'${pkg_install_dir}'" - ;; + echo "==================== Linking LIBCOMM to user paths ====================" + pkg_install_dir="${with_libcomm}" + check_dir "${pkg_install_dir}" + LIBCOMM_CFLAGS="-I'${pkg_install_dir}'" + ;; esac if [ "$with_libcomm" != "__DONTUSE__" ]; then if [ "$with_libcomm" != "__SYSTEM__" ]; then diff --git a/toolchain/scripts/stage4/install_libnpy.sh b/toolchain/scripts/stage4/install_libnpy.sh index ebca6214e7..aa2f59df32 100755 --- a/toolchain/scripts/stage4/install_libnpy.sh +++ b/toolchain/scripts/stage4/install_libnpy.sh @@ -11,11 +11,30 @@ [ "${BASH_SOURCE[0]}" ] && SCRIPT_NAME="${BASH_SOURCE[0]}" || SCRIPT_NAME=$0 SCRIPT_DIR="$(cd "$(dirname "$SCRIPT_NAME")/.." && pwd -P)" -libnpy_ver="1.0.1" -libnpy_sha256="43452a4db1e8c1df606c64376ea1e32789124051d7640e7e4e8518ab4f0fba44" source "${SCRIPT_DIR}"/common_vars.sh source "${SCRIPT_DIR}"/tool_kit.sh source "${SCRIPT_DIR}"/signal_trap.sh +source "${SCRIPT_DIR}"/package_versions.sh + +# Load LibNPY package variables with version suffix support +# Check for version configuration from environment or individual package setting +version_suffix="" +if [[ -n "${ABACUS_TOOLCHAIN_PACKAGE_VERSIONS}" ]]; then + # Check for individual package version override + if echo "${ABACUS_TOOLCHAIN_PACKAGE_VERSIONS}" | grep -q "libnpy:alt"; then + version_suffix="alt" + elif echo "${ABACUS_TOOLCHAIN_PACKAGE_VERSIONS}" | grep -q "libnpy:main"; then + version_suffix="main" + fi +fi +# Fall back to global version suffix if no individual setting +if [[ -z "$version_suffix" && -n "${ABACUS_TOOLCHAIN_VERSION_SUFFIX}" ]]; then + version_suffix="${ABACUS_TOOLCHAIN_VERSION_SUFFIX}" +fi +# Load package variables with appropriate version +load_package_vars "libnpy" "$version_suffix" +dirname="libnpy-${libnpy_ver}" +filename="libnpy-${libnpy_ver}.tar.gz" source "${INSTALLDIR}"/toolchain.conf source "${INSTALLDIR}"/toolchain.env @@ -26,53 +45,63 @@ LIBNPY_CFLAGS="" cd "${BUILDDIR}" case "$with_libnpy" in - __INSTALL__) - echo "==================== Installing LIBNPY ====================" - dirname="libnpy-${libnpy_ver}" - pkg_install_dir="${INSTALLDIR}/$dirname" - #pkg_install_dir="${HOME}/lib/libnpy/${libnpy_ver}" - install_lock_file="$pkg_install_dir/install_successful" - url="https://codeload.github.com/llohse/libnpy/tar.gz/v${libnpy_ver}" - filename="libnpy-${libnpy_ver}.tar.gz" - if verify_checksums "${install_lock_file}"; then - echo "$dirname is already installed, skipping it." - else - if [ -f $filename ]; then - echo "$filename is found" + __INSTALL__) + echo "==================== Installing LIBNPY ====================" + pkg_install_dir="${INSTALLDIR}/$dirname" + #pkg_install_dir="${HOME}/lib/libnpy/${libnpy_ver}" + install_lock_file="$pkg_install_dir/install_successful" + url="https://codeload.github.com/llohse/libnpy/tar.gz/v${libnpy_ver}" + if verify_checksums "${install_lock_file}"; then + echo "$dirname is already installed, skipping it." else - # download from github.com and checksum - echo "===> Notice: This version of Libnpy is downloaded in GitHub Release <===" - download_pkg_from_url "${libnpy_sha256}" "${filename}" "${url}" + if [ -f $filename ]; then + echo "$filename is found" + else + # download from github.com and checksum + echo "===> Notice: This version of Libnpy is downloaded in GitHub Release <===" + download_pkg_from_url "${libnpy_sha256}" "${filename}" "${url}" + fi + if [ "${PACK_RUN}" = "__TRUE__" ]; then + echo "--pack-run mode specified, skip installation" + exit 0 + fi + echo "Installing from scratch into ${pkg_install_dir}" + [ -d $dirname ] && rm -rf $dirname + tar -xzf $filename + mkdir -p "${pkg_install_dir}" + cp -r $dirname/* "${pkg_install_dir}/" + write_checksums "${install_lock_file}" "${SCRIPT_DIR}/stage4/$(basename ${SCRIPT_NAME})" fi - if [ "${PACK_RUN}" = "__TRUE__" ]; then - echo "--pack-run mode specified, skip installation" - else - echo "Installing from scratch into ${pkg_install_dir}" - [ -d $dirname ] && rm -rf $dirname - tar -xzf $filename - mkdir -p "${pkg_install_dir}" - cp -r $dirname/* "${pkg_install_dir}/" - write_checksums "${install_lock_file}" "${SCRIPT_DIR}/stage4/$(basename ${SCRIPT_NAME})" - fi - fi - LIBNPY_CFLAGS="-I'${pkg_install_dir}'" + LIBNPY_CFLAGS="-I'${pkg_install_dir}'" ;; __SYSTEM__) - echo "==================== CANNOT Finding LIBNPY from system paths NOW ====================" - recommend_offline_installation $filename $url - # How to do it in libnpy? -- Zhaoqing in 2023/08/23 - # check_lib -lxcf03 "libxc" - # check_lib -lxc "libxc" - # add_include_from_paths LIBXC_CFLAGS "xc.h" $INCLUDE_PATHS - # add_lib_from_paths LIBXC_LDFLAGS "libxc.*" $LIB_PATHS + echo "==================== Finding LIBNPY from system paths ====================" + if [ "${PACK_RUN}" = "__TRUE__" ]; then + echo "--pack-run mode specified, skip system check" + exit 0 + fi + # Find libnpy header file and derive package root directory + libnpy_header_path="$(find_in_paths "npy.hpp" $INCLUDE_PATHS)" + if [ "$libnpy_header_path" != "__FALSE__" ]; then + # Derive pkg_install_dir from found header path + # npy.hpp -> get include dir -> get parent dir + libnpy_include_dir="$(dirname "$libnpy_header_path")" + pkg_install_dir="$(dirname "$libnpy_include_dir")" + echo "Found libnpy at: $pkg_install_dir" + LIBNPY_CFLAGS="-I'${libnpy_include_dir}'" + else + report_error "Cannot find npy.hpp in system paths" + exit 1 + fi ;; __DONTUSE__) ;; *) - echo "==================== Linking LIBNPY to user paths ====================" - check_dir "${pkg_install_dir}" - LIBNPY_CFLAGS="-I'${pkg_install_dir}'" - ;; + echo "==================== Linking LIBNPY to user paths ====================" + pkg_install_dir="${with_libnpy}" + check_dir "${pkg_install_dir}" + LIBNPY_CFLAGS="-I'${pkg_install_dir}'" + ;; esac if [ "$with_libnpy" != "__DONTUSE__" ]; then if [ "$with_libnpy" != "__SYSTEM__" ]; then diff --git a/toolchain/scripts/stage4/install_libri.sh b/toolchain/scripts/stage4/install_libri.sh index 4de041f660..ba0ee25c46 100755 --- a/toolchain/scripts/stage4/install_libri.sh +++ b/toolchain/scripts/stage4/install_libri.sh @@ -11,14 +11,29 @@ [ "${BASH_SOURCE[0]}" ] && SCRIPT_NAME="${BASH_SOURCE[0]}" || SCRIPT_NAME=$0 SCRIPT_DIR="$(cd "$(dirname "$SCRIPT_NAME")/.." && pwd -P)" -# libri 0.2.0 and above need to be used in newer ABACUS -# libri_ver="master" -# libri_sha256="--no-checksum" -libri_ver=0.2.1.0 -libri_sha256="66a5540daba36effdad6ce2fe5e8368b96ddd4a7e148af90894ef21dc20ff29f" + source "${SCRIPT_DIR}"/common_vars.sh source "${SCRIPT_DIR}"/tool_kit.sh source "${SCRIPT_DIR}"/signal_trap.sh +source "${SCRIPT_DIR}"/package_versions.sh + +# Load LibRI package variables with version suffix support +# Check for version configuration from environment or individual package setting +version_suffix="" +if [[ -n "${ABACUS_TOOLCHAIN_PACKAGE_VERSIONS}" ]]; then + # Check for individual package version override + if echo "${ABACUS_TOOLCHAIN_PACKAGE_VERSIONS}" | grep -q "libri:alt"; then + version_suffix="alt" + elif echo "${ABACUS_TOOLCHAIN_PACKAGE_VERSIONS}" | grep -q "libri:main"; then + version_suffix="main" + fi +fi +# Fall back to global version suffix if no individual setting +if [[ -z "$version_suffix" && -n "${ABACUS_TOOLCHAIN_VERSION_SUFFIX}" ]]; then + version_suffix="${ABACUS_TOOLCHAIN_VERSION_SUFFIX}" +fi +# Load package variables with appropriate version +load_package_vars "libri" "$version_suffix" source "${INSTALLDIR}"/toolchain.conf source "${INSTALLDIR}"/toolchain.env @@ -29,53 +44,72 @@ libri_CFLAGS="" cd "${BUILDDIR}" case "$with_libri" in - __INSTALL__) - echo "==================== Installing LIBRI ====================" - dirname="LibRI-${libri_ver}" - pkg_install_dir="${INSTALLDIR}/$dirname" - #pkg_install_dir="${HOME}/lib/libri/${libri_ver}" - install_lock_file="$pkg_install_dir/install_successful" - url="https://codeload.github.com/abacusmodeling/LibRI/tar.gz/v${libri_ver}" - filename="LibRI-${libri_ver}.tar.gz" - if verify_checksums "${install_lock_file}"; then - echo "$dirname is already installed, skipping it." - else - if [ -f $filename ]; then - echo "$filename is found" + __INSTALL__) + echo "==================== Installing LIBRI ====================" + dirname="LibRI-${libri_ver}" + pkg_install_dir="${INSTALLDIR}/$dirname" + #pkg_install_dir="${HOME}/lib/libri/${libri_ver}" + install_lock_file="$pkg_install_dir/install_successful" + # url construction rules: + # - Branch names (master, main, develop) without v prefix + # - Version tags (e.g., 1.0.0) with v prefix + if [[ "${libri_ver}" =~ ^(master|main|develop)$ ]]; then + url="https://codeload.github.com/abacusmodeling/LibRI/tar.gz/${libri_ver}" else - # download from github.com and checksum - echo "===> Notice: This version of LibRI is downloaded in GitHub Release <===" - download_pkg_from_url "${libri_sha256}" "${filename}" "${url}" + url="https://codeload.github.com/abacusmodeling/LibRI/tar.gz/v${libri_ver}" fi - if [ "${PACK_RUN}" = "__TRUE__" ]; then - echo "--pack-run mode specified, skip installation" - else - echo "Installing from scratch into ${pkg_install_dir}" - [ -d $dirname ] && rm -rf $dirname - #unzip -q $filename - tar -xzf $filename - cp -r $dirname "${pkg_install_dir}/" - write_checksums "${install_lock_file}" "${SCRIPT_DIR}/stage4/$(basename ${SCRIPT_NAME})" - fi - fi - LIBRI_CFLAGS="-I'${pkg_install_dir}'" + filename="LibRI-${libri_ver}.tar.gz" + if verify_checksums "${install_lock_file}"; then + echo "$dirname is already installed, skipping it." + else + if [ -f $filename ]; then + echo "$filename is found" + else + # download from github.com and checksum + echo "===> Notice: This version of LibRI is downloaded in GitHub Release <===" + download_pkg_from_url "${libri_sha256}" "${filename}" "${url}" + fi + if [ "${PACK_RUN}" = "__TRUE__" ]; then + echo "--pack-run mode specified, skip installation" + exit 0 + fi + echo "Installing from scratch into ${pkg_install_dir}" + [ -d $dirname ] && rm -rf $dirname + tar -xzf $filename + mkdir -p "${pkg_install_dir}" + cp -r $dirname/* "${pkg_install_dir}/" + write_checksums "${install_lock_file}" "${SCRIPT_DIR}/stage4/$(basename ${SCRIPT_NAME})" + fi + LIBRI_CFLAGS="-I'${pkg_install_dir}'" ;; __SYSTEM__) - echo "==================== CANNOT Finding LIBRI from system paths NOW ====================" - recommend_offline_installation $filename $url - # How to do it in libri? -- Zhaoqing in 2023/08/23 - # check_lib -lxcf03 "libxc" - # check_lib -lxc "libxc" - # add_include_from_paths LIBXC_CFLAGS "xc.h" $INCLUDE_PATHS - # add_lib_from_paths LIBXC_LDFLAGS "libxc.*" $LIB_PATHS + echo "==================== Finding LIBRI from system paths ====================" + if [ "${PACK_RUN}" = "__TRUE__" ]; then + echo "--pack-run mode specified, skip system check" + exit 0 + fi + # Find libri header file and derive package root directory + libri_header_path="$(find_in_paths "RI/version.h" $INCLUDE_PATHS)" + if [ "$libri_header_path" != "__FALSE__" ]; then + # Derive pkg_install_dir from found header path + # RI/version.h -> remove /RI/version.h -> get include dir -> get parent dir + libri_include_dir="$(dirname "$(dirname "$libri_header_path")")" + pkg_install_dir="$(dirname "$libri_include_dir")" + echo "Found libri at: $pkg_install_dir" + LIBRI_CFLAGS="-I'${libri_include_dir}'" + else + report_error "Cannot find RI/version.h in system paths" + exit 1 + fi ;; __DONTUSE__) ;; - + *) - echo "==================== Linking LIBRI to user paths ====================" - check_dir "${pkg_install_dir}" - LIBRI_CFLAGS="-I'${pkg_install_dir}'" - ;; + echo "==================== Linking LIBRI to user paths ====================" + pkg_install_dir="${with_libri}" + check_dir "${pkg_install_dir}" + LIBRI_CFLAGS="-I'${pkg_install_dir}'" + ;; esac if [ "$with_libri" != "__DONTUSE__" ]; then if [ "$with_libri" != "__SYSTEM__" ]; then diff --git a/toolchain/scripts/stage4/install_libtorch.sh b/toolchain/scripts/stage4/install_libtorch.sh index 84fcbe8e10..ed05c17833 100755 --- a/toolchain/scripts/stage4/install_libtorch.sh +++ b/toolchain/scripts/stage4/install_libtorch.sh @@ -9,22 +9,29 @@ [ "${BASH_SOURCE[0]}" ] && SCRIPT_NAME="${BASH_SOURCE[0]}" || SCRIPT_NAME=$0 SCRIPT_DIR="$(cd "$(dirname "$SCRIPT_NAME")/.." && pwd -P)" -# From https://pytorch.org/get-started/locally/ -# libtorch_ver="1.12.1" -# libtorch_sha256="82c7be80860f2aa7963f8700004a40af8205e1d721298f2e09b700e766a9d283" -# libtorch_ver="2.0.1" -# libtorch_sha256="137a842d1cf1e9196b419390133a1623ef92f8f84dc7a072f95ada684f394afd" -libtorch_ver="2.1.2" -libtorch_sha256="904b764df6106a8a35bef64c4b55b8c1590ad9d071eb276e680cf42abafe79e9" - -# user can manually download higher version of libtorch by: -# wget https://download.pytorch.org/libtorch/cpu/libtorch-cxx11-abi-shared-with-deps-{libtorch_ver}%2Bcpu.zip -# 2.4.0 latest, 2.1.2 recommended for lower GLIBC support (lower than 3.4.26) - # shellcheck source=/dev/null source "${SCRIPT_DIR}"/common_vars.sh source "${SCRIPT_DIR}"/tool_kit.sh source "${SCRIPT_DIR}"/signal_trap.sh +source "${SCRIPT_DIR}"/package_versions.sh + +# Load LibTorch package variables with version suffix support +# Check for version configuration from environment or individual package setting +version_suffix="" +if [[ -n "${ABACUS_TOOLCHAIN_PACKAGE_VERSIONS}" ]]; then + # Check for individual package version override + if echo "${ABACUS_TOOLCHAIN_PACKAGE_VERSIONS}" | grep -q "libtorch:alt"; then + version_suffix="alt" + elif echo "${ABACUS_TOOLCHAIN_PACKAGE_VERSIONS}" | grep -q "libtorch:main"; then + version_suffix="main" + fi +fi +# Fall back to global version suffix if no individual setting +if [[ -z "$version_suffix" && -n "${ABACUS_TOOLCHAIN_VERSION_SUFFIX}" ]]; then + version_suffix="${ABACUS_TOOLCHAIN_VERSION_SUFFIX}" +fi +# Load package variables with appropriate version +load_package_vars "libtorch" "$version_suffix" source "${INSTALLDIR}"/toolchain.conf source "${INSTALLDIR}"/toolchain.env @@ -34,70 +41,71 @@ source "${INSTALLDIR}"/toolchain.env cd "${BUILDDIR}" case "${with_libtorch}" in - __INSTALL__) - echo "==================== Installing libtorch ====================" - dirname="libtorch-${libtorch_ver}" - pkg_install_dir="${INSTALLDIR}/${dirname}" - #pkg_install_dir="${HOME}/lib/libtorch/${libtorch_ver}" - install_lock_file="${pkg_install_dir}/install_successful" - archive_file="libtorch-cxx11-abi-shared-with-deps-${libtorch_ver}%2Bcpu.zip" - filename="${dirname}.zip" - - if verify_checksums "${install_lock_file}"; then - echo "${dirname} is already installed, skipping it." - else - if [ -f ${filename} ]; then - echo "${filename} is found" + __INSTALL__) + echo "==================== Installing libtorch ====================" + dirname="libtorch-${libtorch_ver}" + pkg_install_dir="${INSTALLDIR}/${dirname}" + #pkg_install_dir="${HOME}/lib/libtorch/${libtorch_ver}" + install_lock_file="${pkg_install_dir}/install_successful" + archive_file="libtorch-cxx11-abi-shared-with-deps-${libtorch_ver}%2Bcpu.zip" + filename="${dirname}.zip" + + if verify_checksums "${install_lock_file}"; then + echo "${dirname} is already installed, skipping it." else - # download from pytorch.com and checksum - url=https://download.pytorch.org/libtorch/cpu/${archive_file} - download_pkg_from_url "${libtorch_sha256}" "${filename}" "${url}" + if [ -f ${filename} ]; then + echo "${filename} is found" + else + # download from pytorch.com and checksum + url=https://download.pytorch.org/libtorch/cpu/${archive_file} + download_pkg_from_url "${libtorch_sha256}" "${filename}" "${url}" + fi + if [ "${PACK_RUN}" = "__TRUE__" ]; then + echo "--pack-run mode specified, skip installation" + exit 0 + fi + echo "Installing from scratch into ${pkg_install_dir}" + unzip -q $filename + mkdir -p "${pkg_install_dir}" + mv libtorch/* "${pkg_install_dir}/" + + write_checksums "${install_lock_file}" "${SCRIPT_DIR}/stage4/$(basename ${SCRIPT_NAME})" fi - if [ "${PACK_RUN}" = "__TRUE__" ]; then - echo "--pack-run mode specified, skip installation" - else - echo "Installing from scratch into ${pkg_install_dir}" - [ -d libtorch ] && rm -rf libtorch - [ -d ${pkg_install_dir} ] && rm -rf ${pkg_install_dir} - unzip -q $filename # to libtorch - mkdir -p "${pkg_install_dir}" - mv libtorch/* "${pkg_install_dir}/" - - write_checksums "${install_lock_file}" "${SCRIPT_DIR}/stage4/$(basename ${SCRIPT_NAME})" - fi - fi - LIBTORCH_CXXFLAGS="-I${pkg_install_dir}/include" - LIBTORCH_LDFLAGS="-L'${pkg_install_dir}/lib' -Wl,-rpath='${pkg_install_dir}/lib'" - ;; - __SYSTEM__) - echo "==================== Finding libtorch from system paths ====================" - check_lib -ltorch "libtorch" - add_include_from_paths LIBTORCH_CXXFLAGS "libtorch.h" $INCLUDE_PATHS - add_lib_from_paths LIBTORCH_LDFLAGS "libtorch.*" "$LIB_PATHS" - ;; - __DONTUSE__) ;; - - *) - echo "==================== Linking libtorch to user paths ====================" - pkg_install_dir="${with_libtorch}" - - # use the lib64 directory if present (multi-abi distros may link lib/ to lib32/ instead) - LIBTORCH_LIBDIR="${pkg_install_dir}/lib" - [ -d "${pkg_install_dir}/lib64" ] && LIBTORCH_LIBDIR="${pkg_install_dir}/lib64" - - check_dir "${LIBTORCH_LIBDIR}" - LIBTORCH_CXXFLAGS="-I${pkg_install_dir}/include" - if [ "$ENABLE_CUDA" = "__TRUE__" ]; then - LIBTORCH_LDFLAGS="-Wl,--no-as-needed,-L'${LIBTORCH_LIBDIR}' -Wl,--no-as-needed,-rpath='${LIBTORCH_LIBDIR}'" - else - LIBTORCH_LDFLAGS="-L'${LIBTORCH_LIBDIR}' -Wl,-rpath='${LIBTORCH_LIBDIR}'" - fi - ;; + LIBTORCH_CXXFLAGS="-I${pkg_install_dir}/include" + LIBTORCH_LDFLAGS="-L'${pkg_install_dir}/lib' -Wl,-rpath='${pkg_install_dir}/lib'" + ;; + __SYSTEM__) + echo "==================== Finding libtorch from system paths ====================" + if [ "${PACK_RUN}" = "__TRUE__" ]; then + echo "--pack-run mode specified, skip system check" + exit 0 + fi + check_lib -ltorch "libtorch" + add_include_from_paths LIBTORCH_CXXFLAGS "libtorch.h" $INCLUDE_PATHS + add_lib_from_paths LIBTORCH_LDFLAGS "libtorch.*" "$LIB_PATHS" + ;; + __DONTUSE__) ;; + + *) + echo "==================== Linking libtorch to user paths ====================" + pkg_install_dir="${with_libtorch}" + + # use the lib64 directory if present (multi-abi distros may link lib/ to lib32/ instead) + LIBTORCH_LIBDIR="${pkg_install_dir}/lib" + [ -d "${pkg_install_dir}/lib64" ] && LIBTORCH_LIBDIR="${pkg_install_dir}/lib64" + + check_dir "${LIBTORCH_LIBDIR}" + LIBTORCH_CXXFLAGS="-I${pkg_install_dir}/include" + if [ "$ENABLE_CUDA" = "__TRUE__" ]; then + LIBTORCH_LDFLAGS="-Wl,--no-as-needed,-L'${LIBTORCH_LIBDIR}' -Wl,--no-as-needed,-rpath='${LIBTORCH_LIBDIR}'" + LIBTORCH_LDFLAGS="-L'${LIBTORCH_LIBDIR}' -Wl,-rpath='${LIBTORCH_LIBDIR}'" + fi + ;; esac if [ "$with_libtorch" != "__DONTUSE__" ]; then - if [ "$with_libtorch" != "__SYSTEM__" ]; then - cat << EOF > "${BUILDDIR}/setup_libtorch" + if [ "$with_libtorch" != "__SYSTEM__" ]; then + cat << EOF > "${BUILDDIR}/setup_libtorch" prepend_path LD_LIBRARY_PATH "${pkg_install_dir}/lib" prepend_path LD_RUN_PATH "${pkg_install_dir}/lib" prepend_path LIBRARY_PATH "${pkg_install_dir}/lib" @@ -110,24 +118,23 @@ export CPATH="${pkg_install_dir}/include":\${CPATH} export PKG_CONFIG_PATH="${pkg_install_dir}/lib/pkgconfig":\${PKG_CONFIG_PATH} export CMAKE_PREFIX_PATH="${pkg_install_dir}":\${CMAKE_PREFIX_PATH} EOF - fi - if [ "$ENABLE_CUDA" = "__TRUE__" ]; then - cat << EOF >> "${BUILDDIR}/setup_libtorch" + fi + if [ "$ENABLE_CUDA" = "__TRUE__" ]; then + cat << EOF >> "${BUILDDIR}/setup_libtorch" export CP_DFLAGS="\${CP_DFLAGS} -D__LIBTORCH" export CXXFLAGS="\${CXXFLAGS} ${LIBTORCH_CXXFLAGS}" export CP_LDFLAGS="\${CP_LDFLAGS} ${LIBTORCH_LDFLAGS}" export CP_LIBS="\${CP_LIBS} -lc10 -lc10_cuda -ltorch_cpu -ltorch_cuda -ltorch" EOF - cat "${BUILDDIR}/setup_libtorch" >> "${SETUPFILE}" - else - cat << EOF >> "${BUILDDIR}/setup_libtorch" + cat "${BUILDDIR}/setup_libtorch" >> "${SETUPFILE}" + cat << EOF >> "${BUILDDIR}/setup_libtorch" export CP_DFLAGS="\${CP_DFLAGS} -D__LIBTORCH" export CXXFLAGS="\${CXXFLAGS} ${LIBTORCH_CXXFLAGS}" export CP_LDFLAGS="\${CP_LDFLAGS} ${LIBTORCH_LDFLAGS}" export CP_LIBS="\${CP_LIBS} -lc10 -ltorch_cpu -ltorch" EOF - cat "${BUILDDIR}/setup_libtorch" >> "${SETUPFILE}" - fi + cat "${BUILDDIR}/setup_libtorch" >> "${SETUPFILE}" + fi fi load "${BUILDDIR}/setup_libtorch" diff --git a/toolchain/scripts/stage4/install_nep.sh b/toolchain/scripts/stage4/install_nep.sh new file mode 100755 index 0000000000..a7dac17a18 --- /dev/null +++ b/toolchain/scripts/stage4/install_nep.sh @@ -0,0 +1,157 @@ +#!/bin/bash -e + +# TODO: Review and if possible fix shellcheck errors. +# shellcheck disable=all + +# contributor: MoseyQAQ (Denan Li) + +[ "${BASH_SOURCE[0]}" ] && SCRIPT_NAME="${BASH_SOURCE[0]}" || SCRIPT_NAME=$0 +SCRIPT_DIR="$(cd "$(dirname "$SCRIPT_NAME")/.." && pwd -P)" + +# Load version information from centralized package_versions.sh +source "${SCRIPT_DIR}/package_versions.sh" +load_package_vars "nep" +source "${SCRIPT_DIR}"/common_vars.sh +source "${SCRIPT_DIR}"/tool_kit.sh +source "${SCRIPT_DIR}"/signal_trap.sh +source "${INSTALLDIR}"/toolchain.conf +source "${INSTALLDIR}"/toolchain.env + +[ -f "${BUILDDIR}/setup_nep" ] && rm "${BUILDDIR}/setup_nep" + +NEP_CFLAGS="" +NEP_LDFLAGS="" +NEP_LIBS="" +! [ -d "${BUILDDIR}" ] && mkdir -p "${BUILDDIR}" +cd "${BUILDDIR}" + +case "$with_nep" in + __INSTALL__) + echo "==================== Installing NEP (CPU version) ====================" + dirname="NEP_CPU-${nep_ver}" + pkg_install_dir="${INSTALLDIR}/${dirname}" + install_lock_file="$pkg_install_dir/install_successful" + filename="nep-${nep_ver}.tar.gz" + url="https://codeload.github.com/brucefan1983/NEP_CPU/tar.gz/${nep_ver}" + + if verify_checksums "${install_lock_file}"; then + echo "$dirname is already installed, skipping it." + else + if [ -f $filename ]; then + echo "$filename is found" + else + echo "===> Notice: This version of NEP_CPU is downloaded from the GitHub master repository <===" + download_pkg_from_url "${nep_sha256}" "${filename}" "${url}" + fi + + if [ "${PACK_RUN}" = "__TRUE__" ]; then + echo "--pack-run mode specified, skip installation" + exit 0 + fi + echo "Installing from scratch into ${pkg_install_dir}" + [ -d $dirname ] && rm -rf $dirname + tar -xzf $filename + cd $dirname + + cat << EOF > Makefile +CXX ?= g++ + +# Compiler flags +CXXFLAGS = -O2 -fPIC -std=c++11 + +# Include directories +INCLUDES = -I./src + +# Source files +SRCS = ./src/nep.cpp ./src/ewald_nep.cpp ./src/neighbor_nep.cpp + +# Object files +OBJS = \$(SRCS:.cpp=.o) + +# Target shared library +TARGET = libnep.so + +# Default target +all: \$(TARGET) + +# Rule to build the shared library +\$(TARGET): \$(OBJS) + \$(CXX) -shared \$(OBJS) -o \$(TARGET) + +# Rule to compile source files into object files +%.o: %.cpp + \$(CXX) \$(CXXFLAGS) \$(INCLUDES) -c \$< -o \$@ + +# Clean up build files +clean: + rm -f \$(OBJS) \$(TARGET) + +# Install target +install: + mkdir -p \$(PREFIX)/lib + mkdir -p \$(PREFIX)/include + cp \$(TARGET) \$(PREFIX)/lib/ + cp src/*.h \$(PREFIX)/include/ +EOF + + make > make.log 2>&1 || tail -n ${LOG_LINES} make.log + make PREFIX="${pkg_install_dir}" install > install.log 2>&1 || tail -n ${LOG_LINES} install.log + + cd .. + write_checksums "${install_lock_file}" "${SCRIPT_DIR}/stage4/$(basename ${SCRIPT_NAME})" + fi + NEP_CFLAGS="-I'${pkg_install_dir}/include'" + NEP_LDFLAGS="-L'${pkg_install_dir}/lib' -Wl,-rpath,'${pkg_install_dir}/lib'" + ;; + + __SYSTEM__) + echo "==================== Finding NEP_CPU from system paths ====================" + check_lib -lnep "nep" + add_include_from_paths NEP_CFLAGS "nep.h" $INCLUDE_PATHS + add_lib_from_paths NEP_LDFLAGS "libnep.*" $LIB_PATHS + ;; + __DONTUSE__) ;; + *) + echo "==================== Linking NEP_CPU to user paths ====================" + pkg_install_dir="$with_nep" + check_dir "${pkg_install_dir}/lib" + check_dir "${pkg_install_dir}/include" + NEP_CFLAGS="-I'${pkg_install_dir}/include'" + NEP_LDFLAGS="-L'${pkg_install_dir}/lib' -Wl,-rpath,'${pkg_install_dir}/lib'" + ;; +esac + +if [ "$with_nep" != "__DONTUSE__" ]; then + NEP_LIBS="-lnep" + if [ "$with_nep" != "__SYSTEM__" ]; then + cat << EOF > "${BUILDDIR}/setup_nep" +prepend_path LD_LIBRARY_PATH "$pkg_install_dir/lib" +prepend_path LD_RUN_PATH "$pkg_install_dir/lib" +prepend_path LIBRARY_PATH "$pkg_install_dir/lib" +prepend_path CPATH "$pkg_install_dir/include" +prepend_path CMAKE_PREFIX_PATH "$pkg_install_dir" +export LD_LIBRARY_PATH="$pkg_install_dir/lib":\${LD_LIBRARY_PATH} +export LD_RUN_PATH="$pkg_install_dir/lib":\${LD_RUN_PATH} +export LIBRARY_PATH="$pkg_install_dir/lib":\${LIBRARY_PATH} +export CPATH="$pkg_install_dir/include":\${CPATH} +export CMAKE_PREFIX_PATH="$pkg_install_dir":\${CMAKE_PREFIX_PATH} +EOF + cat "${BUILDDIR}/setup_nep" >> $SETUPFILE + fi + cat << EOF >> "${BUILDDIR}/setup_nep" +export NEP_CFLAGS="${NEP_CFLAGS}" +export NEP_LDFLAGS="${NEP_LDFLAGS}" +export NEP_LIBS="${NEP_LIBS}" +export CP_DFLAGS="\${CP_DFLAGS} -D__NEP" +export CP_CFLAGS="\${CP_CFLAGS} \${NEP_CFLAGS}" +export CP_LDFLAGS="\${CP_LDFLAGS} \${NEP_LDFLAGS}" +export CP_LIBS="\${NEP_LIBS} \${CP_LIBS}" +export NEP_ROOT="$pkg_install_dir" +EOF +fi + +load "${BUILDDIR}/setup_nep" +write_toolchain_env "${INSTALLDIR}" + +cd "${ROOTDIR}" +report_timing "nep" diff --git a/toolchain/scripts/stage4/install_rapidjson.sh b/toolchain/scripts/stage4/install_rapidjson.sh index 27fb94edd3..da6727ac40 100755 --- a/toolchain/scripts/stage4/install_rapidjson.sh +++ b/toolchain/scripts/stage4/install_rapidjson.sh @@ -2,20 +2,36 @@ # TODO: Review and if possible fix shellcheck errors. # shellcheck disable=all -# RAPIDJSON is not need any complex setting +# RapidJSON is not need any complex setting # Only problem is the installation from github.com -# Last Update in 2025-0504 # other contributor: Kai Luo, XingLiang Peng [ "${BASH_SOURCE[0]}" ] && SCRIPT_NAME="${BASH_SOURCE[0]}" || SCRIPT_NAME=$0 SCRIPT_DIR="$(cd "$(dirname "$SCRIPT_NAME")/.." && pwd -P)" -rapidjson_ver="master" # latest version, instead of "1.1.0" fixing issue of #5518 -rapidjson_sha256="--no-checksum" # latest version cannot maintain checksum source "${SCRIPT_DIR}"/common_vars.sh source "${SCRIPT_DIR}"/tool_kit.sh source "${SCRIPT_DIR}"/signal_trap.sh +source "${SCRIPT_DIR}"/package_versions.sh + +# Load RapidJSON package variables with version suffix support +# Check for version configuration from environment or individual package setting +version_suffix="" +if [[ -n "${ABACUS_TOOLCHAIN_PACKAGE_VERSIONS}" ]]; then + # Check for individual package version override + if echo "${ABACUS_TOOLCHAIN_PACKAGE_VERSIONS}" | grep -q "rapidjson:alt"; then + version_suffix="alt" + elif echo "${ABACUS_TOOLCHAIN_PACKAGE_VERSIONS}" | grep -q "rapidjson:main"; then + version_suffix="main" + fi +fi +# Fall back to global version suffix if no individual setting +if [[ -z "$version_suffix" && -n "${ABACUS_TOOLCHAIN_VERSION_SUFFIX}" ]]; then + version_suffix="${ABACUS_TOOLCHAIN_VERSION_SUFFIX}" +fi +# Load package variables with appropriate version +load_package_vars "rapidjson" "$version_suffix" source "${INSTALLDIR}"/toolchain.conf source "${INSTALLDIR}"/toolchain.env @@ -26,77 +42,100 @@ RAPIDJSON_CFLAGS="" cd "${BUILDDIR}" case "$with_rapidjson" in - __INSTALL__) - echo "==================== Installing RAPIDJSON ====================" - dirname="rapidjson-${rapidjson_ver}" - pkg_install_dir="${INSTALLDIR}/$dirname" - #pkg_install_dir="${HOME}/lib/rapidjson/${rapidjson_ver}" - install_lock_file="$pkg_install_dir/install_successful" - #url="https://github.com/Tencent/rapidjson/archive/refs/tags/v${rapidjson_ver}.tar.gz" # commented by Kai Luo in 2025/04/28 - url="https://codeload.github.com/Tencent/rapidjson/tar.gz/${rapidjson_ver}" - # changed by Kai Luo in 2025/04/28, modified by Zhaoqing Liu in 2025/05/01 - filename="rapidjson-${rapidjson_ver}.tar.gz" - if verify_checksums "${install_lock_file}"; then - echo "$dirname is already installed, skipping it." - else - if [ -f $filename ]; then - echo "$filename is found" + __INSTALL__) + echo "==================== Installing RapidJSON ====================" + dirname="rapidjson-${rapidjson_ver}" + pkg_install_dir="${INSTALLDIR}/$dirname" + #pkg_install_dir="${HOME}/lib/rapidjson/${rapidjson_ver}" + install_lock_file="$pkg_install_dir/install_successful" + # url construction rules: + # - Branch names (master, main, develop) without v prefix + # - Version tags (e.g., 1.0.0) with v prefix + if [[ "${rapidjson_ver}" =~ ^(master|main|develop)$ ]]; then + url="https://codeload.github.com/Tencent/rapidjson/tar.gz/${rapidjson_ver}" else - # download from github.com and checksum - echo "===> Notice: This version of rapidjson is downloaded in GitHub master repository <===" - download_pkg_from_url "${rapidjson_sha256}" "${filename}" "${url}" - # wget "${url}" -O "${filename}" --no-check-certificate # use wget directly instead of download_pkg_from_url + url="https://codeload.github.com/Tencent/rapidjson/tar.gz/v${rapidjson_ver}" fi - if [ "${PACK_RUN}" = "__TRUE__" ]; then - echo "--pack-run mode specified, skip installation" - else - echo "Installing from scratch into ${pkg_install_dir}" - [ -d $dirname ] && rm -rf $dirname - #unzip -q $filename # use -q to suppress output - tar -xzf $filename - mkdir -p "${pkg_install_dir}" - cp -r $dirname/* "${pkg_install_dir}/" - # for CMake to find rapidjson - #cp ${pkg_install_dir}/RapidJSONConfig.cmake.in ${pkg_install_dir}/RapidJSONConfig.cmake - cat << EOF > "${pkg_install_dir}/RapidJSONConfig.cmake" + filename="rapidjson-${rapidjson_ver}.tar.gz" + if verify_checksums "${install_lock_file}"; then + echo "$dirname is already installed, skipping it." + else + if [ -f $filename ]; then + echo "$filename is found" + else + # download from github.com and checksum + echo "===> Notice: This version of RapidJSON is downloaded in GitHub master repository <===" + download_pkg_from_url "${rapidjson_sha256}" "${filename}" "${url}" + fi + if [ "${PACK_RUN}" = "__TRUE__" ]; then + echo "--pack-run mode specified, skip installation" + exit 0 + fi + echo "Installing from scratch into ${pkg_install_dir}" + [ -d $dirname ] && rm -rf $dirname + tar -xzf $filename + #unzip -q $filename + mkdir -p "${pkg_install_dir}" + cp -r $dirname/* "${pkg_install_dir}/" + # for rapidjson found in cmake + cat << EOF > "${pkg_install_dir}/RapidJSONConfig.cmake" get_filename_component(RAPIDJSON_CMAKE_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH) set(RAPIDJSON_INCLUDE_DIRS "@INCLUDE_INSTALL_DIR@") message(STATUS "RapidJSON found. Headers: ${RAPIDJSON_INCLUDE_DIRS}") EOF - write_checksums "${install_lock_file}" "${SCRIPT_DIR}/stage4/$(basename ${SCRIPT_NAME})" - fi - fi - RAPIDJSON_CFLAGS="-I'${pkg_install_dir}'" + write_checksums "${install_lock_file}" "${SCRIPT_DIR}/stage4/$(basename ${SCRIPT_NAME})" + fi + RAPIDJSON_CFLAGS="-I'${pkg_install_dir}/include'" ;; __SYSTEM__) - echo "==================== CANNOT Finding RAPIDJSON from system paths NOW ====================" - recommend_offline_installation $filename $url - # How to do it in rapidjson? -- Zhaoqing in 2023/08/23 - # check_lib -lxcf03 "libxc" - # check_lib -lxc "libxc" - # add_include_from_paths LIBXC_CFLAGS "xc.h" $INCLUDE_PATHS - # add_lib_from_paths LIBXC_LDFLAGS "libxc.*" $LIB_PATHS + echo "==================== Finding RapidJSON from system paths ====================" + if [ "${PACK_RUN}" = "__TRUE__" ]; then + echo "--pack-run mode specified, skip system check" + exit 0 + fi + # Find rapidjson header file and derive package root directory + rapidjson_header_path="$(find_in_paths "rapidjson/rapidjson.h" $INCLUDE_PATHS)" + if [ "$rapidjson_header_path" != "__FALSE__" ]; then + # Derive pkg_install_dir from found header path + # rapidjson/rapidjson.h -> remove /rapidjson/rapidjson.h -> get include dir -> get parent dir + rapidjson_include_dir="$(dirname "$(dirname "$rapidjson_header_path")")" + pkg_install_dir="$(dirname "$rapidjson_include_dir")" + echo "Found rapidjson at: $pkg_install_dir" + RAPIDJSON_CFLAGS="-I'${rapidjson_include_dir}'" + else + report_error "Cannot find rapidjson/rapidjson.h in system paths" + exit 1 + fi ;; __DONTUSE__) ;; - + *) - echo "==================== Linking RAPIDJSON to user paths ====================" - check_dir "${pkg_install_dir}" - RAPIDJSON_CFLAGS="-I'${pkg_install_dir}'" - ;; + echo "==================== Linking RapidJSON to user paths ====================" + pkg_install_dir="${with_rapidjson}" + check_dir "${pkg_install_dir}" + RAPIDJSON_CFLAGS="-I'${pkg_install_dir}/include'" + ;; esac if [ "$with_rapidjson" != "__DONTUSE__" ]; then if [ "$with_rapidjson" != "__SYSTEM__" ]; then - # LibRI deps should find rapidjson include in CPATH cat << EOF > "${BUILDDIR}/setup_rapidjson" prepend_path CPATH "$pkg_install_dir/include" -export CPATH="${pkg_install_dir}/include":\${CPATH} +prepend_path CMAKE_PREFIX_PATH "$pkg_install_dir" +export CPATH="$pkg_install_dir/include":\${CPATH} +export CMAKE_PREFIX_PATH="$pkg_install_dir":\${CMAKE_PREFIX_PATH} +export RAPIDJSON_ROOT="$pkg_install_dir" +EOF + else + cat << EOF > "${BUILDDIR}/setup_rapidjson" +export RAPIDJSON_ROOT="$pkg_install_dir" EOF - cat "${BUILDDIR}/setup_rapidjson" >> $SETUPFILE fi + cat "${BUILDDIR}/setup_rapidjson" >> $SETUPFILE cat << EOF >> "${BUILDDIR}/setup_rapidjson" export RAPIDJSON_CFLAGS="${RAPIDJSON_CFLAGS}" -export RAPIDJSON_ROOT="$pkg_install_dir" +export CP_DFLAGS="\${CP_DFLAGS} -D__RAPIDJSON" +export CP_CFLAGS="\${CP_CFLAGS} ${RAPIDJSON_CFLAGS}" +export RAPIDJSON_VERSION="${rapidjson_ver}" EOF fi diff --git a/toolchain/scripts/stage4/install_stage4.sh b/toolchain/scripts/stage4/install_stage4.sh index b5c7cf5eed..d2e3fa482a 100755 --- a/toolchain/scripts/stage4/install_stage4.sh +++ b/toolchain/scripts/stage4/install_stage4.sh @@ -9,5 +9,6 @@ ./scripts/stage4/install_libnpy.sh ./scripts/stage4/install_libri.sh ./scripts/stage4/install_libcomm.sh +./scripts/stage4/install_nep.sh # EOF diff --git a/toolchain/scripts/tool_kit.sh b/toolchain/scripts/tool_kit.sh index c7fa483ffa..8c288ec272 100755 --- a/toolchain/scripts/tool_kit.sh +++ b/toolchain/scripts/tool_kit.sh @@ -1,23 +1,52 @@ +# ABACUS Toolchain Utility Functions # A set of tools used in the toolchain installer, intended to be used +# by sourcing this file inside other scripts. +# Enhanced with modular architecture support +# Author: ABACUS Development Team +# Date: 2025-01-12 # TODO: Review and if possible fix shellcheck errors. # shellcheck disable=all # shellcheck shell=bash -# by sourcing this file inside other scripts. - SYS_INCLUDE_PATH=${SYS_INCLUDE_PATH:-"/usr/local/include:/usr/include"} SYS_LIB_PATH=${SYS_LIB_PATH:-"/usr/local/lib64:/usr/local/lib:/usr/lib64:/usr/lib:/lib64:/lib"} INCLUDE_PATHS=${INCLUDE_PATHS:-"CPATH SYS_INCLUDE_PATH"} LIB_PATHS=${LIB_PATHS:-"LIBRARY_PATH LD_LIBRARY_PATH LD_RUN_PATH SYS_LIB_PATH"} time_start=$(date +%s) +# ============================================================================ +# Timing and Reporting Functions +# ============================================================================ + # report timing report_timing() { time_stop=$(date +%s) printf "Step %s took %0.2f seconds.\n" $1 $((time_stop - time_start)) } +# Enhanced timing function with better formatting +report_timing_enhanced() { + local step_name="$1" + local start_time="$2" + local end_time="${3:-$(date +%s)}" + local duration=$((end_time - start_time)) + + if [[ $duration -gt 3600 ]]; then + printf "Step '%s' completed in %d hours, %d minutes, %d seconds.\n" \ + "$step_name" $((duration / 3600)) $(((duration % 3600) / 60)) $((duration % 60)) + elif [[ $duration -gt 60 ]]; then + printf "Step '%s' completed in %d minutes, %d seconds.\n" \ + "$step_name" $((duration / 60)) $((duration % 60)) + else + printf "Step '%s' completed in %d seconds.\n" "$step_name" $duration + fi +} + +# ============================================================================ +# Error and Warning Reporting Functions +# ============================================================================ + # report a warning message with script name and line number report_warning() { if [ $# -gt 1 ]; then @@ -42,8 +71,46 @@ report_error() { echo "ERROR: (${SCRIPT_NAME}${__lineno}) $__message" >&2 } +# Enhanced error reporting with context +report_error_enhanced() { + local error_code="$1" + local error_message="$2" + local context="${3:-}" + local lineno="${4:-}" + + local location="" + if [[ -n "$lineno" ]]; then + location=", line $lineno" + fi + + echo "ERROR [$error_code]: (${SCRIPT_NAME}${location}) $error_message" >&2 + if [[ -n "$context" ]]; then + echo "Context: $context" >&2 + fi + + return $error_code +} + +# Enhanced warning reporting with severity levels +report_warning_enhanced() { + local severity="${1:-INFO}" # INFO, WARNING, CRITICAL + local message="$2" + local context="${3:-}" + local lineno="${4:-}" + + local location="" + if [[ -n "$lineno" ]]; then + location=", line $lineno" + fi + + echo "$severity: (${SCRIPT_NAME}${location}) $message" >&2 + if [[ -n "$context" ]]; then + echo "Context: $context" >&2 + fi +} + # recommend users to use offline installation when download failed -# zhaoqing in 2023.09.15 +# zhaoqing in 2025.10.15 recommend_offline_installation(){ __filename=$1 __url=$2 @@ -54,11 +121,13 @@ By download $__filename from $__url, Rename it as $__filename and put it into ${BUILDDIR}, And re-run toolchain installation script. +Also. the --pack-run option can help in OFFLINE installation. + You can manually install requirements packages via: +0. Download by 'wget $__url -O $__filename' manually 1. Download from www.cp2k.org/static/downloads (for OpenBLAS, OpenMPI and Others) -2. Download from github.com (for CEREAL, RapidJSON, libnpy, LibRI and others stage4 packages) -3. wget https://bohrium-api.dp.tech/ds-dl/abacus-deps-93wi-v2 -O abacus-deps.zip (a mirror in Bohrium) -4. for Intel-oneAPI and AMD AOCC/AOCL, please contact your server manager our visit Intel official website +2. Download from github.com (especially for CEREAL, RapidJSON, libnpy, LibRI and other stage4 packages) +3. for Intel-oneAPI and AMD AOCC/AOCL, please contact your server manager or visit their official website EOF } @@ -332,6 +401,10 @@ add_lib_from_paths() { fi } +# ============================================================================ +# Environment and System Validation Functions +# ============================================================================ + # check if environment variable is assigned and non-empty # https://serverfault.com/questions/7503/how-to-determine-if-a-bash-variable-is-empty require_env() { @@ -343,6 +416,51 @@ require_env() { fi } +# Enhanced environment variable validation +validate_env_vars() { + local required_vars=("$@") + local missing_vars=() + + for var in "${required_vars[@]}"; do + if [[ -z "${!var:-}" ]]; then + missing_vars+=("$var") + fi + done + + if [[ ${#missing_vars[@]} -gt 0 ]]; then + report_error_enhanced 1 "Missing required environment variables" "$(printf '%s ' "${missing_vars[@]}")" + return 1 + fi + + return 0 +} + +# Check system requirements +check_system_requirements() { + local min_disk_space_gb="${1:-10}" # Default 10GB + local required_commands=("${@:2}") + + # Check disk space + local available_space=$(df . | awk 'NR==2 {print int($4/1024/1024)}') + if [[ $available_space -lt $min_disk_space_gb ]]; then + report_warning_enhanced "WARNING" "Low disk space: ${available_space}GB available, ${min_disk_space_gb}GB recommended" + fi + + # Check required commands + for cmd in "${required_commands[@]}"; do + if ! command -v "$cmd" >/dev/null 2>&1; then + report_error_enhanced 1 "Required command not found: $cmd" + return 1 + fi + done + + return 0 +} + +# ============================================================================ +# String and Configuration Processing Functions +# ============================================================================ + resolve_string() { local __to_resolve=$1 shift @@ -351,6 +469,39 @@ resolve_string() { echo $("${SCRIPTDIR}/parse_if.py" $__flags <<< "${__to_resolve}") } +# Enhanced string processing with validation +resolve_string_safe() { + local __to_resolve="$1" + shift + local __flags=("$@") + + if [[ -z "$__to_resolve" ]]; then + report_error_enhanced 1 "Empty string provided for resolution" + return 1 + fi + + if [[ ! -f "${SCRIPTDIR}/parse_if.py" ]]; then + report_error_enhanced 1 "Parser script not found" "${SCRIPTDIR}/parse_if.py" + return 1 + fi + + local result + result=$("${SCRIPTDIR}/parse_if.py" "${__flags[@]}" <<< "${__to_resolve}" 2>/dev/null) + local exit_code=$? + + if [[ $exit_code -ne 0 ]]; then + report_error_enhanced $exit_code "String resolution failed" "$__to_resolve" + return $exit_code + fi + + echo "$result" + return 0 +} + +# ============================================================================ +# Command and Package Validation Functions +# ============================================================================ + # check if a command is available check_command() { local __command=${1} @@ -367,6 +518,51 @@ check_command() { fi } +# Enhanced command checking with version validation +check_command_version() { + local command_name="$1" + local min_version="$2" + local package_name="${3:-$command_name}" + + if ! command -v "$command_name" >/dev/null 2>&1; then + report_error_enhanced 1 "Command not found: $command_name" "Package: $package_name" + return 1 + fi + + local command_path + command_path=$(command -v "$command_name") + echo "Found $command_name at: $(realpath "$command_path")" + + if [[ -n "$min_version" ]]; then + # This is a placeholder for version checking logic + # Different commands have different version output formats + echo "Version check for $command_name (minimum: $min_version) - implement as needed" + fi + + return 0 +} + +# Batch command checking +check_commands_batch() { + local commands=("$@") + local failed_commands=() + + for cmd in "${commands[@]}"; do + if ! command -v "$cmd" >/dev/null 2>&1; then + failed_commands+=("$cmd") + else + echo "✓ Found: $cmd at $(command -v "$cmd")" + fi + done + + if [[ ${#failed_commands[@]} -gt 0 ]]; then + report_error_enhanced 1 "Missing commands" "$(printf '%s ' "${failed_commands[@]}")" + return 1 + fi + + return 0 +} + # check if directory exists # add more error msg by QuantumMisaka in 2025.03.19 check_dir() { @@ -576,6 +772,10 @@ append_path() { eval export $1 } +# ============================================================================ +# Configuration Parsing Functions +# ============================================================================ + # helper routine for reading --enable=* input options read_enable() { local __input_var="${1#*=}" @@ -623,6 +823,44 @@ read_with() { esac } +# Enhanced configuration parsing with validation +parse_config_option() { + local option="$1" + local default_value="${2:-}" + local valid_values="${3:-}" # Space-separated list of valid values + + local parsed_value + if [[ "$option" =~ ^--enable ]]; then + parsed_value=$(read_enable "$option") + elif [[ "$option" =~ ^--with ]]; then + parsed_value=$(read_with "$option" "$default_value") + else + parsed_value="$option" + fi + + # Validate against allowed values if provided + if [[ -n "$valid_values" && "$parsed_value" != "__INVALID__" ]]; then + local is_valid=false + for valid in $valid_values; do + if [[ "$parsed_value" == "$valid" ]]; then + is_valid=true + break + fi + done + + if [[ "$is_valid" == false ]]; then + report_warning_enhanced "WARNING" "Invalid configuration value: $parsed_value" "Valid options: $valid_values" + parsed_value="__INVALID__" + fi + fi + + echo "$parsed_value" +} + +# ============================================================================ +# File Download and Integrity Functions +# ============================================================================ + # helper routine to check integrity of downloaded files checksum() { local __filename=$1 @@ -641,9 +879,54 @@ checksum() { fi } +# Enhanced checksum verification with multiple hash algorithms +verify_file_integrity() { + local filename="$1" + local expected_hash="$2" + local hash_type="${3:-sha256}" # Default to SHA256 + + if [[ ! -f "$filename" ]]; then + report_error_enhanced 1 "File not found for integrity check" "$filename" + return 1 + fi + + local hash_command + case "$hash_type" in + sha256) + hash_command="sha256sum" + command -v "$hash_command" >/dev/null 2>&1 || hash_command="shasum -a 256" + ;; + sha1) + hash_command="sha1sum" + command -v "$hash_command" >/dev/null 2>&1 || hash_command="shasum -a 1" + ;; + md5) + hash_command="md5sum" + command -v "$hash_command" >/dev/null 2>&1 || hash_command="md5" + ;; + *) + report_error_enhanced 1 "Unsupported hash type" "$hash_type" + return 1 + ;; + esac + + local computed_hash + computed_hash=$($hash_command "$filename" | cut -d' ' -f1) + + if [[ "$computed_hash" == "$expected_hash" ]]; then + echo "✓ Integrity check passed for $filename ($hash_type)" + return 0 + else + report_error_enhanced 1 "Integrity check failed for $filename" "Expected: $expected_hash, Got: $computed_hash" + return 1 + fi +} + # downloader for the package tars, includes checksum -download_pkg_from_ABACUS_org() { - # usage: download_pkg_from_ABACUS_org sha256 filename +# backup and deprecated +download_pkg_from_org() { + # usage: download_pkg_from_org sha256 filename + echo "use cp2k mirror to download $__filename" local __sha256="$1" local __filename="$2" local __url="https://www.cp2k.org/static/downloads/$__filename" @@ -667,18 +950,53 @@ download_pkg_from_url() { local __sha256="$1" # if set to "--no-checksum", do not check checksum local __filename="$2" local __url="$3" - # download - #echo "wget ${DOWNLOADER_FLAGS} --quiet $__url -O $__filename" - #if ! wget ${DOWNLOADER_FLAGS} --quiet $__url -O $__filename; then - echo "wget ${DOWNLOADER_FLAGS} $__url -O $__filename --no-check-certificate" - if ! wget ${DOWNLOADER_FLAGS} $__url -O $__filename --no-check-certificate; then - report_error "failed to download $__url" - recommend_offline_installation $__filename $__url - if [ "${PACK_RUN}" != "__TRUE__" ]; then - return 1 - fi - fi - # checksum + + # Smart certificate validation strategy + case "${DOWNLOAD_CERT_POLICY:-smart}" in + "strict") + echo "Downloading with strict certificate validation: $__url" + if ! wget ${DOWNLOADER_FLAGS} "$__url" -O "$__filename"; then + rm -f "$__filename" + report_error "failed to download $__url (strict certificate validation)" + recommend_offline_installation "$__filename" "$__url" + if [ "${PACK_RUN}" != "__TRUE__" ]; then + return 1 + fi + fi + ;; + "skip") + echo "Downloading with certificate validation disabled: $__url" + if ! wget ${DOWNLOADER_FLAGS} "$__url" -O "$__filename" --no-check-certificate; then + rm -f "$__filename" + report_error "failed to download $__url" + recommend_offline_installation "$__filename" "$__url" + if [ "${PACK_RUN}" != "__TRUE__" ]; then + return 1 + fi + fi + ;; + "smart"|*) + # Smart fallback: try with certificate validation first, then without + echo "Attempting secure download: $__url" + if wget ${DOWNLOADER_FLAGS} "$__url" -O "$__filename"; then + echo "Download successful with certificate validation" + else + echo "Certificate validation failed, retrying without certificate check..." + if ! wget ${DOWNLOADER_FLAGS} "$__url" -O "$__filename" --no-check-certificate; then + rm -f "$__filename" + report_error "failed to download $__url (both secure and insecure attempts failed)" + recommend_offline_installation "$__filename" "$__url" + if [ "${PACK_RUN}" != "__TRUE__" ]; then + return 1 + fi + else + echo "Download successful without certificate validation" + fi + fi + ;; + esac + + # checksum validation (unchanged) if [ "$__sha256" != "--no-checksum" ]; then checksum "$__filename" "$__sha256" fi diff --git a/toolchain/toolchain_aocc-aocl.sh b/toolchain/toolchain_aocc-aocl.sh index ca3e2e4759..edfe1f20ae 100755 --- a/toolchain/toolchain_aocc-aocl.sh +++ b/toolchain/toolchain_aocc-aocl.sh @@ -5,33 +5,115 @@ #SBATCH -o compile.log #SBATCH -e compile.err -# JamesMisaka in 2025-05-05 -# install abacus dependency by aocc-aocl toolchain -# openmpi is recommended to use -# libtorch and libnpy are for deepks support, which can be =no -# if you want to run EXX calculation, you should set --with-libri=install -# gpu-lcao supporting modify: CUDA_PATH and --enable-cuda -# export CUDA_PATH=/usr/local/cuda - -./install_abacus_toolchain.sh \ ---with-amd=system \ ---math-mode=aocl \ ---with-intel=no \ ---with-gcc=no \ ---with-openmpi=install \ ---with-cmake=install \ ---with-scalapack=system \ ---with-libxc=install \ ---with-fftw=system \ ---with-elpa=install \ ---with-cereal=install \ ---with-rapidjson=install \ ---with-libtorch=no \ ---with-libnpy=no \ ---with-libri=no \ ---with-libcomm=no \ ---with-4th-openmpi=no \ ---with-flang=no \ -| tee compile.log -# to use openmpi-version4: set --with-4th-openmpi=yes -# flang is not recommended to use in this stage \ No newline at end of file +# Users can easily modify these parameters to customize the build +# Before running this script, ensure you have loaded your system packages + +# Compiler Configuration +TOOLCHAIN_COMPILER="aocc-aocl" +WITH_AMD="system" +WITH_INTEL="no" +WITH_GCC="no" + +# Math Libraries (AMD AOCL recommended) +MATH_MODE="aocl" +WITH_AOCL="system" + +# MPI Implementation (OpenMPI recommended) +MPI_MODE="openmpi" +WITH_OPENMPI="install" +WITH_MPICH="no" +WITH_4TH_OPENMPI="no" # Set to "yes" for OpenMPI v4, deprecated + +# Core Dependencies +WITH_CMAKE="install" +WITH_SCALAPACK="system" # AOCL provides ScaLAPACK +WITH_FFTW="system" # AOCL provides FFTW +WITH_LIBXC="install" +WITH_ELPA="install" + +# Utility Libraries +WITH_CEREAL="install" +WITH_RAPIDJSON="install" + +# Advanced Features (EXX calculations) +WITH_LIBRI="install" +WITH_LIBCOMM="install" + +# Optional Features (MLALGO support) +WITH_LIBTORCH="no" +WITH_LIBNPY="no" +WITH_NEP="no" + +# AMD Compiler Options +WITH_FLANG="no" # Flang is not recommended in current stage + +# ELPA-GPU Support (uncomment and modify as needed) +# ENABLE_CUDA="yes" +# GPU_VERSION="75" # Check your GPU compute capability +# export CUDA_PATH="/usr/local/cuda" + +# ============================================================================ +# Execution Mode Control +# ============================================================================ +# Dry-run mode: Show what would be done without actually executing +DRY_RUN_MODE="no" # Set to "yes" to enable dry-run mode + +# Pack-run mode: Only check and install required packages +PACK_RUN_MODE="no" # Set to "yes" to enable pack-run mode + +# ============================================================================ +# Package Version Selection (main/alt versions) +# ============================================================================ +# Choose between main (latest stable) and alt (alternative/legacy) versions +# Refer to scripts/package_versions.sh for specific version numbers + +CMAKE_VERSION="main" # main=3.31.7, alt=3.30.5 +OPENMPI_VERSION="main" # main=5.0.8, alt=4.1.6 +ELPA_VERSION="main" # main=2025.06.001, alt=2024.05.001 +LIBXC_VERSION="main" # main=7.0.0, alt=6.2.2 +# Optional Libraries +LIBTORCH_VERSION="main" # main=2.1.2, alt=1.12.1 (use alt for older GLIBC) +# Note: main(2.1.2) version of LibTorch need glibc > 2.27 +# Note: alt(1.12.1) version of LibTorch cannot support DeePMD-Torch for DPA + +# Note: AOCC-AOCL toolchain uses AOCL for math libraries (FFTW, ScaLAPACK) +# so OpenBLAS and ScaLAPACK version selections are not applicable + +# ============================================================================ +# Execute Installation (DO NOT MODIFY BELOW THIS LINE) +# ============================================================================ + +# Call the main installation script with configured parameters +exec ./install_abacus_toolchain_new.sh \ + --with-amd="$WITH_AMD" \ + --with-gcc="$WITH_GCC" \ + --math-mode="$MATH_MODE" \ + --mpi-mode="$MPI_MODE" \ + --with-aocl="$WITH_AOCL" \ + --with-openmpi="$WITH_OPENMPI" \ + --with-mpich="$WITH_MPICH" \ + --with-cmake="$WITH_CMAKE" \ + --with-scalapack="$WITH_SCALAPACK" \ + --with-libxc="$WITH_LIBXC" \ + --with-fftw="$WITH_FFTW" \ + --with-elpa="$WITH_ELPA" \ + --with-cereal="$WITH_CEREAL" \ + --with-rapidjson="$WITH_RAPIDJSON" \ + --with-libtorch="$WITH_LIBTORCH" \ + --with-nep="$WITH_NEP" \ + --with-libnpy="$WITH_LIBNPY" \ + --with-libri="$WITH_LIBRI" \ + --with-libcomm="$WITH_LIBCOMM" \ + --with-flang="$WITH_FLANG" \ + --with-4th-openmpi="$WITH_4TH_OPENMPI" \ + --package-version cmake:"$CMAKE_VERSION" \ + --package-version openmpi:"$OPENMPI_VERSION" \ + --package-version elpa:"$ELPA_VERSION" \ + --package-version libxc:"$LIBXC_VERSION" \ + --package-version libtorch:"$LIBTORCH_VERSION" \ + ${DRY_RUN_MODE:+$([ "$DRY_RUN_MODE" = "yes" ] && echo "--dry-run")} \ + ${PACK_RUN_MODE:+$([ "$PACK_RUN_MODE" = "yes" ] && echo "--pack-run")} \ + ${ENABLE_CUDA:+--enable-cuda} \ + ${GPU_VERSION:+--gpu-ver="$GPU_VERSION"} \ + "$@" \ + | tee compile.log diff --git a/toolchain/toolchain_gcc-aocl.sh b/toolchain/toolchain_gcc-aocl.sh index f7b717b257..7a21670ab9 100755 --- a/toolchain/toolchain_gcc-aocl.sh +++ b/toolchain/toolchain_gcc-aocl.sh @@ -5,32 +5,111 @@ #SBATCH -o compile.log #SBATCH -e compile.err -# JamesMisaka in 2025-05-05 -# install abacus dependency by gcc-aocl toolchain -# openmpi is recommended to use -# libtorch and libnpy are for deepks support, which can be =no -# if you want to run EXX calculation, you should set --with-libri=install - -# gpu-lcao supporting modify: CUDA_PATH and --enable-cuda -# export CUDA_PATH=/usr/local/cuda - -./install_abacus_toolchain.sh \ ---with-gcc=system \ ---math-mode=aocl \ ---with-amd=no \ ---with-intel=no \ ---with-openmpi=install \ ---with-cmake=install \ ---with-scalapack=system \ ---with-libxc=install \ ---with-fftw=system \ ---with-elpa=install \ ---with-cereal=install \ ---with-rapidjson=install \ ---with-libtorch=no \ ---with-libnpy=no \ ---with-libri=no \ ---with-libcomm=no \ ---with-4th-openmpi=no \ -| tee compile.log -# to use openmpi-version4: set --with-4th-openmpi=yes \ No newline at end of file +# Users can easily modify these parameters to customize the build +# Before running this script, ensure you have loaded your system packages + +# Compiler Configuration +TOOLCHAIN_COMPILER="gcc-aocl" +WITH_GCC="system" +WITH_AMD="no" +WITH_INTEL="no" + +# Math Libraries (AMD AOCL recommended) +MATH_MODE="aocl" +WITH_AOCL="system" + +# MPI Implementation (OpenMPI recommended) +MPI_MODE="openmpi" +WITH_OPENMPI="install" +WITH_4TH_OPENMPI="no" # Set to "yes" for OpenMPI v4, deprecated +WITH_MPICH="no" + +# Core Dependencies +WITH_CMAKE="install" +WITH_SCALAPACK="system" # AOCL provides ScaLAPACK +WITH_FFTW="system" # AOCL provides FFTW +WITH_LIBXC="install" +WITH_ELPA="install" + +# Utility Libraries +WITH_CEREAL="install" +WITH_RAPIDJSON="install" + +# Advanced Features (EXX calculations) +WITH_LIBRI="install" +WITH_LIBCOMM="install" + +# Optional Features (MLALGO support) +WITH_LIBTORCH="no" +WITH_LIBNPY="no" +WITH_NEP="no" + +# ELPA-GPU Support (uncomment and modify as needed) +# ENABLE_CUDA="yes" +# GPU_VERSION="75" # Check your GPU compute capability +# export CUDA_PATH="/usr/local/cuda" + +# ============================================================================ +# Execution Mode Control +# ============================================================================ +# Dry-run mode: Show what would be done without actually executing +DRY_RUN_MODE="no" # Set to "yes" to enable dry-run mode + +# Pack-run mode: Only check and install required packages +PACK_RUN_MODE="no" # Set to "yes" to enable pack-run mode + +# ============================================================================ +# Package Version Selection (main/alt versions) +# ============================================================================ +# Choose between main (latest stable) and alt (alternative/legacy) versions +# Refer to scripts/package_versions.sh for specific version numbers + +CMAKE_VERSION="main" # main=3.31.7, alt=3.30.5 +OPENMPI_VERSION="main" # main=5.0.8, alt=4.1.6 +ELPA_VERSION="main" # main=2025.06.001, alt=2024.05.001 +LIBXC_VERSION="main" # main=7.0.0, alt=6.2.2 +# Optional Libraries +LIBTORCH_VERSION="main" # main=2.1.2, alt=1.12.1 (use alt for older GLIBC) +# Note: main(2.1.2) version of LibTorch need glibc > 2.27 +# Note: alt(1.12.1) version of LibTorch cannot support DeePMD-Torch for DPA + +# Note: GCC-AOCL toolchain uses AOCL for math libraries (FFTW, ScaLAPACK) +# so OpenBLAS and ScaLAPACK version selections are not applicable + +# ============================================================================ +# Execute Installation (DO NOT MODIFY BELOW THIS LINE) +# ============================================================================ + +# Call the main installation script with configured parameters +exec ./install_abacus_toolchain_new.sh \ + --with-gcc="$WITH_GCC" \ + --with-amd="$WITH_AMD" \ + --math-mode="$MATH_MODE" \ + --mpi-mode="$MPI_MODE" \ + --with-aocl="$WITH_AOCL" \ + --with-openmpi="$WITH_OPENMPI" \ + --with-mpich="$WITH_MPICH" \ + --with-cmake="$WITH_CMAKE" \ + --with-scalapack="$WITH_SCALAPACK" \ + --with-libxc="$WITH_LIBXC" \ + --with-fftw="$WITH_FFTW" \ + --with-elpa="$WITH_ELPA" \ + --with-cereal="$WITH_CEREAL" \ + --with-rapidjson="$WITH_RAPIDJSON" \ + --with-libtorch="$WITH_LIBTORCH" \ + --with-nep="$WITH_NEP" \ + --with-libnpy="$WITH_LIBNPY" \ + --with-libri="$WITH_LIBRI" \ + --with-libcomm="$WITH_LIBCOMM" \ + --with-4th-openmpi="$WITH_4TH_OPENMPI" \ + --package-version cmake:"$CMAKE_VERSION" \ + --package-version openmpi:"$OPENMPI_VERSION" \ + --package-version elpa:"$ELPA_VERSION" \ + --package-version libxc:"$LIBXC_VERSION" \ + --package-version libtorch:"$LIBTORCH_VERSION" \ + ${DRY_RUN_MODE:+$([ "$DRY_RUN_MODE" = "yes" ] && echo "--dry-run")} \ + ${PACK_RUN_MODE:+$([ "$PACK_RUN_MODE" = "yes" ] && echo "--pack-run")} \ + ${ENABLE_CUDA:+--enable-cuda} \ + ${GPU_VERSION:+--gpu-ver="$GPU_VERSION"} \ + "$@" \ + | tee compile.log diff --git a/toolchain/toolchain_gnu.sh b/toolchain/toolchain_gnu.sh index 03e1c55440..44cfbe4b36 100755 --- a/toolchain/toolchain_gnu.sh +++ b/toolchain/toolchain_gnu.sh @@ -4,37 +4,116 @@ #SBATCH -n 16 #SBATCH -o compile.log #SBATCH -e compile.err +# Users can easily modify these parameters to customize the build -# JamesMisaka in 2025-05-05 -# install abacus dependency by gnu-toolchain -# one can use mpich or openmpi. openmpi will be faster and less compatiable -# libtorch and libnpy are for deepks support, which can be =no -# if you want to run EXX calculation, you should set --with-libri=install - -# gpu-lcao supporting modify: CUDA_PATH and --enable-cuda -# export CUDA_PATH=/usr/local/cuda - -./install_abacus_toolchain.sh \ ---with-gcc=system \ ---with-intel=no \ ---with-openblas=install \ ---with-openmpi=install \ ---with-cmake=install \ ---with-scalapack=install \ ---with-libxc=install \ ---with-fftw=install \ ---with-elpa=install \ ---with-cereal=install \ ---with-rapidjson=install \ ---with-libtorch=no \ ---with-libnpy=no \ ---with-libri=no \ ---with-libcomm=no \ ---with-4th-openmpi=no \ -| tee compile.log -# to use openmpi-version4: set --with-4th-openmpi=yes -# to enable gpu-lcao, add the following lines: -# --enable-cuda \ -# --gpu-ver=75 \ -# one should check your gpu compute capability number -# and use it in --gpu-ver +# Before running this script, ensure you have loaded your system packages + +# Compiler Configuration +TOOLCHAIN_COMPILER="gnu" +WITH_GCC="system" +WITH_INTEL="no" +WITH_AMD="no" + +# Math Libraries +MATH_MODE="openblas" +WITH_OPENBLAS="install" + +# MPI Implementation (OpenMPI recommended) +MPI_MODE="openmpi" +WITH_OPENMPI="install" +WITH_4TH_OPENMPI="no" # Set to "yes" for OpenMPI v4, deprecated +WITH_MPICH="no" + +# Core Dependencies +WITH_CMAKE="install" +WITH_SCALAPACK="install" +WITH_LIBXC="install" +WITH_FFTW="install" +WITH_ELPA="install" + +# Utility Libraries +WITH_CEREAL="install" +WITH_RAPIDJSON="install" + +# Advanced Features (EXX calculations) +WITH_LIBRI="install" +WITH_LIBCOMM="install" + +# Optional Features (MLALGO support) +WITH_LIBTORCH="no" +WITH_LIBNPY="no" +WITH_NEP="no" + +# ELPA-GPU Support (uncomment and modify as needed) +# ENABLE_CUDA="yes" +# GPU_VERSION="75" # Check your GPU compute capability +# export CUDA_PATH="/usr/local/cuda" + +# ============================================================================ +# Execution Mode Control +# ============================================================================ +# Dry-run mode: Show what would be done without actually executing +DRY_RUN_MODE="no" # Set to "yes" to enable dry-run mode + +# Pack-run mode: Only check and install required packages +PACK_RUN_MODE="no" # Set to "yes" to enable pack-run mode + +# ============================================================================ +# Package Version Selection (main/alt versions) +# ============================================================================ +# Choose between main (latest stable) and alt (alternative/legacy) versions +# Refer to scripts/package_versions.sh for specific version numbers + +CMAKE_VERSION="main" # main=3.31.7, alt=3.30.5 +OPENMPI_VERSION="main" # main=5.0.8, alt=4.1.6 +MPICH_VERSION="main" # main=4.1.6, alt=4.1.5 +OPENBLAS_VERSION="main" # main=0.3.30, alt=0.3.27 +ELPA_VERSION="main" # main=2025.06.001, alt=2024.05.001 +LIBXC_VERSION="main" # main=7.0.0, alt=6.2.2 +SCALAPACK_VERSION="main" # main=2.2.2, alt=2.2.1 +# Optional Libraries +LIBTORCH_VERSION="main" # main=2.1.2, alt=1.12.1 (use alt for older GLIBC) +# Note: main(2.1.2) version of LibTorch need glibc > 2.27 +# Note: alt(1.12.1) version of LibTorch cannot support DeePMD-Torch for DPA + +# ============================================================================ +# Execute Installation (DO NOT MODIFY BELOW THIS LINE) +# ============================================================================ + +# Call the main installation script with configured parameters +exec ./install_abacus_toolchain_new.sh \ + --with-gcc="$WITH_GCC" \ + --with-intel="$WITH_INTEL" \ + --with-amd="$WITH_AMD" \ + --math-mode="$MATH_MODE" \ + --mpi-mode="$MPI_MODE" \ + --with-openblas="$WITH_OPENBLAS" \ + --with-openmpi="$WITH_OPENMPI" \ + --with-mpich="$WITH_MPICH" \ + --with-cmake="$WITH_CMAKE" \ + --with-scalapack="$WITH_SCALAPACK" \ + --with-libxc="$WITH_LIBXC" \ + --with-fftw="$WITH_FFTW" \ + --with-elpa="$WITH_ELPA" \ + --with-cereal="$WITH_CEREAL" \ + --with-rapidjson="$WITH_RAPIDJSON" \ + --with-libtorch="$WITH_LIBTORCH" \ + --with-nep="$WITH_NEP" \ + --with-libnpy="$WITH_LIBNPY" \ + --with-libri="$WITH_LIBRI" \ + --with-libcomm="$WITH_LIBCOMM" \ + --with-4th-openmpi="$WITH_4TH_OPENMPI" \ + --package-version cmake:"$CMAKE_VERSION" \ + --package-version openmpi:"$OPENMPI_VERSION" \ + --package-version mpich:"$MPICH_VERSION" \ + --package-version openblas:"$OPENBLAS_VERSION" \ + --package-version elpa:"$ELPA_VERSION" \ + --package-version libxc:"$LIBXC_VERSION" \ + --package-version scalapack:"$SCALAPACK_VERSION" \ + --package-version libtorch:"$LIBTORCH_VERSION" \ + ${DRY_RUN_MODE:+$([ "$DRY_RUN_MODE" = "yes" ] && echo "--dry-run")} \ + ${PACK_RUN_MODE:+$([ "$PACK_RUN_MODE" = "yes" ] && echo "--pack-run")} \ + ${ENABLE_CUDA:+--enable-cuda} \ + ${GPU_VERSION:+--gpu-ver="$GPU_VERSION"} \ + "$@" \ + | tee compile.log diff --git a/toolchain/toolchain_intel.sh b/toolchain/toolchain_intel.sh index 54a73ae28c..29138b6e5a 100755 --- a/toolchain/toolchain_intel.sh +++ b/toolchain/toolchain_intel.sh @@ -5,37 +5,132 @@ #SBATCH -o compile.log #SBATCH -e compile.err -# JamesMisaka in 2025-05-05 -# install abacus dependency by intel-toolchain -# use mkl and intelmpi -# but mpich and openmpi can also be tried -# libtorch and libnpy are for deepks support, which can be =no -# gpu-lcao supporting modify: CUDA_PATH and --enable-cuda -# export CUDA_PATH=/usr/local/cuda +# Users can easily modify these parameters to customize the build +# Before running this script, ensure you have loaded your system packages # module load mkl mpi compiler -./install_abacus_toolchain.sh \ ---with-intel=system \ ---math-mode=mkl \ ---with-gcc=no \ ---with-intelmpi=system \ ---with-cmake=install \ ---with-scalapack=no \ ---with-libxc=install \ ---with-fftw=no \ ---with-elpa=install \ ---with-cereal=install \ ---with-rapidjson=install \ ---with-libtorch=no \ ---with-libnpy=no \ ---with-libri=no \ ---with-libcomm=no \ ---with-intel-classic=no \ -| tee compile.log -# for using AMD-CPU or GPU-version: set --with-intel-classic=yes -# to enable gpu-lcao, add the following lines: -# --enable-cuda \ -# --gpu-ver=75 \ -# one should check your gpu compute capability number -# and use it in --gpu-ver \ No newline at end of file +# Compiler Configuration +TOOLCHAIN_COMPILER="intel" +WITH_INTEL="system" +WITH_GCC="no" + +# Math Libraries (Intel MKL recommended) +MATH_MODE="mkl" +WITH_MKL="system" # Use system MKL when MATH_MODE is mkl + +# MPI Implementation (Intel MPI recommended, but OpenMPI/MPICH also supported) +MPI_MODE="intelmpi" +WITH_INTELMPI="system" +WITH_OPENMPI="no" +WITH_MPICH="no" + +# Core Dependencies +WITH_CMAKE="install" +WITH_SCALAPACK="no" # MKL provides ScaLAPACK +WITH_FFTW="no" # MKL provides FFTW interface +WITH_LIBXC="install" +WITH_ELPA="install" + +# Utility Libraries +WITH_CEREAL="install" +WITH_RAPIDJSON="install" + +# Advanced Features (EXX calculations) +WITH_LIBRI="install" +WITH_LIBCOMM="install" + +# Optional Features (MLALGO support) +WITH_LIBTORCH="no" +WITH_LIBNPY="no" +WITH_NEP="no" + +# ELPA-GPU Support (uncomment and modify as needed) +# ENABLE_CUDA="yes" +# GPU_VERSION="75" # Check your GPU compute capability +# export CUDA_PATH="/usr/local/cuda" + +# ============================================================================ +# Execution Mode Control +# ============================================================================ +# Dry-run mode: Show what would be done without actually executing +DRY_RUN_MODE="no" # Set to "yes" to enable dry-run mode + +# Pack-run mode: Only check and install required packages +PACK_RUN_MODE="no" # Set to "yes" to enable pack-run mode + +# ============================================================================ +# Intel Compiler and MPI Options +# ============================================================================ +# Intel Compiler Version Selection +WITH_INTEL_CLASSIC="no" # Set to "yes" to use classic Intel compilers (icc/icpc/ifort) + # Set to "no" to use new Intel compilers (icx/icpx/ifx) + # Classic compilers needed for AMD-CPU or GPU-version + +WITH_IFX="yes" # Set to "yes" to use new Fortran compiler ifx (default) + # Set to "no" to use traditional ifort + # Only applies when WITH_INTEL_CLASSIC="no" + +# Intel MPI Version Selection +INTELMPI_CLASSIC="no" # Set to "yes" to use classic Intel MPI wrappers (mpiicc/mpiicpc/mpiifort) + # Set to "no" to use new Intel MPI wrappers (mpiicx/mpiicpx/mpiifx) + # Should match WITH_INTEL_CLASSIC setting for consistency + # Classic wrappers recommended for older Intel OneAPI versions + + +# ============================================================================ +# Package Version Selection (main/alt versions) +# ============================================================================ +# Choose between main (latest stable) and alt (alternative/legacy) versions +# Refer to scripts/package_versions.sh for specific version numbers + +CMAKE_VERSION="main" # main=3.31.7, alt=3.30.5 +ELPA_VERSION="alt" # main=2025.06.001, alt=2024.05.001 for intel oneapi<2024.2 +LIBXC_VERSION="main" # main=7.0.0, alt=6.2.2 +# Optional Libraries +LIBTORCH_VERSION="main" # main=2.1.2, alt=1.12.1 (use alt for older GLIBC) +# Note: main(2.1.2) version of LibTorch need glibc > 2.27 +# Note: alt(1.12.1) version of LibTorch cannot support DeePMD-Torch for DPA + +# Note: Intel toolchain uses MKL for math libraries (FFTW, ScaLAPACK) +# so OpenBLAS, FFTW, and ScaLAPACK version selections are not applicable + +# ============================================================================ +# Execute Installation (DO NOT MODIFY BELOW THIS LINE) +# ============================================================================ + +# Call the main installation script with configured parameters +exec ./install_abacus_toolchain_new.sh \ + --with-intel="$WITH_INTEL" \ + --with-gcc="$WITH_GCC" \ + --math-mode="$MATH_MODE" \ + --mpi-mode="$MPI_MODE" \ + --with-mkl="$WITH_MKL" \ + --with-openmpi="$WITH_OPENMPI" \ + --with-mpich="$WITH_MPICH" \ + --with-intelmpi="$WITH_INTELMPI" \ + --with-cmake="$WITH_CMAKE" \ + --with-scalapack="$WITH_SCALAPACK" \ + --with-libxc="$WITH_LIBXC" \ + --with-fftw="$WITH_FFTW" \ + --with-elpa="$WITH_ELPA" \ + --with-cereal="$WITH_CEREAL" \ + --with-rapidjson="$WITH_RAPIDJSON" \ + --with-libtorch="$WITH_LIBTORCH" \ + --with-nep="$WITH_NEP" \ + --with-libnpy="$WITH_LIBNPY" \ + --with-libri="$WITH_LIBRI" \ + --with-libcomm="$WITH_LIBCOMM" \ + --with-intel-classic="$WITH_INTEL_CLASSIC" \ + --with-ifx="$WITH_IFX" \ + --with-intel-mpi-classic="$INTELMPI_CLASSIC" \ + --package-version cmake:"$CMAKE_VERSION" \ + --package-version elpa:"$ELPA_VERSION" \ + --package-version libxc:"$LIBXC_VERSION" \ + --package-version libtorch:"$LIBTORCH_VERSION" \ + ${DRY_RUN_MODE:+$([ "$DRY_RUN_MODE" = "yes" ] && echo "--dry-run")} \ + ${PACK_RUN_MODE:+$([ "$PACK_RUN_MODE" = "yes" ] && echo "--pack-run")} \ + ${ENABLE_CUDA:+--enable-cuda} \ + ${GPU_VERSION:+--gpu-ver="$GPU_VERSION"} \ + "$@" \ + | tee compile.log diff --git a/tools/README.md b/tools/README.md new file mode 100644 index 0000000000..a3ce30b113 --- /dev/null +++ b/tools/README.md @@ -0,0 +1,25 @@ +SIAB: codes to generate numerical atomic orbitals. + +molden: generate molden style file for Multiwfn analysis. + +plot-tools: band structure, dos and pdos, dipole and adsorption. + +rt-tddft-tools: tools for real-time tddft. + +average_pot: python script used to calculate and plot the average electrostatic potential. + +stm: generate figures related to Scanning tunneling microscope technique. + +generate_orbital.sh: script used to generate numerical atomic orbitals (NAO). + +opt_abfs_bash: related to generating NAO basis set. + +opt_lcao_bash: related to generating NAO basis set. + +opt_orb_pytorch: related to generating NAO basis set. + +opt_orb_pytorch_dpsi: related to generating NAO basis set. + +qo: generate quasiatomic orbital (qo). + +selective_dynamics: used to do selective dynamics with ABACUS + Phonopy. \ No newline at end of file diff --git a/tools/SIAB/Generate_Orbital_AllInOne.sh b/tools/SIAB/Generate_Orbital_AllInOne.sh index 782b569023..95d323c43d 100755 --- a/tools/SIAB/Generate_Orbital_AllInOne.sh +++ b/tools/SIAB/Generate_Orbital_AllInOne.sh @@ -612,7 +612,6 @@ suffix $element-$rcut-$BL stru_file $name.stru pseudo_dir $Pseudo_dir kpoint_file KPOINTS -wannier_card INPUTw calculation scf ntype 1 nspin 1 diff --git a/tools/SIAB/PyTorchGradient/example_opt_lcao_bash/generate_orbital_mixstru.sh b/tools/SIAB/PyTorchGradient/example_opt_lcao_bash/generate_orbital_mixstru.sh index 01c973bc85..a810997e5e 100755 --- a/tools/SIAB/PyTorchGradient/example_opt_lcao_bash/generate_orbital_mixstru.sh +++ b/tools/SIAB/PyTorchGradient/example_opt_lcao_bash/generate_orbital_mixstru.sh @@ -504,7 +504,6 @@ latname $element-$rcut-$BL stru_file $name.stru pseudo_dir $pseudo_dir kpoint_file KPOINTS -wannier_card INPUTw calculation scf ntype 1 nspin 1 diff --git a/tools/SIAB/PyTorchGradient/example_opt_lcao_bash/print_file.py b/tools/SIAB/PyTorchGradient/example_opt_lcao_bash/print_file.py index 94b8fbbe8e..cdf317ffc0 100644 --- a/tools/SIAB/PyTorchGradient/example_opt_lcao_bash/print_file.py +++ b/tools/SIAB/PyTorchGradient/example_opt_lcao_bash/print_file.py @@ -8,7 +8,6 @@ def print_file_pw(info,dis): file.write(textwrap.dedent(f"""\ INPUT_PARAMETERS pseudo_dir {info["input"]["pseudo_dir"]} - wannier_card INPUTw calculation scf ntype 1 nspin 1 diff --git a/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/ChangeLog b/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/ChangeLog deleted file mode 100644 index 1854d9e768..0000000000 --- a/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/ChangeLog +++ /dev/null @@ -1,345 +0,0 @@ -Minimize Spillage Program Update Note. -Author : Mohan Chen -Email : mohan@mail.ustc.edu.cn -Locate : LQCC - -Na-bcc 29 kpoints use 15 pools and 15 processors. ---------- CLASS NAME--------------- NAME ----- TIME(sec) -- CALLS ----- AVG ----- PER% -! total 1052.41 1 1.1e+03 1e+02% -! Metropolis move_various_t 1e+03 5 2.1e+02 98% -! Metropolis move_one_step 1e+03 2000 0.51 98% -! PW_Basis (*)pdate_psi1d 6.1e+02 176005 0.0034 57% -! PW_Basis calculateS 2.8e+02 352010 0.0008 27% -! PW_Basis update_psi3d 1e+02 352010 0.0003 9.9% -! PW_Basis (*)get_sk 25 398506 6.2e-05 2.3% -! Orthogonal start 11 4 2.7 1% -! PW_Basis calculate_Jlq 9.8 45056 0.00022 0.93% -! Spillage TableOne 7.7 1 7.7 0.73% -! PW_Basis calculate_psi3d 0.32 90 0.0036 0.03% -! PW_Basis calculate_psi1d 0.23 45 0.0051 0.022% -! ReadData OverlapQ 0.11 1 0.11 0.01% --------------------------------------------------------------------------------------- -Start Time : Sat Jun 19 00:00:06 2010 -Finish Time : Sat Jun 19 00:24:25 2010 -Problem: -1. Need to improve update_psi1d. -2. Sk,gk can be chosen to calculated once and stored. -which can be 'tested' -3. Calculate_Jlq can be improved. -4. Memory calculation should be available. -5. Output time after each level. -6. More detail output information for large system. -7. Efficient restart mode. -8. Chosen bands information should be output correctly. - -VERSION 046 -11-07-22 Output ORBITAL_PW_GK.dat in pw_basis.cpp. -11-07-22 Update some output information, the order of plane wave in MCSP -is the same as in ESP. - -VERSION 045 -11-02-21 Add new functions in read_INPUT.cpp, can read INPUTs now. -11-02-21 Add new variables in tools.cpp - -VERSION 044 -10-08-06 Mohan Fix bug in SpillageStep, mz.lmax_type[it] -> LMAXALL, -because when using l < LMAXALL, we hope the program can go on running. -10-09-27 Mohan Fix bug in ReadData.cpp, the CARPOSX,Y,Z is useless. -10-10-15 Add a new parameter: START_KIN_TEM -11-02-19 Fix a bug, the id of elements should be numbrs, and the number -must > 0. - -VERSION 043 -10-07-21 Fix a bug in SpillageStep, about calculation of iw00. -10-07-22 Fix another bug during set iw00 in SpillageStep, -LMAXALL -> mz.lmax_type[it]. - -VERSION 042 -10-07-12 Reorder tools.h -10-07-13 Fix a bug, the Mkb and Mkb_used must be zero at first. -10-07-13 Fix a bug in out_orbital. the spillage in it is consistent with -spillage value in get_spillage now. - -VERSION 041 -10-06-18 Add some function in memory calculation. -10-06-18 Fix a bug in get_sk. -10-06-27 Using openmpi instead of mpich-1.2.7. -10-06-27 Fix a bug in MPI_Recv, the MPI_Status *ierror -> MPI_Status ierror. -10-06-27 Fix a bug in main.cpp, the MPI_Finalize should be added. - -VERSION 040 -10-06-18 Update timer. -10-06-18 Speed up orthogonal in Sq1q2 largely. -10-06-18 Add Way2iw in PW. -10-06-18 Add calculate_Jlq in PW. -10-06-18 Add calculate_Jlq_phi in PW. -10-06-18 Orthogonal is avalible for PW in both versions. -10-06-18 A small update about 'update_psi1d'. -10-06-18 Add unstable in SpillageStep. -10-06-18 Add reduce_int_all in parallel_reduce. -10-06-18 Refix the bug in spillagestep, about Mk and upbound. -10-06-18 Fix a bug in Out_Orbtial, about output spillage information. -10-06-18 Fix a 'very' serious bug in SpillageStep. -origin : Mk > spillage0 is not promised by every k point, -this is correct. Because spillage0 is also an average value -by sum_{ik,ib}. So I changed it to fill > spillage0. -I hope this is the final correct form! -10-06-18 Add parallel in Out_Orbital. -10-06-18 Delete two parallel about 'bcast c4' and 'unstable'. - -VERSION 039 -10-06-17 Change ylm to ylm[NKS], optimize speed. -10-06-17 Fix a bug in ReadData about USEPW. -10-06-17 Fix two bug in pw_basis::get_GVectors. -10-06-17 Fix a bug in ReadData about bcast. -10-06-17 KPAR is not readable in series version. -10-06-17 Add calculation of ig1, ig2, ig3 in pw_basic. -10-06-17 Add NMAXUSED and CALSPI in tools. -10-06-17 Add LMAXUSED. -10-06-17 Fix a bug in series version, the CARKX,Y,Z. -10-06-17 Structure factor not needed to update unless -it or ia changed. -10-06-17 Add && istep==0 condition in Metropolis. -10-06-17 Fix a serious bug in init_QS_matrix, calculate_psi1d -and calculate_psi3d must consistent in it. - -VERSION 038 -10-06-14 Add cartesian k point coordiantes. -10-06-14 Add LAT0 and bcast it. -10-06-15 Add new pw_basis class. -10-06-15 Add new heapsort file. -10-06-15 Add ylm_real file. -10-06-15 Add inverse_matrix file. -10-06-16 Fix a bug, bcast CARPOSX,Y,Z. -10-06-16 Distribut plane wave using my own algorithm. -10-06-16 dekete ggpsi in pw_basis. -10-06-16 Add m in wayd in spillagestep. -10-06-16 Bcast C4 after each trial_C4. -10-06-16 Change psi3d to 3 dimension (ik,iw,ig) -10-06-16 Add make note operation. -10-06-17 Available for plwane wave calculation. -10-06-17 Orthogonal not avalable yet. -10-06-17 Speed not optimized yet. - -VERSION 037 -10-06-14 Bcast S data available. -10-06-14 Bcast parameters in Metropolis. -10-06-14 Bcast parameters in Coefficients. -10-06-14 Bcast parameters in MultiZeta. -10-06-14 Bcast weight. -10-06-14 K points parallel available! -10-06-14 If I delete Sq, use plane wave instead. - -VERSION 036 -10-06-14 Add mpi information in main.cpp -10-06-14 Fix a bug about KPAR bcast. -10-06-14 Bcast Q data available. - -VERSION 035 -10-06-12 Delete Damping.cpp. -10-06-12 Add common.h -10-06-12 Add parallel_kpoints class. -10-06-12 Add parallel_common namespace. -10-06-12 Add parallel_reduce namespace. -10-06-12 Add parallel_global namespace. -10-06-12 Add pw_complement. -10-06-12 Add make s and make p in Makefile. -10-06-12 Add parallel_kpoints as a global class. -10-06-12 Add QUIT in tools. -10-06-12 Parallel enviroment is available. -10-06-12 First part of read_INPUT is done. -10-06-12 Add DESTROY(). -10-06-12 Add LATVEC, NA, LABEL, .... -10-06-12 Add matrix3 and vector3. -10-06-12 Delete inputs class. -10-06-12 not available yet. - -VERSION 034 -10-05-02~10-06-12 Tests are good. -10-06-14 Fix a bug in SpillageStep, judge the upbound, the -condition should be weight * Mkb > upbound. - -VERSION 033 -10-05-02 Change the 'get_value' in SpillageValue to a more suitable name: -'cal_defined_value'. -10-05-02 Add BANDS_CONTROL, BANDS_START, BANDS_END 3 variables in tools. -and used in get_spillage in SpillageStep. -10-05-02 Add Mkb and Mk in Step_Data. -10-05-02 Add ilevel in Multizeta. -10-05-02 Add output Mkb information in Out_Orbital. -10-05-02 Add Mkb_used in Step_Data. -10-05-02 Record Mkb in Metropolis. - -VERSION 032 -10-04-29 A bug fixed in SpillageStep, the S inverse matrix value can reach as -large as 1.0*e14, an the effective number in double precision is only 15. So -this may artificially number in S inverse matrix which can cause the multiplication -between Q and S^{-1} incorrect. I ignore the incorrect value introduced by -some sets of coefficients. - -VERSION 031 -10-04-19 Add 'zero' point in ouput psi. -10-04-21 Small modification of output information. - -VERSION 030 -10-04-17 The efficience of 'norm_c4' be improved. -10-04-17 The recalculation should start from file "ORBITAL_RESUTSL.txt". -10-04-17 Delete file ORBITAL_SAVE, replace ORBITAL_RESULTS.txt instead of ORBITAL.out.restart. -10-04-18 Change back c4 to c4^2 to calculate kinetic energy. - -VERSION 029 -10-04-14 Speedup 'get_ecut' about 30%. (can still be imptoved if we divide Psi) -10-04-14 Add a parameter 'OPTIMIZE_METHOD'. -10-04-15 Fix a bug, about the output mesh don't include the r=0 point. -10-04-16 Add PI in tools.cpp. -10-04-16 The kinetic energy is updated in Rydberg unit. -10-04-16 The kinetic energy is now |C|q^2*PI/rcut. -10-04-17 The kinetic energy have two equal formuals. -10-04-17 Fix a bug in norm_c4, the g(r) must be multiplied. - -VERSION 028 -10-04-13 Add more ecut judgement in 'Plot_Psi'. -10-04-14 Add a new method to minimize kinetic energy, calculate the Ecut. - -VERSION 027 -10-04-12 Output logmesh oritals for plot and for used. -10-04-12 Seperate the dr to minimize kinetic energy and ploting, add KINETIC_DR in tools. -10-04-13 Fix a bug about the normalization of logmesh in Plot_Psi. -10-04-13 Add 'establish ecut' in 'Plot_Psi' to establish the cutoff of each orbital. - -VERSION 026 -10-04-08 Delete write_c4, read_c4, write_c4_init in Coefficients class. -10-04-08 Rearrange the files, add src_tools dir and src_spillage dir. -10-04-11 Output the average spillage value. -10-04-11 Output C4 after each step. - -VERSION 025 -09-12-27 Divide output ORBITAL.MCSP to different element part. - -VERSION 024 -09-11-06 Fix a bug in Metropolis, about recalculate kinetic energy temperature. - -VERSION 023 -09-10-10 Add two-step kinetical energy minimization. -09-10-15 Update Metropolis.cpp. -09-10-16 Add accept_rate in Metropolis.cpp -09-10-31 Add auto adjust the accept_rate. -09-10-31 Add KINETIC_MAX in tools.h, which control the energy of orbital. - -VERSION 022 -09-09-26 Output COEFFICIENTS, PSI, PSI2 file. -09-09-26 Output oscillation, kinetic energy. - -VERSION 021 -09-09-11 Add Psi_Second class. - -VERSION 020 -09-08-27 Move ORBITAL.out filename to ORBITAL.out.txt -09-08-27 Modify Metropolis, 'ne > BLOCK_NE ' to 'ne >= BLOCK_NE' -09-08-27 Add RESTART in tools.h -09-08-27 Add state(string) in SpillageStep::TypeInformation. -09-08-28 Fix a bug in Coefficients.cpp, output_c4_name must be initialized in constructor. -09-08-28 Remove restart_c4 in read_INPUT. -09-08-28 Add class Damping in file Damping.cpp. -09-08-28 Add in Metropolis. -09-08-28 Add in tools.h - -VERSION 019 -09-08-20 Update SpillageValue::get_value, providing 3 schemes now. -09-08-24 Fix a bug in input, if the file is not exit, warning and quit. -09-08-26 Add BLOCK_NE as global. -09-08-26 Add a parameter in SCAN_BEGIN function in tools.h - -VERSION 018 -09-07-23 Abandon input file: "INPUTs", instead we read in information from first "spillage.dat" file. -09-07-23 Add in INPUT::read_PW_QS, to read "INPUTs" information. -09-07-23 Delete "read_site" in read_INPUT.cpp -09-07-24 Change all energy units from "Hartree" to Rydberg. -09-07-24 Fix a bug in Calculate_C4, lmax<3 change to lmax<5 - -VERSION 017 -09-07-12 Add average input in -09-07-12 Delete nchi in Coefficients, no used. -09-07-12 Delete 'm' member variable in way2Data, no used, furthermore, hard to define whene use average orbital. -09-07-12 Add average parameter in way2Data. -09-07-12 Add new function in SpillageStep. -09-07-12 Available for average orbital. - -VERSION 016 -09-05-23 Add reset_temperature in Metropolis -09-05-23 Add l_nchi in MultiZeta -09-06-09 Add value_each_step in SpillageValue. -09-06-09 Add nstep in read_INPUT file. -09-06-09 Output spillage value of each step in the output file. -09-06-14 Output "ORBITAL.MCSP" in Plot_Psi.cpp -09-06-14 Fix a bug in SpillageStep.cpp, assert(iw==nwfc) - -VERSION 015*** -09-05-22 Reconstruction of all program. - -VERSION 014 -09-05-13 Add two 'na' member and 'get_na()' function in read_INPUTs, -09-05-13 Input 'na' in CalculateSpillage Constructor -09-05-13 Fix a bug in allocate_index in CalculateSpillage, the iw2iw dimension must equal nwfc2 -09-05-14 Add WARNING_QUIT function in tools.cpp -09-05-14 Change name read_plot_c4 and read_cal_c4 in read_stuff -09-05-14 Delete iw_index in CalculateSpilalge, no used. -09-05-14 The sinv readin function return! - -VERSION 013 -09-05-02 Add spillage0 in ReadData class -09-05-02 Can correctly do double_zeta operation. -0.159% for GaAs(optimize separate) not much improved use 33Jl - -VERSION 012 -09-05-01 Add iw2iw in CalculateSpillage -09-05-01 Control write_c4 in CalculateSpillage -09-05-01 Add multi_zeta parameter in ReadData -09-05-01 Add test in some class -09-05-01 Available for combine double-zeta calculation. -0.21% for GaAs SZ -0.12% for GaAs DZ(optimized together) - -VERSION 011 -09-04-29 Add orthogonal flag in INPUT file. -09-04-29 Add Class Multi_zeta. -09-04-29 Add Qreal_readin and Qimag_readin in ReadData. -09-04-29 Available for seperate double-zeta calculation. But find a problem: The new set of bloch wave functions are not orthogonal. - -VERSION 010 -09-04-27 Open the gate for multi_zeta programming. - -VERSION 009 -09-04-27 Add class 'read_stuff', reduce the main program. -09-04-27 Add class 'MultiZeta', reduce the main program. - -VERSION 008 -09-04-26 Use ibz_kpoint to calculate spillage. -36000 steps/hour -09-04-26 Use new Lapack routine to calculate Inverse_Matrix -57000 steps/hour - -VERSION 007 -09-04-26 Add calss Inverse_Matrix -09-04-26 Accelarate using_zheev -4000 steps/hour - -VERSION 006 -09-04-26 Use the hermit symmetry of S matrix -3400 steps/hour - -VERSION 005 -09-04-19 Unit, -09-04-19 Can available for more than one stucture. -09-04-19 Reduce goback time. -2400 steps/hour - -VERSION 004 -09-04-18 Can plot wave functions. -09-04-18 Speedup S update routine. - -VERSION 003 -09-04-17 Speedup Q update routine. - -VERSION 002 -09-04 Available for calculate spillage without plane wave basis. diff --git a/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/Makefile b/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/Makefile deleted file mode 100644 index ebf65478f3..0000000000 --- a/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/Makefile +++ /dev/null @@ -1,108 +0,0 @@ -#=========================================================== -# AUTHOR : mohan -# DATE START FROM : 2009-04-14 -# FUNCTION : spillage makefile -#=========================================================== -#Dirac -#CPLUSPLUS =CXX -O3 -w -ffast-math -funroll-loops -CPLUSPLUS = /usr/mpi/intel/openmpi-1.4.1/bin/mpicxx -#CPLUSPLUS_GPROF = g++ -gp -#CPLUSPLUS_MPI = /opt/openmpi/bin/mpicxx -O3 -w -CPLUSPLUS_MPI=/usr/mpi/intel/openmpi-1.4.1/bin/mpicxx -#Einstein -#CPLUSPLUS_MPI = /opt/openmpi-intel9/bin/mpicxx -O3 -w - -LIBS=-L/opt/intel/cmkl/10.2.5.035/lib/em64t -i-dynamic -Wl,--start-group -lmkl_intel_lp64 -lmkl_intel_thread -lmkl_core -Wl,--end-group -openmp -lpthread \ - -TOOLS_OBJS=src_tools/mathzone.o \ - src_tools/matrix.o \ - src_tools/matrix3.o \ - src_tools/realarray.o \ - src_tools/intarray.o \ - src_tools/complexmatrix.o \ - src_tools/complexarray.o\ - src_tools/timer.o \ - src_tools/inverse_matrix.o\ - -SPILLAGE_OBJS=src_spillage/main.o \ - src_spillage/read_INPUT.o\ - src_spillage/ReadData.o\ - src_spillage/Calculate_C4.o\ - src_spillage/Coefficients.o\ - src_spillage/MultiZeta.o\ - src_spillage/SpillageStep.o\ - src_spillage/SpillageValue.o\ - src_spillage/Step_Data.o\ - src_spillage/Orthogonal.o\ - src_spillage/Type_Information.o\ - src_spillage/Metropolis.o\ - src_spillage/Out_Orbital.o\ - src_spillage/Plot_Psi.o\ - src_spillage/Psi_Second.o\ - src_spillage/tools.o \ - src_spillage/common.o \ - -PARALLEL_OBJS=src_parallel/parallel_global.o\ - src_parallel/parallel_common.o\ - src_parallel/parallel_reduce.o\ - src_parallel/parallel_kpoints.o - -PW_OBJS=src_pw/pw_basis.o\ - src_pw/pw_complement.o\ - src_pw/heapsort.o\ - src_pw/numerical_basis.o\ - src_pw/bessel_basis.o\ - src_pw/ylm_real.o\ - src_pw/memory_calculation.o\ - -OBJS = ${TOOLS_OBJS} \ - ${SPILLAGE_OBJS} \ - ${PARALLEL_OBJS} \ - ${PW_OBJS}\ - -help : - @echo 'make target list: ' - @echo 's : Series version of Monte Carlo Spillage Program.' - @echo 'p : Parallel Version of Monte Carlo Spillage Program.' - @echo 'note : some notes.' - -s : ${OBJS} - ${CPLUSPLUS} -o SIA_s.exe ${OBJS} ${LIBS} - -p : ${OBJS} - $(CPLUSPLUS_MPI) -D__MPI -o SIA_p.exe $(OBJS) $(LIBS) - -note : - @echo 'atom type label : it ' - @echo 'atom label for each type : ia ' - @echo 'The angular momentum : l ' - @echo 'The multiplicity : n ' - @echo 'The magnetic quantum num : m ' - @echo 'The k point index : ik ' - @echo 'The band index : ib ' - @echo 'The eigenvalue of Jlq : ie ' - @echo 'The radius cutoff (a.u.) : rcut ' - @echo 'The state is : psi(ib,ik) ' - @echo 'The local orbitals is : phi(it,ia,l,n,m) ' - @echo 'The index of local basis : nwfc(it,l,n)' - @echo 'The index of local basis : nwfc2(it,ia,l,n,m) ' - @echo 'The Spherical Bessel func : Jl(ie,rcut) ' - @echo 'The SB transform : \int Jl(ie,rcut) * Jl' - @echo 'The index of Jlq coef : Coef(it,l,n,ie)' - @echo 'The local orbitals formu : phi=\sum_{ie} Coef(it,l,n,ie) * Jl(ie,rcut)' - @echo 'The spillage formula is : S = ' - @echo 'The projector P is : P = \sum_{mu,nu} |phi_mu> S^{-1} = (1-P1) |psi1>' - @echo 'So we can fonud that : P1|psi2> = 0 ' - @echo 'the Q matrix is : Q = ' - @echo 'the S matrix is : S = ' - @echo 'start index of band : BANDS_START(count from 1, not 0) ' - @echo 'end index of band : BANDS_END ' - -.cpp.o: - ${CPLUSPLUS} -c $< -o $@ -# $(CPLUSPLUS_MPI) -c -D__MPI $< -o $@ - -.PHONY:clean -clean: - ${RM} *.o *.exe core* src_tools/*.o src_spillage/*.o tests_s/ORBITAL* tests_s/ORBITAL* src_parallel/*.o src_pw/*.o diff --git a/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/Makefiles/Makefile.Einstein b/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/Makefiles/Makefile.Einstein deleted file mode 100644 index c0bd26a3e9..0000000000 --- a/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/Makefiles/Makefile.Einstein +++ /dev/null @@ -1,115 +0,0 @@ -#=========================================================== -# AUTHOR : mohan -# DATE START FROM : 2009-04-14 -# FUNCTION : spillage makefile -#=========================================================== -#Dirac -CPLUSPLUS =/usr/mpi/intel/openmpi-1.4.1/bin/mpicxx -O3 -#CPLUSPLUS_GPROF = g++ -gp -#CPLUSPLUS_MPI = /opt/openmpi/bin/mpicxx -O3 -w -CPLUSPLUS_MPI=/usr/mpi/intel/openmpi-1.4.1/bin/mpicxx -#Einstein -#CPLUSPLUS_MPI = /opt/openmpi-intel9/bin/mpicxx -O3 -w - -#EINSTEIN -#LIBS=-L/home/common/lib -llapack -lblas -lf2c - -#DIRAC -#LIBS = -L/share/apps/lib/ -llapack -lblas -L/share/data1/lib/ -lf2c\ - #-L/opt/intel/fce/9.1.052/lib/ -lifcore \ -#Einstein -#LIBS = -L/share/apps/lib -llapack -lblas -L/opt/intel/fce/9.1.052/lib/ -lifcore -LIBS = -L/opt/intel/cmkl/10.2.5.035/lib/em64t -Wl,--start-group -lmkl_intel_lp64 -lmkl_intel_thread -lmkl_core -Wl,--end-group -openmp -lpthread - -TOOLS_OBJS=src_tools/mathzone.o \ - src_tools/matrix.o \ - src_tools/matrix3.o \ - src_tools/realarray.o \ - src_tools/intarray.o \ - src_tools/complexmatrix.o \ - src_tools/complexarray.o\ - src_tools/timer.o \ - src_tools/inverse_matrix.o\ - -SPILLAGE_OBJS=src_spillage/main.o \ - src_spillage/read_INPUT.o\ - src_spillage/ReadData.o\ - src_spillage/Calculate_C4.o\ - src_spillage/Coefficients.o\ - src_spillage/MultiZeta.o\ - src_spillage/SpillageStep.o\ - src_spillage/SpillageValue.o\ - src_spillage/Step_Data.o\ - src_spillage/Orthogonal.o\ - src_spillage/Type_Information.o\ - src_spillage/Metropolis.o\ - src_spillage/Out_Orbital.o\ - src_spillage/Plot_Psi.o\ - src_spillage/Psi_Second.o\ - src_spillage/tools.o \ - src_spillage/common.o \ - -PARALLEL_OBJS=src_parallel/parallel_global.o\ - src_parallel/parallel_common.o\ - src_parallel/parallel_reduce.o\ - src_parallel/parallel_kpoints.o - -PW_OBJS=src_pw/pw_basis.o\ - src_pw/pw_complement.o\ - src_pw/heapsort.o\ - src_pw/numerical_basis.o\ - src_pw/bessel_basis.o\ - src_pw/ylm_real.o\ - src_pw/memory_calculation.o\ - -OBJS = ${TOOLS_OBJS} \ - ${SPILLAGE_OBJS} \ - ${PARALLEL_OBJS} \ - ${PW_OBJS}\ - -help : - @echo 'make target list: ' - @echo 's : Series version of Monte Carlo Spillage Program.' - @echo 'p : Parallel Version of Monte Carlo Spillage Program.' - @echo 'note : some notes.' - -s : ${OBJS} - ${CPLUSPLUS} -o 045.MCSP_s.exe ${OBJS} ${LIBS} - -p : ${OBJS} - $(CPLUSPLUS_MPI) -D__MPI -o 045.MCSP_p.exe $(OBJS) $(LIBS) - -note : - @echo 'atom type label : it ' - @echo 'atom label for each type : ia ' - @echo 'The angular momentum : l ' - @echo 'The multiplicity : n ' - @echo 'The magnetic quantum num : m ' - @echo 'The k point index : ik ' - @echo 'The band index : ib ' - @echo 'The eigenvalue of Jlq : ie ' - @echo 'The radius cutoff (a.u.) : rcut ' - @echo 'The state is : psi(ib,ik) ' - @echo 'The local orbitals is : phi(it,ia,l,n,m) ' - @echo 'The index of local basis : nwfc(it,l,n)' - @echo 'The index of local basis : nwfc2(it,ia,l,n,m) ' - @echo 'The Spherical Bessel func : Jl(ie,rcut) ' - @echo 'The SB transform : \int Jl(ie,rcut) * Jl' - @echo 'The index of Jlq coef : Coef(it,l,n,ie)' - @echo 'The local orbitals formu : phi=\sum_{ie} Coef(it,l,n,ie) * Jl(ie,rcut)' - @echo 'The spillage formula is : S = ' - @echo 'The projector P is : P = \sum_{mu,nu} |phi_mu> S^{-1} = (1-P1) |psi1>' - @echo 'So we can fonud that : P1|psi2> = 0 ' - @echo 'the Q matrix is : Q = ' - @echo 'the S matrix is : S = ' - @echo 'start index of band : BANDS_START(count from 1, not 0) ' - @echo 'end index of band : BANDS_END ' - -.cpp.o: - ${CPLUSPLUS} -c $< -o $@ -# $(CPLUSPLUS_MPI) -c -D__MPI $< -o $@ - -.PHONY:clean -clean: - ${RM} *.o *.exe core* src_tools/*.o src_spillage/*.o tests_s/ORBITAL* tests_s/ORBITAL* src_parallel/*.o src_pw/*.o diff --git a/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/README b/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/README deleted file mode 100644 index 0099ea35cd..0000000000 --- a/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/README +++ /dev/null @@ -1,6 +0,0 @@ -Systematically -Improvable -Atomic Orbitals -Generator -Based on -Spillage formula diff --git a/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/doc/Format.txt b/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/doc/Format.txt deleted file mode 100644 index 8a0963fb7e..0000000000 --- a/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/doc/Format.txt +++ /dev/null @@ -1,10 +0,0 @@ -The format of orbital file: - -(1) First line: -Mesh number - -(2) Second line: -delta r (unit: Bohr) - -(3) Type(always 0, you can ignore it), L(angular momentum), N (multizeta) -(4) wave function: psi (note, not psi*r). diff --git a/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_parallel/parallel_common.cpp b/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_parallel/parallel_common.cpp deleted file mode 100644 index bc86f2c2fd..0000000000 --- a/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_parallel/parallel_common.cpp +++ /dev/null @@ -1,101 +0,0 @@ -#include "parallel_common.h" -#include //this is needed because strcpy - -#ifdef __MPI -void Parallel_Common::bcast_string(string &object) -{ - char swap[100]; - if(MY_RANK == 0) strcpy(swap, object.c_str() ); - MPI_Bcast(swap, 100, MPI_CHAR, 0, MPI_COMM_WORLD); - if(MY_RANK != 0) object = static_cast( swap ); -// cout<<"\n"<( swap ); - } - return; -} - -void Parallel_Common::bcast_complex_double(complex &object) -{ - double a = object.real(); - double b = object.imag(); - Parallel_Common::bcast_double(a); - Parallel_Common::bcast_double(b); - object = std::complex( a, b); - return; -} - -void Parallel_Common::bcast_complex_double(complex *object, const int n) -{ - double *a = new double[n]; - double *b = new double[n]; - - for(int i=0; i( a[i], b[i]); - } - delete[] a; - delete[] b; -} - -void Parallel_Common::bcast_double(double &object) -{ - MPI_Bcast(&object, 1, MPI_DOUBLE, 0, MPI_COMM_WORLD); -// cout<<"\n"<( swap ); -// cout<<"\n"< -#endif -#include "../src_spillage/tools.h" - -namespace Parallel_Common -{ - //(1) bcast array - void bcast_complex_double( std::complex *object, const int n); - void bcast_string(string *object,const int n); - void bcast_double(double *object,const int n); - void bcast_int(int *object,const int n); - void bcast_char(char *object,const int n); - - //(2) bcast single - void bcast_complex_double( std::complex &object); - void bcast_string(string &object); - void bcast_double(double &object); - void bcast_int(int &object); - void bcast_bool(bool &object); - -} - -#endif diff --git a/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_parallel/parallel_global.cpp b/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_parallel/parallel_global.cpp deleted file mode 100644 index 791bfe1650..0000000000 --- a/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_parallel/parallel_global.cpp +++ /dev/null @@ -1,85 +0,0 @@ -//========================================================== -// AUTHOR : fangwei, mohan -// DATE : 2009-11-08 -//========================================================== -#include "parallel_global.h" -#include "parallel_common.h" -#include "parallel_reduce.h" -#include "../src_spillage/tools.h" - -using namespace std; - -#if defined __MPI -MPI_Datatype mpicomplex; -MPI_Op myOp; -MPI_Comm POOL_WORLD; - -void Parallel_Global::myProd(complex *in, std::complex *inout,int *len,MPI_Datatype *dptr) -{ - for(int i=0;i<*len;i++) - { - (*inout).real()=(*inout).real()+(*in).real(); - (*inout).imag()=(*inout).imag()+(*in).imag(); - in++; - inout++; - } - return; -} -#endif - -void Parallel_Global::read_pal_param(int argc,char **argv) -{ -#if defined __MPI -//for test -/* - cout << "\n Hello! Test MPI NOW : argc = "< -extern MPI_Datatype mpicomplex; -extern MPI_Op myOp; -extern MPI_Comm POOL_WORLD; -#endif - -//void myProd(complex *in, std::complex *inout,int *len,MPI_Datatype *dptr); - -namespace Parallel_Global -{ - void read_pal_param(int argc, char **argv); - -#ifdef __MPI - void myProd(complex *in, std::complex *inout,int *len,MPI_Datatype *dptr); -#endif -} - - -#endif // GMPI diff --git a/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_parallel/parallel_kpoints.cpp b/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_parallel/parallel_kpoints.cpp deleted file mode 100644 index ef0b281f82..0000000000 --- a/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_parallel/parallel_kpoints.cpp +++ /dev/null @@ -1,303 +0,0 @@ -#include "parallel_kpoints.h" -#include "parallel_global.h" -#include "parallel_common.h" - -Parallel_Kpoints::Parallel_Kpoints() -{ - nks_pool = new int[1]; - startk_pool = new int[1]; - whichpool = new int[1]; -} - -Parallel_Kpoints::~Parallel_Kpoints() -{ - delete[] nks_pool; - delete[] startk_pool; - delete[] whichpool; -} - -void Parallel_Kpoints::init(void) -{ - //TITLE("Parallel_Kpoints","init"); -#ifdef __MPI -//---------------------------------------------------------- -// CALL Function : divide_pools -//---------------------------------------------------------- - this->divide_pools(); - -// for test - - if(MY_RANK==0) - { - cout << "\n " << setw(8) << "MY_RANK" - << setw(8) << "MY_POOL" - << setw(13) << "RANK_IN_POOL" - << setw(6) << "NPROC" - << setw(6) << "KPAR" - << setw(14) << "NPROC_IN_POOL" << endl; - } - - ofs_running << "\n " << setw(8) << "MY_RANK" - << setw(8) << "MY_POOL" - << setw(13) << "RANK_IN_POOL" - << setw(6) << "NPROC" - << setw(6) << "KPAR" - << setw(14) << "NPROC_IN_POOL" << endl; - - for(int i=0;i mpi_split()"<= startpro_pool[i]) - { - MY_POOL=i; - } - } - - int key = 1; - RANK_IN_POOL = MY_RANK-startpro_pool[MY_POOL]; - - //======================================================== - // MPI_Comm_Split: Creates new communicators based on - // colors(2nd parameter) and keys(3rd parameter) - // Note: The color must be non-negative or MPI_UNDEFINED. - //======================================================== - MPI_Comm_split(MPI_COMM_WORLD,MY_POOL,key,&POOL_WORLD); -#endif - - return; -} - - -// the kpoints here are reduced after symmetry applied. -void Parallel_Kpoints::kinfo(int &nkstot) -{ -#ifdef __MPI - Parallel_Common::bcast_int(nkstot); - this->get_nks_pool(nkstot); - this->get_startk_pool(nkstot); - this->get_whichpool(nkstot); -#endif - return; -} - -void Parallel_Kpoints::get_whichpool(const int &nkstot) -{ - delete[] whichpool; - this->whichpool = new int[nkstot]; - ZEROS(whichpool, nkstot); - - for(int i=0; inks_pool[i]; ik++) - { - const int k_now = ik + startk_pool[i]; - this->whichpool[k_now] = i; - //ofs_running << "\n whichpool[" << k_now <<"] = " << whichpool[k_now]; - } - } - - return; -} - -void Parallel_Kpoints::get_nks_pool(const int &nkstot) -{ - delete[] nks_pool; - this->nks_pool = new int[KPAR]; - ZEROS(nks_pool, KPAR); - - const int nks_ave = nkstot/KPAR; - const int remain = nkstot%KPAR; - - //ofs_running << "\n nkstot = " << nkstot; - //ofs_running << "\n KPAR = " << KPAR; - //ofs_running << "\n nks_ave = " << nks_ave; - - for(int i=0; inks_pool[i] = nks_ave; - if(i &object) -{ -#ifdef __MPI - complex swap = object; - MPI_Allreduce(&swap, &object, 1, mpicomplex, myOp, MPI_COMM_WORLD); -#endif - return; -} - -void Parallel_Reduce::reduce_complex_double_pool(complex &object) -{ -#ifdef __MPI - complex swap = object; - MPI_Allreduce(&swap, &object, 1, mpicomplex, myOp, POOL_WORLD); -#endif - return; -} - -void Parallel_Reduce::reduce_complex_double_pool(complex *object, const int n) -{ -#ifdef __MPI - complex *swap = new std::complex[n]; - for(int i=0;iall[i]) - { - v = all[i]; - } - } - delete[] all; -#endif -} - -void Parallel_Reduce::gather_max_double_all(double &v) -{ -#ifdef __MPI - double *value=new double[NPROC]; - ZEROS(value, NPROC); - MPI_Allgather(&v, 1, MPI_DOUBLE, value, 1, MPI_DOUBLE, MPI_COMM_WORLD); - for(int i=0; ivalue[i]) - { - v = value[i]; - } - } - delete[] value; -#endif -} - -void Parallel_Reduce::gather_min_double_all(double &v) -{ -#ifdef __MPI - double *value=new double[NPROC]; - ZEROS(value, NPROC); - MPI_Allgather(&v, 1, MPI_DOUBLE, value, 1, MPI_DOUBLE, MPI_COMM_WORLD); - for(int i=0; ivalue[i]) - { - v = value[i]; - } - } - delete[] value; -#endif -} - -bool Parallel_Reduce::check_if_equal(double &v) -{ -#ifdef __MPI - double *all=new double[NPROC]; - MPI_Allgather(&v, 1, MPI_DOUBLE, all, 1, MPI_DOUBLE, MPI_COMM_WORLD); - for(int i=0; i 1.0e-9 ) - { - for(int j=0; jDk = dk; - - // to make a table - this->init_TableOne( SMOOTH, SIGMA, ECUT, RCUT, dr, Dk, LMAXALL, NE, TOLERENCE); - - return; -} - -double Bessel_Basis::Polynomial_Interpolation2 - (const int &l, const int &ie, const double &gnorm)const -{ - const double position = gnorm / this->Dk; - const int iq = static_cast(position); -// if(iq 0.0); - assert(dr > 0.0); - assert(dk > 0.0); - - // init kmesh - this->kmesh = static_cast(sqrt(ecutwfc) / dk) +1 + 4; - if (kmesh % 2 == 0)++kmesh; - cout << "\n kmesh = " << kmesh; - - // init Table One - this->TableOne.create(lmax+1, ecut_number, kmesh); - - // init rmesh - int rmesh = static_cast( rcut / dr ) + 4; - if (rmesh % 2 == 0) ++rmesh; - cout << "\n rmesh = " << rmesh; - - // allocate rmesh and Jlk and eigenvalue of Jlq - double *r = new double[rmesh]; - double *rab = new double[rmesh]; - double *jle = new double[rmesh]; - double *jlk = new double[rmesh]; - double *g = new double[rmesh]; // smooth function - double *function = new double[rmesh]; - double *en = new double[ecut_number]; - - for(int ir=0; ir(ir) * dr; - rab[ir] = dr; - if(smooth_in) - { - g[ir] = 1.0 - std::exp(-( (r[ir]-rcut)*(r[ir]-rcut)/2.0/sigma_in/sigma_in ) ); - } - } - - // init eigenvalue of Jl - for(int l=0; lTableOne(l, ie, ik) ); - } - - }// end ie - }// end ; - - delete[] en; - delete[] jle; - delete[] jlk; - delete[] rab; - delete[] g; - delete[] r; - delete[] function; - timer::tick("Spillage","TableOne"); - return; -} diff --git a/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_pw/bessel_basis.h b/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_pw/bessel_basis.h deleted file mode 100644 index 0857edffa5..0000000000 --- a/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_pw/bessel_basis.h +++ /dev/null @@ -1,47 +0,0 @@ -//========================================================== -// AUTHOR : mohan -// DATE : 2009-3-29 -// Last Modify : 2009-08-28 -//========================================================== -#ifndef BESSEL_BASIS_H -#define BESSEL_BASIS_H -#include "../src_spillage/common.h" - -//========================================================== -// CLASS : -// NAME : Bessel_Basis -//========================================================== -class Bessel_Basis -{ -public: - Bessel_Basis(); - ~Bessel_Basis(); - - // used for a specific group of C4 coefficients. - void init( - const double &dk = 0.01, - const double &dr = 0.01); - - // get value from interpolation - double Polynomial_Interpolation2(const int &l, const int &ie, const double &gnorm)const; - - realArray TableOne; - -private: - int kmesh; - double Dk; - - // init table, used for output overlap Q. - void init_TableOne( - const bool smooth_in, - const double &sigma_in, - const double &ecut, - const double &rcut, - const double &dr, - const double &dk, - const int &lmax, - const int &ecut_number, - const double &tolerence); -}; - -#endif diff --git a/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_pw/heapsort.cpp b/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_pw/heapsort.cpp deleted file mode 100644 index 67ecac6489..0000000000 --- a/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_pw/heapsort.cpp +++ /dev/null @@ -1,171 +0,0 @@ -#include "../src_spillage/common.h" -#include "heapsort.h" - -void heapAjust(double *r, int *ind, int s, int m) -{ - int j, ic; - double rc; - rc = r[s]; - ic = ind[s]; - - for (j = 2 * s;j <= m;j *= 2) - { - if (j < m && (r[j] < r[j+1])) j++; - - if (!(rc < r[j])) break; - - r[s] = r[j]; - - ind[s] = ind[j]; - - s = j; - } - - r[s] = rc; - - ind[s] = ic; - return; -} - -void heapsort(const int n, double *r, int *ind) -{ - timer::tick("mymath","heapsort"); - int i, ic; - double rc; - - if (ind[0] == 0) - { - for (i = 0;i < n;i++) - { - ind[i] = i; - } - } - - for (i = n / 2;i >= 0;i--) - { - heapAjust(r, ind, i, n - 1); - } - - for (i= n - 1;i > 0;i--) - { - rc = r[0]; - r[0] = r[i]; - r[i] = rc; - ic = ind[0]; - ind[0] = ind[i]; - ind[i] = ic; - heapAjust(r, ind, 0, i - 1); - } - timer::tick("mymath","heapsort"); - return; -} - -/*-------------------------------------------------------------------- - subroutine hpsort(n,ra,ind) -c--------------------------------------------------------------------- -c sort an array ra(1:n) into ascending order using heapsort algorithm. -c n is input, ra is replaced on output by its sorted rearrangement. -c create an index table (ind) by making an exchange in the index array -c whenever an exchange is made on the sorted data array (ra). -c in case of equal values in the data array (ra) the values in the -c index array (ind) are used to order the entries. -c if on input ind(1) = 0 then indices are initialized in the routine, -c if on input ind(1) != 0 then indices are assumed to have been -c initialized before entering the routine and these -c indices are carried around during the sorting process -c -c no work space needed ! -c free us from machine-dependent sorting-routines ! -c -c adapted from Numerical Recipes pg. 329 (new edition) -*********************************************************************/ - -// from hpsort.f90 -void hpsort(int n, double *ra, int *ind) -{ - int i, ir, j, k, iind; - double rra; - - if (ind[1] == 0) - { - for (i = 1;i <= n;i++) - ind[i] = i; - } - - if (n < 2) return; // nothing to order - - k = n / 2 + 1; - - ir = n; - - while (true) - { - if (k > 1) // still in hiring phase - { - k = k - 1; - rra = ra[k]; - iind = ind[k]; - } - else // in retirement-promotion phase. - { - rra = ra[ir]; // clear a space at the end of the array - iind = ind[ir]; // - ra[ir] = ra[1]; // retire the top of the heap into it - ind[ir] = ind[1]; // - ir = ir - 1; // decrease the size of the corporation - - if (ir == 1) // done with the last promotion - { - ra[1] = rra; // the least competent worker at all // - ind[1] = iind; // - return; - } - } - - i = k; // wheter in hiring or promotion phase, we - - j = k + k; // set up to place rra in its proper level - - while (j <= ir) - { - if (j < ir) - { - if (ra[j] < ra[j+1]) // compare to better underling - { - j = j + 1; - } - else if (ra[j] == ra[j+1]) - { - if (ind[j] < ind[j+1]) - j = j + 1; - } - } - - if (rra < ra[j]) // demote rra - { - ra[i] = ra[j]; - ind[i] = ind[j]; - i = j; - j = j + j; - } - else if (rra == ra[j]) - { - if (iind < ind[j]) // demote rra - { - ra[i] = ra[j]; - ind[i] = ind[j]; - i = j; - j = j + j; - } - else - j = ir + 1; // set j to terminate do-while loop - } - else // this is the right place for rra - j = ir + 1; // set j to terminate do-while loop - } - - ra[i] = rra; - - ind[i] = iind; - } -} diff --git a/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_pw/heapsort.h b/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_pw/heapsort.h deleted file mode 100644 index ae40098c5a..0000000000 --- a/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_pw/heapsort.h +++ /dev/null @@ -1,11 +0,0 @@ -#ifndef HEAPSORT_H -#define HEAPSROT_H -#include "../src_spillage/common.h" - -void heapsort(int n, double *r, int *ind); -void heapAjust(double r[], int ind[], int s, int m); -void hpsort(int n, double *ra, int *ind); - -#endif // HEAPSORT_H - - diff --git a/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_pw/memory_calculation.cpp b/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_pw/memory_calculation.cpp deleted file mode 100644 index 1df8f7503d..0000000000 --- a/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_pw/memory_calculation.cpp +++ /dev/null @@ -1,64 +0,0 @@ -#include "memory_calculation.h" - -Memory::Memory() -{} - -Memory::~Memory() -{} - -void Memory::calculation(void) -{ - TITLE("Memory","calculation"); - - const double dk = 0.01; - int kmesh = static_cast(sqrt(ECUT) / dk) +1 + 4; - if (kmesh % 2 == 0)++kmesh; - - const int n1 = NTYPE; - const int n2 = LMAXUSED + 1; - const int n3 = NMAXUSED; - const int n4 = kmesh; - const int n1234 = n1 * n2 * n3 * n4; - - cout << "\n psi1d dimension(NTYPE, LMAXUSED+1, NMAXUSED, kmesh) : " << n1234 - << " = " << n1 << " * " << n2 << " * " - << n3 << " * " << n4 << " = " << n1234 * 8 / (double)1024 / (double)1024 << " MB"; - - for(int i=0; i[1]; - gcar_global = new Vector3[1]; - -#ifdef __MPI - gg = new double[1]; - gdirect = new Vector3[1]; - gcar = new Vector3[1]; -#endif - - ig1 = new int[1]; - ig2 = new int[1]; - ig3 = new int[1]; - - psi3d = new ComplexMatrix[1]; - ylm = new matrix[1]; - Jlq = new std::complex[1]; - - save = new std::complex[1]; - posmu = new int[1]; - posnu = new int[1]; -} - -PW_Basis::~PW_Basis() -{ - delete [] gcar_global; - delete [] gdirect_global; - delete [] gg_global; - -#ifdef __MPI - delete [] gcar; - delete [] gdirect; - delete [] gg; -#endif - - delete [] ig1; - delete [] ig2; - delete [] ig3; - - delete[] psi3d; - delete[] ylm; - delete[] Jlq; - - delete[] save; - delete[] posmu; - delete[] posnu; -} - -void PW_Basis::init(void) -{ - TITLE("PW_Basis","init"); - timer::tick("PW_Basis","init"); - - // (1) setup the energy cutoff, which is different in each pool, - // because the number of k points is differnt. - this->setup_gg(); - - // (2) setup the FFT dimension according to energy cutoff. - this->setup_FFT_dimension(); - - OUT(ofs_running,"ggwfc2(Ry)",ggwfc2); - - // (3) get the number of plane waves for wave functions. - this->ngmc_g = PW_complement::get_total_pw_number(0.0, ggchg, nx, ny, nz, GGT); - this->ngmw_g = PW_complement::get_total_pw_number(0.0, ggwfc2, nx, ny, nz, GGT); - - OUT(ofs_running,"ngmc_g",ngmc_g); - OUT(ofs_running,"ngmw_g",ngmw_g); - - // (4) get the local number of plane waves. - assert(NPROC_IN_POOL>0); - const int remain = ngmw_g % NPROC_IN_POOL; - this->ngmw = this->ngmw_g / NPROC_IN_POOL; - if (RANK_IN_POOL < remain) - { - this->ngmw++; - } - - if (RANK_IN_POOL < remain) - { - ngmw_start = ngmw * RANK_IN_POOL; - } - else - { - ngmw_start = (ngmw+1) * remain + ngmw * (RANK_IN_POOL-remain); - } - - OUT(ofs_running,"ngmw",ngmw); - //ofs_running << "\n ngmw_start = " << ngmw_start; - - // (5) init |g|, g_direct, g_cartesian - delete[] gdirect_global; - delete[] gcar_global; - delete[] gg_global; - - gdirect_global = new Vector3[ngmc_g];// indices of G vectors - gcar_global = new Vector3[ngmc_g]; - gg_global = new double[ngmc_g];// store the |G|^2 of the 1d array - - PW_complement::get_total_pw(gg_global, gdirect_global, 0.0, ggchg, nx, ny, nz, this->GGT, ngmc_g); - //PW_complement::get_total_pw(gg_global, gdirect_global, 0.0, ggwfc2, nx, ny, nz, this->GGT, ngmw_g); - PW_complement::setup_GVectors(this->G, ngmc_g, gg_global, gdirect_global, gcar_global); - - // (6) get ig1, ig2, ig3 -#ifdef __MPI - this->get_MPI_GVectors(); -#else - this->get_GVectors(); -#endif - // mohan add on 2011-07-23 - stringstream ss; - ss << "ORBITAL_PW_GK" << MY_RANK+1 << ".dat"; - ofstream ofs(ss.str().c_str()); - ofs << ggwfc2 << " (ggwfc2, Ry)" << endl; - ofs << ngmw << " (Number of plane wave basis for wave functions)" << endl; - for(int ig=0; igset_igk(); - - this->setup_structure_factor(); - timer::tick("PW_Basis","init"); - return; -} - -void PW_Basis::setup_gg(void) -{ - TITLE("PW_Basis","setup_gg"); - - //(1.1) lattice parameters - this->GT = LATVEC.Inverse(); - this->G = GT.Transpose(); - this->GGT = G * GT; - - // (1.2) tpiba and ecut - assert(LAT0 > 0.0); - this->tpiba = TWO_PI/LAT0; - this->tpiba2 = tpiba * tpiba; - this->ggpsi = ECUT / tpiba2; - - double wfac = 4.0; - this->ggchg = wfac * this->ggpsi; - - // (1.3) get ggwfc2 - assert( NKS > 0); - assert( CARKX != NULL ); - assert( CARKY != NULL ); - assert( CARKZ != NULL ); - - for (int ik=0; ikggpsi) + k_mod; - const double tmp2 = tmp * tmp ; - if (this->ggwfc2 < tmp2) this->ggwfc2 = tmp2; - } - - OUT(ofs_running,"NKS",NKS); - OUT(ofs_running,"ggpsi(Ry)",ggpsi*tpiba2); - OUT(ofs_running,"ggwfc2(Ry)",ggwfc2*tpiba2); - - // (1.4) initialize itia2iat - this->itia2iat = new int*[NTYPE]; - int iat=0; - for (int it=0; itnpwx = 0; - this->ngk = new int[NKS]; - ZEROS(this->ngk, NKS); - - assert(this->ngmw>0); - -// ofs_running << "\n\n ngmw = " << ngmw; -// ofs_running << "\n gg[ngmw-1]=" << gg[ngmw-1]; - for (int ik=0; ik kcar(CARKX[ik], CARKY[ik], CARKZ[ik]); - const double k2 = kcar * kcar; - int ng=0; - for (int ig=0; ig f = this->gcar[ig] + kcar; - const double gk2 = f * f; - if (sqrt(this->gg[ig]) > sqrt(this->ggpsi) + sqrt(k2)) - { - break; - } - if (gk2 <= this->ggpsi) - { - ++ng; - } - } - this->ngk[ik] = ng; - //ofs_running << "\n ngk[" << ik << "]=" << ngk[ik]; - if ( npwx < ng) - { - npwx = ng; - } - } - - OUT(ofs_running,"npwx",npwx); - - // set igk - this->igk = new int*[NKS]; - for (int ik=0; ikngk[ik]]; - ZEROS(igk[ik], ngk[ik]); - } - - for (int ik=0; ik kcar(CARKX[ik], CARKY[ik], CARKZ[ik]); - int ng=0; - const double k2 = kcar * kcar; - for (int ig=0; ig f = this->gcar[ig] + kcar; - const double gk2 = f * f; - if (sqrt(this->gg[ig]) > sqrt(this->ggpsi) + sqrt(k2)) - { - break; - } - if (gk2 <= this->ggpsi) - { - this->igk[ik][ng] = ig; - ++ng; - } - } - } - - return; -} - -// First stage Basis initialization. -// Set up crystal structure parameters. -void PW_Basis::setup_FFT_dimension() -{ - TITLE("PW_Basis","setup_FFT_dimension"); - - PW_complement::get_FFT_dimension(LATVEC, this->ggchg, nx, ny, nz); - this->nxyz = nx * ny * nz; - - OUT(ofs_running,"FFT wavefunctions",nx,ny,nz); - - return; -} - - - -#ifdef __MPI -void PW_Basis::get_MPI_GVectors(void) -{ - TITLE("PW_Basis","get_MPI_GVectors"); - - assert(ngmw>0); - - // (1) first part - delete[] gdirect; - delete[] gcar; - delete[] gg; - this->gdirect = new Vector3[ngmw]; - this->gcar = new Vector3[ngmw]; - this->gg = new double[ngmw]; - - for (int ig=0; igig1 = new int[ngmw]; - this->ig2 = new int[ngmw]; - this->ig3 = new int[ngmw]; - -// cout << "\n dim of ig1,2,3 = " << ngmw; - - for (int i = 0; i < ngmw; i++) - { - this->ig1[i] = int(this->gdirect[i].x) + nx; - this->ig2[i] = int(this->gdirect[i].y) + ny; - this->ig3[i] = int(this->gdirect[i].z) + nz; - } - - return; -}//end setup_mpi_GVectors -#else -void PW_Basis::get_GVectors(void) -{ - TITLE("PW_Basis","get_GVectors"); - timer::tick("PW_Basis","get_GVectors"); - - //************************************************************ - // g : Store the G vectors in 1d array (Cartian coordinate) - // ig : Store the G vectors in 1d array (Direct coordinate) - // gg : store the |G|^2 of the 1d array - //************************************************************ - - //---------------------------------------------------------- - // EXPLAIN : if not parallel case, we use pointer - // g and g_global are pointers to the same array - //---------------------------------------------------------- - this->gcar = this->gcar_global; - this->gdirect = this->gdirect_global; - this->gg = this->gg_global; - - // (2) calculate ig1, ig2, ig3 - assert(ngmw>0); - delete[] ig1; - delete[] ig2; - delete[] ig3; - this->ig1 = new int[ngmw]; - this->ig2 = new int[ngmw]; - this->ig3 = new int[ngmw]; - - for (int i = 0; i < ngmw; i++) - { - this->ig1[i] = int(this->gdirect[i].x) + nx; - this->ig2[i] = int(this->gdirect[i].y) + ny; - this->ig3[i] = int(this->gdirect[i].z) + nz; - } - - timer::tick("PW_Basis","get_GVectors"); - return; -}//end get_GVectors; -#endif - - -// Calculate structure factor -void PW_Basis::setup_structure_factor(void) -{ - TITLE("PW_Basis","setup_structure_factor"); - timer::tick("PW_Basis","setup_struc_factor"); - std::complex ci_tpi = NEG_IMAG_UNIT * TWO_PI; - std::complex x; - - this->strucFac = new std::complex*[NTYPE]; - for (int it=0; itstrucFac[it] = new std::complex[ngmw]; - ZEROS( strucFac[it], ngmw); - } - - for (int it=0; it< NTYPE; it++) - { - for (int ig=0; igstrucFac[it][ig] = std::complex( sum_cos, -sum_sin ); - - double tmpx = strucFac[it][ig].real() ; - double tmpy = strucFac[it][ig].imag() ; - } - } - - int nat = 0; - for (int it=0; iteigts1.create(nat, 2*this->nx + 1); - this->eigts2.create(nat, 2*this->ny + 1); - this->eigts3.create(nat, 2*this->nz + 1); - - Vector3 gtau; - Vector3 tau; - int iat = 0; - for (int it = 0; it < NTYPE; it++) - { - for (int ia = 0; ia < NA[it]; ia++) - { - tau.x = CARPOSX[it][ia]; - tau.y = CARPOSY[it][ia]; - tau.z = CARPOSZ[it][ia]; - - gtau = this->G * tau; //HLX: fixed on 10/13/2006 - - for (int n1 = -nx; n1 <= nx; n1++) - { - double arg = n1 * gtau.x; - this->eigts1(iat, n1 + nx) = exp( ci_tpi*arg ); - } - for (int n2 = -ny; n2 <= ny; n2++) - { - double arg = n2 * gtau.y; - this->eigts2(iat, n2 + ny) = exp( ci_tpi*arg ); - } - for (int n3 = -nz; n3 <= nz; n3++) - { - double arg = n3 * gtau.z; - this->eigts3(iat, n3 + nz) = exp( ci_tpi*arg ); - } - iat++; - } - } - timer::tick("PW_Basis","setup_struc_factor"); - return; -} - -complex* PW_Basis::get_sk(const int ik, const int it, const int ia)const -{ - timer::tick("PW_Basis","get_sk"); - const double arg = (CARKX[ik] * CARPOSX[it][ia] - + CARKY[ik] * CARPOSY[it][ia] - + CARKZ[ik] * CARPOSZ[it][ia] ) * TWO_PI; - const std::complex kphase = complex ( cos(arg), -sin(arg) ); - std::complex *sk = new std::complex[ this->ngk[ik] ]; - const int iat = this->itia2iat[it][ia]; - - for (int ig=0; ig< this->ngk[ik]; ig++) - { -// cout << "\n ig=" << ig << endl; - const int iig = this->igk[ik][ig]; - assert( iig < ngmw ); - - if (!(ig1[iig] >= 0 && ig1[iig] < 2*nx + 1) ) - { - cout << "\n ig1[iig] = " << ig1[iig] << endl; - QUIT(); - } - - if (!(ig2[iig] >= 0 && ig2[iig] < 2*ny + 1) ) - { - cout << "\n ig2[iig] = " << ig2[iig] << endl; - QUIT(); - } - - if (!(ig3[iig] >= 0 && ig3[iig] < 2*nz + 1) ) - { - cout << "\n iig = " << iig << endl; - cout << "\n ig3[iig] = " << ig3[iig] << endl; - QUIT(); - } - - sk[ig] = kphase - * this->eigts1(iat, this->ig1[iig]) - * this->eigts2(iat, this->ig2[iig]) - * this->eigts3(iat, this->ig3[iig]); - } - timer::tick("PW_Basis","get_sk"); - return sk; -} - -Vector3 PW_Basis::get_1qvec_cartesian(const int ik,const int ig)const -{ - Vector3 kvec = Vector3(CARKX[ik], CARKY[ik], CARKZ[ik]); - Vector3 qvec = kvec + this->gcar[ this->igk[ik][ig] ]; - return qvec; -} - -void PW_Basis::table(void) -{ - TITLE("PW_Basis", "table"); - NBasis.init_table(); - - const int total_lm = ( LMAXUSED + 1) * ( LMAXUSED + 1); - - delete[] ylm; - this->ylm = new matrix[NKS]; - - for (int ik=0; ikylm[ik].create(total_lm, npw); - - // (1) get the vector k+G - Vector3 *gk = new Vector3 [npw]; - for (int ig=0; igget_1qvec_cartesian(ik, ig); - } - - // (2) generate ylm according to different k. - // (or we can save the ylm for only once but all k points. - Ylm_Real(total_lm, npw, gk, this->ylm[ik]); - - delete[] gk; - } - - - // init index of iw00 - assert(NWFCALL>0); - this->iwindex = new Way2iw[NWFCALL]; - - int iw=0; - for(int it=0; itnwfc2 = mz.Level[il].nwfc2; - - this->Dk = 0.01; - this->kmesh = static_cast(sqrt(ECUT) / Dk) + 1 + 4; - if (kmesh % 2 == 0) ++kmesh; - - this->psi1d.create(NTYPE, LMAXUSED+1, NMAXUSED, kmesh); - - delete[] save; - delete[] posmu; - delete[] posnu; - - const int dim = nwfc2 * nwfc2; - save = new std::complex[dim]; - posmu = new int[dim]; - posnu = new int[dim]; - ZEROS(save, dim); - ZEROS(posmu, dim); - ZEROS(posnu, dim); - return; -} - -void PW_Basis::calculate_psi1d(void) -{ - timer::tick("PW_Basis","calculate_psi1d"); - psi1d.zero_out(); - for (int it=0; itpsi1d(it,l,n,ikm) += input.Coef.C4(it, l, n ,ie) - * Numerical_Basis::bessel_basis.TableOne(l, ie, ikm); - } - } - } - } - } - timer::tick("PW_Basis","calculate_psi1d"); - return; -} - -void PW_Basis::allocate_psi3d(const int &level) -{ - - // allocate the number of wave functions. - // consider(it, ia, l, n, m) - delete[] psi3d; - psi3d = new ComplexMatrix[NKS]; - - for (int ik=0; ikpsi3d[ik].create(nwfc2, npwx); - } - return; -} - - -void PW_Basis::calculate_psi3d(const int &ilevel, const int &ik) -{ - //TITLE("PW_Basis", "calculate_psi3d"); - timer::tick("PW_Basis", "calculate_psi3d"); - // (1) get the vector k+G - - ofs_running << " calculate_psi3d" << endl; - ofs_running << " ilevel = " << ilevel << " ik = " << ik << endl; - - const int npw = ngk[ik]; - - Vector3 *gk = new Vector3 [npw]; - for (int ig=0; igget_1qvec_cartesian(ik, ig); - } - - double *flq = new double[npw]; - for (int iw=0; iwnwfc2; iw++) - { - // for each wave function in nwfc2(it, i, l, n) - const int it = mz.Level[ilevel].wayd[iw].type; - const int ia = mz.Level[ilevel].wayd[iw].i; - const int l = mz.Level[ilevel].wayd[iw].L; - const int n = mz.Level[ilevel].wayd[iw].N; - const int m = mz.Level[ilevel].wayd[iw].m; - std::complex lphase = pow(IMAG_UNIT, l); - - // get flq from psi1d for each k point - for (int ig=0; igPolynomial_Interpolation(it, l, n, gk[ig].norm() * this->tpiba ); - } - - // get the structure wave functions for each k point. - std::complex *sk = this->get_sk(ik, it, ia); - - const int lm = l*l+m; - for (int ig=0; ig PW_Basis::calculateS(const int &iw, const int &iw2, const int &ik) -{ - std::complex overlap = 0.0; - for (int ig=0; igpsi3d[ik](iw, ig)) * this->psi3d[ik](iw2, ig); - } -// move this outside to get_spillage -#ifdef __MPI -// Parallel_Reduce::reduce_complex_double_pool(overlap); -#endif - return overlap; -} - - -void PW_Basis::update_psi1d(const int &il, const int &ic, const int &ie, - const double &c4_now, const double &c4_old) -{ - timer::tick("PW_Basis","update_psi1d"); - - // a small trick - // ALGORITHM : when we change psi1d, we don't know - // this psi1d will be accepted or rejected. - // However, it has been changed. - // So, in the next time, we recalculate them - // using C4. - static int it_last = -1; - static int l_last = -1; - static int n_last = -1; - - const int it_now = mz.Level[il].wayc[ic].type; - const int l_now = mz.Level[il].wayc[ic].L; - const int n_now = mz.Level[il].wayc[ic].N; - - for (int it=0; itpsi1d(it,l,n,ikm) = sum; - } - } - else if(it==it_now || l==l_now || n==n_now) - { - for (int ikm=0; ikmpsi1d(it,l,n,ikm) += (c4_now-c4_old) * Numerical_Basis::bessel_basis.TableOne(l, ie, ikm); - } - } - } - } - } - - it_last = it_now; - l_last = l_now; - n_last = n_now; - - timer::tick("PW_Basis","update_psi1d"); - return; -} - -void PW_Basis::update_psi3d( const int &il, const int &ic, const int &ik) -{ -// TITLE("PW_Basis","update_psi1d3d"); - timer::tick("PW_Basis","update_psi3d"); - - const int npw = ngk[ik]; - static int it_old; - static int ia_old; - static int l_old; - static int n_old; - static bool allocate=false; - static int *ic_last; - if (!allocate) - { - ic_last = new int[NKS]; - for (int ik=0; ik *gk = new Vector3 [npw]; - for (int ig=0; igget_1qvec_cartesian(ik, ig); - } - double *flq = new double[npw]; - std::complex *sk = new std::complex[1]; - std::complex *samepart = new std::complex[npw]; - for (int iw=0; iwnwfc2; iw++) - { - const int ic1 = mz.Level[il].wayd[iw].ic; - if (ic1 == ic || ic1 == ic_last[ik]) - { - // for each wave function in nwfc2(it, i, l, n) - const int it = mz.Level[il].wayd[iw].type; - const int ia = mz.Level[il].wayd[iw].i; - const int l = mz.Level[il].wayd[iw].L; - const int n = mz.Level[il].wayd[iw].N; - const int m = mz.Level[il].wayd[iw].m; - std::complex lphase = pow(IMAG_UNIT, l); - - // a small trick: get the structure wave functions for each k point. - if (it==it_old && ia==ia_old) - { - // do nothing - } - else - { - delete[] sk; - sk = this->get_sk(ik, it, ia); - } - - // small trick (2) : get flq from psi1d for each k point - if (it==it_old && l==l_old && n==n_old) - { - // do nothing - } - else - { - for (int ig=0; igPolynomial_Interpolation(it, l, n, gk[ig].norm() * this->tpiba ); - } - } - - // small trick (3) - if (it==it_old && ia==ia_old && l==l_old && n==n_old) - { - //samepart is the same as the previous one. - } - else - { - for (int ig=0; igDk; - const int iq = static_cast(position); - assert(iq < kmesh-4); - const double x0 = position - static_cast(iq); - const double x1 = 1.0 - x0; - const double x2 = 2.0 - x0; - const double x3 = 3.0 - x0; - const double y= - this->psi1d(it, l, n, iq) * x1 * x2 * x3 / 6.0 + - this->psi1d(it, l, n, iq) * x0 * x2 * x3 / 2.0 - - this->psi1d(it, l, n, iq) * x1 * x0 * x3 / 2.0 + - this->psi1d(it, l, n, iq) * x1 * x2 * x0 / 6.0 ; - return y; -} - - -void PW_Basis::calculate_Jlq(const int &ik, const int &iw, const int &ie) -{ - //TITLE("PW_Basis", "calculate_Jlq"); - timer::tick("PW_Basis","calculate_Jlq"); - - const int npw = this->ngk[ik]; - const int it= iwindex[iw].type; - const int ia= iwindex[iw].i; - const int l = iwindex[iw].L; - const int m = iwindex[iw].m; - - // generate 1d Jlq. - Vector3 *gk = new Vector3 [npw]; - double* flq=new double[npw]; - for (int ig=0; igget_1qvec_cartesian(ik, ig); - } - for (int ig=0; igtpiba ); - } - - // generate 3d Jlq. - delete[] Jlq; - Jlq = new std::complex[npw]; - std::complex *sk = this->get_sk(ik, it, ia); - - const int lm = l*l+m; - std::complex lphase = pow(IMAG_UNIT, l); - for (int ig=0; ig PW_Basis::calculate_Jlq_Phi(const int &ik, const int &mu) -{ - const int npw = this->ngk[ik]; - complex overlap = std::complex(0,0); - for(int ig=0; ig** strucFac; // StrucFac [ntype,ngmax] - - int ngmw; //(= ngmax) / num. of G vectors within ggfft - int ngmw_g; - int ngmw_start; - - int ngmc; - int ngmc_g; - int ngmc_start; - - Vector3 *gdirect; //(= *G1d) ; // ig = new Vector igc[ngmc], - Vector3 *gdirect_global; //(= *G1d) ; // ig = new Vector igc[ngmc], - Vector3 *gcar; //G vectors in cartesian corrdinate - Vector3 *gcar_global; //G vectors in cartesian corrdinate - double *gg; // modulus (G^2) of G vectors - double *gg_global; // modulus (G^2) of G vectors - - ComplexMatrix eigts1; // - ComplexMatrix eigts2; //the phases e^{-iG*tau_s} - ComplexMatrix eigts3; // - int *ig1; // - int *ig2; // the indices of G components - int *ig3; // - - PW_Basis(); - ~PW_Basis(); - - void init(void); - void setup_structure_factor(void); // Calculate structur factors - void get_sk(void); - complex* get_sk(const int ik, const int it, const int ia)const; - Vector3 get_1qvec_cartesian(const int ik,const int ig)const; - - void table(void); - Numerical_Basis NBasis; - - void allocate_psi1d(const int &il); - void allocate_psi3d(const int &level); - realArray psi1d; - ComplexMatrix *psi3d; - matrix *ylm; - - void calculate_psi1d(void); - // FUNCTION: - // use psi1d to generate 3D wave functions. - // psi3d(it, ia, l, n, m) for each k point. - void calculate_psi3d(const int &ilevel, const int &ik); - - void update_psi1d(const int &il, const int &ic, const int &ie, - const double &c4_now, const double &c4_old); - - int nwfc2; - - void update_psi3d( const int &il, const int &ic, const int &ik); - - int kmesh; - double Dk; - - // FNCTION: - // calculate the overlap between psi(it, ia, l, n, m) - // be called in SpillageStep::init_QS_matrix - complex calculateS(const int &iw, const int &iw2, const int &ik); - - void calculate_Jlq(const int &ik, const int &iw, const int &ie); - complex *Jlq; - complex calculate_Jlq_Phi(const int &ik, const int &mu); - - complex *save; - int* posmu; - int* posnu; - -private: - void set_igk(void); - void setup_gg(void); - void setup_FFT_dimension(void); // set up FFT dimensions -#ifdef __MPI - void get_MPI_GVectors(void); -#else - void get_GVectors(void); -#endif - - // FUNCTION: - // use interpolation scheme to get the one dimension wave function for - // each k point - double Polynomial_Interpolation(const int &it, const int &l, const int &n, const double &gnorm)const; - - Way2iw* iwindex; - -}; -#endif //PlaneWave class diff --git a/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_pw/pw_complement.cpp b/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_pw/pw_complement.cpp deleted file mode 100644 index a2ab75cada..0000000000 --- a/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_pw/pw_complement.cpp +++ /dev/null @@ -1,267 +0,0 @@ -#include "pw_complement.h" -#include "heapsort.h" - -int PW_complement::get_total_pw_number( - const double& ggcut_start, - const double& ggcut_end, - const int& nx, - const int& ny, - const int& nz, - const Matrix3& GGT) -{ - TITLE("PW_complement","get_total_pw_number"); - if (ggcut_end<=0.0) - { - WARNING_QUIT("PW_complement::get_total_pw_number","ggcut <= 0.0"); - } - // First, figure out the number of G-vectors within the cutoff G2max. - int ibox[3]={0,0,0}; - - // mohan modify 2008-3-25 nx -> ncx ,ny-> ncy, nz->ncz - ibox[0] = int(nx / 2) + 1; - ibox[1] = int(ny / 2) + 1; - ibox[2] = int(nz / 2) + 1; - - // first create the auxiliary arrays for the 1D G vectors - Vector3 f; - int ngm = 0 ; - for (int i = -ibox[0]; i <= ibox[0]; i++) - { - for (int j = -ibox[1]; j <= ibox[1]; j++) - { - for (int k = -ibox[2]; k <= ibox[2]; k++) - { - f.x = i; - f.y = j; - f.z = k; - double g2 = f * (GGT * f); //G2= |f|^2 in the unit of (2Pi/lat0)^2 - - if (g2 < ggcut_end && g2 >= ggcut_start) - { - ngm++; - } - } - } - } - return ngm; -} - -void PW_complement::get_total_pw( - double* gg, - Vector3 *ig, - const double& ggcut_start, - const double& ggcut_end, - const int& nx, - const int& ny, - const int& nz, - const Matrix3& GGT, // GGT = G*GT. - int& ngm// number of total plane waves. -) -{ - TITLE("PW_complement","get_total_pw"); - timer::tick("PW_complement","get_total_pw"); - if (ggcut_end<=0.0) - { - WARNING_QUIT("PW_complement::get_total_pw","ggcut <= 0.0"); - } - // First, figure out the number of G-vectors within the cutoff G2max. - int ibox[3]={0,0,0}; - - // mohan modify 2008-3-25 nx -> ncx ,ny-> ncy, nz->ncz - ibox[0] = int(nx / 2) + 1; - ibox[1] = int(ny / 2) + 1; - ibox[2] = int(nz / 2) + 1; - - // first create the auxiliary arrays for the 1D G vectors - Vector3 f; - int ng = 0; - for (int i = -ibox[0]; i <= ibox[0]; i++) - { - for (int j = -ibox[1]; j <= ibox[1]; j++) - { - for (int k = -ibox[2]; k <= ibox[2]; k++) - { - f.x = i; - f.y = j; - f.z = k; - double g2 = f * (GGT * f); //G2= |f|^2 in the unit of (2Pi/lat0)^2 - if (g2 < ggcut_end && g2 >= ggcut_start) - { - /*** g vector indices f=(i,j,k) ***/ - ig[ng] = f ; - gg[ng] = g2; - //cout<0,use the input - // FFT grid, otherwise generate the FFT grid in the code. - - int i = 0; - Vector3 lat; - int ibox[3]={0,0,0}; - - // ibox[i] are the minimal FFT dimensions, - lat.x = latvec.e11; - lat.y = latvec.e12; - lat.z = latvec.e13; - ibox[0] = 2 * int(sqrt(ggcut) * sqrt(lat * lat)) + 1; - - lat.x = latvec.e21; - lat.y = latvec.e22; - lat.z = latvec.e23; - ibox[1] = 2 * int(sqrt(ggcut) * sqrt(lat * lat)) + 1; - - lat.x = latvec.e31; - lat.y = latvec.e32; - lat.z = latvec.e33; - ibox[2] = 2 * int(sqrt(ggcut) * sqrt(lat * lat)) + 1; - //lat*lat=lat.x*lat.x+lat.y*lat.y+lat.z+lat.z - - /* Find the minimal FFT box size the factors into the primes (2,3,5,7). */ - -// log << "\n ibox[0]= "<< ibox[0] << " ibox[1] = "< *igsort = new Vector3[ngmc_g_in]; - for (int i=0;i *igsort, - const double& ggcut_start, const double& ggcut_end, - const int& nx, const int& ny, const int& nz, const Matrix3& GGT, // GGT = G*GT - int& ngm); // number of total plane waves. - -// output nx, ny, nz according to input: latve and ggcut. -void get_FFT_dimension(const Matrix3& latvec, const double &ggcut, int &nx, int &ny, int &nz); - -//========================================================== -// MEMBER FUNCTION : -// NAME : PW_Basis::setup_GVectors -// Second part of the initialization : find out all G -// vectors that |G|^2<=G2max and map it into a one -// dimentional array G1d in the increase order of |G|^2. -// Next generate the indices between the 1D array and -// the 3D G-grid and the FFT grid. -// generate : gg_global, g_global, ig_global -//========================================================== -void setup_GVectors(const Matrix3& G, const int &ngmc_g, double* gg, - Vector3* ig, Vector3* g); -} - - -#endif - diff --git a/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_pw/ylm_real.cpp b/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_pw/ylm_real.cpp deleted file mode 100644 index 5fcc7724f4..0000000000 --- a/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_pw/ylm_real.cpp +++ /dev/null @@ -1,295 +0,0 @@ -#include "ylm_real.h" -#include "../src_parallel/parallel_reduce.h" -#include "../src_spillage/tools.h" - -//========================================================== -// MEMBER FUNCTION : -// NAME : YLM_REAL(Real spherical harmonics ylm(G) up to l=lmax -// Use Numerical recursive algorithm as given in Numerical Recipes -//========================================================== -void Ylm_Real -( - const int lmax2, // lmax2 = (lmax+1)^2 - const int ng, // - const Vector3 *g, // g_cartesian_vec(x,y,z) - matrix &ylm // output -) -{ -// TITLE("Mathzone","Ylm_Real"); -// timer::tick("Mathzone","Ylm_Real"); - - if (ng<1 || lmax2<1) - { - cout << "\n YLM_REAL: ng < 1 or lmax2 < 1"; - QUIT(); - timer::tick("Mathzone","Ylm_Real"); - return; - } - -//---------------------------------------------------------- -// EXPLAIN : find out lmax -//---------------------------------------------------------- - bool out_of_range = true; - int lmax = 0; - for (int l= 0; l< 30; l++) - { - if ((l+1)*(l+1) == lmax2) - { - lmax = l; - out_of_range = false; - break; - } - } - if (out_of_range) - { - WARNING_QUIT("YLM_REAL","l>30 or l<0"); - } - -//---------------------------------------------------------- -// EXPLAIN : if lmax = 1,only use Y00 , output result. -//---------------------------------------------------------- - if (lmax == 0) - { - for (int i=0;i 1.0e-9) - { - phi[ig] = atan(g[ig].y / g[ig].x); - } - else if (g[ig].x < -1.e-9) - { - phi[ig] = atan(g[ig].y / g[ig].x) + PI; - } - else - { - phi[ig] = PI_HALF * ((g[ig].y >= 0.0) ? 1.0 : -1.0); //HLX: modified on 10/13/2006 - } // end if - } // enddo - -//========================================================== -// NAME : p(Legendre Polynomials) (0 <= m <= l) -//========================================================== - realArray p(lmax+1,lmax+1,ng); - int m; - int i; - double x1, x2; - int lm = -1; - for (int l=0; l<=lmax; l++) - { - const double c = sqrt((2*l+1) / FOUR_PI); - if (l == 0) - { - for (i=0;i(l) / 2.0) ;//mohan modify 2007-10-13 - if (l%2 == 1) - { - p(l, l, i) = -p(l, l, i); - } - } - } // end if - - // Y_lm, m = 0 - ++lm; - for (i=0;i 0 - const double same = c * sqrt - ( - static_cast(Fact(l - m)) / - static_cast(Fact(l + m)) - ) - *SQRT2; - - ++lm; - for (i=0;i1; i--) - { - f *= i; -// if(n>16) -// { -// cout<<"\n n="<16) QUIT(); - - return f; -} - -int Semi_Fact(const int n) -{ - int semif = 1; - for (int i=n; i>2; i -= 2) - { - semif *= i; - } - return semif; -} - diff --git a/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_pw/ylm_real.h b/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_pw/ylm_real.h deleted file mode 100644 index 84a344392e..0000000000 --- a/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_pw/ylm_real.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef YLM_REAL_H -#define YLM_REAL_H -#include "../src_tools/vector3.h" -#include "../src_tools/realarray.h" -#include "../src_tools/matrix.h" -using namespace std; - -void Ylm_Real -( - const int lmax2, // lmax2 = (lmax+1)^2 - const int ng, // - const Vector3 *g, // g_cartesian_vec(x,y,z) - matrix &ylm // output -); - -long double Fact(const int n); -int Semi_Fact(const int n); - -#endif diff --git a/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_spillage/Calculate_C4.cpp b/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_spillage/Calculate_C4.cpp deleted file mode 100644 index acb162d589..0000000000 --- a/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_spillage/Calculate_C4.cpp +++ /dev/null @@ -1,559 +0,0 @@ -//========================================================== -// AUTHOR : mohan -// DATE : 2009-03-18 ( version 1.0 ) -// 2009-04-14 ( version 1.1 ) -// 2009-05-19 change file name -//========================================================== -#include "Calculate_C4.h" -#include "tools.h" - -int Calculate_C4::test = 0; -Calculate_C4::Calculate_C4(){} -Calculate_C4::~Calculate_C4(){} - -//=================================================================== -// FUNCTION : Find_Eigenvalues -// DESCRIPTION : Find 'Enumber' number of eigenvalues of -// spherical bessel function from '0~lmax', and put the -// result eigenvalues in 'en' matrix. -// P.S: (1) The eigenvalues are calculated '< tolerence' -// accuracy. -// P.S: (2) The rcut is important for cacluating eigenvalues -// because it makes jl( rcut * eigenvalue ) = 0.00 -//==================================================================== -void Calculate_C4::Find_Eigenvalues(const int &Enumber, matrix &en, - const int &lmax, const double &rcut, const double &tolerence) -{ - double *e = new double[Enumber]; - for(int l=0; l( rcut / dr)+1; - if(mesh % 2 == 0) mesh++; - cout << "\n\n Mesh for test = " << mesh << " L = " << L; - - double *r = new double[mesh]; - double *rab = new double[mesh]; - double *e = new double[Enumber]; - double *jle = new double[mesh]; - double *jtest = new double[mesh]; - double *function = new double[mesh]; - - for(int i=0; i C4_firstly -// (5) ues int_{0}^{Rc} J1(q1*r)*Jl(q1*r)*r*r dr ==> norm -// (6) C4 = C4_firstly / norm -//=================================================================== -void Calculate_C4::key_solver(const string &name, const int &L, const matrix &en, const int &Enumber, double *C4) -{ - ifstream ifs(name.c_str()); - if(!ifs) - { - cout << "\n Can't find file : " << name; - } - else - { - cout << "\n Open file " << name; - } - - string title; - - int mesh; - ifs >> title >> mesh; - assert(mesh > 0); - cout << "\t mesh = "<> title >> title >> title; - - for(int i=0; i> r[i] >> psi[i] >> rab[i]; - } - - double norm = 0.0; - for(int i=0; i(rcut / dr)+1; //mohan update 2009-10-10 - if(mesh % 2 == 0) mesh++; - - if(test==1) - { - cout << "\n norm : mesh = " << mesh; - cout << "\n type = " << ntype; - cout << "\n lmax = " << lmax; - cout << "\n enumber = " << enumber; - } - - // init radial mesh - double *r = new double[mesh]; - for(int i=0; i") ) - { - string filedir; - READ_VALUE( ifs, filedir ); - READ_VALUE( ifs, l ); - READ_VALUE( ifs, ecut ); - READ_VALUE( ifs, rcut ); - READ_VALUE( ifs, enumber ); - READ_VALUE( ifs, tolerence ); - cout << "\n l = " << l; - cout << "\n ecut = " << ecut; - cout << "\n enumber = " << enumber; - SCAN_END(ifs, ""); - } - - // init c4 - c4 = new double[enumber]; - ZEROS(c4, enumber); - if( SCAN_BEGIN(ifs,"") ) - { - assert(enumber>0); - for(int i=0; i> id >> c4[i]; - // cout << "\n c4[" << i << "]=" << c4[i]; - } - SCAN_END(ifs, ""); - } - - // init mesh - int mesh = static_cast(rcut / dr)+1; - if(mesh % 2 == 0) mesh++; - cout << "\n mesh = " << mesh; - - // init r - r = new double[mesh]; - for(int i=0; i get_C4 Program Start." << endl; - - cout << "\n rcut = " << rcut << " (a.u.)"; - cout << "\n ecut = " << ecut << " (Ry)"; - cout << "\n tolerence = " << tolerence; - cout << "\n lmax = " << lmax; - - int nw;//number of orbitals(files) to calculate C4. - string *name;// file name, containing psi(r)*r, rab, radial - int *L;//angular momentum for each file( each orbital); - - READ_VALUE( ifs, nw ); - assert(nw>0); - cout << "\n Files = " << nw; - - name = new string[nw]; - L = new int[nw]; - //================================================ - // read in the file name and the corresponding L. - //================================================ - for(int i=0; i( sqrt( ecut * 2) * rcut / Mathzone::PI ); - cout << "\n Eigenvalue number(Jl) = " << Enumber; - - //================================================ - // Calculate eigenvalue of Jl - // CALL FUNCTION : Find_Eigenvalues - //================================================ - matrix en( lmax+1, Enumber); - Find_Eigenvalues(Enumber, en, lmax, rcut, tolerence); - - for(int i=0; ikey_solver(name[i], L[i], en, Enumber, C4); - stringstream ss; - ss << name[i] << ".C4"; - ofstream ofs( ss.str().c_str() ); - - ofs << "Calculate_C4_Program"; - ofs << "\n"; - ofs << "\n AUTHOR : Mohan Chen"; - ofs << "\n Date : 2009-4-1"; - ofs << "\n LOCATION : LQCC, Hefei, China"; - ofs << "\n EMAIL : mohan@mail.ustc.edu.cn"; - ofs << "\n Description : Calculate the coefficients C4 of f(r) in Spherical Bessel Basis J(qr)."; - ofs << "\n Formula : C4 = integral(r)[ f(r)*jl(qr)*r^{2} ]dr "; - ofs << "\n P.S. : We default consider f(r) read from file is in the form : ( f(r) * r )."; - ofs << "\n"; - - ofs << "\n\n"; - ofs << "\n" << name[i] << " ( f(r) read from this file)"; - ofs << "\n" << setw(8) << L[i] << " angular momentum for this orbital."; - ofs << "\n" << setw(8) << ecut << " Energy cutoff(Ry.)."; - ofs << "\n" << setw(8) << rcut << " rcut (a.u.)"; - ofs << "\n" << setw(8) << Enumber << " eigenvalue number( sqrt(ecut*2)*rcut/PI )."; - ofs << "\n" << setw(8) << tolerence << " tolerence to calculate eigenvalue."; - ofs << "\n"; - - ofs << "\n\n"; - for(int j=0; j"; - ofs.close(); - delete[] C4; - } - - delete[] name; - delete[] L; -} diff --git a/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_spillage/Calculate_C4.h b/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_spillage/Calculate_C4.h deleted file mode 100644 index b817fc4fd7..0000000000 --- a/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_spillage/Calculate_C4.h +++ /dev/null @@ -1,38 +0,0 @@ -#ifndef CALCULATE_C4_H -#define CALCULATE_C4_H - -#include "common.h" - -class Calculate_C4 -{ - public: - - Calculate_C4(); - ~Calculate_C4(); - - void init( ifstream &ifs, const double &ecut, const double &rcut, const double &tolerence, const int &lmax ); - void Test( ifstream &ifs, const double &ecut, const double &tolerence); - void plot( ifstream &ifs ); - - static void norm_ic( realArray &C4, const int &ntype, const int &lmax, - const int &nmax, const int &enumber, const double &tolerence, - const double &rcut, const double &dr); - - static void Find_Eigenvalues(const int &Enumber, matrix &en, - const int &lmax, const double &rcut, const double &tolerence); - - private: - - void Test_Orthogonal(const double &rcut, const double &dr, - const int &L, const matrix &en, const int &Enumber, const int &test_ei); - - void key_solver(const string &name, const int &L, - const matrix &en, const int &Enumber, double *C4); - - static int test; - - - -}; - -#endif diff --git a/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_spillage/Coefficients.cpp b/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_spillage/Coefficients.cpp deleted file mode 100644 index 5d7cf79c25..0000000000 --- a/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_spillage/Coefficients.cpp +++ /dev/null @@ -1,350 +0,0 @@ -#include "Coefficients.h" -#include "../src_parallel/parallel_common.h" - -bool Coefficients::write_c4_flag; - -Coefficients::Coefficients() -{ - test = 0; - output_c4_name = new string[1]; - accumulate_num = 0;//mohan add 2009-09-25 -} - -Coefficients::~Coefficients() -{ - if (TEST1) cout << "\n ~Coefficients()" << endl; - delete[] output_c4_name; -} - -void Coefficients::init( - const int &ntype_in, - const int &lmax_in, - const int &nmax_in, - const double &ecut_in, - const double &ecut_jlq_in, // mohan add 2009-07-23 - const double &rcut_in, - const double &tolerence_in) -{ - TITLE(ofs_running,"Coefficients", "Constructor"); - - ntype = ntype_in; - lmax = lmax_in; - nmax = nmax_in; - ecut = ecut_in; - ecut_jlq = ecut_jlq_in; // mohan add 2009-07-23 - rcut = rcut_in; -// in Rydberg Unit - enumber = static_cast( sqrt( ecut )* rcut/PI ); - enumber_jlq = static_cast ( sqrt( ecut_jlq) * rcut/PI ); // mohan add 2009-07-23 - tolerence = tolerence_in; - - OUT(ofs_running,"ntype",ntype); - OUT(ofs_running,"lmax",lmax); - OUT(ofs_running,"nmax",nmax); - OUT(ofs_running,"ecut(Ry)",ecut); - OUT(ofs_running,"ecut_jlq(Ry)",ecut_jlq); - OUT(ofs_running,"rcut(Bohr)",rcut); - OUT(ofs_running,"enumber",enumber); - OUT(ofs_running,"enumber_jlq",enumber_jlq); - OUT(ofs_running,"tolerence",tolerence); - - assert(ntype > 0); - assert(lmax >= 0); - assert(nmax > 0); - assert(enumber > 0); - assert(enumber_jlq > 0); - - assert(ecut > 0.0); - assert(ecut_jlq > 0.0); - assert(rcut > 0.0); - assert(tolerence > 0.0); - - this->allocate_C4(); - - delete[] output_c4_name; - this->output_c4_name = new string[1]; - - return; -} - -void Coefficients::allocate_C4(void) -{ - if (test==1)TITLE("Coefficients", "allocate_C4"); - - this->C4.create(ntype, lmax + 1, nmax, enumber); - this->C4_old.create(ntype, lmax + 1, nmax, enumber); - this->C4_accumulate.create(ntype, lmax + 1, nmax, enumber); // mohan add 2009-09-25 -// this->acc_count.create(ntype, lmax+1, nmax, enumber); - this->accept_number.create(ntype, lmax+1, nmax, enumber); // mohan add 2009-10-16 - this->accept_rate.create(ntype, lmax+1, nmax, enumber);// mohan add 2009-10-31 - - // init accept_rate - for (int i=0; iaccept_rate.ptr[i] = 1.0; - } - - for (int it = 0; it < ntype; it++) - { - for (int il = 0; il < lmax+1; il++) - { - for (int in = 0; in < nmax; in++) - { - ofs_running << "\n Init C4: T=" << it+1 << " L=" << il << " N=" << in; - for (int ie = 0; ie < enumber; ie++) - { - // mohan modify 2009-08-26 - int ne_cut; - int ne_cut_min = -1; // must initalized - if (BLOCK_NE_MIN>0) - { - ne_cut_min = BLOCK_NE_MIN; - } - - if (BLOCK_NE<0) - { - ne_cut = enumber_jlq; - } - else - { - ne_cut = BLOCK_NE; - } - - if (iene_cut_min) - { - this->C4(it, il, in, ie) = Random::between0and1(); - this->C4_old(it, il, in, ie) = this->C4(it, il, in, ie); - } - else - { - this->C4(it, il, in, ie) = 0.0; - this->C4_old(it, il, in, ie) = 0.0; - } - if (ie%4==0)ofs_running< BLOCK, - // how many C4 you want to read in! - // remain bug when ntype > 1. - if (RESTART) - { - if (MY_RANK==0) - { - ifstream ifs( "ORBITAL_RESULTS.txt" ); - if (!ifs) - { - WARNING_QUIT("Coefficients::allocate_C4()","can't find the restart file: ORBITAL_RESULTS.txt"); - } - else - { - cout << "\n Read in RESTART information from : ORBITAL_RESULTS.txt" << endl; - } - - double ecut_in; - double rcut_in; - int ne_in; - if ( SCAN_BEGIN(ifs,"") ) - { - READ_VALUE(ifs, ecut_in); - READ_VALUE(ifs, rcut_in); - READ_VALUE(ifs, ne_in); - if (ne_in != enumber) - { - cout << "\n ne_in = " << ne_in; - cout << "\n enumber = " << enumber; - WARNING_QUIT("Coefficients::Allocate_C4()","enumber != ne_in"); - } - } - - if ( SCAN_BEGIN(ifs,"") ) - { - int nchi_in; - READ_VALUE(ifs, nchi_in); - assert(nchi_in > 0); - - string no_use1, no_use2, no_use3; - int it2, il2, in2; - bool hold_on = false; - int count_nchi = 0; - for (int it = 0; it < ntype; it++) - { - for (int il = 0; il < lmax+1; il++) - { - for (int in = 0; in < nmax; in++) - { - if (!hold_on) - { - ifs >> no_use1 >> no_use2 >> no_use3; - assert(no_use1 == "Type"); - assert(no_use2 == "L"); - assert(no_use3 == "Zeta-Orbital"); - ifs >> it2>> il2>> in2; - it2 -= 1; - in2 -= 1; - } - if (it2!=it || il2!=il || in2!=in) - { - hold_on = true; - continue; - } - else - { - hold_on = false; - cout << "\n\n Read in T=" << it+1 << " L=" << il << " Zeta-Orbital=" << in; - for (int ie=0; ie> C4(it, il, in, ie); - C4_old(it, il, in, ie) = C4(it, il, in, ie); - if (ie%4==0) cout << endl; - cout - << setiosflags(ios::fixed) - << setprecision(20) - << setiosflags(ios::showpoint) - << setw(25) << C4_old(it, il, in, ie); - } - ++count_nchi; - // if count_nchi == nchi_in, all needed C4 have been read in! - if (count_nchi==nchi_in) return; - } - } - } - } - }// end SCAN_BEGIN - }// end MY_RAN==0 - } // end RESTART - -#ifdef __MPI - Parallel_Common::bcast_double(C4.ptr, C4.getSize()); - Parallel_Common::bcast_double(C4_old.ptr, C4_old.getSize()); - ofs_running << "\n bcast C4 and C4_old done." << endl; -#endif - - return; -} - -void Coefficients::copy_c4_to_old(void) -{ - for (int i=0; iC4.getSize(); i++) - { - this->C4_old.ptr[i] = this->C4.ptr[i]; - } - return; -} - - -void Coefficients::trial_c4( const int &t, const int &l, const int &n, const int &ie ) -{ - // (1) - this->C4_old(t, l, n, ie) = this->C4(t, l, n, ie); - // update between -0.1~0.1 - - // (2) - this->C4(t, l, n, ie) += Random::betweenMinus1and1()/10.0* this->accept_rate(t, l, n, ie); - -#ifdef __MPI - // don't need to bcast ! it's a random seed. -// ofs_running << "\n C4=" << this->C4(t, l, n, ie); -// Parallel_Common::bcast_double( this->C4(t, l, n, ie) ); -#endif - -// if( abs(this->C4(t, l, n, ie)) < 1.0e-3) //mohan modify 2009-10-10 -// { -// this->C4(t, l, n, ie) = 0.0; -// } -// this->C4(t, l, n, ie) += Random::betweenMinus1and1(); - - // this->C4(t, l, n, ie) *= Random::betweenMinus2and2(); - // cout << "\n ic = " << ic << " ie = " << ie << " C4 = " << C4(t, l, n, ie); - return; -} - -/* -void Coefficients::accumulate_num_zero(void) -{ - cout << "\n Accumulate_num = " << this->accumulate_num; - this->accumulate_num = 0; -} -*/ - -/* -void Coefficients::accumulating_C4( const int &t, const int &l, const int &n, const int &ie ) -{ - // mohan add 2009-09-25 - double mix = this->C4_accumulate(t, l, n, ie) * this->acc_count(t,l,n,ie) + this->C4_old(t, l, n, ie); - ++acc_count(t,l,n,ie); - ++accumulate_num; - this->C4_accumulate(t, l, n, ie) = mix / acc_count(t,l,n,ie); -// cout << "\n Accumulate_num = " << this->accumulate_num; - - return; -} -*/ - -void Coefficients::update_c4( const int &t, const int &l, const int &n, const int &ie ) -{ - //=============================================== - // store the new c4 parameters(random accepted!! - // then next c4 will replace by a new set. - //=============================================== - - this->C4_old(t, l, n, ie) = this->C4(t, l, n, ie); - ++accept_number(t,l,n,ie); - - return; -} - -void Coefficients::go_back_c4( const int &t, const int &l, const int &n, const int &ie ) -{ - //================================== - // give up the random added number; - //================================== - this->C4(t, l, n, ie) = this->C4_old(t, l, n, ie); - return; -} - -/* -void Coefficients::kinetic_energy( const int &t, const int &l, const int &n, const int &ie) -{ - if(!ke_flip_flag) - { - if(ke_up_flag) - { - // C4>0.0 and C4_old>0.0 - this->ke_total_up += ( C4(t, l, n, ie) - C4_old(t, l, n, ie) ) * ie * ie; - } - else - { - // C4<0.0 and C4_old>0.0 - this->ke_total_down += ( C4_old(t, l, n, ie) - C4(t, l, n, ie) ) * ie * ie; - } - } - else - { - // (1) C4>0.0 and C4_old<0.0, - // so ke_total_up energy increase - // ke_total_down energy decrease - // - // (2) C4<0.0 and C4_old>0.0, - // so ke_total_up energy decrease - // and ke_total_down energy increase - this->ke_total_up += C4(t, l, n, ie) * ie * ie; - this->ke_total_down += C4_old(t, l, n, ie) * ie * ie; - } - - this->ke_total_old = this->ke_total_new; - this->ke_total_new = abs(abs(ke_total_up) - abs(ke_total_down)); - -// cout << "\n ke_total_up = " << ke_total_up; -// cout << "\n ke_total_down = " << ke_total_down; -// cout << "\n ke_total_old = " << ke_total_old; -// cout << "\n ke_total_new = " << ke_total_new << endl; - - return; -} -*/ diff --git a/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_spillage/Coefficients.h b/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_spillage/Coefficients.h deleted file mode 100644 index 32c692e345..0000000000 --- a/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_spillage/Coefficients.h +++ /dev/null @@ -1,54 +0,0 @@ -#ifndef COEFFICIENTS_H -#define COEFFICIENTS_H - -#include "common.h" -class Coefficients -{ - public: - //============================ - // C4(type, L, N, ie) - //============================ - realArray C4; - realArray C4_old; - realArray C4_accumulate; - //IntArray acc_count; - IntArray accept_number; - realArray accept_rate; - - // constructor, available for SZ, DZ, DZP... - Coefficients(); - ~Coefficients(); - - void init( const int &ntype, const int &lmax, const int &namx, - const double &ecut, const double &ecut_jlq, - const double &rcut, const double &tolerence); - void trial_c4( const int &t, const int &l, const int &n, const int &ie ); - - void update_c4( const int &t, const int &l, const int &n, const int &ie ); - void go_back_c4( const int &t, const int &l, const int &n, const int &ie ); - void copy_c4_to_old(void); // for normalize - void kinetic_energy( const int &t, const int &l, const int &n, const int &ie);// mohan add 2009-07-23 - void accumulate_num_zero(void); - void accumulating_C4( const int &t, const int &l, const int &n, const int &ie ); - - int ntype; - int lmax; - int nmax; - int enumber; - double rcut; - double tolerence; - int fix; - - string *output_c4_name; - static bool write_c4_flag; - - private: - void allocate_C4(); - double ecut; - double ecut_jlq; // mohan add 2009-07-23 - int enumber_jlq; // mohan add 2009-07-23 - int test; - int accumulate_num; -}; - -#endif diff --git a/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_spillage/Metropolis.cpp b/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_spillage/Metropolis.cpp deleted file mode 100644 index f82b93fc1d..0000000000 --- a/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_spillage/Metropolis.cpp +++ /dev/null @@ -1,726 +0,0 @@ -#include "Metropolis.h" -#include "../src_parallel/parallel_common.h" -#include "Calculate_C4.h" - -Metropolis::Metropolis() -{ - prob_old = 0.0; - prob_new = 0.0; - temperature = 0.0; - random_c4number = 0; - output_each_istep = 0; - kin_last = new double[1]; - kin_temp = new double[1]; -} - - -Metropolis::~Metropolis() -{ - delete[] kin_last; - delete[] kin_temp; -} - -// read in Metropolis parameters. -void Metropolis::init(void) -{ - if(test==1) TITLE("Metropolis","init"); - - bool begin = false; - - if(MY_RANK==0) - { - if(SCAN_BEGIN(input.ifs, "")) - { - begin = true; - } - } - -#ifdef __MPI - Parallel_Common::bcast_bool(begin); -#endif - - ofs_running << "\n begin read in Metropolis parameter." << endl; - - if(begin) - { - if(MY_RANK==0) - { - READ_VALUE( input.ifs, this->spi_ini_temp); - READ_VALUE( input.ifs, this->spi_rate); - READ_VALUE( input.ifs, this->spi_ntemp); - READ_VALUE( input.ifs, this->spi_nsteps); - - READ_VALUE( input.ifs, this->kin_ini_temp); - READ_VALUE( input.ifs, this->kin_rate); - READ_VALUE( input.ifs, this->kin_ntemp); - READ_VALUE( input.ifs, this->kin_nsteps); - - READ_VALUE( input.ifs, this->delta_kappa); - READ_VALUE( input.ifs, this->output_each_istep); - - READ_VALUE( input.ifs, ACCEPTANCE_STEPS ); // mohan add 2009-10-31 - READ_VALUE( input.ifs, ACCEPTANCE_HIGH ); - READ_VALUE( input.ifs, ACCEPTANCE_LOW ); - - READ_VALUE( input.ifs, KINETIC_MAX ); // mohan add 2009-10-31 - READ_VALUE( input.ifs, KINETIC_DR); //mohan add 2010-04-12 - READ_VALUE( input.ifs, OPTIMIZE_METHOD); // mohan add 2010-04-14 - //SCAN_END(input.ifs, ""); - } - -#ifdef __MPI - MPI_Barrier(MPI_COMM_WORLD); - - Parallel_Common::bcast_double(this->spi_ini_temp); - Parallel_Common::bcast_double(this->spi_rate); - Parallel_Common::bcast_int(this->spi_ntemp); - Parallel_Common::bcast_int(this->spi_nsteps); - - Parallel_Common::bcast_double(this->kin_ini_temp); - Parallel_Common::bcast_double(this->kin_rate); - Parallel_Common::bcast_int(this->kin_ntemp); - Parallel_Common::bcast_int(this->kin_nsteps); - - Parallel_Common::bcast_double(this->delta_kappa); - Parallel_Common::bcast_int(this->output_each_istep); - - Parallel_Common::bcast_int(ACCEPTANCE_STEPS ); - Parallel_Common::bcast_double(ACCEPTANCE_HIGH ); - Parallel_Common::bcast_double(ACCEPTANCE_LOW ); - - Parallel_Common::bcast_double(KINETIC_MAX ); - Parallel_Common::bcast_double(KINETIC_DR ); - Parallel_Common::bcast_int(OPTIMIZE_METHOD); -#endif - - } - - this->temperature = this->spi_ini_temp; - - // check whether the parameters are in the range. - assert(spi_ini_temp >= 0.0); - assert(spi_rate >= 0.0); - assert(spi_ntemp >= 0); - assert(spi_nsteps >= 0); - - assert(kin_ini_temp >= 0.0); - assert(kin_rate >= 0.0); - assert(kin_ntemp >= 0); - assert(kin_nsteps >= 0); - - assert(delta_kappa >= 0.0); - assert(output_each_istep>0); - - return; -} - -// be called in MultiZeta::init(), reset the start temperature. -void Metropolis::reset_temperature(const int &istep) -{ - temperature = this->spi_ini_temp; - for(int i=0; ikappa = 1.0 + this->delta_kappa; - - assert( this->spi_ntemp>=0 ); - - this->nchi = Level.nchi; - - delete[] kin_last; - this->kin_last = new double[nchi]; - ZEROS(kin_last, nchi); - - delete[] kin_temp; - this->kin_temp = new double[nchi]; - ZEROS(kin_temp, nchi); - - // how many temperature we try. - // there are two parts of this algorithm, - // first part is about spillage, - // the second part is about kinetic energy. - for (int itemp = 0; itemp < this->spi_ntemp + this->kin_ntemp; itemp++) - { - // if the kinetic energy is not small enough, we try new kappa again. - //try_new_kappa_again: - - if(itemp < this->spi_ntemp) - { - ofs_running << "\n" << " ---> SpillageTemp " << setw(3) << itemp+1 << endl; - ofs_running << " Temperature " << setw(6) << temperature << endl; - this->states = "Spi"; - ofs_running << setw(5) << "STEPS" - << setw(20) << "SPILLAGE" - << setw(10) << "UPDATES" << endl; - - if(itemp==0) - { - cout << setw(5) << "STEP" << setw(10) << "TEMP" - << setw(20) << "SPILLAGE" << endl; - } - } - else - { - // Please DIY, mohan 2010-04-14 - if(OPTIMIZE_METHOD==1) - { - this->states="Kin"; - } - else if(OPTIMIZE_METHOD==2) - { - this->states = "Ecut"; - } - else - { - WARNING_QUIT("move_various_temperature","Check OPTIMIZE_METHOD"); - } - } - - this->Psi2.ofso << "spillage_ntemp = " << itemp << " kappa = " << kappa << endl; - - // set the initial temperature and kinetic energy value. - if(itemp== this->spi_ntemp) - { - this->min_spillage = input.SV.cal_defined_value(0); // save the spillage value. - ofs_running << "\n\n Spillage at final temperature " << min_spillage << endl; - - for(int ic=0; icnchi; ic++) - { - const int T = Level.wayc[ic].type; - const int L = Level.wayc[ic].L; - const int N = Level.wayc[ic].N; - - double *c4_last = new double[Level.ne]; - for(int ie2=0; ie2kin_last[ic] = 0.0; - - if(states=="Kin") - { - for(int ie2=0; ie2kin_last[ic] += pow( c4_last[ie2]*(ie2+1)*PI/RCUT,2 ) - *this->Psi2.jjnorm(L,ie2); - } - } - else if(states=="Ecut") - { - this->kin_last[ic] = this->Psi2.get_ecut( c4_last, L ); - } - - // set the start temperature of kinetic part of Metropolis algorithms. - this->kin_temp[ic] = this->kin_last[ic] * this->kin_ini_temp; - - ofs_running << " Orbital " << ic+1 << " Initial E_kin " << setw(15) << this->kin_last[ic] << endl; - - delete[] c4_last; - } - } - - - // mohan add 2009-09-11 - // how many steps moving in this temperature. - int nsteps_now = 0; - if( states == "Spi" ) nsteps_now = this->spi_nsteps; - else nsteps_now = this->kin_nsteps; - - - for (int istep = 0; istep < nsteps_now; istep++) - { - // P.S.: a method to quit this whole program. - // you only need to create a file name : FINISH - // another function: if there existep a file 'FINISH' - // in the current dir, the program quit at the first - // iteration. - // Here I choose a proper parameter: 500 steps, - // you can change on your own. - if(istep%500==0) - { - // mohan add 2009-08-28 - ifstream ifs("FINISH"); - if( ifs ) - { - return; - } - } - - // because the initia temperature may be too high - // which caused by the high kinetic energy, so - // we need to reset the temperature. - if(itemp == this->spi_ntemp && istep == 50) - { - double high = 0.0; - for(int ic=0; icnchi; ic++) - { - this->kin_temp[ic] = this->kin_last[ic] * this->kin_ini_temp; - high = std::max( kin_temp[ic], high ); - } - - for(int ic=0; icnchi; ic++) - { - this->kin_temp[ic] = high; - ofs_running << " Notice: Change temperature of orbital " << ic+1 << " to " << kin_temp[ic] << endl; - } - } - - // Here is the part about changing Metropolis algorithm's accept rate. - // we want to calculate the accept rate every 'ACCEPTANCE_STEPS' steps. - // but we don't want to calculate at istep=0; - if(istep%ACCEPTANCE_STEPS == 0) - { - if(istep>0) - { - for(int ic=0; icnchi; ic++) - { - const int T = Level.wayc[ic].type; - const int L = Level.wayc[ic].L; - const int N = Level.wayc[ic].N; - for(int ie2=0; ie2 ACCEPTANCE_HIGH) - { - input.Coef.accept_rate(T,L,N,ie2) *= 2.0; // You can DIY 0.5 - } - else if(rate < ACCEPTANCE_LOW) - { - input.Coef.accept_rate(T,L,N,ie2) *= 0.5; // You can DIY 2.0 - } - - // output information - //if(ie2%5==0) cout << "\n"; - //cout << setw(8) << rate*100 << "%"; - //cout << setw(8) << input.Coef.accept_rate(T,L,N,ie2); - } - } - } - input.Coef.accept_number.zero_out(); - } // end accept_rate - - - //======================================================== - // if we want to move step, we need the set of C4 from CS - // in single zeta, the C4 can be either read in or random, - // in double zeta, the C4 should start from random, in - // most cases. - //======================================================== - this->move_one_step(itemp, istep, Level, nsteps_now); - - }// end istep - - cout << setw(5) << itemp+1 - << setiosflags(ios::fixed) - << setprecision(3) - << setiosflags(ios::scientific) - << setiosflags(ios::showpoint) - << setw(10) - << temperature - << resetiosflags(ios::fixed) - << setiosflags(ios::fixed) - << setiosflags(ios::showpoint) - << setprecision(10) - << setw(19) - << input.SV.cal_defined_value(0)*100 << "%" << endl; - - - //------------------------------------------- - // it's about minimizing kinetic energy. - //------------------------------------------- - if( itemp >= this->spi_ntemp) - { - for(int ic=0; icnchi; ic++) - { - cout << setw(5) << Level.wayc[ic].spd; - cout << setiosflags(ios::scientific) - << setiosflags(ios::showpoint) - << setprecision(3) - << setw(10)<< this->kin_temp[ic]; - cout << setprecision(10) - << resetiosflags(ios::fixed) - << setiosflags(ios::fixed) - << setiosflags(ios::showpoint) - << setw(20)<< this->kin_last[ic] << endl; - } - - for(int ic=0; icnchi; ic++) - { - if(this->kin_last[ic] > KINETIC_MAX) - { - cout << "\n kin_last[" << ic << "]=" << kin_last[ic] << " KINETIC_MAX = " << KINETIC_MAX << endl; - cout << " There maybe 2 reasons, first: The starting temperature for kinetical energy is too small." << endl; - cout << " Second: The kappa is too small." << endl; - //WARNING_QUIT("Minimizing Kinetic Energy","Kinetical Energy Too Large!"); - cout << "Kinetical Energy Too Large!"<kappa += this->delta_kappa; - //goto try_new_kappa_again; - } - } - - // change temperature - this->update_t(); - }// end item - timer::tick("Metropolis","move_various_t"); - return; -} - - -void Metropolis::move_one_step( - const int &itemp, - const int &istep, - SpillageStep &Level, - const int &nsteps_now) -{ - timer::tick("Metropolis", "move_one_step"); - - //ofs_running << "\n move_one_step"; - - // each step we renew every Jlq one by one. - int update_number = 0; - - static int *min_os = new int[this->nchi]; - - // for each (atom_type,L,N), we need a set of C4 - // to describe the radial wave functions. - // after each radial wave function is update(ne parameters), - // we call it 'a step under a particular temperature is done' - for (int ic = 0; ic < this->nchi; ic++) - { - // get the type index of this radial wave function. - const int T = Level.wayc[ic].type; - - // mohan add 2009-01-27 - // if "skip", the C4 will not changed in this 'Big step' - if(Level.info[T].state=="skip") continue; - - const int L = Level.wayc[ic].L; - const int N = Level.wayc[ic].N; - - for (int ie = 0; ie < Level.ne; ie++) - { - //cout << "ic=" << ic << " ie=" << ie << endl; - // mohan add 2009-08-26 - // this judgement means, - // If users don't want to use Jlq(ie) - // which is too oscillation(large), they - // can use only small part of Jlq. - // mohan add BLOCK_NE_MIN 2009-08-27 - if( (ie=BLOCK_NE)) continue; - - // trial a new value of c4(T,L,N). - input.Coef.trial_c4( T, L, N, ie); - - // calculate the spillage according to the new c4. - for (int is = 0; is < STRNUM; is++) - { - input.SV.value[is] = Level.get_spillage(is, ic, ie); - } - - // flag1 is about spillage can be accepted. - // flag2 is about kinetic energy can be accepted. - static bool accept_flag1 = false; - static bool accept_flag2 = false; - - //================================================================ - // STEP 1 : - //================================================================ - if( states == "Spi" ) - { - // 0 means get old value, 1 means get new value. - accept_flag1 = this->accept( input.SV.cal_defined_value(0), input.SV.cal_defined_value(1), temperature ); - accept_flag2 = true; - } - //================================================================ - // STEP 2 - //================================================================ - else - { - // make sure the new spillage value is in the range. - // otherwise, we don't even calculate the kinetic energy. - if( input.SV.cal_defined_value(1) < this->min_spillage * this->kappa) - { - // spillage is in the range, condition one ok! - accept_flag1 = true; - - double *c4tmp = new double[Level.ne]; - for(int ie2=0; ie2Psi2.norm_c4( c4tmp, L ); - - // and then calculate the new set of kinetic energy. - for(int ie2=0; ie2Psi2.jjnorm(L,ie2);//In Rydberg Unit. - } - } - else if(states=="Ecut") - { - value2 = this->Psi2.get_ecut( c4tmp, L ); - } - - // judge here - accept_flag2 = this->accept( this->kin_last[ic], value2, this->kin_temp[ic] ); - if(accept_flag2) - { - kin_last[ic] = value2; - } - - delete[] c4tmp; - } - else - { - accept_flag1 = false; - } - } - - if (accept_flag1 && accept_flag2) - { - ++update_number; - for (int is = 0; is< STRNUM; is++) - { - Level.updateQS( is ); // (1) update Soverlap and Qoverlap for each structure, - // S matrix and Q matrix has changed due to the change - // of c4 - } - - input.SV.update_value();// (2) update spillage value - - for(int is=0; is " << states << "Temp " << setw(15) - //<< istep+1 << "\n" ; -// << " SpiVal" -// << setprecision(6) -// << setiosflags(ios::fixed) -// << setw(15) << input.SV.cal_defined_value(0); - for(int ic=0; ic< this->nchi; ic++) - { - ofs_running << setw(4) << istep+1 << Level.wayc[ic].spd; - - ofs_running << setprecision(3) - << setiosflags(ios::scientific) - << setw(10)<< this->kin_temp[ic]; - - ofs_running << setprecision(10) - << setiosflags(ios::fixed) - << setw(20)<< this->kin_last[ic] << endl; - } - } - } -// } - - // because we choose c4 randomly between -0.1~0.1 - // so we need to normalize the set of c4 after a few - // steps, here I choose a proper number: 50 - // you can change on you own, but please notice it can't - // be too small, because we need to update all Q and S - // matrix after this normalization, which may affect the - // speed of the program. You can't choose too large, - // because it makes the update not efficient. - if ( (istep % 50 == 0 && istep !=0 ) || istep == nsteps_now-1) - { - // use to describe the real space mesh. - // don't need to choose too accuray, because - // it may affect the speed of running. - // you can change on your own, too. - double dr = 0.01; // a.u. - - // norm ic for all radial wave functions. - // after this call, all c4 will change/update. - // but the spillage will not change. - // (because we just normalize the wavefunctions). - Calculate_C4::norm_ic( - input.Coef.C4, - input.Coef.ntype, - input.Coef.lmax, - input.Coef.nmax, - input.Coef.enumber, - input.Coef.tolerence, - input.Coef.rcut, - dr); - - // get new set of C4, so we copy the set of C4 - // to C4_old. This will also not affect the - // spillage value. - input.Coef.copy_c4_to_old(); - - // for each structure, we need to update their - // Q matrix and S matrix, which may be time - // consuming. - for (int is = 0; is < STRNUM; is++) - { - Level.init_QS_matrix(is); - } - } - timer::tick("Metropolis", "move_one_step"); - return; -} - -double Metropolis::Boltzmann_dist(const double &value, const double &t) -{ - static const double small = 1.0e-20; - assert(t > small); - assert(value > 0.0); -// cout << "\n value = " << value; -// cout << "\n Boltzmann_dist = " << exp( -value/t ); - return exp(-value / t); -} - -void Metropolis::update_t(void) -{ - if(this->states == "Spi") - { - this->temperature *= this->spi_rate; -// cout << " New Temperature for spillage = " << temperature << endl; - } - else if(this->states == "Kin"||states=="Ecut") - { - // mohan add high 2009-11-05 - double high = 0.0; - for(int ic=0; ic< this->nchi; ic++) - { - this->kin_temp[ic] *= this->kin_rate; - high = std::max( this->kin_temp[ic], high ); - } - - for(int ic=0; ic< this->nchi; ic++) - { - this->kin_temp[ic] = high; - ofs_running << setprecision(6) << setiosflags(ios::scientific) - << " Temperature for orbital " << ic+1 << " = " << kin_temp[ic] << endl; - } - - ofs_running << " new kappa=" << kappa << endl; - } - return; -} - -bool Metropolis::accept( const double &v_old, const double &v_new, const double &temperature_in) -{ - assert(temperature_in > 0.0); - this->prob_old = v_old; - this->prob_new = v_new; - -// cout << "\n v_new = " << v_new; -// cout << "\n v_old = " << v_old; -// cout << "\n t = " << temperature_in; - - const double deltav = v_new - v_old; - - if ( deltav < 0.0 ) - { - return 1; // accept - } - else if ( deltav > 0.0 ) - { - const double p = Metropolis::Boltzmann_dist(v_new - v_old, temperature_in); - const double r = Random::between0and1(); - - if (r < p) return 1; // accept - if (r >= p) return 0; // reject - } - - return 0; -} diff --git a/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_spillage/Metropolis.h b/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_spillage/Metropolis.h deleted file mode 100644 index 5ae6558572..0000000000 --- a/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_spillage/Metropolis.h +++ /dev/null @@ -1,85 +0,0 @@ -#ifndef METROPOLIS_H -#define METROPOLIS_H - -#include "SpillageStep.h" -#include "Psi_Second.h" // use to calculaet oscillation - -class Metropolis -{ - public: - Metropolis(); - ~Metropolis(); - - void init(void); - - void move_various_temperature(SpillageStep &SS); - - void move_one_step(const int &itemp, const int &istep, SpillageStep &Level, const int &nsteps_now); - - bool accept(const double &v_old, const double &v_new, const double &temperature_in); - - void update_t(void); - void reset_temperature(const int &istep); - - - // (1) start temperature - const double& get_spi_ini_temp(void) const {return spi_ini_temp;} - const double& get_kin_ini_temp(void) const {return kin_ini_temp;} - - // (2) cooling rate for each new temperature - const double& get_spi_rate(void) const { return spi_rate;} - const double& get_kin_rate(void) const { return kin_rate;} - - // (3) number of temperature - const int& get_spi_ntemp(void) const { return spi_ntemp;} - const int& get_kin_ntemp(void) const { return kin_ntemp;} - - // (4) number of steps in each temperature - const int& get_spi_nsteps(void) const { return spi_nsteps;} - const int& get_kin_nsteps(void) const { return kin_nsteps;} - - - Psi_Second Psi2; - - private: - - // (1) - double spi_ini_temp; // initial temperature for spillage. - double kin_ini_temp; // initial temperature for kinetic energy. - - // (2) - double spi_rate; // decrease rate for spillage value - double kin_rate; // decrease rate for kinetic energy - - // (3) - int spi_ntemp; // number of temperatures (for spillage) - int kin_ntemp; // number of temperatures (for kinetical energy) - - // (4) - int spi_nsteps; // number of steps per temperature for spillage - int kin_nsteps; // number of steps per temperature for kinetical energy - - - double temperature; - double kappa; // mohan add 2009-10-11 - double delta_kappa; // mohan add 2009-10-31 - int try_kappa; - - double min_spillage; // mohan add 2009-10-15 - double *kin_last; // mohan add 2009-10-15 - double *kin_temp; // mohan add 2009-10-15, temperature for each orbital. - string states; // mohan add 2009-10-15 - int nchi; // mohan add 2009-10-15 - int output_each_istep; // mohan add 2009-10-16 - - double prob_new; - double prob_old; - - static double Boltzmann_dist( const double &value, const double &t ); - int test; - int random_c4number; - - -}; - -#endif diff --git a/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_spillage/MultiZeta.cpp b/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_spillage/MultiZeta.cpp deleted file mode 100644 index 39f103e0b8..0000000000 --- a/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_spillage/MultiZeta.cpp +++ /dev/null @@ -1,425 +0,0 @@ -#include "MultiZeta.h" -#include "SpillageStep.h" -#include "Out_Orbital.h" -#include "../src_parallel/parallel_common.h" -#include "tools.h" - -MultiZeta::MultiZeta() -{ - test = 0; // output function name - Level = new SpillageStep[1]; - lmax_type = new int[1]; -} - -MultiZeta::~MultiZeta() -{ - delete[] Level; - delete[] lmax_type; -} - -// be called in main.cpp program. -void MultiZeta::init(void) -{ - TITLE(ofs_running,"MultiZeta","init"); - //============================= - // nlevel : optimization levels - //============================= - for (int is=0; isilevel = is+1;// 0 means level 1. - - // mohan add 2009-09-25 - //input.Coef.accumulate_num_zero(); - - // if start temperature is different for each level - // ( I don't think this is a very good idea for high level orbitals!! - // mohan note:2009-8-20, it's better to make temperature from "high enough" to - // "low enough" for each level) - metro.reset_temperature( is ); - - this->Level[is].ilevel = is; - this->Level[is].set_nchi(); - this->Level[is].set_nwfc(); - this->Level[is].set_iw00();// to get Sq1q2 - this->Level[is].allocate_data( 0 ); // to get Qin - - - // if is=0, means it's the first time, spillage0 = 1.0; - if (is==0) - { - for (int istr=0; istrLevel[is].data[istr].spillage0 = 1.0; - } - } - else if (is>0) - { - for (int istr=0; istrLevel[is].data[istr].spillage0 = input.SV.value_old[istr]; - } - cout << "\n Orthogonal......." << endl; - ofs_running << "\n Orthogonal......." << endl; - //**************************************** - // (2): Orthogonal to get new Bloch space! - // This subroutine is very important. - //**************************************** - Orth.start( this->Level[is-1], this->Level[is] ); - } - - if(USEPW) - { - PW.allocate_psi1d(is); - PW.allocate_psi3d(is); - } - - for (int istr=0; istrLevel[is].data[istr].initQS(); - this->Level[is].init_QS_matrix(istr); - input.SV.value_old[istr] = this->Level[is].get_spillage(istr, 0, 0); - } - - cout << "\n Initial Spillage Value at this Level: " << endl; - // output spillage value - input.SV.out(); - cout << endl; - - //******************************************************************* - // main part: Use Metropolis algorithm, move different temperature, - //******************************************************************* - this->metro.move_various_temperature( this->Level[is]); - - // save spillage value for each level - input.SV.save_level(is); - - this->saveC(); - - } - - return;; -} - - - -// read in paramters from BLOCK , called by MultiZeta::init(); -void MultiZeta::set_levels(void) -{ - TITLE(ofs_running,"MultiZeta","set_levels"); - - bool begin = false; - - if(MY_RANK==0) - { - if ( SCAN_BEGIN(input.ifs, "") ) begin = true; - } - -#ifdef __MPI - Parallel_Common::bcast_bool(begin); -#endif - - // read in parameters in BLOCK : 'OPTIMIZE' - if ( begin ) - { - // (1) read in important parameter: nlevel. - // nlevel means the number of orbital shells we need. - - if(MY_RANK==0) - { - READ_VALUE(input.ifs, this->nlevel); - assert(nlevel>-1); - assert(nlevel<100); - } - -#ifdef __MPI - Parallel_Common::bcast_int(nlevel); -#endif - - input.nlevel = this->nlevel; // mohan add 2009-06-09 -// cout << " nlevel = " << nlevel << endl; - OUT(ofs_running,"nlevel",nlevel); - - // (2) init 'SpillageStep' class, each level has - // different parameters. - delete[] this->Level; - this->Level = new SpillageStep[nlevel]; - - string useless; - - if(MY_RANK==0) - { - READ_VALUE(input.ifs, useless); - } - -#ifdef __MPI - Parallel_Common::bcast_string(useless); -#endif - - // (3) read in information concerning each level. - for (int i=0; i>>>> Level=" << i+1 ; - - this->Level[i].set_info(NTYPE); - for (int it=0; it> Level[i].info[it].id //id for this type - >> Level[i].info[it].na //number of atoms. - >> Level[i].info[it].state// new or skip, mohan 2009-08-27 - >> Level[i].info[it].lmax;//lmax in this level - } - -#ifdef __MPI - Parallel_Common::bcast_int(Level[i].info[it].id); - Parallel_Common::bcast_int(Level[i].info[it].na); - Parallel_Common::bcast_string(Level[i].info[it].state); - Parallel_Common::bcast_int(Level[i].info[it].lmax); -#endif - - if (!RESTART && Level[i].info[it].state=="skip") - { - ofs_running << "\n Level = " << i; - ofs_running << "\n it = " << it; - WARNING_QUIT("MultiZeta::set_levels","skip is not available if RESTART = false."); - } - if ( Level[i].info[it].state!="new" && Level[i].info[it].state!="skip") - { - ofs_running << "\n Level = " << i; - ofs_running << "\n it = " << it; - ofs_running << "\n state = " << Level[i].info[it].state << endl; - WARNING_QUIT("MultiZeta::set_levels","new or skip?"); - } - - ofs_running << "\n id=" << Level[i].info[it].id; - ofs_running << " na=" << Level[i].info[it].na; - ofs_running << " lmax=" << Level[i].info[it].lmax; - - if(Level[i].info[it].id==0) - { - ofs_running << " The id of elements should be numbers!" << endl; - ofs_running << " check the id of elements." << endl; - WARNING_QUIT("MultiZeta::set_levels","id=0"); - } - - // lmax=0(s), 1(p), 2(d), 3(f), 4(g) - if (Level[i].info[it].lmax>=5 || Level[i].info[it].lmax<0) - { - ofs_running << "\n lmax=" << Level[i].info[it].lmax << endl; - WARNING_QUIT("MultiZeta::set_levels"," lmax out of range."); - } - - // 'info' stands for "Type_Information" - // init: n, nbase; - // allocate - Level[i].info[it].init(); - - for (int L=0; L>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> - // read in nchi for each L and full/average orbital. - int nz; - string fain; - string combine; - - // read in characters such as : 1/a - input.ifs >> combine; - -#ifdef __MPI - Parallel_Common::bcast_string(combine); -#endif - - //ofs_running << "\n lenght = " << combine.length() << endl; - - // firstly, we need to find the position of the label: '/' - const int index1 = combine.find_first_of("/"); - //ofs_running << "\n index1 = " << index1 << endl; - - // if index1==-1, means the combine didn't contain - // '/' label - if (index1 == -1) - { - // f stands for 'full' - fain = "f"; - // this 'atoi' command change string to int type. - nz = std::atoi( combine.c_str() ); - } - else // mean containing "/" - { - nz = std::atoi( combine.substr(0,index1+1).c_str() ); - // substrate the front int and remain the character. - // the second parameter '1' means the position is 'index+2' - fain = combine.substr(index1+1, 1); - } - - ofs_running << "\n L=" << L; - ofs_running << " Zeta=" << nz; - ofs_running << " fain(FULL/AVERAGE)=" << fain; - //>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> - - // assert number of zeta < 20, you can change on your own, - // typically, we only need nz=2 or 3. - assert( nz < 20 ); - Level[i].info[it].n[L] = nz; - Level[i].info[it].fa[L] = fain; - - // mohan added 2009-05-22 - // i stands for level - // nbase stands for the radial wave functions before - // this level for each L of each atom type. - // (hard to understand, right? Try to figure out!) - // this parameter is very useful. - // nbase provide a base to count radial wave functions. - if (i==0) - { - Level[i].info[it].nbase[L] = 0; - } - else if (i>0) - { - for (int j=0; jlmax_type = new int[NTYPE]; - for (int it=0; itlmax_type[it] = -1; - } - - // sum information from all levels. - NMAXUSED = 0; - for (int k=0; knlevel; k++) - { - for (int it=0; it< NTYPE; it++) - { - this->lmax_type[it] = std::max( this->lmax_type[it], this->Level[k].info[it].lmax ); - LMAXUSED = std::max( LMAXUSED, this->lmax_type[it] ); - NMAXUSED = std::max( NMAXUSED, this->Level[k].info[it].nmax ); - } - } - - // for test. - if (test==2) - { - for (int it=0; it *sum = new std::complex[nbands]; - for (int iw=0; iw first_part = std::complex(0,0); - if(USEPW) - { - const int Mmu = step1.wayd[mu].m; - const int Imu = step1.wayd[mu].i; - PW.calculate_Jlq(ik,iw,ie); - first_part = PW.calculate_Jlq_Phi(ik,mu); - - // if( norm(first_part) > 0.1 ) - // { - // cout << "\n iw=" << iw << " ie=" << ie << " mu=" << mu << " first_part=" << first_part; - // BLOCK_HERE("haha"); - // } - } - else - { - for (int iemu=0; iemu sum = std::complex(0,0); - for(int mu=0; mu first_part = std::complex(0,0); - - for(int iemu=0; iemuversion_information( ofs ); - this->INPUTs_information( ofs ); - this->spillage_information( ofs, mz.ilevel ); - this->metropolis_information( ofs); - this->c4_information( ofs ); - } - this->mkb_information( ofs); - - if(MY_RANK==0) - { - ofs.close(); - } - - return; -} - -void Out_Orbital::version_information( ofstream &ofs ) -{ - ofs << "\n "; - ofs << "\n AUTHOR : Mohan Chen"; - ofs << "\n StartDate : 2009-4-01"; - ofs << "\n LastModify: 2012-6-27"; - ofs << "\n LOCATION : LQCC, Hefei, China"; - ofs << "\n EMAIL : mohan@mail.ustc.edu.cn"; - ofs << "\n Description : Calculate the coefficients C4 of f(r) in Spherical Bessel Basis J(qr)."; - ofs << "\n Formula : C4 = integral(r)[ f(r)*jl(qr)*r^{2} ]dr "; - ofs << "\n P.S. : We default consider f(r) read from file is in the form : ( f(r) * r )."; - ofs << "\n"; -} - -void Out_Orbital::INPUTs_information( ofstream &ofs ) -{ - ofs << "\n\n"; - ofs << "\n" << setw(20) << ECUT << " Energy cutoff(Hartree.)."; - ofs << "\n" << setw(20) << RCUT << " rcut (a.u.)"; - ofs << "\n" << setw(20) << NE << " eigenvalue number( sqrt(ecut*2)*rcut/PI )."; - ofs << "\n" << setw(20) << TOLERENCE << " tolerence to calculate eigenvalue."; - ofs << "\n" << setw(20) << NTYPE << " Number of atom types."; - for(int it=0; it"; -} - -void Out_Orbital::spillage_information( ofstream &ofs, const int &ilevel) -{ - ofs << "\n\n"; - ofs << "\n" << setw(20) << STRNUM << " kinds of structures."; - - // (1) mohan add average information 2010-04-11 - ofs << "\nAverage Spillage Value"; - for(int k=0; k"; - ofs << resetiosflags(ios::scientific); - return; -} - -void Out_Orbital::metropolis_information( ofstream &ofs) -{ - ofs << "\n\n"; - ofs << "\n" << setw(20) << mz.metro.get_spi_ini_temp() << " Start temperature (Kelvin) for spillage minimization."; - ofs << "\n" << setw(20) << mz.metro.get_spi_rate() << " Decreasing rate of temperature."; - ofs << "\n" << setw(20) << mz.metro.get_spi_ntemp() << " Number of different temperature (for spillage)."; - ofs << "\n" << setw(20) << mz.metro.get_spi_nsteps() << " Number of steps for each temperature (for spillage)."; - - ofs << "\n" << setw(20) << mz.metro.get_kin_ini_temp() << " Start temperature (Kelvin) for kinetical energy minimization."; - ofs << "\n" << setw(20) << mz.metro.get_kin_rate() << " Decreasing rate of temperature."; - ofs << "\n" << setw(20) << mz.metro.get_kin_ntemp() << " Number of different temperature (for kinetical)."; - ofs << "\n" << setw(20) << mz.metro.get_kin_nsteps() << " Number of steps for each temperature (for kineitcal)."; - ofs << "\n"; -} - -void Out_Orbital::c4_information( ofstream &ofs) -{ - ofs << "\n\n"; - ofs << "\n" << setw(20) << NCHIUSED << " Total number of radial orbitals."; - - // use multize parameters: ntype, *lmax_type, l_nchi, ne; - for(int it=0; it"; - return; -} - -void Out_Orbital::mkb_information( ofstream &ofs) -{ - ofs_running << "\n mkb_information." << endl; - if(MY_RANK==0) - { - ofs << "\n\n"; - ofs << "\n" << setw(20) << mz.nlevel << " Total number of orbitals optimized levels." ; - } - - double sum0 = 0.0; - double *sum1 = new double[NBANDS]; - ZEROS(sum1, NBANDS); - - int bands_start; - int bands_end; - int bands_number; - - if (BANDS_CONTROL) - { - bands_start = BANDS_START; - bands_end = BANDS_END; - bands_number = bands_end - bands_start; - } - else - { - bands_start = 0; - bands_end = NBANDS; - bands_number = bands_end - bands_start; - } - - ofs << "\nBands start from " << bands_start; - ofs << "\nBands ended at " << bands_end; - ofs << "\nOptimized bands number " << bands_number; - ofs << "\nSpillage per band is " << 1.0/bands_number; - - //ofs << setioflags(ios::fixed); - for(int il=0; il"; - delete[] sum1; - - return; -} diff --git a/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_spillage/Out_Orbital.h b/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_spillage/Out_Orbital.h deleted file mode 100644 index 228ed3857d..0000000000 --- a/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_spillage/Out_Orbital.h +++ /dev/null @@ -1,25 +0,0 @@ -#ifndef OUT_ORBITAL_H -#define OUT_ORBITAL_H - -#include "common.h" - -// output orbital information -class Out_Orbital -{ - public: - Out_Orbital(); - ~Out_Orbital(); - - void write(void); - - private: - void version_information( ofstream &ofs ); - void INPUTs_information( ofstream &ofs); - void spillage_information( ofstream &ofs, const int &ilevel); - void metropolis_information( ofstream &ofs); - void c4_information( ofstream &ofs); - void mkb_information( ofstream &ofs); - -}; - -#endif diff --git a/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_spillage/Plot_Psi.cpp b/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_spillage/Plot_Psi.cpp deleted file mode 100644 index 0c0c9ca19f..0000000000 --- a/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_spillage/Plot_Psi.cpp +++ /dev/null @@ -1,588 +0,0 @@ -#include "Plot_Psi.h" -#include "tools.h" - -Plot_Psi::Plot_Psi() -{ - test=0; - rcut = 0.0; - - dr = 0.01; - - meshU = 0; // uniform mesh. - meshL = 0; // Log mesh. - - rU = new double[1]; - rL = new double[1]; - - xmin = -6; - zed = 4;//charge on the atom - dx = 1.0e-2; - xmax = 10; -} - -Plot_Psi::~Plot_Psi() -{ - delete[] rU; - delete[] rL; -} - -void Plot_Psi::allocate(void) -{ - // (1) read in parameters. - if(SCAN_BEGIN(input.ifs, "")) - { - READ_VALUE(input.ifs, this->dr); - assert( this->dr > 0.0); - - // mohan add 2009-11-23 - READ_VALUE(input.ifs, this->xmin); - READ_VALUE(input.ifs, this->zed);//charge? - READ_VALUE(input.ifs, this->dx); - READ_VALUE(input.ifs, this->xmax); - assert(zed>0.0); - assert(dx>0.0); - assert(xmax>=0.0); - - SCAN_END(input.ifs, ""); - } - - this->ne = NE; - this->meshU = static_cast(RCUT/dr); - this->meshL = ( std::log( xmax * zed ) - xmin ) / dx; - // mesh should be odd. - if(meshU%2==0) meshU++; - if(meshL%2==0) meshL++; - - /* - cout << "\n dr = " << dr; - cout << "\n meshU = " << meshU; - cout << "\n meshL = " << meshL; - - cout << "\n xmin = " << xmin; - cout << "\n zed = " << zed; - cout << "\n dx = " << dx; - cout << "\n xmax = " << xmax; - */ - - // other parameters. - this->rcut = RCUT; - - delete[] rU; - delete[] rL; - rU = new double[meshU]; - rL = new double[meshL]; - - for(int ir=0; irlmax = LMAXUSED; - this->total_nchi = NCHIUSED; - this->psiU.create( this->total_nchi, this->meshU); - this->psiL.create( this->total_nchi, this->meshL); - - return; -} - -// be called in main.cpp -void Plot_Psi::radial_wave_function(void) -{ - TITLE("Plot_Psi","radial_wave_function"); - timer::tick("Plot_Psi","radial_wf"); - - this->allocate(); - - // calculate all psi - int ichi = 0; - for(int it=0; it>>>>>>>>> - //The two formula are exactly same. - //<< setw(15) << abs(c4[ie])*pow(eigen1[ie],2) - //<< setw(15) << abs(c4[ie])*pow((ie+1)*PI/input.inputs.get_rcut(),2); - //<<<<<<<<<< - } - mz.metro.Psi2.ofsk << "\n Total kinetic energy = " << kin_sum; - - double *psi1 = new double[meshU]; - double *psi2 = new double[meshL]; - this->get_psi( meshU, rU, L, psi1, c4, eigen1, 0 ); - this->get_psi( meshL, rL, L, psi2, c4, eigen1, 1 ); - - for(int ir=0; irprint_orbitalsU_used(); - this->print_orbitalsL_used(); - - // mohan add 2010-04-13 - // use uniform grid to establish the energy cutoff of each orbital - ofstream ofs("ORBITAL_ECUT.txt"); - ofs << setprecision(12); - this->dk = 0.01; - this->meshK = 1500;// (1500*0.01)^2 * 2 = 450 Rydberg. - if(meshK%2==0)meshK++; - this->psiUK.create(total_nchi,meshK); - double *psi = new double[meshU]; - ichi = 0; - for(int it=0; it " << setw(7) << mz.l_nchi(it,L) << endl; - } - f1 << "---------------------------------------------------------------------------"<psiU(ichi, ir); - } - ++ichi; - } - } - f1.close(); - } - return; -} - -void Plot_Psi::print_orbitalsL_used(void)const -{ - //==================================== - // (5) - //==================================== - // output orbital for standard use form - int ichi = 0; - // because we can't read in r = 0 term now. - for(int it=0; itpsiL(ichi, ir); - } - ++ichi; - } - } - f1.close(); - } - return; -} - - - -void Plot_Psi::get_psi( - const int &mesh, - const double *r, - const int &l, - double *psi, - double *c4, - const double *eigen1, bool logmesh)const -{ - // (1) get psi1 - double *jle = new double[mesh]; - double *g = new double[mesh]; // smooth function - - if(SMOOTH) - { - double sigma2 = SIGMA*SIGMA; - for(int ir=0; irrcut)*(r[ir]-this->rcut)/2.0/sigma2) ); - //if(ir==mesh-1) cout << "\n g[" << ir << "]=" << g[ir] << endl; - } - } - - ZEROS(psi,mesh); - for(int ie=0; ie and - // using smooth Jlq, here we output the - // smooth functions. - if(SMOOTH) - { - for(int ir=0; irdr; - } - } - - for(int ir=0; ir0.9900)=" << pow(dk*kmesh_used,2)*2 << endl; - - while(normk*fpi< 0.999 && kmesh_used < this->meshK) - { - kmesh_used += 2; - Mathzone::Simpson_Integral(kmesh_used, functionk, rabk, normk ); - } -// ofs << "Psi(k) norm(0.999)=" << normk * fpi << endl; - ofs << "Ecut(Ry)(norm>0.9990)=" << pow(dk*kmesh_used,2)*2 << endl; - - while(normk*fpi< 0.9999 && kmesh_used < this->meshK) - { - kmesh_used += 2; - Mathzone::Simpson_Integral(kmesh_used, functionk, rabk, normk ); - } -// ofs << "Psi(k) norm(0.999)=" << normk * fpi << endl; - ofs << "Ecut(Ry)(norm>0.9999)=" << pow(dk*kmesh_used,2)*2 << endl; - - ofs << endl; - - delete[] function; - delete[] functionk; - delete[] rabk; - delete[] rab; - delete[] psik; - delete[] jj; - return; -} - diff --git a/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_spillage/Plot_Psi.h b/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_spillage/Plot_Psi.h deleted file mode 100644 index c7d82e4bdf..0000000000 --- a/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_spillage/Plot_Psi.h +++ /dev/null @@ -1,56 +0,0 @@ -#ifndef PLOT_PSI_H -#define PLOT_PSI_H - -#include "common.h" - -class Plot_Psi -{ - public: - Plot_Psi(); - ~Plot_Psi(); - - void radial_wave_function(void); - - private: - - // (1) about uniform mesh. - double dr; - int meshU; // U stands for uniform. - int meshL;// L stands for log. - double* rU;// uniform mesh. - double* rL;// log mesh. - int meshK; - double dk;//classic bug, change dk to 'int' type. then see .... - - // (2) about logmesh. - double xmin; - double zed; - double dx; - double xmax; - - // (3) about the wave functions. - matrix psiU; // sum c*j(l,x) - matrix psiL; // - matrix psiUK; - - int total_nchi; - double rcut; - int lmax; - int ne; - int test; - - void allocate(void); - - // mohan add smooth, sigam and rcut 2009-08-28 - void get_psi( const int &mesh, const double *r,const int &l, - double *psi1, double *c4, const double *eigen1, bool logmesh)const; - - void print_orbitals_plot(void)const; - void print_orbitalsU_used(void)const; - void print_orbitalsL_used(void)const; - - // mohan add 2010-04-13 - void establish_ecut( ofstream &ofs, const int &ik, double *psi, const int &L); -}; - -#endif diff --git a/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_spillage/Psi_Second.cpp b/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_spillage/Psi_Second.cpp deleted file mode 100644 index c23068e3ee..0000000000 --- a/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_spillage/Psi_Second.cpp +++ /dev/null @@ -1,333 +0,0 @@ -#include "Psi_Second.h" -#include "Calculate_C4.h" -#include "tools.h" - -Psi_Second::Psi_Second() -{ - test=0; - r = new double[1]; - rab = new double[1]; - psi = new double[1]; - psi_first = new double[1]; - psi_second = new double[1]; - eigen1 = new double[1]; - os_position = new double[100]; - below_max_os = new bool[1]; - count = 0; -} - -Psi_Second::~Psi_Second() -{ - delete[] r; - delete[] rab; - delete[] psi; - delete[] psi_first; - delete[] psi_second; - delete[] eigen1; - delete[] os_position; - delete[] below_max_os; -} - -void Psi_Second::init( - ifstream &ifs, - const int &ne_in, - const int &lmax_in, - const double &rcut_in, - const int &total_nchi_in, - const double &tolerence) -{ - TITLE("Psi_Second","init"); - - this->dr = KINETIC_DR; - assert( dr > 0.0); - cout << "\n KINETIC_DR=" << dr; - -// this->start = 5; // start away from 0, which may be some strange oscillation. - this->start = 1; // mohan fix 2010-04-16 - - // number of Jlq used. - this->ne = ne_in; - // lmax needed. - this->lmax = lmax_in; - // Cutoff radius. - this->rcut = rcut_in; - // Total number of radial wave functions. - this->total_nchi = total_nchi_in; - - this->mesh = static_cast(this->rcut/this->dr); - if(this->mesh%2==0) this->mesh++; - - if(test==2) - { - cout << "\n ne=" << ne; - cout << "\n lmax=" << lmax; - cout << "\n mesh=" << mesh; - cout << "\n total_nchi=" << total_nchi; - cout << "\n dr=" << dr; - } - - // init psi matrix, generate eigenvalue matrix - // this eigenvalue will be used in many functions. - this->eigenvalue.create( this->lmax+1, this->ne); - this->jjnorm.create( this->lmax+1, this->ne); - - delete[] this->eigen1; - this->eigen1 = new double[ne]; - - delete[] this->r; - delete[] this->rab; - delete[] this->psi; - delete[] this->psi_first; - delete[] this->psi_second; - delete[] this->below_max_os; - delete[] this->os_number; - - this->r = new double[mesh]; - this->rab = new double[mesh]; - this->psi = new double[mesh]; - this->psi_first = new double[mesh]; - this->psi_second = new double[mesh]; - - this->below_max_os = new bool[total_nchi]; - this->os_number = new int[total_nchi]; - - for(int ir=0; irne, - this->eigenvalue, - this->lmax, - this->rcut, - tolerence); - - // (2) to calculate jl(qr) - this->jle = new double**[this->lmax+1]; - double* g; - if(SMOOTH) - { - g = new double[mesh]; - double sigma2 = SIGMA*SIGMA; - for(int ir=0; irrcut)*(r[ir]-this->rcut)/2.0/sigma2) ); - } - } - - for(int l=0; leigen1[ie] = this->eigenvalue(l, ie);} - - // allocate space - this->jle[l] = new double*[ne]; - - for(int ie=0; iene; ie++) - { - this->jle[l][ie] = new double[this->mesh]; - Mathzone::Spherical_Bessel( this->mesh, this->r, this->eigen1[ie], l, jle[l][ie]); - - // (3) to calculate the jjnorm - double* f = new double[mesh]; - for(int ir=0; irjjnorm(l,ie) ); - jjnorm(l,ie)*=4.0*PI; -// cout << "\n jj = " << jjnorm(l,ie); - delete[] f; - - if(SMOOTH) - for(int ir=0; irofso.open("ORBITAL_OSCILATION.txt"); - this->ofsk.open("ORBITAL_KINETIC.txt"); - - return; -} - - -double Psi_Second::get_ecut( double *c4, const int &L) -{ - timer::tick("Psi_Second","get_ecut"); - - static double fpi = 4*PI; - static double sfpi = sqrt(fpi); - static double prefac_k = fpi / pow(2*PI,1.5); - static double dk = 0.01; - static int meshK = 800; // 8*8*2=128Ry - static double* g; - static double* rab; - static double* rabk; - static double* functionk; - static bool init = false; - static double norm; - static double normk; - static double ecut; - - if(!init) - { - if(meshK%2==0) ++meshK; - - g = new double[mesh]; // smooth function - rab = new double[mesh]; - rabk = new double[meshK]; - functionk = new double[meshK]; - if(SMOOTH) - { - double sigma2 = SIGMA*SIGMA; - for(int ir=0; irrcut)*(r[ir]-this->rcut)/2.0/sigma2) ); - } - } - for(int ir=0; ireigen1[ie] = this->eigenvalue(L, ie);} - - ZEROS(psi,mesh); - for(int ie=0; ie0.999)=" << ecut << endl; - - delete[] jj; - delete[] psik; - delete[] function; - timer::tick("Psi_Second","get_ecut"); - return ecut; -} - - -void Psi_Second::norm_c4( double *c4, const int &L) -{ - ZEROS(this->psi,mesh); - for(int ie=0; iejle, mesh); -// Mathzone::Spherical_Bessel( this->mesh, this->r, this->eigen1[ie], L, jle); - - for(int ir=0; irpsi[ir] += c4[ie] * jle[L][ie][ir];} - } - - double* function = new double[mesh]; - for(int ir=0; ir0.0); - - for(int ie=0; ie -// The number of local(ie) orbitals is : nwfc; -// The number of Bloch orbitals is : nbands; -// The number of ie is : ne -// The number of k points : nks; -//========================================================== -void ReadData::OverlapQandS(const string &name) -{ - TITLE(ofs_running, "ReadData", "OverlapQandS"); - - ifstream ifs; - - double* weighttmp = new double[NKSTOT]; - double* carkx = new double[NKSTOT]; - double* carky = new double[NKSTOT]; - double* carkz = new double[NKSTOT]; - ZEROS(weighttmp, NKSTOT); - - if(MY_RANK==0) - { - ifs.open(name.c_str()); - - if (!ifs) - { - cout << "\n Can't find file : " << name; - WARNING_QUIT("ReadData::OverlapQandS","Can't find file."); - } - else - { - cout << " FILE : " << name << endl; - } - - double lat0; - ifs >> lat0; - assert(lat0 == LAT0); - - double e11,e12,e13,e21,e22,e23,e31,e32,e33; - - ifs >> e11 >> e12 >> e13; - ifs >> e21 >> e22 >> e23; - ifs >> e31 >> e32 >> e33; - - assert( e11 == LATVEC.e11); - assert( e12 == LATVEC.e12); - assert( e13 == LATVEC.e13); - assert( e21 == LATVEC.e21); - assert( e22 == LATVEC.e22); - assert( e23 == LATVEC.e23); - assert( e31 == LATVEC.e31); - assert( e32 == LATVEC.e32); - assert( e33 == LATVEC.e33); - - int ntype; - READ_VALUE(ifs, ntype); // 1 - assert(ntype==NTYPE); - - double x,y,z; - for(int it=0; it> x >> y >> z; - } - } - - double tmp_ecutwfc; - double tmp_ecutwfc_jlq; - double tmp_rcut; - - READ_VALUE(ifs, tmp_ecutwfc);// 4 - READ_VALUE(ifs, tmp_ecutwfc_jlq);// 5 - READ_VALUE(ifs, tmp_rcut);// 6 - - assert(tmp_ecutwfc == ECUT); - assert(tmp_ecutwfc_jlq == ECUT_JLQ); - assert(tmp_rcut == RCUT); - - // mohan add 2009-08-28 - // make sure all structures have - // same SMOOTH and SIGMA value! - bool tmp_smooth; - double tmp_sigma; - double tmp_tolerence; - - READ_VALUE(ifs, tmp_smooth); // 7 - READ_VALUE(ifs, tmp_sigma); // 8 - READ_VALUE(ifs, tmp_tolerence); // 9 - - assert(tmp_smooth == SMOOTH); - assert(tmp_sigma == SIGMA); - assert(tmp_tolerence == TOLERENCE); - - int lmaxall, nkstot, nbands, nwfcall, ne; - - READ_VALUE(ifs, lmaxall); // 10 - READ_VALUE(ifs, nkstot);// 11 - READ_VALUE(ifs, nbands);// 12 - READ_VALUE(ifs, nwfcall);// 13 - READ_VALUE(ifs, ne);// 14 - - assert(lmaxall == LMAXALL); - assert(nkstot == NKSTOT); - assert(nbands == NBANDS); - assert(nwfcall == NWFCALL); - assert(ne == NE); - - //========================================== - // if use IBZ k-points, weight is different - // for each k point - //========================================== - // 0 means don't need to search from start. - if( SCAN_BEGIN(ifs,"",0) ) - { - ofs_running << " Kx/Ky/Kz/Kweight" ; - for(int ik=0; ik> carkx[ik] - >> carky[ik] - >> carkz[ik] - >> weighttmp[ik]; - ofs_running << " " << carkx[ik] - << " " << carky[ik] - << " " << carkz[ik] - << " " << weighttmp[ik] << endl; - } - SCAN_END(ifs,""); - } - - double sum = 0; - for(int ik=0; ik",restart,quit) ) - { - USEPW = false; - } - } - -#ifdef __MPI - Parallel_Common::bcast_bool(USEPW); -#endif - - if(USEPW) - { - ofs_running << " USE PLANE WAVE BASIS" << endl; - } - else - { - ofs_running << " USE Q and S matrix" << endl; - } - - if(CALSPI==0) return; - - if(!USEPW) - { - this->Sq1q2 = new ComplexArray[ NKS ]; - for(int ik=0; ikSq1q2[ik].create(NWFCALL, NWFCALL, NE, NE); - } - } - - -#ifdef __MPI - if(!USEPW) - { - const int ndata = NWFCALL * NWFCALL * NE * NE; - double* buffera = new double[ndata]; - double* bufferb = new double[ndata]; - for(int ik=0; ik> buffera[id] >> bufferb[id]; - } - } - //ofs_running << "\n ik=" << ik; - MPI_Status ierror; - const int pool = Pkpoints.whichpool[ik]; - const int iknow = ik - Pkpoints.startk_pool[MY_POOL]; - const int startdata = 0; // this is differnt from Q. - - //ofs_running << " this k point belong to pool : " << pool; - //ofs_running << " my pool : " << MY_POOL << endl; - - if(MY_RANK==0) - { - // always ready to send data to other processors. - if(pool==0) - { - // send copies (nproc - 1). - for(int ip=1; ipSq1q2[iknow].ptr[id + startdata] = std::complex (buffera[id], bufferb[id]); - } - // ofs_running << "\n local data copy "; - } - else - { - // send copys: nproc - for(int ip=0; ipSq1q2[iknow].ptr[id + startdata] = std::complex (buffera[id], bufferb[id]); - } - // ofs_running << "\n receive data end" << endl; - } - else - { - // ofs_running << "\n do nothing"; - } - } - MPI_Barrier(MPI_COMM_WORLD); - } - delete[] buffera; - delete[] bufferb; - }// end begin -#else - assert(NKS==NKSTOT); - if(!USEPW) - { - double a,b; - for (int ik = 0; ik < NKSTOT; ik++) - { - this->Sq1q2[ik].create(NWFCALL, NWFCALL, NE, NE); - - for (int i = 0; i < Sq1q2[ik].getSize(); i++) - { - ifs >> a >> b; - Sq1q2[ik].ptr[i] = std::complex(a,b); - } - } - } -#endif - -// SCAN_END(ifs,""); - - timer::tick("ReadData", "OverlapSq1q2"); - return; -} - -void ReadData::OverlapQ(ifstream &ifs) -{ - if(CALSPI==0) return; -// TITLE("ReadData", "OverlapQ"); - timer::tick("ReadData", "OverlapQ"); - - assert(NKS > 0); - assert(NBANDS > 0); - assert(NWFCALL > 0); - assert(NE > 0); - - this->Qin.create(NKS, NBANDS, NWFCALL, NE); - - ofs_running << " DIMENSION OF Q=" << endl; - OUT(ofs_running,"NKS",NKS); - OUT(ofs_running,"NBANDS",NBANDS); - OUT(ofs_running,"NWFCALL",NWFCALL); - OUT(ofs_running,"NE",NE); - - bool begin = false; - - if(MY_RANK ==0 ) - { - if( SCAN_BEGIN(ifs,"",0) ) - { - begin = true; - } - } - -#ifdef __MPI - Parallel_Common::bcast_bool(begin); -#endif - - - - if(begin) - { - double a,b; -#ifdef __MPI - const int ndata = NBANDS * NWFCALL * NE; - double* buffera = new double[ndata]; - double* bufferb = new double[ndata]; - for(int ik=0; ik> buffera[id] >> bufferb[id]; - } - } - - //ofs_running << "\n ik=" << ik; - - MPI_Status ierror; - const int pool = Pkpoints.whichpool[ik]; - const int iknow = ik - Pkpoints.startk_pool[MY_POOL]; - const int startdata = iknow * ndata; - - //ofs_running << "\n this k point belong to pool : " << pool; - //ofs_running << "\n my pool : " << MY_POOL; - - if(MY_RANK==0) - { - // always ready to send data to other processors. - if(pool==0) - { - // send copies (nproc - 1). - for(int ip=1; ipQin.ptr[id + startdata] = std::complex (buffera[id], bufferb[id]); - } - //ofs_running << "\n local data copy "; - } - else - { - // send copys: nproc - for(int ip=0; ipQin.ptr[id + startdata] = std::complex (buffera[id], bufferb[id]); - } - //ofs_running << "\n receive data end" << endl; - } - else - { - //ofs_running << "\n do nothing"; - } - } - - MPI_Barrier(MPI_COMM_WORLD); - }// endik - delete[] buffera; - delete[] bufferb; -#else - for(int i=0; i> a >> b; - this->Qin.ptr[i] = std::complex( a, b ); - } -#endif - } - - - - //SCAN_END(ifs,""); - - timer::tick("ReadData", "OverlapQ"); - - return; -} - -//========================================================== -// Readin inverse S matrix. -// Sinv is fail to use if C4 change. -//========================================================== -void ReadData::OverlapSinv(const string &name) -{ -// TITLE("ReadData", "OverlapSinv"); - ifstream ifs(name.c_str()); - - if (!ifs) - { - cout << "\n Can't find file : " << name; - cout << "\n But maybe we don't need it."; - return; - } - - assert(NKS > 0); - assert(NWFCALL > 0); - - this->Sinv.create(NKS, NWFCALL, NWFCALL); - - return; - - string tmp; - int row, col; - - for (int i = 0; i < NKS; i++) - { - ifs >> tmp >> row >> col; -// cout << "\n" << tmp << " row=" << row << " col=" << col << endl; - assert(row == NWFCALL); - assert(col == NWFCALL); - - for (int j = 0; j < row; j++) - { - for (int k = 0; k < col; k++) - { - double a,b; - ifs >> a >> b; - Sinv(i,j,k) = std::complex(a,b); - } - } - } - ifs.close(); - return; -} diff --git a/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_spillage/ReadData.h b/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_spillage/ReadData.h deleted file mode 100644 index 4e4d356d4b..0000000000 --- a/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_spillage/ReadData.h +++ /dev/null @@ -1,40 +0,0 @@ -#ifndef ReadData_H -#define ReadData_H - -#include "common.h" - -class ReadData -{ - public: - - ComplexArray Qin; - ComplexArray *Sq1q2; - ComplexArray Sinv; - - //=================================== - // read in data Q= , S= - //=================================== - void OverlapQandS( const string &name); - - //======================================================== - // inverse matrix of S directly, - // used for checking the correctness - // of spillage calculation - //======================================================== - void OverlapSinv( const string &name); - - double *weight; - - private: - void OverlapQ( ifstream &ifs); - void OverlapSq1q2( ifstream &ifs ); - - int test; - - public: - ReadData(); - ~ReadData(); - -}; - -#endif diff --git a/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_spillage/SpillageStep.cpp b/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_spillage/SpillageStep.cpp deleted file mode 100644 index 24aa442be1..0000000000 --- a/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_spillage/SpillageStep.cpp +++ /dev/null @@ -1,1072 +0,0 @@ -#include "SpillageStep.h" -#include "../src_parallel/parallel_reduce.h" -#include "tools.h" - -SpillageStep::SpillageStep() -{ - test = 0; - info = new Type_Information[1]; - data = new Step_Data[1]; - wayc = new Way2c4[1]; - wayd = new Way2Data[1]; -} -SpillageStep::~SpillageStep() -{ - delete[] info; - delete[] data; - delete[] wayc; - delete[] wayd; -} - - -void SpillageStep::set_info(const int &ntype_in) -{ - this->ntype = ntype_in; - cout << "\n Element type = " << ntype; - assert(ntype > 0); - delete[] info; - info = new Type_Information[ntype]; - return; -} - -void SpillageStep::set_nwfc() -{ - TITLE("SpillageStep","set_nwfc"); - assert( ntype > 0); - //=============================== - // (1) generate nwfc, nwfc2 - //=============================== - this->nwfc = 0; - this->nwfc2 = 0; - for (int i=0; iwayd[iw2].ic = ic; - if (test==2) cout << "\n iw2=" << iw2 << " ic=" << ic; - ++iw2; - }// end m - } - else if (info[it].fa[l] == "a") - { - this->wayd[iw2].ic = ic; - ++iw2; - } - ++ic; - }// end n - }// end l - nw_this_type = iw2 - index_copy; - } - else - { - for (int j=index_copy; jwayd[iw2].ic = this->wayd[j].ic; - if (test==2) cout << "\n iw2=" << iw2 << " ic=" << wayd[iw2].ic; - iw2++; - } - } - } - } - - //cout << "\n iw2 = " << iw2; - //cout << "\n nwfc2 = " << nwfc2; - assert(iw2==nwfc2); - return; -} - - -void SpillageStep::set_iw00(void) -{ - //========================= - // (3) generate iw00 - //========================= - - int iw00 = 0; - int iw2 = 0; - for (int it=0; it not equal."); - } - //cout << " type=" << it << " lmax=" << info[it].lmax << endl; - for (int i=0; i< NA[it]; i++) - { - //for (int l=0; l<= mz.lmax_type[it]; l++) - for (int l=0; l<= LMAXALL; l++) // mohan fix bug 2010-08-06 - { - if ( l <= info[it].lmax ) - { - for (int n=0; nwayd[iw2].iw00 = copy;// position to get overlap. - if (test == 2) - { - cout << "\n iw2=" << iw2 << " iw00=" << copy; - } - ++copy; - ++iw2; - } - } - else if ( info[it].fa[l] == "a" ) - { - this->wayd[iw2].iw00 = iw00; // just the start position to get overlap. - ++iw2; - } - } - } - iw00 += 2*l + 1; - } - } - } - - if (iw00!=NWFCALL) - { - cout << "\n iw00=" << iw00 << " NWFCALL=" << NWFCALL; - WARNING_QUIT("SpillageStep::set_iw00","iw00!=input.QS_data[0].nwfc"); - } - assert(iw2==nwfc2); - - return; -} - - -void SpillageStep::set_nchi() -{ - if (test==1)TITLE("SpillageStep","set_nchi"); - assert( ntype >0 ); - //========================= - // (1) generate nchi - //========================= - this->nchi = 0; - for (int i=0; i 0 ); - - delete[] this->data; - this->data = new Step_Data[ STRNUM ]; - this->ne = NE; - - for ( int is=0; isnwfc, - this->nwfc2, - NWFCALL // all read in wave functions number - ); - - if (istep == 0) - { - for (int ik=0; ik 0 ) - { - for(int ik=0; ik< data[is].nks; ik++) - { - for(int ib=0; ib< data[is].nbands; ib++) - { - for(int ie=0; ie< data[is].ne; ie++) - { - data[is].Qin(ik, ib, iw_step, ie) = input.QS_data[is].Qin(ik, ib, iw, ie); - } - } - } - if(test==2)cout << "\n iw_step=" << iw_step << " iw=" << iw; - iw_step++; - } - } - iw++; - } - } - } - } - */ -// cout << "\n iw_step = " << iw_step; -// cout << "\n iw = " << iw; - } - - return; -} - -void SpillageStep::init_QS_matrix( const int &is) -{ - if (test==1)TITLE("SpillageStep","init_QS_matrix"); - - if (USEPW) - { - // notice! calculate_psi1d must consistent - // with psi3d in the same init_QS_matrix - // function. because the init_QS_matrix - // may be called in two differnt places. - PW.calculate_psi1d(); - } - - for (int ik = 0; ik < this->data[is].nks; ik++) - { - if (USEPW) - { - PW.calculate_psi3d(ilevel, ik); - } - - this->data[is].Soverlap[ik].zero_out(); - this->data[is].Qoverlap[ik].zero_out(); - // init Q matrix - for (int ib = 0; ib < this->data[is].nbands; ib++) - { - for (int iw = 0; iw < this->data[is].nwfc2; iw++) - { - const int jw = this->wayd[iw].iw00; - const int T = this->wayd[iw].type; - const int L = this->wayd[iw].L; - const int N = this->wayd[iw].N; - for (int ie=0; iedata[is].ne; ie++) - { - //>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> - // if use 'full orbitals' - if ( this->wayd[iw].average == false) - { - data[is].Qoverlap[ik](iw,ib) += - input.Coef.C4( T, L, N, ie ) * - data[is].Qin(ik, ib, jw, ie); - } - else// if use 'average orbitals' - { - const int nofm = 2*L+1; // number of m - std::complex avalue = std::complex(0.0, 0.0); - - for (int m=0; m< nofm; m++) - { - avalue += data[is].Qin(ik, ib, jw+m, ie); - } - avalue /= nofm; - - data[is].Qoverlap[ik](iw,ib) += - input.Coef.C4( T, L, N, ie ) * avalue; - } - //>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> - } - } - } - - // init S matrix - for (int iw=0; iwwayd[iw].type; - const int L1 = this->wayd[iw].L; - const int N1 = this->wayd[iw].N; - const int iw001 = this->wayd[iw].iw00; - - //>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> - for (int iw2 = iw; iw2 < nwfc2; iw2++) - { - const int T2 = this->wayd[iw2].type; - const int L2 = this->wayd[iw2].L; - const int N2 = this->wayd[iw2].N; - const int iw002 = this->wayd[iw2].iw00; - - if (USEPW) - { - this->data[is].Soverlap[ik](iw, iw2) = PW.calculateS(iw, iw2, ik); -#ifdef __MPI - Parallel_Reduce::reduce_complex_double_pool(this->data[is].Soverlap[ik](iw, iw2)); -#endif - } - else - { -// double value = 0.0; - for (int ie = 0; ie < ne; ie++) - { - for (int ie2 = 0; ie2 < ne; ie2++) - { - //>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> - // case 1 - if ( !wayd[iw].average && !wayd[iw2].average) - { - this->data[is].Soverlap[ik](iw, iw2) += - input.Coef.C4( T1, L1, N1, ie ) * - input.Coef.C4( T2, L2, N2, ie2) * - input.QS_data[is].Sq1q2[ik](iw001, iw002, ie, ie2); - } - // case 2 - else - { - std::complex avalue = std::complex(0.0, 0.0); - // case 21 - if ( wayd[iw].average && wayd[iw2].average) - { - for (int m1=0; m1<2*L1+1; m1++) - { - for (int m2=0; m2<2*L2+1; m2++) - { - avalue += input.QS_data[is].Sq1q2[ik](iw001+m1, iw002+m2, ie, ie2); - } - } - avalue /= ((2*L1+1) * (2*L2+1)); - } - // case 22 - if ( !wayd[iw].average && wayd[iw2].average) - { - for (int m2=0; m2<2*L2+1; m2++) - { - avalue += input.QS_data[is].Sq1q2[ik](iw001, iw002+m2, ie, ie2); - } - avalue /= (2*L2+1); - } - // case 23 - if ( wayd[iw].average && !wayd[iw2].average) - { - for (int m1=0; m1<2*L1+1; m1++) - { - avalue += input.QS_data[is].Sq1q2[ik](iw001+m1, iw002, ie, ie2); - } - avalue /= (2*L1+1); - } - this->data[is].Soverlap[ik](iw, iw2) += - input.Coef.C4( T1, L1, N1, ie ) * - input.Coef.C4( T2, L2, N2, ie2) * - avalue; - //>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> - } - }// ie2 - }// ie - }// iw - -// if(iw==3) -// { -// ofs_running << "\n iw=" << iw << " iw2=" << iw2 << " S[" << ik << "]=" << this->data[is].Soverlap[ik](iw, iw2); -// } - }// ib - //>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> - }//ik - - -// if(ik==0) -// { -// PRINTCM("S", data[is].Soverlap[ik]); -// PRINTCM("Q", data[is].Qoverlap[ik]); -// } - - // because S has symmetry : S^{+} = S -// for(int iw=0; iwdata[is].inverse.using_zpotrf(this->data[is].Soverlap[ik]); - // notice : only half A is stored!!! - this->data[is].Sinv[ik] = this->data[is].inverse.A; - //if(ik==0) - //PRINTCM("init_QS_matrix :: Sinv",data[is].inverse.A); - } - - return; -} - -// (1) Calculate The Spillage Value -// (2) For each Coefficient(type,l,n,ie) changed orbital. -double SpillageStep::get_spillage( - const int &is, // index of structure - const int &ic, // index of orbitals: (type,l,n) - const int &ie // index of eigenvalue of Jlq -) -{ - double spillage; // not need to initialized. - double fill = 0.0; - Step_Data* Stru = &this->data[is]; - - // mohan add 2010-05-02 - // (1) this part is to control the number of - // bands needed to be performed. - static int bands_start; - static int bands_end; - static int bands_number; - - if (BANDS_CONTROL) - { - bands_start = BANDS_START; - bands_end = BANDS_END; - assert(BANDS_END <= Stru->nbands); - bands_number = bands_end - bands_start; - assert(bands_number <= Stru->nbands); - } - else - { - bands_start = 0; - bands_end = Stru->nbands; - bands_number = bands_end - bands_start; - } - - // (2) get new c4 coefficient from ic. - const double c4_new = input.Coef.C4( - this->wayc[ic].type, - this->wayc[ic].L, - this->wayc[ic].N, - ie); - - // (3) get old c4 coefficient. - const double c4_old = input.Coef.C4_old( - this->wayc[ic].type, - this->wayc[ic].L, - this->wayc[ic].N, - ie); - - int unstable = 0; - - if (USEPW) - { - PW.nwfc2 = nwfc2; - PW.update_psi1d(ilevel, ic, ie, c4_new, c4_old); - } - - //ofs_running << "\n ic_now = " << ic << " ie_now=" << ie; - for (int ik = 0; ik < Stru->nks ; ik++) - { - // cout << "ik=" << ik << endl; - // cout << "\n ik = " << ik <<" c4_new=" << c4_new << " c4_old=" << c4_old << " nks=" << Stru->nks << endl; - - // If new Q,S corespodding to the new C4 - // is not accepted. - Stru->Qtrial[ik] = Stru->Qoverlap[ik]; - Stru->Strial[ik] = Stru->Soverlap[ik]; - - this->newQ(is, ic, ie, ik, c4_new, c4_old); - - if (USEPW) - { - PW.update_psi3d(ilevel, ic, ik); - - timer::tick("PW_Basis","calculateS"); - - // old version need to change pw_basis too - if (NPROC_IN_POOL==1) - { - for (int mu=0; muwayd[mu ].ic; - const int ic2 = this->wayd[nu].ic; - if (ic1==ic || ic2==ic) - { - this->data[is].Strial[ik](mu, nu) = PW.calculateS(mu, nu, ik); - } - } - } - } - else - { - int count = 0; - for (int mu=0; muwayd[mu].ic; - const int ic2 = this->wayd[nu].ic; - - // a small trick - if (ic1==ic || ic2==ic) - { - PW.save[count] = PW.calculateS(mu, nu, ik); - PW.posmu[count] = mu; - PW.posnu[count] = nu; - //this->data[is].Strial[ik](mu, nu) = PW.calculateS(mu, nu, ik); - //ofs_running << "\n save=" << save[count] << " mu=" << mu << " nu=" << nu; - ++count; - } - } - } -#ifdef __MPI - Parallel_Reduce::reduce_complex_double_pool(PW.save, count); -#endif - for (int index=0; indexdata[is].Strial[ik](PW.posmu[index], PW.posnu[index]) = PW.save[index]; - // ofs_running << "\n mu=" << pos[index*2] << " nu=" << pos[index*2+1] << " save=" << save[index]; - } - } - timer::tick("PW_Basis","calculateS"); - } - else - { - this->newS(is, ic, ie, ik, c4_new, c4_old); - } - - Stru->inverse.using_zpotrf( Stru->Strial[ik] ); -// if(ik==3) -// { -// PRINTCM("S",data[is].Strial[ik]); -// PRINTCM("Q",data[is].Qtrial[ik]); -// PRINTCM("Sinv",Stru->inverse.A); -// } - -// BLOCK_HERE("spillage"); - - // assert all 'Stru' have same k points and bands. - // mohan 2010-05-02 - Stru->Mk[ik] = 0.00; -//>>>>> -// Keep the flexibility to calculate the spillage value -// of different number of bands for different structures - //for (int ib = 0; ib < Stru->nbands; ib++) -//<<<<< - //but now I want to calculate the spillage of given number of bands - //(1)from input, for all steps. (2) for each step. - for (int ib=bands_start; ibMkb_used(ik,ib) = 0.0; - for (int iw = 0; iw < Stru->nwfc2; iw++) - { - for (int iw2 = 0; iw2 < Stru->nwfc2; iw2++) - { - //Mk += (conj(Qtrial[ik](iw, ib)) * sinv(iw, iw2) * Qtrial[ik](iw2, ib)).real(); - if (iw <= iw2) - { - Stru->Mkb_used(ik,ib) += (conj( Stru->Qtrial[ik](iw, ib)) - * Stru->inverse.A(iw, iw2) - * Stru->Qtrial[ik](iw2, ib)).real(); - } - else - { - Stru->Mkb_used(ik,ib) += (conj( Stru->Qtrial[ik](iw, ib)) - * conj( Stru->inverse.A(iw2, iw)) - * Stru->Qtrial[ik](iw2, ib)).real(); - } - } - } - Stru->Mk[ik] += Stru->Mkb_used(ik,ib); - //ofs_running << "ik=" << ik << " ib=" << ib << " Mk=" << Stru->Mk[ik] << endl; - } - - Stru->Mk[ik] /= (double)bands_number; - //cout << endl; - - // in fact this is caused by numerical unstability. - //if (Stru->Mk[ik]*Stru->weight[ik] > upbound)//mohan fix bug 2010-06-14 - if (fill > Stru->spillage0 )//mohan refix bug 2010-06-18 - { - ++unstable; - } - else if (Stru->Mk[ik] < 0.0) - { - ++unstable; - } - else - { - fill += Stru->Mk[ik] * Stru->weight[ik]; - } - }//end ik - - -#ifdef __MPI -// Parallel_Reduce::reduce_int_all(unstable); - if (unstable>0) - { - ofs_running << "\n unstable=" << unstable; - //return Stru->spillage0; - } - Parallel_Reduce::reduce_double_allpool(fill); -#endif - - spillage = Stru->spillage0 - fill; - - if (spillage < 0.0 || spillage > 1.0 || unstable) - { - cout << "\n spillage0 = " << Stru->spillage0; - cout << "\n Type=" << this->wayc[ic].type - << " L=" << this->wayc[ic].L - << " N=" << this->wayc[ic].N; - cout << "\n bands_number = " << bands_number; - - for (int ib=0; ibMkb_used(ik,ib) * Stru->weight[ik]/bands_number; - } - cout << "\n ib=" << ib << " new fill=" << mm; - } - - double sum = 0.0; - for (int ik=0; ikMk[ik]; - sum += Stru->Mk[ik] * Stru->weight[ik]; - } - cout << "\n sum fill = " << sum; - cout << endl; - QUIT(); - return Stru->spillage0; - } - - return spillage; -} - - -void SpillageStep::newQ( const int &is, const int &ic, const int &ie, const int &ik, - const double &c4_now ,const double &c4_old) -{ -// TITLE("SpillageStep","newQ"); - const double delta = c4_now - c4_old; - for (int iw = 0; iw < nwfc2; iw++) - { - const int jw = this->wayd[iw].iw00; - if ( this->wayd[iw].ic == ic) - { - //>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> - if ( !wayd[iw].average ) - { - // the change of dQ= is due to - // the change of Jlq(iw)=delta(Jlq(iw)) - for (int ib = 0; ib < this->data[is].nbands; ib++) - { - this->data[is].Qtrial[ik](iw, ib) += delta - * this->data[is].Qin(ik, ib, jw, ie); - } - } - else // if use average orbital - { - const int L = wayd[iw].L; - for (int ib = 0; ib < this->data[is].nbands; ib++) - { - std::complex avalue = std::complex(0.0, 0.0); - for (int m=0; m<2*L+1; m++) - { - avalue += this->data[is].Qin(ik, ib, jw+m, ie); - } - avalue /= (2*L+1); - this->data[is].Qtrial[ik](iw, ib) += delta * avalue; - } - } - //>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> - } - } - return; -} - - -void SpillageStep::newS( - const int &is, const int &ic, const int &ie, const int &ik, - const double &c4_now ,const double &c4_old) -{ -// TITLE("SpillageStep","newS"); - // example c = c2, ie2 = ie - //========================================================================================================== - // iw0-s iw1p1 iw2p2 iw3p3 iw4s - // c1 *c2 *c2 *c2 c3 - // ea eb ec ea eb ec ea eb ec ea eb ec ea eb ec - // ea h h h - // iw0-s eb h h h - // c1 ec h h h - //---------------------------------------------------------------------------------------------------------- - // ea h h h - // iw1-p1 *eb h h h ? h ? ? h ? h h h h (? must do because JLq contain k vector) - // *c2 ec h h h - //---------------------------------------------------------------------------------------------------------- - // ea h h h - // iw2-p2 *eb h h h ? h ? h h h h h - // *c2 ec h h h - //---------------------------------------------------------------------------------------------------------- - // ea h h h - // iw3-p3 *eb h h h h h h h h h - // *c2 ec h h h - //----------------------------------------------------------------------------------------------------------- - // ea h h h - // iw4-s eb h h h - // c3 ec h h h - //------------------------------------------------------------------------------------------------------------ - // ea h h h - // iw5-p1 eb . . . - // c4 ec . . . - //----------------------------------------------------------------------------------------------------------- - // ea - // iw6-p2 eb - // c4 ec - //-------------------------------------------------------------------------- - // ea - // iw7-p3 eb - // c4 ec - // - // (e1) - //========================================================================== - //================================================= - // search in all wavefunction ( type, i, l, m, n ) - //================================================= - for (int iw = 0; iw < this->data[is].nwfc2; iw++) - { - const int jw = this->wayd[iw].iw00; - const int ic1 = this->wayd[iw].ic; - const int T1 = this->wayd[iw].type; - const int L1 = this->wayd[iw].L; - const int N1 = this->wayd[iw].N; - // belong to which group of c, eg. p1,p2,p3 may - // have the same ic1. - //============================================= - // search in all other eigenvalues (ic1 != ic). - //============================================= - for (int ie1 = 0; ie1 < this->data[is].ne; ie1++) - { - // update for the 'ic' row - if ( ie1 != ie || ic1 !=ic ) - { - for (int iw2 = iw; iw2 < this->data[is].nwfc2; iw2++) - { - const int kw = this->wayd[iw2].iw00; - if (this->wayd[iw2].ic == ic) - { - // >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> - // case 1 - if ( !wayd[iw].average && !wayd[iw2].average) - { - this->data[is].Strial[ik](iw, iw2) += - (c4_now * input.Coef.C4( T1, L1, N1, ie1 ) - - c4_old * input.Coef.C4_old( T1, L1, N1, ie1 ) ) - * input.QS_data[is].Sq1q2[ik](jw, kw, ie1, ie); - } - else // case 2 - { - const int L2 = this->wayd[iw2].L; - std::complex avalue = std::complex(0.0, 0.0); - // case 2.1 - if ( wayd[iw].average && !wayd[iw2].average) - { - for (int m1=0; m1<2*L1+1; m1++) - { - avalue += input.QS_data[is].Sq1q2[ik](jw+m1, kw, ie1, ie); - } - avalue /= (2*L1+1); - } - // case 2.2 - if ( !wayd[iw].average && wayd[iw2].average) - { - for (int m2=0; m2<2*L2+1; m2++) - { - avalue += input.QS_data[is].Sq1q2[ik](jw, kw+m2, ie1, ie); - } - avalue /= (2*L2+1); - } - // case 2.3 - if ( wayd[iw].average && wayd[iw2].average) - { - for (int m1=0; m1<2*L1+1; m1++) - { - for (int m2=0; m2<2*L2+1; m2++) - { - avalue += input.QS_data[is].Sq1q2[ik](jw+m1, kw+m2, ie1, ie); - } - } - avalue /= ( (2*L1+1)*(2*L2+1) ); - } - this->data[is].Strial[ik](iw, iw2) += - (c4_now * input.Coef.C4( T1, L1, N1, ie1 ) - - c4_old * input.Coef.C4_old( T1, L1, N1, ie1 ) ) - * avalue; - } - // >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> - } - } - } - else - { - for (int iw2 = iw; iw2 < this->data[is].nwfc2; iw2++) - { - const int ic2 = this->wayd[iw2].ic; - const int kw = this->wayd[iw2].iw00; - const int T2 = this->wayd[iw2].type; - const int L2 = this->wayd[iw2].L; - const int N2 = this->wayd[iw2].N; - for (int ie2 = 0; ie2 < this->data[is].ne; ie2++) - { - // >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> - if ( !wayd[iw].average && !wayd[iw2].average) - { - this->data[is].Strial[ik](iw, iw2) += - (c4_now * input.Coef.C4( T2, L2, N2, ie2 ) - - c4_old * input.Coef.C4_old( T2, L2, N2, ie2 ) ) - * input.QS_data[is].Sq1q2[ik](jw, kw, ie, ie2); - } - else // case 2 - { - const int L2 = this->wayd[iw2].L; - std::complex avalue = std::complex(0.0, 0.0); - // case 2.1 - if ( wayd[iw].average && !wayd[iw2].average) - { - for (int m1=0; m1<2*L1+1; m1++) - { - avalue += input.QS_data[is].Sq1q2[ik](jw+m1, kw, ie, ie2); - } - avalue /= (2*L1+1); - } - // case 2.2 - if ( !wayd[iw].average && wayd[iw2].average) - { - for (int m2=0; m2<2*L2+1; m2++) - { - avalue += input.QS_data[is].Sq1q2[ik](jw, kw+m2, ie, ie2); - } - avalue /= (2*L2+1); - } - // case 2.3 - if ( wayd[iw].average && wayd[iw2].average) - { - for (int m1=0; m1<2*L1+1; m1++) - { - for (int m2=0; m2<2*L2+1; m2++) - { - avalue += input.QS_data[is].Sq1q2[ik](jw+m1, kw+m2, ie, ie2); - } - } - avalue /= ( (2*L1+1)*(2*L2+1) ); - } - this->data[is].Strial[ik](iw, iw2) += - (c4_now * input.Coef.C4( T2, L2, N2, ie2 ) - - c4_old * input.Coef.C4_old( T2, L2, N2, ie2 ) ) - * avalue; - } - // >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> - } - } - } - } - } - - // PRINTCM("S",Strial[ik]); - return; -} - - - -void SpillageStep::updateQS( const int &is ) -{ -// if(test==1)TITLE("SpillageStep","updateQS"); - for (int ik=0; ik< data[is].nks; ik++) - { - data[is].Qoverlap[ik] = data[is].Qtrial[ik]; - data[is].Soverlap[ik] = data[is].Strial[ik]; - } - return; -} - diff --git a/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_spillage/SpillageStep.h b/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_spillage/SpillageStep.h deleted file mode 100644 index 6b3afcc846..0000000000 --- a/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_spillage/SpillageStep.h +++ /dev/null @@ -1,78 +0,0 @@ -#ifndef SPILLAGE_STEP -#define SPILLAGE_STEP - -#include "common.h" -#include "Step_Data.h" -#include "Type_Information.h" - -// use orbital index to find the information -// of each orbital. -struct Way2Data // dimension : nwfc2 -{ - int type; - int i; // atom index - int L; - int N; - int m; // mohan add 2010-06-16 - - int iw0; // to label , which not include 'N', but not used now, - int iw00; // to - int ic; - - bool average; // mohan add 2009-07-12 -}; - -struct Way2c4 // dimension : nchi -{ - int type; - int L; - int N; - char spd; //mohan add 2010-04-17, the orbital type. -}; - -// (1) It's a memeber of MultiZeta. -// (2) define the operations for each step. -// (3) Especially it defines many complicated index. -// (4) It also defines the main routine to calculate the spillage value. -// (5) Also the update of Q and S matrix using complicated index. -// (6) It also contains four calss: Type_Information; Step_Data; Way2c4; Way2Data; -class SpillageStep -{ - public: - SpillageStep(); - ~SpillageStep(); - - Type_Information *info; // dimension : type - Step_Data *data; - Way2c4 *wayc; - Way2Data *wayd; - - void set_info(const int &ntype_in); - void set_nwfc(void); - void set_iw00(void); - void set_nchi(void); - - // allocate data for current level. - void allocate_data( const int &istep); - - void init_QS_matrix( const int &is); - double get_spillage( const int &is, const int &ic, const int &ie); - void updateQS( const int &is ); - - int ntype; - int nchi; // total radial wave functions(T,L,N); - int nwfc2; - int ne; - int ilevel; - - private: - - void newQ( const int &is, const int &ic, const int &ie, const int &ik, - const double &c4_now, const double &c4_old); - void newS( const int &is, const int &ic, const int &ie, const int &ik, - const double &c4_now ,const double &c4_old); - - int test; - int nwfc; -}; -#endif diff --git a/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_spillage/SpillageValue.cpp b/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_spillage/SpillageValue.cpp deleted file mode 100644 index 78e7146b6a..0000000000 --- a/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_spillage/SpillageValue.cpp +++ /dev/null @@ -1,139 +0,0 @@ -#include "SpillageValue.h" -#include "tools.h" - -SpillageValue::SpillageValue() -{ - dim = 0; - value = new double[1]; - value_old = new double[1]; -} - -SpillageValue::~SpillageValue() -{ - delete[] value; - delete[] value_old; -} - -void SpillageValue::allocate( const int &dim_in ) -{ - this->dim = dim_in; - assert( dim < 100); - assert( dim > 0); - - delete[] value; - delete[] value_old; - value = new double[dim]; - value_old = new double[dim]; - - // assume max step < 100 - const int max_levels = 100; - value_each_level.create(dim, max_levels); - - this->reset(); - - return; -} - -void SpillageValue::reset(void) -{ - for(int i=0; ivalue; - } - else - { - v = this->value_old; - } - - double mv=0.0; - // case 1: // get the largest spillage value. - if( abs(SCHEME_VALUE)==1) - { - for(int i=0; ivalue_each_level(i ,ilevel) = value_old[i]; - } - return; -} diff --git a/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_spillage/SpillageValue.h b/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_spillage/SpillageValue.h deleted file mode 100644 index b0827a60f0..0000000000 --- a/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_spillage/SpillageValue.h +++ /dev/null @@ -1,55 +0,0 @@ -// mohan mddify 2010-05-02 -#ifndef SPILLAGE_VALUE_H -#define SPILLAGE_VALUE_H - -#include "common.h" - -class SpillageValue -{ - friend class Read_INPUT; - - friend class MultiZeta; - // in multizeta, 'value_old' are calculated. - - friend class Metropolis; - // in metropolis, 'value' are set. - - friend class Out_Orbital; - // in OurOrbital, 'value each level' are used. - - public: - - // 1: get new spillage value. - // 0: get old spillage value. - double cal_defined_value( bool get_new_flag); - - void update_value(); - - void out(); - - void save_level( const int &ilevel); - - private: - - // spillage value for each structure. - double *value; - - // the previous spillage value for each structure. - double *value_old; - - // spillage for all structures. - matrix value_each_level; - - // dimension is the number of structures. - // eg. 5 different dimers. - int dim; - - void allocate( const int &dim_in ); - - void reset(); - - SpillageValue(); - ~SpillageValue(); -}; - -#endif diff --git a/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_spillage/Step_Data.cpp b/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_spillage/Step_Data.cpp deleted file mode 100644 index 8bd3d05e26..0000000000 --- a/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_spillage/Step_Data.cpp +++ /dev/null @@ -1,122 +0,0 @@ -#include "Step_Data.h" - -Step_Data::Step_Data() -{ -// TITLE("Step_Data","Step_Data"); - Qoverlap = new ComplexMatrix[1]; - Soverlap = new ComplexMatrix[1]; - Qtrial = new ComplexMatrix[1]; - Strial = new ComplexMatrix[1]; - weight = new double[1]; - Sinv = new ComplexMatrix[1]; - Mk = new double[1]; - test = 0; -} - -Step_Data::~Step_Data() -{ -// TITLE("Step_Data","~Step_Data"); - delete[] Qoverlap; - delete[] Soverlap; - delete[] Qtrial; - delete[] Strial; - delete[] weight; - delete[] Sinv; - delete[] Mk; -} - -void Step_Data::init( - const int &nks_in, - const double* weight_in, - const int &nbands_in, - const int &ne_in, - const int &nwfc_in, - const int &nwfc2_in, - const int &nwfc_all_in) -{ - if(test==1)TITLE("Step_Data","init"); - this->nks = nks_in; - assert(nks > 0); - - delete[] Mk; //mohan add 2010-05-02 - this->Mk = new double[nks]; - ZEROS( Mk, nks ); - - delete[] weight; - this->weight = new double[nks]; - for(int ik=0; iknbands = nbands_in; - - assert(nbands > 0); - this->Mkb.create(nks, nbands);//mohan add 2010-05-02 - this->Mkb_used.create(nks, nbands); - this->Mkb.zero_out(); - this->Mkb_used.zero_out(); - - this->ne = ne_in; - this->nwfc = nwfc_in; - this->nwfc2 = nwfc2_in; - this->nwfc_all = nwfc_all_in; - - - if(test==1) - { - cout << "\n" << setw(10) << "nwfc" - << setw(10) << "nwfc2" - << setw(10) << "nwfc_all"; - - cout << "\n" << setw(10) << nwfc - << setw(10) << nwfc2 - << setw(10) << nwfc_all; - } - - this->allocate(); - - return; -} - -void Step_Data::allocate() -{ - this->Qin.create(nks, nbands, nwfc_all, ne); - return; -} - -// be called in Multi_Zeta.cpp -void Step_Data::initQS(void) -{ - if(test==1) TITLE("Step_Data","initQS"); - assert(nks > 0); - assert(nbands > 0); - assert(nwfc > 0); // nwfc is for , - assert(ne > 0); - - this->inverse.init(nwfc2); - delete[] Qtrial; - delete[] Strial; - delete[] Qoverlap; - delete[] Soverlap; - delete[] Sinv; - - this->Qoverlap = new ComplexMatrix[nks]; - this->Soverlap = new ComplexMatrix[nks]; - this->Qtrial = new ComplexMatrix[nks]; - this->Strial = new ComplexMatrix[nks]; - this->Sinv = new ComplexMatrix[nks]; - - for(int ik=0; ik=-1); - delete[] n; - delete[] nbase; - delete[] fa; - n = new int[lmax+1]; - nbase = new int[lmax+1]; - fa = new string[lmax+1]; - for(int i=0; inmax = 0; - for(int l=0; lnmax = std::max( nmax, n[l]+nbase[l] ); - } -// cout << "\n nmax = " << nmax; - return; -} - -void Type_Information::cal_nw(void) -{ - TITLE("Type_Information","cal_nw"); - // where is this lmax from ? - // in Multi_Zeta, - // read in from file directly - // for each level and each type. - - // be called in SpillageStep. - - // nw2: number of total local orbitals. - // (ia, l, n, m) - // Including multi-zeta orbitals, - // which are made up from same Jl(q). - this->nw2 = 0; - for(int l=0; l 1 - // f orbitals, 7 ==> 1 - } - //cout << "\n nw = " << nw; - } - - // nw: number of overlap we must save. - // doesn't consider n[l], - // the only condition is n[l] > 0 in this atom species. - this->nw = 0; - for(int l=0; l0) - { - nw += (2*l+1)*na; - } - } - - cout << " cal_nw::nw = " << nw; - cout << " cal_nw::nw2 = " << nw2 << endl; - return; -} - - diff --git a/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_spillage/Type_Information.h b/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_spillage/Type_Information.h deleted file mode 100644 index 1a9e0d38f6..0000000000 --- a/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_spillage/Type_Information.h +++ /dev/null @@ -1,41 +0,0 @@ -#ifndef TYPE_INFORMATION_H -#define TYPE_INFORMATION_H -#include "common.h" - -// Information of a particular type -class Type_Information -{ - public: - Type_Information(); - ~Type_Information(); - int id;// index of element periodic table. - - int na;// number of atoms of this type. - - string *fa;// mohan add 2009-07-12 - // f: full orbtial used. - // a: average orbital used. - - string state; // mohan add 2009-08-27, new/skip - // state: new, start Metropolis calculation in this step. - // state: skip, skip this Metropolis calculation, - // used only in case RESTART=TRUE; - - int lmax;// lmax used. - - int *n;// number of radial function for each L. - - int *nbase;// number of radial function of each L, sum up all the steps information before! - - int nmax; - - int nw; - - int nw2; - - void init();// allocate n, nbase, fa; - void cal_nw(); - void cal_nmax(); -}; - -#endif diff --git a/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_spillage/common.cpp b/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_spillage/common.cpp deleted file mode 100644 index 3ec4fd9da4..0000000000 --- a/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_spillage/common.cpp +++ /dev/null @@ -1,143 +0,0 @@ -#include "common.h" -void PRINTCM(const string &s, const ComplexMatrix &m) -{ - const int b1 = m.nr; - const int b2 = m.nc; - cout << "\n" << s << " " << b1 << " " << b2 ; - - if (b1*b2 == 0) return; - - cout << "\n norm : "; - for (int i = 0;i < b1;i++) - { - for (int j = 0;j < b2;j++) - { - if (j % 8 == 0) cout << "\n "; - double norm = ( conj( m(i, j) ) * m(i, j) ).real(); - if( abs(norm) > 1.0e-9) cout<< setw(12) << norm; - else cout< 1.0e-9) cout<< setw(12) << n; - else cout< 1.0e-9) cout<< setw(12) << n; - else cout<> SearchName; - if( SearchName == TargetName) - { - find = true; -// cout << " Find the block:" << TargetName << endl; - break; - } - } - if (!find && quit) - { - cout << "\n Can't find : " << TargetName; - exit(0); - } - return find; -} - -void SCAN_END(ifstream &ifs, const string &TargetName) -{ - string SearchName; - ifs >> SearchName; - if( SearchName != TargetName) - { - cout<<"\n"<<"In SCAN_END, can't find: "<> ok; - -} - -void QUIT(void) -{ - timer::finish(); -#ifdef __MPI - MPI_Finalize(); -#endif - exit(0); -} - -void TITLE(const string &class_name,const string &function_name) -{ -// ofs_running<<"\n\n ==> "< "< "< "< -#include -#include - -#include -#include - -#include -#include -#include -#include -#include - -#include - -#include "../src_tools/mathzone.h" -#include "../src_tools/realarray.h" -#include "../src_tools/intarray.h" -#include "../src_tools/matrix.h" -#include "../src_tools/matrix3.h" -#include "../src_tools/complexmatrix.h" -#include "../src_tools/complexarray.h" -#include "../src_tools/module_external/lapack_connector.h" -#include "../src_tools/Random.h" -#include "../src_tools/timer.h"// added 2009-4-17 -#include "../src_tools/inverse_matrix.h" - -#ifdef __MPI -#include -#endif - -template -static void READ_VALUE(ifstream &ifs, T &v) -{ - ifs >> v; - ifs.ignore(150, '\n'); - return; -} - - -bool SCAN_BEGIN(ifstream &ifs, const string &TargetName, const bool restart=1, const bool quit=true); -void SCAN_END(ifstream &ifs, const string &TargetName); -void TITLE(const string &class_name,const string &function_name); -void TITLE(ofstream &ofs, const string &class_name,const string &function_name); -void PRINTCM(const string &s, const ComplexMatrix &m); -//========================================================== -// GLOBAL FUNCTION : -// NAME : ZEROS -// set elements of u as zero which u is 1_d complex array -//========================================================== -template -void ZEROS(complex *u,const int n) -{ - assert(n!=0); - assert(u!=0); - for(int i=0;i(0.0,0.0); - } - return; -} - -template -void ZEROS(T *u,const int n) -{ - assert(n>=0); - for(int i=0;i -void OUT(ofstream &ofs,const string &name,const T &a) -{ - stringstream name2; - name2 << "[" << name << "]"; - ofs<< " " << setw(40) << name2.str() << " = " << a < -void OUT(ofstream &ofs,const string &name,const T &x, const T &y, const T &z) -{ - stringstream name2; - name2 << "[" << name << "]"; - ofs<< " " << setw(40) <",1,0) ) - { - READ_VALUE( ifs, BANDS_CONTROL); - if (BANDS_CONTROL) - { - READ_VALUE(ifs, BANDS_START); - assert(BANDS_START > 0); - BANDS_START -= 1; - // because the band index start from 0; - READ_VALUE(ifs, BANDS_END); - // BANDS_END need not -=1; - } - - ofs_running << " ATTENTION! YOU SELECT THE BANDS: " << endl; - ofs_running << " BANDS_START=" << BANDS_START+1 << " BANDS_END=" << BANDS_END << endl; - } - - // mohan add 2009-08-26 - if ( SCAN_BEGIN(ifs,"",1,0) ) - { - READ_VALUE( ifs, BLOCK_NE); - assert(BLOCK_NE>=0); - - READ_VALUE( ifs, BLOCK_NE_MIN); - assert(BLOCK_NE >= BLOCK_NE_MIN); - // static_cast( sqrt( 2.0 * ecut )* rcut/3.1415926535897932 ); - - ofs_running << " ATTENTION! YOU SELECT BLOCK_NE=" << BLOCK_NE << endl; - ofs_running << " ALSO BLOCK_NE_MIN=" << BLOCK_NE_MIN << endl; - } - - // mohan add 2009-08-31 - if ( SCAN_BEGIN(ifs,"",1,0) ) - { - double block_ne_energy; - double rcut_in; - READ_VALUE( ifs, block_ne_energy); - READ_VALUE( ifs, rcut_in ); - BLOCK_NE = static_cast( sqrt( 2.0 * block_ne_energy )* rcut_in/3.1415926535897932 ); - assert(BLOCK_NE >= 0); - - ofs_running << "\n Attential! Now, input BLOCK_NE parameter be replaced!" << endl; - ofs_running << "\n New BLOCK_NE = " << BLOCK_NE - << " energy_cut = " << block_ne_energy - << " rcut_in = " << rcut_in << endl; - } - - // mohan add 2009-08-28 - // 1: max spillage value. - // 2: average spillage value. - // 3: add kapa value. - if ( SCAN_BEGIN(ifs,"",1,0) ) - { - READ_VALUE( ifs, SCHEME_VALUE ); - assert(abs(SCHEME_VALUE)>0); - assert(abs(SCHEME_VALUE)<4); - } - - if ( SCAN_BEGIN(ifs,"",1,0) ) - { - READ_VALUE( ifs, NKSTOT ); - assert(NKSTOT>0); -#ifdef __MPI - READ_VALUE( ifs, KPAR ); - assert(KPAR>0); -#endif - } - - }// end ifs - - else if( ifs2 ) - { - if ( SCAN_BEGIN(ifs2,"",1,0) ) - { - READ_VALUE( ifs2, WFC_FILE); - } - - if ( SCAN_BEGIN(ifs2,"",1,0) ) - { - READ_VALUE( ifs2, SMOOTH); - assert(SMOOTH == 0 || SMOOTH == 1); - READ_VALUE( ifs2, SIGMA); - assert(SIGMA >= 0.0); - READ_VALUE( ifs2, ECUT_JLQ); - assert(ECUT_JLQ > 0 && ECUT_JLQ < 1000); - // mohan set the boundaries) - READ_VALUE( ifs2, RCUT); - assert(RCUT > 0 && RCUT < 15); - READ_VALUE( ifs2, TOLERENCE); - assert(TOLERENCE> 0.0); - } - - if ( SCAN_BEGIN(ifs2,"",1,0) ) - { - READ_VALUE( ifs2, NKSTOT ); - assert(NKSTOT>0); -#ifdef __MPI - READ_VALUE( ifs2, KPAR ); - assert(KPAR>0); -#endif - } - }// end ifs2 - } // end my rank0. - - //------------------------------------------------ - // second part - //------------------------------------------------ - // 2.1 - if( ifs ) - { - if (MY_RANK==0) - { - this->read_PW_QS_1(); - } - } - else if ( ifs2 ) - { - this->read_WFC(); - } - - // 2.2 - // bcast NKSTOT. - // bcast the global information. - // need to first bcast KPAR. - this->bcast(); - - // set the parallel information - // about pool. - Pkpoints.init(); - - // init the k point information. - Pkpoints.kinfo(NKSTOT); - - // calculate the local number of k points. -#ifdef __MPI - NKS = Pkpoints.nks_pool[MY_POOL]; -#else - NKS = NKSTOT; -#endif - - OUT(ofs_running,"NKS",NKS); - - // 2.3 - if( ifs ) - { - this->read_PW_QS_2(); - } - else if( ifs2 ) - { - this->read_WFC_2(); - USEPW = 1; - } - - return; -} - -void Read_INPUT::bcast(void) -{ -#ifdef __MPI - Parallel_Common::bcast_bool( BANDS_CONTROL ); - Parallel_Common::bcast_int( BANDS_START ); - Parallel_Common::bcast_int( BANDS_END ); - - Parallel_Common::bcast_int( BLOCK_NE ); - Parallel_Common::bcast_int( BLOCK_NE_MIN ); - - Parallel_Common::bcast_int( SCHEME_VALUE ); - Parallel_Common::bcast_int( KPAR ); - - Parallel_Common::bcast_int( CALSPI ); - Parallel_Common::bcast_bool( RESTART ); - Parallel_Common::bcast_bool( this->output ); - Parallel_Common::bcast_int( STRNUM ); - - OUT(ofs_running,"STRNUM",STRNUM); - - if (MY_RANK!=0) - { - delete[] qsfile; - qsfile = new string[STRNUM]; - } - - for (int i=0; iSV.allocate( STRNUM ); - delete[] this->QS_data; - this->QS_data = new ReadData[ STRNUM ]; - - for (int i=0; iQS_data[i].OverlapQandS( qsfile[i].c_str() ); - //this->QS_data[in].OverlapSinv( sinv_file.c_str() ); // not used - } - - return; -} - -void Read_INPUT::read_PW_QS_1(void) -{ - TITLE(ofs_running, "Read_INPUT","read_PW_QS_1"); - - if ( SCAN_BEGIN(ifs,"") ) - { - // <1> calculate spillage or not. - READ_VALUE( ifs, CALSPI ); - // <1.5> restart from file or not. - // mohan add this function 2009-08-27 - READ_VALUE( ifs, RESTART); - // <2> output file or not. - READ_VALUE( ifs, this->output ); - // <3> number of structures. - READ_VALUE( ifs, STRNUM ); - OUT(ofs_running,"STRNUM",STRNUM); - if (STRNUM<=0) - { - WARNING_QUIT("Read_INPUT::read_PW_QS_1","STRNUM<=0"); - } - - delete[] qsfile; - this->qsfile = new string[STRNUM]; - - // <4> read in each file. - for (int in=0; in< STRNUM; in++) - { - READ_VALUE(ifs, qsfile[in]); - ifstream check(qsfile[in].c_str()); - if (!check) - { - ofs_running << qsfile[in] << endl; - WARNING_QUIT("Read_INPUT","the file is not exist!"); - } - else - { - OUT(ofs_running,"FILE",qsfile[in]); - static bool already_read = false; - if (!already_read) - { - check >> LAT0; - OUT(ofs_running,"LAT0",LAT0); - check >> LATVEC.e11 >> LATVEC.e12 >> LATVEC.e13; - check >> LATVEC.e21 >> LATVEC.e22 >> LATVEC.e23; - check >> LATVEC.e31 >> LATVEC.e32 >> LATVEC.e33; - OUT(ofs_running,"a1",LATVEC.e11,LATVEC.e12,LATVEC.e13); - OUT(ofs_running,"a2",LATVEC.e21,LATVEC.e22,LATVEC.e23); - OUT(ofs_running,"a3",LATVEC.e31,LATVEC.e32,LATVEC.e33); - READ_VALUE(check, NTYPE); - OUT(ofs_running,"NTYPE",NTYPE); - assert( NTYPE > 0 ); - NA = new int[NTYPE]; - LABEL = new string[NTYPE]; - CARPOSX = new double*[NTYPE]; - CARPOSY = new double*[NTYPE]; - CARPOSZ = new double*[NTYPE]; - for(int it=0; it> CARPOSX[it][ia] >> CARPOSY[it][ia] >> CARPOSZ[it][ia]; - OUT(ofs_running,"POS",CARPOSX[it][ia],CARPOSY[it][ia],CARPOSZ[it][ia]); - } - } - - READ_VALUE(check, ECUT); - READ_VALUE(check, ECUT_JLQ); - READ_VALUE(check, RCUT); - READ_VALUE(check, SMOOTH); - READ_VALUE(check, SIGMA); - - READ_VALUE(check, TOLERENCE); - READ_VALUE(check, LMAXALL); - READ_VALUE(check, NKSTOT); - READ_VALUE(check, NBANDS); - READ_VALUE(check, NWFCALL); - READ_VALUE(check, NE); - - OUT(ofs_running,"ECUT(Ry)",ECUT); - OUT(ofs_running,"ECUT_JLQ(Ry)",ECUT_JLQ); - OUT(ofs_running,"RCUT(Bohr)",RCUT); - OUT(ofs_running,"SMOOTH",SMOOTH); - OUT(ofs_running,"SIGMA",SIGMA); - OUT(ofs_running,"TOLERENCE",TOLERENCE); - OUT(ofs_running,"LMAXALL",LMAXALL); - OUT(ofs_running,"NKSTOT",NKSTOT); - OUT(ofs_running,"NBANDS",NBANDS); - OUT(ofs_running,"NWFCALL",NWFCALL); - OUT(ofs_running,"NE",NE); - - if(SMOOTH) assert(SIGMA!=0.0); - - already_read = true; - }//only read once. - check.close(); - } - } - } - return; -} - -void Read_INPUT::read_WFC(void) -{ - TITLE("Read_INPUT","read_WFC"); - - ifstream ifswfc( WFC_FILE.c_str() ); - - if(!ifswfc) - { - cout << " Can't find wfc file : " << WFC_FILE << endl; - WARNING_QUIT("Read_INPUT::read_WFC","Can't find wavefunctions file."); - } - else - { - cout << " Find file: " << WFC_FILE << endl; - } - - if(MY_RANK==0) - { - - ifswfc >> LAT0; - cout << "\n LAT0 = " << LAT0; - ifswfc >> LATVEC.e11 >> LATVEC.e12 >> LATVEC.e13; - ifswfc >> LATVEC.e21 >> LATVEC.e22 >> LATVEC.e23; - ifswfc >> LATVEC.e31 >> LATVEC.e32 >> LATVEC.e33; - cout << "\n a1 = " << LATVEC.e11 << " " << LATVEC.e12 << " " << LATVEC.e13; - cout << "\n a2 = " << LATVEC.e21 << " " << LATVEC.e22 << " " << LATVEC.e23; - cout << "\n a3 = " << LATVEC.e31 << " " << LATVEC.e32 << " " << LATVEC.e33; - READ_VALUE(ifswfc, NTYPE); - cout << "\n NTYPE = " << NTYPE << endl; - assert( NTYPE > 0 ); - NA = new int[NTYPE]; - LABEL = new string[NTYPE]; - CARPOSX = new double*[NTYPE]; - CARPOSY = new double*[NTYPE]; - CARPOSZ = new double*[NTYPE]; - for(int it=0; it IMAG_UNIT = std::complex(0, 1.0); -const std::complex NEG_IMAG_UNIT = std::complex(0,-1.0); -const double PI_HALF = PI / 2.0; -const double SQRT2 = 1.41421356237309504880; - -// read wavefunction -string WFC_FILE = "WAVEFUNC.dat"; - -void DESTROY(void) -{ - if(NTYPE>0) - { - delete[] LABEL; - delete[] NA; - for(int i=0; i0) - { - delete[] CARKX; - delete[] CARKY; - delete[] CARKZ; - } -} - - - diff --git a/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_spillage/tools.h b/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_spillage/tools.h deleted file mode 100644 index 21486a12ae..0000000000 --- a/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_spillage/tools.h +++ /dev/null @@ -1,97 +0,0 @@ -#ifndef TOOL_H -#define TOOL_H - -#include "common.h" -#include "../src_pw/pw_basis.h" -#include "MultiZeta.h" -#include "read_INPUT.h" -#include "../src_parallel/parallel_kpoints.h" // add 2010-06-12 -//plane wave , mohan add 2010-06-14 -extern PW_Basis PW; -extern MultiZeta mz; -extern Read_INPUT input; -extern Parallel_Kpoints Pkpoints; -extern ofstream ofs_running; - -// parallel information -extern int NPROC; // mohan add 2010-06-12 -extern int KPAR; -extern int MY_RANK; -extern int MY_POOL; -extern int NPROC_IN_POOL; -extern int RANK_IN_POOL; - -// global + input information. -extern int NKSTOT; -extern int NKS; -extern int NBANDS; -extern int NWFCALL; -extern int NE; - -// global information -extern int STRNUM; -extern int NTYPE; -extern string *LABEL; -extern int *NA; -extern double **CARPOSX; -extern double **CARPOSY; -extern double **CARPOSZ; -extern Matrix3 LATVEC; - -// plane wave information -extern bool USEPW; -extern double LAT0; - -// k points -extern double *CARKX; -extern double *CARKY; -extern double *CARKZ; - -//orbital + energy cutoff -extern double ECUT; -extern double ECUT_JLQ; -extern double RCUT; -extern bool SMOOTH; // use to make the second derivative of psi is continues. -extern double SIGMA; -extern double TOLERENCE; -extern int LMAXALL; -extern int LMAXUSED; -extern int NMAXUSED; // mohan 2010-06-17 -extern int NCHIUSED; - -// band information -extern bool BANDS_CONTROL; -extern int BANDS_START;//mohan add 2010-05-02 -extern int BANDS_END; - -// other global information -extern int CALSPI; // mohan 2010-06-17 -extern int BLOCK_NE; // if ie < BLOCK_NE, we use this Jlq(ie), mohan add 2009-08-26 -extern int BLOCK_NE_MIN; // mohan add 2009-08-27 -extern bool RESTART; -extern int TEST1; -extern int SCHEME_VALUE; - -extern int ACCEPTANCE_STEPS; // mohan add 2009-10-31 -extern double ACCEPTANCE_HIGH; -extern double ACCEPTANCE_LOW; - -extern double KINETIC_MAX; // mohan add 2009-10-31 -extern double KINETIC_DR; // mohan add 2010-04-12 -extern int OPTIMIZE_METHOD;// mohan add 2010-04-14 - -// constant -extern const double PI; // mohan add 2010-04-16 -extern const double TWO_PI; // mohan add 2010-06-14 -extern const double FOUR_PI; -extern const std::complex IMAG_UNIT; -extern const std::complex NEG_IMAG_UNIT;//mohan add 2010-06-14 -extern const double SQRT_INVERSE_FOUR_PI; -extern const double PI_HALF; -extern const double SQRT2; - -// read wavefunction -extern string WFC_FILE; - -void DESTROY(); -#endif diff --git a/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_tools/Random.h b/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_tools/Random.h deleted file mode 100644 index 32d43e4f63..0000000000 --- a/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_tools/Random.h +++ /dev/null @@ -1,46 +0,0 @@ -#ifndef RANDOM_H -#define RANDOM_H -#include -#include - -class Random -{ - public: - Random(); - ~Random(); - - static void between0and1( double *v, const int &num ) - { - assert( v!= NULL); - assert( num > 1); - for(int i=0; i( std::rand() ) / RAND_MAX; - } - } - - static double betweenMinus2and2(void) - { - return 2.0*betweenMinus1and1(); - } - - static double betweenMinus1and1(void) - { - int a = std::rand() % 2; - if(a==0) return between0and1(); - else if(a==1) return betweenMinus1and0(); - } - - static double between0and1(void) - { - return static_cast( std::rand() )/RAND_MAX; - } - - static double betweenMinus1and0(void) - { - return -static_cast( std::rand() )/RAND_MAX; - } - -}; - -#endif diff --git a/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_tools/complexarray.cpp b/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_tools/complexarray.cpp deleted file mode 100644 index 22519a92c4..0000000000 --- a/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_tools/complexarray.cpp +++ /dev/null @@ -1,175 +0,0 @@ -/******************************************* - * ESCP:Electro-Structure Calculate Package. - ********************************************/ - -#include -#include "complexarray.h" - -int ComplexArray::arrayCount = 0; - -void ComplexArrayAlloc() -{ - cout << "\n Allocation error for ComplexArray " << endl; - exit(0); -} - -ComplexArray::ComplexArray(const int d1,const int d2,const int d3) -{ - dim = 3; - bound1 = (d1 <= 0) ? 1 : d1; - bound2 = (d2 <= 0) ? 1 : d2; - bound3 = (d3 <= 0) ? 1 : d3; - bound4 = 0; - - set_new_handler(ComplexArrayAlloc); - - size = bound1 * bound2 * bound3 ; //* sizeof(float); - - ptr = new std::complex[size](); - assert(ptr != 0); - - ++arrayCount; -} - -ComplexArray::ComplexArray(const int d1,const int d2,const int d3,const int d4) -{ - dim = 4; - bound1 = (d1 <= 0) ? 1 : d1; - bound2 = (d2 <= 0) ? 1 : d2; - bound3 = (d3 <= 0) ? 1 : d3; - bound4 = (d4 <= 0) ? 1 : d4; - - set_new_handler(ComplexArrayAlloc); - - size = bound1 * bound2 * bound3 * bound4 ; //* sizeof(float); - - ptr = new std::complex[size](); - assert(ptr != 0); - - ++arrayCount; -} - -//******************************** -// -// Destructor for class ComplexArray -// -//******************************** -ComplexArray ::~ComplexArray() -{ - freemem(); -} - -void ComplexArray::freemem() -{ - delete [] ptr; - ptr = NULL; -} - -void ComplexArray::create(const int d1,const int d2,const int d3,const int d4) -{ - size = d1 * d2 * d3 * d4; - assert(size>0); - - dim = 4; - - bound1 = d1; - bound2 = d2; - bound3 = d3; - bound4 = d4; - - delete [] ptr; - ptr = new std::complex[size](); - assert(ptr != 0); -} - -void ComplexArray::create(const int d1,const int d2,const int d3) -{ - size = d1 * d2 * d3; - assert(size>0); - - dim = 3; - - bound1 = d1; - bound2 = d2; - bound3 = d3; - bound4 = 1; - - delete [] ptr; - ptr = new std::complex[size](); - assert(ptr != 0); -} - -const ComplexArray &ComplexArray::operator=(const ComplexArray &right) -{ - for (int i = 0;i < size;i++) ptr[i] = right.ptr[i]; - return *this;// enables x = y = z; -} - -const ComplexArray &ComplexArray::operator=(const std::complex &right) -{ - for (int i = 0;i < size;i++) ptr[i] = right; - return *this;// enables x = y = z; -} - -//******************************************************** -// -// overloaded subscript operator for const real Array -// const reference return create an cvakue -// -//******************************************************** -const std::complex &ComplexArray::operator() -(const int ind1,const int ind2,const int ind3)const -{ - const int ind = (ind1 * bound2 + ind2) * bound3 + ind3 ; - return ptr[ind]; -} - - -//******************************************************** -// -// overloaded subscript operator for const real Array -// const reference return creates an cvakue -// -//******************************************************** -const std::complex &ComplexArray::operator() -(const int ind1,const int ind2,const int ind3,const int ind4)const -{ - const int ind = ((ind1 * bound2 + ind2) * bound3 + ind3) * bound4 + ind4; - return ptr[ind]; -} - -//******************************************************** -// -// overloaded subscript operator for non-const real Array -// const reference return creates an lvakue -// -//******************************************************** -complex &ComplexArray::operator()(const int ind1,const int ind2,const int ind3) -{ - const int ind = (ind1 * bound2 + ind2) * bound3 + ind3; - return ptr[ind]; // reference return -} - -//******************************************************** -// -// overloaded subscript operator for non-const real Array -// const reference return creates an lvakue -// -//******************************************************** -complex &ComplexArray::operator()(const int ind1,const int ind2,const int ind3,const int ind4) -{ - const int ind = ((ind1 * bound2 + ind2) * bound3 + ind3) * bound4 + ind4; - return ptr[ind];// reference return -} - -//**************************** -// -// zeroes out the whole array -// -//**************************** -void ComplexArray::zero_out(void) -{ - if (size <= 0) return; - for (int i = 0;i < size; i++) ptr[i] = 0; - return; -} diff --git a/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_tools/complexarray.h b/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_tools/complexarray.h deleted file mode 100644 index 525fb07fc0..0000000000 --- a/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_tools/complexarray.h +++ /dev/null @@ -1,68 +0,0 @@ -/******************************************* - * ESCP:Electro-Structure Calculate Package. - ********************************************/ -#ifndef COMPLEXARRAY_H -#define COMPLEXARRAY_H - -#include -#include -#include -#include -#include - -using namespace std; - -class ComplexArray -{ -public: - complex *ptr; - - ComplexArray(const int d1 = 1 ,const int d2 = 1,const int d3 = 1); - ComplexArray(const int d1, const int d2,const int d3,const int d4); - ~ComplexArray(); - - void create(const int d1,const int d2,const int d3); - void create(const int d1,const int d2,const int d3,const int d4); - - const ComplexArray &operator=(const ComplexArray &right); - const ComplexArray &operator=(const std::complex &right); - - complex &operator()(const int d1,const int d2,const int d3); - complex &operator()(const int d1,const int d2,const int d3,const int d4); - - const std::complex &operator()(const int d1,const int d2,const int d3)const; - const std::complex &operator()(const int d1,const int d2,const int d3,const int d4)const; - - void zero_out(void); - - const int getSize() const - { return size;} - - const int getDim() const - { return dim;} - - const int getBound1() const - { return bound1;} - - const int getBound2() const - { return bound2;} - - const int getBound3() const - { return bound3;} - - const int getBound4() const - { return bound4;} - - static const int getArrayCount(void) - { return arrayCount;} - -private: - int size; - int dim; - int bound1, bound2, bound3, bound4; - static int arrayCount; - - void freemem(); -}; - -#endif // ComplexArray class diff --git a/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_tools/complexmatrix.cpp b/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_tools/complexmatrix.cpp deleted file mode 100644 index 19a81dead9..0000000000 --- a/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_tools/complexmatrix.cpp +++ /dev/null @@ -1,342 +0,0 @@ -//========================================================== -// AUTHOR : Lixin He, Mohan Chen -// LAST UPDATE : 2009-03-23 modify "=" operator -//========================================================== - -#include -#include -#include -#include -#include "complexmatrix.h" - -int ComplexMatrix::mCount = 0; - -// constructor with sizes -ComplexMatrix::ComplexMatrix(int nrows, int ncols) -{ - this->init(nrows, ncols); - ++mCount; -} - -// zero out the ComplexMatrix -void ComplexMatrix::zero_out(void) -{ - for (int i=0; i(0.0,0.0); -} - -/* -void need_more_memory() -{ - cout << "\n Sorry to crash... but the running need more momory! Exit." << endl; - exit(0); -} -*/ - -void ComplexMatrix::init(const int nrows,const int ncols) -{ - this->nr = nrows; - this->nc = ncols; - this->size = nr * nc; -// std::set_new_handler( need_more_memory ); - this->c = new std::complex[size]; - assert(c != 0); - this->zero_out(); -}//mohan the principle:as simple as possible:modify inline 2007-10-13 - -// Copy constructor -ComplexMatrix::ComplexMatrix(const ComplexMatrix &m1) -{ - this->init(m1.nr, m1.nc); - ++mCount; - for(int i=0; isize; i++) c[i] = m1.c[i]; -} - -// deconstructor -ComplexMatrix::~ComplexMatrix() -{ - this->freemem(); -} - -// Free up memory for ComplexMatrix -void ComplexMatrix::freemem(void) -{ - delete[] c; - c = NULL; -} - -// reallocate memory for Complex Matrix -void ComplexMatrix::create(const int nrow,const int ncol) -{ - // because c has been 'new' in init function. - delete[] c; - this->init(nrow, ncol); - return; -} - -void ComplexMatrix::set_as_identity_matrix() -{ - for(int i=0; i(1.0, 0.0); - else c[nc * i + j] = std::complex(0.0, 0.0); - } - } - return; -} - -// Adding matrices, as a friend -ComplexMatrix operator+(const ComplexMatrix &m1, const ComplexMatrix &m2) -{ - ComplexMatrix tm(m1); - tm+=m2; - return tm; -} - -// Subtracting matrices, as a friend -ComplexMatrix operator-(const ComplexMatrix &m1, const ComplexMatrix &m2) -{ - ComplexMatrix tm(m1); - tm-=m2; - return tm; -} - -// Multiplying matrices, as a friend -// mprod = m1 * m2 -ComplexMatrix operator*(const ComplexMatrix &m1, const ComplexMatrix &m2) -{ - assert(m1.nc == m2.nr); - ComplexMatrix mprod(m1.nr, m2.nc); - - complex z; - for (int i = 0;i < m1.nr;i++) - { - for (int j = 0;j < m2.nc;j++) - { - z = std::complex(0,0); - for (int k = 0;k < m1.nc;k++) - { - z += m1(i, k) * m2(k, j); - } - mprod(i, j) = z; - } - } - return mprod; -} - -// Scale a ComplexMatrix -ComplexMatrix operator*(const std::complex &c,const ComplexMatrix &m) -{ - ComplexMatrix sm(m); - for (int i=0 ;i &c) -{ - ComplexMatrix sm(m); - for (int i = 0;i < m.size;i++) sm.c[i] *= c; - return sm; -} - -ComplexMatrix operator*(const double &r,const ComplexMatrix &m) -{ - ComplexMatrix sm(m); - for(int i=0; inr || m.nc!=this->nc) - { - cout << "\n row/col number can't match in ComplexMatrix '=' operator\n"; - cout << " this nr = " << this->nr; - cout << " this nc = " << this->nc; - cout << " in nr = " << m.nr; - cout << " in nc = " << m.nc; - exit(0); - } - else { - this->create(m.nr, m.nc); - } - for(int i=0;isize;i++) c[i] = m.c[i]; - return *this; -} - -ComplexMatrix& ComplexMatrix::operator*=(const std::complex &s) -{ - for (int i = 0;i < this->size;i++) c[i] *= s; - return *this; -} - -// Accumulate to a ComplexMatrix in place -ComplexMatrix& ComplexMatrix::operator+=(const ComplexMatrix &m) -{ - for(int i=0; ic[i] += m.c[i]; - return *this; -} - -// decumulate to a ComplexMatrix in place -ComplexMatrix& ComplexMatrix::operator-=(const ComplexMatrix &m) -{ - for(int i=0; ic[i] -= m.c[i]; - return *this; -} - -// Returns trace of ComplexMatrix -complex trace(const ComplexMatrix &m) -{ - complex tr=complex(0,0); - assert(m.nr == m.nc); - for (int i=0; i &s, - const ComplexMatrix &min, - ComplexMatrix &mout) -{ - assert(min.nr == mout.nr); - assert(min.nc == mout.nc); - for (int j=0; j &s, - ComplexMatrix **min, - ComplexMatrix **mout) -{ - assert(nmat>=0); - for (int i=0; i &s1, - const ComplexMatrix &m1, - const std::complex &s2, - const ComplexMatrix &m2, - ComplexMatrix &mout) -{ - assert(m1.nr == m2.nr); - assert(m1.nr == mout.nr); - assert(m1.nc == m2.nc); - assert(m1.nc == mout.nc); - - for(int i=0; i &s1, - ComplexMatrix **m1, - const std::complex &s2, - ComplexMatrix **m2, - ComplexMatrix **mout) -{ - assert(nmat>0); - for(int i=0; i z; - for(int ic=0;ic z; - for(int ir=0;ir z; - - for (int i = 0;i < m.size;i++) - { - z = m.c[i]; - r += z.real() * z.real() + z.imag() * z.imag(); - } - return r; -} - -// Same for an array of matrices -double abs2(const int nmat, ComplexMatrix **m) -{ - double r = 0.0; - for (int i = 0;i < nmat;i++) - { - r += abs2(*m[i]); - } - return r; -} - -ComplexMatrix transpose(const ComplexMatrix &m, const bool &conjugate) -{ - ComplexMatrix tm(m.nc, m.nr); - if(conjugate) - { - for (int i = 0;i < m.nr;i++) - { - for (int j = 0;j < m.nc;j++) - { - tm(j, i) = conj ( m(i, j) ); - } - } - } - else - { - for (int i = 0;i < m.nr;i++) - { - for (int j = 0;j < m.nc;j++) - { - tm(j, i) = m(i, j); - } - } - } - return tm; -} diff --git a/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_tools/complexmatrix.h b/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_tools/complexmatrix.h deleted file mode 100644 index c8495757cf..0000000000 --- a/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_tools/complexmatrix.h +++ /dev/null @@ -1,105 +0,0 @@ -//========================================================== -// Author : Lixin He, Mohan Chen -// Last Update : 2009-3-8 -//========================================================== -#ifndef COMPLEXMATRIX_H -#define COMPLEXMATRIX_H - -#include -using namespace std; - -class ComplexMatrix -{ - -public: - - complex *c; - int nr; - int nc; - int size; - - //============== - // Constructors - //============== - ComplexMatrix(const int nrows = 1,const int ncols = 1); - - //=================== - // Copy constructor - //================== - ComplexMatrix(const ComplexMatrix &m1); - ~ComplexMatrix(); - - //============ - // Operators - //============ - complex &operator()(const int i,const int j) - { - return c[nc * i + j];//mohan modify in-line 2007-10-1 - } - const std::complex &operator()(const int i,const int j)const - { - return c[nc * i + j];//mohan modify in-line 2007-10-13 - } - - friend ComplexMatrix operator+(const ComplexMatrix &m1, const ComplexMatrix &m2); - friend ComplexMatrix operator-(const ComplexMatrix &m1, const ComplexMatrix &m2); - friend ComplexMatrix operator*(const ComplexMatrix &m1, const ComplexMatrix &m2); - friend ComplexMatrix operator*(const std::complex &s, const ComplexMatrix &m); - friend ComplexMatrix operator*(const ComplexMatrix &m, const std::complex &s); - friend ComplexMatrix operator*(const double &s, const ComplexMatrix &m); - friend ComplexMatrix operator*(const ComplexMatrix &m, const double &s); - ComplexMatrix& operator=(const ComplexMatrix &m); - ComplexMatrix& operator*=(const std::complex &s); - ComplexMatrix& operator+=(const ComplexMatrix &m); - ComplexMatrix& operator-=(const ComplexMatrix &m); - - //================== - // member function: - //================== - void create(const int nrow,const int ncol); - void zero_out(void); - static int& getMCount(void){return mCount;} - void set_as_identity_matrix(void); -private: - - static int mCount; - void freemem(void);//mohan add 2007-11-20 - void init(const int nrows,const int ncols); -}; - -complex trace(const ComplexMatrix &m); -// mohan add 2008-7-1 -double abs2_row(const ComplexMatrix &m,const int ir); -// mohan add 2008-7-1 -double abs2_column(const ComplexMatrix &m,const int ic); -double abs2(const ComplexMatrix &m); -double abs2(const int nmat, ComplexMatrix **m); - -ComplexMatrix transpose(const ComplexMatrix &m, const bool &conjugate); - -void scale_accumulate( - const std::complex &s, - const ComplexMatrix &min, - ComplexMatrix &mout); - -void scale_accumulate( - const int &nmat, - const std::complex &s, - ComplexMatrix **min, - ComplexMatrix **mout); - -void scaled_sum( - const std::complex &s1, - const ComplexMatrix &m1, - const std::complex &s2, - const ComplexMatrix &m2, - ComplexMatrix &mout); - -void scaled_sum( - const int &nmat, - const std::complex &s1, - ComplexMatrix **m1, - const std::complex &s2, - ComplexMatrix **m2, - ComplexMatrix **mout); -#endif diff --git a/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_tools/intarray.cpp b/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_tools/intarray.cpp deleted file mode 100644 index 0f8cbf486c..0000000000 --- a/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_tools/intarray.cpp +++ /dev/null @@ -1,212 +0,0 @@ -/******************************************* - * ESCP:Electro-Structure Calculate Package. - ********************************************/ -#include -#include "intarray.h" - -int IntArray::arrayCount = 0; - -void IntArrayAlloc() -{ - cout << "\n Allocation error for IntArray " << endl; - exit(0); -} - -IntArray::IntArray(const int d1,const int d2) -{ - dim = 2; - bound1 = (d1 <= 0) ? 1 : d1; - bound2 = (d2 <= 0) ? 1 : d2; - bound3 = bound4 = 0; - size = bound1 * bound2; - ptr = new int[size]; - assert( ptr != 0); - ++arrayCount; -} - -IntArray::IntArray(const int d1,const int d2,const int d3) -{ - dim = 3; - bound1 = (d1 <= 0) ? 1 : d1; - bound2 = (d2 <= 0) ? 1 : d2; - bound3 = (d3 <= 0) ? 1 : d3; - bound4 = 0; - set_new_handler(IntArrayAlloc); - size = bound1 * bound2 * bound3 ; //* sizeof(float); - ptr = new int[size]();assert(ptr != 0); - zero_out(); - ++arrayCount; -} - -IntArray::IntArray(const int d1,const int d2,const int d3,const int d4) -{ - dim = 4; - bound1 = (d1 <= 0) ? 1 : d1; - bound2 = (d2 <= 0) ? 1 : d2; - bound3 = (d3 <= 0) ? 1 : d3; - bound4 = (d4 <= 0) ? 1 : d4; - set_new_handler(IntArrayAlloc); - size = bound1 * bound2 * bound3 * bound4 ; //* sizeof(float); - ptr = new int[size]();assert(ptr != 0); - zero_out(); - ++arrayCount; -} - -IntArray::IntArray(const int d1,const int d2,const int d3, - const int d4,const int d5) -{ - dim = 5; - bound1 = (d1 <= 0) ? 1 : d1; - bound2 = (d2 <= 0) ? 1 : d2; - bound3 = (d3 <= 0) ? 1 : d3; - bound4 = (d4 <= 0) ? 1 : d4; - bound5 = (d5 <= 0) ? 1 : d5; - set_new_handler(IntArrayAlloc); - size = bound1 * bound2 * bound3 * bound4 * bound5; - ptr = new int[size]();assert(ptr != 0); - zero_out(); - ++arrayCount; -} - -IntArray::IntArray(const int d1,const int d2,const int d3, - const int d4,const int d5,const int d6) -{ - dim = 6; - bound1 = (d1 <= 0) ? 1 : d1; - bound2 = (d2 <= 0) ? 1 : d2; - bound3 = (d3 <= 0) ? 1 : d3; - bound4 = (d4 <= 0) ? 1 : d4; - bound5 = (d5 <= 0) ? 1 : d5; - bound6 = (d6 <= 0) ? 1 : d6; - set_new_handler(IntArrayAlloc); - size = bound1 * bound2 * bound3 * bound4 * bound5 * bound6; - ptr = new int[size]();assert(ptr != 0); - zero_out(); - ++arrayCount; -} - -//******************************** -// Destructor for class IntArray -//******************************** -IntArray ::~IntArray() -{ - freemem(); -} - -void IntArray::freemem() -{ - delete [] ptr; - ptr = NULL; -} - -void IntArray::create(const int d1,const int d2,const int d3,const int d4,const int d5,const int d6) -{ - size = d1 * d2 * d3 * d4 * d5 * d6;assert(size>0); - dim = 6; - bound1 = d1;bound2 = d2;bound3 = d3;bound4 = d4;bound5 = d5;bound6 = d6; - delete[] ptr; ptr = new int[size]; - assert(ptr != 0);zero_out(); -} - -void IntArray::create(const int d1,const int d2,const int d3,const int d4,const int d5) -{ - size = d1 * d2 * d3 * d4 * d5;assert(size>0); - dim = 5; - bound1 = d1;bound2 = d2;bound3 = d3;bound4 = d4;bound5 = d5; - delete[] ptr; ptr = new int[size]; - assert(ptr != 0);zero_out(); -} - -void IntArray::create(const int d1,const int d2,const int d3,const int d4) -{ - size = d1 * d2 * d3 * d4;assert(size>0); - dim = 4; - bound1 = d1;bound2 = d2;bound3 = d3;bound4 = d4; - delete[] ptr; ptr = new int[size]; - assert(ptr != 0);zero_out(); -} - -void IntArray::create(const int d1,const int d2,const int d3) -{ - size = d1 * d2 * d3;assert(size>0); - dim = 3; - bound1 = d1;bound2 = d2;bound3 = d3;bound4 = 1; - delete [] ptr;ptr = new int[size]; - assert(ptr != 0);zero_out(); -} - -void IntArray::create(const int d1, const int d2) -{ - size = d1 * d2;assert(size>0); - dim = 2; - bound1 = d1;bound2 = d2;bound3 = bound4 = 1; - delete[] ptr;ptr = new int[size]; - assert(ptr !=0 );zero_out(); -} - -const IntArray &IntArray::operator=(const IntArray &right) -{ - for (int i = 0;i < size;i++) ptr[i] = right.ptr[i]; - return *this;// enables x = y = z; -} - -const IntArray &IntArray::operator=(const int &value) -{ - for (int i = 0;i < size;i++) ptr[i] = value; - return *this;// enables x = y = z; -} - -//******************************************************** -// overloaded subscript operator for const Int Array -// const reference return create an cvakue -//******************************************************** -const int &IntArray::operator() -(const int ind1,const int ind2)const -{return ptr[ ind1 * bound2 + ind2 ];} - -const int &IntArray::operator() -(const int ind1,const int ind2,const int ind3)const -{return ptr[ (ind1 * bound2 + ind2) * bound3 + ind3 ];} - -const int &IntArray::operator() -(const int ind1,const int ind2,const int ind3,const int ind4)const -{return ptr[ ((ind1 * bound2 + ind2) * bound3 + ind3) * bound4 + ind4 ];} - -const int &IntArray::operator() -(const int ind1,const int ind2,const int ind3,const int ind4,const int ind5)const -{return ptr[ (((ind1 * bound2 + ind2) * bound3 + ind3) * bound4 + ind4) * bound5 + ind5 ];} - -const int &IntArray::operator() -(const int ind1,const int ind2,const int ind3,const int ind4,const int ind5,const int ind6)const -{return ptr[ ((((ind1 * bound2 + ind2) * bound3 + ind3) * bound4 + ind4) * bound5 + ind5) * bound6 + ind6 ];} - -//******************************************************** -// overloaded subscript operator for non-const Int Array -// const reference return creates an lvakue -//******************************************************** -int &IntArray::operator()(const int ind1,const int ind2) -{return ptr[ind1 * bound2 + ind2];} - -int &IntArray::operator()(const int ind1,const int ind2,const int ind3) -{return ptr[ (ind1 * bound2 + ind2) * bound3 + ind3 ];} - -int &IntArray::operator()(const int ind1,const int ind2,const int ind3,const int ind4) -{return ptr[ ((ind1 * bound2 + ind2) * bound3 + ind3) * bound4 + ind4 ];} - -int &IntArray::operator() -(const int ind1,const int ind2,const int ind3,const int ind4,const int ind5) -{return ptr[ (((ind1 * bound2 + ind2) * bound3 + ind3) * bound4 + ind4) * bound5 + ind5 ];} - -int &IntArray::operator() -(const int ind1,const int ind2,const int ind3,const int ind4,const int ind5,const int ind6) -{return ptr[ ((((ind1 * bound2 + ind2) * bound3 + ind3) * bound4 + ind4) * bound5 + ind5) * bound6 + ind6 ];} - -//**************************** -// zeroes out the whole array -//**************************** -void IntArray::zero_out(void) -{ - if (size <= 0) return; - for (int i = 0;i < size; i++) ptr[i] = 0; - return; -} diff --git a/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_tools/intarray.h b/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_tools/intarray.h deleted file mode 100644 index 0fc7e90e16..0000000000 --- a/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_tools/intarray.h +++ /dev/null @@ -1,72 +0,0 @@ -/******************************************* - * ESCP:Electro-Structure Calculate Package. - ********************************************/ - -#ifndef INTARRAY_H -#define INTARRAY_H - -#include -#include -#include -#include - -using namespace std; - -class IntArray -{ -public: - int *ptr; - - // Constructors for different dimesnions - IntArray(const int d1 = 1, const int d2 = 1); - IntArray(const int d1, const int d2,const int d3); - IntArray(const int d1, const int d2,const int d3,const int d4); - IntArray(const int d1, const int d2,const int d3,const int d4,const int d5); - IntArray(const int d1, const int d2,const int d3,const int d4,const int d5,const int d6); - - ~IntArray(); - - void create(const int d1, const int d2); - void create(const int d1, const int d2, const int d3); - void create(const int d1, const int d2, const int d3, const int d4); - void create(const int d1, const int d2, const int d3, const int d4, const int d5); - void create(const int d1, const int d2, const int d3, const int d4, const int d5, const int d6); - - const IntArray &operator=(const IntArray &right); - const IntArray &operator=(const int &right); - - int &operator()(const int d1, const int d2); - int &operator()(const int d1, const int d2, const int d3); - int &operator()(const int d1, const int d2, const int d3,const int d4); - int &operator()(const int d1, const int d2, const int d3, const int d4, const int d5); - int &operator()(const int d1, const int d2, const int d3, const int d4, const int d5, const int d6); - - const int &operator()(const int d1,const int d2)const; - const int &operator()(const int d1,const int d2,const int d3)const; - const int &operator()(const int d1,const int d2,const int d3,const int d4)const; - const int &operator()(const int d1,const int d2,const int d3,const int d4, const int d5)const; - const int &operator()(const int d1,const int d2,const int d3,const int d4, const int d5, const int d6)const; - - void zero_out(void); - - const int getSize() const{ return size;} - const int getDim() const{ return dim;} - const int getBound1() const{ return bound1;} - const int getBound2() const{ return bound2;} - const int getBound3() const{ return bound3;} - const int getBound4() const { return bound4;} - const int getBound5() const { return bound5;} - const int getBound6() const { return bound6;} - - static const int getArrayCount(void) - { return arrayCount;} - -private: - int size; - int dim; - int bound1, bound2, bound3, bound4, bound5, bound6; - static int arrayCount; - void freemem(); -}; - -#endif // IntArray class diff --git a/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_tools/inverse_matrix.cpp b/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_tools/inverse_matrix.cpp deleted file mode 100644 index 482c09c953..0000000000 --- a/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_tools/inverse_matrix.cpp +++ /dev/null @@ -1,61 +0,0 @@ -#include "inverse_matrix.h" - -Inverse_Matrix::Inverse_Matrix(){} -Inverse_Matrix::~Inverse_Matrix(){} -void Inverse_Matrix::init(const int &dim_in) -{ - this->dim = dim_in; - this->e = new double[dim]; - this->lwork = 2*dim; - this->work2 = new std::complex[lwork]; - this->rwork = new double[3*dim-2]; - this->info = 0; - this->A.create(dim, dim); - this->EA.create(dim, dim); - return; -} - -void Inverse_Matrix::using_zheev( const ComplexMatrix &Sin, ComplexMatrix &Sout) -{ - timer::tick("Inverse","using_zheev"); - this->A = Sin; - - //LapackConnector::zhegv( 1, 'V', 'U', nwan , A , nwan , B , nwan , e, work2 , 80 , rwork , &info ); - LapackConnector::zheev('V', 'U', dim, this->A, dim, e, work2, lwork, rwork, &info); - - for(int i=0; iA(j,i) ) / e[i] ; - } - } - - Sout = this->A * this->EA; - timer::tick("Inverse","using_zheev"); - return; -} - -void Inverse_Matrix::using_zpotrf( const ComplexMatrix &Sin) -{ -// timer::tick("Inverse","using_zpotrf"); - - for(int i=0; i *work2; - double* rwork; - int info; - - ComplexMatrix EA; -}; - -#endif diff --git a/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_tools/lapack_connector.h b/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_tools/lapack_connector.h deleted file mode 100644 index ffadd34acb..0000000000 --- a/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_tools/lapack_connector.h +++ /dev/null @@ -1,404 +0,0 @@ -// ============================================================================= -// C++ Header File -// Project: LapackConnector -// File: LapackConnector.hpp -// Author: sltk -// Comment: LapackConnector provide the connector to the fortran Lapack routine. -// Warning: -// Start time: 2007-03-08 -// Last modified: 2008-08-12 ywcui : add zhegvx -// 2008-08-13 mohan : find bug,test. -// 2008-09-03 mohan : Add zgesv -// 2009-03-08 mohan : add ilaenv -// ============================================================================= - -#ifndef LAPACKCONNECTOR_HPP -#define LAPACKCONNECTOR_HPP - -#include -#include "complexmatrix.h" - - -extern "C" -{ - // ispec: the returnd value - // 1: an unblocked algorithm will give the best performance - // 2: the minimal block size for which the block routine should - // be used - // 3: the cross over point - // 4: the number of shift - // ... - int ilaenv_(int* ispec, - char* name, - char* opts, - const int* n1, - const int* n2, - const int* n3, - const int* n4); - - - void zpotrf_( const char* uplo, - const int* n, - const std::complex *A, - const int* lda, - const int* infp); - - void zpotri_( const char* uplo, - const int* n, - const std::complex *A, - const int* lda, - const int* infp); - - //======================================================================= - //ZGESV computes the solution to a complex system of linear equations - // A * X = B, - // where A is an N-by-N matrix and X and B are N-by-NRHS matrices. - // - // The LU decomposition with partial pivoting and row interchanges is - // used to factor A as - // A = P * L * U, - // where P is a permutation matrix, L is unit lower triangular, and U is - // upper triangular. The factored form of A is then used to solve the - // system of equations A * X = B. - // - // A = LDA * N - // B = LDB * NRHS (exit X = B) - //======================================================================== - void zgesv_(const int* n, - const int* nrhs, - const std::complex *A, - const int *lda, - const int *ipiv, - const std::complex *B, - const int* ldb, - int* info - ); - - /*zhegv computes all the eigenvalues, and optionally, the eigenvectors - of a complex generalized Hermitian-definite eigenproblem, of the form - A*x=(lambda)*B*x, A*Bx=(lambda)*x, or B*A*x=(lambda)*x. - Here A and B are assumed to be Hermitian and B is also - positive definite. - */ - - /*zhegvx computes selected eigenvalues, and optionally, eigenvectors - of a complex generalized Hermitian-definite eigenproblem, of the form - A*x=(lambda)*B*x, A*Bx=(lambda)*x, or B*A*x=(lambda)*x. Here A and - B are assumed to be Hermitian and B is also positive definite. - Eigenvalues and eigenvectors can be selected by specifying either a - range of values or a range of indices for the desired eigenvalues. - */ - - void zhegv_(const int* itype, - const char* jobz, - const char* uplo, - const int* n, - std::complex* a, - const int* lda, - std::complex* b, - const int* ldb, - double* w, - std::complex* work, - int* lwork, - double* rwork, - int* info ); - - void zheev_(const char* jobz, - const char* uplo, - const int* n, - complex *a, - const int* lda, - double* w, - complex* work, - const int* lwork, - double* rwork, - int* info ); - - //=================================================================================== - // zhegvx : - // itype : 1: A*x = (lambda)*B*x - // 2: A*B*x = (lambda)*x - // 3: B*A*x = (lambda)*x - // jobz : 'N': Compute eigenvalues only - // 'V': Compute eigenvalues and eigenvectors. - // range : 'A': all eigenvalues will be found. - // 'V': all eigenvalues in the half-open interval (VL,VU] will be found. - // 'I': the IL-th through IU-th eigenvalues will be found. - // uplo : 'U': Upper triangles of A and B are stored - // 'L': Lower triangles of A and B are stored - // N : The order of the matrices A and B. N >= 0. - // A : (input/output) COMPLEX*16 array, dimension (LDA, N) - // On entry, the Hermitian matrix A. If UPLO = 'U', the leading - // N-by-N upper triangular part of A contains the upper triangular - // part of the matrix A. If UPLO = 'L', the leading N-by-N lower - // triangular part of A contains the lower triangular part of the - // matrix A. - // LDA : The leading dimension of the array A. LDA >= max(1,N). - // LDB : On entry, the Hermitian matrix B. If UPLO = 'U', the leading - // N-by-N upper triangular part of B contains the upper triangular - // part of the matrix B. If UPLO = 'L', the leading N-by-N lower - // triangular part of B contains the lower triangular part of the - // matrix B. - // vl,vu : the lower and upper bounds of the interval to be searched for - // eigenvalues. VL < VU. Not referenced if RANGE = 'A' or 'I'. - // il,iu : the indices (in ascending order) of the smallest and largest - // eigenvalues to be returned. 1 <= IL <= IU <= N, if N > 0; - // IL = 1 and IU = 0 if N = 0. Not referenced if RANGE = 'A' or 'V'. - // abstol : The absolute error tolerance for the eigenvalues - // m : The total number of eigenvalues found ,0 <= M <= N. If RANGE - // = 'A', M = N, and if RANGE = 'I', M = IU-IL+1. - // w : The first M elements contain the selected eigenvalues in - // ascending order - // z : If JOBZ = 'N', then Z is not referenced. If JOBZ = 'V', then - // if INFO = 0, the first M columns of Z contain the orthonormal - // eigenvectors of the matrix A corresponding to the selected - // eigenvalues, with the i-th column of Z holding the eigenvector - // associated with W(i). The eigenvectors are normalized as fol- - // lows: if ITYPE = 1 or 2, Z**T*B*Z = I; if ITYPE = 3, - // Z**T*inv(B)*Z = I. - // If an eigenvector fails to converge, then that column of Z - // contains the latest approximation to the eigenvector, and the - // index of the eigenvector is returned in IFAIL. Note: the user - // must ensure that at least max(1,M) columns are supplied in the - // array Z; if RANGE = 'V', the exact value of M is not known in - // advance and an upper bound must be used - // LDZ : The leading dimension of the array Z. LDZ >= 1, and if JOBZ = - // 'V', LDZ >= max(1,N). - // work : On exit, if INFO = 0, WORK(1) returns the optimal LWORK. - // lwork : LWORK >= max(1,2*N). For optimal efficiency, LWORK >= (NB+1)*N, - // where NB is the blocksize for ZHETRD returned by ILAENV. - // rwork : dimension (7*N) - // iwork : dimension (5*N) - // info : = 0: successful exit - // < 0: if INFO = -i, the i-th argument had an illegal value - // > 0: ZPOTRF or ZHEEVX returned an error code: - //=================================================================================== - - /* - void zhegvx_(const int* itype, - const char* jobz, - const char* range, - const char* uplo, - const int* N, - std::complex *A, - const int* LDA, - std::complex *B, - const int* LDB, - const double* vl, - const double* vu, - const int* il, - const int* iu, - const double* abstol, - const int* m, - double* w, - std::complex *z, - const int *LDZ, - std::complex *work, - const int* lwork, - double* rwork, - int* iwork, - int* ifail, - int* info - ); - */ - -}; - -// Class LapackConnector provide the connector to fortran lapack routine. -// The entire function in this class are static and inline function. -// Usage example: LapackConnector::functionname(parameter list). -class LapackConnector -{ -private: - // Transpose the complex matrix to the fortran-form real-complex array. - static inline - complex* transpose(const ComplexMatrix& a, const int n, const int lda) - { - complex* aux = new std::complex[lda*n]; - for(int i = 0; i < n; ++i) - { for(int j = 0; j < lda; ++j) - { - aux[i*lda+j] = a(j,i); // aux[i*lda+j] means aux[i][j] in semantic, not in syntax! - } - } - return aux; - } - - // Transpose the fortran-form real-complex array to the complex matrix. - static inline - void transpose(const std::complex* aux, ComplexMatrix& a, const int n, const int lda) - { for(int i = 0; i < n; ++i) - { for(int j = 0; j < lda; ++j) - { - a(j, i) = aux[i*lda+j]; // aux[i*lda+j] means aux[i][j] in semantic, not in syntax! - } - } - } - -public: - - static inline - int ilaenv( int ispec, - char *name, - char *opts, - const int n1, - const int n2, - const int n3, - const int n4 - ) - { - const int nb = ilaenv_(&ispec, name, opts, &n1, &n2, &n3, &n4); - return nb; - } - - static inline - void zgesv (const int n, - const int nrhs, - ComplexMatrix &A, - const int lda, - const int *ipiv, - complex *B, - const int ldb, - int* info - ) - { - complex *aux = LapackConnector::transpose(A, n, lda); - - zgesv_(&n, &nrhs, aux, &lda, ipiv, B, &ldb, info); - - LapackConnector::transpose(aux, A, n, lda); - } - - static inline - void zpotrf(char uplo, - int n, - ComplexMatrix &a, - const int lda, - int info) - { - complex *aux = LapackConnector::transpose(a, n, lda); - zpotrf_( &uplo, &n, aux, &lda, &info); - LapackConnector::transpose(aux, a, n, lda); - delete[] aux; - } - - static inline - void zpotri(char uplo, - int n, - ComplexMatrix &a, - const int lda, - int info) - { - complex *aux = LapackConnector::transpose(a, n, lda); - zpotri_( &uplo, &n, aux, &lda, &info); - LapackConnector::transpose(aux, a, n, lda); - delete[] aux; - } - - - // wrap function of fortran lapack routine zhegv. - static inline - void zhegv( const int itype, - const char jobz, - const char uplo, - const int n, - ComplexMatrix& a, - const int lda, - ComplexMatrix& b, - const int ldb, - double* w, - std::complex* work, - int lwork, - double* rwork, - int info ) - { // Transpose the complex matrix to the fortran-form real-complex array. - complex* aux = LapackConnector::transpose(a, n, lda); - complex* bux = LapackConnector::transpose(b, n, ldb); - - // call the fortran routine - zhegv_(&itype, &jobz, &uplo, &n, aux, &lda, bux, &ldb, w, work, &lwork, rwork, &info); - - // Transpose the fortran-form real-complex array to the complex matrix. - LapackConnector::transpose(aux, a, n, lda); - LapackConnector::transpose(bux, b, n, ldb); - - // free the memory. - delete[] aux; - delete[] bux; - } - - // wrap function of fortran lapack routine zheev. - static inline - void zheev( const char jobz, - const char uplo, - const int n, - ComplexMatrix& a, - const int lda, - double* w, - complex< double >* work, - const int lwork, - double* rwork, - int* info ) - { // Transpose the complex matrix to the fortran-form real-complex array. - complex *aux = LapackConnector::transpose(a, n, lda); - - // call the fortran routine - zheev_(&jobz, &uplo, &n, aux, &lda, w, work, &lwork, rwork, info); - - // Transpose the fortran-form real-complex array to the complex matrix. - LapackConnector::transpose(aux, a, n, lda); - - // free the memory. - delete[] aux; - } - - // wrap function of fortran lapack routine zheev. - static inline - void zhegvx( const int itype, - const char jobz, - const char range, - const char uplo, - const int n, - ComplexMatrix& a, - const int lda, - ComplexMatrix& b, - const int ldb, - const double vl, - const double vu, - const int il, - const int iu, - const double abstol, - const int m, - double* w, - ComplexMatrix& z, - const int ldz, - std::complex* work, - const int lwork, - double* rwork, - int* iwork, - int* ifail, - int info) - { - // Transpose the complex matrix to the fortran-form real-complex array. - complex* aux = LapackConnector::transpose(a, n, lda); - complex* bux = LapackConnector::transpose(b, n, ldb); - complex* zux = LapackConnector::transpose(z, n, ldz); - - // call the fortran routine -// zhegvx_(&itype, &jobz, &range, &uplo, &n, aux, &lda, bux, &ldb, &vl, -// &vu, &il,&iu, &abstol, &m, w, zux, &ldz, work, &lwork, rwork, iwork, ifail, &info); - - // Transpose the fortran-form real-complex array to the complex matrix - LapackConnector::transpose(zux, z, n, ldz); - - // free the memory. - delete[] aux; - delete[] bux; - delete[] zux; - - } - - - -}; -#endif // LAPACKCONNECTOR_HPP diff --git a/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_tools/mathzone.cpp b/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_tools/mathzone.cpp deleted file mode 100644 index e42b107646..0000000000 --- a/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_tools/mathzone.cpp +++ /dev/null @@ -1,618 +0,0 @@ -#include "mathzone.h" - - -double Mathzone::PI = 3.14159265; - -Mathzone::Mathzone() -{ -} - -Mathzone::~Mathzone() -{ -} - -double Mathzone::BESSJY(double x, double xnu, double *rj, double *ry, double *rjp, double *ryp) -{ - const int XMIN = 2; - const double FPMIN = 1.0e-30; - const double EPS = 1.0e-10; - const int MAXIT = 10000; - - int i, isign, l, nl; - double a, b, br, bi, c, cr, ci, d, del, del1, den, di, dlr, dli, dr, e, f, fact, fact2, - fact3, ff, gam, gam1, gam2, gammi, gampl, h, p, pimu, pimu2, q, r, rjl, - rjl1, rjmu, rjp1, rjpl, rjtemp, ry1, rymu, rymup, rytemp, sum, sum1, - temp, w, x2, xi, xi2; - - if (x <= 0.0 || xnu < 0.0) - { -// WARNING_QUIT("Mathzone::BESSJY","bad arguments"); - exit(0); - } - - - nl = (x < XMIN ? (int)(xnu + 0.5) : IMAX(0, (int)(xnu - x + 1.5))); - const double xmu = xnu - nl; - const double xmu2 = xmu * xmu; - xi = 1.0 / x; - xi2 = 2.0 * xi; - w = xi2 / PI; - isign = 1; - h = xnu * xi; - if (h < FPMIN) h = FPMIN; - - b = xi2 * xnu; - - d = 0.0; - - c = h; - - for (i = 1;i <= MAXIT;i++) - { - b += xi2; - d = b - d; - - if (fabs(d) < FPMIN) d = FPMIN; - - c = b - 1.0 / c; - - if (fabs(c) < FPMIN) c = FPMIN; - - d = 1.0 / d; - - del = c * d; - - h = del * h; - - if (d < 0.0) isign = -isign; - - if (fabs(del - 1.0) < EPS) break; - } - - if (i > MAXIT) cout << "x too large in bessjy; try asymptotic expansion" << endl; - - rjl = isign * FPMIN; - - rjpl = h * rjl; - - rjl1 = rjl; - - rjp1 = rjpl; - - fact = xnu * xi; - - for (l = nl;l >= 1;l--) - { - rjtemp = fact * rjl + rjpl; - fact -= xi; - rjpl = fact * rjtemp - rjl; - rjl = rjtemp; - } - - if (rjl == 0.0) rjl = EPS; - - f = rjpl / rjl; - - if (x < XMIN) - { - x2 = 0.5 * x; - pimu = PI * xmu; - fact = (fabs(pimu) < EPS ? 1.0 : pimu / sin(pimu)); - d = -log(x2); - e = xmu * d; - fact2 = (fabs(e) < EPS ? 1.0 : sinh(e) / e); - // call BESCHB - BESCHB(xmu, &gam1, &gam2, &gampl, &gammi); - ff = 2.0 / PI * fact * (gam1 * cosh(e) + gam2 * fact2 * d); - e = exp(e); - p = e / (gampl * PI); - q = 1.0 / (e * PI * gammi); - pimu2 = 0.5 * pimu; - fact3 = (fabs(pimu2) < EPS ? 1.0 : sin(pimu2) / pimu2); - r = PI * pimu2 * fact3 * fact3; - c = 1.0; - d = -x2 * x2; - sum = ff + r * q; - sum1 = p; - - for (i = 1;i <= MAXIT;i++) - { - ff = (i * ff + p + q) / (i * i - xmu2); - c *= (d / i); - p /= (i - xmu); - q /= (i + xmu); - del = c * (ff + r * q); - sum += del; - del1 = c * p - i * del; - sum1 += del1; - - if (fabs(del) < (1.0 + fabs(sum))*EPS) break; - } - - if (i > MAXIT) cout << "bessy series failed to converge"; - - rymu = -sum; - - ry1 = -sum1 * xi2; - - rymup = xmu * xi * rymu - ry1; - - rjmu = w / (rymup - f * rymu); - } - - else - { - a = 0.25 - xmu2; - p = -0.5 * xi; - q = 1.0; - br = 2.0 * x; - bi = 2.0; - fact = a * xi / (p * p + q * q); - cr = br + q * fact; - ci = bi + p * fact; - den = br * br + bi * bi; - dr = br / den; - di = -bi / den; - dlr = cr * dr - ci * di; - dli = cr * di + ci * dr; - temp = p * dlr - q * dli; - q = p * dli + q * dlr; - p = temp; - - for (i = 2;i <= MAXIT;i++) - { - a += 2 * (i - 1); - bi += 2.0; - dr = a * dr + br; - di = a * di + bi; - - if (fabs(dr) + fabs(di) < FPMIN) dr = FPMIN; - - fact = a / (cr * cr + ci * ci); - - cr = br + cr * fact; - - ci = bi - ci * fact; - - if (fabs(cr) + fabs(ci) < FPMIN) cr = FPMIN; - - den = dr * dr + di * di; - - dr /= den; - - di /= -den; - - dlr = cr * dr - ci * di; - - dli = cr * di + ci * dr; - - temp = p * dlr - q * dli; - - q = p * dli + q * dlr; - - p = temp; - - if (fabs(dlr - 1.0) + fabs(dli) < EPS) break; - } - - if (i > MAXIT) cout << "cf2 failed in bessjy"; - - gam = (p - f) / q; - - rjmu = sqrt(w / ((p - f) * gam + q)); - - if(rjl >=0 ) rjmu = fabs(rjmu); - else rjmu = -fabs(rjmu); - - rymu = rjmu * gam; - - rymup = rymu * (p + q / gam); - - ry1 = xmu * xi * rymu - rymup; - } - - fact = rjmu / rjl; - - *rj = rjl1 * fact; - *rjp = rjp1 * fact; - - for (i = 1;i <= nl;i++) - { - rytemp = (xmu + i) * xi2 * ry1 - rymu; - rymu = ry1; - ry1 = rytemp; - } - - *ry = rymu; - - *ryp = xnu * xi * rymu - ry1; -} - -int Mathzone::IMAX(int a, int b) -{ - if (a > b) return a; - else return b; -} - -void Mathzone::BESCHB(double x, double *gam1, double *gam2, double *gampl, double *gammi) -{ - const int NUSE1 = 7; - const int NUSE2 = 8; - double xx; - static double c1[] = { -1.142022680371168e0, 6.5165112670737e-3, - 3.087090173086e-4, -3.4706269649e-6, - 6.9437664e-9, 3.67795e-11, -1.356e-13 - }; - static double c2[] = { 1.843740587300905e0, -7.68528408447867e-2, - 1.2719271366546e-3, -4.9717367042e-6, -3.31261198e-8, - 2.423096e-10, -1.702e-13, -1.49e-15 - }; - xx = 8.0 * x * x - 1.0; //Multiply x by 2 to make range be .1 to 1,and then apply transformation for evaluating even Chebyshev series. - *gam1 = CHEBEV(-1.0, 1.0, c1, NUSE1, xx); - *gam2 = CHEBEV(-1.0, 1.0, c2, NUSE2, xx); - *gampl = *gam2 - x * (*gam1); - *gammi = *gam2 + x * (*gam1); -} - -double Mathzone::CHEBEV(double a, double b, double c[], int m, double x) -{ - double d = 0.0, dd = 0.0, sv, y, y2; - int j; - - if ((x - a)*(x - b) > 0.0) cout << "x not in range in routine chebev" << endl; - - y2 = 2.0 * (y = (2.0 * x - a - b) / (b - a)); - - for (j = m - 1;j >= 1;j--) - { - sv = d; - d = y2 * d - dd + c[j]; - dd = sv; - } - - return y*d - dd + 0.5*c[0]; -} - - -double Mathzone::Spherical_Bessel_7(const int n, const double &x) -{ - if(x==0) - { - if(n!=0) return 0; - if(n==0) return 1; - } - double order, rj, rjp, ry, ryp; - - if (n < 0 || x <= 0.0) - { - exit(0); -// WARNING_QUIT("Mathzone::Spherical_Bessel_7","bad arguments in sphbes"); - } - - order = n + 0.5; - - // call BESSSJY - BESSJY(x, order, &rj, &ry, &rjp, &ryp); - - const double RTPIO2=1.2533141; // mohan remian question: here is INT???????????? - - const double factor = RTPIO2 / sqrt(x); - - return factor*rj; -} - - -void Mathzone::Spherical_Bessel_Roots -( - const int &num, - const int &l, - const double &epsilon, - double* eigenvalue, - const double &rcut -) -{ -// TITLE("Mathzone","Spherical_Bessel_Roots"); -// if(num<=0) WARNING_QUIT("Mathzone::Spherical_Bessel_Roots","num<=0"); - - const double max = 2*PI + (num + (l+0.5)/2 + 0.75)*PI/2 + - sqrt((num + (l+0.5)/2+0.75)*(num + (l+0.5)/2+0.75)*PI*PI/4-(l+0.5)*(l+0.5)/2); - - // magic number !! - // only need to > 1 - const int msh = 10 * num; -// cout<<"\n msh = "<(msh); - -// cout<<"\n delta = "<=7) - { - for(int ir=0; ir 1.0e-8) - { - ir0 = 0;//mohan modify 2007-10-13 - } - else - { - if (l == -1) - { - cout << "\n sph_bes, j_{-1}(0) ?//?"; - } - else if (l == 0) - { - jl [0] = 1.0;//mohan modify 2007-10-13 - } - else - { - jl [0] = 0.0;//mohan modify 2007-10-13 - } - ir0 = 1;//mohan modify 2007-10-13 - } - if (l == - 1) - { - for (ir = ir0;ir < msh; ir++) - { - x1 = q * r[ir]; - jl [ir] = cos(x1) / x1; - } - } - else if (l == 0) - { - for (ir = ir0;ir < msh;ir++) - { - x1 = q * r[ir]; - jl [ir] = sin(x1) / x1; - } - } - else if (l == 1) - { - for (ir = ir0;ir < msh;ir++) - { - x1 = q * r[ir]; - const double sinx = sin(x1); - const double cosx = cos(x1); - jl [ir] = (sinx / x1 - cosx) / x1; - } - } - else if (l == 2) - { - for (ir = ir0;ir < msh;ir++) - { - const double x1 = q * r[ir]; - const double sinx = sin(x1); - const double cosx = cos(x1); - jl [ir] = ((3.0 / x1 - x1) * sinx - - 3.0 * cosx) / (x1 * x1); - } - } - else if (l == 3) - { - for (ir = ir0;ir < msh;ir++) - { - x1 = q * r[ir]; - jl [ir] = (sin(x1) * (15.0 / x1 - 6.0 * x1) + - cos(x1) * (x1 * x1 - 15.0)) / pow(x1, 3);//mohan modify 2007-10-13 - } - } - else if (l == 4) - { - for (ir = ir0;ir < msh;ir++) - { - const double x1 = q * r[ir]; - const double x2 = x1 * x1; - const double x3 = x1 * x2; - const double x4 = x1 * x3; - const double x5 = x1 * x4; - jl [ir] = (sin(x1) * (105.0 - 45.0 * x2 + x4) + - cos(x1) * (10.0 * x3 - 105.0 * x1)) / x5; // mohan modify 2007-10-13 - } - } - else if (l == 5) - { - for (ir = ir0;ir < msh;ir++) - { - x1 = q * r[ir]; - - if (x1 < 0.14) - { - jl[ir] = 0;//mohan add 2007-10-15 - } - else - { - double cx1 = cos(x1); - double sx1 = sin(x1); - jl [ir] = (-cx1 - - (945.0 * cx1) / pow(x1, 4) + - (105.0 * cx1) / (x1 * x1) + - (945.0 * sx1) / pow(x1, 5) - - (420.0 * sx1) / pow(x1, 3) + - (15.0 * sx1) / x1) / x1; - - } - } - } - else if (l == 6) - { - for (ir = ir0;ir < msh;ir++) - { - x1 = q * r[ir]; - - if (x1 < 0.29) - { - jl[ir] = 0;//mohan add 2007-10-15 - } - else - { - double cx1 = cos(x1); - double sx1 = sin(x1); - jl [ir] = ((-10395.0 * cx1) / pow(x1, 5) + - (1260.0 * cx1) / pow(x1, 3) - - (21.0 * cx1) / x1 - sx1 + - (10395.0 * sx1) / pow(x1, 6) - - (4725.0 * sx1) / pow(x1, 4) + - (210.0 * sx1) / (x1 * x1)) / x1; - } - } - }//mohan modify 2007-11-20 reduce cos , sin , q*r[ir] times; - else - { - cout << "\n error in sph_bes, l out of {-1 ... 6},l = " << l ; - } - } -// printr1_d(ofs,"jl[] :",jl,msh); -// timer::tick("Mathzone","Spherical_Bessel"); - return; -} - -void Mathzone::Simpson_Integral -( - const int mesh, - const double *func, - const double *rab, - double &asum -) -{ - /* simpson's rule integration. On input: - ! mesh = mhe number of grid points (should be odd) - ! func(i)= function to be integrated - ! rab(i) = r(i) * dr(i)/di * di - ! For the logarithmic grid not including r=0 : - ! r(i) = r_0*exp((i-1)*dx) ==> rab(i)=r(i)*dx - ! For the logarithmic grid including r=0 : - ! r(i) = a(exp((i-1)*dx)-1) ==> rab(i)=(r(i)+a)*dx - ! Output in asum = \sum_i c_i f(i)*rab(i) = \int_0^\infty f(r) dr - ! where c_i are alternativaly 2/3, 4/3 except c_1 = c_mesh = 1/3 - */ - // simpson's rule integrator for function stored on the - // radial logarithmic mesh - // routine assumes that mesh is an odd number so run check - if (mesh % 2 == 0) - { - cout << "\n error in subroutine simpson "; - cout << "\n routine assumes mesh is odd but mesh = " - << mesh << endl; - return; - } - - asum = 0.00; - const double r12 = 1.00 / 12.00; - double f3 = func [0] * rab [0] * r12; - for (int i = 1;i < mesh;i += 2) - { - const double f1 = f3; - const double f2 = func [i] * rab [i] * r12; - f3 = func [i + 1] * rab [i + 1] * r12; - asum += 4.00 * f1 + 16.00 * f2 + 4.00 * f3; - } - return; -}// end subroutine simpson - diff --git a/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_tools/mathzone.h b/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_tools/mathzone.h deleted file mode 100644 index b5b26f5407..0000000000 --- a/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_tools/mathzone.h +++ /dev/null @@ -1,59 +0,0 @@ -#ifndef MATHZONE_H -#define MATHZONE_H - -#include -#include - -#include -#include -#include -#include -#include - -using namespace std; - -class Mathzone -{ -public: - - Mathzone(); - ~Mathzone(); - - //======================================================== - // Spherical Bessel - //======================================================== - static void Spherical_Bessel - ( - const int &msh, //number of grid points - const double *r,//radial grid - const double &q, // - const int &l, //angular momentum - double *jl //jl(1:msh) = j_l(q*r(i)),spherical bessel function - ); - static void Spherical_Bessel_Roots - ( - const int &num, - const int &l, - const double &epsilon, - double* eigenvalue, - const double &rcut - ); - static void Simpson_Integral( - const int mesh, - const double *func, - const double *rab, - double &asum - ); - static double PI; - -private: - static double Spherical_Bessel_7(const int n, const double &x); - static double BESSJY(double x, double xnu, double *rj, double *ry, double *rjp, double *ryp); - static void BESCHB(double x, double *gam1, double *gam2, double *gampl, double *gammi); - static double CHEBEV(double a, double b, double c[], int m, double x); - static int IMAX(int a, int b); - - -}; - -#endif diff --git a/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_tools/matrix.cpp b/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_tools/matrix.cpp deleted file mode 100644 index 5b6df2600d..0000000000 --- a/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_tools/matrix.cpp +++ /dev/null @@ -1,223 +0,0 @@ -/* matrix.cpp file */ -#include -#include -#include -#include -#include - -#include -#include - -using namespace std; -#include "matrix.h" - -//********************************************************* -// The init() function is the main initialization routine. -// Sets up sizes and allocates memory for matrix class. -// All constructors call init() -// ******************************************************** - -int matrix::mCount = 0; - -void matrixAlloc() -{ - cout << "\n Allocation error for Matrix " << endl; - abort(); -} - -void matrix::init(const int nrows,const int ncols) -{ - nr = nrows; - nc = ncols; - c = NULL; -// hermetian = 0; - set_new_handler(matrixAlloc); - - if(nr*nc == 0) c = NULL; - else - { - c = new double[nrows*ncols](); - this->zero_out(); - assert(c!=0);// terminate if memory not allocated - } - - mCount++; -} - -// Free up memory for matrix -void matrix::freemem(void) -{ - delete [] c; - c = NULL; -} - -// constructor with sizes -matrix::matrix(const int nrows,const int ncols) -{ - this->init(nrows, ncols); -} - -//****************** -// -// Copy constructor -// -//****************** -matrix::matrix(const matrix &m1) -{ - init(m1.nr, m1.nc); - //hermetian = m1.hermetian; - // Copy over m1 contents - for (int i = 0; i < nr*nc; i++) c[i] = m1.c[i]; -} - -//************* -// -// destructor -// -//************* -matrix::~matrix() -{ - this->freemem(); -} - -//****************************** -// reallocate memory for matrix -//****************************** -void matrix::create(const int nrow,const int ncol) -{ - delete [] c; - nr = nrow; - nc = ncol; - c = new double[nrow * ncol](); - return; -} - -/* Assignment: nonstandard in that it returns void. To make it standard, - * replace void -> matrix and uncomment the return *this; */ - -void matrix::operator=(const matrix & m1) -{ - for (int i = 0; i < nr*nc; i++) c[i] = m1.c[i]; -} - -/* Adding matrices, as a friend */ -matrix operator+(const matrix &m1, const matrix &m2) -{ - assert(m1.nr == m2.nr); - assert(m2.nc == m2.nc); - - matrix tm(m1); - for (int i = 0; i < m1.nr*m1.nc; i++) tm.c[i] += m2.c[i]; - return tm; -} - -/* Subtracting matrices, as a friend */ -matrix operator-(const matrix &m1, const matrix &m2) -{ - assert(m1.nr == m2.nr); - assert(m2.nc == m2.nc); - - matrix tm(m1); - for(int i = 0; i < m1.nr*m1.nc; i++) tm.c[i] -= m2.c[i]; - return tm; -} - -//*************************************** -// -// Multiplying matrices, as a friend -// -// ************************************* -matrix operator*(const matrix &m1, const matrix &m2) -{ - assert(m1.nr == m2.nr); - assert(m2.nc == m2.nc); - - // allocate the result and zero it out - matrix mprod(m2.nr, m1.nc); - - mprod.zero_out(); - - // do the multiply and return - for (int i = 0;i < m2.nr;i++) - { - for (int j = 0;j < m1.nc;j++) - { - for (int k = 0;k < m2.nc;k++) - { - mprod(i, j) += m2(i, k) * m1(k, j); - } - } - } - - return mprod; -} - -/* Scale a matrix */ -matrix operator*(const double &s, const matrix &m) -{ - matrix sm(m); - for (int i = 0; i < m.nr*m.nc; i++) sm.c[i] *= s; - return sm; -} - -/* matrix * double */ -matrix operator*(const matrix &m,const double &s) -{ - matrix sm(m); - for (int i = 0; i < m.nr*m.nc; i++)sm.c[i] *= s; - return sm; -} - -/* Scale a matrix in place */ -void matrix::operator*=(const double &s) -{ - for (int i = 0; i < nc*nr; i++) c[i] *= s; -} - -/* Accumulate to a matrix in place */ -void matrix::operator+=(const matrix & m) -{ - if (nr != m.nr || nc != m.nc) - { - cout << " void matrix::operator+=(const matrix &m) has size mismatch\n"; - abort(); - } - for (int i = 0; i < nc*nr; i++) c[i] += m.c[i]; -} - - -/* decumulate to a matrix in place */ -void matrix::operator-=(const matrix & m) -{ - if (nr != m.nr || nc != m.nc) - { - cout << "void matrix::operator-=(const matrix &m) has size mismatch\n"; - abort(); - } - for (int i = 0; i < nc*nr; i++) c[i] -= m.c[i]; -} - -/* zero out the matrix */ -void matrix::zero_out(void) -{ - for(int i = 0; i < nr*nc; i++) - { - c[i] = 0.0; - } - return; -} - - -matrix transpose(matrix m) -{ - matrix tm(m.nc, m.nr); - - for (int i = 0;i < m.nr;i++) - { - for (int j = 0;j < m.nc;j++) - { - tm(j, i) = m(i, j); - } - } - return tm; -} diff --git a/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_tools/matrix.h b/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_tools/matrix.h deleted file mode 100644 index 5c3e896f55..0000000000 --- a/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_tools/matrix.h +++ /dev/null @@ -1,56 +0,0 @@ -#ifndef MATRIX_H -#define MATRIX_H -class matrix -{ - /* data */ -public: - double *c; /* Holds the data */ - int nr; - int nc; /* Number of rows and columns */ - int hermetian; - static int mCount; - - /* Constructors and destructor */ - matrix(const int nrows = 1,const int ncols = 1); - matrix(const matrix &m1); /* copy constructor */ - ~matrix(); - - void create(const int nrow,const int ncol); - void operator=(const matrix &m1); /* Nonstandard: returns void */ - - double &operator()(const int ir,const int ic) - { return c[nc*ir + ic]; }; - - const double &operator()(const int ir,const int ic)const - { return c[nc*ir + ic]; }; - -// inline double &operator()(int i,int j) const -// { return c[nc*i+j]; } - - friend matrix operator+(const matrix &m1, const matrix &m2); - friend matrix operator-(const matrix &m1, const matrix &m2); - friend matrix operator*(const matrix &m1, const matrix &m2); - friend matrix operator*(const double &s, const matrix &m); - friend matrix operator*(const matrix &m, const double &s); - void operator*=(const double &s); - void operator+=(const matrix &m); - void operator-=(const matrix &m); - - /* member function: */ - matrix Inverse(void); - - double det(void); - - /* Does the memory allocations of the constructor */ - void init(int nrows, int ncols); - - /* Free up memory */ - void freemem(void); - - /* zero out all the entries */ - void zero_out(void); -}; - -matrix transpose(matrix m); - -#endif // MATRIX_H diff --git a/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_tools/matrix3.cpp b/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_tools/matrix3.cpp deleted file mode 100644 index 67ccc3c8f4..0000000000 --- a/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_tools/matrix3.cpp +++ /dev/null @@ -1,212 +0,0 @@ -#include "matrix3.h" - -Matrix3::Matrix3(const double &r11, const double &r12, const double &r13, - const double &r21, const double &r22, const double &r23, - const double &r31, const double &r32, const double &r33) -{ - e11 = r11;e12 = r12;e13 = r13; - e21 = r21;e22 = r22;e23 = r23; - e31 = r31;e32 = r32;e33 = r33; -} - -void Matrix3::Reset(void) -{ - e11 = 1;e12 = 0;e13 = 0; - e21 = 0;e22 = 1;e23 = 0; - e31 = 0;e32 = 0;e33 = 1; -} - -void Matrix3::Identity(void) -{ - e11 = 1;e12 = 0;e13 = 0; - e21 = 0;e22 = 1;e23 = 0; - e31 = 0;e32 = 0;e33 = 1; -} - -double Matrix3::Det(void) const -{ - return e11*e22*e33 - - e11*e32*e23 + - e21*e32*e13 - - e21*e12*e33 + - e31*e12*e23 - - e31*e22*e13; -} - -Matrix3 Matrix3::Transpose(void) const -{ - return Matrix3(e11, e21, e31, e12, e22, e32, e13, e23, e33); -} - -Matrix3 Matrix3::Inverse(void) const -{ - double d = this->Det(); - - if(d == 0)d = 1; - - return Matrix3((e22*e33 - e23*e32) / d, - -(e12*e33 - e13*e32) / d, - (e12*e23 - e13*e22) / d, - -(e21*e33 - e23*e31) / d, - (e11*e33 - e13*e31) / d, - -(e11*e23 - e13*e21) / d, - (e21*e32 - e22*e31) / d, - -(e11*e32 - e12*e31) / d, - (e11*e22 - e12*e21) / d); -} - -Matrix3& Matrix3::operator = (const Matrix3 &m) -{ - e11 = m.e11;e12 = m.e12;e13 = m.e13; - e21 = m.e21;e22 = m.e22;e23 = m.e23; - e31 = m.e31;e32 = m.e32;e33 = m.e33; - return *this; -} - -Matrix3& Matrix3::operator +=(const Matrix3 &m) -{ - e11 += m.e11;e12 += m.e12;e13 += m.e13; - e21 += m.e21;e22 += m.e22;e23 += m.e23; - e31 += m.e31;e32 += m.e32;e33 += m.e33; - return *this; -} - -Matrix3& Matrix3::operator -=(const Matrix3 &m) -{ - e11 -= m.e11;e12 -= m.e12;e13 -= m.e13; - e21 -= m.e21;e22 -= m.e22;e23 -= m.e23; - e31 -= m.e31;e32 -= m.e32;e33 -= m.e33; - return *this; -} - -Matrix3& Matrix3::operator *=(const double &s) -{ - e11 *= s;e12 *= s;e13 *= s; - e21 *= s;e22 *= s;e23 *= s; - e31 *= s;e32 *= s;e33 *= s; - return *this; -} - -Matrix3& Matrix3::operator /=(const double &s) -{ - e11 /= s;e12 /= s;e13 /= s; - e21 /= s;e22 /= s;e23 /= s; - e31 /= s;e32 /= s;e33 /= s; - return *this; -} - -//m1+m2 -Matrix3 operator +(const Matrix3 &m1, const Matrix3 &m2) -{ - return Matrix3(m1.e11 + m2.e11, - m1.e12 + m2.e12, - m1.e13 + m2.e13, - m1.e21 + m2.e21, - m1.e22 + m2.e22, - m1.e23 + m2.e23, - m1.e31 + m2.e31, - m1.e32 + m2.e32, - m1.e33 + m2.e33); -} - -//m1-m2 -Matrix3 operator -(const Matrix3 &m1, const Matrix3 &m2) -{ - return Matrix3(m1.e11 + m2.e11, - m1.e12 - m2.e12, - m1.e13 - m2.e13, - m1.e21 - m2.e21, - m1.e22 - m2.e22, - m1.e23 - m2.e23, - m1.e31 - m2.e31, - m1.e32 - m2.e32, - m1.e33 - m2.e33); -} - -//m/s -Matrix3 operator /(const Matrix3 &m, const double &s) -{ - return Matrix3(m.e11 / s, m.e12 / s, m.e13 / s, - m.e21 / s, m.e22 / s, m.e23 / s, - m.e31 / s, m.e32 / s, m.e33 / s); -} - -//m1*m2 -Matrix3 operator *(const Matrix3 &m1, const Matrix3 &m2) -{ - return Matrix3(m1.e11*m2.e11 + m1.e12*m2.e21 + m1.e13*m2.e31, - m1.e11*m2.e12 + m1.e12*m2.e22 + m1.e13*m2.e32, - m1.e11*m2.e13 + m1.e12*m2.e23 + m1.e13*m2.e33, - m1.e21*m2.e11 + m1.e22*m2.e21 + m1.e23*m2.e31, - m1.e21*m2.e12 + m1.e22*m2.e22 + m1.e23*m2.e32, - m1.e21*m2.e13 + m1.e22*m2.e23 + m1.e23*m2.e33, - m1.e31*m2.e11 + m1.e32*m2.e21 + m1.e33*m2.e31, - m1.e31*m2.e12 + m1.e32*m2.e22 + m1.e33*m2.e32, - m1.e31*m2.e13 + m1.e32*m2.e23 + m1.e33*m2.e33); -} - -//m*s -Matrix3 operator *(const Matrix3 &m,const double &s) -{ - return Matrix3(m.e11*s, m.e12*s, m.e13*s, - m.e21*s, m.e22*s, m.e23*s, - m.e31*s, m.e32*s, m.e33*s); -} - -//s*m -Matrix3 operator *(const double &s, const Matrix3 &m) -{ - return Matrix3(m.e11*s, m.e12*s, m.e13*s, - m.e21*s, m.e22*s, m.e23*s, - m.e31*s, m.e32*s, m.e33*s); -} - -//m*u -Vector3 operator *(const Matrix3 &m, const Vector3 &u) -{ - return Vector3(m.e11*u.x + m.e12*u.y + m.e13*u.z, - m.e21*u.x + m.e22*u.y + m.e23*u.z, - m.e31*u.x + m.e32*u.y + m.e33*u.z); -} - -//u*m -Vector3 operator *(const Vector3 &u, const Matrix3 &m) -{ - return Vector3(u.x*m.e11 + u.y*m.e21 + u.z*m.e31, - u.x*m.e12 + u.y*m.e22 + u.z*m.e32, - u.x*m.e13 + u.y*m.e23 + u.z*m.e33); -} - - -// whether m1==m2 -bool operator==(const Matrix3 &m1, const Matrix3 &m2) -{ - if(m1.e11 == m2.e11 && - m1.e12 == m2.e12 && - m1.e13 == m2.e13 && - m1.e21 == m2.e21 && - m1.e22 == m2.e22 && - m1.e23 == m2.e23 && - m1.e31 == m2.e31 && - m1.e32 == m2.e32 && - m1.e33 == m2.e33) - { - return true; - } - return false; -} - -//whether m1 != m2 -bool operator!=(const Matrix3 &m1, const Matrix3 &m2) -{ - return !(m1 == m2); //!= defined in terms of operator == -} - - -void Matrix3::print(void)const -{ - cout << e11 << setw(15) << e12 << setw(15) << e13 << endl ; - cout << e21 << setw(15) << e22 << setw(15) << e23 << endl ; - cout << e31 << setw(15) << e32 << setw(15) << e33 << endl ; - return; -} diff --git a/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_tools/matrix3.h b/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_tools/matrix3.h deleted file mode 100644 index 024f19870d..0000000000 --- a/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_tools/matrix3.h +++ /dev/null @@ -1,54 +0,0 @@ -//========================================================== -// AUTHOR: Lixin He, Mohan Chen -// LAST UPDATE : 2009-03-24 add operator == and != -//========================================================== -#ifndef MatriX3_H -#define MatriX3_H - -#ifdef _MCD_CHECK -#include "./src_parallel/mcd.h" -#endif - -#include "vector3.h" - -class Matrix3 -{ - /* data */ -public: - // element eij:i_column,j_row - double e11, e12, e13, e21, e22, e23, e31, e32, e33; - - /* Constructors and destructor */ - Matrix3(const double &r11 = 1,const double &r12 = 0,const double &r13 = 0, - const double &r21 = 0,const double &r22 = 1,const double &r23 = 0, - const double &r31 = 0,const double &r32 = 0,const double &r33 = 1); - - void Reset(void); - void Identity(void); - double Det(void) const ; - Matrix3 Transpose(void) const ; - Matrix3 Inverse(void) const ; - - Matrix3& operator=(const Matrix3 &m); - Matrix3& operator+=(const Matrix3 &m); - Matrix3& operator-=(const Matrix3 &m); - Matrix3& operator*=(const double &s); - Matrix3& operator/=(const double &s); - - void print(void)const; -}; - -Matrix3 operator +(const Matrix3 &m1, const Matrix3 &m2); //m1+m2 -Matrix3 operator -(const Matrix3 &m1, const Matrix3 &m2); //m1-m2 -Matrix3 operator /(const Matrix3 &m,const double &s); //m/s -Matrix3 operator *(const Matrix3 &m1,const Matrix3 &m2); //m1*m2 -Matrix3 operator *(const Matrix3 &m,const double &s); //m*s -Matrix3 operator *(double &s, const Matrix3 &m); //s*m -Vector3 operator *(const Matrix3 &m, const Vector3 &u); //m*u -Vector3 operator *(const Vector3 &u, const Matrix3 &m); //u*m - -bool operator ==(const Matrix3 &m1, const Matrix3 &m2); //whether m1 == m2 -bool operator !=(const Matrix3 &m1, const Matrix3 &m2); //whethor m1 != m2 - -#endif // MATRIX3_H - diff --git a/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_tools/realarray.cpp b/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_tools/realarray.cpp deleted file mode 100644 index 86c17471db..0000000000 --- a/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_tools/realarray.cpp +++ /dev/null @@ -1,179 +0,0 @@ -/******************************************* - * ESCP:Electro-Structure Calculate Package. - ********************************************/ - -#include -#include "realarray.h" - -int realArray::arrayCount = 0; - -void realArrayAlloc() -{ - cout << "\n Allocation error for realArray " << endl; - exit(0); -} - -realArray::realArray(const int d1,const int d2,const int d3) -{ - dim = 3; - bound1 = (d1 <= 0) ? 1 : d1; - bound2 = (d2 <= 0) ? 1 : d2; - bound3 = (d3 <= 0) ? 1 : d3; - bound4 = 0; - - set_new_handler(realArrayAlloc); - - size = bound1 * bound2 * bound3 ; //* sizeof(float); - - ptr = new double[size](); - assert(ptr != 0); - for(int i=0; i0); - - dim = 4; - - bound1 = d1; - bound2 = d2; - bound3 = d3; - bound4 = d4; - - delete [] ptr; - ptr = new double[size](); - assert(ptr != 0); - for(int i=0; i0); - - dim = 3; - - bound1 = d1; - bound2 = d2; - bound3 = d3; - bound4 = 1; - - delete [] ptr; - ptr = new double[size](); - assert(ptr != 0); - for(int i=0; i -#include -#include -#include - -using namespace std; - -class realArray -{ -public: - double *ptr; - - realArray(const int d1 = 1 ,const int d2 = 1,const int d3 = 1); - realArray(const int d1, const int d2,const int d3,const int d4); - ~realArray(); - - void create(const int d1,const int d2,const int d3); - void create(const int d1,const int d2,const int d3,const int d4); - - const realArray &operator=(const realArray &right); - const realArray &operator=(const double &right); - - double &operator()(const int d1,const int d2,const int d3); - double &operator()(const int d1,const int d2,const int d3,const int d4); - - const double &operator()(const int d1,const int d2,const int d3)const; - const double &operator()(const int d1,const int d2,const int d3,const int d4)const; - - void zero_out(void); - - const int getSize() const - { return size;} - - const int getDim() const - { return dim;} - - const int getBound1() const - { return bound1;} - - const int getBound2() const - { return bound2;} - - const int getBound3() const - { return bound3;} - - const int getBound4() const - { return bound4;} - - static const int getArrayCount(void) - { return arrayCount;} - -private: - int size; - int dim; - int bound1, bound2, bound3, bound4; - static int arrayCount; - - void freemem(); -}; - -//************************************************** -// set elements of a as zeros which a is 1_d array. -//************************************************** -template -void zeros(T *u,const int n) -{ - assert(n>0); - for (int i = 0;i < n;i++) u[i] = 0; -} - -#endif // realArray class diff --git a/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_tools/timer.cpp b/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_tools/timer.cpp deleted file mode 100644 index ec1660d9ce..0000000000 --- a/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_tools/timer.cpp +++ /dev/null @@ -1,244 +0,0 @@ -//========================================================== -// AUTHOR : fangwei , mohan -// DATE : 2008-11-06 -//========================================================== -#include "timer.h" - -using namespace std; - -//---------------------------------------------------------- -// EXPLAIN : -//---------------------------------------------------------- -bool timer::disabled = false; -int timer::n_clock = 100; -int timer::n_now = 0; -int timer::start_flag = -1; -double* timer::cpu_second; -double* timer::cpu_start; -string* timer::name; -string* timer::class_name; -int* timer::calls; -bool timer::delete_flag=false; - -timer::timer() -{ -}; - -timer::~timer() -{ -}; - -void timer::finish() -{ - timer::tick("","total"); - print_all(); - if(delete_flag) - { - delete[] cpu_second; - delete[] cpu_start; - delete[] name; - delete[] class_name; - delete[] calls; - } -} - -//---------------------------------------------------------- -// -//---------------------------------------------------------- -void timer::start(void) -{ - cpu_second = new double[n_clock](); - cpu_start = new double[n_clock](); - name = new string[n_clock](); - class_name = new string[n_clock](); - calls = new int[n_clock](); - delete_flag = true; - - for (int i = 0; i < n_clock; i++) - { - cpu_start[i] = (double)start_flag; - name[i]= "\0"; - class_name[i]= "\0"; - calls[i] = 0; - } - - // first init ,then we can use tick - timer::tick("","total"); - return; -} - -double timer::cpu_time(void) -{ - clock_t t1 = 0; -//---------------------------------------------------------- -// EXPLAIN : here static is important !! -// only first call can let t0 = 0,clock begin -// when enter this function second time , t0 > 0 -//---------------------------------------------------------- - static clock_t t0 = 0; - if (t0 == 0) - { - t0 = clock(); - } - t1 = clock() - t0; - - if(t1 < 0) return 0; // mohan add, abandon the cross point time 2^32 ~ -2^32 . - else return (double)t1/CLOCKS_PER_SEC; -} - -void timer::tick(const string &tagc,const string &tag) -{ -//---------------------------------------------------------- -// EXPLAIN : if timer is disabled , return -//---------------------------------------------------------- - if (disabled) - { - return; - } - - int find_clock=0;//counter -//---------------------------------------------------------- -// EXPLAIN : find if the tag has been used -//---------------------------------------------------------- - for(find_clock=0; find_clock= n_clock) - { - cout << "\nError! Too many timer!"; - return; - } - -//---------------------------------------------------------- -// CALL MEMBER FUNCTION : -// NAME : cpu_time -// -// EXPLAIN : start_flag is minus 1, -// so if cpu_start == start_flag,means a new clock counting -// begin, hence we record the start time of this clock -// counting , if cpu_start != start_flag, means it's -// the end of this counting, so we add the time during -// this two 'time point' to the clock time storage. -//---------------------------------------------------------- - if (cpu_start[find_clock] == start_flag ) - { - cpu_start[find_clock] = cpu_time(); - calls[find_clock]++; - } - else - { - cpu_second[find_clock] += cpu_time() - cpu_start[find_clock]; - cpu_start[find_clock] = start_flag; - } - return; -} - - - -void timer::enable(void) -{ - disabled = false; - return; -} - -void timer::disable(void) -{ - disabled = true; - return; -} - -double timer::print(const string &tag) -{ - int index = 0; - for(int i=0; i 1s , set small = 10^6 - - cout<<"\n--------- CLASS NAME--------------- NAME ----- TIME(sec) -- CALLS ----- AVG ----- PER%"; - bool *print_flag = new bool[n_clock]; - for(int i=0; i -#include -#include -#include -#include -using namespace std; - -//========================================================== -// CLASS : -// NAME : timer(calculate time) -//========================================================== -class timer -{ - timer(); - ~timer(); - - public: -//========================================================== -// MEMBER FUNCTIONS : -// NAME : tick(use twice at a time) -// NAME : start -// NAME : finish -// NAME : enable -// NAME : disable -// NAME : print -// NAME : print_all -//========================================================== - static void tick(const string &class_name_in,const string &name_in); - - static void start(void); - static void finish(void); - - static void enable(void); - static void disable(void); - - static void print_all(void); - static long double print_until_now(void); - static double print(const string &name_in); - - private: - -//========================================================== -// MEMBER VARIABLES : -// NAME : disabled(if disabled , timer can't work) -// NAME : n_clock(uplimit number of clock numbers) -// NAME : n_now(the index of clocks) -// NAME : start_flag -// NAME : cpu_start -// NAME : cput_second(record cpu time) -// NAME : name(record clock name) -// NAME : class_name(record another name for clock) -//========================================================== - static bool disabled; - static int n_clock; - static int n_now; - static int start_flag; - static double *cpu_start; - static double *cpu_second; - static string *name; - static string *class_name; - static int *calls; - -//========================================================== -// MEMBER FUNCTIONS : -// NAME : cpu_time(calculate time) -//========================================================== - static double cpu_time(void); - static bool delete_flag; - -}; -#endif - diff --git a/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_tools/vector3.h b/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_tools/vector3.h deleted file mode 100644 index 945f117855..0000000000 --- a/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/src_tools/vector3.h +++ /dev/null @@ -1,237 +0,0 @@ -//========================================================== -// -//========================================================== -#ifndef VECTOR3_H -#define VECTOR3_H - -#ifdef _MCD_CHECK -#include "./src_parallel/mcd.h" -#endif - -#include -#include -#include -using namespace std; - -template -class Vector3 -{ -public: - T x; - T y; - T z; - Vector3(const T &x1 = 0,const T &y1 = 0,const T &z1 = 0); - - Vector3& operator=(const Vector3 &u); - Vector3& operator+=(const Vector3 &u); - Vector3& operator-=(const Vector3 &u); - Vector3& operator*=(const Vector3 &u); - Vector3& operator*=(const T &s); - Vector3& operator/=(const Vector3 &u); - Vector3& operator/=(const T &s); - - void set(const T &x1, const T &y1,const T &z1); - - inline T norm(void) const - { return sqrt(x*x + y*y + z*z); } - - T norm2(void)const; - void normalize(void); - void reverse(void); - - // mohan add 2009-11-29 - void print(void)const ; -}; - -template -Vector3 operator+(const Vector3 &u,const Vector3 &v); -template -Vector3 operator-(const Vector3 &u,const Vector3 &v); -// | i j k | -// | ux uy uz | -// | vx vy vz | -//u.v=(uy*vz-uz*vy)i+(-ux*vz+uz*vx)j+(ux*vy-uy*vx)k -template -Vector3 operator^(const Vector3 &u,const Vector3 &v); -//u.v=(ux*vx)+(uy*vy)+(uz*vz) -template -T operator*(const Vector3 &u,const Vector3 &v); -template -Vector3 operator*(const T &s,const Vector3 &u); -template -Vector3 operator/(const Vector3 &u,const T &s); -template -Vector3 cross(const Vector3 &u,const Vector3 &v); -//u.v=(ux*vx)+(uy*vy)+(uz*vz) -template -T dot(const Vector3 &u,const Vector3 &v); -//template -//T TripleSalarProduct(Vector3 u, Vector3 v, Vector3 w); - -//========================================================== -// Define Constructor -//========================================================== -template -Vector3::Vector3(const T &x1,const T &y1, const T &z1) -:x(x1),y(y1),z(z1) -{} - -template -void Vector3::set(const T &x1,const T &y1,const T &z1) -{ - x = x1; y = y1; z = z1; -} - -template -T Vector3::norm2(void)const -{ - return x*x + y*y + z*z; -} - -//|v| = sqrt(x*x+y*y+z*z)=1 -template -void Vector3::normalize(void) -{ - T m = sqrt(x*x + y*y + z*z); - x /= m;y /= m;z /= m; -} - -template -void Vector3::reverse(void) -{ - x = -x;y = -y;z = -z; -} - -template -Vector3& Vector3::operator=(const Vector3 &u) -{ - x = u.x;y = u.y;z = u.z; - return *this; -} - -template -Vector3& Vector3::operator+=(const Vector3 &u) -{ - x += u.x;y += u.y;z += u.z; - return *this; -} - -template -Vector3& Vector3::operator-=(const Vector3 &u) -{ - x -= u.x;y -= u.y;z -= u.z; - return *this; -} - -template -Vector3& Vector3::operator*=(const T &s) -{ - x *= s;y *= s;z *= s; - return *this; -} - -template -Vector3& Vector3::operator/=(const T &s) -{ - x /= s;y /= s;z /= s; - return *this; -} - -template -Vector3 operator+(const Vector3 &u,const Vector3 &v) -{ - return Vector3(u.x + v.x, u.y + v.y, u.z + v.z); -} - -template -Vector3 operator-(const Vector3 &u,const Vector3 &v) -{ - return Vector3(u.x - v.x, u.y - v.y, u.z - v.z); -} - -// u.v=(uy*vz-uz*vy)i+(-ux*vz+uz*vx)j+(ux*vy-uy*vzx)k -template -Vector3 operator^(const Vector3 &u,const Vector3 &v) -{ - return Vector3 (u.y * v.z - u.z * v.y, - -u.x * v.z + u.z * v.x, - u.x * v.y - u.y * v.x); -} - -//u.v=(ux*vx)+(uy*vy)+(uz*vz) -template -T operator*(const Vector3 &u,const Vector3 &v) -{ - return (u.x * v.x + u.y * v.y + u.z * v.z); -} - -template // mohan add 2009-5-10 -Vector3 operator*(const Vector3 &u, const T &s) -{ - return Vector3(u.x * s, u.y * s, u.z * s); -} - -template -Vector3 operator*(const T &s,const Vector3 &u) -{ - return Vector3(u.x * s, u.y * s, u.z * s); -} - -template -Vector3 operator /(const Vector3 &u,const T &s) -{ - return Vector3(u.x / s, u.y / s, u.z / s); -} - -// u.v=(uy*vz-uz*vy)i+(-ux*vz+uz*vx)j+(ux*vy-uy*vzx)k -template -Vector3 cross(const Vector3 &u, const Vector3 &v) -{ - return Vector3 (u.y * v.z - u.z * v.y, - -u.x * v.z + u.z * v.x, - u.x * v.y - u.y * v.x); -} - -template -T dot(const Vector3 &u,const Vector3 &v) -{ - return (u.x * v.x + u.y * v.y + u.z * v.z); -} - -//whether u == v -template -bool operator ==(const Vector3 &u, const Vector3 &v) -{ - if(u.x == v.x && u.y == v.y && u.z == v.z) - { - return true; - } - return false; -} - -//whether m1 != m2 -template -bool operator !=(const Vector3 &u, const Vector3 &v) -{ - return !(u == v); -} - -template -void Vector3::print(void)const -{ - cout.precision(5) ; - cout << "(" << setw(10) << x << "," << setw(10) << y << "," - << setw(10) << z << ")" << endl ; - return ; -} - -//s = u.(v x w) -//template -//T TripleScalarProduct(Vector3 u, Vector3 v, Vector3 w) -//{ -// return T((u.x * (v.y * w.z - v.z * w.y)) + -// (u.y * (-v.x * w.z + v.z * w.x)) + -// (u.z * (v.x * w.y - v.y * w.x))); -//} - -#endif diff --git a/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/tests_p/INPUT b/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/tests_p/INPUT deleted file mode 100644 index 7ef20626a7..0000000000 --- a/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/tests_p/INPUT +++ /dev/null @@ -1,79 +0,0 @@ - -1 // if or not calculate the spillage. 1/0 -0 // restart from file or not. 1/0 -0 // if or not output the file. 1/0 -1 // number of structures. -/home/mohan/3_my_program/1_MCSP/GaAs.10.5.dat_haha - - - -8 //number of kpoints. -1 //number of pools. - - - -20 - - - -2 //1:max 2:average - - - -1.0e-9 // Init temparature for spillage -0.5 // Cooling rate -1 // Number of temperatures(spillage) -0 // Number of temperatures(kinetical) -100 // Number of steps per temparature -0.005 // Delta kappa -5 // Selectly output information -100 // Acceptance_steps -0.4 // Acceptance_high -0.2 // Acceptance_low -100 // Max kinetic energy(Rydberg). -0.01 // 'dr' for kinetic minimized. -1 // 1: Kin 2: Ecut - - - -0 // to control the number of bands.(Yes1/No0) -3 // int, the start band index(>0). -4 // int, the ed band index( - - -2 // Number of levels. -# label / na / skip / lmax / each L / -31 1 new 2 0 1 1 -33 1 new 2 0 1 1 - -31 1 new 1 1 1 -33 1 new 1 1 1 - - - - - -0.005 //dr(a.u.) of uniform mesh. Attention!!dr will affect kinetic energy minmized largely. --6 //xmin -1 //zed, chosen as valence charge. -0.01 //dx -6.0 //xmax - - - -0 -2 -./FILE/Si-S.ORBITAL -0 -./FILE/Si-P.ORBITAL -1 - - - -0 // 'yes' to do this. -14.0 // rcut, only useful for test program -0.01 // dr, for simpson integral -2 // test eigenvalue index -2 // lmax - diff --git a/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/tests_p/mpi.sh b/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/tests_p/mpi.sh deleted file mode 100644 index 516726f973..0000000000 --- a/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/tests_p/mpi.sh +++ /dev/null @@ -1,17 +0,0 @@ -#!/bin/bash -# -#PBS -l nodes=2:ppn=4 -#PBS -j oe -#PBS -V -#PBS -N MCSP - -# go to work dir -cd $PBS_O_WORKDIR - -# setup Nums of Processor -NP=`cat $PBS_NODEFILE|wc -l` -echo "Numbers of Processors: $NP" -echo "---------------------------" - -# running program -/share/data1/mpich-intel/bin/mpirun -np $NP -machinefile $PBS_NODEFILE ../040.MCSP_p.exe > Log.txt diff --git a/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/tests_p/node_openmpi b/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/tests_p/node_openmpi deleted file mode 100644 index a816c13efc..0000000000 --- a/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/tests_p/node_openmpi +++ /dev/null @@ -1 +0,0 @@ -compute-0-13 diff --git a/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/tests_p/p.sh b/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/tests_p/p.sh deleted file mode 100644 index 8e958557ec..0000000000 --- a/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/tests_p/p.sh +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/sh -#/share/data2/openmpi-gnu/bin/mpirun -np $1 -machinefile node_openmpi ../042.MCSP_p.exe -/opt/openmpi-intel9/bin/mpirun -np $1 -machinefile node_openmpi ../042.MCSP_p.exe - diff --git a/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/tests_s/INPUT b/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/tests_s/INPUT deleted file mode 100644 index 3f6fb190e0..0000000000 --- a/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/tests_s/INPUT +++ /dev/null @@ -1,83 +0,0 @@ - -1 // if or not calculate the spillage. 1/0 -0 // restart or not. 1/0 -1 // if or not output the file. 1/0 -1 // number of structures. -H-6-0.6.15.dat - - - -1 //number of k points -1 // number of pools - - - -15 - - - -2 - - - -1.0e-8 // Start temparature for spillage -0.5 // Cooling rate -2 // Number of temperatures(spillage) -500 // Number of steps per temparature - -1.0e-2 // start temperature for kinetic energy -0.8 // Cooling rate -1 // Number of temperatures(kinetical) -100 // Number of steps per temparature - -0.05 // Delta kappa -49 // Selectly output information - -100 // Acceptance_steps -0.4 // Acceptance_high -0.2 // Acceptance_low - -50 // Max kinetic energy(Rydberg). -0.01 // 'dr' for kinetic minimized. -1 // 1: Kin 2: Ecut - - - -1 // to control the number of bands.(Yes1/No0) -1 // int, the start band index(>0). -1 // int, the ed band index( - - -2 // Number of levels. -# label / na / skip / lmax / each L / -01 2 new 1 1 1 -01 2 new 1 1 1 -01 2 new 1 1 1 - - - -0.01 //dr(a.u.) of uniform mesh. Attention!!dr will affect kinetic energy minmized largely. --6 //xmin -1 //zed, chosen as valence charge. -0.01 //dx -6.0 //xmax - - - -0 -2 -./FILE/Si-S.ORBITAL -0 -./FILE/Si-P.ORBITAL -1 - - - -0 // 'yes' to do this. -14.0 // rcut, only useful for test program -0.01 // dr, for simpson integral -2 // test eigenvalue index -2 // lmax - - diff --git a/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/tests_s/s.sh b/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/tests_s/s.sh deleted file mode 100644 index 225b61ca0d..0000000000 --- a/tools/SIAB/SimulatedAnnealing/backup_old_version/1_Source/tests_s/s.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh -#/share/apps/mpich/1.2.7-gnu/bin/mpirun -machinefile node -np $1 ./fp_mpi.x $2 -../046.MCSP_s.exe diff --git a/tools/SIAB/SimulatedAnnealing/backup_old_version/2_Generate/07_N/07_N.stru b/tools/SIAB/SimulatedAnnealing/backup_old_version/2_Generate/07_N/07_N.stru deleted file mode 100644 index 2822c6509d..0000000000 --- a/tools/SIAB/SimulatedAnnealing/backup_old_version/2_Generate/07_N/07_N.stru +++ /dev/null @@ -1,15 +0,0 @@ -ATOMIC_SPECIES -N 1 N.LDA.UPF -LATTICE_CONSTANT -20 // add lattice constant(a.u.) -LATTICE_VECTORS -1 0 0 -0 1 0 -0 0 1 -ATOMIC_POSITIONS -Cartesian_angstrom //Cartesian or Direct coordinate. -N //Element Label -0.0 //starting magnetism -2 //number of atoms -0.0 0.0 0.0 0 0 0 // crystal coor. -0.0 0.0 3.0 0 0 0 diff --git a/tools/SIAB/SimulatedAnnealing/backup_old_version/2_Generate/07_N/6/INPUT b/tools/SIAB/SimulatedAnnealing/backup_old_version/2_Generate/07_N/6/INPUT deleted file mode 100644 index e679976f94..0000000000 --- a/tools/SIAB/SimulatedAnnealing/backup_old_version/2_Generate/07_N/6/INPUT +++ /dev/null @@ -1,85 +0,0 @@ - -1 // if or not calculate the spillage. 1/0 -0 // restart or not. 1/0 -1 // if or not output the file. 1/0 -5 // number of structures. -../N-6-1.0.20.dat -../N-6-1.1.20.dat -../N-6-1.5.20.dat -../N-6-2.0.20.dat -../N-6-3.0.20.dat - - - -1 //number of k points -1 // number of pools - - - -100 - - - -2 - - - -1.0e-4 // Start temparature for spillage -0.8 // Cooling rate -20 // Number of temperatures(spillage) -500 // Number of steps per temparature - -1.0e-2 // start temperature for kinetic energy -0.8 // Cooling rate -15 // Number of temperatures(kinetical) -500 // Number of steps per temparature - -0.01 // Delta kappa -50 // Selectly output information - -100 // Acceptance_steps -0.4 // Acceptance_high -0.2 // Acceptance_low - -100 // Max kinetic energy(Rydberg). -0.01 // 'dr' for kinetic minimized. -1 // 1: Kin 2: Ecut - - - - -1 // to control the number of bands.(Yes1/No0) -1 // int, the start band index(>0). -5 // int, the ed band index( - -2 // Number of levels. -label / na / skip / lmax / each L / -07 2 new 1 1 1 -07 2 new 2 1 1 1 - - -0.01 //dr(a.u.) of uniform mesh. Attention!!dr will affect kinetic energy minmized largely. --6 //xmin -1 //zed, chosen as valence charge. -0.01 //dx -6.0 //xmax - - - -0 -2 -./FILE/Si-S.ORBITAL -0 -./FILE/Si-P.ORBITAL -1 - - - -0 // 'yes' to do this. -14.0 // rcut, only useful for test program -0.01 // dr, for simpson integral -2 // test eigenvalue index -2 // lmax - - diff --git a/tools/SIAB/SimulatedAnnealing/backup_old_version/2_Generate/07_N/6/ORBITAL_ECUT.txt b/tools/SIAB/SimulatedAnnealing/backup_old_version/2_Generate/07_N/6/ORBITAL_ECUT.txt deleted file mode 100644 index 7e6cd30872..0000000000 --- a/tools/SIAB/SimulatedAnnealing/backup_old_version/2_Generate/07_N/6/ORBITAL_ECUT.txt +++ /dev/null @@ -1,40 +0,0 @@ -WaveFunctionIndex=0 -T=0 L=0 N=0 -Psi(r) norm=1 -Psi(k) norm=0.999999782881 -Ecut(Ry)(norm>0.9900)=9.9458 -Ecut(Ry)(norm>0.9990)=25.205 -Ecut(Ry)(norm>0.9999)=56.3922 - -WaveFunctionIndex=1 -T=0 L=0 N=1 -Psi(r) norm=1 -Psi(k) norm=0.999989795187 -Ecut(Ry)(norm>0.9900)=14.9058 -Ecut(Ry)(norm>0.9990)=48.6098 -Ecut(Ry)(norm>0.9999)=119.5058 - -WaveFunctionIndex=2 -T=0 L=1 N=0 -Psi(r) norm=1 -Psi(k) norm=0.999998837269 -Ecut(Ry)(norm>0.9900)=43.245 -Ecut(Ry)(norm>0.9990)=73.6898 -Ecut(Ry)(norm>0.9999)=100.5362 - -WaveFunctionIndex=3 -T=0 L=1 N=1 -Psi(r) norm=1 -Psi(k) norm=0.999970231609 -Ecut(Ry)(norm>0.9900)=43.6178 -Ecut(Ry)(norm>0.9990)=85.2818 -Ecut(Ry)(norm>0.9999)=245.0898 - -WaveFunctionIndex=4 -T=0 L=2 N=0 -Psi(r) norm=1 -Psi(k) norm=0.99999991021 -Ecut(Ry)(norm>0.9900)=29.3378 -Ecut(Ry)(norm>0.9990)=39.2498 -Ecut(Ry)(norm>0.9999)=90.0482 - diff --git a/tools/SIAB/SimulatedAnnealing/backup_old_version/2_Generate/07_N/6/ORBITAL_KINETIC.txt b/tools/SIAB/SimulatedAnnealing/backup_old_version/2_Generate/07_N/6/ORBITAL_KINETIC.txt deleted file mode 100644 index 367a8e01e1..0000000000 --- a/tools/SIAB/SimulatedAnnealing/backup_old_version/2_Generate/07_N/6/ORBITAL_KINETIC.txt +++ /dev/null @@ -1,81 +0,0 @@ - -Type=1 L=0 N=1 - nq Coefficient Eigen(Ry) Kinetic_Energy - 0 0.1999257021 0.2741556778 0.3729652745 (Rydberg) - 1 0.3751982321 1.0966227112 2.7642403305 (Rydberg) - 2 0.3432468744 2.4674011003 3.5304040380 (Rydberg) - 3 0.2073591969 4.3864908449 1.7327165049 (Rydberg) - 4 0.0931472419 6.8538919452 0.4393041607 (Rydberg) - 5 0.0083973628 9.8696044011 0.0042991179 (Rydberg) - 6 -0.0297123833 13.4336282126 0.0629471137 (Rydberg) - 7 -0.0516185574 17.5459633797 0.2175198693 (Rydberg) - 8 -0.0382587902 22.2066099025 0.1346230553 (Rydberg) - 9 -0.0372573067 27.4155677808 0.1420138674 (Rydberg) - 10 -0.0172176072 33.1728370148 0.0333925432 (Rydberg) - 11 -0.0103250414 39.4784176044 0.0131102812 (Rydberg) - 12 0.0026804530 46.3323095496 0.0009578357 (Rydberg) - Total kinetic energy = 9.448494 -Type=1 L=0 N=2 - nq Coefficient Eigen(Ry) Kinetic_Energy - 0 -0.1702497983 0.2741556778 0.2704608137 (Rydberg) - 1 0.2534448310 1.0966227112 1.2613078798 (Rydberg) - 2 0.4888213204 2.4674011003 7.1599750417 (Rydberg) - 3 0.5222909302 4.3864908449 10.9927379792 (Rydberg) - 4 0.2303528994 6.8538919452 2.6866598328 (Rydberg) - 5 0.0620139329 9.8696044011 0.2344617885 (Rydberg) - 6 -0.1163669901 13.4336282126 0.9655181584 (Rydberg) - 7 -0.0859112414 17.5459633797 0.6025418209 (Rydberg) - 8 -0.0985168655 22.2066099025 0.8926437058 (Rydberg) - 9 -0.0426973954 27.4155677808 0.1865136443 (Rydberg) - 10 -0.0428123662 33.1728370148 0.2064630638 (Rydberg) - 11 0.0018740871 39.4784176044 0.0004319246 (Rydberg) - 12 -0.0084670389 46.3323095496 0.0095573551 (Rydberg) - Total kinetic energy = 25.469273 -Type=1 L=1 N=1 - nq Coefficient Eigen(Ry) Kinetic_Energy - 0 0.2164573822 0.5608535710 0.1823044396 (Rydberg) - 1 0.4057926751 1.6577643318 1.2230981466 (Rydberg) - 2 0.4861068166 3.3027741434 2.5785150375 (Rydberg) - 3 0.4610084700 5.4960503109 3.0559555815 (Rydberg) - 4 0.4348967984 8.2376225593 3.3738081306 (Rydberg) - 5 0.3597307410 11.5274995628 2.7554285473 (Rydberg) - 6 0.3151565858 15.3656846066 2.4577729551 (Rydberg) - 7 0.2482453379 19.7521791593 1.7375780566 (Rydberg) - 8 0.2060286651 24.6869839575 1.3432642193 (Rydberg) - 9 0.1438652547 30.1700994040 0.7263414985 (Rydberg) - 10 0.1212418394 36.2015257342 0.5665469305 (Rydberg) - 11 0.0684532379 42.7812630931 0.1967551594 (Rydberg) - 12 0.0553649958 49.9093115739 0.1392755624 (Rydberg) - Total kinetic energy = 20.336644 -Type=1 L=1 N=2 - nq Coefficient Eigen(Ry) Kinetic_Energy - 0 -0.3763905304 0.5608535710 0.5512261576 (Rydberg) - 1 -0.0888280438 1.6577643318 0.0586074867 (Rydberg) - 2 0.1302521048 3.3027741434 0.1851295502 (Rydberg) - 3 0.4325781938 5.4960503109 2.6906578410 (Rydberg) - 4 0.3949252540 8.2376225593 2.7821322575 (Rydberg) - 5 0.4671645398 11.5274995628 4.6470119505 (Rydberg) - 6 0.2754001683 15.3656846066 1.8767973849 (Rydberg) - 7 0.2885824014 19.7521791593 2.3481282166 (Rydberg) - 8 0.1505796194 24.6869839575 0.7175274811 (Rydberg) - 9 0.1931202686 30.1700994040 1.3088344972 (Rydberg) - 10 0.0634761902 36.2015257342 0.1552932442 (Rydberg) - 11 0.0871485093 42.7812630931 0.3189026032 (Rydberg) - 12 -0.0091213667 49.9093115739 0.0037802821 (Rydberg) - Total kinetic energy = 17.644029 -Type=1 L=2 N=1 - nq Coefficient Eigen(Ry) Kinetic_Energy - 0 0.2785034840 0.9227072754 0.2120066356 (Rydberg) - 1 0.5400231772 2.2977564195 1.4381202299 (Rydberg) - 2 0.5488705668 4.2181909490 2.1262000543 (Rydberg) - 3 0.5010634435 6.6861918496 2.2994761176 (Rydberg) - 4 0.4158007439 9.7022244414 1.9447098442 (Rydberg) - 5 0.3185822021 13.2664394039 1.3530246041 (Rydberg) - 6 0.1814579245 17.3788978899 0.5073962301 (Rydberg) - 7 0.0638373509 22.0396286238 0.0712584183 (Rydberg) - 8 0.0196008810 27.2486465715 0.0075148838 (Rydberg) - 9 -0.0055101245 33.0059601610 0.0006568109 (Rydberg) - 10 -0.0073862428 39.3115744362 0.0012932630 (Rydberg) - 11 -0.0419052885 46.1654925666 0.0452643366 (Rydberg) - 12 -0.0154503452 53.5677166258 0.0066473916 (Rydberg) - Total kinetic energy = 10.013569 \ No newline at end of file diff --git a/tools/SIAB/SimulatedAnnealing/backup_old_version/2_Generate/07_N/6/ORBITAL_RESULTS.txt b/tools/SIAB/SimulatedAnnealing/backup_old_version/2_Generate/07_N/6/ORBITAL_RESULTS.txt deleted file mode 100644 index a9c0f98b4b..0000000000 --- a/tools/SIAB/SimulatedAnnealing/backup_old_version/2_Generate/07_N/6/ORBITAL_RESULTS.txt +++ /dev/null @@ -1,120 +0,0 @@ - - - AUTHOR : Mohan Chen - StartDate : 2009-4-01 - LastModify: 2012-6-27 - LOCATION : LQCC, Hefei, China - EMAIL : mohan@mail.ustc.edu.cn - Description : Calculate the coefficients C4 of f(r) in Spherical Bessel Basis J(qr). - Formula : C4 = integral(r)[ f(r)*jl(qr)*r^{2} ]dr - P.S. : We default consider f(r) read from file is in the form : ( f(r) * r ). - - - - 50 Energy cutoff(Hartree.). - 6 rcut (a.u.) - 13 eigenvalue number( sqrt(ecut*2)*rcut/PI ). - 1e-12 tolerence to calculate eigenvalue. - 1 Number of atom types. - N Atom Label. - 2 Number of atoms. - 1 start band index. - 5 ended band index. - - - - 5 kinds of structures. -Average Spillage Value - 1 7.650351e-03 - 2 8.278485e-04 -StructureIndex 1 - 1 1.506165e-02 - 2 1.055605e-03 -StructureIndex 2 - 1 1.188785e-02 - 2 8.129575e-04 -StructureIndex 3 - 1 4.682161e-03 - 2 5.446124e-04 -StructureIndex 4 - 1 2.776286e-03 - 2 7.192063e-04 -StructureIndex 5 - 1 3.843813e-03 - 2 1.006862e-03 - - - - 0.0001 Start temperature (Kelvin) for spillage minimization. - 0.8 Decreasing rate of temperature. - 20 Number of different temperature (for spillage). - 500 Number of steps for each temperature (for spillage). - 0.01 Start temperature (Kelvin) for kinetical energy minimization. - 0.8 Decreasing rate of temperature. - 15 Number of different temperature (for kinetical). - 500 Number of steps for each temperature (for kineitcal). - - - - 5 Total number of radial orbitals. - Type L Zeta-Orbital - 1 0 1 - 1.999250044317221e-01 3.751969227337711e-01 3.432456765469037e-01 2.073584732609919e-01 - 9.314691687667399e-02 8.397333486846110e-03 -2.971227959854509e-02 -5.161837730564619e-02 - -3.825865671040287e-02 -3.725717664915303e-02 -1.721754715716488e-02 -1.032500537125548e-02 - 2.680443619439835e-03 - Type L Zeta-Orbital - 1 0 2 - -1.702201715837411e-01 2.534007267810289e-01 4.887362562363810e-01 5.222000416077341e-01 - 2.303128136068122e-01 6.200314129285323e-02 -1.163467400337028e-01 -8.589629116750186e-02 - -9.849972164762605e-02 -4.268996523281798e-02 -4.280491608417234e-02 1.873760994926852e-03 - -8.465565474560767e-03 - Type L Zeta-Orbital - 1 1 1 - 2.164535445775128e-01 4.057854806094318e-01 4.860981982244601e-01 4.610002966249457e-01 - 4.348890879607927e-01 3.597243631643592e-01 3.151509983240102e-01 2.482409366723193e-01 - 2.060250123843398e-01 1.438627040954304e-01 1.212396898433255e-01 6.845202427155371e-02 - 5.536401417985657e-02 - Type L Zeta-Orbital - 1 1 2 - -3.762037711323521e-01 -8.878396866870972e-02 1.301874756443146e-01 4.323635550163406e-01 - 3.947292980338761e-01 4.669327397849226e-01 2.752635189166638e-01 2.884392112197917e-01 - 1.505049040360807e-01 1.930244452517024e-01 6.344469423490053e-02 8.710526756514543e-02 - -9.116840805608572e-03 - Type L Zeta-Orbital - 1 2 1 - 2.785031543681187e-01 5.400225379952365e-01 5.488699171620391e-01 5.010628504779375e-01 - 4.158002517627723e-01 3.185818250191300e-01 1.814577097580852e-01 6.383727531458160e-02 - 1.960085784964030e-02 -5.510117995398617e-03 -7.386234028268464e-03 -4.190523892239696e-02 - -1.545032687222988e-02 - - - - 2 Total number of orbitals optimized levels. -Bands start from 0 -Bands ended at 5 -Optimized bands number 5 -Spillage per band is 2.000000000000000e-01 - -Fill Left Hilbert space of each band(average) by LCAO for Level 1 -BANDS New Fill Total Fill Left Spillage - 1 1.9779943263e-01 1.9779943263e-01 2.2005673718e-03 - 2 1.9946785652e-01 1.9946785652e-01 5.3214348069e-04 - 3 1.9863039476e-01 1.9863039476e-01 1.3696052437e-03 - 4 1.9911764330e-01 1.9911764330e-01 8.8235670366e-04 - 5 1.9733432171e-01 1.9733432171e-01 2.6656782927e-03 -New Fill Contribution = 9.9234964891e-01 -Total Fill Contribution = 9.9234964891e-01 -Left spillage = 7.6503510925e-03 - -Fill Left Hilbert space of each band(average) by LCAO for Level 2 -BANDS New Fill Total Fill Left Spillage - 1 2.0431561108e-03 1.9984258874e-01 1.5741126105e-04 - 2 4.7700392608e-04 1.9994486045e-01 5.5139554606e-05 - 3 1.2339426427e-03 1.9986433740e-01 1.3566260096e-04 - 4 6.9334367966e-04 1.9981098698e-01 1.8901302400e-04 - 5 2.3750561983e-03 1.9970937791e-01 2.9062209440e-04 -New Fill Contribution = 6.8225025575e-03 -Total Fill Contribution = 9.9917215146e-01 -Left spillage = 8.2784853502e-04 - \ No newline at end of file diff --git a/tools/SIAB/SimulatedAnnealing/backup_old_version/2_Generate/07_N/6/running_1.txt b/tools/SIAB/SimulatedAnnealing/backup_old_version/2_Generate/07_N/6/running_1.txt deleted file mode 100644 index 63af99fe91..0000000000 --- a/tools/SIAB/SimulatedAnnealing/backup_old_version/2_Generate/07_N/6/running_1.txt +++ /dev/null @@ -1,1590 +0,0 @@ - ATTENTION! YOU SELECT THE BANDS: - BANDS_START=1 BANDS_END=5 - ATTENTION! YOU SELECT BLOCK_NE=100 - ALSO BLOCK_NE_MIN=-10000 - [STRNUM] = 5 - [FILE] = ../N-6-1.0.20.dat - [LAT0] = 20 - [a1] = 1, 0, 0 - [a2] = 0, 1, 0 - [a3] = 0, 0, 1 - [NTYPE] = 1 - [LABEL] = N - [NA] = 2 - [POS] = 0, 0, 0 - [POS] = 0, 0, 0.0944863 - [ECUT(Ry)] = 50 - [ECUT_JLQ(Ry)] = 50 - [RCUT(Bohr)] = 6 - [SMOOTH] = 1 - [SIGMA] = 0.1 - [TOLERENCE] = 1e-12 - [LMAXALL] = 2 - [NKSTOT] = 1 - [NBANDS] = 8 - [NWFCALL] = 18 - [NE] = 13 - [FILE] = ../N-6-1.1.20.dat - [FILE] = ../N-6-1.5.20.dat - [FILE] = ../N-6-2.0.20.dat - [FILE] = ../N-6-3.0.20.dat - [NKS] = 1 - Kx/Ky/Kz/Kweight - 0 0 0 1 - NKS=1 - DIMENSION OF Q= - [NKS] = 1 - [NBANDS] = 8 - [NWFCALL] = 18 - [NE] = 13 - USE Q and S matrix - Kx/Ky/Kz/Kweight - 0 0 0 1 - NKS=1 - DIMENSION OF Q= - [NKS] = 1 - [NBANDS] = 8 - [NWFCALL] = 18 - [NE] = 13 - USE Q and S matrix - Kx/Ky/Kz/Kweight - 0 0 0 1 - NKS=1 - DIMENSION OF Q= - [NKS] = 1 - [NBANDS] = 8 - [NWFCALL] = 18 - [NE] = 13 - USE Q and S matrix - Kx/Ky/Kz/Kweight - 0 0 0 1 - NKS=1 - DIMENSION OF Q= - [NKS] = 1 - [NBANDS] = 8 - [NWFCALL] = 18 - [NE] = 13 - USE Q and S matrix - Kx/Ky/Kz/Kweight - 0 0 0 1 - NKS=1 - DIMENSION OF Q= - [NKS] = 1 - [NBANDS] = 8 - [NWFCALL] = 18 - [NE] = 13 - USE Q and S matrix - [nlevel] = 2 - - >>>>> Level=1 - id=7 na=2 lmax=1 - L=0 Zeta=1 fain(FULL/AVERAGE)=f start_n(0)=1 - L=1 Zeta=1 fain(FULL/AVERAGE)=f start_n(1)=1 - - >>>>> Level=2 - id=7 na=2 lmax=2 - L=0 Zeta=1 fain(FULL/AVERAGE)=f start_n(0)=2 - L=1 Zeta=1 fain(FULL/AVERAGE)=f start_n(1)=2 - L=2 Zeta=1 fain(FULL/AVERAGE)=f start_n(2)=1 - Type=1 L=0 Zeta=2 - Type=1 L=1 Zeta=2 - Type=1 L=2 Zeta=1 - N Zeta(including all atom species) = 5 - [ntype] = 1 - [lmax] = 2 - [nmax] = 2 - [ecut(Ry)] = 50 - [ecut_jlq(Ry)] = 50 - [rcut(Bohr)] = 6 - [enumber] = 13 - [enumber_jlq] = 13 - [tolerence] = 1e-12 - - Init C4: T=1 L=0 N=0 - 0.840188 0.394383 0.783099 0.79844 - 0.911647 0.197551 0.335223 0.76823 - 0.277775 0.55397 0.477397 0.628871 - 0.364784 - Init C4: T=1 L=0 N=1 - 0.513401 0.95223 0.916195 0.635712 - 0.717297 0.141603 0.606969 0.0163006 - 0.242887 0.137232 0.804177 0.156679 - 0.400944 - Init C4: T=1 L=1 N=0 - 0.12979 0.108809 0.998925 0.218257 - 0.512932 0.839112 0.61264 0.296032 - 0.637552 0.524287 0.493583 0.972775 - 0.292517 - Init C4: T=1 L=1 N=1 - 0.771358 0.526745 0.769914 0.400229 - 0.891529 0.283315 0.352458 0.807725 - 0.919026 0.0697553 0.949327 0.525995 - 0.0860558 - Init C4: T=1 L=2 N=0 - 0.192214 0.663227 0.890233 0.348893 - 0.0641713 0.020023 0.457702 0.0630958 - 0.23828 0.970634 0.902208 0.85092 - 0.266666 - Init C4: T=1 L=2 N=1 - 0.53976 0.375207 0.760249 0.512535 - 0.667724 0.531606 0.0392803 0.437638 - 0.931835 0.93081 0.720952 0.284293 - 0.738534 - Coefficients init done. - - begin read in Metropolis parameter. - - Metropolis init done. - - - =================================================== - level = 1 - =================================================== - - ---> SpillageTemp 1 - Temperature 0.0001 -STEPS SPILLAGE UPDATES - 1 0.3309946985 14 - 51 0.0087771406 19 - 101 0.0079490573 4 - 151 0.0090947695 10 - 201 0.0088332778 8 - 251 0.0089455489 13 - 301 0.0082376656 9 - 351 0.0083162101 8 - 401 0.0087117832 4 - 451 0.0082860137 12 - - ---> SpillageTemp 2 - Temperature 0.0000800000 -STEPS SPILLAGE UPDATES - 1 0.0082743277 4 - 51 0.0082003508 5 - 101 0.0084675255 9 - 151 0.0087625449 13 - 201 0.0081672612 6 - 251 0.0084199079 9 - 301 0.0082258407 5 - 351 0.0085253923 10 - 401 0.0085717830 10 - 451 0.0082892537 10 - - ---> SpillageTemp 3 - Temperature 0.0000640000 -STEPS SPILLAGE UPDATES - 1 0.0089643731 6 - 51 0.0082668436 9 - 101 0.0081673141 4 - 151 0.0081949380 7 - 201 0.0082183903 8 - 251 0.0081050102 7 - 301 0.0081340003 10 - 351 0.0079467388 7 - 401 0.0082222252 6 - 451 0.0080419315 5 - - ---> SpillageTemp 4 - Temperature 0.0000512000 -STEPS SPILLAGE UPDATES - 1 0.0080441720 6 - 51 0.0081048826 6 - 101 0.0084264015 8 - 151 0.0085138686 7 - 201 0.0078628474 6 - 251 0.0081037349 7 - 301 0.0080416538 8 - 351 0.0080321831 8 - 401 0.0081018412 8 - 451 0.0080313583 9 - - ---> SpillageTemp 5 - Temperature 0.0000409600 -STEPS SPILLAGE UPDATES - 1 0.0083568548 6 - 51 0.0079922470 7 - 101 0.0082780765 10 - 151 0.0079784420 9 - 201 0.0078877744 4 - 251 0.0080886601 9 - 301 0.0079044038 6 - 351 0.0081096348 6 - 401 0.0079948955 5 - 451 0.0084156832 10 - - ---> SpillageTemp 6 - Temperature 0.0000327680 -STEPS SPILLAGE UPDATES - 1 0.0080916426 4 - 51 0.0078989783 7 - 101 0.0080734892 5 - 151 0.0078119924 8 - 201 0.0078936969 7 - 251 0.0078943541 6 - 301 0.0079151761 3 - 351 0.0078459608 5 - 401 0.0081016012 9 - 451 0.0079922860 9 - - ---> SpillageTemp 7 - Temperature 0.0000262144 -STEPS SPILLAGE UPDATES - 1 0.0079587536 6 - 51 0.0077087018 5 - 101 0.0078779753 7 - 151 0.0077492502 10 - 201 0.0077557969 10 - 251 0.0077928864 8 - 301 0.0077980258 4 - 351 0.0077009098 7 - 401 0.0078339608 3 - 451 0.0079451743 10 - - ---> SpillageTemp 8 - Temperature 0.0000209715 -STEPS SPILLAGE UPDATES - 1 0.0078608908 9 - 51 0.0077354661 10 - 101 0.0079076298 7 - 151 0.0077017768 9 - 201 0.0078336689 7 - 251 0.0078069575 12 - 301 0.0078242767 8 - 351 0.0077138677 9 - 401 0.0077583423 8 - 451 0.0076866744 9 - - ---> SpillageTemp 9 - Temperature 0.0000167772 -STEPS SPILLAGE UPDATES - 1 0.0078694650 5 - 51 0.0076879612 3 - 101 0.0077934113 5 - 151 0.0078380508 10 - 201 0.0077046334 7 - 251 0.0077466466 8 - 301 0.0077468168 5 - 351 0.0078148585 5 - 401 0.0078381559 5 - 451 0.0078264111 8 - - ---> SpillageTemp 10 - Temperature 0.0000134218 -STEPS SPILLAGE UPDATES - 1 0.0077933037 5 - 51 0.0077006941 9 - 101 0.0077451908 6 - 151 0.0076869368 8 - 201 0.0076934570 9 - 251 0.0076805353 6 - 301 0.0077057731 3 - 351 0.0076708507 6 - 401 0.0076458727 5 - 451 0.0077264179 5 - - ---> SpillageTemp 11 - Temperature 0.0000107374 -STEPS SPILLAGE UPDATES - 1 0.0077486213 10 - 51 0.0076837475 8 - 101 0.0077174539 6 - 151 0.0076870113 6 - 201 0.0076746707 10 - 251 0.0076104973 4 - 301 0.0076532889 7 - 351 0.0076615281 8 - 401 0.0077179601 9 - 451 0.0076610017 7 - - ---> SpillageTemp 12 - Temperature 0.0000085899 -STEPS SPILLAGE UPDATES - 1 0.0076488318 5 - 51 0.0076541182 7 - 101 0.0076569555 7 - 151 0.0076227848 7 - 201 0.0076609131 13 - 251 0.0077068434 8 - 301 0.0076521429 7 - 351 0.0076357749 8 - 401 0.0076954904 11 - 451 0.0076330031 8 - - ---> SpillageTemp 13 - Temperature 0.0000068719 -STEPS SPILLAGE UPDATES - 1 0.0077120681 10 - 51 0.0076496318 6 - 101 0.0076151178 5 - 151 0.0076287363 9 - 201 0.0076440469 11 - 251 0.0076145779 5 - 301 0.0076393483 9 - 351 0.0076405271 9 - 401 0.0076857903 7 - 451 0.0076330561 10 - - ---> SpillageTemp 14 - Temperature 0.0000054976 -STEPS SPILLAGE UPDATES - 1 0.0076155824 7 - 51 0.0075981623 6 - 101 0.0076199160 11 - 151 0.0076072979 7 - 201 0.0076717832 8 - 251 0.0076065015 8 - 301 0.0075974778 9 - 351 0.0076516951 5 - 401 0.0076182869 6 - 451 0.0076318834 8 - - ---> SpillageTemp 15 - Temperature 0.0000043980 -STEPS SPILLAGE UPDATES - 1 0.0075964429 5 - 51 0.0076067077 7 - 101 0.0075957240 7 - 151 0.0075961912 7 - 201 0.0075962745 8 - 251 0.0076089490 9 - 301 0.0076158752 6 - 351 0.0076374719 9 - 401 0.0076222606 5 - 451 0.0076344774 6 - - ---> SpillageTemp 16 - Temperature 0.0000035184 -STEPS SPILLAGE UPDATES - 1 0.0076101769 5 - 51 0.0075855373 5 - 101 0.0076087578 5 - 151 0.0076147639 10 - 201 0.0076180043 9 - 251 0.0075875422 8 - 301 0.0075864171 4 - 351 0.0075983651 2 - 401 0.0076034855 5 - 451 0.0075916968 8 - - ---> SpillageTemp 17 - Temperature 0.0000028147 -STEPS SPILLAGE UPDATES - 1 0.0075974192 6 - 51 0.0075791386 5 - 101 0.0075928657 4 - 151 0.0075979190 7 - 201 0.0075922844 10 - 251 0.0075847793 11 - 301 0.0076024569 10 - 351 0.0075939144 9 - 401 0.0075808603 7 - 451 0.0075744180 10 - - ---> SpillageTemp 18 - Temperature 0.0000022518 -STEPS SPILLAGE UPDATES - 1 0.0075858718 5 - 51 0.0076061658 6 - 101 0.0075949507 9 - 151 0.0075797949 8 - 201 0.0075722436 8 - 251 0.0075884769 11 - 301 0.0075844114 8 - 351 0.0075942629 8 - 401 0.0075797609 8 - 451 0.0075894255 6 - - ---> SpillageTemp 19 - Temperature 0.0000018014 -STEPS SPILLAGE UPDATES - 1 0.0075856143 5 - 51 0.0075662509 8 - 101 0.0075849928 8 - 151 0.0075875231 9 - 201 0.0075669101 7 - 251 0.0075722579 9 - 301 0.0075758916 8 - 351 0.0075745658 9 - 401 0.0075774396 12 - 451 0.0075826563 10 - - ---> SpillageTemp 20 - Temperature 0.0000014412 -STEPS SPILLAGE UPDATES - 1 0.0075870448 6 - 51 0.0075747612 3 - 101 0.0075788916 10 - 151 0.0075722285 9 - 201 0.0075812008 7 - 251 0.0075791597 9 - 301 0.0075778654 7 - 351 0.0075739285 5 - 401 0.0075728669 6 - 451 0.0075716282 3 - - - Spillage at final temperature 0.0075761909 - Orbital 1 Initial E_kin 9.8435207212 - Orbital 2 Initial E_kin 17.6546055056 - 1s 0.0984 9.62763578 - 1p 0.177 17.63932956 - Notice: Change temperature of orbital 1 to 0.1738461571 - Notice: Change temperature of orbital 2 to 0.1738461571 - 51s 0.174 10.0582196 - 51p 0.174 17.34811765 - 101s 0.174 9.811089715 - 101p 0.174 17.11998766 - 151s 0.174 9.463845523 - 151p 0.174 17.08429263 - 201s 0.174 9.770056132 - 201p 0.174 17.1098172 - 251s 0.174 9.93977316 - 251p 0.174 17.27965214 - 301s 0.174 10.05687602 - 301p 0.174 17.30764581 - 351s 0.174 9.894898348 - 351p 0.174 17.23648344 - 401s 0.174 9.598292088 - 401p 0.174 17.36304886 - 451s 0.174 9.677738709 - 451p 0.174 17.44106461 - Temperature for orbital 1 = 0.139077 - Temperature for orbital 2 = 0.139077 - new kappa=1.01 - 1s 0.139 10.0105606 - 1p 0.139 17.79737082 - 51s 0.139 9.905800361 - 51p 0.139 17.42935556 - 101s 0.139 9.925029777 - 101p 0.139 17.15700595 - 151s 0.139 9.847855869 - 151p 0.139 17.46322202 - 201s 0.139 10.08731215 - 201p 0.139 17.15092773 - 251s 0.139 9.999744035 - 251p 0.139 17.11278982 - 301s 0.139 9.935782163 - 301p 0.139 17.21477136 - 351s 0.139 9.888885453 - 351p 0.139 17.40023143 - 401s 0.139 9.753547881 - 401p 0.139 17.41330777 - 451s 0.139 9.689487666 - 451p 0.139 17.04027621 - Temperature for orbital 1 = 0.111262 - Temperature for orbital 2 = 0.111262 - new kappa=1.01 - 1s 0.111 9.679046689 - 1p 0.111 17.20591209 - 51s 0.111 9.651772782 - 51p 0.111 17.42544761 - 101s 0.111 9.763936005 - 101p 0.111 17.01446582 - 151s 0.111 9.539872161 - 151p 0.111 17.23115944 - 201s 0.111 9.840367612 - 201p 0.111 17.15494505 - 251s 0.111 9.636225842 - 251p 0.111 17.47978738 - 301s 0.111 10.07554947 - 301p 0.111 16.99336997 - 351s 0.111 9.953302536 - 351p 0.111 17.20002945 - 401s 0.111 9.726317179 - 401p 0.111 17.41834135 - 451s 0.111 9.943599024 - 451p 0.111 17.27025359 - Temperature for orbital 1 = 0.0890092 - Temperature for orbital 2 = 0.0890092 - new kappa=1.01 - 1s 0.089 9.920501966 - 1p 0.089 17.25726278 - 51s 0.089 9.583347778 - 51p 0.089 17.20781897 - 101s 0.089 10.15397339 - 101p 0.089 17.06205039 - 151s 0.089 9.572306038 - 151p 0.089 17.19537893 - 201s 0.089 9.536663095 - 201p 0.089 17.07805797 - 251s 0.089 9.749936689 - 251p 0.089 17.19640066 - 301s 0.089 9.970329423 - 301p 0.089 17.161427 - 351s 0.089 9.957074449 - 351p 0.089 17.31961471 - 401s 0.089 9.734376491 - 401p 0.089 17.2794045 - 451s 0.089 9.740099482 - 451p 0.089 17.23890656 - Temperature for orbital 1 = 0.0712074 - Temperature for orbital 2 = 0.0712074 - new kappa=1.01 - 1s 0.0712 9.784002886 - 1p 0.0712 17.17792283 - 51s 0.0712 9.643212279 - 51p 0.0712 17.1347901 - 101s 0.0712 9.58593599 - 101p 0.0712 17.19716661 - 151s 0.0712 9.747992074 - 151p 0.0712 17.08222068 - 201s 0.0712 9.546969309 - 201p 0.0712 17.16290059 - 251s 0.0712 9.708067711 - 251p 0.0712 17.08906273 - 301s 0.0712 9.734363455 - 301p 0.0712 17.14218551 - 351s 0.0712 9.662233648 - 351p 0.0712 17.30034655 - 401s 0.0712 9.807777146 - 401p 0.0712 16.84869896 - 451s 0.0712 9.64402337 - 451p 0.0712 17.0374737 - Temperature for orbital 1 = 0.0569659 - Temperature for orbital 2 = 0.0569659 - new kappa=1.01 - 1s 0.057 9.834600102 - 1p 0.057 17.2131919 - 51s 0.057 9.629814218 - 51p 0.057 17.13800513 - 101s 0.057 9.647632576 - 101p 0.057 17.01720585 - 151s 0.057 9.642003111 - 151p 0.057 17.33321222 - 201s 0.057 9.671393942 - 201p 0.057 17.18354721 - 251s 0.057 9.867637406 - 251p 0.057 16.96792687 - 301s 0.057 9.849664911 - 301p 0.057 17.14470365 - 351s 0.057 9.418379478 - 351p 0.057 16.91680824 - 401s 0.057 9.744983431 - 401p 0.057 16.89554671 - 451s 0.057 9.724034909 - 451p 0.057 17.21255366 - Temperature for orbital 1 = 0.0455727 - Temperature for orbital 2 = 0.0455727 - new kappa=1.01 - 1s 0.0456 9.565760965 - 1p 0.0456 17.08055032 - 51s 0.0456 9.629226141 - 51p 0.0456 16.86919778 - 101s 0.0456 9.604563547 - 101p 0.0456 17.01729434 - 151s 0.0456 9.694677988 - 151p 0.0456 16.94287911 - 201s 0.0456 9.647800799 - 201p 0.0456 17.04031903 - 251s 0.0456 9.611660354 - 251p 0.0456 17.04051827 - 301s 0.0456 9.639695397 - 301p 0.0456 17.03316364 - 351s 0.0456 9.549683972 - 351p 0.0456 17.08032493 - 401s 0.0456 9.54576593 - 401p 0.0456 17.01159541 - 451s 0.0456 9.610342393 - 451p 0.0456 16.9343174 - Temperature for orbital 1 = 0.0364582 - Temperature for orbital 2 = 0.0364582 - new kappa=1.01 - 1s 0.0365 9.861430164 - 1p 0.0365 16.89159396 - 51s 0.0365 9.52217601 - 51p 0.0365 16.90950644 - 101s 0.0365 9.547805279 - 101p 0.0365 16.90306704 - 151s 0.0365 9.805034809 - 151p 0.0365 16.78256165 - 201s 0.0365 9.500556838 - 201p 0.0365 17.11523304 - 251s 0.0365 9.565687068 - 251p 0.0365 16.93114693 - 301s 0.0365 9.658022594 - 301p 0.0365 16.92043902 - 351s 0.0365 9.61020314 - 351p 0.0365 16.98445956 - 401s 0.0365 9.458837287 - 401p 0.0365 16.98282707 - 451s 0.0365 9.434558787 - 451p 0.0365 17.16768164 - Temperature for orbital 1 = 0.0291665 - Temperature for orbital 2 = 0.0291665 - new kappa=1.01 - 1s 0.0292 9.512761281 - 1p 0.0292 16.92056063 - 51s 0.0292 9.467852669 - 51p 0.0292 16.92805158 - 101s 0.0292 9.551641312 - 101p 0.0292 17.02268577 - 151s 0.0292 9.709907727 - 151p 0.0292 17.16597815 - 201s 0.0292 9.66072488 - 201p 0.0292 17.05208656 - 251s 0.0292 9.532296179 - 251p 0.0292 17.00950151 - 301s 0.0292 9.647933197 - 301p 0.0292 16.82801448 - 351s 0.0292 9.511923235 - 351p 0.0292 16.93603789 - 401s 0.0292 9.67754883 - 401p 0.0292 16.78934272 - 451s 0.0292 9.743569186 - 451p 0.0292 16.7633208 - Temperature for orbital 1 = 0.0233332 - Temperature for orbital 2 = 0.0233332 - new kappa=1.01 - 1s 0.0233 9.515123717 - 1p 0.0233 16.90343066 - 51s 0.0233 9.43352984 - 51p 0.0233 17.02839821 - 101s 0.0233 9.466108596 - 101p 0.0233 16.93211244 - 151s 0.0233 9.483058925 - 151p 0.0233 16.9682902 - 201s 0.0233 9.6221229 - 201p 0.0233 16.91400569 - 251s 0.0233 9.562249819 - 251p 0.0233 16.92121283 - 301s 0.0233 9.411474168 - 301p 0.0233 17.0113801 - 351s 0.0233 9.583135183 - 351p 0.0233 16.84773297 - 401s 0.0233 9.598621216 - 401p 0.0233 16.87217044 - 451s 0.0233 9.582863528 - 451p 0.0233 16.93248206 - Temperature for orbital 1 = 0.0186666 - Temperature for orbital 2 = 0.0186666 - new kappa=1.01 - 1s 0.0187 9.591135583 - 1p 0.0187 16.81487345 - 51s 0.0187 9.626000321 - 51p 0.0187 16.81447038 - 101s 0.0187 9.578701569 - 101p 0.0187 16.85546997 - 151s 0.0187 9.509148684 - 151p 0.0187 16.8709893 - 201s 0.0187 9.46437926 - 201p 0.0187 16.85493996 - 251s 0.0187 9.505397893 - 251p 0.0187 16.91521117 - 301s 0.0187 9.497431442 - 301p 0.0187 16.85053838 - 351s 0.0187 9.687827241 - 351p 0.0187 16.73218911 - 401s 0.0187 9.570387949 - 401p 0.0187 16.82370518 - 451s 0.0187 9.579018975 - 451p 0.0187 16.82044646 - Temperature for orbital 1 = 0.0149333 - Temperature for orbital 2 = 0.0149333 - new kappa=1.01 - 1s 0.0149 9.470588761 - 1p 0.0149 16.97780582 - 51s 0.0149 9.554483964 - 51p 0.0149 16.78387462 - 101s 0.0149 9.510341093 - 101p 0.0149 16.8548797 - 151s 0.0149 9.529134212 - 151p 0.0149 16.79012253 - 201s 0.0149 9.533698645 - 201p 0.0149 16.82985203 - 251s 0.0149 9.546054237 - 251p 0.0149 16.82680756 - 301s 0.0149 9.62935242 - 301p 0.0149 16.7547523 - 351s 0.0149 9.602463331 - 351p 0.0149 16.71889076 - 401s 0.0149 9.521937578 - 401p 0.0149 16.80439454 - 451s 0.0149 9.536978714 - 451p 0.0149 16.78948973 - Temperature for orbital 1 = 0.0119466 - Temperature for orbital 2 = 0.0119466 - new kappa=1.01 - 1s 0.0119 9.649508527 - 1p 0.0119 16.69255941 - 51s 0.0119 9.49071347 - 51p 0.0119 16.78940465 - 101s 0.0119 9.583400967 - 101p 0.0119 16.71654806 - 151s 0.0119 9.526409039 - 151p 0.0119 16.74960102 - 201s 0.0119 9.550596643 - 201p 0.0119 16.78634246 - 251s 0.0119 9.535570512 - 251p 0.0119 16.80657201 - 301s 0.0119 9.455019123 - 301p 0.0119 16.86067353 - 351s 0.0119 9.478687985 - 351p 0.0119 16.85942795 - 401s 0.0119 9.532661894 - 401p 0.0119 16.83899486 - 451s 0.0119 9.481166055 - 451p 0.0119 16.8070209 - Temperature for orbital 1 = 0.00955729 - Temperature for orbital 2 = 0.00955729 - new kappa=1.01 - 1s 0.00956 9.432259571 - 1p 0.00956 16.87014768 - 51s 0.00956 9.476787268 - 51p 0.00956 16.793239 - 101s 0.00956 9.514503427 - 101p 0.00956 16.74494795 - 151s 0.00956 9.557254588 - 151p 0.00956 16.72364963 - 201s 0.00956 9.451746378 - 201p 0.00956 16.93335851 - 251s 0.00956 9.506222556 - 251p 0.00956 16.747587 - 301s 0.00956 9.487040563 - 301p 0.00956 16.80947687 - 351s 0.00956 9.430377133 - 351p 0.00956 16.86391219 - 401s 0.00956 9.555849507 - 401p 0.00956 16.72953763 - 451s 0.00956 9.644253437 - 451p 0.00956 16.72470723 - Temperature for orbital 1 = 0.00764583 - Temperature for orbital 2 = 0.00764583 - new kappa=1.01 - 1s 0.00765 9.521783857 - 1p 0.00765 16.78810332 - 51s 0.00765 9.49792147 - 51p 0.00765 16.77961062 - 101s 0.00765 9.496810829 - 101p 0.00765 16.783224 - 151s 0.00765 9.51157508 - 151p 0.00765 16.72918137 - 201s 0.00765 9.411812314 - 201p 0.00765 16.86089304 - 251s 0.00765 9.433540842 - 251p 0.00765 16.85315641 - 301s 0.00765 9.442319755 - 301p 0.00765 16.82943614 - 351s 0.00765 9.419347576 - 351p 0.00765 16.86269655 - 401s 0.00765 9.467043024 - 401p 0.00765 16.86395374 - 451s 0.00765 9.481151163 - 451p 0.00765 16.77362151 - Temperature for orbital 1 = 0.00611667 - Temperature for orbital 2 = 0.00611667 - new kappa=1.01 - - mkb_information. - - NBANDS=8 STRNUM=5 - - - =================================================== - level = 2 - =================================================== - - Orthogonal....... - - ---> SpillageTemp 1 - Temperature 8e-05 -STEPS SPILLAGE UPDATES - 1 0.004238716431 34 - 51 0.002204185306 38 - 101 0.001891990404 36 - 151 0.001580550269 35 - 201 0.001906721007 36 - 251 0.002503391767 38 - 301 0.001851175854 33 - 351 0.001754102874 35 - 401 0.001666624408 36 - 451 0.001611573559 38 - - ---> SpillageTemp 2 - Temperature 6.4e-05 -STEPS SPILLAGE UPDATES - 1 0.002051734153 18 - 51 0.001349911931 38 - 101 0.001617876721 35 - 151 0.001639503791 38 - 201 0.002036899515 28 - 251 0.001424066012 35 - 301 0.001369776362 33 - 351 0.001752070183 26 - 401 0.001726796595 19 - 451 0.001659588375 35 - - ---> SpillageTemp 3 - Temperature 5.12e-05 -STEPS SPILLAGE UPDATES - 1 0.001733304092 3 - 51 0.00155254319 22 - 101 0.001524533221 25 - 151 0.001716600142 34 - 201 0.00170206917 23 - 251 0.001572685082 34 - 301 0.001617620237 13 - 351 0.001445621465 18 - 401 0.001981655565 16 - 451 0.001667653623 36 - - ---> SpillageTemp 4 - Temperature 4.096e-05 -STEPS SPILLAGE UPDATES - 1 0.001805104273 3 - 51 0.001576287574 33 - 101 0.001290407269 21 - 151 0.001900221698 9 - 201 0.001564577799 32 - 251 0.001651007328 29 - 301 0.001452829383 25 - 351 0.001325638706 25 - 401 0.001858550845 29 - 451 0.001412465727 34 - - ---> SpillageTemp 5 - Temperature 3.2768e-05 -STEPS SPILLAGE UPDATES - 1 0.001728719099 0 - 51 0.001362944332 13 - 101 0.001414898103 9 - 151 0.0014304848 20 - 201 0.00131263858 19 - 251 0.001406024483 28 - 301 0.001514319842 27 - 351 0.001430873474 16 - 401 0.001433519397 24 - 451 0.001331035074 21 - - ---> SpillageTemp 6 - Temperature 2.62144e-05 -STEPS SPILLAGE UPDATES - 1 0.001275467932 4 - 51 0.001222585567 14 - 101 0.001123091743 10 - 151 0.00163451431 30 - 201 0.001105489795 23 - 251 0.0014937024 26 - 301 0.001243217189 27 - 351 0.001222901819 16 - 401 0.001312248413 28 - 451 0.001213965591 31 - - ---> SpillageTemp 7 - Temperature 2.097152e-05 -STEPS SPILLAGE UPDATES - 1 0.001239425769 4 - 51 0.001119722363 22 - 101 0.001203060684 18 - 151 0.001250884617 17 - 201 0.001266762645 27 - 251 0.001095720755 26 - 301 0.001077564162 29 - 351 0.001118345403 21 - 401 0.001230330172 28 - 451 0.00126890155 23 - - ---> SpillageTemp 8 - Temperature 1.6777216e-05 -STEPS SPILLAGE UPDATES - 1 0.00103769447 2 - 51 0.0009583628062 2 - 101 0.0011156847 10 - 151 0.0009934413326 33 - 201 0.001014046697 11 - 251 0.001104512138 13 - 301 0.0010400206 27 - 351 0.001075134583 18 - 401 0.000999797116 30 - 451 0.001105475085 21 - - ---> SpillageTemp 9 - Temperature 1.34217728e-05 -STEPS SPILLAGE UPDATES - 1 0.001050925662 3 - 51 0.0009624363612 23 - 101 0.0009522481368 23 - 151 0.001000534776 20 - 201 0.001001125183 19 - 251 0.001169467789 17 - 301 0.0009975585439 24 - 351 0.001020398162 19 - 401 0.001119673481 22 - 451 0.0009969132873 18 - - ---> SpillageTemp 10 - Temperature 1.073741824e-05 -STEPS SPILLAGE UPDATES - 1 0.001068694762 2 - 51 0.001103118078 19 - 101 0.001021634037 11 - 151 0.0009470125926 13 - 201 0.000925793021 18 - 251 0.0009548300248 19 - 301 0.0009831101995 29 - 351 0.0009581798058 13 - 401 0.0009749601193 26 - 451 0.0009645875099 10 - - ---> SpillageTemp 11 - Temperature 8.589934592e-06 -STEPS SPILLAGE UPDATES - 1 0.0009524029116 2 - 51 0.000963058153 15 - 101 0.0009863365535 11 - 151 0.000946408503 19 - 201 0.000915525914 12 - 251 0.0009463622763 20 - 301 0.0009954613605 17 - 351 0.0009082683608 22 - 401 0.0009284378293 10 - 451 0.0009626635686 22 - - ---> SpillageTemp 12 - Temperature 6.871947674e-06 -STEPS SPILLAGE UPDATES - 1 0.0009421413303 8 - 51 0.0009607826902 17 - 101 0.0009293895704 18 - 151 0.0009198861885 7 - 201 0.0009063273307 14 - 251 0.0009280010497 14 - 301 0.000922448856 23 - 351 0.0009120021357 13 - 401 0.0009457272902 19 - 451 0.0009401100665 13 - - ---> SpillageTemp 13 - Temperature 5.497558139e-06 -STEPS SPILLAGE UPDATES - 1 0.0008669735539 11 - 51 0.0008949974626 14 - 101 0.0008769201076 14 - 151 0.0008600503275 13 - 201 0.0009219562184 13 - 251 0.0009498936802 17 - 301 0.0009059463527 9 - 351 0.0008992085122 21 - 401 0.0009111056941 12 - 451 0.0009169568485 19 - - ---> SpillageTemp 14 - Temperature 4.398046511e-06 -STEPS SPILLAGE UPDATES - 1 0.0009320148336 5 - 51 0.0008882390874 8 - 101 0.0008527759942 10 - 151 0.0008575033318 16 - 201 0.0008565426338 17 - 251 0.0008909604504 20 - 301 0.0008442928776 11 - 351 0.0008927931227 24 - 401 0.0008592225561 15 - 451 0.0008604598681 14 - - ---> SpillageTemp 15 - Temperature 3.518437209e-06 -STEPS SPILLAGE UPDATES - 1 0.0008765026253 7 - 51 0.0008713341999 8 - 101 0.0008693094366 8 - 151 0.0008498218499 19 - 201 0.0008599048656 13 - 251 0.0008981648427 14 - 301 0.0008639679111 12 - 351 0.0008743918421 11 - 401 0.0008689389926 15 - 451 0.0008613184351 20 - - ---> SpillageTemp 16 - Temperature 2.814749767e-06 -STEPS SPILLAGE UPDATES - 1 0.000849530424 12 - 51 0.0008320238305 12 - 101 0.0008623071914 8 - 151 0.0008381675531 12 - 201 0.0008359958721 17 - 251 0.0008352792895 12 - 301 0.000828698949 9 - 351 0.0008469099688 15 - 401 0.0008470376314 12 - 451 0.0008511427712 15 - - ---> SpillageTemp 17 - Temperature 2.251799814e-06 -STEPS SPILLAGE UPDATES - 1 0.000843140494 7 - 51 0.0008539615146 13 - 101 0.0008360171289 16 - 151 0.0008300672533 14 - 201 0.0008374974691 15 - 251 0.0008353180998 16 - 301 0.0008347838497 11 - 351 0.0008341005947 7 - 401 0.0008418331923 15 - 451 0.0008346817951 12 - - ---> SpillageTemp 18 - Temperature 1.801439851e-06 -STEPS SPILLAGE UPDATES - 1 0.0008258687778 9 - 51 0.000826544169 14 - 101 0.0008264790532 7 - 151 0.0008407239161 8 - 201 0.0008365610345 11 - 251 0.0008203240439 9 - 301 0.00082989101 15 - 351 0.0008440721635 19 - 401 0.0008357438115 16 - 451 0.0008284765677 15 - - ---> SpillageTemp 19 - Temperature 1.441151881e-06 -STEPS SPILLAGE UPDATES - 1 0.0008333785162 8 - 51 0.0008238177391 8 - 101 0.0008333537279 16 - 151 0.0008241698516 11 - 201 0.0008311405367 12 - 251 0.0008343828962 11 - 301 0.0008357696759 15 - 351 0.0008274318925 10 - 401 0.0008241296197 12 - 451 0.0008388857211 8 - - ---> SpillageTemp 20 - Temperature 1.152921505e-06 -STEPS SPILLAGE UPDATES - 1 0.0008306048954 7 - 51 0.0008132937463 11 - 101 0.0008161275962 13 - 151 0.0008223109026 15 - 201 0.0008217272149 11 - 251 0.0008264780438 11 - 301 0.0008208276892 22 - 351 0.0008151810134 13 - 401 0.0008224422965 9 - 451 0.0008174043081 14 - - - Spillage at final temperature 0.0008196650601 - Orbital 1 Initial E_kin 39.96517235 - Orbital 2 Initial E_kin 21.51765972 - Orbital 3 Initial E_kin 9.037166729 - 1s 0.4 39.67100824 - 1p 0.215 20.039438 - 1d 0.0904 8.579940544 - Notice: Change temperature of orbital 1 to 0.3067077853 - Notice: Change temperature of orbital 2 to 0.3067077853 - Notice: Change temperature of orbital 3 to 0.3067077853 - 51s 0.307 30.43298678 - 51p 0.307 16.59705916 - 51d 0.307 5.997003923 - 101s 0.307 28.30153988 - 101p 0.307 15.64808848 - 101d 0.307 6.563331645 - 151s 0.307 28.04187425 - 151p 0.307 16.58653822 - 151d 0.307 6.363882516 - 201s 0.307 29.2136826 - 201p 0.307 15.23658843 - 201d 0.307 6.255017622 - 251s 0.307 27.73291149 - 251p 0.307 16.87635511 - 251d 0.307 6.410993283 - 301s 0.307 27.75736843 - 301p 0.307 16.04392269 - 301d 0.307 6.825439488 - 351s 0.307 27.14998937 - 351p 0.307 17.59485769 - 351d 0.307 6.726728974 - 401s 0.307 28.82264849 - 401p 0.307 15.86829501 - 401d 0.307 6.257442163 - 451s 0.307 27.07918977 - 451p 0.307 16.6906881 - 451d 0.307 6.74999379 - Temperature for orbital 1 = 0.245366 - Temperature for orbital 2 = 0.245366 - Temperature for orbital 3 = 0.245366 - new kappa=1.01 - 1s 0.245 28.81606863 - 1p 0.245 16.60063987 - 1d 0.245 6.467118249 - 51s 0.245 27.41715007 - 51p 0.245 15.75530891 - 51d 0.245 6.05322345 - 101s 0.245 29.16387142 - 101p 0.245 15.99173976 - 101d 0.245 6.682903877 - 151s 0.245 27.09895689 - 151p 0.245 16.51111432 - 151d 0.245 7.346237783 - 201s 0.245 26.70940176 - 201p 0.245 16.03132434 - 201d 0.245 6.81145155 - 251s 0.245 26.69606255 - 251p 0.245 15.48024705 - 251d 0.245 7.181162922 - 301s 0.245 27.95483806 - 301p 0.245 17.07888144 - 301d 0.245 6.13872147 - 351s 0.245 28.8624077 - 351p 0.245 16.04585411 - 351d 0.245 7.016546446 - 401s 0.245 27.81777376 - 401p 0.245 16.41402448 - 401d 0.245 7.09982648 - 451s 0.245 26.95335492 - 451p 0.245 17.20095472 - 451d 0.245 6.859765672 - Temperature for orbital 1 = 0.196293 - Temperature for orbital 2 = 0.196293 - Temperature for orbital 3 = 0.196293 - new kappa=1.01 - 1s 0.196 29.14928721 - 1p 0.196 16.83984062 - 1d 0.196 6.871348968 - 51s 0.196 27.5080708 - 51p 0.196 16.12733945 - 51d 0.196 6.388763137 - 101s 0.196 26.08240463 - 101p 0.196 17.04036866 - 101d 0.196 6.468669144 - 151s 0.196 27.38353557 - 151p 0.196 15.78951287 - 151d 0.196 6.487885895 - 201s 0.196 27.55650641 - 201p 0.196 15.75995315 - 201d 0.196 6.60410481 - 251s 0.196 30.50823161 - 251p 0.196 15.32752238 - 251d 0.196 6.525509706 - 301s 0.196 26.66964164 - 301p 0.196 17.01717098 - 301d 0.196 6.485673839 - 351s 0.196 26.97748859 - 351p 0.196 16.01161333 - 351d 0.196 6.738827678 - 401s 0.196 27.88642126 - 401p 0.196 15.7313449 - 401d 0.196 6.801557689 - 451s 0.196 27.29841143 - 451p 0.196 16.34533697 - 451d 0.196 6.689051629 - Temperature for orbital 1 = 0.157034 - Temperature for orbital 2 = 0.157034 - Temperature for orbital 3 = 0.157034 - new kappa=1.01 - 1s 0.157 26.91215126 - 1p 0.157 15.5842629 - 1d 0.157 6.820826291 - 51s 0.157 27.46541402 - 51p 0.157 15.34711234 - 51d 0.157 6.797486652 - 101s 0.157 27.09272522 - 101p 0.157 16.52069833 - 101d 0.157 6.263615317 - 151s 0.157 25.16653865 - 151p 0.157 17.82935386 - 151d 0.157 6.850723979 - 201s 0.157 26.14992716 - 201p 0.157 16.63195459 - 201d 0.157 6.270444893 - 251s 0.157 26.2452515 - 251p 0.157 16.5391229 - 251d 0.157 6.310441843 - 301s 0.157 26.48223344 - 301p 0.157 16.30936331 - 301d 0.157 6.527222149 - 351s 0.157 27.15367001 - 351p 0.157 15.80433055 - 351d 0.157 6.660546194 - 401s 0.157 26.40631292 - 401p 0.157 15.93727824 - 401d 0.157 7.08719209 - 451s 0.157 26.15397446 - 451p 0.157 16.22287933 - 451d 0.157 6.838154726 - Temperature for orbital 1 = 0.125628 - Temperature for orbital 2 = 0.125628 - Temperature for orbital 3 = 0.125628 - new kappa=1.01 - 1s 0.126 27.49659207 - 1p 0.126 15.35360729 - 1d 0.126 6.392221025 - 51s 0.126 27.98710135 - 51p 0.126 16.35188508 - 51d 0.126 6.432149743 - 101s 0.126 27.87714716 - 101p 0.126 14.3372253 - 101d 0.126 6.774860747 - 151s 0.126 26.74892074 - 151p 0.126 15.6202167 - 151d 0.126 6.220658763 - 201s 0.126 26.57712633 - 201p 0.126 15.07489832 - 201d 0.126 6.471023451 - 251s 0.126 26.7898173 - 251p 0.126 15.11619129 - 251d 0.126 6.507627212 - 301s 0.126 25.7617698 - 301p 0.126 15.88960109 - 301d 0.126 6.479559944 - 351s 0.126 26.41667165 - 351p 0.126 15.55528379 - 351d 0.126 6.836554051 - 401s 0.126 25.98077076 - 401p 0.126 15.72216757 - 401d 0.126 6.344748945 - 451s 0.126 26.30903812 - 451p 0.126 16.08851086 - 451d 0.126 6.390425702 - Temperature for orbital 1 = 0.100502 - Temperature for orbital 2 = 0.100502 - Temperature for orbital 3 = 0.100502 - new kappa=1.01 - 1s 0.101 26.80121561 - 1p 0.101 15.3077465 - 1d 0.101 7.257532455 - 51s 0.101 27.57579412 - 51p 0.101 14.82835257 - 51d 0.101 6.44505252 - 101s 0.101 27.57097531 - 101p 0.101 14.08457539 - 101d 0.101 7.129125376 - 151s 0.101 26.76867588 - 151p 0.101 14.60612606 - 151d 0.101 6.501155465 - 201s 0.101 25.6357622 - 201p 0.101 15.93031384 - 201d 0.101 6.501439972 - 251s 0.101 25.799775 - 251p 0.101 16.18767453 - 251d 0.101 6.438813771 - 301s 0.101 25.22509251 - 301p 0.101 16.94296153 - 301d 0.101 6.199915586 - 351s 0.101 24.90034332 - 351p 0.101 16.21236557 - 351d 0.101 6.358372066 - 401s 0.101 26.57118519 - 401p 0.101 15.05514658 - 401d 0.101 6.648967921 - 451s 0.101 25.53284443 - 451p 0.101 16.24788592 - 451d 0.101 6.448798517 - Temperature for orbital 1 = 0.0804016 - Temperature for orbital 2 = 0.0804016 - Temperature for orbital 3 = 0.0804016 - new kappa=1.01 - 1s 0.0804 25.80416903 - 1p 0.0804 16.56006214 - 1d 0.0804 6.652792259 - 51s 0.0804 26.39604219 - 51p 0.0804 14.51941537 - 51d 0.0804 6.628689568 - 101s 0.0804 26.56518448 - 101p 0.0804 14.91171727 - 101d 0.0804 6.40079993 - 151s 0.0804 26.44046818 - 151p 0.0804 14.7443956 - 151d 0.0804 6.338915387 - 201s 0.0804 26.47184393 - 201p 0.0804 15.20952059 - 201d 0.0804 6.444584311 - 251s 0.0804 26.17006921 - 251p 0.0804 15.32737993 - 251d 0.0804 6.527346263 - 301s 0.0804 26.20035424 - 301p 0.0804 14.75709224 - 301d 0.0804 6.890219438 - 351s 0.0804 26.62434237 - 351p 0.0804 15.30781048 - 351d 0.0804 6.693932907 - 401s 0.0804 26.33707098 - 401p 0.0804 14.97498733 - 401d 0.0804 6.477676209 - 451s 0.0804 26.61952936 - 451p 0.0804 14.62631502 - 451d 0.0804 6.739112719 - Temperature for orbital 1 = 0.0643213 - Temperature for orbital 2 = 0.0643213 - Temperature for orbital 3 = 0.0643213 - new kappa=1.01 - 1s 0.0643 26.96636658 - 1p 0.0643 15.05844124 - 1d 0.0643 6.114774039 - 51s 0.0643 26.84028617 - 51p 0.0643 14.58457804 - 51d 0.0643 6.464503072 - 101s 0.0643 26.61524284 - 101p 0.0643 14.7608193 - 101d 0.0643 6.235737668 - 151s 0.0643 26.26063151 - 151p 0.0643 14.8921183 - 151d 0.0643 6.37627149 - 201s 0.0643 25.48645401 - 201p 0.0643 15.60701104 - 201d 0.0643 6.417846793 - 251s 0.0643 25.2450281 - 251p 0.0643 15.75029955 - 251d 0.0643 6.46400338 - 301s 0.0643 25.81383104 - 301p 0.0643 15.28950942 - 301d 0.0643 6.28806422 - 351s 0.0643 25.45640438 - 351p 0.0643 15.60504616 - 351d 0.0643 6.595647855 - 401s 0.0643 26.01392666 - 401p 0.0643 15.13610704 - 401d 0.0643 6.4951003 - 451s 0.0643 26.32995471 - 451p 0.0643 15.10247374 - 451d 0.0643 6.429459731 - Temperature for orbital 1 = 0.051457 - Temperature for orbital 2 = 0.051457 - Temperature for orbital 3 = 0.051457 - new kappa=1.01 - 1s 0.0515 25.67425155 - 1p 0.0515 15.51931471 - 1d 0.0515 6.493664398 - 51s 0.0515 25.6767945 - 51p 0.0515 15.18037143 - 51d 0.0515 6.518347694 - 101s 0.0515 25.65309904 - 101p 0.0515 15.35573079 - 101d 0.0515 6.607083361 - 151s 0.0515 25.81879854 - 151p 0.0515 15.26272591 - 151d 0.0515 6.403883818 - 201s 0.0515 25.47351784 - 201p 0.0515 15.48879141 - 201d 0.0515 6.491180377 - 251s 0.0515 25.59439385 - 251p 0.0515 15.35661736 - 251d 0.0515 6.73747466 - 301s 0.0515 25.61655145 - 301p 0.0515 15.16714293 - 301d 0.0515 6.743239915 - 351s 0.0515 25.44886373 - 351p 0.0515 15.51255131 - 351d 0.0515 6.400542011 - 401s 0.0515 25.58144614 - 401p 0.0515 15.10991857 - 401d 0.0515 6.634439639 - 451s 0.0515 26.1107637 - 451p 0.0515 15.06758956 - 451d 0.0515 6.255551613 - Temperature for orbital 1 = 0.0411656 - Temperature for orbital 2 = 0.0411656 - Temperature for orbital 3 = 0.0411656 - new kappa=1.01 - 1s 0.0412 26.0493607 - 1p 0.0412 14.95441561 - 1d 0.0412 6.267455848 - 51s 0.0412 25.64765183 - 51p 0.0412 15.45383789 - 51d 0.0412 6.205843943 - 101s 0.0412 25.9676965 - 101p 0.0412 14.83856396 - 101d 0.0412 6.456608623 - 151s 0.0412 26.0222611 - 151p 0.0412 15.10366429 - 151d 0.0412 6.484475617 - 201s 0.0412 25.84167413 - 201p 0.0412 14.95285074 - 201d 0.0412 6.417991304 - 251s 0.0412 25.40514199 - 251p 0.0412 15.40552435 - 251d 0.0412 6.391836593 - 301s 0.0412 25.73064582 - 301p 0.0412 15.41062119 - 301d 0.0412 6.393063652 - 351s 0.0412 25.76546361 - 351p 0.0412 15.21238376 - 351d 0.0412 6.443636115 - 401s 0.0412 26.34783504 - 401p 0.0412 14.49786784 - 401d 0.0412 6.646764929 - 451s 0.0412 26.79579584 - 451p 0.0412 14.55151669 - 451d 0.0412 6.319073175 - Temperature for orbital 1 = 0.0329325 - Temperature for orbital 2 = 0.0329325 - Temperature for orbital 3 = 0.0329325 - new kappa=1.01 - 1s 0.0329 26.45818194 - 1p 0.0329 14.64316094 - 1d 0.0329 6.270891472 - 51s 0.0329 25.76289419 - 51p 0.0329 15.06364174 - 51d 0.0329 6.521146127 - 101s 0.0329 25.82888983 - 101p 0.0329 15.05094978 - 101d 0.0329 6.25219022 - 151s 0.0329 26.06061515 - 151p 0.0329 14.97719797 - 151d 0.0329 6.353129669 - 201s 0.0329 25.7729493 - 201p 0.0329 14.73638382 - 201d 0.0329 6.495588227 - 251s 0.0329 26.23670707 - 251p 0.0329 14.5548042 - 251d 0.0329 6.383763437 - 301s 0.0329 26.28589745 - 301p 0.0329 14.45817567 - 301d 0.0329 6.237770013 - 351s 0.0329 26.094174 - 351p 0.0329 14.78606682 - 351d 0.0329 6.381721161 - 401s 0.0329 25.94594249 - 401p 0.0329 14.81208892 - 401d 0.0329 6.312659685 - 451s 0.0329 26.12163325 - 451p 0.0329 14.79066043 - 451d 0.0329 6.333235533 - Temperature for orbital 1 = 0.026346 - Temperature for orbital 2 = 0.026346 - Temperature for orbital 3 = 0.026346 - new kappa=1.01 - 1s 0.0263 26.08250044 - 1p 0.0263 14.6774487 - 1d 0.0263 6.611005627 - 51s 0.0263 25.84670355 - 51p 0.0263 14.81511356 - 51d 0.0263 6.34382471 - 101s 0.0263 25.78014199 - 101p 0.0263 14.97946446 - 101d 0.0263 6.305002605 - 151s 0.0263 25.84278467 - 151p 0.0263 14.75586173 - 151d 0.0263 6.442082538 - 201s 0.0263 25.82677235 - 201p 0.0263 14.88961345 - 201d 0.0263 6.335292119 - 251s 0.0263 25.924204 - 251p 0.0263 14.58933623 - 251d 0.0263 6.391695464 - 301s 0.0263 25.89351187 - 301p 0.0263 14.61534109 - 301d 0.0263 6.473405261 - 351s 0.0263 25.84495673 - 351p 0.0263 14.73357081 - 351d 0.0263 6.342476653 - 401s 0.0263 25.6679727 - 401p 0.0263 14.90408174 - 401d 0.0263 6.351955919 - 451s 0.0263 25.85202429 - 451p 0.0263 14.82953625 - 451d 0.0263 6.273970582 - Temperature for orbital 1 = 0.0210768 - Temperature for orbital 2 = 0.0210768 - Temperature for orbital 3 = 0.0210768 - new kappa=1.01 - 1s 0.0211 25.535221 - 1p 0.0211 15.20061268 - 1d 0.0211 6.283215989 - 51s 0.0211 25.53004414 - 51p 0.0211 15.16221758 - 51d 0.0211 6.387149938 - 101s 0.0211 25.71956405 - 101p 0.0211 15.19531986 - 101d 0.0211 6.324016932 - 151s 0.0211 25.62791271 - 151p 0.0211 15.23334183 - 151d 0.0211 6.387440375 - 201s 0.0211 25.68967139 - 201p 0.0211 14.9983746 - 201d 0.0211 6.255762049 - 251s 0.0211 25.83071454 - 251p 0.0211 14.69283911 - 251d 0.0211 6.457066047 - 301s 0.0211 25.79718971 - 301p 0.0211 14.89890604 - 301d 0.0211 6.224657325 - 351s 0.0211 25.88755813 - 351p 0.0211 14.81878778 - 351d 0.0211 6.321493829 - 401s 0.0211 25.78502656 - 401p 0.0211 14.8045349 - 401d 0.0211 6.382430445 - 451s 0.0211 25.6556047 - 451p 0.0211 14.78968773 - 451d 0.0211 6.467683082 - Temperature for orbital 1 = 0.0168614 - Temperature for orbital 2 = 0.0168614 - Temperature for orbital 3 = 0.0168614 - new kappa=1.01 - 1s 0.0169 25.60081248 - 1p 0.0169 14.7535336 - 1d 0.0169 6.564782724 - 51s 0.0169 25.57325598 - 51p 0.0169 14.8732399 - 51d 0.0169 6.313725466 - 101s 0.0169 25.65253921 - 101p 0.0169 14.72236467 - 101d 0.0169 6.529704865 - 151s 0.0169 25.57244994 - 151p 0.0169 14.79605118 - 151d 0.0169 6.402900008 - 201s 0.0169 25.78392092 - 201p 0.0169 14.73367005 - 201d 0.0169 6.370160803 - 251s 0.0169 25.79857288 - 251p 0.0169 14.71989195 - 251d 0.0169 6.345028717 - 301s 0.0169 25.64633906 - 301p 0.0169 14.83123636 - 301d 0.0169 6.365175647 - 351s 0.0169 25.88425149 - 351p 0.0169 14.56728512 - 351d 0.0169 6.432249933 - 401s 0.0169 25.71058371 - 401p 0.0169 14.6873394 - 401d 0.0169 6.4148066 - 451s 0.0169 25.56473341 - 451p 0.0169 14.82431108 - 451d 0.0169 6.408022641 - Temperature for orbital 1 = 0.0134892 - Temperature for orbital 2 = 0.0134892 - Temperature for orbital 3 = 0.0134892 - new kappa=1.01 - 1s 0.0135 25.52231626 - 1p 0.0135 14.95790021 - 1d 0.0135 6.277784551 - 51s 0.0135 25.52331378 - 51p 0.0135 15.01090972 - 51d 0.0135 6.253447614 - 101s 0.0135 25.28989054 - 101p 0.0135 15.05682143 - 101d 0.0135 6.417908857 - 151s 0.0135 25.32602525 - 151p 0.0135 15.03167125 - 151d 0.0135 6.399327215 - 201s 0.0135 25.67023414 - 201p 0.0135 14.81798677 - 201d 0.0135 6.241213669 - 251s 0.0135 25.57572419 - 251p 0.0135 14.87592317 - 251d 0.0135 6.303751063 - 301s 0.0135 25.3878796 - 301p 0.0135 15.02208482 - 301d 0.0135 6.378682399 - 351s 0.0135 25.37798809 - 351p 0.0135 14.96765003 - 351d 0.0135 6.437441094 - 401s 0.0135 25.33054398 - 401p 0.0135 15.01570326 - 401d 0.0135 6.3753643 - 451s 0.0135 25.59412327 - 451p 0.0135 14.9065055 - 451d 0.0135 6.355837484 - Temperature for orbital 1 = 0.0107913 - Temperature for orbital 2 = 0.0107913 - Temperature for orbital 3 = 0.0107913 - new kappa=1.01 - - mkb_information. - - NBANDS=8 STRNUM=5 - - NBANDS=8 STRNUM=5 diff --git a/tools/SIAB/SimulatedAnnealing/backup_old_version/2_Generate/07_N/INPUT b/tools/SIAB/SimulatedAnnealing/backup_old_version/2_Generate/07_N/INPUT deleted file mode 100644 index f0069dd7b0..0000000000 --- a/tools/SIAB/SimulatedAnnealing/backup_old_version/2_Generate/07_N/INPUT +++ /dev/null @@ -1,26 +0,0 @@ -INPUT_PARAMETERS -suffix N-6-3.0 -latname N-6-3.0 -stru_file 07_N.stru -pseudo_dir ../../../../data/elements/07_N/1_LDA/ -kpoint_file KPOINTS -wannier_card INPUTw -calculation scf -ntype 1 -nspin 1 -lmaxmax 2 - -symmetry 0 -nbands 8 - -ecutwfc 50 -scf_thr 1.0e-7 // about iteration -scf_nmax 1000 - -smearing_method gauss -smearing_sigma 0.01 - -mixing_type pulay // about charge mixing -mixing_beta 0.4 -mixing_ndim 8 -printe 1 diff --git a/tools/SIAB/SimulatedAnnealing/backup_old_version/2_Generate/07_N/INPUTs b/tools/SIAB/SimulatedAnnealing/backup_old_version/2_Generate/07_N/INPUTs deleted file mode 100644 index 6fdb094b87..0000000000 --- a/tools/SIAB/SimulatedAnnealing/backup_old_version/2_Generate/07_N/INPUTs +++ /dev/null @@ -1,8 +0,0 @@ -INPUT_ORBITAL_INFORMATION - -1 // smooth or not -0.1 // smearing_sigma -50 // energy cutoff for spherical bessel functions(Ry) -6 // cutoff of wavefunctions(a.u.) -1.0e-12 // tolerence - diff --git a/tools/SIAB/SimulatedAnnealing/backup_old_version/2_Generate/07_N/INPUTw b/tools/SIAB/SimulatedAnnealing/backup_old_version/2_Generate/07_N/INPUTw deleted file mode 100644 index 707219528d..0000000000 --- a/tools/SIAB/SimulatedAnnealing/backup_old_version/2_Generate/07_N/INPUTw +++ /dev/null @@ -1,3 +0,0 @@ -WANNIER_PARAMETERS -rcut 10 -out_spillage 2 diff --git a/tools/SIAB/SimulatedAnnealing/backup_old_version/2_Generate/DIS.txt b/tools/SIAB/SimulatedAnnealing/backup_old_version/2_Generate/DIS.txt deleted file mode 100644 index 2f29b7d239..0000000000 --- a/tools/SIAB/SimulatedAnnealing/backup_old_version/2_Generate/DIS.txt +++ /dev/null @@ -1,102 +0,0 @@ -01_H 0.6 0.75 0.9 1.2 1.5 -02_He 1.25 1.75 2.40 3.25 -03_Li 1.5 2.1 2.5 2.8 3.2 3.5 4.2 -04_Be 1.75 2.0 2.375 3.00 4.00 -05_B 1.25 1.625 2.5 3.5 -06_C 1.0 1.25 1.5 2.0 3.0 -07_N 1.0 1.1 1.5 2.0 3.0 -08_O 1.0 1.208 1.5 2.0 3.0 -09_F 1.2 1.418 1.75 2.25 3.25 -100_Fm 1.98 2.375 2.75 3.25 4.25 -101_Md 2.08 2.50 3.00 3.43 4.25 -102_No 2.60 3.125 3.75 4.27 5.00 -10_Ne 1.5 1.75 2.25 2.625 3.0 3.5 -11_Na 2.05 2.4 2.8 3.1 3.3 3.8 4.3 -12_Mg 2.125 2.375 2.875 3.375 4.5 -13_Al 2.0 2.5 3.0 3.75 4.5 -14_Si 1.75 2.0 2.25 2.75 3.75 -15_P 1.625 1.875 2.5 3.25 4.0 -16_S 1.6 1.9 2.5 3.25 4.0 -17_Cl 1.65 2.0 2.5 3.25 4.0 -18_Ar 2.25 2.625 3.0 3.375 4.0 -19_K 1.8 2.6 3.4 3.8 4.0 4.4 4.8 -20_Ca 2.5 3.0 3.5 4.0 5.0 -21_Sc 1.75 2.15 2.75 3.5 4.5 -22_Ti 1.6 1.85 2.5 3.25 4.25 -23_V 1.45 1.65 2.25 3.00 4.00 -24_Cr 1.375 1.55 2.00 2.75 3.75 -25_Mn 1.40 1.60 2.10 2.75 3.75 -26_Fe 1.45 1.725 2.25 3.00 4.00 -27_Co 1.8 2.0 2.5 3.5 -28_Ni 1.65 2.00 2.50 3.00 4.00 -29_Cu 1.8 2.2 3.0 4.0 -30_Zn 2.00 2.30 2.85 3.50 4.25 -31_Ga 1.85 2.10 2.45 3.00 4.00 -32_Ge 1.80 2.00 2.35 3.00 4.00 -33_As 1.75 2.10 2.50 3.00 4.00 -34_Se 1.85 2.15 2.50 3.00 4.00 -35_Br 1.90 2.25 2.75 3.25 4.00 -36_Kr 2.40 3.00 3.675 4.25 5.00 -37_Rb 2.45 3.00 4.00 5.00 -38_Sr 2.75 3.50 4.40 5.00 -39_Y 2.125 2.5 2.875 3.25 4.00 5.00 -40_Zr 1.9 2.25 3.00 4.00 -41_Nb 1.75 2.05 2.40 3.00 4.00 -42_Mo 1.675 1.9 2.375 3.00 4.00 -43_Tc 1.70 1.915 2.375 3.00 4.00 -44_Ru 1.725 1.925 2.375 3.00 4.00 -45_Rh 1.80 2.10 2.50 3.00 4.00 -46_Pd 2.0 2.275 2.75 3.75 -47_Ag 2.1 2.45 3.00 4.00 -48_Cd 2.15 2.50 3.10 4.00 5.00 -49_In 2.15 2.50 3.00 3.75 4.75 -50_Sn 2.10 2.40 3.75 3.50 4.50 -51_Sb 2.10 2.50 3.00 3.50 4.50 -52_Te 2.15 2.55 3.10 3.60 4.50 -53_I 2.22 2.65 3.25 4.25 -54_Xe 3.0 3.5 4.06 4.50 5.25 -55_Cs 2.70 3.50 4.50 5.50 -56_Ba 2.65 3.00 3.50 4.40 5.50 -57_La 2.2 2.6 3.25 4.00 5.00 -58_Ce 2.0 2.375 2.875 3.5 4.5 -59_Pr 1.90 2.25 2.75 3.5 4.5 -60_Nd 1.80 2.125 2.625 3.375 4.5 -61_Pm 1.775 2.05 2.5 3.25 4.25 -62_Sm 1.775 2.05 2.5 3.25 4.25 -63_Eu 1.775 2.075 2.5 3.25 4.25 -64_Gd 1.80 2.11 2.625 3.375 4.1 5.0 -65_Tb 1.825 2.16 2.625 3.375 4.1 5.0 -66_Dy 1.85 2.24 2.625 3.375 4.1 5.0 -67_Ho 1.93 2.375 3.0 4.1 5.0 -68_Er 2.025 2.5 3.125 4.1 5.0 -69_Tm 2.20 2.625 3.25 4.1 5.0 -70_Yb 2.5 3.0 3.5 4.1 5.0 -71_Lu 2.20 2.50 3.04 4.0 5.0 -72_Hf 1.975 2.49 3.25 4.50 -73_Ta 1.85 2.12 2.625 3.25 4.50 -74_W 1.775 1.99 2.50 3.25 4.50 -75_Re 1.775 2.01 2.50 3.25 4.25 -76_Os 1.80 2.04 2.50 3.25 4.50 -77_Ir 1.85 2.125 2.5 3.25 4.25 -78_Pt 2.00 2.275 2.75 3.75 -79_Au 2.10 2.45 3.00 4.00 -80_Hg 2.225 2.50 3.04 4.00 5.00 -81_Tl 2.21 2.60 3.11 3.75 4.75 -82_Pb 2.225 2.50 2.88 3.625 4.50 -83_Bi 2.225 2.61 3.125 3.75 4.75 -84_Po 2.30 2.72 3.25 3.875 4.75 -85_At 2.375 2.83 3.50 4.50 -86_Rn 2.80 3.50 4.17 4.75 5.50 -87_Fr 2.85 3.50 4.43 5.50 -88_Ra 3.15 3.50 4.25 5.12 6.00 -89_Ac 2.48 3.10 3.72 4.25 5.00 -90_Th 2.25 2.65 3.25 4.00 5.00 -91_Pa 2.04 2.30 3.00 3.75 4.75 -92_U 1.89 2.09 2.75 3.50 4.50 -93_Np 1.84 2.05 2.625 3.375 4.50 -94_Pu 1.81 2.02 2.5 3.25 4.25 -95_Am 1.81 2.03 2.5 3.25 4.25 -96_Cm 1.83 2.07 2.5 3.25 4.25 -97_Bk 1.86 2.12 2.5 3.0 4.0 -98_Cf 1.89 2.19 2.625 3.125 4.0 -99_Es 1.93 2.29 2.625 3.125 4.0 diff --git a/tools/SIAB/SimulatedAnnealing/backup_old_version/2_Generate/ORBITAL_INPUT b/tools/SIAB/SimulatedAnnealing/backup_old_version/2_Generate/ORBITAL_INPUT deleted file mode 100644 index a3c977d874..0000000000 --- a/tools/SIAB/SimulatedAnnealing/backup_old_version/2_Generate/ORBITAL_INPUT +++ /dev/null @@ -1,51 +0,0 @@ -#1.exe_dir -#-------------------------------------------------------------------------------- -EXE_pw ../../../../bin/ABACUS.fp_mpi.x -EXE_orbital ../../../1_Source/SIA_s.exe -#-------------------------------------------------------------------------------- -#( In this part, the direction of the two used exe is provided ) - -#2.electronic calculatation -#-------------------------------------------------------------------------------- -targets 07_N # element -ref_bands 5 # reference bands -nbands 8 # num of bands for calculate ( > reference bands) -Ecut 50 # cutoff energy (in Ry) -Rcut 6 # cutoff radius (in a.u.) -Pseudo_dir ../../../../data/elements/07_N/1_LDA/ -Pseudo N.LDA.UPF -smearing_sigma 0.01 # energy range for gauss smearing (in Ry) -#-------------------------------------------------------------------------------- -#( In this part , some parameters of calculating are given ) - -#3.structure information -#-------------------------------------------------------------------------------- -Dis 1.0 1.1 1.5 2.0 3.0 -#-------------------------------------------------------------------------------- -#( In this part , it gives us the bond length of the reference system( in -#angstrom) ) - -#4.orbital calculatation -#-------------------------------------------------------------------------------- -maxL 2 # the max angular momentum -Level 2 # num of levels to generate orbitals(<=5) -#(num) (the max ang) (num of S) (num of P) (num of D) (num of F) (num of G) -level1 1 1 1 -level2 2 1 1 1 -#-------------------------------------------------------------------------------- -#( In this part, some information of orbital is given ) - -#5.Metropolis parameters (in most cases do not need to change) -#-------------------------------------------------------------------------------- -Start_tem_S 1.0e-4 # start temperature for optimize Spillage (default 1.0e-4) -Start_tem_K 1.0e-2 # start temperature for optimize Kinetic (default 1.0e-2) -Step_S 20 # num of steps for optimize Spillage (default 20) -Step_K 15 # num of steps for optimize Kinetic (default 15) -Delta_kappa 0.01 # delta kappa (default 0.01) -#-------------------------------------------------------------------------------- -#( In this part , some parameters of Metropolis is given . In most cases , they -#do not need to be changed , only when you run into a situation , that the -#Kinnetic energy is larger than the maximum value allowed , you can enlarge -#the start temperature appropritely , or you can enlarge the delta_kappa, e.g. -#start_tem_k 1.0e-2 to 5.0e-1, delta_kappa 0.01 to 0.02. more steps can make -#the orbitals better , too) diff --git a/tools/SIAB/SimulatedAnnealing/backup_old_version/2_Generate/README b/tools/SIAB/SimulatedAnnealing/backup_old_version/2_Generate/README deleted file mode 100644 index 974be0126b..0000000000 --- a/tools/SIAB/SimulatedAnnealing/backup_old_version/2_Generate/README +++ /dev/null @@ -1,4 +0,0 @@ -http://abacus.ustc.edu.cn/manual_411.html can be a reference to generate orbitals. - -First, change some parameter in ORBITAL_INPUT, for EXE_pw, EXE_orbital and Pseudo_dir, you'd better use the absolute path; -Second, run the script: ./generate_orbital.sh diff --git a/tools/SIAB/SimulatedAnnealing/backup_old_version/2_Generate/generate_orbital.sh b/tools/SIAB/SimulatedAnnealing/backup_old_version/2_Generate/generate_orbital.sh deleted file mode 100644 index 074addb35d..0000000000 --- a/tools/SIAB/SimulatedAnnealing/backup_old_version/2_Generate/generate_orbital.sh +++ /dev/null @@ -1,470 +0,0 @@ -#!/bin/bash -# author mohan -# edit by Pengfei Li 2013-6-4 -# edit by Wenshuai Zhang 2016-11-30 -#----------------------------------------------------------------- -# -# (0.0) fixed parameters -# -#----------------------------------------------------------------- -mass=1 #not used yet. -lat0=20 #in a.u -cpu_num=8 -export OMP_NUM_THREADS=1 -#hostfpath="/home/nic/wszhang/eclipse_project/mesia_dft/error_estimates_for_DFT/cif2cellroot/0abacus_lcao/myhosts" -#hostfpath="/home/nic/wszhang/eclipse_project/mesia_dft/delta_test/delta_dft/cifs2deltaDFT/myhosts" -#----------------------------------------------------------------- -# -# (0.1) input parameters -# -#----------------------------------------------------------------- -# (0.1.1) get exe -EXE_pw=`grep "EXE_pw" ORBITAL_INPUT | awk -F "EXE_pw" '{print $0}' | awk '{print $2}'` - -# (0.1.2)get SIA -EXE_orbital=`grep "EXE_orbital" ORBITAL_INPUT | awk -F "EXE_orbital" '{print $0}' | awk '{print $2}'` - -# (0.1.3)get the targets element and id -targets=`grep "targets" ORBITAL_INPUT | awk -F "targets" '{print $0}' | awk '{print $2}'` - -for name in $targets; do - -element=`echo "$name" | awk -F "_" '{print $2}'` -id=`echo "$name" | awk -F "_" '{print $1}'` - -# (0.1.4)get the nbands -nbands=`grep "nbands" ORBITAL_INPUT | awk -F "nbands" '{print $0}' | awk '{print $2}'` - -# (0.1.5)get the ref_bands -ref_bands=`grep "ref_bands" ORBITAL_INPUT | awk -F "$ref_bands" '{print $0}' | awk '{print $2}'` - -# (0.1.6)get the pseudo_dir -pseudo_dir=`grep "Pseudo_dir" ORBITAL_INPUT | awk -F "Pseudo_dir" '{print $0}' | awk '{print $2}'` - -# (0.1.7)get maxL S P D -maxL=`grep "maxL" ORBITAL_INPUT | awk -F "maxL" '{print $0}' | awk '{print $2}'` - -#if ( test $maxL = 0 ) // mohan's scheme -#then -#S_MIN=1 -#P_MIN=" " -#D_MIN=" " -#elif ( test $maxL = 1 ) -#then -#S_MIN=1 -#P_MIN=1 -#D_MIN=" " -#else -#S_MIN=1 -#P_MIN=1 -#D_MIN=1 -#fi - -# (0.1.8)get the level -Level=`grep "Level" ORBITAL_INPUT | awk -F "level" '{print $0}' | awk '{print $2}'` - -# (0.1.9)get every level`s lmax s p d f g -L[0]=`grep "level1" ORBITAL_INPUT | awk -F "level1" '{print $2}'` -L[1]=`grep "level2" ORBITAL_INPUT | awk -F "level2" '{print $2}'` -L[2]=`grep "level3" ORBITAL_INPUT | awk -F "level3" '{print $2}'` -L[3]=`grep "level4" ORBITAL_INPUT | awk -F "level4" '{print $2}'` -L[4]=`grep "level5" ORBITAL_INPUT | awk -F "level5" '{print $2}'` -L[5]=`grep "level6" ORBITAL_INPUT | awk -F "level6" '{print $2}'` -L[6]=`grep "level7" ORBITAL_INPUT | awk -F "level7" '{print $2}'` -L[7]=`grep "level8" ORBITAL_INPUT | awk -F "level8" '{print $2}'` -L[8]=`grep "level9" ORBITAL_INPUT | awk -F "level9" '{print $2}'` - -# (0.1.10)get some parameters for METROPOLIS -Start_tem_S_in=`grep "Start_tem_S" ORBITAL_INPUT | awk -F "Start_tem_S" '{print $0}' | awk '{print $2}'` -if ( test $Start_tem_S_in != " ") -then -Start_tem_S=$Start_tem_S_in -else -Start_tem_S=1.0e-4 #default -fi - - -Start_tem_K_in=`grep "Start_tem_K" ORBITAL_INPUT | awk -F "Start_tem_K" '{print $0}' | awk '{print $2}'` -if ( test $Start_tem_K_in != " " ) -then -Start_tem_K=$Start_tem_K_in -else -Start_tem_K=1.0e-2 #default -fi - -Step_S_in=`grep "Step_S" ORBITAL_INPUT | awk -F "Step_S" '{print $0}' | awk '{print $2}'` -if ( test $Step_S_in != " " ) -then -Step_S=$Step_S_in -else -Step_S=20 #default -fi - -Step_K_in=`grep "Step_K" ORBITAL_INPUT | awk -F "Step_K" '{print $0}' | awk '{print $2}'` -if ( test $Step_K_in != " ") -then -Step_K=$Step_K_in -else -Step_K=15 #default -fi - -Delta_kappa_in=`grep "Delta_kappa" ORBITAL_INPUT | awk -F "Delta_kappa" '{print $0}' | awk '{print $2}'` -Delta_kappa=$Delta_kappa_in -#echo "Delta_kappa=$Delta_kappa" - -# (0.1.11) calculate the number of different dimers or trimers. -info=`grep "Dis" ORBITAL_INPUT | awk -F "Dis" '{print $2}'` -echo "info=$info" -dimers_number=`echo "$info" | awk '// {print NF}'` -echo "dimers_number=$dimers_number" - -# (0.1.12) get the ecut -ecut=`grep "Ecut" ORBITAL_INPUT | awk -F "Ecut" '{print $0}' | awk '{print $2}'` - -# (0.1.13) get the info about rcut,pseudo -info_r=`grep "Rcut" ORBITAL_INPUT | awk -F "Rcut" '{print $0}' | awk '{print $2}'` -rcut_number=`echo "$info_r" | awk '// {print NF}'` -echo "ecut=$ecut, info_r=$info_r, rcut_number=$rcut_number" - -# (0.1.14) get the pseudopotential -pseudofile=`grep "Pseudo " ORBITAL_INPUT | awk -F "Pseudo " '{print $0}' | awk '{print $2}'` -echo "pseudo=$pseudofile" - -# (0.1.15) get the smearing -smearing_sigma=`grep "smearing_sigma " ORBITAL_INPUT | awk -F "smearing_sigma " '{print $0}' | awk '{print $2}'` -echo "smearing_sigma=$smearing_sigma" - -#----------------------------------------------------------------- -# -# (1) big cicle, cicle of targets -# -#----------------------------------------------------------------- - -# (1.1) output which element you want to calculate - -echo "--------------------------> $element" - -# (1.2) make the dir, the name is 'name' -if ( test -d $name ) -then - echo "The dir exist: $name" -else - echo "make dir: $name" - mkdir $name -fi - -# (1.3) enter the name dir -cd $name - -# (1.4) another big cicle come: the rcut cicle. -count_r=1 -while [ $count_r -le $rcut_number ] -do - - # (1.4.1) - rcut=`echo "$info_r" | awk '{print $'$count_r'}' ` - echo "rcut=$rcut" - - - # (1.4.2) enter the third big cicle : the dimer distance cicle. - count=1 - while [ $count -le $dimers_number ] - do - - # (1.4.2.0) calculate the distance of dimers - dis=`echo "$info" | awk '{print $'$count'}' ` - dis1=$(echo "scale=5;$dis * 0.86603 "|bc) - dis2=$(echo "scale=5;$dis * 0.5 "|bc) - dis3=$(echo "scale=5;$dis * 0.81649 "|bc) - dis4=$(echo "scale=5;$dis * 0.28867 "|bc) - echo "dis=$dis" - - -# (1.4.2.1) get the" structures" -if ( test $element = Na -o $element = Li -o $element = K -o $element = Ca ) -then -echo "use trimer" -na=3 -cat > $name.stru << EOF -ATOMIC_SPECIES -$element $mass $pseudofile -LATTICE_CONSTANT -$lat0 // add lattice constant(a.u.) -LATTICE_VECTORS -1 0 0 -0 1 0 -0 0 1 -ATOMIC_POSITIONS -Cartesian_angstrom //Cartesian or Direct coordinate. -$element //Element Label -0.0 //starting magnetism -3 //number of atoms -0.0 0.0 0.0 0 0 0 // crystal coor. -0.0 0.0 $dis 0 0 0 -0.0 $dis1 $dis2 0 0 0 -EOF - -#elif ( test $element = Mn -o $element = Fe ) -#then -#echo "use tetramer" -#na=4 -#cat > $name.stru << EOF -#ATOMIC_SPECIES -#$element $mass $pseudofile -#LATTICE_CONSTANT -#$lat0 // add lattice constant(a.u.) -#LATTICE_VECTORS -#1 0 0 -#0 1 0 -#0 0 1 -#ATOMIC_POSITIONS -#Cartesian_angstrom //Cartesian or Direct coordinate. -#$element //Element Label -#0.0 //starting magnetism -#4 //number of atoms -#0.0 0.0 0.0 0 0 0 // crystal coor. -#0.0 0.0 $dis 0 0 0 -#0.0 $dis1 $dis2 0 0 0 -#$dis3 $dis4 $dis2 0 0 0 -#EOF - -else -echo "use dimer" -na=2 -cat > $name.stru << EOF -ATOMIC_SPECIES -$element $mass $pseudofile -LATTICE_CONSTANT -$lat0 // add lattice constant(a.u.) -LATTICE_VECTORS -1 0 0 -0 1 0 -0 0 1 -ATOMIC_POSITIONS -Cartesian_angstrom //Cartesian or Direct coordinate. -$element //Element Label -0.0 //starting magnetism -2 //number of atoms -0.0 0.0 0.0 0 0 0 // crystal coor. -0.0 0.0 $dis 0 0 0 -EOF -fi - -# (1.4.2.2) get KPOINTS -cat > KPOINTS << EOF -K_POINTS -0 -Gamma -1 1 1 0 0 0 -EOF - -# (1.4.2.3) get INPUTw -cat > INPUTw << EOF -WANNIER_PARAMETERS -rcut 10 -out_spillage 2 -EOF - - -# (1.4.2.4) get INPUTs -cat > INPUTs << EOF -INPUT_ORBITAL_INFORMATION - -1 // smooth or not -0.1 // smearing_sigma -$ecut // energy cutoff for spherical bessel functions(Ry) -$rcut // cutoff of wavefunctions(a.u.) -1.0e-12 // tolerence - -EOF - - -# (1.4.2.5) get INPUT -cat > INPUT << EOF -INPUT_PARAMETERS -suffix $element-$rcut-$dis -latname $element-$rcut-$dis -stru_file $name.stru -pseudo_dir $pseudo_dir -kpoint_file KPOINTS -wannier_card INPUTw -calculation scf -ntype 1 -nspin 1 -lmaxmax $maxL - -symmetry 0 -nbands $nbands - -ecutwfc $ecut -scf_thr 2.0e-8 // about iteration -scf_nmax 1000 - -smearing_method gauss -smearing_sigma $smearing_sigma - -mixing_type pulay // about charge mixing -mixing_beta 0.4 -mixing_ndim 8 -printe 1 -EOF - -let count++ - -# (1.4.2.6) -#test -e ../node_openmpi && cp ../node_openmpi . - -#------------- -#on Dirac -#------------- -#/opt/openmpi/bin/mpirun -np $cpu_number -machinefile node_openmpi $exe - -#------------- -#on Einstein -#------------- -#mpiexec -np $cpu_num -machinefile node_openmpi $EXE_pw -#mpiexec -np $1 -machinefile $EXE_pw -mpirun -np $cpu_num $EXE_pw -#mpirun -np $cpu_num -hostfile $hostfpath $EXE_pw - -#$EXE_pw - -#mpiexec -n 12 -machinefile $PBS_NODEFILE $EXE_pw >> Log.txt -# end (1.4.2), dimer distace cicle -done - -# (1.4.3) mkdir of rcut -test -d $rcut || mkdir $rcut -# (1.4.3.1) -cd $rcut - -# (1.4.3.2) prepare for the INPUT file -cat > INPUT << EOF - -1 // if or not calculate the spillage. 1/0 -0 // restart or not. 1/0 -1 // if or not output the file. 1/0 -$dimers_number // number of structures. -EOF - -# (1.4.3.3) input the file names -count_files=1 -while [ $count_files -le $dimers_number ] -do -dis=`echo "$info" | awk '{print $'$count_files'}' ` -cat >> INPUT << EOF -../$element-$rcut-$dis.$lat0.dat -EOF -let count_files++ -done - -cat >> INPUT << EOF - - - -1 //number of k points -1 // number of pools - - - -100 - - - -2 - - - -$Start_tem_S // Start temparature for spillage -0.8 // Cooling rate -$Step_S // Number of temperatures(spillage) -600 // Number of steps per temparature - -$Start_tem_K // start temperature for kinetic energy -0.8 // Cooling rate -$Step_K // Number of temperatures(kinetical) -600 // Number of steps per temparature - -$Delta_kappa // Delta kappa -50 // Selectly output information - -100 // Acceptance_steps -0.4 // Acceptance_high -0.2 // Acceptance_low - -100 // Max kinetic energy(Rydberg). -0.01 // 'dr' for kinetic minimized. -1 // 1: Kin 2: Ecut - - - - -1 // to control the number of bands.(Yes1/No0) -1 // int, the start band index(>0). -$ref_bands // int, the ed band index( -EOF - -cat >> INPUT << EOF - -$Level // Number of levels. -label / na / skip / lmax / each L / -EOF - -for((i=0;i<$Level;i++)) -do -cat >> INPUT << EOF -$id $na new ${L[i]} -EOF -done - -cat >> INPUT << EOF - -EOF - -cat >> INPUT << EOF - -0.01 //dr(a.u.) of uniform mesh. Attention!!dr will affect kinetic energy minmized largely. --6 //xmin -1 //zed, chosen as valence charge. -0.01 //dx -6.0 //xmax - - - -0 -2 -./FILE/Si-S.ORBITAL -0 -./FILE/Si-P.ORBITAL -1 - - - -0 // 'yes' to do this. -14.0 // rcut, only useful for test program -0.01 // dr, for simpson integral -2 // test eigenvalue index -2 // lmax - - -EOF - -#mpiexec -n 1 -machinefile $PBS_NODEFILE $EXE_orbital >> Log.txt -$EXE_orbital -#mpirun -np cpu_num $EXE_orbital - -# (1.4.3.5) -cd .. - -let count_r++ -# end(1.4), rcut cicle -done - -# (1.5) exit the name dir. -cd .. - -done -# end targets cicle - -unset OMP_NUM_THREADS diff --git a/tools/SIAB/SimulatedAnnealing/source/Makefile b/tools/SIAB/SimulatedAnnealing/source/Makefile index 8c2cdca19f..aa6ff02147 100644 --- a/tools/SIAB/SimulatedAnnealing/source/Makefile +++ b/tools/SIAB/SimulatedAnnealing/source/Makefile @@ -1,30 +1,28 @@ #=========================================================== # AUTHOR : mohan # DATE START FROM : 2009-04-14 +# LAST UPDATE : 2025-08-28 # FUNCTION : spillage makefile #=========================================================== -### Dirac -#CPLUSPLUS =CXX -O3 -w -ffast-math -funroll-loops -#CPLUSPLUS = /export/soft/intel2015/impi/5.0.2.044/intel64/bin/mpiicpc -#CXXFLAGS = -std=c++11 -O3 -openmp -#CPLUSPLUS_GPROF = g++ -gp -#CPLUSPLUS_MPI = /opt/openmpi/bin/mpicxx -O3 -w -#CPLUSPLUS_MPI=/export/soft/intel2015/impi/5.0.2.044/intel64/bin/mpiicpc +MKLROOT=/home/mohan/intel/oneapi/mkl/021.3.0/ -### Einstein -#CPLUSPLUS_MPI = /opt/openmpi-intel9/bin/mpicxx -O3 -w +#------------------------------ +# for serial version: make s +#------------------------------ +CPLUSPLUS = icpc -#LIBS=-L/export/soft/intel2015/composer_xe_2015.1.133/mkl/lib/intel64 -i-dynamic -Wl,--start-group -lmkl_intel_lp64 -lmkl_intel_thread -lmkl_core -Wl,--end-group -lpthread \ +#------------------------------ +# for parallel version: make p +#------------------------------ +#CPLUSPLUS = mpiicpc -### Version TC4600 wszhang -CPLUSPLUS = mpiicpc -CPLUSPLUS_MPI = mpiicpc -CXXFLAGS = -std=c++11 -O2 -xCORE-AVX2 -align -fma -ftz -fomit-frame-pointer -finline-functions \ - -I${MKLROOT}/include -I${MKLROOT}/include/intel64/ilp64 -LIBS = -L${MKLROOT}/lib/intel64 \ - -lmkl_blacs_intelmpi_lp64 -lmkl_scalapack_lp64 -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -lpthread -limf +CXXFLAGS = -std=c++11 -O3 - +#CXXFLAGS = -std=c++11 -O2 -xCORE-AVX2 -align -fma -ftz -fomit-frame-pointer -finline-functions \ + -I${MKLROOT}/include -I${MKLROOT}/include/intel64/ilp64 \ + -lmkl_blacs_intelmpi_lp64 -lmkl_scalapack_lp64 -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -lpthread -limf + +LIBS=-L${MKLROOT}/lib/intel64 -Wl,--start-group -lmkl_intel_lp64 -lmkl_intel_thread -lmkl_core -Wl,--end-group -liomp5 -lpthread -lm TOOLS_OBJS=src_tools/mathzone.o \ src_tools/matrix.o \ @@ -86,7 +84,7 @@ s : ${OBJS} ${CPLUSPLUS} ${CXXFLAGS} -o SIA_s.exe ${OBJS} ${LIBS} p : ${OBJS} - $(CPLUSPLUS_MPI) -D__MPI ${CXXFLAGS} -o SIA_p.exe $(OBJS) $(LIBS) + ${CPLUSPLUS} -D__MPI ${CXXFLAGS} -o SIA_p.exe ${OBJS} ${LIBS} note : @echo 'atom type label : it ' @@ -117,7 +115,6 @@ note : .cpp.o: ${CPLUSPLUS} ${CXXFLAGS} -c $< -o $@ -# $(CPLUSPLUS_MPI) -c -D__MPI $< -o $@ .PHONY:clean clean: diff --git a/tools/SIAB/SimulatedAnnealing/source/Makefile_hanhai20_hpcx2.9_intel2019 b/tools/SIAB/SimulatedAnnealing/source/Makefile_hanhai20_hpcx2.9_intel2019 deleted file mode 100644 index 4c58a4e778..0000000000 --- a/tools/SIAB/SimulatedAnnealing/source/Makefile_hanhai20_hpcx2.9_intel2019 +++ /dev/null @@ -1,124 +0,0 @@ -#=========================================================== -# AUTHOR : mohan -# DATE START FROM : 2009-04-14 -# FUNCTION : spillage makefile -#=========================================================== -### Dirac -#CPLUSPLUS =CXX -O3 -w -ffast-math -funroll-loops -#CPLUSPLUS = /export/soft/intel2015/impi/5.0.2.044/intel64/bin/mpiicpc -#CXXFLAGS = -std=c++11 -O3 -openmp -#CPLUSPLUS_GPROF = g++ -gp -#CPLUSPLUS_MPI = /opt/openmpi/bin/mpicxx -O3 -w -#CPLUSPLUS_MPI=/export/soft/intel2015/impi/5.0.2.044/intel64/bin/mpiicpc - -### Einstein -#CPLUSPLUS_MPI = /opt/openmpi-intel9/bin/mpicxx -O3 -w - -#LIBS=-L/export/soft/intel2015/composer_xe_2015.1.133/mkl/lib/intel64 -i-dynamic -Wl,--start-group -lmkl_intel_lp64 -lmkl_intel_thread -lmkl_core -Wl,--end-group -lpthread \ - -### Version TC4600 wszhang -CPLUSPLUS = /opt/hpcx/2.9.0/ompi-icc/2019.update5/bin/mpicxx -CPLUSPLUS_MPI = /opt/hpcx/2.9.0/ompi-icc/2019.update5/bin/mpicxx -CXXFLAGS = -std=c++11 -O2 -xCORE-AVX2 -align -fma -ftz -fomit-frame-pointer -finline-functions \ - -I${MKLROOT}/include -I${MKLROOT}/include/intel64/ilp64 -LIBS = -L${MKLROOT}/lib/intel64 \ - -lmkl_blacs_intelmpi_lp64 -lmkl_scalapack_lp64 -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -lpthread -limf - - - -TOOLS_OBJS=src_tools/mathzone.o \ - src_tools/matrix.o \ - src_tools/matrix3.o \ - src_tools/realarray.o \ - src_tools/intarray.o \ - src_tools/complexmatrix.o \ - src_tools/complexarray.o\ - src_tools/timer.o \ - src_tools/inverse_matrix.o\ - src_tools/inverse_matrix_iterate.o\ - src_tools/Simulated_Annealing.o\ - -SPILLAGE_OBJS=src_spillage/main.o \ - src_spillage/read_INPUT.o\ - src_spillage/ReadData.o\ - src_spillage/Calculate_C4.o\ - src_spillage/Coefficients.o\ - src_spillage/MultiZeta.o\ - src_spillage/SpillageStep.o\ - src_spillage/SpillageValue.o\ - src_spillage/Step_Data.o\ - src_spillage/Inverse_Matrix_S.o\ - src_spillage/Orthogonal.o\ - src_spillage/Type_Information.o\ - src_spillage/Metropolis.o\ - src_spillage/Metropolis_2.o\ - src_spillage/Out_Orbital.o\ - src_spillage/Plot_Psi.o\ - src_spillage/Psi_Second.o\ - src_spillage/tools.o \ - src_spillage/common.o \ - -PARALLEL_OBJS=src_parallel/parallel_global.o\ - src_parallel/parallel_common.o\ - src_parallel/parallel_reduce.o\ - src_parallel/parallel_kpoints.o - -PW_OBJS=src_pw/pw_basis.o\ - src_pw/pw_complement.o\ - src_pw/heapsort.o\ - src_pw/numerical_basis.o\ - src_pw/bessel_basis.o\ - src_pw/ylm_real.o\ - src_pw/memory_calculation.o\ - -OBJS = ${TOOLS_OBJS} \ - ${SPILLAGE_OBJS} \ - ${PARALLEL_OBJS} \ - ${PW_OBJS}\ - -help : - @echo 'make target list: ' - @echo 's : Series version of Monte Carlo Spillage Program.' - @echo 'p : Parallel Version of Monte Carlo Spillage Program.' - @echo 'note : some notes.' - -s : ${OBJS} - ${CPLUSPLUS} ${CXXFLAGS} -o SIA_s.exe ${OBJS} ${LIBS} - -p : ${OBJS} - $(CPLUSPLUS_MPI) -D__MPI ${CXXFLAGS} -o SIA_p.exe $(OBJS) $(LIBS) - -note : - @echo 'atom type label : it ' - @echo 'atom label for each type : ia ' - @echo 'The angular momentum : l ' - @echo 'The multiplicity : n ' - @echo 'The magnetic quantum num : m ' - @echo 'The k point index : ik ' - @echo 'The band index : ib ' - @echo 'The eigenvalue of Jlq : ie ' - @echo 'The radius cutoff (a.u.) : rcut ' - @echo 'The state is : psi(ib,ik) ' - @echo 'The local orbitals is : phi(it,ia,l,n,m) ' - @echo 'The index of local basis : nwfc(it,l,n)' - @echo 'The index of local basis : nwfc2(it,ia,l,n,m) ' - @echo 'The Spherical Bessel func : Jl(ie,rcut) ' - @echo 'The SB transform : \int Jl(ie,rcut) * Jl' - @echo 'The index of Jlq coef : Coef(it,l,n,ie)' - @echo 'The local orbitals formu : phi=\sum_{ie} Coef(it,l,n,ie) * Jl(ie,rcut)' - @echo 'The spillage formula is : S = ' - @echo 'The projector P is : P = \sum_{mu,nu} |phi_mu> S^{-1} = (1-P1) |psi1>' - @echo 'So we can fonud that : P1|psi2> = 0 ' - @echo 'the Q matrix is : Q = ' - @echo 'the S matrix is : S = ' - @echo 'start index of band : BANDS_START(count from 1, not 0) ' - @echo 'end index of band : BANDS_END ' - -.cpp.o: - ${CPLUSPLUS} ${CXXFLAGS} -c $< -o $@ -# $(CPLUSPLUS_MPI) -c -D__MPI $< -o $@ - -.PHONY:clean -clean: - ${RM} *.o *.exe core* src_tools/*.o src_spillage/*.o tests_s/ORBITAL* tests_s/ORBITAL* src_parallel/*.o src_pw/*.o diff --git a/tools/SIAB/SimulatedAnnealing/source/Makefiles/Makefile.Einstein b/tools/SIAB/SimulatedAnnealing/source/Makefiles/Makefile.Einstein deleted file mode 100644 index c0bd26a3e9..0000000000 --- a/tools/SIAB/SimulatedAnnealing/source/Makefiles/Makefile.Einstein +++ /dev/null @@ -1,115 +0,0 @@ -#=========================================================== -# AUTHOR : mohan -# DATE START FROM : 2009-04-14 -# FUNCTION : spillage makefile -#=========================================================== -#Dirac -CPLUSPLUS =/usr/mpi/intel/openmpi-1.4.1/bin/mpicxx -O3 -#CPLUSPLUS_GPROF = g++ -gp -#CPLUSPLUS_MPI = /opt/openmpi/bin/mpicxx -O3 -w -CPLUSPLUS_MPI=/usr/mpi/intel/openmpi-1.4.1/bin/mpicxx -#Einstein -#CPLUSPLUS_MPI = /opt/openmpi-intel9/bin/mpicxx -O3 -w - -#EINSTEIN -#LIBS=-L/home/common/lib -llapack -lblas -lf2c - -#DIRAC -#LIBS = -L/share/apps/lib/ -llapack -lblas -L/share/data1/lib/ -lf2c\ - #-L/opt/intel/fce/9.1.052/lib/ -lifcore \ -#Einstein -#LIBS = -L/share/apps/lib -llapack -lblas -L/opt/intel/fce/9.1.052/lib/ -lifcore -LIBS = -L/opt/intel/cmkl/10.2.5.035/lib/em64t -Wl,--start-group -lmkl_intel_lp64 -lmkl_intel_thread -lmkl_core -Wl,--end-group -openmp -lpthread - -TOOLS_OBJS=src_tools/mathzone.o \ - src_tools/matrix.o \ - src_tools/matrix3.o \ - src_tools/realarray.o \ - src_tools/intarray.o \ - src_tools/complexmatrix.o \ - src_tools/complexarray.o\ - src_tools/timer.o \ - src_tools/inverse_matrix.o\ - -SPILLAGE_OBJS=src_spillage/main.o \ - src_spillage/read_INPUT.o\ - src_spillage/ReadData.o\ - src_spillage/Calculate_C4.o\ - src_spillage/Coefficients.o\ - src_spillage/MultiZeta.o\ - src_spillage/SpillageStep.o\ - src_spillage/SpillageValue.o\ - src_spillage/Step_Data.o\ - src_spillage/Orthogonal.o\ - src_spillage/Type_Information.o\ - src_spillage/Metropolis.o\ - src_spillage/Out_Orbital.o\ - src_spillage/Plot_Psi.o\ - src_spillage/Psi_Second.o\ - src_spillage/tools.o \ - src_spillage/common.o \ - -PARALLEL_OBJS=src_parallel/parallel_global.o\ - src_parallel/parallel_common.o\ - src_parallel/parallel_reduce.o\ - src_parallel/parallel_kpoints.o - -PW_OBJS=src_pw/pw_basis.o\ - src_pw/pw_complement.o\ - src_pw/heapsort.o\ - src_pw/numerical_basis.o\ - src_pw/bessel_basis.o\ - src_pw/ylm_real.o\ - src_pw/memory_calculation.o\ - -OBJS = ${TOOLS_OBJS} \ - ${SPILLAGE_OBJS} \ - ${PARALLEL_OBJS} \ - ${PW_OBJS}\ - -help : - @echo 'make target list: ' - @echo 's : Series version of Monte Carlo Spillage Program.' - @echo 'p : Parallel Version of Monte Carlo Spillage Program.' - @echo 'note : some notes.' - -s : ${OBJS} - ${CPLUSPLUS} -o 045.MCSP_s.exe ${OBJS} ${LIBS} - -p : ${OBJS} - $(CPLUSPLUS_MPI) -D__MPI -o 045.MCSP_p.exe $(OBJS) $(LIBS) - -note : - @echo 'atom type label : it ' - @echo 'atom label for each type : ia ' - @echo 'The angular momentum : l ' - @echo 'The multiplicity : n ' - @echo 'The magnetic quantum num : m ' - @echo 'The k point index : ik ' - @echo 'The band index : ib ' - @echo 'The eigenvalue of Jlq : ie ' - @echo 'The radius cutoff (a.u.) : rcut ' - @echo 'The state is : psi(ib,ik) ' - @echo 'The local orbitals is : phi(it,ia,l,n,m) ' - @echo 'The index of local basis : nwfc(it,l,n)' - @echo 'The index of local basis : nwfc2(it,ia,l,n,m) ' - @echo 'The Spherical Bessel func : Jl(ie,rcut) ' - @echo 'The SB transform : \int Jl(ie,rcut) * Jl' - @echo 'The index of Jlq coef : Coef(it,l,n,ie)' - @echo 'The local orbitals formu : phi=\sum_{ie} Coef(it,l,n,ie) * Jl(ie,rcut)' - @echo 'The spillage formula is : S = ' - @echo 'The projector P is : P = \sum_{mu,nu} |phi_mu> S^{-1} = (1-P1) |psi1>' - @echo 'So we can fonud that : P1|psi2> = 0 ' - @echo 'the Q matrix is : Q = ' - @echo 'the S matrix is : S = ' - @echo 'start index of band : BANDS_START(count from 1, not 0) ' - @echo 'end index of band : BANDS_END ' - -.cpp.o: - ${CPLUSPLUS} -c $< -o $@ -# $(CPLUSPLUS_MPI) -c -D__MPI $< -o $@ - -.PHONY:clean -clean: - ${RM} *.o *.exe core* src_tools/*.o src_spillage/*.o tests_s/ORBITAL* tests_s/ORBITAL* src_parallel/*.o src_pw/*.o diff --git a/tools/SIAB/SimulatedAnnealing/source/README b/tools/SIAB/SimulatedAnnealing/source/README deleted file mode 100644 index 6c81c93ab5..0000000000 --- a/tools/SIAB/SimulatedAnnealing/source/README +++ /dev/null @@ -1 +0,0 @@ -New version with CXX11 diff --git a/tools/SIAB/SimulatedAnnealing/source/README.md b/tools/SIAB/SimulatedAnnealing/source/README.md new file mode 100644 index 0000000000..89c6641010 --- /dev/null +++ b/tools/SIAB/SimulatedAnnealing/source/README.md @@ -0,0 +1,14 @@ +The code is used to generate numerical atomic orbitals + + +The format of orbital file: + +(1) First line: +Mesh number + +(2) Second line: +delta r (unit: Bohr) + +(3) Type(always 0, you can ignore it), L(angular momentum), N (multizeta) +(4) wave function: psi (note, not psi*r). + diff --git a/tools/SIAB/SimulatedAnnealing/source/doc/Format.txt b/tools/SIAB/SimulatedAnnealing/source/doc/Format.txt deleted file mode 100644 index 8a0963fb7e..0000000000 --- a/tools/SIAB/SimulatedAnnealing/source/doc/Format.txt +++ /dev/null @@ -1,10 +0,0 @@ -The format of orbital file: - -(1) First line: -Mesh number - -(2) Second line: -delta r (unit: Bohr) - -(3) Type(always 0, you can ignore it), L(angular momentum), N (multizeta) -(4) wave function: psi (note, not psi*r). diff --git a/tools/SIAB/SimulatedAnnealing/source/src_spillage/Inverse_Matrix_S.h b/tools/SIAB/SimulatedAnnealing/source/src_spillage/Inverse_Matrix_S.h index 7317f7ef26..f177b534da 100644 --- a/tools/SIAB/SimulatedAnnealing/source/src_spillage/Inverse_Matrix_S.h +++ b/tools/SIAB/SimulatedAnnealing/source/src_spillage/Inverse_Matrix_S.h @@ -20,7 +20,7 @@ class Inverse_Matrix_S size_t dim{0}; size_t loop_count{0}; size_t exact_loop_num{1}; - const ComplexMatrix *inverse_old{nullptr}; + const ComplexMatrix *inverse_old = NULL; inline void copy_matrix_U2L(ComplexMatrix &matrix); inline void zero_matrix_L(ComplexMatrix &matrix); diff --git a/tools/SIAB/SimulatedAnnealing/source/src_spillage/Orthogonal.cpp b/tools/SIAB/SimulatedAnnealing/source/src_spillage/Orthogonal.cpp index 9c784b6ed8..71616d1405 100644 --- a/tools/SIAB/SimulatedAnnealing/source/src_spillage/Orthogonal.cpp +++ b/tools/SIAB/SimulatedAnnealing/source/src_spillage/Orthogonal.cpp @@ -42,7 +42,9 @@ void Orthogonal::start(SpillageStep &step1, SpillageStep &step2) } inverse.init( step1.data[istr].nwfc2 ); + #ifdef _OPENMP #pragma omp parallel for // Peize Lin add 2016-01-18 + #endif for (int ik=0; iknks ; ik++) { // cout << "ik=" << ik << endl; diff --git a/tools/SIAB/SimulatedAnnealing/source/src_spillage/common.h b/tools/SIAB/SimulatedAnnealing/source/src_spillage/common.h index 6973e7e896..a573be5462 100644 --- a/tools/SIAB/SimulatedAnnealing/source/src_spillage/common.h +++ b/tools/SIAB/SimulatedAnnealing/source/src_spillage/common.h @@ -24,7 +24,7 @@ using namespace std; #include "../src_tools/matrix3.h" #include "../src_tools/complexmatrix.h" #include "../src_tools/complexarray.h" -#include "../src_tools/module_external/lapack_connector.h" +#include "../src_tools/lapack_connector.h" #include "../src_tools/Random.h" #include "../src_tools/timer.h"// added 2009-4-17 #include "../src_tools/inverse_matrix.h" diff --git a/tools/SIAB/SimulatedAnnealing/source/src_spillage/main.cpp b/tools/SIAB/SimulatedAnnealing/source/src_spillage/main.cpp index 97b85d202c..19711cd88a 100644 --- a/tools/SIAB/SimulatedAnnealing/source/src_spillage/main.cpp +++ b/tools/SIAB/SimulatedAnnealing/source/src_spillage/main.cpp @@ -16,7 +16,7 @@ int main(int argc, char **argv) time_t time_start = time(NULL); timer::start(); cout <<" Start Time : " << ctime(&time_start); - std::srand(std::time(nullptr)); + std::srand(std::time(NULL)); // (2) if parallel, prepare. cout << " First read in the parameters from INPUT." << endl; diff --git a/tools/SIAB/SimulatedAnnealing/source/src_tools/complexarray.h b/tools/SIAB/SimulatedAnnealing/source/src_tools/complexarray.h index 525fb07fc0..6506fce530 100644 --- a/tools/SIAB/SimulatedAnnealing/source/src_tools/complexarray.h +++ b/tools/SIAB/SimulatedAnnealing/source/src_tools/complexarray.h @@ -35,25 +35,25 @@ class ComplexArray void zero_out(void); - const int getSize() const + int getSize() const { return size;} - const int getDim() const + int getDim() const { return dim;} - const int getBound1() const + int getBound1() const { return bound1;} - const int getBound2() const + int getBound2() const { return bound2;} - const int getBound3() const + int getBound3() const { return bound3;} - const int getBound4() const + int getBound4() const { return bound4;} - static const int getArrayCount(void) + int getArrayCount(void) { return arrayCount;} private: diff --git a/tools/SIAB/SimulatedAnnealing/source/src_tools/intarray.h b/tools/SIAB/SimulatedAnnealing/source/src_tools/intarray.h index 0fc7e90e16..3318578da1 100644 --- a/tools/SIAB/SimulatedAnnealing/source/src_tools/intarray.h +++ b/tools/SIAB/SimulatedAnnealing/source/src_tools/intarray.h @@ -49,16 +49,16 @@ class IntArray void zero_out(void); - const int getSize() const{ return size;} - const int getDim() const{ return dim;} - const int getBound1() const{ return bound1;} - const int getBound2() const{ return bound2;} - const int getBound3() const{ return bound3;} - const int getBound4() const { return bound4;} - const int getBound5() const { return bound5;} - const int getBound6() const { return bound6;} + int getSize() const{ return size;} + int getDim() const{ return dim;} + int getBound1() const{ return bound1;} + int getBound2() const{ return bound2;} + int getBound3() const{ return bound3;} + int getBound4() const { return bound4;} + int getBound5() const { return bound5;} + int getBound6() const { return bound6;} - static const int getArrayCount(void) + int getArrayCount(void) { return arrayCount;} private: diff --git a/tools/SIAB/SimulatedAnnealing/source/src_tools/inverse_matrix_iterate.h b/tools/SIAB/SimulatedAnnealing/source/src_tools/inverse_matrix_iterate.h index c224cd976c..19ef02ee38 100644 --- a/tools/SIAB/SimulatedAnnealing/source/src_tools/inverse_matrix_iterate.h +++ b/tools/SIAB/SimulatedAnnealing/source/src_tools/inverse_matrix_iterate.h @@ -24,11 +24,11 @@ class Inverse_Matrix_Iterate inline void iterate(const ComplexMatrix &old_X, ComplexMatrix &new_X); private: - ComplexMatrix *A_ptr{nullptr}; + ComplexMatrix *A_ptr = NULL; ComplexMatrix X_store_1; ComplexMatrix X_store_2; - const ComplexMatrix *X0_ptr{nullptr}; - const ComplexMatrix *inverse_ptr{nullptr}; + const ComplexMatrix *X0_ptr = NULL; + const ComplexMatrix *inverse_ptr = NULL; ComplexMatrix identity; ComplexMatrix matrix_tmp_1; ComplexMatrix matrix_tmp_2; @@ -52,4 +52,4 @@ class Inverse_Matrix_Iterate private: }; -#endif \ No newline at end of file +#endif diff --git a/tools/SIAB/SimulatedAnnealing/source/src_tools/realarray.h b/tools/SIAB/SimulatedAnnealing/source/src_tools/realarray.h index 4f4ec1c0ee..8c9e917f98 100644 --- a/tools/SIAB/SimulatedAnnealing/source/src_tools/realarray.h +++ b/tools/SIAB/SimulatedAnnealing/source/src_tools/realarray.h @@ -35,25 +35,25 @@ class realArray void zero_out(void); - const int getSize() const + int getSize() const { return size;} - const int getDim() const + int getDim() const { return dim;} - const int getBound1() const + int getBound1() const { return bound1;} - const int getBound2() const + int getBound2() const { return bound2;} - const int getBound3() const + int getBound3() const { return bound3;} - const int getBound4() const + int getBound4() const { return bound4;} - static const int getArrayCount(void) + int getArrayCount(void) { return arrayCount;} private: diff --git a/tools/SIAB/SimulatedAnnealing/source/tests_p/mpi.sh b/tools/SIAB/SimulatedAnnealing/source/tests_p/mpi.sh deleted file mode 100644 index 516726f973..0000000000 --- a/tools/SIAB/SimulatedAnnealing/source/tests_p/mpi.sh +++ /dev/null @@ -1,17 +0,0 @@ -#!/bin/bash -# -#PBS -l nodes=2:ppn=4 -#PBS -j oe -#PBS -V -#PBS -N MCSP - -# go to work dir -cd $PBS_O_WORKDIR - -# setup Nums of Processor -NP=`cat $PBS_NODEFILE|wc -l` -echo "Numbers of Processors: $NP" -echo "---------------------------" - -# running program -/share/data1/mpich-intel/bin/mpirun -np $NP -machinefile $PBS_NODEFILE ../040.MCSP_p.exe > Log.txt diff --git a/tools/opt_lcao_bash/print_file.py b/tools/opt_lcao_bash/print_file.py index eacaec2d7a..7e885d3a9a 100644 --- a/tools/opt_lcao_bash/print_file.py +++ b/tools/opt_lcao_bash/print_file.py @@ -8,7 +8,6 @@ def print_file_pw(info,dis): file.write(textwrap.dedent(f"""\ INPUT_PARAMETERS pseudo_dir {info["input"]["pseudo_dir"]} - wannier_card INPUTw calculation scf ntype 1 nspin 1 diff --git a/tools/rt-tddft-tools/dipole.py b/tools/rt-tddft-tools/dipole.py index 236e11e792..91fcbdb53f 100644 --- a/tools/rt-tddft-tools/dipole.py +++ b/tools/rt-tddft-tools/dipole.py @@ -154,9 +154,9 @@ def plot_abs(self, fig: Figure, ax: axes.Axes, directions: list = [0, 1, 2], x_r if __name__ == "__main__": - dipolefile = './SPIN1_DIPOLE' + dipolefile = './dipole_s1.txt' dipole = Dipole(dipolefile, dt=0.0024) - Efile=[[],[],["efield_0.dat"]] + Efile=[[],[],["efield_0.txt"]] Abs = Absorption(dipolefile, Efile, dt=0.0024) import matplotlib.pyplot as plt diff --git a/tools/rt-tddft-tools/examples/Absorpation-N2/Abs_plot.py b/tools/rt-tddft-tools/examples/Absorpation-N2/Abs_plot.py index 28128f26ed..d832badc0f 100644 --- a/tools/rt-tddft-tools/examples/Absorpation-N2/Abs_plot.py +++ b/tools/rt-tddft-tools/examples/Absorpation-N2/Abs_plot.py @@ -2,9 +2,9 @@ from abacus_plot.dipole import Absorption import matplotlib.pyplot as plt -dipolefile = './SPIN1_DIPOLE' +dipolefile = './dipole_s1.txt' dipole = Dipole(dipolefile, dt=0.0024) -Efile=[[],[],["efield_0.dat","efield_1.dat"]] +Efile=[[],[],["efield_0.txt","efield_1.txt"]] Abs = Absorption(dipolefile, Efile, dt=0.0024) fig1, ax1 = plt.subplots() diff --git a/tools/rt-tddft-tools/examples/Absorpation-N2/SPIN1_DIPOLE b/tools/rt-tddft-tools/examples/Absorpation-N2/dipole_s1.txt similarity index 100% rename from tools/rt-tddft-tools/examples/Absorpation-N2/SPIN1_DIPOLE rename to tools/rt-tddft-tools/examples/Absorpation-N2/dipole_s1.txt diff --git a/tools/rt-tddft-tools/examples/Absorpation-N2/efield_0.dat b/tools/rt-tddft-tools/examples/Absorpation-N2/efield_0.txt similarity index 100% rename from tools/rt-tddft-tools/examples/Absorpation-N2/efield_0.dat rename to tools/rt-tddft-tools/examples/Absorpation-N2/efield_0.txt diff --git a/tools/rt-tddft-tools/examples/Absorpation-N2/efield_1.dat b/tools/rt-tddft-tools/examples/Absorpation-N2/efield_1.txt similarity index 100% rename from tools/rt-tddft-tools/examples/Absorpation-N2/efield_1.dat rename to tools/rt-tddft-tools/examples/Absorpation-N2/efield_1.txt diff --git a/tools/selective_dynamics/README.md b/tools/selective_dynamics/README.md new file mode 100644 index 0000000000..eef94a6f85 --- /dev/null +++ b/tools/selective_dynamics/README.md @@ -0,0 +1,105 @@ +# Selective Dynamics for ABACUS+Phonopy + +## Requirements + +- [ase-abacus](https://gitlab.com/1041176461/ase-abacus) +- [Phonopy](https://github.com/phonopy/phonopy) + +## Usage + +### Setting + +There is a setting file named `config.yaml`: +```yaml +origin_structure: 'STRU' # the original structure +selected_indices: [18, 19] # the atom index that you concerned about, start from 0 +tasks_per_batch: 12 # how much jobs per batch +wait_time: 600 # s, sleep time between batches + +setting_conf: | + SYMMETRY = .FALSE. + DIM = 1 1 1 + DISPLACEMENT_DISTANCE = 0.03 + +mesh.conf: | + DIM = 1 1 1 + MESH = 31 31 31 + TMAX = 2000 + TSTEP = 2 + +input: | + INPUT_PARAMETERS + #Parameters (1.General) + suffix phonon + calculation scf + symmetry 1 + nspin 1 + pseudo_dir /fs2/home/chenkg/2_liuyu/3_abacus/PP_ORB/pseudo + orbital_dir /fs2/home/chenkg/2_liuyu/3_abacus/PP_ORB/efficiency + kpoint_file ../KPT + + #Parameters (2.Iteration) + ecutwfc 100 + scf_thr 1e-8 + scf_nmax 100 + + #Parameters (3.Basis) + basis_type lcao + ks_solver genelpa + gamma_only 0 + + #Parameters (4.Smearing) + smearing_method gaussian + smearing_sigma 0.001 + + #Parameters (5.Mixing) + mixing_type broyden + mixing_beta 0.7 + + cal_force 1 + cal_stress 1 + +kpt: | + K_POINTS + 0 + Gamma + 5 5 1 0 0 0 + +job_script: | + #!/bin/bash + #SBATCH -p cp6 + #SBATCH -N 1 + #SBATCH -J abacus + #SBATCH -n 28 + + source /fs2/home/chenkg/2_liuyu/3_abacus/abacus_env.sh + export OMP_NUM_THREADS=28 + + mpirun -n 1 abacus +``` + +- origin_structure: The `STRU` filename, which contains both the fixed atoms and the free atoms. +- selected_indices: The indexs of the free atoms. Note that the index starts from 0. +- tasks_per_batch: How much jobs submitted per batch. +- wait_time: Sleep time between batches, the unit is second. +- setting_conf: The `setting.conf` file for Phonopy. +- mesh.conf: The `mesh.conf` file for Phonopy. +- input: The `INPUT` file for ABACUS. +- kpt: The `KPT` file for ABACUS. +- job_script: The script used to submit jobs. + +### Submit jobs + +Use the following command +```bash +python3 path_to_selective_dynamics.py --submit +``` +to generate displaced structures and submit jobs. + +### Postprocess + +Use the following command +```bash +python3 path_to_selective_dynamics.py --post +``` +to generate `FORCE_SETS` and results of phonon calculations. diff --git a/tools/selective_dynamics/selective_dynamics.py b/tools/selective_dynamics/selective_dynamics.py new file mode 100755 index 0000000000..4e5c0e91fc --- /dev/null +++ b/tools/selective_dynamics/selective_dynamics.py @@ -0,0 +1,254 @@ +#!/usr/bin/env python3 +import os +import re +import sys +import glob +import time +import yaml +import shutil +import subprocess +from ase import Atoms +from ase.io import read, write + + +def split_stru_with_index(input_file, selected_indices, output1, output2): + + atoms = read(input_file, verbose=True) + pp = atoms.info["pp"] + basis = atoms.info["basis"] + + for i, atom in enumerate(atoms): + atom.tag = i + + atoms1 = atoms[selected_indices] + + + remaining_indices = [i for i in range(len(atoms)) if i not in selected_indices] + atoms2 = atoms[remaining_indices] + + + write(output1, atoms1, format='abacus', pp=pp, basis=basis) + write(output2, atoms2, format='abacus', pp=pp, basis=basis) + + print(f" Success! \n A.stru: {len(atoms1)} atoms\n B.stru: {len(atoms2)} atoms\n") + return selected_indices, remaining_indices, pp, basis + + +def merge_stru_by_index(file1, file2, indices1, indices2, pp, basis, output_file): + + atoms1 = read(file1) + atoms2 = read(file2) + + + total_atoms = len(atoms1) + len(atoms2) + merged_atoms = [None] * total_atoms + + for i, idx in enumerate(indices1): + merged_atoms[idx] = atoms1[i] + + for i, idx in enumerate(indices2): + merged_atoms[idx] = atoms2[i] + + + cell = atoms2.get_cell() + pbc = atoms2.get_pbc() + + positions = [atom.position for atom in merged_atoms] + symbols = [atom.symbol for atom in merged_atoms] + + merged = Atoms(symbols=symbols, positions=positions, cell=cell, pbc=pbc) + + write(output_file, merged, format='abacus', pp=pp, basis=basis) + print(f"success! total {len(merged)} atoms") + + +def parse_forces_from_file(indices, file_path="running_scf.log"): + + with open(file_path, 'r', encoding='utf-8') as f: + contents = f.read() + + lines = contents.split('\n') + + start_index = -1 + for i, line in enumerate(lines): + if "#TOTAL-FORCE (eV/Angstrom)#" in line: + start_index = i+4 + break + + results = [] + for i in indices: + results.append(lines[start_index+i]) + + result_text = '\n'.join(results) + return result_text + + +def load_config(config_file="config.yaml"): + + with open(config_file, 'r', encoding='utf-8') as f: + return yaml.safe_load(f) + +def submit_jobs(): + + # loading settings + config = load_config() + + # split structure into A and B + origin_structure = config['origin_structure'] + selected_indices = config['selected_indices'] + indices1, indices2, pp, basis = split_stru_with_index(origin_structure, selected_indices, + 'A.stru', 'B.stru') + + + # setting.conf for phonopy + setting_conf_content = config['setting.conf'] + with open("setting.conf", "w", encoding="utf-8") as f: + f.write(setting_conf_content) + + + # generate perturbed structures + result = subprocess.run("phonopy setting.conf --abacus -d -c A.stru", + shell=True, capture_output=True, text=True) + print(result.stdout) + + + all_files = sorted(glob.glob("STRU-*")) + TOTAL_TASKS = len(all_files) + TASKS_PER_BATCH = config['tasks_per_batch'] + WAIT_TIME = config['wait_time'] + TOTAL_BATCHES = (TOTAL_TASKS + TASKS_PER_BATCH - 1) // TASKS_PER_BATCH + print(f' TOTAL_TASKS = {TOTAL_TASKS}\n TASKS_PER_BATCH = {TASKS_PER_BATCH}\n TOTAL_BATCHES = {TOTAL_BATCHES}\n') + + + # job script + job_script_content = config['job_script'] + with open("job.sh", "w", encoding="utf-8") as f: + f.write(job_script_content) + os.chmod("job.sh", 0o755) + + # KPT + kpt_content = config['kpt'] + with open("KPT", "w", encoding="utf-8") as f: + f.write(kpt_content) + + input_content = config['input'] + + num_digits = len(str(TOTAL_TASKS)) + for batch in range(1, TOTAL_BATCHES + 1): + print("-" * 30) + print(f"Current batch: {batch}/{TOTAL_BATCHES}") + print("-" * 30) + + for task in range(1, TASKS_PER_BATCH + 1): + index = task - 1 + (batch - 1) * TASKS_PER_BATCH + + if index >= TOTAL_TASKS: + break + + + new_index = f"{index+1:0{num_digits+1}d}" + + dir_name = f"job_{new_index}" + os.makedirs(dir_name, exist_ok=True) + os.chdir(dir_name) + + + # STRU + perturbed_stru = f"../{all_files[index]}" + merge_stru_by_index(perturbed_stru, '../B.stru', indices1, indices2, + pp, basis, 'STRU') + + # INPUT + with open("INPUT", "w") as f: + f.write(input_content) + + + # submit job + try: + result = subprocess.run(["sbatch", "../job.sh"], + check=True, capture_output=True, text=True) + print(f"submit job: {new_index}") + except subprocess.CalledProcessError as e: + print(f"Failed - {e}") + + os.chdir("..") + + # sleep if not the last batch + if batch < TOTAL_BATCHES: + print(f"wait {WAIT_TIME} seconds...") + time.sleep(WAIT_TIME) + + print("-" * 30) + + print("All job submitted!") + print("-" * 30) + +def postprocess(): + + # loading settings + config = load_config() + + selected_indices = config['selected_indices'] + natom = len(selected_indices) + + all_files = sorted(glob.glob("STRU-*")) + TOTAL_TASKS = len(all_files) + num_digits = len(str(TOTAL_TASKS)) + + for task in range(1, TOTAL_TASKS + 1): + + new_index = f"{task:0{num_digits+1}d}" + dir_name = f"job_{new_index}" + os.chdir(dir_name) + + out_folders = glob.glob("OUT.*") + out_folder = out_folders[0] + os.chdir(out_folder) + + atom_forces = parse_forces_from_file(selected_indices) + + # phonon.log + log = f"""TOTAL ATOM NUMBER = {natom} + + #TOTAL-FORCE (eV/Angstrom)# + ------------------------------------------------------------------------- + Atoms Force_x Force_y Force_z + -------------------------------------------------------------------------\n""" + + with open("phonon.log", "w") as f: + f.write(log) + f.write(str(atom_forces)) + f.write("\n -------------------------------------------------------------------------") + + + os.chdir("../..") + + result = subprocess.run("phonopy -f job_*/OUT*/phonon.log", + shell=True, check=True, capture_output=True, text=True) + + + mesh_content = config['mesh.conf'] + with open("mesh.conf", "w") as f: + f.write(mesh_content) + + result = subprocess.run("phonopy -t mesh.conf", + shell=True, check=True, capture_output=True, text=True) + + + + +def main(): + if len(sys.argv) != 2: + print("usage: python3 selective_dynamics.py --submit") + print("usage: python3 selective_dynamics.py --post") + sys.exit(1) + + if sys.argv[1] == "--submit": + submit_jobs() + elif sys.argv[1] == "--post": + postprocess() + else: + print(f"No such parameter: {sys.argv[1]}") + +if __name__ == "__main__": + main() \ No newline at end of file